From 14af4c0aaee2fa0934d07aca02e6d2748575f98d Mon Sep 17 00:00:00 2001 From: Christoph Kleineweber Date: Mon, 11 Nov 2013 15:00:46 +0100 Subject: [PATCH] Updated to protobuf 2.5 --- .gitignore | 3 + Makefile | 2 +- bin/protoc-gen-pbrpc | 2 +- bin/protoc-gen-pbrpccpp | 2 +- bin/xtfs_chstatus | 2 +- bin/xtfs_cleanup | 2 +- bin/xtfs_mrcdbtool | 2 +- bin/xtfs_remove_osd | 2 +- bin/xtfs_scrub | 2 +- contrib/hadoop/build.xml | 2 +- contrib/hadoop/nbproject/project.properties | 4 +- contrib/xtreemfs-osd-farm/xtreemfs-osd-farm | 2 +- cpp/CMakeLists.txt | 2 +- cpp/generated/include/Common.pb.cc | 21 +- cpp/generated/include/Common.pb.h | 101 +- cpp/generated/include/PBRPC.pb.cc | 7 +- cpp/generated/include/PBRPC.pb.h | 5 +- cpp/generated/pbrpc/Ping.pb.cc | 277 +- cpp/generated/pbrpc/Ping.pb.h | 620 +- cpp/generated/pbrpc/PingServiceClient.h | 2 +- cpp/generated/pbrpc/PingServiceConstants.h | 2 +- cpp/generated/pbrpc/RPC.pb.cc | 402 +- cpp/generated/pbrpc/RPC.pb.h | 991 +- cpp/generated/xtreemfs/DIR.pb.cc | 1254 +- cpp/generated/xtreemfs/DIR.pb.h | 2343 +- cpp/generated/xtreemfs/DIRServiceClient.h | 2 +- cpp/generated/xtreemfs/DIRServiceConstants.h | 2 +- cpp/generated/xtreemfs/GlobalTypes.pb.cc | 637 +- cpp/generated/xtreemfs/GlobalTypes.pb.h | 1421 +- cpp/generated/xtreemfs/MRC.pb.cc | 4993 +- cpp/generated/xtreemfs/MRC.pb.h | 9266 +-- cpp/generated/xtreemfs/MRCServiceClient.h | 2 +- cpp/generated/xtreemfs/MRCServiceConstants.h | 2 +- cpp/generated/xtreemfs/OSD.pb.cc | 3753 +- cpp/generated/xtreemfs/OSD.pb.h | 5512 +- cpp/generated/xtreemfs/OSDServiceClient.h | 25 +- cpp/generated/xtreemfs/OSDServiceConstants.h | 3 +- cpp/generated/xtreemfs/get_request_message.cc | 6 +- cpp/generated/xtreemfs/get_request_message.h | 2 +- cpp/src/libxtreemfs/volume_implementation.cpp | 15 +- cpp/thirdparty/gtest-1.5.0/configure | 8147 ++- cpp/thirdparty/protobuf-2.3.0/.gitignore | 10 - .../protobuf-2.3.0/gtest/.gitignore | 4 - .../protobuf-2.3.0/gtest/Makefile.am | 441 - .../protobuf-2.3.0/gtest/Makefile.in | 2269 - cpp/thirdparty/protobuf-2.3.0/gtest/README | 318 - .../protobuf-2.3.0/gtest/build-aux/.gitignore | 2 - .../gtest/include/gtest/internal/gtest-port.h | 1084 - .../include/gtest/internal/gtest-string.h | 348 - .../protobuf-2.3.0/gtest/msvc/gtest-md.vcproj | 237 - .../protobuf-2.3.0/gtest/msvc/gtest.vcproj | 237 - .../protobuf-2.3.0/gtest/samples/.gitignore | 1 - .../protobuf-2.3.0/gtest/scons/SConscript | 325 - .../gtest/scons/SConstruct.common | 356 - .../protobuf-2.3.0/gtest/scripts/.gitignore | 1 - .../protobuf-2.3.0/gtest/src/.gitignore | 1 - .../protobuf-2.3.0/gtest/test/.gitignore | 1 - .../gtest/test/gtest-options_test.cc | 267 - .../protobuf-2.3.0/gtest/test/gtest_nc.cc | 234 - .../gtest/test/gtest_nc_test.py | 106 - .../test/gtest_output_test_golden_win.txt | 605 - .../gtest/test/gtest_stress_test.cc | 151 - .../gtest/xcode/Scripts/runtests.sh | 36 - .../java/com/google/protobuf/ByteString.java | 391 - .../google/protobuf/GeneratedMessageLite.java | 566 - cpp/thirdparty/protobuf-2.3.0/m4/stl_hash.m4 | 60 - .../protobuf/internal/descriptor_test.py | 334 - .../google/protobuf/internal/message_test.py | 89 - cpp/thirdparty/protobuf-2.3.0/src/.gitignore | 8 - .../src/google/protobuf/.gitignore | 22 - .../google/protobuf/compiler/cpp/.gitignore | 2 - .../protobuf/compiler/java/java_enum_field.cc | 373 - .../compiler/java/java_message_field.cc | 335 - .../compiler/java/java_primitive_field.cc | 465 - .../src/google/protobuf/compiler/parser.cc | 1130 - .../google/protobuf/testdata/golden_message | Bin 487 -> 0 bytes .../CHANGES.txt | 142 +- .../CONTRIBUTORS.txt | 6 + .../COPYING.txt | 0 .../INSTALL.txt | 0 .../Makefile.am | 63 +- .../Makefile.in | 379 +- .../README.txt | 2 +- .../aclocal.m4 | 377 +- .../autogen.sh | 6 +- .../config.guess | 504 +- .../config.h.in | 44 +- .../build-aux => protobuf-2.5.0}/config.sub | 297 +- .../configure | 14425 +++-- .../configure.ac | 9 +- .../build-aux => protobuf-2.5.0}/depcomp | 153 +- .../editors/README.txt | 0 .../editors/proto.vim | 7 +- .../editors/protobuf-mode.el | 0 .../examples/AddPerson.java | 14 +- .../examples/ListPeople.java | 0 .../examples/Makefile | 0 .../examples/README.txt | 0 .../examples/add_person.cc | 0 .../examples/add_person.py | 0 .../examples/addressbook.proto | 0 .../examples/list_people.cc | 0 .../examples/list_people.py | 0 .../generate_descriptor_proto.sh | 0 .../gtest/CHANGES | 54 + .../protobuf-2.5.0/gtest/CMakeLists.txt | 250 + .../gtest/CONTRIBUTORS | 4 + .../COPYING => protobuf-2.5.0/gtest/LICENSE} | 0 .../protobuf-2.5.0/gtest/Makefile.am | 305 + .../protobuf-2.5.0/gtest/Makefile.in | 1360 + cpp/thirdparty/protobuf-2.5.0/gtest/README | 434 + .../protobuf-2.5.0/gtest/aclocal.m4 | 1198 + .../gtest/build-aux/config.guess | 504 +- .../gtest/build-aux/config.h.in | 3 + .../gtest/build-aux}/config.sub | 297 +- .../gtest/build-aux}/depcomp | 153 +- .../gtest/build-aux}/install-sh | 32 +- .../gtest/build-aux/ltmain.sh | 3967 +- .../gtest/build-aux}/missing | 94 +- .../gtest/cmake/internal_utils.cmake | 227 + .../gtest/codegear/gtest.cbproj | 0 .../gtest/codegear/gtest.groupproj | 24 +- .../gtest/codegear/gtest_all.cc | 0 .../gtest/codegear/gtest_link.cc | 0 .../gtest/codegear/gtest_main.cbproj | 0 .../gtest/codegear/gtest_unittest.cbproj | 16 +- .../gtest/configure | 12702 ++-- .../gtest/configure.ac | 25 +- .../gtest/fused-src/gtest/gtest-all.cc | 9251 +++ .../gtest/fused-src/gtest/gtest.h | 20012 ++++++ .../gtest/fused-src/gtest}/gtest_main.cc | 9 +- .../gtest/include/gtest/gtest-death-test.h | 65 +- .../gtest/include/gtest/gtest-message.h | 42 +- .../gtest/include/gtest/gtest-param-test.h | 83 +- .../include/gtest/gtest-param-test.h.pump | 84 +- .../gtest/include/gtest/gtest-printers.h | 855 + .../gtest/include/gtest/gtest-spi.h | 12 +- .../gtest/include/gtest/gtest-test-part.h | 55 +- .../gtest/include/gtest/gtest-typed-test.h | 40 +- .../gtest/include/gtest/gtest.h | 838 +- .../gtest/include/gtest/gtest_pred_impl.h | 94 +- .../gtest/include/gtest/gtest_prod.h | 0 .../internal/gtest-death-test-internal.h | 79 +- .../include/gtest/internal/gtest-filepath.h | 27 +- .../include/gtest/internal/gtest-internal.h | 617 +- .../include/gtest/internal/gtest-linked_ptr.h | 21 +- .../internal/gtest-param-util-generated.h | 624 +- .../gtest-param-util-generated.h.pump | 29 +- .../include/gtest/internal/gtest-param-util.h | 91 +- .../gtest/include/gtest/internal/gtest-port.h | 1947 + .../include/gtest/internal/gtest-string.h | 180 + .../include/gtest/internal/gtest-tuple.h | 120 +- .../include/gtest/internal/gtest-tuple.h.pump | 30 +- .../include/gtest/internal/gtest-type-util.h | 83 +- .../gtest/internal/gtest-type-util.h.pump | 79 +- .../gtest/m4/acx_pthread.m4 | 0 .../gtest/m4/gtest.m4 | 0 .../gtest}/m4/libtool.m4 | 2386 +- .../gtest}/m4/ltoptions.m4 | 32 +- .../gtest}/m4/ltsugar.m4 | 20 +- .../gtest}/m4/ltversion.m4 | 12 +- .../gtest}/m4/lt~obsolete.m4 | 12 +- .../gtest/make/Makefile | 10 +- .../gtest/msvc/gtest-md.sln | 0 .../protobuf-2.5.0/gtest/msvc/gtest-md.vcproj | 126 + .../gtest/msvc/gtest.sln | 0 .../protobuf-2.5.0/gtest/msvc/gtest.vcproj | 126 + .../gtest/msvc/gtest_main-md.vcproj | 40 +- .../gtest/msvc/gtest_main.vcproj | 40 +- .../gtest/msvc/gtest_prod_test-md.vcproj | 4 +- .../gtest/msvc/gtest_prod_test.vcproj | 4 +- .../gtest/msvc/gtest_unittest-md.vcproj | 4 +- .../gtest/msvc/gtest_unittest.vcproj | 4 +- .../gtest/samples/prime_tables.h | 3 + .../gtest/samples/sample1.cc | 0 .../gtest/samples/sample1.h | 0 .../gtest/samples/sample10_unittest.cc | 11 +- .../gtest/samples/sample1_unittest.cc | 4 +- .../gtest/samples/sample2.cc | 14 +- .../gtest/samples/sample2.h | 13 +- .../gtest/samples/sample2_unittest.cc | 12 +- .../gtest/samples/sample3-inl.h | 55 +- .../gtest/samples/sample3_unittest.cc | 8 +- .../gtest/samples/sample4.cc | 0 .../gtest/samples/sample4.h | 0 .../gtest/samples/sample4_unittest.cc | 2 +- .../gtest/samples/sample5_unittest.cc | 26 +- .../gtest/samples/sample6_unittest.cc | 2 +- .../gtest/samples/sample7_unittest.cc | 34 +- .../gtest/samples/sample8_unittest.cc | 14 +- .../gtest/samples/sample9_unittest.cc | 6 +- .../gtest/scripts/fuse_gtest_files.py | 18 +- .../gtest/scripts/gen_gtest_pred_impl.py | 21 +- .../gtest/scripts/gtest-config.in | 8 +- .../protobuf-2.5.0/gtest/scripts/pump.py | 855 + .../gtest/scripts/test/Makefile | 4 +- .../gtest/src/gtest-all.cc | 7 + .../gtest/src/gtest-death-test.cc | 433 +- .../gtest/src/gtest-filepath.cc | 121 +- .../gtest/src/gtest-internal-inl.h | 653 +- .../gtest/src/gtest-port.cc | 329 +- .../gtest/src/gtest-printers.cc | 364 + .../gtest/src/gtest-test-part.cc | 24 +- .../gtest/src/gtest-typed-test.cc | 22 +- .../gtest/src/gtest.cc | 1870 +- .../protobuf-2.5.0/gtest/src/gtest_main.cc | 38 + .../gtest/test/gtest-death-test_ex_test.cc | 93 + .../gtest/test/gtest-death-test_test.cc | 422 +- .../gtest/test/gtest-filepath_test.cc | 338 +- .../gtest/test/gtest-linked_ptr_test.cc | 10 +- .../gtest/test/gtest-listener_test.cc | 76 +- .../gtest/test/gtest-message_test.cc | 72 +- .../gtest/test/gtest-options_test.cc | 215 + .../gtest/test/gtest-param-test2_test.cc | 2 +- .../gtest/test/gtest-param-test_test.cc | 237 +- .../gtest/test/gtest-param-test_test.h | 8 +- .../gtest/test/gtest-port_test.cc | 698 +- .../gtest/test/gtest-printers_test.cc | 1561 + .../gtest/test/gtest-test-part_test.cc | 53 +- .../gtest/test/gtest-tuple_test.cc | 46 +- .../gtest/test/gtest-typed-test2_test.cc | 2 +- .../gtest/test/gtest-typed-test_test.cc | 14 +- .../gtest/test/gtest-typed-test_test.h | 2 +- .../gtest/test/gtest-unittest-api_test.cc | 70 +- .../gtest/test/gtest_all_test.cc | 0 .../test/gtest_break_on_failure_unittest.py | 11 +- .../test/gtest_break_on_failure_unittest_.cc | 26 +- .../gtest/test/gtest_catch_exceptions_test.py | 223 + .../test/gtest_catch_exceptions_test_.cc | 311 + .../gtest/test/gtest_color_test.py | 0 .../gtest/test/gtest_color_test_.cc | 15 +- .../gtest/test/gtest_env_var_test.py | 14 +- .../gtest/test/gtest_env_var_test_.cc | 2 +- .../gtest/test/gtest_environment_test.cc | 10 +- .../gtest/test/gtest_filter_unittest.py | 189 +- .../gtest/test/gtest_filter_unittest_.cc | 2 +- .../gtest/test/gtest_help_test.py | 70 +- .../gtest/test/gtest_help_test_.cc | 6 +- .../gtest/test/gtest_list_tests_unittest.py | 0 .../gtest/test/gtest_list_tests_unittest_.cc | 2 +- .../gtest/test/gtest_main_unittest.cc | 2 +- .../gtest/test/gtest_no_test_unittest.cc | 14 +- .../gtest/test/gtest_output_test.py | 116 +- .../gtest/test/gtest_output_test_.cc | 319 +- .../test/gtest_output_test_golden_lin.txt | 111 +- .../gtest/test/gtest_pred_impl_unittest.cc | 31 +- .../gtest/test/gtest_prod_test.cc | 2 +- .../gtest/test/gtest_repeat_test.cc | 10 +- .../gtest/test/gtest_shuffle_test.py | 14 +- .../gtest/test/gtest_shuffle_test_.cc | 3 +- .../gtest/test/gtest_sole_header_test.cc | 2 +- .../gtest/test/gtest_stress_test.cc | 256 + .../gtest/test/gtest_test_utils.py | 81 +- .../test/gtest_throw_on_failure_ex_test.cc | 2 +- .../gtest/test/gtest_throw_on_failure_test.py | 0 .../test/gtest_throw_on_failure_test_.cc | 20 +- .../gtest/test/gtest_uninitialized_test.py | 0 .../gtest/test/gtest_uninitialized_test_.cc | 2 +- .../gtest/test/gtest_unittest.cc | 2465 +- .../gtest/test/gtest_xml_outfile1_test_.cc | 2 +- .../gtest/test/gtest_xml_outfile2_test_.cc | 2 +- .../gtest/test/gtest_xml_outfiles_test.py | 4 +- .../gtest/test/gtest_xml_output_unittest.py | 144 +- .../gtest/test/gtest_xml_output_unittest_.cc | 42 +- .../gtest/test/gtest_xml_test_utils.py | 72 +- .../gtest/test/production.cc | 0 .../gtest/test/production.h | 4 +- .../gtest/xcode/Config/DebugProject.xcconfig | 0 .../xcode/Config/FrameworkTarget.xcconfig | 0 .../gtest/xcode/Config/General.xcconfig | 2 +- .../xcode/Config/ReleaseProject.xcconfig | 0 .../xcode/Config/StaticLibraryTarget.xcconfig | 0 .../gtest/xcode/Config/TestTarget.xcconfig | 0 .../gtest/xcode/Resources/Info.plist | 0 .../xcode/Samples/FrameworkSample/Info.plist | 0 .../WidgetFramework.xcodeproj/project.pbxproj | 153 +- .../xcode/Samples/FrameworkSample/runtests.sh | 62 + .../xcode/Samples/FrameworkSample/widget.cc | 6 +- .../xcode/Samples/FrameworkSample/widget.h | 8 +- .../Samples/FrameworkSample/widget_test.cc | 6 +- .../gtest/xcode/Scripts/runtests.sh | 65 + .../gtest/xcode/Scripts/versiongenerate.py | 35 +- .../xcode/gtest.xcodeproj/project.pbxproj | 12 +- .../build-aux => protobuf-2.5.0}/install-sh | 32 +- .../java/README.txt | 0 .../java/pom.xml | 36 +- .../com/google/protobuf/AbstractMessage.java | 397 +- .../google/protobuf/AbstractMessageLite.java | 29 +- .../com/google/protobuf/AbstractParser.java | 261 + .../google/protobuf/BlockingRpcChannel.java | 0 .../com/google/protobuf/BlockingService.java | 0 .../google/protobuf/BoundedByteString.java | 163 + .../java/com/google/protobuf/ByteString.java | 970 + .../com/google/protobuf/CodedInputStream.java | 89 +- .../google/protobuf/CodedOutputStream.java | 94 +- .../java/com/google/protobuf/Descriptors.java | 165 +- .../com/google/protobuf/DynamicMessage.java | 68 +- .../google/protobuf/ExtensionRegistry.java | 0 .../protobuf/ExtensionRegistryLite.java | 18 +- .../java/com/google/protobuf/FieldSet.java | 359 +- .../com/google/protobuf/GeneratedMessage.java | 960 +- .../google/protobuf/GeneratedMessageLite.java | 797 + .../java/com/google/protobuf/Internal.java | 32 + .../InvalidProtocolBufferException.java | 21 + .../java/com/google/protobuf/LazyField.java | 210 + .../google/protobuf/LazyStringArrayList.java | 178 + .../com/google/protobuf/LazyStringList.java | 81 + .../google/protobuf/LiteralByteString.java | 349 + .../java/com/google/protobuf/Message.java | 126 +- .../java/com/google/protobuf/MessageLite.java | 86 +- .../google/protobuf/MessageLiteOrBuilder.java | 60 + .../com/google/protobuf/MessageOrBuilder.java | 129 + .../main/java/com/google/protobuf/Parser.java | 259 + .../google/protobuf/ProtocolMessageEnum.java | 0 .../google/protobuf/RepeatedFieldBuilder.java | 696 + .../com/google/protobuf/RopeByteString.java | 943 + .../java/com/google/protobuf/RpcCallback.java | 0 .../java/com/google/protobuf/RpcChannel.java | 0 .../com/google/protobuf/RpcController.java | 0 .../java/com/google/protobuf/RpcUtil.java | 0 .../java/com/google/protobuf/Service.java | 0 .../com/google/protobuf/ServiceException.java | 10 +- .../google/protobuf/SingleFieldBuilder.java | 241 + .../com/google/protobuf/SmallSortedMap.java | 618 + .../java/com/google/protobuf/TextFormat.java | 588 +- .../UninitializedMessageException.java | 0 .../com/google/protobuf/UnknownFieldSet.java | 29 +- .../protobuf/UnmodifiableLazyStringList.java | 152 + .../main/java/com/google/protobuf/Utf8.java | 349 + .../java/com/google/protobuf/WireFormat.java | 14 +- .../google/protobuf/AbstractMessageTest.java | 64 +- .../protobuf/BoundedByteStringTest.java | 68 + .../com/google/protobuf/ByteStringTest.java | 692 + .../google/protobuf/CodedInputStreamTest.java | 21 + .../protobuf/CodedOutputStreamTest.java | 15 +- .../google/protobuf/DeprecatedFieldTest.java | 80 + .../com/google/protobuf/DescriptorsTest.java | 193 +- .../google/protobuf/DynamicMessageTest.java | 72 +- .../protobuf/ForceFieldBuildersPreRun.java | 48 + .../google/protobuf/GeneratedMessageTest.java | 549 +- .../com/google/protobuf/IsValidUtf8Test.java | 180 + .../google/protobuf/IsValidUtf8TestUtil.java | 421 + .../protobuf/LazyStringArrayListTest.java | 162 + .../protobuf/LazyStringEndToEndTest.java | 143 + .../java/com/google/protobuf/LiteTest.java | 32 + .../protobuf/LiteralByteStringTest.java | 396 + .../java/com/google/protobuf/MessageTest.java | 40 + .../google/protobuf/NestedBuildersTest.java | 185 + .../java/com/google/protobuf/ParserTest.java | 375 + .../protobuf/RepeatedFieldBuilderTest.java | 190 + .../protobuf/RopeByteStringSubstringTest.java | 97 + .../google/protobuf/RopeByteStringTest.java | 115 + .../java/com/google/protobuf/ServiceTest.java | 14 +- .../protobuf/SingleFieldBuilderTest.java | 155 + .../google/protobuf/SmallSortedMapTest.java | 420 + .../google/protobuf/TestBadIdentifiers.java | 63 + .../java/com/google/protobuf/TestUtil.java | 283 +- .../com/google/protobuf/TextFormatTest.java | 200 +- .../google/protobuf/UnknownFieldSetTest.java | 0 .../UnmodifiableLazyStringListTest.java | 152 + .../com/google/protobuf/WireFormatTest.java | 157 +- .../google/protobuf/multiple_files_test.proto | 4 + .../protobuf/nested_builders_test.proto | 53 + .../google/protobuf/nested_extension.proto | 45 + .../protobuf/nested_extension_lite.proto | 48 + .../protobuf/non_nested_extension.proto | 48 + .../protobuf/non_nested_extension_lite.proto | 50 + .../protobuf/test_bad_identifiers.proto | 108 + .../ltmain.sh | 3967 +- .../m4/ac_system_extensions.m4 | 0 .../m4/acx_check_suncc.m4 | 0 .../m4/acx_pthread.m4 | 34 + .../m4/libtool.m4} | 4050 +- cpp/thirdparty/protobuf-2.5.0/m4/ltoptions.m4 | 384 + cpp/thirdparty/protobuf-2.5.0/m4/ltsugar.m4 | 123 + cpp/thirdparty/protobuf-2.5.0/m4/ltversion.m4 | 23 + .../protobuf-2.5.0/m4/lt~obsolete.m4 | 98 + cpp/thirdparty/protobuf-2.5.0/m4/stl_hash.m4 | 72 + .../build-aux => protobuf-2.5.0}/missing | 94 +- .../protobuf-lite.pc.in | 0 .../protobuf.pc.in | 3 +- .../python/README.txt | 30 +- .../python/ez_setup.py | 26 +- .../python/google/__init__.py | 0 .../python/google/protobuf/__init__.py | 0 .../python/google/protobuf/descriptor.py | 145 +- .../google/protobuf/descriptor_database.py | 120 + .../python/google/protobuf/descriptor_pool.py | 527 + .../google/protobuf/internal/__init__.py | 0 .../protobuf/internal/api_implementation.py | 87 + .../google/protobuf/internal/containers.py | 37 +- .../google/protobuf/internal/cpp_message.py | 663 + .../google/protobuf/internal/decoder.py | 83 +- .../internal/descriptor_database_test.py | 63 + .../protobuf/internal/descriptor_pool_test.py | 220 + .../protobuf/internal/descriptor_test.py | 613 + .../google/protobuf/internal/encoder.py | 87 +- .../protobuf/internal/enum_type_wrapper.py | 89 + .../protobuf/internal/factory_test1.proto | 55 + .../protobuf/internal/factory_test2.proto | 77 + .../protobuf/internal/generator_test.py | 57 +- .../protobuf/internal/message_cpp_test.py} | 42 +- .../protobuf/internal/message_factory_test.py | 113 + .../protobuf/internal/message_listener.py | 0 .../google/protobuf/internal/message_test.py | 494 + .../protobuf/internal/more_extensions.proto | 0 .../internal/more_extensions_dynamic.proto | 49 + .../protobuf/internal/more_messages.proto | 0 .../protobuf/internal/python_message.py} | 212 +- .../internal/reflection_cpp_generated_test.py | 91 + .../protobuf/internal/reflection_test.py | 521 +- .../internal/service_reflection_test.py | 0 .../internal/test_bad_identifiers.proto | 52 + .../google/protobuf/internal/test_util.py | 20 +- .../protobuf/internal/text_format_test.py | 241 +- .../google/protobuf/internal/type_checkers.py | 0 .../protobuf/internal/unknown_fields_test.py | 170 + .../google/protobuf/internal/wire_format.py | 0 .../protobuf/internal/wire_format_test.py | 0 .../python/google/protobuf/message.py | 26 + .../python/google/protobuf/message_factory.py | 113 + .../google/protobuf/pyext/python-proto2.cc | 1717 + .../protobuf/pyext/python_descriptor.cc | 337 + .../google/protobuf/pyext/python_descriptor.h | 87 + .../google/protobuf/pyext/python_protobuf.cc | 63 + .../google/protobuf/pyext/python_protobuf.h | 57 + .../python/google/protobuf/reflection.py | 169 + .../python/google/protobuf/service.py | 0 .../google/protobuf/service_reflection.py | 0 .../python/google/protobuf/text_format.py | 344 +- .../python/mox.py | 0 .../python/setup.py | 121 +- .../python/stubout.py | 0 .../src/Makefile.am | 115 +- .../src/Makefile.in | 1358 +- .../protobuf/compiler/code_generator.cc | 11 +- .../google/protobuf/compiler/code_generator.h | 24 +- .../compiler/command_line_interface.cc | 324 +- .../compiler/command_line_interface.h | 53 +- .../command_line_interface_unittest.cc | 195 +- .../compiler/cpp/cpp_bootstrap_unittest.cc | 34 +- .../google/protobuf/compiler/cpp/cpp_enum.cc | 8 +- .../google/protobuf/compiler/cpp/cpp_enum.h | 6 +- .../protobuf/compiler/cpp/cpp_enum_field.cc | 25 +- .../protobuf/compiler/cpp/cpp_enum_field.h | 6 +- .../protobuf/compiler/cpp/cpp_extension.cc | 8 +- .../protobuf/compiler/cpp/cpp_extension.h | 7 +- .../google/protobuf/compiler/cpp/cpp_field.cc | 31 +- .../google/protobuf/compiler/cpp/cpp_field.h | 16 +- .../google/protobuf/compiler/cpp/cpp_file.cc | 102 +- .../google/protobuf/compiler/cpp/cpp_file.h | 5 +- .../protobuf/compiler/cpp/cpp_generator.cc | 14 +- .../protobuf/compiler/cpp/cpp_generator.h | 2 +- .../protobuf/compiler/cpp/cpp_helpers.cc | 101 +- .../protobuf/compiler/cpp/cpp_helpers.h | 40 +- .../protobuf/compiler/cpp/cpp_message.cc | 414 +- .../protobuf/compiler/cpp/cpp_message.h | 5 +- .../compiler/cpp/cpp_message_field.cc | 50 +- .../protobuf/compiler/cpp/cpp_message_field.h | 6 +- .../protobuf/compiler/cpp/cpp_options.h} | 43 +- .../compiler/cpp/cpp_plugin_unittest.cc | 22 +- .../compiler/cpp/cpp_primitive_field.cc | 21 +- .../compiler/cpp/cpp_primitive_field.h | 6 +- .../protobuf/compiler/cpp/cpp_service.cc | 6 +- .../protobuf/compiler/cpp/cpp_service.h | 3 +- .../protobuf/compiler/cpp/cpp_string_field.cc | 115 +- .../protobuf/compiler/cpp/cpp_string_field.h | 8 +- .../cpp/cpp_test_bad_identifiers.proto | 14 + .../protobuf/compiler/cpp/cpp_unittest.cc | 156 +- .../protobuf/compiler/cpp/cpp_unittest.h | 51 + .../src/google/protobuf/compiler/importer.cc | 7 +- .../src/google/protobuf/compiler/importer.h | 5 +- .../protobuf/compiler/importer_unittest.cc | 0 .../compiler/java/java_doc_comment.cc | 236 + .../protobuf/compiler/java/java_doc_comment.h | 69 + .../java/java_doc_comment_unittest.cc | 66 + .../protobuf/compiler/java/java_enum.cc | 79 +- .../google/protobuf/compiler/java/java_enum.h | 2 + .../protobuf/compiler/java/java_enum_field.cc | 603 + .../protobuf/compiler/java/java_enum_field.h | 26 +- .../protobuf/compiler/java/java_extension.cc | 177 +- .../protobuf/compiler/java/java_extension.h | 2 +- .../protobuf/compiler/java/java_field.cc | 45 +- .../protobuf/compiler/java/java_field.h | 13 +- .../protobuf/compiler/java/java_file.cc | 150 +- .../google/protobuf/compiler/java/java_file.h | 6 +- .../protobuf/compiler/java/java_generator.cc | 28 +- .../protobuf/compiler/java/java_generator.h | 2 +- .../protobuf/compiler/java/java_helpers.cc | 171 +- .../protobuf/compiler/java/java_helpers.h | 79 +- .../protobuf/compiler/java/java_message.cc | 895 +- .../protobuf/compiler/java/java_message.h | 16 +- .../compiler/java/java_message_field.cc | 974 + .../compiler/java/java_message_field.h | 40 +- .../compiler/java/java_plugin_unittest.cc | 19 +- .../compiler/java/java_primitive_field.cc | 787 + .../compiler/java/java_primitive_field.h | 26 +- .../protobuf/compiler/java/java_service.cc | 11 +- .../protobuf/compiler/java/java_service.h | 0 .../compiler/java/java_string_field.cc | 726 + .../compiler/java/java_string_field.h | 122 + .../src/google/protobuf/compiler/main.cc | 2 +- .../protobuf/compiler/mock_code_generator.cc | 64 +- .../protobuf/compiler/mock_code_generator.h | 13 +- .../google/protobuf/compiler/package_info.h | 0 .../src/google/protobuf/compiler/parser.cc | 1611 + .../src/google/protobuf/compiler/parser.h | 211 +- .../protobuf/compiler/parser_unittest.cc | 1120 +- .../src/google/protobuf/compiler/plugin.cc | 35 +- .../src/google/protobuf/compiler/plugin.h | 1 - .../src/google/protobuf/compiler/plugin.pb.cc | 174 +- .../src/google/protobuf/compiler/plugin.pb.h | 447 +- .../src/google/protobuf/compiler/plugin.proto | 4 +- .../compiler/python/python_generator.cc | 217 +- .../compiler/python/python_generator.h | 8 +- .../compiler/python/python_plugin_unittest.cc | 14 +- .../google/protobuf/compiler/subprocess.cc | 37 +- .../src/google/protobuf/compiler/subprocess.h | 7 +- .../google/protobuf/compiler/test_plugin.cc | 0 .../protobuf/compiler/zip_output_unittest.sh | 36 +- .../google/protobuf/compiler/zip_writer.cc | 34 +- .../src/google/protobuf/compiler/zip_writer.h | 93 + .../src/google/protobuf/descriptor.cc | 788 +- .../src/google/protobuf/descriptor.h | 180 +- .../src/google/protobuf/descriptor.pb.cc | 2555 +- .../src/google/protobuf/descriptor.pb.h | 3665 +- .../src/google/protobuf/descriptor.proto | 221 +- .../google/protobuf/descriptor_database.cc | 6 +- .../src/google/protobuf/descriptor_database.h | 1 + .../protobuf/descriptor_database_unittest.cc | 0 .../google/protobuf/descriptor_unittest.cc | 824 +- .../src/google/protobuf/dynamic_message.cc | 35 +- .../src/google/protobuf/dynamic_message.h | 4 +- .../protobuf/dynamic_message_unittest.cc | 4 + .../src/google/protobuf/extension_set.cc | 423 +- .../src/google/protobuf/extension_set.h | 233 +- .../google/protobuf/extension_set_heavy.cc | 274 +- .../google/protobuf/extension_set_unittest.cc | 100 +- .../protobuf/generated_enum_reflection.h | 85 + .../protobuf/generated_message_reflection.cc | 100 +- .../protobuf/generated_message_reflection.h | 49 +- .../generated_message_reflection_unittest.cc | 104 +- .../google/protobuf/generated_message_util.cc | 1 + .../google/protobuf/generated_message_util.h | 26 +- .../src/google/protobuf/io/coded_stream.cc | 61 +- .../src/google/protobuf/io/coded_stream.h | 120 +- .../src/google/protobuf/io/coded_stream_inl.h | 10 +- .../protobuf/io/coded_stream_unittest.cc | 90 +- .../src/google/protobuf/io/gzip_stream.cc | 60 +- .../src/google/protobuf/io/gzip_stream.h | 16 +- .../protobuf/io/gzip_stream_unittest.sh | 0 .../src/google/protobuf/io/package_info.h | 0 .../src/google/protobuf/io/printer.cc | 18 +- .../src/google/protobuf/io/printer.h | 6 +- .../google/protobuf/io/printer_unittest.cc | 30 +- .../src/google/protobuf/io/tokenizer.cc | 502 +- .../src/google/protobuf/io/tokenizer.h | 95 +- .../google/protobuf/io/tokenizer_unittest.cc | 348 +- .../google/protobuf/io/zero_copy_stream.cc | 0 .../src/google/protobuf/io/zero_copy_stream.h | 0 .../protobuf/io/zero_copy_stream_impl.cc | 3 +- .../protobuf/io/zero_copy_stream_impl.h | 0 .../protobuf/io/zero_copy_stream_impl_lite.cc | 4 +- .../protobuf/io/zero_copy_stream_impl_lite.h | 0 .../protobuf/io/zero_copy_stream_unittest.cc | 235 +- .../src/google/protobuf/lite_unittest.cc | 75 +- .../src/google/protobuf/message.cc | 44 +- .../src/google/protobuf/message.h | 201 +- .../src/google/protobuf/message_lite.cc | 4 +- .../src/google/protobuf/message_lite.h | 9 +- .../src/google/protobuf/message_unittest.cc | 77 +- .../src/google/protobuf/package_info.h | 0 .../src/google/protobuf/reflection_ops.cc | 19 +- .../src/google/protobuf/reflection_ops.h | 1 + .../protobuf/reflection_ops_unittest.cc | 4 +- .../src/google/protobuf/repeated_field.cc | 26 +- .../src/google/protobuf/repeated_field.h | 451 +- .../repeated_field_reflection_unittest.cc | 195 + .../protobuf/repeated_field_unittest.cc | 429 +- .../src/google/protobuf/service.cc | 0 .../src/google/protobuf/service.h | 0 .../src/google/protobuf/stubs/atomicops.h | 206 + .../stubs/atomicops_internals_arm_gcc.h | 151 + .../stubs/atomicops_internals_arm_qnx.h | 146 + .../atomicops_internals_atomicword_compat.h | 122 + .../stubs/atomicops_internals_macosx.h | 225 + .../stubs/atomicops_internals_mips_gcc.h | 187 + .../stubs/atomicops_internals_pnacl.h | 73 + .../stubs/atomicops_internals_x86_gcc.cc | 137 + .../stubs/atomicops_internals_x86_gcc.h | 293 + .../stubs/atomicops_internals_x86_msvc.cc | 112 + .../stubs/atomicops_internals_x86_msvc.h | 150 + .../src/google/protobuf/stubs/common.cc | 36 +- .../src/google/protobuf/stubs/common.h | 132 +- .../google/protobuf/stubs/common_unittest.cc | 18 +- .../src/google/protobuf/stubs/hash.h | 12 + .../src/google/protobuf/stubs/map-util.h | 24 + .../src/google/protobuf/stubs/once.cc | 79 +- .../src/google/protobuf/stubs/once.h | 83 +- .../google/protobuf/stubs/once_unittest.cc | 0 .../google/protobuf/stubs/platform_macros.h | 70 + .../src/google/protobuf/stubs/stl_util.h} | 8 +- .../src/google/protobuf/stubs/stringprintf.cc | 175 + .../src/google/protobuf/stubs/stringprintf.h | 76 + .../protobuf/stubs/stringprintf_unittest.cc | 152 + .../protobuf/stubs/structurally_valid.cc | 0 .../stubs/structurally_valid_unittest.cc | 0 .../src/google/protobuf/stubs/strutil.cc | 45 + .../src/google/protobuf/stubs/strutil.h | 18 +- .../google/protobuf/stubs/strutil_unittest.cc | 0 .../src/google/protobuf/stubs/substitute.cc | 2 +- .../src/google/protobuf/stubs/substitute.h | 0 .../src/google/protobuf/stubs/template_util.h | 138 + .../protobuf/stubs/template_util_unittest.cc | 130 + .../src/google/protobuf/stubs/type_traits.h | 336 + .../protobuf/stubs/type_traits_unittest.cc | 628 + .../src/google/protobuf/test_util.cc | 387 +- .../src/google/protobuf/test_util.h | 21 +- .../src/google/protobuf/test_util_lite.cc | 152 +- .../src/google/protobuf/test_util_lite.h | 0 .../google/protobuf/testdata/golden_message | Bin 0 -> 509 bytes .../testdata/golden_packed_fields_message | Bin .../testdata/text_format_unittest_data.txt | 12 + .../text_format_unittest_extensions_data.txt | 12 + .../src/google/protobuf/testing/file.cc | 0 .../src/google/protobuf/testing/file.h | 0 .../src/google/protobuf/testing/googletest.cc | 11 +- .../src/google/protobuf/testing/googletest.h | 16 +- .../src/google/protobuf/testing/zcgunzip.cc | 0 .../src/google/protobuf/testing/zcgzip.cc | 0 .../src/google/protobuf/text_format.cc | 370 +- .../src/google/protobuf/text_format.h | 131 +- .../google/protobuf/text_format_unittest.cc | 202 +- .../src/google/protobuf/unittest.proto | 107 + .../protobuf/unittest_custom_options.proto | 112 + .../unittest_embed_optimize_for.proto | 0 .../src/google/protobuf/unittest_empty.proto | 0 .../unittest_enormous_descriptor.proto | 0 .../src/google/protobuf/unittest_import.proto | 3 + .../protobuf/unittest_import_lite.proto | 2 + .../protobuf/unittest_import_public.proto} | 13 +- .../unittest_import_public_lite.proto | 42 + .../src/google/protobuf/unittest_lite.proto | 48 + .../unittest_lite_imports_nonlite.proto | 0 .../src/google/protobuf/unittest_mset.proto | 0 .../unittest_no_generic_services.proto | 4 +- .../protobuf/unittest_optimize_for.proto | 0 .../src/google/protobuf/unknown_field_set.cc | 78 +- .../src/google/protobuf/unknown_field_set.h | 75 +- .../protobuf/unknown_field_set_unittest.cc | 88 +- .../src/google/protobuf/wire_format.cc | 36 +- .../src/google/protobuf/wire_format.h | 6 +- .../src/google/protobuf/wire_format_lite.cc | 12 +- .../src/google/protobuf/wire_format_lite.h | 10 +- .../google/protobuf/wire_format_lite_inl.h | 117 +- .../google/protobuf/wire_format_unittest.cc | 93 +- .../src/solaris/libstdc++.la | 0 .../vsprojects/config.h | 0 .../vsprojects/convert2008to2005.sh | 0 .../vsprojects/extract_includes.bat | 7 + .../vsprojects/libprotobuf-lite.vcproj | 36 +- .../vsprojects/libprotobuf.vcproj | 38 +- .../vsprojects/libprotoc.vcproj | 832 +- .../vsprojects/lite-test.vcproj | 36 +- .../vsprojects/protobuf.sln | 184 +- .../vsprojects/protoc.vcproj | 384 +- .../vsprojects/readme.txt | 0 .../vsprojects/test_plugin.vcproj | 38 +- .../vsprojects/tests.vcproj | 60 +- etc/init.d/xtreemfs-service.template | 2 +- interface/xtreemfs/MRC.proto | 6 +- java/flease/nbproject/build-impl.xml | 264 +- java/flease/nbproject/genfiles.properties | 6 +- .../nbproject/private/private.properties | 2 +- java/flease/nbproject/project.properties | 6 +- java/flease/nbproject/project.xml | 14 +- java/foundation/eclipse-project/.classpath | 2 +- java/foundation/nbproject/project.properties | 7 +- .../pbrpc/generatedinterfaces/PBRPC.java | 62 +- .../pbrpc/generatedinterfaces/Ping.java | 3076 +- .../PingServiceClient.java | 2 +- .../PingServiceConstants.java | 2 +- .../pbrpc/generatedinterfaces/RPC.java | 5975 +- java/lib/protobuf-java-2.3.0.jar | Bin 328575 -> 0 bytes java/lib/protobuf-java-2.5.0.jar | Bin 0 -> 532453 bytes java/pbrpcgen/eclipse-project/.classpath | 2 +- java/pbrpcgen/nbproject/build-impl.xml | 255 +- java/pbrpcgen/nbproject/genfiles.properties | 4 +- .../nbproject/private/private.properties | 6 +- java/pbrpcgen/nbproject/private/private.xml | 3 +- java/pbrpcgen/nbproject/project.properties | 10 +- .../protobuf/compiler/PluginProtos.java | 4121 ++ .../src/google/protobuf/compiler/Plugin.java | 1287 - .../pbrpc/generatedinterfaces/PBRPC.java | 62 +- .../pbrpcgen/RPCCPPSourceGenerator.java | 6 +- .../xtreemfs/pbrpcgen/RPCSourceGenerator.java | 7 +- java/servers/eclipse-project/.classpath | 2 +- .../.classpath_WITH_BabuDB_project_reference | 2 +- java/servers/nbproject/build-impl.xml | 561 +- java/servers/nbproject/genfiles.properties | 6 +- java/servers/nbproject/project.properties | 21 +- java/servers/nbproject/project.xml | 22 +- .../mrc/operations/SetXAttrOperation.java | 2 +- .../pbrpc/generatedinterfaces/Common.java | 610 +- .../pbrpc/generatedinterfaces/DIR.java | 14560 +++-- .../generatedinterfaces/DIRServiceClient.java | 2 +- .../DIRServiceConstants.java | 2 +- .../generatedinterfaces/GlobalTypes.java | 10053 +++- .../pbrpc/generatedinterfaces/MRC.java | 50210 +++++++++++----- .../generatedinterfaces/MRCServiceClient.java | 6 +- .../MRCServiceConstants.java | 2 +- .../pbrpc/generatedinterfaces/OSD.java | 32987 +++++++--- .../generatedinterfaces/OSDServiceClient.java | 13 +- .../OSDServiceConstants.java | 4 +- packaging/build-service/xtreemfs/debian.rules | 2 +- .../build-service/xtreemfs/xtreemfs.spec | 2 +- .../net-fs/xtreemfs/files/xtreemfs-dir.confd | 2 +- .../net-fs/xtreemfs/files/xtreemfs-mrc.confd | 2 +- .../net-fs/xtreemfs/files/xtreemfs-osd.confd | 2 +- .../net-fs/xtreemfs/xtreemfs-8888_beta.ebuild | 2 +- .../net-fs/xtreemfs/xtreemfs-9999.ebuild | 2 +- tests/test_server.py | 4 +- tests/xstartserv | 2 +- 723 files changed, 234078 insertions(+), 96829 deletions(-) delete mode 100644 cpp/thirdparty/protobuf-2.3.0/.gitignore delete mode 100644 cpp/thirdparty/protobuf-2.3.0/gtest/.gitignore delete mode 100644 cpp/thirdparty/protobuf-2.3.0/gtest/Makefile.am delete mode 100644 cpp/thirdparty/protobuf-2.3.0/gtest/Makefile.in delete mode 100644 cpp/thirdparty/protobuf-2.3.0/gtest/README delete mode 100644 cpp/thirdparty/protobuf-2.3.0/gtest/build-aux/.gitignore delete mode 100644 cpp/thirdparty/protobuf-2.3.0/gtest/include/gtest/internal/gtest-port.h delete mode 100644 cpp/thirdparty/protobuf-2.3.0/gtest/include/gtest/internal/gtest-string.h delete mode 100644 cpp/thirdparty/protobuf-2.3.0/gtest/msvc/gtest-md.vcproj delete mode 100644 cpp/thirdparty/protobuf-2.3.0/gtest/msvc/gtest.vcproj delete mode 100644 cpp/thirdparty/protobuf-2.3.0/gtest/samples/.gitignore delete mode 100644 cpp/thirdparty/protobuf-2.3.0/gtest/scons/SConscript delete mode 100644 cpp/thirdparty/protobuf-2.3.0/gtest/scons/SConstruct.common delete mode 100644 cpp/thirdparty/protobuf-2.3.0/gtest/scripts/.gitignore delete mode 100644 cpp/thirdparty/protobuf-2.3.0/gtest/src/.gitignore delete mode 100644 cpp/thirdparty/protobuf-2.3.0/gtest/test/.gitignore delete mode 100644 cpp/thirdparty/protobuf-2.3.0/gtest/test/gtest-options_test.cc delete mode 100644 cpp/thirdparty/protobuf-2.3.0/gtest/test/gtest_nc.cc delete mode 100755 cpp/thirdparty/protobuf-2.3.0/gtest/test/gtest_nc_test.py delete mode 100644 cpp/thirdparty/protobuf-2.3.0/gtest/test/gtest_output_test_golden_win.txt delete mode 100644 cpp/thirdparty/protobuf-2.3.0/gtest/test/gtest_stress_test.cc delete mode 100644 cpp/thirdparty/protobuf-2.3.0/gtest/xcode/Scripts/runtests.sh delete mode 100644 cpp/thirdparty/protobuf-2.3.0/java/src/main/java/com/google/protobuf/ByteString.java delete mode 100644 cpp/thirdparty/protobuf-2.3.0/java/src/main/java/com/google/protobuf/GeneratedMessageLite.java delete mode 100644 cpp/thirdparty/protobuf-2.3.0/m4/stl_hash.m4 delete mode 100755 cpp/thirdparty/protobuf-2.3.0/python/google/protobuf/internal/descriptor_test.py delete mode 100755 cpp/thirdparty/protobuf-2.3.0/python/google/protobuf/internal/message_test.py delete mode 100644 cpp/thirdparty/protobuf-2.3.0/src/.gitignore delete mode 100644 cpp/thirdparty/protobuf-2.3.0/src/google/protobuf/.gitignore delete mode 100644 cpp/thirdparty/protobuf-2.3.0/src/google/protobuf/compiler/cpp/.gitignore delete mode 100644 cpp/thirdparty/protobuf-2.3.0/src/google/protobuf/compiler/java/java_enum_field.cc delete mode 100644 cpp/thirdparty/protobuf-2.3.0/src/google/protobuf/compiler/java/java_message_field.cc delete mode 100644 cpp/thirdparty/protobuf-2.3.0/src/google/protobuf/compiler/java/java_primitive_field.cc delete mode 100644 cpp/thirdparty/protobuf-2.3.0/src/google/protobuf/compiler/parser.cc delete mode 100644 cpp/thirdparty/protobuf-2.3.0/src/google/protobuf/testdata/golden_message rename cpp/thirdparty/{protobuf-2.3.0 => protobuf-2.5.0}/CHANGES.txt (75%) rename cpp/thirdparty/{protobuf-2.3.0 => protobuf-2.5.0}/CONTRIBUTORS.txt (90%) rename cpp/thirdparty/{protobuf-2.3.0 => protobuf-2.5.0}/COPYING.txt (100%) rename cpp/thirdparty/{protobuf-2.3.0 => protobuf-2.5.0}/INSTALL.txt (100%) rename cpp/thirdparty/{protobuf-2.3.0 => protobuf-2.5.0}/Makefile.am (68%) rename cpp/thirdparty/{protobuf-2.3.0 => protobuf-2.5.0}/Makefile.in (66%) rename cpp/thirdparty/{protobuf-2.3.0 => protobuf-2.5.0}/README.txt (98%) rename cpp/thirdparty/{protobuf-2.3.0 => protobuf-2.5.0}/aclocal.m4 (74%) rename cpp/thirdparty/{protobuf-2.3.0 => protobuf-2.5.0}/autogen.sh (90%) rename cpp/thirdparty/{protobuf-2.3.0 => protobuf-2.5.0}/config.guess (82%) rename cpp/thirdparty/{protobuf-2.3.0 => protobuf-2.5.0}/config.h.in (89%) rename cpp/thirdparty/{protobuf-2.3.0/gtest/build-aux => protobuf-2.5.0}/config.sub (85%) rename cpp/thirdparty/{protobuf-2.3.0 => protobuf-2.5.0}/configure (60%) rename cpp/thirdparty/{protobuf-2.3.0 => protobuf-2.5.0}/configure.ac (96%) rename cpp/thirdparty/{protobuf-2.3.0/gtest/build-aux => protobuf-2.5.0}/depcomp (81%) rename cpp/thirdparty/{protobuf-2.3.0 => protobuf-2.5.0}/editors/README.txt (100%) rename cpp/thirdparty/{protobuf-2.3.0 => protobuf-2.5.0}/editors/proto.vim (94%) rename cpp/thirdparty/{protobuf-2.3.0 => protobuf-2.5.0}/editors/protobuf-mode.el (100%) rename cpp/thirdparty/{protobuf-2.3.0 => protobuf-2.5.0}/examples/AddPerson.java (92%) rename cpp/thirdparty/{protobuf-2.3.0 => protobuf-2.5.0}/examples/ListPeople.java (100%) rename cpp/thirdparty/{protobuf-2.3.0 => protobuf-2.5.0}/examples/Makefile (100%) rename cpp/thirdparty/{protobuf-2.3.0 => protobuf-2.5.0}/examples/README.txt (100%) rename cpp/thirdparty/{protobuf-2.3.0 => protobuf-2.5.0}/examples/add_person.cc (100%) rename cpp/thirdparty/{protobuf-2.3.0 => protobuf-2.5.0}/examples/add_person.py (100%) rename cpp/thirdparty/{protobuf-2.3.0 => protobuf-2.5.0}/examples/addressbook.proto (100%) rename cpp/thirdparty/{protobuf-2.3.0 => protobuf-2.5.0}/examples/list_people.cc (100%) rename cpp/thirdparty/{protobuf-2.3.0 => protobuf-2.5.0}/examples/list_people.py (100%) rename cpp/thirdparty/{protobuf-2.3.0 => protobuf-2.5.0}/generate_descriptor_proto.sh (100%) rename cpp/thirdparty/{protobuf-2.3.0 => protobuf-2.5.0}/gtest/CHANGES (53%) create mode 100644 cpp/thirdparty/protobuf-2.5.0/gtest/CMakeLists.txt rename cpp/thirdparty/{protobuf-2.3.0 => protobuf-2.5.0}/gtest/CONTRIBUTORS (89%) rename cpp/thirdparty/{protobuf-2.3.0/gtest/COPYING => protobuf-2.5.0/gtest/LICENSE} (100%) create mode 100644 cpp/thirdparty/protobuf-2.5.0/gtest/Makefile.am create mode 100644 cpp/thirdparty/protobuf-2.5.0/gtest/Makefile.in create mode 100644 cpp/thirdparty/protobuf-2.5.0/gtest/README create mode 100644 cpp/thirdparty/protobuf-2.5.0/gtest/aclocal.m4 rename cpp/thirdparty/{protobuf-2.3.0 => protobuf-2.5.0}/gtest/build-aux/config.guess (82%) rename cpp/thirdparty/{protobuf-2.3.0 => protobuf-2.5.0}/gtest/build-aux/config.h.in (96%) rename cpp/thirdparty/{protobuf-2.3.0 => protobuf-2.5.0/gtest/build-aux}/config.sub (85%) rename cpp/thirdparty/{protobuf-2.3.0 => protobuf-2.5.0/gtest/build-aux}/depcomp (81%) rename cpp/thirdparty/{protobuf-2.3.0 => protobuf-2.5.0/gtest/build-aux}/install-sh (95%) rename cpp/thirdparty/{protobuf-2.3.0 => protobuf-2.5.0}/gtest/build-aux/ltmain.sh (64%) mode change 100755 => 100644 rename cpp/thirdparty/{protobuf-2.3.0 => protobuf-2.5.0/gtest/build-aux}/missing (86%) create mode 100644 cpp/thirdparty/protobuf-2.5.0/gtest/cmake/internal_utils.cmake rename cpp/thirdparty/{protobuf-2.3.0 => protobuf-2.5.0}/gtest/codegear/gtest.cbproj (100%) rename cpp/thirdparty/{protobuf-2.3.0 => protobuf-2.5.0}/gtest/codegear/gtest.groupproj (86%) rename cpp/thirdparty/{protobuf-2.3.0 => protobuf-2.5.0}/gtest/codegear/gtest_all.cc (100%) rename cpp/thirdparty/{protobuf-2.3.0 => protobuf-2.5.0}/gtest/codegear/gtest_link.cc (100%) rename cpp/thirdparty/{protobuf-2.3.0 => protobuf-2.5.0}/gtest/codegear/gtest_main.cbproj (100%) rename cpp/thirdparty/{protobuf-2.3.0 => protobuf-2.5.0}/gtest/codegear/gtest_unittest.cbproj (92%) rename cpp/thirdparty/{protobuf-2.3.0 => protobuf-2.5.0}/gtest/configure (61%) rename cpp/thirdparty/{protobuf-2.3.0 => protobuf-2.5.0}/gtest/configure.ac (72%) create mode 100644 cpp/thirdparty/protobuf-2.5.0/gtest/fused-src/gtest/gtest-all.cc create mode 100644 cpp/thirdparty/protobuf-2.5.0/gtest/fused-src/gtest/gtest.h rename cpp/thirdparty/{protobuf-2.3.0/gtest/src => protobuf-2.5.0/gtest/fused-src/gtest}/gtest_main.cc (92%) rename cpp/thirdparty/{protobuf-2.3.0 => protobuf-2.5.0}/gtest/include/gtest/gtest-death-test.h (84%) rename cpp/thirdparty/{protobuf-2.3.0 => protobuf-2.5.0}/gtest/include/gtest/gtest-message.h (87%) rename cpp/thirdparty/{protobuf-2.3.0 => protobuf-2.5.0}/gtest/include/gtest/gtest-param-test.h (96%) rename cpp/thirdparty/{protobuf-2.3.0 => protobuf-2.5.0}/gtest/include/gtest/gtest-param-test.h.pump (85%) create mode 100644 cpp/thirdparty/protobuf-2.5.0/gtest/include/gtest/gtest-printers.h rename cpp/thirdparty/{protobuf-2.3.0 => protobuf-2.5.0}/gtest/include/gtest/gtest-spi.h (97%) rename cpp/thirdparty/{protobuf-2.3.0 => protobuf-2.5.0}/gtest/include/gtest/gtest-test-part.h (83%) rename cpp/thirdparty/{protobuf-2.3.0 => protobuf-2.5.0}/gtest/include/gtest/gtest-typed-test.h (87%) rename cpp/thirdparty/{protobuf-2.3.0 => protobuf-2.5.0}/gtest/include/gtest/gtest.h (72%) rename cpp/thirdparty/{protobuf-2.3.0 => protobuf-2.5.0}/gtest/include/gtest/gtest_pred_impl.h (84%) rename cpp/thirdparty/{protobuf-2.3.0 => protobuf-2.5.0}/gtest/include/gtest/gtest_prod.h (100%) rename cpp/thirdparty/{protobuf-2.3.0 => protobuf-2.5.0}/gtest/include/gtest/internal/gtest-death-test-internal.h (81%) rename cpp/thirdparty/{protobuf-2.3.0 => protobuf-2.5.0}/gtest/include/gtest/internal/gtest-filepath.h (92%) rename cpp/thirdparty/{protobuf-2.3.0 => protobuf-2.5.0}/gtest/include/gtest/internal/gtest-internal.h (61%) rename cpp/thirdparty/{protobuf-2.3.0 => protobuf-2.5.0}/gtest/include/gtest/internal/gtest-linked_ptr.h (94%) rename cpp/thirdparty/{protobuf-2.3.0 => protobuf-2.5.0}/gtest/include/gtest/internal/gtest-param-util-generated.h (82%) rename cpp/thirdparty/{protobuf-2.3.0 => protobuf-2.5.0}/gtest/include/gtest/internal/gtest-param-util-generated.h.pump (90%) rename cpp/thirdparty/{protobuf-2.3.0 => protobuf-2.5.0}/gtest/include/gtest/internal/gtest-param-util.h (90%) create mode 100644 cpp/thirdparty/protobuf-2.5.0/gtest/include/gtest/internal/gtest-port.h create mode 100644 cpp/thirdparty/protobuf-2.5.0/gtest/include/gtest/internal/gtest-string.h rename cpp/thirdparty/{protobuf-2.3.0 => protobuf-2.5.0}/gtest/include/gtest/internal/gtest-tuple.h (91%) rename cpp/thirdparty/{protobuf-2.3.0 => protobuf-2.5.0}/gtest/include/gtest/internal/gtest-tuple.h.pump (91%) rename cpp/thirdparty/{protobuf-2.3.0 => protobuf-2.5.0}/gtest/include/gtest/internal/gtest-type-util.h (99%) rename cpp/thirdparty/{protobuf-2.3.0 => protobuf-2.5.0}/gtest/include/gtest/internal/gtest-type-util.h.pump (90%) rename cpp/thirdparty/{protobuf-2.3.0 => protobuf-2.5.0}/gtest/m4/acx_pthread.m4 (100%) rename cpp/thirdparty/{protobuf-2.3.0 => protobuf-2.5.0}/gtest/m4/gtest.m4 (100%) rename cpp/thirdparty/{protobuf-2.3.0 => protobuf-2.5.0/gtest}/m4/libtool.m4 (77%) rename cpp/thirdparty/{protobuf-2.3.0 => protobuf-2.5.0/gtest}/m4/ltoptions.m4 (93%) rename cpp/thirdparty/{protobuf-2.3.0 => protobuf-2.5.0/gtest}/m4/ltsugar.m4 (88%) rename cpp/thirdparty/{protobuf-2.3.0 => protobuf-2.5.0/gtest}/m4/ltversion.m4 (73%) rename cpp/thirdparty/{protobuf-2.3.0 => protobuf-2.5.0/gtest}/m4/lt~obsolete.m4 (90%) rename cpp/thirdparty/{protobuf-2.3.0 => protobuf-2.5.0}/gtest/make/Makefile (89%) rename cpp/thirdparty/{protobuf-2.3.0 => protobuf-2.5.0}/gtest/msvc/gtest-md.sln (100%) create mode 100644 cpp/thirdparty/protobuf-2.5.0/gtest/msvc/gtest-md.vcproj rename cpp/thirdparty/{protobuf-2.3.0 => protobuf-2.5.0}/gtest/msvc/gtest.sln (100%) create mode 100644 cpp/thirdparty/protobuf-2.5.0/gtest/msvc/gtest.vcproj rename cpp/thirdparty/{protobuf-2.3.0 => protobuf-2.5.0}/gtest/msvc/gtest_main-md.vcproj (73%) rename cpp/thirdparty/{protobuf-2.3.0 => protobuf-2.5.0}/gtest/msvc/gtest_main.vcproj (73%) rename cpp/thirdparty/{protobuf-2.3.0 => protobuf-2.5.0}/gtest/msvc/gtest_prod_test-md.vcproj (93%) rename cpp/thirdparty/{protobuf-2.3.0 => protobuf-2.5.0}/gtest/msvc/gtest_prod_test.vcproj (93%) rename cpp/thirdparty/{protobuf-2.3.0 => protobuf-2.5.0}/gtest/msvc/gtest_unittest-md.vcproj (92%) rename cpp/thirdparty/{protobuf-2.3.0 => protobuf-2.5.0}/gtest/msvc/gtest_unittest.vcproj (92%) rename cpp/thirdparty/{protobuf-2.3.0 => protobuf-2.5.0}/gtest/samples/prime_tables.h (96%) rename cpp/thirdparty/{protobuf-2.3.0 => protobuf-2.5.0}/gtest/samples/sample1.cc (100%) rename cpp/thirdparty/{protobuf-2.3.0 => protobuf-2.5.0}/gtest/samples/sample1.h (100%) rename cpp/thirdparty/{protobuf-2.3.0 => protobuf-2.5.0}/gtest/samples/sample10_unittest.cc (94%) rename cpp/thirdparty/{protobuf-2.3.0 => protobuf-2.5.0}/gtest/samples/sample1_unittest.cc (98%) rename cpp/thirdparty/{protobuf-2.3.0 => protobuf-2.5.0}/gtest/samples/sample2.cc (85%) rename cpp/thirdparty/{protobuf-2.3.0 => protobuf-2.5.0}/gtest/samples/sample2.h (91%) rename cpp/thirdparty/{protobuf-2.3.0 => protobuf-2.5.0}/gtest/samples/sample2_unittest.cc (92%) rename cpp/thirdparty/{protobuf-2.3.0 => protobuf-2.5.0}/gtest/samples/sample3-inl.h (78%) rename cpp/thirdparty/{protobuf-2.3.0 => protobuf-2.5.0}/gtest/samples/sample3_unittest.cc (97%) rename cpp/thirdparty/{protobuf-2.3.0 => protobuf-2.5.0}/gtest/samples/sample4.cc (100%) rename cpp/thirdparty/{protobuf-2.3.0 => protobuf-2.5.0}/gtest/samples/sample4.h (100%) rename cpp/thirdparty/{protobuf-2.3.0 => protobuf-2.5.0}/gtest/samples/sample4_unittest.cc (98%) rename cpp/thirdparty/{protobuf-2.3.0 => protobuf-2.5.0}/gtest/samples/sample5_unittest.cc (94%) rename cpp/thirdparty/{protobuf-2.3.0 => protobuf-2.5.0}/gtest/samples/sample6_unittest.cc (99%) rename cpp/thirdparty/{protobuf-2.3.0 => protobuf-2.5.0}/gtest/samples/sample7_unittest.cc (79%) rename cpp/thirdparty/{protobuf-2.3.0 => protobuf-2.5.0}/gtest/samples/sample8_unittest.cc (93%) rename cpp/thirdparty/{protobuf-2.3.0 => protobuf-2.5.0}/gtest/samples/sample9_unittest.cc (97%) rename cpp/thirdparty/{protobuf-2.3.0 => protobuf-2.5.0}/gtest/scripts/fuse_gtest_files.py (93%) rename cpp/thirdparty/{protobuf-2.3.0 => protobuf-2.5.0}/gtest/scripts/gen_gtest_pred_impl.py (98%) rename cpp/thirdparty/{protobuf-2.3.0 => protobuf-2.5.0}/gtest/scripts/gtest-config.in (97%) create mode 100755 cpp/thirdparty/protobuf-2.5.0/gtest/scripts/pump.py rename cpp/thirdparty/{protobuf-2.3.0 => protobuf-2.5.0}/gtest/scripts/test/Makefile (91%) rename cpp/thirdparty/{protobuf-2.3.0 => protobuf-2.5.0}/gtest/src/gtest-all.cc (90%) rename cpp/thirdparty/{protobuf-2.3.0 => protobuf-2.5.0}/gtest/src/gtest-death-test.cc (77%) rename cpp/thirdparty/{protobuf-2.3.0 => protobuf-2.5.0}/gtest/src/gtest-filepath.cc (78%) rename cpp/thirdparty/{protobuf-2.3.0 => protobuf-2.5.0}/gtest/src/gtest-internal-inl.h (66%) rename cpp/thirdparty/{protobuf-2.3.0 => protobuf-2.5.0}/gtest/src/gtest-port.cc (69%) create mode 100644 cpp/thirdparty/protobuf-2.5.0/gtest/src/gtest-printers.cc rename cpp/thirdparty/{protobuf-2.3.0 => protobuf-2.5.0}/gtest/src/gtest-test-part.cc (87%) rename cpp/thirdparty/{protobuf-2.3.0 => protobuf-2.5.0}/gtest/src/gtest-typed-test.cc (84%) rename cpp/thirdparty/{protobuf-2.3.0 => protobuf-2.5.0}/gtest/src/gtest.cc (76%) create mode 100644 cpp/thirdparty/protobuf-2.5.0/gtest/src/gtest_main.cc create mode 100644 cpp/thirdparty/protobuf-2.5.0/gtest/test/gtest-death-test_ex_test.cc rename cpp/thirdparty/{protobuf-2.3.0 => protobuf-2.5.0}/gtest/test/gtest-death-test_test.cc (79%) rename cpp/thirdparty/{protobuf-2.3.0 => protobuf-2.5.0}/gtest/test/gtest-filepath_test.cc (64%) rename cpp/thirdparty/{protobuf-2.3.0 => protobuf-2.5.0}/gtest/test/gtest-linked_ptr_test.cc (94%) rename cpp/thirdparty/{protobuf-2.3.0 => protobuf-2.5.0}/gtest/test/gtest-listener_test.cc (78%) rename cpp/thirdparty/{protobuf-2.3.0 => protobuf-2.5.0}/gtest/test/gtest-message_test.cc (68%) create mode 100644 cpp/thirdparty/protobuf-2.5.0/gtest/test/gtest-options_test.cc rename cpp/thirdparty/{protobuf-2.3.0 => protobuf-2.5.0}/gtest/test/gtest-param-test2_test.cc (99%) rename cpp/thirdparty/{protobuf-2.3.0 => protobuf-2.5.0}/gtest/test/gtest-param-test_test.cc (82%) rename cpp/thirdparty/{protobuf-2.3.0 => protobuf-2.5.0}/gtest/test/gtest-param-test_test.h (96%) rename cpp/thirdparty/{protobuf-2.3.0 => protobuf-2.5.0}/gtest/test/gtest-port_test.cc (51%) create mode 100644 cpp/thirdparty/protobuf-2.5.0/gtest/test/gtest-printers_test.cc rename cpp/thirdparty/{protobuf-2.3.0 => protobuf-2.5.0}/gtest/test/gtest-test-part_test.cc (72%) rename cpp/thirdparty/{protobuf-2.3.0 => protobuf-2.5.0}/gtest/test/gtest-tuple_test.cc (86%) rename cpp/thirdparty/{protobuf-2.3.0 => protobuf-2.5.0}/gtest/test/gtest-typed-test2_test.cc (98%) rename cpp/thirdparty/{protobuf-2.3.0 => protobuf-2.5.0}/gtest/test/gtest-typed-test_test.cc (95%) rename cpp/thirdparty/{protobuf-2.3.0 => protobuf-2.5.0}/gtest/test/gtest-typed-test_test.h (98%) rename cpp/thirdparty/{protobuf-2.3.0 => protobuf-2.5.0}/gtest/test/gtest-unittest-api_test.cc (88%) rename cpp/thirdparty/{protobuf-2.3.0 => protobuf-2.5.0}/gtest/test/gtest_all_test.cc (100%) rename cpp/thirdparty/{protobuf-2.3.0 => protobuf-2.5.0}/gtest/test/gtest_break_on_failure_unittest.py (97%) rename cpp/thirdparty/{protobuf-2.3.0 => protobuf-2.5.0}/gtest/test/gtest_break_on_failure_unittest_.cc (75%) create mode 100755 cpp/thirdparty/protobuf-2.5.0/gtest/test/gtest_catch_exceptions_test.py create mode 100644 cpp/thirdparty/protobuf-2.5.0/gtest/test/gtest_catch_exceptions_test_.cc rename cpp/thirdparty/{protobuf-2.3.0 => protobuf-2.5.0}/gtest/test/gtest_color_test.py (100%) rename cpp/thirdparty/{protobuf-2.3.0 => protobuf-2.5.0}/gtest/test/gtest_color_test_.cc (86%) rename cpp/thirdparty/{protobuf-2.3.0 => protobuf-2.5.0}/gtest/test/gtest_env_var_test.py (93%) rename cpp/thirdparty/{protobuf-2.3.0 => protobuf-2.5.0}/gtest/test/gtest_env_var_test_.cc (99%) rename cpp/thirdparty/{protobuf-2.3.0 => protobuf-2.5.0}/gtest/test/gtest_environment_test.cc (96%) rename cpp/thirdparty/{protobuf-2.3.0 => protobuf-2.5.0}/gtest/test/gtest_filter_unittest.py (77%) rename cpp/thirdparty/{protobuf-2.3.0 => protobuf-2.5.0}/gtest/test/gtest_filter_unittest_.cc (99%) rename cpp/thirdparty/{protobuf-2.3.0 => protobuf-2.5.0}/gtest/test/gtest_help_test.py (65%) rename cpp/thirdparty/{protobuf-2.3.0 => protobuf-2.5.0}/gtest/test/gtest_help_test_.cc (93%) rename cpp/thirdparty/{protobuf-2.3.0 => protobuf-2.5.0}/gtest/test/gtest_list_tests_unittest.py (100%) rename cpp/thirdparty/{protobuf-2.3.0 => protobuf-2.5.0}/gtest/test/gtest_list_tests_unittest_.cc (98%) rename cpp/thirdparty/{protobuf-2.3.0 => protobuf-2.5.0}/gtest/test/gtest_main_unittest.cc (98%) rename cpp/thirdparty/{protobuf-2.3.0 => protobuf-2.5.0}/gtest/test/gtest_no_test_unittest.cc (85%) rename cpp/thirdparty/{protobuf-2.3.0 => protobuf-2.5.0}/gtest/test/gtest_output_test.py (73%) rename cpp/thirdparty/{protobuf-2.3.0 => protobuf-2.5.0}/gtest/test/gtest_output_test_.cc (79%) rename cpp/thirdparty/{protobuf-2.3.0 => protobuf-2.5.0}/gtest/test/gtest_output_test_golden_lin.txt (85%) rename cpp/thirdparty/{protobuf-2.3.0 => protobuf-2.5.0}/gtest/test/gtest_pred_impl_unittest.cc (99%) rename cpp/thirdparty/{protobuf-2.3.0 => protobuf-2.5.0}/gtest/test/gtest_prod_test.cc (98%) rename cpp/thirdparty/{protobuf-2.3.0 => protobuf-2.5.0}/gtest/test/gtest_repeat_test.cc (96%) rename cpp/thirdparty/{protobuf-2.3.0 => protobuf-2.5.0}/gtest/test/gtest_shuffle_test.py (97%) rename cpp/thirdparty/{protobuf-2.3.0 => protobuf-2.5.0}/gtest/test/gtest_shuffle_test_.cc (98%) rename cpp/thirdparty/{protobuf-2.3.0 => protobuf-2.5.0}/gtest/test/gtest_sole_header_test.cc (98%) create mode 100644 cpp/thirdparty/protobuf-2.5.0/gtest/test/gtest_stress_test.cc rename cpp/thirdparty/{protobuf-2.3.0 => protobuf-2.5.0}/gtest/test/gtest_test_utils.py (75%) rename cpp/thirdparty/{protobuf-2.3.0 => protobuf-2.5.0}/gtest/test/gtest_throw_on_failure_ex_test.cc (99%) rename cpp/thirdparty/{protobuf-2.3.0 => protobuf-2.5.0}/gtest/test/gtest_throw_on_failure_test.py (100%) rename cpp/thirdparty/{protobuf-2.3.0 => protobuf-2.5.0}/gtest/test/gtest_throw_on_failure_test_.cc (78%) rename cpp/thirdparty/{protobuf-2.3.0 => protobuf-2.5.0}/gtest/test/gtest_uninitialized_test.py (100%) rename cpp/thirdparty/{protobuf-2.3.0 => protobuf-2.5.0}/gtest/test/gtest_uninitialized_test_.cc (98%) rename cpp/thirdparty/{protobuf-2.3.0 => protobuf-2.5.0}/gtest/test/gtest_unittest.cc (78%) rename cpp/thirdparty/{protobuf-2.3.0 => protobuf-2.5.0}/gtest/test/gtest_xml_outfile1_test_.cc (98%) rename cpp/thirdparty/{protobuf-2.3.0 => protobuf-2.5.0}/gtest/test/gtest_xml_outfile2_test_.cc (98%) rename cpp/thirdparty/{protobuf-2.3.0 => protobuf-2.5.0}/gtest/test/gtest_xml_outfiles_test.py (98%) rename cpp/thirdparty/{protobuf-2.3.0 => protobuf-2.5.0}/gtest/test/gtest_xml_output_unittest.py (57%) rename cpp/thirdparty/{protobuf-2.3.0 => protobuf-2.5.0}/gtest/test/gtest_xml_output_unittest_.cc (73%) rename cpp/thirdparty/{protobuf-2.3.0 => protobuf-2.5.0}/gtest/test/gtest_xml_test_utils.py (70%) rename cpp/thirdparty/{protobuf-2.3.0 => protobuf-2.5.0}/gtest/test/production.cc (100%) rename cpp/thirdparty/{protobuf-2.3.0 => protobuf-2.5.0}/gtest/test/production.h (96%) rename cpp/thirdparty/{protobuf-2.3.0 => protobuf-2.5.0}/gtest/xcode/Config/DebugProject.xcconfig (100%) rename cpp/thirdparty/{protobuf-2.3.0 => protobuf-2.5.0}/gtest/xcode/Config/FrameworkTarget.xcconfig (100%) rename cpp/thirdparty/{protobuf-2.3.0 => protobuf-2.5.0}/gtest/xcode/Config/General.xcconfig (98%) rename cpp/thirdparty/{protobuf-2.3.0 => protobuf-2.5.0}/gtest/xcode/Config/ReleaseProject.xcconfig (100%) rename cpp/thirdparty/{protobuf-2.3.0 => protobuf-2.5.0}/gtest/xcode/Config/StaticLibraryTarget.xcconfig (100%) rename cpp/thirdparty/{protobuf-2.3.0 => protobuf-2.5.0}/gtest/xcode/Config/TestTarget.xcconfig (100%) rename cpp/thirdparty/{protobuf-2.3.0 => protobuf-2.5.0}/gtest/xcode/Resources/Info.plist (100%) rename cpp/thirdparty/{protobuf-2.3.0 => protobuf-2.5.0}/gtest/xcode/Samples/FrameworkSample/Info.plist (100%) rename cpp/thirdparty/{protobuf-2.3.0 => protobuf-2.5.0}/gtest/xcode/Samples/FrameworkSample/WidgetFramework.xcodeproj/project.pbxproj (66%) create mode 100644 cpp/thirdparty/protobuf-2.5.0/gtest/xcode/Samples/FrameworkSample/runtests.sh rename cpp/thirdparty/{protobuf-2.3.0 => protobuf-2.5.0}/gtest/xcode/Samples/FrameworkSample/widget.cc (97%) rename cpp/thirdparty/{protobuf-2.3.0 => protobuf-2.5.0}/gtest/xcode/Samples/FrameworkSample/widget.h (97%) rename cpp/thirdparty/{protobuf-2.3.0 => protobuf-2.5.0}/gtest/xcode/Samples/FrameworkSample/widget_test.cc (96%) create mode 100644 cpp/thirdparty/protobuf-2.5.0/gtest/xcode/Scripts/runtests.sh rename cpp/thirdparty/{protobuf-2.3.0 => protobuf-2.5.0}/gtest/xcode/Scripts/versiongenerate.py (64%) rename cpp/thirdparty/{protobuf-2.3.0 => protobuf-2.5.0}/gtest/xcode/gtest.xcodeproj/project.pbxproj (98%) rename cpp/thirdparty/{protobuf-2.3.0/gtest/build-aux => protobuf-2.5.0}/install-sh (95%) rename cpp/thirdparty/{protobuf-2.3.0 => protobuf-2.5.0}/java/README.txt (100%) rename cpp/thirdparty/{protobuf-2.3.0 => protobuf-2.5.0}/java/pom.xml (77%) rename cpp/thirdparty/{protobuf-2.3.0 => protobuf-2.5.0}/java/src/main/java/com/google/protobuf/AbstractMessage.java (65%) rename cpp/thirdparty/{protobuf-2.3.0 => protobuf-2.5.0}/java/src/main/java/com/google/protobuf/AbstractMessageLite.java (93%) create mode 100644 cpp/thirdparty/protobuf-2.5.0/java/src/main/java/com/google/protobuf/AbstractParser.java rename cpp/thirdparty/{protobuf-2.3.0 => protobuf-2.5.0}/java/src/main/java/com/google/protobuf/BlockingRpcChannel.java (100%) rename cpp/thirdparty/{protobuf-2.3.0 => protobuf-2.5.0}/java/src/main/java/com/google/protobuf/BlockingService.java (100%) create mode 100644 cpp/thirdparty/protobuf-2.5.0/java/src/main/java/com/google/protobuf/BoundedByteString.java create mode 100644 cpp/thirdparty/protobuf-2.5.0/java/src/main/java/com/google/protobuf/ByteString.java rename cpp/thirdparty/{protobuf-2.3.0 => protobuf-2.5.0}/java/src/main/java/com/google/protobuf/CodedInputStream.java (90%) rename cpp/thirdparty/{protobuf-2.3.0 => protobuf-2.5.0}/java/src/main/java/com/google/protobuf/CodedOutputStream.java (91%) rename cpp/thirdparty/{protobuf-2.3.0 => protobuf-2.5.0}/java/src/main/java/com/google/protobuf/Descriptors.java (91%) rename cpp/thirdparty/{protobuf-2.3.0 => protobuf-2.5.0}/java/src/main/java/com/google/protobuf/DynamicMessage.java (88%) rename cpp/thirdparty/{protobuf-2.3.0 => protobuf-2.5.0}/java/src/main/java/com/google/protobuf/ExtensionRegistry.java (100%) rename cpp/thirdparty/{protobuf-2.3.0 => protobuf-2.5.0}/java/src/main/java/com/google/protobuf/ExtensionRegistryLite.java (92%) rename cpp/thirdparty/{protobuf-2.3.0 => protobuf-2.5.0}/java/src/main/java/com/google/protobuf/FieldSet.java (70%) rename cpp/thirdparty/{protobuf-2.3.0 => protobuf-2.5.0}/java/src/main/java/com/google/protobuf/GeneratedMessage.java (57%) create mode 100644 cpp/thirdparty/protobuf-2.5.0/java/src/main/java/com/google/protobuf/GeneratedMessageLite.java rename cpp/thirdparty/{protobuf-2.3.0 => protobuf-2.5.0}/java/src/main/java/com/google/protobuf/Internal.java (79%) rename cpp/thirdparty/{protobuf-2.3.0 => protobuf-2.5.0}/java/src/main/java/com/google/protobuf/InvalidProtocolBufferException.java (87%) create mode 100644 cpp/thirdparty/protobuf-2.5.0/java/src/main/java/com/google/protobuf/LazyField.java create mode 100644 cpp/thirdparty/protobuf-2.5.0/java/src/main/java/com/google/protobuf/LazyStringArrayList.java create mode 100644 cpp/thirdparty/protobuf-2.5.0/java/src/main/java/com/google/protobuf/LazyStringList.java create mode 100644 cpp/thirdparty/protobuf-2.5.0/java/src/main/java/com/google/protobuf/LiteralByteString.java rename cpp/thirdparty/{protobuf-2.3.0 => protobuf-2.5.0}/java/src/main/java/com/google/protobuf/Message.java (66%) rename cpp/thirdparty/{protobuf-2.3.0 => protobuf-2.5.0}/java/src/main/java/com/google/protobuf/MessageLite.java (82%) create mode 100644 cpp/thirdparty/protobuf-2.5.0/java/src/main/java/com/google/protobuf/MessageLiteOrBuilder.java create mode 100644 cpp/thirdparty/protobuf-2.5.0/java/src/main/java/com/google/protobuf/MessageOrBuilder.java create mode 100644 cpp/thirdparty/protobuf-2.5.0/java/src/main/java/com/google/protobuf/Parser.java rename cpp/thirdparty/{protobuf-2.3.0 => protobuf-2.5.0}/java/src/main/java/com/google/protobuf/ProtocolMessageEnum.java (100%) create mode 100644 cpp/thirdparty/protobuf-2.5.0/java/src/main/java/com/google/protobuf/RepeatedFieldBuilder.java create mode 100644 cpp/thirdparty/protobuf-2.5.0/java/src/main/java/com/google/protobuf/RopeByteString.java rename cpp/thirdparty/{protobuf-2.3.0 => protobuf-2.5.0}/java/src/main/java/com/google/protobuf/RpcCallback.java (100%) rename cpp/thirdparty/{protobuf-2.3.0 => protobuf-2.5.0}/java/src/main/java/com/google/protobuf/RpcChannel.java (100%) rename cpp/thirdparty/{protobuf-2.3.0 => protobuf-2.5.0}/java/src/main/java/com/google/protobuf/RpcController.java (100%) rename cpp/thirdparty/{protobuf-2.3.0 => protobuf-2.5.0}/java/src/main/java/com/google/protobuf/RpcUtil.java (100%) rename cpp/thirdparty/{protobuf-2.3.0 => protobuf-2.5.0}/java/src/main/java/com/google/protobuf/Service.java (100%) rename cpp/thirdparty/{protobuf-2.3.0 => protobuf-2.5.0}/java/src/main/java/com/google/protobuf/ServiceException.java (89%) create mode 100644 cpp/thirdparty/protobuf-2.5.0/java/src/main/java/com/google/protobuf/SingleFieldBuilder.java create mode 100644 cpp/thirdparty/protobuf-2.5.0/java/src/main/java/com/google/protobuf/SmallSortedMap.java rename cpp/thirdparty/{protobuf-2.3.0 => protobuf-2.5.0}/java/src/main/java/com/google/protobuf/TextFormat.java (70%) rename cpp/thirdparty/{protobuf-2.3.0 => protobuf-2.5.0}/java/src/main/java/com/google/protobuf/UninitializedMessageException.java (100%) rename cpp/thirdparty/{protobuf-2.3.0 => protobuf-2.5.0}/java/src/main/java/com/google/protobuf/UnknownFieldSet.java (97%) create mode 100644 cpp/thirdparty/protobuf-2.5.0/java/src/main/java/com/google/protobuf/UnmodifiableLazyStringList.java create mode 100644 cpp/thirdparty/protobuf-2.5.0/java/src/main/java/com/google/protobuf/Utf8.java rename cpp/thirdparty/{protobuf-2.3.0 => protobuf-2.5.0}/java/src/main/java/com/google/protobuf/WireFormat.java (93%) rename cpp/thirdparty/{protobuf-2.3.0 => protobuf-2.5.0}/java/src/test/java/com/google/protobuf/AbstractMessageTest.java (88%) create mode 100644 cpp/thirdparty/protobuf-2.5.0/java/src/test/java/com/google/protobuf/BoundedByteStringTest.java create mode 100644 cpp/thirdparty/protobuf-2.5.0/java/src/test/java/com/google/protobuf/ByteStringTest.java rename cpp/thirdparty/{protobuf-2.3.0 => protobuf-2.5.0}/java/src/test/java/com/google/protobuf/CodedInputStreamTest.java (95%) rename cpp/thirdparty/{protobuf-2.3.0 => protobuf-2.5.0}/java/src/test/java/com/google/protobuf/CodedOutputStreamTest.java (94%) create mode 100644 cpp/thirdparty/protobuf-2.5.0/java/src/test/java/com/google/protobuf/DeprecatedFieldTest.java rename cpp/thirdparty/{protobuf-2.3.0 => protobuf-2.5.0}/java/src/test/java/com/google/protobuf/DescriptorsTest.java (72%) rename cpp/thirdparty/{protobuf-2.3.0 => protobuf-2.5.0}/java/src/test/java/com/google/protobuf/DynamicMessageTest.java (77%) create mode 100644 cpp/thirdparty/protobuf-2.5.0/java/src/test/java/com/google/protobuf/ForceFieldBuildersPreRun.java rename cpp/thirdparty/{protobuf-2.3.0 => protobuf-2.5.0}/java/src/test/java/com/google/protobuf/GeneratedMessageTest.java (53%) create mode 100644 cpp/thirdparty/protobuf-2.5.0/java/src/test/java/com/google/protobuf/IsValidUtf8Test.java create mode 100644 cpp/thirdparty/protobuf-2.5.0/java/src/test/java/com/google/protobuf/IsValidUtf8TestUtil.java create mode 100644 cpp/thirdparty/protobuf-2.5.0/java/src/test/java/com/google/protobuf/LazyStringArrayListTest.java create mode 100644 cpp/thirdparty/protobuf-2.5.0/java/src/test/java/com/google/protobuf/LazyStringEndToEndTest.java rename cpp/thirdparty/{protobuf-2.3.0 => protobuf-2.5.0}/java/src/test/java/com/google/protobuf/LiteTest.java (80%) create mode 100644 cpp/thirdparty/protobuf-2.5.0/java/src/test/java/com/google/protobuf/LiteralByteStringTest.java rename cpp/thirdparty/{protobuf-2.3.0 => protobuf-2.5.0}/java/src/test/java/com/google/protobuf/MessageTest.java (86%) create mode 100644 cpp/thirdparty/protobuf-2.5.0/java/src/test/java/com/google/protobuf/NestedBuildersTest.java create mode 100644 cpp/thirdparty/protobuf-2.5.0/java/src/test/java/com/google/protobuf/ParserTest.java create mode 100644 cpp/thirdparty/protobuf-2.5.0/java/src/test/java/com/google/protobuf/RepeatedFieldBuilderTest.java create mode 100644 cpp/thirdparty/protobuf-2.5.0/java/src/test/java/com/google/protobuf/RopeByteStringSubstringTest.java create mode 100644 cpp/thirdparty/protobuf-2.5.0/java/src/test/java/com/google/protobuf/RopeByteStringTest.java rename cpp/thirdparty/{protobuf-2.3.0 => protobuf-2.5.0}/java/src/test/java/com/google/protobuf/ServiceTest.java (97%) create mode 100644 cpp/thirdparty/protobuf-2.5.0/java/src/test/java/com/google/protobuf/SingleFieldBuilderTest.java create mode 100644 cpp/thirdparty/protobuf-2.5.0/java/src/test/java/com/google/protobuf/SmallSortedMapTest.java create mode 100644 cpp/thirdparty/protobuf-2.5.0/java/src/test/java/com/google/protobuf/TestBadIdentifiers.java rename cpp/thirdparty/{protobuf-2.3.0 => protobuf-2.5.0}/java/src/test/java/com/google/protobuf/TestUtil.java (94%) rename cpp/thirdparty/{protobuf-2.3.0 => protobuf-2.5.0}/java/src/test/java/com/google/protobuf/TextFormatTest.java (80%) rename cpp/thirdparty/{protobuf-2.3.0 => protobuf-2.5.0}/java/src/test/java/com/google/protobuf/UnknownFieldSetTest.java (100%) create mode 100644 cpp/thirdparty/protobuf-2.5.0/java/src/test/java/com/google/protobuf/UnmodifiableLazyStringListTest.java rename cpp/thirdparty/{protobuf-2.3.0 => protobuf-2.5.0}/java/src/test/java/com/google/protobuf/WireFormatTest.java (74%) rename cpp/thirdparty/{protobuf-2.3.0 => protobuf-2.5.0}/java/src/test/java/com/google/protobuf/multiple_files_test.proto (93%) create mode 100644 cpp/thirdparty/protobuf-2.5.0/java/src/test/java/com/google/protobuf/nested_builders_test.proto create mode 100644 cpp/thirdparty/protobuf-2.5.0/java/src/test/java/com/google/protobuf/nested_extension.proto create mode 100644 cpp/thirdparty/protobuf-2.5.0/java/src/test/java/com/google/protobuf/nested_extension_lite.proto create mode 100644 cpp/thirdparty/protobuf-2.5.0/java/src/test/java/com/google/protobuf/non_nested_extension.proto create mode 100644 cpp/thirdparty/protobuf-2.5.0/java/src/test/java/com/google/protobuf/non_nested_extension_lite.proto create mode 100644 cpp/thirdparty/protobuf-2.5.0/java/src/test/java/com/google/protobuf/test_bad_identifiers.proto rename cpp/thirdparty/{protobuf-2.3.0 => protobuf-2.5.0}/ltmain.sh (64%) mode change 100755 => 100644 rename cpp/thirdparty/{protobuf-2.3.0 => protobuf-2.5.0}/m4/ac_system_extensions.m4 (100%) rename cpp/thirdparty/{protobuf-2.3.0 => protobuf-2.5.0}/m4/acx_check_suncc.m4 (100%) rename cpp/thirdparty/{protobuf-2.3.0 => protobuf-2.5.0}/m4/acx_pthread.m4 (92%) rename cpp/thirdparty/{protobuf-2.3.0/gtest/aclocal.m4 => protobuf-2.5.0/m4/libtool.m4} (70%) create mode 100644 cpp/thirdparty/protobuf-2.5.0/m4/ltoptions.m4 create mode 100644 cpp/thirdparty/protobuf-2.5.0/m4/ltsugar.m4 create mode 100644 cpp/thirdparty/protobuf-2.5.0/m4/ltversion.m4 create mode 100644 cpp/thirdparty/protobuf-2.5.0/m4/lt~obsolete.m4 create mode 100644 cpp/thirdparty/protobuf-2.5.0/m4/stl_hash.m4 rename cpp/thirdparty/{protobuf-2.3.0/gtest/build-aux => protobuf-2.5.0}/missing (86%) rename cpp/thirdparty/{protobuf-2.3.0 => protobuf-2.5.0}/protobuf-lite.pc.in (100%) rename cpp/thirdparty/{protobuf-2.3.0 => protobuf-2.5.0}/protobuf.pc.in (80%) rename cpp/thirdparty/{protobuf-2.3.0 => protobuf-2.5.0}/python/README.txt (66%) rename cpp/thirdparty/{protobuf-2.3.0 => protobuf-2.5.0}/python/ez_setup.py (93%) rename cpp/thirdparty/{protobuf-2.3.0 => protobuf-2.5.0}/python/google/__init__.py (100%) rename cpp/thirdparty/{protobuf-2.3.0 => protobuf-2.5.0}/python/google/protobuf/__init__.py (100%) rename cpp/thirdparty/{protobuf-2.3.0 => protobuf-2.5.0}/python/google/protobuf/descriptor.py (82%) create mode 100644 cpp/thirdparty/protobuf-2.5.0/python/google/protobuf/descriptor_database.py create mode 100644 cpp/thirdparty/protobuf-2.5.0/python/google/protobuf/descriptor_pool.py rename cpp/thirdparty/{protobuf-2.3.0 => protobuf-2.5.0}/python/google/protobuf/internal/__init__.py (100%) create mode 100755 cpp/thirdparty/protobuf-2.5.0/python/google/protobuf/internal/api_implementation.py rename cpp/thirdparty/{protobuf-2.3.0 => protobuf-2.5.0}/python/google/protobuf/internal/containers.py (89%) create mode 100755 cpp/thirdparty/protobuf-2.5.0/python/google/protobuf/internal/cpp_message.py rename cpp/thirdparty/{protobuf-2.3.0 => protobuf-2.5.0}/python/google/protobuf/internal/decoder.py (88%) create mode 100644 cpp/thirdparty/protobuf-2.5.0/python/google/protobuf/internal/descriptor_database_test.py create mode 100644 cpp/thirdparty/protobuf-2.5.0/python/google/protobuf/internal/descriptor_pool_test.py create mode 100755 cpp/thirdparty/protobuf-2.5.0/python/google/protobuf/internal/descriptor_test.py rename cpp/thirdparty/{protobuf-2.3.0 => protobuf-2.5.0}/python/google/protobuf/internal/encoder.py (88%) create mode 100644 cpp/thirdparty/protobuf-2.5.0/python/google/protobuf/internal/enum_type_wrapper.py create mode 100644 cpp/thirdparty/protobuf-2.5.0/python/google/protobuf/internal/factory_test1.proto create mode 100644 cpp/thirdparty/protobuf-2.5.0/python/google/protobuf/internal/factory_test2.proto rename cpp/thirdparty/{protobuf-2.3.0 => protobuf-2.5.0}/python/google/protobuf/internal/generator_test.py (77%) rename cpp/thirdparty/{protobuf-2.3.0/gtest/scons/SConstruct => protobuf-2.5.0/python/google/protobuf/internal/message_cpp_test.py} (58%) create mode 100644 cpp/thirdparty/protobuf-2.5.0/python/google/protobuf/internal/message_factory_test.py rename cpp/thirdparty/{protobuf-2.3.0 => protobuf-2.5.0}/python/google/protobuf/internal/message_listener.py (100%) create mode 100755 cpp/thirdparty/protobuf-2.5.0/python/google/protobuf/internal/message_test.py rename cpp/thirdparty/{protobuf-2.3.0 => protobuf-2.5.0}/python/google/protobuf/internal/more_extensions.proto (100%) create mode 100644 cpp/thirdparty/protobuf-2.5.0/python/google/protobuf/internal/more_extensions_dynamic.proto rename cpp/thirdparty/{protobuf-2.3.0 => protobuf-2.5.0}/python/google/protobuf/internal/more_messages.proto (100%) rename cpp/thirdparty/{protobuf-2.3.0/python/google/protobuf/reflection.py => protobuf-2.5.0/python/google/protobuf/internal/python_message.py} (89%) create mode 100755 cpp/thirdparty/protobuf-2.5.0/python/google/protobuf/internal/reflection_cpp_generated_test.py rename cpp/thirdparty/{protobuf-2.3.0 => protobuf-2.5.0}/python/google/protobuf/internal/reflection_test.py (81%) rename cpp/thirdparty/{protobuf-2.3.0 => protobuf-2.5.0}/python/google/protobuf/internal/service_reflection_test.py (100%) create mode 100644 cpp/thirdparty/protobuf-2.5.0/python/google/protobuf/internal/test_bad_identifiers.proto rename cpp/thirdparty/{protobuf-2.3.0 => protobuf-2.5.0}/python/google/protobuf/internal/test_util.py (96%) rename cpp/thirdparty/{protobuf-2.3.0 => protobuf-2.5.0}/python/google/protobuf/internal/text_format_test.py (62%) rename cpp/thirdparty/{protobuf-2.3.0 => protobuf-2.5.0}/python/google/protobuf/internal/type_checkers.py (100%) create mode 100755 cpp/thirdparty/protobuf-2.5.0/python/google/protobuf/internal/unknown_fields_test.py rename cpp/thirdparty/{protobuf-2.3.0 => protobuf-2.5.0}/python/google/protobuf/internal/wire_format.py (100%) rename cpp/thirdparty/{protobuf-2.3.0 => protobuf-2.5.0}/python/google/protobuf/internal/wire_format_test.py (100%) rename cpp/thirdparty/{protobuf-2.3.0 => protobuf-2.5.0}/python/google/protobuf/message.py (91%) create mode 100644 cpp/thirdparty/protobuf-2.5.0/python/google/protobuf/message_factory.py create mode 100644 cpp/thirdparty/protobuf-2.5.0/python/google/protobuf/pyext/python-proto2.cc create mode 100644 cpp/thirdparty/protobuf-2.5.0/python/google/protobuf/pyext/python_descriptor.cc create mode 100644 cpp/thirdparty/protobuf-2.5.0/python/google/protobuf/pyext/python_descriptor.h create mode 100644 cpp/thirdparty/protobuf-2.5.0/python/google/protobuf/pyext/python_protobuf.cc create mode 100644 cpp/thirdparty/protobuf-2.5.0/python/google/protobuf/pyext/python_protobuf.h create mode 100755 cpp/thirdparty/protobuf-2.5.0/python/google/protobuf/reflection.py rename cpp/thirdparty/{protobuf-2.3.0 => protobuf-2.5.0}/python/google/protobuf/service.py (100%) rename cpp/thirdparty/{protobuf-2.3.0 => protobuf-2.5.0}/python/google/protobuf/service_reflection.py (100%) rename cpp/thirdparty/{protobuf-2.3.0 => protobuf-2.5.0}/python/google/protobuf/text_format.py (71%) rename cpp/thirdparty/{protobuf-2.3.0 => protobuf-2.5.0}/python/mox.py (100%) rename cpp/thirdparty/{protobuf-2.3.0 => protobuf-2.5.0}/python/setup.py (53%) rename cpp/thirdparty/{protobuf-2.3.0 => protobuf-2.5.0}/python/stubout.py (100%) rename cpp/thirdparty/{protobuf-2.3.0 => protobuf-2.5.0}/src/Makefile.am (77%) rename cpp/thirdparty/{protobuf-2.3.0 => protobuf-2.5.0}/src/Makefile.in (68%) rename cpp/thirdparty/{protobuf-2.3.0 => protobuf-2.5.0}/src/google/protobuf/compiler/code_generator.cc (89%) rename cpp/thirdparty/{protobuf-2.3.0 => protobuf-2.5.0}/src/google/protobuf/compiler/code_generator.h (87%) rename cpp/thirdparty/{protobuf-2.3.0 => protobuf-2.5.0}/src/google/protobuf/compiler/command_line_interface.cc (80%) rename cpp/thirdparty/{protobuf-2.3.0 => protobuf-2.5.0}/src/google/protobuf/compiler/command_line_interface.h (85%) rename cpp/thirdparty/{protobuf-2.3.0 => protobuf-2.5.0}/src/google/protobuf/compiler/command_line_interface_unittest.cc (86%) rename cpp/thirdparty/{protobuf-2.3.0 => protobuf-2.5.0}/src/google/protobuf/compiler/cpp/cpp_bootstrap_unittest.cc (83%) rename cpp/thirdparty/{protobuf-2.3.0 => protobuf-2.5.0}/src/google/protobuf/compiler/cpp/cpp_enum.cc (98%) rename cpp/thirdparty/{protobuf-2.3.0 => protobuf-2.5.0}/src/google/protobuf/compiler/cpp/cpp_enum.h (96%) rename cpp/thirdparty/{protobuf-2.3.0 => protobuf-2.5.0}/src/google/protobuf/compiler/cpp/cpp_enum_field.cc (94%) rename cpp/thirdparty/{protobuf-2.3.0 => protobuf-2.5.0}/src/google/protobuf/compiler/cpp/cpp_enum_field.h (95%) rename cpp/thirdparty/{protobuf-2.3.0 => protobuf-2.5.0}/src/google/protobuf/compiler/cpp/cpp_extension.cc (97%) rename cpp/thirdparty/{protobuf-2.3.0 => protobuf-2.5.0}/src/google/protobuf/compiler/cpp/cpp_extension.h (93%) rename cpp/thirdparty/{protobuf-2.3.0 => protobuf-2.5.0}/src/google/protobuf/compiler/cpp/cpp_field.cc (84%) rename cpp/thirdparty/{protobuf-2.3.0 => protobuf-2.5.0}/src/google/protobuf/compiler/cpp/cpp_field.h (91%) rename cpp/thirdparty/{protobuf-2.3.0 => protobuf-2.5.0}/src/google/protobuf/compiler/cpp/cpp_file.cc (88%) rename cpp/thirdparty/{protobuf-2.3.0 => protobuf-2.5.0}/src/google/protobuf/compiler/cpp/cpp_file.h (96%) rename cpp/thirdparty/{protobuf-2.3.0 => protobuf-2.5.0}/src/google/protobuf/compiler/cpp/cpp_generator.cc (91%) rename cpp/thirdparty/{protobuf-2.3.0 => protobuf-2.5.0}/src/google/protobuf/compiler/cpp/cpp_generator.h (98%) rename cpp/thirdparty/{protobuf-2.3.0 => protobuf-2.5.0}/src/google/protobuf/compiler/cpp/cpp_helpers.cc (80%) rename cpp/thirdparty/{protobuf-2.3.0 => protobuf-2.5.0}/src/google/protobuf/compiler/cpp/cpp_helpers.h (82%) rename cpp/thirdparty/{protobuf-2.3.0 => protobuf-2.5.0}/src/google/protobuf/compiler/cpp/cpp_message.cc (82%) rename cpp/thirdparty/{protobuf-2.3.0 => protobuf-2.5.0}/src/google/protobuf/compiler/cpp/cpp_message.h (98%) rename cpp/thirdparty/{protobuf-2.3.0 => protobuf-2.5.0}/src/google/protobuf/compiler/cpp/cpp_message_field.cc (85%) rename cpp/thirdparty/{protobuf-2.3.0 => protobuf-2.5.0}/src/google/protobuf/compiler/cpp/cpp_message_field.h (96%) rename cpp/thirdparty/{protobuf-2.3.0/src/google/protobuf/compiler/zip_writer.h => protobuf-2.5.0/src/google/protobuf/compiler/cpp/cpp_options.h} (79%) rename cpp/thirdparty/{protobuf-2.3.0 => protobuf-2.5.0}/src/google/protobuf/compiler/cpp/cpp_plugin_unittest.cc (84%) rename cpp/thirdparty/{protobuf-2.3.0 => protobuf-2.5.0}/src/google/protobuf/compiler/cpp/cpp_primitive_field.cc (95%) rename cpp/thirdparty/{protobuf-2.3.0 => protobuf-2.5.0}/src/google/protobuf/compiler/cpp/cpp_primitive_field.h (96%) rename cpp/thirdparty/{protobuf-2.3.0 => protobuf-2.5.0}/src/google/protobuf/compiler/cpp/cpp_service.cc (98%) rename cpp/thirdparty/{protobuf-2.3.0 => protobuf-2.5.0}/src/google/protobuf/compiler/cpp/cpp_service.h (97%) rename cpp/thirdparty/{protobuf-2.3.0 => protobuf-2.5.0}/src/google/protobuf/compiler/cpp/cpp_string_field.cc (81%) rename cpp/thirdparty/{protobuf-2.3.0 => protobuf-2.5.0}/src/google/protobuf/compiler/cpp/cpp_string_field.h (94%) rename cpp/thirdparty/{protobuf-2.3.0 => protobuf-2.5.0}/src/google/protobuf/compiler/cpp/cpp_test_bad_identifiers.proto (90%) rename cpp/thirdparty/{protobuf-2.3.0 => protobuf-2.5.0}/src/google/protobuf/compiler/cpp/cpp_unittest.cc (88%) create mode 100644 cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/compiler/cpp/cpp_unittest.h rename cpp/thirdparty/{protobuf-2.3.0 => protobuf-2.5.0}/src/google/protobuf/compiler/importer.cc (98%) rename cpp/thirdparty/{protobuf-2.3.0 => protobuf-2.5.0}/src/google/protobuf/compiler/importer.h (98%) rename cpp/thirdparty/{protobuf-2.3.0 => protobuf-2.5.0}/src/google/protobuf/compiler/importer_unittest.cc (100%) create mode 100644 cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/compiler/java/java_doc_comment.cc create mode 100644 cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/compiler/java/java_doc_comment.h create mode 100644 cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/compiler/java/java_doc_comment_unittest.cc rename cpp/thirdparty/{protobuf-2.3.0 => protobuf-2.5.0}/src/google/protobuf/compiler/java/java_enum.cc (79%) rename cpp/thirdparty/{protobuf-2.3.0 => protobuf-2.5.0}/src/google/protobuf/compiler/java/java_enum.h (99%) create mode 100644 cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/compiler/java/java_enum_field.cc rename cpp/thirdparty/{protobuf-2.3.0 => protobuf-2.5.0}/src/google/protobuf/compiler/java/java_enum_field.h (77%) rename cpp/thirdparty/{protobuf-2.3.0 => protobuf-2.5.0}/src/google/protobuf/compiler/java/java_extension.cc (51%) rename cpp/thirdparty/{protobuf-2.3.0 => protobuf-2.5.0}/src/google/protobuf/compiler/java/java_extension.h (97%) rename cpp/thirdparty/{protobuf-2.3.0 => protobuf-2.5.0}/src/google/protobuf/compiler/java/java_field.cc (68%) rename cpp/thirdparty/{protobuf-2.3.0 => protobuf-2.5.0}/src/google/protobuf/compiler/java/java_field.h (86%) rename cpp/thirdparty/{protobuf-2.3.0 => protobuf-2.5.0}/src/google/protobuf/compiler/java/java_file.cc (69%) rename cpp/thirdparty/{protobuf-2.3.0 => protobuf-2.5.0}/src/google/protobuf/compiler/java/java_file.h (96%) rename cpp/thirdparty/{protobuf-2.3.0 => protobuf-2.5.0}/src/google/protobuf/compiler/java/java_generator.cc (86%) rename cpp/thirdparty/{protobuf-2.3.0 => protobuf-2.5.0}/src/google/protobuf/compiler/java/java_generator.h (98%) rename cpp/thirdparty/{protobuf-2.3.0 => protobuf-2.5.0}/src/google/protobuf/compiler/java/java_helpers.cc (72%) rename cpp/thirdparty/{protobuf-2.3.0 => protobuf-2.5.0}/src/google/protobuf/compiler/java/java_helpers.h (68%) rename cpp/thirdparty/{protobuf-2.3.0 => protobuf-2.5.0}/src/google/protobuf/compiler/java/java_message.cc (57%) rename cpp/thirdparty/{protobuf-2.3.0 => protobuf-2.5.0}/src/google/protobuf/compiler/java/java_message.h (88%) create mode 100644 cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/compiler/java/java_message_field.cc rename cpp/thirdparty/{protobuf-2.3.0 => protobuf-2.5.0}/src/google/protobuf/compiler/java/java_message_field.h (69%) rename cpp/thirdparty/{protobuf-2.3.0 => protobuf-2.5.0}/src/google/protobuf/compiler/java/java_plugin_unittest.cc (86%) create mode 100644 cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/compiler/java/java_primitive_field.cc rename cpp/thirdparty/{protobuf-2.3.0 => protobuf-2.5.0}/src/google/protobuf/compiler/java/java_primitive_field.h (78%) rename cpp/thirdparty/{protobuf-2.3.0 => protobuf-2.5.0}/src/google/protobuf/compiler/java/java_service.cc (97%) rename cpp/thirdparty/{protobuf-2.3.0 => protobuf-2.5.0}/src/google/protobuf/compiler/java/java_service.h (100%) create mode 100644 cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/compiler/java/java_string_field.cc create mode 100644 cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/compiler/java/java_string_field.h rename cpp/thirdparty/{protobuf-2.3.0 => protobuf-2.5.0}/src/google/protobuf/compiler/main.cc (97%) rename cpp/thirdparty/{protobuf-2.3.0 => protobuf-2.5.0}/src/google/protobuf/compiler/mock_code_generator.cc (77%) rename cpp/thirdparty/{protobuf-2.3.0 => protobuf-2.5.0}/src/google/protobuf/compiler/mock_code_generator.h (87%) rename cpp/thirdparty/{protobuf-2.3.0 => protobuf-2.5.0}/src/google/protobuf/compiler/package_info.h (100%) create mode 100644 cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/compiler/parser.cc rename cpp/thirdparty/{protobuf-2.3.0 => protobuf-2.5.0}/src/google/protobuf/compiler/parser.h (59%) rename cpp/thirdparty/{protobuf-2.3.0 => protobuf-2.5.0}/src/google/protobuf/compiler/parser_unittest.cc (51%) rename cpp/thirdparty/{protobuf-2.3.0 => protobuf-2.5.0}/src/google/protobuf/compiler/plugin.cc (82%) rename cpp/thirdparty/{protobuf-2.3.0 => protobuf-2.5.0}/src/google/protobuf/compiler/plugin.h (99%) rename cpp/thirdparty/{protobuf-2.3.0 => protobuf-2.5.0}/src/google/protobuf/compiler/plugin.pb.cc (94%) rename cpp/thirdparty/{protobuf-2.3.0 => protobuf-2.5.0}/src/google/protobuf/compiler/plugin.pb.h (73%) rename cpp/thirdparty/{protobuf-2.3.0 => protobuf-2.5.0}/src/google/protobuf/compiler/plugin.proto (98%) rename cpp/thirdparty/{protobuf-2.3.0 => protobuf-2.5.0}/src/google/protobuf/compiler/python/python_generator.cc (81%) rename cpp/thirdparty/{protobuf-2.3.0 => protobuf-2.5.0}/src/google/protobuf/compiler/python/python_generator.h (94%) rename cpp/thirdparty/{protobuf-2.3.0 => protobuf-2.5.0}/src/google/protobuf/compiler/python/python_plugin_unittest.cc (89%) rename cpp/thirdparty/{protobuf-2.3.0 => protobuf-2.5.0}/src/google/protobuf/compiler/subprocess.cc (93%) rename cpp/thirdparty/{protobuf-2.3.0 => protobuf-2.5.0}/src/google/protobuf/compiler/subprocess.h (97%) rename cpp/thirdparty/{protobuf-2.3.0 => protobuf-2.5.0}/src/google/protobuf/compiler/test_plugin.cc (100%) rename cpp/thirdparty/{protobuf-2.3.0 => protobuf-2.5.0}/src/google/protobuf/compiler/zip_output_unittest.sh (68%) rename cpp/thirdparty/{protobuf-2.3.0 => protobuf-2.5.0}/src/google/protobuf/compiler/zip_writer.cc (84%) create mode 100644 cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/compiler/zip_writer.h rename cpp/thirdparty/{protobuf-2.3.0 => protobuf-2.5.0}/src/google/protobuf/descriptor.cc (85%) rename cpp/thirdparty/{protobuf-2.3.0 => protobuf-2.5.0}/src/google/protobuf/descriptor.h (89%) rename cpp/thirdparty/{protobuf-2.3.0 => protobuf-2.5.0}/src/google/protobuf/descriptor.pb.cc (79%) rename cpp/thirdparty/{protobuf-2.3.0 => protobuf-2.5.0}/src/google/protobuf/descriptor.pb.h (64%) rename cpp/thirdparty/{protobuf-2.3.0 => protobuf-2.5.0}/src/google/protobuf/descriptor.proto (61%) rename cpp/thirdparty/{protobuf-2.3.0 => protobuf-2.5.0}/src/google/protobuf/descriptor_database.cc (98%) rename cpp/thirdparty/{protobuf-2.3.0 => protobuf-2.5.0}/src/google/protobuf/descriptor_database.h (99%) rename cpp/thirdparty/{protobuf-2.3.0 => protobuf-2.5.0}/src/google/protobuf/descriptor_database_unittest.cc (100%) rename cpp/thirdparty/{protobuf-2.3.0 => protobuf-2.5.0}/src/google/protobuf/descriptor_unittest.cc (83%) rename cpp/thirdparty/{protobuf-2.3.0 => protobuf-2.5.0}/src/google/protobuf/dynamic_message.cc (95%) rename cpp/thirdparty/{protobuf-2.3.0 => protobuf-2.5.0}/src/google/protobuf/dynamic_message.h (97%) rename cpp/thirdparty/{protobuf-2.3.0 => protobuf-2.5.0}/src/google/protobuf/dynamic_message_unittest.cc (96%) rename cpp/thirdparty/{protobuf-2.3.0 => protobuf-2.5.0}/src/google/protobuf/extension_set.cc (87%) rename cpp/thirdparty/{protobuf-2.3.0 => protobuf-2.5.0}/src/google/protobuf/extension_set.h (81%) rename cpp/thirdparty/{protobuf-2.3.0 => protobuf-2.5.0}/src/google/protobuf/extension_set_heavy.cc (68%) rename cpp/thirdparty/{protobuf-2.3.0 => protobuf-2.5.0}/src/google/protobuf/extension_set_unittest.cc (87%) create mode 100644 cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/generated_enum_reflection.h rename cpp/thirdparty/{protobuf-2.3.0 => protobuf-2.5.0}/src/google/protobuf/generated_message_reflection.cc (93%) rename cpp/thirdparty/{protobuf-2.3.0 => protobuf-2.5.0}/src/google/protobuf/generated_message_reflection.h (94%) rename cpp/thirdparty/{protobuf-2.3.0 => protobuf-2.5.0}/src/google/protobuf/generated_message_reflection_unittest.cc (78%) rename cpp/thirdparty/{protobuf-2.3.0 => protobuf-2.5.0}/src/google/protobuf/generated_message_util.cc (98%) rename cpp/thirdparty/{protobuf-2.3.0 => protobuf-2.5.0}/src/google/protobuf/generated_message_util.h (84%) rename cpp/thirdparty/{protobuf-2.3.0 => protobuf-2.5.0}/src/google/protobuf/io/coded_stream.cc (94%) rename cpp/thirdparty/{protobuf-2.3.0 => protobuf-2.5.0}/src/google/protobuf/io/coded_stream.h (93%) rename cpp/thirdparty/{protobuf-2.3.0 => protobuf-2.5.0}/src/google/protobuf/io/coded_stream_inl.h (89%) rename cpp/thirdparty/{protobuf-2.3.0 => protobuf-2.5.0}/src/google/protobuf/io/coded_stream_unittest.cc (92%) rename cpp/thirdparty/{protobuf-2.3.0 => protobuf-2.5.0}/src/google/protobuf/io/gzip_stream.cc (88%) rename cpp/thirdparty/{protobuf-2.3.0 => protobuf-2.5.0}/src/google/protobuf/io/gzip_stream.h (94%) rename cpp/thirdparty/{protobuf-2.3.0 => protobuf-2.5.0}/src/google/protobuf/io/gzip_stream_unittest.sh (100%) rename cpp/thirdparty/{protobuf-2.3.0 => protobuf-2.5.0}/src/google/protobuf/io/package_info.h (100%) rename cpp/thirdparty/{protobuf-2.3.0 => protobuf-2.5.0}/src/google/protobuf/io/printer.cc (91%) rename cpp/thirdparty/{protobuf-2.3.0 => protobuf-2.5.0}/src/google/protobuf/io/printer.h (93%) rename cpp/thirdparty/{protobuf-2.3.0 => protobuf-2.5.0}/src/google/protobuf/io/printer_unittest.cc (91%) rename cpp/thirdparty/{protobuf-2.3.0 => protobuf-2.5.0}/src/google/protobuf/io/tokenizer.cc (58%) rename cpp/thirdparty/{protobuf-2.3.0 => protobuf-2.5.0}/src/google/protobuf/io/tokenizer.h (79%) rename cpp/thirdparty/{protobuf-2.3.0 => protobuf-2.5.0}/src/google/protobuf/io/tokenizer_unittest.cc (72%) rename cpp/thirdparty/{protobuf-2.3.0 => protobuf-2.5.0}/src/google/protobuf/io/zero_copy_stream.cc (100%) rename cpp/thirdparty/{protobuf-2.3.0 => protobuf-2.5.0}/src/google/protobuf/io/zero_copy_stream.h (100%) rename cpp/thirdparty/{protobuf-2.3.0 => protobuf-2.5.0}/src/google/protobuf/io/zero_copy_stream_impl.cc (99%) rename cpp/thirdparty/{protobuf-2.3.0 => protobuf-2.5.0}/src/google/protobuf/io/zero_copy_stream_impl.h (100%) rename cpp/thirdparty/{protobuf-2.3.0 => protobuf-2.5.0}/src/google/protobuf/io/zero_copy_stream_impl_lite.cc (99%) rename cpp/thirdparty/{protobuf-2.3.0 => protobuf-2.5.0}/src/google/protobuf/io/zero_copy_stream_impl_lite.h (100%) rename cpp/thirdparty/{protobuf-2.3.0 => protobuf-2.5.0}/src/google/protobuf/io/zero_copy_stream_unittest.cc (72%) rename cpp/thirdparty/{protobuf-2.3.0 => protobuf-2.5.0}/src/google/protobuf/lite_unittest.cc (64%) rename cpp/thirdparty/{protobuf-2.3.0 => protobuf-2.5.0}/src/google/protobuf/message.cc (84%) rename cpp/thirdparty/{protobuf-2.3.0 => protobuf-2.5.0}/src/google/protobuf/message.h (80%) rename cpp/thirdparty/{protobuf-2.3.0 => protobuf-2.5.0}/src/google/protobuf/message_lite.cc (99%) rename cpp/thirdparty/{protobuf-2.3.0 => protobuf-2.5.0}/src/google/protobuf/message_lite.h (98%) rename cpp/thirdparty/{protobuf-2.3.0 => protobuf-2.5.0}/src/google/protobuf/message_unittest.cc (78%) rename cpp/thirdparty/{protobuf-2.3.0 => protobuf-2.5.0}/src/google/protobuf/package_info.h (100%) rename cpp/thirdparty/{protobuf-2.3.0 => protobuf-2.5.0}/src/google/protobuf/reflection_ops.cc (95%) rename cpp/thirdparty/{protobuf-2.3.0 => protobuf-2.5.0}/src/google/protobuf/reflection_ops.h (98%) rename cpp/thirdparty/{protobuf-2.3.0 => protobuf-2.5.0}/src/google/protobuf/reflection_ops_unittest.cc (99%) rename cpp/thirdparty/{protobuf-2.3.0 => protobuf-2.5.0}/src/google/protobuf/repeated_field.cc (80%) rename cpp/thirdparty/{protobuf-2.3.0 => protobuf-2.5.0}/src/google/protobuf/repeated_field.h (74%) create mode 100644 cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/repeated_field_reflection_unittest.cc rename cpp/thirdparty/{protobuf-2.3.0 => protobuf-2.5.0}/src/google/protobuf/repeated_field_unittest.cc (68%) rename cpp/thirdparty/{protobuf-2.3.0 => protobuf-2.5.0}/src/google/protobuf/service.cc (100%) rename cpp/thirdparty/{protobuf-2.3.0 => protobuf-2.5.0}/src/google/protobuf/service.h (100%) create mode 100644 cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/stubs/atomicops.h create mode 100644 cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/stubs/atomicops_internals_arm_gcc.h create mode 100644 cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/stubs/atomicops_internals_arm_qnx.h create mode 100644 cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/stubs/atomicops_internals_atomicword_compat.h create mode 100644 cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/stubs/atomicops_internals_macosx.h create mode 100644 cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/stubs/atomicops_internals_mips_gcc.h create mode 100644 cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/stubs/atomicops_internals_pnacl.h create mode 100644 cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/stubs/atomicops_internals_x86_gcc.cc create mode 100644 cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/stubs/atomicops_internals_x86_gcc.h create mode 100644 cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/stubs/atomicops_internals_x86_msvc.cc create mode 100644 cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/stubs/atomicops_internals_x86_msvc.h rename cpp/thirdparty/{protobuf-2.3.0 => protobuf-2.5.0}/src/google/protobuf/stubs/common.cc (91%) rename cpp/thirdparty/{protobuf-2.3.0 => protobuf-2.5.0}/src/google/protobuf/stubs/common.h (92%) rename cpp/thirdparty/{protobuf-2.3.0 => protobuf-2.5.0}/src/google/protobuf/stubs/common_unittest.cc (94%) rename cpp/thirdparty/{protobuf-2.3.0 => protobuf-2.5.0}/src/google/protobuf/stubs/hash.h (97%) rename cpp/thirdparty/{protobuf-2.3.0 => protobuf-2.5.0}/src/google/protobuf/stubs/map-util.h (82%) rename cpp/thirdparty/{protobuf-2.3.0 => protobuf-2.5.0}/src/google/protobuf/stubs/once.cc (58%) rename cpp/thirdparty/{protobuf-2.3.0 => protobuf-2.5.0}/src/google/protobuf/stubs/once.h (68%) rename cpp/thirdparty/{protobuf-2.3.0 => protobuf-2.5.0}/src/google/protobuf/stubs/once_unittest.cc (100%) create mode 100644 cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/stubs/platform_macros.h rename cpp/thirdparty/{protobuf-2.3.0/src/google/protobuf/stubs/stl_util-inl.h => protobuf-2.5.0/src/google/protobuf/stubs/stl_util.h} (96%) create mode 100644 cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/stubs/stringprintf.cc create mode 100644 cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/stubs/stringprintf.h create mode 100644 cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/stubs/stringprintf_unittest.cc rename cpp/thirdparty/{protobuf-2.3.0 => protobuf-2.5.0}/src/google/protobuf/stubs/structurally_valid.cc (100%) rename cpp/thirdparty/{protobuf-2.3.0 => protobuf-2.5.0}/src/google/protobuf/stubs/structurally_valid_unittest.cc (100%) rename cpp/thirdparty/{protobuf-2.3.0 => protobuf-2.5.0}/src/google/protobuf/stubs/strutil.cc (95%) rename cpp/thirdparty/{protobuf-2.3.0 => protobuf-2.5.0}/src/google/protobuf/stubs/strutil.h (96%) rename cpp/thirdparty/{protobuf-2.3.0 => protobuf-2.5.0}/src/google/protobuf/stubs/strutil_unittest.cc (100%) rename cpp/thirdparty/{protobuf-2.3.0 => protobuf-2.5.0}/src/google/protobuf/stubs/substitute.cc (99%) rename cpp/thirdparty/{protobuf-2.3.0 => protobuf-2.5.0}/src/google/protobuf/stubs/substitute.h (100%) create mode 100644 cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/stubs/template_util.h create mode 100644 cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/stubs/template_util_unittest.cc create mode 100644 cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/stubs/type_traits.h create mode 100644 cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/stubs/type_traits_unittest.cc rename cpp/thirdparty/{protobuf-2.3.0 => protobuf-2.5.0}/src/google/protobuf/test_util.cc (90%) rename cpp/thirdparty/{protobuf-2.3.0 => protobuf-2.5.0}/src/google/protobuf/test_util.h (89%) rename cpp/thirdparty/{protobuf-2.3.0 => protobuf-2.5.0}/src/google/protobuf/test_util_lite.cc (93%) rename cpp/thirdparty/{protobuf-2.3.0 => protobuf-2.5.0}/src/google/protobuf/test_util_lite.h (100%) create mode 100644 cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/testdata/golden_message rename cpp/thirdparty/{protobuf-2.3.0 => protobuf-2.5.0}/src/google/protobuf/testdata/golden_packed_fields_message (100%) rename cpp/thirdparty/{protobuf-2.3.0 => protobuf-2.5.0}/src/google/protobuf/testdata/text_format_unittest_data.txt (93%) rename cpp/thirdparty/{protobuf-2.3.0 => protobuf-2.5.0}/src/google/protobuf/testdata/text_format_unittest_extensions_data.txt (94%) rename cpp/thirdparty/{protobuf-2.3.0 => protobuf-2.5.0}/src/google/protobuf/testing/file.cc (100%) rename cpp/thirdparty/{protobuf-2.3.0 => protobuf-2.5.0}/src/google/protobuf/testing/file.h (100%) rename cpp/thirdparty/{protobuf-2.3.0 => protobuf-2.5.0}/src/google/protobuf/testing/googletest.cc (96%) rename cpp/thirdparty/{protobuf-2.3.0 => protobuf-2.5.0}/src/google/protobuf/testing/googletest.h (90%) rename cpp/thirdparty/{protobuf-2.3.0 => protobuf-2.5.0}/src/google/protobuf/testing/zcgunzip.cc (100%) rename cpp/thirdparty/{protobuf-2.3.0 => protobuf-2.5.0}/src/google/protobuf/testing/zcgzip.cc (100%) rename cpp/thirdparty/{protobuf-2.3.0 => protobuf-2.5.0}/src/google/protobuf/text_format.cc (76%) rename cpp/thirdparty/{protobuf-2.3.0 => protobuf-2.5.0}/src/google/protobuf/text_format.h (68%) rename cpp/thirdparty/{protobuf-2.3.0 => protobuf-2.5.0}/src/google/protobuf/text_format_unittest.cc (84%) rename cpp/thirdparty/{protobuf-2.3.0 => protobuf-2.5.0}/src/google/protobuf/unittest.proto (86%) rename cpp/thirdparty/{protobuf-2.3.0 => protobuf-2.5.0}/src/google/protobuf/unittest_custom_options.proto (72%) rename cpp/thirdparty/{protobuf-2.3.0 => protobuf-2.5.0}/src/google/protobuf/unittest_embed_optimize_for.proto (100%) rename cpp/thirdparty/{protobuf-2.3.0 => protobuf-2.5.0}/src/google/protobuf/unittest_empty.proto (100%) rename cpp/thirdparty/{protobuf-2.3.0 => protobuf-2.5.0}/src/google/protobuf/unittest_enormous_descriptor.proto (100%) rename cpp/thirdparty/{protobuf-2.3.0 => protobuf-2.5.0}/src/google/protobuf/unittest_import.proto (96%) rename cpp/thirdparty/{protobuf-2.3.0 => protobuf-2.5.0}/src/google/protobuf/unittest_import_lite.proto (96%) rename cpp/thirdparty/{protobuf-2.3.0/src/google/protobuf/stubs/hash.cc => protobuf-2.5.0/src/google/protobuf/unittest_import_public.proto} (88%) create mode 100644 cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/unittest_import_public_lite.proto rename cpp/thirdparty/{protobuf-2.3.0 => protobuf-2.5.0}/src/google/protobuf/unittest_lite.proto (89%) rename cpp/thirdparty/{protobuf-2.3.0 => protobuf-2.5.0}/src/google/protobuf/unittest_lite_imports_nonlite.proto (100%) rename cpp/thirdparty/{protobuf-2.3.0 => protobuf-2.5.0}/src/google/protobuf/unittest_mset.proto (100%) rename cpp/thirdparty/{protobuf-2.3.0 => protobuf-2.5.0}/src/google/protobuf/unittest_no_generic_services.proto (94%) rename cpp/thirdparty/{protobuf-2.3.0 => protobuf-2.5.0}/src/google/protobuf/unittest_optimize_for.proto (100%) rename cpp/thirdparty/{protobuf-2.3.0 => protobuf-2.5.0}/src/google/protobuf/unknown_field_set.cc (74%) rename cpp/thirdparty/{protobuf-2.3.0 => protobuf-2.5.0}/src/google/protobuf/unknown_field_set.h (79%) rename cpp/thirdparty/{protobuf-2.3.0 => protobuf-2.5.0}/src/google/protobuf/unknown_field_set_unittest.cc (84%) rename cpp/thirdparty/{protobuf-2.3.0 => protobuf-2.5.0}/src/google/protobuf/wire_format.cc (97%) rename cpp/thirdparty/{protobuf-2.3.0 => protobuf-2.5.0}/src/google/protobuf/wire_format.h (98%) rename cpp/thirdparty/{protobuf-2.3.0 => protobuf-2.5.0}/src/google/protobuf/wire_format_lite.cc (96%) rename cpp/thirdparty/{protobuf-2.3.0 => protobuf-2.5.0}/src/google/protobuf/wire_format_lite.h (98%) rename cpp/thirdparty/{protobuf-2.3.0 => protobuf-2.5.0}/src/google/protobuf/wire_format_lite_inl.h (87%) rename cpp/thirdparty/{protobuf-2.3.0 => protobuf-2.5.0}/src/google/protobuf/wire_format_unittest.cc (90%) rename cpp/thirdparty/{protobuf-2.3.0 => protobuf-2.5.0}/src/solaris/libstdc++.la (100%) rename cpp/thirdparty/{protobuf-2.3.0 => protobuf-2.5.0}/vsprojects/config.h (100%) rename cpp/thirdparty/{protobuf-2.3.0 => protobuf-2.5.0}/vsprojects/convert2008to2005.sh (100%) rename cpp/thirdparty/{protobuf-2.3.0 => protobuf-2.5.0}/vsprojects/extract_includes.bat (82%) rename cpp/thirdparty/{protobuf-2.3.0 => protobuf-2.5.0}/vsprojects/libprotobuf-lite.vcproj (87%) rename cpp/thirdparty/{protobuf-2.3.0 => protobuf-2.5.0}/vsprojects/libprotobuf.vcproj (92%) rename cpp/thirdparty/{protobuf-2.3.0 => protobuf-2.5.0}/vsprojects/libprotoc.vcproj (94%) rename cpp/thirdparty/{protobuf-2.3.0 => protobuf-2.5.0}/vsprojects/lite-test.vcproj (82%) rename cpp/thirdparty/{protobuf-2.3.0 => protobuf-2.5.0}/vsprojects/protobuf.sln (98%) rename cpp/thirdparty/{protobuf-2.3.0 => protobuf-2.5.0}/vsprojects/protoc.vcproj (95%) rename cpp/thirdparty/{protobuf-2.3.0 => protobuf-2.5.0}/vsprojects/readme.txt (100%) rename cpp/thirdparty/{protobuf-2.3.0 => protobuf-2.5.0}/vsprojects/test_plugin.vcproj (96%) rename cpp/thirdparty/{protobuf-2.3.0 => protobuf-2.5.0}/vsprojects/tests.vcproj (90%) delete mode 100644 java/lib/protobuf-java-2.3.0.jar create mode 100644 java/lib/protobuf-java-2.5.0.jar create mode 100644 java/pbrpcgen/src/com/google/protobuf/compiler/PluginProtos.java delete mode 100644 java/pbrpcgen/src/google/protobuf/compiler/Plugin.java diff --git a/.gitignore b/.gitignore index b3a5a5a96..7d29fc82d 100644 --- a/.gitignore +++ b/.gitignore @@ -3,3 +3,6 @@ /.googletest_library_already_built .idea *.iml +/java/flease/nbproject/private/ +/java/pbrpcgen/nbproject/private/ +/java/pbrpcgen/dist/ \ No newline at end of file diff --git a/Makefile b/Makefile index 498291dce..fb3846ee3 100644 --- a/Makefile +++ b/Makefile @@ -43,7 +43,7 @@ PLUGIN_CONFIG_DIR=$(XTREEMFS_CONFIG_DIR)/server-repl-plugin #Configuration of cpp code thirdparty dependencies. # If you edit the next five variables, make sure you also change them in cpp/CMakeLists.txt. -CLIENT_GOOGLE_PROTOBUF_CPP = cpp/thirdparty/protobuf-2.3.0 +CLIENT_GOOGLE_PROTOBUF_CPP = cpp/thirdparty/protobuf-2.5.0 CLIENT_GOOGLE_PROTOBUF_CPP_LIBRARY = $(CLIENT_GOOGLE_PROTOBUF_CPP)/src/.libs/libprotobuf.a CLIENT_GOOGLE_TEST_CPP = cpp/thirdparty/gtest-1.5.0 CLIENT_GOOGLE_TEST_CPP_LIBRARY = $(CLIENT_GOOGLE_TEST_CPP)/lib/.libs/libgtest.a diff --git a/bin/protoc-gen-pbrpc b/bin/protoc-gen-pbrpc index 55143b00e..75ba19306 100755 --- a/bin/protoc-gen-pbrpc +++ b/bin/protoc-gen-pbrpc @@ -1,4 +1,4 @@ #!/bin/bash FULLPATH=`readlink -f $0` BASEDIR=`dirname ${FULLPATH}` -java -cp ${BASEDIR}/../java/pbrpcgen/dist/pbrpcgen.jar:${BASEDIR}/../java/lib/protobuf-java-2.3.0.jar org.xtreemfs.pbrpcgen.RPCSourceGenerator +java -cp ${BASEDIR}/../java/pbrpcgen/dist/pbrpcgen.jar:${BASEDIR}/../java/lib/protobuf-java-2.5.0.jar org.xtreemfs.pbrpcgen.RPCSourceGenerator diff --git a/bin/protoc-gen-pbrpccpp b/bin/protoc-gen-pbrpccpp index 6e230c282..44a8aaf98 100755 --- a/bin/protoc-gen-pbrpccpp +++ b/bin/protoc-gen-pbrpccpp @@ -1,4 +1,4 @@ #!/bin/bash FULLPATH=`readlink -f $0` BASEDIR=`dirname ${FULLPATH}` -java -cp ${BASEDIR}/../java/pbrpcgen/dist/pbrpcgen.jar:${BASEDIR}/../java/lib/protobuf-java-2.3.0.jar org.xtreemfs.pbrpcgen.RPCCPPSourceGenerator +java -cp ${BASEDIR}/../java/pbrpcgen/dist/pbrpcgen.jar:${BASEDIR}/../java/lib/protobuf-java-2.5.0.jar org.xtreemfs.pbrpcgen.RPCCPPSourceGenerator diff --git a/bin/xtfs_chstatus b/bin/xtfs_chstatus index 6a7dc306b..d26910081 100755 --- a/bin/xtfs_chstatus +++ b/bin/xtfs_chstatus @@ -42,5 +42,5 @@ check_java() { check_xtreemfs check_java -exec $JAVA_HOME/bin/java -ea -cp $XTREEMFS/java/servers/dist/XtreemFS.jar:$XTREEMFS/java/foundation/dist/Foundation.jar:$XTREEMFS/java/lib/*:/usr/share/java/XtreemFS.jar:/usr/share/java/protobuf-java-2.3.0.jar:/usr/share/java/Foundation.jar:. \ +exec $JAVA_HOME/bin/java -ea -cp $XTREEMFS/java/servers/dist/XtreemFS.jar:$XTREEMFS/java/foundation/dist/Foundation.jar:$XTREEMFS/java/lib/*:/usr/share/java/XtreemFS.jar:/usr/share/java/protobuf-java-2.5.0.jar:/usr/share/java/Foundation.jar:. \ org.xtreemfs.utils.xtfs_chstatus $* diff --git a/bin/xtfs_cleanup b/bin/xtfs_cleanup index 4d4e8f32e..2ca301325 100755 --- a/bin/xtfs_cleanup +++ b/bin/xtfs_cleanup @@ -42,5 +42,5 @@ check_java() { check_xtreemfs check_java -exec $JAVA_HOME/bin/java -ea -cp $XTREEMFS/java/servers/dist/XtreemFS.jar:$XTREEMFS/java/foundation/dist/Foundation.jar:$XTREEMFS/java/lib/*:/usr/share/java/XtreemFS.jar:/usr/share/java/protobuf-java-2.3.0.jar:/usr/share/java/Foundation.jar:. \ +exec $JAVA_HOME/bin/java -ea -cp $XTREEMFS/java/servers/dist/XtreemFS.jar:$XTREEMFS/java/foundation/dist/Foundation.jar:$XTREEMFS/java/lib/*:/usr/share/java/XtreemFS.jar:/usr/share/java/protobuf-java-2.5.0.jar:/usr/share/java/Foundation.jar:. \ org.xtreemfs.utils.xtfs_cleanup_osd $* diff --git a/bin/xtfs_mrcdbtool b/bin/xtfs_mrcdbtool index 4287860c6..7a5502f77 100755 --- a/bin/xtfs_mrcdbtool +++ b/bin/xtfs_mrcdbtool @@ -42,5 +42,5 @@ check_java() { check_xtreemfs check_java -exec $JAVA_HOME/bin/java -ea -cp $XTREEMFS/java/servers/dist/XtreemFS.jar:$XTREEMFS/java/foundation/dist/Foundation.jar:$XTREEMFS/java/lib/*:/usr/share/java/XtreemFS.jar:/usr/share/java/protobuf-java-2.3.0.jar:/usr/share/java/Foundation.jar:. \ +exec $JAVA_HOME/bin/java -ea -cp $XTREEMFS/java/servers/dist/XtreemFS.jar:$XTREEMFS/java/foundation/dist/Foundation.jar:$XTREEMFS/java/lib/*:/usr/share/java/XtreemFS.jar:/usr/share/java/protobuf-java-2.5.0.jar:/usr/share/java/Foundation.jar:. \ org.xtreemfs.utils.xtfs_mrcdbtool $* diff --git a/bin/xtfs_remove_osd b/bin/xtfs_remove_osd index e2691e87a..e68f19330 100755 --- a/bin/xtfs_remove_osd +++ b/bin/xtfs_remove_osd @@ -42,5 +42,5 @@ check_java() { check_xtreemfs check_java -exec $JAVA_HOME/bin/java -ea -cp $XTREEMFS/java/servers/dist/XtreemFS.jar:$XTREEMFS/java/foundation/dist/Foundation.jar:$XTREEMFS/java/lib/*:/usr/share/java/XtreemFS.jar:/usr/share/java/protobuf-java-2.3.0.jar:/usr/share/java/Foundation.jar:. \ +exec $JAVA_HOME/bin/java -ea -cp $XTREEMFS/java/servers/dist/XtreemFS.jar:$XTREEMFS/java/foundation/dist/Foundation.jar:$XTREEMFS/java/lib/*:/usr/share/java/XtreemFS.jar:/usr/share/java/protobuf-java-2.5.0.jar:/usr/share/java/Foundation.jar:. \ org.xtreemfs.utils.xtfs_remove_osd $* diff --git a/bin/xtfs_scrub b/bin/xtfs_scrub index 68b81fac0..718319c5b 100755 --- a/bin/xtfs_scrub +++ b/bin/xtfs_scrub @@ -42,5 +42,5 @@ check_java() { check_xtreemfs check_java -exec $JAVA_HOME/bin/java -ea -cp $XTREEMFS/java/servers/dist/XtreemFS.jar:$XTREEMFS/java/foundation/dist/Foundation.jar:$XTREEMFS/java/lib/*:/usr/share/java/XtreemFS.jar:/usr/share/java/protobuf-java-2.3.0.jar:/usr/share/java/Foundation.jar:. \ +exec $JAVA_HOME/bin/java -ea -cp $XTREEMFS/java/servers/dist/XtreemFS.jar:$XTREEMFS/java/foundation/dist/Foundation.jar:$XTREEMFS/java/lib/*:/usr/share/java/XtreemFS.jar:/usr/share/java/protobuf-java-2.5.0.jar:/usr/share/java/Foundation.jar:. \ org.xtreemfs.utils.xtfs_scrub.xtfs_scrub $* diff --git a/contrib/hadoop/build.xml b/contrib/hadoop/build.xml index c4d7c2665..c85282cbd 100644 --- a/contrib/hadoop/build.xml +++ b/contrib/hadoop/build.xml @@ -85,7 +85,7 @@ - + diff --git a/contrib/hadoop/nbproject/project.properties b/contrib/hadoop/nbproject/project.properties index cdb70b400..7da24ad5d 100644 --- a/contrib/hadoop/nbproject/project.properties +++ b/contrib/hadoop/nbproject/project.properties @@ -27,7 +27,7 @@ endorsed.classpath= excludes= file.reference.Foundation.jar=../../java/foundation/dist/Foundation.jar file.reference.hadoop-core-1.0.1.jar=lib/hadoop-core-1.0.1.jar -file.reference.protobuf-java-2.3.0.jar=../../java/lib/protobuf-java-2.3.0.jar +file.reference.protobuf-java-2.5.0.jar=../../java/lib/protobuf-java-2.5.0.jar file.reference.XtreemFS.jar=../../java/servers/dist/XtreemFS.jar includes=** jar.archive.disabled=${jnlp.enabled} @@ -35,7 +35,7 @@ jar.compress=false jar.index=${jnlp.enabled} javac.classpath=\ ${file.reference.Foundation.jar}:\ - ${file.reference.protobuf-java-2.3.0.jar}:\ + ${file.reference.protobuf-java-2.5.0.jar}:\ ${file.reference.XtreemFS.jar}:\ ${file.reference.hadoop-core-1.0.1.jar} diff --git a/contrib/xtreemfs-osd-farm/xtreemfs-osd-farm b/contrib/xtreemfs-osd-farm/xtreemfs-osd-farm index b3e2c1e83..82608439b 100755 --- a/contrib/xtreemfs-osd-farm/xtreemfs-osd-farm +++ b/contrib/xtreemfs-osd-farm/xtreemfs-osd-farm @@ -35,7 +35,7 @@ LOG_OSD_GENERIC=/var/log/xtreemfs/%OSDNAME%.log if [ -z $JAVA_HOME ]; then export JAVA_HOME=/usr fi -JAVA_CALL="$JAVA_HOME/bin/java -ea -cp /usr/share/java/XtreemFS.jar:/usr/share/java/BabuDB.jar:/usr/share/java/Flease.jar:/usr/share/java/protobuf-java-2.3.0.jar:/usr/share/java/Foundation.jar:/usr/share/java/jdmkrt.jar:/usr/share/java/jdmktk.jar:/usr/share/java/commons-codec-1.3.jar" +JAVA_CALL="$JAVA_HOME/bin/java -ea -cp /usr/share/java/XtreemFS.jar:/usr/share/java/BabuDB.jar:/usr/share/java/Flease.jar:/usr/share/java/protobuf-java-2.5.0.jar:/usr/share/java/Foundation.jar:/usr/share/java/jdmkrt.jar:/usr/share/java/jdmktk.jar:/usr/share/java/commons-codec-1.3.jar" # For SELinux we need to use 'runuser' not 'su' if [ -x "/sbin/runuser" ]; then diff --git a/cpp/CMakeLists.txt b/cpp/CMakeLists.txt index 2a446d674..4478222f9 100644 --- a/cpp/CMakeLists.txt +++ b/cpp/CMakeLists.txt @@ -30,7 +30,7 @@ if (${CMAKE_SYSTEM_NAME} MATCHES "FreeBSD") endif(${CMAKE_SYSTEM_NAME} MATCHES "FreeBSD") # Set paths for required thirdparty libraries. -set(CLIENT_GOOGLE_PROTOBUF_CPP "${CMAKE_SOURCE_DIR}/thirdparty/protobuf-2.3.0") +set(CLIENT_GOOGLE_PROTOBUF_CPP "${CMAKE_SOURCE_DIR}/thirdparty/protobuf-2.5.0") if (WIN32) set(CLIENT_GOOGLE_PROTOBUF_CPP_LIBRARY "${CLIENT_GOOGLE_PROTOBUF_CPP}/vsprojects/Release/libprotobuf.lib") else() diff --git a/cpp/generated/include/Common.pb.cc b/cpp/generated/include/Common.pb.cc index e65bf7af0..f2b1cec02 100644 --- a/cpp/generated/include/Common.pb.cc +++ b/cpp/generated/include/Common.pb.cc @@ -1,11 +1,17 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! +// source: include/Common.proto #define INTERNAL_SUPPRESS_PROTOBUF_FIELD_DEPRECATION #include "include/Common.pb.h" + +#include + +#include #include #include #include #include +#include #include #include // @@protoc_insertion_point(includes) @@ -112,7 +118,6 @@ struct StaticDescriptorInitializer_include_2fCommon_2eproto { } } static_descriptor_initializer_include_2fCommon_2eproto_; - // =================================================================== #ifndef _MSC_VER @@ -157,7 +162,8 @@ const ::google::protobuf::Descriptor* emptyRequest::descriptor() { } const emptyRequest& emptyRequest::default_instance() { - if (default_instance_ == NULL) protobuf_AddDesc_include_2fCommon_2eproto(); return *default_instance_; + if (default_instance_ == NULL) protobuf_AddDesc_include_2fCommon_2eproto(); + return *default_instance_; } emptyRequest* emptyRequest::default_instance_ = NULL; @@ -206,7 +212,7 @@ void emptyRequest::SerializeWithCachedSizes( int emptyRequest::ByteSize() const { int total_size = 0; - + if (!unknown_fields().empty()) { total_size += ::google::protobuf::internal::WireFormat::ComputeUnknownFieldsSize( @@ -248,7 +254,7 @@ void emptyRequest::CopyFrom(const emptyRequest& from) { } bool emptyRequest::IsInitialized() const { - + return true; } @@ -312,7 +318,8 @@ const ::google::protobuf::Descriptor* emptyResponse::descriptor() { } const emptyResponse& emptyResponse::default_instance() { - if (default_instance_ == NULL) protobuf_AddDesc_include_2fCommon_2eproto(); return *default_instance_; + if (default_instance_ == NULL) protobuf_AddDesc_include_2fCommon_2eproto(); + return *default_instance_; } emptyResponse* emptyResponse::default_instance_ = NULL; @@ -361,7 +368,7 @@ void emptyResponse::SerializeWithCachedSizes( int emptyResponse::ByteSize() const { int total_size = 0; - + if (!unknown_fields().empty()) { total_size += ::google::protobuf::internal::WireFormat::ComputeUnknownFieldsSize( @@ -403,7 +410,7 @@ void emptyResponse::CopyFrom(const emptyResponse& from) { } bool emptyResponse::IsInitialized() const { - + return true; } diff --git a/cpp/generated/include/Common.pb.h b/cpp/generated/include/Common.pb.h index c05902c88..f7e9eb258 100644 --- a/cpp/generated/include/Common.pb.h +++ b/cpp/generated/include/Common.pb.h @@ -8,21 +8,22 @@ #include -#if GOOGLE_PROTOBUF_VERSION < 2003000 +#if GOOGLE_PROTOBUF_VERSION < 2005000 #error This file was generated by a newer version of protoc which is #error incompatible with your Protocol Buffer headers. Please update #error your headers. #endif -#if 2003000 < GOOGLE_PROTOBUF_MIN_PROTOC_VERSION +#if 2005000 < GOOGLE_PROTOBUF_MIN_PROTOC_VERSION #error This file was generated by an older version of protoc which is #error incompatible with your Protocol Buffer headers. Please #error regenerate this file with a newer version of protoc. #endif #include +#include #include #include -#include +#include // @@protoc_insertion_point(includes) namespace xtreemfs { @@ -42,29 +43,29 @@ class emptyRequest : public ::google::protobuf::Message { public: emptyRequest(); virtual ~emptyRequest(); - + emptyRequest(const emptyRequest& from); - + inline emptyRequest& operator=(const emptyRequest& from) { CopyFrom(from); return *this; } - + inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const { return _unknown_fields_; } - + inline ::google::protobuf::UnknownFieldSet* mutable_unknown_fields() { return &_unknown_fields_; } - + static const ::google::protobuf::Descriptor* descriptor(); static const emptyRequest& default_instance(); - + void Swap(emptyRequest* other); - + // implements Message ---------------------------------------------- - + emptyRequest* New() const; void CopyFrom(const ::google::protobuf::Message& from); void MergeFrom(const ::google::protobuf::Message& from); @@ -72,7 +73,7 @@ class emptyRequest : public ::google::protobuf::Message { void MergeFrom(const emptyRequest& from); void Clear(); bool IsInitialized() const; - + int ByteSize() const; bool MergePartialFromCodedStream( ::google::protobuf::io::CodedInputStream* input); @@ -85,35 +86,26 @@ class emptyRequest : public ::google::protobuf::Message { void SharedDtor(); void SetCachedSize(int size) const; public: - + ::google::protobuf::Metadata GetMetadata() const; - + // nested types ---------------------------------------------------- - + // accessors ------------------------------------------------------- - + // @@protoc_insertion_point(class_scope:xtreemfs.pbrpc.emptyRequest) private: + ::google::protobuf::UnknownFieldSet _unknown_fields_; + + mutable int _cached_size_; - + ::google::protobuf::uint32 _has_bits_[1]; + friend void protobuf_AddDesc_include_2fCommon_2eproto(); friend void protobuf_AssignDesc_include_2fCommon_2eproto(); friend void protobuf_ShutdownFile_include_2fCommon_2eproto(); - - ::google::protobuf::uint32 _has_bits_[1]; - - // WHY DOES & HAVE LOWER PRECEDENCE THAN != !? - inline bool _has_bit(int index) const { - return (_has_bits_[index / 32] & (1u << (index % 32))) != 0; - } - inline void _set_bit(int index) { - _has_bits_[index / 32] |= (1u << (index % 32)); - } - inline void _clear_bit(int index) { - _has_bits_[index / 32] &= ~(1u << (index % 32)); - } - + void InitAsDefaultInstance(); static emptyRequest* default_instance_; }; @@ -123,29 +115,29 @@ class emptyResponse : public ::google::protobuf::Message { public: emptyResponse(); virtual ~emptyResponse(); - + emptyResponse(const emptyResponse& from); - + inline emptyResponse& operator=(const emptyResponse& from) { CopyFrom(from); return *this; } - + inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const { return _unknown_fields_; } - + inline ::google::protobuf::UnknownFieldSet* mutable_unknown_fields() { return &_unknown_fields_; } - + static const ::google::protobuf::Descriptor* descriptor(); static const emptyResponse& default_instance(); - + void Swap(emptyResponse* other); - + // implements Message ---------------------------------------------- - + emptyResponse* New() const; void CopyFrom(const ::google::protobuf::Message& from); void MergeFrom(const ::google::protobuf::Message& from); @@ -153,7 +145,7 @@ class emptyResponse : public ::google::protobuf::Message { void MergeFrom(const emptyResponse& from); void Clear(); bool IsInitialized() const; - + int ByteSize() const; bool MergePartialFromCodedStream( ::google::protobuf::io::CodedInputStream* input); @@ -166,35 +158,26 @@ class emptyResponse : public ::google::protobuf::Message { void SharedDtor(); void SetCachedSize(int size) const; public: - + ::google::protobuf::Metadata GetMetadata() const; - + // nested types ---------------------------------------------------- - + // accessors ------------------------------------------------------- - + // @@protoc_insertion_point(class_scope:xtreemfs.pbrpc.emptyResponse) private: + ::google::protobuf::UnknownFieldSet _unknown_fields_; + + mutable int _cached_size_; - + ::google::protobuf::uint32 _has_bits_[1]; + friend void protobuf_AddDesc_include_2fCommon_2eproto(); friend void protobuf_AssignDesc_include_2fCommon_2eproto(); friend void protobuf_ShutdownFile_include_2fCommon_2eproto(); - - ::google::protobuf::uint32 _has_bits_[1]; - - // WHY DOES & HAVE LOWER PRECEDENCE THAN != !? - inline bool _has_bit(int index) const { - return (_has_bits_[index / 32] & (1u << (index % 32))) != 0; - } - inline void _set_bit(int index) { - _has_bits_[index / 32] |= (1u << (index % 32)); - } - inline void _clear_bit(int index) { - _has_bits_[index / 32] &= ~(1u << (index % 32)); - } - + void InitAsDefaultInstance(); static emptyResponse* default_instance_; }; diff --git a/cpp/generated/include/PBRPC.pb.cc b/cpp/generated/include/PBRPC.pb.cc index 6e4f642af..c6f074865 100644 --- a/cpp/generated/include/PBRPC.pb.cc +++ b/cpp/generated/include/PBRPC.pb.cc @@ -1,11 +1,17 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! +// source: include/PBRPC.proto #define INTERNAL_SUPPRESS_PROTOBUF_FIELD_DEPRECATION #include "include/PBRPC.pb.h" + +#include + +#include #include #include #include #include +#include #include #include // @@protoc_insertion_point(includes) @@ -84,7 +90,6 @@ struct StaticDescriptorInitializer_include_2fPBRPC_2eproto { protobuf_AddDesc_include_2fPBRPC_2eproto(); } } static_descriptor_initializer_include_2fPBRPC_2eproto_; - ::google::protobuf::internal::ExtensionIdentifier< ::google::protobuf::MethodOptions, ::google::protobuf::internal::PrimitiveTypeTraits< ::google::protobuf::uint32 >, 7, false > proc_id(kProcIdFieldNumber, 0u); diff --git a/cpp/generated/include/PBRPC.pb.h b/cpp/generated/include/PBRPC.pb.h index 880206c50..1151f71c4 100644 --- a/cpp/generated/include/PBRPC.pb.h +++ b/cpp/generated/include/PBRPC.pb.h @@ -8,12 +8,12 @@ #include -#if GOOGLE_PROTOBUF_VERSION < 2003000 +#if GOOGLE_PROTOBUF_VERSION < 2005000 #error This file was generated by a newer version of protoc which is #error incompatible with your Protocol Buffer headers. Please update #error your headers. #endif -#if 2003000 < GOOGLE_PROTOBUF_MIN_PROTOC_VERSION +#if 2005000 < GOOGLE_PROTOBUF_MIN_PROTOC_VERSION #error This file was generated by an older version of protoc which is #error incompatible with your Protocol Buffer headers. Please #error regenerate this file with a newer version of protoc. @@ -22,7 +22,6 @@ #include #include #include -#include #include "google/protobuf/descriptor.pb.h" // @@protoc_insertion_point(includes) diff --git a/cpp/generated/pbrpc/Ping.pb.cc b/cpp/generated/pbrpc/Ping.pb.cc index 9f44e8f7d..e90bd96c8 100644 --- a/cpp/generated/pbrpc/Ping.pb.cc +++ b/cpp/generated/pbrpc/Ping.pb.cc @@ -1,11 +1,17 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! +// source: pbrpc/Ping.proto #define INTERNAL_SUPPRESS_PROTOBUF_FIELD_DEPRECATION #include "pbrpc/Ping.pb.h" + +#include + +#include #include #include #include #include +#include #include #include // @@protoc_insertion_point(includes) @@ -33,7 +39,6 @@ const ::google::protobuf::internal::GeneratedMessageReflection* const ::google::protobuf::Descriptor* Ping_emptyResponse_descriptor_ = NULL; const ::google::protobuf::internal::GeneratedMessageReflection* Ping_emptyResponse_reflection_ = NULL; -const ::google::protobuf::ServiceDescriptor* PingService_descriptor_ = NULL; } // namespace @@ -134,7 +139,6 @@ void protobuf_AssignDesc_pbrpc_2fPing_2eproto() { ::google::protobuf::DescriptorPool::generated_pool(), ::google::protobuf::MessageFactory::generated_factory(), sizeof(Ping_emptyResponse)); - PingService_descriptor_ = file->service(0); } namespace { @@ -225,10 +229,8 @@ struct StaticDescriptorInitializer_pbrpc_2fPing_2eproto { } } static_descriptor_initializer_pbrpc_2fPing_2eproto_; - // =================================================================== -const ::std::string PingRequest::_default_text_; #ifndef _MSC_VER const int PingRequest::kTextFieldNumber; const int PingRequest::kSendErrorFieldNumber; @@ -250,7 +252,7 @@ PingRequest::PingRequest(const PingRequest& from) void PingRequest::SharedCtor() { _cached_size_ = 0; - text_ = const_cast< ::std::string*>(&_default_text_); + text_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); senderror_ = false; ::memset(_has_bits_, 0, sizeof(_has_bits_)); } @@ -260,7 +262,7 @@ PingRequest::~PingRequest() { } void PingRequest::SharedDtor() { - if (text_ != &_default_text_) { + if (text_ != &::google::protobuf::internal::kEmptyString) { delete text_; } if (this != default_instance_) { @@ -278,7 +280,8 @@ const ::google::protobuf::Descriptor* PingRequest::descriptor() { } const PingRequest& PingRequest::default_instance() { - if (default_instance_ == NULL) protobuf_AddDesc_pbrpc_2fPing_2eproto(); return *default_instance_; + if (default_instance_ == NULL) protobuf_AddDesc_pbrpc_2fPing_2eproto(); + return *default_instance_; } PingRequest* PingRequest::default_instance_ = NULL; @@ -289,8 +292,8 @@ PingRequest* PingRequest::New() const { void PingRequest::Clear() { if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) { - if (_has_bit(0)) { - if (text_ != &_default_text_) { + if (has_text()) { + if (text_ != &::google::protobuf::internal::kEmptyString) { text_->clear(); } } @@ -321,7 +324,7 @@ bool PingRequest::MergePartialFromCodedStream( if (input->ExpectTag(16)) goto parse_sendError; break; } - + // required bool sendError = 2; case 2: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -330,14 +333,14 @@ bool PingRequest::MergePartialFromCodedStream( DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive< bool, ::google::protobuf::internal::WireFormatLite::TYPE_BOOL>( input, &senderror_))); - _set_bit(1); + set_has_senderror(); } else { goto handle_uninterpreted; } if (input->ExpectAtEnd()) return true; break; } - + default: { handle_uninterpreted: if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -357,19 +360,19 @@ bool PingRequest::MergePartialFromCodedStream( void PingRequest::SerializeWithCachedSizes( ::google::protobuf::io::CodedOutputStream* output) const { // required string text = 1; - if (_has_bit(0)) { + if (has_text()) { ::google::protobuf::internal::WireFormat::VerifyUTF8String( this->text().data(), this->text().length(), ::google::protobuf::internal::WireFormat::SERIALIZE); ::google::protobuf::internal::WireFormatLite::WriteString( 1, this->text(), output); } - + // required bool sendError = 2; - if (_has_bit(1)) { + if (has_senderror()) { ::google::protobuf::internal::WireFormatLite::WriteBool(2, this->senderror(), output); } - + if (!unknown_fields().empty()) { ::google::protobuf::internal::WireFormat::SerializeUnknownFields( unknown_fields(), output); @@ -379,7 +382,7 @@ void PingRequest::SerializeWithCachedSizes( ::google::protobuf::uint8* PingRequest::SerializeWithCachedSizesToArray( ::google::protobuf::uint8* target) const { // required string text = 1; - if (_has_bit(0)) { + if (has_text()) { ::google::protobuf::internal::WireFormat::VerifyUTF8String( this->text().data(), this->text().length(), ::google::protobuf::internal::WireFormat::SERIALIZE); @@ -387,12 +390,12 @@ void PingRequest::SerializeWithCachedSizes( ::google::protobuf::internal::WireFormatLite::WriteStringToArray( 1, this->text(), target); } - + // required bool sendError = 2; - if (_has_bit(1)) { + if (has_senderror()) { target = ::google::protobuf::internal::WireFormatLite::WriteBoolToArray(2, this->senderror(), target); } - + if (!unknown_fields().empty()) { target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray( unknown_fields(), target); @@ -402,7 +405,7 @@ void PingRequest::SerializeWithCachedSizes( int PingRequest::ByteSize() const { int total_size = 0; - + if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) { // required string text = 1; if (has_text()) { @@ -410,12 +413,12 @@ int PingRequest::ByteSize() const { ::google::protobuf::internal::WireFormatLite::StringSize( this->text()); } - + // required bool sendError = 2; if (has_senderror()) { total_size += 1 + 1; } - + } if (!unknown_fields().empty()) { total_size += @@ -443,10 +446,10 @@ void PingRequest::MergeFrom(const ::google::protobuf::Message& from) { void PingRequest::MergeFrom(const PingRequest& from) { GOOGLE_CHECK_NE(&from, this); if (from._has_bits_[0 / 32] & (0xffu << (0 % 32))) { - if (from._has_bit(0)) { + if (from.has_text()) { set_text(from.text()); } - if (from._has_bit(1)) { + if (from.has_senderror()) { set_senderror(from.senderror()); } } @@ -467,7 +470,7 @@ void PingRequest::CopyFrom(const PingRequest& from) { bool PingRequest::IsInitialized() const { if ((_has_bits_[0] & 0x00000003) != 0x00000003) return false; - + return true; } @@ -492,7 +495,6 @@ void PingRequest::Swap(PingRequest* other) { // =================================================================== -const ::std::string PingResponse_PingResult::_default_text_; #ifndef _MSC_VER const int PingResponse_PingResult::kTextFieldNumber; #endif // !_MSC_VER @@ -513,7 +515,7 @@ PingResponse_PingResult::PingResponse_PingResult(const PingResponse_PingResult& void PingResponse_PingResult::SharedCtor() { _cached_size_ = 0; - text_ = const_cast< ::std::string*>(&_default_text_); + text_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); ::memset(_has_bits_, 0, sizeof(_has_bits_)); } @@ -522,7 +524,7 @@ PingResponse_PingResult::~PingResponse_PingResult() { } void PingResponse_PingResult::SharedDtor() { - if (text_ != &_default_text_) { + if (text_ != &::google::protobuf::internal::kEmptyString) { delete text_; } if (this != default_instance_) { @@ -540,7 +542,8 @@ const ::google::protobuf::Descriptor* PingResponse_PingResult::descriptor() { } const PingResponse_PingResult& PingResponse_PingResult::default_instance() { - if (default_instance_ == NULL) protobuf_AddDesc_pbrpc_2fPing_2eproto(); return *default_instance_; + if (default_instance_ == NULL) protobuf_AddDesc_pbrpc_2fPing_2eproto(); + return *default_instance_; } PingResponse_PingResult* PingResponse_PingResult::default_instance_ = NULL; @@ -551,8 +554,8 @@ PingResponse_PingResult* PingResponse_PingResult::New() const { void PingResponse_PingResult::Clear() { if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) { - if (_has_bit(0)) { - if (text_ != &_default_text_) { + if (has_text()) { + if (text_ != &::google::protobuf::internal::kEmptyString) { text_->clear(); } } @@ -582,7 +585,7 @@ bool PingResponse_PingResult::MergePartialFromCodedStream( if (input->ExpectAtEnd()) return true; break; } - + default: { handle_uninterpreted: if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -602,14 +605,14 @@ bool PingResponse_PingResult::MergePartialFromCodedStream( void PingResponse_PingResult::SerializeWithCachedSizes( ::google::protobuf::io::CodedOutputStream* output) const { // required string text = 1; - if (_has_bit(0)) { + if (has_text()) { ::google::protobuf::internal::WireFormat::VerifyUTF8String( this->text().data(), this->text().length(), ::google::protobuf::internal::WireFormat::SERIALIZE); ::google::protobuf::internal::WireFormatLite::WriteString( 1, this->text(), output); } - + if (!unknown_fields().empty()) { ::google::protobuf::internal::WireFormat::SerializeUnknownFields( unknown_fields(), output); @@ -619,7 +622,7 @@ void PingResponse_PingResult::SerializeWithCachedSizes( ::google::protobuf::uint8* PingResponse_PingResult::SerializeWithCachedSizesToArray( ::google::protobuf::uint8* target) const { // required string text = 1; - if (_has_bit(0)) { + if (has_text()) { ::google::protobuf::internal::WireFormat::VerifyUTF8String( this->text().data(), this->text().length(), ::google::protobuf::internal::WireFormat::SERIALIZE); @@ -627,7 +630,7 @@ void PingResponse_PingResult::SerializeWithCachedSizes( ::google::protobuf::internal::WireFormatLite::WriteStringToArray( 1, this->text(), target); } - + if (!unknown_fields().empty()) { target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray( unknown_fields(), target); @@ -637,7 +640,7 @@ void PingResponse_PingResult::SerializeWithCachedSizes( int PingResponse_PingResult::ByteSize() const { int total_size = 0; - + if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) { // required string text = 1; if (has_text()) { @@ -645,7 +648,7 @@ int PingResponse_PingResult::ByteSize() const { ::google::protobuf::internal::WireFormatLite::StringSize( this->text()); } - + } if (!unknown_fields().empty()) { total_size += @@ -673,7 +676,7 @@ void PingResponse_PingResult::MergeFrom(const ::google::protobuf::Message& from) void PingResponse_PingResult::MergeFrom(const PingResponse_PingResult& from) { GOOGLE_CHECK_NE(&from, this); if (from._has_bits_[0 / 32] & (0xffu << (0 % 32))) { - if (from._has_bit(0)) { + if (from.has_text()) { set_text(from.text()); } } @@ -694,7 +697,7 @@ void PingResponse_PingResult::CopyFrom(const PingResponse_PingResult& from) { bool PingResponse_PingResult::IsInitialized() const { if ((_has_bits_[0] & 0x00000001) != 0x00000001) return false; - + return true; } @@ -718,7 +721,6 @@ void PingResponse_PingResult::Swap(PingResponse_PingResult* other) { // ------------------------------------------------------------------- -const ::std::string PingResponse_PingError::_default_errormessage_; #ifndef _MSC_VER const int PingResponse_PingError::kErrorMessageFieldNumber; #endif // !_MSC_VER @@ -739,7 +741,7 @@ PingResponse_PingError::PingResponse_PingError(const PingResponse_PingError& fro void PingResponse_PingError::SharedCtor() { _cached_size_ = 0; - errormessage_ = const_cast< ::std::string*>(&_default_errormessage_); + errormessage_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); ::memset(_has_bits_, 0, sizeof(_has_bits_)); } @@ -748,7 +750,7 @@ PingResponse_PingError::~PingResponse_PingError() { } void PingResponse_PingError::SharedDtor() { - if (errormessage_ != &_default_errormessage_) { + if (errormessage_ != &::google::protobuf::internal::kEmptyString) { delete errormessage_; } if (this != default_instance_) { @@ -766,7 +768,8 @@ const ::google::protobuf::Descriptor* PingResponse_PingError::descriptor() { } const PingResponse_PingError& PingResponse_PingError::default_instance() { - if (default_instance_ == NULL) protobuf_AddDesc_pbrpc_2fPing_2eproto(); return *default_instance_; + if (default_instance_ == NULL) protobuf_AddDesc_pbrpc_2fPing_2eproto(); + return *default_instance_; } PingResponse_PingError* PingResponse_PingError::default_instance_ = NULL; @@ -777,8 +780,8 @@ PingResponse_PingError* PingResponse_PingError::New() const { void PingResponse_PingError::Clear() { if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) { - if (_has_bit(0)) { - if (errormessage_ != &_default_errormessage_) { + if (has_errormessage()) { + if (errormessage_ != &::google::protobuf::internal::kEmptyString) { errormessage_->clear(); } } @@ -808,7 +811,7 @@ bool PingResponse_PingError::MergePartialFromCodedStream( if (input->ExpectAtEnd()) return true; break; } - + default: { handle_uninterpreted: if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -828,14 +831,14 @@ bool PingResponse_PingError::MergePartialFromCodedStream( void PingResponse_PingError::SerializeWithCachedSizes( ::google::protobuf::io::CodedOutputStream* output) const { // required string errorMessage = 1; - if (_has_bit(0)) { + if (has_errormessage()) { ::google::protobuf::internal::WireFormat::VerifyUTF8String( this->errormessage().data(), this->errormessage().length(), ::google::protobuf::internal::WireFormat::SERIALIZE); ::google::protobuf::internal::WireFormatLite::WriteString( 1, this->errormessage(), output); } - + if (!unknown_fields().empty()) { ::google::protobuf::internal::WireFormat::SerializeUnknownFields( unknown_fields(), output); @@ -845,7 +848,7 @@ void PingResponse_PingError::SerializeWithCachedSizes( ::google::protobuf::uint8* PingResponse_PingError::SerializeWithCachedSizesToArray( ::google::protobuf::uint8* target) const { // required string errorMessage = 1; - if (_has_bit(0)) { + if (has_errormessage()) { ::google::protobuf::internal::WireFormat::VerifyUTF8String( this->errormessage().data(), this->errormessage().length(), ::google::protobuf::internal::WireFormat::SERIALIZE); @@ -853,7 +856,7 @@ void PingResponse_PingError::SerializeWithCachedSizes( ::google::protobuf::internal::WireFormatLite::WriteStringToArray( 1, this->errormessage(), target); } - + if (!unknown_fields().empty()) { target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray( unknown_fields(), target); @@ -863,7 +866,7 @@ void PingResponse_PingError::SerializeWithCachedSizes( int PingResponse_PingError::ByteSize() const { int total_size = 0; - + if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) { // required string errorMessage = 1; if (has_errormessage()) { @@ -871,7 +874,7 @@ int PingResponse_PingError::ByteSize() const { ::google::protobuf::internal::WireFormatLite::StringSize( this->errormessage()); } - + } if (!unknown_fields().empty()) { total_size += @@ -899,7 +902,7 @@ void PingResponse_PingError::MergeFrom(const ::google::protobuf::Message& from) void PingResponse_PingError::MergeFrom(const PingResponse_PingError& from) { GOOGLE_CHECK_NE(&from, this); if (from._has_bits_[0 / 32] & (0xffu << (0 % 32))) { - if (from._has_bit(0)) { + if (from.has_errormessage()) { set_errormessage(from.errormessage()); } } @@ -920,7 +923,7 @@ void PingResponse_PingError::CopyFrom(const PingResponse_PingError& from) { bool PingResponse_PingError::IsInitialized() const { if ((_has_bits_[0] & 0x00000001) != 0x00000001) return false; - + return true; } @@ -994,7 +997,8 @@ const ::google::protobuf::Descriptor* PingResponse::descriptor() { } const PingResponse& PingResponse::default_instance() { - if (default_instance_ == NULL) protobuf_AddDesc_pbrpc_2fPing_2eproto(); return *default_instance_; + if (default_instance_ == NULL) protobuf_AddDesc_pbrpc_2fPing_2eproto(); + return *default_instance_; } PingResponse* PingResponse::default_instance_ = NULL; @@ -1005,10 +1009,10 @@ PingResponse* PingResponse::New() const { void PingResponse::Clear() { if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) { - if (_has_bit(0)) { + if (has_result()) { if (result_ != NULL) result_->::xtreemfs::pbrpc::PingResponse_PingResult::Clear(); } - if (_has_bit(1)) { + if (has_error()) { if (error_ != NULL) error_->::xtreemfs::pbrpc::PingResponse_PingError::Clear(); } } @@ -1034,7 +1038,7 @@ bool PingResponse::MergePartialFromCodedStream( if (input->ExpectTag(18)) goto parse_error; break; } - + // optional .xtreemfs.pbrpc.PingResponse.PingError error = 2; case 2: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -1048,7 +1052,7 @@ bool PingResponse::MergePartialFromCodedStream( if (input->ExpectAtEnd()) return true; break; } - + default: { handle_uninterpreted: if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -1068,17 +1072,17 @@ bool PingResponse::MergePartialFromCodedStream( void PingResponse::SerializeWithCachedSizes( ::google::protobuf::io::CodedOutputStream* output) const { // optional .xtreemfs.pbrpc.PingResponse.PingResult result = 1; - if (_has_bit(0)) { + if (has_result()) { ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray( 1, this->result(), output); } - + // optional .xtreemfs.pbrpc.PingResponse.PingError error = 2; - if (_has_bit(1)) { + if (has_error()) { ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray( 2, this->error(), output); } - + if (!unknown_fields().empty()) { ::google::protobuf::internal::WireFormat::SerializeUnknownFields( unknown_fields(), output); @@ -1088,19 +1092,19 @@ void PingResponse::SerializeWithCachedSizes( ::google::protobuf::uint8* PingResponse::SerializeWithCachedSizesToArray( ::google::protobuf::uint8* target) const { // optional .xtreemfs.pbrpc.PingResponse.PingResult result = 1; - if (_has_bit(0)) { + if (has_result()) { target = ::google::protobuf::internal::WireFormatLite:: WriteMessageNoVirtualToArray( 1, this->result(), target); } - + // optional .xtreemfs.pbrpc.PingResponse.PingError error = 2; - if (_has_bit(1)) { + if (has_error()) { target = ::google::protobuf::internal::WireFormatLite:: WriteMessageNoVirtualToArray( 2, this->error(), target); } - + if (!unknown_fields().empty()) { target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray( unknown_fields(), target); @@ -1110,7 +1114,7 @@ void PingResponse::SerializeWithCachedSizes( int PingResponse::ByteSize() const { int total_size = 0; - + if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) { // optional .xtreemfs.pbrpc.PingResponse.PingResult result = 1; if (has_result()) { @@ -1118,14 +1122,14 @@ int PingResponse::ByteSize() const { ::google::protobuf::internal::WireFormatLite::MessageSizeNoVirtual( this->result()); } - + // optional .xtreemfs.pbrpc.PingResponse.PingError error = 2; if (has_error()) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::MessageSizeNoVirtual( this->error()); } - + } if (!unknown_fields().empty()) { total_size += @@ -1153,10 +1157,10 @@ void PingResponse::MergeFrom(const ::google::protobuf::Message& from) { void PingResponse::MergeFrom(const PingResponse& from) { GOOGLE_CHECK_NE(&from, this); if (from._has_bits_[0 / 32] & (0xffu << (0 % 32))) { - if (from._has_bit(0)) { + if (from.has_result()) { mutable_result()->::xtreemfs::pbrpc::PingResponse_PingResult::MergeFrom(from.result()); } - if (from._has_bit(1)) { + if (from.has_error()) { mutable_error()->::xtreemfs::pbrpc::PingResponse_PingError::MergeFrom(from.error()); } } @@ -1176,7 +1180,7 @@ void PingResponse::CopyFrom(const PingResponse& from) { } bool PingResponse::IsInitialized() const { - + if (has_result()) { if (!this->result().IsInitialized()) return false; } @@ -1249,7 +1253,8 @@ const ::google::protobuf::Descriptor* Ping_emptyRequest::descriptor() { } const Ping_emptyRequest& Ping_emptyRequest::default_instance() { - if (default_instance_ == NULL) protobuf_AddDesc_pbrpc_2fPing_2eproto(); return *default_instance_; + if (default_instance_ == NULL) protobuf_AddDesc_pbrpc_2fPing_2eproto(); + return *default_instance_; } Ping_emptyRequest* Ping_emptyRequest::default_instance_ = NULL; @@ -1298,7 +1303,7 @@ void Ping_emptyRequest::SerializeWithCachedSizes( int Ping_emptyRequest::ByteSize() const { int total_size = 0; - + if (!unknown_fields().empty()) { total_size += ::google::protobuf::internal::WireFormat::ComputeUnknownFieldsSize( @@ -1340,7 +1345,7 @@ void Ping_emptyRequest::CopyFrom(const Ping_emptyRequest& from) { } bool Ping_emptyRequest::IsInitialized() const { - + return true; } @@ -1404,7 +1409,8 @@ const ::google::protobuf::Descriptor* Ping_emptyResponse::descriptor() { } const Ping_emptyResponse& Ping_emptyResponse::default_instance() { - if (default_instance_ == NULL) protobuf_AddDesc_pbrpc_2fPing_2eproto(); return *default_instance_; + if (default_instance_ == NULL) protobuf_AddDesc_pbrpc_2fPing_2eproto(); + return *default_instance_; } Ping_emptyResponse* Ping_emptyResponse::default_instance_ = NULL; @@ -1453,7 +1459,7 @@ void Ping_emptyResponse::SerializeWithCachedSizes( int Ping_emptyResponse::ByteSize() const { int total_size = 0; - + if (!unknown_fields().empty()) { total_size += ::google::protobuf::internal::WireFormat::ComputeUnknownFieldsSize( @@ -1495,7 +1501,7 @@ void Ping_emptyResponse::CopyFrom(const Ping_emptyResponse& from) { } bool Ping_emptyResponse::IsInitialized() const { - + return true; } @@ -1515,115 +1521,6 @@ void Ping_emptyResponse::Swap(Ping_emptyResponse* other) { } -// =================================================================== - -PingService::~PingService() {} - -const ::google::protobuf::ServiceDescriptor* PingService::descriptor() { - protobuf_AssignDescriptorsOnce(); - return PingService_descriptor_; -} - -const ::google::protobuf::ServiceDescriptor* PingService::GetDescriptor() { - protobuf_AssignDescriptorsOnce(); - return PingService_descriptor_; -} - -void PingService::doPing(::google::protobuf::RpcController* controller, - const ::xtreemfs::pbrpc::PingRequest*, - ::xtreemfs::pbrpc::PingResponse*, - ::google::protobuf::Closure* done) { - controller->SetFailed("Method doPing() not implemented."); - done->Run(); -} - -void PingService::emptyPing(::google::protobuf::RpcController* controller, - const ::xtreemfs::pbrpc::Ping_emptyRequest*, - ::xtreemfs::pbrpc::Ping_emptyResponse*, - ::google::protobuf::Closure* done) { - controller->SetFailed("Method emptyPing() not implemented."); - done->Run(); -} - -void PingService::CallMethod(const ::google::protobuf::MethodDescriptor* method, - ::google::protobuf::RpcController* controller, - const ::google::protobuf::Message* request, - ::google::protobuf::Message* response, - ::google::protobuf::Closure* done) { - GOOGLE_DCHECK_EQ(method->service(), PingService_descriptor_); - switch(method->index()) { - case 0: - doPing(controller, - ::google::protobuf::down_cast(request), - ::google::protobuf::down_cast< ::xtreemfs::pbrpc::PingResponse*>(response), - done); - break; - case 1: - emptyPing(controller, - ::google::protobuf::down_cast(request), - ::google::protobuf::down_cast< ::xtreemfs::pbrpc::Ping_emptyResponse*>(response), - done); - break; - default: - GOOGLE_LOG(FATAL) << "Bad method index; this should never happen."; - break; - } -} - -const ::google::protobuf::Message& PingService::GetRequestPrototype( - const ::google::protobuf::MethodDescriptor* method) const { - GOOGLE_DCHECK_EQ(method->service(), descriptor()); - switch(method->index()) { - case 0: - return ::xtreemfs::pbrpc::PingRequest::default_instance(); - case 1: - return ::xtreemfs::pbrpc::Ping_emptyRequest::default_instance(); - default: - GOOGLE_LOG(FATAL) << "Bad method index; this should never happen."; - return *reinterpret_cast< ::google::protobuf::Message*>(NULL); - } -} - -const ::google::protobuf::Message& PingService::GetResponsePrototype( - const ::google::protobuf::MethodDescriptor* method) const { - GOOGLE_DCHECK_EQ(method->service(), descriptor()); - switch(method->index()) { - case 0: - return ::xtreemfs::pbrpc::PingResponse::default_instance(); - case 1: - return ::xtreemfs::pbrpc::Ping_emptyResponse::default_instance(); - default: - GOOGLE_LOG(FATAL) << "Bad method index; this should never happen."; - return *reinterpret_cast< ::google::protobuf::Message*>(NULL); - } -} - -PingService_Stub::PingService_Stub(::google::protobuf::RpcChannel* channel) - : channel_(channel), owns_channel_(false) {} -PingService_Stub::PingService_Stub( - ::google::protobuf::RpcChannel* channel, - ::google::protobuf::Service::ChannelOwnership ownership) - : channel_(channel), - owns_channel_(ownership == ::google::protobuf::Service::STUB_OWNS_CHANNEL) {} -PingService_Stub::~PingService_Stub() { - if (owns_channel_) delete channel_; -} - -void PingService_Stub::doPing(::google::protobuf::RpcController* controller, - const ::xtreemfs::pbrpc::PingRequest* request, - ::xtreemfs::pbrpc::PingResponse* response, - ::google::protobuf::Closure* done) { - channel_->CallMethod(descriptor()->method(0), - controller, request, response, done); -} -void PingService_Stub::emptyPing(::google::protobuf::RpcController* controller, - const ::xtreemfs::pbrpc::Ping_emptyRequest* request, - ::xtreemfs::pbrpc::Ping_emptyResponse* response, - ::google::protobuf::Closure* done) { - channel_->CallMethod(descriptor()->method(1), - controller, request, response, done); -} - // @@protoc_insertion_point(namespace_scope) } // namespace pbrpc diff --git a/cpp/generated/pbrpc/Ping.pb.h b/cpp/generated/pbrpc/Ping.pb.h index a0f02e7da..5e9c266bf 100644 --- a/cpp/generated/pbrpc/Ping.pb.h +++ b/cpp/generated/pbrpc/Ping.pb.h @@ -8,22 +8,22 @@ #include -#if GOOGLE_PROTOBUF_VERSION < 2003000 +#if GOOGLE_PROTOBUF_VERSION < 2005000 #error This file was generated by a newer version of protoc which is #error incompatible with your Protocol Buffer headers. Please update #error your headers. #endif -#if 2003000 < GOOGLE_PROTOBUF_MIN_PROTOC_VERSION +#if 2005000 < GOOGLE_PROTOBUF_MIN_PROTOC_VERSION #error This file was generated by an older version of protoc which is #error incompatible with your Protocol Buffer headers. Please #error regenerate this file with a newer version of protoc. #endif #include +#include #include #include -#include -#include +#include #include "include/PBRPC.pb.h" // @@protoc_insertion_point(includes) @@ -48,29 +48,29 @@ class PingRequest : public ::google::protobuf::Message { public: PingRequest(); virtual ~PingRequest(); - + PingRequest(const PingRequest& from); - + inline PingRequest& operator=(const PingRequest& from) { CopyFrom(from); return *this; } - + inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const { return _unknown_fields_; } - + inline ::google::protobuf::UnknownFieldSet* mutable_unknown_fields() { return &_unknown_fields_; } - + static const ::google::protobuf::Descriptor* descriptor(); static const PingRequest& default_instance(); - + void Swap(PingRequest* other); - + // implements Message ---------------------------------------------- - + PingRequest* New() const; void CopyFrom(const ::google::protobuf::Message& from); void MergeFrom(const ::google::protobuf::Message& from); @@ -78,7 +78,7 @@ class PingRequest : public ::google::protobuf::Message { void MergeFrom(const PingRequest& from); void Clear(); bool IsInitialized() const; - + int ByteSize() const; bool MergePartialFromCodedStream( ::google::protobuf::io::CodedInputStream* input); @@ -91,13 +91,13 @@ class PingRequest : public ::google::protobuf::Message { void SharedDtor(); void SetCachedSize(int size) const; public: - + ::google::protobuf::Metadata GetMetadata() const; - + // nested types ---------------------------------------------------- - + // accessors ------------------------------------------------------- - + // required string text = 1; inline bool has_text() const; inline void clear_text(); @@ -107,39 +107,35 @@ class PingRequest : public ::google::protobuf::Message { inline void set_text(const char* value); inline void set_text(const char* value, size_t size); inline ::std::string* mutable_text(); - + inline ::std::string* release_text(); + inline void set_allocated_text(::std::string* text); + // required bool sendError = 2; inline bool has_senderror() const; inline void clear_senderror(); static const int kSendErrorFieldNumber = 2; inline bool senderror() const; inline void set_senderror(bool value); - + // @@protoc_insertion_point(class_scope:xtreemfs.pbrpc.PingRequest) private: + inline void set_has_text(); + inline void clear_has_text(); + inline void set_has_senderror(); + inline void clear_has_senderror(); + ::google::protobuf::UnknownFieldSet _unknown_fields_; - mutable int _cached_size_; - + ::std::string* text_; - static const ::std::string _default_text_; bool senderror_; + + mutable int _cached_size_; + ::google::protobuf::uint32 _has_bits_[(2 + 31) / 32]; + friend void protobuf_AddDesc_pbrpc_2fPing_2eproto(); friend void protobuf_AssignDesc_pbrpc_2fPing_2eproto(); friend void protobuf_ShutdownFile_pbrpc_2fPing_2eproto(); - - ::google::protobuf::uint32 _has_bits_[(2 + 31) / 32]; - - // WHY DOES & HAVE LOWER PRECEDENCE THAN != !? - inline bool _has_bit(int index) const { - return (_has_bits_[index / 32] & (1u << (index % 32))) != 0; - } - inline void _set_bit(int index) { - _has_bits_[index / 32] |= (1u << (index % 32)); - } - inline void _clear_bit(int index) { - _has_bits_[index / 32] &= ~(1u << (index % 32)); - } - + void InitAsDefaultInstance(); static PingRequest* default_instance_; }; @@ -149,29 +145,29 @@ class PingResponse_PingResult : public ::google::protobuf::Message { public: PingResponse_PingResult(); virtual ~PingResponse_PingResult(); - + PingResponse_PingResult(const PingResponse_PingResult& from); - + inline PingResponse_PingResult& operator=(const PingResponse_PingResult& from) { CopyFrom(from); return *this; } - + inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const { return _unknown_fields_; } - + inline ::google::protobuf::UnknownFieldSet* mutable_unknown_fields() { return &_unknown_fields_; } - + static const ::google::protobuf::Descriptor* descriptor(); static const PingResponse_PingResult& default_instance(); - + void Swap(PingResponse_PingResult* other); - + // implements Message ---------------------------------------------- - + PingResponse_PingResult* New() const; void CopyFrom(const ::google::protobuf::Message& from); void MergeFrom(const ::google::protobuf::Message& from); @@ -179,7 +175,7 @@ class PingResponse_PingResult : public ::google::protobuf::Message { void MergeFrom(const PingResponse_PingResult& from); void Clear(); bool IsInitialized() const; - + int ByteSize() const; bool MergePartialFromCodedStream( ::google::protobuf::io::CodedInputStream* input); @@ -192,13 +188,13 @@ class PingResponse_PingResult : public ::google::protobuf::Message { void SharedDtor(); void SetCachedSize(int size) const; public: - + ::google::protobuf::Metadata GetMetadata() const; - + // nested types ---------------------------------------------------- - + // accessors ------------------------------------------------------- - + // required string text = 1; inline bool has_text() const; inline void clear_text(); @@ -208,31 +204,25 @@ class PingResponse_PingResult : public ::google::protobuf::Message { inline void set_text(const char* value); inline void set_text(const char* value, size_t size); inline ::std::string* mutable_text(); - + inline ::std::string* release_text(); + inline void set_allocated_text(::std::string* text); + // @@protoc_insertion_point(class_scope:xtreemfs.pbrpc.PingResponse.PingResult) private: + inline void set_has_text(); + inline void clear_has_text(); + ::google::protobuf::UnknownFieldSet _unknown_fields_; - mutable int _cached_size_; - + ::std::string* text_; - static const ::std::string _default_text_; + + mutable int _cached_size_; + ::google::protobuf::uint32 _has_bits_[(1 + 31) / 32]; + friend void protobuf_AddDesc_pbrpc_2fPing_2eproto(); friend void protobuf_AssignDesc_pbrpc_2fPing_2eproto(); friend void protobuf_ShutdownFile_pbrpc_2fPing_2eproto(); - - ::google::protobuf::uint32 _has_bits_[(1 + 31) / 32]; - - // WHY DOES & HAVE LOWER PRECEDENCE THAN != !? - inline bool _has_bit(int index) const { - return (_has_bits_[index / 32] & (1u << (index % 32))) != 0; - } - inline void _set_bit(int index) { - _has_bits_[index / 32] |= (1u << (index % 32)); - } - inline void _clear_bit(int index) { - _has_bits_[index / 32] &= ~(1u << (index % 32)); - } - + void InitAsDefaultInstance(); static PingResponse_PingResult* default_instance_; }; @@ -242,29 +232,29 @@ class PingResponse_PingError : public ::google::protobuf::Message { public: PingResponse_PingError(); virtual ~PingResponse_PingError(); - + PingResponse_PingError(const PingResponse_PingError& from); - + inline PingResponse_PingError& operator=(const PingResponse_PingError& from) { CopyFrom(from); return *this; } - + inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const { return _unknown_fields_; } - + inline ::google::protobuf::UnknownFieldSet* mutable_unknown_fields() { return &_unknown_fields_; } - + static const ::google::protobuf::Descriptor* descriptor(); static const PingResponse_PingError& default_instance(); - + void Swap(PingResponse_PingError* other); - + // implements Message ---------------------------------------------- - + PingResponse_PingError* New() const; void CopyFrom(const ::google::protobuf::Message& from); void MergeFrom(const ::google::protobuf::Message& from); @@ -272,7 +262,7 @@ class PingResponse_PingError : public ::google::protobuf::Message { void MergeFrom(const PingResponse_PingError& from); void Clear(); bool IsInitialized() const; - + int ByteSize() const; bool MergePartialFromCodedStream( ::google::protobuf::io::CodedInputStream* input); @@ -285,13 +275,13 @@ class PingResponse_PingError : public ::google::protobuf::Message { void SharedDtor(); void SetCachedSize(int size) const; public: - + ::google::protobuf::Metadata GetMetadata() const; - + // nested types ---------------------------------------------------- - + // accessors ------------------------------------------------------- - + // required string errorMessage = 1; inline bool has_errormessage() const; inline void clear_errormessage(); @@ -301,31 +291,25 @@ class PingResponse_PingError : public ::google::protobuf::Message { inline void set_errormessage(const char* value); inline void set_errormessage(const char* value, size_t size); inline ::std::string* mutable_errormessage(); - + inline ::std::string* release_errormessage(); + inline void set_allocated_errormessage(::std::string* errormessage); + // @@protoc_insertion_point(class_scope:xtreemfs.pbrpc.PingResponse.PingError) private: + inline void set_has_errormessage(); + inline void clear_has_errormessage(); + ::google::protobuf::UnknownFieldSet _unknown_fields_; - mutable int _cached_size_; - + ::std::string* errormessage_; - static const ::std::string _default_errormessage_; + + mutable int _cached_size_; + ::google::protobuf::uint32 _has_bits_[(1 + 31) / 32]; + friend void protobuf_AddDesc_pbrpc_2fPing_2eproto(); friend void protobuf_AssignDesc_pbrpc_2fPing_2eproto(); friend void protobuf_ShutdownFile_pbrpc_2fPing_2eproto(); - - ::google::protobuf::uint32 _has_bits_[(1 + 31) / 32]; - - // WHY DOES & HAVE LOWER PRECEDENCE THAN != !? - inline bool _has_bit(int index) const { - return (_has_bits_[index / 32] & (1u << (index % 32))) != 0; - } - inline void _set_bit(int index) { - _has_bits_[index / 32] |= (1u << (index % 32)); - } - inline void _clear_bit(int index) { - _has_bits_[index / 32] &= ~(1u << (index % 32)); - } - + void InitAsDefaultInstance(); static PingResponse_PingError* default_instance_; }; @@ -335,29 +319,29 @@ class PingResponse : public ::google::protobuf::Message { public: PingResponse(); virtual ~PingResponse(); - + PingResponse(const PingResponse& from); - + inline PingResponse& operator=(const PingResponse& from) { CopyFrom(from); return *this; } - + inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const { return _unknown_fields_; } - + inline ::google::protobuf::UnknownFieldSet* mutable_unknown_fields() { return &_unknown_fields_; } - + static const ::google::protobuf::Descriptor* descriptor(); static const PingResponse& default_instance(); - + void Swap(PingResponse* other); - + // implements Message ---------------------------------------------- - + PingResponse* New() const; void CopyFrom(const ::google::protobuf::Message& from); void MergeFrom(const ::google::protobuf::Message& from); @@ -365,7 +349,7 @@ class PingResponse : public ::google::protobuf::Message { void MergeFrom(const PingResponse& from); void Clear(); bool IsInitialized() const; - + int ByteSize() const; bool MergePartialFromCodedStream( ::google::protobuf::io::CodedInputStream* input); @@ -378,54 +362,53 @@ class PingResponse : public ::google::protobuf::Message { void SharedDtor(); void SetCachedSize(int size) const; public: - + ::google::protobuf::Metadata GetMetadata() const; - + // nested types ---------------------------------------------------- - + typedef PingResponse_PingResult PingResult; typedef PingResponse_PingError PingError; - + // accessors ------------------------------------------------------- - + // optional .xtreemfs.pbrpc.PingResponse.PingResult result = 1; inline bool has_result() const; inline void clear_result(); static const int kResultFieldNumber = 1; inline const ::xtreemfs::pbrpc::PingResponse_PingResult& result() const; inline ::xtreemfs::pbrpc::PingResponse_PingResult* mutable_result(); - + inline ::xtreemfs::pbrpc::PingResponse_PingResult* release_result(); + inline void set_allocated_result(::xtreemfs::pbrpc::PingResponse_PingResult* result); + // optional .xtreemfs.pbrpc.PingResponse.PingError error = 2; inline bool has_error() const; inline void clear_error(); static const int kErrorFieldNumber = 2; inline const ::xtreemfs::pbrpc::PingResponse_PingError& error() const; inline ::xtreemfs::pbrpc::PingResponse_PingError* mutable_error(); - + inline ::xtreemfs::pbrpc::PingResponse_PingError* release_error(); + inline void set_allocated_error(::xtreemfs::pbrpc::PingResponse_PingError* error); + // @@protoc_insertion_point(class_scope:xtreemfs.pbrpc.PingResponse) private: + inline void set_has_result(); + inline void clear_has_result(); + inline void set_has_error(); + inline void clear_has_error(); + ::google::protobuf::UnknownFieldSet _unknown_fields_; - mutable int _cached_size_; - + ::xtreemfs::pbrpc::PingResponse_PingResult* result_; ::xtreemfs::pbrpc::PingResponse_PingError* error_; + + mutable int _cached_size_; + ::google::protobuf::uint32 _has_bits_[(2 + 31) / 32]; + friend void protobuf_AddDesc_pbrpc_2fPing_2eproto(); friend void protobuf_AssignDesc_pbrpc_2fPing_2eproto(); friend void protobuf_ShutdownFile_pbrpc_2fPing_2eproto(); - - ::google::protobuf::uint32 _has_bits_[(2 + 31) / 32]; - - // WHY DOES & HAVE LOWER PRECEDENCE THAN != !? - inline bool _has_bit(int index) const { - return (_has_bits_[index / 32] & (1u << (index % 32))) != 0; - } - inline void _set_bit(int index) { - _has_bits_[index / 32] |= (1u << (index % 32)); - } - inline void _clear_bit(int index) { - _has_bits_[index / 32] &= ~(1u << (index % 32)); - } - + void InitAsDefaultInstance(); static PingResponse* default_instance_; }; @@ -435,29 +418,29 @@ class Ping_emptyRequest : public ::google::protobuf::Message { public: Ping_emptyRequest(); virtual ~Ping_emptyRequest(); - + Ping_emptyRequest(const Ping_emptyRequest& from); - + inline Ping_emptyRequest& operator=(const Ping_emptyRequest& from) { CopyFrom(from); return *this; } - + inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const { return _unknown_fields_; } - + inline ::google::protobuf::UnknownFieldSet* mutable_unknown_fields() { return &_unknown_fields_; } - + static const ::google::protobuf::Descriptor* descriptor(); static const Ping_emptyRequest& default_instance(); - + void Swap(Ping_emptyRequest* other); - + // implements Message ---------------------------------------------- - + Ping_emptyRequest* New() const; void CopyFrom(const ::google::protobuf::Message& from); void MergeFrom(const ::google::protobuf::Message& from); @@ -465,7 +448,7 @@ class Ping_emptyRequest : public ::google::protobuf::Message { void MergeFrom(const Ping_emptyRequest& from); void Clear(); bool IsInitialized() const; - + int ByteSize() const; bool MergePartialFromCodedStream( ::google::protobuf::io::CodedInputStream* input); @@ -478,35 +461,26 @@ class Ping_emptyRequest : public ::google::protobuf::Message { void SharedDtor(); void SetCachedSize(int size) const; public: - + ::google::protobuf::Metadata GetMetadata() const; - + // nested types ---------------------------------------------------- - + // accessors ------------------------------------------------------- - + // @@protoc_insertion_point(class_scope:xtreemfs.pbrpc.Ping_emptyRequest) private: + ::google::protobuf::UnknownFieldSet _unknown_fields_; + + mutable int _cached_size_; - + ::google::protobuf::uint32 _has_bits_[1]; + friend void protobuf_AddDesc_pbrpc_2fPing_2eproto(); friend void protobuf_AssignDesc_pbrpc_2fPing_2eproto(); friend void protobuf_ShutdownFile_pbrpc_2fPing_2eproto(); - - ::google::protobuf::uint32 _has_bits_[1]; - - // WHY DOES & HAVE LOWER PRECEDENCE THAN != !? - inline bool _has_bit(int index) const { - return (_has_bits_[index / 32] & (1u << (index % 32))) != 0; - } - inline void _set_bit(int index) { - _has_bits_[index / 32] |= (1u << (index % 32)); - } - inline void _clear_bit(int index) { - _has_bits_[index / 32] &= ~(1u << (index % 32)); - } - + void InitAsDefaultInstance(); static Ping_emptyRequest* default_instance_; }; @@ -516,29 +490,29 @@ class Ping_emptyResponse : public ::google::protobuf::Message { public: Ping_emptyResponse(); virtual ~Ping_emptyResponse(); - + Ping_emptyResponse(const Ping_emptyResponse& from); - + inline Ping_emptyResponse& operator=(const Ping_emptyResponse& from) { CopyFrom(from); return *this; } - + inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const { return _unknown_fields_; } - + inline ::google::protobuf::UnknownFieldSet* mutable_unknown_fields() { return &_unknown_fields_; } - + static const ::google::protobuf::Descriptor* descriptor(); static const Ping_emptyResponse& default_instance(); - + void Swap(Ping_emptyResponse* other); - + // implements Message ---------------------------------------------- - + Ping_emptyResponse* New() const; void CopyFrom(const ::google::protobuf::Message& from); void MergeFrom(const ::google::protobuf::Message& from); @@ -546,7 +520,7 @@ class Ping_emptyResponse : public ::google::protobuf::Message { void MergeFrom(const Ping_emptyResponse& from); void Clear(); bool IsInitialized() const; - + int ByteSize() const; bool MergePartialFromCodedStream( ::google::protobuf::io::CodedInputStream* input); @@ -559,107 +533,31 @@ class Ping_emptyResponse : public ::google::protobuf::Message { void SharedDtor(); void SetCachedSize(int size) const; public: - + ::google::protobuf::Metadata GetMetadata() const; - + // nested types ---------------------------------------------------- - + // accessors ------------------------------------------------------- - + // @@protoc_insertion_point(class_scope:xtreemfs.pbrpc.Ping_emptyResponse) private: + ::google::protobuf::UnknownFieldSet _unknown_fields_; + + mutable int _cached_size_; - + ::google::protobuf::uint32 _has_bits_[1]; + friend void protobuf_AddDesc_pbrpc_2fPing_2eproto(); friend void protobuf_AssignDesc_pbrpc_2fPing_2eproto(); friend void protobuf_ShutdownFile_pbrpc_2fPing_2eproto(); - - ::google::protobuf::uint32 _has_bits_[1]; - - // WHY DOES & HAVE LOWER PRECEDENCE THAN != !? - inline bool _has_bit(int index) const { - return (_has_bits_[index / 32] & (1u << (index % 32))) != 0; - } - inline void _set_bit(int index) { - _has_bits_[index / 32] |= (1u << (index % 32)); - } - inline void _clear_bit(int index) { - _has_bits_[index / 32] &= ~(1u << (index % 32)); - } - + void InitAsDefaultInstance(); static Ping_emptyResponse* default_instance_; }; // =================================================================== -class PingService_Stub; - -class PingService : public ::google::protobuf::Service { - protected: - // This class should be treated as an abstract interface. - inline PingService() {}; - public: - virtual ~PingService(); - - typedef PingService_Stub Stub; - - static const ::google::protobuf::ServiceDescriptor* descriptor(); - - virtual void doPing(::google::protobuf::RpcController* controller, - const ::xtreemfs::pbrpc::PingRequest* request, - ::xtreemfs::pbrpc::PingResponse* response, - ::google::protobuf::Closure* done); - virtual void emptyPing(::google::protobuf::RpcController* controller, - const ::xtreemfs::pbrpc::Ping_emptyRequest* request, - ::xtreemfs::pbrpc::Ping_emptyResponse* response, - ::google::protobuf::Closure* done); - - // implements Service ---------------------------------------------- - - const ::google::protobuf::ServiceDescriptor* GetDescriptor(); - void CallMethod(const ::google::protobuf::MethodDescriptor* method, - ::google::protobuf::RpcController* controller, - const ::google::protobuf::Message* request, - ::google::protobuf::Message* response, - ::google::protobuf::Closure* done); - const ::google::protobuf::Message& GetRequestPrototype( - const ::google::protobuf::MethodDescriptor* method) const; - const ::google::protobuf::Message& GetResponsePrototype( - const ::google::protobuf::MethodDescriptor* method) const; - - private: - GOOGLE_DISALLOW_EVIL_CONSTRUCTORS(PingService); -}; - -class PingService_Stub : public PingService { - public: - PingService_Stub(::google::protobuf::RpcChannel* channel); - PingService_Stub(::google::protobuf::RpcChannel* channel, - ::google::protobuf::Service::ChannelOwnership ownership); - ~PingService_Stub(); - - inline ::google::protobuf::RpcChannel* channel() { return channel_; } - - // implements PingService ------------------------------------------ - - void doPing(::google::protobuf::RpcController* controller, - const ::xtreemfs::pbrpc::PingRequest* request, - ::xtreemfs::pbrpc::PingResponse* response, - ::google::protobuf::Closure* done); - void emptyPing(::google::protobuf::RpcController* controller, - const ::xtreemfs::pbrpc::Ping_emptyRequest* request, - ::xtreemfs::pbrpc::Ping_emptyResponse* response, - ::google::protobuf::Closure* done); - private: - ::google::protobuf::RpcChannel* channel_; - bool owns_channel_; - GOOGLE_DISALLOW_EVIL_CONSTRUCTORS(PingService_Stub); -}; - - -// =================================================================== - // =================================================================== @@ -667,59 +565,93 @@ class PingService_Stub : public PingService { // required string text = 1; inline bool PingRequest::has_text() const { - return _has_bit(0); + return (_has_bits_[0] & 0x00000001u) != 0; +} +inline void PingRequest::set_has_text() { + _has_bits_[0] |= 0x00000001u; +} +inline void PingRequest::clear_has_text() { + _has_bits_[0] &= ~0x00000001u; } inline void PingRequest::clear_text() { - if (text_ != &_default_text_) { + if (text_ != &::google::protobuf::internal::kEmptyString) { text_->clear(); } - _clear_bit(0); + clear_has_text(); } inline const ::std::string& PingRequest::text() const { return *text_; } inline void PingRequest::set_text(const ::std::string& value) { - _set_bit(0); - if (text_ == &_default_text_) { + set_has_text(); + if (text_ == &::google::protobuf::internal::kEmptyString) { text_ = new ::std::string; } text_->assign(value); } inline void PingRequest::set_text(const char* value) { - _set_bit(0); - if (text_ == &_default_text_) { + set_has_text(); + if (text_ == &::google::protobuf::internal::kEmptyString) { text_ = new ::std::string; } text_->assign(value); } inline void PingRequest::set_text(const char* value, size_t size) { - _set_bit(0); - if (text_ == &_default_text_) { + set_has_text(); + if (text_ == &::google::protobuf::internal::kEmptyString) { text_ = new ::std::string; } text_->assign(reinterpret_cast(value), size); } inline ::std::string* PingRequest::mutable_text() { - _set_bit(0); - if (text_ == &_default_text_) { + set_has_text(); + if (text_ == &::google::protobuf::internal::kEmptyString) { text_ = new ::std::string; } return text_; } +inline ::std::string* PingRequest::release_text() { + clear_has_text(); + if (text_ == &::google::protobuf::internal::kEmptyString) { + return NULL; + } else { + ::std::string* temp = text_; + text_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + return temp; + } +} +inline void PingRequest::set_allocated_text(::std::string* text) { + if (text_ != &::google::protobuf::internal::kEmptyString) { + delete text_; + } + if (text) { + set_has_text(); + text_ = text; + } else { + clear_has_text(); + text_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + } +} // required bool sendError = 2; inline bool PingRequest::has_senderror() const { - return _has_bit(1); + return (_has_bits_[0] & 0x00000002u) != 0; +} +inline void PingRequest::set_has_senderror() { + _has_bits_[0] |= 0x00000002u; +} +inline void PingRequest::clear_has_senderror() { + _has_bits_[0] &= ~0x00000002u; } inline void PingRequest::clear_senderror() { senderror_ = false; - _clear_bit(1); + clear_has_senderror(); } inline bool PingRequest::senderror() const { return senderror_; } inline void PingRequest::set_senderror(bool value) { - _set_bit(1); + set_has_senderror(); senderror_ = value; } @@ -729,45 +661,73 @@ inline void PingRequest::set_senderror(bool value) { // required string text = 1; inline bool PingResponse_PingResult::has_text() const { - return _has_bit(0); + return (_has_bits_[0] & 0x00000001u) != 0; +} +inline void PingResponse_PingResult::set_has_text() { + _has_bits_[0] |= 0x00000001u; +} +inline void PingResponse_PingResult::clear_has_text() { + _has_bits_[0] &= ~0x00000001u; } inline void PingResponse_PingResult::clear_text() { - if (text_ != &_default_text_) { + if (text_ != &::google::protobuf::internal::kEmptyString) { text_->clear(); } - _clear_bit(0); + clear_has_text(); } inline const ::std::string& PingResponse_PingResult::text() const { return *text_; } inline void PingResponse_PingResult::set_text(const ::std::string& value) { - _set_bit(0); - if (text_ == &_default_text_) { + set_has_text(); + if (text_ == &::google::protobuf::internal::kEmptyString) { text_ = new ::std::string; } text_->assign(value); } inline void PingResponse_PingResult::set_text(const char* value) { - _set_bit(0); - if (text_ == &_default_text_) { + set_has_text(); + if (text_ == &::google::protobuf::internal::kEmptyString) { text_ = new ::std::string; } text_->assign(value); } inline void PingResponse_PingResult::set_text(const char* value, size_t size) { - _set_bit(0); - if (text_ == &_default_text_) { + set_has_text(); + if (text_ == &::google::protobuf::internal::kEmptyString) { text_ = new ::std::string; } text_->assign(reinterpret_cast(value), size); } inline ::std::string* PingResponse_PingResult::mutable_text() { - _set_bit(0); - if (text_ == &_default_text_) { + set_has_text(); + if (text_ == &::google::protobuf::internal::kEmptyString) { text_ = new ::std::string; } return text_; } +inline ::std::string* PingResponse_PingResult::release_text() { + clear_has_text(); + if (text_ == &::google::protobuf::internal::kEmptyString) { + return NULL; + } else { + ::std::string* temp = text_; + text_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + return temp; + } +} +inline void PingResponse_PingResult::set_allocated_text(::std::string* text) { + if (text_ != &::google::protobuf::internal::kEmptyString) { + delete text_; + } + if (text) { + set_has_text(); + text_ = text; + } else { + clear_has_text(); + text_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + } +} // ------------------------------------------------------------------- @@ -775,45 +735,73 @@ inline ::std::string* PingResponse_PingResult::mutable_text() { // required string errorMessage = 1; inline bool PingResponse_PingError::has_errormessage() const { - return _has_bit(0); + return (_has_bits_[0] & 0x00000001u) != 0; +} +inline void PingResponse_PingError::set_has_errormessage() { + _has_bits_[0] |= 0x00000001u; +} +inline void PingResponse_PingError::clear_has_errormessage() { + _has_bits_[0] &= ~0x00000001u; } inline void PingResponse_PingError::clear_errormessage() { - if (errormessage_ != &_default_errormessage_) { + if (errormessage_ != &::google::protobuf::internal::kEmptyString) { errormessage_->clear(); } - _clear_bit(0); + clear_has_errormessage(); } inline const ::std::string& PingResponse_PingError::errormessage() const { return *errormessage_; } inline void PingResponse_PingError::set_errormessage(const ::std::string& value) { - _set_bit(0); - if (errormessage_ == &_default_errormessage_) { + set_has_errormessage(); + if (errormessage_ == &::google::protobuf::internal::kEmptyString) { errormessage_ = new ::std::string; } errormessage_->assign(value); } inline void PingResponse_PingError::set_errormessage(const char* value) { - _set_bit(0); - if (errormessage_ == &_default_errormessage_) { + set_has_errormessage(); + if (errormessage_ == &::google::protobuf::internal::kEmptyString) { errormessage_ = new ::std::string; } errormessage_->assign(value); } inline void PingResponse_PingError::set_errormessage(const char* value, size_t size) { - _set_bit(0); - if (errormessage_ == &_default_errormessage_) { + set_has_errormessage(); + if (errormessage_ == &::google::protobuf::internal::kEmptyString) { errormessage_ = new ::std::string; } errormessage_->assign(reinterpret_cast(value), size); } inline ::std::string* PingResponse_PingError::mutable_errormessage() { - _set_bit(0); - if (errormessage_ == &_default_errormessage_) { + set_has_errormessage(); + if (errormessage_ == &::google::protobuf::internal::kEmptyString) { errormessage_ = new ::std::string; } return errormessage_; } +inline ::std::string* PingResponse_PingError::release_errormessage() { + clear_has_errormessage(); + if (errormessage_ == &::google::protobuf::internal::kEmptyString) { + return NULL; + } else { + ::std::string* temp = errormessage_; + errormessage_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + return temp; + } +} +inline void PingResponse_PingError::set_allocated_errormessage(::std::string* errormessage) { + if (errormessage_ != &::google::protobuf::internal::kEmptyString) { + delete errormessage_; + } + if (errormessage) { + set_has_errormessage(); + errormessage_ = errormessage; + } else { + clear_has_errormessage(); + errormessage_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + } +} // ------------------------------------------------------------------- @@ -821,37 +809,79 @@ inline ::std::string* PingResponse_PingError::mutable_errormessage() { // optional .xtreemfs.pbrpc.PingResponse.PingResult result = 1; inline bool PingResponse::has_result() const { - return _has_bit(0); + return (_has_bits_[0] & 0x00000001u) != 0; +} +inline void PingResponse::set_has_result() { + _has_bits_[0] |= 0x00000001u; +} +inline void PingResponse::clear_has_result() { + _has_bits_[0] &= ~0x00000001u; } inline void PingResponse::clear_result() { if (result_ != NULL) result_->::xtreemfs::pbrpc::PingResponse_PingResult::Clear(); - _clear_bit(0); + clear_has_result(); } inline const ::xtreemfs::pbrpc::PingResponse_PingResult& PingResponse::result() const { return result_ != NULL ? *result_ : *default_instance_->result_; } inline ::xtreemfs::pbrpc::PingResponse_PingResult* PingResponse::mutable_result() { - _set_bit(0); + set_has_result(); if (result_ == NULL) result_ = new ::xtreemfs::pbrpc::PingResponse_PingResult; return result_; } +inline ::xtreemfs::pbrpc::PingResponse_PingResult* PingResponse::release_result() { + clear_has_result(); + ::xtreemfs::pbrpc::PingResponse_PingResult* temp = result_; + result_ = NULL; + return temp; +} +inline void PingResponse::set_allocated_result(::xtreemfs::pbrpc::PingResponse_PingResult* result) { + delete result_; + result_ = result; + if (result) { + set_has_result(); + } else { + clear_has_result(); + } +} // optional .xtreemfs.pbrpc.PingResponse.PingError error = 2; inline bool PingResponse::has_error() const { - return _has_bit(1); + return (_has_bits_[0] & 0x00000002u) != 0; +} +inline void PingResponse::set_has_error() { + _has_bits_[0] |= 0x00000002u; +} +inline void PingResponse::clear_has_error() { + _has_bits_[0] &= ~0x00000002u; } inline void PingResponse::clear_error() { if (error_ != NULL) error_->::xtreemfs::pbrpc::PingResponse_PingError::Clear(); - _clear_bit(1); + clear_has_error(); } inline const ::xtreemfs::pbrpc::PingResponse_PingError& PingResponse::error() const { return error_ != NULL ? *error_ : *default_instance_->error_; } inline ::xtreemfs::pbrpc::PingResponse_PingError* PingResponse::mutable_error() { - _set_bit(1); + set_has_error(); if (error_ == NULL) error_ = new ::xtreemfs::pbrpc::PingResponse_PingError; return error_; } +inline ::xtreemfs::pbrpc::PingResponse_PingError* PingResponse::release_error() { + clear_has_error(); + ::xtreemfs::pbrpc::PingResponse_PingError* temp = error_; + error_ = NULL; + return temp; +} +inline void PingResponse::set_allocated_error(::xtreemfs::pbrpc::PingResponse_PingError* error) { + delete error_; + error_ = error; + if (error) { + set_has_error(); + } else { + clear_has_error(); + } +} // ------------------------------------------------------------------- diff --git a/cpp/generated/pbrpc/PingServiceClient.h b/cpp/generated/pbrpc/PingServiceClient.h index a428d997d..82a546ffc 100644 --- a/cpp/generated/pbrpc/PingServiceClient.h +++ b/cpp/generated/pbrpc/PingServiceClient.h @@ -1,4 +1,4 @@ -//automatically generated from Ping.proto at Thu Mar 21 17:09:47 CET 2013 +//automatically generated from Ping.proto at Mon Nov 11 11:47:00 CET 2013 //(c) 2013. See LICENSE file for details. #ifndef PINGSERVICECLIENT_H diff --git a/cpp/generated/pbrpc/PingServiceConstants.h b/cpp/generated/pbrpc/PingServiceConstants.h index d01d47d7b..e659f0cd4 100644 --- a/cpp/generated/pbrpc/PingServiceConstants.h +++ b/cpp/generated/pbrpc/PingServiceConstants.h @@ -1,4 +1,4 @@ -//automatically generated from Ping.proto at Thu Mar 21 17:09:47 CET 2013 +//automatically generated from Ping.proto at Mon Nov 11 11:47:00 CET 2013 //(c) 2013. See LICENSE file for details. #ifndef PINGSERVICECONSTANTS_H_ diff --git a/cpp/generated/pbrpc/RPC.pb.cc b/cpp/generated/pbrpc/RPC.pb.cc index bb8168e29..6787fd799 100644 --- a/cpp/generated/pbrpc/RPC.pb.cc +++ b/cpp/generated/pbrpc/RPC.pb.cc @@ -1,11 +1,17 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! +// source: pbrpc/RPC.proto #define INTERNAL_SUPPRESS_PROTOBUF_FIELD_DEPRECATION #include "pbrpc/RPC.pb.h" + +#include + +#include #include #include #include #include +#include #include #include // @@protoc_insertion_point(includes) @@ -212,8 +218,8 @@ void protobuf_AddDesc_pbrpc_2fRPC_2eproto() { "eemfs.pbrpc.AuthPassword\022\021\n\tauth_data\030\002 " "\001(\014\"\270\004\n\tRPCHeader\022\017\n\007call_id\030\001 \002(\007\0221\n\014me" "ssage_type\030\002 \002(\0162\033.xtreemfs.pbrpc.Messag" - "eType\022?\n\016request_header\030\003 \001(\0132\'.xtreemfs" - ".pbrpc.RPCHeader.RequestHeader\022?\n\016error_" + "eType\022\?\n\016request_header\030\003 \001(\0132\'.xtreemfs" + ".pbrpc.RPCHeader.RequestHeader\022\?\n\016error_" "response\030\004 \001(\0132\'.xtreemfs.pbrpc.RPCHeade" "r.ErrorResponse\032\224\001\n\rRequestHeader\022\024\n\014int" "erface_id\030\001 \002(\007\022\017\n\007proc_id\030\002 \002(\007\0223\n\nuser" @@ -266,7 +272,6 @@ struct StaticDescriptorInitializer_pbrpc_2fRPC_2eproto { protobuf_AddDesc_pbrpc_2fRPC_2eproto(); } } static_descriptor_initializer_pbrpc_2fRPC_2eproto_; - const ::google::protobuf::EnumDescriptor* MessageType_descriptor() { protobuf_AssignDescriptorsOnce(); return MessageType_descriptor_; @@ -346,7 +351,6 @@ bool POSIXErrno_IsValid(int value) { // =================================================================== -const ::std::string UserCredentials::_default_username_; #ifndef _MSC_VER const int UserCredentials::kUsernameFieldNumber; const int UserCredentials::kGroupsFieldNumber; @@ -368,7 +372,7 @@ UserCredentials::UserCredentials(const UserCredentials& from) void UserCredentials::SharedCtor() { _cached_size_ = 0; - username_ = const_cast< ::std::string*>(&_default_username_); + username_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); ::memset(_has_bits_, 0, sizeof(_has_bits_)); } @@ -377,7 +381,7 @@ UserCredentials::~UserCredentials() { } void UserCredentials::SharedDtor() { - if (username_ != &_default_username_) { + if (username_ != &::google::protobuf::internal::kEmptyString) { delete username_; } if (this != default_instance_) { @@ -395,7 +399,8 @@ const ::google::protobuf::Descriptor* UserCredentials::descriptor() { } const UserCredentials& UserCredentials::default_instance() { - if (default_instance_ == NULL) protobuf_AddDesc_pbrpc_2fRPC_2eproto(); return *default_instance_; + if (default_instance_ == NULL) protobuf_AddDesc_pbrpc_2fRPC_2eproto(); + return *default_instance_; } UserCredentials* UserCredentials::default_instance_ = NULL; @@ -406,8 +411,8 @@ UserCredentials* UserCredentials::New() const { void UserCredentials::Clear() { if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) { - if (_has_bit(0)) { - if (username_ != &_default_username_) { + if (has_username()) { + if (username_ != &::google::protobuf::internal::kEmptyString) { username_->clear(); } } @@ -438,7 +443,7 @@ bool UserCredentials::MergePartialFromCodedStream( if (input->ExpectTag(18)) goto parse_groups; break; } - + // repeated string groups = 2; case 2: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -447,7 +452,8 @@ bool UserCredentials::MergePartialFromCodedStream( DO_(::google::protobuf::internal::WireFormatLite::ReadString( input, this->add_groups())); ::google::protobuf::internal::WireFormat::VerifyUTF8String( - this->groups(0).data(), this->groups(0).length(), + this->groups(this->groups_size() - 1).data(), + this->groups(this->groups_size() - 1).length(), ::google::protobuf::internal::WireFormat::PARSE); } else { goto handle_uninterpreted; @@ -456,7 +462,7 @@ bool UserCredentials::MergePartialFromCodedStream( if (input->ExpectAtEnd()) return true; break; } - + default: { handle_uninterpreted: if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -476,14 +482,14 @@ bool UserCredentials::MergePartialFromCodedStream( void UserCredentials::SerializeWithCachedSizes( ::google::protobuf::io::CodedOutputStream* output) const { // required string username = 1; - if (_has_bit(0)) { + if (has_username()) { ::google::protobuf::internal::WireFormat::VerifyUTF8String( this->username().data(), this->username().length(), ::google::protobuf::internal::WireFormat::SERIALIZE); ::google::protobuf::internal::WireFormatLite::WriteString( 1, this->username(), output); } - + // repeated string groups = 2; for (int i = 0; i < this->groups_size(); i++) { ::google::protobuf::internal::WireFormat::VerifyUTF8String( @@ -492,7 +498,7 @@ void UserCredentials::SerializeWithCachedSizes( ::google::protobuf::internal::WireFormatLite::WriteString( 2, this->groups(i), output); } - + if (!unknown_fields().empty()) { ::google::protobuf::internal::WireFormat::SerializeUnknownFields( unknown_fields(), output); @@ -502,7 +508,7 @@ void UserCredentials::SerializeWithCachedSizes( ::google::protobuf::uint8* UserCredentials::SerializeWithCachedSizesToArray( ::google::protobuf::uint8* target) const { // required string username = 1; - if (_has_bit(0)) { + if (has_username()) { ::google::protobuf::internal::WireFormat::VerifyUTF8String( this->username().data(), this->username().length(), ::google::protobuf::internal::WireFormat::SERIALIZE); @@ -510,7 +516,7 @@ void UserCredentials::SerializeWithCachedSizes( ::google::protobuf::internal::WireFormatLite::WriteStringToArray( 1, this->username(), target); } - + // repeated string groups = 2; for (int i = 0; i < this->groups_size(); i++) { ::google::protobuf::internal::WireFormat::VerifyUTF8String( @@ -519,7 +525,7 @@ void UserCredentials::SerializeWithCachedSizes( target = ::google::protobuf::internal::WireFormatLite:: WriteStringToArray(2, this->groups(i), target); } - + if (!unknown_fields().empty()) { target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray( unknown_fields(), target); @@ -529,7 +535,7 @@ void UserCredentials::SerializeWithCachedSizes( int UserCredentials::ByteSize() const { int total_size = 0; - + if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) { // required string username = 1; if (has_username()) { @@ -537,7 +543,7 @@ int UserCredentials::ByteSize() const { ::google::protobuf::internal::WireFormatLite::StringSize( this->username()); } - + } // repeated string groups = 2; total_size += 1 * this->groups_size(); @@ -545,7 +551,7 @@ int UserCredentials::ByteSize() const { total_size += ::google::protobuf::internal::WireFormatLite::StringSize( this->groups(i)); } - + if (!unknown_fields().empty()) { total_size += ::google::protobuf::internal::WireFormat::ComputeUnknownFieldsSize( @@ -573,7 +579,7 @@ void UserCredentials::MergeFrom(const UserCredentials& from) { GOOGLE_CHECK_NE(&from, this); groups_.MergeFrom(from.groups_); if (from._has_bits_[0 / 32] & (0xffu << (0 % 32))) { - if (from._has_bit(0)) { + if (from.has_username()) { set_username(from.username()); } } @@ -594,7 +600,7 @@ void UserCredentials::CopyFrom(const UserCredentials& from) { bool UserCredentials::IsInitialized() const { if ((_has_bits_[0] & 0x00000001) != 0x00000001) return false; - + return true; } @@ -619,7 +625,6 @@ void UserCredentials::Swap(UserCredentials* other) { // =================================================================== -const ::std::string AuthPassword::_default_password_; #ifndef _MSC_VER const int AuthPassword::kPasswordFieldNumber; #endif // !_MSC_VER @@ -640,7 +645,7 @@ AuthPassword::AuthPassword(const AuthPassword& from) void AuthPassword::SharedCtor() { _cached_size_ = 0; - password_ = const_cast< ::std::string*>(&_default_password_); + password_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); ::memset(_has_bits_, 0, sizeof(_has_bits_)); } @@ -649,7 +654,7 @@ AuthPassword::~AuthPassword() { } void AuthPassword::SharedDtor() { - if (password_ != &_default_password_) { + if (password_ != &::google::protobuf::internal::kEmptyString) { delete password_; } if (this != default_instance_) { @@ -667,7 +672,8 @@ const ::google::protobuf::Descriptor* AuthPassword::descriptor() { } const AuthPassword& AuthPassword::default_instance() { - if (default_instance_ == NULL) protobuf_AddDesc_pbrpc_2fRPC_2eproto(); return *default_instance_; + if (default_instance_ == NULL) protobuf_AddDesc_pbrpc_2fRPC_2eproto(); + return *default_instance_; } AuthPassword* AuthPassword::default_instance_ = NULL; @@ -678,8 +684,8 @@ AuthPassword* AuthPassword::New() const { void AuthPassword::Clear() { if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) { - if (_has_bit(0)) { - if (password_ != &_default_password_) { + if (has_password()) { + if (password_ != &::google::protobuf::internal::kEmptyString) { password_->clear(); } } @@ -709,7 +715,7 @@ bool AuthPassword::MergePartialFromCodedStream( if (input->ExpectAtEnd()) return true; break; } - + default: { handle_uninterpreted: if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -729,14 +735,14 @@ bool AuthPassword::MergePartialFromCodedStream( void AuthPassword::SerializeWithCachedSizes( ::google::protobuf::io::CodedOutputStream* output) const { // required string password = 1; - if (_has_bit(0)) { + if (has_password()) { ::google::protobuf::internal::WireFormat::VerifyUTF8String( this->password().data(), this->password().length(), ::google::protobuf::internal::WireFormat::SERIALIZE); ::google::protobuf::internal::WireFormatLite::WriteString( 1, this->password(), output); } - + if (!unknown_fields().empty()) { ::google::protobuf::internal::WireFormat::SerializeUnknownFields( unknown_fields(), output); @@ -746,7 +752,7 @@ void AuthPassword::SerializeWithCachedSizes( ::google::protobuf::uint8* AuthPassword::SerializeWithCachedSizesToArray( ::google::protobuf::uint8* target) const { // required string password = 1; - if (_has_bit(0)) { + if (has_password()) { ::google::protobuf::internal::WireFormat::VerifyUTF8String( this->password().data(), this->password().length(), ::google::protobuf::internal::WireFormat::SERIALIZE); @@ -754,7 +760,7 @@ void AuthPassword::SerializeWithCachedSizes( ::google::protobuf::internal::WireFormatLite::WriteStringToArray( 1, this->password(), target); } - + if (!unknown_fields().empty()) { target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray( unknown_fields(), target); @@ -764,7 +770,7 @@ void AuthPassword::SerializeWithCachedSizes( int AuthPassword::ByteSize() const { int total_size = 0; - + if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) { // required string password = 1; if (has_password()) { @@ -772,7 +778,7 @@ int AuthPassword::ByteSize() const { ::google::protobuf::internal::WireFormatLite::StringSize( this->password()); } - + } if (!unknown_fields().empty()) { total_size += @@ -800,7 +806,7 @@ void AuthPassword::MergeFrom(const ::google::protobuf::Message& from) { void AuthPassword::MergeFrom(const AuthPassword& from) { GOOGLE_CHECK_NE(&from, this); if (from._has_bits_[0 / 32] & (0xffu << (0 % 32))) { - if (from._has_bit(0)) { + if (from.has_password()) { set_password(from.password()); } } @@ -821,7 +827,7 @@ void AuthPassword::CopyFrom(const AuthPassword& from) { bool AuthPassword::IsInitialized() const { if ((_has_bits_[0] & 0x00000001) != 0x00000001) return false; - + return true; } @@ -845,7 +851,6 @@ void AuthPassword::Swap(AuthPassword* other) { // =================================================================== -const ::std::string Auth::_default_auth_data_; #ifndef _MSC_VER const int Auth::kAuthTypeFieldNumber; const int Auth::kAuthPasswdFieldNumber; @@ -871,7 +876,7 @@ void Auth::SharedCtor() { _cached_size_ = 0; auth_type_ = 0; auth_passwd_ = NULL; - auth_data_ = const_cast< ::std::string*>(&_default_auth_data_); + auth_data_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); ::memset(_has_bits_, 0, sizeof(_has_bits_)); } @@ -880,7 +885,7 @@ Auth::~Auth() { } void Auth::SharedDtor() { - if (auth_data_ != &_default_auth_data_) { + if (auth_data_ != &::google::protobuf::internal::kEmptyString) { delete auth_data_; } if (this != default_instance_) { @@ -899,7 +904,8 @@ const ::google::protobuf::Descriptor* Auth::descriptor() { } const Auth& Auth::default_instance() { - if (default_instance_ == NULL) protobuf_AddDesc_pbrpc_2fRPC_2eproto(); return *default_instance_; + if (default_instance_ == NULL) protobuf_AddDesc_pbrpc_2fRPC_2eproto(); + return *default_instance_; } Auth* Auth::default_instance_ = NULL; @@ -911,11 +917,11 @@ Auth* Auth::New() const { void Auth::Clear() { if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) { auth_type_ = 0; - if (_has_bit(1)) { + if (has_auth_passwd()) { if (auth_passwd_ != NULL) auth_passwd_->::xtreemfs::pbrpc::AuthPassword::Clear(); } - if (_has_bit(2)) { - if (auth_data_ != &_default_auth_data_) { + if (has_auth_data()) { + if (auth_data_ != &::google::protobuf::internal::kEmptyString) { auth_data_->clear(); } } @@ -938,8 +944,8 @@ bool Auth::MergePartialFromCodedStream( DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive< int, ::google::protobuf::internal::WireFormatLite::TYPE_ENUM>( input, &value))); - if (xtreemfs::pbrpc::AuthType_IsValid(value)) { - set_auth_type(static_cast< xtreemfs::pbrpc::AuthType >(value)); + if (::xtreemfs::pbrpc::AuthType_IsValid(value)) { + set_auth_type(static_cast< ::xtreemfs::pbrpc::AuthType >(value)); } else { mutable_unknown_fields()->AddVarint(1, value); } @@ -949,7 +955,7 @@ bool Auth::MergePartialFromCodedStream( if (input->ExpectTag(18)) goto parse_auth_data; break; } - + // optional bytes auth_data = 2; case 2: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -963,7 +969,7 @@ bool Auth::MergePartialFromCodedStream( if (input->ExpectTag(26)) goto parse_auth_passwd; break; } - + // optional .xtreemfs.pbrpc.AuthPassword auth_passwd = 3; case 3: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -977,7 +983,7 @@ bool Auth::MergePartialFromCodedStream( if (input->ExpectAtEnd()) return true; break; } - + default: { handle_uninterpreted: if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -997,23 +1003,23 @@ bool Auth::MergePartialFromCodedStream( void Auth::SerializeWithCachedSizes( ::google::protobuf::io::CodedOutputStream* output) const { // required .xtreemfs.pbrpc.AuthType auth_type = 1; - if (_has_bit(0)) { + if (has_auth_type()) { ::google::protobuf::internal::WireFormatLite::WriteEnum( 1, this->auth_type(), output); } - + // optional bytes auth_data = 2; - if (_has_bit(2)) { + if (has_auth_data()) { ::google::protobuf::internal::WireFormatLite::WriteBytes( 2, this->auth_data(), output); } - + // optional .xtreemfs.pbrpc.AuthPassword auth_passwd = 3; - if (_has_bit(1)) { + if (has_auth_passwd()) { ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray( 3, this->auth_passwd(), output); } - + if (!unknown_fields().empty()) { ::google::protobuf::internal::WireFormat::SerializeUnknownFields( unknown_fields(), output); @@ -1023,25 +1029,25 @@ void Auth::SerializeWithCachedSizes( ::google::protobuf::uint8* Auth::SerializeWithCachedSizesToArray( ::google::protobuf::uint8* target) const { // required .xtreemfs.pbrpc.AuthType auth_type = 1; - if (_has_bit(0)) { + if (has_auth_type()) { target = ::google::protobuf::internal::WireFormatLite::WriteEnumToArray( 1, this->auth_type(), target); } - + // optional bytes auth_data = 2; - if (_has_bit(2)) { + if (has_auth_data()) { target = ::google::protobuf::internal::WireFormatLite::WriteBytesToArray( 2, this->auth_data(), target); } - + // optional .xtreemfs.pbrpc.AuthPassword auth_passwd = 3; - if (_has_bit(1)) { + if (has_auth_passwd()) { target = ::google::protobuf::internal::WireFormatLite:: WriteMessageNoVirtualToArray( 3, this->auth_passwd(), target); } - + if (!unknown_fields().empty()) { target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray( unknown_fields(), target); @@ -1051,28 +1057,28 @@ void Auth::SerializeWithCachedSizes( int Auth::ByteSize() const { int total_size = 0; - + if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) { // required .xtreemfs.pbrpc.AuthType auth_type = 1; if (has_auth_type()) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::EnumSize(this->auth_type()); } - + // optional .xtreemfs.pbrpc.AuthPassword auth_passwd = 3; if (has_auth_passwd()) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::MessageSizeNoVirtual( this->auth_passwd()); } - + // optional bytes auth_data = 2; if (has_auth_data()) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::BytesSize( this->auth_data()); } - + } if (!unknown_fields().empty()) { total_size += @@ -1100,13 +1106,13 @@ void Auth::MergeFrom(const ::google::protobuf::Message& from) { void Auth::MergeFrom(const Auth& from) { GOOGLE_CHECK_NE(&from, this); if (from._has_bits_[0 / 32] & (0xffu << (0 % 32))) { - if (from._has_bit(0)) { + if (from.has_auth_type()) { set_auth_type(from.auth_type()); } - if (from._has_bit(1)) { + if (from.has_auth_passwd()) { mutable_auth_passwd()->::xtreemfs::pbrpc::AuthPassword::MergeFrom(from.auth_passwd()); } - if (from._has_bit(2)) { + if (from.has_auth_data()) { set_auth_data(from.auth_data()); } } @@ -1127,7 +1133,7 @@ void Auth::CopyFrom(const Auth& from) { bool Auth::IsInitialized() const { if ((_has_bits_[0] & 0x00000001) != 0x00000001) return false; - + if (has_auth_passwd()) { if (!this->auth_passwd().IsInitialized()) return false; } @@ -1210,7 +1216,8 @@ const ::google::protobuf::Descriptor* RPCHeader_RequestHeader::descriptor() { } const RPCHeader_RequestHeader& RPCHeader_RequestHeader::default_instance() { - if (default_instance_ == NULL) protobuf_AddDesc_pbrpc_2fRPC_2eproto(); return *default_instance_; + if (default_instance_ == NULL) protobuf_AddDesc_pbrpc_2fRPC_2eproto(); + return *default_instance_; } RPCHeader_RequestHeader* RPCHeader_RequestHeader::default_instance_ = NULL; @@ -1223,10 +1230,10 @@ void RPCHeader_RequestHeader::Clear() { if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) { interface_id_ = 0u; proc_id_ = 0u; - if (_has_bit(2)) { + if (has_user_creds()) { if (user_creds_ != NULL) user_creds_->::xtreemfs::pbrpc::UserCredentials::Clear(); } - if (_has_bit(3)) { + if (has_auth_data()) { if (auth_data_ != NULL) auth_data_->::xtreemfs::pbrpc::Auth::Clear(); } } @@ -1247,14 +1254,14 @@ bool RPCHeader_RequestHeader::MergePartialFromCodedStream( DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive< ::google::protobuf::uint32, ::google::protobuf::internal::WireFormatLite::TYPE_FIXED32>( input, &interface_id_))); - _set_bit(0); + set_has_interface_id(); } else { goto handle_uninterpreted; } if (input->ExpectTag(21)) goto parse_proc_id; break; } - + // required fixed32 proc_id = 2; case 2: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -1263,14 +1270,14 @@ bool RPCHeader_RequestHeader::MergePartialFromCodedStream( DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive< ::google::protobuf::uint32, ::google::protobuf::internal::WireFormatLite::TYPE_FIXED32>( input, &proc_id_))); - _set_bit(1); + set_has_proc_id(); } else { goto handle_uninterpreted; } if (input->ExpectTag(26)) goto parse_user_creds; break; } - + // required .xtreemfs.pbrpc.UserCredentials user_creds = 3; case 3: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -1284,7 +1291,7 @@ bool RPCHeader_RequestHeader::MergePartialFromCodedStream( if (input->ExpectTag(34)) goto parse_auth_data; break; } - + // required .xtreemfs.pbrpc.Auth auth_data = 4; case 4: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -1298,7 +1305,7 @@ bool RPCHeader_RequestHeader::MergePartialFromCodedStream( if (input->ExpectAtEnd()) return true; break; } - + default: { handle_uninterpreted: if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -1318,27 +1325,27 @@ bool RPCHeader_RequestHeader::MergePartialFromCodedStream( void RPCHeader_RequestHeader::SerializeWithCachedSizes( ::google::protobuf::io::CodedOutputStream* output) const { // required fixed32 interface_id = 1; - if (_has_bit(0)) { + if (has_interface_id()) { ::google::protobuf::internal::WireFormatLite::WriteFixed32(1, this->interface_id(), output); } - + // required fixed32 proc_id = 2; - if (_has_bit(1)) { + if (has_proc_id()) { ::google::protobuf::internal::WireFormatLite::WriteFixed32(2, this->proc_id(), output); } - + // required .xtreemfs.pbrpc.UserCredentials user_creds = 3; - if (_has_bit(2)) { + if (has_user_creds()) { ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray( 3, this->user_creds(), output); } - + // required .xtreemfs.pbrpc.Auth auth_data = 4; - if (_has_bit(3)) { + if (has_auth_data()) { ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray( 4, this->auth_data(), output); } - + if (!unknown_fields().empty()) { ::google::protobuf::internal::WireFormat::SerializeUnknownFields( unknown_fields(), output); @@ -1348,29 +1355,29 @@ void RPCHeader_RequestHeader::SerializeWithCachedSizes( ::google::protobuf::uint8* RPCHeader_RequestHeader::SerializeWithCachedSizesToArray( ::google::protobuf::uint8* target) const { // required fixed32 interface_id = 1; - if (_has_bit(0)) { + if (has_interface_id()) { target = ::google::protobuf::internal::WireFormatLite::WriteFixed32ToArray(1, this->interface_id(), target); } - + // required fixed32 proc_id = 2; - if (_has_bit(1)) { + if (has_proc_id()) { target = ::google::protobuf::internal::WireFormatLite::WriteFixed32ToArray(2, this->proc_id(), target); } - + // required .xtreemfs.pbrpc.UserCredentials user_creds = 3; - if (_has_bit(2)) { + if (has_user_creds()) { target = ::google::protobuf::internal::WireFormatLite:: WriteMessageNoVirtualToArray( 3, this->user_creds(), target); } - + // required .xtreemfs.pbrpc.Auth auth_data = 4; - if (_has_bit(3)) { + if (has_auth_data()) { target = ::google::protobuf::internal::WireFormatLite:: WriteMessageNoVirtualToArray( 4, this->auth_data(), target); } - + if (!unknown_fields().empty()) { target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray( unknown_fields(), target); @@ -1380,32 +1387,32 @@ void RPCHeader_RequestHeader::SerializeWithCachedSizes( int RPCHeader_RequestHeader::ByteSize() const { int total_size = 0; - + if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) { // required fixed32 interface_id = 1; if (has_interface_id()) { total_size += 1 + 4; } - + // required fixed32 proc_id = 2; if (has_proc_id()) { total_size += 1 + 4; } - + // required .xtreemfs.pbrpc.UserCredentials user_creds = 3; if (has_user_creds()) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::MessageSizeNoVirtual( this->user_creds()); } - + // required .xtreemfs.pbrpc.Auth auth_data = 4; if (has_auth_data()) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::MessageSizeNoVirtual( this->auth_data()); } - + } if (!unknown_fields().empty()) { total_size += @@ -1433,16 +1440,16 @@ void RPCHeader_RequestHeader::MergeFrom(const ::google::protobuf::Message& from) void RPCHeader_RequestHeader::MergeFrom(const RPCHeader_RequestHeader& from) { GOOGLE_CHECK_NE(&from, this); if (from._has_bits_[0 / 32] & (0xffu << (0 % 32))) { - if (from._has_bit(0)) { + if (from.has_interface_id()) { set_interface_id(from.interface_id()); } - if (from._has_bit(1)) { + if (from.has_proc_id()) { set_proc_id(from.proc_id()); } - if (from._has_bit(2)) { + if (from.has_user_creds()) { mutable_user_creds()->::xtreemfs::pbrpc::UserCredentials::MergeFrom(from.user_creds()); } - if (from._has_bit(3)) { + if (from.has_auth_data()) { mutable_auth_data()->::xtreemfs::pbrpc::Auth::MergeFrom(from.auth_data()); } } @@ -1463,7 +1470,7 @@ void RPCHeader_RequestHeader::CopyFrom(const RPCHeader_RequestHeader& from) { bool RPCHeader_RequestHeader::IsInitialized() const { if ((_has_bits_[0] & 0x0000000f) != 0x0000000f) return false; - + if (has_user_creds()) { if (!this->user_creds().IsInitialized()) return false; } @@ -1496,9 +1503,6 @@ void RPCHeader_RequestHeader::Swap(RPCHeader_RequestHeader* other) { // ------------------------------------------------------------------- -const ::std::string RPCHeader_ErrorResponse::_default_error_message_; -const ::std::string RPCHeader_ErrorResponse::_default_debug_info_; -const ::std::string RPCHeader_ErrorResponse::_default_redirect_to_server_uuid_; #ifndef _MSC_VER const int RPCHeader_ErrorResponse::kErrorTypeFieldNumber; const int RPCHeader_ErrorResponse::kPosixErrnoFieldNumber; @@ -1525,9 +1529,9 @@ void RPCHeader_ErrorResponse::SharedCtor() { _cached_size_ = 0; error_type_ = 1; posix_errno_ = 9999; - error_message_ = const_cast< ::std::string*>(&_default_error_message_); - debug_info_ = const_cast< ::std::string*>(&_default_debug_info_); - redirect_to_server_uuid_ = const_cast< ::std::string*>(&_default_redirect_to_server_uuid_); + error_message_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + debug_info_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + redirect_to_server_uuid_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); ::memset(_has_bits_, 0, sizeof(_has_bits_)); } @@ -1536,13 +1540,13 @@ RPCHeader_ErrorResponse::~RPCHeader_ErrorResponse() { } void RPCHeader_ErrorResponse::SharedDtor() { - if (error_message_ != &_default_error_message_) { + if (error_message_ != &::google::protobuf::internal::kEmptyString) { delete error_message_; } - if (debug_info_ != &_default_debug_info_) { + if (debug_info_ != &::google::protobuf::internal::kEmptyString) { delete debug_info_; } - if (redirect_to_server_uuid_ != &_default_redirect_to_server_uuid_) { + if (redirect_to_server_uuid_ != &::google::protobuf::internal::kEmptyString) { delete redirect_to_server_uuid_; } if (this != default_instance_) { @@ -1560,7 +1564,8 @@ const ::google::protobuf::Descriptor* RPCHeader_ErrorResponse::descriptor() { } const RPCHeader_ErrorResponse& RPCHeader_ErrorResponse::default_instance() { - if (default_instance_ == NULL) protobuf_AddDesc_pbrpc_2fRPC_2eproto(); return *default_instance_; + if (default_instance_ == NULL) protobuf_AddDesc_pbrpc_2fRPC_2eproto(); + return *default_instance_; } RPCHeader_ErrorResponse* RPCHeader_ErrorResponse::default_instance_ = NULL; @@ -1573,18 +1578,18 @@ void RPCHeader_ErrorResponse::Clear() { if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) { error_type_ = 1; posix_errno_ = 9999; - if (_has_bit(2)) { - if (error_message_ != &_default_error_message_) { + if (has_error_message()) { + if (error_message_ != &::google::protobuf::internal::kEmptyString) { error_message_->clear(); } } - if (_has_bit(3)) { - if (debug_info_ != &_default_debug_info_) { + if (has_debug_info()) { + if (debug_info_ != &::google::protobuf::internal::kEmptyString) { debug_info_->clear(); } } - if (_has_bit(4)) { - if (redirect_to_server_uuid_ != &_default_redirect_to_server_uuid_) { + if (has_redirect_to_server_uuid()) { + if (redirect_to_server_uuid_ != &::google::protobuf::internal::kEmptyString) { redirect_to_server_uuid_->clear(); } } @@ -1607,8 +1612,8 @@ bool RPCHeader_ErrorResponse::MergePartialFromCodedStream( DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive< int, ::google::protobuf::internal::WireFormatLite::TYPE_ENUM>( input, &value))); - if (xtreemfs::pbrpc::ErrorType_IsValid(value)) { - set_error_type(static_cast< xtreemfs::pbrpc::ErrorType >(value)); + if (::xtreemfs::pbrpc::ErrorType_IsValid(value)) { + set_error_type(static_cast< ::xtreemfs::pbrpc::ErrorType >(value)); } else { mutable_unknown_fields()->AddVarint(1, value); } @@ -1618,7 +1623,7 @@ bool RPCHeader_ErrorResponse::MergePartialFromCodedStream( if (input->ExpectTag(16)) goto parse_posix_errno; break; } - + // optional .xtreemfs.pbrpc.POSIXErrno posix_errno = 2 [default = POSIX_ERROR_NONE]; case 2: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -1628,8 +1633,8 @@ bool RPCHeader_ErrorResponse::MergePartialFromCodedStream( DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive< int, ::google::protobuf::internal::WireFormatLite::TYPE_ENUM>( input, &value))); - if (xtreemfs::pbrpc::POSIXErrno_IsValid(value)) { - set_posix_errno(static_cast< xtreemfs::pbrpc::POSIXErrno >(value)); + if (::xtreemfs::pbrpc::POSIXErrno_IsValid(value)) { + set_posix_errno(static_cast< ::xtreemfs::pbrpc::POSIXErrno >(value)); } else { mutable_unknown_fields()->AddVarint(2, value); } @@ -1639,7 +1644,7 @@ bool RPCHeader_ErrorResponse::MergePartialFromCodedStream( if (input->ExpectTag(26)) goto parse_error_message; break; } - + // optional string error_message = 3; case 3: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -1656,7 +1661,7 @@ bool RPCHeader_ErrorResponse::MergePartialFromCodedStream( if (input->ExpectTag(34)) goto parse_debug_info; break; } - + // optional string debug_info = 4; case 4: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -1673,7 +1678,7 @@ bool RPCHeader_ErrorResponse::MergePartialFromCodedStream( if (input->ExpectTag(42)) goto parse_redirect_to_server_uuid; break; } - + // optional string redirect_to_server_uuid = 5; case 5: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -1690,7 +1695,7 @@ bool RPCHeader_ErrorResponse::MergePartialFromCodedStream( if (input->ExpectAtEnd()) return true; break; } - + default: { handle_uninterpreted: if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -1710,44 +1715,44 @@ bool RPCHeader_ErrorResponse::MergePartialFromCodedStream( void RPCHeader_ErrorResponse::SerializeWithCachedSizes( ::google::protobuf::io::CodedOutputStream* output) const { // required .xtreemfs.pbrpc.ErrorType error_type = 1; - if (_has_bit(0)) { + if (has_error_type()) { ::google::protobuf::internal::WireFormatLite::WriteEnum( 1, this->error_type(), output); } - + // optional .xtreemfs.pbrpc.POSIXErrno posix_errno = 2 [default = POSIX_ERROR_NONE]; - if (_has_bit(1)) { + if (has_posix_errno()) { ::google::protobuf::internal::WireFormatLite::WriteEnum( 2, this->posix_errno(), output); } - + // optional string error_message = 3; - if (_has_bit(2)) { + if (has_error_message()) { ::google::protobuf::internal::WireFormat::VerifyUTF8String( this->error_message().data(), this->error_message().length(), ::google::protobuf::internal::WireFormat::SERIALIZE); ::google::protobuf::internal::WireFormatLite::WriteString( 3, this->error_message(), output); } - + // optional string debug_info = 4; - if (_has_bit(3)) { + if (has_debug_info()) { ::google::protobuf::internal::WireFormat::VerifyUTF8String( this->debug_info().data(), this->debug_info().length(), ::google::protobuf::internal::WireFormat::SERIALIZE); ::google::protobuf::internal::WireFormatLite::WriteString( 4, this->debug_info(), output); } - + // optional string redirect_to_server_uuid = 5; - if (_has_bit(4)) { + if (has_redirect_to_server_uuid()) { ::google::protobuf::internal::WireFormat::VerifyUTF8String( this->redirect_to_server_uuid().data(), this->redirect_to_server_uuid().length(), ::google::protobuf::internal::WireFormat::SERIALIZE); ::google::protobuf::internal::WireFormatLite::WriteString( 5, this->redirect_to_server_uuid(), output); } - + if (!unknown_fields().empty()) { ::google::protobuf::internal::WireFormat::SerializeUnknownFields( unknown_fields(), output); @@ -1757,19 +1762,19 @@ void RPCHeader_ErrorResponse::SerializeWithCachedSizes( ::google::protobuf::uint8* RPCHeader_ErrorResponse::SerializeWithCachedSizesToArray( ::google::protobuf::uint8* target) const { // required .xtreemfs.pbrpc.ErrorType error_type = 1; - if (_has_bit(0)) { + if (has_error_type()) { target = ::google::protobuf::internal::WireFormatLite::WriteEnumToArray( 1, this->error_type(), target); } - + // optional .xtreemfs.pbrpc.POSIXErrno posix_errno = 2 [default = POSIX_ERROR_NONE]; - if (_has_bit(1)) { + if (has_posix_errno()) { target = ::google::protobuf::internal::WireFormatLite::WriteEnumToArray( 2, this->posix_errno(), target); } - + // optional string error_message = 3; - if (_has_bit(2)) { + if (has_error_message()) { ::google::protobuf::internal::WireFormat::VerifyUTF8String( this->error_message().data(), this->error_message().length(), ::google::protobuf::internal::WireFormat::SERIALIZE); @@ -1777,9 +1782,9 @@ void RPCHeader_ErrorResponse::SerializeWithCachedSizes( ::google::protobuf::internal::WireFormatLite::WriteStringToArray( 3, this->error_message(), target); } - + // optional string debug_info = 4; - if (_has_bit(3)) { + if (has_debug_info()) { ::google::protobuf::internal::WireFormat::VerifyUTF8String( this->debug_info().data(), this->debug_info().length(), ::google::protobuf::internal::WireFormat::SERIALIZE); @@ -1787,9 +1792,9 @@ void RPCHeader_ErrorResponse::SerializeWithCachedSizes( ::google::protobuf::internal::WireFormatLite::WriteStringToArray( 4, this->debug_info(), target); } - + // optional string redirect_to_server_uuid = 5; - if (_has_bit(4)) { + if (has_redirect_to_server_uuid()) { ::google::protobuf::internal::WireFormat::VerifyUTF8String( this->redirect_to_server_uuid().data(), this->redirect_to_server_uuid().length(), ::google::protobuf::internal::WireFormat::SERIALIZE); @@ -1797,7 +1802,7 @@ void RPCHeader_ErrorResponse::SerializeWithCachedSizes( ::google::protobuf::internal::WireFormatLite::WriteStringToArray( 5, this->redirect_to_server_uuid(), target); } - + if (!unknown_fields().empty()) { target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray( unknown_fields(), target); @@ -1807,41 +1812,41 @@ void RPCHeader_ErrorResponse::SerializeWithCachedSizes( int RPCHeader_ErrorResponse::ByteSize() const { int total_size = 0; - + if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) { // required .xtreemfs.pbrpc.ErrorType error_type = 1; if (has_error_type()) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::EnumSize(this->error_type()); } - + // optional .xtreemfs.pbrpc.POSIXErrno posix_errno = 2 [default = POSIX_ERROR_NONE]; if (has_posix_errno()) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::EnumSize(this->posix_errno()); } - + // optional string error_message = 3; if (has_error_message()) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::StringSize( this->error_message()); } - + // optional string debug_info = 4; if (has_debug_info()) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::StringSize( this->debug_info()); } - + // optional string redirect_to_server_uuid = 5; if (has_redirect_to_server_uuid()) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::StringSize( this->redirect_to_server_uuid()); } - + } if (!unknown_fields().empty()) { total_size += @@ -1869,19 +1874,19 @@ void RPCHeader_ErrorResponse::MergeFrom(const ::google::protobuf::Message& from) void RPCHeader_ErrorResponse::MergeFrom(const RPCHeader_ErrorResponse& from) { GOOGLE_CHECK_NE(&from, this); if (from._has_bits_[0 / 32] & (0xffu << (0 % 32))) { - if (from._has_bit(0)) { + if (from.has_error_type()) { set_error_type(from.error_type()); } - if (from._has_bit(1)) { + if (from.has_posix_errno()) { set_posix_errno(from.posix_errno()); } - if (from._has_bit(2)) { + if (from.has_error_message()) { set_error_message(from.error_message()); } - if (from._has_bit(3)) { + if (from.has_debug_info()) { set_debug_info(from.debug_info()); } - if (from._has_bit(4)) { + if (from.has_redirect_to_server_uuid()) { set_redirect_to_server_uuid(from.redirect_to_server_uuid()); } } @@ -1902,7 +1907,7 @@ void RPCHeader_ErrorResponse::CopyFrom(const RPCHeader_ErrorResponse& from) { bool RPCHeader_ErrorResponse::IsInitialized() const { if ((_has_bits_[0] & 0x00000001) != 0x00000001) return false; - + return true; } @@ -1984,7 +1989,8 @@ const ::google::protobuf::Descriptor* RPCHeader::descriptor() { } const RPCHeader& RPCHeader::default_instance() { - if (default_instance_ == NULL) protobuf_AddDesc_pbrpc_2fRPC_2eproto(); return *default_instance_; + if (default_instance_ == NULL) protobuf_AddDesc_pbrpc_2fRPC_2eproto(); + return *default_instance_; } RPCHeader* RPCHeader::default_instance_ = NULL; @@ -1997,10 +2003,10 @@ void RPCHeader::Clear() { if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) { call_id_ = 0u; message_type_ = 0; - if (_has_bit(2)) { + if (has_request_header()) { if (request_header_ != NULL) request_header_->::xtreemfs::pbrpc::RPCHeader_RequestHeader::Clear(); } - if (_has_bit(3)) { + if (has_error_response()) { if (error_response_ != NULL) error_response_->::xtreemfs::pbrpc::RPCHeader_ErrorResponse::Clear(); } } @@ -2021,14 +2027,14 @@ bool RPCHeader::MergePartialFromCodedStream( DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive< ::google::protobuf::uint32, ::google::protobuf::internal::WireFormatLite::TYPE_FIXED32>( input, &call_id_))); - _set_bit(0); + set_has_call_id(); } else { goto handle_uninterpreted; } if (input->ExpectTag(16)) goto parse_message_type; break; } - + // required .xtreemfs.pbrpc.MessageType message_type = 2; case 2: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -2038,8 +2044,8 @@ bool RPCHeader::MergePartialFromCodedStream( DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive< int, ::google::protobuf::internal::WireFormatLite::TYPE_ENUM>( input, &value))); - if (xtreemfs::pbrpc::MessageType_IsValid(value)) { - set_message_type(static_cast< xtreemfs::pbrpc::MessageType >(value)); + if (::xtreemfs::pbrpc::MessageType_IsValid(value)) { + set_message_type(static_cast< ::xtreemfs::pbrpc::MessageType >(value)); } else { mutable_unknown_fields()->AddVarint(2, value); } @@ -2049,7 +2055,7 @@ bool RPCHeader::MergePartialFromCodedStream( if (input->ExpectTag(26)) goto parse_request_header; break; } - + // optional .xtreemfs.pbrpc.RPCHeader.RequestHeader request_header = 3; case 3: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -2063,7 +2069,7 @@ bool RPCHeader::MergePartialFromCodedStream( if (input->ExpectTag(34)) goto parse_error_response; break; } - + // optional .xtreemfs.pbrpc.RPCHeader.ErrorResponse error_response = 4; case 4: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -2077,7 +2083,7 @@ bool RPCHeader::MergePartialFromCodedStream( if (input->ExpectAtEnd()) return true; break; } - + default: { handle_uninterpreted: if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -2097,28 +2103,28 @@ bool RPCHeader::MergePartialFromCodedStream( void RPCHeader::SerializeWithCachedSizes( ::google::protobuf::io::CodedOutputStream* output) const { // required fixed32 call_id = 1; - if (_has_bit(0)) { + if (has_call_id()) { ::google::protobuf::internal::WireFormatLite::WriteFixed32(1, this->call_id(), output); } - + // required .xtreemfs.pbrpc.MessageType message_type = 2; - if (_has_bit(1)) { + if (has_message_type()) { ::google::protobuf::internal::WireFormatLite::WriteEnum( 2, this->message_type(), output); } - + // optional .xtreemfs.pbrpc.RPCHeader.RequestHeader request_header = 3; - if (_has_bit(2)) { + if (has_request_header()) { ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray( 3, this->request_header(), output); } - + // optional .xtreemfs.pbrpc.RPCHeader.ErrorResponse error_response = 4; - if (_has_bit(3)) { + if (has_error_response()) { ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray( 4, this->error_response(), output); } - + if (!unknown_fields().empty()) { ::google::protobuf::internal::WireFormat::SerializeUnknownFields( unknown_fields(), output); @@ -2128,30 +2134,30 @@ void RPCHeader::SerializeWithCachedSizes( ::google::protobuf::uint8* RPCHeader::SerializeWithCachedSizesToArray( ::google::protobuf::uint8* target) const { // required fixed32 call_id = 1; - if (_has_bit(0)) { + if (has_call_id()) { target = ::google::protobuf::internal::WireFormatLite::WriteFixed32ToArray(1, this->call_id(), target); } - + // required .xtreemfs.pbrpc.MessageType message_type = 2; - if (_has_bit(1)) { + if (has_message_type()) { target = ::google::protobuf::internal::WireFormatLite::WriteEnumToArray( 2, this->message_type(), target); } - + // optional .xtreemfs.pbrpc.RPCHeader.RequestHeader request_header = 3; - if (_has_bit(2)) { + if (has_request_header()) { target = ::google::protobuf::internal::WireFormatLite:: WriteMessageNoVirtualToArray( 3, this->request_header(), target); } - + // optional .xtreemfs.pbrpc.RPCHeader.ErrorResponse error_response = 4; - if (_has_bit(3)) { + if (has_error_response()) { target = ::google::protobuf::internal::WireFormatLite:: WriteMessageNoVirtualToArray( 4, this->error_response(), target); } - + if (!unknown_fields().empty()) { target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray( unknown_fields(), target); @@ -2161,33 +2167,33 @@ void RPCHeader::SerializeWithCachedSizes( int RPCHeader::ByteSize() const { int total_size = 0; - + if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) { // required fixed32 call_id = 1; if (has_call_id()) { total_size += 1 + 4; } - + // required .xtreemfs.pbrpc.MessageType message_type = 2; if (has_message_type()) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::EnumSize(this->message_type()); } - + // optional .xtreemfs.pbrpc.RPCHeader.RequestHeader request_header = 3; if (has_request_header()) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::MessageSizeNoVirtual( this->request_header()); } - + // optional .xtreemfs.pbrpc.RPCHeader.ErrorResponse error_response = 4; if (has_error_response()) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::MessageSizeNoVirtual( this->error_response()); } - + } if (!unknown_fields().empty()) { total_size += @@ -2215,16 +2221,16 @@ void RPCHeader::MergeFrom(const ::google::protobuf::Message& from) { void RPCHeader::MergeFrom(const RPCHeader& from) { GOOGLE_CHECK_NE(&from, this); if (from._has_bits_[0 / 32] & (0xffu << (0 % 32))) { - if (from._has_bit(0)) { + if (from.has_call_id()) { set_call_id(from.call_id()); } - if (from._has_bit(1)) { + if (from.has_message_type()) { set_message_type(from.message_type()); } - if (from._has_bit(2)) { + if (from.has_request_header()) { mutable_request_header()->::xtreemfs::pbrpc::RPCHeader_RequestHeader::MergeFrom(from.request_header()); } - if (from._has_bit(3)) { + if (from.has_error_response()) { mutable_error_response()->::xtreemfs::pbrpc::RPCHeader_ErrorResponse::MergeFrom(from.error_response()); } } @@ -2245,7 +2251,7 @@ void RPCHeader::CopyFrom(const RPCHeader& from) { bool RPCHeader::IsInitialized() const { if ((_has_bits_[0] & 0x00000003) != 0x00000003) return false; - + if (has_request_header()) { if (!this->request_header().IsInitialized()) return false; } diff --git a/cpp/generated/pbrpc/RPC.pb.h b/cpp/generated/pbrpc/RPC.pb.h index 5d1b0991a..822cd5b44 100644 --- a/cpp/generated/pbrpc/RPC.pb.h +++ b/cpp/generated/pbrpc/RPC.pb.h @@ -8,21 +8,23 @@ #include -#if GOOGLE_PROTOBUF_VERSION < 2003000 +#if GOOGLE_PROTOBUF_VERSION < 2005000 #error This file was generated by a newer version of protoc which is #error incompatible with your Protocol Buffer headers. Please update #error your headers. #endif -#if 2003000 < GOOGLE_PROTOBUF_MIN_PROTOC_VERSION +#if 2005000 < GOOGLE_PROTOBUF_MIN_PROTOC_VERSION #error This file was generated by an older version of protoc which is #error incompatible with your Protocol Buffer headers. Please #error regenerate this file with a newer version of protoc. #endif #include +#include #include #include -#include +#include +#include // @@protoc_insertion_point(includes) namespace xtreemfs { @@ -142,29 +144,29 @@ class UserCredentials : public ::google::protobuf::Message { public: UserCredentials(); virtual ~UserCredentials(); - + UserCredentials(const UserCredentials& from); - + inline UserCredentials& operator=(const UserCredentials& from) { CopyFrom(from); return *this; } - + inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const { return _unknown_fields_; } - + inline ::google::protobuf::UnknownFieldSet* mutable_unknown_fields() { return &_unknown_fields_; } - + static const ::google::protobuf::Descriptor* descriptor(); static const UserCredentials& default_instance(); - + void Swap(UserCredentials* other); - + // implements Message ---------------------------------------------- - + UserCredentials* New() const; void CopyFrom(const ::google::protobuf::Message& from); void MergeFrom(const ::google::protobuf::Message& from); @@ -172,7 +174,7 @@ class UserCredentials : public ::google::protobuf::Message { void MergeFrom(const UserCredentials& from); void Clear(); bool IsInitialized() const; - + int ByteSize() const; bool MergePartialFromCodedStream( ::google::protobuf::io::CodedInputStream* input); @@ -185,13 +187,13 @@ class UserCredentials : public ::google::protobuf::Message { void SharedDtor(); void SetCachedSize(int size) const; public: - + ::google::protobuf::Metadata GetMetadata() const; - + // nested types ---------------------------------------------------- - + // accessors ------------------------------------------------------- - + // required string username = 1; inline bool has_username() const; inline void clear_username(); @@ -201,7 +203,9 @@ class UserCredentials : public ::google::protobuf::Message { inline void set_username(const char* value); inline void set_username(const char* value, size_t size); inline ::std::string* mutable_username(); - + inline ::std::string* release_username(); + inline void set_allocated_username(::std::string* username); + // repeated string groups = 2; inline int groups_size() const; inline void clear_groups(); @@ -217,32 +221,24 @@ class UserCredentials : public ::google::protobuf::Message { inline void add_groups(const char* value, size_t size); inline const ::google::protobuf::RepeatedPtrField< ::std::string>& groups() const; inline ::google::protobuf::RepeatedPtrField< ::std::string>* mutable_groups(); - + // @@protoc_insertion_point(class_scope:xtreemfs.pbrpc.UserCredentials) private: + inline void set_has_username(); + inline void clear_has_username(); + ::google::protobuf::UnknownFieldSet _unknown_fields_; - mutable int _cached_size_; - + ::std::string* username_; - static const ::std::string _default_username_; ::google::protobuf::RepeatedPtrField< ::std::string> groups_; + + mutable int _cached_size_; + ::google::protobuf::uint32 _has_bits_[(2 + 31) / 32]; + friend void protobuf_AddDesc_pbrpc_2fRPC_2eproto(); friend void protobuf_AssignDesc_pbrpc_2fRPC_2eproto(); friend void protobuf_ShutdownFile_pbrpc_2fRPC_2eproto(); - - ::google::protobuf::uint32 _has_bits_[(2 + 31) / 32]; - - // WHY DOES & HAVE LOWER PRECEDENCE THAN != !? - inline bool _has_bit(int index) const { - return (_has_bits_[index / 32] & (1u << (index % 32))) != 0; - } - inline void _set_bit(int index) { - _has_bits_[index / 32] |= (1u << (index % 32)); - } - inline void _clear_bit(int index) { - _has_bits_[index / 32] &= ~(1u << (index % 32)); - } - + void InitAsDefaultInstance(); static UserCredentials* default_instance_; }; @@ -252,29 +248,29 @@ class AuthPassword : public ::google::protobuf::Message { public: AuthPassword(); virtual ~AuthPassword(); - + AuthPassword(const AuthPassword& from); - + inline AuthPassword& operator=(const AuthPassword& from) { CopyFrom(from); return *this; } - + inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const { return _unknown_fields_; } - + inline ::google::protobuf::UnknownFieldSet* mutable_unknown_fields() { return &_unknown_fields_; } - + static const ::google::protobuf::Descriptor* descriptor(); static const AuthPassword& default_instance(); - + void Swap(AuthPassword* other); - + // implements Message ---------------------------------------------- - + AuthPassword* New() const; void CopyFrom(const ::google::protobuf::Message& from); void MergeFrom(const ::google::protobuf::Message& from); @@ -282,7 +278,7 @@ class AuthPassword : public ::google::protobuf::Message { void MergeFrom(const AuthPassword& from); void Clear(); bool IsInitialized() const; - + int ByteSize() const; bool MergePartialFromCodedStream( ::google::protobuf::io::CodedInputStream* input); @@ -295,13 +291,13 @@ class AuthPassword : public ::google::protobuf::Message { void SharedDtor(); void SetCachedSize(int size) const; public: - + ::google::protobuf::Metadata GetMetadata() const; - + // nested types ---------------------------------------------------- - + // accessors ------------------------------------------------------- - + // required string password = 1; inline bool has_password() const; inline void clear_password(); @@ -311,31 +307,25 @@ class AuthPassword : public ::google::protobuf::Message { inline void set_password(const char* value); inline void set_password(const char* value, size_t size); inline ::std::string* mutable_password(); - + inline ::std::string* release_password(); + inline void set_allocated_password(::std::string* password); + // @@protoc_insertion_point(class_scope:xtreemfs.pbrpc.AuthPassword) private: + inline void set_has_password(); + inline void clear_has_password(); + ::google::protobuf::UnknownFieldSet _unknown_fields_; - mutable int _cached_size_; - + ::std::string* password_; - static const ::std::string _default_password_; + + mutable int _cached_size_; + ::google::protobuf::uint32 _has_bits_[(1 + 31) / 32]; + friend void protobuf_AddDesc_pbrpc_2fRPC_2eproto(); friend void protobuf_AssignDesc_pbrpc_2fRPC_2eproto(); friend void protobuf_ShutdownFile_pbrpc_2fRPC_2eproto(); - - ::google::protobuf::uint32 _has_bits_[(1 + 31) / 32]; - - // WHY DOES & HAVE LOWER PRECEDENCE THAN != !? - inline bool _has_bit(int index) const { - return (_has_bits_[index / 32] & (1u << (index % 32))) != 0; - } - inline void _set_bit(int index) { - _has_bits_[index / 32] |= (1u << (index % 32)); - } - inline void _clear_bit(int index) { - _has_bits_[index / 32] &= ~(1u << (index % 32)); - } - + void InitAsDefaultInstance(); static AuthPassword* default_instance_; }; @@ -345,29 +335,29 @@ class Auth : public ::google::protobuf::Message { public: Auth(); virtual ~Auth(); - + Auth(const Auth& from); - + inline Auth& operator=(const Auth& from) { CopyFrom(from); return *this; } - + inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const { return _unknown_fields_; } - + inline ::google::protobuf::UnknownFieldSet* mutable_unknown_fields() { return &_unknown_fields_; } - + static const ::google::protobuf::Descriptor* descriptor(); static const Auth& default_instance(); - + void Swap(Auth* other); - + // implements Message ---------------------------------------------- - + Auth* New() const; void CopyFrom(const ::google::protobuf::Message& from); void MergeFrom(const ::google::protobuf::Message& from); @@ -375,7 +365,7 @@ class Auth : public ::google::protobuf::Message { void MergeFrom(const Auth& from); void Clear(); bool IsInitialized() const; - + int ByteSize() const; bool MergePartialFromCodedStream( ::google::protobuf::io::CodedInputStream* input); @@ -388,27 +378,29 @@ class Auth : public ::google::protobuf::Message { void SharedDtor(); void SetCachedSize(int size) const; public: - + ::google::protobuf::Metadata GetMetadata() const; - + // nested types ---------------------------------------------------- - + // accessors ------------------------------------------------------- - + // required .xtreemfs.pbrpc.AuthType auth_type = 1; inline bool has_auth_type() const; inline void clear_auth_type(); static const int kAuthTypeFieldNumber = 1; - inline xtreemfs::pbrpc::AuthType auth_type() const; - inline void set_auth_type(xtreemfs::pbrpc::AuthType value); - + inline ::xtreemfs::pbrpc::AuthType auth_type() const; + inline void set_auth_type(::xtreemfs::pbrpc::AuthType value); + // optional .xtreemfs.pbrpc.AuthPassword auth_passwd = 3; inline bool has_auth_passwd() const; inline void clear_auth_passwd(); static const int kAuthPasswdFieldNumber = 3; inline const ::xtreemfs::pbrpc::AuthPassword& auth_passwd() const; inline ::xtreemfs::pbrpc::AuthPassword* mutable_auth_passwd(); - + inline ::xtreemfs::pbrpc::AuthPassword* release_auth_passwd(); + inline void set_allocated_auth_passwd(::xtreemfs::pbrpc::AuthPassword* auth_passwd); + // optional bytes auth_data = 2; inline bool has_auth_data() const; inline void clear_auth_data(); @@ -418,33 +410,31 @@ class Auth : public ::google::protobuf::Message { inline void set_auth_data(const char* value); inline void set_auth_data(const void* value, size_t size); inline ::std::string* mutable_auth_data(); - + inline ::std::string* release_auth_data(); + inline void set_allocated_auth_data(::std::string* auth_data); + // @@protoc_insertion_point(class_scope:xtreemfs.pbrpc.Auth) private: + inline void set_has_auth_type(); + inline void clear_has_auth_type(); + inline void set_has_auth_passwd(); + inline void clear_has_auth_passwd(); + inline void set_has_auth_data(); + inline void clear_has_auth_data(); + ::google::protobuf::UnknownFieldSet _unknown_fields_; - mutable int _cached_size_; - - int auth_type_; + ::xtreemfs::pbrpc::AuthPassword* auth_passwd_; ::std::string* auth_data_; - static const ::std::string _default_auth_data_; + int auth_type_; + + mutable int _cached_size_; + ::google::protobuf::uint32 _has_bits_[(3 + 31) / 32]; + friend void protobuf_AddDesc_pbrpc_2fRPC_2eproto(); friend void protobuf_AssignDesc_pbrpc_2fRPC_2eproto(); friend void protobuf_ShutdownFile_pbrpc_2fRPC_2eproto(); - - ::google::protobuf::uint32 _has_bits_[(3 + 31) / 32]; - - // WHY DOES & HAVE LOWER PRECEDENCE THAN != !? - inline bool _has_bit(int index) const { - return (_has_bits_[index / 32] & (1u << (index % 32))) != 0; - } - inline void _set_bit(int index) { - _has_bits_[index / 32] |= (1u << (index % 32)); - } - inline void _clear_bit(int index) { - _has_bits_[index / 32] &= ~(1u << (index % 32)); - } - + void InitAsDefaultInstance(); static Auth* default_instance_; }; @@ -454,29 +444,29 @@ class RPCHeader_RequestHeader : public ::google::protobuf::Message { public: RPCHeader_RequestHeader(); virtual ~RPCHeader_RequestHeader(); - + RPCHeader_RequestHeader(const RPCHeader_RequestHeader& from); - + inline RPCHeader_RequestHeader& operator=(const RPCHeader_RequestHeader& from) { CopyFrom(from); return *this; } - + inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const { return _unknown_fields_; } - + inline ::google::protobuf::UnknownFieldSet* mutable_unknown_fields() { return &_unknown_fields_; } - + static const ::google::protobuf::Descriptor* descriptor(); static const RPCHeader_RequestHeader& default_instance(); - + void Swap(RPCHeader_RequestHeader* other); - + // implements Message ---------------------------------------------- - + RPCHeader_RequestHeader* New() const; void CopyFrom(const ::google::protobuf::Message& from); void MergeFrom(const ::google::protobuf::Message& from); @@ -484,7 +474,7 @@ class RPCHeader_RequestHeader : public ::google::protobuf::Message { void MergeFrom(const RPCHeader_RequestHeader& from); void Clear(); bool IsInitialized() const; - + int ByteSize() const; bool MergePartialFromCodedStream( ::google::protobuf::io::CodedInputStream* input); @@ -497,67 +487,70 @@ class RPCHeader_RequestHeader : public ::google::protobuf::Message { void SharedDtor(); void SetCachedSize(int size) const; public: - + ::google::protobuf::Metadata GetMetadata() const; - + // nested types ---------------------------------------------------- - + // accessors ------------------------------------------------------- - + // required fixed32 interface_id = 1; inline bool has_interface_id() const; inline void clear_interface_id(); static const int kInterfaceIdFieldNumber = 1; inline ::google::protobuf::uint32 interface_id() const; inline void set_interface_id(::google::protobuf::uint32 value); - + // required fixed32 proc_id = 2; inline bool has_proc_id() const; inline void clear_proc_id(); static const int kProcIdFieldNumber = 2; inline ::google::protobuf::uint32 proc_id() const; inline void set_proc_id(::google::protobuf::uint32 value); - + // required .xtreemfs.pbrpc.UserCredentials user_creds = 3; inline bool has_user_creds() const; inline void clear_user_creds(); static const int kUserCredsFieldNumber = 3; inline const ::xtreemfs::pbrpc::UserCredentials& user_creds() const; inline ::xtreemfs::pbrpc::UserCredentials* mutable_user_creds(); - + inline ::xtreemfs::pbrpc::UserCredentials* release_user_creds(); + inline void set_allocated_user_creds(::xtreemfs::pbrpc::UserCredentials* user_creds); + // required .xtreemfs.pbrpc.Auth auth_data = 4; inline bool has_auth_data() const; inline void clear_auth_data(); static const int kAuthDataFieldNumber = 4; inline const ::xtreemfs::pbrpc::Auth& auth_data() const; inline ::xtreemfs::pbrpc::Auth* mutable_auth_data(); - + inline ::xtreemfs::pbrpc::Auth* release_auth_data(); + inline void set_allocated_auth_data(::xtreemfs::pbrpc::Auth* auth_data); + // @@protoc_insertion_point(class_scope:xtreemfs.pbrpc.RPCHeader.RequestHeader) private: + inline void set_has_interface_id(); + inline void clear_has_interface_id(); + inline void set_has_proc_id(); + inline void clear_has_proc_id(); + inline void set_has_user_creds(); + inline void clear_has_user_creds(); + inline void set_has_auth_data(); + inline void clear_has_auth_data(); + ::google::protobuf::UnknownFieldSet _unknown_fields_; - mutable int _cached_size_; - + ::google::protobuf::uint32 interface_id_; ::google::protobuf::uint32 proc_id_; ::xtreemfs::pbrpc::UserCredentials* user_creds_; ::xtreemfs::pbrpc::Auth* auth_data_; + + mutable int _cached_size_; + ::google::protobuf::uint32 _has_bits_[(4 + 31) / 32]; + friend void protobuf_AddDesc_pbrpc_2fRPC_2eproto(); friend void protobuf_AssignDesc_pbrpc_2fRPC_2eproto(); friend void protobuf_ShutdownFile_pbrpc_2fRPC_2eproto(); - - ::google::protobuf::uint32 _has_bits_[(4 + 31) / 32]; - - // WHY DOES & HAVE LOWER PRECEDENCE THAN != !? - inline bool _has_bit(int index) const { - return (_has_bits_[index / 32] & (1u << (index % 32))) != 0; - } - inline void _set_bit(int index) { - _has_bits_[index / 32] |= (1u << (index % 32)); - } - inline void _clear_bit(int index) { - _has_bits_[index / 32] &= ~(1u << (index % 32)); - } - + void InitAsDefaultInstance(); static RPCHeader_RequestHeader* default_instance_; }; @@ -567,29 +560,29 @@ class RPCHeader_ErrorResponse : public ::google::protobuf::Message { public: RPCHeader_ErrorResponse(); virtual ~RPCHeader_ErrorResponse(); - + RPCHeader_ErrorResponse(const RPCHeader_ErrorResponse& from); - + inline RPCHeader_ErrorResponse& operator=(const RPCHeader_ErrorResponse& from) { CopyFrom(from); return *this; } - + inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const { return _unknown_fields_; } - + inline ::google::protobuf::UnknownFieldSet* mutable_unknown_fields() { return &_unknown_fields_; } - + static const ::google::protobuf::Descriptor* descriptor(); static const RPCHeader_ErrorResponse& default_instance(); - + void Swap(RPCHeader_ErrorResponse* other); - + // implements Message ---------------------------------------------- - + RPCHeader_ErrorResponse* New() const; void CopyFrom(const ::google::protobuf::Message& from); void MergeFrom(const ::google::protobuf::Message& from); @@ -597,7 +590,7 @@ class RPCHeader_ErrorResponse : public ::google::protobuf::Message { void MergeFrom(const RPCHeader_ErrorResponse& from); void Clear(); bool IsInitialized() const; - + int ByteSize() const; bool MergePartialFromCodedStream( ::google::protobuf::io::CodedInputStream* input); @@ -610,27 +603,27 @@ class RPCHeader_ErrorResponse : public ::google::protobuf::Message { void SharedDtor(); void SetCachedSize(int size) const; public: - + ::google::protobuf::Metadata GetMetadata() const; - + // nested types ---------------------------------------------------- - + // accessors ------------------------------------------------------- - + // required .xtreemfs.pbrpc.ErrorType error_type = 1; inline bool has_error_type() const; inline void clear_error_type(); static const int kErrorTypeFieldNumber = 1; - inline xtreemfs::pbrpc::ErrorType error_type() const; - inline void set_error_type(xtreemfs::pbrpc::ErrorType value); - + inline ::xtreemfs::pbrpc::ErrorType error_type() const; + inline void set_error_type(::xtreemfs::pbrpc::ErrorType value); + // optional .xtreemfs.pbrpc.POSIXErrno posix_errno = 2 [default = POSIX_ERROR_NONE]; inline bool has_posix_errno() const; inline void clear_posix_errno(); static const int kPosixErrnoFieldNumber = 2; - inline xtreemfs::pbrpc::POSIXErrno posix_errno() const; - inline void set_posix_errno(xtreemfs::pbrpc::POSIXErrno value); - + inline ::xtreemfs::pbrpc::POSIXErrno posix_errno() const; + inline void set_posix_errno(::xtreemfs::pbrpc::POSIXErrno value); + // optional string error_message = 3; inline bool has_error_message() const; inline void clear_error_message(); @@ -640,7 +633,9 @@ class RPCHeader_ErrorResponse : public ::google::protobuf::Message { inline void set_error_message(const char* value); inline void set_error_message(const char* value, size_t size); inline ::std::string* mutable_error_message(); - + inline ::std::string* release_error_message(); + inline void set_allocated_error_message(::std::string* error_message); + // optional string debug_info = 4; inline bool has_debug_info() const; inline void clear_debug_info(); @@ -650,7 +645,9 @@ class RPCHeader_ErrorResponse : public ::google::protobuf::Message { inline void set_debug_info(const char* value); inline void set_debug_info(const char* value, size_t size); inline ::std::string* mutable_debug_info(); - + inline ::std::string* release_debug_info(); + inline void set_allocated_debug_info(::std::string* debug_info); + // optional string redirect_to_server_uuid = 5; inline bool has_redirect_to_server_uuid() const; inline void clear_redirect_to_server_uuid(); @@ -660,37 +657,37 @@ class RPCHeader_ErrorResponse : public ::google::protobuf::Message { inline void set_redirect_to_server_uuid(const char* value); inline void set_redirect_to_server_uuid(const char* value, size_t size); inline ::std::string* mutable_redirect_to_server_uuid(); - + inline ::std::string* release_redirect_to_server_uuid(); + inline void set_allocated_redirect_to_server_uuid(::std::string* redirect_to_server_uuid); + // @@protoc_insertion_point(class_scope:xtreemfs.pbrpc.RPCHeader.ErrorResponse) private: + inline void set_has_error_type(); + inline void clear_has_error_type(); + inline void set_has_posix_errno(); + inline void clear_has_posix_errno(); + inline void set_has_error_message(); + inline void clear_has_error_message(); + inline void set_has_debug_info(); + inline void clear_has_debug_info(); + inline void set_has_redirect_to_server_uuid(); + inline void clear_has_redirect_to_server_uuid(); + ::google::protobuf::UnknownFieldSet _unknown_fields_; - mutable int _cached_size_; - + int error_type_; int posix_errno_; ::std::string* error_message_; - static const ::std::string _default_error_message_; ::std::string* debug_info_; - static const ::std::string _default_debug_info_; ::std::string* redirect_to_server_uuid_; - static const ::std::string _default_redirect_to_server_uuid_; + + mutable int _cached_size_; + ::google::protobuf::uint32 _has_bits_[(5 + 31) / 32]; + friend void protobuf_AddDesc_pbrpc_2fRPC_2eproto(); friend void protobuf_AssignDesc_pbrpc_2fRPC_2eproto(); friend void protobuf_ShutdownFile_pbrpc_2fRPC_2eproto(); - - ::google::protobuf::uint32 _has_bits_[(5 + 31) / 32]; - - // WHY DOES & HAVE LOWER PRECEDENCE THAN != !? - inline bool _has_bit(int index) const { - return (_has_bits_[index / 32] & (1u << (index % 32))) != 0; - } - inline void _set_bit(int index) { - _has_bits_[index / 32] |= (1u << (index % 32)); - } - inline void _clear_bit(int index) { - _has_bits_[index / 32] &= ~(1u << (index % 32)); - } - + void InitAsDefaultInstance(); static RPCHeader_ErrorResponse* default_instance_; }; @@ -700,29 +697,29 @@ class RPCHeader : public ::google::protobuf::Message { public: RPCHeader(); virtual ~RPCHeader(); - + RPCHeader(const RPCHeader& from); - + inline RPCHeader& operator=(const RPCHeader& from) { CopyFrom(from); return *this; } - + inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const { return _unknown_fields_; } - + inline ::google::protobuf::UnknownFieldSet* mutable_unknown_fields() { return &_unknown_fields_; } - + static const ::google::protobuf::Descriptor* descriptor(); static const RPCHeader& default_instance(); - + void Swap(RPCHeader* other); - + // implements Message ---------------------------------------------- - + RPCHeader* New() const; void CopyFrom(const ::google::protobuf::Message& from); void MergeFrom(const ::google::protobuf::Message& from); @@ -730,7 +727,7 @@ class RPCHeader : public ::google::protobuf::Message { void MergeFrom(const RPCHeader& from); void Clear(); bool IsInitialized() const; - + int ByteSize() const; bool MergePartialFromCodedStream( ::google::protobuf::io::CodedInputStream* input); @@ -743,70 +740,73 @@ class RPCHeader : public ::google::protobuf::Message { void SharedDtor(); void SetCachedSize(int size) const; public: - + ::google::protobuf::Metadata GetMetadata() const; - + // nested types ---------------------------------------------------- - + typedef RPCHeader_RequestHeader RequestHeader; typedef RPCHeader_ErrorResponse ErrorResponse; - + // accessors ------------------------------------------------------- - + // required fixed32 call_id = 1; inline bool has_call_id() const; inline void clear_call_id(); static const int kCallIdFieldNumber = 1; inline ::google::protobuf::uint32 call_id() const; inline void set_call_id(::google::protobuf::uint32 value); - + // required .xtreemfs.pbrpc.MessageType message_type = 2; inline bool has_message_type() const; inline void clear_message_type(); static const int kMessageTypeFieldNumber = 2; - inline xtreemfs::pbrpc::MessageType message_type() const; - inline void set_message_type(xtreemfs::pbrpc::MessageType value); - + inline ::xtreemfs::pbrpc::MessageType message_type() const; + inline void set_message_type(::xtreemfs::pbrpc::MessageType value); + // optional .xtreemfs.pbrpc.RPCHeader.RequestHeader request_header = 3; inline bool has_request_header() const; inline void clear_request_header(); static const int kRequestHeaderFieldNumber = 3; inline const ::xtreemfs::pbrpc::RPCHeader_RequestHeader& request_header() const; inline ::xtreemfs::pbrpc::RPCHeader_RequestHeader* mutable_request_header(); - + inline ::xtreemfs::pbrpc::RPCHeader_RequestHeader* release_request_header(); + inline void set_allocated_request_header(::xtreemfs::pbrpc::RPCHeader_RequestHeader* request_header); + // optional .xtreemfs.pbrpc.RPCHeader.ErrorResponse error_response = 4; inline bool has_error_response() const; inline void clear_error_response(); static const int kErrorResponseFieldNumber = 4; inline const ::xtreemfs::pbrpc::RPCHeader_ErrorResponse& error_response() const; inline ::xtreemfs::pbrpc::RPCHeader_ErrorResponse* mutable_error_response(); - + inline ::xtreemfs::pbrpc::RPCHeader_ErrorResponse* release_error_response(); + inline void set_allocated_error_response(::xtreemfs::pbrpc::RPCHeader_ErrorResponse* error_response); + // @@protoc_insertion_point(class_scope:xtreemfs.pbrpc.RPCHeader) private: + inline void set_has_call_id(); + inline void clear_has_call_id(); + inline void set_has_message_type(); + inline void clear_has_message_type(); + inline void set_has_request_header(); + inline void clear_has_request_header(); + inline void set_has_error_response(); + inline void clear_has_error_response(); + ::google::protobuf::UnknownFieldSet _unknown_fields_; - mutable int _cached_size_; - + ::google::protobuf::uint32 call_id_; int message_type_; ::xtreemfs::pbrpc::RPCHeader_RequestHeader* request_header_; ::xtreemfs::pbrpc::RPCHeader_ErrorResponse* error_response_; + + mutable int _cached_size_; + ::google::protobuf::uint32 _has_bits_[(4 + 31) / 32]; + friend void protobuf_AddDesc_pbrpc_2fRPC_2eproto(); friend void protobuf_AssignDesc_pbrpc_2fRPC_2eproto(); friend void protobuf_ShutdownFile_pbrpc_2fRPC_2eproto(); - - ::google::protobuf::uint32 _has_bits_[(4 + 31) / 32]; - - // WHY DOES & HAVE LOWER PRECEDENCE THAN != !? - inline bool _has_bit(int index) const { - return (_has_bits_[index / 32] & (1u << (index % 32))) != 0; - } - inline void _set_bit(int index) { - _has_bits_[index / 32] |= (1u << (index % 32)); - } - inline void _clear_bit(int index) { - _has_bits_[index / 32] &= ~(1u << (index % 32)); - } - + void InitAsDefaultInstance(); static RPCHeader* default_instance_; }; @@ -819,45 +819,73 @@ class RPCHeader : public ::google::protobuf::Message { // required string username = 1; inline bool UserCredentials::has_username() const { - return _has_bit(0); + return (_has_bits_[0] & 0x00000001u) != 0; +} +inline void UserCredentials::set_has_username() { + _has_bits_[0] |= 0x00000001u; +} +inline void UserCredentials::clear_has_username() { + _has_bits_[0] &= ~0x00000001u; } inline void UserCredentials::clear_username() { - if (username_ != &_default_username_) { + if (username_ != &::google::protobuf::internal::kEmptyString) { username_->clear(); } - _clear_bit(0); + clear_has_username(); } inline const ::std::string& UserCredentials::username() const { return *username_; } inline void UserCredentials::set_username(const ::std::string& value) { - _set_bit(0); - if (username_ == &_default_username_) { + set_has_username(); + if (username_ == &::google::protobuf::internal::kEmptyString) { username_ = new ::std::string; } username_->assign(value); } inline void UserCredentials::set_username(const char* value) { - _set_bit(0); - if (username_ == &_default_username_) { + set_has_username(); + if (username_ == &::google::protobuf::internal::kEmptyString) { username_ = new ::std::string; } username_->assign(value); } inline void UserCredentials::set_username(const char* value, size_t size) { - _set_bit(0); - if (username_ == &_default_username_) { + set_has_username(); + if (username_ == &::google::protobuf::internal::kEmptyString) { username_ = new ::std::string; } username_->assign(reinterpret_cast(value), size); } inline ::std::string* UserCredentials::mutable_username() { - _set_bit(0); - if (username_ == &_default_username_) { + set_has_username(); + if (username_ == &::google::protobuf::internal::kEmptyString) { username_ = new ::std::string; } return username_; } +inline ::std::string* UserCredentials::release_username() { + clear_has_username(); + if (username_ == &::google::protobuf::internal::kEmptyString) { + return NULL; + } else { + ::std::string* temp = username_; + username_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + return temp; + } +} +inline void UserCredentials::set_allocated_username(::std::string* username) { + if (username_ != &::google::protobuf::internal::kEmptyString) { + delete username_; + } + if (username) { + set_has_username(); + username_ = username; + } else { + clear_has_username(); + username_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + } +} // repeated string groups = 2; inline int UserCredentials::groups_size() const { @@ -909,45 +937,73 @@ UserCredentials::mutable_groups() { // required string password = 1; inline bool AuthPassword::has_password() const { - return _has_bit(0); + return (_has_bits_[0] & 0x00000001u) != 0; +} +inline void AuthPassword::set_has_password() { + _has_bits_[0] |= 0x00000001u; +} +inline void AuthPassword::clear_has_password() { + _has_bits_[0] &= ~0x00000001u; } inline void AuthPassword::clear_password() { - if (password_ != &_default_password_) { + if (password_ != &::google::protobuf::internal::kEmptyString) { password_->clear(); } - _clear_bit(0); + clear_has_password(); } inline const ::std::string& AuthPassword::password() const { return *password_; } inline void AuthPassword::set_password(const ::std::string& value) { - _set_bit(0); - if (password_ == &_default_password_) { + set_has_password(); + if (password_ == &::google::protobuf::internal::kEmptyString) { password_ = new ::std::string; } password_->assign(value); } inline void AuthPassword::set_password(const char* value) { - _set_bit(0); - if (password_ == &_default_password_) { + set_has_password(); + if (password_ == &::google::protobuf::internal::kEmptyString) { password_ = new ::std::string; } password_->assign(value); } inline void AuthPassword::set_password(const char* value, size_t size) { - _set_bit(0); - if (password_ == &_default_password_) { + set_has_password(); + if (password_ == &::google::protobuf::internal::kEmptyString) { password_ = new ::std::string; } password_->assign(reinterpret_cast(value), size); } inline ::std::string* AuthPassword::mutable_password() { - _set_bit(0); - if (password_ == &_default_password_) { + set_has_password(); + if (password_ == &::google::protobuf::internal::kEmptyString) { password_ = new ::std::string; } return password_; } +inline ::std::string* AuthPassword::release_password() { + clear_has_password(); + if (password_ == &::google::protobuf::internal::kEmptyString) { + return NULL; + } else { + ::std::string* temp = password_; + password_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + return temp; + } +} +inline void AuthPassword::set_allocated_password(::std::string* password) { + if (password_ != &::google::protobuf::internal::kEmptyString) { + delete password_; + } + if (password) { + set_has_password(); + password_ = password; + } else { + clear_has_password(); + password_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + } +} // ------------------------------------------------------------------- @@ -955,79 +1011,134 @@ inline ::std::string* AuthPassword::mutable_password() { // required .xtreemfs.pbrpc.AuthType auth_type = 1; inline bool Auth::has_auth_type() const { - return _has_bit(0); + return (_has_bits_[0] & 0x00000001u) != 0; +} +inline void Auth::set_has_auth_type() { + _has_bits_[0] |= 0x00000001u; +} +inline void Auth::clear_has_auth_type() { + _has_bits_[0] &= ~0x00000001u; } inline void Auth::clear_auth_type() { auth_type_ = 0; - _clear_bit(0); + clear_has_auth_type(); } -inline xtreemfs::pbrpc::AuthType Auth::auth_type() const { - return static_cast< xtreemfs::pbrpc::AuthType >(auth_type_); +inline ::xtreemfs::pbrpc::AuthType Auth::auth_type() const { + return static_cast< ::xtreemfs::pbrpc::AuthType >(auth_type_); } -inline void Auth::set_auth_type(xtreemfs::pbrpc::AuthType value) { - GOOGLE_DCHECK(xtreemfs::pbrpc::AuthType_IsValid(value)); - _set_bit(0); +inline void Auth::set_auth_type(::xtreemfs::pbrpc::AuthType value) { + assert(::xtreemfs::pbrpc::AuthType_IsValid(value)); + set_has_auth_type(); auth_type_ = value; } // optional .xtreemfs.pbrpc.AuthPassword auth_passwd = 3; inline bool Auth::has_auth_passwd() const { - return _has_bit(1); + return (_has_bits_[0] & 0x00000002u) != 0; +} +inline void Auth::set_has_auth_passwd() { + _has_bits_[0] |= 0x00000002u; +} +inline void Auth::clear_has_auth_passwd() { + _has_bits_[0] &= ~0x00000002u; } inline void Auth::clear_auth_passwd() { if (auth_passwd_ != NULL) auth_passwd_->::xtreemfs::pbrpc::AuthPassword::Clear(); - _clear_bit(1); + clear_has_auth_passwd(); } inline const ::xtreemfs::pbrpc::AuthPassword& Auth::auth_passwd() const { return auth_passwd_ != NULL ? *auth_passwd_ : *default_instance_->auth_passwd_; } inline ::xtreemfs::pbrpc::AuthPassword* Auth::mutable_auth_passwd() { - _set_bit(1); + set_has_auth_passwd(); if (auth_passwd_ == NULL) auth_passwd_ = new ::xtreemfs::pbrpc::AuthPassword; return auth_passwd_; } +inline ::xtreemfs::pbrpc::AuthPassword* Auth::release_auth_passwd() { + clear_has_auth_passwd(); + ::xtreemfs::pbrpc::AuthPassword* temp = auth_passwd_; + auth_passwd_ = NULL; + return temp; +} +inline void Auth::set_allocated_auth_passwd(::xtreemfs::pbrpc::AuthPassword* auth_passwd) { + delete auth_passwd_; + auth_passwd_ = auth_passwd; + if (auth_passwd) { + set_has_auth_passwd(); + } else { + clear_has_auth_passwd(); + } +} // optional bytes auth_data = 2; inline bool Auth::has_auth_data() const { - return _has_bit(2); + return (_has_bits_[0] & 0x00000004u) != 0; +} +inline void Auth::set_has_auth_data() { + _has_bits_[0] |= 0x00000004u; +} +inline void Auth::clear_has_auth_data() { + _has_bits_[0] &= ~0x00000004u; } inline void Auth::clear_auth_data() { - if (auth_data_ != &_default_auth_data_) { + if (auth_data_ != &::google::protobuf::internal::kEmptyString) { auth_data_->clear(); } - _clear_bit(2); + clear_has_auth_data(); } inline const ::std::string& Auth::auth_data() const { return *auth_data_; } inline void Auth::set_auth_data(const ::std::string& value) { - _set_bit(2); - if (auth_data_ == &_default_auth_data_) { + set_has_auth_data(); + if (auth_data_ == &::google::protobuf::internal::kEmptyString) { auth_data_ = new ::std::string; } auth_data_->assign(value); } inline void Auth::set_auth_data(const char* value) { - _set_bit(2); - if (auth_data_ == &_default_auth_data_) { + set_has_auth_data(); + if (auth_data_ == &::google::protobuf::internal::kEmptyString) { auth_data_ = new ::std::string; } auth_data_->assign(value); } inline void Auth::set_auth_data(const void* value, size_t size) { - _set_bit(2); - if (auth_data_ == &_default_auth_data_) { + set_has_auth_data(); + if (auth_data_ == &::google::protobuf::internal::kEmptyString) { auth_data_ = new ::std::string; } auth_data_->assign(reinterpret_cast(value), size); } inline ::std::string* Auth::mutable_auth_data() { - _set_bit(2); - if (auth_data_ == &_default_auth_data_) { + set_has_auth_data(); + if (auth_data_ == &::google::protobuf::internal::kEmptyString) { auth_data_ = new ::std::string; } return auth_data_; } +inline ::std::string* Auth::release_auth_data() { + clear_has_auth_data(); + if (auth_data_ == &::google::protobuf::internal::kEmptyString) { + return NULL; + } else { + ::std::string* temp = auth_data_; + auth_data_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + return temp; + } +} +inline void Auth::set_allocated_auth_data(::std::string* auth_data) { + if (auth_data_ != &::google::protobuf::internal::kEmptyString) { + delete auth_data_; + } + if (auth_data) { + set_has_auth_data(); + auth_data_ = auth_data; + } else { + clear_has_auth_data(); + auth_data_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + } +} // ------------------------------------------------------------------- @@ -1035,69 +1146,123 @@ inline ::std::string* Auth::mutable_auth_data() { // required fixed32 interface_id = 1; inline bool RPCHeader_RequestHeader::has_interface_id() const { - return _has_bit(0); + return (_has_bits_[0] & 0x00000001u) != 0; +} +inline void RPCHeader_RequestHeader::set_has_interface_id() { + _has_bits_[0] |= 0x00000001u; +} +inline void RPCHeader_RequestHeader::clear_has_interface_id() { + _has_bits_[0] &= ~0x00000001u; } inline void RPCHeader_RequestHeader::clear_interface_id() { interface_id_ = 0u; - _clear_bit(0); + clear_has_interface_id(); } inline ::google::protobuf::uint32 RPCHeader_RequestHeader::interface_id() const { return interface_id_; } inline void RPCHeader_RequestHeader::set_interface_id(::google::protobuf::uint32 value) { - _set_bit(0); + set_has_interface_id(); interface_id_ = value; } // required fixed32 proc_id = 2; inline bool RPCHeader_RequestHeader::has_proc_id() const { - return _has_bit(1); + return (_has_bits_[0] & 0x00000002u) != 0; +} +inline void RPCHeader_RequestHeader::set_has_proc_id() { + _has_bits_[0] |= 0x00000002u; +} +inline void RPCHeader_RequestHeader::clear_has_proc_id() { + _has_bits_[0] &= ~0x00000002u; } inline void RPCHeader_RequestHeader::clear_proc_id() { proc_id_ = 0u; - _clear_bit(1); + clear_has_proc_id(); } inline ::google::protobuf::uint32 RPCHeader_RequestHeader::proc_id() const { return proc_id_; } inline void RPCHeader_RequestHeader::set_proc_id(::google::protobuf::uint32 value) { - _set_bit(1); + set_has_proc_id(); proc_id_ = value; } // required .xtreemfs.pbrpc.UserCredentials user_creds = 3; inline bool RPCHeader_RequestHeader::has_user_creds() const { - return _has_bit(2); + return (_has_bits_[0] & 0x00000004u) != 0; +} +inline void RPCHeader_RequestHeader::set_has_user_creds() { + _has_bits_[0] |= 0x00000004u; +} +inline void RPCHeader_RequestHeader::clear_has_user_creds() { + _has_bits_[0] &= ~0x00000004u; } inline void RPCHeader_RequestHeader::clear_user_creds() { if (user_creds_ != NULL) user_creds_->::xtreemfs::pbrpc::UserCredentials::Clear(); - _clear_bit(2); + clear_has_user_creds(); } inline const ::xtreemfs::pbrpc::UserCredentials& RPCHeader_RequestHeader::user_creds() const { return user_creds_ != NULL ? *user_creds_ : *default_instance_->user_creds_; } inline ::xtreemfs::pbrpc::UserCredentials* RPCHeader_RequestHeader::mutable_user_creds() { - _set_bit(2); + set_has_user_creds(); if (user_creds_ == NULL) user_creds_ = new ::xtreemfs::pbrpc::UserCredentials; return user_creds_; } +inline ::xtreemfs::pbrpc::UserCredentials* RPCHeader_RequestHeader::release_user_creds() { + clear_has_user_creds(); + ::xtreemfs::pbrpc::UserCredentials* temp = user_creds_; + user_creds_ = NULL; + return temp; +} +inline void RPCHeader_RequestHeader::set_allocated_user_creds(::xtreemfs::pbrpc::UserCredentials* user_creds) { + delete user_creds_; + user_creds_ = user_creds; + if (user_creds) { + set_has_user_creds(); + } else { + clear_has_user_creds(); + } +} // required .xtreemfs.pbrpc.Auth auth_data = 4; inline bool RPCHeader_RequestHeader::has_auth_data() const { - return _has_bit(3); + return (_has_bits_[0] & 0x00000008u) != 0; +} +inline void RPCHeader_RequestHeader::set_has_auth_data() { + _has_bits_[0] |= 0x00000008u; +} +inline void RPCHeader_RequestHeader::clear_has_auth_data() { + _has_bits_[0] &= ~0x00000008u; } inline void RPCHeader_RequestHeader::clear_auth_data() { if (auth_data_ != NULL) auth_data_->::xtreemfs::pbrpc::Auth::Clear(); - _clear_bit(3); + clear_has_auth_data(); } inline const ::xtreemfs::pbrpc::Auth& RPCHeader_RequestHeader::auth_data() const { return auth_data_ != NULL ? *auth_data_ : *default_instance_->auth_data_; } inline ::xtreemfs::pbrpc::Auth* RPCHeader_RequestHeader::mutable_auth_data() { - _set_bit(3); + set_has_auth_data(); if (auth_data_ == NULL) auth_data_ = new ::xtreemfs::pbrpc::Auth; return auth_data_; } +inline ::xtreemfs::pbrpc::Auth* RPCHeader_RequestHeader::release_auth_data() { + clear_has_auth_data(); + ::xtreemfs::pbrpc::Auth* temp = auth_data_; + auth_data_ = NULL; + return temp; +} +inline void RPCHeader_RequestHeader::set_allocated_auth_data(::xtreemfs::pbrpc::Auth* auth_data) { + delete auth_data_; + auth_data_ = auth_data; + if (auth_data) { + set_has_auth_data(); + } else { + clear_has_auth_data(); + } +} // ------------------------------------------------------------------- @@ -1105,163 +1270,259 @@ inline ::xtreemfs::pbrpc::Auth* RPCHeader_RequestHeader::mutable_auth_data() { // required .xtreemfs.pbrpc.ErrorType error_type = 1; inline bool RPCHeader_ErrorResponse::has_error_type() const { - return _has_bit(0); + return (_has_bits_[0] & 0x00000001u) != 0; +} +inline void RPCHeader_ErrorResponse::set_has_error_type() { + _has_bits_[0] |= 0x00000001u; +} +inline void RPCHeader_ErrorResponse::clear_has_error_type() { + _has_bits_[0] &= ~0x00000001u; } inline void RPCHeader_ErrorResponse::clear_error_type() { error_type_ = 1; - _clear_bit(0); + clear_has_error_type(); } -inline xtreemfs::pbrpc::ErrorType RPCHeader_ErrorResponse::error_type() const { - return static_cast< xtreemfs::pbrpc::ErrorType >(error_type_); +inline ::xtreemfs::pbrpc::ErrorType RPCHeader_ErrorResponse::error_type() const { + return static_cast< ::xtreemfs::pbrpc::ErrorType >(error_type_); } -inline void RPCHeader_ErrorResponse::set_error_type(xtreemfs::pbrpc::ErrorType value) { - GOOGLE_DCHECK(xtreemfs::pbrpc::ErrorType_IsValid(value)); - _set_bit(0); +inline void RPCHeader_ErrorResponse::set_error_type(::xtreemfs::pbrpc::ErrorType value) { + assert(::xtreemfs::pbrpc::ErrorType_IsValid(value)); + set_has_error_type(); error_type_ = value; } // optional .xtreemfs.pbrpc.POSIXErrno posix_errno = 2 [default = POSIX_ERROR_NONE]; inline bool RPCHeader_ErrorResponse::has_posix_errno() const { - return _has_bit(1); + return (_has_bits_[0] & 0x00000002u) != 0; +} +inline void RPCHeader_ErrorResponse::set_has_posix_errno() { + _has_bits_[0] |= 0x00000002u; +} +inline void RPCHeader_ErrorResponse::clear_has_posix_errno() { + _has_bits_[0] &= ~0x00000002u; } inline void RPCHeader_ErrorResponse::clear_posix_errno() { posix_errno_ = 9999; - _clear_bit(1); + clear_has_posix_errno(); } -inline xtreemfs::pbrpc::POSIXErrno RPCHeader_ErrorResponse::posix_errno() const { - return static_cast< xtreemfs::pbrpc::POSIXErrno >(posix_errno_); +inline ::xtreemfs::pbrpc::POSIXErrno RPCHeader_ErrorResponse::posix_errno() const { + return static_cast< ::xtreemfs::pbrpc::POSIXErrno >(posix_errno_); } -inline void RPCHeader_ErrorResponse::set_posix_errno(xtreemfs::pbrpc::POSIXErrno value) { - GOOGLE_DCHECK(xtreemfs::pbrpc::POSIXErrno_IsValid(value)); - _set_bit(1); +inline void RPCHeader_ErrorResponse::set_posix_errno(::xtreemfs::pbrpc::POSIXErrno value) { + assert(::xtreemfs::pbrpc::POSIXErrno_IsValid(value)); + set_has_posix_errno(); posix_errno_ = value; } // optional string error_message = 3; inline bool RPCHeader_ErrorResponse::has_error_message() const { - return _has_bit(2); + return (_has_bits_[0] & 0x00000004u) != 0; +} +inline void RPCHeader_ErrorResponse::set_has_error_message() { + _has_bits_[0] |= 0x00000004u; +} +inline void RPCHeader_ErrorResponse::clear_has_error_message() { + _has_bits_[0] &= ~0x00000004u; } inline void RPCHeader_ErrorResponse::clear_error_message() { - if (error_message_ != &_default_error_message_) { + if (error_message_ != &::google::protobuf::internal::kEmptyString) { error_message_->clear(); } - _clear_bit(2); + clear_has_error_message(); } inline const ::std::string& RPCHeader_ErrorResponse::error_message() const { return *error_message_; } inline void RPCHeader_ErrorResponse::set_error_message(const ::std::string& value) { - _set_bit(2); - if (error_message_ == &_default_error_message_) { + set_has_error_message(); + if (error_message_ == &::google::protobuf::internal::kEmptyString) { error_message_ = new ::std::string; } error_message_->assign(value); } inline void RPCHeader_ErrorResponse::set_error_message(const char* value) { - _set_bit(2); - if (error_message_ == &_default_error_message_) { + set_has_error_message(); + if (error_message_ == &::google::protobuf::internal::kEmptyString) { error_message_ = new ::std::string; } error_message_->assign(value); } inline void RPCHeader_ErrorResponse::set_error_message(const char* value, size_t size) { - _set_bit(2); - if (error_message_ == &_default_error_message_) { + set_has_error_message(); + if (error_message_ == &::google::protobuf::internal::kEmptyString) { error_message_ = new ::std::string; } error_message_->assign(reinterpret_cast(value), size); } inline ::std::string* RPCHeader_ErrorResponse::mutable_error_message() { - _set_bit(2); - if (error_message_ == &_default_error_message_) { + set_has_error_message(); + if (error_message_ == &::google::protobuf::internal::kEmptyString) { error_message_ = new ::std::string; } return error_message_; } +inline ::std::string* RPCHeader_ErrorResponse::release_error_message() { + clear_has_error_message(); + if (error_message_ == &::google::protobuf::internal::kEmptyString) { + return NULL; + } else { + ::std::string* temp = error_message_; + error_message_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + return temp; + } +} +inline void RPCHeader_ErrorResponse::set_allocated_error_message(::std::string* error_message) { + if (error_message_ != &::google::protobuf::internal::kEmptyString) { + delete error_message_; + } + if (error_message) { + set_has_error_message(); + error_message_ = error_message; + } else { + clear_has_error_message(); + error_message_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + } +} // optional string debug_info = 4; inline bool RPCHeader_ErrorResponse::has_debug_info() const { - return _has_bit(3); + return (_has_bits_[0] & 0x00000008u) != 0; +} +inline void RPCHeader_ErrorResponse::set_has_debug_info() { + _has_bits_[0] |= 0x00000008u; +} +inline void RPCHeader_ErrorResponse::clear_has_debug_info() { + _has_bits_[0] &= ~0x00000008u; } inline void RPCHeader_ErrorResponse::clear_debug_info() { - if (debug_info_ != &_default_debug_info_) { + if (debug_info_ != &::google::protobuf::internal::kEmptyString) { debug_info_->clear(); } - _clear_bit(3); + clear_has_debug_info(); } inline const ::std::string& RPCHeader_ErrorResponse::debug_info() const { return *debug_info_; } inline void RPCHeader_ErrorResponse::set_debug_info(const ::std::string& value) { - _set_bit(3); - if (debug_info_ == &_default_debug_info_) { + set_has_debug_info(); + if (debug_info_ == &::google::protobuf::internal::kEmptyString) { debug_info_ = new ::std::string; } debug_info_->assign(value); } inline void RPCHeader_ErrorResponse::set_debug_info(const char* value) { - _set_bit(3); - if (debug_info_ == &_default_debug_info_) { + set_has_debug_info(); + if (debug_info_ == &::google::protobuf::internal::kEmptyString) { debug_info_ = new ::std::string; } debug_info_->assign(value); } inline void RPCHeader_ErrorResponse::set_debug_info(const char* value, size_t size) { - _set_bit(3); - if (debug_info_ == &_default_debug_info_) { + set_has_debug_info(); + if (debug_info_ == &::google::protobuf::internal::kEmptyString) { debug_info_ = new ::std::string; } debug_info_->assign(reinterpret_cast(value), size); } inline ::std::string* RPCHeader_ErrorResponse::mutable_debug_info() { - _set_bit(3); - if (debug_info_ == &_default_debug_info_) { + set_has_debug_info(); + if (debug_info_ == &::google::protobuf::internal::kEmptyString) { debug_info_ = new ::std::string; } return debug_info_; } +inline ::std::string* RPCHeader_ErrorResponse::release_debug_info() { + clear_has_debug_info(); + if (debug_info_ == &::google::protobuf::internal::kEmptyString) { + return NULL; + } else { + ::std::string* temp = debug_info_; + debug_info_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + return temp; + } +} +inline void RPCHeader_ErrorResponse::set_allocated_debug_info(::std::string* debug_info) { + if (debug_info_ != &::google::protobuf::internal::kEmptyString) { + delete debug_info_; + } + if (debug_info) { + set_has_debug_info(); + debug_info_ = debug_info; + } else { + clear_has_debug_info(); + debug_info_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + } +} // optional string redirect_to_server_uuid = 5; inline bool RPCHeader_ErrorResponse::has_redirect_to_server_uuid() const { - return _has_bit(4); + return (_has_bits_[0] & 0x00000010u) != 0; +} +inline void RPCHeader_ErrorResponse::set_has_redirect_to_server_uuid() { + _has_bits_[0] |= 0x00000010u; +} +inline void RPCHeader_ErrorResponse::clear_has_redirect_to_server_uuid() { + _has_bits_[0] &= ~0x00000010u; } inline void RPCHeader_ErrorResponse::clear_redirect_to_server_uuid() { - if (redirect_to_server_uuid_ != &_default_redirect_to_server_uuid_) { + if (redirect_to_server_uuid_ != &::google::protobuf::internal::kEmptyString) { redirect_to_server_uuid_->clear(); } - _clear_bit(4); + clear_has_redirect_to_server_uuid(); } inline const ::std::string& RPCHeader_ErrorResponse::redirect_to_server_uuid() const { return *redirect_to_server_uuid_; } inline void RPCHeader_ErrorResponse::set_redirect_to_server_uuid(const ::std::string& value) { - _set_bit(4); - if (redirect_to_server_uuid_ == &_default_redirect_to_server_uuid_) { + set_has_redirect_to_server_uuid(); + if (redirect_to_server_uuid_ == &::google::protobuf::internal::kEmptyString) { redirect_to_server_uuid_ = new ::std::string; } redirect_to_server_uuid_->assign(value); } inline void RPCHeader_ErrorResponse::set_redirect_to_server_uuid(const char* value) { - _set_bit(4); - if (redirect_to_server_uuid_ == &_default_redirect_to_server_uuid_) { + set_has_redirect_to_server_uuid(); + if (redirect_to_server_uuid_ == &::google::protobuf::internal::kEmptyString) { redirect_to_server_uuid_ = new ::std::string; } redirect_to_server_uuid_->assign(value); } inline void RPCHeader_ErrorResponse::set_redirect_to_server_uuid(const char* value, size_t size) { - _set_bit(4); - if (redirect_to_server_uuid_ == &_default_redirect_to_server_uuid_) { + set_has_redirect_to_server_uuid(); + if (redirect_to_server_uuid_ == &::google::protobuf::internal::kEmptyString) { redirect_to_server_uuid_ = new ::std::string; } redirect_to_server_uuid_->assign(reinterpret_cast(value), size); } inline ::std::string* RPCHeader_ErrorResponse::mutable_redirect_to_server_uuid() { - _set_bit(4); - if (redirect_to_server_uuid_ == &_default_redirect_to_server_uuid_) { + set_has_redirect_to_server_uuid(); + if (redirect_to_server_uuid_ == &::google::protobuf::internal::kEmptyString) { redirect_to_server_uuid_ = new ::std::string; } return redirect_to_server_uuid_; } +inline ::std::string* RPCHeader_ErrorResponse::release_redirect_to_server_uuid() { + clear_has_redirect_to_server_uuid(); + if (redirect_to_server_uuid_ == &::google::protobuf::internal::kEmptyString) { + return NULL; + } else { + ::std::string* temp = redirect_to_server_uuid_; + redirect_to_server_uuid_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + return temp; + } +} +inline void RPCHeader_ErrorResponse::set_allocated_redirect_to_server_uuid(::std::string* redirect_to_server_uuid) { + if (redirect_to_server_uuid_ != &::google::protobuf::internal::kEmptyString) { + delete redirect_to_server_uuid_; + } + if (redirect_to_server_uuid) { + set_has_redirect_to_server_uuid(); + redirect_to_server_uuid_ = redirect_to_server_uuid; + } else { + clear_has_redirect_to_server_uuid(); + redirect_to_server_uuid_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + } +} // ------------------------------------------------------------------- @@ -1269,70 +1530,124 @@ inline ::std::string* RPCHeader_ErrorResponse::mutable_redirect_to_server_uuid() // required fixed32 call_id = 1; inline bool RPCHeader::has_call_id() const { - return _has_bit(0); + return (_has_bits_[0] & 0x00000001u) != 0; +} +inline void RPCHeader::set_has_call_id() { + _has_bits_[0] |= 0x00000001u; +} +inline void RPCHeader::clear_has_call_id() { + _has_bits_[0] &= ~0x00000001u; } inline void RPCHeader::clear_call_id() { call_id_ = 0u; - _clear_bit(0); + clear_has_call_id(); } inline ::google::protobuf::uint32 RPCHeader::call_id() const { return call_id_; } inline void RPCHeader::set_call_id(::google::protobuf::uint32 value) { - _set_bit(0); + set_has_call_id(); call_id_ = value; } // required .xtreemfs.pbrpc.MessageType message_type = 2; inline bool RPCHeader::has_message_type() const { - return _has_bit(1); + return (_has_bits_[0] & 0x00000002u) != 0; +} +inline void RPCHeader::set_has_message_type() { + _has_bits_[0] |= 0x00000002u; +} +inline void RPCHeader::clear_has_message_type() { + _has_bits_[0] &= ~0x00000002u; } inline void RPCHeader::clear_message_type() { message_type_ = 0; - _clear_bit(1); + clear_has_message_type(); } -inline xtreemfs::pbrpc::MessageType RPCHeader::message_type() const { - return static_cast< xtreemfs::pbrpc::MessageType >(message_type_); +inline ::xtreemfs::pbrpc::MessageType RPCHeader::message_type() const { + return static_cast< ::xtreemfs::pbrpc::MessageType >(message_type_); } -inline void RPCHeader::set_message_type(xtreemfs::pbrpc::MessageType value) { - GOOGLE_DCHECK(xtreemfs::pbrpc::MessageType_IsValid(value)); - _set_bit(1); +inline void RPCHeader::set_message_type(::xtreemfs::pbrpc::MessageType value) { + assert(::xtreemfs::pbrpc::MessageType_IsValid(value)); + set_has_message_type(); message_type_ = value; } // optional .xtreemfs.pbrpc.RPCHeader.RequestHeader request_header = 3; inline bool RPCHeader::has_request_header() const { - return _has_bit(2); + return (_has_bits_[0] & 0x00000004u) != 0; +} +inline void RPCHeader::set_has_request_header() { + _has_bits_[0] |= 0x00000004u; +} +inline void RPCHeader::clear_has_request_header() { + _has_bits_[0] &= ~0x00000004u; } inline void RPCHeader::clear_request_header() { if (request_header_ != NULL) request_header_->::xtreemfs::pbrpc::RPCHeader_RequestHeader::Clear(); - _clear_bit(2); + clear_has_request_header(); } inline const ::xtreemfs::pbrpc::RPCHeader_RequestHeader& RPCHeader::request_header() const { return request_header_ != NULL ? *request_header_ : *default_instance_->request_header_; } inline ::xtreemfs::pbrpc::RPCHeader_RequestHeader* RPCHeader::mutable_request_header() { - _set_bit(2); + set_has_request_header(); if (request_header_ == NULL) request_header_ = new ::xtreemfs::pbrpc::RPCHeader_RequestHeader; return request_header_; } +inline ::xtreemfs::pbrpc::RPCHeader_RequestHeader* RPCHeader::release_request_header() { + clear_has_request_header(); + ::xtreemfs::pbrpc::RPCHeader_RequestHeader* temp = request_header_; + request_header_ = NULL; + return temp; +} +inline void RPCHeader::set_allocated_request_header(::xtreemfs::pbrpc::RPCHeader_RequestHeader* request_header) { + delete request_header_; + request_header_ = request_header; + if (request_header) { + set_has_request_header(); + } else { + clear_has_request_header(); + } +} // optional .xtreemfs.pbrpc.RPCHeader.ErrorResponse error_response = 4; inline bool RPCHeader::has_error_response() const { - return _has_bit(3); + return (_has_bits_[0] & 0x00000008u) != 0; +} +inline void RPCHeader::set_has_error_response() { + _has_bits_[0] |= 0x00000008u; +} +inline void RPCHeader::clear_has_error_response() { + _has_bits_[0] &= ~0x00000008u; } inline void RPCHeader::clear_error_response() { if (error_response_ != NULL) error_response_->::xtreemfs::pbrpc::RPCHeader_ErrorResponse::Clear(); - _clear_bit(3); + clear_has_error_response(); } inline const ::xtreemfs::pbrpc::RPCHeader_ErrorResponse& RPCHeader::error_response() const { return error_response_ != NULL ? *error_response_ : *default_instance_->error_response_; } inline ::xtreemfs::pbrpc::RPCHeader_ErrorResponse* RPCHeader::mutable_error_response() { - _set_bit(3); + set_has_error_response(); if (error_response_ == NULL) error_response_ = new ::xtreemfs::pbrpc::RPCHeader_ErrorResponse; return error_response_; } +inline ::xtreemfs::pbrpc::RPCHeader_ErrorResponse* RPCHeader::release_error_response() { + clear_has_error_response(); + ::xtreemfs::pbrpc::RPCHeader_ErrorResponse* temp = error_response_; + error_response_ = NULL; + return temp; +} +inline void RPCHeader::set_allocated_error_response(::xtreemfs::pbrpc::RPCHeader_ErrorResponse* error_response) { + delete error_response_; + error_response_ = error_response; + if (error_response) { + set_has_error_response(); + } else { + clear_has_error_response(); + } +} // @@protoc_insertion_point(namespace_scope) @@ -1345,20 +1660,20 @@ namespace google { namespace protobuf { template <> -inline const EnumDescriptor* GetEnumDescriptor< xtreemfs::pbrpc::MessageType>() { - return xtreemfs::pbrpc::MessageType_descriptor(); +inline const EnumDescriptor* GetEnumDescriptor< ::xtreemfs::pbrpc::MessageType>() { + return ::xtreemfs::pbrpc::MessageType_descriptor(); } template <> -inline const EnumDescriptor* GetEnumDescriptor< xtreemfs::pbrpc::AuthType>() { - return xtreemfs::pbrpc::AuthType_descriptor(); +inline const EnumDescriptor* GetEnumDescriptor< ::xtreemfs::pbrpc::AuthType>() { + return ::xtreemfs::pbrpc::AuthType_descriptor(); } template <> -inline const EnumDescriptor* GetEnumDescriptor< xtreemfs::pbrpc::ErrorType>() { - return xtreemfs::pbrpc::ErrorType_descriptor(); +inline const EnumDescriptor* GetEnumDescriptor< ::xtreemfs::pbrpc::ErrorType>() { + return ::xtreemfs::pbrpc::ErrorType_descriptor(); } template <> -inline const EnumDescriptor* GetEnumDescriptor< xtreemfs::pbrpc::POSIXErrno>() { - return xtreemfs::pbrpc::POSIXErrno_descriptor(); +inline const EnumDescriptor* GetEnumDescriptor< ::xtreemfs::pbrpc::POSIXErrno>() { + return ::xtreemfs::pbrpc::POSIXErrno_descriptor(); } } // namespace google diff --git a/cpp/generated/xtreemfs/DIR.pb.cc b/cpp/generated/xtreemfs/DIR.pb.cc index d690c82c5..0fe7bb24a 100644 --- a/cpp/generated/xtreemfs/DIR.pb.cc +++ b/cpp/generated/xtreemfs/DIR.pb.cc @@ -1,11 +1,17 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! +// source: xtreemfs/DIR.proto #define INTERNAL_SUPPRESS_PROTOBUF_FIELD_DEPRECATION #include "xtreemfs/DIR.pb.h" + +#include + +#include #include #include #include #include +#include #include #include // @@protoc_insertion_point(includes) @@ -74,7 +80,6 @@ const ::google::protobuf::internal::GeneratedMessageReflection* configurationSetResponse_reflection_ = NULL; const ::google::protobuf::EnumDescriptor* ServiceType_descriptor_ = NULL; const ::google::protobuf::EnumDescriptor* ServiceStatus_descriptor_ = NULL; -const ::google::protobuf::ServiceDescriptor* DirectoryService_descriptor_ = NULL; } // namespace @@ -389,7 +394,6 @@ void protobuf_AssignDesc_xtreemfs_2fDIR_2eproto() { sizeof(configurationSetResponse)); ServiceType_descriptor_ = file->enum_type(0); ServiceStatus_descriptor_ = file->enum_type(1); - DirectoryService_descriptor_ = file->service(0); } namespace { @@ -632,7 +636,6 @@ struct StaticDescriptorInitializer_xtreemfs_2fDIR_2eproto { protobuf_AddDesc_xtreemfs_2fDIR_2eproto(); } } static_descriptor_initializer_xtreemfs_2fDIR_2eproto_; - const ::google::protobuf::EnumDescriptor* ServiceType_descriptor() { protobuf_AssignDescriptorsOnce(); return ServiceType_descriptor_; @@ -668,11 +671,6 @@ bool ServiceStatus_IsValid(int value) { // =================================================================== -const ::std::string AddressMapping::_default_uuid_; -const ::std::string AddressMapping::_default_protocol_; -const ::std::string AddressMapping::_default_address_; -const ::std::string AddressMapping::_default_match_network_; -const ::std::string AddressMapping::_default_uri_; #ifndef _MSC_VER const int AddressMapping::kUuidFieldNumber; const int AddressMapping::kVersionFieldNumber; @@ -700,14 +698,14 @@ AddressMapping::AddressMapping(const AddressMapping& from) void AddressMapping::SharedCtor() { _cached_size_ = 0; - uuid_ = const_cast< ::std::string*>(&_default_uuid_); + uuid_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); version_ = GOOGLE_ULONGLONG(0); - protocol_ = const_cast< ::std::string*>(&_default_protocol_); - address_ = const_cast< ::std::string*>(&_default_address_); + protocol_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + address_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); port_ = 0u; - match_network_ = const_cast< ::std::string*>(&_default_match_network_); + match_network_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); ttl_s_ = 0u; - uri_ = const_cast< ::std::string*>(&_default_uri_); + uri_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); ::memset(_has_bits_, 0, sizeof(_has_bits_)); } @@ -716,19 +714,19 @@ AddressMapping::~AddressMapping() { } void AddressMapping::SharedDtor() { - if (uuid_ != &_default_uuid_) { + if (uuid_ != &::google::protobuf::internal::kEmptyString) { delete uuid_; } - if (protocol_ != &_default_protocol_) { + if (protocol_ != &::google::protobuf::internal::kEmptyString) { delete protocol_; } - if (address_ != &_default_address_) { + if (address_ != &::google::protobuf::internal::kEmptyString) { delete address_; } - if (match_network_ != &_default_match_network_) { + if (match_network_ != &::google::protobuf::internal::kEmptyString) { delete match_network_; } - if (uri_ != &_default_uri_) { + if (uri_ != &::google::protobuf::internal::kEmptyString) { delete uri_; } if (this != default_instance_) { @@ -746,7 +744,8 @@ const ::google::protobuf::Descriptor* AddressMapping::descriptor() { } const AddressMapping& AddressMapping::default_instance() { - if (default_instance_ == NULL) protobuf_AddDesc_xtreemfs_2fDIR_2eproto(); return *default_instance_; + if (default_instance_ == NULL) protobuf_AddDesc_xtreemfs_2fDIR_2eproto(); + return *default_instance_; } AddressMapping* AddressMapping::default_instance_ = NULL; @@ -757,31 +756,31 @@ AddressMapping* AddressMapping::New() const { void AddressMapping::Clear() { if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) { - if (_has_bit(0)) { - if (uuid_ != &_default_uuid_) { + if (has_uuid()) { + if (uuid_ != &::google::protobuf::internal::kEmptyString) { uuid_->clear(); } } version_ = GOOGLE_ULONGLONG(0); - if (_has_bit(2)) { - if (protocol_ != &_default_protocol_) { + if (has_protocol()) { + if (protocol_ != &::google::protobuf::internal::kEmptyString) { protocol_->clear(); } } - if (_has_bit(3)) { - if (address_ != &_default_address_) { + if (has_address()) { + if (address_ != &::google::protobuf::internal::kEmptyString) { address_->clear(); } } port_ = 0u; - if (_has_bit(5)) { - if (match_network_ != &_default_match_network_) { + if (has_match_network()) { + if (match_network_ != &::google::protobuf::internal::kEmptyString) { match_network_->clear(); } } ttl_s_ = 0u; - if (_has_bit(7)) { - if (uri_ != &_default_uri_) { + if (has_uri()) { + if (uri_ != &::google::protobuf::internal::kEmptyString) { uri_->clear(); } } @@ -811,7 +810,7 @@ bool AddressMapping::MergePartialFromCodedStream( if (input->ExpectTag(17)) goto parse_version; break; } - + // required fixed64 version = 2; case 2: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -820,14 +819,14 @@ bool AddressMapping::MergePartialFromCodedStream( DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive< ::google::protobuf::uint64, ::google::protobuf::internal::WireFormatLite::TYPE_FIXED64>( input, &version_))); - _set_bit(1); + set_has_version(); } else { goto handle_uninterpreted; } if (input->ExpectTag(26)) goto parse_protocol; break; } - + // required string protocol = 3; case 3: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -844,7 +843,7 @@ bool AddressMapping::MergePartialFromCodedStream( if (input->ExpectTag(34)) goto parse_address; break; } - + // required string address = 4; case 4: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -861,7 +860,7 @@ bool AddressMapping::MergePartialFromCodedStream( if (input->ExpectTag(45)) goto parse_port; break; } - + // required fixed32 port = 5; case 5: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -870,14 +869,14 @@ bool AddressMapping::MergePartialFromCodedStream( DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive< ::google::protobuf::uint32, ::google::protobuf::internal::WireFormatLite::TYPE_FIXED32>( input, &port_))); - _set_bit(4); + set_has_port(); } else { goto handle_uninterpreted; } if (input->ExpectTag(50)) goto parse_match_network; break; } - + // required string match_network = 6; case 6: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -894,7 +893,7 @@ bool AddressMapping::MergePartialFromCodedStream( if (input->ExpectTag(61)) goto parse_ttl_s; break; } - + // required fixed32 ttl_s = 7; case 7: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -903,14 +902,14 @@ bool AddressMapping::MergePartialFromCodedStream( DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive< ::google::protobuf::uint32, ::google::protobuf::internal::WireFormatLite::TYPE_FIXED32>( input, &ttl_s_))); - _set_bit(6); + set_has_ttl_s(); } else { goto handle_uninterpreted; } if (input->ExpectTag(66)) goto parse_uri; break; } - + // required string uri = 8; case 8: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -927,7 +926,7 @@ bool AddressMapping::MergePartialFromCodedStream( if (input->ExpectAtEnd()) return true; break; } - + default: { handle_uninterpreted: if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -947,65 +946,65 @@ bool AddressMapping::MergePartialFromCodedStream( void AddressMapping::SerializeWithCachedSizes( ::google::protobuf::io::CodedOutputStream* output) const { // required string uuid = 1; - if (_has_bit(0)) { + if (has_uuid()) { ::google::protobuf::internal::WireFormat::VerifyUTF8String( this->uuid().data(), this->uuid().length(), ::google::protobuf::internal::WireFormat::SERIALIZE); ::google::protobuf::internal::WireFormatLite::WriteString( 1, this->uuid(), output); } - + // required fixed64 version = 2; - if (_has_bit(1)) { + if (has_version()) { ::google::protobuf::internal::WireFormatLite::WriteFixed64(2, this->version(), output); } - + // required string protocol = 3; - if (_has_bit(2)) { + if (has_protocol()) { ::google::protobuf::internal::WireFormat::VerifyUTF8String( this->protocol().data(), this->protocol().length(), ::google::protobuf::internal::WireFormat::SERIALIZE); ::google::protobuf::internal::WireFormatLite::WriteString( 3, this->protocol(), output); } - + // required string address = 4; - if (_has_bit(3)) { + if (has_address()) { ::google::protobuf::internal::WireFormat::VerifyUTF8String( this->address().data(), this->address().length(), ::google::protobuf::internal::WireFormat::SERIALIZE); ::google::protobuf::internal::WireFormatLite::WriteString( 4, this->address(), output); } - + // required fixed32 port = 5; - if (_has_bit(4)) { + if (has_port()) { ::google::protobuf::internal::WireFormatLite::WriteFixed32(5, this->port(), output); } - + // required string match_network = 6; - if (_has_bit(5)) { + if (has_match_network()) { ::google::protobuf::internal::WireFormat::VerifyUTF8String( this->match_network().data(), this->match_network().length(), ::google::protobuf::internal::WireFormat::SERIALIZE); ::google::protobuf::internal::WireFormatLite::WriteString( 6, this->match_network(), output); } - + // required fixed32 ttl_s = 7; - if (_has_bit(6)) { + if (has_ttl_s()) { ::google::protobuf::internal::WireFormatLite::WriteFixed32(7, this->ttl_s(), output); } - + // required string uri = 8; - if (_has_bit(7)) { + if (has_uri()) { ::google::protobuf::internal::WireFormat::VerifyUTF8String( this->uri().data(), this->uri().length(), ::google::protobuf::internal::WireFormat::SERIALIZE); ::google::protobuf::internal::WireFormatLite::WriteString( 8, this->uri(), output); } - + if (!unknown_fields().empty()) { ::google::protobuf::internal::WireFormat::SerializeUnknownFields( unknown_fields(), output); @@ -1015,7 +1014,7 @@ void AddressMapping::SerializeWithCachedSizes( ::google::protobuf::uint8* AddressMapping::SerializeWithCachedSizesToArray( ::google::protobuf::uint8* target) const { // required string uuid = 1; - if (_has_bit(0)) { + if (has_uuid()) { ::google::protobuf::internal::WireFormat::VerifyUTF8String( this->uuid().data(), this->uuid().length(), ::google::protobuf::internal::WireFormat::SERIALIZE); @@ -1023,14 +1022,14 @@ void AddressMapping::SerializeWithCachedSizes( ::google::protobuf::internal::WireFormatLite::WriteStringToArray( 1, this->uuid(), target); } - + // required fixed64 version = 2; - if (_has_bit(1)) { + if (has_version()) { target = ::google::protobuf::internal::WireFormatLite::WriteFixed64ToArray(2, this->version(), target); } - + // required string protocol = 3; - if (_has_bit(2)) { + if (has_protocol()) { ::google::protobuf::internal::WireFormat::VerifyUTF8String( this->protocol().data(), this->protocol().length(), ::google::protobuf::internal::WireFormat::SERIALIZE); @@ -1038,9 +1037,9 @@ void AddressMapping::SerializeWithCachedSizes( ::google::protobuf::internal::WireFormatLite::WriteStringToArray( 3, this->protocol(), target); } - + // required string address = 4; - if (_has_bit(3)) { + if (has_address()) { ::google::protobuf::internal::WireFormat::VerifyUTF8String( this->address().data(), this->address().length(), ::google::protobuf::internal::WireFormat::SERIALIZE); @@ -1048,14 +1047,14 @@ void AddressMapping::SerializeWithCachedSizes( ::google::protobuf::internal::WireFormatLite::WriteStringToArray( 4, this->address(), target); } - + // required fixed32 port = 5; - if (_has_bit(4)) { + if (has_port()) { target = ::google::protobuf::internal::WireFormatLite::WriteFixed32ToArray(5, this->port(), target); } - + // required string match_network = 6; - if (_has_bit(5)) { + if (has_match_network()) { ::google::protobuf::internal::WireFormat::VerifyUTF8String( this->match_network().data(), this->match_network().length(), ::google::protobuf::internal::WireFormat::SERIALIZE); @@ -1063,14 +1062,14 @@ void AddressMapping::SerializeWithCachedSizes( ::google::protobuf::internal::WireFormatLite::WriteStringToArray( 6, this->match_network(), target); } - + // required fixed32 ttl_s = 7; - if (_has_bit(6)) { + if (has_ttl_s()) { target = ::google::protobuf::internal::WireFormatLite::WriteFixed32ToArray(7, this->ttl_s(), target); } - + // required string uri = 8; - if (_has_bit(7)) { + if (has_uri()) { ::google::protobuf::internal::WireFormat::VerifyUTF8String( this->uri().data(), this->uri().length(), ::google::protobuf::internal::WireFormat::SERIALIZE); @@ -1078,7 +1077,7 @@ void AddressMapping::SerializeWithCachedSizes( ::google::protobuf::internal::WireFormatLite::WriteStringToArray( 8, this->uri(), target); } - + if (!unknown_fields().empty()) { target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray( unknown_fields(), target); @@ -1088,7 +1087,7 @@ void AddressMapping::SerializeWithCachedSizes( int AddressMapping::ByteSize() const { int total_size = 0; - + if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) { // required string uuid = 1; if (has_uuid()) { @@ -1096,50 +1095,50 @@ int AddressMapping::ByteSize() const { ::google::protobuf::internal::WireFormatLite::StringSize( this->uuid()); } - + // required fixed64 version = 2; if (has_version()) { total_size += 1 + 8; } - + // required string protocol = 3; if (has_protocol()) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::StringSize( this->protocol()); } - + // required string address = 4; if (has_address()) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::StringSize( this->address()); } - + // required fixed32 port = 5; if (has_port()) { total_size += 1 + 4; } - + // required string match_network = 6; if (has_match_network()) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::StringSize( this->match_network()); } - + // required fixed32 ttl_s = 7; if (has_ttl_s()) { total_size += 1 + 4; } - + // required string uri = 8; if (has_uri()) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::StringSize( this->uri()); } - + } if (!unknown_fields().empty()) { total_size += @@ -1167,28 +1166,28 @@ void AddressMapping::MergeFrom(const ::google::protobuf::Message& from) { void AddressMapping::MergeFrom(const AddressMapping& from) { GOOGLE_CHECK_NE(&from, this); if (from._has_bits_[0 / 32] & (0xffu << (0 % 32))) { - if (from._has_bit(0)) { + if (from.has_uuid()) { set_uuid(from.uuid()); } - if (from._has_bit(1)) { + if (from.has_version()) { set_version(from.version()); } - if (from._has_bit(2)) { + if (from.has_protocol()) { set_protocol(from.protocol()); } - if (from._has_bit(3)) { + if (from.has_address()) { set_address(from.address()); } - if (from._has_bit(4)) { + if (from.has_port()) { set_port(from.port()); } - if (from._has_bit(5)) { + if (from.has_match_network()) { set_match_network(from.match_network()); } - if (from._has_bit(6)) { + if (from.has_ttl_s()) { set_ttl_s(from.ttl_s()); } - if (from._has_bit(7)) { + if (from.has_uri()) { set_uri(from.uri()); } } @@ -1209,7 +1208,7 @@ void AddressMapping::CopyFrom(const AddressMapping& from) { bool AddressMapping::IsInitialized() const { if ((_has_bits_[0] & 0x000000ff) != 0x000000ff) return false; - + return true; } @@ -1283,7 +1282,8 @@ const ::google::protobuf::Descriptor* AddressMappingSet::descriptor() { } const AddressMappingSet& AddressMappingSet::default_instance() { - if (default_instance_ == NULL) protobuf_AddDesc_xtreemfs_2fDIR_2eproto(); return *default_instance_; + if (default_instance_ == NULL) protobuf_AddDesc_xtreemfs_2fDIR_2eproto(); + return *default_instance_; } AddressMappingSet* AddressMappingSet::default_instance_ = NULL; @@ -1318,7 +1318,7 @@ bool AddressMappingSet::MergePartialFromCodedStream( if (input->ExpectAtEnd()) return true; break; } - + default: { handle_uninterpreted: if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -1342,7 +1342,7 @@ void AddressMappingSet::SerializeWithCachedSizes( ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray( 1, this->mappings(i), output); } - + if (!unknown_fields().empty()) { ::google::protobuf::internal::WireFormat::SerializeUnknownFields( unknown_fields(), output); @@ -1357,7 +1357,7 @@ void AddressMappingSet::SerializeWithCachedSizes( WriteMessageNoVirtualToArray( 1, this->mappings(i), target); } - + if (!unknown_fields().empty()) { target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray( unknown_fields(), target); @@ -1367,7 +1367,7 @@ void AddressMappingSet::SerializeWithCachedSizes( int AddressMappingSet::ByteSize() const { int total_size = 0; - + // repeated .xtreemfs.pbrpc.AddressMapping mappings = 1; total_size += 1 * this->mappings_size(); for (int i = 0; i < this->mappings_size(); i++) { @@ -1375,7 +1375,7 @@ int AddressMappingSet::ByteSize() const { ::google::protobuf::internal::WireFormatLite::MessageSizeNoVirtual( this->mappings(i)); } - + if (!unknown_fields().empty()) { total_size += ::google::protobuf::internal::WireFormat::ComputeUnknownFieldsSize( @@ -1418,7 +1418,7 @@ void AddressMappingSet::CopyFrom(const AddressMappingSet& from) { } bool AddressMappingSet::IsInitialized() const { - + for (int i = 0; i < mappings_size(); i++) { if (!this->mappings(i).IsInitialized()) return false; } @@ -1445,8 +1445,6 @@ void AddressMappingSet::Swap(AddressMappingSet* other) { // =================================================================== -const ::std::string DirService::_default_address_; -const ::std::string DirService::_default_protocol_; #ifndef _MSC_VER const int DirService::kAddressFieldNumber; const int DirService::kPortFieldNumber; @@ -1470,9 +1468,9 @@ DirService::DirService(const DirService& from) void DirService::SharedCtor() { _cached_size_ = 0; - address_ = const_cast< ::std::string*>(&_default_address_); + address_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); port_ = 0u; - protocol_ = const_cast< ::std::string*>(&_default_protocol_); + protocol_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); interface_version_ = 0u; ::memset(_has_bits_, 0, sizeof(_has_bits_)); } @@ -1482,10 +1480,10 @@ DirService::~DirService() { } void DirService::SharedDtor() { - if (address_ != &_default_address_) { + if (address_ != &::google::protobuf::internal::kEmptyString) { delete address_; } - if (protocol_ != &_default_protocol_) { + if (protocol_ != &::google::protobuf::internal::kEmptyString) { delete protocol_; } if (this != default_instance_) { @@ -1503,7 +1501,8 @@ const ::google::protobuf::Descriptor* DirService::descriptor() { } const DirService& DirService::default_instance() { - if (default_instance_ == NULL) protobuf_AddDesc_xtreemfs_2fDIR_2eproto(); return *default_instance_; + if (default_instance_ == NULL) protobuf_AddDesc_xtreemfs_2fDIR_2eproto(); + return *default_instance_; } DirService* DirService::default_instance_ = NULL; @@ -1514,14 +1513,14 @@ DirService* DirService::New() const { void DirService::Clear() { if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) { - if (_has_bit(0)) { - if (address_ != &_default_address_) { + if (has_address()) { + if (address_ != &::google::protobuf::internal::kEmptyString) { address_->clear(); } } port_ = 0u; - if (_has_bit(2)) { - if (protocol_ != &_default_protocol_) { + if (has_protocol()) { + if (protocol_ != &::google::protobuf::internal::kEmptyString) { protocol_->clear(); } } @@ -1552,7 +1551,7 @@ bool DirService::MergePartialFromCodedStream( if (input->ExpectTag(21)) goto parse_port; break; } - + // required fixed32 port = 2; case 2: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -1561,14 +1560,14 @@ bool DirService::MergePartialFromCodedStream( DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive< ::google::protobuf::uint32, ::google::protobuf::internal::WireFormatLite::TYPE_FIXED32>( input, &port_))); - _set_bit(1); + set_has_port(); } else { goto handle_uninterpreted; } if (input->ExpectTag(26)) goto parse_protocol; break; } - + // required string protocol = 3; case 3: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -1585,7 +1584,7 @@ bool DirService::MergePartialFromCodedStream( if (input->ExpectTag(37)) goto parse_interface_version; break; } - + // required fixed32 interface_version = 4; case 4: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -1594,14 +1593,14 @@ bool DirService::MergePartialFromCodedStream( DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive< ::google::protobuf::uint32, ::google::protobuf::internal::WireFormatLite::TYPE_FIXED32>( input, &interface_version_))); - _set_bit(3); + set_has_interface_version(); } else { goto handle_uninterpreted; } if (input->ExpectAtEnd()) return true; break; } - + default: { handle_uninterpreted: if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -1621,33 +1620,33 @@ bool DirService::MergePartialFromCodedStream( void DirService::SerializeWithCachedSizes( ::google::protobuf::io::CodedOutputStream* output) const { // required string address = 1; - if (_has_bit(0)) { + if (has_address()) { ::google::protobuf::internal::WireFormat::VerifyUTF8String( this->address().data(), this->address().length(), ::google::protobuf::internal::WireFormat::SERIALIZE); ::google::protobuf::internal::WireFormatLite::WriteString( 1, this->address(), output); } - + // required fixed32 port = 2; - if (_has_bit(1)) { + if (has_port()) { ::google::protobuf::internal::WireFormatLite::WriteFixed32(2, this->port(), output); } - + // required string protocol = 3; - if (_has_bit(2)) { + if (has_protocol()) { ::google::protobuf::internal::WireFormat::VerifyUTF8String( this->protocol().data(), this->protocol().length(), ::google::protobuf::internal::WireFormat::SERIALIZE); ::google::protobuf::internal::WireFormatLite::WriteString( 3, this->protocol(), output); } - + // required fixed32 interface_version = 4; - if (_has_bit(3)) { + if (has_interface_version()) { ::google::protobuf::internal::WireFormatLite::WriteFixed32(4, this->interface_version(), output); } - + if (!unknown_fields().empty()) { ::google::protobuf::internal::WireFormat::SerializeUnknownFields( unknown_fields(), output); @@ -1657,7 +1656,7 @@ void DirService::SerializeWithCachedSizes( ::google::protobuf::uint8* DirService::SerializeWithCachedSizesToArray( ::google::protobuf::uint8* target) const { // required string address = 1; - if (_has_bit(0)) { + if (has_address()) { ::google::protobuf::internal::WireFormat::VerifyUTF8String( this->address().data(), this->address().length(), ::google::protobuf::internal::WireFormat::SERIALIZE); @@ -1665,14 +1664,14 @@ void DirService::SerializeWithCachedSizes( ::google::protobuf::internal::WireFormatLite::WriteStringToArray( 1, this->address(), target); } - + // required fixed32 port = 2; - if (_has_bit(1)) { + if (has_port()) { target = ::google::protobuf::internal::WireFormatLite::WriteFixed32ToArray(2, this->port(), target); } - + // required string protocol = 3; - if (_has_bit(2)) { + if (has_protocol()) { ::google::protobuf::internal::WireFormat::VerifyUTF8String( this->protocol().data(), this->protocol().length(), ::google::protobuf::internal::WireFormat::SERIALIZE); @@ -1680,12 +1679,12 @@ void DirService::SerializeWithCachedSizes( ::google::protobuf::internal::WireFormatLite::WriteStringToArray( 3, this->protocol(), target); } - + // required fixed32 interface_version = 4; - if (_has_bit(3)) { + if (has_interface_version()) { target = ::google::protobuf::internal::WireFormatLite::WriteFixed32ToArray(4, this->interface_version(), target); } - + if (!unknown_fields().empty()) { target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray( unknown_fields(), target); @@ -1695,7 +1694,7 @@ void DirService::SerializeWithCachedSizes( int DirService::ByteSize() const { int total_size = 0; - + if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) { // required string address = 1; if (has_address()) { @@ -1703,24 +1702,24 @@ int DirService::ByteSize() const { ::google::protobuf::internal::WireFormatLite::StringSize( this->address()); } - + // required fixed32 port = 2; if (has_port()) { total_size += 1 + 4; } - + // required string protocol = 3; if (has_protocol()) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::StringSize( this->protocol()); } - + // required fixed32 interface_version = 4; if (has_interface_version()) { total_size += 1 + 4; } - + } if (!unknown_fields().empty()) { total_size += @@ -1748,16 +1747,16 @@ void DirService::MergeFrom(const ::google::protobuf::Message& from) { void DirService::MergeFrom(const DirService& from) { GOOGLE_CHECK_NE(&from, this); if (from._has_bits_[0 / 32] & (0xffu << (0 % 32))) { - if (from._has_bit(0)) { + if (from.has_address()) { set_address(from.address()); } - if (from._has_bit(1)) { + if (from.has_port()) { set_port(from.port()); } - if (from._has_bit(2)) { + if (from.has_protocol()) { set_protocol(from.protocol()); } - if (from._has_bit(3)) { + if (from.has_interface_version()) { set_interface_version(from.interface_version()); } } @@ -1778,7 +1777,7 @@ void DirService::CopyFrom(const DirService& from) { bool DirService::IsInitialized() const { if ((_has_bits_[0] & 0x0000000f) != 0x0000000f) return false; - + return true; } @@ -1848,7 +1847,8 @@ const ::google::protobuf::Descriptor* ServiceDataMap::descriptor() { } const ServiceDataMap& ServiceDataMap::default_instance() { - if (default_instance_ == NULL) protobuf_AddDesc_xtreemfs_2fDIR_2eproto(); return *default_instance_; + if (default_instance_ == NULL) protobuf_AddDesc_xtreemfs_2fDIR_2eproto(); + return *default_instance_; } ServiceDataMap* ServiceDataMap::default_instance_ = NULL; @@ -1883,7 +1883,7 @@ bool ServiceDataMap::MergePartialFromCodedStream( if (input->ExpectAtEnd()) return true; break; } - + default: { handle_uninterpreted: if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -1907,7 +1907,7 @@ void ServiceDataMap::SerializeWithCachedSizes( ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray( 1, this->data(i), output); } - + if (!unknown_fields().empty()) { ::google::protobuf::internal::WireFormat::SerializeUnknownFields( unknown_fields(), output); @@ -1922,7 +1922,7 @@ void ServiceDataMap::SerializeWithCachedSizes( WriteMessageNoVirtualToArray( 1, this->data(i), target); } - + if (!unknown_fields().empty()) { target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray( unknown_fields(), target); @@ -1932,7 +1932,7 @@ void ServiceDataMap::SerializeWithCachedSizes( int ServiceDataMap::ByteSize() const { int total_size = 0; - + // repeated .xtreemfs.pbrpc.KeyValuePair data = 1; total_size += 1 * this->data_size(); for (int i = 0; i < this->data_size(); i++) { @@ -1940,7 +1940,7 @@ int ServiceDataMap::ByteSize() const { ::google::protobuf::internal::WireFormatLite::MessageSizeNoVirtual( this->data(i)); } - + if (!unknown_fields().empty()) { total_size += ::google::protobuf::internal::WireFormat::ComputeUnknownFieldsSize( @@ -1983,7 +1983,7 @@ void ServiceDataMap::CopyFrom(const ServiceDataMap& from) { } bool ServiceDataMap::IsInitialized() const { - + for (int i = 0; i < data_size(); i++) { if (!this->data(i).IsInitialized()) return false; } @@ -2010,8 +2010,6 @@ void ServiceDataMap::Swap(ServiceDataMap* other) { // =================================================================== -const ::std::string Service::_default_uuid_; -const ::std::string Service::_default_name_; #ifndef _MSC_VER const int Service::kTypeFieldNumber; const int Service::kUuidFieldNumber; @@ -2039,9 +2037,9 @@ Service::Service(const Service& from) void Service::SharedCtor() { _cached_size_ = 0; type_ = 0; - uuid_ = const_cast< ::std::string*>(&_default_uuid_); + uuid_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); version_ = GOOGLE_ULONGLONG(0); - name_ = const_cast< ::std::string*>(&_default_name_); + name_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); last_updated_s_ = GOOGLE_ULONGLONG(0); data_ = NULL; ::memset(_has_bits_, 0, sizeof(_has_bits_)); @@ -2052,10 +2050,10 @@ Service::~Service() { } void Service::SharedDtor() { - if (uuid_ != &_default_uuid_) { + if (uuid_ != &::google::protobuf::internal::kEmptyString) { delete uuid_; } - if (name_ != &_default_name_) { + if (name_ != &::google::protobuf::internal::kEmptyString) { delete name_; } if (this != default_instance_) { @@ -2074,7 +2072,8 @@ const ::google::protobuf::Descriptor* Service::descriptor() { } const Service& Service::default_instance() { - if (default_instance_ == NULL) protobuf_AddDesc_xtreemfs_2fDIR_2eproto(); return *default_instance_; + if (default_instance_ == NULL) protobuf_AddDesc_xtreemfs_2fDIR_2eproto(); + return *default_instance_; } Service* Service::default_instance_ = NULL; @@ -2086,19 +2085,19 @@ Service* Service::New() const { void Service::Clear() { if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) { type_ = 0; - if (_has_bit(1)) { - if (uuid_ != &_default_uuid_) { + if (has_uuid()) { + if (uuid_ != &::google::protobuf::internal::kEmptyString) { uuid_->clear(); } } version_ = GOOGLE_ULONGLONG(0); - if (_has_bit(3)) { - if (name_ != &_default_name_) { + if (has_name()) { + if (name_ != &::google::protobuf::internal::kEmptyString) { name_->clear(); } } last_updated_s_ = GOOGLE_ULONGLONG(0); - if (_has_bit(5)) { + if (has_data()) { if (data_ != NULL) data_->::xtreemfs::pbrpc::ServiceDataMap::Clear(); } } @@ -2120,8 +2119,8 @@ bool Service::MergePartialFromCodedStream( DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive< int, ::google::protobuf::internal::WireFormatLite::TYPE_ENUM>( input, &value))); - if (xtreemfs::pbrpc::ServiceType_IsValid(value)) { - set_type(static_cast< xtreemfs::pbrpc::ServiceType >(value)); + if (::xtreemfs::pbrpc::ServiceType_IsValid(value)) { + set_type(static_cast< ::xtreemfs::pbrpc::ServiceType >(value)); } else { mutable_unknown_fields()->AddVarint(1, value); } @@ -2131,7 +2130,7 @@ bool Service::MergePartialFromCodedStream( if (input->ExpectTag(18)) goto parse_uuid; break; } - + // required string uuid = 2; case 2: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -2148,7 +2147,7 @@ bool Service::MergePartialFromCodedStream( if (input->ExpectTag(25)) goto parse_version; break; } - + // required fixed64 version = 3; case 3: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -2157,14 +2156,14 @@ bool Service::MergePartialFromCodedStream( DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive< ::google::protobuf::uint64, ::google::protobuf::internal::WireFormatLite::TYPE_FIXED64>( input, &version_))); - _set_bit(2); + set_has_version(); } else { goto handle_uninterpreted; } if (input->ExpectTag(34)) goto parse_name; break; } - + // required string name = 4; case 4: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -2181,7 +2180,7 @@ bool Service::MergePartialFromCodedStream( if (input->ExpectTag(41)) goto parse_last_updated_s; break; } - + // required fixed64 last_updated_s = 5; case 5: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -2190,14 +2189,14 @@ bool Service::MergePartialFromCodedStream( DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive< ::google::protobuf::uint64, ::google::protobuf::internal::WireFormatLite::TYPE_FIXED64>( input, &last_updated_s_))); - _set_bit(4); + set_has_last_updated_s(); } else { goto handle_uninterpreted; } if (input->ExpectTag(50)) goto parse_data; break; } - + // required .xtreemfs.pbrpc.ServiceDataMap data = 6; case 6: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -2211,7 +2210,7 @@ bool Service::MergePartialFromCodedStream( if (input->ExpectAtEnd()) return true; break; } - + default: { handle_uninterpreted: if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -2231,45 +2230,45 @@ bool Service::MergePartialFromCodedStream( void Service::SerializeWithCachedSizes( ::google::protobuf::io::CodedOutputStream* output) const { // required .xtreemfs.pbrpc.ServiceType type = 1; - if (_has_bit(0)) { + if (has_type()) { ::google::protobuf::internal::WireFormatLite::WriteEnum( 1, this->type(), output); } - + // required string uuid = 2; - if (_has_bit(1)) { + if (has_uuid()) { ::google::protobuf::internal::WireFormat::VerifyUTF8String( this->uuid().data(), this->uuid().length(), ::google::protobuf::internal::WireFormat::SERIALIZE); ::google::protobuf::internal::WireFormatLite::WriteString( 2, this->uuid(), output); } - + // required fixed64 version = 3; - if (_has_bit(2)) { + if (has_version()) { ::google::protobuf::internal::WireFormatLite::WriteFixed64(3, this->version(), output); } - + // required string name = 4; - if (_has_bit(3)) { + if (has_name()) { ::google::protobuf::internal::WireFormat::VerifyUTF8String( this->name().data(), this->name().length(), ::google::protobuf::internal::WireFormat::SERIALIZE); ::google::protobuf::internal::WireFormatLite::WriteString( 4, this->name(), output); } - + // required fixed64 last_updated_s = 5; - if (_has_bit(4)) { + if (has_last_updated_s()) { ::google::protobuf::internal::WireFormatLite::WriteFixed64(5, this->last_updated_s(), output); } - + // required .xtreemfs.pbrpc.ServiceDataMap data = 6; - if (_has_bit(5)) { + if (has_data()) { ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray( 6, this->data(), output); } - + if (!unknown_fields().empty()) { ::google::protobuf::internal::WireFormat::SerializeUnknownFields( unknown_fields(), output); @@ -2279,13 +2278,13 @@ void Service::SerializeWithCachedSizes( ::google::protobuf::uint8* Service::SerializeWithCachedSizesToArray( ::google::protobuf::uint8* target) const { // required .xtreemfs.pbrpc.ServiceType type = 1; - if (_has_bit(0)) { + if (has_type()) { target = ::google::protobuf::internal::WireFormatLite::WriteEnumToArray( 1, this->type(), target); } - + // required string uuid = 2; - if (_has_bit(1)) { + if (has_uuid()) { ::google::protobuf::internal::WireFormat::VerifyUTF8String( this->uuid().data(), this->uuid().length(), ::google::protobuf::internal::WireFormat::SERIALIZE); @@ -2293,14 +2292,14 @@ void Service::SerializeWithCachedSizes( ::google::protobuf::internal::WireFormatLite::WriteStringToArray( 2, this->uuid(), target); } - + // required fixed64 version = 3; - if (_has_bit(2)) { + if (has_version()) { target = ::google::protobuf::internal::WireFormatLite::WriteFixed64ToArray(3, this->version(), target); } - + // required string name = 4; - if (_has_bit(3)) { + if (has_name()) { ::google::protobuf::internal::WireFormat::VerifyUTF8String( this->name().data(), this->name().length(), ::google::protobuf::internal::WireFormat::SERIALIZE); @@ -2308,19 +2307,19 @@ void Service::SerializeWithCachedSizes( ::google::protobuf::internal::WireFormatLite::WriteStringToArray( 4, this->name(), target); } - + // required fixed64 last_updated_s = 5; - if (_has_bit(4)) { + if (has_last_updated_s()) { target = ::google::protobuf::internal::WireFormatLite::WriteFixed64ToArray(5, this->last_updated_s(), target); } - + // required .xtreemfs.pbrpc.ServiceDataMap data = 6; - if (_has_bit(5)) { + if (has_data()) { target = ::google::protobuf::internal::WireFormatLite:: WriteMessageNoVirtualToArray( 6, this->data(), target); } - + if (!unknown_fields().empty()) { target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray( unknown_fields(), target); @@ -2330,45 +2329,45 @@ void Service::SerializeWithCachedSizes( int Service::ByteSize() const { int total_size = 0; - + if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) { // required .xtreemfs.pbrpc.ServiceType type = 1; if (has_type()) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::EnumSize(this->type()); } - + // required string uuid = 2; if (has_uuid()) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::StringSize( this->uuid()); } - + // required fixed64 version = 3; if (has_version()) { total_size += 1 + 8; } - + // required string name = 4; if (has_name()) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::StringSize( this->name()); } - + // required fixed64 last_updated_s = 5; if (has_last_updated_s()) { total_size += 1 + 8; } - + // required .xtreemfs.pbrpc.ServiceDataMap data = 6; if (has_data()) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::MessageSizeNoVirtual( this->data()); } - + } if (!unknown_fields().empty()) { total_size += @@ -2396,22 +2395,22 @@ void Service::MergeFrom(const ::google::protobuf::Message& from) { void Service::MergeFrom(const Service& from) { GOOGLE_CHECK_NE(&from, this); if (from._has_bits_[0 / 32] & (0xffu << (0 % 32))) { - if (from._has_bit(0)) { + if (from.has_type()) { set_type(from.type()); } - if (from._has_bit(1)) { + if (from.has_uuid()) { set_uuid(from.uuid()); } - if (from._has_bit(2)) { + if (from.has_version()) { set_version(from.version()); } - if (from._has_bit(3)) { + if (from.has_name()) { set_name(from.name()); } - if (from._has_bit(4)) { + if (from.has_last_updated_s()) { set_last_updated_s(from.last_updated_s()); } - if (from._has_bit(5)) { + if (from.has_data()) { mutable_data()->::xtreemfs::pbrpc::ServiceDataMap::MergeFrom(from.data()); } } @@ -2432,7 +2431,7 @@ void Service::CopyFrom(const Service& from) { bool Service::IsInitialized() const { if ((_has_bits_[0] & 0x0000003f) != 0x0000003f) return false; - + if (has_data()) { if (!this->data().IsInitialized()) return false; } @@ -2507,7 +2506,8 @@ const ::google::protobuf::Descriptor* ServiceSet::descriptor() { } const ServiceSet& ServiceSet::default_instance() { - if (default_instance_ == NULL) protobuf_AddDesc_xtreemfs_2fDIR_2eproto(); return *default_instance_; + if (default_instance_ == NULL) protobuf_AddDesc_xtreemfs_2fDIR_2eproto(); + return *default_instance_; } ServiceSet* ServiceSet::default_instance_ = NULL; @@ -2542,7 +2542,7 @@ bool ServiceSet::MergePartialFromCodedStream( if (input->ExpectAtEnd()) return true; break; } - + default: { handle_uninterpreted: if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -2566,7 +2566,7 @@ void ServiceSet::SerializeWithCachedSizes( ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray( 1, this->services(i), output); } - + if (!unknown_fields().empty()) { ::google::protobuf::internal::WireFormat::SerializeUnknownFields( unknown_fields(), output); @@ -2581,7 +2581,7 @@ void ServiceSet::SerializeWithCachedSizes( WriteMessageNoVirtualToArray( 1, this->services(i), target); } - + if (!unknown_fields().empty()) { target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray( unknown_fields(), target); @@ -2591,7 +2591,7 @@ void ServiceSet::SerializeWithCachedSizes( int ServiceSet::ByteSize() const { int total_size = 0; - + // repeated .xtreemfs.pbrpc.Service services = 1; total_size += 1 * this->services_size(); for (int i = 0; i < this->services_size(); i++) { @@ -2599,7 +2599,7 @@ int ServiceSet::ByteSize() const { ::google::protobuf::internal::WireFormatLite::MessageSizeNoVirtual( this->services(i)); } - + if (!unknown_fields().empty()) { total_size += ::google::protobuf::internal::WireFormat::ComputeUnknownFieldsSize( @@ -2642,7 +2642,7 @@ void ServiceSet::CopyFrom(const ServiceSet& from) { } bool ServiceSet::IsInitialized() const { - + for (int i = 0; i < services_size(); i++) { if (!this->services(i).IsInitialized()) return false; } @@ -2669,7 +2669,6 @@ void ServiceSet::Swap(ServiceSet* other) { // =================================================================== -const ::std::string Configuration::_default_uuid_; #ifndef _MSC_VER const int Configuration::kUuidFieldNumber; const int Configuration::kParameterFieldNumber; @@ -2692,7 +2691,7 @@ Configuration::Configuration(const Configuration& from) void Configuration::SharedCtor() { _cached_size_ = 0; - uuid_ = const_cast< ::std::string*>(&_default_uuid_); + uuid_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); version_ = GOOGLE_ULONGLONG(0); ::memset(_has_bits_, 0, sizeof(_has_bits_)); } @@ -2702,7 +2701,7 @@ Configuration::~Configuration() { } void Configuration::SharedDtor() { - if (uuid_ != &_default_uuid_) { + if (uuid_ != &::google::protobuf::internal::kEmptyString) { delete uuid_; } if (this != default_instance_) { @@ -2720,7 +2719,8 @@ const ::google::protobuf::Descriptor* Configuration::descriptor() { } const Configuration& Configuration::default_instance() { - if (default_instance_ == NULL) protobuf_AddDesc_xtreemfs_2fDIR_2eproto(); return *default_instance_; + if (default_instance_ == NULL) protobuf_AddDesc_xtreemfs_2fDIR_2eproto(); + return *default_instance_; } Configuration* Configuration::default_instance_ = NULL; @@ -2731,8 +2731,8 @@ Configuration* Configuration::New() const { void Configuration::Clear() { if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) { - if (_has_bit(0)) { - if (uuid_ != &_default_uuid_) { + if (has_uuid()) { + if (uuid_ != &::google::protobuf::internal::kEmptyString) { uuid_->clear(); } } @@ -2764,7 +2764,7 @@ bool Configuration::MergePartialFromCodedStream( if (input->ExpectTag(18)) goto parse_parameter; break; } - + // repeated .xtreemfs.pbrpc.KeyValuePair parameter = 2; case 2: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -2779,7 +2779,7 @@ bool Configuration::MergePartialFromCodedStream( if (input->ExpectTag(25)) goto parse_version; break; } - + // required fixed64 version = 3; case 3: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -2788,14 +2788,14 @@ bool Configuration::MergePartialFromCodedStream( DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive< ::google::protobuf::uint64, ::google::protobuf::internal::WireFormatLite::TYPE_FIXED64>( input, &version_))); - _set_bit(2); + set_has_version(); } else { goto handle_uninterpreted; } if (input->ExpectAtEnd()) return true; break; } - + default: { handle_uninterpreted: if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -2815,25 +2815,25 @@ bool Configuration::MergePartialFromCodedStream( void Configuration::SerializeWithCachedSizes( ::google::protobuf::io::CodedOutputStream* output) const { // required string uuid = 1; - if (_has_bit(0)) { + if (has_uuid()) { ::google::protobuf::internal::WireFormat::VerifyUTF8String( this->uuid().data(), this->uuid().length(), ::google::protobuf::internal::WireFormat::SERIALIZE); ::google::protobuf::internal::WireFormatLite::WriteString( 1, this->uuid(), output); } - + // repeated .xtreemfs.pbrpc.KeyValuePair parameter = 2; for (int i = 0; i < this->parameter_size(); i++) { ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray( 2, this->parameter(i), output); } - + // required fixed64 version = 3; - if (_has_bit(2)) { + if (has_version()) { ::google::protobuf::internal::WireFormatLite::WriteFixed64(3, this->version(), output); } - + if (!unknown_fields().empty()) { ::google::protobuf::internal::WireFormat::SerializeUnknownFields( unknown_fields(), output); @@ -2843,7 +2843,7 @@ void Configuration::SerializeWithCachedSizes( ::google::protobuf::uint8* Configuration::SerializeWithCachedSizesToArray( ::google::protobuf::uint8* target) const { // required string uuid = 1; - if (_has_bit(0)) { + if (has_uuid()) { ::google::protobuf::internal::WireFormat::VerifyUTF8String( this->uuid().data(), this->uuid().length(), ::google::protobuf::internal::WireFormat::SERIALIZE); @@ -2851,19 +2851,19 @@ void Configuration::SerializeWithCachedSizes( ::google::protobuf::internal::WireFormatLite::WriteStringToArray( 1, this->uuid(), target); } - + // repeated .xtreemfs.pbrpc.KeyValuePair parameter = 2; for (int i = 0; i < this->parameter_size(); i++) { target = ::google::protobuf::internal::WireFormatLite:: WriteMessageNoVirtualToArray( 2, this->parameter(i), target); } - + // required fixed64 version = 3; - if (_has_bit(2)) { + if (has_version()) { target = ::google::protobuf::internal::WireFormatLite::WriteFixed64ToArray(3, this->version(), target); } - + if (!unknown_fields().empty()) { target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray( unknown_fields(), target); @@ -2873,7 +2873,7 @@ void Configuration::SerializeWithCachedSizes( int Configuration::ByteSize() const { int total_size = 0; - + if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) { // required string uuid = 1; if (has_uuid()) { @@ -2881,12 +2881,12 @@ int Configuration::ByteSize() const { ::google::protobuf::internal::WireFormatLite::StringSize( this->uuid()); } - + // required fixed64 version = 3; if (has_version()) { total_size += 1 + 8; } - + } // repeated .xtreemfs.pbrpc.KeyValuePair parameter = 2; total_size += 1 * this->parameter_size(); @@ -2895,7 +2895,7 @@ int Configuration::ByteSize() const { ::google::protobuf::internal::WireFormatLite::MessageSizeNoVirtual( this->parameter(i)); } - + if (!unknown_fields().empty()) { total_size += ::google::protobuf::internal::WireFormat::ComputeUnknownFieldsSize( @@ -2923,10 +2923,10 @@ void Configuration::MergeFrom(const Configuration& from) { GOOGLE_CHECK_NE(&from, this); parameter_.MergeFrom(from.parameter_); if (from._has_bits_[0 / 32] & (0xffu << (0 % 32))) { - if (from._has_bit(0)) { + if (from.has_uuid()) { set_uuid(from.uuid()); } - if (from._has_bit(2)) { + if (from.has_version()) { set_version(from.version()); } } @@ -2947,7 +2947,7 @@ void Configuration::CopyFrom(const Configuration& from) { bool Configuration::IsInitialized() const { if ((_has_bits_[0] & 0x00000005) != 0x00000005) return false; - + for (int i = 0; i < parameter_size(); i++) { if (!this->parameter(i).IsInitialized()) return false; } @@ -2976,7 +2976,6 @@ void Configuration::Swap(Configuration* other) { // =================================================================== -const ::std::string addressMappingGetRequest::_default_uuid_; #ifndef _MSC_VER const int addressMappingGetRequest::kUuidFieldNumber; #endif // !_MSC_VER @@ -2997,7 +2996,7 @@ addressMappingGetRequest::addressMappingGetRequest(const addressMappingGetReques void addressMappingGetRequest::SharedCtor() { _cached_size_ = 0; - uuid_ = const_cast< ::std::string*>(&_default_uuid_); + uuid_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); ::memset(_has_bits_, 0, sizeof(_has_bits_)); } @@ -3006,7 +3005,7 @@ addressMappingGetRequest::~addressMappingGetRequest() { } void addressMappingGetRequest::SharedDtor() { - if (uuid_ != &_default_uuid_) { + if (uuid_ != &::google::protobuf::internal::kEmptyString) { delete uuid_; } if (this != default_instance_) { @@ -3024,7 +3023,8 @@ const ::google::protobuf::Descriptor* addressMappingGetRequest::descriptor() { } const addressMappingGetRequest& addressMappingGetRequest::default_instance() { - if (default_instance_ == NULL) protobuf_AddDesc_xtreemfs_2fDIR_2eproto(); return *default_instance_; + if (default_instance_ == NULL) protobuf_AddDesc_xtreemfs_2fDIR_2eproto(); + return *default_instance_; } addressMappingGetRequest* addressMappingGetRequest::default_instance_ = NULL; @@ -3035,8 +3035,8 @@ addressMappingGetRequest* addressMappingGetRequest::New() const { void addressMappingGetRequest::Clear() { if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) { - if (_has_bit(0)) { - if (uuid_ != &_default_uuid_) { + if (has_uuid()) { + if (uuid_ != &::google::protobuf::internal::kEmptyString) { uuid_->clear(); } } @@ -3066,7 +3066,7 @@ bool addressMappingGetRequest::MergePartialFromCodedStream( if (input->ExpectAtEnd()) return true; break; } - + default: { handle_uninterpreted: if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -3086,14 +3086,14 @@ bool addressMappingGetRequest::MergePartialFromCodedStream( void addressMappingGetRequest::SerializeWithCachedSizes( ::google::protobuf::io::CodedOutputStream* output) const { // required string uuid = 1; - if (_has_bit(0)) { + if (has_uuid()) { ::google::protobuf::internal::WireFormat::VerifyUTF8String( this->uuid().data(), this->uuid().length(), ::google::protobuf::internal::WireFormat::SERIALIZE); ::google::protobuf::internal::WireFormatLite::WriteString( 1, this->uuid(), output); } - + if (!unknown_fields().empty()) { ::google::protobuf::internal::WireFormat::SerializeUnknownFields( unknown_fields(), output); @@ -3103,7 +3103,7 @@ void addressMappingGetRequest::SerializeWithCachedSizes( ::google::protobuf::uint8* addressMappingGetRequest::SerializeWithCachedSizesToArray( ::google::protobuf::uint8* target) const { // required string uuid = 1; - if (_has_bit(0)) { + if (has_uuid()) { ::google::protobuf::internal::WireFormat::VerifyUTF8String( this->uuid().data(), this->uuid().length(), ::google::protobuf::internal::WireFormat::SERIALIZE); @@ -3111,7 +3111,7 @@ void addressMappingGetRequest::SerializeWithCachedSizes( ::google::protobuf::internal::WireFormatLite::WriteStringToArray( 1, this->uuid(), target); } - + if (!unknown_fields().empty()) { target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray( unknown_fields(), target); @@ -3121,7 +3121,7 @@ void addressMappingGetRequest::SerializeWithCachedSizes( int addressMappingGetRequest::ByteSize() const { int total_size = 0; - + if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) { // required string uuid = 1; if (has_uuid()) { @@ -3129,7 +3129,7 @@ int addressMappingGetRequest::ByteSize() const { ::google::protobuf::internal::WireFormatLite::StringSize( this->uuid()); } - + } if (!unknown_fields().empty()) { total_size += @@ -3157,7 +3157,7 @@ void addressMappingGetRequest::MergeFrom(const ::google::protobuf::Message& from void addressMappingGetRequest::MergeFrom(const addressMappingGetRequest& from) { GOOGLE_CHECK_NE(&from, this); if (from._has_bits_[0 / 32] & (0xffu << (0 % 32))) { - if (from._has_bit(0)) { + if (from.has_uuid()) { set_uuid(from.uuid()); } } @@ -3178,7 +3178,7 @@ void addressMappingGetRequest::CopyFrom(const addressMappingGetRequest& from) { bool addressMappingGetRequest::IsInitialized() const { if ((_has_bits_[0] & 0x00000001) != 0x00000001) return false; - + return true; } @@ -3248,7 +3248,8 @@ const ::google::protobuf::Descriptor* addressMappingGetResponse::descriptor() { } const addressMappingGetResponse& addressMappingGetResponse::default_instance() { - if (default_instance_ == NULL) protobuf_AddDesc_xtreemfs_2fDIR_2eproto(); return *default_instance_; + if (default_instance_ == NULL) protobuf_AddDesc_xtreemfs_2fDIR_2eproto(); + return *default_instance_; } addressMappingGetResponse* addressMappingGetResponse::default_instance_ = NULL; @@ -3259,7 +3260,7 @@ addressMappingGetResponse* addressMappingGetResponse::New() const { void addressMappingGetResponse::Clear() { if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) { - if (_has_bit(0)) { + if (has_result()) { if (result_ != NULL) result_->::xtreemfs::pbrpc::AddressMappingSet::Clear(); } } @@ -3285,7 +3286,7 @@ bool addressMappingGetResponse::MergePartialFromCodedStream( if (input->ExpectAtEnd()) return true; break; } - + default: { handle_uninterpreted: if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -3305,11 +3306,11 @@ bool addressMappingGetResponse::MergePartialFromCodedStream( void addressMappingGetResponse::SerializeWithCachedSizes( ::google::protobuf::io::CodedOutputStream* output) const { // optional .xtreemfs.pbrpc.AddressMappingSet result = 1; - if (_has_bit(0)) { + if (has_result()) { ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray( 1, this->result(), output); } - + if (!unknown_fields().empty()) { ::google::protobuf::internal::WireFormat::SerializeUnknownFields( unknown_fields(), output); @@ -3319,12 +3320,12 @@ void addressMappingGetResponse::SerializeWithCachedSizes( ::google::protobuf::uint8* addressMappingGetResponse::SerializeWithCachedSizesToArray( ::google::protobuf::uint8* target) const { // optional .xtreemfs.pbrpc.AddressMappingSet result = 1; - if (_has_bit(0)) { + if (has_result()) { target = ::google::protobuf::internal::WireFormatLite:: WriteMessageNoVirtualToArray( 1, this->result(), target); } - + if (!unknown_fields().empty()) { target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray( unknown_fields(), target); @@ -3334,7 +3335,7 @@ void addressMappingGetResponse::SerializeWithCachedSizes( int addressMappingGetResponse::ByteSize() const { int total_size = 0; - + if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) { // optional .xtreemfs.pbrpc.AddressMappingSet result = 1; if (has_result()) { @@ -3342,7 +3343,7 @@ int addressMappingGetResponse::ByteSize() const { ::google::protobuf::internal::WireFormatLite::MessageSizeNoVirtual( this->result()); } - + } if (!unknown_fields().empty()) { total_size += @@ -3370,7 +3371,7 @@ void addressMappingGetResponse::MergeFrom(const ::google::protobuf::Message& fro void addressMappingGetResponse::MergeFrom(const addressMappingGetResponse& from) { GOOGLE_CHECK_NE(&from, this); if (from._has_bits_[0 / 32] & (0xffu << (0 % 32))) { - if (from._has_bit(0)) { + if (from.has_result()) { mutable_result()->::xtreemfs::pbrpc::AddressMappingSet::MergeFrom(from.result()); } } @@ -3390,7 +3391,7 @@ void addressMappingGetResponse::CopyFrom(const addressMappingGetResponse& from) } bool addressMappingGetResponse::IsInitialized() const { - + if (has_result()) { if (!this->result().IsInitialized()) return false; } @@ -3461,7 +3462,8 @@ const ::google::protobuf::Descriptor* addressMappingSetResponse::descriptor() { } const addressMappingSetResponse& addressMappingSetResponse::default_instance() { - if (default_instance_ == NULL) protobuf_AddDesc_xtreemfs_2fDIR_2eproto(); return *default_instance_; + if (default_instance_ == NULL) protobuf_AddDesc_xtreemfs_2fDIR_2eproto(); + return *default_instance_; } addressMappingSetResponse* addressMappingSetResponse::default_instance_ = NULL; @@ -3491,14 +3493,14 @@ bool addressMappingSetResponse::MergePartialFromCodedStream( DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive< ::google::protobuf::uint64, ::google::protobuf::internal::WireFormatLite::TYPE_FIXED64>( input, &new_version_))); - _set_bit(0); + set_has_new_version(); } else { goto handle_uninterpreted; } if (input->ExpectAtEnd()) return true; break; } - + default: { handle_uninterpreted: if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -3518,10 +3520,10 @@ bool addressMappingSetResponse::MergePartialFromCodedStream( void addressMappingSetResponse::SerializeWithCachedSizes( ::google::protobuf::io::CodedOutputStream* output) const { // optional fixed64 new_version = 1; - if (_has_bit(0)) { + if (has_new_version()) { ::google::protobuf::internal::WireFormatLite::WriteFixed64(1, this->new_version(), output); } - + if (!unknown_fields().empty()) { ::google::protobuf::internal::WireFormat::SerializeUnknownFields( unknown_fields(), output); @@ -3531,10 +3533,10 @@ void addressMappingSetResponse::SerializeWithCachedSizes( ::google::protobuf::uint8* addressMappingSetResponse::SerializeWithCachedSizesToArray( ::google::protobuf::uint8* target) const { // optional fixed64 new_version = 1; - if (_has_bit(0)) { + if (has_new_version()) { target = ::google::protobuf::internal::WireFormatLite::WriteFixed64ToArray(1, this->new_version(), target); } - + if (!unknown_fields().empty()) { target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray( unknown_fields(), target); @@ -3544,13 +3546,13 @@ void addressMappingSetResponse::SerializeWithCachedSizes( int addressMappingSetResponse::ByteSize() const { int total_size = 0; - + if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) { // optional fixed64 new_version = 1; if (has_new_version()) { total_size += 1 + 8; } - + } if (!unknown_fields().empty()) { total_size += @@ -3578,7 +3580,7 @@ void addressMappingSetResponse::MergeFrom(const ::google::protobuf::Message& fro void addressMappingSetResponse::MergeFrom(const addressMappingSetResponse& from) { GOOGLE_CHECK_NE(&from, this); if (from._has_bits_[0 / 32] & (0xffu << (0 % 32))) { - if (from._has_bit(0)) { + if (from.has_new_version()) { set_new_version(from.new_version()); } } @@ -3598,7 +3600,7 @@ void addressMappingSetResponse::CopyFrom(const addressMappingSetResponse& from) } bool addressMappingSetResponse::IsInitialized() const { - + return true; } @@ -3666,7 +3668,8 @@ const ::google::protobuf::Descriptor* globalTimeSGetResponse::descriptor() { } const globalTimeSGetResponse& globalTimeSGetResponse::default_instance() { - if (default_instance_ == NULL) protobuf_AddDesc_xtreemfs_2fDIR_2eproto(); return *default_instance_; + if (default_instance_ == NULL) protobuf_AddDesc_xtreemfs_2fDIR_2eproto(); + return *default_instance_; } globalTimeSGetResponse* globalTimeSGetResponse::default_instance_ = NULL; @@ -3696,14 +3699,14 @@ bool globalTimeSGetResponse::MergePartialFromCodedStream( DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive< ::google::protobuf::uint64, ::google::protobuf::internal::WireFormatLite::TYPE_FIXED64>( input, &time_in_seconds_))); - _set_bit(0); + set_has_time_in_seconds(); } else { goto handle_uninterpreted; } if (input->ExpectAtEnd()) return true; break; } - + default: { handle_uninterpreted: if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -3723,10 +3726,10 @@ bool globalTimeSGetResponse::MergePartialFromCodedStream( void globalTimeSGetResponse::SerializeWithCachedSizes( ::google::protobuf::io::CodedOutputStream* output) const { // required fixed64 time_in_seconds = 1; - if (_has_bit(0)) { + if (has_time_in_seconds()) { ::google::protobuf::internal::WireFormatLite::WriteFixed64(1, this->time_in_seconds(), output); } - + if (!unknown_fields().empty()) { ::google::protobuf::internal::WireFormat::SerializeUnknownFields( unknown_fields(), output); @@ -3736,10 +3739,10 @@ void globalTimeSGetResponse::SerializeWithCachedSizes( ::google::protobuf::uint8* globalTimeSGetResponse::SerializeWithCachedSizesToArray( ::google::protobuf::uint8* target) const { // required fixed64 time_in_seconds = 1; - if (_has_bit(0)) { + if (has_time_in_seconds()) { target = ::google::protobuf::internal::WireFormatLite::WriteFixed64ToArray(1, this->time_in_seconds(), target); } - + if (!unknown_fields().empty()) { target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray( unknown_fields(), target); @@ -3749,13 +3752,13 @@ void globalTimeSGetResponse::SerializeWithCachedSizes( int globalTimeSGetResponse::ByteSize() const { int total_size = 0; - + if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) { // required fixed64 time_in_seconds = 1; if (has_time_in_seconds()) { total_size += 1 + 8; } - + } if (!unknown_fields().empty()) { total_size += @@ -3783,7 +3786,7 @@ void globalTimeSGetResponse::MergeFrom(const ::google::protobuf::Message& from) void globalTimeSGetResponse::MergeFrom(const globalTimeSGetResponse& from) { GOOGLE_CHECK_NE(&from, this); if (from._has_bits_[0 / 32] & (0xffu << (0 % 32))) { - if (from._has_bit(0)) { + if (from.has_time_in_seconds()) { set_time_in_seconds(from.time_in_seconds()); } } @@ -3804,7 +3807,7 @@ void globalTimeSGetResponse::CopyFrom(const globalTimeSGetResponse& from) { bool globalTimeSGetResponse::IsInitialized() const { if ((_has_bits_[0] & 0x00000001) != 0x00000001) return false; - + return true; } @@ -3828,7 +3831,6 @@ void globalTimeSGetResponse::Swap(globalTimeSGetResponse* other) { // =================================================================== -const ::std::string serviceDeregisterRequest::_default_uuid_; #ifndef _MSC_VER const int serviceDeregisterRequest::kUuidFieldNumber; #endif // !_MSC_VER @@ -3849,7 +3851,7 @@ serviceDeregisterRequest::serviceDeregisterRequest(const serviceDeregisterReques void serviceDeregisterRequest::SharedCtor() { _cached_size_ = 0; - uuid_ = const_cast< ::std::string*>(&_default_uuid_); + uuid_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); ::memset(_has_bits_, 0, sizeof(_has_bits_)); } @@ -3858,7 +3860,7 @@ serviceDeregisterRequest::~serviceDeregisterRequest() { } void serviceDeregisterRequest::SharedDtor() { - if (uuid_ != &_default_uuid_) { + if (uuid_ != &::google::protobuf::internal::kEmptyString) { delete uuid_; } if (this != default_instance_) { @@ -3876,7 +3878,8 @@ const ::google::protobuf::Descriptor* serviceDeregisterRequest::descriptor() { } const serviceDeregisterRequest& serviceDeregisterRequest::default_instance() { - if (default_instance_ == NULL) protobuf_AddDesc_xtreemfs_2fDIR_2eproto(); return *default_instance_; + if (default_instance_ == NULL) protobuf_AddDesc_xtreemfs_2fDIR_2eproto(); + return *default_instance_; } serviceDeregisterRequest* serviceDeregisterRequest::default_instance_ = NULL; @@ -3887,8 +3890,8 @@ serviceDeregisterRequest* serviceDeregisterRequest::New() const { void serviceDeregisterRequest::Clear() { if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) { - if (_has_bit(0)) { - if (uuid_ != &_default_uuid_) { + if (has_uuid()) { + if (uuid_ != &::google::protobuf::internal::kEmptyString) { uuid_->clear(); } } @@ -3918,7 +3921,7 @@ bool serviceDeregisterRequest::MergePartialFromCodedStream( if (input->ExpectAtEnd()) return true; break; } - + default: { handle_uninterpreted: if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -3938,14 +3941,14 @@ bool serviceDeregisterRequest::MergePartialFromCodedStream( void serviceDeregisterRequest::SerializeWithCachedSizes( ::google::protobuf::io::CodedOutputStream* output) const { // required string uuid = 1; - if (_has_bit(0)) { + if (has_uuid()) { ::google::protobuf::internal::WireFormat::VerifyUTF8String( this->uuid().data(), this->uuid().length(), ::google::protobuf::internal::WireFormat::SERIALIZE); ::google::protobuf::internal::WireFormatLite::WriteString( 1, this->uuid(), output); } - + if (!unknown_fields().empty()) { ::google::protobuf::internal::WireFormat::SerializeUnknownFields( unknown_fields(), output); @@ -3955,7 +3958,7 @@ void serviceDeregisterRequest::SerializeWithCachedSizes( ::google::protobuf::uint8* serviceDeregisterRequest::SerializeWithCachedSizesToArray( ::google::protobuf::uint8* target) const { // required string uuid = 1; - if (_has_bit(0)) { + if (has_uuid()) { ::google::protobuf::internal::WireFormat::VerifyUTF8String( this->uuid().data(), this->uuid().length(), ::google::protobuf::internal::WireFormat::SERIALIZE); @@ -3963,7 +3966,7 @@ void serviceDeregisterRequest::SerializeWithCachedSizes( ::google::protobuf::internal::WireFormatLite::WriteStringToArray( 1, this->uuid(), target); } - + if (!unknown_fields().empty()) { target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray( unknown_fields(), target); @@ -3973,7 +3976,7 @@ void serviceDeregisterRequest::SerializeWithCachedSizes( int serviceDeregisterRequest::ByteSize() const { int total_size = 0; - + if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) { // required string uuid = 1; if (has_uuid()) { @@ -3981,7 +3984,7 @@ int serviceDeregisterRequest::ByteSize() const { ::google::protobuf::internal::WireFormatLite::StringSize( this->uuid()); } - + } if (!unknown_fields().empty()) { total_size += @@ -4009,7 +4012,7 @@ void serviceDeregisterRequest::MergeFrom(const ::google::protobuf::Message& from void serviceDeregisterRequest::MergeFrom(const serviceDeregisterRequest& from) { GOOGLE_CHECK_NE(&from, this); if (from._has_bits_[0 / 32] & (0xffu << (0 % 32))) { - if (from._has_bit(0)) { + if (from.has_uuid()) { set_uuid(from.uuid()); } } @@ -4030,7 +4033,7 @@ void serviceDeregisterRequest::CopyFrom(const serviceDeregisterRequest& from) { bool serviceDeregisterRequest::IsInitialized() const { if ((_has_bits_[0] & 0x00000001) != 0x00000001) return false; - + return true; } @@ -4054,7 +4057,6 @@ void serviceDeregisterRequest::Swap(serviceDeregisterRequest* other) { // =================================================================== -const ::std::string serviceGetByNameRequest::_default_name_; #ifndef _MSC_VER const int serviceGetByNameRequest::kNameFieldNumber; #endif // !_MSC_VER @@ -4075,7 +4077,7 @@ serviceGetByNameRequest::serviceGetByNameRequest(const serviceGetByNameRequest& void serviceGetByNameRequest::SharedCtor() { _cached_size_ = 0; - name_ = const_cast< ::std::string*>(&_default_name_); + name_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); ::memset(_has_bits_, 0, sizeof(_has_bits_)); } @@ -4084,7 +4086,7 @@ serviceGetByNameRequest::~serviceGetByNameRequest() { } void serviceGetByNameRequest::SharedDtor() { - if (name_ != &_default_name_) { + if (name_ != &::google::protobuf::internal::kEmptyString) { delete name_; } if (this != default_instance_) { @@ -4102,7 +4104,8 @@ const ::google::protobuf::Descriptor* serviceGetByNameRequest::descriptor() { } const serviceGetByNameRequest& serviceGetByNameRequest::default_instance() { - if (default_instance_ == NULL) protobuf_AddDesc_xtreemfs_2fDIR_2eproto(); return *default_instance_; + if (default_instance_ == NULL) protobuf_AddDesc_xtreemfs_2fDIR_2eproto(); + return *default_instance_; } serviceGetByNameRequest* serviceGetByNameRequest::default_instance_ = NULL; @@ -4113,8 +4116,8 @@ serviceGetByNameRequest* serviceGetByNameRequest::New() const { void serviceGetByNameRequest::Clear() { if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) { - if (_has_bit(0)) { - if (name_ != &_default_name_) { + if (has_name()) { + if (name_ != &::google::protobuf::internal::kEmptyString) { name_->clear(); } } @@ -4144,7 +4147,7 @@ bool serviceGetByNameRequest::MergePartialFromCodedStream( if (input->ExpectAtEnd()) return true; break; } - + default: { handle_uninterpreted: if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -4164,14 +4167,14 @@ bool serviceGetByNameRequest::MergePartialFromCodedStream( void serviceGetByNameRequest::SerializeWithCachedSizes( ::google::protobuf::io::CodedOutputStream* output) const { // required string name = 1; - if (_has_bit(0)) { + if (has_name()) { ::google::protobuf::internal::WireFormat::VerifyUTF8String( this->name().data(), this->name().length(), ::google::protobuf::internal::WireFormat::SERIALIZE); ::google::protobuf::internal::WireFormatLite::WriteString( 1, this->name(), output); } - + if (!unknown_fields().empty()) { ::google::protobuf::internal::WireFormat::SerializeUnknownFields( unknown_fields(), output); @@ -4181,7 +4184,7 @@ void serviceGetByNameRequest::SerializeWithCachedSizes( ::google::protobuf::uint8* serviceGetByNameRequest::SerializeWithCachedSizesToArray( ::google::protobuf::uint8* target) const { // required string name = 1; - if (_has_bit(0)) { + if (has_name()) { ::google::protobuf::internal::WireFormat::VerifyUTF8String( this->name().data(), this->name().length(), ::google::protobuf::internal::WireFormat::SERIALIZE); @@ -4189,7 +4192,7 @@ void serviceGetByNameRequest::SerializeWithCachedSizes( ::google::protobuf::internal::WireFormatLite::WriteStringToArray( 1, this->name(), target); } - + if (!unknown_fields().empty()) { target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray( unknown_fields(), target); @@ -4199,7 +4202,7 @@ void serviceGetByNameRequest::SerializeWithCachedSizes( int serviceGetByNameRequest::ByteSize() const { int total_size = 0; - + if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) { // required string name = 1; if (has_name()) { @@ -4207,7 +4210,7 @@ int serviceGetByNameRequest::ByteSize() const { ::google::protobuf::internal::WireFormatLite::StringSize( this->name()); } - + } if (!unknown_fields().empty()) { total_size += @@ -4235,7 +4238,7 @@ void serviceGetByNameRequest::MergeFrom(const ::google::protobuf::Message& from) void serviceGetByNameRequest::MergeFrom(const serviceGetByNameRequest& from) { GOOGLE_CHECK_NE(&from, this); if (from._has_bits_[0 / 32] & (0xffu << (0 % 32))) { - if (from._has_bit(0)) { + if (from.has_name()) { set_name(from.name()); } } @@ -4256,7 +4259,7 @@ void serviceGetByNameRequest::CopyFrom(const serviceGetByNameRequest& from) { bool serviceGetByNameRequest::IsInitialized() const { if ((_has_bits_[0] & 0x00000001) != 0x00000001) return false; - + return true; } @@ -4280,7 +4283,6 @@ void serviceGetByNameRequest::Swap(serviceGetByNameRequest* other) { // =================================================================== -const ::std::string serviceGetByUUIDRequest::_default_name_; #ifndef _MSC_VER const int serviceGetByUUIDRequest::kNameFieldNumber; #endif // !_MSC_VER @@ -4301,7 +4303,7 @@ serviceGetByUUIDRequest::serviceGetByUUIDRequest(const serviceGetByUUIDRequest& void serviceGetByUUIDRequest::SharedCtor() { _cached_size_ = 0; - name_ = const_cast< ::std::string*>(&_default_name_); + name_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); ::memset(_has_bits_, 0, sizeof(_has_bits_)); } @@ -4310,7 +4312,7 @@ serviceGetByUUIDRequest::~serviceGetByUUIDRequest() { } void serviceGetByUUIDRequest::SharedDtor() { - if (name_ != &_default_name_) { + if (name_ != &::google::protobuf::internal::kEmptyString) { delete name_; } if (this != default_instance_) { @@ -4328,7 +4330,8 @@ const ::google::protobuf::Descriptor* serviceGetByUUIDRequest::descriptor() { } const serviceGetByUUIDRequest& serviceGetByUUIDRequest::default_instance() { - if (default_instance_ == NULL) protobuf_AddDesc_xtreemfs_2fDIR_2eproto(); return *default_instance_; + if (default_instance_ == NULL) protobuf_AddDesc_xtreemfs_2fDIR_2eproto(); + return *default_instance_; } serviceGetByUUIDRequest* serviceGetByUUIDRequest::default_instance_ = NULL; @@ -4339,8 +4342,8 @@ serviceGetByUUIDRequest* serviceGetByUUIDRequest::New() const { void serviceGetByUUIDRequest::Clear() { if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) { - if (_has_bit(0)) { - if (name_ != &_default_name_) { + if (has_name()) { + if (name_ != &::google::protobuf::internal::kEmptyString) { name_->clear(); } } @@ -4370,7 +4373,7 @@ bool serviceGetByUUIDRequest::MergePartialFromCodedStream( if (input->ExpectAtEnd()) return true; break; } - + default: { handle_uninterpreted: if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -4390,14 +4393,14 @@ bool serviceGetByUUIDRequest::MergePartialFromCodedStream( void serviceGetByUUIDRequest::SerializeWithCachedSizes( ::google::protobuf::io::CodedOutputStream* output) const { // required string name = 1; - if (_has_bit(0)) { + if (has_name()) { ::google::protobuf::internal::WireFormat::VerifyUTF8String( this->name().data(), this->name().length(), ::google::protobuf::internal::WireFormat::SERIALIZE); ::google::protobuf::internal::WireFormatLite::WriteString( 1, this->name(), output); } - + if (!unknown_fields().empty()) { ::google::protobuf::internal::WireFormat::SerializeUnknownFields( unknown_fields(), output); @@ -4407,7 +4410,7 @@ void serviceGetByUUIDRequest::SerializeWithCachedSizes( ::google::protobuf::uint8* serviceGetByUUIDRequest::SerializeWithCachedSizesToArray( ::google::protobuf::uint8* target) const { // required string name = 1; - if (_has_bit(0)) { + if (has_name()) { ::google::protobuf::internal::WireFormat::VerifyUTF8String( this->name().data(), this->name().length(), ::google::protobuf::internal::WireFormat::SERIALIZE); @@ -4415,7 +4418,7 @@ void serviceGetByUUIDRequest::SerializeWithCachedSizes( ::google::protobuf::internal::WireFormatLite::WriteStringToArray( 1, this->name(), target); } - + if (!unknown_fields().empty()) { target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray( unknown_fields(), target); @@ -4425,7 +4428,7 @@ void serviceGetByUUIDRequest::SerializeWithCachedSizes( int serviceGetByUUIDRequest::ByteSize() const { int total_size = 0; - + if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) { // required string name = 1; if (has_name()) { @@ -4433,7 +4436,7 @@ int serviceGetByUUIDRequest::ByteSize() const { ::google::protobuf::internal::WireFormatLite::StringSize( this->name()); } - + } if (!unknown_fields().empty()) { total_size += @@ -4461,7 +4464,7 @@ void serviceGetByUUIDRequest::MergeFrom(const ::google::protobuf::Message& from) void serviceGetByUUIDRequest::MergeFrom(const serviceGetByUUIDRequest& from) { GOOGLE_CHECK_NE(&from, this); if (from._has_bits_[0 / 32] & (0xffu << (0 % 32))) { - if (from._has_bit(0)) { + if (from.has_name()) { set_name(from.name()); } } @@ -4482,7 +4485,7 @@ void serviceGetByUUIDRequest::CopyFrom(const serviceGetByUUIDRequest& from) { bool serviceGetByUUIDRequest::IsInitialized() const { if ((_has_bits_[0] & 0x00000001) != 0x00000001) return false; - + return true; } @@ -4550,7 +4553,8 @@ const ::google::protobuf::Descriptor* serviceGetByTypeRequest::descriptor() { } const serviceGetByTypeRequest& serviceGetByTypeRequest::default_instance() { - if (default_instance_ == NULL) protobuf_AddDesc_xtreemfs_2fDIR_2eproto(); return *default_instance_; + if (default_instance_ == NULL) protobuf_AddDesc_xtreemfs_2fDIR_2eproto(); + return *default_instance_; } serviceGetByTypeRequest* serviceGetByTypeRequest::default_instance_ = NULL; @@ -4581,8 +4585,8 @@ bool serviceGetByTypeRequest::MergePartialFromCodedStream( DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive< int, ::google::protobuf::internal::WireFormatLite::TYPE_ENUM>( input, &value))); - if (xtreemfs::pbrpc::ServiceType_IsValid(value)) { - set_type(static_cast< xtreemfs::pbrpc::ServiceType >(value)); + if (::xtreemfs::pbrpc::ServiceType_IsValid(value)) { + set_type(static_cast< ::xtreemfs::pbrpc::ServiceType >(value)); } else { mutable_unknown_fields()->AddVarint(1, value); } @@ -4592,7 +4596,7 @@ bool serviceGetByTypeRequest::MergePartialFromCodedStream( if (input->ExpectAtEnd()) return true; break; } - + default: { handle_uninterpreted: if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -4612,11 +4616,11 @@ bool serviceGetByTypeRequest::MergePartialFromCodedStream( void serviceGetByTypeRequest::SerializeWithCachedSizes( ::google::protobuf::io::CodedOutputStream* output) const { // required .xtreemfs.pbrpc.ServiceType type = 1; - if (_has_bit(0)) { + if (has_type()) { ::google::protobuf::internal::WireFormatLite::WriteEnum( 1, this->type(), output); } - + if (!unknown_fields().empty()) { ::google::protobuf::internal::WireFormat::SerializeUnknownFields( unknown_fields(), output); @@ -4626,11 +4630,11 @@ void serviceGetByTypeRequest::SerializeWithCachedSizes( ::google::protobuf::uint8* serviceGetByTypeRequest::SerializeWithCachedSizesToArray( ::google::protobuf::uint8* target) const { // required .xtreemfs.pbrpc.ServiceType type = 1; - if (_has_bit(0)) { + if (has_type()) { target = ::google::protobuf::internal::WireFormatLite::WriteEnumToArray( 1, this->type(), target); } - + if (!unknown_fields().empty()) { target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray( unknown_fields(), target); @@ -4640,14 +4644,14 @@ void serviceGetByTypeRequest::SerializeWithCachedSizes( int serviceGetByTypeRequest::ByteSize() const { int total_size = 0; - + if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) { // required .xtreemfs.pbrpc.ServiceType type = 1; if (has_type()) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::EnumSize(this->type()); } - + } if (!unknown_fields().empty()) { total_size += @@ -4675,7 +4679,7 @@ void serviceGetByTypeRequest::MergeFrom(const ::google::protobuf::Message& from) void serviceGetByTypeRequest::MergeFrom(const serviceGetByTypeRequest& from) { GOOGLE_CHECK_NE(&from, this); if (from._has_bits_[0 / 32] & (0xffu << (0 % 32))) { - if (from._has_bit(0)) { + if (from.has_type()) { set_type(from.type()); } } @@ -4696,7 +4700,7 @@ void serviceGetByTypeRequest::CopyFrom(const serviceGetByTypeRequest& from) { bool serviceGetByTypeRequest::IsInitialized() const { if ((_has_bits_[0] & 0x00000001) != 0x00000001) return false; - + return true; } @@ -4766,7 +4770,8 @@ const ::google::protobuf::Descriptor* serviceRegisterRequest::descriptor() { } const serviceRegisterRequest& serviceRegisterRequest::default_instance() { - if (default_instance_ == NULL) protobuf_AddDesc_xtreemfs_2fDIR_2eproto(); return *default_instance_; + if (default_instance_ == NULL) protobuf_AddDesc_xtreemfs_2fDIR_2eproto(); + return *default_instance_; } serviceRegisterRequest* serviceRegisterRequest::default_instance_ = NULL; @@ -4777,7 +4782,7 @@ serviceRegisterRequest* serviceRegisterRequest::New() const { void serviceRegisterRequest::Clear() { if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) { - if (_has_bit(0)) { + if (has_service()) { if (service_ != NULL) service_->::xtreemfs::pbrpc::Service::Clear(); } } @@ -4803,7 +4808,7 @@ bool serviceRegisterRequest::MergePartialFromCodedStream( if (input->ExpectAtEnd()) return true; break; } - + default: { handle_uninterpreted: if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -4823,11 +4828,11 @@ bool serviceRegisterRequest::MergePartialFromCodedStream( void serviceRegisterRequest::SerializeWithCachedSizes( ::google::protobuf::io::CodedOutputStream* output) const { // required .xtreemfs.pbrpc.Service service = 1; - if (_has_bit(0)) { + if (has_service()) { ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray( 1, this->service(), output); } - + if (!unknown_fields().empty()) { ::google::protobuf::internal::WireFormat::SerializeUnknownFields( unknown_fields(), output); @@ -4837,12 +4842,12 @@ void serviceRegisterRequest::SerializeWithCachedSizes( ::google::protobuf::uint8* serviceRegisterRequest::SerializeWithCachedSizesToArray( ::google::protobuf::uint8* target) const { // required .xtreemfs.pbrpc.Service service = 1; - if (_has_bit(0)) { + if (has_service()) { target = ::google::protobuf::internal::WireFormatLite:: WriteMessageNoVirtualToArray( 1, this->service(), target); } - + if (!unknown_fields().empty()) { target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray( unknown_fields(), target); @@ -4852,7 +4857,7 @@ void serviceRegisterRequest::SerializeWithCachedSizes( int serviceRegisterRequest::ByteSize() const { int total_size = 0; - + if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) { // required .xtreemfs.pbrpc.Service service = 1; if (has_service()) { @@ -4860,7 +4865,7 @@ int serviceRegisterRequest::ByteSize() const { ::google::protobuf::internal::WireFormatLite::MessageSizeNoVirtual( this->service()); } - + } if (!unknown_fields().empty()) { total_size += @@ -4888,7 +4893,7 @@ void serviceRegisterRequest::MergeFrom(const ::google::protobuf::Message& from) void serviceRegisterRequest::MergeFrom(const serviceRegisterRequest& from) { GOOGLE_CHECK_NE(&from, this); if (from._has_bits_[0 / 32] & (0xffu << (0 % 32))) { - if (from._has_bit(0)) { + if (from.has_service()) { mutable_service()->::xtreemfs::pbrpc::Service::MergeFrom(from.service()); } } @@ -4909,7 +4914,7 @@ void serviceRegisterRequest::CopyFrom(const serviceRegisterRequest& from) { bool serviceRegisterRequest::IsInitialized() const { if ((_has_bits_[0] & 0x00000001) != 0x00000001) return false; - + if (has_service()) { if (!this->service().IsInitialized()) return false; } @@ -4980,7 +4985,8 @@ const ::google::protobuf::Descriptor* serviceRegisterResponse::descriptor() { } const serviceRegisterResponse& serviceRegisterResponse::default_instance() { - if (default_instance_ == NULL) protobuf_AddDesc_xtreemfs_2fDIR_2eproto(); return *default_instance_; + if (default_instance_ == NULL) protobuf_AddDesc_xtreemfs_2fDIR_2eproto(); + return *default_instance_; } serviceRegisterResponse* serviceRegisterResponse::default_instance_ = NULL; @@ -5010,14 +5016,14 @@ bool serviceRegisterResponse::MergePartialFromCodedStream( DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive< ::google::protobuf::uint64, ::google::protobuf::internal::WireFormatLite::TYPE_FIXED64>( input, &new_version_))); - _set_bit(0); + set_has_new_version(); } else { goto handle_uninterpreted; } if (input->ExpectAtEnd()) return true; break; } - + default: { handle_uninterpreted: if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -5037,10 +5043,10 @@ bool serviceRegisterResponse::MergePartialFromCodedStream( void serviceRegisterResponse::SerializeWithCachedSizes( ::google::protobuf::io::CodedOutputStream* output) const { // required fixed64 new_version = 1; - if (_has_bit(0)) { + if (has_new_version()) { ::google::protobuf::internal::WireFormatLite::WriteFixed64(1, this->new_version(), output); } - + if (!unknown_fields().empty()) { ::google::protobuf::internal::WireFormat::SerializeUnknownFields( unknown_fields(), output); @@ -5050,10 +5056,10 @@ void serviceRegisterResponse::SerializeWithCachedSizes( ::google::protobuf::uint8* serviceRegisterResponse::SerializeWithCachedSizesToArray( ::google::protobuf::uint8* target) const { // required fixed64 new_version = 1; - if (_has_bit(0)) { + if (has_new_version()) { target = ::google::protobuf::internal::WireFormatLite::WriteFixed64ToArray(1, this->new_version(), target); } - + if (!unknown_fields().empty()) { target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray( unknown_fields(), target); @@ -5063,13 +5069,13 @@ void serviceRegisterResponse::SerializeWithCachedSizes( int serviceRegisterResponse::ByteSize() const { int total_size = 0; - + if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) { // required fixed64 new_version = 1; if (has_new_version()) { total_size += 1 + 8; } - + } if (!unknown_fields().empty()) { total_size += @@ -5097,7 +5103,7 @@ void serviceRegisterResponse::MergeFrom(const ::google::protobuf::Message& from) void serviceRegisterResponse::MergeFrom(const serviceRegisterResponse& from) { GOOGLE_CHECK_NE(&from, this); if (from._has_bits_[0 / 32] & (0xffu << (0 % 32))) { - if (from._has_bit(0)) { + if (from.has_new_version()) { set_new_version(from.new_version()); } } @@ -5118,7 +5124,7 @@ void serviceRegisterResponse::CopyFrom(const serviceRegisterResponse& from) { bool serviceRegisterResponse::IsInitialized() const { if ((_has_bits_[0] & 0x00000001) != 0x00000001) return false; - + return true; } @@ -5142,7 +5148,6 @@ void serviceRegisterResponse::Swap(serviceRegisterResponse* other) { // =================================================================== -const ::std::string configurationGetRequest::_default_uuid_; #ifndef _MSC_VER const int configurationGetRequest::kUuidFieldNumber; #endif // !_MSC_VER @@ -5163,7 +5168,7 @@ configurationGetRequest::configurationGetRequest(const configurationGetRequest& void configurationGetRequest::SharedCtor() { _cached_size_ = 0; - uuid_ = const_cast< ::std::string*>(&_default_uuid_); + uuid_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); ::memset(_has_bits_, 0, sizeof(_has_bits_)); } @@ -5172,7 +5177,7 @@ configurationGetRequest::~configurationGetRequest() { } void configurationGetRequest::SharedDtor() { - if (uuid_ != &_default_uuid_) { + if (uuid_ != &::google::protobuf::internal::kEmptyString) { delete uuid_; } if (this != default_instance_) { @@ -5190,7 +5195,8 @@ const ::google::protobuf::Descriptor* configurationGetRequest::descriptor() { } const configurationGetRequest& configurationGetRequest::default_instance() { - if (default_instance_ == NULL) protobuf_AddDesc_xtreemfs_2fDIR_2eproto(); return *default_instance_; + if (default_instance_ == NULL) protobuf_AddDesc_xtreemfs_2fDIR_2eproto(); + return *default_instance_; } configurationGetRequest* configurationGetRequest::default_instance_ = NULL; @@ -5201,8 +5207,8 @@ configurationGetRequest* configurationGetRequest::New() const { void configurationGetRequest::Clear() { if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) { - if (_has_bit(0)) { - if (uuid_ != &_default_uuid_) { + if (has_uuid()) { + if (uuid_ != &::google::protobuf::internal::kEmptyString) { uuid_->clear(); } } @@ -5232,7 +5238,7 @@ bool configurationGetRequest::MergePartialFromCodedStream( if (input->ExpectAtEnd()) return true; break; } - + default: { handle_uninterpreted: if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -5252,14 +5258,14 @@ bool configurationGetRequest::MergePartialFromCodedStream( void configurationGetRequest::SerializeWithCachedSizes( ::google::protobuf::io::CodedOutputStream* output) const { // required string uuid = 1; - if (_has_bit(0)) { + if (has_uuid()) { ::google::protobuf::internal::WireFormat::VerifyUTF8String( this->uuid().data(), this->uuid().length(), ::google::protobuf::internal::WireFormat::SERIALIZE); ::google::protobuf::internal::WireFormatLite::WriteString( 1, this->uuid(), output); } - + if (!unknown_fields().empty()) { ::google::protobuf::internal::WireFormat::SerializeUnknownFields( unknown_fields(), output); @@ -5269,7 +5275,7 @@ void configurationGetRequest::SerializeWithCachedSizes( ::google::protobuf::uint8* configurationGetRequest::SerializeWithCachedSizesToArray( ::google::protobuf::uint8* target) const { // required string uuid = 1; - if (_has_bit(0)) { + if (has_uuid()) { ::google::protobuf::internal::WireFormat::VerifyUTF8String( this->uuid().data(), this->uuid().length(), ::google::protobuf::internal::WireFormat::SERIALIZE); @@ -5277,7 +5283,7 @@ void configurationGetRequest::SerializeWithCachedSizes( ::google::protobuf::internal::WireFormatLite::WriteStringToArray( 1, this->uuid(), target); } - + if (!unknown_fields().empty()) { target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray( unknown_fields(), target); @@ -5287,7 +5293,7 @@ void configurationGetRequest::SerializeWithCachedSizes( int configurationGetRequest::ByteSize() const { int total_size = 0; - + if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) { // required string uuid = 1; if (has_uuid()) { @@ -5295,7 +5301,7 @@ int configurationGetRequest::ByteSize() const { ::google::protobuf::internal::WireFormatLite::StringSize( this->uuid()); } - + } if (!unknown_fields().empty()) { total_size += @@ -5323,7 +5329,7 @@ void configurationGetRequest::MergeFrom(const ::google::protobuf::Message& from) void configurationGetRequest::MergeFrom(const configurationGetRequest& from) { GOOGLE_CHECK_NE(&from, this); if (from._has_bits_[0 / 32] & (0xffu << (0 % 32))) { - if (from._has_bit(0)) { + if (from.has_uuid()) { set_uuid(from.uuid()); } } @@ -5344,7 +5350,7 @@ void configurationGetRequest::CopyFrom(const configurationGetRequest& from) { bool configurationGetRequest::IsInitialized() const { if ((_has_bits_[0] & 0x00000001) != 0x00000001) return false; - + return true; } @@ -5412,7 +5418,8 @@ const ::google::protobuf::Descriptor* configurationSetResponse::descriptor() { } const configurationSetResponse& configurationSetResponse::default_instance() { - if (default_instance_ == NULL) protobuf_AddDesc_xtreemfs_2fDIR_2eproto(); return *default_instance_; + if (default_instance_ == NULL) protobuf_AddDesc_xtreemfs_2fDIR_2eproto(); + return *default_instance_; } configurationSetResponse* configurationSetResponse::default_instance_ = NULL; @@ -5442,14 +5449,14 @@ bool configurationSetResponse::MergePartialFromCodedStream( DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive< ::google::protobuf::uint64, ::google::protobuf::internal::WireFormatLite::TYPE_FIXED64>( input, &new_version_))); - _set_bit(0); + set_has_new_version(); } else { goto handle_uninterpreted; } if (input->ExpectAtEnd()) return true; break; } - + default: { handle_uninterpreted: if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -5469,10 +5476,10 @@ bool configurationSetResponse::MergePartialFromCodedStream( void configurationSetResponse::SerializeWithCachedSizes( ::google::protobuf::io::CodedOutputStream* output) const { // optional fixed64 new_version = 1; - if (_has_bit(0)) { + if (has_new_version()) { ::google::protobuf::internal::WireFormatLite::WriteFixed64(1, this->new_version(), output); } - + if (!unknown_fields().empty()) { ::google::protobuf::internal::WireFormat::SerializeUnknownFields( unknown_fields(), output); @@ -5482,10 +5489,10 @@ void configurationSetResponse::SerializeWithCachedSizes( ::google::protobuf::uint8* configurationSetResponse::SerializeWithCachedSizesToArray( ::google::protobuf::uint8* target) const { // optional fixed64 new_version = 1; - if (_has_bit(0)) { + if (has_new_version()) { target = ::google::protobuf::internal::WireFormatLite::WriteFixed64ToArray(1, this->new_version(), target); } - + if (!unknown_fields().empty()) { target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray( unknown_fields(), target); @@ -5495,13 +5502,13 @@ void configurationSetResponse::SerializeWithCachedSizes( int configurationSetResponse::ByteSize() const { int total_size = 0; - + if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) { // optional fixed64 new_version = 1; if (has_new_version()) { total_size += 1 + 8; } - + } if (!unknown_fields().empty()) { total_size += @@ -5529,7 +5536,7 @@ void configurationSetResponse::MergeFrom(const ::google::protobuf::Message& from void configurationSetResponse::MergeFrom(const configurationSetResponse& from) { GOOGLE_CHECK_NE(&from, this); if (from._has_bits_[0 / 32] & (0xffu << (0 % 32))) { - if (from._has_bit(0)) { + if (from.has_new_version()) { set_new_version(from.new_version()); } } @@ -5549,7 +5556,7 @@ void configurationSetResponse::CopyFrom(const configurationSetResponse& from) { } bool configurationSetResponse::IsInitialized() const { - + return true; } @@ -5571,465 +5578,6 @@ void configurationSetResponse::Swap(configurationSetResponse* other) { } -// =================================================================== - -DirectoryService::~DirectoryService() {} - -const ::google::protobuf::ServiceDescriptor* DirectoryService::descriptor() { - protobuf_AssignDescriptorsOnce(); - return DirectoryService_descriptor_; -} - -const ::google::protobuf::ServiceDescriptor* DirectoryService::GetDescriptor() { - protobuf_AssignDescriptorsOnce(); - return DirectoryService_descriptor_; -} - -void DirectoryService::xtreemfs_address_mappings_get(::google::protobuf::RpcController* controller, - const ::xtreemfs::pbrpc::addressMappingGetRequest*, - ::xtreemfs::pbrpc::AddressMappingSet*, - ::google::protobuf::Closure* done) { - controller->SetFailed("Method xtreemfs_address_mappings_get() not implemented."); - done->Run(); -} - -void DirectoryService::xtreemfs_address_mappings_remove(::google::protobuf::RpcController* controller, - const ::xtreemfs::pbrpc::addressMappingGetRequest*, - ::xtreemfs::pbrpc::emptyResponse*, - ::google::protobuf::Closure* done) { - controller->SetFailed("Method xtreemfs_address_mappings_remove() not implemented."); - done->Run(); -} - -void DirectoryService::xtreemfs_address_mappings_set(::google::protobuf::RpcController* controller, - const ::xtreemfs::pbrpc::AddressMappingSet*, - ::xtreemfs::pbrpc::addressMappingSetResponse*, - ::google::protobuf::Closure* done) { - controller->SetFailed("Method xtreemfs_address_mappings_set() not implemented."); - done->Run(); -} - -void DirectoryService::xtreemfs_discover_dir(::google::protobuf::RpcController* controller, - const ::xtreemfs::pbrpc::emptyRequest*, - ::xtreemfs::pbrpc::DirService*, - ::google::protobuf::Closure* done) { - controller->SetFailed("Method xtreemfs_discover_dir() not implemented."); - done->Run(); -} - -void DirectoryService::xtreemfs_global_time_s_get(::google::protobuf::RpcController* controller, - const ::xtreemfs::pbrpc::emptyRequest*, - ::xtreemfs::pbrpc::globalTimeSGetResponse*, - ::google::protobuf::Closure* done) { - controller->SetFailed("Method xtreemfs_global_time_s_get() not implemented."); - done->Run(); -} - -void DirectoryService::xtreemfs_service_deregister(::google::protobuf::RpcController* controller, - const ::xtreemfs::pbrpc::serviceDeregisterRequest*, - ::xtreemfs::pbrpc::emptyResponse*, - ::google::protobuf::Closure* done) { - controller->SetFailed("Method xtreemfs_service_deregister() not implemented."); - done->Run(); -} - -void DirectoryService::xtreemfs_service_get_by_name(::google::protobuf::RpcController* controller, - const ::xtreemfs::pbrpc::serviceGetByNameRequest*, - ::xtreemfs::pbrpc::ServiceSet*, - ::google::protobuf::Closure* done) { - controller->SetFailed("Method xtreemfs_service_get_by_name() not implemented."); - done->Run(); -} - -void DirectoryService::xtreemfs_service_get_by_type(::google::protobuf::RpcController* controller, - const ::xtreemfs::pbrpc::serviceGetByTypeRequest*, - ::xtreemfs::pbrpc::ServiceSet*, - ::google::protobuf::Closure* done) { - controller->SetFailed("Method xtreemfs_service_get_by_type() not implemented."); - done->Run(); -} - -void DirectoryService::xtreemfs_service_get_by_uuid(::google::protobuf::RpcController* controller, - const ::xtreemfs::pbrpc::serviceGetByUUIDRequest*, - ::xtreemfs::pbrpc::ServiceSet*, - ::google::protobuf::Closure* done) { - controller->SetFailed("Method xtreemfs_service_get_by_uuid() not implemented."); - done->Run(); -} - -void DirectoryService::xtreemfs_service_offline(::google::protobuf::RpcController* controller, - const ::xtreemfs::pbrpc::serviceGetByUUIDRequest*, - ::xtreemfs::pbrpc::emptyResponse*, - ::google::protobuf::Closure* done) { - controller->SetFailed("Method xtreemfs_service_offline() not implemented."); - done->Run(); -} - -void DirectoryService::xtreemfs_service_register(::google::protobuf::RpcController* controller, - const ::xtreemfs::pbrpc::serviceRegisterRequest*, - ::xtreemfs::pbrpc::serviceRegisterResponse*, - ::google::protobuf::Closure* done) { - controller->SetFailed("Method xtreemfs_service_register() not implemented."); - done->Run(); -} - -void DirectoryService::xtreemfs_checkpoint(::google::protobuf::RpcController* controller, - const ::xtreemfs::pbrpc::emptyRequest*, - ::xtreemfs::pbrpc::emptyResponse*, - ::google::protobuf::Closure* done) { - controller->SetFailed("Method xtreemfs_checkpoint() not implemented."); - done->Run(); -} - -void DirectoryService::xtreemfs_shutdown(::google::protobuf::RpcController* controller, - const ::xtreemfs::pbrpc::emptyRequest*, - ::xtreemfs::pbrpc::emptyResponse*, - ::google::protobuf::Closure* done) { - controller->SetFailed("Method xtreemfs_shutdown() not implemented."); - done->Run(); -} - -void DirectoryService::xtreemfs_configuration_get(::google::protobuf::RpcController* controller, - const ::xtreemfs::pbrpc::configurationGetRequest*, - ::xtreemfs::pbrpc::Configuration*, - ::google::protobuf::Closure* done) { - controller->SetFailed("Method xtreemfs_configuration_get() not implemented."); - done->Run(); -} - -void DirectoryService::xtreemfs_configuration_set(::google::protobuf::RpcController* controller, - const ::xtreemfs::pbrpc::Configuration*, - ::xtreemfs::pbrpc::configurationSetResponse*, - ::google::protobuf::Closure* done) { - controller->SetFailed("Method xtreemfs_configuration_set() not implemented."); - done->Run(); -} - -void DirectoryService::xtreemfs_vivaldi_client_update(::google::protobuf::RpcController* controller, - const ::xtreemfs::pbrpc::VivaldiCoordinates*, - ::xtreemfs::pbrpc::emptyResponse*, - ::google::protobuf::Closure* done) { - controller->SetFailed("Method xtreemfs_vivaldi_client_update() not implemented."); - done->Run(); -} - -void DirectoryService::CallMethod(const ::google::protobuf::MethodDescriptor* method, - ::google::protobuf::RpcController* controller, - const ::google::protobuf::Message* request, - ::google::protobuf::Message* response, - ::google::protobuf::Closure* done) { - GOOGLE_DCHECK_EQ(method->service(), DirectoryService_descriptor_); - switch(method->index()) { - case 0: - xtreemfs_address_mappings_get(controller, - ::google::protobuf::down_cast(request), - ::google::protobuf::down_cast< ::xtreemfs::pbrpc::AddressMappingSet*>(response), - done); - break; - case 1: - xtreemfs_address_mappings_remove(controller, - ::google::protobuf::down_cast(request), - ::google::protobuf::down_cast< ::xtreemfs::pbrpc::emptyResponse*>(response), - done); - break; - case 2: - xtreemfs_address_mappings_set(controller, - ::google::protobuf::down_cast(request), - ::google::protobuf::down_cast< ::xtreemfs::pbrpc::addressMappingSetResponse*>(response), - done); - break; - case 3: - xtreemfs_discover_dir(controller, - ::google::protobuf::down_cast(request), - ::google::protobuf::down_cast< ::xtreemfs::pbrpc::DirService*>(response), - done); - break; - case 4: - xtreemfs_global_time_s_get(controller, - ::google::protobuf::down_cast(request), - ::google::protobuf::down_cast< ::xtreemfs::pbrpc::globalTimeSGetResponse*>(response), - done); - break; - case 5: - xtreemfs_service_deregister(controller, - ::google::protobuf::down_cast(request), - ::google::protobuf::down_cast< ::xtreemfs::pbrpc::emptyResponse*>(response), - done); - break; - case 6: - xtreemfs_service_get_by_name(controller, - ::google::protobuf::down_cast(request), - ::google::protobuf::down_cast< ::xtreemfs::pbrpc::ServiceSet*>(response), - done); - break; - case 7: - xtreemfs_service_get_by_type(controller, - ::google::protobuf::down_cast(request), - ::google::protobuf::down_cast< ::xtreemfs::pbrpc::ServiceSet*>(response), - done); - break; - case 8: - xtreemfs_service_get_by_uuid(controller, - ::google::protobuf::down_cast(request), - ::google::protobuf::down_cast< ::xtreemfs::pbrpc::ServiceSet*>(response), - done); - break; - case 9: - xtreemfs_service_offline(controller, - ::google::protobuf::down_cast(request), - ::google::protobuf::down_cast< ::xtreemfs::pbrpc::emptyResponse*>(response), - done); - break; - case 10: - xtreemfs_service_register(controller, - ::google::protobuf::down_cast(request), - ::google::protobuf::down_cast< ::xtreemfs::pbrpc::serviceRegisterResponse*>(response), - done); - break; - case 11: - xtreemfs_checkpoint(controller, - ::google::protobuf::down_cast(request), - ::google::protobuf::down_cast< ::xtreemfs::pbrpc::emptyResponse*>(response), - done); - break; - case 12: - xtreemfs_shutdown(controller, - ::google::protobuf::down_cast(request), - ::google::protobuf::down_cast< ::xtreemfs::pbrpc::emptyResponse*>(response), - done); - break; - case 13: - xtreemfs_configuration_get(controller, - ::google::protobuf::down_cast(request), - ::google::protobuf::down_cast< ::xtreemfs::pbrpc::Configuration*>(response), - done); - break; - case 14: - xtreemfs_configuration_set(controller, - ::google::protobuf::down_cast(request), - ::google::protobuf::down_cast< ::xtreemfs::pbrpc::configurationSetResponse*>(response), - done); - break; - case 15: - xtreemfs_vivaldi_client_update(controller, - ::google::protobuf::down_cast(request), - ::google::protobuf::down_cast< ::xtreemfs::pbrpc::emptyResponse*>(response), - done); - break; - default: - GOOGLE_LOG(FATAL) << "Bad method index; this should never happen."; - break; - } -} - -const ::google::protobuf::Message& DirectoryService::GetRequestPrototype( - const ::google::protobuf::MethodDescriptor* method) const { - GOOGLE_DCHECK_EQ(method->service(), descriptor()); - switch(method->index()) { - case 0: - return ::xtreemfs::pbrpc::addressMappingGetRequest::default_instance(); - case 1: - return ::xtreemfs::pbrpc::addressMappingGetRequest::default_instance(); - case 2: - return ::xtreemfs::pbrpc::AddressMappingSet::default_instance(); - case 3: - return ::xtreemfs::pbrpc::emptyRequest::default_instance(); - case 4: - return ::xtreemfs::pbrpc::emptyRequest::default_instance(); - case 5: - return ::xtreemfs::pbrpc::serviceDeregisterRequest::default_instance(); - case 6: - return ::xtreemfs::pbrpc::serviceGetByNameRequest::default_instance(); - case 7: - return ::xtreemfs::pbrpc::serviceGetByTypeRequest::default_instance(); - case 8: - return ::xtreemfs::pbrpc::serviceGetByUUIDRequest::default_instance(); - case 9: - return ::xtreemfs::pbrpc::serviceGetByUUIDRequest::default_instance(); - case 10: - return ::xtreemfs::pbrpc::serviceRegisterRequest::default_instance(); - case 11: - return ::xtreemfs::pbrpc::emptyRequest::default_instance(); - case 12: - return ::xtreemfs::pbrpc::emptyRequest::default_instance(); - case 13: - return ::xtreemfs::pbrpc::configurationGetRequest::default_instance(); - case 14: - return ::xtreemfs::pbrpc::Configuration::default_instance(); - case 15: - return ::xtreemfs::pbrpc::VivaldiCoordinates::default_instance(); - default: - GOOGLE_LOG(FATAL) << "Bad method index; this should never happen."; - return *reinterpret_cast< ::google::protobuf::Message*>(NULL); - } -} - -const ::google::protobuf::Message& DirectoryService::GetResponsePrototype( - const ::google::protobuf::MethodDescriptor* method) const { - GOOGLE_DCHECK_EQ(method->service(), descriptor()); - switch(method->index()) { - case 0: - return ::xtreemfs::pbrpc::AddressMappingSet::default_instance(); - case 1: - return ::xtreemfs::pbrpc::emptyResponse::default_instance(); - case 2: - return ::xtreemfs::pbrpc::addressMappingSetResponse::default_instance(); - case 3: - return ::xtreemfs::pbrpc::DirService::default_instance(); - case 4: - return ::xtreemfs::pbrpc::globalTimeSGetResponse::default_instance(); - case 5: - return ::xtreemfs::pbrpc::emptyResponse::default_instance(); - case 6: - return ::xtreemfs::pbrpc::ServiceSet::default_instance(); - case 7: - return ::xtreemfs::pbrpc::ServiceSet::default_instance(); - case 8: - return ::xtreemfs::pbrpc::ServiceSet::default_instance(); - case 9: - return ::xtreemfs::pbrpc::emptyResponse::default_instance(); - case 10: - return ::xtreemfs::pbrpc::serviceRegisterResponse::default_instance(); - case 11: - return ::xtreemfs::pbrpc::emptyResponse::default_instance(); - case 12: - return ::xtreemfs::pbrpc::emptyResponse::default_instance(); - case 13: - return ::xtreemfs::pbrpc::Configuration::default_instance(); - case 14: - return ::xtreemfs::pbrpc::configurationSetResponse::default_instance(); - case 15: - return ::xtreemfs::pbrpc::emptyResponse::default_instance(); - default: - GOOGLE_LOG(FATAL) << "Bad method index; this should never happen."; - return *reinterpret_cast< ::google::protobuf::Message*>(NULL); - } -} - -DirectoryService_Stub::DirectoryService_Stub(::google::protobuf::RpcChannel* channel) - : channel_(channel), owns_channel_(false) {} -DirectoryService_Stub::DirectoryService_Stub( - ::google::protobuf::RpcChannel* channel, - ::google::protobuf::Service::ChannelOwnership ownership) - : channel_(channel), - owns_channel_(ownership == ::google::protobuf::Service::STUB_OWNS_CHANNEL) {} -DirectoryService_Stub::~DirectoryService_Stub() { - if (owns_channel_) delete channel_; -} - -void DirectoryService_Stub::xtreemfs_address_mappings_get(::google::protobuf::RpcController* controller, - const ::xtreemfs::pbrpc::addressMappingGetRequest* request, - ::xtreemfs::pbrpc::AddressMappingSet* response, - ::google::protobuf::Closure* done) { - channel_->CallMethod(descriptor()->method(0), - controller, request, response, done); -} -void DirectoryService_Stub::xtreemfs_address_mappings_remove(::google::protobuf::RpcController* controller, - const ::xtreemfs::pbrpc::addressMappingGetRequest* request, - ::xtreemfs::pbrpc::emptyResponse* response, - ::google::protobuf::Closure* done) { - channel_->CallMethod(descriptor()->method(1), - controller, request, response, done); -} -void DirectoryService_Stub::xtreemfs_address_mappings_set(::google::protobuf::RpcController* controller, - const ::xtreemfs::pbrpc::AddressMappingSet* request, - ::xtreemfs::pbrpc::addressMappingSetResponse* response, - ::google::protobuf::Closure* done) { - channel_->CallMethod(descriptor()->method(2), - controller, request, response, done); -} -void DirectoryService_Stub::xtreemfs_discover_dir(::google::protobuf::RpcController* controller, - const ::xtreemfs::pbrpc::emptyRequest* request, - ::xtreemfs::pbrpc::DirService* response, - ::google::protobuf::Closure* done) { - channel_->CallMethod(descriptor()->method(3), - controller, request, response, done); -} -void DirectoryService_Stub::xtreemfs_global_time_s_get(::google::protobuf::RpcController* controller, - const ::xtreemfs::pbrpc::emptyRequest* request, - ::xtreemfs::pbrpc::globalTimeSGetResponse* response, - ::google::protobuf::Closure* done) { - channel_->CallMethod(descriptor()->method(4), - controller, request, response, done); -} -void DirectoryService_Stub::xtreemfs_service_deregister(::google::protobuf::RpcController* controller, - const ::xtreemfs::pbrpc::serviceDeregisterRequest* request, - ::xtreemfs::pbrpc::emptyResponse* response, - ::google::protobuf::Closure* done) { - channel_->CallMethod(descriptor()->method(5), - controller, request, response, done); -} -void DirectoryService_Stub::xtreemfs_service_get_by_name(::google::protobuf::RpcController* controller, - const ::xtreemfs::pbrpc::serviceGetByNameRequest* request, - ::xtreemfs::pbrpc::ServiceSet* response, - ::google::protobuf::Closure* done) { - channel_->CallMethod(descriptor()->method(6), - controller, request, response, done); -} -void DirectoryService_Stub::xtreemfs_service_get_by_type(::google::protobuf::RpcController* controller, - const ::xtreemfs::pbrpc::serviceGetByTypeRequest* request, - ::xtreemfs::pbrpc::ServiceSet* response, - ::google::protobuf::Closure* done) { - channel_->CallMethod(descriptor()->method(7), - controller, request, response, done); -} -void DirectoryService_Stub::xtreemfs_service_get_by_uuid(::google::protobuf::RpcController* controller, - const ::xtreemfs::pbrpc::serviceGetByUUIDRequest* request, - ::xtreemfs::pbrpc::ServiceSet* response, - ::google::protobuf::Closure* done) { - channel_->CallMethod(descriptor()->method(8), - controller, request, response, done); -} -void DirectoryService_Stub::xtreemfs_service_offline(::google::protobuf::RpcController* controller, - const ::xtreemfs::pbrpc::serviceGetByUUIDRequest* request, - ::xtreemfs::pbrpc::emptyResponse* response, - ::google::protobuf::Closure* done) { - channel_->CallMethod(descriptor()->method(9), - controller, request, response, done); -} -void DirectoryService_Stub::xtreemfs_service_register(::google::protobuf::RpcController* controller, - const ::xtreemfs::pbrpc::serviceRegisterRequest* request, - ::xtreemfs::pbrpc::serviceRegisterResponse* response, - ::google::protobuf::Closure* done) { - channel_->CallMethod(descriptor()->method(10), - controller, request, response, done); -} -void DirectoryService_Stub::xtreemfs_checkpoint(::google::protobuf::RpcController* controller, - const ::xtreemfs::pbrpc::emptyRequest* request, - ::xtreemfs::pbrpc::emptyResponse* response, - ::google::protobuf::Closure* done) { - channel_->CallMethod(descriptor()->method(11), - controller, request, response, done); -} -void DirectoryService_Stub::xtreemfs_shutdown(::google::protobuf::RpcController* controller, - const ::xtreemfs::pbrpc::emptyRequest* request, - ::xtreemfs::pbrpc::emptyResponse* response, - ::google::protobuf::Closure* done) { - channel_->CallMethod(descriptor()->method(12), - controller, request, response, done); -} -void DirectoryService_Stub::xtreemfs_configuration_get(::google::protobuf::RpcController* controller, - const ::xtreemfs::pbrpc::configurationGetRequest* request, - ::xtreemfs::pbrpc::Configuration* response, - ::google::protobuf::Closure* done) { - channel_->CallMethod(descriptor()->method(13), - controller, request, response, done); -} -void DirectoryService_Stub::xtreemfs_configuration_set(::google::protobuf::RpcController* controller, - const ::xtreemfs::pbrpc::Configuration* request, - ::xtreemfs::pbrpc::configurationSetResponse* response, - ::google::protobuf::Closure* done) { - channel_->CallMethod(descriptor()->method(14), - controller, request, response, done); -} -void DirectoryService_Stub::xtreemfs_vivaldi_client_update(::google::protobuf::RpcController* controller, - const ::xtreemfs::pbrpc::VivaldiCoordinates* request, - ::xtreemfs::pbrpc::emptyResponse* response, - ::google::protobuf::Closure* done) { - channel_->CallMethod(descriptor()->method(15), - controller, request, response, done); -} - // @@protoc_insertion_point(namespace_scope) } // namespace pbrpc diff --git a/cpp/generated/xtreemfs/DIR.pb.h b/cpp/generated/xtreemfs/DIR.pb.h index c7c8eb536..0dbba4451 100644 --- a/cpp/generated/xtreemfs/DIR.pb.h +++ b/cpp/generated/xtreemfs/DIR.pb.h @@ -8,22 +8,23 @@ #include -#if GOOGLE_PROTOBUF_VERSION < 2003000 +#if GOOGLE_PROTOBUF_VERSION < 2005000 #error This file was generated by a newer version of protoc which is #error incompatible with your Protocol Buffer headers. Please update #error your headers. #endif -#if 2003000 < GOOGLE_PROTOBUF_MIN_PROTOC_VERSION +#if 2005000 < GOOGLE_PROTOBUF_MIN_PROTOC_VERSION #error This file was generated by an older version of protoc which is #error incompatible with your Protocol Buffer headers. Please #error regenerate this file with a newer version of protoc. #endif #include +#include #include #include -#include -#include +#include +#include #include "include/PBRPC.pb.h" #include "include/Common.pb.h" #include "xtreemfs/GlobalTypes.pb.h" @@ -105,29 +106,29 @@ class AddressMapping : public ::google::protobuf::Message { public: AddressMapping(); virtual ~AddressMapping(); - + AddressMapping(const AddressMapping& from); - + inline AddressMapping& operator=(const AddressMapping& from) { CopyFrom(from); return *this; } - + inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const { return _unknown_fields_; } - + inline ::google::protobuf::UnknownFieldSet* mutable_unknown_fields() { return &_unknown_fields_; } - + static const ::google::protobuf::Descriptor* descriptor(); static const AddressMapping& default_instance(); - + void Swap(AddressMapping* other); - + // implements Message ---------------------------------------------- - + AddressMapping* New() const; void CopyFrom(const ::google::protobuf::Message& from); void MergeFrom(const ::google::protobuf::Message& from); @@ -135,7 +136,7 @@ class AddressMapping : public ::google::protobuf::Message { void MergeFrom(const AddressMapping& from); void Clear(); bool IsInitialized() const; - + int ByteSize() const; bool MergePartialFromCodedStream( ::google::protobuf::io::CodedInputStream* input); @@ -148,13 +149,13 @@ class AddressMapping : public ::google::protobuf::Message { void SharedDtor(); void SetCachedSize(int size) const; public: - + ::google::protobuf::Metadata GetMetadata() const; - + // nested types ---------------------------------------------------- - + // accessors ------------------------------------------------------- - + // required string uuid = 1; inline bool has_uuid() const; inline void clear_uuid(); @@ -164,14 +165,16 @@ class AddressMapping : public ::google::protobuf::Message { inline void set_uuid(const char* value); inline void set_uuid(const char* value, size_t size); inline ::std::string* mutable_uuid(); - + inline ::std::string* release_uuid(); + inline void set_allocated_uuid(::std::string* uuid); + // required fixed64 version = 2; inline bool has_version() const; inline void clear_version(); static const int kVersionFieldNumber = 2; inline ::google::protobuf::uint64 version() const; inline void set_version(::google::protobuf::uint64 value); - + // required string protocol = 3; inline bool has_protocol() const; inline void clear_protocol(); @@ -181,7 +184,9 @@ class AddressMapping : public ::google::protobuf::Message { inline void set_protocol(const char* value); inline void set_protocol(const char* value, size_t size); inline ::std::string* mutable_protocol(); - + inline ::std::string* release_protocol(); + inline void set_allocated_protocol(::std::string* protocol); + // required string address = 4; inline bool has_address() const; inline void clear_address(); @@ -191,14 +196,16 @@ class AddressMapping : public ::google::protobuf::Message { inline void set_address(const char* value); inline void set_address(const char* value, size_t size); inline ::std::string* mutable_address(); - + inline ::std::string* release_address(); + inline void set_allocated_address(::std::string* address); + // required fixed32 port = 5; inline bool has_port() const; inline void clear_port(); static const int kPortFieldNumber = 5; inline ::google::protobuf::uint32 port() const; inline void set_port(::google::protobuf::uint32 value); - + // required string match_network = 6; inline bool has_match_network() const; inline void clear_match_network(); @@ -208,14 +215,16 @@ class AddressMapping : public ::google::protobuf::Message { inline void set_match_network(const char* value); inline void set_match_network(const char* value, size_t size); inline ::std::string* mutable_match_network(); - + inline ::std::string* release_match_network(); + inline void set_allocated_match_network(::std::string* match_network); + // required fixed32 ttl_s = 7; inline bool has_ttl_s() const; inline void clear_ttl_s(); static const int kTtlSFieldNumber = 7; inline ::google::protobuf::uint32 ttl_s() const; inline void set_ttl_s(::google::protobuf::uint32 value); - + // required string uri = 8; inline bool has_uri() const; inline void clear_uri(); @@ -225,42 +234,46 @@ class AddressMapping : public ::google::protobuf::Message { inline void set_uri(const char* value); inline void set_uri(const char* value, size_t size); inline ::std::string* mutable_uri(); - + inline ::std::string* release_uri(); + inline void set_allocated_uri(::std::string* uri); + // @@protoc_insertion_point(class_scope:xtreemfs.pbrpc.AddressMapping) private: + inline void set_has_uuid(); + inline void clear_has_uuid(); + inline void set_has_version(); + inline void clear_has_version(); + inline void set_has_protocol(); + inline void clear_has_protocol(); + inline void set_has_address(); + inline void clear_has_address(); + inline void set_has_port(); + inline void clear_has_port(); + inline void set_has_match_network(); + inline void clear_has_match_network(); + inline void set_has_ttl_s(); + inline void clear_has_ttl_s(); + inline void set_has_uri(); + inline void clear_has_uri(); + ::google::protobuf::UnknownFieldSet _unknown_fields_; - mutable int _cached_size_; - + ::std::string* uuid_; - static const ::std::string _default_uuid_; ::google::protobuf::uint64 version_; ::std::string* protocol_; - static const ::std::string _default_protocol_; ::std::string* address_; - static const ::std::string _default_address_; - ::google::protobuf::uint32 port_; ::std::string* match_network_; - static const ::std::string _default_match_network_; + ::google::protobuf::uint32 port_; ::google::protobuf::uint32 ttl_s_; ::std::string* uri_; - static const ::std::string _default_uri_; + + mutable int _cached_size_; + ::google::protobuf::uint32 _has_bits_[(8 + 31) / 32]; + friend void protobuf_AddDesc_xtreemfs_2fDIR_2eproto(); friend void protobuf_AssignDesc_xtreemfs_2fDIR_2eproto(); friend void protobuf_ShutdownFile_xtreemfs_2fDIR_2eproto(); - - ::google::protobuf::uint32 _has_bits_[(8 + 31) / 32]; - - // WHY DOES & HAVE LOWER PRECEDENCE THAN != !? - inline bool _has_bit(int index) const { - return (_has_bits_[index / 32] & (1u << (index % 32))) != 0; - } - inline void _set_bit(int index) { - _has_bits_[index / 32] |= (1u << (index % 32)); - } - inline void _clear_bit(int index) { - _has_bits_[index / 32] &= ~(1u << (index % 32)); - } - + void InitAsDefaultInstance(); static AddressMapping* default_instance_; }; @@ -270,29 +283,29 @@ class AddressMappingSet : public ::google::protobuf::Message { public: AddressMappingSet(); virtual ~AddressMappingSet(); - + AddressMappingSet(const AddressMappingSet& from); - + inline AddressMappingSet& operator=(const AddressMappingSet& from) { CopyFrom(from); return *this; } - + inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const { return _unknown_fields_; } - + inline ::google::protobuf::UnknownFieldSet* mutable_unknown_fields() { return &_unknown_fields_; } - + static const ::google::protobuf::Descriptor* descriptor(); static const AddressMappingSet& default_instance(); - + void Swap(AddressMappingSet* other); - + // implements Message ---------------------------------------------- - + AddressMappingSet* New() const; void CopyFrom(const ::google::protobuf::Message& from); void MergeFrom(const ::google::protobuf::Message& from); @@ -300,7 +313,7 @@ class AddressMappingSet : public ::google::protobuf::Message { void MergeFrom(const AddressMappingSet& from); void Clear(); bool IsInitialized() const; - + int ByteSize() const; bool MergePartialFromCodedStream( ::google::protobuf::io::CodedInputStream* input); @@ -313,13 +326,13 @@ class AddressMappingSet : public ::google::protobuf::Message { void SharedDtor(); void SetCachedSize(int size) const; public: - + ::google::protobuf::Metadata GetMetadata() const; - + // nested types ---------------------------------------------------- - + // accessors ------------------------------------------------------- - + // repeated .xtreemfs.pbrpc.AddressMapping mappings = 1; inline int mappings_size() const; inline void clear_mappings(); @@ -331,30 +344,21 @@ class AddressMappingSet : public ::google::protobuf::Message { mappings() const; inline ::google::protobuf::RepeatedPtrField< ::xtreemfs::pbrpc::AddressMapping >* mutable_mappings(); - + // @@protoc_insertion_point(class_scope:xtreemfs.pbrpc.AddressMappingSet) private: + ::google::protobuf::UnknownFieldSet _unknown_fields_; - mutable int _cached_size_; - + ::google::protobuf::RepeatedPtrField< ::xtreemfs::pbrpc::AddressMapping > mappings_; + + mutable int _cached_size_; + ::google::protobuf::uint32 _has_bits_[(1 + 31) / 32]; + friend void protobuf_AddDesc_xtreemfs_2fDIR_2eproto(); friend void protobuf_AssignDesc_xtreemfs_2fDIR_2eproto(); friend void protobuf_ShutdownFile_xtreemfs_2fDIR_2eproto(); - - ::google::protobuf::uint32 _has_bits_[(1 + 31) / 32]; - - // WHY DOES & HAVE LOWER PRECEDENCE THAN != !? - inline bool _has_bit(int index) const { - return (_has_bits_[index / 32] & (1u << (index % 32))) != 0; - } - inline void _set_bit(int index) { - _has_bits_[index / 32] |= (1u << (index % 32)); - } - inline void _clear_bit(int index) { - _has_bits_[index / 32] &= ~(1u << (index % 32)); - } - + void InitAsDefaultInstance(); static AddressMappingSet* default_instance_; }; @@ -364,29 +368,29 @@ class DirService : public ::google::protobuf::Message { public: DirService(); virtual ~DirService(); - + DirService(const DirService& from); - + inline DirService& operator=(const DirService& from) { CopyFrom(from); return *this; } - + inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const { return _unknown_fields_; } - + inline ::google::protobuf::UnknownFieldSet* mutable_unknown_fields() { return &_unknown_fields_; } - + static const ::google::protobuf::Descriptor* descriptor(); static const DirService& default_instance(); - + void Swap(DirService* other); - + // implements Message ---------------------------------------------- - + DirService* New() const; void CopyFrom(const ::google::protobuf::Message& from); void MergeFrom(const ::google::protobuf::Message& from); @@ -394,7 +398,7 @@ class DirService : public ::google::protobuf::Message { void MergeFrom(const DirService& from); void Clear(); bool IsInitialized() const; - + int ByteSize() const; bool MergePartialFromCodedStream( ::google::protobuf::io::CodedInputStream* input); @@ -407,13 +411,13 @@ class DirService : public ::google::protobuf::Message { void SharedDtor(); void SetCachedSize(int size) const; public: - + ::google::protobuf::Metadata GetMetadata() const; - + // nested types ---------------------------------------------------- - + // accessors ------------------------------------------------------- - + // required string address = 1; inline bool has_address() const; inline void clear_address(); @@ -423,14 +427,16 @@ class DirService : public ::google::protobuf::Message { inline void set_address(const char* value); inline void set_address(const char* value, size_t size); inline ::std::string* mutable_address(); - + inline ::std::string* release_address(); + inline void set_allocated_address(::std::string* address); + // required fixed32 port = 2; inline bool has_port() const; inline void clear_port(); static const int kPortFieldNumber = 2; inline ::google::protobuf::uint32 port() const; inline void set_port(::google::protobuf::uint32 value); - + // required string protocol = 3; inline bool has_protocol() const; inline void clear_protocol(); @@ -440,42 +446,41 @@ class DirService : public ::google::protobuf::Message { inline void set_protocol(const char* value); inline void set_protocol(const char* value, size_t size); inline ::std::string* mutable_protocol(); - + inline ::std::string* release_protocol(); + inline void set_allocated_protocol(::std::string* protocol); + // required fixed32 interface_version = 4; inline bool has_interface_version() const; inline void clear_interface_version(); static const int kInterfaceVersionFieldNumber = 4; inline ::google::protobuf::uint32 interface_version() const; inline void set_interface_version(::google::protobuf::uint32 value); - + // @@protoc_insertion_point(class_scope:xtreemfs.pbrpc.DirService) private: + inline void set_has_address(); + inline void clear_has_address(); + inline void set_has_port(); + inline void clear_has_port(); + inline void set_has_protocol(); + inline void clear_has_protocol(); + inline void set_has_interface_version(); + inline void clear_has_interface_version(); + ::google::protobuf::UnknownFieldSet _unknown_fields_; - mutable int _cached_size_; - + ::std::string* address_; - static const ::std::string _default_address_; - ::google::protobuf::uint32 port_; ::std::string* protocol_; - static const ::std::string _default_protocol_; + ::google::protobuf::uint32 port_; ::google::protobuf::uint32 interface_version_; + + mutable int _cached_size_; + ::google::protobuf::uint32 _has_bits_[(4 + 31) / 32]; + friend void protobuf_AddDesc_xtreemfs_2fDIR_2eproto(); friend void protobuf_AssignDesc_xtreemfs_2fDIR_2eproto(); friend void protobuf_ShutdownFile_xtreemfs_2fDIR_2eproto(); - - ::google::protobuf::uint32 _has_bits_[(4 + 31) / 32]; - - // WHY DOES & HAVE LOWER PRECEDENCE THAN != !? - inline bool _has_bit(int index) const { - return (_has_bits_[index / 32] & (1u << (index % 32))) != 0; - } - inline void _set_bit(int index) { - _has_bits_[index / 32] |= (1u << (index % 32)); - } - inline void _clear_bit(int index) { - _has_bits_[index / 32] &= ~(1u << (index % 32)); - } - + void InitAsDefaultInstance(); static DirService* default_instance_; }; @@ -485,29 +490,29 @@ class ServiceDataMap : public ::google::protobuf::Message { public: ServiceDataMap(); virtual ~ServiceDataMap(); - + ServiceDataMap(const ServiceDataMap& from); - + inline ServiceDataMap& operator=(const ServiceDataMap& from) { CopyFrom(from); return *this; } - + inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const { return _unknown_fields_; } - + inline ::google::protobuf::UnknownFieldSet* mutable_unknown_fields() { return &_unknown_fields_; } - + static const ::google::protobuf::Descriptor* descriptor(); static const ServiceDataMap& default_instance(); - + void Swap(ServiceDataMap* other); - + // implements Message ---------------------------------------------- - + ServiceDataMap* New() const; void CopyFrom(const ::google::protobuf::Message& from); void MergeFrom(const ::google::protobuf::Message& from); @@ -515,7 +520,7 @@ class ServiceDataMap : public ::google::protobuf::Message { void MergeFrom(const ServiceDataMap& from); void Clear(); bool IsInitialized() const; - + int ByteSize() const; bool MergePartialFromCodedStream( ::google::protobuf::io::CodedInputStream* input); @@ -528,13 +533,13 @@ class ServiceDataMap : public ::google::protobuf::Message { void SharedDtor(); void SetCachedSize(int size) const; public: - + ::google::protobuf::Metadata GetMetadata() const; - + // nested types ---------------------------------------------------- - + // accessors ------------------------------------------------------- - + // repeated .xtreemfs.pbrpc.KeyValuePair data = 1; inline int data_size() const; inline void clear_data(); @@ -546,30 +551,21 @@ class ServiceDataMap : public ::google::protobuf::Message { data() const; inline ::google::protobuf::RepeatedPtrField< ::xtreemfs::pbrpc::KeyValuePair >* mutable_data(); - + // @@protoc_insertion_point(class_scope:xtreemfs.pbrpc.ServiceDataMap) private: + ::google::protobuf::UnknownFieldSet _unknown_fields_; - mutable int _cached_size_; - + ::google::protobuf::RepeatedPtrField< ::xtreemfs::pbrpc::KeyValuePair > data_; + + mutable int _cached_size_; + ::google::protobuf::uint32 _has_bits_[(1 + 31) / 32]; + friend void protobuf_AddDesc_xtreemfs_2fDIR_2eproto(); friend void protobuf_AssignDesc_xtreemfs_2fDIR_2eproto(); friend void protobuf_ShutdownFile_xtreemfs_2fDIR_2eproto(); - - ::google::protobuf::uint32 _has_bits_[(1 + 31) / 32]; - - // WHY DOES & HAVE LOWER PRECEDENCE THAN != !? - inline bool _has_bit(int index) const { - return (_has_bits_[index / 32] & (1u << (index % 32))) != 0; - } - inline void _set_bit(int index) { - _has_bits_[index / 32] |= (1u << (index % 32)); - } - inline void _clear_bit(int index) { - _has_bits_[index / 32] &= ~(1u << (index % 32)); - } - + void InitAsDefaultInstance(); static ServiceDataMap* default_instance_; }; @@ -579,29 +575,29 @@ class Service : public ::google::protobuf::Message { public: Service(); virtual ~Service(); - + Service(const Service& from); - + inline Service& operator=(const Service& from) { CopyFrom(from); return *this; } - + inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const { return _unknown_fields_; } - + inline ::google::protobuf::UnknownFieldSet* mutable_unknown_fields() { return &_unknown_fields_; } - + static const ::google::protobuf::Descriptor* descriptor(); static const Service& default_instance(); - + void Swap(Service* other); - + // implements Message ---------------------------------------------- - + Service* New() const; void CopyFrom(const ::google::protobuf::Message& from); void MergeFrom(const ::google::protobuf::Message& from); @@ -609,7 +605,7 @@ class Service : public ::google::protobuf::Message { void MergeFrom(const Service& from); void Clear(); bool IsInitialized() const; - + int ByteSize() const; bool MergePartialFromCodedStream( ::google::protobuf::io::CodedInputStream* input); @@ -622,20 +618,20 @@ class Service : public ::google::protobuf::Message { void SharedDtor(); void SetCachedSize(int size) const; public: - + ::google::protobuf::Metadata GetMetadata() const; - + // nested types ---------------------------------------------------- - + // accessors ------------------------------------------------------- - + // required .xtreemfs.pbrpc.ServiceType type = 1; inline bool has_type() const; inline void clear_type(); static const int kTypeFieldNumber = 1; - inline xtreemfs::pbrpc::ServiceType type() const; - inline void set_type(xtreemfs::pbrpc::ServiceType value); - + inline ::xtreemfs::pbrpc::ServiceType type() const; + inline void set_type(::xtreemfs::pbrpc::ServiceType value); + // required string uuid = 2; inline bool has_uuid() const; inline void clear_uuid(); @@ -645,14 +641,16 @@ class Service : public ::google::protobuf::Message { inline void set_uuid(const char* value); inline void set_uuid(const char* value, size_t size); inline ::std::string* mutable_uuid(); - + inline ::std::string* release_uuid(); + inline void set_allocated_uuid(::std::string* uuid); + // required fixed64 version = 3; inline bool has_version() const; inline void clear_version(); static const int kVersionFieldNumber = 3; inline ::google::protobuf::uint64 version() const; inline void set_version(::google::protobuf::uint64 value); - + // required string name = 4; inline bool has_name() const; inline void clear_name(); @@ -662,51 +660,56 @@ class Service : public ::google::protobuf::Message { inline void set_name(const char* value); inline void set_name(const char* value, size_t size); inline ::std::string* mutable_name(); - + inline ::std::string* release_name(); + inline void set_allocated_name(::std::string* name); + // required fixed64 last_updated_s = 5; inline bool has_last_updated_s() const; inline void clear_last_updated_s(); static const int kLastUpdatedSFieldNumber = 5; inline ::google::protobuf::uint64 last_updated_s() const; inline void set_last_updated_s(::google::protobuf::uint64 value); - + // required .xtreemfs.pbrpc.ServiceDataMap data = 6; inline bool has_data() const; inline void clear_data(); static const int kDataFieldNumber = 6; inline const ::xtreemfs::pbrpc::ServiceDataMap& data() const; inline ::xtreemfs::pbrpc::ServiceDataMap* mutable_data(); - + inline ::xtreemfs::pbrpc::ServiceDataMap* release_data(); + inline void set_allocated_data(::xtreemfs::pbrpc::ServiceDataMap* data); + // @@protoc_insertion_point(class_scope:xtreemfs.pbrpc.Service) private: + inline void set_has_type(); + inline void clear_has_type(); + inline void set_has_uuid(); + inline void clear_has_uuid(); + inline void set_has_version(); + inline void clear_has_version(); + inline void set_has_name(); + inline void clear_has_name(); + inline void set_has_last_updated_s(); + inline void clear_has_last_updated_s(); + inline void set_has_data(); + inline void clear_has_data(); + ::google::protobuf::UnknownFieldSet _unknown_fields_; - mutable int _cached_size_; - - int type_; + ::std::string* uuid_; - static const ::std::string _default_uuid_; ::google::protobuf::uint64 version_; ::std::string* name_; - static const ::std::string _default_name_; ::google::protobuf::uint64 last_updated_s_; ::xtreemfs::pbrpc::ServiceDataMap* data_; + int type_; + + mutable int _cached_size_; + ::google::protobuf::uint32 _has_bits_[(6 + 31) / 32]; + friend void protobuf_AddDesc_xtreemfs_2fDIR_2eproto(); friend void protobuf_AssignDesc_xtreemfs_2fDIR_2eproto(); friend void protobuf_ShutdownFile_xtreemfs_2fDIR_2eproto(); - - ::google::protobuf::uint32 _has_bits_[(6 + 31) / 32]; - - // WHY DOES & HAVE LOWER PRECEDENCE THAN != !? - inline bool _has_bit(int index) const { - return (_has_bits_[index / 32] & (1u << (index % 32))) != 0; - } - inline void _set_bit(int index) { - _has_bits_[index / 32] |= (1u << (index % 32)); - } - inline void _clear_bit(int index) { - _has_bits_[index / 32] &= ~(1u << (index % 32)); - } - + void InitAsDefaultInstance(); static Service* default_instance_; }; @@ -716,29 +719,29 @@ class ServiceSet : public ::google::protobuf::Message { public: ServiceSet(); virtual ~ServiceSet(); - + ServiceSet(const ServiceSet& from); - + inline ServiceSet& operator=(const ServiceSet& from) { CopyFrom(from); return *this; } - + inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const { return _unknown_fields_; } - + inline ::google::protobuf::UnknownFieldSet* mutable_unknown_fields() { return &_unknown_fields_; } - + static const ::google::protobuf::Descriptor* descriptor(); static const ServiceSet& default_instance(); - + void Swap(ServiceSet* other); - + // implements Message ---------------------------------------------- - + ServiceSet* New() const; void CopyFrom(const ::google::protobuf::Message& from); void MergeFrom(const ::google::protobuf::Message& from); @@ -746,7 +749,7 @@ class ServiceSet : public ::google::protobuf::Message { void MergeFrom(const ServiceSet& from); void Clear(); bool IsInitialized() const; - + int ByteSize() const; bool MergePartialFromCodedStream( ::google::protobuf::io::CodedInputStream* input); @@ -759,13 +762,13 @@ class ServiceSet : public ::google::protobuf::Message { void SharedDtor(); void SetCachedSize(int size) const; public: - + ::google::protobuf::Metadata GetMetadata() const; - + // nested types ---------------------------------------------------- - + // accessors ------------------------------------------------------- - + // repeated .xtreemfs.pbrpc.Service services = 1; inline int services_size() const; inline void clear_services(); @@ -777,30 +780,21 @@ class ServiceSet : public ::google::protobuf::Message { services() const; inline ::google::protobuf::RepeatedPtrField< ::xtreemfs::pbrpc::Service >* mutable_services(); - + // @@protoc_insertion_point(class_scope:xtreemfs.pbrpc.ServiceSet) private: + ::google::protobuf::UnknownFieldSet _unknown_fields_; - mutable int _cached_size_; - + ::google::protobuf::RepeatedPtrField< ::xtreemfs::pbrpc::Service > services_; + + mutable int _cached_size_; + ::google::protobuf::uint32 _has_bits_[(1 + 31) / 32]; + friend void protobuf_AddDesc_xtreemfs_2fDIR_2eproto(); friend void protobuf_AssignDesc_xtreemfs_2fDIR_2eproto(); friend void protobuf_ShutdownFile_xtreemfs_2fDIR_2eproto(); - - ::google::protobuf::uint32 _has_bits_[(1 + 31) / 32]; - - // WHY DOES & HAVE LOWER PRECEDENCE THAN != !? - inline bool _has_bit(int index) const { - return (_has_bits_[index / 32] & (1u << (index % 32))) != 0; - } - inline void _set_bit(int index) { - _has_bits_[index / 32] |= (1u << (index % 32)); - } - inline void _clear_bit(int index) { - _has_bits_[index / 32] &= ~(1u << (index % 32)); - } - + void InitAsDefaultInstance(); static ServiceSet* default_instance_; }; @@ -810,29 +804,29 @@ class Configuration : public ::google::protobuf::Message { public: Configuration(); virtual ~Configuration(); - + Configuration(const Configuration& from); - + inline Configuration& operator=(const Configuration& from) { CopyFrom(from); return *this; } - + inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const { return _unknown_fields_; } - + inline ::google::protobuf::UnknownFieldSet* mutable_unknown_fields() { return &_unknown_fields_; } - + static const ::google::protobuf::Descriptor* descriptor(); static const Configuration& default_instance(); - + void Swap(Configuration* other); - + // implements Message ---------------------------------------------- - + Configuration* New() const; void CopyFrom(const ::google::protobuf::Message& from); void MergeFrom(const ::google::protobuf::Message& from); @@ -840,7 +834,7 @@ class Configuration : public ::google::protobuf::Message { void MergeFrom(const Configuration& from); void Clear(); bool IsInitialized() const; - + int ByteSize() const; bool MergePartialFromCodedStream( ::google::protobuf::io::CodedInputStream* input); @@ -853,13 +847,13 @@ class Configuration : public ::google::protobuf::Message { void SharedDtor(); void SetCachedSize(int size) const; public: - + ::google::protobuf::Metadata GetMetadata() const; - + // nested types ---------------------------------------------------- - + // accessors ------------------------------------------------------- - + // required string uuid = 1; inline bool has_uuid() const; inline void clear_uuid(); @@ -869,7 +863,9 @@ class Configuration : public ::google::protobuf::Message { inline void set_uuid(const char* value); inline void set_uuid(const char* value, size_t size); inline ::std::string* mutable_uuid(); - + inline ::std::string* release_uuid(); + inline void set_allocated_uuid(::std::string* uuid); + // repeated .xtreemfs.pbrpc.KeyValuePair parameter = 2; inline int parameter_size() const; inline void clear_parameter(); @@ -881,40 +877,34 @@ class Configuration : public ::google::protobuf::Message { parameter() const; inline ::google::protobuf::RepeatedPtrField< ::xtreemfs::pbrpc::KeyValuePair >* mutable_parameter(); - + // required fixed64 version = 3; inline bool has_version() const; inline void clear_version(); static const int kVersionFieldNumber = 3; inline ::google::protobuf::uint64 version() const; inline void set_version(::google::protobuf::uint64 value); - + // @@protoc_insertion_point(class_scope:xtreemfs.pbrpc.Configuration) private: + inline void set_has_uuid(); + inline void clear_has_uuid(); + inline void set_has_version(); + inline void clear_has_version(); + ::google::protobuf::UnknownFieldSet _unknown_fields_; - mutable int _cached_size_; - + ::std::string* uuid_; - static const ::std::string _default_uuid_; ::google::protobuf::RepeatedPtrField< ::xtreemfs::pbrpc::KeyValuePair > parameter_; ::google::protobuf::uint64 version_; + + mutable int _cached_size_; + ::google::protobuf::uint32 _has_bits_[(3 + 31) / 32]; + friend void protobuf_AddDesc_xtreemfs_2fDIR_2eproto(); friend void protobuf_AssignDesc_xtreemfs_2fDIR_2eproto(); friend void protobuf_ShutdownFile_xtreemfs_2fDIR_2eproto(); - - ::google::protobuf::uint32 _has_bits_[(3 + 31) / 32]; - - // WHY DOES & HAVE LOWER PRECEDENCE THAN != !? - inline bool _has_bit(int index) const { - return (_has_bits_[index / 32] & (1u << (index % 32))) != 0; - } - inline void _set_bit(int index) { - _has_bits_[index / 32] |= (1u << (index % 32)); - } - inline void _clear_bit(int index) { - _has_bits_[index / 32] &= ~(1u << (index % 32)); - } - + void InitAsDefaultInstance(); static Configuration* default_instance_; }; @@ -924,29 +914,29 @@ class addressMappingGetRequest : public ::google::protobuf::Message { public: addressMappingGetRequest(); virtual ~addressMappingGetRequest(); - + addressMappingGetRequest(const addressMappingGetRequest& from); - + inline addressMappingGetRequest& operator=(const addressMappingGetRequest& from) { CopyFrom(from); return *this; } - + inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const { return _unknown_fields_; } - + inline ::google::protobuf::UnknownFieldSet* mutable_unknown_fields() { return &_unknown_fields_; } - + static const ::google::protobuf::Descriptor* descriptor(); static const addressMappingGetRequest& default_instance(); - + void Swap(addressMappingGetRequest* other); - + // implements Message ---------------------------------------------- - + addressMappingGetRequest* New() const; void CopyFrom(const ::google::protobuf::Message& from); void MergeFrom(const ::google::protobuf::Message& from); @@ -954,7 +944,7 @@ class addressMappingGetRequest : public ::google::protobuf::Message { void MergeFrom(const addressMappingGetRequest& from); void Clear(); bool IsInitialized() const; - + int ByteSize() const; bool MergePartialFromCodedStream( ::google::protobuf::io::CodedInputStream* input); @@ -967,13 +957,13 @@ class addressMappingGetRequest : public ::google::protobuf::Message { void SharedDtor(); void SetCachedSize(int size) const; public: - + ::google::protobuf::Metadata GetMetadata() const; - + // nested types ---------------------------------------------------- - + // accessors ------------------------------------------------------- - + // required string uuid = 1; inline bool has_uuid() const; inline void clear_uuid(); @@ -983,31 +973,25 @@ class addressMappingGetRequest : public ::google::protobuf::Message { inline void set_uuid(const char* value); inline void set_uuid(const char* value, size_t size); inline ::std::string* mutable_uuid(); - + inline ::std::string* release_uuid(); + inline void set_allocated_uuid(::std::string* uuid); + // @@protoc_insertion_point(class_scope:xtreemfs.pbrpc.addressMappingGetRequest) private: + inline void set_has_uuid(); + inline void clear_has_uuid(); + ::google::protobuf::UnknownFieldSet _unknown_fields_; - mutable int _cached_size_; - + ::std::string* uuid_; - static const ::std::string _default_uuid_; + + mutable int _cached_size_; + ::google::protobuf::uint32 _has_bits_[(1 + 31) / 32]; + friend void protobuf_AddDesc_xtreemfs_2fDIR_2eproto(); friend void protobuf_AssignDesc_xtreemfs_2fDIR_2eproto(); friend void protobuf_ShutdownFile_xtreemfs_2fDIR_2eproto(); - - ::google::protobuf::uint32 _has_bits_[(1 + 31) / 32]; - - // WHY DOES & HAVE LOWER PRECEDENCE THAN != !? - inline bool _has_bit(int index) const { - return (_has_bits_[index / 32] & (1u << (index % 32))) != 0; - } - inline void _set_bit(int index) { - _has_bits_[index / 32] |= (1u << (index % 32)); - } - inline void _clear_bit(int index) { - _has_bits_[index / 32] &= ~(1u << (index % 32)); - } - + void InitAsDefaultInstance(); static addressMappingGetRequest* default_instance_; }; @@ -1017,29 +1001,29 @@ class addressMappingGetResponse : public ::google::protobuf::Message { public: addressMappingGetResponse(); virtual ~addressMappingGetResponse(); - + addressMappingGetResponse(const addressMappingGetResponse& from); - + inline addressMappingGetResponse& operator=(const addressMappingGetResponse& from) { CopyFrom(from); return *this; } - + inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const { return _unknown_fields_; } - + inline ::google::protobuf::UnknownFieldSet* mutable_unknown_fields() { return &_unknown_fields_; } - + static const ::google::protobuf::Descriptor* descriptor(); static const addressMappingGetResponse& default_instance(); - + void Swap(addressMappingGetResponse* other); - + // implements Message ---------------------------------------------- - + addressMappingGetResponse* New() const; void CopyFrom(const ::google::protobuf::Message& from); void MergeFrom(const ::google::protobuf::Message& from); @@ -1047,7 +1031,7 @@ class addressMappingGetResponse : public ::google::protobuf::Message { void MergeFrom(const addressMappingGetResponse& from); void Clear(); bool IsInitialized() const; - + int ByteSize() const; bool MergePartialFromCodedStream( ::google::protobuf::io::CodedInputStream* input); @@ -1060,43 +1044,38 @@ class addressMappingGetResponse : public ::google::protobuf::Message { void SharedDtor(); void SetCachedSize(int size) const; public: - + ::google::protobuf::Metadata GetMetadata() const; - + // nested types ---------------------------------------------------- - + // accessors ------------------------------------------------------- - + // optional .xtreemfs.pbrpc.AddressMappingSet result = 1; inline bool has_result() const; inline void clear_result(); static const int kResultFieldNumber = 1; inline const ::xtreemfs::pbrpc::AddressMappingSet& result() const; inline ::xtreemfs::pbrpc::AddressMappingSet* mutable_result(); - + inline ::xtreemfs::pbrpc::AddressMappingSet* release_result(); + inline void set_allocated_result(::xtreemfs::pbrpc::AddressMappingSet* result); + // @@protoc_insertion_point(class_scope:xtreemfs.pbrpc.addressMappingGetResponse) private: + inline void set_has_result(); + inline void clear_has_result(); + ::google::protobuf::UnknownFieldSet _unknown_fields_; - mutable int _cached_size_; - + ::xtreemfs::pbrpc::AddressMappingSet* result_; + + mutable int _cached_size_; + ::google::protobuf::uint32 _has_bits_[(1 + 31) / 32]; + friend void protobuf_AddDesc_xtreemfs_2fDIR_2eproto(); friend void protobuf_AssignDesc_xtreemfs_2fDIR_2eproto(); friend void protobuf_ShutdownFile_xtreemfs_2fDIR_2eproto(); - - ::google::protobuf::uint32 _has_bits_[(1 + 31) / 32]; - - // WHY DOES & HAVE LOWER PRECEDENCE THAN != !? - inline bool _has_bit(int index) const { - return (_has_bits_[index / 32] & (1u << (index % 32))) != 0; - } - inline void _set_bit(int index) { - _has_bits_[index / 32] |= (1u << (index % 32)); - } - inline void _clear_bit(int index) { - _has_bits_[index / 32] &= ~(1u << (index % 32)); - } - + void InitAsDefaultInstance(); static addressMappingGetResponse* default_instance_; }; @@ -1106,29 +1085,29 @@ class addressMappingSetResponse : public ::google::protobuf::Message { public: addressMappingSetResponse(); virtual ~addressMappingSetResponse(); - + addressMappingSetResponse(const addressMappingSetResponse& from); - + inline addressMappingSetResponse& operator=(const addressMappingSetResponse& from) { CopyFrom(from); return *this; } - + inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const { return _unknown_fields_; } - + inline ::google::protobuf::UnknownFieldSet* mutable_unknown_fields() { return &_unknown_fields_; } - + static const ::google::protobuf::Descriptor* descriptor(); static const addressMappingSetResponse& default_instance(); - + void Swap(addressMappingSetResponse* other); - + // implements Message ---------------------------------------------- - + addressMappingSetResponse* New() const; void CopyFrom(const ::google::protobuf::Message& from); void MergeFrom(const ::google::protobuf::Message& from); @@ -1136,7 +1115,7 @@ class addressMappingSetResponse : public ::google::protobuf::Message { void MergeFrom(const addressMappingSetResponse& from); void Clear(); bool IsInitialized() const; - + int ByteSize() const; bool MergePartialFromCodedStream( ::google::protobuf::io::CodedInputStream* input); @@ -1149,43 +1128,36 @@ class addressMappingSetResponse : public ::google::protobuf::Message { void SharedDtor(); void SetCachedSize(int size) const; public: - + ::google::protobuf::Metadata GetMetadata() const; - + // nested types ---------------------------------------------------- - + // accessors ------------------------------------------------------- - + // optional fixed64 new_version = 1; inline bool has_new_version() const; inline void clear_new_version(); static const int kNewVersionFieldNumber = 1; inline ::google::protobuf::uint64 new_version() const; inline void set_new_version(::google::protobuf::uint64 value); - + // @@protoc_insertion_point(class_scope:xtreemfs.pbrpc.addressMappingSetResponse) private: + inline void set_has_new_version(); + inline void clear_has_new_version(); + ::google::protobuf::UnknownFieldSet _unknown_fields_; - mutable int _cached_size_; - + ::google::protobuf::uint64 new_version_; + + mutable int _cached_size_; + ::google::protobuf::uint32 _has_bits_[(1 + 31) / 32]; + friend void protobuf_AddDesc_xtreemfs_2fDIR_2eproto(); friend void protobuf_AssignDesc_xtreemfs_2fDIR_2eproto(); friend void protobuf_ShutdownFile_xtreemfs_2fDIR_2eproto(); - - ::google::protobuf::uint32 _has_bits_[(1 + 31) / 32]; - - // WHY DOES & HAVE LOWER PRECEDENCE THAN != !? - inline bool _has_bit(int index) const { - return (_has_bits_[index / 32] & (1u << (index % 32))) != 0; - } - inline void _set_bit(int index) { - _has_bits_[index / 32] |= (1u << (index % 32)); - } - inline void _clear_bit(int index) { - _has_bits_[index / 32] &= ~(1u << (index % 32)); - } - + void InitAsDefaultInstance(); static addressMappingSetResponse* default_instance_; }; @@ -1195,29 +1167,29 @@ class globalTimeSGetResponse : public ::google::protobuf::Message { public: globalTimeSGetResponse(); virtual ~globalTimeSGetResponse(); - + globalTimeSGetResponse(const globalTimeSGetResponse& from); - + inline globalTimeSGetResponse& operator=(const globalTimeSGetResponse& from) { CopyFrom(from); return *this; } - + inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const { return _unknown_fields_; } - + inline ::google::protobuf::UnknownFieldSet* mutable_unknown_fields() { return &_unknown_fields_; } - + static const ::google::protobuf::Descriptor* descriptor(); static const globalTimeSGetResponse& default_instance(); - + void Swap(globalTimeSGetResponse* other); - + // implements Message ---------------------------------------------- - + globalTimeSGetResponse* New() const; void CopyFrom(const ::google::protobuf::Message& from); void MergeFrom(const ::google::protobuf::Message& from); @@ -1225,7 +1197,7 @@ class globalTimeSGetResponse : public ::google::protobuf::Message { void MergeFrom(const globalTimeSGetResponse& from); void Clear(); bool IsInitialized() const; - + int ByteSize() const; bool MergePartialFromCodedStream( ::google::protobuf::io::CodedInputStream* input); @@ -1238,43 +1210,36 @@ class globalTimeSGetResponse : public ::google::protobuf::Message { void SharedDtor(); void SetCachedSize(int size) const; public: - + ::google::protobuf::Metadata GetMetadata() const; - + // nested types ---------------------------------------------------- - + // accessors ------------------------------------------------------- - + // required fixed64 time_in_seconds = 1; inline bool has_time_in_seconds() const; inline void clear_time_in_seconds(); static const int kTimeInSecondsFieldNumber = 1; inline ::google::protobuf::uint64 time_in_seconds() const; inline void set_time_in_seconds(::google::protobuf::uint64 value); - + // @@protoc_insertion_point(class_scope:xtreemfs.pbrpc.globalTimeSGetResponse) private: + inline void set_has_time_in_seconds(); + inline void clear_has_time_in_seconds(); + ::google::protobuf::UnknownFieldSet _unknown_fields_; - mutable int _cached_size_; - + ::google::protobuf::uint64 time_in_seconds_; + + mutable int _cached_size_; + ::google::protobuf::uint32 _has_bits_[(1 + 31) / 32]; + friend void protobuf_AddDesc_xtreemfs_2fDIR_2eproto(); friend void protobuf_AssignDesc_xtreemfs_2fDIR_2eproto(); friend void protobuf_ShutdownFile_xtreemfs_2fDIR_2eproto(); - - ::google::protobuf::uint32 _has_bits_[(1 + 31) / 32]; - - // WHY DOES & HAVE LOWER PRECEDENCE THAN != !? - inline bool _has_bit(int index) const { - return (_has_bits_[index / 32] & (1u << (index % 32))) != 0; - } - inline void _set_bit(int index) { - _has_bits_[index / 32] |= (1u << (index % 32)); - } - inline void _clear_bit(int index) { - _has_bits_[index / 32] &= ~(1u << (index % 32)); - } - + void InitAsDefaultInstance(); static globalTimeSGetResponse* default_instance_; }; @@ -1284,29 +1249,29 @@ class serviceDeregisterRequest : public ::google::protobuf::Message { public: serviceDeregisterRequest(); virtual ~serviceDeregisterRequest(); - + serviceDeregisterRequest(const serviceDeregisterRequest& from); - + inline serviceDeregisterRequest& operator=(const serviceDeregisterRequest& from) { CopyFrom(from); return *this; } - + inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const { return _unknown_fields_; } - + inline ::google::protobuf::UnknownFieldSet* mutable_unknown_fields() { return &_unknown_fields_; } - + static const ::google::protobuf::Descriptor* descriptor(); static const serviceDeregisterRequest& default_instance(); - + void Swap(serviceDeregisterRequest* other); - + // implements Message ---------------------------------------------- - + serviceDeregisterRequest* New() const; void CopyFrom(const ::google::protobuf::Message& from); void MergeFrom(const ::google::protobuf::Message& from); @@ -1314,7 +1279,7 @@ class serviceDeregisterRequest : public ::google::protobuf::Message { void MergeFrom(const serviceDeregisterRequest& from); void Clear(); bool IsInitialized() const; - + int ByteSize() const; bool MergePartialFromCodedStream( ::google::protobuf::io::CodedInputStream* input); @@ -1327,13 +1292,13 @@ class serviceDeregisterRequest : public ::google::protobuf::Message { void SharedDtor(); void SetCachedSize(int size) const; public: - + ::google::protobuf::Metadata GetMetadata() const; - + // nested types ---------------------------------------------------- - + // accessors ------------------------------------------------------- - + // required string uuid = 1; inline bool has_uuid() const; inline void clear_uuid(); @@ -1343,31 +1308,25 @@ class serviceDeregisterRequest : public ::google::protobuf::Message { inline void set_uuid(const char* value); inline void set_uuid(const char* value, size_t size); inline ::std::string* mutable_uuid(); - + inline ::std::string* release_uuid(); + inline void set_allocated_uuid(::std::string* uuid); + // @@protoc_insertion_point(class_scope:xtreemfs.pbrpc.serviceDeregisterRequest) private: + inline void set_has_uuid(); + inline void clear_has_uuid(); + ::google::protobuf::UnknownFieldSet _unknown_fields_; - mutable int _cached_size_; - + ::std::string* uuid_; - static const ::std::string _default_uuid_; + + mutable int _cached_size_; + ::google::protobuf::uint32 _has_bits_[(1 + 31) / 32]; + friend void protobuf_AddDesc_xtreemfs_2fDIR_2eproto(); friend void protobuf_AssignDesc_xtreemfs_2fDIR_2eproto(); friend void protobuf_ShutdownFile_xtreemfs_2fDIR_2eproto(); - - ::google::protobuf::uint32 _has_bits_[(1 + 31) / 32]; - - // WHY DOES & HAVE LOWER PRECEDENCE THAN != !? - inline bool _has_bit(int index) const { - return (_has_bits_[index / 32] & (1u << (index % 32))) != 0; - } - inline void _set_bit(int index) { - _has_bits_[index / 32] |= (1u << (index % 32)); - } - inline void _clear_bit(int index) { - _has_bits_[index / 32] &= ~(1u << (index % 32)); - } - + void InitAsDefaultInstance(); static serviceDeregisterRequest* default_instance_; }; @@ -1377,29 +1336,29 @@ class serviceGetByNameRequest : public ::google::protobuf::Message { public: serviceGetByNameRequest(); virtual ~serviceGetByNameRequest(); - + serviceGetByNameRequest(const serviceGetByNameRequest& from); - + inline serviceGetByNameRequest& operator=(const serviceGetByNameRequest& from) { CopyFrom(from); return *this; } - + inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const { return _unknown_fields_; } - + inline ::google::protobuf::UnknownFieldSet* mutable_unknown_fields() { return &_unknown_fields_; } - + static const ::google::protobuf::Descriptor* descriptor(); static const serviceGetByNameRequest& default_instance(); - + void Swap(serviceGetByNameRequest* other); - + // implements Message ---------------------------------------------- - + serviceGetByNameRequest* New() const; void CopyFrom(const ::google::protobuf::Message& from); void MergeFrom(const ::google::protobuf::Message& from); @@ -1407,7 +1366,7 @@ class serviceGetByNameRequest : public ::google::protobuf::Message { void MergeFrom(const serviceGetByNameRequest& from); void Clear(); bool IsInitialized() const; - + int ByteSize() const; bool MergePartialFromCodedStream( ::google::protobuf::io::CodedInputStream* input); @@ -1420,13 +1379,13 @@ class serviceGetByNameRequest : public ::google::protobuf::Message { void SharedDtor(); void SetCachedSize(int size) const; public: - + ::google::protobuf::Metadata GetMetadata() const; - + // nested types ---------------------------------------------------- - + // accessors ------------------------------------------------------- - + // required string name = 1; inline bool has_name() const; inline void clear_name(); @@ -1436,31 +1395,25 @@ class serviceGetByNameRequest : public ::google::protobuf::Message { inline void set_name(const char* value); inline void set_name(const char* value, size_t size); inline ::std::string* mutable_name(); - + inline ::std::string* release_name(); + inline void set_allocated_name(::std::string* name); + // @@protoc_insertion_point(class_scope:xtreemfs.pbrpc.serviceGetByNameRequest) private: + inline void set_has_name(); + inline void clear_has_name(); + ::google::protobuf::UnknownFieldSet _unknown_fields_; - mutable int _cached_size_; - + ::std::string* name_; - static const ::std::string _default_name_; + + mutable int _cached_size_; + ::google::protobuf::uint32 _has_bits_[(1 + 31) / 32]; + friend void protobuf_AddDesc_xtreemfs_2fDIR_2eproto(); friend void protobuf_AssignDesc_xtreemfs_2fDIR_2eproto(); friend void protobuf_ShutdownFile_xtreemfs_2fDIR_2eproto(); - - ::google::protobuf::uint32 _has_bits_[(1 + 31) / 32]; - - // WHY DOES & HAVE LOWER PRECEDENCE THAN != !? - inline bool _has_bit(int index) const { - return (_has_bits_[index / 32] & (1u << (index % 32))) != 0; - } - inline void _set_bit(int index) { - _has_bits_[index / 32] |= (1u << (index % 32)); - } - inline void _clear_bit(int index) { - _has_bits_[index / 32] &= ~(1u << (index % 32)); - } - + void InitAsDefaultInstance(); static serviceGetByNameRequest* default_instance_; }; @@ -1470,29 +1423,29 @@ class serviceGetByUUIDRequest : public ::google::protobuf::Message { public: serviceGetByUUIDRequest(); virtual ~serviceGetByUUIDRequest(); - + serviceGetByUUIDRequest(const serviceGetByUUIDRequest& from); - + inline serviceGetByUUIDRequest& operator=(const serviceGetByUUIDRequest& from) { CopyFrom(from); return *this; } - + inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const { return _unknown_fields_; } - + inline ::google::protobuf::UnknownFieldSet* mutable_unknown_fields() { return &_unknown_fields_; } - + static const ::google::protobuf::Descriptor* descriptor(); static const serviceGetByUUIDRequest& default_instance(); - + void Swap(serviceGetByUUIDRequest* other); - + // implements Message ---------------------------------------------- - + serviceGetByUUIDRequest* New() const; void CopyFrom(const ::google::protobuf::Message& from); void MergeFrom(const ::google::protobuf::Message& from); @@ -1500,7 +1453,7 @@ class serviceGetByUUIDRequest : public ::google::protobuf::Message { void MergeFrom(const serviceGetByUUIDRequest& from); void Clear(); bool IsInitialized() const; - + int ByteSize() const; bool MergePartialFromCodedStream( ::google::protobuf::io::CodedInputStream* input); @@ -1513,13 +1466,13 @@ class serviceGetByUUIDRequest : public ::google::protobuf::Message { void SharedDtor(); void SetCachedSize(int size) const; public: - + ::google::protobuf::Metadata GetMetadata() const; - + // nested types ---------------------------------------------------- - + // accessors ------------------------------------------------------- - + // required string name = 1; inline bool has_name() const; inline void clear_name(); @@ -1529,31 +1482,25 @@ class serviceGetByUUIDRequest : public ::google::protobuf::Message { inline void set_name(const char* value); inline void set_name(const char* value, size_t size); inline ::std::string* mutable_name(); - + inline ::std::string* release_name(); + inline void set_allocated_name(::std::string* name); + // @@protoc_insertion_point(class_scope:xtreemfs.pbrpc.serviceGetByUUIDRequest) private: + inline void set_has_name(); + inline void clear_has_name(); + ::google::protobuf::UnknownFieldSet _unknown_fields_; - mutable int _cached_size_; - + ::std::string* name_; - static const ::std::string _default_name_; + + mutable int _cached_size_; + ::google::protobuf::uint32 _has_bits_[(1 + 31) / 32]; + friend void protobuf_AddDesc_xtreemfs_2fDIR_2eproto(); friend void protobuf_AssignDesc_xtreemfs_2fDIR_2eproto(); friend void protobuf_ShutdownFile_xtreemfs_2fDIR_2eproto(); - - ::google::protobuf::uint32 _has_bits_[(1 + 31) / 32]; - - // WHY DOES & HAVE LOWER PRECEDENCE THAN != !? - inline bool _has_bit(int index) const { - return (_has_bits_[index / 32] & (1u << (index % 32))) != 0; - } - inline void _set_bit(int index) { - _has_bits_[index / 32] |= (1u << (index % 32)); - } - inline void _clear_bit(int index) { - _has_bits_[index / 32] &= ~(1u << (index % 32)); - } - + void InitAsDefaultInstance(); static serviceGetByUUIDRequest* default_instance_; }; @@ -1563,29 +1510,29 @@ class serviceGetByTypeRequest : public ::google::protobuf::Message { public: serviceGetByTypeRequest(); virtual ~serviceGetByTypeRequest(); - + serviceGetByTypeRequest(const serviceGetByTypeRequest& from); - + inline serviceGetByTypeRequest& operator=(const serviceGetByTypeRequest& from) { CopyFrom(from); return *this; } - + inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const { return _unknown_fields_; } - + inline ::google::protobuf::UnknownFieldSet* mutable_unknown_fields() { return &_unknown_fields_; } - + static const ::google::protobuf::Descriptor* descriptor(); static const serviceGetByTypeRequest& default_instance(); - + void Swap(serviceGetByTypeRequest* other); - + // implements Message ---------------------------------------------- - + serviceGetByTypeRequest* New() const; void CopyFrom(const ::google::protobuf::Message& from); void MergeFrom(const ::google::protobuf::Message& from); @@ -1593,7 +1540,7 @@ class serviceGetByTypeRequest : public ::google::protobuf::Message { void MergeFrom(const serviceGetByTypeRequest& from); void Clear(); bool IsInitialized() const; - + int ByteSize() const; bool MergePartialFromCodedStream( ::google::protobuf::io::CodedInputStream* input); @@ -1606,43 +1553,36 @@ class serviceGetByTypeRequest : public ::google::protobuf::Message { void SharedDtor(); void SetCachedSize(int size) const; public: - + ::google::protobuf::Metadata GetMetadata() const; - + // nested types ---------------------------------------------------- - + // accessors ------------------------------------------------------- - + // required .xtreemfs.pbrpc.ServiceType type = 1; inline bool has_type() const; inline void clear_type(); static const int kTypeFieldNumber = 1; - inline xtreemfs::pbrpc::ServiceType type() const; - inline void set_type(xtreemfs::pbrpc::ServiceType value); - + inline ::xtreemfs::pbrpc::ServiceType type() const; + inline void set_type(::xtreemfs::pbrpc::ServiceType value); + // @@protoc_insertion_point(class_scope:xtreemfs.pbrpc.serviceGetByTypeRequest) private: + inline void set_has_type(); + inline void clear_has_type(); + ::google::protobuf::UnknownFieldSet _unknown_fields_; - mutable int _cached_size_; - + int type_; + + mutable int _cached_size_; + ::google::protobuf::uint32 _has_bits_[(1 + 31) / 32]; + friend void protobuf_AddDesc_xtreemfs_2fDIR_2eproto(); friend void protobuf_AssignDesc_xtreemfs_2fDIR_2eproto(); friend void protobuf_ShutdownFile_xtreemfs_2fDIR_2eproto(); - - ::google::protobuf::uint32 _has_bits_[(1 + 31) / 32]; - - // WHY DOES & HAVE LOWER PRECEDENCE THAN != !? - inline bool _has_bit(int index) const { - return (_has_bits_[index / 32] & (1u << (index % 32))) != 0; - } - inline void _set_bit(int index) { - _has_bits_[index / 32] |= (1u << (index % 32)); - } - inline void _clear_bit(int index) { - _has_bits_[index / 32] &= ~(1u << (index % 32)); - } - + void InitAsDefaultInstance(); static serviceGetByTypeRequest* default_instance_; }; @@ -1652,29 +1592,29 @@ class serviceRegisterRequest : public ::google::protobuf::Message { public: serviceRegisterRequest(); virtual ~serviceRegisterRequest(); - + serviceRegisterRequest(const serviceRegisterRequest& from); - + inline serviceRegisterRequest& operator=(const serviceRegisterRequest& from) { CopyFrom(from); return *this; } - + inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const { return _unknown_fields_; } - + inline ::google::protobuf::UnknownFieldSet* mutable_unknown_fields() { return &_unknown_fields_; } - + static const ::google::protobuf::Descriptor* descriptor(); static const serviceRegisterRequest& default_instance(); - + void Swap(serviceRegisterRequest* other); - + // implements Message ---------------------------------------------- - + serviceRegisterRequest* New() const; void CopyFrom(const ::google::protobuf::Message& from); void MergeFrom(const ::google::protobuf::Message& from); @@ -1682,7 +1622,7 @@ class serviceRegisterRequest : public ::google::protobuf::Message { void MergeFrom(const serviceRegisterRequest& from); void Clear(); bool IsInitialized() const; - + int ByteSize() const; bool MergePartialFromCodedStream( ::google::protobuf::io::CodedInputStream* input); @@ -1695,43 +1635,38 @@ class serviceRegisterRequest : public ::google::protobuf::Message { void SharedDtor(); void SetCachedSize(int size) const; public: - + ::google::protobuf::Metadata GetMetadata() const; - + // nested types ---------------------------------------------------- - + // accessors ------------------------------------------------------- - + // required .xtreemfs.pbrpc.Service service = 1; inline bool has_service() const; inline void clear_service(); static const int kServiceFieldNumber = 1; inline const ::xtreemfs::pbrpc::Service& service() const; inline ::xtreemfs::pbrpc::Service* mutable_service(); - + inline ::xtreemfs::pbrpc::Service* release_service(); + inline void set_allocated_service(::xtreemfs::pbrpc::Service* service); + // @@protoc_insertion_point(class_scope:xtreemfs.pbrpc.serviceRegisterRequest) private: + inline void set_has_service(); + inline void clear_has_service(); + ::google::protobuf::UnknownFieldSet _unknown_fields_; - mutable int _cached_size_; - + ::xtreemfs::pbrpc::Service* service_; + + mutable int _cached_size_; + ::google::protobuf::uint32 _has_bits_[(1 + 31) / 32]; + friend void protobuf_AddDesc_xtreemfs_2fDIR_2eproto(); friend void protobuf_AssignDesc_xtreemfs_2fDIR_2eproto(); friend void protobuf_ShutdownFile_xtreemfs_2fDIR_2eproto(); - - ::google::protobuf::uint32 _has_bits_[(1 + 31) / 32]; - - // WHY DOES & HAVE LOWER PRECEDENCE THAN != !? - inline bool _has_bit(int index) const { - return (_has_bits_[index / 32] & (1u << (index % 32))) != 0; - } - inline void _set_bit(int index) { - _has_bits_[index / 32] |= (1u << (index % 32)); - } - inline void _clear_bit(int index) { - _has_bits_[index / 32] &= ~(1u << (index % 32)); - } - + void InitAsDefaultInstance(); static serviceRegisterRequest* default_instance_; }; @@ -1741,29 +1676,29 @@ class serviceRegisterResponse : public ::google::protobuf::Message { public: serviceRegisterResponse(); virtual ~serviceRegisterResponse(); - + serviceRegisterResponse(const serviceRegisterResponse& from); - + inline serviceRegisterResponse& operator=(const serviceRegisterResponse& from) { CopyFrom(from); return *this; } - + inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const { return _unknown_fields_; } - + inline ::google::protobuf::UnknownFieldSet* mutable_unknown_fields() { return &_unknown_fields_; } - + static const ::google::protobuf::Descriptor* descriptor(); static const serviceRegisterResponse& default_instance(); - + void Swap(serviceRegisterResponse* other); - + // implements Message ---------------------------------------------- - + serviceRegisterResponse* New() const; void CopyFrom(const ::google::protobuf::Message& from); void MergeFrom(const ::google::protobuf::Message& from); @@ -1771,7 +1706,7 @@ class serviceRegisterResponse : public ::google::protobuf::Message { void MergeFrom(const serviceRegisterResponse& from); void Clear(); bool IsInitialized() const; - + int ByteSize() const; bool MergePartialFromCodedStream( ::google::protobuf::io::CodedInputStream* input); @@ -1784,43 +1719,36 @@ class serviceRegisterResponse : public ::google::protobuf::Message { void SharedDtor(); void SetCachedSize(int size) const; public: - + ::google::protobuf::Metadata GetMetadata() const; - + // nested types ---------------------------------------------------- - + // accessors ------------------------------------------------------- - + // required fixed64 new_version = 1; inline bool has_new_version() const; inline void clear_new_version(); static const int kNewVersionFieldNumber = 1; inline ::google::protobuf::uint64 new_version() const; inline void set_new_version(::google::protobuf::uint64 value); - + // @@protoc_insertion_point(class_scope:xtreemfs.pbrpc.serviceRegisterResponse) private: + inline void set_has_new_version(); + inline void clear_has_new_version(); + ::google::protobuf::UnknownFieldSet _unknown_fields_; - mutable int _cached_size_; - + ::google::protobuf::uint64 new_version_; + + mutable int _cached_size_; + ::google::protobuf::uint32 _has_bits_[(1 + 31) / 32]; + friend void protobuf_AddDesc_xtreemfs_2fDIR_2eproto(); friend void protobuf_AssignDesc_xtreemfs_2fDIR_2eproto(); friend void protobuf_ShutdownFile_xtreemfs_2fDIR_2eproto(); - - ::google::protobuf::uint32 _has_bits_[(1 + 31) / 32]; - - // WHY DOES & HAVE LOWER PRECEDENCE THAN != !? - inline bool _has_bit(int index) const { - return (_has_bits_[index / 32] & (1u << (index % 32))) != 0; - } - inline void _set_bit(int index) { - _has_bits_[index / 32] |= (1u << (index % 32)); - } - inline void _clear_bit(int index) { - _has_bits_[index / 32] &= ~(1u << (index % 32)); - } - + void InitAsDefaultInstance(); static serviceRegisterResponse* default_instance_; }; @@ -1830,29 +1758,29 @@ class configurationGetRequest : public ::google::protobuf::Message { public: configurationGetRequest(); virtual ~configurationGetRequest(); - + configurationGetRequest(const configurationGetRequest& from); - + inline configurationGetRequest& operator=(const configurationGetRequest& from) { CopyFrom(from); return *this; } - + inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const { return _unknown_fields_; } - + inline ::google::protobuf::UnknownFieldSet* mutable_unknown_fields() { return &_unknown_fields_; } - + static const ::google::protobuf::Descriptor* descriptor(); static const configurationGetRequest& default_instance(); - + void Swap(configurationGetRequest* other); - + // implements Message ---------------------------------------------- - + configurationGetRequest* New() const; void CopyFrom(const ::google::protobuf::Message& from); void MergeFrom(const ::google::protobuf::Message& from); @@ -1860,7 +1788,7 @@ class configurationGetRequest : public ::google::protobuf::Message { void MergeFrom(const configurationGetRequest& from); void Clear(); bool IsInitialized() const; - + int ByteSize() const; bool MergePartialFromCodedStream( ::google::protobuf::io::CodedInputStream* input); @@ -1873,13 +1801,13 @@ class configurationGetRequest : public ::google::protobuf::Message { void SharedDtor(); void SetCachedSize(int size) const; public: - + ::google::protobuf::Metadata GetMetadata() const; - + // nested types ---------------------------------------------------- - + // accessors ------------------------------------------------------- - + // required string uuid = 1; inline bool has_uuid() const; inline void clear_uuid(); @@ -1889,31 +1817,25 @@ class configurationGetRequest : public ::google::protobuf::Message { inline void set_uuid(const char* value); inline void set_uuid(const char* value, size_t size); inline ::std::string* mutable_uuid(); - + inline ::std::string* release_uuid(); + inline void set_allocated_uuid(::std::string* uuid); + // @@protoc_insertion_point(class_scope:xtreemfs.pbrpc.configurationGetRequest) private: + inline void set_has_uuid(); + inline void clear_has_uuid(); + ::google::protobuf::UnknownFieldSet _unknown_fields_; - mutable int _cached_size_; - + ::std::string* uuid_; - static const ::std::string _default_uuid_; + + mutable int _cached_size_; + ::google::protobuf::uint32 _has_bits_[(1 + 31) / 32]; + friend void protobuf_AddDesc_xtreemfs_2fDIR_2eproto(); friend void protobuf_AssignDesc_xtreemfs_2fDIR_2eproto(); friend void protobuf_ShutdownFile_xtreemfs_2fDIR_2eproto(); - - ::google::protobuf::uint32 _has_bits_[(1 + 31) / 32]; - - // WHY DOES & HAVE LOWER PRECEDENCE THAN != !? - inline bool _has_bit(int index) const { - return (_has_bits_[index / 32] & (1u << (index % 32))) != 0; - } - inline void _set_bit(int index) { - _has_bits_[index / 32] |= (1u << (index % 32)); - } - inline void _clear_bit(int index) { - _has_bits_[index / 32] &= ~(1u << (index % 32)); - } - + void InitAsDefaultInstance(); static configurationGetRequest* default_instance_; }; @@ -1923,29 +1845,29 @@ class configurationSetResponse : public ::google::protobuf::Message { public: configurationSetResponse(); virtual ~configurationSetResponse(); - + configurationSetResponse(const configurationSetResponse& from); - + inline configurationSetResponse& operator=(const configurationSetResponse& from) { CopyFrom(from); return *this; } - + inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const { return _unknown_fields_; } - + inline ::google::protobuf::UnknownFieldSet* mutable_unknown_fields() { return &_unknown_fields_; } - + static const ::google::protobuf::Descriptor* descriptor(); static const configurationSetResponse& default_instance(); - + void Swap(configurationSetResponse* other); - + // implements Message ---------------------------------------------- - + configurationSetResponse* New() const; void CopyFrom(const ::google::protobuf::Message& from); void MergeFrom(const ::google::protobuf::Message& from); @@ -1953,7 +1875,7 @@ class configurationSetResponse : public ::google::protobuf::Message { void MergeFrom(const configurationSetResponse& from); void Clear(); bool IsInitialized() const; - + int ByteSize() const; bool MergePartialFromCodedStream( ::google::protobuf::io::CodedInputStream* input); @@ -1966,227 +1888,41 @@ class configurationSetResponse : public ::google::protobuf::Message { void SharedDtor(); void SetCachedSize(int size) const; public: - + ::google::protobuf::Metadata GetMetadata() const; - + // nested types ---------------------------------------------------- - + // accessors ------------------------------------------------------- - + // optional fixed64 new_version = 1; inline bool has_new_version() const; inline void clear_new_version(); static const int kNewVersionFieldNumber = 1; inline ::google::protobuf::uint64 new_version() const; inline void set_new_version(::google::protobuf::uint64 value); - + // @@protoc_insertion_point(class_scope:xtreemfs.pbrpc.configurationSetResponse) private: + inline void set_has_new_version(); + inline void clear_has_new_version(); + ::google::protobuf::UnknownFieldSet _unknown_fields_; - mutable int _cached_size_; - + ::google::protobuf::uint64 new_version_; + + mutable int _cached_size_; + ::google::protobuf::uint32 _has_bits_[(1 + 31) / 32]; + friend void protobuf_AddDesc_xtreemfs_2fDIR_2eproto(); friend void protobuf_AssignDesc_xtreemfs_2fDIR_2eproto(); friend void protobuf_ShutdownFile_xtreemfs_2fDIR_2eproto(); - - ::google::protobuf::uint32 _has_bits_[(1 + 31) / 32]; - - // WHY DOES & HAVE LOWER PRECEDENCE THAN != !? - inline bool _has_bit(int index) const { - return (_has_bits_[index / 32] & (1u << (index % 32))) != 0; - } - inline void _set_bit(int index) { - _has_bits_[index / 32] |= (1u << (index % 32)); - } - inline void _clear_bit(int index) { - _has_bits_[index / 32] &= ~(1u << (index % 32)); - } - + void InitAsDefaultInstance(); static configurationSetResponse* default_instance_; }; // =================================================================== -class DirectoryService_Stub; - -class DirectoryService : public ::google::protobuf::Service { - protected: - // This class should be treated as an abstract interface. - inline DirectoryService() {}; - public: - virtual ~DirectoryService(); - - typedef DirectoryService_Stub Stub; - - static const ::google::protobuf::ServiceDescriptor* descriptor(); - - virtual void xtreemfs_address_mappings_get(::google::protobuf::RpcController* controller, - const ::xtreemfs::pbrpc::addressMappingGetRequest* request, - ::xtreemfs::pbrpc::AddressMappingSet* response, - ::google::protobuf::Closure* done); - virtual void xtreemfs_address_mappings_remove(::google::protobuf::RpcController* controller, - const ::xtreemfs::pbrpc::addressMappingGetRequest* request, - ::xtreemfs::pbrpc::emptyResponse* response, - ::google::protobuf::Closure* done); - virtual void xtreemfs_address_mappings_set(::google::protobuf::RpcController* controller, - const ::xtreemfs::pbrpc::AddressMappingSet* request, - ::xtreemfs::pbrpc::addressMappingSetResponse* response, - ::google::protobuf::Closure* done); - virtual void xtreemfs_discover_dir(::google::protobuf::RpcController* controller, - const ::xtreemfs::pbrpc::emptyRequest* request, - ::xtreemfs::pbrpc::DirService* response, - ::google::protobuf::Closure* done); - virtual void xtreemfs_global_time_s_get(::google::protobuf::RpcController* controller, - const ::xtreemfs::pbrpc::emptyRequest* request, - ::xtreemfs::pbrpc::globalTimeSGetResponse* response, - ::google::protobuf::Closure* done); - virtual void xtreemfs_service_deregister(::google::protobuf::RpcController* controller, - const ::xtreemfs::pbrpc::serviceDeregisterRequest* request, - ::xtreemfs::pbrpc::emptyResponse* response, - ::google::protobuf::Closure* done); - virtual void xtreemfs_service_get_by_name(::google::protobuf::RpcController* controller, - const ::xtreemfs::pbrpc::serviceGetByNameRequest* request, - ::xtreemfs::pbrpc::ServiceSet* response, - ::google::protobuf::Closure* done); - virtual void xtreemfs_service_get_by_type(::google::protobuf::RpcController* controller, - const ::xtreemfs::pbrpc::serviceGetByTypeRequest* request, - ::xtreemfs::pbrpc::ServiceSet* response, - ::google::protobuf::Closure* done); - virtual void xtreemfs_service_get_by_uuid(::google::protobuf::RpcController* controller, - const ::xtreemfs::pbrpc::serviceGetByUUIDRequest* request, - ::xtreemfs::pbrpc::ServiceSet* response, - ::google::protobuf::Closure* done); - virtual void xtreemfs_service_offline(::google::protobuf::RpcController* controller, - const ::xtreemfs::pbrpc::serviceGetByUUIDRequest* request, - ::xtreemfs::pbrpc::emptyResponse* response, - ::google::protobuf::Closure* done); - virtual void xtreemfs_service_register(::google::protobuf::RpcController* controller, - const ::xtreemfs::pbrpc::serviceRegisterRequest* request, - ::xtreemfs::pbrpc::serviceRegisterResponse* response, - ::google::protobuf::Closure* done); - virtual void xtreemfs_checkpoint(::google::protobuf::RpcController* controller, - const ::xtreemfs::pbrpc::emptyRequest* request, - ::xtreemfs::pbrpc::emptyResponse* response, - ::google::protobuf::Closure* done); - virtual void xtreemfs_shutdown(::google::protobuf::RpcController* controller, - const ::xtreemfs::pbrpc::emptyRequest* request, - ::xtreemfs::pbrpc::emptyResponse* response, - ::google::protobuf::Closure* done); - virtual void xtreemfs_configuration_get(::google::protobuf::RpcController* controller, - const ::xtreemfs::pbrpc::configurationGetRequest* request, - ::xtreemfs::pbrpc::Configuration* response, - ::google::protobuf::Closure* done); - virtual void xtreemfs_configuration_set(::google::protobuf::RpcController* controller, - const ::xtreemfs::pbrpc::Configuration* request, - ::xtreemfs::pbrpc::configurationSetResponse* response, - ::google::protobuf::Closure* done); - virtual void xtreemfs_vivaldi_client_update(::google::protobuf::RpcController* controller, - const ::xtreemfs::pbrpc::VivaldiCoordinates* request, - ::xtreemfs::pbrpc::emptyResponse* response, - ::google::protobuf::Closure* done); - - // implements Service ---------------------------------------------- - - const ::google::protobuf::ServiceDescriptor* GetDescriptor(); - void CallMethod(const ::google::protobuf::MethodDescriptor* method, - ::google::protobuf::RpcController* controller, - const ::google::protobuf::Message* request, - ::google::protobuf::Message* response, - ::google::protobuf::Closure* done); - const ::google::protobuf::Message& GetRequestPrototype( - const ::google::protobuf::MethodDescriptor* method) const; - const ::google::protobuf::Message& GetResponsePrototype( - const ::google::protobuf::MethodDescriptor* method) const; - - private: - GOOGLE_DISALLOW_EVIL_CONSTRUCTORS(DirectoryService); -}; - -class DirectoryService_Stub : public DirectoryService { - public: - DirectoryService_Stub(::google::protobuf::RpcChannel* channel); - DirectoryService_Stub(::google::protobuf::RpcChannel* channel, - ::google::protobuf::Service::ChannelOwnership ownership); - ~DirectoryService_Stub(); - - inline ::google::protobuf::RpcChannel* channel() { return channel_; } - - // implements DirectoryService ------------------------------------------ - - void xtreemfs_address_mappings_get(::google::protobuf::RpcController* controller, - const ::xtreemfs::pbrpc::addressMappingGetRequest* request, - ::xtreemfs::pbrpc::AddressMappingSet* response, - ::google::protobuf::Closure* done); - void xtreemfs_address_mappings_remove(::google::protobuf::RpcController* controller, - const ::xtreemfs::pbrpc::addressMappingGetRequest* request, - ::xtreemfs::pbrpc::emptyResponse* response, - ::google::protobuf::Closure* done); - void xtreemfs_address_mappings_set(::google::protobuf::RpcController* controller, - const ::xtreemfs::pbrpc::AddressMappingSet* request, - ::xtreemfs::pbrpc::addressMappingSetResponse* response, - ::google::protobuf::Closure* done); - void xtreemfs_discover_dir(::google::protobuf::RpcController* controller, - const ::xtreemfs::pbrpc::emptyRequest* request, - ::xtreemfs::pbrpc::DirService* response, - ::google::protobuf::Closure* done); - void xtreemfs_global_time_s_get(::google::protobuf::RpcController* controller, - const ::xtreemfs::pbrpc::emptyRequest* request, - ::xtreemfs::pbrpc::globalTimeSGetResponse* response, - ::google::protobuf::Closure* done); - void xtreemfs_service_deregister(::google::protobuf::RpcController* controller, - const ::xtreemfs::pbrpc::serviceDeregisterRequest* request, - ::xtreemfs::pbrpc::emptyResponse* response, - ::google::protobuf::Closure* done); - void xtreemfs_service_get_by_name(::google::protobuf::RpcController* controller, - const ::xtreemfs::pbrpc::serviceGetByNameRequest* request, - ::xtreemfs::pbrpc::ServiceSet* response, - ::google::protobuf::Closure* done); - void xtreemfs_service_get_by_type(::google::protobuf::RpcController* controller, - const ::xtreemfs::pbrpc::serviceGetByTypeRequest* request, - ::xtreemfs::pbrpc::ServiceSet* response, - ::google::protobuf::Closure* done); - void xtreemfs_service_get_by_uuid(::google::protobuf::RpcController* controller, - const ::xtreemfs::pbrpc::serviceGetByUUIDRequest* request, - ::xtreemfs::pbrpc::ServiceSet* response, - ::google::protobuf::Closure* done); - void xtreemfs_service_offline(::google::protobuf::RpcController* controller, - const ::xtreemfs::pbrpc::serviceGetByUUIDRequest* request, - ::xtreemfs::pbrpc::emptyResponse* response, - ::google::protobuf::Closure* done); - void xtreemfs_service_register(::google::protobuf::RpcController* controller, - const ::xtreemfs::pbrpc::serviceRegisterRequest* request, - ::xtreemfs::pbrpc::serviceRegisterResponse* response, - ::google::protobuf::Closure* done); - void xtreemfs_checkpoint(::google::protobuf::RpcController* controller, - const ::xtreemfs::pbrpc::emptyRequest* request, - ::xtreemfs::pbrpc::emptyResponse* response, - ::google::protobuf::Closure* done); - void xtreemfs_shutdown(::google::protobuf::RpcController* controller, - const ::xtreemfs::pbrpc::emptyRequest* request, - ::xtreemfs::pbrpc::emptyResponse* response, - ::google::protobuf::Closure* done); - void xtreemfs_configuration_get(::google::protobuf::RpcController* controller, - const ::xtreemfs::pbrpc::configurationGetRequest* request, - ::xtreemfs::pbrpc::Configuration* response, - ::google::protobuf::Closure* done); - void xtreemfs_configuration_set(::google::protobuf::RpcController* controller, - const ::xtreemfs::pbrpc::Configuration* request, - ::xtreemfs::pbrpc::configurationSetResponse* response, - ::google::protobuf::Closure* done); - void xtreemfs_vivaldi_client_update(::google::protobuf::RpcController* controller, - const ::xtreemfs::pbrpc::VivaldiCoordinates* request, - ::xtreemfs::pbrpc::emptyResponse* response, - ::google::protobuf::Closure* done); - private: - ::google::protobuf::RpcChannel* channel_; - bool owns_channel_; - GOOGLE_DISALLOW_EVIL_CONSTRUCTORS(DirectoryService_Stub); -}; - - -// =================================================================== - // =================================================================== @@ -2194,261 +1930,419 @@ class DirectoryService_Stub : public DirectoryService { // required string uuid = 1; inline bool AddressMapping::has_uuid() const { - return _has_bit(0); + return (_has_bits_[0] & 0x00000001u) != 0; +} +inline void AddressMapping::set_has_uuid() { + _has_bits_[0] |= 0x00000001u; +} +inline void AddressMapping::clear_has_uuid() { + _has_bits_[0] &= ~0x00000001u; } inline void AddressMapping::clear_uuid() { - if (uuid_ != &_default_uuid_) { + if (uuid_ != &::google::protobuf::internal::kEmptyString) { uuid_->clear(); } - _clear_bit(0); + clear_has_uuid(); } inline const ::std::string& AddressMapping::uuid() const { return *uuid_; } inline void AddressMapping::set_uuid(const ::std::string& value) { - _set_bit(0); - if (uuid_ == &_default_uuid_) { + set_has_uuid(); + if (uuid_ == &::google::protobuf::internal::kEmptyString) { uuid_ = new ::std::string; } uuid_->assign(value); } inline void AddressMapping::set_uuid(const char* value) { - _set_bit(0); - if (uuid_ == &_default_uuid_) { + set_has_uuid(); + if (uuid_ == &::google::protobuf::internal::kEmptyString) { uuid_ = new ::std::string; } uuid_->assign(value); } inline void AddressMapping::set_uuid(const char* value, size_t size) { - _set_bit(0); - if (uuid_ == &_default_uuid_) { + set_has_uuid(); + if (uuid_ == &::google::protobuf::internal::kEmptyString) { uuid_ = new ::std::string; } uuid_->assign(reinterpret_cast(value), size); } inline ::std::string* AddressMapping::mutable_uuid() { - _set_bit(0); - if (uuid_ == &_default_uuid_) { + set_has_uuid(); + if (uuid_ == &::google::protobuf::internal::kEmptyString) { uuid_ = new ::std::string; } return uuid_; } +inline ::std::string* AddressMapping::release_uuid() { + clear_has_uuid(); + if (uuid_ == &::google::protobuf::internal::kEmptyString) { + return NULL; + } else { + ::std::string* temp = uuid_; + uuid_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + return temp; + } +} +inline void AddressMapping::set_allocated_uuid(::std::string* uuid) { + if (uuid_ != &::google::protobuf::internal::kEmptyString) { + delete uuid_; + } + if (uuid) { + set_has_uuid(); + uuid_ = uuid; + } else { + clear_has_uuid(); + uuid_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + } +} // required fixed64 version = 2; inline bool AddressMapping::has_version() const { - return _has_bit(1); + return (_has_bits_[0] & 0x00000002u) != 0; +} +inline void AddressMapping::set_has_version() { + _has_bits_[0] |= 0x00000002u; +} +inline void AddressMapping::clear_has_version() { + _has_bits_[0] &= ~0x00000002u; } inline void AddressMapping::clear_version() { version_ = GOOGLE_ULONGLONG(0); - _clear_bit(1); + clear_has_version(); } inline ::google::protobuf::uint64 AddressMapping::version() const { return version_; } inline void AddressMapping::set_version(::google::protobuf::uint64 value) { - _set_bit(1); + set_has_version(); version_ = value; } // required string protocol = 3; inline bool AddressMapping::has_protocol() const { - return _has_bit(2); + return (_has_bits_[0] & 0x00000004u) != 0; +} +inline void AddressMapping::set_has_protocol() { + _has_bits_[0] |= 0x00000004u; +} +inline void AddressMapping::clear_has_protocol() { + _has_bits_[0] &= ~0x00000004u; } inline void AddressMapping::clear_protocol() { - if (protocol_ != &_default_protocol_) { + if (protocol_ != &::google::protobuf::internal::kEmptyString) { protocol_->clear(); } - _clear_bit(2); + clear_has_protocol(); } inline const ::std::string& AddressMapping::protocol() const { return *protocol_; } inline void AddressMapping::set_protocol(const ::std::string& value) { - _set_bit(2); - if (protocol_ == &_default_protocol_) { + set_has_protocol(); + if (protocol_ == &::google::protobuf::internal::kEmptyString) { protocol_ = new ::std::string; } protocol_->assign(value); } inline void AddressMapping::set_protocol(const char* value) { - _set_bit(2); - if (protocol_ == &_default_protocol_) { + set_has_protocol(); + if (protocol_ == &::google::protobuf::internal::kEmptyString) { protocol_ = new ::std::string; } protocol_->assign(value); } inline void AddressMapping::set_protocol(const char* value, size_t size) { - _set_bit(2); - if (protocol_ == &_default_protocol_) { + set_has_protocol(); + if (protocol_ == &::google::protobuf::internal::kEmptyString) { protocol_ = new ::std::string; } protocol_->assign(reinterpret_cast(value), size); } inline ::std::string* AddressMapping::mutable_protocol() { - _set_bit(2); - if (protocol_ == &_default_protocol_) { + set_has_protocol(); + if (protocol_ == &::google::protobuf::internal::kEmptyString) { protocol_ = new ::std::string; } return protocol_; } +inline ::std::string* AddressMapping::release_protocol() { + clear_has_protocol(); + if (protocol_ == &::google::protobuf::internal::kEmptyString) { + return NULL; + } else { + ::std::string* temp = protocol_; + protocol_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + return temp; + } +} +inline void AddressMapping::set_allocated_protocol(::std::string* protocol) { + if (protocol_ != &::google::protobuf::internal::kEmptyString) { + delete protocol_; + } + if (protocol) { + set_has_protocol(); + protocol_ = protocol; + } else { + clear_has_protocol(); + protocol_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + } +} // required string address = 4; inline bool AddressMapping::has_address() const { - return _has_bit(3); + return (_has_bits_[0] & 0x00000008u) != 0; +} +inline void AddressMapping::set_has_address() { + _has_bits_[0] |= 0x00000008u; +} +inline void AddressMapping::clear_has_address() { + _has_bits_[0] &= ~0x00000008u; } inline void AddressMapping::clear_address() { - if (address_ != &_default_address_) { + if (address_ != &::google::protobuf::internal::kEmptyString) { address_->clear(); } - _clear_bit(3); + clear_has_address(); } inline const ::std::string& AddressMapping::address() const { return *address_; } inline void AddressMapping::set_address(const ::std::string& value) { - _set_bit(3); - if (address_ == &_default_address_) { + set_has_address(); + if (address_ == &::google::protobuf::internal::kEmptyString) { address_ = new ::std::string; } address_->assign(value); } inline void AddressMapping::set_address(const char* value) { - _set_bit(3); - if (address_ == &_default_address_) { + set_has_address(); + if (address_ == &::google::protobuf::internal::kEmptyString) { address_ = new ::std::string; } address_->assign(value); } inline void AddressMapping::set_address(const char* value, size_t size) { - _set_bit(3); - if (address_ == &_default_address_) { + set_has_address(); + if (address_ == &::google::protobuf::internal::kEmptyString) { address_ = new ::std::string; } address_->assign(reinterpret_cast(value), size); } inline ::std::string* AddressMapping::mutable_address() { - _set_bit(3); - if (address_ == &_default_address_) { + set_has_address(); + if (address_ == &::google::protobuf::internal::kEmptyString) { address_ = new ::std::string; } return address_; } +inline ::std::string* AddressMapping::release_address() { + clear_has_address(); + if (address_ == &::google::protobuf::internal::kEmptyString) { + return NULL; + } else { + ::std::string* temp = address_; + address_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + return temp; + } +} +inline void AddressMapping::set_allocated_address(::std::string* address) { + if (address_ != &::google::protobuf::internal::kEmptyString) { + delete address_; + } + if (address) { + set_has_address(); + address_ = address; + } else { + clear_has_address(); + address_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + } +} // required fixed32 port = 5; inline bool AddressMapping::has_port() const { - return _has_bit(4); + return (_has_bits_[0] & 0x00000010u) != 0; +} +inline void AddressMapping::set_has_port() { + _has_bits_[0] |= 0x00000010u; +} +inline void AddressMapping::clear_has_port() { + _has_bits_[0] &= ~0x00000010u; } inline void AddressMapping::clear_port() { port_ = 0u; - _clear_bit(4); + clear_has_port(); } inline ::google::protobuf::uint32 AddressMapping::port() const { return port_; } inline void AddressMapping::set_port(::google::protobuf::uint32 value) { - _set_bit(4); + set_has_port(); port_ = value; } // required string match_network = 6; inline bool AddressMapping::has_match_network() const { - return _has_bit(5); + return (_has_bits_[0] & 0x00000020u) != 0; +} +inline void AddressMapping::set_has_match_network() { + _has_bits_[0] |= 0x00000020u; +} +inline void AddressMapping::clear_has_match_network() { + _has_bits_[0] &= ~0x00000020u; } inline void AddressMapping::clear_match_network() { - if (match_network_ != &_default_match_network_) { + if (match_network_ != &::google::protobuf::internal::kEmptyString) { match_network_->clear(); } - _clear_bit(5); + clear_has_match_network(); } inline const ::std::string& AddressMapping::match_network() const { return *match_network_; } inline void AddressMapping::set_match_network(const ::std::string& value) { - _set_bit(5); - if (match_network_ == &_default_match_network_) { + set_has_match_network(); + if (match_network_ == &::google::protobuf::internal::kEmptyString) { match_network_ = new ::std::string; } match_network_->assign(value); } inline void AddressMapping::set_match_network(const char* value) { - _set_bit(5); - if (match_network_ == &_default_match_network_) { + set_has_match_network(); + if (match_network_ == &::google::protobuf::internal::kEmptyString) { match_network_ = new ::std::string; } match_network_->assign(value); } inline void AddressMapping::set_match_network(const char* value, size_t size) { - _set_bit(5); - if (match_network_ == &_default_match_network_) { + set_has_match_network(); + if (match_network_ == &::google::protobuf::internal::kEmptyString) { match_network_ = new ::std::string; } match_network_->assign(reinterpret_cast(value), size); } inline ::std::string* AddressMapping::mutable_match_network() { - _set_bit(5); - if (match_network_ == &_default_match_network_) { + set_has_match_network(); + if (match_network_ == &::google::protobuf::internal::kEmptyString) { match_network_ = new ::std::string; } return match_network_; } +inline ::std::string* AddressMapping::release_match_network() { + clear_has_match_network(); + if (match_network_ == &::google::protobuf::internal::kEmptyString) { + return NULL; + } else { + ::std::string* temp = match_network_; + match_network_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + return temp; + } +} +inline void AddressMapping::set_allocated_match_network(::std::string* match_network) { + if (match_network_ != &::google::protobuf::internal::kEmptyString) { + delete match_network_; + } + if (match_network) { + set_has_match_network(); + match_network_ = match_network; + } else { + clear_has_match_network(); + match_network_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + } +} // required fixed32 ttl_s = 7; inline bool AddressMapping::has_ttl_s() const { - return _has_bit(6); + return (_has_bits_[0] & 0x00000040u) != 0; +} +inline void AddressMapping::set_has_ttl_s() { + _has_bits_[0] |= 0x00000040u; +} +inline void AddressMapping::clear_has_ttl_s() { + _has_bits_[0] &= ~0x00000040u; } inline void AddressMapping::clear_ttl_s() { ttl_s_ = 0u; - _clear_bit(6); + clear_has_ttl_s(); } inline ::google::protobuf::uint32 AddressMapping::ttl_s() const { return ttl_s_; } inline void AddressMapping::set_ttl_s(::google::protobuf::uint32 value) { - _set_bit(6); + set_has_ttl_s(); ttl_s_ = value; } // required string uri = 8; inline bool AddressMapping::has_uri() const { - return _has_bit(7); + return (_has_bits_[0] & 0x00000080u) != 0; +} +inline void AddressMapping::set_has_uri() { + _has_bits_[0] |= 0x00000080u; +} +inline void AddressMapping::clear_has_uri() { + _has_bits_[0] &= ~0x00000080u; } inline void AddressMapping::clear_uri() { - if (uri_ != &_default_uri_) { + if (uri_ != &::google::protobuf::internal::kEmptyString) { uri_->clear(); } - _clear_bit(7); + clear_has_uri(); } inline const ::std::string& AddressMapping::uri() const { return *uri_; } inline void AddressMapping::set_uri(const ::std::string& value) { - _set_bit(7); - if (uri_ == &_default_uri_) { + set_has_uri(); + if (uri_ == &::google::protobuf::internal::kEmptyString) { uri_ = new ::std::string; } uri_->assign(value); } inline void AddressMapping::set_uri(const char* value) { - _set_bit(7); - if (uri_ == &_default_uri_) { + set_has_uri(); + if (uri_ == &::google::protobuf::internal::kEmptyString) { uri_ = new ::std::string; } uri_->assign(value); } inline void AddressMapping::set_uri(const char* value, size_t size) { - _set_bit(7); - if (uri_ == &_default_uri_) { + set_has_uri(); + if (uri_ == &::google::protobuf::internal::kEmptyString) { uri_ = new ::std::string; } uri_->assign(reinterpret_cast(value), size); } inline ::std::string* AddressMapping::mutable_uri() { - _set_bit(7); - if (uri_ == &_default_uri_) { + set_has_uri(); + if (uri_ == &::google::protobuf::internal::kEmptyString) { uri_ = new ::std::string; } return uri_; } +inline ::std::string* AddressMapping::release_uri() { + clear_has_uri(); + if (uri_ == &::google::protobuf::internal::kEmptyString) { + return NULL; + } else { + ::std::string* temp = uri_; + uri_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + return temp; + } +} +inline void AddressMapping::set_allocated_uri(::std::string* uri) { + if (uri_ != &::google::protobuf::internal::kEmptyString) { + delete uri_; + } + if (uri) { + set_has_uri(); + uri_ = uri; + } else { + clear_has_uri(); + uri_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + } +} // ------------------------------------------------------------------- @@ -2485,117 +2379,185 @@ AddressMappingSet::mutable_mappings() { // required string address = 1; inline bool DirService::has_address() const { - return _has_bit(0); + return (_has_bits_[0] & 0x00000001u) != 0; +} +inline void DirService::set_has_address() { + _has_bits_[0] |= 0x00000001u; +} +inline void DirService::clear_has_address() { + _has_bits_[0] &= ~0x00000001u; } inline void DirService::clear_address() { - if (address_ != &_default_address_) { + if (address_ != &::google::protobuf::internal::kEmptyString) { address_->clear(); } - _clear_bit(0); + clear_has_address(); } inline const ::std::string& DirService::address() const { return *address_; } inline void DirService::set_address(const ::std::string& value) { - _set_bit(0); - if (address_ == &_default_address_) { + set_has_address(); + if (address_ == &::google::protobuf::internal::kEmptyString) { address_ = new ::std::string; } address_->assign(value); } inline void DirService::set_address(const char* value) { - _set_bit(0); - if (address_ == &_default_address_) { + set_has_address(); + if (address_ == &::google::protobuf::internal::kEmptyString) { address_ = new ::std::string; } address_->assign(value); } inline void DirService::set_address(const char* value, size_t size) { - _set_bit(0); - if (address_ == &_default_address_) { + set_has_address(); + if (address_ == &::google::protobuf::internal::kEmptyString) { address_ = new ::std::string; } address_->assign(reinterpret_cast(value), size); } inline ::std::string* DirService::mutable_address() { - _set_bit(0); - if (address_ == &_default_address_) { + set_has_address(); + if (address_ == &::google::protobuf::internal::kEmptyString) { address_ = new ::std::string; } return address_; } +inline ::std::string* DirService::release_address() { + clear_has_address(); + if (address_ == &::google::protobuf::internal::kEmptyString) { + return NULL; + } else { + ::std::string* temp = address_; + address_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + return temp; + } +} +inline void DirService::set_allocated_address(::std::string* address) { + if (address_ != &::google::protobuf::internal::kEmptyString) { + delete address_; + } + if (address) { + set_has_address(); + address_ = address; + } else { + clear_has_address(); + address_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + } +} // required fixed32 port = 2; inline bool DirService::has_port() const { - return _has_bit(1); + return (_has_bits_[0] & 0x00000002u) != 0; +} +inline void DirService::set_has_port() { + _has_bits_[0] |= 0x00000002u; +} +inline void DirService::clear_has_port() { + _has_bits_[0] &= ~0x00000002u; } inline void DirService::clear_port() { port_ = 0u; - _clear_bit(1); + clear_has_port(); } inline ::google::protobuf::uint32 DirService::port() const { return port_; } inline void DirService::set_port(::google::protobuf::uint32 value) { - _set_bit(1); + set_has_port(); port_ = value; } // required string protocol = 3; inline bool DirService::has_protocol() const { - return _has_bit(2); + return (_has_bits_[0] & 0x00000004u) != 0; +} +inline void DirService::set_has_protocol() { + _has_bits_[0] |= 0x00000004u; +} +inline void DirService::clear_has_protocol() { + _has_bits_[0] &= ~0x00000004u; } inline void DirService::clear_protocol() { - if (protocol_ != &_default_protocol_) { + if (protocol_ != &::google::protobuf::internal::kEmptyString) { protocol_->clear(); } - _clear_bit(2); + clear_has_protocol(); } inline const ::std::string& DirService::protocol() const { return *protocol_; } inline void DirService::set_protocol(const ::std::string& value) { - _set_bit(2); - if (protocol_ == &_default_protocol_) { + set_has_protocol(); + if (protocol_ == &::google::protobuf::internal::kEmptyString) { protocol_ = new ::std::string; } protocol_->assign(value); } inline void DirService::set_protocol(const char* value) { - _set_bit(2); - if (protocol_ == &_default_protocol_) { + set_has_protocol(); + if (protocol_ == &::google::protobuf::internal::kEmptyString) { protocol_ = new ::std::string; } protocol_->assign(value); } inline void DirService::set_protocol(const char* value, size_t size) { - _set_bit(2); - if (protocol_ == &_default_protocol_) { + set_has_protocol(); + if (protocol_ == &::google::protobuf::internal::kEmptyString) { protocol_ = new ::std::string; } protocol_->assign(reinterpret_cast(value), size); } inline ::std::string* DirService::mutable_protocol() { - _set_bit(2); - if (protocol_ == &_default_protocol_) { + set_has_protocol(); + if (protocol_ == &::google::protobuf::internal::kEmptyString) { protocol_ = new ::std::string; } return protocol_; } +inline ::std::string* DirService::release_protocol() { + clear_has_protocol(); + if (protocol_ == &::google::protobuf::internal::kEmptyString) { + return NULL; + } else { + ::std::string* temp = protocol_; + protocol_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + return temp; + } +} +inline void DirService::set_allocated_protocol(::std::string* protocol) { + if (protocol_ != &::google::protobuf::internal::kEmptyString) { + delete protocol_; + } + if (protocol) { + set_has_protocol(); + protocol_ = protocol; + } else { + clear_has_protocol(); + protocol_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + } +} // required fixed32 interface_version = 4; inline bool DirService::has_interface_version() const { - return _has_bit(3); + return (_has_bits_[0] & 0x00000008u) != 0; +} +inline void DirService::set_has_interface_version() { + _has_bits_[0] |= 0x00000008u; +} +inline void DirService::clear_has_interface_version() { + _has_bits_[0] &= ~0x00000008u; } inline void DirService::clear_interface_version() { interface_version_ = 0u; - _clear_bit(3); + clear_has_interface_version(); } inline ::google::protobuf::uint32 DirService::interface_version() const { return interface_version_; } inline void DirService::set_interface_version(::google::protobuf::uint32 value) { - _set_bit(3); + set_has_interface_version(); interface_version_ = value; } @@ -2634,153 +2596,248 @@ ServiceDataMap::mutable_data() { // required .xtreemfs.pbrpc.ServiceType type = 1; inline bool Service::has_type() const { - return _has_bit(0); + return (_has_bits_[0] & 0x00000001u) != 0; +} +inline void Service::set_has_type() { + _has_bits_[0] |= 0x00000001u; +} +inline void Service::clear_has_type() { + _has_bits_[0] &= ~0x00000001u; } inline void Service::clear_type() { type_ = 0; - _clear_bit(0); + clear_has_type(); } -inline xtreemfs::pbrpc::ServiceType Service::type() const { - return static_cast< xtreemfs::pbrpc::ServiceType >(type_); +inline ::xtreemfs::pbrpc::ServiceType Service::type() const { + return static_cast< ::xtreemfs::pbrpc::ServiceType >(type_); } -inline void Service::set_type(xtreemfs::pbrpc::ServiceType value) { - GOOGLE_DCHECK(xtreemfs::pbrpc::ServiceType_IsValid(value)); - _set_bit(0); +inline void Service::set_type(::xtreemfs::pbrpc::ServiceType value) { + assert(::xtreemfs::pbrpc::ServiceType_IsValid(value)); + set_has_type(); type_ = value; } // required string uuid = 2; inline bool Service::has_uuid() const { - return _has_bit(1); + return (_has_bits_[0] & 0x00000002u) != 0; +} +inline void Service::set_has_uuid() { + _has_bits_[0] |= 0x00000002u; +} +inline void Service::clear_has_uuid() { + _has_bits_[0] &= ~0x00000002u; } inline void Service::clear_uuid() { - if (uuid_ != &_default_uuid_) { + if (uuid_ != &::google::protobuf::internal::kEmptyString) { uuid_->clear(); } - _clear_bit(1); + clear_has_uuid(); } inline const ::std::string& Service::uuid() const { return *uuid_; } inline void Service::set_uuid(const ::std::string& value) { - _set_bit(1); - if (uuid_ == &_default_uuid_) { + set_has_uuid(); + if (uuid_ == &::google::protobuf::internal::kEmptyString) { uuid_ = new ::std::string; } uuid_->assign(value); } inline void Service::set_uuid(const char* value) { - _set_bit(1); - if (uuid_ == &_default_uuid_) { + set_has_uuid(); + if (uuid_ == &::google::protobuf::internal::kEmptyString) { uuid_ = new ::std::string; } uuid_->assign(value); } inline void Service::set_uuid(const char* value, size_t size) { - _set_bit(1); - if (uuid_ == &_default_uuid_) { + set_has_uuid(); + if (uuid_ == &::google::protobuf::internal::kEmptyString) { uuid_ = new ::std::string; } uuid_->assign(reinterpret_cast(value), size); } inline ::std::string* Service::mutable_uuid() { - _set_bit(1); - if (uuid_ == &_default_uuid_) { + set_has_uuid(); + if (uuid_ == &::google::protobuf::internal::kEmptyString) { uuid_ = new ::std::string; } return uuid_; } +inline ::std::string* Service::release_uuid() { + clear_has_uuid(); + if (uuid_ == &::google::protobuf::internal::kEmptyString) { + return NULL; + } else { + ::std::string* temp = uuid_; + uuid_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + return temp; + } +} +inline void Service::set_allocated_uuid(::std::string* uuid) { + if (uuid_ != &::google::protobuf::internal::kEmptyString) { + delete uuid_; + } + if (uuid) { + set_has_uuid(); + uuid_ = uuid; + } else { + clear_has_uuid(); + uuid_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + } +} // required fixed64 version = 3; inline bool Service::has_version() const { - return _has_bit(2); + return (_has_bits_[0] & 0x00000004u) != 0; +} +inline void Service::set_has_version() { + _has_bits_[0] |= 0x00000004u; +} +inline void Service::clear_has_version() { + _has_bits_[0] &= ~0x00000004u; } inline void Service::clear_version() { version_ = GOOGLE_ULONGLONG(0); - _clear_bit(2); + clear_has_version(); } inline ::google::protobuf::uint64 Service::version() const { return version_; } inline void Service::set_version(::google::protobuf::uint64 value) { - _set_bit(2); + set_has_version(); version_ = value; } // required string name = 4; inline bool Service::has_name() const { - return _has_bit(3); + return (_has_bits_[0] & 0x00000008u) != 0; +} +inline void Service::set_has_name() { + _has_bits_[0] |= 0x00000008u; +} +inline void Service::clear_has_name() { + _has_bits_[0] &= ~0x00000008u; } inline void Service::clear_name() { - if (name_ != &_default_name_) { + if (name_ != &::google::protobuf::internal::kEmptyString) { name_->clear(); } - _clear_bit(3); + clear_has_name(); } inline const ::std::string& Service::name() const { return *name_; } inline void Service::set_name(const ::std::string& value) { - _set_bit(3); - if (name_ == &_default_name_) { + set_has_name(); + if (name_ == &::google::protobuf::internal::kEmptyString) { name_ = new ::std::string; } name_->assign(value); } inline void Service::set_name(const char* value) { - _set_bit(3); - if (name_ == &_default_name_) { + set_has_name(); + if (name_ == &::google::protobuf::internal::kEmptyString) { name_ = new ::std::string; } name_->assign(value); } inline void Service::set_name(const char* value, size_t size) { - _set_bit(3); - if (name_ == &_default_name_) { + set_has_name(); + if (name_ == &::google::protobuf::internal::kEmptyString) { name_ = new ::std::string; } name_->assign(reinterpret_cast(value), size); } inline ::std::string* Service::mutable_name() { - _set_bit(3); - if (name_ == &_default_name_) { + set_has_name(); + if (name_ == &::google::protobuf::internal::kEmptyString) { name_ = new ::std::string; } return name_; } +inline ::std::string* Service::release_name() { + clear_has_name(); + if (name_ == &::google::protobuf::internal::kEmptyString) { + return NULL; + } else { + ::std::string* temp = name_; + name_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + return temp; + } +} +inline void Service::set_allocated_name(::std::string* name) { + if (name_ != &::google::protobuf::internal::kEmptyString) { + delete name_; + } + if (name) { + set_has_name(); + name_ = name; + } else { + clear_has_name(); + name_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + } +} // required fixed64 last_updated_s = 5; inline bool Service::has_last_updated_s() const { - return _has_bit(4); + return (_has_bits_[0] & 0x00000010u) != 0; +} +inline void Service::set_has_last_updated_s() { + _has_bits_[0] |= 0x00000010u; +} +inline void Service::clear_has_last_updated_s() { + _has_bits_[0] &= ~0x00000010u; } inline void Service::clear_last_updated_s() { last_updated_s_ = GOOGLE_ULONGLONG(0); - _clear_bit(4); + clear_has_last_updated_s(); } inline ::google::protobuf::uint64 Service::last_updated_s() const { return last_updated_s_; } inline void Service::set_last_updated_s(::google::protobuf::uint64 value) { - _set_bit(4); + set_has_last_updated_s(); last_updated_s_ = value; } // required .xtreemfs.pbrpc.ServiceDataMap data = 6; inline bool Service::has_data() const { - return _has_bit(5); + return (_has_bits_[0] & 0x00000020u) != 0; +} +inline void Service::set_has_data() { + _has_bits_[0] |= 0x00000020u; +} +inline void Service::clear_has_data() { + _has_bits_[0] &= ~0x00000020u; } inline void Service::clear_data() { if (data_ != NULL) data_->::xtreemfs::pbrpc::ServiceDataMap::Clear(); - _clear_bit(5); + clear_has_data(); } inline const ::xtreemfs::pbrpc::ServiceDataMap& Service::data() const { return data_ != NULL ? *data_ : *default_instance_->data_; } inline ::xtreemfs::pbrpc::ServiceDataMap* Service::mutable_data() { - _set_bit(5); + set_has_data(); if (data_ == NULL) data_ = new ::xtreemfs::pbrpc::ServiceDataMap; return data_; } +inline ::xtreemfs::pbrpc::ServiceDataMap* Service::release_data() { + clear_has_data(); + ::xtreemfs::pbrpc::ServiceDataMap* temp = data_; + data_ = NULL; + return temp; +} +inline void Service::set_allocated_data(::xtreemfs::pbrpc::ServiceDataMap* data) { + delete data_; + data_ = data; + if (data) { + set_has_data(); + } else { + clear_has_data(); + } +} // ------------------------------------------------------------------- @@ -2817,45 +2874,73 @@ ServiceSet::mutable_services() { // required string uuid = 1; inline bool Configuration::has_uuid() const { - return _has_bit(0); + return (_has_bits_[0] & 0x00000001u) != 0; +} +inline void Configuration::set_has_uuid() { + _has_bits_[0] |= 0x00000001u; +} +inline void Configuration::clear_has_uuid() { + _has_bits_[0] &= ~0x00000001u; } inline void Configuration::clear_uuid() { - if (uuid_ != &_default_uuid_) { + if (uuid_ != &::google::protobuf::internal::kEmptyString) { uuid_->clear(); } - _clear_bit(0); + clear_has_uuid(); } inline const ::std::string& Configuration::uuid() const { return *uuid_; } inline void Configuration::set_uuid(const ::std::string& value) { - _set_bit(0); - if (uuid_ == &_default_uuid_) { + set_has_uuid(); + if (uuid_ == &::google::protobuf::internal::kEmptyString) { uuid_ = new ::std::string; } uuid_->assign(value); } inline void Configuration::set_uuid(const char* value) { - _set_bit(0); - if (uuid_ == &_default_uuid_) { + set_has_uuid(); + if (uuid_ == &::google::protobuf::internal::kEmptyString) { uuid_ = new ::std::string; } uuid_->assign(value); } inline void Configuration::set_uuid(const char* value, size_t size) { - _set_bit(0); - if (uuid_ == &_default_uuid_) { + set_has_uuid(); + if (uuid_ == &::google::protobuf::internal::kEmptyString) { uuid_ = new ::std::string; } uuid_->assign(reinterpret_cast(value), size); } inline ::std::string* Configuration::mutable_uuid() { - _set_bit(0); - if (uuid_ == &_default_uuid_) { + set_has_uuid(); + if (uuid_ == &::google::protobuf::internal::kEmptyString) { uuid_ = new ::std::string; } return uuid_; } +inline ::std::string* Configuration::release_uuid() { + clear_has_uuid(); + if (uuid_ == &::google::protobuf::internal::kEmptyString) { + return NULL; + } else { + ::std::string* temp = uuid_; + uuid_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + return temp; + } +} +inline void Configuration::set_allocated_uuid(::std::string* uuid) { + if (uuid_ != &::google::protobuf::internal::kEmptyString) { + delete uuid_; + } + if (uuid) { + set_has_uuid(); + uuid_ = uuid; + } else { + clear_has_uuid(); + uuid_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + } +} // repeated .xtreemfs.pbrpc.KeyValuePair parameter = 2; inline int Configuration::parameter_size() const { @@ -2884,17 +2969,23 @@ Configuration::mutable_parameter() { // required fixed64 version = 3; inline bool Configuration::has_version() const { - return _has_bit(2); + return (_has_bits_[0] & 0x00000004u) != 0; +} +inline void Configuration::set_has_version() { + _has_bits_[0] |= 0x00000004u; +} +inline void Configuration::clear_has_version() { + _has_bits_[0] &= ~0x00000004u; } inline void Configuration::clear_version() { version_ = GOOGLE_ULONGLONG(0); - _clear_bit(2); + clear_has_version(); } inline ::google::protobuf::uint64 Configuration::version() const { return version_; } inline void Configuration::set_version(::google::protobuf::uint64 value) { - _set_bit(2); + set_has_version(); version_ = value; } @@ -2904,45 +2995,73 @@ inline void Configuration::set_version(::google::protobuf::uint64 value) { // required string uuid = 1; inline bool addressMappingGetRequest::has_uuid() const { - return _has_bit(0); + return (_has_bits_[0] & 0x00000001u) != 0; +} +inline void addressMappingGetRequest::set_has_uuid() { + _has_bits_[0] |= 0x00000001u; +} +inline void addressMappingGetRequest::clear_has_uuid() { + _has_bits_[0] &= ~0x00000001u; } inline void addressMappingGetRequest::clear_uuid() { - if (uuid_ != &_default_uuid_) { + if (uuid_ != &::google::protobuf::internal::kEmptyString) { uuid_->clear(); } - _clear_bit(0); + clear_has_uuid(); } inline const ::std::string& addressMappingGetRequest::uuid() const { return *uuid_; } inline void addressMappingGetRequest::set_uuid(const ::std::string& value) { - _set_bit(0); - if (uuid_ == &_default_uuid_) { + set_has_uuid(); + if (uuid_ == &::google::protobuf::internal::kEmptyString) { uuid_ = new ::std::string; } uuid_->assign(value); } inline void addressMappingGetRequest::set_uuid(const char* value) { - _set_bit(0); - if (uuid_ == &_default_uuid_) { + set_has_uuid(); + if (uuid_ == &::google::protobuf::internal::kEmptyString) { uuid_ = new ::std::string; } uuid_->assign(value); } inline void addressMappingGetRequest::set_uuid(const char* value, size_t size) { - _set_bit(0); - if (uuid_ == &_default_uuid_) { + set_has_uuid(); + if (uuid_ == &::google::protobuf::internal::kEmptyString) { uuid_ = new ::std::string; } uuid_->assign(reinterpret_cast(value), size); } inline ::std::string* addressMappingGetRequest::mutable_uuid() { - _set_bit(0); - if (uuid_ == &_default_uuid_) { + set_has_uuid(); + if (uuid_ == &::google::protobuf::internal::kEmptyString) { uuid_ = new ::std::string; } return uuid_; } +inline ::std::string* addressMappingGetRequest::release_uuid() { + clear_has_uuid(); + if (uuid_ == &::google::protobuf::internal::kEmptyString) { + return NULL; + } else { + ::std::string* temp = uuid_; + uuid_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + return temp; + } +} +inline void addressMappingGetRequest::set_allocated_uuid(::std::string* uuid) { + if (uuid_ != &::google::protobuf::internal::kEmptyString) { + delete uuid_; + } + if (uuid) { + set_has_uuid(); + uuid_ = uuid; + } else { + clear_has_uuid(); + uuid_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + } +} // ------------------------------------------------------------------- @@ -2950,20 +3069,41 @@ inline ::std::string* addressMappingGetRequest::mutable_uuid() { // optional .xtreemfs.pbrpc.AddressMappingSet result = 1; inline bool addressMappingGetResponse::has_result() const { - return _has_bit(0); + return (_has_bits_[0] & 0x00000001u) != 0; +} +inline void addressMappingGetResponse::set_has_result() { + _has_bits_[0] |= 0x00000001u; +} +inline void addressMappingGetResponse::clear_has_result() { + _has_bits_[0] &= ~0x00000001u; } inline void addressMappingGetResponse::clear_result() { if (result_ != NULL) result_->::xtreemfs::pbrpc::AddressMappingSet::Clear(); - _clear_bit(0); + clear_has_result(); } inline const ::xtreemfs::pbrpc::AddressMappingSet& addressMappingGetResponse::result() const { return result_ != NULL ? *result_ : *default_instance_->result_; } inline ::xtreemfs::pbrpc::AddressMappingSet* addressMappingGetResponse::mutable_result() { - _set_bit(0); + set_has_result(); if (result_ == NULL) result_ = new ::xtreemfs::pbrpc::AddressMappingSet; return result_; } +inline ::xtreemfs::pbrpc::AddressMappingSet* addressMappingGetResponse::release_result() { + clear_has_result(); + ::xtreemfs::pbrpc::AddressMappingSet* temp = result_; + result_ = NULL; + return temp; +} +inline void addressMappingGetResponse::set_allocated_result(::xtreemfs::pbrpc::AddressMappingSet* result) { + delete result_; + result_ = result; + if (result) { + set_has_result(); + } else { + clear_has_result(); + } +} // ------------------------------------------------------------------- @@ -2971,17 +3111,23 @@ inline ::xtreemfs::pbrpc::AddressMappingSet* addressMappingGetResponse::mutable_ // optional fixed64 new_version = 1; inline bool addressMappingSetResponse::has_new_version() const { - return _has_bit(0); + return (_has_bits_[0] & 0x00000001u) != 0; +} +inline void addressMappingSetResponse::set_has_new_version() { + _has_bits_[0] |= 0x00000001u; +} +inline void addressMappingSetResponse::clear_has_new_version() { + _has_bits_[0] &= ~0x00000001u; } inline void addressMappingSetResponse::clear_new_version() { new_version_ = GOOGLE_ULONGLONG(0); - _clear_bit(0); + clear_has_new_version(); } inline ::google::protobuf::uint64 addressMappingSetResponse::new_version() const { return new_version_; } inline void addressMappingSetResponse::set_new_version(::google::protobuf::uint64 value) { - _set_bit(0); + set_has_new_version(); new_version_ = value; } @@ -2991,17 +3137,23 @@ inline void addressMappingSetResponse::set_new_version(::google::protobuf::uint6 // required fixed64 time_in_seconds = 1; inline bool globalTimeSGetResponse::has_time_in_seconds() const { - return _has_bit(0); + return (_has_bits_[0] & 0x00000001u) != 0; +} +inline void globalTimeSGetResponse::set_has_time_in_seconds() { + _has_bits_[0] |= 0x00000001u; +} +inline void globalTimeSGetResponse::clear_has_time_in_seconds() { + _has_bits_[0] &= ~0x00000001u; } inline void globalTimeSGetResponse::clear_time_in_seconds() { time_in_seconds_ = GOOGLE_ULONGLONG(0); - _clear_bit(0); + clear_has_time_in_seconds(); } inline ::google::protobuf::uint64 globalTimeSGetResponse::time_in_seconds() const { return time_in_seconds_; } inline void globalTimeSGetResponse::set_time_in_seconds(::google::protobuf::uint64 value) { - _set_bit(0); + set_has_time_in_seconds(); time_in_seconds_ = value; } @@ -3011,45 +3163,73 @@ inline void globalTimeSGetResponse::set_time_in_seconds(::google::protobuf::uint // required string uuid = 1; inline bool serviceDeregisterRequest::has_uuid() const { - return _has_bit(0); + return (_has_bits_[0] & 0x00000001u) != 0; +} +inline void serviceDeregisterRequest::set_has_uuid() { + _has_bits_[0] |= 0x00000001u; +} +inline void serviceDeregisterRequest::clear_has_uuid() { + _has_bits_[0] &= ~0x00000001u; } inline void serviceDeregisterRequest::clear_uuid() { - if (uuid_ != &_default_uuid_) { + if (uuid_ != &::google::protobuf::internal::kEmptyString) { uuid_->clear(); } - _clear_bit(0); + clear_has_uuid(); } inline const ::std::string& serviceDeregisterRequest::uuid() const { return *uuid_; } inline void serviceDeregisterRequest::set_uuid(const ::std::string& value) { - _set_bit(0); - if (uuid_ == &_default_uuid_) { + set_has_uuid(); + if (uuid_ == &::google::protobuf::internal::kEmptyString) { uuid_ = new ::std::string; } uuid_->assign(value); } inline void serviceDeregisterRequest::set_uuid(const char* value) { - _set_bit(0); - if (uuid_ == &_default_uuid_) { + set_has_uuid(); + if (uuid_ == &::google::protobuf::internal::kEmptyString) { uuid_ = new ::std::string; } uuid_->assign(value); } inline void serviceDeregisterRequest::set_uuid(const char* value, size_t size) { - _set_bit(0); - if (uuid_ == &_default_uuid_) { + set_has_uuid(); + if (uuid_ == &::google::protobuf::internal::kEmptyString) { uuid_ = new ::std::string; } uuid_->assign(reinterpret_cast(value), size); } inline ::std::string* serviceDeregisterRequest::mutable_uuid() { - _set_bit(0); - if (uuid_ == &_default_uuid_) { + set_has_uuid(); + if (uuid_ == &::google::protobuf::internal::kEmptyString) { uuid_ = new ::std::string; } return uuid_; } +inline ::std::string* serviceDeregisterRequest::release_uuid() { + clear_has_uuid(); + if (uuid_ == &::google::protobuf::internal::kEmptyString) { + return NULL; + } else { + ::std::string* temp = uuid_; + uuid_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + return temp; + } +} +inline void serviceDeregisterRequest::set_allocated_uuid(::std::string* uuid) { + if (uuid_ != &::google::protobuf::internal::kEmptyString) { + delete uuid_; + } + if (uuid) { + set_has_uuid(); + uuid_ = uuid; + } else { + clear_has_uuid(); + uuid_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + } +} // ------------------------------------------------------------------- @@ -3057,45 +3237,73 @@ inline ::std::string* serviceDeregisterRequest::mutable_uuid() { // required string name = 1; inline bool serviceGetByNameRequest::has_name() const { - return _has_bit(0); + return (_has_bits_[0] & 0x00000001u) != 0; +} +inline void serviceGetByNameRequest::set_has_name() { + _has_bits_[0] |= 0x00000001u; +} +inline void serviceGetByNameRequest::clear_has_name() { + _has_bits_[0] &= ~0x00000001u; } inline void serviceGetByNameRequest::clear_name() { - if (name_ != &_default_name_) { + if (name_ != &::google::protobuf::internal::kEmptyString) { name_->clear(); } - _clear_bit(0); + clear_has_name(); } inline const ::std::string& serviceGetByNameRequest::name() const { return *name_; } inline void serviceGetByNameRequest::set_name(const ::std::string& value) { - _set_bit(0); - if (name_ == &_default_name_) { + set_has_name(); + if (name_ == &::google::protobuf::internal::kEmptyString) { name_ = new ::std::string; } name_->assign(value); } inline void serviceGetByNameRequest::set_name(const char* value) { - _set_bit(0); - if (name_ == &_default_name_) { + set_has_name(); + if (name_ == &::google::protobuf::internal::kEmptyString) { name_ = new ::std::string; } name_->assign(value); } inline void serviceGetByNameRequest::set_name(const char* value, size_t size) { - _set_bit(0); - if (name_ == &_default_name_) { + set_has_name(); + if (name_ == &::google::protobuf::internal::kEmptyString) { name_ = new ::std::string; } name_->assign(reinterpret_cast(value), size); } inline ::std::string* serviceGetByNameRequest::mutable_name() { - _set_bit(0); - if (name_ == &_default_name_) { + set_has_name(); + if (name_ == &::google::protobuf::internal::kEmptyString) { name_ = new ::std::string; } return name_; } +inline ::std::string* serviceGetByNameRequest::release_name() { + clear_has_name(); + if (name_ == &::google::protobuf::internal::kEmptyString) { + return NULL; + } else { + ::std::string* temp = name_; + name_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + return temp; + } +} +inline void serviceGetByNameRequest::set_allocated_name(::std::string* name) { + if (name_ != &::google::protobuf::internal::kEmptyString) { + delete name_; + } + if (name) { + set_has_name(); + name_ = name; + } else { + clear_has_name(); + name_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + } +} // ------------------------------------------------------------------- @@ -3103,45 +3311,73 @@ inline ::std::string* serviceGetByNameRequest::mutable_name() { // required string name = 1; inline bool serviceGetByUUIDRequest::has_name() const { - return _has_bit(0); + return (_has_bits_[0] & 0x00000001u) != 0; +} +inline void serviceGetByUUIDRequest::set_has_name() { + _has_bits_[0] |= 0x00000001u; +} +inline void serviceGetByUUIDRequest::clear_has_name() { + _has_bits_[0] &= ~0x00000001u; } inline void serviceGetByUUIDRequest::clear_name() { - if (name_ != &_default_name_) { + if (name_ != &::google::protobuf::internal::kEmptyString) { name_->clear(); } - _clear_bit(0); + clear_has_name(); } inline const ::std::string& serviceGetByUUIDRequest::name() const { return *name_; } inline void serviceGetByUUIDRequest::set_name(const ::std::string& value) { - _set_bit(0); - if (name_ == &_default_name_) { + set_has_name(); + if (name_ == &::google::protobuf::internal::kEmptyString) { name_ = new ::std::string; } name_->assign(value); } inline void serviceGetByUUIDRequest::set_name(const char* value) { - _set_bit(0); - if (name_ == &_default_name_) { + set_has_name(); + if (name_ == &::google::protobuf::internal::kEmptyString) { name_ = new ::std::string; } name_->assign(value); } inline void serviceGetByUUIDRequest::set_name(const char* value, size_t size) { - _set_bit(0); - if (name_ == &_default_name_) { + set_has_name(); + if (name_ == &::google::protobuf::internal::kEmptyString) { name_ = new ::std::string; } name_->assign(reinterpret_cast(value), size); } inline ::std::string* serviceGetByUUIDRequest::mutable_name() { - _set_bit(0); - if (name_ == &_default_name_) { + set_has_name(); + if (name_ == &::google::protobuf::internal::kEmptyString) { name_ = new ::std::string; } return name_; } +inline ::std::string* serviceGetByUUIDRequest::release_name() { + clear_has_name(); + if (name_ == &::google::protobuf::internal::kEmptyString) { + return NULL; + } else { + ::std::string* temp = name_; + name_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + return temp; + } +} +inline void serviceGetByUUIDRequest::set_allocated_name(::std::string* name) { + if (name_ != &::google::protobuf::internal::kEmptyString) { + delete name_; + } + if (name) { + set_has_name(); + name_ = name; + } else { + clear_has_name(); + name_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + } +} // ------------------------------------------------------------------- @@ -3149,18 +3385,24 @@ inline ::std::string* serviceGetByUUIDRequest::mutable_name() { // required .xtreemfs.pbrpc.ServiceType type = 1; inline bool serviceGetByTypeRequest::has_type() const { - return _has_bit(0); + return (_has_bits_[0] & 0x00000001u) != 0; +} +inline void serviceGetByTypeRequest::set_has_type() { + _has_bits_[0] |= 0x00000001u; +} +inline void serviceGetByTypeRequest::clear_has_type() { + _has_bits_[0] &= ~0x00000001u; } inline void serviceGetByTypeRequest::clear_type() { type_ = 0; - _clear_bit(0); + clear_has_type(); } -inline xtreemfs::pbrpc::ServiceType serviceGetByTypeRequest::type() const { - return static_cast< xtreemfs::pbrpc::ServiceType >(type_); +inline ::xtreemfs::pbrpc::ServiceType serviceGetByTypeRequest::type() const { + return static_cast< ::xtreemfs::pbrpc::ServiceType >(type_); } -inline void serviceGetByTypeRequest::set_type(xtreemfs::pbrpc::ServiceType value) { - GOOGLE_DCHECK(xtreemfs::pbrpc::ServiceType_IsValid(value)); - _set_bit(0); +inline void serviceGetByTypeRequest::set_type(::xtreemfs::pbrpc::ServiceType value) { + assert(::xtreemfs::pbrpc::ServiceType_IsValid(value)); + set_has_type(); type_ = value; } @@ -3170,20 +3412,41 @@ inline void serviceGetByTypeRequest::set_type(xtreemfs::pbrpc::ServiceType value // required .xtreemfs.pbrpc.Service service = 1; inline bool serviceRegisterRequest::has_service() const { - return _has_bit(0); + return (_has_bits_[0] & 0x00000001u) != 0; +} +inline void serviceRegisterRequest::set_has_service() { + _has_bits_[0] |= 0x00000001u; +} +inline void serviceRegisterRequest::clear_has_service() { + _has_bits_[0] &= ~0x00000001u; } inline void serviceRegisterRequest::clear_service() { if (service_ != NULL) service_->::xtreemfs::pbrpc::Service::Clear(); - _clear_bit(0); + clear_has_service(); } inline const ::xtreemfs::pbrpc::Service& serviceRegisterRequest::service() const { return service_ != NULL ? *service_ : *default_instance_->service_; } inline ::xtreemfs::pbrpc::Service* serviceRegisterRequest::mutable_service() { - _set_bit(0); + set_has_service(); if (service_ == NULL) service_ = new ::xtreemfs::pbrpc::Service; return service_; } +inline ::xtreemfs::pbrpc::Service* serviceRegisterRequest::release_service() { + clear_has_service(); + ::xtreemfs::pbrpc::Service* temp = service_; + service_ = NULL; + return temp; +} +inline void serviceRegisterRequest::set_allocated_service(::xtreemfs::pbrpc::Service* service) { + delete service_; + service_ = service; + if (service) { + set_has_service(); + } else { + clear_has_service(); + } +} // ------------------------------------------------------------------- @@ -3191,17 +3454,23 @@ inline ::xtreemfs::pbrpc::Service* serviceRegisterRequest::mutable_service() { // required fixed64 new_version = 1; inline bool serviceRegisterResponse::has_new_version() const { - return _has_bit(0); + return (_has_bits_[0] & 0x00000001u) != 0; +} +inline void serviceRegisterResponse::set_has_new_version() { + _has_bits_[0] |= 0x00000001u; +} +inline void serviceRegisterResponse::clear_has_new_version() { + _has_bits_[0] &= ~0x00000001u; } inline void serviceRegisterResponse::clear_new_version() { new_version_ = GOOGLE_ULONGLONG(0); - _clear_bit(0); + clear_has_new_version(); } inline ::google::protobuf::uint64 serviceRegisterResponse::new_version() const { return new_version_; } inline void serviceRegisterResponse::set_new_version(::google::protobuf::uint64 value) { - _set_bit(0); + set_has_new_version(); new_version_ = value; } @@ -3211,45 +3480,73 @@ inline void serviceRegisterResponse::set_new_version(::google::protobuf::uint64 // required string uuid = 1; inline bool configurationGetRequest::has_uuid() const { - return _has_bit(0); + return (_has_bits_[0] & 0x00000001u) != 0; +} +inline void configurationGetRequest::set_has_uuid() { + _has_bits_[0] |= 0x00000001u; +} +inline void configurationGetRequest::clear_has_uuid() { + _has_bits_[0] &= ~0x00000001u; } inline void configurationGetRequest::clear_uuid() { - if (uuid_ != &_default_uuid_) { + if (uuid_ != &::google::protobuf::internal::kEmptyString) { uuid_->clear(); } - _clear_bit(0); + clear_has_uuid(); } inline const ::std::string& configurationGetRequest::uuid() const { return *uuid_; } inline void configurationGetRequest::set_uuid(const ::std::string& value) { - _set_bit(0); - if (uuid_ == &_default_uuid_) { + set_has_uuid(); + if (uuid_ == &::google::protobuf::internal::kEmptyString) { uuid_ = new ::std::string; } uuid_->assign(value); } inline void configurationGetRequest::set_uuid(const char* value) { - _set_bit(0); - if (uuid_ == &_default_uuid_) { + set_has_uuid(); + if (uuid_ == &::google::protobuf::internal::kEmptyString) { uuid_ = new ::std::string; } uuid_->assign(value); } inline void configurationGetRequest::set_uuid(const char* value, size_t size) { - _set_bit(0); - if (uuid_ == &_default_uuid_) { + set_has_uuid(); + if (uuid_ == &::google::protobuf::internal::kEmptyString) { uuid_ = new ::std::string; } uuid_->assign(reinterpret_cast(value), size); } inline ::std::string* configurationGetRequest::mutable_uuid() { - _set_bit(0); - if (uuid_ == &_default_uuid_) { + set_has_uuid(); + if (uuid_ == &::google::protobuf::internal::kEmptyString) { uuid_ = new ::std::string; } return uuid_; } +inline ::std::string* configurationGetRequest::release_uuid() { + clear_has_uuid(); + if (uuid_ == &::google::protobuf::internal::kEmptyString) { + return NULL; + } else { + ::std::string* temp = uuid_; + uuid_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + return temp; + } +} +inline void configurationGetRequest::set_allocated_uuid(::std::string* uuid) { + if (uuid_ != &::google::protobuf::internal::kEmptyString) { + delete uuid_; + } + if (uuid) { + set_has_uuid(); + uuid_ = uuid; + } else { + clear_has_uuid(); + uuid_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + } +} // ------------------------------------------------------------------- @@ -3257,17 +3554,23 @@ inline ::std::string* configurationGetRequest::mutable_uuid() { // optional fixed64 new_version = 1; inline bool configurationSetResponse::has_new_version() const { - return _has_bit(0); + return (_has_bits_[0] & 0x00000001u) != 0; +} +inline void configurationSetResponse::set_has_new_version() { + _has_bits_[0] |= 0x00000001u; +} +inline void configurationSetResponse::clear_has_new_version() { + _has_bits_[0] &= ~0x00000001u; } inline void configurationSetResponse::clear_new_version() { new_version_ = GOOGLE_ULONGLONG(0); - _clear_bit(0); + clear_has_new_version(); } inline ::google::protobuf::uint64 configurationSetResponse::new_version() const { return new_version_; } inline void configurationSetResponse::set_new_version(::google::protobuf::uint64 value) { - _set_bit(0); + set_has_new_version(); new_version_ = value; } @@ -3282,12 +3585,12 @@ namespace google { namespace protobuf { template <> -inline const EnumDescriptor* GetEnumDescriptor< xtreemfs::pbrpc::ServiceType>() { - return xtreemfs::pbrpc::ServiceType_descriptor(); +inline const EnumDescriptor* GetEnumDescriptor< ::xtreemfs::pbrpc::ServiceType>() { + return ::xtreemfs::pbrpc::ServiceType_descriptor(); } template <> -inline const EnumDescriptor* GetEnumDescriptor< xtreemfs::pbrpc::ServiceStatus>() { - return xtreemfs::pbrpc::ServiceStatus_descriptor(); +inline const EnumDescriptor* GetEnumDescriptor< ::xtreemfs::pbrpc::ServiceStatus>() { + return ::xtreemfs::pbrpc::ServiceStatus_descriptor(); } } // namespace google diff --git a/cpp/generated/xtreemfs/DIRServiceClient.h b/cpp/generated/xtreemfs/DIRServiceClient.h index d5cad4a91..9593e46ad 100644 --- a/cpp/generated/xtreemfs/DIRServiceClient.h +++ b/cpp/generated/xtreemfs/DIRServiceClient.h @@ -1,4 +1,4 @@ -//automatically generated from DIR.proto at Wed Aug 28 12:26:19 CEST 2013 +//automatically generated from DIR.proto at Mon Nov 11 11:46:59 CET 2013 //(c) 2013. See LICENSE file for details. #ifndef DIRSERVICECLIENT_H diff --git a/cpp/generated/xtreemfs/DIRServiceConstants.h b/cpp/generated/xtreemfs/DIRServiceConstants.h index 97bd3afc7..010132f1e 100644 --- a/cpp/generated/xtreemfs/DIRServiceConstants.h +++ b/cpp/generated/xtreemfs/DIRServiceConstants.h @@ -1,4 +1,4 @@ -//automatically generated from DIR.proto at Thu Mar 21 17:09:46 CET 2013 +//automatically generated from DIR.proto at Mon Nov 11 11:46:59 CET 2013 //(c) 2013. See LICENSE file for details. #ifndef DIRSERVICECONSTANTS_H_ diff --git a/cpp/generated/xtreemfs/GlobalTypes.pb.cc b/cpp/generated/xtreemfs/GlobalTypes.pb.cc index 0fad08f99..43eb62aea 100644 --- a/cpp/generated/xtreemfs/GlobalTypes.pb.cc +++ b/cpp/generated/xtreemfs/GlobalTypes.pb.cc @@ -1,11 +1,17 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! +// source: xtreemfs/GlobalTypes.proto #define INTERNAL_SUPPRESS_PROTOBUF_FIELD_DEPRECATION #include "xtreemfs/GlobalTypes.pb.h" + +#include + +#include #include #include #include #include +#include #include #include // @@protoc_insertion_point(includes) @@ -444,7 +450,6 @@ struct StaticDescriptorInitializer_xtreemfs_2fGlobalTypes_2eproto { protobuf_AddDesc_xtreemfs_2fGlobalTypes_2eproto(); } } static_descriptor_initializer_xtreemfs_2fGlobalTypes_2eproto_; - const ::google::protobuf::EnumDescriptor* AccessControlPolicyType_descriptor() { protobuf_AssignDescriptorsOnce(); return AccessControlPolicyType_descriptor_; @@ -661,7 +666,8 @@ const ::google::protobuf::Descriptor* NewFileSize::descriptor() { } const NewFileSize& NewFileSize::default_instance() { - if (default_instance_ == NULL) protobuf_AddDesc_xtreemfs_2fGlobalTypes_2eproto(); return *default_instance_; + if (default_instance_ == NULL) protobuf_AddDesc_xtreemfs_2fGlobalTypes_2eproto(); + return *default_instance_; } NewFileSize* NewFileSize::default_instance_ = NULL; @@ -692,14 +698,14 @@ bool NewFileSize::MergePartialFromCodedStream( DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive< ::google::protobuf::uint64, ::google::protobuf::internal::WireFormatLite::TYPE_FIXED64>( input, &size_in_bytes_))); - _set_bit(0); + set_has_size_in_bytes(); } else { goto handle_uninterpreted; } if (input->ExpectTag(21)) goto parse_truncate_epoch; break; } - + // required fixed32 truncate_epoch = 2; case 2: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -708,14 +714,14 @@ bool NewFileSize::MergePartialFromCodedStream( DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive< ::google::protobuf::uint32, ::google::protobuf::internal::WireFormatLite::TYPE_FIXED32>( input, &truncate_epoch_))); - _set_bit(1); + set_has_truncate_epoch(); } else { goto handle_uninterpreted; } if (input->ExpectAtEnd()) return true; break; } - + default: { handle_uninterpreted: if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -735,15 +741,15 @@ bool NewFileSize::MergePartialFromCodedStream( void NewFileSize::SerializeWithCachedSizes( ::google::protobuf::io::CodedOutputStream* output) const { // required fixed64 size_in_bytes = 1; - if (_has_bit(0)) { + if (has_size_in_bytes()) { ::google::protobuf::internal::WireFormatLite::WriteFixed64(1, this->size_in_bytes(), output); } - + // required fixed32 truncate_epoch = 2; - if (_has_bit(1)) { + if (has_truncate_epoch()) { ::google::protobuf::internal::WireFormatLite::WriteFixed32(2, this->truncate_epoch(), output); } - + if (!unknown_fields().empty()) { ::google::protobuf::internal::WireFormat::SerializeUnknownFields( unknown_fields(), output); @@ -753,15 +759,15 @@ void NewFileSize::SerializeWithCachedSizes( ::google::protobuf::uint8* NewFileSize::SerializeWithCachedSizesToArray( ::google::protobuf::uint8* target) const { // required fixed64 size_in_bytes = 1; - if (_has_bit(0)) { + if (has_size_in_bytes()) { target = ::google::protobuf::internal::WireFormatLite::WriteFixed64ToArray(1, this->size_in_bytes(), target); } - + // required fixed32 truncate_epoch = 2; - if (_has_bit(1)) { + if (has_truncate_epoch()) { target = ::google::protobuf::internal::WireFormatLite::WriteFixed32ToArray(2, this->truncate_epoch(), target); } - + if (!unknown_fields().empty()) { target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray( unknown_fields(), target); @@ -771,18 +777,18 @@ void NewFileSize::SerializeWithCachedSizes( int NewFileSize::ByteSize() const { int total_size = 0; - + if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) { // required fixed64 size_in_bytes = 1; if (has_size_in_bytes()) { total_size += 1 + 8; } - + // required fixed32 truncate_epoch = 2; if (has_truncate_epoch()) { total_size += 1 + 4; } - + } if (!unknown_fields().empty()) { total_size += @@ -810,10 +816,10 @@ void NewFileSize::MergeFrom(const ::google::protobuf::Message& from) { void NewFileSize::MergeFrom(const NewFileSize& from) { GOOGLE_CHECK_NE(&from, this); if (from._has_bits_[0 / 32] & (0xffu << (0 % 32))) { - if (from._has_bit(0)) { + if (from.has_size_in_bytes()) { set_size_in_bytes(from.size_in_bytes()); } - if (from._has_bit(1)) { + if (from.has_truncate_epoch()) { set_truncate_epoch(from.truncate_epoch()); } } @@ -834,7 +840,7 @@ void NewFileSize::CopyFrom(const NewFileSize& from) { bool NewFileSize::IsInitialized() const { if ((_has_bits_[0] & 0x00000003) != 0x00000003) return false; - + return true; } @@ -907,7 +913,8 @@ const ::google::protobuf::Descriptor* StripingPolicy::descriptor() { } const StripingPolicy& StripingPolicy::default_instance() { - if (default_instance_ == NULL) protobuf_AddDesc_xtreemfs_2fGlobalTypes_2eproto(); return *default_instance_; + if (default_instance_ == NULL) protobuf_AddDesc_xtreemfs_2fGlobalTypes_2eproto(); + return *default_instance_; } StripingPolicy* StripingPolicy::default_instance_ = NULL; @@ -940,8 +947,8 @@ bool StripingPolicy::MergePartialFromCodedStream( DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive< int, ::google::protobuf::internal::WireFormatLite::TYPE_ENUM>( input, &value))); - if (xtreemfs::pbrpc::StripingPolicyType_IsValid(value)) { - set_type(static_cast< xtreemfs::pbrpc::StripingPolicyType >(value)); + if (::xtreemfs::pbrpc::StripingPolicyType_IsValid(value)) { + set_type(static_cast< ::xtreemfs::pbrpc::StripingPolicyType >(value)); } else { mutable_unknown_fields()->AddVarint(1, value); } @@ -951,7 +958,7 @@ bool StripingPolicy::MergePartialFromCodedStream( if (input->ExpectTag(21)) goto parse_stripe_size; break; } - + // required fixed32 stripe_size = 2; case 2: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -960,14 +967,14 @@ bool StripingPolicy::MergePartialFromCodedStream( DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive< ::google::protobuf::uint32, ::google::protobuf::internal::WireFormatLite::TYPE_FIXED32>( input, &stripe_size_))); - _set_bit(1); + set_has_stripe_size(); } else { goto handle_uninterpreted; } if (input->ExpectTag(29)) goto parse_width; break; } - + // required fixed32 width = 3; case 3: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -976,14 +983,14 @@ bool StripingPolicy::MergePartialFromCodedStream( DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive< ::google::protobuf::uint32, ::google::protobuf::internal::WireFormatLite::TYPE_FIXED32>( input, &width_))); - _set_bit(2); + set_has_width(); } else { goto handle_uninterpreted; } if (input->ExpectAtEnd()) return true; break; } - + default: { handle_uninterpreted: if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -1003,21 +1010,21 @@ bool StripingPolicy::MergePartialFromCodedStream( void StripingPolicy::SerializeWithCachedSizes( ::google::protobuf::io::CodedOutputStream* output) const { // required .xtreemfs.pbrpc.StripingPolicyType type = 1; - if (_has_bit(0)) { + if (has_type()) { ::google::protobuf::internal::WireFormatLite::WriteEnum( 1, this->type(), output); } - + // required fixed32 stripe_size = 2; - if (_has_bit(1)) { + if (has_stripe_size()) { ::google::protobuf::internal::WireFormatLite::WriteFixed32(2, this->stripe_size(), output); } - + // required fixed32 width = 3; - if (_has_bit(2)) { + if (has_width()) { ::google::protobuf::internal::WireFormatLite::WriteFixed32(3, this->width(), output); } - + if (!unknown_fields().empty()) { ::google::protobuf::internal::WireFormat::SerializeUnknownFields( unknown_fields(), output); @@ -1027,21 +1034,21 @@ void StripingPolicy::SerializeWithCachedSizes( ::google::protobuf::uint8* StripingPolicy::SerializeWithCachedSizesToArray( ::google::protobuf::uint8* target) const { // required .xtreemfs.pbrpc.StripingPolicyType type = 1; - if (_has_bit(0)) { + if (has_type()) { target = ::google::protobuf::internal::WireFormatLite::WriteEnumToArray( 1, this->type(), target); } - + // required fixed32 stripe_size = 2; - if (_has_bit(1)) { + if (has_stripe_size()) { target = ::google::protobuf::internal::WireFormatLite::WriteFixed32ToArray(2, this->stripe_size(), target); } - + // required fixed32 width = 3; - if (_has_bit(2)) { + if (has_width()) { target = ::google::protobuf::internal::WireFormatLite::WriteFixed32ToArray(3, this->width(), target); } - + if (!unknown_fields().empty()) { target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray( unknown_fields(), target); @@ -1051,24 +1058,24 @@ void StripingPolicy::SerializeWithCachedSizes( int StripingPolicy::ByteSize() const { int total_size = 0; - + if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) { // required .xtreemfs.pbrpc.StripingPolicyType type = 1; if (has_type()) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::EnumSize(this->type()); } - + // required fixed32 stripe_size = 2; if (has_stripe_size()) { total_size += 1 + 4; } - + // required fixed32 width = 3; if (has_width()) { total_size += 1 + 4; } - + } if (!unknown_fields().empty()) { total_size += @@ -1096,13 +1103,13 @@ void StripingPolicy::MergeFrom(const ::google::protobuf::Message& from) { void StripingPolicy::MergeFrom(const StripingPolicy& from) { GOOGLE_CHECK_NE(&from, this); if (from._has_bits_[0 / 32] & (0xffu << (0 % 32))) { - if (from._has_bit(0)) { + if (from.has_type()) { set_type(from.type()); } - if (from._has_bit(1)) { + if (from.has_stripe_size()) { set_stripe_size(from.stripe_size()); } - if (from._has_bit(2)) { + if (from.has_width()) { set_width(from.width()); } } @@ -1123,7 +1130,7 @@ void StripingPolicy::CopyFrom(const StripingPolicy& from) { bool StripingPolicy::IsInitialized() const { if ((_has_bits_[0] & 0x00000007) != 0x00000007) return false; - + return true; } @@ -1198,7 +1205,8 @@ const ::google::protobuf::Descriptor* Replica::descriptor() { } const Replica& Replica::default_instance() { - if (default_instance_ == NULL) protobuf_AddDesc_xtreemfs_2fGlobalTypes_2eproto(); return *default_instance_; + if (default_instance_ == NULL) protobuf_AddDesc_xtreemfs_2fGlobalTypes_2eproto(); + return *default_instance_; } Replica* Replica::default_instance_ = NULL; @@ -1210,7 +1218,7 @@ Replica* Replica::New() const { void Replica::Clear() { if (_has_bits_[1 / 32] & (0xffu << (1 % 32))) { replication_flags_ = 0u; - if (_has_bit(2)) { + if (has_striping_policy()) { if (striping_policy_ != NULL) striping_policy_->::xtreemfs::pbrpc::StripingPolicy::Clear(); } } @@ -1233,7 +1241,8 @@ bool Replica::MergePartialFromCodedStream( DO_(::google::protobuf::internal::WireFormatLite::ReadString( input, this->add_osd_uuids())); ::google::protobuf::internal::WireFormat::VerifyUTF8String( - this->osd_uuids(0).data(), this->osd_uuids(0).length(), + this->osd_uuids(this->osd_uuids_size() - 1).data(), + this->osd_uuids(this->osd_uuids_size() - 1).length(), ::google::protobuf::internal::WireFormat::PARSE); } else { goto handle_uninterpreted; @@ -1242,7 +1251,7 @@ bool Replica::MergePartialFromCodedStream( if (input->ExpectTag(21)) goto parse_replication_flags; break; } - + // required fixed32 replication_flags = 2; case 2: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -1251,14 +1260,14 @@ bool Replica::MergePartialFromCodedStream( DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive< ::google::protobuf::uint32, ::google::protobuf::internal::WireFormatLite::TYPE_FIXED32>( input, &replication_flags_))); - _set_bit(1); + set_has_replication_flags(); } else { goto handle_uninterpreted; } if (input->ExpectTag(26)) goto parse_striping_policy; break; } - + // required .xtreemfs.pbrpc.StripingPolicy striping_policy = 3; case 3: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -1272,7 +1281,7 @@ bool Replica::MergePartialFromCodedStream( if (input->ExpectAtEnd()) return true; break; } - + default: { handle_uninterpreted: if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -1299,18 +1308,18 @@ void Replica::SerializeWithCachedSizes( ::google::protobuf::internal::WireFormatLite::WriteString( 1, this->osd_uuids(i), output); } - + // required fixed32 replication_flags = 2; - if (_has_bit(1)) { + if (has_replication_flags()) { ::google::protobuf::internal::WireFormatLite::WriteFixed32(2, this->replication_flags(), output); } - + // required .xtreemfs.pbrpc.StripingPolicy striping_policy = 3; - if (_has_bit(2)) { + if (has_striping_policy()) { ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray( 3, this->striping_policy(), output); } - + if (!unknown_fields().empty()) { ::google::protobuf::internal::WireFormat::SerializeUnknownFields( unknown_fields(), output); @@ -1327,19 +1336,19 @@ void Replica::SerializeWithCachedSizes( target = ::google::protobuf::internal::WireFormatLite:: WriteStringToArray(1, this->osd_uuids(i), target); } - + // required fixed32 replication_flags = 2; - if (_has_bit(1)) { + if (has_replication_flags()) { target = ::google::protobuf::internal::WireFormatLite::WriteFixed32ToArray(2, this->replication_flags(), target); } - + // required .xtreemfs.pbrpc.StripingPolicy striping_policy = 3; - if (_has_bit(2)) { + if (has_striping_policy()) { target = ::google::protobuf::internal::WireFormatLite:: WriteMessageNoVirtualToArray( 3, this->striping_policy(), target); } - + if (!unknown_fields().empty()) { target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray( unknown_fields(), target); @@ -1349,20 +1358,20 @@ void Replica::SerializeWithCachedSizes( int Replica::ByteSize() const { int total_size = 0; - + if (_has_bits_[1 / 32] & (0xffu << (1 % 32))) { // required fixed32 replication_flags = 2; if (has_replication_flags()) { total_size += 1 + 4; } - + // required .xtreemfs.pbrpc.StripingPolicy striping_policy = 3; if (has_striping_policy()) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::MessageSizeNoVirtual( this->striping_policy()); } - + } // repeated string osd_uuids = 1; total_size += 1 * this->osd_uuids_size(); @@ -1370,7 +1379,7 @@ int Replica::ByteSize() const { total_size += ::google::protobuf::internal::WireFormatLite::StringSize( this->osd_uuids(i)); } - + if (!unknown_fields().empty()) { total_size += ::google::protobuf::internal::WireFormat::ComputeUnknownFieldsSize( @@ -1398,10 +1407,10 @@ void Replica::MergeFrom(const Replica& from) { GOOGLE_CHECK_NE(&from, this); osd_uuids_.MergeFrom(from.osd_uuids_); if (from._has_bits_[1 / 32] & (0xffu << (1 % 32))) { - if (from._has_bit(1)) { + if (from.has_replication_flags()) { set_replication_flags(from.replication_flags()); } - if (from._has_bit(2)) { + if (from.has_striping_policy()) { mutable_striping_policy()->::xtreemfs::pbrpc::StripingPolicy::MergeFrom(from.striping_policy()); } } @@ -1422,7 +1431,7 @@ void Replica::CopyFrom(const Replica& from) { bool Replica::IsInitialized() const { if ((_has_bits_[0] & 0x00000006) != 0x00000006) return false; - + if (has_striping_policy()) { if (!this->striping_policy().IsInitialized()) return false; } @@ -1494,7 +1503,8 @@ const ::google::protobuf::Descriptor* Replicas::descriptor() { } const Replicas& Replicas::default_instance() { - if (default_instance_ == NULL) protobuf_AddDesc_xtreemfs_2fGlobalTypes_2eproto(); return *default_instance_; + if (default_instance_ == NULL) protobuf_AddDesc_xtreemfs_2fGlobalTypes_2eproto(); + return *default_instance_; } Replicas* Replicas::default_instance_ = NULL; @@ -1529,7 +1539,7 @@ bool Replicas::MergePartialFromCodedStream( if (input->ExpectAtEnd()) return true; break; } - + default: { handle_uninterpreted: if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -1553,7 +1563,7 @@ void Replicas::SerializeWithCachedSizes( ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray( 1, this->replicas(i), output); } - + if (!unknown_fields().empty()) { ::google::protobuf::internal::WireFormat::SerializeUnknownFields( unknown_fields(), output); @@ -1568,7 +1578,7 @@ void Replicas::SerializeWithCachedSizes( WriteMessageNoVirtualToArray( 1, this->replicas(i), target); } - + if (!unknown_fields().empty()) { target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray( unknown_fields(), target); @@ -1578,7 +1588,7 @@ void Replicas::SerializeWithCachedSizes( int Replicas::ByteSize() const { int total_size = 0; - + // repeated .xtreemfs.pbrpc.Replica replicas = 1; total_size += 1 * this->replicas_size(); for (int i = 0; i < this->replicas_size(); i++) { @@ -1586,7 +1596,7 @@ int Replicas::ByteSize() const { ::google::protobuf::internal::WireFormatLite::MessageSizeNoVirtual( this->replicas(i)); } - + if (!unknown_fields().empty()) { total_size += ::google::protobuf::internal::WireFormat::ComputeUnknownFieldsSize( @@ -1629,7 +1639,7 @@ void Replicas::CopyFrom(const Replicas& from) { } bool Replicas::IsInitialized() const { - + for (int i = 0; i < replicas_size(); i++) { if (!this->replicas(i).IsInitialized()) return false; } @@ -1656,9 +1666,6 @@ void Replicas::Swap(Replicas* other) { // =================================================================== -const ::std::string XCap::_default_client_identity_; -const ::std::string XCap::_default_file_id_; -const ::std::string XCap::_default_server_signature_; #ifndef _MSC_VER const int XCap::kAccessModeFieldNumber; const int XCap::kClientIdentityFieldNumber; @@ -1689,12 +1696,12 @@ XCap::XCap(const XCap& from) void XCap::SharedCtor() { _cached_size_ = 0; access_mode_ = 0u; - client_identity_ = const_cast< ::std::string*>(&_default_client_identity_); + client_identity_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); expire_time_s_ = GOOGLE_ULONGLONG(0); expire_timeout_s_ = 0u; - file_id_ = const_cast< ::std::string*>(&_default_file_id_); + file_id_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); replicate_on_close_ = false; - server_signature_ = const_cast< ::std::string*>(&_default_server_signature_); + server_signature_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); truncate_epoch_ = 0u; snap_config_ = 0; snap_timestamp_ = GOOGLE_ULONGLONG(0); @@ -1706,13 +1713,13 @@ XCap::~XCap() { } void XCap::SharedDtor() { - if (client_identity_ != &_default_client_identity_) { + if (client_identity_ != &::google::protobuf::internal::kEmptyString) { delete client_identity_; } - if (file_id_ != &_default_file_id_) { + if (file_id_ != &::google::protobuf::internal::kEmptyString) { delete file_id_; } - if (server_signature_ != &_default_server_signature_) { + if (server_signature_ != &::google::protobuf::internal::kEmptyString) { delete server_signature_; } if (this != default_instance_) { @@ -1730,7 +1737,8 @@ const ::google::protobuf::Descriptor* XCap::descriptor() { } const XCap& XCap::default_instance() { - if (default_instance_ == NULL) protobuf_AddDesc_xtreemfs_2fGlobalTypes_2eproto(); return *default_instance_; + if (default_instance_ == NULL) protobuf_AddDesc_xtreemfs_2fGlobalTypes_2eproto(); + return *default_instance_; } XCap* XCap::default_instance_ = NULL; @@ -1742,21 +1750,21 @@ XCap* XCap::New() const { void XCap::Clear() { if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) { access_mode_ = 0u; - if (_has_bit(1)) { - if (client_identity_ != &_default_client_identity_) { + if (has_client_identity()) { + if (client_identity_ != &::google::protobuf::internal::kEmptyString) { client_identity_->clear(); } } expire_time_s_ = GOOGLE_ULONGLONG(0); expire_timeout_s_ = 0u; - if (_has_bit(4)) { - if (file_id_ != &_default_file_id_) { + if (has_file_id()) { + if (file_id_ != &::google::protobuf::internal::kEmptyString) { file_id_->clear(); } } replicate_on_close_ = false; - if (_has_bit(6)) { - if (server_signature_ != &_default_server_signature_) { + if (has_server_signature()) { + if (server_signature_ != &::google::protobuf::internal::kEmptyString) { server_signature_->clear(); } } @@ -1783,14 +1791,14 @@ bool XCap::MergePartialFromCodedStream( DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive< ::google::protobuf::uint32, ::google::protobuf::internal::WireFormatLite::TYPE_FIXED32>( input, &access_mode_))); - _set_bit(0); + set_has_access_mode(); } else { goto handle_uninterpreted; } if (input->ExpectTag(18)) goto parse_client_identity; break; } - + // required string client_identity = 2; case 2: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -1807,7 +1815,7 @@ bool XCap::MergePartialFromCodedStream( if (input->ExpectTag(25)) goto parse_expire_time_s; break; } - + // required fixed64 expire_time_s = 3; case 3: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -1816,14 +1824,14 @@ bool XCap::MergePartialFromCodedStream( DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive< ::google::protobuf::uint64, ::google::protobuf::internal::WireFormatLite::TYPE_FIXED64>( input, &expire_time_s_))); - _set_bit(2); + set_has_expire_time_s(); } else { goto handle_uninterpreted; } if (input->ExpectTag(37)) goto parse_expire_timeout_s; break; } - + // required fixed32 expire_timeout_s = 4; case 4: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -1832,14 +1840,14 @@ bool XCap::MergePartialFromCodedStream( DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive< ::google::protobuf::uint32, ::google::protobuf::internal::WireFormatLite::TYPE_FIXED32>( input, &expire_timeout_s_))); - _set_bit(3); + set_has_expire_timeout_s(); } else { goto handle_uninterpreted; } if (input->ExpectTag(42)) goto parse_file_id; break; } - + // required string file_id = 5; case 5: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -1856,7 +1864,7 @@ bool XCap::MergePartialFromCodedStream( if (input->ExpectTag(48)) goto parse_replicate_on_close; break; } - + // required bool replicate_on_close = 6; case 6: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -1865,14 +1873,14 @@ bool XCap::MergePartialFromCodedStream( DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive< bool, ::google::protobuf::internal::WireFormatLite::TYPE_BOOL>( input, &replicate_on_close_))); - _set_bit(5); + set_has_replicate_on_close(); } else { goto handle_uninterpreted; } if (input->ExpectTag(58)) goto parse_server_signature; break; } - + // required string server_signature = 7; case 7: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -1889,7 +1897,7 @@ bool XCap::MergePartialFromCodedStream( if (input->ExpectTag(69)) goto parse_truncate_epoch; break; } - + // required fixed32 truncate_epoch = 8; case 8: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -1898,14 +1906,14 @@ bool XCap::MergePartialFromCodedStream( DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive< ::google::protobuf::uint32, ::google::protobuf::internal::WireFormatLite::TYPE_FIXED32>( input, &truncate_epoch_))); - _set_bit(7); + set_has_truncate_epoch(); } else { goto handle_uninterpreted; } if (input->ExpectTag(72)) goto parse_snap_config; break; } - + // required .xtreemfs.pbrpc.SnapConfig snap_config = 9; case 9: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -1915,8 +1923,8 @@ bool XCap::MergePartialFromCodedStream( DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive< int, ::google::protobuf::internal::WireFormatLite::TYPE_ENUM>( input, &value))); - if (xtreemfs::pbrpc::SnapConfig_IsValid(value)) { - set_snap_config(static_cast< xtreemfs::pbrpc::SnapConfig >(value)); + if (::xtreemfs::pbrpc::SnapConfig_IsValid(value)) { + set_snap_config(static_cast< ::xtreemfs::pbrpc::SnapConfig >(value)); } else { mutable_unknown_fields()->AddVarint(9, value); } @@ -1926,7 +1934,7 @@ bool XCap::MergePartialFromCodedStream( if (input->ExpectTag(81)) goto parse_snap_timestamp; break; } - + // required fixed64 snap_timestamp = 10; case 10: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -1935,14 +1943,14 @@ bool XCap::MergePartialFromCodedStream( DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive< ::google::protobuf::uint64, ::google::protobuf::internal::WireFormatLite::TYPE_FIXED64>( input, &snap_timestamp_))); - _set_bit(9); + set_has_snap_timestamp(); } else { goto handle_uninterpreted; } if (input->ExpectAtEnd()) return true; break; } - + default: { handle_uninterpreted: if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -1962,68 +1970,68 @@ bool XCap::MergePartialFromCodedStream( void XCap::SerializeWithCachedSizes( ::google::protobuf::io::CodedOutputStream* output) const { // required fixed32 access_mode = 1; - if (_has_bit(0)) { + if (has_access_mode()) { ::google::protobuf::internal::WireFormatLite::WriteFixed32(1, this->access_mode(), output); } - + // required string client_identity = 2; - if (_has_bit(1)) { + if (has_client_identity()) { ::google::protobuf::internal::WireFormat::VerifyUTF8String( this->client_identity().data(), this->client_identity().length(), ::google::protobuf::internal::WireFormat::SERIALIZE); ::google::protobuf::internal::WireFormatLite::WriteString( 2, this->client_identity(), output); } - + // required fixed64 expire_time_s = 3; - if (_has_bit(2)) { + if (has_expire_time_s()) { ::google::protobuf::internal::WireFormatLite::WriteFixed64(3, this->expire_time_s(), output); } - + // required fixed32 expire_timeout_s = 4; - if (_has_bit(3)) { + if (has_expire_timeout_s()) { ::google::protobuf::internal::WireFormatLite::WriteFixed32(4, this->expire_timeout_s(), output); } - + // required string file_id = 5; - if (_has_bit(4)) { + if (has_file_id()) { ::google::protobuf::internal::WireFormat::VerifyUTF8String( this->file_id().data(), this->file_id().length(), ::google::protobuf::internal::WireFormat::SERIALIZE); ::google::protobuf::internal::WireFormatLite::WriteString( 5, this->file_id(), output); } - + // required bool replicate_on_close = 6; - if (_has_bit(5)) { + if (has_replicate_on_close()) { ::google::protobuf::internal::WireFormatLite::WriteBool(6, this->replicate_on_close(), output); } - + // required string server_signature = 7; - if (_has_bit(6)) { + if (has_server_signature()) { ::google::protobuf::internal::WireFormat::VerifyUTF8String( this->server_signature().data(), this->server_signature().length(), ::google::protobuf::internal::WireFormat::SERIALIZE); ::google::protobuf::internal::WireFormatLite::WriteString( 7, this->server_signature(), output); } - + // required fixed32 truncate_epoch = 8; - if (_has_bit(7)) { + if (has_truncate_epoch()) { ::google::protobuf::internal::WireFormatLite::WriteFixed32(8, this->truncate_epoch(), output); } - + // required .xtreemfs.pbrpc.SnapConfig snap_config = 9; - if (_has_bit(8)) { + if (has_snap_config()) { ::google::protobuf::internal::WireFormatLite::WriteEnum( 9, this->snap_config(), output); } - + // required fixed64 snap_timestamp = 10; - if (_has_bit(9)) { + if (has_snap_timestamp()) { ::google::protobuf::internal::WireFormatLite::WriteFixed64(10, this->snap_timestamp(), output); } - + if (!unknown_fields().empty()) { ::google::protobuf::internal::WireFormat::SerializeUnknownFields( unknown_fields(), output); @@ -2033,12 +2041,12 @@ void XCap::SerializeWithCachedSizes( ::google::protobuf::uint8* XCap::SerializeWithCachedSizesToArray( ::google::protobuf::uint8* target) const { // required fixed32 access_mode = 1; - if (_has_bit(0)) { + if (has_access_mode()) { target = ::google::protobuf::internal::WireFormatLite::WriteFixed32ToArray(1, this->access_mode(), target); } - + // required string client_identity = 2; - if (_has_bit(1)) { + if (has_client_identity()) { ::google::protobuf::internal::WireFormat::VerifyUTF8String( this->client_identity().data(), this->client_identity().length(), ::google::protobuf::internal::WireFormat::SERIALIZE); @@ -2046,19 +2054,19 @@ void XCap::SerializeWithCachedSizes( ::google::protobuf::internal::WireFormatLite::WriteStringToArray( 2, this->client_identity(), target); } - + // required fixed64 expire_time_s = 3; - if (_has_bit(2)) { + if (has_expire_time_s()) { target = ::google::protobuf::internal::WireFormatLite::WriteFixed64ToArray(3, this->expire_time_s(), target); } - + // required fixed32 expire_timeout_s = 4; - if (_has_bit(3)) { + if (has_expire_timeout_s()) { target = ::google::protobuf::internal::WireFormatLite::WriteFixed32ToArray(4, this->expire_timeout_s(), target); } - + // required string file_id = 5; - if (_has_bit(4)) { + if (has_file_id()) { ::google::protobuf::internal::WireFormat::VerifyUTF8String( this->file_id().data(), this->file_id().length(), ::google::protobuf::internal::WireFormat::SERIALIZE); @@ -2066,14 +2074,14 @@ void XCap::SerializeWithCachedSizes( ::google::protobuf::internal::WireFormatLite::WriteStringToArray( 5, this->file_id(), target); } - + // required bool replicate_on_close = 6; - if (_has_bit(5)) { + if (has_replicate_on_close()) { target = ::google::protobuf::internal::WireFormatLite::WriteBoolToArray(6, this->replicate_on_close(), target); } - + // required string server_signature = 7; - if (_has_bit(6)) { + if (has_server_signature()) { ::google::protobuf::internal::WireFormat::VerifyUTF8String( this->server_signature().data(), this->server_signature().length(), ::google::protobuf::internal::WireFormat::SERIALIZE); @@ -2081,23 +2089,23 @@ void XCap::SerializeWithCachedSizes( ::google::protobuf::internal::WireFormatLite::WriteStringToArray( 7, this->server_signature(), target); } - + // required fixed32 truncate_epoch = 8; - if (_has_bit(7)) { + if (has_truncate_epoch()) { target = ::google::protobuf::internal::WireFormatLite::WriteFixed32ToArray(8, this->truncate_epoch(), target); } - + // required .xtreemfs.pbrpc.SnapConfig snap_config = 9; - if (_has_bit(8)) { + if (has_snap_config()) { target = ::google::protobuf::internal::WireFormatLite::WriteEnumToArray( 9, this->snap_config(), target); } - + // required fixed64 snap_timestamp = 10; - if (_has_bit(9)) { + if (has_snap_timestamp()) { target = ::google::protobuf::internal::WireFormatLite::WriteFixed64ToArray(10, this->snap_timestamp(), target); } - + if (!unknown_fields().empty()) { target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray( unknown_fields(), target); @@ -2107,54 +2115,54 @@ void XCap::SerializeWithCachedSizes( int XCap::ByteSize() const { int total_size = 0; - + if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) { // required fixed32 access_mode = 1; if (has_access_mode()) { total_size += 1 + 4; } - + // required string client_identity = 2; if (has_client_identity()) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::StringSize( this->client_identity()); } - + // required fixed64 expire_time_s = 3; if (has_expire_time_s()) { total_size += 1 + 8; } - + // required fixed32 expire_timeout_s = 4; if (has_expire_timeout_s()) { total_size += 1 + 4; } - + // required string file_id = 5; if (has_file_id()) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::StringSize( this->file_id()); } - + // required bool replicate_on_close = 6; if (has_replicate_on_close()) { total_size += 1 + 1; } - + // required string server_signature = 7; if (has_server_signature()) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::StringSize( this->server_signature()); } - + // required fixed32 truncate_epoch = 8; if (has_truncate_epoch()) { total_size += 1 + 4; } - + } if (_has_bits_[8 / 32] & (0xffu << (8 % 32))) { // required .xtreemfs.pbrpc.SnapConfig snap_config = 9; @@ -2162,12 +2170,12 @@ int XCap::ByteSize() const { total_size += 1 + ::google::protobuf::internal::WireFormatLite::EnumSize(this->snap_config()); } - + // required fixed64 snap_timestamp = 10; if (has_snap_timestamp()) { total_size += 1 + 8; } - + } if (!unknown_fields().empty()) { total_size += @@ -2195,36 +2203,36 @@ void XCap::MergeFrom(const ::google::protobuf::Message& from) { void XCap::MergeFrom(const XCap& from) { GOOGLE_CHECK_NE(&from, this); if (from._has_bits_[0 / 32] & (0xffu << (0 % 32))) { - if (from._has_bit(0)) { + if (from.has_access_mode()) { set_access_mode(from.access_mode()); } - if (from._has_bit(1)) { + if (from.has_client_identity()) { set_client_identity(from.client_identity()); } - if (from._has_bit(2)) { + if (from.has_expire_time_s()) { set_expire_time_s(from.expire_time_s()); } - if (from._has_bit(3)) { + if (from.has_expire_timeout_s()) { set_expire_timeout_s(from.expire_timeout_s()); } - if (from._has_bit(4)) { + if (from.has_file_id()) { set_file_id(from.file_id()); } - if (from._has_bit(5)) { + if (from.has_replicate_on_close()) { set_replicate_on_close(from.replicate_on_close()); } - if (from._has_bit(6)) { + if (from.has_server_signature()) { set_server_signature(from.server_signature()); } - if (from._has_bit(7)) { + if (from.has_truncate_epoch()) { set_truncate_epoch(from.truncate_epoch()); } } if (from._has_bits_[8 / 32] & (0xffu << (8 % 32))) { - if (from._has_bit(8)) { + if (from.has_snap_config()) { set_snap_config(from.snap_config()); } - if (from._has_bit(9)) { + if (from.has_snap_timestamp()) { set_snap_timestamp(from.snap_timestamp()); } } @@ -2245,7 +2253,7 @@ void XCap::CopyFrom(const XCap& from) { bool XCap::IsInitialized() const { if ((_has_bits_[0] & 0x000003ff) != 0x000003ff) return false; - + return true; } @@ -2278,7 +2286,6 @@ void XCap::Swap(XCap* other) { // =================================================================== -const ::std::string XLocSet::_default_replica_update_policy_; #ifndef _MSC_VER const int XLocSet::kReadOnlyFileSizeFieldNumber; const int XLocSet::kReplicasFieldNumber; @@ -2303,7 +2310,7 @@ XLocSet::XLocSet(const XLocSet& from) void XLocSet::SharedCtor() { _cached_size_ = 0; read_only_file_size_ = GOOGLE_ULONGLONG(0); - replica_update_policy_ = const_cast< ::std::string*>(&_default_replica_update_policy_); + replica_update_policy_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); version_ = 0u; ::memset(_has_bits_, 0, sizeof(_has_bits_)); } @@ -2313,7 +2320,7 @@ XLocSet::~XLocSet() { } void XLocSet::SharedDtor() { - if (replica_update_policy_ != &_default_replica_update_policy_) { + if (replica_update_policy_ != &::google::protobuf::internal::kEmptyString) { delete replica_update_policy_; } if (this != default_instance_) { @@ -2331,7 +2338,8 @@ const ::google::protobuf::Descriptor* XLocSet::descriptor() { } const XLocSet& XLocSet::default_instance() { - if (default_instance_ == NULL) protobuf_AddDesc_xtreemfs_2fGlobalTypes_2eproto(); return *default_instance_; + if (default_instance_ == NULL) protobuf_AddDesc_xtreemfs_2fGlobalTypes_2eproto(); + return *default_instance_; } XLocSet* XLocSet::default_instance_ = NULL; @@ -2343,8 +2351,8 @@ XLocSet* XLocSet::New() const { void XLocSet::Clear() { if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) { read_only_file_size_ = GOOGLE_ULONGLONG(0); - if (_has_bit(2)) { - if (replica_update_policy_ != &_default_replica_update_policy_) { + if (has_replica_update_policy()) { + if (replica_update_policy_ != &::google::protobuf::internal::kEmptyString) { replica_update_policy_->clear(); } } @@ -2368,14 +2376,14 @@ bool XLocSet::MergePartialFromCodedStream( DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive< ::google::protobuf::uint64, ::google::protobuf::internal::WireFormatLite::TYPE_FIXED64>( input, &read_only_file_size_))); - _set_bit(0); + set_has_read_only_file_size(); } else { goto handle_uninterpreted; } if (input->ExpectTag(18)) goto parse_replicas; break; } - + // repeated .xtreemfs.pbrpc.Replica replicas = 2; case 2: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -2390,7 +2398,7 @@ bool XLocSet::MergePartialFromCodedStream( if (input->ExpectTag(26)) goto parse_replica_update_policy; break; } - + // required string replica_update_policy = 3; case 3: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -2407,7 +2415,7 @@ bool XLocSet::MergePartialFromCodedStream( if (input->ExpectTag(37)) goto parse_version; break; } - + // required fixed32 version = 4; case 4: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -2416,14 +2424,14 @@ bool XLocSet::MergePartialFromCodedStream( DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive< ::google::protobuf::uint32, ::google::protobuf::internal::WireFormatLite::TYPE_FIXED32>( input, &version_))); - _set_bit(3); + set_has_version(); } else { goto handle_uninterpreted; } if (input->ExpectAtEnd()) return true; break; } - + default: { handle_uninterpreted: if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -2443,30 +2451,30 @@ bool XLocSet::MergePartialFromCodedStream( void XLocSet::SerializeWithCachedSizes( ::google::protobuf::io::CodedOutputStream* output) const { // required fixed64 read_only_file_size = 1; - if (_has_bit(0)) { + if (has_read_only_file_size()) { ::google::protobuf::internal::WireFormatLite::WriteFixed64(1, this->read_only_file_size(), output); } - + // repeated .xtreemfs.pbrpc.Replica replicas = 2; for (int i = 0; i < this->replicas_size(); i++) { ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray( 2, this->replicas(i), output); } - + // required string replica_update_policy = 3; - if (_has_bit(2)) { + if (has_replica_update_policy()) { ::google::protobuf::internal::WireFormat::VerifyUTF8String( this->replica_update_policy().data(), this->replica_update_policy().length(), ::google::protobuf::internal::WireFormat::SERIALIZE); ::google::protobuf::internal::WireFormatLite::WriteString( 3, this->replica_update_policy(), output); } - + // required fixed32 version = 4; - if (_has_bit(3)) { + if (has_version()) { ::google::protobuf::internal::WireFormatLite::WriteFixed32(4, this->version(), output); } - + if (!unknown_fields().empty()) { ::google::protobuf::internal::WireFormat::SerializeUnknownFields( unknown_fields(), output); @@ -2476,19 +2484,19 @@ void XLocSet::SerializeWithCachedSizes( ::google::protobuf::uint8* XLocSet::SerializeWithCachedSizesToArray( ::google::protobuf::uint8* target) const { // required fixed64 read_only_file_size = 1; - if (_has_bit(0)) { + if (has_read_only_file_size()) { target = ::google::protobuf::internal::WireFormatLite::WriteFixed64ToArray(1, this->read_only_file_size(), target); } - + // repeated .xtreemfs.pbrpc.Replica replicas = 2; for (int i = 0; i < this->replicas_size(); i++) { target = ::google::protobuf::internal::WireFormatLite:: WriteMessageNoVirtualToArray( 2, this->replicas(i), target); } - + // required string replica_update_policy = 3; - if (_has_bit(2)) { + if (has_replica_update_policy()) { ::google::protobuf::internal::WireFormat::VerifyUTF8String( this->replica_update_policy().data(), this->replica_update_policy().length(), ::google::protobuf::internal::WireFormat::SERIALIZE); @@ -2496,12 +2504,12 @@ void XLocSet::SerializeWithCachedSizes( ::google::protobuf::internal::WireFormatLite::WriteStringToArray( 3, this->replica_update_policy(), target); } - + // required fixed32 version = 4; - if (_has_bit(3)) { + if (has_version()) { target = ::google::protobuf::internal::WireFormatLite::WriteFixed32ToArray(4, this->version(), target); } - + if (!unknown_fields().empty()) { target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray( unknown_fields(), target); @@ -2511,25 +2519,25 @@ void XLocSet::SerializeWithCachedSizes( int XLocSet::ByteSize() const { int total_size = 0; - + if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) { // required fixed64 read_only_file_size = 1; if (has_read_only_file_size()) { total_size += 1 + 8; } - + // required string replica_update_policy = 3; if (has_replica_update_policy()) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::StringSize( this->replica_update_policy()); } - + // required fixed32 version = 4; if (has_version()) { total_size += 1 + 4; } - + } // repeated .xtreemfs.pbrpc.Replica replicas = 2; total_size += 1 * this->replicas_size(); @@ -2538,7 +2546,7 @@ int XLocSet::ByteSize() const { ::google::protobuf::internal::WireFormatLite::MessageSizeNoVirtual( this->replicas(i)); } - + if (!unknown_fields().empty()) { total_size += ::google::protobuf::internal::WireFormat::ComputeUnknownFieldsSize( @@ -2566,13 +2574,13 @@ void XLocSet::MergeFrom(const XLocSet& from) { GOOGLE_CHECK_NE(&from, this); replicas_.MergeFrom(from.replicas_); if (from._has_bits_[0 / 32] & (0xffu << (0 % 32))) { - if (from._has_bit(0)) { + if (from.has_read_only_file_size()) { set_read_only_file_size(from.read_only_file_size()); } - if (from._has_bit(2)) { + if (from.has_replica_update_policy()) { set_replica_update_policy(from.replica_update_policy()); } - if (from._has_bit(3)) { + if (from.has_version()) { set_version(from.version()); } } @@ -2593,7 +2601,7 @@ void XLocSet::CopyFrom(const XLocSet& from) { bool XLocSet::IsInitialized() const { if ((_has_bits_[0] & 0x0000000d) != 0x0000000d) return false; - + for (int i = 0; i < replicas_size(); i++) { if (!this->replicas(i).IsInitialized()) return false; } @@ -2673,7 +2681,8 @@ const ::google::protobuf::Descriptor* FileCredentials::descriptor() { } const FileCredentials& FileCredentials::default_instance() { - if (default_instance_ == NULL) protobuf_AddDesc_xtreemfs_2fGlobalTypes_2eproto(); return *default_instance_; + if (default_instance_ == NULL) protobuf_AddDesc_xtreemfs_2fGlobalTypes_2eproto(); + return *default_instance_; } FileCredentials* FileCredentials::default_instance_ = NULL; @@ -2684,10 +2693,10 @@ FileCredentials* FileCredentials::New() const { void FileCredentials::Clear() { if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) { - if (_has_bit(0)) { + if (has_xcap()) { if (xcap_ != NULL) xcap_->::xtreemfs::pbrpc::XCap::Clear(); } - if (_has_bit(1)) { + if (has_xlocs()) { if (xlocs_ != NULL) xlocs_->::xtreemfs::pbrpc::XLocSet::Clear(); } } @@ -2713,7 +2722,7 @@ bool FileCredentials::MergePartialFromCodedStream( if (input->ExpectTag(18)) goto parse_xlocs; break; } - + // required .xtreemfs.pbrpc.XLocSet xlocs = 2; case 2: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -2727,7 +2736,7 @@ bool FileCredentials::MergePartialFromCodedStream( if (input->ExpectAtEnd()) return true; break; } - + default: { handle_uninterpreted: if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -2747,17 +2756,17 @@ bool FileCredentials::MergePartialFromCodedStream( void FileCredentials::SerializeWithCachedSizes( ::google::protobuf::io::CodedOutputStream* output) const { // required .xtreemfs.pbrpc.XCap xcap = 1; - if (_has_bit(0)) { + if (has_xcap()) { ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray( 1, this->xcap(), output); } - + // required .xtreemfs.pbrpc.XLocSet xlocs = 2; - if (_has_bit(1)) { + if (has_xlocs()) { ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray( 2, this->xlocs(), output); } - + if (!unknown_fields().empty()) { ::google::protobuf::internal::WireFormat::SerializeUnknownFields( unknown_fields(), output); @@ -2767,19 +2776,19 @@ void FileCredentials::SerializeWithCachedSizes( ::google::protobuf::uint8* FileCredentials::SerializeWithCachedSizesToArray( ::google::protobuf::uint8* target) const { // required .xtreemfs.pbrpc.XCap xcap = 1; - if (_has_bit(0)) { + if (has_xcap()) { target = ::google::protobuf::internal::WireFormatLite:: WriteMessageNoVirtualToArray( 1, this->xcap(), target); } - + // required .xtreemfs.pbrpc.XLocSet xlocs = 2; - if (_has_bit(1)) { + if (has_xlocs()) { target = ::google::protobuf::internal::WireFormatLite:: WriteMessageNoVirtualToArray( 2, this->xlocs(), target); } - + if (!unknown_fields().empty()) { target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray( unknown_fields(), target); @@ -2789,7 +2798,7 @@ void FileCredentials::SerializeWithCachedSizes( int FileCredentials::ByteSize() const { int total_size = 0; - + if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) { // required .xtreemfs.pbrpc.XCap xcap = 1; if (has_xcap()) { @@ -2797,14 +2806,14 @@ int FileCredentials::ByteSize() const { ::google::protobuf::internal::WireFormatLite::MessageSizeNoVirtual( this->xcap()); } - + // required .xtreemfs.pbrpc.XLocSet xlocs = 2; if (has_xlocs()) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::MessageSizeNoVirtual( this->xlocs()); } - + } if (!unknown_fields().empty()) { total_size += @@ -2832,10 +2841,10 @@ void FileCredentials::MergeFrom(const ::google::protobuf::Message& from) { void FileCredentials::MergeFrom(const FileCredentials& from) { GOOGLE_CHECK_NE(&from, this); if (from._has_bits_[0 / 32] & (0xffu << (0 % 32))) { - if (from._has_bit(0)) { + if (from.has_xcap()) { mutable_xcap()->::xtreemfs::pbrpc::XCap::MergeFrom(from.xcap()); } - if (from._has_bit(1)) { + if (from.has_xlocs()) { mutable_xlocs()->::xtreemfs::pbrpc::XLocSet::MergeFrom(from.xlocs()); } } @@ -2856,7 +2865,7 @@ void FileCredentials::CopyFrom(const FileCredentials& from) { bool FileCredentials::IsInitialized() const { if ((_has_bits_[0] & 0x00000003) != 0x00000003) return false; - + if (has_xcap()) { if (!this->xcap().IsInitialized()) return false; } @@ -2933,7 +2942,8 @@ const ::google::protobuf::Descriptor* FileCredentialsSet::descriptor() { } const FileCredentialsSet& FileCredentialsSet::default_instance() { - if (default_instance_ == NULL) protobuf_AddDesc_xtreemfs_2fGlobalTypes_2eproto(); return *default_instance_; + if (default_instance_ == NULL) protobuf_AddDesc_xtreemfs_2fGlobalTypes_2eproto(); + return *default_instance_; } FileCredentialsSet* FileCredentialsSet::default_instance_ = NULL; @@ -2944,7 +2954,7 @@ FileCredentialsSet* FileCredentialsSet::New() const { void FileCredentialsSet::Clear() { if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) { - if (_has_bit(0)) { + if (has_file_credentials()) { if (file_credentials_ != NULL) file_credentials_->::xtreemfs::pbrpc::FileCredentials::Clear(); } } @@ -2970,7 +2980,7 @@ bool FileCredentialsSet::MergePartialFromCodedStream( if (input->ExpectAtEnd()) return true; break; } - + default: { handle_uninterpreted: if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -2990,11 +3000,11 @@ bool FileCredentialsSet::MergePartialFromCodedStream( void FileCredentialsSet::SerializeWithCachedSizes( ::google::protobuf::io::CodedOutputStream* output) const { // optional .xtreemfs.pbrpc.FileCredentials file_credentials = 1; - if (_has_bit(0)) { + if (has_file_credentials()) { ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray( 1, this->file_credentials(), output); } - + if (!unknown_fields().empty()) { ::google::protobuf::internal::WireFormat::SerializeUnknownFields( unknown_fields(), output); @@ -3004,12 +3014,12 @@ void FileCredentialsSet::SerializeWithCachedSizes( ::google::protobuf::uint8* FileCredentialsSet::SerializeWithCachedSizesToArray( ::google::protobuf::uint8* target) const { // optional .xtreemfs.pbrpc.FileCredentials file_credentials = 1; - if (_has_bit(0)) { + if (has_file_credentials()) { target = ::google::protobuf::internal::WireFormatLite:: WriteMessageNoVirtualToArray( 1, this->file_credentials(), target); } - + if (!unknown_fields().empty()) { target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray( unknown_fields(), target); @@ -3019,7 +3029,7 @@ void FileCredentialsSet::SerializeWithCachedSizes( int FileCredentialsSet::ByteSize() const { int total_size = 0; - + if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) { // optional .xtreemfs.pbrpc.FileCredentials file_credentials = 1; if (has_file_credentials()) { @@ -3027,7 +3037,7 @@ int FileCredentialsSet::ByteSize() const { ::google::protobuf::internal::WireFormatLite::MessageSizeNoVirtual( this->file_credentials()); } - + } if (!unknown_fields().empty()) { total_size += @@ -3055,7 +3065,7 @@ void FileCredentialsSet::MergeFrom(const ::google::protobuf::Message& from) { void FileCredentialsSet::MergeFrom(const FileCredentialsSet& from) { GOOGLE_CHECK_NE(&from, this); if (from._has_bits_[0 / 32] & (0xffu << (0 % 32))) { - if (from._has_bit(0)) { + if (from.has_file_credentials()) { mutable_file_credentials()->::xtreemfs::pbrpc::FileCredentials::MergeFrom(from.file_credentials()); } } @@ -3075,7 +3085,7 @@ void FileCredentialsSet::CopyFrom(const FileCredentialsSet& from) { } bool FileCredentialsSet::IsInitialized() const { - + if (has_file_credentials()) { if (!this->file_credentials().IsInitialized()) return false; } @@ -3150,7 +3160,8 @@ const ::google::protobuf::Descriptor* VivaldiCoordinates::descriptor() { } const VivaldiCoordinates& VivaldiCoordinates::default_instance() { - if (default_instance_ == NULL) protobuf_AddDesc_xtreemfs_2fGlobalTypes_2eproto(); return *default_instance_; + if (default_instance_ == NULL) protobuf_AddDesc_xtreemfs_2fGlobalTypes_2eproto(); + return *default_instance_; } VivaldiCoordinates* VivaldiCoordinates::default_instance_ = NULL; @@ -3182,14 +3193,14 @@ bool VivaldiCoordinates::MergePartialFromCodedStream( DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive< double, ::google::protobuf::internal::WireFormatLite::TYPE_DOUBLE>( input, &x_coordinate_))); - _set_bit(0); + set_has_x_coordinate(); } else { goto handle_uninterpreted; } if (input->ExpectTag(17)) goto parse_y_coordinate; break; } - + // required double y_coordinate = 2; case 2: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -3198,14 +3209,14 @@ bool VivaldiCoordinates::MergePartialFromCodedStream( DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive< double, ::google::protobuf::internal::WireFormatLite::TYPE_DOUBLE>( input, &y_coordinate_))); - _set_bit(1); + set_has_y_coordinate(); } else { goto handle_uninterpreted; } if (input->ExpectTag(25)) goto parse_local_error; break; } - + // required double local_error = 3; case 3: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -3214,14 +3225,14 @@ bool VivaldiCoordinates::MergePartialFromCodedStream( DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive< double, ::google::protobuf::internal::WireFormatLite::TYPE_DOUBLE>( input, &local_error_))); - _set_bit(2); + set_has_local_error(); } else { goto handle_uninterpreted; } if (input->ExpectAtEnd()) return true; break; } - + default: { handle_uninterpreted: if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -3241,20 +3252,20 @@ bool VivaldiCoordinates::MergePartialFromCodedStream( void VivaldiCoordinates::SerializeWithCachedSizes( ::google::protobuf::io::CodedOutputStream* output) const { // required double x_coordinate = 1; - if (_has_bit(0)) { + if (has_x_coordinate()) { ::google::protobuf::internal::WireFormatLite::WriteDouble(1, this->x_coordinate(), output); } - + // required double y_coordinate = 2; - if (_has_bit(1)) { + if (has_y_coordinate()) { ::google::protobuf::internal::WireFormatLite::WriteDouble(2, this->y_coordinate(), output); } - + // required double local_error = 3; - if (_has_bit(2)) { + if (has_local_error()) { ::google::protobuf::internal::WireFormatLite::WriteDouble(3, this->local_error(), output); } - + if (!unknown_fields().empty()) { ::google::protobuf::internal::WireFormat::SerializeUnknownFields( unknown_fields(), output); @@ -3264,20 +3275,20 @@ void VivaldiCoordinates::SerializeWithCachedSizes( ::google::protobuf::uint8* VivaldiCoordinates::SerializeWithCachedSizesToArray( ::google::protobuf::uint8* target) const { // required double x_coordinate = 1; - if (_has_bit(0)) { + if (has_x_coordinate()) { target = ::google::protobuf::internal::WireFormatLite::WriteDoubleToArray(1, this->x_coordinate(), target); } - + // required double y_coordinate = 2; - if (_has_bit(1)) { + if (has_y_coordinate()) { target = ::google::protobuf::internal::WireFormatLite::WriteDoubleToArray(2, this->y_coordinate(), target); } - + // required double local_error = 3; - if (_has_bit(2)) { + if (has_local_error()) { target = ::google::protobuf::internal::WireFormatLite::WriteDoubleToArray(3, this->local_error(), target); } - + if (!unknown_fields().empty()) { target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray( unknown_fields(), target); @@ -3287,23 +3298,23 @@ void VivaldiCoordinates::SerializeWithCachedSizes( int VivaldiCoordinates::ByteSize() const { int total_size = 0; - + if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) { // required double x_coordinate = 1; if (has_x_coordinate()) { total_size += 1 + 8; } - + // required double y_coordinate = 2; if (has_y_coordinate()) { total_size += 1 + 8; } - + // required double local_error = 3; if (has_local_error()) { total_size += 1 + 8; } - + } if (!unknown_fields().empty()) { total_size += @@ -3331,13 +3342,13 @@ void VivaldiCoordinates::MergeFrom(const ::google::protobuf::Message& from) { void VivaldiCoordinates::MergeFrom(const VivaldiCoordinates& from) { GOOGLE_CHECK_NE(&from, this); if (from._has_bits_[0 / 32] & (0xffu << (0 % 32))) { - if (from._has_bit(0)) { + if (from.has_x_coordinate()) { set_x_coordinate(from.x_coordinate()); } - if (from._has_bit(1)) { + if (from.has_y_coordinate()) { set_y_coordinate(from.y_coordinate()); } - if (from._has_bit(2)) { + if (from.has_local_error()) { set_local_error(from.local_error()); } } @@ -3358,7 +3369,7 @@ void VivaldiCoordinates::CopyFrom(const VivaldiCoordinates& from) { bool VivaldiCoordinates::IsInitialized() const { if ((_has_bits_[0] & 0x00000007) != 0x00000007) return false; - + return true; } @@ -3430,7 +3441,8 @@ const ::google::protobuf::Descriptor* OSDWriteResponse::descriptor() { } const OSDWriteResponse& OSDWriteResponse::default_instance() { - if (default_instance_ == NULL) protobuf_AddDesc_xtreemfs_2fGlobalTypes_2eproto(); return *default_instance_; + if (default_instance_ == NULL) protobuf_AddDesc_xtreemfs_2fGlobalTypes_2eproto(); + return *default_instance_; } OSDWriteResponse* OSDWriteResponse::default_instance_ = NULL; @@ -3461,14 +3473,14 @@ bool OSDWriteResponse::MergePartialFromCodedStream( DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive< ::google::protobuf::uint64, ::google::protobuf::internal::WireFormatLite::TYPE_FIXED64>( input, &size_in_bytes_))); - _set_bit(0); + set_has_size_in_bytes(); } else { goto handle_uninterpreted; } if (input->ExpectTag(21)) goto parse_truncate_epoch; break; } - + // optional fixed32 truncate_epoch = 2; case 2: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -3477,14 +3489,14 @@ bool OSDWriteResponse::MergePartialFromCodedStream( DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive< ::google::protobuf::uint32, ::google::protobuf::internal::WireFormatLite::TYPE_FIXED32>( input, &truncate_epoch_))); - _set_bit(1); + set_has_truncate_epoch(); } else { goto handle_uninterpreted; } if (input->ExpectAtEnd()) return true; break; } - + default: { handle_uninterpreted: if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -3504,15 +3516,15 @@ bool OSDWriteResponse::MergePartialFromCodedStream( void OSDWriteResponse::SerializeWithCachedSizes( ::google::protobuf::io::CodedOutputStream* output) const { // optional fixed64 size_in_bytes = 1; - if (_has_bit(0)) { + if (has_size_in_bytes()) { ::google::protobuf::internal::WireFormatLite::WriteFixed64(1, this->size_in_bytes(), output); } - + // optional fixed32 truncate_epoch = 2; - if (_has_bit(1)) { + if (has_truncate_epoch()) { ::google::protobuf::internal::WireFormatLite::WriteFixed32(2, this->truncate_epoch(), output); } - + if (!unknown_fields().empty()) { ::google::protobuf::internal::WireFormat::SerializeUnknownFields( unknown_fields(), output); @@ -3522,15 +3534,15 @@ void OSDWriteResponse::SerializeWithCachedSizes( ::google::protobuf::uint8* OSDWriteResponse::SerializeWithCachedSizesToArray( ::google::protobuf::uint8* target) const { // optional fixed64 size_in_bytes = 1; - if (_has_bit(0)) { + if (has_size_in_bytes()) { target = ::google::protobuf::internal::WireFormatLite::WriteFixed64ToArray(1, this->size_in_bytes(), target); } - + // optional fixed32 truncate_epoch = 2; - if (_has_bit(1)) { + if (has_truncate_epoch()) { target = ::google::protobuf::internal::WireFormatLite::WriteFixed32ToArray(2, this->truncate_epoch(), target); } - + if (!unknown_fields().empty()) { target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray( unknown_fields(), target); @@ -3540,18 +3552,18 @@ void OSDWriteResponse::SerializeWithCachedSizes( int OSDWriteResponse::ByteSize() const { int total_size = 0; - + if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) { // optional fixed64 size_in_bytes = 1; if (has_size_in_bytes()) { total_size += 1 + 8; } - + // optional fixed32 truncate_epoch = 2; if (has_truncate_epoch()) { total_size += 1 + 4; } - + } if (!unknown_fields().empty()) { total_size += @@ -3579,10 +3591,10 @@ void OSDWriteResponse::MergeFrom(const ::google::protobuf::Message& from) { void OSDWriteResponse::MergeFrom(const OSDWriteResponse& from) { GOOGLE_CHECK_NE(&from, this); if (from._has_bits_[0 / 32] & (0xffu << (0 % 32))) { - if (from._has_bit(0)) { + if (from.has_size_in_bytes()) { set_size_in_bytes(from.size_in_bytes()); } - if (from._has_bit(1)) { + if (from.has_truncate_epoch()) { set_truncate_epoch(from.truncate_epoch()); } } @@ -3602,7 +3614,7 @@ void OSDWriteResponse::CopyFrom(const OSDWriteResponse& from) { } bool OSDWriteResponse::IsInitialized() const { - + return true; } @@ -3627,8 +3639,6 @@ void OSDWriteResponse::Swap(OSDWriteResponse* other) { // =================================================================== -const ::std::string KeyValuePair::_default_key_; -const ::std::string KeyValuePair::_default_value_; #ifndef _MSC_VER const int KeyValuePair::kKeyFieldNumber; const int KeyValuePair::kValueFieldNumber; @@ -3650,8 +3660,8 @@ KeyValuePair::KeyValuePair(const KeyValuePair& from) void KeyValuePair::SharedCtor() { _cached_size_ = 0; - key_ = const_cast< ::std::string*>(&_default_key_); - value_ = const_cast< ::std::string*>(&_default_value_); + key_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + value_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); ::memset(_has_bits_, 0, sizeof(_has_bits_)); } @@ -3660,10 +3670,10 @@ KeyValuePair::~KeyValuePair() { } void KeyValuePair::SharedDtor() { - if (key_ != &_default_key_) { + if (key_ != &::google::protobuf::internal::kEmptyString) { delete key_; } - if (value_ != &_default_value_) { + if (value_ != &::google::protobuf::internal::kEmptyString) { delete value_; } if (this != default_instance_) { @@ -3681,7 +3691,8 @@ const ::google::protobuf::Descriptor* KeyValuePair::descriptor() { } const KeyValuePair& KeyValuePair::default_instance() { - if (default_instance_ == NULL) protobuf_AddDesc_xtreemfs_2fGlobalTypes_2eproto(); return *default_instance_; + if (default_instance_ == NULL) protobuf_AddDesc_xtreemfs_2fGlobalTypes_2eproto(); + return *default_instance_; } KeyValuePair* KeyValuePair::default_instance_ = NULL; @@ -3692,13 +3703,13 @@ KeyValuePair* KeyValuePair::New() const { void KeyValuePair::Clear() { if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) { - if (_has_bit(0)) { - if (key_ != &_default_key_) { + if (has_key()) { + if (key_ != &::google::protobuf::internal::kEmptyString) { key_->clear(); } } - if (_has_bit(1)) { - if (value_ != &_default_value_) { + if (has_value()) { + if (value_ != &::google::protobuf::internal::kEmptyString) { value_->clear(); } } @@ -3728,7 +3739,7 @@ bool KeyValuePair::MergePartialFromCodedStream( if (input->ExpectTag(18)) goto parse_value; break; } - + // required string value = 2; case 2: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -3745,7 +3756,7 @@ bool KeyValuePair::MergePartialFromCodedStream( if (input->ExpectAtEnd()) return true; break; } - + default: { handle_uninterpreted: if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -3765,23 +3776,23 @@ bool KeyValuePair::MergePartialFromCodedStream( void KeyValuePair::SerializeWithCachedSizes( ::google::protobuf::io::CodedOutputStream* output) const { // required string key = 1; - if (_has_bit(0)) { + if (has_key()) { ::google::protobuf::internal::WireFormat::VerifyUTF8String( this->key().data(), this->key().length(), ::google::protobuf::internal::WireFormat::SERIALIZE); ::google::protobuf::internal::WireFormatLite::WriteString( 1, this->key(), output); } - + // required string value = 2; - if (_has_bit(1)) { + if (has_value()) { ::google::protobuf::internal::WireFormat::VerifyUTF8String( this->value().data(), this->value().length(), ::google::protobuf::internal::WireFormat::SERIALIZE); ::google::protobuf::internal::WireFormatLite::WriteString( 2, this->value(), output); } - + if (!unknown_fields().empty()) { ::google::protobuf::internal::WireFormat::SerializeUnknownFields( unknown_fields(), output); @@ -3791,7 +3802,7 @@ void KeyValuePair::SerializeWithCachedSizes( ::google::protobuf::uint8* KeyValuePair::SerializeWithCachedSizesToArray( ::google::protobuf::uint8* target) const { // required string key = 1; - if (_has_bit(0)) { + if (has_key()) { ::google::protobuf::internal::WireFormat::VerifyUTF8String( this->key().data(), this->key().length(), ::google::protobuf::internal::WireFormat::SERIALIZE); @@ -3799,9 +3810,9 @@ void KeyValuePair::SerializeWithCachedSizes( ::google::protobuf::internal::WireFormatLite::WriteStringToArray( 1, this->key(), target); } - + // required string value = 2; - if (_has_bit(1)) { + if (has_value()) { ::google::protobuf::internal::WireFormat::VerifyUTF8String( this->value().data(), this->value().length(), ::google::protobuf::internal::WireFormat::SERIALIZE); @@ -3809,7 +3820,7 @@ void KeyValuePair::SerializeWithCachedSizes( ::google::protobuf::internal::WireFormatLite::WriteStringToArray( 2, this->value(), target); } - + if (!unknown_fields().empty()) { target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray( unknown_fields(), target); @@ -3819,7 +3830,7 @@ void KeyValuePair::SerializeWithCachedSizes( int KeyValuePair::ByteSize() const { int total_size = 0; - + if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) { // required string key = 1; if (has_key()) { @@ -3827,14 +3838,14 @@ int KeyValuePair::ByteSize() const { ::google::protobuf::internal::WireFormatLite::StringSize( this->key()); } - + // required string value = 2; if (has_value()) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::StringSize( this->value()); } - + } if (!unknown_fields().empty()) { total_size += @@ -3862,10 +3873,10 @@ void KeyValuePair::MergeFrom(const ::google::protobuf::Message& from) { void KeyValuePair::MergeFrom(const KeyValuePair& from) { GOOGLE_CHECK_NE(&from, this); if (from._has_bits_[0 / 32] & (0xffu << (0 % 32))) { - if (from._has_bit(0)) { + if (from.has_key()) { set_key(from.key()); } - if (from._has_bit(1)) { + if (from.has_value()) { set_value(from.value()); } } @@ -3886,7 +3897,7 @@ void KeyValuePair::CopyFrom(const KeyValuePair& from) { bool KeyValuePair::IsInitialized() const { if ((_has_bits_[0] & 0x00000003) != 0x00000003) return false; - + return true; } diff --git a/cpp/generated/xtreemfs/GlobalTypes.pb.h b/cpp/generated/xtreemfs/GlobalTypes.pb.h index 5476d9241..508721242 100644 --- a/cpp/generated/xtreemfs/GlobalTypes.pb.h +++ b/cpp/generated/xtreemfs/GlobalTypes.pb.h @@ -8,21 +8,23 @@ #include -#if GOOGLE_PROTOBUF_VERSION < 2003000 +#if GOOGLE_PROTOBUF_VERSION < 2005000 #error This file was generated by a newer version of protoc which is #error incompatible with your Protocol Buffer headers. Please update #error your headers. #endif -#if 2003000 < GOOGLE_PROTOBUF_MIN_PROTOC_VERSION +#if 2005000 < GOOGLE_PROTOBUF_MIN_PROTOC_VERSION #error This file was generated by an older version of protoc which is #error incompatible with your Protocol Buffer headers. Please #error regenerate this file with a newer version of protoc. #endif #include +#include #include #include -#include +#include +#include #include "include/PBRPC.pb.h" #include "include/Common.pb.h" // @@protoc_insertion_point(includes) @@ -270,29 +272,29 @@ class NewFileSize : public ::google::protobuf::Message { public: NewFileSize(); virtual ~NewFileSize(); - + NewFileSize(const NewFileSize& from); - + inline NewFileSize& operator=(const NewFileSize& from) { CopyFrom(from); return *this; } - + inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const { return _unknown_fields_; } - + inline ::google::protobuf::UnknownFieldSet* mutable_unknown_fields() { return &_unknown_fields_; } - + static const ::google::protobuf::Descriptor* descriptor(); static const NewFileSize& default_instance(); - + void Swap(NewFileSize* other); - + // implements Message ---------------------------------------------- - + NewFileSize* New() const; void CopyFrom(const ::google::protobuf::Message& from); void MergeFrom(const ::google::protobuf::Message& from); @@ -300,7 +302,7 @@ class NewFileSize : public ::google::protobuf::Message { void MergeFrom(const NewFileSize& from); void Clear(); bool IsInitialized() const; - + int ByteSize() const; bool MergePartialFromCodedStream( ::google::protobuf::io::CodedInputStream* input); @@ -313,51 +315,46 @@ class NewFileSize : public ::google::protobuf::Message { void SharedDtor(); void SetCachedSize(int size) const; public: - + ::google::protobuf::Metadata GetMetadata() const; - + // nested types ---------------------------------------------------- - + // accessors ------------------------------------------------------- - + // required fixed64 size_in_bytes = 1; inline bool has_size_in_bytes() const; inline void clear_size_in_bytes(); static const int kSizeInBytesFieldNumber = 1; inline ::google::protobuf::uint64 size_in_bytes() const; inline void set_size_in_bytes(::google::protobuf::uint64 value); - + // required fixed32 truncate_epoch = 2; inline bool has_truncate_epoch() const; inline void clear_truncate_epoch(); static const int kTruncateEpochFieldNumber = 2; inline ::google::protobuf::uint32 truncate_epoch() const; inline void set_truncate_epoch(::google::protobuf::uint32 value); - + // @@protoc_insertion_point(class_scope:xtreemfs.pbrpc.NewFileSize) private: + inline void set_has_size_in_bytes(); + inline void clear_has_size_in_bytes(); + inline void set_has_truncate_epoch(); + inline void clear_has_truncate_epoch(); + ::google::protobuf::UnknownFieldSet _unknown_fields_; - mutable int _cached_size_; - + ::google::protobuf::uint64 size_in_bytes_; ::google::protobuf::uint32 truncate_epoch_; + + mutable int _cached_size_; + ::google::protobuf::uint32 _has_bits_[(2 + 31) / 32]; + friend void protobuf_AddDesc_xtreemfs_2fGlobalTypes_2eproto(); friend void protobuf_AssignDesc_xtreemfs_2fGlobalTypes_2eproto(); friend void protobuf_ShutdownFile_xtreemfs_2fGlobalTypes_2eproto(); - - ::google::protobuf::uint32 _has_bits_[(2 + 31) / 32]; - - // WHY DOES & HAVE LOWER PRECEDENCE THAN != !? - inline bool _has_bit(int index) const { - return (_has_bits_[index / 32] & (1u << (index % 32))) != 0; - } - inline void _set_bit(int index) { - _has_bits_[index / 32] |= (1u << (index % 32)); - } - inline void _clear_bit(int index) { - _has_bits_[index / 32] &= ~(1u << (index % 32)); - } - + void InitAsDefaultInstance(); static NewFileSize* default_instance_; }; @@ -367,29 +364,29 @@ class StripingPolicy : public ::google::protobuf::Message { public: StripingPolicy(); virtual ~StripingPolicy(); - + StripingPolicy(const StripingPolicy& from); - + inline StripingPolicy& operator=(const StripingPolicy& from) { CopyFrom(from); return *this; } - + inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const { return _unknown_fields_; } - + inline ::google::protobuf::UnknownFieldSet* mutable_unknown_fields() { return &_unknown_fields_; } - + static const ::google::protobuf::Descriptor* descriptor(); static const StripingPolicy& default_instance(); - + void Swap(StripingPolicy* other); - + // implements Message ---------------------------------------------- - + StripingPolicy* New() const; void CopyFrom(const ::google::protobuf::Message& from); void MergeFrom(const ::google::protobuf::Message& from); @@ -397,7 +394,7 @@ class StripingPolicy : public ::google::protobuf::Message { void MergeFrom(const StripingPolicy& from); void Clear(); bool IsInitialized() const; - + int ByteSize() const; bool MergePartialFromCodedStream( ::google::protobuf::io::CodedInputStream* input); @@ -410,59 +407,56 @@ class StripingPolicy : public ::google::protobuf::Message { void SharedDtor(); void SetCachedSize(int size) const; public: - + ::google::protobuf::Metadata GetMetadata() const; - + // nested types ---------------------------------------------------- - + // accessors ------------------------------------------------------- - + // required .xtreemfs.pbrpc.StripingPolicyType type = 1; inline bool has_type() const; inline void clear_type(); static const int kTypeFieldNumber = 1; - inline xtreemfs::pbrpc::StripingPolicyType type() const; - inline void set_type(xtreemfs::pbrpc::StripingPolicyType value); - + inline ::xtreemfs::pbrpc::StripingPolicyType type() const; + inline void set_type(::xtreemfs::pbrpc::StripingPolicyType value); + // required fixed32 stripe_size = 2; inline bool has_stripe_size() const; inline void clear_stripe_size(); static const int kStripeSizeFieldNumber = 2; inline ::google::protobuf::uint32 stripe_size() const; inline void set_stripe_size(::google::protobuf::uint32 value); - + // required fixed32 width = 3; inline bool has_width() const; inline void clear_width(); static const int kWidthFieldNumber = 3; inline ::google::protobuf::uint32 width() const; inline void set_width(::google::protobuf::uint32 value); - + // @@protoc_insertion_point(class_scope:xtreemfs.pbrpc.StripingPolicy) private: + inline void set_has_type(); + inline void clear_has_type(); + inline void set_has_stripe_size(); + inline void clear_has_stripe_size(); + inline void set_has_width(); + inline void clear_has_width(); + ::google::protobuf::UnknownFieldSet _unknown_fields_; - mutable int _cached_size_; - + int type_; ::google::protobuf::uint32 stripe_size_; ::google::protobuf::uint32 width_; + + mutable int _cached_size_; + ::google::protobuf::uint32 _has_bits_[(3 + 31) / 32]; + friend void protobuf_AddDesc_xtreemfs_2fGlobalTypes_2eproto(); friend void protobuf_AssignDesc_xtreemfs_2fGlobalTypes_2eproto(); friend void protobuf_ShutdownFile_xtreemfs_2fGlobalTypes_2eproto(); - - ::google::protobuf::uint32 _has_bits_[(3 + 31) / 32]; - - // WHY DOES & HAVE LOWER PRECEDENCE THAN != !? - inline bool _has_bit(int index) const { - return (_has_bits_[index / 32] & (1u << (index % 32))) != 0; - } - inline void _set_bit(int index) { - _has_bits_[index / 32] |= (1u << (index % 32)); - } - inline void _clear_bit(int index) { - _has_bits_[index / 32] &= ~(1u << (index % 32)); - } - + void InitAsDefaultInstance(); static StripingPolicy* default_instance_; }; @@ -472,29 +466,29 @@ class Replica : public ::google::protobuf::Message { public: Replica(); virtual ~Replica(); - + Replica(const Replica& from); - + inline Replica& operator=(const Replica& from) { CopyFrom(from); return *this; } - + inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const { return _unknown_fields_; } - + inline ::google::protobuf::UnknownFieldSet* mutable_unknown_fields() { return &_unknown_fields_; } - + static const ::google::protobuf::Descriptor* descriptor(); static const Replica& default_instance(); - + void Swap(Replica* other); - + // implements Message ---------------------------------------------- - + Replica* New() const; void CopyFrom(const ::google::protobuf::Message& from); void MergeFrom(const ::google::protobuf::Message& from); @@ -502,7 +496,7 @@ class Replica : public ::google::protobuf::Message { void MergeFrom(const Replica& from); void Clear(); bool IsInitialized() const; - + int ByteSize() const; bool MergePartialFromCodedStream( ::google::protobuf::io::CodedInputStream* input); @@ -515,13 +509,13 @@ class Replica : public ::google::protobuf::Message { void SharedDtor(); void SetCachedSize(int size) const; public: - + ::google::protobuf::Metadata GetMetadata() const; - + // nested types ---------------------------------------------------- - + // accessors ------------------------------------------------------- - + // repeated string osd_uuids = 1; inline int osd_uuids_size() const; inline void clear_osd_uuids(); @@ -537,46 +531,43 @@ class Replica : public ::google::protobuf::Message { inline void add_osd_uuids(const char* value, size_t size); inline const ::google::protobuf::RepeatedPtrField< ::std::string>& osd_uuids() const; inline ::google::protobuf::RepeatedPtrField< ::std::string>* mutable_osd_uuids(); - + // required fixed32 replication_flags = 2; inline bool has_replication_flags() const; inline void clear_replication_flags(); static const int kReplicationFlagsFieldNumber = 2; inline ::google::protobuf::uint32 replication_flags() const; inline void set_replication_flags(::google::protobuf::uint32 value); - + // required .xtreemfs.pbrpc.StripingPolicy striping_policy = 3; inline bool has_striping_policy() const; inline void clear_striping_policy(); static const int kStripingPolicyFieldNumber = 3; inline const ::xtreemfs::pbrpc::StripingPolicy& striping_policy() const; inline ::xtreemfs::pbrpc::StripingPolicy* mutable_striping_policy(); - + inline ::xtreemfs::pbrpc::StripingPolicy* release_striping_policy(); + inline void set_allocated_striping_policy(::xtreemfs::pbrpc::StripingPolicy* striping_policy); + // @@protoc_insertion_point(class_scope:xtreemfs.pbrpc.Replica) private: + inline void set_has_replication_flags(); + inline void clear_has_replication_flags(); + inline void set_has_striping_policy(); + inline void clear_has_striping_policy(); + ::google::protobuf::UnknownFieldSet _unknown_fields_; - mutable int _cached_size_; - + ::google::protobuf::RepeatedPtrField< ::std::string> osd_uuids_; - ::google::protobuf::uint32 replication_flags_; ::xtreemfs::pbrpc::StripingPolicy* striping_policy_; + ::google::protobuf::uint32 replication_flags_; + + mutable int _cached_size_; + ::google::protobuf::uint32 _has_bits_[(3 + 31) / 32]; + friend void protobuf_AddDesc_xtreemfs_2fGlobalTypes_2eproto(); friend void protobuf_AssignDesc_xtreemfs_2fGlobalTypes_2eproto(); friend void protobuf_ShutdownFile_xtreemfs_2fGlobalTypes_2eproto(); - - ::google::protobuf::uint32 _has_bits_[(3 + 31) / 32]; - - // WHY DOES & HAVE LOWER PRECEDENCE THAN != !? - inline bool _has_bit(int index) const { - return (_has_bits_[index / 32] & (1u << (index % 32))) != 0; - } - inline void _set_bit(int index) { - _has_bits_[index / 32] |= (1u << (index % 32)); - } - inline void _clear_bit(int index) { - _has_bits_[index / 32] &= ~(1u << (index % 32)); - } - + void InitAsDefaultInstance(); static Replica* default_instance_; }; @@ -586,29 +577,29 @@ class Replicas : public ::google::protobuf::Message { public: Replicas(); virtual ~Replicas(); - + Replicas(const Replicas& from); - + inline Replicas& operator=(const Replicas& from) { CopyFrom(from); return *this; } - + inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const { return _unknown_fields_; } - + inline ::google::protobuf::UnknownFieldSet* mutable_unknown_fields() { return &_unknown_fields_; } - + static const ::google::protobuf::Descriptor* descriptor(); static const Replicas& default_instance(); - + void Swap(Replicas* other); - + // implements Message ---------------------------------------------- - + Replicas* New() const; void CopyFrom(const ::google::protobuf::Message& from); void MergeFrom(const ::google::protobuf::Message& from); @@ -616,7 +607,7 @@ class Replicas : public ::google::protobuf::Message { void MergeFrom(const Replicas& from); void Clear(); bool IsInitialized() const; - + int ByteSize() const; bool MergePartialFromCodedStream( ::google::protobuf::io::CodedInputStream* input); @@ -629,13 +620,13 @@ class Replicas : public ::google::protobuf::Message { void SharedDtor(); void SetCachedSize(int size) const; public: - + ::google::protobuf::Metadata GetMetadata() const; - + // nested types ---------------------------------------------------- - + // accessors ------------------------------------------------------- - + // repeated .xtreemfs.pbrpc.Replica replicas = 1; inline int replicas_size() const; inline void clear_replicas(); @@ -647,30 +638,21 @@ class Replicas : public ::google::protobuf::Message { replicas() const; inline ::google::protobuf::RepeatedPtrField< ::xtreemfs::pbrpc::Replica >* mutable_replicas(); - + // @@protoc_insertion_point(class_scope:xtreemfs.pbrpc.Replicas) private: + ::google::protobuf::UnknownFieldSet _unknown_fields_; - mutable int _cached_size_; - + ::google::protobuf::RepeatedPtrField< ::xtreemfs::pbrpc::Replica > replicas_; + + mutable int _cached_size_; + ::google::protobuf::uint32 _has_bits_[(1 + 31) / 32]; + friend void protobuf_AddDesc_xtreemfs_2fGlobalTypes_2eproto(); friend void protobuf_AssignDesc_xtreemfs_2fGlobalTypes_2eproto(); friend void protobuf_ShutdownFile_xtreemfs_2fGlobalTypes_2eproto(); - - ::google::protobuf::uint32 _has_bits_[(1 + 31) / 32]; - - // WHY DOES & HAVE LOWER PRECEDENCE THAN != !? - inline bool _has_bit(int index) const { - return (_has_bits_[index / 32] & (1u << (index % 32))) != 0; - } - inline void _set_bit(int index) { - _has_bits_[index / 32] |= (1u << (index % 32)); - } - inline void _clear_bit(int index) { - _has_bits_[index / 32] &= ~(1u << (index % 32)); - } - + void InitAsDefaultInstance(); static Replicas* default_instance_; }; @@ -680,29 +662,29 @@ class XCap : public ::google::protobuf::Message { public: XCap(); virtual ~XCap(); - + XCap(const XCap& from); - + inline XCap& operator=(const XCap& from) { CopyFrom(from); return *this; } - + inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const { return _unknown_fields_; } - + inline ::google::protobuf::UnknownFieldSet* mutable_unknown_fields() { return &_unknown_fields_; } - + static const ::google::protobuf::Descriptor* descriptor(); static const XCap& default_instance(); - + void Swap(XCap* other); - + // implements Message ---------------------------------------------- - + XCap* New() const; void CopyFrom(const ::google::protobuf::Message& from); void MergeFrom(const ::google::protobuf::Message& from); @@ -710,7 +692,7 @@ class XCap : public ::google::protobuf::Message { void MergeFrom(const XCap& from); void Clear(); bool IsInitialized() const; - + int ByteSize() const; bool MergePartialFromCodedStream( ::google::protobuf::io::CodedInputStream* input); @@ -723,20 +705,20 @@ class XCap : public ::google::protobuf::Message { void SharedDtor(); void SetCachedSize(int size) const; public: - + ::google::protobuf::Metadata GetMetadata() const; - + // nested types ---------------------------------------------------- - + // accessors ------------------------------------------------------- - + // required fixed32 access_mode = 1; inline bool has_access_mode() const; inline void clear_access_mode(); static const int kAccessModeFieldNumber = 1; inline ::google::protobuf::uint32 access_mode() const; inline void set_access_mode(::google::protobuf::uint32 value); - + // required string client_identity = 2; inline bool has_client_identity() const; inline void clear_client_identity(); @@ -746,21 +728,23 @@ class XCap : public ::google::protobuf::Message { inline void set_client_identity(const char* value); inline void set_client_identity(const char* value, size_t size); inline ::std::string* mutable_client_identity(); - + inline ::std::string* release_client_identity(); + inline void set_allocated_client_identity(::std::string* client_identity); + // required fixed64 expire_time_s = 3; inline bool has_expire_time_s() const; inline void clear_expire_time_s(); static const int kExpireTimeSFieldNumber = 3; inline ::google::protobuf::uint64 expire_time_s() const; inline void set_expire_time_s(::google::protobuf::uint64 value); - + // required fixed32 expire_timeout_s = 4; inline bool has_expire_timeout_s() const; inline void clear_expire_timeout_s(); static const int kExpireTimeoutSFieldNumber = 4; inline ::google::protobuf::uint32 expire_timeout_s() const; inline void set_expire_timeout_s(::google::protobuf::uint32 value); - + // required string file_id = 5; inline bool has_file_id() const; inline void clear_file_id(); @@ -770,14 +754,16 @@ class XCap : public ::google::protobuf::Message { inline void set_file_id(const char* value); inline void set_file_id(const char* value, size_t size); inline ::std::string* mutable_file_id(); - + inline ::std::string* release_file_id(); + inline void set_allocated_file_id(::std::string* file_id); + // required bool replicate_on_close = 6; inline bool has_replicate_on_close() const; inline void clear_replicate_on_close(); static const int kReplicateOnCloseFieldNumber = 6; inline bool replicate_on_close() const; inline void set_replicate_on_close(bool value); - + // required string server_signature = 7; inline bool has_server_signature() const; inline void clear_server_signature(); @@ -787,63 +773,73 @@ class XCap : public ::google::protobuf::Message { inline void set_server_signature(const char* value); inline void set_server_signature(const char* value, size_t size); inline ::std::string* mutable_server_signature(); - + inline ::std::string* release_server_signature(); + inline void set_allocated_server_signature(::std::string* server_signature); + // required fixed32 truncate_epoch = 8; inline bool has_truncate_epoch() const; inline void clear_truncate_epoch(); static const int kTruncateEpochFieldNumber = 8; inline ::google::protobuf::uint32 truncate_epoch() const; inline void set_truncate_epoch(::google::protobuf::uint32 value); - + // required .xtreemfs.pbrpc.SnapConfig snap_config = 9; inline bool has_snap_config() const; inline void clear_snap_config(); static const int kSnapConfigFieldNumber = 9; - inline xtreemfs::pbrpc::SnapConfig snap_config() const; - inline void set_snap_config(xtreemfs::pbrpc::SnapConfig value); - + inline ::xtreemfs::pbrpc::SnapConfig snap_config() const; + inline void set_snap_config(::xtreemfs::pbrpc::SnapConfig value); + // required fixed64 snap_timestamp = 10; inline bool has_snap_timestamp() const; inline void clear_snap_timestamp(); static const int kSnapTimestampFieldNumber = 10; inline ::google::protobuf::uint64 snap_timestamp() const; inline void set_snap_timestamp(::google::protobuf::uint64 value); - + // @@protoc_insertion_point(class_scope:xtreemfs.pbrpc.XCap) private: + inline void set_has_access_mode(); + inline void clear_has_access_mode(); + inline void set_has_client_identity(); + inline void clear_has_client_identity(); + inline void set_has_expire_time_s(); + inline void clear_has_expire_time_s(); + inline void set_has_expire_timeout_s(); + inline void clear_has_expire_timeout_s(); + inline void set_has_file_id(); + inline void clear_has_file_id(); + inline void set_has_replicate_on_close(); + inline void clear_has_replicate_on_close(); + inline void set_has_server_signature(); + inline void clear_has_server_signature(); + inline void set_has_truncate_epoch(); + inline void clear_has_truncate_epoch(); + inline void set_has_snap_config(); + inline void clear_has_snap_config(); + inline void set_has_snap_timestamp(); + inline void clear_has_snap_timestamp(); + ::google::protobuf::UnknownFieldSet _unknown_fields_; - mutable int _cached_size_; - - ::google::protobuf::uint32 access_mode_; + ::std::string* client_identity_; - static const ::std::string _default_client_identity_; - ::google::protobuf::uint64 expire_time_s_; + ::google::protobuf::uint32 access_mode_; ::google::protobuf::uint32 expire_timeout_s_; + ::google::protobuf::uint64 expire_time_s_; ::std::string* file_id_; - static const ::std::string _default_file_id_; - bool replicate_on_close_; ::std::string* server_signature_; - static const ::std::string _default_server_signature_; + bool replicate_on_close_; ::google::protobuf::uint32 truncate_epoch_; - int snap_config_; ::google::protobuf::uint64 snap_timestamp_; + int snap_config_; + + mutable int _cached_size_; + ::google::protobuf::uint32 _has_bits_[(10 + 31) / 32]; + friend void protobuf_AddDesc_xtreemfs_2fGlobalTypes_2eproto(); friend void protobuf_AssignDesc_xtreemfs_2fGlobalTypes_2eproto(); friend void protobuf_ShutdownFile_xtreemfs_2fGlobalTypes_2eproto(); - - ::google::protobuf::uint32 _has_bits_[(10 + 31) / 32]; - - // WHY DOES & HAVE LOWER PRECEDENCE THAN != !? - inline bool _has_bit(int index) const { - return (_has_bits_[index / 32] & (1u << (index % 32))) != 0; - } - inline void _set_bit(int index) { - _has_bits_[index / 32] |= (1u << (index % 32)); - } - inline void _clear_bit(int index) { - _has_bits_[index / 32] &= ~(1u << (index % 32)); - } - + void InitAsDefaultInstance(); static XCap* default_instance_; }; @@ -853,29 +849,29 @@ class XLocSet : public ::google::protobuf::Message { public: XLocSet(); virtual ~XLocSet(); - + XLocSet(const XLocSet& from); - + inline XLocSet& operator=(const XLocSet& from) { CopyFrom(from); return *this; } - + inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const { return _unknown_fields_; } - + inline ::google::protobuf::UnknownFieldSet* mutable_unknown_fields() { return &_unknown_fields_; } - + static const ::google::protobuf::Descriptor* descriptor(); static const XLocSet& default_instance(); - + void Swap(XLocSet* other); - + // implements Message ---------------------------------------------- - + XLocSet* New() const; void CopyFrom(const ::google::protobuf::Message& from); void MergeFrom(const ::google::protobuf::Message& from); @@ -883,7 +879,7 @@ class XLocSet : public ::google::protobuf::Message { void MergeFrom(const XLocSet& from); void Clear(); bool IsInitialized() const; - + int ByteSize() const; bool MergePartialFromCodedStream( ::google::protobuf::io::CodedInputStream* input); @@ -896,20 +892,20 @@ class XLocSet : public ::google::protobuf::Message { void SharedDtor(); void SetCachedSize(int size) const; public: - + ::google::protobuf::Metadata GetMetadata() const; - + // nested types ---------------------------------------------------- - + // accessors ------------------------------------------------------- - + // required fixed64 read_only_file_size = 1; inline bool has_read_only_file_size() const; inline void clear_read_only_file_size(); static const int kReadOnlyFileSizeFieldNumber = 1; inline ::google::protobuf::uint64 read_only_file_size() const; inline void set_read_only_file_size(::google::protobuf::uint64 value); - + // repeated .xtreemfs.pbrpc.Replica replicas = 2; inline int replicas_size() const; inline void clear_replicas(); @@ -921,7 +917,7 @@ class XLocSet : public ::google::protobuf::Message { replicas() const; inline ::google::protobuf::RepeatedPtrField< ::xtreemfs::pbrpc::Replica >* mutable_replicas(); - + // required string replica_update_policy = 3; inline bool has_replica_update_policy() const; inline void clear_replica_update_policy(); @@ -931,41 +927,39 @@ class XLocSet : public ::google::protobuf::Message { inline void set_replica_update_policy(const char* value); inline void set_replica_update_policy(const char* value, size_t size); inline ::std::string* mutable_replica_update_policy(); - + inline ::std::string* release_replica_update_policy(); + inline void set_allocated_replica_update_policy(::std::string* replica_update_policy); + // required fixed32 version = 4; inline bool has_version() const; inline void clear_version(); static const int kVersionFieldNumber = 4; inline ::google::protobuf::uint32 version() const; inline void set_version(::google::protobuf::uint32 value); - + // @@protoc_insertion_point(class_scope:xtreemfs.pbrpc.XLocSet) private: + inline void set_has_read_only_file_size(); + inline void clear_has_read_only_file_size(); + inline void set_has_replica_update_policy(); + inline void clear_has_replica_update_policy(); + inline void set_has_version(); + inline void clear_has_version(); + ::google::protobuf::UnknownFieldSet _unknown_fields_; - mutable int _cached_size_; - + ::google::protobuf::uint64 read_only_file_size_; ::google::protobuf::RepeatedPtrField< ::xtreemfs::pbrpc::Replica > replicas_; ::std::string* replica_update_policy_; - static const ::std::string _default_replica_update_policy_; ::google::protobuf::uint32 version_; + + mutable int _cached_size_; + ::google::protobuf::uint32 _has_bits_[(4 + 31) / 32]; + friend void protobuf_AddDesc_xtreemfs_2fGlobalTypes_2eproto(); friend void protobuf_AssignDesc_xtreemfs_2fGlobalTypes_2eproto(); friend void protobuf_ShutdownFile_xtreemfs_2fGlobalTypes_2eproto(); - - ::google::protobuf::uint32 _has_bits_[(4 + 31) / 32]; - - // WHY DOES & HAVE LOWER PRECEDENCE THAN != !? - inline bool _has_bit(int index) const { - return (_has_bits_[index / 32] & (1u << (index % 32))) != 0; - } - inline void _set_bit(int index) { - _has_bits_[index / 32] |= (1u << (index % 32)); - } - inline void _clear_bit(int index) { - _has_bits_[index / 32] &= ~(1u << (index % 32)); - } - + void InitAsDefaultInstance(); static XLocSet* default_instance_; }; @@ -975,29 +969,29 @@ class FileCredentials : public ::google::protobuf::Message { public: FileCredentials(); virtual ~FileCredentials(); - + FileCredentials(const FileCredentials& from); - + inline FileCredentials& operator=(const FileCredentials& from) { CopyFrom(from); return *this; } - + inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const { return _unknown_fields_; } - + inline ::google::protobuf::UnknownFieldSet* mutable_unknown_fields() { return &_unknown_fields_; } - + static const ::google::protobuf::Descriptor* descriptor(); static const FileCredentials& default_instance(); - + void Swap(FileCredentials* other); - + // implements Message ---------------------------------------------- - + FileCredentials* New() const; void CopyFrom(const ::google::protobuf::Message& from); void MergeFrom(const ::google::protobuf::Message& from); @@ -1005,7 +999,7 @@ class FileCredentials : public ::google::protobuf::Message { void MergeFrom(const FileCredentials& from); void Clear(); bool IsInitialized() const; - + int ByteSize() const; bool MergePartialFromCodedStream( ::google::protobuf::io::CodedInputStream* input); @@ -1018,51 +1012,50 @@ class FileCredentials : public ::google::protobuf::Message { void SharedDtor(); void SetCachedSize(int size) const; public: - + ::google::protobuf::Metadata GetMetadata() const; - + // nested types ---------------------------------------------------- - + // accessors ------------------------------------------------------- - + // required .xtreemfs.pbrpc.XCap xcap = 1; inline bool has_xcap() const; inline void clear_xcap(); static const int kXcapFieldNumber = 1; inline const ::xtreemfs::pbrpc::XCap& xcap() const; inline ::xtreemfs::pbrpc::XCap* mutable_xcap(); - + inline ::xtreemfs::pbrpc::XCap* release_xcap(); + inline void set_allocated_xcap(::xtreemfs::pbrpc::XCap* xcap); + // required .xtreemfs.pbrpc.XLocSet xlocs = 2; inline bool has_xlocs() const; inline void clear_xlocs(); static const int kXlocsFieldNumber = 2; inline const ::xtreemfs::pbrpc::XLocSet& xlocs() const; inline ::xtreemfs::pbrpc::XLocSet* mutable_xlocs(); - + inline ::xtreemfs::pbrpc::XLocSet* release_xlocs(); + inline void set_allocated_xlocs(::xtreemfs::pbrpc::XLocSet* xlocs); + // @@protoc_insertion_point(class_scope:xtreemfs.pbrpc.FileCredentials) private: + inline void set_has_xcap(); + inline void clear_has_xcap(); + inline void set_has_xlocs(); + inline void clear_has_xlocs(); + ::google::protobuf::UnknownFieldSet _unknown_fields_; - mutable int _cached_size_; - + ::xtreemfs::pbrpc::XCap* xcap_; ::xtreemfs::pbrpc::XLocSet* xlocs_; + + mutable int _cached_size_; + ::google::protobuf::uint32 _has_bits_[(2 + 31) / 32]; + friend void protobuf_AddDesc_xtreemfs_2fGlobalTypes_2eproto(); friend void protobuf_AssignDesc_xtreemfs_2fGlobalTypes_2eproto(); friend void protobuf_ShutdownFile_xtreemfs_2fGlobalTypes_2eproto(); - - ::google::protobuf::uint32 _has_bits_[(2 + 31) / 32]; - - // WHY DOES & HAVE LOWER PRECEDENCE THAN != !? - inline bool _has_bit(int index) const { - return (_has_bits_[index / 32] & (1u << (index % 32))) != 0; - } - inline void _set_bit(int index) { - _has_bits_[index / 32] |= (1u << (index % 32)); - } - inline void _clear_bit(int index) { - _has_bits_[index / 32] &= ~(1u << (index % 32)); - } - + void InitAsDefaultInstance(); static FileCredentials* default_instance_; }; @@ -1072,29 +1065,29 @@ class FileCredentialsSet : public ::google::protobuf::Message { public: FileCredentialsSet(); virtual ~FileCredentialsSet(); - + FileCredentialsSet(const FileCredentialsSet& from); - + inline FileCredentialsSet& operator=(const FileCredentialsSet& from) { CopyFrom(from); return *this; } - + inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const { return _unknown_fields_; } - + inline ::google::protobuf::UnknownFieldSet* mutable_unknown_fields() { return &_unknown_fields_; } - + static const ::google::protobuf::Descriptor* descriptor(); static const FileCredentialsSet& default_instance(); - + void Swap(FileCredentialsSet* other); - + // implements Message ---------------------------------------------- - + FileCredentialsSet* New() const; void CopyFrom(const ::google::protobuf::Message& from); void MergeFrom(const ::google::protobuf::Message& from); @@ -1102,7 +1095,7 @@ class FileCredentialsSet : public ::google::protobuf::Message { void MergeFrom(const FileCredentialsSet& from); void Clear(); bool IsInitialized() const; - + int ByteSize() const; bool MergePartialFromCodedStream( ::google::protobuf::io::CodedInputStream* input); @@ -1115,43 +1108,38 @@ class FileCredentialsSet : public ::google::protobuf::Message { void SharedDtor(); void SetCachedSize(int size) const; public: - + ::google::protobuf::Metadata GetMetadata() const; - + // nested types ---------------------------------------------------- - + // accessors ------------------------------------------------------- - + // optional .xtreemfs.pbrpc.FileCredentials file_credentials = 1; inline bool has_file_credentials() const; inline void clear_file_credentials(); static const int kFileCredentialsFieldNumber = 1; inline const ::xtreemfs::pbrpc::FileCredentials& file_credentials() const; inline ::xtreemfs::pbrpc::FileCredentials* mutable_file_credentials(); - + inline ::xtreemfs::pbrpc::FileCredentials* release_file_credentials(); + inline void set_allocated_file_credentials(::xtreemfs::pbrpc::FileCredentials* file_credentials); + // @@protoc_insertion_point(class_scope:xtreemfs.pbrpc.FileCredentialsSet) private: + inline void set_has_file_credentials(); + inline void clear_has_file_credentials(); + ::google::protobuf::UnknownFieldSet _unknown_fields_; - mutable int _cached_size_; - + ::xtreemfs::pbrpc::FileCredentials* file_credentials_; + + mutable int _cached_size_; + ::google::protobuf::uint32 _has_bits_[(1 + 31) / 32]; + friend void protobuf_AddDesc_xtreemfs_2fGlobalTypes_2eproto(); friend void protobuf_AssignDesc_xtreemfs_2fGlobalTypes_2eproto(); friend void protobuf_ShutdownFile_xtreemfs_2fGlobalTypes_2eproto(); - - ::google::protobuf::uint32 _has_bits_[(1 + 31) / 32]; - - // WHY DOES & HAVE LOWER PRECEDENCE THAN != !? - inline bool _has_bit(int index) const { - return (_has_bits_[index / 32] & (1u << (index % 32))) != 0; - } - inline void _set_bit(int index) { - _has_bits_[index / 32] |= (1u << (index % 32)); - } - inline void _clear_bit(int index) { - _has_bits_[index / 32] &= ~(1u << (index % 32)); - } - + void InitAsDefaultInstance(); static FileCredentialsSet* default_instance_; }; @@ -1161,29 +1149,29 @@ class VivaldiCoordinates : public ::google::protobuf::Message { public: VivaldiCoordinates(); virtual ~VivaldiCoordinates(); - + VivaldiCoordinates(const VivaldiCoordinates& from); - + inline VivaldiCoordinates& operator=(const VivaldiCoordinates& from) { CopyFrom(from); return *this; } - + inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const { return _unknown_fields_; } - + inline ::google::protobuf::UnknownFieldSet* mutable_unknown_fields() { return &_unknown_fields_; } - + static const ::google::protobuf::Descriptor* descriptor(); static const VivaldiCoordinates& default_instance(); - + void Swap(VivaldiCoordinates* other); - + // implements Message ---------------------------------------------- - + VivaldiCoordinates* New() const; void CopyFrom(const ::google::protobuf::Message& from); void MergeFrom(const ::google::protobuf::Message& from); @@ -1191,7 +1179,7 @@ class VivaldiCoordinates : public ::google::protobuf::Message { void MergeFrom(const VivaldiCoordinates& from); void Clear(); bool IsInitialized() const; - + int ByteSize() const; bool MergePartialFromCodedStream( ::google::protobuf::io::CodedInputStream* input); @@ -1204,59 +1192,56 @@ class VivaldiCoordinates : public ::google::protobuf::Message { void SharedDtor(); void SetCachedSize(int size) const; public: - + ::google::protobuf::Metadata GetMetadata() const; - + // nested types ---------------------------------------------------- - + // accessors ------------------------------------------------------- - + // required double x_coordinate = 1; inline bool has_x_coordinate() const; inline void clear_x_coordinate(); static const int kXCoordinateFieldNumber = 1; inline double x_coordinate() const; inline void set_x_coordinate(double value); - + // required double y_coordinate = 2; inline bool has_y_coordinate() const; inline void clear_y_coordinate(); static const int kYCoordinateFieldNumber = 2; inline double y_coordinate() const; inline void set_y_coordinate(double value); - + // required double local_error = 3; inline bool has_local_error() const; inline void clear_local_error(); static const int kLocalErrorFieldNumber = 3; inline double local_error() const; inline void set_local_error(double value); - + // @@protoc_insertion_point(class_scope:xtreemfs.pbrpc.VivaldiCoordinates) private: + inline void set_has_x_coordinate(); + inline void clear_has_x_coordinate(); + inline void set_has_y_coordinate(); + inline void clear_has_y_coordinate(); + inline void set_has_local_error(); + inline void clear_has_local_error(); + ::google::protobuf::UnknownFieldSet _unknown_fields_; - mutable int _cached_size_; - + double x_coordinate_; double y_coordinate_; double local_error_; + + mutable int _cached_size_; + ::google::protobuf::uint32 _has_bits_[(3 + 31) / 32]; + friend void protobuf_AddDesc_xtreemfs_2fGlobalTypes_2eproto(); friend void protobuf_AssignDesc_xtreemfs_2fGlobalTypes_2eproto(); friend void protobuf_ShutdownFile_xtreemfs_2fGlobalTypes_2eproto(); - - ::google::protobuf::uint32 _has_bits_[(3 + 31) / 32]; - - // WHY DOES & HAVE LOWER PRECEDENCE THAN != !? - inline bool _has_bit(int index) const { - return (_has_bits_[index / 32] & (1u << (index % 32))) != 0; - } - inline void _set_bit(int index) { - _has_bits_[index / 32] |= (1u << (index % 32)); - } - inline void _clear_bit(int index) { - _has_bits_[index / 32] &= ~(1u << (index % 32)); - } - + void InitAsDefaultInstance(); static VivaldiCoordinates* default_instance_; }; @@ -1266,29 +1251,29 @@ class OSDWriteResponse : public ::google::protobuf::Message { public: OSDWriteResponse(); virtual ~OSDWriteResponse(); - + OSDWriteResponse(const OSDWriteResponse& from); - + inline OSDWriteResponse& operator=(const OSDWriteResponse& from) { CopyFrom(from); return *this; } - + inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const { return _unknown_fields_; } - + inline ::google::protobuf::UnknownFieldSet* mutable_unknown_fields() { return &_unknown_fields_; } - + static const ::google::protobuf::Descriptor* descriptor(); static const OSDWriteResponse& default_instance(); - + void Swap(OSDWriteResponse* other); - + // implements Message ---------------------------------------------- - + OSDWriteResponse* New() const; void CopyFrom(const ::google::protobuf::Message& from); void MergeFrom(const ::google::protobuf::Message& from); @@ -1296,7 +1281,7 @@ class OSDWriteResponse : public ::google::protobuf::Message { void MergeFrom(const OSDWriteResponse& from); void Clear(); bool IsInitialized() const; - + int ByteSize() const; bool MergePartialFromCodedStream( ::google::protobuf::io::CodedInputStream* input); @@ -1309,51 +1294,46 @@ class OSDWriteResponse : public ::google::protobuf::Message { void SharedDtor(); void SetCachedSize(int size) const; public: - + ::google::protobuf::Metadata GetMetadata() const; - + // nested types ---------------------------------------------------- - + // accessors ------------------------------------------------------- - + // optional fixed64 size_in_bytes = 1; inline bool has_size_in_bytes() const; inline void clear_size_in_bytes(); static const int kSizeInBytesFieldNumber = 1; inline ::google::protobuf::uint64 size_in_bytes() const; inline void set_size_in_bytes(::google::protobuf::uint64 value); - + // optional fixed32 truncate_epoch = 2; inline bool has_truncate_epoch() const; inline void clear_truncate_epoch(); static const int kTruncateEpochFieldNumber = 2; inline ::google::protobuf::uint32 truncate_epoch() const; inline void set_truncate_epoch(::google::protobuf::uint32 value); - + // @@protoc_insertion_point(class_scope:xtreemfs.pbrpc.OSDWriteResponse) private: + inline void set_has_size_in_bytes(); + inline void clear_has_size_in_bytes(); + inline void set_has_truncate_epoch(); + inline void clear_has_truncate_epoch(); + ::google::protobuf::UnknownFieldSet _unknown_fields_; - mutable int _cached_size_; - + ::google::protobuf::uint64 size_in_bytes_; ::google::protobuf::uint32 truncate_epoch_; + + mutable int _cached_size_; + ::google::protobuf::uint32 _has_bits_[(2 + 31) / 32]; + friend void protobuf_AddDesc_xtreemfs_2fGlobalTypes_2eproto(); friend void protobuf_AssignDesc_xtreemfs_2fGlobalTypes_2eproto(); friend void protobuf_ShutdownFile_xtreemfs_2fGlobalTypes_2eproto(); - - ::google::protobuf::uint32 _has_bits_[(2 + 31) / 32]; - - // WHY DOES & HAVE LOWER PRECEDENCE THAN != !? - inline bool _has_bit(int index) const { - return (_has_bits_[index / 32] & (1u << (index % 32))) != 0; - } - inline void _set_bit(int index) { - _has_bits_[index / 32] |= (1u << (index % 32)); - } - inline void _clear_bit(int index) { - _has_bits_[index / 32] &= ~(1u << (index % 32)); - } - + void InitAsDefaultInstance(); static OSDWriteResponse* default_instance_; }; @@ -1363,29 +1343,29 @@ class KeyValuePair : public ::google::protobuf::Message { public: KeyValuePair(); virtual ~KeyValuePair(); - + KeyValuePair(const KeyValuePair& from); - + inline KeyValuePair& operator=(const KeyValuePair& from) { CopyFrom(from); return *this; } - + inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const { return _unknown_fields_; } - + inline ::google::protobuf::UnknownFieldSet* mutable_unknown_fields() { return &_unknown_fields_; } - + static const ::google::protobuf::Descriptor* descriptor(); static const KeyValuePair& default_instance(); - + void Swap(KeyValuePair* other); - + // implements Message ---------------------------------------------- - + KeyValuePair* New() const; void CopyFrom(const ::google::protobuf::Message& from); void MergeFrom(const ::google::protobuf::Message& from); @@ -1393,7 +1373,7 @@ class KeyValuePair : public ::google::protobuf::Message { void MergeFrom(const KeyValuePair& from); void Clear(); bool IsInitialized() const; - + int ByteSize() const; bool MergePartialFromCodedStream( ::google::protobuf::io::CodedInputStream* input); @@ -1406,13 +1386,13 @@ class KeyValuePair : public ::google::protobuf::Message { void SharedDtor(); void SetCachedSize(int size) const; public: - + ::google::protobuf::Metadata GetMetadata() const; - + // nested types ---------------------------------------------------- - + // accessors ------------------------------------------------------- - + // required string key = 1; inline bool has_key() const; inline void clear_key(); @@ -1422,7 +1402,9 @@ class KeyValuePair : public ::google::protobuf::Message { inline void set_key(const char* value); inline void set_key(const char* value, size_t size); inline ::std::string* mutable_key(); - + inline ::std::string* release_key(); + inline void set_allocated_key(::std::string* key); + // required string value = 2; inline bool has_value() const; inline void clear_value(); @@ -1432,33 +1414,28 @@ class KeyValuePair : public ::google::protobuf::Message { inline void set_value(const char* value); inline void set_value(const char* value, size_t size); inline ::std::string* mutable_value(); - + inline ::std::string* release_value(); + inline void set_allocated_value(::std::string* value); + // @@protoc_insertion_point(class_scope:xtreemfs.pbrpc.KeyValuePair) private: + inline void set_has_key(); + inline void clear_has_key(); + inline void set_has_value(); + inline void clear_has_value(); + ::google::protobuf::UnknownFieldSet _unknown_fields_; - mutable int _cached_size_; - + ::std::string* key_; - static const ::std::string _default_key_; ::std::string* value_; - static const ::std::string _default_value_; + + mutable int _cached_size_; + ::google::protobuf::uint32 _has_bits_[(2 + 31) / 32]; + friend void protobuf_AddDesc_xtreemfs_2fGlobalTypes_2eproto(); friend void protobuf_AssignDesc_xtreemfs_2fGlobalTypes_2eproto(); friend void protobuf_ShutdownFile_xtreemfs_2fGlobalTypes_2eproto(); - - ::google::protobuf::uint32 _has_bits_[(2 + 31) / 32]; - - // WHY DOES & HAVE LOWER PRECEDENCE THAN != !? - inline bool _has_bit(int index) const { - return (_has_bits_[index / 32] & (1u << (index % 32))) != 0; - } - inline void _set_bit(int index) { - _has_bits_[index / 32] |= (1u << (index % 32)); - } - inline void _clear_bit(int index) { - _has_bits_[index / 32] &= ~(1u << (index % 32)); - } - + void InitAsDefaultInstance(); static KeyValuePair* default_instance_; }; @@ -1471,33 +1448,45 @@ class KeyValuePair : public ::google::protobuf::Message { // required fixed64 size_in_bytes = 1; inline bool NewFileSize::has_size_in_bytes() const { - return _has_bit(0); + return (_has_bits_[0] & 0x00000001u) != 0; +} +inline void NewFileSize::set_has_size_in_bytes() { + _has_bits_[0] |= 0x00000001u; +} +inline void NewFileSize::clear_has_size_in_bytes() { + _has_bits_[0] &= ~0x00000001u; } inline void NewFileSize::clear_size_in_bytes() { size_in_bytes_ = GOOGLE_ULONGLONG(0); - _clear_bit(0); + clear_has_size_in_bytes(); } inline ::google::protobuf::uint64 NewFileSize::size_in_bytes() const { return size_in_bytes_; } inline void NewFileSize::set_size_in_bytes(::google::protobuf::uint64 value) { - _set_bit(0); + set_has_size_in_bytes(); size_in_bytes_ = value; } // required fixed32 truncate_epoch = 2; inline bool NewFileSize::has_truncate_epoch() const { - return _has_bit(1); + return (_has_bits_[0] & 0x00000002u) != 0; +} +inline void NewFileSize::set_has_truncate_epoch() { + _has_bits_[0] |= 0x00000002u; +} +inline void NewFileSize::clear_has_truncate_epoch() { + _has_bits_[0] &= ~0x00000002u; } inline void NewFileSize::clear_truncate_epoch() { truncate_epoch_ = 0u; - _clear_bit(1); + clear_has_truncate_epoch(); } inline ::google::protobuf::uint32 NewFileSize::truncate_epoch() const { return truncate_epoch_; } inline void NewFileSize::set_truncate_epoch(::google::protobuf::uint32 value) { - _set_bit(1); + set_has_truncate_epoch(); truncate_epoch_ = value; } @@ -1507,50 +1496,68 @@ inline void NewFileSize::set_truncate_epoch(::google::protobuf::uint32 value) { // required .xtreemfs.pbrpc.StripingPolicyType type = 1; inline bool StripingPolicy::has_type() const { - return _has_bit(0); + return (_has_bits_[0] & 0x00000001u) != 0; +} +inline void StripingPolicy::set_has_type() { + _has_bits_[0] |= 0x00000001u; +} +inline void StripingPolicy::clear_has_type() { + _has_bits_[0] &= ~0x00000001u; } inline void StripingPolicy::clear_type() { type_ = 0; - _clear_bit(0); + clear_has_type(); } -inline xtreemfs::pbrpc::StripingPolicyType StripingPolicy::type() const { - return static_cast< xtreemfs::pbrpc::StripingPolicyType >(type_); +inline ::xtreemfs::pbrpc::StripingPolicyType StripingPolicy::type() const { + return static_cast< ::xtreemfs::pbrpc::StripingPolicyType >(type_); } -inline void StripingPolicy::set_type(xtreemfs::pbrpc::StripingPolicyType value) { - GOOGLE_DCHECK(xtreemfs::pbrpc::StripingPolicyType_IsValid(value)); - _set_bit(0); +inline void StripingPolicy::set_type(::xtreemfs::pbrpc::StripingPolicyType value) { + assert(::xtreemfs::pbrpc::StripingPolicyType_IsValid(value)); + set_has_type(); type_ = value; } // required fixed32 stripe_size = 2; inline bool StripingPolicy::has_stripe_size() const { - return _has_bit(1); + return (_has_bits_[0] & 0x00000002u) != 0; +} +inline void StripingPolicy::set_has_stripe_size() { + _has_bits_[0] |= 0x00000002u; +} +inline void StripingPolicy::clear_has_stripe_size() { + _has_bits_[0] &= ~0x00000002u; } inline void StripingPolicy::clear_stripe_size() { stripe_size_ = 0u; - _clear_bit(1); + clear_has_stripe_size(); } inline ::google::protobuf::uint32 StripingPolicy::stripe_size() const { return stripe_size_; } inline void StripingPolicy::set_stripe_size(::google::protobuf::uint32 value) { - _set_bit(1); + set_has_stripe_size(); stripe_size_ = value; } // required fixed32 width = 3; inline bool StripingPolicy::has_width() const { - return _has_bit(2); + return (_has_bits_[0] & 0x00000004u) != 0; +} +inline void StripingPolicy::set_has_width() { + _has_bits_[0] |= 0x00000004u; +} +inline void StripingPolicy::clear_has_width() { + _has_bits_[0] &= ~0x00000004u; } inline void StripingPolicy::clear_width() { width_ = 0u; - _clear_bit(2); + clear_has_width(); } inline ::google::protobuf::uint32 StripingPolicy::width() const { return width_; } inline void StripingPolicy::set_width(::google::protobuf::uint32 value) { - _set_bit(2); + set_has_width(); width_ = value; } @@ -1604,36 +1611,63 @@ Replica::mutable_osd_uuids() { // required fixed32 replication_flags = 2; inline bool Replica::has_replication_flags() const { - return _has_bit(1); + return (_has_bits_[0] & 0x00000002u) != 0; +} +inline void Replica::set_has_replication_flags() { + _has_bits_[0] |= 0x00000002u; +} +inline void Replica::clear_has_replication_flags() { + _has_bits_[0] &= ~0x00000002u; } inline void Replica::clear_replication_flags() { replication_flags_ = 0u; - _clear_bit(1); + clear_has_replication_flags(); } inline ::google::protobuf::uint32 Replica::replication_flags() const { return replication_flags_; } inline void Replica::set_replication_flags(::google::protobuf::uint32 value) { - _set_bit(1); + set_has_replication_flags(); replication_flags_ = value; } // required .xtreemfs.pbrpc.StripingPolicy striping_policy = 3; inline bool Replica::has_striping_policy() const { - return _has_bit(2); + return (_has_bits_[0] & 0x00000004u) != 0; +} +inline void Replica::set_has_striping_policy() { + _has_bits_[0] |= 0x00000004u; +} +inline void Replica::clear_has_striping_policy() { + _has_bits_[0] &= ~0x00000004u; } inline void Replica::clear_striping_policy() { if (striping_policy_ != NULL) striping_policy_->::xtreemfs::pbrpc::StripingPolicy::Clear(); - _clear_bit(2); + clear_has_striping_policy(); } inline const ::xtreemfs::pbrpc::StripingPolicy& Replica::striping_policy() const { return striping_policy_ != NULL ? *striping_policy_ : *default_instance_->striping_policy_; } inline ::xtreemfs::pbrpc::StripingPolicy* Replica::mutable_striping_policy() { - _set_bit(2); + set_has_striping_policy(); if (striping_policy_ == NULL) striping_policy_ = new ::xtreemfs::pbrpc::StripingPolicy; return striping_policy_; } +inline ::xtreemfs::pbrpc::StripingPolicy* Replica::release_striping_policy() { + clear_has_striping_policy(); + ::xtreemfs::pbrpc::StripingPolicy* temp = striping_policy_; + striping_policy_ = NULL; + return temp; +} +inline void Replica::set_allocated_striping_policy(::xtreemfs::pbrpc::StripingPolicy* striping_policy) { + delete striping_policy_; + striping_policy_ = striping_policy; + if (striping_policy) { + set_has_striping_policy(); + } else { + clear_has_striping_policy(); + } +} // ------------------------------------------------------------------- @@ -1670,240 +1704,366 @@ Replicas::mutable_replicas() { // required fixed32 access_mode = 1; inline bool XCap::has_access_mode() const { - return _has_bit(0); + return (_has_bits_[0] & 0x00000001u) != 0; +} +inline void XCap::set_has_access_mode() { + _has_bits_[0] |= 0x00000001u; +} +inline void XCap::clear_has_access_mode() { + _has_bits_[0] &= ~0x00000001u; } inline void XCap::clear_access_mode() { access_mode_ = 0u; - _clear_bit(0); + clear_has_access_mode(); } inline ::google::protobuf::uint32 XCap::access_mode() const { return access_mode_; } inline void XCap::set_access_mode(::google::protobuf::uint32 value) { - _set_bit(0); + set_has_access_mode(); access_mode_ = value; } // required string client_identity = 2; inline bool XCap::has_client_identity() const { - return _has_bit(1); + return (_has_bits_[0] & 0x00000002u) != 0; +} +inline void XCap::set_has_client_identity() { + _has_bits_[0] |= 0x00000002u; +} +inline void XCap::clear_has_client_identity() { + _has_bits_[0] &= ~0x00000002u; } inline void XCap::clear_client_identity() { - if (client_identity_ != &_default_client_identity_) { + if (client_identity_ != &::google::protobuf::internal::kEmptyString) { client_identity_->clear(); } - _clear_bit(1); + clear_has_client_identity(); } inline const ::std::string& XCap::client_identity() const { return *client_identity_; } inline void XCap::set_client_identity(const ::std::string& value) { - _set_bit(1); - if (client_identity_ == &_default_client_identity_) { + set_has_client_identity(); + if (client_identity_ == &::google::protobuf::internal::kEmptyString) { client_identity_ = new ::std::string; } client_identity_->assign(value); } inline void XCap::set_client_identity(const char* value) { - _set_bit(1); - if (client_identity_ == &_default_client_identity_) { + set_has_client_identity(); + if (client_identity_ == &::google::protobuf::internal::kEmptyString) { client_identity_ = new ::std::string; } client_identity_->assign(value); } inline void XCap::set_client_identity(const char* value, size_t size) { - _set_bit(1); - if (client_identity_ == &_default_client_identity_) { + set_has_client_identity(); + if (client_identity_ == &::google::protobuf::internal::kEmptyString) { client_identity_ = new ::std::string; } client_identity_->assign(reinterpret_cast(value), size); } inline ::std::string* XCap::mutable_client_identity() { - _set_bit(1); - if (client_identity_ == &_default_client_identity_) { + set_has_client_identity(); + if (client_identity_ == &::google::protobuf::internal::kEmptyString) { client_identity_ = new ::std::string; } return client_identity_; } +inline ::std::string* XCap::release_client_identity() { + clear_has_client_identity(); + if (client_identity_ == &::google::protobuf::internal::kEmptyString) { + return NULL; + } else { + ::std::string* temp = client_identity_; + client_identity_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + return temp; + } +} +inline void XCap::set_allocated_client_identity(::std::string* client_identity) { + if (client_identity_ != &::google::protobuf::internal::kEmptyString) { + delete client_identity_; + } + if (client_identity) { + set_has_client_identity(); + client_identity_ = client_identity; + } else { + clear_has_client_identity(); + client_identity_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + } +} // required fixed64 expire_time_s = 3; inline bool XCap::has_expire_time_s() const { - return _has_bit(2); + return (_has_bits_[0] & 0x00000004u) != 0; +} +inline void XCap::set_has_expire_time_s() { + _has_bits_[0] |= 0x00000004u; +} +inline void XCap::clear_has_expire_time_s() { + _has_bits_[0] &= ~0x00000004u; } inline void XCap::clear_expire_time_s() { expire_time_s_ = GOOGLE_ULONGLONG(0); - _clear_bit(2); + clear_has_expire_time_s(); } inline ::google::protobuf::uint64 XCap::expire_time_s() const { return expire_time_s_; } inline void XCap::set_expire_time_s(::google::protobuf::uint64 value) { - _set_bit(2); + set_has_expire_time_s(); expire_time_s_ = value; } // required fixed32 expire_timeout_s = 4; inline bool XCap::has_expire_timeout_s() const { - return _has_bit(3); + return (_has_bits_[0] & 0x00000008u) != 0; +} +inline void XCap::set_has_expire_timeout_s() { + _has_bits_[0] |= 0x00000008u; +} +inline void XCap::clear_has_expire_timeout_s() { + _has_bits_[0] &= ~0x00000008u; } inline void XCap::clear_expire_timeout_s() { expire_timeout_s_ = 0u; - _clear_bit(3); + clear_has_expire_timeout_s(); } inline ::google::protobuf::uint32 XCap::expire_timeout_s() const { return expire_timeout_s_; } inline void XCap::set_expire_timeout_s(::google::protobuf::uint32 value) { - _set_bit(3); + set_has_expire_timeout_s(); expire_timeout_s_ = value; } // required string file_id = 5; inline bool XCap::has_file_id() const { - return _has_bit(4); + return (_has_bits_[0] & 0x00000010u) != 0; +} +inline void XCap::set_has_file_id() { + _has_bits_[0] |= 0x00000010u; +} +inline void XCap::clear_has_file_id() { + _has_bits_[0] &= ~0x00000010u; } inline void XCap::clear_file_id() { - if (file_id_ != &_default_file_id_) { + if (file_id_ != &::google::protobuf::internal::kEmptyString) { file_id_->clear(); } - _clear_bit(4); + clear_has_file_id(); } inline const ::std::string& XCap::file_id() const { return *file_id_; } inline void XCap::set_file_id(const ::std::string& value) { - _set_bit(4); - if (file_id_ == &_default_file_id_) { + set_has_file_id(); + if (file_id_ == &::google::protobuf::internal::kEmptyString) { file_id_ = new ::std::string; } file_id_->assign(value); } inline void XCap::set_file_id(const char* value) { - _set_bit(4); - if (file_id_ == &_default_file_id_) { + set_has_file_id(); + if (file_id_ == &::google::protobuf::internal::kEmptyString) { file_id_ = new ::std::string; } file_id_->assign(value); } inline void XCap::set_file_id(const char* value, size_t size) { - _set_bit(4); - if (file_id_ == &_default_file_id_) { + set_has_file_id(); + if (file_id_ == &::google::protobuf::internal::kEmptyString) { file_id_ = new ::std::string; } file_id_->assign(reinterpret_cast(value), size); } inline ::std::string* XCap::mutable_file_id() { - _set_bit(4); - if (file_id_ == &_default_file_id_) { + set_has_file_id(); + if (file_id_ == &::google::protobuf::internal::kEmptyString) { file_id_ = new ::std::string; } return file_id_; } +inline ::std::string* XCap::release_file_id() { + clear_has_file_id(); + if (file_id_ == &::google::protobuf::internal::kEmptyString) { + return NULL; + } else { + ::std::string* temp = file_id_; + file_id_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + return temp; + } +} +inline void XCap::set_allocated_file_id(::std::string* file_id) { + if (file_id_ != &::google::protobuf::internal::kEmptyString) { + delete file_id_; + } + if (file_id) { + set_has_file_id(); + file_id_ = file_id; + } else { + clear_has_file_id(); + file_id_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + } +} // required bool replicate_on_close = 6; inline bool XCap::has_replicate_on_close() const { - return _has_bit(5); + return (_has_bits_[0] & 0x00000020u) != 0; +} +inline void XCap::set_has_replicate_on_close() { + _has_bits_[0] |= 0x00000020u; +} +inline void XCap::clear_has_replicate_on_close() { + _has_bits_[0] &= ~0x00000020u; } inline void XCap::clear_replicate_on_close() { replicate_on_close_ = false; - _clear_bit(5); + clear_has_replicate_on_close(); } inline bool XCap::replicate_on_close() const { return replicate_on_close_; } inline void XCap::set_replicate_on_close(bool value) { - _set_bit(5); + set_has_replicate_on_close(); replicate_on_close_ = value; } // required string server_signature = 7; inline bool XCap::has_server_signature() const { - return _has_bit(6); + return (_has_bits_[0] & 0x00000040u) != 0; +} +inline void XCap::set_has_server_signature() { + _has_bits_[0] |= 0x00000040u; +} +inline void XCap::clear_has_server_signature() { + _has_bits_[0] &= ~0x00000040u; } inline void XCap::clear_server_signature() { - if (server_signature_ != &_default_server_signature_) { + if (server_signature_ != &::google::protobuf::internal::kEmptyString) { server_signature_->clear(); } - _clear_bit(6); + clear_has_server_signature(); } inline const ::std::string& XCap::server_signature() const { return *server_signature_; } inline void XCap::set_server_signature(const ::std::string& value) { - _set_bit(6); - if (server_signature_ == &_default_server_signature_) { + set_has_server_signature(); + if (server_signature_ == &::google::protobuf::internal::kEmptyString) { server_signature_ = new ::std::string; } server_signature_->assign(value); } inline void XCap::set_server_signature(const char* value) { - _set_bit(6); - if (server_signature_ == &_default_server_signature_) { + set_has_server_signature(); + if (server_signature_ == &::google::protobuf::internal::kEmptyString) { server_signature_ = new ::std::string; } server_signature_->assign(value); } inline void XCap::set_server_signature(const char* value, size_t size) { - _set_bit(6); - if (server_signature_ == &_default_server_signature_) { + set_has_server_signature(); + if (server_signature_ == &::google::protobuf::internal::kEmptyString) { server_signature_ = new ::std::string; } server_signature_->assign(reinterpret_cast(value), size); } inline ::std::string* XCap::mutable_server_signature() { - _set_bit(6); - if (server_signature_ == &_default_server_signature_) { + set_has_server_signature(); + if (server_signature_ == &::google::protobuf::internal::kEmptyString) { server_signature_ = new ::std::string; } return server_signature_; } +inline ::std::string* XCap::release_server_signature() { + clear_has_server_signature(); + if (server_signature_ == &::google::protobuf::internal::kEmptyString) { + return NULL; + } else { + ::std::string* temp = server_signature_; + server_signature_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + return temp; + } +} +inline void XCap::set_allocated_server_signature(::std::string* server_signature) { + if (server_signature_ != &::google::protobuf::internal::kEmptyString) { + delete server_signature_; + } + if (server_signature) { + set_has_server_signature(); + server_signature_ = server_signature; + } else { + clear_has_server_signature(); + server_signature_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + } +} // required fixed32 truncate_epoch = 8; inline bool XCap::has_truncate_epoch() const { - return _has_bit(7); + return (_has_bits_[0] & 0x00000080u) != 0; +} +inline void XCap::set_has_truncate_epoch() { + _has_bits_[0] |= 0x00000080u; +} +inline void XCap::clear_has_truncate_epoch() { + _has_bits_[0] &= ~0x00000080u; } inline void XCap::clear_truncate_epoch() { truncate_epoch_ = 0u; - _clear_bit(7); + clear_has_truncate_epoch(); } inline ::google::protobuf::uint32 XCap::truncate_epoch() const { return truncate_epoch_; } inline void XCap::set_truncate_epoch(::google::protobuf::uint32 value) { - _set_bit(7); + set_has_truncate_epoch(); truncate_epoch_ = value; } // required .xtreemfs.pbrpc.SnapConfig snap_config = 9; inline bool XCap::has_snap_config() const { - return _has_bit(8); + return (_has_bits_[0] & 0x00000100u) != 0; +} +inline void XCap::set_has_snap_config() { + _has_bits_[0] |= 0x00000100u; +} +inline void XCap::clear_has_snap_config() { + _has_bits_[0] &= ~0x00000100u; } inline void XCap::clear_snap_config() { snap_config_ = 0; - _clear_bit(8); + clear_has_snap_config(); } -inline xtreemfs::pbrpc::SnapConfig XCap::snap_config() const { - return static_cast< xtreemfs::pbrpc::SnapConfig >(snap_config_); +inline ::xtreemfs::pbrpc::SnapConfig XCap::snap_config() const { + return static_cast< ::xtreemfs::pbrpc::SnapConfig >(snap_config_); } -inline void XCap::set_snap_config(xtreemfs::pbrpc::SnapConfig value) { - GOOGLE_DCHECK(xtreemfs::pbrpc::SnapConfig_IsValid(value)); - _set_bit(8); +inline void XCap::set_snap_config(::xtreemfs::pbrpc::SnapConfig value) { + assert(::xtreemfs::pbrpc::SnapConfig_IsValid(value)); + set_has_snap_config(); snap_config_ = value; } // required fixed64 snap_timestamp = 10; inline bool XCap::has_snap_timestamp() const { - return _has_bit(9); + return (_has_bits_[0] & 0x00000200u) != 0; +} +inline void XCap::set_has_snap_timestamp() { + _has_bits_[0] |= 0x00000200u; +} +inline void XCap::clear_has_snap_timestamp() { + _has_bits_[0] &= ~0x00000200u; } inline void XCap::clear_snap_timestamp() { snap_timestamp_ = GOOGLE_ULONGLONG(0); - _clear_bit(9); + clear_has_snap_timestamp(); } inline ::google::protobuf::uint64 XCap::snap_timestamp() const { return snap_timestamp_; } inline void XCap::set_snap_timestamp(::google::protobuf::uint64 value) { - _set_bit(9); + set_has_snap_timestamp(); snap_timestamp_ = value; } @@ -1913,17 +2073,23 @@ inline void XCap::set_snap_timestamp(::google::protobuf::uint64 value) { // required fixed64 read_only_file_size = 1; inline bool XLocSet::has_read_only_file_size() const { - return _has_bit(0); + return (_has_bits_[0] & 0x00000001u) != 0; +} +inline void XLocSet::set_has_read_only_file_size() { + _has_bits_[0] |= 0x00000001u; +} +inline void XLocSet::clear_has_read_only_file_size() { + _has_bits_[0] &= ~0x00000001u; } inline void XLocSet::clear_read_only_file_size() { read_only_file_size_ = GOOGLE_ULONGLONG(0); - _clear_bit(0); + clear_has_read_only_file_size(); } inline ::google::protobuf::uint64 XLocSet::read_only_file_size() const { return read_only_file_size_; } inline void XLocSet::set_read_only_file_size(::google::protobuf::uint64 value) { - _set_bit(0); + set_has_read_only_file_size(); read_only_file_size_ = value; } @@ -1954,59 +2120,93 @@ XLocSet::mutable_replicas() { // required string replica_update_policy = 3; inline bool XLocSet::has_replica_update_policy() const { - return _has_bit(2); + return (_has_bits_[0] & 0x00000004u) != 0; +} +inline void XLocSet::set_has_replica_update_policy() { + _has_bits_[0] |= 0x00000004u; +} +inline void XLocSet::clear_has_replica_update_policy() { + _has_bits_[0] &= ~0x00000004u; } inline void XLocSet::clear_replica_update_policy() { - if (replica_update_policy_ != &_default_replica_update_policy_) { + if (replica_update_policy_ != &::google::protobuf::internal::kEmptyString) { replica_update_policy_->clear(); } - _clear_bit(2); + clear_has_replica_update_policy(); } inline const ::std::string& XLocSet::replica_update_policy() const { return *replica_update_policy_; } inline void XLocSet::set_replica_update_policy(const ::std::string& value) { - _set_bit(2); - if (replica_update_policy_ == &_default_replica_update_policy_) { + set_has_replica_update_policy(); + if (replica_update_policy_ == &::google::protobuf::internal::kEmptyString) { replica_update_policy_ = new ::std::string; } replica_update_policy_->assign(value); } inline void XLocSet::set_replica_update_policy(const char* value) { - _set_bit(2); - if (replica_update_policy_ == &_default_replica_update_policy_) { + set_has_replica_update_policy(); + if (replica_update_policy_ == &::google::protobuf::internal::kEmptyString) { replica_update_policy_ = new ::std::string; } replica_update_policy_->assign(value); } inline void XLocSet::set_replica_update_policy(const char* value, size_t size) { - _set_bit(2); - if (replica_update_policy_ == &_default_replica_update_policy_) { + set_has_replica_update_policy(); + if (replica_update_policy_ == &::google::protobuf::internal::kEmptyString) { replica_update_policy_ = new ::std::string; } replica_update_policy_->assign(reinterpret_cast(value), size); } inline ::std::string* XLocSet::mutable_replica_update_policy() { - _set_bit(2); - if (replica_update_policy_ == &_default_replica_update_policy_) { + set_has_replica_update_policy(); + if (replica_update_policy_ == &::google::protobuf::internal::kEmptyString) { replica_update_policy_ = new ::std::string; } return replica_update_policy_; } +inline ::std::string* XLocSet::release_replica_update_policy() { + clear_has_replica_update_policy(); + if (replica_update_policy_ == &::google::protobuf::internal::kEmptyString) { + return NULL; + } else { + ::std::string* temp = replica_update_policy_; + replica_update_policy_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + return temp; + } +} +inline void XLocSet::set_allocated_replica_update_policy(::std::string* replica_update_policy) { + if (replica_update_policy_ != &::google::protobuf::internal::kEmptyString) { + delete replica_update_policy_; + } + if (replica_update_policy) { + set_has_replica_update_policy(); + replica_update_policy_ = replica_update_policy; + } else { + clear_has_replica_update_policy(); + replica_update_policy_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + } +} // required fixed32 version = 4; inline bool XLocSet::has_version() const { - return _has_bit(3); + return (_has_bits_[0] & 0x00000008u) != 0; +} +inline void XLocSet::set_has_version() { + _has_bits_[0] |= 0x00000008u; +} +inline void XLocSet::clear_has_version() { + _has_bits_[0] &= ~0x00000008u; } inline void XLocSet::clear_version() { version_ = 0u; - _clear_bit(3); + clear_has_version(); } inline ::google::protobuf::uint32 XLocSet::version() const { return version_; } inline void XLocSet::set_version(::google::protobuf::uint32 value) { - _set_bit(3); + set_has_version(); version_ = value; } @@ -2016,37 +2216,79 @@ inline void XLocSet::set_version(::google::protobuf::uint32 value) { // required .xtreemfs.pbrpc.XCap xcap = 1; inline bool FileCredentials::has_xcap() const { - return _has_bit(0); + return (_has_bits_[0] & 0x00000001u) != 0; +} +inline void FileCredentials::set_has_xcap() { + _has_bits_[0] |= 0x00000001u; +} +inline void FileCredentials::clear_has_xcap() { + _has_bits_[0] &= ~0x00000001u; } inline void FileCredentials::clear_xcap() { if (xcap_ != NULL) xcap_->::xtreemfs::pbrpc::XCap::Clear(); - _clear_bit(0); + clear_has_xcap(); } inline const ::xtreemfs::pbrpc::XCap& FileCredentials::xcap() const { return xcap_ != NULL ? *xcap_ : *default_instance_->xcap_; } inline ::xtreemfs::pbrpc::XCap* FileCredentials::mutable_xcap() { - _set_bit(0); + set_has_xcap(); if (xcap_ == NULL) xcap_ = new ::xtreemfs::pbrpc::XCap; return xcap_; } +inline ::xtreemfs::pbrpc::XCap* FileCredentials::release_xcap() { + clear_has_xcap(); + ::xtreemfs::pbrpc::XCap* temp = xcap_; + xcap_ = NULL; + return temp; +} +inline void FileCredentials::set_allocated_xcap(::xtreemfs::pbrpc::XCap* xcap) { + delete xcap_; + xcap_ = xcap; + if (xcap) { + set_has_xcap(); + } else { + clear_has_xcap(); + } +} // required .xtreemfs.pbrpc.XLocSet xlocs = 2; inline bool FileCredentials::has_xlocs() const { - return _has_bit(1); + return (_has_bits_[0] & 0x00000002u) != 0; +} +inline void FileCredentials::set_has_xlocs() { + _has_bits_[0] |= 0x00000002u; +} +inline void FileCredentials::clear_has_xlocs() { + _has_bits_[0] &= ~0x00000002u; } inline void FileCredentials::clear_xlocs() { if (xlocs_ != NULL) xlocs_->::xtreemfs::pbrpc::XLocSet::Clear(); - _clear_bit(1); + clear_has_xlocs(); } inline const ::xtreemfs::pbrpc::XLocSet& FileCredentials::xlocs() const { return xlocs_ != NULL ? *xlocs_ : *default_instance_->xlocs_; } inline ::xtreemfs::pbrpc::XLocSet* FileCredentials::mutable_xlocs() { - _set_bit(1); + set_has_xlocs(); if (xlocs_ == NULL) xlocs_ = new ::xtreemfs::pbrpc::XLocSet; return xlocs_; } +inline ::xtreemfs::pbrpc::XLocSet* FileCredentials::release_xlocs() { + clear_has_xlocs(); + ::xtreemfs::pbrpc::XLocSet* temp = xlocs_; + xlocs_ = NULL; + return temp; +} +inline void FileCredentials::set_allocated_xlocs(::xtreemfs::pbrpc::XLocSet* xlocs) { + delete xlocs_; + xlocs_ = xlocs; + if (xlocs) { + set_has_xlocs(); + } else { + clear_has_xlocs(); + } +} // ------------------------------------------------------------------- @@ -2054,20 +2296,41 @@ inline ::xtreemfs::pbrpc::XLocSet* FileCredentials::mutable_xlocs() { // optional .xtreemfs.pbrpc.FileCredentials file_credentials = 1; inline bool FileCredentialsSet::has_file_credentials() const { - return _has_bit(0); + return (_has_bits_[0] & 0x00000001u) != 0; +} +inline void FileCredentialsSet::set_has_file_credentials() { + _has_bits_[0] |= 0x00000001u; +} +inline void FileCredentialsSet::clear_has_file_credentials() { + _has_bits_[0] &= ~0x00000001u; } inline void FileCredentialsSet::clear_file_credentials() { if (file_credentials_ != NULL) file_credentials_->::xtreemfs::pbrpc::FileCredentials::Clear(); - _clear_bit(0); + clear_has_file_credentials(); } inline const ::xtreemfs::pbrpc::FileCredentials& FileCredentialsSet::file_credentials() const { return file_credentials_ != NULL ? *file_credentials_ : *default_instance_->file_credentials_; } inline ::xtreemfs::pbrpc::FileCredentials* FileCredentialsSet::mutable_file_credentials() { - _set_bit(0); + set_has_file_credentials(); if (file_credentials_ == NULL) file_credentials_ = new ::xtreemfs::pbrpc::FileCredentials; return file_credentials_; } +inline ::xtreemfs::pbrpc::FileCredentials* FileCredentialsSet::release_file_credentials() { + clear_has_file_credentials(); + ::xtreemfs::pbrpc::FileCredentials* temp = file_credentials_; + file_credentials_ = NULL; + return temp; +} +inline void FileCredentialsSet::set_allocated_file_credentials(::xtreemfs::pbrpc::FileCredentials* file_credentials) { + delete file_credentials_; + file_credentials_ = file_credentials; + if (file_credentials) { + set_has_file_credentials(); + } else { + clear_has_file_credentials(); + } +} // ------------------------------------------------------------------- @@ -2075,49 +2338,67 @@ inline ::xtreemfs::pbrpc::FileCredentials* FileCredentialsSet::mutable_file_cred // required double x_coordinate = 1; inline bool VivaldiCoordinates::has_x_coordinate() const { - return _has_bit(0); + return (_has_bits_[0] & 0x00000001u) != 0; +} +inline void VivaldiCoordinates::set_has_x_coordinate() { + _has_bits_[0] |= 0x00000001u; +} +inline void VivaldiCoordinates::clear_has_x_coordinate() { + _has_bits_[0] &= ~0x00000001u; } inline void VivaldiCoordinates::clear_x_coordinate() { x_coordinate_ = 0; - _clear_bit(0); + clear_has_x_coordinate(); } inline double VivaldiCoordinates::x_coordinate() const { return x_coordinate_; } inline void VivaldiCoordinates::set_x_coordinate(double value) { - _set_bit(0); + set_has_x_coordinate(); x_coordinate_ = value; } // required double y_coordinate = 2; inline bool VivaldiCoordinates::has_y_coordinate() const { - return _has_bit(1); + return (_has_bits_[0] & 0x00000002u) != 0; +} +inline void VivaldiCoordinates::set_has_y_coordinate() { + _has_bits_[0] |= 0x00000002u; +} +inline void VivaldiCoordinates::clear_has_y_coordinate() { + _has_bits_[0] &= ~0x00000002u; } inline void VivaldiCoordinates::clear_y_coordinate() { y_coordinate_ = 0; - _clear_bit(1); + clear_has_y_coordinate(); } inline double VivaldiCoordinates::y_coordinate() const { return y_coordinate_; } inline void VivaldiCoordinates::set_y_coordinate(double value) { - _set_bit(1); + set_has_y_coordinate(); y_coordinate_ = value; } // required double local_error = 3; inline bool VivaldiCoordinates::has_local_error() const { - return _has_bit(2); + return (_has_bits_[0] & 0x00000004u) != 0; +} +inline void VivaldiCoordinates::set_has_local_error() { + _has_bits_[0] |= 0x00000004u; +} +inline void VivaldiCoordinates::clear_has_local_error() { + _has_bits_[0] &= ~0x00000004u; } inline void VivaldiCoordinates::clear_local_error() { local_error_ = 0; - _clear_bit(2); + clear_has_local_error(); } inline double VivaldiCoordinates::local_error() const { return local_error_; } inline void VivaldiCoordinates::set_local_error(double value) { - _set_bit(2); + set_has_local_error(); local_error_ = value; } @@ -2127,33 +2408,45 @@ inline void VivaldiCoordinates::set_local_error(double value) { // optional fixed64 size_in_bytes = 1; inline bool OSDWriteResponse::has_size_in_bytes() const { - return _has_bit(0); + return (_has_bits_[0] & 0x00000001u) != 0; +} +inline void OSDWriteResponse::set_has_size_in_bytes() { + _has_bits_[0] |= 0x00000001u; +} +inline void OSDWriteResponse::clear_has_size_in_bytes() { + _has_bits_[0] &= ~0x00000001u; } inline void OSDWriteResponse::clear_size_in_bytes() { size_in_bytes_ = GOOGLE_ULONGLONG(0); - _clear_bit(0); + clear_has_size_in_bytes(); } inline ::google::protobuf::uint64 OSDWriteResponse::size_in_bytes() const { return size_in_bytes_; } inline void OSDWriteResponse::set_size_in_bytes(::google::protobuf::uint64 value) { - _set_bit(0); + set_has_size_in_bytes(); size_in_bytes_ = value; } // optional fixed32 truncate_epoch = 2; inline bool OSDWriteResponse::has_truncate_epoch() const { - return _has_bit(1); + return (_has_bits_[0] & 0x00000002u) != 0; +} +inline void OSDWriteResponse::set_has_truncate_epoch() { + _has_bits_[0] |= 0x00000002u; +} +inline void OSDWriteResponse::clear_has_truncate_epoch() { + _has_bits_[0] &= ~0x00000002u; } inline void OSDWriteResponse::clear_truncate_epoch() { truncate_epoch_ = 0u; - _clear_bit(1); + clear_has_truncate_epoch(); } inline ::google::protobuf::uint32 OSDWriteResponse::truncate_epoch() const { return truncate_epoch_; } inline void OSDWriteResponse::set_truncate_epoch(::google::protobuf::uint32 value) { - _set_bit(1); + set_has_truncate_epoch(); truncate_epoch_ = value; } @@ -2163,87 +2456,143 @@ inline void OSDWriteResponse::set_truncate_epoch(::google::protobuf::uint32 valu // required string key = 1; inline bool KeyValuePair::has_key() const { - return _has_bit(0); + return (_has_bits_[0] & 0x00000001u) != 0; +} +inline void KeyValuePair::set_has_key() { + _has_bits_[0] |= 0x00000001u; +} +inline void KeyValuePair::clear_has_key() { + _has_bits_[0] &= ~0x00000001u; } inline void KeyValuePair::clear_key() { - if (key_ != &_default_key_) { + if (key_ != &::google::protobuf::internal::kEmptyString) { key_->clear(); } - _clear_bit(0); + clear_has_key(); } inline const ::std::string& KeyValuePair::key() const { return *key_; } inline void KeyValuePair::set_key(const ::std::string& value) { - _set_bit(0); - if (key_ == &_default_key_) { + set_has_key(); + if (key_ == &::google::protobuf::internal::kEmptyString) { key_ = new ::std::string; } key_->assign(value); } inline void KeyValuePair::set_key(const char* value) { - _set_bit(0); - if (key_ == &_default_key_) { + set_has_key(); + if (key_ == &::google::protobuf::internal::kEmptyString) { key_ = new ::std::string; } key_->assign(value); } inline void KeyValuePair::set_key(const char* value, size_t size) { - _set_bit(0); - if (key_ == &_default_key_) { + set_has_key(); + if (key_ == &::google::protobuf::internal::kEmptyString) { key_ = new ::std::string; } key_->assign(reinterpret_cast(value), size); } inline ::std::string* KeyValuePair::mutable_key() { - _set_bit(0); - if (key_ == &_default_key_) { + set_has_key(); + if (key_ == &::google::protobuf::internal::kEmptyString) { key_ = new ::std::string; } return key_; } +inline ::std::string* KeyValuePair::release_key() { + clear_has_key(); + if (key_ == &::google::protobuf::internal::kEmptyString) { + return NULL; + } else { + ::std::string* temp = key_; + key_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + return temp; + } +} +inline void KeyValuePair::set_allocated_key(::std::string* key) { + if (key_ != &::google::protobuf::internal::kEmptyString) { + delete key_; + } + if (key) { + set_has_key(); + key_ = key; + } else { + clear_has_key(); + key_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + } +} // required string value = 2; inline bool KeyValuePair::has_value() const { - return _has_bit(1); + return (_has_bits_[0] & 0x00000002u) != 0; +} +inline void KeyValuePair::set_has_value() { + _has_bits_[0] |= 0x00000002u; +} +inline void KeyValuePair::clear_has_value() { + _has_bits_[0] &= ~0x00000002u; } inline void KeyValuePair::clear_value() { - if (value_ != &_default_value_) { + if (value_ != &::google::protobuf::internal::kEmptyString) { value_->clear(); } - _clear_bit(1); + clear_has_value(); } inline const ::std::string& KeyValuePair::value() const { return *value_; } inline void KeyValuePair::set_value(const ::std::string& value) { - _set_bit(1); - if (value_ == &_default_value_) { + set_has_value(); + if (value_ == &::google::protobuf::internal::kEmptyString) { value_ = new ::std::string; } value_->assign(value); } inline void KeyValuePair::set_value(const char* value) { - _set_bit(1); - if (value_ == &_default_value_) { + set_has_value(); + if (value_ == &::google::protobuf::internal::kEmptyString) { value_ = new ::std::string; } value_->assign(value); } inline void KeyValuePair::set_value(const char* value, size_t size) { - _set_bit(1); - if (value_ == &_default_value_) { + set_has_value(); + if (value_ == &::google::protobuf::internal::kEmptyString) { value_ = new ::std::string; } value_->assign(reinterpret_cast(value), size); } inline ::std::string* KeyValuePair::mutable_value() { - _set_bit(1); - if (value_ == &_default_value_) { + set_has_value(); + if (value_ == &::google::protobuf::internal::kEmptyString) { value_ = new ::std::string; } return value_; } +inline ::std::string* KeyValuePair::release_value() { + clear_has_value(); + if (value_ == &::google::protobuf::internal::kEmptyString) { + return NULL; + } else { + ::std::string* temp = value_; + value_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + return temp; + } +} +inline void KeyValuePair::set_allocated_value(::std::string* value) { + if (value_ != &::google::protobuf::internal::kEmptyString) { + delete value_; + } + if (value) { + set_has_value(); + value_ = value; + } else { + clear_has_value(); + value_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + } +} // @@protoc_insertion_point(namespace_scope) @@ -2256,44 +2605,44 @@ namespace google { namespace protobuf { template <> -inline const EnumDescriptor* GetEnumDescriptor< xtreemfs::pbrpc::AccessControlPolicyType>() { - return xtreemfs::pbrpc::AccessControlPolicyType_descriptor(); +inline const EnumDescriptor* GetEnumDescriptor< ::xtreemfs::pbrpc::AccessControlPolicyType>() { + return ::xtreemfs::pbrpc::AccessControlPolicyType_descriptor(); } template <> -inline const EnumDescriptor* GetEnumDescriptor< xtreemfs::pbrpc::OSDSelectionPolicyType>() { - return xtreemfs::pbrpc::OSDSelectionPolicyType_descriptor(); +inline const EnumDescriptor* GetEnumDescriptor< ::xtreemfs::pbrpc::OSDSelectionPolicyType>() { + return ::xtreemfs::pbrpc::OSDSelectionPolicyType_descriptor(); } template <> -inline const EnumDescriptor* GetEnumDescriptor< xtreemfs::pbrpc::ReplicaSelectionPolicyType>() { - return xtreemfs::pbrpc::ReplicaSelectionPolicyType_descriptor(); +inline const EnumDescriptor* GetEnumDescriptor< ::xtreemfs::pbrpc::ReplicaSelectionPolicyType>() { + return ::xtreemfs::pbrpc::ReplicaSelectionPolicyType_descriptor(); } template <> -inline const EnumDescriptor* GetEnumDescriptor< xtreemfs::pbrpc::SnapConfig>() { - return xtreemfs::pbrpc::SnapConfig_descriptor(); +inline const EnumDescriptor* GetEnumDescriptor< ::xtreemfs::pbrpc::SnapConfig>() { + return ::xtreemfs::pbrpc::SnapConfig_descriptor(); } template <> -inline const EnumDescriptor* GetEnumDescriptor< xtreemfs::pbrpc::StripingPolicyType>() { - return xtreemfs::pbrpc::StripingPolicyType_descriptor(); +inline const EnumDescriptor* GetEnumDescriptor< ::xtreemfs::pbrpc::StripingPolicyType>() { + return ::xtreemfs::pbrpc::StripingPolicyType_descriptor(); } template <> -inline const EnumDescriptor* GetEnumDescriptor< xtreemfs::pbrpc::PORTS>() { - return xtreemfs::pbrpc::PORTS_descriptor(); +inline const EnumDescriptor* GetEnumDescriptor< ::xtreemfs::pbrpc::PORTS>() { + return ::xtreemfs::pbrpc::PORTS_descriptor(); } template <> -inline const EnumDescriptor* GetEnumDescriptor< xtreemfs::pbrpc::CONSTANTS>() { - return xtreemfs::pbrpc::CONSTANTS_descriptor(); +inline const EnumDescriptor* GetEnumDescriptor< ::xtreemfs::pbrpc::CONSTANTS>() { + return ::xtreemfs::pbrpc::CONSTANTS_descriptor(); } template <> -inline const EnumDescriptor* GetEnumDescriptor< xtreemfs::pbrpc::SYSTEM_V_FCNTL>() { - return xtreemfs::pbrpc::SYSTEM_V_FCNTL_descriptor(); +inline const EnumDescriptor* GetEnumDescriptor< ::xtreemfs::pbrpc::SYSTEM_V_FCNTL>() { + return ::xtreemfs::pbrpc::SYSTEM_V_FCNTL_descriptor(); } template <> -inline const EnumDescriptor* GetEnumDescriptor< xtreemfs::pbrpc::REPL_FLAG>() { - return xtreemfs::pbrpc::REPL_FLAG_descriptor(); +inline const EnumDescriptor* GetEnumDescriptor< ::xtreemfs::pbrpc::REPL_FLAG>() { + return ::xtreemfs::pbrpc::REPL_FLAG_descriptor(); } template <> -inline const EnumDescriptor* GetEnumDescriptor< xtreemfs::pbrpc::SERVICES>() { - return xtreemfs::pbrpc::SERVICES_descriptor(); +inline const EnumDescriptor* GetEnumDescriptor< ::xtreemfs::pbrpc::SERVICES>() { + return ::xtreemfs::pbrpc::SERVICES_descriptor(); } } // namespace google diff --git a/cpp/generated/xtreemfs/MRC.pb.cc b/cpp/generated/xtreemfs/MRC.pb.cc index 3e1139149..1a2d2e248 100644 --- a/cpp/generated/xtreemfs/MRC.pb.cc +++ b/cpp/generated/xtreemfs/MRC.pb.cc @@ -1,11 +1,17 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! +// source: xtreemfs/MRC.proto #define INTERNAL_SUPPRESS_PROTOBUF_FIELD_DEPRECATION #include "xtreemfs/MRC.pb.h" + +#include + +#include #include #include #include #include +#include #include #include // @@protoc_insertion_point(includes) @@ -174,7 +180,6 @@ const ::google::protobuf::internal::GeneratedMessageReflection* const ::google::protobuf::EnumDescriptor* Setattrs_descriptor_ = NULL; const ::google::protobuf::EnumDescriptor* XATTR_FLAGS_descriptor_ = NULL; const ::google::protobuf::EnumDescriptor* ACCESS_FLAGS_descriptor_ = NULL; -const ::google::protobuf::ServiceDescriptor* MRCService_descriptor_ = NULL; } // namespace @@ -248,7 +253,7 @@ void protobuf_AssignDesc_xtreemfs_2fMRC_2eproto() { static const int XAttr_offsets_[3] = { GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(XAttr, name_), GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(XAttr, value_), - GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(XAttr, value_bytes_), + GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(XAttr, value_bytes_string_), }; XAttr_reflection_ = new ::google::protobuf::internal::GeneratedMessageReflection( @@ -394,7 +399,7 @@ void protobuf_AssignDesc_xtreemfs_2fMRC_2eproto() { getxattrResponse_descriptor_ = file->message_type(11); static const int getxattrResponse_offsets_[2] = { GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(getxattrResponse, value_), - GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(getxattrResponse, value_bytes_), + GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(getxattrResponse, value_bytes_string_), }; getxattrResponse_reflection_ = new ::google::protobuf::internal::GeneratedMessageReflection( @@ -650,7 +655,7 @@ void protobuf_AssignDesc_xtreemfs_2fMRC_2eproto() { GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(setxattrRequest, path_), GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(setxattrRequest, name_), GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(setxattrRequest, value_), - GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(setxattrRequest, value_bytes_), + GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(setxattrRequest, value_bytes_string_), GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(setxattrRequest, flags_), }; setxattrRequest_reflection_ = @@ -1071,7 +1076,6 @@ void protobuf_AssignDesc_xtreemfs_2fMRC_2eproto() { Setattrs_descriptor_ = file->enum_type(0); XATTR_FLAGS_descriptor_ = file->enum_type(1); ACCESS_FLAGS_descriptor_ = file->enum_type(2); - MRCService_descriptor_ = file->service(0); } namespace { @@ -1321,224 +1325,224 @@ void protobuf_AddDesc_xtreemfs_2fMRC_2eproto() { "ryEntry\022\014\n\004name\030\001 \002(\t\022#\n\005stbuf\030\002 \001(\0132\024.x" "treemfs.pbrpc.Stat\"C\n\020DirectoryEntries\022/" "\n\007entries\030\001 \003(\0132\036.xtreemfs.pbrpc.Directo" - "ryEntry\"9\n\005XAttr\022\014\n\004name\030\001 \002(\t\022\r\n\005value\030" - "\002 \001(\t\022\023\n\013value_bytes\030\003 \001(\014\"\225\002\n\006Volume\022F\n" - "\025access_control_policy\030\001 \002(\0162\'.xtreemfs." - "pbrpc.AccessControlPolicyType\022?\n\027default" - "_striping_policy\030\002 \002(\0132\036.xtreemfs.pbrpc." - "StripingPolicy\022\n\n\002id\030\003 \002(\t\022\014\n\004mode\030\004 \002(\007" - "\022\014\n\004name\030\005 \002(\t\022\026\n\016owner_group_id\030\006 \002(\t\022\025" - "\n\rowner_user_id\030\007 \002(\t\022+\n\005attrs\030\010 \003(\0132\034.x" - "treemfs.pbrpc.KeyValuePair\"2\n\007Volumes\022\'\n" - "\007volumes\030\001 \003(\0132\026.xtreemfs.pbrpc.Volume\"\310" - "\002\n\007StatVFS\022\r\n\005bsize\030\001 \002(\007\022\016\n\006bavail\030\002 \002(" - "\006\022\r\n\005bfree\030\r \001(\006\022\016\n\006blocks\030\003 \002(\006\022\014\n\004fsid" - "\030\004 \002(\t\022\017\n\007namemax\030\005 \002(\007\022F\n\025access_contro" - "l_policy\030\006 \002(\0162\'.xtreemfs.pbrpc.AccessCo" - "ntrolPolicyType\022?\n\027default_striping_poli" - "cy\030\007 \002(\0132\036.xtreemfs.pbrpc.StripingPolicy" - "\022\014\n\004etag\030\010 \002(\006\022\014\n\004mode\030\t \002(\007\022\014\n\004name\030\n \002" - "(\t\022\026\n\016owner_group_id\030\013 \002(\t\022\025\n\rowner_user" - "_id\030\014 \002(\t\"i\n\017fsetattrRequest\022#\n\005stbuf\030\001 " - "\002(\0132\024.xtreemfs.pbrpc.Stat\022\016\n\006to_set\030\002 \002(" - "\007\022!\n\003cap\030\003 \002(\0132\024.xtreemfs.pbrpc.XCap\"G\n\016" - "getattrRequest\022\023\n\013volume_name\030\001 \002(\t\022\014\n\004p" - "ath\030\002 \002(\t\022\022\n\nknown_etag\030\003 \002(\006\"6\n\017getattr" - "Response\022#\n\005stbuf\030\001 \001(\0132\024.xtreemfs.pbrpc" - ".Stat\"B\n\017getxattrRequest\022\023\n\013volume_name\030" - "\001 \002(\t\022\014\n\004path\030\002 \002(\t\022\014\n\004name\030\003 \002(\t\"6\n\020get" - "xattrResponse\022\r\n\005value\030\001 \002(\t\022\023\n\013value_by" - "tes\030\002 \001(\014\"J\n\013linkRequest\022\023\n\013volume_name\030" - "\001 \002(\t\022\023\n\013target_path\030\002 \002(\t\022\021\n\tlink_path\030" - "\003 \002(\t\"I\n\020listxattrRequest\022\023\n\013volume_name" - "\030\001 \002(\t\022\014\n\004path\030\002 \002(\t\022\022\n\nnames_only\030\003 \002(\010" - "\":\n\021listxattrResponse\022%\n\006xattrs\030\001 \003(\0132\025." - "xtreemfs.pbrpc.XAttr\"?\n\014mkdirRequest\022\023\n\013" - "volume_name\030\001 \002(\t\022\014\n\004path\030\002 \002(\t\022\014\n\004mode\030" - "\003 \002(\007\"\232\001\n\013openRequest\022\023\n\013volume_name\030\001 \002" - "(\t\022\014\n\004path\030\002 \002(\t\022\r\n\005flags\030\003 \002(\007\022\014\n\004mode\030" - "\004 \002(\007\022\022\n\nattributes\030\005 \002(\007\0227\n\013coordinates" - "\030\006 \001(\0132\".xtreemfs.pbrpc.VivaldiCoordinat" - "es\"S\n\014openResponse\022.\n\005creds\030\001 \002(\0132\037.xtre" - "emfs.pbrpc.FileCredentials\022\023\n\013timestamp_" - "s\030\002 \002(\007\"\250\001\n\016readdirRequest\022\023\n\013volume_nam" - "e\030\001 \002(\t\022\014\n\004path\030\002 \002(\t\022\022\n\nknown_etag\030\003 \002(" - "\006\022%\n\035limit_directory_entries_count\030\004 \002(\007" - "\022\022\n\nnames_only\030\005 \002(\010\022$\n\034seen_directory_e" - "ntries_count\030\006 \002(\006\"4\n\017readlinkRequest\022\023\n" - "\013volume_name\030\001 \002(\t\022\014\n\004path\030\002 \002(\t\",\n\020read" - "linkResponse\022\030\n\020link_target_path\030\001 \003(\t\"E" - "\n\022removexattrRequest\022\023\n\013volume_name\030\001 \002(" - "\t\022\014\n\004path\030\002 \002(\t\022\014\n\004name\030\003 \002(\t\"N\n\rrenameR" - "equest\022\023\n\013volume_name\030\001 \002(\t\022\023\n\013source_pa" - "th\030\002 \002(\t\022\023\n\013target_path\030\003 \002(\t\"U\n\016renameR" - "esponse\022\023\n\013timestamp_s\030\001 \002(\007\022.\n\005creds\030\002 " - "\001(\0132\037.xtreemfs.pbrpc.FileCredentials\"1\n\014" - "rmdirRequest\022\023\n\013volume_name\030\001 \002(\t\022\014\n\004pat" - "h\030\002 \002(\t\"h\n\016setattrRequest\022\023\n\013volume_name" - "\030\001 \002(\t\022\014\n\004path\030\002 \002(\t\022#\n\005stbuf\030\003 \002(\0132\024.xt" - "reemfs.pbrpc.Stat\022\016\n\006to_set\030\004 \002(\007\"u\n\017set" - "xattrRequest\022\023\n\013volume_name\030\001 \002(\t\022\014\n\004pat" - "h\030\002 \002(\t\022\014\n\004name\030\003 \002(\t\022\r\n\005value\030\004 \002(\t\022\023\n\013" - "value_bytes\030\006 \001(\014\022\r\n\005flags\030\005 \002(\007\"9\n\016stat" - "vfsRequest\022\023\n\013volume_name\030\001 \002(\t\022\022\n\nknown" - "_etag\030\005 \002(\006\"M\n\016symlinkRequest\022\023\n\013volume_" - "name\030\001 \002(\t\022\023\n\013target_path\030\002 \002(\t\022\021\n\tlink_" - "path\030\003 \002(\t\"2\n\runlinkRequest\022\023\n\013volume_na" - "me\030\001 \002(\t\022\014\n\004path\030\002 \002(\t\"U\n\016unlinkResponse" - "\022\023\n\013timestamp_s\030\001 \002(\007\022.\n\005creds\030\002 \001(\0132\037.x" - "treemfs.pbrpc.FileCredentials\"A\n\raccessR" - "equest\022\023\n\013volume_name\030\001 \002(\t\022\014\n\004path\030\002 \002(" - "\t\022\r\n\005flags\030\003 \002(\007\"Z\n!xtreemfs_check_file_" - "existsRequest\022\021\n\tvolume_id\030\001 \002(\t\022\020\n\010file" - "_ids\030\002 \003(\t\022\020\n\010osd_uuid\030\003 \002(\t\":\n%xtreemfs" - "_dump_restore_databaseRequest\022\021\n\tdump_fi" - "le\030\001 \002(\t\"i\n!xtreemfs_get_suitable_osdsRe" - "quest\022\017\n\007file_id\030\001 \001(\t\022\014\n\004path\030\003 \001(\t\022\023\n\013" - "volume_name\030\004 \001(\t\022\020\n\010num_osds\030\002 \002(\007\"7\n\"x" - "treemfs_get_suitable_osdsResponse\022\021\n\tosd" - "_uuids\030\001 \003(\t\"4\n\"xtreemfs_check_file_exis" - "tsResponse\022\016\n\006bitmap\030\001 \002(\t\"(\n\021timestampR" - "esponse\022\023\n\013timestamp_s\030\001 \002(\007\"!\n\rstringMe" - "ssage\022\020\n\010a_string\030\001 \002(\t\"\'\n\027xtreemfs_list" - "dirRequest\022\014\n\004path\030\001 \002(\t\")\n\030xtreemfs_lis" - "tdirResponse\022\r\n\005names\030\001 \003(\t\"\177\n\033xtreemfs_" - "replica_addRequest\022\017\n\007file_id\030\001 \001(\t\022\014\n\004p" - "ath\030\003 \001(\t\022\023\n\013volume_name\030\004 \001(\t\022,\n\013new_re" - "plica\030\002 \002(\0132\027.xtreemfs.pbrpc.Replica\"R\n\034" - "xtreemfs_replica_listRequest\022\017\n\007file_id\030" - "\001 \001(\t\022\014\n\004path\030\002 \001(\t\022\023\n\013volume_name\030\003 \001(\t" - "\"f\n\036xtreemfs_replica_removeRequest\022\017\n\007fi" - "le_id\030\001 \001(\t\022\014\n\004path\030\003 \001(\t\022\023\n\013volume_name" - "\030\004 \001(\t\022\020\n\010osd_uuid\030\002 \002(\t\"|\n\034xtreemfs_res" - "tore_fileRequest\022\021\n\tfile_path\030\001 \002(\t\022\017\n\007f" - "ile_id\030\002 \002(\t\022\021\n\tfile_size\030\003 \002(\006\022\020\n\010osd_u" - "uid\030\004 \002(\t\022\023\n\013stripe_size\030\005 \002(\007\",\n\025xtreem" - "fs_rmvolRequest\022\023\n\013volume_name\030\001 \002(\t\"\321\001\n" - " xtreemfs_update_file_sizeRequest\022\"\n\004xca" - "p\030\001 \002(\0132\024.xtreemfs.pbrpc.XCap\022<\n\022osd_wri" - "te_response\030\002 \002(\0132 .xtreemfs.pbrpc.OSDWr" - "iteResponse\022\022\n\nclose_file\030\003 \001(\010\0227\n\013coord" - "inates\030\004 \001(\0132\".xtreemfs.pbrpc.VivaldiCoo" - "rdinates\"S\n)xtreemfs_set_replica_update_" - "policyRequest\022\017\n\007file_id\030\001 \002(\t\022\025\n\rupdate" - "_policy\030\002 \002(\t\"G\n*xtreemfs_set_replica_up" - "date_policyResponse\022\031\n\021old_update_policy" - "\030\001 \002(\t\"E\n#xtreemfs_set_read_only_xattrRe" - "quest\022\017\n\007file_id\030\001 \002(\t\022\r\n\005value\030\002 \002(\010\"7\n" - "$xtreemfs_set_read_only_xattrResponse\022\017\n" - "\007was_set\030\001 \002(\010\"7\n$xtreemfs_get_file_cred" - "entialsRequest\022\017\n\007file_id\030\001 \002(\t*\242\001\n\010Seta" - "ttrs\022\020\n\014SETATTR_MODE\020\001\022\017\n\013SETATTR_UID\020\002\022" - "\017\n\013SETATTR_GID\020\004\022\020\n\014SETATTR_SIZE\020\010\022\021\n\rSE" - "TATTR_ATIME\020\020\022\021\n\rSETATTR_MTIME\020 \022\021\n\rSETA" - "TTR_CTIME\020@\022\027\n\022SETATTR_ATTRIBUTES\020\200\001*>\n\013" - "XATTR_FLAGS\022\026\n\022XATTR_FLAGS_CREATE\020\001\022\027\n\023X" - "ATTR_FLAGS_REPLACE\020\002*j\n\014ACCESS_FLAGS\022\025\n\021" - "ACCESS_FLAGS_F_OK\020\000\022\025\n\021ACCESS_FLAGS_X_OK" - "\020\001\022\025\n\021ACCESS_FLAGS_W_OK\020\002\022\025\n\021ACCESS_FLAG" - "S_R_OK\020\0042\234\037\n\nMRCService\022S\n\010fsetattr\022\037.xt" - "reemfs.pbrpc.fsetattrRequest\032\035.xtreemfs." - "pbrpc.emptyResponse\"\007\215\265\030\002\000\000\000\022@\n\tftruncat" - "e\022\024.xtreemfs.pbrpc.XCap\032\024.xtreemfs.pbrpc" - ".XCap\"\007\215\265\030\003\000\000\000\022S\n\007getattr\022\036.xtreemfs.pbr" - "pc.getattrRequest\032\037.xtreemfs.pbrpc.getat" - "trResponse\"\007\215\265\030\004\000\000\000\022V\n\010getxattr\022\037.xtreem" - "fs.pbrpc.getxattrRequest\032 .xtreemfs.pbrp" - "c.getxattrResponse\"\007\215\265\030\005\000\000\000\022O\n\004link\022\033.xt" - "reemfs.pbrpc.linkRequest\032!.xtreemfs.pbrp" - "c.timestampResponse\"\007\215\265\030\006\000\000\000\022Y\n\tlistxatt" - "r\022 .xtreemfs.pbrpc.listxattrRequest\032!.xt" - "reemfs.pbrpc.listxattrResponse\"\007\215\265\030\007\000\000\000\022" - "Q\n\005mkdir\022\034.xtreemfs.pbrpc.mkdirRequest\032!" - ".xtreemfs.pbrpc.timestampResponse\"\007\215\265\030\010\000" - "\000\000\022J\n\004open\022\033.xtreemfs.pbrpc.openRequest\032" - "\034.xtreemfs.pbrpc.openResponse\"\007\215\265\030\t\000\000\000\022T" - "\n\007readdir\022\036.xtreemfs.pbrpc.readdirReques" - "t\032 .xtreemfs.pbrpc.DirectoryEntries\"\007\215\265\030" - "\n\000\000\000\022V\n\010readlink\022\037.xtreemfs.pbrpc.readli" - "nkRequest\032 .xtreemfs.pbrpc.readlinkRespo" - "nse\"\007\215\265\030\013\000\000\000\022]\n\013removexattr\022\".xtreemfs.p" - "brpc.removexattrRequest\032!.xtreemfs.pbrpc" - ".timestampResponse\"\007\215\265\030\014\000\000\000\022P\n\006rename\022\035." - "xtreemfs.pbrpc.renameRequest\032\036.xtreemfs." - "pbrpc.renameResponse\"\007\215\265\030\r\000\000\000\022Q\n\005rmdir\022\034" - ".xtreemfs.pbrpc.rmdirRequest\032!.xtreemfs." - "pbrpc.timestampResponse\"\007\215\265\030\016\000\000\000\022U\n\007seta" - "ttr\022\036.xtreemfs.pbrpc.setattrRequest\032!.xt" - "reemfs.pbrpc.timestampResponse\"\007\215\265\030\017\000\000\000\022" - "W\n\010setxattr\022\037.xtreemfs.pbrpc.setxattrReq" + "ryEntry\"@\n\005XAttr\022\014\n\004name\030\001 \002(\t\022\r\n\005value\030" + "\002 \001(\t\022\032\n\022value_bytes_string\030\003 \001(\014\"\225\002\n\006Vo" + "lume\022F\n\025access_control_policy\030\001 \002(\0162\'.xt" + "reemfs.pbrpc.AccessControlPolicyType\022\?\n\027" + "default_striping_policy\030\002 \002(\0132\036.xtreemfs" + ".pbrpc.StripingPolicy\022\n\n\002id\030\003 \002(\t\022\014\n\004mod" + "e\030\004 \002(\007\022\014\n\004name\030\005 \002(\t\022\026\n\016owner_group_id\030" + "\006 \002(\t\022\025\n\rowner_user_id\030\007 \002(\t\022+\n\005attrs\030\010 " + "\003(\0132\034.xtreemfs.pbrpc.KeyValuePair\"2\n\007Vol" + "umes\022\'\n\007volumes\030\001 \003(\0132\026.xtreemfs.pbrpc.V" + "olume\"\310\002\n\007StatVFS\022\r\n\005bsize\030\001 \002(\007\022\016\n\006bava" + "il\030\002 \002(\006\022\r\n\005bfree\030\r \001(\006\022\016\n\006blocks\030\003 \002(\006\022" + "\014\n\004fsid\030\004 \002(\t\022\017\n\007namemax\030\005 \002(\007\022F\n\025access" + "_control_policy\030\006 \002(\0162\'.xtreemfs.pbrpc.A" + "ccessControlPolicyType\022\?\n\027default_stripi" + "ng_policy\030\007 \002(\0132\036.xtreemfs.pbrpc.Stripin" + "gPolicy\022\014\n\004etag\030\010 \002(\006\022\014\n\004mode\030\t \002(\007\022\014\n\004n" + "ame\030\n \002(\t\022\026\n\016owner_group_id\030\013 \002(\t\022\025\n\rown" + "er_user_id\030\014 \002(\t\"i\n\017fsetattrRequest\022#\n\005s" + "tbuf\030\001 \002(\0132\024.xtreemfs.pbrpc.Stat\022\016\n\006to_s" + "et\030\002 \002(\007\022!\n\003cap\030\003 \002(\0132\024.xtreemfs.pbrpc.X" + "Cap\"G\n\016getattrRequest\022\023\n\013volume_name\030\001 \002" + "(\t\022\014\n\004path\030\002 \002(\t\022\022\n\nknown_etag\030\003 \002(\006\"6\n\017" + "getattrResponse\022#\n\005stbuf\030\001 \001(\0132\024.xtreemf" + "s.pbrpc.Stat\"B\n\017getxattrRequest\022\023\n\013volum" + "e_name\030\001 \002(\t\022\014\n\004path\030\002 \002(\t\022\014\n\004name\030\003 \002(\t" + "\"=\n\020getxattrResponse\022\r\n\005value\030\001 \002(\t\022\032\n\022v" + "alue_bytes_string\030\002 \001(\014\"J\n\013linkRequest\022\023" + "\n\013volume_name\030\001 \002(\t\022\023\n\013target_path\030\002 \002(\t" + "\022\021\n\tlink_path\030\003 \002(\t\"I\n\020listxattrRequest\022" + "\023\n\013volume_name\030\001 \002(\t\022\014\n\004path\030\002 \002(\t\022\022\n\nna" + "mes_only\030\003 \002(\010\":\n\021listxattrResponse\022%\n\006x" + "attrs\030\001 \003(\0132\025.xtreemfs.pbrpc.XAttr\"\?\n\014mk" + "dirRequest\022\023\n\013volume_name\030\001 \002(\t\022\014\n\004path\030" + "\002 \002(\t\022\014\n\004mode\030\003 \002(\007\"\232\001\n\013openRequest\022\023\n\013v" + "olume_name\030\001 \002(\t\022\014\n\004path\030\002 \002(\t\022\r\n\005flags\030" + "\003 \002(\007\022\014\n\004mode\030\004 \002(\007\022\022\n\nattributes\030\005 \002(\007\022" + "7\n\013coordinates\030\006 \001(\0132\".xtreemfs.pbrpc.Vi" + "valdiCoordinates\"S\n\014openResponse\022.\n\005cred" + "s\030\001 \002(\0132\037.xtreemfs.pbrpc.FileCredentials" + "\022\023\n\013timestamp_s\030\002 \002(\007\"\250\001\n\016readdirRequest" + "\022\023\n\013volume_name\030\001 \002(\t\022\014\n\004path\030\002 \002(\t\022\022\n\nk" + "nown_etag\030\003 \002(\006\022%\n\035limit_directory_entri" + "es_count\030\004 \002(\007\022\022\n\nnames_only\030\005 \002(\010\022$\n\034se" + "en_directory_entries_count\030\006 \002(\006\"4\n\017read" + "linkRequest\022\023\n\013volume_name\030\001 \002(\t\022\014\n\004path" + "\030\002 \002(\t\",\n\020readlinkResponse\022\030\n\020link_targe" + "t_path\030\001 \003(\t\"E\n\022removexattrRequest\022\023\n\013vo" + "lume_name\030\001 \002(\t\022\014\n\004path\030\002 \002(\t\022\014\n\004name\030\003 " + "\002(\t\"N\n\rrenameRequest\022\023\n\013volume_name\030\001 \002(" + "\t\022\023\n\013source_path\030\002 \002(\t\022\023\n\013target_path\030\003 " + "\002(\t\"U\n\016renameResponse\022\023\n\013timestamp_s\030\001 \002" + "(\007\022.\n\005creds\030\002 \001(\0132\037.xtreemfs.pbrpc.FileC" + "redentials\"1\n\014rmdirRequest\022\023\n\013volume_nam" + "e\030\001 \002(\t\022\014\n\004path\030\002 \002(\t\"h\n\016setattrRequest\022" + "\023\n\013volume_name\030\001 \002(\t\022\014\n\004path\030\002 \002(\t\022#\n\005st" + "buf\030\003 \002(\0132\024.xtreemfs.pbrpc.Stat\022\016\n\006to_se" + "t\030\004 \002(\007\"|\n\017setxattrRequest\022\023\n\013volume_nam" + "e\030\001 \002(\t\022\014\n\004path\030\002 \002(\t\022\014\n\004name\030\003 \002(\t\022\r\n\005v" + "alue\030\004 \002(\t\022\032\n\022value_bytes_string\030\006 \001(\014\022\r" + "\n\005flags\030\005 \002(\007\"9\n\016statvfsRequest\022\023\n\013volum" + "e_name\030\001 \002(\t\022\022\n\nknown_etag\030\005 \002(\006\"M\n\016syml" + "inkRequest\022\023\n\013volume_name\030\001 \002(\t\022\023\n\013targe" + "t_path\030\002 \002(\t\022\021\n\tlink_path\030\003 \002(\t\"2\n\runlin" + "kRequest\022\023\n\013volume_name\030\001 \002(\t\022\014\n\004path\030\002 " + "\002(\t\"U\n\016unlinkResponse\022\023\n\013timestamp_s\030\001 \002" + "(\007\022.\n\005creds\030\002 \001(\0132\037.xtreemfs.pbrpc.FileC" + "redentials\"A\n\raccessRequest\022\023\n\013volume_na" + "me\030\001 \002(\t\022\014\n\004path\030\002 \002(\t\022\r\n\005flags\030\003 \002(\007\"Z\n" + "!xtreemfs_check_file_existsRequest\022\021\n\tvo" + "lume_id\030\001 \002(\t\022\020\n\010file_ids\030\002 \003(\t\022\020\n\010osd_u" + "uid\030\003 \002(\t\":\n%xtreemfs_dump_restore_datab" + "aseRequest\022\021\n\tdump_file\030\001 \002(\t\"i\n!xtreemf" + "s_get_suitable_osdsRequest\022\017\n\007file_id\030\001 " + "\001(\t\022\014\n\004path\030\003 \001(\t\022\023\n\013volume_name\030\004 \001(\t\022\020" + "\n\010num_osds\030\002 \002(\007\"7\n\"xtreemfs_get_suitabl" + "e_osdsResponse\022\021\n\tosd_uuids\030\001 \003(\t\"4\n\"xtr" + "eemfs_check_file_existsResponse\022\016\n\006bitma" + "p\030\001 \002(\t\"(\n\021timestampResponse\022\023\n\013timestam" + "p_s\030\001 \002(\007\"!\n\rstringMessage\022\020\n\010a_string\030\001" + " \002(\t\"\'\n\027xtreemfs_listdirRequest\022\014\n\004path\030" + "\001 \002(\t\")\n\030xtreemfs_listdirResponse\022\r\n\005nam" + "es\030\001 \003(\t\"\177\n\033xtreemfs_replica_addRequest\022" + "\017\n\007file_id\030\001 \001(\t\022\014\n\004path\030\003 \001(\t\022\023\n\013volume" + "_name\030\004 \001(\t\022,\n\013new_replica\030\002 \002(\0132\027.xtree" + "mfs.pbrpc.Replica\"R\n\034xtreemfs_replica_li" + "stRequest\022\017\n\007file_id\030\001 \001(\t\022\014\n\004path\030\002 \001(\t" + "\022\023\n\013volume_name\030\003 \001(\t\"f\n\036xtreemfs_replic" + "a_removeRequest\022\017\n\007file_id\030\001 \001(\t\022\014\n\004path" + "\030\003 \001(\t\022\023\n\013volume_name\030\004 \001(\t\022\020\n\010osd_uuid\030" + "\002 \002(\t\"|\n\034xtreemfs_restore_fileRequest\022\021\n" + "\tfile_path\030\001 \002(\t\022\017\n\007file_id\030\002 \002(\t\022\021\n\tfil" + "e_size\030\003 \002(\006\022\020\n\010osd_uuid\030\004 \002(\t\022\023\n\013stripe" + "_size\030\005 \002(\007\",\n\025xtreemfs_rmvolRequest\022\023\n\013" + "volume_name\030\001 \002(\t\"\321\001\n xtreemfs_update_fi" + "le_sizeRequest\022\"\n\004xcap\030\001 \002(\0132\024.xtreemfs." + "pbrpc.XCap\022<\n\022osd_write_response\030\002 \002(\0132 " + ".xtreemfs.pbrpc.OSDWriteResponse\022\022\n\nclos" + "e_file\030\003 \001(\010\0227\n\013coordinates\030\004 \001(\0132\".xtre" + "emfs.pbrpc.VivaldiCoordinates\"S\n)xtreemf" + "s_set_replica_update_policyRequest\022\017\n\007fi" + "le_id\030\001 \002(\t\022\025\n\rupdate_policy\030\002 \002(\t\"G\n*xt" + "reemfs_set_replica_update_policyResponse" + "\022\031\n\021old_update_policy\030\001 \002(\t\"E\n#xtreemfs_" + "set_read_only_xattrRequest\022\017\n\007file_id\030\001 " + "\002(\t\022\r\n\005value\030\002 \002(\010\"7\n$xtreemfs_set_read_" + "only_xattrResponse\022\017\n\007was_set\030\001 \002(\010\"7\n$x" + "treemfs_get_file_credentialsRequest\022\017\n\007f" + "ile_id\030\001 \002(\t*\242\001\n\010Setattrs\022\020\n\014SETATTR_MOD" + "E\020\001\022\017\n\013SETATTR_UID\020\002\022\017\n\013SETATTR_GID\020\004\022\020\n" + "\014SETATTR_SIZE\020\010\022\021\n\rSETATTR_ATIME\020\020\022\021\n\rSE" + "TATTR_MTIME\020 \022\021\n\rSETATTR_CTIME\020@\022\027\n\022SETA" + "TTR_ATTRIBUTES\020\200\001*>\n\013XATTR_FLAGS\022\026\n\022XATT" + "R_FLAGS_CREATE\020\001\022\027\n\023XATTR_FLAGS_REPLACE\020" + "\002*j\n\014ACCESS_FLAGS\022\025\n\021ACCESS_FLAGS_F_OK\020\000" + "\022\025\n\021ACCESS_FLAGS_X_OK\020\001\022\025\n\021ACCESS_FLAGS_" + "W_OK\020\002\022\025\n\021ACCESS_FLAGS_R_OK\020\0042\234\037\n\nMRCSer" + "vice\022S\n\010fsetattr\022\037.xtreemfs.pbrpc.fsetat" + "trRequest\032\035.xtreemfs.pbrpc.emptyResponse" + "\"\007\215\265\030\002\000\000\000\022@\n\tftruncate\022\024.xtreemfs.pbrpc." + "XCap\032\024.xtreemfs.pbrpc.XCap\"\007\215\265\030\003\000\000\000\022S\n\007g" + "etattr\022\036.xtreemfs.pbrpc.getattrRequest\032\037" + ".xtreemfs.pbrpc.getattrResponse\"\007\215\265\030\004\000\000\000" + "\022V\n\010getxattr\022\037.xtreemfs.pbrpc.getxattrRe" + "quest\032 .xtreemfs.pbrpc.getxattrResponse\"" + "\007\215\265\030\005\000\000\000\022O\n\004link\022\033.xtreemfs.pbrpc.linkRe" + "quest\032!.xtreemfs.pbrpc.timestampResponse" + "\"\007\215\265\030\006\000\000\000\022Y\n\tlistxattr\022 .xtreemfs.pbrpc." + "listxattrRequest\032!.xtreemfs.pbrpc.listxa" + "ttrResponse\"\007\215\265\030\007\000\000\000\022Q\n\005mkdir\022\034.xtreemfs" + ".pbrpc.mkdirRequest\032!.xtreemfs.pbrpc.tim" + "estampResponse\"\007\215\265\030\010\000\000\000\022J\n\004open\022\033.xtreem" + "fs.pbrpc.openRequest\032\034.xtreemfs.pbrpc.op" + "enResponse\"\007\215\265\030\t\000\000\000\022T\n\007readdir\022\036.xtreemf" + "s.pbrpc.readdirRequest\032 .xtreemfs.pbrpc." + "DirectoryEntries\"\007\215\265\030\n\000\000\000\022V\n\010readlink\022\037." + "xtreemfs.pbrpc.readlinkRequest\032 .xtreemf" + "s.pbrpc.readlinkResponse\"\007\215\265\030\013\000\000\000\022]\n\013rem" + "ovexattr\022\".xtreemfs.pbrpc.removexattrReq" "uest\032!.xtreemfs.pbrpc.timestampResponse\"" - "\007\215\265\030\020\000\000\000\022K\n\007statvfs\022\036.xtreemfs.pbrpc.sta" - "tvfsRequest\032\027.xtreemfs.pbrpc.StatVFS\"\007\215\265" - "\030\021\000\000\000\022U\n\007symlink\022\036.xtreemfs.pbrpc.symlin" - "kRequest\032!.xtreemfs.pbrpc.timestampRespo" - "nse\"\007\215\265\030\022\000\000\000\022P\n\006unlink\022\035.xtreemfs.pbrpc." - "unlinkRequest\032\036.xtreemfs.pbrpc.unlinkRes" - "ponse\"\007\215\265\030\023\000\000\000\022O\n\006access\022\035.xtreemfs.pbrp" - "c.accessRequest\032\035.xtreemfs.pbrpc.emptyRe" - "sponse\"\007\215\265\030\024\000\000\000\022[\n\023xtreemfs_checkpoint\022\034" - ".xtreemfs.pbrpc.emptyRequest\032\035.xtreemfs." - "pbrpc.emptyResponse\"\007\215\265\030\036\000\000\000\022\214\001\n\032xtreemf" - "s_check_file_exists\0221.xtreemfs.pbrpc.xtr" - "eemfs_check_file_existsRequest\0322.xtreemf" - "s.pbrpc.xtreemfs_check_file_existsRespon" - "se\"\007\215\265\030\037\000\000\000\022w\n\026xtreemfs_dump_database\0225." - "xtreemfs.pbrpc.xtreemfs_dump_restore_dat" - "abaseRequest\032\035.xtreemfs.pbrpc.emptyRespo" - "nse\"\007\215\265\030 \000\000\000\022\214\001\n\032xtreemfs_get_suitable_o" - "sds\0221.xtreemfs.pbrpc.xtreemfs_get_suitab" - "le_osdsRequest\0322.xtreemfs.pbrpc.xtreemfs" - "_get_suitable_osdsResponse\"\007\215\265\030!\000\000\000\022`\n\027x" - "treemfs_internal_debug\022\035.xtreemfs.pbrpc." - "stringMessage\032\035.xtreemfs.pbrpc.stringMes" - "sage\"\007\215\265\030\"\000\000\000\022n\n\020xtreemfs_listdir\022\'.xtre" - "emfs.pbrpc.xtreemfs_listdirRequest\032(.xtr" - "eemfs.pbrpc.xtreemfs_listdirResponse\"\007\215\265" - "\030#\000\000\000\022P\n\016xtreemfs_lsvol\022\034.xtreemfs.pbrpc" - ".emptyRequest\032\027.xtreemfs.pbrpc.Volumes\"\007" - "\215\265\030$\000\000\000\022P\n\016xtreemfs_mkvol\022\026.xtreemfs.pbr" - "pc.Volume\032\035.xtreemfs.pbrpc.emptyResponse" - "\"\007\215\265\030/\000\000\000\022P\n\031xtreemfs_renew_capability\022\024" - ".xtreemfs.pbrpc.XCap\032\024.xtreemfs.pbrpc.XC" - "ap\"\007\215\265\030%\000\000\000\022f\n\036xtreemfs_replication_to_m" - "aster\022\034.xtreemfs.pbrpc.emptyRequest\032\035.xt" - "reemfs.pbrpc.emptyResponse\"\007\215\265\030&\000\000\000\022k\n\024x" - "treemfs_replica_add\022+.xtreemfs.pbrpc.xtr" - "eemfs_replica_addRequest\032\035.xtreemfs.pbrp" - "c.emptyResponse\"\007\215\265\030\'\000\000\000\022h\n\025xtreemfs_rep" - "lica_list\022,.xtreemfs.pbrpc.xtreemfs_repl" - "ica_listRequest\032\030.xtreemfs.pbrpc.Replica" - "s\"\007\215\265\030(\000\000\000\022s\n\027xtreemfs_replica_remove\022.." - "xtreemfs.pbrpc.xtreemfs_replica_removeRe" - "quest\032\037.xtreemfs.pbrpc.FileCredentials\"\007" - "\215\265\030)\000\000\000\022z\n\031xtreemfs_restore_database\0225.x" - "treemfs.pbrpc.xtreemfs_dump_restore_data" - "baseRequest\032\035.xtreemfs.pbrpc.emptyRespon" - "se\"\007\215\265\030*\000\000\000\022m\n\025xtreemfs_restore_file\022,.x" - "treemfs.pbrpc.xtreemfs_restore_fileReque" - "st\032\035.xtreemfs.pbrpc.emptyResponse\"\007\215\265\030+\000" - "\000\000\022_\n\016xtreemfs_rmvol\022%.xtreemfs.pbrpc.xt" - "reemfs_rmvolRequest\032\035.xtreemfs.pbrpc.emp" - "tyResponse\"\007\215\265\030,\000\000\000\022Y\n\021xtreemfs_shutdown" - "\022\034.xtreemfs.pbrpc.emptyRequest\032\035.xtreemf" - "s.pbrpc.emptyResponse\"\007\215\265\030-\000\000\000\022y\n\031xtreem" - "fs_update_file_size\0220.xtreemfs.pbrpc.xtr" - "eemfs_update_file_sizeRequest\032!.xtreemfs" - ".pbrpc.timestampResponse\"\007\215\265\030.\000\000\000\022\244\001\n\"xt" - "reemfs_set_replica_update_policy\0229.xtree" + "\007\215\265\030\014\000\000\000\022P\n\006rename\022\035.xtreemfs.pbrpc.rena" + "meRequest\032\036.xtreemfs.pbrpc.renameRespons" + "e\"\007\215\265\030\r\000\000\000\022Q\n\005rmdir\022\034.xtreemfs.pbrpc.rmd" + "irRequest\032!.xtreemfs.pbrpc.timestampResp" + "onse\"\007\215\265\030\016\000\000\000\022U\n\007setattr\022\036.xtreemfs.pbrp" + "c.setattrRequest\032!.xtreemfs.pbrpc.timest" + "ampResponse\"\007\215\265\030\017\000\000\000\022W\n\010setxattr\022\037.xtree" + "mfs.pbrpc.setxattrRequest\032!.xtreemfs.pbr" + "pc.timestampResponse\"\007\215\265\030\020\000\000\000\022K\n\007statvfs" + "\022\036.xtreemfs.pbrpc.statvfsRequest\032\027.xtree" + "mfs.pbrpc.StatVFS\"\007\215\265\030\021\000\000\000\022U\n\007symlink\022\036." + "xtreemfs.pbrpc.symlinkRequest\032!.xtreemfs" + ".pbrpc.timestampResponse\"\007\215\265\030\022\000\000\000\022P\n\006unl" + "ink\022\035.xtreemfs.pbrpc.unlinkRequest\032\036.xtr" + "eemfs.pbrpc.unlinkResponse\"\007\215\265\030\023\000\000\000\022O\n\006a" + "ccess\022\035.xtreemfs.pbrpc.accessRequest\032\035.x" + "treemfs.pbrpc.emptyResponse\"\007\215\265\030\024\000\000\000\022[\n\023" + "xtreemfs_checkpoint\022\034.xtreemfs.pbrpc.emp" + "tyRequest\032\035.xtreemfs.pbrpc.emptyResponse" + "\"\007\215\265\030\036\000\000\000\022\214\001\n\032xtreemfs_check_file_exists" + "\0221.xtreemfs.pbrpc.xtreemfs_check_file_ex" + "istsRequest\0322.xtreemfs.pbrpc.xtreemfs_ch" + "eck_file_existsResponse\"\007\215\265\030\037\000\000\000\022w\n\026xtre" + "emfs_dump_database\0225.xtreemfs.pbrpc.xtre" + "emfs_dump_restore_databaseRequest\032\035.xtre" + "emfs.pbrpc.emptyResponse\"\007\215\265\030 \000\000\000\022\214\001\n\032xt" + "reemfs_get_suitable_osds\0221.xtreemfs.pbrp" + "c.xtreemfs_get_suitable_osdsRequest\0322.xt" + "reemfs.pbrpc.xtreemfs_get_suitable_osdsR" + "esponse\"\007\215\265\030!\000\000\000\022`\n\027xtreemfs_internal_de" + "bug\022\035.xtreemfs.pbrpc.stringMessage\032\035.xtr" + "eemfs.pbrpc.stringMessage\"\007\215\265\030\"\000\000\000\022n\n\020xt" + "reemfs_listdir\022\'.xtreemfs.pbrpc.xtreemfs" + "_listdirRequest\032(.xtreemfs.pbrpc.xtreemf" + "s_listdirResponse\"\007\215\265\030#\000\000\000\022P\n\016xtreemfs_l" + "svol\022\034.xtreemfs.pbrpc.emptyRequest\032\027.xtr" + "eemfs.pbrpc.Volumes\"\007\215\265\030$\000\000\000\022P\n\016xtreemfs" + "_mkvol\022\026.xtreemfs.pbrpc.Volume\032\035.xtreemf" + "s.pbrpc.emptyResponse\"\007\215\265\030/\000\000\000\022P\n\031xtreem" + "fs_renew_capability\022\024.xtreemfs.pbrpc.XCa" + "p\032\024.xtreemfs.pbrpc.XCap\"\007\215\265\030%\000\000\000\022f\n\036xtre" + "emfs_replication_to_master\022\034.xtreemfs.pb" + "rpc.emptyRequest\032\035.xtreemfs.pbrpc.emptyR" + "esponse\"\007\215\265\030&\000\000\000\022k\n\024xtreemfs_replica_add" + "\022+.xtreemfs.pbrpc.xtreemfs_replica_addRe" + "quest\032\035.xtreemfs.pbrpc.emptyResponse\"\007\215\265" + "\030\'\000\000\000\022h\n\025xtreemfs_replica_list\022,.xtreemf" + "s.pbrpc.xtreemfs_replica_listRequest\032\030.x" + "treemfs.pbrpc.Replicas\"\007\215\265\030(\000\000\000\022s\n\027xtree" + "mfs_replica_remove\022..xtreemfs.pbrpc.xtre" + "emfs_replica_removeRequest\032\037.xtreemfs.pb" + "rpc.FileCredentials\"\007\215\265\030)\000\000\000\022z\n\031xtreemfs" + "_restore_database\0225.xtreemfs.pbrpc.xtree" + "mfs_dump_restore_databaseRequest\032\035.xtree" + "mfs.pbrpc.emptyResponse\"\007\215\265\030*\000\000\000\022m\n\025xtre" + "emfs_restore_file\022,.xtreemfs.pbrpc.xtree" + "mfs_restore_fileRequest\032\035.xtreemfs.pbrpc" + ".emptyResponse\"\007\215\265\030+\000\000\000\022_\n\016xtreemfs_rmvo" + "l\022%.xtreemfs.pbrpc.xtreemfs_rmvolRequest" + "\032\035.xtreemfs.pbrpc.emptyResponse\"\007\215\265\030,\000\000\000" + "\022Y\n\021xtreemfs_shutdown\022\034.xtreemfs.pbrpc.e" + "mptyRequest\032\035.xtreemfs.pbrpc.emptyRespon" + "se\"\007\215\265\030-\000\000\000\022y\n\031xtreemfs_update_file_size" + "\0220.xtreemfs.pbrpc.xtreemfs_update_file_s" + "izeRequest\032!.xtreemfs.pbrpc.timestampRes" + "ponse\"\007\215\265\030.\000\000\000\022\244\001\n\"xtreemfs_set_replica_" + "update_policy\0229.xtreemfs.pbrpc.xtreemfs_" + "set_replica_update_policyRequest\032:.xtree" "mfs.pbrpc.xtreemfs_set_replica_update_po" - "licyRequest\032:.xtreemfs.pbrpc.xtreemfs_se" - "t_replica_update_policyResponse\"\007\215\265\0300\000\000\000" - "\022\222\001\n\034xtreemfs_set_read_only_xattr\0223.xtre" - "emfs.pbrpc.xtreemfs_set_read_only_xattrR" - "equest\0324.xtreemfs.pbrpc.xtreemfs_set_rea" - "d_only_xattrResponse\"\007\215\265\0301\000\000\000\022\177\n\035xtreemf" - "s_get_file_credentials\0224.xtreemfs.pbrpc." - "xtreemfs_get_file_credentialsRequest\032\037.x" - "treemfs.pbrpc.FileCredentials\"\007\215\265\0302\000\000\000\032\007" - "\225\265\030!N\000\000B(\n&org.xtreemfs.pbrpc.generatedi" - "nterfaces", 9169); + "licyResponse\"\007\215\265\0300\000\000\000\022\222\001\n\034xtreemfs_set_r" + "ead_only_xattr\0223.xtreemfs.pbrpc.xtreemfs" + "_set_read_only_xattrRequest\0324.xtreemfs.p" + "brpc.xtreemfs_set_read_only_xattrRespons" + "e\"\007\215\265\0301\000\000\000\022\177\n\035xtreemfs_get_file_credenti" + "als\0224.xtreemfs.pbrpc.xtreemfs_get_file_c" + "redentialsRequest\032\037.xtreemfs.pbrpc.FileC" + "redentials\"\007\215\265\0302\000\000\000\032\007\225\265\030!N\000\000B(\n&org.xtre" + "emfs.pbrpc.generatedinterfaces", 9190); ::google::protobuf::MessageFactory::InternalRegisterGeneratedFile( "xtreemfs/MRC.proto", &protobuf_RegisterTypes); Stat::default_instance_ = new Stat(); @@ -1654,7 +1658,6 @@ struct StaticDescriptorInitializer_xtreemfs_2fMRC_2eproto { protobuf_AddDesc_xtreemfs_2fMRC_2eproto(); } } static_descriptor_initializer_xtreemfs_2fMRC_2eproto_; - const ::google::protobuf::EnumDescriptor* Setattrs_descriptor() { protobuf_AssignDescriptorsOnce(); return Setattrs_descriptor_; @@ -1708,8 +1711,6 @@ bool ACCESS_FLAGS_IsValid(int value) { // =================================================================== -const ::std::string Stat::_default_user_id_; -const ::std::string Stat::_default_group_id_; #ifndef _MSC_VER const int Stat::kDevFieldNumber; const int Stat::kInoFieldNumber; @@ -1747,8 +1748,8 @@ void Stat::SharedCtor() { ino_ = GOOGLE_ULONGLONG(0); mode_ = 0u; nlink_ = 0u; - user_id_ = const_cast< ::std::string*>(&_default_user_id_); - group_id_ = const_cast< ::std::string*>(&_default_group_id_); + user_id_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + group_id_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); size_ = GOOGLE_ULONGLONG(0); atime_ns_ = GOOGLE_ULONGLONG(0); mtime_ns_ = GOOGLE_ULONGLONG(0); @@ -1765,10 +1766,10 @@ Stat::~Stat() { } void Stat::SharedDtor() { - if (user_id_ != &_default_user_id_) { + if (user_id_ != &::google::protobuf::internal::kEmptyString) { delete user_id_; } - if (group_id_ != &_default_group_id_) { + if (group_id_ != &::google::protobuf::internal::kEmptyString) { delete group_id_; } if (this != default_instance_) { @@ -1786,7 +1787,8 @@ const ::google::protobuf::Descriptor* Stat::descriptor() { } const Stat& Stat::default_instance() { - if (default_instance_ == NULL) protobuf_AddDesc_xtreemfs_2fMRC_2eproto(); return *default_instance_; + if (default_instance_ == NULL) protobuf_AddDesc_xtreemfs_2fMRC_2eproto(); + return *default_instance_; } Stat* Stat::default_instance_ = NULL; @@ -1801,13 +1803,13 @@ void Stat::Clear() { ino_ = GOOGLE_ULONGLONG(0); mode_ = 0u; nlink_ = 0u; - if (_has_bit(4)) { - if (user_id_ != &_default_user_id_) { + if (has_user_id()) { + if (user_id_ != &::google::protobuf::internal::kEmptyString) { user_id_->clear(); } } - if (_has_bit(5)) { - if (group_id_ != &_default_group_id_) { + if (has_group_id()) { + if (group_id_ != &::google::protobuf::internal::kEmptyString) { group_id_->clear(); } } @@ -1839,14 +1841,14 @@ bool Stat::MergePartialFromCodedStream( DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive< ::google::protobuf::uint64, ::google::protobuf::internal::WireFormatLite::TYPE_FIXED64>( input, &dev_))); - _set_bit(0); + set_has_dev(); } else { goto handle_uninterpreted; } if (input->ExpectTag(17)) goto parse_ino; break; } - + // required fixed64 ino = 2; case 2: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -1855,14 +1857,14 @@ bool Stat::MergePartialFromCodedStream( DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive< ::google::protobuf::uint64, ::google::protobuf::internal::WireFormatLite::TYPE_FIXED64>( input, &ino_))); - _set_bit(1); + set_has_ino(); } else { goto handle_uninterpreted; } if (input->ExpectTag(29)) goto parse_mode; break; } - + // required fixed32 mode = 3; case 3: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -1871,14 +1873,14 @@ bool Stat::MergePartialFromCodedStream( DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive< ::google::protobuf::uint32, ::google::protobuf::internal::WireFormatLite::TYPE_FIXED32>( input, &mode_))); - _set_bit(2); + set_has_mode(); } else { goto handle_uninterpreted; } if (input->ExpectTag(37)) goto parse_nlink; break; } - + // required fixed32 nlink = 4; case 4: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -1887,14 +1889,14 @@ bool Stat::MergePartialFromCodedStream( DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive< ::google::protobuf::uint32, ::google::protobuf::internal::WireFormatLite::TYPE_FIXED32>( input, &nlink_))); - _set_bit(3); + set_has_nlink(); } else { goto handle_uninterpreted; } if (input->ExpectTag(42)) goto parse_user_id; break; } - + // required string user_id = 5; case 5: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -1911,7 +1913,7 @@ bool Stat::MergePartialFromCodedStream( if (input->ExpectTag(50)) goto parse_group_id; break; } - + // required string group_id = 6; case 6: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -1928,7 +1930,7 @@ bool Stat::MergePartialFromCodedStream( if (input->ExpectTag(57)) goto parse_size; break; } - + // required fixed64 size = 7; case 7: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -1937,14 +1939,14 @@ bool Stat::MergePartialFromCodedStream( DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive< ::google::protobuf::uint64, ::google::protobuf::internal::WireFormatLite::TYPE_FIXED64>( input, &size_))); - _set_bit(6); + set_has_size(); } else { goto handle_uninterpreted; } if (input->ExpectTag(65)) goto parse_atime_ns; break; } - + // required fixed64 atime_ns = 8; case 8: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -1953,14 +1955,14 @@ bool Stat::MergePartialFromCodedStream( DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive< ::google::protobuf::uint64, ::google::protobuf::internal::WireFormatLite::TYPE_FIXED64>( input, &atime_ns_))); - _set_bit(7); + set_has_atime_ns(); } else { goto handle_uninterpreted; } if (input->ExpectTag(73)) goto parse_mtime_ns; break; } - + // required fixed64 mtime_ns = 9; case 9: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -1969,14 +1971,14 @@ bool Stat::MergePartialFromCodedStream( DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive< ::google::protobuf::uint64, ::google::protobuf::internal::WireFormatLite::TYPE_FIXED64>( input, &mtime_ns_))); - _set_bit(8); + set_has_mtime_ns(); } else { goto handle_uninterpreted; } if (input->ExpectTag(81)) goto parse_ctime_ns; break; } - + // required fixed64 ctime_ns = 10; case 10: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -1985,14 +1987,14 @@ bool Stat::MergePartialFromCodedStream( DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive< ::google::protobuf::uint64, ::google::protobuf::internal::WireFormatLite::TYPE_FIXED64>( input, &ctime_ns_))); - _set_bit(9); + set_has_ctime_ns(); } else { goto handle_uninterpreted; } if (input->ExpectTag(93)) goto parse_blksize; break; } - + // required fixed32 blksize = 11; case 11: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -2001,14 +2003,14 @@ bool Stat::MergePartialFromCodedStream( DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive< ::google::protobuf::uint32, ::google::protobuf::internal::WireFormatLite::TYPE_FIXED32>( input, &blksize_))); - _set_bit(10); + set_has_blksize(); } else { goto handle_uninterpreted; } if (input->ExpectTag(97)) goto parse_etag; break; } - + // optional fixed64 etag = 12; case 12: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -2017,14 +2019,14 @@ bool Stat::MergePartialFromCodedStream( DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive< ::google::protobuf::uint64, ::google::protobuf::internal::WireFormatLite::TYPE_FIXED64>( input, &etag_))); - _set_bit(11); + set_has_etag(); } else { goto handle_uninterpreted; } if (input->ExpectTag(109)) goto parse_truncate_epoch; break; } - + // required fixed32 truncate_epoch = 13; case 13: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -2033,14 +2035,14 @@ bool Stat::MergePartialFromCodedStream( DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive< ::google::protobuf::uint32, ::google::protobuf::internal::WireFormatLite::TYPE_FIXED32>( input, &truncate_epoch_))); - _set_bit(12); + set_has_truncate_epoch(); } else { goto handle_uninterpreted; } if (input->ExpectTag(117)) goto parse_attributes; break; } - + // optional fixed32 attributes = 14; case 14: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -2049,14 +2051,14 @@ bool Stat::MergePartialFromCodedStream( DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive< ::google::protobuf::uint32, ::google::protobuf::internal::WireFormatLite::TYPE_FIXED32>( input, &attributes_))); - _set_bit(13); + set_has_attributes(); } else { goto handle_uninterpreted; } if (input->ExpectAtEnd()) return true; break; } - + default: { handle_uninterpreted: if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -2076,83 +2078,83 @@ bool Stat::MergePartialFromCodedStream( void Stat::SerializeWithCachedSizes( ::google::protobuf::io::CodedOutputStream* output) const { // required fixed64 dev = 1; - if (_has_bit(0)) { + if (has_dev()) { ::google::protobuf::internal::WireFormatLite::WriteFixed64(1, this->dev(), output); } - + // required fixed64 ino = 2; - if (_has_bit(1)) { + if (has_ino()) { ::google::protobuf::internal::WireFormatLite::WriteFixed64(2, this->ino(), output); } - + // required fixed32 mode = 3; - if (_has_bit(2)) { + if (has_mode()) { ::google::protobuf::internal::WireFormatLite::WriteFixed32(3, this->mode(), output); } - + // required fixed32 nlink = 4; - if (_has_bit(3)) { + if (has_nlink()) { ::google::protobuf::internal::WireFormatLite::WriteFixed32(4, this->nlink(), output); } - + // required string user_id = 5; - if (_has_bit(4)) { + if (has_user_id()) { ::google::protobuf::internal::WireFormat::VerifyUTF8String( this->user_id().data(), this->user_id().length(), ::google::protobuf::internal::WireFormat::SERIALIZE); ::google::protobuf::internal::WireFormatLite::WriteString( 5, this->user_id(), output); } - + // required string group_id = 6; - if (_has_bit(5)) { + if (has_group_id()) { ::google::protobuf::internal::WireFormat::VerifyUTF8String( this->group_id().data(), this->group_id().length(), ::google::protobuf::internal::WireFormat::SERIALIZE); ::google::protobuf::internal::WireFormatLite::WriteString( 6, this->group_id(), output); } - + // required fixed64 size = 7; - if (_has_bit(6)) { + if (has_size()) { ::google::protobuf::internal::WireFormatLite::WriteFixed64(7, this->size(), output); } - + // required fixed64 atime_ns = 8; - if (_has_bit(7)) { + if (has_atime_ns()) { ::google::protobuf::internal::WireFormatLite::WriteFixed64(8, this->atime_ns(), output); } - + // required fixed64 mtime_ns = 9; - if (_has_bit(8)) { + if (has_mtime_ns()) { ::google::protobuf::internal::WireFormatLite::WriteFixed64(9, this->mtime_ns(), output); } - + // required fixed64 ctime_ns = 10; - if (_has_bit(9)) { + if (has_ctime_ns()) { ::google::protobuf::internal::WireFormatLite::WriteFixed64(10, this->ctime_ns(), output); } - + // required fixed32 blksize = 11; - if (_has_bit(10)) { + if (has_blksize()) { ::google::protobuf::internal::WireFormatLite::WriteFixed32(11, this->blksize(), output); } - + // optional fixed64 etag = 12; - if (_has_bit(11)) { + if (has_etag()) { ::google::protobuf::internal::WireFormatLite::WriteFixed64(12, this->etag(), output); } - + // required fixed32 truncate_epoch = 13; - if (_has_bit(12)) { + if (has_truncate_epoch()) { ::google::protobuf::internal::WireFormatLite::WriteFixed32(13, this->truncate_epoch(), output); } - + // optional fixed32 attributes = 14; - if (_has_bit(13)) { + if (has_attributes()) { ::google::protobuf::internal::WireFormatLite::WriteFixed32(14, this->attributes(), output); } - + if (!unknown_fields().empty()) { ::google::protobuf::internal::WireFormat::SerializeUnknownFields( unknown_fields(), output); @@ -2162,27 +2164,27 @@ void Stat::SerializeWithCachedSizes( ::google::protobuf::uint8* Stat::SerializeWithCachedSizesToArray( ::google::protobuf::uint8* target) const { // required fixed64 dev = 1; - if (_has_bit(0)) { + if (has_dev()) { target = ::google::protobuf::internal::WireFormatLite::WriteFixed64ToArray(1, this->dev(), target); } - + // required fixed64 ino = 2; - if (_has_bit(1)) { + if (has_ino()) { target = ::google::protobuf::internal::WireFormatLite::WriteFixed64ToArray(2, this->ino(), target); } - + // required fixed32 mode = 3; - if (_has_bit(2)) { + if (has_mode()) { target = ::google::protobuf::internal::WireFormatLite::WriteFixed32ToArray(3, this->mode(), target); } - + // required fixed32 nlink = 4; - if (_has_bit(3)) { + if (has_nlink()) { target = ::google::protobuf::internal::WireFormatLite::WriteFixed32ToArray(4, this->nlink(), target); } - + // required string user_id = 5; - if (_has_bit(4)) { + if (has_user_id()) { ::google::protobuf::internal::WireFormat::VerifyUTF8String( this->user_id().data(), this->user_id().length(), ::google::protobuf::internal::WireFormat::SERIALIZE); @@ -2190,9 +2192,9 @@ void Stat::SerializeWithCachedSizes( ::google::protobuf::internal::WireFormatLite::WriteStringToArray( 5, this->user_id(), target); } - + // required string group_id = 6; - if (_has_bit(5)) { + if (has_group_id()) { ::google::protobuf::internal::WireFormat::VerifyUTF8String( this->group_id().data(), this->group_id().length(), ::google::protobuf::internal::WireFormat::SERIALIZE); @@ -2200,47 +2202,47 @@ void Stat::SerializeWithCachedSizes( ::google::protobuf::internal::WireFormatLite::WriteStringToArray( 6, this->group_id(), target); } - + // required fixed64 size = 7; - if (_has_bit(6)) { + if (has_size()) { target = ::google::protobuf::internal::WireFormatLite::WriteFixed64ToArray(7, this->size(), target); } - + // required fixed64 atime_ns = 8; - if (_has_bit(7)) { + if (has_atime_ns()) { target = ::google::protobuf::internal::WireFormatLite::WriteFixed64ToArray(8, this->atime_ns(), target); } - + // required fixed64 mtime_ns = 9; - if (_has_bit(8)) { + if (has_mtime_ns()) { target = ::google::protobuf::internal::WireFormatLite::WriteFixed64ToArray(9, this->mtime_ns(), target); } - + // required fixed64 ctime_ns = 10; - if (_has_bit(9)) { + if (has_ctime_ns()) { target = ::google::protobuf::internal::WireFormatLite::WriteFixed64ToArray(10, this->ctime_ns(), target); } - + // required fixed32 blksize = 11; - if (_has_bit(10)) { + if (has_blksize()) { target = ::google::protobuf::internal::WireFormatLite::WriteFixed32ToArray(11, this->blksize(), target); } - + // optional fixed64 etag = 12; - if (_has_bit(11)) { + if (has_etag()) { target = ::google::protobuf::internal::WireFormatLite::WriteFixed64ToArray(12, this->etag(), target); } - + // required fixed32 truncate_epoch = 13; - if (_has_bit(12)) { + if (has_truncate_epoch()) { target = ::google::protobuf::internal::WireFormatLite::WriteFixed32ToArray(13, this->truncate_epoch(), target); } - + // optional fixed32 attributes = 14; - if (_has_bit(13)) { + if (has_attributes()) { target = ::google::protobuf::internal::WireFormatLite::WriteFixed32ToArray(14, this->attributes(), target); } - + if (!unknown_fields().empty()) { target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray( unknown_fields(), target); @@ -2250,84 +2252,84 @@ void Stat::SerializeWithCachedSizes( int Stat::ByteSize() const { int total_size = 0; - + if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) { // required fixed64 dev = 1; if (has_dev()) { total_size += 1 + 8; } - + // required fixed64 ino = 2; if (has_ino()) { total_size += 1 + 8; } - + // required fixed32 mode = 3; if (has_mode()) { total_size += 1 + 4; } - + // required fixed32 nlink = 4; if (has_nlink()) { total_size += 1 + 4; } - + // required string user_id = 5; if (has_user_id()) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::StringSize( this->user_id()); } - + // required string group_id = 6; if (has_group_id()) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::StringSize( this->group_id()); } - + // required fixed64 size = 7; if (has_size()) { total_size += 1 + 8; } - + // required fixed64 atime_ns = 8; if (has_atime_ns()) { total_size += 1 + 8; } - + } if (_has_bits_[8 / 32] & (0xffu << (8 % 32))) { // required fixed64 mtime_ns = 9; if (has_mtime_ns()) { total_size += 1 + 8; } - + // required fixed64 ctime_ns = 10; if (has_ctime_ns()) { total_size += 1 + 8; } - + // required fixed32 blksize = 11; if (has_blksize()) { total_size += 1 + 4; } - + // optional fixed64 etag = 12; if (has_etag()) { total_size += 1 + 8; } - + // required fixed32 truncate_epoch = 13; if (has_truncate_epoch()) { total_size += 1 + 4; } - + // optional fixed32 attributes = 14; if (has_attributes()) { total_size += 1 + 4; } - + } if (!unknown_fields().empty()) { total_size += @@ -2355,48 +2357,48 @@ void Stat::MergeFrom(const ::google::protobuf::Message& from) { void Stat::MergeFrom(const Stat& from) { GOOGLE_CHECK_NE(&from, this); if (from._has_bits_[0 / 32] & (0xffu << (0 % 32))) { - if (from._has_bit(0)) { + if (from.has_dev()) { set_dev(from.dev()); } - if (from._has_bit(1)) { + if (from.has_ino()) { set_ino(from.ino()); } - if (from._has_bit(2)) { + if (from.has_mode()) { set_mode(from.mode()); } - if (from._has_bit(3)) { + if (from.has_nlink()) { set_nlink(from.nlink()); } - if (from._has_bit(4)) { + if (from.has_user_id()) { set_user_id(from.user_id()); } - if (from._has_bit(5)) { + if (from.has_group_id()) { set_group_id(from.group_id()); } - if (from._has_bit(6)) { + if (from.has_size()) { set_size(from.size()); } - if (from._has_bit(7)) { + if (from.has_atime_ns()) { set_atime_ns(from.atime_ns()); } } if (from._has_bits_[8 / 32] & (0xffu << (8 % 32))) { - if (from._has_bit(8)) { + if (from.has_mtime_ns()) { set_mtime_ns(from.mtime_ns()); } - if (from._has_bit(9)) { + if (from.has_ctime_ns()) { set_ctime_ns(from.ctime_ns()); } - if (from._has_bit(10)) { + if (from.has_blksize()) { set_blksize(from.blksize()); } - if (from._has_bit(11)) { + if (from.has_etag()) { set_etag(from.etag()); } - if (from._has_bit(12)) { + if (from.has_truncate_epoch()) { set_truncate_epoch(from.truncate_epoch()); } - if (from._has_bit(13)) { + if (from.has_attributes()) { set_attributes(from.attributes()); } } @@ -2417,7 +2419,7 @@ void Stat::CopyFrom(const Stat& from) { bool Stat::IsInitialized() const { if ((_has_bits_[0] & 0x000017ff) != 0x000017ff) return false; - + return true; } @@ -2454,7 +2456,6 @@ void Stat::Swap(Stat* other) { // =================================================================== -const ::std::string DirectoryEntry::_default_name_; #ifndef _MSC_VER const int DirectoryEntry::kNameFieldNumber; const int DirectoryEntry::kStbufFieldNumber; @@ -2477,7 +2478,7 @@ DirectoryEntry::DirectoryEntry(const DirectoryEntry& from) void DirectoryEntry::SharedCtor() { _cached_size_ = 0; - name_ = const_cast< ::std::string*>(&_default_name_); + name_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); stbuf_ = NULL; ::memset(_has_bits_, 0, sizeof(_has_bits_)); } @@ -2487,7 +2488,7 @@ DirectoryEntry::~DirectoryEntry() { } void DirectoryEntry::SharedDtor() { - if (name_ != &_default_name_) { + if (name_ != &::google::protobuf::internal::kEmptyString) { delete name_; } if (this != default_instance_) { @@ -2506,7 +2507,8 @@ const ::google::protobuf::Descriptor* DirectoryEntry::descriptor() { } const DirectoryEntry& DirectoryEntry::default_instance() { - if (default_instance_ == NULL) protobuf_AddDesc_xtreemfs_2fMRC_2eproto(); return *default_instance_; + if (default_instance_ == NULL) protobuf_AddDesc_xtreemfs_2fMRC_2eproto(); + return *default_instance_; } DirectoryEntry* DirectoryEntry::default_instance_ = NULL; @@ -2517,12 +2519,12 @@ DirectoryEntry* DirectoryEntry::New() const { void DirectoryEntry::Clear() { if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) { - if (_has_bit(0)) { - if (name_ != &_default_name_) { + if (has_name()) { + if (name_ != &::google::protobuf::internal::kEmptyString) { name_->clear(); } } - if (_has_bit(1)) { + if (has_stbuf()) { if (stbuf_ != NULL) stbuf_->::xtreemfs::pbrpc::Stat::Clear(); } } @@ -2551,7 +2553,7 @@ bool DirectoryEntry::MergePartialFromCodedStream( if (input->ExpectTag(18)) goto parse_stbuf; break; } - + // optional .xtreemfs.pbrpc.Stat stbuf = 2; case 2: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -2565,7 +2567,7 @@ bool DirectoryEntry::MergePartialFromCodedStream( if (input->ExpectAtEnd()) return true; break; } - + default: { handle_uninterpreted: if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -2585,20 +2587,20 @@ bool DirectoryEntry::MergePartialFromCodedStream( void DirectoryEntry::SerializeWithCachedSizes( ::google::protobuf::io::CodedOutputStream* output) const { // required string name = 1; - if (_has_bit(0)) { + if (has_name()) { ::google::protobuf::internal::WireFormat::VerifyUTF8String( this->name().data(), this->name().length(), ::google::protobuf::internal::WireFormat::SERIALIZE); ::google::protobuf::internal::WireFormatLite::WriteString( 1, this->name(), output); } - + // optional .xtreemfs.pbrpc.Stat stbuf = 2; - if (_has_bit(1)) { + if (has_stbuf()) { ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray( 2, this->stbuf(), output); } - + if (!unknown_fields().empty()) { ::google::protobuf::internal::WireFormat::SerializeUnknownFields( unknown_fields(), output); @@ -2608,7 +2610,7 @@ void DirectoryEntry::SerializeWithCachedSizes( ::google::protobuf::uint8* DirectoryEntry::SerializeWithCachedSizesToArray( ::google::protobuf::uint8* target) const { // required string name = 1; - if (_has_bit(0)) { + if (has_name()) { ::google::protobuf::internal::WireFormat::VerifyUTF8String( this->name().data(), this->name().length(), ::google::protobuf::internal::WireFormat::SERIALIZE); @@ -2616,14 +2618,14 @@ void DirectoryEntry::SerializeWithCachedSizes( ::google::protobuf::internal::WireFormatLite::WriteStringToArray( 1, this->name(), target); } - + // optional .xtreemfs.pbrpc.Stat stbuf = 2; - if (_has_bit(1)) { + if (has_stbuf()) { target = ::google::protobuf::internal::WireFormatLite:: WriteMessageNoVirtualToArray( 2, this->stbuf(), target); } - + if (!unknown_fields().empty()) { target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray( unknown_fields(), target); @@ -2633,7 +2635,7 @@ void DirectoryEntry::SerializeWithCachedSizes( int DirectoryEntry::ByteSize() const { int total_size = 0; - + if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) { // required string name = 1; if (has_name()) { @@ -2641,14 +2643,14 @@ int DirectoryEntry::ByteSize() const { ::google::protobuf::internal::WireFormatLite::StringSize( this->name()); } - + // optional .xtreemfs.pbrpc.Stat stbuf = 2; if (has_stbuf()) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::MessageSizeNoVirtual( this->stbuf()); } - + } if (!unknown_fields().empty()) { total_size += @@ -2676,10 +2678,10 @@ void DirectoryEntry::MergeFrom(const ::google::protobuf::Message& from) { void DirectoryEntry::MergeFrom(const DirectoryEntry& from) { GOOGLE_CHECK_NE(&from, this); if (from._has_bits_[0 / 32] & (0xffu << (0 % 32))) { - if (from._has_bit(0)) { + if (from.has_name()) { set_name(from.name()); } - if (from._has_bit(1)) { + if (from.has_stbuf()) { mutable_stbuf()->::xtreemfs::pbrpc::Stat::MergeFrom(from.stbuf()); } } @@ -2700,7 +2702,7 @@ void DirectoryEntry::CopyFrom(const DirectoryEntry& from) { bool DirectoryEntry::IsInitialized() const { if ((_has_bits_[0] & 0x00000001) != 0x00000001) return false; - + if (has_stbuf()) { if (!this->stbuf().IsInitialized()) return false; } @@ -2771,7 +2773,8 @@ const ::google::protobuf::Descriptor* DirectoryEntries::descriptor() { } const DirectoryEntries& DirectoryEntries::default_instance() { - if (default_instance_ == NULL) protobuf_AddDesc_xtreemfs_2fMRC_2eproto(); return *default_instance_; + if (default_instance_ == NULL) protobuf_AddDesc_xtreemfs_2fMRC_2eproto(); + return *default_instance_; } DirectoryEntries* DirectoryEntries::default_instance_ = NULL; @@ -2806,7 +2809,7 @@ bool DirectoryEntries::MergePartialFromCodedStream( if (input->ExpectAtEnd()) return true; break; } - + default: { handle_uninterpreted: if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -2830,7 +2833,7 @@ void DirectoryEntries::SerializeWithCachedSizes( ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray( 1, this->entries(i), output); } - + if (!unknown_fields().empty()) { ::google::protobuf::internal::WireFormat::SerializeUnknownFields( unknown_fields(), output); @@ -2845,7 +2848,7 @@ void DirectoryEntries::SerializeWithCachedSizes( WriteMessageNoVirtualToArray( 1, this->entries(i), target); } - + if (!unknown_fields().empty()) { target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray( unknown_fields(), target); @@ -2855,7 +2858,7 @@ void DirectoryEntries::SerializeWithCachedSizes( int DirectoryEntries::ByteSize() const { int total_size = 0; - + // repeated .xtreemfs.pbrpc.DirectoryEntry entries = 1; total_size += 1 * this->entries_size(); for (int i = 0; i < this->entries_size(); i++) { @@ -2863,7 +2866,7 @@ int DirectoryEntries::ByteSize() const { ::google::protobuf::internal::WireFormatLite::MessageSizeNoVirtual( this->entries(i)); } - + if (!unknown_fields().empty()) { total_size += ::google::protobuf::internal::WireFormat::ComputeUnknownFieldsSize( @@ -2906,7 +2909,7 @@ void DirectoryEntries::CopyFrom(const DirectoryEntries& from) { } bool DirectoryEntries::IsInitialized() const { - + for (int i = 0; i < entries_size(); i++) { if (!this->entries(i).IsInitialized()) return false; } @@ -2933,13 +2936,10 @@ void DirectoryEntries::Swap(DirectoryEntries* other) { // =================================================================== -const ::std::string XAttr::_default_name_; -const ::std::string XAttr::_default_value_; -const ::std::string XAttr::_default_value_bytes_; #ifndef _MSC_VER const int XAttr::kNameFieldNumber; const int XAttr::kValueFieldNumber; -const int XAttr::kValueBytesFieldNumber; +const int XAttr::kValueBytesStringFieldNumber; #endif // !_MSC_VER XAttr::XAttr() @@ -2958,9 +2958,9 @@ XAttr::XAttr(const XAttr& from) void XAttr::SharedCtor() { _cached_size_ = 0; - name_ = const_cast< ::std::string*>(&_default_name_); - value_ = const_cast< ::std::string*>(&_default_value_); - value_bytes_ = const_cast< ::std::string*>(&_default_value_bytes_); + name_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + value_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + value_bytes_string_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); ::memset(_has_bits_, 0, sizeof(_has_bits_)); } @@ -2969,14 +2969,14 @@ XAttr::~XAttr() { } void XAttr::SharedDtor() { - if (name_ != &_default_name_) { + if (name_ != &::google::protobuf::internal::kEmptyString) { delete name_; } - if (value_ != &_default_value_) { + if (value_ != &::google::protobuf::internal::kEmptyString) { delete value_; } - if (value_bytes_ != &_default_value_bytes_) { - delete value_bytes_; + if (value_bytes_string_ != &::google::protobuf::internal::kEmptyString) { + delete value_bytes_string_; } if (this != default_instance_) { } @@ -2993,7 +2993,8 @@ const ::google::protobuf::Descriptor* XAttr::descriptor() { } const XAttr& XAttr::default_instance() { - if (default_instance_ == NULL) protobuf_AddDesc_xtreemfs_2fMRC_2eproto(); return *default_instance_; + if (default_instance_ == NULL) protobuf_AddDesc_xtreemfs_2fMRC_2eproto(); + return *default_instance_; } XAttr* XAttr::default_instance_ = NULL; @@ -3004,19 +3005,19 @@ XAttr* XAttr::New() const { void XAttr::Clear() { if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) { - if (_has_bit(0)) { - if (name_ != &_default_name_) { + if (has_name()) { + if (name_ != &::google::protobuf::internal::kEmptyString) { name_->clear(); } } - if (_has_bit(1)) { - if (value_ != &_default_value_) { + if (has_value()) { + if (value_ != &::google::protobuf::internal::kEmptyString) { value_->clear(); } } - if (_has_bit(2)) { - if (value_bytes_ != &_default_value_bytes_) { - value_bytes_->clear(); + if (has_value_bytes_string()) { + if (value_bytes_string_ != &::google::protobuf::internal::kEmptyString) { + value_bytes_string_->clear(); } } } @@ -3045,7 +3046,7 @@ bool XAttr::MergePartialFromCodedStream( if (input->ExpectTag(18)) goto parse_value; break; } - + // optional string value = 2; case 2: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -3059,24 +3060,24 @@ bool XAttr::MergePartialFromCodedStream( } else { goto handle_uninterpreted; } - if (input->ExpectTag(26)) goto parse_value_bytes; + if (input->ExpectTag(26)) goto parse_value_bytes_string; break; } - - // optional bytes value_bytes = 3; + + // optional bytes value_bytes_string = 3; case 3: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) { - parse_value_bytes: + parse_value_bytes_string: DO_(::google::protobuf::internal::WireFormatLite::ReadBytes( - input, this->mutable_value_bytes())); + input, this->mutable_value_bytes_string())); } else { goto handle_uninterpreted; } if (input->ExpectAtEnd()) return true; break; } - + default: { handle_uninterpreted: if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -3096,29 +3097,29 @@ bool XAttr::MergePartialFromCodedStream( void XAttr::SerializeWithCachedSizes( ::google::protobuf::io::CodedOutputStream* output) const { // required string name = 1; - if (_has_bit(0)) { + if (has_name()) { ::google::protobuf::internal::WireFormat::VerifyUTF8String( this->name().data(), this->name().length(), ::google::protobuf::internal::WireFormat::SERIALIZE); ::google::protobuf::internal::WireFormatLite::WriteString( 1, this->name(), output); } - + // optional string value = 2; - if (_has_bit(1)) { + if (has_value()) { ::google::protobuf::internal::WireFormat::VerifyUTF8String( this->value().data(), this->value().length(), ::google::protobuf::internal::WireFormat::SERIALIZE); ::google::protobuf::internal::WireFormatLite::WriteString( 2, this->value(), output); } - - // optional bytes value_bytes = 3; - if (_has_bit(2)) { + + // optional bytes value_bytes_string = 3; + if (has_value_bytes_string()) { ::google::protobuf::internal::WireFormatLite::WriteBytes( - 3, this->value_bytes(), output); + 3, this->value_bytes_string(), output); } - + if (!unknown_fields().empty()) { ::google::protobuf::internal::WireFormat::SerializeUnknownFields( unknown_fields(), output); @@ -3128,7 +3129,7 @@ void XAttr::SerializeWithCachedSizes( ::google::protobuf::uint8* XAttr::SerializeWithCachedSizesToArray( ::google::protobuf::uint8* target) const { // required string name = 1; - if (_has_bit(0)) { + if (has_name()) { ::google::protobuf::internal::WireFormat::VerifyUTF8String( this->name().data(), this->name().length(), ::google::protobuf::internal::WireFormat::SERIALIZE); @@ -3136,9 +3137,9 @@ void XAttr::SerializeWithCachedSizes( ::google::protobuf::internal::WireFormatLite::WriteStringToArray( 1, this->name(), target); } - + // optional string value = 2; - if (_has_bit(1)) { + if (has_value()) { ::google::protobuf::internal::WireFormat::VerifyUTF8String( this->value().data(), this->value().length(), ::google::protobuf::internal::WireFormat::SERIALIZE); @@ -3146,14 +3147,14 @@ void XAttr::SerializeWithCachedSizes( ::google::protobuf::internal::WireFormatLite::WriteStringToArray( 2, this->value(), target); } - - // optional bytes value_bytes = 3; - if (_has_bit(2)) { + + // optional bytes value_bytes_string = 3; + if (has_value_bytes_string()) { target = ::google::protobuf::internal::WireFormatLite::WriteBytesToArray( - 3, this->value_bytes(), target); + 3, this->value_bytes_string(), target); } - + if (!unknown_fields().empty()) { target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray( unknown_fields(), target); @@ -3163,7 +3164,7 @@ void XAttr::SerializeWithCachedSizes( int XAttr::ByteSize() const { int total_size = 0; - + if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) { // required string name = 1; if (has_name()) { @@ -3171,21 +3172,21 @@ int XAttr::ByteSize() const { ::google::protobuf::internal::WireFormatLite::StringSize( this->name()); } - + // optional string value = 2; if (has_value()) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::StringSize( this->value()); } - - // optional bytes value_bytes = 3; - if (has_value_bytes()) { + + // optional bytes value_bytes_string = 3; + if (has_value_bytes_string()) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::BytesSize( - this->value_bytes()); + this->value_bytes_string()); } - + } if (!unknown_fields().empty()) { total_size += @@ -3213,14 +3214,14 @@ void XAttr::MergeFrom(const ::google::protobuf::Message& from) { void XAttr::MergeFrom(const XAttr& from) { GOOGLE_CHECK_NE(&from, this); if (from._has_bits_[0 / 32] & (0xffu << (0 % 32))) { - if (from._has_bit(0)) { + if (from.has_name()) { set_name(from.name()); } - if (from._has_bit(1)) { + if (from.has_value()) { set_value(from.value()); } - if (from._has_bit(2)) { - set_value_bytes(from.value_bytes()); + if (from.has_value_bytes_string()) { + set_value_bytes_string(from.value_bytes_string()); } } mutable_unknown_fields()->MergeFrom(from.unknown_fields()); @@ -3240,7 +3241,7 @@ void XAttr::CopyFrom(const XAttr& from) { bool XAttr::IsInitialized() const { if ((_has_bits_[0] & 0x00000001) != 0x00000001) return false; - + return true; } @@ -3248,7 +3249,7 @@ void XAttr::Swap(XAttr* other) { if (other != this) { std::swap(name_, other->name_); std::swap(value_, other->value_); - std::swap(value_bytes_, other->value_bytes_); + std::swap(value_bytes_string_, other->value_bytes_string_); std::swap(_has_bits_[0], other->_has_bits_[0]); _unknown_fields_.Swap(&other->_unknown_fields_); std::swap(_cached_size_, other->_cached_size_); @@ -3266,10 +3267,6 @@ void XAttr::Swap(XAttr* other) { // =================================================================== -const ::std::string Volume::_default_id_; -const ::std::string Volume::_default_name_; -const ::std::string Volume::_default_owner_group_id_; -const ::std::string Volume::_default_owner_user_id_; #ifndef _MSC_VER const int Volume::kAccessControlPolicyFieldNumber; const int Volume::kDefaultStripingPolicyFieldNumber; @@ -3300,11 +3297,11 @@ void Volume::SharedCtor() { _cached_size_ = 0; access_control_policy_ = 1; default_striping_policy_ = NULL; - id_ = const_cast< ::std::string*>(&_default_id_); + id_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); mode_ = 0u; - name_ = const_cast< ::std::string*>(&_default_name_); - owner_group_id_ = const_cast< ::std::string*>(&_default_owner_group_id_); - owner_user_id_ = const_cast< ::std::string*>(&_default_owner_user_id_); + name_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + owner_group_id_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + owner_user_id_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); ::memset(_has_bits_, 0, sizeof(_has_bits_)); } @@ -3313,16 +3310,16 @@ Volume::~Volume() { } void Volume::SharedDtor() { - if (id_ != &_default_id_) { + if (id_ != &::google::protobuf::internal::kEmptyString) { delete id_; } - if (name_ != &_default_name_) { + if (name_ != &::google::protobuf::internal::kEmptyString) { delete name_; } - if (owner_group_id_ != &_default_owner_group_id_) { + if (owner_group_id_ != &::google::protobuf::internal::kEmptyString) { delete owner_group_id_; } - if (owner_user_id_ != &_default_owner_user_id_) { + if (owner_user_id_ != &::google::protobuf::internal::kEmptyString) { delete owner_user_id_; } if (this != default_instance_) { @@ -3341,7 +3338,8 @@ const ::google::protobuf::Descriptor* Volume::descriptor() { } const Volume& Volume::default_instance() { - if (default_instance_ == NULL) protobuf_AddDesc_xtreemfs_2fMRC_2eproto(); return *default_instance_; + if (default_instance_ == NULL) protobuf_AddDesc_xtreemfs_2fMRC_2eproto(); + return *default_instance_; } Volume* Volume::default_instance_ = NULL; @@ -3353,27 +3351,27 @@ Volume* Volume::New() const { void Volume::Clear() { if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) { access_control_policy_ = 1; - if (_has_bit(1)) { + if (has_default_striping_policy()) { if (default_striping_policy_ != NULL) default_striping_policy_->::xtreemfs::pbrpc::StripingPolicy::Clear(); } - if (_has_bit(2)) { - if (id_ != &_default_id_) { + if (has_id()) { + if (id_ != &::google::protobuf::internal::kEmptyString) { id_->clear(); } } mode_ = 0u; - if (_has_bit(4)) { - if (name_ != &_default_name_) { + if (has_name()) { + if (name_ != &::google::protobuf::internal::kEmptyString) { name_->clear(); } } - if (_has_bit(5)) { - if (owner_group_id_ != &_default_owner_group_id_) { + if (has_owner_group_id()) { + if (owner_group_id_ != &::google::protobuf::internal::kEmptyString) { owner_group_id_->clear(); } } - if (_has_bit(6)) { - if (owner_user_id_ != &_default_owner_user_id_) { + if (has_owner_user_id()) { + if (owner_user_id_ != &::google::protobuf::internal::kEmptyString) { owner_user_id_->clear(); } } @@ -3397,8 +3395,8 @@ bool Volume::MergePartialFromCodedStream( DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive< int, ::google::protobuf::internal::WireFormatLite::TYPE_ENUM>( input, &value))); - if (xtreemfs::pbrpc::AccessControlPolicyType_IsValid(value)) { - set_access_control_policy(static_cast< xtreemfs::pbrpc::AccessControlPolicyType >(value)); + if (::xtreemfs::pbrpc::AccessControlPolicyType_IsValid(value)) { + set_access_control_policy(static_cast< ::xtreemfs::pbrpc::AccessControlPolicyType >(value)); } else { mutable_unknown_fields()->AddVarint(1, value); } @@ -3408,7 +3406,7 @@ bool Volume::MergePartialFromCodedStream( if (input->ExpectTag(18)) goto parse_default_striping_policy; break; } - + // required .xtreemfs.pbrpc.StripingPolicy default_striping_policy = 2; case 2: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -3422,7 +3420,7 @@ bool Volume::MergePartialFromCodedStream( if (input->ExpectTag(26)) goto parse_id; break; } - + // required string id = 3; case 3: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -3439,7 +3437,7 @@ bool Volume::MergePartialFromCodedStream( if (input->ExpectTag(37)) goto parse_mode; break; } - + // required fixed32 mode = 4; case 4: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -3448,14 +3446,14 @@ bool Volume::MergePartialFromCodedStream( DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive< ::google::protobuf::uint32, ::google::protobuf::internal::WireFormatLite::TYPE_FIXED32>( input, &mode_))); - _set_bit(3); + set_has_mode(); } else { goto handle_uninterpreted; } if (input->ExpectTag(42)) goto parse_name; break; } - + // required string name = 5; case 5: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -3472,7 +3470,7 @@ bool Volume::MergePartialFromCodedStream( if (input->ExpectTag(50)) goto parse_owner_group_id; break; } - + // required string owner_group_id = 6; case 6: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -3489,7 +3487,7 @@ bool Volume::MergePartialFromCodedStream( if (input->ExpectTag(58)) goto parse_owner_user_id; break; } - + // required string owner_user_id = 7; case 7: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -3506,7 +3504,7 @@ bool Volume::MergePartialFromCodedStream( if (input->ExpectTag(66)) goto parse_attrs; break; } - + // repeated .xtreemfs.pbrpc.KeyValuePair attrs = 8; case 8: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -3521,7 +3519,7 @@ bool Volume::MergePartialFromCodedStream( if (input->ExpectAtEnd()) return true; break; } - + default: { handle_uninterpreted: if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -3541,64 +3539,64 @@ bool Volume::MergePartialFromCodedStream( void Volume::SerializeWithCachedSizes( ::google::protobuf::io::CodedOutputStream* output) const { // required .xtreemfs.pbrpc.AccessControlPolicyType access_control_policy = 1; - if (_has_bit(0)) { + if (has_access_control_policy()) { ::google::protobuf::internal::WireFormatLite::WriteEnum( 1, this->access_control_policy(), output); } - + // required .xtreemfs.pbrpc.StripingPolicy default_striping_policy = 2; - if (_has_bit(1)) { + if (has_default_striping_policy()) { ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray( 2, this->default_striping_policy(), output); } - + // required string id = 3; - if (_has_bit(2)) { + if (has_id()) { ::google::protobuf::internal::WireFormat::VerifyUTF8String( this->id().data(), this->id().length(), ::google::protobuf::internal::WireFormat::SERIALIZE); ::google::protobuf::internal::WireFormatLite::WriteString( 3, this->id(), output); } - + // required fixed32 mode = 4; - if (_has_bit(3)) { + if (has_mode()) { ::google::protobuf::internal::WireFormatLite::WriteFixed32(4, this->mode(), output); } - + // required string name = 5; - if (_has_bit(4)) { + if (has_name()) { ::google::protobuf::internal::WireFormat::VerifyUTF8String( this->name().data(), this->name().length(), ::google::protobuf::internal::WireFormat::SERIALIZE); ::google::protobuf::internal::WireFormatLite::WriteString( 5, this->name(), output); } - + // required string owner_group_id = 6; - if (_has_bit(5)) { + if (has_owner_group_id()) { ::google::protobuf::internal::WireFormat::VerifyUTF8String( this->owner_group_id().data(), this->owner_group_id().length(), ::google::protobuf::internal::WireFormat::SERIALIZE); ::google::protobuf::internal::WireFormatLite::WriteString( 6, this->owner_group_id(), output); } - + // required string owner_user_id = 7; - if (_has_bit(6)) { + if (has_owner_user_id()) { ::google::protobuf::internal::WireFormat::VerifyUTF8String( this->owner_user_id().data(), this->owner_user_id().length(), ::google::protobuf::internal::WireFormat::SERIALIZE); ::google::protobuf::internal::WireFormatLite::WriteString( 7, this->owner_user_id(), output); } - + // repeated .xtreemfs.pbrpc.KeyValuePair attrs = 8; for (int i = 0; i < this->attrs_size(); i++) { ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray( 8, this->attrs(i), output); } - + if (!unknown_fields().empty()) { ::google::protobuf::internal::WireFormat::SerializeUnknownFields( unknown_fields(), output); @@ -3608,20 +3606,20 @@ void Volume::SerializeWithCachedSizes( ::google::protobuf::uint8* Volume::SerializeWithCachedSizesToArray( ::google::protobuf::uint8* target) const { // required .xtreemfs.pbrpc.AccessControlPolicyType access_control_policy = 1; - if (_has_bit(0)) { + if (has_access_control_policy()) { target = ::google::protobuf::internal::WireFormatLite::WriteEnumToArray( 1, this->access_control_policy(), target); } - + // required .xtreemfs.pbrpc.StripingPolicy default_striping_policy = 2; - if (_has_bit(1)) { + if (has_default_striping_policy()) { target = ::google::protobuf::internal::WireFormatLite:: WriteMessageNoVirtualToArray( 2, this->default_striping_policy(), target); } - + // required string id = 3; - if (_has_bit(2)) { + if (has_id()) { ::google::protobuf::internal::WireFormat::VerifyUTF8String( this->id().data(), this->id().length(), ::google::protobuf::internal::WireFormat::SERIALIZE); @@ -3629,14 +3627,14 @@ void Volume::SerializeWithCachedSizes( ::google::protobuf::internal::WireFormatLite::WriteStringToArray( 3, this->id(), target); } - + // required fixed32 mode = 4; - if (_has_bit(3)) { + if (has_mode()) { target = ::google::protobuf::internal::WireFormatLite::WriteFixed32ToArray(4, this->mode(), target); } - + // required string name = 5; - if (_has_bit(4)) { + if (has_name()) { ::google::protobuf::internal::WireFormat::VerifyUTF8String( this->name().data(), this->name().length(), ::google::protobuf::internal::WireFormat::SERIALIZE); @@ -3644,9 +3642,9 @@ void Volume::SerializeWithCachedSizes( ::google::protobuf::internal::WireFormatLite::WriteStringToArray( 5, this->name(), target); } - + // required string owner_group_id = 6; - if (_has_bit(5)) { + if (has_owner_group_id()) { ::google::protobuf::internal::WireFormat::VerifyUTF8String( this->owner_group_id().data(), this->owner_group_id().length(), ::google::protobuf::internal::WireFormat::SERIALIZE); @@ -3654,9 +3652,9 @@ void Volume::SerializeWithCachedSizes( ::google::protobuf::internal::WireFormatLite::WriteStringToArray( 6, this->owner_group_id(), target); } - + // required string owner_user_id = 7; - if (_has_bit(6)) { + if (has_owner_user_id()) { ::google::protobuf::internal::WireFormat::VerifyUTF8String( this->owner_user_id().data(), this->owner_user_id().length(), ::google::protobuf::internal::WireFormat::SERIALIZE); @@ -3664,14 +3662,14 @@ void Volume::SerializeWithCachedSizes( ::google::protobuf::internal::WireFormatLite::WriteStringToArray( 7, this->owner_user_id(), target); } - + // repeated .xtreemfs.pbrpc.KeyValuePair attrs = 8; for (int i = 0; i < this->attrs_size(); i++) { target = ::google::protobuf::internal::WireFormatLite:: WriteMessageNoVirtualToArray( 8, this->attrs(i), target); } - + if (!unknown_fields().empty()) { target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray( unknown_fields(), target); @@ -3681,54 +3679,54 @@ void Volume::SerializeWithCachedSizes( int Volume::ByteSize() const { int total_size = 0; - + if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) { // required .xtreemfs.pbrpc.AccessControlPolicyType access_control_policy = 1; if (has_access_control_policy()) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::EnumSize(this->access_control_policy()); } - + // required .xtreemfs.pbrpc.StripingPolicy default_striping_policy = 2; if (has_default_striping_policy()) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::MessageSizeNoVirtual( this->default_striping_policy()); } - + // required string id = 3; if (has_id()) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::StringSize( this->id()); } - + // required fixed32 mode = 4; if (has_mode()) { total_size += 1 + 4; } - + // required string name = 5; if (has_name()) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::StringSize( this->name()); } - + // required string owner_group_id = 6; if (has_owner_group_id()) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::StringSize( this->owner_group_id()); } - + // required string owner_user_id = 7; if (has_owner_user_id()) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::StringSize( this->owner_user_id()); } - + } // repeated .xtreemfs.pbrpc.KeyValuePair attrs = 8; total_size += 1 * this->attrs_size(); @@ -3737,7 +3735,7 @@ int Volume::ByteSize() const { ::google::protobuf::internal::WireFormatLite::MessageSizeNoVirtual( this->attrs(i)); } - + if (!unknown_fields().empty()) { total_size += ::google::protobuf::internal::WireFormat::ComputeUnknownFieldsSize( @@ -3765,25 +3763,25 @@ void Volume::MergeFrom(const Volume& from) { GOOGLE_CHECK_NE(&from, this); attrs_.MergeFrom(from.attrs_); if (from._has_bits_[0 / 32] & (0xffu << (0 % 32))) { - if (from._has_bit(0)) { + if (from.has_access_control_policy()) { set_access_control_policy(from.access_control_policy()); } - if (from._has_bit(1)) { + if (from.has_default_striping_policy()) { mutable_default_striping_policy()->::xtreemfs::pbrpc::StripingPolicy::MergeFrom(from.default_striping_policy()); } - if (from._has_bit(2)) { + if (from.has_id()) { set_id(from.id()); } - if (from._has_bit(3)) { + if (from.has_mode()) { set_mode(from.mode()); } - if (from._has_bit(4)) { + if (from.has_name()) { set_name(from.name()); } - if (from._has_bit(5)) { + if (from.has_owner_group_id()) { set_owner_group_id(from.owner_group_id()); } - if (from._has_bit(6)) { + if (from.has_owner_user_id()) { set_owner_user_id(from.owner_user_id()); } } @@ -3804,7 +3802,7 @@ void Volume::CopyFrom(const Volume& from) { bool Volume::IsInitialized() const { if ((_has_bits_[0] & 0x0000007f) != 0x0000007f) return false; - + if (has_default_striping_policy()) { if (!this->default_striping_policy().IsInitialized()) return false; } @@ -3884,7 +3882,8 @@ const ::google::protobuf::Descriptor* Volumes::descriptor() { } const Volumes& Volumes::default_instance() { - if (default_instance_ == NULL) protobuf_AddDesc_xtreemfs_2fMRC_2eproto(); return *default_instance_; + if (default_instance_ == NULL) protobuf_AddDesc_xtreemfs_2fMRC_2eproto(); + return *default_instance_; } Volumes* Volumes::default_instance_ = NULL; @@ -3919,7 +3918,7 @@ bool Volumes::MergePartialFromCodedStream( if (input->ExpectAtEnd()) return true; break; } - + default: { handle_uninterpreted: if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -3943,7 +3942,7 @@ void Volumes::SerializeWithCachedSizes( ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray( 1, this->volumes(i), output); } - + if (!unknown_fields().empty()) { ::google::protobuf::internal::WireFormat::SerializeUnknownFields( unknown_fields(), output); @@ -3958,7 +3957,7 @@ void Volumes::SerializeWithCachedSizes( WriteMessageNoVirtualToArray( 1, this->volumes(i), target); } - + if (!unknown_fields().empty()) { target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray( unknown_fields(), target); @@ -3968,7 +3967,7 @@ void Volumes::SerializeWithCachedSizes( int Volumes::ByteSize() const { int total_size = 0; - + // repeated .xtreemfs.pbrpc.Volume volumes = 1; total_size += 1 * this->volumes_size(); for (int i = 0; i < this->volumes_size(); i++) { @@ -3976,7 +3975,7 @@ int Volumes::ByteSize() const { ::google::protobuf::internal::WireFormatLite::MessageSizeNoVirtual( this->volumes(i)); } - + if (!unknown_fields().empty()) { total_size += ::google::protobuf::internal::WireFormat::ComputeUnknownFieldsSize( @@ -4019,7 +4018,7 @@ void Volumes::CopyFrom(const Volumes& from) { } bool Volumes::IsInitialized() const { - + for (int i = 0; i < volumes_size(); i++) { if (!this->volumes(i).IsInitialized()) return false; } @@ -4046,10 +4045,6 @@ void Volumes::Swap(Volumes* other) { // =================================================================== -const ::std::string StatVFS::_default_fsid_; -const ::std::string StatVFS::_default_name_; -const ::std::string StatVFS::_default_owner_group_id_; -const ::std::string StatVFS::_default_owner_user_id_; #ifndef _MSC_VER const int StatVFS::kBsizeFieldNumber; const int StatVFS::kBavailFieldNumber; @@ -4087,15 +4082,15 @@ void StatVFS::SharedCtor() { bavail_ = GOOGLE_ULONGLONG(0); bfree_ = GOOGLE_ULONGLONG(0); blocks_ = GOOGLE_ULONGLONG(0); - fsid_ = const_cast< ::std::string*>(&_default_fsid_); + fsid_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); namemax_ = 0u; access_control_policy_ = 1; default_striping_policy_ = NULL; etag_ = GOOGLE_ULONGLONG(0); mode_ = 0u; - name_ = const_cast< ::std::string*>(&_default_name_); - owner_group_id_ = const_cast< ::std::string*>(&_default_owner_group_id_); - owner_user_id_ = const_cast< ::std::string*>(&_default_owner_user_id_); + name_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + owner_group_id_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + owner_user_id_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); ::memset(_has_bits_, 0, sizeof(_has_bits_)); } @@ -4104,16 +4099,16 @@ StatVFS::~StatVFS() { } void StatVFS::SharedDtor() { - if (fsid_ != &_default_fsid_) { + if (fsid_ != &::google::protobuf::internal::kEmptyString) { delete fsid_; } - if (name_ != &_default_name_) { + if (name_ != &::google::protobuf::internal::kEmptyString) { delete name_; } - if (owner_group_id_ != &_default_owner_group_id_) { + if (owner_group_id_ != &::google::protobuf::internal::kEmptyString) { delete owner_group_id_; } - if (owner_user_id_ != &_default_owner_user_id_) { + if (owner_user_id_ != &::google::protobuf::internal::kEmptyString) { delete owner_user_id_; } if (this != default_instance_) { @@ -4132,7 +4127,8 @@ const ::google::protobuf::Descriptor* StatVFS::descriptor() { } const StatVFS& StatVFS::default_instance() { - if (default_instance_ == NULL) protobuf_AddDesc_xtreemfs_2fMRC_2eproto(); return *default_instance_; + if (default_instance_ == NULL) protobuf_AddDesc_xtreemfs_2fMRC_2eproto(); + return *default_instance_; } StatVFS* StatVFS::default_instance_ = NULL; @@ -4147,32 +4143,32 @@ void StatVFS::Clear() { bavail_ = GOOGLE_ULONGLONG(0); bfree_ = GOOGLE_ULONGLONG(0); blocks_ = GOOGLE_ULONGLONG(0); - if (_has_bit(4)) { - if (fsid_ != &_default_fsid_) { + if (has_fsid()) { + if (fsid_ != &::google::protobuf::internal::kEmptyString) { fsid_->clear(); } } namemax_ = 0u; access_control_policy_ = 1; - if (_has_bit(7)) { + if (has_default_striping_policy()) { if (default_striping_policy_ != NULL) default_striping_policy_->::xtreemfs::pbrpc::StripingPolicy::Clear(); } } if (_has_bits_[8 / 32] & (0xffu << (8 % 32))) { etag_ = GOOGLE_ULONGLONG(0); mode_ = 0u; - if (_has_bit(10)) { - if (name_ != &_default_name_) { + if (has_name()) { + if (name_ != &::google::protobuf::internal::kEmptyString) { name_->clear(); } } - if (_has_bit(11)) { - if (owner_group_id_ != &_default_owner_group_id_) { + if (has_owner_group_id()) { + if (owner_group_id_ != &::google::protobuf::internal::kEmptyString) { owner_group_id_->clear(); } } - if (_has_bit(12)) { - if (owner_user_id_ != &_default_owner_user_id_) { + if (has_owner_user_id()) { + if (owner_user_id_ != &::google::protobuf::internal::kEmptyString) { owner_user_id_->clear(); } } @@ -4194,14 +4190,14 @@ bool StatVFS::MergePartialFromCodedStream( DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive< ::google::protobuf::uint32, ::google::protobuf::internal::WireFormatLite::TYPE_FIXED32>( input, &bsize_))); - _set_bit(0); + set_has_bsize(); } else { goto handle_uninterpreted; } if (input->ExpectTag(17)) goto parse_bavail; break; } - + // required fixed64 bavail = 2; case 2: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -4210,14 +4206,14 @@ bool StatVFS::MergePartialFromCodedStream( DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive< ::google::protobuf::uint64, ::google::protobuf::internal::WireFormatLite::TYPE_FIXED64>( input, &bavail_))); - _set_bit(1); + set_has_bavail(); } else { goto handle_uninterpreted; } if (input->ExpectTag(25)) goto parse_blocks; break; } - + // required fixed64 blocks = 3; case 3: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -4226,14 +4222,14 @@ bool StatVFS::MergePartialFromCodedStream( DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive< ::google::protobuf::uint64, ::google::protobuf::internal::WireFormatLite::TYPE_FIXED64>( input, &blocks_))); - _set_bit(3); + set_has_blocks(); } else { goto handle_uninterpreted; } if (input->ExpectTag(34)) goto parse_fsid; break; } - + // required string fsid = 4; case 4: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -4250,7 +4246,7 @@ bool StatVFS::MergePartialFromCodedStream( if (input->ExpectTag(45)) goto parse_namemax; break; } - + // required fixed32 namemax = 5; case 5: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -4259,14 +4255,14 @@ bool StatVFS::MergePartialFromCodedStream( DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive< ::google::protobuf::uint32, ::google::protobuf::internal::WireFormatLite::TYPE_FIXED32>( input, &namemax_))); - _set_bit(5); + set_has_namemax(); } else { goto handle_uninterpreted; } if (input->ExpectTag(48)) goto parse_access_control_policy; break; } - + // required .xtreemfs.pbrpc.AccessControlPolicyType access_control_policy = 6; case 6: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -4276,8 +4272,8 @@ bool StatVFS::MergePartialFromCodedStream( DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive< int, ::google::protobuf::internal::WireFormatLite::TYPE_ENUM>( input, &value))); - if (xtreemfs::pbrpc::AccessControlPolicyType_IsValid(value)) { - set_access_control_policy(static_cast< xtreemfs::pbrpc::AccessControlPolicyType >(value)); + if (::xtreemfs::pbrpc::AccessControlPolicyType_IsValid(value)) { + set_access_control_policy(static_cast< ::xtreemfs::pbrpc::AccessControlPolicyType >(value)); } else { mutable_unknown_fields()->AddVarint(6, value); } @@ -4287,7 +4283,7 @@ bool StatVFS::MergePartialFromCodedStream( if (input->ExpectTag(58)) goto parse_default_striping_policy; break; } - + // required .xtreemfs.pbrpc.StripingPolicy default_striping_policy = 7; case 7: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -4301,7 +4297,7 @@ bool StatVFS::MergePartialFromCodedStream( if (input->ExpectTag(65)) goto parse_etag; break; } - + // required fixed64 etag = 8; case 8: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -4310,14 +4306,14 @@ bool StatVFS::MergePartialFromCodedStream( DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive< ::google::protobuf::uint64, ::google::protobuf::internal::WireFormatLite::TYPE_FIXED64>( input, &etag_))); - _set_bit(8); + set_has_etag(); } else { goto handle_uninterpreted; } if (input->ExpectTag(77)) goto parse_mode; break; } - + // required fixed32 mode = 9; case 9: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -4326,14 +4322,14 @@ bool StatVFS::MergePartialFromCodedStream( DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive< ::google::protobuf::uint32, ::google::protobuf::internal::WireFormatLite::TYPE_FIXED32>( input, &mode_))); - _set_bit(9); + set_has_mode(); } else { goto handle_uninterpreted; } if (input->ExpectTag(82)) goto parse_name; break; } - + // required string name = 10; case 10: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -4350,7 +4346,7 @@ bool StatVFS::MergePartialFromCodedStream( if (input->ExpectTag(90)) goto parse_owner_group_id; break; } - + // required string owner_group_id = 11; case 11: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -4367,7 +4363,7 @@ bool StatVFS::MergePartialFromCodedStream( if (input->ExpectTag(98)) goto parse_owner_user_id; break; } - + // required string owner_user_id = 12; case 12: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -4384,7 +4380,7 @@ bool StatVFS::MergePartialFromCodedStream( if (input->ExpectTag(105)) goto parse_bfree; break; } - + // optional fixed64 bfree = 13; case 13: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -4393,14 +4389,14 @@ bool StatVFS::MergePartialFromCodedStream( DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive< ::google::protobuf::uint64, ::google::protobuf::internal::WireFormatLite::TYPE_FIXED64>( input, &bfree_))); - _set_bit(2); + set_has_bfree(); } else { goto handle_uninterpreted; } if (input->ExpectAtEnd()) return true; break; } - + default: { handle_uninterpreted: if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -4420,88 +4416,88 @@ bool StatVFS::MergePartialFromCodedStream( void StatVFS::SerializeWithCachedSizes( ::google::protobuf::io::CodedOutputStream* output) const { // required fixed32 bsize = 1; - if (_has_bit(0)) { + if (has_bsize()) { ::google::protobuf::internal::WireFormatLite::WriteFixed32(1, this->bsize(), output); } - + // required fixed64 bavail = 2; - if (_has_bit(1)) { + if (has_bavail()) { ::google::protobuf::internal::WireFormatLite::WriteFixed64(2, this->bavail(), output); } - + // required fixed64 blocks = 3; - if (_has_bit(3)) { + if (has_blocks()) { ::google::protobuf::internal::WireFormatLite::WriteFixed64(3, this->blocks(), output); } - + // required string fsid = 4; - if (_has_bit(4)) { + if (has_fsid()) { ::google::protobuf::internal::WireFormat::VerifyUTF8String( this->fsid().data(), this->fsid().length(), ::google::protobuf::internal::WireFormat::SERIALIZE); ::google::protobuf::internal::WireFormatLite::WriteString( 4, this->fsid(), output); } - + // required fixed32 namemax = 5; - if (_has_bit(5)) { + if (has_namemax()) { ::google::protobuf::internal::WireFormatLite::WriteFixed32(5, this->namemax(), output); } - + // required .xtreemfs.pbrpc.AccessControlPolicyType access_control_policy = 6; - if (_has_bit(6)) { + if (has_access_control_policy()) { ::google::protobuf::internal::WireFormatLite::WriteEnum( 6, this->access_control_policy(), output); } - + // required .xtreemfs.pbrpc.StripingPolicy default_striping_policy = 7; - if (_has_bit(7)) { + if (has_default_striping_policy()) { ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray( 7, this->default_striping_policy(), output); } - + // required fixed64 etag = 8; - if (_has_bit(8)) { + if (has_etag()) { ::google::protobuf::internal::WireFormatLite::WriteFixed64(8, this->etag(), output); } - + // required fixed32 mode = 9; - if (_has_bit(9)) { + if (has_mode()) { ::google::protobuf::internal::WireFormatLite::WriteFixed32(9, this->mode(), output); } - + // required string name = 10; - if (_has_bit(10)) { + if (has_name()) { ::google::protobuf::internal::WireFormat::VerifyUTF8String( this->name().data(), this->name().length(), ::google::protobuf::internal::WireFormat::SERIALIZE); ::google::protobuf::internal::WireFormatLite::WriteString( 10, this->name(), output); } - + // required string owner_group_id = 11; - if (_has_bit(11)) { + if (has_owner_group_id()) { ::google::protobuf::internal::WireFormat::VerifyUTF8String( this->owner_group_id().data(), this->owner_group_id().length(), ::google::protobuf::internal::WireFormat::SERIALIZE); ::google::protobuf::internal::WireFormatLite::WriteString( 11, this->owner_group_id(), output); } - + // required string owner_user_id = 12; - if (_has_bit(12)) { + if (has_owner_user_id()) { ::google::protobuf::internal::WireFormat::VerifyUTF8String( this->owner_user_id().data(), this->owner_user_id().length(), ::google::protobuf::internal::WireFormat::SERIALIZE); ::google::protobuf::internal::WireFormatLite::WriteString( 12, this->owner_user_id(), output); } - + // optional fixed64 bfree = 13; - if (_has_bit(2)) { + if (has_bfree()) { ::google::protobuf::internal::WireFormatLite::WriteFixed64(13, this->bfree(), output); } - + if (!unknown_fields().empty()) { ::google::protobuf::internal::WireFormat::SerializeUnknownFields( unknown_fields(), output); @@ -4511,22 +4507,22 @@ void StatVFS::SerializeWithCachedSizes( ::google::protobuf::uint8* StatVFS::SerializeWithCachedSizesToArray( ::google::protobuf::uint8* target) const { // required fixed32 bsize = 1; - if (_has_bit(0)) { + if (has_bsize()) { target = ::google::protobuf::internal::WireFormatLite::WriteFixed32ToArray(1, this->bsize(), target); } - + // required fixed64 bavail = 2; - if (_has_bit(1)) { + if (has_bavail()) { target = ::google::protobuf::internal::WireFormatLite::WriteFixed64ToArray(2, this->bavail(), target); } - + // required fixed64 blocks = 3; - if (_has_bit(3)) { + if (has_blocks()) { target = ::google::protobuf::internal::WireFormatLite::WriteFixed64ToArray(3, this->blocks(), target); } - + // required string fsid = 4; - if (_has_bit(4)) { + if (has_fsid()) { ::google::protobuf::internal::WireFormat::VerifyUTF8String( this->fsid().data(), this->fsid().length(), ::google::protobuf::internal::WireFormat::SERIALIZE); @@ -4534,37 +4530,37 @@ void StatVFS::SerializeWithCachedSizes( ::google::protobuf::internal::WireFormatLite::WriteStringToArray( 4, this->fsid(), target); } - + // required fixed32 namemax = 5; - if (_has_bit(5)) { + if (has_namemax()) { target = ::google::protobuf::internal::WireFormatLite::WriteFixed32ToArray(5, this->namemax(), target); } - + // required .xtreemfs.pbrpc.AccessControlPolicyType access_control_policy = 6; - if (_has_bit(6)) { + if (has_access_control_policy()) { target = ::google::protobuf::internal::WireFormatLite::WriteEnumToArray( 6, this->access_control_policy(), target); } - + // required .xtreemfs.pbrpc.StripingPolicy default_striping_policy = 7; - if (_has_bit(7)) { + if (has_default_striping_policy()) { target = ::google::protobuf::internal::WireFormatLite:: WriteMessageNoVirtualToArray( 7, this->default_striping_policy(), target); } - + // required fixed64 etag = 8; - if (_has_bit(8)) { + if (has_etag()) { target = ::google::protobuf::internal::WireFormatLite::WriteFixed64ToArray(8, this->etag(), target); } - + // required fixed32 mode = 9; - if (_has_bit(9)) { + if (has_mode()) { target = ::google::protobuf::internal::WireFormatLite::WriteFixed32ToArray(9, this->mode(), target); } - + // required string name = 10; - if (_has_bit(10)) { + if (has_name()) { ::google::protobuf::internal::WireFormat::VerifyUTF8String( this->name().data(), this->name().length(), ::google::protobuf::internal::WireFormat::SERIALIZE); @@ -4572,9 +4568,9 @@ void StatVFS::SerializeWithCachedSizes( ::google::protobuf::internal::WireFormatLite::WriteStringToArray( 10, this->name(), target); } - + // required string owner_group_id = 11; - if (_has_bit(11)) { + if (has_owner_group_id()) { ::google::protobuf::internal::WireFormat::VerifyUTF8String( this->owner_group_id().data(), this->owner_group_id().length(), ::google::protobuf::internal::WireFormat::SERIALIZE); @@ -4582,9 +4578,9 @@ void StatVFS::SerializeWithCachedSizes( ::google::protobuf::internal::WireFormatLite::WriteStringToArray( 11, this->owner_group_id(), target); } - + // required string owner_user_id = 12; - if (_has_bit(12)) { + if (has_owner_user_id()) { ::google::protobuf::internal::WireFormat::VerifyUTF8String( this->owner_user_id().data(), this->owner_user_id().length(), ::google::protobuf::internal::WireFormat::SERIALIZE); @@ -4592,12 +4588,12 @@ void StatVFS::SerializeWithCachedSizes( ::google::protobuf::internal::WireFormatLite::WriteStringToArray( 12, this->owner_user_id(), target); } - + // optional fixed64 bfree = 13; - if (_has_bit(2)) { + if (has_bfree()) { target = ::google::protobuf::internal::WireFormatLite::WriteFixed64ToArray(13, this->bfree(), target); } - + if (!unknown_fields().empty()) { target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray( unknown_fields(), target); @@ -4607,86 +4603,86 @@ void StatVFS::SerializeWithCachedSizes( int StatVFS::ByteSize() const { int total_size = 0; - + if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) { // required fixed32 bsize = 1; if (has_bsize()) { total_size += 1 + 4; } - + // required fixed64 bavail = 2; if (has_bavail()) { total_size += 1 + 8; } - + // optional fixed64 bfree = 13; if (has_bfree()) { total_size += 1 + 8; } - + // required fixed64 blocks = 3; if (has_blocks()) { total_size += 1 + 8; } - + // required string fsid = 4; if (has_fsid()) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::StringSize( this->fsid()); } - + // required fixed32 namemax = 5; if (has_namemax()) { total_size += 1 + 4; } - + // required .xtreemfs.pbrpc.AccessControlPolicyType access_control_policy = 6; if (has_access_control_policy()) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::EnumSize(this->access_control_policy()); } - + // required .xtreemfs.pbrpc.StripingPolicy default_striping_policy = 7; if (has_default_striping_policy()) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::MessageSizeNoVirtual( this->default_striping_policy()); } - + } if (_has_bits_[8 / 32] & (0xffu << (8 % 32))) { // required fixed64 etag = 8; if (has_etag()) { total_size += 1 + 8; } - + // required fixed32 mode = 9; if (has_mode()) { total_size += 1 + 4; } - + // required string name = 10; if (has_name()) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::StringSize( this->name()); } - + // required string owner_group_id = 11; if (has_owner_group_id()) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::StringSize( this->owner_group_id()); } - + // required string owner_user_id = 12; if (has_owner_user_id()) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::StringSize( this->owner_user_id()); } - + } if (!unknown_fields().empty()) { total_size += @@ -4714,45 +4710,45 @@ void StatVFS::MergeFrom(const ::google::protobuf::Message& from) { void StatVFS::MergeFrom(const StatVFS& from) { GOOGLE_CHECK_NE(&from, this); if (from._has_bits_[0 / 32] & (0xffu << (0 % 32))) { - if (from._has_bit(0)) { + if (from.has_bsize()) { set_bsize(from.bsize()); } - if (from._has_bit(1)) { + if (from.has_bavail()) { set_bavail(from.bavail()); } - if (from._has_bit(2)) { + if (from.has_bfree()) { set_bfree(from.bfree()); } - if (from._has_bit(3)) { + if (from.has_blocks()) { set_blocks(from.blocks()); } - if (from._has_bit(4)) { + if (from.has_fsid()) { set_fsid(from.fsid()); } - if (from._has_bit(5)) { + if (from.has_namemax()) { set_namemax(from.namemax()); } - if (from._has_bit(6)) { + if (from.has_access_control_policy()) { set_access_control_policy(from.access_control_policy()); } - if (from._has_bit(7)) { + if (from.has_default_striping_policy()) { mutable_default_striping_policy()->::xtreemfs::pbrpc::StripingPolicy::MergeFrom(from.default_striping_policy()); } } if (from._has_bits_[8 / 32] & (0xffu << (8 % 32))) { - if (from._has_bit(8)) { + if (from.has_etag()) { set_etag(from.etag()); } - if (from._has_bit(9)) { + if (from.has_mode()) { set_mode(from.mode()); } - if (from._has_bit(10)) { + if (from.has_name()) { set_name(from.name()); } - if (from._has_bit(11)) { + if (from.has_owner_group_id()) { set_owner_group_id(from.owner_group_id()); } - if (from._has_bit(12)) { + if (from.has_owner_user_id()) { set_owner_user_id(from.owner_user_id()); } } @@ -4773,7 +4769,7 @@ void StatVFS::CopyFrom(const StatVFS& from) { bool StatVFS::IsInitialized() const { if ((_has_bits_[0] & 0x00001ffb) != 0x00001ffb) return false; - + if (has_default_striping_policy()) { if (!this->default_striping_policy().IsInitialized()) return false; } @@ -4864,7 +4860,8 @@ const ::google::protobuf::Descriptor* fsetattrRequest::descriptor() { } const fsetattrRequest& fsetattrRequest::default_instance() { - if (default_instance_ == NULL) protobuf_AddDesc_xtreemfs_2fMRC_2eproto(); return *default_instance_; + if (default_instance_ == NULL) protobuf_AddDesc_xtreemfs_2fMRC_2eproto(); + return *default_instance_; } fsetattrRequest* fsetattrRequest::default_instance_ = NULL; @@ -4875,11 +4872,11 @@ fsetattrRequest* fsetattrRequest::New() const { void fsetattrRequest::Clear() { if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) { - if (_has_bit(0)) { + if (has_stbuf()) { if (stbuf_ != NULL) stbuf_->::xtreemfs::pbrpc::Stat::Clear(); } to_set_ = 0u; - if (_has_bit(2)) { + if (has_cap()) { if (cap_ != NULL) cap_->::xtreemfs::pbrpc::XCap::Clear(); } } @@ -4905,7 +4902,7 @@ bool fsetattrRequest::MergePartialFromCodedStream( if (input->ExpectTag(21)) goto parse_to_set; break; } - + // required fixed32 to_set = 2; case 2: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -4914,14 +4911,14 @@ bool fsetattrRequest::MergePartialFromCodedStream( DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive< ::google::protobuf::uint32, ::google::protobuf::internal::WireFormatLite::TYPE_FIXED32>( input, &to_set_))); - _set_bit(1); + set_has_to_set(); } else { goto handle_uninterpreted; } if (input->ExpectTag(26)) goto parse_cap; break; } - + // required .xtreemfs.pbrpc.XCap cap = 3; case 3: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -4935,7 +4932,7 @@ bool fsetattrRequest::MergePartialFromCodedStream( if (input->ExpectAtEnd()) return true; break; } - + default: { handle_uninterpreted: if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -4955,22 +4952,22 @@ bool fsetattrRequest::MergePartialFromCodedStream( void fsetattrRequest::SerializeWithCachedSizes( ::google::protobuf::io::CodedOutputStream* output) const { // required .xtreemfs.pbrpc.Stat stbuf = 1; - if (_has_bit(0)) { + if (has_stbuf()) { ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray( 1, this->stbuf(), output); } - + // required fixed32 to_set = 2; - if (_has_bit(1)) { + if (has_to_set()) { ::google::protobuf::internal::WireFormatLite::WriteFixed32(2, this->to_set(), output); } - + // required .xtreemfs.pbrpc.XCap cap = 3; - if (_has_bit(2)) { + if (has_cap()) { ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray( 3, this->cap(), output); } - + if (!unknown_fields().empty()) { ::google::protobuf::internal::WireFormat::SerializeUnknownFields( unknown_fields(), output); @@ -4980,24 +4977,24 @@ void fsetattrRequest::SerializeWithCachedSizes( ::google::protobuf::uint8* fsetattrRequest::SerializeWithCachedSizesToArray( ::google::protobuf::uint8* target) const { // required .xtreemfs.pbrpc.Stat stbuf = 1; - if (_has_bit(0)) { + if (has_stbuf()) { target = ::google::protobuf::internal::WireFormatLite:: WriteMessageNoVirtualToArray( 1, this->stbuf(), target); } - + // required fixed32 to_set = 2; - if (_has_bit(1)) { + if (has_to_set()) { target = ::google::protobuf::internal::WireFormatLite::WriteFixed32ToArray(2, this->to_set(), target); } - + // required .xtreemfs.pbrpc.XCap cap = 3; - if (_has_bit(2)) { + if (has_cap()) { target = ::google::protobuf::internal::WireFormatLite:: WriteMessageNoVirtualToArray( 3, this->cap(), target); } - + if (!unknown_fields().empty()) { target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray( unknown_fields(), target); @@ -5007,7 +5004,7 @@ void fsetattrRequest::SerializeWithCachedSizes( int fsetattrRequest::ByteSize() const { int total_size = 0; - + if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) { // required .xtreemfs.pbrpc.Stat stbuf = 1; if (has_stbuf()) { @@ -5015,19 +5012,19 @@ int fsetattrRequest::ByteSize() const { ::google::protobuf::internal::WireFormatLite::MessageSizeNoVirtual( this->stbuf()); } - + // required fixed32 to_set = 2; if (has_to_set()) { total_size += 1 + 4; } - + // required .xtreemfs.pbrpc.XCap cap = 3; if (has_cap()) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::MessageSizeNoVirtual( this->cap()); } - + } if (!unknown_fields().empty()) { total_size += @@ -5055,13 +5052,13 @@ void fsetattrRequest::MergeFrom(const ::google::protobuf::Message& from) { void fsetattrRequest::MergeFrom(const fsetattrRequest& from) { GOOGLE_CHECK_NE(&from, this); if (from._has_bits_[0 / 32] & (0xffu << (0 % 32))) { - if (from._has_bit(0)) { + if (from.has_stbuf()) { mutable_stbuf()->::xtreemfs::pbrpc::Stat::MergeFrom(from.stbuf()); } - if (from._has_bit(1)) { + if (from.has_to_set()) { set_to_set(from.to_set()); } - if (from._has_bit(2)) { + if (from.has_cap()) { mutable_cap()->::xtreemfs::pbrpc::XCap::MergeFrom(from.cap()); } } @@ -5082,7 +5079,7 @@ void fsetattrRequest::CopyFrom(const fsetattrRequest& from) { bool fsetattrRequest::IsInitialized() const { if ((_has_bits_[0] & 0x00000007) != 0x00000007) return false; - + if (has_stbuf()) { if (!this->stbuf().IsInitialized()) return false; } @@ -5114,8 +5111,6 @@ void fsetattrRequest::Swap(fsetattrRequest* other) { // =================================================================== -const ::std::string getattrRequest::_default_volume_name_; -const ::std::string getattrRequest::_default_path_; #ifndef _MSC_VER const int getattrRequest::kVolumeNameFieldNumber; const int getattrRequest::kPathFieldNumber; @@ -5138,8 +5133,8 @@ getattrRequest::getattrRequest(const getattrRequest& from) void getattrRequest::SharedCtor() { _cached_size_ = 0; - volume_name_ = const_cast< ::std::string*>(&_default_volume_name_); - path_ = const_cast< ::std::string*>(&_default_path_); + volume_name_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + path_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); known_etag_ = GOOGLE_ULONGLONG(0); ::memset(_has_bits_, 0, sizeof(_has_bits_)); } @@ -5149,10 +5144,10 @@ getattrRequest::~getattrRequest() { } void getattrRequest::SharedDtor() { - if (volume_name_ != &_default_volume_name_) { + if (volume_name_ != &::google::protobuf::internal::kEmptyString) { delete volume_name_; } - if (path_ != &_default_path_) { + if (path_ != &::google::protobuf::internal::kEmptyString) { delete path_; } if (this != default_instance_) { @@ -5170,7 +5165,8 @@ const ::google::protobuf::Descriptor* getattrRequest::descriptor() { } const getattrRequest& getattrRequest::default_instance() { - if (default_instance_ == NULL) protobuf_AddDesc_xtreemfs_2fMRC_2eproto(); return *default_instance_; + if (default_instance_ == NULL) protobuf_AddDesc_xtreemfs_2fMRC_2eproto(); + return *default_instance_; } getattrRequest* getattrRequest::default_instance_ = NULL; @@ -5181,13 +5177,13 @@ getattrRequest* getattrRequest::New() const { void getattrRequest::Clear() { if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) { - if (_has_bit(0)) { - if (volume_name_ != &_default_volume_name_) { + if (has_volume_name()) { + if (volume_name_ != &::google::protobuf::internal::kEmptyString) { volume_name_->clear(); } } - if (_has_bit(1)) { - if (path_ != &_default_path_) { + if (has_path()) { + if (path_ != &::google::protobuf::internal::kEmptyString) { path_->clear(); } } @@ -5218,7 +5214,7 @@ bool getattrRequest::MergePartialFromCodedStream( if (input->ExpectTag(18)) goto parse_path; break; } - + // required string path = 2; case 2: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -5235,7 +5231,7 @@ bool getattrRequest::MergePartialFromCodedStream( if (input->ExpectTag(25)) goto parse_known_etag; break; } - + // required fixed64 known_etag = 3; case 3: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -5244,14 +5240,14 @@ bool getattrRequest::MergePartialFromCodedStream( DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive< ::google::protobuf::uint64, ::google::protobuf::internal::WireFormatLite::TYPE_FIXED64>( input, &known_etag_))); - _set_bit(2); + set_has_known_etag(); } else { goto handle_uninterpreted; } if (input->ExpectAtEnd()) return true; break; } - + default: { handle_uninterpreted: if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -5271,28 +5267,28 @@ bool getattrRequest::MergePartialFromCodedStream( void getattrRequest::SerializeWithCachedSizes( ::google::protobuf::io::CodedOutputStream* output) const { // required string volume_name = 1; - if (_has_bit(0)) { + if (has_volume_name()) { ::google::protobuf::internal::WireFormat::VerifyUTF8String( this->volume_name().data(), this->volume_name().length(), ::google::protobuf::internal::WireFormat::SERIALIZE); ::google::protobuf::internal::WireFormatLite::WriteString( 1, this->volume_name(), output); } - + // required string path = 2; - if (_has_bit(1)) { + if (has_path()) { ::google::protobuf::internal::WireFormat::VerifyUTF8String( this->path().data(), this->path().length(), ::google::protobuf::internal::WireFormat::SERIALIZE); ::google::protobuf::internal::WireFormatLite::WriteString( 2, this->path(), output); } - + // required fixed64 known_etag = 3; - if (_has_bit(2)) { + if (has_known_etag()) { ::google::protobuf::internal::WireFormatLite::WriteFixed64(3, this->known_etag(), output); } - + if (!unknown_fields().empty()) { ::google::protobuf::internal::WireFormat::SerializeUnknownFields( unknown_fields(), output); @@ -5302,7 +5298,7 @@ void getattrRequest::SerializeWithCachedSizes( ::google::protobuf::uint8* getattrRequest::SerializeWithCachedSizesToArray( ::google::protobuf::uint8* target) const { // required string volume_name = 1; - if (_has_bit(0)) { + if (has_volume_name()) { ::google::protobuf::internal::WireFormat::VerifyUTF8String( this->volume_name().data(), this->volume_name().length(), ::google::protobuf::internal::WireFormat::SERIALIZE); @@ -5310,9 +5306,9 @@ void getattrRequest::SerializeWithCachedSizes( ::google::protobuf::internal::WireFormatLite::WriteStringToArray( 1, this->volume_name(), target); } - + // required string path = 2; - if (_has_bit(1)) { + if (has_path()) { ::google::protobuf::internal::WireFormat::VerifyUTF8String( this->path().data(), this->path().length(), ::google::protobuf::internal::WireFormat::SERIALIZE); @@ -5320,12 +5316,12 @@ void getattrRequest::SerializeWithCachedSizes( ::google::protobuf::internal::WireFormatLite::WriteStringToArray( 2, this->path(), target); } - + // required fixed64 known_etag = 3; - if (_has_bit(2)) { + if (has_known_etag()) { target = ::google::protobuf::internal::WireFormatLite::WriteFixed64ToArray(3, this->known_etag(), target); } - + if (!unknown_fields().empty()) { target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray( unknown_fields(), target); @@ -5335,7 +5331,7 @@ void getattrRequest::SerializeWithCachedSizes( int getattrRequest::ByteSize() const { int total_size = 0; - + if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) { // required string volume_name = 1; if (has_volume_name()) { @@ -5343,19 +5339,19 @@ int getattrRequest::ByteSize() const { ::google::protobuf::internal::WireFormatLite::StringSize( this->volume_name()); } - + // required string path = 2; if (has_path()) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::StringSize( this->path()); } - + // required fixed64 known_etag = 3; if (has_known_etag()) { total_size += 1 + 8; } - + } if (!unknown_fields().empty()) { total_size += @@ -5383,13 +5379,13 @@ void getattrRequest::MergeFrom(const ::google::protobuf::Message& from) { void getattrRequest::MergeFrom(const getattrRequest& from) { GOOGLE_CHECK_NE(&from, this); if (from._has_bits_[0 / 32] & (0xffu << (0 % 32))) { - if (from._has_bit(0)) { + if (from.has_volume_name()) { set_volume_name(from.volume_name()); } - if (from._has_bit(1)) { + if (from.has_path()) { set_path(from.path()); } - if (from._has_bit(2)) { + if (from.has_known_etag()) { set_known_etag(from.known_etag()); } } @@ -5410,7 +5406,7 @@ void getattrRequest::CopyFrom(const getattrRequest& from) { bool getattrRequest::IsInitialized() const { if ((_has_bits_[0] & 0x00000007) != 0x00000007) return false; - + return true; } @@ -5482,7 +5478,8 @@ const ::google::protobuf::Descriptor* getattrResponse::descriptor() { } const getattrResponse& getattrResponse::default_instance() { - if (default_instance_ == NULL) protobuf_AddDesc_xtreemfs_2fMRC_2eproto(); return *default_instance_; + if (default_instance_ == NULL) protobuf_AddDesc_xtreemfs_2fMRC_2eproto(); + return *default_instance_; } getattrResponse* getattrResponse::default_instance_ = NULL; @@ -5493,7 +5490,7 @@ getattrResponse* getattrResponse::New() const { void getattrResponse::Clear() { if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) { - if (_has_bit(0)) { + if (has_stbuf()) { if (stbuf_ != NULL) stbuf_->::xtreemfs::pbrpc::Stat::Clear(); } } @@ -5519,7 +5516,7 @@ bool getattrResponse::MergePartialFromCodedStream( if (input->ExpectAtEnd()) return true; break; } - + default: { handle_uninterpreted: if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -5539,11 +5536,11 @@ bool getattrResponse::MergePartialFromCodedStream( void getattrResponse::SerializeWithCachedSizes( ::google::protobuf::io::CodedOutputStream* output) const { // optional .xtreemfs.pbrpc.Stat stbuf = 1; - if (_has_bit(0)) { + if (has_stbuf()) { ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray( 1, this->stbuf(), output); } - + if (!unknown_fields().empty()) { ::google::protobuf::internal::WireFormat::SerializeUnknownFields( unknown_fields(), output); @@ -5553,12 +5550,12 @@ void getattrResponse::SerializeWithCachedSizes( ::google::protobuf::uint8* getattrResponse::SerializeWithCachedSizesToArray( ::google::protobuf::uint8* target) const { // optional .xtreemfs.pbrpc.Stat stbuf = 1; - if (_has_bit(0)) { + if (has_stbuf()) { target = ::google::protobuf::internal::WireFormatLite:: WriteMessageNoVirtualToArray( 1, this->stbuf(), target); } - + if (!unknown_fields().empty()) { target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray( unknown_fields(), target); @@ -5568,7 +5565,7 @@ void getattrResponse::SerializeWithCachedSizes( int getattrResponse::ByteSize() const { int total_size = 0; - + if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) { // optional .xtreemfs.pbrpc.Stat stbuf = 1; if (has_stbuf()) { @@ -5576,7 +5573,7 @@ int getattrResponse::ByteSize() const { ::google::protobuf::internal::WireFormatLite::MessageSizeNoVirtual( this->stbuf()); } - + } if (!unknown_fields().empty()) { total_size += @@ -5604,7 +5601,7 @@ void getattrResponse::MergeFrom(const ::google::protobuf::Message& from) { void getattrResponse::MergeFrom(const getattrResponse& from) { GOOGLE_CHECK_NE(&from, this); if (from._has_bits_[0 / 32] & (0xffu << (0 % 32))) { - if (from._has_bit(0)) { + if (from.has_stbuf()) { mutable_stbuf()->::xtreemfs::pbrpc::Stat::MergeFrom(from.stbuf()); } } @@ -5624,7 +5621,7 @@ void getattrResponse::CopyFrom(const getattrResponse& from) { } bool getattrResponse::IsInitialized() const { - + if (has_stbuf()) { if (!this->stbuf().IsInitialized()) return false; } @@ -5651,9 +5648,6 @@ void getattrResponse::Swap(getattrResponse* other) { // =================================================================== -const ::std::string getxattrRequest::_default_volume_name_; -const ::std::string getxattrRequest::_default_path_; -const ::std::string getxattrRequest::_default_name_; #ifndef _MSC_VER const int getxattrRequest::kVolumeNameFieldNumber; const int getxattrRequest::kPathFieldNumber; @@ -5676,9 +5670,9 @@ getxattrRequest::getxattrRequest(const getxattrRequest& from) void getxattrRequest::SharedCtor() { _cached_size_ = 0; - volume_name_ = const_cast< ::std::string*>(&_default_volume_name_); - path_ = const_cast< ::std::string*>(&_default_path_); - name_ = const_cast< ::std::string*>(&_default_name_); + volume_name_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + path_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + name_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); ::memset(_has_bits_, 0, sizeof(_has_bits_)); } @@ -5687,13 +5681,13 @@ getxattrRequest::~getxattrRequest() { } void getxattrRequest::SharedDtor() { - if (volume_name_ != &_default_volume_name_) { + if (volume_name_ != &::google::protobuf::internal::kEmptyString) { delete volume_name_; } - if (path_ != &_default_path_) { + if (path_ != &::google::protobuf::internal::kEmptyString) { delete path_; } - if (name_ != &_default_name_) { + if (name_ != &::google::protobuf::internal::kEmptyString) { delete name_; } if (this != default_instance_) { @@ -5711,7 +5705,8 @@ const ::google::protobuf::Descriptor* getxattrRequest::descriptor() { } const getxattrRequest& getxattrRequest::default_instance() { - if (default_instance_ == NULL) protobuf_AddDesc_xtreemfs_2fMRC_2eproto(); return *default_instance_; + if (default_instance_ == NULL) protobuf_AddDesc_xtreemfs_2fMRC_2eproto(); + return *default_instance_; } getxattrRequest* getxattrRequest::default_instance_ = NULL; @@ -5722,18 +5717,18 @@ getxattrRequest* getxattrRequest::New() const { void getxattrRequest::Clear() { if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) { - if (_has_bit(0)) { - if (volume_name_ != &_default_volume_name_) { + if (has_volume_name()) { + if (volume_name_ != &::google::protobuf::internal::kEmptyString) { volume_name_->clear(); } } - if (_has_bit(1)) { - if (path_ != &_default_path_) { + if (has_path()) { + if (path_ != &::google::protobuf::internal::kEmptyString) { path_->clear(); } } - if (_has_bit(2)) { - if (name_ != &_default_name_) { + if (has_name()) { + if (name_ != &::google::protobuf::internal::kEmptyString) { name_->clear(); } } @@ -5763,7 +5758,7 @@ bool getxattrRequest::MergePartialFromCodedStream( if (input->ExpectTag(18)) goto parse_path; break; } - + // required string path = 2; case 2: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -5780,7 +5775,7 @@ bool getxattrRequest::MergePartialFromCodedStream( if (input->ExpectTag(26)) goto parse_name; break; } - + // required string name = 3; case 3: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -5797,7 +5792,7 @@ bool getxattrRequest::MergePartialFromCodedStream( if (input->ExpectAtEnd()) return true; break; } - + default: { handle_uninterpreted: if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -5817,32 +5812,32 @@ bool getxattrRequest::MergePartialFromCodedStream( void getxattrRequest::SerializeWithCachedSizes( ::google::protobuf::io::CodedOutputStream* output) const { // required string volume_name = 1; - if (_has_bit(0)) { + if (has_volume_name()) { ::google::protobuf::internal::WireFormat::VerifyUTF8String( this->volume_name().data(), this->volume_name().length(), ::google::protobuf::internal::WireFormat::SERIALIZE); ::google::protobuf::internal::WireFormatLite::WriteString( 1, this->volume_name(), output); } - + // required string path = 2; - if (_has_bit(1)) { + if (has_path()) { ::google::protobuf::internal::WireFormat::VerifyUTF8String( this->path().data(), this->path().length(), ::google::protobuf::internal::WireFormat::SERIALIZE); ::google::protobuf::internal::WireFormatLite::WriteString( 2, this->path(), output); } - + // required string name = 3; - if (_has_bit(2)) { + if (has_name()) { ::google::protobuf::internal::WireFormat::VerifyUTF8String( this->name().data(), this->name().length(), ::google::protobuf::internal::WireFormat::SERIALIZE); ::google::protobuf::internal::WireFormatLite::WriteString( 3, this->name(), output); } - + if (!unknown_fields().empty()) { ::google::protobuf::internal::WireFormat::SerializeUnknownFields( unknown_fields(), output); @@ -5852,7 +5847,7 @@ void getxattrRequest::SerializeWithCachedSizes( ::google::protobuf::uint8* getxattrRequest::SerializeWithCachedSizesToArray( ::google::protobuf::uint8* target) const { // required string volume_name = 1; - if (_has_bit(0)) { + if (has_volume_name()) { ::google::protobuf::internal::WireFormat::VerifyUTF8String( this->volume_name().data(), this->volume_name().length(), ::google::protobuf::internal::WireFormat::SERIALIZE); @@ -5860,9 +5855,9 @@ void getxattrRequest::SerializeWithCachedSizes( ::google::protobuf::internal::WireFormatLite::WriteStringToArray( 1, this->volume_name(), target); } - + // required string path = 2; - if (_has_bit(1)) { + if (has_path()) { ::google::protobuf::internal::WireFormat::VerifyUTF8String( this->path().data(), this->path().length(), ::google::protobuf::internal::WireFormat::SERIALIZE); @@ -5870,9 +5865,9 @@ void getxattrRequest::SerializeWithCachedSizes( ::google::protobuf::internal::WireFormatLite::WriteStringToArray( 2, this->path(), target); } - + // required string name = 3; - if (_has_bit(2)) { + if (has_name()) { ::google::protobuf::internal::WireFormat::VerifyUTF8String( this->name().data(), this->name().length(), ::google::protobuf::internal::WireFormat::SERIALIZE); @@ -5880,7 +5875,7 @@ void getxattrRequest::SerializeWithCachedSizes( ::google::protobuf::internal::WireFormatLite::WriteStringToArray( 3, this->name(), target); } - + if (!unknown_fields().empty()) { target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray( unknown_fields(), target); @@ -5890,7 +5885,7 @@ void getxattrRequest::SerializeWithCachedSizes( int getxattrRequest::ByteSize() const { int total_size = 0; - + if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) { // required string volume_name = 1; if (has_volume_name()) { @@ -5898,21 +5893,21 @@ int getxattrRequest::ByteSize() const { ::google::protobuf::internal::WireFormatLite::StringSize( this->volume_name()); } - + // required string path = 2; if (has_path()) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::StringSize( this->path()); } - + // required string name = 3; if (has_name()) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::StringSize( this->name()); } - + } if (!unknown_fields().empty()) { total_size += @@ -5940,13 +5935,13 @@ void getxattrRequest::MergeFrom(const ::google::protobuf::Message& from) { void getxattrRequest::MergeFrom(const getxattrRequest& from) { GOOGLE_CHECK_NE(&from, this); if (from._has_bits_[0 / 32] & (0xffu << (0 % 32))) { - if (from._has_bit(0)) { + if (from.has_volume_name()) { set_volume_name(from.volume_name()); } - if (from._has_bit(1)) { + if (from.has_path()) { set_path(from.path()); } - if (from._has_bit(2)) { + if (from.has_name()) { set_name(from.name()); } } @@ -5967,7 +5962,7 @@ void getxattrRequest::CopyFrom(const getxattrRequest& from) { bool getxattrRequest::IsInitialized() const { if ((_has_bits_[0] & 0x00000007) != 0x00000007) return false; - + return true; } @@ -5993,11 +5988,9 @@ void getxattrRequest::Swap(getxattrRequest* other) { // =================================================================== -const ::std::string getxattrResponse::_default_value_; -const ::std::string getxattrResponse::_default_value_bytes_; #ifndef _MSC_VER const int getxattrResponse::kValueFieldNumber; -const int getxattrResponse::kValueBytesFieldNumber; +const int getxattrResponse::kValueBytesStringFieldNumber; #endif // !_MSC_VER getxattrResponse::getxattrResponse() @@ -6016,8 +6009,8 @@ getxattrResponse::getxattrResponse(const getxattrResponse& from) void getxattrResponse::SharedCtor() { _cached_size_ = 0; - value_ = const_cast< ::std::string*>(&_default_value_); - value_bytes_ = const_cast< ::std::string*>(&_default_value_bytes_); + value_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + value_bytes_string_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); ::memset(_has_bits_, 0, sizeof(_has_bits_)); } @@ -6026,11 +6019,11 @@ getxattrResponse::~getxattrResponse() { } void getxattrResponse::SharedDtor() { - if (value_ != &_default_value_) { + if (value_ != &::google::protobuf::internal::kEmptyString) { delete value_; } - if (value_bytes_ != &_default_value_bytes_) { - delete value_bytes_; + if (value_bytes_string_ != &::google::protobuf::internal::kEmptyString) { + delete value_bytes_string_; } if (this != default_instance_) { } @@ -6047,7 +6040,8 @@ const ::google::protobuf::Descriptor* getxattrResponse::descriptor() { } const getxattrResponse& getxattrResponse::default_instance() { - if (default_instance_ == NULL) protobuf_AddDesc_xtreemfs_2fMRC_2eproto(); return *default_instance_; + if (default_instance_ == NULL) protobuf_AddDesc_xtreemfs_2fMRC_2eproto(); + return *default_instance_; } getxattrResponse* getxattrResponse::default_instance_ = NULL; @@ -6058,14 +6052,14 @@ getxattrResponse* getxattrResponse::New() const { void getxattrResponse::Clear() { if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) { - if (_has_bit(0)) { - if (value_ != &_default_value_) { + if (has_value()) { + if (value_ != &::google::protobuf::internal::kEmptyString) { value_->clear(); } } - if (_has_bit(1)) { - if (value_bytes_ != &_default_value_bytes_) { - value_bytes_->clear(); + if (has_value_bytes_string()) { + if (value_bytes_string_ != &::google::protobuf::internal::kEmptyString) { + value_bytes_string_->clear(); } } } @@ -6091,24 +6085,24 @@ bool getxattrResponse::MergePartialFromCodedStream( } else { goto handle_uninterpreted; } - if (input->ExpectTag(18)) goto parse_value_bytes; + if (input->ExpectTag(18)) goto parse_value_bytes_string; break; } - - // optional bytes value_bytes = 2; + + // optional bytes value_bytes_string = 2; case 2: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) { - parse_value_bytes: + parse_value_bytes_string: DO_(::google::protobuf::internal::WireFormatLite::ReadBytes( - input, this->mutable_value_bytes())); + input, this->mutable_value_bytes_string())); } else { goto handle_uninterpreted; } if (input->ExpectAtEnd()) return true; break; } - + default: { handle_uninterpreted: if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -6128,20 +6122,20 @@ bool getxattrResponse::MergePartialFromCodedStream( void getxattrResponse::SerializeWithCachedSizes( ::google::protobuf::io::CodedOutputStream* output) const { // required string value = 1; - if (_has_bit(0)) { + if (has_value()) { ::google::protobuf::internal::WireFormat::VerifyUTF8String( this->value().data(), this->value().length(), ::google::protobuf::internal::WireFormat::SERIALIZE); ::google::protobuf::internal::WireFormatLite::WriteString( 1, this->value(), output); } - - // optional bytes value_bytes = 2; - if (_has_bit(1)) { + + // optional bytes value_bytes_string = 2; + if (has_value_bytes_string()) { ::google::protobuf::internal::WireFormatLite::WriteBytes( - 2, this->value_bytes(), output); + 2, this->value_bytes_string(), output); } - + if (!unknown_fields().empty()) { ::google::protobuf::internal::WireFormat::SerializeUnknownFields( unknown_fields(), output); @@ -6151,7 +6145,7 @@ void getxattrResponse::SerializeWithCachedSizes( ::google::protobuf::uint8* getxattrResponse::SerializeWithCachedSizesToArray( ::google::protobuf::uint8* target) const { // required string value = 1; - if (_has_bit(0)) { + if (has_value()) { ::google::protobuf::internal::WireFormat::VerifyUTF8String( this->value().data(), this->value().length(), ::google::protobuf::internal::WireFormat::SERIALIZE); @@ -6159,14 +6153,14 @@ void getxattrResponse::SerializeWithCachedSizes( ::google::protobuf::internal::WireFormatLite::WriteStringToArray( 1, this->value(), target); } - - // optional bytes value_bytes = 2; - if (_has_bit(1)) { + + // optional bytes value_bytes_string = 2; + if (has_value_bytes_string()) { target = ::google::protobuf::internal::WireFormatLite::WriteBytesToArray( - 2, this->value_bytes(), target); + 2, this->value_bytes_string(), target); } - + if (!unknown_fields().empty()) { target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray( unknown_fields(), target); @@ -6176,7 +6170,7 @@ void getxattrResponse::SerializeWithCachedSizes( int getxattrResponse::ByteSize() const { int total_size = 0; - + if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) { // required string value = 1; if (has_value()) { @@ -6184,14 +6178,14 @@ int getxattrResponse::ByteSize() const { ::google::protobuf::internal::WireFormatLite::StringSize( this->value()); } - - // optional bytes value_bytes = 2; - if (has_value_bytes()) { + + // optional bytes value_bytes_string = 2; + if (has_value_bytes_string()) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::BytesSize( - this->value_bytes()); + this->value_bytes_string()); } - + } if (!unknown_fields().empty()) { total_size += @@ -6219,11 +6213,11 @@ void getxattrResponse::MergeFrom(const ::google::protobuf::Message& from) { void getxattrResponse::MergeFrom(const getxattrResponse& from) { GOOGLE_CHECK_NE(&from, this); if (from._has_bits_[0 / 32] & (0xffu << (0 % 32))) { - if (from._has_bit(0)) { + if (from.has_value()) { set_value(from.value()); } - if (from._has_bit(1)) { - set_value_bytes(from.value_bytes()); + if (from.has_value_bytes_string()) { + set_value_bytes_string(from.value_bytes_string()); } } mutable_unknown_fields()->MergeFrom(from.unknown_fields()); @@ -6243,14 +6237,14 @@ void getxattrResponse::CopyFrom(const getxattrResponse& from) { bool getxattrResponse::IsInitialized() const { if ((_has_bits_[0] & 0x00000001) != 0x00000001) return false; - + return true; } void getxattrResponse::Swap(getxattrResponse* other) { if (other != this) { std::swap(value_, other->value_); - std::swap(value_bytes_, other->value_bytes_); + std::swap(value_bytes_string_, other->value_bytes_string_); std::swap(_has_bits_[0], other->_has_bits_[0]); _unknown_fields_.Swap(&other->_unknown_fields_); std::swap(_cached_size_, other->_cached_size_); @@ -6268,9 +6262,6 @@ void getxattrResponse::Swap(getxattrResponse* other) { // =================================================================== -const ::std::string linkRequest::_default_volume_name_; -const ::std::string linkRequest::_default_target_path_; -const ::std::string linkRequest::_default_link_path_; #ifndef _MSC_VER const int linkRequest::kVolumeNameFieldNumber; const int linkRequest::kTargetPathFieldNumber; @@ -6293,9 +6284,9 @@ linkRequest::linkRequest(const linkRequest& from) void linkRequest::SharedCtor() { _cached_size_ = 0; - volume_name_ = const_cast< ::std::string*>(&_default_volume_name_); - target_path_ = const_cast< ::std::string*>(&_default_target_path_); - link_path_ = const_cast< ::std::string*>(&_default_link_path_); + volume_name_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + target_path_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + link_path_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); ::memset(_has_bits_, 0, sizeof(_has_bits_)); } @@ -6304,13 +6295,13 @@ linkRequest::~linkRequest() { } void linkRequest::SharedDtor() { - if (volume_name_ != &_default_volume_name_) { + if (volume_name_ != &::google::protobuf::internal::kEmptyString) { delete volume_name_; } - if (target_path_ != &_default_target_path_) { + if (target_path_ != &::google::protobuf::internal::kEmptyString) { delete target_path_; } - if (link_path_ != &_default_link_path_) { + if (link_path_ != &::google::protobuf::internal::kEmptyString) { delete link_path_; } if (this != default_instance_) { @@ -6328,7 +6319,8 @@ const ::google::protobuf::Descriptor* linkRequest::descriptor() { } const linkRequest& linkRequest::default_instance() { - if (default_instance_ == NULL) protobuf_AddDesc_xtreemfs_2fMRC_2eproto(); return *default_instance_; + if (default_instance_ == NULL) protobuf_AddDesc_xtreemfs_2fMRC_2eproto(); + return *default_instance_; } linkRequest* linkRequest::default_instance_ = NULL; @@ -6339,18 +6331,18 @@ linkRequest* linkRequest::New() const { void linkRequest::Clear() { if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) { - if (_has_bit(0)) { - if (volume_name_ != &_default_volume_name_) { + if (has_volume_name()) { + if (volume_name_ != &::google::protobuf::internal::kEmptyString) { volume_name_->clear(); } } - if (_has_bit(1)) { - if (target_path_ != &_default_target_path_) { + if (has_target_path()) { + if (target_path_ != &::google::protobuf::internal::kEmptyString) { target_path_->clear(); } } - if (_has_bit(2)) { - if (link_path_ != &_default_link_path_) { + if (has_link_path()) { + if (link_path_ != &::google::protobuf::internal::kEmptyString) { link_path_->clear(); } } @@ -6380,7 +6372,7 @@ bool linkRequest::MergePartialFromCodedStream( if (input->ExpectTag(18)) goto parse_target_path; break; } - + // required string target_path = 2; case 2: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -6397,7 +6389,7 @@ bool linkRequest::MergePartialFromCodedStream( if (input->ExpectTag(26)) goto parse_link_path; break; } - + // required string link_path = 3; case 3: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -6414,7 +6406,7 @@ bool linkRequest::MergePartialFromCodedStream( if (input->ExpectAtEnd()) return true; break; } - + default: { handle_uninterpreted: if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -6434,32 +6426,32 @@ bool linkRequest::MergePartialFromCodedStream( void linkRequest::SerializeWithCachedSizes( ::google::protobuf::io::CodedOutputStream* output) const { // required string volume_name = 1; - if (_has_bit(0)) { + if (has_volume_name()) { ::google::protobuf::internal::WireFormat::VerifyUTF8String( this->volume_name().data(), this->volume_name().length(), ::google::protobuf::internal::WireFormat::SERIALIZE); ::google::protobuf::internal::WireFormatLite::WriteString( 1, this->volume_name(), output); } - + // required string target_path = 2; - if (_has_bit(1)) { + if (has_target_path()) { ::google::protobuf::internal::WireFormat::VerifyUTF8String( this->target_path().data(), this->target_path().length(), ::google::protobuf::internal::WireFormat::SERIALIZE); ::google::protobuf::internal::WireFormatLite::WriteString( 2, this->target_path(), output); } - + // required string link_path = 3; - if (_has_bit(2)) { + if (has_link_path()) { ::google::protobuf::internal::WireFormat::VerifyUTF8String( this->link_path().data(), this->link_path().length(), ::google::protobuf::internal::WireFormat::SERIALIZE); ::google::protobuf::internal::WireFormatLite::WriteString( 3, this->link_path(), output); } - + if (!unknown_fields().empty()) { ::google::protobuf::internal::WireFormat::SerializeUnknownFields( unknown_fields(), output); @@ -6469,7 +6461,7 @@ void linkRequest::SerializeWithCachedSizes( ::google::protobuf::uint8* linkRequest::SerializeWithCachedSizesToArray( ::google::protobuf::uint8* target) const { // required string volume_name = 1; - if (_has_bit(0)) { + if (has_volume_name()) { ::google::protobuf::internal::WireFormat::VerifyUTF8String( this->volume_name().data(), this->volume_name().length(), ::google::protobuf::internal::WireFormat::SERIALIZE); @@ -6477,9 +6469,9 @@ void linkRequest::SerializeWithCachedSizes( ::google::protobuf::internal::WireFormatLite::WriteStringToArray( 1, this->volume_name(), target); } - + // required string target_path = 2; - if (_has_bit(1)) { + if (has_target_path()) { ::google::protobuf::internal::WireFormat::VerifyUTF8String( this->target_path().data(), this->target_path().length(), ::google::protobuf::internal::WireFormat::SERIALIZE); @@ -6487,9 +6479,9 @@ void linkRequest::SerializeWithCachedSizes( ::google::protobuf::internal::WireFormatLite::WriteStringToArray( 2, this->target_path(), target); } - + // required string link_path = 3; - if (_has_bit(2)) { + if (has_link_path()) { ::google::protobuf::internal::WireFormat::VerifyUTF8String( this->link_path().data(), this->link_path().length(), ::google::protobuf::internal::WireFormat::SERIALIZE); @@ -6497,7 +6489,7 @@ void linkRequest::SerializeWithCachedSizes( ::google::protobuf::internal::WireFormatLite::WriteStringToArray( 3, this->link_path(), target); } - + if (!unknown_fields().empty()) { target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray( unknown_fields(), target); @@ -6507,7 +6499,7 @@ void linkRequest::SerializeWithCachedSizes( int linkRequest::ByteSize() const { int total_size = 0; - + if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) { // required string volume_name = 1; if (has_volume_name()) { @@ -6515,21 +6507,21 @@ int linkRequest::ByteSize() const { ::google::protobuf::internal::WireFormatLite::StringSize( this->volume_name()); } - + // required string target_path = 2; if (has_target_path()) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::StringSize( this->target_path()); } - + // required string link_path = 3; if (has_link_path()) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::StringSize( this->link_path()); } - + } if (!unknown_fields().empty()) { total_size += @@ -6557,13 +6549,13 @@ void linkRequest::MergeFrom(const ::google::protobuf::Message& from) { void linkRequest::MergeFrom(const linkRequest& from) { GOOGLE_CHECK_NE(&from, this); if (from._has_bits_[0 / 32] & (0xffu << (0 % 32))) { - if (from._has_bit(0)) { + if (from.has_volume_name()) { set_volume_name(from.volume_name()); } - if (from._has_bit(1)) { + if (from.has_target_path()) { set_target_path(from.target_path()); } - if (from._has_bit(2)) { + if (from.has_link_path()) { set_link_path(from.link_path()); } } @@ -6584,7 +6576,7 @@ void linkRequest::CopyFrom(const linkRequest& from) { bool linkRequest::IsInitialized() const { if ((_has_bits_[0] & 0x00000007) != 0x00000007) return false; - + return true; } @@ -6610,8 +6602,6 @@ void linkRequest::Swap(linkRequest* other) { // =================================================================== -const ::std::string listxattrRequest::_default_volume_name_; -const ::std::string listxattrRequest::_default_path_; #ifndef _MSC_VER const int listxattrRequest::kVolumeNameFieldNumber; const int listxattrRequest::kPathFieldNumber; @@ -6634,8 +6624,8 @@ listxattrRequest::listxattrRequest(const listxattrRequest& from) void listxattrRequest::SharedCtor() { _cached_size_ = 0; - volume_name_ = const_cast< ::std::string*>(&_default_volume_name_); - path_ = const_cast< ::std::string*>(&_default_path_); + volume_name_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + path_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); names_only_ = false; ::memset(_has_bits_, 0, sizeof(_has_bits_)); } @@ -6645,10 +6635,10 @@ listxattrRequest::~listxattrRequest() { } void listxattrRequest::SharedDtor() { - if (volume_name_ != &_default_volume_name_) { + if (volume_name_ != &::google::protobuf::internal::kEmptyString) { delete volume_name_; } - if (path_ != &_default_path_) { + if (path_ != &::google::protobuf::internal::kEmptyString) { delete path_; } if (this != default_instance_) { @@ -6666,7 +6656,8 @@ const ::google::protobuf::Descriptor* listxattrRequest::descriptor() { } const listxattrRequest& listxattrRequest::default_instance() { - if (default_instance_ == NULL) protobuf_AddDesc_xtreemfs_2fMRC_2eproto(); return *default_instance_; + if (default_instance_ == NULL) protobuf_AddDesc_xtreemfs_2fMRC_2eproto(); + return *default_instance_; } listxattrRequest* listxattrRequest::default_instance_ = NULL; @@ -6677,13 +6668,13 @@ listxattrRequest* listxattrRequest::New() const { void listxattrRequest::Clear() { if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) { - if (_has_bit(0)) { - if (volume_name_ != &_default_volume_name_) { + if (has_volume_name()) { + if (volume_name_ != &::google::protobuf::internal::kEmptyString) { volume_name_->clear(); } } - if (_has_bit(1)) { - if (path_ != &_default_path_) { + if (has_path()) { + if (path_ != &::google::protobuf::internal::kEmptyString) { path_->clear(); } } @@ -6714,7 +6705,7 @@ bool listxattrRequest::MergePartialFromCodedStream( if (input->ExpectTag(18)) goto parse_path; break; } - + // required string path = 2; case 2: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -6731,7 +6722,7 @@ bool listxattrRequest::MergePartialFromCodedStream( if (input->ExpectTag(24)) goto parse_names_only; break; } - + // required bool names_only = 3; case 3: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -6740,14 +6731,14 @@ bool listxattrRequest::MergePartialFromCodedStream( DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive< bool, ::google::protobuf::internal::WireFormatLite::TYPE_BOOL>( input, &names_only_))); - _set_bit(2); + set_has_names_only(); } else { goto handle_uninterpreted; } if (input->ExpectAtEnd()) return true; break; } - + default: { handle_uninterpreted: if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -6767,28 +6758,28 @@ bool listxattrRequest::MergePartialFromCodedStream( void listxattrRequest::SerializeWithCachedSizes( ::google::protobuf::io::CodedOutputStream* output) const { // required string volume_name = 1; - if (_has_bit(0)) { + if (has_volume_name()) { ::google::protobuf::internal::WireFormat::VerifyUTF8String( this->volume_name().data(), this->volume_name().length(), ::google::protobuf::internal::WireFormat::SERIALIZE); ::google::protobuf::internal::WireFormatLite::WriteString( 1, this->volume_name(), output); } - + // required string path = 2; - if (_has_bit(1)) { + if (has_path()) { ::google::protobuf::internal::WireFormat::VerifyUTF8String( this->path().data(), this->path().length(), ::google::protobuf::internal::WireFormat::SERIALIZE); ::google::protobuf::internal::WireFormatLite::WriteString( 2, this->path(), output); } - + // required bool names_only = 3; - if (_has_bit(2)) { + if (has_names_only()) { ::google::protobuf::internal::WireFormatLite::WriteBool(3, this->names_only(), output); } - + if (!unknown_fields().empty()) { ::google::protobuf::internal::WireFormat::SerializeUnknownFields( unknown_fields(), output); @@ -6798,7 +6789,7 @@ void listxattrRequest::SerializeWithCachedSizes( ::google::protobuf::uint8* listxattrRequest::SerializeWithCachedSizesToArray( ::google::protobuf::uint8* target) const { // required string volume_name = 1; - if (_has_bit(0)) { + if (has_volume_name()) { ::google::protobuf::internal::WireFormat::VerifyUTF8String( this->volume_name().data(), this->volume_name().length(), ::google::protobuf::internal::WireFormat::SERIALIZE); @@ -6806,9 +6797,9 @@ void listxattrRequest::SerializeWithCachedSizes( ::google::protobuf::internal::WireFormatLite::WriteStringToArray( 1, this->volume_name(), target); } - + // required string path = 2; - if (_has_bit(1)) { + if (has_path()) { ::google::protobuf::internal::WireFormat::VerifyUTF8String( this->path().data(), this->path().length(), ::google::protobuf::internal::WireFormat::SERIALIZE); @@ -6816,12 +6807,12 @@ void listxattrRequest::SerializeWithCachedSizes( ::google::protobuf::internal::WireFormatLite::WriteStringToArray( 2, this->path(), target); } - + // required bool names_only = 3; - if (_has_bit(2)) { + if (has_names_only()) { target = ::google::protobuf::internal::WireFormatLite::WriteBoolToArray(3, this->names_only(), target); } - + if (!unknown_fields().empty()) { target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray( unknown_fields(), target); @@ -6831,7 +6822,7 @@ void listxattrRequest::SerializeWithCachedSizes( int listxattrRequest::ByteSize() const { int total_size = 0; - + if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) { // required string volume_name = 1; if (has_volume_name()) { @@ -6839,19 +6830,19 @@ int listxattrRequest::ByteSize() const { ::google::protobuf::internal::WireFormatLite::StringSize( this->volume_name()); } - + // required string path = 2; if (has_path()) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::StringSize( this->path()); } - + // required bool names_only = 3; if (has_names_only()) { total_size += 1 + 1; } - + } if (!unknown_fields().empty()) { total_size += @@ -6879,13 +6870,13 @@ void listxattrRequest::MergeFrom(const ::google::protobuf::Message& from) { void listxattrRequest::MergeFrom(const listxattrRequest& from) { GOOGLE_CHECK_NE(&from, this); if (from._has_bits_[0 / 32] & (0xffu << (0 % 32))) { - if (from._has_bit(0)) { + if (from.has_volume_name()) { set_volume_name(from.volume_name()); } - if (from._has_bit(1)) { + if (from.has_path()) { set_path(from.path()); } - if (from._has_bit(2)) { + if (from.has_names_only()) { set_names_only(from.names_only()); } } @@ -6906,7 +6897,7 @@ void listxattrRequest::CopyFrom(const listxattrRequest& from) { bool listxattrRequest::IsInitialized() const { if ((_has_bits_[0] & 0x00000007) != 0x00000007) return false; - + return true; } @@ -6975,7 +6966,8 @@ const ::google::protobuf::Descriptor* listxattrResponse::descriptor() { } const listxattrResponse& listxattrResponse::default_instance() { - if (default_instance_ == NULL) protobuf_AddDesc_xtreemfs_2fMRC_2eproto(); return *default_instance_; + if (default_instance_ == NULL) protobuf_AddDesc_xtreemfs_2fMRC_2eproto(); + return *default_instance_; } listxattrResponse* listxattrResponse::default_instance_ = NULL; @@ -7010,7 +7002,7 @@ bool listxattrResponse::MergePartialFromCodedStream( if (input->ExpectAtEnd()) return true; break; } - + default: { handle_uninterpreted: if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -7034,7 +7026,7 @@ void listxattrResponse::SerializeWithCachedSizes( ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray( 1, this->xattrs(i), output); } - + if (!unknown_fields().empty()) { ::google::protobuf::internal::WireFormat::SerializeUnknownFields( unknown_fields(), output); @@ -7049,7 +7041,7 @@ void listxattrResponse::SerializeWithCachedSizes( WriteMessageNoVirtualToArray( 1, this->xattrs(i), target); } - + if (!unknown_fields().empty()) { target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray( unknown_fields(), target); @@ -7059,7 +7051,7 @@ void listxattrResponse::SerializeWithCachedSizes( int listxattrResponse::ByteSize() const { int total_size = 0; - + // repeated .xtreemfs.pbrpc.XAttr xattrs = 1; total_size += 1 * this->xattrs_size(); for (int i = 0; i < this->xattrs_size(); i++) { @@ -7067,7 +7059,7 @@ int listxattrResponse::ByteSize() const { ::google::protobuf::internal::WireFormatLite::MessageSizeNoVirtual( this->xattrs(i)); } - + if (!unknown_fields().empty()) { total_size += ::google::protobuf::internal::WireFormat::ComputeUnknownFieldsSize( @@ -7110,7 +7102,7 @@ void listxattrResponse::CopyFrom(const listxattrResponse& from) { } bool listxattrResponse::IsInitialized() const { - + for (int i = 0; i < xattrs_size(); i++) { if (!this->xattrs(i).IsInitialized()) return false; } @@ -7137,8 +7129,6 @@ void listxattrResponse::Swap(listxattrResponse* other) { // =================================================================== -const ::std::string mkdirRequest::_default_volume_name_; -const ::std::string mkdirRequest::_default_path_; #ifndef _MSC_VER const int mkdirRequest::kVolumeNameFieldNumber; const int mkdirRequest::kPathFieldNumber; @@ -7161,8 +7151,8 @@ mkdirRequest::mkdirRequest(const mkdirRequest& from) void mkdirRequest::SharedCtor() { _cached_size_ = 0; - volume_name_ = const_cast< ::std::string*>(&_default_volume_name_); - path_ = const_cast< ::std::string*>(&_default_path_); + volume_name_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + path_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); mode_ = 0u; ::memset(_has_bits_, 0, sizeof(_has_bits_)); } @@ -7172,10 +7162,10 @@ mkdirRequest::~mkdirRequest() { } void mkdirRequest::SharedDtor() { - if (volume_name_ != &_default_volume_name_) { + if (volume_name_ != &::google::protobuf::internal::kEmptyString) { delete volume_name_; } - if (path_ != &_default_path_) { + if (path_ != &::google::protobuf::internal::kEmptyString) { delete path_; } if (this != default_instance_) { @@ -7193,7 +7183,8 @@ const ::google::protobuf::Descriptor* mkdirRequest::descriptor() { } const mkdirRequest& mkdirRequest::default_instance() { - if (default_instance_ == NULL) protobuf_AddDesc_xtreemfs_2fMRC_2eproto(); return *default_instance_; + if (default_instance_ == NULL) protobuf_AddDesc_xtreemfs_2fMRC_2eproto(); + return *default_instance_; } mkdirRequest* mkdirRequest::default_instance_ = NULL; @@ -7204,13 +7195,13 @@ mkdirRequest* mkdirRequest::New() const { void mkdirRequest::Clear() { if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) { - if (_has_bit(0)) { - if (volume_name_ != &_default_volume_name_) { + if (has_volume_name()) { + if (volume_name_ != &::google::protobuf::internal::kEmptyString) { volume_name_->clear(); } } - if (_has_bit(1)) { - if (path_ != &_default_path_) { + if (has_path()) { + if (path_ != &::google::protobuf::internal::kEmptyString) { path_->clear(); } } @@ -7241,7 +7232,7 @@ bool mkdirRequest::MergePartialFromCodedStream( if (input->ExpectTag(18)) goto parse_path; break; } - + // required string path = 2; case 2: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -7258,7 +7249,7 @@ bool mkdirRequest::MergePartialFromCodedStream( if (input->ExpectTag(29)) goto parse_mode; break; } - + // required fixed32 mode = 3; case 3: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -7267,14 +7258,14 @@ bool mkdirRequest::MergePartialFromCodedStream( DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive< ::google::protobuf::uint32, ::google::protobuf::internal::WireFormatLite::TYPE_FIXED32>( input, &mode_))); - _set_bit(2); + set_has_mode(); } else { goto handle_uninterpreted; } if (input->ExpectAtEnd()) return true; break; } - + default: { handle_uninterpreted: if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -7294,28 +7285,28 @@ bool mkdirRequest::MergePartialFromCodedStream( void mkdirRequest::SerializeWithCachedSizes( ::google::protobuf::io::CodedOutputStream* output) const { // required string volume_name = 1; - if (_has_bit(0)) { + if (has_volume_name()) { ::google::protobuf::internal::WireFormat::VerifyUTF8String( this->volume_name().data(), this->volume_name().length(), ::google::protobuf::internal::WireFormat::SERIALIZE); ::google::protobuf::internal::WireFormatLite::WriteString( 1, this->volume_name(), output); } - + // required string path = 2; - if (_has_bit(1)) { + if (has_path()) { ::google::protobuf::internal::WireFormat::VerifyUTF8String( this->path().data(), this->path().length(), ::google::protobuf::internal::WireFormat::SERIALIZE); ::google::protobuf::internal::WireFormatLite::WriteString( 2, this->path(), output); } - + // required fixed32 mode = 3; - if (_has_bit(2)) { + if (has_mode()) { ::google::protobuf::internal::WireFormatLite::WriteFixed32(3, this->mode(), output); } - + if (!unknown_fields().empty()) { ::google::protobuf::internal::WireFormat::SerializeUnknownFields( unknown_fields(), output); @@ -7325,7 +7316,7 @@ void mkdirRequest::SerializeWithCachedSizes( ::google::protobuf::uint8* mkdirRequest::SerializeWithCachedSizesToArray( ::google::protobuf::uint8* target) const { // required string volume_name = 1; - if (_has_bit(0)) { + if (has_volume_name()) { ::google::protobuf::internal::WireFormat::VerifyUTF8String( this->volume_name().data(), this->volume_name().length(), ::google::protobuf::internal::WireFormat::SERIALIZE); @@ -7333,9 +7324,9 @@ void mkdirRequest::SerializeWithCachedSizes( ::google::protobuf::internal::WireFormatLite::WriteStringToArray( 1, this->volume_name(), target); } - + // required string path = 2; - if (_has_bit(1)) { + if (has_path()) { ::google::protobuf::internal::WireFormat::VerifyUTF8String( this->path().data(), this->path().length(), ::google::protobuf::internal::WireFormat::SERIALIZE); @@ -7343,12 +7334,12 @@ void mkdirRequest::SerializeWithCachedSizes( ::google::protobuf::internal::WireFormatLite::WriteStringToArray( 2, this->path(), target); } - + // required fixed32 mode = 3; - if (_has_bit(2)) { + if (has_mode()) { target = ::google::protobuf::internal::WireFormatLite::WriteFixed32ToArray(3, this->mode(), target); } - + if (!unknown_fields().empty()) { target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray( unknown_fields(), target); @@ -7358,7 +7349,7 @@ void mkdirRequest::SerializeWithCachedSizes( int mkdirRequest::ByteSize() const { int total_size = 0; - + if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) { // required string volume_name = 1; if (has_volume_name()) { @@ -7366,19 +7357,19 @@ int mkdirRequest::ByteSize() const { ::google::protobuf::internal::WireFormatLite::StringSize( this->volume_name()); } - + // required string path = 2; if (has_path()) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::StringSize( this->path()); } - + // required fixed32 mode = 3; if (has_mode()) { total_size += 1 + 4; } - + } if (!unknown_fields().empty()) { total_size += @@ -7406,13 +7397,13 @@ void mkdirRequest::MergeFrom(const ::google::protobuf::Message& from) { void mkdirRequest::MergeFrom(const mkdirRequest& from) { GOOGLE_CHECK_NE(&from, this); if (from._has_bits_[0 / 32] & (0xffu << (0 % 32))) { - if (from._has_bit(0)) { + if (from.has_volume_name()) { set_volume_name(from.volume_name()); } - if (from._has_bit(1)) { + if (from.has_path()) { set_path(from.path()); } - if (from._has_bit(2)) { + if (from.has_mode()) { set_mode(from.mode()); } } @@ -7433,7 +7424,7 @@ void mkdirRequest::CopyFrom(const mkdirRequest& from) { bool mkdirRequest::IsInitialized() const { if ((_has_bits_[0] & 0x00000007) != 0x00000007) return false; - + return true; } @@ -7459,8 +7450,6 @@ void mkdirRequest::Swap(mkdirRequest* other) { // =================================================================== -const ::std::string openRequest::_default_volume_name_; -const ::std::string openRequest::_default_path_; #ifndef _MSC_VER const int openRequest::kVolumeNameFieldNumber; const int openRequest::kPathFieldNumber; @@ -7487,8 +7476,8 @@ openRequest::openRequest(const openRequest& from) void openRequest::SharedCtor() { _cached_size_ = 0; - volume_name_ = const_cast< ::std::string*>(&_default_volume_name_); - path_ = const_cast< ::std::string*>(&_default_path_); + volume_name_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + path_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); flags_ = 0u; mode_ = 0u; attributes_ = 0u; @@ -7501,10 +7490,10 @@ openRequest::~openRequest() { } void openRequest::SharedDtor() { - if (volume_name_ != &_default_volume_name_) { + if (volume_name_ != &::google::protobuf::internal::kEmptyString) { delete volume_name_; } - if (path_ != &_default_path_) { + if (path_ != &::google::protobuf::internal::kEmptyString) { delete path_; } if (this != default_instance_) { @@ -7523,7 +7512,8 @@ const ::google::protobuf::Descriptor* openRequest::descriptor() { } const openRequest& openRequest::default_instance() { - if (default_instance_ == NULL) protobuf_AddDesc_xtreemfs_2fMRC_2eproto(); return *default_instance_; + if (default_instance_ == NULL) protobuf_AddDesc_xtreemfs_2fMRC_2eproto(); + return *default_instance_; } openRequest* openRequest::default_instance_ = NULL; @@ -7534,20 +7524,20 @@ openRequest* openRequest::New() const { void openRequest::Clear() { if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) { - if (_has_bit(0)) { - if (volume_name_ != &_default_volume_name_) { + if (has_volume_name()) { + if (volume_name_ != &::google::protobuf::internal::kEmptyString) { volume_name_->clear(); } } - if (_has_bit(1)) { - if (path_ != &_default_path_) { + if (has_path()) { + if (path_ != &::google::protobuf::internal::kEmptyString) { path_->clear(); } } flags_ = 0u; mode_ = 0u; attributes_ = 0u; - if (_has_bit(5)) { + if (has_coordinates()) { if (coordinates_ != NULL) coordinates_->::xtreemfs::pbrpc::VivaldiCoordinates::Clear(); } } @@ -7576,7 +7566,7 @@ bool openRequest::MergePartialFromCodedStream( if (input->ExpectTag(18)) goto parse_path; break; } - + // required string path = 2; case 2: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -7593,7 +7583,7 @@ bool openRequest::MergePartialFromCodedStream( if (input->ExpectTag(29)) goto parse_flags; break; } - + // required fixed32 flags = 3; case 3: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -7602,14 +7592,14 @@ bool openRequest::MergePartialFromCodedStream( DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive< ::google::protobuf::uint32, ::google::protobuf::internal::WireFormatLite::TYPE_FIXED32>( input, &flags_))); - _set_bit(2); + set_has_flags(); } else { goto handle_uninterpreted; } if (input->ExpectTag(37)) goto parse_mode; break; } - + // required fixed32 mode = 4; case 4: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -7618,14 +7608,14 @@ bool openRequest::MergePartialFromCodedStream( DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive< ::google::protobuf::uint32, ::google::protobuf::internal::WireFormatLite::TYPE_FIXED32>( input, &mode_))); - _set_bit(3); + set_has_mode(); } else { goto handle_uninterpreted; } if (input->ExpectTag(45)) goto parse_attributes; break; } - + // required fixed32 attributes = 5; case 5: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -7634,14 +7624,14 @@ bool openRequest::MergePartialFromCodedStream( DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive< ::google::protobuf::uint32, ::google::protobuf::internal::WireFormatLite::TYPE_FIXED32>( input, &attributes_))); - _set_bit(4); + set_has_attributes(); } else { goto handle_uninterpreted; } if (input->ExpectTag(50)) goto parse_coordinates; break; } - + // optional .xtreemfs.pbrpc.VivaldiCoordinates coordinates = 6; case 6: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -7655,7 +7645,7 @@ bool openRequest::MergePartialFromCodedStream( if (input->ExpectAtEnd()) return true; break; } - + default: { handle_uninterpreted: if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -7675,44 +7665,44 @@ bool openRequest::MergePartialFromCodedStream( void openRequest::SerializeWithCachedSizes( ::google::protobuf::io::CodedOutputStream* output) const { // required string volume_name = 1; - if (_has_bit(0)) { + if (has_volume_name()) { ::google::protobuf::internal::WireFormat::VerifyUTF8String( this->volume_name().data(), this->volume_name().length(), ::google::protobuf::internal::WireFormat::SERIALIZE); ::google::protobuf::internal::WireFormatLite::WriteString( 1, this->volume_name(), output); } - + // required string path = 2; - if (_has_bit(1)) { + if (has_path()) { ::google::protobuf::internal::WireFormat::VerifyUTF8String( this->path().data(), this->path().length(), ::google::protobuf::internal::WireFormat::SERIALIZE); ::google::protobuf::internal::WireFormatLite::WriteString( 2, this->path(), output); } - + // required fixed32 flags = 3; - if (_has_bit(2)) { + if (has_flags()) { ::google::protobuf::internal::WireFormatLite::WriteFixed32(3, this->flags(), output); } - + // required fixed32 mode = 4; - if (_has_bit(3)) { + if (has_mode()) { ::google::protobuf::internal::WireFormatLite::WriteFixed32(4, this->mode(), output); } - + // required fixed32 attributes = 5; - if (_has_bit(4)) { + if (has_attributes()) { ::google::protobuf::internal::WireFormatLite::WriteFixed32(5, this->attributes(), output); } - + // optional .xtreemfs.pbrpc.VivaldiCoordinates coordinates = 6; - if (_has_bit(5)) { + if (has_coordinates()) { ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray( 6, this->coordinates(), output); } - + if (!unknown_fields().empty()) { ::google::protobuf::internal::WireFormat::SerializeUnknownFields( unknown_fields(), output); @@ -7722,7 +7712,7 @@ void openRequest::SerializeWithCachedSizes( ::google::protobuf::uint8* openRequest::SerializeWithCachedSizesToArray( ::google::protobuf::uint8* target) const { // required string volume_name = 1; - if (_has_bit(0)) { + if (has_volume_name()) { ::google::protobuf::internal::WireFormat::VerifyUTF8String( this->volume_name().data(), this->volume_name().length(), ::google::protobuf::internal::WireFormat::SERIALIZE); @@ -7730,9 +7720,9 @@ void openRequest::SerializeWithCachedSizes( ::google::protobuf::internal::WireFormatLite::WriteStringToArray( 1, this->volume_name(), target); } - + // required string path = 2; - if (_has_bit(1)) { + if (has_path()) { ::google::protobuf::internal::WireFormat::VerifyUTF8String( this->path().data(), this->path().length(), ::google::protobuf::internal::WireFormat::SERIALIZE); @@ -7740,29 +7730,29 @@ void openRequest::SerializeWithCachedSizes( ::google::protobuf::internal::WireFormatLite::WriteStringToArray( 2, this->path(), target); } - + // required fixed32 flags = 3; - if (_has_bit(2)) { + if (has_flags()) { target = ::google::protobuf::internal::WireFormatLite::WriteFixed32ToArray(3, this->flags(), target); } - + // required fixed32 mode = 4; - if (_has_bit(3)) { + if (has_mode()) { target = ::google::protobuf::internal::WireFormatLite::WriteFixed32ToArray(4, this->mode(), target); } - + // required fixed32 attributes = 5; - if (_has_bit(4)) { + if (has_attributes()) { target = ::google::protobuf::internal::WireFormatLite::WriteFixed32ToArray(5, this->attributes(), target); } - + // optional .xtreemfs.pbrpc.VivaldiCoordinates coordinates = 6; - if (_has_bit(5)) { + if (has_coordinates()) { target = ::google::protobuf::internal::WireFormatLite:: WriteMessageNoVirtualToArray( 6, this->coordinates(), target); } - + if (!unknown_fields().empty()) { target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray( unknown_fields(), target); @@ -7772,7 +7762,7 @@ void openRequest::SerializeWithCachedSizes( int openRequest::ByteSize() const { int total_size = 0; - + if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) { // required string volume_name = 1; if (has_volume_name()) { @@ -7780,36 +7770,36 @@ int openRequest::ByteSize() const { ::google::protobuf::internal::WireFormatLite::StringSize( this->volume_name()); } - + // required string path = 2; if (has_path()) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::StringSize( this->path()); } - + // required fixed32 flags = 3; if (has_flags()) { total_size += 1 + 4; } - + // required fixed32 mode = 4; if (has_mode()) { total_size += 1 + 4; } - + // required fixed32 attributes = 5; if (has_attributes()) { total_size += 1 + 4; } - + // optional .xtreemfs.pbrpc.VivaldiCoordinates coordinates = 6; if (has_coordinates()) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::MessageSizeNoVirtual( this->coordinates()); } - + } if (!unknown_fields().empty()) { total_size += @@ -7837,22 +7827,22 @@ void openRequest::MergeFrom(const ::google::protobuf::Message& from) { void openRequest::MergeFrom(const openRequest& from) { GOOGLE_CHECK_NE(&from, this); if (from._has_bits_[0 / 32] & (0xffu << (0 % 32))) { - if (from._has_bit(0)) { + if (from.has_volume_name()) { set_volume_name(from.volume_name()); } - if (from._has_bit(1)) { + if (from.has_path()) { set_path(from.path()); } - if (from._has_bit(2)) { + if (from.has_flags()) { set_flags(from.flags()); } - if (from._has_bit(3)) { + if (from.has_mode()) { set_mode(from.mode()); } - if (from._has_bit(4)) { + if (from.has_attributes()) { set_attributes(from.attributes()); } - if (from._has_bit(5)) { + if (from.has_coordinates()) { mutable_coordinates()->::xtreemfs::pbrpc::VivaldiCoordinates::MergeFrom(from.coordinates()); } } @@ -7873,7 +7863,7 @@ void openRequest::CopyFrom(const openRequest& from) { bool openRequest::IsInitialized() const { if ((_has_bits_[0] & 0x0000001f) != 0x0000001f) return false; - + if (has_coordinates()) { if (!this->coordinates().IsInitialized()) return false; } @@ -7953,7 +7943,8 @@ const ::google::protobuf::Descriptor* openResponse::descriptor() { } const openResponse& openResponse::default_instance() { - if (default_instance_ == NULL) protobuf_AddDesc_xtreemfs_2fMRC_2eproto(); return *default_instance_; + if (default_instance_ == NULL) protobuf_AddDesc_xtreemfs_2fMRC_2eproto(); + return *default_instance_; } openResponse* openResponse::default_instance_ = NULL; @@ -7964,7 +7955,7 @@ openResponse* openResponse::New() const { void openResponse::Clear() { if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) { - if (_has_bit(0)) { + if (has_creds()) { if (creds_ != NULL) creds_->::xtreemfs::pbrpc::FileCredentials::Clear(); } timestamp_s_ = 0u; @@ -7991,7 +7982,7 @@ bool openResponse::MergePartialFromCodedStream( if (input->ExpectTag(21)) goto parse_timestamp_s; break; } - + // required fixed32 timestamp_s = 2; case 2: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -8000,14 +7991,14 @@ bool openResponse::MergePartialFromCodedStream( DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive< ::google::protobuf::uint32, ::google::protobuf::internal::WireFormatLite::TYPE_FIXED32>( input, ×tamp_s_))); - _set_bit(1); + set_has_timestamp_s(); } else { goto handle_uninterpreted; } if (input->ExpectAtEnd()) return true; break; } - + default: { handle_uninterpreted: if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -8027,16 +8018,16 @@ bool openResponse::MergePartialFromCodedStream( void openResponse::SerializeWithCachedSizes( ::google::protobuf::io::CodedOutputStream* output) const { // required .xtreemfs.pbrpc.FileCredentials creds = 1; - if (_has_bit(0)) { + if (has_creds()) { ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray( 1, this->creds(), output); } - + // required fixed32 timestamp_s = 2; - if (_has_bit(1)) { + if (has_timestamp_s()) { ::google::protobuf::internal::WireFormatLite::WriteFixed32(2, this->timestamp_s(), output); } - + if (!unknown_fields().empty()) { ::google::protobuf::internal::WireFormat::SerializeUnknownFields( unknown_fields(), output); @@ -8046,17 +8037,17 @@ void openResponse::SerializeWithCachedSizes( ::google::protobuf::uint8* openResponse::SerializeWithCachedSizesToArray( ::google::protobuf::uint8* target) const { // required .xtreemfs.pbrpc.FileCredentials creds = 1; - if (_has_bit(0)) { + if (has_creds()) { target = ::google::protobuf::internal::WireFormatLite:: WriteMessageNoVirtualToArray( 1, this->creds(), target); } - + // required fixed32 timestamp_s = 2; - if (_has_bit(1)) { + if (has_timestamp_s()) { target = ::google::protobuf::internal::WireFormatLite::WriteFixed32ToArray(2, this->timestamp_s(), target); } - + if (!unknown_fields().empty()) { target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray( unknown_fields(), target); @@ -8066,7 +8057,7 @@ void openResponse::SerializeWithCachedSizes( int openResponse::ByteSize() const { int total_size = 0; - + if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) { // required .xtreemfs.pbrpc.FileCredentials creds = 1; if (has_creds()) { @@ -8074,12 +8065,12 @@ int openResponse::ByteSize() const { ::google::protobuf::internal::WireFormatLite::MessageSizeNoVirtual( this->creds()); } - + // required fixed32 timestamp_s = 2; if (has_timestamp_s()) { total_size += 1 + 4; } - + } if (!unknown_fields().empty()) { total_size += @@ -8107,10 +8098,10 @@ void openResponse::MergeFrom(const ::google::protobuf::Message& from) { void openResponse::MergeFrom(const openResponse& from) { GOOGLE_CHECK_NE(&from, this); if (from._has_bits_[0 / 32] & (0xffu << (0 % 32))) { - if (from._has_bit(0)) { + if (from.has_creds()) { mutable_creds()->::xtreemfs::pbrpc::FileCredentials::MergeFrom(from.creds()); } - if (from._has_bit(1)) { + if (from.has_timestamp_s()) { set_timestamp_s(from.timestamp_s()); } } @@ -8131,7 +8122,7 @@ void openResponse::CopyFrom(const openResponse& from) { bool openResponse::IsInitialized() const { if ((_has_bits_[0] & 0x00000003) != 0x00000003) return false; - + if (has_creds()) { if (!this->creds().IsInitialized()) return false; } @@ -8159,8 +8150,6 @@ void openResponse::Swap(openResponse* other) { // =================================================================== -const ::std::string readdirRequest::_default_volume_name_; -const ::std::string readdirRequest::_default_path_; #ifndef _MSC_VER const int readdirRequest::kVolumeNameFieldNumber; const int readdirRequest::kPathFieldNumber; @@ -8186,8 +8175,8 @@ readdirRequest::readdirRequest(const readdirRequest& from) void readdirRequest::SharedCtor() { _cached_size_ = 0; - volume_name_ = const_cast< ::std::string*>(&_default_volume_name_); - path_ = const_cast< ::std::string*>(&_default_path_); + volume_name_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + path_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); known_etag_ = GOOGLE_ULONGLONG(0); limit_directory_entries_count_ = 0u; names_only_ = false; @@ -8200,10 +8189,10 @@ readdirRequest::~readdirRequest() { } void readdirRequest::SharedDtor() { - if (volume_name_ != &_default_volume_name_) { + if (volume_name_ != &::google::protobuf::internal::kEmptyString) { delete volume_name_; } - if (path_ != &_default_path_) { + if (path_ != &::google::protobuf::internal::kEmptyString) { delete path_; } if (this != default_instance_) { @@ -8221,7 +8210,8 @@ const ::google::protobuf::Descriptor* readdirRequest::descriptor() { } const readdirRequest& readdirRequest::default_instance() { - if (default_instance_ == NULL) protobuf_AddDesc_xtreemfs_2fMRC_2eproto(); return *default_instance_; + if (default_instance_ == NULL) protobuf_AddDesc_xtreemfs_2fMRC_2eproto(); + return *default_instance_; } readdirRequest* readdirRequest::default_instance_ = NULL; @@ -8232,13 +8222,13 @@ readdirRequest* readdirRequest::New() const { void readdirRequest::Clear() { if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) { - if (_has_bit(0)) { - if (volume_name_ != &_default_volume_name_) { + if (has_volume_name()) { + if (volume_name_ != &::google::protobuf::internal::kEmptyString) { volume_name_->clear(); } } - if (_has_bit(1)) { - if (path_ != &_default_path_) { + if (has_path()) { + if (path_ != &::google::protobuf::internal::kEmptyString) { path_->clear(); } } @@ -8272,7 +8262,7 @@ bool readdirRequest::MergePartialFromCodedStream( if (input->ExpectTag(18)) goto parse_path; break; } - + // required string path = 2; case 2: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -8289,7 +8279,7 @@ bool readdirRequest::MergePartialFromCodedStream( if (input->ExpectTag(25)) goto parse_known_etag; break; } - + // required fixed64 known_etag = 3; case 3: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -8298,14 +8288,14 @@ bool readdirRequest::MergePartialFromCodedStream( DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive< ::google::protobuf::uint64, ::google::protobuf::internal::WireFormatLite::TYPE_FIXED64>( input, &known_etag_))); - _set_bit(2); + set_has_known_etag(); } else { goto handle_uninterpreted; } if (input->ExpectTag(37)) goto parse_limit_directory_entries_count; break; } - + // required fixed32 limit_directory_entries_count = 4; case 4: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -8314,14 +8304,14 @@ bool readdirRequest::MergePartialFromCodedStream( DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive< ::google::protobuf::uint32, ::google::protobuf::internal::WireFormatLite::TYPE_FIXED32>( input, &limit_directory_entries_count_))); - _set_bit(3); + set_has_limit_directory_entries_count(); } else { goto handle_uninterpreted; } if (input->ExpectTag(40)) goto parse_names_only; break; } - + // required bool names_only = 5; case 5: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -8330,14 +8320,14 @@ bool readdirRequest::MergePartialFromCodedStream( DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive< bool, ::google::protobuf::internal::WireFormatLite::TYPE_BOOL>( input, &names_only_))); - _set_bit(4); + set_has_names_only(); } else { goto handle_uninterpreted; } if (input->ExpectTag(49)) goto parse_seen_directory_entries_count; break; } - + // required fixed64 seen_directory_entries_count = 6; case 6: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -8346,14 +8336,14 @@ bool readdirRequest::MergePartialFromCodedStream( DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive< ::google::protobuf::uint64, ::google::protobuf::internal::WireFormatLite::TYPE_FIXED64>( input, &seen_directory_entries_count_))); - _set_bit(5); + set_has_seen_directory_entries_count(); } else { goto handle_uninterpreted; } if (input->ExpectAtEnd()) return true; break; } - + default: { handle_uninterpreted: if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -8373,43 +8363,43 @@ bool readdirRequest::MergePartialFromCodedStream( void readdirRequest::SerializeWithCachedSizes( ::google::protobuf::io::CodedOutputStream* output) const { // required string volume_name = 1; - if (_has_bit(0)) { + if (has_volume_name()) { ::google::protobuf::internal::WireFormat::VerifyUTF8String( this->volume_name().data(), this->volume_name().length(), ::google::protobuf::internal::WireFormat::SERIALIZE); ::google::protobuf::internal::WireFormatLite::WriteString( 1, this->volume_name(), output); } - + // required string path = 2; - if (_has_bit(1)) { + if (has_path()) { ::google::protobuf::internal::WireFormat::VerifyUTF8String( this->path().data(), this->path().length(), ::google::protobuf::internal::WireFormat::SERIALIZE); ::google::protobuf::internal::WireFormatLite::WriteString( 2, this->path(), output); } - + // required fixed64 known_etag = 3; - if (_has_bit(2)) { + if (has_known_etag()) { ::google::protobuf::internal::WireFormatLite::WriteFixed64(3, this->known_etag(), output); } - + // required fixed32 limit_directory_entries_count = 4; - if (_has_bit(3)) { + if (has_limit_directory_entries_count()) { ::google::protobuf::internal::WireFormatLite::WriteFixed32(4, this->limit_directory_entries_count(), output); } - + // required bool names_only = 5; - if (_has_bit(4)) { + if (has_names_only()) { ::google::protobuf::internal::WireFormatLite::WriteBool(5, this->names_only(), output); } - + // required fixed64 seen_directory_entries_count = 6; - if (_has_bit(5)) { + if (has_seen_directory_entries_count()) { ::google::protobuf::internal::WireFormatLite::WriteFixed64(6, this->seen_directory_entries_count(), output); } - + if (!unknown_fields().empty()) { ::google::protobuf::internal::WireFormat::SerializeUnknownFields( unknown_fields(), output); @@ -8419,7 +8409,7 @@ void readdirRequest::SerializeWithCachedSizes( ::google::protobuf::uint8* readdirRequest::SerializeWithCachedSizesToArray( ::google::protobuf::uint8* target) const { // required string volume_name = 1; - if (_has_bit(0)) { + if (has_volume_name()) { ::google::protobuf::internal::WireFormat::VerifyUTF8String( this->volume_name().data(), this->volume_name().length(), ::google::protobuf::internal::WireFormat::SERIALIZE); @@ -8427,9 +8417,9 @@ void readdirRequest::SerializeWithCachedSizes( ::google::protobuf::internal::WireFormatLite::WriteStringToArray( 1, this->volume_name(), target); } - + // required string path = 2; - if (_has_bit(1)) { + if (has_path()) { ::google::protobuf::internal::WireFormat::VerifyUTF8String( this->path().data(), this->path().length(), ::google::protobuf::internal::WireFormat::SERIALIZE); @@ -8437,27 +8427,27 @@ void readdirRequest::SerializeWithCachedSizes( ::google::protobuf::internal::WireFormatLite::WriteStringToArray( 2, this->path(), target); } - + // required fixed64 known_etag = 3; - if (_has_bit(2)) { + if (has_known_etag()) { target = ::google::protobuf::internal::WireFormatLite::WriteFixed64ToArray(3, this->known_etag(), target); } - + // required fixed32 limit_directory_entries_count = 4; - if (_has_bit(3)) { + if (has_limit_directory_entries_count()) { target = ::google::protobuf::internal::WireFormatLite::WriteFixed32ToArray(4, this->limit_directory_entries_count(), target); } - + // required bool names_only = 5; - if (_has_bit(4)) { + if (has_names_only()) { target = ::google::protobuf::internal::WireFormatLite::WriteBoolToArray(5, this->names_only(), target); } - + // required fixed64 seen_directory_entries_count = 6; - if (_has_bit(5)) { + if (has_seen_directory_entries_count()) { target = ::google::protobuf::internal::WireFormatLite::WriteFixed64ToArray(6, this->seen_directory_entries_count(), target); } - + if (!unknown_fields().empty()) { target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray( unknown_fields(), target); @@ -8467,7 +8457,7 @@ void readdirRequest::SerializeWithCachedSizes( int readdirRequest::ByteSize() const { int total_size = 0; - + if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) { // required string volume_name = 1; if (has_volume_name()) { @@ -8475,34 +8465,34 @@ int readdirRequest::ByteSize() const { ::google::protobuf::internal::WireFormatLite::StringSize( this->volume_name()); } - + // required string path = 2; if (has_path()) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::StringSize( this->path()); } - + // required fixed64 known_etag = 3; if (has_known_etag()) { total_size += 1 + 8; } - + // required fixed32 limit_directory_entries_count = 4; if (has_limit_directory_entries_count()) { total_size += 1 + 4; } - + // required bool names_only = 5; if (has_names_only()) { total_size += 1 + 1; } - + // required fixed64 seen_directory_entries_count = 6; if (has_seen_directory_entries_count()) { total_size += 1 + 8; } - + } if (!unknown_fields().empty()) { total_size += @@ -8530,22 +8520,22 @@ void readdirRequest::MergeFrom(const ::google::protobuf::Message& from) { void readdirRequest::MergeFrom(const readdirRequest& from) { GOOGLE_CHECK_NE(&from, this); if (from._has_bits_[0 / 32] & (0xffu << (0 % 32))) { - if (from._has_bit(0)) { + if (from.has_volume_name()) { set_volume_name(from.volume_name()); } - if (from._has_bit(1)) { + if (from.has_path()) { set_path(from.path()); } - if (from._has_bit(2)) { + if (from.has_known_etag()) { set_known_etag(from.known_etag()); } - if (from._has_bit(3)) { + if (from.has_limit_directory_entries_count()) { set_limit_directory_entries_count(from.limit_directory_entries_count()); } - if (from._has_bit(4)) { + if (from.has_names_only()) { set_names_only(from.names_only()); } - if (from._has_bit(5)) { + if (from.has_seen_directory_entries_count()) { set_seen_directory_entries_count(from.seen_directory_entries_count()); } } @@ -8566,7 +8556,7 @@ void readdirRequest::CopyFrom(const readdirRequest& from) { bool readdirRequest::IsInitialized() const { if ((_has_bits_[0] & 0x0000003f) != 0x0000003f) return false; - + return true; } @@ -8595,8 +8585,6 @@ void readdirRequest::Swap(readdirRequest* other) { // =================================================================== -const ::std::string readlinkRequest::_default_volume_name_; -const ::std::string readlinkRequest::_default_path_; #ifndef _MSC_VER const int readlinkRequest::kVolumeNameFieldNumber; const int readlinkRequest::kPathFieldNumber; @@ -8618,8 +8606,8 @@ readlinkRequest::readlinkRequest(const readlinkRequest& from) void readlinkRequest::SharedCtor() { _cached_size_ = 0; - volume_name_ = const_cast< ::std::string*>(&_default_volume_name_); - path_ = const_cast< ::std::string*>(&_default_path_); + volume_name_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + path_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); ::memset(_has_bits_, 0, sizeof(_has_bits_)); } @@ -8628,10 +8616,10 @@ readlinkRequest::~readlinkRequest() { } void readlinkRequest::SharedDtor() { - if (volume_name_ != &_default_volume_name_) { + if (volume_name_ != &::google::protobuf::internal::kEmptyString) { delete volume_name_; } - if (path_ != &_default_path_) { + if (path_ != &::google::protobuf::internal::kEmptyString) { delete path_; } if (this != default_instance_) { @@ -8649,7 +8637,8 @@ const ::google::protobuf::Descriptor* readlinkRequest::descriptor() { } const readlinkRequest& readlinkRequest::default_instance() { - if (default_instance_ == NULL) protobuf_AddDesc_xtreemfs_2fMRC_2eproto(); return *default_instance_; + if (default_instance_ == NULL) protobuf_AddDesc_xtreemfs_2fMRC_2eproto(); + return *default_instance_; } readlinkRequest* readlinkRequest::default_instance_ = NULL; @@ -8660,13 +8649,13 @@ readlinkRequest* readlinkRequest::New() const { void readlinkRequest::Clear() { if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) { - if (_has_bit(0)) { - if (volume_name_ != &_default_volume_name_) { + if (has_volume_name()) { + if (volume_name_ != &::google::protobuf::internal::kEmptyString) { volume_name_->clear(); } } - if (_has_bit(1)) { - if (path_ != &_default_path_) { + if (has_path()) { + if (path_ != &::google::protobuf::internal::kEmptyString) { path_->clear(); } } @@ -8696,7 +8685,7 @@ bool readlinkRequest::MergePartialFromCodedStream( if (input->ExpectTag(18)) goto parse_path; break; } - + // required string path = 2; case 2: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -8713,7 +8702,7 @@ bool readlinkRequest::MergePartialFromCodedStream( if (input->ExpectAtEnd()) return true; break; } - + default: { handle_uninterpreted: if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -8733,23 +8722,23 @@ bool readlinkRequest::MergePartialFromCodedStream( void readlinkRequest::SerializeWithCachedSizes( ::google::protobuf::io::CodedOutputStream* output) const { // required string volume_name = 1; - if (_has_bit(0)) { + if (has_volume_name()) { ::google::protobuf::internal::WireFormat::VerifyUTF8String( this->volume_name().data(), this->volume_name().length(), ::google::protobuf::internal::WireFormat::SERIALIZE); ::google::protobuf::internal::WireFormatLite::WriteString( 1, this->volume_name(), output); } - + // required string path = 2; - if (_has_bit(1)) { + if (has_path()) { ::google::protobuf::internal::WireFormat::VerifyUTF8String( this->path().data(), this->path().length(), ::google::protobuf::internal::WireFormat::SERIALIZE); ::google::protobuf::internal::WireFormatLite::WriteString( 2, this->path(), output); } - + if (!unknown_fields().empty()) { ::google::protobuf::internal::WireFormat::SerializeUnknownFields( unknown_fields(), output); @@ -8759,7 +8748,7 @@ void readlinkRequest::SerializeWithCachedSizes( ::google::protobuf::uint8* readlinkRequest::SerializeWithCachedSizesToArray( ::google::protobuf::uint8* target) const { // required string volume_name = 1; - if (_has_bit(0)) { + if (has_volume_name()) { ::google::protobuf::internal::WireFormat::VerifyUTF8String( this->volume_name().data(), this->volume_name().length(), ::google::protobuf::internal::WireFormat::SERIALIZE); @@ -8767,9 +8756,9 @@ void readlinkRequest::SerializeWithCachedSizes( ::google::protobuf::internal::WireFormatLite::WriteStringToArray( 1, this->volume_name(), target); } - + // required string path = 2; - if (_has_bit(1)) { + if (has_path()) { ::google::protobuf::internal::WireFormat::VerifyUTF8String( this->path().data(), this->path().length(), ::google::protobuf::internal::WireFormat::SERIALIZE); @@ -8777,7 +8766,7 @@ void readlinkRequest::SerializeWithCachedSizes( ::google::protobuf::internal::WireFormatLite::WriteStringToArray( 2, this->path(), target); } - + if (!unknown_fields().empty()) { target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray( unknown_fields(), target); @@ -8787,7 +8776,7 @@ void readlinkRequest::SerializeWithCachedSizes( int readlinkRequest::ByteSize() const { int total_size = 0; - + if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) { // required string volume_name = 1; if (has_volume_name()) { @@ -8795,14 +8784,14 @@ int readlinkRequest::ByteSize() const { ::google::protobuf::internal::WireFormatLite::StringSize( this->volume_name()); } - + // required string path = 2; if (has_path()) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::StringSize( this->path()); } - + } if (!unknown_fields().empty()) { total_size += @@ -8830,10 +8819,10 @@ void readlinkRequest::MergeFrom(const ::google::protobuf::Message& from) { void readlinkRequest::MergeFrom(const readlinkRequest& from) { GOOGLE_CHECK_NE(&from, this); if (from._has_bits_[0 / 32] & (0xffu << (0 % 32))) { - if (from._has_bit(0)) { + if (from.has_volume_name()) { set_volume_name(from.volume_name()); } - if (from._has_bit(1)) { + if (from.has_path()) { set_path(from.path()); } } @@ -8854,7 +8843,7 @@ void readlinkRequest::CopyFrom(const readlinkRequest& from) { bool readlinkRequest::IsInitialized() const { if ((_has_bits_[0] & 0x00000003) != 0x00000003) return false; - + return true; } @@ -8922,7 +8911,8 @@ const ::google::protobuf::Descriptor* readlinkResponse::descriptor() { } const readlinkResponse& readlinkResponse::default_instance() { - if (default_instance_ == NULL) protobuf_AddDesc_xtreemfs_2fMRC_2eproto(); return *default_instance_; + if (default_instance_ == NULL) protobuf_AddDesc_xtreemfs_2fMRC_2eproto(); + return *default_instance_; } readlinkResponse* readlinkResponse::default_instance_ = NULL; @@ -8951,7 +8941,8 @@ bool readlinkResponse::MergePartialFromCodedStream( DO_(::google::protobuf::internal::WireFormatLite::ReadString( input, this->add_link_target_path())); ::google::protobuf::internal::WireFormat::VerifyUTF8String( - this->link_target_path(0).data(), this->link_target_path(0).length(), + this->link_target_path(this->link_target_path_size() - 1).data(), + this->link_target_path(this->link_target_path_size() - 1).length(), ::google::protobuf::internal::WireFormat::PARSE); } else { goto handle_uninterpreted; @@ -8960,7 +8951,7 @@ bool readlinkResponse::MergePartialFromCodedStream( if (input->ExpectAtEnd()) return true; break; } - + default: { handle_uninterpreted: if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -8987,7 +8978,7 @@ void readlinkResponse::SerializeWithCachedSizes( ::google::protobuf::internal::WireFormatLite::WriteString( 1, this->link_target_path(i), output); } - + if (!unknown_fields().empty()) { ::google::protobuf::internal::WireFormat::SerializeUnknownFields( unknown_fields(), output); @@ -9004,7 +8995,7 @@ void readlinkResponse::SerializeWithCachedSizes( target = ::google::protobuf::internal::WireFormatLite:: WriteStringToArray(1, this->link_target_path(i), target); } - + if (!unknown_fields().empty()) { target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray( unknown_fields(), target); @@ -9014,14 +9005,14 @@ void readlinkResponse::SerializeWithCachedSizes( int readlinkResponse::ByteSize() const { int total_size = 0; - + // repeated string link_target_path = 1; total_size += 1 * this->link_target_path_size(); for (int i = 0; i < this->link_target_path_size(); i++) { total_size += ::google::protobuf::internal::WireFormatLite::StringSize( this->link_target_path(i)); } - + if (!unknown_fields().empty()) { total_size += ::google::protobuf::internal::WireFormat::ComputeUnknownFieldsSize( @@ -9064,7 +9055,7 @@ void readlinkResponse::CopyFrom(const readlinkResponse& from) { } bool readlinkResponse::IsInitialized() const { - + return true; } @@ -9088,9 +9079,6 @@ void readlinkResponse::Swap(readlinkResponse* other) { // =================================================================== -const ::std::string removexattrRequest::_default_volume_name_; -const ::std::string removexattrRequest::_default_path_; -const ::std::string removexattrRequest::_default_name_; #ifndef _MSC_VER const int removexattrRequest::kVolumeNameFieldNumber; const int removexattrRequest::kPathFieldNumber; @@ -9113,9 +9101,9 @@ removexattrRequest::removexattrRequest(const removexattrRequest& from) void removexattrRequest::SharedCtor() { _cached_size_ = 0; - volume_name_ = const_cast< ::std::string*>(&_default_volume_name_); - path_ = const_cast< ::std::string*>(&_default_path_); - name_ = const_cast< ::std::string*>(&_default_name_); + volume_name_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + path_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + name_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); ::memset(_has_bits_, 0, sizeof(_has_bits_)); } @@ -9124,13 +9112,13 @@ removexattrRequest::~removexattrRequest() { } void removexattrRequest::SharedDtor() { - if (volume_name_ != &_default_volume_name_) { + if (volume_name_ != &::google::protobuf::internal::kEmptyString) { delete volume_name_; } - if (path_ != &_default_path_) { + if (path_ != &::google::protobuf::internal::kEmptyString) { delete path_; } - if (name_ != &_default_name_) { + if (name_ != &::google::protobuf::internal::kEmptyString) { delete name_; } if (this != default_instance_) { @@ -9148,7 +9136,8 @@ const ::google::protobuf::Descriptor* removexattrRequest::descriptor() { } const removexattrRequest& removexattrRequest::default_instance() { - if (default_instance_ == NULL) protobuf_AddDesc_xtreemfs_2fMRC_2eproto(); return *default_instance_; + if (default_instance_ == NULL) protobuf_AddDesc_xtreemfs_2fMRC_2eproto(); + return *default_instance_; } removexattrRequest* removexattrRequest::default_instance_ = NULL; @@ -9159,18 +9148,18 @@ removexattrRequest* removexattrRequest::New() const { void removexattrRequest::Clear() { if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) { - if (_has_bit(0)) { - if (volume_name_ != &_default_volume_name_) { + if (has_volume_name()) { + if (volume_name_ != &::google::protobuf::internal::kEmptyString) { volume_name_->clear(); } } - if (_has_bit(1)) { - if (path_ != &_default_path_) { + if (has_path()) { + if (path_ != &::google::protobuf::internal::kEmptyString) { path_->clear(); } } - if (_has_bit(2)) { - if (name_ != &_default_name_) { + if (has_name()) { + if (name_ != &::google::protobuf::internal::kEmptyString) { name_->clear(); } } @@ -9200,7 +9189,7 @@ bool removexattrRequest::MergePartialFromCodedStream( if (input->ExpectTag(18)) goto parse_path; break; } - + // required string path = 2; case 2: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -9217,7 +9206,7 @@ bool removexattrRequest::MergePartialFromCodedStream( if (input->ExpectTag(26)) goto parse_name; break; } - + // required string name = 3; case 3: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -9234,7 +9223,7 @@ bool removexattrRequest::MergePartialFromCodedStream( if (input->ExpectAtEnd()) return true; break; } - + default: { handle_uninterpreted: if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -9254,32 +9243,32 @@ bool removexattrRequest::MergePartialFromCodedStream( void removexattrRequest::SerializeWithCachedSizes( ::google::protobuf::io::CodedOutputStream* output) const { // required string volume_name = 1; - if (_has_bit(0)) { + if (has_volume_name()) { ::google::protobuf::internal::WireFormat::VerifyUTF8String( this->volume_name().data(), this->volume_name().length(), ::google::protobuf::internal::WireFormat::SERIALIZE); ::google::protobuf::internal::WireFormatLite::WriteString( 1, this->volume_name(), output); } - + // required string path = 2; - if (_has_bit(1)) { + if (has_path()) { ::google::protobuf::internal::WireFormat::VerifyUTF8String( this->path().data(), this->path().length(), ::google::protobuf::internal::WireFormat::SERIALIZE); ::google::protobuf::internal::WireFormatLite::WriteString( 2, this->path(), output); } - + // required string name = 3; - if (_has_bit(2)) { + if (has_name()) { ::google::protobuf::internal::WireFormat::VerifyUTF8String( this->name().data(), this->name().length(), ::google::protobuf::internal::WireFormat::SERIALIZE); ::google::protobuf::internal::WireFormatLite::WriteString( 3, this->name(), output); } - + if (!unknown_fields().empty()) { ::google::protobuf::internal::WireFormat::SerializeUnknownFields( unknown_fields(), output); @@ -9289,7 +9278,7 @@ void removexattrRequest::SerializeWithCachedSizes( ::google::protobuf::uint8* removexattrRequest::SerializeWithCachedSizesToArray( ::google::protobuf::uint8* target) const { // required string volume_name = 1; - if (_has_bit(0)) { + if (has_volume_name()) { ::google::protobuf::internal::WireFormat::VerifyUTF8String( this->volume_name().data(), this->volume_name().length(), ::google::protobuf::internal::WireFormat::SERIALIZE); @@ -9297,9 +9286,9 @@ void removexattrRequest::SerializeWithCachedSizes( ::google::protobuf::internal::WireFormatLite::WriteStringToArray( 1, this->volume_name(), target); } - + // required string path = 2; - if (_has_bit(1)) { + if (has_path()) { ::google::protobuf::internal::WireFormat::VerifyUTF8String( this->path().data(), this->path().length(), ::google::protobuf::internal::WireFormat::SERIALIZE); @@ -9307,9 +9296,9 @@ void removexattrRequest::SerializeWithCachedSizes( ::google::protobuf::internal::WireFormatLite::WriteStringToArray( 2, this->path(), target); } - + // required string name = 3; - if (_has_bit(2)) { + if (has_name()) { ::google::protobuf::internal::WireFormat::VerifyUTF8String( this->name().data(), this->name().length(), ::google::protobuf::internal::WireFormat::SERIALIZE); @@ -9317,7 +9306,7 @@ void removexattrRequest::SerializeWithCachedSizes( ::google::protobuf::internal::WireFormatLite::WriteStringToArray( 3, this->name(), target); } - + if (!unknown_fields().empty()) { target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray( unknown_fields(), target); @@ -9327,7 +9316,7 @@ void removexattrRequest::SerializeWithCachedSizes( int removexattrRequest::ByteSize() const { int total_size = 0; - + if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) { // required string volume_name = 1; if (has_volume_name()) { @@ -9335,21 +9324,21 @@ int removexattrRequest::ByteSize() const { ::google::protobuf::internal::WireFormatLite::StringSize( this->volume_name()); } - + // required string path = 2; if (has_path()) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::StringSize( this->path()); } - + // required string name = 3; if (has_name()) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::StringSize( this->name()); } - + } if (!unknown_fields().empty()) { total_size += @@ -9377,13 +9366,13 @@ void removexattrRequest::MergeFrom(const ::google::protobuf::Message& from) { void removexattrRequest::MergeFrom(const removexattrRequest& from) { GOOGLE_CHECK_NE(&from, this); if (from._has_bits_[0 / 32] & (0xffu << (0 % 32))) { - if (from._has_bit(0)) { + if (from.has_volume_name()) { set_volume_name(from.volume_name()); } - if (from._has_bit(1)) { + if (from.has_path()) { set_path(from.path()); } - if (from._has_bit(2)) { + if (from.has_name()) { set_name(from.name()); } } @@ -9404,7 +9393,7 @@ void removexattrRequest::CopyFrom(const removexattrRequest& from) { bool removexattrRequest::IsInitialized() const { if ((_has_bits_[0] & 0x00000007) != 0x00000007) return false; - + return true; } @@ -9430,9 +9419,6 @@ void removexattrRequest::Swap(removexattrRequest* other) { // =================================================================== -const ::std::string renameRequest::_default_volume_name_; -const ::std::string renameRequest::_default_source_path_; -const ::std::string renameRequest::_default_target_path_; #ifndef _MSC_VER const int renameRequest::kVolumeNameFieldNumber; const int renameRequest::kSourcePathFieldNumber; @@ -9455,9 +9441,9 @@ renameRequest::renameRequest(const renameRequest& from) void renameRequest::SharedCtor() { _cached_size_ = 0; - volume_name_ = const_cast< ::std::string*>(&_default_volume_name_); - source_path_ = const_cast< ::std::string*>(&_default_source_path_); - target_path_ = const_cast< ::std::string*>(&_default_target_path_); + volume_name_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + source_path_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + target_path_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); ::memset(_has_bits_, 0, sizeof(_has_bits_)); } @@ -9466,13 +9452,13 @@ renameRequest::~renameRequest() { } void renameRequest::SharedDtor() { - if (volume_name_ != &_default_volume_name_) { + if (volume_name_ != &::google::protobuf::internal::kEmptyString) { delete volume_name_; } - if (source_path_ != &_default_source_path_) { + if (source_path_ != &::google::protobuf::internal::kEmptyString) { delete source_path_; } - if (target_path_ != &_default_target_path_) { + if (target_path_ != &::google::protobuf::internal::kEmptyString) { delete target_path_; } if (this != default_instance_) { @@ -9490,7 +9476,8 @@ const ::google::protobuf::Descriptor* renameRequest::descriptor() { } const renameRequest& renameRequest::default_instance() { - if (default_instance_ == NULL) protobuf_AddDesc_xtreemfs_2fMRC_2eproto(); return *default_instance_; + if (default_instance_ == NULL) protobuf_AddDesc_xtreemfs_2fMRC_2eproto(); + return *default_instance_; } renameRequest* renameRequest::default_instance_ = NULL; @@ -9501,18 +9488,18 @@ renameRequest* renameRequest::New() const { void renameRequest::Clear() { if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) { - if (_has_bit(0)) { - if (volume_name_ != &_default_volume_name_) { + if (has_volume_name()) { + if (volume_name_ != &::google::protobuf::internal::kEmptyString) { volume_name_->clear(); } } - if (_has_bit(1)) { - if (source_path_ != &_default_source_path_) { + if (has_source_path()) { + if (source_path_ != &::google::protobuf::internal::kEmptyString) { source_path_->clear(); } } - if (_has_bit(2)) { - if (target_path_ != &_default_target_path_) { + if (has_target_path()) { + if (target_path_ != &::google::protobuf::internal::kEmptyString) { target_path_->clear(); } } @@ -9542,7 +9529,7 @@ bool renameRequest::MergePartialFromCodedStream( if (input->ExpectTag(18)) goto parse_source_path; break; } - + // required string source_path = 2; case 2: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -9559,7 +9546,7 @@ bool renameRequest::MergePartialFromCodedStream( if (input->ExpectTag(26)) goto parse_target_path; break; } - + // required string target_path = 3; case 3: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -9576,7 +9563,7 @@ bool renameRequest::MergePartialFromCodedStream( if (input->ExpectAtEnd()) return true; break; } - + default: { handle_uninterpreted: if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -9596,32 +9583,32 @@ bool renameRequest::MergePartialFromCodedStream( void renameRequest::SerializeWithCachedSizes( ::google::protobuf::io::CodedOutputStream* output) const { // required string volume_name = 1; - if (_has_bit(0)) { + if (has_volume_name()) { ::google::protobuf::internal::WireFormat::VerifyUTF8String( this->volume_name().data(), this->volume_name().length(), ::google::protobuf::internal::WireFormat::SERIALIZE); ::google::protobuf::internal::WireFormatLite::WriteString( 1, this->volume_name(), output); } - + // required string source_path = 2; - if (_has_bit(1)) { + if (has_source_path()) { ::google::protobuf::internal::WireFormat::VerifyUTF8String( this->source_path().data(), this->source_path().length(), ::google::protobuf::internal::WireFormat::SERIALIZE); ::google::protobuf::internal::WireFormatLite::WriteString( 2, this->source_path(), output); } - + // required string target_path = 3; - if (_has_bit(2)) { + if (has_target_path()) { ::google::protobuf::internal::WireFormat::VerifyUTF8String( this->target_path().data(), this->target_path().length(), ::google::protobuf::internal::WireFormat::SERIALIZE); ::google::protobuf::internal::WireFormatLite::WriteString( 3, this->target_path(), output); } - + if (!unknown_fields().empty()) { ::google::protobuf::internal::WireFormat::SerializeUnknownFields( unknown_fields(), output); @@ -9631,7 +9618,7 @@ void renameRequest::SerializeWithCachedSizes( ::google::protobuf::uint8* renameRequest::SerializeWithCachedSizesToArray( ::google::protobuf::uint8* target) const { // required string volume_name = 1; - if (_has_bit(0)) { + if (has_volume_name()) { ::google::protobuf::internal::WireFormat::VerifyUTF8String( this->volume_name().data(), this->volume_name().length(), ::google::protobuf::internal::WireFormat::SERIALIZE); @@ -9639,9 +9626,9 @@ void renameRequest::SerializeWithCachedSizes( ::google::protobuf::internal::WireFormatLite::WriteStringToArray( 1, this->volume_name(), target); } - + // required string source_path = 2; - if (_has_bit(1)) { + if (has_source_path()) { ::google::protobuf::internal::WireFormat::VerifyUTF8String( this->source_path().data(), this->source_path().length(), ::google::protobuf::internal::WireFormat::SERIALIZE); @@ -9649,9 +9636,9 @@ void renameRequest::SerializeWithCachedSizes( ::google::protobuf::internal::WireFormatLite::WriteStringToArray( 2, this->source_path(), target); } - + // required string target_path = 3; - if (_has_bit(2)) { + if (has_target_path()) { ::google::protobuf::internal::WireFormat::VerifyUTF8String( this->target_path().data(), this->target_path().length(), ::google::protobuf::internal::WireFormat::SERIALIZE); @@ -9659,7 +9646,7 @@ void renameRequest::SerializeWithCachedSizes( ::google::protobuf::internal::WireFormatLite::WriteStringToArray( 3, this->target_path(), target); } - + if (!unknown_fields().empty()) { target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray( unknown_fields(), target); @@ -9669,7 +9656,7 @@ void renameRequest::SerializeWithCachedSizes( int renameRequest::ByteSize() const { int total_size = 0; - + if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) { // required string volume_name = 1; if (has_volume_name()) { @@ -9677,21 +9664,21 @@ int renameRequest::ByteSize() const { ::google::protobuf::internal::WireFormatLite::StringSize( this->volume_name()); } - + // required string source_path = 2; if (has_source_path()) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::StringSize( this->source_path()); } - + // required string target_path = 3; if (has_target_path()) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::StringSize( this->target_path()); } - + } if (!unknown_fields().empty()) { total_size += @@ -9719,13 +9706,13 @@ void renameRequest::MergeFrom(const ::google::protobuf::Message& from) { void renameRequest::MergeFrom(const renameRequest& from) { GOOGLE_CHECK_NE(&from, this); if (from._has_bits_[0 / 32] & (0xffu << (0 % 32))) { - if (from._has_bit(0)) { + if (from.has_volume_name()) { set_volume_name(from.volume_name()); } - if (from._has_bit(1)) { + if (from.has_source_path()) { set_source_path(from.source_path()); } - if (from._has_bit(2)) { + if (from.has_target_path()) { set_target_path(from.target_path()); } } @@ -9746,7 +9733,7 @@ void renameRequest::CopyFrom(const renameRequest& from) { bool renameRequest::IsInitialized() const { if ((_has_bits_[0] & 0x00000007) != 0x00000007) return false; - + return true; } @@ -9820,7 +9807,8 @@ const ::google::protobuf::Descriptor* renameResponse::descriptor() { } const renameResponse& renameResponse::default_instance() { - if (default_instance_ == NULL) protobuf_AddDesc_xtreemfs_2fMRC_2eproto(); return *default_instance_; + if (default_instance_ == NULL) protobuf_AddDesc_xtreemfs_2fMRC_2eproto(); + return *default_instance_; } renameResponse* renameResponse::default_instance_ = NULL; @@ -9832,7 +9820,7 @@ renameResponse* renameResponse::New() const { void renameResponse::Clear() { if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) { timestamp_s_ = 0u; - if (_has_bit(1)) { + if (has_creds()) { if (creds_ != NULL) creds_->::xtreemfs::pbrpc::FileCredentials::Clear(); } } @@ -9853,14 +9841,14 @@ bool renameResponse::MergePartialFromCodedStream( DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive< ::google::protobuf::uint32, ::google::protobuf::internal::WireFormatLite::TYPE_FIXED32>( input, ×tamp_s_))); - _set_bit(0); + set_has_timestamp_s(); } else { goto handle_uninterpreted; } if (input->ExpectTag(18)) goto parse_creds; break; } - + // optional .xtreemfs.pbrpc.FileCredentials creds = 2; case 2: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -9874,7 +9862,7 @@ bool renameResponse::MergePartialFromCodedStream( if (input->ExpectAtEnd()) return true; break; } - + default: { handle_uninterpreted: if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -9894,16 +9882,16 @@ bool renameResponse::MergePartialFromCodedStream( void renameResponse::SerializeWithCachedSizes( ::google::protobuf::io::CodedOutputStream* output) const { // required fixed32 timestamp_s = 1; - if (_has_bit(0)) { + if (has_timestamp_s()) { ::google::protobuf::internal::WireFormatLite::WriteFixed32(1, this->timestamp_s(), output); } - + // optional .xtreemfs.pbrpc.FileCredentials creds = 2; - if (_has_bit(1)) { + if (has_creds()) { ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray( 2, this->creds(), output); } - + if (!unknown_fields().empty()) { ::google::protobuf::internal::WireFormat::SerializeUnknownFields( unknown_fields(), output); @@ -9913,17 +9901,17 @@ void renameResponse::SerializeWithCachedSizes( ::google::protobuf::uint8* renameResponse::SerializeWithCachedSizesToArray( ::google::protobuf::uint8* target) const { // required fixed32 timestamp_s = 1; - if (_has_bit(0)) { + if (has_timestamp_s()) { target = ::google::protobuf::internal::WireFormatLite::WriteFixed32ToArray(1, this->timestamp_s(), target); } - + // optional .xtreemfs.pbrpc.FileCredentials creds = 2; - if (_has_bit(1)) { + if (has_creds()) { target = ::google::protobuf::internal::WireFormatLite:: WriteMessageNoVirtualToArray( 2, this->creds(), target); } - + if (!unknown_fields().empty()) { target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray( unknown_fields(), target); @@ -9933,20 +9921,20 @@ void renameResponse::SerializeWithCachedSizes( int renameResponse::ByteSize() const { int total_size = 0; - + if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) { // required fixed32 timestamp_s = 1; if (has_timestamp_s()) { total_size += 1 + 4; } - + // optional .xtreemfs.pbrpc.FileCredentials creds = 2; if (has_creds()) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::MessageSizeNoVirtual( this->creds()); } - + } if (!unknown_fields().empty()) { total_size += @@ -9974,10 +9962,10 @@ void renameResponse::MergeFrom(const ::google::protobuf::Message& from) { void renameResponse::MergeFrom(const renameResponse& from) { GOOGLE_CHECK_NE(&from, this); if (from._has_bits_[0 / 32] & (0xffu << (0 % 32))) { - if (from._has_bit(0)) { + if (from.has_timestamp_s()) { set_timestamp_s(from.timestamp_s()); } - if (from._has_bit(1)) { + if (from.has_creds()) { mutable_creds()->::xtreemfs::pbrpc::FileCredentials::MergeFrom(from.creds()); } } @@ -9998,7 +9986,7 @@ void renameResponse::CopyFrom(const renameResponse& from) { bool renameResponse::IsInitialized() const { if ((_has_bits_[0] & 0x00000001) != 0x00000001) return false; - + if (has_creds()) { if (!this->creds().IsInitialized()) return false; } @@ -10026,8 +10014,6 @@ void renameResponse::Swap(renameResponse* other) { // =================================================================== -const ::std::string rmdirRequest::_default_volume_name_; -const ::std::string rmdirRequest::_default_path_; #ifndef _MSC_VER const int rmdirRequest::kVolumeNameFieldNumber; const int rmdirRequest::kPathFieldNumber; @@ -10049,8 +10035,8 @@ rmdirRequest::rmdirRequest(const rmdirRequest& from) void rmdirRequest::SharedCtor() { _cached_size_ = 0; - volume_name_ = const_cast< ::std::string*>(&_default_volume_name_); - path_ = const_cast< ::std::string*>(&_default_path_); + volume_name_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + path_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); ::memset(_has_bits_, 0, sizeof(_has_bits_)); } @@ -10059,10 +10045,10 @@ rmdirRequest::~rmdirRequest() { } void rmdirRequest::SharedDtor() { - if (volume_name_ != &_default_volume_name_) { + if (volume_name_ != &::google::protobuf::internal::kEmptyString) { delete volume_name_; } - if (path_ != &_default_path_) { + if (path_ != &::google::protobuf::internal::kEmptyString) { delete path_; } if (this != default_instance_) { @@ -10080,7 +10066,8 @@ const ::google::protobuf::Descriptor* rmdirRequest::descriptor() { } const rmdirRequest& rmdirRequest::default_instance() { - if (default_instance_ == NULL) protobuf_AddDesc_xtreemfs_2fMRC_2eproto(); return *default_instance_; + if (default_instance_ == NULL) protobuf_AddDesc_xtreemfs_2fMRC_2eproto(); + return *default_instance_; } rmdirRequest* rmdirRequest::default_instance_ = NULL; @@ -10091,13 +10078,13 @@ rmdirRequest* rmdirRequest::New() const { void rmdirRequest::Clear() { if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) { - if (_has_bit(0)) { - if (volume_name_ != &_default_volume_name_) { + if (has_volume_name()) { + if (volume_name_ != &::google::protobuf::internal::kEmptyString) { volume_name_->clear(); } } - if (_has_bit(1)) { - if (path_ != &_default_path_) { + if (has_path()) { + if (path_ != &::google::protobuf::internal::kEmptyString) { path_->clear(); } } @@ -10127,7 +10114,7 @@ bool rmdirRequest::MergePartialFromCodedStream( if (input->ExpectTag(18)) goto parse_path; break; } - + // required string path = 2; case 2: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -10144,7 +10131,7 @@ bool rmdirRequest::MergePartialFromCodedStream( if (input->ExpectAtEnd()) return true; break; } - + default: { handle_uninterpreted: if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -10164,23 +10151,23 @@ bool rmdirRequest::MergePartialFromCodedStream( void rmdirRequest::SerializeWithCachedSizes( ::google::protobuf::io::CodedOutputStream* output) const { // required string volume_name = 1; - if (_has_bit(0)) { + if (has_volume_name()) { ::google::protobuf::internal::WireFormat::VerifyUTF8String( this->volume_name().data(), this->volume_name().length(), ::google::protobuf::internal::WireFormat::SERIALIZE); ::google::protobuf::internal::WireFormatLite::WriteString( 1, this->volume_name(), output); } - + // required string path = 2; - if (_has_bit(1)) { + if (has_path()) { ::google::protobuf::internal::WireFormat::VerifyUTF8String( this->path().data(), this->path().length(), ::google::protobuf::internal::WireFormat::SERIALIZE); ::google::protobuf::internal::WireFormatLite::WriteString( 2, this->path(), output); } - + if (!unknown_fields().empty()) { ::google::protobuf::internal::WireFormat::SerializeUnknownFields( unknown_fields(), output); @@ -10190,7 +10177,7 @@ void rmdirRequest::SerializeWithCachedSizes( ::google::protobuf::uint8* rmdirRequest::SerializeWithCachedSizesToArray( ::google::protobuf::uint8* target) const { // required string volume_name = 1; - if (_has_bit(0)) { + if (has_volume_name()) { ::google::protobuf::internal::WireFormat::VerifyUTF8String( this->volume_name().data(), this->volume_name().length(), ::google::protobuf::internal::WireFormat::SERIALIZE); @@ -10198,9 +10185,9 @@ void rmdirRequest::SerializeWithCachedSizes( ::google::protobuf::internal::WireFormatLite::WriteStringToArray( 1, this->volume_name(), target); } - + // required string path = 2; - if (_has_bit(1)) { + if (has_path()) { ::google::protobuf::internal::WireFormat::VerifyUTF8String( this->path().data(), this->path().length(), ::google::protobuf::internal::WireFormat::SERIALIZE); @@ -10208,7 +10195,7 @@ void rmdirRequest::SerializeWithCachedSizes( ::google::protobuf::internal::WireFormatLite::WriteStringToArray( 2, this->path(), target); } - + if (!unknown_fields().empty()) { target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray( unknown_fields(), target); @@ -10218,7 +10205,7 @@ void rmdirRequest::SerializeWithCachedSizes( int rmdirRequest::ByteSize() const { int total_size = 0; - + if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) { // required string volume_name = 1; if (has_volume_name()) { @@ -10226,14 +10213,14 @@ int rmdirRequest::ByteSize() const { ::google::protobuf::internal::WireFormatLite::StringSize( this->volume_name()); } - + // required string path = 2; if (has_path()) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::StringSize( this->path()); } - + } if (!unknown_fields().empty()) { total_size += @@ -10261,10 +10248,10 @@ void rmdirRequest::MergeFrom(const ::google::protobuf::Message& from) { void rmdirRequest::MergeFrom(const rmdirRequest& from) { GOOGLE_CHECK_NE(&from, this); if (from._has_bits_[0 / 32] & (0xffu << (0 % 32))) { - if (from._has_bit(0)) { + if (from.has_volume_name()) { set_volume_name(from.volume_name()); } - if (from._has_bit(1)) { + if (from.has_path()) { set_path(from.path()); } } @@ -10285,7 +10272,7 @@ void rmdirRequest::CopyFrom(const rmdirRequest& from) { bool rmdirRequest::IsInitialized() const { if ((_has_bits_[0] & 0x00000003) != 0x00000003) return false; - + return true; } @@ -10310,8 +10297,6 @@ void rmdirRequest::Swap(rmdirRequest* other) { // =================================================================== -const ::std::string setattrRequest::_default_volume_name_; -const ::std::string setattrRequest::_default_path_; #ifndef _MSC_VER const int setattrRequest::kVolumeNameFieldNumber; const int setattrRequest::kPathFieldNumber; @@ -10336,8 +10321,8 @@ setattrRequest::setattrRequest(const setattrRequest& from) void setattrRequest::SharedCtor() { _cached_size_ = 0; - volume_name_ = const_cast< ::std::string*>(&_default_volume_name_); - path_ = const_cast< ::std::string*>(&_default_path_); + volume_name_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + path_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); stbuf_ = NULL; to_set_ = 0u; ::memset(_has_bits_, 0, sizeof(_has_bits_)); @@ -10348,10 +10333,10 @@ setattrRequest::~setattrRequest() { } void setattrRequest::SharedDtor() { - if (volume_name_ != &_default_volume_name_) { + if (volume_name_ != &::google::protobuf::internal::kEmptyString) { delete volume_name_; } - if (path_ != &_default_path_) { + if (path_ != &::google::protobuf::internal::kEmptyString) { delete path_; } if (this != default_instance_) { @@ -10370,7 +10355,8 @@ const ::google::protobuf::Descriptor* setattrRequest::descriptor() { } const setattrRequest& setattrRequest::default_instance() { - if (default_instance_ == NULL) protobuf_AddDesc_xtreemfs_2fMRC_2eproto(); return *default_instance_; + if (default_instance_ == NULL) protobuf_AddDesc_xtreemfs_2fMRC_2eproto(); + return *default_instance_; } setattrRequest* setattrRequest::default_instance_ = NULL; @@ -10381,17 +10367,17 @@ setattrRequest* setattrRequest::New() const { void setattrRequest::Clear() { if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) { - if (_has_bit(0)) { - if (volume_name_ != &_default_volume_name_) { + if (has_volume_name()) { + if (volume_name_ != &::google::protobuf::internal::kEmptyString) { volume_name_->clear(); } } - if (_has_bit(1)) { - if (path_ != &_default_path_) { + if (has_path()) { + if (path_ != &::google::protobuf::internal::kEmptyString) { path_->clear(); } } - if (_has_bit(2)) { + if (has_stbuf()) { if (stbuf_ != NULL) stbuf_->::xtreemfs::pbrpc::Stat::Clear(); } to_set_ = 0u; @@ -10421,7 +10407,7 @@ bool setattrRequest::MergePartialFromCodedStream( if (input->ExpectTag(18)) goto parse_path; break; } - + // required string path = 2; case 2: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -10438,7 +10424,7 @@ bool setattrRequest::MergePartialFromCodedStream( if (input->ExpectTag(26)) goto parse_stbuf; break; } - + // required .xtreemfs.pbrpc.Stat stbuf = 3; case 3: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -10452,7 +10438,7 @@ bool setattrRequest::MergePartialFromCodedStream( if (input->ExpectTag(37)) goto parse_to_set; break; } - + // required fixed32 to_set = 4; case 4: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -10461,14 +10447,14 @@ bool setattrRequest::MergePartialFromCodedStream( DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive< ::google::protobuf::uint32, ::google::protobuf::internal::WireFormatLite::TYPE_FIXED32>( input, &to_set_))); - _set_bit(3); + set_has_to_set(); } else { goto handle_uninterpreted; } if (input->ExpectAtEnd()) return true; break; } - + default: { handle_uninterpreted: if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -10488,34 +10474,34 @@ bool setattrRequest::MergePartialFromCodedStream( void setattrRequest::SerializeWithCachedSizes( ::google::protobuf::io::CodedOutputStream* output) const { // required string volume_name = 1; - if (_has_bit(0)) { + if (has_volume_name()) { ::google::protobuf::internal::WireFormat::VerifyUTF8String( this->volume_name().data(), this->volume_name().length(), ::google::protobuf::internal::WireFormat::SERIALIZE); ::google::protobuf::internal::WireFormatLite::WriteString( 1, this->volume_name(), output); } - + // required string path = 2; - if (_has_bit(1)) { + if (has_path()) { ::google::protobuf::internal::WireFormat::VerifyUTF8String( this->path().data(), this->path().length(), ::google::protobuf::internal::WireFormat::SERIALIZE); ::google::protobuf::internal::WireFormatLite::WriteString( 2, this->path(), output); } - + // required .xtreemfs.pbrpc.Stat stbuf = 3; - if (_has_bit(2)) { + if (has_stbuf()) { ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray( 3, this->stbuf(), output); } - + // required fixed32 to_set = 4; - if (_has_bit(3)) { + if (has_to_set()) { ::google::protobuf::internal::WireFormatLite::WriteFixed32(4, this->to_set(), output); } - + if (!unknown_fields().empty()) { ::google::protobuf::internal::WireFormat::SerializeUnknownFields( unknown_fields(), output); @@ -10525,7 +10511,7 @@ void setattrRequest::SerializeWithCachedSizes( ::google::protobuf::uint8* setattrRequest::SerializeWithCachedSizesToArray( ::google::protobuf::uint8* target) const { // required string volume_name = 1; - if (_has_bit(0)) { + if (has_volume_name()) { ::google::protobuf::internal::WireFormat::VerifyUTF8String( this->volume_name().data(), this->volume_name().length(), ::google::protobuf::internal::WireFormat::SERIALIZE); @@ -10533,9 +10519,9 @@ void setattrRequest::SerializeWithCachedSizes( ::google::protobuf::internal::WireFormatLite::WriteStringToArray( 1, this->volume_name(), target); } - + // required string path = 2; - if (_has_bit(1)) { + if (has_path()) { ::google::protobuf::internal::WireFormat::VerifyUTF8String( this->path().data(), this->path().length(), ::google::protobuf::internal::WireFormat::SERIALIZE); @@ -10543,19 +10529,19 @@ void setattrRequest::SerializeWithCachedSizes( ::google::protobuf::internal::WireFormatLite::WriteStringToArray( 2, this->path(), target); } - + // required .xtreemfs.pbrpc.Stat stbuf = 3; - if (_has_bit(2)) { + if (has_stbuf()) { target = ::google::protobuf::internal::WireFormatLite:: WriteMessageNoVirtualToArray( 3, this->stbuf(), target); } - + // required fixed32 to_set = 4; - if (_has_bit(3)) { + if (has_to_set()) { target = ::google::protobuf::internal::WireFormatLite::WriteFixed32ToArray(4, this->to_set(), target); } - + if (!unknown_fields().empty()) { target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray( unknown_fields(), target); @@ -10565,7 +10551,7 @@ void setattrRequest::SerializeWithCachedSizes( int setattrRequest::ByteSize() const { int total_size = 0; - + if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) { // required string volume_name = 1; if (has_volume_name()) { @@ -10573,26 +10559,26 @@ int setattrRequest::ByteSize() const { ::google::protobuf::internal::WireFormatLite::StringSize( this->volume_name()); } - + // required string path = 2; if (has_path()) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::StringSize( this->path()); } - + // required .xtreemfs.pbrpc.Stat stbuf = 3; if (has_stbuf()) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::MessageSizeNoVirtual( this->stbuf()); } - + // required fixed32 to_set = 4; if (has_to_set()) { total_size += 1 + 4; } - + } if (!unknown_fields().empty()) { total_size += @@ -10620,16 +10606,16 @@ void setattrRequest::MergeFrom(const ::google::protobuf::Message& from) { void setattrRequest::MergeFrom(const setattrRequest& from) { GOOGLE_CHECK_NE(&from, this); if (from._has_bits_[0 / 32] & (0xffu << (0 % 32))) { - if (from._has_bit(0)) { + if (from.has_volume_name()) { set_volume_name(from.volume_name()); } - if (from._has_bit(1)) { + if (from.has_path()) { set_path(from.path()); } - if (from._has_bit(2)) { + if (from.has_stbuf()) { mutable_stbuf()->::xtreemfs::pbrpc::Stat::MergeFrom(from.stbuf()); } - if (from._has_bit(3)) { + if (from.has_to_set()) { set_to_set(from.to_set()); } } @@ -10650,7 +10636,7 @@ void setattrRequest::CopyFrom(const setattrRequest& from) { bool setattrRequest::IsInitialized() const { if ((_has_bits_[0] & 0x0000000f) != 0x0000000f) return false; - + if (has_stbuf()) { if (!this->stbuf().IsInitialized()) return false; } @@ -10680,17 +10666,12 @@ void setattrRequest::Swap(setattrRequest* other) { // =================================================================== -const ::std::string setxattrRequest::_default_volume_name_; -const ::std::string setxattrRequest::_default_path_; -const ::std::string setxattrRequest::_default_name_; -const ::std::string setxattrRequest::_default_value_; -const ::std::string setxattrRequest::_default_value_bytes_; #ifndef _MSC_VER const int setxattrRequest::kVolumeNameFieldNumber; const int setxattrRequest::kPathFieldNumber; const int setxattrRequest::kNameFieldNumber; const int setxattrRequest::kValueFieldNumber; -const int setxattrRequest::kValueBytesFieldNumber; +const int setxattrRequest::kValueBytesStringFieldNumber; const int setxattrRequest::kFlagsFieldNumber; #endif // !_MSC_VER @@ -10710,11 +10691,11 @@ setxattrRequest::setxattrRequest(const setxattrRequest& from) void setxattrRequest::SharedCtor() { _cached_size_ = 0; - volume_name_ = const_cast< ::std::string*>(&_default_volume_name_); - path_ = const_cast< ::std::string*>(&_default_path_); - name_ = const_cast< ::std::string*>(&_default_name_); - value_ = const_cast< ::std::string*>(&_default_value_); - value_bytes_ = const_cast< ::std::string*>(&_default_value_bytes_); + volume_name_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + path_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + name_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + value_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + value_bytes_string_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); flags_ = 0u; ::memset(_has_bits_, 0, sizeof(_has_bits_)); } @@ -10724,20 +10705,20 @@ setxattrRequest::~setxattrRequest() { } void setxattrRequest::SharedDtor() { - if (volume_name_ != &_default_volume_name_) { + if (volume_name_ != &::google::protobuf::internal::kEmptyString) { delete volume_name_; } - if (path_ != &_default_path_) { + if (path_ != &::google::protobuf::internal::kEmptyString) { delete path_; } - if (name_ != &_default_name_) { + if (name_ != &::google::protobuf::internal::kEmptyString) { delete name_; } - if (value_ != &_default_value_) { + if (value_ != &::google::protobuf::internal::kEmptyString) { delete value_; } - if (value_bytes_ != &_default_value_bytes_) { - delete value_bytes_; + if (value_bytes_string_ != &::google::protobuf::internal::kEmptyString) { + delete value_bytes_string_; } if (this != default_instance_) { } @@ -10754,7 +10735,8 @@ const ::google::protobuf::Descriptor* setxattrRequest::descriptor() { } const setxattrRequest& setxattrRequest::default_instance() { - if (default_instance_ == NULL) protobuf_AddDesc_xtreemfs_2fMRC_2eproto(); return *default_instance_; + if (default_instance_ == NULL) protobuf_AddDesc_xtreemfs_2fMRC_2eproto(); + return *default_instance_; } setxattrRequest* setxattrRequest::default_instance_ = NULL; @@ -10765,29 +10747,29 @@ setxattrRequest* setxattrRequest::New() const { void setxattrRequest::Clear() { if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) { - if (_has_bit(0)) { - if (volume_name_ != &_default_volume_name_) { + if (has_volume_name()) { + if (volume_name_ != &::google::protobuf::internal::kEmptyString) { volume_name_->clear(); } } - if (_has_bit(1)) { - if (path_ != &_default_path_) { + if (has_path()) { + if (path_ != &::google::protobuf::internal::kEmptyString) { path_->clear(); } } - if (_has_bit(2)) { - if (name_ != &_default_name_) { + if (has_name()) { + if (name_ != &::google::protobuf::internal::kEmptyString) { name_->clear(); } } - if (_has_bit(3)) { - if (value_ != &_default_value_) { + if (has_value()) { + if (value_ != &::google::protobuf::internal::kEmptyString) { value_->clear(); } } - if (_has_bit(4)) { - if (value_bytes_ != &_default_value_bytes_) { - value_bytes_->clear(); + if (has_value_bytes_string()) { + if (value_bytes_string_ != &::google::protobuf::internal::kEmptyString) { + value_bytes_string_->clear(); } } flags_ = 0u; @@ -10817,7 +10799,7 @@ bool setxattrRequest::MergePartialFromCodedStream( if (input->ExpectTag(18)) goto parse_path; break; } - + // required string path = 2; case 2: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -10834,7 +10816,7 @@ bool setxattrRequest::MergePartialFromCodedStream( if (input->ExpectTag(26)) goto parse_name; break; } - + // required string name = 3; case 3: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -10851,7 +10833,7 @@ bool setxattrRequest::MergePartialFromCodedStream( if (input->ExpectTag(34)) goto parse_value; break; } - + // required string value = 4; case 4: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -10868,7 +10850,7 @@ bool setxattrRequest::MergePartialFromCodedStream( if (input->ExpectTag(45)) goto parse_flags; break; } - + // required fixed32 flags = 5; case 5: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -10877,28 +10859,28 @@ bool setxattrRequest::MergePartialFromCodedStream( DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive< ::google::protobuf::uint32, ::google::protobuf::internal::WireFormatLite::TYPE_FIXED32>( input, &flags_))); - _set_bit(5); + set_has_flags(); } else { goto handle_uninterpreted; } - if (input->ExpectTag(50)) goto parse_value_bytes; + if (input->ExpectTag(50)) goto parse_value_bytes_string; break; } - - // optional bytes value_bytes = 6; + + // optional bytes value_bytes_string = 6; case 6: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) { - parse_value_bytes: + parse_value_bytes_string: DO_(::google::protobuf::internal::WireFormatLite::ReadBytes( - input, this->mutable_value_bytes())); + input, this->mutable_value_bytes_string())); } else { goto handle_uninterpreted; } if (input->ExpectAtEnd()) return true; break; } - + default: { handle_uninterpreted: if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -10918,52 +10900,52 @@ bool setxattrRequest::MergePartialFromCodedStream( void setxattrRequest::SerializeWithCachedSizes( ::google::protobuf::io::CodedOutputStream* output) const { // required string volume_name = 1; - if (_has_bit(0)) { + if (has_volume_name()) { ::google::protobuf::internal::WireFormat::VerifyUTF8String( this->volume_name().data(), this->volume_name().length(), ::google::protobuf::internal::WireFormat::SERIALIZE); ::google::protobuf::internal::WireFormatLite::WriteString( 1, this->volume_name(), output); } - + // required string path = 2; - if (_has_bit(1)) { + if (has_path()) { ::google::protobuf::internal::WireFormat::VerifyUTF8String( this->path().data(), this->path().length(), ::google::protobuf::internal::WireFormat::SERIALIZE); ::google::protobuf::internal::WireFormatLite::WriteString( 2, this->path(), output); } - + // required string name = 3; - if (_has_bit(2)) { + if (has_name()) { ::google::protobuf::internal::WireFormat::VerifyUTF8String( this->name().data(), this->name().length(), ::google::protobuf::internal::WireFormat::SERIALIZE); ::google::protobuf::internal::WireFormatLite::WriteString( 3, this->name(), output); } - + // required string value = 4; - if (_has_bit(3)) { + if (has_value()) { ::google::protobuf::internal::WireFormat::VerifyUTF8String( this->value().data(), this->value().length(), ::google::protobuf::internal::WireFormat::SERIALIZE); ::google::protobuf::internal::WireFormatLite::WriteString( 4, this->value(), output); } - + // required fixed32 flags = 5; - if (_has_bit(5)) { + if (has_flags()) { ::google::protobuf::internal::WireFormatLite::WriteFixed32(5, this->flags(), output); } - - // optional bytes value_bytes = 6; - if (_has_bit(4)) { + + // optional bytes value_bytes_string = 6; + if (has_value_bytes_string()) { ::google::protobuf::internal::WireFormatLite::WriteBytes( - 6, this->value_bytes(), output); + 6, this->value_bytes_string(), output); } - + if (!unknown_fields().empty()) { ::google::protobuf::internal::WireFormat::SerializeUnknownFields( unknown_fields(), output); @@ -10973,7 +10955,7 @@ void setxattrRequest::SerializeWithCachedSizes( ::google::protobuf::uint8* setxattrRequest::SerializeWithCachedSizesToArray( ::google::protobuf::uint8* target) const { // required string volume_name = 1; - if (_has_bit(0)) { + if (has_volume_name()) { ::google::protobuf::internal::WireFormat::VerifyUTF8String( this->volume_name().data(), this->volume_name().length(), ::google::protobuf::internal::WireFormat::SERIALIZE); @@ -10981,9 +10963,9 @@ void setxattrRequest::SerializeWithCachedSizes( ::google::protobuf::internal::WireFormatLite::WriteStringToArray( 1, this->volume_name(), target); } - + // required string path = 2; - if (_has_bit(1)) { + if (has_path()) { ::google::protobuf::internal::WireFormat::VerifyUTF8String( this->path().data(), this->path().length(), ::google::protobuf::internal::WireFormat::SERIALIZE); @@ -10991,9 +10973,9 @@ void setxattrRequest::SerializeWithCachedSizes( ::google::protobuf::internal::WireFormatLite::WriteStringToArray( 2, this->path(), target); } - + // required string name = 3; - if (_has_bit(2)) { + if (has_name()) { ::google::protobuf::internal::WireFormat::VerifyUTF8String( this->name().data(), this->name().length(), ::google::protobuf::internal::WireFormat::SERIALIZE); @@ -11001,9 +10983,9 @@ void setxattrRequest::SerializeWithCachedSizes( ::google::protobuf::internal::WireFormatLite::WriteStringToArray( 3, this->name(), target); } - + // required string value = 4; - if (_has_bit(3)) { + if (has_value()) { ::google::protobuf::internal::WireFormat::VerifyUTF8String( this->value().data(), this->value().length(), ::google::protobuf::internal::WireFormat::SERIALIZE); @@ -11011,19 +10993,19 @@ void setxattrRequest::SerializeWithCachedSizes( ::google::protobuf::internal::WireFormatLite::WriteStringToArray( 4, this->value(), target); } - + // required fixed32 flags = 5; - if (_has_bit(5)) { + if (has_flags()) { target = ::google::protobuf::internal::WireFormatLite::WriteFixed32ToArray(5, this->flags(), target); } - - // optional bytes value_bytes = 6; - if (_has_bit(4)) { + + // optional bytes value_bytes_string = 6; + if (has_value_bytes_string()) { target = ::google::protobuf::internal::WireFormatLite::WriteBytesToArray( - 6, this->value_bytes(), target); + 6, this->value_bytes_string(), target); } - + if (!unknown_fields().empty()) { target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray( unknown_fields(), target); @@ -11033,7 +11015,7 @@ void setxattrRequest::SerializeWithCachedSizes( int setxattrRequest::ByteSize() const { int total_size = 0; - + if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) { // required string volume_name = 1; if (has_volume_name()) { @@ -11041,40 +11023,40 @@ int setxattrRequest::ByteSize() const { ::google::protobuf::internal::WireFormatLite::StringSize( this->volume_name()); } - + // required string path = 2; if (has_path()) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::StringSize( this->path()); } - + // required string name = 3; if (has_name()) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::StringSize( this->name()); } - + // required string value = 4; if (has_value()) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::StringSize( this->value()); } - - // optional bytes value_bytes = 6; - if (has_value_bytes()) { + + // optional bytes value_bytes_string = 6; + if (has_value_bytes_string()) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::BytesSize( - this->value_bytes()); + this->value_bytes_string()); } - + // required fixed32 flags = 5; if (has_flags()) { total_size += 1 + 4; } - + } if (!unknown_fields().empty()) { total_size += @@ -11102,22 +11084,22 @@ void setxattrRequest::MergeFrom(const ::google::protobuf::Message& from) { void setxattrRequest::MergeFrom(const setxattrRequest& from) { GOOGLE_CHECK_NE(&from, this); if (from._has_bits_[0 / 32] & (0xffu << (0 % 32))) { - if (from._has_bit(0)) { + if (from.has_volume_name()) { set_volume_name(from.volume_name()); } - if (from._has_bit(1)) { + if (from.has_path()) { set_path(from.path()); } - if (from._has_bit(2)) { + if (from.has_name()) { set_name(from.name()); } - if (from._has_bit(3)) { + if (from.has_value()) { set_value(from.value()); } - if (from._has_bit(4)) { - set_value_bytes(from.value_bytes()); + if (from.has_value_bytes_string()) { + set_value_bytes_string(from.value_bytes_string()); } - if (from._has_bit(5)) { + if (from.has_flags()) { set_flags(from.flags()); } } @@ -11138,7 +11120,7 @@ void setxattrRequest::CopyFrom(const setxattrRequest& from) { bool setxattrRequest::IsInitialized() const { if ((_has_bits_[0] & 0x0000002f) != 0x0000002f) return false; - + return true; } @@ -11148,7 +11130,7 @@ void setxattrRequest::Swap(setxattrRequest* other) { std::swap(path_, other->path_); std::swap(name_, other->name_); std::swap(value_, other->value_); - std::swap(value_bytes_, other->value_bytes_); + std::swap(value_bytes_string_, other->value_bytes_string_); std::swap(flags_, other->flags_); std::swap(_has_bits_[0], other->_has_bits_[0]); _unknown_fields_.Swap(&other->_unknown_fields_); @@ -11167,7 +11149,6 @@ void setxattrRequest::Swap(setxattrRequest* other) { // =================================================================== -const ::std::string statvfsRequest::_default_volume_name_; #ifndef _MSC_VER const int statvfsRequest::kVolumeNameFieldNumber; const int statvfsRequest::kKnownEtagFieldNumber; @@ -11189,7 +11170,7 @@ statvfsRequest::statvfsRequest(const statvfsRequest& from) void statvfsRequest::SharedCtor() { _cached_size_ = 0; - volume_name_ = const_cast< ::std::string*>(&_default_volume_name_); + volume_name_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); known_etag_ = GOOGLE_ULONGLONG(0); ::memset(_has_bits_, 0, sizeof(_has_bits_)); } @@ -11199,7 +11180,7 @@ statvfsRequest::~statvfsRequest() { } void statvfsRequest::SharedDtor() { - if (volume_name_ != &_default_volume_name_) { + if (volume_name_ != &::google::protobuf::internal::kEmptyString) { delete volume_name_; } if (this != default_instance_) { @@ -11217,7 +11198,8 @@ const ::google::protobuf::Descriptor* statvfsRequest::descriptor() { } const statvfsRequest& statvfsRequest::default_instance() { - if (default_instance_ == NULL) protobuf_AddDesc_xtreemfs_2fMRC_2eproto(); return *default_instance_; + if (default_instance_ == NULL) protobuf_AddDesc_xtreemfs_2fMRC_2eproto(); + return *default_instance_; } statvfsRequest* statvfsRequest::default_instance_ = NULL; @@ -11228,8 +11210,8 @@ statvfsRequest* statvfsRequest::New() const { void statvfsRequest::Clear() { if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) { - if (_has_bit(0)) { - if (volume_name_ != &_default_volume_name_) { + if (has_volume_name()) { + if (volume_name_ != &::google::protobuf::internal::kEmptyString) { volume_name_->clear(); } } @@ -11260,7 +11242,7 @@ bool statvfsRequest::MergePartialFromCodedStream( if (input->ExpectTag(41)) goto parse_known_etag; break; } - + // required fixed64 known_etag = 5; case 5: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -11269,14 +11251,14 @@ bool statvfsRequest::MergePartialFromCodedStream( DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive< ::google::protobuf::uint64, ::google::protobuf::internal::WireFormatLite::TYPE_FIXED64>( input, &known_etag_))); - _set_bit(1); + set_has_known_etag(); } else { goto handle_uninterpreted; } if (input->ExpectAtEnd()) return true; break; } - + default: { handle_uninterpreted: if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -11296,19 +11278,19 @@ bool statvfsRequest::MergePartialFromCodedStream( void statvfsRequest::SerializeWithCachedSizes( ::google::protobuf::io::CodedOutputStream* output) const { // required string volume_name = 1; - if (_has_bit(0)) { + if (has_volume_name()) { ::google::protobuf::internal::WireFormat::VerifyUTF8String( this->volume_name().data(), this->volume_name().length(), ::google::protobuf::internal::WireFormat::SERIALIZE); ::google::protobuf::internal::WireFormatLite::WriteString( 1, this->volume_name(), output); } - + // required fixed64 known_etag = 5; - if (_has_bit(1)) { + if (has_known_etag()) { ::google::protobuf::internal::WireFormatLite::WriteFixed64(5, this->known_etag(), output); } - + if (!unknown_fields().empty()) { ::google::protobuf::internal::WireFormat::SerializeUnknownFields( unknown_fields(), output); @@ -11318,7 +11300,7 @@ void statvfsRequest::SerializeWithCachedSizes( ::google::protobuf::uint8* statvfsRequest::SerializeWithCachedSizesToArray( ::google::protobuf::uint8* target) const { // required string volume_name = 1; - if (_has_bit(0)) { + if (has_volume_name()) { ::google::protobuf::internal::WireFormat::VerifyUTF8String( this->volume_name().data(), this->volume_name().length(), ::google::protobuf::internal::WireFormat::SERIALIZE); @@ -11326,12 +11308,12 @@ void statvfsRequest::SerializeWithCachedSizes( ::google::protobuf::internal::WireFormatLite::WriteStringToArray( 1, this->volume_name(), target); } - + // required fixed64 known_etag = 5; - if (_has_bit(1)) { + if (has_known_etag()) { target = ::google::protobuf::internal::WireFormatLite::WriteFixed64ToArray(5, this->known_etag(), target); } - + if (!unknown_fields().empty()) { target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray( unknown_fields(), target); @@ -11341,7 +11323,7 @@ void statvfsRequest::SerializeWithCachedSizes( int statvfsRequest::ByteSize() const { int total_size = 0; - + if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) { // required string volume_name = 1; if (has_volume_name()) { @@ -11349,12 +11331,12 @@ int statvfsRequest::ByteSize() const { ::google::protobuf::internal::WireFormatLite::StringSize( this->volume_name()); } - + // required fixed64 known_etag = 5; if (has_known_etag()) { total_size += 1 + 8; } - + } if (!unknown_fields().empty()) { total_size += @@ -11382,10 +11364,10 @@ void statvfsRequest::MergeFrom(const ::google::protobuf::Message& from) { void statvfsRequest::MergeFrom(const statvfsRequest& from) { GOOGLE_CHECK_NE(&from, this); if (from._has_bits_[0 / 32] & (0xffu << (0 % 32))) { - if (from._has_bit(0)) { + if (from.has_volume_name()) { set_volume_name(from.volume_name()); } - if (from._has_bit(1)) { + if (from.has_known_etag()) { set_known_etag(from.known_etag()); } } @@ -11406,7 +11388,7 @@ void statvfsRequest::CopyFrom(const statvfsRequest& from) { bool statvfsRequest::IsInitialized() const { if ((_has_bits_[0] & 0x00000003) != 0x00000003) return false; - + return true; } @@ -11431,9 +11413,6 @@ void statvfsRequest::Swap(statvfsRequest* other) { // =================================================================== -const ::std::string symlinkRequest::_default_volume_name_; -const ::std::string symlinkRequest::_default_target_path_; -const ::std::string symlinkRequest::_default_link_path_; #ifndef _MSC_VER const int symlinkRequest::kVolumeNameFieldNumber; const int symlinkRequest::kTargetPathFieldNumber; @@ -11456,9 +11435,9 @@ symlinkRequest::symlinkRequest(const symlinkRequest& from) void symlinkRequest::SharedCtor() { _cached_size_ = 0; - volume_name_ = const_cast< ::std::string*>(&_default_volume_name_); - target_path_ = const_cast< ::std::string*>(&_default_target_path_); - link_path_ = const_cast< ::std::string*>(&_default_link_path_); + volume_name_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + target_path_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + link_path_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); ::memset(_has_bits_, 0, sizeof(_has_bits_)); } @@ -11467,13 +11446,13 @@ symlinkRequest::~symlinkRequest() { } void symlinkRequest::SharedDtor() { - if (volume_name_ != &_default_volume_name_) { + if (volume_name_ != &::google::protobuf::internal::kEmptyString) { delete volume_name_; } - if (target_path_ != &_default_target_path_) { + if (target_path_ != &::google::protobuf::internal::kEmptyString) { delete target_path_; } - if (link_path_ != &_default_link_path_) { + if (link_path_ != &::google::protobuf::internal::kEmptyString) { delete link_path_; } if (this != default_instance_) { @@ -11491,7 +11470,8 @@ const ::google::protobuf::Descriptor* symlinkRequest::descriptor() { } const symlinkRequest& symlinkRequest::default_instance() { - if (default_instance_ == NULL) protobuf_AddDesc_xtreemfs_2fMRC_2eproto(); return *default_instance_; + if (default_instance_ == NULL) protobuf_AddDesc_xtreemfs_2fMRC_2eproto(); + return *default_instance_; } symlinkRequest* symlinkRequest::default_instance_ = NULL; @@ -11502,18 +11482,18 @@ symlinkRequest* symlinkRequest::New() const { void symlinkRequest::Clear() { if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) { - if (_has_bit(0)) { - if (volume_name_ != &_default_volume_name_) { + if (has_volume_name()) { + if (volume_name_ != &::google::protobuf::internal::kEmptyString) { volume_name_->clear(); } } - if (_has_bit(1)) { - if (target_path_ != &_default_target_path_) { + if (has_target_path()) { + if (target_path_ != &::google::protobuf::internal::kEmptyString) { target_path_->clear(); } } - if (_has_bit(2)) { - if (link_path_ != &_default_link_path_) { + if (has_link_path()) { + if (link_path_ != &::google::protobuf::internal::kEmptyString) { link_path_->clear(); } } @@ -11543,7 +11523,7 @@ bool symlinkRequest::MergePartialFromCodedStream( if (input->ExpectTag(18)) goto parse_target_path; break; } - + // required string target_path = 2; case 2: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -11560,7 +11540,7 @@ bool symlinkRequest::MergePartialFromCodedStream( if (input->ExpectTag(26)) goto parse_link_path; break; } - + // required string link_path = 3; case 3: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -11577,7 +11557,7 @@ bool symlinkRequest::MergePartialFromCodedStream( if (input->ExpectAtEnd()) return true; break; } - + default: { handle_uninterpreted: if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -11597,32 +11577,32 @@ bool symlinkRequest::MergePartialFromCodedStream( void symlinkRequest::SerializeWithCachedSizes( ::google::protobuf::io::CodedOutputStream* output) const { // required string volume_name = 1; - if (_has_bit(0)) { + if (has_volume_name()) { ::google::protobuf::internal::WireFormat::VerifyUTF8String( this->volume_name().data(), this->volume_name().length(), ::google::protobuf::internal::WireFormat::SERIALIZE); ::google::protobuf::internal::WireFormatLite::WriteString( 1, this->volume_name(), output); } - + // required string target_path = 2; - if (_has_bit(1)) { + if (has_target_path()) { ::google::protobuf::internal::WireFormat::VerifyUTF8String( this->target_path().data(), this->target_path().length(), ::google::protobuf::internal::WireFormat::SERIALIZE); ::google::protobuf::internal::WireFormatLite::WriteString( 2, this->target_path(), output); } - + // required string link_path = 3; - if (_has_bit(2)) { + if (has_link_path()) { ::google::protobuf::internal::WireFormat::VerifyUTF8String( this->link_path().data(), this->link_path().length(), ::google::protobuf::internal::WireFormat::SERIALIZE); ::google::protobuf::internal::WireFormatLite::WriteString( 3, this->link_path(), output); } - + if (!unknown_fields().empty()) { ::google::protobuf::internal::WireFormat::SerializeUnknownFields( unknown_fields(), output); @@ -11632,7 +11612,7 @@ void symlinkRequest::SerializeWithCachedSizes( ::google::protobuf::uint8* symlinkRequest::SerializeWithCachedSizesToArray( ::google::protobuf::uint8* target) const { // required string volume_name = 1; - if (_has_bit(0)) { + if (has_volume_name()) { ::google::protobuf::internal::WireFormat::VerifyUTF8String( this->volume_name().data(), this->volume_name().length(), ::google::protobuf::internal::WireFormat::SERIALIZE); @@ -11640,9 +11620,9 @@ void symlinkRequest::SerializeWithCachedSizes( ::google::protobuf::internal::WireFormatLite::WriteStringToArray( 1, this->volume_name(), target); } - + // required string target_path = 2; - if (_has_bit(1)) { + if (has_target_path()) { ::google::protobuf::internal::WireFormat::VerifyUTF8String( this->target_path().data(), this->target_path().length(), ::google::protobuf::internal::WireFormat::SERIALIZE); @@ -11650,9 +11630,9 @@ void symlinkRequest::SerializeWithCachedSizes( ::google::protobuf::internal::WireFormatLite::WriteStringToArray( 2, this->target_path(), target); } - + // required string link_path = 3; - if (_has_bit(2)) { + if (has_link_path()) { ::google::protobuf::internal::WireFormat::VerifyUTF8String( this->link_path().data(), this->link_path().length(), ::google::protobuf::internal::WireFormat::SERIALIZE); @@ -11660,7 +11640,7 @@ void symlinkRequest::SerializeWithCachedSizes( ::google::protobuf::internal::WireFormatLite::WriteStringToArray( 3, this->link_path(), target); } - + if (!unknown_fields().empty()) { target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray( unknown_fields(), target); @@ -11670,7 +11650,7 @@ void symlinkRequest::SerializeWithCachedSizes( int symlinkRequest::ByteSize() const { int total_size = 0; - + if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) { // required string volume_name = 1; if (has_volume_name()) { @@ -11678,21 +11658,21 @@ int symlinkRequest::ByteSize() const { ::google::protobuf::internal::WireFormatLite::StringSize( this->volume_name()); } - + // required string target_path = 2; if (has_target_path()) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::StringSize( this->target_path()); } - + // required string link_path = 3; if (has_link_path()) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::StringSize( this->link_path()); } - + } if (!unknown_fields().empty()) { total_size += @@ -11720,13 +11700,13 @@ void symlinkRequest::MergeFrom(const ::google::protobuf::Message& from) { void symlinkRequest::MergeFrom(const symlinkRequest& from) { GOOGLE_CHECK_NE(&from, this); if (from._has_bits_[0 / 32] & (0xffu << (0 % 32))) { - if (from._has_bit(0)) { + if (from.has_volume_name()) { set_volume_name(from.volume_name()); } - if (from._has_bit(1)) { + if (from.has_target_path()) { set_target_path(from.target_path()); } - if (from._has_bit(2)) { + if (from.has_link_path()) { set_link_path(from.link_path()); } } @@ -11747,7 +11727,7 @@ void symlinkRequest::CopyFrom(const symlinkRequest& from) { bool symlinkRequest::IsInitialized() const { if ((_has_bits_[0] & 0x00000007) != 0x00000007) return false; - + return true; } @@ -11773,8 +11753,6 @@ void symlinkRequest::Swap(symlinkRequest* other) { // =================================================================== -const ::std::string unlinkRequest::_default_volume_name_; -const ::std::string unlinkRequest::_default_path_; #ifndef _MSC_VER const int unlinkRequest::kVolumeNameFieldNumber; const int unlinkRequest::kPathFieldNumber; @@ -11796,8 +11774,8 @@ unlinkRequest::unlinkRequest(const unlinkRequest& from) void unlinkRequest::SharedCtor() { _cached_size_ = 0; - volume_name_ = const_cast< ::std::string*>(&_default_volume_name_); - path_ = const_cast< ::std::string*>(&_default_path_); + volume_name_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + path_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); ::memset(_has_bits_, 0, sizeof(_has_bits_)); } @@ -11806,10 +11784,10 @@ unlinkRequest::~unlinkRequest() { } void unlinkRequest::SharedDtor() { - if (volume_name_ != &_default_volume_name_) { + if (volume_name_ != &::google::protobuf::internal::kEmptyString) { delete volume_name_; } - if (path_ != &_default_path_) { + if (path_ != &::google::protobuf::internal::kEmptyString) { delete path_; } if (this != default_instance_) { @@ -11827,7 +11805,8 @@ const ::google::protobuf::Descriptor* unlinkRequest::descriptor() { } const unlinkRequest& unlinkRequest::default_instance() { - if (default_instance_ == NULL) protobuf_AddDesc_xtreemfs_2fMRC_2eproto(); return *default_instance_; + if (default_instance_ == NULL) protobuf_AddDesc_xtreemfs_2fMRC_2eproto(); + return *default_instance_; } unlinkRequest* unlinkRequest::default_instance_ = NULL; @@ -11838,13 +11817,13 @@ unlinkRequest* unlinkRequest::New() const { void unlinkRequest::Clear() { if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) { - if (_has_bit(0)) { - if (volume_name_ != &_default_volume_name_) { + if (has_volume_name()) { + if (volume_name_ != &::google::protobuf::internal::kEmptyString) { volume_name_->clear(); } } - if (_has_bit(1)) { - if (path_ != &_default_path_) { + if (has_path()) { + if (path_ != &::google::protobuf::internal::kEmptyString) { path_->clear(); } } @@ -11874,7 +11853,7 @@ bool unlinkRequest::MergePartialFromCodedStream( if (input->ExpectTag(18)) goto parse_path; break; } - + // required string path = 2; case 2: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -11891,7 +11870,7 @@ bool unlinkRequest::MergePartialFromCodedStream( if (input->ExpectAtEnd()) return true; break; } - + default: { handle_uninterpreted: if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -11911,23 +11890,23 @@ bool unlinkRequest::MergePartialFromCodedStream( void unlinkRequest::SerializeWithCachedSizes( ::google::protobuf::io::CodedOutputStream* output) const { // required string volume_name = 1; - if (_has_bit(0)) { + if (has_volume_name()) { ::google::protobuf::internal::WireFormat::VerifyUTF8String( this->volume_name().data(), this->volume_name().length(), ::google::protobuf::internal::WireFormat::SERIALIZE); ::google::protobuf::internal::WireFormatLite::WriteString( 1, this->volume_name(), output); } - + // required string path = 2; - if (_has_bit(1)) { + if (has_path()) { ::google::protobuf::internal::WireFormat::VerifyUTF8String( this->path().data(), this->path().length(), ::google::protobuf::internal::WireFormat::SERIALIZE); ::google::protobuf::internal::WireFormatLite::WriteString( 2, this->path(), output); } - + if (!unknown_fields().empty()) { ::google::protobuf::internal::WireFormat::SerializeUnknownFields( unknown_fields(), output); @@ -11937,7 +11916,7 @@ void unlinkRequest::SerializeWithCachedSizes( ::google::protobuf::uint8* unlinkRequest::SerializeWithCachedSizesToArray( ::google::protobuf::uint8* target) const { // required string volume_name = 1; - if (_has_bit(0)) { + if (has_volume_name()) { ::google::protobuf::internal::WireFormat::VerifyUTF8String( this->volume_name().data(), this->volume_name().length(), ::google::protobuf::internal::WireFormat::SERIALIZE); @@ -11945,9 +11924,9 @@ void unlinkRequest::SerializeWithCachedSizes( ::google::protobuf::internal::WireFormatLite::WriteStringToArray( 1, this->volume_name(), target); } - + // required string path = 2; - if (_has_bit(1)) { + if (has_path()) { ::google::protobuf::internal::WireFormat::VerifyUTF8String( this->path().data(), this->path().length(), ::google::protobuf::internal::WireFormat::SERIALIZE); @@ -11955,7 +11934,7 @@ void unlinkRequest::SerializeWithCachedSizes( ::google::protobuf::internal::WireFormatLite::WriteStringToArray( 2, this->path(), target); } - + if (!unknown_fields().empty()) { target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray( unknown_fields(), target); @@ -11965,7 +11944,7 @@ void unlinkRequest::SerializeWithCachedSizes( int unlinkRequest::ByteSize() const { int total_size = 0; - + if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) { // required string volume_name = 1; if (has_volume_name()) { @@ -11973,14 +11952,14 @@ int unlinkRequest::ByteSize() const { ::google::protobuf::internal::WireFormatLite::StringSize( this->volume_name()); } - + // required string path = 2; if (has_path()) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::StringSize( this->path()); } - + } if (!unknown_fields().empty()) { total_size += @@ -12008,10 +11987,10 @@ void unlinkRequest::MergeFrom(const ::google::protobuf::Message& from) { void unlinkRequest::MergeFrom(const unlinkRequest& from) { GOOGLE_CHECK_NE(&from, this); if (from._has_bits_[0 / 32] & (0xffu << (0 % 32))) { - if (from._has_bit(0)) { + if (from.has_volume_name()) { set_volume_name(from.volume_name()); } - if (from._has_bit(1)) { + if (from.has_path()) { set_path(from.path()); } } @@ -12032,7 +12011,7 @@ void unlinkRequest::CopyFrom(const unlinkRequest& from) { bool unlinkRequest::IsInitialized() const { if ((_has_bits_[0] & 0x00000003) != 0x00000003) return false; - + return true; } @@ -12105,7 +12084,8 @@ const ::google::protobuf::Descriptor* unlinkResponse::descriptor() { } const unlinkResponse& unlinkResponse::default_instance() { - if (default_instance_ == NULL) protobuf_AddDesc_xtreemfs_2fMRC_2eproto(); return *default_instance_; + if (default_instance_ == NULL) protobuf_AddDesc_xtreemfs_2fMRC_2eproto(); + return *default_instance_; } unlinkResponse* unlinkResponse::default_instance_ = NULL; @@ -12117,7 +12097,7 @@ unlinkResponse* unlinkResponse::New() const { void unlinkResponse::Clear() { if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) { timestamp_s_ = 0u; - if (_has_bit(1)) { + if (has_creds()) { if (creds_ != NULL) creds_->::xtreemfs::pbrpc::FileCredentials::Clear(); } } @@ -12138,14 +12118,14 @@ bool unlinkResponse::MergePartialFromCodedStream( DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive< ::google::protobuf::uint32, ::google::protobuf::internal::WireFormatLite::TYPE_FIXED32>( input, ×tamp_s_))); - _set_bit(0); + set_has_timestamp_s(); } else { goto handle_uninterpreted; } if (input->ExpectTag(18)) goto parse_creds; break; } - + // optional .xtreemfs.pbrpc.FileCredentials creds = 2; case 2: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -12159,7 +12139,7 @@ bool unlinkResponse::MergePartialFromCodedStream( if (input->ExpectAtEnd()) return true; break; } - + default: { handle_uninterpreted: if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -12179,16 +12159,16 @@ bool unlinkResponse::MergePartialFromCodedStream( void unlinkResponse::SerializeWithCachedSizes( ::google::protobuf::io::CodedOutputStream* output) const { // required fixed32 timestamp_s = 1; - if (_has_bit(0)) { + if (has_timestamp_s()) { ::google::protobuf::internal::WireFormatLite::WriteFixed32(1, this->timestamp_s(), output); } - + // optional .xtreemfs.pbrpc.FileCredentials creds = 2; - if (_has_bit(1)) { + if (has_creds()) { ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray( 2, this->creds(), output); } - + if (!unknown_fields().empty()) { ::google::protobuf::internal::WireFormat::SerializeUnknownFields( unknown_fields(), output); @@ -12198,17 +12178,17 @@ void unlinkResponse::SerializeWithCachedSizes( ::google::protobuf::uint8* unlinkResponse::SerializeWithCachedSizesToArray( ::google::protobuf::uint8* target) const { // required fixed32 timestamp_s = 1; - if (_has_bit(0)) { + if (has_timestamp_s()) { target = ::google::protobuf::internal::WireFormatLite::WriteFixed32ToArray(1, this->timestamp_s(), target); } - + // optional .xtreemfs.pbrpc.FileCredentials creds = 2; - if (_has_bit(1)) { + if (has_creds()) { target = ::google::protobuf::internal::WireFormatLite:: WriteMessageNoVirtualToArray( 2, this->creds(), target); } - + if (!unknown_fields().empty()) { target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray( unknown_fields(), target); @@ -12218,20 +12198,20 @@ void unlinkResponse::SerializeWithCachedSizes( int unlinkResponse::ByteSize() const { int total_size = 0; - + if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) { // required fixed32 timestamp_s = 1; if (has_timestamp_s()) { total_size += 1 + 4; } - + // optional .xtreemfs.pbrpc.FileCredentials creds = 2; if (has_creds()) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::MessageSizeNoVirtual( this->creds()); } - + } if (!unknown_fields().empty()) { total_size += @@ -12259,10 +12239,10 @@ void unlinkResponse::MergeFrom(const ::google::protobuf::Message& from) { void unlinkResponse::MergeFrom(const unlinkResponse& from) { GOOGLE_CHECK_NE(&from, this); if (from._has_bits_[0 / 32] & (0xffu << (0 % 32))) { - if (from._has_bit(0)) { + if (from.has_timestamp_s()) { set_timestamp_s(from.timestamp_s()); } - if (from._has_bit(1)) { + if (from.has_creds()) { mutable_creds()->::xtreemfs::pbrpc::FileCredentials::MergeFrom(from.creds()); } } @@ -12283,7 +12263,7 @@ void unlinkResponse::CopyFrom(const unlinkResponse& from) { bool unlinkResponse::IsInitialized() const { if ((_has_bits_[0] & 0x00000001) != 0x00000001) return false; - + if (has_creds()) { if (!this->creds().IsInitialized()) return false; } @@ -12311,8 +12291,6 @@ void unlinkResponse::Swap(unlinkResponse* other) { // =================================================================== -const ::std::string accessRequest::_default_volume_name_; -const ::std::string accessRequest::_default_path_; #ifndef _MSC_VER const int accessRequest::kVolumeNameFieldNumber; const int accessRequest::kPathFieldNumber; @@ -12335,8 +12313,8 @@ accessRequest::accessRequest(const accessRequest& from) void accessRequest::SharedCtor() { _cached_size_ = 0; - volume_name_ = const_cast< ::std::string*>(&_default_volume_name_); - path_ = const_cast< ::std::string*>(&_default_path_); + volume_name_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + path_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); flags_ = 0u; ::memset(_has_bits_, 0, sizeof(_has_bits_)); } @@ -12346,10 +12324,10 @@ accessRequest::~accessRequest() { } void accessRequest::SharedDtor() { - if (volume_name_ != &_default_volume_name_) { + if (volume_name_ != &::google::protobuf::internal::kEmptyString) { delete volume_name_; } - if (path_ != &_default_path_) { + if (path_ != &::google::protobuf::internal::kEmptyString) { delete path_; } if (this != default_instance_) { @@ -12367,7 +12345,8 @@ const ::google::protobuf::Descriptor* accessRequest::descriptor() { } const accessRequest& accessRequest::default_instance() { - if (default_instance_ == NULL) protobuf_AddDesc_xtreemfs_2fMRC_2eproto(); return *default_instance_; + if (default_instance_ == NULL) protobuf_AddDesc_xtreemfs_2fMRC_2eproto(); + return *default_instance_; } accessRequest* accessRequest::default_instance_ = NULL; @@ -12378,13 +12357,13 @@ accessRequest* accessRequest::New() const { void accessRequest::Clear() { if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) { - if (_has_bit(0)) { - if (volume_name_ != &_default_volume_name_) { + if (has_volume_name()) { + if (volume_name_ != &::google::protobuf::internal::kEmptyString) { volume_name_->clear(); } } - if (_has_bit(1)) { - if (path_ != &_default_path_) { + if (has_path()) { + if (path_ != &::google::protobuf::internal::kEmptyString) { path_->clear(); } } @@ -12415,7 +12394,7 @@ bool accessRequest::MergePartialFromCodedStream( if (input->ExpectTag(18)) goto parse_path; break; } - + // required string path = 2; case 2: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -12432,7 +12411,7 @@ bool accessRequest::MergePartialFromCodedStream( if (input->ExpectTag(29)) goto parse_flags; break; } - + // required fixed32 flags = 3; case 3: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -12441,14 +12420,14 @@ bool accessRequest::MergePartialFromCodedStream( DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive< ::google::protobuf::uint32, ::google::protobuf::internal::WireFormatLite::TYPE_FIXED32>( input, &flags_))); - _set_bit(2); + set_has_flags(); } else { goto handle_uninterpreted; } if (input->ExpectAtEnd()) return true; break; } - + default: { handle_uninterpreted: if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -12468,28 +12447,28 @@ bool accessRequest::MergePartialFromCodedStream( void accessRequest::SerializeWithCachedSizes( ::google::protobuf::io::CodedOutputStream* output) const { // required string volume_name = 1; - if (_has_bit(0)) { + if (has_volume_name()) { ::google::protobuf::internal::WireFormat::VerifyUTF8String( this->volume_name().data(), this->volume_name().length(), ::google::protobuf::internal::WireFormat::SERIALIZE); ::google::protobuf::internal::WireFormatLite::WriteString( 1, this->volume_name(), output); } - + // required string path = 2; - if (_has_bit(1)) { + if (has_path()) { ::google::protobuf::internal::WireFormat::VerifyUTF8String( this->path().data(), this->path().length(), ::google::protobuf::internal::WireFormat::SERIALIZE); ::google::protobuf::internal::WireFormatLite::WriteString( 2, this->path(), output); } - + // required fixed32 flags = 3; - if (_has_bit(2)) { + if (has_flags()) { ::google::protobuf::internal::WireFormatLite::WriteFixed32(3, this->flags(), output); } - + if (!unknown_fields().empty()) { ::google::protobuf::internal::WireFormat::SerializeUnknownFields( unknown_fields(), output); @@ -12499,7 +12478,7 @@ void accessRequest::SerializeWithCachedSizes( ::google::protobuf::uint8* accessRequest::SerializeWithCachedSizesToArray( ::google::protobuf::uint8* target) const { // required string volume_name = 1; - if (_has_bit(0)) { + if (has_volume_name()) { ::google::protobuf::internal::WireFormat::VerifyUTF8String( this->volume_name().data(), this->volume_name().length(), ::google::protobuf::internal::WireFormat::SERIALIZE); @@ -12507,9 +12486,9 @@ void accessRequest::SerializeWithCachedSizes( ::google::protobuf::internal::WireFormatLite::WriteStringToArray( 1, this->volume_name(), target); } - + // required string path = 2; - if (_has_bit(1)) { + if (has_path()) { ::google::protobuf::internal::WireFormat::VerifyUTF8String( this->path().data(), this->path().length(), ::google::protobuf::internal::WireFormat::SERIALIZE); @@ -12517,12 +12496,12 @@ void accessRequest::SerializeWithCachedSizes( ::google::protobuf::internal::WireFormatLite::WriteStringToArray( 2, this->path(), target); } - + // required fixed32 flags = 3; - if (_has_bit(2)) { + if (has_flags()) { target = ::google::protobuf::internal::WireFormatLite::WriteFixed32ToArray(3, this->flags(), target); } - + if (!unknown_fields().empty()) { target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray( unknown_fields(), target); @@ -12532,7 +12511,7 @@ void accessRequest::SerializeWithCachedSizes( int accessRequest::ByteSize() const { int total_size = 0; - + if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) { // required string volume_name = 1; if (has_volume_name()) { @@ -12540,19 +12519,19 @@ int accessRequest::ByteSize() const { ::google::protobuf::internal::WireFormatLite::StringSize( this->volume_name()); } - + // required string path = 2; if (has_path()) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::StringSize( this->path()); } - + // required fixed32 flags = 3; if (has_flags()) { total_size += 1 + 4; } - + } if (!unknown_fields().empty()) { total_size += @@ -12580,13 +12559,13 @@ void accessRequest::MergeFrom(const ::google::protobuf::Message& from) { void accessRequest::MergeFrom(const accessRequest& from) { GOOGLE_CHECK_NE(&from, this); if (from._has_bits_[0 / 32] & (0xffu << (0 % 32))) { - if (from._has_bit(0)) { + if (from.has_volume_name()) { set_volume_name(from.volume_name()); } - if (from._has_bit(1)) { + if (from.has_path()) { set_path(from.path()); } - if (from._has_bit(2)) { + if (from.has_flags()) { set_flags(from.flags()); } } @@ -12607,7 +12586,7 @@ void accessRequest::CopyFrom(const accessRequest& from) { bool accessRequest::IsInitialized() const { if ((_has_bits_[0] & 0x00000007) != 0x00000007) return false; - + return true; } @@ -12633,8 +12612,6 @@ void accessRequest::Swap(accessRequest* other) { // =================================================================== -const ::std::string xtreemfs_check_file_existsRequest::_default_volume_id_; -const ::std::string xtreemfs_check_file_existsRequest::_default_osd_uuid_; #ifndef _MSC_VER const int xtreemfs_check_file_existsRequest::kVolumeIdFieldNumber; const int xtreemfs_check_file_existsRequest::kFileIdsFieldNumber; @@ -12657,8 +12634,8 @@ xtreemfs_check_file_existsRequest::xtreemfs_check_file_existsRequest(const xtree void xtreemfs_check_file_existsRequest::SharedCtor() { _cached_size_ = 0; - volume_id_ = const_cast< ::std::string*>(&_default_volume_id_); - osd_uuid_ = const_cast< ::std::string*>(&_default_osd_uuid_); + volume_id_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + osd_uuid_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); ::memset(_has_bits_, 0, sizeof(_has_bits_)); } @@ -12667,10 +12644,10 @@ xtreemfs_check_file_existsRequest::~xtreemfs_check_file_existsRequest() { } void xtreemfs_check_file_existsRequest::SharedDtor() { - if (volume_id_ != &_default_volume_id_) { + if (volume_id_ != &::google::protobuf::internal::kEmptyString) { delete volume_id_; } - if (osd_uuid_ != &_default_osd_uuid_) { + if (osd_uuid_ != &::google::protobuf::internal::kEmptyString) { delete osd_uuid_; } if (this != default_instance_) { @@ -12688,7 +12665,8 @@ const ::google::protobuf::Descriptor* xtreemfs_check_file_existsRequest::descrip } const xtreemfs_check_file_existsRequest& xtreemfs_check_file_existsRequest::default_instance() { - if (default_instance_ == NULL) protobuf_AddDesc_xtreemfs_2fMRC_2eproto(); return *default_instance_; + if (default_instance_ == NULL) protobuf_AddDesc_xtreemfs_2fMRC_2eproto(); + return *default_instance_; } xtreemfs_check_file_existsRequest* xtreemfs_check_file_existsRequest::default_instance_ = NULL; @@ -12699,13 +12677,13 @@ xtreemfs_check_file_existsRequest* xtreemfs_check_file_existsRequest::New() cons void xtreemfs_check_file_existsRequest::Clear() { if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) { - if (_has_bit(0)) { - if (volume_id_ != &_default_volume_id_) { + if (has_volume_id()) { + if (volume_id_ != &::google::protobuf::internal::kEmptyString) { volume_id_->clear(); } } - if (_has_bit(2)) { - if (osd_uuid_ != &_default_osd_uuid_) { + if (has_osd_uuid()) { + if (osd_uuid_ != &::google::protobuf::internal::kEmptyString) { osd_uuid_->clear(); } } @@ -12736,7 +12714,7 @@ bool xtreemfs_check_file_existsRequest::MergePartialFromCodedStream( if (input->ExpectTag(18)) goto parse_file_ids; break; } - + // repeated string file_ids = 2; case 2: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -12745,7 +12723,8 @@ bool xtreemfs_check_file_existsRequest::MergePartialFromCodedStream( DO_(::google::protobuf::internal::WireFormatLite::ReadString( input, this->add_file_ids())); ::google::protobuf::internal::WireFormat::VerifyUTF8String( - this->file_ids(0).data(), this->file_ids(0).length(), + this->file_ids(this->file_ids_size() - 1).data(), + this->file_ids(this->file_ids_size() - 1).length(), ::google::protobuf::internal::WireFormat::PARSE); } else { goto handle_uninterpreted; @@ -12754,7 +12733,7 @@ bool xtreemfs_check_file_existsRequest::MergePartialFromCodedStream( if (input->ExpectTag(26)) goto parse_osd_uuid; break; } - + // required string osd_uuid = 3; case 3: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -12771,7 +12750,7 @@ bool xtreemfs_check_file_existsRequest::MergePartialFromCodedStream( if (input->ExpectAtEnd()) return true; break; } - + default: { handle_uninterpreted: if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -12791,14 +12770,14 @@ bool xtreemfs_check_file_existsRequest::MergePartialFromCodedStream( void xtreemfs_check_file_existsRequest::SerializeWithCachedSizes( ::google::protobuf::io::CodedOutputStream* output) const { // required string volume_id = 1; - if (_has_bit(0)) { + if (has_volume_id()) { ::google::protobuf::internal::WireFormat::VerifyUTF8String( this->volume_id().data(), this->volume_id().length(), ::google::protobuf::internal::WireFormat::SERIALIZE); ::google::protobuf::internal::WireFormatLite::WriteString( 1, this->volume_id(), output); } - + // repeated string file_ids = 2; for (int i = 0; i < this->file_ids_size(); i++) { ::google::protobuf::internal::WireFormat::VerifyUTF8String( @@ -12807,16 +12786,16 @@ void xtreemfs_check_file_existsRequest::SerializeWithCachedSizes( ::google::protobuf::internal::WireFormatLite::WriteString( 2, this->file_ids(i), output); } - + // required string osd_uuid = 3; - if (_has_bit(2)) { + if (has_osd_uuid()) { ::google::protobuf::internal::WireFormat::VerifyUTF8String( this->osd_uuid().data(), this->osd_uuid().length(), ::google::protobuf::internal::WireFormat::SERIALIZE); ::google::protobuf::internal::WireFormatLite::WriteString( 3, this->osd_uuid(), output); } - + if (!unknown_fields().empty()) { ::google::protobuf::internal::WireFormat::SerializeUnknownFields( unknown_fields(), output); @@ -12826,7 +12805,7 @@ void xtreemfs_check_file_existsRequest::SerializeWithCachedSizes( ::google::protobuf::uint8* xtreemfs_check_file_existsRequest::SerializeWithCachedSizesToArray( ::google::protobuf::uint8* target) const { // required string volume_id = 1; - if (_has_bit(0)) { + if (has_volume_id()) { ::google::protobuf::internal::WireFormat::VerifyUTF8String( this->volume_id().data(), this->volume_id().length(), ::google::protobuf::internal::WireFormat::SERIALIZE); @@ -12834,7 +12813,7 @@ void xtreemfs_check_file_existsRequest::SerializeWithCachedSizes( ::google::protobuf::internal::WireFormatLite::WriteStringToArray( 1, this->volume_id(), target); } - + // repeated string file_ids = 2; for (int i = 0; i < this->file_ids_size(); i++) { ::google::protobuf::internal::WireFormat::VerifyUTF8String( @@ -12843,9 +12822,9 @@ void xtreemfs_check_file_existsRequest::SerializeWithCachedSizes( target = ::google::protobuf::internal::WireFormatLite:: WriteStringToArray(2, this->file_ids(i), target); } - + // required string osd_uuid = 3; - if (_has_bit(2)) { + if (has_osd_uuid()) { ::google::protobuf::internal::WireFormat::VerifyUTF8String( this->osd_uuid().data(), this->osd_uuid().length(), ::google::protobuf::internal::WireFormat::SERIALIZE); @@ -12853,7 +12832,7 @@ void xtreemfs_check_file_existsRequest::SerializeWithCachedSizes( ::google::protobuf::internal::WireFormatLite::WriteStringToArray( 3, this->osd_uuid(), target); } - + if (!unknown_fields().empty()) { target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray( unknown_fields(), target); @@ -12863,7 +12842,7 @@ void xtreemfs_check_file_existsRequest::SerializeWithCachedSizes( int xtreemfs_check_file_existsRequest::ByteSize() const { int total_size = 0; - + if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) { // required string volume_id = 1; if (has_volume_id()) { @@ -12871,14 +12850,14 @@ int xtreemfs_check_file_existsRequest::ByteSize() const { ::google::protobuf::internal::WireFormatLite::StringSize( this->volume_id()); } - + // required string osd_uuid = 3; if (has_osd_uuid()) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::StringSize( this->osd_uuid()); } - + } // repeated string file_ids = 2; total_size += 1 * this->file_ids_size(); @@ -12886,7 +12865,7 @@ int xtreemfs_check_file_existsRequest::ByteSize() const { total_size += ::google::protobuf::internal::WireFormatLite::StringSize( this->file_ids(i)); } - + if (!unknown_fields().empty()) { total_size += ::google::protobuf::internal::WireFormat::ComputeUnknownFieldsSize( @@ -12914,10 +12893,10 @@ void xtreemfs_check_file_existsRequest::MergeFrom(const xtreemfs_check_file_exis GOOGLE_CHECK_NE(&from, this); file_ids_.MergeFrom(from.file_ids_); if (from._has_bits_[0 / 32] & (0xffu << (0 % 32))) { - if (from._has_bit(0)) { + if (from.has_volume_id()) { set_volume_id(from.volume_id()); } - if (from._has_bit(2)) { + if (from.has_osd_uuid()) { set_osd_uuid(from.osd_uuid()); } } @@ -12938,7 +12917,7 @@ void xtreemfs_check_file_existsRequest::CopyFrom(const xtreemfs_check_file_exist bool xtreemfs_check_file_existsRequest::IsInitialized() const { if ((_has_bits_[0] & 0x00000005) != 0x00000005) return false; - + return true; } @@ -12964,7 +12943,6 @@ void xtreemfs_check_file_existsRequest::Swap(xtreemfs_check_file_existsRequest* // =================================================================== -const ::std::string xtreemfs_dump_restore_databaseRequest::_default_dump_file_; #ifndef _MSC_VER const int xtreemfs_dump_restore_databaseRequest::kDumpFileFieldNumber; #endif // !_MSC_VER @@ -12985,7 +12963,7 @@ xtreemfs_dump_restore_databaseRequest::xtreemfs_dump_restore_databaseRequest(con void xtreemfs_dump_restore_databaseRequest::SharedCtor() { _cached_size_ = 0; - dump_file_ = const_cast< ::std::string*>(&_default_dump_file_); + dump_file_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); ::memset(_has_bits_, 0, sizeof(_has_bits_)); } @@ -12994,7 +12972,7 @@ xtreemfs_dump_restore_databaseRequest::~xtreemfs_dump_restore_databaseRequest() } void xtreemfs_dump_restore_databaseRequest::SharedDtor() { - if (dump_file_ != &_default_dump_file_) { + if (dump_file_ != &::google::protobuf::internal::kEmptyString) { delete dump_file_; } if (this != default_instance_) { @@ -13012,7 +12990,8 @@ const ::google::protobuf::Descriptor* xtreemfs_dump_restore_databaseRequest::des } const xtreemfs_dump_restore_databaseRequest& xtreemfs_dump_restore_databaseRequest::default_instance() { - if (default_instance_ == NULL) protobuf_AddDesc_xtreemfs_2fMRC_2eproto(); return *default_instance_; + if (default_instance_ == NULL) protobuf_AddDesc_xtreemfs_2fMRC_2eproto(); + return *default_instance_; } xtreemfs_dump_restore_databaseRequest* xtreemfs_dump_restore_databaseRequest::default_instance_ = NULL; @@ -13023,8 +13002,8 @@ xtreemfs_dump_restore_databaseRequest* xtreemfs_dump_restore_databaseRequest::Ne void xtreemfs_dump_restore_databaseRequest::Clear() { if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) { - if (_has_bit(0)) { - if (dump_file_ != &_default_dump_file_) { + if (has_dump_file()) { + if (dump_file_ != &::google::protobuf::internal::kEmptyString) { dump_file_->clear(); } } @@ -13054,7 +13033,7 @@ bool xtreemfs_dump_restore_databaseRequest::MergePartialFromCodedStream( if (input->ExpectAtEnd()) return true; break; } - + default: { handle_uninterpreted: if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -13074,14 +13053,14 @@ bool xtreemfs_dump_restore_databaseRequest::MergePartialFromCodedStream( void xtreemfs_dump_restore_databaseRequest::SerializeWithCachedSizes( ::google::protobuf::io::CodedOutputStream* output) const { // required string dump_file = 1; - if (_has_bit(0)) { + if (has_dump_file()) { ::google::protobuf::internal::WireFormat::VerifyUTF8String( this->dump_file().data(), this->dump_file().length(), ::google::protobuf::internal::WireFormat::SERIALIZE); ::google::protobuf::internal::WireFormatLite::WriteString( 1, this->dump_file(), output); } - + if (!unknown_fields().empty()) { ::google::protobuf::internal::WireFormat::SerializeUnknownFields( unknown_fields(), output); @@ -13091,7 +13070,7 @@ void xtreemfs_dump_restore_databaseRequest::SerializeWithCachedSizes( ::google::protobuf::uint8* xtreemfs_dump_restore_databaseRequest::SerializeWithCachedSizesToArray( ::google::protobuf::uint8* target) const { // required string dump_file = 1; - if (_has_bit(0)) { + if (has_dump_file()) { ::google::protobuf::internal::WireFormat::VerifyUTF8String( this->dump_file().data(), this->dump_file().length(), ::google::protobuf::internal::WireFormat::SERIALIZE); @@ -13099,7 +13078,7 @@ void xtreemfs_dump_restore_databaseRequest::SerializeWithCachedSizes( ::google::protobuf::internal::WireFormatLite::WriteStringToArray( 1, this->dump_file(), target); } - + if (!unknown_fields().empty()) { target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray( unknown_fields(), target); @@ -13109,7 +13088,7 @@ void xtreemfs_dump_restore_databaseRequest::SerializeWithCachedSizes( int xtreemfs_dump_restore_databaseRequest::ByteSize() const { int total_size = 0; - + if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) { // required string dump_file = 1; if (has_dump_file()) { @@ -13117,7 +13096,7 @@ int xtreemfs_dump_restore_databaseRequest::ByteSize() const { ::google::protobuf::internal::WireFormatLite::StringSize( this->dump_file()); } - + } if (!unknown_fields().empty()) { total_size += @@ -13145,7 +13124,7 @@ void xtreemfs_dump_restore_databaseRequest::MergeFrom(const ::google::protobuf:: void xtreemfs_dump_restore_databaseRequest::MergeFrom(const xtreemfs_dump_restore_databaseRequest& from) { GOOGLE_CHECK_NE(&from, this); if (from._has_bits_[0 / 32] & (0xffu << (0 % 32))) { - if (from._has_bit(0)) { + if (from.has_dump_file()) { set_dump_file(from.dump_file()); } } @@ -13166,7 +13145,7 @@ void xtreemfs_dump_restore_databaseRequest::CopyFrom(const xtreemfs_dump_restore bool xtreemfs_dump_restore_databaseRequest::IsInitialized() const { if ((_has_bits_[0] & 0x00000001) != 0x00000001) return false; - + return true; } @@ -13190,9 +13169,6 @@ void xtreemfs_dump_restore_databaseRequest::Swap(xtreemfs_dump_restore_databaseR // =================================================================== -const ::std::string xtreemfs_get_suitable_osdsRequest::_default_file_id_; -const ::std::string xtreemfs_get_suitable_osdsRequest::_default_path_; -const ::std::string xtreemfs_get_suitable_osdsRequest::_default_volume_name_; #ifndef _MSC_VER const int xtreemfs_get_suitable_osdsRequest::kFileIdFieldNumber; const int xtreemfs_get_suitable_osdsRequest::kPathFieldNumber; @@ -13216,9 +13192,9 @@ xtreemfs_get_suitable_osdsRequest::xtreemfs_get_suitable_osdsRequest(const xtree void xtreemfs_get_suitable_osdsRequest::SharedCtor() { _cached_size_ = 0; - file_id_ = const_cast< ::std::string*>(&_default_file_id_); - path_ = const_cast< ::std::string*>(&_default_path_); - volume_name_ = const_cast< ::std::string*>(&_default_volume_name_); + file_id_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + path_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + volume_name_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); num_osds_ = 0u; ::memset(_has_bits_, 0, sizeof(_has_bits_)); } @@ -13228,13 +13204,13 @@ xtreemfs_get_suitable_osdsRequest::~xtreemfs_get_suitable_osdsRequest() { } void xtreemfs_get_suitable_osdsRequest::SharedDtor() { - if (file_id_ != &_default_file_id_) { + if (file_id_ != &::google::protobuf::internal::kEmptyString) { delete file_id_; } - if (path_ != &_default_path_) { + if (path_ != &::google::protobuf::internal::kEmptyString) { delete path_; } - if (volume_name_ != &_default_volume_name_) { + if (volume_name_ != &::google::protobuf::internal::kEmptyString) { delete volume_name_; } if (this != default_instance_) { @@ -13252,7 +13228,8 @@ const ::google::protobuf::Descriptor* xtreemfs_get_suitable_osdsRequest::descrip } const xtreemfs_get_suitable_osdsRequest& xtreemfs_get_suitable_osdsRequest::default_instance() { - if (default_instance_ == NULL) protobuf_AddDesc_xtreemfs_2fMRC_2eproto(); return *default_instance_; + if (default_instance_ == NULL) protobuf_AddDesc_xtreemfs_2fMRC_2eproto(); + return *default_instance_; } xtreemfs_get_suitable_osdsRequest* xtreemfs_get_suitable_osdsRequest::default_instance_ = NULL; @@ -13263,18 +13240,18 @@ xtreemfs_get_suitable_osdsRequest* xtreemfs_get_suitable_osdsRequest::New() cons void xtreemfs_get_suitable_osdsRequest::Clear() { if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) { - if (_has_bit(0)) { - if (file_id_ != &_default_file_id_) { + if (has_file_id()) { + if (file_id_ != &::google::protobuf::internal::kEmptyString) { file_id_->clear(); } } - if (_has_bit(1)) { - if (path_ != &_default_path_) { + if (has_path()) { + if (path_ != &::google::protobuf::internal::kEmptyString) { path_->clear(); } } - if (_has_bit(2)) { - if (volume_name_ != &_default_volume_name_) { + if (has_volume_name()) { + if (volume_name_ != &::google::protobuf::internal::kEmptyString) { volume_name_->clear(); } } @@ -13305,7 +13282,7 @@ bool xtreemfs_get_suitable_osdsRequest::MergePartialFromCodedStream( if (input->ExpectTag(21)) goto parse_num_osds; break; } - + // required fixed32 num_osds = 2; case 2: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -13314,14 +13291,14 @@ bool xtreemfs_get_suitable_osdsRequest::MergePartialFromCodedStream( DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive< ::google::protobuf::uint32, ::google::protobuf::internal::WireFormatLite::TYPE_FIXED32>( input, &num_osds_))); - _set_bit(3); + set_has_num_osds(); } else { goto handle_uninterpreted; } if (input->ExpectTag(26)) goto parse_path; break; } - + // optional string path = 3; case 3: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -13338,7 +13315,7 @@ bool xtreemfs_get_suitable_osdsRequest::MergePartialFromCodedStream( if (input->ExpectTag(34)) goto parse_volume_name; break; } - + // optional string volume_name = 4; case 4: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -13355,7 +13332,7 @@ bool xtreemfs_get_suitable_osdsRequest::MergePartialFromCodedStream( if (input->ExpectAtEnd()) return true; break; } - + default: { handle_uninterpreted: if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -13375,37 +13352,37 @@ bool xtreemfs_get_suitable_osdsRequest::MergePartialFromCodedStream( void xtreemfs_get_suitable_osdsRequest::SerializeWithCachedSizes( ::google::protobuf::io::CodedOutputStream* output) const { // optional string file_id = 1; - if (_has_bit(0)) { + if (has_file_id()) { ::google::protobuf::internal::WireFormat::VerifyUTF8String( this->file_id().data(), this->file_id().length(), ::google::protobuf::internal::WireFormat::SERIALIZE); ::google::protobuf::internal::WireFormatLite::WriteString( 1, this->file_id(), output); } - + // required fixed32 num_osds = 2; - if (_has_bit(3)) { + if (has_num_osds()) { ::google::protobuf::internal::WireFormatLite::WriteFixed32(2, this->num_osds(), output); } - + // optional string path = 3; - if (_has_bit(1)) { + if (has_path()) { ::google::protobuf::internal::WireFormat::VerifyUTF8String( this->path().data(), this->path().length(), ::google::protobuf::internal::WireFormat::SERIALIZE); ::google::protobuf::internal::WireFormatLite::WriteString( 3, this->path(), output); } - + // optional string volume_name = 4; - if (_has_bit(2)) { + if (has_volume_name()) { ::google::protobuf::internal::WireFormat::VerifyUTF8String( this->volume_name().data(), this->volume_name().length(), ::google::protobuf::internal::WireFormat::SERIALIZE); ::google::protobuf::internal::WireFormatLite::WriteString( 4, this->volume_name(), output); } - + if (!unknown_fields().empty()) { ::google::protobuf::internal::WireFormat::SerializeUnknownFields( unknown_fields(), output); @@ -13415,7 +13392,7 @@ void xtreemfs_get_suitable_osdsRequest::SerializeWithCachedSizes( ::google::protobuf::uint8* xtreemfs_get_suitable_osdsRequest::SerializeWithCachedSizesToArray( ::google::protobuf::uint8* target) const { // optional string file_id = 1; - if (_has_bit(0)) { + if (has_file_id()) { ::google::protobuf::internal::WireFormat::VerifyUTF8String( this->file_id().data(), this->file_id().length(), ::google::protobuf::internal::WireFormat::SERIALIZE); @@ -13423,14 +13400,14 @@ void xtreemfs_get_suitable_osdsRequest::SerializeWithCachedSizes( ::google::protobuf::internal::WireFormatLite::WriteStringToArray( 1, this->file_id(), target); } - + // required fixed32 num_osds = 2; - if (_has_bit(3)) { + if (has_num_osds()) { target = ::google::protobuf::internal::WireFormatLite::WriteFixed32ToArray(2, this->num_osds(), target); } - + // optional string path = 3; - if (_has_bit(1)) { + if (has_path()) { ::google::protobuf::internal::WireFormat::VerifyUTF8String( this->path().data(), this->path().length(), ::google::protobuf::internal::WireFormat::SERIALIZE); @@ -13438,9 +13415,9 @@ void xtreemfs_get_suitable_osdsRequest::SerializeWithCachedSizes( ::google::protobuf::internal::WireFormatLite::WriteStringToArray( 3, this->path(), target); } - + // optional string volume_name = 4; - if (_has_bit(2)) { + if (has_volume_name()) { ::google::protobuf::internal::WireFormat::VerifyUTF8String( this->volume_name().data(), this->volume_name().length(), ::google::protobuf::internal::WireFormat::SERIALIZE); @@ -13448,7 +13425,7 @@ void xtreemfs_get_suitable_osdsRequest::SerializeWithCachedSizes( ::google::protobuf::internal::WireFormatLite::WriteStringToArray( 4, this->volume_name(), target); } - + if (!unknown_fields().empty()) { target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray( unknown_fields(), target); @@ -13458,7 +13435,7 @@ void xtreemfs_get_suitable_osdsRequest::SerializeWithCachedSizes( int xtreemfs_get_suitable_osdsRequest::ByteSize() const { int total_size = 0; - + if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) { // optional string file_id = 1; if (has_file_id()) { @@ -13466,26 +13443,26 @@ int xtreemfs_get_suitable_osdsRequest::ByteSize() const { ::google::protobuf::internal::WireFormatLite::StringSize( this->file_id()); } - + // optional string path = 3; if (has_path()) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::StringSize( this->path()); } - + // optional string volume_name = 4; if (has_volume_name()) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::StringSize( this->volume_name()); } - + // required fixed32 num_osds = 2; if (has_num_osds()) { total_size += 1 + 4; } - + } if (!unknown_fields().empty()) { total_size += @@ -13513,16 +13490,16 @@ void xtreemfs_get_suitable_osdsRequest::MergeFrom(const ::google::protobuf::Mess void xtreemfs_get_suitable_osdsRequest::MergeFrom(const xtreemfs_get_suitable_osdsRequest& from) { GOOGLE_CHECK_NE(&from, this); if (from._has_bits_[0 / 32] & (0xffu << (0 % 32))) { - if (from._has_bit(0)) { + if (from.has_file_id()) { set_file_id(from.file_id()); } - if (from._has_bit(1)) { + if (from.has_path()) { set_path(from.path()); } - if (from._has_bit(2)) { + if (from.has_volume_name()) { set_volume_name(from.volume_name()); } - if (from._has_bit(3)) { + if (from.has_num_osds()) { set_num_osds(from.num_osds()); } } @@ -13543,7 +13520,7 @@ void xtreemfs_get_suitable_osdsRequest::CopyFrom(const xtreemfs_get_suitable_osd bool xtreemfs_get_suitable_osdsRequest::IsInitialized() const { if ((_has_bits_[0] & 0x00000008) != 0x00000008) return false; - + return true; } @@ -13613,7 +13590,8 @@ const ::google::protobuf::Descriptor* xtreemfs_get_suitable_osdsResponse::descri } const xtreemfs_get_suitable_osdsResponse& xtreemfs_get_suitable_osdsResponse::default_instance() { - if (default_instance_ == NULL) protobuf_AddDesc_xtreemfs_2fMRC_2eproto(); return *default_instance_; + if (default_instance_ == NULL) protobuf_AddDesc_xtreemfs_2fMRC_2eproto(); + return *default_instance_; } xtreemfs_get_suitable_osdsResponse* xtreemfs_get_suitable_osdsResponse::default_instance_ = NULL; @@ -13642,7 +13620,8 @@ bool xtreemfs_get_suitable_osdsResponse::MergePartialFromCodedStream( DO_(::google::protobuf::internal::WireFormatLite::ReadString( input, this->add_osd_uuids())); ::google::protobuf::internal::WireFormat::VerifyUTF8String( - this->osd_uuids(0).data(), this->osd_uuids(0).length(), + this->osd_uuids(this->osd_uuids_size() - 1).data(), + this->osd_uuids(this->osd_uuids_size() - 1).length(), ::google::protobuf::internal::WireFormat::PARSE); } else { goto handle_uninterpreted; @@ -13651,7 +13630,7 @@ bool xtreemfs_get_suitable_osdsResponse::MergePartialFromCodedStream( if (input->ExpectAtEnd()) return true; break; } - + default: { handle_uninterpreted: if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -13678,7 +13657,7 @@ void xtreemfs_get_suitable_osdsResponse::SerializeWithCachedSizes( ::google::protobuf::internal::WireFormatLite::WriteString( 1, this->osd_uuids(i), output); } - + if (!unknown_fields().empty()) { ::google::protobuf::internal::WireFormat::SerializeUnknownFields( unknown_fields(), output); @@ -13695,7 +13674,7 @@ void xtreemfs_get_suitable_osdsResponse::SerializeWithCachedSizes( target = ::google::protobuf::internal::WireFormatLite:: WriteStringToArray(1, this->osd_uuids(i), target); } - + if (!unknown_fields().empty()) { target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray( unknown_fields(), target); @@ -13705,14 +13684,14 @@ void xtreemfs_get_suitable_osdsResponse::SerializeWithCachedSizes( int xtreemfs_get_suitable_osdsResponse::ByteSize() const { int total_size = 0; - + // repeated string osd_uuids = 1; total_size += 1 * this->osd_uuids_size(); for (int i = 0; i < this->osd_uuids_size(); i++) { total_size += ::google::protobuf::internal::WireFormatLite::StringSize( this->osd_uuids(i)); } - + if (!unknown_fields().empty()) { total_size += ::google::protobuf::internal::WireFormat::ComputeUnknownFieldsSize( @@ -13755,7 +13734,7 @@ void xtreemfs_get_suitable_osdsResponse::CopyFrom(const xtreemfs_get_suitable_os } bool xtreemfs_get_suitable_osdsResponse::IsInitialized() const { - + return true; } @@ -13779,7 +13758,6 @@ void xtreemfs_get_suitable_osdsResponse::Swap(xtreemfs_get_suitable_osdsResponse // =================================================================== -const ::std::string xtreemfs_check_file_existsResponse::_default_bitmap_; #ifndef _MSC_VER const int xtreemfs_check_file_existsResponse::kBitmapFieldNumber; #endif // !_MSC_VER @@ -13800,7 +13778,7 @@ xtreemfs_check_file_existsResponse::xtreemfs_check_file_existsResponse(const xtr void xtreemfs_check_file_existsResponse::SharedCtor() { _cached_size_ = 0; - bitmap_ = const_cast< ::std::string*>(&_default_bitmap_); + bitmap_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); ::memset(_has_bits_, 0, sizeof(_has_bits_)); } @@ -13809,7 +13787,7 @@ xtreemfs_check_file_existsResponse::~xtreemfs_check_file_existsResponse() { } void xtreemfs_check_file_existsResponse::SharedDtor() { - if (bitmap_ != &_default_bitmap_) { + if (bitmap_ != &::google::protobuf::internal::kEmptyString) { delete bitmap_; } if (this != default_instance_) { @@ -13827,7 +13805,8 @@ const ::google::protobuf::Descriptor* xtreemfs_check_file_existsResponse::descri } const xtreemfs_check_file_existsResponse& xtreemfs_check_file_existsResponse::default_instance() { - if (default_instance_ == NULL) protobuf_AddDesc_xtreemfs_2fMRC_2eproto(); return *default_instance_; + if (default_instance_ == NULL) protobuf_AddDesc_xtreemfs_2fMRC_2eproto(); + return *default_instance_; } xtreemfs_check_file_existsResponse* xtreemfs_check_file_existsResponse::default_instance_ = NULL; @@ -13838,8 +13817,8 @@ xtreemfs_check_file_existsResponse* xtreemfs_check_file_existsResponse::New() co void xtreemfs_check_file_existsResponse::Clear() { if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) { - if (_has_bit(0)) { - if (bitmap_ != &_default_bitmap_) { + if (has_bitmap()) { + if (bitmap_ != &::google::protobuf::internal::kEmptyString) { bitmap_->clear(); } } @@ -13869,7 +13848,7 @@ bool xtreemfs_check_file_existsResponse::MergePartialFromCodedStream( if (input->ExpectAtEnd()) return true; break; } - + default: { handle_uninterpreted: if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -13889,14 +13868,14 @@ bool xtreemfs_check_file_existsResponse::MergePartialFromCodedStream( void xtreemfs_check_file_existsResponse::SerializeWithCachedSizes( ::google::protobuf::io::CodedOutputStream* output) const { // required string bitmap = 1; - if (_has_bit(0)) { + if (has_bitmap()) { ::google::protobuf::internal::WireFormat::VerifyUTF8String( this->bitmap().data(), this->bitmap().length(), ::google::protobuf::internal::WireFormat::SERIALIZE); ::google::protobuf::internal::WireFormatLite::WriteString( 1, this->bitmap(), output); } - + if (!unknown_fields().empty()) { ::google::protobuf::internal::WireFormat::SerializeUnknownFields( unknown_fields(), output); @@ -13906,7 +13885,7 @@ void xtreemfs_check_file_existsResponse::SerializeWithCachedSizes( ::google::protobuf::uint8* xtreemfs_check_file_existsResponse::SerializeWithCachedSizesToArray( ::google::protobuf::uint8* target) const { // required string bitmap = 1; - if (_has_bit(0)) { + if (has_bitmap()) { ::google::protobuf::internal::WireFormat::VerifyUTF8String( this->bitmap().data(), this->bitmap().length(), ::google::protobuf::internal::WireFormat::SERIALIZE); @@ -13914,7 +13893,7 @@ void xtreemfs_check_file_existsResponse::SerializeWithCachedSizes( ::google::protobuf::internal::WireFormatLite::WriteStringToArray( 1, this->bitmap(), target); } - + if (!unknown_fields().empty()) { target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray( unknown_fields(), target); @@ -13924,7 +13903,7 @@ void xtreemfs_check_file_existsResponse::SerializeWithCachedSizes( int xtreemfs_check_file_existsResponse::ByteSize() const { int total_size = 0; - + if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) { // required string bitmap = 1; if (has_bitmap()) { @@ -13932,7 +13911,7 @@ int xtreemfs_check_file_existsResponse::ByteSize() const { ::google::protobuf::internal::WireFormatLite::StringSize( this->bitmap()); } - + } if (!unknown_fields().empty()) { total_size += @@ -13960,7 +13939,7 @@ void xtreemfs_check_file_existsResponse::MergeFrom(const ::google::protobuf::Mes void xtreemfs_check_file_existsResponse::MergeFrom(const xtreemfs_check_file_existsResponse& from) { GOOGLE_CHECK_NE(&from, this); if (from._has_bits_[0 / 32] & (0xffu << (0 % 32))) { - if (from._has_bit(0)) { + if (from.has_bitmap()) { set_bitmap(from.bitmap()); } } @@ -13981,7 +13960,7 @@ void xtreemfs_check_file_existsResponse::CopyFrom(const xtreemfs_check_file_exis bool xtreemfs_check_file_existsResponse::IsInitialized() const { if ((_has_bits_[0] & 0x00000001) != 0x00000001) return false; - + return true; } @@ -14049,7 +14028,8 @@ const ::google::protobuf::Descriptor* timestampResponse::descriptor() { } const timestampResponse& timestampResponse::default_instance() { - if (default_instance_ == NULL) protobuf_AddDesc_xtreemfs_2fMRC_2eproto(); return *default_instance_; + if (default_instance_ == NULL) protobuf_AddDesc_xtreemfs_2fMRC_2eproto(); + return *default_instance_; } timestampResponse* timestampResponse::default_instance_ = NULL; @@ -14079,14 +14059,14 @@ bool timestampResponse::MergePartialFromCodedStream( DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive< ::google::protobuf::uint32, ::google::protobuf::internal::WireFormatLite::TYPE_FIXED32>( input, ×tamp_s_))); - _set_bit(0); + set_has_timestamp_s(); } else { goto handle_uninterpreted; } if (input->ExpectAtEnd()) return true; break; } - + default: { handle_uninterpreted: if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -14106,10 +14086,10 @@ bool timestampResponse::MergePartialFromCodedStream( void timestampResponse::SerializeWithCachedSizes( ::google::protobuf::io::CodedOutputStream* output) const { // required fixed32 timestamp_s = 1; - if (_has_bit(0)) { + if (has_timestamp_s()) { ::google::protobuf::internal::WireFormatLite::WriteFixed32(1, this->timestamp_s(), output); } - + if (!unknown_fields().empty()) { ::google::protobuf::internal::WireFormat::SerializeUnknownFields( unknown_fields(), output); @@ -14119,10 +14099,10 @@ void timestampResponse::SerializeWithCachedSizes( ::google::protobuf::uint8* timestampResponse::SerializeWithCachedSizesToArray( ::google::protobuf::uint8* target) const { // required fixed32 timestamp_s = 1; - if (_has_bit(0)) { + if (has_timestamp_s()) { target = ::google::protobuf::internal::WireFormatLite::WriteFixed32ToArray(1, this->timestamp_s(), target); } - + if (!unknown_fields().empty()) { target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray( unknown_fields(), target); @@ -14132,13 +14112,13 @@ void timestampResponse::SerializeWithCachedSizes( int timestampResponse::ByteSize() const { int total_size = 0; - + if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) { // required fixed32 timestamp_s = 1; if (has_timestamp_s()) { total_size += 1 + 4; } - + } if (!unknown_fields().empty()) { total_size += @@ -14166,7 +14146,7 @@ void timestampResponse::MergeFrom(const ::google::protobuf::Message& from) { void timestampResponse::MergeFrom(const timestampResponse& from) { GOOGLE_CHECK_NE(&from, this); if (from._has_bits_[0 / 32] & (0xffu << (0 % 32))) { - if (from._has_bit(0)) { + if (from.has_timestamp_s()) { set_timestamp_s(from.timestamp_s()); } } @@ -14187,7 +14167,7 @@ void timestampResponse::CopyFrom(const timestampResponse& from) { bool timestampResponse::IsInitialized() const { if ((_has_bits_[0] & 0x00000001) != 0x00000001) return false; - + return true; } @@ -14211,7 +14191,6 @@ void timestampResponse::Swap(timestampResponse* other) { // =================================================================== -const ::std::string stringMessage::_default_a_string_; #ifndef _MSC_VER const int stringMessage::kAStringFieldNumber; #endif // !_MSC_VER @@ -14232,7 +14211,7 @@ stringMessage::stringMessage(const stringMessage& from) void stringMessage::SharedCtor() { _cached_size_ = 0; - a_string_ = const_cast< ::std::string*>(&_default_a_string_); + a_string_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); ::memset(_has_bits_, 0, sizeof(_has_bits_)); } @@ -14241,7 +14220,7 @@ stringMessage::~stringMessage() { } void stringMessage::SharedDtor() { - if (a_string_ != &_default_a_string_) { + if (a_string_ != &::google::protobuf::internal::kEmptyString) { delete a_string_; } if (this != default_instance_) { @@ -14259,7 +14238,8 @@ const ::google::protobuf::Descriptor* stringMessage::descriptor() { } const stringMessage& stringMessage::default_instance() { - if (default_instance_ == NULL) protobuf_AddDesc_xtreemfs_2fMRC_2eproto(); return *default_instance_; + if (default_instance_ == NULL) protobuf_AddDesc_xtreemfs_2fMRC_2eproto(); + return *default_instance_; } stringMessage* stringMessage::default_instance_ = NULL; @@ -14270,8 +14250,8 @@ stringMessage* stringMessage::New() const { void stringMessage::Clear() { if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) { - if (_has_bit(0)) { - if (a_string_ != &_default_a_string_) { + if (has_a_string()) { + if (a_string_ != &::google::protobuf::internal::kEmptyString) { a_string_->clear(); } } @@ -14301,7 +14281,7 @@ bool stringMessage::MergePartialFromCodedStream( if (input->ExpectAtEnd()) return true; break; } - + default: { handle_uninterpreted: if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -14321,14 +14301,14 @@ bool stringMessage::MergePartialFromCodedStream( void stringMessage::SerializeWithCachedSizes( ::google::protobuf::io::CodedOutputStream* output) const { // required string a_string = 1; - if (_has_bit(0)) { + if (has_a_string()) { ::google::protobuf::internal::WireFormat::VerifyUTF8String( this->a_string().data(), this->a_string().length(), ::google::protobuf::internal::WireFormat::SERIALIZE); ::google::protobuf::internal::WireFormatLite::WriteString( 1, this->a_string(), output); } - + if (!unknown_fields().empty()) { ::google::protobuf::internal::WireFormat::SerializeUnknownFields( unknown_fields(), output); @@ -14338,7 +14318,7 @@ void stringMessage::SerializeWithCachedSizes( ::google::protobuf::uint8* stringMessage::SerializeWithCachedSizesToArray( ::google::protobuf::uint8* target) const { // required string a_string = 1; - if (_has_bit(0)) { + if (has_a_string()) { ::google::protobuf::internal::WireFormat::VerifyUTF8String( this->a_string().data(), this->a_string().length(), ::google::protobuf::internal::WireFormat::SERIALIZE); @@ -14346,7 +14326,7 @@ void stringMessage::SerializeWithCachedSizes( ::google::protobuf::internal::WireFormatLite::WriteStringToArray( 1, this->a_string(), target); } - + if (!unknown_fields().empty()) { target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray( unknown_fields(), target); @@ -14356,7 +14336,7 @@ void stringMessage::SerializeWithCachedSizes( int stringMessage::ByteSize() const { int total_size = 0; - + if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) { // required string a_string = 1; if (has_a_string()) { @@ -14364,7 +14344,7 @@ int stringMessage::ByteSize() const { ::google::protobuf::internal::WireFormatLite::StringSize( this->a_string()); } - + } if (!unknown_fields().empty()) { total_size += @@ -14392,7 +14372,7 @@ void stringMessage::MergeFrom(const ::google::protobuf::Message& from) { void stringMessage::MergeFrom(const stringMessage& from) { GOOGLE_CHECK_NE(&from, this); if (from._has_bits_[0 / 32] & (0xffu << (0 % 32))) { - if (from._has_bit(0)) { + if (from.has_a_string()) { set_a_string(from.a_string()); } } @@ -14413,7 +14393,7 @@ void stringMessage::CopyFrom(const stringMessage& from) { bool stringMessage::IsInitialized() const { if ((_has_bits_[0] & 0x00000001) != 0x00000001) return false; - + return true; } @@ -14437,7 +14417,6 @@ void stringMessage::Swap(stringMessage* other) { // =================================================================== -const ::std::string xtreemfs_listdirRequest::_default_path_; #ifndef _MSC_VER const int xtreemfs_listdirRequest::kPathFieldNumber; #endif // !_MSC_VER @@ -14458,7 +14437,7 @@ xtreemfs_listdirRequest::xtreemfs_listdirRequest(const xtreemfs_listdirRequest& void xtreemfs_listdirRequest::SharedCtor() { _cached_size_ = 0; - path_ = const_cast< ::std::string*>(&_default_path_); + path_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); ::memset(_has_bits_, 0, sizeof(_has_bits_)); } @@ -14467,7 +14446,7 @@ xtreemfs_listdirRequest::~xtreemfs_listdirRequest() { } void xtreemfs_listdirRequest::SharedDtor() { - if (path_ != &_default_path_) { + if (path_ != &::google::protobuf::internal::kEmptyString) { delete path_; } if (this != default_instance_) { @@ -14485,7 +14464,8 @@ const ::google::protobuf::Descriptor* xtreemfs_listdirRequest::descriptor() { } const xtreemfs_listdirRequest& xtreemfs_listdirRequest::default_instance() { - if (default_instance_ == NULL) protobuf_AddDesc_xtreemfs_2fMRC_2eproto(); return *default_instance_; + if (default_instance_ == NULL) protobuf_AddDesc_xtreemfs_2fMRC_2eproto(); + return *default_instance_; } xtreemfs_listdirRequest* xtreemfs_listdirRequest::default_instance_ = NULL; @@ -14496,8 +14476,8 @@ xtreemfs_listdirRequest* xtreemfs_listdirRequest::New() const { void xtreemfs_listdirRequest::Clear() { if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) { - if (_has_bit(0)) { - if (path_ != &_default_path_) { + if (has_path()) { + if (path_ != &::google::protobuf::internal::kEmptyString) { path_->clear(); } } @@ -14527,7 +14507,7 @@ bool xtreemfs_listdirRequest::MergePartialFromCodedStream( if (input->ExpectAtEnd()) return true; break; } - + default: { handle_uninterpreted: if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -14547,14 +14527,14 @@ bool xtreemfs_listdirRequest::MergePartialFromCodedStream( void xtreemfs_listdirRequest::SerializeWithCachedSizes( ::google::protobuf::io::CodedOutputStream* output) const { // required string path = 1; - if (_has_bit(0)) { + if (has_path()) { ::google::protobuf::internal::WireFormat::VerifyUTF8String( this->path().data(), this->path().length(), ::google::protobuf::internal::WireFormat::SERIALIZE); ::google::protobuf::internal::WireFormatLite::WriteString( 1, this->path(), output); } - + if (!unknown_fields().empty()) { ::google::protobuf::internal::WireFormat::SerializeUnknownFields( unknown_fields(), output); @@ -14564,7 +14544,7 @@ void xtreemfs_listdirRequest::SerializeWithCachedSizes( ::google::protobuf::uint8* xtreemfs_listdirRequest::SerializeWithCachedSizesToArray( ::google::protobuf::uint8* target) const { // required string path = 1; - if (_has_bit(0)) { + if (has_path()) { ::google::protobuf::internal::WireFormat::VerifyUTF8String( this->path().data(), this->path().length(), ::google::protobuf::internal::WireFormat::SERIALIZE); @@ -14572,7 +14552,7 @@ void xtreemfs_listdirRequest::SerializeWithCachedSizes( ::google::protobuf::internal::WireFormatLite::WriteStringToArray( 1, this->path(), target); } - + if (!unknown_fields().empty()) { target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray( unknown_fields(), target); @@ -14582,7 +14562,7 @@ void xtreemfs_listdirRequest::SerializeWithCachedSizes( int xtreemfs_listdirRequest::ByteSize() const { int total_size = 0; - + if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) { // required string path = 1; if (has_path()) { @@ -14590,7 +14570,7 @@ int xtreemfs_listdirRequest::ByteSize() const { ::google::protobuf::internal::WireFormatLite::StringSize( this->path()); } - + } if (!unknown_fields().empty()) { total_size += @@ -14618,7 +14598,7 @@ void xtreemfs_listdirRequest::MergeFrom(const ::google::protobuf::Message& from) void xtreemfs_listdirRequest::MergeFrom(const xtreemfs_listdirRequest& from) { GOOGLE_CHECK_NE(&from, this); if (from._has_bits_[0 / 32] & (0xffu << (0 % 32))) { - if (from._has_bit(0)) { + if (from.has_path()) { set_path(from.path()); } } @@ -14639,7 +14619,7 @@ void xtreemfs_listdirRequest::CopyFrom(const xtreemfs_listdirRequest& from) { bool xtreemfs_listdirRequest::IsInitialized() const { if ((_has_bits_[0] & 0x00000001) != 0x00000001) return false; - + return true; } @@ -14706,7 +14686,8 @@ const ::google::protobuf::Descriptor* xtreemfs_listdirResponse::descriptor() { } const xtreemfs_listdirResponse& xtreemfs_listdirResponse::default_instance() { - if (default_instance_ == NULL) protobuf_AddDesc_xtreemfs_2fMRC_2eproto(); return *default_instance_; + if (default_instance_ == NULL) protobuf_AddDesc_xtreemfs_2fMRC_2eproto(); + return *default_instance_; } xtreemfs_listdirResponse* xtreemfs_listdirResponse::default_instance_ = NULL; @@ -14735,7 +14716,8 @@ bool xtreemfs_listdirResponse::MergePartialFromCodedStream( DO_(::google::protobuf::internal::WireFormatLite::ReadString( input, this->add_names())); ::google::protobuf::internal::WireFormat::VerifyUTF8String( - this->names(0).data(), this->names(0).length(), + this->names(this->names_size() - 1).data(), + this->names(this->names_size() - 1).length(), ::google::protobuf::internal::WireFormat::PARSE); } else { goto handle_uninterpreted; @@ -14744,7 +14726,7 @@ bool xtreemfs_listdirResponse::MergePartialFromCodedStream( if (input->ExpectAtEnd()) return true; break; } - + default: { handle_uninterpreted: if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -14771,7 +14753,7 @@ void xtreemfs_listdirResponse::SerializeWithCachedSizes( ::google::protobuf::internal::WireFormatLite::WriteString( 1, this->names(i), output); } - + if (!unknown_fields().empty()) { ::google::protobuf::internal::WireFormat::SerializeUnknownFields( unknown_fields(), output); @@ -14788,7 +14770,7 @@ void xtreemfs_listdirResponse::SerializeWithCachedSizes( target = ::google::protobuf::internal::WireFormatLite:: WriteStringToArray(1, this->names(i), target); } - + if (!unknown_fields().empty()) { target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray( unknown_fields(), target); @@ -14798,14 +14780,14 @@ void xtreemfs_listdirResponse::SerializeWithCachedSizes( int xtreemfs_listdirResponse::ByteSize() const { int total_size = 0; - + // repeated string names = 1; total_size += 1 * this->names_size(); for (int i = 0; i < this->names_size(); i++) { total_size += ::google::protobuf::internal::WireFormatLite::StringSize( this->names(i)); } - + if (!unknown_fields().empty()) { total_size += ::google::protobuf::internal::WireFormat::ComputeUnknownFieldsSize( @@ -14848,7 +14830,7 @@ void xtreemfs_listdirResponse::CopyFrom(const xtreemfs_listdirResponse& from) { } bool xtreemfs_listdirResponse::IsInitialized() const { - + return true; } @@ -14872,9 +14854,6 @@ void xtreemfs_listdirResponse::Swap(xtreemfs_listdirResponse* other) { // =================================================================== -const ::std::string xtreemfs_replica_addRequest::_default_file_id_; -const ::std::string xtreemfs_replica_addRequest::_default_path_; -const ::std::string xtreemfs_replica_addRequest::_default_volume_name_; #ifndef _MSC_VER const int xtreemfs_replica_addRequest::kFileIdFieldNumber; const int xtreemfs_replica_addRequest::kPathFieldNumber; @@ -14899,9 +14878,9 @@ xtreemfs_replica_addRequest::xtreemfs_replica_addRequest(const xtreemfs_replica_ void xtreemfs_replica_addRequest::SharedCtor() { _cached_size_ = 0; - file_id_ = const_cast< ::std::string*>(&_default_file_id_); - path_ = const_cast< ::std::string*>(&_default_path_); - volume_name_ = const_cast< ::std::string*>(&_default_volume_name_); + file_id_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + path_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + volume_name_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); new_replica_ = NULL; ::memset(_has_bits_, 0, sizeof(_has_bits_)); } @@ -14911,13 +14890,13 @@ xtreemfs_replica_addRequest::~xtreemfs_replica_addRequest() { } void xtreemfs_replica_addRequest::SharedDtor() { - if (file_id_ != &_default_file_id_) { + if (file_id_ != &::google::protobuf::internal::kEmptyString) { delete file_id_; } - if (path_ != &_default_path_) { + if (path_ != &::google::protobuf::internal::kEmptyString) { delete path_; } - if (volume_name_ != &_default_volume_name_) { + if (volume_name_ != &::google::protobuf::internal::kEmptyString) { delete volume_name_; } if (this != default_instance_) { @@ -14936,7 +14915,8 @@ const ::google::protobuf::Descriptor* xtreemfs_replica_addRequest::descriptor() } const xtreemfs_replica_addRequest& xtreemfs_replica_addRequest::default_instance() { - if (default_instance_ == NULL) protobuf_AddDesc_xtreemfs_2fMRC_2eproto(); return *default_instance_; + if (default_instance_ == NULL) protobuf_AddDesc_xtreemfs_2fMRC_2eproto(); + return *default_instance_; } xtreemfs_replica_addRequest* xtreemfs_replica_addRequest::default_instance_ = NULL; @@ -14947,22 +14927,22 @@ xtreemfs_replica_addRequest* xtreemfs_replica_addRequest::New() const { void xtreemfs_replica_addRequest::Clear() { if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) { - if (_has_bit(0)) { - if (file_id_ != &_default_file_id_) { + if (has_file_id()) { + if (file_id_ != &::google::protobuf::internal::kEmptyString) { file_id_->clear(); } } - if (_has_bit(1)) { - if (path_ != &_default_path_) { + if (has_path()) { + if (path_ != &::google::protobuf::internal::kEmptyString) { path_->clear(); } } - if (_has_bit(2)) { - if (volume_name_ != &_default_volume_name_) { + if (has_volume_name()) { + if (volume_name_ != &::google::protobuf::internal::kEmptyString) { volume_name_->clear(); } } - if (_has_bit(3)) { + if (has_new_replica()) { if (new_replica_ != NULL) new_replica_->::xtreemfs::pbrpc::Replica::Clear(); } } @@ -14991,7 +14971,7 @@ bool xtreemfs_replica_addRequest::MergePartialFromCodedStream( if (input->ExpectTag(18)) goto parse_new_replica; break; } - + // required .xtreemfs.pbrpc.Replica new_replica = 2; case 2: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -15005,7 +14985,7 @@ bool xtreemfs_replica_addRequest::MergePartialFromCodedStream( if (input->ExpectTag(26)) goto parse_path; break; } - + // optional string path = 3; case 3: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -15022,7 +15002,7 @@ bool xtreemfs_replica_addRequest::MergePartialFromCodedStream( if (input->ExpectTag(34)) goto parse_volume_name; break; } - + // optional string volume_name = 4; case 4: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -15039,7 +15019,7 @@ bool xtreemfs_replica_addRequest::MergePartialFromCodedStream( if (input->ExpectAtEnd()) return true; break; } - + default: { handle_uninterpreted: if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -15059,38 +15039,38 @@ bool xtreemfs_replica_addRequest::MergePartialFromCodedStream( void xtreemfs_replica_addRequest::SerializeWithCachedSizes( ::google::protobuf::io::CodedOutputStream* output) const { // optional string file_id = 1; - if (_has_bit(0)) { + if (has_file_id()) { ::google::protobuf::internal::WireFormat::VerifyUTF8String( this->file_id().data(), this->file_id().length(), ::google::protobuf::internal::WireFormat::SERIALIZE); ::google::protobuf::internal::WireFormatLite::WriteString( 1, this->file_id(), output); } - + // required .xtreemfs.pbrpc.Replica new_replica = 2; - if (_has_bit(3)) { + if (has_new_replica()) { ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray( 2, this->new_replica(), output); } - + // optional string path = 3; - if (_has_bit(1)) { + if (has_path()) { ::google::protobuf::internal::WireFormat::VerifyUTF8String( this->path().data(), this->path().length(), ::google::protobuf::internal::WireFormat::SERIALIZE); ::google::protobuf::internal::WireFormatLite::WriteString( 3, this->path(), output); } - + // optional string volume_name = 4; - if (_has_bit(2)) { + if (has_volume_name()) { ::google::protobuf::internal::WireFormat::VerifyUTF8String( this->volume_name().data(), this->volume_name().length(), ::google::protobuf::internal::WireFormat::SERIALIZE); ::google::protobuf::internal::WireFormatLite::WriteString( 4, this->volume_name(), output); } - + if (!unknown_fields().empty()) { ::google::protobuf::internal::WireFormat::SerializeUnknownFields( unknown_fields(), output); @@ -15100,7 +15080,7 @@ void xtreemfs_replica_addRequest::SerializeWithCachedSizes( ::google::protobuf::uint8* xtreemfs_replica_addRequest::SerializeWithCachedSizesToArray( ::google::protobuf::uint8* target) const { // optional string file_id = 1; - if (_has_bit(0)) { + if (has_file_id()) { ::google::protobuf::internal::WireFormat::VerifyUTF8String( this->file_id().data(), this->file_id().length(), ::google::protobuf::internal::WireFormat::SERIALIZE); @@ -15108,16 +15088,16 @@ void xtreemfs_replica_addRequest::SerializeWithCachedSizes( ::google::protobuf::internal::WireFormatLite::WriteStringToArray( 1, this->file_id(), target); } - + // required .xtreemfs.pbrpc.Replica new_replica = 2; - if (_has_bit(3)) { + if (has_new_replica()) { target = ::google::protobuf::internal::WireFormatLite:: WriteMessageNoVirtualToArray( 2, this->new_replica(), target); } - + // optional string path = 3; - if (_has_bit(1)) { + if (has_path()) { ::google::protobuf::internal::WireFormat::VerifyUTF8String( this->path().data(), this->path().length(), ::google::protobuf::internal::WireFormat::SERIALIZE); @@ -15125,9 +15105,9 @@ void xtreemfs_replica_addRequest::SerializeWithCachedSizes( ::google::protobuf::internal::WireFormatLite::WriteStringToArray( 3, this->path(), target); } - + // optional string volume_name = 4; - if (_has_bit(2)) { + if (has_volume_name()) { ::google::protobuf::internal::WireFormat::VerifyUTF8String( this->volume_name().data(), this->volume_name().length(), ::google::protobuf::internal::WireFormat::SERIALIZE); @@ -15135,7 +15115,7 @@ void xtreemfs_replica_addRequest::SerializeWithCachedSizes( ::google::protobuf::internal::WireFormatLite::WriteStringToArray( 4, this->volume_name(), target); } - + if (!unknown_fields().empty()) { target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray( unknown_fields(), target); @@ -15145,7 +15125,7 @@ void xtreemfs_replica_addRequest::SerializeWithCachedSizes( int xtreemfs_replica_addRequest::ByteSize() const { int total_size = 0; - + if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) { // optional string file_id = 1; if (has_file_id()) { @@ -15153,28 +15133,28 @@ int xtreemfs_replica_addRequest::ByteSize() const { ::google::protobuf::internal::WireFormatLite::StringSize( this->file_id()); } - + // optional string path = 3; if (has_path()) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::StringSize( this->path()); } - + // optional string volume_name = 4; if (has_volume_name()) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::StringSize( this->volume_name()); } - + // required .xtreemfs.pbrpc.Replica new_replica = 2; if (has_new_replica()) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::MessageSizeNoVirtual( this->new_replica()); } - + } if (!unknown_fields().empty()) { total_size += @@ -15202,16 +15182,16 @@ void xtreemfs_replica_addRequest::MergeFrom(const ::google::protobuf::Message& f void xtreemfs_replica_addRequest::MergeFrom(const xtreemfs_replica_addRequest& from) { GOOGLE_CHECK_NE(&from, this); if (from._has_bits_[0 / 32] & (0xffu << (0 % 32))) { - if (from._has_bit(0)) { + if (from.has_file_id()) { set_file_id(from.file_id()); } - if (from._has_bit(1)) { + if (from.has_path()) { set_path(from.path()); } - if (from._has_bit(2)) { + if (from.has_volume_name()) { set_volume_name(from.volume_name()); } - if (from._has_bit(3)) { + if (from.has_new_replica()) { mutable_new_replica()->::xtreemfs::pbrpc::Replica::MergeFrom(from.new_replica()); } } @@ -15232,7 +15212,7 @@ void xtreemfs_replica_addRequest::CopyFrom(const xtreemfs_replica_addRequest& fr bool xtreemfs_replica_addRequest::IsInitialized() const { if ((_has_bits_[0] & 0x00000008) != 0x00000008) return false; - + if (has_new_replica()) { if (!this->new_replica().IsInitialized()) return false; } @@ -15262,9 +15242,6 @@ void xtreemfs_replica_addRequest::Swap(xtreemfs_replica_addRequest* other) { // =================================================================== -const ::std::string xtreemfs_replica_listRequest::_default_file_id_; -const ::std::string xtreemfs_replica_listRequest::_default_path_; -const ::std::string xtreemfs_replica_listRequest::_default_volume_name_; #ifndef _MSC_VER const int xtreemfs_replica_listRequest::kFileIdFieldNumber; const int xtreemfs_replica_listRequest::kPathFieldNumber; @@ -15287,9 +15264,9 @@ xtreemfs_replica_listRequest::xtreemfs_replica_listRequest(const xtreemfs_replic void xtreemfs_replica_listRequest::SharedCtor() { _cached_size_ = 0; - file_id_ = const_cast< ::std::string*>(&_default_file_id_); - path_ = const_cast< ::std::string*>(&_default_path_); - volume_name_ = const_cast< ::std::string*>(&_default_volume_name_); + file_id_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + path_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + volume_name_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); ::memset(_has_bits_, 0, sizeof(_has_bits_)); } @@ -15298,13 +15275,13 @@ xtreemfs_replica_listRequest::~xtreemfs_replica_listRequest() { } void xtreemfs_replica_listRequest::SharedDtor() { - if (file_id_ != &_default_file_id_) { + if (file_id_ != &::google::protobuf::internal::kEmptyString) { delete file_id_; } - if (path_ != &_default_path_) { + if (path_ != &::google::protobuf::internal::kEmptyString) { delete path_; } - if (volume_name_ != &_default_volume_name_) { + if (volume_name_ != &::google::protobuf::internal::kEmptyString) { delete volume_name_; } if (this != default_instance_) { @@ -15322,7 +15299,8 @@ const ::google::protobuf::Descriptor* xtreemfs_replica_listRequest::descriptor() } const xtreemfs_replica_listRequest& xtreemfs_replica_listRequest::default_instance() { - if (default_instance_ == NULL) protobuf_AddDesc_xtreemfs_2fMRC_2eproto(); return *default_instance_; + if (default_instance_ == NULL) protobuf_AddDesc_xtreemfs_2fMRC_2eproto(); + return *default_instance_; } xtreemfs_replica_listRequest* xtreemfs_replica_listRequest::default_instance_ = NULL; @@ -15333,18 +15311,18 @@ xtreemfs_replica_listRequest* xtreemfs_replica_listRequest::New() const { void xtreemfs_replica_listRequest::Clear() { if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) { - if (_has_bit(0)) { - if (file_id_ != &_default_file_id_) { + if (has_file_id()) { + if (file_id_ != &::google::protobuf::internal::kEmptyString) { file_id_->clear(); } } - if (_has_bit(1)) { - if (path_ != &_default_path_) { + if (has_path()) { + if (path_ != &::google::protobuf::internal::kEmptyString) { path_->clear(); } } - if (_has_bit(2)) { - if (volume_name_ != &_default_volume_name_) { + if (has_volume_name()) { + if (volume_name_ != &::google::protobuf::internal::kEmptyString) { volume_name_->clear(); } } @@ -15374,7 +15352,7 @@ bool xtreemfs_replica_listRequest::MergePartialFromCodedStream( if (input->ExpectTag(18)) goto parse_path; break; } - + // optional string path = 2; case 2: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -15391,7 +15369,7 @@ bool xtreemfs_replica_listRequest::MergePartialFromCodedStream( if (input->ExpectTag(26)) goto parse_volume_name; break; } - + // optional string volume_name = 3; case 3: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -15408,7 +15386,7 @@ bool xtreemfs_replica_listRequest::MergePartialFromCodedStream( if (input->ExpectAtEnd()) return true; break; } - + default: { handle_uninterpreted: if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -15428,32 +15406,32 @@ bool xtreemfs_replica_listRequest::MergePartialFromCodedStream( void xtreemfs_replica_listRequest::SerializeWithCachedSizes( ::google::protobuf::io::CodedOutputStream* output) const { // optional string file_id = 1; - if (_has_bit(0)) { + if (has_file_id()) { ::google::protobuf::internal::WireFormat::VerifyUTF8String( this->file_id().data(), this->file_id().length(), ::google::protobuf::internal::WireFormat::SERIALIZE); ::google::protobuf::internal::WireFormatLite::WriteString( 1, this->file_id(), output); } - + // optional string path = 2; - if (_has_bit(1)) { + if (has_path()) { ::google::protobuf::internal::WireFormat::VerifyUTF8String( this->path().data(), this->path().length(), ::google::protobuf::internal::WireFormat::SERIALIZE); ::google::protobuf::internal::WireFormatLite::WriteString( 2, this->path(), output); } - + // optional string volume_name = 3; - if (_has_bit(2)) { + if (has_volume_name()) { ::google::protobuf::internal::WireFormat::VerifyUTF8String( this->volume_name().data(), this->volume_name().length(), ::google::protobuf::internal::WireFormat::SERIALIZE); ::google::protobuf::internal::WireFormatLite::WriteString( 3, this->volume_name(), output); } - + if (!unknown_fields().empty()) { ::google::protobuf::internal::WireFormat::SerializeUnknownFields( unknown_fields(), output); @@ -15463,7 +15441,7 @@ void xtreemfs_replica_listRequest::SerializeWithCachedSizes( ::google::protobuf::uint8* xtreemfs_replica_listRequest::SerializeWithCachedSizesToArray( ::google::protobuf::uint8* target) const { // optional string file_id = 1; - if (_has_bit(0)) { + if (has_file_id()) { ::google::protobuf::internal::WireFormat::VerifyUTF8String( this->file_id().data(), this->file_id().length(), ::google::protobuf::internal::WireFormat::SERIALIZE); @@ -15471,9 +15449,9 @@ void xtreemfs_replica_listRequest::SerializeWithCachedSizes( ::google::protobuf::internal::WireFormatLite::WriteStringToArray( 1, this->file_id(), target); } - + // optional string path = 2; - if (_has_bit(1)) { + if (has_path()) { ::google::protobuf::internal::WireFormat::VerifyUTF8String( this->path().data(), this->path().length(), ::google::protobuf::internal::WireFormat::SERIALIZE); @@ -15481,9 +15459,9 @@ void xtreemfs_replica_listRequest::SerializeWithCachedSizes( ::google::protobuf::internal::WireFormatLite::WriteStringToArray( 2, this->path(), target); } - + // optional string volume_name = 3; - if (_has_bit(2)) { + if (has_volume_name()) { ::google::protobuf::internal::WireFormat::VerifyUTF8String( this->volume_name().data(), this->volume_name().length(), ::google::protobuf::internal::WireFormat::SERIALIZE); @@ -15491,7 +15469,7 @@ void xtreemfs_replica_listRequest::SerializeWithCachedSizes( ::google::protobuf::internal::WireFormatLite::WriteStringToArray( 3, this->volume_name(), target); } - + if (!unknown_fields().empty()) { target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray( unknown_fields(), target); @@ -15501,7 +15479,7 @@ void xtreemfs_replica_listRequest::SerializeWithCachedSizes( int xtreemfs_replica_listRequest::ByteSize() const { int total_size = 0; - + if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) { // optional string file_id = 1; if (has_file_id()) { @@ -15509,21 +15487,21 @@ int xtreemfs_replica_listRequest::ByteSize() const { ::google::protobuf::internal::WireFormatLite::StringSize( this->file_id()); } - + // optional string path = 2; if (has_path()) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::StringSize( this->path()); } - + // optional string volume_name = 3; if (has_volume_name()) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::StringSize( this->volume_name()); } - + } if (!unknown_fields().empty()) { total_size += @@ -15551,13 +15529,13 @@ void xtreemfs_replica_listRequest::MergeFrom(const ::google::protobuf::Message& void xtreemfs_replica_listRequest::MergeFrom(const xtreemfs_replica_listRequest& from) { GOOGLE_CHECK_NE(&from, this); if (from._has_bits_[0 / 32] & (0xffu << (0 % 32))) { - if (from._has_bit(0)) { + if (from.has_file_id()) { set_file_id(from.file_id()); } - if (from._has_bit(1)) { + if (from.has_path()) { set_path(from.path()); } - if (from._has_bit(2)) { + if (from.has_volume_name()) { set_volume_name(from.volume_name()); } } @@ -15577,7 +15555,7 @@ void xtreemfs_replica_listRequest::CopyFrom(const xtreemfs_replica_listRequest& } bool xtreemfs_replica_listRequest::IsInitialized() const { - + return true; } @@ -15603,10 +15581,6 @@ void xtreemfs_replica_listRequest::Swap(xtreemfs_replica_listRequest* other) { // =================================================================== -const ::std::string xtreemfs_replica_removeRequest::_default_file_id_; -const ::std::string xtreemfs_replica_removeRequest::_default_path_; -const ::std::string xtreemfs_replica_removeRequest::_default_volume_name_; -const ::std::string xtreemfs_replica_removeRequest::_default_osd_uuid_; #ifndef _MSC_VER const int xtreemfs_replica_removeRequest::kFileIdFieldNumber; const int xtreemfs_replica_removeRequest::kPathFieldNumber; @@ -15630,10 +15604,10 @@ xtreemfs_replica_removeRequest::xtreemfs_replica_removeRequest(const xtreemfs_re void xtreemfs_replica_removeRequest::SharedCtor() { _cached_size_ = 0; - file_id_ = const_cast< ::std::string*>(&_default_file_id_); - path_ = const_cast< ::std::string*>(&_default_path_); - volume_name_ = const_cast< ::std::string*>(&_default_volume_name_); - osd_uuid_ = const_cast< ::std::string*>(&_default_osd_uuid_); + file_id_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + path_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + volume_name_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + osd_uuid_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); ::memset(_has_bits_, 0, sizeof(_has_bits_)); } @@ -15642,16 +15616,16 @@ xtreemfs_replica_removeRequest::~xtreemfs_replica_removeRequest() { } void xtreemfs_replica_removeRequest::SharedDtor() { - if (file_id_ != &_default_file_id_) { + if (file_id_ != &::google::protobuf::internal::kEmptyString) { delete file_id_; } - if (path_ != &_default_path_) { + if (path_ != &::google::protobuf::internal::kEmptyString) { delete path_; } - if (volume_name_ != &_default_volume_name_) { + if (volume_name_ != &::google::protobuf::internal::kEmptyString) { delete volume_name_; } - if (osd_uuid_ != &_default_osd_uuid_) { + if (osd_uuid_ != &::google::protobuf::internal::kEmptyString) { delete osd_uuid_; } if (this != default_instance_) { @@ -15669,7 +15643,8 @@ const ::google::protobuf::Descriptor* xtreemfs_replica_removeRequest::descriptor } const xtreemfs_replica_removeRequest& xtreemfs_replica_removeRequest::default_instance() { - if (default_instance_ == NULL) protobuf_AddDesc_xtreemfs_2fMRC_2eproto(); return *default_instance_; + if (default_instance_ == NULL) protobuf_AddDesc_xtreemfs_2fMRC_2eproto(); + return *default_instance_; } xtreemfs_replica_removeRequest* xtreemfs_replica_removeRequest::default_instance_ = NULL; @@ -15680,23 +15655,23 @@ xtreemfs_replica_removeRequest* xtreemfs_replica_removeRequest::New() const { void xtreemfs_replica_removeRequest::Clear() { if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) { - if (_has_bit(0)) { - if (file_id_ != &_default_file_id_) { + if (has_file_id()) { + if (file_id_ != &::google::protobuf::internal::kEmptyString) { file_id_->clear(); } } - if (_has_bit(1)) { - if (path_ != &_default_path_) { + if (has_path()) { + if (path_ != &::google::protobuf::internal::kEmptyString) { path_->clear(); } } - if (_has_bit(2)) { - if (volume_name_ != &_default_volume_name_) { + if (has_volume_name()) { + if (volume_name_ != &::google::protobuf::internal::kEmptyString) { volume_name_->clear(); } } - if (_has_bit(3)) { - if (osd_uuid_ != &_default_osd_uuid_) { + if (has_osd_uuid()) { + if (osd_uuid_ != &::google::protobuf::internal::kEmptyString) { osd_uuid_->clear(); } } @@ -15726,7 +15701,7 @@ bool xtreemfs_replica_removeRequest::MergePartialFromCodedStream( if (input->ExpectTag(18)) goto parse_osd_uuid; break; } - + // required string osd_uuid = 2; case 2: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -15743,7 +15718,7 @@ bool xtreemfs_replica_removeRequest::MergePartialFromCodedStream( if (input->ExpectTag(26)) goto parse_path; break; } - + // optional string path = 3; case 3: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -15760,7 +15735,7 @@ bool xtreemfs_replica_removeRequest::MergePartialFromCodedStream( if (input->ExpectTag(34)) goto parse_volume_name; break; } - + // optional string volume_name = 4; case 4: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -15777,7 +15752,7 @@ bool xtreemfs_replica_removeRequest::MergePartialFromCodedStream( if (input->ExpectAtEnd()) return true; break; } - + default: { handle_uninterpreted: if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -15797,41 +15772,41 @@ bool xtreemfs_replica_removeRequest::MergePartialFromCodedStream( void xtreemfs_replica_removeRequest::SerializeWithCachedSizes( ::google::protobuf::io::CodedOutputStream* output) const { // optional string file_id = 1; - if (_has_bit(0)) { + if (has_file_id()) { ::google::protobuf::internal::WireFormat::VerifyUTF8String( this->file_id().data(), this->file_id().length(), ::google::protobuf::internal::WireFormat::SERIALIZE); ::google::protobuf::internal::WireFormatLite::WriteString( 1, this->file_id(), output); } - + // required string osd_uuid = 2; - if (_has_bit(3)) { + if (has_osd_uuid()) { ::google::protobuf::internal::WireFormat::VerifyUTF8String( this->osd_uuid().data(), this->osd_uuid().length(), ::google::protobuf::internal::WireFormat::SERIALIZE); ::google::protobuf::internal::WireFormatLite::WriteString( 2, this->osd_uuid(), output); } - + // optional string path = 3; - if (_has_bit(1)) { + if (has_path()) { ::google::protobuf::internal::WireFormat::VerifyUTF8String( this->path().data(), this->path().length(), ::google::protobuf::internal::WireFormat::SERIALIZE); ::google::protobuf::internal::WireFormatLite::WriteString( 3, this->path(), output); } - + // optional string volume_name = 4; - if (_has_bit(2)) { + if (has_volume_name()) { ::google::protobuf::internal::WireFormat::VerifyUTF8String( this->volume_name().data(), this->volume_name().length(), ::google::protobuf::internal::WireFormat::SERIALIZE); ::google::protobuf::internal::WireFormatLite::WriteString( 4, this->volume_name(), output); } - + if (!unknown_fields().empty()) { ::google::protobuf::internal::WireFormat::SerializeUnknownFields( unknown_fields(), output); @@ -15841,7 +15816,7 @@ void xtreemfs_replica_removeRequest::SerializeWithCachedSizes( ::google::protobuf::uint8* xtreemfs_replica_removeRequest::SerializeWithCachedSizesToArray( ::google::protobuf::uint8* target) const { // optional string file_id = 1; - if (_has_bit(0)) { + if (has_file_id()) { ::google::protobuf::internal::WireFormat::VerifyUTF8String( this->file_id().data(), this->file_id().length(), ::google::protobuf::internal::WireFormat::SERIALIZE); @@ -15849,9 +15824,9 @@ void xtreemfs_replica_removeRequest::SerializeWithCachedSizes( ::google::protobuf::internal::WireFormatLite::WriteStringToArray( 1, this->file_id(), target); } - + // required string osd_uuid = 2; - if (_has_bit(3)) { + if (has_osd_uuid()) { ::google::protobuf::internal::WireFormat::VerifyUTF8String( this->osd_uuid().data(), this->osd_uuid().length(), ::google::protobuf::internal::WireFormat::SERIALIZE); @@ -15859,9 +15834,9 @@ void xtreemfs_replica_removeRequest::SerializeWithCachedSizes( ::google::protobuf::internal::WireFormatLite::WriteStringToArray( 2, this->osd_uuid(), target); } - + // optional string path = 3; - if (_has_bit(1)) { + if (has_path()) { ::google::protobuf::internal::WireFormat::VerifyUTF8String( this->path().data(), this->path().length(), ::google::protobuf::internal::WireFormat::SERIALIZE); @@ -15869,9 +15844,9 @@ void xtreemfs_replica_removeRequest::SerializeWithCachedSizes( ::google::protobuf::internal::WireFormatLite::WriteStringToArray( 3, this->path(), target); } - + // optional string volume_name = 4; - if (_has_bit(2)) { + if (has_volume_name()) { ::google::protobuf::internal::WireFormat::VerifyUTF8String( this->volume_name().data(), this->volume_name().length(), ::google::protobuf::internal::WireFormat::SERIALIZE); @@ -15879,7 +15854,7 @@ void xtreemfs_replica_removeRequest::SerializeWithCachedSizes( ::google::protobuf::internal::WireFormatLite::WriteStringToArray( 4, this->volume_name(), target); } - + if (!unknown_fields().empty()) { target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray( unknown_fields(), target); @@ -15889,7 +15864,7 @@ void xtreemfs_replica_removeRequest::SerializeWithCachedSizes( int xtreemfs_replica_removeRequest::ByteSize() const { int total_size = 0; - + if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) { // optional string file_id = 1; if (has_file_id()) { @@ -15897,28 +15872,28 @@ int xtreemfs_replica_removeRequest::ByteSize() const { ::google::protobuf::internal::WireFormatLite::StringSize( this->file_id()); } - + // optional string path = 3; if (has_path()) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::StringSize( this->path()); } - + // optional string volume_name = 4; if (has_volume_name()) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::StringSize( this->volume_name()); } - + // required string osd_uuid = 2; if (has_osd_uuid()) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::StringSize( this->osd_uuid()); } - + } if (!unknown_fields().empty()) { total_size += @@ -15946,16 +15921,16 @@ void xtreemfs_replica_removeRequest::MergeFrom(const ::google::protobuf::Message void xtreemfs_replica_removeRequest::MergeFrom(const xtreemfs_replica_removeRequest& from) { GOOGLE_CHECK_NE(&from, this); if (from._has_bits_[0 / 32] & (0xffu << (0 % 32))) { - if (from._has_bit(0)) { + if (from.has_file_id()) { set_file_id(from.file_id()); } - if (from._has_bit(1)) { + if (from.has_path()) { set_path(from.path()); } - if (from._has_bit(2)) { + if (from.has_volume_name()) { set_volume_name(from.volume_name()); } - if (from._has_bit(3)) { + if (from.has_osd_uuid()) { set_osd_uuid(from.osd_uuid()); } } @@ -15976,7 +15951,7 @@ void xtreemfs_replica_removeRequest::CopyFrom(const xtreemfs_replica_removeReque bool xtreemfs_replica_removeRequest::IsInitialized() const { if ((_has_bits_[0] & 0x00000008) != 0x00000008) return false; - + return true; } @@ -16003,9 +15978,6 @@ void xtreemfs_replica_removeRequest::Swap(xtreemfs_replica_removeRequest* other) // =================================================================== -const ::std::string xtreemfs_restore_fileRequest::_default_file_path_; -const ::std::string xtreemfs_restore_fileRequest::_default_file_id_; -const ::std::string xtreemfs_restore_fileRequest::_default_osd_uuid_; #ifndef _MSC_VER const int xtreemfs_restore_fileRequest::kFilePathFieldNumber; const int xtreemfs_restore_fileRequest::kFileIdFieldNumber; @@ -16030,10 +16002,10 @@ xtreemfs_restore_fileRequest::xtreemfs_restore_fileRequest(const xtreemfs_restor void xtreemfs_restore_fileRequest::SharedCtor() { _cached_size_ = 0; - file_path_ = const_cast< ::std::string*>(&_default_file_path_); - file_id_ = const_cast< ::std::string*>(&_default_file_id_); + file_path_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + file_id_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); file_size_ = GOOGLE_ULONGLONG(0); - osd_uuid_ = const_cast< ::std::string*>(&_default_osd_uuid_); + osd_uuid_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); stripe_size_ = 0u; ::memset(_has_bits_, 0, sizeof(_has_bits_)); } @@ -16043,13 +16015,13 @@ xtreemfs_restore_fileRequest::~xtreemfs_restore_fileRequest() { } void xtreemfs_restore_fileRequest::SharedDtor() { - if (file_path_ != &_default_file_path_) { + if (file_path_ != &::google::protobuf::internal::kEmptyString) { delete file_path_; } - if (file_id_ != &_default_file_id_) { + if (file_id_ != &::google::protobuf::internal::kEmptyString) { delete file_id_; } - if (osd_uuid_ != &_default_osd_uuid_) { + if (osd_uuid_ != &::google::protobuf::internal::kEmptyString) { delete osd_uuid_; } if (this != default_instance_) { @@ -16067,7 +16039,8 @@ const ::google::protobuf::Descriptor* xtreemfs_restore_fileRequest::descriptor() } const xtreemfs_restore_fileRequest& xtreemfs_restore_fileRequest::default_instance() { - if (default_instance_ == NULL) protobuf_AddDesc_xtreemfs_2fMRC_2eproto(); return *default_instance_; + if (default_instance_ == NULL) protobuf_AddDesc_xtreemfs_2fMRC_2eproto(); + return *default_instance_; } xtreemfs_restore_fileRequest* xtreemfs_restore_fileRequest::default_instance_ = NULL; @@ -16078,19 +16051,19 @@ xtreemfs_restore_fileRequest* xtreemfs_restore_fileRequest::New() const { void xtreemfs_restore_fileRequest::Clear() { if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) { - if (_has_bit(0)) { - if (file_path_ != &_default_file_path_) { + if (has_file_path()) { + if (file_path_ != &::google::protobuf::internal::kEmptyString) { file_path_->clear(); } } - if (_has_bit(1)) { - if (file_id_ != &_default_file_id_) { + if (has_file_id()) { + if (file_id_ != &::google::protobuf::internal::kEmptyString) { file_id_->clear(); } } file_size_ = GOOGLE_ULONGLONG(0); - if (_has_bit(3)) { - if (osd_uuid_ != &_default_osd_uuid_) { + if (has_osd_uuid()) { + if (osd_uuid_ != &::google::protobuf::internal::kEmptyString) { osd_uuid_->clear(); } } @@ -16121,7 +16094,7 @@ bool xtreemfs_restore_fileRequest::MergePartialFromCodedStream( if (input->ExpectTag(18)) goto parse_file_id; break; } - + // required string file_id = 2; case 2: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -16138,7 +16111,7 @@ bool xtreemfs_restore_fileRequest::MergePartialFromCodedStream( if (input->ExpectTag(25)) goto parse_file_size; break; } - + // required fixed64 file_size = 3; case 3: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -16147,14 +16120,14 @@ bool xtreemfs_restore_fileRequest::MergePartialFromCodedStream( DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive< ::google::protobuf::uint64, ::google::protobuf::internal::WireFormatLite::TYPE_FIXED64>( input, &file_size_))); - _set_bit(2); + set_has_file_size(); } else { goto handle_uninterpreted; } if (input->ExpectTag(34)) goto parse_osd_uuid; break; } - + // required string osd_uuid = 4; case 4: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -16171,7 +16144,7 @@ bool xtreemfs_restore_fileRequest::MergePartialFromCodedStream( if (input->ExpectTag(45)) goto parse_stripe_size; break; } - + // required fixed32 stripe_size = 5; case 5: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -16180,14 +16153,14 @@ bool xtreemfs_restore_fileRequest::MergePartialFromCodedStream( DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive< ::google::protobuf::uint32, ::google::protobuf::internal::WireFormatLite::TYPE_FIXED32>( input, &stripe_size_))); - _set_bit(4); + set_has_stripe_size(); } else { goto handle_uninterpreted; } if (input->ExpectAtEnd()) return true; break; } - + default: { handle_uninterpreted: if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -16207,42 +16180,42 @@ bool xtreemfs_restore_fileRequest::MergePartialFromCodedStream( void xtreemfs_restore_fileRequest::SerializeWithCachedSizes( ::google::protobuf::io::CodedOutputStream* output) const { // required string file_path = 1; - if (_has_bit(0)) { + if (has_file_path()) { ::google::protobuf::internal::WireFormat::VerifyUTF8String( this->file_path().data(), this->file_path().length(), ::google::protobuf::internal::WireFormat::SERIALIZE); ::google::protobuf::internal::WireFormatLite::WriteString( 1, this->file_path(), output); } - + // required string file_id = 2; - if (_has_bit(1)) { + if (has_file_id()) { ::google::protobuf::internal::WireFormat::VerifyUTF8String( this->file_id().data(), this->file_id().length(), ::google::protobuf::internal::WireFormat::SERIALIZE); ::google::protobuf::internal::WireFormatLite::WriteString( 2, this->file_id(), output); } - + // required fixed64 file_size = 3; - if (_has_bit(2)) { + if (has_file_size()) { ::google::protobuf::internal::WireFormatLite::WriteFixed64(3, this->file_size(), output); } - + // required string osd_uuid = 4; - if (_has_bit(3)) { + if (has_osd_uuid()) { ::google::protobuf::internal::WireFormat::VerifyUTF8String( this->osd_uuid().data(), this->osd_uuid().length(), ::google::protobuf::internal::WireFormat::SERIALIZE); ::google::protobuf::internal::WireFormatLite::WriteString( 4, this->osd_uuid(), output); } - + // required fixed32 stripe_size = 5; - if (_has_bit(4)) { + if (has_stripe_size()) { ::google::protobuf::internal::WireFormatLite::WriteFixed32(5, this->stripe_size(), output); } - + if (!unknown_fields().empty()) { ::google::protobuf::internal::WireFormat::SerializeUnknownFields( unknown_fields(), output); @@ -16252,7 +16225,7 @@ void xtreemfs_restore_fileRequest::SerializeWithCachedSizes( ::google::protobuf::uint8* xtreemfs_restore_fileRequest::SerializeWithCachedSizesToArray( ::google::protobuf::uint8* target) const { // required string file_path = 1; - if (_has_bit(0)) { + if (has_file_path()) { ::google::protobuf::internal::WireFormat::VerifyUTF8String( this->file_path().data(), this->file_path().length(), ::google::protobuf::internal::WireFormat::SERIALIZE); @@ -16260,9 +16233,9 @@ void xtreemfs_restore_fileRequest::SerializeWithCachedSizes( ::google::protobuf::internal::WireFormatLite::WriteStringToArray( 1, this->file_path(), target); } - + // required string file_id = 2; - if (_has_bit(1)) { + if (has_file_id()) { ::google::protobuf::internal::WireFormat::VerifyUTF8String( this->file_id().data(), this->file_id().length(), ::google::protobuf::internal::WireFormat::SERIALIZE); @@ -16270,14 +16243,14 @@ void xtreemfs_restore_fileRequest::SerializeWithCachedSizes( ::google::protobuf::internal::WireFormatLite::WriteStringToArray( 2, this->file_id(), target); } - + // required fixed64 file_size = 3; - if (_has_bit(2)) { + if (has_file_size()) { target = ::google::protobuf::internal::WireFormatLite::WriteFixed64ToArray(3, this->file_size(), target); } - + // required string osd_uuid = 4; - if (_has_bit(3)) { + if (has_osd_uuid()) { ::google::protobuf::internal::WireFormat::VerifyUTF8String( this->osd_uuid().data(), this->osd_uuid().length(), ::google::protobuf::internal::WireFormat::SERIALIZE); @@ -16285,12 +16258,12 @@ void xtreemfs_restore_fileRequest::SerializeWithCachedSizes( ::google::protobuf::internal::WireFormatLite::WriteStringToArray( 4, this->osd_uuid(), target); } - + // required fixed32 stripe_size = 5; - if (_has_bit(4)) { + if (has_stripe_size()) { target = ::google::protobuf::internal::WireFormatLite::WriteFixed32ToArray(5, this->stripe_size(), target); } - + if (!unknown_fields().empty()) { target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray( unknown_fields(), target); @@ -16300,7 +16273,7 @@ void xtreemfs_restore_fileRequest::SerializeWithCachedSizes( int xtreemfs_restore_fileRequest::ByteSize() const { int total_size = 0; - + if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) { // required string file_path = 1; if (has_file_path()) { @@ -16308,31 +16281,31 @@ int xtreemfs_restore_fileRequest::ByteSize() const { ::google::protobuf::internal::WireFormatLite::StringSize( this->file_path()); } - + // required string file_id = 2; if (has_file_id()) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::StringSize( this->file_id()); } - + // required fixed64 file_size = 3; if (has_file_size()) { total_size += 1 + 8; } - + // required string osd_uuid = 4; if (has_osd_uuid()) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::StringSize( this->osd_uuid()); } - + // required fixed32 stripe_size = 5; if (has_stripe_size()) { total_size += 1 + 4; } - + } if (!unknown_fields().empty()) { total_size += @@ -16360,19 +16333,19 @@ void xtreemfs_restore_fileRequest::MergeFrom(const ::google::protobuf::Message& void xtreemfs_restore_fileRequest::MergeFrom(const xtreemfs_restore_fileRequest& from) { GOOGLE_CHECK_NE(&from, this); if (from._has_bits_[0 / 32] & (0xffu << (0 % 32))) { - if (from._has_bit(0)) { + if (from.has_file_path()) { set_file_path(from.file_path()); } - if (from._has_bit(1)) { + if (from.has_file_id()) { set_file_id(from.file_id()); } - if (from._has_bit(2)) { + if (from.has_file_size()) { set_file_size(from.file_size()); } - if (from._has_bit(3)) { + if (from.has_osd_uuid()) { set_osd_uuid(from.osd_uuid()); } - if (from._has_bit(4)) { + if (from.has_stripe_size()) { set_stripe_size(from.stripe_size()); } } @@ -16393,7 +16366,7 @@ void xtreemfs_restore_fileRequest::CopyFrom(const xtreemfs_restore_fileRequest& bool xtreemfs_restore_fileRequest::IsInitialized() const { if ((_has_bits_[0] & 0x0000001f) != 0x0000001f) return false; - + return true; } @@ -16421,7 +16394,6 @@ void xtreemfs_restore_fileRequest::Swap(xtreemfs_restore_fileRequest* other) { // =================================================================== -const ::std::string xtreemfs_rmvolRequest::_default_volume_name_; #ifndef _MSC_VER const int xtreemfs_rmvolRequest::kVolumeNameFieldNumber; #endif // !_MSC_VER @@ -16442,7 +16414,7 @@ xtreemfs_rmvolRequest::xtreemfs_rmvolRequest(const xtreemfs_rmvolRequest& from) void xtreemfs_rmvolRequest::SharedCtor() { _cached_size_ = 0; - volume_name_ = const_cast< ::std::string*>(&_default_volume_name_); + volume_name_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); ::memset(_has_bits_, 0, sizeof(_has_bits_)); } @@ -16451,7 +16423,7 @@ xtreemfs_rmvolRequest::~xtreemfs_rmvolRequest() { } void xtreemfs_rmvolRequest::SharedDtor() { - if (volume_name_ != &_default_volume_name_) { + if (volume_name_ != &::google::protobuf::internal::kEmptyString) { delete volume_name_; } if (this != default_instance_) { @@ -16469,7 +16441,8 @@ const ::google::protobuf::Descriptor* xtreemfs_rmvolRequest::descriptor() { } const xtreemfs_rmvolRequest& xtreemfs_rmvolRequest::default_instance() { - if (default_instance_ == NULL) protobuf_AddDesc_xtreemfs_2fMRC_2eproto(); return *default_instance_; + if (default_instance_ == NULL) protobuf_AddDesc_xtreemfs_2fMRC_2eproto(); + return *default_instance_; } xtreemfs_rmvolRequest* xtreemfs_rmvolRequest::default_instance_ = NULL; @@ -16480,8 +16453,8 @@ xtreemfs_rmvolRequest* xtreemfs_rmvolRequest::New() const { void xtreemfs_rmvolRequest::Clear() { if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) { - if (_has_bit(0)) { - if (volume_name_ != &_default_volume_name_) { + if (has_volume_name()) { + if (volume_name_ != &::google::protobuf::internal::kEmptyString) { volume_name_->clear(); } } @@ -16511,7 +16484,7 @@ bool xtreemfs_rmvolRequest::MergePartialFromCodedStream( if (input->ExpectAtEnd()) return true; break; } - + default: { handle_uninterpreted: if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -16531,14 +16504,14 @@ bool xtreemfs_rmvolRequest::MergePartialFromCodedStream( void xtreemfs_rmvolRequest::SerializeWithCachedSizes( ::google::protobuf::io::CodedOutputStream* output) const { // required string volume_name = 1; - if (_has_bit(0)) { + if (has_volume_name()) { ::google::protobuf::internal::WireFormat::VerifyUTF8String( this->volume_name().data(), this->volume_name().length(), ::google::protobuf::internal::WireFormat::SERIALIZE); ::google::protobuf::internal::WireFormatLite::WriteString( 1, this->volume_name(), output); } - + if (!unknown_fields().empty()) { ::google::protobuf::internal::WireFormat::SerializeUnknownFields( unknown_fields(), output); @@ -16548,7 +16521,7 @@ void xtreemfs_rmvolRequest::SerializeWithCachedSizes( ::google::protobuf::uint8* xtreemfs_rmvolRequest::SerializeWithCachedSizesToArray( ::google::protobuf::uint8* target) const { // required string volume_name = 1; - if (_has_bit(0)) { + if (has_volume_name()) { ::google::protobuf::internal::WireFormat::VerifyUTF8String( this->volume_name().data(), this->volume_name().length(), ::google::protobuf::internal::WireFormat::SERIALIZE); @@ -16556,7 +16529,7 @@ void xtreemfs_rmvolRequest::SerializeWithCachedSizes( ::google::protobuf::internal::WireFormatLite::WriteStringToArray( 1, this->volume_name(), target); } - + if (!unknown_fields().empty()) { target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray( unknown_fields(), target); @@ -16566,7 +16539,7 @@ void xtreemfs_rmvolRequest::SerializeWithCachedSizes( int xtreemfs_rmvolRequest::ByteSize() const { int total_size = 0; - + if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) { // required string volume_name = 1; if (has_volume_name()) { @@ -16574,7 +16547,7 @@ int xtreemfs_rmvolRequest::ByteSize() const { ::google::protobuf::internal::WireFormatLite::StringSize( this->volume_name()); } - + } if (!unknown_fields().empty()) { total_size += @@ -16602,7 +16575,7 @@ void xtreemfs_rmvolRequest::MergeFrom(const ::google::protobuf::Message& from) { void xtreemfs_rmvolRequest::MergeFrom(const xtreemfs_rmvolRequest& from) { GOOGLE_CHECK_NE(&from, this); if (from._has_bits_[0 / 32] & (0xffu << (0 % 32))) { - if (from._has_bit(0)) { + if (from.has_volume_name()) { set_volume_name(from.volume_name()); } } @@ -16623,7 +16596,7 @@ void xtreemfs_rmvolRequest::CopyFrom(const xtreemfs_rmvolRequest& from) { bool xtreemfs_rmvolRequest::IsInitialized() const { if ((_has_bits_[0] & 0x00000001) != 0x00000001) return false; - + return true; } @@ -16703,7 +16676,8 @@ const ::google::protobuf::Descriptor* xtreemfs_update_file_sizeRequest::descript } const xtreemfs_update_file_sizeRequest& xtreemfs_update_file_sizeRequest::default_instance() { - if (default_instance_ == NULL) protobuf_AddDesc_xtreemfs_2fMRC_2eproto(); return *default_instance_; + if (default_instance_ == NULL) protobuf_AddDesc_xtreemfs_2fMRC_2eproto(); + return *default_instance_; } xtreemfs_update_file_sizeRequest* xtreemfs_update_file_sizeRequest::default_instance_ = NULL; @@ -16714,14 +16688,14 @@ xtreemfs_update_file_sizeRequest* xtreemfs_update_file_sizeRequest::New() const void xtreemfs_update_file_sizeRequest::Clear() { if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) { - if (_has_bit(0)) { + if (has_xcap()) { if (xcap_ != NULL) xcap_->::xtreemfs::pbrpc::XCap::Clear(); } - if (_has_bit(1)) { + if (has_osd_write_response()) { if (osd_write_response_ != NULL) osd_write_response_->::xtreemfs::pbrpc::OSDWriteResponse::Clear(); } close_file_ = false; - if (_has_bit(3)) { + if (has_coordinates()) { if (coordinates_ != NULL) coordinates_->::xtreemfs::pbrpc::VivaldiCoordinates::Clear(); } } @@ -16747,7 +16721,7 @@ bool xtreemfs_update_file_sizeRequest::MergePartialFromCodedStream( if (input->ExpectTag(18)) goto parse_osd_write_response; break; } - + // required .xtreemfs.pbrpc.OSDWriteResponse osd_write_response = 2; case 2: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -16761,7 +16735,7 @@ bool xtreemfs_update_file_sizeRequest::MergePartialFromCodedStream( if (input->ExpectTag(24)) goto parse_close_file; break; } - + // optional bool close_file = 3; case 3: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -16770,14 +16744,14 @@ bool xtreemfs_update_file_sizeRequest::MergePartialFromCodedStream( DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive< bool, ::google::protobuf::internal::WireFormatLite::TYPE_BOOL>( input, &close_file_))); - _set_bit(2); + set_has_close_file(); } else { goto handle_uninterpreted; } if (input->ExpectTag(34)) goto parse_coordinates; break; } - + // optional .xtreemfs.pbrpc.VivaldiCoordinates coordinates = 4; case 4: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -16791,7 +16765,7 @@ bool xtreemfs_update_file_sizeRequest::MergePartialFromCodedStream( if (input->ExpectAtEnd()) return true; break; } - + default: { handle_uninterpreted: if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -16811,28 +16785,28 @@ bool xtreemfs_update_file_sizeRequest::MergePartialFromCodedStream( void xtreemfs_update_file_sizeRequest::SerializeWithCachedSizes( ::google::protobuf::io::CodedOutputStream* output) const { // required .xtreemfs.pbrpc.XCap xcap = 1; - if (_has_bit(0)) { + if (has_xcap()) { ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray( 1, this->xcap(), output); } - + // required .xtreemfs.pbrpc.OSDWriteResponse osd_write_response = 2; - if (_has_bit(1)) { + if (has_osd_write_response()) { ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray( 2, this->osd_write_response(), output); } - + // optional bool close_file = 3; - if (_has_bit(2)) { + if (has_close_file()) { ::google::protobuf::internal::WireFormatLite::WriteBool(3, this->close_file(), output); } - + // optional .xtreemfs.pbrpc.VivaldiCoordinates coordinates = 4; - if (_has_bit(3)) { + if (has_coordinates()) { ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray( 4, this->coordinates(), output); } - + if (!unknown_fields().empty()) { ::google::protobuf::internal::WireFormat::SerializeUnknownFields( unknown_fields(), output); @@ -16842,31 +16816,31 @@ void xtreemfs_update_file_sizeRequest::SerializeWithCachedSizes( ::google::protobuf::uint8* xtreemfs_update_file_sizeRequest::SerializeWithCachedSizesToArray( ::google::protobuf::uint8* target) const { // required .xtreemfs.pbrpc.XCap xcap = 1; - if (_has_bit(0)) { + if (has_xcap()) { target = ::google::protobuf::internal::WireFormatLite:: WriteMessageNoVirtualToArray( 1, this->xcap(), target); } - + // required .xtreemfs.pbrpc.OSDWriteResponse osd_write_response = 2; - if (_has_bit(1)) { + if (has_osd_write_response()) { target = ::google::protobuf::internal::WireFormatLite:: WriteMessageNoVirtualToArray( 2, this->osd_write_response(), target); } - + // optional bool close_file = 3; - if (_has_bit(2)) { + if (has_close_file()) { target = ::google::protobuf::internal::WireFormatLite::WriteBoolToArray(3, this->close_file(), target); } - + // optional .xtreemfs.pbrpc.VivaldiCoordinates coordinates = 4; - if (_has_bit(3)) { + if (has_coordinates()) { target = ::google::protobuf::internal::WireFormatLite:: WriteMessageNoVirtualToArray( 4, this->coordinates(), target); } - + if (!unknown_fields().empty()) { target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray( unknown_fields(), target); @@ -16876,7 +16850,7 @@ void xtreemfs_update_file_sizeRequest::SerializeWithCachedSizes( int xtreemfs_update_file_sizeRequest::ByteSize() const { int total_size = 0; - + if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) { // required .xtreemfs.pbrpc.XCap xcap = 1; if (has_xcap()) { @@ -16884,26 +16858,26 @@ int xtreemfs_update_file_sizeRequest::ByteSize() const { ::google::protobuf::internal::WireFormatLite::MessageSizeNoVirtual( this->xcap()); } - + // required .xtreemfs.pbrpc.OSDWriteResponse osd_write_response = 2; if (has_osd_write_response()) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::MessageSizeNoVirtual( this->osd_write_response()); } - + // optional bool close_file = 3; if (has_close_file()) { total_size += 1 + 1; } - + // optional .xtreemfs.pbrpc.VivaldiCoordinates coordinates = 4; if (has_coordinates()) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::MessageSizeNoVirtual( this->coordinates()); } - + } if (!unknown_fields().empty()) { total_size += @@ -16931,16 +16905,16 @@ void xtreemfs_update_file_sizeRequest::MergeFrom(const ::google::protobuf::Messa void xtreemfs_update_file_sizeRequest::MergeFrom(const xtreemfs_update_file_sizeRequest& from) { GOOGLE_CHECK_NE(&from, this); if (from._has_bits_[0 / 32] & (0xffu << (0 % 32))) { - if (from._has_bit(0)) { + if (from.has_xcap()) { mutable_xcap()->::xtreemfs::pbrpc::XCap::MergeFrom(from.xcap()); } - if (from._has_bit(1)) { + if (from.has_osd_write_response()) { mutable_osd_write_response()->::xtreemfs::pbrpc::OSDWriteResponse::MergeFrom(from.osd_write_response()); } - if (from._has_bit(2)) { + if (from.has_close_file()) { set_close_file(from.close_file()); } - if (from._has_bit(3)) { + if (from.has_coordinates()) { mutable_coordinates()->::xtreemfs::pbrpc::VivaldiCoordinates::MergeFrom(from.coordinates()); } } @@ -16961,7 +16935,7 @@ void xtreemfs_update_file_sizeRequest::CopyFrom(const xtreemfs_update_file_sizeR bool xtreemfs_update_file_sizeRequest::IsInitialized() const { if ((_has_bits_[0] & 0x00000003) != 0x00000003) return false; - + if (has_xcap()) { if (!this->xcap().IsInitialized()) return false; } @@ -16994,8 +16968,6 @@ void xtreemfs_update_file_sizeRequest::Swap(xtreemfs_update_file_sizeRequest* ot // =================================================================== -const ::std::string xtreemfs_set_replica_update_policyRequest::_default_file_id_; -const ::std::string xtreemfs_set_replica_update_policyRequest::_default_update_policy_; #ifndef _MSC_VER const int xtreemfs_set_replica_update_policyRequest::kFileIdFieldNumber; const int xtreemfs_set_replica_update_policyRequest::kUpdatePolicyFieldNumber; @@ -17017,8 +16989,8 @@ xtreemfs_set_replica_update_policyRequest::xtreemfs_set_replica_update_policyReq void xtreemfs_set_replica_update_policyRequest::SharedCtor() { _cached_size_ = 0; - file_id_ = const_cast< ::std::string*>(&_default_file_id_); - update_policy_ = const_cast< ::std::string*>(&_default_update_policy_); + file_id_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + update_policy_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); ::memset(_has_bits_, 0, sizeof(_has_bits_)); } @@ -17027,10 +16999,10 @@ xtreemfs_set_replica_update_policyRequest::~xtreemfs_set_replica_update_policyRe } void xtreemfs_set_replica_update_policyRequest::SharedDtor() { - if (file_id_ != &_default_file_id_) { + if (file_id_ != &::google::protobuf::internal::kEmptyString) { delete file_id_; } - if (update_policy_ != &_default_update_policy_) { + if (update_policy_ != &::google::protobuf::internal::kEmptyString) { delete update_policy_; } if (this != default_instance_) { @@ -17048,7 +17020,8 @@ const ::google::protobuf::Descriptor* xtreemfs_set_replica_update_policyRequest: } const xtreemfs_set_replica_update_policyRequest& xtreemfs_set_replica_update_policyRequest::default_instance() { - if (default_instance_ == NULL) protobuf_AddDesc_xtreemfs_2fMRC_2eproto(); return *default_instance_; + if (default_instance_ == NULL) protobuf_AddDesc_xtreemfs_2fMRC_2eproto(); + return *default_instance_; } xtreemfs_set_replica_update_policyRequest* xtreemfs_set_replica_update_policyRequest::default_instance_ = NULL; @@ -17059,13 +17032,13 @@ xtreemfs_set_replica_update_policyRequest* xtreemfs_set_replica_update_policyReq void xtreemfs_set_replica_update_policyRequest::Clear() { if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) { - if (_has_bit(0)) { - if (file_id_ != &_default_file_id_) { + if (has_file_id()) { + if (file_id_ != &::google::protobuf::internal::kEmptyString) { file_id_->clear(); } } - if (_has_bit(1)) { - if (update_policy_ != &_default_update_policy_) { + if (has_update_policy()) { + if (update_policy_ != &::google::protobuf::internal::kEmptyString) { update_policy_->clear(); } } @@ -17095,7 +17068,7 @@ bool xtreemfs_set_replica_update_policyRequest::MergePartialFromCodedStream( if (input->ExpectTag(18)) goto parse_update_policy; break; } - + // required string update_policy = 2; case 2: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -17112,7 +17085,7 @@ bool xtreemfs_set_replica_update_policyRequest::MergePartialFromCodedStream( if (input->ExpectAtEnd()) return true; break; } - + default: { handle_uninterpreted: if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -17132,23 +17105,23 @@ bool xtreemfs_set_replica_update_policyRequest::MergePartialFromCodedStream( void xtreemfs_set_replica_update_policyRequest::SerializeWithCachedSizes( ::google::protobuf::io::CodedOutputStream* output) const { // required string file_id = 1; - if (_has_bit(0)) { + if (has_file_id()) { ::google::protobuf::internal::WireFormat::VerifyUTF8String( this->file_id().data(), this->file_id().length(), ::google::protobuf::internal::WireFormat::SERIALIZE); ::google::protobuf::internal::WireFormatLite::WriteString( 1, this->file_id(), output); } - + // required string update_policy = 2; - if (_has_bit(1)) { + if (has_update_policy()) { ::google::protobuf::internal::WireFormat::VerifyUTF8String( this->update_policy().data(), this->update_policy().length(), ::google::protobuf::internal::WireFormat::SERIALIZE); ::google::protobuf::internal::WireFormatLite::WriteString( 2, this->update_policy(), output); } - + if (!unknown_fields().empty()) { ::google::protobuf::internal::WireFormat::SerializeUnknownFields( unknown_fields(), output); @@ -17158,7 +17131,7 @@ void xtreemfs_set_replica_update_policyRequest::SerializeWithCachedSizes( ::google::protobuf::uint8* xtreemfs_set_replica_update_policyRequest::SerializeWithCachedSizesToArray( ::google::protobuf::uint8* target) const { // required string file_id = 1; - if (_has_bit(0)) { + if (has_file_id()) { ::google::protobuf::internal::WireFormat::VerifyUTF8String( this->file_id().data(), this->file_id().length(), ::google::protobuf::internal::WireFormat::SERIALIZE); @@ -17166,9 +17139,9 @@ void xtreemfs_set_replica_update_policyRequest::SerializeWithCachedSizes( ::google::protobuf::internal::WireFormatLite::WriteStringToArray( 1, this->file_id(), target); } - + // required string update_policy = 2; - if (_has_bit(1)) { + if (has_update_policy()) { ::google::protobuf::internal::WireFormat::VerifyUTF8String( this->update_policy().data(), this->update_policy().length(), ::google::protobuf::internal::WireFormat::SERIALIZE); @@ -17176,7 +17149,7 @@ void xtreemfs_set_replica_update_policyRequest::SerializeWithCachedSizes( ::google::protobuf::internal::WireFormatLite::WriteStringToArray( 2, this->update_policy(), target); } - + if (!unknown_fields().empty()) { target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray( unknown_fields(), target); @@ -17186,7 +17159,7 @@ void xtreemfs_set_replica_update_policyRequest::SerializeWithCachedSizes( int xtreemfs_set_replica_update_policyRequest::ByteSize() const { int total_size = 0; - + if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) { // required string file_id = 1; if (has_file_id()) { @@ -17194,14 +17167,14 @@ int xtreemfs_set_replica_update_policyRequest::ByteSize() const { ::google::protobuf::internal::WireFormatLite::StringSize( this->file_id()); } - + // required string update_policy = 2; if (has_update_policy()) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::StringSize( this->update_policy()); } - + } if (!unknown_fields().empty()) { total_size += @@ -17229,10 +17202,10 @@ void xtreemfs_set_replica_update_policyRequest::MergeFrom(const ::google::protob void xtreemfs_set_replica_update_policyRequest::MergeFrom(const xtreemfs_set_replica_update_policyRequest& from) { GOOGLE_CHECK_NE(&from, this); if (from._has_bits_[0 / 32] & (0xffu << (0 % 32))) { - if (from._has_bit(0)) { + if (from.has_file_id()) { set_file_id(from.file_id()); } - if (from._has_bit(1)) { + if (from.has_update_policy()) { set_update_policy(from.update_policy()); } } @@ -17253,7 +17226,7 @@ void xtreemfs_set_replica_update_policyRequest::CopyFrom(const xtreemfs_set_repl bool xtreemfs_set_replica_update_policyRequest::IsInitialized() const { if ((_has_bits_[0] & 0x00000003) != 0x00000003) return false; - + return true; } @@ -17278,7 +17251,6 @@ void xtreemfs_set_replica_update_policyRequest::Swap(xtreemfs_set_replica_update // =================================================================== -const ::std::string xtreemfs_set_replica_update_policyResponse::_default_old_update_policy_; #ifndef _MSC_VER const int xtreemfs_set_replica_update_policyResponse::kOldUpdatePolicyFieldNumber; #endif // !_MSC_VER @@ -17299,7 +17271,7 @@ xtreemfs_set_replica_update_policyResponse::xtreemfs_set_replica_update_policyRe void xtreemfs_set_replica_update_policyResponse::SharedCtor() { _cached_size_ = 0; - old_update_policy_ = const_cast< ::std::string*>(&_default_old_update_policy_); + old_update_policy_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); ::memset(_has_bits_, 0, sizeof(_has_bits_)); } @@ -17308,7 +17280,7 @@ xtreemfs_set_replica_update_policyResponse::~xtreemfs_set_replica_update_policyR } void xtreemfs_set_replica_update_policyResponse::SharedDtor() { - if (old_update_policy_ != &_default_old_update_policy_) { + if (old_update_policy_ != &::google::protobuf::internal::kEmptyString) { delete old_update_policy_; } if (this != default_instance_) { @@ -17326,7 +17298,8 @@ const ::google::protobuf::Descriptor* xtreemfs_set_replica_update_policyResponse } const xtreemfs_set_replica_update_policyResponse& xtreemfs_set_replica_update_policyResponse::default_instance() { - if (default_instance_ == NULL) protobuf_AddDesc_xtreemfs_2fMRC_2eproto(); return *default_instance_; + if (default_instance_ == NULL) protobuf_AddDesc_xtreemfs_2fMRC_2eproto(); + return *default_instance_; } xtreemfs_set_replica_update_policyResponse* xtreemfs_set_replica_update_policyResponse::default_instance_ = NULL; @@ -17337,8 +17310,8 @@ xtreemfs_set_replica_update_policyResponse* xtreemfs_set_replica_update_policyRe void xtreemfs_set_replica_update_policyResponse::Clear() { if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) { - if (_has_bit(0)) { - if (old_update_policy_ != &_default_old_update_policy_) { + if (has_old_update_policy()) { + if (old_update_policy_ != &::google::protobuf::internal::kEmptyString) { old_update_policy_->clear(); } } @@ -17368,7 +17341,7 @@ bool xtreemfs_set_replica_update_policyResponse::MergePartialFromCodedStream( if (input->ExpectAtEnd()) return true; break; } - + default: { handle_uninterpreted: if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -17388,14 +17361,14 @@ bool xtreemfs_set_replica_update_policyResponse::MergePartialFromCodedStream( void xtreemfs_set_replica_update_policyResponse::SerializeWithCachedSizes( ::google::protobuf::io::CodedOutputStream* output) const { // required string old_update_policy = 1; - if (_has_bit(0)) { + if (has_old_update_policy()) { ::google::protobuf::internal::WireFormat::VerifyUTF8String( this->old_update_policy().data(), this->old_update_policy().length(), ::google::protobuf::internal::WireFormat::SERIALIZE); ::google::protobuf::internal::WireFormatLite::WriteString( 1, this->old_update_policy(), output); } - + if (!unknown_fields().empty()) { ::google::protobuf::internal::WireFormat::SerializeUnknownFields( unknown_fields(), output); @@ -17405,7 +17378,7 @@ void xtreemfs_set_replica_update_policyResponse::SerializeWithCachedSizes( ::google::protobuf::uint8* xtreemfs_set_replica_update_policyResponse::SerializeWithCachedSizesToArray( ::google::protobuf::uint8* target) const { // required string old_update_policy = 1; - if (_has_bit(0)) { + if (has_old_update_policy()) { ::google::protobuf::internal::WireFormat::VerifyUTF8String( this->old_update_policy().data(), this->old_update_policy().length(), ::google::protobuf::internal::WireFormat::SERIALIZE); @@ -17413,7 +17386,7 @@ void xtreemfs_set_replica_update_policyResponse::SerializeWithCachedSizes( ::google::protobuf::internal::WireFormatLite::WriteStringToArray( 1, this->old_update_policy(), target); } - + if (!unknown_fields().empty()) { target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray( unknown_fields(), target); @@ -17423,7 +17396,7 @@ void xtreemfs_set_replica_update_policyResponse::SerializeWithCachedSizes( int xtreemfs_set_replica_update_policyResponse::ByteSize() const { int total_size = 0; - + if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) { // required string old_update_policy = 1; if (has_old_update_policy()) { @@ -17431,7 +17404,7 @@ int xtreemfs_set_replica_update_policyResponse::ByteSize() const { ::google::protobuf::internal::WireFormatLite::StringSize( this->old_update_policy()); } - + } if (!unknown_fields().empty()) { total_size += @@ -17459,7 +17432,7 @@ void xtreemfs_set_replica_update_policyResponse::MergeFrom(const ::google::proto void xtreemfs_set_replica_update_policyResponse::MergeFrom(const xtreemfs_set_replica_update_policyResponse& from) { GOOGLE_CHECK_NE(&from, this); if (from._has_bits_[0 / 32] & (0xffu << (0 % 32))) { - if (from._has_bit(0)) { + if (from.has_old_update_policy()) { set_old_update_policy(from.old_update_policy()); } } @@ -17480,7 +17453,7 @@ void xtreemfs_set_replica_update_policyResponse::CopyFrom(const xtreemfs_set_rep bool xtreemfs_set_replica_update_policyResponse::IsInitialized() const { if ((_has_bits_[0] & 0x00000001) != 0x00000001) return false; - + return true; } @@ -17504,7 +17477,6 @@ void xtreemfs_set_replica_update_policyResponse::Swap(xtreemfs_set_replica_updat // =================================================================== -const ::std::string xtreemfs_set_read_only_xattrRequest::_default_file_id_; #ifndef _MSC_VER const int xtreemfs_set_read_only_xattrRequest::kFileIdFieldNumber; const int xtreemfs_set_read_only_xattrRequest::kValueFieldNumber; @@ -17526,7 +17498,7 @@ xtreemfs_set_read_only_xattrRequest::xtreemfs_set_read_only_xattrRequest(const x void xtreemfs_set_read_only_xattrRequest::SharedCtor() { _cached_size_ = 0; - file_id_ = const_cast< ::std::string*>(&_default_file_id_); + file_id_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); value_ = false; ::memset(_has_bits_, 0, sizeof(_has_bits_)); } @@ -17536,7 +17508,7 @@ xtreemfs_set_read_only_xattrRequest::~xtreemfs_set_read_only_xattrRequest() { } void xtreemfs_set_read_only_xattrRequest::SharedDtor() { - if (file_id_ != &_default_file_id_) { + if (file_id_ != &::google::protobuf::internal::kEmptyString) { delete file_id_; } if (this != default_instance_) { @@ -17554,7 +17526,8 @@ const ::google::protobuf::Descriptor* xtreemfs_set_read_only_xattrRequest::descr } const xtreemfs_set_read_only_xattrRequest& xtreemfs_set_read_only_xattrRequest::default_instance() { - if (default_instance_ == NULL) protobuf_AddDesc_xtreemfs_2fMRC_2eproto(); return *default_instance_; + if (default_instance_ == NULL) protobuf_AddDesc_xtreemfs_2fMRC_2eproto(); + return *default_instance_; } xtreemfs_set_read_only_xattrRequest* xtreemfs_set_read_only_xattrRequest::default_instance_ = NULL; @@ -17565,8 +17538,8 @@ xtreemfs_set_read_only_xattrRequest* xtreemfs_set_read_only_xattrRequest::New() void xtreemfs_set_read_only_xattrRequest::Clear() { if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) { - if (_has_bit(0)) { - if (file_id_ != &_default_file_id_) { + if (has_file_id()) { + if (file_id_ != &::google::protobuf::internal::kEmptyString) { file_id_->clear(); } } @@ -17597,7 +17570,7 @@ bool xtreemfs_set_read_only_xattrRequest::MergePartialFromCodedStream( if (input->ExpectTag(16)) goto parse_value; break; } - + // required bool value = 2; case 2: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -17606,14 +17579,14 @@ bool xtreemfs_set_read_only_xattrRequest::MergePartialFromCodedStream( DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive< bool, ::google::protobuf::internal::WireFormatLite::TYPE_BOOL>( input, &value_))); - _set_bit(1); + set_has_value(); } else { goto handle_uninterpreted; } if (input->ExpectAtEnd()) return true; break; } - + default: { handle_uninterpreted: if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -17633,19 +17606,19 @@ bool xtreemfs_set_read_only_xattrRequest::MergePartialFromCodedStream( void xtreemfs_set_read_only_xattrRequest::SerializeWithCachedSizes( ::google::protobuf::io::CodedOutputStream* output) const { // required string file_id = 1; - if (_has_bit(0)) { + if (has_file_id()) { ::google::protobuf::internal::WireFormat::VerifyUTF8String( this->file_id().data(), this->file_id().length(), ::google::protobuf::internal::WireFormat::SERIALIZE); ::google::protobuf::internal::WireFormatLite::WriteString( 1, this->file_id(), output); } - + // required bool value = 2; - if (_has_bit(1)) { + if (has_value()) { ::google::protobuf::internal::WireFormatLite::WriteBool(2, this->value(), output); } - + if (!unknown_fields().empty()) { ::google::protobuf::internal::WireFormat::SerializeUnknownFields( unknown_fields(), output); @@ -17655,7 +17628,7 @@ void xtreemfs_set_read_only_xattrRequest::SerializeWithCachedSizes( ::google::protobuf::uint8* xtreemfs_set_read_only_xattrRequest::SerializeWithCachedSizesToArray( ::google::protobuf::uint8* target) const { // required string file_id = 1; - if (_has_bit(0)) { + if (has_file_id()) { ::google::protobuf::internal::WireFormat::VerifyUTF8String( this->file_id().data(), this->file_id().length(), ::google::protobuf::internal::WireFormat::SERIALIZE); @@ -17663,12 +17636,12 @@ void xtreemfs_set_read_only_xattrRequest::SerializeWithCachedSizes( ::google::protobuf::internal::WireFormatLite::WriteStringToArray( 1, this->file_id(), target); } - + // required bool value = 2; - if (_has_bit(1)) { + if (has_value()) { target = ::google::protobuf::internal::WireFormatLite::WriteBoolToArray(2, this->value(), target); } - + if (!unknown_fields().empty()) { target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray( unknown_fields(), target); @@ -17678,7 +17651,7 @@ void xtreemfs_set_read_only_xattrRequest::SerializeWithCachedSizes( int xtreemfs_set_read_only_xattrRequest::ByteSize() const { int total_size = 0; - + if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) { // required string file_id = 1; if (has_file_id()) { @@ -17686,12 +17659,12 @@ int xtreemfs_set_read_only_xattrRequest::ByteSize() const { ::google::protobuf::internal::WireFormatLite::StringSize( this->file_id()); } - + // required bool value = 2; if (has_value()) { total_size += 1 + 1; } - + } if (!unknown_fields().empty()) { total_size += @@ -17719,10 +17692,10 @@ void xtreemfs_set_read_only_xattrRequest::MergeFrom(const ::google::protobuf::Me void xtreemfs_set_read_only_xattrRequest::MergeFrom(const xtreemfs_set_read_only_xattrRequest& from) { GOOGLE_CHECK_NE(&from, this); if (from._has_bits_[0 / 32] & (0xffu << (0 % 32))) { - if (from._has_bit(0)) { + if (from.has_file_id()) { set_file_id(from.file_id()); } - if (from._has_bit(1)) { + if (from.has_value()) { set_value(from.value()); } } @@ -17743,7 +17716,7 @@ void xtreemfs_set_read_only_xattrRequest::CopyFrom(const xtreemfs_set_read_only_ bool xtreemfs_set_read_only_xattrRequest::IsInitialized() const { if ((_has_bits_[0] & 0x00000003) != 0x00000003) return false; - + return true; } @@ -17812,7 +17785,8 @@ const ::google::protobuf::Descriptor* xtreemfs_set_read_only_xattrResponse::desc } const xtreemfs_set_read_only_xattrResponse& xtreemfs_set_read_only_xattrResponse::default_instance() { - if (default_instance_ == NULL) protobuf_AddDesc_xtreemfs_2fMRC_2eproto(); return *default_instance_; + if (default_instance_ == NULL) protobuf_AddDesc_xtreemfs_2fMRC_2eproto(); + return *default_instance_; } xtreemfs_set_read_only_xattrResponse* xtreemfs_set_read_only_xattrResponse::default_instance_ = NULL; @@ -17842,14 +17816,14 @@ bool xtreemfs_set_read_only_xattrResponse::MergePartialFromCodedStream( DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive< bool, ::google::protobuf::internal::WireFormatLite::TYPE_BOOL>( input, &was_set_))); - _set_bit(0); + set_has_was_set(); } else { goto handle_uninterpreted; } if (input->ExpectAtEnd()) return true; break; } - + default: { handle_uninterpreted: if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -17869,10 +17843,10 @@ bool xtreemfs_set_read_only_xattrResponse::MergePartialFromCodedStream( void xtreemfs_set_read_only_xattrResponse::SerializeWithCachedSizes( ::google::protobuf::io::CodedOutputStream* output) const { // required bool was_set = 1; - if (_has_bit(0)) { + if (has_was_set()) { ::google::protobuf::internal::WireFormatLite::WriteBool(1, this->was_set(), output); } - + if (!unknown_fields().empty()) { ::google::protobuf::internal::WireFormat::SerializeUnknownFields( unknown_fields(), output); @@ -17882,10 +17856,10 @@ void xtreemfs_set_read_only_xattrResponse::SerializeWithCachedSizes( ::google::protobuf::uint8* xtreemfs_set_read_only_xattrResponse::SerializeWithCachedSizesToArray( ::google::protobuf::uint8* target) const { // required bool was_set = 1; - if (_has_bit(0)) { + if (has_was_set()) { target = ::google::protobuf::internal::WireFormatLite::WriteBoolToArray(1, this->was_set(), target); } - + if (!unknown_fields().empty()) { target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray( unknown_fields(), target); @@ -17895,13 +17869,13 @@ void xtreemfs_set_read_only_xattrResponse::SerializeWithCachedSizes( int xtreemfs_set_read_only_xattrResponse::ByteSize() const { int total_size = 0; - + if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) { // required bool was_set = 1; if (has_was_set()) { total_size += 1 + 1; } - + } if (!unknown_fields().empty()) { total_size += @@ -17929,7 +17903,7 @@ void xtreemfs_set_read_only_xattrResponse::MergeFrom(const ::google::protobuf::M void xtreemfs_set_read_only_xattrResponse::MergeFrom(const xtreemfs_set_read_only_xattrResponse& from) { GOOGLE_CHECK_NE(&from, this); if (from._has_bits_[0 / 32] & (0xffu << (0 % 32))) { - if (from._has_bit(0)) { + if (from.has_was_set()) { set_was_set(from.was_set()); } } @@ -17950,7 +17924,7 @@ void xtreemfs_set_read_only_xattrResponse::CopyFrom(const xtreemfs_set_read_only bool xtreemfs_set_read_only_xattrResponse::IsInitialized() const { if ((_has_bits_[0] & 0x00000001) != 0x00000001) return false; - + return true; } @@ -17974,7 +17948,6 @@ void xtreemfs_set_read_only_xattrResponse::Swap(xtreemfs_set_read_only_xattrResp // =================================================================== -const ::std::string xtreemfs_get_file_credentialsRequest::_default_file_id_; #ifndef _MSC_VER const int xtreemfs_get_file_credentialsRequest::kFileIdFieldNumber; #endif // !_MSC_VER @@ -17995,7 +17968,7 @@ xtreemfs_get_file_credentialsRequest::xtreemfs_get_file_credentialsRequest(const void xtreemfs_get_file_credentialsRequest::SharedCtor() { _cached_size_ = 0; - file_id_ = const_cast< ::std::string*>(&_default_file_id_); + file_id_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); ::memset(_has_bits_, 0, sizeof(_has_bits_)); } @@ -18004,7 +17977,7 @@ xtreemfs_get_file_credentialsRequest::~xtreemfs_get_file_credentialsRequest() { } void xtreemfs_get_file_credentialsRequest::SharedDtor() { - if (file_id_ != &_default_file_id_) { + if (file_id_ != &::google::protobuf::internal::kEmptyString) { delete file_id_; } if (this != default_instance_) { @@ -18022,7 +17995,8 @@ const ::google::protobuf::Descriptor* xtreemfs_get_file_credentialsRequest::desc } const xtreemfs_get_file_credentialsRequest& xtreemfs_get_file_credentialsRequest::default_instance() { - if (default_instance_ == NULL) protobuf_AddDesc_xtreemfs_2fMRC_2eproto(); return *default_instance_; + if (default_instance_ == NULL) protobuf_AddDesc_xtreemfs_2fMRC_2eproto(); + return *default_instance_; } xtreemfs_get_file_credentialsRequest* xtreemfs_get_file_credentialsRequest::default_instance_ = NULL; @@ -18033,8 +18007,8 @@ xtreemfs_get_file_credentialsRequest* xtreemfs_get_file_credentialsRequest::New( void xtreemfs_get_file_credentialsRequest::Clear() { if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) { - if (_has_bit(0)) { - if (file_id_ != &_default_file_id_) { + if (has_file_id()) { + if (file_id_ != &::google::protobuf::internal::kEmptyString) { file_id_->clear(); } } @@ -18064,7 +18038,7 @@ bool xtreemfs_get_file_credentialsRequest::MergePartialFromCodedStream( if (input->ExpectAtEnd()) return true; break; } - + default: { handle_uninterpreted: if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -18084,14 +18058,14 @@ bool xtreemfs_get_file_credentialsRequest::MergePartialFromCodedStream( void xtreemfs_get_file_credentialsRequest::SerializeWithCachedSizes( ::google::protobuf::io::CodedOutputStream* output) const { // required string file_id = 1; - if (_has_bit(0)) { + if (has_file_id()) { ::google::protobuf::internal::WireFormat::VerifyUTF8String( this->file_id().data(), this->file_id().length(), ::google::protobuf::internal::WireFormat::SERIALIZE); ::google::protobuf::internal::WireFormatLite::WriteString( 1, this->file_id(), output); } - + if (!unknown_fields().empty()) { ::google::protobuf::internal::WireFormat::SerializeUnknownFields( unknown_fields(), output); @@ -18101,7 +18075,7 @@ void xtreemfs_get_file_credentialsRequest::SerializeWithCachedSizes( ::google::protobuf::uint8* xtreemfs_get_file_credentialsRequest::SerializeWithCachedSizesToArray( ::google::protobuf::uint8* target) const { // required string file_id = 1; - if (_has_bit(0)) { + if (has_file_id()) { ::google::protobuf::internal::WireFormat::VerifyUTF8String( this->file_id().data(), this->file_id().length(), ::google::protobuf::internal::WireFormat::SERIALIZE); @@ -18109,7 +18083,7 @@ void xtreemfs_get_file_credentialsRequest::SerializeWithCachedSizes( ::google::protobuf::internal::WireFormatLite::WriteStringToArray( 1, this->file_id(), target); } - + if (!unknown_fields().empty()) { target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray( unknown_fields(), target); @@ -18119,7 +18093,7 @@ void xtreemfs_get_file_credentialsRequest::SerializeWithCachedSizes( int xtreemfs_get_file_credentialsRequest::ByteSize() const { int total_size = 0; - + if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) { // required string file_id = 1; if (has_file_id()) { @@ -18127,7 +18101,7 @@ int xtreemfs_get_file_credentialsRequest::ByteSize() const { ::google::protobuf::internal::WireFormatLite::StringSize( this->file_id()); } - + } if (!unknown_fields().empty()) { total_size += @@ -18155,7 +18129,7 @@ void xtreemfs_get_file_credentialsRequest::MergeFrom(const ::google::protobuf::M void xtreemfs_get_file_credentialsRequest::MergeFrom(const xtreemfs_get_file_credentialsRequest& from) { GOOGLE_CHECK_NE(&from, this); if (from._has_bits_[0 / 32] & (0xffu << (0 % 32))) { - if (from._has_bit(0)) { + if (from.has_file_id()) { set_file_id(from.file_id()); } } @@ -18176,7 +18150,7 @@ void xtreemfs_get_file_credentialsRequest::CopyFrom(const xtreemfs_get_file_cred bool xtreemfs_get_file_credentialsRequest::IsInitialized() const { if ((_has_bits_[0] & 0x00000001) != 0x00000001) return false; - + return true; } @@ -18198,1065 +18172,6 @@ void xtreemfs_get_file_credentialsRequest::Swap(xtreemfs_get_file_credentialsReq } -// =================================================================== - -MRCService::~MRCService() {} - -const ::google::protobuf::ServiceDescriptor* MRCService::descriptor() { - protobuf_AssignDescriptorsOnce(); - return MRCService_descriptor_; -} - -const ::google::protobuf::ServiceDescriptor* MRCService::GetDescriptor() { - protobuf_AssignDescriptorsOnce(); - return MRCService_descriptor_; -} - -void MRCService::fsetattr(::google::protobuf::RpcController* controller, - const ::xtreemfs::pbrpc::fsetattrRequest*, - ::xtreemfs::pbrpc::emptyResponse*, - ::google::protobuf::Closure* done) { - controller->SetFailed("Method fsetattr() not implemented."); - done->Run(); -} - -void MRCService::ftruncate(::google::protobuf::RpcController* controller, - const ::xtreemfs::pbrpc::XCap*, - ::xtreemfs::pbrpc::XCap*, - ::google::protobuf::Closure* done) { - controller->SetFailed("Method ftruncate() not implemented."); - done->Run(); -} - -void MRCService::getattr(::google::protobuf::RpcController* controller, - const ::xtreemfs::pbrpc::getattrRequest*, - ::xtreemfs::pbrpc::getattrResponse*, - ::google::protobuf::Closure* done) { - controller->SetFailed("Method getattr() not implemented."); - done->Run(); -} - -void MRCService::getxattr(::google::protobuf::RpcController* controller, - const ::xtreemfs::pbrpc::getxattrRequest*, - ::xtreemfs::pbrpc::getxattrResponse*, - ::google::protobuf::Closure* done) { - controller->SetFailed("Method getxattr() not implemented."); - done->Run(); -} - -void MRCService::link(::google::protobuf::RpcController* controller, - const ::xtreemfs::pbrpc::linkRequest*, - ::xtreemfs::pbrpc::timestampResponse*, - ::google::protobuf::Closure* done) { - controller->SetFailed("Method link() not implemented."); - done->Run(); -} - -void MRCService::listxattr(::google::protobuf::RpcController* controller, - const ::xtreemfs::pbrpc::listxattrRequest*, - ::xtreemfs::pbrpc::listxattrResponse*, - ::google::protobuf::Closure* done) { - controller->SetFailed("Method listxattr() not implemented."); - done->Run(); -} - -void MRCService::mkdir(::google::protobuf::RpcController* controller, - const ::xtreemfs::pbrpc::mkdirRequest*, - ::xtreemfs::pbrpc::timestampResponse*, - ::google::protobuf::Closure* done) { - controller->SetFailed("Method mkdir() not implemented."); - done->Run(); -} - -void MRCService::open(::google::protobuf::RpcController* controller, - const ::xtreemfs::pbrpc::openRequest*, - ::xtreemfs::pbrpc::openResponse*, - ::google::protobuf::Closure* done) { - controller->SetFailed("Method open() not implemented."); - done->Run(); -} - -void MRCService::readdir(::google::protobuf::RpcController* controller, - const ::xtreemfs::pbrpc::readdirRequest*, - ::xtreemfs::pbrpc::DirectoryEntries*, - ::google::protobuf::Closure* done) { - controller->SetFailed("Method readdir() not implemented."); - done->Run(); -} - -void MRCService::readlink(::google::protobuf::RpcController* controller, - const ::xtreemfs::pbrpc::readlinkRequest*, - ::xtreemfs::pbrpc::readlinkResponse*, - ::google::protobuf::Closure* done) { - controller->SetFailed("Method readlink() not implemented."); - done->Run(); -} - -void MRCService::removexattr(::google::protobuf::RpcController* controller, - const ::xtreemfs::pbrpc::removexattrRequest*, - ::xtreemfs::pbrpc::timestampResponse*, - ::google::protobuf::Closure* done) { - controller->SetFailed("Method removexattr() not implemented."); - done->Run(); -} - -void MRCService::rename(::google::protobuf::RpcController* controller, - const ::xtreemfs::pbrpc::renameRequest*, - ::xtreemfs::pbrpc::renameResponse*, - ::google::protobuf::Closure* done) { - controller->SetFailed("Method rename() not implemented."); - done->Run(); -} - -void MRCService::rmdir(::google::protobuf::RpcController* controller, - const ::xtreemfs::pbrpc::rmdirRequest*, - ::xtreemfs::pbrpc::timestampResponse*, - ::google::protobuf::Closure* done) { - controller->SetFailed("Method rmdir() not implemented."); - done->Run(); -} - -void MRCService::setattr(::google::protobuf::RpcController* controller, - const ::xtreemfs::pbrpc::setattrRequest*, - ::xtreemfs::pbrpc::timestampResponse*, - ::google::protobuf::Closure* done) { - controller->SetFailed("Method setattr() not implemented."); - done->Run(); -} - -void MRCService::setxattr(::google::protobuf::RpcController* controller, - const ::xtreemfs::pbrpc::setxattrRequest*, - ::xtreemfs::pbrpc::timestampResponse*, - ::google::protobuf::Closure* done) { - controller->SetFailed("Method setxattr() not implemented."); - done->Run(); -} - -void MRCService::statvfs(::google::protobuf::RpcController* controller, - const ::xtreemfs::pbrpc::statvfsRequest*, - ::xtreemfs::pbrpc::StatVFS*, - ::google::protobuf::Closure* done) { - controller->SetFailed("Method statvfs() not implemented."); - done->Run(); -} - -void MRCService::symlink(::google::protobuf::RpcController* controller, - const ::xtreemfs::pbrpc::symlinkRequest*, - ::xtreemfs::pbrpc::timestampResponse*, - ::google::protobuf::Closure* done) { - controller->SetFailed("Method symlink() not implemented."); - done->Run(); -} - -void MRCService::unlink(::google::protobuf::RpcController* controller, - const ::xtreemfs::pbrpc::unlinkRequest*, - ::xtreemfs::pbrpc::unlinkResponse*, - ::google::protobuf::Closure* done) { - controller->SetFailed("Method unlink() not implemented."); - done->Run(); -} - -void MRCService::access(::google::protobuf::RpcController* controller, - const ::xtreemfs::pbrpc::accessRequest*, - ::xtreemfs::pbrpc::emptyResponse*, - ::google::protobuf::Closure* done) { - controller->SetFailed("Method access() not implemented."); - done->Run(); -} - -void MRCService::xtreemfs_checkpoint(::google::protobuf::RpcController* controller, - const ::xtreemfs::pbrpc::emptyRequest*, - ::xtreemfs::pbrpc::emptyResponse*, - ::google::protobuf::Closure* done) { - controller->SetFailed("Method xtreemfs_checkpoint() not implemented."); - done->Run(); -} - -void MRCService::xtreemfs_check_file_exists(::google::protobuf::RpcController* controller, - const ::xtreemfs::pbrpc::xtreemfs_check_file_existsRequest*, - ::xtreemfs::pbrpc::xtreemfs_check_file_existsResponse*, - ::google::protobuf::Closure* done) { - controller->SetFailed("Method xtreemfs_check_file_exists() not implemented."); - done->Run(); -} - -void MRCService::xtreemfs_dump_database(::google::protobuf::RpcController* controller, - const ::xtreemfs::pbrpc::xtreemfs_dump_restore_databaseRequest*, - ::xtreemfs::pbrpc::emptyResponse*, - ::google::protobuf::Closure* done) { - controller->SetFailed("Method xtreemfs_dump_database() not implemented."); - done->Run(); -} - -void MRCService::xtreemfs_get_suitable_osds(::google::protobuf::RpcController* controller, - const ::xtreemfs::pbrpc::xtreemfs_get_suitable_osdsRequest*, - ::xtreemfs::pbrpc::xtreemfs_get_suitable_osdsResponse*, - ::google::protobuf::Closure* done) { - controller->SetFailed("Method xtreemfs_get_suitable_osds() not implemented."); - done->Run(); -} - -void MRCService::xtreemfs_internal_debug(::google::protobuf::RpcController* controller, - const ::xtreemfs::pbrpc::stringMessage*, - ::xtreemfs::pbrpc::stringMessage*, - ::google::protobuf::Closure* done) { - controller->SetFailed("Method xtreemfs_internal_debug() not implemented."); - done->Run(); -} - -void MRCService::xtreemfs_listdir(::google::protobuf::RpcController* controller, - const ::xtreemfs::pbrpc::xtreemfs_listdirRequest*, - ::xtreemfs::pbrpc::xtreemfs_listdirResponse*, - ::google::protobuf::Closure* done) { - controller->SetFailed("Method xtreemfs_listdir() not implemented."); - done->Run(); -} - -void MRCService::xtreemfs_lsvol(::google::protobuf::RpcController* controller, - const ::xtreemfs::pbrpc::emptyRequest*, - ::xtreemfs::pbrpc::Volumes*, - ::google::protobuf::Closure* done) { - controller->SetFailed("Method xtreemfs_lsvol() not implemented."); - done->Run(); -} - -void MRCService::xtreemfs_mkvol(::google::protobuf::RpcController* controller, - const ::xtreemfs::pbrpc::Volume*, - ::xtreemfs::pbrpc::emptyResponse*, - ::google::protobuf::Closure* done) { - controller->SetFailed("Method xtreemfs_mkvol() not implemented."); - done->Run(); -} - -void MRCService::xtreemfs_renew_capability(::google::protobuf::RpcController* controller, - const ::xtreemfs::pbrpc::XCap*, - ::xtreemfs::pbrpc::XCap*, - ::google::protobuf::Closure* done) { - controller->SetFailed("Method xtreemfs_renew_capability() not implemented."); - done->Run(); -} - -void MRCService::xtreemfs_replication_to_master(::google::protobuf::RpcController* controller, - const ::xtreemfs::pbrpc::emptyRequest*, - ::xtreemfs::pbrpc::emptyResponse*, - ::google::protobuf::Closure* done) { - controller->SetFailed("Method xtreemfs_replication_to_master() not implemented."); - done->Run(); -} - -void MRCService::xtreemfs_replica_add(::google::protobuf::RpcController* controller, - const ::xtreemfs::pbrpc::xtreemfs_replica_addRequest*, - ::xtreemfs::pbrpc::emptyResponse*, - ::google::protobuf::Closure* done) { - controller->SetFailed("Method xtreemfs_replica_add() not implemented."); - done->Run(); -} - -void MRCService::xtreemfs_replica_list(::google::protobuf::RpcController* controller, - const ::xtreemfs::pbrpc::xtreemfs_replica_listRequest*, - ::xtreemfs::pbrpc::Replicas*, - ::google::protobuf::Closure* done) { - controller->SetFailed("Method xtreemfs_replica_list() not implemented."); - done->Run(); -} - -void MRCService::xtreemfs_replica_remove(::google::protobuf::RpcController* controller, - const ::xtreemfs::pbrpc::xtreemfs_replica_removeRequest*, - ::xtreemfs::pbrpc::FileCredentials*, - ::google::protobuf::Closure* done) { - controller->SetFailed("Method xtreemfs_replica_remove() not implemented."); - done->Run(); -} - -void MRCService::xtreemfs_restore_database(::google::protobuf::RpcController* controller, - const ::xtreemfs::pbrpc::xtreemfs_dump_restore_databaseRequest*, - ::xtreemfs::pbrpc::emptyResponse*, - ::google::protobuf::Closure* done) { - controller->SetFailed("Method xtreemfs_restore_database() not implemented."); - done->Run(); -} - -void MRCService::xtreemfs_restore_file(::google::protobuf::RpcController* controller, - const ::xtreemfs::pbrpc::xtreemfs_restore_fileRequest*, - ::xtreemfs::pbrpc::emptyResponse*, - ::google::protobuf::Closure* done) { - controller->SetFailed("Method xtreemfs_restore_file() not implemented."); - done->Run(); -} - -void MRCService::xtreemfs_rmvol(::google::protobuf::RpcController* controller, - const ::xtreemfs::pbrpc::xtreemfs_rmvolRequest*, - ::xtreemfs::pbrpc::emptyResponse*, - ::google::protobuf::Closure* done) { - controller->SetFailed("Method xtreemfs_rmvol() not implemented."); - done->Run(); -} - -void MRCService::xtreemfs_shutdown(::google::protobuf::RpcController* controller, - const ::xtreemfs::pbrpc::emptyRequest*, - ::xtreemfs::pbrpc::emptyResponse*, - ::google::protobuf::Closure* done) { - controller->SetFailed("Method xtreemfs_shutdown() not implemented."); - done->Run(); -} - -void MRCService::xtreemfs_update_file_size(::google::protobuf::RpcController* controller, - const ::xtreemfs::pbrpc::xtreemfs_update_file_sizeRequest*, - ::xtreemfs::pbrpc::timestampResponse*, - ::google::protobuf::Closure* done) { - controller->SetFailed("Method xtreemfs_update_file_size() not implemented."); - done->Run(); -} - -void MRCService::xtreemfs_set_replica_update_policy(::google::protobuf::RpcController* controller, - const ::xtreemfs::pbrpc::xtreemfs_set_replica_update_policyRequest*, - ::xtreemfs::pbrpc::xtreemfs_set_replica_update_policyResponse*, - ::google::protobuf::Closure* done) { - controller->SetFailed("Method xtreemfs_set_replica_update_policy() not implemented."); - done->Run(); -} - -void MRCService::xtreemfs_set_read_only_xattr(::google::protobuf::RpcController* controller, - const ::xtreemfs::pbrpc::xtreemfs_set_read_only_xattrRequest*, - ::xtreemfs::pbrpc::xtreemfs_set_read_only_xattrResponse*, - ::google::protobuf::Closure* done) { - controller->SetFailed("Method xtreemfs_set_read_only_xattr() not implemented."); - done->Run(); -} - -void MRCService::xtreemfs_get_file_credentials(::google::protobuf::RpcController* controller, - const ::xtreemfs::pbrpc::xtreemfs_get_file_credentialsRequest*, - ::xtreemfs::pbrpc::FileCredentials*, - ::google::protobuf::Closure* done) { - controller->SetFailed("Method xtreemfs_get_file_credentials() not implemented."); - done->Run(); -} - -void MRCService::CallMethod(const ::google::protobuf::MethodDescriptor* method, - ::google::protobuf::RpcController* controller, - const ::google::protobuf::Message* request, - ::google::protobuf::Message* response, - ::google::protobuf::Closure* done) { - GOOGLE_DCHECK_EQ(method->service(), MRCService_descriptor_); - switch(method->index()) { - case 0: - fsetattr(controller, - ::google::protobuf::down_cast(request), - ::google::protobuf::down_cast< ::xtreemfs::pbrpc::emptyResponse*>(response), - done); - break; - case 1: - ftruncate(controller, - ::google::protobuf::down_cast(request), - ::google::protobuf::down_cast< ::xtreemfs::pbrpc::XCap*>(response), - done); - break; - case 2: - getattr(controller, - ::google::protobuf::down_cast(request), - ::google::protobuf::down_cast< ::xtreemfs::pbrpc::getattrResponse*>(response), - done); - break; - case 3: - getxattr(controller, - ::google::protobuf::down_cast(request), - ::google::protobuf::down_cast< ::xtreemfs::pbrpc::getxattrResponse*>(response), - done); - break; - case 4: - link(controller, - ::google::protobuf::down_cast(request), - ::google::protobuf::down_cast< ::xtreemfs::pbrpc::timestampResponse*>(response), - done); - break; - case 5: - listxattr(controller, - ::google::protobuf::down_cast(request), - ::google::protobuf::down_cast< ::xtreemfs::pbrpc::listxattrResponse*>(response), - done); - break; - case 6: - mkdir(controller, - ::google::protobuf::down_cast(request), - ::google::protobuf::down_cast< ::xtreemfs::pbrpc::timestampResponse*>(response), - done); - break; - case 7: - open(controller, - ::google::protobuf::down_cast(request), - ::google::protobuf::down_cast< ::xtreemfs::pbrpc::openResponse*>(response), - done); - break; - case 8: - readdir(controller, - ::google::protobuf::down_cast(request), - ::google::protobuf::down_cast< ::xtreemfs::pbrpc::DirectoryEntries*>(response), - done); - break; - case 9: - readlink(controller, - ::google::protobuf::down_cast(request), - ::google::protobuf::down_cast< ::xtreemfs::pbrpc::readlinkResponse*>(response), - done); - break; - case 10: - removexattr(controller, - ::google::protobuf::down_cast(request), - ::google::protobuf::down_cast< ::xtreemfs::pbrpc::timestampResponse*>(response), - done); - break; - case 11: - rename(controller, - ::google::protobuf::down_cast(request), - ::google::protobuf::down_cast< ::xtreemfs::pbrpc::renameResponse*>(response), - done); - break; - case 12: - rmdir(controller, - ::google::protobuf::down_cast(request), - ::google::protobuf::down_cast< ::xtreemfs::pbrpc::timestampResponse*>(response), - done); - break; - case 13: - setattr(controller, - ::google::protobuf::down_cast(request), - ::google::protobuf::down_cast< ::xtreemfs::pbrpc::timestampResponse*>(response), - done); - break; - case 14: - setxattr(controller, - ::google::protobuf::down_cast(request), - ::google::protobuf::down_cast< ::xtreemfs::pbrpc::timestampResponse*>(response), - done); - break; - case 15: - statvfs(controller, - ::google::protobuf::down_cast(request), - ::google::protobuf::down_cast< ::xtreemfs::pbrpc::StatVFS*>(response), - done); - break; - case 16: - symlink(controller, - ::google::protobuf::down_cast(request), - ::google::protobuf::down_cast< ::xtreemfs::pbrpc::timestampResponse*>(response), - done); - break; - case 17: - unlink(controller, - ::google::protobuf::down_cast(request), - ::google::protobuf::down_cast< ::xtreemfs::pbrpc::unlinkResponse*>(response), - done); - break; - case 18: - access(controller, - ::google::protobuf::down_cast(request), - ::google::protobuf::down_cast< ::xtreemfs::pbrpc::emptyResponse*>(response), - done); - break; - case 19: - xtreemfs_checkpoint(controller, - ::google::protobuf::down_cast(request), - ::google::protobuf::down_cast< ::xtreemfs::pbrpc::emptyResponse*>(response), - done); - break; - case 20: - xtreemfs_check_file_exists(controller, - ::google::protobuf::down_cast(request), - ::google::protobuf::down_cast< ::xtreemfs::pbrpc::xtreemfs_check_file_existsResponse*>(response), - done); - break; - case 21: - xtreemfs_dump_database(controller, - ::google::protobuf::down_cast(request), - ::google::protobuf::down_cast< ::xtreemfs::pbrpc::emptyResponse*>(response), - done); - break; - case 22: - xtreemfs_get_suitable_osds(controller, - ::google::protobuf::down_cast(request), - ::google::protobuf::down_cast< ::xtreemfs::pbrpc::xtreemfs_get_suitable_osdsResponse*>(response), - done); - break; - case 23: - xtreemfs_internal_debug(controller, - ::google::protobuf::down_cast(request), - ::google::protobuf::down_cast< ::xtreemfs::pbrpc::stringMessage*>(response), - done); - break; - case 24: - xtreemfs_listdir(controller, - ::google::protobuf::down_cast(request), - ::google::protobuf::down_cast< ::xtreemfs::pbrpc::xtreemfs_listdirResponse*>(response), - done); - break; - case 25: - xtreemfs_lsvol(controller, - ::google::protobuf::down_cast(request), - ::google::protobuf::down_cast< ::xtreemfs::pbrpc::Volumes*>(response), - done); - break; - case 26: - xtreemfs_mkvol(controller, - ::google::protobuf::down_cast(request), - ::google::protobuf::down_cast< ::xtreemfs::pbrpc::emptyResponse*>(response), - done); - break; - case 27: - xtreemfs_renew_capability(controller, - ::google::protobuf::down_cast(request), - ::google::protobuf::down_cast< ::xtreemfs::pbrpc::XCap*>(response), - done); - break; - case 28: - xtreemfs_replication_to_master(controller, - ::google::protobuf::down_cast(request), - ::google::protobuf::down_cast< ::xtreemfs::pbrpc::emptyResponse*>(response), - done); - break; - case 29: - xtreemfs_replica_add(controller, - ::google::protobuf::down_cast(request), - ::google::protobuf::down_cast< ::xtreemfs::pbrpc::emptyResponse*>(response), - done); - break; - case 30: - xtreemfs_replica_list(controller, - ::google::protobuf::down_cast(request), - ::google::protobuf::down_cast< ::xtreemfs::pbrpc::Replicas*>(response), - done); - break; - case 31: - xtreemfs_replica_remove(controller, - ::google::protobuf::down_cast(request), - ::google::protobuf::down_cast< ::xtreemfs::pbrpc::FileCredentials*>(response), - done); - break; - case 32: - xtreemfs_restore_database(controller, - ::google::protobuf::down_cast(request), - ::google::protobuf::down_cast< ::xtreemfs::pbrpc::emptyResponse*>(response), - done); - break; - case 33: - xtreemfs_restore_file(controller, - ::google::protobuf::down_cast(request), - ::google::protobuf::down_cast< ::xtreemfs::pbrpc::emptyResponse*>(response), - done); - break; - case 34: - xtreemfs_rmvol(controller, - ::google::protobuf::down_cast(request), - ::google::protobuf::down_cast< ::xtreemfs::pbrpc::emptyResponse*>(response), - done); - break; - case 35: - xtreemfs_shutdown(controller, - ::google::protobuf::down_cast(request), - ::google::protobuf::down_cast< ::xtreemfs::pbrpc::emptyResponse*>(response), - done); - break; - case 36: - xtreemfs_update_file_size(controller, - ::google::protobuf::down_cast(request), - ::google::protobuf::down_cast< ::xtreemfs::pbrpc::timestampResponse*>(response), - done); - break; - case 37: - xtreemfs_set_replica_update_policy(controller, - ::google::protobuf::down_cast(request), - ::google::protobuf::down_cast< ::xtreemfs::pbrpc::xtreemfs_set_replica_update_policyResponse*>(response), - done); - break; - case 38: - xtreemfs_set_read_only_xattr(controller, - ::google::protobuf::down_cast(request), - ::google::protobuf::down_cast< ::xtreemfs::pbrpc::xtreemfs_set_read_only_xattrResponse*>(response), - done); - break; - case 39: - xtreemfs_get_file_credentials(controller, - ::google::protobuf::down_cast(request), - ::google::protobuf::down_cast< ::xtreemfs::pbrpc::FileCredentials*>(response), - done); - break; - default: - GOOGLE_LOG(FATAL) << "Bad method index; this should never happen."; - break; - } -} - -const ::google::protobuf::Message& MRCService::GetRequestPrototype( - const ::google::protobuf::MethodDescriptor* method) const { - GOOGLE_DCHECK_EQ(method->service(), descriptor()); - switch(method->index()) { - case 0: - return ::xtreemfs::pbrpc::fsetattrRequest::default_instance(); - case 1: - return ::xtreemfs::pbrpc::XCap::default_instance(); - case 2: - return ::xtreemfs::pbrpc::getattrRequest::default_instance(); - case 3: - return ::xtreemfs::pbrpc::getxattrRequest::default_instance(); - case 4: - return ::xtreemfs::pbrpc::linkRequest::default_instance(); - case 5: - return ::xtreemfs::pbrpc::listxattrRequest::default_instance(); - case 6: - return ::xtreemfs::pbrpc::mkdirRequest::default_instance(); - case 7: - return ::xtreemfs::pbrpc::openRequest::default_instance(); - case 8: - return ::xtreemfs::pbrpc::readdirRequest::default_instance(); - case 9: - return ::xtreemfs::pbrpc::readlinkRequest::default_instance(); - case 10: - return ::xtreemfs::pbrpc::removexattrRequest::default_instance(); - case 11: - return ::xtreemfs::pbrpc::renameRequest::default_instance(); - case 12: - return ::xtreemfs::pbrpc::rmdirRequest::default_instance(); - case 13: - return ::xtreemfs::pbrpc::setattrRequest::default_instance(); - case 14: - return ::xtreemfs::pbrpc::setxattrRequest::default_instance(); - case 15: - return ::xtreemfs::pbrpc::statvfsRequest::default_instance(); - case 16: - return ::xtreemfs::pbrpc::symlinkRequest::default_instance(); - case 17: - return ::xtreemfs::pbrpc::unlinkRequest::default_instance(); - case 18: - return ::xtreemfs::pbrpc::accessRequest::default_instance(); - case 19: - return ::xtreemfs::pbrpc::emptyRequest::default_instance(); - case 20: - return ::xtreemfs::pbrpc::xtreemfs_check_file_existsRequest::default_instance(); - case 21: - return ::xtreemfs::pbrpc::xtreemfs_dump_restore_databaseRequest::default_instance(); - case 22: - return ::xtreemfs::pbrpc::xtreemfs_get_suitable_osdsRequest::default_instance(); - case 23: - return ::xtreemfs::pbrpc::stringMessage::default_instance(); - case 24: - return ::xtreemfs::pbrpc::xtreemfs_listdirRequest::default_instance(); - case 25: - return ::xtreemfs::pbrpc::emptyRequest::default_instance(); - case 26: - return ::xtreemfs::pbrpc::Volume::default_instance(); - case 27: - return ::xtreemfs::pbrpc::XCap::default_instance(); - case 28: - return ::xtreemfs::pbrpc::emptyRequest::default_instance(); - case 29: - return ::xtreemfs::pbrpc::xtreemfs_replica_addRequest::default_instance(); - case 30: - return ::xtreemfs::pbrpc::xtreemfs_replica_listRequest::default_instance(); - case 31: - return ::xtreemfs::pbrpc::xtreemfs_replica_removeRequest::default_instance(); - case 32: - return ::xtreemfs::pbrpc::xtreemfs_dump_restore_databaseRequest::default_instance(); - case 33: - return ::xtreemfs::pbrpc::xtreemfs_restore_fileRequest::default_instance(); - case 34: - return ::xtreemfs::pbrpc::xtreemfs_rmvolRequest::default_instance(); - case 35: - return ::xtreemfs::pbrpc::emptyRequest::default_instance(); - case 36: - return ::xtreemfs::pbrpc::xtreemfs_update_file_sizeRequest::default_instance(); - case 37: - return ::xtreemfs::pbrpc::xtreemfs_set_replica_update_policyRequest::default_instance(); - case 38: - return ::xtreemfs::pbrpc::xtreemfs_set_read_only_xattrRequest::default_instance(); - case 39: - return ::xtreemfs::pbrpc::xtreemfs_get_file_credentialsRequest::default_instance(); - default: - GOOGLE_LOG(FATAL) << "Bad method index; this should never happen."; - return *reinterpret_cast< ::google::protobuf::Message*>(NULL); - } -} - -const ::google::protobuf::Message& MRCService::GetResponsePrototype( - const ::google::protobuf::MethodDescriptor* method) const { - GOOGLE_DCHECK_EQ(method->service(), descriptor()); - switch(method->index()) { - case 0: - return ::xtreemfs::pbrpc::emptyResponse::default_instance(); - case 1: - return ::xtreemfs::pbrpc::XCap::default_instance(); - case 2: - return ::xtreemfs::pbrpc::getattrResponse::default_instance(); - case 3: - return ::xtreemfs::pbrpc::getxattrResponse::default_instance(); - case 4: - return ::xtreemfs::pbrpc::timestampResponse::default_instance(); - case 5: - return ::xtreemfs::pbrpc::listxattrResponse::default_instance(); - case 6: - return ::xtreemfs::pbrpc::timestampResponse::default_instance(); - case 7: - return ::xtreemfs::pbrpc::openResponse::default_instance(); - case 8: - return ::xtreemfs::pbrpc::DirectoryEntries::default_instance(); - case 9: - return ::xtreemfs::pbrpc::readlinkResponse::default_instance(); - case 10: - return ::xtreemfs::pbrpc::timestampResponse::default_instance(); - case 11: - return ::xtreemfs::pbrpc::renameResponse::default_instance(); - case 12: - return ::xtreemfs::pbrpc::timestampResponse::default_instance(); - case 13: - return ::xtreemfs::pbrpc::timestampResponse::default_instance(); - case 14: - return ::xtreemfs::pbrpc::timestampResponse::default_instance(); - case 15: - return ::xtreemfs::pbrpc::StatVFS::default_instance(); - case 16: - return ::xtreemfs::pbrpc::timestampResponse::default_instance(); - case 17: - return ::xtreemfs::pbrpc::unlinkResponse::default_instance(); - case 18: - return ::xtreemfs::pbrpc::emptyResponse::default_instance(); - case 19: - return ::xtreemfs::pbrpc::emptyResponse::default_instance(); - case 20: - return ::xtreemfs::pbrpc::xtreemfs_check_file_existsResponse::default_instance(); - case 21: - return ::xtreemfs::pbrpc::emptyResponse::default_instance(); - case 22: - return ::xtreemfs::pbrpc::xtreemfs_get_suitable_osdsResponse::default_instance(); - case 23: - return ::xtreemfs::pbrpc::stringMessage::default_instance(); - case 24: - return ::xtreemfs::pbrpc::xtreemfs_listdirResponse::default_instance(); - case 25: - return ::xtreemfs::pbrpc::Volumes::default_instance(); - case 26: - return ::xtreemfs::pbrpc::emptyResponse::default_instance(); - case 27: - return ::xtreemfs::pbrpc::XCap::default_instance(); - case 28: - return ::xtreemfs::pbrpc::emptyResponse::default_instance(); - case 29: - return ::xtreemfs::pbrpc::emptyResponse::default_instance(); - case 30: - return ::xtreemfs::pbrpc::Replicas::default_instance(); - case 31: - return ::xtreemfs::pbrpc::FileCredentials::default_instance(); - case 32: - return ::xtreemfs::pbrpc::emptyResponse::default_instance(); - case 33: - return ::xtreemfs::pbrpc::emptyResponse::default_instance(); - case 34: - return ::xtreemfs::pbrpc::emptyResponse::default_instance(); - case 35: - return ::xtreemfs::pbrpc::emptyResponse::default_instance(); - case 36: - return ::xtreemfs::pbrpc::timestampResponse::default_instance(); - case 37: - return ::xtreemfs::pbrpc::xtreemfs_set_replica_update_policyResponse::default_instance(); - case 38: - return ::xtreemfs::pbrpc::xtreemfs_set_read_only_xattrResponse::default_instance(); - case 39: - return ::xtreemfs::pbrpc::FileCredentials::default_instance(); - default: - GOOGLE_LOG(FATAL) << "Bad method index; this should never happen."; - return *reinterpret_cast< ::google::protobuf::Message*>(NULL); - } -} - -MRCService_Stub::MRCService_Stub(::google::protobuf::RpcChannel* channel) - : channel_(channel), owns_channel_(false) {} -MRCService_Stub::MRCService_Stub( - ::google::protobuf::RpcChannel* channel, - ::google::protobuf::Service::ChannelOwnership ownership) - : channel_(channel), - owns_channel_(ownership == ::google::protobuf::Service::STUB_OWNS_CHANNEL) {} -MRCService_Stub::~MRCService_Stub() { - if (owns_channel_) delete channel_; -} - -void MRCService_Stub::fsetattr(::google::protobuf::RpcController* controller, - const ::xtreemfs::pbrpc::fsetattrRequest* request, - ::xtreemfs::pbrpc::emptyResponse* response, - ::google::protobuf::Closure* done) { - channel_->CallMethod(descriptor()->method(0), - controller, request, response, done); -} -void MRCService_Stub::ftruncate(::google::protobuf::RpcController* controller, - const ::xtreemfs::pbrpc::XCap* request, - ::xtreemfs::pbrpc::XCap* response, - ::google::protobuf::Closure* done) { - channel_->CallMethod(descriptor()->method(1), - controller, request, response, done); -} -void MRCService_Stub::getattr(::google::protobuf::RpcController* controller, - const ::xtreemfs::pbrpc::getattrRequest* request, - ::xtreemfs::pbrpc::getattrResponse* response, - ::google::protobuf::Closure* done) { - channel_->CallMethod(descriptor()->method(2), - controller, request, response, done); -} -void MRCService_Stub::getxattr(::google::protobuf::RpcController* controller, - const ::xtreemfs::pbrpc::getxattrRequest* request, - ::xtreemfs::pbrpc::getxattrResponse* response, - ::google::protobuf::Closure* done) { - channel_->CallMethod(descriptor()->method(3), - controller, request, response, done); -} -void MRCService_Stub::link(::google::protobuf::RpcController* controller, - const ::xtreemfs::pbrpc::linkRequest* request, - ::xtreemfs::pbrpc::timestampResponse* response, - ::google::protobuf::Closure* done) { - channel_->CallMethod(descriptor()->method(4), - controller, request, response, done); -} -void MRCService_Stub::listxattr(::google::protobuf::RpcController* controller, - const ::xtreemfs::pbrpc::listxattrRequest* request, - ::xtreemfs::pbrpc::listxattrResponse* response, - ::google::protobuf::Closure* done) { - channel_->CallMethod(descriptor()->method(5), - controller, request, response, done); -} -void MRCService_Stub::mkdir(::google::protobuf::RpcController* controller, - const ::xtreemfs::pbrpc::mkdirRequest* request, - ::xtreemfs::pbrpc::timestampResponse* response, - ::google::protobuf::Closure* done) { - channel_->CallMethod(descriptor()->method(6), - controller, request, response, done); -} -void MRCService_Stub::open(::google::protobuf::RpcController* controller, - const ::xtreemfs::pbrpc::openRequest* request, - ::xtreemfs::pbrpc::openResponse* response, - ::google::protobuf::Closure* done) { - channel_->CallMethod(descriptor()->method(7), - controller, request, response, done); -} -void MRCService_Stub::readdir(::google::protobuf::RpcController* controller, - const ::xtreemfs::pbrpc::readdirRequest* request, - ::xtreemfs::pbrpc::DirectoryEntries* response, - ::google::protobuf::Closure* done) { - channel_->CallMethod(descriptor()->method(8), - controller, request, response, done); -} -void MRCService_Stub::readlink(::google::protobuf::RpcController* controller, - const ::xtreemfs::pbrpc::readlinkRequest* request, - ::xtreemfs::pbrpc::readlinkResponse* response, - ::google::protobuf::Closure* done) { - channel_->CallMethod(descriptor()->method(9), - controller, request, response, done); -} -void MRCService_Stub::removexattr(::google::protobuf::RpcController* controller, - const ::xtreemfs::pbrpc::removexattrRequest* request, - ::xtreemfs::pbrpc::timestampResponse* response, - ::google::protobuf::Closure* done) { - channel_->CallMethod(descriptor()->method(10), - controller, request, response, done); -} -void MRCService_Stub::rename(::google::protobuf::RpcController* controller, - const ::xtreemfs::pbrpc::renameRequest* request, - ::xtreemfs::pbrpc::renameResponse* response, - ::google::protobuf::Closure* done) { - channel_->CallMethod(descriptor()->method(11), - controller, request, response, done); -} -void MRCService_Stub::rmdir(::google::protobuf::RpcController* controller, - const ::xtreemfs::pbrpc::rmdirRequest* request, - ::xtreemfs::pbrpc::timestampResponse* response, - ::google::protobuf::Closure* done) { - channel_->CallMethod(descriptor()->method(12), - controller, request, response, done); -} -void MRCService_Stub::setattr(::google::protobuf::RpcController* controller, - const ::xtreemfs::pbrpc::setattrRequest* request, - ::xtreemfs::pbrpc::timestampResponse* response, - ::google::protobuf::Closure* done) { - channel_->CallMethod(descriptor()->method(13), - controller, request, response, done); -} -void MRCService_Stub::setxattr(::google::protobuf::RpcController* controller, - const ::xtreemfs::pbrpc::setxattrRequest* request, - ::xtreemfs::pbrpc::timestampResponse* response, - ::google::protobuf::Closure* done) { - channel_->CallMethod(descriptor()->method(14), - controller, request, response, done); -} -void MRCService_Stub::statvfs(::google::protobuf::RpcController* controller, - const ::xtreemfs::pbrpc::statvfsRequest* request, - ::xtreemfs::pbrpc::StatVFS* response, - ::google::protobuf::Closure* done) { - channel_->CallMethod(descriptor()->method(15), - controller, request, response, done); -} -void MRCService_Stub::symlink(::google::protobuf::RpcController* controller, - const ::xtreemfs::pbrpc::symlinkRequest* request, - ::xtreemfs::pbrpc::timestampResponse* response, - ::google::protobuf::Closure* done) { - channel_->CallMethod(descriptor()->method(16), - controller, request, response, done); -} -void MRCService_Stub::unlink(::google::protobuf::RpcController* controller, - const ::xtreemfs::pbrpc::unlinkRequest* request, - ::xtreemfs::pbrpc::unlinkResponse* response, - ::google::protobuf::Closure* done) { - channel_->CallMethod(descriptor()->method(17), - controller, request, response, done); -} -void MRCService_Stub::access(::google::protobuf::RpcController* controller, - const ::xtreemfs::pbrpc::accessRequest* request, - ::xtreemfs::pbrpc::emptyResponse* response, - ::google::protobuf::Closure* done) { - channel_->CallMethod(descriptor()->method(18), - controller, request, response, done); -} -void MRCService_Stub::xtreemfs_checkpoint(::google::protobuf::RpcController* controller, - const ::xtreemfs::pbrpc::emptyRequest* request, - ::xtreemfs::pbrpc::emptyResponse* response, - ::google::protobuf::Closure* done) { - channel_->CallMethod(descriptor()->method(19), - controller, request, response, done); -} -void MRCService_Stub::xtreemfs_check_file_exists(::google::protobuf::RpcController* controller, - const ::xtreemfs::pbrpc::xtreemfs_check_file_existsRequest* request, - ::xtreemfs::pbrpc::xtreemfs_check_file_existsResponse* response, - ::google::protobuf::Closure* done) { - channel_->CallMethod(descriptor()->method(20), - controller, request, response, done); -} -void MRCService_Stub::xtreemfs_dump_database(::google::protobuf::RpcController* controller, - const ::xtreemfs::pbrpc::xtreemfs_dump_restore_databaseRequest* request, - ::xtreemfs::pbrpc::emptyResponse* response, - ::google::protobuf::Closure* done) { - channel_->CallMethod(descriptor()->method(21), - controller, request, response, done); -} -void MRCService_Stub::xtreemfs_get_suitable_osds(::google::protobuf::RpcController* controller, - const ::xtreemfs::pbrpc::xtreemfs_get_suitable_osdsRequest* request, - ::xtreemfs::pbrpc::xtreemfs_get_suitable_osdsResponse* response, - ::google::protobuf::Closure* done) { - channel_->CallMethod(descriptor()->method(22), - controller, request, response, done); -} -void MRCService_Stub::xtreemfs_internal_debug(::google::protobuf::RpcController* controller, - const ::xtreemfs::pbrpc::stringMessage* request, - ::xtreemfs::pbrpc::stringMessage* response, - ::google::protobuf::Closure* done) { - channel_->CallMethod(descriptor()->method(23), - controller, request, response, done); -} -void MRCService_Stub::xtreemfs_listdir(::google::protobuf::RpcController* controller, - const ::xtreemfs::pbrpc::xtreemfs_listdirRequest* request, - ::xtreemfs::pbrpc::xtreemfs_listdirResponse* response, - ::google::protobuf::Closure* done) { - channel_->CallMethod(descriptor()->method(24), - controller, request, response, done); -} -void MRCService_Stub::xtreemfs_lsvol(::google::protobuf::RpcController* controller, - const ::xtreemfs::pbrpc::emptyRequest* request, - ::xtreemfs::pbrpc::Volumes* response, - ::google::protobuf::Closure* done) { - channel_->CallMethod(descriptor()->method(25), - controller, request, response, done); -} -void MRCService_Stub::xtreemfs_mkvol(::google::protobuf::RpcController* controller, - const ::xtreemfs::pbrpc::Volume* request, - ::xtreemfs::pbrpc::emptyResponse* response, - ::google::protobuf::Closure* done) { - channel_->CallMethod(descriptor()->method(26), - controller, request, response, done); -} -void MRCService_Stub::xtreemfs_renew_capability(::google::protobuf::RpcController* controller, - const ::xtreemfs::pbrpc::XCap* request, - ::xtreemfs::pbrpc::XCap* response, - ::google::protobuf::Closure* done) { - channel_->CallMethod(descriptor()->method(27), - controller, request, response, done); -} -void MRCService_Stub::xtreemfs_replication_to_master(::google::protobuf::RpcController* controller, - const ::xtreemfs::pbrpc::emptyRequest* request, - ::xtreemfs::pbrpc::emptyResponse* response, - ::google::protobuf::Closure* done) { - channel_->CallMethod(descriptor()->method(28), - controller, request, response, done); -} -void MRCService_Stub::xtreemfs_replica_add(::google::protobuf::RpcController* controller, - const ::xtreemfs::pbrpc::xtreemfs_replica_addRequest* request, - ::xtreemfs::pbrpc::emptyResponse* response, - ::google::protobuf::Closure* done) { - channel_->CallMethod(descriptor()->method(29), - controller, request, response, done); -} -void MRCService_Stub::xtreemfs_replica_list(::google::protobuf::RpcController* controller, - const ::xtreemfs::pbrpc::xtreemfs_replica_listRequest* request, - ::xtreemfs::pbrpc::Replicas* response, - ::google::protobuf::Closure* done) { - channel_->CallMethod(descriptor()->method(30), - controller, request, response, done); -} -void MRCService_Stub::xtreemfs_replica_remove(::google::protobuf::RpcController* controller, - const ::xtreemfs::pbrpc::xtreemfs_replica_removeRequest* request, - ::xtreemfs::pbrpc::FileCredentials* response, - ::google::protobuf::Closure* done) { - channel_->CallMethod(descriptor()->method(31), - controller, request, response, done); -} -void MRCService_Stub::xtreemfs_restore_database(::google::protobuf::RpcController* controller, - const ::xtreemfs::pbrpc::xtreemfs_dump_restore_databaseRequest* request, - ::xtreemfs::pbrpc::emptyResponse* response, - ::google::protobuf::Closure* done) { - channel_->CallMethod(descriptor()->method(32), - controller, request, response, done); -} -void MRCService_Stub::xtreemfs_restore_file(::google::protobuf::RpcController* controller, - const ::xtreemfs::pbrpc::xtreemfs_restore_fileRequest* request, - ::xtreemfs::pbrpc::emptyResponse* response, - ::google::protobuf::Closure* done) { - channel_->CallMethod(descriptor()->method(33), - controller, request, response, done); -} -void MRCService_Stub::xtreemfs_rmvol(::google::protobuf::RpcController* controller, - const ::xtreemfs::pbrpc::xtreemfs_rmvolRequest* request, - ::xtreemfs::pbrpc::emptyResponse* response, - ::google::protobuf::Closure* done) { - channel_->CallMethod(descriptor()->method(34), - controller, request, response, done); -} -void MRCService_Stub::xtreemfs_shutdown(::google::protobuf::RpcController* controller, - const ::xtreemfs::pbrpc::emptyRequest* request, - ::xtreemfs::pbrpc::emptyResponse* response, - ::google::protobuf::Closure* done) { - channel_->CallMethod(descriptor()->method(35), - controller, request, response, done); -} -void MRCService_Stub::xtreemfs_update_file_size(::google::protobuf::RpcController* controller, - const ::xtreemfs::pbrpc::xtreemfs_update_file_sizeRequest* request, - ::xtreemfs::pbrpc::timestampResponse* response, - ::google::protobuf::Closure* done) { - channel_->CallMethod(descriptor()->method(36), - controller, request, response, done); -} -void MRCService_Stub::xtreemfs_set_replica_update_policy(::google::protobuf::RpcController* controller, - const ::xtreemfs::pbrpc::xtreemfs_set_replica_update_policyRequest* request, - ::xtreemfs::pbrpc::xtreemfs_set_replica_update_policyResponse* response, - ::google::protobuf::Closure* done) { - channel_->CallMethod(descriptor()->method(37), - controller, request, response, done); -} -void MRCService_Stub::xtreemfs_set_read_only_xattr(::google::protobuf::RpcController* controller, - const ::xtreemfs::pbrpc::xtreemfs_set_read_only_xattrRequest* request, - ::xtreemfs::pbrpc::xtreemfs_set_read_only_xattrResponse* response, - ::google::protobuf::Closure* done) { - channel_->CallMethod(descriptor()->method(38), - controller, request, response, done); -} -void MRCService_Stub::xtreemfs_get_file_credentials(::google::protobuf::RpcController* controller, - const ::xtreemfs::pbrpc::xtreemfs_get_file_credentialsRequest* request, - ::xtreemfs::pbrpc::FileCredentials* response, - ::google::protobuf::Closure* done) { - channel_->CallMethod(descriptor()->method(39), - controller, request, response, done); -} - // @@protoc_insertion_point(namespace_scope) } // namespace pbrpc diff --git a/cpp/generated/xtreemfs/MRC.pb.h b/cpp/generated/xtreemfs/MRC.pb.h index 12c76cbc0..8b9009413 100644 --- a/cpp/generated/xtreemfs/MRC.pb.h +++ b/cpp/generated/xtreemfs/MRC.pb.h @@ -8,22 +8,23 @@ #include -#if GOOGLE_PROTOBUF_VERSION < 2003000 +#if GOOGLE_PROTOBUF_VERSION < 2005000 #error This file was generated by a newer version of protoc which is #error incompatible with your Protocol Buffer headers. Please update #error your headers. #endif -#if 2003000 < GOOGLE_PROTOBUF_MIN_PROTOC_VERSION +#if 2005000 < GOOGLE_PROTOBUF_MIN_PROTOC_VERSION #error This file was generated by an older version of protoc which is #error incompatible with your Protocol Buffer headers. Please #error regenerate this file with a newer version of protoc. #endif #include +#include #include #include -#include -#include +#include +#include #include "include/PBRPC.pb.h" #include "include/Common.pb.h" #include "xtreemfs/GlobalTypes.pb.h" @@ -161,29 +162,29 @@ class Stat : public ::google::protobuf::Message { public: Stat(); virtual ~Stat(); - + Stat(const Stat& from); - + inline Stat& operator=(const Stat& from) { CopyFrom(from); return *this; } - + inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const { return _unknown_fields_; } - + inline ::google::protobuf::UnknownFieldSet* mutable_unknown_fields() { return &_unknown_fields_; } - + static const ::google::protobuf::Descriptor* descriptor(); static const Stat& default_instance(); - + void Swap(Stat* other); - + // implements Message ---------------------------------------------- - + Stat* New() const; void CopyFrom(const ::google::protobuf::Message& from); void MergeFrom(const ::google::protobuf::Message& from); @@ -191,7 +192,7 @@ class Stat : public ::google::protobuf::Message { void MergeFrom(const Stat& from); void Clear(); bool IsInitialized() const; - + int ByteSize() const; bool MergePartialFromCodedStream( ::google::protobuf::io::CodedInputStream* input); @@ -204,41 +205,41 @@ class Stat : public ::google::protobuf::Message { void SharedDtor(); void SetCachedSize(int size) const; public: - + ::google::protobuf::Metadata GetMetadata() const; - + // nested types ---------------------------------------------------- - + // accessors ------------------------------------------------------- - + // required fixed64 dev = 1; inline bool has_dev() const; inline void clear_dev(); static const int kDevFieldNumber = 1; inline ::google::protobuf::uint64 dev() const; inline void set_dev(::google::protobuf::uint64 value); - + // required fixed64 ino = 2; inline bool has_ino() const; inline void clear_ino(); static const int kInoFieldNumber = 2; inline ::google::protobuf::uint64 ino() const; inline void set_ino(::google::protobuf::uint64 value); - + // required fixed32 mode = 3; inline bool has_mode() const; inline void clear_mode(); static const int kModeFieldNumber = 3; inline ::google::protobuf::uint32 mode() const; inline void set_mode(::google::protobuf::uint32 value); - + // required fixed32 nlink = 4; inline bool has_nlink() const; inline void clear_nlink(); static const int kNlinkFieldNumber = 4; inline ::google::protobuf::uint32 nlink() const; inline void set_nlink(::google::protobuf::uint32 value); - + // required string user_id = 5; inline bool has_user_id() const; inline void clear_user_id(); @@ -248,7 +249,9 @@ class Stat : public ::google::protobuf::Message { inline void set_user_id(const char* value); inline void set_user_id(const char* value, size_t size); inline ::std::string* mutable_user_id(); - + inline ::std::string* release_user_id(); + inline void set_allocated_user_id(::std::string* user_id); + // required string group_id = 6; inline bool has_group_id() const; inline void clear_group_id(); @@ -258,101 +261,120 @@ class Stat : public ::google::protobuf::Message { inline void set_group_id(const char* value); inline void set_group_id(const char* value, size_t size); inline ::std::string* mutable_group_id(); - + inline ::std::string* release_group_id(); + inline void set_allocated_group_id(::std::string* group_id); + // required fixed64 size = 7; inline bool has_size() const; inline void clear_size(); static const int kSizeFieldNumber = 7; inline ::google::protobuf::uint64 size() const; inline void set_size(::google::protobuf::uint64 value); - + // required fixed64 atime_ns = 8; inline bool has_atime_ns() const; inline void clear_atime_ns(); static const int kAtimeNsFieldNumber = 8; inline ::google::protobuf::uint64 atime_ns() const; inline void set_atime_ns(::google::protobuf::uint64 value); - + // required fixed64 mtime_ns = 9; inline bool has_mtime_ns() const; inline void clear_mtime_ns(); static const int kMtimeNsFieldNumber = 9; inline ::google::protobuf::uint64 mtime_ns() const; inline void set_mtime_ns(::google::protobuf::uint64 value); - + // required fixed64 ctime_ns = 10; inline bool has_ctime_ns() const; inline void clear_ctime_ns(); static const int kCtimeNsFieldNumber = 10; inline ::google::protobuf::uint64 ctime_ns() const; inline void set_ctime_ns(::google::protobuf::uint64 value); - + // required fixed32 blksize = 11; inline bool has_blksize() const; inline void clear_blksize(); static const int kBlksizeFieldNumber = 11; inline ::google::protobuf::uint32 blksize() const; inline void set_blksize(::google::protobuf::uint32 value); - + // optional fixed64 etag = 12; inline bool has_etag() const; inline void clear_etag(); static const int kEtagFieldNumber = 12; inline ::google::protobuf::uint64 etag() const; inline void set_etag(::google::protobuf::uint64 value); - + // required fixed32 truncate_epoch = 13; inline bool has_truncate_epoch() const; inline void clear_truncate_epoch(); static const int kTruncateEpochFieldNumber = 13; inline ::google::protobuf::uint32 truncate_epoch() const; inline void set_truncate_epoch(::google::protobuf::uint32 value); - + // optional fixed32 attributes = 14; inline bool has_attributes() const; inline void clear_attributes(); static const int kAttributesFieldNumber = 14; inline ::google::protobuf::uint32 attributes() const; inline void set_attributes(::google::protobuf::uint32 value); - + // @@protoc_insertion_point(class_scope:xtreemfs.pbrpc.Stat) private: + inline void set_has_dev(); + inline void clear_has_dev(); + inline void set_has_ino(); + inline void clear_has_ino(); + inline void set_has_mode(); + inline void clear_has_mode(); + inline void set_has_nlink(); + inline void clear_has_nlink(); + inline void set_has_user_id(); + inline void clear_has_user_id(); + inline void set_has_group_id(); + inline void clear_has_group_id(); + inline void set_has_size(); + inline void clear_has_size(); + inline void set_has_atime_ns(); + inline void clear_has_atime_ns(); + inline void set_has_mtime_ns(); + inline void clear_has_mtime_ns(); + inline void set_has_ctime_ns(); + inline void clear_has_ctime_ns(); + inline void set_has_blksize(); + inline void clear_has_blksize(); + inline void set_has_etag(); + inline void clear_has_etag(); + inline void set_has_truncate_epoch(); + inline void clear_has_truncate_epoch(); + inline void set_has_attributes(); + inline void clear_has_attributes(); + ::google::protobuf::UnknownFieldSet _unknown_fields_; - mutable int _cached_size_; - + ::google::protobuf::uint64 dev_; ::google::protobuf::uint64 ino_; ::google::protobuf::uint32 mode_; ::google::protobuf::uint32 nlink_; ::std::string* user_id_; - static const ::std::string _default_user_id_; ::std::string* group_id_; - static const ::std::string _default_group_id_; ::google::protobuf::uint64 size_; ::google::protobuf::uint64 atime_ns_; ::google::protobuf::uint64 mtime_ns_; ::google::protobuf::uint64 ctime_ns_; - ::google::protobuf::uint32 blksize_; ::google::protobuf::uint64 etag_; + ::google::protobuf::uint32 blksize_; ::google::protobuf::uint32 truncate_epoch_; ::google::protobuf::uint32 attributes_; + + mutable int _cached_size_; + ::google::protobuf::uint32 _has_bits_[(14 + 31) / 32]; + friend void protobuf_AddDesc_xtreemfs_2fMRC_2eproto(); friend void protobuf_AssignDesc_xtreemfs_2fMRC_2eproto(); friend void protobuf_ShutdownFile_xtreemfs_2fMRC_2eproto(); - - ::google::protobuf::uint32 _has_bits_[(14 + 31) / 32]; - - // WHY DOES & HAVE LOWER PRECEDENCE THAN != !? - inline bool _has_bit(int index) const { - return (_has_bits_[index / 32] & (1u << (index % 32))) != 0; - } - inline void _set_bit(int index) { - _has_bits_[index / 32] |= (1u << (index % 32)); - } - inline void _clear_bit(int index) { - _has_bits_[index / 32] &= ~(1u << (index % 32)); - } - + void InitAsDefaultInstance(); static Stat* default_instance_; }; @@ -362,29 +384,29 @@ class DirectoryEntry : public ::google::protobuf::Message { public: DirectoryEntry(); virtual ~DirectoryEntry(); - + DirectoryEntry(const DirectoryEntry& from); - + inline DirectoryEntry& operator=(const DirectoryEntry& from) { CopyFrom(from); return *this; } - + inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const { return _unknown_fields_; } - + inline ::google::protobuf::UnknownFieldSet* mutable_unknown_fields() { return &_unknown_fields_; } - + static const ::google::protobuf::Descriptor* descriptor(); static const DirectoryEntry& default_instance(); - + void Swap(DirectoryEntry* other); - + // implements Message ---------------------------------------------- - + DirectoryEntry* New() const; void CopyFrom(const ::google::protobuf::Message& from); void MergeFrom(const ::google::protobuf::Message& from); @@ -392,7 +414,7 @@ class DirectoryEntry : public ::google::protobuf::Message { void MergeFrom(const DirectoryEntry& from); void Clear(); bool IsInitialized() const; - + int ByteSize() const; bool MergePartialFromCodedStream( ::google::protobuf::io::CodedInputStream* input); @@ -405,13 +427,13 @@ class DirectoryEntry : public ::google::protobuf::Message { void SharedDtor(); void SetCachedSize(int size) const; public: - + ::google::protobuf::Metadata GetMetadata() const; - + // nested types ---------------------------------------------------- - + // accessors ------------------------------------------------------- - + // required string name = 1; inline bool has_name() const; inline void clear_name(); @@ -421,39 +443,37 @@ class DirectoryEntry : public ::google::protobuf::Message { inline void set_name(const char* value); inline void set_name(const char* value, size_t size); inline ::std::string* mutable_name(); - + inline ::std::string* release_name(); + inline void set_allocated_name(::std::string* name); + // optional .xtreemfs.pbrpc.Stat stbuf = 2; inline bool has_stbuf() const; inline void clear_stbuf(); static const int kStbufFieldNumber = 2; inline const ::xtreemfs::pbrpc::Stat& stbuf() const; inline ::xtreemfs::pbrpc::Stat* mutable_stbuf(); - + inline ::xtreemfs::pbrpc::Stat* release_stbuf(); + inline void set_allocated_stbuf(::xtreemfs::pbrpc::Stat* stbuf); + // @@protoc_insertion_point(class_scope:xtreemfs.pbrpc.DirectoryEntry) private: + inline void set_has_name(); + inline void clear_has_name(); + inline void set_has_stbuf(); + inline void clear_has_stbuf(); + ::google::protobuf::UnknownFieldSet _unknown_fields_; - mutable int _cached_size_; - + ::std::string* name_; - static const ::std::string _default_name_; ::xtreemfs::pbrpc::Stat* stbuf_; + + mutable int _cached_size_; + ::google::protobuf::uint32 _has_bits_[(2 + 31) / 32]; + friend void protobuf_AddDesc_xtreemfs_2fMRC_2eproto(); friend void protobuf_AssignDesc_xtreemfs_2fMRC_2eproto(); friend void protobuf_ShutdownFile_xtreemfs_2fMRC_2eproto(); - - ::google::protobuf::uint32 _has_bits_[(2 + 31) / 32]; - - // WHY DOES & HAVE LOWER PRECEDENCE THAN != !? - inline bool _has_bit(int index) const { - return (_has_bits_[index / 32] & (1u << (index % 32))) != 0; - } - inline void _set_bit(int index) { - _has_bits_[index / 32] |= (1u << (index % 32)); - } - inline void _clear_bit(int index) { - _has_bits_[index / 32] &= ~(1u << (index % 32)); - } - + void InitAsDefaultInstance(); static DirectoryEntry* default_instance_; }; @@ -463,29 +483,29 @@ class DirectoryEntries : public ::google::protobuf::Message { public: DirectoryEntries(); virtual ~DirectoryEntries(); - + DirectoryEntries(const DirectoryEntries& from); - + inline DirectoryEntries& operator=(const DirectoryEntries& from) { CopyFrom(from); return *this; } - + inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const { return _unknown_fields_; } - + inline ::google::protobuf::UnknownFieldSet* mutable_unknown_fields() { return &_unknown_fields_; } - + static const ::google::protobuf::Descriptor* descriptor(); static const DirectoryEntries& default_instance(); - + void Swap(DirectoryEntries* other); - + // implements Message ---------------------------------------------- - + DirectoryEntries* New() const; void CopyFrom(const ::google::protobuf::Message& from); void MergeFrom(const ::google::protobuf::Message& from); @@ -493,7 +513,7 @@ class DirectoryEntries : public ::google::protobuf::Message { void MergeFrom(const DirectoryEntries& from); void Clear(); bool IsInitialized() const; - + int ByteSize() const; bool MergePartialFromCodedStream( ::google::protobuf::io::CodedInputStream* input); @@ -506,13 +526,13 @@ class DirectoryEntries : public ::google::protobuf::Message { void SharedDtor(); void SetCachedSize(int size) const; public: - + ::google::protobuf::Metadata GetMetadata() const; - + // nested types ---------------------------------------------------- - + // accessors ------------------------------------------------------- - + // repeated .xtreemfs.pbrpc.DirectoryEntry entries = 1; inline int entries_size() const; inline void clear_entries(); @@ -524,30 +544,21 @@ class DirectoryEntries : public ::google::protobuf::Message { entries() const; inline ::google::protobuf::RepeatedPtrField< ::xtreemfs::pbrpc::DirectoryEntry >* mutable_entries(); - + // @@protoc_insertion_point(class_scope:xtreemfs.pbrpc.DirectoryEntries) private: + ::google::protobuf::UnknownFieldSet _unknown_fields_; - mutable int _cached_size_; - + ::google::protobuf::RepeatedPtrField< ::xtreemfs::pbrpc::DirectoryEntry > entries_; + + mutable int _cached_size_; + ::google::protobuf::uint32 _has_bits_[(1 + 31) / 32]; + friend void protobuf_AddDesc_xtreemfs_2fMRC_2eproto(); friend void protobuf_AssignDesc_xtreemfs_2fMRC_2eproto(); friend void protobuf_ShutdownFile_xtreemfs_2fMRC_2eproto(); - - ::google::protobuf::uint32 _has_bits_[(1 + 31) / 32]; - - // WHY DOES & HAVE LOWER PRECEDENCE THAN != !? - inline bool _has_bit(int index) const { - return (_has_bits_[index / 32] & (1u << (index % 32))) != 0; - } - inline void _set_bit(int index) { - _has_bits_[index / 32] |= (1u << (index % 32)); - } - inline void _clear_bit(int index) { - _has_bits_[index / 32] &= ~(1u << (index % 32)); - } - + void InitAsDefaultInstance(); static DirectoryEntries* default_instance_; }; @@ -557,29 +568,29 @@ class XAttr : public ::google::protobuf::Message { public: XAttr(); virtual ~XAttr(); - + XAttr(const XAttr& from); - + inline XAttr& operator=(const XAttr& from) { CopyFrom(from); return *this; } - + inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const { return _unknown_fields_; } - + inline ::google::protobuf::UnknownFieldSet* mutable_unknown_fields() { return &_unknown_fields_; } - + static const ::google::protobuf::Descriptor* descriptor(); static const XAttr& default_instance(); - + void Swap(XAttr* other); - + // implements Message ---------------------------------------------- - + XAttr* New() const; void CopyFrom(const ::google::protobuf::Message& from); void MergeFrom(const ::google::protobuf::Message& from); @@ -587,7 +598,7 @@ class XAttr : public ::google::protobuf::Message { void MergeFrom(const XAttr& from); void Clear(); bool IsInitialized() const; - + int ByteSize() const; bool MergePartialFromCodedStream( ::google::protobuf::io::CodedInputStream* input); @@ -600,13 +611,13 @@ class XAttr : public ::google::protobuf::Message { void SharedDtor(); void SetCachedSize(int size) const; public: - + ::google::protobuf::Metadata GetMetadata() const; - + // nested types ---------------------------------------------------- - + // accessors ------------------------------------------------------- - + // required string name = 1; inline bool has_name() const; inline void clear_name(); @@ -616,7 +627,9 @@ class XAttr : public ::google::protobuf::Message { inline void set_name(const char* value); inline void set_name(const char* value, size_t size); inline ::std::string* mutable_name(); - + inline ::std::string* release_name(); + inline void set_allocated_name(::std::string* name); + // optional string value = 2; inline bool has_value() const; inline void clear_value(); @@ -626,45 +639,43 @@ class XAttr : public ::google::protobuf::Message { inline void set_value(const char* value); inline void set_value(const char* value, size_t size); inline ::std::string* mutable_value(); - - // optional bytes value_bytes = 3; - inline bool has_value_bytes() const; - inline void clear_value_bytes(); - static const int kValueBytesFieldNumber = 3; - inline const ::std::string& value_bytes() const; - inline void set_value_bytes(const ::std::string& value); - inline void set_value_bytes(const char* value); - inline void set_value_bytes(const void* value, size_t size); - inline ::std::string* mutable_value_bytes(); - + inline ::std::string* release_value(); + inline void set_allocated_value(::std::string* value); + + // optional bytes value_bytes_string = 3; + inline bool has_value_bytes_string() const; + inline void clear_value_bytes_string(); + static const int kValueBytesStringFieldNumber = 3; + inline const ::std::string& value_bytes_string() const; + inline void set_value_bytes_string(const ::std::string& value); + inline void set_value_bytes_string(const char* value); + inline void set_value_bytes_string(const void* value, size_t size); + inline ::std::string* mutable_value_bytes_string(); + inline ::std::string* release_value_bytes_string(); + inline void set_allocated_value_bytes_string(::std::string* value_bytes_string); + // @@protoc_insertion_point(class_scope:xtreemfs.pbrpc.XAttr) private: + inline void set_has_name(); + inline void clear_has_name(); + inline void set_has_value(); + inline void clear_has_value(); + inline void set_has_value_bytes_string(); + inline void clear_has_value_bytes_string(); + ::google::protobuf::UnknownFieldSet _unknown_fields_; - mutable int _cached_size_; - + ::std::string* name_; - static const ::std::string _default_name_; ::std::string* value_; - static const ::std::string _default_value_; - ::std::string* value_bytes_; - static const ::std::string _default_value_bytes_; + ::std::string* value_bytes_string_; + + mutable int _cached_size_; + ::google::protobuf::uint32 _has_bits_[(3 + 31) / 32]; + friend void protobuf_AddDesc_xtreemfs_2fMRC_2eproto(); friend void protobuf_AssignDesc_xtreemfs_2fMRC_2eproto(); friend void protobuf_ShutdownFile_xtreemfs_2fMRC_2eproto(); - - ::google::protobuf::uint32 _has_bits_[(3 + 31) / 32]; - - // WHY DOES & HAVE LOWER PRECEDENCE THAN != !? - inline bool _has_bit(int index) const { - return (_has_bits_[index / 32] & (1u << (index % 32))) != 0; - } - inline void _set_bit(int index) { - _has_bits_[index / 32] |= (1u << (index % 32)); - } - inline void _clear_bit(int index) { - _has_bits_[index / 32] &= ~(1u << (index % 32)); - } - + void InitAsDefaultInstance(); static XAttr* default_instance_; }; @@ -674,29 +685,29 @@ class Volume : public ::google::protobuf::Message { public: Volume(); virtual ~Volume(); - + Volume(const Volume& from); - + inline Volume& operator=(const Volume& from) { CopyFrom(from); return *this; } - + inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const { return _unknown_fields_; } - + inline ::google::protobuf::UnknownFieldSet* mutable_unknown_fields() { return &_unknown_fields_; } - + static const ::google::protobuf::Descriptor* descriptor(); static const Volume& default_instance(); - + void Swap(Volume* other); - + // implements Message ---------------------------------------------- - + Volume* New() const; void CopyFrom(const ::google::protobuf::Message& from); void MergeFrom(const ::google::protobuf::Message& from); @@ -704,7 +715,7 @@ class Volume : public ::google::protobuf::Message { void MergeFrom(const Volume& from); void Clear(); bool IsInitialized() const; - + int ByteSize() const; bool MergePartialFromCodedStream( ::google::protobuf::io::CodedInputStream* input); @@ -717,27 +728,29 @@ class Volume : public ::google::protobuf::Message { void SharedDtor(); void SetCachedSize(int size) const; public: - + ::google::protobuf::Metadata GetMetadata() const; - + // nested types ---------------------------------------------------- - + // accessors ------------------------------------------------------- - + // required .xtreemfs.pbrpc.AccessControlPolicyType access_control_policy = 1; inline bool has_access_control_policy() const; inline void clear_access_control_policy(); static const int kAccessControlPolicyFieldNumber = 1; - inline xtreemfs::pbrpc::AccessControlPolicyType access_control_policy() const; - inline void set_access_control_policy(xtreemfs::pbrpc::AccessControlPolicyType value); - + inline ::xtreemfs::pbrpc::AccessControlPolicyType access_control_policy() const; + inline void set_access_control_policy(::xtreemfs::pbrpc::AccessControlPolicyType value); + // required .xtreemfs.pbrpc.StripingPolicy default_striping_policy = 2; inline bool has_default_striping_policy() const; inline void clear_default_striping_policy(); static const int kDefaultStripingPolicyFieldNumber = 2; inline const ::xtreemfs::pbrpc::StripingPolicy& default_striping_policy() const; inline ::xtreemfs::pbrpc::StripingPolicy* mutable_default_striping_policy(); - + inline ::xtreemfs::pbrpc::StripingPolicy* release_default_striping_policy(); + inline void set_allocated_default_striping_policy(::xtreemfs::pbrpc::StripingPolicy* default_striping_policy); + // required string id = 3; inline bool has_id() const; inline void clear_id(); @@ -747,14 +760,16 @@ class Volume : public ::google::protobuf::Message { inline void set_id(const char* value); inline void set_id(const char* value, size_t size); inline ::std::string* mutable_id(); - + inline ::std::string* release_id(); + inline void set_allocated_id(::std::string* id); + // required fixed32 mode = 4; inline bool has_mode() const; inline void clear_mode(); static const int kModeFieldNumber = 4; inline ::google::protobuf::uint32 mode() const; inline void set_mode(::google::protobuf::uint32 value); - + // required string name = 5; inline bool has_name() const; inline void clear_name(); @@ -764,7 +779,9 @@ class Volume : public ::google::protobuf::Message { inline void set_name(const char* value); inline void set_name(const char* value, size_t size); inline ::std::string* mutable_name(); - + inline ::std::string* release_name(); + inline void set_allocated_name(::std::string* name); + // required string owner_group_id = 6; inline bool has_owner_group_id() const; inline void clear_owner_group_id(); @@ -774,7 +791,9 @@ class Volume : public ::google::protobuf::Message { inline void set_owner_group_id(const char* value); inline void set_owner_group_id(const char* value, size_t size); inline ::std::string* mutable_owner_group_id(); - + inline ::std::string* release_owner_group_id(); + inline void set_allocated_owner_group_id(::std::string* owner_group_id); + // required string owner_user_id = 7; inline bool has_owner_user_id() const; inline void clear_owner_user_id(); @@ -784,7 +803,9 @@ class Volume : public ::google::protobuf::Message { inline void set_owner_user_id(const char* value); inline void set_owner_user_id(const char* value, size_t size); inline ::std::string* mutable_owner_user_id(); - + inline ::std::string* release_owner_user_id(); + inline void set_allocated_owner_user_id(::std::string* owner_user_id); + // repeated .xtreemfs.pbrpc.KeyValuePair attrs = 8; inline int attrs_size() const; inline void clear_attrs(); @@ -796,41 +817,42 @@ class Volume : public ::google::protobuf::Message { attrs() const; inline ::google::protobuf::RepeatedPtrField< ::xtreemfs::pbrpc::KeyValuePair >* mutable_attrs(); - + // @@protoc_insertion_point(class_scope:xtreemfs.pbrpc.Volume) private: + inline void set_has_access_control_policy(); + inline void clear_has_access_control_policy(); + inline void set_has_default_striping_policy(); + inline void clear_has_default_striping_policy(); + inline void set_has_id(); + inline void clear_has_id(); + inline void set_has_mode(); + inline void clear_has_mode(); + inline void set_has_name(); + inline void clear_has_name(); + inline void set_has_owner_group_id(); + inline void clear_has_owner_group_id(); + inline void set_has_owner_user_id(); + inline void clear_has_owner_user_id(); + ::google::protobuf::UnknownFieldSet _unknown_fields_; - mutable int _cached_size_; - - int access_control_policy_; + ::xtreemfs::pbrpc::StripingPolicy* default_striping_policy_; - ::std::string* id_; - static const ::std::string _default_id_; + int access_control_policy_; ::google::protobuf::uint32 mode_; + ::std::string* id_; ::std::string* name_; - static const ::std::string _default_name_; ::std::string* owner_group_id_; - static const ::std::string _default_owner_group_id_; ::std::string* owner_user_id_; - static const ::std::string _default_owner_user_id_; ::google::protobuf::RepeatedPtrField< ::xtreemfs::pbrpc::KeyValuePair > attrs_; + + mutable int _cached_size_; + ::google::protobuf::uint32 _has_bits_[(8 + 31) / 32]; + friend void protobuf_AddDesc_xtreemfs_2fMRC_2eproto(); friend void protobuf_AssignDesc_xtreemfs_2fMRC_2eproto(); friend void protobuf_ShutdownFile_xtreemfs_2fMRC_2eproto(); - - ::google::protobuf::uint32 _has_bits_[(8 + 31) / 32]; - - // WHY DOES & HAVE LOWER PRECEDENCE THAN != !? - inline bool _has_bit(int index) const { - return (_has_bits_[index / 32] & (1u << (index % 32))) != 0; - } - inline void _set_bit(int index) { - _has_bits_[index / 32] |= (1u << (index % 32)); - } - inline void _clear_bit(int index) { - _has_bits_[index / 32] &= ~(1u << (index % 32)); - } - + void InitAsDefaultInstance(); static Volume* default_instance_; }; @@ -840,29 +862,29 @@ class Volumes : public ::google::protobuf::Message { public: Volumes(); virtual ~Volumes(); - + Volumes(const Volumes& from); - + inline Volumes& operator=(const Volumes& from) { CopyFrom(from); return *this; } - + inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const { return _unknown_fields_; } - + inline ::google::protobuf::UnknownFieldSet* mutable_unknown_fields() { return &_unknown_fields_; } - + static const ::google::protobuf::Descriptor* descriptor(); static const Volumes& default_instance(); - + void Swap(Volumes* other); - + // implements Message ---------------------------------------------- - + Volumes* New() const; void CopyFrom(const ::google::protobuf::Message& from); void MergeFrom(const ::google::protobuf::Message& from); @@ -870,7 +892,7 @@ class Volumes : public ::google::protobuf::Message { void MergeFrom(const Volumes& from); void Clear(); bool IsInitialized() const; - + int ByteSize() const; bool MergePartialFromCodedStream( ::google::protobuf::io::CodedInputStream* input); @@ -883,13 +905,13 @@ class Volumes : public ::google::protobuf::Message { void SharedDtor(); void SetCachedSize(int size) const; public: - + ::google::protobuf::Metadata GetMetadata() const; - + // nested types ---------------------------------------------------- - + // accessors ------------------------------------------------------- - + // repeated .xtreemfs.pbrpc.Volume volumes = 1; inline int volumes_size() const; inline void clear_volumes(); @@ -901,30 +923,21 @@ class Volumes : public ::google::protobuf::Message { volumes() const; inline ::google::protobuf::RepeatedPtrField< ::xtreemfs::pbrpc::Volume >* mutable_volumes(); - + // @@protoc_insertion_point(class_scope:xtreemfs.pbrpc.Volumes) private: + ::google::protobuf::UnknownFieldSet _unknown_fields_; - mutable int _cached_size_; - + ::google::protobuf::RepeatedPtrField< ::xtreemfs::pbrpc::Volume > volumes_; + + mutable int _cached_size_; + ::google::protobuf::uint32 _has_bits_[(1 + 31) / 32]; + friend void protobuf_AddDesc_xtreemfs_2fMRC_2eproto(); friend void protobuf_AssignDesc_xtreemfs_2fMRC_2eproto(); friend void protobuf_ShutdownFile_xtreemfs_2fMRC_2eproto(); - - ::google::protobuf::uint32 _has_bits_[(1 + 31) / 32]; - - // WHY DOES & HAVE LOWER PRECEDENCE THAN != !? - inline bool _has_bit(int index) const { - return (_has_bits_[index / 32] & (1u << (index % 32))) != 0; - } - inline void _set_bit(int index) { - _has_bits_[index / 32] |= (1u << (index % 32)); - } - inline void _clear_bit(int index) { - _has_bits_[index / 32] &= ~(1u << (index % 32)); - } - + void InitAsDefaultInstance(); static Volumes* default_instance_; }; @@ -934,29 +947,29 @@ class StatVFS : public ::google::protobuf::Message { public: StatVFS(); virtual ~StatVFS(); - + StatVFS(const StatVFS& from); - + inline StatVFS& operator=(const StatVFS& from) { CopyFrom(from); return *this; } - + inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const { return _unknown_fields_; } - + inline ::google::protobuf::UnknownFieldSet* mutable_unknown_fields() { return &_unknown_fields_; } - + static const ::google::protobuf::Descriptor* descriptor(); static const StatVFS& default_instance(); - + void Swap(StatVFS* other); - + // implements Message ---------------------------------------------- - + StatVFS* New() const; void CopyFrom(const ::google::protobuf::Message& from); void MergeFrom(const ::google::protobuf::Message& from); @@ -964,7 +977,7 @@ class StatVFS : public ::google::protobuf::Message { void MergeFrom(const StatVFS& from); void Clear(); bool IsInitialized() const; - + int ByteSize() const; bool MergePartialFromCodedStream( ::google::protobuf::io::CodedInputStream* input); @@ -977,41 +990,41 @@ class StatVFS : public ::google::protobuf::Message { void SharedDtor(); void SetCachedSize(int size) const; public: - + ::google::protobuf::Metadata GetMetadata() const; - + // nested types ---------------------------------------------------- - + // accessors ------------------------------------------------------- - + // required fixed32 bsize = 1; inline bool has_bsize() const; inline void clear_bsize(); static const int kBsizeFieldNumber = 1; inline ::google::protobuf::uint32 bsize() const; inline void set_bsize(::google::protobuf::uint32 value); - + // required fixed64 bavail = 2; inline bool has_bavail() const; inline void clear_bavail(); static const int kBavailFieldNumber = 2; inline ::google::protobuf::uint64 bavail() const; inline void set_bavail(::google::protobuf::uint64 value); - + // optional fixed64 bfree = 13; inline bool has_bfree() const; inline void clear_bfree(); static const int kBfreeFieldNumber = 13; inline ::google::protobuf::uint64 bfree() const; inline void set_bfree(::google::protobuf::uint64 value); - + // required fixed64 blocks = 3; inline bool has_blocks() const; inline void clear_blocks(); static const int kBlocksFieldNumber = 3; inline ::google::protobuf::uint64 blocks() const; inline void set_blocks(::google::protobuf::uint64 value); - + // required string fsid = 4; inline bool has_fsid() const; inline void clear_fsid(); @@ -1021,42 +1034,46 @@ class StatVFS : public ::google::protobuf::Message { inline void set_fsid(const char* value); inline void set_fsid(const char* value, size_t size); inline ::std::string* mutable_fsid(); - + inline ::std::string* release_fsid(); + inline void set_allocated_fsid(::std::string* fsid); + // required fixed32 namemax = 5; inline bool has_namemax() const; inline void clear_namemax(); static const int kNamemaxFieldNumber = 5; inline ::google::protobuf::uint32 namemax() const; inline void set_namemax(::google::protobuf::uint32 value); - + // required .xtreemfs.pbrpc.AccessControlPolicyType access_control_policy = 6; inline bool has_access_control_policy() const; inline void clear_access_control_policy(); static const int kAccessControlPolicyFieldNumber = 6; - inline xtreemfs::pbrpc::AccessControlPolicyType access_control_policy() const; - inline void set_access_control_policy(xtreemfs::pbrpc::AccessControlPolicyType value); - + inline ::xtreemfs::pbrpc::AccessControlPolicyType access_control_policy() const; + inline void set_access_control_policy(::xtreemfs::pbrpc::AccessControlPolicyType value); + // required .xtreemfs.pbrpc.StripingPolicy default_striping_policy = 7; inline bool has_default_striping_policy() const; inline void clear_default_striping_policy(); static const int kDefaultStripingPolicyFieldNumber = 7; inline const ::xtreemfs::pbrpc::StripingPolicy& default_striping_policy() const; inline ::xtreemfs::pbrpc::StripingPolicy* mutable_default_striping_policy(); - + inline ::xtreemfs::pbrpc::StripingPolicy* release_default_striping_policy(); + inline void set_allocated_default_striping_policy(::xtreemfs::pbrpc::StripingPolicy* default_striping_policy); + // required fixed64 etag = 8; inline bool has_etag() const; inline void clear_etag(); static const int kEtagFieldNumber = 8; inline ::google::protobuf::uint64 etag() const; inline void set_etag(::google::protobuf::uint64 value); - + // required fixed32 mode = 9; inline bool has_mode() const; inline void clear_mode(); static const int kModeFieldNumber = 9; inline ::google::protobuf::uint32 mode() const; inline void set_mode(::google::protobuf::uint32 value); - + // required string name = 10; inline bool has_name() const; inline void clear_name(); @@ -1066,7 +1083,9 @@ class StatVFS : public ::google::protobuf::Message { inline void set_name(const char* value); inline void set_name(const char* value, size_t size); inline ::std::string* mutable_name(); - + inline ::std::string* release_name(); + inline void set_allocated_name(::std::string* name); + // required string owner_group_id = 11; inline bool has_owner_group_id() const; inline void clear_owner_group_id(); @@ -1076,7 +1095,9 @@ class StatVFS : public ::google::protobuf::Message { inline void set_owner_group_id(const char* value); inline void set_owner_group_id(const char* value, size_t size); inline ::std::string* mutable_owner_group_id(); - + inline ::std::string* release_owner_group_id(); + inline void set_allocated_owner_group_id(::std::string* owner_group_id); + // required string owner_user_id = 12; inline bool has_owner_user_id() const; inline void clear_owner_user_id(); @@ -1086,46 +1107,61 @@ class StatVFS : public ::google::protobuf::Message { inline void set_owner_user_id(const char* value); inline void set_owner_user_id(const char* value, size_t size); inline ::std::string* mutable_owner_user_id(); - + inline ::std::string* release_owner_user_id(); + inline void set_allocated_owner_user_id(::std::string* owner_user_id); + // @@protoc_insertion_point(class_scope:xtreemfs.pbrpc.StatVFS) private: + inline void set_has_bsize(); + inline void clear_has_bsize(); + inline void set_has_bavail(); + inline void clear_has_bavail(); + inline void set_has_bfree(); + inline void clear_has_bfree(); + inline void set_has_blocks(); + inline void clear_has_blocks(); + inline void set_has_fsid(); + inline void clear_has_fsid(); + inline void set_has_namemax(); + inline void clear_has_namemax(); + inline void set_has_access_control_policy(); + inline void clear_has_access_control_policy(); + inline void set_has_default_striping_policy(); + inline void clear_has_default_striping_policy(); + inline void set_has_etag(); + inline void clear_has_etag(); + inline void set_has_mode(); + inline void clear_has_mode(); + inline void set_has_name(); + inline void clear_has_name(); + inline void set_has_owner_group_id(); + inline void clear_has_owner_group_id(); + inline void set_has_owner_user_id(); + inline void clear_has_owner_user_id(); + ::google::protobuf::UnknownFieldSet _unknown_fields_; - mutable int _cached_size_; - - ::google::protobuf::uint32 bsize_; + ::google::protobuf::uint64 bavail_; ::google::protobuf::uint64 bfree_; + ::google::protobuf::uint32 bsize_; + ::google::protobuf::uint32 namemax_; ::google::protobuf::uint64 blocks_; ::std::string* fsid_; - static const ::std::string _default_fsid_; - ::google::protobuf::uint32 namemax_; - int access_control_policy_; ::xtreemfs::pbrpc::StripingPolicy* default_striping_policy_; - ::google::protobuf::uint64 etag_; + int access_control_policy_; ::google::protobuf::uint32 mode_; + ::google::protobuf::uint64 etag_; ::std::string* name_; - static const ::std::string _default_name_; ::std::string* owner_group_id_; - static const ::std::string _default_owner_group_id_; ::std::string* owner_user_id_; - static const ::std::string _default_owner_user_id_; + + mutable int _cached_size_; + ::google::protobuf::uint32 _has_bits_[(13 + 31) / 32]; + friend void protobuf_AddDesc_xtreemfs_2fMRC_2eproto(); friend void protobuf_AssignDesc_xtreemfs_2fMRC_2eproto(); friend void protobuf_ShutdownFile_xtreemfs_2fMRC_2eproto(); - - ::google::protobuf::uint32 _has_bits_[(13 + 31) / 32]; - - // WHY DOES & HAVE LOWER PRECEDENCE THAN != !? - inline bool _has_bit(int index) const { - return (_has_bits_[index / 32] & (1u << (index % 32))) != 0; - } - inline void _set_bit(int index) { - _has_bits_[index / 32] |= (1u << (index % 32)); - } - inline void _clear_bit(int index) { - _has_bits_[index / 32] &= ~(1u << (index % 32)); - } - + void InitAsDefaultInstance(); static StatVFS* default_instance_; }; @@ -1135,29 +1171,29 @@ class fsetattrRequest : public ::google::protobuf::Message { public: fsetattrRequest(); virtual ~fsetattrRequest(); - + fsetattrRequest(const fsetattrRequest& from); - + inline fsetattrRequest& operator=(const fsetattrRequest& from) { CopyFrom(from); return *this; } - + inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const { return _unknown_fields_; } - + inline ::google::protobuf::UnknownFieldSet* mutable_unknown_fields() { return &_unknown_fields_; } - + static const ::google::protobuf::Descriptor* descriptor(); static const fsetattrRequest& default_instance(); - + void Swap(fsetattrRequest* other); - + // implements Message ---------------------------------------------- - + fsetattrRequest* New() const; void CopyFrom(const ::google::protobuf::Message& from); void MergeFrom(const ::google::protobuf::Message& from); @@ -1165,7 +1201,7 @@ class fsetattrRequest : public ::google::protobuf::Message { void MergeFrom(const fsetattrRequest& from); void Clear(); bool IsInitialized() const; - + int ByteSize() const; bool MergePartialFromCodedStream( ::google::protobuf::io::CodedInputStream* input); @@ -1178,59 +1214,60 @@ class fsetattrRequest : public ::google::protobuf::Message { void SharedDtor(); void SetCachedSize(int size) const; public: - + ::google::protobuf::Metadata GetMetadata() const; - + // nested types ---------------------------------------------------- - + // accessors ------------------------------------------------------- - + // required .xtreemfs.pbrpc.Stat stbuf = 1; inline bool has_stbuf() const; inline void clear_stbuf(); static const int kStbufFieldNumber = 1; inline const ::xtreemfs::pbrpc::Stat& stbuf() const; inline ::xtreemfs::pbrpc::Stat* mutable_stbuf(); - + inline ::xtreemfs::pbrpc::Stat* release_stbuf(); + inline void set_allocated_stbuf(::xtreemfs::pbrpc::Stat* stbuf); + // required fixed32 to_set = 2; inline bool has_to_set() const; inline void clear_to_set(); static const int kToSetFieldNumber = 2; inline ::google::protobuf::uint32 to_set() const; inline void set_to_set(::google::protobuf::uint32 value); - + // required .xtreemfs.pbrpc.XCap cap = 3; inline bool has_cap() const; inline void clear_cap(); static const int kCapFieldNumber = 3; inline const ::xtreemfs::pbrpc::XCap& cap() const; inline ::xtreemfs::pbrpc::XCap* mutable_cap(); - + inline ::xtreemfs::pbrpc::XCap* release_cap(); + inline void set_allocated_cap(::xtreemfs::pbrpc::XCap* cap); + // @@protoc_insertion_point(class_scope:xtreemfs.pbrpc.fsetattrRequest) private: + inline void set_has_stbuf(); + inline void clear_has_stbuf(); + inline void set_has_to_set(); + inline void clear_has_to_set(); + inline void set_has_cap(); + inline void clear_has_cap(); + ::google::protobuf::UnknownFieldSet _unknown_fields_; - mutable int _cached_size_; - + ::xtreemfs::pbrpc::Stat* stbuf_; - ::google::protobuf::uint32 to_set_; ::xtreemfs::pbrpc::XCap* cap_; + ::google::protobuf::uint32 to_set_; + + mutable int _cached_size_; + ::google::protobuf::uint32 _has_bits_[(3 + 31) / 32]; + friend void protobuf_AddDesc_xtreemfs_2fMRC_2eproto(); friend void protobuf_AssignDesc_xtreemfs_2fMRC_2eproto(); friend void protobuf_ShutdownFile_xtreemfs_2fMRC_2eproto(); - - ::google::protobuf::uint32 _has_bits_[(3 + 31) / 32]; - - // WHY DOES & HAVE LOWER PRECEDENCE THAN != !? - inline bool _has_bit(int index) const { - return (_has_bits_[index / 32] & (1u << (index % 32))) != 0; - } - inline void _set_bit(int index) { - _has_bits_[index / 32] |= (1u << (index % 32)); - } - inline void _clear_bit(int index) { - _has_bits_[index / 32] &= ~(1u << (index % 32)); - } - + void InitAsDefaultInstance(); static fsetattrRequest* default_instance_; }; @@ -1240,29 +1277,29 @@ class getattrRequest : public ::google::protobuf::Message { public: getattrRequest(); virtual ~getattrRequest(); - + getattrRequest(const getattrRequest& from); - + inline getattrRequest& operator=(const getattrRequest& from) { CopyFrom(from); return *this; } - + inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const { return _unknown_fields_; } - + inline ::google::protobuf::UnknownFieldSet* mutable_unknown_fields() { return &_unknown_fields_; } - + static const ::google::protobuf::Descriptor* descriptor(); static const getattrRequest& default_instance(); - + void Swap(getattrRequest* other); - + // implements Message ---------------------------------------------- - + getattrRequest* New() const; void CopyFrom(const ::google::protobuf::Message& from); void MergeFrom(const ::google::protobuf::Message& from); @@ -1270,7 +1307,7 @@ class getattrRequest : public ::google::protobuf::Message { void MergeFrom(const getattrRequest& from); void Clear(); bool IsInitialized() const; - + int ByteSize() const; bool MergePartialFromCodedStream( ::google::protobuf::io::CodedInputStream* input); @@ -1283,13 +1320,13 @@ class getattrRequest : public ::google::protobuf::Message { void SharedDtor(); void SetCachedSize(int size) const; public: - + ::google::protobuf::Metadata GetMetadata() const; - + // nested types ---------------------------------------------------- - + // accessors ------------------------------------------------------- - + // required string volume_name = 1; inline bool has_volume_name() const; inline void clear_volume_name(); @@ -1299,7 +1336,9 @@ class getattrRequest : public ::google::protobuf::Message { inline void set_volume_name(const char* value); inline void set_volume_name(const char* value, size_t size); inline ::std::string* mutable_volume_name(); - + inline ::std::string* release_volume_name(); + inline void set_allocated_volume_name(::std::string* volume_name); + // required string path = 2; inline bool has_path() const; inline void clear_path(); @@ -1309,41 +1348,38 @@ class getattrRequest : public ::google::protobuf::Message { inline void set_path(const char* value); inline void set_path(const char* value, size_t size); inline ::std::string* mutable_path(); - + inline ::std::string* release_path(); + inline void set_allocated_path(::std::string* path); + // required fixed64 known_etag = 3; inline bool has_known_etag() const; inline void clear_known_etag(); static const int kKnownEtagFieldNumber = 3; inline ::google::protobuf::uint64 known_etag() const; inline void set_known_etag(::google::protobuf::uint64 value); - + // @@protoc_insertion_point(class_scope:xtreemfs.pbrpc.getattrRequest) private: + inline void set_has_volume_name(); + inline void clear_has_volume_name(); + inline void set_has_path(); + inline void clear_has_path(); + inline void set_has_known_etag(); + inline void clear_has_known_etag(); + ::google::protobuf::UnknownFieldSet _unknown_fields_; - mutable int _cached_size_; - + ::std::string* volume_name_; - static const ::std::string _default_volume_name_; ::std::string* path_; - static const ::std::string _default_path_; ::google::protobuf::uint64 known_etag_; + + mutable int _cached_size_; + ::google::protobuf::uint32 _has_bits_[(3 + 31) / 32]; + friend void protobuf_AddDesc_xtreemfs_2fMRC_2eproto(); friend void protobuf_AssignDesc_xtreemfs_2fMRC_2eproto(); friend void protobuf_ShutdownFile_xtreemfs_2fMRC_2eproto(); - - ::google::protobuf::uint32 _has_bits_[(3 + 31) / 32]; - - // WHY DOES & HAVE LOWER PRECEDENCE THAN != !? - inline bool _has_bit(int index) const { - return (_has_bits_[index / 32] & (1u << (index % 32))) != 0; - } - inline void _set_bit(int index) { - _has_bits_[index / 32] |= (1u << (index % 32)); - } - inline void _clear_bit(int index) { - _has_bits_[index / 32] &= ~(1u << (index % 32)); - } - + void InitAsDefaultInstance(); static getattrRequest* default_instance_; }; @@ -1353,29 +1389,29 @@ class getattrResponse : public ::google::protobuf::Message { public: getattrResponse(); virtual ~getattrResponse(); - + getattrResponse(const getattrResponse& from); - + inline getattrResponse& operator=(const getattrResponse& from) { CopyFrom(from); return *this; } - + inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const { return _unknown_fields_; } - + inline ::google::protobuf::UnknownFieldSet* mutable_unknown_fields() { return &_unknown_fields_; } - + static const ::google::protobuf::Descriptor* descriptor(); static const getattrResponse& default_instance(); - + void Swap(getattrResponse* other); - + // implements Message ---------------------------------------------- - + getattrResponse* New() const; void CopyFrom(const ::google::protobuf::Message& from); void MergeFrom(const ::google::protobuf::Message& from); @@ -1383,7 +1419,7 @@ class getattrResponse : public ::google::protobuf::Message { void MergeFrom(const getattrResponse& from); void Clear(); bool IsInitialized() const; - + int ByteSize() const; bool MergePartialFromCodedStream( ::google::protobuf::io::CodedInputStream* input); @@ -1396,43 +1432,38 @@ class getattrResponse : public ::google::protobuf::Message { void SharedDtor(); void SetCachedSize(int size) const; public: - + ::google::protobuf::Metadata GetMetadata() const; - + // nested types ---------------------------------------------------- - + // accessors ------------------------------------------------------- - + // optional .xtreemfs.pbrpc.Stat stbuf = 1; inline bool has_stbuf() const; inline void clear_stbuf(); static const int kStbufFieldNumber = 1; inline const ::xtreemfs::pbrpc::Stat& stbuf() const; inline ::xtreemfs::pbrpc::Stat* mutable_stbuf(); - + inline ::xtreemfs::pbrpc::Stat* release_stbuf(); + inline void set_allocated_stbuf(::xtreemfs::pbrpc::Stat* stbuf); + // @@protoc_insertion_point(class_scope:xtreemfs.pbrpc.getattrResponse) private: + inline void set_has_stbuf(); + inline void clear_has_stbuf(); + ::google::protobuf::UnknownFieldSet _unknown_fields_; - mutable int _cached_size_; - + ::xtreemfs::pbrpc::Stat* stbuf_; + + mutable int _cached_size_; + ::google::protobuf::uint32 _has_bits_[(1 + 31) / 32]; + friend void protobuf_AddDesc_xtreemfs_2fMRC_2eproto(); friend void protobuf_AssignDesc_xtreemfs_2fMRC_2eproto(); friend void protobuf_ShutdownFile_xtreemfs_2fMRC_2eproto(); - - ::google::protobuf::uint32 _has_bits_[(1 + 31) / 32]; - - // WHY DOES & HAVE LOWER PRECEDENCE THAN != !? - inline bool _has_bit(int index) const { - return (_has_bits_[index / 32] & (1u << (index % 32))) != 0; - } - inline void _set_bit(int index) { - _has_bits_[index / 32] |= (1u << (index % 32)); - } - inline void _clear_bit(int index) { - _has_bits_[index / 32] &= ~(1u << (index % 32)); - } - + void InitAsDefaultInstance(); static getattrResponse* default_instance_; }; @@ -1442,29 +1473,29 @@ class getxattrRequest : public ::google::protobuf::Message { public: getxattrRequest(); virtual ~getxattrRequest(); - + getxattrRequest(const getxattrRequest& from); - + inline getxattrRequest& operator=(const getxattrRequest& from) { CopyFrom(from); return *this; } - + inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const { return _unknown_fields_; } - + inline ::google::protobuf::UnknownFieldSet* mutable_unknown_fields() { return &_unknown_fields_; } - + static const ::google::protobuf::Descriptor* descriptor(); static const getxattrRequest& default_instance(); - + void Swap(getxattrRequest* other); - + // implements Message ---------------------------------------------- - + getxattrRequest* New() const; void CopyFrom(const ::google::protobuf::Message& from); void MergeFrom(const ::google::protobuf::Message& from); @@ -1472,7 +1503,7 @@ class getxattrRequest : public ::google::protobuf::Message { void MergeFrom(const getxattrRequest& from); void Clear(); bool IsInitialized() const; - + int ByteSize() const; bool MergePartialFromCodedStream( ::google::protobuf::io::CodedInputStream* input); @@ -1485,13 +1516,13 @@ class getxattrRequest : public ::google::protobuf::Message { void SharedDtor(); void SetCachedSize(int size) const; public: - + ::google::protobuf::Metadata GetMetadata() const; - + // nested types ---------------------------------------------------- - + // accessors ------------------------------------------------------- - + // required string volume_name = 1; inline bool has_volume_name() const; inline void clear_volume_name(); @@ -1501,7 +1532,9 @@ class getxattrRequest : public ::google::protobuf::Message { inline void set_volume_name(const char* value); inline void set_volume_name(const char* value, size_t size); inline ::std::string* mutable_volume_name(); - + inline ::std::string* release_volume_name(); + inline void set_allocated_volume_name(::std::string* volume_name); + // required string path = 2; inline bool has_path() const; inline void clear_path(); @@ -1511,7 +1544,9 @@ class getxattrRequest : public ::google::protobuf::Message { inline void set_path(const char* value); inline void set_path(const char* value, size_t size); inline ::std::string* mutable_path(); - + inline ::std::string* release_path(); + inline void set_allocated_path(::std::string* path); + // required string name = 3; inline bool has_name() const; inline void clear_name(); @@ -1521,35 +1556,31 @@ class getxattrRequest : public ::google::protobuf::Message { inline void set_name(const char* value); inline void set_name(const char* value, size_t size); inline ::std::string* mutable_name(); - + inline ::std::string* release_name(); + inline void set_allocated_name(::std::string* name); + // @@protoc_insertion_point(class_scope:xtreemfs.pbrpc.getxattrRequest) private: + inline void set_has_volume_name(); + inline void clear_has_volume_name(); + inline void set_has_path(); + inline void clear_has_path(); + inline void set_has_name(); + inline void clear_has_name(); + ::google::protobuf::UnknownFieldSet _unknown_fields_; - mutable int _cached_size_; - + ::std::string* volume_name_; - static const ::std::string _default_volume_name_; ::std::string* path_; - static const ::std::string _default_path_; ::std::string* name_; - static const ::std::string _default_name_; + + mutable int _cached_size_; + ::google::protobuf::uint32 _has_bits_[(3 + 31) / 32]; + friend void protobuf_AddDesc_xtreemfs_2fMRC_2eproto(); friend void protobuf_AssignDesc_xtreemfs_2fMRC_2eproto(); friend void protobuf_ShutdownFile_xtreemfs_2fMRC_2eproto(); - - ::google::protobuf::uint32 _has_bits_[(3 + 31) / 32]; - - // WHY DOES & HAVE LOWER PRECEDENCE THAN != !? - inline bool _has_bit(int index) const { - return (_has_bits_[index / 32] & (1u << (index % 32))) != 0; - } - inline void _set_bit(int index) { - _has_bits_[index / 32] |= (1u << (index % 32)); - } - inline void _clear_bit(int index) { - _has_bits_[index / 32] &= ~(1u << (index % 32)); - } - + void InitAsDefaultInstance(); static getxattrRequest* default_instance_; }; @@ -1559,29 +1590,29 @@ class getxattrResponse : public ::google::protobuf::Message { public: getxattrResponse(); virtual ~getxattrResponse(); - + getxattrResponse(const getxattrResponse& from); - + inline getxattrResponse& operator=(const getxattrResponse& from) { CopyFrom(from); return *this; } - + inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const { return _unknown_fields_; } - + inline ::google::protobuf::UnknownFieldSet* mutable_unknown_fields() { return &_unknown_fields_; } - + static const ::google::protobuf::Descriptor* descriptor(); static const getxattrResponse& default_instance(); - + void Swap(getxattrResponse* other); - + // implements Message ---------------------------------------------- - + getxattrResponse* New() const; void CopyFrom(const ::google::protobuf::Message& from); void MergeFrom(const ::google::protobuf::Message& from); @@ -1589,7 +1620,7 @@ class getxattrResponse : public ::google::protobuf::Message { void MergeFrom(const getxattrResponse& from); void Clear(); bool IsInitialized() const; - + int ByteSize() const; bool MergePartialFromCodedStream( ::google::protobuf::io::CodedInputStream* input); @@ -1602,13 +1633,13 @@ class getxattrResponse : public ::google::protobuf::Message { void SharedDtor(); void SetCachedSize(int size) const; public: - + ::google::protobuf::Metadata GetMetadata() const; - + // nested types ---------------------------------------------------- - + // accessors ------------------------------------------------------- - + // required string value = 1; inline bool has_value() const; inline void clear_value(); @@ -1618,43 +1649,40 @@ class getxattrResponse : public ::google::protobuf::Message { inline void set_value(const char* value); inline void set_value(const char* value, size_t size); inline ::std::string* mutable_value(); - - // optional bytes value_bytes = 2; - inline bool has_value_bytes() const; - inline void clear_value_bytes(); - static const int kValueBytesFieldNumber = 2; - inline const ::std::string& value_bytes() const; - inline void set_value_bytes(const ::std::string& value); - inline void set_value_bytes(const char* value); - inline void set_value_bytes(const void* value, size_t size); - inline ::std::string* mutable_value_bytes(); - + inline ::std::string* release_value(); + inline void set_allocated_value(::std::string* value); + + // optional bytes value_bytes_string = 2; + inline bool has_value_bytes_string() const; + inline void clear_value_bytes_string(); + static const int kValueBytesStringFieldNumber = 2; + inline const ::std::string& value_bytes_string() const; + inline void set_value_bytes_string(const ::std::string& value); + inline void set_value_bytes_string(const char* value); + inline void set_value_bytes_string(const void* value, size_t size); + inline ::std::string* mutable_value_bytes_string(); + inline ::std::string* release_value_bytes_string(); + inline void set_allocated_value_bytes_string(::std::string* value_bytes_string); + // @@protoc_insertion_point(class_scope:xtreemfs.pbrpc.getxattrResponse) private: + inline void set_has_value(); + inline void clear_has_value(); + inline void set_has_value_bytes_string(); + inline void clear_has_value_bytes_string(); + ::google::protobuf::UnknownFieldSet _unknown_fields_; - mutable int _cached_size_; - + ::std::string* value_; - static const ::std::string _default_value_; - ::std::string* value_bytes_; - static const ::std::string _default_value_bytes_; + ::std::string* value_bytes_string_; + + mutable int _cached_size_; + ::google::protobuf::uint32 _has_bits_[(2 + 31) / 32]; + friend void protobuf_AddDesc_xtreemfs_2fMRC_2eproto(); friend void protobuf_AssignDesc_xtreemfs_2fMRC_2eproto(); friend void protobuf_ShutdownFile_xtreemfs_2fMRC_2eproto(); - - ::google::protobuf::uint32 _has_bits_[(2 + 31) / 32]; - - // WHY DOES & HAVE LOWER PRECEDENCE THAN != !? - inline bool _has_bit(int index) const { - return (_has_bits_[index / 32] & (1u << (index % 32))) != 0; - } - inline void _set_bit(int index) { - _has_bits_[index / 32] |= (1u << (index % 32)); - } - inline void _clear_bit(int index) { - _has_bits_[index / 32] &= ~(1u << (index % 32)); - } - + void InitAsDefaultInstance(); static getxattrResponse* default_instance_; }; @@ -1664,29 +1692,29 @@ class linkRequest : public ::google::protobuf::Message { public: linkRequest(); virtual ~linkRequest(); - + linkRequest(const linkRequest& from); - + inline linkRequest& operator=(const linkRequest& from) { CopyFrom(from); return *this; } - + inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const { return _unknown_fields_; } - + inline ::google::protobuf::UnknownFieldSet* mutable_unknown_fields() { return &_unknown_fields_; } - + static const ::google::protobuf::Descriptor* descriptor(); static const linkRequest& default_instance(); - + void Swap(linkRequest* other); - + // implements Message ---------------------------------------------- - + linkRequest* New() const; void CopyFrom(const ::google::protobuf::Message& from); void MergeFrom(const ::google::protobuf::Message& from); @@ -1694,7 +1722,7 @@ class linkRequest : public ::google::protobuf::Message { void MergeFrom(const linkRequest& from); void Clear(); bool IsInitialized() const; - + int ByteSize() const; bool MergePartialFromCodedStream( ::google::protobuf::io::CodedInputStream* input); @@ -1707,13 +1735,13 @@ class linkRequest : public ::google::protobuf::Message { void SharedDtor(); void SetCachedSize(int size) const; public: - + ::google::protobuf::Metadata GetMetadata() const; - + // nested types ---------------------------------------------------- - + // accessors ------------------------------------------------------- - + // required string volume_name = 1; inline bool has_volume_name() const; inline void clear_volume_name(); @@ -1723,7 +1751,9 @@ class linkRequest : public ::google::protobuf::Message { inline void set_volume_name(const char* value); inline void set_volume_name(const char* value, size_t size); inline ::std::string* mutable_volume_name(); - + inline ::std::string* release_volume_name(); + inline void set_allocated_volume_name(::std::string* volume_name); + // required string target_path = 2; inline bool has_target_path() const; inline void clear_target_path(); @@ -1733,7 +1763,9 @@ class linkRequest : public ::google::protobuf::Message { inline void set_target_path(const char* value); inline void set_target_path(const char* value, size_t size); inline ::std::string* mutable_target_path(); - + inline ::std::string* release_target_path(); + inline void set_allocated_target_path(::std::string* target_path); + // required string link_path = 3; inline bool has_link_path() const; inline void clear_link_path(); @@ -1743,35 +1775,31 @@ class linkRequest : public ::google::protobuf::Message { inline void set_link_path(const char* value); inline void set_link_path(const char* value, size_t size); inline ::std::string* mutable_link_path(); - + inline ::std::string* release_link_path(); + inline void set_allocated_link_path(::std::string* link_path); + // @@protoc_insertion_point(class_scope:xtreemfs.pbrpc.linkRequest) private: + inline void set_has_volume_name(); + inline void clear_has_volume_name(); + inline void set_has_target_path(); + inline void clear_has_target_path(); + inline void set_has_link_path(); + inline void clear_has_link_path(); + ::google::protobuf::UnknownFieldSet _unknown_fields_; - mutable int _cached_size_; - + ::std::string* volume_name_; - static const ::std::string _default_volume_name_; ::std::string* target_path_; - static const ::std::string _default_target_path_; ::std::string* link_path_; - static const ::std::string _default_link_path_; + + mutable int _cached_size_; + ::google::protobuf::uint32 _has_bits_[(3 + 31) / 32]; + friend void protobuf_AddDesc_xtreemfs_2fMRC_2eproto(); friend void protobuf_AssignDesc_xtreemfs_2fMRC_2eproto(); friend void protobuf_ShutdownFile_xtreemfs_2fMRC_2eproto(); - - ::google::protobuf::uint32 _has_bits_[(3 + 31) / 32]; - - // WHY DOES & HAVE LOWER PRECEDENCE THAN != !? - inline bool _has_bit(int index) const { - return (_has_bits_[index / 32] & (1u << (index % 32))) != 0; - } - inline void _set_bit(int index) { - _has_bits_[index / 32] |= (1u << (index % 32)); - } - inline void _clear_bit(int index) { - _has_bits_[index / 32] &= ~(1u << (index % 32)); - } - + void InitAsDefaultInstance(); static linkRequest* default_instance_; }; @@ -1781,29 +1809,29 @@ class listxattrRequest : public ::google::protobuf::Message { public: listxattrRequest(); virtual ~listxattrRequest(); - + listxattrRequest(const listxattrRequest& from); - + inline listxattrRequest& operator=(const listxattrRequest& from) { CopyFrom(from); return *this; } - + inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const { return _unknown_fields_; } - + inline ::google::protobuf::UnknownFieldSet* mutable_unknown_fields() { return &_unknown_fields_; } - + static const ::google::protobuf::Descriptor* descriptor(); static const listxattrRequest& default_instance(); - + void Swap(listxattrRequest* other); - + // implements Message ---------------------------------------------- - + listxattrRequest* New() const; void CopyFrom(const ::google::protobuf::Message& from); void MergeFrom(const ::google::protobuf::Message& from); @@ -1811,7 +1839,7 @@ class listxattrRequest : public ::google::protobuf::Message { void MergeFrom(const listxattrRequest& from); void Clear(); bool IsInitialized() const; - + int ByteSize() const; bool MergePartialFromCodedStream( ::google::protobuf::io::CodedInputStream* input); @@ -1824,13 +1852,13 @@ class listxattrRequest : public ::google::protobuf::Message { void SharedDtor(); void SetCachedSize(int size) const; public: - + ::google::protobuf::Metadata GetMetadata() const; - + // nested types ---------------------------------------------------- - + // accessors ------------------------------------------------------- - + // required string volume_name = 1; inline bool has_volume_name() const; inline void clear_volume_name(); @@ -1840,7 +1868,9 @@ class listxattrRequest : public ::google::protobuf::Message { inline void set_volume_name(const char* value); inline void set_volume_name(const char* value, size_t size); inline ::std::string* mutable_volume_name(); - + inline ::std::string* release_volume_name(); + inline void set_allocated_volume_name(::std::string* volume_name); + // required string path = 2; inline bool has_path() const; inline void clear_path(); @@ -1850,41 +1880,38 @@ class listxattrRequest : public ::google::protobuf::Message { inline void set_path(const char* value); inline void set_path(const char* value, size_t size); inline ::std::string* mutable_path(); - + inline ::std::string* release_path(); + inline void set_allocated_path(::std::string* path); + // required bool names_only = 3; inline bool has_names_only() const; inline void clear_names_only(); static const int kNamesOnlyFieldNumber = 3; inline bool names_only() const; inline void set_names_only(bool value); - + // @@protoc_insertion_point(class_scope:xtreemfs.pbrpc.listxattrRequest) private: + inline void set_has_volume_name(); + inline void clear_has_volume_name(); + inline void set_has_path(); + inline void clear_has_path(); + inline void set_has_names_only(); + inline void clear_has_names_only(); + ::google::protobuf::UnknownFieldSet _unknown_fields_; - mutable int _cached_size_; - + ::std::string* volume_name_; - static const ::std::string _default_volume_name_; ::std::string* path_; - static const ::std::string _default_path_; bool names_only_; + + mutable int _cached_size_; + ::google::protobuf::uint32 _has_bits_[(3 + 31) / 32]; + friend void protobuf_AddDesc_xtreemfs_2fMRC_2eproto(); friend void protobuf_AssignDesc_xtreemfs_2fMRC_2eproto(); friend void protobuf_ShutdownFile_xtreemfs_2fMRC_2eproto(); - - ::google::protobuf::uint32 _has_bits_[(3 + 31) / 32]; - - // WHY DOES & HAVE LOWER PRECEDENCE THAN != !? - inline bool _has_bit(int index) const { - return (_has_bits_[index / 32] & (1u << (index % 32))) != 0; - } - inline void _set_bit(int index) { - _has_bits_[index / 32] |= (1u << (index % 32)); - } - inline void _clear_bit(int index) { - _has_bits_[index / 32] &= ~(1u << (index % 32)); - } - + void InitAsDefaultInstance(); static listxattrRequest* default_instance_; }; @@ -1894,29 +1921,29 @@ class listxattrResponse : public ::google::protobuf::Message { public: listxattrResponse(); virtual ~listxattrResponse(); - + listxattrResponse(const listxattrResponse& from); - + inline listxattrResponse& operator=(const listxattrResponse& from) { CopyFrom(from); return *this; } - + inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const { return _unknown_fields_; } - + inline ::google::protobuf::UnknownFieldSet* mutable_unknown_fields() { return &_unknown_fields_; } - + static const ::google::protobuf::Descriptor* descriptor(); static const listxattrResponse& default_instance(); - + void Swap(listxattrResponse* other); - + // implements Message ---------------------------------------------- - + listxattrResponse* New() const; void CopyFrom(const ::google::protobuf::Message& from); void MergeFrom(const ::google::protobuf::Message& from); @@ -1924,7 +1951,7 @@ class listxattrResponse : public ::google::protobuf::Message { void MergeFrom(const listxattrResponse& from); void Clear(); bool IsInitialized() const; - + int ByteSize() const; bool MergePartialFromCodedStream( ::google::protobuf::io::CodedInputStream* input); @@ -1937,13 +1964,13 @@ class listxattrResponse : public ::google::protobuf::Message { void SharedDtor(); void SetCachedSize(int size) const; public: - + ::google::protobuf::Metadata GetMetadata() const; - + // nested types ---------------------------------------------------- - + // accessors ------------------------------------------------------- - + // repeated .xtreemfs.pbrpc.XAttr xattrs = 1; inline int xattrs_size() const; inline void clear_xattrs(); @@ -1955,30 +1982,21 @@ class listxattrResponse : public ::google::protobuf::Message { xattrs() const; inline ::google::protobuf::RepeatedPtrField< ::xtreemfs::pbrpc::XAttr >* mutable_xattrs(); - + // @@protoc_insertion_point(class_scope:xtreemfs.pbrpc.listxattrResponse) private: + ::google::protobuf::UnknownFieldSet _unknown_fields_; - mutable int _cached_size_; - + ::google::protobuf::RepeatedPtrField< ::xtreemfs::pbrpc::XAttr > xattrs_; + + mutable int _cached_size_; + ::google::protobuf::uint32 _has_bits_[(1 + 31) / 32]; + friend void protobuf_AddDesc_xtreemfs_2fMRC_2eproto(); friend void protobuf_AssignDesc_xtreemfs_2fMRC_2eproto(); friend void protobuf_ShutdownFile_xtreemfs_2fMRC_2eproto(); - - ::google::protobuf::uint32 _has_bits_[(1 + 31) / 32]; - - // WHY DOES & HAVE LOWER PRECEDENCE THAN != !? - inline bool _has_bit(int index) const { - return (_has_bits_[index / 32] & (1u << (index % 32))) != 0; - } - inline void _set_bit(int index) { - _has_bits_[index / 32] |= (1u << (index % 32)); - } - inline void _clear_bit(int index) { - _has_bits_[index / 32] &= ~(1u << (index % 32)); - } - + void InitAsDefaultInstance(); static listxattrResponse* default_instance_; }; @@ -1988,29 +2006,29 @@ class mkdirRequest : public ::google::protobuf::Message { public: mkdirRequest(); virtual ~mkdirRequest(); - + mkdirRequest(const mkdirRequest& from); - + inline mkdirRequest& operator=(const mkdirRequest& from) { CopyFrom(from); return *this; } - + inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const { return _unknown_fields_; } - + inline ::google::protobuf::UnknownFieldSet* mutable_unknown_fields() { return &_unknown_fields_; } - + static const ::google::protobuf::Descriptor* descriptor(); static const mkdirRequest& default_instance(); - + void Swap(mkdirRequest* other); - + // implements Message ---------------------------------------------- - + mkdirRequest* New() const; void CopyFrom(const ::google::protobuf::Message& from); void MergeFrom(const ::google::protobuf::Message& from); @@ -2018,7 +2036,7 @@ class mkdirRequest : public ::google::protobuf::Message { void MergeFrom(const mkdirRequest& from); void Clear(); bool IsInitialized() const; - + int ByteSize() const; bool MergePartialFromCodedStream( ::google::protobuf::io::CodedInputStream* input); @@ -2031,13 +2049,13 @@ class mkdirRequest : public ::google::protobuf::Message { void SharedDtor(); void SetCachedSize(int size) const; public: - + ::google::protobuf::Metadata GetMetadata() const; - + // nested types ---------------------------------------------------- - + // accessors ------------------------------------------------------- - + // required string volume_name = 1; inline bool has_volume_name() const; inline void clear_volume_name(); @@ -2047,7 +2065,9 @@ class mkdirRequest : public ::google::protobuf::Message { inline void set_volume_name(const char* value); inline void set_volume_name(const char* value, size_t size); inline ::std::string* mutable_volume_name(); - + inline ::std::string* release_volume_name(); + inline void set_allocated_volume_name(::std::string* volume_name); + // required string path = 2; inline bool has_path() const; inline void clear_path(); @@ -2057,41 +2077,38 @@ class mkdirRequest : public ::google::protobuf::Message { inline void set_path(const char* value); inline void set_path(const char* value, size_t size); inline ::std::string* mutable_path(); - + inline ::std::string* release_path(); + inline void set_allocated_path(::std::string* path); + // required fixed32 mode = 3; inline bool has_mode() const; inline void clear_mode(); static const int kModeFieldNumber = 3; inline ::google::protobuf::uint32 mode() const; inline void set_mode(::google::protobuf::uint32 value); - + // @@protoc_insertion_point(class_scope:xtreemfs.pbrpc.mkdirRequest) private: + inline void set_has_volume_name(); + inline void clear_has_volume_name(); + inline void set_has_path(); + inline void clear_has_path(); + inline void set_has_mode(); + inline void clear_has_mode(); + ::google::protobuf::UnknownFieldSet _unknown_fields_; - mutable int _cached_size_; - + ::std::string* volume_name_; - static const ::std::string _default_volume_name_; ::std::string* path_; - static const ::std::string _default_path_; ::google::protobuf::uint32 mode_; + + mutable int _cached_size_; + ::google::protobuf::uint32 _has_bits_[(3 + 31) / 32]; + friend void protobuf_AddDesc_xtreemfs_2fMRC_2eproto(); friend void protobuf_AssignDesc_xtreemfs_2fMRC_2eproto(); friend void protobuf_ShutdownFile_xtreemfs_2fMRC_2eproto(); - - ::google::protobuf::uint32 _has_bits_[(3 + 31) / 32]; - - // WHY DOES & HAVE LOWER PRECEDENCE THAN != !? - inline bool _has_bit(int index) const { - return (_has_bits_[index / 32] & (1u << (index % 32))) != 0; - } - inline void _set_bit(int index) { - _has_bits_[index / 32] |= (1u << (index % 32)); - } - inline void _clear_bit(int index) { - _has_bits_[index / 32] &= ~(1u << (index % 32)); - } - + void InitAsDefaultInstance(); static mkdirRequest* default_instance_; }; @@ -2101,29 +2118,29 @@ class openRequest : public ::google::protobuf::Message { public: openRequest(); virtual ~openRequest(); - + openRequest(const openRequest& from); - + inline openRequest& operator=(const openRequest& from) { CopyFrom(from); return *this; } - + inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const { return _unknown_fields_; } - + inline ::google::protobuf::UnknownFieldSet* mutable_unknown_fields() { return &_unknown_fields_; } - + static const ::google::protobuf::Descriptor* descriptor(); static const openRequest& default_instance(); - + void Swap(openRequest* other); - + // implements Message ---------------------------------------------- - + openRequest* New() const; void CopyFrom(const ::google::protobuf::Message& from); void MergeFrom(const ::google::protobuf::Message& from); @@ -2131,7 +2148,7 @@ class openRequest : public ::google::protobuf::Message { void MergeFrom(const openRequest& from); void Clear(); bool IsInitialized() const; - + int ByteSize() const; bool MergePartialFromCodedStream( ::google::protobuf::io::CodedInputStream* input); @@ -2144,13 +2161,13 @@ class openRequest : public ::google::protobuf::Message { void SharedDtor(); void SetCachedSize(int size) const; public: - + ::google::protobuf::Metadata GetMetadata() const; - + // nested types ---------------------------------------------------- - + // accessors ------------------------------------------------------- - + // required string volume_name = 1; inline bool has_volume_name() const; inline void clear_volume_name(); @@ -2160,7 +2177,9 @@ class openRequest : public ::google::protobuf::Message { inline void set_volume_name(const char* value); inline void set_volume_name(const char* value, size_t size); inline ::std::string* mutable_volume_name(); - + inline ::std::string* release_volume_name(); + inline void set_allocated_volume_name(::std::string* volume_name); + // required string path = 2; inline bool has_path() const; inline void clear_path(); @@ -2170,65 +2189,70 @@ class openRequest : public ::google::protobuf::Message { inline void set_path(const char* value); inline void set_path(const char* value, size_t size); inline ::std::string* mutable_path(); - + inline ::std::string* release_path(); + inline void set_allocated_path(::std::string* path); + // required fixed32 flags = 3; inline bool has_flags() const; inline void clear_flags(); static const int kFlagsFieldNumber = 3; inline ::google::protobuf::uint32 flags() const; inline void set_flags(::google::protobuf::uint32 value); - + // required fixed32 mode = 4; inline bool has_mode() const; inline void clear_mode(); static const int kModeFieldNumber = 4; inline ::google::protobuf::uint32 mode() const; inline void set_mode(::google::protobuf::uint32 value); - + // required fixed32 attributes = 5; inline bool has_attributes() const; inline void clear_attributes(); static const int kAttributesFieldNumber = 5; inline ::google::protobuf::uint32 attributes() const; inline void set_attributes(::google::protobuf::uint32 value); - + // optional .xtreemfs.pbrpc.VivaldiCoordinates coordinates = 6; inline bool has_coordinates() const; inline void clear_coordinates(); static const int kCoordinatesFieldNumber = 6; inline const ::xtreemfs::pbrpc::VivaldiCoordinates& coordinates() const; inline ::xtreemfs::pbrpc::VivaldiCoordinates* mutable_coordinates(); - + inline ::xtreemfs::pbrpc::VivaldiCoordinates* release_coordinates(); + inline void set_allocated_coordinates(::xtreemfs::pbrpc::VivaldiCoordinates* coordinates); + // @@protoc_insertion_point(class_scope:xtreemfs.pbrpc.openRequest) private: + inline void set_has_volume_name(); + inline void clear_has_volume_name(); + inline void set_has_path(); + inline void clear_has_path(); + inline void set_has_flags(); + inline void clear_has_flags(); + inline void set_has_mode(); + inline void clear_has_mode(); + inline void set_has_attributes(); + inline void clear_has_attributes(); + inline void set_has_coordinates(); + inline void clear_has_coordinates(); + ::google::protobuf::UnknownFieldSet _unknown_fields_; - mutable int _cached_size_; - + ::std::string* volume_name_; - static const ::std::string _default_volume_name_; ::std::string* path_; - static const ::std::string _default_path_; ::google::protobuf::uint32 flags_; ::google::protobuf::uint32 mode_; - ::google::protobuf::uint32 attributes_; ::xtreemfs::pbrpc::VivaldiCoordinates* coordinates_; + ::google::protobuf::uint32 attributes_; + + mutable int _cached_size_; + ::google::protobuf::uint32 _has_bits_[(6 + 31) / 32]; + friend void protobuf_AddDesc_xtreemfs_2fMRC_2eproto(); friend void protobuf_AssignDesc_xtreemfs_2fMRC_2eproto(); friend void protobuf_ShutdownFile_xtreemfs_2fMRC_2eproto(); - - ::google::protobuf::uint32 _has_bits_[(6 + 31) / 32]; - - // WHY DOES & HAVE LOWER PRECEDENCE THAN != !? - inline bool _has_bit(int index) const { - return (_has_bits_[index / 32] & (1u << (index % 32))) != 0; - } - inline void _set_bit(int index) { - _has_bits_[index / 32] |= (1u << (index % 32)); - } - inline void _clear_bit(int index) { - _has_bits_[index / 32] &= ~(1u << (index % 32)); - } - + void InitAsDefaultInstance(); static openRequest* default_instance_; }; @@ -2238,29 +2262,29 @@ class openResponse : public ::google::protobuf::Message { public: openResponse(); virtual ~openResponse(); - + openResponse(const openResponse& from); - + inline openResponse& operator=(const openResponse& from) { CopyFrom(from); return *this; } - + inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const { return _unknown_fields_; } - + inline ::google::protobuf::UnknownFieldSet* mutable_unknown_fields() { return &_unknown_fields_; } - + static const ::google::protobuf::Descriptor* descriptor(); static const openResponse& default_instance(); - + void Swap(openResponse* other); - + // implements Message ---------------------------------------------- - + openResponse* New() const; void CopyFrom(const ::google::protobuf::Message& from); void MergeFrom(const ::google::protobuf::Message& from); @@ -2268,7 +2292,7 @@ class openResponse : public ::google::protobuf::Message { void MergeFrom(const openResponse& from); void Clear(); bool IsInitialized() const; - + int ByteSize() const; bool MergePartialFromCodedStream( ::google::protobuf::io::CodedInputStream* input); @@ -2281,51 +2305,48 @@ class openResponse : public ::google::protobuf::Message { void SharedDtor(); void SetCachedSize(int size) const; public: - + ::google::protobuf::Metadata GetMetadata() const; - + // nested types ---------------------------------------------------- - + // accessors ------------------------------------------------------- - + // required .xtreemfs.pbrpc.FileCredentials creds = 1; inline bool has_creds() const; inline void clear_creds(); static const int kCredsFieldNumber = 1; inline const ::xtreemfs::pbrpc::FileCredentials& creds() const; inline ::xtreemfs::pbrpc::FileCredentials* mutable_creds(); - + inline ::xtreemfs::pbrpc::FileCredentials* release_creds(); + inline void set_allocated_creds(::xtreemfs::pbrpc::FileCredentials* creds); + // required fixed32 timestamp_s = 2; inline bool has_timestamp_s() const; inline void clear_timestamp_s(); static const int kTimestampSFieldNumber = 2; inline ::google::protobuf::uint32 timestamp_s() const; inline void set_timestamp_s(::google::protobuf::uint32 value); - + // @@protoc_insertion_point(class_scope:xtreemfs.pbrpc.openResponse) private: + inline void set_has_creds(); + inline void clear_has_creds(); + inline void set_has_timestamp_s(); + inline void clear_has_timestamp_s(); + ::google::protobuf::UnknownFieldSet _unknown_fields_; - mutable int _cached_size_; - + ::xtreemfs::pbrpc::FileCredentials* creds_; ::google::protobuf::uint32 timestamp_s_; + + mutable int _cached_size_; + ::google::protobuf::uint32 _has_bits_[(2 + 31) / 32]; + friend void protobuf_AddDesc_xtreemfs_2fMRC_2eproto(); friend void protobuf_AssignDesc_xtreemfs_2fMRC_2eproto(); friend void protobuf_ShutdownFile_xtreemfs_2fMRC_2eproto(); - - ::google::protobuf::uint32 _has_bits_[(2 + 31) / 32]; - - // WHY DOES & HAVE LOWER PRECEDENCE THAN != !? - inline bool _has_bit(int index) const { - return (_has_bits_[index / 32] & (1u << (index % 32))) != 0; - } - inline void _set_bit(int index) { - _has_bits_[index / 32] |= (1u << (index % 32)); - } - inline void _clear_bit(int index) { - _has_bits_[index / 32] &= ~(1u << (index % 32)); - } - + void InitAsDefaultInstance(); static openResponse* default_instance_; }; @@ -2335,29 +2356,29 @@ class readdirRequest : public ::google::protobuf::Message { public: readdirRequest(); virtual ~readdirRequest(); - + readdirRequest(const readdirRequest& from); - + inline readdirRequest& operator=(const readdirRequest& from) { CopyFrom(from); return *this; } - + inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const { return _unknown_fields_; } - + inline ::google::protobuf::UnknownFieldSet* mutable_unknown_fields() { return &_unknown_fields_; } - + static const ::google::protobuf::Descriptor* descriptor(); static const readdirRequest& default_instance(); - + void Swap(readdirRequest* other); - + // implements Message ---------------------------------------------- - + readdirRequest* New() const; void CopyFrom(const ::google::protobuf::Message& from); void MergeFrom(const ::google::protobuf::Message& from); @@ -2365,7 +2386,7 @@ class readdirRequest : public ::google::protobuf::Message { void MergeFrom(const readdirRequest& from); void Clear(); bool IsInitialized() const; - + int ByteSize() const; bool MergePartialFromCodedStream( ::google::protobuf::io::CodedInputStream* input); @@ -2378,13 +2399,13 @@ class readdirRequest : public ::google::protobuf::Message { void SharedDtor(); void SetCachedSize(int size) const; public: - + ::google::protobuf::Metadata GetMetadata() const; - + // nested types ---------------------------------------------------- - + // accessors ------------------------------------------------------- - + // required string volume_name = 1; inline bool has_volume_name() const; inline void clear_volume_name(); @@ -2394,7 +2415,9 @@ class readdirRequest : public ::google::protobuf::Message { inline void set_volume_name(const char* value); inline void set_volume_name(const char* value, size_t size); inline ::std::string* mutable_volume_name(); - + inline ::std::string* release_volume_name(); + inline void set_allocated_volume_name(::std::string* volume_name); + // required string path = 2; inline bool has_path() const; inline void clear_path(); @@ -2404,65 +2427,68 @@ class readdirRequest : public ::google::protobuf::Message { inline void set_path(const char* value); inline void set_path(const char* value, size_t size); inline ::std::string* mutable_path(); - + inline ::std::string* release_path(); + inline void set_allocated_path(::std::string* path); + // required fixed64 known_etag = 3; inline bool has_known_etag() const; inline void clear_known_etag(); static const int kKnownEtagFieldNumber = 3; inline ::google::protobuf::uint64 known_etag() const; inline void set_known_etag(::google::protobuf::uint64 value); - + // required fixed32 limit_directory_entries_count = 4; inline bool has_limit_directory_entries_count() const; inline void clear_limit_directory_entries_count(); static const int kLimitDirectoryEntriesCountFieldNumber = 4; inline ::google::protobuf::uint32 limit_directory_entries_count() const; inline void set_limit_directory_entries_count(::google::protobuf::uint32 value); - + // required bool names_only = 5; inline bool has_names_only() const; inline void clear_names_only(); static const int kNamesOnlyFieldNumber = 5; inline bool names_only() const; inline void set_names_only(bool value); - + // required fixed64 seen_directory_entries_count = 6; inline bool has_seen_directory_entries_count() const; inline void clear_seen_directory_entries_count(); static const int kSeenDirectoryEntriesCountFieldNumber = 6; inline ::google::protobuf::uint64 seen_directory_entries_count() const; inline void set_seen_directory_entries_count(::google::protobuf::uint64 value); - + // @@protoc_insertion_point(class_scope:xtreemfs.pbrpc.readdirRequest) private: + inline void set_has_volume_name(); + inline void clear_has_volume_name(); + inline void set_has_path(); + inline void clear_has_path(); + inline void set_has_known_etag(); + inline void clear_has_known_etag(); + inline void set_has_limit_directory_entries_count(); + inline void clear_has_limit_directory_entries_count(); + inline void set_has_names_only(); + inline void clear_has_names_only(); + inline void set_has_seen_directory_entries_count(); + inline void clear_has_seen_directory_entries_count(); + ::google::protobuf::UnknownFieldSet _unknown_fields_; - mutable int _cached_size_; - + ::std::string* volume_name_; - static const ::std::string _default_volume_name_; ::std::string* path_; - static const ::std::string _default_path_; ::google::protobuf::uint64 known_etag_; ::google::protobuf::uint32 limit_directory_entries_count_; bool names_only_; ::google::protobuf::uint64 seen_directory_entries_count_; + + mutable int _cached_size_; + ::google::protobuf::uint32 _has_bits_[(6 + 31) / 32]; + friend void protobuf_AddDesc_xtreemfs_2fMRC_2eproto(); friend void protobuf_AssignDesc_xtreemfs_2fMRC_2eproto(); friend void protobuf_ShutdownFile_xtreemfs_2fMRC_2eproto(); - - ::google::protobuf::uint32 _has_bits_[(6 + 31) / 32]; - - // WHY DOES & HAVE LOWER PRECEDENCE THAN != !? - inline bool _has_bit(int index) const { - return (_has_bits_[index / 32] & (1u << (index % 32))) != 0; - } - inline void _set_bit(int index) { - _has_bits_[index / 32] |= (1u << (index % 32)); - } - inline void _clear_bit(int index) { - _has_bits_[index / 32] &= ~(1u << (index % 32)); - } - + void InitAsDefaultInstance(); static readdirRequest* default_instance_; }; @@ -2472,29 +2498,29 @@ class readlinkRequest : public ::google::protobuf::Message { public: readlinkRequest(); virtual ~readlinkRequest(); - + readlinkRequest(const readlinkRequest& from); - + inline readlinkRequest& operator=(const readlinkRequest& from) { CopyFrom(from); return *this; } - + inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const { return _unknown_fields_; } - + inline ::google::protobuf::UnknownFieldSet* mutable_unknown_fields() { return &_unknown_fields_; } - + static const ::google::protobuf::Descriptor* descriptor(); static const readlinkRequest& default_instance(); - + void Swap(readlinkRequest* other); - + // implements Message ---------------------------------------------- - + readlinkRequest* New() const; void CopyFrom(const ::google::protobuf::Message& from); void MergeFrom(const ::google::protobuf::Message& from); @@ -2502,7 +2528,7 @@ class readlinkRequest : public ::google::protobuf::Message { void MergeFrom(const readlinkRequest& from); void Clear(); bool IsInitialized() const; - + int ByteSize() const; bool MergePartialFromCodedStream( ::google::protobuf::io::CodedInputStream* input); @@ -2515,13 +2541,13 @@ class readlinkRequest : public ::google::protobuf::Message { void SharedDtor(); void SetCachedSize(int size) const; public: - + ::google::protobuf::Metadata GetMetadata() const; - + // nested types ---------------------------------------------------- - + // accessors ------------------------------------------------------- - + // required string volume_name = 1; inline bool has_volume_name() const; inline void clear_volume_name(); @@ -2531,7 +2557,9 @@ class readlinkRequest : public ::google::protobuf::Message { inline void set_volume_name(const char* value); inline void set_volume_name(const char* value, size_t size); inline ::std::string* mutable_volume_name(); - + inline ::std::string* release_volume_name(); + inline void set_allocated_volume_name(::std::string* volume_name); + // required string path = 2; inline bool has_path() const; inline void clear_path(); @@ -2541,33 +2569,28 @@ class readlinkRequest : public ::google::protobuf::Message { inline void set_path(const char* value); inline void set_path(const char* value, size_t size); inline ::std::string* mutable_path(); - + inline ::std::string* release_path(); + inline void set_allocated_path(::std::string* path); + // @@protoc_insertion_point(class_scope:xtreemfs.pbrpc.readlinkRequest) private: + inline void set_has_volume_name(); + inline void clear_has_volume_name(); + inline void set_has_path(); + inline void clear_has_path(); + ::google::protobuf::UnknownFieldSet _unknown_fields_; - mutable int _cached_size_; - + ::std::string* volume_name_; - static const ::std::string _default_volume_name_; ::std::string* path_; - static const ::std::string _default_path_; + + mutable int _cached_size_; + ::google::protobuf::uint32 _has_bits_[(2 + 31) / 32]; + friend void protobuf_AddDesc_xtreemfs_2fMRC_2eproto(); friend void protobuf_AssignDesc_xtreemfs_2fMRC_2eproto(); friend void protobuf_ShutdownFile_xtreemfs_2fMRC_2eproto(); - - ::google::protobuf::uint32 _has_bits_[(2 + 31) / 32]; - - // WHY DOES & HAVE LOWER PRECEDENCE THAN != !? - inline bool _has_bit(int index) const { - return (_has_bits_[index / 32] & (1u << (index % 32))) != 0; - } - inline void _set_bit(int index) { - _has_bits_[index / 32] |= (1u << (index % 32)); - } - inline void _clear_bit(int index) { - _has_bits_[index / 32] &= ~(1u << (index % 32)); - } - + void InitAsDefaultInstance(); static readlinkRequest* default_instance_; }; @@ -2577,29 +2600,29 @@ class readlinkResponse : public ::google::protobuf::Message { public: readlinkResponse(); virtual ~readlinkResponse(); - + readlinkResponse(const readlinkResponse& from); - + inline readlinkResponse& operator=(const readlinkResponse& from) { CopyFrom(from); return *this; } - + inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const { return _unknown_fields_; } - + inline ::google::protobuf::UnknownFieldSet* mutable_unknown_fields() { return &_unknown_fields_; } - + static const ::google::protobuf::Descriptor* descriptor(); static const readlinkResponse& default_instance(); - + void Swap(readlinkResponse* other); - + // implements Message ---------------------------------------------- - + readlinkResponse* New() const; void CopyFrom(const ::google::protobuf::Message& from); void MergeFrom(const ::google::protobuf::Message& from); @@ -2607,7 +2630,7 @@ class readlinkResponse : public ::google::protobuf::Message { void MergeFrom(const readlinkResponse& from); void Clear(); bool IsInitialized() const; - + int ByteSize() const; bool MergePartialFromCodedStream( ::google::protobuf::io::CodedInputStream* input); @@ -2620,13 +2643,13 @@ class readlinkResponse : public ::google::protobuf::Message { void SharedDtor(); void SetCachedSize(int size) const; public: - + ::google::protobuf::Metadata GetMetadata() const; - + // nested types ---------------------------------------------------- - + // accessors ------------------------------------------------------- - + // repeated string link_target_path = 1; inline int link_target_path_size() const; inline void clear_link_target_path(); @@ -2642,30 +2665,21 @@ class readlinkResponse : public ::google::protobuf::Message { inline void add_link_target_path(const char* value, size_t size); inline const ::google::protobuf::RepeatedPtrField< ::std::string>& link_target_path() const; inline ::google::protobuf::RepeatedPtrField< ::std::string>* mutable_link_target_path(); - + // @@protoc_insertion_point(class_scope:xtreemfs.pbrpc.readlinkResponse) private: + ::google::protobuf::UnknownFieldSet _unknown_fields_; - mutable int _cached_size_; - + ::google::protobuf::RepeatedPtrField< ::std::string> link_target_path_; + + mutable int _cached_size_; + ::google::protobuf::uint32 _has_bits_[(1 + 31) / 32]; + friend void protobuf_AddDesc_xtreemfs_2fMRC_2eproto(); friend void protobuf_AssignDesc_xtreemfs_2fMRC_2eproto(); friend void protobuf_ShutdownFile_xtreemfs_2fMRC_2eproto(); - - ::google::protobuf::uint32 _has_bits_[(1 + 31) / 32]; - - // WHY DOES & HAVE LOWER PRECEDENCE THAN != !? - inline bool _has_bit(int index) const { - return (_has_bits_[index / 32] & (1u << (index % 32))) != 0; - } - inline void _set_bit(int index) { - _has_bits_[index / 32] |= (1u << (index % 32)); - } - inline void _clear_bit(int index) { - _has_bits_[index / 32] &= ~(1u << (index % 32)); - } - + void InitAsDefaultInstance(); static readlinkResponse* default_instance_; }; @@ -2675,29 +2689,29 @@ class removexattrRequest : public ::google::protobuf::Message { public: removexattrRequest(); virtual ~removexattrRequest(); - + removexattrRequest(const removexattrRequest& from); - + inline removexattrRequest& operator=(const removexattrRequest& from) { CopyFrom(from); return *this; } - + inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const { return _unknown_fields_; } - + inline ::google::protobuf::UnknownFieldSet* mutable_unknown_fields() { return &_unknown_fields_; } - + static const ::google::protobuf::Descriptor* descriptor(); static const removexattrRequest& default_instance(); - + void Swap(removexattrRequest* other); - + // implements Message ---------------------------------------------- - + removexattrRequest* New() const; void CopyFrom(const ::google::protobuf::Message& from); void MergeFrom(const ::google::protobuf::Message& from); @@ -2705,7 +2719,7 @@ class removexattrRequest : public ::google::protobuf::Message { void MergeFrom(const removexattrRequest& from); void Clear(); bool IsInitialized() const; - + int ByteSize() const; bool MergePartialFromCodedStream( ::google::protobuf::io::CodedInputStream* input); @@ -2718,13 +2732,13 @@ class removexattrRequest : public ::google::protobuf::Message { void SharedDtor(); void SetCachedSize(int size) const; public: - + ::google::protobuf::Metadata GetMetadata() const; - + // nested types ---------------------------------------------------- - + // accessors ------------------------------------------------------- - + // required string volume_name = 1; inline bool has_volume_name() const; inline void clear_volume_name(); @@ -2734,7 +2748,9 @@ class removexattrRequest : public ::google::protobuf::Message { inline void set_volume_name(const char* value); inline void set_volume_name(const char* value, size_t size); inline ::std::string* mutable_volume_name(); - + inline ::std::string* release_volume_name(); + inline void set_allocated_volume_name(::std::string* volume_name); + // required string path = 2; inline bool has_path() const; inline void clear_path(); @@ -2744,7 +2760,9 @@ class removexattrRequest : public ::google::protobuf::Message { inline void set_path(const char* value); inline void set_path(const char* value, size_t size); inline ::std::string* mutable_path(); - + inline ::std::string* release_path(); + inline void set_allocated_path(::std::string* path); + // required string name = 3; inline bool has_name() const; inline void clear_name(); @@ -2754,35 +2772,31 @@ class removexattrRequest : public ::google::protobuf::Message { inline void set_name(const char* value); inline void set_name(const char* value, size_t size); inline ::std::string* mutable_name(); - + inline ::std::string* release_name(); + inline void set_allocated_name(::std::string* name); + // @@protoc_insertion_point(class_scope:xtreemfs.pbrpc.removexattrRequest) private: + inline void set_has_volume_name(); + inline void clear_has_volume_name(); + inline void set_has_path(); + inline void clear_has_path(); + inline void set_has_name(); + inline void clear_has_name(); + ::google::protobuf::UnknownFieldSet _unknown_fields_; - mutable int _cached_size_; - + ::std::string* volume_name_; - static const ::std::string _default_volume_name_; ::std::string* path_; - static const ::std::string _default_path_; ::std::string* name_; - static const ::std::string _default_name_; + + mutable int _cached_size_; + ::google::protobuf::uint32 _has_bits_[(3 + 31) / 32]; + friend void protobuf_AddDesc_xtreemfs_2fMRC_2eproto(); friend void protobuf_AssignDesc_xtreemfs_2fMRC_2eproto(); friend void protobuf_ShutdownFile_xtreemfs_2fMRC_2eproto(); - - ::google::protobuf::uint32 _has_bits_[(3 + 31) / 32]; - - // WHY DOES & HAVE LOWER PRECEDENCE THAN != !? - inline bool _has_bit(int index) const { - return (_has_bits_[index / 32] & (1u << (index % 32))) != 0; - } - inline void _set_bit(int index) { - _has_bits_[index / 32] |= (1u << (index % 32)); - } - inline void _clear_bit(int index) { - _has_bits_[index / 32] &= ~(1u << (index % 32)); - } - + void InitAsDefaultInstance(); static removexattrRequest* default_instance_; }; @@ -2792,29 +2806,29 @@ class renameRequest : public ::google::protobuf::Message { public: renameRequest(); virtual ~renameRequest(); - + renameRequest(const renameRequest& from); - + inline renameRequest& operator=(const renameRequest& from) { CopyFrom(from); return *this; } - + inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const { return _unknown_fields_; } - + inline ::google::protobuf::UnknownFieldSet* mutable_unknown_fields() { return &_unknown_fields_; } - + static const ::google::protobuf::Descriptor* descriptor(); static const renameRequest& default_instance(); - + void Swap(renameRequest* other); - + // implements Message ---------------------------------------------- - + renameRequest* New() const; void CopyFrom(const ::google::protobuf::Message& from); void MergeFrom(const ::google::protobuf::Message& from); @@ -2822,7 +2836,7 @@ class renameRequest : public ::google::protobuf::Message { void MergeFrom(const renameRequest& from); void Clear(); bool IsInitialized() const; - + int ByteSize() const; bool MergePartialFromCodedStream( ::google::protobuf::io::CodedInputStream* input); @@ -2835,13 +2849,13 @@ class renameRequest : public ::google::protobuf::Message { void SharedDtor(); void SetCachedSize(int size) const; public: - + ::google::protobuf::Metadata GetMetadata() const; - + // nested types ---------------------------------------------------- - + // accessors ------------------------------------------------------- - + // required string volume_name = 1; inline bool has_volume_name() const; inline void clear_volume_name(); @@ -2851,7 +2865,9 @@ class renameRequest : public ::google::protobuf::Message { inline void set_volume_name(const char* value); inline void set_volume_name(const char* value, size_t size); inline ::std::string* mutable_volume_name(); - + inline ::std::string* release_volume_name(); + inline void set_allocated_volume_name(::std::string* volume_name); + // required string source_path = 2; inline bool has_source_path() const; inline void clear_source_path(); @@ -2861,7 +2877,9 @@ class renameRequest : public ::google::protobuf::Message { inline void set_source_path(const char* value); inline void set_source_path(const char* value, size_t size); inline ::std::string* mutable_source_path(); - + inline ::std::string* release_source_path(); + inline void set_allocated_source_path(::std::string* source_path); + // required string target_path = 3; inline bool has_target_path() const; inline void clear_target_path(); @@ -2871,35 +2889,31 @@ class renameRequest : public ::google::protobuf::Message { inline void set_target_path(const char* value); inline void set_target_path(const char* value, size_t size); inline ::std::string* mutable_target_path(); - + inline ::std::string* release_target_path(); + inline void set_allocated_target_path(::std::string* target_path); + // @@protoc_insertion_point(class_scope:xtreemfs.pbrpc.renameRequest) private: + inline void set_has_volume_name(); + inline void clear_has_volume_name(); + inline void set_has_source_path(); + inline void clear_has_source_path(); + inline void set_has_target_path(); + inline void clear_has_target_path(); + ::google::protobuf::UnknownFieldSet _unknown_fields_; - mutable int _cached_size_; - + ::std::string* volume_name_; - static const ::std::string _default_volume_name_; ::std::string* source_path_; - static const ::std::string _default_source_path_; ::std::string* target_path_; - static const ::std::string _default_target_path_; + + mutable int _cached_size_; + ::google::protobuf::uint32 _has_bits_[(3 + 31) / 32]; + friend void protobuf_AddDesc_xtreemfs_2fMRC_2eproto(); friend void protobuf_AssignDesc_xtreemfs_2fMRC_2eproto(); friend void protobuf_ShutdownFile_xtreemfs_2fMRC_2eproto(); - - ::google::protobuf::uint32 _has_bits_[(3 + 31) / 32]; - - // WHY DOES & HAVE LOWER PRECEDENCE THAN != !? - inline bool _has_bit(int index) const { - return (_has_bits_[index / 32] & (1u << (index % 32))) != 0; - } - inline void _set_bit(int index) { - _has_bits_[index / 32] |= (1u << (index % 32)); - } - inline void _clear_bit(int index) { - _has_bits_[index / 32] &= ~(1u << (index % 32)); - } - + void InitAsDefaultInstance(); static renameRequest* default_instance_; }; @@ -2909,29 +2923,29 @@ class renameResponse : public ::google::protobuf::Message { public: renameResponse(); virtual ~renameResponse(); - + renameResponse(const renameResponse& from); - + inline renameResponse& operator=(const renameResponse& from) { CopyFrom(from); return *this; } - + inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const { return _unknown_fields_; } - + inline ::google::protobuf::UnknownFieldSet* mutable_unknown_fields() { return &_unknown_fields_; } - + static const ::google::protobuf::Descriptor* descriptor(); static const renameResponse& default_instance(); - + void Swap(renameResponse* other); - + // implements Message ---------------------------------------------- - + renameResponse* New() const; void CopyFrom(const ::google::protobuf::Message& from); void MergeFrom(const ::google::protobuf::Message& from); @@ -2939,7 +2953,7 @@ class renameResponse : public ::google::protobuf::Message { void MergeFrom(const renameResponse& from); void Clear(); bool IsInitialized() const; - + int ByteSize() const; bool MergePartialFromCodedStream( ::google::protobuf::io::CodedInputStream* input); @@ -2952,51 +2966,48 @@ class renameResponse : public ::google::protobuf::Message { void SharedDtor(); void SetCachedSize(int size) const; public: - + ::google::protobuf::Metadata GetMetadata() const; - + // nested types ---------------------------------------------------- - + // accessors ------------------------------------------------------- - + // required fixed32 timestamp_s = 1; inline bool has_timestamp_s() const; inline void clear_timestamp_s(); static const int kTimestampSFieldNumber = 1; inline ::google::protobuf::uint32 timestamp_s() const; inline void set_timestamp_s(::google::protobuf::uint32 value); - + // optional .xtreemfs.pbrpc.FileCredentials creds = 2; inline bool has_creds() const; inline void clear_creds(); static const int kCredsFieldNumber = 2; inline const ::xtreemfs::pbrpc::FileCredentials& creds() const; inline ::xtreemfs::pbrpc::FileCredentials* mutable_creds(); - + inline ::xtreemfs::pbrpc::FileCredentials* release_creds(); + inline void set_allocated_creds(::xtreemfs::pbrpc::FileCredentials* creds); + // @@protoc_insertion_point(class_scope:xtreemfs.pbrpc.renameResponse) private: + inline void set_has_timestamp_s(); + inline void clear_has_timestamp_s(); + inline void set_has_creds(); + inline void clear_has_creds(); + ::google::protobuf::UnknownFieldSet _unknown_fields_; - mutable int _cached_size_; - - ::google::protobuf::uint32 timestamp_s_; + ::xtreemfs::pbrpc::FileCredentials* creds_; + ::google::protobuf::uint32 timestamp_s_; + + mutable int _cached_size_; + ::google::protobuf::uint32 _has_bits_[(2 + 31) / 32]; + friend void protobuf_AddDesc_xtreemfs_2fMRC_2eproto(); friend void protobuf_AssignDesc_xtreemfs_2fMRC_2eproto(); friend void protobuf_ShutdownFile_xtreemfs_2fMRC_2eproto(); - - ::google::protobuf::uint32 _has_bits_[(2 + 31) / 32]; - - // WHY DOES & HAVE LOWER PRECEDENCE THAN != !? - inline bool _has_bit(int index) const { - return (_has_bits_[index / 32] & (1u << (index % 32))) != 0; - } - inline void _set_bit(int index) { - _has_bits_[index / 32] |= (1u << (index % 32)); - } - inline void _clear_bit(int index) { - _has_bits_[index / 32] &= ~(1u << (index % 32)); - } - + void InitAsDefaultInstance(); static renameResponse* default_instance_; }; @@ -3006,29 +3017,29 @@ class rmdirRequest : public ::google::protobuf::Message { public: rmdirRequest(); virtual ~rmdirRequest(); - + rmdirRequest(const rmdirRequest& from); - + inline rmdirRequest& operator=(const rmdirRequest& from) { CopyFrom(from); return *this; } - + inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const { return _unknown_fields_; } - + inline ::google::protobuf::UnknownFieldSet* mutable_unknown_fields() { return &_unknown_fields_; } - + static const ::google::protobuf::Descriptor* descriptor(); static const rmdirRequest& default_instance(); - + void Swap(rmdirRequest* other); - + // implements Message ---------------------------------------------- - + rmdirRequest* New() const; void CopyFrom(const ::google::protobuf::Message& from); void MergeFrom(const ::google::protobuf::Message& from); @@ -3036,7 +3047,7 @@ class rmdirRequest : public ::google::protobuf::Message { void MergeFrom(const rmdirRequest& from); void Clear(); bool IsInitialized() const; - + int ByteSize() const; bool MergePartialFromCodedStream( ::google::protobuf::io::CodedInputStream* input); @@ -3049,13 +3060,13 @@ class rmdirRequest : public ::google::protobuf::Message { void SharedDtor(); void SetCachedSize(int size) const; public: - + ::google::protobuf::Metadata GetMetadata() const; - + // nested types ---------------------------------------------------- - + // accessors ------------------------------------------------------- - + // required string volume_name = 1; inline bool has_volume_name() const; inline void clear_volume_name(); @@ -3065,7 +3076,9 @@ class rmdirRequest : public ::google::protobuf::Message { inline void set_volume_name(const char* value); inline void set_volume_name(const char* value, size_t size); inline ::std::string* mutable_volume_name(); - + inline ::std::string* release_volume_name(); + inline void set_allocated_volume_name(::std::string* volume_name); + // required string path = 2; inline bool has_path() const; inline void clear_path(); @@ -3075,33 +3088,28 @@ class rmdirRequest : public ::google::protobuf::Message { inline void set_path(const char* value); inline void set_path(const char* value, size_t size); inline ::std::string* mutable_path(); - + inline ::std::string* release_path(); + inline void set_allocated_path(::std::string* path); + // @@protoc_insertion_point(class_scope:xtreemfs.pbrpc.rmdirRequest) private: + inline void set_has_volume_name(); + inline void clear_has_volume_name(); + inline void set_has_path(); + inline void clear_has_path(); + ::google::protobuf::UnknownFieldSet _unknown_fields_; - mutable int _cached_size_; - + ::std::string* volume_name_; - static const ::std::string _default_volume_name_; ::std::string* path_; - static const ::std::string _default_path_; + + mutable int _cached_size_; + ::google::protobuf::uint32 _has_bits_[(2 + 31) / 32]; + friend void protobuf_AddDesc_xtreemfs_2fMRC_2eproto(); friend void protobuf_AssignDesc_xtreemfs_2fMRC_2eproto(); friend void protobuf_ShutdownFile_xtreemfs_2fMRC_2eproto(); - - ::google::protobuf::uint32 _has_bits_[(2 + 31) / 32]; - - // WHY DOES & HAVE LOWER PRECEDENCE THAN != !? - inline bool _has_bit(int index) const { - return (_has_bits_[index / 32] & (1u << (index % 32))) != 0; - } - inline void _set_bit(int index) { - _has_bits_[index / 32] |= (1u << (index % 32)); - } - inline void _clear_bit(int index) { - _has_bits_[index / 32] &= ~(1u << (index % 32)); - } - + void InitAsDefaultInstance(); static rmdirRequest* default_instance_; }; @@ -3111,29 +3119,29 @@ class setattrRequest : public ::google::protobuf::Message { public: setattrRequest(); virtual ~setattrRequest(); - + setattrRequest(const setattrRequest& from); - + inline setattrRequest& operator=(const setattrRequest& from) { CopyFrom(from); return *this; } - + inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const { return _unknown_fields_; } - + inline ::google::protobuf::UnknownFieldSet* mutable_unknown_fields() { return &_unknown_fields_; } - + static const ::google::protobuf::Descriptor* descriptor(); static const setattrRequest& default_instance(); - + void Swap(setattrRequest* other); - + // implements Message ---------------------------------------------- - + setattrRequest* New() const; void CopyFrom(const ::google::protobuf::Message& from); void MergeFrom(const ::google::protobuf::Message& from); @@ -3141,7 +3149,7 @@ class setattrRequest : public ::google::protobuf::Message { void MergeFrom(const setattrRequest& from); void Clear(); bool IsInitialized() const; - + int ByteSize() const; bool MergePartialFromCodedStream( ::google::protobuf::io::CodedInputStream* input); @@ -3154,13 +3162,13 @@ class setattrRequest : public ::google::protobuf::Message { void SharedDtor(); void SetCachedSize(int size) const; public: - + ::google::protobuf::Metadata GetMetadata() const; - + // nested types ---------------------------------------------------- - + // accessors ------------------------------------------------------- - + // required string volume_name = 1; inline bool has_volume_name() const; inline void clear_volume_name(); @@ -3170,7 +3178,9 @@ class setattrRequest : public ::google::protobuf::Message { inline void set_volume_name(const char* value); inline void set_volume_name(const char* value, size_t size); inline ::std::string* mutable_volume_name(); - + inline ::std::string* release_volume_name(); + inline void set_allocated_volume_name(::std::string* volume_name); + // required string path = 2; inline bool has_path() const; inline void clear_path(); @@ -3180,49 +3190,50 @@ class setattrRequest : public ::google::protobuf::Message { inline void set_path(const char* value); inline void set_path(const char* value, size_t size); inline ::std::string* mutable_path(); - + inline ::std::string* release_path(); + inline void set_allocated_path(::std::string* path); + // required .xtreemfs.pbrpc.Stat stbuf = 3; inline bool has_stbuf() const; inline void clear_stbuf(); static const int kStbufFieldNumber = 3; inline const ::xtreemfs::pbrpc::Stat& stbuf() const; inline ::xtreemfs::pbrpc::Stat* mutable_stbuf(); - + inline ::xtreemfs::pbrpc::Stat* release_stbuf(); + inline void set_allocated_stbuf(::xtreemfs::pbrpc::Stat* stbuf); + // required fixed32 to_set = 4; inline bool has_to_set() const; inline void clear_to_set(); static const int kToSetFieldNumber = 4; inline ::google::protobuf::uint32 to_set() const; inline void set_to_set(::google::protobuf::uint32 value); - + // @@protoc_insertion_point(class_scope:xtreemfs.pbrpc.setattrRequest) private: + inline void set_has_volume_name(); + inline void clear_has_volume_name(); + inline void set_has_path(); + inline void clear_has_path(); + inline void set_has_stbuf(); + inline void clear_has_stbuf(); + inline void set_has_to_set(); + inline void clear_has_to_set(); + ::google::protobuf::UnknownFieldSet _unknown_fields_; - mutable int _cached_size_; - + ::std::string* volume_name_; - static const ::std::string _default_volume_name_; ::std::string* path_; - static const ::std::string _default_path_; ::xtreemfs::pbrpc::Stat* stbuf_; ::google::protobuf::uint32 to_set_; + + mutable int _cached_size_; + ::google::protobuf::uint32 _has_bits_[(4 + 31) / 32]; + friend void protobuf_AddDesc_xtreemfs_2fMRC_2eproto(); friend void protobuf_AssignDesc_xtreemfs_2fMRC_2eproto(); friend void protobuf_ShutdownFile_xtreemfs_2fMRC_2eproto(); - - ::google::protobuf::uint32 _has_bits_[(4 + 31) / 32]; - - // WHY DOES & HAVE LOWER PRECEDENCE THAN != !? - inline bool _has_bit(int index) const { - return (_has_bits_[index / 32] & (1u << (index % 32))) != 0; - } - inline void _set_bit(int index) { - _has_bits_[index / 32] |= (1u << (index % 32)); - } - inline void _clear_bit(int index) { - _has_bits_[index / 32] &= ~(1u << (index % 32)); - } - + void InitAsDefaultInstance(); static setattrRequest* default_instance_; }; @@ -3232,29 +3243,29 @@ class setxattrRequest : public ::google::protobuf::Message { public: setxattrRequest(); virtual ~setxattrRequest(); - + setxattrRequest(const setxattrRequest& from); - + inline setxattrRequest& operator=(const setxattrRequest& from) { CopyFrom(from); return *this; } - + inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const { return _unknown_fields_; } - + inline ::google::protobuf::UnknownFieldSet* mutable_unknown_fields() { return &_unknown_fields_; } - + static const ::google::protobuf::Descriptor* descriptor(); static const setxattrRequest& default_instance(); - + void Swap(setxattrRequest* other); - + // implements Message ---------------------------------------------- - + setxattrRequest* New() const; void CopyFrom(const ::google::protobuf::Message& from); void MergeFrom(const ::google::protobuf::Message& from); @@ -3262,7 +3273,7 @@ class setxattrRequest : public ::google::protobuf::Message { void MergeFrom(const setxattrRequest& from); void Clear(); bool IsInitialized() const; - + int ByteSize() const; bool MergePartialFromCodedStream( ::google::protobuf::io::CodedInputStream* input); @@ -3275,13 +3286,13 @@ class setxattrRequest : public ::google::protobuf::Message { void SharedDtor(); void SetCachedSize(int size) const; public: - + ::google::protobuf::Metadata GetMetadata() const; - + // nested types ---------------------------------------------------- - + // accessors ------------------------------------------------------- - + // required string volume_name = 1; inline bool has_volume_name() const; inline void clear_volume_name(); @@ -3291,7 +3302,9 @@ class setxattrRequest : public ::google::protobuf::Message { inline void set_volume_name(const char* value); inline void set_volume_name(const char* value, size_t size); inline ::std::string* mutable_volume_name(); - + inline ::std::string* release_volume_name(); + inline void set_allocated_volume_name(::std::string* volume_name); + // required string path = 2; inline bool has_path() const; inline void clear_path(); @@ -3301,7 +3314,9 @@ class setxattrRequest : public ::google::protobuf::Message { inline void set_path(const char* value); inline void set_path(const char* value, size_t size); inline ::std::string* mutable_path(); - + inline ::std::string* release_path(); + inline void set_allocated_path(::std::string* path); + // required string name = 3; inline bool has_name() const; inline void clear_name(); @@ -3311,7 +3326,9 @@ class setxattrRequest : public ::google::protobuf::Message { inline void set_name(const char* value); inline void set_name(const char* value, size_t size); inline ::std::string* mutable_name(); - + inline ::std::string* release_name(); + inline void set_allocated_name(::std::string* name); + // required string value = 4; inline bool has_value() const; inline void clear_value(); @@ -3321,57 +3338,59 @@ class setxattrRequest : public ::google::protobuf::Message { inline void set_value(const char* value); inline void set_value(const char* value, size_t size); inline ::std::string* mutable_value(); - - // optional bytes value_bytes = 6; - inline bool has_value_bytes() const; - inline void clear_value_bytes(); - static const int kValueBytesFieldNumber = 6; - inline const ::std::string& value_bytes() const; - inline void set_value_bytes(const ::std::string& value); - inline void set_value_bytes(const char* value); - inline void set_value_bytes(const void* value, size_t size); - inline ::std::string* mutable_value_bytes(); - + inline ::std::string* release_value(); + inline void set_allocated_value(::std::string* value); + + // optional bytes value_bytes_string = 6; + inline bool has_value_bytes_string() const; + inline void clear_value_bytes_string(); + static const int kValueBytesStringFieldNumber = 6; + inline const ::std::string& value_bytes_string() const; + inline void set_value_bytes_string(const ::std::string& value); + inline void set_value_bytes_string(const char* value); + inline void set_value_bytes_string(const void* value, size_t size); + inline ::std::string* mutable_value_bytes_string(); + inline ::std::string* release_value_bytes_string(); + inline void set_allocated_value_bytes_string(::std::string* value_bytes_string); + // required fixed32 flags = 5; inline bool has_flags() const; inline void clear_flags(); static const int kFlagsFieldNumber = 5; inline ::google::protobuf::uint32 flags() const; inline void set_flags(::google::protobuf::uint32 value); - + // @@protoc_insertion_point(class_scope:xtreemfs.pbrpc.setxattrRequest) private: + inline void set_has_volume_name(); + inline void clear_has_volume_name(); + inline void set_has_path(); + inline void clear_has_path(); + inline void set_has_name(); + inline void clear_has_name(); + inline void set_has_value(); + inline void clear_has_value(); + inline void set_has_value_bytes_string(); + inline void clear_has_value_bytes_string(); + inline void set_has_flags(); + inline void clear_has_flags(); + ::google::protobuf::UnknownFieldSet _unknown_fields_; - mutable int _cached_size_; - + ::std::string* volume_name_; - static const ::std::string _default_volume_name_; ::std::string* path_; - static const ::std::string _default_path_; ::std::string* name_; - static const ::std::string _default_name_; ::std::string* value_; - static const ::std::string _default_value_; - ::std::string* value_bytes_; - static const ::std::string _default_value_bytes_; + ::std::string* value_bytes_string_; ::google::protobuf::uint32 flags_; + + mutable int _cached_size_; + ::google::protobuf::uint32 _has_bits_[(6 + 31) / 32]; + friend void protobuf_AddDesc_xtreemfs_2fMRC_2eproto(); friend void protobuf_AssignDesc_xtreemfs_2fMRC_2eproto(); friend void protobuf_ShutdownFile_xtreemfs_2fMRC_2eproto(); - - ::google::protobuf::uint32 _has_bits_[(6 + 31) / 32]; - - // WHY DOES & HAVE LOWER PRECEDENCE THAN != !? - inline bool _has_bit(int index) const { - return (_has_bits_[index / 32] & (1u << (index % 32))) != 0; - } - inline void _set_bit(int index) { - _has_bits_[index / 32] |= (1u << (index % 32)); - } - inline void _clear_bit(int index) { - _has_bits_[index / 32] &= ~(1u << (index % 32)); - } - + void InitAsDefaultInstance(); static setxattrRequest* default_instance_; }; @@ -3381,29 +3400,29 @@ class statvfsRequest : public ::google::protobuf::Message { public: statvfsRequest(); virtual ~statvfsRequest(); - + statvfsRequest(const statvfsRequest& from); - + inline statvfsRequest& operator=(const statvfsRequest& from) { CopyFrom(from); return *this; } - + inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const { return _unknown_fields_; } - + inline ::google::protobuf::UnknownFieldSet* mutable_unknown_fields() { return &_unknown_fields_; } - + static const ::google::protobuf::Descriptor* descriptor(); static const statvfsRequest& default_instance(); - + void Swap(statvfsRequest* other); - + // implements Message ---------------------------------------------- - + statvfsRequest* New() const; void CopyFrom(const ::google::protobuf::Message& from); void MergeFrom(const ::google::protobuf::Message& from); @@ -3411,7 +3430,7 @@ class statvfsRequest : public ::google::protobuf::Message { void MergeFrom(const statvfsRequest& from); void Clear(); bool IsInitialized() const; - + int ByteSize() const; bool MergePartialFromCodedStream( ::google::protobuf::io::CodedInputStream* input); @@ -3424,13 +3443,13 @@ class statvfsRequest : public ::google::protobuf::Message { void SharedDtor(); void SetCachedSize(int size) const; public: - + ::google::protobuf::Metadata GetMetadata() const; - + // nested types ---------------------------------------------------- - + // accessors ------------------------------------------------------- - + // required string volume_name = 1; inline bool has_volume_name() const; inline void clear_volume_name(); @@ -3440,39 +3459,35 @@ class statvfsRequest : public ::google::protobuf::Message { inline void set_volume_name(const char* value); inline void set_volume_name(const char* value, size_t size); inline ::std::string* mutable_volume_name(); - + inline ::std::string* release_volume_name(); + inline void set_allocated_volume_name(::std::string* volume_name); + // required fixed64 known_etag = 5; inline bool has_known_etag() const; inline void clear_known_etag(); static const int kKnownEtagFieldNumber = 5; inline ::google::protobuf::uint64 known_etag() const; inline void set_known_etag(::google::protobuf::uint64 value); - + // @@protoc_insertion_point(class_scope:xtreemfs.pbrpc.statvfsRequest) private: + inline void set_has_volume_name(); + inline void clear_has_volume_name(); + inline void set_has_known_etag(); + inline void clear_has_known_etag(); + ::google::protobuf::UnknownFieldSet _unknown_fields_; - mutable int _cached_size_; - + ::std::string* volume_name_; - static const ::std::string _default_volume_name_; ::google::protobuf::uint64 known_etag_; + + mutable int _cached_size_; + ::google::protobuf::uint32 _has_bits_[(2 + 31) / 32]; + friend void protobuf_AddDesc_xtreemfs_2fMRC_2eproto(); friend void protobuf_AssignDesc_xtreemfs_2fMRC_2eproto(); friend void protobuf_ShutdownFile_xtreemfs_2fMRC_2eproto(); - - ::google::protobuf::uint32 _has_bits_[(2 + 31) / 32]; - - // WHY DOES & HAVE LOWER PRECEDENCE THAN != !? - inline bool _has_bit(int index) const { - return (_has_bits_[index / 32] & (1u << (index % 32))) != 0; - } - inline void _set_bit(int index) { - _has_bits_[index / 32] |= (1u << (index % 32)); - } - inline void _clear_bit(int index) { - _has_bits_[index / 32] &= ~(1u << (index % 32)); - } - + void InitAsDefaultInstance(); static statvfsRequest* default_instance_; }; @@ -3482,29 +3497,29 @@ class symlinkRequest : public ::google::protobuf::Message { public: symlinkRequest(); virtual ~symlinkRequest(); - + symlinkRequest(const symlinkRequest& from); - + inline symlinkRequest& operator=(const symlinkRequest& from) { CopyFrom(from); return *this; } - + inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const { return _unknown_fields_; } - + inline ::google::protobuf::UnknownFieldSet* mutable_unknown_fields() { return &_unknown_fields_; } - + static const ::google::protobuf::Descriptor* descriptor(); static const symlinkRequest& default_instance(); - + void Swap(symlinkRequest* other); - + // implements Message ---------------------------------------------- - + symlinkRequest* New() const; void CopyFrom(const ::google::protobuf::Message& from); void MergeFrom(const ::google::protobuf::Message& from); @@ -3512,7 +3527,7 @@ class symlinkRequest : public ::google::protobuf::Message { void MergeFrom(const symlinkRequest& from); void Clear(); bool IsInitialized() const; - + int ByteSize() const; bool MergePartialFromCodedStream( ::google::protobuf::io::CodedInputStream* input); @@ -3525,13 +3540,13 @@ class symlinkRequest : public ::google::protobuf::Message { void SharedDtor(); void SetCachedSize(int size) const; public: - + ::google::protobuf::Metadata GetMetadata() const; - + // nested types ---------------------------------------------------- - + // accessors ------------------------------------------------------- - + // required string volume_name = 1; inline bool has_volume_name() const; inline void clear_volume_name(); @@ -3541,7 +3556,9 @@ class symlinkRequest : public ::google::protobuf::Message { inline void set_volume_name(const char* value); inline void set_volume_name(const char* value, size_t size); inline ::std::string* mutable_volume_name(); - + inline ::std::string* release_volume_name(); + inline void set_allocated_volume_name(::std::string* volume_name); + // required string target_path = 2; inline bool has_target_path() const; inline void clear_target_path(); @@ -3551,7 +3568,9 @@ class symlinkRequest : public ::google::protobuf::Message { inline void set_target_path(const char* value); inline void set_target_path(const char* value, size_t size); inline ::std::string* mutable_target_path(); - + inline ::std::string* release_target_path(); + inline void set_allocated_target_path(::std::string* target_path); + // required string link_path = 3; inline bool has_link_path() const; inline void clear_link_path(); @@ -3561,35 +3580,31 @@ class symlinkRequest : public ::google::protobuf::Message { inline void set_link_path(const char* value); inline void set_link_path(const char* value, size_t size); inline ::std::string* mutable_link_path(); - + inline ::std::string* release_link_path(); + inline void set_allocated_link_path(::std::string* link_path); + // @@protoc_insertion_point(class_scope:xtreemfs.pbrpc.symlinkRequest) private: + inline void set_has_volume_name(); + inline void clear_has_volume_name(); + inline void set_has_target_path(); + inline void clear_has_target_path(); + inline void set_has_link_path(); + inline void clear_has_link_path(); + ::google::protobuf::UnknownFieldSet _unknown_fields_; - mutable int _cached_size_; - + ::std::string* volume_name_; - static const ::std::string _default_volume_name_; ::std::string* target_path_; - static const ::std::string _default_target_path_; ::std::string* link_path_; - static const ::std::string _default_link_path_; + + mutable int _cached_size_; + ::google::protobuf::uint32 _has_bits_[(3 + 31) / 32]; + friend void protobuf_AddDesc_xtreemfs_2fMRC_2eproto(); friend void protobuf_AssignDesc_xtreemfs_2fMRC_2eproto(); friend void protobuf_ShutdownFile_xtreemfs_2fMRC_2eproto(); - - ::google::protobuf::uint32 _has_bits_[(3 + 31) / 32]; - - // WHY DOES & HAVE LOWER PRECEDENCE THAN != !? - inline bool _has_bit(int index) const { - return (_has_bits_[index / 32] & (1u << (index % 32))) != 0; - } - inline void _set_bit(int index) { - _has_bits_[index / 32] |= (1u << (index % 32)); - } - inline void _clear_bit(int index) { - _has_bits_[index / 32] &= ~(1u << (index % 32)); - } - + void InitAsDefaultInstance(); static symlinkRequest* default_instance_; }; @@ -3599,29 +3614,29 @@ class unlinkRequest : public ::google::protobuf::Message { public: unlinkRequest(); virtual ~unlinkRequest(); - + unlinkRequest(const unlinkRequest& from); - + inline unlinkRequest& operator=(const unlinkRequest& from) { CopyFrom(from); return *this; } - + inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const { return _unknown_fields_; } - + inline ::google::protobuf::UnknownFieldSet* mutable_unknown_fields() { return &_unknown_fields_; } - + static const ::google::protobuf::Descriptor* descriptor(); static const unlinkRequest& default_instance(); - + void Swap(unlinkRequest* other); - + // implements Message ---------------------------------------------- - + unlinkRequest* New() const; void CopyFrom(const ::google::protobuf::Message& from); void MergeFrom(const ::google::protobuf::Message& from); @@ -3629,7 +3644,7 @@ class unlinkRequest : public ::google::protobuf::Message { void MergeFrom(const unlinkRequest& from); void Clear(); bool IsInitialized() const; - + int ByteSize() const; bool MergePartialFromCodedStream( ::google::protobuf::io::CodedInputStream* input); @@ -3642,13 +3657,13 @@ class unlinkRequest : public ::google::protobuf::Message { void SharedDtor(); void SetCachedSize(int size) const; public: - + ::google::protobuf::Metadata GetMetadata() const; - + // nested types ---------------------------------------------------- - + // accessors ------------------------------------------------------- - + // required string volume_name = 1; inline bool has_volume_name() const; inline void clear_volume_name(); @@ -3658,7 +3673,9 @@ class unlinkRequest : public ::google::protobuf::Message { inline void set_volume_name(const char* value); inline void set_volume_name(const char* value, size_t size); inline ::std::string* mutable_volume_name(); - + inline ::std::string* release_volume_name(); + inline void set_allocated_volume_name(::std::string* volume_name); + // required string path = 2; inline bool has_path() const; inline void clear_path(); @@ -3668,33 +3685,28 @@ class unlinkRequest : public ::google::protobuf::Message { inline void set_path(const char* value); inline void set_path(const char* value, size_t size); inline ::std::string* mutable_path(); - + inline ::std::string* release_path(); + inline void set_allocated_path(::std::string* path); + // @@protoc_insertion_point(class_scope:xtreemfs.pbrpc.unlinkRequest) private: + inline void set_has_volume_name(); + inline void clear_has_volume_name(); + inline void set_has_path(); + inline void clear_has_path(); + ::google::protobuf::UnknownFieldSet _unknown_fields_; - mutable int _cached_size_; - + ::std::string* volume_name_; - static const ::std::string _default_volume_name_; ::std::string* path_; - static const ::std::string _default_path_; + + mutable int _cached_size_; + ::google::protobuf::uint32 _has_bits_[(2 + 31) / 32]; + friend void protobuf_AddDesc_xtreemfs_2fMRC_2eproto(); friend void protobuf_AssignDesc_xtreemfs_2fMRC_2eproto(); friend void protobuf_ShutdownFile_xtreemfs_2fMRC_2eproto(); - - ::google::protobuf::uint32 _has_bits_[(2 + 31) / 32]; - - // WHY DOES & HAVE LOWER PRECEDENCE THAN != !? - inline bool _has_bit(int index) const { - return (_has_bits_[index / 32] & (1u << (index % 32))) != 0; - } - inline void _set_bit(int index) { - _has_bits_[index / 32] |= (1u << (index % 32)); - } - inline void _clear_bit(int index) { - _has_bits_[index / 32] &= ~(1u << (index % 32)); - } - + void InitAsDefaultInstance(); static unlinkRequest* default_instance_; }; @@ -3704,29 +3716,29 @@ class unlinkResponse : public ::google::protobuf::Message { public: unlinkResponse(); virtual ~unlinkResponse(); - + unlinkResponse(const unlinkResponse& from); - + inline unlinkResponse& operator=(const unlinkResponse& from) { CopyFrom(from); return *this; } - + inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const { return _unknown_fields_; } - + inline ::google::protobuf::UnknownFieldSet* mutable_unknown_fields() { return &_unknown_fields_; } - + static const ::google::protobuf::Descriptor* descriptor(); static const unlinkResponse& default_instance(); - + void Swap(unlinkResponse* other); - + // implements Message ---------------------------------------------- - + unlinkResponse* New() const; void CopyFrom(const ::google::protobuf::Message& from); void MergeFrom(const ::google::protobuf::Message& from); @@ -3734,7 +3746,7 @@ class unlinkResponse : public ::google::protobuf::Message { void MergeFrom(const unlinkResponse& from); void Clear(); bool IsInitialized() const; - + int ByteSize() const; bool MergePartialFromCodedStream( ::google::protobuf::io::CodedInputStream* input); @@ -3747,51 +3759,48 @@ class unlinkResponse : public ::google::protobuf::Message { void SharedDtor(); void SetCachedSize(int size) const; public: - + ::google::protobuf::Metadata GetMetadata() const; - + // nested types ---------------------------------------------------- - + // accessors ------------------------------------------------------- - + // required fixed32 timestamp_s = 1; inline bool has_timestamp_s() const; inline void clear_timestamp_s(); static const int kTimestampSFieldNumber = 1; inline ::google::protobuf::uint32 timestamp_s() const; inline void set_timestamp_s(::google::protobuf::uint32 value); - + // optional .xtreemfs.pbrpc.FileCredentials creds = 2; inline bool has_creds() const; inline void clear_creds(); static const int kCredsFieldNumber = 2; inline const ::xtreemfs::pbrpc::FileCredentials& creds() const; inline ::xtreemfs::pbrpc::FileCredentials* mutable_creds(); - + inline ::xtreemfs::pbrpc::FileCredentials* release_creds(); + inline void set_allocated_creds(::xtreemfs::pbrpc::FileCredentials* creds); + // @@protoc_insertion_point(class_scope:xtreemfs.pbrpc.unlinkResponse) private: + inline void set_has_timestamp_s(); + inline void clear_has_timestamp_s(); + inline void set_has_creds(); + inline void clear_has_creds(); + ::google::protobuf::UnknownFieldSet _unknown_fields_; - mutable int _cached_size_; - - ::google::protobuf::uint32 timestamp_s_; + ::xtreemfs::pbrpc::FileCredentials* creds_; + ::google::protobuf::uint32 timestamp_s_; + + mutable int _cached_size_; + ::google::protobuf::uint32 _has_bits_[(2 + 31) / 32]; + friend void protobuf_AddDesc_xtreemfs_2fMRC_2eproto(); friend void protobuf_AssignDesc_xtreemfs_2fMRC_2eproto(); friend void protobuf_ShutdownFile_xtreemfs_2fMRC_2eproto(); - - ::google::protobuf::uint32 _has_bits_[(2 + 31) / 32]; - - // WHY DOES & HAVE LOWER PRECEDENCE THAN != !? - inline bool _has_bit(int index) const { - return (_has_bits_[index / 32] & (1u << (index % 32))) != 0; - } - inline void _set_bit(int index) { - _has_bits_[index / 32] |= (1u << (index % 32)); - } - inline void _clear_bit(int index) { - _has_bits_[index / 32] &= ~(1u << (index % 32)); - } - + void InitAsDefaultInstance(); static unlinkResponse* default_instance_; }; @@ -3801,29 +3810,29 @@ class accessRequest : public ::google::protobuf::Message { public: accessRequest(); virtual ~accessRequest(); - + accessRequest(const accessRequest& from); - + inline accessRequest& operator=(const accessRequest& from) { CopyFrom(from); return *this; } - + inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const { return _unknown_fields_; } - + inline ::google::protobuf::UnknownFieldSet* mutable_unknown_fields() { return &_unknown_fields_; } - + static const ::google::protobuf::Descriptor* descriptor(); static const accessRequest& default_instance(); - + void Swap(accessRequest* other); - + // implements Message ---------------------------------------------- - + accessRequest* New() const; void CopyFrom(const ::google::protobuf::Message& from); void MergeFrom(const ::google::protobuf::Message& from); @@ -3831,7 +3840,7 @@ class accessRequest : public ::google::protobuf::Message { void MergeFrom(const accessRequest& from); void Clear(); bool IsInitialized() const; - + int ByteSize() const; bool MergePartialFromCodedStream( ::google::protobuf::io::CodedInputStream* input); @@ -3844,13 +3853,13 @@ class accessRequest : public ::google::protobuf::Message { void SharedDtor(); void SetCachedSize(int size) const; public: - + ::google::protobuf::Metadata GetMetadata() const; - + // nested types ---------------------------------------------------- - + // accessors ------------------------------------------------------- - + // required string volume_name = 1; inline bool has_volume_name() const; inline void clear_volume_name(); @@ -3860,7 +3869,9 @@ class accessRequest : public ::google::protobuf::Message { inline void set_volume_name(const char* value); inline void set_volume_name(const char* value, size_t size); inline ::std::string* mutable_volume_name(); - + inline ::std::string* release_volume_name(); + inline void set_allocated_volume_name(::std::string* volume_name); + // required string path = 2; inline bool has_path() const; inline void clear_path(); @@ -3870,41 +3881,38 @@ class accessRequest : public ::google::protobuf::Message { inline void set_path(const char* value); inline void set_path(const char* value, size_t size); inline ::std::string* mutable_path(); - + inline ::std::string* release_path(); + inline void set_allocated_path(::std::string* path); + // required fixed32 flags = 3; inline bool has_flags() const; inline void clear_flags(); static const int kFlagsFieldNumber = 3; inline ::google::protobuf::uint32 flags() const; inline void set_flags(::google::protobuf::uint32 value); - + // @@protoc_insertion_point(class_scope:xtreemfs.pbrpc.accessRequest) private: + inline void set_has_volume_name(); + inline void clear_has_volume_name(); + inline void set_has_path(); + inline void clear_has_path(); + inline void set_has_flags(); + inline void clear_has_flags(); + ::google::protobuf::UnknownFieldSet _unknown_fields_; - mutable int _cached_size_; - + ::std::string* volume_name_; - static const ::std::string _default_volume_name_; ::std::string* path_; - static const ::std::string _default_path_; ::google::protobuf::uint32 flags_; + + mutable int _cached_size_; + ::google::protobuf::uint32 _has_bits_[(3 + 31) / 32]; + friend void protobuf_AddDesc_xtreemfs_2fMRC_2eproto(); friend void protobuf_AssignDesc_xtreemfs_2fMRC_2eproto(); friend void protobuf_ShutdownFile_xtreemfs_2fMRC_2eproto(); - - ::google::protobuf::uint32 _has_bits_[(3 + 31) / 32]; - - // WHY DOES & HAVE LOWER PRECEDENCE THAN != !? - inline bool _has_bit(int index) const { - return (_has_bits_[index / 32] & (1u << (index % 32))) != 0; - } - inline void _set_bit(int index) { - _has_bits_[index / 32] |= (1u << (index % 32)); - } - inline void _clear_bit(int index) { - _has_bits_[index / 32] &= ~(1u << (index % 32)); - } - + void InitAsDefaultInstance(); static accessRequest* default_instance_; }; @@ -3914,29 +3922,29 @@ class xtreemfs_check_file_existsRequest : public ::google::protobuf::Message { public: xtreemfs_check_file_existsRequest(); virtual ~xtreemfs_check_file_existsRequest(); - + xtreemfs_check_file_existsRequest(const xtreemfs_check_file_existsRequest& from); - + inline xtreemfs_check_file_existsRequest& operator=(const xtreemfs_check_file_existsRequest& from) { CopyFrom(from); return *this; } - + inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const { return _unknown_fields_; } - + inline ::google::protobuf::UnknownFieldSet* mutable_unknown_fields() { return &_unknown_fields_; } - + static const ::google::protobuf::Descriptor* descriptor(); static const xtreemfs_check_file_existsRequest& default_instance(); - + void Swap(xtreemfs_check_file_existsRequest* other); - + // implements Message ---------------------------------------------- - + xtreemfs_check_file_existsRequest* New() const; void CopyFrom(const ::google::protobuf::Message& from); void MergeFrom(const ::google::protobuf::Message& from); @@ -3944,7 +3952,7 @@ class xtreemfs_check_file_existsRequest : public ::google::protobuf::Message { void MergeFrom(const xtreemfs_check_file_existsRequest& from); void Clear(); bool IsInitialized() const; - + int ByteSize() const; bool MergePartialFromCodedStream( ::google::protobuf::io::CodedInputStream* input); @@ -3957,13 +3965,13 @@ class xtreemfs_check_file_existsRequest : public ::google::protobuf::Message { void SharedDtor(); void SetCachedSize(int size) const; public: - + ::google::protobuf::Metadata GetMetadata() const; - + // nested types ---------------------------------------------------- - + // accessors ------------------------------------------------------- - + // required string volume_id = 1; inline bool has_volume_id() const; inline void clear_volume_id(); @@ -3973,7 +3981,9 @@ class xtreemfs_check_file_existsRequest : public ::google::protobuf::Message { inline void set_volume_id(const char* value); inline void set_volume_id(const char* value, size_t size); inline ::std::string* mutable_volume_id(); - + inline ::std::string* release_volume_id(); + inline void set_allocated_volume_id(::std::string* volume_id); + // repeated string file_ids = 2; inline int file_ids_size() const; inline void clear_file_ids(); @@ -3989,7 +3999,7 @@ class xtreemfs_check_file_existsRequest : public ::google::protobuf::Message { inline void add_file_ids(const char* value, size_t size); inline const ::google::protobuf::RepeatedPtrField< ::std::string>& file_ids() const; inline ::google::protobuf::RepeatedPtrField< ::std::string>* mutable_file_ids(); - + // required string osd_uuid = 3; inline bool has_osd_uuid() const; inline void clear_osd_uuid(); @@ -3999,34 +4009,29 @@ class xtreemfs_check_file_existsRequest : public ::google::protobuf::Message { inline void set_osd_uuid(const char* value); inline void set_osd_uuid(const char* value, size_t size); inline ::std::string* mutable_osd_uuid(); - + inline ::std::string* release_osd_uuid(); + inline void set_allocated_osd_uuid(::std::string* osd_uuid); + // @@protoc_insertion_point(class_scope:xtreemfs.pbrpc.xtreemfs_check_file_existsRequest) private: + inline void set_has_volume_id(); + inline void clear_has_volume_id(); + inline void set_has_osd_uuid(); + inline void clear_has_osd_uuid(); + ::google::protobuf::UnknownFieldSet _unknown_fields_; - mutable int _cached_size_; - + ::std::string* volume_id_; - static const ::std::string _default_volume_id_; ::google::protobuf::RepeatedPtrField< ::std::string> file_ids_; ::std::string* osd_uuid_; - static const ::std::string _default_osd_uuid_; + + mutable int _cached_size_; + ::google::protobuf::uint32 _has_bits_[(3 + 31) / 32]; + friend void protobuf_AddDesc_xtreemfs_2fMRC_2eproto(); friend void protobuf_AssignDesc_xtreemfs_2fMRC_2eproto(); friend void protobuf_ShutdownFile_xtreemfs_2fMRC_2eproto(); - - ::google::protobuf::uint32 _has_bits_[(3 + 31) / 32]; - - // WHY DOES & HAVE LOWER PRECEDENCE THAN != !? - inline bool _has_bit(int index) const { - return (_has_bits_[index / 32] & (1u << (index % 32))) != 0; - } - inline void _set_bit(int index) { - _has_bits_[index / 32] |= (1u << (index % 32)); - } - inline void _clear_bit(int index) { - _has_bits_[index / 32] &= ~(1u << (index % 32)); - } - + void InitAsDefaultInstance(); static xtreemfs_check_file_existsRequest* default_instance_; }; @@ -4036,29 +4041,29 @@ class xtreemfs_dump_restore_databaseRequest : public ::google::protobuf::Message public: xtreemfs_dump_restore_databaseRequest(); virtual ~xtreemfs_dump_restore_databaseRequest(); - + xtreemfs_dump_restore_databaseRequest(const xtreemfs_dump_restore_databaseRequest& from); - + inline xtreemfs_dump_restore_databaseRequest& operator=(const xtreemfs_dump_restore_databaseRequest& from) { CopyFrom(from); return *this; } - + inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const { return _unknown_fields_; } - + inline ::google::protobuf::UnknownFieldSet* mutable_unknown_fields() { return &_unknown_fields_; } - + static const ::google::protobuf::Descriptor* descriptor(); static const xtreemfs_dump_restore_databaseRequest& default_instance(); - + void Swap(xtreemfs_dump_restore_databaseRequest* other); - + // implements Message ---------------------------------------------- - + xtreemfs_dump_restore_databaseRequest* New() const; void CopyFrom(const ::google::protobuf::Message& from); void MergeFrom(const ::google::protobuf::Message& from); @@ -4066,7 +4071,7 @@ class xtreemfs_dump_restore_databaseRequest : public ::google::protobuf::Message void MergeFrom(const xtreemfs_dump_restore_databaseRequest& from); void Clear(); bool IsInitialized() const; - + int ByteSize() const; bool MergePartialFromCodedStream( ::google::protobuf::io::CodedInputStream* input); @@ -4079,13 +4084,13 @@ class xtreemfs_dump_restore_databaseRequest : public ::google::protobuf::Message void SharedDtor(); void SetCachedSize(int size) const; public: - + ::google::protobuf::Metadata GetMetadata() const; - + // nested types ---------------------------------------------------- - + // accessors ------------------------------------------------------- - + // required string dump_file = 1; inline bool has_dump_file() const; inline void clear_dump_file(); @@ -4095,31 +4100,25 @@ class xtreemfs_dump_restore_databaseRequest : public ::google::protobuf::Message inline void set_dump_file(const char* value); inline void set_dump_file(const char* value, size_t size); inline ::std::string* mutable_dump_file(); - + inline ::std::string* release_dump_file(); + inline void set_allocated_dump_file(::std::string* dump_file); + // @@protoc_insertion_point(class_scope:xtreemfs.pbrpc.xtreemfs_dump_restore_databaseRequest) private: + inline void set_has_dump_file(); + inline void clear_has_dump_file(); + ::google::protobuf::UnknownFieldSet _unknown_fields_; - mutable int _cached_size_; - + ::std::string* dump_file_; - static const ::std::string _default_dump_file_; + + mutable int _cached_size_; + ::google::protobuf::uint32 _has_bits_[(1 + 31) / 32]; + friend void protobuf_AddDesc_xtreemfs_2fMRC_2eproto(); friend void protobuf_AssignDesc_xtreemfs_2fMRC_2eproto(); friend void protobuf_ShutdownFile_xtreemfs_2fMRC_2eproto(); - - ::google::protobuf::uint32 _has_bits_[(1 + 31) / 32]; - - // WHY DOES & HAVE LOWER PRECEDENCE THAN != !? - inline bool _has_bit(int index) const { - return (_has_bits_[index / 32] & (1u << (index % 32))) != 0; - } - inline void _set_bit(int index) { - _has_bits_[index / 32] |= (1u << (index % 32)); - } - inline void _clear_bit(int index) { - _has_bits_[index / 32] &= ~(1u << (index % 32)); - } - + void InitAsDefaultInstance(); static xtreemfs_dump_restore_databaseRequest* default_instance_; }; @@ -4129,29 +4128,29 @@ class xtreemfs_get_suitable_osdsRequest : public ::google::protobuf::Message { public: xtreemfs_get_suitable_osdsRequest(); virtual ~xtreemfs_get_suitable_osdsRequest(); - + xtreemfs_get_suitable_osdsRequest(const xtreemfs_get_suitable_osdsRequest& from); - + inline xtreemfs_get_suitable_osdsRequest& operator=(const xtreemfs_get_suitable_osdsRequest& from) { CopyFrom(from); return *this; } - + inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const { return _unknown_fields_; } - + inline ::google::protobuf::UnknownFieldSet* mutable_unknown_fields() { return &_unknown_fields_; } - + static const ::google::protobuf::Descriptor* descriptor(); static const xtreemfs_get_suitable_osdsRequest& default_instance(); - + void Swap(xtreemfs_get_suitable_osdsRequest* other); - + // implements Message ---------------------------------------------- - + xtreemfs_get_suitable_osdsRequest* New() const; void CopyFrom(const ::google::protobuf::Message& from); void MergeFrom(const ::google::protobuf::Message& from); @@ -4159,7 +4158,7 @@ class xtreemfs_get_suitable_osdsRequest : public ::google::protobuf::Message { void MergeFrom(const xtreemfs_get_suitable_osdsRequest& from); void Clear(); bool IsInitialized() const; - + int ByteSize() const; bool MergePartialFromCodedStream( ::google::protobuf::io::CodedInputStream* input); @@ -4172,13 +4171,13 @@ class xtreemfs_get_suitable_osdsRequest : public ::google::protobuf::Message { void SharedDtor(); void SetCachedSize(int size) const; public: - + ::google::protobuf::Metadata GetMetadata() const; - + // nested types ---------------------------------------------------- - + // accessors ------------------------------------------------------- - + // optional string file_id = 1; inline bool has_file_id() const; inline void clear_file_id(); @@ -4188,7 +4187,9 @@ class xtreemfs_get_suitable_osdsRequest : public ::google::protobuf::Message { inline void set_file_id(const char* value); inline void set_file_id(const char* value, size_t size); inline ::std::string* mutable_file_id(); - + inline ::std::string* release_file_id(); + inline void set_allocated_file_id(::std::string* file_id); + // optional string path = 3; inline bool has_path() const; inline void clear_path(); @@ -4198,7 +4199,9 @@ class xtreemfs_get_suitable_osdsRequest : public ::google::protobuf::Message { inline void set_path(const char* value); inline void set_path(const char* value, size_t size); inline ::std::string* mutable_path(); - + inline ::std::string* release_path(); + inline void set_allocated_path(::std::string* path); + // optional string volume_name = 4; inline bool has_volume_name() const; inline void clear_volume_name(); @@ -4208,43 +4211,41 @@ class xtreemfs_get_suitable_osdsRequest : public ::google::protobuf::Message { inline void set_volume_name(const char* value); inline void set_volume_name(const char* value, size_t size); inline ::std::string* mutable_volume_name(); - + inline ::std::string* release_volume_name(); + inline void set_allocated_volume_name(::std::string* volume_name); + // required fixed32 num_osds = 2; inline bool has_num_osds() const; inline void clear_num_osds(); static const int kNumOsdsFieldNumber = 2; inline ::google::protobuf::uint32 num_osds() const; inline void set_num_osds(::google::protobuf::uint32 value); - + // @@protoc_insertion_point(class_scope:xtreemfs.pbrpc.xtreemfs_get_suitable_osdsRequest) private: + inline void set_has_file_id(); + inline void clear_has_file_id(); + inline void set_has_path(); + inline void clear_has_path(); + inline void set_has_volume_name(); + inline void clear_has_volume_name(); + inline void set_has_num_osds(); + inline void clear_has_num_osds(); + ::google::protobuf::UnknownFieldSet _unknown_fields_; - mutable int _cached_size_; - + ::std::string* file_id_; - static const ::std::string _default_file_id_; ::std::string* path_; - static const ::std::string _default_path_; ::std::string* volume_name_; - static const ::std::string _default_volume_name_; ::google::protobuf::uint32 num_osds_; + + mutable int _cached_size_; + ::google::protobuf::uint32 _has_bits_[(4 + 31) / 32]; + friend void protobuf_AddDesc_xtreemfs_2fMRC_2eproto(); friend void protobuf_AssignDesc_xtreemfs_2fMRC_2eproto(); friend void protobuf_ShutdownFile_xtreemfs_2fMRC_2eproto(); - - ::google::protobuf::uint32 _has_bits_[(4 + 31) / 32]; - - // WHY DOES & HAVE LOWER PRECEDENCE THAN != !? - inline bool _has_bit(int index) const { - return (_has_bits_[index / 32] & (1u << (index % 32))) != 0; - } - inline void _set_bit(int index) { - _has_bits_[index / 32] |= (1u << (index % 32)); - } - inline void _clear_bit(int index) { - _has_bits_[index / 32] &= ~(1u << (index % 32)); - } - + void InitAsDefaultInstance(); static xtreemfs_get_suitable_osdsRequest* default_instance_; }; @@ -4254,29 +4255,29 @@ class xtreemfs_get_suitable_osdsResponse : public ::google::protobuf::Message { public: xtreemfs_get_suitable_osdsResponse(); virtual ~xtreemfs_get_suitable_osdsResponse(); - + xtreemfs_get_suitable_osdsResponse(const xtreemfs_get_suitable_osdsResponse& from); - + inline xtreemfs_get_suitable_osdsResponse& operator=(const xtreemfs_get_suitable_osdsResponse& from) { CopyFrom(from); return *this; } - + inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const { return _unknown_fields_; } - + inline ::google::protobuf::UnknownFieldSet* mutable_unknown_fields() { return &_unknown_fields_; } - + static const ::google::protobuf::Descriptor* descriptor(); static const xtreemfs_get_suitable_osdsResponse& default_instance(); - + void Swap(xtreemfs_get_suitable_osdsResponse* other); - + // implements Message ---------------------------------------------- - + xtreemfs_get_suitable_osdsResponse* New() const; void CopyFrom(const ::google::protobuf::Message& from); void MergeFrom(const ::google::protobuf::Message& from); @@ -4284,7 +4285,7 @@ class xtreemfs_get_suitable_osdsResponse : public ::google::protobuf::Message { void MergeFrom(const xtreemfs_get_suitable_osdsResponse& from); void Clear(); bool IsInitialized() const; - + int ByteSize() const; bool MergePartialFromCodedStream( ::google::protobuf::io::CodedInputStream* input); @@ -4297,13 +4298,13 @@ class xtreemfs_get_suitable_osdsResponse : public ::google::protobuf::Message { void SharedDtor(); void SetCachedSize(int size) const; public: - + ::google::protobuf::Metadata GetMetadata() const; - + // nested types ---------------------------------------------------- - + // accessors ------------------------------------------------------- - + // repeated string osd_uuids = 1; inline int osd_uuids_size() const; inline void clear_osd_uuids(); @@ -4319,30 +4320,21 @@ class xtreemfs_get_suitable_osdsResponse : public ::google::protobuf::Message { inline void add_osd_uuids(const char* value, size_t size); inline const ::google::protobuf::RepeatedPtrField< ::std::string>& osd_uuids() const; inline ::google::protobuf::RepeatedPtrField< ::std::string>* mutable_osd_uuids(); - + // @@protoc_insertion_point(class_scope:xtreemfs.pbrpc.xtreemfs_get_suitable_osdsResponse) private: + ::google::protobuf::UnknownFieldSet _unknown_fields_; - mutable int _cached_size_; - + ::google::protobuf::RepeatedPtrField< ::std::string> osd_uuids_; + + mutable int _cached_size_; + ::google::protobuf::uint32 _has_bits_[(1 + 31) / 32]; + friend void protobuf_AddDesc_xtreemfs_2fMRC_2eproto(); friend void protobuf_AssignDesc_xtreemfs_2fMRC_2eproto(); friend void protobuf_ShutdownFile_xtreemfs_2fMRC_2eproto(); - - ::google::protobuf::uint32 _has_bits_[(1 + 31) / 32]; - - // WHY DOES & HAVE LOWER PRECEDENCE THAN != !? - inline bool _has_bit(int index) const { - return (_has_bits_[index / 32] & (1u << (index % 32))) != 0; - } - inline void _set_bit(int index) { - _has_bits_[index / 32] |= (1u << (index % 32)); - } - inline void _clear_bit(int index) { - _has_bits_[index / 32] &= ~(1u << (index % 32)); - } - + void InitAsDefaultInstance(); static xtreemfs_get_suitable_osdsResponse* default_instance_; }; @@ -4352,29 +4344,29 @@ class xtreemfs_check_file_existsResponse : public ::google::protobuf::Message { public: xtreemfs_check_file_existsResponse(); virtual ~xtreemfs_check_file_existsResponse(); - + xtreemfs_check_file_existsResponse(const xtreemfs_check_file_existsResponse& from); - + inline xtreemfs_check_file_existsResponse& operator=(const xtreemfs_check_file_existsResponse& from) { CopyFrom(from); return *this; } - + inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const { return _unknown_fields_; } - + inline ::google::protobuf::UnknownFieldSet* mutable_unknown_fields() { return &_unknown_fields_; } - + static const ::google::protobuf::Descriptor* descriptor(); static const xtreemfs_check_file_existsResponse& default_instance(); - + void Swap(xtreemfs_check_file_existsResponse* other); - + // implements Message ---------------------------------------------- - + xtreemfs_check_file_existsResponse* New() const; void CopyFrom(const ::google::protobuf::Message& from); void MergeFrom(const ::google::protobuf::Message& from); @@ -4382,7 +4374,7 @@ class xtreemfs_check_file_existsResponse : public ::google::protobuf::Message { void MergeFrom(const xtreemfs_check_file_existsResponse& from); void Clear(); bool IsInitialized() const; - + int ByteSize() const; bool MergePartialFromCodedStream( ::google::protobuf::io::CodedInputStream* input); @@ -4395,13 +4387,13 @@ class xtreemfs_check_file_existsResponse : public ::google::protobuf::Message { void SharedDtor(); void SetCachedSize(int size) const; public: - + ::google::protobuf::Metadata GetMetadata() const; - + // nested types ---------------------------------------------------- - + // accessors ------------------------------------------------------- - + // required string bitmap = 1; inline bool has_bitmap() const; inline void clear_bitmap(); @@ -4411,31 +4403,25 @@ class xtreemfs_check_file_existsResponse : public ::google::protobuf::Message { inline void set_bitmap(const char* value); inline void set_bitmap(const char* value, size_t size); inline ::std::string* mutable_bitmap(); - + inline ::std::string* release_bitmap(); + inline void set_allocated_bitmap(::std::string* bitmap); + // @@protoc_insertion_point(class_scope:xtreemfs.pbrpc.xtreemfs_check_file_existsResponse) private: + inline void set_has_bitmap(); + inline void clear_has_bitmap(); + ::google::protobuf::UnknownFieldSet _unknown_fields_; - mutable int _cached_size_; - + ::std::string* bitmap_; - static const ::std::string _default_bitmap_; + + mutable int _cached_size_; + ::google::protobuf::uint32 _has_bits_[(1 + 31) / 32]; + friend void protobuf_AddDesc_xtreemfs_2fMRC_2eproto(); friend void protobuf_AssignDesc_xtreemfs_2fMRC_2eproto(); friend void protobuf_ShutdownFile_xtreemfs_2fMRC_2eproto(); - - ::google::protobuf::uint32 _has_bits_[(1 + 31) / 32]; - - // WHY DOES & HAVE LOWER PRECEDENCE THAN != !? - inline bool _has_bit(int index) const { - return (_has_bits_[index / 32] & (1u << (index % 32))) != 0; - } - inline void _set_bit(int index) { - _has_bits_[index / 32] |= (1u << (index % 32)); - } - inline void _clear_bit(int index) { - _has_bits_[index / 32] &= ~(1u << (index % 32)); - } - + void InitAsDefaultInstance(); static xtreemfs_check_file_existsResponse* default_instance_; }; @@ -4445,29 +4431,29 @@ class timestampResponse : public ::google::protobuf::Message { public: timestampResponse(); virtual ~timestampResponse(); - + timestampResponse(const timestampResponse& from); - + inline timestampResponse& operator=(const timestampResponse& from) { CopyFrom(from); return *this; } - + inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const { return _unknown_fields_; } - + inline ::google::protobuf::UnknownFieldSet* mutable_unknown_fields() { return &_unknown_fields_; } - + static const ::google::protobuf::Descriptor* descriptor(); static const timestampResponse& default_instance(); - + void Swap(timestampResponse* other); - + // implements Message ---------------------------------------------- - + timestampResponse* New() const; void CopyFrom(const ::google::protobuf::Message& from); void MergeFrom(const ::google::protobuf::Message& from); @@ -4475,7 +4461,7 @@ class timestampResponse : public ::google::protobuf::Message { void MergeFrom(const timestampResponse& from); void Clear(); bool IsInitialized() const; - + int ByteSize() const; bool MergePartialFromCodedStream( ::google::protobuf::io::CodedInputStream* input); @@ -4488,43 +4474,36 @@ class timestampResponse : public ::google::protobuf::Message { void SharedDtor(); void SetCachedSize(int size) const; public: - + ::google::protobuf::Metadata GetMetadata() const; - + // nested types ---------------------------------------------------- - + // accessors ------------------------------------------------------- - + // required fixed32 timestamp_s = 1; inline bool has_timestamp_s() const; inline void clear_timestamp_s(); static const int kTimestampSFieldNumber = 1; inline ::google::protobuf::uint32 timestamp_s() const; inline void set_timestamp_s(::google::protobuf::uint32 value); - + // @@protoc_insertion_point(class_scope:xtreemfs.pbrpc.timestampResponse) private: + inline void set_has_timestamp_s(); + inline void clear_has_timestamp_s(); + ::google::protobuf::UnknownFieldSet _unknown_fields_; - mutable int _cached_size_; - + ::google::protobuf::uint32 timestamp_s_; + + mutable int _cached_size_; + ::google::protobuf::uint32 _has_bits_[(1 + 31) / 32]; + friend void protobuf_AddDesc_xtreemfs_2fMRC_2eproto(); friend void protobuf_AssignDesc_xtreemfs_2fMRC_2eproto(); friend void protobuf_ShutdownFile_xtreemfs_2fMRC_2eproto(); - - ::google::protobuf::uint32 _has_bits_[(1 + 31) / 32]; - - // WHY DOES & HAVE LOWER PRECEDENCE THAN != !? - inline bool _has_bit(int index) const { - return (_has_bits_[index / 32] & (1u << (index % 32))) != 0; - } - inline void _set_bit(int index) { - _has_bits_[index / 32] |= (1u << (index % 32)); - } - inline void _clear_bit(int index) { - _has_bits_[index / 32] &= ~(1u << (index % 32)); - } - + void InitAsDefaultInstance(); static timestampResponse* default_instance_; }; @@ -4534,29 +4513,29 @@ class stringMessage : public ::google::protobuf::Message { public: stringMessage(); virtual ~stringMessage(); - + stringMessage(const stringMessage& from); - + inline stringMessage& operator=(const stringMessage& from) { CopyFrom(from); return *this; } - + inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const { return _unknown_fields_; } - + inline ::google::protobuf::UnknownFieldSet* mutable_unknown_fields() { return &_unknown_fields_; } - + static const ::google::protobuf::Descriptor* descriptor(); static const stringMessage& default_instance(); - + void Swap(stringMessage* other); - + // implements Message ---------------------------------------------- - + stringMessage* New() const; void CopyFrom(const ::google::protobuf::Message& from); void MergeFrom(const ::google::protobuf::Message& from); @@ -4564,7 +4543,7 @@ class stringMessage : public ::google::protobuf::Message { void MergeFrom(const stringMessage& from); void Clear(); bool IsInitialized() const; - + int ByteSize() const; bool MergePartialFromCodedStream( ::google::protobuf::io::CodedInputStream* input); @@ -4577,13 +4556,13 @@ class stringMessage : public ::google::protobuf::Message { void SharedDtor(); void SetCachedSize(int size) const; public: - + ::google::protobuf::Metadata GetMetadata() const; - + // nested types ---------------------------------------------------- - + // accessors ------------------------------------------------------- - + // required string a_string = 1; inline bool has_a_string() const; inline void clear_a_string(); @@ -4593,31 +4572,25 @@ class stringMessage : public ::google::protobuf::Message { inline void set_a_string(const char* value); inline void set_a_string(const char* value, size_t size); inline ::std::string* mutable_a_string(); - + inline ::std::string* release_a_string(); + inline void set_allocated_a_string(::std::string* a_string); + // @@protoc_insertion_point(class_scope:xtreemfs.pbrpc.stringMessage) private: + inline void set_has_a_string(); + inline void clear_has_a_string(); + ::google::protobuf::UnknownFieldSet _unknown_fields_; - mutable int _cached_size_; - + ::std::string* a_string_; - static const ::std::string _default_a_string_; + + mutable int _cached_size_; + ::google::protobuf::uint32 _has_bits_[(1 + 31) / 32]; + friend void protobuf_AddDesc_xtreemfs_2fMRC_2eproto(); friend void protobuf_AssignDesc_xtreemfs_2fMRC_2eproto(); friend void protobuf_ShutdownFile_xtreemfs_2fMRC_2eproto(); - - ::google::protobuf::uint32 _has_bits_[(1 + 31) / 32]; - - // WHY DOES & HAVE LOWER PRECEDENCE THAN != !? - inline bool _has_bit(int index) const { - return (_has_bits_[index / 32] & (1u << (index % 32))) != 0; - } - inline void _set_bit(int index) { - _has_bits_[index / 32] |= (1u << (index % 32)); - } - inline void _clear_bit(int index) { - _has_bits_[index / 32] &= ~(1u << (index % 32)); - } - + void InitAsDefaultInstance(); static stringMessage* default_instance_; }; @@ -4627,29 +4600,29 @@ class xtreemfs_listdirRequest : public ::google::protobuf::Message { public: xtreemfs_listdirRequest(); virtual ~xtreemfs_listdirRequest(); - + xtreemfs_listdirRequest(const xtreemfs_listdirRequest& from); - + inline xtreemfs_listdirRequest& operator=(const xtreemfs_listdirRequest& from) { CopyFrom(from); return *this; } - + inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const { return _unknown_fields_; } - + inline ::google::protobuf::UnknownFieldSet* mutable_unknown_fields() { return &_unknown_fields_; } - + static const ::google::protobuf::Descriptor* descriptor(); static const xtreemfs_listdirRequest& default_instance(); - + void Swap(xtreemfs_listdirRequest* other); - + // implements Message ---------------------------------------------- - + xtreemfs_listdirRequest* New() const; void CopyFrom(const ::google::protobuf::Message& from); void MergeFrom(const ::google::protobuf::Message& from); @@ -4657,7 +4630,7 @@ class xtreemfs_listdirRequest : public ::google::protobuf::Message { void MergeFrom(const xtreemfs_listdirRequest& from); void Clear(); bool IsInitialized() const; - + int ByteSize() const; bool MergePartialFromCodedStream( ::google::protobuf::io::CodedInputStream* input); @@ -4670,13 +4643,13 @@ class xtreemfs_listdirRequest : public ::google::protobuf::Message { void SharedDtor(); void SetCachedSize(int size) const; public: - + ::google::protobuf::Metadata GetMetadata() const; - + // nested types ---------------------------------------------------- - + // accessors ------------------------------------------------------- - + // required string path = 1; inline bool has_path() const; inline void clear_path(); @@ -4686,31 +4659,25 @@ class xtreemfs_listdirRequest : public ::google::protobuf::Message { inline void set_path(const char* value); inline void set_path(const char* value, size_t size); inline ::std::string* mutable_path(); - + inline ::std::string* release_path(); + inline void set_allocated_path(::std::string* path); + // @@protoc_insertion_point(class_scope:xtreemfs.pbrpc.xtreemfs_listdirRequest) private: + inline void set_has_path(); + inline void clear_has_path(); + ::google::protobuf::UnknownFieldSet _unknown_fields_; - mutable int _cached_size_; - + ::std::string* path_; - static const ::std::string _default_path_; + + mutable int _cached_size_; + ::google::protobuf::uint32 _has_bits_[(1 + 31) / 32]; + friend void protobuf_AddDesc_xtreemfs_2fMRC_2eproto(); friend void protobuf_AssignDesc_xtreemfs_2fMRC_2eproto(); friend void protobuf_ShutdownFile_xtreemfs_2fMRC_2eproto(); - - ::google::protobuf::uint32 _has_bits_[(1 + 31) / 32]; - - // WHY DOES & HAVE LOWER PRECEDENCE THAN != !? - inline bool _has_bit(int index) const { - return (_has_bits_[index / 32] & (1u << (index % 32))) != 0; - } - inline void _set_bit(int index) { - _has_bits_[index / 32] |= (1u << (index % 32)); - } - inline void _clear_bit(int index) { - _has_bits_[index / 32] &= ~(1u << (index % 32)); - } - + void InitAsDefaultInstance(); static xtreemfs_listdirRequest* default_instance_; }; @@ -4720,29 +4687,29 @@ class xtreemfs_listdirResponse : public ::google::protobuf::Message { public: xtreemfs_listdirResponse(); virtual ~xtreemfs_listdirResponse(); - + xtreemfs_listdirResponse(const xtreemfs_listdirResponse& from); - + inline xtreemfs_listdirResponse& operator=(const xtreemfs_listdirResponse& from) { CopyFrom(from); return *this; } - + inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const { return _unknown_fields_; } - + inline ::google::protobuf::UnknownFieldSet* mutable_unknown_fields() { return &_unknown_fields_; } - + static const ::google::protobuf::Descriptor* descriptor(); static const xtreemfs_listdirResponse& default_instance(); - + void Swap(xtreemfs_listdirResponse* other); - + // implements Message ---------------------------------------------- - + xtreemfs_listdirResponse* New() const; void CopyFrom(const ::google::protobuf::Message& from); void MergeFrom(const ::google::protobuf::Message& from); @@ -4750,7 +4717,7 @@ class xtreemfs_listdirResponse : public ::google::protobuf::Message { void MergeFrom(const xtreemfs_listdirResponse& from); void Clear(); bool IsInitialized() const; - + int ByteSize() const; bool MergePartialFromCodedStream( ::google::protobuf::io::CodedInputStream* input); @@ -4763,13 +4730,13 @@ class xtreemfs_listdirResponse : public ::google::protobuf::Message { void SharedDtor(); void SetCachedSize(int size) const; public: - + ::google::protobuf::Metadata GetMetadata() const; - + // nested types ---------------------------------------------------- - + // accessors ------------------------------------------------------- - + // repeated string names = 1; inline int names_size() const; inline void clear_names(); @@ -4785,30 +4752,21 @@ class xtreemfs_listdirResponse : public ::google::protobuf::Message { inline void add_names(const char* value, size_t size); inline const ::google::protobuf::RepeatedPtrField< ::std::string>& names() const; inline ::google::protobuf::RepeatedPtrField< ::std::string>* mutable_names(); - + // @@protoc_insertion_point(class_scope:xtreemfs.pbrpc.xtreemfs_listdirResponse) private: + ::google::protobuf::UnknownFieldSet _unknown_fields_; - mutable int _cached_size_; - + ::google::protobuf::RepeatedPtrField< ::std::string> names_; + + mutable int _cached_size_; + ::google::protobuf::uint32 _has_bits_[(1 + 31) / 32]; + friend void protobuf_AddDesc_xtreemfs_2fMRC_2eproto(); friend void protobuf_AssignDesc_xtreemfs_2fMRC_2eproto(); friend void protobuf_ShutdownFile_xtreemfs_2fMRC_2eproto(); - - ::google::protobuf::uint32 _has_bits_[(1 + 31) / 32]; - - // WHY DOES & HAVE LOWER PRECEDENCE THAN != !? - inline bool _has_bit(int index) const { - return (_has_bits_[index / 32] & (1u << (index % 32))) != 0; - } - inline void _set_bit(int index) { - _has_bits_[index / 32] |= (1u << (index % 32)); - } - inline void _clear_bit(int index) { - _has_bits_[index / 32] &= ~(1u << (index % 32)); - } - + void InitAsDefaultInstance(); static xtreemfs_listdirResponse* default_instance_; }; @@ -4818,29 +4776,29 @@ class xtreemfs_replica_addRequest : public ::google::protobuf::Message { public: xtreemfs_replica_addRequest(); virtual ~xtreemfs_replica_addRequest(); - + xtreemfs_replica_addRequest(const xtreemfs_replica_addRequest& from); - + inline xtreemfs_replica_addRequest& operator=(const xtreemfs_replica_addRequest& from) { CopyFrom(from); return *this; } - + inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const { return _unknown_fields_; } - + inline ::google::protobuf::UnknownFieldSet* mutable_unknown_fields() { return &_unknown_fields_; } - + static const ::google::protobuf::Descriptor* descriptor(); static const xtreemfs_replica_addRequest& default_instance(); - + void Swap(xtreemfs_replica_addRequest* other); - + // implements Message ---------------------------------------------- - + xtreemfs_replica_addRequest* New() const; void CopyFrom(const ::google::protobuf::Message& from); void MergeFrom(const ::google::protobuf::Message& from); @@ -4848,7 +4806,7 @@ class xtreemfs_replica_addRequest : public ::google::protobuf::Message { void MergeFrom(const xtreemfs_replica_addRequest& from); void Clear(); bool IsInitialized() const; - + int ByteSize() const; bool MergePartialFromCodedStream( ::google::protobuf::io::CodedInputStream* input); @@ -4861,13 +4819,13 @@ class xtreemfs_replica_addRequest : public ::google::protobuf::Message { void SharedDtor(); void SetCachedSize(int size) const; public: - + ::google::protobuf::Metadata GetMetadata() const; - + // nested types ---------------------------------------------------- - + // accessors ------------------------------------------------------- - + // optional string file_id = 1; inline bool has_file_id() const; inline void clear_file_id(); @@ -4877,7 +4835,9 @@ class xtreemfs_replica_addRequest : public ::google::protobuf::Message { inline void set_file_id(const char* value); inline void set_file_id(const char* value, size_t size); inline ::std::string* mutable_file_id(); - + inline ::std::string* release_file_id(); + inline void set_allocated_file_id(::std::string* file_id); + // optional string path = 3; inline bool has_path() const; inline void clear_path(); @@ -4887,7 +4847,9 @@ class xtreemfs_replica_addRequest : public ::google::protobuf::Message { inline void set_path(const char* value); inline void set_path(const char* value, size_t size); inline ::std::string* mutable_path(); - + inline ::std::string* release_path(); + inline void set_allocated_path(::std::string* path); + // optional string volume_name = 4; inline bool has_volume_name() const; inline void clear_volume_name(); @@ -4897,43 +4859,43 @@ class xtreemfs_replica_addRequest : public ::google::protobuf::Message { inline void set_volume_name(const char* value); inline void set_volume_name(const char* value, size_t size); inline ::std::string* mutable_volume_name(); - + inline ::std::string* release_volume_name(); + inline void set_allocated_volume_name(::std::string* volume_name); + // required .xtreemfs.pbrpc.Replica new_replica = 2; inline bool has_new_replica() const; inline void clear_new_replica(); static const int kNewReplicaFieldNumber = 2; inline const ::xtreemfs::pbrpc::Replica& new_replica() const; inline ::xtreemfs::pbrpc::Replica* mutable_new_replica(); - + inline ::xtreemfs::pbrpc::Replica* release_new_replica(); + inline void set_allocated_new_replica(::xtreemfs::pbrpc::Replica* new_replica); + // @@protoc_insertion_point(class_scope:xtreemfs.pbrpc.xtreemfs_replica_addRequest) private: + inline void set_has_file_id(); + inline void clear_has_file_id(); + inline void set_has_path(); + inline void clear_has_path(); + inline void set_has_volume_name(); + inline void clear_has_volume_name(); + inline void set_has_new_replica(); + inline void clear_has_new_replica(); + ::google::protobuf::UnknownFieldSet _unknown_fields_; - mutable int _cached_size_; - + ::std::string* file_id_; - static const ::std::string _default_file_id_; ::std::string* path_; - static const ::std::string _default_path_; ::std::string* volume_name_; - static const ::std::string _default_volume_name_; ::xtreemfs::pbrpc::Replica* new_replica_; + + mutable int _cached_size_; + ::google::protobuf::uint32 _has_bits_[(4 + 31) / 32]; + friend void protobuf_AddDesc_xtreemfs_2fMRC_2eproto(); friend void protobuf_AssignDesc_xtreemfs_2fMRC_2eproto(); friend void protobuf_ShutdownFile_xtreemfs_2fMRC_2eproto(); - - ::google::protobuf::uint32 _has_bits_[(4 + 31) / 32]; - - // WHY DOES & HAVE LOWER PRECEDENCE THAN != !? - inline bool _has_bit(int index) const { - return (_has_bits_[index / 32] & (1u << (index % 32))) != 0; - } - inline void _set_bit(int index) { - _has_bits_[index / 32] |= (1u << (index % 32)); - } - inline void _clear_bit(int index) { - _has_bits_[index / 32] &= ~(1u << (index % 32)); - } - + void InitAsDefaultInstance(); static xtreemfs_replica_addRequest* default_instance_; }; @@ -4943,29 +4905,29 @@ class xtreemfs_replica_listRequest : public ::google::protobuf::Message { public: xtreemfs_replica_listRequest(); virtual ~xtreemfs_replica_listRequest(); - + xtreemfs_replica_listRequest(const xtreemfs_replica_listRequest& from); - + inline xtreemfs_replica_listRequest& operator=(const xtreemfs_replica_listRequest& from) { CopyFrom(from); return *this; } - + inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const { return _unknown_fields_; } - + inline ::google::protobuf::UnknownFieldSet* mutable_unknown_fields() { return &_unknown_fields_; } - + static const ::google::protobuf::Descriptor* descriptor(); static const xtreemfs_replica_listRequest& default_instance(); - + void Swap(xtreemfs_replica_listRequest* other); - + // implements Message ---------------------------------------------- - + xtreemfs_replica_listRequest* New() const; void CopyFrom(const ::google::protobuf::Message& from); void MergeFrom(const ::google::protobuf::Message& from); @@ -4973,7 +4935,7 @@ class xtreemfs_replica_listRequest : public ::google::protobuf::Message { void MergeFrom(const xtreemfs_replica_listRequest& from); void Clear(); bool IsInitialized() const; - + int ByteSize() const; bool MergePartialFromCodedStream( ::google::protobuf::io::CodedInputStream* input); @@ -4986,13 +4948,13 @@ class xtreemfs_replica_listRequest : public ::google::protobuf::Message { void SharedDtor(); void SetCachedSize(int size) const; public: - + ::google::protobuf::Metadata GetMetadata() const; - + // nested types ---------------------------------------------------- - + // accessors ------------------------------------------------------- - + // optional string file_id = 1; inline bool has_file_id() const; inline void clear_file_id(); @@ -5002,7 +4964,9 @@ class xtreemfs_replica_listRequest : public ::google::protobuf::Message { inline void set_file_id(const char* value); inline void set_file_id(const char* value, size_t size); inline ::std::string* mutable_file_id(); - + inline ::std::string* release_file_id(); + inline void set_allocated_file_id(::std::string* file_id); + // optional string path = 2; inline bool has_path() const; inline void clear_path(); @@ -5012,7 +4976,9 @@ class xtreemfs_replica_listRequest : public ::google::protobuf::Message { inline void set_path(const char* value); inline void set_path(const char* value, size_t size); inline ::std::string* mutable_path(); - + inline ::std::string* release_path(); + inline void set_allocated_path(::std::string* path); + // optional string volume_name = 3; inline bool has_volume_name() const; inline void clear_volume_name(); @@ -5022,35 +4988,31 @@ class xtreemfs_replica_listRequest : public ::google::protobuf::Message { inline void set_volume_name(const char* value); inline void set_volume_name(const char* value, size_t size); inline ::std::string* mutable_volume_name(); - + inline ::std::string* release_volume_name(); + inline void set_allocated_volume_name(::std::string* volume_name); + // @@protoc_insertion_point(class_scope:xtreemfs.pbrpc.xtreemfs_replica_listRequest) private: + inline void set_has_file_id(); + inline void clear_has_file_id(); + inline void set_has_path(); + inline void clear_has_path(); + inline void set_has_volume_name(); + inline void clear_has_volume_name(); + ::google::protobuf::UnknownFieldSet _unknown_fields_; - mutable int _cached_size_; - + ::std::string* file_id_; - static const ::std::string _default_file_id_; ::std::string* path_; - static const ::std::string _default_path_; ::std::string* volume_name_; - static const ::std::string _default_volume_name_; + + mutable int _cached_size_; + ::google::protobuf::uint32 _has_bits_[(3 + 31) / 32]; + friend void protobuf_AddDesc_xtreemfs_2fMRC_2eproto(); friend void protobuf_AssignDesc_xtreemfs_2fMRC_2eproto(); friend void protobuf_ShutdownFile_xtreemfs_2fMRC_2eproto(); - - ::google::protobuf::uint32 _has_bits_[(3 + 31) / 32]; - - // WHY DOES & HAVE LOWER PRECEDENCE THAN != !? - inline bool _has_bit(int index) const { - return (_has_bits_[index / 32] & (1u << (index % 32))) != 0; - } - inline void _set_bit(int index) { - _has_bits_[index / 32] |= (1u << (index % 32)); - } - inline void _clear_bit(int index) { - _has_bits_[index / 32] &= ~(1u << (index % 32)); - } - + void InitAsDefaultInstance(); static xtreemfs_replica_listRequest* default_instance_; }; @@ -5060,29 +5022,29 @@ class xtreemfs_replica_removeRequest : public ::google::protobuf::Message { public: xtreemfs_replica_removeRequest(); virtual ~xtreemfs_replica_removeRequest(); - + xtreemfs_replica_removeRequest(const xtreemfs_replica_removeRequest& from); - + inline xtreemfs_replica_removeRequest& operator=(const xtreemfs_replica_removeRequest& from) { CopyFrom(from); return *this; } - + inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const { return _unknown_fields_; } - + inline ::google::protobuf::UnknownFieldSet* mutable_unknown_fields() { return &_unknown_fields_; } - + static const ::google::protobuf::Descriptor* descriptor(); static const xtreemfs_replica_removeRequest& default_instance(); - + void Swap(xtreemfs_replica_removeRequest* other); - + // implements Message ---------------------------------------------- - + xtreemfs_replica_removeRequest* New() const; void CopyFrom(const ::google::protobuf::Message& from); void MergeFrom(const ::google::protobuf::Message& from); @@ -5090,7 +5052,7 @@ class xtreemfs_replica_removeRequest : public ::google::protobuf::Message { void MergeFrom(const xtreemfs_replica_removeRequest& from); void Clear(); bool IsInitialized() const; - + int ByteSize() const; bool MergePartialFromCodedStream( ::google::protobuf::io::CodedInputStream* input); @@ -5103,13 +5065,13 @@ class xtreemfs_replica_removeRequest : public ::google::protobuf::Message { void SharedDtor(); void SetCachedSize(int size) const; public: - + ::google::protobuf::Metadata GetMetadata() const; - + // nested types ---------------------------------------------------- - + // accessors ------------------------------------------------------- - + // optional string file_id = 1; inline bool has_file_id() const; inline void clear_file_id(); @@ -5119,7 +5081,9 @@ class xtreemfs_replica_removeRequest : public ::google::protobuf::Message { inline void set_file_id(const char* value); inline void set_file_id(const char* value, size_t size); inline ::std::string* mutable_file_id(); - + inline ::std::string* release_file_id(); + inline void set_allocated_file_id(::std::string* file_id); + // optional string path = 3; inline bool has_path() const; inline void clear_path(); @@ -5129,7 +5093,9 @@ class xtreemfs_replica_removeRequest : public ::google::protobuf::Message { inline void set_path(const char* value); inline void set_path(const char* value, size_t size); inline ::std::string* mutable_path(); - + inline ::std::string* release_path(); + inline void set_allocated_path(::std::string* path); + // optional string volume_name = 4; inline bool has_volume_name() const; inline void clear_volume_name(); @@ -5139,7 +5105,9 @@ class xtreemfs_replica_removeRequest : public ::google::protobuf::Message { inline void set_volume_name(const char* value); inline void set_volume_name(const char* value, size_t size); inline ::std::string* mutable_volume_name(); - + inline ::std::string* release_volume_name(); + inline void set_allocated_volume_name(::std::string* volume_name); + // required string osd_uuid = 2; inline bool has_osd_uuid() const; inline void clear_osd_uuid(); @@ -5149,37 +5117,34 @@ class xtreemfs_replica_removeRequest : public ::google::protobuf::Message { inline void set_osd_uuid(const char* value); inline void set_osd_uuid(const char* value, size_t size); inline ::std::string* mutable_osd_uuid(); - + inline ::std::string* release_osd_uuid(); + inline void set_allocated_osd_uuid(::std::string* osd_uuid); + // @@protoc_insertion_point(class_scope:xtreemfs.pbrpc.xtreemfs_replica_removeRequest) private: + inline void set_has_file_id(); + inline void clear_has_file_id(); + inline void set_has_path(); + inline void clear_has_path(); + inline void set_has_volume_name(); + inline void clear_has_volume_name(); + inline void set_has_osd_uuid(); + inline void clear_has_osd_uuid(); + ::google::protobuf::UnknownFieldSet _unknown_fields_; - mutable int _cached_size_; - + ::std::string* file_id_; - static const ::std::string _default_file_id_; ::std::string* path_; - static const ::std::string _default_path_; ::std::string* volume_name_; - static const ::std::string _default_volume_name_; ::std::string* osd_uuid_; - static const ::std::string _default_osd_uuid_; + + mutable int _cached_size_; + ::google::protobuf::uint32 _has_bits_[(4 + 31) / 32]; + friend void protobuf_AddDesc_xtreemfs_2fMRC_2eproto(); friend void protobuf_AssignDesc_xtreemfs_2fMRC_2eproto(); friend void protobuf_ShutdownFile_xtreemfs_2fMRC_2eproto(); - - ::google::protobuf::uint32 _has_bits_[(4 + 31) / 32]; - - // WHY DOES & HAVE LOWER PRECEDENCE THAN != !? - inline bool _has_bit(int index) const { - return (_has_bits_[index / 32] & (1u << (index % 32))) != 0; - } - inline void _set_bit(int index) { - _has_bits_[index / 32] |= (1u << (index % 32)); - } - inline void _clear_bit(int index) { - _has_bits_[index / 32] &= ~(1u << (index % 32)); - } - + void InitAsDefaultInstance(); static xtreemfs_replica_removeRequest* default_instance_; }; @@ -5189,29 +5154,29 @@ class xtreemfs_restore_fileRequest : public ::google::protobuf::Message { public: xtreemfs_restore_fileRequest(); virtual ~xtreemfs_restore_fileRequest(); - + xtreemfs_restore_fileRequest(const xtreemfs_restore_fileRequest& from); - + inline xtreemfs_restore_fileRequest& operator=(const xtreemfs_restore_fileRequest& from) { CopyFrom(from); return *this; } - + inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const { return _unknown_fields_; } - + inline ::google::protobuf::UnknownFieldSet* mutable_unknown_fields() { return &_unknown_fields_; } - + static const ::google::protobuf::Descriptor* descriptor(); static const xtreemfs_restore_fileRequest& default_instance(); - + void Swap(xtreemfs_restore_fileRequest* other); - + // implements Message ---------------------------------------------- - + xtreemfs_restore_fileRequest* New() const; void CopyFrom(const ::google::protobuf::Message& from); void MergeFrom(const ::google::protobuf::Message& from); @@ -5219,7 +5184,7 @@ class xtreemfs_restore_fileRequest : public ::google::protobuf::Message { void MergeFrom(const xtreemfs_restore_fileRequest& from); void Clear(); bool IsInitialized() const; - + int ByteSize() const; bool MergePartialFromCodedStream( ::google::protobuf::io::CodedInputStream* input); @@ -5232,13 +5197,13 @@ class xtreemfs_restore_fileRequest : public ::google::protobuf::Message { void SharedDtor(); void SetCachedSize(int size) const; public: - + ::google::protobuf::Metadata GetMetadata() const; - + // nested types ---------------------------------------------------- - + // accessors ------------------------------------------------------- - + // required string file_path = 1; inline bool has_file_path() const; inline void clear_file_path(); @@ -5248,7 +5213,9 @@ class xtreemfs_restore_fileRequest : public ::google::protobuf::Message { inline void set_file_path(const char* value); inline void set_file_path(const char* value, size_t size); inline ::std::string* mutable_file_path(); - + inline ::std::string* release_file_path(); + inline void set_allocated_file_path(::std::string* file_path); + // required string file_id = 2; inline bool has_file_id() const; inline void clear_file_id(); @@ -5258,14 +5225,16 @@ class xtreemfs_restore_fileRequest : public ::google::protobuf::Message { inline void set_file_id(const char* value); inline void set_file_id(const char* value, size_t size); inline ::std::string* mutable_file_id(); - + inline ::std::string* release_file_id(); + inline void set_allocated_file_id(::std::string* file_id); + // required fixed64 file_size = 3; inline bool has_file_size() const; inline void clear_file_size(); static const int kFileSizeFieldNumber = 3; inline ::google::protobuf::uint64 file_size() const; inline void set_file_size(::google::protobuf::uint64 value); - + // required string osd_uuid = 4; inline bool has_osd_uuid() const; inline void clear_osd_uuid(); @@ -5275,44 +5244,44 @@ class xtreemfs_restore_fileRequest : public ::google::protobuf::Message { inline void set_osd_uuid(const char* value); inline void set_osd_uuid(const char* value, size_t size); inline ::std::string* mutable_osd_uuid(); - + inline ::std::string* release_osd_uuid(); + inline void set_allocated_osd_uuid(::std::string* osd_uuid); + // required fixed32 stripe_size = 5; inline bool has_stripe_size() const; inline void clear_stripe_size(); static const int kStripeSizeFieldNumber = 5; inline ::google::protobuf::uint32 stripe_size() const; inline void set_stripe_size(::google::protobuf::uint32 value); - + // @@protoc_insertion_point(class_scope:xtreemfs.pbrpc.xtreemfs_restore_fileRequest) private: + inline void set_has_file_path(); + inline void clear_has_file_path(); + inline void set_has_file_id(); + inline void clear_has_file_id(); + inline void set_has_file_size(); + inline void clear_has_file_size(); + inline void set_has_osd_uuid(); + inline void clear_has_osd_uuid(); + inline void set_has_stripe_size(); + inline void clear_has_stripe_size(); + ::google::protobuf::UnknownFieldSet _unknown_fields_; - mutable int _cached_size_; - + ::std::string* file_path_; - static const ::std::string _default_file_path_; ::std::string* file_id_; - static const ::std::string _default_file_id_; ::google::protobuf::uint64 file_size_; ::std::string* osd_uuid_; - static const ::std::string _default_osd_uuid_; ::google::protobuf::uint32 stripe_size_; + + mutable int _cached_size_; + ::google::protobuf::uint32 _has_bits_[(5 + 31) / 32]; + friend void protobuf_AddDesc_xtreemfs_2fMRC_2eproto(); friend void protobuf_AssignDesc_xtreemfs_2fMRC_2eproto(); friend void protobuf_ShutdownFile_xtreemfs_2fMRC_2eproto(); - - ::google::protobuf::uint32 _has_bits_[(5 + 31) / 32]; - - // WHY DOES & HAVE LOWER PRECEDENCE THAN != !? - inline bool _has_bit(int index) const { - return (_has_bits_[index / 32] & (1u << (index % 32))) != 0; - } - inline void _set_bit(int index) { - _has_bits_[index / 32] |= (1u << (index % 32)); - } - inline void _clear_bit(int index) { - _has_bits_[index / 32] &= ~(1u << (index % 32)); - } - + void InitAsDefaultInstance(); static xtreemfs_restore_fileRequest* default_instance_; }; @@ -5322,29 +5291,29 @@ class xtreemfs_rmvolRequest : public ::google::protobuf::Message { public: xtreemfs_rmvolRequest(); virtual ~xtreemfs_rmvolRequest(); - + xtreemfs_rmvolRequest(const xtreemfs_rmvolRequest& from); - + inline xtreemfs_rmvolRequest& operator=(const xtreemfs_rmvolRequest& from) { CopyFrom(from); return *this; } - + inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const { return _unknown_fields_; } - + inline ::google::protobuf::UnknownFieldSet* mutable_unknown_fields() { return &_unknown_fields_; } - + static const ::google::protobuf::Descriptor* descriptor(); static const xtreemfs_rmvolRequest& default_instance(); - + void Swap(xtreemfs_rmvolRequest* other); - + // implements Message ---------------------------------------------- - + xtreemfs_rmvolRequest* New() const; void CopyFrom(const ::google::protobuf::Message& from); void MergeFrom(const ::google::protobuf::Message& from); @@ -5352,7 +5321,7 @@ class xtreemfs_rmvolRequest : public ::google::protobuf::Message { void MergeFrom(const xtreemfs_rmvolRequest& from); void Clear(); bool IsInitialized() const; - + int ByteSize() const; bool MergePartialFromCodedStream( ::google::protobuf::io::CodedInputStream* input); @@ -5365,13 +5334,13 @@ class xtreemfs_rmvolRequest : public ::google::protobuf::Message { void SharedDtor(); void SetCachedSize(int size) const; public: - + ::google::protobuf::Metadata GetMetadata() const; - + // nested types ---------------------------------------------------- - + // accessors ------------------------------------------------------- - + // required string volume_name = 1; inline bool has_volume_name() const; inline void clear_volume_name(); @@ -5381,31 +5350,25 @@ class xtreemfs_rmvolRequest : public ::google::protobuf::Message { inline void set_volume_name(const char* value); inline void set_volume_name(const char* value, size_t size); inline ::std::string* mutable_volume_name(); - + inline ::std::string* release_volume_name(); + inline void set_allocated_volume_name(::std::string* volume_name); + // @@protoc_insertion_point(class_scope:xtreemfs.pbrpc.xtreemfs_rmvolRequest) private: + inline void set_has_volume_name(); + inline void clear_has_volume_name(); + ::google::protobuf::UnknownFieldSet _unknown_fields_; - mutable int _cached_size_; - + ::std::string* volume_name_; - static const ::std::string _default_volume_name_; + + mutable int _cached_size_; + ::google::protobuf::uint32 _has_bits_[(1 + 31) / 32]; + friend void protobuf_AddDesc_xtreemfs_2fMRC_2eproto(); friend void protobuf_AssignDesc_xtreemfs_2fMRC_2eproto(); friend void protobuf_ShutdownFile_xtreemfs_2fMRC_2eproto(); - - ::google::protobuf::uint32 _has_bits_[(1 + 31) / 32]; - - // WHY DOES & HAVE LOWER PRECEDENCE THAN != !? - inline bool _has_bit(int index) const { - return (_has_bits_[index / 32] & (1u << (index % 32))) != 0; - } - inline void _set_bit(int index) { - _has_bits_[index / 32] |= (1u << (index % 32)); - } - inline void _clear_bit(int index) { - _has_bits_[index / 32] &= ~(1u << (index % 32)); - } - + void InitAsDefaultInstance(); static xtreemfs_rmvolRequest* default_instance_; }; @@ -5415,29 +5378,29 @@ class xtreemfs_update_file_sizeRequest : public ::google::protobuf::Message { public: xtreemfs_update_file_sizeRequest(); virtual ~xtreemfs_update_file_sizeRequest(); - + xtreemfs_update_file_sizeRequest(const xtreemfs_update_file_sizeRequest& from); - + inline xtreemfs_update_file_sizeRequest& operator=(const xtreemfs_update_file_sizeRequest& from) { CopyFrom(from); return *this; } - + inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const { return _unknown_fields_; } - + inline ::google::protobuf::UnknownFieldSet* mutable_unknown_fields() { return &_unknown_fields_; } - + static const ::google::protobuf::Descriptor* descriptor(); static const xtreemfs_update_file_sizeRequest& default_instance(); - + void Swap(xtreemfs_update_file_sizeRequest* other); - + // implements Message ---------------------------------------------- - + xtreemfs_update_file_sizeRequest* New() const; void CopyFrom(const ::google::protobuf::Message& from); void MergeFrom(const ::google::protobuf::Message& from); @@ -5445,7 +5408,7 @@ class xtreemfs_update_file_sizeRequest : public ::google::protobuf::Message { void MergeFrom(const xtreemfs_update_file_sizeRequest& from); void Clear(); bool IsInitialized() const; - + int ByteSize() const; bool MergePartialFromCodedStream( ::google::protobuf::io::CodedInputStream* input); @@ -5458,67 +5421,72 @@ class xtreemfs_update_file_sizeRequest : public ::google::protobuf::Message { void SharedDtor(); void SetCachedSize(int size) const; public: - + ::google::protobuf::Metadata GetMetadata() const; - + // nested types ---------------------------------------------------- - + // accessors ------------------------------------------------------- - + // required .xtreemfs.pbrpc.XCap xcap = 1; inline bool has_xcap() const; inline void clear_xcap(); static const int kXcapFieldNumber = 1; inline const ::xtreemfs::pbrpc::XCap& xcap() const; inline ::xtreemfs::pbrpc::XCap* mutable_xcap(); - + inline ::xtreemfs::pbrpc::XCap* release_xcap(); + inline void set_allocated_xcap(::xtreemfs::pbrpc::XCap* xcap); + // required .xtreemfs.pbrpc.OSDWriteResponse osd_write_response = 2; inline bool has_osd_write_response() const; inline void clear_osd_write_response(); static const int kOsdWriteResponseFieldNumber = 2; inline const ::xtreemfs::pbrpc::OSDWriteResponse& osd_write_response() const; inline ::xtreemfs::pbrpc::OSDWriteResponse* mutable_osd_write_response(); - + inline ::xtreemfs::pbrpc::OSDWriteResponse* release_osd_write_response(); + inline void set_allocated_osd_write_response(::xtreemfs::pbrpc::OSDWriteResponse* osd_write_response); + // optional bool close_file = 3; inline bool has_close_file() const; inline void clear_close_file(); static const int kCloseFileFieldNumber = 3; inline bool close_file() const; inline void set_close_file(bool value); - + // optional .xtreemfs.pbrpc.VivaldiCoordinates coordinates = 4; inline bool has_coordinates() const; inline void clear_coordinates(); static const int kCoordinatesFieldNumber = 4; inline const ::xtreemfs::pbrpc::VivaldiCoordinates& coordinates() const; inline ::xtreemfs::pbrpc::VivaldiCoordinates* mutable_coordinates(); - + inline ::xtreemfs::pbrpc::VivaldiCoordinates* release_coordinates(); + inline void set_allocated_coordinates(::xtreemfs::pbrpc::VivaldiCoordinates* coordinates); + // @@protoc_insertion_point(class_scope:xtreemfs.pbrpc.xtreemfs_update_file_sizeRequest) private: + inline void set_has_xcap(); + inline void clear_has_xcap(); + inline void set_has_osd_write_response(); + inline void clear_has_osd_write_response(); + inline void set_has_close_file(); + inline void clear_has_close_file(); + inline void set_has_coordinates(); + inline void clear_has_coordinates(); + ::google::protobuf::UnknownFieldSet _unknown_fields_; - mutable int _cached_size_; - + ::xtreemfs::pbrpc::XCap* xcap_; ::xtreemfs::pbrpc::OSDWriteResponse* osd_write_response_; - bool close_file_; ::xtreemfs::pbrpc::VivaldiCoordinates* coordinates_; + bool close_file_; + + mutable int _cached_size_; + ::google::protobuf::uint32 _has_bits_[(4 + 31) / 32]; + friend void protobuf_AddDesc_xtreemfs_2fMRC_2eproto(); friend void protobuf_AssignDesc_xtreemfs_2fMRC_2eproto(); friend void protobuf_ShutdownFile_xtreemfs_2fMRC_2eproto(); - - ::google::protobuf::uint32 _has_bits_[(4 + 31) / 32]; - - // WHY DOES & HAVE LOWER PRECEDENCE THAN != !? - inline bool _has_bit(int index) const { - return (_has_bits_[index / 32] & (1u << (index % 32))) != 0; - } - inline void _set_bit(int index) { - _has_bits_[index / 32] |= (1u << (index % 32)); - } - inline void _clear_bit(int index) { - _has_bits_[index / 32] &= ~(1u << (index % 32)); - } - + void InitAsDefaultInstance(); static xtreemfs_update_file_sizeRequest* default_instance_; }; @@ -5528,29 +5496,29 @@ class xtreemfs_set_replica_update_policyRequest : public ::google::protobuf::Mes public: xtreemfs_set_replica_update_policyRequest(); virtual ~xtreemfs_set_replica_update_policyRequest(); - + xtreemfs_set_replica_update_policyRequest(const xtreemfs_set_replica_update_policyRequest& from); - + inline xtreemfs_set_replica_update_policyRequest& operator=(const xtreemfs_set_replica_update_policyRequest& from) { CopyFrom(from); return *this; } - + inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const { return _unknown_fields_; } - + inline ::google::protobuf::UnknownFieldSet* mutable_unknown_fields() { return &_unknown_fields_; } - + static const ::google::protobuf::Descriptor* descriptor(); static const xtreemfs_set_replica_update_policyRequest& default_instance(); - + void Swap(xtreemfs_set_replica_update_policyRequest* other); - + // implements Message ---------------------------------------------- - + xtreemfs_set_replica_update_policyRequest* New() const; void CopyFrom(const ::google::protobuf::Message& from); void MergeFrom(const ::google::protobuf::Message& from); @@ -5558,7 +5526,7 @@ class xtreemfs_set_replica_update_policyRequest : public ::google::protobuf::Mes void MergeFrom(const xtreemfs_set_replica_update_policyRequest& from); void Clear(); bool IsInitialized() const; - + int ByteSize() const; bool MergePartialFromCodedStream( ::google::protobuf::io::CodedInputStream* input); @@ -5571,13 +5539,13 @@ class xtreemfs_set_replica_update_policyRequest : public ::google::protobuf::Mes void SharedDtor(); void SetCachedSize(int size) const; public: - + ::google::protobuf::Metadata GetMetadata() const; - + // nested types ---------------------------------------------------- - + // accessors ------------------------------------------------------- - + // required string file_id = 1; inline bool has_file_id() const; inline void clear_file_id(); @@ -5587,7 +5555,9 @@ class xtreemfs_set_replica_update_policyRequest : public ::google::protobuf::Mes inline void set_file_id(const char* value); inline void set_file_id(const char* value, size_t size); inline ::std::string* mutable_file_id(); - + inline ::std::string* release_file_id(); + inline void set_allocated_file_id(::std::string* file_id); + // required string update_policy = 2; inline bool has_update_policy() const; inline void clear_update_policy(); @@ -5597,33 +5567,28 @@ class xtreemfs_set_replica_update_policyRequest : public ::google::protobuf::Mes inline void set_update_policy(const char* value); inline void set_update_policy(const char* value, size_t size); inline ::std::string* mutable_update_policy(); - + inline ::std::string* release_update_policy(); + inline void set_allocated_update_policy(::std::string* update_policy); + // @@protoc_insertion_point(class_scope:xtreemfs.pbrpc.xtreemfs_set_replica_update_policyRequest) private: + inline void set_has_file_id(); + inline void clear_has_file_id(); + inline void set_has_update_policy(); + inline void clear_has_update_policy(); + ::google::protobuf::UnknownFieldSet _unknown_fields_; - mutable int _cached_size_; - + ::std::string* file_id_; - static const ::std::string _default_file_id_; ::std::string* update_policy_; - static const ::std::string _default_update_policy_; + + mutable int _cached_size_; + ::google::protobuf::uint32 _has_bits_[(2 + 31) / 32]; + friend void protobuf_AddDesc_xtreemfs_2fMRC_2eproto(); friend void protobuf_AssignDesc_xtreemfs_2fMRC_2eproto(); friend void protobuf_ShutdownFile_xtreemfs_2fMRC_2eproto(); - - ::google::protobuf::uint32 _has_bits_[(2 + 31) / 32]; - - // WHY DOES & HAVE LOWER PRECEDENCE THAN != !? - inline bool _has_bit(int index) const { - return (_has_bits_[index / 32] & (1u << (index % 32))) != 0; - } - inline void _set_bit(int index) { - _has_bits_[index / 32] |= (1u << (index % 32)); - } - inline void _clear_bit(int index) { - _has_bits_[index / 32] &= ~(1u << (index % 32)); - } - + void InitAsDefaultInstance(); static xtreemfs_set_replica_update_policyRequest* default_instance_; }; @@ -5633,29 +5598,29 @@ class xtreemfs_set_replica_update_policyResponse : public ::google::protobuf::Me public: xtreemfs_set_replica_update_policyResponse(); virtual ~xtreemfs_set_replica_update_policyResponse(); - + xtreemfs_set_replica_update_policyResponse(const xtreemfs_set_replica_update_policyResponse& from); - + inline xtreemfs_set_replica_update_policyResponse& operator=(const xtreemfs_set_replica_update_policyResponse& from) { CopyFrom(from); return *this; } - + inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const { return _unknown_fields_; } - + inline ::google::protobuf::UnknownFieldSet* mutable_unknown_fields() { return &_unknown_fields_; } - + static const ::google::protobuf::Descriptor* descriptor(); static const xtreemfs_set_replica_update_policyResponse& default_instance(); - + void Swap(xtreemfs_set_replica_update_policyResponse* other); - + // implements Message ---------------------------------------------- - + xtreemfs_set_replica_update_policyResponse* New() const; void CopyFrom(const ::google::protobuf::Message& from); void MergeFrom(const ::google::protobuf::Message& from); @@ -5663,7 +5628,7 @@ class xtreemfs_set_replica_update_policyResponse : public ::google::protobuf::Me void MergeFrom(const xtreemfs_set_replica_update_policyResponse& from); void Clear(); bool IsInitialized() const; - + int ByteSize() const; bool MergePartialFromCodedStream( ::google::protobuf::io::CodedInputStream* input); @@ -5676,13 +5641,13 @@ class xtreemfs_set_replica_update_policyResponse : public ::google::protobuf::Me void SharedDtor(); void SetCachedSize(int size) const; public: - + ::google::protobuf::Metadata GetMetadata() const; - + // nested types ---------------------------------------------------- - + // accessors ------------------------------------------------------- - + // required string old_update_policy = 1; inline bool has_old_update_policy() const; inline void clear_old_update_policy(); @@ -5692,31 +5657,25 @@ class xtreemfs_set_replica_update_policyResponse : public ::google::protobuf::Me inline void set_old_update_policy(const char* value); inline void set_old_update_policy(const char* value, size_t size); inline ::std::string* mutable_old_update_policy(); - + inline ::std::string* release_old_update_policy(); + inline void set_allocated_old_update_policy(::std::string* old_update_policy); + // @@protoc_insertion_point(class_scope:xtreemfs.pbrpc.xtreemfs_set_replica_update_policyResponse) private: + inline void set_has_old_update_policy(); + inline void clear_has_old_update_policy(); + ::google::protobuf::UnknownFieldSet _unknown_fields_; - mutable int _cached_size_; - + ::std::string* old_update_policy_; - static const ::std::string _default_old_update_policy_; + + mutable int _cached_size_; + ::google::protobuf::uint32 _has_bits_[(1 + 31) / 32]; + friend void protobuf_AddDesc_xtreemfs_2fMRC_2eproto(); friend void protobuf_AssignDesc_xtreemfs_2fMRC_2eproto(); friend void protobuf_ShutdownFile_xtreemfs_2fMRC_2eproto(); - - ::google::protobuf::uint32 _has_bits_[(1 + 31) / 32]; - - // WHY DOES & HAVE LOWER PRECEDENCE THAN != !? - inline bool _has_bit(int index) const { - return (_has_bits_[index / 32] & (1u << (index % 32))) != 0; - } - inline void _set_bit(int index) { - _has_bits_[index / 32] |= (1u << (index % 32)); - } - inline void _clear_bit(int index) { - _has_bits_[index / 32] &= ~(1u << (index % 32)); - } - + void InitAsDefaultInstance(); static xtreemfs_set_replica_update_policyResponse* default_instance_; }; @@ -5726,29 +5685,29 @@ class xtreemfs_set_read_only_xattrRequest : public ::google::protobuf::Message { public: xtreemfs_set_read_only_xattrRequest(); virtual ~xtreemfs_set_read_only_xattrRequest(); - + xtreemfs_set_read_only_xattrRequest(const xtreemfs_set_read_only_xattrRequest& from); - + inline xtreemfs_set_read_only_xattrRequest& operator=(const xtreemfs_set_read_only_xattrRequest& from) { CopyFrom(from); return *this; } - + inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const { return _unknown_fields_; } - + inline ::google::protobuf::UnknownFieldSet* mutable_unknown_fields() { return &_unknown_fields_; } - + static const ::google::protobuf::Descriptor* descriptor(); static const xtreemfs_set_read_only_xattrRequest& default_instance(); - + void Swap(xtreemfs_set_read_only_xattrRequest* other); - + // implements Message ---------------------------------------------- - + xtreemfs_set_read_only_xattrRequest* New() const; void CopyFrom(const ::google::protobuf::Message& from); void MergeFrom(const ::google::protobuf::Message& from); @@ -5756,7 +5715,7 @@ class xtreemfs_set_read_only_xattrRequest : public ::google::protobuf::Message { void MergeFrom(const xtreemfs_set_read_only_xattrRequest& from); void Clear(); bool IsInitialized() const; - + int ByteSize() const; bool MergePartialFromCodedStream( ::google::protobuf::io::CodedInputStream* input); @@ -5769,13 +5728,13 @@ class xtreemfs_set_read_only_xattrRequest : public ::google::protobuf::Message { void SharedDtor(); void SetCachedSize(int size) const; public: - + ::google::protobuf::Metadata GetMetadata() const; - + // nested types ---------------------------------------------------- - + // accessors ------------------------------------------------------- - + // required string file_id = 1; inline bool has_file_id() const; inline void clear_file_id(); @@ -5785,39 +5744,35 @@ class xtreemfs_set_read_only_xattrRequest : public ::google::protobuf::Message { inline void set_file_id(const char* value); inline void set_file_id(const char* value, size_t size); inline ::std::string* mutable_file_id(); - + inline ::std::string* release_file_id(); + inline void set_allocated_file_id(::std::string* file_id); + // required bool value = 2; inline bool has_value() const; inline void clear_value(); static const int kValueFieldNumber = 2; inline bool value() const; inline void set_value(bool value); - + // @@protoc_insertion_point(class_scope:xtreemfs.pbrpc.xtreemfs_set_read_only_xattrRequest) private: + inline void set_has_file_id(); + inline void clear_has_file_id(); + inline void set_has_value(); + inline void clear_has_value(); + ::google::protobuf::UnknownFieldSet _unknown_fields_; - mutable int _cached_size_; - + ::std::string* file_id_; - static const ::std::string _default_file_id_; bool value_; + + mutable int _cached_size_; + ::google::protobuf::uint32 _has_bits_[(2 + 31) / 32]; + friend void protobuf_AddDesc_xtreemfs_2fMRC_2eproto(); friend void protobuf_AssignDesc_xtreemfs_2fMRC_2eproto(); friend void protobuf_ShutdownFile_xtreemfs_2fMRC_2eproto(); - - ::google::protobuf::uint32 _has_bits_[(2 + 31) / 32]; - - // WHY DOES & HAVE LOWER PRECEDENCE THAN != !? - inline bool _has_bit(int index) const { - return (_has_bits_[index / 32] & (1u << (index % 32))) != 0; - } - inline void _set_bit(int index) { - _has_bits_[index / 32] |= (1u << (index % 32)); - } - inline void _clear_bit(int index) { - _has_bits_[index / 32] &= ~(1u << (index % 32)); - } - + void InitAsDefaultInstance(); static xtreemfs_set_read_only_xattrRequest* default_instance_; }; @@ -5827,29 +5782,29 @@ class xtreemfs_set_read_only_xattrResponse : public ::google::protobuf::Message public: xtreemfs_set_read_only_xattrResponse(); virtual ~xtreemfs_set_read_only_xattrResponse(); - + xtreemfs_set_read_only_xattrResponse(const xtreemfs_set_read_only_xattrResponse& from); - + inline xtreemfs_set_read_only_xattrResponse& operator=(const xtreemfs_set_read_only_xattrResponse& from) { CopyFrom(from); return *this; } - + inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const { return _unknown_fields_; } - + inline ::google::protobuf::UnknownFieldSet* mutable_unknown_fields() { return &_unknown_fields_; } - + static const ::google::protobuf::Descriptor* descriptor(); static const xtreemfs_set_read_only_xattrResponse& default_instance(); - + void Swap(xtreemfs_set_read_only_xattrResponse* other); - + // implements Message ---------------------------------------------- - + xtreemfs_set_read_only_xattrResponse* New() const; void CopyFrom(const ::google::protobuf::Message& from); void MergeFrom(const ::google::protobuf::Message& from); @@ -5857,7 +5812,7 @@ class xtreemfs_set_read_only_xattrResponse : public ::google::protobuf::Message void MergeFrom(const xtreemfs_set_read_only_xattrResponse& from); void Clear(); bool IsInitialized() const; - + int ByteSize() const; bool MergePartialFromCodedStream( ::google::protobuf::io::CodedInputStream* input); @@ -5870,43 +5825,36 @@ class xtreemfs_set_read_only_xattrResponse : public ::google::protobuf::Message void SharedDtor(); void SetCachedSize(int size) const; public: - + ::google::protobuf::Metadata GetMetadata() const; - + // nested types ---------------------------------------------------- - + // accessors ------------------------------------------------------- - + // required bool was_set = 1; inline bool has_was_set() const; inline void clear_was_set(); static const int kWasSetFieldNumber = 1; inline bool was_set() const; inline void set_was_set(bool value); - + // @@protoc_insertion_point(class_scope:xtreemfs.pbrpc.xtreemfs_set_read_only_xattrResponse) private: + inline void set_has_was_set(); + inline void clear_has_was_set(); + ::google::protobuf::UnknownFieldSet _unknown_fields_; - mutable int _cached_size_; - + bool was_set_; + + mutable int _cached_size_; + ::google::protobuf::uint32 _has_bits_[(1 + 31) / 32]; + friend void protobuf_AddDesc_xtreemfs_2fMRC_2eproto(); friend void protobuf_AssignDesc_xtreemfs_2fMRC_2eproto(); friend void protobuf_ShutdownFile_xtreemfs_2fMRC_2eproto(); - - ::google::protobuf::uint32 _has_bits_[(1 + 31) / 32]; - - // WHY DOES & HAVE LOWER PRECEDENCE THAN != !? - inline bool _has_bit(int index) const { - return (_has_bits_[index / 32] & (1u << (index % 32))) != 0; - } - inline void _set_bit(int index) { - _has_bits_[index / 32] |= (1u << (index % 32)); - } - inline void _clear_bit(int index) { - _has_bits_[index / 32] &= ~(1u << (index % 32)); - } - + void InitAsDefaultInstance(); static xtreemfs_set_read_only_xattrResponse* default_instance_; }; @@ -5916,29 +5864,29 @@ class xtreemfs_get_file_credentialsRequest : public ::google::protobuf::Message public: xtreemfs_get_file_credentialsRequest(); virtual ~xtreemfs_get_file_credentialsRequest(); - + xtreemfs_get_file_credentialsRequest(const xtreemfs_get_file_credentialsRequest& from); - + inline xtreemfs_get_file_credentialsRequest& operator=(const xtreemfs_get_file_credentialsRequest& from) { CopyFrom(from); return *this; } - + inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const { return _unknown_fields_; } - + inline ::google::protobuf::UnknownFieldSet* mutable_unknown_fields() { return &_unknown_fields_; } - + static const ::google::protobuf::Descriptor* descriptor(); static const xtreemfs_get_file_credentialsRequest& default_instance(); - + void Swap(xtreemfs_get_file_credentialsRequest* other); - + // implements Message ---------------------------------------------- - + xtreemfs_get_file_credentialsRequest* New() const; void CopyFrom(const ::google::protobuf::Message& from); void MergeFrom(const ::google::protobuf::Message& from); @@ -5946,7 +5894,7 @@ class xtreemfs_get_file_credentialsRequest : public ::google::protobuf::Message void MergeFrom(const xtreemfs_get_file_credentialsRequest& from); void Clear(); bool IsInitialized() const; - + int ByteSize() const; bool MergePartialFromCodedStream( ::google::protobuf::io::CodedInputStream* input); @@ -5959,13 +5907,13 @@ class xtreemfs_get_file_credentialsRequest : public ::google::protobuf::Message void SharedDtor(); void SetCachedSize(int size) const; public: - + ::google::protobuf::Metadata GetMetadata() const; - + // nested types ---------------------------------------------------- - + // accessors ------------------------------------------------------- - + // required string file_id = 1; inline bool has_file_id() const; inline void clear_file_id(); @@ -5975,407 +5923,30 @@ class xtreemfs_get_file_credentialsRequest : public ::google::protobuf::Message inline void set_file_id(const char* value); inline void set_file_id(const char* value, size_t size); inline ::std::string* mutable_file_id(); - + inline ::std::string* release_file_id(); + inline void set_allocated_file_id(::std::string* file_id); + // @@protoc_insertion_point(class_scope:xtreemfs.pbrpc.xtreemfs_get_file_credentialsRequest) private: + inline void set_has_file_id(); + inline void clear_has_file_id(); + ::google::protobuf::UnknownFieldSet _unknown_fields_; - mutable int _cached_size_; - + ::std::string* file_id_; - static const ::std::string _default_file_id_; + + mutable int _cached_size_; + ::google::protobuf::uint32 _has_bits_[(1 + 31) / 32]; + friend void protobuf_AddDesc_xtreemfs_2fMRC_2eproto(); friend void protobuf_AssignDesc_xtreemfs_2fMRC_2eproto(); friend void protobuf_ShutdownFile_xtreemfs_2fMRC_2eproto(); - - ::google::protobuf::uint32 _has_bits_[(1 + 31) / 32]; - - // WHY DOES & HAVE LOWER PRECEDENCE THAN != !? - inline bool _has_bit(int index) const { - return (_has_bits_[index / 32] & (1u << (index % 32))) != 0; - } - inline void _set_bit(int index) { - _has_bits_[index / 32] |= (1u << (index % 32)); - } - inline void _clear_bit(int index) { - _has_bits_[index / 32] &= ~(1u << (index % 32)); - } - + void InitAsDefaultInstance(); static xtreemfs_get_file_credentialsRequest* default_instance_; }; // =================================================================== -class MRCService_Stub; - -class MRCService : public ::google::protobuf::Service { - protected: - // This class should be treated as an abstract interface. - inline MRCService() {}; - public: - virtual ~MRCService(); - - typedef MRCService_Stub Stub; - - static const ::google::protobuf::ServiceDescriptor* descriptor(); - - virtual void fsetattr(::google::protobuf::RpcController* controller, - const ::xtreemfs::pbrpc::fsetattrRequest* request, - ::xtreemfs::pbrpc::emptyResponse* response, - ::google::protobuf::Closure* done); - virtual void ftruncate(::google::protobuf::RpcController* controller, - const ::xtreemfs::pbrpc::XCap* request, - ::xtreemfs::pbrpc::XCap* response, - ::google::protobuf::Closure* done); - virtual void getattr(::google::protobuf::RpcController* controller, - const ::xtreemfs::pbrpc::getattrRequest* request, - ::xtreemfs::pbrpc::getattrResponse* response, - ::google::protobuf::Closure* done); - virtual void getxattr(::google::protobuf::RpcController* controller, - const ::xtreemfs::pbrpc::getxattrRequest* request, - ::xtreemfs::pbrpc::getxattrResponse* response, - ::google::protobuf::Closure* done); - virtual void link(::google::protobuf::RpcController* controller, - const ::xtreemfs::pbrpc::linkRequest* request, - ::xtreemfs::pbrpc::timestampResponse* response, - ::google::protobuf::Closure* done); - virtual void listxattr(::google::protobuf::RpcController* controller, - const ::xtreemfs::pbrpc::listxattrRequest* request, - ::xtreemfs::pbrpc::listxattrResponse* response, - ::google::protobuf::Closure* done); - virtual void mkdir(::google::protobuf::RpcController* controller, - const ::xtreemfs::pbrpc::mkdirRequest* request, - ::xtreemfs::pbrpc::timestampResponse* response, - ::google::protobuf::Closure* done); - virtual void open(::google::protobuf::RpcController* controller, - const ::xtreemfs::pbrpc::openRequest* request, - ::xtreemfs::pbrpc::openResponse* response, - ::google::protobuf::Closure* done); - virtual void readdir(::google::protobuf::RpcController* controller, - const ::xtreemfs::pbrpc::readdirRequest* request, - ::xtreemfs::pbrpc::DirectoryEntries* response, - ::google::protobuf::Closure* done); - virtual void readlink(::google::protobuf::RpcController* controller, - const ::xtreemfs::pbrpc::readlinkRequest* request, - ::xtreemfs::pbrpc::readlinkResponse* response, - ::google::protobuf::Closure* done); - virtual void removexattr(::google::protobuf::RpcController* controller, - const ::xtreemfs::pbrpc::removexattrRequest* request, - ::xtreemfs::pbrpc::timestampResponse* response, - ::google::protobuf::Closure* done); - virtual void rename(::google::protobuf::RpcController* controller, - const ::xtreemfs::pbrpc::renameRequest* request, - ::xtreemfs::pbrpc::renameResponse* response, - ::google::protobuf::Closure* done); - virtual void rmdir(::google::protobuf::RpcController* controller, - const ::xtreemfs::pbrpc::rmdirRequest* request, - ::xtreemfs::pbrpc::timestampResponse* response, - ::google::protobuf::Closure* done); - virtual void setattr(::google::protobuf::RpcController* controller, - const ::xtreemfs::pbrpc::setattrRequest* request, - ::xtreemfs::pbrpc::timestampResponse* response, - ::google::protobuf::Closure* done); - virtual void setxattr(::google::protobuf::RpcController* controller, - const ::xtreemfs::pbrpc::setxattrRequest* request, - ::xtreemfs::pbrpc::timestampResponse* response, - ::google::protobuf::Closure* done); - virtual void statvfs(::google::protobuf::RpcController* controller, - const ::xtreemfs::pbrpc::statvfsRequest* request, - ::xtreemfs::pbrpc::StatVFS* response, - ::google::protobuf::Closure* done); - virtual void symlink(::google::protobuf::RpcController* controller, - const ::xtreemfs::pbrpc::symlinkRequest* request, - ::xtreemfs::pbrpc::timestampResponse* response, - ::google::protobuf::Closure* done); - virtual void unlink(::google::protobuf::RpcController* controller, - const ::xtreemfs::pbrpc::unlinkRequest* request, - ::xtreemfs::pbrpc::unlinkResponse* response, - ::google::protobuf::Closure* done); - virtual void access(::google::protobuf::RpcController* controller, - const ::xtreemfs::pbrpc::accessRequest* request, - ::xtreemfs::pbrpc::emptyResponse* response, - ::google::protobuf::Closure* done); - virtual void xtreemfs_checkpoint(::google::protobuf::RpcController* controller, - const ::xtreemfs::pbrpc::emptyRequest* request, - ::xtreemfs::pbrpc::emptyResponse* response, - ::google::protobuf::Closure* done); - virtual void xtreemfs_check_file_exists(::google::protobuf::RpcController* controller, - const ::xtreemfs::pbrpc::xtreemfs_check_file_existsRequest* request, - ::xtreemfs::pbrpc::xtreemfs_check_file_existsResponse* response, - ::google::protobuf::Closure* done); - virtual void xtreemfs_dump_database(::google::protobuf::RpcController* controller, - const ::xtreemfs::pbrpc::xtreemfs_dump_restore_databaseRequest* request, - ::xtreemfs::pbrpc::emptyResponse* response, - ::google::protobuf::Closure* done); - virtual void xtreemfs_get_suitable_osds(::google::protobuf::RpcController* controller, - const ::xtreemfs::pbrpc::xtreemfs_get_suitable_osdsRequest* request, - ::xtreemfs::pbrpc::xtreemfs_get_suitable_osdsResponse* response, - ::google::protobuf::Closure* done); - virtual void xtreemfs_internal_debug(::google::protobuf::RpcController* controller, - const ::xtreemfs::pbrpc::stringMessage* request, - ::xtreemfs::pbrpc::stringMessage* response, - ::google::protobuf::Closure* done); - virtual void xtreemfs_listdir(::google::protobuf::RpcController* controller, - const ::xtreemfs::pbrpc::xtreemfs_listdirRequest* request, - ::xtreemfs::pbrpc::xtreemfs_listdirResponse* response, - ::google::protobuf::Closure* done); - virtual void xtreemfs_lsvol(::google::protobuf::RpcController* controller, - const ::xtreemfs::pbrpc::emptyRequest* request, - ::xtreemfs::pbrpc::Volumes* response, - ::google::protobuf::Closure* done); - virtual void xtreemfs_mkvol(::google::protobuf::RpcController* controller, - const ::xtreemfs::pbrpc::Volume* request, - ::xtreemfs::pbrpc::emptyResponse* response, - ::google::protobuf::Closure* done); - virtual void xtreemfs_renew_capability(::google::protobuf::RpcController* controller, - const ::xtreemfs::pbrpc::XCap* request, - ::xtreemfs::pbrpc::XCap* response, - ::google::protobuf::Closure* done); - virtual void xtreemfs_replication_to_master(::google::protobuf::RpcController* controller, - const ::xtreemfs::pbrpc::emptyRequest* request, - ::xtreemfs::pbrpc::emptyResponse* response, - ::google::protobuf::Closure* done); - virtual void xtreemfs_replica_add(::google::protobuf::RpcController* controller, - const ::xtreemfs::pbrpc::xtreemfs_replica_addRequest* request, - ::xtreemfs::pbrpc::emptyResponse* response, - ::google::protobuf::Closure* done); - virtual void xtreemfs_replica_list(::google::protobuf::RpcController* controller, - const ::xtreemfs::pbrpc::xtreemfs_replica_listRequest* request, - ::xtreemfs::pbrpc::Replicas* response, - ::google::protobuf::Closure* done); - virtual void xtreemfs_replica_remove(::google::protobuf::RpcController* controller, - const ::xtreemfs::pbrpc::xtreemfs_replica_removeRequest* request, - ::xtreemfs::pbrpc::FileCredentials* response, - ::google::protobuf::Closure* done); - virtual void xtreemfs_restore_database(::google::protobuf::RpcController* controller, - const ::xtreemfs::pbrpc::xtreemfs_dump_restore_databaseRequest* request, - ::xtreemfs::pbrpc::emptyResponse* response, - ::google::protobuf::Closure* done); - virtual void xtreemfs_restore_file(::google::protobuf::RpcController* controller, - const ::xtreemfs::pbrpc::xtreemfs_restore_fileRequest* request, - ::xtreemfs::pbrpc::emptyResponse* response, - ::google::protobuf::Closure* done); - virtual void xtreemfs_rmvol(::google::protobuf::RpcController* controller, - const ::xtreemfs::pbrpc::xtreemfs_rmvolRequest* request, - ::xtreemfs::pbrpc::emptyResponse* response, - ::google::protobuf::Closure* done); - virtual void xtreemfs_shutdown(::google::protobuf::RpcController* controller, - const ::xtreemfs::pbrpc::emptyRequest* request, - ::xtreemfs::pbrpc::emptyResponse* response, - ::google::protobuf::Closure* done); - virtual void xtreemfs_update_file_size(::google::protobuf::RpcController* controller, - const ::xtreemfs::pbrpc::xtreemfs_update_file_sizeRequest* request, - ::xtreemfs::pbrpc::timestampResponse* response, - ::google::protobuf::Closure* done); - virtual void xtreemfs_set_replica_update_policy(::google::protobuf::RpcController* controller, - const ::xtreemfs::pbrpc::xtreemfs_set_replica_update_policyRequest* request, - ::xtreemfs::pbrpc::xtreemfs_set_replica_update_policyResponse* response, - ::google::protobuf::Closure* done); - virtual void xtreemfs_set_read_only_xattr(::google::protobuf::RpcController* controller, - const ::xtreemfs::pbrpc::xtreemfs_set_read_only_xattrRequest* request, - ::xtreemfs::pbrpc::xtreemfs_set_read_only_xattrResponse* response, - ::google::protobuf::Closure* done); - virtual void xtreemfs_get_file_credentials(::google::protobuf::RpcController* controller, - const ::xtreemfs::pbrpc::xtreemfs_get_file_credentialsRequest* request, - ::xtreemfs::pbrpc::FileCredentials* response, - ::google::protobuf::Closure* done); - - // implements Service ---------------------------------------------- - - const ::google::protobuf::ServiceDescriptor* GetDescriptor(); - void CallMethod(const ::google::protobuf::MethodDescriptor* method, - ::google::protobuf::RpcController* controller, - const ::google::protobuf::Message* request, - ::google::protobuf::Message* response, - ::google::protobuf::Closure* done); - const ::google::protobuf::Message& GetRequestPrototype( - const ::google::protobuf::MethodDescriptor* method) const; - const ::google::protobuf::Message& GetResponsePrototype( - const ::google::protobuf::MethodDescriptor* method) const; - - private: - GOOGLE_DISALLOW_EVIL_CONSTRUCTORS(MRCService); -}; - -class MRCService_Stub : public MRCService { - public: - MRCService_Stub(::google::protobuf::RpcChannel* channel); - MRCService_Stub(::google::protobuf::RpcChannel* channel, - ::google::protobuf::Service::ChannelOwnership ownership); - ~MRCService_Stub(); - - inline ::google::protobuf::RpcChannel* channel() { return channel_; } - - // implements MRCService ------------------------------------------ - - void fsetattr(::google::protobuf::RpcController* controller, - const ::xtreemfs::pbrpc::fsetattrRequest* request, - ::xtreemfs::pbrpc::emptyResponse* response, - ::google::protobuf::Closure* done); - void ftruncate(::google::protobuf::RpcController* controller, - const ::xtreemfs::pbrpc::XCap* request, - ::xtreemfs::pbrpc::XCap* response, - ::google::protobuf::Closure* done); - void getattr(::google::protobuf::RpcController* controller, - const ::xtreemfs::pbrpc::getattrRequest* request, - ::xtreemfs::pbrpc::getattrResponse* response, - ::google::protobuf::Closure* done); - void getxattr(::google::protobuf::RpcController* controller, - const ::xtreemfs::pbrpc::getxattrRequest* request, - ::xtreemfs::pbrpc::getxattrResponse* response, - ::google::protobuf::Closure* done); - void link(::google::protobuf::RpcController* controller, - const ::xtreemfs::pbrpc::linkRequest* request, - ::xtreemfs::pbrpc::timestampResponse* response, - ::google::protobuf::Closure* done); - void listxattr(::google::protobuf::RpcController* controller, - const ::xtreemfs::pbrpc::listxattrRequest* request, - ::xtreemfs::pbrpc::listxattrResponse* response, - ::google::protobuf::Closure* done); - void mkdir(::google::protobuf::RpcController* controller, - const ::xtreemfs::pbrpc::mkdirRequest* request, - ::xtreemfs::pbrpc::timestampResponse* response, - ::google::protobuf::Closure* done); - void open(::google::protobuf::RpcController* controller, - const ::xtreemfs::pbrpc::openRequest* request, - ::xtreemfs::pbrpc::openResponse* response, - ::google::protobuf::Closure* done); - void readdir(::google::protobuf::RpcController* controller, - const ::xtreemfs::pbrpc::readdirRequest* request, - ::xtreemfs::pbrpc::DirectoryEntries* response, - ::google::protobuf::Closure* done); - void readlink(::google::protobuf::RpcController* controller, - const ::xtreemfs::pbrpc::readlinkRequest* request, - ::xtreemfs::pbrpc::readlinkResponse* response, - ::google::protobuf::Closure* done); - void removexattr(::google::protobuf::RpcController* controller, - const ::xtreemfs::pbrpc::removexattrRequest* request, - ::xtreemfs::pbrpc::timestampResponse* response, - ::google::protobuf::Closure* done); - void rename(::google::protobuf::RpcController* controller, - const ::xtreemfs::pbrpc::renameRequest* request, - ::xtreemfs::pbrpc::renameResponse* response, - ::google::protobuf::Closure* done); - void rmdir(::google::protobuf::RpcController* controller, - const ::xtreemfs::pbrpc::rmdirRequest* request, - ::xtreemfs::pbrpc::timestampResponse* response, - ::google::protobuf::Closure* done); - void setattr(::google::protobuf::RpcController* controller, - const ::xtreemfs::pbrpc::setattrRequest* request, - ::xtreemfs::pbrpc::timestampResponse* response, - ::google::protobuf::Closure* done); - void setxattr(::google::protobuf::RpcController* controller, - const ::xtreemfs::pbrpc::setxattrRequest* request, - ::xtreemfs::pbrpc::timestampResponse* response, - ::google::protobuf::Closure* done); - void statvfs(::google::protobuf::RpcController* controller, - const ::xtreemfs::pbrpc::statvfsRequest* request, - ::xtreemfs::pbrpc::StatVFS* response, - ::google::protobuf::Closure* done); - void symlink(::google::protobuf::RpcController* controller, - const ::xtreemfs::pbrpc::symlinkRequest* request, - ::xtreemfs::pbrpc::timestampResponse* response, - ::google::protobuf::Closure* done); - void unlink(::google::protobuf::RpcController* controller, - const ::xtreemfs::pbrpc::unlinkRequest* request, - ::xtreemfs::pbrpc::unlinkResponse* response, - ::google::protobuf::Closure* done); - void access(::google::protobuf::RpcController* controller, - const ::xtreemfs::pbrpc::accessRequest* request, - ::xtreemfs::pbrpc::emptyResponse* response, - ::google::protobuf::Closure* done); - void xtreemfs_checkpoint(::google::protobuf::RpcController* controller, - const ::xtreemfs::pbrpc::emptyRequest* request, - ::xtreemfs::pbrpc::emptyResponse* response, - ::google::protobuf::Closure* done); - void xtreemfs_check_file_exists(::google::protobuf::RpcController* controller, - const ::xtreemfs::pbrpc::xtreemfs_check_file_existsRequest* request, - ::xtreemfs::pbrpc::xtreemfs_check_file_existsResponse* response, - ::google::protobuf::Closure* done); - void xtreemfs_dump_database(::google::protobuf::RpcController* controller, - const ::xtreemfs::pbrpc::xtreemfs_dump_restore_databaseRequest* request, - ::xtreemfs::pbrpc::emptyResponse* response, - ::google::protobuf::Closure* done); - void xtreemfs_get_suitable_osds(::google::protobuf::RpcController* controller, - const ::xtreemfs::pbrpc::xtreemfs_get_suitable_osdsRequest* request, - ::xtreemfs::pbrpc::xtreemfs_get_suitable_osdsResponse* response, - ::google::protobuf::Closure* done); - void xtreemfs_internal_debug(::google::protobuf::RpcController* controller, - const ::xtreemfs::pbrpc::stringMessage* request, - ::xtreemfs::pbrpc::stringMessage* response, - ::google::protobuf::Closure* done); - void xtreemfs_listdir(::google::protobuf::RpcController* controller, - const ::xtreemfs::pbrpc::xtreemfs_listdirRequest* request, - ::xtreemfs::pbrpc::xtreemfs_listdirResponse* response, - ::google::protobuf::Closure* done); - void xtreemfs_lsvol(::google::protobuf::RpcController* controller, - const ::xtreemfs::pbrpc::emptyRequest* request, - ::xtreemfs::pbrpc::Volumes* response, - ::google::protobuf::Closure* done); - void xtreemfs_mkvol(::google::protobuf::RpcController* controller, - const ::xtreemfs::pbrpc::Volume* request, - ::xtreemfs::pbrpc::emptyResponse* response, - ::google::protobuf::Closure* done); - void xtreemfs_renew_capability(::google::protobuf::RpcController* controller, - const ::xtreemfs::pbrpc::XCap* request, - ::xtreemfs::pbrpc::XCap* response, - ::google::protobuf::Closure* done); - void xtreemfs_replication_to_master(::google::protobuf::RpcController* controller, - const ::xtreemfs::pbrpc::emptyRequest* request, - ::xtreemfs::pbrpc::emptyResponse* response, - ::google::protobuf::Closure* done); - void xtreemfs_replica_add(::google::protobuf::RpcController* controller, - const ::xtreemfs::pbrpc::xtreemfs_replica_addRequest* request, - ::xtreemfs::pbrpc::emptyResponse* response, - ::google::protobuf::Closure* done); - void xtreemfs_replica_list(::google::protobuf::RpcController* controller, - const ::xtreemfs::pbrpc::xtreemfs_replica_listRequest* request, - ::xtreemfs::pbrpc::Replicas* response, - ::google::protobuf::Closure* done); - void xtreemfs_replica_remove(::google::protobuf::RpcController* controller, - const ::xtreemfs::pbrpc::xtreemfs_replica_removeRequest* request, - ::xtreemfs::pbrpc::FileCredentials* response, - ::google::protobuf::Closure* done); - void xtreemfs_restore_database(::google::protobuf::RpcController* controller, - const ::xtreemfs::pbrpc::xtreemfs_dump_restore_databaseRequest* request, - ::xtreemfs::pbrpc::emptyResponse* response, - ::google::protobuf::Closure* done); - void xtreemfs_restore_file(::google::protobuf::RpcController* controller, - const ::xtreemfs::pbrpc::xtreemfs_restore_fileRequest* request, - ::xtreemfs::pbrpc::emptyResponse* response, - ::google::protobuf::Closure* done); - void xtreemfs_rmvol(::google::protobuf::RpcController* controller, - const ::xtreemfs::pbrpc::xtreemfs_rmvolRequest* request, - ::xtreemfs::pbrpc::emptyResponse* response, - ::google::protobuf::Closure* done); - void xtreemfs_shutdown(::google::protobuf::RpcController* controller, - const ::xtreemfs::pbrpc::emptyRequest* request, - ::xtreemfs::pbrpc::emptyResponse* response, - ::google::protobuf::Closure* done); - void xtreemfs_update_file_size(::google::protobuf::RpcController* controller, - const ::xtreemfs::pbrpc::xtreemfs_update_file_sizeRequest* request, - ::xtreemfs::pbrpc::timestampResponse* response, - ::google::protobuf::Closure* done); - void xtreemfs_set_replica_update_policy(::google::protobuf::RpcController* controller, - const ::xtreemfs::pbrpc::xtreemfs_set_replica_update_policyRequest* request, - ::xtreemfs::pbrpc::xtreemfs_set_replica_update_policyResponse* response, - ::google::protobuf::Closure* done); - void xtreemfs_set_read_only_xattr(::google::protobuf::RpcController* controller, - const ::xtreemfs::pbrpc::xtreemfs_set_read_only_xattrRequest* request, - ::xtreemfs::pbrpc::xtreemfs_set_read_only_xattrResponse* response, - ::google::protobuf::Closure* done); - void xtreemfs_get_file_credentials(::google::protobuf::RpcController* controller, - const ::xtreemfs::pbrpc::xtreemfs_get_file_credentialsRequest* request, - ::xtreemfs::pbrpc::FileCredentials* response, - ::google::protobuf::Closure* done); - private: - ::google::protobuf::RpcChannel* channel_; - bool owns_channel_; - GOOGLE_DISALLOW_EVIL_CONSTRUCTORS(MRCService_Stub); -}; - - -// =================================================================== - // =================================================================== @@ -6383,277 +5954,405 @@ class MRCService_Stub : public MRCService { // required fixed64 dev = 1; inline bool Stat::has_dev() const { - return _has_bit(0); + return (_has_bits_[0] & 0x00000001u) != 0; +} +inline void Stat::set_has_dev() { + _has_bits_[0] |= 0x00000001u; +} +inline void Stat::clear_has_dev() { + _has_bits_[0] &= ~0x00000001u; } inline void Stat::clear_dev() { dev_ = GOOGLE_ULONGLONG(0); - _clear_bit(0); + clear_has_dev(); } inline ::google::protobuf::uint64 Stat::dev() const { return dev_; } inline void Stat::set_dev(::google::protobuf::uint64 value) { - _set_bit(0); + set_has_dev(); dev_ = value; } // required fixed64 ino = 2; inline bool Stat::has_ino() const { - return _has_bit(1); + return (_has_bits_[0] & 0x00000002u) != 0; +} +inline void Stat::set_has_ino() { + _has_bits_[0] |= 0x00000002u; +} +inline void Stat::clear_has_ino() { + _has_bits_[0] &= ~0x00000002u; } inline void Stat::clear_ino() { ino_ = GOOGLE_ULONGLONG(0); - _clear_bit(1); + clear_has_ino(); } inline ::google::protobuf::uint64 Stat::ino() const { return ino_; } inline void Stat::set_ino(::google::protobuf::uint64 value) { - _set_bit(1); + set_has_ino(); ino_ = value; } // required fixed32 mode = 3; inline bool Stat::has_mode() const { - return _has_bit(2); + return (_has_bits_[0] & 0x00000004u) != 0; +} +inline void Stat::set_has_mode() { + _has_bits_[0] |= 0x00000004u; +} +inline void Stat::clear_has_mode() { + _has_bits_[0] &= ~0x00000004u; } inline void Stat::clear_mode() { mode_ = 0u; - _clear_bit(2); + clear_has_mode(); } inline ::google::protobuf::uint32 Stat::mode() const { return mode_; } inline void Stat::set_mode(::google::protobuf::uint32 value) { - _set_bit(2); + set_has_mode(); mode_ = value; } // required fixed32 nlink = 4; inline bool Stat::has_nlink() const { - return _has_bit(3); + return (_has_bits_[0] & 0x00000008u) != 0; +} +inline void Stat::set_has_nlink() { + _has_bits_[0] |= 0x00000008u; +} +inline void Stat::clear_has_nlink() { + _has_bits_[0] &= ~0x00000008u; } inline void Stat::clear_nlink() { nlink_ = 0u; - _clear_bit(3); + clear_has_nlink(); } inline ::google::protobuf::uint32 Stat::nlink() const { return nlink_; } inline void Stat::set_nlink(::google::protobuf::uint32 value) { - _set_bit(3); + set_has_nlink(); nlink_ = value; } // required string user_id = 5; inline bool Stat::has_user_id() const { - return _has_bit(4); + return (_has_bits_[0] & 0x00000010u) != 0; +} +inline void Stat::set_has_user_id() { + _has_bits_[0] |= 0x00000010u; +} +inline void Stat::clear_has_user_id() { + _has_bits_[0] &= ~0x00000010u; } inline void Stat::clear_user_id() { - if (user_id_ != &_default_user_id_) { + if (user_id_ != &::google::protobuf::internal::kEmptyString) { user_id_->clear(); } - _clear_bit(4); + clear_has_user_id(); } inline const ::std::string& Stat::user_id() const { return *user_id_; } inline void Stat::set_user_id(const ::std::string& value) { - _set_bit(4); - if (user_id_ == &_default_user_id_) { + set_has_user_id(); + if (user_id_ == &::google::protobuf::internal::kEmptyString) { user_id_ = new ::std::string; } user_id_->assign(value); } inline void Stat::set_user_id(const char* value) { - _set_bit(4); - if (user_id_ == &_default_user_id_) { + set_has_user_id(); + if (user_id_ == &::google::protobuf::internal::kEmptyString) { user_id_ = new ::std::string; } user_id_->assign(value); } inline void Stat::set_user_id(const char* value, size_t size) { - _set_bit(4); - if (user_id_ == &_default_user_id_) { + set_has_user_id(); + if (user_id_ == &::google::protobuf::internal::kEmptyString) { user_id_ = new ::std::string; } user_id_->assign(reinterpret_cast(value), size); } inline ::std::string* Stat::mutable_user_id() { - _set_bit(4); - if (user_id_ == &_default_user_id_) { + set_has_user_id(); + if (user_id_ == &::google::protobuf::internal::kEmptyString) { user_id_ = new ::std::string; } return user_id_; } +inline ::std::string* Stat::release_user_id() { + clear_has_user_id(); + if (user_id_ == &::google::protobuf::internal::kEmptyString) { + return NULL; + } else { + ::std::string* temp = user_id_; + user_id_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + return temp; + } +} +inline void Stat::set_allocated_user_id(::std::string* user_id) { + if (user_id_ != &::google::protobuf::internal::kEmptyString) { + delete user_id_; + } + if (user_id) { + set_has_user_id(); + user_id_ = user_id; + } else { + clear_has_user_id(); + user_id_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + } +} // required string group_id = 6; inline bool Stat::has_group_id() const { - return _has_bit(5); + return (_has_bits_[0] & 0x00000020u) != 0; +} +inline void Stat::set_has_group_id() { + _has_bits_[0] |= 0x00000020u; +} +inline void Stat::clear_has_group_id() { + _has_bits_[0] &= ~0x00000020u; } inline void Stat::clear_group_id() { - if (group_id_ != &_default_group_id_) { + if (group_id_ != &::google::protobuf::internal::kEmptyString) { group_id_->clear(); } - _clear_bit(5); + clear_has_group_id(); } inline const ::std::string& Stat::group_id() const { return *group_id_; } inline void Stat::set_group_id(const ::std::string& value) { - _set_bit(5); - if (group_id_ == &_default_group_id_) { + set_has_group_id(); + if (group_id_ == &::google::protobuf::internal::kEmptyString) { group_id_ = new ::std::string; } group_id_->assign(value); } inline void Stat::set_group_id(const char* value) { - _set_bit(5); - if (group_id_ == &_default_group_id_) { + set_has_group_id(); + if (group_id_ == &::google::protobuf::internal::kEmptyString) { group_id_ = new ::std::string; } group_id_->assign(value); } inline void Stat::set_group_id(const char* value, size_t size) { - _set_bit(5); - if (group_id_ == &_default_group_id_) { + set_has_group_id(); + if (group_id_ == &::google::protobuf::internal::kEmptyString) { group_id_ = new ::std::string; } group_id_->assign(reinterpret_cast(value), size); } inline ::std::string* Stat::mutable_group_id() { - _set_bit(5); - if (group_id_ == &_default_group_id_) { + set_has_group_id(); + if (group_id_ == &::google::protobuf::internal::kEmptyString) { group_id_ = new ::std::string; } return group_id_; } +inline ::std::string* Stat::release_group_id() { + clear_has_group_id(); + if (group_id_ == &::google::protobuf::internal::kEmptyString) { + return NULL; + } else { + ::std::string* temp = group_id_; + group_id_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + return temp; + } +} +inline void Stat::set_allocated_group_id(::std::string* group_id) { + if (group_id_ != &::google::protobuf::internal::kEmptyString) { + delete group_id_; + } + if (group_id) { + set_has_group_id(); + group_id_ = group_id; + } else { + clear_has_group_id(); + group_id_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + } +} // required fixed64 size = 7; inline bool Stat::has_size() const { - return _has_bit(6); + return (_has_bits_[0] & 0x00000040u) != 0; +} +inline void Stat::set_has_size() { + _has_bits_[0] |= 0x00000040u; +} +inline void Stat::clear_has_size() { + _has_bits_[0] &= ~0x00000040u; } inline void Stat::clear_size() { size_ = GOOGLE_ULONGLONG(0); - _clear_bit(6); + clear_has_size(); } inline ::google::protobuf::uint64 Stat::size() const { return size_; } inline void Stat::set_size(::google::protobuf::uint64 value) { - _set_bit(6); + set_has_size(); size_ = value; } // required fixed64 atime_ns = 8; inline bool Stat::has_atime_ns() const { - return _has_bit(7); + return (_has_bits_[0] & 0x00000080u) != 0; +} +inline void Stat::set_has_atime_ns() { + _has_bits_[0] |= 0x00000080u; +} +inline void Stat::clear_has_atime_ns() { + _has_bits_[0] &= ~0x00000080u; } inline void Stat::clear_atime_ns() { atime_ns_ = GOOGLE_ULONGLONG(0); - _clear_bit(7); + clear_has_atime_ns(); } inline ::google::protobuf::uint64 Stat::atime_ns() const { return atime_ns_; } inline void Stat::set_atime_ns(::google::protobuf::uint64 value) { - _set_bit(7); + set_has_atime_ns(); atime_ns_ = value; } // required fixed64 mtime_ns = 9; inline bool Stat::has_mtime_ns() const { - return _has_bit(8); + return (_has_bits_[0] & 0x00000100u) != 0; +} +inline void Stat::set_has_mtime_ns() { + _has_bits_[0] |= 0x00000100u; +} +inline void Stat::clear_has_mtime_ns() { + _has_bits_[0] &= ~0x00000100u; } inline void Stat::clear_mtime_ns() { mtime_ns_ = GOOGLE_ULONGLONG(0); - _clear_bit(8); + clear_has_mtime_ns(); } inline ::google::protobuf::uint64 Stat::mtime_ns() const { return mtime_ns_; } inline void Stat::set_mtime_ns(::google::protobuf::uint64 value) { - _set_bit(8); + set_has_mtime_ns(); mtime_ns_ = value; } // required fixed64 ctime_ns = 10; inline bool Stat::has_ctime_ns() const { - return _has_bit(9); + return (_has_bits_[0] & 0x00000200u) != 0; +} +inline void Stat::set_has_ctime_ns() { + _has_bits_[0] |= 0x00000200u; +} +inline void Stat::clear_has_ctime_ns() { + _has_bits_[0] &= ~0x00000200u; } inline void Stat::clear_ctime_ns() { ctime_ns_ = GOOGLE_ULONGLONG(0); - _clear_bit(9); + clear_has_ctime_ns(); } inline ::google::protobuf::uint64 Stat::ctime_ns() const { return ctime_ns_; } inline void Stat::set_ctime_ns(::google::protobuf::uint64 value) { - _set_bit(9); + set_has_ctime_ns(); ctime_ns_ = value; } // required fixed32 blksize = 11; inline bool Stat::has_blksize() const { - return _has_bit(10); + return (_has_bits_[0] & 0x00000400u) != 0; +} +inline void Stat::set_has_blksize() { + _has_bits_[0] |= 0x00000400u; +} +inline void Stat::clear_has_blksize() { + _has_bits_[0] &= ~0x00000400u; } inline void Stat::clear_blksize() { blksize_ = 0u; - _clear_bit(10); + clear_has_blksize(); } inline ::google::protobuf::uint32 Stat::blksize() const { return blksize_; } inline void Stat::set_blksize(::google::protobuf::uint32 value) { - _set_bit(10); + set_has_blksize(); blksize_ = value; } // optional fixed64 etag = 12; inline bool Stat::has_etag() const { - return _has_bit(11); + return (_has_bits_[0] & 0x00000800u) != 0; +} +inline void Stat::set_has_etag() { + _has_bits_[0] |= 0x00000800u; +} +inline void Stat::clear_has_etag() { + _has_bits_[0] &= ~0x00000800u; } inline void Stat::clear_etag() { etag_ = GOOGLE_ULONGLONG(0); - _clear_bit(11); + clear_has_etag(); } inline ::google::protobuf::uint64 Stat::etag() const { return etag_; } inline void Stat::set_etag(::google::protobuf::uint64 value) { - _set_bit(11); + set_has_etag(); etag_ = value; } // required fixed32 truncate_epoch = 13; inline bool Stat::has_truncate_epoch() const { - return _has_bit(12); + return (_has_bits_[0] & 0x00001000u) != 0; +} +inline void Stat::set_has_truncate_epoch() { + _has_bits_[0] |= 0x00001000u; +} +inline void Stat::clear_has_truncate_epoch() { + _has_bits_[0] &= ~0x00001000u; } inline void Stat::clear_truncate_epoch() { truncate_epoch_ = 0u; - _clear_bit(12); + clear_has_truncate_epoch(); } inline ::google::protobuf::uint32 Stat::truncate_epoch() const { return truncate_epoch_; } inline void Stat::set_truncate_epoch(::google::protobuf::uint32 value) { - _set_bit(12); + set_has_truncate_epoch(); truncate_epoch_ = value; } // optional fixed32 attributes = 14; inline bool Stat::has_attributes() const { - return _has_bit(13); + return (_has_bits_[0] & 0x00002000u) != 0; +} +inline void Stat::set_has_attributes() { + _has_bits_[0] |= 0x00002000u; +} +inline void Stat::clear_has_attributes() { + _has_bits_[0] &= ~0x00002000u; } inline void Stat::clear_attributes() { attributes_ = 0u; - _clear_bit(13); + clear_has_attributes(); } inline ::google::protobuf::uint32 Stat::attributes() const { return attributes_; } inline void Stat::set_attributes(::google::protobuf::uint32 value) { - _set_bit(13); + set_has_attributes(); attributes_ = value; } @@ -6663,62 +6362,111 @@ inline void Stat::set_attributes(::google::protobuf::uint32 value) { // required string name = 1; inline bool DirectoryEntry::has_name() const { - return _has_bit(0); + return (_has_bits_[0] & 0x00000001u) != 0; +} +inline void DirectoryEntry::set_has_name() { + _has_bits_[0] |= 0x00000001u; +} +inline void DirectoryEntry::clear_has_name() { + _has_bits_[0] &= ~0x00000001u; } inline void DirectoryEntry::clear_name() { - if (name_ != &_default_name_) { + if (name_ != &::google::protobuf::internal::kEmptyString) { name_->clear(); } - _clear_bit(0); + clear_has_name(); } inline const ::std::string& DirectoryEntry::name() const { return *name_; } inline void DirectoryEntry::set_name(const ::std::string& value) { - _set_bit(0); - if (name_ == &_default_name_) { + set_has_name(); + if (name_ == &::google::protobuf::internal::kEmptyString) { name_ = new ::std::string; } name_->assign(value); } inline void DirectoryEntry::set_name(const char* value) { - _set_bit(0); - if (name_ == &_default_name_) { + set_has_name(); + if (name_ == &::google::protobuf::internal::kEmptyString) { name_ = new ::std::string; } name_->assign(value); } inline void DirectoryEntry::set_name(const char* value, size_t size) { - _set_bit(0); - if (name_ == &_default_name_) { + set_has_name(); + if (name_ == &::google::protobuf::internal::kEmptyString) { name_ = new ::std::string; } name_->assign(reinterpret_cast(value), size); } inline ::std::string* DirectoryEntry::mutable_name() { - _set_bit(0); - if (name_ == &_default_name_) { + set_has_name(); + if (name_ == &::google::protobuf::internal::kEmptyString) { name_ = new ::std::string; } return name_; } +inline ::std::string* DirectoryEntry::release_name() { + clear_has_name(); + if (name_ == &::google::protobuf::internal::kEmptyString) { + return NULL; + } else { + ::std::string* temp = name_; + name_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + return temp; + } +} +inline void DirectoryEntry::set_allocated_name(::std::string* name) { + if (name_ != &::google::protobuf::internal::kEmptyString) { + delete name_; + } + if (name) { + set_has_name(); + name_ = name; + } else { + clear_has_name(); + name_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + } +} // optional .xtreemfs.pbrpc.Stat stbuf = 2; inline bool DirectoryEntry::has_stbuf() const { - return _has_bit(1); + return (_has_bits_[0] & 0x00000002u) != 0; +} +inline void DirectoryEntry::set_has_stbuf() { + _has_bits_[0] |= 0x00000002u; +} +inline void DirectoryEntry::clear_has_stbuf() { + _has_bits_[0] &= ~0x00000002u; } inline void DirectoryEntry::clear_stbuf() { if (stbuf_ != NULL) stbuf_->::xtreemfs::pbrpc::Stat::Clear(); - _clear_bit(1); + clear_has_stbuf(); } inline const ::xtreemfs::pbrpc::Stat& DirectoryEntry::stbuf() const { return stbuf_ != NULL ? *stbuf_ : *default_instance_->stbuf_; } inline ::xtreemfs::pbrpc::Stat* DirectoryEntry::mutable_stbuf() { - _set_bit(1); + set_has_stbuf(); if (stbuf_ == NULL) stbuf_ = new ::xtreemfs::pbrpc::Stat; return stbuf_; } +inline ::xtreemfs::pbrpc::Stat* DirectoryEntry::release_stbuf() { + clear_has_stbuf(); + ::xtreemfs::pbrpc::Stat* temp = stbuf_; + stbuf_ = NULL; + return temp; +} +inline void DirectoryEntry::set_allocated_stbuf(::xtreemfs::pbrpc::Stat* stbuf) { + delete stbuf_; + stbuf_ = stbuf; + if (stbuf) { + set_has_stbuf(); + } else { + clear_has_stbuf(); + } +} // ------------------------------------------------------------------- @@ -6755,128 +6503,212 @@ DirectoryEntries::mutable_entries() { // required string name = 1; inline bool XAttr::has_name() const { - return _has_bit(0); + return (_has_bits_[0] & 0x00000001u) != 0; +} +inline void XAttr::set_has_name() { + _has_bits_[0] |= 0x00000001u; +} +inline void XAttr::clear_has_name() { + _has_bits_[0] &= ~0x00000001u; } inline void XAttr::clear_name() { - if (name_ != &_default_name_) { + if (name_ != &::google::protobuf::internal::kEmptyString) { name_->clear(); } - _clear_bit(0); + clear_has_name(); } inline const ::std::string& XAttr::name() const { return *name_; } inline void XAttr::set_name(const ::std::string& value) { - _set_bit(0); - if (name_ == &_default_name_) { + set_has_name(); + if (name_ == &::google::protobuf::internal::kEmptyString) { name_ = new ::std::string; } name_->assign(value); } inline void XAttr::set_name(const char* value) { - _set_bit(0); - if (name_ == &_default_name_) { + set_has_name(); + if (name_ == &::google::protobuf::internal::kEmptyString) { name_ = new ::std::string; } name_->assign(value); } inline void XAttr::set_name(const char* value, size_t size) { - _set_bit(0); - if (name_ == &_default_name_) { + set_has_name(); + if (name_ == &::google::protobuf::internal::kEmptyString) { name_ = new ::std::string; } name_->assign(reinterpret_cast(value), size); } inline ::std::string* XAttr::mutable_name() { - _set_bit(0); - if (name_ == &_default_name_) { + set_has_name(); + if (name_ == &::google::protobuf::internal::kEmptyString) { name_ = new ::std::string; } return name_; } +inline ::std::string* XAttr::release_name() { + clear_has_name(); + if (name_ == &::google::protobuf::internal::kEmptyString) { + return NULL; + } else { + ::std::string* temp = name_; + name_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + return temp; + } +} +inline void XAttr::set_allocated_name(::std::string* name) { + if (name_ != &::google::protobuf::internal::kEmptyString) { + delete name_; + } + if (name) { + set_has_name(); + name_ = name; + } else { + clear_has_name(); + name_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + } +} // optional string value = 2; inline bool XAttr::has_value() const { - return _has_bit(1); + return (_has_bits_[0] & 0x00000002u) != 0; +} +inline void XAttr::set_has_value() { + _has_bits_[0] |= 0x00000002u; +} +inline void XAttr::clear_has_value() { + _has_bits_[0] &= ~0x00000002u; } inline void XAttr::clear_value() { - if (value_ != &_default_value_) { + if (value_ != &::google::protobuf::internal::kEmptyString) { value_->clear(); } - _clear_bit(1); + clear_has_value(); } inline const ::std::string& XAttr::value() const { return *value_; } inline void XAttr::set_value(const ::std::string& value) { - _set_bit(1); - if (value_ == &_default_value_) { + set_has_value(); + if (value_ == &::google::protobuf::internal::kEmptyString) { value_ = new ::std::string; } value_->assign(value); } inline void XAttr::set_value(const char* value) { - _set_bit(1); - if (value_ == &_default_value_) { + set_has_value(); + if (value_ == &::google::protobuf::internal::kEmptyString) { value_ = new ::std::string; } value_->assign(value); } inline void XAttr::set_value(const char* value, size_t size) { - _set_bit(1); - if (value_ == &_default_value_) { + set_has_value(); + if (value_ == &::google::protobuf::internal::kEmptyString) { value_ = new ::std::string; } value_->assign(reinterpret_cast(value), size); } inline ::std::string* XAttr::mutable_value() { - _set_bit(1); - if (value_ == &_default_value_) { + set_has_value(); + if (value_ == &::google::protobuf::internal::kEmptyString) { value_ = new ::std::string; } return value_; } +inline ::std::string* XAttr::release_value() { + clear_has_value(); + if (value_ == &::google::protobuf::internal::kEmptyString) { + return NULL; + } else { + ::std::string* temp = value_; + value_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + return temp; + } +} +inline void XAttr::set_allocated_value(::std::string* value) { + if (value_ != &::google::protobuf::internal::kEmptyString) { + delete value_; + } + if (value) { + set_has_value(); + value_ = value; + } else { + clear_has_value(); + value_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + } +} -// optional bytes value_bytes = 3; -inline bool XAttr::has_value_bytes() const { - return _has_bit(2); +// optional bytes value_bytes_string = 3; +inline bool XAttr::has_value_bytes_string() const { + return (_has_bits_[0] & 0x00000004u) != 0; +} +inline void XAttr::set_has_value_bytes_string() { + _has_bits_[0] |= 0x00000004u; +} +inline void XAttr::clear_has_value_bytes_string() { + _has_bits_[0] &= ~0x00000004u; } -inline void XAttr::clear_value_bytes() { - if (value_bytes_ != &_default_value_bytes_) { - value_bytes_->clear(); +inline void XAttr::clear_value_bytes_string() { + if (value_bytes_string_ != &::google::protobuf::internal::kEmptyString) { + value_bytes_string_->clear(); } - _clear_bit(2); + clear_has_value_bytes_string(); } -inline const ::std::string& XAttr::value_bytes() const { - return *value_bytes_; +inline const ::std::string& XAttr::value_bytes_string() const { + return *value_bytes_string_; +} +inline void XAttr::set_value_bytes_string(const ::std::string& value) { + set_has_value_bytes_string(); + if (value_bytes_string_ == &::google::protobuf::internal::kEmptyString) { + value_bytes_string_ = new ::std::string; + } + value_bytes_string_->assign(value); +} +inline void XAttr::set_value_bytes_string(const char* value) { + set_has_value_bytes_string(); + if (value_bytes_string_ == &::google::protobuf::internal::kEmptyString) { + value_bytes_string_ = new ::std::string; + } + value_bytes_string_->assign(value); } -inline void XAttr::set_value_bytes(const ::std::string& value) { - _set_bit(2); - if (value_bytes_ == &_default_value_bytes_) { - value_bytes_ = new ::std::string; +inline void XAttr::set_value_bytes_string(const void* value, size_t size) { + set_has_value_bytes_string(); + if (value_bytes_string_ == &::google::protobuf::internal::kEmptyString) { + value_bytes_string_ = new ::std::string; } - value_bytes_->assign(value); + value_bytes_string_->assign(reinterpret_cast(value), size); } -inline void XAttr::set_value_bytes(const char* value) { - _set_bit(2); - if (value_bytes_ == &_default_value_bytes_) { - value_bytes_ = new ::std::string; +inline ::std::string* XAttr::mutable_value_bytes_string() { + set_has_value_bytes_string(); + if (value_bytes_string_ == &::google::protobuf::internal::kEmptyString) { + value_bytes_string_ = new ::std::string; } - value_bytes_->assign(value); + return value_bytes_string_; } -inline void XAttr::set_value_bytes(const void* value, size_t size) { - _set_bit(2); - if (value_bytes_ == &_default_value_bytes_) { - value_bytes_ = new ::std::string; +inline ::std::string* XAttr::release_value_bytes_string() { + clear_has_value_bytes_string(); + if (value_bytes_string_ == &::google::protobuf::internal::kEmptyString) { + return NULL; + } else { + ::std::string* temp = value_bytes_string_; + value_bytes_string_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + return temp; } - value_bytes_->assign(reinterpret_cast(value), size); } -inline ::std::string* XAttr::mutable_value_bytes() { - _set_bit(2); - if (value_bytes_ == &_default_value_bytes_) { - value_bytes_ = new ::std::string; +inline void XAttr::set_allocated_value_bytes_string(::std::string* value_bytes_string) { + if (value_bytes_string_ != &::google::protobuf::internal::kEmptyString) { + delete value_bytes_string_; + } + if (value_bytes_string) { + set_has_value_bytes_string(); + value_bytes_string_ = value_bytes_string; + } else { + clear_has_value_bytes_string(); + value_bytes_string_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); } - return value_bytes_; } // ------------------------------------------------------------------- @@ -6885,221 +6717,366 @@ inline ::std::string* XAttr::mutable_value_bytes() { // required .xtreemfs.pbrpc.AccessControlPolicyType access_control_policy = 1; inline bool Volume::has_access_control_policy() const { - return _has_bit(0); + return (_has_bits_[0] & 0x00000001u) != 0; +} +inline void Volume::set_has_access_control_policy() { + _has_bits_[0] |= 0x00000001u; +} +inline void Volume::clear_has_access_control_policy() { + _has_bits_[0] &= ~0x00000001u; } inline void Volume::clear_access_control_policy() { access_control_policy_ = 1; - _clear_bit(0); + clear_has_access_control_policy(); } -inline xtreemfs::pbrpc::AccessControlPolicyType Volume::access_control_policy() const { - return static_cast< xtreemfs::pbrpc::AccessControlPolicyType >(access_control_policy_); +inline ::xtreemfs::pbrpc::AccessControlPolicyType Volume::access_control_policy() const { + return static_cast< ::xtreemfs::pbrpc::AccessControlPolicyType >(access_control_policy_); } -inline void Volume::set_access_control_policy(xtreemfs::pbrpc::AccessControlPolicyType value) { - GOOGLE_DCHECK(xtreemfs::pbrpc::AccessControlPolicyType_IsValid(value)); - _set_bit(0); +inline void Volume::set_access_control_policy(::xtreemfs::pbrpc::AccessControlPolicyType value) { + assert(::xtreemfs::pbrpc::AccessControlPolicyType_IsValid(value)); + set_has_access_control_policy(); access_control_policy_ = value; } // required .xtreemfs.pbrpc.StripingPolicy default_striping_policy = 2; inline bool Volume::has_default_striping_policy() const { - return _has_bit(1); + return (_has_bits_[0] & 0x00000002u) != 0; +} +inline void Volume::set_has_default_striping_policy() { + _has_bits_[0] |= 0x00000002u; +} +inline void Volume::clear_has_default_striping_policy() { + _has_bits_[0] &= ~0x00000002u; } inline void Volume::clear_default_striping_policy() { if (default_striping_policy_ != NULL) default_striping_policy_->::xtreemfs::pbrpc::StripingPolicy::Clear(); - _clear_bit(1); + clear_has_default_striping_policy(); } inline const ::xtreemfs::pbrpc::StripingPolicy& Volume::default_striping_policy() const { return default_striping_policy_ != NULL ? *default_striping_policy_ : *default_instance_->default_striping_policy_; } inline ::xtreemfs::pbrpc::StripingPolicy* Volume::mutable_default_striping_policy() { - _set_bit(1); + set_has_default_striping_policy(); if (default_striping_policy_ == NULL) default_striping_policy_ = new ::xtreemfs::pbrpc::StripingPolicy; return default_striping_policy_; } +inline ::xtreemfs::pbrpc::StripingPolicy* Volume::release_default_striping_policy() { + clear_has_default_striping_policy(); + ::xtreemfs::pbrpc::StripingPolicy* temp = default_striping_policy_; + default_striping_policy_ = NULL; + return temp; +} +inline void Volume::set_allocated_default_striping_policy(::xtreemfs::pbrpc::StripingPolicy* default_striping_policy) { + delete default_striping_policy_; + default_striping_policy_ = default_striping_policy; + if (default_striping_policy) { + set_has_default_striping_policy(); + } else { + clear_has_default_striping_policy(); + } +} // required string id = 3; inline bool Volume::has_id() const { - return _has_bit(2); + return (_has_bits_[0] & 0x00000004u) != 0; +} +inline void Volume::set_has_id() { + _has_bits_[0] |= 0x00000004u; +} +inline void Volume::clear_has_id() { + _has_bits_[0] &= ~0x00000004u; } inline void Volume::clear_id() { - if (id_ != &_default_id_) { + if (id_ != &::google::protobuf::internal::kEmptyString) { id_->clear(); } - _clear_bit(2); + clear_has_id(); } inline const ::std::string& Volume::id() const { return *id_; } inline void Volume::set_id(const ::std::string& value) { - _set_bit(2); - if (id_ == &_default_id_) { + set_has_id(); + if (id_ == &::google::protobuf::internal::kEmptyString) { id_ = new ::std::string; } id_->assign(value); } inline void Volume::set_id(const char* value) { - _set_bit(2); - if (id_ == &_default_id_) { + set_has_id(); + if (id_ == &::google::protobuf::internal::kEmptyString) { id_ = new ::std::string; } id_->assign(value); } inline void Volume::set_id(const char* value, size_t size) { - _set_bit(2); - if (id_ == &_default_id_) { + set_has_id(); + if (id_ == &::google::protobuf::internal::kEmptyString) { id_ = new ::std::string; } id_->assign(reinterpret_cast(value), size); } inline ::std::string* Volume::mutable_id() { - _set_bit(2); - if (id_ == &_default_id_) { + set_has_id(); + if (id_ == &::google::protobuf::internal::kEmptyString) { id_ = new ::std::string; } return id_; } +inline ::std::string* Volume::release_id() { + clear_has_id(); + if (id_ == &::google::protobuf::internal::kEmptyString) { + return NULL; + } else { + ::std::string* temp = id_; + id_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + return temp; + } +} +inline void Volume::set_allocated_id(::std::string* id) { + if (id_ != &::google::protobuf::internal::kEmptyString) { + delete id_; + } + if (id) { + set_has_id(); + id_ = id; + } else { + clear_has_id(); + id_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + } +} // required fixed32 mode = 4; inline bool Volume::has_mode() const { - return _has_bit(3); + return (_has_bits_[0] & 0x00000008u) != 0; +} +inline void Volume::set_has_mode() { + _has_bits_[0] |= 0x00000008u; +} +inline void Volume::clear_has_mode() { + _has_bits_[0] &= ~0x00000008u; } inline void Volume::clear_mode() { mode_ = 0u; - _clear_bit(3); + clear_has_mode(); } inline ::google::protobuf::uint32 Volume::mode() const { return mode_; } inline void Volume::set_mode(::google::protobuf::uint32 value) { - _set_bit(3); + set_has_mode(); mode_ = value; } // required string name = 5; inline bool Volume::has_name() const { - return _has_bit(4); + return (_has_bits_[0] & 0x00000010u) != 0; +} +inline void Volume::set_has_name() { + _has_bits_[0] |= 0x00000010u; +} +inline void Volume::clear_has_name() { + _has_bits_[0] &= ~0x00000010u; } inline void Volume::clear_name() { - if (name_ != &_default_name_) { + if (name_ != &::google::protobuf::internal::kEmptyString) { name_->clear(); } - _clear_bit(4); + clear_has_name(); } inline const ::std::string& Volume::name() const { return *name_; } inline void Volume::set_name(const ::std::string& value) { - _set_bit(4); - if (name_ == &_default_name_) { + set_has_name(); + if (name_ == &::google::protobuf::internal::kEmptyString) { name_ = new ::std::string; } name_->assign(value); } inline void Volume::set_name(const char* value) { - _set_bit(4); - if (name_ == &_default_name_) { + set_has_name(); + if (name_ == &::google::protobuf::internal::kEmptyString) { name_ = new ::std::string; } name_->assign(value); } inline void Volume::set_name(const char* value, size_t size) { - _set_bit(4); - if (name_ == &_default_name_) { + set_has_name(); + if (name_ == &::google::protobuf::internal::kEmptyString) { name_ = new ::std::string; } name_->assign(reinterpret_cast(value), size); } inline ::std::string* Volume::mutable_name() { - _set_bit(4); - if (name_ == &_default_name_) { + set_has_name(); + if (name_ == &::google::protobuf::internal::kEmptyString) { name_ = new ::std::string; } return name_; } +inline ::std::string* Volume::release_name() { + clear_has_name(); + if (name_ == &::google::protobuf::internal::kEmptyString) { + return NULL; + } else { + ::std::string* temp = name_; + name_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + return temp; + } +} +inline void Volume::set_allocated_name(::std::string* name) { + if (name_ != &::google::protobuf::internal::kEmptyString) { + delete name_; + } + if (name) { + set_has_name(); + name_ = name; + } else { + clear_has_name(); + name_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + } +} // required string owner_group_id = 6; inline bool Volume::has_owner_group_id() const { - return _has_bit(5); + return (_has_bits_[0] & 0x00000020u) != 0; +} +inline void Volume::set_has_owner_group_id() { + _has_bits_[0] |= 0x00000020u; +} +inline void Volume::clear_has_owner_group_id() { + _has_bits_[0] &= ~0x00000020u; } inline void Volume::clear_owner_group_id() { - if (owner_group_id_ != &_default_owner_group_id_) { + if (owner_group_id_ != &::google::protobuf::internal::kEmptyString) { owner_group_id_->clear(); } - _clear_bit(5); + clear_has_owner_group_id(); } inline const ::std::string& Volume::owner_group_id() const { return *owner_group_id_; } inline void Volume::set_owner_group_id(const ::std::string& value) { - _set_bit(5); - if (owner_group_id_ == &_default_owner_group_id_) { + set_has_owner_group_id(); + if (owner_group_id_ == &::google::protobuf::internal::kEmptyString) { owner_group_id_ = new ::std::string; } owner_group_id_->assign(value); } inline void Volume::set_owner_group_id(const char* value) { - _set_bit(5); - if (owner_group_id_ == &_default_owner_group_id_) { + set_has_owner_group_id(); + if (owner_group_id_ == &::google::protobuf::internal::kEmptyString) { owner_group_id_ = new ::std::string; } owner_group_id_->assign(value); } inline void Volume::set_owner_group_id(const char* value, size_t size) { - _set_bit(5); - if (owner_group_id_ == &_default_owner_group_id_) { + set_has_owner_group_id(); + if (owner_group_id_ == &::google::protobuf::internal::kEmptyString) { owner_group_id_ = new ::std::string; } owner_group_id_->assign(reinterpret_cast(value), size); } inline ::std::string* Volume::mutable_owner_group_id() { - _set_bit(5); - if (owner_group_id_ == &_default_owner_group_id_) { + set_has_owner_group_id(); + if (owner_group_id_ == &::google::protobuf::internal::kEmptyString) { owner_group_id_ = new ::std::string; } return owner_group_id_; } +inline ::std::string* Volume::release_owner_group_id() { + clear_has_owner_group_id(); + if (owner_group_id_ == &::google::protobuf::internal::kEmptyString) { + return NULL; + } else { + ::std::string* temp = owner_group_id_; + owner_group_id_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + return temp; + } +} +inline void Volume::set_allocated_owner_group_id(::std::string* owner_group_id) { + if (owner_group_id_ != &::google::protobuf::internal::kEmptyString) { + delete owner_group_id_; + } + if (owner_group_id) { + set_has_owner_group_id(); + owner_group_id_ = owner_group_id; + } else { + clear_has_owner_group_id(); + owner_group_id_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + } +} // required string owner_user_id = 7; inline bool Volume::has_owner_user_id() const { - return _has_bit(6); + return (_has_bits_[0] & 0x00000040u) != 0; +} +inline void Volume::set_has_owner_user_id() { + _has_bits_[0] |= 0x00000040u; +} +inline void Volume::clear_has_owner_user_id() { + _has_bits_[0] &= ~0x00000040u; } inline void Volume::clear_owner_user_id() { - if (owner_user_id_ != &_default_owner_user_id_) { + if (owner_user_id_ != &::google::protobuf::internal::kEmptyString) { owner_user_id_->clear(); } - _clear_bit(6); + clear_has_owner_user_id(); } inline const ::std::string& Volume::owner_user_id() const { return *owner_user_id_; } inline void Volume::set_owner_user_id(const ::std::string& value) { - _set_bit(6); - if (owner_user_id_ == &_default_owner_user_id_) { + set_has_owner_user_id(); + if (owner_user_id_ == &::google::protobuf::internal::kEmptyString) { owner_user_id_ = new ::std::string; } owner_user_id_->assign(value); } inline void Volume::set_owner_user_id(const char* value) { - _set_bit(6); - if (owner_user_id_ == &_default_owner_user_id_) { + set_has_owner_user_id(); + if (owner_user_id_ == &::google::protobuf::internal::kEmptyString) { owner_user_id_ = new ::std::string; } owner_user_id_->assign(value); } inline void Volume::set_owner_user_id(const char* value, size_t size) { - _set_bit(6); - if (owner_user_id_ == &_default_owner_user_id_) { + set_has_owner_user_id(); + if (owner_user_id_ == &::google::protobuf::internal::kEmptyString) { owner_user_id_ = new ::std::string; } owner_user_id_->assign(reinterpret_cast(value), size); } inline ::std::string* Volume::mutable_owner_user_id() { - _set_bit(6); - if (owner_user_id_ == &_default_owner_user_id_) { + set_has_owner_user_id(); + if (owner_user_id_ == &::google::protobuf::internal::kEmptyString) { owner_user_id_ = new ::std::string; } return owner_user_id_; } +inline ::std::string* Volume::release_owner_user_id() { + clear_has_owner_user_id(); + if (owner_user_id_ == &::google::protobuf::internal::kEmptyString) { + return NULL; + } else { + ::std::string* temp = owner_user_id_; + owner_user_id_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + return temp; + } +} +inline void Volume::set_allocated_owner_user_id(::std::string* owner_user_id) { + if (owner_user_id_ != &::google::protobuf::internal::kEmptyString) { + delete owner_user_id_; + } + if (owner_user_id) { + set_has_owner_user_id(); + owner_user_id_ = owner_user_id; + } else { + clear_has_owner_user_id(); + owner_user_id_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + } +} // repeated .xtreemfs.pbrpc.KeyValuePair attrs = 8; inline int Volume::attrs_size() const { @@ -7161,317 +7138,498 @@ Volumes::mutable_volumes() { // required fixed32 bsize = 1; inline bool StatVFS::has_bsize() const { - return _has_bit(0); + return (_has_bits_[0] & 0x00000001u) != 0; +} +inline void StatVFS::set_has_bsize() { + _has_bits_[0] |= 0x00000001u; +} +inline void StatVFS::clear_has_bsize() { + _has_bits_[0] &= ~0x00000001u; } inline void StatVFS::clear_bsize() { bsize_ = 0u; - _clear_bit(0); + clear_has_bsize(); } inline ::google::protobuf::uint32 StatVFS::bsize() const { return bsize_; } inline void StatVFS::set_bsize(::google::protobuf::uint32 value) { - _set_bit(0); + set_has_bsize(); bsize_ = value; } // required fixed64 bavail = 2; inline bool StatVFS::has_bavail() const { - return _has_bit(1); + return (_has_bits_[0] & 0x00000002u) != 0; +} +inline void StatVFS::set_has_bavail() { + _has_bits_[0] |= 0x00000002u; +} +inline void StatVFS::clear_has_bavail() { + _has_bits_[0] &= ~0x00000002u; } inline void StatVFS::clear_bavail() { bavail_ = GOOGLE_ULONGLONG(0); - _clear_bit(1); + clear_has_bavail(); } inline ::google::protobuf::uint64 StatVFS::bavail() const { return bavail_; } inline void StatVFS::set_bavail(::google::protobuf::uint64 value) { - _set_bit(1); + set_has_bavail(); bavail_ = value; } // optional fixed64 bfree = 13; inline bool StatVFS::has_bfree() const { - return _has_bit(2); + return (_has_bits_[0] & 0x00000004u) != 0; +} +inline void StatVFS::set_has_bfree() { + _has_bits_[0] |= 0x00000004u; +} +inline void StatVFS::clear_has_bfree() { + _has_bits_[0] &= ~0x00000004u; } inline void StatVFS::clear_bfree() { bfree_ = GOOGLE_ULONGLONG(0); - _clear_bit(2); + clear_has_bfree(); } inline ::google::protobuf::uint64 StatVFS::bfree() const { return bfree_; } inline void StatVFS::set_bfree(::google::protobuf::uint64 value) { - _set_bit(2); + set_has_bfree(); bfree_ = value; } // required fixed64 blocks = 3; inline bool StatVFS::has_blocks() const { - return _has_bit(3); + return (_has_bits_[0] & 0x00000008u) != 0; +} +inline void StatVFS::set_has_blocks() { + _has_bits_[0] |= 0x00000008u; +} +inline void StatVFS::clear_has_blocks() { + _has_bits_[0] &= ~0x00000008u; } inline void StatVFS::clear_blocks() { blocks_ = GOOGLE_ULONGLONG(0); - _clear_bit(3); + clear_has_blocks(); } inline ::google::protobuf::uint64 StatVFS::blocks() const { return blocks_; } inline void StatVFS::set_blocks(::google::protobuf::uint64 value) { - _set_bit(3); + set_has_blocks(); blocks_ = value; } // required string fsid = 4; inline bool StatVFS::has_fsid() const { - return _has_bit(4); + return (_has_bits_[0] & 0x00000010u) != 0; +} +inline void StatVFS::set_has_fsid() { + _has_bits_[0] |= 0x00000010u; +} +inline void StatVFS::clear_has_fsid() { + _has_bits_[0] &= ~0x00000010u; } inline void StatVFS::clear_fsid() { - if (fsid_ != &_default_fsid_) { + if (fsid_ != &::google::protobuf::internal::kEmptyString) { fsid_->clear(); } - _clear_bit(4); + clear_has_fsid(); } inline const ::std::string& StatVFS::fsid() const { return *fsid_; } inline void StatVFS::set_fsid(const ::std::string& value) { - _set_bit(4); - if (fsid_ == &_default_fsid_) { + set_has_fsid(); + if (fsid_ == &::google::protobuf::internal::kEmptyString) { fsid_ = new ::std::string; } fsid_->assign(value); } inline void StatVFS::set_fsid(const char* value) { - _set_bit(4); - if (fsid_ == &_default_fsid_) { + set_has_fsid(); + if (fsid_ == &::google::protobuf::internal::kEmptyString) { fsid_ = new ::std::string; } fsid_->assign(value); } inline void StatVFS::set_fsid(const char* value, size_t size) { - _set_bit(4); - if (fsid_ == &_default_fsid_) { + set_has_fsid(); + if (fsid_ == &::google::protobuf::internal::kEmptyString) { fsid_ = new ::std::string; } fsid_->assign(reinterpret_cast(value), size); } inline ::std::string* StatVFS::mutable_fsid() { - _set_bit(4); - if (fsid_ == &_default_fsid_) { + set_has_fsid(); + if (fsid_ == &::google::protobuf::internal::kEmptyString) { fsid_ = new ::std::string; } return fsid_; } +inline ::std::string* StatVFS::release_fsid() { + clear_has_fsid(); + if (fsid_ == &::google::protobuf::internal::kEmptyString) { + return NULL; + } else { + ::std::string* temp = fsid_; + fsid_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + return temp; + } +} +inline void StatVFS::set_allocated_fsid(::std::string* fsid) { + if (fsid_ != &::google::protobuf::internal::kEmptyString) { + delete fsid_; + } + if (fsid) { + set_has_fsid(); + fsid_ = fsid; + } else { + clear_has_fsid(); + fsid_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + } +} // required fixed32 namemax = 5; inline bool StatVFS::has_namemax() const { - return _has_bit(5); + return (_has_bits_[0] & 0x00000020u) != 0; +} +inline void StatVFS::set_has_namemax() { + _has_bits_[0] |= 0x00000020u; +} +inline void StatVFS::clear_has_namemax() { + _has_bits_[0] &= ~0x00000020u; } inline void StatVFS::clear_namemax() { namemax_ = 0u; - _clear_bit(5); + clear_has_namemax(); } inline ::google::protobuf::uint32 StatVFS::namemax() const { return namemax_; } inline void StatVFS::set_namemax(::google::protobuf::uint32 value) { - _set_bit(5); + set_has_namemax(); namemax_ = value; } // required .xtreemfs.pbrpc.AccessControlPolicyType access_control_policy = 6; inline bool StatVFS::has_access_control_policy() const { - return _has_bit(6); + return (_has_bits_[0] & 0x00000040u) != 0; +} +inline void StatVFS::set_has_access_control_policy() { + _has_bits_[0] |= 0x00000040u; +} +inline void StatVFS::clear_has_access_control_policy() { + _has_bits_[0] &= ~0x00000040u; } inline void StatVFS::clear_access_control_policy() { access_control_policy_ = 1; - _clear_bit(6); + clear_has_access_control_policy(); } -inline xtreemfs::pbrpc::AccessControlPolicyType StatVFS::access_control_policy() const { - return static_cast< xtreemfs::pbrpc::AccessControlPolicyType >(access_control_policy_); +inline ::xtreemfs::pbrpc::AccessControlPolicyType StatVFS::access_control_policy() const { + return static_cast< ::xtreemfs::pbrpc::AccessControlPolicyType >(access_control_policy_); } -inline void StatVFS::set_access_control_policy(xtreemfs::pbrpc::AccessControlPolicyType value) { - GOOGLE_DCHECK(xtreemfs::pbrpc::AccessControlPolicyType_IsValid(value)); - _set_bit(6); +inline void StatVFS::set_access_control_policy(::xtreemfs::pbrpc::AccessControlPolicyType value) { + assert(::xtreemfs::pbrpc::AccessControlPolicyType_IsValid(value)); + set_has_access_control_policy(); access_control_policy_ = value; } // required .xtreemfs.pbrpc.StripingPolicy default_striping_policy = 7; inline bool StatVFS::has_default_striping_policy() const { - return _has_bit(7); + return (_has_bits_[0] & 0x00000080u) != 0; +} +inline void StatVFS::set_has_default_striping_policy() { + _has_bits_[0] |= 0x00000080u; +} +inline void StatVFS::clear_has_default_striping_policy() { + _has_bits_[0] &= ~0x00000080u; } inline void StatVFS::clear_default_striping_policy() { if (default_striping_policy_ != NULL) default_striping_policy_->::xtreemfs::pbrpc::StripingPolicy::Clear(); - _clear_bit(7); + clear_has_default_striping_policy(); } inline const ::xtreemfs::pbrpc::StripingPolicy& StatVFS::default_striping_policy() const { return default_striping_policy_ != NULL ? *default_striping_policy_ : *default_instance_->default_striping_policy_; } inline ::xtreemfs::pbrpc::StripingPolicy* StatVFS::mutable_default_striping_policy() { - _set_bit(7); + set_has_default_striping_policy(); if (default_striping_policy_ == NULL) default_striping_policy_ = new ::xtreemfs::pbrpc::StripingPolicy; return default_striping_policy_; } +inline ::xtreemfs::pbrpc::StripingPolicy* StatVFS::release_default_striping_policy() { + clear_has_default_striping_policy(); + ::xtreemfs::pbrpc::StripingPolicy* temp = default_striping_policy_; + default_striping_policy_ = NULL; + return temp; +} +inline void StatVFS::set_allocated_default_striping_policy(::xtreemfs::pbrpc::StripingPolicy* default_striping_policy) { + delete default_striping_policy_; + default_striping_policy_ = default_striping_policy; + if (default_striping_policy) { + set_has_default_striping_policy(); + } else { + clear_has_default_striping_policy(); + } +} // required fixed64 etag = 8; inline bool StatVFS::has_etag() const { - return _has_bit(8); + return (_has_bits_[0] & 0x00000100u) != 0; +} +inline void StatVFS::set_has_etag() { + _has_bits_[0] |= 0x00000100u; +} +inline void StatVFS::clear_has_etag() { + _has_bits_[0] &= ~0x00000100u; } inline void StatVFS::clear_etag() { etag_ = GOOGLE_ULONGLONG(0); - _clear_bit(8); + clear_has_etag(); } inline ::google::protobuf::uint64 StatVFS::etag() const { return etag_; } inline void StatVFS::set_etag(::google::protobuf::uint64 value) { - _set_bit(8); + set_has_etag(); etag_ = value; } // required fixed32 mode = 9; inline bool StatVFS::has_mode() const { - return _has_bit(9); + return (_has_bits_[0] & 0x00000200u) != 0; +} +inline void StatVFS::set_has_mode() { + _has_bits_[0] |= 0x00000200u; +} +inline void StatVFS::clear_has_mode() { + _has_bits_[0] &= ~0x00000200u; } inline void StatVFS::clear_mode() { mode_ = 0u; - _clear_bit(9); + clear_has_mode(); } inline ::google::protobuf::uint32 StatVFS::mode() const { return mode_; } inline void StatVFS::set_mode(::google::protobuf::uint32 value) { - _set_bit(9); + set_has_mode(); mode_ = value; } // required string name = 10; inline bool StatVFS::has_name() const { - return _has_bit(10); + return (_has_bits_[0] & 0x00000400u) != 0; +} +inline void StatVFS::set_has_name() { + _has_bits_[0] |= 0x00000400u; +} +inline void StatVFS::clear_has_name() { + _has_bits_[0] &= ~0x00000400u; } inline void StatVFS::clear_name() { - if (name_ != &_default_name_) { + if (name_ != &::google::protobuf::internal::kEmptyString) { name_->clear(); } - _clear_bit(10); + clear_has_name(); } inline const ::std::string& StatVFS::name() const { return *name_; } inline void StatVFS::set_name(const ::std::string& value) { - _set_bit(10); - if (name_ == &_default_name_) { + set_has_name(); + if (name_ == &::google::protobuf::internal::kEmptyString) { name_ = new ::std::string; } name_->assign(value); } inline void StatVFS::set_name(const char* value) { - _set_bit(10); - if (name_ == &_default_name_) { + set_has_name(); + if (name_ == &::google::protobuf::internal::kEmptyString) { name_ = new ::std::string; } name_->assign(value); } inline void StatVFS::set_name(const char* value, size_t size) { - _set_bit(10); - if (name_ == &_default_name_) { + set_has_name(); + if (name_ == &::google::protobuf::internal::kEmptyString) { name_ = new ::std::string; } name_->assign(reinterpret_cast(value), size); } inline ::std::string* StatVFS::mutable_name() { - _set_bit(10); - if (name_ == &_default_name_) { + set_has_name(); + if (name_ == &::google::protobuf::internal::kEmptyString) { name_ = new ::std::string; } return name_; } +inline ::std::string* StatVFS::release_name() { + clear_has_name(); + if (name_ == &::google::protobuf::internal::kEmptyString) { + return NULL; + } else { + ::std::string* temp = name_; + name_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + return temp; + } +} +inline void StatVFS::set_allocated_name(::std::string* name) { + if (name_ != &::google::protobuf::internal::kEmptyString) { + delete name_; + } + if (name) { + set_has_name(); + name_ = name; + } else { + clear_has_name(); + name_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + } +} // required string owner_group_id = 11; inline bool StatVFS::has_owner_group_id() const { - return _has_bit(11); + return (_has_bits_[0] & 0x00000800u) != 0; +} +inline void StatVFS::set_has_owner_group_id() { + _has_bits_[0] |= 0x00000800u; +} +inline void StatVFS::clear_has_owner_group_id() { + _has_bits_[0] &= ~0x00000800u; } inline void StatVFS::clear_owner_group_id() { - if (owner_group_id_ != &_default_owner_group_id_) { + if (owner_group_id_ != &::google::protobuf::internal::kEmptyString) { owner_group_id_->clear(); } - _clear_bit(11); + clear_has_owner_group_id(); } inline const ::std::string& StatVFS::owner_group_id() const { return *owner_group_id_; } inline void StatVFS::set_owner_group_id(const ::std::string& value) { - _set_bit(11); - if (owner_group_id_ == &_default_owner_group_id_) { + set_has_owner_group_id(); + if (owner_group_id_ == &::google::protobuf::internal::kEmptyString) { owner_group_id_ = new ::std::string; } owner_group_id_->assign(value); } inline void StatVFS::set_owner_group_id(const char* value) { - _set_bit(11); - if (owner_group_id_ == &_default_owner_group_id_) { + set_has_owner_group_id(); + if (owner_group_id_ == &::google::protobuf::internal::kEmptyString) { owner_group_id_ = new ::std::string; } owner_group_id_->assign(value); } inline void StatVFS::set_owner_group_id(const char* value, size_t size) { - _set_bit(11); - if (owner_group_id_ == &_default_owner_group_id_) { + set_has_owner_group_id(); + if (owner_group_id_ == &::google::protobuf::internal::kEmptyString) { owner_group_id_ = new ::std::string; } owner_group_id_->assign(reinterpret_cast(value), size); } inline ::std::string* StatVFS::mutable_owner_group_id() { - _set_bit(11); - if (owner_group_id_ == &_default_owner_group_id_) { + set_has_owner_group_id(); + if (owner_group_id_ == &::google::protobuf::internal::kEmptyString) { owner_group_id_ = new ::std::string; } return owner_group_id_; } +inline ::std::string* StatVFS::release_owner_group_id() { + clear_has_owner_group_id(); + if (owner_group_id_ == &::google::protobuf::internal::kEmptyString) { + return NULL; + } else { + ::std::string* temp = owner_group_id_; + owner_group_id_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + return temp; + } +} +inline void StatVFS::set_allocated_owner_group_id(::std::string* owner_group_id) { + if (owner_group_id_ != &::google::protobuf::internal::kEmptyString) { + delete owner_group_id_; + } + if (owner_group_id) { + set_has_owner_group_id(); + owner_group_id_ = owner_group_id; + } else { + clear_has_owner_group_id(); + owner_group_id_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + } +} // required string owner_user_id = 12; inline bool StatVFS::has_owner_user_id() const { - return _has_bit(12); + return (_has_bits_[0] & 0x00001000u) != 0; +} +inline void StatVFS::set_has_owner_user_id() { + _has_bits_[0] |= 0x00001000u; +} +inline void StatVFS::clear_has_owner_user_id() { + _has_bits_[0] &= ~0x00001000u; } inline void StatVFS::clear_owner_user_id() { - if (owner_user_id_ != &_default_owner_user_id_) { + if (owner_user_id_ != &::google::protobuf::internal::kEmptyString) { owner_user_id_->clear(); } - _clear_bit(12); + clear_has_owner_user_id(); } inline const ::std::string& StatVFS::owner_user_id() const { return *owner_user_id_; } inline void StatVFS::set_owner_user_id(const ::std::string& value) { - _set_bit(12); - if (owner_user_id_ == &_default_owner_user_id_) { + set_has_owner_user_id(); + if (owner_user_id_ == &::google::protobuf::internal::kEmptyString) { owner_user_id_ = new ::std::string; } owner_user_id_->assign(value); } inline void StatVFS::set_owner_user_id(const char* value) { - _set_bit(12); - if (owner_user_id_ == &_default_owner_user_id_) { + set_has_owner_user_id(); + if (owner_user_id_ == &::google::protobuf::internal::kEmptyString) { owner_user_id_ = new ::std::string; } owner_user_id_->assign(value); } inline void StatVFS::set_owner_user_id(const char* value, size_t size) { - _set_bit(12); - if (owner_user_id_ == &_default_owner_user_id_) { + set_has_owner_user_id(); + if (owner_user_id_ == &::google::protobuf::internal::kEmptyString) { owner_user_id_ = new ::std::string; } owner_user_id_->assign(reinterpret_cast(value), size); } inline ::std::string* StatVFS::mutable_owner_user_id() { - _set_bit(12); - if (owner_user_id_ == &_default_owner_user_id_) { + set_has_owner_user_id(); + if (owner_user_id_ == &::google::protobuf::internal::kEmptyString) { owner_user_id_ = new ::std::string; } return owner_user_id_; } +inline ::std::string* StatVFS::release_owner_user_id() { + clear_has_owner_user_id(); + if (owner_user_id_ == &::google::protobuf::internal::kEmptyString) { + return NULL; + } else { + ::std::string* temp = owner_user_id_; + owner_user_id_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + return temp; + } +} +inline void StatVFS::set_allocated_owner_user_id(::std::string* owner_user_id) { + if (owner_user_id_ != &::google::protobuf::internal::kEmptyString) { + delete owner_user_id_; + } + if (owner_user_id) { + set_has_owner_user_id(); + owner_user_id_ = owner_user_id; + } else { + clear_has_owner_user_id(); + owner_user_id_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + } +} // ------------------------------------------------------------------- @@ -7479,53 +7637,101 @@ inline ::std::string* StatVFS::mutable_owner_user_id() { // required .xtreemfs.pbrpc.Stat stbuf = 1; inline bool fsetattrRequest::has_stbuf() const { - return _has_bit(0); + return (_has_bits_[0] & 0x00000001u) != 0; +} +inline void fsetattrRequest::set_has_stbuf() { + _has_bits_[0] |= 0x00000001u; +} +inline void fsetattrRequest::clear_has_stbuf() { + _has_bits_[0] &= ~0x00000001u; } inline void fsetattrRequest::clear_stbuf() { if (stbuf_ != NULL) stbuf_->::xtreemfs::pbrpc::Stat::Clear(); - _clear_bit(0); + clear_has_stbuf(); } inline const ::xtreemfs::pbrpc::Stat& fsetattrRequest::stbuf() const { return stbuf_ != NULL ? *stbuf_ : *default_instance_->stbuf_; } inline ::xtreemfs::pbrpc::Stat* fsetattrRequest::mutable_stbuf() { - _set_bit(0); + set_has_stbuf(); if (stbuf_ == NULL) stbuf_ = new ::xtreemfs::pbrpc::Stat; return stbuf_; } +inline ::xtreemfs::pbrpc::Stat* fsetattrRequest::release_stbuf() { + clear_has_stbuf(); + ::xtreemfs::pbrpc::Stat* temp = stbuf_; + stbuf_ = NULL; + return temp; +} +inline void fsetattrRequest::set_allocated_stbuf(::xtreemfs::pbrpc::Stat* stbuf) { + delete stbuf_; + stbuf_ = stbuf; + if (stbuf) { + set_has_stbuf(); + } else { + clear_has_stbuf(); + } +} // required fixed32 to_set = 2; inline bool fsetattrRequest::has_to_set() const { - return _has_bit(1); + return (_has_bits_[0] & 0x00000002u) != 0; +} +inline void fsetattrRequest::set_has_to_set() { + _has_bits_[0] |= 0x00000002u; +} +inline void fsetattrRequest::clear_has_to_set() { + _has_bits_[0] &= ~0x00000002u; } inline void fsetattrRequest::clear_to_set() { to_set_ = 0u; - _clear_bit(1); + clear_has_to_set(); } inline ::google::protobuf::uint32 fsetattrRequest::to_set() const { return to_set_; } inline void fsetattrRequest::set_to_set(::google::protobuf::uint32 value) { - _set_bit(1); + set_has_to_set(); to_set_ = value; } // required .xtreemfs.pbrpc.XCap cap = 3; inline bool fsetattrRequest::has_cap() const { - return _has_bit(2); + return (_has_bits_[0] & 0x00000004u) != 0; +} +inline void fsetattrRequest::set_has_cap() { + _has_bits_[0] |= 0x00000004u; +} +inline void fsetattrRequest::clear_has_cap() { + _has_bits_[0] &= ~0x00000004u; } inline void fsetattrRequest::clear_cap() { if (cap_ != NULL) cap_->::xtreemfs::pbrpc::XCap::Clear(); - _clear_bit(2); + clear_has_cap(); } inline const ::xtreemfs::pbrpc::XCap& fsetattrRequest::cap() const { return cap_ != NULL ? *cap_ : *default_instance_->cap_; } inline ::xtreemfs::pbrpc::XCap* fsetattrRequest::mutable_cap() { - _set_bit(2); + set_has_cap(); if (cap_ == NULL) cap_ = new ::xtreemfs::pbrpc::XCap; return cap_; } +inline ::xtreemfs::pbrpc::XCap* fsetattrRequest::release_cap() { + clear_has_cap(); + ::xtreemfs::pbrpc::XCap* temp = cap_; + cap_ = NULL; + return temp; +} +inline void fsetattrRequest::set_allocated_cap(::xtreemfs::pbrpc::XCap* cap) { + delete cap_; + cap_ = cap; + if (cap) { + set_has_cap(); + } else { + clear_has_cap(); + } +} // ------------------------------------------------------------------- @@ -7533,101 +7739,163 @@ inline ::xtreemfs::pbrpc::XCap* fsetattrRequest::mutable_cap() { // required string volume_name = 1; inline bool getattrRequest::has_volume_name() const { - return _has_bit(0); + return (_has_bits_[0] & 0x00000001u) != 0; +} +inline void getattrRequest::set_has_volume_name() { + _has_bits_[0] |= 0x00000001u; +} +inline void getattrRequest::clear_has_volume_name() { + _has_bits_[0] &= ~0x00000001u; } inline void getattrRequest::clear_volume_name() { - if (volume_name_ != &_default_volume_name_) { + if (volume_name_ != &::google::protobuf::internal::kEmptyString) { volume_name_->clear(); } - _clear_bit(0); + clear_has_volume_name(); } inline const ::std::string& getattrRequest::volume_name() const { return *volume_name_; } inline void getattrRequest::set_volume_name(const ::std::string& value) { - _set_bit(0); - if (volume_name_ == &_default_volume_name_) { + set_has_volume_name(); + if (volume_name_ == &::google::protobuf::internal::kEmptyString) { volume_name_ = new ::std::string; } volume_name_->assign(value); } inline void getattrRequest::set_volume_name(const char* value) { - _set_bit(0); - if (volume_name_ == &_default_volume_name_) { + set_has_volume_name(); + if (volume_name_ == &::google::protobuf::internal::kEmptyString) { volume_name_ = new ::std::string; } volume_name_->assign(value); } inline void getattrRequest::set_volume_name(const char* value, size_t size) { - _set_bit(0); - if (volume_name_ == &_default_volume_name_) { + set_has_volume_name(); + if (volume_name_ == &::google::protobuf::internal::kEmptyString) { volume_name_ = new ::std::string; } volume_name_->assign(reinterpret_cast(value), size); } inline ::std::string* getattrRequest::mutable_volume_name() { - _set_bit(0); - if (volume_name_ == &_default_volume_name_) { + set_has_volume_name(); + if (volume_name_ == &::google::protobuf::internal::kEmptyString) { volume_name_ = new ::std::string; } return volume_name_; } +inline ::std::string* getattrRequest::release_volume_name() { + clear_has_volume_name(); + if (volume_name_ == &::google::protobuf::internal::kEmptyString) { + return NULL; + } else { + ::std::string* temp = volume_name_; + volume_name_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + return temp; + } +} +inline void getattrRequest::set_allocated_volume_name(::std::string* volume_name) { + if (volume_name_ != &::google::protobuf::internal::kEmptyString) { + delete volume_name_; + } + if (volume_name) { + set_has_volume_name(); + volume_name_ = volume_name; + } else { + clear_has_volume_name(); + volume_name_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + } +} // required string path = 2; inline bool getattrRequest::has_path() const { - return _has_bit(1); + return (_has_bits_[0] & 0x00000002u) != 0; +} +inline void getattrRequest::set_has_path() { + _has_bits_[0] |= 0x00000002u; +} +inline void getattrRequest::clear_has_path() { + _has_bits_[0] &= ~0x00000002u; } inline void getattrRequest::clear_path() { - if (path_ != &_default_path_) { + if (path_ != &::google::protobuf::internal::kEmptyString) { path_->clear(); } - _clear_bit(1); + clear_has_path(); } inline const ::std::string& getattrRequest::path() const { return *path_; } inline void getattrRequest::set_path(const ::std::string& value) { - _set_bit(1); - if (path_ == &_default_path_) { + set_has_path(); + if (path_ == &::google::protobuf::internal::kEmptyString) { path_ = new ::std::string; } path_->assign(value); } inline void getattrRequest::set_path(const char* value) { - _set_bit(1); - if (path_ == &_default_path_) { + set_has_path(); + if (path_ == &::google::protobuf::internal::kEmptyString) { path_ = new ::std::string; } path_->assign(value); } inline void getattrRequest::set_path(const char* value, size_t size) { - _set_bit(1); - if (path_ == &_default_path_) { + set_has_path(); + if (path_ == &::google::protobuf::internal::kEmptyString) { path_ = new ::std::string; } path_->assign(reinterpret_cast(value), size); } inline ::std::string* getattrRequest::mutable_path() { - _set_bit(1); - if (path_ == &_default_path_) { + set_has_path(); + if (path_ == &::google::protobuf::internal::kEmptyString) { path_ = new ::std::string; } return path_; } +inline ::std::string* getattrRequest::release_path() { + clear_has_path(); + if (path_ == &::google::protobuf::internal::kEmptyString) { + return NULL; + } else { + ::std::string* temp = path_; + path_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + return temp; + } +} +inline void getattrRequest::set_allocated_path(::std::string* path) { + if (path_ != &::google::protobuf::internal::kEmptyString) { + delete path_; + } + if (path) { + set_has_path(); + path_ = path; + } else { + clear_has_path(); + path_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + } +} // required fixed64 known_etag = 3; inline bool getattrRequest::has_known_etag() const { - return _has_bit(2); + return (_has_bits_[0] & 0x00000004u) != 0; +} +inline void getattrRequest::set_has_known_etag() { + _has_bits_[0] |= 0x00000004u; +} +inline void getattrRequest::clear_has_known_etag() { + _has_bits_[0] &= ~0x00000004u; } inline void getattrRequest::clear_known_etag() { known_etag_ = GOOGLE_ULONGLONG(0); - _clear_bit(2); + clear_has_known_etag(); } inline ::google::protobuf::uint64 getattrRequest::known_etag() const { return known_etag_; } inline void getattrRequest::set_known_etag(::google::protobuf::uint64 value) { - _set_bit(2); + set_has_known_etag(); known_etag_ = value; } @@ -7637,20 +7905,41 @@ inline void getattrRequest::set_known_etag(::google::protobuf::uint64 value) { // optional .xtreemfs.pbrpc.Stat stbuf = 1; inline bool getattrResponse::has_stbuf() const { - return _has_bit(0); + return (_has_bits_[0] & 0x00000001u) != 0; +} +inline void getattrResponse::set_has_stbuf() { + _has_bits_[0] |= 0x00000001u; +} +inline void getattrResponse::clear_has_stbuf() { + _has_bits_[0] &= ~0x00000001u; } inline void getattrResponse::clear_stbuf() { if (stbuf_ != NULL) stbuf_->::xtreemfs::pbrpc::Stat::Clear(); - _clear_bit(0); + clear_has_stbuf(); } inline const ::xtreemfs::pbrpc::Stat& getattrResponse::stbuf() const { return stbuf_ != NULL ? *stbuf_ : *default_instance_->stbuf_; } inline ::xtreemfs::pbrpc::Stat* getattrResponse::mutable_stbuf() { - _set_bit(0); + set_has_stbuf(); if (stbuf_ == NULL) stbuf_ = new ::xtreemfs::pbrpc::Stat; return stbuf_; } +inline ::xtreemfs::pbrpc::Stat* getattrResponse::release_stbuf() { + clear_has_stbuf(); + ::xtreemfs::pbrpc::Stat* temp = stbuf_; + stbuf_ = NULL; + return temp; +} +inline void getattrResponse::set_allocated_stbuf(::xtreemfs::pbrpc::Stat* stbuf) { + delete stbuf_; + stbuf_ = stbuf; + if (stbuf) { + set_has_stbuf(); + } else { + clear_has_stbuf(); + } +} // ------------------------------------------------------------------- @@ -7658,129 +7947,213 @@ inline ::xtreemfs::pbrpc::Stat* getattrResponse::mutable_stbuf() { // required string volume_name = 1; inline bool getxattrRequest::has_volume_name() const { - return _has_bit(0); + return (_has_bits_[0] & 0x00000001u) != 0; +} +inline void getxattrRequest::set_has_volume_name() { + _has_bits_[0] |= 0x00000001u; +} +inline void getxattrRequest::clear_has_volume_name() { + _has_bits_[0] &= ~0x00000001u; } inline void getxattrRequest::clear_volume_name() { - if (volume_name_ != &_default_volume_name_) { + if (volume_name_ != &::google::protobuf::internal::kEmptyString) { volume_name_->clear(); } - _clear_bit(0); + clear_has_volume_name(); } inline const ::std::string& getxattrRequest::volume_name() const { return *volume_name_; } inline void getxattrRequest::set_volume_name(const ::std::string& value) { - _set_bit(0); - if (volume_name_ == &_default_volume_name_) { + set_has_volume_name(); + if (volume_name_ == &::google::protobuf::internal::kEmptyString) { volume_name_ = new ::std::string; } volume_name_->assign(value); } inline void getxattrRequest::set_volume_name(const char* value) { - _set_bit(0); - if (volume_name_ == &_default_volume_name_) { + set_has_volume_name(); + if (volume_name_ == &::google::protobuf::internal::kEmptyString) { volume_name_ = new ::std::string; } volume_name_->assign(value); } inline void getxattrRequest::set_volume_name(const char* value, size_t size) { - _set_bit(0); - if (volume_name_ == &_default_volume_name_) { + set_has_volume_name(); + if (volume_name_ == &::google::protobuf::internal::kEmptyString) { volume_name_ = new ::std::string; } volume_name_->assign(reinterpret_cast(value), size); } inline ::std::string* getxattrRequest::mutable_volume_name() { - _set_bit(0); - if (volume_name_ == &_default_volume_name_) { + set_has_volume_name(); + if (volume_name_ == &::google::protobuf::internal::kEmptyString) { volume_name_ = new ::std::string; } return volume_name_; } +inline ::std::string* getxattrRequest::release_volume_name() { + clear_has_volume_name(); + if (volume_name_ == &::google::protobuf::internal::kEmptyString) { + return NULL; + } else { + ::std::string* temp = volume_name_; + volume_name_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + return temp; + } +} +inline void getxattrRequest::set_allocated_volume_name(::std::string* volume_name) { + if (volume_name_ != &::google::protobuf::internal::kEmptyString) { + delete volume_name_; + } + if (volume_name) { + set_has_volume_name(); + volume_name_ = volume_name; + } else { + clear_has_volume_name(); + volume_name_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + } +} // required string path = 2; inline bool getxattrRequest::has_path() const { - return _has_bit(1); + return (_has_bits_[0] & 0x00000002u) != 0; +} +inline void getxattrRequest::set_has_path() { + _has_bits_[0] |= 0x00000002u; +} +inline void getxattrRequest::clear_has_path() { + _has_bits_[0] &= ~0x00000002u; } inline void getxattrRequest::clear_path() { - if (path_ != &_default_path_) { + if (path_ != &::google::protobuf::internal::kEmptyString) { path_->clear(); } - _clear_bit(1); + clear_has_path(); } inline const ::std::string& getxattrRequest::path() const { return *path_; } inline void getxattrRequest::set_path(const ::std::string& value) { - _set_bit(1); - if (path_ == &_default_path_) { + set_has_path(); + if (path_ == &::google::protobuf::internal::kEmptyString) { path_ = new ::std::string; } path_->assign(value); } inline void getxattrRequest::set_path(const char* value) { - _set_bit(1); - if (path_ == &_default_path_) { + set_has_path(); + if (path_ == &::google::protobuf::internal::kEmptyString) { path_ = new ::std::string; } path_->assign(value); } inline void getxattrRequest::set_path(const char* value, size_t size) { - _set_bit(1); - if (path_ == &_default_path_) { + set_has_path(); + if (path_ == &::google::protobuf::internal::kEmptyString) { path_ = new ::std::string; } path_->assign(reinterpret_cast(value), size); } inline ::std::string* getxattrRequest::mutable_path() { - _set_bit(1); - if (path_ == &_default_path_) { + set_has_path(); + if (path_ == &::google::protobuf::internal::kEmptyString) { path_ = new ::std::string; } return path_; } +inline ::std::string* getxattrRequest::release_path() { + clear_has_path(); + if (path_ == &::google::protobuf::internal::kEmptyString) { + return NULL; + } else { + ::std::string* temp = path_; + path_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + return temp; + } +} +inline void getxattrRequest::set_allocated_path(::std::string* path) { + if (path_ != &::google::protobuf::internal::kEmptyString) { + delete path_; + } + if (path) { + set_has_path(); + path_ = path; + } else { + clear_has_path(); + path_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + } +} // required string name = 3; inline bool getxattrRequest::has_name() const { - return _has_bit(2); + return (_has_bits_[0] & 0x00000004u) != 0; +} +inline void getxattrRequest::set_has_name() { + _has_bits_[0] |= 0x00000004u; +} +inline void getxattrRequest::clear_has_name() { + _has_bits_[0] &= ~0x00000004u; } inline void getxattrRequest::clear_name() { - if (name_ != &_default_name_) { + if (name_ != &::google::protobuf::internal::kEmptyString) { name_->clear(); } - _clear_bit(2); + clear_has_name(); } inline const ::std::string& getxattrRequest::name() const { return *name_; } inline void getxattrRequest::set_name(const ::std::string& value) { - _set_bit(2); - if (name_ == &_default_name_) { + set_has_name(); + if (name_ == &::google::protobuf::internal::kEmptyString) { name_ = new ::std::string; } name_->assign(value); } inline void getxattrRequest::set_name(const char* value) { - _set_bit(2); - if (name_ == &_default_name_) { + set_has_name(); + if (name_ == &::google::protobuf::internal::kEmptyString) { name_ = new ::std::string; } name_->assign(value); } inline void getxattrRequest::set_name(const char* value, size_t size) { - _set_bit(2); - if (name_ == &_default_name_) { + set_has_name(); + if (name_ == &::google::protobuf::internal::kEmptyString) { name_ = new ::std::string; } name_->assign(reinterpret_cast(value), size); } inline ::std::string* getxattrRequest::mutable_name() { - _set_bit(2); - if (name_ == &_default_name_) { + set_has_name(); + if (name_ == &::google::protobuf::internal::kEmptyString) { name_ = new ::std::string; } return name_; } +inline ::std::string* getxattrRequest::release_name() { + clear_has_name(); + if (name_ == &::google::protobuf::internal::kEmptyString) { + return NULL; + } else { + ::std::string* temp = name_; + name_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + return temp; + } +} +inline void getxattrRequest::set_allocated_name(::std::string* name) { + if (name_ != &::google::protobuf::internal::kEmptyString) { + delete name_; + } + if (name) { + set_has_name(); + name_ = name; + } else { + clear_has_name(); + name_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + } +} // ------------------------------------------------------------------- @@ -7788,86 +8161,142 @@ inline ::std::string* getxattrRequest::mutable_name() { // required string value = 1; inline bool getxattrResponse::has_value() const { - return _has_bit(0); + return (_has_bits_[0] & 0x00000001u) != 0; +} +inline void getxattrResponse::set_has_value() { + _has_bits_[0] |= 0x00000001u; +} +inline void getxattrResponse::clear_has_value() { + _has_bits_[0] &= ~0x00000001u; } inline void getxattrResponse::clear_value() { - if (value_ != &_default_value_) { + if (value_ != &::google::protobuf::internal::kEmptyString) { value_->clear(); } - _clear_bit(0); + clear_has_value(); } inline const ::std::string& getxattrResponse::value() const { return *value_; } inline void getxattrResponse::set_value(const ::std::string& value) { - _set_bit(0); - if (value_ == &_default_value_) { + set_has_value(); + if (value_ == &::google::protobuf::internal::kEmptyString) { value_ = new ::std::string; } value_->assign(value); } inline void getxattrResponse::set_value(const char* value) { - _set_bit(0); - if (value_ == &_default_value_) { + set_has_value(); + if (value_ == &::google::protobuf::internal::kEmptyString) { value_ = new ::std::string; } value_->assign(value); } inline void getxattrResponse::set_value(const char* value, size_t size) { - _set_bit(0); - if (value_ == &_default_value_) { + set_has_value(); + if (value_ == &::google::protobuf::internal::kEmptyString) { value_ = new ::std::string; } value_->assign(reinterpret_cast(value), size); } inline ::std::string* getxattrResponse::mutable_value() { - _set_bit(0); - if (value_ == &_default_value_) { + set_has_value(); + if (value_ == &::google::protobuf::internal::kEmptyString) { value_ = new ::std::string; } return value_; } +inline ::std::string* getxattrResponse::release_value() { + clear_has_value(); + if (value_ == &::google::protobuf::internal::kEmptyString) { + return NULL; + } else { + ::std::string* temp = value_; + value_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + return temp; + } +} +inline void getxattrResponse::set_allocated_value(::std::string* value) { + if (value_ != &::google::protobuf::internal::kEmptyString) { + delete value_; + } + if (value) { + set_has_value(); + value_ = value; + } else { + clear_has_value(); + value_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + } +} -// optional bytes value_bytes = 2; -inline bool getxattrResponse::has_value_bytes() const { - return _has_bit(1); +// optional bytes value_bytes_string = 2; +inline bool getxattrResponse::has_value_bytes_string() const { + return (_has_bits_[0] & 0x00000002u) != 0; +} +inline void getxattrResponse::set_has_value_bytes_string() { + _has_bits_[0] |= 0x00000002u; +} +inline void getxattrResponse::clear_has_value_bytes_string() { + _has_bits_[0] &= ~0x00000002u; +} +inline void getxattrResponse::clear_value_bytes_string() { + if (value_bytes_string_ != &::google::protobuf::internal::kEmptyString) { + value_bytes_string_->clear(); + } + clear_has_value_bytes_string(); } -inline void getxattrResponse::clear_value_bytes() { - if (value_bytes_ != &_default_value_bytes_) { - value_bytes_->clear(); +inline const ::std::string& getxattrResponse::value_bytes_string() const { + return *value_bytes_string_; +} +inline void getxattrResponse::set_value_bytes_string(const ::std::string& value) { + set_has_value_bytes_string(); + if (value_bytes_string_ == &::google::protobuf::internal::kEmptyString) { + value_bytes_string_ = new ::std::string; } - _clear_bit(1); + value_bytes_string_->assign(value); } -inline const ::std::string& getxattrResponse::value_bytes() const { - return *value_bytes_; +inline void getxattrResponse::set_value_bytes_string(const char* value) { + set_has_value_bytes_string(); + if (value_bytes_string_ == &::google::protobuf::internal::kEmptyString) { + value_bytes_string_ = new ::std::string; + } + value_bytes_string_->assign(value); } -inline void getxattrResponse::set_value_bytes(const ::std::string& value) { - _set_bit(1); - if (value_bytes_ == &_default_value_bytes_) { - value_bytes_ = new ::std::string; +inline void getxattrResponse::set_value_bytes_string(const void* value, size_t size) { + set_has_value_bytes_string(); + if (value_bytes_string_ == &::google::protobuf::internal::kEmptyString) { + value_bytes_string_ = new ::std::string; } - value_bytes_->assign(value); + value_bytes_string_->assign(reinterpret_cast(value), size); } -inline void getxattrResponse::set_value_bytes(const char* value) { - _set_bit(1); - if (value_bytes_ == &_default_value_bytes_) { - value_bytes_ = new ::std::string; +inline ::std::string* getxattrResponse::mutable_value_bytes_string() { + set_has_value_bytes_string(); + if (value_bytes_string_ == &::google::protobuf::internal::kEmptyString) { + value_bytes_string_ = new ::std::string; } - value_bytes_->assign(value); + return value_bytes_string_; } -inline void getxattrResponse::set_value_bytes(const void* value, size_t size) { - _set_bit(1); - if (value_bytes_ == &_default_value_bytes_) { - value_bytes_ = new ::std::string; +inline ::std::string* getxattrResponse::release_value_bytes_string() { + clear_has_value_bytes_string(); + if (value_bytes_string_ == &::google::protobuf::internal::kEmptyString) { + return NULL; + } else { + ::std::string* temp = value_bytes_string_; + value_bytes_string_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + return temp; } - value_bytes_->assign(reinterpret_cast(value), size); } -inline ::std::string* getxattrResponse::mutable_value_bytes() { - _set_bit(1); - if (value_bytes_ == &_default_value_bytes_) { - value_bytes_ = new ::std::string; +inline void getxattrResponse::set_allocated_value_bytes_string(::std::string* value_bytes_string) { + if (value_bytes_string_ != &::google::protobuf::internal::kEmptyString) { + delete value_bytes_string_; + } + if (value_bytes_string) { + set_has_value_bytes_string(); + value_bytes_string_ = value_bytes_string; + } else { + clear_has_value_bytes_string(); + value_bytes_string_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); } - return value_bytes_; } // ------------------------------------------------------------------- @@ -7876,129 +8305,213 @@ inline ::std::string* getxattrResponse::mutable_value_bytes() { // required string volume_name = 1; inline bool linkRequest::has_volume_name() const { - return _has_bit(0); + return (_has_bits_[0] & 0x00000001u) != 0; +} +inline void linkRequest::set_has_volume_name() { + _has_bits_[0] |= 0x00000001u; +} +inline void linkRequest::clear_has_volume_name() { + _has_bits_[0] &= ~0x00000001u; } inline void linkRequest::clear_volume_name() { - if (volume_name_ != &_default_volume_name_) { + if (volume_name_ != &::google::protobuf::internal::kEmptyString) { volume_name_->clear(); } - _clear_bit(0); + clear_has_volume_name(); } inline const ::std::string& linkRequest::volume_name() const { return *volume_name_; } inline void linkRequest::set_volume_name(const ::std::string& value) { - _set_bit(0); - if (volume_name_ == &_default_volume_name_) { + set_has_volume_name(); + if (volume_name_ == &::google::protobuf::internal::kEmptyString) { volume_name_ = new ::std::string; } volume_name_->assign(value); } inline void linkRequest::set_volume_name(const char* value) { - _set_bit(0); - if (volume_name_ == &_default_volume_name_) { + set_has_volume_name(); + if (volume_name_ == &::google::protobuf::internal::kEmptyString) { volume_name_ = new ::std::string; } volume_name_->assign(value); } inline void linkRequest::set_volume_name(const char* value, size_t size) { - _set_bit(0); - if (volume_name_ == &_default_volume_name_) { + set_has_volume_name(); + if (volume_name_ == &::google::protobuf::internal::kEmptyString) { volume_name_ = new ::std::string; } volume_name_->assign(reinterpret_cast(value), size); } inline ::std::string* linkRequest::mutable_volume_name() { - _set_bit(0); - if (volume_name_ == &_default_volume_name_) { + set_has_volume_name(); + if (volume_name_ == &::google::protobuf::internal::kEmptyString) { volume_name_ = new ::std::string; } return volume_name_; } +inline ::std::string* linkRequest::release_volume_name() { + clear_has_volume_name(); + if (volume_name_ == &::google::protobuf::internal::kEmptyString) { + return NULL; + } else { + ::std::string* temp = volume_name_; + volume_name_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + return temp; + } +} +inline void linkRequest::set_allocated_volume_name(::std::string* volume_name) { + if (volume_name_ != &::google::protobuf::internal::kEmptyString) { + delete volume_name_; + } + if (volume_name) { + set_has_volume_name(); + volume_name_ = volume_name; + } else { + clear_has_volume_name(); + volume_name_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + } +} // required string target_path = 2; inline bool linkRequest::has_target_path() const { - return _has_bit(1); + return (_has_bits_[0] & 0x00000002u) != 0; +} +inline void linkRequest::set_has_target_path() { + _has_bits_[0] |= 0x00000002u; +} +inline void linkRequest::clear_has_target_path() { + _has_bits_[0] &= ~0x00000002u; } inline void linkRequest::clear_target_path() { - if (target_path_ != &_default_target_path_) { + if (target_path_ != &::google::protobuf::internal::kEmptyString) { target_path_->clear(); } - _clear_bit(1); + clear_has_target_path(); } inline const ::std::string& linkRequest::target_path() const { return *target_path_; } inline void linkRequest::set_target_path(const ::std::string& value) { - _set_bit(1); - if (target_path_ == &_default_target_path_) { + set_has_target_path(); + if (target_path_ == &::google::protobuf::internal::kEmptyString) { target_path_ = new ::std::string; } target_path_->assign(value); } inline void linkRequest::set_target_path(const char* value) { - _set_bit(1); - if (target_path_ == &_default_target_path_) { + set_has_target_path(); + if (target_path_ == &::google::protobuf::internal::kEmptyString) { target_path_ = new ::std::string; } target_path_->assign(value); } inline void linkRequest::set_target_path(const char* value, size_t size) { - _set_bit(1); - if (target_path_ == &_default_target_path_) { + set_has_target_path(); + if (target_path_ == &::google::protobuf::internal::kEmptyString) { target_path_ = new ::std::string; } target_path_->assign(reinterpret_cast(value), size); } inline ::std::string* linkRequest::mutable_target_path() { - _set_bit(1); - if (target_path_ == &_default_target_path_) { + set_has_target_path(); + if (target_path_ == &::google::protobuf::internal::kEmptyString) { target_path_ = new ::std::string; } return target_path_; } +inline ::std::string* linkRequest::release_target_path() { + clear_has_target_path(); + if (target_path_ == &::google::protobuf::internal::kEmptyString) { + return NULL; + } else { + ::std::string* temp = target_path_; + target_path_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + return temp; + } +} +inline void linkRequest::set_allocated_target_path(::std::string* target_path) { + if (target_path_ != &::google::protobuf::internal::kEmptyString) { + delete target_path_; + } + if (target_path) { + set_has_target_path(); + target_path_ = target_path; + } else { + clear_has_target_path(); + target_path_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + } +} // required string link_path = 3; inline bool linkRequest::has_link_path() const { - return _has_bit(2); + return (_has_bits_[0] & 0x00000004u) != 0; +} +inline void linkRequest::set_has_link_path() { + _has_bits_[0] |= 0x00000004u; +} +inline void linkRequest::clear_has_link_path() { + _has_bits_[0] &= ~0x00000004u; } inline void linkRequest::clear_link_path() { - if (link_path_ != &_default_link_path_) { + if (link_path_ != &::google::protobuf::internal::kEmptyString) { link_path_->clear(); } - _clear_bit(2); + clear_has_link_path(); } inline const ::std::string& linkRequest::link_path() const { return *link_path_; } inline void linkRequest::set_link_path(const ::std::string& value) { - _set_bit(2); - if (link_path_ == &_default_link_path_) { + set_has_link_path(); + if (link_path_ == &::google::protobuf::internal::kEmptyString) { link_path_ = new ::std::string; } link_path_->assign(value); } inline void linkRequest::set_link_path(const char* value) { - _set_bit(2); - if (link_path_ == &_default_link_path_) { + set_has_link_path(); + if (link_path_ == &::google::protobuf::internal::kEmptyString) { link_path_ = new ::std::string; } link_path_->assign(value); } inline void linkRequest::set_link_path(const char* value, size_t size) { - _set_bit(2); - if (link_path_ == &_default_link_path_) { + set_has_link_path(); + if (link_path_ == &::google::protobuf::internal::kEmptyString) { link_path_ = new ::std::string; } link_path_->assign(reinterpret_cast(value), size); } inline ::std::string* linkRequest::mutable_link_path() { - _set_bit(2); - if (link_path_ == &_default_link_path_) { + set_has_link_path(); + if (link_path_ == &::google::protobuf::internal::kEmptyString) { link_path_ = new ::std::string; } return link_path_; } +inline ::std::string* linkRequest::release_link_path() { + clear_has_link_path(); + if (link_path_ == &::google::protobuf::internal::kEmptyString) { + return NULL; + } else { + ::std::string* temp = link_path_; + link_path_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + return temp; + } +} +inline void linkRequest::set_allocated_link_path(::std::string* link_path) { + if (link_path_ != &::google::protobuf::internal::kEmptyString) { + delete link_path_; + } + if (link_path) { + set_has_link_path(); + link_path_ = link_path; + } else { + clear_has_link_path(); + link_path_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + } +} // ------------------------------------------------------------------- @@ -8006,101 +8519,163 @@ inline ::std::string* linkRequest::mutable_link_path() { // required string volume_name = 1; inline bool listxattrRequest::has_volume_name() const { - return _has_bit(0); + return (_has_bits_[0] & 0x00000001u) != 0; +} +inline void listxattrRequest::set_has_volume_name() { + _has_bits_[0] |= 0x00000001u; +} +inline void listxattrRequest::clear_has_volume_name() { + _has_bits_[0] &= ~0x00000001u; } inline void listxattrRequest::clear_volume_name() { - if (volume_name_ != &_default_volume_name_) { + if (volume_name_ != &::google::protobuf::internal::kEmptyString) { volume_name_->clear(); } - _clear_bit(0); + clear_has_volume_name(); } inline const ::std::string& listxattrRequest::volume_name() const { return *volume_name_; } inline void listxattrRequest::set_volume_name(const ::std::string& value) { - _set_bit(0); - if (volume_name_ == &_default_volume_name_) { + set_has_volume_name(); + if (volume_name_ == &::google::protobuf::internal::kEmptyString) { volume_name_ = new ::std::string; } volume_name_->assign(value); } inline void listxattrRequest::set_volume_name(const char* value) { - _set_bit(0); - if (volume_name_ == &_default_volume_name_) { + set_has_volume_name(); + if (volume_name_ == &::google::protobuf::internal::kEmptyString) { volume_name_ = new ::std::string; } volume_name_->assign(value); } inline void listxattrRequest::set_volume_name(const char* value, size_t size) { - _set_bit(0); - if (volume_name_ == &_default_volume_name_) { + set_has_volume_name(); + if (volume_name_ == &::google::protobuf::internal::kEmptyString) { volume_name_ = new ::std::string; } volume_name_->assign(reinterpret_cast(value), size); } inline ::std::string* listxattrRequest::mutable_volume_name() { - _set_bit(0); - if (volume_name_ == &_default_volume_name_) { + set_has_volume_name(); + if (volume_name_ == &::google::protobuf::internal::kEmptyString) { volume_name_ = new ::std::string; } return volume_name_; } +inline ::std::string* listxattrRequest::release_volume_name() { + clear_has_volume_name(); + if (volume_name_ == &::google::protobuf::internal::kEmptyString) { + return NULL; + } else { + ::std::string* temp = volume_name_; + volume_name_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + return temp; + } +} +inline void listxattrRequest::set_allocated_volume_name(::std::string* volume_name) { + if (volume_name_ != &::google::protobuf::internal::kEmptyString) { + delete volume_name_; + } + if (volume_name) { + set_has_volume_name(); + volume_name_ = volume_name; + } else { + clear_has_volume_name(); + volume_name_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + } +} // required string path = 2; inline bool listxattrRequest::has_path() const { - return _has_bit(1); + return (_has_bits_[0] & 0x00000002u) != 0; +} +inline void listxattrRequest::set_has_path() { + _has_bits_[0] |= 0x00000002u; +} +inline void listxattrRequest::clear_has_path() { + _has_bits_[0] &= ~0x00000002u; } inline void listxattrRequest::clear_path() { - if (path_ != &_default_path_) { + if (path_ != &::google::protobuf::internal::kEmptyString) { path_->clear(); } - _clear_bit(1); + clear_has_path(); } inline const ::std::string& listxattrRequest::path() const { return *path_; } inline void listxattrRequest::set_path(const ::std::string& value) { - _set_bit(1); - if (path_ == &_default_path_) { + set_has_path(); + if (path_ == &::google::protobuf::internal::kEmptyString) { path_ = new ::std::string; } path_->assign(value); } inline void listxattrRequest::set_path(const char* value) { - _set_bit(1); - if (path_ == &_default_path_) { + set_has_path(); + if (path_ == &::google::protobuf::internal::kEmptyString) { path_ = new ::std::string; } path_->assign(value); } inline void listxattrRequest::set_path(const char* value, size_t size) { - _set_bit(1); - if (path_ == &_default_path_) { + set_has_path(); + if (path_ == &::google::protobuf::internal::kEmptyString) { path_ = new ::std::string; } path_->assign(reinterpret_cast(value), size); } inline ::std::string* listxattrRequest::mutable_path() { - _set_bit(1); - if (path_ == &_default_path_) { + set_has_path(); + if (path_ == &::google::protobuf::internal::kEmptyString) { path_ = new ::std::string; } return path_; } +inline ::std::string* listxattrRequest::release_path() { + clear_has_path(); + if (path_ == &::google::protobuf::internal::kEmptyString) { + return NULL; + } else { + ::std::string* temp = path_; + path_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + return temp; + } +} +inline void listxattrRequest::set_allocated_path(::std::string* path) { + if (path_ != &::google::protobuf::internal::kEmptyString) { + delete path_; + } + if (path) { + set_has_path(); + path_ = path; + } else { + clear_has_path(); + path_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + } +} // required bool names_only = 3; inline bool listxattrRequest::has_names_only() const { - return _has_bit(2); + return (_has_bits_[0] & 0x00000004u) != 0; +} +inline void listxattrRequest::set_has_names_only() { + _has_bits_[0] |= 0x00000004u; +} +inline void listxattrRequest::clear_has_names_only() { + _has_bits_[0] &= ~0x00000004u; } inline void listxattrRequest::clear_names_only() { names_only_ = false; - _clear_bit(2); + clear_has_names_only(); } inline bool listxattrRequest::names_only() const { return names_only_; } inline void listxattrRequest::set_names_only(bool value) { - _set_bit(2); + set_has_names_only(); names_only_ = value; } @@ -8139,101 +8714,163 @@ listxattrResponse::mutable_xattrs() { // required string volume_name = 1; inline bool mkdirRequest::has_volume_name() const { - return _has_bit(0); + return (_has_bits_[0] & 0x00000001u) != 0; +} +inline void mkdirRequest::set_has_volume_name() { + _has_bits_[0] |= 0x00000001u; +} +inline void mkdirRequest::clear_has_volume_name() { + _has_bits_[0] &= ~0x00000001u; } inline void mkdirRequest::clear_volume_name() { - if (volume_name_ != &_default_volume_name_) { + if (volume_name_ != &::google::protobuf::internal::kEmptyString) { volume_name_->clear(); } - _clear_bit(0); + clear_has_volume_name(); } inline const ::std::string& mkdirRequest::volume_name() const { return *volume_name_; } inline void mkdirRequest::set_volume_name(const ::std::string& value) { - _set_bit(0); - if (volume_name_ == &_default_volume_name_) { + set_has_volume_name(); + if (volume_name_ == &::google::protobuf::internal::kEmptyString) { volume_name_ = new ::std::string; } volume_name_->assign(value); } inline void mkdirRequest::set_volume_name(const char* value) { - _set_bit(0); - if (volume_name_ == &_default_volume_name_) { + set_has_volume_name(); + if (volume_name_ == &::google::protobuf::internal::kEmptyString) { volume_name_ = new ::std::string; } volume_name_->assign(value); } inline void mkdirRequest::set_volume_name(const char* value, size_t size) { - _set_bit(0); - if (volume_name_ == &_default_volume_name_) { + set_has_volume_name(); + if (volume_name_ == &::google::protobuf::internal::kEmptyString) { volume_name_ = new ::std::string; } volume_name_->assign(reinterpret_cast(value), size); } inline ::std::string* mkdirRequest::mutable_volume_name() { - _set_bit(0); - if (volume_name_ == &_default_volume_name_) { + set_has_volume_name(); + if (volume_name_ == &::google::protobuf::internal::kEmptyString) { volume_name_ = new ::std::string; } return volume_name_; } +inline ::std::string* mkdirRequest::release_volume_name() { + clear_has_volume_name(); + if (volume_name_ == &::google::protobuf::internal::kEmptyString) { + return NULL; + } else { + ::std::string* temp = volume_name_; + volume_name_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + return temp; + } +} +inline void mkdirRequest::set_allocated_volume_name(::std::string* volume_name) { + if (volume_name_ != &::google::protobuf::internal::kEmptyString) { + delete volume_name_; + } + if (volume_name) { + set_has_volume_name(); + volume_name_ = volume_name; + } else { + clear_has_volume_name(); + volume_name_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + } +} // required string path = 2; inline bool mkdirRequest::has_path() const { - return _has_bit(1); + return (_has_bits_[0] & 0x00000002u) != 0; +} +inline void mkdirRequest::set_has_path() { + _has_bits_[0] |= 0x00000002u; +} +inline void mkdirRequest::clear_has_path() { + _has_bits_[0] &= ~0x00000002u; } inline void mkdirRequest::clear_path() { - if (path_ != &_default_path_) { + if (path_ != &::google::protobuf::internal::kEmptyString) { path_->clear(); } - _clear_bit(1); + clear_has_path(); } inline const ::std::string& mkdirRequest::path() const { return *path_; } inline void mkdirRequest::set_path(const ::std::string& value) { - _set_bit(1); - if (path_ == &_default_path_) { + set_has_path(); + if (path_ == &::google::protobuf::internal::kEmptyString) { path_ = new ::std::string; } path_->assign(value); } inline void mkdirRequest::set_path(const char* value) { - _set_bit(1); - if (path_ == &_default_path_) { + set_has_path(); + if (path_ == &::google::protobuf::internal::kEmptyString) { path_ = new ::std::string; } path_->assign(value); } inline void mkdirRequest::set_path(const char* value, size_t size) { - _set_bit(1); - if (path_ == &_default_path_) { + set_has_path(); + if (path_ == &::google::protobuf::internal::kEmptyString) { path_ = new ::std::string; } path_->assign(reinterpret_cast(value), size); } inline ::std::string* mkdirRequest::mutable_path() { - _set_bit(1); - if (path_ == &_default_path_) { + set_has_path(); + if (path_ == &::google::protobuf::internal::kEmptyString) { path_ = new ::std::string; } return path_; } +inline ::std::string* mkdirRequest::release_path() { + clear_has_path(); + if (path_ == &::google::protobuf::internal::kEmptyString) { + return NULL; + } else { + ::std::string* temp = path_; + path_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + return temp; + } +} +inline void mkdirRequest::set_allocated_path(::std::string* path) { + if (path_ != &::google::protobuf::internal::kEmptyString) { + delete path_; + } + if (path) { + set_has_path(); + path_ = path; + } else { + clear_has_path(); + path_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + } +} // required fixed32 mode = 3; inline bool mkdirRequest::has_mode() const { - return _has_bit(2); + return (_has_bits_[0] & 0x00000004u) != 0; +} +inline void mkdirRequest::set_has_mode() { + _has_bits_[0] |= 0x00000004u; +} +inline void mkdirRequest::clear_has_mode() { + _has_bits_[0] &= ~0x00000004u; } inline void mkdirRequest::clear_mode() { mode_ = 0u; - _clear_bit(2); + clear_has_mode(); } inline ::google::protobuf::uint32 mkdirRequest::mode() const { return mode_; } inline void mkdirRequest::set_mode(::google::protobuf::uint32 value) { - _set_bit(2); + set_has_mode(); mode_ = value; } @@ -8243,152 +8880,247 @@ inline void mkdirRequest::set_mode(::google::protobuf::uint32 value) { // required string volume_name = 1; inline bool openRequest::has_volume_name() const { - return _has_bit(0); + return (_has_bits_[0] & 0x00000001u) != 0; +} +inline void openRequest::set_has_volume_name() { + _has_bits_[0] |= 0x00000001u; +} +inline void openRequest::clear_has_volume_name() { + _has_bits_[0] &= ~0x00000001u; } inline void openRequest::clear_volume_name() { - if (volume_name_ != &_default_volume_name_) { + if (volume_name_ != &::google::protobuf::internal::kEmptyString) { volume_name_->clear(); } - _clear_bit(0); + clear_has_volume_name(); } inline const ::std::string& openRequest::volume_name() const { return *volume_name_; } inline void openRequest::set_volume_name(const ::std::string& value) { - _set_bit(0); - if (volume_name_ == &_default_volume_name_) { + set_has_volume_name(); + if (volume_name_ == &::google::protobuf::internal::kEmptyString) { volume_name_ = new ::std::string; } volume_name_->assign(value); } inline void openRequest::set_volume_name(const char* value) { - _set_bit(0); - if (volume_name_ == &_default_volume_name_) { + set_has_volume_name(); + if (volume_name_ == &::google::protobuf::internal::kEmptyString) { volume_name_ = new ::std::string; } volume_name_->assign(value); } inline void openRequest::set_volume_name(const char* value, size_t size) { - _set_bit(0); - if (volume_name_ == &_default_volume_name_) { + set_has_volume_name(); + if (volume_name_ == &::google::protobuf::internal::kEmptyString) { volume_name_ = new ::std::string; } volume_name_->assign(reinterpret_cast(value), size); } inline ::std::string* openRequest::mutable_volume_name() { - _set_bit(0); - if (volume_name_ == &_default_volume_name_) { + set_has_volume_name(); + if (volume_name_ == &::google::protobuf::internal::kEmptyString) { volume_name_ = new ::std::string; } return volume_name_; } +inline ::std::string* openRequest::release_volume_name() { + clear_has_volume_name(); + if (volume_name_ == &::google::protobuf::internal::kEmptyString) { + return NULL; + } else { + ::std::string* temp = volume_name_; + volume_name_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + return temp; + } +} +inline void openRequest::set_allocated_volume_name(::std::string* volume_name) { + if (volume_name_ != &::google::protobuf::internal::kEmptyString) { + delete volume_name_; + } + if (volume_name) { + set_has_volume_name(); + volume_name_ = volume_name; + } else { + clear_has_volume_name(); + volume_name_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + } +} // required string path = 2; inline bool openRequest::has_path() const { - return _has_bit(1); + return (_has_bits_[0] & 0x00000002u) != 0; +} +inline void openRequest::set_has_path() { + _has_bits_[0] |= 0x00000002u; +} +inline void openRequest::clear_has_path() { + _has_bits_[0] &= ~0x00000002u; } inline void openRequest::clear_path() { - if (path_ != &_default_path_) { + if (path_ != &::google::protobuf::internal::kEmptyString) { path_->clear(); } - _clear_bit(1); + clear_has_path(); } inline const ::std::string& openRequest::path() const { return *path_; } inline void openRequest::set_path(const ::std::string& value) { - _set_bit(1); - if (path_ == &_default_path_) { + set_has_path(); + if (path_ == &::google::protobuf::internal::kEmptyString) { path_ = new ::std::string; } path_->assign(value); } inline void openRequest::set_path(const char* value) { - _set_bit(1); - if (path_ == &_default_path_) { + set_has_path(); + if (path_ == &::google::protobuf::internal::kEmptyString) { path_ = new ::std::string; } path_->assign(value); } inline void openRequest::set_path(const char* value, size_t size) { - _set_bit(1); - if (path_ == &_default_path_) { + set_has_path(); + if (path_ == &::google::protobuf::internal::kEmptyString) { path_ = new ::std::string; } path_->assign(reinterpret_cast(value), size); } inline ::std::string* openRequest::mutable_path() { - _set_bit(1); - if (path_ == &_default_path_) { + set_has_path(); + if (path_ == &::google::protobuf::internal::kEmptyString) { path_ = new ::std::string; } return path_; } +inline ::std::string* openRequest::release_path() { + clear_has_path(); + if (path_ == &::google::protobuf::internal::kEmptyString) { + return NULL; + } else { + ::std::string* temp = path_; + path_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + return temp; + } +} +inline void openRequest::set_allocated_path(::std::string* path) { + if (path_ != &::google::protobuf::internal::kEmptyString) { + delete path_; + } + if (path) { + set_has_path(); + path_ = path; + } else { + clear_has_path(); + path_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + } +} // required fixed32 flags = 3; inline bool openRequest::has_flags() const { - return _has_bit(2); + return (_has_bits_[0] & 0x00000004u) != 0; +} +inline void openRequest::set_has_flags() { + _has_bits_[0] |= 0x00000004u; +} +inline void openRequest::clear_has_flags() { + _has_bits_[0] &= ~0x00000004u; } inline void openRequest::clear_flags() { flags_ = 0u; - _clear_bit(2); + clear_has_flags(); } inline ::google::protobuf::uint32 openRequest::flags() const { return flags_; } inline void openRequest::set_flags(::google::protobuf::uint32 value) { - _set_bit(2); + set_has_flags(); flags_ = value; } // required fixed32 mode = 4; inline bool openRequest::has_mode() const { - return _has_bit(3); + return (_has_bits_[0] & 0x00000008u) != 0; +} +inline void openRequest::set_has_mode() { + _has_bits_[0] |= 0x00000008u; +} +inline void openRequest::clear_has_mode() { + _has_bits_[0] &= ~0x00000008u; } inline void openRequest::clear_mode() { mode_ = 0u; - _clear_bit(3); + clear_has_mode(); } inline ::google::protobuf::uint32 openRequest::mode() const { return mode_; } inline void openRequest::set_mode(::google::protobuf::uint32 value) { - _set_bit(3); + set_has_mode(); mode_ = value; } // required fixed32 attributes = 5; inline bool openRequest::has_attributes() const { - return _has_bit(4); + return (_has_bits_[0] & 0x00000010u) != 0; +} +inline void openRequest::set_has_attributes() { + _has_bits_[0] |= 0x00000010u; +} +inline void openRequest::clear_has_attributes() { + _has_bits_[0] &= ~0x00000010u; } inline void openRequest::clear_attributes() { attributes_ = 0u; - _clear_bit(4); + clear_has_attributes(); } inline ::google::protobuf::uint32 openRequest::attributes() const { return attributes_; } inline void openRequest::set_attributes(::google::protobuf::uint32 value) { - _set_bit(4); + set_has_attributes(); attributes_ = value; } // optional .xtreemfs.pbrpc.VivaldiCoordinates coordinates = 6; inline bool openRequest::has_coordinates() const { - return _has_bit(5); + return (_has_bits_[0] & 0x00000020u) != 0; +} +inline void openRequest::set_has_coordinates() { + _has_bits_[0] |= 0x00000020u; +} +inline void openRequest::clear_has_coordinates() { + _has_bits_[0] &= ~0x00000020u; } inline void openRequest::clear_coordinates() { if (coordinates_ != NULL) coordinates_->::xtreemfs::pbrpc::VivaldiCoordinates::Clear(); - _clear_bit(5); + clear_has_coordinates(); } inline const ::xtreemfs::pbrpc::VivaldiCoordinates& openRequest::coordinates() const { return coordinates_ != NULL ? *coordinates_ : *default_instance_->coordinates_; } inline ::xtreemfs::pbrpc::VivaldiCoordinates* openRequest::mutable_coordinates() { - _set_bit(5); + set_has_coordinates(); if (coordinates_ == NULL) coordinates_ = new ::xtreemfs::pbrpc::VivaldiCoordinates; return coordinates_; } +inline ::xtreemfs::pbrpc::VivaldiCoordinates* openRequest::release_coordinates() { + clear_has_coordinates(); + ::xtreemfs::pbrpc::VivaldiCoordinates* temp = coordinates_; + coordinates_ = NULL; + return temp; +} +inline void openRequest::set_allocated_coordinates(::xtreemfs::pbrpc::VivaldiCoordinates* coordinates) { + delete coordinates_; + coordinates_ = coordinates; + if (coordinates) { + set_has_coordinates(); + } else { + clear_has_coordinates(); + } +} // ------------------------------------------------------------------- @@ -8396,34 +9128,61 @@ inline ::xtreemfs::pbrpc::VivaldiCoordinates* openRequest::mutable_coordinates() // required .xtreemfs.pbrpc.FileCredentials creds = 1; inline bool openResponse::has_creds() const { - return _has_bit(0); + return (_has_bits_[0] & 0x00000001u) != 0; +} +inline void openResponse::set_has_creds() { + _has_bits_[0] |= 0x00000001u; +} +inline void openResponse::clear_has_creds() { + _has_bits_[0] &= ~0x00000001u; } inline void openResponse::clear_creds() { if (creds_ != NULL) creds_->::xtreemfs::pbrpc::FileCredentials::Clear(); - _clear_bit(0); + clear_has_creds(); } inline const ::xtreemfs::pbrpc::FileCredentials& openResponse::creds() const { return creds_ != NULL ? *creds_ : *default_instance_->creds_; } inline ::xtreemfs::pbrpc::FileCredentials* openResponse::mutable_creds() { - _set_bit(0); + set_has_creds(); if (creds_ == NULL) creds_ = new ::xtreemfs::pbrpc::FileCredentials; return creds_; } +inline ::xtreemfs::pbrpc::FileCredentials* openResponse::release_creds() { + clear_has_creds(); + ::xtreemfs::pbrpc::FileCredentials* temp = creds_; + creds_ = NULL; + return temp; +} +inline void openResponse::set_allocated_creds(::xtreemfs::pbrpc::FileCredentials* creds) { + delete creds_; + creds_ = creds; + if (creds) { + set_has_creds(); + } else { + clear_has_creds(); + } +} // required fixed32 timestamp_s = 2; inline bool openResponse::has_timestamp_s() const { - return _has_bit(1); + return (_has_bits_[0] & 0x00000002u) != 0; +} +inline void openResponse::set_has_timestamp_s() { + _has_bits_[0] |= 0x00000002u; +} +inline void openResponse::clear_has_timestamp_s() { + _has_bits_[0] &= ~0x00000002u; } inline void openResponse::clear_timestamp_s() { timestamp_s_ = 0u; - _clear_bit(1); + clear_has_timestamp_s(); } inline ::google::protobuf::uint32 openResponse::timestamp_s() const { return timestamp_s_; } inline void openResponse::set_timestamp_s(::google::protobuf::uint32 value) { - _set_bit(1); + set_has_timestamp_s(); timestamp_s_ = value; } @@ -8433,149 +9192,229 @@ inline void openResponse::set_timestamp_s(::google::protobuf::uint32 value) { // required string volume_name = 1; inline bool readdirRequest::has_volume_name() const { - return _has_bit(0); + return (_has_bits_[0] & 0x00000001u) != 0; +} +inline void readdirRequest::set_has_volume_name() { + _has_bits_[0] |= 0x00000001u; +} +inline void readdirRequest::clear_has_volume_name() { + _has_bits_[0] &= ~0x00000001u; } inline void readdirRequest::clear_volume_name() { - if (volume_name_ != &_default_volume_name_) { + if (volume_name_ != &::google::protobuf::internal::kEmptyString) { volume_name_->clear(); } - _clear_bit(0); + clear_has_volume_name(); } inline const ::std::string& readdirRequest::volume_name() const { return *volume_name_; } inline void readdirRequest::set_volume_name(const ::std::string& value) { - _set_bit(0); - if (volume_name_ == &_default_volume_name_) { + set_has_volume_name(); + if (volume_name_ == &::google::protobuf::internal::kEmptyString) { volume_name_ = new ::std::string; } volume_name_->assign(value); } inline void readdirRequest::set_volume_name(const char* value) { - _set_bit(0); - if (volume_name_ == &_default_volume_name_) { + set_has_volume_name(); + if (volume_name_ == &::google::protobuf::internal::kEmptyString) { volume_name_ = new ::std::string; } volume_name_->assign(value); } inline void readdirRequest::set_volume_name(const char* value, size_t size) { - _set_bit(0); - if (volume_name_ == &_default_volume_name_) { + set_has_volume_name(); + if (volume_name_ == &::google::protobuf::internal::kEmptyString) { volume_name_ = new ::std::string; } volume_name_->assign(reinterpret_cast(value), size); } inline ::std::string* readdirRequest::mutable_volume_name() { - _set_bit(0); - if (volume_name_ == &_default_volume_name_) { + set_has_volume_name(); + if (volume_name_ == &::google::protobuf::internal::kEmptyString) { volume_name_ = new ::std::string; } return volume_name_; } +inline ::std::string* readdirRequest::release_volume_name() { + clear_has_volume_name(); + if (volume_name_ == &::google::protobuf::internal::kEmptyString) { + return NULL; + } else { + ::std::string* temp = volume_name_; + volume_name_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + return temp; + } +} +inline void readdirRequest::set_allocated_volume_name(::std::string* volume_name) { + if (volume_name_ != &::google::protobuf::internal::kEmptyString) { + delete volume_name_; + } + if (volume_name) { + set_has_volume_name(); + volume_name_ = volume_name; + } else { + clear_has_volume_name(); + volume_name_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + } +} // required string path = 2; inline bool readdirRequest::has_path() const { - return _has_bit(1); + return (_has_bits_[0] & 0x00000002u) != 0; +} +inline void readdirRequest::set_has_path() { + _has_bits_[0] |= 0x00000002u; +} +inline void readdirRequest::clear_has_path() { + _has_bits_[0] &= ~0x00000002u; } inline void readdirRequest::clear_path() { - if (path_ != &_default_path_) { + if (path_ != &::google::protobuf::internal::kEmptyString) { path_->clear(); } - _clear_bit(1); + clear_has_path(); } inline const ::std::string& readdirRequest::path() const { return *path_; } inline void readdirRequest::set_path(const ::std::string& value) { - _set_bit(1); - if (path_ == &_default_path_) { + set_has_path(); + if (path_ == &::google::protobuf::internal::kEmptyString) { path_ = new ::std::string; } path_->assign(value); } inline void readdirRequest::set_path(const char* value) { - _set_bit(1); - if (path_ == &_default_path_) { + set_has_path(); + if (path_ == &::google::protobuf::internal::kEmptyString) { path_ = new ::std::string; } path_->assign(value); } inline void readdirRequest::set_path(const char* value, size_t size) { - _set_bit(1); - if (path_ == &_default_path_) { + set_has_path(); + if (path_ == &::google::protobuf::internal::kEmptyString) { path_ = new ::std::string; } path_->assign(reinterpret_cast(value), size); } inline ::std::string* readdirRequest::mutable_path() { - _set_bit(1); - if (path_ == &_default_path_) { + set_has_path(); + if (path_ == &::google::protobuf::internal::kEmptyString) { path_ = new ::std::string; } return path_; } +inline ::std::string* readdirRequest::release_path() { + clear_has_path(); + if (path_ == &::google::protobuf::internal::kEmptyString) { + return NULL; + } else { + ::std::string* temp = path_; + path_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + return temp; + } +} +inline void readdirRequest::set_allocated_path(::std::string* path) { + if (path_ != &::google::protobuf::internal::kEmptyString) { + delete path_; + } + if (path) { + set_has_path(); + path_ = path; + } else { + clear_has_path(); + path_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + } +} // required fixed64 known_etag = 3; inline bool readdirRequest::has_known_etag() const { - return _has_bit(2); + return (_has_bits_[0] & 0x00000004u) != 0; +} +inline void readdirRequest::set_has_known_etag() { + _has_bits_[0] |= 0x00000004u; +} +inline void readdirRequest::clear_has_known_etag() { + _has_bits_[0] &= ~0x00000004u; } inline void readdirRequest::clear_known_etag() { known_etag_ = GOOGLE_ULONGLONG(0); - _clear_bit(2); + clear_has_known_etag(); } inline ::google::protobuf::uint64 readdirRequest::known_etag() const { return known_etag_; } inline void readdirRequest::set_known_etag(::google::protobuf::uint64 value) { - _set_bit(2); + set_has_known_etag(); known_etag_ = value; } // required fixed32 limit_directory_entries_count = 4; inline bool readdirRequest::has_limit_directory_entries_count() const { - return _has_bit(3); + return (_has_bits_[0] & 0x00000008u) != 0; +} +inline void readdirRequest::set_has_limit_directory_entries_count() { + _has_bits_[0] |= 0x00000008u; +} +inline void readdirRequest::clear_has_limit_directory_entries_count() { + _has_bits_[0] &= ~0x00000008u; } inline void readdirRequest::clear_limit_directory_entries_count() { limit_directory_entries_count_ = 0u; - _clear_bit(3); + clear_has_limit_directory_entries_count(); } inline ::google::protobuf::uint32 readdirRequest::limit_directory_entries_count() const { return limit_directory_entries_count_; } inline void readdirRequest::set_limit_directory_entries_count(::google::protobuf::uint32 value) { - _set_bit(3); + set_has_limit_directory_entries_count(); limit_directory_entries_count_ = value; } // required bool names_only = 5; inline bool readdirRequest::has_names_only() const { - return _has_bit(4); + return (_has_bits_[0] & 0x00000010u) != 0; +} +inline void readdirRequest::set_has_names_only() { + _has_bits_[0] |= 0x00000010u; +} +inline void readdirRequest::clear_has_names_only() { + _has_bits_[0] &= ~0x00000010u; } inline void readdirRequest::clear_names_only() { names_only_ = false; - _clear_bit(4); + clear_has_names_only(); } inline bool readdirRequest::names_only() const { return names_only_; } inline void readdirRequest::set_names_only(bool value) { - _set_bit(4); + set_has_names_only(); names_only_ = value; } // required fixed64 seen_directory_entries_count = 6; inline bool readdirRequest::has_seen_directory_entries_count() const { - return _has_bit(5); + return (_has_bits_[0] & 0x00000020u) != 0; +} +inline void readdirRequest::set_has_seen_directory_entries_count() { + _has_bits_[0] |= 0x00000020u; +} +inline void readdirRequest::clear_has_seen_directory_entries_count() { + _has_bits_[0] &= ~0x00000020u; } inline void readdirRequest::clear_seen_directory_entries_count() { seen_directory_entries_count_ = GOOGLE_ULONGLONG(0); - _clear_bit(5); + clear_has_seen_directory_entries_count(); } inline ::google::protobuf::uint64 readdirRequest::seen_directory_entries_count() const { return seen_directory_entries_count_; } inline void readdirRequest::set_seen_directory_entries_count(::google::protobuf::uint64 value) { - _set_bit(5); + set_has_seen_directory_entries_count(); seen_directory_entries_count_ = value; } @@ -8585,87 +9424,143 @@ inline void readdirRequest::set_seen_directory_entries_count(::google::protobuf: // required string volume_name = 1; inline bool readlinkRequest::has_volume_name() const { - return _has_bit(0); + return (_has_bits_[0] & 0x00000001u) != 0; +} +inline void readlinkRequest::set_has_volume_name() { + _has_bits_[0] |= 0x00000001u; +} +inline void readlinkRequest::clear_has_volume_name() { + _has_bits_[0] &= ~0x00000001u; } inline void readlinkRequest::clear_volume_name() { - if (volume_name_ != &_default_volume_name_) { + if (volume_name_ != &::google::protobuf::internal::kEmptyString) { volume_name_->clear(); } - _clear_bit(0); + clear_has_volume_name(); } inline const ::std::string& readlinkRequest::volume_name() const { return *volume_name_; } inline void readlinkRequest::set_volume_name(const ::std::string& value) { - _set_bit(0); - if (volume_name_ == &_default_volume_name_) { + set_has_volume_name(); + if (volume_name_ == &::google::protobuf::internal::kEmptyString) { volume_name_ = new ::std::string; } volume_name_->assign(value); } inline void readlinkRequest::set_volume_name(const char* value) { - _set_bit(0); - if (volume_name_ == &_default_volume_name_) { + set_has_volume_name(); + if (volume_name_ == &::google::protobuf::internal::kEmptyString) { volume_name_ = new ::std::string; } volume_name_->assign(value); } inline void readlinkRequest::set_volume_name(const char* value, size_t size) { - _set_bit(0); - if (volume_name_ == &_default_volume_name_) { + set_has_volume_name(); + if (volume_name_ == &::google::protobuf::internal::kEmptyString) { volume_name_ = new ::std::string; } volume_name_->assign(reinterpret_cast(value), size); } inline ::std::string* readlinkRequest::mutable_volume_name() { - _set_bit(0); - if (volume_name_ == &_default_volume_name_) { + set_has_volume_name(); + if (volume_name_ == &::google::protobuf::internal::kEmptyString) { volume_name_ = new ::std::string; } return volume_name_; } +inline ::std::string* readlinkRequest::release_volume_name() { + clear_has_volume_name(); + if (volume_name_ == &::google::protobuf::internal::kEmptyString) { + return NULL; + } else { + ::std::string* temp = volume_name_; + volume_name_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + return temp; + } +} +inline void readlinkRequest::set_allocated_volume_name(::std::string* volume_name) { + if (volume_name_ != &::google::protobuf::internal::kEmptyString) { + delete volume_name_; + } + if (volume_name) { + set_has_volume_name(); + volume_name_ = volume_name; + } else { + clear_has_volume_name(); + volume_name_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + } +} // required string path = 2; inline bool readlinkRequest::has_path() const { - return _has_bit(1); + return (_has_bits_[0] & 0x00000002u) != 0; +} +inline void readlinkRequest::set_has_path() { + _has_bits_[0] |= 0x00000002u; +} +inline void readlinkRequest::clear_has_path() { + _has_bits_[0] &= ~0x00000002u; } inline void readlinkRequest::clear_path() { - if (path_ != &_default_path_) { + if (path_ != &::google::protobuf::internal::kEmptyString) { path_->clear(); } - _clear_bit(1); + clear_has_path(); } inline const ::std::string& readlinkRequest::path() const { return *path_; } inline void readlinkRequest::set_path(const ::std::string& value) { - _set_bit(1); - if (path_ == &_default_path_) { + set_has_path(); + if (path_ == &::google::protobuf::internal::kEmptyString) { path_ = new ::std::string; } path_->assign(value); } inline void readlinkRequest::set_path(const char* value) { - _set_bit(1); - if (path_ == &_default_path_) { + set_has_path(); + if (path_ == &::google::protobuf::internal::kEmptyString) { path_ = new ::std::string; } path_->assign(value); } inline void readlinkRequest::set_path(const char* value, size_t size) { - _set_bit(1); - if (path_ == &_default_path_) { + set_has_path(); + if (path_ == &::google::protobuf::internal::kEmptyString) { path_ = new ::std::string; } path_->assign(reinterpret_cast(value), size); } inline ::std::string* readlinkRequest::mutable_path() { - _set_bit(1); - if (path_ == &_default_path_) { + set_has_path(); + if (path_ == &::google::protobuf::internal::kEmptyString) { path_ = new ::std::string; } return path_; } +inline ::std::string* readlinkRequest::release_path() { + clear_has_path(); + if (path_ == &::google::protobuf::internal::kEmptyString) { + return NULL; + } else { + ::std::string* temp = path_; + path_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + return temp; + } +} +inline void readlinkRequest::set_allocated_path(::std::string* path) { + if (path_ != &::google::protobuf::internal::kEmptyString) { + delete path_; + } + if (path) { + set_has_path(); + path_ = path; + } else { + clear_has_path(); + path_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + } +} // ------------------------------------------------------------------- @@ -8721,129 +9616,213 @@ readlinkResponse::mutable_link_target_path() { // required string volume_name = 1; inline bool removexattrRequest::has_volume_name() const { - return _has_bit(0); + return (_has_bits_[0] & 0x00000001u) != 0; +} +inline void removexattrRequest::set_has_volume_name() { + _has_bits_[0] |= 0x00000001u; +} +inline void removexattrRequest::clear_has_volume_name() { + _has_bits_[0] &= ~0x00000001u; } inline void removexattrRequest::clear_volume_name() { - if (volume_name_ != &_default_volume_name_) { + if (volume_name_ != &::google::protobuf::internal::kEmptyString) { volume_name_->clear(); } - _clear_bit(0); + clear_has_volume_name(); } inline const ::std::string& removexattrRequest::volume_name() const { return *volume_name_; } inline void removexattrRequest::set_volume_name(const ::std::string& value) { - _set_bit(0); - if (volume_name_ == &_default_volume_name_) { + set_has_volume_name(); + if (volume_name_ == &::google::protobuf::internal::kEmptyString) { volume_name_ = new ::std::string; } volume_name_->assign(value); } inline void removexattrRequest::set_volume_name(const char* value) { - _set_bit(0); - if (volume_name_ == &_default_volume_name_) { + set_has_volume_name(); + if (volume_name_ == &::google::protobuf::internal::kEmptyString) { volume_name_ = new ::std::string; } volume_name_->assign(value); } inline void removexattrRequest::set_volume_name(const char* value, size_t size) { - _set_bit(0); - if (volume_name_ == &_default_volume_name_) { + set_has_volume_name(); + if (volume_name_ == &::google::protobuf::internal::kEmptyString) { volume_name_ = new ::std::string; } volume_name_->assign(reinterpret_cast(value), size); } inline ::std::string* removexattrRequest::mutable_volume_name() { - _set_bit(0); - if (volume_name_ == &_default_volume_name_) { + set_has_volume_name(); + if (volume_name_ == &::google::protobuf::internal::kEmptyString) { volume_name_ = new ::std::string; } return volume_name_; } +inline ::std::string* removexattrRequest::release_volume_name() { + clear_has_volume_name(); + if (volume_name_ == &::google::protobuf::internal::kEmptyString) { + return NULL; + } else { + ::std::string* temp = volume_name_; + volume_name_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + return temp; + } +} +inline void removexattrRequest::set_allocated_volume_name(::std::string* volume_name) { + if (volume_name_ != &::google::protobuf::internal::kEmptyString) { + delete volume_name_; + } + if (volume_name) { + set_has_volume_name(); + volume_name_ = volume_name; + } else { + clear_has_volume_name(); + volume_name_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + } +} // required string path = 2; inline bool removexattrRequest::has_path() const { - return _has_bit(1); + return (_has_bits_[0] & 0x00000002u) != 0; +} +inline void removexattrRequest::set_has_path() { + _has_bits_[0] |= 0x00000002u; +} +inline void removexattrRequest::clear_has_path() { + _has_bits_[0] &= ~0x00000002u; } inline void removexattrRequest::clear_path() { - if (path_ != &_default_path_) { + if (path_ != &::google::protobuf::internal::kEmptyString) { path_->clear(); } - _clear_bit(1); + clear_has_path(); } inline const ::std::string& removexattrRequest::path() const { return *path_; } inline void removexattrRequest::set_path(const ::std::string& value) { - _set_bit(1); - if (path_ == &_default_path_) { + set_has_path(); + if (path_ == &::google::protobuf::internal::kEmptyString) { path_ = new ::std::string; } path_->assign(value); } inline void removexattrRequest::set_path(const char* value) { - _set_bit(1); - if (path_ == &_default_path_) { + set_has_path(); + if (path_ == &::google::protobuf::internal::kEmptyString) { path_ = new ::std::string; } path_->assign(value); } inline void removexattrRequest::set_path(const char* value, size_t size) { - _set_bit(1); - if (path_ == &_default_path_) { + set_has_path(); + if (path_ == &::google::protobuf::internal::kEmptyString) { path_ = new ::std::string; } path_->assign(reinterpret_cast(value), size); } inline ::std::string* removexattrRequest::mutable_path() { - _set_bit(1); - if (path_ == &_default_path_) { + set_has_path(); + if (path_ == &::google::protobuf::internal::kEmptyString) { path_ = new ::std::string; } return path_; } +inline ::std::string* removexattrRequest::release_path() { + clear_has_path(); + if (path_ == &::google::protobuf::internal::kEmptyString) { + return NULL; + } else { + ::std::string* temp = path_; + path_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + return temp; + } +} +inline void removexattrRequest::set_allocated_path(::std::string* path) { + if (path_ != &::google::protobuf::internal::kEmptyString) { + delete path_; + } + if (path) { + set_has_path(); + path_ = path; + } else { + clear_has_path(); + path_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + } +} // required string name = 3; inline bool removexattrRequest::has_name() const { - return _has_bit(2); + return (_has_bits_[0] & 0x00000004u) != 0; +} +inline void removexattrRequest::set_has_name() { + _has_bits_[0] |= 0x00000004u; +} +inline void removexattrRequest::clear_has_name() { + _has_bits_[0] &= ~0x00000004u; } inline void removexattrRequest::clear_name() { - if (name_ != &_default_name_) { + if (name_ != &::google::protobuf::internal::kEmptyString) { name_->clear(); } - _clear_bit(2); + clear_has_name(); } inline const ::std::string& removexattrRequest::name() const { return *name_; } inline void removexattrRequest::set_name(const ::std::string& value) { - _set_bit(2); - if (name_ == &_default_name_) { + set_has_name(); + if (name_ == &::google::protobuf::internal::kEmptyString) { name_ = new ::std::string; } name_->assign(value); } inline void removexattrRequest::set_name(const char* value) { - _set_bit(2); - if (name_ == &_default_name_) { + set_has_name(); + if (name_ == &::google::protobuf::internal::kEmptyString) { name_ = new ::std::string; } name_->assign(value); } inline void removexattrRequest::set_name(const char* value, size_t size) { - _set_bit(2); - if (name_ == &_default_name_) { + set_has_name(); + if (name_ == &::google::protobuf::internal::kEmptyString) { name_ = new ::std::string; } name_->assign(reinterpret_cast(value), size); } inline ::std::string* removexattrRequest::mutable_name() { - _set_bit(2); - if (name_ == &_default_name_) { + set_has_name(); + if (name_ == &::google::protobuf::internal::kEmptyString) { name_ = new ::std::string; } return name_; } +inline ::std::string* removexattrRequest::release_name() { + clear_has_name(); + if (name_ == &::google::protobuf::internal::kEmptyString) { + return NULL; + } else { + ::std::string* temp = name_; + name_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + return temp; + } +} +inline void removexattrRequest::set_allocated_name(::std::string* name) { + if (name_ != &::google::protobuf::internal::kEmptyString) { + delete name_; + } + if (name) { + set_has_name(); + name_ = name; + } else { + clear_has_name(); + name_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + } +} // ------------------------------------------------------------------- @@ -8851,129 +9830,213 @@ inline ::std::string* removexattrRequest::mutable_name() { // required string volume_name = 1; inline bool renameRequest::has_volume_name() const { - return _has_bit(0); + return (_has_bits_[0] & 0x00000001u) != 0; +} +inline void renameRequest::set_has_volume_name() { + _has_bits_[0] |= 0x00000001u; +} +inline void renameRequest::clear_has_volume_name() { + _has_bits_[0] &= ~0x00000001u; } inline void renameRequest::clear_volume_name() { - if (volume_name_ != &_default_volume_name_) { + if (volume_name_ != &::google::protobuf::internal::kEmptyString) { volume_name_->clear(); } - _clear_bit(0); + clear_has_volume_name(); } inline const ::std::string& renameRequest::volume_name() const { return *volume_name_; } inline void renameRequest::set_volume_name(const ::std::string& value) { - _set_bit(0); - if (volume_name_ == &_default_volume_name_) { + set_has_volume_name(); + if (volume_name_ == &::google::protobuf::internal::kEmptyString) { volume_name_ = new ::std::string; } volume_name_->assign(value); } inline void renameRequest::set_volume_name(const char* value) { - _set_bit(0); - if (volume_name_ == &_default_volume_name_) { + set_has_volume_name(); + if (volume_name_ == &::google::protobuf::internal::kEmptyString) { volume_name_ = new ::std::string; } volume_name_->assign(value); } inline void renameRequest::set_volume_name(const char* value, size_t size) { - _set_bit(0); - if (volume_name_ == &_default_volume_name_) { + set_has_volume_name(); + if (volume_name_ == &::google::protobuf::internal::kEmptyString) { volume_name_ = new ::std::string; } volume_name_->assign(reinterpret_cast(value), size); } inline ::std::string* renameRequest::mutable_volume_name() { - _set_bit(0); - if (volume_name_ == &_default_volume_name_) { + set_has_volume_name(); + if (volume_name_ == &::google::protobuf::internal::kEmptyString) { volume_name_ = new ::std::string; } return volume_name_; } +inline ::std::string* renameRequest::release_volume_name() { + clear_has_volume_name(); + if (volume_name_ == &::google::protobuf::internal::kEmptyString) { + return NULL; + } else { + ::std::string* temp = volume_name_; + volume_name_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + return temp; + } +} +inline void renameRequest::set_allocated_volume_name(::std::string* volume_name) { + if (volume_name_ != &::google::protobuf::internal::kEmptyString) { + delete volume_name_; + } + if (volume_name) { + set_has_volume_name(); + volume_name_ = volume_name; + } else { + clear_has_volume_name(); + volume_name_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + } +} // required string source_path = 2; inline bool renameRequest::has_source_path() const { - return _has_bit(1); + return (_has_bits_[0] & 0x00000002u) != 0; +} +inline void renameRequest::set_has_source_path() { + _has_bits_[0] |= 0x00000002u; +} +inline void renameRequest::clear_has_source_path() { + _has_bits_[0] &= ~0x00000002u; } inline void renameRequest::clear_source_path() { - if (source_path_ != &_default_source_path_) { + if (source_path_ != &::google::protobuf::internal::kEmptyString) { source_path_->clear(); } - _clear_bit(1); + clear_has_source_path(); } inline const ::std::string& renameRequest::source_path() const { return *source_path_; } inline void renameRequest::set_source_path(const ::std::string& value) { - _set_bit(1); - if (source_path_ == &_default_source_path_) { + set_has_source_path(); + if (source_path_ == &::google::protobuf::internal::kEmptyString) { source_path_ = new ::std::string; } source_path_->assign(value); } inline void renameRequest::set_source_path(const char* value) { - _set_bit(1); - if (source_path_ == &_default_source_path_) { + set_has_source_path(); + if (source_path_ == &::google::protobuf::internal::kEmptyString) { source_path_ = new ::std::string; } source_path_->assign(value); } inline void renameRequest::set_source_path(const char* value, size_t size) { - _set_bit(1); - if (source_path_ == &_default_source_path_) { + set_has_source_path(); + if (source_path_ == &::google::protobuf::internal::kEmptyString) { source_path_ = new ::std::string; } source_path_->assign(reinterpret_cast(value), size); } inline ::std::string* renameRequest::mutable_source_path() { - _set_bit(1); - if (source_path_ == &_default_source_path_) { + set_has_source_path(); + if (source_path_ == &::google::protobuf::internal::kEmptyString) { source_path_ = new ::std::string; } return source_path_; } +inline ::std::string* renameRequest::release_source_path() { + clear_has_source_path(); + if (source_path_ == &::google::protobuf::internal::kEmptyString) { + return NULL; + } else { + ::std::string* temp = source_path_; + source_path_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + return temp; + } +} +inline void renameRequest::set_allocated_source_path(::std::string* source_path) { + if (source_path_ != &::google::protobuf::internal::kEmptyString) { + delete source_path_; + } + if (source_path) { + set_has_source_path(); + source_path_ = source_path; + } else { + clear_has_source_path(); + source_path_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + } +} // required string target_path = 3; inline bool renameRequest::has_target_path() const { - return _has_bit(2); + return (_has_bits_[0] & 0x00000004u) != 0; +} +inline void renameRequest::set_has_target_path() { + _has_bits_[0] |= 0x00000004u; +} +inline void renameRequest::clear_has_target_path() { + _has_bits_[0] &= ~0x00000004u; } inline void renameRequest::clear_target_path() { - if (target_path_ != &_default_target_path_) { + if (target_path_ != &::google::protobuf::internal::kEmptyString) { target_path_->clear(); } - _clear_bit(2); + clear_has_target_path(); } inline const ::std::string& renameRequest::target_path() const { return *target_path_; } inline void renameRequest::set_target_path(const ::std::string& value) { - _set_bit(2); - if (target_path_ == &_default_target_path_) { + set_has_target_path(); + if (target_path_ == &::google::protobuf::internal::kEmptyString) { target_path_ = new ::std::string; } target_path_->assign(value); } inline void renameRequest::set_target_path(const char* value) { - _set_bit(2); - if (target_path_ == &_default_target_path_) { + set_has_target_path(); + if (target_path_ == &::google::protobuf::internal::kEmptyString) { target_path_ = new ::std::string; } target_path_->assign(value); } inline void renameRequest::set_target_path(const char* value, size_t size) { - _set_bit(2); - if (target_path_ == &_default_target_path_) { + set_has_target_path(); + if (target_path_ == &::google::protobuf::internal::kEmptyString) { target_path_ = new ::std::string; } target_path_->assign(reinterpret_cast(value), size); } inline ::std::string* renameRequest::mutable_target_path() { - _set_bit(2); - if (target_path_ == &_default_target_path_) { + set_has_target_path(); + if (target_path_ == &::google::protobuf::internal::kEmptyString) { target_path_ = new ::std::string; } return target_path_; } +inline ::std::string* renameRequest::release_target_path() { + clear_has_target_path(); + if (target_path_ == &::google::protobuf::internal::kEmptyString) { + return NULL; + } else { + ::std::string* temp = target_path_; + target_path_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + return temp; + } +} +inline void renameRequest::set_allocated_target_path(::std::string* target_path) { + if (target_path_ != &::google::protobuf::internal::kEmptyString) { + delete target_path_; + } + if (target_path) { + set_has_target_path(); + target_path_ = target_path; + } else { + clear_has_target_path(); + target_path_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + } +} // ------------------------------------------------------------------- @@ -8981,36 +10044,63 @@ inline ::std::string* renameRequest::mutable_target_path() { // required fixed32 timestamp_s = 1; inline bool renameResponse::has_timestamp_s() const { - return _has_bit(0); + return (_has_bits_[0] & 0x00000001u) != 0; +} +inline void renameResponse::set_has_timestamp_s() { + _has_bits_[0] |= 0x00000001u; +} +inline void renameResponse::clear_has_timestamp_s() { + _has_bits_[0] &= ~0x00000001u; } inline void renameResponse::clear_timestamp_s() { timestamp_s_ = 0u; - _clear_bit(0); + clear_has_timestamp_s(); } inline ::google::protobuf::uint32 renameResponse::timestamp_s() const { return timestamp_s_; } inline void renameResponse::set_timestamp_s(::google::protobuf::uint32 value) { - _set_bit(0); + set_has_timestamp_s(); timestamp_s_ = value; } // optional .xtreemfs.pbrpc.FileCredentials creds = 2; inline bool renameResponse::has_creds() const { - return _has_bit(1); + return (_has_bits_[0] & 0x00000002u) != 0; +} +inline void renameResponse::set_has_creds() { + _has_bits_[0] |= 0x00000002u; +} +inline void renameResponse::clear_has_creds() { + _has_bits_[0] &= ~0x00000002u; } inline void renameResponse::clear_creds() { if (creds_ != NULL) creds_->::xtreemfs::pbrpc::FileCredentials::Clear(); - _clear_bit(1); + clear_has_creds(); } inline const ::xtreemfs::pbrpc::FileCredentials& renameResponse::creds() const { return creds_ != NULL ? *creds_ : *default_instance_->creds_; } inline ::xtreemfs::pbrpc::FileCredentials* renameResponse::mutable_creds() { - _set_bit(1); + set_has_creds(); if (creds_ == NULL) creds_ = new ::xtreemfs::pbrpc::FileCredentials; return creds_; } +inline ::xtreemfs::pbrpc::FileCredentials* renameResponse::release_creds() { + clear_has_creds(); + ::xtreemfs::pbrpc::FileCredentials* temp = creds_; + creds_ = NULL; + return temp; +} +inline void renameResponse::set_allocated_creds(::xtreemfs::pbrpc::FileCredentials* creds) { + delete creds_; + creds_ = creds; + if (creds) { + set_has_creds(); + } else { + clear_has_creds(); + } +} // ------------------------------------------------------------------- @@ -9018,87 +10108,143 @@ inline ::xtreemfs::pbrpc::FileCredentials* renameResponse::mutable_creds() { // required string volume_name = 1; inline bool rmdirRequest::has_volume_name() const { - return _has_bit(0); + return (_has_bits_[0] & 0x00000001u) != 0; +} +inline void rmdirRequest::set_has_volume_name() { + _has_bits_[0] |= 0x00000001u; +} +inline void rmdirRequest::clear_has_volume_name() { + _has_bits_[0] &= ~0x00000001u; } inline void rmdirRequest::clear_volume_name() { - if (volume_name_ != &_default_volume_name_) { + if (volume_name_ != &::google::protobuf::internal::kEmptyString) { volume_name_->clear(); } - _clear_bit(0); + clear_has_volume_name(); } inline const ::std::string& rmdirRequest::volume_name() const { return *volume_name_; } inline void rmdirRequest::set_volume_name(const ::std::string& value) { - _set_bit(0); - if (volume_name_ == &_default_volume_name_) { + set_has_volume_name(); + if (volume_name_ == &::google::protobuf::internal::kEmptyString) { volume_name_ = new ::std::string; } volume_name_->assign(value); } inline void rmdirRequest::set_volume_name(const char* value) { - _set_bit(0); - if (volume_name_ == &_default_volume_name_) { + set_has_volume_name(); + if (volume_name_ == &::google::protobuf::internal::kEmptyString) { volume_name_ = new ::std::string; } volume_name_->assign(value); } inline void rmdirRequest::set_volume_name(const char* value, size_t size) { - _set_bit(0); - if (volume_name_ == &_default_volume_name_) { + set_has_volume_name(); + if (volume_name_ == &::google::protobuf::internal::kEmptyString) { volume_name_ = new ::std::string; } volume_name_->assign(reinterpret_cast(value), size); } inline ::std::string* rmdirRequest::mutable_volume_name() { - _set_bit(0); - if (volume_name_ == &_default_volume_name_) { + set_has_volume_name(); + if (volume_name_ == &::google::protobuf::internal::kEmptyString) { volume_name_ = new ::std::string; } return volume_name_; } +inline ::std::string* rmdirRequest::release_volume_name() { + clear_has_volume_name(); + if (volume_name_ == &::google::protobuf::internal::kEmptyString) { + return NULL; + } else { + ::std::string* temp = volume_name_; + volume_name_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + return temp; + } +} +inline void rmdirRequest::set_allocated_volume_name(::std::string* volume_name) { + if (volume_name_ != &::google::protobuf::internal::kEmptyString) { + delete volume_name_; + } + if (volume_name) { + set_has_volume_name(); + volume_name_ = volume_name; + } else { + clear_has_volume_name(); + volume_name_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + } +} // required string path = 2; inline bool rmdirRequest::has_path() const { - return _has_bit(1); + return (_has_bits_[0] & 0x00000002u) != 0; +} +inline void rmdirRequest::set_has_path() { + _has_bits_[0] |= 0x00000002u; +} +inline void rmdirRequest::clear_has_path() { + _has_bits_[0] &= ~0x00000002u; } inline void rmdirRequest::clear_path() { - if (path_ != &_default_path_) { + if (path_ != &::google::protobuf::internal::kEmptyString) { path_->clear(); } - _clear_bit(1); + clear_has_path(); } inline const ::std::string& rmdirRequest::path() const { return *path_; } inline void rmdirRequest::set_path(const ::std::string& value) { - _set_bit(1); - if (path_ == &_default_path_) { + set_has_path(); + if (path_ == &::google::protobuf::internal::kEmptyString) { path_ = new ::std::string; } path_->assign(value); } inline void rmdirRequest::set_path(const char* value) { - _set_bit(1); - if (path_ == &_default_path_) { + set_has_path(); + if (path_ == &::google::protobuf::internal::kEmptyString) { path_ = new ::std::string; } path_->assign(value); } inline void rmdirRequest::set_path(const char* value, size_t size) { - _set_bit(1); - if (path_ == &_default_path_) { + set_has_path(); + if (path_ == &::google::protobuf::internal::kEmptyString) { path_ = new ::std::string; } path_->assign(reinterpret_cast(value), size); } inline ::std::string* rmdirRequest::mutable_path() { - _set_bit(1); - if (path_ == &_default_path_) { + set_has_path(); + if (path_ == &::google::protobuf::internal::kEmptyString) { path_ = new ::std::string; } return path_; } +inline ::std::string* rmdirRequest::release_path() { + clear_has_path(); + if (path_ == &::google::protobuf::internal::kEmptyString) { + return NULL; + } else { + ::std::string* temp = path_; + path_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + return temp; + } +} +inline void rmdirRequest::set_allocated_path(::std::string* path) { + if (path_ != &::google::protobuf::internal::kEmptyString) { + delete path_; + } + if (path) { + set_has_path(); + path_ = path; + } else { + clear_has_path(); + path_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + } +} // ------------------------------------------------------------------- @@ -9106,118 +10252,201 @@ inline ::std::string* rmdirRequest::mutable_path() { // required string volume_name = 1; inline bool setattrRequest::has_volume_name() const { - return _has_bit(0); + return (_has_bits_[0] & 0x00000001u) != 0; +} +inline void setattrRequest::set_has_volume_name() { + _has_bits_[0] |= 0x00000001u; +} +inline void setattrRequest::clear_has_volume_name() { + _has_bits_[0] &= ~0x00000001u; } inline void setattrRequest::clear_volume_name() { - if (volume_name_ != &_default_volume_name_) { + if (volume_name_ != &::google::protobuf::internal::kEmptyString) { volume_name_->clear(); } - _clear_bit(0); + clear_has_volume_name(); } inline const ::std::string& setattrRequest::volume_name() const { return *volume_name_; } inline void setattrRequest::set_volume_name(const ::std::string& value) { - _set_bit(0); - if (volume_name_ == &_default_volume_name_) { + set_has_volume_name(); + if (volume_name_ == &::google::protobuf::internal::kEmptyString) { volume_name_ = new ::std::string; } volume_name_->assign(value); } inline void setattrRequest::set_volume_name(const char* value) { - _set_bit(0); - if (volume_name_ == &_default_volume_name_) { + set_has_volume_name(); + if (volume_name_ == &::google::protobuf::internal::kEmptyString) { volume_name_ = new ::std::string; } volume_name_->assign(value); } inline void setattrRequest::set_volume_name(const char* value, size_t size) { - _set_bit(0); - if (volume_name_ == &_default_volume_name_) { + set_has_volume_name(); + if (volume_name_ == &::google::protobuf::internal::kEmptyString) { volume_name_ = new ::std::string; } volume_name_->assign(reinterpret_cast(value), size); } inline ::std::string* setattrRequest::mutable_volume_name() { - _set_bit(0); - if (volume_name_ == &_default_volume_name_) { + set_has_volume_name(); + if (volume_name_ == &::google::protobuf::internal::kEmptyString) { volume_name_ = new ::std::string; } return volume_name_; } +inline ::std::string* setattrRequest::release_volume_name() { + clear_has_volume_name(); + if (volume_name_ == &::google::protobuf::internal::kEmptyString) { + return NULL; + } else { + ::std::string* temp = volume_name_; + volume_name_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + return temp; + } +} +inline void setattrRequest::set_allocated_volume_name(::std::string* volume_name) { + if (volume_name_ != &::google::protobuf::internal::kEmptyString) { + delete volume_name_; + } + if (volume_name) { + set_has_volume_name(); + volume_name_ = volume_name; + } else { + clear_has_volume_name(); + volume_name_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + } +} // required string path = 2; inline bool setattrRequest::has_path() const { - return _has_bit(1); + return (_has_bits_[0] & 0x00000002u) != 0; +} +inline void setattrRequest::set_has_path() { + _has_bits_[0] |= 0x00000002u; +} +inline void setattrRequest::clear_has_path() { + _has_bits_[0] &= ~0x00000002u; } inline void setattrRequest::clear_path() { - if (path_ != &_default_path_) { + if (path_ != &::google::protobuf::internal::kEmptyString) { path_->clear(); } - _clear_bit(1); + clear_has_path(); } inline const ::std::string& setattrRequest::path() const { return *path_; } inline void setattrRequest::set_path(const ::std::string& value) { - _set_bit(1); - if (path_ == &_default_path_) { + set_has_path(); + if (path_ == &::google::protobuf::internal::kEmptyString) { path_ = new ::std::string; } path_->assign(value); } inline void setattrRequest::set_path(const char* value) { - _set_bit(1); - if (path_ == &_default_path_) { + set_has_path(); + if (path_ == &::google::protobuf::internal::kEmptyString) { path_ = new ::std::string; } path_->assign(value); } inline void setattrRequest::set_path(const char* value, size_t size) { - _set_bit(1); - if (path_ == &_default_path_) { + set_has_path(); + if (path_ == &::google::protobuf::internal::kEmptyString) { path_ = new ::std::string; } path_->assign(reinterpret_cast(value), size); } inline ::std::string* setattrRequest::mutable_path() { - _set_bit(1); - if (path_ == &_default_path_) { + set_has_path(); + if (path_ == &::google::protobuf::internal::kEmptyString) { path_ = new ::std::string; } return path_; } +inline ::std::string* setattrRequest::release_path() { + clear_has_path(); + if (path_ == &::google::protobuf::internal::kEmptyString) { + return NULL; + } else { + ::std::string* temp = path_; + path_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + return temp; + } +} +inline void setattrRequest::set_allocated_path(::std::string* path) { + if (path_ != &::google::protobuf::internal::kEmptyString) { + delete path_; + } + if (path) { + set_has_path(); + path_ = path; + } else { + clear_has_path(); + path_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + } +} // required .xtreemfs.pbrpc.Stat stbuf = 3; inline bool setattrRequest::has_stbuf() const { - return _has_bit(2); + return (_has_bits_[0] & 0x00000004u) != 0; +} +inline void setattrRequest::set_has_stbuf() { + _has_bits_[0] |= 0x00000004u; +} +inline void setattrRequest::clear_has_stbuf() { + _has_bits_[0] &= ~0x00000004u; } inline void setattrRequest::clear_stbuf() { if (stbuf_ != NULL) stbuf_->::xtreemfs::pbrpc::Stat::Clear(); - _clear_bit(2); + clear_has_stbuf(); } inline const ::xtreemfs::pbrpc::Stat& setattrRequest::stbuf() const { return stbuf_ != NULL ? *stbuf_ : *default_instance_->stbuf_; } inline ::xtreemfs::pbrpc::Stat* setattrRequest::mutable_stbuf() { - _set_bit(2); + set_has_stbuf(); if (stbuf_ == NULL) stbuf_ = new ::xtreemfs::pbrpc::Stat; return stbuf_; } +inline ::xtreemfs::pbrpc::Stat* setattrRequest::release_stbuf() { + clear_has_stbuf(); + ::xtreemfs::pbrpc::Stat* temp = stbuf_; + stbuf_ = NULL; + return temp; +} +inline void setattrRequest::set_allocated_stbuf(::xtreemfs::pbrpc::Stat* stbuf) { + delete stbuf_; + stbuf_ = stbuf; + if (stbuf) { + set_has_stbuf(); + } else { + clear_has_stbuf(); + } +} // required fixed32 to_set = 4; inline bool setattrRequest::has_to_set() const { - return _has_bit(3); + return (_has_bits_[0] & 0x00000008u) != 0; +} +inline void setattrRequest::set_has_to_set() { + _has_bits_[0] |= 0x00000008u; +} +inline void setattrRequest::clear_has_to_set() { + _has_bits_[0] &= ~0x00000008u; } inline void setattrRequest::clear_to_set() { to_set_ = 0u; - _clear_bit(3); + clear_has_to_set(); } inline ::google::protobuf::uint32 setattrRequest::to_set() const { return to_set_; } inline void setattrRequest::set_to_set(::google::protobuf::uint32 value) { - _set_bit(3); + set_has_to_set(); to_set_ = value; } @@ -9227,227 +10456,373 @@ inline void setattrRequest::set_to_set(::google::protobuf::uint32 value) { // required string volume_name = 1; inline bool setxattrRequest::has_volume_name() const { - return _has_bit(0); + return (_has_bits_[0] & 0x00000001u) != 0; +} +inline void setxattrRequest::set_has_volume_name() { + _has_bits_[0] |= 0x00000001u; +} +inline void setxattrRequest::clear_has_volume_name() { + _has_bits_[0] &= ~0x00000001u; } inline void setxattrRequest::clear_volume_name() { - if (volume_name_ != &_default_volume_name_) { + if (volume_name_ != &::google::protobuf::internal::kEmptyString) { volume_name_->clear(); } - _clear_bit(0); + clear_has_volume_name(); } inline const ::std::string& setxattrRequest::volume_name() const { return *volume_name_; } inline void setxattrRequest::set_volume_name(const ::std::string& value) { - _set_bit(0); - if (volume_name_ == &_default_volume_name_) { + set_has_volume_name(); + if (volume_name_ == &::google::protobuf::internal::kEmptyString) { volume_name_ = new ::std::string; } volume_name_->assign(value); } inline void setxattrRequest::set_volume_name(const char* value) { - _set_bit(0); - if (volume_name_ == &_default_volume_name_) { + set_has_volume_name(); + if (volume_name_ == &::google::protobuf::internal::kEmptyString) { volume_name_ = new ::std::string; } volume_name_->assign(value); } inline void setxattrRequest::set_volume_name(const char* value, size_t size) { - _set_bit(0); - if (volume_name_ == &_default_volume_name_) { + set_has_volume_name(); + if (volume_name_ == &::google::protobuf::internal::kEmptyString) { volume_name_ = new ::std::string; } volume_name_->assign(reinterpret_cast(value), size); } inline ::std::string* setxattrRequest::mutable_volume_name() { - _set_bit(0); - if (volume_name_ == &_default_volume_name_) { + set_has_volume_name(); + if (volume_name_ == &::google::protobuf::internal::kEmptyString) { volume_name_ = new ::std::string; } return volume_name_; } +inline ::std::string* setxattrRequest::release_volume_name() { + clear_has_volume_name(); + if (volume_name_ == &::google::protobuf::internal::kEmptyString) { + return NULL; + } else { + ::std::string* temp = volume_name_; + volume_name_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + return temp; + } +} +inline void setxattrRequest::set_allocated_volume_name(::std::string* volume_name) { + if (volume_name_ != &::google::protobuf::internal::kEmptyString) { + delete volume_name_; + } + if (volume_name) { + set_has_volume_name(); + volume_name_ = volume_name; + } else { + clear_has_volume_name(); + volume_name_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + } +} // required string path = 2; inline bool setxattrRequest::has_path() const { - return _has_bit(1); + return (_has_bits_[0] & 0x00000002u) != 0; +} +inline void setxattrRequest::set_has_path() { + _has_bits_[0] |= 0x00000002u; +} +inline void setxattrRequest::clear_has_path() { + _has_bits_[0] &= ~0x00000002u; } inline void setxattrRequest::clear_path() { - if (path_ != &_default_path_) { + if (path_ != &::google::protobuf::internal::kEmptyString) { path_->clear(); } - _clear_bit(1); + clear_has_path(); } inline const ::std::string& setxattrRequest::path() const { return *path_; } inline void setxattrRequest::set_path(const ::std::string& value) { - _set_bit(1); - if (path_ == &_default_path_) { + set_has_path(); + if (path_ == &::google::protobuf::internal::kEmptyString) { path_ = new ::std::string; } path_->assign(value); } inline void setxattrRequest::set_path(const char* value) { - _set_bit(1); - if (path_ == &_default_path_) { + set_has_path(); + if (path_ == &::google::protobuf::internal::kEmptyString) { path_ = new ::std::string; } path_->assign(value); } inline void setxattrRequest::set_path(const char* value, size_t size) { - _set_bit(1); - if (path_ == &_default_path_) { + set_has_path(); + if (path_ == &::google::protobuf::internal::kEmptyString) { path_ = new ::std::string; } path_->assign(reinterpret_cast(value), size); } inline ::std::string* setxattrRequest::mutable_path() { - _set_bit(1); - if (path_ == &_default_path_) { + set_has_path(); + if (path_ == &::google::protobuf::internal::kEmptyString) { path_ = new ::std::string; } return path_; } +inline ::std::string* setxattrRequest::release_path() { + clear_has_path(); + if (path_ == &::google::protobuf::internal::kEmptyString) { + return NULL; + } else { + ::std::string* temp = path_; + path_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + return temp; + } +} +inline void setxattrRequest::set_allocated_path(::std::string* path) { + if (path_ != &::google::protobuf::internal::kEmptyString) { + delete path_; + } + if (path) { + set_has_path(); + path_ = path; + } else { + clear_has_path(); + path_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + } +} // required string name = 3; inline bool setxattrRequest::has_name() const { - return _has_bit(2); + return (_has_bits_[0] & 0x00000004u) != 0; +} +inline void setxattrRequest::set_has_name() { + _has_bits_[0] |= 0x00000004u; +} +inline void setxattrRequest::clear_has_name() { + _has_bits_[0] &= ~0x00000004u; } inline void setxattrRequest::clear_name() { - if (name_ != &_default_name_) { + if (name_ != &::google::protobuf::internal::kEmptyString) { name_->clear(); } - _clear_bit(2); + clear_has_name(); } inline const ::std::string& setxattrRequest::name() const { return *name_; } inline void setxattrRequest::set_name(const ::std::string& value) { - _set_bit(2); - if (name_ == &_default_name_) { + set_has_name(); + if (name_ == &::google::protobuf::internal::kEmptyString) { name_ = new ::std::string; } name_->assign(value); } inline void setxattrRequest::set_name(const char* value) { - _set_bit(2); - if (name_ == &_default_name_) { + set_has_name(); + if (name_ == &::google::protobuf::internal::kEmptyString) { name_ = new ::std::string; } name_->assign(value); } inline void setxattrRequest::set_name(const char* value, size_t size) { - _set_bit(2); - if (name_ == &_default_name_) { + set_has_name(); + if (name_ == &::google::protobuf::internal::kEmptyString) { name_ = new ::std::string; } name_->assign(reinterpret_cast(value), size); } inline ::std::string* setxattrRequest::mutable_name() { - _set_bit(2); - if (name_ == &_default_name_) { + set_has_name(); + if (name_ == &::google::protobuf::internal::kEmptyString) { name_ = new ::std::string; } return name_; } +inline ::std::string* setxattrRequest::release_name() { + clear_has_name(); + if (name_ == &::google::protobuf::internal::kEmptyString) { + return NULL; + } else { + ::std::string* temp = name_; + name_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + return temp; + } +} +inline void setxattrRequest::set_allocated_name(::std::string* name) { + if (name_ != &::google::protobuf::internal::kEmptyString) { + delete name_; + } + if (name) { + set_has_name(); + name_ = name; + } else { + clear_has_name(); + name_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + } +} // required string value = 4; inline bool setxattrRequest::has_value() const { - return _has_bit(3); + return (_has_bits_[0] & 0x00000008u) != 0; +} +inline void setxattrRequest::set_has_value() { + _has_bits_[0] |= 0x00000008u; +} +inline void setxattrRequest::clear_has_value() { + _has_bits_[0] &= ~0x00000008u; } inline void setxattrRequest::clear_value() { - if (value_ != &_default_value_) { + if (value_ != &::google::protobuf::internal::kEmptyString) { value_->clear(); } - _clear_bit(3); + clear_has_value(); } inline const ::std::string& setxattrRequest::value() const { return *value_; } inline void setxattrRequest::set_value(const ::std::string& value) { - _set_bit(3); - if (value_ == &_default_value_) { + set_has_value(); + if (value_ == &::google::protobuf::internal::kEmptyString) { value_ = new ::std::string; } value_->assign(value); } inline void setxattrRequest::set_value(const char* value) { - _set_bit(3); - if (value_ == &_default_value_) { + set_has_value(); + if (value_ == &::google::protobuf::internal::kEmptyString) { value_ = new ::std::string; } value_->assign(value); } inline void setxattrRequest::set_value(const char* value, size_t size) { - _set_bit(3); - if (value_ == &_default_value_) { + set_has_value(); + if (value_ == &::google::protobuf::internal::kEmptyString) { value_ = new ::std::string; } value_->assign(reinterpret_cast(value), size); } inline ::std::string* setxattrRequest::mutable_value() { - _set_bit(3); - if (value_ == &_default_value_) { + set_has_value(); + if (value_ == &::google::protobuf::internal::kEmptyString) { value_ = new ::std::string; } return value_; } +inline ::std::string* setxattrRequest::release_value() { + clear_has_value(); + if (value_ == &::google::protobuf::internal::kEmptyString) { + return NULL; + } else { + ::std::string* temp = value_; + value_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + return temp; + } +} +inline void setxattrRequest::set_allocated_value(::std::string* value) { + if (value_ != &::google::protobuf::internal::kEmptyString) { + delete value_; + } + if (value) { + set_has_value(); + value_ = value; + } else { + clear_has_value(); + value_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + } +} -// optional bytes value_bytes = 6; -inline bool setxattrRequest::has_value_bytes() const { - return _has_bit(4); +// optional bytes value_bytes_string = 6; +inline bool setxattrRequest::has_value_bytes_string() const { + return (_has_bits_[0] & 0x00000010u) != 0; +} +inline void setxattrRequest::set_has_value_bytes_string() { + _has_bits_[0] |= 0x00000010u; +} +inline void setxattrRequest::clear_has_value_bytes_string() { + _has_bits_[0] &= ~0x00000010u; +} +inline void setxattrRequest::clear_value_bytes_string() { + if (value_bytes_string_ != &::google::protobuf::internal::kEmptyString) { + value_bytes_string_->clear(); + } + clear_has_value_bytes_string(); } -inline void setxattrRequest::clear_value_bytes() { - if (value_bytes_ != &_default_value_bytes_) { - value_bytes_->clear(); +inline const ::std::string& setxattrRequest::value_bytes_string() const { + return *value_bytes_string_; +} +inline void setxattrRequest::set_value_bytes_string(const ::std::string& value) { + set_has_value_bytes_string(); + if (value_bytes_string_ == &::google::protobuf::internal::kEmptyString) { + value_bytes_string_ = new ::std::string; } - _clear_bit(4); + value_bytes_string_->assign(value); } -inline const ::std::string& setxattrRequest::value_bytes() const { - return *value_bytes_; +inline void setxattrRequest::set_value_bytes_string(const char* value) { + set_has_value_bytes_string(); + if (value_bytes_string_ == &::google::protobuf::internal::kEmptyString) { + value_bytes_string_ = new ::std::string; + } + value_bytes_string_->assign(value); } -inline void setxattrRequest::set_value_bytes(const ::std::string& value) { - _set_bit(4); - if (value_bytes_ == &_default_value_bytes_) { - value_bytes_ = new ::std::string; +inline void setxattrRequest::set_value_bytes_string(const void* value, size_t size) { + set_has_value_bytes_string(); + if (value_bytes_string_ == &::google::protobuf::internal::kEmptyString) { + value_bytes_string_ = new ::std::string; } - value_bytes_->assign(value); + value_bytes_string_->assign(reinterpret_cast(value), size); } -inline void setxattrRequest::set_value_bytes(const char* value) { - _set_bit(4); - if (value_bytes_ == &_default_value_bytes_) { - value_bytes_ = new ::std::string; +inline ::std::string* setxattrRequest::mutable_value_bytes_string() { + set_has_value_bytes_string(); + if (value_bytes_string_ == &::google::protobuf::internal::kEmptyString) { + value_bytes_string_ = new ::std::string; } - value_bytes_->assign(value); + return value_bytes_string_; } -inline void setxattrRequest::set_value_bytes(const void* value, size_t size) { - _set_bit(4); - if (value_bytes_ == &_default_value_bytes_) { - value_bytes_ = new ::std::string; +inline ::std::string* setxattrRequest::release_value_bytes_string() { + clear_has_value_bytes_string(); + if (value_bytes_string_ == &::google::protobuf::internal::kEmptyString) { + return NULL; + } else { + ::std::string* temp = value_bytes_string_; + value_bytes_string_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + return temp; } - value_bytes_->assign(reinterpret_cast(value), size); } -inline ::std::string* setxattrRequest::mutable_value_bytes() { - _set_bit(4); - if (value_bytes_ == &_default_value_bytes_) { - value_bytes_ = new ::std::string; +inline void setxattrRequest::set_allocated_value_bytes_string(::std::string* value_bytes_string) { + if (value_bytes_string_ != &::google::protobuf::internal::kEmptyString) { + delete value_bytes_string_; + } + if (value_bytes_string) { + set_has_value_bytes_string(); + value_bytes_string_ = value_bytes_string; + } else { + clear_has_value_bytes_string(); + value_bytes_string_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); } - return value_bytes_; } // required fixed32 flags = 5; inline bool setxattrRequest::has_flags() const { - return _has_bit(5); + return (_has_bits_[0] & 0x00000020u) != 0; +} +inline void setxattrRequest::set_has_flags() { + _has_bits_[0] |= 0x00000020u; +} +inline void setxattrRequest::clear_has_flags() { + _has_bits_[0] &= ~0x00000020u; } inline void setxattrRequest::clear_flags() { flags_ = 0u; - _clear_bit(5); + clear_has_flags(); } inline ::google::protobuf::uint32 setxattrRequest::flags() const { return flags_; } inline void setxattrRequest::set_flags(::google::protobuf::uint32 value) { - _set_bit(5); + set_has_flags(); flags_ = value; } @@ -9457,59 +10832,93 @@ inline void setxattrRequest::set_flags(::google::protobuf::uint32 value) { // required string volume_name = 1; inline bool statvfsRequest::has_volume_name() const { - return _has_bit(0); + return (_has_bits_[0] & 0x00000001u) != 0; +} +inline void statvfsRequest::set_has_volume_name() { + _has_bits_[0] |= 0x00000001u; +} +inline void statvfsRequest::clear_has_volume_name() { + _has_bits_[0] &= ~0x00000001u; } inline void statvfsRequest::clear_volume_name() { - if (volume_name_ != &_default_volume_name_) { + if (volume_name_ != &::google::protobuf::internal::kEmptyString) { volume_name_->clear(); } - _clear_bit(0); + clear_has_volume_name(); } inline const ::std::string& statvfsRequest::volume_name() const { return *volume_name_; } inline void statvfsRequest::set_volume_name(const ::std::string& value) { - _set_bit(0); - if (volume_name_ == &_default_volume_name_) { + set_has_volume_name(); + if (volume_name_ == &::google::protobuf::internal::kEmptyString) { volume_name_ = new ::std::string; } volume_name_->assign(value); } inline void statvfsRequest::set_volume_name(const char* value) { - _set_bit(0); - if (volume_name_ == &_default_volume_name_) { + set_has_volume_name(); + if (volume_name_ == &::google::protobuf::internal::kEmptyString) { volume_name_ = new ::std::string; } volume_name_->assign(value); } inline void statvfsRequest::set_volume_name(const char* value, size_t size) { - _set_bit(0); - if (volume_name_ == &_default_volume_name_) { + set_has_volume_name(); + if (volume_name_ == &::google::protobuf::internal::kEmptyString) { volume_name_ = new ::std::string; } volume_name_->assign(reinterpret_cast(value), size); } inline ::std::string* statvfsRequest::mutable_volume_name() { - _set_bit(0); - if (volume_name_ == &_default_volume_name_) { + set_has_volume_name(); + if (volume_name_ == &::google::protobuf::internal::kEmptyString) { volume_name_ = new ::std::string; } return volume_name_; } +inline ::std::string* statvfsRequest::release_volume_name() { + clear_has_volume_name(); + if (volume_name_ == &::google::protobuf::internal::kEmptyString) { + return NULL; + } else { + ::std::string* temp = volume_name_; + volume_name_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + return temp; + } +} +inline void statvfsRequest::set_allocated_volume_name(::std::string* volume_name) { + if (volume_name_ != &::google::protobuf::internal::kEmptyString) { + delete volume_name_; + } + if (volume_name) { + set_has_volume_name(); + volume_name_ = volume_name; + } else { + clear_has_volume_name(); + volume_name_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + } +} // required fixed64 known_etag = 5; inline bool statvfsRequest::has_known_etag() const { - return _has_bit(1); + return (_has_bits_[0] & 0x00000002u) != 0; +} +inline void statvfsRequest::set_has_known_etag() { + _has_bits_[0] |= 0x00000002u; +} +inline void statvfsRequest::clear_has_known_etag() { + _has_bits_[0] &= ~0x00000002u; } inline void statvfsRequest::clear_known_etag() { known_etag_ = GOOGLE_ULONGLONG(0); - _clear_bit(1); + clear_has_known_etag(); } inline ::google::protobuf::uint64 statvfsRequest::known_etag() const { return known_etag_; } inline void statvfsRequest::set_known_etag(::google::protobuf::uint64 value) { - _set_bit(1); + set_has_known_etag(); known_etag_ = value; } @@ -9519,129 +10928,213 @@ inline void statvfsRequest::set_known_etag(::google::protobuf::uint64 value) { // required string volume_name = 1; inline bool symlinkRequest::has_volume_name() const { - return _has_bit(0); + return (_has_bits_[0] & 0x00000001u) != 0; +} +inline void symlinkRequest::set_has_volume_name() { + _has_bits_[0] |= 0x00000001u; +} +inline void symlinkRequest::clear_has_volume_name() { + _has_bits_[0] &= ~0x00000001u; } inline void symlinkRequest::clear_volume_name() { - if (volume_name_ != &_default_volume_name_) { + if (volume_name_ != &::google::protobuf::internal::kEmptyString) { volume_name_->clear(); } - _clear_bit(0); + clear_has_volume_name(); } inline const ::std::string& symlinkRequest::volume_name() const { return *volume_name_; } inline void symlinkRequest::set_volume_name(const ::std::string& value) { - _set_bit(0); - if (volume_name_ == &_default_volume_name_) { + set_has_volume_name(); + if (volume_name_ == &::google::protobuf::internal::kEmptyString) { volume_name_ = new ::std::string; } volume_name_->assign(value); } inline void symlinkRequest::set_volume_name(const char* value) { - _set_bit(0); - if (volume_name_ == &_default_volume_name_) { + set_has_volume_name(); + if (volume_name_ == &::google::protobuf::internal::kEmptyString) { volume_name_ = new ::std::string; } volume_name_->assign(value); } inline void symlinkRequest::set_volume_name(const char* value, size_t size) { - _set_bit(0); - if (volume_name_ == &_default_volume_name_) { + set_has_volume_name(); + if (volume_name_ == &::google::protobuf::internal::kEmptyString) { volume_name_ = new ::std::string; } volume_name_->assign(reinterpret_cast(value), size); } inline ::std::string* symlinkRequest::mutable_volume_name() { - _set_bit(0); - if (volume_name_ == &_default_volume_name_) { + set_has_volume_name(); + if (volume_name_ == &::google::protobuf::internal::kEmptyString) { volume_name_ = new ::std::string; } return volume_name_; } +inline ::std::string* symlinkRequest::release_volume_name() { + clear_has_volume_name(); + if (volume_name_ == &::google::protobuf::internal::kEmptyString) { + return NULL; + } else { + ::std::string* temp = volume_name_; + volume_name_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + return temp; + } +} +inline void symlinkRequest::set_allocated_volume_name(::std::string* volume_name) { + if (volume_name_ != &::google::protobuf::internal::kEmptyString) { + delete volume_name_; + } + if (volume_name) { + set_has_volume_name(); + volume_name_ = volume_name; + } else { + clear_has_volume_name(); + volume_name_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + } +} // required string target_path = 2; inline bool symlinkRequest::has_target_path() const { - return _has_bit(1); + return (_has_bits_[0] & 0x00000002u) != 0; +} +inline void symlinkRequest::set_has_target_path() { + _has_bits_[0] |= 0x00000002u; +} +inline void symlinkRequest::clear_has_target_path() { + _has_bits_[0] &= ~0x00000002u; } inline void symlinkRequest::clear_target_path() { - if (target_path_ != &_default_target_path_) { + if (target_path_ != &::google::protobuf::internal::kEmptyString) { target_path_->clear(); } - _clear_bit(1); + clear_has_target_path(); } inline const ::std::string& symlinkRequest::target_path() const { return *target_path_; } inline void symlinkRequest::set_target_path(const ::std::string& value) { - _set_bit(1); - if (target_path_ == &_default_target_path_) { + set_has_target_path(); + if (target_path_ == &::google::protobuf::internal::kEmptyString) { target_path_ = new ::std::string; } target_path_->assign(value); } inline void symlinkRequest::set_target_path(const char* value) { - _set_bit(1); - if (target_path_ == &_default_target_path_) { + set_has_target_path(); + if (target_path_ == &::google::protobuf::internal::kEmptyString) { target_path_ = new ::std::string; } target_path_->assign(value); } inline void symlinkRequest::set_target_path(const char* value, size_t size) { - _set_bit(1); - if (target_path_ == &_default_target_path_) { + set_has_target_path(); + if (target_path_ == &::google::protobuf::internal::kEmptyString) { target_path_ = new ::std::string; } target_path_->assign(reinterpret_cast(value), size); } inline ::std::string* symlinkRequest::mutable_target_path() { - _set_bit(1); - if (target_path_ == &_default_target_path_) { + set_has_target_path(); + if (target_path_ == &::google::protobuf::internal::kEmptyString) { target_path_ = new ::std::string; } return target_path_; } +inline ::std::string* symlinkRequest::release_target_path() { + clear_has_target_path(); + if (target_path_ == &::google::protobuf::internal::kEmptyString) { + return NULL; + } else { + ::std::string* temp = target_path_; + target_path_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + return temp; + } +} +inline void symlinkRequest::set_allocated_target_path(::std::string* target_path) { + if (target_path_ != &::google::protobuf::internal::kEmptyString) { + delete target_path_; + } + if (target_path) { + set_has_target_path(); + target_path_ = target_path; + } else { + clear_has_target_path(); + target_path_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + } +} // required string link_path = 3; inline bool symlinkRequest::has_link_path() const { - return _has_bit(2); + return (_has_bits_[0] & 0x00000004u) != 0; +} +inline void symlinkRequest::set_has_link_path() { + _has_bits_[0] |= 0x00000004u; +} +inline void symlinkRequest::clear_has_link_path() { + _has_bits_[0] &= ~0x00000004u; } inline void symlinkRequest::clear_link_path() { - if (link_path_ != &_default_link_path_) { + if (link_path_ != &::google::protobuf::internal::kEmptyString) { link_path_->clear(); } - _clear_bit(2); + clear_has_link_path(); } inline const ::std::string& symlinkRequest::link_path() const { return *link_path_; } inline void symlinkRequest::set_link_path(const ::std::string& value) { - _set_bit(2); - if (link_path_ == &_default_link_path_) { + set_has_link_path(); + if (link_path_ == &::google::protobuf::internal::kEmptyString) { link_path_ = new ::std::string; } link_path_->assign(value); } inline void symlinkRequest::set_link_path(const char* value) { - _set_bit(2); - if (link_path_ == &_default_link_path_) { + set_has_link_path(); + if (link_path_ == &::google::protobuf::internal::kEmptyString) { link_path_ = new ::std::string; } link_path_->assign(value); } inline void symlinkRequest::set_link_path(const char* value, size_t size) { - _set_bit(2); - if (link_path_ == &_default_link_path_) { + set_has_link_path(); + if (link_path_ == &::google::protobuf::internal::kEmptyString) { link_path_ = new ::std::string; } link_path_->assign(reinterpret_cast(value), size); } inline ::std::string* symlinkRequest::mutable_link_path() { - _set_bit(2); - if (link_path_ == &_default_link_path_) { + set_has_link_path(); + if (link_path_ == &::google::protobuf::internal::kEmptyString) { link_path_ = new ::std::string; } return link_path_; } +inline ::std::string* symlinkRequest::release_link_path() { + clear_has_link_path(); + if (link_path_ == &::google::protobuf::internal::kEmptyString) { + return NULL; + } else { + ::std::string* temp = link_path_; + link_path_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + return temp; + } +} +inline void symlinkRequest::set_allocated_link_path(::std::string* link_path) { + if (link_path_ != &::google::protobuf::internal::kEmptyString) { + delete link_path_; + } + if (link_path) { + set_has_link_path(); + link_path_ = link_path; + } else { + clear_has_link_path(); + link_path_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + } +} // ------------------------------------------------------------------- @@ -9649,86 +11142,142 @@ inline ::std::string* symlinkRequest::mutable_link_path() { // required string volume_name = 1; inline bool unlinkRequest::has_volume_name() const { - return _has_bit(0); + return (_has_bits_[0] & 0x00000001u) != 0; +} +inline void unlinkRequest::set_has_volume_name() { + _has_bits_[0] |= 0x00000001u; +} +inline void unlinkRequest::clear_has_volume_name() { + _has_bits_[0] &= ~0x00000001u; } inline void unlinkRequest::clear_volume_name() { - if (volume_name_ != &_default_volume_name_) { + if (volume_name_ != &::google::protobuf::internal::kEmptyString) { volume_name_->clear(); } - _clear_bit(0); + clear_has_volume_name(); } inline const ::std::string& unlinkRequest::volume_name() const { return *volume_name_; } inline void unlinkRequest::set_volume_name(const ::std::string& value) { - _set_bit(0); - if (volume_name_ == &_default_volume_name_) { + set_has_volume_name(); + if (volume_name_ == &::google::protobuf::internal::kEmptyString) { volume_name_ = new ::std::string; } volume_name_->assign(value); } inline void unlinkRequest::set_volume_name(const char* value) { - _set_bit(0); - if (volume_name_ == &_default_volume_name_) { + set_has_volume_name(); + if (volume_name_ == &::google::protobuf::internal::kEmptyString) { volume_name_ = new ::std::string; } volume_name_->assign(value); } inline void unlinkRequest::set_volume_name(const char* value, size_t size) { - _set_bit(0); - if (volume_name_ == &_default_volume_name_) { + set_has_volume_name(); + if (volume_name_ == &::google::protobuf::internal::kEmptyString) { volume_name_ = new ::std::string; } volume_name_->assign(reinterpret_cast(value), size); } inline ::std::string* unlinkRequest::mutable_volume_name() { - _set_bit(0); - if (volume_name_ == &_default_volume_name_) { + set_has_volume_name(); + if (volume_name_ == &::google::protobuf::internal::kEmptyString) { volume_name_ = new ::std::string; } return volume_name_; } +inline ::std::string* unlinkRequest::release_volume_name() { + clear_has_volume_name(); + if (volume_name_ == &::google::protobuf::internal::kEmptyString) { + return NULL; + } else { + ::std::string* temp = volume_name_; + volume_name_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + return temp; + } +} +inline void unlinkRequest::set_allocated_volume_name(::std::string* volume_name) { + if (volume_name_ != &::google::protobuf::internal::kEmptyString) { + delete volume_name_; + } + if (volume_name) { + set_has_volume_name(); + volume_name_ = volume_name; + } else { + clear_has_volume_name(); + volume_name_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + } +} // required string path = 2; inline bool unlinkRequest::has_path() const { - return _has_bit(1); + return (_has_bits_[0] & 0x00000002u) != 0; +} +inline void unlinkRequest::set_has_path() { + _has_bits_[0] |= 0x00000002u; +} +inline void unlinkRequest::clear_has_path() { + _has_bits_[0] &= ~0x00000002u; } inline void unlinkRequest::clear_path() { - if (path_ != &_default_path_) { + if (path_ != &::google::protobuf::internal::kEmptyString) { path_->clear(); } - _clear_bit(1); + clear_has_path(); } inline const ::std::string& unlinkRequest::path() const { return *path_; } inline void unlinkRequest::set_path(const ::std::string& value) { - _set_bit(1); - if (path_ == &_default_path_) { + set_has_path(); + if (path_ == &::google::protobuf::internal::kEmptyString) { path_ = new ::std::string; } path_->assign(value); } inline void unlinkRequest::set_path(const char* value) { - _set_bit(1); - if (path_ == &_default_path_) { + set_has_path(); + if (path_ == &::google::protobuf::internal::kEmptyString) { path_ = new ::std::string; } path_->assign(value); } inline void unlinkRequest::set_path(const char* value, size_t size) { - _set_bit(1); - if (path_ == &_default_path_) { + set_has_path(); + if (path_ == &::google::protobuf::internal::kEmptyString) { path_ = new ::std::string; } path_->assign(reinterpret_cast(value), size); } inline ::std::string* unlinkRequest::mutable_path() { - _set_bit(1); - if (path_ == &_default_path_) { + set_has_path(); + if (path_ == &::google::protobuf::internal::kEmptyString) { path_ = new ::std::string; } - return path_; + return path_; +} +inline ::std::string* unlinkRequest::release_path() { + clear_has_path(); + if (path_ == &::google::protobuf::internal::kEmptyString) { + return NULL; + } else { + ::std::string* temp = path_; + path_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + return temp; + } +} +inline void unlinkRequest::set_allocated_path(::std::string* path) { + if (path_ != &::google::protobuf::internal::kEmptyString) { + delete path_; + } + if (path) { + set_has_path(); + path_ = path; + } else { + clear_has_path(); + path_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + } } // ------------------------------------------------------------------- @@ -9737,36 +11286,63 @@ inline ::std::string* unlinkRequest::mutable_path() { // required fixed32 timestamp_s = 1; inline bool unlinkResponse::has_timestamp_s() const { - return _has_bit(0); + return (_has_bits_[0] & 0x00000001u) != 0; +} +inline void unlinkResponse::set_has_timestamp_s() { + _has_bits_[0] |= 0x00000001u; +} +inline void unlinkResponse::clear_has_timestamp_s() { + _has_bits_[0] &= ~0x00000001u; } inline void unlinkResponse::clear_timestamp_s() { timestamp_s_ = 0u; - _clear_bit(0); + clear_has_timestamp_s(); } inline ::google::protobuf::uint32 unlinkResponse::timestamp_s() const { return timestamp_s_; } inline void unlinkResponse::set_timestamp_s(::google::protobuf::uint32 value) { - _set_bit(0); + set_has_timestamp_s(); timestamp_s_ = value; } // optional .xtreemfs.pbrpc.FileCredentials creds = 2; inline bool unlinkResponse::has_creds() const { - return _has_bit(1); + return (_has_bits_[0] & 0x00000002u) != 0; +} +inline void unlinkResponse::set_has_creds() { + _has_bits_[0] |= 0x00000002u; +} +inline void unlinkResponse::clear_has_creds() { + _has_bits_[0] &= ~0x00000002u; } inline void unlinkResponse::clear_creds() { if (creds_ != NULL) creds_->::xtreemfs::pbrpc::FileCredentials::Clear(); - _clear_bit(1); + clear_has_creds(); } inline const ::xtreemfs::pbrpc::FileCredentials& unlinkResponse::creds() const { return creds_ != NULL ? *creds_ : *default_instance_->creds_; } inline ::xtreemfs::pbrpc::FileCredentials* unlinkResponse::mutable_creds() { - _set_bit(1); + set_has_creds(); if (creds_ == NULL) creds_ = new ::xtreemfs::pbrpc::FileCredentials; return creds_; } +inline ::xtreemfs::pbrpc::FileCredentials* unlinkResponse::release_creds() { + clear_has_creds(); + ::xtreemfs::pbrpc::FileCredentials* temp = creds_; + creds_ = NULL; + return temp; +} +inline void unlinkResponse::set_allocated_creds(::xtreemfs::pbrpc::FileCredentials* creds) { + delete creds_; + creds_ = creds; + if (creds) { + set_has_creds(); + } else { + clear_has_creds(); + } +} // ------------------------------------------------------------------- @@ -9774,101 +11350,163 @@ inline ::xtreemfs::pbrpc::FileCredentials* unlinkResponse::mutable_creds() { // required string volume_name = 1; inline bool accessRequest::has_volume_name() const { - return _has_bit(0); + return (_has_bits_[0] & 0x00000001u) != 0; +} +inline void accessRequest::set_has_volume_name() { + _has_bits_[0] |= 0x00000001u; +} +inline void accessRequest::clear_has_volume_name() { + _has_bits_[0] &= ~0x00000001u; } inline void accessRequest::clear_volume_name() { - if (volume_name_ != &_default_volume_name_) { + if (volume_name_ != &::google::protobuf::internal::kEmptyString) { volume_name_->clear(); } - _clear_bit(0); + clear_has_volume_name(); } inline const ::std::string& accessRequest::volume_name() const { return *volume_name_; } inline void accessRequest::set_volume_name(const ::std::string& value) { - _set_bit(0); - if (volume_name_ == &_default_volume_name_) { + set_has_volume_name(); + if (volume_name_ == &::google::protobuf::internal::kEmptyString) { volume_name_ = new ::std::string; } volume_name_->assign(value); } inline void accessRequest::set_volume_name(const char* value) { - _set_bit(0); - if (volume_name_ == &_default_volume_name_) { + set_has_volume_name(); + if (volume_name_ == &::google::protobuf::internal::kEmptyString) { volume_name_ = new ::std::string; } volume_name_->assign(value); } inline void accessRequest::set_volume_name(const char* value, size_t size) { - _set_bit(0); - if (volume_name_ == &_default_volume_name_) { + set_has_volume_name(); + if (volume_name_ == &::google::protobuf::internal::kEmptyString) { volume_name_ = new ::std::string; } volume_name_->assign(reinterpret_cast(value), size); } inline ::std::string* accessRequest::mutable_volume_name() { - _set_bit(0); - if (volume_name_ == &_default_volume_name_) { + set_has_volume_name(); + if (volume_name_ == &::google::protobuf::internal::kEmptyString) { volume_name_ = new ::std::string; } return volume_name_; } +inline ::std::string* accessRequest::release_volume_name() { + clear_has_volume_name(); + if (volume_name_ == &::google::protobuf::internal::kEmptyString) { + return NULL; + } else { + ::std::string* temp = volume_name_; + volume_name_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + return temp; + } +} +inline void accessRequest::set_allocated_volume_name(::std::string* volume_name) { + if (volume_name_ != &::google::protobuf::internal::kEmptyString) { + delete volume_name_; + } + if (volume_name) { + set_has_volume_name(); + volume_name_ = volume_name; + } else { + clear_has_volume_name(); + volume_name_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + } +} // required string path = 2; inline bool accessRequest::has_path() const { - return _has_bit(1); + return (_has_bits_[0] & 0x00000002u) != 0; +} +inline void accessRequest::set_has_path() { + _has_bits_[0] |= 0x00000002u; +} +inline void accessRequest::clear_has_path() { + _has_bits_[0] &= ~0x00000002u; } inline void accessRequest::clear_path() { - if (path_ != &_default_path_) { + if (path_ != &::google::protobuf::internal::kEmptyString) { path_->clear(); } - _clear_bit(1); + clear_has_path(); } inline const ::std::string& accessRequest::path() const { return *path_; } inline void accessRequest::set_path(const ::std::string& value) { - _set_bit(1); - if (path_ == &_default_path_) { + set_has_path(); + if (path_ == &::google::protobuf::internal::kEmptyString) { path_ = new ::std::string; } path_->assign(value); } inline void accessRequest::set_path(const char* value) { - _set_bit(1); - if (path_ == &_default_path_) { + set_has_path(); + if (path_ == &::google::protobuf::internal::kEmptyString) { path_ = new ::std::string; } path_->assign(value); } inline void accessRequest::set_path(const char* value, size_t size) { - _set_bit(1); - if (path_ == &_default_path_) { + set_has_path(); + if (path_ == &::google::protobuf::internal::kEmptyString) { path_ = new ::std::string; } path_->assign(reinterpret_cast(value), size); } inline ::std::string* accessRequest::mutable_path() { - _set_bit(1); - if (path_ == &_default_path_) { + set_has_path(); + if (path_ == &::google::protobuf::internal::kEmptyString) { path_ = new ::std::string; } return path_; } +inline ::std::string* accessRequest::release_path() { + clear_has_path(); + if (path_ == &::google::protobuf::internal::kEmptyString) { + return NULL; + } else { + ::std::string* temp = path_; + path_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + return temp; + } +} +inline void accessRequest::set_allocated_path(::std::string* path) { + if (path_ != &::google::protobuf::internal::kEmptyString) { + delete path_; + } + if (path) { + set_has_path(); + path_ = path; + } else { + clear_has_path(); + path_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + } +} // required fixed32 flags = 3; inline bool accessRequest::has_flags() const { - return _has_bit(2); + return (_has_bits_[0] & 0x00000004u) != 0; +} +inline void accessRequest::set_has_flags() { + _has_bits_[0] |= 0x00000004u; +} +inline void accessRequest::clear_has_flags() { + _has_bits_[0] &= ~0x00000004u; } inline void accessRequest::clear_flags() { flags_ = 0u; - _clear_bit(2); + clear_has_flags(); } inline ::google::protobuf::uint32 accessRequest::flags() const { return flags_; } inline void accessRequest::set_flags(::google::protobuf::uint32 value) { - _set_bit(2); + set_has_flags(); flags_ = value; } @@ -9878,45 +11516,73 @@ inline void accessRequest::set_flags(::google::protobuf::uint32 value) { // required string volume_id = 1; inline bool xtreemfs_check_file_existsRequest::has_volume_id() const { - return _has_bit(0); + return (_has_bits_[0] & 0x00000001u) != 0; +} +inline void xtreemfs_check_file_existsRequest::set_has_volume_id() { + _has_bits_[0] |= 0x00000001u; +} +inline void xtreemfs_check_file_existsRequest::clear_has_volume_id() { + _has_bits_[0] &= ~0x00000001u; } inline void xtreemfs_check_file_existsRequest::clear_volume_id() { - if (volume_id_ != &_default_volume_id_) { + if (volume_id_ != &::google::protobuf::internal::kEmptyString) { volume_id_->clear(); } - _clear_bit(0); + clear_has_volume_id(); } inline const ::std::string& xtreemfs_check_file_existsRequest::volume_id() const { return *volume_id_; } inline void xtreemfs_check_file_existsRequest::set_volume_id(const ::std::string& value) { - _set_bit(0); - if (volume_id_ == &_default_volume_id_) { + set_has_volume_id(); + if (volume_id_ == &::google::protobuf::internal::kEmptyString) { volume_id_ = new ::std::string; } volume_id_->assign(value); } inline void xtreemfs_check_file_existsRequest::set_volume_id(const char* value) { - _set_bit(0); - if (volume_id_ == &_default_volume_id_) { + set_has_volume_id(); + if (volume_id_ == &::google::protobuf::internal::kEmptyString) { volume_id_ = new ::std::string; } volume_id_->assign(value); } inline void xtreemfs_check_file_existsRequest::set_volume_id(const char* value, size_t size) { - _set_bit(0); - if (volume_id_ == &_default_volume_id_) { + set_has_volume_id(); + if (volume_id_ == &::google::protobuf::internal::kEmptyString) { volume_id_ = new ::std::string; } volume_id_->assign(reinterpret_cast(value), size); } inline ::std::string* xtreemfs_check_file_existsRequest::mutable_volume_id() { - _set_bit(0); - if (volume_id_ == &_default_volume_id_) { + set_has_volume_id(); + if (volume_id_ == &::google::protobuf::internal::kEmptyString) { volume_id_ = new ::std::string; } return volume_id_; } +inline ::std::string* xtreemfs_check_file_existsRequest::release_volume_id() { + clear_has_volume_id(); + if (volume_id_ == &::google::protobuf::internal::kEmptyString) { + return NULL; + } else { + ::std::string* temp = volume_id_; + volume_id_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + return temp; + } +} +inline void xtreemfs_check_file_existsRequest::set_allocated_volume_id(::std::string* volume_id) { + if (volume_id_ != &::google::protobuf::internal::kEmptyString) { + delete volume_id_; + } + if (volume_id) { + set_has_volume_id(); + volume_id_ = volume_id; + } else { + clear_has_volume_id(); + volume_id_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + } +} // repeated string file_ids = 2; inline int xtreemfs_check_file_existsRequest::file_ids_size() const { @@ -9964,45 +11630,73 @@ xtreemfs_check_file_existsRequest::mutable_file_ids() { // required string osd_uuid = 3; inline bool xtreemfs_check_file_existsRequest::has_osd_uuid() const { - return _has_bit(2); + return (_has_bits_[0] & 0x00000004u) != 0; +} +inline void xtreemfs_check_file_existsRequest::set_has_osd_uuid() { + _has_bits_[0] |= 0x00000004u; +} +inline void xtreemfs_check_file_existsRequest::clear_has_osd_uuid() { + _has_bits_[0] &= ~0x00000004u; } inline void xtreemfs_check_file_existsRequest::clear_osd_uuid() { - if (osd_uuid_ != &_default_osd_uuid_) { + if (osd_uuid_ != &::google::protobuf::internal::kEmptyString) { osd_uuid_->clear(); } - _clear_bit(2); + clear_has_osd_uuid(); } inline const ::std::string& xtreemfs_check_file_existsRequest::osd_uuid() const { return *osd_uuid_; } inline void xtreemfs_check_file_existsRequest::set_osd_uuid(const ::std::string& value) { - _set_bit(2); - if (osd_uuid_ == &_default_osd_uuid_) { + set_has_osd_uuid(); + if (osd_uuid_ == &::google::protobuf::internal::kEmptyString) { osd_uuid_ = new ::std::string; } osd_uuid_->assign(value); } inline void xtreemfs_check_file_existsRequest::set_osd_uuid(const char* value) { - _set_bit(2); - if (osd_uuid_ == &_default_osd_uuid_) { + set_has_osd_uuid(); + if (osd_uuid_ == &::google::protobuf::internal::kEmptyString) { osd_uuid_ = new ::std::string; } osd_uuid_->assign(value); } inline void xtreemfs_check_file_existsRequest::set_osd_uuid(const char* value, size_t size) { - _set_bit(2); - if (osd_uuid_ == &_default_osd_uuid_) { + set_has_osd_uuid(); + if (osd_uuid_ == &::google::protobuf::internal::kEmptyString) { osd_uuid_ = new ::std::string; } osd_uuid_->assign(reinterpret_cast(value), size); } inline ::std::string* xtreemfs_check_file_existsRequest::mutable_osd_uuid() { - _set_bit(2); - if (osd_uuid_ == &_default_osd_uuid_) { + set_has_osd_uuid(); + if (osd_uuid_ == &::google::protobuf::internal::kEmptyString) { osd_uuid_ = new ::std::string; } return osd_uuid_; } +inline ::std::string* xtreemfs_check_file_existsRequest::release_osd_uuid() { + clear_has_osd_uuid(); + if (osd_uuid_ == &::google::protobuf::internal::kEmptyString) { + return NULL; + } else { + ::std::string* temp = osd_uuid_; + osd_uuid_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + return temp; + } +} +inline void xtreemfs_check_file_existsRequest::set_allocated_osd_uuid(::std::string* osd_uuid) { + if (osd_uuid_ != &::google::protobuf::internal::kEmptyString) { + delete osd_uuid_; + } + if (osd_uuid) { + set_has_osd_uuid(); + osd_uuid_ = osd_uuid; + } else { + clear_has_osd_uuid(); + osd_uuid_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + } +} // ------------------------------------------------------------------- @@ -10010,45 +11704,73 @@ inline ::std::string* xtreemfs_check_file_existsRequest::mutable_osd_uuid() { // required string dump_file = 1; inline bool xtreemfs_dump_restore_databaseRequest::has_dump_file() const { - return _has_bit(0); + return (_has_bits_[0] & 0x00000001u) != 0; +} +inline void xtreemfs_dump_restore_databaseRequest::set_has_dump_file() { + _has_bits_[0] |= 0x00000001u; +} +inline void xtreemfs_dump_restore_databaseRequest::clear_has_dump_file() { + _has_bits_[0] &= ~0x00000001u; } inline void xtreemfs_dump_restore_databaseRequest::clear_dump_file() { - if (dump_file_ != &_default_dump_file_) { + if (dump_file_ != &::google::protobuf::internal::kEmptyString) { dump_file_->clear(); } - _clear_bit(0); + clear_has_dump_file(); } inline const ::std::string& xtreemfs_dump_restore_databaseRequest::dump_file() const { return *dump_file_; } inline void xtreemfs_dump_restore_databaseRequest::set_dump_file(const ::std::string& value) { - _set_bit(0); - if (dump_file_ == &_default_dump_file_) { + set_has_dump_file(); + if (dump_file_ == &::google::protobuf::internal::kEmptyString) { dump_file_ = new ::std::string; } dump_file_->assign(value); } inline void xtreemfs_dump_restore_databaseRequest::set_dump_file(const char* value) { - _set_bit(0); - if (dump_file_ == &_default_dump_file_) { + set_has_dump_file(); + if (dump_file_ == &::google::protobuf::internal::kEmptyString) { dump_file_ = new ::std::string; } dump_file_->assign(value); } inline void xtreemfs_dump_restore_databaseRequest::set_dump_file(const char* value, size_t size) { - _set_bit(0); - if (dump_file_ == &_default_dump_file_) { + set_has_dump_file(); + if (dump_file_ == &::google::protobuf::internal::kEmptyString) { dump_file_ = new ::std::string; } dump_file_->assign(reinterpret_cast(value), size); } inline ::std::string* xtreemfs_dump_restore_databaseRequest::mutable_dump_file() { - _set_bit(0); - if (dump_file_ == &_default_dump_file_) { + set_has_dump_file(); + if (dump_file_ == &::google::protobuf::internal::kEmptyString) { dump_file_ = new ::std::string; } return dump_file_; } +inline ::std::string* xtreemfs_dump_restore_databaseRequest::release_dump_file() { + clear_has_dump_file(); + if (dump_file_ == &::google::protobuf::internal::kEmptyString) { + return NULL; + } else { + ::std::string* temp = dump_file_; + dump_file_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + return temp; + } +} +inline void xtreemfs_dump_restore_databaseRequest::set_allocated_dump_file(::std::string* dump_file) { + if (dump_file_ != &::google::protobuf::internal::kEmptyString) { + delete dump_file_; + } + if (dump_file) { + set_has_dump_file(); + dump_file_ = dump_file; + } else { + clear_has_dump_file(); + dump_file_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + } +} // ------------------------------------------------------------------- @@ -10056,143 +11778,233 @@ inline ::std::string* xtreemfs_dump_restore_databaseRequest::mutable_dump_file() // optional string file_id = 1; inline bool xtreemfs_get_suitable_osdsRequest::has_file_id() const { - return _has_bit(0); + return (_has_bits_[0] & 0x00000001u) != 0; +} +inline void xtreemfs_get_suitable_osdsRequest::set_has_file_id() { + _has_bits_[0] |= 0x00000001u; +} +inline void xtreemfs_get_suitable_osdsRequest::clear_has_file_id() { + _has_bits_[0] &= ~0x00000001u; } inline void xtreemfs_get_suitable_osdsRequest::clear_file_id() { - if (file_id_ != &_default_file_id_) { + if (file_id_ != &::google::protobuf::internal::kEmptyString) { file_id_->clear(); } - _clear_bit(0); + clear_has_file_id(); } inline const ::std::string& xtreemfs_get_suitable_osdsRequest::file_id() const { return *file_id_; } inline void xtreemfs_get_suitable_osdsRequest::set_file_id(const ::std::string& value) { - _set_bit(0); - if (file_id_ == &_default_file_id_) { + set_has_file_id(); + if (file_id_ == &::google::protobuf::internal::kEmptyString) { file_id_ = new ::std::string; } file_id_->assign(value); } inline void xtreemfs_get_suitable_osdsRequest::set_file_id(const char* value) { - _set_bit(0); - if (file_id_ == &_default_file_id_) { + set_has_file_id(); + if (file_id_ == &::google::protobuf::internal::kEmptyString) { file_id_ = new ::std::string; } file_id_->assign(value); } inline void xtreemfs_get_suitable_osdsRequest::set_file_id(const char* value, size_t size) { - _set_bit(0); - if (file_id_ == &_default_file_id_) { + set_has_file_id(); + if (file_id_ == &::google::protobuf::internal::kEmptyString) { file_id_ = new ::std::string; } file_id_->assign(reinterpret_cast(value), size); } inline ::std::string* xtreemfs_get_suitable_osdsRequest::mutable_file_id() { - _set_bit(0); - if (file_id_ == &_default_file_id_) { + set_has_file_id(); + if (file_id_ == &::google::protobuf::internal::kEmptyString) { file_id_ = new ::std::string; } return file_id_; } +inline ::std::string* xtreemfs_get_suitable_osdsRequest::release_file_id() { + clear_has_file_id(); + if (file_id_ == &::google::protobuf::internal::kEmptyString) { + return NULL; + } else { + ::std::string* temp = file_id_; + file_id_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + return temp; + } +} +inline void xtreemfs_get_suitable_osdsRequest::set_allocated_file_id(::std::string* file_id) { + if (file_id_ != &::google::protobuf::internal::kEmptyString) { + delete file_id_; + } + if (file_id) { + set_has_file_id(); + file_id_ = file_id; + } else { + clear_has_file_id(); + file_id_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + } +} // optional string path = 3; inline bool xtreemfs_get_suitable_osdsRequest::has_path() const { - return _has_bit(1); + return (_has_bits_[0] & 0x00000002u) != 0; +} +inline void xtreemfs_get_suitable_osdsRequest::set_has_path() { + _has_bits_[0] |= 0x00000002u; +} +inline void xtreemfs_get_suitable_osdsRequest::clear_has_path() { + _has_bits_[0] &= ~0x00000002u; } inline void xtreemfs_get_suitable_osdsRequest::clear_path() { - if (path_ != &_default_path_) { + if (path_ != &::google::protobuf::internal::kEmptyString) { path_->clear(); } - _clear_bit(1); + clear_has_path(); } inline const ::std::string& xtreemfs_get_suitable_osdsRequest::path() const { return *path_; } inline void xtreemfs_get_suitable_osdsRequest::set_path(const ::std::string& value) { - _set_bit(1); - if (path_ == &_default_path_) { + set_has_path(); + if (path_ == &::google::protobuf::internal::kEmptyString) { path_ = new ::std::string; } path_->assign(value); } inline void xtreemfs_get_suitable_osdsRequest::set_path(const char* value) { - _set_bit(1); - if (path_ == &_default_path_) { + set_has_path(); + if (path_ == &::google::protobuf::internal::kEmptyString) { path_ = new ::std::string; } path_->assign(value); } inline void xtreemfs_get_suitable_osdsRequest::set_path(const char* value, size_t size) { - _set_bit(1); - if (path_ == &_default_path_) { + set_has_path(); + if (path_ == &::google::protobuf::internal::kEmptyString) { path_ = new ::std::string; } path_->assign(reinterpret_cast(value), size); } inline ::std::string* xtreemfs_get_suitable_osdsRequest::mutable_path() { - _set_bit(1); - if (path_ == &_default_path_) { + set_has_path(); + if (path_ == &::google::protobuf::internal::kEmptyString) { path_ = new ::std::string; } return path_; } +inline ::std::string* xtreemfs_get_suitable_osdsRequest::release_path() { + clear_has_path(); + if (path_ == &::google::protobuf::internal::kEmptyString) { + return NULL; + } else { + ::std::string* temp = path_; + path_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + return temp; + } +} +inline void xtreemfs_get_suitable_osdsRequest::set_allocated_path(::std::string* path) { + if (path_ != &::google::protobuf::internal::kEmptyString) { + delete path_; + } + if (path) { + set_has_path(); + path_ = path; + } else { + clear_has_path(); + path_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + } +} // optional string volume_name = 4; inline bool xtreemfs_get_suitable_osdsRequest::has_volume_name() const { - return _has_bit(2); + return (_has_bits_[0] & 0x00000004u) != 0; +} +inline void xtreemfs_get_suitable_osdsRequest::set_has_volume_name() { + _has_bits_[0] |= 0x00000004u; +} +inline void xtreemfs_get_suitable_osdsRequest::clear_has_volume_name() { + _has_bits_[0] &= ~0x00000004u; } inline void xtreemfs_get_suitable_osdsRequest::clear_volume_name() { - if (volume_name_ != &_default_volume_name_) { + if (volume_name_ != &::google::protobuf::internal::kEmptyString) { volume_name_->clear(); } - _clear_bit(2); + clear_has_volume_name(); } inline const ::std::string& xtreemfs_get_suitable_osdsRequest::volume_name() const { return *volume_name_; } inline void xtreemfs_get_suitable_osdsRequest::set_volume_name(const ::std::string& value) { - _set_bit(2); - if (volume_name_ == &_default_volume_name_) { + set_has_volume_name(); + if (volume_name_ == &::google::protobuf::internal::kEmptyString) { volume_name_ = new ::std::string; } volume_name_->assign(value); } inline void xtreemfs_get_suitable_osdsRequest::set_volume_name(const char* value) { - _set_bit(2); - if (volume_name_ == &_default_volume_name_) { + set_has_volume_name(); + if (volume_name_ == &::google::protobuf::internal::kEmptyString) { volume_name_ = new ::std::string; } volume_name_->assign(value); } inline void xtreemfs_get_suitable_osdsRequest::set_volume_name(const char* value, size_t size) { - _set_bit(2); - if (volume_name_ == &_default_volume_name_) { + set_has_volume_name(); + if (volume_name_ == &::google::protobuf::internal::kEmptyString) { volume_name_ = new ::std::string; } volume_name_->assign(reinterpret_cast(value), size); } inline ::std::string* xtreemfs_get_suitable_osdsRequest::mutable_volume_name() { - _set_bit(2); - if (volume_name_ == &_default_volume_name_) { + set_has_volume_name(); + if (volume_name_ == &::google::protobuf::internal::kEmptyString) { volume_name_ = new ::std::string; } return volume_name_; } +inline ::std::string* xtreemfs_get_suitable_osdsRequest::release_volume_name() { + clear_has_volume_name(); + if (volume_name_ == &::google::protobuf::internal::kEmptyString) { + return NULL; + } else { + ::std::string* temp = volume_name_; + volume_name_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + return temp; + } +} +inline void xtreemfs_get_suitable_osdsRequest::set_allocated_volume_name(::std::string* volume_name) { + if (volume_name_ != &::google::protobuf::internal::kEmptyString) { + delete volume_name_; + } + if (volume_name) { + set_has_volume_name(); + volume_name_ = volume_name; + } else { + clear_has_volume_name(); + volume_name_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + } +} // required fixed32 num_osds = 2; inline bool xtreemfs_get_suitable_osdsRequest::has_num_osds() const { - return _has_bit(3); + return (_has_bits_[0] & 0x00000008u) != 0; +} +inline void xtreemfs_get_suitable_osdsRequest::set_has_num_osds() { + _has_bits_[0] |= 0x00000008u; +} +inline void xtreemfs_get_suitable_osdsRequest::clear_has_num_osds() { + _has_bits_[0] &= ~0x00000008u; } inline void xtreemfs_get_suitable_osdsRequest::clear_num_osds() { num_osds_ = 0u; - _clear_bit(3); + clear_has_num_osds(); } inline ::google::protobuf::uint32 xtreemfs_get_suitable_osdsRequest::num_osds() const { return num_osds_; } inline void xtreemfs_get_suitable_osdsRequest::set_num_osds(::google::protobuf::uint32 value) { - _set_bit(3); + set_has_num_osds(); num_osds_ = value; } @@ -10250,45 +12062,73 @@ xtreemfs_get_suitable_osdsResponse::mutable_osd_uuids() { // required string bitmap = 1; inline bool xtreemfs_check_file_existsResponse::has_bitmap() const { - return _has_bit(0); + return (_has_bits_[0] & 0x00000001u) != 0; +} +inline void xtreemfs_check_file_existsResponse::set_has_bitmap() { + _has_bits_[0] |= 0x00000001u; +} +inline void xtreemfs_check_file_existsResponse::clear_has_bitmap() { + _has_bits_[0] &= ~0x00000001u; } inline void xtreemfs_check_file_existsResponse::clear_bitmap() { - if (bitmap_ != &_default_bitmap_) { + if (bitmap_ != &::google::protobuf::internal::kEmptyString) { bitmap_->clear(); } - _clear_bit(0); + clear_has_bitmap(); } inline const ::std::string& xtreemfs_check_file_existsResponse::bitmap() const { return *bitmap_; } inline void xtreemfs_check_file_existsResponse::set_bitmap(const ::std::string& value) { - _set_bit(0); - if (bitmap_ == &_default_bitmap_) { + set_has_bitmap(); + if (bitmap_ == &::google::protobuf::internal::kEmptyString) { bitmap_ = new ::std::string; } bitmap_->assign(value); } inline void xtreemfs_check_file_existsResponse::set_bitmap(const char* value) { - _set_bit(0); - if (bitmap_ == &_default_bitmap_) { + set_has_bitmap(); + if (bitmap_ == &::google::protobuf::internal::kEmptyString) { bitmap_ = new ::std::string; } bitmap_->assign(value); } inline void xtreemfs_check_file_existsResponse::set_bitmap(const char* value, size_t size) { - _set_bit(0); - if (bitmap_ == &_default_bitmap_) { + set_has_bitmap(); + if (bitmap_ == &::google::protobuf::internal::kEmptyString) { bitmap_ = new ::std::string; } bitmap_->assign(reinterpret_cast(value), size); } inline ::std::string* xtreemfs_check_file_existsResponse::mutable_bitmap() { - _set_bit(0); - if (bitmap_ == &_default_bitmap_) { + set_has_bitmap(); + if (bitmap_ == &::google::protobuf::internal::kEmptyString) { bitmap_ = new ::std::string; } return bitmap_; } +inline ::std::string* xtreemfs_check_file_existsResponse::release_bitmap() { + clear_has_bitmap(); + if (bitmap_ == &::google::protobuf::internal::kEmptyString) { + return NULL; + } else { + ::std::string* temp = bitmap_; + bitmap_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + return temp; + } +} +inline void xtreemfs_check_file_existsResponse::set_allocated_bitmap(::std::string* bitmap) { + if (bitmap_ != &::google::protobuf::internal::kEmptyString) { + delete bitmap_; + } + if (bitmap) { + set_has_bitmap(); + bitmap_ = bitmap; + } else { + clear_has_bitmap(); + bitmap_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + } +} // ------------------------------------------------------------------- @@ -10296,17 +12136,23 @@ inline ::std::string* xtreemfs_check_file_existsResponse::mutable_bitmap() { // required fixed32 timestamp_s = 1; inline bool timestampResponse::has_timestamp_s() const { - return _has_bit(0); + return (_has_bits_[0] & 0x00000001u) != 0; +} +inline void timestampResponse::set_has_timestamp_s() { + _has_bits_[0] |= 0x00000001u; +} +inline void timestampResponse::clear_has_timestamp_s() { + _has_bits_[0] &= ~0x00000001u; } inline void timestampResponse::clear_timestamp_s() { timestamp_s_ = 0u; - _clear_bit(0); + clear_has_timestamp_s(); } inline ::google::protobuf::uint32 timestampResponse::timestamp_s() const { return timestamp_s_; } inline void timestampResponse::set_timestamp_s(::google::protobuf::uint32 value) { - _set_bit(0); + set_has_timestamp_s(); timestamp_s_ = value; } @@ -10316,45 +12162,73 @@ inline void timestampResponse::set_timestamp_s(::google::protobuf::uint32 value) // required string a_string = 1; inline bool stringMessage::has_a_string() const { - return _has_bit(0); + return (_has_bits_[0] & 0x00000001u) != 0; +} +inline void stringMessage::set_has_a_string() { + _has_bits_[0] |= 0x00000001u; +} +inline void stringMessage::clear_has_a_string() { + _has_bits_[0] &= ~0x00000001u; } inline void stringMessage::clear_a_string() { - if (a_string_ != &_default_a_string_) { + if (a_string_ != &::google::protobuf::internal::kEmptyString) { a_string_->clear(); } - _clear_bit(0); + clear_has_a_string(); } inline const ::std::string& stringMessage::a_string() const { return *a_string_; } inline void stringMessage::set_a_string(const ::std::string& value) { - _set_bit(0); - if (a_string_ == &_default_a_string_) { + set_has_a_string(); + if (a_string_ == &::google::protobuf::internal::kEmptyString) { a_string_ = new ::std::string; } a_string_->assign(value); } inline void stringMessage::set_a_string(const char* value) { - _set_bit(0); - if (a_string_ == &_default_a_string_) { + set_has_a_string(); + if (a_string_ == &::google::protobuf::internal::kEmptyString) { a_string_ = new ::std::string; } a_string_->assign(value); } inline void stringMessage::set_a_string(const char* value, size_t size) { - _set_bit(0); - if (a_string_ == &_default_a_string_) { + set_has_a_string(); + if (a_string_ == &::google::protobuf::internal::kEmptyString) { a_string_ = new ::std::string; } a_string_->assign(reinterpret_cast(value), size); } inline ::std::string* stringMessage::mutable_a_string() { - _set_bit(0); - if (a_string_ == &_default_a_string_) { + set_has_a_string(); + if (a_string_ == &::google::protobuf::internal::kEmptyString) { a_string_ = new ::std::string; } return a_string_; } +inline ::std::string* stringMessage::release_a_string() { + clear_has_a_string(); + if (a_string_ == &::google::protobuf::internal::kEmptyString) { + return NULL; + } else { + ::std::string* temp = a_string_; + a_string_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + return temp; + } +} +inline void stringMessage::set_allocated_a_string(::std::string* a_string) { + if (a_string_ != &::google::protobuf::internal::kEmptyString) { + delete a_string_; + } + if (a_string) { + set_has_a_string(); + a_string_ = a_string; + } else { + clear_has_a_string(); + a_string_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + } +} // ------------------------------------------------------------------- @@ -10362,45 +12236,73 @@ inline ::std::string* stringMessage::mutable_a_string() { // required string path = 1; inline bool xtreemfs_listdirRequest::has_path() const { - return _has_bit(0); + return (_has_bits_[0] & 0x00000001u) != 0; +} +inline void xtreemfs_listdirRequest::set_has_path() { + _has_bits_[0] |= 0x00000001u; +} +inline void xtreemfs_listdirRequest::clear_has_path() { + _has_bits_[0] &= ~0x00000001u; } inline void xtreemfs_listdirRequest::clear_path() { - if (path_ != &_default_path_) { + if (path_ != &::google::protobuf::internal::kEmptyString) { path_->clear(); } - _clear_bit(0); + clear_has_path(); } inline const ::std::string& xtreemfs_listdirRequest::path() const { return *path_; } inline void xtreemfs_listdirRequest::set_path(const ::std::string& value) { - _set_bit(0); - if (path_ == &_default_path_) { + set_has_path(); + if (path_ == &::google::protobuf::internal::kEmptyString) { path_ = new ::std::string; } path_->assign(value); } inline void xtreemfs_listdirRequest::set_path(const char* value) { - _set_bit(0); - if (path_ == &_default_path_) { + set_has_path(); + if (path_ == &::google::protobuf::internal::kEmptyString) { path_ = new ::std::string; } path_->assign(value); } inline void xtreemfs_listdirRequest::set_path(const char* value, size_t size) { - _set_bit(0); - if (path_ == &_default_path_) { + set_has_path(); + if (path_ == &::google::protobuf::internal::kEmptyString) { path_ = new ::std::string; } path_->assign(reinterpret_cast(value), size); } inline ::std::string* xtreemfs_listdirRequest::mutable_path() { - _set_bit(0); - if (path_ == &_default_path_) { + set_has_path(); + if (path_ == &::google::protobuf::internal::kEmptyString) { path_ = new ::std::string; } return path_; } +inline ::std::string* xtreemfs_listdirRequest::release_path() { + clear_has_path(); + if (path_ == &::google::protobuf::internal::kEmptyString) { + return NULL; + } else { + ::std::string* temp = path_; + path_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + return temp; + } +} +inline void xtreemfs_listdirRequest::set_allocated_path(::std::string* path) { + if (path_ != &::google::protobuf::internal::kEmptyString) { + delete path_; + } + if (path) { + set_has_path(); + path_ = path; + } else { + clear_has_path(); + path_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + } +} // ------------------------------------------------------------------- @@ -10456,146 +12358,251 @@ xtreemfs_listdirResponse::mutable_names() { // optional string file_id = 1; inline bool xtreemfs_replica_addRequest::has_file_id() const { - return _has_bit(0); + return (_has_bits_[0] & 0x00000001u) != 0; +} +inline void xtreemfs_replica_addRequest::set_has_file_id() { + _has_bits_[0] |= 0x00000001u; +} +inline void xtreemfs_replica_addRequest::clear_has_file_id() { + _has_bits_[0] &= ~0x00000001u; } inline void xtreemfs_replica_addRequest::clear_file_id() { - if (file_id_ != &_default_file_id_) { + if (file_id_ != &::google::protobuf::internal::kEmptyString) { file_id_->clear(); } - _clear_bit(0); + clear_has_file_id(); } inline const ::std::string& xtreemfs_replica_addRequest::file_id() const { return *file_id_; } inline void xtreemfs_replica_addRequest::set_file_id(const ::std::string& value) { - _set_bit(0); - if (file_id_ == &_default_file_id_) { + set_has_file_id(); + if (file_id_ == &::google::protobuf::internal::kEmptyString) { file_id_ = new ::std::string; } file_id_->assign(value); } inline void xtreemfs_replica_addRequest::set_file_id(const char* value) { - _set_bit(0); - if (file_id_ == &_default_file_id_) { + set_has_file_id(); + if (file_id_ == &::google::protobuf::internal::kEmptyString) { file_id_ = new ::std::string; } file_id_->assign(value); } inline void xtreemfs_replica_addRequest::set_file_id(const char* value, size_t size) { - _set_bit(0); - if (file_id_ == &_default_file_id_) { + set_has_file_id(); + if (file_id_ == &::google::protobuf::internal::kEmptyString) { file_id_ = new ::std::string; } file_id_->assign(reinterpret_cast(value), size); } inline ::std::string* xtreemfs_replica_addRequest::mutable_file_id() { - _set_bit(0); - if (file_id_ == &_default_file_id_) { + set_has_file_id(); + if (file_id_ == &::google::protobuf::internal::kEmptyString) { file_id_ = new ::std::string; } return file_id_; } +inline ::std::string* xtreemfs_replica_addRequest::release_file_id() { + clear_has_file_id(); + if (file_id_ == &::google::protobuf::internal::kEmptyString) { + return NULL; + } else { + ::std::string* temp = file_id_; + file_id_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + return temp; + } +} +inline void xtreemfs_replica_addRequest::set_allocated_file_id(::std::string* file_id) { + if (file_id_ != &::google::protobuf::internal::kEmptyString) { + delete file_id_; + } + if (file_id) { + set_has_file_id(); + file_id_ = file_id; + } else { + clear_has_file_id(); + file_id_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + } +} // optional string path = 3; inline bool xtreemfs_replica_addRequest::has_path() const { - return _has_bit(1); + return (_has_bits_[0] & 0x00000002u) != 0; +} +inline void xtreemfs_replica_addRequest::set_has_path() { + _has_bits_[0] |= 0x00000002u; +} +inline void xtreemfs_replica_addRequest::clear_has_path() { + _has_bits_[0] &= ~0x00000002u; } inline void xtreemfs_replica_addRequest::clear_path() { - if (path_ != &_default_path_) { + if (path_ != &::google::protobuf::internal::kEmptyString) { path_->clear(); } - _clear_bit(1); + clear_has_path(); } inline const ::std::string& xtreemfs_replica_addRequest::path() const { return *path_; } inline void xtreemfs_replica_addRequest::set_path(const ::std::string& value) { - _set_bit(1); - if (path_ == &_default_path_) { + set_has_path(); + if (path_ == &::google::protobuf::internal::kEmptyString) { path_ = new ::std::string; } path_->assign(value); } inline void xtreemfs_replica_addRequest::set_path(const char* value) { - _set_bit(1); - if (path_ == &_default_path_) { + set_has_path(); + if (path_ == &::google::protobuf::internal::kEmptyString) { path_ = new ::std::string; } path_->assign(value); } inline void xtreemfs_replica_addRequest::set_path(const char* value, size_t size) { - _set_bit(1); - if (path_ == &_default_path_) { + set_has_path(); + if (path_ == &::google::protobuf::internal::kEmptyString) { path_ = new ::std::string; } path_->assign(reinterpret_cast(value), size); } inline ::std::string* xtreemfs_replica_addRequest::mutable_path() { - _set_bit(1); - if (path_ == &_default_path_) { + set_has_path(); + if (path_ == &::google::protobuf::internal::kEmptyString) { path_ = new ::std::string; } return path_; } +inline ::std::string* xtreemfs_replica_addRequest::release_path() { + clear_has_path(); + if (path_ == &::google::protobuf::internal::kEmptyString) { + return NULL; + } else { + ::std::string* temp = path_; + path_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + return temp; + } +} +inline void xtreemfs_replica_addRequest::set_allocated_path(::std::string* path) { + if (path_ != &::google::protobuf::internal::kEmptyString) { + delete path_; + } + if (path) { + set_has_path(); + path_ = path; + } else { + clear_has_path(); + path_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + } +} // optional string volume_name = 4; inline bool xtreemfs_replica_addRequest::has_volume_name() const { - return _has_bit(2); + return (_has_bits_[0] & 0x00000004u) != 0; +} +inline void xtreemfs_replica_addRequest::set_has_volume_name() { + _has_bits_[0] |= 0x00000004u; +} +inline void xtreemfs_replica_addRequest::clear_has_volume_name() { + _has_bits_[0] &= ~0x00000004u; } inline void xtreemfs_replica_addRequest::clear_volume_name() { - if (volume_name_ != &_default_volume_name_) { + if (volume_name_ != &::google::protobuf::internal::kEmptyString) { volume_name_->clear(); } - _clear_bit(2); + clear_has_volume_name(); } inline const ::std::string& xtreemfs_replica_addRequest::volume_name() const { return *volume_name_; } inline void xtreemfs_replica_addRequest::set_volume_name(const ::std::string& value) { - _set_bit(2); - if (volume_name_ == &_default_volume_name_) { + set_has_volume_name(); + if (volume_name_ == &::google::protobuf::internal::kEmptyString) { volume_name_ = new ::std::string; } volume_name_->assign(value); } inline void xtreemfs_replica_addRequest::set_volume_name(const char* value) { - _set_bit(2); - if (volume_name_ == &_default_volume_name_) { + set_has_volume_name(); + if (volume_name_ == &::google::protobuf::internal::kEmptyString) { volume_name_ = new ::std::string; } volume_name_->assign(value); } inline void xtreemfs_replica_addRequest::set_volume_name(const char* value, size_t size) { - _set_bit(2); - if (volume_name_ == &_default_volume_name_) { + set_has_volume_name(); + if (volume_name_ == &::google::protobuf::internal::kEmptyString) { volume_name_ = new ::std::string; } volume_name_->assign(reinterpret_cast(value), size); } inline ::std::string* xtreemfs_replica_addRequest::mutable_volume_name() { - _set_bit(2); - if (volume_name_ == &_default_volume_name_) { + set_has_volume_name(); + if (volume_name_ == &::google::protobuf::internal::kEmptyString) { volume_name_ = new ::std::string; } return volume_name_; } +inline ::std::string* xtreemfs_replica_addRequest::release_volume_name() { + clear_has_volume_name(); + if (volume_name_ == &::google::protobuf::internal::kEmptyString) { + return NULL; + } else { + ::std::string* temp = volume_name_; + volume_name_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + return temp; + } +} +inline void xtreemfs_replica_addRequest::set_allocated_volume_name(::std::string* volume_name) { + if (volume_name_ != &::google::protobuf::internal::kEmptyString) { + delete volume_name_; + } + if (volume_name) { + set_has_volume_name(); + volume_name_ = volume_name; + } else { + clear_has_volume_name(); + volume_name_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + } +} // required .xtreemfs.pbrpc.Replica new_replica = 2; inline bool xtreemfs_replica_addRequest::has_new_replica() const { - return _has_bit(3); + return (_has_bits_[0] & 0x00000008u) != 0; +} +inline void xtreemfs_replica_addRequest::set_has_new_replica() { + _has_bits_[0] |= 0x00000008u; +} +inline void xtreemfs_replica_addRequest::clear_has_new_replica() { + _has_bits_[0] &= ~0x00000008u; } inline void xtreemfs_replica_addRequest::clear_new_replica() { if (new_replica_ != NULL) new_replica_->::xtreemfs::pbrpc::Replica::Clear(); - _clear_bit(3); + clear_has_new_replica(); } inline const ::xtreemfs::pbrpc::Replica& xtreemfs_replica_addRequest::new_replica() const { return new_replica_ != NULL ? *new_replica_ : *default_instance_->new_replica_; } inline ::xtreemfs::pbrpc::Replica* xtreemfs_replica_addRequest::mutable_new_replica() { - _set_bit(3); + set_has_new_replica(); if (new_replica_ == NULL) new_replica_ = new ::xtreemfs::pbrpc::Replica; return new_replica_; } +inline ::xtreemfs::pbrpc::Replica* xtreemfs_replica_addRequest::release_new_replica() { + clear_has_new_replica(); + ::xtreemfs::pbrpc::Replica* temp = new_replica_; + new_replica_ = NULL; + return temp; +} +inline void xtreemfs_replica_addRequest::set_allocated_new_replica(::xtreemfs::pbrpc::Replica* new_replica) { + delete new_replica_; + new_replica_ = new_replica; + if (new_replica) { + set_has_new_replica(); + } else { + clear_has_new_replica(); + } +} // ------------------------------------------------------------------- @@ -10603,129 +12610,213 @@ inline ::xtreemfs::pbrpc::Replica* xtreemfs_replica_addRequest::mutable_new_repl // optional string file_id = 1; inline bool xtreemfs_replica_listRequest::has_file_id() const { - return _has_bit(0); + return (_has_bits_[0] & 0x00000001u) != 0; +} +inline void xtreemfs_replica_listRequest::set_has_file_id() { + _has_bits_[0] |= 0x00000001u; +} +inline void xtreemfs_replica_listRequest::clear_has_file_id() { + _has_bits_[0] &= ~0x00000001u; } inline void xtreemfs_replica_listRequest::clear_file_id() { - if (file_id_ != &_default_file_id_) { + if (file_id_ != &::google::protobuf::internal::kEmptyString) { file_id_->clear(); } - _clear_bit(0); + clear_has_file_id(); } inline const ::std::string& xtreemfs_replica_listRequest::file_id() const { return *file_id_; } inline void xtreemfs_replica_listRequest::set_file_id(const ::std::string& value) { - _set_bit(0); - if (file_id_ == &_default_file_id_) { + set_has_file_id(); + if (file_id_ == &::google::protobuf::internal::kEmptyString) { file_id_ = new ::std::string; } file_id_->assign(value); } inline void xtreemfs_replica_listRequest::set_file_id(const char* value) { - _set_bit(0); - if (file_id_ == &_default_file_id_) { + set_has_file_id(); + if (file_id_ == &::google::protobuf::internal::kEmptyString) { file_id_ = new ::std::string; } file_id_->assign(value); } inline void xtreemfs_replica_listRequest::set_file_id(const char* value, size_t size) { - _set_bit(0); - if (file_id_ == &_default_file_id_) { + set_has_file_id(); + if (file_id_ == &::google::protobuf::internal::kEmptyString) { file_id_ = new ::std::string; } file_id_->assign(reinterpret_cast(value), size); } inline ::std::string* xtreemfs_replica_listRequest::mutable_file_id() { - _set_bit(0); - if (file_id_ == &_default_file_id_) { + set_has_file_id(); + if (file_id_ == &::google::protobuf::internal::kEmptyString) { file_id_ = new ::std::string; } return file_id_; } +inline ::std::string* xtreemfs_replica_listRequest::release_file_id() { + clear_has_file_id(); + if (file_id_ == &::google::protobuf::internal::kEmptyString) { + return NULL; + } else { + ::std::string* temp = file_id_; + file_id_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + return temp; + } +} +inline void xtreemfs_replica_listRequest::set_allocated_file_id(::std::string* file_id) { + if (file_id_ != &::google::protobuf::internal::kEmptyString) { + delete file_id_; + } + if (file_id) { + set_has_file_id(); + file_id_ = file_id; + } else { + clear_has_file_id(); + file_id_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + } +} // optional string path = 2; inline bool xtreemfs_replica_listRequest::has_path() const { - return _has_bit(1); + return (_has_bits_[0] & 0x00000002u) != 0; +} +inline void xtreemfs_replica_listRequest::set_has_path() { + _has_bits_[0] |= 0x00000002u; +} +inline void xtreemfs_replica_listRequest::clear_has_path() { + _has_bits_[0] &= ~0x00000002u; } inline void xtreemfs_replica_listRequest::clear_path() { - if (path_ != &_default_path_) { + if (path_ != &::google::protobuf::internal::kEmptyString) { path_->clear(); } - _clear_bit(1); + clear_has_path(); } inline const ::std::string& xtreemfs_replica_listRequest::path() const { return *path_; } inline void xtreemfs_replica_listRequest::set_path(const ::std::string& value) { - _set_bit(1); - if (path_ == &_default_path_) { + set_has_path(); + if (path_ == &::google::protobuf::internal::kEmptyString) { path_ = new ::std::string; } path_->assign(value); } inline void xtreemfs_replica_listRequest::set_path(const char* value) { - _set_bit(1); - if (path_ == &_default_path_) { + set_has_path(); + if (path_ == &::google::protobuf::internal::kEmptyString) { path_ = new ::std::string; } path_->assign(value); } inline void xtreemfs_replica_listRequest::set_path(const char* value, size_t size) { - _set_bit(1); - if (path_ == &_default_path_) { + set_has_path(); + if (path_ == &::google::protobuf::internal::kEmptyString) { path_ = new ::std::string; } path_->assign(reinterpret_cast(value), size); } inline ::std::string* xtreemfs_replica_listRequest::mutable_path() { - _set_bit(1); - if (path_ == &_default_path_) { + set_has_path(); + if (path_ == &::google::protobuf::internal::kEmptyString) { path_ = new ::std::string; } return path_; } +inline ::std::string* xtreemfs_replica_listRequest::release_path() { + clear_has_path(); + if (path_ == &::google::protobuf::internal::kEmptyString) { + return NULL; + } else { + ::std::string* temp = path_; + path_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + return temp; + } +} +inline void xtreemfs_replica_listRequest::set_allocated_path(::std::string* path) { + if (path_ != &::google::protobuf::internal::kEmptyString) { + delete path_; + } + if (path) { + set_has_path(); + path_ = path; + } else { + clear_has_path(); + path_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + } +} // optional string volume_name = 3; inline bool xtreemfs_replica_listRequest::has_volume_name() const { - return _has_bit(2); + return (_has_bits_[0] & 0x00000004u) != 0; +} +inline void xtreemfs_replica_listRequest::set_has_volume_name() { + _has_bits_[0] |= 0x00000004u; +} +inline void xtreemfs_replica_listRequest::clear_has_volume_name() { + _has_bits_[0] &= ~0x00000004u; } inline void xtreemfs_replica_listRequest::clear_volume_name() { - if (volume_name_ != &_default_volume_name_) { + if (volume_name_ != &::google::protobuf::internal::kEmptyString) { volume_name_->clear(); } - _clear_bit(2); + clear_has_volume_name(); } inline const ::std::string& xtreemfs_replica_listRequest::volume_name() const { return *volume_name_; } inline void xtreemfs_replica_listRequest::set_volume_name(const ::std::string& value) { - _set_bit(2); - if (volume_name_ == &_default_volume_name_) { + set_has_volume_name(); + if (volume_name_ == &::google::protobuf::internal::kEmptyString) { volume_name_ = new ::std::string; } volume_name_->assign(value); } inline void xtreemfs_replica_listRequest::set_volume_name(const char* value) { - _set_bit(2); - if (volume_name_ == &_default_volume_name_) { + set_has_volume_name(); + if (volume_name_ == &::google::protobuf::internal::kEmptyString) { volume_name_ = new ::std::string; } volume_name_->assign(value); } inline void xtreemfs_replica_listRequest::set_volume_name(const char* value, size_t size) { - _set_bit(2); - if (volume_name_ == &_default_volume_name_) { + set_has_volume_name(); + if (volume_name_ == &::google::protobuf::internal::kEmptyString) { volume_name_ = new ::std::string; } volume_name_->assign(reinterpret_cast(value), size); } inline ::std::string* xtreemfs_replica_listRequest::mutable_volume_name() { - _set_bit(2); - if (volume_name_ == &_default_volume_name_) { + set_has_volume_name(); + if (volume_name_ == &::google::protobuf::internal::kEmptyString) { volume_name_ = new ::std::string; } return volume_name_; } +inline ::std::string* xtreemfs_replica_listRequest::release_volume_name() { + clear_has_volume_name(); + if (volume_name_ == &::google::protobuf::internal::kEmptyString) { + return NULL; + } else { + ::std::string* temp = volume_name_; + volume_name_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + return temp; + } +} +inline void xtreemfs_replica_listRequest::set_allocated_volume_name(::std::string* volume_name) { + if (volume_name_ != &::google::protobuf::internal::kEmptyString) { + delete volume_name_; + } + if (volume_name) { + set_has_volume_name(); + volume_name_ = volume_name; + } else { + clear_has_volume_name(); + volume_name_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + } +} // ------------------------------------------------------------------- @@ -10733,171 +12824,283 @@ inline ::std::string* xtreemfs_replica_listRequest::mutable_volume_name() { // optional string file_id = 1; inline bool xtreemfs_replica_removeRequest::has_file_id() const { - return _has_bit(0); + return (_has_bits_[0] & 0x00000001u) != 0; +} +inline void xtreemfs_replica_removeRequest::set_has_file_id() { + _has_bits_[0] |= 0x00000001u; +} +inline void xtreemfs_replica_removeRequest::clear_has_file_id() { + _has_bits_[0] &= ~0x00000001u; } inline void xtreemfs_replica_removeRequest::clear_file_id() { - if (file_id_ != &_default_file_id_) { + if (file_id_ != &::google::protobuf::internal::kEmptyString) { file_id_->clear(); } - _clear_bit(0); + clear_has_file_id(); } inline const ::std::string& xtreemfs_replica_removeRequest::file_id() const { return *file_id_; } inline void xtreemfs_replica_removeRequest::set_file_id(const ::std::string& value) { - _set_bit(0); - if (file_id_ == &_default_file_id_) { + set_has_file_id(); + if (file_id_ == &::google::protobuf::internal::kEmptyString) { file_id_ = new ::std::string; } file_id_->assign(value); } inline void xtreemfs_replica_removeRequest::set_file_id(const char* value) { - _set_bit(0); - if (file_id_ == &_default_file_id_) { + set_has_file_id(); + if (file_id_ == &::google::protobuf::internal::kEmptyString) { file_id_ = new ::std::string; } file_id_->assign(value); } inline void xtreemfs_replica_removeRequest::set_file_id(const char* value, size_t size) { - _set_bit(0); - if (file_id_ == &_default_file_id_) { + set_has_file_id(); + if (file_id_ == &::google::protobuf::internal::kEmptyString) { file_id_ = new ::std::string; } file_id_->assign(reinterpret_cast(value), size); } inline ::std::string* xtreemfs_replica_removeRequest::mutable_file_id() { - _set_bit(0); - if (file_id_ == &_default_file_id_) { + set_has_file_id(); + if (file_id_ == &::google::protobuf::internal::kEmptyString) { file_id_ = new ::std::string; } return file_id_; } +inline ::std::string* xtreemfs_replica_removeRequest::release_file_id() { + clear_has_file_id(); + if (file_id_ == &::google::protobuf::internal::kEmptyString) { + return NULL; + } else { + ::std::string* temp = file_id_; + file_id_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + return temp; + } +} +inline void xtreemfs_replica_removeRequest::set_allocated_file_id(::std::string* file_id) { + if (file_id_ != &::google::protobuf::internal::kEmptyString) { + delete file_id_; + } + if (file_id) { + set_has_file_id(); + file_id_ = file_id; + } else { + clear_has_file_id(); + file_id_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + } +} // optional string path = 3; inline bool xtreemfs_replica_removeRequest::has_path() const { - return _has_bit(1); + return (_has_bits_[0] & 0x00000002u) != 0; +} +inline void xtreemfs_replica_removeRequest::set_has_path() { + _has_bits_[0] |= 0x00000002u; +} +inline void xtreemfs_replica_removeRequest::clear_has_path() { + _has_bits_[0] &= ~0x00000002u; } inline void xtreemfs_replica_removeRequest::clear_path() { - if (path_ != &_default_path_) { + if (path_ != &::google::protobuf::internal::kEmptyString) { path_->clear(); } - _clear_bit(1); + clear_has_path(); } inline const ::std::string& xtreemfs_replica_removeRequest::path() const { return *path_; } inline void xtreemfs_replica_removeRequest::set_path(const ::std::string& value) { - _set_bit(1); - if (path_ == &_default_path_) { + set_has_path(); + if (path_ == &::google::protobuf::internal::kEmptyString) { path_ = new ::std::string; } path_->assign(value); } inline void xtreemfs_replica_removeRequest::set_path(const char* value) { - _set_bit(1); - if (path_ == &_default_path_) { + set_has_path(); + if (path_ == &::google::protobuf::internal::kEmptyString) { path_ = new ::std::string; } path_->assign(value); } inline void xtreemfs_replica_removeRequest::set_path(const char* value, size_t size) { - _set_bit(1); - if (path_ == &_default_path_) { + set_has_path(); + if (path_ == &::google::protobuf::internal::kEmptyString) { path_ = new ::std::string; } path_->assign(reinterpret_cast(value), size); } inline ::std::string* xtreemfs_replica_removeRequest::mutable_path() { - _set_bit(1); - if (path_ == &_default_path_) { + set_has_path(); + if (path_ == &::google::protobuf::internal::kEmptyString) { path_ = new ::std::string; } return path_; } +inline ::std::string* xtreemfs_replica_removeRequest::release_path() { + clear_has_path(); + if (path_ == &::google::protobuf::internal::kEmptyString) { + return NULL; + } else { + ::std::string* temp = path_; + path_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + return temp; + } +} +inline void xtreemfs_replica_removeRequest::set_allocated_path(::std::string* path) { + if (path_ != &::google::protobuf::internal::kEmptyString) { + delete path_; + } + if (path) { + set_has_path(); + path_ = path; + } else { + clear_has_path(); + path_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + } +} // optional string volume_name = 4; inline bool xtreemfs_replica_removeRequest::has_volume_name() const { - return _has_bit(2); + return (_has_bits_[0] & 0x00000004u) != 0; +} +inline void xtreemfs_replica_removeRequest::set_has_volume_name() { + _has_bits_[0] |= 0x00000004u; +} +inline void xtreemfs_replica_removeRequest::clear_has_volume_name() { + _has_bits_[0] &= ~0x00000004u; } inline void xtreemfs_replica_removeRequest::clear_volume_name() { - if (volume_name_ != &_default_volume_name_) { + if (volume_name_ != &::google::protobuf::internal::kEmptyString) { volume_name_->clear(); } - _clear_bit(2); + clear_has_volume_name(); } inline const ::std::string& xtreemfs_replica_removeRequest::volume_name() const { return *volume_name_; } inline void xtreemfs_replica_removeRequest::set_volume_name(const ::std::string& value) { - _set_bit(2); - if (volume_name_ == &_default_volume_name_) { + set_has_volume_name(); + if (volume_name_ == &::google::protobuf::internal::kEmptyString) { volume_name_ = new ::std::string; } volume_name_->assign(value); } inline void xtreemfs_replica_removeRequest::set_volume_name(const char* value) { - _set_bit(2); - if (volume_name_ == &_default_volume_name_) { + set_has_volume_name(); + if (volume_name_ == &::google::protobuf::internal::kEmptyString) { volume_name_ = new ::std::string; } volume_name_->assign(value); } inline void xtreemfs_replica_removeRequest::set_volume_name(const char* value, size_t size) { - _set_bit(2); - if (volume_name_ == &_default_volume_name_) { + set_has_volume_name(); + if (volume_name_ == &::google::protobuf::internal::kEmptyString) { volume_name_ = new ::std::string; } volume_name_->assign(reinterpret_cast(value), size); } inline ::std::string* xtreemfs_replica_removeRequest::mutable_volume_name() { - _set_bit(2); - if (volume_name_ == &_default_volume_name_) { + set_has_volume_name(); + if (volume_name_ == &::google::protobuf::internal::kEmptyString) { volume_name_ = new ::std::string; } return volume_name_; } +inline ::std::string* xtreemfs_replica_removeRequest::release_volume_name() { + clear_has_volume_name(); + if (volume_name_ == &::google::protobuf::internal::kEmptyString) { + return NULL; + } else { + ::std::string* temp = volume_name_; + volume_name_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + return temp; + } +} +inline void xtreemfs_replica_removeRequest::set_allocated_volume_name(::std::string* volume_name) { + if (volume_name_ != &::google::protobuf::internal::kEmptyString) { + delete volume_name_; + } + if (volume_name) { + set_has_volume_name(); + volume_name_ = volume_name; + } else { + clear_has_volume_name(); + volume_name_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + } +} // required string osd_uuid = 2; inline bool xtreemfs_replica_removeRequest::has_osd_uuid() const { - return _has_bit(3); + return (_has_bits_[0] & 0x00000008u) != 0; +} +inline void xtreemfs_replica_removeRequest::set_has_osd_uuid() { + _has_bits_[0] |= 0x00000008u; +} +inline void xtreemfs_replica_removeRequest::clear_has_osd_uuid() { + _has_bits_[0] &= ~0x00000008u; } inline void xtreemfs_replica_removeRequest::clear_osd_uuid() { - if (osd_uuid_ != &_default_osd_uuid_) { + if (osd_uuid_ != &::google::protobuf::internal::kEmptyString) { osd_uuid_->clear(); } - _clear_bit(3); + clear_has_osd_uuid(); } inline const ::std::string& xtreemfs_replica_removeRequest::osd_uuid() const { return *osd_uuid_; } inline void xtreemfs_replica_removeRequest::set_osd_uuid(const ::std::string& value) { - _set_bit(3); - if (osd_uuid_ == &_default_osd_uuid_) { + set_has_osd_uuid(); + if (osd_uuid_ == &::google::protobuf::internal::kEmptyString) { osd_uuid_ = new ::std::string; } osd_uuid_->assign(value); } inline void xtreemfs_replica_removeRequest::set_osd_uuid(const char* value) { - _set_bit(3); - if (osd_uuid_ == &_default_osd_uuid_) { + set_has_osd_uuid(); + if (osd_uuid_ == &::google::protobuf::internal::kEmptyString) { osd_uuid_ = new ::std::string; } osd_uuid_->assign(value); } inline void xtreemfs_replica_removeRequest::set_osd_uuid(const char* value, size_t size) { - _set_bit(3); - if (osd_uuid_ == &_default_osd_uuid_) { + set_has_osd_uuid(); + if (osd_uuid_ == &::google::protobuf::internal::kEmptyString) { osd_uuid_ = new ::std::string; } osd_uuid_->assign(reinterpret_cast(value), size); } inline ::std::string* xtreemfs_replica_removeRequest::mutable_osd_uuid() { - _set_bit(3); - if (osd_uuid_ == &_default_osd_uuid_) { + set_has_osd_uuid(); + if (osd_uuid_ == &::google::protobuf::internal::kEmptyString) { osd_uuid_ = new ::std::string; } return osd_uuid_; } +inline ::std::string* xtreemfs_replica_removeRequest::release_osd_uuid() { + clear_has_osd_uuid(); + if (osd_uuid_ == &::google::protobuf::internal::kEmptyString) { + return NULL; + } else { + ::std::string* temp = osd_uuid_; + osd_uuid_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + return temp; + } +} +inline void xtreemfs_replica_removeRequest::set_allocated_osd_uuid(::std::string* osd_uuid) { + if (osd_uuid_ != &::google::protobuf::internal::kEmptyString) { + delete osd_uuid_; + } + if (osd_uuid) { + set_has_osd_uuid(); + osd_uuid_ = osd_uuid; + } else { + clear_has_osd_uuid(); + osd_uuid_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + } +} // ------------------------------------------------------------------- @@ -10905,159 +13108,255 @@ inline ::std::string* xtreemfs_replica_removeRequest::mutable_osd_uuid() { // required string file_path = 1; inline bool xtreemfs_restore_fileRequest::has_file_path() const { - return _has_bit(0); + return (_has_bits_[0] & 0x00000001u) != 0; +} +inline void xtreemfs_restore_fileRequest::set_has_file_path() { + _has_bits_[0] |= 0x00000001u; +} +inline void xtreemfs_restore_fileRequest::clear_has_file_path() { + _has_bits_[0] &= ~0x00000001u; } inline void xtreemfs_restore_fileRequest::clear_file_path() { - if (file_path_ != &_default_file_path_) { + if (file_path_ != &::google::protobuf::internal::kEmptyString) { file_path_->clear(); } - _clear_bit(0); + clear_has_file_path(); } inline const ::std::string& xtreemfs_restore_fileRequest::file_path() const { return *file_path_; } inline void xtreemfs_restore_fileRequest::set_file_path(const ::std::string& value) { - _set_bit(0); - if (file_path_ == &_default_file_path_) { + set_has_file_path(); + if (file_path_ == &::google::protobuf::internal::kEmptyString) { file_path_ = new ::std::string; } file_path_->assign(value); } inline void xtreemfs_restore_fileRequest::set_file_path(const char* value) { - _set_bit(0); - if (file_path_ == &_default_file_path_) { + set_has_file_path(); + if (file_path_ == &::google::protobuf::internal::kEmptyString) { file_path_ = new ::std::string; } file_path_->assign(value); } inline void xtreemfs_restore_fileRequest::set_file_path(const char* value, size_t size) { - _set_bit(0); - if (file_path_ == &_default_file_path_) { + set_has_file_path(); + if (file_path_ == &::google::protobuf::internal::kEmptyString) { file_path_ = new ::std::string; } file_path_->assign(reinterpret_cast(value), size); } inline ::std::string* xtreemfs_restore_fileRequest::mutable_file_path() { - _set_bit(0); - if (file_path_ == &_default_file_path_) { + set_has_file_path(); + if (file_path_ == &::google::protobuf::internal::kEmptyString) { file_path_ = new ::std::string; } return file_path_; } +inline ::std::string* xtreemfs_restore_fileRequest::release_file_path() { + clear_has_file_path(); + if (file_path_ == &::google::protobuf::internal::kEmptyString) { + return NULL; + } else { + ::std::string* temp = file_path_; + file_path_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + return temp; + } +} +inline void xtreemfs_restore_fileRequest::set_allocated_file_path(::std::string* file_path) { + if (file_path_ != &::google::protobuf::internal::kEmptyString) { + delete file_path_; + } + if (file_path) { + set_has_file_path(); + file_path_ = file_path; + } else { + clear_has_file_path(); + file_path_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + } +} // required string file_id = 2; inline bool xtreemfs_restore_fileRequest::has_file_id() const { - return _has_bit(1); + return (_has_bits_[0] & 0x00000002u) != 0; +} +inline void xtreemfs_restore_fileRequest::set_has_file_id() { + _has_bits_[0] |= 0x00000002u; +} +inline void xtreemfs_restore_fileRequest::clear_has_file_id() { + _has_bits_[0] &= ~0x00000002u; } inline void xtreemfs_restore_fileRequest::clear_file_id() { - if (file_id_ != &_default_file_id_) { + if (file_id_ != &::google::protobuf::internal::kEmptyString) { file_id_->clear(); } - _clear_bit(1); + clear_has_file_id(); } inline const ::std::string& xtreemfs_restore_fileRequest::file_id() const { return *file_id_; } inline void xtreemfs_restore_fileRequest::set_file_id(const ::std::string& value) { - _set_bit(1); - if (file_id_ == &_default_file_id_) { + set_has_file_id(); + if (file_id_ == &::google::protobuf::internal::kEmptyString) { file_id_ = new ::std::string; } file_id_->assign(value); } inline void xtreemfs_restore_fileRequest::set_file_id(const char* value) { - _set_bit(1); - if (file_id_ == &_default_file_id_) { + set_has_file_id(); + if (file_id_ == &::google::protobuf::internal::kEmptyString) { file_id_ = new ::std::string; } file_id_->assign(value); } inline void xtreemfs_restore_fileRequest::set_file_id(const char* value, size_t size) { - _set_bit(1); - if (file_id_ == &_default_file_id_) { + set_has_file_id(); + if (file_id_ == &::google::protobuf::internal::kEmptyString) { file_id_ = new ::std::string; } file_id_->assign(reinterpret_cast(value), size); } inline ::std::string* xtreemfs_restore_fileRequest::mutable_file_id() { - _set_bit(1); - if (file_id_ == &_default_file_id_) { + set_has_file_id(); + if (file_id_ == &::google::protobuf::internal::kEmptyString) { file_id_ = new ::std::string; } return file_id_; } +inline ::std::string* xtreemfs_restore_fileRequest::release_file_id() { + clear_has_file_id(); + if (file_id_ == &::google::protobuf::internal::kEmptyString) { + return NULL; + } else { + ::std::string* temp = file_id_; + file_id_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + return temp; + } +} +inline void xtreemfs_restore_fileRequest::set_allocated_file_id(::std::string* file_id) { + if (file_id_ != &::google::protobuf::internal::kEmptyString) { + delete file_id_; + } + if (file_id) { + set_has_file_id(); + file_id_ = file_id; + } else { + clear_has_file_id(); + file_id_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + } +} // required fixed64 file_size = 3; inline bool xtreemfs_restore_fileRequest::has_file_size() const { - return _has_bit(2); + return (_has_bits_[0] & 0x00000004u) != 0; +} +inline void xtreemfs_restore_fileRequest::set_has_file_size() { + _has_bits_[0] |= 0x00000004u; +} +inline void xtreemfs_restore_fileRequest::clear_has_file_size() { + _has_bits_[0] &= ~0x00000004u; } inline void xtreemfs_restore_fileRequest::clear_file_size() { file_size_ = GOOGLE_ULONGLONG(0); - _clear_bit(2); + clear_has_file_size(); } inline ::google::protobuf::uint64 xtreemfs_restore_fileRequest::file_size() const { return file_size_; } inline void xtreemfs_restore_fileRequest::set_file_size(::google::protobuf::uint64 value) { - _set_bit(2); + set_has_file_size(); file_size_ = value; } // required string osd_uuid = 4; inline bool xtreemfs_restore_fileRequest::has_osd_uuid() const { - return _has_bit(3); + return (_has_bits_[0] & 0x00000008u) != 0; +} +inline void xtreemfs_restore_fileRequest::set_has_osd_uuid() { + _has_bits_[0] |= 0x00000008u; +} +inline void xtreemfs_restore_fileRequest::clear_has_osd_uuid() { + _has_bits_[0] &= ~0x00000008u; } inline void xtreemfs_restore_fileRequest::clear_osd_uuid() { - if (osd_uuid_ != &_default_osd_uuid_) { + if (osd_uuid_ != &::google::protobuf::internal::kEmptyString) { osd_uuid_->clear(); } - _clear_bit(3); + clear_has_osd_uuid(); } inline const ::std::string& xtreemfs_restore_fileRequest::osd_uuid() const { return *osd_uuid_; } inline void xtreemfs_restore_fileRequest::set_osd_uuid(const ::std::string& value) { - _set_bit(3); - if (osd_uuid_ == &_default_osd_uuid_) { + set_has_osd_uuid(); + if (osd_uuid_ == &::google::protobuf::internal::kEmptyString) { osd_uuid_ = new ::std::string; } osd_uuid_->assign(value); } inline void xtreemfs_restore_fileRequest::set_osd_uuid(const char* value) { - _set_bit(3); - if (osd_uuid_ == &_default_osd_uuid_) { + set_has_osd_uuid(); + if (osd_uuid_ == &::google::protobuf::internal::kEmptyString) { osd_uuid_ = new ::std::string; } osd_uuid_->assign(value); } inline void xtreemfs_restore_fileRequest::set_osd_uuid(const char* value, size_t size) { - _set_bit(3); - if (osd_uuid_ == &_default_osd_uuid_) { + set_has_osd_uuid(); + if (osd_uuid_ == &::google::protobuf::internal::kEmptyString) { osd_uuid_ = new ::std::string; } osd_uuid_->assign(reinterpret_cast(value), size); } inline ::std::string* xtreemfs_restore_fileRequest::mutable_osd_uuid() { - _set_bit(3); - if (osd_uuid_ == &_default_osd_uuid_) { + set_has_osd_uuid(); + if (osd_uuid_ == &::google::protobuf::internal::kEmptyString) { osd_uuid_ = new ::std::string; } return osd_uuid_; } +inline ::std::string* xtreemfs_restore_fileRequest::release_osd_uuid() { + clear_has_osd_uuid(); + if (osd_uuid_ == &::google::protobuf::internal::kEmptyString) { + return NULL; + } else { + ::std::string* temp = osd_uuid_; + osd_uuid_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + return temp; + } +} +inline void xtreemfs_restore_fileRequest::set_allocated_osd_uuid(::std::string* osd_uuid) { + if (osd_uuid_ != &::google::protobuf::internal::kEmptyString) { + delete osd_uuid_; + } + if (osd_uuid) { + set_has_osd_uuid(); + osd_uuid_ = osd_uuid; + } else { + clear_has_osd_uuid(); + osd_uuid_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + } +} // required fixed32 stripe_size = 5; inline bool xtreemfs_restore_fileRequest::has_stripe_size() const { - return _has_bit(4); + return (_has_bits_[0] & 0x00000010u) != 0; +} +inline void xtreemfs_restore_fileRequest::set_has_stripe_size() { + _has_bits_[0] |= 0x00000010u; +} +inline void xtreemfs_restore_fileRequest::clear_has_stripe_size() { + _has_bits_[0] &= ~0x00000010u; } inline void xtreemfs_restore_fileRequest::clear_stripe_size() { stripe_size_ = 0u; - _clear_bit(4); + clear_has_stripe_size(); } inline ::google::protobuf::uint32 xtreemfs_restore_fileRequest::stripe_size() const { return stripe_size_; } inline void xtreemfs_restore_fileRequest::set_stripe_size(::google::protobuf::uint32 value) { - _set_bit(4); + set_has_stripe_size(); stripe_size_ = value; } @@ -11067,45 +13366,73 @@ inline void xtreemfs_restore_fileRequest::set_stripe_size(::google::protobuf::ui // required string volume_name = 1; inline bool xtreemfs_rmvolRequest::has_volume_name() const { - return _has_bit(0); + return (_has_bits_[0] & 0x00000001u) != 0; +} +inline void xtreemfs_rmvolRequest::set_has_volume_name() { + _has_bits_[0] |= 0x00000001u; +} +inline void xtreemfs_rmvolRequest::clear_has_volume_name() { + _has_bits_[0] &= ~0x00000001u; } inline void xtreemfs_rmvolRequest::clear_volume_name() { - if (volume_name_ != &_default_volume_name_) { + if (volume_name_ != &::google::protobuf::internal::kEmptyString) { volume_name_->clear(); } - _clear_bit(0); + clear_has_volume_name(); } inline const ::std::string& xtreemfs_rmvolRequest::volume_name() const { return *volume_name_; } inline void xtreemfs_rmvolRequest::set_volume_name(const ::std::string& value) { - _set_bit(0); - if (volume_name_ == &_default_volume_name_) { + set_has_volume_name(); + if (volume_name_ == &::google::protobuf::internal::kEmptyString) { volume_name_ = new ::std::string; } volume_name_->assign(value); } inline void xtreemfs_rmvolRequest::set_volume_name(const char* value) { - _set_bit(0); - if (volume_name_ == &_default_volume_name_) { + set_has_volume_name(); + if (volume_name_ == &::google::protobuf::internal::kEmptyString) { volume_name_ = new ::std::string; } volume_name_->assign(value); } inline void xtreemfs_rmvolRequest::set_volume_name(const char* value, size_t size) { - _set_bit(0); - if (volume_name_ == &_default_volume_name_) { + set_has_volume_name(); + if (volume_name_ == &::google::protobuf::internal::kEmptyString) { volume_name_ = new ::std::string; } volume_name_->assign(reinterpret_cast(value), size); } inline ::std::string* xtreemfs_rmvolRequest::mutable_volume_name() { - _set_bit(0); - if (volume_name_ == &_default_volume_name_) { + set_has_volume_name(); + if (volume_name_ == &::google::protobuf::internal::kEmptyString) { volume_name_ = new ::std::string; } return volume_name_; } +inline ::std::string* xtreemfs_rmvolRequest::release_volume_name() { + clear_has_volume_name(); + if (volume_name_ == &::google::protobuf::internal::kEmptyString) { + return NULL; + } else { + ::std::string* temp = volume_name_; + volume_name_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + return temp; + } +} +inline void xtreemfs_rmvolRequest::set_allocated_volume_name(::std::string* volume_name) { + if (volume_name_ != &::google::protobuf::internal::kEmptyString) { + delete volume_name_; + } + if (volume_name) { + set_has_volume_name(); + volume_name_ = volume_name; + } else { + clear_has_volume_name(); + volume_name_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + } +} // ------------------------------------------------------------------- @@ -11113,70 +13440,139 @@ inline ::std::string* xtreemfs_rmvolRequest::mutable_volume_name() { // required .xtreemfs.pbrpc.XCap xcap = 1; inline bool xtreemfs_update_file_sizeRequest::has_xcap() const { - return _has_bit(0); + return (_has_bits_[0] & 0x00000001u) != 0; +} +inline void xtreemfs_update_file_sizeRequest::set_has_xcap() { + _has_bits_[0] |= 0x00000001u; +} +inline void xtreemfs_update_file_sizeRequest::clear_has_xcap() { + _has_bits_[0] &= ~0x00000001u; } inline void xtreemfs_update_file_sizeRequest::clear_xcap() { if (xcap_ != NULL) xcap_->::xtreemfs::pbrpc::XCap::Clear(); - _clear_bit(0); + clear_has_xcap(); } inline const ::xtreemfs::pbrpc::XCap& xtreemfs_update_file_sizeRequest::xcap() const { return xcap_ != NULL ? *xcap_ : *default_instance_->xcap_; } inline ::xtreemfs::pbrpc::XCap* xtreemfs_update_file_sizeRequest::mutable_xcap() { - _set_bit(0); + set_has_xcap(); if (xcap_ == NULL) xcap_ = new ::xtreemfs::pbrpc::XCap; return xcap_; } +inline ::xtreemfs::pbrpc::XCap* xtreemfs_update_file_sizeRequest::release_xcap() { + clear_has_xcap(); + ::xtreemfs::pbrpc::XCap* temp = xcap_; + xcap_ = NULL; + return temp; +} +inline void xtreemfs_update_file_sizeRequest::set_allocated_xcap(::xtreemfs::pbrpc::XCap* xcap) { + delete xcap_; + xcap_ = xcap; + if (xcap) { + set_has_xcap(); + } else { + clear_has_xcap(); + } +} // required .xtreemfs.pbrpc.OSDWriteResponse osd_write_response = 2; inline bool xtreemfs_update_file_sizeRequest::has_osd_write_response() const { - return _has_bit(1); + return (_has_bits_[0] & 0x00000002u) != 0; +} +inline void xtreemfs_update_file_sizeRequest::set_has_osd_write_response() { + _has_bits_[0] |= 0x00000002u; +} +inline void xtreemfs_update_file_sizeRequest::clear_has_osd_write_response() { + _has_bits_[0] &= ~0x00000002u; } inline void xtreemfs_update_file_sizeRequest::clear_osd_write_response() { if (osd_write_response_ != NULL) osd_write_response_->::xtreemfs::pbrpc::OSDWriteResponse::Clear(); - _clear_bit(1); + clear_has_osd_write_response(); } inline const ::xtreemfs::pbrpc::OSDWriteResponse& xtreemfs_update_file_sizeRequest::osd_write_response() const { return osd_write_response_ != NULL ? *osd_write_response_ : *default_instance_->osd_write_response_; } inline ::xtreemfs::pbrpc::OSDWriteResponse* xtreemfs_update_file_sizeRequest::mutable_osd_write_response() { - _set_bit(1); + set_has_osd_write_response(); if (osd_write_response_ == NULL) osd_write_response_ = new ::xtreemfs::pbrpc::OSDWriteResponse; return osd_write_response_; } +inline ::xtreemfs::pbrpc::OSDWriteResponse* xtreemfs_update_file_sizeRequest::release_osd_write_response() { + clear_has_osd_write_response(); + ::xtreemfs::pbrpc::OSDWriteResponse* temp = osd_write_response_; + osd_write_response_ = NULL; + return temp; +} +inline void xtreemfs_update_file_sizeRequest::set_allocated_osd_write_response(::xtreemfs::pbrpc::OSDWriteResponse* osd_write_response) { + delete osd_write_response_; + osd_write_response_ = osd_write_response; + if (osd_write_response) { + set_has_osd_write_response(); + } else { + clear_has_osd_write_response(); + } +} // optional bool close_file = 3; inline bool xtreemfs_update_file_sizeRequest::has_close_file() const { - return _has_bit(2); + return (_has_bits_[0] & 0x00000004u) != 0; +} +inline void xtreemfs_update_file_sizeRequest::set_has_close_file() { + _has_bits_[0] |= 0x00000004u; +} +inline void xtreemfs_update_file_sizeRequest::clear_has_close_file() { + _has_bits_[0] &= ~0x00000004u; } inline void xtreemfs_update_file_sizeRequest::clear_close_file() { close_file_ = false; - _clear_bit(2); + clear_has_close_file(); } inline bool xtreemfs_update_file_sizeRequest::close_file() const { return close_file_; } inline void xtreemfs_update_file_sizeRequest::set_close_file(bool value) { - _set_bit(2); + set_has_close_file(); close_file_ = value; } // optional .xtreemfs.pbrpc.VivaldiCoordinates coordinates = 4; inline bool xtreemfs_update_file_sizeRequest::has_coordinates() const { - return _has_bit(3); + return (_has_bits_[0] & 0x00000008u) != 0; +} +inline void xtreemfs_update_file_sizeRequest::set_has_coordinates() { + _has_bits_[0] |= 0x00000008u; +} +inline void xtreemfs_update_file_sizeRequest::clear_has_coordinates() { + _has_bits_[0] &= ~0x00000008u; } inline void xtreemfs_update_file_sizeRequest::clear_coordinates() { if (coordinates_ != NULL) coordinates_->::xtreemfs::pbrpc::VivaldiCoordinates::Clear(); - _clear_bit(3); + clear_has_coordinates(); } inline const ::xtreemfs::pbrpc::VivaldiCoordinates& xtreemfs_update_file_sizeRequest::coordinates() const { return coordinates_ != NULL ? *coordinates_ : *default_instance_->coordinates_; } inline ::xtreemfs::pbrpc::VivaldiCoordinates* xtreemfs_update_file_sizeRequest::mutable_coordinates() { - _set_bit(3); + set_has_coordinates(); if (coordinates_ == NULL) coordinates_ = new ::xtreemfs::pbrpc::VivaldiCoordinates; return coordinates_; } +inline ::xtreemfs::pbrpc::VivaldiCoordinates* xtreemfs_update_file_sizeRequest::release_coordinates() { + clear_has_coordinates(); + ::xtreemfs::pbrpc::VivaldiCoordinates* temp = coordinates_; + coordinates_ = NULL; + return temp; +} +inline void xtreemfs_update_file_sizeRequest::set_allocated_coordinates(::xtreemfs::pbrpc::VivaldiCoordinates* coordinates) { + delete coordinates_; + coordinates_ = coordinates; + if (coordinates) { + set_has_coordinates(); + } else { + clear_has_coordinates(); + } +} // ------------------------------------------------------------------- @@ -11184,87 +13580,143 @@ inline ::xtreemfs::pbrpc::VivaldiCoordinates* xtreemfs_update_file_sizeRequest:: // required string file_id = 1; inline bool xtreemfs_set_replica_update_policyRequest::has_file_id() const { - return _has_bit(0); + return (_has_bits_[0] & 0x00000001u) != 0; +} +inline void xtreemfs_set_replica_update_policyRequest::set_has_file_id() { + _has_bits_[0] |= 0x00000001u; +} +inline void xtreemfs_set_replica_update_policyRequest::clear_has_file_id() { + _has_bits_[0] &= ~0x00000001u; } inline void xtreemfs_set_replica_update_policyRequest::clear_file_id() { - if (file_id_ != &_default_file_id_) { + if (file_id_ != &::google::protobuf::internal::kEmptyString) { file_id_->clear(); } - _clear_bit(0); + clear_has_file_id(); } inline const ::std::string& xtreemfs_set_replica_update_policyRequest::file_id() const { return *file_id_; } inline void xtreemfs_set_replica_update_policyRequest::set_file_id(const ::std::string& value) { - _set_bit(0); - if (file_id_ == &_default_file_id_) { + set_has_file_id(); + if (file_id_ == &::google::protobuf::internal::kEmptyString) { file_id_ = new ::std::string; } file_id_->assign(value); } inline void xtreemfs_set_replica_update_policyRequest::set_file_id(const char* value) { - _set_bit(0); - if (file_id_ == &_default_file_id_) { + set_has_file_id(); + if (file_id_ == &::google::protobuf::internal::kEmptyString) { file_id_ = new ::std::string; } file_id_->assign(value); } inline void xtreemfs_set_replica_update_policyRequest::set_file_id(const char* value, size_t size) { - _set_bit(0); - if (file_id_ == &_default_file_id_) { + set_has_file_id(); + if (file_id_ == &::google::protobuf::internal::kEmptyString) { file_id_ = new ::std::string; } file_id_->assign(reinterpret_cast(value), size); } inline ::std::string* xtreemfs_set_replica_update_policyRequest::mutable_file_id() { - _set_bit(0); - if (file_id_ == &_default_file_id_) { + set_has_file_id(); + if (file_id_ == &::google::protobuf::internal::kEmptyString) { file_id_ = new ::std::string; } return file_id_; } +inline ::std::string* xtreemfs_set_replica_update_policyRequest::release_file_id() { + clear_has_file_id(); + if (file_id_ == &::google::protobuf::internal::kEmptyString) { + return NULL; + } else { + ::std::string* temp = file_id_; + file_id_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + return temp; + } +} +inline void xtreemfs_set_replica_update_policyRequest::set_allocated_file_id(::std::string* file_id) { + if (file_id_ != &::google::protobuf::internal::kEmptyString) { + delete file_id_; + } + if (file_id) { + set_has_file_id(); + file_id_ = file_id; + } else { + clear_has_file_id(); + file_id_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + } +} // required string update_policy = 2; inline bool xtreemfs_set_replica_update_policyRequest::has_update_policy() const { - return _has_bit(1); + return (_has_bits_[0] & 0x00000002u) != 0; +} +inline void xtreemfs_set_replica_update_policyRequest::set_has_update_policy() { + _has_bits_[0] |= 0x00000002u; +} +inline void xtreemfs_set_replica_update_policyRequest::clear_has_update_policy() { + _has_bits_[0] &= ~0x00000002u; } inline void xtreemfs_set_replica_update_policyRequest::clear_update_policy() { - if (update_policy_ != &_default_update_policy_) { + if (update_policy_ != &::google::protobuf::internal::kEmptyString) { update_policy_->clear(); } - _clear_bit(1); + clear_has_update_policy(); } inline const ::std::string& xtreemfs_set_replica_update_policyRequest::update_policy() const { return *update_policy_; } inline void xtreemfs_set_replica_update_policyRequest::set_update_policy(const ::std::string& value) { - _set_bit(1); - if (update_policy_ == &_default_update_policy_) { + set_has_update_policy(); + if (update_policy_ == &::google::protobuf::internal::kEmptyString) { update_policy_ = new ::std::string; } update_policy_->assign(value); } inline void xtreemfs_set_replica_update_policyRequest::set_update_policy(const char* value) { - _set_bit(1); - if (update_policy_ == &_default_update_policy_) { + set_has_update_policy(); + if (update_policy_ == &::google::protobuf::internal::kEmptyString) { update_policy_ = new ::std::string; } update_policy_->assign(value); } inline void xtreemfs_set_replica_update_policyRequest::set_update_policy(const char* value, size_t size) { - _set_bit(1); - if (update_policy_ == &_default_update_policy_) { + set_has_update_policy(); + if (update_policy_ == &::google::protobuf::internal::kEmptyString) { update_policy_ = new ::std::string; } update_policy_->assign(reinterpret_cast(value), size); } inline ::std::string* xtreemfs_set_replica_update_policyRequest::mutable_update_policy() { - _set_bit(1); - if (update_policy_ == &_default_update_policy_) { + set_has_update_policy(); + if (update_policy_ == &::google::protobuf::internal::kEmptyString) { update_policy_ = new ::std::string; } return update_policy_; } +inline ::std::string* xtreemfs_set_replica_update_policyRequest::release_update_policy() { + clear_has_update_policy(); + if (update_policy_ == &::google::protobuf::internal::kEmptyString) { + return NULL; + } else { + ::std::string* temp = update_policy_; + update_policy_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + return temp; + } +} +inline void xtreemfs_set_replica_update_policyRequest::set_allocated_update_policy(::std::string* update_policy) { + if (update_policy_ != &::google::protobuf::internal::kEmptyString) { + delete update_policy_; + } + if (update_policy) { + set_has_update_policy(); + update_policy_ = update_policy; + } else { + clear_has_update_policy(); + update_policy_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + } +} // ------------------------------------------------------------------- @@ -11272,45 +13724,73 @@ inline ::std::string* xtreemfs_set_replica_update_policyRequest::mutable_update_ // required string old_update_policy = 1; inline bool xtreemfs_set_replica_update_policyResponse::has_old_update_policy() const { - return _has_bit(0); + return (_has_bits_[0] & 0x00000001u) != 0; +} +inline void xtreemfs_set_replica_update_policyResponse::set_has_old_update_policy() { + _has_bits_[0] |= 0x00000001u; +} +inline void xtreemfs_set_replica_update_policyResponse::clear_has_old_update_policy() { + _has_bits_[0] &= ~0x00000001u; } inline void xtreemfs_set_replica_update_policyResponse::clear_old_update_policy() { - if (old_update_policy_ != &_default_old_update_policy_) { + if (old_update_policy_ != &::google::protobuf::internal::kEmptyString) { old_update_policy_->clear(); } - _clear_bit(0); + clear_has_old_update_policy(); } inline const ::std::string& xtreemfs_set_replica_update_policyResponse::old_update_policy() const { return *old_update_policy_; } inline void xtreemfs_set_replica_update_policyResponse::set_old_update_policy(const ::std::string& value) { - _set_bit(0); - if (old_update_policy_ == &_default_old_update_policy_) { + set_has_old_update_policy(); + if (old_update_policy_ == &::google::protobuf::internal::kEmptyString) { old_update_policy_ = new ::std::string; } old_update_policy_->assign(value); } inline void xtreemfs_set_replica_update_policyResponse::set_old_update_policy(const char* value) { - _set_bit(0); - if (old_update_policy_ == &_default_old_update_policy_) { + set_has_old_update_policy(); + if (old_update_policy_ == &::google::protobuf::internal::kEmptyString) { old_update_policy_ = new ::std::string; } old_update_policy_->assign(value); } inline void xtreemfs_set_replica_update_policyResponse::set_old_update_policy(const char* value, size_t size) { - _set_bit(0); - if (old_update_policy_ == &_default_old_update_policy_) { + set_has_old_update_policy(); + if (old_update_policy_ == &::google::protobuf::internal::kEmptyString) { old_update_policy_ = new ::std::string; } old_update_policy_->assign(reinterpret_cast(value), size); } inline ::std::string* xtreemfs_set_replica_update_policyResponse::mutable_old_update_policy() { - _set_bit(0); - if (old_update_policy_ == &_default_old_update_policy_) { + set_has_old_update_policy(); + if (old_update_policy_ == &::google::protobuf::internal::kEmptyString) { old_update_policy_ = new ::std::string; } return old_update_policy_; } +inline ::std::string* xtreemfs_set_replica_update_policyResponse::release_old_update_policy() { + clear_has_old_update_policy(); + if (old_update_policy_ == &::google::protobuf::internal::kEmptyString) { + return NULL; + } else { + ::std::string* temp = old_update_policy_; + old_update_policy_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + return temp; + } +} +inline void xtreemfs_set_replica_update_policyResponse::set_allocated_old_update_policy(::std::string* old_update_policy) { + if (old_update_policy_ != &::google::protobuf::internal::kEmptyString) { + delete old_update_policy_; + } + if (old_update_policy) { + set_has_old_update_policy(); + old_update_policy_ = old_update_policy; + } else { + clear_has_old_update_policy(); + old_update_policy_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + } +} // ------------------------------------------------------------------- @@ -11318,59 +13798,93 @@ inline ::std::string* xtreemfs_set_replica_update_policyResponse::mutable_old_up // required string file_id = 1; inline bool xtreemfs_set_read_only_xattrRequest::has_file_id() const { - return _has_bit(0); + return (_has_bits_[0] & 0x00000001u) != 0; +} +inline void xtreemfs_set_read_only_xattrRequest::set_has_file_id() { + _has_bits_[0] |= 0x00000001u; +} +inline void xtreemfs_set_read_only_xattrRequest::clear_has_file_id() { + _has_bits_[0] &= ~0x00000001u; } inline void xtreemfs_set_read_only_xattrRequest::clear_file_id() { - if (file_id_ != &_default_file_id_) { + if (file_id_ != &::google::protobuf::internal::kEmptyString) { file_id_->clear(); } - _clear_bit(0); + clear_has_file_id(); } inline const ::std::string& xtreemfs_set_read_only_xattrRequest::file_id() const { return *file_id_; } inline void xtreemfs_set_read_only_xattrRequest::set_file_id(const ::std::string& value) { - _set_bit(0); - if (file_id_ == &_default_file_id_) { + set_has_file_id(); + if (file_id_ == &::google::protobuf::internal::kEmptyString) { file_id_ = new ::std::string; } file_id_->assign(value); } inline void xtreemfs_set_read_only_xattrRequest::set_file_id(const char* value) { - _set_bit(0); - if (file_id_ == &_default_file_id_) { + set_has_file_id(); + if (file_id_ == &::google::protobuf::internal::kEmptyString) { file_id_ = new ::std::string; } file_id_->assign(value); } inline void xtreemfs_set_read_only_xattrRequest::set_file_id(const char* value, size_t size) { - _set_bit(0); - if (file_id_ == &_default_file_id_) { + set_has_file_id(); + if (file_id_ == &::google::protobuf::internal::kEmptyString) { file_id_ = new ::std::string; } file_id_->assign(reinterpret_cast(value), size); } inline ::std::string* xtreemfs_set_read_only_xattrRequest::mutable_file_id() { - _set_bit(0); - if (file_id_ == &_default_file_id_) { + set_has_file_id(); + if (file_id_ == &::google::protobuf::internal::kEmptyString) { file_id_ = new ::std::string; } return file_id_; } +inline ::std::string* xtreemfs_set_read_only_xattrRequest::release_file_id() { + clear_has_file_id(); + if (file_id_ == &::google::protobuf::internal::kEmptyString) { + return NULL; + } else { + ::std::string* temp = file_id_; + file_id_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + return temp; + } +} +inline void xtreemfs_set_read_only_xattrRequest::set_allocated_file_id(::std::string* file_id) { + if (file_id_ != &::google::protobuf::internal::kEmptyString) { + delete file_id_; + } + if (file_id) { + set_has_file_id(); + file_id_ = file_id; + } else { + clear_has_file_id(); + file_id_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + } +} // required bool value = 2; inline bool xtreemfs_set_read_only_xattrRequest::has_value() const { - return _has_bit(1); + return (_has_bits_[0] & 0x00000002u) != 0; +} +inline void xtreemfs_set_read_only_xattrRequest::set_has_value() { + _has_bits_[0] |= 0x00000002u; +} +inline void xtreemfs_set_read_only_xattrRequest::clear_has_value() { + _has_bits_[0] &= ~0x00000002u; } inline void xtreemfs_set_read_only_xattrRequest::clear_value() { value_ = false; - _clear_bit(1); + clear_has_value(); } inline bool xtreemfs_set_read_only_xattrRequest::value() const { return value_; } inline void xtreemfs_set_read_only_xattrRequest::set_value(bool value) { - _set_bit(1); + set_has_value(); value_ = value; } @@ -11380,17 +13894,23 @@ inline void xtreemfs_set_read_only_xattrRequest::set_value(bool value) { // required bool was_set = 1; inline bool xtreemfs_set_read_only_xattrResponse::has_was_set() const { - return _has_bit(0); + return (_has_bits_[0] & 0x00000001u) != 0; +} +inline void xtreemfs_set_read_only_xattrResponse::set_has_was_set() { + _has_bits_[0] |= 0x00000001u; +} +inline void xtreemfs_set_read_only_xattrResponse::clear_has_was_set() { + _has_bits_[0] &= ~0x00000001u; } inline void xtreemfs_set_read_only_xattrResponse::clear_was_set() { was_set_ = false; - _clear_bit(0); + clear_has_was_set(); } inline bool xtreemfs_set_read_only_xattrResponse::was_set() const { return was_set_; } inline void xtreemfs_set_read_only_xattrResponse::set_was_set(bool value) { - _set_bit(0); + set_has_was_set(); was_set_ = value; } @@ -11400,45 +13920,73 @@ inline void xtreemfs_set_read_only_xattrResponse::set_was_set(bool value) { // required string file_id = 1; inline bool xtreemfs_get_file_credentialsRequest::has_file_id() const { - return _has_bit(0); + return (_has_bits_[0] & 0x00000001u) != 0; +} +inline void xtreemfs_get_file_credentialsRequest::set_has_file_id() { + _has_bits_[0] |= 0x00000001u; +} +inline void xtreemfs_get_file_credentialsRequest::clear_has_file_id() { + _has_bits_[0] &= ~0x00000001u; } inline void xtreemfs_get_file_credentialsRequest::clear_file_id() { - if (file_id_ != &_default_file_id_) { + if (file_id_ != &::google::protobuf::internal::kEmptyString) { file_id_->clear(); } - _clear_bit(0); + clear_has_file_id(); } inline const ::std::string& xtreemfs_get_file_credentialsRequest::file_id() const { return *file_id_; } inline void xtreemfs_get_file_credentialsRequest::set_file_id(const ::std::string& value) { - _set_bit(0); - if (file_id_ == &_default_file_id_) { + set_has_file_id(); + if (file_id_ == &::google::protobuf::internal::kEmptyString) { file_id_ = new ::std::string; } file_id_->assign(value); } inline void xtreemfs_get_file_credentialsRequest::set_file_id(const char* value) { - _set_bit(0); - if (file_id_ == &_default_file_id_) { + set_has_file_id(); + if (file_id_ == &::google::protobuf::internal::kEmptyString) { file_id_ = new ::std::string; } file_id_->assign(value); } inline void xtreemfs_get_file_credentialsRequest::set_file_id(const char* value, size_t size) { - _set_bit(0); - if (file_id_ == &_default_file_id_) { + set_has_file_id(); + if (file_id_ == &::google::protobuf::internal::kEmptyString) { file_id_ = new ::std::string; } file_id_->assign(reinterpret_cast(value), size); } inline ::std::string* xtreemfs_get_file_credentialsRequest::mutable_file_id() { - _set_bit(0); - if (file_id_ == &_default_file_id_) { + set_has_file_id(); + if (file_id_ == &::google::protobuf::internal::kEmptyString) { file_id_ = new ::std::string; } return file_id_; } +inline ::std::string* xtreemfs_get_file_credentialsRequest::release_file_id() { + clear_has_file_id(); + if (file_id_ == &::google::protobuf::internal::kEmptyString) { + return NULL; + } else { + ::std::string* temp = file_id_; + file_id_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + return temp; + } +} +inline void xtreemfs_get_file_credentialsRequest::set_allocated_file_id(::std::string* file_id) { + if (file_id_ != &::google::protobuf::internal::kEmptyString) { + delete file_id_; + } + if (file_id) { + set_has_file_id(); + file_id_ = file_id; + } else { + clear_has_file_id(); + file_id_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + } +} // @@protoc_insertion_point(namespace_scope) @@ -11451,16 +13999,16 @@ namespace google { namespace protobuf { template <> -inline const EnumDescriptor* GetEnumDescriptor< xtreemfs::pbrpc::Setattrs>() { - return xtreemfs::pbrpc::Setattrs_descriptor(); +inline const EnumDescriptor* GetEnumDescriptor< ::xtreemfs::pbrpc::Setattrs>() { + return ::xtreemfs::pbrpc::Setattrs_descriptor(); } template <> -inline const EnumDescriptor* GetEnumDescriptor< xtreemfs::pbrpc::XATTR_FLAGS>() { - return xtreemfs::pbrpc::XATTR_FLAGS_descriptor(); +inline const EnumDescriptor* GetEnumDescriptor< ::xtreemfs::pbrpc::XATTR_FLAGS>() { + return ::xtreemfs::pbrpc::XATTR_FLAGS_descriptor(); } template <> -inline const EnumDescriptor* GetEnumDescriptor< xtreemfs::pbrpc::ACCESS_FLAGS>() { - return xtreemfs::pbrpc::ACCESS_FLAGS_descriptor(); +inline const EnumDescriptor* GetEnumDescriptor< ::xtreemfs::pbrpc::ACCESS_FLAGS>() { + return ::xtreemfs::pbrpc::ACCESS_FLAGS_descriptor(); } } // namespace google diff --git a/cpp/generated/xtreemfs/MRCServiceClient.h b/cpp/generated/xtreemfs/MRCServiceClient.h index 8a3c48ee6..f6132ff50 100644 --- a/cpp/generated/xtreemfs/MRCServiceClient.h +++ b/cpp/generated/xtreemfs/MRCServiceClient.h @@ -1,4 +1,4 @@ -//automatically generated from MRC.proto at Wed Aug 28 12:26:19 CEST 2013 +//automatically generated from MRC.proto at Mon Nov 11 11:46:59 CET 2013 //(c) 2013. See LICENSE file for details. #ifndef MRCSERVICECLIENT_H diff --git a/cpp/generated/xtreemfs/MRCServiceConstants.h b/cpp/generated/xtreemfs/MRCServiceConstants.h index eca38e437..3a9ad2532 100644 --- a/cpp/generated/xtreemfs/MRCServiceConstants.h +++ b/cpp/generated/xtreemfs/MRCServiceConstants.h @@ -1,4 +1,4 @@ -//automatically generated from MRC.proto at Thu Mar 21 17:09:47 CET 2013 +//automatically generated from MRC.proto at Mon Nov 11 11:46:59 CET 2013 //(c) 2013. See LICENSE file for details. #ifndef MRCSERVICECONSTANTS_H_ diff --git a/cpp/generated/xtreemfs/OSD.pb.cc b/cpp/generated/xtreemfs/OSD.pb.cc index c3a38d401..0051049b8 100644 --- a/cpp/generated/xtreemfs/OSD.pb.cc +++ b/cpp/generated/xtreemfs/OSD.pb.cc @@ -1,11 +1,17 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! +// source: xtreemfs/OSD.proto #define INTERNAL_SUPPRESS_PROTOBUF_FIELD_DEPRECATION #include "xtreemfs/OSD.pb.h" + +#include + +#include #include #include #include #include +#include #include #include // @@protoc_insertion_point(includes) @@ -81,6 +87,9 @@ const ::google::protobuf::internal::GeneratedMessageReflection* const ::google::protobuf::Descriptor* xtreemfs_rwr_fetchRequest_descriptor_ = NULL; const ::google::protobuf::internal::GeneratedMessageReflection* xtreemfs_rwr_fetchRequest_reflection_ = NULL; +const ::google::protobuf::Descriptor* xtreemfs_repair_objectRequest_descriptor_ = NULL; +const ::google::protobuf::internal::GeneratedMessageReflection* + xtreemfs_repair_objectRequest_reflection_ = NULL; const ::google::protobuf::Descriptor* xtreemfs_rwr_flease_msgRequest_descriptor_ = NULL; const ::google::protobuf::internal::GeneratedMessageReflection* xtreemfs_rwr_flease_msgRequest_reflection_ = NULL; @@ -126,7 +135,6 @@ const ::google::protobuf::internal::GeneratedMessageReflection* const ::google::protobuf::Descriptor* xtreemfs_rwr_reset_completeRequest_descriptor_ = NULL; const ::google::protobuf::internal::GeneratedMessageReflection* xtreemfs_rwr_reset_completeRequest_reflection_ = NULL; -const ::google::protobuf::ServiceDescriptor* OSDService_descriptor_ = NULL; } // namespace @@ -515,7 +523,25 @@ void protobuf_AssignDesc_xtreemfs_2fOSD_2eproto() { ::google::protobuf::DescriptorPool::generated_pool(), ::google::protobuf::MessageFactory::generated_factory(), sizeof(xtreemfs_rwr_fetchRequest)); - xtreemfs_rwr_flease_msgRequest_descriptor_ = file->message_type(22); + xtreemfs_repair_objectRequest_descriptor_ = file->message_type(22); + static const int xtreemfs_repair_objectRequest_offsets_[4] = { + GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(xtreemfs_repair_objectRequest, file_credentials_), + GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(xtreemfs_repair_objectRequest, file_id_), + GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(xtreemfs_repair_objectRequest, object_number_), + GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(xtreemfs_repair_objectRequest, object_version_), + }; + xtreemfs_repair_objectRequest_reflection_ = + new ::google::protobuf::internal::GeneratedMessageReflection( + xtreemfs_repair_objectRequest_descriptor_, + xtreemfs_repair_objectRequest::default_instance_, + xtreemfs_repair_objectRequest_offsets_, + GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(xtreemfs_repair_objectRequest, _has_bits_[0]), + GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(xtreemfs_repair_objectRequest, _unknown_fields_), + -1, + ::google::protobuf::DescriptorPool::generated_pool(), + ::google::protobuf::MessageFactory::generated_factory(), + sizeof(xtreemfs_repair_objectRequest)); + xtreemfs_rwr_flease_msgRequest_descriptor_ = file->message_type(23); static const int xtreemfs_rwr_flease_msgRequest_offsets_[2] = { GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(xtreemfs_rwr_flease_msgRequest, sender_hostname_), GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(xtreemfs_rwr_flease_msgRequest, sender_port_), @@ -531,7 +557,7 @@ void protobuf_AssignDesc_xtreemfs_2fOSD_2eproto() { ::google::protobuf::DescriptorPool::generated_pool(), ::google::protobuf::MessageFactory::generated_factory(), sizeof(xtreemfs_rwr_flease_msgRequest)); - xtreemfs_rwr_set_primary_epochRequest_descriptor_ = file->message_type(23); + xtreemfs_rwr_set_primary_epochRequest_descriptor_ = file->message_type(24); static const int xtreemfs_rwr_set_primary_epochRequest_offsets_[3] = { GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(xtreemfs_rwr_set_primary_epochRequest, file_credentials_), GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(xtreemfs_rwr_set_primary_epochRequest, file_id_), @@ -548,7 +574,7 @@ void protobuf_AssignDesc_xtreemfs_2fOSD_2eproto() { ::google::protobuf::DescriptorPool::generated_pool(), ::google::protobuf::MessageFactory::generated_factory(), sizeof(xtreemfs_rwr_set_primary_epochRequest)); - xtreemfs_rwr_statusRequest_descriptor_ = file->message_type(24); + xtreemfs_rwr_statusRequest_descriptor_ = file->message_type(25); static const int xtreemfs_rwr_statusRequest_offsets_[3] = { GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(xtreemfs_rwr_statusRequest, file_credentials_), GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(xtreemfs_rwr_statusRequest, file_id_), @@ -565,7 +591,7 @@ void protobuf_AssignDesc_xtreemfs_2fOSD_2eproto() { ::google::protobuf::DescriptorPool::generated_pool(), ::google::protobuf::MessageFactory::generated_factory(), sizeof(xtreemfs_rwr_statusRequest)); - xtreemfs_rwr_truncateRequest_descriptor_ = file->message_type(25); + xtreemfs_rwr_truncateRequest_descriptor_ = file->message_type(26); static const int xtreemfs_rwr_truncateRequest_offsets_[4] = { GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(xtreemfs_rwr_truncateRequest, file_credentials_), GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(xtreemfs_rwr_truncateRequest, file_id_), @@ -583,7 +609,7 @@ void protobuf_AssignDesc_xtreemfs_2fOSD_2eproto() { ::google::protobuf::DescriptorPool::generated_pool(), ::google::protobuf::MessageFactory::generated_factory(), sizeof(xtreemfs_rwr_truncateRequest)); - xtreemfs_rwr_updateRequest_descriptor_ = file->message_type(26); + xtreemfs_rwr_updateRequest_descriptor_ = file->message_type(27); static const int xtreemfs_rwr_updateRequest_offsets_[7] = { GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(xtreemfs_rwr_updateRequest, file_credentials_), GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(xtreemfs_rwr_updateRequest, file_id_), @@ -604,7 +630,7 @@ void protobuf_AssignDesc_xtreemfs_2fOSD_2eproto() { ::google::protobuf::DescriptorPool::generated_pool(), ::google::protobuf::MessageFactory::generated_factory(), sizeof(xtreemfs_rwr_updateRequest)); - xtreemfs_internal_get_gmaxRequest_descriptor_ = file->message_type(27); + xtreemfs_internal_get_gmaxRequest_descriptor_ = file->message_type(28); static const int xtreemfs_internal_get_gmaxRequest_offsets_[2] = { GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(xtreemfs_internal_get_gmaxRequest, file_credentials_), GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(xtreemfs_internal_get_gmaxRequest, file_id_), @@ -620,7 +646,7 @@ void protobuf_AssignDesc_xtreemfs_2fOSD_2eproto() { ::google::protobuf::DescriptorPool::generated_pool(), ::google::protobuf::MessageFactory::generated_factory(), sizeof(xtreemfs_internal_get_gmaxRequest)); - xtreemfs_internal_get_file_sizeRequest_descriptor_ = file->message_type(28); + xtreemfs_internal_get_file_sizeRequest_descriptor_ = file->message_type(29); static const int xtreemfs_internal_get_file_sizeRequest_offsets_[2] = { GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(xtreemfs_internal_get_file_sizeRequest, file_credentials_), GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(xtreemfs_internal_get_file_sizeRequest, file_id_), @@ -636,7 +662,7 @@ void protobuf_AssignDesc_xtreemfs_2fOSD_2eproto() { ::google::protobuf::DescriptorPool::generated_pool(), ::google::protobuf::MessageFactory::generated_factory(), sizeof(xtreemfs_internal_get_file_sizeRequest)); - xtreemfs_internal_get_file_sizeResponse_descriptor_ = file->message_type(29); + xtreemfs_internal_get_file_sizeResponse_descriptor_ = file->message_type(30); static const int xtreemfs_internal_get_file_sizeResponse_offsets_[1] = { GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(xtreemfs_internal_get_file_sizeResponse, file_size_), }; @@ -651,7 +677,7 @@ void protobuf_AssignDesc_xtreemfs_2fOSD_2eproto() { ::google::protobuf::DescriptorPool::generated_pool(), ::google::protobuf::MessageFactory::generated_factory(), sizeof(xtreemfs_internal_get_file_sizeResponse)); - xtreemfs_internal_read_localRequest_descriptor_ = file->message_type(30); + xtreemfs_internal_read_localRequest_descriptor_ = file->message_type(31); static const int xtreemfs_internal_read_localRequest_offsets_[8] = { GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(xtreemfs_internal_read_localRequest, file_credentials_), GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(xtreemfs_internal_read_localRequest, file_id_), @@ -673,7 +699,7 @@ void protobuf_AssignDesc_xtreemfs_2fOSD_2eproto() { ::google::protobuf::DescriptorPool::generated_pool(), ::google::protobuf::MessageFactory::generated_factory(), sizeof(xtreemfs_internal_read_localRequest)); - xtreemfs_internal_get_object_setRequest_descriptor_ = file->message_type(31); + xtreemfs_internal_get_object_setRequest_descriptor_ = file->message_type(32); static const int xtreemfs_internal_get_object_setRequest_offsets_[2] = { GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(xtreemfs_internal_get_object_setRequest, file_credentials_), GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(xtreemfs_internal_get_object_setRequest, file_id_), @@ -689,7 +715,7 @@ void protobuf_AssignDesc_xtreemfs_2fOSD_2eproto() { ::google::protobuf::DescriptorPool::generated_pool(), ::google::protobuf::MessageFactory::generated_factory(), sizeof(xtreemfs_internal_get_object_setRequest)); - xtreemfs_internal_get_fileid_listResponse_descriptor_ = file->message_type(32); + xtreemfs_internal_get_fileid_listResponse_descriptor_ = file->message_type(33); static const int xtreemfs_internal_get_fileid_listResponse_offsets_[1] = { GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(xtreemfs_internal_get_fileid_listResponse, file_ids_), }; @@ -704,7 +730,7 @@ void protobuf_AssignDesc_xtreemfs_2fOSD_2eproto() { ::google::protobuf::DescriptorPool::generated_pool(), ::google::protobuf::MessageFactory::generated_factory(), sizeof(xtreemfs_internal_get_fileid_listResponse)); - lockRequest_descriptor_ = file->message_type(33); + lockRequest_descriptor_ = file->message_type(34); static const int lockRequest_offsets_[2] = { GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(lockRequest, file_credentials_), GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(lockRequest, lock_request_), @@ -720,7 +746,7 @@ void protobuf_AssignDesc_xtreemfs_2fOSD_2eproto() { ::google::protobuf::DescriptorPool::generated_pool(), ::google::protobuf::MessageFactory::generated_factory(), sizeof(lockRequest)); - xtreemfs_pingMesssage_descriptor_ = file->message_type(34); + xtreemfs_pingMesssage_descriptor_ = file->message_type(35); static const int xtreemfs_pingMesssage_offsets_[2] = { GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(xtreemfs_pingMesssage, coordinates_), GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(xtreemfs_pingMesssage, request_response_), @@ -736,7 +762,7 @@ void protobuf_AssignDesc_xtreemfs_2fOSD_2eproto() { ::google::protobuf::DescriptorPool::generated_pool(), ::google::protobuf::MessageFactory::generated_factory(), sizeof(xtreemfs_pingMesssage)); - xtreemfs_rwr_auth_stateRequest_descriptor_ = file->message_type(35); + xtreemfs_rwr_auth_stateRequest_descriptor_ = file->message_type(36); static const int xtreemfs_rwr_auth_stateRequest_offsets_[3] = { GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(xtreemfs_rwr_auth_stateRequest, file_credentials_), GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(xtreemfs_rwr_auth_stateRequest, file_id_), @@ -753,7 +779,7 @@ void protobuf_AssignDesc_xtreemfs_2fOSD_2eproto() { ::google::protobuf::DescriptorPool::generated_pool(), ::google::protobuf::MessageFactory::generated_factory(), sizeof(xtreemfs_rwr_auth_stateRequest)); - xtreemfs_rwr_reset_completeRequest_descriptor_ = file->message_type(36); + xtreemfs_rwr_reset_completeRequest_descriptor_ = file->message_type(37); static const int xtreemfs_rwr_reset_completeRequest_offsets_[3] = { GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(xtreemfs_rwr_reset_completeRequest, file_credentials_), GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(xtreemfs_rwr_reset_completeRequest, file_id_), @@ -770,7 +796,6 @@ void protobuf_AssignDesc_xtreemfs_2fOSD_2eproto() { ::google::protobuf::DescriptorPool::generated_pool(), ::google::protobuf::MessageFactory::generated_factory(), sizeof(xtreemfs_rwr_reset_completeRequest)); - OSDService_descriptor_ = file->service(0); } namespace { @@ -827,6 +852,8 @@ void protobuf_RegisterTypes(const ::std::string&) { xtreemfs_cleanup_statusResponse_descriptor_, &xtreemfs_cleanup_statusResponse::default_instance()); ::google::protobuf::MessageFactory::InternalRegisterGeneratedMessage( xtreemfs_rwr_fetchRequest_descriptor_, &xtreemfs_rwr_fetchRequest::default_instance()); + ::google::protobuf::MessageFactory::InternalRegisterGeneratedMessage( + xtreemfs_repair_objectRequest_descriptor_, &xtreemfs_repair_objectRequest::default_instance()); ::google::protobuf::MessageFactory::InternalRegisterGeneratedMessage( xtreemfs_rwr_flease_msgRequest_descriptor_, &xtreemfs_rwr_flease_msgRequest::default_instance()); ::google::protobuf::MessageFactory::InternalRegisterGeneratedMessage( @@ -906,6 +933,8 @@ void protobuf_ShutdownFile_xtreemfs_2fOSD_2eproto() { delete xtreemfs_cleanup_statusResponse_reflection_; delete xtreemfs_rwr_fetchRequest::default_instance_; delete xtreemfs_rwr_fetchRequest_reflection_; + delete xtreemfs_repair_objectRequest::default_instance_; + delete xtreemfs_repair_objectRequest_reflection_; delete xtreemfs_rwr_flease_msgRequest::default_instance_; delete xtreemfs_rwr_flease_msgRequest_reflection_; delete xtreemfs_rwr_set_primary_epochRequest::default_instance_; @@ -957,7 +986,7 @@ void protobuf_AddDesc_xtreemfs_2fOSD_2eproto() { "\030\003 \002(\006\022\016\n\006offset\030\004 \002(\006\022\021\n\texclusive\030\005 \002(" "\010\"U\n\nObjectData\022\020\n\010checksum\030\001 \002(\007\022\037\n\027inv" "alid_checksum_on_osd\030\002 \002(\010\022\024\n\014zero_paddi" - "ng\030\003 \002(\007\"?\n\nObjectList\022\013\n\003set\030\001 \002(\014\022\024\n\014s" + "ng\030\003 \002(\007\"\?\n\nObjectList\022\013\n\003set\030\001 \002(\014\022\024\n\014s" "tripe_width\030\002 \002(\007\022\016\n\006first_\030\003 \002(\007\">\n\rObj" "ectVersion\022\025\n\robject_number\030\001 \002(\006\022\026\n\016obj" "ect_version\030\002 \002(\006\"=\n\016TruncateRecord\022\017\n\007v" @@ -1011,147 +1040,154 @@ void protobuf_AddDesc_xtreemfs_2fOSD_2eproto() { "\001 \002(\t\"\226\001\n\031xtreemfs_rwr_fetchRequest\0229\n\020f" "ile_credentials\030\001 \002(\0132\037.xtreemfs.pbrpc.F" "ileCredentials\022\017\n\007file_id\030\002 \002(\t\022\025\n\robjec" - "t_number\030\003 \002(\006\022\026\n\016object_version\030\004 \002(\006\"N" - "\n\036xtreemfs_rwr_flease_msgRequest\022\027\n\017send" - "er_hostname\030\001 \002(\t\022\023\n\013sender_port\030\002 \002(\007\"\212" - "\001\n%xtreemfs_rwr_set_primary_epochRequest" - "\0229\n\020file_credentials\030\001 \002(\0132\037.xtreemfs.pb" - "rpc.FileCredentials\022\017\n\007file_id\030\002 \002(\t\022\025\n\r" - "primary_epoch\030\003 \002(\007\"\207\001\n\032xtreemfs_rwr_sta" - "tusRequest\0229\n\020file_credentials\030\001 \002(\0132\037.x" + "t_number\030\003 \002(\006\022\026\n\016object_version\030\004 \002(\006\"\232" + "\001\n\035xtreemfs_repair_objectRequest\0229\n\020file" + "_credentials\030\001 \002(\0132\037.xtreemfs.pbrpc.File" + "Credentials\022\017\n\007file_id\030\002 \002(\t\022\025\n\robject_n" + "umber\030\003 \002(\006\022\026\n\016object_version\030\004 \002(\006\"N\n\036x" + "treemfs_rwr_flease_msgRequest\022\027\n\017sender_" + "hostname\030\001 \002(\t\022\023\n\013sender_port\030\002 \002(\007\"\212\001\n%" + "xtreemfs_rwr_set_primary_epochRequest\0229\n" + "\020file_credentials\030\001 \002(\0132\037.xtreemfs.pbrpc" + ".FileCredentials\022\017\n\007file_id\030\002 \002(\t\022\025\n\rpri" + "mary_epoch\030\003 \002(\007\"\207\001\n\032xtreemfs_rwr_status" + "Request\0229\n\020file_credentials\030\001 \002(\0132\037.xtre" + "emfs.pbrpc.FileCredentials\022\017\n\007file_id\030\002 " + "\002(\t\022\035\n\025max_local_obj_version\030\003 \002(\006\"\231\001\n\034x" + "treemfs_rwr_truncateRequest\0229\n\020file_cred" + "entials\030\001 \002(\0132\037.xtreemfs.pbrpc.FileCrede" + "ntials\022\017\n\007file_id\030\002 \002(\t\022\025\n\rnew_file_size" + "\030\003 \002(\006\022\026\n\016object_version\030\004 \002(\006\"\347\001\n\032xtree" + "mfs_rwr_updateRequest\0229\n\020file_credential" + "s\030\001 \002(\0132\037.xtreemfs.pbrpc.FileCredentials" + "\022\017\n\007file_id\030\002 \002(\t\022\025\n\rnew_file_size\030\003 \002(\006" + "\022\025\n\robject_number\030\007 \002(\006\022\026\n\016object_versio" + "n\030\004 \002(\006\022\016\n\006offset\030\005 \002(\007\022\'\n\003obj\030\006 \002(\0132\032.x" + "treemfs.pbrpc.ObjectData\"o\n!xtreemfs_int" + "ernal_get_gmaxRequest\0229\n\020file_credential" + "s\030\001 \002(\0132\037.xtreemfs.pbrpc.FileCredentials" + "\022\017\n\007file_id\030\002 \002(\t\"t\n&xtreemfs_internal_g" + "et_file_sizeRequest\0229\n\020file_credentials\030" + "\001 \002(\0132\037.xtreemfs.pbrpc.FileCredentials\022\017" + "\n\007file_id\030\002 \002(\t\"<\n\'xtreemfs_internal_get" + "_file_sizeResponse\022\021\n\tfile_size\030\001 \002(\006\"\222\002" + "\n#xtreemfs_internal_read_localRequest\0229\n" + "\020file_credentials\030\001 \002(\0132\037.xtreemfs.pbrpc" + ".FileCredentials\022\017\n\007file_id\030\002 \002(\t\022\025\n\robj" + "ect_number\030\003 \002(\006\022\026\n\016object_version\030\004 \002(\006" + "\022\016\n\006offset\030\005 \002(\007\022\016\n\006length\030\006 \002(\007\022\032\n\022atta" + "ch_object_list\030\007 \002(\010\0224\n\020required_objects" + "\030\010 \003(\0132\032.xtreemfs.pbrpc.ObjectList\"u\n\'xt" + "reemfs_internal_get_object_setRequest\0229\n" + "\020file_credentials\030\001 \002(\0132\037.xtreemfs.pbrpc" + ".FileCredentials\022\017\n\007file_id\030\002 \002(\t\"=\n)xtr" + "eemfs_internal_get_fileid_listResponse\022\020" + "\n\010file_ids\030\001 \003(\t\"t\n\013lockRequest\0229\n\020file_" + "credentials\030\001 \002(\0132\037.xtreemfs.pbrpc.FileC" + "redentials\022*\n\014lock_request\030\002 \002(\0132\024.xtree" + "mfs.pbrpc.Lock\"j\n\025xtreemfs_pingMesssage\022" + "7\n\013coordinates\030\001 \002(\0132\".xtreemfs.pbrpc.Vi" + "valdiCoordinates\022\030\n\020request_response\030\002 \002" + "(\010\"\246\001\n\036xtreemfs_rwr_auth_stateRequest\0229\n" + "\020file_credentials\030\001 \002(\0132\037.xtreemfs.pbrpc" + ".FileCredentials\022\017\n\007file_id\030\002 \002(\t\0228\n\005sta" + "te\030\003 \002(\0132).xtreemfs.pbrpc.AuthoritativeR" + "eplicaState\"\207\001\n\"xtreemfs_rwr_reset_compl" + "eteRequest\0229\n\020file_credentials\030\001 \002(\0132\037.x" "treemfs.pbrpc.FileCredentials\022\017\n\007file_id" - "\030\002 \002(\t\022\035\n\025max_local_obj_version\030\003 \002(\006\"\231\001" - "\n\034xtreemfs_rwr_truncateRequest\0229\n\020file_c" - "redentials\030\001 \002(\0132\037.xtreemfs.pbrpc.FileCr" - "edentials\022\017\n\007file_id\030\002 \002(\t\022\025\n\rnew_file_s" - "ize\030\003 \002(\006\022\026\n\016object_version\030\004 \002(\006\"\347\001\n\032xt" - "reemfs_rwr_updateRequest\0229\n\020file_credent" - "ials\030\001 \002(\0132\037.xtreemfs.pbrpc.FileCredenti" - "als\022\017\n\007file_id\030\002 \002(\t\022\025\n\rnew_file_size\030\003 " - "\002(\006\022\025\n\robject_number\030\007 \002(\006\022\026\n\016object_ver" - "sion\030\004 \002(\006\022\016\n\006offset\030\005 \002(\007\022\'\n\003obj\030\006 \002(\0132" - "\032.xtreemfs.pbrpc.ObjectData\"o\n!xtreemfs_" - "internal_get_gmaxRequest\0229\n\020file_credent" - "ials\030\001 \002(\0132\037.xtreemfs.pbrpc.FileCredenti" - "als\022\017\n\007file_id\030\002 \002(\t\"t\n&xtreemfs_interna" - "l_get_file_sizeRequest\0229\n\020file_credentia" - "ls\030\001 \002(\0132\037.xtreemfs.pbrpc.FileCredential" - "s\022\017\n\007file_id\030\002 \002(\t\"<\n\'xtreemfs_internal_" - "get_file_sizeResponse\022\021\n\tfile_size\030\001 \002(\006" - "\"\222\002\n#xtreemfs_internal_read_localRequest" - "\0229\n\020file_credentials\030\001 \002(\0132\037.xtreemfs.pb" - "rpc.FileCredentials\022\017\n\007file_id\030\002 \002(\t\022\025\n\r" - "object_number\030\003 \002(\006\022\026\n\016object_version\030\004 " - "\002(\006\022\016\n\006offset\030\005 \002(\007\022\016\n\006length\030\006 \002(\007\022\032\n\022a" - "ttach_object_list\030\007 \002(\010\0224\n\020required_obje" - "cts\030\010 \003(\0132\032.xtreemfs.pbrpc.ObjectList\"u\n" - "\'xtreemfs_internal_get_object_setRequest" - "\0229\n\020file_credentials\030\001 \002(\0132\037.xtreemfs.pb" - "rpc.FileCredentials\022\017\n\007file_id\030\002 \002(\t\"=\n)" - "xtreemfs_internal_get_fileid_listRespons" - "e\022\020\n\010file_ids\030\001 \003(\t\"t\n\013lockRequest\0229\n\020fi" - "le_credentials\030\001 \002(\0132\037.xtreemfs.pbrpc.Fi" - "leCredentials\022*\n\014lock_request\030\002 \002(\0132\024.xt" - "reemfs.pbrpc.Lock\"j\n\025xtreemfs_pingMesssa" - "ge\0227\n\013coordinates\030\001 \002(\0132\".xtreemfs.pbrpc" - ".VivaldiCoordinates\022\030\n\020request_response\030" - "\002 \002(\010\"\246\001\n\036xtreemfs_rwr_auth_stateRequest" - "\0229\n\020file_credentials\030\001 \002(\0132\037.xtreemfs.pb" - "rpc.FileCredentials\022\017\n\007file_id\030\002 \002(\t\0228\n\005" - "state\030\003 \002(\0132).xtreemfs.pbrpc.Authoritati" - "veReplicaState\"\207\001\n\"xtreemfs_rwr_reset_co" - "mpleteRequest\0229\n\020file_credentials\030\001 \002(\0132" - "\037.xtreemfs.pbrpc.FileCredentials\022\017\n\007file" - "_id\030\002 \002(\t\022\025\n\rprimary_epoch\030\003 \002(\0072\272\033\n\nOSD" - "Service\022L\n\004read\022\033.xtreemfs.pbrpc.readReq" - "uest\032\032.xtreemfs.pbrpc.ObjectData\"\013\215\265\030\n\000\000" - "\000\230\265\030\001\022V\n\010truncate\022\037.xtreemfs.pbrpc.trunc" - "ateRequest\032 .xtreemfs.pbrpc.OSDWriteResp" - "onse\"\007\215\265\030\013\000\000\000\022T\n\006unlink\022\".xtreemfs.pbrpc" - ".unlink_osd_Request\032\035.xtreemfs.pbrpc.emp" - "tyResponse\"\007\215\265\030\014\000\000\000\022T\n\005write\022\034.xtreemfs." - "pbrpc.writeRequest\032 .xtreemfs.pbrpc.OSDW" - "riteResponse\"\013\215\265\030\r\000\000\000\240\265\030\001\022q\n\027xtreemfs_br" - "oadcast_gmax\022..xtreemfs.pbrpc.xtreemfs_b" - "roadcast_gmaxRequest\032\035.xtreemfs.pbrpc.em" - "ptyResponse\"\007\215\265\030\024\000\000\000\022j\n\025xtreemfs_check_o" - "bject\022,.xtreemfs.pbrpc.xtreemfs_check_ob" - "jectRequest\032\032.xtreemfs.pbrpc.ObjectData\"" - "\007\215\265\030\025\000\000\000\022{\n\034xtreemfs_cleanup_get_results" - "\022\034.xtreemfs.pbrpc.emptyRequest\0324.xtreemf" - "s.pbrpc.xtreemfs_cleanup_get_resultsResp" - "onse\"\007\215\265\030\036\000\000\000\022y\n\033xtreemfs_cleanup_is_run" - "ning\022\034.xtreemfs.pbrpc.emptyRequest\0323.xtr" - "eemfs.pbrpc.xtreemfs_cleanup_is_runningR" - "esponse\"\007\215\265\030\037\000\000\000\022o\n\026xtreemfs_cleanup_sta" - "rt\022-.xtreemfs.pbrpc.xtreemfs_cleanup_sta" - "rtRequest\032\035.xtreemfs.pbrpc.emptyResponse" - "\"\007\215\265\030 \000\000\000\022q\n\027xtreemfs_cleanup_status\022\034.x" - "treemfs.pbrpc.emptyRequest\032/.xtreemfs.pb" - "rpc.xtreemfs_cleanup_statusResponse\"\007\215\265\030" - "!\000\000\000\022]\n\025xtreemfs_cleanup_stop\022\034.xtreemfs" - ".pbrpc.emptyRequest\032\035.xtreemfs.pbrpc.emp" - "tyResponse\"\007\215\265\030\"\000\000\000\022g\n\037xtreemfs_cleanup_" - "versions_start\022\034.xtreemfs.pbrpc.emptyReq" + "\030\002 \002(\t\022\025\n\rprimary_epoch\030\003 \002(\0072\253\034\n\nOSDSer" + "vice\022L\n\004read\022\033.xtreemfs.pbrpc.readReques" + "t\032\032.xtreemfs.pbrpc.ObjectData\"\013\215\265\030\n\000\000\000\230\265" + "\030\001\022V\n\010truncate\022\037.xtreemfs.pbrpc.truncate" + "Request\032 .xtreemfs.pbrpc.OSDWriteRespons" + "e\"\007\215\265\030\013\000\000\000\022T\n\006unlink\022\".xtreemfs.pbrpc.un" + "link_osd_Request\032\035.xtreemfs.pbrpc.emptyR" + "esponse\"\007\215\265\030\014\000\000\000\022T\n\005write\022\034.xtreemfs.pbr" + "pc.writeRequest\032 .xtreemfs.pbrpc.OSDWrit" + "eResponse\"\013\215\265\030\r\000\000\000\240\265\030\001\022q\n\027xtreemfs_broad" + "cast_gmax\022..xtreemfs.pbrpc.xtreemfs_broa" + "dcast_gmaxRequest\032\035.xtreemfs.pbrpc.empty" + "Response\"\007\215\265\030\024\000\000\000\022j\n\025xtreemfs_check_obje" + "ct\022,.xtreemfs.pbrpc.xtreemfs_check_objec" + "tRequest\032\032.xtreemfs.pbrpc.ObjectData\"\007\215\265" + "\030\025\000\000\000\022{\n\034xtreemfs_cleanup_get_results\022\034." + "xtreemfs.pbrpc.emptyRequest\0324.xtreemfs.p" + "brpc.xtreemfs_cleanup_get_resultsRespons" + "e\"\007\215\265\030\036\000\000\000\022y\n\033xtreemfs_cleanup_is_runnin" + "g\022\034.xtreemfs.pbrpc.emptyRequest\0323.xtreem" + "fs.pbrpc.xtreemfs_cleanup_is_runningResp" + "onse\"\007\215\265\030\037\000\000\000\022o\n\026xtreemfs_cleanup_start\022" + "-.xtreemfs.pbrpc.xtreemfs_cleanup_startR" + "equest\032\035.xtreemfs.pbrpc.emptyResponse\"\007\215" + "\265\030 \000\000\000\022q\n\027xtreemfs_cleanup_status\022\034.xtre" + "emfs.pbrpc.emptyRequest\032/.xtreemfs.pbrpc" + ".xtreemfs_cleanup_statusResponse\"\007\215\265\030!\000\000" + "\000\022]\n\025xtreemfs_cleanup_stop\022\034.xtreemfs.pb" + "rpc.emptyRequest\032\035.xtreemfs.pbrpc.emptyR" + "esponse\"\007\215\265\030\"\000\000\000\022g\n\037xtreemfs_cleanup_ver" + "sions_start\022\034.xtreemfs.pbrpc.emptyReques" + "t\032\035.xtreemfs.pbrpc.emptyResponse\"\007\215\265\030#\000\000" + "\000\022o\n\026xtreemfs_repair_object\022-.xtreemfs.p" + "brpc.xtreemfs_repair_objectRequest\032\035.xtr" + "eemfs.pbrpc.emptyResponse\"\007\215\265\030$\000\000\000\022d\n\022xt" + "reemfs_rwr_fetch\022).xtreemfs.pbrpc.xtreem" + "fs_rwr_fetchRequest\032\032.xtreemfs.pbrpc.Obj" + "ectData\"\007\215\265\030I\000\000\000\022u\n\027xtreemfs_rwr_flease_" + "msg\022..xtreemfs.pbrpc.xtreemfs_rwr_flease" + "_msgRequest\032\035.xtreemfs.pbrpc.emptyRespon" + "se\"\013\215\265\030G\000\000\000\240\265\030\001\022^\n\023xtreemfs_rwr_notify\022\037" + ".xtreemfs.pbrpc.FileCredentials\032\035.xtreem" + "fs.pbrpc.emptyResponse\"\007\215\265\030K\000\000\000\022|\n\036xtree" + "mfs_rwr_set_primary_epoch\0225.xtreemfs.pbr" + "pc.xtreemfs_rwr_set_primary_epochRequest" + "\032\032.xtreemfs.pbrpc.ObjectData\"\007\215\265\030N\000\000\000\022i\n" + "\023xtreemfs_rwr_status\022*.xtreemfs.pbrpc.xt" + "reemfs_rwr_statusRequest\032\035.xtreemfs.pbrp" + "c.ReplicaStatus\"\007\215\265\030L\000\000\000\022m\n\025xtreemfs_rwr" + "_truncate\022,.xtreemfs.pbrpc.xtreemfs_rwr_" + "truncateRequest\032\035.xtreemfs.pbrpc.emptyRe" + "sponse\"\007\215\265\030J\000\000\000\022m\n\023xtreemfs_rwr_update\022*" + ".xtreemfs.pbrpc.xtreemfs_rwr_updateReque" + "st\032\035.xtreemfs.pbrpc.emptyResponse\"\013\215\265\030H\000" + "\000\000\240\265\030\001\022q\n\027xtreemfs_rwr_auth_state\022..xtre" + "emfs.pbrpc.xtreemfs_rwr_auth_stateReques" + "t\032\035.xtreemfs.pbrpc.emptyResponse\"\007\215\265\030O\000\000" + "\000\022y\n\033xtreemfs_rwr_reset_complete\0222.xtree" + "mfs.pbrpc.xtreemfs_rwr_reset_completeReq" "uest\032\035.xtreemfs.pbrpc.emptyResponse\"\007\215\265\030" - "#\000\000\000\022d\n\022xtreemfs_rwr_fetch\022).xtreemfs.pb" - "rpc.xtreemfs_rwr_fetchRequest\032\032.xtreemfs" - ".pbrpc.ObjectData\"\007\215\265\030I\000\000\000\022u\n\027xtreemfs_r" - "wr_flease_msg\022..xtreemfs.pbrpc.xtreemfs_" - "rwr_flease_msgRequest\032\035.xtreemfs.pbrpc.e" - "mptyResponse\"\013\215\265\030G\000\000\000\240\265\030\001\022^\n\023xtreemfs_rw" - "r_notify\022\037.xtreemfs.pbrpc.FileCredential" - "s\032\035.xtreemfs.pbrpc.emptyResponse\"\007\215\265\030K\000\000" - "\000\022|\n\036xtreemfs_rwr_set_primary_epoch\0225.xt" - "reemfs.pbrpc.xtreemfs_rwr_set_primary_ep" - "ochRequest\032\032.xtreemfs.pbrpc.ObjectData\"\007" - "\215\265\030N\000\000\000\022i\n\023xtreemfs_rwr_status\022*.xtreemf" - "s.pbrpc.xtreemfs_rwr_statusRequest\032\035.xtr" - "eemfs.pbrpc.ReplicaStatus\"\007\215\265\030L\000\000\000\022m\n\025xt" - "reemfs_rwr_truncate\022,.xtreemfs.pbrpc.xtr" - "eemfs_rwr_truncateRequest\032\035.xtreemfs.pbr" - "pc.emptyResponse\"\007\215\265\030J\000\000\000\022m\n\023xtreemfs_rw" - "r_update\022*.xtreemfs.pbrpc.xtreemfs_rwr_u" - "pdateRequest\032\035.xtreemfs.pbrpc.emptyRespo" - "nse\"\013\215\265\030H\000\000\000\240\265\030\001\022q\n\027xtreemfs_rwr_auth_st" - "ate\022..xtreemfs.pbrpc.xtreemfs_rwr_auth_s" - "tateRequest\032\035.xtreemfs.pbrpc.emptyRespon" - "se\"\007\215\265\030O\000\000\000\022y\n\033xtreemfs_rwr_reset_comple" - "te\0222.xtreemfs.pbrpc.xtreemfs_rwr_reset_c" - "ompleteRequest\032\035.xtreemfs.pbrpc.emptyRes" - "ponse\"\007\215\265\030P\000\000\000\022v\n\032xtreemfs_internal_get_" - "gmax\0221.xtreemfs.pbrpc.xtreemfs_internal_" - "get_gmaxRequest\032\034.xtreemfs.pbrpc.Interna" - "lGmax\"\007\215\265\030(\000\000\000\022h\n\032xtreemfs_internal_trun" - "cate\022\037.xtreemfs.pbrpc.truncateRequest\032 ." - "xtreemfs.pbrpc.OSDWriteResponse\"\007\215\265\030)\000\000\000" - "\022\233\001\n\037xtreemfs_internal_get_file_size\0226.x" - "treemfs.pbrpc.xtreemfs_internal_get_file" - "_sizeRequest\0327.xtreemfs.pbrpc.xtreemfs_i" - "nternal_get_file_sizeResponse\"\007\215\265\030*\000\000\000\022\207" - "\001\n\034xtreemfs_internal_read_local\0223.xtreem" - "fs.pbrpc.xtreemfs_internal_read_localReq" - "uest\032).xtreemfs.pbrpc.InternalReadLocalR" - "esponse\"\007\215\265\030+\000\000\000\022\200\001\n xtreemfs_internal_g" - "et_object_set\0227.xtreemfs.pbrpc.xtreemfs_" - "internal_get_object_setRequest\032\032.xtreemf" - "s.pbrpc.ObjectList\"\007\215\265\030,\000\000\000\022\205\001\n!xtreemfs" - "_internal_get_fileid_list\022\034.xtreemfs.pbr" - "pc.emptyRequest\0329.xtreemfs.pbrpc.xtreemf" - "s_internal_get_fileid_listResponse\"\007\215\265\030-" - "\000\000\000\022S\n\025xtreemfs_lock_acquire\022\033.xtreemfs." - "pbrpc.lockRequest\032\024.xtreemfs.pbrpc.Lock\"" - "\007\215\265\0302\000\000\000\022Q\n\023xtreemfs_lock_check\022\033.xtreem" - "fs.pbrpc.lockRequest\032\024.xtreemfs.pbrpc.Lo" - "ck\"\007\215\265\0303\000\000\000\022\\\n\025xtreemfs_lock_release\022\033.x" - "treemfs.pbrpc.lockRequest\032\035.xtreemfs.pbr" - "pc.emptyResponse\"\007\215\265\0304\000\000\000\022f\n\rxtreemfs_pi" - "ng\022%.xtreemfs.pbrpc.xtreemfs_pingMesssag" - "e\032%.xtreemfs.pbrpc.xtreemfs_pingMesssage" - "\"\007\215\265\030<\000\000\000\022Y\n\021xtreemfs_shutdown\022\034.xtreemf" - "s.pbrpc.emptyRequest\032\035.xtreemfs.pbrpc.em" - "ptyResponse\"\007\215\265\030F\000\000\000\032\007\225\265\0301u\000\000B(\n&org.xtr" - "eemfs.pbrpc.generatedinterfaces", 8151); + "P\000\000\000\022v\n\032xtreemfs_internal_get_gmax\0221.xtr" + "eemfs.pbrpc.xtreemfs_internal_get_gmaxRe" + "quest\032\034.xtreemfs.pbrpc.InternalGmax\"\007\215\265\030" + "(\000\000\000\022h\n\032xtreemfs_internal_truncate\022\037.xtr" + "eemfs.pbrpc.truncateRequest\032 .xtreemfs.p" + "brpc.OSDWriteResponse\"\007\215\265\030)\000\000\000\022\233\001\n\037xtree" + "mfs_internal_get_file_size\0226.xtreemfs.pb" + "rpc.xtreemfs_internal_get_file_sizeReque" + "st\0327.xtreemfs.pbrpc.xtreemfs_internal_ge" + "t_file_sizeResponse\"\007\215\265\030*\000\000\000\022\207\001\n\034xtreemf" + "s_internal_read_local\0223.xtreemfs.pbrpc.x" + "treemfs_internal_read_localRequest\032).xtr" + "eemfs.pbrpc.InternalReadLocalResponse\"\007\215" + "\265\030+\000\000\000\022\200\001\n xtreemfs_internal_get_object_" + "set\0227.xtreemfs.pbrpc.xtreemfs_internal_g" + "et_object_setRequest\032\032.xtreemfs.pbrpc.Ob" + "jectList\"\007\215\265\030,\000\000\000\022\205\001\n!xtreemfs_internal_" + "get_fileid_list\022\034.xtreemfs.pbrpc.emptyRe" + "quest\0329.xtreemfs.pbrpc.xtreemfs_internal" + "_get_fileid_listResponse\"\007\215\265\030-\000\000\000\022S\n\025xtr" + "eemfs_lock_acquire\022\033.xtreemfs.pbrpc.lock" + "Request\032\024.xtreemfs.pbrpc.Lock\"\007\215\265\0302\000\000\000\022Q" + "\n\023xtreemfs_lock_check\022\033.xtreemfs.pbrpc.l" + "ockRequest\032\024.xtreemfs.pbrpc.Lock\"\007\215\265\0303\000\000" + "\000\022\\\n\025xtreemfs_lock_release\022\033.xtreemfs.pb" + "rpc.lockRequest\032\035.xtreemfs.pbrpc.emptyRe" + "sponse\"\007\215\265\0304\000\000\000\022f\n\rxtreemfs_ping\022%.xtree" + "mfs.pbrpc.xtreemfs_pingMesssage\032%.xtreem" + "fs.pbrpc.xtreemfs_pingMesssage\"\007\215\265\030<\000\000\000\022" + "Y\n\021xtreemfs_shutdown\022\034.xtreemfs.pbrpc.em" + "ptyRequest\032\035.xtreemfs.pbrpc.emptyRespons" + "e\"\007\215\265\030F\000\000\000\032\007\225\265\0301u\000\000B(\n&org.xtreemfs.pbrp" + "c.generatedinterfaces", 8421); ::google::protobuf::MessageFactory::InternalRegisterGeneratedFile( "xtreemfs/OSD.proto", &protobuf_RegisterTypes); InternalGmax::default_instance_ = new InternalGmax(); @@ -1176,6 +1212,7 @@ void protobuf_AddDesc_xtreemfs_2fOSD_2eproto() { xtreemfs_cleanup_startRequest::default_instance_ = new xtreemfs_cleanup_startRequest(); xtreemfs_cleanup_statusResponse::default_instance_ = new xtreemfs_cleanup_statusResponse(); xtreemfs_rwr_fetchRequest::default_instance_ = new xtreemfs_rwr_fetchRequest(); + xtreemfs_repair_objectRequest::default_instance_ = new xtreemfs_repair_objectRequest(); xtreemfs_rwr_flease_msgRequest::default_instance_ = new xtreemfs_rwr_flease_msgRequest(); xtreemfs_rwr_set_primary_epochRequest::default_instance_ = new xtreemfs_rwr_set_primary_epochRequest(); xtreemfs_rwr_statusRequest::default_instance_ = new xtreemfs_rwr_statusRequest(); @@ -1213,6 +1250,7 @@ void protobuf_AddDesc_xtreemfs_2fOSD_2eproto() { xtreemfs_cleanup_startRequest::default_instance_->InitAsDefaultInstance(); xtreemfs_cleanup_statusResponse::default_instance_->InitAsDefaultInstance(); xtreemfs_rwr_fetchRequest::default_instance_->InitAsDefaultInstance(); + xtreemfs_repair_objectRequest::default_instance_->InitAsDefaultInstance(); xtreemfs_rwr_flease_msgRequest::default_instance_->InitAsDefaultInstance(); xtreemfs_rwr_set_primary_epochRequest::default_instance_->InitAsDefaultInstance(); xtreemfs_rwr_statusRequest::default_instance_->InitAsDefaultInstance(); @@ -1238,7 +1276,6 @@ struct StaticDescriptorInitializer_xtreemfs_2fOSD_2eproto { } } static_descriptor_initializer_xtreemfs_2fOSD_2eproto_; - // =================================================================== #ifndef _MSC_VER @@ -1289,7 +1326,8 @@ const ::google::protobuf::Descriptor* InternalGmax::descriptor() { } const InternalGmax& InternalGmax::default_instance() { - if (default_instance_ == NULL) protobuf_AddDesc_xtreemfs_2fOSD_2eproto(); return *default_instance_; + if (default_instance_ == NULL) protobuf_AddDesc_xtreemfs_2fOSD_2eproto(); + return *default_instance_; } InternalGmax* InternalGmax::default_instance_ = NULL; @@ -1321,14 +1359,14 @@ bool InternalGmax::MergePartialFromCodedStream( DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive< ::google::protobuf::uint64, ::google::protobuf::internal::WireFormatLite::TYPE_FIXED64>( input, &epoch_))); - _set_bit(0); + set_has_epoch(); } else { goto handle_uninterpreted; } if (input->ExpectTag(17)) goto parse_file_size; break; } - + // required fixed64 file_size = 2; case 2: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -1337,14 +1375,14 @@ bool InternalGmax::MergePartialFromCodedStream( DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive< ::google::protobuf::uint64, ::google::protobuf::internal::WireFormatLite::TYPE_FIXED64>( input, &file_size_))); - _set_bit(1); + set_has_file_size(); } else { goto handle_uninterpreted; } if (input->ExpectTag(25)) goto parse_last_object_id; break; } - + // required fixed64 last_object_id = 3; case 3: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -1353,14 +1391,14 @@ bool InternalGmax::MergePartialFromCodedStream( DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive< ::google::protobuf::uint64, ::google::protobuf::internal::WireFormatLite::TYPE_FIXED64>( input, &last_object_id_))); - _set_bit(2); + set_has_last_object_id(); } else { goto handle_uninterpreted; } if (input->ExpectAtEnd()) return true; break; } - + default: { handle_uninterpreted: if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -1380,20 +1418,20 @@ bool InternalGmax::MergePartialFromCodedStream( void InternalGmax::SerializeWithCachedSizes( ::google::protobuf::io::CodedOutputStream* output) const { // required fixed64 epoch = 1; - if (_has_bit(0)) { + if (has_epoch()) { ::google::protobuf::internal::WireFormatLite::WriteFixed64(1, this->epoch(), output); } - + // required fixed64 file_size = 2; - if (_has_bit(1)) { + if (has_file_size()) { ::google::protobuf::internal::WireFormatLite::WriteFixed64(2, this->file_size(), output); } - + // required fixed64 last_object_id = 3; - if (_has_bit(2)) { + if (has_last_object_id()) { ::google::protobuf::internal::WireFormatLite::WriteFixed64(3, this->last_object_id(), output); } - + if (!unknown_fields().empty()) { ::google::protobuf::internal::WireFormat::SerializeUnknownFields( unknown_fields(), output); @@ -1403,20 +1441,20 @@ void InternalGmax::SerializeWithCachedSizes( ::google::protobuf::uint8* InternalGmax::SerializeWithCachedSizesToArray( ::google::protobuf::uint8* target) const { // required fixed64 epoch = 1; - if (_has_bit(0)) { + if (has_epoch()) { target = ::google::protobuf::internal::WireFormatLite::WriteFixed64ToArray(1, this->epoch(), target); } - + // required fixed64 file_size = 2; - if (_has_bit(1)) { + if (has_file_size()) { target = ::google::protobuf::internal::WireFormatLite::WriteFixed64ToArray(2, this->file_size(), target); } - + // required fixed64 last_object_id = 3; - if (_has_bit(2)) { + if (has_last_object_id()) { target = ::google::protobuf::internal::WireFormatLite::WriteFixed64ToArray(3, this->last_object_id(), target); } - + if (!unknown_fields().empty()) { target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray( unknown_fields(), target); @@ -1426,23 +1464,23 @@ void InternalGmax::SerializeWithCachedSizes( int InternalGmax::ByteSize() const { int total_size = 0; - + if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) { // required fixed64 epoch = 1; if (has_epoch()) { total_size += 1 + 8; } - + // required fixed64 file_size = 2; if (has_file_size()) { total_size += 1 + 8; } - + // required fixed64 last_object_id = 3; if (has_last_object_id()) { total_size += 1 + 8; } - + } if (!unknown_fields().empty()) { total_size += @@ -1470,13 +1508,13 @@ void InternalGmax::MergeFrom(const ::google::protobuf::Message& from) { void InternalGmax::MergeFrom(const InternalGmax& from) { GOOGLE_CHECK_NE(&from, this); if (from._has_bits_[0 / 32] & (0xffu << (0 % 32))) { - if (from._has_bit(0)) { + if (from.has_epoch()) { set_epoch(from.epoch()); } - if (from._has_bit(1)) { + if (from.has_file_size()) { set_file_size(from.file_size()); } - if (from._has_bit(2)) { + if (from.has_last_object_id()) { set_last_object_id(from.last_object_id()); } } @@ -1497,7 +1535,7 @@ void InternalGmax::CopyFrom(const InternalGmax& from) { bool InternalGmax::IsInitialized() const { if ((_has_bits_[0] & 0x00000007) != 0x00000007) return false; - + return true; } @@ -1523,7 +1561,6 @@ void InternalGmax::Swap(InternalGmax* other) { // =================================================================== -const ::std::string Lock::_default_client_uuid_; #ifndef _MSC_VER const int Lock::kClientPidFieldNumber; const int Lock::kClientUuidFieldNumber; @@ -1549,7 +1586,7 @@ Lock::Lock(const Lock& from) void Lock::SharedCtor() { _cached_size_ = 0; client_pid_ = 0u; - client_uuid_ = const_cast< ::std::string*>(&_default_client_uuid_); + client_uuid_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); length_ = GOOGLE_ULONGLONG(0); offset_ = GOOGLE_ULONGLONG(0); exclusive_ = false; @@ -1561,7 +1598,7 @@ Lock::~Lock() { } void Lock::SharedDtor() { - if (client_uuid_ != &_default_client_uuid_) { + if (client_uuid_ != &::google::protobuf::internal::kEmptyString) { delete client_uuid_; } if (this != default_instance_) { @@ -1579,7 +1616,8 @@ const ::google::protobuf::Descriptor* Lock::descriptor() { } const Lock& Lock::default_instance() { - if (default_instance_ == NULL) protobuf_AddDesc_xtreemfs_2fOSD_2eproto(); return *default_instance_; + if (default_instance_ == NULL) protobuf_AddDesc_xtreemfs_2fOSD_2eproto(); + return *default_instance_; } Lock* Lock::default_instance_ = NULL; @@ -1591,8 +1629,8 @@ Lock* Lock::New() const { void Lock::Clear() { if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) { client_pid_ = 0u; - if (_has_bit(1)) { - if (client_uuid_ != &_default_client_uuid_) { + if (has_client_uuid()) { + if (client_uuid_ != &::google::protobuf::internal::kEmptyString) { client_uuid_->clear(); } } @@ -1617,14 +1655,14 @@ bool Lock::MergePartialFromCodedStream( DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive< ::google::protobuf::uint32, ::google::protobuf::internal::WireFormatLite::TYPE_FIXED32>( input, &client_pid_))); - _set_bit(0); + set_has_client_pid(); } else { goto handle_uninterpreted; } if (input->ExpectTag(18)) goto parse_client_uuid; break; } - + // required string client_uuid = 2; case 2: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -1641,7 +1679,7 @@ bool Lock::MergePartialFromCodedStream( if (input->ExpectTag(25)) goto parse_length; break; } - + // required fixed64 length = 3; case 3: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -1650,14 +1688,14 @@ bool Lock::MergePartialFromCodedStream( DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive< ::google::protobuf::uint64, ::google::protobuf::internal::WireFormatLite::TYPE_FIXED64>( input, &length_))); - _set_bit(2); + set_has_length(); } else { goto handle_uninterpreted; } if (input->ExpectTag(33)) goto parse_offset; break; } - + // required fixed64 offset = 4; case 4: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -1666,14 +1704,14 @@ bool Lock::MergePartialFromCodedStream( DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive< ::google::protobuf::uint64, ::google::protobuf::internal::WireFormatLite::TYPE_FIXED64>( input, &offset_))); - _set_bit(3); + set_has_offset(); } else { goto handle_uninterpreted; } if (input->ExpectTag(40)) goto parse_exclusive; break; } - + // required bool exclusive = 5; case 5: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -1682,14 +1720,14 @@ bool Lock::MergePartialFromCodedStream( DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive< bool, ::google::protobuf::internal::WireFormatLite::TYPE_BOOL>( input, &exclusive_))); - _set_bit(4); + set_has_exclusive(); } else { goto handle_uninterpreted; } if (input->ExpectAtEnd()) return true; break; } - + default: { handle_uninterpreted: if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -1709,34 +1747,34 @@ bool Lock::MergePartialFromCodedStream( void Lock::SerializeWithCachedSizes( ::google::protobuf::io::CodedOutputStream* output) const { // required fixed32 client_pid = 1; - if (_has_bit(0)) { + if (has_client_pid()) { ::google::protobuf::internal::WireFormatLite::WriteFixed32(1, this->client_pid(), output); } - + // required string client_uuid = 2; - if (_has_bit(1)) { + if (has_client_uuid()) { ::google::protobuf::internal::WireFormat::VerifyUTF8String( this->client_uuid().data(), this->client_uuid().length(), ::google::protobuf::internal::WireFormat::SERIALIZE); ::google::protobuf::internal::WireFormatLite::WriteString( 2, this->client_uuid(), output); } - + // required fixed64 length = 3; - if (_has_bit(2)) { + if (has_length()) { ::google::protobuf::internal::WireFormatLite::WriteFixed64(3, this->length(), output); } - + // required fixed64 offset = 4; - if (_has_bit(3)) { + if (has_offset()) { ::google::protobuf::internal::WireFormatLite::WriteFixed64(4, this->offset(), output); } - + // required bool exclusive = 5; - if (_has_bit(4)) { + if (has_exclusive()) { ::google::protobuf::internal::WireFormatLite::WriteBool(5, this->exclusive(), output); } - + if (!unknown_fields().empty()) { ::google::protobuf::internal::WireFormat::SerializeUnknownFields( unknown_fields(), output); @@ -1746,12 +1784,12 @@ void Lock::SerializeWithCachedSizes( ::google::protobuf::uint8* Lock::SerializeWithCachedSizesToArray( ::google::protobuf::uint8* target) const { // required fixed32 client_pid = 1; - if (_has_bit(0)) { + if (has_client_pid()) { target = ::google::protobuf::internal::WireFormatLite::WriteFixed32ToArray(1, this->client_pid(), target); } - + // required string client_uuid = 2; - if (_has_bit(1)) { + if (has_client_uuid()) { ::google::protobuf::internal::WireFormat::VerifyUTF8String( this->client_uuid().data(), this->client_uuid().length(), ::google::protobuf::internal::WireFormat::SERIALIZE); @@ -1759,22 +1797,22 @@ void Lock::SerializeWithCachedSizes( ::google::protobuf::internal::WireFormatLite::WriteStringToArray( 2, this->client_uuid(), target); } - + // required fixed64 length = 3; - if (_has_bit(2)) { + if (has_length()) { target = ::google::protobuf::internal::WireFormatLite::WriteFixed64ToArray(3, this->length(), target); } - + // required fixed64 offset = 4; - if (_has_bit(3)) { + if (has_offset()) { target = ::google::protobuf::internal::WireFormatLite::WriteFixed64ToArray(4, this->offset(), target); } - + // required bool exclusive = 5; - if (_has_bit(4)) { + if (has_exclusive()) { target = ::google::protobuf::internal::WireFormatLite::WriteBoolToArray(5, this->exclusive(), target); } - + if (!unknown_fields().empty()) { target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray( unknown_fields(), target); @@ -1784,35 +1822,35 @@ void Lock::SerializeWithCachedSizes( int Lock::ByteSize() const { int total_size = 0; - + if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) { // required fixed32 client_pid = 1; if (has_client_pid()) { total_size += 1 + 4; } - + // required string client_uuid = 2; if (has_client_uuid()) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::StringSize( this->client_uuid()); } - + // required fixed64 length = 3; if (has_length()) { total_size += 1 + 8; } - + // required fixed64 offset = 4; if (has_offset()) { total_size += 1 + 8; } - + // required bool exclusive = 5; if (has_exclusive()) { total_size += 1 + 1; } - + } if (!unknown_fields().empty()) { total_size += @@ -1840,19 +1878,19 @@ void Lock::MergeFrom(const ::google::protobuf::Message& from) { void Lock::MergeFrom(const Lock& from) { GOOGLE_CHECK_NE(&from, this); if (from._has_bits_[0 / 32] & (0xffu << (0 % 32))) { - if (from._has_bit(0)) { + if (from.has_client_pid()) { set_client_pid(from.client_pid()); } - if (from._has_bit(1)) { + if (from.has_client_uuid()) { set_client_uuid(from.client_uuid()); } - if (from._has_bit(2)) { + if (from.has_length()) { set_length(from.length()); } - if (from._has_bit(3)) { + if (from.has_offset()) { set_offset(from.offset()); } - if (from._has_bit(4)) { + if (from.has_exclusive()) { set_exclusive(from.exclusive()); } } @@ -1873,7 +1911,7 @@ void Lock::CopyFrom(const Lock& from) { bool Lock::IsInitialized() const { if ((_has_bits_[0] & 0x0000001f) != 0x0000001f) return false; - + return true; } @@ -1949,7 +1987,8 @@ const ::google::protobuf::Descriptor* ObjectData::descriptor() { } const ObjectData& ObjectData::default_instance() { - if (default_instance_ == NULL) protobuf_AddDesc_xtreemfs_2fOSD_2eproto(); return *default_instance_; + if (default_instance_ == NULL) protobuf_AddDesc_xtreemfs_2fOSD_2eproto(); + return *default_instance_; } ObjectData* ObjectData::default_instance_ = NULL; @@ -1981,14 +2020,14 @@ bool ObjectData::MergePartialFromCodedStream( DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive< ::google::protobuf::uint32, ::google::protobuf::internal::WireFormatLite::TYPE_FIXED32>( input, &checksum_))); - _set_bit(0); + set_has_checksum(); } else { goto handle_uninterpreted; } if (input->ExpectTag(16)) goto parse_invalid_checksum_on_osd; break; } - + // required bool invalid_checksum_on_osd = 2; case 2: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -1997,14 +2036,14 @@ bool ObjectData::MergePartialFromCodedStream( DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive< bool, ::google::protobuf::internal::WireFormatLite::TYPE_BOOL>( input, &invalid_checksum_on_osd_))); - _set_bit(1); + set_has_invalid_checksum_on_osd(); } else { goto handle_uninterpreted; } if (input->ExpectTag(29)) goto parse_zero_padding; break; } - + // required fixed32 zero_padding = 3; case 3: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -2013,14 +2052,14 @@ bool ObjectData::MergePartialFromCodedStream( DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive< ::google::protobuf::uint32, ::google::protobuf::internal::WireFormatLite::TYPE_FIXED32>( input, &zero_padding_))); - _set_bit(2); + set_has_zero_padding(); } else { goto handle_uninterpreted; } if (input->ExpectAtEnd()) return true; break; } - + default: { handle_uninterpreted: if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -2040,20 +2079,20 @@ bool ObjectData::MergePartialFromCodedStream( void ObjectData::SerializeWithCachedSizes( ::google::protobuf::io::CodedOutputStream* output) const { // required fixed32 checksum = 1; - if (_has_bit(0)) { + if (has_checksum()) { ::google::protobuf::internal::WireFormatLite::WriteFixed32(1, this->checksum(), output); } - + // required bool invalid_checksum_on_osd = 2; - if (_has_bit(1)) { + if (has_invalid_checksum_on_osd()) { ::google::protobuf::internal::WireFormatLite::WriteBool(2, this->invalid_checksum_on_osd(), output); } - + // required fixed32 zero_padding = 3; - if (_has_bit(2)) { + if (has_zero_padding()) { ::google::protobuf::internal::WireFormatLite::WriteFixed32(3, this->zero_padding(), output); } - + if (!unknown_fields().empty()) { ::google::protobuf::internal::WireFormat::SerializeUnknownFields( unknown_fields(), output); @@ -2063,20 +2102,20 @@ void ObjectData::SerializeWithCachedSizes( ::google::protobuf::uint8* ObjectData::SerializeWithCachedSizesToArray( ::google::protobuf::uint8* target) const { // required fixed32 checksum = 1; - if (_has_bit(0)) { + if (has_checksum()) { target = ::google::protobuf::internal::WireFormatLite::WriteFixed32ToArray(1, this->checksum(), target); } - + // required bool invalid_checksum_on_osd = 2; - if (_has_bit(1)) { + if (has_invalid_checksum_on_osd()) { target = ::google::protobuf::internal::WireFormatLite::WriteBoolToArray(2, this->invalid_checksum_on_osd(), target); } - + // required fixed32 zero_padding = 3; - if (_has_bit(2)) { + if (has_zero_padding()) { target = ::google::protobuf::internal::WireFormatLite::WriteFixed32ToArray(3, this->zero_padding(), target); } - + if (!unknown_fields().empty()) { target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray( unknown_fields(), target); @@ -2086,23 +2125,23 @@ void ObjectData::SerializeWithCachedSizes( int ObjectData::ByteSize() const { int total_size = 0; - + if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) { // required fixed32 checksum = 1; if (has_checksum()) { total_size += 1 + 4; } - + // required bool invalid_checksum_on_osd = 2; if (has_invalid_checksum_on_osd()) { total_size += 1 + 1; } - + // required fixed32 zero_padding = 3; if (has_zero_padding()) { total_size += 1 + 4; } - + } if (!unknown_fields().empty()) { total_size += @@ -2130,13 +2169,13 @@ void ObjectData::MergeFrom(const ::google::protobuf::Message& from) { void ObjectData::MergeFrom(const ObjectData& from) { GOOGLE_CHECK_NE(&from, this); if (from._has_bits_[0 / 32] & (0xffu << (0 % 32))) { - if (from._has_bit(0)) { + if (from.has_checksum()) { set_checksum(from.checksum()); } - if (from._has_bit(1)) { + if (from.has_invalid_checksum_on_osd()) { set_invalid_checksum_on_osd(from.invalid_checksum_on_osd()); } - if (from._has_bit(2)) { + if (from.has_zero_padding()) { set_zero_padding(from.zero_padding()); } } @@ -2157,7 +2196,7 @@ void ObjectData::CopyFrom(const ObjectData& from) { bool ObjectData::IsInitialized() const { if ((_has_bits_[0] & 0x00000007) != 0x00000007) return false; - + return true; } @@ -2183,7 +2222,6 @@ void ObjectData::Swap(ObjectData* other) { // =================================================================== -const ::std::string ObjectList::_default_set_; #ifndef _MSC_VER const int ObjectList::kSetFieldNumber; const int ObjectList::kStripeWidthFieldNumber; @@ -2206,7 +2244,7 @@ ObjectList::ObjectList(const ObjectList& from) void ObjectList::SharedCtor() { _cached_size_ = 0; - set_ = const_cast< ::std::string*>(&_default_set_); + set_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); stripe_width_ = 0u; first__ = 0u; ::memset(_has_bits_, 0, sizeof(_has_bits_)); @@ -2217,7 +2255,7 @@ ObjectList::~ObjectList() { } void ObjectList::SharedDtor() { - if (set_ != &_default_set_) { + if (set_ != &::google::protobuf::internal::kEmptyString) { delete set_; } if (this != default_instance_) { @@ -2235,7 +2273,8 @@ const ::google::protobuf::Descriptor* ObjectList::descriptor() { } const ObjectList& ObjectList::default_instance() { - if (default_instance_ == NULL) protobuf_AddDesc_xtreemfs_2fOSD_2eproto(); return *default_instance_; + if (default_instance_ == NULL) protobuf_AddDesc_xtreemfs_2fOSD_2eproto(); + return *default_instance_; } ObjectList* ObjectList::default_instance_ = NULL; @@ -2246,8 +2285,8 @@ ObjectList* ObjectList::New() const { void ObjectList::Clear() { if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) { - if (_has_bit(0)) { - if (set_ != &_default_set_) { + if (has_set()) { + if (set_ != &::google::protobuf::internal::kEmptyString) { set_->clear(); } } @@ -2276,7 +2315,7 @@ bool ObjectList::MergePartialFromCodedStream( if (input->ExpectTag(21)) goto parse_stripe_width; break; } - + // required fixed32 stripe_width = 2; case 2: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -2285,14 +2324,14 @@ bool ObjectList::MergePartialFromCodedStream( DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive< ::google::protobuf::uint32, ::google::protobuf::internal::WireFormatLite::TYPE_FIXED32>( input, &stripe_width_))); - _set_bit(1); + set_has_stripe_width(); } else { goto handle_uninterpreted; } if (input->ExpectTag(29)) goto parse_first_; break; } - + // required fixed32 first_ = 3; case 3: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -2301,14 +2340,14 @@ bool ObjectList::MergePartialFromCodedStream( DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive< ::google::protobuf::uint32, ::google::protobuf::internal::WireFormatLite::TYPE_FIXED32>( input, &first__))); - _set_bit(2); + set_has_first_(); } else { goto handle_uninterpreted; } if (input->ExpectAtEnd()) return true; break; } - + default: { handle_uninterpreted: if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -2328,21 +2367,21 @@ bool ObjectList::MergePartialFromCodedStream( void ObjectList::SerializeWithCachedSizes( ::google::protobuf::io::CodedOutputStream* output) const { // required bytes set = 1; - if (_has_bit(0)) { + if (has_set()) { ::google::protobuf::internal::WireFormatLite::WriteBytes( 1, this->set(), output); } - + // required fixed32 stripe_width = 2; - if (_has_bit(1)) { + if (has_stripe_width()) { ::google::protobuf::internal::WireFormatLite::WriteFixed32(2, this->stripe_width(), output); } - + // required fixed32 first_ = 3; - if (_has_bit(2)) { + if (has_first_()) { ::google::protobuf::internal::WireFormatLite::WriteFixed32(3, this->first_(), output); } - + if (!unknown_fields().empty()) { ::google::protobuf::internal::WireFormat::SerializeUnknownFields( unknown_fields(), output); @@ -2352,22 +2391,22 @@ void ObjectList::SerializeWithCachedSizes( ::google::protobuf::uint8* ObjectList::SerializeWithCachedSizesToArray( ::google::protobuf::uint8* target) const { // required bytes set = 1; - if (_has_bit(0)) { + if (has_set()) { target = ::google::protobuf::internal::WireFormatLite::WriteBytesToArray( 1, this->set(), target); } - + // required fixed32 stripe_width = 2; - if (_has_bit(1)) { + if (has_stripe_width()) { target = ::google::protobuf::internal::WireFormatLite::WriteFixed32ToArray(2, this->stripe_width(), target); } - + // required fixed32 first_ = 3; - if (_has_bit(2)) { + if (has_first_()) { target = ::google::protobuf::internal::WireFormatLite::WriteFixed32ToArray(3, this->first_(), target); } - + if (!unknown_fields().empty()) { target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray( unknown_fields(), target); @@ -2377,7 +2416,7 @@ void ObjectList::SerializeWithCachedSizes( int ObjectList::ByteSize() const { int total_size = 0; - + if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) { // required bytes set = 1; if (has_set()) { @@ -2385,17 +2424,17 @@ int ObjectList::ByteSize() const { ::google::protobuf::internal::WireFormatLite::BytesSize( this->set()); } - + // required fixed32 stripe_width = 2; if (has_stripe_width()) { total_size += 1 + 4; } - + // required fixed32 first_ = 3; if (has_first_()) { total_size += 1 + 4; } - + } if (!unknown_fields().empty()) { total_size += @@ -2423,13 +2462,13 @@ void ObjectList::MergeFrom(const ::google::protobuf::Message& from) { void ObjectList::MergeFrom(const ObjectList& from) { GOOGLE_CHECK_NE(&from, this); if (from._has_bits_[0 / 32] & (0xffu << (0 % 32))) { - if (from._has_bit(0)) { + if (from.has_set()) { set_set(from.set()); } - if (from._has_bit(1)) { + if (from.has_stripe_width()) { set_stripe_width(from.stripe_width()); } - if (from._has_bit(2)) { + if (from.has_first_()) { set_first_(from.first_()); } } @@ -2450,7 +2489,7 @@ void ObjectList::CopyFrom(const ObjectList& from) { bool ObjectList::IsInitialized() const { if ((_has_bits_[0] & 0x00000007) != 0x00000007) return false; - + return true; } @@ -2522,7 +2561,8 @@ const ::google::protobuf::Descriptor* ObjectVersion::descriptor() { } const ObjectVersion& ObjectVersion::default_instance() { - if (default_instance_ == NULL) protobuf_AddDesc_xtreemfs_2fOSD_2eproto(); return *default_instance_; + if (default_instance_ == NULL) protobuf_AddDesc_xtreemfs_2fOSD_2eproto(); + return *default_instance_; } ObjectVersion* ObjectVersion::default_instance_ = NULL; @@ -2553,14 +2593,14 @@ bool ObjectVersion::MergePartialFromCodedStream( DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive< ::google::protobuf::uint64, ::google::protobuf::internal::WireFormatLite::TYPE_FIXED64>( input, &object_number_))); - _set_bit(0); + set_has_object_number(); } else { goto handle_uninterpreted; } if (input->ExpectTag(17)) goto parse_object_version; break; } - + // required fixed64 object_version = 2; case 2: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -2569,14 +2609,14 @@ bool ObjectVersion::MergePartialFromCodedStream( DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive< ::google::protobuf::uint64, ::google::protobuf::internal::WireFormatLite::TYPE_FIXED64>( input, &object_version_))); - _set_bit(1); + set_has_object_version(); } else { goto handle_uninterpreted; } if (input->ExpectAtEnd()) return true; break; } - + default: { handle_uninterpreted: if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -2596,15 +2636,15 @@ bool ObjectVersion::MergePartialFromCodedStream( void ObjectVersion::SerializeWithCachedSizes( ::google::protobuf::io::CodedOutputStream* output) const { // required fixed64 object_number = 1; - if (_has_bit(0)) { + if (has_object_number()) { ::google::protobuf::internal::WireFormatLite::WriteFixed64(1, this->object_number(), output); } - + // required fixed64 object_version = 2; - if (_has_bit(1)) { + if (has_object_version()) { ::google::protobuf::internal::WireFormatLite::WriteFixed64(2, this->object_version(), output); } - + if (!unknown_fields().empty()) { ::google::protobuf::internal::WireFormat::SerializeUnknownFields( unknown_fields(), output); @@ -2614,15 +2654,15 @@ void ObjectVersion::SerializeWithCachedSizes( ::google::protobuf::uint8* ObjectVersion::SerializeWithCachedSizesToArray( ::google::protobuf::uint8* target) const { // required fixed64 object_number = 1; - if (_has_bit(0)) { + if (has_object_number()) { target = ::google::protobuf::internal::WireFormatLite::WriteFixed64ToArray(1, this->object_number(), target); } - + // required fixed64 object_version = 2; - if (_has_bit(1)) { + if (has_object_version()) { target = ::google::protobuf::internal::WireFormatLite::WriteFixed64ToArray(2, this->object_version(), target); } - + if (!unknown_fields().empty()) { target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray( unknown_fields(), target); @@ -2632,18 +2672,18 @@ void ObjectVersion::SerializeWithCachedSizes( int ObjectVersion::ByteSize() const { int total_size = 0; - + if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) { // required fixed64 object_number = 1; if (has_object_number()) { total_size += 1 + 8; } - + // required fixed64 object_version = 2; if (has_object_version()) { total_size += 1 + 8; } - + } if (!unknown_fields().empty()) { total_size += @@ -2671,10 +2711,10 @@ void ObjectVersion::MergeFrom(const ::google::protobuf::Message& from) { void ObjectVersion::MergeFrom(const ObjectVersion& from) { GOOGLE_CHECK_NE(&from, this); if (from._has_bits_[0 / 32] & (0xffu << (0 % 32))) { - if (from._has_bit(0)) { + if (from.has_object_number()) { set_object_number(from.object_number()); } - if (from._has_bit(1)) { + if (from.has_object_version()) { set_object_version(from.object_version()); } } @@ -2695,7 +2735,7 @@ void ObjectVersion::CopyFrom(const ObjectVersion& from) { bool ObjectVersion::IsInitialized() const { if ((_has_bits_[0] & 0x00000003) != 0x00000003) return false; - + return true; } @@ -2766,7 +2806,8 @@ const ::google::protobuf::Descriptor* TruncateRecord::descriptor() { } const TruncateRecord& TruncateRecord::default_instance() { - if (default_instance_ == NULL) protobuf_AddDesc_xtreemfs_2fOSD_2eproto(); return *default_instance_; + if (default_instance_ == NULL) protobuf_AddDesc_xtreemfs_2fOSD_2eproto(); + return *default_instance_; } TruncateRecord* TruncateRecord::default_instance_ = NULL; @@ -2797,14 +2838,14 @@ bool TruncateRecord::MergePartialFromCodedStream( DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive< ::google::protobuf::uint64, ::google::protobuf::internal::WireFormatLite::TYPE_FIXED64>( input, &version_))); - _set_bit(0); + set_has_version(); } else { goto handle_uninterpreted; } if (input->ExpectTag(17)) goto parse_last_object_number; break; } - + // required fixed64 last_object_number = 2; case 2: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -2813,14 +2854,14 @@ bool TruncateRecord::MergePartialFromCodedStream( DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive< ::google::protobuf::uint64, ::google::protobuf::internal::WireFormatLite::TYPE_FIXED64>( input, &last_object_number_))); - _set_bit(1); + set_has_last_object_number(); } else { goto handle_uninterpreted; } if (input->ExpectAtEnd()) return true; break; } - + default: { handle_uninterpreted: if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -2840,15 +2881,15 @@ bool TruncateRecord::MergePartialFromCodedStream( void TruncateRecord::SerializeWithCachedSizes( ::google::protobuf::io::CodedOutputStream* output) const { // required fixed64 version = 1; - if (_has_bit(0)) { + if (has_version()) { ::google::protobuf::internal::WireFormatLite::WriteFixed64(1, this->version(), output); } - + // required fixed64 last_object_number = 2; - if (_has_bit(1)) { + if (has_last_object_number()) { ::google::protobuf::internal::WireFormatLite::WriteFixed64(2, this->last_object_number(), output); } - + if (!unknown_fields().empty()) { ::google::protobuf::internal::WireFormat::SerializeUnknownFields( unknown_fields(), output); @@ -2858,15 +2899,15 @@ void TruncateRecord::SerializeWithCachedSizes( ::google::protobuf::uint8* TruncateRecord::SerializeWithCachedSizesToArray( ::google::protobuf::uint8* target) const { // required fixed64 version = 1; - if (_has_bit(0)) { + if (has_version()) { target = ::google::protobuf::internal::WireFormatLite::WriteFixed64ToArray(1, this->version(), target); } - + // required fixed64 last_object_number = 2; - if (_has_bit(1)) { + if (has_last_object_number()) { target = ::google::protobuf::internal::WireFormatLite::WriteFixed64ToArray(2, this->last_object_number(), target); } - + if (!unknown_fields().empty()) { target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray( unknown_fields(), target); @@ -2876,18 +2917,18 @@ void TruncateRecord::SerializeWithCachedSizes( int TruncateRecord::ByteSize() const { int total_size = 0; - + if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) { // required fixed64 version = 1; if (has_version()) { total_size += 1 + 8; } - + // required fixed64 last_object_number = 2; if (has_last_object_number()) { total_size += 1 + 8; } - + } if (!unknown_fields().empty()) { total_size += @@ -2915,10 +2956,10 @@ void TruncateRecord::MergeFrom(const ::google::protobuf::Message& from) { void TruncateRecord::MergeFrom(const TruncateRecord& from) { GOOGLE_CHECK_NE(&from, this); if (from._has_bits_[0 / 32] & (0xffu << (0 % 32))) { - if (from._has_bit(0)) { + if (from.has_version()) { set_version(from.version()); } - if (from._has_bit(1)) { + if (from.has_last_object_number()) { set_last_object_number(from.last_object_number()); } } @@ -2939,7 +2980,7 @@ void TruncateRecord::CopyFrom(const TruncateRecord& from) { bool TruncateRecord::IsInitialized() const { if ((_has_bits_[0] & 0x00000003) != 0x00000003) return false; - + return true; } @@ -3007,7 +3048,8 @@ const ::google::protobuf::Descriptor* TruncateLog::descriptor() { } const TruncateLog& TruncateLog::default_instance() { - if (default_instance_ == NULL) protobuf_AddDesc_xtreemfs_2fOSD_2eproto(); return *default_instance_; + if (default_instance_ == NULL) protobuf_AddDesc_xtreemfs_2fOSD_2eproto(); + return *default_instance_; } TruncateLog* TruncateLog::default_instance_ = NULL; @@ -3042,7 +3084,7 @@ bool TruncateLog::MergePartialFromCodedStream( if (input->ExpectAtEnd()) return true; break; } - + default: { handle_uninterpreted: if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -3066,7 +3108,7 @@ void TruncateLog::SerializeWithCachedSizes( ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray( 1, this->records(i), output); } - + if (!unknown_fields().empty()) { ::google::protobuf::internal::WireFormat::SerializeUnknownFields( unknown_fields(), output); @@ -3081,7 +3123,7 @@ void TruncateLog::SerializeWithCachedSizes( WriteMessageNoVirtualToArray( 1, this->records(i), target); } - + if (!unknown_fields().empty()) { target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray( unknown_fields(), target); @@ -3091,7 +3133,7 @@ void TruncateLog::SerializeWithCachedSizes( int TruncateLog::ByteSize() const { int total_size = 0; - + // repeated .xtreemfs.pbrpc.TruncateRecord records = 1; total_size += 1 * this->records_size(); for (int i = 0; i < this->records_size(); i++) { @@ -3099,7 +3141,7 @@ int TruncateLog::ByteSize() const { ::google::protobuf::internal::WireFormatLite::MessageSizeNoVirtual( this->records(i)); } - + if (!unknown_fields().empty()) { total_size += ::google::protobuf::internal::WireFormat::ComputeUnknownFieldsSize( @@ -3142,7 +3184,7 @@ void TruncateLog::CopyFrom(const TruncateLog& from) { } bool TruncateLog::IsInitialized() const { - + for (int i = 0; i < records_size(); i++) { if (!this->records(i).IsInitialized()) return false; } @@ -3224,7 +3266,8 @@ const ::google::protobuf::Descriptor* ReplicaStatus::descriptor() { } const ReplicaStatus& ReplicaStatus::default_instance() { - if (default_instance_ == NULL) protobuf_AddDesc_xtreemfs_2fOSD_2eproto(); return *default_instance_; + if (default_instance_ == NULL) protobuf_AddDesc_xtreemfs_2fOSD_2eproto(); + return *default_instance_; } ReplicaStatus* ReplicaStatus::default_instance_ = NULL; @@ -3239,7 +3282,7 @@ void ReplicaStatus::Clear() { file_size_ = GOOGLE_ULONGLONG(0); max_obj_version_ = GOOGLE_ULONGLONG(0); primary_epoch_ = 0u; - if (_has_bit(5)) { + if (has_truncate_log()) { if (truncate_log_ != NULL) truncate_log_->::xtreemfs::pbrpc::TruncateLog::Clear(); } } @@ -3261,14 +3304,14 @@ bool ReplicaStatus::MergePartialFromCodedStream( DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive< ::google::protobuf::uint64, ::google::protobuf::internal::WireFormatLite::TYPE_FIXED64>( input, &truncate_epoch_))); - _set_bit(0); + set_has_truncate_epoch(); } else { goto handle_uninterpreted; } if (input->ExpectTag(17)) goto parse_file_size; break; } - + // required fixed64 file_size = 2; case 2: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -3277,14 +3320,14 @@ bool ReplicaStatus::MergePartialFromCodedStream( DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive< ::google::protobuf::uint64, ::google::protobuf::internal::WireFormatLite::TYPE_FIXED64>( input, &file_size_))); - _set_bit(1); + set_has_file_size(); } else { goto handle_uninterpreted; } if (input->ExpectTag(25)) goto parse_max_obj_version; break; } - + // required fixed64 max_obj_version = 3; case 3: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -3293,14 +3336,14 @@ bool ReplicaStatus::MergePartialFromCodedStream( DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive< ::google::protobuf::uint64, ::google::protobuf::internal::WireFormatLite::TYPE_FIXED64>( input, &max_obj_version_))); - _set_bit(2); + set_has_max_obj_version(); } else { goto handle_uninterpreted; } if (input->ExpectTag(37)) goto parse_primary_epoch; break; } - + // required fixed32 primary_epoch = 4; case 4: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -3309,14 +3352,14 @@ bool ReplicaStatus::MergePartialFromCodedStream( DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive< ::google::protobuf::uint32, ::google::protobuf::internal::WireFormatLite::TYPE_FIXED32>( input, &primary_epoch_))); - _set_bit(3); + set_has_primary_epoch(); } else { goto handle_uninterpreted; } if (input->ExpectTag(42)) goto parse_objectVersions; break; } - + // repeated .xtreemfs.pbrpc.ObjectVersion objectVersions = 5; case 5: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -3331,7 +3374,7 @@ bool ReplicaStatus::MergePartialFromCodedStream( if (input->ExpectTag(50)) goto parse_truncate_log; break; } - + // required .xtreemfs.pbrpc.TruncateLog truncate_log = 6; case 6: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -3345,7 +3388,7 @@ bool ReplicaStatus::MergePartialFromCodedStream( if (input->ExpectAtEnd()) return true; break; } - + default: { handle_uninterpreted: if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -3365,37 +3408,37 @@ bool ReplicaStatus::MergePartialFromCodedStream( void ReplicaStatus::SerializeWithCachedSizes( ::google::protobuf::io::CodedOutputStream* output) const { // required fixed64 truncate_epoch = 1; - if (_has_bit(0)) { + if (has_truncate_epoch()) { ::google::protobuf::internal::WireFormatLite::WriteFixed64(1, this->truncate_epoch(), output); } - + // required fixed64 file_size = 2; - if (_has_bit(1)) { + if (has_file_size()) { ::google::protobuf::internal::WireFormatLite::WriteFixed64(2, this->file_size(), output); } - + // required fixed64 max_obj_version = 3; - if (_has_bit(2)) { + if (has_max_obj_version()) { ::google::protobuf::internal::WireFormatLite::WriteFixed64(3, this->max_obj_version(), output); } - + // required fixed32 primary_epoch = 4; - if (_has_bit(3)) { + if (has_primary_epoch()) { ::google::protobuf::internal::WireFormatLite::WriteFixed32(4, this->primary_epoch(), output); } - + // repeated .xtreemfs.pbrpc.ObjectVersion objectVersions = 5; for (int i = 0; i < this->objectversions_size(); i++) { ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray( 5, this->objectversions(i), output); } - + // required .xtreemfs.pbrpc.TruncateLog truncate_log = 6; - if (_has_bit(5)) { + if (has_truncate_log()) { ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray( 6, this->truncate_log(), output); } - + if (!unknown_fields().empty()) { ::google::protobuf::internal::WireFormat::SerializeUnknownFields( unknown_fields(), output); @@ -3405,39 +3448,39 @@ void ReplicaStatus::SerializeWithCachedSizes( ::google::protobuf::uint8* ReplicaStatus::SerializeWithCachedSizesToArray( ::google::protobuf::uint8* target) const { // required fixed64 truncate_epoch = 1; - if (_has_bit(0)) { + if (has_truncate_epoch()) { target = ::google::protobuf::internal::WireFormatLite::WriteFixed64ToArray(1, this->truncate_epoch(), target); } - + // required fixed64 file_size = 2; - if (_has_bit(1)) { + if (has_file_size()) { target = ::google::protobuf::internal::WireFormatLite::WriteFixed64ToArray(2, this->file_size(), target); } - + // required fixed64 max_obj_version = 3; - if (_has_bit(2)) { + if (has_max_obj_version()) { target = ::google::protobuf::internal::WireFormatLite::WriteFixed64ToArray(3, this->max_obj_version(), target); } - + // required fixed32 primary_epoch = 4; - if (_has_bit(3)) { + if (has_primary_epoch()) { target = ::google::protobuf::internal::WireFormatLite::WriteFixed32ToArray(4, this->primary_epoch(), target); } - + // repeated .xtreemfs.pbrpc.ObjectVersion objectVersions = 5; for (int i = 0; i < this->objectversions_size(); i++) { target = ::google::protobuf::internal::WireFormatLite:: WriteMessageNoVirtualToArray( 5, this->objectversions(i), target); } - + // required .xtreemfs.pbrpc.TruncateLog truncate_log = 6; - if (_has_bit(5)) { + if (has_truncate_log()) { target = ::google::protobuf::internal::WireFormatLite:: WriteMessageNoVirtualToArray( 6, this->truncate_log(), target); } - + if (!unknown_fields().empty()) { target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray( unknown_fields(), target); @@ -3447,35 +3490,35 @@ void ReplicaStatus::SerializeWithCachedSizes( int ReplicaStatus::ByteSize() const { int total_size = 0; - + if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) { // required fixed64 truncate_epoch = 1; if (has_truncate_epoch()) { total_size += 1 + 8; } - + // required fixed64 file_size = 2; if (has_file_size()) { total_size += 1 + 8; } - + // required fixed64 max_obj_version = 3; if (has_max_obj_version()) { total_size += 1 + 8; } - + // required fixed32 primary_epoch = 4; if (has_primary_epoch()) { total_size += 1 + 4; } - + // required .xtreemfs.pbrpc.TruncateLog truncate_log = 6; if (has_truncate_log()) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::MessageSizeNoVirtual( this->truncate_log()); } - + } // repeated .xtreemfs.pbrpc.ObjectVersion objectVersions = 5; total_size += 1 * this->objectversions_size(); @@ -3484,7 +3527,7 @@ int ReplicaStatus::ByteSize() const { ::google::protobuf::internal::WireFormatLite::MessageSizeNoVirtual( this->objectversions(i)); } - + if (!unknown_fields().empty()) { total_size += ::google::protobuf::internal::WireFormat::ComputeUnknownFieldsSize( @@ -3512,19 +3555,19 @@ void ReplicaStatus::MergeFrom(const ReplicaStatus& from) { GOOGLE_CHECK_NE(&from, this); objectversions_.MergeFrom(from.objectversions_); if (from._has_bits_[0 / 32] & (0xffu << (0 % 32))) { - if (from._has_bit(0)) { + if (from.has_truncate_epoch()) { set_truncate_epoch(from.truncate_epoch()); } - if (from._has_bit(1)) { + if (from.has_file_size()) { set_file_size(from.file_size()); } - if (from._has_bit(2)) { + if (from.has_max_obj_version()) { set_max_obj_version(from.max_obj_version()); } - if (from._has_bit(3)) { + if (from.has_primary_epoch()) { set_primary_epoch(from.primary_epoch()); } - if (from._has_bit(5)) { + if (from.has_truncate_log()) { mutable_truncate_log()->::xtreemfs::pbrpc::TruncateLog::MergeFrom(from.truncate_log()); } } @@ -3545,7 +3588,7 @@ void ReplicaStatus::CopyFrom(const ReplicaStatus& from) { bool ReplicaStatus::IsInitialized() const { if ((_has_bits_[0] & 0x0000002f) != 0x0000002f) return false; - + for (int i = 0; i < objectversions_size(); i++) { if (!this->objectversions(i).IsInitialized()) return false; } @@ -3627,7 +3670,8 @@ const ::google::protobuf::Descriptor* ObjectVersionMapping::descriptor() { } const ObjectVersionMapping& ObjectVersionMapping::default_instance() { - if (default_instance_ == NULL) protobuf_AddDesc_xtreemfs_2fOSD_2eproto(); return *default_instance_; + if (default_instance_ == NULL) protobuf_AddDesc_xtreemfs_2fOSD_2eproto(); + return *default_instance_; } ObjectVersionMapping* ObjectVersionMapping::default_instance_ = NULL; @@ -3659,14 +3703,14 @@ bool ObjectVersionMapping::MergePartialFromCodedStream( DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive< ::google::protobuf::uint64, ::google::protobuf::internal::WireFormatLite::TYPE_FIXED64>( input, &object_number_))); - _set_bit(0); + set_has_object_number(); } else { goto handle_uninterpreted; } if (input->ExpectTag(17)) goto parse_object_version; break; } - + // required fixed64 object_version = 2; case 2: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -3675,14 +3719,14 @@ bool ObjectVersionMapping::MergePartialFromCodedStream( DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive< ::google::protobuf::uint64, ::google::protobuf::internal::WireFormatLite::TYPE_FIXED64>( input, &object_version_))); - _set_bit(1); + set_has_object_version(); } else { goto handle_uninterpreted; } if (input->ExpectTag(26)) goto parse_osd_uuids; break; } - + // repeated string osd_uuids = 3; case 3: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -3691,7 +3735,8 @@ bool ObjectVersionMapping::MergePartialFromCodedStream( DO_(::google::protobuf::internal::WireFormatLite::ReadString( input, this->add_osd_uuids())); ::google::protobuf::internal::WireFormat::VerifyUTF8String( - this->osd_uuids(0).data(), this->osd_uuids(0).length(), + this->osd_uuids(this->osd_uuids_size() - 1).data(), + this->osd_uuids(this->osd_uuids_size() - 1).length(), ::google::protobuf::internal::WireFormat::PARSE); } else { goto handle_uninterpreted; @@ -3700,7 +3745,7 @@ bool ObjectVersionMapping::MergePartialFromCodedStream( if (input->ExpectAtEnd()) return true; break; } - + default: { handle_uninterpreted: if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -3720,15 +3765,15 @@ bool ObjectVersionMapping::MergePartialFromCodedStream( void ObjectVersionMapping::SerializeWithCachedSizes( ::google::protobuf::io::CodedOutputStream* output) const { // required fixed64 object_number = 1; - if (_has_bit(0)) { + if (has_object_number()) { ::google::protobuf::internal::WireFormatLite::WriteFixed64(1, this->object_number(), output); } - + // required fixed64 object_version = 2; - if (_has_bit(1)) { + if (has_object_version()) { ::google::protobuf::internal::WireFormatLite::WriteFixed64(2, this->object_version(), output); } - + // repeated string osd_uuids = 3; for (int i = 0; i < this->osd_uuids_size(); i++) { ::google::protobuf::internal::WireFormat::VerifyUTF8String( @@ -3737,7 +3782,7 @@ void ObjectVersionMapping::SerializeWithCachedSizes( ::google::protobuf::internal::WireFormatLite::WriteString( 3, this->osd_uuids(i), output); } - + if (!unknown_fields().empty()) { ::google::protobuf::internal::WireFormat::SerializeUnknownFields( unknown_fields(), output); @@ -3747,15 +3792,15 @@ void ObjectVersionMapping::SerializeWithCachedSizes( ::google::protobuf::uint8* ObjectVersionMapping::SerializeWithCachedSizesToArray( ::google::protobuf::uint8* target) const { // required fixed64 object_number = 1; - if (_has_bit(0)) { + if (has_object_number()) { target = ::google::protobuf::internal::WireFormatLite::WriteFixed64ToArray(1, this->object_number(), target); } - + // required fixed64 object_version = 2; - if (_has_bit(1)) { + if (has_object_version()) { target = ::google::protobuf::internal::WireFormatLite::WriteFixed64ToArray(2, this->object_version(), target); } - + // repeated string osd_uuids = 3; for (int i = 0; i < this->osd_uuids_size(); i++) { ::google::protobuf::internal::WireFormat::VerifyUTF8String( @@ -3764,7 +3809,7 @@ void ObjectVersionMapping::SerializeWithCachedSizes( target = ::google::protobuf::internal::WireFormatLite:: WriteStringToArray(3, this->osd_uuids(i), target); } - + if (!unknown_fields().empty()) { target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray( unknown_fields(), target); @@ -3774,18 +3819,18 @@ void ObjectVersionMapping::SerializeWithCachedSizes( int ObjectVersionMapping::ByteSize() const { int total_size = 0; - + if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) { // required fixed64 object_number = 1; if (has_object_number()) { total_size += 1 + 8; } - + // required fixed64 object_version = 2; if (has_object_version()) { total_size += 1 + 8; } - + } // repeated string osd_uuids = 3; total_size += 1 * this->osd_uuids_size(); @@ -3793,7 +3838,7 @@ int ObjectVersionMapping::ByteSize() const { total_size += ::google::protobuf::internal::WireFormatLite::StringSize( this->osd_uuids(i)); } - + if (!unknown_fields().empty()) { total_size += ::google::protobuf::internal::WireFormat::ComputeUnknownFieldsSize( @@ -3821,10 +3866,10 @@ void ObjectVersionMapping::MergeFrom(const ObjectVersionMapping& from) { GOOGLE_CHECK_NE(&from, this); osd_uuids_.MergeFrom(from.osd_uuids_); if (from._has_bits_[0 / 32] & (0xffu << (0 % 32))) { - if (from._has_bit(0)) { + if (from.has_object_number()) { set_object_number(from.object_number()); } - if (from._has_bit(1)) { + if (from.has_object_version()) { set_object_version(from.object_version()); } } @@ -3845,7 +3890,7 @@ void ObjectVersionMapping::CopyFrom(const ObjectVersionMapping& from) { bool ObjectVersionMapping::IsInitialized() const { if ((_has_bits_[0] & 0x00000003) != 0x00000003) return false; - + return true; } @@ -3922,7 +3967,8 @@ const ::google::protobuf::Descriptor* AuthoritativeReplicaState::descriptor() { } const AuthoritativeReplicaState& AuthoritativeReplicaState::default_instance() { - if (default_instance_ == NULL) protobuf_AddDesc_xtreemfs_2fOSD_2eproto(); return *default_instance_; + if (default_instance_ == NULL) protobuf_AddDesc_xtreemfs_2fOSD_2eproto(); + return *default_instance_; } AuthoritativeReplicaState* AuthoritativeReplicaState::default_instance_ = NULL; @@ -3935,7 +3981,7 @@ void AuthoritativeReplicaState::Clear() { if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) { truncate_epoch_ = GOOGLE_ULONGLONG(0); max_obj_version_ = GOOGLE_ULONGLONG(0); - if (_has_bit(3)) { + if (has_truncate_log()) { if (truncate_log_ != NULL) truncate_log_->::xtreemfs::pbrpc::TruncateLog::Clear(); } } @@ -3957,14 +4003,14 @@ bool AuthoritativeReplicaState::MergePartialFromCodedStream( DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive< ::google::protobuf::uint64, ::google::protobuf::internal::WireFormatLite::TYPE_FIXED64>( input, &truncate_epoch_))); - _set_bit(0); + set_has_truncate_epoch(); } else { goto handle_uninterpreted; } if (input->ExpectTag(18)) goto parse_objectVersions; break; } - + // repeated .xtreemfs.pbrpc.ObjectVersionMapping objectVersions = 2; case 2: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -3979,7 +4025,7 @@ bool AuthoritativeReplicaState::MergePartialFromCodedStream( if (input->ExpectTag(26)) goto parse_truncate_log; break; } - + // required .xtreemfs.pbrpc.TruncateLog truncate_log = 3; case 3: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -3993,7 +4039,7 @@ bool AuthoritativeReplicaState::MergePartialFromCodedStream( if (input->ExpectTag(33)) goto parse_max_obj_version; break; } - + // required fixed64 max_obj_version = 4; case 4: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -4002,14 +4048,14 @@ bool AuthoritativeReplicaState::MergePartialFromCodedStream( DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive< ::google::protobuf::uint64, ::google::protobuf::internal::WireFormatLite::TYPE_FIXED64>( input, &max_obj_version_))); - _set_bit(1); + set_has_max_obj_version(); } else { goto handle_uninterpreted; } if (input->ExpectAtEnd()) return true; break; } - + default: { handle_uninterpreted: if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -4029,27 +4075,27 @@ bool AuthoritativeReplicaState::MergePartialFromCodedStream( void AuthoritativeReplicaState::SerializeWithCachedSizes( ::google::protobuf::io::CodedOutputStream* output) const { // required fixed64 truncate_epoch = 1; - if (_has_bit(0)) { + if (has_truncate_epoch()) { ::google::protobuf::internal::WireFormatLite::WriteFixed64(1, this->truncate_epoch(), output); } - + // repeated .xtreemfs.pbrpc.ObjectVersionMapping objectVersions = 2; for (int i = 0; i < this->objectversions_size(); i++) { ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray( 2, this->objectversions(i), output); } - + // required .xtreemfs.pbrpc.TruncateLog truncate_log = 3; - if (_has_bit(3)) { + if (has_truncate_log()) { ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray( 3, this->truncate_log(), output); } - + // required fixed64 max_obj_version = 4; - if (_has_bit(1)) { + if (has_max_obj_version()) { ::google::protobuf::internal::WireFormatLite::WriteFixed64(4, this->max_obj_version(), output); } - + if (!unknown_fields().empty()) { ::google::protobuf::internal::WireFormat::SerializeUnknownFields( unknown_fields(), output); @@ -4059,29 +4105,29 @@ void AuthoritativeReplicaState::SerializeWithCachedSizes( ::google::protobuf::uint8* AuthoritativeReplicaState::SerializeWithCachedSizesToArray( ::google::protobuf::uint8* target) const { // required fixed64 truncate_epoch = 1; - if (_has_bit(0)) { + if (has_truncate_epoch()) { target = ::google::protobuf::internal::WireFormatLite::WriteFixed64ToArray(1, this->truncate_epoch(), target); } - + // repeated .xtreemfs.pbrpc.ObjectVersionMapping objectVersions = 2; for (int i = 0; i < this->objectversions_size(); i++) { target = ::google::protobuf::internal::WireFormatLite:: WriteMessageNoVirtualToArray( 2, this->objectversions(i), target); } - + // required .xtreemfs.pbrpc.TruncateLog truncate_log = 3; - if (_has_bit(3)) { + if (has_truncate_log()) { target = ::google::protobuf::internal::WireFormatLite:: WriteMessageNoVirtualToArray( 3, this->truncate_log(), target); } - + // required fixed64 max_obj_version = 4; - if (_has_bit(1)) { + if (has_max_obj_version()) { target = ::google::protobuf::internal::WireFormatLite::WriteFixed64ToArray(4, this->max_obj_version(), target); } - + if (!unknown_fields().empty()) { target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray( unknown_fields(), target); @@ -4091,25 +4137,25 @@ void AuthoritativeReplicaState::SerializeWithCachedSizes( int AuthoritativeReplicaState::ByteSize() const { int total_size = 0; - + if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) { // required fixed64 truncate_epoch = 1; if (has_truncate_epoch()) { total_size += 1 + 8; } - + // required fixed64 max_obj_version = 4; if (has_max_obj_version()) { total_size += 1 + 8; } - + // required .xtreemfs.pbrpc.TruncateLog truncate_log = 3; if (has_truncate_log()) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::MessageSizeNoVirtual( this->truncate_log()); } - + } // repeated .xtreemfs.pbrpc.ObjectVersionMapping objectVersions = 2; total_size += 1 * this->objectversions_size(); @@ -4118,7 +4164,7 @@ int AuthoritativeReplicaState::ByteSize() const { ::google::protobuf::internal::WireFormatLite::MessageSizeNoVirtual( this->objectversions(i)); } - + if (!unknown_fields().empty()) { total_size += ::google::protobuf::internal::WireFormat::ComputeUnknownFieldsSize( @@ -4146,13 +4192,13 @@ void AuthoritativeReplicaState::MergeFrom(const AuthoritativeReplicaState& from) GOOGLE_CHECK_NE(&from, this); objectversions_.MergeFrom(from.objectversions_); if (from._has_bits_[0 / 32] & (0xffu << (0 % 32))) { - if (from._has_bit(0)) { + if (from.has_truncate_epoch()) { set_truncate_epoch(from.truncate_epoch()); } - if (from._has_bit(1)) { + if (from.has_max_obj_version()) { set_max_obj_version(from.max_obj_version()); } - if (from._has_bit(3)) { + if (from.has_truncate_log()) { mutable_truncate_log()->::xtreemfs::pbrpc::TruncateLog::MergeFrom(from.truncate_log()); } } @@ -4173,7 +4219,7 @@ void AuthoritativeReplicaState::CopyFrom(const AuthoritativeReplicaState& from) bool AuthoritativeReplicaState::IsInitialized() const { if ((_has_bits_[0] & 0x0000000b) != 0x0000000b) return false; - + for (int i = 0; i < objectversions_size(); i++) { if (!this->objectversions(i).IsInitialized()) return false; } @@ -4253,7 +4299,8 @@ const ::google::protobuf::Descriptor* InternalReadLocalResponse::descriptor() { } const InternalReadLocalResponse& InternalReadLocalResponse::default_instance() { - if (default_instance_ == NULL) protobuf_AddDesc_xtreemfs_2fOSD_2eproto(); return *default_instance_; + if (default_instance_ == NULL) protobuf_AddDesc_xtreemfs_2fOSD_2eproto(); + return *default_instance_; } InternalReadLocalResponse* InternalReadLocalResponse::default_instance_ = NULL; @@ -4264,7 +4311,7 @@ InternalReadLocalResponse* InternalReadLocalResponse::New() const { void InternalReadLocalResponse::Clear() { if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) { - if (_has_bit(0)) { + if (has_data()) { if (data_ != NULL) data_->::xtreemfs::pbrpc::ObjectData::Clear(); } } @@ -4291,7 +4338,7 @@ bool InternalReadLocalResponse::MergePartialFromCodedStream( if (input->ExpectTag(18)) goto parse_object_set; break; } - + // repeated .xtreemfs.pbrpc.ObjectList object_set = 2; case 2: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -4306,7 +4353,7 @@ bool InternalReadLocalResponse::MergePartialFromCodedStream( if (input->ExpectAtEnd()) return true; break; } - + default: { handle_uninterpreted: if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -4326,17 +4373,17 @@ bool InternalReadLocalResponse::MergePartialFromCodedStream( void InternalReadLocalResponse::SerializeWithCachedSizes( ::google::protobuf::io::CodedOutputStream* output) const { // required .xtreemfs.pbrpc.ObjectData data = 1; - if (_has_bit(0)) { + if (has_data()) { ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray( 1, this->data(), output); } - + // repeated .xtreemfs.pbrpc.ObjectList object_set = 2; for (int i = 0; i < this->object_set_size(); i++) { ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray( 2, this->object_set(i), output); } - + if (!unknown_fields().empty()) { ::google::protobuf::internal::WireFormat::SerializeUnknownFields( unknown_fields(), output); @@ -4346,19 +4393,19 @@ void InternalReadLocalResponse::SerializeWithCachedSizes( ::google::protobuf::uint8* InternalReadLocalResponse::SerializeWithCachedSizesToArray( ::google::protobuf::uint8* target) const { // required .xtreemfs.pbrpc.ObjectData data = 1; - if (_has_bit(0)) { + if (has_data()) { target = ::google::protobuf::internal::WireFormatLite:: WriteMessageNoVirtualToArray( 1, this->data(), target); } - + // repeated .xtreemfs.pbrpc.ObjectList object_set = 2; for (int i = 0; i < this->object_set_size(); i++) { target = ::google::protobuf::internal::WireFormatLite:: WriteMessageNoVirtualToArray( 2, this->object_set(i), target); } - + if (!unknown_fields().empty()) { target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray( unknown_fields(), target); @@ -4368,7 +4415,7 @@ void InternalReadLocalResponse::SerializeWithCachedSizes( int InternalReadLocalResponse::ByteSize() const { int total_size = 0; - + if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) { // required .xtreemfs.pbrpc.ObjectData data = 1; if (has_data()) { @@ -4376,7 +4423,7 @@ int InternalReadLocalResponse::ByteSize() const { ::google::protobuf::internal::WireFormatLite::MessageSizeNoVirtual( this->data()); } - + } // repeated .xtreemfs.pbrpc.ObjectList object_set = 2; total_size += 1 * this->object_set_size(); @@ -4385,7 +4432,7 @@ int InternalReadLocalResponse::ByteSize() const { ::google::protobuf::internal::WireFormatLite::MessageSizeNoVirtual( this->object_set(i)); } - + if (!unknown_fields().empty()) { total_size += ::google::protobuf::internal::WireFormat::ComputeUnknownFieldsSize( @@ -4413,7 +4460,7 @@ void InternalReadLocalResponse::MergeFrom(const InternalReadLocalResponse& from) GOOGLE_CHECK_NE(&from, this); object_set_.MergeFrom(from.object_set_); if (from._has_bits_[0 / 32] & (0xffu << (0 % 32))) { - if (from._has_bit(0)) { + if (from.has_data()) { mutable_data()->::xtreemfs::pbrpc::ObjectData::MergeFrom(from.data()); } } @@ -4434,7 +4481,7 @@ void InternalReadLocalResponse::CopyFrom(const InternalReadLocalResponse& from) bool InternalReadLocalResponse::IsInitialized() const { if ((_has_bits_[0] & 0x00000001) != 0x00000001) return false; - + if (has_data()) { if (!this->data().IsInitialized()) return false; } @@ -4465,7 +4512,6 @@ void InternalReadLocalResponse::Swap(InternalReadLocalResponse* other) { // =================================================================== -const ::std::string readRequest::_default_file_id_; #ifndef _MSC_VER const int readRequest::kFileCredentialsFieldNumber; const int readRequest::kFileIdFieldNumber; @@ -4493,7 +4539,7 @@ readRequest::readRequest(const readRequest& from) void readRequest::SharedCtor() { _cached_size_ = 0; file_credentials_ = NULL; - file_id_ = const_cast< ::std::string*>(&_default_file_id_); + file_id_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); object_number_ = GOOGLE_ULONGLONG(0); object_version_ = GOOGLE_ULONGLONG(0); offset_ = 0u; @@ -4506,7 +4552,7 @@ readRequest::~readRequest() { } void readRequest::SharedDtor() { - if (file_id_ != &_default_file_id_) { + if (file_id_ != &::google::protobuf::internal::kEmptyString) { delete file_id_; } if (this != default_instance_) { @@ -4525,7 +4571,8 @@ const ::google::protobuf::Descriptor* readRequest::descriptor() { } const readRequest& readRequest::default_instance() { - if (default_instance_ == NULL) protobuf_AddDesc_xtreemfs_2fOSD_2eproto(); return *default_instance_; + if (default_instance_ == NULL) protobuf_AddDesc_xtreemfs_2fOSD_2eproto(); + return *default_instance_; } readRequest* readRequest::default_instance_ = NULL; @@ -4536,11 +4583,11 @@ readRequest* readRequest::New() const { void readRequest::Clear() { if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) { - if (_has_bit(0)) { + if (has_file_credentials()) { if (file_credentials_ != NULL) file_credentials_->::xtreemfs::pbrpc::FileCredentials::Clear(); } - if (_has_bit(1)) { - if (file_id_ != &_default_file_id_) { + if (has_file_id()) { + if (file_id_ != &::google::protobuf::internal::kEmptyString) { file_id_->clear(); } } @@ -4571,7 +4618,7 @@ bool readRequest::MergePartialFromCodedStream( if (input->ExpectTag(18)) goto parse_file_id; break; } - + // required string file_id = 2; case 2: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -4588,7 +4635,7 @@ bool readRequest::MergePartialFromCodedStream( if (input->ExpectTag(25)) goto parse_object_number; break; } - + // required fixed64 object_number = 3; case 3: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -4597,14 +4644,14 @@ bool readRequest::MergePartialFromCodedStream( DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive< ::google::protobuf::uint64, ::google::protobuf::internal::WireFormatLite::TYPE_FIXED64>( input, &object_number_))); - _set_bit(2); + set_has_object_number(); } else { goto handle_uninterpreted; } if (input->ExpectTag(33)) goto parse_object_version; break; } - + // required fixed64 object_version = 4; case 4: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -4613,14 +4660,14 @@ bool readRequest::MergePartialFromCodedStream( DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive< ::google::protobuf::uint64, ::google::protobuf::internal::WireFormatLite::TYPE_FIXED64>( input, &object_version_))); - _set_bit(3); + set_has_object_version(); } else { goto handle_uninterpreted; } if (input->ExpectTag(45)) goto parse_offset; break; } - + // required fixed32 offset = 5; case 5: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -4629,14 +4676,14 @@ bool readRequest::MergePartialFromCodedStream( DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive< ::google::protobuf::uint32, ::google::protobuf::internal::WireFormatLite::TYPE_FIXED32>( input, &offset_))); - _set_bit(4); + set_has_offset(); } else { goto handle_uninterpreted; } if (input->ExpectTag(53)) goto parse_length; break; } - + // required fixed32 length = 6; case 6: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -4645,14 +4692,14 @@ bool readRequest::MergePartialFromCodedStream( DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive< ::google::protobuf::uint32, ::google::protobuf::internal::WireFormatLite::TYPE_FIXED32>( input, &length_))); - _set_bit(5); + set_has_length(); } else { goto handle_uninterpreted; } if (input->ExpectAtEnd()) return true; break; } - + default: { handle_uninterpreted: if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -4672,40 +4719,40 @@ bool readRequest::MergePartialFromCodedStream( void readRequest::SerializeWithCachedSizes( ::google::protobuf::io::CodedOutputStream* output) const { // required .xtreemfs.pbrpc.FileCredentials file_credentials = 1; - if (_has_bit(0)) { + if (has_file_credentials()) { ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray( 1, this->file_credentials(), output); } - + // required string file_id = 2; - if (_has_bit(1)) { + if (has_file_id()) { ::google::protobuf::internal::WireFormat::VerifyUTF8String( this->file_id().data(), this->file_id().length(), ::google::protobuf::internal::WireFormat::SERIALIZE); ::google::protobuf::internal::WireFormatLite::WriteString( 2, this->file_id(), output); } - + // required fixed64 object_number = 3; - if (_has_bit(2)) { + if (has_object_number()) { ::google::protobuf::internal::WireFormatLite::WriteFixed64(3, this->object_number(), output); } - + // required fixed64 object_version = 4; - if (_has_bit(3)) { + if (has_object_version()) { ::google::protobuf::internal::WireFormatLite::WriteFixed64(4, this->object_version(), output); } - + // required fixed32 offset = 5; - if (_has_bit(4)) { + if (has_offset()) { ::google::protobuf::internal::WireFormatLite::WriteFixed32(5, this->offset(), output); } - + // required fixed32 length = 6; - if (_has_bit(5)) { + if (has_length()) { ::google::protobuf::internal::WireFormatLite::WriteFixed32(6, this->length(), output); } - + if (!unknown_fields().empty()) { ::google::protobuf::internal::WireFormat::SerializeUnknownFields( unknown_fields(), output); @@ -4715,14 +4762,14 @@ void readRequest::SerializeWithCachedSizes( ::google::protobuf::uint8* readRequest::SerializeWithCachedSizesToArray( ::google::protobuf::uint8* target) const { // required .xtreemfs.pbrpc.FileCredentials file_credentials = 1; - if (_has_bit(0)) { + if (has_file_credentials()) { target = ::google::protobuf::internal::WireFormatLite:: WriteMessageNoVirtualToArray( 1, this->file_credentials(), target); } - + // required string file_id = 2; - if (_has_bit(1)) { + if (has_file_id()) { ::google::protobuf::internal::WireFormat::VerifyUTF8String( this->file_id().data(), this->file_id().length(), ::google::protobuf::internal::WireFormat::SERIALIZE); @@ -4730,27 +4777,27 @@ void readRequest::SerializeWithCachedSizes( ::google::protobuf::internal::WireFormatLite::WriteStringToArray( 2, this->file_id(), target); } - + // required fixed64 object_number = 3; - if (_has_bit(2)) { + if (has_object_number()) { target = ::google::protobuf::internal::WireFormatLite::WriteFixed64ToArray(3, this->object_number(), target); } - + // required fixed64 object_version = 4; - if (_has_bit(3)) { + if (has_object_version()) { target = ::google::protobuf::internal::WireFormatLite::WriteFixed64ToArray(4, this->object_version(), target); } - + // required fixed32 offset = 5; - if (_has_bit(4)) { + if (has_offset()) { target = ::google::protobuf::internal::WireFormatLite::WriteFixed32ToArray(5, this->offset(), target); } - + // required fixed32 length = 6; - if (_has_bit(5)) { + if (has_length()) { target = ::google::protobuf::internal::WireFormatLite::WriteFixed32ToArray(6, this->length(), target); } - + if (!unknown_fields().empty()) { target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray( unknown_fields(), target); @@ -4760,7 +4807,7 @@ void readRequest::SerializeWithCachedSizes( int readRequest::ByteSize() const { int total_size = 0; - + if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) { // required .xtreemfs.pbrpc.FileCredentials file_credentials = 1; if (has_file_credentials()) { @@ -4768,34 +4815,34 @@ int readRequest::ByteSize() const { ::google::protobuf::internal::WireFormatLite::MessageSizeNoVirtual( this->file_credentials()); } - + // required string file_id = 2; if (has_file_id()) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::StringSize( this->file_id()); } - + // required fixed64 object_number = 3; if (has_object_number()) { total_size += 1 + 8; } - + // required fixed64 object_version = 4; if (has_object_version()) { total_size += 1 + 8; } - + // required fixed32 offset = 5; if (has_offset()) { total_size += 1 + 4; } - + // required fixed32 length = 6; if (has_length()) { total_size += 1 + 4; } - + } if (!unknown_fields().empty()) { total_size += @@ -4823,22 +4870,22 @@ void readRequest::MergeFrom(const ::google::protobuf::Message& from) { void readRequest::MergeFrom(const readRequest& from) { GOOGLE_CHECK_NE(&from, this); if (from._has_bits_[0 / 32] & (0xffu << (0 % 32))) { - if (from._has_bit(0)) { + if (from.has_file_credentials()) { mutable_file_credentials()->::xtreemfs::pbrpc::FileCredentials::MergeFrom(from.file_credentials()); } - if (from._has_bit(1)) { + if (from.has_file_id()) { set_file_id(from.file_id()); } - if (from._has_bit(2)) { + if (from.has_object_number()) { set_object_number(from.object_number()); } - if (from._has_bit(3)) { + if (from.has_object_version()) { set_object_version(from.object_version()); } - if (from._has_bit(4)) { + if (from.has_offset()) { set_offset(from.offset()); } - if (from._has_bit(5)) { + if (from.has_length()) { set_length(from.length()); } } @@ -4859,7 +4906,7 @@ void readRequest::CopyFrom(const readRequest& from) { bool readRequest::IsInitialized() const { if ((_has_bits_[0] & 0x0000003f) != 0x0000003f) return false; - + if (has_file_credentials()) { if (!this->file_credentials().IsInitialized()) return false; } @@ -4891,7 +4938,6 @@ void readRequest::Swap(readRequest* other) { // =================================================================== -const ::std::string truncateRequest::_default_file_id_; #ifndef _MSC_VER const int truncateRequest::kFileCredentialsFieldNumber; const int truncateRequest::kFileIdFieldNumber; @@ -4916,7 +4962,7 @@ truncateRequest::truncateRequest(const truncateRequest& from) void truncateRequest::SharedCtor() { _cached_size_ = 0; file_credentials_ = NULL; - file_id_ = const_cast< ::std::string*>(&_default_file_id_); + file_id_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); new_file_size_ = GOOGLE_ULONGLONG(0); ::memset(_has_bits_, 0, sizeof(_has_bits_)); } @@ -4926,7 +4972,7 @@ truncateRequest::~truncateRequest() { } void truncateRequest::SharedDtor() { - if (file_id_ != &_default_file_id_) { + if (file_id_ != &::google::protobuf::internal::kEmptyString) { delete file_id_; } if (this != default_instance_) { @@ -4945,7 +4991,8 @@ const ::google::protobuf::Descriptor* truncateRequest::descriptor() { } const truncateRequest& truncateRequest::default_instance() { - if (default_instance_ == NULL) protobuf_AddDesc_xtreemfs_2fOSD_2eproto(); return *default_instance_; + if (default_instance_ == NULL) protobuf_AddDesc_xtreemfs_2fOSD_2eproto(); + return *default_instance_; } truncateRequest* truncateRequest::default_instance_ = NULL; @@ -4956,11 +5003,11 @@ truncateRequest* truncateRequest::New() const { void truncateRequest::Clear() { if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) { - if (_has_bit(0)) { + if (has_file_credentials()) { if (file_credentials_ != NULL) file_credentials_->::xtreemfs::pbrpc::FileCredentials::Clear(); } - if (_has_bit(1)) { - if (file_id_ != &_default_file_id_) { + if (has_file_id()) { + if (file_id_ != &::google::protobuf::internal::kEmptyString) { file_id_->clear(); } } @@ -4988,7 +5035,7 @@ bool truncateRequest::MergePartialFromCodedStream( if (input->ExpectTag(18)) goto parse_file_id; break; } - + // required string file_id = 2; case 2: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -5005,7 +5052,7 @@ bool truncateRequest::MergePartialFromCodedStream( if (input->ExpectTag(25)) goto parse_new_file_size; break; } - + // required fixed64 new_file_size = 3; case 3: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -5014,14 +5061,14 @@ bool truncateRequest::MergePartialFromCodedStream( DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive< ::google::protobuf::uint64, ::google::protobuf::internal::WireFormatLite::TYPE_FIXED64>( input, &new_file_size_))); - _set_bit(2); + set_has_new_file_size(); } else { goto handle_uninterpreted; } if (input->ExpectAtEnd()) return true; break; } - + default: { handle_uninterpreted: if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -5041,25 +5088,25 @@ bool truncateRequest::MergePartialFromCodedStream( void truncateRequest::SerializeWithCachedSizes( ::google::protobuf::io::CodedOutputStream* output) const { // required .xtreemfs.pbrpc.FileCredentials file_credentials = 1; - if (_has_bit(0)) { + if (has_file_credentials()) { ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray( 1, this->file_credentials(), output); } - + // required string file_id = 2; - if (_has_bit(1)) { + if (has_file_id()) { ::google::protobuf::internal::WireFormat::VerifyUTF8String( this->file_id().data(), this->file_id().length(), ::google::protobuf::internal::WireFormat::SERIALIZE); ::google::protobuf::internal::WireFormatLite::WriteString( 2, this->file_id(), output); } - + // required fixed64 new_file_size = 3; - if (_has_bit(2)) { + if (has_new_file_size()) { ::google::protobuf::internal::WireFormatLite::WriteFixed64(3, this->new_file_size(), output); } - + if (!unknown_fields().empty()) { ::google::protobuf::internal::WireFormat::SerializeUnknownFields( unknown_fields(), output); @@ -5069,14 +5116,14 @@ void truncateRequest::SerializeWithCachedSizes( ::google::protobuf::uint8* truncateRequest::SerializeWithCachedSizesToArray( ::google::protobuf::uint8* target) const { // required .xtreemfs.pbrpc.FileCredentials file_credentials = 1; - if (_has_bit(0)) { + if (has_file_credentials()) { target = ::google::protobuf::internal::WireFormatLite:: WriteMessageNoVirtualToArray( 1, this->file_credentials(), target); } - + // required string file_id = 2; - if (_has_bit(1)) { + if (has_file_id()) { ::google::protobuf::internal::WireFormat::VerifyUTF8String( this->file_id().data(), this->file_id().length(), ::google::protobuf::internal::WireFormat::SERIALIZE); @@ -5084,12 +5131,12 @@ void truncateRequest::SerializeWithCachedSizes( ::google::protobuf::internal::WireFormatLite::WriteStringToArray( 2, this->file_id(), target); } - + // required fixed64 new_file_size = 3; - if (_has_bit(2)) { + if (has_new_file_size()) { target = ::google::protobuf::internal::WireFormatLite::WriteFixed64ToArray(3, this->new_file_size(), target); } - + if (!unknown_fields().empty()) { target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray( unknown_fields(), target); @@ -5099,7 +5146,7 @@ void truncateRequest::SerializeWithCachedSizes( int truncateRequest::ByteSize() const { int total_size = 0; - + if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) { // required .xtreemfs.pbrpc.FileCredentials file_credentials = 1; if (has_file_credentials()) { @@ -5107,19 +5154,19 @@ int truncateRequest::ByteSize() const { ::google::protobuf::internal::WireFormatLite::MessageSizeNoVirtual( this->file_credentials()); } - + // required string file_id = 2; if (has_file_id()) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::StringSize( this->file_id()); } - + // required fixed64 new_file_size = 3; if (has_new_file_size()) { total_size += 1 + 8; } - + } if (!unknown_fields().empty()) { total_size += @@ -5147,13 +5194,13 @@ void truncateRequest::MergeFrom(const ::google::protobuf::Message& from) { void truncateRequest::MergeFrom(const truncateRequest& from) { GOOGLE_CHECK_NE(&from, this); if (from._has_bits_[0 / 32] & (0xffu << (0 % 32))) { - if (from._has_bit(0)) { + if (from.has_file_credentials()) { mutable_file_credentials()->::xtreemfs::pbrpc::FileCredentials::MergeFrom(from.file_credentials()); } - if (from._has_bit(1)) { + if (from.has_file_id()) { set_file_id(from.file_id()); } - if (from._has_bit(2)) { + if (from.has_new_file_size()) { set_new_file_size(from.new_file_size()); } } @@ -5174,7 +5221,7 @@ void truncateRequest::CopyFrom(const truncateRequest& from) { bool truncateRequest::IsInitialized() const { if ((_has_bits_[0] & 0x00000007) != 0x00000007) return false; - + if (has_file_credentials()) { if (!this->file_credentials().IsInitialized()) return false; } @@ -5203,7 +5250,6 @@ void truncateRequest::Swap(truncateRequest* other) { // =================================================================== -const ::std::string unlink_osd_Request::_default_file_id_; #ifndef _MSC_VER const int unlink_osd_Request::kFileCredentialsFieldNumber; const int unlink_osd_Request::kFileIdFieldNumber; @@ -5227,7 +5273,7 @@ unlink_osd_Request::unlink_osd_Request(const unlink_osd_Request& from) void unlink_osd_Request::SharedCtor() { _cached_size_ = 0; file_credentials_ = NULL; - file_id_ = const_cast< ::std::string*>(&_default_file_id_); + file_id_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); ::memset(_has_bits_, 0, sizeof(_has_bits_)); } @@ -5236,7 +5282,7 @@ unlink_osd_Request::~unlink_osd_Request() { } void unlink_osd_Request::SharedDtor() { - if (file_id_ != &_default_file_id_) { + if (file_id_ != &::google::protobuf::internal::kEmptyString) { delete file_id_; } if (this != default_instance_) { @@ -5255,7 +5301,8 @@ const ::google::protobuf::Descriptor* unlink_osd_Request::descriptor() { } const unlink_osd_Request& unlink_osd_Request::default_instance() { - if (default_instance_ == NULL) protobuf_AddDesc_xtreemfs_2fOSD_2eproto(); return *default_instance_; + if (default_instance_ == NULL) protobuf_AddDesc_xtreemfs_2fOSD_2eproto(); + return *default_instance_; } unlink_osd_Request* unlink_osd_Request::default_instance_ = NULL; @@ -5266,11 +5313,11 @@ unlink_osd_Request* unlink_osd_Request::New() const { void unlink_osd_Request::Clear() { if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) { - if (_has_bit(0)) { + if (has_file_credentials()) { if (file_credentials_ != NULL) file_credentials_->::xtreemfs::pbrpc::FileCredentials::Clear(); } - if (_has_bit(1)) { - if (file_id_ != &_default_file_id_) { + if (has_file_id()) { + if (file_id_ != &::google::protobuf::internal::kEmptyString) { file_id_->clear(); } } @@ -5297,7 +5344,7 @@ bool unlink_osd_Request::MergePartialFromCodedStream( if (input->ExpectTag(18)) goto parse_file_id; break; } - + // required string file_id = 2; case 2: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -5314,7 +5361,7 @@ bool unlink_osd_Request::MergePartialFromCodedStream( if (input->ExpectAtEnd()) return true; break; } - + default: { handle_uninterpreted: if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -5334,20 +5381,20 @@ bool unlink_osd_Request::MergePartialFromCodedStream( void unlink_osd_Request::SerializeWithCachedSizes( ::google::protobuf::io::CodedOutputStream* output) const { // required .xtreemfs.pbrpc.FileCredentials file_credentials = 1; - if (_has_bit(0)) { + if (has_file_credentials()) { ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray( 1, this->file_credentials(), output); } - + // required string file_id = 2; - if (_has_bit(1)) { + if (has_file_id()) { ::google::protobuf::internal::WireFormat::VerifyUTF8String( this->file_id().data(), this->file_id().length(), ::google::protobuf::internal::WireFormat::SERIALIZE); ::google::protobuf::internal::WireFormatLite::WriteString( 2, this->file_id(), output); } - + if (!unknown_fields().empty()) { ::google::protobuf::internal::WireFormat::SerializeUnknownFields( unknown_fields(), output); @@ -5357,14 +5404,14 @@ void unlink_osd_Request::SerializeWithCachedSizes( ::google::protobuf::uint8* unlink_osd_Request::SerializeWithCachedSizesToArray( ::google::protobuf::uint8* target) const { // required .xtreemfs.pbrpc.FileCredentials file_credentials = 1; - if (_has_bit(0)) { + if (has_file_credentials()) { target = ::google::protobuf::internal::WireFormatLite:: WriteMessageNoVirtualToArray( 1, this->file_credentials(), target); } - + // required string file_id = 2; - if (_has_bit(1)) { + if (has_file_id()) { ::google::protobuf::internal::WireFormat::VerifyUTF8String( this->file_id().data(), this->file_id().length(), ::google::protobuf::internal::WireFormat::SERIALIZE); @@ -5372,7 +5419,7 @@ void unlink_osd_Request::SerializeWithCachedSizes( ::google::protobuf::internal::WireFormatLite::WriteStringToArray( 2, this->file_id(), target); } - + if (!unknown_fields().empty()) { target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray( unknown_fields(), target); @@ -5382,7 +5429,7 @@ void unlink_osd_Request::SerializeWithCachedSizes( int unlink_osd_Request::ByteSize() const { int total_size = 0; - + if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) { // required .xtreemfs.pbrpc.FileCredentials file_credentials = 1; if (has_file_credentials()) { @@ -5390,14 +5437,14 @@ int unlink_osd_Request::ByteSize() const { ::google::protobuf::internal::WireFormatLite::MessageSizeNoVirtual( this->file_credentials()); } - + // required string file_id = 2; if (has_file_id()) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::StringSize( this->file_id()); } - + } if (!unknown_fields().empty()) { total_size += @@ -5425,10 +5472,10 @@ void unlink_osd_Request::MergeFrom(const ::google::protobuf::Message& from) { void unlink_osd_Request::MergeFrom(const unlink_osd_Request& from) { GOOGLE_CHECK_NE(&from, this); if (from._has_bits_[0 / 32] & (0xffu << (0 % 32))) { - if (from._has_bit(0)) { + if (from.has_file_credentials()) { mutable_file_credentials()->::xtreemfs::pbrpc::FileCredentials::MergeFrom(from.file_credentials()); } - if (from._has_bit(1)) { + if (from.has_file_id()) { set_file_id(from.file_id()); } } @@ -5449,7 +5496,7 @@ void unlink_osd_Request::CopyFrom(const unlink_osd_Request& from) { bool unlink_osd_Request::IsInitialized() const { if ((_has_bits_[0] & 0x00000003) != 0x00000003) return false; - + if (has_file_credentials()) { if (!this->file_credentials().IsInitialized()) return false; } @@ -5477,7 +5524,6 @@ void unlink_osd_Request::Swap(unlink_osd_Request* other) { // =================================================================== -const ::std::string writeRequest::_default_file_id_; #ifndef _MSC_VER const int writeRequest::kFileCredentialsFieldNumber; const int writeRequest::kFileIdFieldNumber; @@ -5507,7 +5553,7 @@ writeRequest::writeRequest(const writeRequest& from) void writeRequest::SharedCtor() { _cached_size_ = 0; file_credentials_ = NULL; - file_id_ = const_cast< ::std::string*>(&_default_file_id_); + file_id_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); object_number_ = GOOGLE_ULONGLONG(0); object_version_ = GOOGLE_ULONGLONG(0); offset_ = 0u; @@ -5521,7 +5567,7 @@ writeRequest::~writeRequest() { } void writeRequest::SharedDtor() { - if (file_id_ != &_default_file_id_) { + if (file_id_ != &::google::protobuf::internal::kEmptyString) { delete file_id_; } if (this != default_instance_) { @@ -5541,7 +5587,8 @@ const ::google::protobuf::Descriptor* writeRequest::descriptor() { } const writeRequest& writeRequest::default_instance() { - if (default_instance_ == NULL) protobuf_AddDesc_xtreemfs_2fOSD_2eproto(); return *default_instance_; + if (default_instance_ == NULL) protobuf_AddDesc_xtreemfs_2fOSD_2eproto(); + return *default_instance_; } writeRequest* writeRequest::default_instance_ = NULL; @@ -5552,11 +5599,11 @@ writeRequest* writeRequest::New() const { void writeRequest::Clear() { if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) { - if (_has_bit(0)) { + if (has_file_credentials()) { if (file_credentials_ != NULL) file_credentials_->::xtreemfs::pbrpc::FileCredentials::Clear(); } - if (_has_bit(1)) { - if (file_id_ != &_default_file_id_) { + if (has_file_id()) { + if (file_id_ != &::google::protobuf::internal::kEmptyString) { file_id_->clear(); } } @@ -5564,7 +5611,7 @@ void writeRequest::Clear() { object_version_ = GOOGLE_ULONGLONG(0); offset_ = 0u; lease_timeout_ = GOOGLE_ULONGLONG(0); - if (_has_bit(6)) { + if (has_object_data()) { if (object_data_ != NULL) object_data_->::xtreemfs::pbrpc::ObjectData::Clear(); } } @@ -5590,7 +5637,7 @@ bool writeRequest::MergePartialFromCodedStream( if (input->ExpectTag(18)) goto parse_file_id; break; } - + // required string file_id = 2; case 2: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -5607,7 +5654,7 @@ bool writeRequest::MergePartialFromCodedStream( if (input->ExpectTag(25)) goto parse_object_number; break; } - + // required fixed64 object_number = 3; case 3: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -5616,14 +5663,14 @@ bool writeRequest::MergePartialFromCodedStream( DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive< ::google::protobuf::uint64, ::google::protobuf::internal::WireFormatLite::TYPE_FIXED64>( input, &object_number_))); - _set_bit(2); + set_has_object_number(); } else { goto handle_uninterpreted; } if (input->ExpectTag(33)) goto parse_object_version; break; } - + // required fixed64 object_version = 4; case 4: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -5632,14 +5679,14 @@ bool writeRequest::MergePartialFromCodedStream( DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive< ::google::protobuf::uint64, ::google::protobuf::internal::WireFormatLite::TYPE_FIXED64>( input, &object_version_))); - _set_bit(3); + set_has_object_version(); } else { goto handle_uninterpreted; } if (input->ExpectTag(45)) goto parse_offset; break; } - + // required fixed32 offset = 5; case 5: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -5648,14 +5695,14 @@ bool writeRequest::MergePartialFromCodedStream( DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive< ::google::protobuf::uint32, ::google::protobuf::internal::WireFormatLite::TYPE_FIXED32>( input, &offset_))); - _set_bit(4); + set_has_offset(); } else { goto handle_uninterpreted; } if (input->ExpectTag(49)) goto parse_lease_timeout; break; } - + // required fixed64 lease_timeout = 6; case 6: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -5664,14 +5711,14 @@ bool writeRequest::MergePartialFromCodedStream( DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive< ::google::protobuf::uint64, ::google::protobuf::internal::WireFormatLite::TYPE_FIXED64>( input, &lease_timeout_))); - _set_bit(5); + set_has_lease_timeout(); } else { goto handle_uninterpreted; } if (input->ExpectTag(58)) goto parse_object_data; break; } - + // required .xtreemfs.pbrpc.ObjectData object_data = 7; case 7: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -5685,7 +5732,7 @@ bool writeRequest::MergePartialFromCodedStream( if (input->ExpectAtEnd()) return true; break; } - + default: { handle_uninterpreted: if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -5705,46 +5752,46 @@ bool writeRequest::MergePartialFromCodedStream( void writeRequest::SerializeWithCachedSizes( ::google::protobuf::io::CodedOutputStream* output) const { // required .xtreemfs.pbrpc.FileCredentials file_credentials = 1; - if (_has_bit(0)) { + if (has_file_credentials()) { ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray( 1, this->file_credentials(), output); } - + // required string file_id = 2; - if (_has_bit(1)) { + if (has_file_id()) { ::google::protobuf::internal::WireFormat::VerifyUTF8String( this->file_id().data(), this->file_id().length(), ::google::protobuf::internal::WireFormat::SERIALIZE); ::google::protobuf::internal::WireFormatLite::WriteString( 2, this->file_id(), output); } - + // required fixed64 object_number = 3; - if (_has_bit(2)) { + if (has_object_number()) { ::google::protobuf::internal::WireFormatLite::WriteFixed64(3, this->object_number(), output); } - + // required fixed64 object_version = 4; - if (_has_bit(3)) { + if (has_object_version()) { ::google::protobuf::internal::WireFormatLite::WriteFixed64(4, this->object_version(), output); } - + // required fixed32 offset = 5; - if (_has_bit(4)) { + if (has_offset()) { ::google::protobuf::internal::WireFormatLite::WriteFixed32(5, this->offset(), output); } - + // required fixed64 lease_timeout = 6; - if (_has_bit(5)) { + if (has_lease_timeout()) { ::google::protobuf::internal::WireFormatLite::WriteFixed64(6, this->lease_timeout(), output); } - + // required .xtreemfs.pbrpc.ObjectData object_data = 7; - if (_has_bit(6)) { + if (has_object_data()) { ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray( 7, this->object_data(), output); } - + if (!unknown_fields().empty()) { ::google::protobuf::internal::WireFormat::SerializeUnknownFields( unknown_fields(), output); @@ -5754,14 +5801,14 @@ void writeRequest::SerializeWithCachedSizes( ::google::protobuf::uint8* writeRequest::SerializeWithCachedSizesToArray( ::google::protobuf::uint8* target) const { // required .xtreemfs.pbrpc.FileCredentials file_credentials = 1; - if (_has_bit(0)) { + if (has_file_credentials()) { target = ::google::protobuf::internal::WireFormatLite:: WriteMessageNoVirtualToArray( 1, this->file_credentials(), target); } - + // required string file_id = 2; - if (_has_bit(1)) { + if (has_file_id()) { ::google::protobuf::internal::WireFormat::VerifyUTF8String( this->file_id().data(), this->file_id().length(), ::google::protobuf::internal::WireFormat::SERIALIZE); @@ -5769,34 +5816,34 @@ void writeRequest::SerializeWithCachedSizes( ::google::protobuf::internal::WireFormatLite::WriteStringToArray( 2, this->file_id(), target); } - + // required fixed64 object_number = 3; - if (_has_bit(2)) { + if (has_object_number()) { target = ::google::protobuf::internal::WireFormatLite::WriteFixed64ToArray(3, this->object_number(), target); } - + // required fixed64 object_version = 4; - if (_has_bit(3)) { + if (has_object_version()) { target = ::google::protobuf::internal::WireFormatLite::WriteFixed64ToArray(4, this->object_version(), target); } - + // required fixed32 offset = 5; - if (_has_bit(4)) { + if (has_offset()) { target = ::google::protobuf::internal::WireFormatLite::WriteFixed32ToArray(5, this->offset(), target); } - + // required fixed64 lease_timeout = 6; - if (_has_bit(5)) { + if (has_lease_timeout()) { target = ::google::protobuf::internal::WireFormatLite::WriteFixed64ToArray(6, this->lease_timeout(), target); } - + // required .xtreemfs.pbrpc.ObjectData object_data = 7; - if (_has_bit(6)) { + if (has_object_data()) { target = ::google::protobuf::internal::WireFormatLite:: WriteMessageNoVirtualToArray( 7, this->object_data(), target); } - + if (!unknown_fields().empty()) { target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray( unknown_fields(), target); @@ -5806,7 +5853,7 @@ void writeRequest::SerializeWithCachedSizes( int writeRequest::ByteSize() const { int total_size = 0; - + if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) { // required .xtreemfs.pbrpc.FileCredentials file_credentials = 1; if (has_file_credentials()) { @@ -5814,41 +5861,41 @@ int writeRequest::ByteSize() const { ::google::protobuf::internal::WireFormatLite::MessageSizeNoVirtual( this->file_credentials()); } - + // required string file_id = 2; if (has_file_id()) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::StringSize( this->file_id()); } - + // required fixed64 object_number = 3; if (has_object_number()) { total_size += 1 + 8; } - + // required fixed64 object_version = 4; if (has_object_version()) { total_size += 1 + 8; } - + // required fixed32 offset = 5; if (has_offset()) { total_size += 1 + 4; } - + // required fixed64 lease_timeout = 6; if (has_lease_timeout()) { total_size += 1 + 8; } - + // required .xtreemfs.pbrpc.ObjectData object_data = 7; if (has_object_data()) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::MessageSizeNoVirtual( this->object_data()); } - + } if (!unknown_fields().empty()) { total_size += @@ -5876,25 +5923,25 @@ void writeRequest::MergeFrom(const ::google::protobuf::Message& from) { void writeRequest::MergeFrom(const writeRequest& from) { GOOGLE_CHECK_NE(&from, this); if (from._has_bits_[0 / 32] & (0xffu << (0 % 32))) { - if (from._has_bit(0)) { + if (from.has_file_credentials()) { mutable_file_credentials()->::xtreemfs::pbrpc::FileCredentials::MergeFrom(from.file_credentials()); } - if (from._has_bit(1)) { + if (from.has_file_id()) { set_file_id(from.file_id()); } - if (from._has_bit(2)) { + if (from.has_object_number()) { set_object_number(from.object_number()); } - if (from._has_bit(3)) { + if (from.has_object_version()) { set_object_version(from.object_version()); } - if (from._has_bit(4)) { + if (from.has_offset()) { set_offset(from.offset()); } - if (from._has_bit(5)) { + if (from.has_lease_timeout()) { set_lease_timeout(from.lease_timeout()); } - if (from._has_bit(6)) { + if (from.has_object_data()) { mutable_object_data()->::xtreemfs::pbrpc::ObjectData::MergeFrom(from.object_data()); } } @@ -5915,7 +5962,7 @@ void writeRequest::CopyFrom(const writeRequest& from) { bool writeRequest::IsInitialized() const { if ((_has_bits_[0] & 0x0000007f) != 0x0000007f) return false; - + if (has_file_credentials()) { if (!this->file_credentials().IsInitialized()) return false; } @@ -5951,7 +5998,6 @@ void writeRequest::Swap(writeRequest* other) { // =================================================================== -const ::std::string xtreemfs_broadcast_gmaxRequest::_default_file_id_; #ifndef _MSC_VER const int xtreemfs_broadcast_gmaxRequest::kFileIdFieldNumber; const int xtreemfs_broadcast_gmaxRequest::kTruncateEpochFieldNumber; @@ -5975,7 +6021,7 @@ xtreemfs_broadcast_gmaxRequest::xtreemfs_broadcast_gmaxRequest(const xtreemfs_br void xtreemfs_broadcast_gmaxRequest::SharedCtor() { _cached_size_ = 0; - file_id_ = const_cast< ::std::string*>(&_default_file_id_); + file_id_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); truncate_epoch_ = GOOGLE_ULONGLONG(0); last_object_ = GOOGLE_ULONGLONG(0); file_size_ = GOOGLE_ULONGLONG(0); @@ -5987,7 +6033,7 @@ xtreemfs_broadcast_gmaxRequest::~xtreemfs_broadcast_gmaxRequest() { } void xtreemfs_broadcast_gmaxRequest::SharedDtor() { - if (file_id_ != &_default_file_id_) { + if (file_id_ != &::google::protobuf::internal::kEmptyString) { delete file_id_; } if (this != default_instance_) { @@ -6005,7 +6051,8 @@ const ::google::protobuf::Descriptor* xtreemfs_broadcast_gmaxRequest::descriptor } const xtreemfs_broadcast_gmaxRequest& xtreemfs_broadcast_gmaxRequest::default_instance() { - if (default_instance_ == NULL) protobuf_AddDesc_xtreemfs_2fOSD_2eproto(); return *default_instance_; + if (default_instance_ == NULL) protobuf_AddDesc_xtreemfs_2fOSD_2eproto(); + return *default_instance_; } xtreemfs_broadcast_gmaxRequest* xtreemfs_broadcast_gmaxRequest::default_instance_ = NULL; @@ -6016,8 +6063,8 @@ xtreemfs_broadcast_gmaxRequest* xtreemfs_broadcast_gmaxRequest::New() const { void xtreemfs_broadcast_gmaxRequest::Clear() { if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) { - if (_has_bit(0)) { - if (file_id_ != &_default_file_id_) { + if (has_file_id()) { + if (file_id_ != &::google::protobuf::internal::kEmptyString) { file_id_->clear(); } } @@ -6050,7 +6097,7 @@ bool xtreemfs_broadcast_gmaxRequest::MergePartialFromCodedStream( if (input->ExpectTag(17)) goto parse_truncate_epoch; break; } - + // required fixed64 truncate_epoch = 2; case 2: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -6059,14 +6106,14 @@ bool xtreemfs_broadcast_gmaxRequest::MergePartialFromCodedStream( DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive< ::google::protobuf::uint64, ::google::protobuf::internal::WireFormatLite::TYPE_FIXED64>( input, &truncate_epoch_))); - _set_bit(1); + set_has_truncate_epoch(); } else { goto handle_uninterpreted; } if (input->ExpectTag(25)) goto parse_last_object; break; } - + // required fixed64 last_object = 3; case 3: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -6075,14 +6122,14 @@ bool xtreemfs_broadcast_gmaxRequest::MergePartialFromCodedStream( DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive< ::google::protobuf::uint64, ::google::protobuf::internal::WireFormatLite::TYPE_FIXED64>( input, &last_object_))); - _set_bit(2); + set_has_last_object(); } else { goto handle_uninterpreted; } if (input->ExpectTag(33)) goto parse_file_size; break; } - + // required fixed64 file_size = 4; case 4: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -6091,14 +6138,14 @@ bool xtreemfs_broadcast_gmaxRequest::MergePartialFromCodedStream( DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive< ::google::protobuf::uint64, ::google::protobuf::internal::WireFormatLite::TYPE_FIXED64>( input, &file_size_))); - _set_bit(3); + set_has_file_size(); } else { goto handle_uninterpreted; } if (input->ExpectAtEnd()) return true; break; } - + default: { handle_uninterpreted: if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -6118,29 +6165,29 @@ bool xtreemfs_broadcast_gmaxRequest::MergePartialFromCodedStream( void xtreemfs_broadcast_gmaxRequest::SerializeWithCachedSizes( ::google::protobuf::io::CodedOutputStream* output) const { // required string file_id = 1; - if (_has_bit(0)) { + if (has_file_id()) { ::google::protobuf::internal::WireFormat::VerifyUTF8String( this->file_id().data(), this->file_id().length(), ::google::protobuf::internal::WireFormat::SERIALIZE); ::google::protobuf::internal::WireFormatLite::WriteString( 1, this->file_id(), output); } - + // required fixed64 truncate_epoch = 2; - if (_has_bit(1)) { + if (has_truncate_epoch()) { ::google::protobuf::internal::WireFormatLite::WriteFixed64(2, this->truncate_epoch(), output); } - + // required fixed64 last_object = 3; - if (_has_bit(2)) { + if (has_last_object()) { ::google::protobuf::internal::WireFormatLite::WriteFixed64(3, this->last_object(), output); } - + // required fixed64 file_size = 4; - if (_has_bit(3)) { + if (has_file_size()) { ::google::protobuf::internal::WireFormatLite::WriteFixed64(4, this->file_size(), output); } - + if (!unknown_fields().empty()) { ::google::protobuf::internal::WireFormat::SerializeUnknownFields( unknown_fields(), output); @@ -6150,7 +6197,7 @@ void xtreemfs_broadcast_gmaxRequest::SerializeWithCachedSizes( ::google::protobuf::uint8* xtreemfs_broadcast_gmaxRequest::SerializeWithCachedSizesToArray( ::google::protobuf::uint8* target) const { // required string file_id = 1; - if (_has_bit(0)) { + if (has_file_id()) { ::google::protobuf::internal::WireFormat::VerifyUTF8String( this->file_id().data(), this->file_id().length(), ::google::protobuf::internal::WireFormat::SERIALIZE); @@ -6158,22 +6205,22 @@ void xtreemfs_broadcast_gmaxRequest::SerializeWithCachedSizes( ::google::protobuf::internal::WireFormatLite::WriteStringToArray( 1, this->file_id(), target); } - + // required fixed64 truncate_epoch = 2; - if (_has_bit(1)) { + if (has_truncate_epoch()) { target = ::google::protobuf::internal::WireFormatLite::WriteFixed64ToArray(2, this->truncate_epoch(), target); } - + // required fixed64 last_object = 3; - if (_has_bit(2)) { + if (has_last_object()) { target = ::google::protobuf::internal::WireFormatLite::WriteFixed64ToArray(3, this->last_object(), target); } - + // required fixed64 file_size = 4; - if (_has_bit(3)) { + if (has_file_size()) { target = ::google::protobuf::internal::WireFormatLite::WriteFixed64ToArray(4, this->file_size(), target); } - + if (!unknown_fields().empty()) { target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray( unknown_fields(), target); @@ -6183,7 +6230,7 @@ void xtreemfs_broadcast_gmaxRequest::SerializeWithCachedSizes( int xtreemfs_broadcast_gmaxRequest::ByteSize() const { int total_size = 0; - + if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) { // required string file_id = 1; if (has_file_id()) { @@ -6191,22 +6238,22 @@ int xtreemfs_broadcast_gmaxRequest::ByteSize() const { ::google::protobuf::internal::WireFormatLite::StringSize( this->file_id()); } - + // required fixed64 truncate_epoch = 2; if (has_truncate_epoch()) { total_size += 1 + 8; } - + // required fixed64 last_object = 3; if (has_last_object()) { total_size += 1 + 8; } - + // required fixed64 file_size = 4; if (has_file_size()) { total_size += 1 + 8; } - + } if (!unknown_fields().empty()) { total_size += @@ -6234,16 +6281,16 @@ void xtreemfs_broadcast_gmaxRequest::MergeFrom(const ::google::protobuf::Message void xtreemfs_broadcast_gmaxRequest::MergeFrom(const xtreemfs_broadcast_gmaxRequest& from) { GOOGLE_CHECK_NE(&from, this); if (from._has_bits_[0 / 32] & (0xffu << (0 % 32))) { - if (from._has_bit(0)) { + if (from.has_file_id()) { set_file_id(from.file_id()); } - if (from._has_bit(1)) { + if (from.has_truncate_epoch()) { set_truncate_epoch(from.truncate_epoch()); } - if (from._has_bit(2)) { + if (from.has_last_object()) { set_last_object(from.last_object()); } - if (from._has_bit(3)) { + if (from.has_file_size()) { set_file_size(from.file_size()); } } @@ -6264,7 +6311,7 @@ void xtreemfs_broadcast_gmaxRequest::CopyFrom(const xtreemfs_broadcast_gmaxReque bool xtreemfs_broadcast_gmaxRequest::IsInitialized() const { if ((_has_bits_[0] & 0x0000000f) != 0x0000000f) return false; - + return true; } @@ -6291,7 +6338,6 @@ void xtreemfs_broadcast_gmaxRequest::Swap(xtreemfs_broadcast_gmaxRequest* other) // =================================================================== -const ::std::string xtreemfs_check_objectRequest::_default_file_id_; #ifndef _MSC_VER const int xtreemfs_check_objectRequest::kFileCredentialsFieldNumber; const int xtreemfs_check_objectRequest::kFileIdFieldNumber; @@ -6317,7 +6363,7 @@ xtreemfs_check_objectRequest::xtreemfs_check_objectRequest(const xtreemfs_check_ void xtreemfs_check_objectRequest::SharedCtor() { _cached_size_ = 0; file_credentials_ = NULL; - file_id_ = const_cast< ::std::string*>(&_default_file_id_); + file_id_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); object_number_ = GOOGLE_ULONGLONG(0); object_version_ = GOOGLE_ULONGLONG(0); ::memset(_has_bits_, 0, sizeof(_has_bits_)); @@ -6328,7 +6374,7 @@ xtreemfs_check_objectRequest::~xtreemfs_check_objectRequest() { } void xtreemfs_check_objectRequest::SharedDtor() { - if (file_id_ != &_default_file_id_) { + if (file_id_ != &::google::protobuf::internal::kEmptyString) { delete file_id_; } if (this != default_instance_) { @@ -6347,7 +6393,8 @@ const ::google::protobuf::Descriptor* xtreemfs_check_objectRequest::descriptor() } const xtreemfs_check_objectRequest& xtreemfs_check_objectRequest::default_instance() { - if (default_instance_ == NULL) protobuf_AddDesc_xtreemfs_2fOSD_2eproto(); return *default_instance_; + if (default_instance_ == NULL) protobuf_AddDesc_xtreemfs_2fOSD_2eproto(); + return *default_instance_; } xtreemfs_check_objectRequest* xtreemfs_check_objectRequest::default_instance_ = NULL; @@ -6358,11 +6405,11 @@ xtreemfs_check_objectRequest* xtreemfs_check_objectRequest::New() const { void xtreemfs_check_objectRequest::Clear() { if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) { - if (_has_bit(0)) { + if (has_file_credentials()) { if (file_credentials_ != NULL) file_credentials_->::xtreemfs::pbrpc::FileCredentials::Clear(); } - if (_has_bit(1)) { - if (file_id_ != &_default_file_id_) { + if (has_file_id()) { + if (file_id_ != &::google::protobuf::internal::kEmptyString) { file_id_->clear(); } } @@ -6391,7 +6438,7 @@ bool xtreemfs_check_objectRequest::MergePartialFromCodedStream( if (input->ExpectTag(18)) goto parse_file_id; break; } - + // required string file_id = 2; case 2: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -6408,7 +6455,7 @@ bool xtreemfs_check_objectRequest::MergePartialFromCodedStream( if (input->ExpectTag(25)) goto parse_object_number; break; } - + // required fixed64 object_number = 3; case 3: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -6417,14 +6464,14 @@ bool xtreemfs_check_objectRequest::MergePartialFromCodedStream( DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive< ::google::protobuf::uint64, ::google::protobuf::internal::WireFormatLite::TYPE_FIXED64>( input, &object_number_))); - _set_bit(2); + set_has_object_number(); } else { goto handle_uninterpreted; } if (input->ExpectTag(33)) goto parse_object_version; break; } - + // required fixed64 object_version = 4; case 4: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -6433,14 +6480,14 @@ bool xtreemfs_check_objectRequest::MergePartialFromCodedStream( DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive< ::google::protobuf::uint64, ::google::protobuf::internal::WireFormatLite::TYPE_FIXED64>( input, &object_version_))); - _set_bit(3); + set_has_object_version(); } else { goto handle_uninterpreted; } if (input->ExpectAtEnd()) return true; break; } - + default: { handle_uninterpreted: if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -6460,30 +6507,30 @@ bool xtreemfs_check_objectRequest::MergePartialFromCodedStream( void xtreemfs_check_objectRequest::SerializeWithCachedSizes( ::google::protobuf::io::CodedOutputStream* output) const { // required .xtreemfs.pbrpc.FileCredentials file_credentials = 1; - if (_has_bit(0)) { + if (has_file_credentials()) { ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray( 1, this->file_credentials(), output); } - + // required string file_id = 2; - if (_has_bit(1)) { + if (has_file_id()) { ::google::protobuf::internal::WireFormat::VerifyUTF8String( this->file_id().data(), this->file_id().length(), ::google::protobuf::internal::WireFormat::SERIALIZE); ::google::protobuf::internal::WireFormatLite::WriteString( 2, this->file_id(), output); } - + // required fixed64 object_number = 3; - if (_has_bit(2)) { + if (has_object_number()) { ::google::protobuf::internal::WireFormatLite::WriteFixed64(3, this->object_number(), output); } - + // required fixed64 object_version = 4; - if (_has_bit(3)) { + if (has_object_version()) { ::google::protobuf::internal::WireFormatLite::WriteFixed64(4, this->object_version(), output); } - + if (!unknown_fields().empty()) { ::google::protobuf::internal::WireFormat::SerializeUnknownFields( unknown_fields(), output); @@ -6493,14 +6540,14 @@ void xtreemfs_check_objectRequest::SerializeWithCachedSizes( ::google::protobuf::uint8* xtreemfs_check_objectRequest::SerializeWithCachedSizesToArray( ::google::protobuf::uint8* target) const { // required .xtreemfs.pbrpc.FileCredentials file_credentials = 1; - if (_has_bit(0)) { + if (has_file_credentials()) { target = ::google::protobuf::internal::WireFormatLite:: WriteMessageNoVirtualToArray( 1, this->file_credentials(), target); } - + // required string file_id = 2; - if (_has_bit(1)) { + if (has_file_id()) { ::google::protobuf::internal::WireFormat::VerifyUTF8String( this->file_id().data(), this->file_id().length(), ::google::protobuf::internal::WireFormat::SERIALIZE); @@ -6508,17 +6555,17 @@ void xtreemfs_check_objectRequest::SerializeWithCachedSizes( ::google::protobuf::internal::WireFormatLite::WriteStringToArray( 2, this->file_id(), target); } - + // required fixed64 object_number = 3; - if (_has_bit(2)) { + if (has_object_number()) { target = ::google::protobuf::internal::WireFormatLite::WriteFixed64ToArray(3, this->object_number(), target); } - + // required fixed64 object_version = 4; - if (_has_bit(3)) { + if (has_object_version()) { target = ::google::protobuf::internal::WireFormatLite::WriteFixed64ToArray(4, this->object_version(), target); } - + if (!unknown_fields().empty()) { target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray( unknown_fields(), target); @@ -6528,7 +6575,7 @@ void xtreemfs_check_objectRequest::SerializeWithCachedSizes( int xtreemfs_check_objectRequest::ByteSize() const { int total_size = 0; - + if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) { // required .xtreemfs.pbrpc.FileCredentials file_credentials = 1; if (has_file_credentials()) { @@ -6536,24 +6583,24 @@ int xtreemfs_check_objectRequest::ByteSize() const { ::google::protobuf::internal::WireFormatLite::MessageSizeNoVirtual( this->file_credentials()); } - + // required string file_id = 2; if (has_file_id()) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::StringSize( this->file_id()); } - + // required fixed64 object_number = 3; if (has_object_number()) { total_size += 1 + 8; } - + // required fixed64 object_version = 4; if (has_object_version()) { total_size += 1 + 8; } - + } if (!unknown_fields().empty()) { total_size += @@ -6581,16 +6628,16 @@ void xtreemfs_check_objectRequest::MergeFrom(const ::google::protobuf::Message& void xtreemfs_check_objectRequest::MergeFrom(const xtreemfs_check_objectRequest& from) { GOOGLE_CHECK_NE(&from, this); if (from._has_bits_[0 / 32] & (0xffu << (0 % 32))) { - if (from._has_bit(0)) { + if (from.has_file_credentials()) { mutable_file_credentials()->::xtreemfs::pbrpc::FileCredentials::MergeFrom(from.file_credentials()); } - if (from._has_bit(1)) { + if (from.has_file_id()) { set_file_id(from.file_id()); } - if (from._has_bit(2)) { + if (from.has_object_number()) { set_object_number(from.object_number()); } - if (from._has_bit(3)) { + if (from.has_object_version()) { set_object_version(from.object_version()); } } @@ -6611,7 +6658,7 @@ void xtreemfs_check_objectRequest::CopyFrom(const xtreemfs_check_objectRequest& bool xtreemfs_check_objectRequest::IsInitialized() const { if ((_has_bits_[0] & 0x0000000f) != 0x0000000f) return false; - + if (has_file_credentials()) { if (!this->file_credentials().IsInitialized()) return false; } @@ -6684,7 +6731,8 @@ const ::google::protobuf::Descriptor* xtreemfs_cleanup_get_resultsResponse::desc } const xtreemfs_cleanup_get_resultsResponse& xtreemfs_cleanup_get_resultsResponse::default_instance() { - if (default_instance_ == NULL) protobuf_AddDesc_xtreemfs_2fOSD_2eproto(); return *default_instance_; + if (default_instance_ == NULL) protobuf_AddDesc_xtreemfs_2fOSD_2eproto(); + return *default_instance_; } xtreemfs_cleanup_get_resultsResponse* xtreemfs_cleanup_get_resultsResponse::default_instance_ = NULL; @@ -6713,7 +6761,8 @@ bool xtreemfs_cleanup_get_resultsResponse::MergePartialFromCodedStream( DO_(::google::protobuf::internal::WireFormatLite::ReadString( input, this->add_results())); ::google::protobuf::internal::WireFormat::VerifyUTF8String( - this->results(0).data(), this->results(0).length(), + this->results(this->results_size() - 1).data(), + this->results(this->results_size() - 1).length(), ::google::protobuf::internal::WireFormat::PARSE); } else { goto handle_uninterpreted; @@ -6722,7 +6771,7 @@ bool xtreemfs_cleanup_get_resultsResponse::MergePartialFromCodedStream( if (input->ExpectAtEnd()) return true; break; } - + default: { handle_uninterpreted: if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -6749,7 +6798,7 @@ void xtreemfs_cleanup_get_resultsResponse::SerializeWithCachedSizes( ::google::protobuf::internal::WireFormatLite::WriteString( 1, this->results(i), output); } - + if (!unknown_fields().empty()) { ::google::protobuf::internal::WireFormat::SerializeUnknownFields( unknown_fields(), output); @@ -6766,7 +6815,7 @@ void xtreemfs_cleanup_get_resultsResponse::SerializeWithCachedSizes( target = ::google::protobuf::internal::WireFormatLite:: WriteStringToArray(1, this->results(i), target); } - + if (!unknown_fields().empty()) { target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray( unknown_fields(), target); @@ -6776,14 +6825,14 @@ void xtreemfs_cleanup_get_resultsResponse::SerializeWithCachedSizes( int xtreemfs_cleanup_get_resultsResponse::ByteSize() const { int total_size = 0; - + // repeated string results = 1; total_size += 1 * this->results_size(); for (int i = 0; i < this->results_size(); i++) { total_size += ::google::protobuf::internal::WireFormatLite::StringSize( this->results(i)); } - + if (!unknown_fields().empty()) { total_size += ::google::protobuf::internal::WireFormat::ComputeUnknownFieldsSize( @@ -6826,7 +6875,7 @@ void xtreemfs_cleanup_get_resultsResponse::CopyFrom(const xtreemfs_cleanup_get_r } bool xtreemfs_cleanup_get_resultsResponse::IsInitialized() const { - + return true; } @@ -6894,7 +6943,8 @@ const ::google::protobuf::Descriptor* xtreemfs_cleanup_is_runningResponse::descr } const xtreemfs_cleanup_is_runningResponse& xtreemfs_cleanup_is_runningResponse::default_instance() { - if (default_instance_ == NULL) protobuf_AddDesc_xtreemfs_2fOSD_2eproto(); return *default_instance_; + if (default_instance_ == NULL) protobuf_AddDesc_xtreemfs_2fOSD_2eproto(); + return *default_instance_; } xtreemfs_cleanup_is_runningResponse* xtreemfs_cleanup_is_runningResponse::default_instance_ = NULL; @@ -6924,14 +6974,14 @@ bool xtreemfs_cleanup_is_runningResponse::MergePartialFromCodedStream( DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive< bool, ::google::protobuf::internal::WireFormatLite::TYPE_BOOL>( input, &is_running_))); - _set_bit(0); + set_has_is_running(); } else { goto handle_uninterpreted; } if (input->ExpectAtEnd()) return true; break; } - + default: { handle_uninterpreted: if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -6951,10 +7001,10 @@ bool xtreemfs_cleanup_is_runningResponse::MergePartialFromCodedStream( void xtreemfs_cleanup_is_runningResponse::SerializeWithCachedSizes( ::google::protobuf::io::CodedOutputStream* output) const { // required bool is_running = 1; - if (_has_bit(0)) { + if (has_is_running()) { ::google::protobuf::internal::WireFormatLite::WriteBool(1, this->is_running(), output); } - + if (!unknown_fields().empty()) { ::google::protobuf::internal::WireFormat::SerializeUnknownFields( unknown_fields(), output); @@ -6964,10 +7014,10 @@ void xtreemfs_cleanup_is_runningResponse::SerializeWithCachedSizes( ::google::protobuf::uint8* xtreemfs_cleanup_is_runningResponse::SerializeWithCachedSizesToArray( ::google::protobuf::uint8* target) const { // required bool is_running = 1; - if (_has_bit(0)) { + if (has_is_running()) { target = ::google::protobuf::internal::WireFormatLite::WriteBoolToArray(1, this->is_running(), target); } - + if (!unknown_fields().empty()) { target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray( unknown_fields(), target); @@ -6977,13 +7027,13 @@ void xtreemfs_cleanup_is_runningResponse::SerializeWithCachedSizes( int xtreemfs_cleanup_is_runningResponse::ByteSize() const { int total_size = 0; - + if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) { // required bool is_running = 1; if (has_is_running()) { total_size += 1 + 1; } - + } if (!unknown_fields().empty()) { total_size += @@ -7011,7 +7061,7 @@ void xtreemfs_cleanup_is_runningResponse::MergeFrom(const ::google::protobuf::Me void xtreemfs_cleanup_is_runningResponse::MergeFrom(const xtreemfs_cleanup_is_runningResponse& from) { GOOGLE_CHECK_NE(&from, this); if (from._has_bits_[0 / 32] & (0xffu << (0 % 32))) { - if (from._has_bit(0)) { + if (from.has_is_running()) { set_is_running(from.is_running()); } } @@ -7032,7 +7082,7 @@ void xtreemfs_cleanup_is_runningResponse::CopyFrom(const xtreemfs_cleanup_is_run bool xtreemfs_cleanup_is_runningResponse::IsInitialized() const { if ((_has_bits_[0] & 0x00000001) != 0x00000001) return false; - + return true; } @@ -7104,7 +7154,8 @@ const ::google::protobuf::Descriptor* xtreemfs_cleanup_startRequest::descriptor( } const xtreemfs_cleanup_startRequest& xtreemfs_cleanup_startRequest::default_instance() { - if (default_instance_ == NULL) protobuf_AddDesc_xtreemfs_2fOSD_2eproto(); return *default_instance_; + if (default_instance_ == NULL) protobuf_AddDesc_xtreemfs_2fOSD_2eproto(); + return *default_instance_; } xtreemfs_cleanup_startRequest* xtreemfs_cleanup_startRequest::default_instance_ = NULL; @@ -7136,14 +7187,14 @@ bool xtreemfs_cleanup_startRequest::MergePartialFromCodedStream( DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive< bool, ::google::protobuf::internal::WireFormatLite::TYPE_BOOL>( input, &remove_zombies_))); - _set_bit(0); + set_has_remove_zombies(); } else { goto handle_uninterpreted; } if (input->ExpectTag(16)) goto parse_remove_unavail_volume; break; } - + // required bool remove_unavail_volume = 2; case 2: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -7152,14 +7203,14 @@ bool xtreemfs_cleanup_startRequest::MergePartialFromCodedStream( DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive< bool, ::google::protobuf::internal::WireFormatLite::TYPE_BOOL>( input, &remove_unavail_volume_))); - _set_bit(1); + set_has_remove_unavail_volume(); } else { goto handle_uninterpreted; } if (input->ExpectTag(24)) goto parse_lost_and_found; break; } - + // required bool lost_and_found = 3; case 3: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -7168,14 +7219,14 @@ bool xtreemfs_cleanup_startRequest::MergePartialFromCodedStream( DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive< bool, ::google::protobuf::internal::WireFormatLite::TYPE_BOOL>( input, &lost_and_found_))); - _set_bit(2); + set_has_lost_and_found(); } else { goto handle_uninterpreted; } if (input->ExpectAtEnd()) return true; break; } - + default: { handle_uninterpreted: if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -7195,20 +7246,20 @@ bool xtreemfs_cleanup_startRequest::MergePartialFromCodedStream( void xtreemfs_cleanup_startRequest::SerializeWithCachedSizes( ::google::protobuf::io::CodedOutputStream* output) const { // required bool remove_zombies = 1; - if (_has_bit(0)) { + if (has_remove_zombies()) { ::google::protobuf::internal::WireFormatLite::WriteBool(1, this->remove_zombies(), output); } - + // required bool remove_unavail_volume = 2; - if (_has_bit(1)) { + if (has_remove_unavail_volume()) { ::google::protobuf::internal::WireFormatLite::WriteBool(2, this->remove_unavail_volume(), output); } - + // required bool lost_and_found = 3; - if (_has_bit(2)) { + if (has_lost_and_found()) { ::google::protobuf::internal::WireFormatLite::WriteBool(3, this->lost_and_found(), output); } - + if (!unknown_fields().empty()) { ::google::protobuf::internal::WireFormat::SerializeUnknownFields( unknown_fields(), output); @@ -7218,20 +7269,20 @@ void xtreemfs_cleanup_startRequest::SerializeWithCachedSizes( ::google::protobuf::uint8* xtreemfs_cleanup_startRequest::SerializeWithCachedSizesToArray( ::google::protobuf::uint8* target) const { // required bool remove_zombies = 1; - if (_has_bit(0)) { + if (has_remove_zombies()) { target = ::google::protobuf::internal::WireFormatLite::WriteBoolToArray(1, this->remove_zombies(), target); } - + // required bool remove_unavail_volume = 2; - if (_has_bit(1)) { + if (has_remove_unavail_volume()) { target = ::google::protobuf::internal::WireFormatLite::WriteBoolToArray(2, this->remove_unavail_volume(), target); } - + // required bool lost_and_found = 3; - if (_has_bit(2)) { + if (has_lost_and_found()) { target = ::google::protobuf::internal::WireFormatLite::WriteBoolToArray(3, this->lost_and_found(), target); } - + if (!unknown_fields().empty()) { target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray( unknown_fields(), target); @@ -7241,23 +7292,23 @@ void xtreemfs_cleanup_startRequest::SerializeWithCachedSizes( int xtreemfs_cleanup_startRequest::ByteSize() const { int total_size = 0; - + if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) { // required bool remove_zombies = 1; if (has_remove_zombies()) { total_size += 1 + 1; } - + // required bool remove_unavail_volume = 2; if (has_remove_unavail_volume()) { total_size += 1 + 1; } - + // required bool lost_and_found = 3; if (has_lost_and_found()) { total_size += 1 + 1; } - + } if (!unknown_fields().empty()) { total_size += @@ -7285,13 +7336,13 @@ void xtreemfs_cleanup_startRequest::MergeFrom(const ::google::protobuf::Message& void xtreemfs_cleanup_startRequest::MergeFrom(const xtreemfs_cleanup_startRequest& from) { GOOGLE_CHECK_NE(&from, this); if (from._has_bits_[0 / 32] & (0xffu << (0 % 32))) { - if (from._has_bit(0)) { + if (from.has_remove_zombies()) { set_remove_zombies(from.remove_zombies()); } - if (from._has_bit(1)) { + if (from.has_remove_unavail_volume()) { set_remove_unavail_volume(from.remove_unavail_volume()); } - if (from._has_bit(2)) { + if (from.has_lost_and_found()) { set_lost_and_found(from.lost_and_found()); } } @@ -7312,7 +7363,7 @@ void xtreemfs_cleanup_startRequest::CopyFrom(const xtreemfs_cleanup_startRequest bool xtreemfs_cleanup_startRequest::IsInitialized() const { if ((_has_bits_[0] & 0x00000007) != 0x00000007) return false; - + return true; } @@ -7338,7 +7389,6 @@ void xtreemfs_cleanup_startRequest::Swap(xtreemfs_cleanup_startRequest* other) { // =================================================================== -const ::std::string xtreemfs_cleanup_statusResponse::_default_status_; #ifndef _MSC_VER const int xtreemfs_cleanup_statusResponse::kStatusFieldNumber; #endif // !_MSC_VER @@ -7359,7 +7409,7 @@ xtreemfs_cleanup_statusResponse::xtreemfs_cleanup_statusResponse(const xtreemfs_ void xtreemfs_cleanup_statusResponse::SharedCtor() { _cached_size_ = 0; - status_ = const_cast< ::std::string*>(&_default_status_); + status_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); ::memset(_has_bits_, 0, sizeof(_has_bits_)); } @@ -7368,7 +7418,7 @@ xtreemfs_cleanup_statusResponse::~xtreemfs_cleanup_statusResponse() { } void xtreemfs_cleanup_statusResponse::SharedDtor() { - if (status_ != &_default_status_) { + if (status_ != &::google::protobuf::internal::kEmptyString) { delete status_; } if (this != default_instance_) { @@ -7386,7 +7436,8 @@ const ::google::protobuf::Descriptor* xtreemfs_cleanup_statusResponse::descripto } const xtreemfs_cleanup_statusResponse& xtreemfs_cleanup_statusResponse::default_instance() { - if (default_instance_ == NULL) protobuf_AddDesc_xtreemfs_2fOSD_2eproto(); return *default_instance_; + if (default_instance_ == NULL) protobuf_AddDesc_xtreemfs_2fOSD_2eproto(); + return *default_instance_; } xtreemfs_cleanup_statusResponse* xtreemfs_cleanup_statusResponse::default_instance_ = NULL; @@ -7397,8 +7448,8 @@ xtreemfs_cleanup_statusResponse* xtreemfs_cleanup_statusResponse::New() const { void xtreemfs_cleanup_statusResponse::Clear() { if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) { - if (_has_bit(0)) { - if (status_ != &_default_status_) { + if (has_status()) { + if (status_ != &::google::protobuf::internal::kEmptyString) { status_->clear(); } } @@ -7428,7 +7479,7 @@ bool xtreemfs_cleanup_statusResponse::MergePartialFromCodedStream( if (input->ExpectAtEnd()) return true; break; } - + default: { handle_uninterpreted: if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -7448,14 +7499,14 @@ bool xtreemfs_cleanup_statusResponse::MergePartialFromCodedStream( void xtreemfs_cleanup_statusResponse::SerializeWithCachedSizes( ::google::protobuf::io::CodedOutputStream* output) const { // required string status = 1; - if (_has_bit(0)) { + if (has_status()) { ::google::protobuf::internal::WireFormat::VerifyUTF8String( this->status().data(), this->status().length(), ::google::protobuf::internal::WireFormat::SERIALIZE); ::google::protobuf::internal::WireFormatLite::WriteString( 1, this->status(), output); } - + if (!unknown_fields().empty()) { ::google::protobuf::internal::WireFormat::SerializeUnknownFields( unknown_fields(), output); @@ -7465,7 +7516,7 @@ void xtreemfs_cleanup_statusResponse::SerializeWithCachedSizes( ::google::protobuf::uint8* xtreemfs_cleanup_statusResponse::SerializeWithCachedSizesToArray( ::google::protobuf::uint8* target) const { // required string status = 1; - if (_has_bit(0)) { + if (has_status()) { ::google::protobuf::internal::WireFormat::VerifyUTF8String( this->status().data(), this->status().length(), ::google::protobuf::internal::WireFormat::SERIALIZE); @@ -7473,7 +7524,7 @@ void xtreemfs_cleanup_statusResponse::SerializeWithCachedSizes( ::google::protobuf::internal::WireFormatLite::WriteStringToArray( 1, this->status(), target); } - + if (!unknown_fields().empty()) { target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray( unknown_fields(), target); @@ -7483,7 +7534,7 @@ void xtreemfs_cleanup_statusResponse::SerializeWithCachedSizes( int xtreemfs_cleanup_statusResponse::ByteSize() const { int total_size = 0; - + if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) { // required string status = 1; if (has_status()) { @@ -7491,7 +7542,7 @@ int xtreemfs_cleanup_statusResponse::ByteSize() const { ::google::protobuf::internal::WireFormatLite::StringSize( this->status()); } - + } if (!unknown_fields().empty()) { total_size += @@ -7519,7 +7570,7 @@ void xtreemfs_cleanup_statusResponse::MergeFrom(const ::google::protobuf::Messag void xtreemfs_cleanup_statusResponse::MergeFrom(const xtreemfs_cleanup_statusResponse& from) { GOOGLE_CHECK_NE(&from, this); if (from._has_bits_[0 / 32] & (0xffu << (0 % 32))) { - if (from._has_bit(0)) { + if (from.has_status()) { set_status(from.status()); } } @@ -7540,7 +7591,7 @@ void xtreemfs_cleanup_statusResponse::CopyFrom(const xtreemfs_cleanup_statusResp bool xtreemfs_cleanup_statusResponse::IsInitialized() const { if ((_has_bits_[0] & 0x00000001) != 0x00000001) return false; - + return true; } @@ -7564,7 +7615,6 @@ void xtreemfs_cleanup_statusResponse::Swap(xtreemfs_cleanup_statusResponse* othe // =================================================================== -const ::std::string xtreemfs_rwr_fetchRequest::_default_file_id_; #ifndef _MSC_VER const int xtreemfs_rwr_fetchRequest::kFileCredentialsFieldNumber; const int xtreemfs_rwr_fetchRequest::kFileIdFieldNumber; @@ -7590,7 +7640,7 @@ xtreemfs_rwr_fetchRequest::xtreemfs_rwr_fetchRequest(const xtreemfs_rwr_fetchReq void xtreemfs_rwr_fetchRequest::SharedCtor() { _cached_size_ = 0; file_credentials_ = NULL; - file_id_ = const_cast< ::std::string*>(&_default_file_id_); + file_id_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); object_number_ = GOOGLE_ULONGLONG(0); object_version_ = GOOGLE_ULONGLONG(0); ::memset(_has_bits_, 0, sizeof(_has_bits_)); @@ -7601,7 +7651,7 @@ xtreemfs_rwr_fetchRequest::~xtreemfs_rwr_fetchRequest() { } void xtreemfs_rwr_fetchRequest::SharedDtor() { - if (file_id_ != &_default_file_id_) { + if (file_id_ != &::google::protobuf::internal::kEmptyString) { delete file_id_; } if (this != default_instance_) { @@ -7620,7 +7670,8 @@ const ::google::protobuf::Descriptor* xtreemfs_rwr_fetchRequest::descriptor() { } const xtreemfs_rwr_fetchRequest& xtreemfs_rwr_fetchRequest::default_instance() { - if (default_instance_ == NULL) protobuf_AddDesc_xtreemfs_2fOSD_2eproto(); return *default_instance_; + if (default_instance_ == NULL) protobuf_AddDesc_xtreemfs_2fOSD_2eproto(); + return *default_instance_; } xtreemfs_rwr_fetchRequest* xtreemfs_rwr_fetchRequest::default_instance_ = NULL; @@ -7631,11 +7682,11 @@ xtreemfs_rwr_fetchRequest* xtreemfs_rwr_fetchRequest::New() const { void xtreemfs_rwr_fetchRequest::Clear() { if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) { - if (_has_bit(0)) { + if (has_file_credentials()) { if (file_credentials_ != NULL) file_credentials_->::xtreemfs::pbrpc::FileCredentials::Clear(); } - if (_has_bit(1)) { - if (file_id_ != &_default_file_id_) { + if (has_file_id()) { + if (file_id_ != &::google::protobuf::internal::kEmptyString) { file_id_->clear(); } } @@ -7664,7 +7715,7 @@ bool xtreemfs_rwr_fetchRequest::MergePartialFromCodedStream( if (input->ExpectTag(18)) goto parse_file_id; break; } - + // required string file_id = 2; case 2: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -7681,7 +7732,7 @@ bool xtreemfs_rwr_fetchRequest::MergePartialFromCodedStream( if (input->ExpectTag(25)) goto parse_object_number; break; } - + // required fixed64 object_number = 3; case 3: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -7690,14 +7741,14 @@ bool xtreemfs_rwr_fetchRequest::MergePartialFromCodedStream( DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive< ::google::protobuf::uint64, ::google::protobuf::internal::WireFormatLite::TYPE_FIXED64>( input, &object_number_))); - _set_bit(2); + set_has_object_number(); } else { goto handle_uninterpreted; } if (input->ExpectTag(33)) goto parse_object_version; break; } - + // required fixed64 object_version = 4; case 4: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -7706,14 +7757,14 @@ bool xtreemfs_rwr_fetchRequest::MergePartialFromCodedStream( DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive< ::google::protobuf::uint64, ::google::protobuf::internal::WireFormatLite::TYPE_FIXED64>( input, &object_version_))); - _set_bit(3); + set_has_object_version(); } else { goto handle_uninterpreted; } if (input->ExpectAtEnd()) return true; break; } - + default: { handle_uninterpreted: if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -7733,30 +7784,30 @@ bool xtreemfs_rwr_fetchRequest::MergePartialFromCodedStream( void xtreemfs_rwr_fetchRequest::SerializeWithCachedSizes( ::google::protobuf::io::CodedOutputStream* output) const { // required .xtreemfs.pbrpc.FileCredentials file_credentials = 1; - if (_has_bit(0)) { + if (has_file_credentials()) { ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray( 1, this->file_credentials(), output); } - + // required string file_id = 2; - if (_has_bit(1)) { + if (has_file_id()) { ::google::protobuf::internal::WireFormat::VerifyUTF8String( this->file_id().data(), this->file_id().length(), ::google::protobuf::internal::WireFormat::SERIALIZE); ::google::protobuf::internal::WireFormatLite::WriteString( 2, this->file_id(), output); } - + // required fixed64 object_number = 3; - if (_has_bit(2)) { + if (has_object_number()) { ::google::protobuf::internal::WireFormatLite::WriteFixed64(3, this->object_number(), output); } - + // required fixed64 object_version = 4; - if (_has_bit(3)) { + if (has_object_version()) { ::google::protobuf::internal::WireFormatLite::WriteFixed64(4, this->object_version(), output); } - + if (!unknown_fields().empty()) { ::google::protobuf::internal::WireFormat::SerializeUnknownFields( unknown_fields(), output); @@ -7766,14 +7817,14 @@ void xtreemfs_rwr_fetchRequest::SerializeWithCachedSizes( ::google::protobuf::uint8* xtreemfs_rwr_fetchRequest::SerializeWithCachedSizesToArray( ::google::protobuf::uint8* target) const { // required .xtreemfs.pbrpc.FileCredentials file_credentials = 1; - if (_has_bit(0)) { + if (has_file_credentials()) { target = ::google::protobuf::internal::WireFormatLite:: WriteMessageNoVirtualToArray( 1, this->file_credentials(), target); } - + // required string file_id = 2; - if (_has_bit(1)) { + if (has_file_id()) { ::google::protobuf::internal::WireFormat::VerifyUTF8String( this->file_id().data(), this->file_id().length(), ::google::protobuf::internal::WireFormat::SERIALIZE); @@ -7781,17 +7832,17 @@ void xtreemfs_rwr_fetchRequest::SerializeWithCachedSizes( ::google::protobuf::internal::WireFormatLite::WriteStringToArray( 2, this->file_id(), target); } - + // required fixed64 object_number = 3; - if (_has_bit(2)) { + if (has_object_number()) { target = ::google::protobuf::internal::WireFormatLite::WriteFixed64ToArray(3, this->object_number(), target); } - + // required fixed64 object_version = 4; - if (_has_bit(3)) { + if (has_object_version()) { target = ::google::protobuf::internal::WireFormatLite::WriteFixed64ToArray(4, this->object_version(), target); } - + if (!unknown_fields().empty()) { target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray( unknown_fields(), target); @@ -7801,7 +7852,7 @@ void xtreemfs_rwr_fetchRequest::SerializeWithCachedSizes( int xtreemfs_rwr_fetchRequest::ByteSize() const { int total_size = 0; - + if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) { // required .xtreemfs.pbrpc.FileCredentials file_credentials = 1; if (has_file_credentials()) { @@ -7809,24 +7860,24 @@ int xtreemfs_rwr_fetchRequest::ByteSize() const { ::google::protobuf::internal::WireFormatLite::MessageSizeNoVirtual( this->file_credentials()); } - + // required string file_id = 2; if (has_file_id()) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::StringSize( this->file_id()); } - + // required fixed64 object_number = 3; if (has_object_number()) { total_size += 1 + 8; } - + // required fixed64 object_version = 4; if (has_object_version()) { total_size += 1 + 8; } - + } if (!unknown_fields().empty()) { total_size += @@ -7854,16 +7905,16 @@ void xtreemfs_rwr_fetchRequest::MergeFrom(const ::google::protobuf::Message& fro void xtreemfs_rwr_fetchRequest::MergeFrom(const xtreemfs_rwr_fetchRequest& from) { GOOGLE_CHECK_NE(&from, this); if (from._has_bits_[0 / 32] & (0xffu << (0 % 32))) { - if (from._has_bit(0)) { + if (from.has_file_credentials()) { mutable_file_credentials()->::xtreemfs::pbrpc::FileCredentials::MergeFrom(from.file_credentials()); } - if (from._has_bit(1)) { + if (from.has_file_id()) { set_file_id(from.file_id()); } - if (from._has_bit(2)) { + if (from.has_object_number()) { set_object_number(from.object_number()); } - if (from._has_bit(3)) { + if (from.has_object_version()) { set_object_version(from.object_version()); } } @@ -7884,7 +7935,7 @@ void xtreemfs_rwr_fetchRequest::CopyFrom(const xtreemfs_rwr_fetchRequest& from) bool xtreemfs_rwr_fetchRequest::IsInitialized() const { if ((_has_bits_[0] & 0x0000000f) != 0x0000000f) return false; - + if (has_file_credentials()) { if (!this->file_credentials().IsInitialized()) return false; } @@ -7914,7 +7965,356 @@ void xtreemfs_rwr_fetchRequest::Swap(xtreemfs_rwr_fetchRequest* other) { // =================================================================== -const ::std::string xtreemfs_rwr_flease_msgRequest::_default_sender_hostname_; +#ifndef _MSC_VER +const int xtreemfs_repair_objectRequest::kFileCredentialsFieldNumber; +const int xtreemfs_repair_objectRequest::kFileIdFieldNumber; +const int xtreemfs_repair_objectRequest::kObjectNumberFieldNumber; +const int xtreemfs_repair_objectRequest::kObjectVersionFieldNumber; +#endif // !_MSC_VER + +xtreemfs_repair_objectRequest::xtreemfs_repair_objectRequest() + : ::google::protobuf::Message() { + SharedCtor(); +} + +void xtreemfs_repair_objectRequest::InitAsDefaultInstance() { + file_credentials_ = const_cast< ::xtreemfs::pbrpc::FileCredentials*>(&::xtreemfs::pbrpc::FileCredentials::default_instance()); +} + +xtreemfs_repair_objectRequest::xtreemfs_repair_objectRequest(const xtreemfs_repair_objectRequest& from) + : ::google::protobuf::Message() { + SharedCtor(); + MergeFrom(from); +} + +void xtreemfs_repair_objectRequest::SharedCtor() { + _cached_size_ = 0; + file_credentials_ = NULL; + file_id_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + object_number_ = GOOGLE_ULONGLONG(0); + object_version_ = GOOGLE_ULONGLONG(0); + ::memset(_has_bits_, 0, sizeof(_has_bits_)); +} + +xtreemfs_repair_objectRequest::~xtreemfs_repair_objectRequest() { + SharedDtor(); +} + +void xtreemfs_repair_objectRequest::SharedDtor() { + if (file_id_ != &::google::protobuf::internal::kEmptyString) { + delete file_id_; + } + if (this != default_instance_) { + delete file_credentials_; + } +} + +void xtreemfs_repair_objectRequest::SetCachedSize(int size) const { + GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN(); + _cached_size_ = size; + GOOGLE_SAFE_CONCURRENT_WRITES_END(); +} +const ::google::protobuf::Descriptor* xtreemfs_repair_objectRequest::descriptor() { + protobuf_AssignDescriptorsOnce(); + return xtreemfs_repair_objectRequest_descriptor_; +} + +const xtreemfs_repair_objectRequest& xtreemfs_repair_objectRequest::default_instance() { + if (default_instance_ == NULL) protobuf_AddDesc_xtreemfs_2fOSD_2eproto(); + return *default_instance_; +} + +xtreemfs_repair_objectRequest* xtreemfs_repair_objectRequest::default_instance_ = NULL; + +xtreemfs_repair_objectRequest* xtreemfs_repair_objectRequest::New() const { + return new xtreemfs_repair_objectRequest; +} + +void xtreemfs_repair_objectRequest::Clear() { + if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) { + if (has_file_credentials()) { + if (file_credentials_ != NULL) file_credentials_->::xtreemfs::pbrpc::FileCredentials::Clear(); + } + if (has_file_id()) { + if (file_id_ != &::google::protobuf::internal::kEmptyString) { + file_id_->clear(); + } + } + object_number_ = GOOGLE_ULONGLONG(0); + object_version_ = GOOGLE_ULONGLONG(0); + } + ::memset(_has_bits_, 0, sizeof(_has_bits_)); + mutable_unknown_fields()->Clear(); +} + +bool xtreemfs_repair_objectRequest::MergePartialFromCodedStream( + ::google::protobuf::io::CodedInputStream* input) { +#define DO_(EXPRESSION) if (!(EXPRESSION)) return false + ::google::protobuf::uint32 tag; + while ((tag = input->ReadTag()) != 0) { + switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) { + // required .xtreemfs.pbrpc.FileCredentials file_credentials = 1; + case 1: { + if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == + ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) { + DO_(::google::protobuf::internal::WireFormatLite::ReadMessageNoVirtual( + input, mutable_file_credentials())); + } else { + goto handle_uninterpreted; + } + if (input->ExpectTag(18)) goto parse_file_id; + break; + } + + // required string file_id = 2; + case 2: { + if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == + ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) { + parse_file_id: + DO_(::google::protobuf::internal::WireFormatLite::ReadString( + input, this->mutable_file_id())); + ::google::protobuf::internal::WireFormat::VerifyUTF8String( + this->file_id().data(), this->file_id().length(), + ::google::protobuf::internal::WireFormat::PARSE); + } else { + goto handle_uninterpreted; + } + if (input->ExpectTag(25)) goto parse_object_number; + break; + } + + // required fixed64 object_number = 3; + case 3: { + if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == + ::google::protobuf::internal::WireFormatLite::WIRETYPE_FIXED64) { + parse_object_number: + DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive< + ::google::protobuf::uint64, ::google::protobuf::internal::WireFormatLite::TYPE_FIXED64>( + input, &object_number_))); + set_has_object_number(); + } else { + goto handle_uninterpreted; + } + if (input->ExpectTag(33)) goto parse_object_version; + break; + } + + // required fixed64 object_version = 4; + case 4: { + if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == + ::google::protobuf::internal::WireFormatLite::WIRETYPE_FIXED64) { + parse_object_version: + DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive< + ::google::protobuf::uint64, ::google::protobuf::internal::WireFormatLite::TYPE_FIXED64>( + input, &object_version_))); + set_has_object_version(); + } else { + goto handle_uninterpreted; + } + if (input->ExpectAtEnd()) return true; + break; + } + + default: { + handle_uninterpreted: + if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == + ::google::protobuf::internal::WireFormatLite::WIRETYPE_END_GROUP) { + return true; + } + DO_(::google::protobuf::internal::WireFormat::SkipField( + input, tag, mutable_unknown_fields())); + break; + } + } + } + return true; +#undef DO_ +} + +void xtreemfs_repair_objectRequest::SerializeWithCachedSizes( + ::google::protobuf::io::CodedOutputStream* output) const { + // required .xtreemfs.pbrpc.FileCredentials file_credentials = 1; + if (has_file_credentials()) { + ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray( + 1, this->file_credentials(), output); + } + + // required string file_id = 2; + if (has_file_id()) { + ::google::protobuf::internal::WireFormat::VerifyUTF8String( + this->file_id().data(), this->file_id().length(), + ::google::protobuf::internal::WireFormat::SERIALIZE); + ::google::protobuf::internal::WireFormatLite::WriteString( + 2, this->file_id(), output); + } + + // required fixed64 object_number = 3; + if (has_object_number()) { + ::google::protobuf::internal::WireFormatLite::WriteFixed64(3, this->object_number(), output); + } + + // required fixed64 object_version = 4; + if (has_object_version()) { + ::google::protobuf::internal::WireFormatLite::WriteFixed64(4, this->object_version(), output); + } + + if (!unknown_fields().empty()) { + ::google::protobuf::internal::WireFormat::SerializeUnknownFields( + unknown_fields(), output); + } +} + +::google::protobuf::uint8* xtreemfs_repair_objectRequest::SerializeWithCachedSizesToArray( + ::google::protobuf::uint8* target) const { + // required .xtreemfs.pbrpc.FileCredentials file_credentials = 1; + if (has_file_credentials()) { + target = ::google::protobuf::internal::WireFormatLite:: + WriteMessageNoVirtualToArray( + 1, this->file_credentials(), target); + } + + // required string file_id = 2; + if (has_file_id()) { + ::google::protobuf::internal::WireFormat::VerifyUTF8String( + this->file_id().data(), this->file_id().length(), + ::google::protobuf::internal::WireFormat::SERIALIZE); + target = + ::google::protobuf::internal::WireFormatLite::WriteStringToArray( + 2, this->file_id(), target); + } + + // required fixed64 object_number = 3; + if (has_object_number()) { + target = ::google::protobuf::internal::WireFormatLite::WriteFixed64ToArray(3, this->object_number(), target); + } + + // required fixed64 object_version = 4; + if (has_object_version()) { + target = ::google::protobuf::internal::WireFormatLite::WriteFixed64ToArray(4, this->object_version(), target); + } + + if (!unknown_fields().empty()) { + target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray( + unknown_fields(), target); + } + return target; +} + +int xtreemfs_repair_objectRequest::ByteSize() const { + int total_size = 0; + + if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) { + // required .xtreemfs.pbrpc.FileCredentials file_credentials = 1; + if (has_file_credentials()) { + total_size += 1 + + ::google::protobuf::internal::WireFormatLite::MessageSizeNoVirtual( + this->file_credentials()); + } + + // required string file_id = 2; + if (has_file_id()) { + total_size += 1 + + ::google::protobuf::internal::WireFormatLite::StringSize( + this->file_id()); + } + + // required fixed64 object_number = 3; + if (has_object_number()) { + total_size += 1 + 8; + } + + // required fixed64 object_version = 4; + if (has_object_version()) { + total_size += 1 + 8; + } + + } + if (!unknown_fields().empty()) { + total_size += + ::google::protobuf::internal::WireFormat::ComputeUnknownFieldsSize( + unknown_fields()); + } + GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN(); + _cached_size_ = total_size; + GOOGLE_SAFE_CONCURRENT_WRITES_END(); + return total_size; +} + +void xtreemfs_repair_objectRequest::MergeFrom(const ::google::protobuf::Message& from) { + GOOGLE_CHECK_NE(&from, this); + const xtreemfs_repair_objectRequest* source = + ::google::protobuf::internal::dynamic_cast_if_available( + &from); + if (source == NULL) { + ::google::protobuf::internal::ReflectionOps::Merge(from, this); + } else { + MergeFrom(*source); + } +} + +void xtreemfs_repair_objectRequest::MergeFrom(const xtreemfs_repair_objectRequest& from) { + GOOGLE_CHECK_NE(&from, this); + if (from._has_bits_[0 / 32] & (0xffu << (0 % 32))) { + if (from.has_file_credentials()) { + mutable_file_credentials()->::xtreemfs::pbrpc::FileCredentials::MergeFrom(from.file_credentials()); + } + if (from.has_file_id()) { + set_file_id(from.file_id()); + } + if (from.has_object_number()) { + set_object_number(from.object_number()); + } + if (from.has_object_version()) { + set_object_version(from.object_version()); + } + } + mutable_unknown_fields()->MergeFrom(from.unknown_fields()); +} + +void xtreemfs_repair_objectRequest::CopyFrom(const ::google::protobuf::Message& from) { + if (&from == this) return; + Clear(); + MergeFrom(from); +} + +void xtreemfs_repair_objectRequest::CopyFrom(const xtreemfs_repair_objectRequest& from) { + if (&from == this) return; + Clear(); + MergeFrom(from); +} + +bool xtreemfs_repair_objectRequest::IsInitialized() const { + if ((_has_bits_[0] & 0x0000000f) != 0x0000000f) return false; + + if (has_file_credentials()) { + if (!this->file_credentials().IsInitialized()) return false; + } + return true; +} + +void xtreemfs_repair_objectRequest::Swap(xtreemfs_repair_objectRequest* other) { + if (other != this) { + std::swap(file_credentials_, other->file_credentials_); + std::swap(file_id_, other->file_id_); + std::swap(object_number_, other->object_number_); + std::swap(object_version_, other->object_version_); + std::swap(_has_bits_[0], other->_has_bits_[0]); + _unknown_fields_.Swap(&other->_unknown_fields_); + std::swap(_cached_size_, other->_cached_size_); + } +} + +::google::protobuf::Metadata xtreemfs_repair_objectRequest::GetMetadata() const { + protobuf_AssignDescriptorsOnce(); + ::google::protobuf::Metadata metadata; + metadata.descriptor = xtreemfs_repair_objectRequest_descriptor_; + metadata.reflection = xtreemfs_repair_objectRequest_reflection_; + return metadata; +} + + +// =================================================================== + #ifndef _MSC_VER const int xtreemfs_rwr_flease_msgRequest::kSenderHostnameFieldNumber; const int xtreemfs_rwr_flease_msgRequest::kSenderPortFieldNumber; @@ -7936,7 +8336,7 @@ xtreemfs_rwr_flease_msgRequest::xtreemfs_rwr_flease_msgRequest(const xtreemfs_rw void xtreemfs_rwr_flease_msgRequest::SharedCtor() { _cached_size_ = 0; - sender_hostname_ = const_cast< ::std::string*>(&_default_sender_hostname_); + sender_hostname_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); sender_port_ = 0u; ::memset(_has_bits_, 0, sizeof(_has_bits_)); } @@ -7946,7 +8346,7 @@ xtreemfs_rwr_flease_msgRequest::~xtreemfs_rwr_flease_msgRequest() { } void xtreemfs_rwr_flease_msgRequest::SharedDtor() { - if (sender_hostname_ != &_default_sender_hostname_) { + if (sender_hostname_ != &::google::protobuf::internal::kEmptyString) { delete sender_hostname_; } if (this != default_instance_) { @@ -7964,7 +8364,8 @@ const ::google::protobuf::Descriptor* xtreemfs_rwr_flease_msgRequest::descriptor } const xtreemfs_rwr_flease_msgRequest& xtreemfs_rwr_flease_msgRequest::default_instance() { - if (default_instance_ == NULL) protobuf_AddDesc_xtreemfs_2fOSD_2eproto(); return *default_instance_; + if (default_instance_ == NULL) protobuf_AddDesc_xtreemfs_2fOSD_2eproto(); + return *default_instance_; } xtreemfs_rwr_flease_msgRequest* xtreemfs_rwr_flease_msgRequest::default_instance_ = NULL; @@ -7975,8 +8376,8 @@ xtreemfs_rwr_flease_msgRequest* xtreemfs_rwr_flease_msgRequest::New() const { void xtreemfs_rwr_flease_msgRequest::Clear() { if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) { - if (_has_bit(0)) { - if (sender_hostname_ != &_default_sender_hostname_) { + if (has_sender_hostname()) { + if (sender_hostname_ != &::google::protobuf::internal::kEmptyString) { sender_hostname_->clear(); } } @@ -8007,7 +8408,7 @@ bool xtreemfs_rwr_flease_msgRequest::MergePartialFromCodedStream( if (input->ExpectTag(21)) goto parse_sender_port; break; } - + // required fixed32 sender_port = 2; case 2: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -8016,14 +8417,14 @@ bool xtreemfs_rwr_flease_msgRequest::MergePartialFromCodedStream( DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive< ::google::protobuf::uint32, ::google::protobuf::internal::WireFormatLite::TYPE_FIXED32>( input, &sender_port_))); - _set_bit(1); + set_has_sender_port(); } else { goto handle_uninterpreted; } if (input->ExpectAtEnd()) return true; break; } - + default: { handle_uninterpreted: if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -8043,19 +8444,19 @@ bool xtreemfs_rwr_flease_msgRequest::MergePartialFromCodedStream( void xtreemfs_rwr_flease_msgRequest::SerializeWithCachedSizes( ::google::protobuf::io::CodedOutputStream* output) const { // required string sender_hostname = 1; - if (_has_bit(0)) { + if (has_sender_hostname()) { ::google::protobuf::internal::WireFormat::VerifyUTF8String( this->sender_hostname().data(), this->sender_hostname().length(), ::google::protobuf::internal::WireFormat::SERIALIZE); ::google::protobuf::internal::WireFormatLite::WriteString( 1, this->sender_hostname(), output); } - + // required fixed32 sender_port = 2; - if (_has_bit(1)) { + if (has_sender_port()) { ::google::protobuf::internal::WireFormatLite::WriteFixed32(2, this->sender_port(), output); } - + if (!unknown_fields().empty()) { ::google::protobuf::internal::WireFormat::SerializeUnknownFields( unknown_fields(), output); @@ -8065,7 +8466,7 @@ void xtreemfs_rwr_flease_msgRequest::SerializeWithCachedSizes( ::google::protobuf::uint8* xtreemfs_rwr_flease_msgRequest::SerializeWithCachedSizesToArray( ::google::protobuf::uint8* target) const { // required string sender_hostname = 1; - if (_has_bit(0)) { + if (has_sender_hostname()) { ::google::protobuf::internal::WireFormat::VerifyUTF8String( this->sender_hostname().data(), this->sender_hostname().length(), ::google::protobuf::internal::WireFormat::SERIALIZE); @@ -8073,12 +8474,12 @@ void xtreemfs_rwr_flease_msgRequest::SerializeWithCachedSizes( ::google::protobuf::internal::WireFormatLite::WriteStringToArray( 1, this->sender_hostname(), target); } - + // required fixed32 sender_port = 2; - if (_has_bit(1)) { + if (has_sender_port()) { target = ::google::protobuf::internal::WireFormatLite::WriteFixed32ToArray(2, this->sender_port(), target); } - + if (!unknown_fields().empty()) { target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray( unknown_fields(), target); @@ -8088,7 +8489,7 @@ void xtreemfs_rwr_flease_msgRequest::SerializeWithCachedSizes( int xtreemfs_rwr_flease_msgRequest::ByteSize() const { int total_size = 0; - + if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) { // required string sender_hostname = 1; if (has_sender_hostname()) { @@ -8096,12 +8497,12 @@ int xtreemfs_rwr_flease_msgRequest::ByteSize() const { ::google::protobuf::internal::WireFormatLite::StringSize( this->sender_hostname()); } - + // required fixed32 sender_port = 2; if (has_sender_port()) { total_size += 1 + 4; } - + } if (!unknown_fields().empty()) { total_size += @@ -8129,10 +8530,10 @@ void xtreemfs_rwr_flease_msgRequest::MergeFrom(const ::google::protobuf::Message void xtreemfs_rwr_flease_msgRequest::MergeFrom(const xtreemfs_rwr_flease_msgRequest& from) { GOOGLE_CHECK_NE(&from, this); if (from._has_bits_[0 / 32] & (0xffu << (0 % 32))) { - if (from._has_bit(0)) { + if (from.has_sender_hostname()) { set_sender_hostname(from.sender_hostname()); } - if (from._has_bit(1)) { + if (from.has_sender_port()) { set_sender_port(from.sender_port()); } } @@ -8153,7 +8554,7 @@ void xtreemfs_rwr_flease_msgRequest::CopyFrom(const xtreemfs_rwr_flease_msgReque bool xtreemfs_rwr_flease_msgRequest::IsInitialized() const { if ((_has_bits_[0] & 0x00000003) != 0x00000003) return false; - + return true; } @@ -8178,7 +8579,6 @@ void xtreemfs_rwr_flease_msgRequest::Swap(xtreemfs_rwr_flease_msgRequest* other) // =================================================================== -const ::std::string xtreemfs_rwr_set_primary_epochRequest::_default_file_id_; #ifndef _MSC_VER const int xtreemfs_rwr_set_primary_epochRequest::kFileCredentialsFieldNumber; const int xtreemfs_rwr_set_primary_epochRequest::kFileIdFieldNumber; @@ -8203,7 +8603,7 @@ xtreemfs_rwr_set_primary_epochRequest::xtreemfs_rwr_set_primary_epochRequest(con void xtreemfs_rwr_set_primary_epochRequest::SharedCtor() { _cached_size_ = 0; file_credentials_ = NULL; - file_id_ = const_cast< ::std::string*>(&_default_file_id_); + file_id_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); primary_epoch_ = 0u; ::memset(_has_bits_, 0, sizeof(_has_bits_)); } @@ -8213,7 +8613,7 @@ xtreemfs_rwr_set_primary_epochRequest::~xtreemfs_rwr_set_primary_epochRequest() } void xtreemfs_rwr_set_primary_epochRequest::SharedDtor() { - if (file_id_ != &_default_file_id_) { + if (file_id_ != &::google::protobuf::internal::kEmptyString) { delete file_id_; } if (this != default_instance_) { @@ -8232,7 +8632,8 @@ const ::google::protobuf::Descriptor* xtreemfs_rwr_set_primary_epochRequest::des } const xtreemfs_rwr_set_primary_epochRequest& xtreemfs_rwr_set_primary_epochRequest::default_instance() { - if (default_instance_ == NULL) protobuf_AddDesc_xtreemfs_2fOSD_2eproto(); return *default_instance_; + if (default_instance_ == NULL) protobuf_AddDesc_xtreemfs_2fOSD_2eproto(); + return *default_instance_; } xtreemfs_rwr_set_primary_epochRequest* xtreemfs_rwr_set_primary_epochRequest::default_instance_ = NULL; @@ -8243,11 +8644,11 @@ xtreemfs_rwr_set_primary_epochRequest* xtreemfs_rwr_set_primary_epochRequest::Ne void xtreemfs_rwr_set_primary_epochRequest::Clear() { if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) { - if (_has_bit(0)) { + if (has_file_credentials()) { if (file_credentials_ != NULL) file_credentials_->::xtreemfs::pbrpc::FileCredentials::Clear(); } - if (_has_bit(1)) { - if (file_id_ != &_default_file_id_) { + if (has_file_id()) { + if (file_id_ != &::google::protobuf::internal::kEmptyString) { file_id_->clear(); } } @@ -8275,7 +8676,7 @@ bool xtreemfs_rwr_set_primary_epochRequest::MergePartialFromCodedStream( if (input->ExpectTag(18)) goto parse_file_id; break; } - + // required string file_id = 2; case 2: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -8292,7 +8693,7 @@ bool xtreemfs_rwr_set_primary_epochRequest::MergePartialFromCodedStream( if (input->ExpectTag(29)) goto parse_primary_epoch; break; } - + // required fixed32 primary_epoch = 3; case 3: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -8301,14 +8702,14 @@ bool xtreemfs_rwr_set_primary_epochRequest::MergePartialFromCodedStream( DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive< ::google::protobuf::uint32, ::google::protobuf::internal::WireFormatLite::TYPE_FIXED32>( input, &primary_epoch_))); - _set_bit(2); + set_has_primary_epoch(); } else { goto handle_uninterpreted; } if (input->ExpectAtEnd()) return true; break; } - + default: { handle_uninterpreted: if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -8328,25 +8729,25 @@ bool xtreemfs_rwr_set_primary_epochRequest::MergePartialFromCodedStream( void xtreemfs_rwr_set_primary_epochRequest::SerializeWithCachedSizes( ::google::protobuf::io::CodedOutputStream* output) const { // required .xtreemfs.pbrpc.FileCredentials file_credentials = 1; - if (_has_bit(0)) { + if (has_file_credentials()) { ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray( 1, this->file_credentials(), output); } - + // required string file_id = 2; - if (_has_bit(1)) { + if (has_file_id()) { ::google::protobuf::internal::WireFormat::VerifyUTF8String( this->file_id().data(), this->file_id().length(), ::google::protobuf::internal::WireFormat::SERIALIZE); ::google::protobuf::internal::WireFormatLite::WriteString( 2, this->file_id(), output); } - + // required fixed32 primary_epoch = 3; - if (_has_bit(2)) { + if (has_primary_epoch()) { ::google::protobuf::internal::WireFormatLite::WriteFixed32(3, this->primary_epoch(), output); } - + if (!unknown_fields().empty()) { ::google::protobuf::internal::WireFormat::SerializeUnknownFields( unknown_fields(), output); @@ -8356,14 +8757,14 @@ void xtreemfs_rwr_set_primary_epochRequest::SerializeWithCachedSizes( ::google::protobuf::uint8* xtreemfs_rwr_set_primary_epochRequest::SerializeWithCachedSizesToArray( ::google::protobuf::uint8* target) const { // required .xtreemfs.pbrpc.FileCredentials file_credentials = 1; - if (_has_bit(0)) { + if (has_file_credentials()) { target = ::google::protobuf::internal::WireFormatLite:: WriteMessageNoVirtualToArray( 1, this->file_credentials(), target); } - + // required string file_id = 2; - if (_has_bit(1)) { + if (has_file_id()) { ::google::protobuf::internal::WireFormat::VerifyUTF8String( this->file_id().data(), this->file_id().length(), ::google::protobuf::internal::WireFormat::SERIALIZE); @@ -8371,12 +8772,12 @@ void xtreemfs_rwr_set_primary_epochRequest::SerializeWithCachedSizes( ::google::protobuf::internal::WireFormatLite::WriteStringToArray( 2, this->file_id(), target); } - + // required fixed32 primary_epoch = 3; - if (_has_bit(2)) { + if (has_primary_epoch()) { target = ::google::protobuf::internal::WireFormatLite::WriteFixed32ToArray(3, this->primary_epoch(), target); } - + if (!unknown_fields().empty()) { target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray( unknown_fields(), target); @@ -8386,7 +8787,7 @@ void xtreemfs_rwr_set_primary_epochRequest::SerializeWithCachedSizes( int xtreemfs_rwr_set_primary_epochRequest::ByteSize() const { int total_size = 0; - + if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) { // required .xtreemfs.pbrpc.FileCredentials file_credentials = 1; if (has_file_credentials()) { @@ -8394,19 +8795,19 @@ int xtreemfs_rwr_set_primary_epochRequest::ByteSize() const { ::google::protobuf::internal::WireFormatLite::MessageSizeNoVirtual( this->file_credentials()); } - + // required string file_id = 2; if (has_file_id()) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::StringSize( this->file_id()); } - + // required fixed32 primary_epoch = 3; if (has_primary_epoch()) { total_size += 1 + 4; } - + } if (!unknown_fields().empty()) { total_size += @@ -8434,13 +8835,13 @@ void xtreemfs_rwr_set_primary_epochRequest::MergeFrom(const ::google::protobuf:: void xtreemfs_rwr_set_primary_epochRequest::MergeFrom(const xtreemfs_rwr_set_primary_epochRequest& from) { GOOGLE_CHECK_NE(&from, this); if (from._has_bits_[0 / 32] & (0xffu << (0 % 32))) { - if (from._has_bit(0)) { + if (from.has_file_credentials()) { mutable_file_credentials()->::xtreemfs::pbrpc::FileCredentials::MergeFrom(from.file_credentials()); } - if (from._has_bit(1)) { + if (from.has_file_id()) { set_file_id(from.file_id()); } - if (from._has_bit(2)) { + if (from.has_primary_epoch()) { set_primary_epoch(from.primary_epoch()); } } @@ -8461,7 +8862,7 @@ void xtreemfs_rwr_set_primary_epochRequest::CopyFrom(const xtreemfs_rwr_set_prim bool xtreemfs_rwr_set_primary_epochRequest::IsInitialized() const { if ((_has_bits_[0] & 0x00000007) != 0x00000007) return false; - + if (has_file_credentials()) { if (!this->file_credentials().IsInitialized()) return false; } @@ -8490,7 +8891,6 @@ void xtreemfs_rwr_set_primary_epochRequest::Swap(xtreemfs_rwr_set_primary_epochR // =================================================================== -const ::std::string xtreemfs_rwr_statusRequest::_default_file_id_; #ifndef _MSC_VER const int xtreemfs_rwr_statusRequest::kFileCredentialsFieldNumber; const int xtreemfs_rwr_statusRequest::kFileIdFieldNumber; @@ -8515,7 +8915,7 @@ xtreemfs_rwr_statusRequest::xtreemfs_rwr_statusRequest(const xtreemfs_rwr_status void xtreemfs_rwr_statusRequest::SharedCtor() { _cached_size_ = 0; file_credentials_ = NULL; - file_id_ = const_cast< ::std::string*>(&_default_file_id_); + file_id_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); max_local_obj_version_ = GOOGLE_ULONGLONG(0); ::memset(_has_bits_, 0, sizeof(_has_bits_)); } @@ -8525,7 +8925,7 @@ xtreemfs_rwr_statusRequest::~xtreemfs_rwr_statusRequest() { } void xtreemfs_rwr_statusRequest::SharedDtor() { - if (file_id_ != &_default_file_id_) { + if (file_id_ != &::google::protobuf::internal::kEmptyString) { delete file_id_; } if (this != default_instance_) { @@ -8544,7 +8944,8 @@ const ::google::protobuf::Descriptor* xtreemfs_rwr_statusRequest::descriptor() { } const xtreemfs_rwr_statusRequest& xtreemfs_rwr_statusRequest::default_instance() { - if (default_instance_ == NULL) protobuf_AddDesc_xtreemfs_2fOSD_2eproto(); return *default_instance_; + if (default_instance_ == NULL) protobuf_AddDesc_xtreemfs_2fOSD_2eproto(); + return *default_instance_; } xtreemfs_rwr_statusRequest* xtreemfs_rwr_statusRequest::default_instance_ = NULL; @@ -8555,11 +8956,11 @@ xtreemfs_rwr_statusRequest* xtreemfs_rwr_statusRequest::New() const { void xtreemfs_rwr_statusRequest::Clear() { if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) { - if (_has_bit(0)) { + if (has_file_credentials()) { if (file_credentials_ != NULL) file_credentials_->::xtreemfs::pbrpc::FileCredentials::Clear(); } - if (_has_bit(1)) { - if (file_id_ != &_default_file_id_) { + if (has_file_id()) { + if (file_id_ != &::google::protobuf::internal::kEmptyString) { file_id_->clear(); } } @@ -8587,7 +8988,7 @@ bool xtreemfs_rwr_statusRequest::MergePartialFromCodedStream( if (input->ExpectTag(18)) goto parse_file_id; break; } - + // required string file_id = 2; case 2: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -8604,7 +9005,7 @@ bool xtreemfs_rwr_statusRequest::MergePartialFromCodedStream( if (input->ExpectTag(25)) goto parse_max_local_obj_version; break; } - + // required fixed64 max_local_obj_version = 3; case 3: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -8613,14 +9014,14 @@ bool xtreemfs_rwr_statusRequest::MergePartialFromCodedStream( DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive< ::google::protobuf::uint64, ::google::protobuf::internal::WireFormatLite::TYPE_FIXED64>( input, &max_local_obj_version_))); - _set_bit(2); + set_has_max_local_obj_version(); } else { goto handle_uninterpreted; } if (input->ExpectAtEnd()) return true; break; } - + default: { handle_uninterpreted: if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -8640,25 +9041,25 @@ bool xtreemfs_rwr_statusRequest::MergePartialFromCodedStream( void xtreemfs_rwr_statusRequest::SerializeWithCachedSizes( ::google::protobuf::io::CodedOutputStream* output) const { // required .xtreemfs.pbrpc.FileCredentials file_credentials = 1; - if (_has_bit(0)) { + if (has_file_credentials()) { ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray( 1, this->file_credentials(), output); } - + // required string file_id = 2; - if (_has_bit(1)) { + if (has_file_id()) { ::google::protobuf::internal::WireFormat::VerifyUTF8String( this->file_id().data(), this->file_id().length(), ::google::protobuf::internal::WireFormat::SERIALIZE); ::google::protobuf::internal::WireFormatLite::WriteString( 2, this->file_id(), output); } - + // required fixed64 max_local_obj_version = 3; - if (_has_bit(2)) { + if (has_max_local_obj_version()) { ::google::protobuf::internal::WireFormatLite::WriteFixed64(3, this->max_local_obj_version(), output); } - + if (!unknown_fields().empty()) { ::google::protobuf::internal::WireFormat::SerializeUnknownFields( unknown_fields(), output); @@ -8668,14 +9069,14 @@ void xtreemfs_rwr_statusRequest::SerializeWithCachedSizes( ::google::protobuf::uint8* xtreemfs_rwr_statusRequest::SerializeWithCachedSizesToArray( ::google::protobuf::uint8* target) const { // required .xtreemfs.pbrpc.FileCredentials file_credentials = 1; - if (_has_bit(0)) { + if (has_file_credentials()) { target = ::google::protobuf::internal::WireFormatLite:: WriteMessageNoVirtualToArray( 1, this->file_credentials(), target); } - + // required string file_id = 2; - if (_has_bit(1)) { + if (has_file_id()) { ::google::protobuf::internal::WireFormat::VerifyUTF8String( this->file_id().data(), this->file_id().length(), ::google::protobuf::internal::WireFormat::SERIALIZE); @@ -8683,12 +9084,12 @@ void xtreemfs_rwr_statusRequest::SerializeWithCachedSizes( ::google::protobuf::internal::WireFormatLite::WriteStringToArray( 2, this->file_id(), target); } - + // required fixed64 max_local_obj_version = 3; - if (_has_bit(2)) { + if (has_max_local_obj_version()) { target = ::google::protobuf::internal::WireFormatLite::WriteFixed64ToArray(3, this->max_local_obj_version(), target); } - + if (!unknown_fields().empty()) { target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray( unknown_fields(), target); @@ -8698,7 +9099,7 @@ void xtreemfs_rwr_statusRequest::SerializeWithCachedSizes( int xtreemfs_rwr_statusRequest::ByteSize() const { int total_size = 0; - + if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) { // required .xtreemfs.pbrpc.FileCredentials file_credentials = 1; if (has_file_credentials()) { @@ -8706,19 +9107,19 @@ int xtreemfs_rwr_statusRequest::ByteSize() const { ::google::protobuf::internal::WireFormatLite::MessageSizeNoVirtual( this->file_credentials()); } - + // required string file_id = 2; if (has_file_id()) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::StringSize( this->file_id()); } - + // required fixed64 max_local_obj_version = 3; if (has_max_local_obj_version()) { total_size += 1 + 8; } - + } if (!unknown_fields().empty()) { total_size += @@ -8746,13 +9147,13 @@ void xtreemfs_rwr_statusRequest::MergeFrom(const ::google::protobuf::Message& fr void xtreemfs_rwr_statusRequest::MergeFrom(const xtreemfs_rwr_statusRequest& from) { GOOGLE_CHECK_NE(&from, this); if (from._has_bits_[0 / 32] & (0xffu << (0 % 32))) { - if (from._has_bit(0)) { + if (from.has_file_credentials()) { mutable_file_credentials()->::xtreemfs::pbrpc::FileCredentials::MergeFrom(from.file_credentials()); } - if (from._has_bit(1)) { + if (from.has_file_id()) { set_file_id(from.file_id()); } - if (from._has_bit(2)) { + if (from.has_max_local_obj_version()) { set_max_local_obj_version(from.max_local_obj_version()); } } @@ -8773,7 +9174,7 @@ void xtreemfs_rwr_statusRequest::CopyFrom(const xtreemfs_rwr_statusRequest& from bool xtreemfs_rwr_statusRequest::IsInitialized() const { if ((_has_bits_[0] & 0x00000007) != 0x00000007) return false; - + if (has_file_credentials()) { if (!this->file_credentials().IsInitialized()) return false; } @@ -8802,7 +9203,6 @@ void xtreemfs_rwr_statusRequest::Swap(xtreemfs_rwr_statusRequest* other) { // =================================================================== -const ::std::string xtreemfs_rwr_truncateRequest::_default_file_id_; #ifndef _MSC_VER const int xtreemfs_rwr_truncateRequest::kFileCredentialsFieldNumber; const int xtreemfs_rwr_truncateRequest::kFileIdFieldNumber; @@ -8828,7 +9228,7 @@ xtreemfs_rwr_truncateRequest::xtreemfs_rwr_truncateRequest(const xtreemfs_rwr_tr void xtreemfs_rwr_truncateRequest::SharedCtor() { _cached_size_ = 0; file_credentials_ = NULL; - file_id_ = const_cast< ::std::string*>(&_default_file_id_); + file_id_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); new_file_size_ = GOOGLE_ULONGLONG(0); object_version_ = GOOGLE_ULONGLONG(0); ::memset(_has_bits_, 0, sizeof(_has_bits_)); @@ -8839,7 +9239,7 @@ xtreemfs_rwr_truncateRequest::~xtreemfs_rwr_truncateRequest() { } void xtreemfs_rwr_truncateRequest::SharedDtor() { - if (file_id_ != &_default_file_id_) { + if (file_id_ != &::google::protobuf::internal::kEmptyString) { delete file_id_; } if (this != default_instance_) { @@ -8858,7 +9258,8 @@ const ::google::protobuf::Descriptor* xtreemfs_rwr_truncateRequest::descriptor() } const xtreemfs_rwr_truncateRequest& xtreemfs_rwr_truncateRequest::default_instance() { - if (default_instance_ == NULL) protobuf_AddDesc_xtreemfs_2fOSD_2eproto(); return *default_instance_; + if (default_instance_ == NULL) protobuf_AddDesc_xtreemfs_2fOSD_2eproto(); + return *default_instance_; } xtreemfs_rwr_truncateRequest* xtreemfs_rwr_truncateRequest::default_instance_ = NULL; @@ -8869,11 +9270,11 @@ xtreemfs_rwr_truncateRequest* xtreemfs_rwr_truncateRequest::New() const { void xtreemfs_rwr_truncateRequest::Clear() { if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) { - if (_has_bit(0)) { + if (has_file_credentials()) { if (file_credentials_ != NULL) file_credentials_->::xtreemfs::pbrpc::FileCredentials::Clear(); } - if (_has_bit(1)) { - if (file_id_ != &_default_file_id_) { + if (has_file_id()) { + if (file_id_ != &::google::protobuf::internal::kEmptyString) { file_id_->clear(); } } @@ -8902,7 +9303,7 @@ bool xtreemfs_rwr_truncateRequest::MergePartialFromCodedStream( if (input->ExpectTag(18)) goto parse_file_id; break; } - + // required string file_id = 2; case 2: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -8919,7 +9320,7 @@ bool xtreemfs_rwr_truncateRequest::MergePartialFromCodedStream( if (input->ExpectTag(25)) goto parse_new_file_size; break; } - + // required fixed64 new_file_size = 3; case 3: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -8928,14 +9329,14 @@ bool xtreemfs_rwr_truncateRequest::MergePartialFromCodedStream( DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive< ::google::protobuf::uint64, ::google::protobuf::internal::WireFormatLite::TYPE_FIXED64>( input, &new_file_size_))); - _set_bit(2); + set_has_new_file_size(); } else { goto handle_uninterpreted; } if (input->ExpectTag(33)) goto parse_object_version; break; } - + // required fixed64 object_version = 4; case 4: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -8944,14 +9345,14 @@ bool xtreemfs_rwr_truncateRequest::MergePartialFromCodedStream( DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive< ::google::protobuf::uint64, ::google::protobuf::internal::WireFormatLite::TYPE_FIXED64>( input, &object_version_))); - _set_bit(3); + set_has_object_version(); } else { goto handle_uninterpreted; } if (input->ExpectAtEnd()) return true; break; } - + default: { handle_uninterpreted: if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -8971,30 +9372,30 @@ bool xtreemfs_rwr_truncateRequest::MergePartialFromCodedStream( void xtreemfs_rwr_truncateRequest::SerializeWithCachedSizes( ::google::protobuf::io::CodedOutputStream* output) const { // required .xtreemfs.pbrpc.FileCredentials file_credentials = 1; - if (_has_bit(0)) { + if (has_file_credentials()) { ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray( 1, this->file_credentials(), output); } - + // required string file_id = 2; - if (_has_bit(1)) { + if (has_file_id()) { ::google::protobuf::internal::WireFormat::VerifyUTF8String( this->file_id().data(), this->file_id().length(), ::google::protobuf::internal::WireFormat::SERIALIZE); ::google::protobuf::internal::WireFormatLite::WriteString( 2, this->file_id(), output); } - + // required fixed64 new_file_size = 3; - if (_has_bit(2)) { + if (has_new_file_size()) { ::google::protobuf::internal::WireFormatLite::WriteFixed64(3, this->new_file_size(), output); } - + // required fixed64 object_version = 4; - if (_has_bit(3)) { + if (has_object_version()) { ::google::protobuf::internal::WireFormatLite::WriteFixed64(4, this->object_version(), output); } - + if (!unknown_fields().empty()) { ::google::protobuf::internal::WireFormat::SerializeUnknownFields( unknown_fields(), output); @@ -9004,14 +9405,14 @@ void xtreemfs_rwr_truncateRequest::SerializeWithCachedSizes( ::google::protobuf::uint8* xtreemfs_rwr_truncateRequest::SerializeWithCachedSizesToArray( ::google::protobuf::uint8* target) const { // required .xtreemfs.pbrpc.FileCredentials file_credentials = 1; - if (_has_bit(0)) { + if (has_file_credentials()) { target = ::google::protobuf::internal::WireFormatLite:: WriteMessageNoVirtualToArray( 1, this->file_credentials(), target); } - + // required string file_id = 2; - if (_has_bit(1)) { + if (has_file_id()) { ::google::protobuf::internal::WireFormat::VerifyUTF8String( this->file_id().data(), this->file_id().length(), ::google::protobuf::internal::WireFormat::SERIALIZE); @@ -9019,17 +9420,17 @@ void xtreemfs_rwr_truncateRequest::SerializeWithCachedSizes( ::google::protobuf::internal::WireFormatLite::WriteStringToArray( 2, this->file_id(), target); } - + // required fixed64 new_file_size = 3; - if (_has_bit(2)) { + if (has_new_file_size()) { target = ::google::protobuf::internal::WireFormatLite::WriteFixed64ToArray(3, this->new_file_size(), target); } - + // required fixed64 object_version = 4; - if (_has_bit(3)) { + if (has_object_version()) { target = ::google::protobuf::internal::WireFormatLite::WriteFixed64ToArray(4, this->object_version(), target); } - + if (!unknown_fields().empty()) { target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray( unknown_fields(), target); @@ -9039,7 +9440,7 @@ void xtreemfs_rwr_truncateRequest::SerializeWithCachedSizes( int xtreemfs_rwr_truncateRequest::ByteSize() const { int total_size = 0; - + if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) { // required .xtreemfs.pbrpc.FileCredentials file_credentials = 1; if (has_file_credentials()) { @@ -9047,24 +9448,24 @@ int xtreemfs_rwr_truncateRequest::ByteSize() const { ::google::protobuf::internal::WireFormatLite::MessageSizeNoVirtual( this->file_credentials()); } - + // required string file_id = 2; if (has_file_id()) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::StringSize( this->file_id()); } - + // required fixed64 new_file_size = 3; if (has_new_file_size()) { total_size += 1 + 8; } - + // required fixed64 object_version = 4; if (has_object_version()) { total_size += 1 + 8; } - + } if (!unknown_fields().empty()) { total_size += @@ -9092,16 +9493,16 @@ void xtreemfs_rwr_truncateRequest::MergeFrom(const ::google::protobuf::Message& void xtreemfs_rwr_truncateRequest::MergeFrom(const xtreemfs_rwr_truncateRequest& from) { GOOGLE_CHECK_NE(&from, this); if (from._has_bits_[0 / 32] & (0xffu << (0 % 32))) { - if (from._has_bit(0)) { + if (from.has_file_credentials()) { mutable_file_credentials()->::xtreemfs::pbrpc::FileCredentials::MergeFrom(from.file_credentials()); } - if (from._has_bit(1)) { + if (from.has_file_id()) { set_file_id(from.file_id()); } - if (from._has_bit(2)) { + if (from.has_new_file_size()) { set_new_file_size(from.new_file_size()); } - if (from._has_bit(3)) { + if (from.has_object_version()) { set_object_version(from.object_version()); } } @@ -9122,7 +9523,7 @@ void xtreemfs_rwr_truncateRequest::CopyFrom(const xtreemfs_rwr_truncateRequest& bool xtreemfs_rwr_truncateRequest::IsInitialized() const { if ((_has_bits_[0] & 0x0000000f) != 0x0000000f) return false; - + if (has_file_credentials()) { if (!this->file_credentials().IsInitialized()) return false; } @@ -9152,7 +9553,6 @@ void xtreemfs_rwr_truncateRequest::Swap(xtreemfs_rwr_truncateRequest* other) { // =================================================================== -const ::std::string xtreemfs_rwr_updateRequest::_default_file_id_; #ifndef _MSC_VER const int xtreemfs_rwr_updateRequest::kFileCredentialsFieldNumber; const int xtreemfs_rwr_updateRequest::kFileIdFieldNumber; @@ -9182,7 +9582,7 @@ xtreemfs_rwr_updateRequest::xtreemfs_rwr_updateRequest(const xtreemfs_rwr_update void xtreemfs_rwr_updateRequest::SharedCtor() { _cached_size_ = 0; file_credentials_ = NULL; - file_id_ = const_cast< ::std::string*>(&_default_file_id_); + file_id_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); new_file_size_ = GOOGLE_ULONGLONG(0); object_number_ = GOOGLE_ULONGLONG(0); object_version_ = GOOGLE_ULONGLONG(0); @@ -9196,7 +9596,7 @@ xtreemfs_rwr_updateRequest::~xtreemfs_rwr_updateRequest() { } void xtreemfs_rwr_updateRequest::SharedDtor() { - if (file_id_ != &_default_file_id_) { + if (file_id_ != &::google::protobuf::internal::kEmptyString) { delete file_id_; } if (this != default_instance_) { @@ -9216,7 +9616,8 @@ const ::google::protobuf::Descriptor* xtreemfs_rwr_updateRequest::descriptor() { } const xtreemfs_rwr_updateRequest& xtreemfs_rwr_updateRequest::default_instance() { - if (default_instance_ == NULL) protobuf_AddDesc_xtreemfs_2fOSD_2eproto(); return *default_instance_; + if (default_instance_ == NULL) protobuf_AddDesc_xtreemfs_2fOSD_2eproto(); + return *default_instance_; } xtreemfs_rwr_updateRequest* xtreemfs_rwr_updateRequest::default_instance_ = NULL; @@ -9227,11 +9628,11 @@ xtreemfs_rwr_updateRequest* xtreemfs_rwr_updateRequest::New() const { void xtreemfs_rwr_updateRequest::Clear() { if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) { - if (_has_bit(0)) { + if (has_file_credentials()) { if (file_credentials_ != NULL) file_credentials_->::xtreemfs::pbrpc::FileCredentials::Clear(); } - if (_has_bit(1)) { - if (file_id_ != &_default_file_id_) { + if (has_file_id()) { + if (file_id_ != &::google::protobuf::internal::kEmptyString) { file_id_->clear(); } } @@ -9239,7 +9640,7 @@ void xtreemfs_rwr_updateRequest::Clear() { object_number_ = GOOGLE_ULONGLONG(0); object_version_ = GOOGLE_ULONGLONG(0); offset_ = 0u; - if (_has_bit(6)) { + if (has_obj()) { if (obj_ != NULL) obj_->::xtreemfs::pbrpc::ObjectData::Clear(); } } @@ -9265,7 +9666,7 @@ bool xtreemfs_rwr_updateRequest::MergePartialFromCodedStream( if (input->ExpectTag(18)) goto parse_file_id; break; } - + // required string file_id = 2; case 2: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -9282,7 +9683,7 @@ bool xtreemfs_rwr_updateRequest::MergePartialFromCodedStream( if (input->ExpectTag(25)) goto parse_new_file_size; break; } - + // required fixed64 new_file_size = 3; case 3: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -9291,14 +9692,14 @@ bool xtreemfs_rwr_updateRequest::MergePartialFromCodedStream( DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive< ::google::protobuf::uint64, ::google::protobuf::internal::WireFormatLite::TYPE_FIXED64>( input, &new_file_size_))); - _set_bit(2); + set_has_new_file_size(); } else { goto handle_uninterpreted; } if (input->ExpectTag(33)) goto parse_object_version; break; } - + // required fixed64 object_version = 4; case 4: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -9307,14 +9708,14 @@ bool xtreemfs_rwr_updateRequest::MergePartialFromCodedStream( DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive< ::google::protobuf::uint64, ::google::protobuf::internal::WireFormatLite::TYPE_FIXED64>( input, &object_version_))); - _set_bit(4); + set_has_object_version(); } else { goto handle_uninterpreted; } if (input->ExpectTag(45)) goto parse_offset; break; } - + // required fixed32 offset = 5; case 5: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -9323,14 +9724,14 @@ bool xtreemfs_rwr_updateRequest::MergePartialFromCodedStream( DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive< ::google::protobuf::uint32, ::google::protobuf::internal::WireFormatLite::TYPE_FIXED32>( input, &offset_))); - _set_bit(5); + set_has_offset(); } else { goto handle_uninterpreted; } if (input->ExpectTag(50)) goto parse_obj; break; } - + // required .xtreemfs.pbrpc.ObjectData obj = 6; case 6: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -9344,7 +9745,7 @@ bool xtreemfs_rwr_updateRequest::MergePartialFromCodedStream( if (input->ExpectTag(57)) goto parse_object_number; break; } - + // required fixed64 object_number = 7; case 7: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -9353,14 +9754,14 @@ bool xtreemfs_rwr_updateRequest::MergePartialFromCodedStream( DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive< ::google::protobuf::uint64, ::google::protobuf::internal::WireFormatLite::TYPE_FIXED64>( input, &object_number_))); - _set_bit(3); + set_has_object_number(); } else { goto handle_uninterpreted; } if (input->ExpectAtEnd()) return true; break; } - + default: { handle_uninterpreted: if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -9380,46 +9781,46 @@ bool xtreemfs_rwr_updateRequest::MergePartialFromCodedStream( void xtreemfs_rwr_updateRequest::SerializeWithCachedSizes( ::google::protobuf::io::CodedOutputStream* output) const { // required .xtreemfs.pbrpc.FileCredentials file_credentials = 1; - if (_has_bit(0)) { + if (has_file_credentials()) { ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray( 1, this->file_credentials(), output); } - + // required string file_id = 2; - if (_has_bit(1)) { + if (has_file_id()) { ::google::protobuf::internal::WireFormat::VerifyUTF8String( this->file_id().data(), this->file_id().length(), ::google::protobuf::internal::WireFormat::SERIALIZE); ::google::protobuf::internal::WireFormatLite::WriteString( 2, this->file_id(), output); } - + // required fixed64 new_file_size = 3; - if (_has_bit(2)) { + if (has_new_file_size()) { ::google::protobuf::internal::WireFormatLite::WriteFixed64(3, this->new_file_size(), output); } - + // required fixed64 object_version = 4; - if (_has_bit(4)) { + if (has_object_version()) { ::google::protobuf::internal::WireFormatLite::WriteFixed64(4, this->object_version(), output); } - + // required fixed32 offset = 5; - if (_has_bit(5)) { + if (has_offset()) { ::google::protobuf::internal::WireFormatLite::WriteFixed32(5, this->offset(), output); } - + // required .xtreemfs.pbrpc.ObjectData obj = 6; - if (_has_bit(6)) { + if (has_obj()) { ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray( 6, this->obj(), output); } - + // required fixed64 object_number = 7; - if (_has_bit(3)) { + if (has_object_number()) { ::google::protobuf::internal::WireFormatLite::WriteFixed64(7, this->object_number(), output); } - + if (!unknown_fields().empty()) { ::google::protobuf::internal::WireFormat::SerializeUnknownFields( unknown_fields(), output); @@ -9429,14 +9830,14 @@ void xtreemfs_rwr_updateRequest::SerializeWithCachedSizes( ::google::protobuf::uint8* xtreemfs_rwr_updateRequest::SerializeWithCachedSizesToArray( ::google::protobuf::uint8* target) const { // required .xtreemfs.pbrpc.FileCredentials file_credentials = 1; - if (_has_bit(0)) { + if (has_file_credentials()) { target = ::google::protobuf::internal::WireFormatLite:: WriteMessageNoVirtualToArray( 1, this->file_credentials(), target); } - + // required string file_id = 2; - if (_has_bit(1)) { + if (has_file_id()) { ::google::protobuf::internal::WireFormat::VerifyUTF8String( this->file_id().data(), this->file_id().length(), ::google::protobuf::internal::WireFormat::SERIALIZE); @@ -9444,34 +9845,34 @@ void xtreemfs_rwr_updateRequest::SerializeWithCachedSizes( ::google::protobuf::internal::WireFormatLite::WriteStringToArray( 2, this->file_id(), target); } - + // required fixed64 new_file_size = 3; - if (_has_bit(2)) { + if (has_new_file_size()) { target = ::google::protobuf::internal::WireFormatLite::WriteFixed64ToArray(3, this->new_file_size(), target); } - + // required fixed64 object_version = 4; - if (_has_bit(4)) { + if (has_object_version()) { target = ::google::protobuf::internal::WireFormatLite::WriteFixed64ToArray(4, this->object_version(), target); } - + // required fixed32 offset = 5; - if (_has_bit(5)) { + if (has_offset()) { target = ::google::protobuf::internal::WireFormatLite::WriteFixed32ToArray(5, this->offset(), target); } - + // required .xtreemfs.pbrpc.ObjectData obj = 6; - if (_has_bit(6)) { + if (has_obj()) { target = ::google::protobuf::internal::WireFormatLite:: WriteMessageNoVirtualToArray( 6, this->obj(), target); } - + // required fixed64 object_number = 7; - if (_has_bit(3)) { + if (has_object_number()) { target = ::google::protobuf::internal::WireFormatLite::WriteFixed64ToArray(7, this->object_number(), target); } - + if (!unknown_fields().empty()) { target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray( unknown_fields(), target); @@ -9481,7 +9882,7 @@ void xtreemfs_rwr_updateRequest::SerializeWithCachedSizes( int xtreemfs_rwr_updateRequest::ByteSize() const { int total_size = 0; - + if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) { // required .xtreemfs.pbrpc.FileCredentials file_credentials = 1; if (has_file_credentials()) { @@ -9489,41 +9890,41 @@ int xtreemfs_rwr_updateRequest::ByteSize() const { ::google::protobuf::internal::WireFormatLite::MessageSizeNoVirtual( this->file_credentials()); } - + // required string file_id = 2; if (has_file_id()) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::StringSize( this->file_id()); } - + // required fixed64 new_file_size = 3; if (has_new_file_size()) { total_size += 1 + 8; } - + // required fixed64 object_number = 7; if (has_object_number()) { total_size += 1 + 8; } - + // required fixed64 object_version = 4; if (has_object_version()) { total_size += 1 + 8; } - + // required fixed32 offset = 5; if (has_offset()) { total_size += 1 + 4; } - + // required .xtreemfs.pbrpc.ObjectData obj = 6; if (has_obj()) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::MessageSizeNoVirtual( this->obj()); } - + } if (!unknown_fields().empty()) { total_size += @@ -9551,25 +9952,25 @@ void xtreemfs_rwr_updateRequest::MergeFrom(const ::google::protobuf::Message& fr void xtreemfs_rwr_updateRequest::MergeFrom(const xtreemfs_rwr_updateRequest& from) { GOOGLE_CHECK_NE(&from, this); if (from._has_bits_[0 / 32] & (0xffu << (0 % 32))) { - if (from._has_bit(0)) { + if (from.has_file_credentials()) { mutable_file_credentials()->::xtreemfs::pbrpc::FileCredentials::MergeFrom(from.file_credentials()); } - if (from._has_bit(1)) { + if (from.has_file_id()) { set_file_id(from.file_id()); } - if (from._has_bit(2)) { + if (from.has_new_file_size()) { set_new_file_size(from.new_file_size()); } - if (from._has_bit(3)) { + if (from.has_object_number()) { set_object_number(from.object_number()); } - if (from._has_bit(4)) { + if (from.has_object_version()) { set_object_version(from.object_version()); } - if (from._has_bit(5)) { + if (from.has_offset()) { set_offset(from.offset()); } - if (from._has_bit(6)) { + if (from.has_obj()) { mutable_obj()->::xtreemfs::pbrpc::ObjectData::MergeFrom(from.obj()); } } @@ -9590,7 +9991,7 @@ void xtreemfs_rwr_updateRequest::CopyFrom(const xtreemfs_rwr_updateRequest& from bool xtreemfs_rwr_updateRequest::IsInitialized() const { if ((_has_bits_[0] & 0x0000007f) != 0x0000007f) return false; - + if (has_file_credentials()) { if (!this->file_credentials().IsInitialized()) return false; } @@ -9626,7 +10027,6 @@ void xtreemfs_rwr_updateRequest::Swap(xtreemfs_rwr_updateRequest* other) { // =================================================================== -const ::std::string xtreemfs_internal_get_gmaxRequest::_default_file_id_; #ifndef _MSC_VER const int xtreemfs_internal_get_gmaxRequest::kFileCredentialsFieldNumber; const int xtreemfs_internal_get_gmaxRequest::kFileIdFieldNumber; @@ -9650,7 +10050,7 @@ xtreemfs_internal_get_gmaxRequest::xtreemfs_internal_get_gmaxRequest(const xtree void xtreemfs_internal_get_gmaxRequest::SharedCtor() { _cached_size_ = 0; file_credentials_ = NULL; - file_id_ = const_cast< ::std::string*>(&_default_file_id_); + file_id_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); ::memset(_has_bits_, 0, sizeof(_has_bits_)); } @@ -9659,7 +10059,7 @@ xtreemfs_internal_get_gmaxRequest::~xtreemfs_internal_get_gmaxRequest() { } void xtreemfs_internal_get_gmaxRequest::SharedDtor() { - if (file_id_ != &_default_file_id_) { + if (file_id_ != &::google::protobuf::internal::kEmptyString) { delete file_id_; } if (this != default_instance_) { @@ -9678,7 +10078,8 @@ const ::google::protobuf::Descriptor* xtreemfs_internal_get_gmaxRequest::descrip } const xtreemfs_internal_get_gmaxRequest& xtreemfs_internal_get_gmaxRequest::default_instance() { - if (default_instance_ == NULL) protobuf_AddDesc_xtreemfs_2fOSD_2eproto(); return *default_instance_; + if (default_instance_ == NULL) protobuf_AddDesc_xtreemfs_2fOSD_2eproto(); + return *default_instance_; } xtreemfs_internal_get_gmaxRequest* xtreemfs_internal_get_gmaxRequest::default_instance_ = NULL; @@ -9689,11 +10090,11 @@ xtreemfs_internal_get_gmaxRequest* xtreemfs_internal_get_gmaxRequest::New() cons void xtreemfs_internal_get_gmaxRequest::Clear() { if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) { - if (_has_bit(0)) { + if (has_file_credentials()) { if (file_credentials_ != NULL) file_credentials_->::xtreemfs::pbrpc::FileCredentials::Clear(); } - if (_has_bit(1)) { - if (file_id_ != &_default_file_id_) { + if (has_file_id()) { + if (file_id_ != &::google::protobuf::internal::kEmptyString) { file_id_->clear(); } } @@ -9720,7 +10121,7 @@ bool xtreemfs_internal_get_gmaxRequest::MergePartialFromCodedStream( if (input->ExpectTag(18)) goto parse_file_id; break; } - + // required string file_id = 2; case 2: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -9737,7 +10138,7 @@ bool xtreemfs_internal_get_gmaxRequest::MergePartialFromCodedStream( if (input->ExpectAtEnd()) return true; break; } - + default: { handle_uninterpreted: if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -9757,20 +10158,20 @@ bool xtreemfs_internal_get_gmaxRequest::MergePartialFromCodedStream( void xtreemfs_internal_get_gmaxRequest::SerializeWithCachedSizes( ::google::protobuf::io::CodedOutputStream* output) const { // required .xtreemfs.pbrpc.FileCredentials file_credentials = 1; - if (_has_bit(0)) { + if (has_file_credentials()) { ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray( 1, this->file_credentials(), output); } - + // required string file_id = 2; - if (_has_bit(1)) { + if (has_file_id()) { ::google::protobuf::internal::WireFormat::VerifyUTF8String( this->file_id().data(), this->file_id().length(), ::google::protobuf::internal::WireFormat::SERIALIZE); ::google::protobuf::internal::WireFormatLite::WriteString( 2, this->file_id(), output); } - + if (!unknown_fields().empty()) { ::google::protobuf::internal::WireFormat::SerializeUnknownFields( unknown_fields(), output); @@ -9780,14 +10181,14 @@ void xtreemfs_internal_get_gmaxRequest::SerializeWithCachedSizes( ::google::protobuf::uint8* xtreemfs_internal_get_gmaxRequest::SerializeWithCachedSizesToArray( ::google::protobuf::uint8* target) const { // required .xtreemfs.pbrpc.FileCredentials file_credentials = 1; - if (_has_bit(0)) { + if (has_file_credentials()) { target = ::google::protobuf::internal::WireFormatLite:: WriteMessageNoVirtualToArray( 1, this->file_credentials(), target); } - + // required string file_id = 2; - if (_has_bit(1)) { + if (has_file_id()) { ::google::protobuf::internal::WireFormat::VerifyUTF8String( this->file_id().data(), this->file_id().length(), ::google::protobuf::internal::WireFormat::SERIALIZE); @@ -9795,7 +10196,7 @@ void xtreemfs_internal_get_gmaxRequest::SerializeWithCachedSizes( ::google::protobuf::internal::WireFormatLite::WriteStringToArray( 2, this->file_id(), target); } - + if (!unknown_fields().empty()) { target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray( unknown_fields(), target); @@ -9805,7 +10206,7 @@ void xtreemfs_internal_get_gmaxRequest::SerializeWithCachedSizes( int xtreemfs_internal_get_gmaxRequest::ByteSize() const { int total_size = 0; - + if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) { // required .xtreemfs.pbrpc.FileCredentials file_credentials = 1; if (has_file_credentials()) { @@ -9813,14 +10214,14 @@ int xtreemfs_internal_get_gmaxRequest::ByteSize() const { ::google::protobuf::internal::WireFormatLite::MessageSizeNoVirtual( this->file_credentials()); } - + // required string file_id = 2; if (has_file_id()) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::StringSize( this->file_id()); } - + } if (!unknown_fields().empty()) { total_size += @@ -9848,10 +10249,10 @@ void xtreemfs_internal_get_gmaxRequest::MergeFrom(const ::google::protobuf::Mess void xtreemfs_internal_get_gmaxRequest::MergeFrom(const xtreemfs_internal_get_gmaxRequest& from) { GOOGLE_CHECK_NE(&from, this); if (from._has_bits_[0 / 32] & (0xffu << (0 % 32))) { - if (from._has_bit(0)) { + if (from.has_file_credentials()) { mutable_file_credentials()->::xtreemfs::pbrpc::FileCredentials::MergeFrom(from.file_credentials()); } - if (from._has_bit(1)) { + if (from.has_file_id()) { set_file_id(from.file_id()); } } @@ -9872,7 +10273,7 @@ void xtreemfs_internal_get_gmaxRequest::CopyFrom(const xtreemfs_internal_get_gma bool xtreemfs_internal_get_gmaxRequest::IsInitialized() const { if ((_has_bits_[0] & 0x00000003) != 0x00000003) return false; - + if (has_file_credentials()) { if (!this->file_credentials().IsInitialized()) return false; } @@ -9900,7 +10301,6 @@ void xtreemfs_internal_get_gmaxRequest::Swap(xtreemfs_internal_get_gmaxRequest* // =================================================================== -const ::std::string xtreemfs_internal_get_file_sizeRequest::_default_file_id_; #ifndef _MSC_VER const int xtreemfs_internal_get_file_sizeRequest::kFileCredentialsFieldNumber; const int xtreemfs_internal_get_file_sizeRequest::kFileIdFieldNumber; @@ -9924,7 +10324,7 @@ xtreemfs_internal_get_file_sizeRequest::xtreemfs_internal_get_file_sizeRequest(c void xtreemfs_internal_get_file_sizeRequest::SharedCtor() { _cached_size_ = 0; file_credentials_ = NULL; - file_id_ = const_cast< ::std::string*>(&_default_file_id_); + file_id_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); ::memset(_has_bits_, 0, sizeof(_has_bits_)); } @@ -9933,7 +10333,7 @@ xtreemfs_internal_get_file_sizeRequest::~xtreemfs_internal_get_file_sizeRequest( } void xtreemfs_internal_get_file_sizeRequest::SharedDtor() { - if (file_id_ != &_default_file_id_) { + if (file_id_ != &::google::protobuf::internal::kEmptyString) { delete file_id_; } if (this != default_instance_) { @@ -9952,7 +10352,8 @@ const ::google::protobuf::Descriptor* xtreemfs_internal_get_file_sizeRequest::de } const xtreemfs_internal_get_file_sizeRequest& xtreemfs_internal_get_file_sizeRequest::default_instance() { - if (default_instance_ == NULL) protobuf_AddDesc_xtreemfs_2fOSD_2eproto(); return *default_instance_; + if (default_instance_ == NULL) protobuf_AddDesc_xtreemfs_2fOSD_2eproto(); + return *default_instance_; } xtreemfs_internal_get_file_sizeRequest* xtreemfs_internal_get_file_sizeRequest::default_instance_ = NULL; @@ -9963,11 +10364,11 @@ xtreemfs_internal_get_file_sizeRequest* xtreemfs_internal_get_file_sizeRequest:: void xtreemfs_internal_get_file_sizeRequest::Clear() { if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) { - if (_has_bit(0)) { + if (has_file_credentials()) { if (file_credentials_ != NULL) file_credentials_->::xtreemfs::pbrpc::FileCredentials::Clear(); } - if (_has_bit(1)) { - if (file_id_ != &_default_file_id_) { + if (has_file_id()) { + if (file_id_ != &::google::protobuf::internal::kEmptyString) { file_id_->clear(); } } @@ -9994,7 +10395,7 @@ bool xtreemfs_internal_get_file_sizeRequest::MergePartialFromCodedStream( if (input->ExpectTag(18)) goto parse_file_id; break; } - + // required string file_id = 2; case 2: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -10011,7 +10412,7 @@ bool xtreemfs_internal_get_file_sizeRequest::MergePartialFromCodedStream( if (input->ExpectAtEnd()) return true; break; } - + default: { handle_uninterpreted: if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -10031,20 +10432,20 @@ bool xtreemfs_internal_get_file_sizeRequest::MergePartialFromCodedStream( void xtreemfs_internal_get_file_sizeRequest::SerializeWithCachedSizes( ::google::protobuf::io::CodedOutputStream* output) const { // required .xtreemfs.pbrpc.FileCredentials file_credentials = 1; - if (_has_bit(0)) { + if (has_file_credentials()) { ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray( 1, this->file_credentials(), output); } - + // required string file_id = 2; - if (_has_bit(1)) { + if (has_file_id()) { ::google::protobuf::internal::WireFormat::VerifyUTF8String( this->file_id().data(), this->file_id().length(), ::google::protobuf::internal::WireFormat::SERIALIZE); ::google::protobuf::internal::WireFormatLite::WriteString( 2, this->file_id(), output); } - + if (!unknown_fields().empty()) { ::google::protobuf::internal::WireFormat::SerializeUnknownFields( unknown_fields(), output); @@ -10054,14 +10455,14 @@ void xtreemfs_internal_get_file_sizeRequest::SerializeWithCachedSizes( ::google::protobuf::uint8* xtreemfs_internal_get_file_sizeRequest::SerializeWithCachedSizesToArray( ::google::protobuf::uint8* target) const { // required .xtreemfs.pbrpc.FileCredentials file_credentials = 1; - if (_has_bit(0)) { + if (has_file_credentials()) { target = ::google::protobuf::internal::WireFormatLite:: WriteMessageNoVirtualToArray( 1, this->file_credentials(), target); } - + // required string file_id = 2; - if (_has_bit(1)) { + if (has_file_id()) { ::google::protobuf::internal::WireFormat::VerifyUTF8String( this->file_id().data(), this->file_id().length(), ::google::protobuf::internal::WireFormat::SERIALIZE); @@ -10069,7 +10470,7 @@ void xtreemfs_internal_get_file_sizeRequest::SerializeWithCachedSizes( ::google::protobuf::internal::WireFormatLite::WriteStringToArray( 2, this->file_id(), target); } - + if (!unknown_fields().empty()) { target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray( unknown_fields(), target); @@ -10079,7 +10480,7 @@ void xtreemfs_internal_get_file_sizeRequest::SerializeWithCachedSizes( int xtreemfs_internal_get_file_sizeRequest::ByteSize() const { int total_size = 0; - + if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) { // required .xtreemfs.pbrpc.FileCredentials file_credentials = 1; if (has_file_credentials()) { @@ -10087,14 +10488,14 @@ int xtreemfs_internal_get_file_sizeRequest::ByteSize() const { ::google::protobuf::internal::WireFormatLite::MessageSizeNoVirtual( this->file_credentials()); } - + // required string file_id = 2; if (has_file_id()) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::StringSize( this->file_id()); } - + } if (!unknown_fields().empty()) { total_size += @@ -10122,10 +10523,10 @@ void xtreemfs_internal_get_file_sizeRequest::MergeFrom(const ::google::protobuf: void xtreemfs_internal_get_file_sizeRequest::MergeFrom(const xtreemfs_internal_get_file_sizeRequest& from) { GOOGLE_CHECK_NE(&from, this); if (from._has_bits_[0 / 32] & (0xffu << (0 % 32))) { - if (from._has_bit(0)) { + if (from.has_file_credentials()) { mutable_file_credentials()->::xtreemfs::pbrpc::FileCredentials::MergeFrom(from.file_credentials()); } - if (from._has_bit(1)) { + if (from.has_file_id()) { set_file_id(from.file_id()); } } @@ -10146,7 +10547,7 @@ void xtreemfs_internal_get_file_sizeRequest::CopyFrom(const xtreemfs_internal_ge bool xtreemfs_internal_get_file_sizeRequest::IsInitialized() const { if ((_has_bits_[0] & 0x00000003) != 0x00000003) return false; - + if (has_file_credentials()) { if (!this->file_credentials().IsInitialized()) return false; } @@ -10218,7 +10619,8 @@ const ::google::protobuf::Descriptor* xtreemfs_internal_get_file_sizeResponse::d } const xtreemfs_internal_get_file_sizeResponse& xtreemfs_internal_get_file_sizeResponse::default_instance() { - if (default_instance_ == NULL) protobuf_AddDesc_xtreemfs_2fOSD_2eproto(); return *default_instance_; + if (default_instance_ == NULL) protobuf_AddDesc_xtreemfs_2fOSD_2eproto(); + return *default_instance_; } xtreemfs_internal_get_file_sizeResponse* xtreemfs_internal_get_file_sizeResponse::default_instance_ = NULL; @@ -10248,14 +10650,14 @@ bool xtreemfs_internal_get_file_sizeResponse::MergePartialFromCodedStream( DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive< ::google::protobuf::uint64, ::google::protobuf::internal::WireFormatLite::TYPE_FIXED64>( input, &file_size_))); - _set_bit(0); + set_has_file_size(); } else { goto handle_uninterpreted; } if (input->ExpectAtEnd()) return true; break; } - + default: { handle_uninterpreted: if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -10275,10 +10677,10 @@ bool xtreemfs_internal_get_file_sizeResponse::MergePartialFromCodedStream( void xtreemfs_internal_get_file_sizeResponse::SerializeWithCachedSizes( ::google::protobuf::io::CodedOutputStream* output) const { // required fixed64 file_size = 1; - if (_has_bit(0)) { + if (has_file_size()) { ::google::protobuf::internal::WireFormatLite::WriteFixed64(1, this->file_size(), output); } - + if (!unknown_fields().empty()) { ::google::protobuf::internal::WireFormat::SerializeUnknownFields( unknown_fields(), output); @@ -10288,10 +10690,10 @@ void xtreemfs_internal_get_file_sizeResponse::SerializeWithCachedSizes( ::google::protobuf::uint8* xtreemfs_internal_get_file_sizeResponse::SerializeWithCachedSizesToArray( ::google::protobuf::uint8* target) const { // required fixed64 file_size = 1; - if (_has_bit(0)) { + if (has_file_size()) { target = ::google::protobuf::internal::WireFormatLite::WriteFixed64ToArray(1, this->file_size(), target); } - + if (!unknown_fields().empty()) { target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray( unknown_fields(), target); @@ -10301,13 +10703,13 @@ void xtreemfs_internal_get_file_sizeResponse::SerializeWithCachedSizes( int xtreemfs_internal_get_file_sizeResponse::ByteSize() const { int total_size = 0; - + if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) { // required fixed64 file_size = 1; if (has_file_size()) { total_size += 1 + 8; } - + } if (!unknown_fields().empty()) { total_size += @@ -10335,7 +10737,7 @@ void xtreemfs_internal_get_file_sizeResponse::MergeFrom(const ::google::protobuf void xtreemfs_internal_get_file_sizeResponse::MergeFrom(const xtreemfs_internal_get_file_sizeResponse& from) { GOOGLE_CHECK_NE(&from, this); if (from._has_bits_[0 / 32] & (0xffu << (0 % 32))) { - if (from._has_bit(0)) { + if (from.has_file_size()) { set_file_size(from.file_size()); } } @@ -10356,7 +10758,7 @@ void xtreemfs_internal_get_file_sizeResponse::CopyFrom(const xtreemfs_internal_g bool xtreemfs_internal_get_file_sizeResponse::IsInitialized() const { if ((_has_bits_[0] & 0x00000001) != 0x00000001) return false; - + return true; } @@ -10380,7 +10782,6 @@ void xtreemfs_internal_get_file_sizeResponse::Swap(xtreemfs_internal_get_file_si // =================================================================== -const ::std::string xtreemfs_internal_read_localRequest::_default_file_id_; #ifndef _MSC_VER const int xtreemfs_internal_read_localRequest::kFileCredentialsFieldNumber; const int xtreemfs_internal_read_localRequest::kFileIdFieldNumber; @@ -10410,7 +10811,7 @@ xtreemfs_internal_read_localRequest::xtreemfs_internal_read_localRequest(const x void xtreemfs_internal_read_localRequest::SharedCtor() { _cached_size_ = 0; file_credentials_ = NULL; - file_id_ = const_cast< ::std::string*>(&_default_file_id_); + file_id_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); object_number_ = GOOGLE_ULONGLONG(0); object_version_ = GOOGLE_ULONGLONG(0); offset_ = 0u; @@ -10424,7 +10825,7 @@ xtreemfs_internal_read_localRequest::~xtreemfs_internal_read_localRequest() { } void xtreemfs_internal_read_localRequest::SharedDtor() { - if (file_id_ != &_default_file_id_) { + if (file_id_ != &::google::protobuf::internal::kEmptyString) { delete file_id_; } if (this != default_instance_) { @@ -10443,7 +10844,8 @@ const ::google::protobuf::Descriptor* xtreemfs_internal_read_localRequest::descr } const xtreemfs_internal_read_localRequest& xtreemfs_internal_read_localRequest::default_instance() { - if (default_instance_ == NULL) protobuf_AddDesc_xtreemfs_2fOSD_2eproto(); return *default_instance_; + if (default_instance_ == NULL) protobuf_AddDesc_xtreemfs_2fOSD_2eproto(); + return *default_instance_; } xtreemfs_internal_read_localRequest* xtreemfs_internal_read_localRequest::default_instance_ = NULL; @@ -10454,11 +10856,11 @@ xtreemfs_internal_read_localRequest* xtreemfs_internal_read_localRequest::New() void xtreemfs_internal_read_localRequest::Clear() { if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) { - if (_has_bit(0)) { + if (has_file_credentials()) { if (file_credentials_ != NULL) file_credentials_->::xtreemfs::pbrpc::FileCredentials::Clear(); } - if (_has_bit(1)) { - if (file_id_ != &_default_file_id_) { + if (has_file_id()) { + if (file_id_ != &::google::protobuf::internal::kEmptyString) { file_id_->clear(); } } @@ -10491,7 +10893,7 @@ bool xtreemfs_internal_read_localRequest::MergePartialFromCodedStream( if (input->ExpectTag(18)) goto parse_file_id; break; } - + // required string file_id = 2; case 2: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -10508,7 +10910,7 @@ bool xtreemfs_internal_read_localRequest::MergePartialFromCodedStream( if (input->ExpectTag(25)) goto parse_object_number; break; } - + // required fixed64 object_number = 3; case 3: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -10517,14 +10919,14 @@ bool xtreemfs_internal_read_localRequest::MergePartialFromCodedStream( DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive< ::google::protobuf::uint64, ::google::protobuf::internal::WireFormatLite::TYPE_FIXED64>( input, &object_number_))); - _set_bit(2); + set_has_object_number(); } else { goto handle_uninterpreted; } if (input->ExpectTag(33)) goto parse_object_version; break; } - + // required fixed64 object_version = 4; case 4: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -10533,14 +10935,14 @@ bool xtreemfs_internal_read_localRequest::MergePartialFromCodedStream( DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive< ::google::protobuf::uint64, ::google::protobuf::internal::WireFormatLite::TYPE_FIXED64>( input, &object_version_))); - _set_bit(3); + set_has_object_version(); } else { goto handle_uninterpreted; } if (input->ExpectTag(45)) goto parse_offset; break; } - + // required fixed32 offset = 5; case 5: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -10549,14 +10951,14 @@ bool xtreemfs_internal_read_localRequest::MergePartialFromCodedStream( DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive< ::google::protobuf::uint32, ::google::protobuf::internal::WireFormatLite::TYPE_FIXED32>( input, &offset_))); - _set_bit(4); + set_has_offset(); } else { goto handle_uninterpreted; } if (input->ExpectTag(53)) goto parse_length; break; } - + // required fixed32 length = 6; case 6: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -10565,14 +10967,14 @@ bool xtreemfs_internal_read_localRequest::MergePartialFromCodedStream( DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive< ::google::protobuf::uint32, ::google::protobuf::internal::WireFormatLite::TYPE_FIXED32>( input, &length_))); - _set_bit(5); + set_has_length(); } else { goto handle_uninterpreted; } if (input->ExpectTag(56)) goto parse_attach_object_list; break; } - + // required bool attach_object_list = 7; case 7: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -10581,14 +10983,14 @@ bool xtreemfs_internal_read_localRequest::MergePartialFromCodedStream( DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive< bool, ::google::protobuf::internal::WireFormatLite::TYPE_BOOL>( input, &attach_object_list_))); - _set_bit(6); + set_has_attach_object_list(); } else { goto handle_uninterpreted; } if (input->ExpectTag(66)) goto parse_required_objects; break; } - + // repeated .xtreemfs.pbrpc.ObjectList required_objects = 8; case 8: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -10603,7 +11005,7 @@ bool xtreemfs_internal_read_localRequest::MergePartialFromCodedStream( if (input->ExpectAtEnd()) return true; break; } - + default: { handle_uninterpreted: if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -10623,51 +11025,51 @@ bool xtreemfs_internal_read_localRequest::MergePartialFromCodedStream( void xtreemfs_internal_read_localRequest::SerializeWithCachedSizes( ::google::protobuf::io::CodedOutputStream* output) const { // required .xtreemfs.pbrpc.FileCredentials file_credentials = 1; - if (_has_bit(0)) { + if (has_file_credentials()) { ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray( 1, this->file_credentials(), output); } - + // required string file_id = 2; - if (_has_bit(1)) { + if (has_file_id()) { ::google::protobuf::internal::WireFormat::VerifyUTF8String( this->file_id().data(), this->file_id().length(), ::google::protobuf::internal::WireFormat::SERIALIZE); ::google::protobuf::internal::WireFormatLite::WriteString( 2, this->file_id(), output); } - + // required fixed64 object_number = 3; - if (_has_bit(2)) { + if (has_object_number()) { ::google::protobuf::internal::WireFormatLite::WriteFixed64(3, this->object_number(), output); } - + // required fixed64 object_version = 4; - if (_has_bit(3)) { + if (has_object_version()) { ::google::protobuf::internal::WireFormatLite::WriteFixed64(4, this->object_version(), output); } - + // required fixed32 offset = 5; - if (_has_bit(4)) { + if (has_offset()) { ::google::protobuf::internal::WireFormatLite::WriteFixed32(5, this->offset(), output); } - + // required fixed32 length = 6; - if (_has_bit(5)) { + if (has_length()) { ::google::protobuf::internal::WireFormatLite::WriteFixed32(6, this->length(), output); } - + // required bool attach_object_list = 7; - if (_has_bit(6)) { + if (has_attach_object_list()) { ::google::protobuf::internal::WireFormatLite::WriteBool(7, this->attach_object_list(), output); } - + // repeated .xtreemfs.pbrpc.ObjectList required_objects = 8; for (int i = 0; i < this->required_objects_size(); i++) { ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray( 8, this->required_objects(i), output); } - + if (!unknown_fields().empty()) { ::google::protobuf::internal::WireFormat::SerializeUnknownFields( unknown_fields(), output); @@ -10677,14 +11079,14 @@ void xtreemfs_internal_read_localRequest::SerializeWithCachedSizes( ::google::protobuf::uint8* xtreemfs_internal_read_localRequest::SerializeWithCachedSizesToArray( ::google::protobuf::uint8* target) const { // required .xtreemfs.pbrpc.FileCredentials file_credentials = 1; - if (_has_bit(0)) { + if (has_file_credentials()) { target = ::google::protobuf::internal::WireFormatLite:: WriteMessageNoVirtualToArray( 1, this->file_credentials(), target); } - + // required string file_id = 2; - if (_has_bit(1)) { + if (has_file_id()) { ::google::protobuf::internal::WireFormat::VerifyUTF8String( this->file_id().data(), this->file_id().length(), ::google::protobuf::internal::WireFormat::SERIALIZE); @@ -10692,39 +11094,39 @@ void xtreemfs_internal_read_localRequest::SerializeWithCachedSizes( ::google::protobuf::internal::WireFormatLite::WriteStringToArray( 2, this->file_id(), target); } - + // required fixed64 object_number = 3; - if (_has_bit(2)) { + if (has_object_number()) { target = ::google::protobuf::internal::WireFormatLite::WriteFixed64ToArray(3, this->object_number(), target); } - + // required fixed64 object_version = 4; - if (_has_bit(3)) { + if (has_object_version()) { target = ::google::protobuf::internal::WireFormatLite::WriteFixed64ToArray(4, this->object_version(), target); } - + // required fixed32 offset = 5; - if (_has_bit(4)) { + if (has_offset()) { target = ::google::protobuf::internal::WireFormatLite::WriteFixed32ToArray(5, this->offset(), target); } - + // required fixed32 length = 6; - if (_has_bit(5)) { + if (has_length()) { target = ::google::protobuf::internal::WireFormatLite::WriteFixed32ToArray(6, this->length(), target); } - + // required bool attach_object_list = 7; - if (_has_bit(6)) { + if (has_attach_object_list()) { target = ::google::protobuf::internal::WireFormatLite::WriteBoolToArray(7, this->attach_object_list(), target); } - + // repeated .xtreemfs.pbrpc.ObjectList required_objects = 8; for (int i = 0; i < this->required_objects_size(); i++) { target = ::google::protobuf::internal::WireFormatLite:: WriteMessageNoVirtualToArray( 8, this->required_objects(i), target); } - + if (!unknown_fields().empty()) { target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray( unknown_fields(), target); @@ -10734,7 +11136,7 @@ void xtreemfs_internal_read_localRequest::SerializeWithCachedSizes( int xtreemfs_internal_read_localRequest::ByteSize() const { int total_size = 0; - + if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) { // required .xtreemfs.pbrpc.FileCredentials file_credentials = 1; if (has_file_credentials()) { @@ -10742,39 +11144,39 @@ int xtreemfs_internal_read_localRequest::ByteSize() const { ::google::protobuf::internal::WireFormatLite::MessageSizeNoVirtual( this->file_credentials()); } - + // required string file_id = 2; if (has_file_id()) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::StringSize( this->file_id()); } - + // required fixed64 object_number = 3; if (has_object_number()) { total_size += 1 + 8; } - + // required fixed64 object_version = 4; if (has_object_version()) { total_size += 1 + 8; } - + // required fixed32 offset = 5; if (has_offset()) { total_size += 1 + 4; } - + // required fixed32 length = 6; if (has_length()) { total_size += 1 + 4; } - + // required bool attach_object_list = 7; if (has_attach_object_list()) { total_size += 1 + 1; } - + } // repeated .xtreemfs.pbrpc.ObjectList required_objects = 8; total_size += 1 * this->required_objects_size(); @@ -10783,7 +11185,7 @@ int xtreemfs_internal_read_localRequest::ByteSize() const { ::google::protobuf::internal::WireFormatLite::MessageSizeNoVirtual( this->required_objects(i)); } - + if (!unknown_fields().empty()) { total_size += ::google::protobuf::internal::WireFormat::ComputeUnknownFieldsSize( @@ -10811,25 +11213,25 @@ void xtreemfs_internal_read_localRequest::MergeFrom(const xtreemfs_internal_read GOOGLE_CHECK_NE(&from, this); required_objects_.MergeFrom(from.required_objects_); if (from._has_bits_[0 / 32] & (0xffu << (0 % 32))) { - if (from._has_bit(0)) { + if (from.has_file_credentials()) { mutable_file_credentials()->::xtreemfs::pbrpc::FileCredentials::MergeFrom(from.file_credentials()); } - if (from._has_bit(1)) { + if (from.has_file_id()) { set_file_id(from.file_id()); } - if (from._has_bit(2)) { + if (from.has_object_number()) { set_object_number(from.object_number()); } - if (from._has_bit(3)) { + if (from.has_object_version()) { set_object_version(from.object_version()); } - if (from._has_bit(4)) { + if (from.has_offset()) { set_offset(from.offset()); } - if (from._has_bit(5)) { + if (from.has_length()) { set_length(from.length()); } - if (from._has_bit(6)) { + if (from.has_attach_object_list()) { set_attach_object_list(from.attach_object_list()); } } @@ -10850,7 +11252,7 @@ void xtreemfs_internal_read_localRequest::CopyFrom(const xtreemfs_internal_read_ bool xtreemfs_internal_read_localRequest::IsInitialized() const { if ((_has_bits_[0] & 0x0000007f) != 0x0000007f) return false; - + if (has_file_credentials()) { if (!this->file_credentials().IsInitialized()) return false; } @@ -10887,7 +11289,6 @@ void xtreemfs_internal_read_localRequest::Swap(xtreemfs_internal_read_localReque // =================================================================== -const ::std::string xtreemfs_internal_get_object_setRequest::_default_file_id_; #ifndef _MSC_VER const int xtreemfs_internal_get_object_setRequest::kFileCredentialsFieldNumber; const int xtreemfs_internal_get_object_setRequest::kFileIdFieldNumber; @@ -10911,7 +11312,7 @@ xtreemfs_internal_get_object_setRequest::xtreemfs_internal_get_object_setRequest void xtreemfs_internal_get_object_setRequest::SharedCtor() { _cached_size_ = 0; file_credentials_ = NULL; - file_id_ = const_cast< ::std::string*>(&_default_file_id_); + file_id_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); ::memset(_has_bits_, 0, sizeof(_has_bits_)); } @@ -10920,7 +11321,7 @@ xtreemfs_internal_get_object_setRequest::~xtreemfs_internal_get_object_setReques } void xtreemfs_internal_get_object_setRequest::SharedDtor() { - if (file_id_ != &_default_file_id_) { + if (file_id_ != &::google::protobuf::internal::kEmptyString) { delete file_id_; } if (this != default_instance_) { @@ -10939,7 +11340,8 @@ const ::google::protobuf::Descriptor* xtreemfs_internal_get_object_setRequest::d } const xtreemfs_internal_get_object_setRequest& xtreemfs_internal_get_object_setRequest::default_instance() { - if (default_instance_ == NULL) protobuf_AddDesc_xtreemfs_2fOSD_2eproto(); return *default_instance_; + if (default_instance_ == NULL) protobuf_AddDesc_xtreemfs_2fOSD_2eproto(); + return *default_instance_; } xtreemfs_internal_get_object_setRequest* xtreemfs_internal_get_object_setRequest::default_instance_ = NULL; @@ -10950,11 +11352,11 @@ xtreemfs_internal_get_object_setRequest* xtreemfs_internal_get_object_setRequest void xtreemfs_internal_get_object_setRequest::Clear() { if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) { - if (_has_bit(0)) { + if (has_file_credentials()) { if (file_credentials_ != NULL) file_credentials_->::xtreemfs::pbrpc::FileCredentials::Clear(); } - if (_has_bit(1)) { - if (file_id_ != &_default_file_id_) { + if (has_file_id()) { + if (file_id_ != &::google::protobuf::internal::kEmptyString) { file_id_->clear(); } } @@ -10981,7 +11383,7 @@ bool xtreemfs_internal_get_object_setRequest::MergePartialFromCodedStream( if (input->ExpectTag(18)) goto parse_file_id; break; } - + // required string file_id = 2; case 2: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -10998,7 +11400,7 @@ bool xtreemfs_internal_get_object_setRequest::MergePartialFromCodedStream( if (input->ExpectAtEnd()) return true; break; } - + default: { handle_uninterpreted: if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -11018,20 +11420,20 @@ bool xtreemfs_internal_get_object_setRequest::MergePartialFromCodedStream( void xtreemfs_internal_get_object_setRequest::SerializeWithCachedSizes( ::google::protobuf::io::CodedOutputStream* output) const { // required .xtreemfs.pbrpc.FileCredentials file_credentials = 1; - if (_has_bit(0)) { + if (has_file_credentials()) { ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray( 1, this->file_credentials(), output); } - + // required string file_id = 2; - if (_has_bit(1)) { + if (has_file_id()) { ::google::protobuf::internal::WireFormat::VerifyUTF8String( this->file_id().data(), this->file_id().length(), ::google::protobuf::internal::WireFormat::SERIALIZE); ::google::protobuf::internal::WireFormatLite::WriteString( 2, this->file_id(), output); } - + if (!unknown_fields().empty()) { ::google::protobuf::internal::WireFormat::SerializeUnknownFields( unknown_fields(), output); @@ -11041,14 +11443,14 @@ void xtreemfs_internal_get_object_setRequest::SerializeWithCachedSizes( ::google::protobuf::uint8* xtreemfs_internal_get_object_setRequest::SerializeWithCachedSizesToArray( ::google::protobuf::uint8* target) const { // required .xtreemfs.pbrpc.FileCredentials file_credentials = 1; - if (_has_bit(0)) { + if (has_file_credentials()) { target = ::google::protobuf::internal::WireFormatLite:: WriteMessageNoVirtualToArray( 1, this->file_credentials(), target); } - + // required string file_id = 2; - if (_has_bit(1)) { + if (has_file_id()) { ::google::protobuf::internal::WireFormat::VerifyUTF8String( this->file_id().data(), this->file_id().length(), ::google::protobuf::internal::WireFormat::SERIALIZE); @@ -11056,7 +11458,7 @@ void xtreemfs_internal_get_object_setRequest::SerializeWithCachedSizes( ::google::protobuf::internal::WireFormatLite::WriteStringToArray( 2, this->file_id(), target); } - + if (!unknown_fields().empty()) { target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray( unknown_fields(), target); @@ -11066,7 +11468,7 @@ void xtreemfs_internal_get_object_setRequest::SerializeWithCachedSizes( int xtreemfs_internal_get_object_setRequest::ByteSize() const { int total_size = 0; - + if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) { // required .xtreemfs.pbrpc.FileCredentials file_credentials = 1; if (has_file_credentials()) { @@ -11074,14 +11476,14 @@ int xtreemfs_internal_get_object_setRequest::ByteSize() const { ::google::protobuf::internal::WireFormatLite::MessageSizeNoVirtual( this->file_credentials()); } - + // required string file_id = 2; if (has_file_id()) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::StringSize( this->file_id()); } - + } if (!unknown_fields().empty()) { total_size += @@ -11109,10 +11511,10 @@ void xtreemfs_internal_get_object_setRequest::MergeFrom(const ::google::protobuf void xtreemfs_internal_get_object_setRequest::MergeFrom(const xtreemfs_internal_get_object_setRequest& from) { GOOGLE_CHECK_NE(&from, this); if (from._has_bits_[0 / 32] & (0xffu << (0 % 32))) { - if (from._has_bit(0)) { + if (from.has_file_credentials()) { mutable_file_credentials()->::xtreemfs::pbrpc::FileCredentials::MergeFrom(from.file_credentials()); } - if (from._has_bit(1)) { + if (from.has_file_id()) { set_file_id(from.file_id()); } } @@ -11133,7 +11535,7 @@ void xtreemfs_internal_get_object_setRequest::CopyFrom(const xtreemfs_internal_g bool xtreemfs_internal_get_object_setRequest::IsInitialized() const { if ((_has_bits_[0] & 0x00000003) != 0x00000003) return false; - + if (has_file_credentials()) { if (!this->file_credentials().IsInitialized()) return false; } @@ -11204,7 +11606,8 @@ const ::google::protobuf::Descriptor* xtreemfs_internal_get_fileid_listResponse: } const xtreemfs_internal_get_fileid_listResponse& xtreemfs_internal_get_fileid_listResponse::default_instance() { - if (default_instance_ == NULL) protobuf_AddDesc_xtreemfs_2fOSD_2eproto(); return *default_instance_; + if (default_instance_ == NULL) protobuf_AddDesc_xtreemfs_2fOSD_2eproto(); + return *default_instance_; } xtreemfs_internal_get_fileid_listResponse* xtreemfs_internal_get_fileid_listResponse::default_instance_ = NULL; @@ -11233,7 +11636,8 @@ bool xtreemfs_internal_get_fileid_listResponse::MergePartialFromCodedStream( DO_(::google::protobuf::internal::WireFormatLite::ReadString( input, this->add_file_ids())); ::google::protobuf::internal::WireFormat::VerifyUTF8String( - this->file_ids(0).data(), this->file_ids(0).length(), + this->file_ids(this->file_ids_size() - 1).data(), + this->file_ids(this->file_ids_size() - 1).length(), ::google::protobuf::internal::WireFormat::PARSE); } else { goto handle_uninterpreted; @@ -11242,7 +11646,7 @@ bool xtreemfs_internal_get_fileid_listResponse::MergePartialFromCodedStream( if (input->ExpectAtEnd()) return true; break; } - + default: { handle_uninterpreted: if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -11269,7 +11673,7 @@ void xtreemfs_internal_get_fileid_listResponse::SerializeWithCachedSizes( ::google::protobuf::internal::WireFormatLite::WriteString( 1, this->file_ids(i), output); } - + if (!unknown_fields().empty()) { ::google::protobuf::internal::WireFormat::SerializeUnknownFields( unknown_fields(), output); @@ -11286,7 +11690,7 @@ void xtreemfs_internal_get_fileid_listResponse::SerializeWithCachedSizes( target = ::google::protobuf::internal::WireFormatLite:: WriteStringToArray(1, this->file_ids(i), target); } - + if (!unknown_fields().empty()) { target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray( unknown_fields(), target); @@ -11296,14 +11700,14 @@ void xtreemfs_internal_get_fileid_listResponse::SerializeWithCachedSizes( int xtreemfs_internal_get_fileid_listResponse::ByteSize() const { int total_size = 0; - + // repeated string file_ids = 1; total_size += 1 * this->file_ids_size(); for (int i = 0; i < this->file_ids_size(); i++) { total_size += ::google::protobuf::internal::WireFormatLite::StringSize( this->file_ids(i)); } - + if (!unknown_fields().empty()) { total_size += ::google::protobuf::internal::WireFormat::ComputeUnknownFieldsSize( @@ -11346,7 +11750,7 @@ void xtreemfs_internal_get_fileid_listResponse::CopyFrom(const xtreemfs_internal } bool xtreemfs_internal_get_fileid_listResponse::IsInitialized() const { - + return true; } @@ -11420,7 +11824,8 @@ const ::google::protobuf::Descriptor* lockRequest::descriptor() { } const lockRequest& lockRequest::default_instance() { - if (default_instance_ == NULL) protobuf_AddDesc_xtreemfs_2fOSD_2eproto(); return *default_instance_; + if (default_instance_ == NULL) protobuf_AddDesc_xtreemfs_2fOSD_2eproto(); + return *default_instance_; } lockRequest* lockRequest::default_instance_ = NULL; @@ -11431,10 +11836,10 @@ lockRequest* lockRequest::New() const { void lockRequest::Clear() { if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) { - if (_has_bit(0)) { + if (has_file_credentials()) { if (file_credentials_ != NULL) file_credentials_->::xtreemfs::pbrpc::FileCredentials::Clear(); } - if (_has_bit(1)) { + if (has_lock_request()) { if (lock_request_ != NULL) lock_request_->::xtreemfs::pbrpc::Lock::Clear(); } } @@ -11460,7 +11865,7 @@ bool lockRequest::MergePartialFromCodedStream( if (input->ExpectTag(18)) goto parse_lock_request; break; } - + // required .xtreemfs.pbrpc.Lock lock_request = 2; case 2: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -11474,7 +11879,7 @@ bool lockRequest::MergePartialFromCodedStream( if (input->ExpectAtEnd()) return true; break; } - + default: { handle_uninterpreted: if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -11494,17 +11899,17 @@ bool lockRequest::MergePartialFromCodedStream( void lockRequest::SerializeWithCachedSizes( ::google::protobuf::io::CodedOutputStream* output) const { // required .xtreemfs.pbrpc.FileCredentials file_credentials = 1; - if (_has_bit(0)) { + if (has_file_credentials()) { ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray( 1, this->file_credentials(), output); } - + // required .xtreemfs.pbrpc.Lock lock_request = 2; - if (_has_bit(1)) { + if (has_lock_request()) { ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray( 2, this->lock_request(), output); } - + if (!unknown_fields().empty()) { ::google::protobuf::internal::WireFormat::SerializeUnknownFields( unknown_fields(), output); @@ -11514,19 +11919,19 @@ void lockRequest::SerializeWithCachedSizes( ::google::protobuf::uint8* lockRequest::SerializeWithCachedSizesToArray( ::google::protobuf::uint8* target) const { // required .xtreemfs.pbrpc.FileCredentials file_credentials = 1; - if (_has_bit(0)) { + if (has_file_credentials()) { target = ::google::protobuf::internal::WireFormatLite:: WriteMessageNoVirtualToArray( 1, this->file_credentials(), target); } - + // required .xtreemfs.pbrpc.Lock lock_request = 2; - if (_has_bit(1)) { + if (has_lock_request()) { target = ::google::protobuf::internal::WireFormatLite:: WriteMessageNoVirtualToArray( 2, this->lock_request(), target); } - + if (!unknown_fields().empty()) { target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray( unknown_fields(), target); @@ -11536,7 +11941,7 @@ void lockRequest::SerializeWithCachedSizes( int lockRequest::ByteSize() const { int total_size = 0; - + if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) { // required .xtreemfs.pbrpc.FileCredentials file_credentials = 1; if (has_file_credentials()) { @@ -11544,14 +11949,14 @@ int lockRequest::ByteSize() const { ::google::protobuf::internal::WireFormatLite::MessageSizeNoVirtual( this->file_credentials()); } - + // required .xtreemfs.pbrpc.Lock lock_request = 2; if (has_lock_request()) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::MessageSizeNoVirtual( this->lock_request()); } - + } if (!unknown_fields().empty()) { total_size += @@ -11579,10 +11984,10 @@ void lockRequest::MergeFrom(const ::google::protobuf::Message& from) { void lockRequest::MergeFrom(const lockRequest& from) { GOOGLE_CHECK_NE(&from, this); if (from._has_bits_[0 / 32] & (0xffu << (0 % 32))) { - if (from._has_bit(0)) { + if (from.has_file_credentials()) { mutable_file_credentials()->::xtreemfs::pbrpc::FileCredentials::MergeFrom(from.file_credentials()); } - if (from._has_bit(1)) { + if (from.has_lock_request()) { mutable_lock_request()->::xtreemfs::pbrpc::Lock::MergeFrom(from.lock_request()); } } @@ -11603,7 +12008,7 @@ void lockRequest::CopyFrom(const lockRequest& from) { bool lockRequest::IsInitialized() const { if ((_has_bits_[0] & 0x00000003) != 0x00000003) return false; - + if (has_file_credentials()) { if (!this->file_credentials().IsInitialized()) return false; } @@ -11682,7 +12087,8 @@ const ::google::protobuf::Descriptor* xtreemfs_pingMesssage::descriptor() { } const xtreemfs_pingMesssage& xtreemfs_pingMesssage::default_instance() { - if (default_instance_ == NULL) protobuf_AddDesc_xtreemfs_2fOSD_2eproto(); return *default_instance_; + if (default_instance_ == NULL) protobuf_AddDesc_xtreemfs_2fOSD_2eproto(); + return *default_instance_; } xtreemfs_pingMesssage* xtreemfs_pingMesssage::default_instance_ = NULL; @@ -11693,7 +12099,7 @@ xtreemfs_pingMesssage* xtreemfs_pingMesssage::New() const { void xtreemfs_pingMesssage::Clear() { if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) { - if (_has_bit(0)) { + if (has_coordinates()) { if (coordinates_ != NULL) coordinates_->::xtreemfs::pbrpc::VivaldiCoordinates::Clear(); } request_response_ = false; @@ -11720,7 +12126,7 @@ bool xtreemfs_pingMesssage::MergePartialFromCodedStream( if (input->ExpectTag(16)) goto parse_request_response; break; } - + // required bool request_response = 2; case 2: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -11729,14 +12135,14 @@ bool xtreemfs_pingMesssage::MergePartialFromCodedStream( DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive< bool, ::google::protobuf::internal::WireFormatLite::TYPE_BOOL>( input, &request_response_))); - _set_bit(1); + set_has_request_response(); } else { goto handle_uninterpreted; } if (input->ExpectAtEnd()) return true; break; } - + default: { handle_uninterpreted: if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -11756,16 +12162,16 @@ bool xtreemfs_pingMesssage::MergePartialFromCodedStream( void xtreemfs_pingMesssage::SerializeWithCachedSizes( ::google::protobuf::io::CodedOutputStream* output) const { // required .xtreemfs.pbrpc.VivaldiCoordinates coordinates = 1; - if (_has_bit(0)) { + if (has_coordinates()) { ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray( 1, this->coordinates(), output); } - + // required bool request_response = 2; - if (_has_bit(1)) { + if (has_request_response()) { ::google::protobuf::internal::WireFormatLite::WriteBool(2, this->request_response(), output); } - + if (!unknown_fields().empty()) { ::google::protobuf::internal::WireFormat::SerializeUnknownFields( unknown_fields(), output); @@ -11775,17 +12181,17 @@ void xtreemfs_pingMesssage::SerializeWithCachedSizes( ::google::protobuf::uint8* xtreemfs_pingMesssage::SerializeWithCachedSizesToArray( ::google::protobuf::uint8* target) const { // required .xtreemfs.pbrpc.VivaldiCoordinates coordinates = 1; - if (_has_bit(0)) { + if (has_coordinates()) { target = ::google::protobuf::internal::WireFormatLite:: WriteMessageNoVirtualToArray( 1, this->coordinates(), target); } - + // required bool request_response = 2; - if (_has_bit(1)) { + if (has_request_response()) { target = ::google::protobuf::internal::WireFormatLite::WriteBoolToArray(2, this->request_response(), target); } - + if (!unknown_fields().empty()) { target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray( unknown_fields(), target); @@ -11795,7 +12201,7 @@ void xtreemfs_pingMesssage::SerializeWithCachedSizes( int xtreemfs_pingMesssage::ByteSize() const { int total_size = 0; - + if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) { // required .xtreemfs.pbrpc.VivaldiCoordinates coordinates = 1; if (has_coordinates()) { @@ -11803,12 +12209,12 @@ int xtreemfs_pingMesssage::ByteSize() const { ::google::protobuf::internal::WireFormatLite::MessageSizeNoVirtual( this->coordinates()); } - + // required bool request_response = 2; if (has_request_response()) { total_size += 1 + 1; } - + } if (!unknown_fields().empty()) { total_size += @@ -11836,10 +12242,10 @@ void xtreemfs_pingMesssage::MergeFrom(const ::google::protobuf::Message& from) { void xtreemfs_pingMesssage::MergeFrom(const xtreemfs_pingMesssage& from) { GOOGLE_CHECK_NE(&from, this); if (from._has_bits_[0 / 32] & (0xffu << (0 % 32))) { - if (from._has_bit(0)) { + if (from.has_coordinates()) { mutable_coordinates()->::xtreemfs::pbrpc::VivaldiCoordinates::MergeFrom(from.coordinates()); } - if (from._has_bit(1)) { + if (from.has_request_response()) { set_request_response(from.request_response()); } } @@ -11860,7 +12266,7 @@ void xtreemfs_pingMesssage::CopyFrom(const xtreemfs_pingMesssage& from) { bool xtreemfs_pingMesssage::IsInitialized() const { if ((_has_bits_[0] & 0x00000003) != 0x00000003) return false; - + if (has_coordinates()) { if (!this->coordinates().IsInitialized()) return false; } @@ -11888,7 +12294,6 @@ void xtreemfs_pingMesssage::Swap(xtreemfs_pingMesssage* other) { // =================================================================== -const ::std::string xtreemfs_rwr_auth_stateRequest::_default_file_id_; #ifndef _MSC_VER const int xtreemfs_rwr_auth_stateRequest::kFileCredentialsFieldNumber; const int xtreemfs_rwr_auth_stateRequest::kFileIdFieldNumber; @@ -11914,7 +12319,7 @@ xtreemfs_rwr_auth_stateRequest::xtreemfs_rwr_auth_stateRequest(const xtreemfs_rw void xtreemfs_rwr_auth_stateRequest::SharedCtor() { _cached_size_ = 0; file_credentials_ = NULL; - file_id_ = const_cast< ::std::string*>(&_default_file_id_); + file_id_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); state_ = NULL; ::memset(_has_bits_, 0, sizeof(_has_bits_)); } @@ -11924,7 +12329,7 @@ xtreemfs_rwr_auth_stateRequest::~xtreemfs_rwr_auth_stateRequest() { } void xtreemfs_rwr_auth_stateRequest::SharedDtor() { - if (file_id_ != &_default_file_id_) { + if (file_id_ != &::google::protobuf::internal::kEmptyString) { delete file_id_; } if (this != default_instance_) { @@ -11944,7 +12349,8 @@ const ::google::protobuf::Descriptor* xtreemfs_rwr_auth_stateRequest::descriptor } const xtreemfs_rwr_auth_stateRequest& xtreemfs_rwr_auth_stateRequest::default_instance() { - if (default_instance_ == NULL) protobuf_AddDesc_xtreemfs_2fOSD_2eproto(); return *default_instance_; + if (default_instance_ == NULL) protobuf_AddDesc_xtreemfs_2fOSD_2eproto(); + return *default_instance_; } xtreemfs_rwr_auth_stateRequest* xtreemfs_rwr_auth_stateRequest::default_instance_ = NULL; @@ -11955,15 +12361,15 @@ xtreemfs_rwr_auth_stateRequest* xtreemfs_rwr_auth_stateRequest::New() const { void xtreemfs_rwr_auth_stateRequest::Clear() { if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) { - if (_has_bit(0)) { + if (has_file_credentials()) { if (file_credentials_ != NULL) file_credentials_->::xtreemfs::pbrpc::FileCredentials::Clear(); } - if (_has_bit(1)) { - if (file_id_ != &_default_file_id_) { + if (has_file_id()) { + if (file_id_ != &::google::protobuf::internal::kEmptyString) { file_id_->clear(); } } - if (_has_bit(2)) { + if (has_state()) { if (state_ != NULL) state_->::xtreemfs::pbrpc::AuthoritativeReplicaState::Clear(); } } @@ -11989,7 +12395,7 @@ bool xtreemfs_rwr_auth_stateRequest::MergePartialFromCodedStream( if (input->ExpectTag(18)) goto parse_file_id; break; } - + // required string file_id = 2; case 2: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -12006,7 +12412,7 @@ bool xtreemfs_rwr_auth_stateRequest::MergePartialFromCodedStream( if (input->ExpectTag(26)) goto parse_state; break; } - + // required .xtreemfs.pbrpc.AuthoritativeReplicaState state = 3; case 3: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -12020,7 +12426,7 @@ bool xtreemfs_rwr_auth_stateRequest::MergePartialFromCodedStream( if (input->ExpectAtEnd()) return true; break; } - + default: { handle_uninterpreted: if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -12040,26 +12446,26 @@ bool xtreemfs_rwr_auth_stateRequest::MergePartialFromCodedStream( void xtreemfs_rwr_auth_stateRequest::SerializeWithCachedSizes( ::google::protobuf::io::CodedOutputStream* output) const { // required .xtreemfs.pbrpc.FileCredentials file_credentials = 1; - if (_has_bit(0)) { + if (has_file_credentials()) { ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray( 1, this->file_credentials(), output); } - + // required string file_id = 2; - if (_has_bit(1)) { + if (has_file_id()) { ::google::protobuf::internal::WireFormat::VerifyUTF8String( this->file_id().data(), this->file_id().length(), ::google::protobuf::internal::WireFormat::SERIALIZE); ::google::protobuf::internal::WireFormatLite::WriteString( 2, this->file_id(), output); } - + // required .xtreemfs.pbrpc.AuthoritativeReplicaState state = 3; - if (_has_bit(2)) { + if (has_state()) { ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray( 3, this->state(), output); } - + if (!unknown_fields().empty()) { ::google::protobuf::internal::WireFormat::SerializeUnknownFields( unknown_fields(), output); @@ -12069,14 +12475,14 @@ void xtreemfs_rwr_auth_stateRequest::SerializeWithCachedSizes( ::google::protobuf::uint8* xtreemfs_rwr_auth_stateRequest::SerializeWithCachedSizesToArray( ::google::protobuf::uint8* target) const { // required .xtreemfs.pbrpc.FileCredentials file_credentials = 1; - if (_has_bit(0)) { + if (has_file_credentials()) { target = ::google::protobuf::internal::WireFormatLite:: WriteMessageNoVirtualToArray( 1, this->file_credentials(), target); } - + // required string file_id = 2; - if (_has_bit(1)) { + if (has_file_id()) { ::google::protobuf::internal::WireFormat::VerifyUTF8String( this->file_id().data(), this->file_id().length(), ::google::protobuf::internal::WireFormat::SERIALIZE); @@ -12084,14 +12490,14 @@ void xtreemfs_rwr_auth_stateRequest::SerializeWithCachedSizes( ::google::protobuf::internal::WireFormatLite::WriteStringToArray( 2, this->file_id(), target); } - + // required .xtreemfs.pbrpc.AuthoritativeReplicaState state = 3; - if (_has_bit(2)) { + if (has_state()) { target = ::google::protobuf::internal::WireFormatLite:: WriteMessageNoVirtualToArray( 3, this->state(), target); } - + if (!unknown_fields().empty()) { target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray( unknown_fields(), target); @@ -12101,7 +12507,7 @@ void xtreemfs_rwr_auth_stateRequest::SerializeWithCachedSizes( int xtreemfs_rwr_auth_stateRequest::ByteSize() const { int total_size = 0; - + if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) { // required .xtreemfs.pbrpc.FileCredentials file_credentials = 1; if (has_file_credentials()) { @@ -12109,21 +12515,21 @@ int xtreemfs_rwr_auth_stateRequest::ByteSize() const { ::google::protobuf::internal::WireFormatLite::MessageSizeNoVirtual( this->file_credentials()); } - + // required string file_id = 2; if (has_file_id()) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::StringSize( this->file_id()); } - + // required .xtreemfs.pbrpc.AuthoritativeReplicaState state = 3; if (has_state()) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::MessageSizeNoVirtual( this->state()); } - + } if (!unknown_fields().empty()) { total_size += @@ -12151,13 +12557,13 @@ void xtreemfs_rwr_auth_stateRequest::MergeFrom(const ::google::protobuf::Message void xtreemfs_rwr_auth_stateRequest::MergeFrom(const xtreemfs_rwr_auth_stateRequest& from) { GOOGLE_CHECK_NE(&from, this); if (from._has_bits_[0 / 32] & (0xffu << (0 % 32))) { - if (from._has_bit(0)) { + if (from.has_file_credentials()) { mutable_file_credentials()->::xtreemfs::pbrpc::FileCredentials::MergeFrom(from.file_credentials()); } - if (from._has_bit(1)) { + if (from.has_file_id()) { set_file_id(from.file_id()); } - if (from._has_bit(2)) { + if (from.has_state()) { mutable_state()->::xtreemfs::pbrpc::AuthoritativeReplicaState::MergeFrom(from.state()); } } @@ -12178,7 +12584,7 @@ void xtreemfs_rwr_auth_stateRequest::CopyFrom(const xtreemfs_rwr_auth_stateReque bool xtreemfs_rwr_auth_stateRequest::IsInitialized() const { if ((_has_bits_[0] & 0x00000007) != 0x00000007) return false; - + if (has_file_credentials()) { if (!this->file_credentials().IsInitialized()) return false; } @@ -12210,7 +12616,6 @@ void xtreemfs_rwr_auth_stateRequest::Swap(xtreemfs_rwr_auth_stateRequest* other) // =================================================================== -const ::std::string xtreemfs_rwr_reset_completeRequest::_default_file_id_; #ifndef _MSC_VER const int xtreemfs_rwr_reset_completeRequest::kFileCredentialsFieldNumber; const int xtreemfs_rwr_reset_completeRequest::kFileIdFieldNumber; @@ -12235,7 +12640,7 @@ xtreemfs_rwr_reset_completeRequest::xtreemfs_rwr_reset_completeRequest(const xtr void xtreemfs_rwr_reset_completeRequest::SharedCtor() { _cached_size_ = 0; file_credentials_ = NULL; - file_id_ = const_cast< ::std::string*>(&_default_file_id_); + file_id_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); primary_epoch_ = 0u; ::memset(_has_bits_, 0, sizeof(_has_bits_)); } @@ -12245,7 +12650,7 @@ xtreemfs_rwr_reset_completeRequest::~xtreemfs_rwr_reset_completeRequest() { } void xtreemfs_rwr_reset_completeRequest::SharedDtor() { - if (file_id_ != &_default_file_id_) { + if (file_id_ != &::google::protobuf::internal::kEmptyString) { delete file_id_; } if (this != default_instance_) { @@ -12264,7 +12669,8 @@ const ::google::protobuf::Descriptor* xtreemfs_rwr_reset_completeRequest::descri } const xtreemfs_rwr_reset_completeRequest& xtreemfs_rwr_reset_completeRequest::default_instance() { - if (default_instance_ == NULL) protobuf_AddDesc_xtreemfs_2fOSD_2eproto(); return *default_instance_; + if (default_instance_ == NULL) protobuf_AddDesc_xtreemfs_2fOSD_2eproto(); + return *default_instance_; } xtreemfs_rwr_reset_completeRequest* xtreemfs_rwr_reset_completeRequest::default_instance_ = NULL; @@ -12275,11 +12681,11 @@ xtreemfs_rwr_reset_completeRequest* xtreemfs_rwr_reset_completeRequest::New() co void xtreemfs_rwr_reset_completeRequest::Clear() { if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) { - if (_has_bit(0)) { + if (has_file_credentials()) { if (file_credentials_ != NULL) file_credentials_->::xtreemfs::pbrpc::FileCredentials::Clear(); } - if (_has_bit(1)) { - if (file_id_ != &_default_file_id_) { + if (has_file_id()) { + if (file_id_ != &::google::protobuf::internal::kEmptyString) { file_id_->clear(); } } @@ -12307,7 +12713,7 @@ bool xtreemfs_rwr_reset_completeRequest::MergePartialFromCodedStream( if (input->ExpectTag(18)) goto parse_file_id; break; } - + // required string file_id = 2; case 2: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -12324,7 +12730,7 @@ bool xtreemfs_rwr_reset_completeRequest::MergePartialFromCodedStream( if (input->ExpectTag(29)) goto parse_primary_epoch; break; } - + // required fixed32 primary_epoch = 3; case 3: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -12333,14 +12739,14 @@ bool xtreemfs_rwr_reset_completeRequest::MergePartialFromCodedStream( DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive< ::google::protobuf::uint32, ::google::protobuf::internal::WireFormatLite::TYPE_FIXED32>( input, &primary_epoch_))); - _set_bit(2); + set_has_primary_epoch(); } else { goto handle_uninterpreted; } if (input->ExpectAtEnd()) return true; break; } - + default: { handle_uninterpreted: if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -12360,25 +12766,25 @@ bool xtreemfs_rwr_reset_completeRequest::MergePartialFromCodedStream( void xtreemfs_rwr_reset_completeRequest::SerializeWithCachedSizes( ::google::protobuf::io::CodedOutputStream* output) const { // required .xtreemfs.pbrpc.FileCredentials file_credentials = 1; - if (_has_bit(0)) { + if (has_file_credentials()) { ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray( 1, this->file_credentials(), output); } - + // required string file_id = 2; - if (_has_bit(1)) { + if (has_file_id()) { ::google::protobuf::internal::WireFormat::VerifyUTF8String( this->file_id().data(), this->file_id().length(), ::google::protobuf::internal::WireFormat::SERIALIZE); ::google::protobuf::internal::WireFormatLite::WriteString( 2, this->file_id(), output); } - + // required fixed32 primary_epoch = 3; - if (_has_bit(2)) { + if (has_primary_epoch()) { ::google::protobuf::internal::WireFormatLite::WriteFixed32(3, this->primary_epoch(), output); } - + if (!unknown_fields().empty()) { ::google::protobuf::internal::WireFormat::SerializeUnknownFields( unknown_fields(), output); @@ -12388,14 +12794,14 @@ void xtreemfs_rwr_reset_completeRequest::SerializeWithCachedSizes( ::google::protobuf::uint8* xtreemfs_rwr_reset_completeRequest::SerializeWithCachedSizesToArray( ::google::protobuf::uint8* target) const { // required .xtreemfs.pbrpc.FileCredentials file_credentials = 1; - if (_has_bit(0)) { + if (has_file_credentials()) { target = ::google::protobuf::internal::WireFormatLite:: WriteMessageNoVirtualToArray( 1, this->file_credentials(), target); } - + // required string file_id = 2; - if (_has_bit(1)) { + if (has_file_id()) { ::google::protobuf::internal::WireFormat::VerifyUTF8String( this->file_id().data(), this->file_id().length(), ::google::protobuf::internal::WireFormat::SERIALIZE); @@ -12403,12 +12809,12 @@ void xtreemfs_rwr_reset_completeRequest::SerializeWithCachedSizes( ::google::protobuf::internal::WireFormatLite::WriteStringToArray( 2, this->file_id(), target); } - + // required fixed32 primary_epoch = 3; - if (_has_bit(2)) { + if (has_primary_epoch()) { target = ::google::protobuf::internal::WireFormatLite::WriteFixed32ToArray(3, this->primary_epoch(), target); } - + if (!unknown_fields().empty()) { target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray( unknown_fields(), target); @@ -12418,7 +12824,7 @@ void xtreemfs_rwr_reset_completeRequest::SerializeWithCachedSizes( int xtreemfs_rwr_reset_completeRequest::ByteSize() const { int total_size = 0; - + if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) { // required .xtreemfs.pbrpc.FileCredentials file_credentials = 1; if (has_file_credentials()) { @@ -12426,19 +12832,19 @@ int xtreemfs_rwr_reset_completeRequest::ByteSize() const { ::google::protobuf::internal::WireFormatLite::MessageSizeNoVirtual( this->file_credentials()); } - + // required string file_id = 2; if (has_file_id()) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::StringSize( this->file_id()); } - + // required fixed32 primary_epoch = 3; if (has_primary_epoch()) { total_size += 1 + 4; } - + } if (!unknown_fields().empty()) { total_size += @@ -12466,13 +12872,13 @@ void xtreemfs_rwr_reset_completeRequest::MergeFrom(const ::google::protobuf::Mes void xtreemfs_rwr_reset_completeRequest::MergeFrom(const xtreemfs_rwr_reset_completeRequest& from) { GOOGLE_CHECK_NE(&from, this); if (from._has_bits_[0 / 32] & (0xffu << (0 % 32))) { - if (from._has_bit(0)) { + if (from.has_file_credentials()) { mutable_file_credentials()->::xtreemfs::pbrpc::FileCredentials::MergeFrom(from.file_credentials()); } - if (from._has_bit(1)) { + if (from.has_file_id()) { set_file_id(from.file_id()); } - if (from._has_bit(2)) { + if (from.has_primary_epoch()) { set_primary_epoch(from.primary_epoch()); } } @@ -12493,7 +12899,7 @@ void xtreemfs_rwr_reset_completeRequest::CopyFrom(const xtreemfs_rwr_reset_compl bool xtreemfs_rwr_reset_completeRequest::IsInitialized() const { if ((_has_bits_[0] & 0x00000007) != 0x00000007) return false; - + if (has_file_credentials()) { if (!this->file_credentials().IsInitialized()) return false; } @@ -12520,865 +12926,6 @@ void xtreemfs_rwr_reset_completeRequest::Swap(xtreemfs_rwr_reset_completeRequest } -// =================================================================== - -OSDService::~OSDService() {} - -const ::google::protobuf::ServiceDescriptor* OSDService::descriptor() { - protobuf_AssignDescriptorsOnce(); - return OSDService_descriptor_; -} - -const ::google::protobuf::ServiceDescriptor* OSDService::GetDescriptor() { - protobuf_AssignDescriptorsOnce(); - return OSDService_descriptor_; -} - -void OSDService::read(::google::protobuf::RpcController* controller, - const ::xtreemfs::pbrpc::readRequest*, - ::xtreemfs::pbrpc::ObjectData*, - ::google::protobuf::Closure* done) { - controller->SetFailed("Method read() not implemented."); - done->Run(); -} - -void OSDService::truncate(::google::protobuf::RpcController* controller, - const ::xtreemfs::pbrpc::truncateRequest*, - ::xtreemfs::pbrpc::OSDWriteResponse*, - ::google::protobuf::Closure* done) { - controller->SetFailed("Method truncate() not implemented."); - done->Run(); -} - -void OSDService::unlink(::google::protobuf::RpcController* controller, - const ::xtreemfs::pbrpc::unlink_osd_Request*, - ::xtreemfs::pbrpc::emptyResponse*, - ::google::protobuf::Closure* done) { - controller->SetFailed("Method unlink() not implemented."); - done->Run(); -} - -void OSDService::write(::google::protobuf::RpcController* controller, - const ::xtreemfs::pbrpc::writeRequest*, - ::xtreemfs::pbrpc::OSDWriteResponse*, - ::google::protobuf::Closure* done) { - controller->SetFailed("Method write() not implemented."); - done->Run(); -} - -void OSDService::xtreemfs_broadcast_gmax(::google::protobuf::RpcController* controller, - const ::xtreemfs::pbrpc::xtreemfs_broadcast_gmaxRequest*, - ::xtreemfs::pbrpc::emptyResponse*, - ::google::protobuf::Closure* done) { - controller->SetFailed("Method xtreemfs_broadcast_gmax() not implemented."); - done->Run(); -} - -void OSDService::xtreemfs_check_object(::google::protobuf::RpcController* controller, - const ::xtreemfs::pbrpc::xtreemfs_check_objectRequest*, - ::xtreemfs::pbrpc::ObjectData*, - ::google::protobuf::Closure* done) { - controller->SetFailed("Method xtreemfs_check_object() not implemented."); - done->Run(); -} - -void OSDService::xtreemfs_cleanup_get_results(::google::protobuf::RpcController* controller, - const ::xtreemfs::pbrpc::emptyRequest*, - ::xtreemfs::pbrpc::xtreemfs_cleanup_get_resultsResponse*, - ::google::protobuf::Closure* done) { - controller->SetFailed("Method xtreemfs_cleanup_get_results() not implemented."); - done->Run(); -} - -void OSDService::xtreemfs_cleanup_is_running(::google::protobuf::RpcController* controller, - const ::xtreemfs::pbrpc::emptyRequest*, - ::xtreemfs::pbrpc::xtreemfs_cleanup_is_runningResponse*, - ::google::protobuf::Closure* done) { - controller->SetFailed("Method xtreemfs_cleanup_is_running() not implemented."); - done->Run(); -} - -void OSDService::xtreemfs_cleanup_start(::google::protobuf::RpcController* controller, - const ::xtreemfs::pbrpc::xtreemfs_cleanup_startRequest*, - ::xtreemfs::pbrpc::emptyResponse*, - ::google::protobuf::Closure* done) { - controller->SetFailed("Method xtreemfs_cleanup_start() not implemented."); - done->Run(); -} - -void OSDService::xtreemfs_cleanup_status(::google::protobuf::RpcController* controller, - const ::xtreemfs::pbrpc::emptyRequest*, - ::xtreemfs::pbrpc::xtreemfs_cleanup_statusResponse*, - ::google::protobuf::Closure* done) { - controller->SetFailed("Method xtreemfs_cleanup_status() not implemented."); - done->Run(); -} - -void OSDService::xtreemfs_cleanup_stop(::google::protobuf::RpcController* controller, - const ::xtreemfs::pbrpc::emptyRequest*, - ::xtreemfs::pbrpc::emptyResponse*, - ::google::protobuf::Closure* done) { - controller->SetFailed("Method xtreemfs_cleanup_stop() not implemented."); - done->Run(); -} - -void OSDService::xtreemfs_cleanup_versions_start(::google::protobuf::RpcController* controller, - const ::xtreemfs::pbrpc::emptyRequest*, - ::xtreemfs::pbrpc::emptyResponse*, - ::google::protobuf::Closure* done) { - controller->SetFailed("Method xtreemfs_cleanup_versions_start() not implemented."); - done->Run(); -} - -void OSDService::xtreemfs_rwr_fetch(::google::protobuf::RpcController* controller, - const ::xtreemfs::pbrpc::xtreemfs_rwr_fetchRequest*, - ::xtreemfs::pbrpc::ObjectData*, - ::google::protobuf::Closure* done) { - controller->SetFailed("Method xtreemfs_rwr_fetch() not implemented."); - done->Run(); -} - -void OSDService::xtreemfs_rwr_flease_msg(::google::protobuf::RpcController* controller, - const ::xtreemfs::pbrpc::xtreemfs_rwr_flease_msgRequest*, - ::xtreemfs::pbrpc::emptyResponse*, - ::google::protobuf::Closure* done) { - controller->SetFailed("Method xtreemfs_rwr_flease_msg() not implemented."); - done->Run(); -} - -void OSDService::xtreemfs_rwr_notify(::google::protobuf::RpcController* controller, - const ::xtreemfs::pbrpc::FileCredentials*, - ::xtreemfs::pbrpc::emptyResponse*, - ::google::protobuf::Closure* done) { - controller->SetFailed("Method xtreemfs_rwr_notify() not implemented."); - done->Run(); -} - -void OSDService::xtreemfs_rwr_set_primary_epoch(::google::protobuf::RpcController* controller, - const ::xtreemfs::pbrpc::xtreemfs_rwr_set_primary_epochRequest*, - ::xtreemfs::pbrpc::ObjectData*, - ::google::protobuf::Closure* done) { - controller->SetFailed("Method xtreemfs_rwr_set_primary_epoch() not implemented."); - done->Run(); -} - -void OSDService::xtreemfs_rwr_status(::google::protobuf::RpcController* controller, - const ::xtreemfs::pbrpc::xtreemfs_rwr_statusRequest*, - ::xtreemfs::pbrpc::ReplicaStatus*, - ::google::protobuf::Closure* done) { - controller->SetFailed("Method xtreemfs_rwr_status() not implemented."); - done->Run(); -} - -void OSDService::xtreemfs_rwr_truncate(::google::protobuf::RpcController* controller, - const ::xtreemfs::pbrpc::xtreemfs_rwr_truncateRequest*, - ::xtreemfs::pbrpc::emptyResponse*, - ::google::protobuf::Closure* done) { - controller->SetFailed("Method xtreemfs_rwr_truncate() not implemented."); - done->Run(); -} - -void OSDService::xtreemfs_rwr_update(::google::protobuf::RpcController* controller, - const ::xtreemfs::pbrpc::xtreemfs_rwr_updateRequest*, - ::xtreemfs::pbrpc::emptyResponse*, - ::google::protobuf::Closure* done) { - controller->SetFailed("Method xtreemfs_rwr_update() not implemented."); - done->Run(); -} - -void OSDService::xtreemfs_rwr_auth_state(::google::protobuf::RpcController* controller, - const ::xtreemfs::pbrpc::xtreemfs_rwr_auth_stateRequest*, - ::xtreemfs::pbrpc::emptyResponse*, - ::google::protobuf::Closure* done) { - controller->SetFailed("Method xtreemfs_rwr_auth_state() not implemented."); - done->Run(); -} - -void OSDService::xtreemfs_rwr_reset_complete(::google::protobuf::RpcController* controller, - const ::xtreemfs::pbrpc::xtreemfs_rwr_reset_completeRequest*, - ::xtreemfs::pbrpc::emptyResponse*, - ::google::protobuf::Closure* done) { - controller->SetFailed("Method xtreemfs_rwr_reset_complete() not implemented."); - done->Run(); -} - -void OSDService::xtreemfs_internal_get_gmax(::google::protobuf::RpcController* controller, - const ::xtreemfs::pbrpc::xtreemfs_internal_get_gmaxRequest*, - ::xtreemfs::pbrpc::InternalGmax*, - ::google::protobuf::Closure* done) { - controller->SetFailed("Method xtreemfs_internal_get_gmax() not implemented."); - done->Run(); -} - -void OSDService::xtreemfs_internal_truncate(::google::protobuf::RpcController* controller, - const ::xtreemfs::pbrpc::truncateRequest*, - ::xtreemfs::pbrpc::OSDWriteResponse*, - ::google::protobuf::Closure* done) { - controller->SetFailed("Method xtreemfs_internal_truncate() not implemented."); - done->Run(); -} - -void OSDService::xtreemfs_internal_get_file_size(::google::protobuf::RpcController* controller, - const ::xtreemfs::pbrpc::xtreemfs_internal_get_file_sizeRequest*, - ::xtreemfs::pbrpc::xtreemfs_internal_get_file_sizeResponse*, - ::google::protobuf::Closure* done) { - controller->SetFailed("Method xtreemfs_internal_get_file_size() not implemented."); - done->Run(); -} - -void OSDService::xtreemfs_internal_read_local(::google::protobuf::RpcController* controller, - const ::xtreemfs::pbrpc::xtreemfs_internal_read_localRequest*, - ::xtreemfs::pbrpc::InternalReadLocalResponse*, - ::google::protobuf::Closure* done) { - controller->SetFailed("Method xtreemfs_internal_read_local() not implemented."); - done->Run(); -} - -void OSDService::xtreemfs_internal_get_object_set(::google::protobuf::RpcController* controller, - const ::xtreemfs::pbrpc::xtreemfs_internal_get_object_setRequest*, - ::xtreemfs::pbrpc::ObjectList*, - ::google::protobuf::Closure* done) { - controller->SetFailed("Method xtreemfs_internal_get_object_set() not implemented."); - done->Run(); -} - -void OSDService::xtreemfs_internal_get_fileid_list(::google::protobuf::RpcController* controller, - const ::xtreemfs::pbrpc::emptyRequest*, - ::xtreemfs::pbrpc::xtreemfs_internal_get_fileid_listResponse*, - ::google::protobuf::Closure* done) { - controller->SetFailed("Method xtreemfs_internal_get_fileid_list() not implemented."); - done->Run(); -} - -void OSDService::xtreemfs_lock_acquire(::google::protobuf::RpcController* controller, - const ::xtreemfs::pbrpc::lockRequest*, - ::xtreemfs::pbrpc::Lock*, - ::google::protobuf::Closure* done) { - controller->SetFailed("Method xtreemfs_lock_acquire() not implemented."); - done->Run(); -} - -void OSDService::xtreemfs_lock_check(::google::protobuf::RpcController* controller, - const ::xtreemfs::pbrpc::lockRequest*, - ::xtreemfs::pbrpc::Lock*, - ::google::protobuf::Closure* done) { - controller->SetFailed("Method xtreemfs_lock_check() not implemented."); - done->Run(); -} - -void OSDService::xtreemfs_lock_release(::google::protobuf::RpcController* controller, - const ::xtreemfs::pbrpc::lockRequest*, - ::xtreemfs::pbrpc::emptyResponse*, - ::google::protobuf::Closure* done) { - controller->SetFailed("Method xtreemfs_lock_release() not implemented."); - done->Run(); -} - -void OSDService::xtreemfs_ping(::google::protobuf::RpcController* controller, - const ::xtreemfs::pbrpc::xtreemfs_pingMesssage*, - ::xtreemfs::pbrpc::xtreemfs_pingMesssage*, - ::google::protobuf::Closure* done) { - controller->SetFailed("Method xtreemfs_ping() not implemented."); - done->Run(); -} - -void OSDService::xtreemfs_shutdown(::google::protobuf::RpcController* controller, - const ::xtreemfs::pbrpc::emptyRequest*, - ::xtreemfs::pbrpc::emptyResponse*, - ::google::protobuf::Closure* done) { - controller->SetFailed("Method xtreemfs_shutdown() not implemented."); - done->Run(); -} - -void OSDService::CallMethod(const ::google::protobuf::MethodDescriptor* method, - ::google::protobuf::RpcController* controller, - const ::google::protobuf::Message* request, - ::google::protobuf::Message* response, - ::google::protobuf::Closure* done) { - GOOGLE_DCHECK_EQ(method->service(), OSDService_descriptor_); - switch(method->index()) { - case 0: - read(controller, - ::google::protobuf::down_cast(request), - ::google::protobuf::down_cast< ::xtreemfs::pbrpc::ObjectData*>(response), - done); - break; - case 1: - truncate(controller, - ::google::protobuf::down_cast(request), - ::google::protobuf::down_cast< ::xtreemfs::pbrpc::OSDWriteResponse*>(response), - done); - break; - case 2: - unlink(controller, - ::google::protobuf::down_cast(request), - ::google::protobuf::down_cast< ::xtreemfs::pbrpc::emptyResponse*>(response), - done); - break; - case 3: - write(controller, - ::google::protobuf::down_cast(request), - ::google::protobuf::down_cast< ::xtreemfs::pbrpc::OSDWriteResponse*>(response), - done); - break; - case 4: - xtreemfs_broadcast_gmax(controller, - ::google::protobuf::down_cast(request), - ::google::protobuf::down_cast< ::xtreemfs::pbrpc::emptyResponse*>(response), - done); - break; - case 5: - xtreemfs_check_object(controller, - ::google::protobuf::down_cast(request), - ::google::protobuf::down_cast< ::xtreemfs::pbrpc::ObjectData*>(response), - done); - break; - case 6: - xtreemfs_cleanup_get_results(controller, - ::google::protobuf::down_cast(request), - ::google::protobuf::down_cast< ::xtreemfs::pbrpc::xtreemfs_cleanup_get_resultsResponse*>(response), - done); - break; - case 7: - xtreemfs_cleanup_is_running(controller, - ::google::protobuf::down_cast(request), - ::google::protobuf::down_cast< ::xtreemfs::pbrpc::xtreemfs_cleanup_is_runningResponse*>(response), - done); - break; - case 8: - xtreemfs_cleanup_start(controller, - ::google::protobuf::down_cast(request), - ::google::protobuf::down_cast< ::xtreemfs::pbrpc::emptyResponse*>(response), - done); - break; - case 9: - xtreemfs_cleanup_status(controller, - ::google::protobuf::down_cast(request), - ::google::protobuf::down_cast< ::xtreemfs::pbrpc::xtreemfs_cleanup_statusResponse*>(response), - done); - break; - case 10: - xtreemfs_cleanup_stop(controller, - ::google::protobuf::down_cast(request), - ::google::protobuf::down_cast< ::xtreemfs::pbrpc::emptyResponse*>(response), - done); - break; - case 11: - xtreemfs_cleanup_versions_start(controller, - ::google::protobuf::down_cast(request), - ::google::protobuf::down_cast< ::xtreemfs::pbrpc::emptyResponse*>(response), - done); - break; - case 12: - xtreemfs_rwr_fetch(controller, - ::google::protobuf::down_cast(request), - ::google::protobuf::down_cast< ::xtreemfs::pbrpc::ObjectData*>(response), - done); - break; - case 13: - xtreemfs_rwr_flease_msg(controller, - ::google::protobuf::down_cast(request), - ::google::protobuf::down_cast< ::xtreemfs::pbrpc::emptyResponse*>(response), - done); - break; - case 14: - xtreemfs_rwr_notify(controller, - ::google::protobuf::down_cast(request), - ::google::protobuf::down_cast< ::xtreemfs::pbrpc::emptyResponse*>(response), - done); - break; - case 15: - xtreemfs_rwr_set_primary_epoch(controller, - ::google::protobuf::down_cast(request), - ::google::protobuf::down_cast< ::xtreemfs::pbrpc::ObjectData*>(response), - done); - break; - case 16: - xtreemfs_rwr_status(controller, - ::google::protobuf::down_cast(request), - ::google::protobuf::down_cast< ::xtreemfs::pbrpc::ReplicaStatus*>(response), - done); - break; - case 17: - xtreemfs_rwr_truncate(controller, - ::google::protobuf::down_cast(request), - ::google::protobuf::down_cast< ::xtreemfs::pbrpc::emptyResponse*>(response), - done); - break; - case 18: - xtreemfs_rwr_update(controller, - ::google::protobuf::down_cast(request), - ::google::protobuf::down_cast< ::xtreemfs::pbrpc::emptyResponse*>(response), - done); - break; - case 19: - xtreemfs_rwr_auth_state(controller, - ::google::protobuf::down_cast(request), - ::google::protobuf::down_cast< ::xtreemfs::pbrpc::emptyResponse*>(response), - done); - break; - case 20: - xtreemfs_rwr_reset_complete(controller, - ::google::protobuf::down_cast(request), - ::google::protobuf::down_cast< ::xtreemfs::pbrpc::emptyResponse*>(response), - done); - break; - case 21: - xtreemfs_internal_get_gmax(controller, - ::google::protobuf::down_cast(request), - ::google::protobuf::down_cast< ::xtreemfs::pbrpc::InternalGmax*>(response), - done); - break; - case 22: - xtreemfs_internal_truncate(controller, - ::google::protobuf::down_cast(request), - ::google::protobuf::down_cast< ::xtreemfs::pbrpc::OSDWriteResponse*>(response), - done); - break; - case 23: - xtreemfs_internal_get_file_size(controller, - ::google::protobuf::down_cast(request), - ::google::protobuf::down_cast< ::xtreemfs::pbrpc::xtreemfs_internal_get_file_sizeResponse*>(response), - done); - break; - case 24: - xtreemfs_internal_read_local(controller, - ::google::protobuf::down_cast(request), - ::google::protobuf::down_cast< ::xtreemfs::pbrpc::InternalReadLocalResponse*>(response), - done); - break; - case 25: - xtreemfs_internal_get_object_set(controller, - ::google::protobuf::down_cast(request), - ::google::protobuf::down_cast< ::xtreemfs::pbrpc::ObjectList*>(response), - done); - break; - case 26: - xtreemfs_internal_get_fileid_list(controller, - ::google::protobuf::down_cast(request), - ::google::protobuf::down_cast< ::xtreemfs::pbrpc::xtreemfs_internal_get_fileid_listResponse*>(response), - done); - break; - case 27: - xtreemfs_lock_acquire(controller, - ::google::protobuf::down_cast(request), - ::google::protobuf::down_cast< ::xtreemfs::pbrpc::Lock*>(response), - done); - break; - case 28: - xtreemfs_lock_check(controller, - ::google::protobuf::down_cast(request), - ::google::protobuf::down_cast< ::xtreemfs::pbrpc::Lock*>(response), - done); - break; - case 29: - xtreemfs_lock_release(controller, - ::google::protobuf::down_cast(request), - ::google::protobuf::down_cast< ::xtreemfs::pbrpc::emptyResponse*>(response), - done); - break; - case 30: - xtreemfs_ping(controller, - ::google::protobuf::down_cast(request), - ::google::protobuf::down_cast< ::xtreemfs::pbrpc::xtreemfs_pingMesssage*>(response), - done); - break; - case 31: - xtreemfs_shutdown(controller, - ::google::protobuf::down_cast(request), - ::google::protobuf::down_cast< ::xtreemfs::pbrpc::emptyResponse*>(response), - done); - break; - default: - GOOGLE_LOG(FATAL) << "Bad method index; this should never happen."; - break; - } -} - -const ::google::protobuf::Message& OSDService::GetRequestPrototype( - const ::google::protobuf::MethodDescriptor* method) const { - GOOGLE_DCHECK_EQ(method->service(), descriptor()); - switch(method->index()) { - case 0: - return ::xtreemfs::pbrpc::readRequest::default_instance(); - case 1: - return ::xtreemfs::pbrpc::truncateRequest::default_instance(); - case 2: - return ::xtreemfs::pbrpc::unlink_osd_Request::default_instance(); - case 3: - return ::xtreemfs::pbrpc::writeRequest::default_instance(); - case 4: - return ::xtreemfs::pbrpc::xtreemfs_broadcast_gmaxRequest::default_instance(); - case 5: - return ::xtreemfs::pbrpc::xtreemfs_check_objectRequest::default_instance(); - case 6: - return ::xtreemfs::pbrpc::emptyRequest::default_instance(); - case 7: - return ::xtreemfs::pbrpc::emptyRequest::default_instance(); - case 8: - return ::xtreemfs::pbrpc::xtreemfs_cleanup_startRequest::default_instance(); - case 9: - return ::xtreemfs::pbrpc::emptyRequest::default_instance(); - case 10: - return ::xtreemfs::pbrpc::emptyRequest::default_instance(); - case 11: - return ::xtreemfs::pbrpc::emptyRequest::default_instance(); - case 12: - return ::xtreemfs::pbrpc::xtreemfs_rwr_fetchRequest::default_instance(); - case 13: - return ::xtreemfs::pbrpc::xtreemfs_rwr_flease_msgRequest::default_instance(); - case 14: - return ::xtreemfs::pbrpc::FileCredentials::default_instance(); - case 15: - return ::xtreemfs::pbrpc::xtreemfs_rwr_set_primary_epochRequest::default_instance(); - case 16: - return ::xtreemfs::pbrpc::xtreemfs_rwr_statusRequest::default_instance(); - case 17: - return ::xtreemfs::pbrpc::xtreemfs_rwr_truncateRequest::default_instance(); - case 18: - return ::xtreemfs::pbrpc::xtreemfs_rwr_updateRequest::default_instance(); - case 19: - return ::xtreemfs::pbrpc::xtreemfs_rwr_auth_stateRequest::default_instance(); - case 20: - return ::xtreemfs::pbrpc::xtreemfs_rwr_reset_completeRequest::default_instance(); - case 21: - return ::xtreemfs::pbrpc::xtreemfs_internal_get_gmaxRequest::default_instance(); - case 22: - return ::xtreemfs::pbrpc::truncateRequest::default_instance(); - case 23: - return ::xtreemfs::pbrpc::xtreemfs_internal_get_file_sizeRequest::default_instance(); - case 24: - return ::xtreemfs::pbrpc::xtreemfs_internal_read_localRequest::default_instance(); - case 25: - return ::xtreemfs::pbrpc::xtreemfs_internal_get_object_setRequest::default_instance(); - case 26: - return ::xtreemfs::pbrpc::emptyRequest::default_instance(); - case 27: - return ::xtreemfs::pbrpc::lockRequest::default_instance(); - case 28: - return ::xtreemfs::pbrpc::lockRequest::default_instance(); - case 29: - return ::xtreemfs::pbrpc::lockRequest::default_instance(); - case 30: - return ::xtreemfs::pbrpc::xtreemfs_pingMesssage::default_instance(); - case 31: - return ::xtreemfs::pbrpc::emptyRequest::default_instance(); - default: - GOOGLE_LOG(FATAL) << "Bad method index; this should never happen."; - return *reinterpret_cast< ::google::protobuf::Message*>(NULL); - } -} - -const ::google::protobuf::Message& OSDService::GetResponsePrototype( - const ::google::protobuf::MethodDescriptor* method) const { - GOOGLE_DCHECK_EQ(method->service(), descriptor()); - switch(method->index()) { - case 0: - return ::xtreemfs::pbrpc::ObjectData::default_instance(); - case 1: - return ::xtreemfs::pbrpc::OSDWriteResponse::default_instance(); - case 2: - return ::xtreemfs::pbrpc::emptyResponse::default_instance(); - case 3: - return ::xtreemfs::pbrpc::OSDWriteResponse::default_instance(); - case 4: - return ::xtreemfs::pbrpc::emptyResponse::default_instance(); - case 5: - return ::xtreemfs::pbrpc::ObjectData::default_instance(); - case 6: - return ::xtreemfs::pbrpc::xtreemfs_cleanup_get_resultsResponse::default_instance(); - case 7: - return ::xtreemfs::pbrpc::xtreemfs_cleanup_is_runningResponse::default_instance(); - case 8: - return ::xtreemfs::pbrpc::emptyResponse::default_instance(); - case 9: - return ::xtreemfs::pbrpc::xtreemfs_cleanup_statusResponse::default_instance(); - case 10: - return ::xtreemfs::pbrpc::emptyResponse::default_instance(); - case 11: - return ::xtreemfs::pbrpc::emptyResponse::default_instance(); - case 12: - return ::xtreemfs::pbrpc::ObjectData::default_instance(); - case 13: - return ::xtreemfs::pbrpc::emptyResponse::default_instance(); - case 14: - return ::xtreemfs::pbrpc::emptyResponse::default_instance(); - case 15: - return ::xtreemfs::pbrpc::ObjectData::default_instance(); - case 16: - return ::xtreemfs::pbrpc::ReplicaStatus::default_instance(); - case 17: - return ::xtreemfs::pbrpc::emptyResponse::default_instance(); - case 18: - return ::xtreemfs::pbrpc::emptyResponse::default_instance(); - case 19: - return ::xtreemfs::pbrpc::emptyResponse::default_instance(); - case 20: - return ::xtreemfs::pbrpc::emptyResponse::default_instance(); - case 21: - return ::xtreemfs::pbrpc::InternalGmax::default_instance(); - case 22: - return ::xtreemfs::pbrpc::OSDWriteResponse::default_instance(); - case 23: - return ::xtreemfs::pbrpc::xtreemfs_internal_get_file_sizeResponse::default_instance(); - case 24: - return ::xtreemfs::pbrpc::InternalReadLocalResponse::default_instance(); - case 25: - return ::xtreemfs::pbrpc::ObjectList::default_instance(); - case 26: - return ::xtreemfs::pbrpc::xtreemfs_internal_get_fileid_listResponse::default_instance(); - case 27: - return ::xtreemfs::pbrpc::Lock::default_instance(); - case 28: - return ::xtreemfs::pbrpc::Lock::default_instance(); - case 29: - return ::xtreemfs::pbrpc::emptyResponse::default_instance(); - case 30: - return ::xtreemfs::pbrpc::xtreemfs_pingMesssage::default_instance(); - case 31: - return ::xtreemfs::pbrpc::emptyResponse::default_instance(); - default: - GOOGLE_LOG(FATAL) << "Bad method index; this should never happen."; - return *reinterpret_cast< ::google::protobuf::Message*>(NULL); - } -} - -OSDService_Stub::OSDService_Stub(::google::protobuf::RpcChannel* channel) - : channel_(channel), owns_channel_(false) {} -OSDService_Stub::OSDService_Stub( - ::google::protobuf::RpcChannel* channel, - ::google::protobuf::Service::ChannelOwnership ownership) - : channel_(channel), - owns_channel_(ownership == ::google::protobuf::Service::STUB_OWNS_CHANNEL) {} -OSDService_Stub::~OSDService_Stub() { - if (owns_channel_) delete channel_; -} - -void OSDService_Stub::read(::google::protobuf::RpcController* controller, - const ::xtreemfs::pbrpc::readRequest* request, - ::xtreemfs::pbrpc::ObjectData* response, - ::google::protobuf::Closure* done) { - channel_->CallMethod(descriptor()->method(0), - controller, request, response, done); -} -void OSDService_Stub::truncate(::google::protobuf::RpcController* controller, - const ::xtreemfs::pbrpc::truncateRequest* request, - ::xtreemfs::pbrpc::OSDWriteResponse* response, - ::google::protobuf::Closure* done) { - channel_->CallMethod(descriptor()->method(1), - controller, request, response, done); -} -void OSDService_Stub::unlink(::google::protobuf::RpcController* controller, - const ::xtreemfs::pbrpc::unlink_osd_Request* request, - ::xtreemfs::pbrpc::emptyResponse* response, - ::google::protobuf::Closure* done) { - channel_->CallMethod(descriptor()->method(2), - controller, request, response, done); -} -void OSDService_Stub::write(::google::protobuf::RpcController* controller, - const ::xtreemfs::pbrpc::writeRequest* request, - ::xtreemfs::pbrpc::OSDWriteResponse* response, - ::google::protobuf::Closure* done) { - channel_->CallMethod(descriptor()->method(3), - controller, request, response, done); -} -void OSDService_Stub::xtreemfs_broadcast_gmax(::google::protobuf::RpcController* controller, - const ::xtreemfs::pbrpc::xtreemfs_broadcast_gmaxRequest* request, - ::xtreemfs::pbrpc::emptyResponse* response, - ::google::protobuf::Closure* done) { - channel_->CallMethod(descriptor()->method(4), - controller, request, response, done); -} -void OSDService_Stub::xtreemfs_check_object(::google::protobuf::RpcController* controller, - const ::xtreemfs::pbrpc::xtreemfs_check_objectRequest* request, - ::xtreemfs::pbrpc::ObjectData* response, - ::google::protobuf::Closure* done) { - channel_->CallMethod(descriptor()->method(5), - controller, request, response, done); -} -void OSDService_Stub::xtreemfs_cleanup_get_results(::google::protobuf::RpcController* controller, - const ::xtreemfs::pbrpc::emptyRequest* request, - ::xtreemfs::pbrpc::xtreemfs_cleanup_get_resultsResponse* response, - ::google::protobuf::Closure* done) { - channel_->CallMethod(descriptor()->method(6), - controller, request, response, done); -} -void OSDService_Stub::xtreemfs_cleanup_is_running(::google::protobuf::RpcController* controller, - const ::xtreemfs::pbrpc::emptyRequest* request, - ::xtreemfs::pbrpc::xtreemfs_cleanup_is_runningResponse* response, - ::google::protobuf::Closure* done) { - channel_->CallMethod(descriptor()->method(7), - controller, request, response, done); -} -void OSDService_Stub::xtreemfs_cleanup_start(::google::protobuf::RpcController* controller, - const ::xtreemfs::pbrpc::xtreemfs_cleanup_startRequest* request, - ::xtreemfs::pbrpc::emptyResponse* response, - ::google::protobuf::Closure* done) { - channel_->CallMethod(descriptor()->method(8), - controller, request, response, done); -} -void OSDService_Stub::xtreemfs_cleanup_status(::google::protobuf::RpcController* controller, - const ::xtreemfs::pbrpc::emptyRequest* request, - ::xtreemfs::pbrpc::xtreemfs_cleanup_statusResponse* response, - ::google::protobuf::Closure* done) { - channel_->CallMethod(descriptor()->method(9), - controller, request, response, done); -} -void OSDService_Stub::xtreemfs_cleanup_stop(::google::protobuf::RpcController* controller, - const ::xtreemfs::pbrpc::emptyRequest* request, - ::xtreemfs::pbrpc::emptyResponse* response, - ::google::protobuf::Closure* done) { - channel_->CallMethod(descriptor()->method(10), - controller, request, response, done); -} -void OSDService_Stub::xtreemfs_cleanup_versions_start(::google::protobuf::RpcController* controller, - const ::xtreemfs::pbrpc::emptyRequest* request, - ::xtreemfs::pbrpc::emptyResponse* response, - ::google::protobuf::Closure* done) { - channel_->CallMethod(descriptor()->method(11), - controller, request, response, done); -} -void OSDService_Stub::xtreemfs_rwr_fetch(::google::protobuf::RpcController* controller, - const ::xtreemfs::pbrpc::xtreemfs_rwr_fetchRequest* request, - ::xtreemfs::pbrpc::ObjectData* response, - ::google::protobuf::Closure* done) { - channel_->CallMethod(descriptor()->method(12), - controller, request, response, done); -} -void OSDService_Stub::xtreemfs_rwr_flease_msg(::google::protobuf::RpcController* controller, - const ::xtreemfs::pbrpc::xtreemfs_rwr_flease_msgRequest* request, - ::xtreemfs::pbrpc::emptyResponse* response, - ::google::protobuf::Closure* done) { - channel_->CallMethod(descriptor()->method(13), - controller, request, response, done); -} -void OSDService_Stub::xtreemfs_rwr_notify(::google::protobuf::RpcController* controller, - const ::xtreemfs::pbrpc::FileCredentials* request, - ::xtreemfs::pbrpc::emptyResponse* response, - ::google::protobuf::Closure* done) { - channel_->CallMethod(descriptor()->method(14), - controller, request, response, done); -} -void OSDService_Stub::xtreemfs_rwr_set_primary_epoch(::google::protobuf::RpcController* controller, - const ::xtreemfs::pbrpc::xtreemfs_rwr_set_primary_epochRequest* request, - ::xtreemfs::pbrpc::ObjectData* response, - ::google::protobuf::Closure* done) { - channel_->CallMethod(descriptor()->method(15), - controller, request, response, done); -} -void OSDService_Stub::xtreemfs_rwr_status(::google::protobuf::RpcController* controller, - const ::xtreemfs::pbrpc::xtreemfs_rwr_statusRequest* request, - ::xtreemfs::pbrpc::ReplicaStatus* response, - ::google::protobuf::Closure* done) { - channel_->CallMethod(descriptor()->method(16), - controller, request, response, done); -} -void OSDService_Stub::xtreemfs_rwr_truncate(::google::protobuf::RpcController* controller, - const ::xtreemfs::pbrpc::xtreemfs_rwr_truncateRequest* request, - ::xtreemfs::pbrpc::emptyResponse* response, - ::google::protobuf::Closure* done) { - channel_->CallMethod(descriptor()->method(17), - controller, request, response, done); -} -void OSDService_Stub::xtreemfs_rwr_update(::google::protobuf::RpcController* controller, - const ::xtreemfs::pbrpc::xtreemfs_rwr_updateRequest* request, - ::xtreemfs::pbrpc::emptyResponse* response, - ::google::protobuf::Closure* done) { - channel_->CallMethod(descriptor()->method(18), - controller, request, response, done); -} -void OSDService_Stub::xtreemfs_rwr_auth_state(::google::protobuf::RpcController* controller, - const ::xtreemfs::pbrpc::xtreemfs_rwr_auth_stateRequest* request, - ::xtreemfs::pbrpc::emptyResponse* response, - ::google::protobuf::Closure* done) { - channel_->CallMethod(descriptor()->method(19), - controller, request, response, done); -} -void OSDService_Stub::xtreemfs_rwr_reset_complete(::google::protobuf::RpcController* controller, - const ::xtreemfs::pbrpc::xtreemfs_rwr_reset_completeRequest* request, - ::xtreemfs::pbrpc::emptyResponse* response, - ::google::protobuf::Closure* done) { - channel_->CallMethod(descriptor()->method(20), - controller, request, response, done); -} -void OSDService_Stub::xtreemfs_internal_get_gmax(::google::protobuf::RpcController* controller, - const ::xtreemfs::pbrpc::xtreemfs_internal_get_gmaxRequest* request, - ::xtreemfs::pbrpc::InternalGmax* response, - ::google::protobuf::Closure* done) { - channel_->CallMethod(descriptor()->method(21), - controller, request, response, done); -} -void OSDService_Stub::xtreemfs_internal_truncate(::google::protobuf::RpcController* controller, - const ::xtreemfs::pbrpc::truncateRequest* request, - ::xtreemfs::pbrpc::OSDWriteResponse* response, - ::google::protobuf::Closure* done) { - channel_->CallMethod(descriptor()->method(22), - controller, request, response, done); -} -void OSDService_Stub::xtreemfs_internal_get_file_size(::google::protobuf::RpcController* controller, - const ::xtreemfs::pbrpc::xtreemfs_internal_get_file_sizeRequest* request, - ::xtreemfs::pbrpc::xtreemfs_internal_get_file_sizeResponse* response, - ::google::protobuf::Closure* done) { - channel_->CallMethod(descriptor()->method(23), - controller, request, response, done); -} -void OSDService_Stub::xtreemfs_internal_read_local(::google::protobuf::RpcController* controller, - const ::xtreemfs::pbrpc::xtreemfs_internal_read_localRequest* request, - ::xtreemfs::pbrpc::InternalReadLocalResponse* response, - ::google::protobuf::Closure* done) { - channel_->CallMethod(descriptor()->method(24), - controller, request, response, done); -} -void OSDService_Stub::xtreemfs_internal_get_object_set(::google::protobuf::RpcController* controller, - const ::xtreemfs::pbrpc::xtreemfs_internal_get_object_setRequest* request, - ::xtreemfs::pbrpc::ObjectList* response, - ::google::protobuf::Closure* done) { - channel_->CallMethod(descriptor()->method(25), - controller, request, response, done); -} -void OSDService_Stub::xtreemfs_internal_get_fileid_list(::google::protobuf::RpcController* controller, - const ::xtreemfs::pbrpc::emptyRequest* request, - ::xtreemfs::pbrpc::xtreemfs_internal_get_fileid_listResponse* response, - ::google::protobuf::Closure* done) { - channel_->CallMethod(descriptor()->method(26), - controller, request, response, done); -} -void OSDService_Stub::xtreemfs_lock_acquire(::google::protobuf::RpcController* controller, - const ::xtreemfs::pbrpc::lockRequest* request, - ::xtreemfs::pbrpc::Lock* response, - ::google::protobuf::Closure* done) { - channel_->CallMethod(descriptor()->method(27), - controller, request, response, done); -} -void OSDService_Stub::xtreemfs_lock_check(::google::protobuf::RpcController* controller, - const ::xtreemfs::pbrpc::lockRequest* request, - ::xtreemfs::pbrpc::Lock* response, - ::google::protobuf::Closure* done) { - channel_->CallMethod(descriptor()->method(28), - controller, request, response, done); -} -void OSDService_Stub::xtreemfs_lock_release(::google::protobuf::RpcController* controller, - const ::xtreemfs::pbrpc::lockRequest* request, - ::xtreemfs::pbrpc::emptyResponse* response, - ::google::protobuf::Closure* done) { - channel_->CallMethod(descriptor()->method(29), - controller, request, response, done); -} -void OSDService_Stub::xtreemfs_ping(::google::protobuf::RpcController* controller, - const ::xtreemfs::pbrpc::xtreemfs_pingMesssage* request, - ::xtreemfs::pbrpc::xtreemfs_pingMesssage* response, - ::google::protobuf::Closure* done) { - channel_->CallMethod(descriptor()->method(30), - controller, request, response, done); -} -void OSDService_Stub::xtreemfs_shutdown(::google::protobuf::RpcController* controller, - const ::xtreemfs::pbrpc::emptyRequest* request, - ::xtreemfs::pbrpc::emptyResponse* response, - ::google::protobuf::Closure* done) { - channel_->CallMethod(descriptor()->method(31), - controller, request, response, done); -} - // @@protoc_insertion_point(namespace_scope) } // namespace pbrpc diff --git a/cpp/generated/xtreemfs/OSD.pb.h b/cpp/generated/xtreemfs/OSD.pb.h index 4c304f788..36ef02178 100644 --- a/cpp/generated/xtreemfs/OSD.pb.h +++ b/cpp/generated/xtreemfs/OSD.pb.h @@ -8,22 +8,22 @@ #include -#if GOOGLE_PROTOBUF_VERSION < 2003000 +#if GOOGLE_PROTOBUF_VERSION < 2005000 #error This file was generated by a newer version of protoc which is #error incompatible with your Protocol Buffer headers. Please update #error your headers. #endif -#if 2003000 < GOOGLE_PROTOBUF_MIN_PROTOC_VERSION +#if 2005000 < GOOGLE_PROTOBUF_MIN_PROTOC_VERSION #error This file was generated by an older version of protoc which is #error incompatible with your Protocol Buffer headers. Please #error regenerate this file with a newer version of protoc. #endif #include +#include #include #include -#include -#include +#include #include "include/PBRPC.pb.h" #include "include/Common.pb.h" #include "xtreemfs/GlobalTypes.pb.h" @@ -59,6 +59,7 @@ class xtreemfs_cleanup_is_runningResponse; class xtreemfs_cleanup_startRequest; class xtreemfs_cleanup_statusResponse; class xtreemfs_rwr_fetchRequest; +class xtreemfs_repair_objectRequest; class xtreemfs_rwr_flease_msgRequest; class xtreemfs_rwr_set_primary_epochRequest; class xtreemfs_rwr_statusRequest; @@ -81,29 +82,29 @@ class InternalGmax : public ::google::protobuf::Message { public: InternalGmax(); virtual ~InternalGmax(); - + InternalGmax(const InternalGmax& from); - + inline InternalGmax& operator=(const InternalGmax& from) { CopyFrom(from); return *this; } - + inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const { return _unknown_fields_; } - + inline ::google::protobuf::UnknownFieldSet* mutable_unknown_fields() { return &_unknown_fields_; } - + static const ::google::protobuf::Descriptor* descriptor(); static const InternalGmax& default_instance(); - + void Swap(InternalGmax* other); - + // implements Message ---------------------------------------------- - + InternalGmax* New() const; void CopyFrom(const ::google::protobuf::Message& from); void MergeFrom(const ::google::protobuf::Message& from); @@ -111,7 +112,7 @@ class InternalGmax : public ::google::protobuf::Message { void MergeFrom(const InternalGmax& from); void Clear(); bool IsInitialized() const; - + int ByteSize() const; bool MergePartialFromCodedStream( ::google::protobuf::io::CodedInputStream* input); @@ -124,59 +125,56 @@ class InternalGmax : public ::google::protobuf::Message { void SharedDtor(); void SetCachedSize(int size) const; public: - + ::google::protobuf::Metadata GetMetadata() const; - + // nested types ---------------------------------------------------- - + // accessors ------------------------------------------------------- - + // required fixed64 epoch = 1; inline bool has_epoch() const; inline void clear_epoch(); static const int kEpochFieldNumber = 1; inline ::google::protobuf::uint64 epoch() const; inline void set_epoch(::google::protobuf::uint64 value); - + // required fixed64 file_size = 2; inline bool has_file_size() const; inline void clear_file_size(); static const int kFileSizeFieldNumber = 2; inline ::google::protobuf::uint64 file_size() const; inline void set_file_size(::google::protobuf::uint64 value); - + // required fixed64 last_object_id = 3; inline bool has_last_object_id() const; inline void clear_last_object_id(); static const int kLastObjectIdFieldNumber = 3; inline ::google::protobuf::uint64 last_object_id() const; inline void set_last_object_id(::google::protobuf::uint64 value); - + // @@protoc_insertion_point(class_scope:xtreemfs.pbrpc.InternalGmax) private: + inline void set_has_epoch(); + inline void clear_has_epoch(); + inline void set_has_file_size(); + inline void clear_has_file_size(); + inline void set_has_last_object_id(); + inline void clear_has_last_object_id(); + ::google::protobuf::UnknownFieldSet _unknown_fields_; - mutable int _cached_size_; - + ::google::protobuf::uint64 epoch_; ::google::protobuf::uint64 file_size_; ::google::protobuf::uint64 last_object_id_; + + mutable int _cached_size_; + ::google::protobuf::uint32 _has_bits_[(3 + 31) / 32]; + friend void protobuf_AddDesc_xtreemfs_2fOSD_2eproto(); friend void protobuf_AssignDesc_xtreemfs_2fOSD_2eproto(); friend void protobuf_ShutdownFile_xtreemfs_2fOSD_2eproto(); - - ::google::protobuf::uint32 _has_bits_[(3 + 31) / 32]; - - // WHY DOES & HAVE LOWER PRECEDENCE THAN != !? - inline bool _has_bit(int index) const { - return (_has_bits_[index / 32] & (1u << (index % 32))) != 0; - } - inline void _set_bit(int index) { - _has_bits_[index / 32] |= (1u << (index % 32)); - } - inline void _clear_bit(int index) { - _has_bits_[index / 32] &= ~(1u << (index % 32)); - } - + void InitAsDefaultInstance(); static InternalGmax* default_instance_; }; @@ -186,29 +184,29 @@ class Lock : public ::google::protobuf::Message { public: Lock(); virtual ~Lock(); - + Lock(const Lock& from); - + inline Lock& operator=(const Lock& from) { CopyFrom(from); return *this; } - + inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const { return _unknown_fields_; } - + inline ::google::protobuf::UnknownFieldSet* mutable_unknown_fields() { return &_unknown_fields_; } - + static const ::google::protobuf::Descriptor* descriptor(); static const Lock& default_instance(); - + void Swap(Lock* other); - + // implements Message ---------------------------------------------- - + Lock* New() const; void CopyFrom(const ::google::protobuf::Message& from); void MergeFrom(const ::google::protobuf::Message& from); @@ -216,7 +214,7 @@ class Lock : public ::google::protobuf::Message { void MergeFrom(const Lock& from); void Clear(); bool IsInitialized() const; - + int ByteSize() const; bool MergePartialFromCodedStream( ::google::protobuf::io::CodedInputStream* input); @@ -229,20 +227,20 @@ class Lock : public ::google::protobuf::Message { void SharedDtor(); void SetCachedSize(int size) const; public: - + ::google::protobuf::Metadata GetMetadata() const; - + // nested types ---------------------------------------------------- - + // accessors ------------------------------------------------------- - + // required fixed32 client_pid = 1; inline bool has_client_pid() const; inline void clear_client_pid(); static const int kClientPidFieldNumber = 1; inline ::google::protobuf::uint32 client_pid() const; inline void set_client_pid(::google::protobuf::uint32 value); - + // required string client_uuid = 2; inline bool has_client_uuid() const; inline void clear_client_uuid(); @@ -252,56 +250,58 @@ class Lock : public ::google::protobuf::Message { inline void set_client_uuid(const char* value); inline void set_client_uuid(const char* value, size_t size); inline ::std::string* mutable_client_uuid(); - + inline ::std::string* release_client_uuid(); + inline void set_allocated_client_uuid(::std::string* client_uuid); + // required fixed64 length = 3; inline bool has_length() const; inline void clear_length(); static const int kLengthFieldNumber = 3; inline ::google::protobuf::uint64 length() const; inline void set_length(::google::protobuf::uint64 value); - + // required fixed64 offset = 4; inline bool has_offset() const; inline void clear_offset(); static const int kOffsetFieldNumber = 4; inline ::google::protobuf::uint64 offset() const; inline void set_offset(::google::protobuf::uint64 value); - + // required bool exclusive = 5; inline bool has_exclusive() const; inline void clear_exclusive(); static const int kExclusiveFieldNumber = 5; inline bool exclusive() const; inline void set_exclusive(bool value); - + // @@protoc_insertion_point(class_scope:xtreemfs.pbrpc.Lock) private: + inline void set_has_client_pid(); + inline void clear_has_client_pid(); + inline void set_has_client_uuid(); + inline void clear_has_client_uuid(); + inline void set_has_length(); + inline void clear_has_length(); + inline void set_has_offset(); + inline void clear_has_offset(); + inline void set_has_exclusive(); + inline void clear_has_exclusive(); + ::google::protobuf::UnknownFieldSet _unknown_fields_; - mutable int _cached_size_; - - ::google::protobuf::uint32 client_pid_; + ::std::string* client_uuid_; - static const ::std::string _default_client_uuid_; ::google::protobuf::uint64 length_; - ::google::protobuf::uint64 offset_; + ::google::protobuf::uint32 client_pid_; bool exclusive_; + ::google::protobuf::uint64 offset_; + + mutable int _cached_size_; + ::google::protobuf::uint32 _has_bits_[(5 + 31) / 32]; + friend void protobuf_AddDesc_xtreemfs_2fOSD_2eproto(); friend void protobuf_AssignDesc_xtreemfs_2fOSD_2eproto(); friend void protobuf_ShutdownFile_xtreemfs_2fOSD_2eproto(); - - ::google::protobuf::uint32 _has_bits_[(5 + 31) / 32]; - - // WHY DOES & HAVE LOWER PRECEDENCE THAN != !? - inline bool _has_bit(int index) const { - return (_has_bits_[index / 32] & (1u << (index % 32))) != 0; - } - inline void _set_bit(int index) { - _has_bits_[index / 32] |= (1u << (index % 32)); - } - inline void _clear_bit(int index) { - _has_bits_[index / 32] &= ~(1u << (index % 32)); - } - + void InitAsDefaultInstance(); static Lock* default_instance_; }; @@ -311,29 +311,29 @@ class ObjectData : public ::google::protobuf::Message { public: ObjectData(); virtual ~ObjectData(); - + ObjectData(const ObjectData& from); - + inline ObjectData& operator=(const ObjectData& from) { CopyFrom(from); return *this; } - + inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const { return _unknown_fields_; } - + inline ::google::protobuf::UnknownFieldSet* mutable_unknown_fields() { return &_unknown_fields_; } - + static const ::google::protobuf::Descriptor* descriptor(); static const ObjectData& default_instance(); - + void Swap(ObjectData* other); - + // implements Message ---------------------------------------------- - + ObjectData* New() const; void CopyFrom(const ::google::protobuf::Message& from); void MergeFrom(const ::google::protobuf::Message& from); @@ -341,7 +341,7 @@ class ObjectData : public ::google::protobuf::Message { void MergeFrom(const ObjectData& from); void Clear(); bool IsInitialized() const; - + int ByteSize() const; bool MergePartialFromCodedStream( ::google::protobuf::io::CodedInputStream* input); @@ -354,59 +354,56 @@ class ObjectData : public ::google::protobuf::Message { void SharedDtor(); void SetCachedSize(int size) const; public: - + ::google::protobuf::Metadata GetMetadata() const; - + // nested types ---------------------------------------------------- - + // accessors ------------------------------------------------------- - + // required fixed32 checksum = 1; inline bool has_checksum() const; inline void clear_checksum(); static const int kChecksumFieldNumber = 1; inline ::google::protobuf::uint32 checksum() const; inline void set_checksum(::google::protobuf::uint32 value); - + // required bool invalid_checksum_on_osd = 2; inline bool has_invalid_checksum_on_osd() const; inline void clear_invalid_checksum_on_osd(); static const int kInvalidChecksumOnOsdFieldNumber = 2; inline bool invalid_checksum_on_osd() const; inline void set_invalid_checksum_on_osd(bool value); - + // required fixed32 zero_padding = 3; inline bool has_zero_padding() const; inline void clear_zero_padding(); static const int kZeroPaddingFieldNumber = 3; inline ::google::protobuf::uint32 zero_padding() const; inline void set_zero_padding(::google::protobuf::uint32 value); - + // @@protoc_insertion_point(class_scope:xtreemfs.pbrpc.ObjectData) private: + inline void set_has_checksum(); + inline void clear_has_checksum(); + inline void set_has_invalid_checksum_on_osd(); + inline void clear_has_invalid_checksum_on_osd(); + inline void set_has_zero_padding(); + inline void clear_has_zero_padding(); + ::google::protobuf::UnknownFieldSet _unknown_fields_; - mutable int _cached_size_; - + ::google::protobuf::uint32 checksum_; bool invalid_checksum_on_osd_; ::google::protobuf::uint32 zero_padding_; + + mutable int _cached_size_; + ::google::protobuf::uint32 _has_bits_[(3 + 31) / 32]; + friend void protobuf_AddDesc_xtreemfs_2fOSD_2eproto(); friend void protobuf_AssignDesc_xtreemfs_2fOSD_2eproto(); friend void protobuf_ShutdownFile_xtreemfs_2fOSD_2eproto(); - - ::google::protobuf::uint32 _has_bits_[(3 + 31) / 32]; - - // WHY DOES & HAVE LOWER PRECEDENCE THAN != !? - inline bool _has_bit(int index) const { - return (_has_bits_[index / 32] & (1u << (index % 32))) != 0; - } - inline void _set_bit(int index) { - _has_bits_[index / 32] |= (1u << (index % 32)); - } - inline void _clear_bit(int index) { - _has_bits_[index / 32] &= ~(1u << (index % 32)); - } - + void InitAsDefaultInstance(); static ObjectData* default_instance_; }; @@ -416,29 +413,29 @@ class ObjectList : public ::google::protobuf::Message { public: ObjectList(); virtual ~ObjectList(); - + ObjectList(const ObjectList& from); - + inline ObjectList& operator=(const ObjectList& from) { CopyFrom(from); return *this; } - + inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const { return _unknown_fields_; } - + inline ::google::protobuf::UnknownFieldSet* mutable_unknown_fields() { return &_unknown_fields_; } - + static const ::google::protobuf::Descriptor* descriptor(); static const ObjectList& default_instance(); - + void Swap(ObjectList* other); - + // implements Message ---------------------------------------------- - + ObjectList* New() const; void CopyFrom(const ::google::protobuf::Message& from); void MergeFrom(const ::google::protobuf::Message& from); @@ -446,7 +443,7 @@ class ObjectList : public ::google::protobuf::Message { void MergeFrom(const ObjectList& from); void Clear(); bool IsInitialized() const; - + int ByteSize() const; bool MergePartialFromCodedStream( ::google::protobuf::io::CodedInputStream* input); @@ -459,13 +456,13 @@ class ObjectList : public ::google::protobuf::Message { void SharedDtor(); void SetCachedSize(int size) const; public: - + ::google::protobuf::Metadata GetMetadata() const; - + // nested types ---------------------------------------------------- - + // accessors ------------------------------------------------------- - + // required bytes set = 1; inline bool has_set() const; inline void clear_set(); @@ -475,47 +472,45 @@ class ObjectList : public ::google::protobuf::Message { inline void set_set(const char* value); inline void set_set(const void* value, size_t size); inline ::std::string* mutable_set(); - + inline ::std::string* release_set(); + inline void set_allocated_set(::std::string* set); + // required fixed32 stripe_width = 2; inline bool has_stripe_width() const; inline void clear_stripe_width(); static const int kStripeWidthFieldNumber = 2; inline ::google::protobuf::uint32 stripe_width() const; inline void set_stripe_width(::google::protobuf::uint32 value); - + // required fixed32 first_ = 3; inline bool has_first_() const; inline void clear_first_(); static const int kFirstFieldNumber = 3; inline ::google::protobuf::uint32 first_() const; inline void set_first_(::google::protobuf::uint32 value); - + // @@protoc_insertion_point(class_scope:xtreemfs.pbrpc.ObjectList) private: + inline void set_has_set(); + inline void clear_has_set(); + inline void set_has_stripe_width(); + inline void clear_has_stripe_width(); + inline void set_has_first_(); + inline void clear_has_first_(); + ::google::protobuf::UnknownFieldSet _unknown_fields_; - mutable int _cached_size_; - + ::std::string* set_; - static const ::std::string _default_set_; ::google::protobuf::uint32 stripe_width_; ::google::protobuf::uint32 first__; + + mutable int _cached_size_; + ::google::protobuf::uint32 _has_bits_[(3 + 31) / 32]; + friend void protobuf_AddDesc_xtreemfs_2fOSD_2eproto(); friend void protobuf_AssignDesc_xtreemfs_2fOSD_2eproto(); friend void protobuf_ShutdownFile_xtreemfs_2fOSD_2eproto(); - - ::google::protobuf::uint32 _has_bits_[(3 + 31) / 32]; - - // WHY DOES & HAVE LOWER PRECEDENCE THAN != !? - inline bool _has_bit(int index) const { - return (_has_bits_[index / 32] & (1u << (index % 32))) != 0; - } - inline void _set_bit(int index) { - _has_bits_[index / 32] |= (1u << (index % 32)); - } - inline void _clear_bit(int index) { - _has_bits_[index / 32] &= ~(1u << (index % 32)); - } - + void InitAsDefaultInstance(); static ObjectList* default_instance_; }; @@ -525,29 +520,29 @@ class ObjectVersion : public ::google::protobuf::Message { public: ObjectVersion(); virtual ~ObjectVersion(); - + ObjectVersion(const ObjectVersion& from); - + inline ObjectVersion& operator=(const ObjectVersion& from) { CopyFrom(from); return *this; } - + inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const { return _unknown_fields_; } - + inline ::google::protobuf::UnknownFieldSet* mutable_unknown_fields() { return &_unknown_fields_; } - + static const ::google::protobuf::Descriptor* descriptor(); static const ObjectVersion& default_instance(); - + void Swap(ObjectVersion* other); - + // implements Message ---------------------------------------------- - + ObjectVersion* New() const; void CopyFrom(const ::google::protobuf::Message& from); void MergeFrom(const ::google::protobuf::Message& from); @@ -555,7 +550,7 @@ class ObjectVersion : public ::google::protobuf::Message { void MergeFrom(const ObjectVersion& from); void Clear(); bool IsInitialized() const; - + int ByteSize() const; bool MergePartialFromCodedStream( ::google::protobuf::io::CodedInputStream* input); @@ -568,51 +563,46 @@ class ObjectVersion : public ::google::protobuf::Message { void SharedDtor(); void SetCachedSize(int size) const; public: - + ::google::protobuf::Metadata GetMetadata() const; - + // nested types ---------------------------------------------------- - + // accessors ------------------------------------------------------- - + // required fixed64 object_number = 1; inline bool has_object_number() const; inline void clear_object_number(); static const int kObjectNumberFieldNumber = 1; inline ::google::protobuf::uint64 object_number() const; inline void set_object_number(::google::protobuf::uint64 value); - + // required fixed64 object_version = 2; inline bool has_object_version() const; inline void clear_object_version(); static const int kObjectVersionFieldNumber = 2; inline ::google::protobuf::uint64 object_version() const; inline void set_object_version(::google::protobuf::uint64 value); - + // @@protoc_insertion_point(class_scope:xtreemfs.pbrpc.ObjectVersion) private: + inline void set_has_object_number(); + inline void clear_has_object_number(); + inline void set_has_object_version(); + inline void clear_has_object_version(); + ::google::protobuf::UnknownFieldSet _unknown_fields_; - mutable int _cached_size_; - + ::google::protobuf::uint64 object_number_; ::google::protobuf::uint64 object_version_; + + mutable int _cached_size_; + ::google::protobuf::uint32 _has_bits_[(2 + 31) / 32]; + friend void protobuf_AddDesc_xtreemfs_2fOSD_2eproto(); friend void protobuf_AssignDesc_xtreemfs_2fOSD_2eproto(); friend void protobuf_ShutdownFile_xtreemfs_2fOSD_2eproto(); - - ::google::protobuf::uint32 _has_bits_[(2 + 31) / 32]; - - // WHY DOES & HAVE LOWER PRECEDENCE THAN != !? - inline bool _has_bit(int index) const { - return (_has_bits_[index / 32] & (1u << (index % 32))) != 0; - } - inline void _set_bit(int index) { - _has_bits_[index / 32] |= (1u << (index % 32)); - } - inline void _clear_bit(int index) { - _has_bits_[index / 32] &= ~(1u << (index % 32)); - } - + void InitAsDefaultInstance(); static ObjectVersion* default_instance_; }; @@ -622,29 +612,29 @@ class TruncateRecord : public ::google::protobuf::Message { public: TruncateRecord(); virtual ~TruncateRecord(); - + TruncateRecord(const TruncateRecord& from); - + inline TruncateRecord& operator=(const TruncateRecord& from) { CopyFrom(from); return *this; } - + inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const { return _unknown_fields_; } - + inline ::google::protobuf::UnknownFieldSet* mutable_unknown_fields() { return &_unknown_fields_; } - + static const ::google::protobuf::Descriptor* descriptor(); static const TruncateRecord& default_instance(); - + void Swap(TruncateRecord* other); - + // implements Message ---------------------------------------------- - + TruncateRecord* New() const; void CopyFrom(const ::google::protobuf::Message& from); void MergeFrom(const ::google::protobuf::Message& from); @@ -652,7 +642,7 @@ class TruncateRecord : public ::google::protobuf::Message { void MergeFrom(const TruncateRecord& from); void Clear(); bool IsInitialized() const; - + int ByteSize() const; bool MergePartialFromCodedStream( ::google::protobuf::io::CodedInputStream* input); @@ -665,51 +655,46 @@ class TruncateRecord : public ::google::protobuf::Message { void SharedDtor(); void SetCachedSize(int size) const; public: - + ::google::protobuf::Metadata GetMetadata() const; - + // nested types ---------------------------------------------------- - + // accessors ------------------------------------------------------- - + // required fixed64 version = 1; inline bool has_version() const; inline void clear_version(); static const int kVersionFieldNumber = 1; inline ::google::protobuf::uint64 version() const; inline void set_version(::google::protobuf::uint64 value); - + // required fixed64 last_object_number = 2; inline bool has_last_object_number() const; inline void clear_last_object_number(); static const int kLastObjectNumberFieldNumber = 2; inline ::google::protobuf::uint64 last_object_number() const; inline void set_last_object_number(::google::protobuf::uint64 value); - + // @@protoc_insertion_point(class_scope:xtreemfs.pbrpc.TruncateRecord) private: + inline void set_has_version(); + inline void clear_has_version(); + inline void set_has_last_object_number(); + inline void clear_has_last_object_number(); + ::google::protobuf::UnknownFieldSet _unknown_fields_; - mutable int _cached_size_; - + ::google::protobuf::uint64 version_; ::google::protobuf::uint64 last_object_number_; + + mutable int _cached_size_; + ::google::protobuf::uint32 _has_bits_[(2 + 31) / 32]; + friend void protobuf_AddDesc_xtreemfs_2fOSD_2eproto(); friend void protobuf_AssignDesc_xtreemfs_2fOSD_2eproto(); friend void protobuf_ShutdownFile_xtreemfs_2fOSD_2eproto(); - - ::google::protobuf::uint32 _has_bits_[(2 + 31) / 32]; - - // WHY DOES & HAVE LOWER PRECEDENCE THAN != !? - inline bool _has_bit(int index) const { - return (_has_bits_[index / 32] & (1u << (index % 32))) != 0; - } - inline void _set_bit(int index) { - _has_bits_[index / 32] |= (1u << (index % 32)); - } - inline void _clear_bit(int index) { - _has_bits_[index / 32] &= ~(1u << (index % 32)); - } - + void InitAsDefaultInstance(); static TruncateRecord* default_instance_; }; @@ -719,29 +704,29 @@ class TruncateLog : public ::google::protobuf::Message { public: TruncateLog(); virtual ~TruncateLog(); - + TruncateLog(const TruncateLog& from); - + inline TruncateLog& operator=(const TruncateLog& from) { CopyFrom(from); return *this; } - + inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const { return _unknown_fields_; } - + inline ::google::protobuf::UnknownFieldSet* mutable_unknown_fields() { return &_unknown_fields_; } - + static const ::google::protobuf::Descriptor* descriptor(); static const TruncateLog& default_instance(); - + void Swap(TruncateLog* other); - + // implements Message ---------------------------------------------- - + TruncateLog* New() const; void CopyFrom(const ::google::protobuf::Message& from); void MergeFrom(const ::google::protobuf::Message& from); @@ -749,7 +734,7 @@ class TruncateLog : public ::google::protobuf::Message { void MergeFrom(const TruncateLog& from); void Clear(); bool IsInitialized() const; - + int ByteSize() const; bool MergePartialFromCodedStream( ::google::protobuf::io::CodedInputStream* input); @@ -762,13 +747,13 @@ class TruncateLog : public ::google::protobuf::Message { void SharedDtor(); void SetCachedSize(int size) const; public: - + ::google::protobuf::Metadata GetMetadata() const; - + // nested types ---------------------------------------------------- - + // accessors ------------------------------------------------------- - + // repeated .xtreemfs.pbrpc.TruncateRecord records = 1; inline int records_size() const; inline void clear_records(); @@ -780,30 +765,21 @@ class TruncateLog : public ::google::protobuf::Message { records() const; inline ::google::protobuf::RepeatedPtrField< ::xtreemfs::pbrpc::TruncateRecord >* mutable_records(); - + // @@protoc_insertion_point(class_scope:xtreemfs.pbrpc.TruncateLog) private: + ::google::protobuf::UnknownFieldSet _unknown_fields_; - mutable int _cached_size_; - + ::google::protobuf::RepeatedPtrField< ::xtreemfs::pbrpc::TruncateRecord > records_; + + mutable int _cached_size_; + ::google::protobuf::uint32 _has_bits_[(1 + 31) / 32]; + friend void protobuf_AddDesc_xtreemfs_2fOSD_2eproto(); friend void protobuf_AssignDesc_xtreemfs_2fOSD_2eproto(); friend void protobuf_ShutdownFile_xtreemfs_2fOSD_2eproto(); - - ::google::protobuf::uint32 _has_bits_[(1 + 31) / 32]; - - // WHY DOES & HAVE LOWER PRECEDENCE THAN != !? - inline bool _has_bit(int index) const { - return (_has_bits_[index / 32] & (1u << (index % 32))) != 0; - } - inline void _set_bit(int index) { - _has_bits_[index / 32] |= (1u << (index % 32)); - } - inline void _clear_bit(int index) { - _has_bits_[index / 32] &= ~(1u << (index % 32)); - } - + void InitAsDefaultInstance(); static TruncateLog* default_instance_; }; @@ -813,29 +789,29 @@ class ReplicaStatus : public ::google::protobuf::Message { public: ReplicaStatus(); virtual ~ReplicaStatus(); - + ReplicaStatus(const ReplicaStatus& from); - + inline ReplicaStatus& operator=(const ReplicaStatus& from) { CopyFrom(from); return *this; } - + inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const { return _unknown_fields_; } - + inline ::google::protobuf::UnknownFieldSet* mutable_unknown_fields() { return &_unknown_fields_; } - + static const ::google::protobuf::Descriptor* descriptor(); static const ReplicaStatus& default_instance(); - + void Swap(ReplicaStatus* other); - + // implements Message ---------------------------------------------- - + ReplicaStatus* New() const; void CopyFrom(const ::google::protobuf::Message& from); void MergeFrom(const ::google::protobuf::Message& from); @@ -843,7 +819,7 @@ class ReplicaStatus : public ::google::protobuf::Message { void MergeFrom(const ReplicaStatus& from); void Clear(); bool IsInitialized() const; - + int ByteSize() const; bool MergePartialFromCodedStream( ::google::protobuf::io::CodedInputStream* input); @@ -856,41 +832,41 @@ class ReplicaStatus : public ::google::protobuf::Message { void SharedDtor(); void SetCachedSize(int size) const; public: - + ::google::protobuf::Metadata GetMetadata() const; - + // nested types ---------------------------------------------------- - + // accessors ------------------------------------------------------- - + // required fixed64 truncate_epoch = 1; inline bool has_truncate_epoch() const; inline void clear_truncate_epoch(); static const int kTruncateEpochFieldNumber = 1; inline ::google::protobuf::uint64 truncate_epoch() const; inline void set_truncate_epoch(::google::protobuf::uint64 value); - + // required fixed64 file_size = 2; inline bool has_file_size() const; inline void clear_file_size(); static const int kFileSizeFieldNumber = 2; inline ::google::protobuf::uint64 file_size() const; inline void set_file_size(::google::protobuf::uint64 value); - + // required fixed64 max_obj_version = 3; inline bool has_max_obj_version() const; inline void clear_max_obj_version(); static const int kMaxObjVersionFieldNumber = 3; inline ::google::protobuf::uint64 max_obj_version() const; inline void set_max_obj_version(::google::protobuf::uint64 value); - + // required fixed32 primary_epoch = 4; inline bool has_primary_epoch() const; inline void clear_primary_epoch(); static const int kPrimaryEpochFieldNumber = 4; inline ::google::protobuf::uint32 primary_epoch() const; inline void set_primary_epoch(::google::protobuf::uint32 value); - + // repeated .xtreemfs.pbrpc.ObjectVersion objectVersions = 5; inline int objectversions_size() const; inline void clear_objectversions(); @@ -902,42 +878,45 @@ class ReplicaStatus : public ::google::protobuf::Message { objectversions() const; inline ::google::protobuf::RepeatedPtrField< ::xtreemfs::pbrpc::ObjectVersion >* mutable_objectversions(); - + // required .xtreemfs.pbrpc.TruncateLog truncate_log = 6; inline bool has_truncate_log() const; inline void clear_truncate_log(); static const int kTruncateLogFieldNumber = 6; inline const ::xtreemfs::pbrpc::TruncateLog& truncate_log() const; inline ::xtreemfs::pbrpc::TruncateLog* mutable_truncate_log(); - + inline ::xtreemfs::pbrpc::TruncateLog* release_truncate_log(); + inline void set_allocated_truncate_log(::xtreemfs::pbrpc::TruncateLog* truncate_log); + // @@protoc_insertion_point(class_scope:xtreemfs.pbrpc.ReplicaStatus) private: + inline void set_has_truncate_epoch(); + inline void clear_has_truncate_epoch(); + inline void set_has_file_size(); + inline void clear_has_file_size(); + inline void set_has_max_obj_version(); + inline void clear_has_max_obj_version(); + inline void set_has_primary_epoch(); + inline void clear_has_primary_epoch(); + inline void set_has_truncate_log(); + inline void clear_has_truncate_log(); + ::google::protobuf::UnknownFieldSet _unknown_fields_; - mutable int _cached_size_; - + ::google::protobuf::uint64 truncate_epoch_; ::google::protobuf::uint64 file_size_; ::google::protobuf::uint64 max_obj_version_; - ::google::protobuf::uint32 primary_epoch_; ::google::protobuf::RepeatedPtrField< ::xtreemfs::pbrpc::ObjectVersion > objectversions_; ::xtreemfs::pbrpc::TruncateLog* truncate_log_; + ::google::protobuf::uint32 primary_epoch_; + + mutable int _cached_size_; + ::google::protobuf::uint32 _has_bits_[(6 + 31) / 32]; + friend void protobuf_AddDesc_xtreemfs_2fOSD_2eproto(); friend void protobuf_AssignDesc_xtreemfs_2fOSD_2eproto(); friend void protobuf_ShutdownFile_xtreemfs_2fOSD_2eproto(); - - ::google::protobuf::uint32 _has_bits_[(6 + 31) / 32]; - - // WHY DOES & HAVE LOWER PRECEDENCE THAN != !? - inline bool _has_bit(int index) const { - return (_has_bits_[index / 32] & (1u << (index % 32))) != 0; - } - inline void _set_bit(int index) { - _has_bits_[index / 32] |= (1u << (index % 32)); - } - inline void _clear_bit(int index) { - _has_bits_[index / 32] &= ~(1u << (index % 32)); - } - + void InitAsDefaultInstance(); static ReplicaStatus* default_instance_; }; @@ -947,29 +926,29 @@ class ObjectVersionMapping : public ::google::protobuf::Message { public: ObjectVersionMapping(); virtual ~ObjectVersionMapping(); - + ObjectVersionMapping(const ObjectVersionMapping& from); - + inline ObjectVersionMapping& operator=(const ObjectVersionMapping& from) { CopyFrom(from); return *this; } - + inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const { return _unknown_fields_; } - + inline ::google::protobuf::UnknownFieldSet* mutable_unknown_fields() { return &_unknown_fields_; } - + static const ::google::protobuf::Descriptor* descriptor(); static const ObjectVersionMapping& default_instance(); - + void Swap(ObjectVersionMapping* other); - + // implements Message ---------------------------------------------- - + ObjectVersionMapping* New() const; void CopyFrom(const ::google::protobuf::Message& from); void MergeFrom(const ::google::protobuf::Message& from); @@ -977,7 +956,7 @@ class ObjectVersionMapping : public ::google::protobuf::Message { void MergeFrom(const ObjectVersionMapping& from); void Clear(); bool IsInitialized() const; - + int ByteSize() const; bool MergePartialFromCodedStream( ::google::protobuf::io::CodedInputStream* input); @@ -990,27 +969,27 @@ class ObjectVersionMapping : public ::google::protobuf::Message { void SharedDtor(); void SetCachedSize(int size) const; public: - + ::google::protobuf::Metadata GetMetadata() const; - + // nested types ---------------------------------------------------- - + // accessors ------------------------------------------------------- - + // required fixed64 object_number = 1; inline bool has_object_number() const; inline void clear_object_number(); static const int kObjectNumberFieldNumber = 1; inline ::google::protobuf::uint64 object_number() const; inline void set_object_number(::google::protobuf::uint64 value); - + // required fixed64 object_version = 2; inline bool has_object_version() const; inline void clear_object_version(); static const int kObjectVersionFieldNumber = 2; inline ::google::protobuf::uint64 object_version() const; inline void set_object_version(::google::protobuf::uint64 value); - + // repeated string osd_uuids = 3; inline int osd_uuids_size() const; inline void clear_osd_uuids(); @@ -1026,32 +1005,27 @@ class ObjectVersionMapping : public ::google::protobuf::Message { inline void add_osd_uuids(const char* value, size_t size); inline const ::google::protobuf::RepeatedPtrField< ::std::string>& osd_uuids() const; inline ::google::protobuf::RepeatedPtrField< ::std::string>* mutable_osd_uuids(); - + // @@protoc_insertion_point(class_scope:xtreemfs.pbrpc.ObjectVersionMapping) private: + inline void set_has_object_number(); + inline void clear_has_object_number(); + inline void set_has_object_version(); + inline void clear_has_object_version(); + ::google::protobuf::UnknownFieldSet _unknown_fields_; - mutable int _cached_size_; - + ::google::protobuf::uint64 object_number_; ::google::protobuf::uint64 object_version_; ::google::protobuf::RepeatedPtrField< ::std::string> osd_uuids_; + + mutable int _cached_size_; + ::google::protobuf::uint32 _has_bits_[(3 + 31) / 32]; + friend void protobuf_AddDesc_xtreemfs_2fOSD_2eproto(); friend void protobuf_AssignDesc_xtreemfs_2fOSD_2eproto(); friend void protobuf_ShutdownFile_xtreemfs_2fOSD_2eproto(); - - ::google::protobuf::uint32 _has_bits_[(3 + 31) / 32]; - - // WHY DOES & HAVE LOWER PRECEDENCE THAN != !? - inline bool _has_bit(int index) const { - return (_has_bits_[index / 32] & (1u << (index % 32))) != 0; - } - inline void _set_bit(int index) { - _has_bits_[index / 32] |= (1u << (index % 32)); - } - inline void _clear_bit(int index) { - _has_bits_[index / 32] &= ~(1u << (index % 32)); - } - + void InitAsDefaultInstance(); static ObjectVersionMapping* default_instance_; }; @@ -1061,29 +1035,29 @@ class AuthoritativeReplicaState : public ::google::protobuf::Message { public: AuthoritativeReplicaState(); virtual ~AuthoritativeReplicaState(); - + AuthoritativeReplicaState(const AuthoritativeReplicaState& from); - + inline AuthoritativeReplicaState& operator=(const AuthoritativeReplicaState& from) { CopyFrom(from); return *this; } - + inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const { return _unknown_fields_; } - + inline ::google::protobuf::UnknownFieldSet* mutable_unknown_fields() { return &_unknown_fields_; } - + static const ::google::protobuf::Descriptor* descriptor(); static const AuthoritativeReplicaState& default_instance(); - + void Swap(AuthoritativeReplicaState* other); - + // implements Message ---------------------------------------------- - + AuthoritativeReplicaState* New() const; void CopyFrom(const ::google::protobuf::Message& from); void MergeFrom(const ::google::protobuf::Message& from); @@ -1091,7 +1065,7 @@ class AuthoritativeReplicaState : public ::google::protobuf::Message { void MergeFrom(const AuthoritativeReplicaState& from); void Clear(); bool IsInitialized() const; - + int ByteSize() const; bool MergePartialFromCodedStream( ::google::protobuf::io::CodedInputStream* input); @@ -1104,27 +1078,27 @@ class AuthoritativeReplicaState : public ::google::protobuf::Message { void SharedDtor(); void SetCachedSize(int size) const; public: - + ::google::protobuf::Metadata GetMetadata() const; - + // nested types ---------------------------------------------------- - + // accessors ------------------------------------------------------- - + // required fixed64 truncate_epoch = 1; inline bool has_truncate_epoch() const; inline void clear_truncate_epoch(); static const int kTruncateEpochFieldNumber = 1; inline ::google::protobuf::uint64 truncate_epoch() const; inline void set_truncate_epoch(::google::protobuf::uint64 value); - + // required fixed64 max_obj_version = 4; inline bool has_max_obj_version() const; inline void clear_max_obj_version(); static const int kMaxObjVersionFieldNumber = 4; inline ::google::protobuf::uint64 max_obj_version() const; inline void set_max_obj_version(::google::protobuf::uint64 value); - + // repeated .xtreemfs.pbrpc.ObjectVersionMapping objectVersions = 2; inline int objectversions_size() const; inline void clear_objectversions(); @@ -1136,40 +1110,39 @@ class AuthoritativeReplicaState : public ::google::protobuf::Message { objectversions() const; inline ::google::protobuf::RepeatedPtrField< ::xtreemfs::pbrpc::ObjectVersionMapping >* mutable_objectversions(); - + // required .xtreemfs.pbrpc.TruncateLog truncate_log = 3; inline bool has_truncate_log() const; inline void clear_truncate_log(); static const int kTruncateLogFieldNumber = 3; inline const ::xtreemfs::pbrpc::TruncateLog& truncate_log() const; inline ::xtreemfs::pbrpc::TruncateLog* mutable_truncate_log(); - + inline ::xtreemfs::pbrpc::TruncateLog* release_truncate_log(); + inline void set_allocated_truncate_log(::xtreemfs::pbrpc::TruncateLog* truncate_log); + // @@protoc_insertion_point(class_scope:xtreemfs.pbrpc.AuthoritativeReplicaState) private: + inline void set_has_truncate_epoch(); + inline void clear_has_truncate_epoch(); + inline void set_has_max_obj_version(); + inline void clear_has_max_obj_version(); + inline void set_has_truncate_log(); + inline void clear_has_truncate_log(); + ::google::protobuf::UnknownFieldSet _unknown_fields_; - mutable int _cached_size_; - + ::google::protobuf::uint64 truncate_epoch_; ::google::protobuf::uint64 max_obj_version_; ::google::protobuf::RepeatedPtrField< ::xtreemfs::pbrpc::ObjectVersionMapping > objectversions_; ::xtreemfs::pbrpc::TruncateLog* truncate_log_; + + mutable int _cached_size_; + ::google::protobuf::uint32 _has_bits_[(4 + 31) / 32]; + friend void protobuf_AddDesc_xtreemfs_2fOSD_2eproto(); friend void protobuf_AssignDesc_xtreemfs_2fOSD_2eproto(); friend void protobuf_ShutdownFile_xtreemfs_2fOSD_2eproto(); - - ::google::protobuf::uint32 _has_bits_[(4 + 31) / 32]; - - // WHY DOES & HAVE LOWER PRECEDENCE THAN != !? - inline bool _has_bit(int index) const { - return (_has_bits_[index / 32] & (1u << (index % 32))) != 0; - } - inline void _set_bit(int index) { - _has_bits_[index / 32] |= (1u << (index % 32)); - } - inline void _clear_bit(int index) { - _has_bits_[index / 32] &= ~(1u << (index % 32)); - } - + void InitAsDefaultInstance(); static AuthoritativeReplicaState* default_instance_; }; @@ -1179,29 +1152,29 @@ class InternalReadLocalResponse : public ::google::protobuf::Message { public: InternalReadLocalResponse(); virtual ~InternalReadLocalResponse(); - + InternalReadLocalResponse(const InternalReadLocalResponse& from); - + inline InternalReadLocalResponse& operator=(const InternalReadLocalResponse& from) { CopyFrom(from); return *this; } - + inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const { return _unknown_fields_; } - + inline ::google::protobuf::UnknownFieldSet* mutable_unknown_fields() { return &_unknown_fields_; } - + static const ::google::protobuf::Descriptor* descriptor(); static const InternalReadLocalResponse& default_instance(); - + void Swap(InternalReadLocalResponse* other); - + // implements Message ---------------------------------------------- - + InternalReadLocalResponse* New() const; void CopyFrom(const ::google::protobuf::Message& from); void MergeFrom(const ::google::protobuf::Message& from); @@ -1209,7 +1182,7 @@ class InternalReadLocalResponse : public ::google::protobuf::Message { void MergeFrom(const InternalReadLocalResponse& from); void Clear(); bool IsInitialized() const; - + int ByteSize() const; bool MergePartialFromCodedStream( ::google::protobuf::io::CodedInputStream* input); @@ -1222,20 +1195,22 @@ class InternalReadLocalResponse : public ::google::protobuf::Message { void SharedDtor(); void SetCachedSize(int size) const; public: - + ::google::protobuf::Metadata GetMetadata() const; - + // nested types ---------------------------------------------------- - + // accessors ------------------------------------------------------- - + // required .xtreemfs.pbrpc.ObjectData data = 1; inline bool has_data() const; inline void clear_data(); static const int kDataFieldNumber = 1; inline const ::xtreemfs::pbrpc::ObjectData& data() const; inline ::xtreemfs::pbrpc::ObjectData* mutable_data(); - + inline ::xtreemfs::pbrpc::ObjectData* release_data(); + inline void set_allocated_data(::xtreemfs::pbrpc::ObjectData* data); + // repeated .xtreemfs.pbrpc.ObjectList object_set = 2; inline int object_set_size() const; inline void clear_object_set(); @@ -1247,31 +1222,24 @@ class InternalReadLocalResponse : public ::google::protobuf::Message { object_set() const; inline ::google::protobuf::RepeatedPtrField< ::xtreemfs::pbrpc::ObjectList >* mutable_object_set(); - + // @@protoc_insertion_point(class_scope:xtreemfs.pbrpc.InternalReadLocalResponse) private: + inline void set_has_data(); + inline void clear_has_data(); + ::google::protobuf::UnknownFieldSet _unknown_fields_; - mutable int _cached_size_; - + ::xtreemfs::pbrpc::ObjectData* data_; ::google::protobuf::RepeatedPtrField< ::xtreemfs::pbrpc::ObjectList > object_set_; + + mutable int _cached_size_; + ::google::protobuf::uint32 _has_bits_[(2 + 31) / 32]; + friend void protobuf_AddDesc_xtreemfs_2fOSD_2eproto(); friend void protobuf_AssignDesc_xtreemfs_2fOSD_2eproto(); friend void protobuf_ShutdownFile_xtreemfs_2fOSD_2eproto(); - - ::google::protobuf::uint32 _has_bits_[(2 + 31) / 32]; - - // WHY DOES & HAVE LOWER PRECEDENCE THAN != !? - inline bool _has_bit(int index) const { - return (_has_bits_[index / 32] & (1u << (index % 32))) != 0; - } - inline void _set_bit(int index) { - _has_bits_[index / 32] |= (1u << (index % 32)); - } - inline void _clear_bit(int index) { - _has_bits_[index / 32] &= ~(1u << (index % 32)); - } - + void InitAsDefaultInstance(); static InternalReadLocalResponse* default_instance_; }; @@ -1281,29 +1249,29 @@ class readRequest : public ::google::protobuf::Message { public: readRequest(); virtual ~readRequest(); - + readRequest(const readRequest& from); - + inline readRequest& operator=(const readRequest& from) { CopyFrom(from); return *this; } - + inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const { return _unknown_fields_; } - + inline ::google::protobuf::UnknownFieldSet* mutable_unknown_fields() { return &_unknown_fields_; } - + static const ::google::protobuf::Descriptor* descriptor(); static const readRequest& default_instance(); - + void Swap(readRequest* other); - + // implements Message ---------------------------------------------- - + readRequest* New() const; void CopyFrom(const ::google::protobuf::Message& from); void MergeFrom(const ::google::protobuf::Message& from); @@ -1311,7 +1279,7 @@ class readRequest : public ::google::protobuf::Message { void MergeFrom(const readRequest& from); void Clear(); bool IsInitialized() const; - + int ByteSize() const; bool MergePartialFromCodedStream( ::google::protobuf::io::CodedInputStream* input); @@ -1324,20 +1292,22 @@ class readRequest : public ::google::protobuf::Message { void SharedDtor(); void SetCachedSize(int size) const; public: - + ::google::protobuf::Metadata GetMetadata() const; - + // nested types ---------------------------------------------------- - + // accessors ------------------------------------------------------- - + // required .xtreemfs.pbrpc.FileCredentials file_credentials = 1; inline bool has_file_credentials() const; inline void clear_file_credentials(); static const int kFileCredentialsFieldNumber = 1; inline const ::xtreemfs::pbrpc::FileCredentials& file_credentials() const; inline ::xtreemfs::pbrpc::FileCredentials* mutable_file_credentials(); - + inline ::xtreemfs::pbrpc::FileCredentials* release_file_credentials(); + inline void set_allocated_file_credentials(::xtreemfs::pbrpc::FileCredentials* file_credentials); + // required string file_id = 2; inline bool has_file_id() const; inline void clear_file_id(); @@ -1347,64 +1317,68 @@ class readRequest : public ::google::protobuf::Message { inline void set_file_id(const char* value); inline void set_file_id(const char* value, size_t size); inline ::std::string* mutable_file_id(); - + inline ::std::string* release_file_id(); + inline void set_allocated_file_id(::std::string* file_id); + // required fixed64 object_number = 3; inline bool has_object_number() const; inline void clear_object_number(); static const int kObjectNumberFieldNumber = 3; inline ::google::protobuf::uint64 object_number() const; inline void set_object_number(::google::protobuf::uint64 value); - + // required fixed64 object_version = 4; inline bool has_object_version() const; inline void clear_object_version(); static const int kObjectVersionFieldNumber = 4; inline ::google::protobuf::uint64 object_version() const; inline void set_object_version(::google::protobuf::uint64 value); - + // required fixed32 offset = 5; inline bool has_offset() const; inline void clear_offset(); static const int kOffsetFieldNumber = 5; inline ::google::protobuf::uint32 offset() const; inline void set_offset(::google::protobuf::uint32 value); - + // required fixed32 length = 6; inline bool has_length() const; inline void clear_length(); static const int kLengthFieldNumber = 6; inline ::google::protobuf::uint32 length() const; inline void set_length(::google::protobuf::uint32 value); - + // @@protoc_insertion_point(class_scope:xtreemfs.pbrpc.readRequest) private: + inline void set_has_file_credentials(); + inline void clear_has_file_credentials(); + inline void set_has_file_id(); + inline void clear_has_file_id(); + inline void set_has_object_number(); + inline void clear_has_object_number(); + inline void set_has_object_version(); + inline void clear_has_object_version(); + inline void set_has_offset(); + inline void clear_has_offset(); + inline void set_has_length(); + inline void clear_has_length(); + ::google::protobuf::UnknownFieldSet _unknown_fields_; - mutable int _cached_size_; - + ::xtreemfs::pbrpc::FileCredentials* file_credentials_; ::std::string* file_id_; - static const ::std::string _default_file_id_; ::google::protobuf::uint64 object_number_; ::google::protobuf::uint64 object_version_; ::google::protobuf::uint32 offset_; ::google::protobuf::uint32 length_; + + mutable int _cached_size_; + ::google::protobuf::uint32 _has_bits_[(6 + 31) / 32]; + friend void protobuf_AddDesc_xtreemfs_2fOSD_2eproto(); friend void protobuf_AssignDesc_xtreemfs_2fOSD_2eproto(); friend void protobuf_ShutdownFile_xtreemfs_2fOSD_2eproto(); - - ::google::protobuf::uint32 _has_bits_[(6 + 31) / 32]; - - // WHY DOES & HAVE LOWER PRECEDENCE THAN != !? - inline bool _has_bit(int index) const { - return (_has_bits_[index / 32] & (1u << (index % 32))) != 0; - } - inline void _set_bit(int index) { - _has_bits_[index / 32] |= (1u << (index % 32)); - } - inline void _clear_bit(int index) { - _has_bits_[index / 32] &= ~(1u << (index % 32)); - } - + void InitAsDefaultInstance(); static readRequest* default_instance_; }; @@ -1414,29 +1388,29 @@ class truncateRequest : public ::google::protobuf::Message { public: truncateRequest(); virtual ~truncateRequest(); - + truncateRequest(const truncateRequest& from); - + inline truncateRequest& operator=(const truncateRequest& from) { CopyFrom(from); return *this; } - + inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const { return _unknown_fields_; } - + inline ::google::protobuf::UnknownFieldSet* mutable_unknown_fields() { return &_unknown_fields_; } - + static const ::google::protobuf::Descriptor* descriptor(); static const truncateRequest& default_instance(); - + void Swap(truncateRequest* other); - + // implements Message ---------------------------------------------- - + truncateRequest* New() const; void CopyFrom(const ::google::protobuf::Message& from); void MergeFrom(const ::google::protobuf::Message& from); @@ -1444,7 +1418,7 @@ class truncateRequest : public ::google::protobuf::Message { void MergeFrom(const truncateRequest& from); void Clear(); bool IsInitialized() const; - + int ByteSize() const; bool MergePartialFromCodedStream( ::google::protobuf::io::CodedInputStream* input); @@ -1457,20 +1431,22 @@ class truncateRequest : public ::google::protobuf::Message { void SharedDtor(); void SetCachedSize(int size) const; public: - + ::google::protobuf::Metadata GetMetadata() const; - + // nested types ---------------------------------------------------- - + // accessors ------------------------------------------------------- - + // required .xtreemfs.pbrpc.FileCredentials file_credentials = 1; inline bool has_file_credentials() const; inline void clear_file_credentials(); static const int kFileCredentialsFieldNumber = 1; inline const ::xtreemfs::pbrpc::FileCredentials& file_credentials() const; inline ::xtreemfs::pbrpc::FileCredentials* mutable_file_credentials(); - + inline ::xtreemfs::pbrpc::FileCredentials* release_file_credentials(); + inline void set_allocated_file_credentials(::xtreemfs::pbrpc::FileCredentials* file_credentials); + // required string file_id = 2; inline bool has_file_id() const; inline void clear_file_id(); @@ -1480,40 +1456,38 @@ class truncateRequest : public ::google::protobuf::Message { inline void set_file_id(const char* value); inline void set_file_id(const char* value, size_t size); inline ::std::string* mutable_file_id(); - + inline ::std::string* release_file_id(); + inline void set_allocated_file_id(::std::string* file_id); + // required fixed64 new_file_size = 3; inline bool has_new_file_size() const; inline void clear_new_file_size(); static const int kNewFileSizeFieldNumber = 3; inline ::google::protobuf::uint64 new_file_size() const; inline void set_new_file_size(::google::protobuf::uint64 value); - + // @@protoc_insertion_point(class_scope:xtreemfs.pbrpc.truncateRequest) private: + inline void set_has_file_credentials(); + inline void clear_has_file_credentials(); + inline void set_has_file_id(); + inline void clear_has_file_id(); + inline void set_has_new_file_size(); + inline void clear_has_new_file_size(); + ::google::protobuf::UnknownFieldSet _unknown_fields_; - mutable int _cached_size_; - + ::xtreemfs::pbrpc::FileCredentials* file_credentials_; ::std::string* file_id_; - static const ::std::string _default_file_id_; ::google::protobuf::uint64 new_file_size_; + + mutable int _cached_size_; + ::google::protobuf::uint32 _has_bits_[(3 + 31) / 32]; + friend void protobuf_AddDesc_xtreemfs_2fOSD_2eproto(); friend void protobuf_AssignDesc_xtreemfs_2fOSD_2eproto(); friend void protobuf_ShutdownFile_xtreemfs_2fOSD_2eproto(); - - ::google::protobuf::uint32 _has_bits_[(3 + 31) / 32]; - - // WHY DOES & HAVE LOWER PRECEDENCE THAN != !? - inline bool _has_bit(int index) const { - return (_has_bits_[index / 32] & (1u << (index % 32))) != 0; - } - inline void _set_bit(int index) { - _has_bits_[index / 32] |= (1u << (index % 32)); - } - inline void _clear_bit(int index) { - _has_bits_[index / 32] &= ~(1u << (index % 32)); - } - + void InitAsDefaultInstance(); static truncateRequest* default_instance_; }; @@ -1523,29 +1497,29 @@ class unlink_osd_Request : public ::google::protobuf::Message { public: unlink_osd_Request(); virtual ~unlink_osd_Request(); - + unlink_osd_Request(const unlink_osd_Request& from); - + inline unlink_osd_Request& operator=(const unlink_osd_Request& from) { CopyFrom(from); return *this; } - + inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const { return _unknown_fields_; } - + inline ::google::protobuf::UnknownFieldSet* mutable_unknown_fields() { return &_unknown_fields_; } - + static const ::google::protobuf::Descriptor* descriptor(); static const unlink_osd_Request& default_instance(); - + void Swap(unlink_osd_Request* other); - + // implements Message ---------------------------------------------- - + unlink_osd_Request* New() const; void CopyFrom(const ::google::protobuf::Message& from); void MergeFrom(const ::google::protobuf::Message& from); @@ -1553,7 +1527,7 @@ class unlink_osd_Request : public ::google::protobuf::Message { void MergeFrom(const unlink_osd_Request& from); void Clear(); bool IsInitialized() const; - + int ByteSize() const; bool MergePartialFromCodedStream( ::google::protobuf::io::CodedInputStream* input); @@ -1566,20 +1540,22 @@ class unlink_osd_Request : public ::google::protobuf::Message { void SharedDtor(); void SetCachedSize(int size) const; public: - + ::google::protobuf::Metadata GetMetadata() const; - + // nested types ---------------------------------------------------- - + // accessors ------------------------------------------------------- - + // required .xtreemfs.pbrpc.FileCredentials file_credentials = 1; inline bool has_file_credentials() const; inline void clear_file_credentials(); static const int kFileCredentialsFieldNumber = 1; inline const ::xtreemfs::pbrpc::FileCredentials& file_credentials() const; inline ::xtreemfs::pbrpc::FileCredentials* mutable_file_credentials(); - + inline ::xtreemfs::pbrpc::FileCredentials* release_file_credentials(); + inline void set_allocated_file_credentials(::xtreemfs::pbrpc::FileCredentials* file_credentials); + // required string file_id = 2; inline bool has_file_id() const; inline void clear_file_id(); @@ -1589,32 +1565,28 @@ class unlink_osd_Request : public ::google::protobuf::Message { inline void set_file_id(const char* value); inline void set_file_id(const char* value, size_t size); inline ::std::string* mutable_file_id(); - + inline ::std::string* release_file_id(); + inline void set_allocated_file_id(::std::string* file_id); + // @@protoc_insertion_point(class_scope:xtreemfs.pbrpc.unlink_osd_Request) private: + inline void set_has_file_credentials(); + inline void clear_has_file_credentials(); + inline void set_has_file_id(); + inline void clear_has_file_id(); + ::google::protobuf::UnknownFieldSet _unknown_fields_; - mutable int _cached_size_; - + ::xtreemfs::pbrpc::FileCredentials* file_credentials_; ::std::string* file_id_; - static const ::std::string _default_file_id_; + + mutable int _cached_size_; + ::google::protobuf::uint32 _has_bits_[(2 + 31) / 32]; + friend void protobuf_AddDesc_xtreemfs_2fOSD_2eproto(); friend void protobuf_AssignDesc_xtreemfs_2fOSD_2eproto(); friend void protobuf_ShutdownFile_xtreemfs_2fOSD_2eproto(); - - ::google::protobuf::uint32 _has_bits_[(2 + 31) / 32]; - - // WHY DOES & HAVE LOWER PRECEDENCE THAN != !? - inline bool _has_bit(int index) const { - return (_has_bits_[index / 32] & (1u << (index % 32))) != 0; - } - inline void _set_bit(int index) { - _has_bits_[index / 32] |= (1u << (index % 32)); - } - inline void _clear_bit(int index) { - _has_bits_[index / 32] &= ~(1u << (index % 32)); - } - + void InitAsDefaultInstance(); static unlink_osd_Request* default_instance_; }; @@ -1624,29 +1596,29 @@ class writeRequest : public ::google::protobuf::Message { public: writeRequest(); virtual ~writeRequest(); - + writeRequest(const writeRequest& from); - + inline writeRequest& operator=(const writeRequest& from) { CopyFrom(from); return *this; } - + inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const { return _unknown_fields_; } - + inline ::google::protobuf::UnknownFieldSet* mutable_unknown_fields() { return &_unknown_fields_; } - + static const ::google::protobuf::Descriptor* descriptor(); static const writeRequest& default_instance(); - + void Swap(writeRequest* other); - + // implements Message ---------------------------------------------- - + writeRequest* New() const; void CopyFrom(const ::google::protobuf::Message& from); void MergeFrom(const ::google::protobuf::Message& from); @@ -1654,7 +1626,7 @@ class writeRequest : public ::google::protobuf::Message { void MergeFrom(const writeRequest& from); void Clear(); bool IsInitialized() const; - + int ByteSize() const; bool MergePartialFromCodedStream( ::google::protobuf::io::CodedInputStream* input); @@ -1667,20 +1639,22 @@ class writeRequest : public ::google::protobuf::Message { void SharedDtor(); void SetCachedSize(int size) const; public: - + ::google::protobuf::Metadata GetMetadata() const; - + // nested types ---------------------------------------------------- - + // accessors ------------------------------------------------------- - + // required .xtreemfs.pbrpc.FileCredentials file_credentials = 1; inline bool has_file_credentials() const; inline void clear_file_credentials(); static const int kFileCredentialsFieldNumber = 1; inline const ::xtreemfs::pbrpc::FileCredentials& file_credentials() const; inline ::xtreemfs::pbrpc::FileCredentials* mutable_file_credentials(); - + inline ::xtreemfs::pbrpc::FileCredentials* release_file_credentials(); + inline void set_allocated_file_credentials(::xtreemfs::pbrpc::FileCredentials* file_credentials); + // required string file_id = 2; inline bool has_file_id() const; inline void clear_file_id(); @@ -1690,72 +1664,80 @@ class writeRequest : public ::google::protobuf::Message { inline void set_file_id(const char* value); inline void set_file_id(const char* value, size_t size); inline ::std::string* mutable_file_id(); - + inline ::std::string* release_file_id(); + inline void set_allocated_file_id(::std::string* file_id); + // required fixed64 object_number = 3; inline bool has_object_number() const; inline void clear_object_number(); static const int kObjectNumberFieldNumber = 3; inline ::google::protobuf::uint64 object_number() const; inline void set_object_number(::google::protobuf::uint64 value); - + // required fixed64 object_version = 4; inline bool has_object_version() const; inline void clear_object_version(); static const int kObjectVersionFieldNumber = 4; inline ::google::protobuf::uint64 object_version() const; inline void set_object_version(::google::protobuf::uint64 value); - + // required fixed32 offset = 5; inline bool has_offset() const; inline void clear_offset(); static const int kOffsetFieldNumber = 5; inline ::google::protobuf::uint32 offset() const; inline void set_offset(::google::protobuf::uint32 value); - + // required fixed64 lease_timeout = 6; inline bool has_lease_timeout() const; inline void clear_lease_timeout(); static const int kLeaseTimeoutFieldNumber = 6; inline ::google::protobuf::uint64 lease_timeout() const; inline void set_lease_timeout(::google::protobuf::uint64 value); - + // required .xtreemfs.pbrpc.ObjectData object_data = 7; inline bool has_object_data() const; inline void clear_object_data(); static const int kObjectDataFieldNumber = 7; inline const ::xtreemfs::pbrpc::ObjectData& object_data() const; inline ::xtreemfs::pbrpc::ObjectData* mutable_object_data(); - + inline ::xtreemfs::pbrpc::ObjectData* release_object_data(); + inline void set_allocated_object_data(::xtreemfs::pbrpc::ObjectData* object_data); + // @@protoc_insertion_point(class_scope:xtreemfs.pbrpc.writeRequest) private: + inline void set_has_file_credentials(); + inline void clear_has_file_credentials(); + inline void set_has_file_id(); + inline void clear_has_file_id(); + inline void set_has_object_number(); + inline void clear_has_object_number(); + inline void set_has_object_version(); + inline void clear_has_object_version(); + inline void set_has_offset(); + inline void clear_has_offset(); + inline void set_has_lease_timeout(); + inline void clear_has_lease_timeout(); + inline void set_has_object_data(); + inline void clear_has_object_data(); + ::google::protobuf::UnknownFieldSet _unknown_fields_; - mutable int _cached_size_; - + ::xtreemfs::pbrpc::FileCredentials* file_credentials_; ::std::string* file_id_; - static const ::std::string _default_file_id_; ::google::protobuf::uint64 object_number_; ::google::protobuf::uint64 object_version_; - ::google::protobuf::uint32 offset_; ::google::protobuf::uint64 lease_timeout_; ::xtreemfs::pbrpc::ObjectData* object_data_; + ::google::protobuf::uint32 offset_; + + mutable int _cached_size_; + ::google::protobuf::uint32 _has_bits_[(7 + 31) / 32]; + friend void protobuf_AddDesc_xtreemfs_2fOSD_2eproto(); friend void protobuf_AssignDesc_xtreemfs_2fOSD_2eproto(); friend void protobuf_ShutdownFile_xtreemfs_2fOSD_2eproto(); - - ::google::protobuf::uint32 _has_bits_[(7 + 31) / 32]; - - // WHY DOES & HAVE LOWER PRECEDENCE THAN != !? - inline bool _has_bit(int index) const { - return (_has_bits_[index / 32] & (1u << (index % 32))) != 0; - } - inline void _set_bit(int index) { - _has_bits_[index / 32] |= (1u << (index % 32)); - } - inline void _clear_bit(int index) { - _has_bits_[index / 32] &= ~(1u << (index % 32)); - } - + void InitAsDefaultInstance(); static writeRequest* default_instance_; }; @@ -1765,29 +1747,29 @@ class xtreemfs_broadcast_gmaxRequest : public ::google::protobuf::Message { public: xtreemfs_broadcast_gmaxRequest(); virtual ~xtreemfs_broadcast_gmaxRequest(); - + xtreemfs_broadcast_gmaxRequest(const xtreemfs_broadcast_gmaxRequest& from); - + inline xtreemfs_broadcast_gmaxRequest& operator=(const xtreemfs_broadcast_gmaxRequest& from) { CopyFrom(from); return *this; } - + inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const { return _unknown_fields_; } - + inline ::google::protobuf::UnknownFieldSet* mutable_unknown_fields() { return &_unknown_fields_; } - + static const ::google::protobuf::Descriptor* descriptor(); static const xtreemfs_broadcast_gmaxRequest& default_instance(); - + void Swap(xtreemfs_broadcast_gmaxRequest* other); - + // implements Message ---------------------------------------------- - + xtreemfs_broadcast_gmaxRequest* New() const; void CopyFrom(const ::google::protobuf::Message& from); void MergeFrom(const ::google::protobuf::Message& from); @@ -1795,7 +1777,7 @@ class xtreemfs_broadcast_gmaxRequest : public ::google::protobuf::Message { void MergeFrom(const xtreemfs_broadcast_gmaxRequest& from); void Clear(); bool IsInitialized() const; - + int ByteSize() const; bool MergePartialFromCodedStream( ::google::protobuf::io::CodedInputStream* input); @@ -1808,13 +1790,13 @@ class xtreemfs_broadcast_gmaxRequest : public ::google::protobuf::Message { void SharedDtor(); void SetCachedSize(int size) const; public: - + ::google::protobuf::Metadata GetMetadata() const; - + // nested types ---------------------------------------------------- - + // accessors ------------------------------------------------------- - + // required string file_id = 1; inline bool has_file_id() const; inline void clear_file_id(); @@ -1824,55 +1806,55 @@ class xtreemfs_broadcast_gmaxRequest : public ::google::protobuf::Message { inline void set_file_id(const char* value); inline void set_file_id(const char* value, size_t size); inline ::std::string* mutable_file_id(); - + inline ::std::string* release_file_id(); + inline void set_allocated_file_id(::std::string* file_id); + // required fixed64 truncate_epoch = 2; inline bool has_truncate_epoch() const; inline void clear_truncate_epoch(); static const int kTruncateEpochFieldNumber = 2; inline ::google::protobuf::uint64 truncate_epoch() const; inline void set_truncate_epoch(::google::protobuf::uint64 value); - + // required fixed64 last_object = 3; inline bool has_last_object() const; inline void clear_last_object(); static const int kLastObjectFieldNumber = 3; inline ::google::protobuf::uint64 last_object() const; inline void set_last_object(::google::protobuf::uint64 value); - + // required fixed64 file_size = 4; inline bool has_file_size() const; inline void clear_file_size(); static const int kFileSizeFieldNumber = 4; inline ::google::protobuf::uint64 file_size() const; inline void set_file_size(::google::protobuf::uint64 value); - + // @@protoc_insertion_point(class_scope:xtreemfs.pbrpc.xtreemfs_broadcast_gmaxRequest) private: + inline void set_has_file_id(); + inline void clear_has_file_id(); + inline void set_has_truncate_epoch(); + inline void clear_has_truncate_epoch(); + inline void set_has_last_object(); + inline void clear_has_last_object(); + inline void set_has_file_size(); + inline void clear_has_file_size(); + ::google::protobuf::UnknownFieldSet _unknown_fields_; - mutable int _cached_size_; - + ::std::string* file_id_; - static const ::std::string _default_file_id_; ::google::protobuf::uint64 truncate_epoch_; ::google::protobuf::uint64 last_object_; ::google::protobuf::uint64 file_size_; + + mutable int _cached_size_; + ::google::protobuf::uint32 _has_bits_[(4 + 31) / 32]; + friend void protobuf_AddDesc_xtreemfs_2fOSD_2eproto(); friend void protobuf_AssignDesc_xtreemfs_2fOSD_2eproto(); friend void protobuf_ShutdownFile_xtreemfs_2fOSD_2eproto(); - - ::google::protobuf::uint32 _has_bits_[(4 + 31) / 32]; - - // WHY DOES & HAVE LOWER PRECEDENCE THAN != !? - inline bool _has_bit(int index) const { - return (_has_bits_[index / 32] & (1u << (index % 32))) != 0; - } - inline void _set_bit(int index) { - _has_bits_[index / 32] |= (1u << (index % 32)); - } - inline void _clear_bit(int index) { - _has_bits_[index / 32] &= ~(1u << (index % 32)); - } - + void InitAsDefaultInstance(); static xtreemfs_broadcast_gmaxRequest* default_instance_; }; @@ -1882,29 +1864,29 @@ class xtreemfs_check_objectRequest : public ::google::protobuf::Message { public: xtreemfs_check_objectRequest(); virtual ~xtreemfs_check_objectRequest(); - + xtreemfs_check_objectRequest(const xtreemfs_check_objectRequest& from); - + inline xtreemfs_check_objectRequest& operator=(const xtreemfs_check_objectRequest& from) { CopyFrom(from); return *this; } - + inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const { return _unknown_fields_; } - + inline ::google::protobuf::UnknownFieldSet* mutable_unknown_fields() { return &_unknown_fields_; } - + static const ::google::protobuf::Descriptor* descriptor(); static const xtreemfs_check_objectRequest& default_instance(); - + void Swap(xtreemfs_check_objectRequest* other); - + // implements Message ---------------------------------------------- - + xtreemfs_check_objectRequest* New() const; void CopyFrom(const ::google::protobuf::Message& from); void MergeFrom(const ::google::protobuf::Message& from); @@ -1912,7 +1894,7 @@ class xtreemfs_check_objectRequest : public ::google::protobuf::Message { void MergeFrom(const xtreemfs_check_objectRequest& from); void Clear(); bool IsInitialized() const; - + int ByteSize() const; bool MergePartialFromCodedStream( ::google::protobuf::io::CodedInputStream* input); @@ -1925,20 +1907,22 @@ class xtreemfs_check_objectRequest : public ::google::protobuf::Message { void SharedDtor(); void SetCachedSize(int size) const; public: - + ::google::protobuf::Metadata GetMetadata() const; - + // nested types ---------------------------------------------------- - + // accessors ------------------------------------------------------- - + // required .xtreemfs.pbrpc.FileCredentials file_credentials = 1; inline bool has_file_credentials() const; inline void clear_file_credentials(); static const int kFileCredentialsFieldNumber = 1; inline const ::xtreemfs::pbrpc::FileCredentials& file_credentials() const; inline ::xtreemfs::pbrpc::FileCredentials* mutable_file_credentials(); - + inline ::xtreemfs::pbrpc::FileCredentials* release_file_credentials(); + inline void set_allocated_file_credentials(::xtreemfs::pbrpc::FileCredentials* file_credentials); + // required string file_id = 2; inline bool has_file_id() const; inline void clear_file_id(); @@ -1948,48 +1932,48 @@ class xtreemfs_check_objectRequest : public ::google::protobuf::Message { inline void set_file_id(const char* value); inline void set_file_id(const char* value, size_t size); inline ::std::string* mutable_file_id(); - + inline ::std::string* release_file_id(); + inline void set_allocated_file_id(::std::string* file_id); + // required fixed64 object_number = 3; inline bool has_object_number() const; inline void clear_object_number(); static const int kObjectNumberFieldNumber = 3; inline ::google::protobuf::uint64 object_number() const; inline void set_object_number(::google::protobuf::uint64 value); - + // required fixed64 object_version = 4; inline bool has_object_version() const; inline void clear_object_version(); static const int kObjectVersionFieldNumber = 4; inline ::google::protobuf::uint64 object_version() const; inline void set_object_version(::google::protobuf::uint64 value); - + // @@protoc_insertion_point(class_scope:xtreemfs.pbrpc.xtreemfs_check_objectRequest) private: + inline void set_has_file_credentials(); + inline void clear_has_file_credentials(); + inline void set_has_file_id(); + inline void clear_has_file_id(); + inline void set_has_object_number(); + inline void clear_has_object_number(); + inline void set_has_object_version(); + inline void clear_has_object_version(); + ::google::protobuf::UnknownFieldSet _unknown_fields_; - mutable int _cached_size_; - + ::xtreemfs::pbrpc::FileCredentials* file_credentials_; ::std::string* file_id_; - static const ::std::string _default_file_id_; ::google::protobuf::uint64 object_number_; ::google::protobuf::uint64 object_version_; + + mutable int _cached_size_; + ::google::protobuf::uint32 _has_bits_[(4 + 31) / 32]; + friend void protobuf_AddDesc_xtreemfs_2fOSD_2eproto(); friend void protobuf_AssignDesc_xtreemfs_2fOSD_2eproto(); friend void protobuf_ShutdownFile_xtreemfs_2fOSD_2eproto(); - - ::google::protobuf::uint32 _has_bits_[(4 + 31) / 32]; - - // WHY DOES & HAVE LOWER PRECEDENCE THAN != !? - inline bool _has_bit(int index) const { - return (_has_bits_[index / 32] & (1u << (index % 32))) != 0; - } - inline void _set_bit(int index) { - _has_bits_[index / 32] |= (1u << (index % 32)); - } - inline void _clear_bit(int index) { - _has_bits_[index / 32] &= ~(1u << (index % 32)); - } - + void InitAsDefaultInstance(); static xtreemfs_check_objectRequest* default_instance_; }; @@ -1999,29 +1983,29 @@ class xtreemfs_cleanup_get_resultsResponse : public ::google::protobuf::Message public: xtreemfs_cleanup_get_resultsResponse(); virtual ~xtreemfs_cleanup_get_resultsResponse(); - + xtreemfs_cleanup_get_resultsResponse(const xtreemfs_cleanup_get_resultsResponse& from); - + inline xtreemfs_cleanup_get_resultsResponse& operator=(const xtreemfs_cleanup_get_resultsResponse& from) { CopyFrom(from); return *this; } - + inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const { return _unknown_fields_; } - + inline ::google::protobuf::UnknownFieldSet* mutable_unknown_fields() { return &_unknown_fields_; } - + static const ::google::protobuf::Descriptor* descriptor(); static const xtreemfs_cleanup_get_resultsResponse& default_instance(); - + void Swap(xtreemfs_cleanup_get_resultsResponse* other); - + // implements Message ---------------------------------------------- - + xtreemfs_cleanup_get_resultsResponse* New() const; void CopyFrom(const ::google::protobuf::Message& from); void MergeFrom(const ::google::protobuf::Message& from); @@ -2029,7 +2013,7 @@ class xtreemfs_cleanup_get_resultsResponse : public ::google::protobuf::Message void MergeFrom(const xtreemfs_cleanup_get_resultsResponse& from); void Clear(); bool IsInitialized() const; - + int ByteSize() const; bool MergePartialFromCodedStream( ::google::protobuf::io::CodedInputStream* input); @@ -2042,13 +2026,13 @@ class xtreemfs_cleanup_get_resultsResponse : public ::google::protobuf::Message void SharedDtor(); void SetCachedSize(int size) const; public: - + ::google::protobuf::Metadata GetMetadata() const; - + // nested types ---------------------------------------------------- - + // accessors ------------------------------------------------------- - + // repeated string results = 1; inline int results_size() const; inline void clear_results(); @@ -2064,30 +2048,21 @@ class xtreemfs_cleanup_get_resultsResponse : public ::google::protobuf::Message inline void add_results(const char* value, size_t size); inline const ::google::protobuf::RepeatedPtrField< ::std::string>& results() const; inline ::google::protobuf::RepeatedPtrField< ::std::string>* mutable_results(); - + // @@protoc_insertion_point(class_scope:xtreemfs.pbrpc.xtreemfs_cleanup_get_resultsResponse) private: + ::google::protobuf::UnknownFieldSet _unknown_fields_; - mutable int _cached_size_; - + ::google::protobuf::RepeatedPtrField< ::std::string> results_; - friend void protobuf_AddDesc_xtreemfs_2fOSD_2eproto(); - friend void protobuf_AssignDesc_xtreemfs_2fOSD_2eproto(); - friend void protobuf_ShutdownFile_xtreemfs_2fOSD_2eproto(); - + + mutable int _cached_size_; ::google::protobuf::uint32 _has_bits_[(1 + 31) / 32]; - - // WHY DOES & HAVE LOWER PRECEDENCE THAN != !? - inline bool _has_bit(int index) const { - return (_has_bits_[index / 32] & (1u << (index % 32))) != 0; - } - inline void _set_bit(int index) { - _has_bits_[index / 32] |= (1u << (index % 32)); - } - inline void _clear_bit(int index) { - _has_bits_[index / 32] &= ~(1u << (index % 32)); - } - + + friend void protobuf_AddDesc_xtreemfs_2fOSD_2eproto(); + friend void protobuf_AssignDesc_xtreemfs_2fOSD_2eproto(); + friend void protobuf_ShutdownFile_xtreemfs_2fOSD_2eproto(); + void InitAsDefaultInstance(); static xtreemfs_cleanup_get_resultsResponse* default_instance_; }; @@ -2097,29 +2072,29 @@ class xtreemfs_cleanup_is_runningResponse : public ::google::protobuf::Message { public: xtreemfs_cleanup_is_runningResponse(); virtual ~xtreemfs_cleanup_is_runningResponse(); - + xtreemfs_cleanup_is_runningResponse(const xtreemfs_cleanup_is_runningResponse& from); - + inline xtreemfs_cleanup_is_runningResponse& operator=(const xtreemfs_cleanup_is_runningResponse& from) { CopyFrom(from); return *this; } - + inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const { return _unknown_fields_; } - + inline ::google::protobuf::UnknownFieldSet* mutable_unknown_fields() { return &_unknown_fields_; } - + static const ::google::protobuf::Descriptor* descriptor(); static const xtreemfs_cleanup_is_runningResponse& default_instance(); - + void Swap(xtreemfs_cleanup_is_runningResponse* other); - + // implements Message ---------------------------------------------- - + xtreemfs_cleanup_is_runningResponse* New() const; void CopyFrom(const ::google::protobuf::Message& from); void MergeFrom(const ::google::protobuf::Message& from); @@ -2127,7 +2102,7 @@ class xtreemfs_cleanup_is_runningResponse : public ::google::protobuf::Message { void MergeFrom(const xtreemfs_cleanup_is_runningResponse& from); void Clear(); bool IsInitialized() const; - + int ByteSize() const; bool MergePartialFromCodedStream( ::google::protobuf::io::CodedInputStream* input); @@ -2140,43 +2115,36 @@ class xtreemfs_cleanup_is_runningResponse : public ::google::protobuf::Message { void SharedDtor(); void SetCachedSize(int size) const; public: - + ::google::protobuf::Metadata GetMetadata() const; - + // nested types ---------------------------------------------------- - + // accessors ------------------------------------------------------- - + // required bool is_running = 1; inline bool has_is_running() const; inline void clear_is_running(); static const int kIsRunningFieldNumber = 1; inline bool is_running() const; inline void set_is_running(bool value); - + // @@protoc_insertion_point(class_scope:xtreemfs.pbrpc.xtreemfs_cleanup_is_runningResponse) private: + inline void set_has_is_running(); + inline void clear_has_is_running(); + ::google::protobuf::UnknownFieldSet _unknown_fields_; - mutable int _cached_size_; - + bool is_running_; + + mutable int _cached_size_; + ::google::protobuf::uint32 _has_bits_[(1 + 31) / 32]; + friend void protobuf_AddDesc_xtreemfs_2fOSD_2eproto(); friend void protobuf_AssignDesc_xtreemfs_2fOSD_2eproto(); friend void protobuf_ShutdownFile_xtreemfs_2fOSD_2eproto(); - - ::google::protobuf::uint32 _has_bits_[(1 + 31) / 32]; - - // WHY DOES & HAVE LOWER PRECEDENCE THAN != !? - inline bool _has_bit(int index) const { - return (_has_bits_[index / 32] & (1u << (index % 32))) != 0; - } - inline void _set_bit(int index) { - _has_bits_[index / 32] |= (1u << (index % 32)); - } - inline void _clear_bit(int index) { - _has_bits_[index / 32] &= ~(1u << (index % 32)); - } - + void InitAsDefaultInstance(); static xtreemfs_cleanup_is_runningResponse* default_instance_; }; @@ -2186,29 +2154,29 @@ class xtreemfs_cleanup_startRequest : public ::google::protobuf::Message { public: xtreemfs_cleanup_startRequest(); virtual ~xtreemfs_cleanup_startRequest(); - + xtreemfs_cleanup_startRequest(const xtreemfs_cleanup_startRequest& from); - + inline xtreemfs_cleanup_startRequest& operator=(const xtreemfs_cleanup_startRequest& from) { CopyFrom(from); return *this; } - + inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const { return _unknown_fields_; } - + inline ::google::protobuf::UnknownFieldSet* mutable_unknown_fields() { return &_unknown_fields_; } - + static const ::google::protobuf::Descriptor* descriptor(); static const xtreemfs_cleanup_startRequest& default_instance(); - + void Swap(xtreemfs_cleanup_startRequest* other); - + // implements Message ---------------------------------------------- - + xtreemfs_cleanup_startRequest* New() const; void CopyFrom(const ::google::protobuf::Message& from); void MergeFrom(const ::google::protobuf::Message& from); @@ -2216,7 +2184,7 @@ class xtreemfs_cleanup_startRequest : public ::google::protobuf::Message { void MergeFrom(const xtreemfs_cleanup_startRequest& from); void Clear(); bool IsInitialized() const; - + int ByteSize() const; bool MergePartialFromCodedStream( ::google::protobuf::io::CodedInputStream* input); @@ -2229,59 +2197,56 @@ class xtreemfs_cleanup_startRequest : public ::google::protobuf::Message { void SharedDtor(); void SetCachedSize(int size) const; public: - + ::google::protobuf::Metadata GetMetadata() const; - + // nested types ---------------------------------------------------- - + // accessors ------------------------------------------------------- - + // required bool remove_zombies = 1; inline bool has_remove_zombies() const; inline void clear_remove_zombies(); static const int kRemoveZombiesFieldNumber = 1; inline bool remove_zombies() const; inline void set_remove_zombies(bool value); - + // required bool remove_unavail_volume = 2; inline bool has_remove_unavail_volume() const; inline void clear_remove_unavail_volume(); static const int kRemoveUnavailVolumeFieldNumber = 2; inline bool remove_unavail_volume() const; inline void set_remove_unavail_volume(bool value); - + // required bool lost_and_found = 3; inline bool has_lost_and_found() const; inline void clear_lost_and_found(); static const int kLostAndFoundFieldNumber = 3; inline bool lost_and_found() const; inline void set_lost_and_found(bool value); - + // @@protoc_insertion_point(class_scope:xtreemfs.pbrpc.xtreemfs_cleanup_startRequest) private: + inline void set_has_remove_zombies(); + inline void clear_has_remove_zombies(); + inline void set_has_remove_unavail_volume(); + inline void clear_has_remove_unavail_volume(); + inline void set_has_lost_and_found(); + inline void clear_has_lost_and_found(); + ::google::protobuf::UnknownFieldSet _unknown_fields_; - mutable int _cached_size_; - + bool remove_zombies_; bool remove_unavail_volume_; bool lost_and_found_; + + mutable int _cached_size_; + ::google::protobuf::uint32 _has_bits_[(3 + 31) / 32]; + friend void protobuf_AddDesc_xtreemfs_2fOSD_2eproto(); friend void protobuf_AssignDesc_xtreemfs_2fOSD_2eproto(); friend void protobuf_ShutdownFile_xtreemfs_2fOSD_2eproto(); - - ::google::protobuf::uint32 _has_bits_[(3 + 31) / 32]; - - // WHY DOES & HAVE LOWER PRECEDENCE THAN != !? - inline bool _has_bit(int index) const { - return (_has_bits_[index / 32] & (1u << (index % 32))) != 0; - } - inline void _set_bit(int index) { - _has_bits_[index / 32] |= (1u << (index % 32)); - } - inline void _clear_bit(int index) { - _has_bits_[index / 32] &= ~(1u << (index % 32)); - } - + void InitAsDefaultInstance(); static xtreemfs_cleanup_startRequest* default_instance_; }; @@ -2291,29 +2256,29 @@ class xtreemfs_cleanup_statusResponse : public ::google::protobuf::Message { public: xtreemfs_cleanup_statusResponse(); virtual ~xtreemfs_cleanup_statusResponse(); - + xtreemfs_cleanup_statusResponse(const xtreemfs_cleanup_statusResponse& from); - + inline xtreemfs_cleanup_statusResponse& operator=(const xtreemfs_cleanup_statusResponse& from) { CopyFrom(from); return *this; } - + inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const { return _unknown_fields_; } - + inline ::google::protobuf::UnknownFieldSet* mutable_unknown_fields() { return &_unknown_fields_; } - + static const ::google::protobuf::Descriptor* descriptor(); static const xtreemfs_cleanup_statusResponse& default_instance(); - + void Swap(xtreemfs_cleanup_statusResponse* other); - + // implements Message ---------------------------------------------- - + xtreemfs_cleanup_statusResponse* New() const; void CopyFrom(const ::google::protobuf::Message& from); void MergeFrom(const ::google::protobuf::Message& from); @@ -2321,7 +2286,7 @@ class xtreemfs_cleanup_statusResponse : public ::google::protobuf::Message { void MergeFrom(const xtreemfs_cleanup_statusResponse& from); void Clear(); bool IsInitialized() const; - + int ByteSize() const; bool MergePartialFromCodedStream( ::google::protobuf::io::CodedInputStream* input); @@ -2334,13 +2299,13 @@ class xtreemfs_cleanup_statusResponse : public ::google::protobuf::Message { void SharedDtor(); void SetCachedSize(int size) const; public: - + ::google::protobuf::Metadata GetMetadata() const; - + // nested types ---------------------------------------------------- - + // accessors ------------------------------------------------------- - + // required string status = 1; inline bool has_status() const; inline void clear_status(); @@ -2350,31 +2315,25 @@ class xtreemfs_cleanup_statusResponse : public ::google::protobuf::Message { inline void set_status(const char* value); inline void set_status(const char* value, size_t size); inline ::std::string* mutable_status(); - + inline ::std::string* release_status(); + inline void set_allocated_status(::std::string* status); + // @@protoc_insertion_point(class_scope:xtreemfs.pbrpc.xtreemfs_cleanup_statusResponse) private: + inline void set_has_status(); + inline void clear_has_status(); + ::google::protobuf::UnknownFieldSet _unknown_fields_; - mutable int _cached_size_; - + ::std::string* status_; - static const ::std::string _default_status_; + + mutable int _cached_size_; + ::google::protobuf::uint32 _has_bits_[(1 + 31) / 32]; + friend void protobuf_AddDesc_xtreemfs_2fOSD_2eproto(); friend void protobuf_AssignDesc_xtreemfs_2fOSD_2eproto(); friend void protobuf_ShutdownFile_xtreemfs_2fOSD_2eproto(); - - ::google::protobuf::uint32 _has_bits_[(1 + 31) / 32]; - - // WHY DOES & HAVE LOWER PRECEDENCE THAN != !? - inline bool _has_bit(int index) const { - return (_has_bits_[index / 32] & (1u << (index % 32))) != 0; - } - inline void _set_bit(int index) { - _has_bits_[index / 32] |= (1u << (index % 32)); - } - inline void _clear_bit(int index) { - _has_bits_[index / 32] &= ~(1u << (index % 32)); - } - + void InitAsDefaultInstance(); static xtreemfs_cleanup_statusResponse* default_instance_; }; @@ -2384,29 +2343,29 @@ class xtreemfs_rwr_fetchRequest : public ::google::protobuf::Message { public: xtreemfs_rwr_fetchRequest(); virtual ~xtreemfs_rwr_fetchRequest(); - + xtreemfs_rwr_fetchRequest(const xtreemfs_rwr_fetchRequest& from); - + inline xtreemfs_rwr_fetchRequest& operator=(const xtreemfs_rwr_fetchRequest& from) { CopyFrom(from); return *this; } - + inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const { return _unknown_fields_; } - + inline ::google::protobuf::UnknownFieldSet* mutable_unknown_fields() { return &_unknown_fields_; } - + static const ::google::protobuf::Descriptor* descriptor(); static const xtreemfs_rwr_fetchRequest& default_instance(); - + void Swap(xtreemfs_rwr_fetchRequest* other); - + // implements Message ---------------------------------------------- - + xtreemfs_rwr_fetchRequest* New() const; void CopyFrom(const ::google::protobuf::Message& from); void MergeFrom(const ::google::protobuf::Message& from); @@ -2414,7 +2373,7 @@ class xtreemfs_rwr_fetchRequest : public ::google::protobuf::Message { void MergeFrom(const xtreemfs_rwr_fetchRequest& from); void Clear(); bool IsInitialized() const; - + int ByteSize() const; bool MergePartialFromCodedStream( ::google::protobuf::io::CodedInputStream* input); @@ -2427,20 +2386,22 @@ class xtreemfs_rwr_fetchRequest : public ::google::protobuf::Message { void SharedDtor(); void SetCachedSize(int size) const; public: - + ::google::protobuf::Metadata GetMetadata() const; - + // nested types ---------------------------------------------------- - + // accessors ------------------------------------------------------- - + // required .xtreemfs.pbrpc.FileCredentials file_credentials = 1; inline bool has_file_credentials() const; inline void clear_file_credentials(); static const int kFileCredentialsFieldNumber = 1; inline const ::xtreemfs::pbrpc::FileCredentials& file_credentials() const; inline ::xtreemfs::pbrpc::FileCredentials* mutable_file_credentials(); - + inline ::xtreemfs::pbrpc::FileCredentials* release_file_credentials(); + inline void set_allocated_file_credentials(::xtreemfs::pbrpc::FileCredentials* file_credentials); + // required string file_id = 2; inline bool has_file_id() const; inline void clear_file_id(); @@ -2450,50 +2411,169 @@ class xtreemfs_rwr_fetchRequest : public ::google::protobuf::Message { inline void set_file_id(const char* value); inline void set_file_id(const char* value, size_t size); inline ::std::string* mutable_file_id(); - + inline ::std::string* release_file_id(); + inline void set_allocated_file_id(::std::string* file_id); + // required fixed64 object_number = 3; inline bool has_object_number() const; inline void clear_object_number(); static const int kObjectNumberFieldNumber = 3; inline ::google::protobuf::uint64 object_number() const; inline void set_object_number(::google::protobuf::uint64 value); - + // required fixed64 object_version = 4; inline bool has_object_version() const; inline void clear_object_version(); static const int kObjectVersionFieldNumber = 4; inline ::google::protobuf::uint64 object_version() const; inline void set_object_version(::google::protobuf::uint64 value); - + // @@protoc_insertion_point(class_scope:xtreemfs.pbrpc.xtreemfs_rwr_fetchRequest) private: + inline void set_has_file_credentials(); + inline void clear_has_file_credentials(); + inline void set_has_file_id(); + inline void clear_has_file_id(); + inline void set_has_object_number(); + inline void clear_has_object_number(); + inline void set_has_object_version(); + inline void clear_has_object_version(); + ::google::protobuf::UnknownFieldSet _unknown_fields_; - mutable int _cached_size_; - + ::xtreemfs::pbrpc::FileCredentials* file_credentials_; ::std::string* file_id_; - static const ::std::string _default_file_id_; ::google::protobuf::uint64 object_number_; ::google::protobuf::uint64 object_version_; + + mutable int _cached_size_; + ::google::protobuf::uint32 _has_bits_[(4 + 31) / 32]; + friend void protobuf_AddDesc_xtreemfs_2fOSD_2eproto(); friend void protobuf_AssignDesc_xtreemfs_2fOSD_2eproto(); friend void protobuf_ShutdownFile_xtreemfs_2fOSD_2eproto(); - - ::google::protobuf::uint32 _has_bits_[(4 + 31) / 32]; - - // WHY DOES & HAVE LOWER PRECEDENCE THAN != !? - inline bool _has_bit(int index) const { - return (_has_bits_[index / 32] & (1u << (index % 32))) != 0; + + void InitAsDefaultInstance(); + static xtreemfs_rwr_fetchRequest* default_instance_; +}; +// ------------------------------------------------------------------- + +class xtreemfs_repair_objectRequest : public ::google::protobuf::Message { + public: + xtreemfs_repair_objectRequest(); + virtual ~xtreemfs_repair_objectRequest(); + + xtreemfs_repair_objectRequest(const xtreemfs_repair_objectRequest& from); + + inline xtreemfs_repair_objectRequest& operator=(const xtreemfs_repair_objectRequest& from) { + CopyFrom(from); + return *this; } - inline void _set_bit(int index) { - _has_bits_[index / 32] |= (1u << (index % 32)); + + inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const { + return _unknown_fields_; } - inline void _clear_bit(int index) { - _has_bits_[index / 32] &= ~(1u << (index % 32)); + + inline ::google::protobuf::UnknownFieldSet* mutable_unknown_fields() { + return &_unknown_fields_; } - + + static const ::google::protobuf::Descriptor* descriptor(); + static const xtreemfs_repair_objectRequest& default_instance(); + + void Swap(xtreemfs_repair_objectRequest* other); + + // implements Message ---------------------------------------------- + + xtreemfs_repair_objectRequest* New() const; + void CopyFrom(const ::google::protobuf::Message& from); + void MergeFrom(const ::google::protobuf::Message& from); + void CopyFrom(const xtreemfs_repair_objectRequest& from); + void MergeFrom(const xtreemfs_repair_objectRequest& from); + void Clear(); + bool IsInitialized() const; + + int ByteSize() const; + bool MergePartialFromCodedStream( + ::google::protobuf::io::CodedInputStream* input); + void SerializeWithCachedSizes( + ::google::protobuf::io::CodedOutputStream* output) const; + ::google::protobuf::uint8* SerializeWithCachedSizesToArray(::google::protobuf::uint8* output) const; + int GetCachedSize() const { return _cached_size_; } + private: + void SharedCtor(); + void SharedDtor(); + void SetCachedSize(int size) const; + public: + + ::google::protobuf::Metadata GetMetadata() const; + + // nested types ---------------------------------------------------- + + // accessors ------------------------------------------------------- + + // required .xtreemfs.pbrpc.FileCredentials file_credentials = 1; + inline bool has_file_credentials() const; + inline void clear_file_credentials(); + static const int kFileCredentialsFieldNumber = 1; + inline const ::xtreemfs::pbrpc::FileCredentials& file_credentials() const; + inline ::xtreemfs::pbrpc::FileCredentials* mutable_file_credentials(); + inline ::xtreemfs::pbrpc::FileCredentials* release_file_credentials(); + inline void set_allocated_file_credentials(::xtreemfs::pbrpc::FileCredentials* file_credentials); + + // required string file_id = 2; + inline bool has_file_id() const; + inline void clear_file_id(); + static const int kFileIdFieldNumber = 2; + inline const ::std::string& file_id() const; + inline void set_file_id(const ::std::string& value); + inline void set_file_id(const char* value); + inline void set_file_id(const char* value, size_t size); + inline ::std::string* mutable_file_id(); + inline ::std::string* release_file_id(); + inline void set_allocated_file_id(::std::string* file_id); + + // required fixed64 object_number = 3; + inline bool has_object_number() const; + inline void clear_object_number(); + static const int kObjectNumberFieldNumber = 3; + inline ::google::protobuf::uint64 object_number() const; + inline void set_object_number(::google::protobuf::uint64 value); + + // required fixed64 object_version = 4; + inline bool has_object_version() const; + inline void clear_object_version(); + static const int kObjectVersionFieldNumber = 4; + inline ::google::protobuf::uint64 object_version() const; + inline void set_object_version(::google::protobuf::uint64 value); + + // @@protoc_insertion_point(class_scope:xtreemfs.pbrpc.xtreemfs_repair_objectRequest) + private: + inline void set_has_file_credentials(); + inline void clear_has_file_credentials(); + inline void set_has_file_id(); + inline void clear_has_file_id(); + inline void set_has_object_number(); + inline void clear_has_object_number(); + inline void set_has_object_version(); + inline void clear_has_object_version(); + + ::google::protobuf::UnknownFieldSet _unknown_fields_; + + ::xtreemfs::pbrpc::FileCredentials* file_credentials_; + ::std::string* file_id_; + ::google::protobuf::uint64 object_number_; + ::google::protobuf::uint64 object_version_; + + mutable int _cached_size_; + ::google::protobuf::uint32 _has_bits_[(4 + 31) / 32]; + + friend void protobuf_AddDesc_xtreemfs_2fOSD_2eproto(); + friend void protobuf_AssignDesc_xtreemfs_2fOSD_2eproto(); + friend void protobuf_ShutdownFile_xtreemfs_2fOSD_2eproto(); + void InitAsDefaultInstance(); - static xtreemfs_rwr_fetchRequest* default_instance_; + static xtreemfs_repair_objectRequest* default_instance_; }; // ------------------------------------------------------------------- @@ -2501,29 +2581,29 @@ class xtreemfs_rwr_flease_msgRequest : public ::google::protobuf::Message { public: xtreemfs_rwr_flease_msgRequest(); virtual ~xtreemfs_rwr_flease_msgRequest(); - + xtreemfs_rwr_flease_msgRequest(const xtreemfs_rwr_flease_msgRequest& from); - + inline xtreemfs_rwr_flease_msgRequest& operator=(const xtreemfs_rwr_flease_msgRequest& from) { CopyFrom(from); return *this; } - + inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const { return _unknown_fields_; } - + inline ::google::protobuf::UnknownFieldSet* mutable_unknown_fields() { return &_unknown_fields_; } - + static const ::google::protobuf::Descriptor* descriptor(); static const xtreemfs_rwr_flease_msgRequest& default_instance(); - + void Swap(xtreemfs_rwr_flease_msgRequest* other); - + // implements Message ---------------------------------------------- - + xtreemfs_rwr_flease_msgRequest* New() const; void CopyFrom(const ::google::protobuf::Message& from); void MergeFrom(const ::google::protobuf::Message& from); @@ -2531,7 +2611,7 @@ class xtreemfs_rwr_flease_msgRequest : public ::google::protobuf::Message { void MergeFrom(const xtreemfs_rwr_flease_msgRequest& from); void Clear(); bool IsInitialized() const; - + int ByteSize() const; bool MergePartialFromCodedStream( ::google::protobuf::io::CodedInputStream* input); @@ -2544,13 +2624,13 @@ class xtreemfs_rwr_flease_msgRequest : public ::google::protobuf::Message { void SharedDtor(); void SetCachedSize(int size) const; public: - + ::google::protobuf::Metadata GetMetadata() const; - + // nested types ---------------------------------------------------- - + // accessors ------------------------------------------------------- - + // required string sender_hostname = 1; inline bool has_sender_hostname() const; inline void clear_sender_hostname(); @@ -2560,39 +2640,35 @@ class xtreemfs_rwr_flease_msgRequest : public ::google::protobuf::Message { inline void set_sender_hostname(const char* value); inline void set_sender_hostname(const char* value, size_t size); inline ::std::string* mutable_sender_hostname(); - + inline ::std::string* release_sender_hostname(); + inline void set_allocated_sender_hostname(::std::string* sender_hostname); + // required fixed32 sender_port = 2; inline bool has_sender_port() const; inline void clear_sender_port(); static const int kSenderPortFieldNumber = 2; inline ::google::protobuf::uint32 sender_port() const; inline void set_sender_port(::google::protobuf::uint32 value); - + // @@protoc_insertion_point(class_scope:xtreemfs.pbrpc.xtreemfs_rwr_flease_msgRequest) private: + inline void set_has_sender_hostname(); + inline void clear_has_sender_hostname(); + inline void set_has_sender_port(); + inline void clear_has_sender_port(); + ::google::protobuf::UnknownFieldSet _unknown_fields_; - mutable int _cached_size_; - + ::std::string* sender_hostname_; - static const ::std::string _default_sender_hostname_; ::google::protobuf::uint32 sender_port_; + + mutable int _cached_size_; + ::google::protobuf::uint32 _has_bits_[(2 + 31) / 32]; + friend void protobuf_AddDesc_xtreemfs_2fOSD_2eproto(); friend void protobuf_AssignDesc_xtreemfs_2fOSD_2eproto(); friend void protobuf_ShutdownFile_xtreemfs_2fOSD_2eproto(); - - ::google::protobuf::uint32 _has_bits_[(2 + 31) / 32]; - - // WHY DOES & HAVE LOWER PRECEDENCE THAN != !? - inline bool _has_bit(int index) const { - return (_has_bits_[index / 32] & (1u << (index % 32))) != 0; - } - inline void _set_bit(int index) { - _has_bits_[index / 32] |= (1u << (index % 32)); - } - inline void _clear_bit(int index) { - _has_bits_[index / 32] &= ~(1u << (index % 32)); - } - + void InitAsDefaultInstance(); static xtreemfs_rwr_flease_msgRequest* default_instance_; }; @@ -2602,29 +2678,29 @@ class xtreemfs_rwr_set_primary_epochRequest : public ::google::protobuf::Message public: xtreemfs_rwr_set_primary_epochRequest(); virtual ~xtreemfs_rwr_set_primary_epochRequest(); - + xtreemfs_rwr_set_primary_epochRequest(const xtreemfs_rwr_set_primary_epochRequest& from); - + inline xtreemfs_rwr_set_primary_epochRequest& operator=(const xtreemfs_rwr_set_primary_epochRequest& from) { CopyFrom(from); return *this; } - + inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const { return _unknown_fields_; } - + inline ::google::protobuf::UnknownFieldSet* mutable_unknown_fields() { return &_unknown_fields_; } - + static const ::google::protobuf::Descriptor* descriptor(); static const xtreemfs_rwr_set_primary_epochRequest& default_instance(); - + void Swap(xtreemfs_rwr_set_primary_epochRequest* other); - + // implements Message ---------------------------------------------- - + xtreemfs_rwr_set_primary_epochRequest* New() const; void CopyFrom(const ::google::protobuf::Message& from); void MergeFrom(const ::google::protobuf::Message& from); @@ -2632,7 +2708,7 @@ class xtreemfs_rwr_set_primary_epochRequest : public ::google::protobuf::Message void MergeFrom(const xtreemfs_rwr_set_primary_epochRequest& from); void Clear(); bool IsInitialized() const; - + int ByteSize() const; bool MergePartialFromCodedStream( ::google::protobuf::io::CodedInputStream* input); @@ -2645,20 +2721,22 @@ class xtreemfs_rwr_set_primary_epochRequest : public ::google::protobuf::Message void SharedDtor(); void SetCachedSize(int size) const; public: - + ::google::protobuf::Metadata GetMetadata() const; - + // nested types ---------------------------------------------------- - + // accessors ------------------------------------------------------- - + // required .xtreemfs.pbrpc.FileCredentials file_credentials = 1; inline bool has_file_credentials() const; inline void clear_file_credentials(); static const int kFileCredentialsFieldNumber = 1; inline const ::xtreemfs::pbrpc::FileCredentials& file_credentials() const; inline ::xtreemfs::pbrpc::FileCredentials* mutable_file_credentials(); - + inline ::xtreemfs::pbrpc::FileCredentials* release_file_credentials(); + inline void set_allocated_file_credentials(::xtreemfs::pbrpc::FileCredentials* file_credentials); + // required string file_id = 2; inline bool has_file_id() const; inline void clear_file_id(); @@ -2668,40 +2746,38 @@ class xtreemfs_rwr_set_primary_epochRequest : public ::google::protobuf::Message inline void set_file_id(const char* value); inline void set_file_id(const char* value, size_t size); inline ::std::string* mutable_file_id(); - + inline ::std::string* release_file_id(); + inline void set_allocated_file_id(::std::string* file_id); + // required fixed32 primary_epoch = 3; inline bool has_primary_epoch() const; inline void clear_primary_epoch(); static const int kPrimaryEpochFieldNumber = 3; inline ::google::protobuf::uint32 primary_epoch() const; inline void set_primary_epoch(::google::protobuf::uint32 value); - + // @@protoc_insertion_point(class_scope:xtreemfs.pbrpc.xtreemfs_rwr_set_primary_epochRequest) private: + inline void set_has_file_credentials(); + inline void clear_has_file_credentials(); + inline void set_has_file_id(); + inline void clear_has_file_id(); + inline void set_has_primary_epoch(); + inline void clear_has_primary_epoch(); + ::google::protobuf::UnknownFieldSet _unknown_fields_; - mutable int _cached_size_; - + ::xtreemfs::pbrpc::FileCredentials* file_credentials_; ::std::string* file_id_; - static const ::std::string _default_file_id_; ::google::protobuf::uint32 primary_epoch_; + + mutable int _cached_size_; + ::google::protobuf::uint32 _has_bits_[(3 + 31) / 32]; + friend void protobuf_AddDesc_xtreemfs_2fOSD_2eproto(); friend void protobuf_AssignDesc_xtreemfs_2fOSD_2eproto(); friend void protobuf_ShutdownFile_xtreemfs_2fOSD_2eproto(); - - ::google::protobuf::uint32 _has_bits_[(3 + 31) / 32]; - - // WHY DOES & HAVE LOWER PRECEDENCE THAN != !? - inline bool _has_bit(int index) const { - return (_has_bits_[index / 32] & (1u << (index % 32))) != 0; - } - inline void _set_bit(int index) { - _has_bits_[index / 32] |= (1u << (index % 32)); - } - inline void _clear_bit(int index) { - _has_bits_[index / 32] &= ~(1u << (index % 32)); - } - + void InitAsDefaultInstance(); static xtreemfs_rwr_set_primary_epochRequest* default_instance_; }; @@ -2711,29 +2787,29 @@ class xtreemfs_rwr_statusRequest : public ::google::protobuf::Message { public: xtreemfs_rwr_statusRequest(); virtual ~xtreemfs_rwr_statusRequest(); - + xtreemfs_rwr_statusRequest(const xtreemfs_rwr_statusRequest& from); - + inline xtreemfs_rwr_statusRequest& operator=(const xtreemfs_rwr_statusRequest& from) { CopyFrom(from); return *this; } - + inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const { return _unknown_fields_; } - + inline ::google::protobuf::UnknownFieldSet* mutable_unknown_fields() { return &_unknown_fields_; } - + static const ::google::protobuf::Descriptor* descriptor(); static const xtreemfs_rwr_statusRequest& default_instance(); - + void Swap(xtreemfs_rwr_statusRequest* other); - + // implements Message ---------------------------------------------- - + xtreemfs_rwr_statusRequest* New() const; void CopyFrom(const ::google::protobuf::Message& from); void MergeFrom(const ::google::protobuf::Message& from); @@ -2741,7 +2817,7 @@ class xtreemfs_rwr_statusRequest : public ::google::protobuf::Message { void MergeFrom(const xtreemfs_rwr_statusRequest& from); void Clear(); bool IsInitialized() const; - + int ByteSize() const; bool MergePartialFromCodedStream( ::google::protobuf::io::CodedInputStream* input); @@ -2754,20 +2830,22 @@ class xtreemfs_rwr_statusRequest : public ::google::protobuf::Message { void SharedDtor(); void SetCachedSize(int size) const; public: - + ::google::protobuf::Metadata GetMetadata() const; - + // nested types ---------------------------------------------------- - + // accessors ------------------------------------------------------- - + // required .xtreemfs.pbrpc.FileCredentials file_credentials = 1; inline bool has_file_credentials() const; inline void clear_file_credentials(); static const int kFileCredentialsFieldNumber = 1; inline const ::xtreemfs::pbrpc::FileCredentials& file_credentials() const; inline ::xtreemfs::pbrpc::FileCredentials* mutable_file_credentials(); - + inline ::xtreemfs::pbrpc::FileCredentials* release_file_credentials(); + inline void set_allocated_file_credentials(::xtreemfs::pbrpc::FileCredentials* file_credentials); + // required string file_id = 2; inline bool has_file_id() const; inline void clear_file_id(); @@ -2777,40 +2855,38 @@ class xtreemfs_rwr_statusRequest : public ::google::protobuf::Message { inline void set_file_id(const char* value); inline void set_file_id(const char* value, size_t size); inline ::std::string* mutable_file_id(); - + inline ::std::string* release_file_id(); + inline void set_allocated_file_id(::std::string* file_id); + // required fixed64 max_local_obj_version = 3; inline bool has_max_local_obj_version() const; inline void clear_max_local_obj_version(); static const int kMaxLocalObjVersionFieldNumber = 3; inline ::google::protobuf::uint64 max_local_obj_version() const; inline void set_max_local_obj_version(::google::protobuf::uint64 value); - + // @@protoc_insertion_point(class_scope:xtreemfs.pbrpc.xtreemfs_rwr_statusRequest) private: + inline void set_has_file_credentials(); + inline void clear_has_file_credentials(); + inline void set_has_file_id(); + inline void clear_has_file_id(); + inline void set_has_max_local_obj_version(); + inline void clear_has_max_local_obj_version(); + ::google::protobuf::UnknownFieldSet _unknown_fields_; - mutable int _cached_size_; - + ::xtreemfs::pbrpc::FileCredentials* file_credentials_; ::std::string* file_id_; - static const ::std::string _default_file_id_; ::google::protobuf::uint64 max_local_obj_version_; + + mutable int _cached_size_; + ::google::protobuf::uint32 _has_bits_[(3 + 31) / 32]; + friend void protobuf_AddDesc_xtreemfs_2fOSD_2eproto(); friend void protobuf_AssignDesc_xtreemfs_2fOSD_2eproto(); friend void protobuf_ShutdownFile_xtreemfs_2fOSD_2eproto(); - - ::google::protobuf::uint32 _has_bits_[(3 + 31) / 32]; - - // WHY DOES & HAVE LOWER PRECEDENCE THAN != !? - inline bool _has_bit(int index) const { - return (_has_bits_[index / 32] & (1u << (index % 32))) != 0; - } - inline void _set_bit(int index) { - _has_bits_[index / 32] |= (1u << (index % 32)); - } - inline void _clear_bit(int index) { - _has_bits_[index / 32] &= ~(1u << (index % 32)); - } - + void InitAsDefaultInstance(); static xtreemfs_rwr_statusRequest* default_instance_; }; @@ -2820,29 +2896,29 @@ class xtreemfs_rwr_truncateRequest : public ::google::protobuf::Message { public: xtreemfs_rwr_truncateRequest(); virtual ~xtreemfs_rwr_truncateRequest(); - + xtreemfs_rwr_truncateRequest(const xtreemfs_rwr_truncateRequest& from); - + inline xtreemfs_rwr_truncateRequest& operator=(const xtreemfs_rwr_truncateRequest& from) { CopyFrom(from); return *this; } - + inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const { return _unknown_fields_; } - + inline ::google::protobuf::UnknownFieldSet* mutable_unknown_fields() { return &_unknown_fields_; } - + static const ::google::protobuf::Descriptor* descriptor(); static const xtreemfs_rwr_truncateRequest& default_instance(); - + void Swap(xtreemfs_rwr_truncateRequest* other); - + // implements Message ---------------------------------------------- - + xtreemfs_rwr_truncateRequest* New() const; void CopyFrom(const ::google::protobuf::Message& from); void MergeFrom(const ::google::protobuf::Message& from); @@ -2850,7 +2926,7 @@ class xtreemfs_rwr_truncateRequest : public ::google::protobuf::Message { void MergeFrom(const xtreemfs_rwr_truncateRequest& from); void Clear(); bool IsInitialized() const; - + int ByteSize() const; bool MergePartialFromCodedStream( ::google::protobuf::io::CodedInputStream* input); @@ -2863,20 +2939,22 @@ class xtreemfs_rwr_truncateRequest : public ::google::protobuf::Message { void SharedDtor(); void SetCachedSize(int size) const; public: - + ::google::protobuf::Metadata GetMetadata() const; - + // nested types ---------------------------------------------------- - + // accessors ------------------------------------------------------- - + // required .xtreemfs.pbrpc.FileCredentials file_credentials = 1; inline bool has_file_credentials() const; inline void clear_file_credentials(); static const int kFileCredentialsFieldNumber = 1; inline const ::xtreemfs::pbrpc::FileCredentials& file_credentials() const; inline ::xtreemfs::pbrpc::FileCredentials* mutable_file_credentials(); - + inline ::xtreemfs::pbrpc::FileCredentials* release_file_credentials(); + inline void set_allocated_file_credentials(::xtreemfs::pbrpc::FileCredentials* file_credentials); + // required string file_id = 2; inline bool has_file_id() const; inline void clear_file_id(); @@ -2886,48 +2964,48 @@ class xtreemfs_rwr_truncateRequest : public ::google::protobuf::Message { inline void set_file_id(const char* value); inline void set_file_id(const char* value, size_t size); inline ::std::string* mutable_file_id(); - + inline ::std::string* release_file_id(); + inline void set_allocated_file_id(::std::string* file_id); + // required fixed64 new_file_size = 3; inline bool has_new_file_size() const; inline void clear_new_file_size(); static const int kNewFileSizeFieldNumber = 3; inline ::google::protobuf::uint64 new_file_size() const; inline void set_new_file_size(::google::protobuf::uint64 value); - + // required fixed64 object_version = 4; inline bool has_object_version() const; inline void clear_object_version(); static const int kObjectVersionFieldNumber = 4; inline ::google::protobuf::uint64 object_version() const; inline void set_object_version(::google::protobuf::uint64 value); - + // @@protoc_insertion_point(class_scope:xtreemfs.pbrpc.xtreemfs_rwr_truncateRequest) private: + inline void set_has_file_credentials(); + inline void clear_has_file_credentials(); + inline void set_has_file_id(); + inline void clear_has_file_id(); + inline void set_has_new_file_size(); + inline void clear_has_new_file_size(); + inline void set_has_object_version(); + inline void clear_has_object_version(); + ::google::protobuf::UnknownFieldSet _unknown_fields_; - mutable int _cached_size_; - + ::xtreemfs::pbrpc::FileCredentials* file_credentials_; ::std::string* file_id_; - static const ::std::string _default_file_id_; ::google::protobuf::uint64 new_file_size_; ::google::protobuf::uint64 object_version_; + + mutable int _cached_size_; + ::google::protobuf::uint32 _has_bits_[(4 + 31) / 32]; + friend void protobuf_AddDesc_xtreemfs_2fOSD_2eproto(); friend void protobuf_AssignDesc_xtreemfs_2fOSD_2eproto(); friend void protobuf_ShutdownFile_xtreemfs_2fOSD_2eproto(); - - ::google::protobuf::uint32 _has_bits_[(4 + 31) / 32]; - - // WHY DOES & HAVE LOWER PRECEDENCE THAN != !? - inline bool _has_bit(int index) const { - return (_has_bits_[index / 32] & (1u << (index % 32))) != 0; - } - inline void _set_bit(int index) { - _has_bits_[index / 32] |= (1u << (index % 32)); - } - inline void _clear_bit(int index) { - _has_bits_[index / 32] &= ~(1u << (index % 32)); - } - + void InitAsDefaultInstance(); static xtreemfs_rwr_truncateRequest* default_instance_; }; @@ -2937,29 +3015,29 @@ class xtreemfs_rwr_updateRequest : public ::google::protobuf::Message { public: xtreemfs_rwr_updateRequest(); virtual ~xtreemfs_rwr_updateRequest(); - + xtreemfs_rwr_updateRequest(const xtreemfs_rwr_updateRequest& from); - + inline xtreemfs_rwr_updateRequest& operator=(const xtreemfs_rwr_updateRequest& from) { CopyFrom(from); return *this; } - + inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const { return _unknown_fields_; } - + inline ::google::protobuf::UnknownFieldSet* mutable_unknown_fields() { return &_unknown_fields_; } - + static const ::google::protobuf::Descriptor* descriptor(); static const xtreemfs_rwr_updateRequest& default_instance(); - + void Swap(xtreemfs_rwr_updateRequest* other); - + // implements Message ---------------------------------------------- - + xtreemfs_rwr_updateRequest* New() const; void CopyFrom(const ::google::protobuf::Message& from); void MergeFrom(const ::google::protobuf::Message& from); @@ -2967,7 +3045,7 @@ class xtreemfs_rwr_updateRequest : public ::google::protobuf::Message { void MergeFrom(const xtreemfs_rwr_updateRequest& from); void Clear(); bool IsInitialized() const; - + int ByteSize() const; bool MergePartialFromCodedStream( ::google::protobuf::io::CodedInputStream* input); @@ -2980,20 +3058,22 @@ class xtreemfs_rwr_updateRequest : public ::google::protobuf::Message { void SharedDtor(); void SetCachedSize(int size) const; public: - + ::google::protobuf::Metadata GetMetadata() const; - + // nested types ---------------------------------------------------- - + // accessors ------------------------------------------------------- - + // required .xtreemfs.pbrpc.FileCredentials file_credentials = 1; inline bool has_file_credentials() const; inline void clear_file_credentials(); static const int kFileCredentialsFieldNumber = 1; inline const ::xtreemfs::pbrpc::FileCredentials& file_credentials() const; inline ::xtreemfs::pbrpc::FileCredentials* mutable_file_credentials(); - + inline ::xtreemfs::pbrpc::FileCredentials* release_file_credentials(); + inline void set_allocated_file_credentials(::xtreemfs::pbrpc::FileCredentials* file_credentials); + // required string file_id = 2; inline bool has_file_id() const; inline void clear_file_id(); @@ -3003,72 +3083,80 @@ class xtreemfs_rwr_updateRequest : public ::google::protobuf::Message { inline void set_file_id(const char* value); inline void set_file_id(const char* value, size_t size); inline ::std::string* mutable_file_id(); - + inline ::std::string* release_file_id(); + inline void set_allocated_file_id(::std::string* file_id); + // required fixed64 new_file_size = 3; inline bool has_new_file_size() const; inline void clear_new_file_size(); static const int kNewFileSizeFieldNumber = 3; inline ::google::protobuf::uint64 new_file_size() const; inline void set_new_file_size(::google::protobuf::uint64 value); - + // required fixed64 object_number = 7; inline bool has_object_number() const; inline void clear_object_number(); static const int kObjectNumberFieldNumber = 7; inline ::google::protobuf::uint64 object_number() const; inline void set_object_number(::google::protobuf::uint64 value); - + // required fixed64 object_version = 4; inline bool has_object_version() const; inline void clear_object_version(); static const int kObjectVersionFieldNumber = 4; inline ::google::protobuf::uint64 object_version() const; inline void set_object_version(::google::protobuf::uint64 value); - + // required fixed32 offset = 5; inline bool has_offset() const; inline void clear_offset(); static const int kOffsetFieldNumber = 5; inline ::google::protobuf::uint32 offset() const; inline void set_offset(::google::protobuf::uint32 value); - + // required .xtreemfs.pbrpc.ObjectData obj = 6; inline bool has_obj() const; inline void clear_obj(); static const int kObjFieldNumber = 6; inline const ::xtreemfs::pbrpc::ObjectData& obj() const; inline ::xtreemfs::pbrpc::ObjectData* mutable_obj(); - + inline ::xtreemfs::pbrpc::ObjectData* release_obj(); + inline void set_allocated_obj(::xtreemfs::pbrpc::ObjectData* obj); + // @@protoc_insertion_point(class_scope:xtreemfs.pbrpc.xtreemfs_rwr_updateRequest) private: + inline void set_has_file_credentials(); + inline void clear_has_file_credentials(); + inline void set_has_file_id(); + inline void clear_has_file_id(); + inline void set_has_new_file_size(); + inline void clear_has_new_file_size(); + inline void set_has_object_number(); + inline void clear_has_object_number(); + inline void set_has_object_version(); + inline void clear_has_object_version(); + inline void set_has_offset(); + inline void clear_has_offset(); + inline void set_has_obj(); + inline void clear_has_obj(); + ::google::protobuf::UnknownFieldSet _unknown_fields_; - mutable int _cached_size_; - + ::xtreemfs::pbrpc::FileCredentials* file_credentials_; ::std::string* file_id_; - static const ::std::string _default_file_id_; ::google::protobuf::uint64 new_file_size_; ::google::protobuf::uint64 object_number_; ::google::protobuf::uint64 object_version_; - ::google::protobuf::uint32 offset_; ::xtreemfs::pbrpc::ObjectData* obj_; + ::google::protobuf::uint32 offset_; + + mutable int _cached_size_; + ::google::protobuf::uint32 _has_bits_[(7 + 31) / 32]; + friend void protobuf_AddDesc_xtreemfs_2fOSD_2eproto(); friend void protobuf_AssignDesc_xtreemfs_2fOSD_2eproto(); friend void protobuf_ShutdownFile_xtreemfs_2fOSD_2eproto(); - - ::google::protobuf::uint32 _has_bits_[(7 + 31) / 32]; - - // WHY DOES & HAVE LOWER PRECEDENCE THAN != !? - inline bool _has_bit(int index) const { - return (_has_bits_[index / 32] & (1u << (index % 32))) != 0; - } - inline void _set_bit(int index) { - _has_bits_[index / 32] |= (1u << (index % 32)); - } - inline void _clear_bit(int index) { - _has_bits_[index / 32] &= ~(1u << (index % 32)); - } - + void InitAsDefaultInstance(); static xtreemfs_rwr_updateRequest* default_instance_; }; @@ -3078,29 +3166,29 @@ class xtreemfs_internal_get_gmaxRequest : public ::google::protobuf::Message { public: xtreemfs_internal_get_gmaxRequest(); virtual ~xtreemfs_internal_get_gmaxRequest(); - + xtreemfs_internal_get_gmaxRequest(const xtreemfs_internal_get_gmaxRequest& from); - + inline xtreemfs_internal_get_gmaxRequest& operator=(const xtreemfs_internal_get_gmaxRequest& from) { CopyFrom(from); return *this; } - + inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const { return _unknown_fields_; } - + inline ::google::protobuf::UnknownFieldSet* mutable_unknown_fields() { return &_unknown_fields_; } - + static const ::google::protobuf::Descriptor* descriptor(); static const xtreemfs_internal_get_gmaxRequest& default_instance(); - + void Swap(xtreemfs_internal_get_gmaxRequest* other); - + // implements Message ---------------------------------------------- - + xtreemfs_internal_get_gmaxRequest* New() const; void CopyFrom(const ::google::protobuf::Message& from); void MergeFrom(const ::google::protobuf::Message& from); @@ -3108,7 +3196,7 @@ class xtreemfs_internal_get_gmaxRequest : public ::google::protobuf::Message { void MergeFrom(const xtreemfs_internal_get_gmaxRequest& from); void Clear(); bool IsInitialized() const; - + int ByteSize() const; bool MergePartialFromCodedStream( ::google::protobuf::io::CodedInputStream* input); @@ -3121,20 +3209,22 @@ class xtreemfs_internal_get_gmaxRequest : public ::google::protobuf::Message { void SharedDtor(); void SetCachedSize(int size) const; public: - + ::google::protobuf::Metadata GetMetadata() const; - + // nested types ---------------------------------------------------- - + // accessors ------------------------------------------------------- - + // required .xtreemfs.pbrpc.FileCredentials file_credentials = 1; inline bool has_file_credentials() const; inline void clear_file_credentials(); static const int kFileCredentialsFieldNumber = 1; inline const ::xtreemfs::pbrpc::FileCredentials& file_credentials() const; inline ::xtreemfs::pbrpc::FileCredentials* mutable_file_credentials(); - + inline ::xtreemfs::pbrpc::FileCredentials* release_file_credentials(); + inline void set_allocated_file_credentials(::xtreemfs::pbrpc::FileCredentials* file_credentials); + // required string file_id = 2; inline bool has_file_id() const; inline void clear_file_id(); @@ -3144,32 +3234,28 @@ class xtreemfs_internal_get_gmaxRequest : public ::google::protobuf::Message { inline void set_file_id(const char* value); inline void set_file_id(const char* value, size_t size); inline ::std::string* mutable_file_id(); - + inline ::std::string* release_file_id(); + inline void set_allocated_file_id(::std::string* file_id); + // @@protoc_insertion_point(class_scope:xtreemfs.pbrpc.xtreemfs_internal_get_gmaxRequest) private: + inline void set_has_file_credentials(); + inline void clear_has_file_credentials(); + inline void set_has_file_id(); + inline void clear_has_file_id(); + ::google::protobuf::UnknownFieldSet _unknown_fields_; - mutable int _cached_size_; - + ::xtreemfs::pbrpc::FileCredentials* file_credentials_; ::std::string* file_id_; - static const ::std::string _default_file_id_; + + mutable int _cached_size_; + ::google::protobuf::uint32 _has_bits_[(2 + 31) / 32]; + friend void protobuf_AddDesc_xtreemfs_2fOSD_2eproto(); friend void protobuf_AssignDesc_xtreemfs_2fOSD_2eproto(); friend void protobuf_ShutdownFile_xtreemfs_2fOSD_2eproto(); - - ::google::protobuf::uint32 _has_bits_[(2 + 31) / 32]; - - // WHY DOES & HAVE LOWER PRECEDENCE THAN != !? - inline bool _has_bit(int index) const { - return (_has_bits_[index / 32] & (1u << (index % 32))) != 0; - } - inline void _set_bit(int index) { - _has_bits_[index / 32] |= (1u << (index % 32)); - } - inline void _clear_bit(int index) { - _has_bits_[index / 32] &= ~(1u << (index % 32)); - } - + void InitAsDefaultInstance(); static xtreemfs_internal_get_gmaxRequest* default_instance_; }; @@ -3179,29 +3265,29 @@ class xtreemfs_internal_get_file_sizeRequest : public ::google::protobuf::Messag public: xtreemfs_internal_get_file_sizeRequest(); virtual ~xtreemfs_internal_get_file_sizeRequest(); - + xtreemfs_internal_get_file_sizeRequest(const xtreemfs_internal_get_file_sizeRequest& from); - + inline xtreemfs_internal_get_file_sizeRequest& operator=(const xtreemfs_internal_get_file_sizeRequest& from) { CopyFrom(from); return *this; } - + inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const { return _unknown_fields_; } - + inline ::google::protobuf::UnknownFieldSet* mutable_unknown_fields() { return &_unknown_fields_; } - + static const ::google::protobuf::Descriptor* descriptor(); static const xtreemfs_internal_get_file_sizeRequest& default_instance(); - + void Swap(xtreemfs_internal_get_file_sizeRequest* other); - + // implements Message ---------------------------------------------- - + xtreemfs_internal_get_file_sizeRequest* New() const; void CopyFrom(const ::google::protobuf::Message& from); void MergeFrom(const ::google::protobuf::Message& from); @@ -3209,7 +3295,7 @@ class xtreemfs_internal_get_file_sizeRequest : public ::google::protobuf::Messag void MergeFrom(const xtreemfs_internal_get_file_sizeRequest& from); void Clear(); bool IsInitialized() const; - + int ByteSize() const; bool MergePartialFromCodedStream( ::google::protobuf::io::CodedInputStream* input); @@ -3222,20 +3308,22 @@ class xtreemfs_internal_get_file_sizeRequest : public ::google::protobuf::Messag void SharedDtor(); void SetCachedSize(int size) const; public: - + ::google::protobuf::Metadata GetMetadata() const; - + // nested types ---------------------------------------------------- - + // accessors ------------------------------------------------------- - + // required .xtreemfs.pbrpc.FileCredentials file_credentials = 1; inline bool has_file_credentials() const; inline void clear_file_credentials(); static const int kFileCredentialsFieldNumber = 1; inline const ::xtreemfs::pbrpc::FileCredentials& file_credentials() const; inline ::xtreemfs::pbrpc::FileCredentials* mutable_file_credentials(); - + inline ::xtreemfs::pbrpc::FileCredentials* release_file_credentials(); + inline void set_allocated_file_credentials(::xtreemfs::pbrpc::FileCredentials* file_credentials); + // required string file_id = 2; inline bool has_file_id() const; inline void clear_file_id(); @@ -3245,32 +3333,28 @@ class xtreemfs_internal_get_file_sizeRequest : public ::google::protobuf::Messag inline void set_file_id(const char* value); inline void set_file_id(const char* value, size_t size); inline ::std::string* mutable_file_id(); - + inline ::std::string* release_file_id(); + inline void set_allocated_file_id(::std::string* file_id); + // @@protoc_insertion_point(class_scope:xtreemfs.pbrpc.xtreemfs_internal_get_file_sizeRequest) private: + inline void set_has_file_credentials(); + inline void clear_has_file_credentials(); + inline void set_has_file_id(); + inline void clear_has_file_id(); + ::google::protobuf::UnknownFieldSet _unknown_fields_; - mutable int _cached_size_; - + ::xtreemfs::pbrpc::FileCredentials* file_credentials_; ::std::string* file_id_; - static const ::std::string _default_file_id_; + + mutable int _cached_size_; + ::google::protobuf::uint32 _has_bits_[(2 + 31) / 32]; + friend void protobuf_AddDesc_xtreemfs_2fOSD_2eproto(); friend void protobuf_AssignDesc_xtreemfs_2fOSD_2eproto(); friend void protobuf_ShutdownFile_xtreemfs_2fOSD_2eproto(); - - ::google::protobuf::uint32 _has_bits_[(2 + 31) / 32]; - - // WHY DOES & HAVE LOWER PRECEDENCE THAN != !? - inline bool _has_bit(int index) const { - return (_has_bits_[index / 32] & (1u << (index % 32))) != 0; - } - inline void _set_bit(int index) { - _has_bits_[index / 32] |= (1u << (index % 32)); - } - inline void _clear_bit(int index) { - _has_bits_[index / 32] &= ~(1u << (index % 32)); - } - + void InitAsDefaultInstance(); static xtreemfs_internal_get_file_sizeRequest* default_instance_; }; @@ -3280,29 +3364,29 @@ class xtreemfs_internal_get_file_sizeResponse : public ::google::protobuf::Messa public: xtreemfs_internal_get_file_sizeResponse(); virtual ~xtreemfs_internal_get_file_sizeResponse(); - + xtreemfs_internal_get_file_sizeResponse(const xtreemfs_internal_get_file_sizeResponse& from); - + inline xtreemfs_internal_get_file_sizeResponse& operator=(const xtreemfs_internal_get_file_sizeResponse& from) { CopyFrom(from); return *this; } - + inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const { return _unknown_fields_; } - + inline ::google::protobuf::UnknownFieldSet* mutable_unknown_fields() { return &_unknown_fields_; } - + static const ::google::protobuf::Descriptor* descriptor(); static const xtreemfs_internal_get_file_sizeResponse& default_instance(); - + void Swap(xtreemfs_internal_get_file_sizeResponse* other); - + // implements Message ---------------------------------------------- - + xtreemfs_internal_get_file_sizeResponse* New() const; void CopyFrom(const ::google::protobuf::Message& from); void MergeFrom(const ::google::protobuf::Message& from); @@ -3310,7 +3394,7 @@ class xtreemfs_internal_get_file_sizeResponse : public ::google::protobuf::Messa void MergeFrom(const xtreemfs_internal_get_file_sizeResponse& from); void Clear(); bool IsInitialized() const; - + int ByteSize() const; bool MergePartialFromCodedStream( ::google::protobuf::io::CodedInputStream* input); @@ -3323,43 +3407,36 @@ class xtreemfs_internal_get_file_sizeResponse : public ::google::protobuf::Messa void SharedDtor(); void SetCachedSize(int size) const; public: - + ::google::protobuf::Metadata GetMetadata() const; - + // nested types ---------------------------------------------------- - + // accessors ------------------------------------------------------- - + // required fixed64 file_size = 1; inline bool has_file_size() const; inline void clear_file_size(); static const int kFileSizeFieldNumber = 1; inline ::google::protobuf::uint64 file_size() const; inline void set_file_size(::google::protobuf::uint64 value); - + // @@protoc_insertion_point(class_scope:xtreemfs.pbrpc.xtreemfs_internal_get_file_sizeResponse) private: + inline void set_has_file_size(); + inline void clear_has_file_size(); + ::google::protobuf::UnknownFieldSet _unknown_fields_; - mutable int _cached_size_; - + ::google::protobuf::uint64 file_size_; + + mutable int _cached_size_; + ::google::protobuf::uint32 _has_bits_[(1 + 31) / 32]; + friend void protobuf_AddDesc_xtreemfs_2fOSD_2eproto(); friend void protobuf_AssignDesc_xtreemfs_2fOSD_2eproto(); friend void protobuf_ShutdownFile_xtreemfs_2fOSD_2eproto(); - - ::google::protobuf::uint32 _has_bits_[(1 + 31) / 32]; - - // WHY DOES & HAVE LOWER PRECEDENCE THAN != !? - inline bool _has_bit(int index) const { - return (_has_bits_[index / 32] & (1u << (index % 32))) != 0; - } - inline void _set_bit(int index) { - _has_bits_[index / 32] |= (1u << (index % 32)); - } - inline void _clear_bit(int index) { - _has_bits_[index / 32] &= ~(1u << (index % 32)); - } - + void InitAsDefaultInstance(); static xtreemfs_internal_get_file_sizeResponse* default_instance_; }; @@ -3369,29 +3446,29 @@ class xtreemfs_internal_read_localRequest : public ::google::protobuf::Message { public: xtreemfs_internal_read_localRequest(); virtual ~xtreemfs_internal_read_localRequest(); - + xtreemfs_internal_read_localRequest(const xtreemfs_internal_read_localRequest& from); - + inline xtreemfs_internal_read_localRequest& operator=(const xtreemfs_internal_read_localRequest& from) { CopyFrom(from); return *this; } - + inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const { return _unknown_fields_; } - + inline ::google::protobuf::UnknownFieldSet* mutable_unknown_fields() { return &_unknown_fields_; } - + static const ::google::protobuf::Descriptor* descriptor(); static const xtreemfs_internal_read_localRequest& default_instance(); - + void Swap(xtreemfs_internal_read_localRequest* other); - + // implements Message ---------------------------------------------- - + xtreemfs_internal_read_localRequest* New() const; void CopyFrom(const ::google::protobuf::Message& from); void MergeFrom(const ::google::protobuf::Message& from); @@ -3399,7 +3476,7 @@ class xtreemfs_internal_read_localRequest : public ::google::protobuf::Message { void MergeFrom(const xtreemfs_internal_read_localRequest& from); void Clear(); bool IsInitialized() const; - + int ByteSize() const; bool MergePartialFromCodedStream( ::google::protobuf::io::CodedInputStream* input); @@ -3412,20 +3489,22 @@ class xtreemfs_internal_read_localRequest : public ::google::protobuf::Message { void SharedDtor(); void SetCachedSize(int size) const; public: - + ::google::protobuf::Metadata GetMetadata() const; - + // nested types ---------------------------------------------------- - + // accessors ------------------------------------------------------- - + // required .xtreemfs.pbrpc.FileCredentials file_credentials = 1; inline bool has_file_credentials() const; inline void clear_file_credentials(); static const int kFileCredentialsFieldNumber = 1; inline const ::xtreemfs::pbrpc::FileCredentials& file_credentials() const; inline ::xtreemfs::pbrpc::FileCredentials* mutable_file_credentials(); - + inline ::xtreemfs::pbrpc::FileCredentials* release_file_credentials(); + inline void set_allocated_file_credentials(::xtreemfs::pbrpc::FileCredentials* file_credentials); + // required string file_id = 2; inline bool has_file_id() const; inline void clear_file_id(); @@ -3435,42 +3514,44 @@ class xtreemfs_internal_read_localRequest : public ::google::protobuf::Message { inline void set_file_id(const char* value); inline void set_file_id(const char* value, size_t size); inline ::std::string* mutable_file_id(); - + inline ::std::string* release_file_id(); + inline void set_allocated_file_id(::std::string* file_id); + // required fixed64 object_number = 3; inline bool has_object_number() const; inline void clear_object_number(); static const int kObjectNumberFieldNumber = 3; inline ::google::protobuf::uint64 object_number() const; inline void set_object_number(::google::protobuf::uint64 value); - + // required fixed64 object_version = 4; inline bool has_object_version() const; inline void clear_object_version(); static const int kObjectVersionFieldNumber = 4; inline ::google::protobuf::uint64 object_version() const; inline void set_object_version(::google::protobuf::uint64 value); - + // required fixed32 offset = 5; inline bool has_offset() const; inline void clear_offset(); static const int kOffsetFieldNumber = 5; inline ::google::protobuf::uint32 offset() const; inline void set_offset(::google::protobuf::uint32 value); - + // required fixed32 length = 6; inline bool has_length() const; inline void clear_length(); static const int kLengthFieldNumber = 6; inline ::google::protobuf::uint32 length() const; inline void set_length(::google::protobuf::uint32 value); - + // required bool attach_object_list = 7; inline bool has_attach_object_list() const; inline void clear_attach_object_list(); static const int kAttachObjectListFieldNumber = 7; inline bool attach_object_list() const; inline void set_attach_object_list(bool value); - + // repeated .xtreemfs.pbrpc.ObjectList required_objects = 8; inline int required_objects_size() const; inline void clear_required_objects(); @@ -3482,38 +3563,42 @@ class xtreemfs_internal_read_localRequest : public ::google::protobuf::Message { required_objects() const; inline ::google::protobuf::RepeatedPtrField< ::xtreemfs::pbrpc::ObjectList >* mutable_required_objects(); - + // @@protoc_insertion_point(class_scope:xtreemfs.pbrpc.xtreemfs_internal_read_localRequest) private: + inline void set_has_file_credentials(); + inline void clear_has_file_credentials(); + inline void set_has_file_id(); + inline void clear_has_file_id(); + inline void set_has_object_number(); + inline void clear_has_object_number(); + inline void set_has_object_version(); + inline void clear_has_object_version(); + inline void set_has_offset(); + inline void clear_has_offset(); + inline void set_has_length(); + inline void clear_has_length(); + inline void set_has_attach_object_list(); + inline void clear_has_attach_object_list(); + ::google::protobuf::UnknownFieldSet _unknown_fields_; - mutable int _cached_size_; - + ::xtreemfs::pbrpc::FileCredentials* file_credentials_; ::std::string* file_id_; - static const ::std::string _default_file_id_; ::google::protobuf::uint64 object_number_; ::google::protobuf::uint64 object_version_; ::google::protobuf::uint32 offset_; ::google::protobuf::uint32 length_; - bool attach_object_list_; ::google::protobuf::RepeatedPtrField< ::xtreemfs::pbrpc::ObjectList > required_objects_; + bool attach_object_list_; + + mutable int _cached_size_; + ::google::protobuf::uint32 _has_bits_[(8 + 31) / 32]; + friend void protobuf_AddDesc_xtreemfs_2fOSD_2eproto(); friend void protobuf_AssignDesc_xtreemfs_2fOSD_2eproto(); friend void protobuf_ShutdownFile_xtreemfs_2fOSD_2eproto(); - - ::google::protobuf::uint32 _has_bits_[(8 + 31) / 32]; - - // WHY DOES & HAVE LOWER PRECEDENCE THAN != !? - inline bool _has_bit(int index) const { - return (_has_bits_[index / 32] & (1u << (index % 32))) != 0; - } - inline void _set_bit(int index) { - _has_bits_[index / 32] |= (1u << (index % 32)); - } - inline void _clear_bit(int index) { - _has_bits_[index / 32] &= ~(1u << (index % 32)); - } - + void InitAsDefaultInstance(); static xtreemfs_internal_read_localRequest* default_instance_; }; @@ -3523,29 +3608,29 @@ class xtreemfs_internal_get_object_setRequest : public ::google::protobuf::Messa public: xtreemfs_internal_get_object_setRequest(); virtual ~xtreemfs_internal_get_object_setRequest(); - + xtreemfs_internal_get_object_setRequest(const xtreemfs_internal_get_object_setRequest& from); - + inline xtreemfs_internal_get_object_setRequest& operator=(const xtreemfs_internal_get_object_setRequest& from) { CopyFrom(from); return *this; } - + inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const { return _unknown_fields_; } - + inline ::google::protobuf::UnknownFieldSet* mutable_unknown_fields() { return &_unknown_fields_; } - + static const ::google::protobuf::Descriptor* descriptor(); static const xtreemfs_internal_get_object_setRequest& default_instance(); - + void Swap(xtreemfs_internal_get_object_setRequest* other); - + // implements Message ---------------------------------------------- - + xtreemfs_internal_get_object_setRequest* New() const; void CopyFrom(const ::google::protobuf::Message& from); void MergeFrom(const ::google::protobuf::Message& from); @@ -3553,7 +3638,7 @@ class xtreemfs_internal_get_object_setRequest : public ::google::protobuf::Messa void MergeFrom(const xtreemfs_internal_get_object_setRequest& from); void Clear(); bool IsInitialized() const; - + int ByteSize() const; bool MergePartialFromCodedStream( ::google::protobuf::io::CodedInputStream* input); @@ -3566,20 +3651,22 @@ class xtreemfs_internal_get_object_setRequest : public ::google::protobuf::Messa void SharedDtor(); void SetCachedSize(int size) const; public: - + ::google::protobuf::Metadata GetMetadata() const; - + // nested types ---------------------------------------------------- - + // accessors ------------------------------------------------------- - + // required .xtreemfs.pbrpc.FileCredentials file_credentials = 1; inline bool has_file_credentials() const; inline void clear_file_credentials(); static const int kFileCredentialsFieldNumber = 1; inline const ::xtreemfs::pbrpc::FileCredentials& file_credentials() const; inline ::xtreemfs::pbrpc::FileCredentials* mutable_file_credentials(); - + inline ::xtreemfs::pbrpc::FileCredentials* release_file_credentials(); + inline void set_allocated_file_credentials(::xtreemfs::pbrpc::FileCredentials* file_credentials); + // required string file_id = 2; inline bool has_file_id() const; inline void clear_file_id(); @@ -3589,32 +3676,28 @@ class xtreemfs_internal_get_object_setRequest : public ::google::protobuf::Messa inline void set_file_id(const char* value); inline void set_file_id(const char* value, size_t size); inline ::std::string* mutable_file_id(); - + inline ::std::string* release_file_id(); + inline void set_allocated_file_id(::std::string* file_id); + // @@protoc_insertion_point(class_scope:xtreemfs.pbrpc.xtreemfs_internal_get_object_setRequest) private: + inline void set_has_file_credentials(); + inline void clear_has_file_credentials(); + inline void set_has_file_id(); + inline void clear_has_file_id(); + ::google::protobuf::UnknownFieldSet _unknown_fields_; - mutable int _cached_size_; - + ::xtreemfs::pbrpc::FileCredentials* file_credentials_; ::std::string* file_id_; - static const ::std::string _default_file_id_; + + mutable int _cached_size_; + ::google::protobuf::uint32 _has_bits_[(2 + 31) / 32]; + friend void protobuf_AddDesc_xtreemfs_2fOSD_2eproto(); friend void protobuf_AssignDesc_xtreemfs_2fOSD_2eproto(); friend void protobuf_ShutdownFile_xtreemfs_2fOSD_2eproto(); - - ::google::protobuf::uint32 _has_bits_[(2 + 31) / 32]; - - // WHY DOES & HAVE LOWER PRECEDENCE THAN != !? - inline bool _has_bit(int index) const { - return (_has_bits_[index / 32] & (1u << (index % 32))) != 0; - } - inline void _set_bit(int index) { - _has_bits_[index / 32] |= (1u << (index % 32)); - } - inline void _clear_bit(int index) { - _has_bits_[index / 32] &= ~(1u << (index % 32)); - } - + void InitAsDefaultInstance(); static xtreemfs_internal_get_object_setRequest* default_instance_; }; @@ -3624,29 +3707,29 @@ class xtreemfs_internal_get_fileid_listResponse : public ::google::protobuf::Mes public: xtreemfs_internal_get_fileid_listResponse(); virtual ~xtreemfs_internal_get_fileid_listResponse(); - + xtreemfs_internal_get_fileid_listResponse(const xtreemfs_internal_get_fileid_listResponse& from); - + inline xtreemfs_internal_get_fileid_listResponse& operator=(const xtreemfs_internal_get_fileid_listResponse& from) { CopyFrom(from); return *this; } - + inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const { return _unknown_fields_; } - + inline ::google::protobuf::UnknownFieldSet* mutable_unknown_fields() { return &_unknown_fields_; } - + static const ::google::protobuf::Descriptor* descriptor(); static const xtreemfs_internal_get_fileid_listResponse& default_instance(); - + void Swap(xtreemfs_internal_get_fileid_listResponse* other); - + // implements Message ---------------------------------------------- - + xtreemfs_internal_get_fileid_listResponse* New() const; void CopyFrom(const ::google::protobuf::Message& from); void MergeFrom(const ::google::protobuf::Message& from); @@ -3654,7 +3737,7 @@ class xtreemfs_internal_get_fileid_listResponse : public ::google::protobuf::Mes void MergeFrom(const xtreemfs_internal_get_fileid_listResponse& from); void Clear(); bool IsInitialized() const; - + int ByteSize() const; bool MergePartialFromCodedStream( ::google::protobuf::io::CodedInputStream* input); @@ -3667,13 +3750,13 @@ class xtreemfs_internal_get_fileid_listResponse : public ::google::protobuf::Mes void SharedDtor(); void SetCachedSize(int size) const; public: - + ::google::protobuf::Metadata GetMetadata() const; - + // nested types ---------------------------------------------------- - + // accessors ------------------------------------------------------- - + // repeated string file_ids = 1; inline int file_ids_size() const; inline void clear_file_ids(); @@ -3689,30 +3772,21 @@ class xtreemfs_internal_get_fileid_listResponse : public ::google::protobuf::Mes inline void add_file_ids(const char* value, size_t size); inline const ::google::protobuf::RepeatedPtrField< ::std::string>& file_ids() const; inline ::google::protobuf::RepeatedPtrField< ::std::string>* mutable_file_ids(); - + // @@protoc_insertion_point(class_scope:xtreemfs.pbrpc.xtreemfs_internal_get_fileid_listResponse) private: + ::google::protobuf::UnknownFieldSet _unknown_fields_; - mutable int _cached_size_; - + ::google::protobuf::RepeatedPtrField< ::std::string> file_ids_; + + mutable int _cached_size_; + ::google::protobuf::uint32 _has_bits_[(1 + 31) / 32]; + friend void protobuf_AddDesc_xtreemfs_2fOSD_2eproto(); friend void protobuf_AssignDesc_xtreemfs_2fOSD_2eproto(); friend void protobuf_ShutdownFile_xtreemfs_2fOSD_2eproto(); - - ::google::protobuf::uint32 _has_bits_[(1 + 31) / 32]; - - // WHY DOES & HAVE LOWER PRECEDENCE THAN != !? - inline bool _has_bit(int index) const { - return (_has_bits_[index / 32] & (1u << (index % 32))) != 0; - } - inline void _set_bit(int index) { - _has_bits_[index / 32] |= (1u << (index % 32)); - } - inline void _clear_bit(int index) { - _has_bits_[index / 32] &= ~(1u << (index % 32)); - } - + void InitAsDefaultInstance(); static xtreemfs_internal_get_fileid_listResponse* default_instance_; }; @@ -3722,29 +3796,29 @@ class lockRequest : public ::google::protobuf::Message { public: lockRequest(); virtual ~lockRequest(); - + lockRequest(const lockRequest& from); - + inline lockRequest& operator=(const lockRequest& from) { CopyFrom(from); return *this; } - + inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const { return _unknown_fields_; } - + inline ::google::protobuf::UnknownFieldSet* mutable_unknown_fields() { return &_unknown_fields_; } - + static const ::google::protobuf::Descriptor* descriptor(); static const lockRequest& default_instance(); - + void Swap(lockRequest* other); - + // implements Message ---------------------------------------------- - + lockRequest* New() const; void CopyFrom(const ::google::protobuf::Message& from); void MergeFrom(const ::google::protobuf::Message& from); @@ -3752,7 +3826,7 @@ class lockRequest : public ::google::protobuf::Message { void MergeFrom(const lockRequest& from); void Clear(); bool IsInitialized() const; - + int ByteSize() const; bool MergePartialFromCodedStream( ::google::protobuf::io::CodedInputStream* input); @@ -3765,51 +3839,50 @@ class lockRequest : public ::google::protobuf::Message { void SharedDtor(); void SetCachedSize(int size) const; public: - + ::google::protobuf::Metadata GetMetadata() const; - + // nested types ---------------------------------------------------- - + // accessors ------------------------------------------------------- - + // required .xtreemfs.pbrpc.FileCredentials file_credentials = 1; inline bool has_file_credentials() const; inline void clear_file_credentials(); static const int kFileCredentialsFieldNumber = 1; inline const ::xtreemfs::pbrpc::FileCredentials& file_credentials() const; inline ::xtreemfs::pbrpc::FileCredentials* mutable_file_credentials(); - + inline ::xtreemfs::pbrpc::FileCredentials* release_file_credentials(); + inline void set_allocated_file_credentials(::xtreemfs::pbrpc::FileCredentials* file_credentials); + // required .xtreemfs.pbrpc.Lock lock_request = 2; inline bool has_lock_request() const; inline void clear_lock_request(); static const int kLockRequestFieldNumber = 2; inline const ::xtreemfs::pbrpc::Lock& lock_request() const; inline ::xtreemfs::pbrpc::Lock* mutable_lock_request(); - + inline ::xtreemfs::pbrpc::Lock* release_lock_request(); + inline void set_allocated_lock_request(::xtreemfs::pbrpc::Lock* lock_request); + // @@protoc_insertion_point(class_scope:xtreemfs.pbrpc.lockRequest) private: + inline void set_has_file_credentials(); + inline void clear_has_file_credentials(); + inline void set_has_lock_request(); + inline void clear_has_lock_request(); + ::google::protobuf::UnknownFieldSet _unknown_fields_; - mutable int _cached_size_; - + ::xtreemfs::pbrpc::FileCredentials* file_credentials_; ::xtreemfs::pbrpc::Lock* lock_request_; + + mutable int _cached_size_; + ::google::protobuf::uint32 _has_bits_[(2 + 31) / 32]; + friend void protobuf_AddDesc_xtreemfs_2fOSD_2eproto(); friend void protobuf_AssignDesc_xtreemfs_2fOSD_2eproto(); friend void protobuf_ShutdownFile_xtreemfs_2fOSD_2eproto(); - - ::google::protobuf::uint32 _has_bits_[(2 + 31) / 32]; - - // WHY DOES & HAVE LOWER PRECEDENCE THAN != !? - inline bool _has_bit(int index) const { - return (_has_bits_[index / 32] & (1u << (index % 32))) != 0; - } - inline void _set_bit(int index) { - _has_bits_[index / 32] |= (1u << (index % 32)); - } - inline void _clear_bit(int index) { - _has_bits_[index / 32] &= ~(1u << (index % 32)); - } - + void InitAsDefaultInstance(); static lockRequest* default_instance_; }; @@ -3819,29 +3892,29 @@ class xtreemfs_pingMesssage : public ::google::protobuf::Message { public: xtreemfs_pingMesssage(); virtual ~xtreemfs_pingMesssage(); - + xtreemfs_pingMesssage(const xtreemfs_pingMesssage& from); - + inline xtreemfs_pingMesssage& operator=(const xtreemfs_pingMesssage& from) { CopyFrom(from); return *this; } - + inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const { return _unknown_fields_; } - + inline ::google::protobuf::UnknownFieldSet* mutable_unknown_fields() { return &_unknown_fields_; } - + static const ::google::protobuf::Descriptor* descriptor(); static const xtreemfs_pingMesssage& default_instance(); - + void Swap(xtreemfs_pingMesssage* other); - + // implements Message ---------------------------------------------- - + xtreemfs_pingMesssage* New() const; void CopyFrom(const ::google::protobuf::Message& from); void MergeFrom(const ::google::protobuf::Message& from); @@ -3849,7 +3922,7 @@ class xtreemfs_pingMesssage : public ::google::protobuf::Message { void MergeFrom(const xtreemfs_pingMesssage& from); void Clear(); bool IsInitialized() const; - + int ByteSize() const; bool MergePartialFromCodedStream( ::google::protobuf::io::CodedInputStream* input); @@ -3862,51 +3935,48 @@ class xtreemfs_pingMesssage : public ::google::protobuf::Message { void SharedDtor(); void SetCachedSize(int size) const; public: - + ::google::protobuf::Metadata GetMetadata() const; - + // nested types ---------------------------------------------------- - + // accessors ------------------------------------------------------- - + // required .xtreemfs.pbrpc.VivaldiCoordinates coordinates = 1; inline bool has_coordinates() const; inline void clear_coordinates(); static const int kCoordinatesFieldNumber = 1; inline const ::xtreemfs::pbrpc::VivaldiCoordinates& coordinates() const; inline ::xtreemfs::pbrpc::VivaldiCoordinates* mutable_coordinates(); - + inline ::xtreemfs::pbrpc::VivaldiCoordinates* release_coordinates(); + inline void set_allocated_coordinates(::xtreemfs::pbrpc::VivaldiCoordinates* coordinates); + // required bool request_response = 2; inline bool has_request_response() const; inline void clear_request_response(); static const int kRequestResponseFieldNumber = 2; inline bool request_response() const; inline void set_request_response(bool value); - + // @@protoc_insertion_point(class_scope:xtreemfs.pbrpc.xtreemfs_pingMesssage) private: + inline void set_has_coordinates(); + inline void clear_has_coordinates(); + inline void set_has_request_response(); + inline void clear_has_request_response(); + ::google::protobuf::UnknownFieldSet _unknown_fields_; - mutable int _cached_size_; - + ::xtreemfs::pbrpc::VivaldiCoordinates* coordinates_; bool request_response_; + + mutable int _cached_size_; + ::google::protobuf::uint32 _has_bits_[(2 + 31) / 32]; + friend void protobuf_AddDesc_xtreemfs_2fOSD_2eproto(); friend void protobuf_AssignDesc_xtreemfs_2fOSD_2eproto(); friend void protobuf_ShutdownFile_xtreemfs_2fOSD_2eproto(); - - ::google::protobuf::uint32 _has_bits_[(2 + 31) / 32]; - - // WHY DOES & HAVE LOWER PRECEDENCE THAN != !? - inline bool _has_bit(int index) const { - return (_has_bits_[index / 32] & (1u << (index % 32))) != 0; - } - inline void _set_bit(int index) { - _has_bits_[index / 32] |= (1u << (index % 32)); - } - inline void _clear_bit(int index) { - _has_bits_[index / 32] &= ~(1u << (index % 32)); - } - + void InitAsDefaultInstance(); static xtreemfs_pingMesssage* default_instance_; }; @@ -3916,29 +3986,29 @@ class xtreemfs_rwr_auth_stateRequest : public ::google::protobuf::Message { public: xtreemfs_rwr_auth_stateRequest(); virtual ~xtreemfs_rwr_auth_stateRequest(); - + xtreemfs_rwr_auth_stateRequest(const xtreemfs_rwr_auth_stateRequest& from); - + inline xtreemfs_rwr_auth_stateRequest& operator=(const xtreemfs_rwr_auth_stateRequest& from) { CopyFrom(from); return *this; } - + inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const { return _unknown_fields_; } - + inline ::google::protobuf::UnknownFieldSet* mutable_unknown_fields() { return &_unknown_fields_; } - + static const ::google::protobuf::Descriptor* descriptor(); static const xtreemfs_rwr_auth_stateRequest& default_instance(); - + void Swap(xtreemfs_rwr_auth_stateRequest* other); - + // implements Message ---------------------------------------------- - + xtreemfs_rwr_auth_stateRequest* New() const; void CopyFrom(const ::google::protobuf::Message& from); void MergeFrom(const ::google::protobuf::Message& from); @@ -3946,7 +4016,7 @@ class xtreemfs_rwr_auth_stateRequest : public ::google::protobuf::Message { void MergeFrom(const xtreemfs_rwr_auth_stateRequest& from); void Clear(); bool IsInitialized() const; - + int ByteSize() const; bool MergePartialFromCodedStream( ::google::protobuf::io::CodedInputStream* input); @@ -3959,20 +4029,22 @@ class xtreemfs_rwr_auth_stateRequest : public ::google::protobuf::Message { void SharedDtor(); void SetCachedSize(int size) const; public: - + ::google::protobuf::Metadata GetMetadata() const; - + // nested types ---------------------------------------------------- - + // accessors ------------------------------------------------------- - + // required .xtreemfs.pbrpc.FileCredentials file_credentials = 1; inline bool has_file_credentials() const; inline void clear_file_credentials(); static const int kFileCredentialsFieldNumber = 1; inline const ::xtreemfs::pbrpc::FileCredentials& file_credentials() const; inline ::xtreemfs::pbrpc::FileCredentials* mutable_file_credentials(); - + inline ::xtreemfs::pbrpc::FileCredentials* release_file_credentials(); + inline void set_allocated_file_credentials(::xtreemfs::pbrpc::FileCredentials* file_credentials); + // required string file_id = 2; inline bool has_file_id() const; inline void clear_file_id(); @@ -3982,40 +4054,40 @@ class xtreemfs_rwr_auth_stateRequest : public ::google::protobuf::Message { inline void set_file_id(const char* value); inline void set_file_id(const char* value, size_t size); inline ::std::string* mutable_file_id(); - + inline ::std::string* release_file_id(); + inline void set_allocated_file_id(::std::string* file_id); + // required .xtreemfs.pbrpc.AuthoritativeReplicaState state = 3; inline bool has_state() const; inline void clear_state(); static const int kStateFieldNumber = 3; inline const ::xtreemfs::pbrpc::AuthoritativeReplicaState& state() const; inline ::xtreemfs::pbrpc::AuthoritativeReplicaState* mutable_state(); - + inline ::xtreemfs::pbrpc::AuthoritativeReplicaState* release_state(); + inline void set_allocated_state(::xtreemfs::pbrpc::AuthoritativeReplicaState* state); + // @@protoc_insertion_point(class_scope:xtreemfs.pbrpc.xtreemfs_rwr_auth_stateRequest) private: + inline void set_has_file_credentials(); + inline void clear_has_file_credentials(); + inline void set_has_file_id(); + inline void clear_has_file_id(); + inline void set_has_state(); + inline void clear_has_state(); + ::google::protobuf::UnknownFieldSet _unknown_fields_; - mutable int _cached_size_; - + ::xtreemfs::pbrpc::FileCredentials* file_credentials_; ::std::string* file_id_; - static const ::std::string _default_file_id_; ::xtreemfs::pbrpc::AuthoritativeReplicaState* state_; + + mutable int _cached_size_; + ::google::protobuf::uint32 _has_bits_[(3 + 31) / 32]; + friend void protobuf_AddDesc_xtreemfs_2fOSD_2eproto(); friend void protobuf_AssignDesc_xtreemfs_2fOSD_2eproto(); friend void protobuf_ShutdownFile_xtreemfs_2fOSD_2eproto(); - - ::google::protobuf::uint32 _has_bits_[(3 + 31) / 32]; - - // WHY DOES & HAVE LOWER PRECEDENCE THAN != !? - inline bool _has_bit(int index) const { - return (_has_bits_[index / 32] & (1u << (index % 32))) != 0; - } - inline void _set_bit(int index) { - _has_bits_[index / 32] |= (1u << (index % 32)); - } - inline void _clear_bit(int index) { - _has_bits_[index / 32] &= ~(1u << (index % 32)); - } - + void InitAsDefaultInstance(); static xtreemfs_rwr_auth_stateRequest* default_instance_; }; @@ -4025,29 +4097,29 @@ class xtreemfs_rwr_reset_completeRequest : public ::google::protobuf::Message { public: xtreemfs_rwr_reset_completeRequest(); virtual ~xtreemfs_rwr_reset_completeRequest(); - + xtreemfs_rwr_reset_completeRequest(const xtreemfs_rwr_reset_completeRequest& from); - + inline xtreemfs_rwr_reset_completeRequest& operator=(const xtreemfs_rwr_reset_completeRequest& from) { CopyFrom(from); return *this; } - + inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const { return _unknown_fields_; } - + inline ::google::protobuf::UnknownFieldSet* mutable_unknown_fields() { return &_unknown_fields_; } - + static const ::google::protobuf::Descriptor* descriptor(); static const xtreemfs_rwr_reset_completeRequest& default_instance(); - + void Swap(xtreemfs_rwr_reset_completeRequest* other); - + // implements Message ---------------------------------------------- - + xtreemfs_rwr_reset_completeRequest* New() const; void CopyFrom(const ::google::protobuf::Message& from); void MergeFrom(const ::google::protobuf::Message& from); @@ -4055,7 +4127,7 @@ class xtreemfs_rwr_reset_completeRequest : public ::google::protobuf::Message { void MergeFrom(const xtreemfs_rwr_reset_completeRequest& from); void Clear(); bool IsInitialized() const; - + int ByteSize() const; bool MergePartialFromCodedStream( ::google::protobuf::io::CodedInputStream* input); @@ -4068,20 +4140,22 @@ class xtreemfs_rwr_reset_completeRequest : public ::google::protobuf::Message { void SharedDtor(); void SetCachedSize(int size) const; public: - + ::google::protobuf::Metadata GetMetadata() const; - + // nested types ---------------------------------------------------- - + // accessors ------------------------------------------------------- - + // required .xtreemfs.pbrpc.FileCredentials file_credentials = 1; inline bool has_file_credentials() const; inline void clear_file_credentials(); static const int kFileCredentialsFieldNumber = 1; inline const ::xtreemfs::pbrpc::FileCredentials& file_credentials() const; inline ::xtreemfs::pbrpc::FileCredentials* mutable_file_credentials(); - + inline ::xtreemfs::pbrpc::FileCredentials* release_file_credentials(); + inline void set_allocated_file_credentials(::xtreemfs::pbrpc::FileCredentials* file_credentials); + // required string file_id = 2; inline bool has_file_id() const; inline void clear_file_id(); @@ -4091,352 +4165,43 @@ class xtreemfs_rwr_reset_completeRequest : public ::google::protobuf::Message { inline void set_file_id(const char* value); inline void set_file_id(const char* value, size_t size); inline ::std::string* mutable_file_id(); - + inline ::std::string* release_file_id(); + inline void set_allocated_file_id(::std::string* file_id); + // required fixed32 primary_epoch = 3; inline bool has_primary_epoch() const; inline void clear_primary_epoch(); static const int kPrimaryEpochFieldNumber = 3; inline ::google::protobuf::uint32 primary_epoch() const; inline void set_primary_epoch(::google::protobuf::uint32 value); - + // @@protoc_insertion_point(class_scope:xtreemfs.pbrpc.xtreemfs_rwr_reset_completeRequest) private: + inline void set_has_file_credentials(); + inline void clear_has_file_credentials(); + inline void set_has_file_id(); + inline void clear_has_file_id(); + inline void set_has_primary_epoch(); + inline void clear_has_primary_epoch(); + ::google::protobuf::UnknownFieldSet _unknown_fields_; - mutable int _cached_size_; - + ::xtreemfs::pbrpc::FileCredentials* file_credentials_; ::std::string* file_id_; - static const ::std::string _default_file_id_; ::google::protobuf::uint32 primary_epoch_; + + mutable int _cached_size_; + ::google::protobuf::uint32 _has_bits_[(3 + 31) / 32]; + friend void protobuf_AddDesc_xtreemfs_2fOSD_2eproto(); friend void protobuf_AssignDesc_xtreemfs_2fOSD_2eproto(); friend void protobuf_ShutdownFile_xtreemfs_2fOSD_2eproto(); - - ::google::protobuf::uint32 _has_bits_[(3 + 31) / 32]; - - // WHY DOES & HAVE LOWER PRECEDENCE THAN != !? - inline bool _has_bit(int index) const { - return (_has_bits_[index / 32] & (1u << (index % 32))) != 0; - } - inline void _set_bit(int index) { - _has_bits_[index / 32] |= (1u << (index % 32)); - } - inline void _clear_bit(int index) { - _has_bits_[index / 32] &= ~(1u << (index % 32)); - } - + void InitAsDefaultInstance(); static xtreemfs_rwr_reset_completeRequest* default_instance_; }; // =================================================================== -class OSDService_Stub; - -class OSDService : public ::google::protobuf::Service { - protected: - // This class should be treated as an abstract interface. - inline OSDService() {}; - public: - virtual ~OSDService(); - - typedef OSDService_Stub Stub; - - static const ::google::protobuf::ServiceDescriptor* descriptor(); - - virtual void read(::google::protobuf::RpcController* controller, - const ::xtreemfs::pbrpc::readRequest* request, - ::xtreemfs::pbrpc::ObjectData* response, - ::google::protobuf::Closure* done); - virtual void truncate(::google::protobuf::RpcController* controller, - const ::xtreemfs::pbrpc::truncateRequest* request, - ::xtreemfs::pbrpc::OSDWriteResponse* response, - ::google::protobuf::Closure* done); - virtual void unlink(::google::protobuf::RpcController* controller, - const ::xtreemfs::pbrpc::unlink_osd_Request* request, - ::xtreemfs::pbrpc::emptyResponse* response, - ::google::protobuf::Closure* done); - virtual void write(::google::protobuf::RpcController* controller, - const ::xtreemfs::pbrpc::writeRequest* request, - ::xtreemfs::pbrpc::OSDWriteResponse* response, - ::google::protobuf::Closure* done); - virtual void xtreemfs_broadcast_gmax(::google::protobuf::RpcController* controller, - const ::xtreemfs::pbrpc::xtreemfs_broadcast_gmaxRequest* request, - ::xtreemfs::pbrpc::emptyResponse* response, - ::google::protobuf::Closure* done); - virtual void xtreemfs_check_object(::google::protobuf::RpcController* controller, - const ::xtreemfs::pbrpc::xtreemfs_check_objectRequest* request, - ::xtreemfs::pbrpc::ObjectData* response, - ::google::protobuf::Closure* done); - virtual void xtreemfs_cleanup_get_results(::google::protobuf::RpcController* controller, - const ::xtreemfs::pbrpc::emptyRequest* request, - ::xtreemfs::pbrpc::xtreemfs_cleanup_get_resultsResponse* response, - ::google::protobuf::Closure* done); - virtual void xtreemfs_cleanup_is_running(::google::protobuf::RpcController* controller, - const ::xtreemfs::pbrpc::emptyRequest* request, - ::xtreemfs::pbrpc::xtreemfs_cleanup_is_runningResponse* response, - ::google::protobuf::Closure* done); - virtual void xtreemfs_cleanup_start(::google::protobuf::RpcController* controller, - const ::xtreemfs::pbrpc::xtreemfs_cleanup_startRequest* request, - ::xtreemfs::pbrpc::emptyResponse* response, - ::google::protobuf::Closure* done); - virtual void xtreemfs_cleanup_status(::google::protobuf::RpcController* controller, - const ::xtreemfs::pbrpc::emptyRequest* request, - ::xtreemfs::pbrpc::xtreemfs_cleanup_statusResponse* response, - ::google::protobuf::Closure* done); - virtual void xtreemfs_cleanup_stop(::google::protobuf::RpcController* controller, - const ::xtreemfs::pbrpc::emptyRequest* request, - ::xtreemfs::pbrpc::emptyResponse* response, - ::google::protobuf::Closure* done); - virtual void xtreemfs_cleanup_versions_start(::google::protobuf::RpcController* controller, - const ::xtreemfs::pbrpc::emptyRequest* request, - ::xtreemfs::pbrpc::emptyResponse* response, - ::google::protobuf::Closure* done); - virtual void xtreemfs_rwr_fetch(::google::protobuf::RpcController* controller, - const ::xtreemfs::pbrpc::xtreemfs_rwr_fetchRequest* request, - ::xtreemfs::pbrpc::ObjectData* response, - ::google::protobuf::Closure* done); - virtual void xtreemfs_rwr_flease_msg(::google::protobuf::RpcController* controller, - const ::xtreemfs::pbrpc::xtreemfs_rwr_flease_msgRequest* request, - ::xtreemfs::pbrpc::emptyResponse* response, - ::google::protobuf::Closure* done); - virtual void xtreemfs_rwr_notify(::google::protobuf::RpcController* controller, - const ::xtreemfs::pbrpc::FileCredentials* request, - ::xtreemfs::pbrpc::emptyResponse* response, - ::google::protobuf::Closure* done); - virtual void xtreemfs_rwr_set_primary_epoch(::google::protobuf::RpcController* controller, - const ::xtreemfs::pbrpc::xtreemfs_rwr_set_primary_epochRequest* request, - ::xtreemfs::pbrpc::ObjectData* response, - ::google::protobuf::Closure* done); - virtual void xtreemfs_rwr_status(::google::protobuf::RpcController* controller, - const ::xtreemfs::pbrpc::xtreemfs_rwr_statusRequest* request, - ::xtreemfs::pbrpc::ReplicaStatus* response, - ::google::protobuf::Closure* done); - virtual void xtreemfs_rwr_truncate(::google::protobuf::RpcController* controller, - const ::xtreemfs::pbrpc::xtreemfs_rwr_truncateRequest* request, - ::xtreemfs::pbrpc::emptyResponse* response, - ::google::protobuf::Closure* done); - virtual void xtreemfs_rwr_update(::google::protobuf::RpcController* controller, - const ::xtreemfs::pbrpc::xtreemfs_rwr_updateRequest* request, - ::xtreemfs::pbrpc::emptyResponse* response, - ::google::protobuf::Closure* done); - virtual void xtreemfs_rwr_auth_state(::google::protobuf::RpcController* controller, - const ::xtreemfs::pbrpc::xtreemfs_rwr_auth_stateRequest* request, - ::xtreemfs::pbrpc::emptyResponse* response, - ::google::protobuf::Closure* done); - virtual void xtreemfs_rwr_reset_complete(::google::protobuf::RpcController* controller, - const ::xtreemfs::pbrpc::xtreemfs_rwr_reset_completeRequest* request, - ::xtreemfs::pbrpc::emptyResponse* response, - ::google::protobuf::Closure* done); - virtual void xtreemfs_internal_get_gmax(::google::protobuf::RpcController* controller, - const ::xtreemfs::pbrpc::xtreemfs_internal_get_gmaxRequest* request, - ::xtreemfs::pbrpc::InternalGmax* response, - ::google::protobuf::Closure* done); - virtual void xtreemfs_internal_truncate(::google::protobuf::RpcController* controller, - const ::xtreemfs::pbrpc::truncateRequest* request, - ::xtreemfs::pbrpc::OSDWriteResponse* response, - ::google::protobuf::Closure* done); - virtual void xtreemfs_internal_get_file_size(::google::protobuf::RpcController* controller, - const ::xtreemfs::pbrpc::xtreemfs_internal_get_file_sizeRequest* request, - ::xtreemfs::pbrpc::xtreemfs_internal_get_file_sizeResponse* response, - ::google::protobuf::Closure* done); - virtual void xtreemfs_internal_read_local(::google::protobuf::RpcController* controller, - const ::xtreemfs::pbrpc::xtreemfs_internal_read_localRequest* request, - ::xtreemfs::pbrpc::InternalReadLocalResponse* response, - ::google::protobuf::Closure* done); - virtual void xtreemfs_internal_get_object_set(::google::protobuf::RpcController* controller, - const ::xtreemfs::pbrpc::xtreemfs_internal_get_object_setRequest* request, - ::xtreemfs::pbrpc::ObjectList* response, - ::google::protobuf::Closure* done); - virtual void xtreemfs_internal_get_fileid_list(::google::protobuf::RpcController* controller, - const ::xtreemfs::pbrpc::emptyRequest* request, - ::xtreemfs::pbrpc::xtreemfs_internal_get_fileid_listResponse* response, - ::google::protobuf::Closure* done); - virtual void xtreemfs_lock_acquire(::google::protobuf::RpcController* controller, - const ::xtreemfs::pbrpc::lockRequest* request, - ::xtreemfs::pbrpc::Lock* response, - ::google::protobuf::Closure* done); - virtual void xtreemfs_lock_check(::google::protobuf::RpcController* controller, - const ::xtreemfs::pbrpc::lockRequest* request, - ::xtreemfs::pbrpc::Lock* response, - ::google::protobuf::Closure* done); - virtual void xtreemfs_lock_release(::google::protobuf::RpcController* controller, - const ::xtreemfs::pbrpc::lockRequest* request, - ::xtreemfs::pbrpc::emptyResponse* response, - ::google::protobuf::Closure* done); - virtual void xtreemfs_ping(::google::protobuf::RpcController* controller, - const ::xtreemfs::pbrpc::xtreemfs_pingMesssage* request, - ::xtreemfs::pbrpc::xtreemfs_pingMesssage* response, - ::google::protobuf::Closure* done); - virtual void xtreemfs_shutdown(::google::protobuf::RpcController* controller, - const ::xtreemfs::pbrpc::emptyRequest* request, - ::xtreemfs::pbrpc::emptyResponse* response, - ::google::protobuf::Closure* done); - - // implements Service ---------------------------------------------- - - const ::google::protobuf::ServiceDescriptor* GetDescriptor(); - void CallMethod(const ::google::protobuf::MethodDescriptor* method, - ::google::protobuf::RpcController* controller, - const ::google::protobuf::Message* request, - ::google::protobuf::Message* response, - ::google::protobuf::Closure* done); - const ::google::protobuf::Message& GetRequestPrototype( - const ::google::protobuf::MethodDescriptor* method) const; - const ::google::protobuf::Message& GetResponsePrototype( - const ::google::protobuf::MethodDescriptor* method) const; - - private: - GOOGLE_DISALLOW_EVIL_CONSTRUCTORS(OSDService); -}; - -class OSDService_Stub : public OSDService { - public: - OSDService_Stub(::google::protobuf::RpcChannel* channel); - OSDService_Stub(::google::protobuf::RpcChannel* channel, - ::google::protobuf::Service::ChannelOwnership ownership); - ~OSDService_Stub(); - - inline ::google::protobuf::RpcChannel* channel() { return channel_; } - - // implements OSDService ------------------------------------------ - - void read(::google::protobuf::RpcController* controller, - const ::xtreemfs::pbrpc::readRequest* request, - ::xtreemfs::pbrpc::ObjectData* response, - ::google::protobuf::Closure* done); - void truncate(::google::protobuf::RpcController* controller, - const ::xtreemfs::pbrpc::truncateRequest* request, - ::xtreemfs::pbrpc::OSDWriteResponse* response, - ::google::protobuf::Closure* done); - void unlink(::google::protobuf::RpcController* controller, - const ::xtreemfs::pbrpc::unlink_osd_Request* request, - ::xtreemfs::pbrpc::emptyResponse* response, - ::google::protobuf::Closure* done); - void write(::google::protobuf::RpcController* controller, - const ::xtreemfs::pbrpc::writeRequest* request, - ::xtreemfs::pbrpc::OSDWriteResponse* response, - ::google::protobuf::Closure* done); - void xtreemfs_broadcast_gmax(::google::protobuf::RpcController* controller, - const ::xtreemfs::pbrpc::xtreemfs_broadcast_gmaxRequest* request, - ::xtreemfs::pbrpc::emptyResponse* response, - ::google::protobuf::Closure* done); - void xtreemfs_check_object(::google::protobuf::RpcController* controller, - const ::xtreemfs::pbrpc::xtreemfs_check_objectRequest* request, - ::xtreemfs::pbrpc::ObjectData* response, - ::google::protobuf::Closure* done); - void xtreemfs_cleanup_get_results(::google::protobuf::RpcController* controller, - const ::xtreemfs::pbrpc::emptyRequest* request, - ::xtreemfs::pbrpc::xtreemfs_cleanup_get_resultsResponse* response, - ::google::protobuf::Closure* done); - void xtreemfs_cleanup_is_running(::google::protobuf::RpcController* controller, - const ::xtreemfs::pbrpc::emptyRequest* request, - ::xtreemfs::pbrpc::xtreemfs_cleanup_is_runningResponse* response, - ::google::protobuf::Closure* done); - void xtreemfs_cleanup_start(::google::protobuf::RpcController* controller, - const ::xtreemfs::pbrpc::xtreemfs_cleanup_startRequest* request, - ::xtreemfs::pbrpc::emptyResponse* response, - ::google::protobuf::Closure* done); - void xtreemfs_cleanup_status(::google::protobuf::RpcController* controller, - const ::xtreemfs::pbrpc::emptyRequest* request, - ::xtreemfs::pbrpc::xtreemfs_cleanup_statusResponse* response, - ::google::protobuf::Closure* done); - void xtreemfs_cleanup_stop(::google::protobuf::RpcController* controller, - const ::xtreemfs::pbrpc::emptyRequest* request, - ::xtreemfs::pbrpc::emptyResponse* response, - ::google::protobuf::Closure* done); - void xtreemfs_cleanup_versions_start(::google::protobuf::RpcController* controller, - const ::xtreemfs::pbrpc::emptyRequest* request, - ::xtreemfs::pbrpc::emptyResponse* response, - ::google::protobuf::Closure* done); - void xtreemfs_rwr_fetch(::google::protobuf::RpcController* controller, - const ::xtreemfs::pbrpc::xtreemfs_rwr_fetchRequest* request, - ::xtreemfs::pbrpc::ObjectData* response, - ::google::protobuf::Closure* done); - void xtreemfs_rwr_flease_msg(::google::protobuf::RpcController* controller, - const ::xtreemfs::pbrpc::xtreemfs_rwr_flease_msgRequest* request, - ::xtreemfs::pbrpc::emptyResponse* response, - ::google::protobuf::Closure* done); - void xtreemfs_rwr_notify(::google::protobuf::RpcController* controller, - const ::xtreemfs::pbrpc::FileCredentials* request, - ::xtreemfs::pbrpc::emptyResponse* response, - ::google::protobuf::Closure* done); - void xtreemfs_rwr_set_primary_epoch(::google::protobuf::RpcController* controller, - const ::xtreemfs::pbrpc::xtreemfs_rwr_set_primary_epochRequest* request, - ::xtreemfs::pbrpc::ObjectData* response, - ::google::protobuf::Closure* done); - void xtreemfs_rwr_status(::google::protobuf::RpcController* controller, - const ::xtreemfs::pbrpc::xtreemfs_rwr_statusRequest* request, - ::xtreemfs::pbrpc::ReplicaStatus* response, - ::google::protobuf::Closure* done); - void xtreemfs_rwr_truncate(::google::protobuf::RpcController* controller, - const ::xtreemfs::pbrpc::xtreemfs_rwr_truncateRequest* request, - ::xtreemfs::pbrpc::emptyResponse* response, - ::google::protobuf::Closure* done); - void xtreemfs_rwr_update(::google::protobuf::RpcController* controller, - const ::xtreemfs::pbrpc::xtreemfs_rwr_updateRequest* request, - ::xtreemfs::pbrpc::emptyResponse* response, - ::google::protobuf::Closure* done); - void xtreemfs_rwr_auth_state(::google::protobuf::RpcController* controller, - const ::xtreemfs::pbrpc::xtreemfs_rwr_auth_stateRequest* request, - ::xtreemfs::pbrpc::emptyResponse* response, - ::google::protobuf::Closure* done); - void xtreemfs_rwr_reset_complete(::google::protobuf::RpcController* controller, - const ::xtreemfs::pbrpc::xtreemfs_rwr_reset_completeRequest* request, - ::xtreemfs::pbrpc::emptyResponse* response, - ::google::protobuf::Closure* done); - void xtreemfs_internal_get_gmax(::google::protobuf::RpcController* controller, - const ::xtreemfs::pbrpc::xtreemfs_internal_get_gmaxRequest* request, - ::xtreemfs::pbrpc::InternalGmax* response, - ::google::protobuf::Closure* done); - void xtreemfs_internal_truncate(::google::protobuf::RpcController* controller, - const ::xtreemfs::pbrpc::truncateRequest* request, - ::xtreemfs::pbrpc::OSDWriteResponse* response, - ::google::protobuf::Closure* done); - void xtreemfs_internal_get_file_size(::google::protobuf::RpcController* controller, - const ::xtreemfs::pbrpc::xtreemfs_internal_get_file_sizeRequest* request, - ::xtreemfs::pbrpc::xtreemfs_internal_get_file_sizeResponse* response, - ::google::protobuf::Closure* done); - void xtreemfs_internal_read_local(::google::protobuf::RpcController* controller, - const ::xtreemfs::pbrpc::xtreemfs_internal_read_localRequest* request, - ::xtreemfs::pbrpc::InternalReadLocalResponse* response, - ::google::protobuf::Closure* done); - void xtreemfs_internal_get_object_set(::google::protobuf::RpcController* controller, - const ::xtreemfs::pbrpc::xtreemfs_internal_get_object_setRequest* request, - ::xtreemfs::pbrpc::ObjectList* response, - ::google::protobuf::Closure* done); - void xtreemfs_internal_get_fileid_list(::google::protobuf::RpcController* controller, - const ::xtreemfs::pbrpc::emptyRequest* request, - ::xtreemfs::pbrpc::xtreemfs_internal_get_fileid_listResponse* response, - ::google::protobuf::Closure* done); - void xtreemfs_lock_acquire(::google::protobuf::RpcController* controller, - const ::xtreemfs::pbrpc::lockRequest* request, - ::xtreemfs::pbrpc::Lock* response, - ::google::protobuf::Closure* done); - void xtreemfs_lock_check(::google::protobuf::RpcController* controller, - const ::xtreemfs::pbrpc::lockRequest* request, - ::xtreemfs::pbrpc::Lock* response, - ::google::protobuf::Closure* done); - void xtreemfs_lock_release(::google::protobuf::RpcController* controller, - const ::xtreemfs::pbrpc::lockRequest* request, - ::xtreemfs::pbrpc::emptyResponse* response, - ::google::protobuf::Closure* done); - void xtreemfs_ping(::google::protobuf::RpcController* controller, - const ::xtreemfs::pbrpc::xtreemfs_pingMesssage* request, - ::xtreemfs::pbrpc::xtreemfs_pingMesssage* response, - ::google::protobuf::Closure* done); - void xtreemfs_shutdown(::google::protobuf::RpcController* controller, - const ::xtreemfs::pbrpc::emptyRequest* request, - ::xtreemfs::pbrpc::emptyResponse* response, - ::google::protobuf::Closure* done); - private: - ::google::protobuf::RpcChannel* channel_; - bool owns_channel_; - GOOGLE_DISALLOW_EVIL_CONSTRUCTORS(OSDService_Stub); -}; - - -// =================================================================== - // =================================================================== @@ -4444,49 +4209,67 @@ class OSDService_Stub : public OSDService { // required fixed64 epoch = 1; inline bool InternalGmax::has_epoch() const { - return _has_bit(0); + return (_has_bits_[0] & 0x00000001u) != 0; +} +inline void InternalGmax::set_has_epoch() { + _has_bits_[0] |= 0x00000001u; +} +inline void InternalGmax::clear_has_epoch() { + _has_bits_[0] &= ~0x00000001u; } inline void InternalGmax::clear_epoch() { epoch_ = GOOGLE_ULONGLONG(0); - _clear_bit(0); + clear_has_epoch(); } inline ::google::protobuf::uint64 InternalGmax::epoch() const { return epoch_; } inline void InternalGmax::set_epoch(::google::protobuf::uint64 value) { - _set_bit(0); + set_has_epoch(); epoch_ = value; } // required fixed64 file_size = 2; inline bool InternalGmax::has_file_size() const { - return _has_bit(1); + return (_has_bits_[0] & 0x00000002u) != 0; +} +inline void InternalGmax::set_has_file_size() { + _has_bits_[0] |= 0x00000002u; +} +inline void InternalGmax::clear_has_file_size() { + _has_bits_[0] &= ~0x00000002u; } inline void InternalGmax::clear_file_size() { file_size_ = GOOGLE_ULONGLONG(0); - _clear_bit(1); + clear_has_file_size(); } inline ::google::protobuf::uint64 InternalGmax::file_size() const { return file_size_; } inline void InternalGmax::set_file_size(::google::protobuf::uint64 value) { - _set_bit(1); + set_has_file_size(); file_size_ = value; } // required fixed64 last_object_id = 3; inline bool InternalGmax::has_last_object_id() const { - return _has_bit(2); + return (_has_bits_[0] & 0x00000004u) != 0; +} +inline void InternalGmax::set_has_last_object_id() { + _has_bits_[0] |= 0x00000004u; +} +inline void InternalGmax::clear_has_last_object_id() { + _has_bits_[0] &= ~0x00000004u; } inline void InternalGmax::clear_last_object_id() { last_object_id_ = GOOGLE_ULONGLONG(0); - _clear_bit(2); + clear_has_last_object_id(); } inline ::google::protobuf::uint64 InternalGmax::last_object_id() const { return last_object_id_; } inline void InternalGmax::set_last_object_id(::google::protobuf::uint64 value) { - _set_bit(2); + set_has_last_object_id(); last_object_id_ = value; } @@ -4496,107 +4279,159 @@ inline void InternalGmax::set_last_object_id(::google::protobuf::uint64 value) { // required fixed32 client_pid = 1; inline bool Lock::has_client_pid() const { - return _has_bit(0); + return (_has_bits_[0] & 0x00000001u) != 0; +} +inline void Lock::set_has_client_pid() { + _has_bits_[0] |= 0x00000001u; +} +inline void Lock::clear_has_client_pid() { + _has_bits_[0] &= ~0x00000001u; } inline void Lock::clear_client_pid() { client_pid_ = 0u; - _clear_bit(0); + clear_has_client_pid(); } inline ::google::protobuf::uint32 Lock::client_pid() const { return client_pid_; } inline void Lock::set_client_pid(::google::protobuf::uint32 value) { - _set_bit(0); + set_has_client_pid(); client_pid_ = value; } // required string client_uuid = 2; inline bool Lock::has_client_uuid() const { - return _has_bit(1); + return (_has_bits_[0] & 0x00000002u) != 0; +} +inline void Lock::set_has_client_uuid() { + _has_bits_[0] |= 0x00000002u; +} +inline void Lock::clear_has_client_uuid() { + _has_bits_[0] &= ~0x00000002u; } inline void Lock::clear_client_uuid() { - if (client_uuid_ != &_default_client_uuid_) { + if (client_uuid_ != &::google::protobuf::internal::kEmptyString) { client_uuid_->clear(); } - _clear_bit(1); + clear_has_client_uuid(); } inline const ::std::string& Lock::client_uuid() const { return *client_uuid_; } inline void Lock::set_client_uuid(const ::std::string& value) { - _set_bit(1); - if (client_uuid_ == &_default_client_uuid_) { + set_has_client_uuid(); + if (client_uuid_ == &::google::protobuf::internal::kEmptyString) { client_uuid_ = new ::std::string; } client_uuid_->assign(value); } inline void Lock::set_client_uuid(const char* value) { - _set_bit(1); - if (client_uuid_ == &_default_client_uuid_) { + set_has_client_uuid(); + if (client_uuid_ == &::google::protobuf::internal::kEmptyString) { client_uuid_ = new ::std::string; } client_uuid_->assign(value); } inline void Lock::set_client_uuid(const char* value, size_t size) { - _set_bit(1); - if (client_uuid_ == &_default_client_uuid_) { + set_has_client_uuid(); + if (client_uuid_ == &::google::protobuf::internal::kEmptyString) { client_uuid_ = new ::std::string; } client_uuid_->assign(reinterpret_cast(value), size); } inline ::std::string* Lock::mutable_client_uuid() { - _set_bit(1); - if (client_uuid_ == &_default_client_uuid_) { + set_has_client_uuid(); + if (client_uuid_ == &::google::protobuf::internal::kEmptyString) { client_uuid_ = new ::std::string; } return client_uuid_; } +inline ::std::string* Lock::release_client_uuid() { + clear_has_client_uuid(); + if (client_uuid_ == &::google::protobuf::internal::kEmptyString) { + return NULL; + } else { + ::std::string* temp = client_uuid_; + client_uuid_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + return temp; + } +} +inline void Lock::set_allocated_client_uuid(::std::string* client_uuid) { + if (client_uuid_ != &::google::protobuf::internal::kEmptyString) { + delete client_uuid_; + } + if (client_uuid) { + set_has_client_uuid(); + client_uuid_ = client_uuid; + } else { + clear_has_client_uuid(); + client_uuid_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + } +} // required fixed64 length = 3; inline bool Lock::has_length() const { - return _has_bit(2); + return (_has_bits_[0] & 0x00000004u) != 0; +} +inline void Lock::set_has_length() { + _has_bits_[0] |= 0x00000004u; +} +inline void Lock::clear_has_length() { + _has_bits_[0] &= ~0x00000004u; } inline void Lock::clear_length() { length_ = GOOGLE_ULONGLONG(0); - _clear_bit(2); + clear_has_length(); } inline ::google::protobuf::uint64 Lock::length() const { return length_; } inline void Lock::set_length(::google::protobuf::uint64 value) { - _set_bit(2); + set_has_length(); length_ = value; } // required fixed64 offset = 4; inline bool Lock::has_offset() const { - return _has_bit(3); + return (_has_bits_[0] & 0x00000008u) != 0; +} +inline void Lock::set_has_offset() { + _has_bits_[0] |= 0x00000008u; +} +inline void Lock::clear_has_offset() { + _has_bits_[0] &= ~0x00000008u; } inline void Lock::clear_offset() { offset_ = GOOGLE_ULONGLONG(0); - _clear_bit(3); + clear_has_offset(); } inline ::google::protobuf::uint64 Lock::offset() const { return offset_; } inline void Lock::set_offset(::google::protobuf::uint64 value) { - _set_bit(3); + set_has_offset(); offset_ = value; } // required bool exclusive = 5; inline bool Lock::has_exclusive() const { - return _has_bit(4); + return (_has_bits_[0] & 0x00000010u) != 0; +} +inline void Lock::set_has_exclusive() { + _has_bits_[0] |= 0x00000010u; +} +inline void Lock::clear_has_exclusive() { + _has_bits_[0] &= ~0x00000010u; } inline void Lock::clear_exclusive() { exclusive_ = false; - _clear_bit(4); + clear_has_exclusive(); } inline bool Lock::exclusive() const { return exclusive_; } inline void Lock::set_exclusive(bool value) { - _set_bit(4); + set_has_exclusive(); exclusive_ = value; } @@ -4606,49 +4441,67 @@ inline void Lock::set_exclusive(bool value) { // required fixed32 checksum = 1; inline bool ObjectData::has_checksum() const { - return _has_bit(0); + return (_has_bits_[0] & 0x00000001u) != 0; +} +inline void ObjectData::set_has_checksum() { + _has_bits_[0] |= 0x00000001u; +} +inline void ObjectData::clear_has_checksum() { + _has_bits_[0] &= ~0x00000001u; } inline void ObjectData::clear_checksum() { checksum_ = 0u; - _clear_bit(0); + clear_has_checksum(); } inline ::google::protobuf::uint32 ObjectData::checksum() const { return checksum_; } inline void ObjectData::set_checksum(::google::protobuf::uint32 value) { - _set_bit(0); + set_has_checksum(); checksum_ = value; } // required bool invalid_checksum_on_osd = 2; inline bool ObjectData::has_invalid_checksum_on_osd() const { - return _has_bit(1); + return (_has_bits_[0] & 0x00000002u) != 0; +} +inline void ObjectData::set_has_invalid_checksum_on_osd() { + _has_bits_[0] |= 0x00000002u; +} +inline void ObjectData::clear_has_invalid_checksum_on_osd() { + _has_bits_[0] &= ~0x00000002u; } inline void ObjectData::clear_invalid_checksum_on_osd() { invalid_checksum_on_osd_ = false; - _clear_bit(1); + clear_has_invalid_checksum_on_osd(); } inline bool ObjectData::invalid_checksum_on_osd() const { return invalid_checksum_on_osd_; } inline void ObjectData::set_invalid_checksum_on_osd(bool value) { - _set_bit(1); + set_has_invalid_checksum_on_osd(); invalid_checksum_on_osd_ = value; } // required fixed32 zero_padding = 3; inline bool ObjectData::has_zero_padding() const { - return _has_bit(2); + return (_has_bits_[0] & 0x00000004u) != 0; +} +inline void ObjectData::set_has_zero_padding() { + _has_bits_[0] |= 0x00000004u; +} +inline void ObjectData::clear_has_zero_padding() { + _has_bits_[0] &= ~0x00000004u; } inline void ObjectData::clear_zero_padding() { zero_padding_ = 0u; - _clear_bit(2); + clear_has_zero_padding(); } inline ::google::protobuf::uint32 ObjectData::zero_padding() const { return zero_padding_; } inline void ObjectData::set_zero_padding(::google::protobuf::uint32 value) { - _set_bit(2); + set_has_zero_padding(); zero_padding_ = value; } @@ -4658,75 +4511,115 @@ inline void ObjectData::set_zero_padding(::google::protobuf::uint32 value) { // required bytes set = 1; inline bool ObjectList::has_set() const { - return _has_bit(0); + return (_has_bits_[0] & 0x00000001u) != 0; +} +inline void ObjectList::set_has_set() { + _has_bits_[0] |= 0x00000001u; +} +inline void ObjectList::clear_has_set() { + _has_bits_[0] &= ~0x00000001u; } inline void ObjectList::clear_set() { - if (set_ != &_default_set_) { + if (set_ != &::google::protobuf::internal::kEmptyString) { set_->clear(); } - _clear_bit(0); + clear_has_set(); } inline const ::std::string& ObjectList::set() const { return *set_; } inline void ObjectList::set_set(const ::std::string& value) { - _set_bit(0); - if (set_ == &_default_set_) { + set_has_set(); + if (set_ == &::google::protobuf::internal::kEmptyString) { set_ = new ::std::string; } set_->assign(value); } inline void ObjectList::set_set(const char* value) { - _set_bit(0); - if (set_ == &_default_set_) { + set_has_set(); + if (set_ == &::google::protobuf::internal::kEmptyString) { set_ = new ::std::string; } set_->assign(value); } inline void ObjectList::set_set(const void* value, size_t size) { - _set_bit(0); - if (set_ == &_default_set_) { + set_has_set(); + if (set_ == &::google::protobuf::internal::kEmptyString) { set_ = new ::std::string; } set_->assign(reinterpret_cast(value), size); } inline ::std::string* ObjectList::mutable_set() { - _set_bit(0); - if (set_ == &_default_set_) { + set_has_set(); + if (set_ == &::google::protobuf::internal::kEmptyString) { set_ = new ::std::string; } return set_; } +inline ::std::string* ObjectList::release_set() { + clear_has_set(); + if (set_ == &::google::protobuf::internal::kEmptyString) { + return NULL; + } else { + ::std::string* temp = set_; + set_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + return temp; + } +} +inline void ObjectList::set_allocated_set(::std::string* set) { + if (set_ != &::google::protobuf::internal::kEmptyString) { + delete set_; + } + if (set) { + set_has_set(); + set_ = set; + } else { + clear_has_set(); + set_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + } +} // required fixed32 stripe_width = 2; inline bool ObjectList::has_stripe_width() const { - return _has_bit(1); + return (_has_bits_[0] & 0x00000002u) != 0; +} +inline void ObjectList::set_has_stripe_width() { + _has_bits_[0] |= 0x00000002u; +} +inline void ObjectList::clear_has_stripe_width() { + _has_bits_[0] &= ~0x00000002u; } inline void ObjectList::clear_stripe_width() { stripe_width_ = 0u; - _clear_bit(1); + clear_has_stripe_width(); } inline ::google::protobuf::uint32 ObjectList::stripe_width() const { return stripe_width_; } inline void ObjectList::set_stripe_width(::google::protobuf::uint32 value) { - _set_bit(1); + set_has_stripe_width(); stripe_width_ = value; } // required fixed32 first_ = 3; inline bool ObjectList::has_first_() const { - return _has_bit(2); + return (_has_bits_[0] & 0x00000004u) != 0; +} +inline void ObjectList::set_has_first_() { + _has_bits_[0] |= 0x00000004u; +} +inline void ObjectList::clear_has_first_() { + _has_bits_[0] &= ~0x00000004u; } inline void ObjectList::clear_first_() { first__ = 0u; - _clear_bit(2); + clear_has_first_(); } inline ::google::protobuf::uint32 ObjectList::first_() const { return first__; } inline void ObjectList::set_first_(::google::protobuf::uint32 value) { - _set_bit(2); + set_has_first_(); first__ = value; } @@ -4736,33 +4629,45 @@ inline void ObjectList::set_first_(::google::protobuf::uint32 value) { // required fixed64 object_number = 1; inline bool ObjectVersion::has_object_number() const { - return _has_bit(0); + return (_has_bits_[0] & 0x00000001u) != 0; +} +inline void ObjectVersion::set_has_object_number() { + _has_bits_[0] |= 0x00000001u; +} +inline void ObjectVersion::clear_has_object_number() { + _has_bits_[0] &= ~0x00000001u; } inline void ObjectVersion::clear_object_number() { object_number_ = GOOGLE_ULONGLONG(0); - _clear_bit(0); + clear_has_object_number(); } inline ::google::protobuf::uint64 ObjectVersion::object_number() const { return object_number_; } inline void ObjectVersion::set_object_number(::google::protobuf::uint64 value) { - _set_bit(0); + set_has_object_number(); object_number_ = value; } // required fixed64 object_version = 2; inline bool ObjectVersion::has_object_version() const { - return _has_bit(1); + return (_has_bits_[0] & 0x00000002u) != 0; +} +inline void ObjectVersion::set_has_object_version() { + _has_bits_[0] |= 0x00000002u; +} +inline void ObjectVersion::clear_has_object_version() { + _has_bits_[0] &= ~0x00000002u; } inline void ObjectVersion::clear_object_version() { object_version_ = GOOGLE_ULONGLONG(0); - _clear_bit(1); + clear_has_object_version(); } inline ::google::protobuf::uint64 ObjectVersion::object_version() const { return object_version_; } inline void ObjectVersion::set_object_version(::google::protobuf::uint64 value) { - _set_bit(1); + set_has_object_version(); object_version_ = value; } @@ -4772,33 +4677,45 @@ inline void ObjectVersion::set_object_version(::google::protobuf::uint64 value) // required fixed64 version = 1; inline bool TruncateRecord::has_version() const { - return _has_bit(0); + return (_has_bits_[0] & 0x00000001u) != 0; +} +inline void TruncateRecord::set_has_version() { + _has_bits_[0] |= 0x00000001u; +} +inline void TruncateRecord::clear_has_version() { + _has_bits_[0] &= ~0x00000001u; } inline void TruncateRecord::clear_version() { version_ = GOOGLE_ULONGLONG(0); - _clear_bit(0); + clear_has_version(); } inline ::google::protobuf::uint64 TruncateRecord::version() const { return version_; } inline void TruncateRecord::set_version(::google::protobuf::uint64 value) { - _set_bit(0); + set_has_version(); version_ = value; } // required fixed64 last_object_number = 2; inline bool TruncateRecord::has_last_object_number() const { - return _has_bit(1); + return (_has_bits_[0] & 0x00000002u) != 0; +} +inline void TruncateRecord::set_has_last_object_number() { + _has_bits_[0] |= 0x00000002u; +} +inline void TruncateRecord::clear_has_last_object_number() { + _has_bits_[0] &= ~0x00000002u; } inline void TruncateRecord::clear_last_object_number() { last_object_number_ = GOOGLE_ULONGLONG(0); - _clear_bit(1); + clear_has_last_object_number(); } inline ::google::protobuf::uint64 TruncateRecord::last_object_number() const { return last_object_number_; } inline void TruncateRecord::set_last_object_number(::google::protobuf::uint64 value) { - _set_bit(1); + set_has_last_object_number(); last_object_number_ = value; } @@ -4837,65 +4754,89 @@ TruncateLog::mutable_records() { // required fixed64 truncate_epoch = 1; inline bool ReplicaStatus::has_truncate_epoch() const { - return _has_bit(0); + return (_has_bits_[0] & 0x00000001u) != 0; +} +inline void ReplicaStatus::set_has_truncate_epoch() { + _has_bits_[0] |= 0x00000001u; +} +inline void ReplicaStatus::clear_has_truncate_epoch() { + _has_bits_[0] &= ~0x00000001u; } inline void ReplicaStatus::clear_truncate_epoch() { truncate_epoch_ = GOOGLE_ULONGLONG(0); - _clear_bit(0); + clear_has_truncate_epoch(); } inline ::google::protobuf::uint64 ReplicaStatus::truncate_epoch() const { return truncate_epoch_; } inline void ReplicaStatus::set_truncate_epoch(::google::protobuf::uint64 value) { - _set_bit(0); + set_has_truncate_epoch(); truncate_epoch_ = value; } // required fixed64 file_size = 2; inline bool ReplicaStatus::has_file_size() const { - return _has_bit(1); + return (_has_bits_[0] & 0x00000002u) != 0; +} +inline void ReplicaStatus::set_has_file_size() { + _has_bits_[0] |= 0x00000002u; +} +inline void ReplicaStatus::clear_has_file_size() { + _has_bits_[0] &= ~0x00000002u; } inline void ReplicaStatus::clear_file_size() { file_size_ = GOOGLE_ULONGLONG(0); - _clear_bit(1); + clear_has_file_size(); } inline ::google::protobuf::uint64 ReplicaStatus::file_size() const { return file_size_; } inline void ReplicaStatus::set_file_size(::google::protobuf::uint64 value) { - _set_bit(1); + set_has_file_size(); file_size_ = value; } // required fixed64 max_obj_version = 3; inline bool ReplicaStatus::has_max_obj_version() const { - return _has_bit(2); + return (_has_bits_[0] & 0x00000004u) != 0; +} +inline void ReplicaStatus::set_has_max_obj_version() { + _has_bits_[0] |= 0x00000004u; +} +inline void ReplicaStatus::clear_has_max_obj_version() { + _has_bits_[0] &= ~0x00000004u; } inline void ReplicaStatus::clear_max_obj_version() { max_obj_version_ = GOOGLE_ULONGLONG(0); - _clear_bit(2); + clear_has_max_obj_version(); } inline ::google::protobuf::uint64 ReplicaStatus::max_obj_version() const { return max_obj_version_; } inline void ReplicaStatus::set_max_obj_version(::google::protobuf::uint64 value) { - _set_bit(2); + set_has_max_obj_version(); max_obj_version_ = value; } // required fixed32 primary_epoch = 4; inline bool ReplicaStatus::has_primary_epoch() const { - return _has_bit(3); + return (_has_bits_[0] & 0x00000008u) != 0; +} +inline void ReplicaStatus::set_has_primary_epoch() { + _has_bits_[0] |= 0x00000008u; +} +inline void ReplicaStatus::clear_has_primary_epoch() { + _has_bits_[0] &= ~0x00000008u; } inline void ReplicaStatus::clear_primary_epoch() { primary_epoch_ = 0u; - _clear_bit(3); + clear_has_primary_epoch(); } inline ::google::protobuf::uint32 ReplicaStatus::primary_epoch() const { return primary_epoch_; } inline void ReplicaStatus::set_primary_epoch(::google::protobuf::uint32 value) { - _set_bit(3); + set_has_primary_epoch(); primary_epoch_ = value; } @@ -4926,20 +4867,41 @@ ReplicaStatus::mutable_objectversions() { // required .xtreemfs.pbrpc.TruncateLog truncate_log = 6; inline bool ReplicaStatus::has_truncate_log() const { - return _has_bit(5); + return (_has_bits_[0] & 0x00000020u) != 0; +} +inline void ReplicaStatus::set_has_truncate_log() { + _has_bits_[0] |= 0x00000020u; +} +inline void ReplicaStatus::clear_has_truncate_log() { + _has_bits_[0] &= ~0x00000020u; } inline void ReplicaStatus::clear_truncate_log() { if (truncate_log_ != NULL) truncate_log_->::xtreemfs::pbrpc::TruncateLog::Clear(); - _clear_bit(5); + clear_has_truncate_log(); } inline const ::xtreemfs::pbrpc::TruncateLog& ReplicaStatus::truncate_log() const { return truncate_log_ != NULL ? *truncate_log_ : *default_instance_->truncate_log_; } inline ::xtreemfs::pbrpc::TruncateLog* ReplicaStatus::mutable_truncate_log() { - _set_bit(5); + set_has_truncate_log(); if (truncate_log_ == NULL) truncate_log_ = new ::xtreemfs::pbrpc::TruncateLog; return truncate_log_; } +inline ::xtreemfs::pbrpc::TruncateLog* ReplicaStatus::release_truncate_log() { + clear_has_truncate_log(); + ::xtreemfs::pbrpc::TruncateLog* temp = truncate_log_; + truncate_log_ = NULL; + return temp; +} +inline void ReplicaStatus::set_allocated_truncate_log(::xtreemfs::pbrpc::TruncateLog* truncate_log) { + delete truncate_log_; + truncate_log_ = truncate_log; + if (truncate_log) { + set_has_truncate_log(); + } else { + clear_has_truncate_log(); + } +} // ------------------------------------------------------------------- @@ -4947,33 +4909,45 @@ inline ::xtreemfs::pbrpc::TruncateLog* ReplicaStatus::mutable_truncate_log() { // required fixed64 object_number = 1; inline bool ObjectVersionMapping::has_object_number() const { - return _has_bit(0); + return (_has_bits_[0] & 0x00000001u) != 0; +} +inline void ObjectVersionMapping::set_has_object_number() { + _has_bits_[0] |= 0x00000001u; +} +inline void ObjectVersionMapping::clear_has_object_number() { + _has_bits_[0] &= ~0x00000001u; } inline void ObjectVersionMapping::clear_object_number() { object_number_ = GOOGLE_ULONGLONG(0); - _clear_bit(0); + clear_has_object_number(); } inline ::google::protobuf::uint64 ObjectVersionMapping::object_number() const { return object_number_; } inline void ObjectVersionMapping::set_object_number(::google::protobuf::uint64 value) { - _set_bit(0); + set_has_object_number(); object_number_ = value; } // required fixed64 object_version = 2; inline bool ObjectVersionMapping::has_object_version() const { - return _has_bit(1); + return (_has_bits_[0] & 0x00000002u) != 0; +} +inline void ObjectVersionMapping::set_has_object_version() { + _has_bits_[0] |= 0x00000002u; +} +inline void ObjectVersionMapping::clear_has_object_version() { + _has_bits_[0] &= ~0x00000002u; } inline void ObjectVersionMapping::clear_object_version() { object_version_ = GOOGLE_ULONGLONG(0); - _clear_bit(1); + clear_has_object_version(); } inline ::google::protobuf::uint64 ObjectVersionMapping::object_version() const { return object_version_; } inline void ObjectVersionMapping::set_object_version(::google::protobuf::uint64 value) { - _set_bit(1); + set_has_object_version(); object_version_ = value; } @@ -5027,33 +5001,45 @@ ObjectVersionMapping::mutable_osd_uuids() { // required fixed64 truncate_epoch = 1; inline bool AuthoritativeReplicaState::has_truncate_epoch() const { - return _has_bit(0); + return (_has_bits_[0] & 0x00000001u) != 0; +} +inline void AuthoritativeReplicaState::set_has_truncate_epoch() { + _has_bits_[0] |= 0x00000001u; +} +inline void AuthoritativeReplicaState::clear_has_truncate_epoch() { + _has_bits_[0] &= ~0x00000001u; } inline void AuthoritativeReplicaState::clear_truncate_epoch() { truncate_epoch_ = GOOGLE_ULONGLONG(0); - _clear_bit(0); + clear_has_truncate_epoch(); } inline ::google::protobuf::uint64 AuthoritativeReplicaState::truncate_epoch() const { return truncate_epoch_; } inline void AuthoritativeReplicaState::set_truncate_epoch(::google::protobuf::uint64 value) { - _set_bit(0); + set_has_truncate_epoch(); truncate_epoch_ = value; } // required fixed64 max_obj_version = 4; inline bool AuthoritativeReplicaState::has_max_obj_version() const { - return _has_bit(1); + return (_has_bits_[0] & 0x00000002u) != 0; +} +inline void AuthoritativeReplicaState::set_has_max_obj_version() { + _has_bits_[0] |= 0x00000002u; +} +inline void AuthoritativeReplicaState::clear_has_max_obj_version() { + _has_bits_[0] &= ~0x00000002u; } inline void AuthoritativeReplicaState::clear_max_obj_version() { max_obj_version_ = GOOGLE_ULONGLONG(0); - _clear_bit(1); + clear_has_max_obj_version(); } inline ::google::protobuf::uint64 AuthoritativeReplicaState::max_obj_version() const { return max_obj_version_; } inline void AuthoritativeReplicaState::set_max_obj_version(::google::protobuf::uint64 value) { - _set_bit(1); + set_has_max_obj_version(); max_obj_version_ = value; } @@ -5084,20 +5070,41 @@ AuthoritativeReplicaState::mutable_objectversions() { // required .xtreemfs.pbrpc.TruncateLog truncate_log = 3; inline bool AuthoritativeReplicaState::has_truncate_log() const { - return _has_bit(3); + return (_has_bits_[0] & 0x00000008u) != 0; +} +inline void AuthoritativeReplicaState::set_has_truncate_log() { + _has_bits_[0] |= 0x00000008u; +} +inline void AuthoritativeReplicaState::clear_has_truncate_log() { + _has_bits_[0] &= ~0x00000008u; } inline void AuthoritativeReplicaState::clear_truncate_log() { if (truncate_log_ != NULL) truncate_log_->::xtreemfs::pbrpc::TruncateLog::Clear(); - _clear_bit(3); + clear_has_truncate_log(); } inline const ::xtreemfs::pbrpc::TruncateLog& AuthoritativeReplicaState::truncate_log() const { return truncate_log_ != NULL ? *truncate_log_ : *default_instance_->truncate_log_; } inline ::xtreemfs::pbrpc::TruncateLog* AuthoritativeReplicaState::mutable_truncate_log() { - _set_bit(3); + set_has_truncate_log(); if (truncate_log_ == NULL) truncate_log_ = new ::xtreemfs::pbrpc::TruncateLog; return truncate_log_; } +inline ::xtreemfs::pbrpc::TruncateLog* AuthoritativeReplicaState::release_truncate_log() { + clear_has_truncate_log(); + ::xtreemfs::pbrpc::TruncateLog* temp = truncate_log_; + truncate_log_ = NULL; + return temp; +} +inline void AuthoritativeReplicaState::set_allocated_truncate_log(::xtreemfs::pbrpc::TruncateLog* truncate_log) { + delete truncate_log_; + truncate_log_ = truncate_log; + if (truncate_log) { + set_has_truncate_log(); + } else { + clear_has_truncate_log(); + } +} // ------------------------------------------------------------------- @@ -5105,20 +5112,41 @@ inline ::xtreemfs::pbrpc::TruncateLog* AuthoritativeReplicaState::mutable_trunca // required .xtreemfs.pbrpc.ObjectData data = 1; inline bool InternalReadLocalResponse::has_data() const { - return _has_bit(0); + return (_has_bits_[0] & 0x00000001u) != 0; +} +inline void InternalReadLocalResponse::set_has_data() { + _has_bits_[0] |= 0x00000001u; +} +inline void InternalReadLocalResponse::clear_has_data() { + _has_bits_[0] &= ~0x00000001u; } inline void InternalReadLocalResponse::clear_data() { if (data_ != NULL) data_->::xtreemfs::pbrpc::ObjectData::Clear(); - _clear_bit(0); + clear_has_data(); } inline const ::xtreemfs::pbrpc::ObjectData& InternalReadLocalResponse::data() const { return data_ != NULL ? *data_ : *default_instance_->data_; } inline ::xtreemfs::pbrpc::ObjectData* InternalReadLocalResponse::mutable_data() { - _set_bit(0); + set_has_data(); if (data_ == NULL) data_ = new ::xtreemfs::pbrpc::ObjectData; return data_; } +inline ::xtreemfs::pbrpc::ObjectData* InternalReadLocalResponse::release_data() { + clear_has_data(); + ::xtreemfs::pbrpc::ObjectData* temp = data_; + data_ = NULL; + return temp; +} +inline void InternalReadLocalResponse::set_allocated_data(::xtreemfs::pbrpc::ObjectData* data) { + delete data_; + data_ = data; + if (data) { + set_has_data(); + } else { + clear_has_data(); + } +} // repeated .xtreemfs.pbrpc.ObjectList object_set = 2; inline int InternalReadLocalResponse::object_set_size() const { @@ -5151,124 +5179,197 @@ InternalReadLocalResponse::mutable_object_set() { // required .xtreemfs.pbrpc.FileCredentials file_credentials = 1; inline bool readRequest::has_file_credentials() const { - return _has_bit(0); + return (_has_bits_[0] & 0x00000001u) != 0; +} +inline void readRequest::set_has_file_credentials() { + _has_bits_[0] |= 0x00000001u; +} +inline void readRequest::clear_has_file_credentials() { + _has_bits_[0] &= ~0x00000001u; } inline void readRequest::clear_file_credentials() { if (file_credentials_ != NULL) file_credentials_->::xtreemfs::pbrpc::FileCredentials::Clear(); - _clear_bit(0); + clear_has_file_credentials(); } inline const ::xtreemfs::pbrpc::FileCredentials& readRequest::file_credentials() const { return file_credentials_ != NULL ? *file_credentials_ : *default_instance_->file_credentials_; } inline ::xtreemfs::pbrpc::FileCredentials* readRequest::mutable_file_credentials() { - _set_bit(0); + set_has_file_credentials(); if (file_credentials_ == NULL) file_credentials_ = new ::xtreemfs::pbrpc::FileCredentials; return file_credentials_; } +inline ::xtreemfs::pbrpc::FileCredentials* readRequest::release_file_credentials() { + clear_has_file_credentials(); + ::xtreemfs::pbrpc::FileCredentials* temp = file_credentials_; + file_credentials_ = NULL; + return temp; +} +inline void readRequest::set_allocated_file_credentials(::xtreemfs::pbrpc::FileCredentials* file_credentials) { + delete file_credentials_; + file_credentials_ = file_credentials; + if (file_credentials) { + set_has_file_credentials(); + } else { + clear_has_file_credentials(); + } +} // required string file_id = 2; inline bool readRequest::has_file_id() const { - return _has_bit(1); + return (_has_bits_[0] & 0x00000002u) != 0; +} +inline void readRequest::set_has_file_id() { + _has_bits_[0] |= 0x00000002u; +} +inline void readRequest::clear_has_file_id() { + _has_bits_[0] &= ~0x00000002u; } inline void readRequest::clear_file_id() { - if (file_id_ != &_default_file_id_) { + if (file_id_ != &::google::protobuf::internal::kEmptyString) { file_id_->clear(); } - _clear_bit(1); + clear_has_file_id(); } inline const ::std::string& readRequest::file_id() const { return *file_id_; } inline void readRequest::set_file_id(const ::std::string& value) { - _set_bit(1); - if (file_id_ == &_default_file_id_) { + set_has_file_id(); + if (file_id_ == &::google::protobuf::internal::kEmptyString) { file_id_ = new ::std::string; } file_id_->assign(value); } inline void readRequest::set_file_id(const char* value) { - _set_bit(1); - if (file_id_ == &_default_file_id_) { + set_has_file_id(); + if (file_id_ == &::google::protobuf::internal::kEmptyString) { file_id_ = new ::std::string; } file_id_->assign(value); } inline void readRequest::set_file_id(const char* value, size_t size) { - _set_bit(1); - if (file_id_ == &_default_file_id_) { + set_has_file_id(); + if (file_id_ == &::google::protobuf::internal::kEmptyString) { file_id_ = new ::std::string; } file_id_->assign(reinterpret_cast(value), size); } inline ::std::string* readRequest::mutable_file_id() { - _set_bit(1); - if (file_id_ == &_default_file_id_) { + set_has_file_id(); + if (file_id_ == &::google::protobuf::internal::kEmptyString) { file_id_ = new ::std::string; } return file_id_; } +inline ::std::string* readRequest::release_file_id() { + clear_has_file_id(); + if (file_id_ == &::google::protobuf::internal::kEmptyString) { + return NULL; + } else { + ::std::string* temp = file_id_; + file_id_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + return temp; + } +} +inline void readRequest::set_allocated_file_id(::std::string* file_id) { + if (file_id_ != &::google::protobuf::internal::kEmptyString) { + delete file_id_; + } + if (file_id) { + set_has_file_id(); + file_id_ = file_id; + } else { + clear_has_file_id(); + file_id_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + } +} // required fixed64 object_number = 3; inline bool readRequest::has_object_number() const { - return _has_bit(2); + return (_has_bits_[0] & 0x00000004u) != 0; +} +inline void readRequest::set_has_object_number() { + _has_bits_[0] |= 0x00000004u; +} +inline void readRequest::clear_has_object_number() { + _has_bits_[0] &= ~0x00000004u; } inline void readRequest::clear_object_number() { object_number_ = GOOGLE_ULONGLONG(0); - _clear_bit(2); + clear_has_object_number(); } inline ::google::protobuf::uint64 readRequest::object_number() const { return object_number_; } inline void readRequest::set_object_number(::google::protobuf::uint64 value) { - _set_bit(2); + set_has_object_number(); object_number_ = value; } // required fixed64 object_version = 4; inline bool readRequest::has_object_version() const { - return _has_bit(3); + return (_has_bits_[0] & 0x00000008u) != 0; +} +inline void readRequest::set_has_object_version() { + _has_bits_[0] |= 0x00000008u; +} +inline void readRequest::clear_has_object_version() { + _has_bits_[0] &= ~0x00000008u; } inline void readRequest::clear_object_version() { object_version_ = GOOGLE_ULONGLONG(0); - _clear_bit(3); + clear_has_object_version(); } inline ::google::protobuf::uint64 readRequest::object_version() const { return object_version_; } inline void readRequest::set_object_version(::google::protobuf::uint64 value) { - _set_bit(3); + set_has_object_version(); object_version_ = value; } // required fixed32 offset = 5; inline bool readRequest::has_offset() const { - return _has_bit(4); + return (_has_bits_[0] & 0x00000010u) != 0; +} +inline void readRequest::set_has_offset() { + _has_bits_[0] |= 0x00000010u; +} +inline void readRequest::clear_has_offset() { + _has_bits_[0] &= ~0x00000010u; } inline void readRequest::clear_offset() { offset_ = 0u; - _clear_bit(4); + clear_has_offset(); } inline ::google::protobuf::uint32 readRequest::offset() const { return offset_; } inline void readRequest::set_offset(::google::protobuf::uint32 value) { - _set_bit(4); + set_has_offset(); offset_ = value; } // required fixed32 length = 6; inline bool readRequest::has_length() const { - return _has_bit(5); + return (_has_bits_[0] & 0x00000020u) != 0; +} +inline void readRequest::set_has_length() { + _has_bits_[0] |= 0x00000020u; +} +inline void readRequest::clear_has_length() { + _has_bits_[0] &= ~0x00000020u; } inline void readRequest::clear_length() { length_ = 0u; - _clear_bit(5); + clear_has_length(); } inline ::google::protobuf::uint32 readRequest::length() const { return length_; } inline void readRequest::set_length(::google::protobuf::uint32 value) { - _set_bit(5); + set_has_length(); length_ = value; } @@ -5278,76 +5379,131 @@ inline void readRequest::set_length(::google::protobuf::uint32 value) { // required .xtreemfs.pbrpc.FileCredentials file_credentials = 1; inline bool truncateRequest::has_file_credentials() const { - return _has_bit(0); + return (_has_bits_[0] & 0x00000001u) != 0; +} +inline void truncateRequest::set_has_file_credentials() { + _has_bits_[0] |= 0x00000001u; +} +inline void truncateRequest::clear_has_file_credentials() { + _has_bits_[0] &= ~0x00000001u; } inline void truncateRequest::clear_file_credentials() { if (file_credentials_ != NULL) file_credentials_->::xtreemfs::pbrpc::FileCredentials::Clear(); - _clear_bit(0); + clear_has_file_credentials(); } inline const ::xtreemfs::pbrpc::FileCredentials& truncateRequest::file_credentials() const { return file_credentials_ != NULL ? *file_credentials_ : *default_instance_->file_credentials_; } inline ::xtreemfs::pbrpc::FileCredentials* truncateRequest::mutable_file_credentials() { - _set_bit(0); + set_has_file_credentials(); if (file_credentials_ == NULL) file_credentials_ = new ::xtreemfs::pbrpc::FileCredentials; return file_credentials_; } +inline ::xtreemfs::pbrpc::FileCredentials* truncateRequest::release_file_credentials() { + clear_has_file_credentials(); + ::xtreemfs::pbrpc::FileCredentials* temp = file_credentials_; + file_credentials_ = NULL; + return temp; +} +inline void truncateRequest::set_allocated_file_credentials(::xtreemfs::pbrpc::FileCredentials* file_credentials) { + delete file_credentials_; + file_credentials_ = file_credentials; + if (file_credentials) { + set_has_file_credentials(); + } else { + clear_has_file_credentials(); + } +} // required string file_id = 2; inline bool truncateRequest::has_file_id() const { - return _has_bit(1); + return (_has_bits_[0] & 0x00000002u) != 0; +} +inline void truncateRequest::set_has_file_id() { + _has_bits_[0] |= 0x00000002u; +} +inline void truncateRequest::clear_has_file_id() { + _has_bits_[0] &= ~0x00000002u; } inline void truncateRequest::clear_file_id() { - if (file_id_ != &_default_file_id_) { + if (file_id_ != &::google::protobuf::internal::kEmptyString) { file_id_->clear(); } - _clear_bit(1); + clear_has_file_id(); } inline const ::std::string& truncateRequest::file_id() const { return *file_id_; } inline void truncateRequest::set_file_id(const ::std::string& value) { - _set_bit(1); - if (file_id_ == &_default_file_id_) { + set_has_file_id(); + if (file_id_ == &::google::protobuf::internal::kEmptyString) { file_id_ = new ::std::string; } file_id_->assign(value); } inline void truncateRequest::set_file_id(const char* value) { - _set_bit(1); - if (file_id_ == &_default_file_id_) { + set_has_file_id(); + if (file_id_ == &::google::protobuf::internal::kEmptyString) { file_id_ = new ::std::string; } file_id_->assign(value); } inline void truncateRequest::set_file_id(const char* value, size_t size) { - _set_bit(1); - if (file_id_ == &_default_file_id_) { + set_has_file_id(); + if (file_id_ == &::google::protobuf::internal::kEmptyString) { file_id_ = new ::std::string; } file_id_->assign(reinterpret_cast(value), size); } inline ::std::string* truncateRequest::mutable_file_id() { - _set_bit(1); - if (file_id_ == &_default_file_id_) { + set_has_file_id(); + if (file_id_ == &::google::protobuf::internal::kEmptyString) { file_id_ = new ::std::string; } return file_id_; } +inline ::std::string* truncateRequest::release_file_id() { + clear_has_file_id(); + if (file_id_ == &::google::protobuf::internal::kEmptyString) { + return NULL; + } else { + ::std::string* temp = file_id_; + file_id_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + return temp; + } +} +inline void truncateRequest::set_allocated_file_id(::std::string* file_id) { + if (file_id_ != &::google::protobuf::internal::kEmptyString) { + delete file_id_; + } + if (file_id) { + set_has_file_id(); + file_id_ = file_id; + } else { + clear_has_file_id(); + file_id_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + } +} // required fixed64 new_file_size = 3; inline bool truncateRequest::has_new_file_size() const { - return _has_bit(2); + return (_has_bits_[0] & 0x00000004u) != 0; +} +inline void truncateRequest::set_has_new_file_size() { + _has_bits_[0] |= 0x00000004u; +} +inline void truncateRequest::clear_has_new_file_size() { + _has_bits_[0] &= ~0x00000004u; } inline void truncateRequest::clear_new_file_size() { new_file_size_ = GOOGLE_ULONGLONG(0); - _clear_bit(2); + clear_has_new_file_size(); } inline ::google::protobuf::uint64 truncateRequest::new_file_size() const { return new_file_size_; } inline void truncateRequest::set_new_file_size(::google::protobuf::uint64 value) { - _set_bit(2); + set_has_new_file_size(); new_file_size_ = value; } @@ -5357,62 +5513,111 @@ inline void truncateRequest::set_new_file_size(::google::protobuf::uint64 value) // required .xtreemfs.pbrpc.FileCredentials file_credentials = 1; inline bool unlink_osd_Request::has_file_credentials() const { - return _has_bit(0); + return (_has_bits_[0] & 0x00000001u) != 0; +} +inline void unlink_osd_Request::set_has_file_credentials() { + _has_bits_[0] |= 0x00000001u; +} +inline void unlink_osd_Request::clear_has_file_credentials() { + _has_bits_[0] &= ~0x00000001u; } inline void unlink_osd_Request::clear_file_credentials() { if (file_credentials_ != NULL) file_credentials_->::xtreemfs::pbrpc::FileCredentials::Clear(); - _clear_bit(0); + clear_has_file_credentials(); } inline const ::xtreemfs::pbrpc::FileCredentials& unlink_osd_Request::file_credentials() const { return file_credentials_ != NULL ? *file_credentials_ : *default_instance_->file_credentials_; } inline ::xtreemfs::pbrpc::FileCredentials* unlink_osd_Request::mutable_file_credentials() { - _set_bit(0); + set_has_file_credentials(); if (file_credentials_ == NULL) file_credentials_ = new ::xtreemfs::pbrpc::FileCredentials; return file_credentials_; } +inline ::xtreemfs::pbrpc::FileCredentials* unlink_osd_Request::release_file_credentials() { + clear_has_file_credentials(); + ::xtreemfs::pbrpc::FileCredentials* temp = file_credentials_; + file_credentials_ = NULL; + return temp; +} +inline void unlink_osd_Request::set_allocated_file_credentials(::xtreemfs::pbrpc::FileCredentials* file_credentials) { + delete file_credentials_; + file_credentials_ = file_credentials; + if (file_credentials) { + set_has_file_credentials(); + } else { + clear_has_file_credentials(); + } +} // required string file_id = 2; inline bool unlink_osd_Request::has_file_id() const { - return _has_bit(1); + return (_has_bits_[0] & 0x00000002u) != 0; +} +inline void unlink_osd_Request::set_has_file_id() { + _has_bits_[0] |= 0x00000002u; +} +inline void unlink_osd_Request::clear_has_file_id() { + _has_bits_[0] &= ~0x00000002u; } inline void unlink_osd_Request::clear_file_id() { - if (file_id_ != &_default_file_id_) { + if (file_id_ != &::google::protobuf::internal::kEmptyString) { file_id_->clear(); } - _clear_bit(1); + clear_has_file_id(); } inline const ::std::string& unlink_osd_Request::file_id() const { return *file_id_; } inline void unlink_osd_Request::set_file_id(const ::std::string& value) { - _set_bit(1); - if (file_id_ == &_default_file_id_) { + set_has_file_id(); + if (file_id_ == &::google::protobuf::internal::kEmptyString) { file_id_ = new ::std::string; } file_id_->assign(value); } inline void unlink_osd_Request::set_file_id(const char* value) { - _set_bit(1); - if (file_id_ == &_default_file_id_) { + set_has_file_id(); + if (file_id_ == &::google::protobuf::internal::kEmptyString) { file_id_ = new ::std::string; } file_id_->assign(value); } inline void unlink_osd_Request::set_file_id(const char* value, size_t size) { - _set_bit(1); - if (file_id_ == &_default_file_id_) { + set_has_file_id(); + if (file_id_ == &::google::protobuf::internal::kEmptyString) { file_id_ = new ::std::string; } file_id_->assign(reinterpret_cast(value), size); } inline ::std::string* unlink_osd_Request::mutable_file_id() { - _set_bit(1); - if (file_id_ == &_default_file_id_) { + set_has_file_id(); + if (file_id_ == &::google::protobuf::internal::kEmptyString) { file_id_ = new ::std::string; } return file_id_; } +inline ::std::string* unlink_osd_Request::release_file_id() { + clear_has_file_id(); + if (file_id_ == &::google::protobuf::internal::kEmptyString) { + return NULL; + } else { + ::std::string* temp = file_id_; + file_id_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + return temp; + } +} +inline void unlink_osd_Request::set_allocated_file_id(::std::string* file_id) { + if (file_id_ != &::google::protobuf::internal::kEmptyString) { + delete file_id_; + } + if (file_id) { + set_has_file_id(); + file_id_ = file_id; + } else { + clear_has_file_id(); + file_id_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + } +} // ------------------------------------------------------------------- @@ -5420,143 +5625,237 @@ inline ::std::string* unlink_osd_Request::mutable_file_id() { // required .xtreemfs.pbrpc.FileCredentials file_credentials = 1; inline bool writeRequest::has_file_credentials() const { - return _has_bit(0); + return (_has_bits_[0] & 0x00000001u) != 0; +} +inline void writeRequest::set_has_file_credentials() { + _has_bits_[0] |= 0x00000001u; +} +inline void writeRequest::clear_has_file_credentials() { + _has_bits_[0] &= ~0x00000001u; } inline void writeRequest::clear_file_credentials() { if (file_credentials_ != NULL) file_credentials_->::xtreemfs::pbrpc::FileCredentials::Clear(); - _clear_bit(0); + clear_has_file_credentials(); } inline const ::xtreemfs::pbrpc::FileCredentials& writeRequest::file_credentials() const { return file_credentials_ != NULL ? *file_credentials_ : *default_instance_->file_credentials_; } inline ::xtreemfs::pbrpc::FileCredentials* writeRequest::mutable_file_credentials() { - _set_bit(0); + set_has_file_credentials(); if (file_credentials_ == NULL) file_credentials_ = new ::xtreemfs::pbrpc::FileCredentials; return file_credentials_; } +inline ::xtreemfs::pbrpc::FileCredentials* writeRequest::release_file_credentials() { + clear_has_file_credentials(); + ::xtreemfs::pbrpc::FileCredentials* temp = file_credentials_; + file_credentials_ = NULL; + return temp; +} +inline void writeRequest::set_allocated_file_credentials(::xtreemfs::pbrpc::FileCredentials* file_credentials) { + delete file_credentials_; + file_credentials_ = file_credentials; + if (file_credentials) { + set_has_file_credentials(); + } else { + clear_has_file_credentials(); + } +} // required string file_id = 2; inline bool writeRequest::has_file_id() const { - return _has_bit(1); + return (_has_bits_[0] & 0x00000002u) != 0; +} +inline void writeRequest::set_has_file_id() { + _has_bits_[0] |= 0x00000002u; +} +inline void writeRequest::clear_has_file_id() { + _has_bits_[0] &= ~0x00000002u; } inline void writeRequest::clear_file_id() { - if (file_id_ != &_default_file_id_) { + if (file_id_ != &::google::protobuf::internal::kEmptyString) { file_id_->clear(); } - _clear_bit(1); + clear_has_file_id(); } inline const ::std::string& writeRequest::file_id() const { return *file_id_; } inline void writeRequest::set_file_id(const ::std::string& value) { - _set_bit(1); - if (file_id_ == &_default_file_id_) { + set_has_file_id(); + if (file_id_ == &::google::protobuf::internal::kEmptyString) { file_id_ = new ::std::string; } file_id_->assign(value); } inline void writeRequest::set_file_id(const char* value) { - _set_bit(1); - if (file_id_ == &_default_file_id_) { + set_has_file_id(); + if (file_id_ == &::google::protobuf::internal::kEmptyString) { file_id_ = new ::std::string; } file_id_->assign(value); } inline void writeRequest::set_file_id(const char* value, size_t size) { - _set_bit(1); - if (file_id_ == &_default_file_id_) { + set_has_file_id(); + if (file_id_ == &::google::protobuf::internal::kEmptyString) { file_id_ = new ::std::string; } file_id_->assign(reinterpret_cast(value), size); } inline ::std::string* writeRequest::mutable_file_id() { - _set_bit(1); - if (file_id_ == &_default_file_id_) { + set_has_file_id(); + if (file_id_ == &::google::protobuf::internal::kEmptyString) { file_id_ = new ::std::string; } return file_id_; } +inline ::std::string* writeRequest::release_file_id() { + clear_has_file_id(); + if (file_id_ == &::google::protobuf::internal::kEmptyString) { + return NULL; + } else { + ::std::string* temp = file_id_; + file_id_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + return temp; + } +} +inline void writeRequest::set_allocated_file_id(::std::string* file_id) { + if (file_id_ != &::google::protobuf::internal::kEmptyString) { + delete file_id_; + } + if (file_id) { + set_has_file_id(); + file_id_ = file_id; + } else { + clear_has_file_id(); + file_id_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + } +} // required fixed64 object_number = 3; inline bool writeRequest::has_object_number() const { - return _has_bit(2); + return (_has_bits_[0] & 0x00000004u) != 0; +} +inline void writeRequest::set_has_object_number() { + _has_bits_[0] |= 0x00000004u; +} +inline void writeRequest::clear_has_object_number() { + _has_bits_[0] &= ~0x00000004u; } inline void writeRequest::clear_object_number() { object_number_ = GOOGLE_ULONGLONG(0); - _clear_bit(2); + clear_has_object_number(); } inline ::google::protobuf::uint64 writeRequest::object_number() const { return object_number_; } inline void writeRequest::set_object_number(::google::protobuf::uint64 value) { - _set_bit(2); + set_has_object_number(); object_number_ = value; } // required fixed64 object_version = 4; inline bool writeRequest::has_object_version() const { - return _has_bit(3); + return (_has_bits_[0] & 0x00000008u) != 0; +} +inline void writeRequest::set_has_object_version() { + _has_bits_[0] |= 0x00000008u; +} +inline void writeRequest::clear_has_object_version() { + _has_bits_[0] &= ~0x00000008u; } inline void writeRequest::clear_object_version() { object_version_ = GOOGLE_ULONGLONG(0); - _clear_bit(3); + clear_has_object_version(); } inline ::google::protobuf::uint64 writeRequest::object_version() const { return object_version_; } inline void writeRequest::set_object_version(::google::protobuf::uint64 value) { - _set_bit(3); + set_has_object_version(); object_version_ = value; } // required fixed32 offset = 5; inline bool writeRequest::has_offset() const { - return _has_bit(4); + return (_has_bits_[0] & 0x00000010u) != 0; +} +inline void writeRequest::set_has_offset() { + _has_bits_[0] |= 0x00000010u; +} +inline void writeRequest::clear_has_offset() { + _has_bits_[0] &= ~0x00000010u; } inline void writeRequest::clear_offset() { offset_ = 0u; - _clear_bit(4); + clear_has_offset(); } inline ::google::protobuf::uint32 writeRequest::offset() const { return offset_; } inline void writeRequest::set_offset(::google::protobuf::uint32 value) { - _set_bit(4); + set_has_offset(); offset_ = value; } // required fixed64 lease_timeout = 6; inline bool writeRequest::has_lease_timeout() const { - return _has_bit(5); + return (_has_bits_[0] & 0x00000020u) != 0; +} +inline void writeRequest::set_has_lease_timeout() { + _has_bits_[0] |= 0x00000020u; +} +inline void writeRequest::clear_has_lease_timeout() { + _has_bits_[0] &= ~0x00000020u; } inline void writeRequest::clear_lease_timeout() { lease_timeout_ = GOOGLE_ULONGLONG(0); - _clear_bit(5); + clear_has_lease_timeout(); } inline ::google::protobuf::uint64 writeRequest::lease_timeout() const { return lease_timeout_; } inline void writeRequest::set_lease_timeout(::google::protobuf::uint64 value) { - _set_bit(5); + set_has_lease_timeout(); lease_timeout_ = value; } // required .xtreemfs.pbrpc.ObjectData object_data = 7; inline bool writeRequest::has_object_data() const { - return _has_bit(6); + return (_has_bits_[0] & 0x00000040u) != 0; +} +inline void writeRequest::set_has_object_data() { + _has_bits_[0] |= 0x00000040u; +} +inline void writeRequest::clear_has_object_data() { + _has_bits_[0] &= ~0x00000040u; } inline void writeRequest::clear_object_data() { if (object_data_ != NULL) object_data_->::xtreemfs::pbrpc::ObjectData::Clear(); - _clear_bit(6); + clear_has_object_data(); } inline const ::xtreemfs::pbrpc::ObjectData& writeRequest::object_data() const { return object_data_ != NULL ? *object_data_ : *default_instance_->object_data_; } inline ::xtreemfs::pbrpc::ObjectData* writeRequest::mutable_object_data() { - _set_bit(6); + set_has_object_data(); if (object_data_ == NULL) object_data_ = new ::xtreemfs::pbrpc::ObjectData; return object_data_; } +inline ::xtreemfs::pbrpc::ObjectData* writeRequest::release_object_data() { + clear_has_object_data(); + ::xtreemfs::pbrpc::ObjectData* temp = object_data_; + object_data_ = NULL; + return temp; +} +inline void writeRequest::set_allocated_object_data(::xtreemfs::pbrpc::ObjectData* object_data) { + delete object_data_; + object_data_ = object_data; + if (object_data) { + set_has_object_data(); + } else { + clear_has_object_data(); + } +} // ------------------------------------------------------------------- @@ -5564,91 +5863,137 @@ inline ::xtreemfs::pbrpc::ObjectData* writeRequest::mutable_object_data() { // required string file_id = 1; inline bool xtreemfs_broadcast_gmaxRequest::has_file_id() const { - return _has_bit(0); + return (_has_bits_[0] & 0x00000001u) != 0; +} +inline void xtreemfs_broadcast_gmaxRequest::set_has_file_id() { + _has_bits_[0] |= 0x00000001u; +} +inline void xtreemfs_broadcast_gmaxRequest::clear_has_file_id() { + _has_bits_[0] &= ~0x00000001u; } inline void xtreemfs_broadcast_gmaxRequest::clear_file_id() { - if (file_id_ != &_default_file_id_) { + if (file_id_ != &::google::protobuf::internal::kEmptyString) { file_id_->clear(); } - _clear_bit(0); + clear_has_file_id(); } inline const ::std::string& xtreemfs_broadcast_gmaxRequest::file_id() const { return *file_id_; } inline void xtreemfs_broadcast_gmaxRequest::set_file_id(const ::std::string& value) { - _set_bit(0); - if (file_id_ == &_default_file_id_) { + set_has_file_id(); + if (file_id_ == &::google::protobuf::internal::kEmptyString) { file_id_ = new ::std::string; } file_id_->assign(value); } inline void xtreemfs_broadcast_gmaxRequest::set_file_id(const char* value) { - _set_bit(0); - if (file_id_ == &_default_file_id_) { + set_has_file_id(); + if (file_id_ == &::google::protobuf::internal::kEmptyString) { file_id_ = new ::std::string; } file_id_->assign(value); } inline void xtreemfs_broadcast_gmaxRequest::set_file_id(const char* value, size_t size) { - _set_bit(0); - if (file_id_ == &_default_file_id_) { + set_has_file_id(); + if (file_id_ == &::google::protobuf::internal::kEmptyString) { file_id_ = new ::std::string; } file_id_->assign(reinterpret_cast(value), size); } inline ::std::string* xtreemfs_broadcast_gmaxRequest::mutable_file_id() { - _set_bit(0); - if (file_id_ == &_default_file_id_) { + set_has_file_id(); + if (file_id_ == &::google::protobuf::internal::kEmptyString) { file_id_ = new ::std::string; } return file_id_; } +inline ::std::string* xtreemfs_broadcast_gmaxRequest::release_file_id() { + clear_has_file_id(); + if (file_id_ == &::google::protobuf::internal::kEmptyString) { + return NULL; + } else { + ::std::string* temp = file_id_; + file_id_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + return temp; + } +} +inline void xtreemfs_broadcast_gmaxRequest::set_allocated_file_id(::std::string* file_id) { + if (file_id_ != &::google::protobuf::internal::kEmptyString) { + delete file_id_; + } + if (file_id) { + set_has_file_id(); + file_id_ = file_id; + } else { + clear_has_file_id(); + file_id_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + } +} // required fixed64 truncate_epoch = 2; inline bool xtreemfs_broadcast_gmaxRequest::has_truncate_epoch() const { - return _has_bit(1); + return (_has_bits_[0] & 0x00000002u) != 0; +} +inline void xtreemfs_broadcast_gmaxRequest::set_has_truncate_epoch() { + _has_bits_[0] |= 0x00000002u; +} +inline void xtreemfs_broadcast_gmaxRequest::clear_has_truncate_epoch() { + _has_bits_[0] &= ~0x00000002u; } inline void xtreemfs_broadcast_gmaxRequest::clear_truncate_epoch() { truncate_epoch_ = GOOGLE_ULONGLONG(0); - _clear_bit(1); + clear_has_truncate_epoch(); } inline ::google::protobuf::uint64 xtreemfs_broadcast_gmaxRequest::truncate_epoch() const { return truncate_epoch_; } inline void xtreemfs_broadcast_gmaxRequest::set_truncate_epoch(::google::protobuf::uint64 value) { - _set_bit(1); + set_has_truncate_epoch(); truncate_epoch_ = value; } // required fixed64 last_object = 3; inline bool xtreemfs_broadcast_gmaxRequest::has_last_object() const { - return _has_bit(2); + return (_has_bits_[0] & 0x00000004u) != 0; +} +inline void xtreemfs_broadcast_gmaxRequest::set_has_last_object() { + _has_bits_[0] |= 0x00000004u; +} +inline void xtreemfs_broadcast_gmaxRequest::clear_has_last_object() { + _has_bits_[0] &= ~0x00000004u; } inline void xtreemfs_broadcast_gmaxRequest::clear_last_object() { last_object_ = GOOGLE_ULONGLONG(0); - _clear_bit(2); + clear_has_last_object(); } inline ::google::protobuf::uint64 xtreemfs_broadcast_gmaxRequest::last_object() const { return last_object_; } inline void xtreemfs_broadcast_gmaxRequest::set_last_object(::google::protobuf::uint64 value) { - _set_bit(2); + set_has_last_object(); last_object_ = value; } // required fixed64 file_size = 4; inline bool xtreemfs_broadcast_gmaxRequest::has_file_size() const { - return _has_bit(3); + return (_has_bits_[0] & 0x00000008u) != 0; +} +inline void xtreemfs_broadcast_gmaxRequest::set_has_file_size() { + _has_bits_[0] |= 0x00000008u; +} +inline void xtreemfs_broadcast_gmaxRequest::clear_has_file_size() { + _has_bits_[0] &= ~0x00000008u; } inline void xtreemfs_broadcast_gmaxRequest::clear_file_size() { file_size_ = GOOGLE_ULONGLONG(0); - _clear_bit(3); + clear_has_file_size(); } inline ::google::protobuf::uint64 xtreemfs_broadcast_gmaxRequest::file_size() const { return file_size_; } inline void xtreemfs_broadcast_gmaxRequest::set_file_size(::google::protobuf::uint64 value) { - _set_bit(3); + set_has_file_size(); file_size_ = value; } @@ -5658,92 +6003,153 @@ inline void xtreemfs_broadcast_gmaxRequest::set_file_size(::google::protobuf::ui // required .xtreemfs.pbrpc.FileCredentials file_credentials = 1; inline bool xtreemfs_check_objectRequest::has_file_credentials() const { - return _has_bit(0); + return (_has_bits_[0] & 0x00000001u) != 0; +} +inline void xtreemfs_check_objectRequest::set_has_file_credentials() { + _has_bits_[0] |= 0x00000001u; +} +inline void xtreemfs_check_objectRequest::clear_has_file_credentials() { + _has_bits_[0] &= ~0x00000001u; } inline void xtreemfs_check_objectRequest::clear_file_credentials() { if (file_credentials_ != NULL) file_credentials_->::xtreemfs::pbrpc::FileCredentials::Clear(); - _clear_bit(0); + clear_has_file_credentials(); } inline const ::xtreemfs::pbrpc::FileCredentials& xtreemfs_check_objectRequest::file_credentials() const { return file_credentials_ != NULL ? *file_credentials_ : *default_instance_->file_credentials_; } inline ::xtreemfs::pbrpc::FileCredentials* xtreemfs_check_objectRequest::mutable_file_credentials() { - _set_bit(0); + set_has_file_credentials(); if (file_credentials_ == NULL) file_credentials_ = new ::xtreemfs::pbrpc::FileCredentials; return file_credentials_; } +inline ::xtreemfs::pbrpc::FileCredentials* xtreemfs_check_objectRequest::release_file_credentials() { + clear_has_file_credentials(); + ::xtreemfs::pbrpc::FileCredentials* temp = file_credentials_; + file_credentials_ = NULL; + return temp; +} +inline void xtreemfs_check_objectRequest::set_allocated_file_credentials(::xtreemfs::pbrpc::FileCredentials* file_credentials) { + delete file_credentials_; + file_credentials_ = file_credentials; + if (file_credentials) { + set_has_file_credentials(); + } else { + clear_has_file_credentials(); + } +} // required string file_id = 2; inline bool xtreemfs_check_objectRequest::has_file_id() const { - return _has_bit(1); + return (_has_bits_[0] & 0x00000002u) != 0; +} +inline void xtreemfs_check_objectRequest::set_has_file_id() { + _has_bits_[0] |= 0x00000002u; +} +inline void xtreemfs_check_objectRequest::clear_has_file_id() { + _has_bits_[0] &= ~0x00000002u; } inline void xtreemfs_check_objectRequest::clear_file_id() { - if (file_id_ != &_default_file_id_) { + if (file_id_ != &::google::protobuf::internal::kEmptyString) { file_id_->clear(); } - _clear_bit(1); + clear_has_file_id(); } inline const ::std::string& xtreemfs_check_objectRequest::file_id() const { return *file_id_; } inline void xtreemfs_check_objectRequest::set_file_id(const ::std::string& value) { - _set_bit(1); - if (file_id_ == &_default_file_id_) { + set_has_file_id(); + if (file_id_ == &::google::protobuf::internal::kEmptyString) { file_id_ = new ::std::string; } file_id_->assign(value); } inline void xtreemfs_check_objectRequest::set_file_id(const char* value) { - _set_bit(1); - if (file_id_ == &_default_file_id_) { + set_has_file_id(); + if (file_id_ == &::google::protobuf::internal::kEmptyString) { file_id_ = new ::std::string; } file_id_->assign(value); } inline void xtreemfs_check_objectRequest::set_file_id(const char* value, size_t size) { - _set_bit(1); - if (file_id_ == &_default_file_id_) { + set_has_file_id(); + if (file_id_ == &::google::protobuf::internal::kEmptyString) { file_id_ = new ::std::string; } file_id_->assign(reinterpret_cast(value), size); } inline ::std::string* xtreemfs_check_objectRequest::mutable_file_id() { - _set_bit(1); - if (file_id_ == &_default_file_id_) { + set_has_file_id(); + if (file_id_ == &::google::protobuf::internal::kEmptyString) { file_id_ = new ::std::string; } return file_id_; } +inline ::std::string* xtreemfs_check_objectRequest::release_file_id() { + clear_has_file_id(); + if (file_id_ == &::google::protobuf::internal::kEmptyString) { + return NULL; + } else { + ::std::string* temp = file_id_; + file_id_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + return temp; + } +} +inline void xtreemfs_check_objectRequest::set_allocated_file_id(::std::string* file_id) { + if (file_id_ != &::google::protobuf::internal::kEmptyString) { + delete file_id_; + } + if (file_id) { + set_has_file_id(); + file_id_ = file_id; + } else { + clear_has_file_id(); + file_id_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + } +} // required fixed64 object_number = 3; inline bool xtreemfs_check_objectRequest::has_object_number() const { - return _has_bit(2); + return (_has_bits_[0] & 0x00000004u) != 0; +} +inline void xtreemfs_check_objectRequest::set_has_object_number() { + _has_bits_[0] |= 0x00000004u; +} +inline void xtreemfs_check_objectRequest::clear_has_object_number() { + _has_bits_[0] &= ~0x00000004u; } inline void xtreemfs_check_objectRequest::clear_object_number() { object_number_ = GOOGLE_ULONGLONG(0); - _clear_bit(2); + clear_has_object_number(); } inline ::google::protobuf::uint64 xtreemfs_check_objectRequest::object_number() const { return object_number_; } inline void xtreemfs_check_objectRequest::set_object_number(::google::protobuf::uint64 value) { - _set_bit(2); + set_has_object_number(); object_number_ = value; } // required fixed64 object_version = 4; inline bool xtreemfs_check_objectRequest::has_object_version() const { - return _has_bit(3); + return (_has_bits_[0] & 0x00000008u) != 0; +} +inline void xtreemfs_check_objectRequest::set_has_object_version() { + _has_bits_[0] |= 0x00000008u; +} +inline void xtreemfs_check_objectRequest::clear_has_object_version() { + _has_bits_[0] &= ~0x00000008u; } inline void xtreemfs_check_objectRequest::clear_object_version() { object_version_ = GOOGLE_ULONGLONG(0); - _clear_bit(3); + clear_has_object_version(); } inline ::google::protobuf::uint64 xtreemfs_check_objectRequest::object_version() const { return object_version_; } inline void xtreemfs_check_objectRequest::set_object_version(::google::protobuf::uint64 value) { - _set_bit(3); + set_has_object_version(); object_version_ = value; } @@ -5801,17 +6207,23 @@ xtreemfs_cleanup_get_resultsResponse::mutable_results() { // required bool is_running = 1; inline bool xtreemfs_cleanup_is_runningResponse::has_is_running() const { - return _has_bit(0); + return (_has_bits_[0] & 0x00000001u) != 0; +} +inline void xtreemfs_cleanup_is_runningResponse::set_has_is_running() { + _has_bits_[0] |= 0x00000001u; +} +inline void xtreemfs_cleanup_is_runningResponse::clear_has_is_running() { + _has_bits_[0] &= ~0x00000001u; } inline void xtreemfs_cleanup_is_runningResponse::clear_is_running() { is_running_ = false; - _clear_bit(0); + clear_has_is_running(); } inline bool xtreemfs_cleanup_is_runningResponse::is_running() const { return is_running_; } inline void xtreemfs_cleanup_is_runningResponse::set_is_running(bool value) { - _set_bit(0); + set_has_is_running(); is_running_ = value; } @@ -5821,49 +6233,67 @@ inline void xtreemfs_cleanup_is_runningResponse::set_is_running(bool value) { // required bool remove_zombies = 1; inline bool xtreemfs_cleanup_startRequest::has_remove_zombies() const { - return _has_bit(0); + return (_has_bits_[0] & 0x00000001u) != 0; +} +inline void xtreemfs_cleanup_startRequest::set_has_remove_zombies() { + _has_bits_[0] |= 0x00000001u; +} +inline void xtreemfs_cleanup_startRequest::clear_has_remove_zombies() { + _has_bits_[0] &= ~0x00000001u; } inline void xtreemfs_cleanup_startRequest::clear_remove_zombies() { remove_zombies_ = false; - _clear_bit(0); + clear_has_remove_zombies(); } inline bool xtreemfs_cleanup_startRequest::remove_zombies() const { return remove_zombies_; } inline void xtreemfs_cleanup_startRequest::set_remove_zombies(bool value) { - _set_bit(0); + set_has_remove_zombies(); remove_zombies_ = value; } // required bool remove_unavail_volume = 2; inline bool xtreemfs_cleanup_startRequest::has_remove_unavail_volume() const { - return _has_bit(1); + return (_has_bits_[0] & 0x00000002u) != 0; +} +inline void xtreemfs_cleanup_startRequest::set_has_remove_unavail_volume() { + _has_bits_[0] |= 0x00000002u; +} +inline void xtreemfs_cleanup_startRequest::clear_has_remove_unavail_volume() { + _has_bits_[0] &= ~0x00000002u; } inline void xtreemfs_cleanup_startRequest::clear_remove_unavail_volume() { remove_unavail_volume_ = false; - _clear_bit(1); + clear_has_remove_unavail_volume(); } inline bool xtreemfs_cleanup_startRequest::remove_unavail_volume() const { return remove_unavail_volume_; } inline void xtreemfs_cleanup_startRequest::set_remove_unavail_volume(bool value) { - _set_bit(1); + set_has_remove_unavail_volume(); remove_unavail_volume_ = value; } // required bool lost_and_found = 3; inline bool xtreemfs_cleanup_startRequest::has_lost_and_found() const { - return _has_bit(2); + return (_has_bits_[0] & 0x00000004u) != 0; +} +inline void xtreemfs_cleanup_startRequest::set_has_lost_and_found() { + _has_bits_[0] |= 0x00000004u; +} +inline void xtreemfs_cleanup_startRequest::clear_has_lost_and_found() { + _has_bits_[0] &= ~0x00000004u; } inline void xtreemfs_cleanup_startRequest::clear_lost_and_found() { lost_and_found_ = false; - _clear_bit(2); + clear_has_lost_and_found(); } inline bool xtreemfs_cleanup_startRequest::lost_and_found() const { return lost_and_found_; } inline void xtreemfs_cleanup_startRequest::set_lost_and_found(bool value) { - _set_bit(2); + set_has_lost_and_found(); lost_and_found_ = value; } @@ -5873,138 +6303,383 @@ inline void xtreemfs_cleanup_startRequest::set_lost_and_found(bool value) { // required string status = 1; inline bool xtreemfs_cleanup_statusResponse::has_status() const { - return _has_bit(0); + return (_has_bits_[0] & 0x00000001u) != 0; +} +inline void xtreemfs_cleanup_statusResponse::set_has_status() { + _has_bits_[0] |= 0x00000001u; +} +inline void xtreemfs_cleanup_statusResponse::clear_has_status() { + _has_bits_[0] &= ~0x00000001u; +} +inline void xtreemfs_cleanup_statusResponse::clear_status() { + if (status_ != &::google::protobuf::internal::kEmptyString) { + status_->clear(); + } + clear_has_status(); +} +inline const ::std::string& xtreemfs_cleanup_statusResponse::status() const { + return *status_; +} +inline void xtreemfs_cleanup_statusResponse::set_status(const ::std::string& value) { + set_has_status(); + if (status_ == &::google::protobuf::internal::kEmptyString) { + status_ = new ::std::string; + } + status_->assign(value); +} +inline void xtreemfs_cleanup_statusResponse::set_status(const char* value) { + set_has_status(); + if (status_ == &::google::protobuf::internal::kEmptyString) { + status_ = new ::std::string; + } + status_->assign(value); +} +inline void xtreemfs_cleanup_statusResponse::set_status(const char* value, size_t size) { + set_has_status(); + if (status_ == &::google::protobuf::internal::kEmptyString) { + status_ = new ::std::string; + } + status_->assign(reinterpret_cast(value), size); +} +inline ::std::string* xtreemfs_cleanup_statusResponse::mutable_status() { + set_has_status(); + if (status_ == &::google::protobuf::internal::kEmptyString) { + status_ = new ::std::string; + } + return status_; +} +inline ::std::string* xtreemfs_cleanup_statusResponse::release_status() { + clear_has_status(); + if (status_ == &::google::protobuf::internal::kEmptyString) { + return NULL; + } else { + ::std::string* temp = status_; + status_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + return temp; + } +} +inline void xtreemfs_cleanup_statusResponse::set_allocated_status(::std::string* status) { + if (status_ != &::google::protobuf::internal::kEmptyString) { + delete status_; + } + if (status) { + set_has_status(); + status_ = status; + } else { + clear_has_status(); + status_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + } +} + +// ------------------------------------------------------------------- + +// xtreemfs_rwr_fetchRequest + +// required .xtreemfs.pbrpc.FileCredentials file_credentials = 1; +inline bool xtreemfs_rwr_fetchRequest::has_file_credentials() const { + return (_has_bits_[0] & 0x00000001u) != 0; +} +inline void xtreemfs_rwr_fetchRequest::set_has_file_credentials() { + _has_bits_[0] |= 0x00000001u; +} +inline void xtreemfs_rwr_fetchRequest::clear_has_file_credentials() { + _has_bits_[0] &= ~0x00000001u; +} +inline void xtreemfs_rwr_fetchRequest::clear_file_credentials() { + if (file_credentials_ != NULL) file_credentials_->::xtreemfs::pbrpc::FileCredentials::Clear(); + clear_has_file_credentials(); +} +inline const ::xtreemfs::pbrpc::FileCredentials& xtreemfs_rwr_fetchRequest::file_credentials() const { + return file_credentials_ != NULL ? *file_credentials_ : *default_instance_->file_credentials_; +} +inline ::xtreemfs::pbrpc::FileCredentials* xtreemfs_rwr_fetchRequest::mutable_file_credentials() { + set_has_file_credentials(); + if (file_credentials_ == NULL) file_credentials_ = new ::xtreemfs::pbrpc::FileCredentials; + return file_credentials_; +} +inline ::xtreemfs::pbrpc::FileCredentials* xtreemfs_rwr_fetchRequest::release_file_credentials() { + clear_has_file_credentials(); + ::xtreemfs::pbrpc::FileCredentials* temp = file_credentials_; + file_credentials_ = NULL; + return temp; +} +inline void xtreemfs_rwr_fetchRequest::set_allocated_file_credentials(::xtreemfs::pbrpc::FileCredentials* file_credentials) { + delete file_credentials_; + file_credentials_ = file_credentials; + if (file_credentials) { + set_has_file_credentials(); + } else { + clear_has_file_credentials(); + } +} + +// required string file_id = 2; +inline bool xtreemfs_rwr_fetchRequest::has_file_id() const { + return (_has_bits_[0] & 0x00000002u) != 0; +} +inline void xtreemfs_rwr_fetchRequest::set_has_file_id() { + _has_bits_[0] |= 0x00000002u; +} +inline void xtreemfs_rwr_fetchRequest::clear_has_file_id() { + _has_bits_[0] &= ~0x00000002u; +} +inline void xtreemfs_rwr_fetchRequest::clear_file_id() { + if (file_id_ != &::google::protobuf::internal::kEmptyString) { + file_id_->clear(); + } + clear_has_file_id(); +} +inline const ::std::string& xtreemfs_rwr_fetchRequest::file_id() const { + return *file_id_; +} +inline void xtreemfs_rwr_fetchRequest::set_file_id(const ::std::string& value) { + set_has_file_id(); + if (file_id_ == &::google::protobuf::internal::kEmptyString) { + file_id_ = new ::std::string; + } + file_id_->assign(value); +} +inline void xtreemfs_rwr_fetchRequest::set_file_id(const char* value) { + set_has_file_id(); + if (file_id_ == &::google::protobuf::internal::kEmptyString) { + file_id_ = new ::std::string; + } + file_id_->assign(value); +} +inline void xtreemfs_rwr_fetchRequest::set_file_id(const char* value, size_t size) { + set_has_file_id(); + if (file_id_ == &::google::protobuf::internal::kEmptyString) { + file_id_ = new ::std::string; + } + file_id_->assign(reinterpret_cast(value), size); +} +inline ::std::string* xtreemfs_rwr_fetchRequest::mutable_file_id() { + set_has_file_id(); + if (file_id_ == &::google::protobuf::internal::kEmptyString) { + file_id_ = new ::std::string; + } + return file_id_; +} +inline ::std::string* xtreemfs_rwr_fetchRequest::release_file_id() { + clear_has_file_id(); + if (file_id_ == &::google::protobuf::internal::kEmptyString) { + return NULL; + } else { + ::std::string* temp = file_id_; + file_id_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + return temp; + } +} +inline void xtreemfs_rwr_fetchRequest::set_allocated_file_id(::std::string* file_id) { + if (file_id_ != &::google::protobuf::internal::kEmptyString) { + delete file_id_; + } + if (file_id) { + set_has_file_id(); + file_id_ = file_id; + } else { + clear_has_file_id(); + file_id_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + } +} + +// required fixed64 object_number = 3; +inline bool xtreemfs_rwr_fetchRequest::has_object_number() const { + return (_has_bits_[0] & 0x00000004u) != 0; +} +inline void xtreemfs_rwr_fetchRequest::set_has_object_number() { + _has_bits_[0] |= 0x00000004u; +} +inline void xtreemfs_rwr_fetchRequest::clear_has_object_number() { + _has_bits_[0] &= ~0x00000004u; +} +inline void xtreemfs_rwr_fetchRequest::clear_object_number() { + object_number_ = GOOGLE_ULONGLONG(0); + clear_has_object_number(); +} +inline ::google::protobuf::uint64 xtreemfs_rwr_fetchRequest::object_number() const { + return object_number_; } -inline void xtreemfs_cleanup_statusResponse::clear_status() { - if (status_ != &_default_status_) { - status_->clear(); - } - _clear_bit(0); +inline void xtreemfs_rwr_fetchRequest::set_object_number(::google::protobuf::uint64 value) { + set_has_object_number(); + object_number_ = value; } -inline const ::std::string& xtreemfs_cleanup_statusResponse::status() const { - return *status_; + +// required fixed64 object_version = 4; +inline bool xtreemfs_rwr_fetchRequest::has_object_version() const { + return (_has_bits_[0] & 0x00000008u) != 0; } -inline void xtreemfs_cleanup_statusResponse::set_status(const ::std::string& value) { - _set_bit(0); - if (status_ == &_default_status_) { - status_ = new ::std::string; - } - status_->assign(value); +inline void xtreemfs_rwr_fetchRequest::set_has_object_version() { + _has_bits_[0] |= 0x00000008u; } -inline void xtreemfs_cleanup_statusResponse::set_status(const char* value) { - _set_bit(0); - if (status_ == &_default_status_) { - status_ = new ::std::string; - } - status_->assign(value); +inline void xtreemfs_rwr_fetchRequest::clear_has_object_version() { + _has_bits_[0] &= ~0x00000008u; } -inline void xtreemfs_cleanup_statusResponse::set_status(const char* value, size_t size) { - _set_bit(0); - if (status_ == &_default_status_) { - status_ = new ::std::string; - } - status_->assign(reinterpret_cast(value), size); +inline void xtreemfs_rwr_fetchRequest::clear_object_version() { + object_version_ = GOOGLE_ULONGLONG(0); + clear_has_object_version(); } -inline ::std::string* xtreemfs_cleanup_statusResponse::mutable_status() { - _set_bit(0); - if (status_ == &_default_status_) { - status_ = new ::std::string; - } - return status_; +inline ::google::protobuf::uint64 xtreemfs_rwr_fetchRequest::object_version() const { + return object_version_; +} +inline void xtreemfs_rwr_fetchRequest::set_object_version(::google::protobuf::uint64 value) { + set_has_object_version(); + object_version_ = value; } // ------------------------------------------------------------------- -// xtreemfs_rwr_fetchRequest +// xtreemfs_repair_objectRequest // required .xtreemfs.pbrpc.FileCredentials file_credentials = 1; -inline bool xtreemfs_rwr_fetchRequest::has_file_credentials() const { - return _has_bit(0); +inline bool xtreemfs_repair_objectRequest::has_file_credentials() const { + return (_has_bits_[0] & 0x00000001u) != 0; } -inline void xtreemfs_rwr_fetchRequest::clear_file_credentials() { +inline void xtreemfs_repair_objectRequest::set_has_file_credentials() { + _has_bits_[0] |= 0x00000001u; +} +inline void xtreemfs_repair_objectRequest::clear_has_file_credentials() { + _has_bits_[0] &= ~0x00000001u; +} +inline void xtreemfs_repair_objectRequest::clear_file_credentials() { if (file_credentials_ != NULL) file_credentials_->::xtreemfs::pbrpc::FileCredentials::Clear(); - _clear_bit(0); + clear_has_file_credentials(); } -inline const ::xtreemfs::pbrpc::FileCredentials& xtreemfs_rwr_fetchRequest::file_credentials() const { +inline const ::xtreemfs::pbrpc::FileCredentials& xtreemfs_repair_objectRequest::file_credentials() const { return file_credentials_ != NULL ? *file_credentials_ : *default_instance_->file_credentials_; } -inline ::xtreemfs::pbrpc::FileCredentials* xtreemfs_rwr_fetchRequest::mutable_file_credentials() { - _set_bit(0); +inline ::xtreemfs::pbrpc::FileCredentials* xtreemfs_repair_objectRequest::mutable_file_credentials() { + set_has_file_credentials(); if (file_credentials_ == NULL) file_credentials_ = new ::xtreemfs::pbrpc::FileCredentials; return file_credentials_; } +inline ::xtreemfs::pbrpc::FileCredentials* xtreemfs_repair_objectRequest::release_file_credentials() { + clear_has_file_credentials(); + ::xtreemfs::pbrpc::FileCredentials* temp = file_credentials_; + file_credentials_ = NULL; + return temp; +} +inline void xtreemfs_repair_objectRequest::set_allocated_file_credentials(::xtreemfs::pbrpc::FileCredentials* file_credentials) { + delete file_credentials_; + file_credentials_ = file_credentials; + if (file_credentials) { + set_has_file_credentials(); + } else { + clear_has_file_credentials(); + } +} // required string file_id = 2; -inline bool xtreemfs_rwr_fetchRequest::has_file_id() const { - return _has_bit(1); +inline bool xtreemfs_repair_objectRequest::has_file_id() const { + return (_has_bits_[0] & 0x00000002u) != 0; } -inline void xtreemfs_rwr_fetchRequest::clear_file_id() { - if (file_id_ != &_default_file_id_) { +inline void xtreemfs_repair_objectRequest::set_has_file_id() { + _has_bits_[0] |= 0x00000002u; +} +inline void xtreemfs_repair_objectRequest::clear_has_file_id() { + _has_bits_[0] &= ~0x00000002u; +} +inline void xtreemfs_repair_objectRequest::clear_file_id() { + if (file_id_ != &::google::protobuf::internal::kEmptyString) { file_id_->clear(); } - _clear_bit(1); + clear_has_file_id(); } -inline const ::std::string& xtreemfs_rwr_fetchRequest::file_id() const { +inline const ::std::string& xtreemfs_repair_objectRequest::file_id() const { return *file_id_; } -inline void xtreemfs_rwr_fetchRequest::set_file_id(const ::std::string& value) { - _set_bit(1); - if (file_id_ == &_default_file_id_) { +inline void xtreemfs_repair_objectRequest::set_file_id(const ::std::string& value) { + set_has_file_id(); + if (file_id_ == &::google::protobuf::internal::kEmptyString) { file_id_ = new ::std::string; } file_id_->assign(value); } -inline void xtreemfs_rwr_fetchRequest::set_file_id(const char* value) { - _set_bit(1); - if (file_id_ == &_default_file_id_) { +inline void xtreemfs_repair_objectRequest::set_file_id(const char* value) { + set_has_file_id(); + if (file_id_ == &::google::protobuf::internal::kEmptyString) { file_id_ = new ::std::string; } file_id_->assign(value); } -inline void xtreemfs_rwr_fetchRequest::set_file_id(const char* value, size_t size) { - _set_bit(1); - if (file_id_ == &_default_file_id_) { +inline void xtreemfs_repair_objectRequest::set_file_id(const char* value, size_t size) { + set_has_file_id(); + if (file_id_ == &::google::protobuf::internal::kEmptyString) { file_id_ = new ::std::string; } file_id_->assign(reinterpret_cast(value), size); } -inline ::std::string* xtreemfs_rwr_fetchRequest::mutable_file_id() { - _set_bit(1); - if (file_id_ == &_default_file_id_) { +inline ::std::string* xtreemfs_repair_objectRequest::mutable_file_id() { + set_has_file_id(); + if (file_id_ == &::google::protobuf::internal::kEmptyString) { file_id_ = new ::std::string; } return file_id_; } +inline ::std::string* xtreemfs_repair_objectRequest::release_file_id() { + clear_has_file_id(); + if (file_id_ == &::google::protobuf::internal::kEmptyString) { + return NULL; + } else { + ::std::string* temp = file_id_; + file_id_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + return temp; + } +} +inline void xtreemfs_repair_objectRequest::set_allocated_file_id(::std::string* file_id) { + if (file_id_ != &::google::protobuf::internal::kEmptyString) { + delete file_id_; + } + if (file_id) { + set_has_file_id(); + file_id_ = file_id; + } else { + clear_has_file_id(); + file_id_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + } +} // required fixed64 object_number = 3; -inline bool xtreemfs_rwr_fetchRequest::has_object_number() const { - return _has_bit(2); +inline bool xtreemfs_repair_objectRequest::has_object_number() const { + return (_has_bits_[0] & 0x00000004u) != 0; } -inline void xtreemfs_rwr_fetchRequest::clear_object_number() { +inline void xtreemfs_repair_objectRequest::set_has_object_number() { + _has_bits_[0] |= 0x00000004u; +} +inline void xtreemfs_repair_objectRequest::clear_has_object_number() { + _has_bits_[0] &= ~0x00000004u; +} +inline void xtreemfs_repair_objectRequest::clear_object_number() { object_number_ = GOOGLE_ULONGLONG(0); - _clear_bit(2); + clear_has_object_number(); } -inline ::google::protobuf::uint64 xtreemfs_rwr_fetchRequest::object_number() const { +inline ::google::protobuf::uint64 xtreemfs_repair_objectRequest::object_number() const { return object_number_; } -inline void xtreemfs_rwr_fetchRequest::set_object_number(::google::protobuf::uint64 value) { - _set_bit(2); +inline void xtreemfs_repair_objectRequest::set_object_number(::google::protobuf::uint64 value) { + set_has_object_number(); object_number_ = value; } // required fixed64 object_version = 4; -inline bool xtreemfs_rwr_fetchRequest::has_object_version() const { - return _has_bit(3); +inline bool xtreemfs_repair_objectRequest::has_object_version() const { + return (_has_bits_[0] & 0x00000008u) != 0; } -inline void xtreemfs_rwr_fetchRequest::clear_object_version() { +inline void xtreemfs_repair_objectRequest::set_has_object_version() { + _has_bits_[0] |= 0x00000008u; +} +inline void xtreemfs_repair_objectRequest::clear_has_object_version() { + _has_bits_[0] &= ~0x00000008u; +} +inline void xtreemfs_repair_objectRequest::clear_object_version() { object_version_ = GOOGLE_ULONGLONG(0); - _clear_bit(3); + clear_has_object_version(); } -inline ::google::protobuf::uint64 xtreemfs_rwr_fetchRequest::object_version() const { +inline ::google::protobuf::uint64 xtreemfs_repair_objectRequest::object_version() const { return object_version_; } -inline void xtreemfs_rwr_fetchRequest::set_object_version(::google::protobuf::uint64 value) { - _set_bit(3); +inline void xtreemfs_repair_objectRequest::set_object_version(::google::protobuf::uint64 value) { + set_has_object_version(); object_version_ = value; } @@ -6014,59 +6689,93 @@ inline void xtreemfs_rwr_fetchRequest::set_object_version(::google::protobuf::ui // required string sender_hostname = 1; inline bool xtreemfs_rwr_flease_msgRequest::has_sender_hostname() const { - return _has_bit(0); + return (_has_bits_[0] & 0x00000001u) != 0; +} +inline void xtreemfs_rwr_flease_msgRequest::set_has_sender_hostname() { + _has_bits_[0] |= 0x00000001u; +} +inline void xtreemfs_rwr_flease_msgRequest::clear_has_sender_hostname() { + _has_bits_[0] &= ~0x00000001u; } inline void xtreemfs_rwr_flease_msgRequest::clear_sender_hostname() { - if (sender_hostname_ != &_default_sender_hostname_) { + if (sender_hostname_ != &::google::protobuf::internal::kEmptyString) { sender_hostname_->clear(); } - _clear_bit(0); + clear_has_sender_hostname(); } inline const ::std::string& xtreemfs_rwr_flease_msgRequest::sender_hostname() const { return *sender_hostname_; } inline void xtreemfs_rwr_flease_msgRequest::set_sender_hostname(const ::std::string& value) { - _set_bit(0); - if (sender_hostname_ == &_default_sender_hostname_) { + set_has_sender_hostname(); + if (sender_hostname_ == &::google::protobuf::internal::kEmptyString) { sender_hostname_ = new ::std::string; } sender_hostname_->assign(value); } inline void xtreemfs_rwr_flease_msgRequest::set_sender_hostname(const char* value) { - _set_bit(0); - if (sender_hostname_ == &_default_sender_hostname_) { + set_has_sender_hostname(); + if (sender_hostname_ == &::google::protobuf::internal::kEmptyString) { sender_hostname_ = new ::std::string; } sender_hostname_->assign(value); } inline void xtreemfs_rwr_flease_msgRequest::set_sender_hostname(const char* value, size_t size) { - _set_bit(0); - if (sender_hostname_ == &_default_sender_hostname_) { + set_has_sender_hostname(); + if (sender_hostname_ == &::google::protobuf::internal::kEmptyString) { sender_hostname_ = new ::std::string; } sender_hostname_->assign(reinterpret_cast(value), size); } inline ::std::string* xtreemfs_rwr_flease_msgRequest::mutable_sender_hostname() { - _set_bit(0); - if (sender_hostname_ == &_default_sender_hostname_) { + set_has_sender_hostname(); + if (sender_hostname_ == &::google::protobuf::internal::kEmptyString) { sender_hostname_ = new ::std::string; } return sender_hostname_; } +inline ::std::string* xtreemfs_rwr_flease_msgRequest::release_sender_hostname() { + clear_has_sender_hostname(); + if (sender_hostname_ == &::google::protobuf::internal::kEmptyString) { + return NULL; + } else { + ::std::string* temp = sender_hostname_; + sender_hostname_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + return temp; + } +} +inline void xtreemfs_rwr_flease_msgRequest::set_allocated_sender_hostname(::std::string* sender_hostname) { + if (sender_hostname_ != &::google::protobuf::internal::kEmptyString) { + delete sender_hostname_; + } + if (sender_hostname) { + set_has_sender_hostname(); + sender_hostname_ = sender_hostname; + } else { + clear_has_sender_hostname(); + sender_hostname_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + } +} // required fixed32 sender_port = 2; inline bool xtreemfs_rwr_flease_msgRequest::has_sender_port() const { - return _has_bit(1); + return (_has_bits_[0] & 0x00000002u) != 0; +} +inline void xtreemfs_rwr_flease_msgRequest::set_has_sender_port() { + _has_bits_[0] |= 0x00000002u; +} +inline void xtreemfs_rwr_flease_msgRequest::clear_has_sender_port() { + _has_bits_[0] &= ~0x00000002u; } inline void xtreemfs_rwr_flease_msgRequest::clear_sender_port() { sender_port_ = 0u; - _clear_bit(1); + clear_has_sender_port(); } inline ::google::protobuf::uint32 xtreemfs_rwr_flease_msgRequest::sender_port() const { return sender_port_; } inline void xtreemfs_rwr_flease_msgRequest::set_sender_port(::google::protobuf::uint32 value) { - _set_bit(1); + set_has_sender_port(); sender_port_ = value; } @@ -6076,76 +6785,131 @@ inline void xtreemfs_rwr_flease_msgRequest::set_sender_port(::google::protobuf:: // required .xtreemfs.pbrpc.FileCredentials file_credentials = 1; inline bool xtreemfs_rwr_set_primary_epochRequest::has_file_credentials() const { - return _has_bit(0); + return (_has_bits_[0] & 0x00000001u) != 0; +} +inline void xtreemfs_rwr_set_primary_epochRequest::set_has_file_credentials() { + _has_bits_[0] |= 0x00000001u; +} +inline void xtreemfs_rwr_set_primary_epochRequest::clear_has_file_credentials() { + _has_bits_[0] &= ~0x00000001u; } inline void xtreemfs_rwr_set_primary_epochRequest::clear_file_credentials() { if (file_credentials_ != NULL) file_credentials_->::xtreemfs::pbrpc::FileCredentials::Clear(); - _clear_bit(0); + clear_has_file_credentials(); } inline const ::xtreemfs::pbrpc::FileCredentials& xtreemfs_rwr_set_primary_epochRequest::file_credentials() const { return file_credentials_ != NULL ? *file_credentials_ : *default_instance_->file_credentials_; } inline ::xtreemfs::pbrpc::FileCredentials* xtreemfs_rwr_set_primary_epochRequest::mutable_file_credentials() { - _set_bit(0); + set_has_file_credentials(); if (file_credentials_ == NULL) file_credentials_ = new ::xtreemfs::pbrpc::FileCredentials; return file_credentials_; } +inline ::xtreemfs::pbrpc::FileCredentials* xtreemfs_rwr_set_primary_epochRequest::release_file_credentials() { + clear_has_file_credentials(); + ::xtreemfs::pbrpc::FileCredentials* temp = file_credentials_; + file_credentials_ = NULL; + return temp; +} +inline void xtreemfs_rwr_set_primary_epochRequest::set_allocated_file_credentials(::xtreemfs::pbrpc::FileCredentials* file_credentials) { + delete file_credentials_; + file_credentials_ = file_credentials; + if (file_credentials) { + set_has_file_credentials(); + } else { + clear_has_file_credentials(); + } +} // required string file_id = 2; inline bool xtreemfs_rwr_set_primary_epochRequest::has_file_id() const { - return _has_bit(1); + return (_has_bits_[0] & 0x00000002u) != 0; +} +inline void xtreemfs_rwr_set_primary_epochRequest::set_has_file_id() { + _has_bits_[0] |= 0x00000002u; +} +inline void xtreemfs_rwr_set_primary_epochRequest::clear_has_file_id() { + _has_bits_[0] &= ~0x00000002u; } inline void xtreemfs_rwr_set_primary_epochRequest::clear_file_id() { - if (file_id_ != &_default_file_id_) { + if (file_id_ != &::google::protobuf::internal::kEmptyString) { file_id_->clear(); } - _clear_bit(1); + clear_has_file_id(); } inline const ::std::string& xtreemfs_rwr_set_primary_epochRequest::file_id() const { return *file_id_; } inline void xtreemfs_rwr_set_primary_epochRequest::set_file_id(const ::std::string& value) { - _set_bit(1); - if (file_id_ == &_default_file_id_) { + set_has_file_id(); + if (file_id_ == &::google::protobuf::internal::kEmptyString) { file_id_ = new ::std::string; } file_id_->assign(value); } inline void xtreemfs_rwr_set_primary_epochRequest::set_file_id(const char* value) { - _set_bit(1); - if (file_id_ == &_default_file_id_) { + set_has_file_id(); + if (file_id_ == &::google::protobuf::internal::kEmptyString) { file_id_ = new ::std::string; } file_id_->assign(value); } inline void xtreemfs_rwr_set_primary_epochRequest::set_file_id(const char* value, size_t size) { - _set_bit(1); - if (file_id_ == &_default_file_id_) { + set_has_file_id(); + if (file_id_ == &::google::protobuf::internal::kEmptyString) { file_id_ = new ::std::string; } file_id_->assign(reinterpret_cast(value), size); } inline ::std::string* xtreemfs_rwr_set_primary_epochRequest::mutable_file_id() { - _set_bit(1); - if (file_id_ == &_default_file_id_) { + set_has_file_id(); + if (file_id_ == &::google::protobuf::internal::kEmptyString) { file_id_ = new ::std::string; } return file_id_; } +inline ::std::string* xtreemfs_rwr_set_primary_epochRequest::release_file_id() { + clear_has_file_id(); + if (file_id_ == &::google::protobuf::internal::kEmptyString) { + return NULL; + } else { + ::std::string* temp = file_id_; + file_id_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + return temp; + } +} +inline void xtreemfs_rwr_set_primary_epochRequest::set_allocated_file_id(::std::string* file_id) { + if (file_id_ != &::google::protobuf::internal::kEmptyString) { + delete file_id_; + } + if (file_id) { + set_has_file_id(); + file_id_ = file_id; + } else { + clear_has_file_id(); + file_id_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + } +} // required fixed32 primary_epoch = 3; inline bool xtreemfs_rwr_set_primary_epochRequest::has_primary_epoch() const { - return _has_bit(2); + return (_has_bits_[0] & 0x00000004u) != 0; +} +inline void xtreemfs_rwr_set_primary_epochRequest::set_has_primary_epoch() { + _has_bits_[0] |= 0x00000004u; +} +inline void xtreemfs_rwr_set_primary_epochRequest::clear_has_primary_epoch() { + _has_bits_[0] &= ~0x00000004u; } inline void xtreemfs_rwr_set_primary_epochRequest::clear_primary_epoch() { primary_epoch_ = 0u; - _clear_bit(2); + clear_has_primary_epoch(); } inline ::google::protobuf::uint32 xtreemfs_rwr_set_primary_epochRequest::primary_epoch() const { return primary_epoch_; } inline void xtreemfs_rwr_set_primary_epochRequest::set_primary_epoch(::google::protobuf::uint32 value) { - _set_bit(2); + set_has_primary_epoch(); primary_epoch_ = value; } @@ -6155,76 +6919,131 @@ inline void xtreemfs_rwr_set_primary_epochRequest::set_primary_epoch(::google::p // required .xtreemfs.pbrpc.FileCredentials file_credentials = 1; inline bool xtreemfs_rwr_statusRequest::has_file_credentials() const { - return _has_bit(0); + return (_has_bits_[0] & 0x00000001u) != 0; +} +inline void xtreemfs_rwr_statusRequest::set_has_file_credentials() { + _has_bits_[0] |= 0x00000001u; +} +inline void xtreemfs_rwr_statusRequest::clear_has_file_credentials() { + _has_bits_[0] &= ~0x00000001u; } inline void xtreemfs_rwr_statusRequest::clear_file_credentials() { if (file_credentials_ != NULL) file_credentials_->::xtreemfs::pbrpc::FileCredentials::Clear(); - _clear_bit(0); + clear_has_file_credentials(); } inline const ::xtreemfs::pbrpc::FileCredentials& xtreemfs_rwr_statusRequest::file_credentials() const { return file_credentials_ != NULL ? *file_credentials_ : *default_instance_->file_credentials_; } inline ::xtreemfs::pbrpc::FileCredentials* xtreemfs_rwr_statusRequest::mutable_file_credentials() { - _set_bit(0); + set_has_file_credentials(); if (file_credentials_ == NULL) file_credentials_ = new ::xtreemfs::pbrpc::FileCredentials; return file_credentials_; } +inline ::xtreemfs::pbrpc::FileCredentials* xtreemfs_rwr_statusRequest::release_file_credentials() { + clear_has_file_credentials(); + ::xtreemfs::pbrpc::FileCredentials* temp = file_credentials_; + file_credentials_ = NULL; + return temp; +} +inline void xtreemfs_rwr_statusRequest::set_allocated_file_credentials(::xtreemfs::pbrpc::FileCredentials* file_credentials) { + delete file_credentials_; + file_credentials_ = file_credentials; + if (file_credentials) { + set_has_file_credentials(); + } else { + clear_has_file_credentials(); + } +} // required string file_id = 2; inline bool xtreemfs_rwr_statusRequest::has_file_id() const { - return _has_bit(1); + return (_has_bits_[0] & 0x00000002u) != 0; +} +inline void xtreemfs_rwr_statusRequest::set_has_file_id() { + _has_bits_[0] |= 0x00000002u; +} +inline void xtreemfs_rwr_statusRequest::clear_has_file_id() { + _has_bits_[0] &= ~0x00000002u; } inline void xtreemfs_rwr_statusRequest::clear_file_id() { - if (file_id_ != &_default_file_id_) { + if (file_id_ != &::google::protobuf::internal::kEmptyString) { file_id_->clear(); } - _clear_bit(1); + clear_has_file_id(); } inline const ::std::string& xtreemfs_rwr_statusRequest::file_id() const { return *file_id_; } inline void xtreemfs_rwr_statusRequest::set_file_id(const ::std::string& value) { - _set_bit(1); - if (file_id_ == &_default_file_id_) { + set_has_file_id(); + if (file_id_ == &::google::protobuf::internal::kEmptyString) { file_id_ = new ::std::string; } file_id_->assign(value); } inline void xtreemfs_rwr_statusRequest::set_file_id(const char* value) { - _set_bit(1); - if (file_id_ == &_default_file_id_) { + set_has_file_id(); + if (file_id_ == &::google::protobuf::internal::kEmptyString) { file_id_ = new ::std::string; } file_id_->assign(value); } inline void xtreemfs_rwr_statusRequest::set_file_id(const char* value, size_t size) { - _set_bit(1); - if (file_id_ == &_default_file_id_) { + set_has_file_id(); + if (file_id_ == &::google::protobuf::internal::kEmptyString) { file_id_ = new ::std::string; } file_id_->assign(reinterpret_cast(value), size); } inline ::std::string* xtreemfs_rwr_statusRequest::mutable_file_id() { - _set_bit(1); - if (file_id_ == &_default_file_id_) { + set_has_file_id(); + if (file_id_ == &::google::protobuf::internal::kEmptyString) { file_id_ = new ::std::string; } return file_id_; } +inline ::std::string* xtreemfs_rwr_statusRequest::release_file_id() { + clear_has_file_id(); + if (file_id_ == &::google::protobuf::internal::kEmptyString) { + return NULL; + } else { + ::std::string* temp = file_id_; + file_id_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + return temp; + } +} +inline void xtreemfs_rwr_statusRequest::set_allocated_file_id(::std::string* file_id) { + if (file_id_ != &::google::protobuf::internal::kEmptyString) { + delete file_id_; + } + if (file_id) { + set_has_file_id(); + file_id_ = file_id; + } else { + clear_has_file_id(); + file_id_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + } +} // required fixed64 max_local_obj_version = 3; inline bool xtreemfs_rwr_statusRequest::has_max_local_obj_version() const { - return _has_bit(2); + return (_has_bits_[0] & 0x00000004u) != 0; +} +inline void xtreemfs_rwr_statusRequest::set_has_max_local_obj_version() { + _has_bits_[0] |= 0x00000004u; +} +inline void xtreemfs_rwr_statusRequest::clear_has_max_local_obj_version() { + _has_bits_[0] &= ~0x00000004u; } inline void xtreemfs_rwr_statusRequest::clear_max_local_obj_version() { max_local_obj_version_ = GOOGLE_ULONGLONG(0); - _clear_bit(2); + clear_has_max_local_obj_version(); } inline ::google::protobuf::uint64 xtreemfs_rwr_statusRequest::max_local_obj_version() const { return max_local_obj_version_; } inline void xtreemfs_rwr_statusRequest::set_max_local_obj_version(::google::protobuf::uint64 value) { - _set_bit(2); + set_has_max_local_obj_version(); max_local_obj_version_ = value; } @@ -6234,92 +7053,153 @@ inline void xtreemfs_rwr_statusRequest::set_max_local_obj_version(::google::prot // required .xtreemfs.pbrpc.FileCredentials file_credentials = 1; inline bool xtreemfs_rwr_truncateRequest::has_file_credentials() const { - return _has_bit(0); + return (_has_bits_[0] & 0x00000001u) != 0; +} +inline void xtreemfs_rwr_truncateRequest::set_has_file_credentials() { + _has_bits_[0] |= 0x00000001u; +} +inline void xtreemfs_rwr_truncateRequest::clear_has_file_credentials() { + _has_bits_[0] &= ~0x00000001u; } inline void xtreemfs_rwr_truncateRequest::clear_file_credentials() { if (file_credentials_ != NULL) file_credentials_->::xtreemfs::pbrpc::FileCredentials::Clear(); - _clear_bit(0); + clear_has_file_credentials(); } inline const ::xtreemfs::pbrpc::FileCredentials& xtreemfs_rwr_truncateRequest::file_credentials() const { return file_credentials_ != NULL ? *file_credentials_ : *default_instance_->file_credentials_; } inline ::xtreemfs::pbrpc::FileCredentials* xtreemfs_rwr_truncateRequest::mutable_file_credentials() { - _set_bit(0); + set_has_file_credentials(); if (file_credentials_ == NULL) file_credentials_ = new ::xtreemfs::pbrpc::FileCredentials; return file_credentials_; } +inline ::xtreemfs::pbrpc::FileCredentials* xtreemfs_rwr_truncateRequest::release_file_credentials() { + clear_has_file_credentials(); + ::xtreemfs::pbrpc::FileCredentials* temp = file_credentials_; + file_credentials_ = NULL; + return temp; +} +inline void xtreemfs_rwr_truncateRequest::set_allocated_file_credentials(::xtreemfs::pbrpc::FileCredentials* file_credentials) { + delete file_credentials_; + file_credentials_ = file_credentials; + if (file_credentials) { + set_has_file_credentials(); + } else { + clear_has_file_credentials(); + } +} // required string file_id = 2; inline bool xtreemfs_rwr_truncateRequest::has_file_id() const { - return _has_bit(1); + return (_has_bits_[0] & 0x00000002u) != 0; +} +inline void xtreemfs_rwr_truncateRequest::set_has_file_id() { + _has_bits_[0] |= 0x00000002u; +} +inline void xtreemfs_rwr_truncateRequest::clear_has_file_id() { + _has_bits_[0] &= ~0x00000002u; } inline void xtreemfs_rwr_truncateRequest::clear_file_id() { - if (file_id_ != &_default_file_id_) { + if (file_id_ != &::google::protobuf::internal::kEmptyString) { file_id_->clear(); } - _clear_bit(1); + clear_has_file_id(); } inline const ::std::string& xtreemfs_rwr_truncateRequest::file_id() const { return *file_id_; } inline void xtreemfs_rwr_truncateRequest::set_file_id(const ::std::string& value) { - _set_bit(1); - if (file_id_ == &_default_file_id_) { + set_has_file_id(); + if (file_id_ == &::google::protobuf::internal::kEmptyString) { file_id_ = new ::std::string; } file_id_->assign(value); } inline void xtreemfs_rwr_truncateRequest::set_file_id(const char* value) { - _set_bit(1); - if (file_id_ == &_default_file_id_) { + set_has_file_id(); + if (file_id_ == &::google::protobuf::internal::kEmptyString) { file_id_ = new ::std::string; } file_id_->assign(value); } inline void xtreemfs_rwr_truncateRequest::set_file_id(const char* value, size_t size) { - _set_bit(1); - if (file_id_ == &_default_file_id_) { + set_has_file_id(); + if (file_id_ == &::google::protobuf::internal::kEmptyString) { file_id_ = new ::std::string; } file_id_->assign(reinterpret_cast(value), size); } inline ::std::string* xtreemfs_rwr_truncateRequest::mutable_file_id() { - _set_bit(1); - if (file_id_ == &_default_file_id_) { + set_has_file_id(); + if (file_id_ == &::google::protobuf::internal::kEmptyString) { file_id_ = new ::std::string; } return file_id_; } +inline ::std::string* xtreemfs_rwr_truncateRequest::release_file_id() { + clear_has_file_id(); + if (file_id_ == &::google::protobuf::internal::kEmptyString) { + return NULL; + } else { + ::std::string* temp = file_id_; + file_id_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + return temp; + } +} +inline void xtreemfs_rwr_truncateRequest::set_allocated_file_id(::std::string* file_id) { + if (file_id_ != &::google::protobuf::internal::kEmptyString) { + delete file_id_; + } + if (file_id) { + set_has_file_id(); + file_id_ = file_id; + } else { + clear_has_file_id(); + file_id_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + } +} // required fixed64 new_file_size = 3; inline bool xtreemfs_rwr_truncateRequest::has_new_file_size() const { - return _has_bit(2); + return (_has_bits_[0] & 0x00000004u) != 0; +} +inline void xtreemfs_rwr_truncateRequest::set_has_new_file_size() { + _has_bits_[0] |= 0x00000004u; +} +inline void xtreemfs_rwr_truncateRequest::clear_has_new_file_size() { + _has_bits_[0] &= ~0x00000004u; } inline void xtreemfs_rwr_truncateRequest::clear_new_file_size() { new_file_size_ = GOOGLE_ULONGLONG(0); - _clear_bit(2); + clear_has_new_file_size(); } inline ::google::protobuf::uint64 xtreemfs_rwr_truncateRequest::new_file_size() const { return new_file_size_; } inline void xtreemfs_rwr_truncateRequest::set_new_file_size(::google::protobuf::uint64 value) { - _set_bit(2); + set_has_new_file_size(); new_file_size_ = value; } // required fixed64 object_version = 4; inline bool xtreemfs_rwr_truncateRequest::has_object_version() const { - return _has_bit(3); + return (_has_bits_[0] & 0x00000008u) != 0; +} +inline void xtreemfs_rwr_truncateRequest::set_has_object_version() { + _has_bits_[0] |= 0x00000008u; +} +inline void xtreemfs_rwr_truncateRequest::clear_has_object_version() { + _has_bits_[0] &= ~0x00000008u; } inline void xtreemfs_rwr_truncateRequest::clear_object_version() { object_version_ = GOOGLE_ULONGLONG(0); - _clear_bit(3); + clear_has_object_version(); } inline ::google::protobuf::uint64 xtreemfs_rwr_truncateRequest::object_version() const { return object_version_; } inline void xtreemfs_rwr_truncateRequest::set_object_version(::google::protobuf::uint64 value) { - _set_bit(3); + set_has_object_version(); object_version_ = value; } @@ -6329,143 +7209,237 @@ inline void xtreemfs_rwr_truncateRequest::set_object_version(::google::protobuf: // required .xtreemfs.pbrpc.FileCredentials file_credentials = 1; inline bool xtreemfs_rwr_updateRequest::has_file_credentials() const { - return _has_bit(0); + return (_has_bits_[0] & 0x00000001u) != 0; +} +inline void xtreemfs_rwr_updateRequest::set_has_file_credentials() { + _has_bits_[0] |= 0x00000001u; +} +inline void xtreemfs_rwr_updateRequest::clear_has_file_credentials() { + _has_bits_[0] &= ~0x00000001u; } inline void xtreemfs_rwr_updateRequest::clear_file_credentials() { if (file_credentials_ != NULL) file_credentials_->::xtreemfs::pbrpc::FileCredentials::Clear(); - _clear_bit(0); + clear_has_file_credentials(); } inline const ::xtreemfs::pbrpc::FileCredentials& xtreemfs_rwr_updateRequest::file_credentials() const { return file_credentials_ != NULL ? *file_credentials_ : *default_instance_->file_credentials_; } inline ::xtreemfs::pbrpc::FileCredentials* xtreemfs_rwr_updateRequest::mutable_file_credentials() { - _set_bit(0); + set_has_file_credentials(); if (file_credentials_ == NULL) file_credentials_ = new ::xtreemfs::pbrpc::FileCredentials; return file_credentials_; } +inline ::xtreemfs::pbrpc::FileCredentials* xtreemfs_rwr_updateRequest::release_file_credentials() { + clear_has_file_credentials(); + ::xtreemfs::pbrpc::FileCredentials* temp = file_credentials_; + file_credentials_ = NULL; + return temp; +} +inline void xtreemfs_rwr_updateRequest::set_allocated_file_credentials(::xtreemfs::pbrpc::FileCredentials* file_credentials) { + delete file_credentials_; + file_credentials_ = file_credentials; + if (file_credentials) { + set_has_file_credentials(); + } else { + clear_has_file_credentials(); + } +} // required string file_id = 2; inline bool xtreemfs_rwr_updateRequest::has_file_id() const { - return _has_bit(1); + return (_has_bits_[0] & 0x00000002u) != 0; +} +inline void xtreemfs_rwr_updateRequest::set_has_file_id() { + _has_bits_[0] |= 0x00000002u; +} +inline void xtreemfs_rwr_updateRequest::clear_has_file_id() { + _has_bits_[0] &= ~0x00000002u; } inline void xtreemfs_rwr_updateRequest::clear_file_id() { - if (file_id_ != &_default_file_id_) { + if (file_id_ != &::google::protobuf::internal::kEmptyString) { file_id_->clear(); } - _clear_bit(1); + clear_has_file_id(); } inline const ::std::string& xtreemfs_rwr_updateRequest::file_id() const { return *file_id_; } inline void xtreemfs_rwr_updateRequest::set_file_id(const ::std::string& value) { - _set_bit(1); - if (file_id_ == &_default_file_id_) { + set_has_file_id(); + if (file_id_ == &::google::protobuf::internal::kEmptyString) { file_id_ = new ::std::string; } file_id_->assign(value); } inline void xtreemfs_rwr_updateRequest::set_file_id(const char* value) { - _set_bit(1); - if (file_id_ == &_default_file_id_) { + set_has_file_id(); + if (file_id_ == &::google::protobuf::internal::kEmptyString) { file_id_ = new ::std::string; } file_id_->assign(value); } inline void xtreemfs_rwr_updateRequest::set_file_id(const char* value, size_t size) { - _set_bit(1); - if (file_id_ == &_default_file_id_) { + set_has_file_id(); + if (file_id_ == &::google::protobuf::internal::kEmptyString) { file_id_ = new ::std::string; } file_id_->assign(reinterpret_cast(value), size); } inline ::std::string* xtreemfs_rwr_updateRequest::mutable_file_id() { - _set_bit(1); - if (file_id_ == &_default_file_id_) { + set_has_file_id(); + if (file_id_ == &::google::protobuf::internal::kEmptyString) { file_id_ = new ::std::string; } return file_id_; } +inline ::std::string* xtreemfs_rwr_updateRequest::release_file_id() { + clear_has_file_id(); + if (file_id_ == &::google::protobuf::internal::kEmptyString) { + return NULL; + } else { + ::std::string* temp = file_id_; + file_id_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + return temp; + } +} +inline void xtreemfs_rwr_updateRequest::set_allocated_file_id(::std::string* file_id) { + if (file_id_ != &::google::protobuf::internal::kEmptyString) { + delete file_id_; + } + if (file_id) { + set_has_file_id(); + file_id_ = file_id; + } else { + clear_has_file_id(); + file_id_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + } +} // required fixed64 new_file_size = 3; inline bool xtreemfs_rwr_updateRequest::has_new_file_size() const { - return _has_bit(2); + return (_has_bits_[0] & 0x00000004u) != 0; +} +inline void xtreemfs_rwr_updateRequest::set_has_new_file_size() { + _has_bits_[0] |= 0x00000004u; +} +inline void xtreemfs_rwr_updateRequest::clear_has_new_file_size() { + _has_bits_[0] &= ~0x00000004u; } inline void xtreemfs_rwr_updateRequest::clear_new_file_size() { new_file_size_ = GOOGLE_ULONGLONG(0); - _clear_bit(2); + clear_has_new_file_size(); } inline ::google::protobuf::uint64 xtreemfs_rwr_updateRequest::new_file_size() const { return new_file_size_; } inline void xtreemfs_rwr_updateRequest::set_new_file_size(::google::protobuf::uint64 value) { - _set_bit(2); + set_has_new_file_size(); new_file_size_ = value; } // required fixed64 object_number = 7; inline bool xtreemfs_rwr_updateRequest::has_object_number() const { - return _has_bit(3); + return (_has_bits_[0] & 0x00000008u) != 0; +} +inline void xtreemfs_rwr_updateRequest::set_has_object_number() { + _has_bits_[0] |= 0x00000008u; +} +inline void xtreemfs_rwr_updateRequest::clear_has_object_number() { + _has_bits_[0] &= ~0x00000008u; } inline void xtreemfs_rwr_updateRequest::clear_object_number() { object_number_ = GOOGLE_ULONGLONG(0); - _clear_bit(3); + clear_has_object_number(); } inline ::google::protobuf::uint64 xtreemfs_rwr_updateRequest::object_number() const { return object_number_; } inline void xtreemfs_rwr_updateRequest::set_object_number(::google::protobuf::uint64 value) { - _set_bit(3); + set_has_object_number(); object_number_ = value; } // required fixed64 object_version = 4; inline bool xtreemfs_rwr_updateRequest::has_object_version() const { - return _has_bit(4); + return (_has_bits_[0] & 0x00000010u) != 0; +} +inline void xtreemfs_rwr_updateRequest::set_has_object_version() { + _has_bits_[0] |= 0x00000010u; +} +inline void xtreemfs_rwr_updateRequest::clear_has_object_version() { + _has_bits_[0] &= ~0x00000010u; } inline void xtreemfs_rwr_updateRequest::clear_object_version() { object_version_ = GOOGLE_ULONGLONG(0); - _clear_bit(4); + clear_has_object_version(); } inline ::google::protobuf::uint64 xtreemfs_rwr_updateRequest::object_version() const { return object_version_; } inline void xtreemfs_rwr_updateRequest::set_object_version(::google::protobuf::uint64 value) { - _set_bit(4); + set_has_object_version(); object_version_ = value; } // required fixed32 offset = 5; inline bool xtreemfs_rwr_updateRequest::has_offset() const { - return _has_bit(5); + return (_has_bits_[0] & 0x00000020u) != 0; +} +inline void xtreemfs_rwr_updateRequest::set_has_offset() { + _has_bits_[0] |= 0x00000020u; +} +inline void xtreemfs_rwr_updateRequest::clear_has_offset() { + _has_bits_[0] &= ~0x00000020u; } inline void xtreemfs_rwr_updateRequest::clear_offset() { offset_ = 0u; - _clear_bit(5); + clear_has_offset(); } inline ::google::protobuf::uint32 xtreemfs_rwr_updateRequest::offset() const { return offset_; } inline void xtreemfs_rwr_updateRequest::set_offset(::google::protobuf::uint32 value) { - _set_bit(5); + set_has_offset(); offset_ = value; } // required .xtreemfs.pbrpc.ObjectData obj = 6; inline bool xtreemfs_rwr_updateRequest::has_obj() const { - return _has_bit(6); + return (_has_bits_[0] & 0x00000040u) != 0; +} +inline void xtreemfs_rwr_updateRequest::set_has_obj() { + _has_bits_[0] |= 0x00000040u; +} +inline void xtreemfs_rwr_updateRequest::clear_has_obj() { + _has_bits_[0] &= ~0x00000040u; } inline void xtreemfs_rwr_updateRequest::clear_obj() { if (obj_ != NULL) obj_->::xtreemfs::pbrpc::ObjectData::Clear(); - _clear_bit(6); + clear_has_obj(); } inline const ::xtreemfs::pbrpc::ObjectData& xtreemfs_rwr_updateRequest::obj() const { return obj_ != NULL ? *obj_ : *default_instance_->obj_; } inline ::xtreemfs::pbrpc::ObjectData* xtreemfs_rwr_updateRequest::mutable_obj() { - _set_bit(6); + set_has_obj(); if (obj_ == NULL) obj_ = new ::xtreemfs::pbrpc::ObjectData; return obj_; } +inline ::xtreemfs::pbrpc::ObjectData* xtreemfs_rwr_updateRequest::release_obj() { + clear_has_obj(); + ::xtreemfs::pbrpc::ObjectData* temp = obj_; + obj_ = NULL; + return temp; +} +inline void xtreemfs_rwr_updateRequest::set_allocated_obj(::xtreemfs::pbrpc::ObjectData* obj) { + delete obj_; + obj_ = obj; + if (obj) { + set_has_obj(); + } else { + clear_has_obj(); + } +} // ------------------------------------------------------------------- @@ -6473,62 +7447,111 @@ inline ::xtreemfs::pbrpc::ObjectData* xtreemfs_rwr_updateRequest::mutable_obj() // required .xtreemfs.pbrpc.FileCredentials file_credentials = 1; inline bool xtreemfs_internal_get_gmaxRequest::has_file_credentials() const { - return _has_bit(0); + return (_has_bits_[0] & 0x00000001u) != 0; +} +inline void xtreemfs_internal_get_gmaxRequest::set_has_file_credentials() { + _has_bits_[0] |= 0x00000001u; +} +inline void xtreemfs_internal_get_gmaxRequest::clear_has_file_credentials() { + _has_bits_[0] &= ~0x00000001u; } inline void xtreemfs_internal_get_gmaxRequest::clear_file_credentials() { if (file_credentials_ != NULL) file_credentials_->::xtreemfs::pbrpc::FileCredentials::Clear(); - _clear_bit(0); + clear_has_file_credentials(); } inline const ::xtreemfs::pbrpc::FileCredentials& xtreemfs_internal_get_gmaxRequest::file_credentials() const { return file_credentials_ != NULL ? *file_credentials_ : *default_instance_->file_credentials_; } inline ::xtreemfs::pbrpc::FileCredentials* xtreemfs_internal_get_gmaxRequest::mutable_file_credentials() { - _set_bit(0); + set_has_file_credentials(); if (file_credentials_ == NULL) file_credentials_ = new ::xtreemfs::pbrpc::FileCredentials; return file_credentials_; } +inline ::xtreemfs::pbrpc::FileCredentials* xtreemfs_internal_get_gmaxRequest::release_file_credentials() { + clear_has_file_credentials(); + ::xtreemfs::pbrpc::FileCredentials* temp = file_credentials_; + file_credentials_ = NULL; + return temp; +} +inline void xtreemfs_internal_get_gmaxRequest::set_allocated_file_credentials(::xtreemfs::pbrpc::FileCredentials* file_credentials) { + delete file_credentials_; + file_credentials_ = file_credentials; + if (file_credentials) { + set_has_file_credentials(); + } else { + clear_has_file_credentials(); + } +} // required string file_id = 2; inline bool xtreemfs_internal_get_gmaxRequest::has_file_id() const { - return _has_bit(1); + return (_has_bits_[0] & 0x00000002u) != 0; +} +inline void xtreemfs_internal_get_gmaxRequest::set_has_file_id() { + _has_bits_[0] |= 0x00000002u; +} +inline void xtreemfs_internal_get_gmaxRequest::clear_has_file_id() { + _has_bits_[0] &= ~0x00000002u; } inline void xtreemfs_internal_get_gmaxRequest::clear_file_id() { - if (file_id_ != &_default_file_id_) { + if (file_id_ != &::google::protobuf::internal::kEmptyString) { file_id_->clear(); } - _clear_bit(1); + clear_has_file_id(); } inline const ::std::string& xtreemfs_internal_get_gmaxRequest::file_id() const { return *file_id_; } inline void xtreemfs_internal_get_gmaxRequest::set_file_id(const ::std::string& value) { - _set_bit(1); - if (file_id_ == &_default_file_id_) { + set_has_file_id(); + if (file_id_ == &::google::protobuf::internal::kEmptyString) { file_id_ = new ::std::string; } file_id_->assign(value); } inline void xtreemfs_internal_get_gmaxRequest::set_file_id(const char* value) { - _set_bit(1); - if (file_id_ == &_default_file_id_) { + set_has_file_id(); + if (file_id_ == &::google::protobuf::internal::kEmptyString) { file_id_ = new ::std::string; } file_id_->assign(value); } inline void xtreemfs_internal_get_gmaxRequest::set_file_id(const char* value, size_t size) { - _set_bit(1); - if (file_id_ == &_default_file_id_) { + set_has_file_id(); + if (file_id_ == &::google::protobuf::internal::kEmptyString) { file_id_ = new ::std::string; } file_id_->assign(reinterpret_cast(value), size); } inline ::std::string* xtreemfs_internal_get_gmaxRequest::mutable_file_id() { - _set_bit(1); - if (file_id_ == &_default_file_id_) { + set_has_file_id(); + if (file_id_ == &::google::protobuf::internal::kEmptyString) { file_id_ = new ::std::string; } return file_id_; } +inline ::std::string* xtreemfs_internal_get_gmaxRequest::release_file_id() { + clear_has_file_id(); + if (file_id_ == &::google::protobuf::internal::kEmptyString) { + return NULL; + } else { + ::std::string* temp = file_id_; + file_id_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + return temp; + } +} +inline void xtreemfs_internal_get_gmaxRequest::set_allocated_file_id(::std::string* file_id) { + if (file_id_ != &::google::protobuf::internal::kEmptyString) { + delete file_id_; + } + if (file_id) { + set_has_file_id(); + file_id_ = file_id; + } else { + clear_has_file_id(); + file_id_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + } +} // ------------------------------------------------------------------- @@ -6536,62 +7559,111 @@ inline ::std::string* xtreemfs_internal_get_gmaxRequest::mutable_file_id() { // required .xtreemfs.pbrpc.FileCredentials file_credentials = 1; inline bool xtreemfs_internal_get_file_sizeRequest::has_file_credentials() const { - return _has_bit(0); + return (_has_bits_[0] & 0x00000001u) != 0; +} +inline void xtreemfs_internal_get_file_sizeRequest::set_has_file_credentials() { + _has_bits_[0] |= 0x00000001u; +} +inline void xtreemfs_internal_get_file_sizeRequest::clear_has_file_credentials() { + _has_bits_[0] &= ~0x00000001u; } inline void xtreemfs_internal_get_file_sizeRequest::clear_file_credentials() { if (file_credentials_ != NULL) file_credentials_->::xtreemfs::pbrpc::FileCredentials::Clear(); - _clear_bit(0); + clear_has_file_credentials(); } inline const ::xtreemfs::pbrpc::FileCredentials& xtreemfs_internal_get_file_sizeRequest::file_credentials() const { return file_credentials_ != NULL ? *file_credentials_ : *default_instance_->file_credentials_; } inline ::xtreemfs::pbrpc::FileCredentials* xtreemfs_internal_get_file_sizeRequest::mutable_file_credentials() { - _set_bit(0); + set_has_file_credentials(); if (file_credentials_ == NULL) file_credentials_ = new ::xtreemfs::pbrpc::FileCredentials; return file_credentials_; } +inline ::xtreemfs::pbrpc::FileCredentials* xtreemfs_internal_get_file_sizeRequest::release_file_credentials() { + clear_has_file_credentials(); + ::xtreemfs::pbrpc::FileCredentials* temp = file_credentials_; + file_credentials_ = NULL; + return temp; +} +inline void xtreemfs_internal_get_file_sizeRequest::set_allocated_file_credentials(::xtreemfs::pbrpc::FileCredentials* file_credentials) { + delete file_credentials_; + file_credentials_ = file_credentials; + if (file_credentials) { + set_has_file_credentials(); + } else { + clear_has_file_credentials(); + } +} // required string file_id = 2; inline bool xtreemfs_internal_get_file_sizeRequest::has_file_id() const { - return _has_bit(1); + return (_has_bits_[0] & 0x00000002u) != 0; +} +inline void xtreemfs_internal_get_file_sizeRequest::set_has_file_id() { + _has_bits_[0] |= 0x00000002u; +} +inline void xtreemfs_internal_get_file_sizeRequest::clear_has_file_id() { + _has_bits_[0] &= ~0x00000002u; } inline void xtreemfs_internal_get_file_sizeRequest::clear_file_id() { - if (file_id_ != &_default_file_id_) { + if (file_id_ != &::google::protobuf::internal::kEmptyString) { file_id_->clear(); } - _clear_bit(1); + clear_has_file_id(); } inline const ::std::string& xtreemfs_internal_get_file_sizeRequest::file_id() const { return *file_id_; } inline void xtreemfs_internal_get_file_sizeRequest::set_file_id(const ::std::string& value) { - _set_bit(1); - if (file_id_ == &_default_file_id_) { + set_has_file_id(); + if (file_id_ == &::google::protobuf::internal::kEmptyString) { file_id_ = new ::std::string; } file_id_->assign(value); } inline void xtreemfs_internal_get_file_sizeRequest::set_file_id(const char* value) { - _set_bit(1); - if (file_id_ == &_default_file_id_) { + set_has_file_id(); + if (file_id_ == &::google::protobuf::internal::kEmptyString) { file_id_ = new ::std::string; } file_id_->assign(value); } inline void xtreemfs_internal_get_file_sizeRequest::set_file_id(const char* value, size_t size) { - _set_bit(1); - if (file_id_ == &_default_file_id_) { + set_has_file_id(); + if (file_id_ == &::google::protobuf::internal::kEmptyString) { file_id_ = new ::std::string; } file_id_->assign(reinterpret_cast(value), size); } inline ::std::string* xtreemfs_internal_get_file_sizeRequest::mutable_file_id() { - _set_bit(1); - if (file_id_ == &_default_file_id_) { + set_has_file_id(); + if (file_id_ == &::google::protobuf::internal::kEmptyString) { file_id_ = new ::std::string; } return file_id_; } +inline ::std::string* xtreemfs_internal_get_file_sizeRequest::release_file_id() { + clear_has_file_id(); + if (file_id_ == &::google::protobuf::internal::kEmptyString) { + return NULL; + } else { + ::std::string* temp = file_id_; + file_id_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + return temp; + } +} +inline void xtreemfs_internal_get_file_sizeRequest::set_allocated_file_id(::std::string* file_id) { + if (file_id_ != &::google::protobuf::internal::kEmptyString) { + delete file_id_; + } + if (file_id) { + set_has_file_id(); + file_id_ = file_id; + } else { + clear_has_file_id(); + file_id_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + } +} // ------------------------------------------------------------------- @@ -6599,17 +7671,23 @@ inline ::std::string* xtreemfs_internal_get_file_sizeRequest::mutable_file_id() // required fixed64 file_size = 1; inline bool xtreemfs_internal_get_file_sizeResponse::has_file_size() const { - return _has_bit(0); + return (_has_bits_[0] & 0x00000001u) != 0; +} +inline void xtreemfs_internal_get_file_sizeResponse::set_has_file_size() { + _has_bits_[0] |= 0x00000001u; +} +inline void xtreemfs_internal_get_file_sizeResponse::clear_has_file_size() { + _has_bits_[0] &= ~0x00000001u; } inline void xtreemfs_internal_get_file_sizeResponse::clear_file_size() { file_size_ = GOOGLE_ULONGLONG(0); - _clear_bit(0); + clear_has_file_size(); } inline ::google::protobuf::uint64 xtreemfs_internal_get_file_sizeResponse::file_size() const { return file_size_; } inline void xtreemfs_internal_get_file_sizeResponse::set_file_size(::google::protobuf::uint64 value) { - _set_bit(0); + set_has_file_size(); file_size_ = value; } @@ -6619,140 +7697,219 @@ inline void xtreemfs_internal_get_file_sizeResponse::set_file_size(::google::pro // required .xtreemfs.pbrpc.FileCredentials file_credentials = 1; inline bool xtreemfs_internal_read_localRequest::has_file_credentials() const { - return _has_bit(0); + return (_has_bits_[0] & 0x00000001u) != 0; +} +inline void xtreemfs_internal_read_localRequest::set_has_file_credentials() { + _has_bits_[0] |= 0x00000001u; +} +inline void xtreemfs_internal_read_localRequest::clear_has_file_credentials() { + _has_bits_[0] &= ~0x00000001u; } inline void xtreemfs_internal_read_localRequest::clear_file_credentials() { if (file_credentials_ != NULL) file_credentials_->::xtreemfs::pbrpc::FileCredentials::Clear(); - _clear_bit(0); + clear_has_file_credentials(); } inline const ::xtreemfs::pbrpc::FileCredentials& xtreemfs_internal_read_localRequest::file_credentials() const { return file_credentials_ != NULL ? *file_credentials_ : *default_instance_->file_credentials_; } inline ::xtreemfs::pbrpc::FileCredentials* xtreemfs_internal_read_localRequest::mutable_file_credentials() { - _set_bit(0); + set_has_file_credentials(); if (file_credentials_ == NULL) file_credentials_ = new ::xtreemfs::pbrpc::FileCredentials; return file_credentials_; } +inline ::xtreemfs::pbrpc::FileCredentials* xtreemfs_internal_read_localRequest::release_file_credentials() { + clear_has_file_credentials(); + ::xtreemfs::pbrpc::FileCredentials* temp = file_credentials_; + file_credentials_ = NULL; + return temp; +} +inline void xtreemfs_internal_read_localRequest::set_allocated_file_credentials(::xtreemfs::pbrpc::FileCredentials* file_credentials) { + delete file_credentials_; + file_credentials_ = file_credentials; + if (file_credentials) { + set_has_file_credentials(); + } else { + clear_has_file_credentials(); + } +} // required string file_id = 2; inline bool xtreemfs_internal_read_localRequest::has_file_id() const { - return _has_bit(1); + return (_has_bits_[0] & 0x00000002u) != 0; +} +inline void xtreemfs_internal_read_localRequest::set_has_file_id() { + _has_bits_[0] |= 0x00000002u; +} +inline void xtreemfs_internal_read_localRequest::clear_has_file_id() { + _has_bits_[0] &= ~0x00000002u; } inline void xtreemfs_internal_read_localRequest::clear_file_id() { - if (file_id_ != &_default_file_id_) { + if (file_id_ != &::google::protobuf::internal::kEmptyString) { file_id_->clear(); } - _clear_bit(1); + clear_has_file_id(); } inline const ::std::string& xtreemfs_internal_read_localRequest::file_id() const { return *file_id_; } inline void xtreemfs_internal_read_localRequest::set_file_id(const ::std::string& value) { - _set_bit(1); - if (file_id_ == &_default_file_id_) { + set_has_file_id(); + if (file_id_ == &::google::protobuf::internal::kEmptyString) { file_id_ = new ::std::string; } file_id_->assign(value); } inline void xtreemfs_internal_read_localRequest::set_file_id(const char* value) { - _set_bit(1); - if (file_id_ == &_default_file_id_) { + set_has_file_id(); + if (file_id_ == &::google::protobuf::internal::kEmptyString) { file_id_ = new ::std::string; } file_id_->assign(value); } inline void xtreemfs_internal_read_localRequest::set_file_id(const char* value, size_t size) { - _set_bit(1); - if (file_id_ == &_default_file_id_) { + set_has_file_id(); + if (file_id_ == &::google::protobuf::internal::kEmptyString) { file_id_ = new ::std::string; } file_id_->assign(reinterpret_cast(value), size); } inline ::std::string* xtreemfs_internal_read_localRequest::mutable_file_id() { - _set_bit(1); - if (file_id_ == &_default_file_id_) { + set_has_file_id(); + if (file_id_ == &::google::protobuf::internal::kEmptyString) { file_id_ = new ::std::string; } return file_id_; } +inline ::std::string* xtreemfs_internal_read_localRequest::release_file_id() { + clear_has_file_id(); + if (file_id_ == &::google::protobuf::internal::kEmptyString) { + return NULL; + } else { + ::std::string* temp = file_id_; + file_id_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + return temp; + } +} +inline void xtreemfs_internal_read_localRequest::set_allocated_file_id(::std::string* file_id) { + if (file_id_ != &::google::protobuf::internal::kEmptyString) { + delete file_id_; + } + if (file_id) { + set_has_file_id(); + file_id_ = file_id; + } else { + clear_has_file_id(); + file_id_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + } +} // required fixed64 object_number = 3; inline bool xtreemfs_internal_read_localRequest::has_object_number() const { - return _has_bit(2); + return (_has_bits_[0] & 0x00000004u) != 0; +} +inline void xtreemfs_internal_read_localRequest::set_has_object_number() { + _has_bits_[0] |= 0x00000004u; +} +inline void xtreemfs_internal_read_localRequest::clear_has_object_number() { + _has_bits_[0] &= ~0x00000004u; } inline void xtreemfs_internal_read_localRequest::clear_object_number() { object_number_ = GOOGLE_ULONGLONG(0); - _clear_bit(2); + clear_has_object_number(); } inline ::google::protobuf::uint64 xtreemfs_internal_read_localRequest::object_number() const { return object_number_; } inline void xtreemfs_internal_read_localRequest::set_object_number(::google::protobuf::uint64 value) { - _set_bit(2); + set_has_object_number(); object_number_ = value; } // required fixed64 object_version = 4; inline bool xtreemfs_internal_read_localRequest::has_object_version() const { - return _has_bit(3); + return (_has_bits_[0] & 0x00000008u) != 0; +} +inline void xtreemfs_internal_read_localRequest::set_has_object_version() { + _has_bits_[0] |= 0x00000008u; +} +inline void xtreemfs_internal_read_localRequest::clear_has_object_version() { + _has_bits_[0] &= ~0x00000008u; } inline void xtreemfs_internal_read_localRequest::clear_object_version() { object_version_ = GOOGLE_ULONGLONG(0); - _clear_bit(3); + clear_has_object_version(); } inline ::google::protobuf::uint64 xtreemfs_internal_read_localRequest::object_version() const { return object_version_; } inline void xtreemfs_internal_read_localRequest::set_object_version(::google::protobuf::uint64 value) { - _set_bit(3); + set_has_object_version(); object_version_ = value; } // required fixed32 offset = 5; inline bool xtreemfs_internal_read_localRequest::has_offset() const { - return _has_bit(4); + return (_has_bits_[0] & 0x00000010u) != 0; +} +inline void xtreemfs_internal_read_localRequest::set_has_offset() { + _has_bits_[0] |= 0x00000010u; +} +inline void xtreemfs_internal_read_localRequest::clear_has_offset() { + _has_bits_[0] &= ~0x00000010u; } inline void xtreemfs_internal_read_localRequest::clear_offset() { offset_ = 0u; - _clear_bit(4); + clear_has_offset(); } inline ::google::protobuf::uint32 xtreemfs_internal_read_localRequest::offset() const { return offset_; } inline void xtreemfs_internal_read_localRequest::set_offset(::google::protobuf::uint32 value) { - _set_bit(4); + set_has_offset(); offset_ = value; } // required fixed32 length = 6; inline bool xtreemfs_internal_read_localRequest::has_length() const { - return _has_bit(5); + return (_has_bits_[0] & 0x00000020u) != 0; +} +inline void xtreemfs_internal_read_localRequest::set_has_length() { + _has_bits_[0] |= 0x00000020u; +} +inline void xtreemfs_internal_read_localRequest::clear_has_length() { + _has_bits_[0] &= ~0x00000020u; } inline void xtreemfs_internal_read_localRequest::clear_length() { length_ = 0u; - _clear_bit(5); + clear_has_length(); } inline ::google::protobuf::uint32 xtreemfs_internal_read_localRequest::length() const { return length_; } inline void xtreemfs_internal_read_localRequest::set_length(::google::protobuf::uint32 value) { - _set_bit(5); + set_has_length(); length_ = value; } // required bool attach_object_list = 7; inline bool xtreemfs_internal_read_localRequest::has_attach_object_list() const { - return _has_bit(6); + return (_has_bits_[0] & 0x00000040u) != 0; +} +inline void xtreemfs_internal_read_localRequest::set_has_attach_object_list() { + _has_bits_[0] |= 0x00000040u; +} +inline void xtreemfs_internal_read_localRequest::clear_has_attach_object_list() { + _has_bits_[0] &= ~0x00000040u; } inline void xtreemfs_internal_read_localRequest::clear_attach_object_list() { attach_object_list_ = false; - _clear_bit(6); + clear_has_attach_object_list(); } inline bool xtreemfs_internal_read_localRequest::attach_object_list() const { return attach_object_list_; } inline void xtreemfs_internal_read_localRequest::set_attach_object_list(bool value) { - _set_bit(6); + set_has_attach_object_list(); attach_object_list_ = value; } @@ -6787,62 +7944,111 @@ xtreemfs_internal_read_localRequest::mutable_required_objects() { // required .xtreemfs.pbrpc.FileCredentials file_credentials = 1; inline bool xtreemfs_internal_get_object_setRequest::has_file_credentials() const { - return _has_bit(0); + return (_has_bits_[0] & 0x00000001u) != 0; +} +inline void xtreemfs_internal_get_object_setRequest::set_has_file_credentials() { + _has_bits_[0] |= 0x00000001u; +} +inline void xtreemfs_internal_get_object_setRequest::clear_has_file_credentials() { + _has_bits_[0] &= ~0x00000001u; } inline void xtreemfs_internal_get_object_setRequest::clear_file_credentials() { if (file_credentials_ != NULL) file_credentials_->::xtreemfs::pbrpc::FileCredentials::Clear(); - _clear_bit(0); + clear_has_file_credentials(); } inline const ::xtreemfs::pbrpc::FileCredentials& xtreemfs_internal_get_object_setRequest::file_credentials() const { return file_credentials_ != NULL ? *file_credentials_ : *default_instance_->file_credentials_; } inline ::xtreemfs::pbrpc::FileCredentials* xtreemfs_internal_get_object_setRequest::mutable_file_credentials() { - _set_bit(0); + set_has_file_credentials(); if (file_credentials_ == NULL) file_credentials_ = new ::xtreemfs::pbrpc::FileCredentials; return file_credentials_; } +inline ::xtreemfs::pbrpc::FileCredentials* xtreemfs_internal_get_object_setRequest::release_file_credentials() { + clear_has_file_credentials(); + ::xtreemfs::pbrpc::FileCredentials* temp = file_credentials_; + file_credentials_ = NULL; + return temp; +} +inline void xtreemfs_internal_get_object_setRequest::set_allocated_file_credentials(::xtreemfs::pbrpc::FileCredentials* file_credentials) { + delete file_credentials_; + file_credentials_ = file_credentials; + if (file_credentials) { + set_has_file_credentials(); + } else { + clear_has_file_credentials(); + } +} // required string file_id = 2; inline bool xtreemfs_internal_get_object_setRequest::has_file_id() const { - return _has_bit(1); + return (_has_bits_[0] & 0x00000002u) != 0; +} +inline void xtreemfs_internal_get_object_setRequest::set_has_file_id() { + _has_bits_[0] |= 0x00000002u; +} +inline void xtreemfs_internal_get_object_setRequest::clear_has_file_id() { + _has_bits_[0] &= ~0x00000002u; } inline void xtreemfs_internal_get_object_setRequest::clear_file_id() { - if (file_id_ != &_default_file_id_) { + if (file_id_ != &::google::protobuf::internal::kEmptyString) { file_id_->clear(); } - _clear_bit(1); + clear_has_file_id(); } inline const ::std::string& xtreemfs_internal_get_object_setRequest::file_id() const { return *file_id_; } inline void xtreemfs_internal_get_object_setRequest::set_file_id(const ::std::string& value) { - _set_bit(1); - if (file_id_ == &_default_file_id_) { + set_has_file_id(); + if (file_id_ == &::google::protobuf::internal::kEmptyString) { file_id_ = new ::std::string; } file_id_->assign(value); } inline void xtreemfs_internal_get_object_setRequest::set_file_id(const char* value) { - _set_bit(1); - if (file_id_ == &_default_file_id_) { + set_has_file_id(); + if (file_id_ == &::google::protobuf::internal::kEmptyString) { file_id_ = new ::std::string; } file_id_->assign(value); } inline void xtreemfs_internal_get_object_setRequest::set_file_id(const char* value, size_t size) { - _set_bit(1); - if (file_id_ == &_default_file_id_) { + set_has_file_id(); + if (file_id_ == &::google::protobuf::internal::kEmptyString) { file_id_ = new ::std::string; } file_id_->assign(reinterpret_cast(value), size); } inline ::std::string* xtreemfs_internal_get_object_setRequest::mutable_file_id() { - _set_bit(1); - if (file_id_ == &_default_file_id_) { + set_has_file_id(); + if (file_id_ == &::google::protobuf::internal::kEmptyString) { file_id_ = new ::std::string; } return file_id_; } +inline ::std::string* xtreemfs_internal_get_object_setRequest::release_file_id() { + clear_has_file_id(); + if (file_id_ == &::google::protobuf::internal::kEmptyString) { + return NULL; + } else { + ::std::string* temp = file_id_; + file_id_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + return temp; + } +} +inline void xtreemfs_internal_get_object_setRequest::set_allocated_file_id(::std::string* file_id) { + if (file_id_ != &::google::protobuf::internal::kEmptyString) { + delete file_id_; + } + if (file_id) { + set_has_file_id(); + file_id_ = file_id; + } else { + clear_has_file_id(); + file_id_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + } +} // ------------------------------------------------------------------- @@ -6898,37 +8104,79 @@ xtreemfs_internal_get_fileid_listResponse::mutable_file_ids() { // required .xtreemfs.pbrpc.FileCredentials file_credentials = 1; inline bool lockRequest::has_file_credentials() const { - return _has_bit(0); + return (_has_bits_[0] & 0x00000001u) != 0; +} +inline void lockRequest::set_has_file_credentials() { + _has_bits_[0] |= 0x00000001u; +} +inline void lockRequest::clear_has_file_credentials() { + _has_bits_[0] &= ~0x00000001u; } inline void lockRequest::clear_file_credentials() { if (file_credentials_ != NULL) file_credentials_->::xtreemfs::pbrpc::FileCredentials::Clear(); - _clear_bit(0); + clear_has_file_credentials(); } inline const ::xtreemfs::pbrpc::FileCredentials& lockRequest::file_credentials() const { return file_credentials_ != NULL ? *file_credentials_ : *default_instance_->file_credentials_; } inline ::xtreemfs::pbrpc::FileCredentials* lockRequest::mutable_file_credentials() { - _set_bit(0); + set_has_file_credentials(); if (file_credentials_ == NULL) file_credentials_ = new ::xtreemfs::pbrpc::FileCredentials; return file_credentials_; } +inline ::xtreemfs::pbrpc::FileCredentials* lockRequest::release_file_credentials() { + clear_has_file_credentials(); + ::xtreemfs::pbrpc::FileCredentials* temp = file_credentials_; + file_credentials_ = NULL; + return temp; +} +inline void lockRequest::set_allocated_file_credentials(::xtreemfs::pbrpc::FileCredentials* file_credentials) { + delete file_credentials_; + file_credentials_ = file_credentials; + if (file_credentials) { + set_has_file_credentials(); + } else { + clear_has_file_credentials(); + } +} // required .xtreemfs.pbrpc.Lock lock_request = 2; inline bool lockRequest::has_lock_request() const { - return _has_bit(1); + return (_has_bits_[0] & 0x00000002u) != 0; +} +inline void lockRequest::set_has_lock_request() { + _has_bits_[0] |= 0x00000002u; +} +inline void lockRequest::clear_has_lock_request() { + _has_bits_[0] &= ~0x00000002u; } inline void lockRequest::clear_lock_request() { if (lock_request_ != NULL) lock_request_->::xtreemfs::pbrpc::Lock::Clear(); - _clear_bit(1); + clear_has_lock_request(); } inline const ::xtreemfs::pbrpc::Lock& lockRequest::lock_request() const { return lock_request_ != NULL ? *lock_request_ : *default_instance_->lock_request_; } inline ::xtreemfs::pbrpc::Lock* lockRequest::mutable_lock_request() { - _set_bit(1); + set_has_lock_request(); if (lock_request_ == NULL) lock_request_ = new ::xtreemfs::pbrpc::Lock; return lock_request_; } +inline ::xtreemfs::pbrpc::Lock* lockRequest::release_lock_request() { + clear_has_lock_request(); + ::xtreemfs::pbrpc::Lock* temp = lock_request_; + lock_request_ = NULL; + return temp; +} +inline void lockRequest::set_allocated_lock_request(::xtreemfs::pbrpc::Lock* lock_request) { + delete lock_request_; + lock_request_ = lock_request; + if (lock_request) { + set_has_lock_request(); + } else { + clear_has_lock_request(); + } +} // ------------------------------------------------------------------- @@ -6936,34 +8184,61 @@ inline ::xtreemfs::pbrpc::Lock* lockRequest::mutable_lock_request() { // required .xtreemfs.pbrpc.VivaldiCoordinates coordinates = 1; inline bool xtreemfs_pingMesssage::has_coordinates() const { - return _has_bit(0); + return (_has_bits_[0] & 0x00000001u) != 0; +} +inline void xtreemfs_pingMesssage::set_has_coordinates() { + _has_bits_[0] |= 0x00000001u; +} +inline void xtreemfs_pingMesssage::clear_has_coordinates() { + _has_bits_[0] &= ~0x00000001u; } inline void xtreemfs_pingMesssage::clear_coordinates() { if (coordinates_ != NULL) coordinates_->::xtreemfs::pbrpc::VivaldiCoordinates::Clear(); - _clear_bit(0); + clear_has_coordinates(); } inline const ::xtreemfs::pbrpc::VivaldiCoordinates& xtreemfs_pingMesssage::coordinates() const { return coordinates_ != NULL ? *coordinates_ : *default_instance_->coordinates_; } inline ::xtreemfs::pbrpc::VivaldiCoordinates* xtreemfs_pingMesssage::mutable_coordinates() { - _set_bit(0); + set_has_coordinates(); if (coordinates_ == NULL) coordinates_ = new ::xtreemfs::pbrpc::VivaldiCoordinates; return coordinates_; } +inline ::xtreemfs::pbrpc::VivaldiCoordinates* xtreemfs_pingMesssage::release_coordinates() { + clear_has_coordinates(); + ::xtreemfs::pbrpc::VivaldiCoordinates* temp = coordinates_; + coordinates_ = NULL; + return temp; +} +inline void xtreemfs_pingMesssage::set_allocated_coordinates(::xtreemfs::pbrpc::VivaldiCoordinates* coordinates) { + delete coordinates_; + coordinates_ = coordinates; + if (coordinates) { + set_has_coordinates(); + } else { + clear_has_coordinates(); + } +} // required bool request_response = 2; inline bool xtreemfs_pingMesssage::has_request_response() const { - return _has_bit(1); + return (_has_bits_[0] & 0x00000002u) != 0; +} +inline void xtreemfs_pingMesssage::set_has_request_response() { + _has_bits_[0] |= 0x00000002u; +} +inline void xtreemfs_pingMesssage::clear_has_request_response() { + _has_bits_[0] &= ~0x00000002u; } inline void xtreemfs_pingMesssage::clear_request_response() { request_response_ = false; - _clear_bit(1); + clear_has_request_response(); } inline bool xtreemfs_pingMesssage::request_response() const { return request_response_; } inline void xtreemfs_pingMesssage::set_request_response(bool value) { - _set_bit(1); + set_has_request_response(); request_response_ = value; } @@ -6973,79 +8248,149 @@ inline void xtreemfs_pingMesssage::set_request_response(bool value) { // required .xtreemfs.pbrpc.FileCredentials file_credentials = 1; inline bool xtreemfs_rwr_auth_stateRequest::has_file_credentials() const { - return _has_bit(0); + return (_has_bits_[0] & 0x00000001u) != 0; +} +inline void xtreemfs_rwr_auth_stateRequest::set_has_file_credentials() { + _has_bits_[0] |= 0x00000001u; +} +inline void xtreemfs_rwr_auth_stateRequest::clear_has_file_credentials() { + _has_bits_[0] &= ~0x00000001u; } inline void xtreemfs_rwr_auth_stateRequest::clear_file_credentials() { if (file_credentials_ != NULL) file_credentials_->::xtreemfs::pbrpc::FileCredentials::Clear(); - _clear_bit(0); + clear_has_file_credentials(); } inline const ::xtreemfs::pbrpc::FileCredentials& xtreemfs_rwr_auth_stateRequest::file_credentials() const { return file_credentials_ != NULL ? *file_credentials_ : *default_instance_->file_credentials_; } inline ::xtreemfs::pbrpc::FileCredentials* xtreemfs_rwr_auth_stateRequest::mutable_file_credentials() { - _set_bit(0); + set_has_file_credentials(); if (file_credentials_ == NULL) file_credentials_ = new ::xtreemfs::pbrpc::FileCredentials; return file_credentials_; } +inline ::xtreemfs::pbrpc::FileCredentials* xtreemfs_rwr_auth_stateRequest::release_file_credentials() { + clear_has_file_credentials(); + ::xtreemfs::pbrpc::FileCredentials* temp = file_credentials_; + file_credentials_ = NULL; + return temp; +} +inline void xtreemfs_rwr_auth_stateRequest::set_allocated_file_credentials(::xtreemfs::pbrpc::FileCredentials* file_credentials) { + delete file_credentials_; + file_credentials_ = file_credentials; + if (file_credentials) { + set_has_file_credentials(); + } else { + clear_has_file_credentials(); + } +} // required string file_id = 2; inline bool xtreemfs_rwr_auth_stateRequest::has_file_id() const { - return _has_bit(1); + return (_has_bits_[0] & 0x00000002u) != 0; +} +inline void xtreemfs_rwr_auth_stateRequest::set_has_file_id() { + _has_bits_[0] |= 0x00000002u; +} +inline void xtreemfs_rwr_auth_stateRequest::clear_has_file_id() { + _has_bits_[0] &= ~0x00000002u; } inline void xtreemfs_rwr_auth_stateRequest::clear_file_id() { - if (file_id_ != &_default_file_id_) { + if (file_id_ != &::google::protobuf::internal::kEmptyString) { file_id_->clear(); } - _clear_bit(1); + clear_has_file_id(); } inline const ::std::string& xtreemfs_rwr_auth_stateRequest::file_id() const { return *file_id_; } inline void xtreemfs_rwr_auth_stateRequest::set_file_id(const ::std::string& value) { - _set_bit(1); - if (file_id_ == &_default_file_id_) { + set_has_file_id(); + if (file_id_ == &::google::protobuf::internal::kEmptyString) { file_id_ = new ::std::string; } file_id_->assign(value); } inline void xtreemfs_rwr_auth_stateRequest::set_file_id(const char* value) { - _set_bit(1); - if (file_id_ == &_default_file_id_) { + set_has_file_id(); + if (file_id_ == &::google::protobuf::internal::kEmptyString) { file_id_ = new ::std::string; } file_id_->assign(value); } inline void xtreemfs_rwr_auth_stateRequest::set_file_id(const char* value, size_t size) { - _set_bit(1); - if (file_id_ == &_default_file_id_) { + set_has_file_id(); + if (file_id_ == &::google::protobuf::internal::kEmptyString) { file_id_ = new ::std::string; } file_id_->assign(reinterpret_cast(value), size); } inline ::std::string* xtreemfs_rwr_auth_stateRequest::mutable_file_id() { - _set_bit(1); - if (file_id_ == &_default_file_id_) { + set_has_file_id(); + if (file_id_ == &::google::protobuf::internal::kEmptyString) { file_id_ = new ::std::string; } return file_id_; } +inline ::std::string* xtreemfs_rwr_auth_stateRequest::release_file_id() { + clear_has_file_id(); + if (file_id_ == &::google::protobuf::internal::kEmptyString) { + return NULL; + } else { + ::std::string* temp = file_id_; + file_id_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + return temp; + } +} +inline void xtreemfs_rwr_auth_stateRequest::set_allocated_file_id(::std::string* file_id) { + if (file_id_ != &::google::protobuf::internal::kEmptyString) { + delete file_id_; + } + if (file_id) { + set_has_file_id(); + file_id_ = file_id; + } else { + clear_has_file_id(); + file_id_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + } +} // required .xtreemfs.pbrpc.AuthoritativeReplicaState state = 3; inline bool xtreemfs_rwr_auth_stateRequest::has_state() const { - return _has_bit(2); + return (_has_bits_[0] & 0x00000004u) != 0; +} +inline void xtreemfs_rwr_auth_stateRequest::set_has_state() { + _has_bits_[0] |= 0x00000004u; +} +inline void xtreemfs_rwr_auth_stateRequest::clear_has_state() { + _has_bits_[0] &= ~0x00000004u; } inline void xtreemfs_rwr_auth_stateRequest::clear_state() { if (state_ != NULL) state_->::xtreemfs::pbrpc::AuthoritativeReplicaState::Clear(); - _clear_bit(2); + clear_has_state(); } inline const ::xtreemfs::pbrpc::AuthoritativeReplicaState& xtreemfs_rwr_auth_stateRequest::state() const { return state_ != NULL ? *state_ : *default_instance_->state_; } inline ::xtreemfs::pbrpc::AuthoritativeReplicaState* xtreemfs_rwr_auth_stateRequest::mutable_state() { - _set_bit(2); + set_has_state(); if (state_ == NULL) state_ = new ::xtreemfs::pbrpc::AuthoritativeReplicaState; return state_; } +inline ::xtreemfs::pbrpc::AuthoritativeReplicaState* xtreemfs_rwr_auth_stateRequest::release_state() { + clear_has_state(); + ::xtreemfs::pbrpc::AuthoritativeReplicaState* temp = state_; + state_ = NULL; + return temp; +} +inline void xtreemfs_rwr_auth_stateRequest::set_allocated_state(::xtreemfs::pbrpc::AuthoritativeReplicaState* state) { + delete state_; + state_ = state; + if (state) { + set_has_state(); + } else { + clear_has_state(); + } +} // ------------------------------------------------------------------- @@ -7053,76 +8398,131 @@ inline ::xtreemfs::pbrpc::AuthoritativeReplicaState* xtreemfs_rwr_auth_stateRequ // required .xtreemfs.pbrpc.FileCredentials file_credentials = 1; inline bool xtreemfs_rwr_reset_completeRequest::has_file_credentials() const { - return _has_bit(0); + return (_has_bits_[0] & 0x00000001u) != 0; +} +inline void xtreemfs_rwr_reset_completeRequest::set_has_file_credentials() { + _has_bits_[0] |= 0x00000001u; +} +inline void xtreemfs_rwr_reset_completeRequest::clear_has_file_credentials() { + _has_bits_[0] &= ~0x00000001u; } inline void xtreemfs_rwr_reset_completeRequest::clear_file_credentials() { if (file_credentials_ != NULL) file_credentials_->::xtreemfs::pbrpc::FileCredentials::Clear(); - _clear_bit(0); + clear_has_file_credentials(); } inline const ::xtreemfs::pbrpc::FileCredentials& xtreemfs_rwr_reset_completeRequest::file_credentials() const { return file_credentials_ != NULL ? *file_credentials_ : *default_instance_->file_credentials_; } inline ::xtreemfs::pbrpc::FileCredentials* xtreemfs_rwr_reset_completeRequest::mutable_file_credentials() { - _set_bit(0); + set_has_file_credentials(); if (file_credentials_ == NULL) file_credentials_ = new ::xtreemfs::pbrpc::FileCredentials; return file_credentials_; } +inline ::xtreemfs::pbrpc::FileCredentials* xtreemfs_rwr_reset_completeRequest::release_file_credentials() { + clear_has_file_credentials(); + ::xtreemfs::pbrpc::FileCredentials* temp = file_credentials_; + file_credentials_ = NULL; + return temp; +} +inline void xtreemfs_rwr_reset_completeRequest::set_allocated_file_credentials(::xtreemfs::pbrpc::FileCredentials* file_credentials) { + delete file_credentials_; + file_credentials_ = file_credentials; + if (file_credentials) { + set_has_file_credentials(); + } else { + clear_has_file_credentials(); + } +} // required string file_id = 2; inline bool xtreemfs_rwr_reset_completeRequest::has_file_id() const { - return _has_bit(1); + return (_has_bits_[0] & 0x00000002u) != 0; +} +inline void xtreemfs_rwr_reset_completeRequest::set_has_file_id() { + _has_bits_[0] |= 0x00000002u; +} +inline void xtreemfs_rwr_reset_completeRequest::clear_has_file_id() { + _has_bits_[0] &= ~0x00000002u; } inline void xtreemfs_rwr_reset_completeRequest::clear_file_id() { - if (file_id_ != &_default_file_id_) { + if (file_id_ != &::google::protobuf::internal::kEmptyString) { file_id_->clear(); } - _clear_bit(1); + clear_has_file_id(); } inline const ::std::string& xtreemfs_rwr_reset_completeRequest::file_id() const { return *file_id_; } inline void xtreemfs_rwr_reset_completeRequest::set_file_id(const ::std::string& value) { - _set_bit(1); - if (file_id_ == &_default_file_id_) { + set_has_file_id(); + if (file_id_ == &::google::protobuf::internal::kEmptyString) { file_id_ = new ::std::string; } file_id_->assign(value); } inline void xtreemfs_rwr_reset_completeRequest::set_file_id(const char* value) { - _set_bit(1); - if (file_id_ == &_default_file_id_) { + set_has_file_id(); + if (file_id_ == &::google::protobuf::internal::kEmptyString) { file_id_ = new ::std::string; } file_id_->assign(value); } inline void xtreemfs_rwr_reset_completeRequest::set_file_id(const char* value, size_t size) { - _set_bit(1); - if (file_id_ == &_default_file_id_) { + set_has_file_id(); + if (file_id_ == &::google::protobuf::internal::kEmptyString) { file_id_ = new ::std::string; } file_id_->assign(reinterpret_cast(value), size); } inline ::std::string* xtreemfs_rwr_reset_completeRequest::mutable_file_id() { - _set_bit(1); - if (file_id_ == &_default_file_id_) { + set_has_file_id(); + if (file_id_ == &::google::protobuf::internal::kEmptyString) { file_id_ = new ::std::string; } return file_id_; } +inline ::std::string* xtreemfs_rwr_reset_completeRequest::release_file_id() { + clear_has_file_id(); + if (file_id_ == &::google::protobuf::internal::kEmptyString) { + return NULL; + } else { + ::std::string* temp = file_id_; + file_id_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + return temp; + } +} +inline void xtreemfs_rwr_reset_completeRequest::set_allocated_file_id(::std::string* file_id) { + if (file_id_ != &::google::protobuf::internal::kEmptyString) { + delete file_id_; + } + if (file_id) { + set_has_file_id(); + file_id_ = file_id; + } else { + clear_has_file_id(); + file_id_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + } +} // required fixed32 primary_epoch = 3; inline bool xtreemfs_rwr_reset_completeRequest::has_primary_epoch() const { - return _has_bit(2); + return (_has_bits_[0] & 0x00000004u) != 0; +} +inline void xtreemfs_rwr_reset_completeRequest::set_has_primary_epoch() { + _has_bits_[0] |= 0x00000004u; +} +inline void xtreemfs_rwr_reset_completeRequest::clear_has_primary_epoch() { + _has_bits_[0] &= ~0x00000004u; } inline void xtreemfs_rwr_reset_completeRequest::clear_primary_epoch() { primary_epoch_ = 0u; - _clear_bit(2); + clear_has_primary_epoch(); } inline ::google::protobuf::uint32 xtreemfs_rwr_reset_completeRequest::primary_epoch() const { return primary_epoch_; } inline void xtreemfs_rwr_reset_completeRequest::set_primary_epoch(::google::protobuf::uint32 value) { - _set_bit(2); + set_has_primary_epoch(); primary_epoch_ = value; } diff --git a/cpp/generated/xtreemfs/OSDServiceClient.h b/cpp/generated/xtreemfs/OSDServiceClient.h index 259a8ded8..482d93f43 100644 --- a/cpp/generated/xtreemfs/OSDServiceClient.h +++ b/cpp/generated/xtreemfs/OSDServiceClient.h @@ -1,4 +1,4 @@ -//automatically generated from OSD.proto at Wed Aug 28 12:26:19 CEST 2013 +//automatically generated from OSD.proto at Mon Nov 11 11:46:59 CET 2013 //(c) 2013. See LICENSE file for details. #ifndef OSDSERVICECLIENT_H @@ -305,6 +305,29 @@ namespace pbrpc { return sync_cb; } + void xtreemfs_repair_object(const std::string &address, + const xtreemfs::pbrpc::Auth& auth, + const xtreemfs::pbrpc::UserCredentials &creds, + const xtreemfs::pbrpc::xtreemfs_repair_objectRequest* request, + CallbackInterface *callback, void *context = NULL) { + const char* data = NULL; uint32_t data_length = 0; + client_->sendRequest(address, 30001, 36, + creds, auth, request, data, data_length, NULL, + context, callback); + } + + SyncCallback* xtreemfs_repair_object_sync(const std::string &address, + const xtreemfs::pbrpc::Auth& auth, + const xtreemfs::pbrpc::UserCredentials &creds + , const xtreemfs::pbrpc::xtreemfs_repair_objectRequest* request) { + const char* data = NULL; uint32_t data_length = 0; + SyncCallback* sync_cb = new SyncCallback(); + client_->sendRequest(address, 30001, 36, + creds, auth, request, data, data_length, NULL, + NULL, sync_cb); + return sync_cb; + } + void xtreemfs_rwr_fetch(const std::string &address, const xtreemfs::pbrpc::Auth& auth, const xtreemfs::pbrpc::UserCredentials &creds, diff --git a/cpp/generated/xtreemfs/OSDServiceConstants.h b/cpp/generated/xtreemfs/OSDServiceConstants.h index 7ad24aacb..1716d676d 100644 --- a/cpp/generated/xtreemfs/OSDServiceConstants.h +++ b/cpp/generated/xtreemfs/OSDServiceConstants.h @@ -1,4 +1,4 @@ -//automatically generated from OSD.proto at Thu Mar 21 17:09:46 CET 2013 +//automatically generated from OSD.proto at Mon Nov 11 11:46:59 CET 2013 //(c) 2013. See LICENSE file for details. #ifndef OSDSERVICECONSTANTS_H_ @@ -21,6 +21,7 @@ const uint32_t PROC_ID_XTREEMFS_CLEANUP_START = 32; const uint32_t PROC_ID_XTREEMFS_CLEANUP_STATUS = 33; const uint32_t PROC_ID_XTREEMFS_CLEANUP_STOP = 34; const uint32_t PROC_ID_XTREEMFS_CLEANUP_VERSIONS_START = 35; +const uint32_t PROC_ID_XTREEMFS_REPAIR_OBJECT = 36; const uint32_t PROC_ID_XTREEMFS_RWR_FETCH = 73; const uint32_t PROC_ID_XTREEMFS_RWR_FLEASE_MSG = 71; const uint32_t PROC_ID_XTREEMFS_RWR_NOTIFY = 75; diff --git a/cpp/generated/xtreemfs/get_request_message.cc b/cpp/generated/xtreemfs/get_request_message.cc index 64461ea9a..993735030 100644 --- a/cpp/generated/xtreemfs/get_request_message.cc +++ b/cpp/generated/xtreemfs/get_request_message.cc @@ -1,4 +1,4 @@ -//automatically generated at Wed Aug 28 12:26:19 CEST 2013 +//automatically generated at Mon Nov 11 11:46:59 CET 2013 //(c) 2013. See LICENSE file for details. #include "xtreemfs/get_request_message.h" @@ -308,6 +308,10 @@ google::protobuf::Message* GetMessageForProcID(uint32_t interface_id, return new xtreemfs::pbrpc::emptyRequest(); break; } + case 36: { + return new xtreemfs::pbrpc::xtreemfs_repair_objectRequest(); + break; + } case 73: { return new xtreemfs::pbrpc::xtreemfs_rwr_fetchRequest(); break; diff --git a/cpp/generated/xtreemfs/get_request_message.h b/cpp/generated/xtreemfs/get_request_message.h index ab89ae772..bd987270b 100644 --- a/cpp/generated/xtreemfs/get_request_message.h +++ b/cpp/generated/xtreemfs/get_request_message.h @@ -1,4 +1,4 @@ -//automatically generated at Thu Mar 21 17:09:46 CET 2013 +//automatically generated at Mon Nov 11 11:46:59 CET 2013 //(c) 2013. See LICENSE file for details. #ifndef CPP_GENERATED_XTREEMFS_GET_REQUEST_MESSAGE_H_ diff --git a/cpp/src/libxtreemfs/volume_implementation.cpp b/cpp/src/libxtreemfs/volume_implementation.cpp index 7ddce407c..301250cb1 100644 --- a/cpp/src/libxtreemfs/volume_implementation.cpp +++ b/cpp/src/libxtreemfs/volume_implementation.cpp @@ -1120,7 +1120,7 @@ void VolumeImplementation::SetXAttr( // For unknown reasons this fails if c_str() is not used, for instance if the // value is set to the character '\002'. rq.set_value(value.c_str()); - rq.set_value_bytes(value.c_str(), value.size()); + rq.set_value_bytes_string(value.c_str(), value.size()); rq.set_flags(flags); boost::scoped_ptr response( @@ -1170,8 +1170,8 @@ bool VolumeImplementation::GetXAttr( RPCOptionsFromOptions(volume_options_))); getxattrResponse* get_response = static_cast( response->response()); - if (get_response->has_value_bytes()) { - *value = get_response->value_bytes(); + if (get_response->has_value_bytes_string()) { + *value = get_response->value_bytes_string(); response->DeleteBuffers(); return true; } else if (get_response->has_value()) { @@ -1202,8 +1202,9 @@ bool VolumeImplementation::GetXAttr( for (int i = 0; i < xattrs->xattrs_size(); i++) { if (xattrs->xattrs(i).name() == name) { assert(xattrs->xattrs(i).has_value()); - if (xattrs->xattrs(i).has_value_bytes()) { - *value = xattrs->xattrs(i).value_bytes(); + if (xattrs->xattrs(i).has_value_bytes_string + ()) { + *value = xattrs->xattrs(i).value_bytes_string(); } else { *value = xattrs->xattrs(i).value(); } @@ -1255,8 +1256,8 @@ bool VolumeImplementation::GetXAttrSize( for (int i = 0; i < xattrs->xattrs_size(); i++) { if (xattrs->xattrs(i).name() == name) { assert(xattrs->xattrs(i).has_value()); - if (xattrs->xattrs(i).has_value_bytes()) { - *size = xattrs->xattrs(i).value_bytes().size(); + if (xattrs->xattrs(i).has_value_bytes_string()) { + *size = xattrs->xattrs(i).value_bytes_string().size(); } else { *size = xattrs->xattrs(i).value().size(); } diff --git a/cpp/thirdparty/gtest-1.5.0/configure b/cpp/thirdparty/gtest-1.5.0/configure index d27260437..2c479a8ef 100755 --- a/cpp/thirdparty/gtest-1.5.0/configure +++ b/cpp/thirdparty/gtest-1.5.0/configure @@ -1,62 +1,83 @@ #! /bin/sh # Guess values for system-dependent variables and create Makefiles. -# Generated by GNU Autoconf 2.61 for Google C++ Testing Framework 1.5.0. +# Generated by GNU Autoconf 2.69 for Google C++ Testing Framework 1.5.0. # # Report bugs to . # -# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001, -# 2002, 2003, 2004, 2005, 2006 Free Software Foundation, Inc. +# +# Copyright (C) 1992-1996, 1998-2012 Free Software Foundation, Inc. +# +# # This configure script is free software; the Free Software Foundation # gives unlimited permission to copy, distribute and modify it. -## --------------------- ## -## M4sh Initialization. ## -## --------------------- ## +## -------------------- ## +## M4sh Initialization. ## +## -------------------- ## # Be more Bourne compatible DUALCASE=1; export DUALCASE # for MKS sh -if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then +if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then : emulate sh NULLCMD=: - # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which + # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which # is contrary to our usage. Disable this feature. alias -g '${1+"$@"}'='"$@"' setopt NO_GLOB_SUBST else - case `(set -o) 2>/dev/null` in - *posix*) set -o posix ;; + case `(set -o) 2>/dev/null` in #( + *posix*) : + set -o posix ;; #( + *) : + ;; esac - fi - - -# PATH needs CR -# Avoid depending upon Character Ranges. -as_cr_letters='abcdefghijklmnopqrstuvwxyz' -as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' -as_cr_Letters=$as_cr_letters$as_cr_LETTERS -as_cr_digits='0123456789' -as_cr_alnum=$as_cr_Letters$as_cr_digits - -# The user is always right. -if test "${PATH_SEPARATOR+set}" != set; then - echo "#! /bin/sh" >conf$$.sh - echo "exit 0" >>conf$$.sh - chmod +x conf$$.sh - if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then - PATH_SEPARATOR=';' +as_nl=' +' +export as_nl +# Printing a long string crashes Solaris 7 /usr/bin/printf. +as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' +as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo +as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo +# Prefer a ksh shell builtin over an external printf program on Solaris, +# but without wasting forks for bash or zsh. +if test -z "$BASH_VERSION$ZSH_VERSION" \ + && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then + as_echo='print -r --' + as_echo_n='print -rn --' +elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then + as_echo='printf %s\n' + as_echo_n='printf %s' +else + if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then + as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"' + as_echo_n='/usr/ucb/echo -n' else - PATH_SEPARATOR=: + as_echo_body='eval expr "X$1" : "X\\(.*\\)"' + as_echo_n_body='eval + arg=$1; + case $arg in #( + *"$as_nl"*) + expr "X$arg" : "X\\(.*\\)$as_nl"; + arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;; + esac; + expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl" + ' + export as_echo_n_body + as_echo_n='sh -c $as_echo_n_body as_echo' fi - rm -f conf$$.sh + export as_echo_body + as_echo='sh -c $as_echo_body as_echo' fi -# Support unset when possible. -if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then - as_unset=unset -else - as_unset=false +# The user is always right. +if test "${PATH_SEPARATOR+set}" != set; then + PATH_SEPARATOR=: + (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { + (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || + PATH_SEPARATOR=';' + } fi @@ -65,20 +86,19 @@ fi # there to prevent editors from complaining about space-tab. # (If _AS_PATH_WALK were called with IFS unset, it would disable word # splitting by setting IFS to empty value.) -as_nl=' -' IFS=" "" $as_nl" # Find who we are. Look in the path if we contain no directory separator. -case $0 in +as_myself= +case $0 in #(( *[\\/]* ) as_myself=$0 ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. - test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break -done + test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break + done IFS=$as_save_IFS ;; @@ -89,354 +109,367 @@ if test "x$as_myself" = x; then as_myself=$0 fi if test ! -f "$as_myself"; then - echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 - { (exit 1); exit 1; } + $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 + exit 1 fi -# Work around bugs in pre-3.0 UWIN ksh. -for as_var in ENV MAIL MAILPATH -do ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var +# Unset variables that we do not need and which cause bugs (e.g. in +# pre-3.0 UWIN ksh). But do not cause bugs in bash 2.01; the "|| exit 1" +# suppresses any "Segmentation fault" message there. '((' could +# trigger a bug in pdksh 5.2.14. +for as_var in BASH_ENV ENV MAIL MAILPATH +do eval test x\${$as_var+set} = xset \ + && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : done PS1='$ ' PS2='> ' PS4='+ ' # NLS nuisances. -for as_var in \ - LANG LANGUAGE LC_ADDRESS LC_ALL LC_COLLATE LC_CTYPE LC_IDENTIFICATION \ - LC_MEASUREMENT LC_MESSAGES LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER \ - LC_TELEPHONE LC_TIME -do - if (set +x; test -z "`(eval $as_var=C; export $as_var) 2>&1`"); then - eval $as_var=C; export $as_var - else - ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var - fi -done - -# Required to use basename. -if expr a : '\(a\)' >/dev/null 2>&1 && - test "X`expr 00001 : '.*\(...\)'`" = X001; then - as_expr=expr -else - as_expr=false -fi - -if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then - as_basename=basename -else - as_basename=false -fi - - -# Name of the executable. -as_me=`$as_basename -- "$0" || -$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ - X"$0" : 'X\(//\)$' \| \ - X"$0" : 'X\(/\)' \| . 2>/dev/null || -echo X/"$0" | - sed '/^.*\/\([^/][^/]*\)\/*$/{ - s//\1/ - q - } - /^X\/\(\/\/\)$/{ - s//\1/ - q - } - /^X\/\(\/\).*/{ - s//\1/ - q - } - s/.*/./; q'` +LC_ALL=C +export LC_ALL +LANGUAGE=C +export LANGUAGE # CDPATH. -$as_unset CDPATH - +(unset CDPATH) >/dev/null 2>&1 && unset CDPATH +# Use a proper internal environment variable to ensure we don't fall + # into an infinite loop, continuously re-executing ourselves. + if test x"${_as_can_reexec}" != xno && test "x$CONFIG_SHELL" != x; then + _as_can_reexec=no; export _as_can_reexec; + # We cannot yet assume a decent shell, so we have to provide a +# neutralization value for shells without unset; and this also +# works around shells that cannot unset nonexistent variables. +# Preserve -v and -x to the replacement shell. +BASH_ENV=/dev/null +ENV=/dev/null +(unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV +case $- in # (((( + *v*x* | *x*v* ) as_opts=-vx ;; + *v* ) as_opts=-v ;; + *x* ) as_opts=-x ;; + * ) as_opts= ;; +esac +exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"} +# Admittedly, this is quite paranoid, since all the known shells bail +# out after a failed `exec'. +$as_echo "$0: could not re-execute with $CONFIG_SHELL" >&2 +as_fn_exit 255 + fi + # We don't want this to propagate to other subprocesses. + { _as_can_reexec=; unset _as_can_reexec;} if test "x$CONFIG_SHELL" = x; then - if (eval ":") 2>/dev/null; then - as_have_required=yes + as_bourne_compatible="if test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then : + emulate sh + NULLCMD=: + # Pre-4.2 versions of Zsh do word splitting on \${1+\"\$@\"}, which + # is contrary to our usage. Disable this feature. + alias -g '\${1+\"\$@\"}'='\"\$@\"' + setopt NO_GLOB_SUBST else - as_have_required=no + case \`(set -o) 2>/dev/null\` in #( + *posix*) : + set -o posix ;; #( + *) : + ;; +esac fi - - if test $as_have_required = yes && (eval ": -(as_func_return () { - (exit \$1) -} -as_func_success () { - as_func_return 0 -} -as_func_failure () { - as_func_return 1 -} -as_func_ret_success () { - return 0 -} -as_func_ret_failure () { - return 1 -} +" + as_required="as_fn_return () { (exit \$1); } +as_fn_success () { as_fn_return 0; } +as_fn_failure () { as_fn_return 1; } +as_fn_ret_success () { return 0; } +as_fn_ret_failure () { return 1; } exitcode=0 -if as_func_success; then - : -else - exitcode=1 - echo as_func_success failed. -fi - -if as_func_failure; then - exitcode=1 - echo as_func_failure succeeded. -fi - -if as_func_ret_success; then - : -else - exitcode=1 - echo as_func_ret_success failed. -fi - -if as_func_ret_failure; then - exitcode=1 - echo as_func_ret_failure succeeded. -fi - -if ( set x; as_func_ret_success y && test x = \"\$1\" ); then - : +as_fn_success || { exitcode=1; echo as_fn_success failed.; } +as_fn_failure && { exitcode=1; echo as_fn_failure succeeded.; } +as_fn_ret_success || { exitcode=1; echo as_fn_ret_success failed.; } +as_fn_ret_failure && { exitcode=1; echo as_fn_ret_failure succeeded.; } +if ( set x; as_fn_ret_success y && test x = \"\$1\" ); then : + +else + exitcode=1; echo positional parameters were not saved. +fi +test x\$exitcode = x0 || exit 1 +test -x / || exit 1" + as_suggested=" as_lineno_1=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_1a=\$LINENO + as_lineno_2=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_2a=\$LINENO + eval 'test \"x\$as_lineno_1'\$as_run'\" != \"x\$as_lineno_2'\$as_run'\" && + test \"x\`expr \$as_lineno_1'\$as_run' + 1\`\" = \"x\$as_lineno_2'\$as_run'\"' || exit 1 +test \$(( 1 + 1 )) = 2 || exit 1" + if (eval "$as_required") 2>/dev/null; then : + as_have_required=yes else - exitcode=1 - echo positional parameters were not saved. + as_have_required=no fi + if test x$as_have_required = xyes && (eval "$as_suggested") 2>/dev/null; then : -test \$exitcode = 0) || { (exit 1); exit 1; } - -( - as_lineno_1=\$LINENO - as_lineno_2=\$LINENO - test \"x\$as_lineno_1\" != \"x\$as_lineno_2\" && - test \"x\`expr \$as_lineno_1 + 1\`\" = \"x\$as_lineno_2\") || { (exit 1); exit 1; } -") 2> /dev/null; then - : else - as_candidate_shells= - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +as_found=false for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. - case $as_dir in + as_found=: + case $as_dir in #( /*) for as_base in sh bash ksh sh5; do - as_candidate_shells="$as_candidate_shells $as_dir/$as_base" + # Try only shells that exist, to save several forks. + as_shell=$as_dir/$as_base + if { test -f "$as_shell" || test -f "$as_shell.exe"; } && + { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$as_shell"; } 2>/dev/null; then : + CONFIG_SHELL=$as_shell as_have_required=yes + if { $as_echo "$as_bourne_compatible""$as_suggested" | as_run=a "$as_shell"; } 2>/dev/null; then : + break 2 +fi +fi done;; esac + as_found=false done +$as_found || { if { test -f "$SHELL" || test -f "$SHELL.exe"; } && + { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$SHELL"; } 2>/dev/null; then : + CONFIG_SHELL=$SHELL as_have_required=yes +fi; } IFS=$as_save_IFS - for as_shell in $as_candidate_shells $SHELL; do - # Try only shells that exist, to save several forks. - if { test -f "$as_shell" || test -f "$as_shell.exe"; } && - { ("$as_shell") 2> /dev/null <<\_ASEOF -if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then - emulate sh - NULLCMD=: - # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which - # is contrary to our usage. Disable this feature. - alias -g '${1+"$@"}'='"$@"' - setopt NO_GLOB_SUBST -else - case `(set -o) 2>/dev/null` in - *posix*) set -o posix ;; -esac - -fi - - -: -_ASEOF -}; then - CONFIG_SHELL=$as_shell - as_have_required=yes - if { "$as_shell" 2> /dev/null <<\_ASEOF -if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then - emulate sh - NULLCMD=: - # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which - # is contrary to our usage. Disable this feature. - alias -g '${1+"$@"}'='"$@"' - setopt NO_GLOB_SUBST -else - case `(set -o) 2>/dev/null` in - *posix*) set -o posix ;; + if test "x$CONFIG_SHELL" != x; then : + export CONFIG_SHELL + # We cannot yet assume a decent shell, so we have to provide a +# neutralization value for shells without unset; and this also +# works around shells that cannot unset nonexistent variables. +# Preserve -v and -x to the replacement shell. +BASH_ENV=/dev/null +ENV=/dev/null +(unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV +case $- in # (((( + *v*x* | *x*v* ) as_opts=-vx ;; + *v* ) as_opts=-v ;; + *x* ) as_opts=-x ;; + * ) as_opts= ;; esac - -fi - - -: -(as_func_return () { - (exit $1) -} -as_func_success () { - as_func_return 0 -} -as_func_failure () { - as_func_return 1 -} -as_func_ret_success () { - return 0 -} -as_func_ret_failure () { - return 1 -} - -exitcode=0 -if as_func_success; then - : -else - exitcode=1 - echo as_func_success failed. -fi - -if as_func_failure; then - exitcode=1 - echo as_func_failure succeeded. -fi - -if as_func_ret_success; then - : -else - exitcode=1 - echo as_func_ret_success failed. -fi - -if as_func_ret_failure; then - exitcode=1 - echo as_func_ret_failure succeeded. -fi - -if ( set x; as_func_ret_success y && test x = "$1" ); then - : -else - exitcode=1 - echo positional parameters were not saved. +exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"} +# Admittedly, this is quite paranoid, since all the known shells bail +# out after a failed `exec'. +$as_echo "$0: could not re-execute with $CONFIG_SHELL" >&2 +exit 255 +fi + + if test x$as_have_required = xno; then : + $as_echo "$0: This script requires a shell more modern than all" + $as_echo "$0: the shells that I found on your system." + if test x${ZSH_VERSION+set} = xset ; then + $as_echo "$0: In particular, zsh $ZSH_VERSION has bugs and should" + $as_echo "$0: be upgraded to zsh 4.3.4 or later." + else + $as_echo "$0: Please tell bug-autoconf@gnu.org and +$0: googletestframework@googlegroups.com about your system, +$0: including any error possibly output before this +$0: message. Then install a modern shell, or manually run +$0: the script under such a shell if you do have one." + fi + exit 1 fi - -test $exitcode = 0) || { (exit 1); exit 1; } - -( - as_lineno_1=$LINENO - as_lineno_2=$LINENO - test "x$as_lineno_1" != "x$as_lineno_2" && - test "x`expr $as_lineno_1 + 1`" = "x$as_lineno_2") || { (exit 1); exit 1; } - -_ASEOF -}; then - break fi - fi +SHELL=${CONFIG_SHELL-/bin/sh} +export SHELL +# Unset more variables known to interfere with behavior of common tools. +CLICOLOR_FORCE= GREP_OPTIONS= +unset CLICOLOR_FORCE GREP_OPTIONS - done - - if test "x$CONFIG_SHELL" != x; then - for as_var in BASH_ENV ENV - do ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var - done - export CONFIG_SHELL - exec "$CONFIG_SHELL" "$as_myself" ${1+"$@"} -fi +## --------------------- ## +## M4sh Shell Functions. ## +## --------------------- ## +# as_fn_unset VAR +# --------------- +# Portably unset VAR. +as_fn_unset () +{ + { eval $1=; unset $1;} +} +as_unset=as_fn_unset +# as_fn_set_status STATUS +# ----------------------- +# Set $? to STATUS, without forking. +as_fn_set_status () +{ + return $1 +} # as_fn_set_status - if test $as_have_required = no; then - echo This script requires a shell more modern than all the - echo shells that I found on your system. Please install a - echo modern shell, or manually run the script under such a - echo shell if you do have one. - { (exit 1); exit 1; } -fi +# as_fn_exit STATUS +# ----------------- +# Exit the shell with STATUS, even in a "trap 0" or "set -e" context. +as_fn_exit () +{ + set +e + as_fn_set_status $1 + exit $1 +} # as_fn_exit + +# as_fn_mkdir_p +# ------------- +# Create "$as_dir" as a directory, including parents if necessary. +as_fn_mkdir_p () +{ + case $as_dir in #( + -*) as_dir=./$as_dir;; + esac + test -d "$as_dir" || eval $as_mkdir_p || { + as_dirs= + while :; do + case $as_dir in #( + *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( + *) as_qdir=$as_dir;; + esac + as_dirs="'$as_qdir' $as_dirs" + as_dir=`$as_dirname -- "$as_dir" || +$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$as_dir" : 'X\(//\)[^/]' \| \ + X"$as_dir" : 'X\(//\)$' \| \ + X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || +$as_echo X"$as_dir" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + test -d "$as_dir" && break + done + test -z "$as_dirs" || eval "mkdir $as_dirs" + } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir" -fi -fi +} # as_fn_mkdir_p +# as_fn_executable_p FILE +# ----------------------- +# Test if FILE is an executable regular file. +as_fn_executable_p () +{ + test -f "$1" && test -x "$1" +} # as_fn_executable_p +# as_fn_append VAR VALUE +# ---------------------- +# Append the text in VALUE to the end of the definition contained in VAR. Take +# advantage of any shell optimizations that allow amortized linear growth over +# repeated appends, instead of the typical quadratic growth present in naive +# implementations. +if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then : + eval 'as_fn_append () + { + eval $1+=\$2 + }' +else + as_fn_append () + { + eval $1=\$$1\$2 + } +fi # as_fn_append + +# as_fn_arith ARG... +# ------------------ +# Perform arithmetic evaluation on the ARGs, and store the result in the +# global $as_val. Take advantage of shells that can avoid forks. The arguments +# must be portable across $(()) and expr. +if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then : + eval 'as_fn_arith () + { + as_val=$(( $* )) + }' +else + as_fn_arith () + { + as_val=`expr "$@" || test $? -eq 1` + } +fi # as_fn_arith -(eval "as_func_return () { - (exit \$1) -} -as_func_success () { - as_func_return 0 -} -as_func_failure () { - as_func_return 1 -} -as_func_ret_success () { - return 0 -} -as_func_ret_failure () { - return 1 -} +# as_fn_error STATUS ERROR [LINENO LOG_FD] +# ---------------------------------------- +# Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are +# provided, also output the error to LOG_FD, referencing LINENO. Then exit the +# script with STATUS, using 1 if that was 0. +as_fn_error () +{ + as_status=$1; test $as_status -eq 0 && as_status=1 + if test "$4"; then + as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4 + fi + $as_echo "$as_me: error: $2" >&2 + as_fn_exit $as_status +} # as_fn_error -exitcode=0 -if as_func_success; then - : +if expr a : '\(a\)' >/dev/null 2>&1 && + test "X`expr 00001 : '.*\(...\)'`" = X001; then + as_expr=expr else - exitcode=1 - echo as_func_success failed. -fi - -if as_func_failure; then - exitcode=1 - echo as_func_failure succeeded. + as_expr=false fi -if as_func_ret_success; then - : +if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then + as_basename=basename else - exitcode=1 - echo as_func_ret_success failed. -fi - -if as_func_ret_failure; then - exitcode=1 - echo as_func_ret_failure succeeded. + as_basename=false fi -if ( set x; as_func_ret_success y && test x = \"\$1\" ); then - : +if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then + as_dirname=dirname else - exitcode=1 - echo positional parameters were not saved. + as_dirname=false fi -test \$exitcode = 0") || { - echo No shell found that supports shell functions. - echo Please tell autoconf@gnu.org about your system, - echo including any error possibly output before this - echo message -} - +as_me=`$as_basename -- "$0" || +$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ + X"$0" : 'X\(//\)$' \| \ + X"$0" : 'X\(/\)' \| . 2>/dev/null || +$as_echo X/"$0" | + sed '/^.*\/\([^/][^/]*\)\/*$/{ + s//\1/ + q + } + /^X\/\(\/\/\)$/{ + s//\1/ + q + } + /^X\/\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` +# Avoid depending upon Character Ranges. +as_cr_letters='abcdefghijklmnopqrstuvwxyz' +as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' +as_cr_Letters=$as_cr_letters$as_cr_LETTERS +as_cr_digits='0123456789' +as_cr_alnum=$as_cr_Letters$as_cr_digits - as_lineno_1=$LINENO - as_lineno_2=$LINENO - test "x$as_lineno_1" != "x$as_lineno_2" && - test "x`expr $as_lineno_1 + 1`" = "x$as_lineno_2" || { - # Create $as_me.lineno as a copy of $as_myself, but with $LINENO - # uniformly replaced by the line number. The first 'sed' inserts a - # line-number line after each line using $LINENO; the second 'sed' - # does the real work. The second script uses 'N' to pair each - # line-number line with the line containing $LINENO, and appends - # trailing '-' during substitution so that $LINENO is not a special - # case at line end. - # (Raja R Harinath suggested sed '=', and Paul Eggert wrote the - # scripts with optimization help from Paolo Bonzini. Blame Lee - # E. McMahon (1931-1989) for sed's syntax. :-) + as_lineno_1=$LINENO as_lineno_1a=$LINENO + as_lineno_2=$LINENO as_lineno_2a=$LINENO + eval 'test "x$as_lineno_1'$as_run'" != "x$as_lineno_2'$as_run'" && + test "x`expr $as_lineno_1'$as_run' + 1`" = "x$as_lineno_2'$as_run'"' || { + # Blame Lee E. McMahon (1931-1989) for sed's syntax. :-) sed -n ' p /[$]LINENO/= @@ -453,9 +486,12 @@ test \$exitcode = 0") || { s/-\n.*// ' >$as_me.lineno && chmod +x "$as_me.lineno" || - { echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2 - { (exit 1); exit 1; }; } + { $as_echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2; as_fn_exit 1; } + # If we had to re-execute with $CONFIG_SHELL, we're ensured to have + # already done that, so ensure we don't try to do so again and fall + # in an infinite loop. This has already happened in practice. + _as_can_reexec=no; export _as_can_reexec # Don't try to exec as it changes $[0], causing all sort of problems # (the dirname of $[0] is not the place where we might find the # original and so on. Autoconf is especially sensitive to this). @@ -464,84 +500,55 @@ test \$exitcode = 0") || { exit } - -if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then - as_dirname=dirname -else - as_dirname=false -fi - ECHO_C= ECHO_N= ECHO_T= -case `echo -n x` in +case `echo -n x` in #((((( -n*) - case `echo 'x\c'` in + case `echo 'xy\c'` in *c*) ECHO_T=' ';; # ECHO_T is single tab character. - *) ECHO_C='\c';; + xy) ECHO_C='\c';; + *) echo `echo ksh88 bug on AIX 6.1` > /dev/null + ECHO_T=' ';; esac;; *) ECHO_N='-n';; esac -if expr a : '\(a\)' >/dev/null 2>&1 && - test "X`expr 00001 : '.*\(...\)'`" = X001; then - as_expr=expr -else - as_expr=false -fi - rm -f conf$$ conf$$.exe conf$$.file if test -d conf$$.dir; then rm -f conf$$.dir/conf$$.file else rm -f conf$$.dir - mkdir conf$$.dir -fi -echo >conf$$.file -if ln -s conf$$.file conf$$ 2>/dev/null; then - as_ln_s='ln -s' - # ... but there are two gotchas: - # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. - # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. - # In both cases, we have to default to `cp -p'. - ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || - as_ln_s='cp -p' -elif ln conf$$.file conf$$ 2>/dev/null; then - as_ln_s=ln -else - as_ln_s='cp -p' + mkdir conf$$.dir 2>/dev/null +fi +if (echo >conf$$.file) 2>/dev/null; then + if ln -s conf$$.file conf$$ 2>/dev/null; then + as_ln_s='ln -s' + # ... but there are two gotchas: + # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. + # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. + # In both cases, we have to default to `cp -pR'. + ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || + as_ln_s='cp -pR' + elif ln conf$$.file conf$$ 2>/dev/null; then + as_ln_s=ln + else + as_ln_s='cp -pR' + fi +else + as_ln_s='cp -pR' fi rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file rmdir conf$$.dir 2>/dev/null if mkdir -p . 2>/dev/null; then - as_mkdir_p=: + as_mkdir_p='mkdir -p "$as_dir"' else test -d ./-p && rmdir ./-p as_mkdir_p=false fi -if test -x / >/dev/null 2>&1; then - as_test_x='test -x' -else - if ls -dL / >/dev/null 2>&1; then - as_ls_L_option=L - else - as_ls_L_option= - fi - as_test_x=' - eval sh -c '\'' - if test -d "$1"; then - test -d "$1/."; - else - case $1 in - -*)set "./$1";; - esac; - case `ls -ld'$as_ls_L_option' "$1" 2>/dev/null` in - ???[sx]*):;;*)false;;esac;fi - '\'' sh - ' -fi -as_executable_p=$as_test_x +as_test_x='test -x' +as_executable_p=as_fn_executable_p # Sed expression to map a string onto a valid CPP name. as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" @@ -551,7 +558,6 @@ as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" - # Check that we are running under the correct shell. SHELL=${CONFIG_SHELL-/bin/sh} @@ -705,10 +711,11 @@ tagnames=${tagnames+${tagnames},}CXX tagnames=${tagnames+${tagnames},}F77 -exec 7<&0 &1 +test -n "$DJDIR" || exec 7<&0 &1 # Name of the host. -# hostname on some systems (SVR3.2, Linux) returns a bogus exit status, +# hostname on some systems (SVR3.2, old GNU/Linux) returns a bogus exit status, # so uname gets run too. ac_hostname=`(hostname || uname -n) 2>/dev/null | sed 1q` @@ -723,7 +730,6 @@ cross_compiling=no subdirs= MFLAGS= MAKEFLAGS= -SHELL=${CONFIG_SHELL-/bin/sh} # Identity of this package. PACKAGE_NAME='Google C++ Testing Framework' @@ -731,6 +737,7 @@ PACKAGE_TARNAME='gtest' PACKAGE_VERSION='1.5.0' PACKAGE_STRING='Google C++ Testing Framework 1.5.0' PACKAGE_BUGREPORT='googletestframework@googlegroups.com' +PACKAGE_URL='' ac_unique_file="./COPYING" # Factoring default headers for most tests. @@ -769,122 +776,136 @@ ac_includes_default="\ # include #endif" -ac_subst_vars='SHELL -PATH_SEPARATOR -PACKAGE_NAME -PACKAGE_TARNAME -PACKAGE_VERSION -PACKAGE_STRING -PACKAGE_BUGREPORT -exec_prefix -prefix -program_transform_name -bindir -sbindir -libexecdir -datarootdir -datadir -sysconfdir -sharedstatedir -localstatedir -includedir -oldincludedir -docdir -infodir -htmldir -dvidir -pdfdir -psdir -libdir -localedir -mandir -DEFS -ECHO_C -ECHO_N -ECHO_T -LIBS -build_alias -host_alias -target_alias -INSTALL_PROGRAM -INSTALL_SCRIPT -INSTALL_DATA -am__isrc -CYGPATH_W -PACKAGE -VERSION -ACLOCAL -AUTOCONF -AUTOMAKE -AUTOHEADER -MAKEINFO -install_sh -STRIP -INSTALL_STRIP_PROGRAM -mkdir_p -AWK -SET_MAKE -am__leading_dot -AMTAR -am__tar -am__untar -CC -CFLAGS -LDFLAGS -CPPFLAGS -ac_ct_CC -EXEEXT -OBJEXT -DEPDIR -am__include -am__quote -AMDEP_TRUE -AMDEP_FALSE -AMDEPBACKSLASH -CCDEPMODE -am__fastdepCC_TRUE -am__fastdepCC_FALSE -CXX -CXXFLAGS -ac_ct_CXX -CXXDEPMODE -am__fastdepCXX_TRUE -am__fastdepCXX_FALSE -build -build_cpu -build_vendor -build_os -host -host_cpu -host_vendor -host_os -SED -GREP -EGREP -LN_S -ECHO -AR -RANLIB -DSYMUTIL -NMEDIT -CPP -CXXCPP -F77 -FFLAGS -ac_ct_F77 -LIBTOOL -PYTHON -HAVE_PYTHON_TRUE -HAVE_PYTHON_FALSE -acx_pthread_config -PTHREAD_CC -PTHREAD_LIBS -PTHREAD_CFLAGS -HAVE_PTHREADS_TRUE -HAVE_PTHREADS_FALSE +ac_subst_vars='LTLIBOBJS LIBOBJS -LTLIBOBJS' +HAVE_PTHREADS_FALSE +HAVE_PTHREADS_TRUE +PTHREAD_CFLAGS +PTHREAD_LIBS +PTHREAD_CC +acx_pthread_config +HAVE_PYTHON_FALSE +HAVE_PYTHON_TRUE +PYTHON +LIBTOOL +ac_ct_F77 +FFLAGS +F77 +CXXCPP +CPP +NMEDIT +DSYMUTIL +RANLIB +AR +ECHO +LN_S +EGREP +GREP +SED +host_os +host_vendor +host_cpu +host +build_os +build_vendor +build_cpu +build +am__fastdepCXX_FALSE +am__fastdepCXX_TRUE +CXXDEPMODE +ac_ct_CXX +CXXFLAGS +CXX +am__fastdepCC_FALSE +am__fastdepCC_TRUE +CCDEPMODE +AMDEPBACKSLASH +AMDEP_FALSE +AMDEP_TRUE +am__quote +am__include +DEPDIR +OBJEXT +EXEEXT +ac_ct_CC +CPPFLAGS +LDFLAGS +CFLAGS +CC +am__untar +am__tar +AMTAR +am__leading_dot +SET_MAKE +AWK +mkdir_p +MKDIR_P +INSTALL_STRIP_PROGRAM +STRIP +install_sh +MAKEINFO +AUTOHEADER +AUTOMAKE +AUTOCONF +ACLOCAL +VERSION +PACKAGE +CYGPATH_W +am__isrc +INSTALL_DATA +INSTALL_SCRIPT +INSTALL_PROGRAM +target_alias +host_alias +build_alias +LIBS +ECHO_T +ECHO_N +ECHO_C +DEFS +mandir +localedir +libdir +psdir +pdfdir +dvidir +htmldir +infodir +docdir +oldincludedir +includedir +localstatedir +sharedstatedir +sysconfdir +datadir +datarootdir +libexecdir +sbindir +bindir +program_transform_name +prefix +exec_prefix +PACKAGE_URL +PACKAGE_BUGREPORT +PACKAGE_STRING +PACKAGE_VERSION +PACKAGE_TARNAME +PACKAGE_NAME +PATH_SEPARATOR +SHELL' ac_subst_files='' +ac_user_opts=' +enable_option_checking +enable_dependency_tracking +enable_shared +enable_static +enable_fast_install +with_gnu_ld +enable_libtool_lock +with_pic +with_tags +with_pthreads +' ac_precious_vars='build_alias host_alias target_alias @@ -905,6 +926,8 @@ FFLAGS' # Initialize some variables set by options. ac_init_help= ac_init_version=false +ac_unrecognized_opts= +ac_unrecognized_sep= # The variables have the same names as the options, with # dashes changed to underlines. cache_file=/dev/null @@ -960,8 +983,9 @@ do fi case $ac_option in - *=*) ac_optarg=`expr "X$ac_option" : '[^=]*=\(.*\)'` ;; - *) ac_optarg=yes ;; + *=?*) ac_optarg=`expr "X$ac_option" : '[^=]*=\(.*\)'` ;; + *=) ac_optarg= ;; + *) ac_optarg=yes ;; esac # Accept the important Cygnus configure options, so we can diagnose typos. @@ -1003,13 +1027,20 @@ do datarootdir=$ac_optarg ;; -disable-* | --disable-*) - ac_feature=`expr "x$ac_option" : 'x-*disable-\(.*\)'` + ac_useropt=`expr "x$ac_option" : 'x-*disable-\(.*\)'` # Reject names that are not valid shell variable names. - expr "x$ac_feature" : ".*[^-._$as_cr_alnum]" >/dev/null && - { echo "$as_me: error: invalid feature name: $ac_feature" >&2 - { (exit 1); exit 1; }; } - ac_feature=`echo $ac_feature | sed 's/[-.]/_/g'` - eval enable_$ac_feature=no ;; + expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && + as_fn_error $? "invalid feature name: $ac_useropt" + ac_useropt_orig=$ac_useropt + ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` + case $ac_user_opts in + *" +"enable_$ac_useropt" +"*) ;; + *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--disable-$ac_useropt_orig" + ac_unrecognized_sep=', ';; + esac + eval enable_$ac_useropt=no ;; -docdir | --docdir | --docdi | --doc | --do) ac_prev=docdir ;; @@ -1022,13 +1053,20 @@ do dvidir=$ac_optarg ;; -enable-* | --enable-*) - ac_feature=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'` + ac_useropt=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'` # Reject names that are not valid shell variable names. - expr "x$ac_feature" : ".*[^-._$as_cr_alnum]" >/dev/null && - { echo "$as_me: error: invalid feature name: $ac_feature" >&2 - { (exit 1); exit 1; }; } - ac_feature=`echo $ac_feature | sed 's/[-.]/_/g'` - eval enable_$ac_feature=\$ac_optarg ;; + expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && + as_fn_error $? "invalid feature name: $ac_useropt" + ac_useropt_orig=$ac_useropt + ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` + case $ac_user_opts in + *" +"enable_$ac_useropt" +"*) ;; + *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--enable-$ac_useropt_orig" + ac_unrecognized_sep=', ';; + esac + eval enable_$ac_useropt=\$ac_optarg ;; -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \ | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \ @@ -1219,22 +1257,36 @@ do ac_init_version=: ;; -with-* | --with-*) - ac_package=`expr "x$ac_option" : 'x-*with-\([^=]*\)'` + ac_useropt=`expr "x$ac_option" : 'x-*with-\([^=]*\)'` # Reject names that are not valid shell variable names. - expr "x$ac_package" : ".*[^-._$as_cr_alnum]" >/dev/null && - { echo "$as_me: error: invalid package name: $ac_package" >&2 - { (exit 1); exit 1; }; } - ac_package=`echo $ac_package | sed 's/[-.]/_/g'` - eval with_$ac_package=\$ac_optarg ;; + expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && + as_fn_error $? "invalid package name: $ac_useropt" + ac_useropt_orig=$ac_useropt + ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` + case $ac_user_opts in + *" +"with_$ac_useropt" +"*) ;; + *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--with-$ac_useropt_orig" + ac_unrecognized_sep=', ';; + esac + eval with_$ac_useropt=\$ac_optarg ;; -without-* | --without-*) - ac_package=`expr "x$ac_option" : 'x-*without-\(.*\)'` + ac_useropt=`expr "x$ac_option" : 'x-*without-\(.*\)'` # Reject names that are not valid shell variable names. - expr "x$ac_package" : ".*[^-._$as_cr_alnum]" >/dev/null && - { echo "$as_me: error: invalid package name: $ac_package" >&2 - { (exit 1); exit 1; }; } - ac_package=`echo $ac_package | sed 's/[-.]/_/g'` - eval with_$ac_package=no ;; + expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && + as_fn_error $? "invalid package name: $ac_useropt" + ac_useropt_orig=$ac_useropt + ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` + case $ac_user_opts in + *" +"with_$ac_useropt" +"*) ;; + *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--without-$ac_useropt_orig" + ac_unrecognized_sep=', ';; + esac + eval with_$ac_useropt=no ;; --x) # Obsolete; use --with-x. @@ -1254,26 +1306,26 @@ do | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*) x_libraries=$ac_optarg ;; - -*) { echo "$as_me: error: unrecognized option: $ac_option -Try \`$0 --help' for more information." >&2 - { (exit 1); exit 1; }; } + -*) as_fn_error $? "unrecognized option: \`$ac_option' +Try \`$0 --help' for more information" ;; *=*) ac_envvar=`expr "x$ac_option" : 'x\([^=]*\)='` # Reject names that are not valid shell variable names. - expr "x$ac_envvar" : ".*[^_$as_cr_alnum]" >/dev/null && - { echo "$as_me: error: invalid variable name: $ac_envvar" >&2 - { (exit 1); exit 1; }; } + case $ac_envvar in #( + '' | [0-9]* | *[!_$as_cr_alnum]* ) + as_fn_error $? "invalid variable name: \`$ac_envvar'" ;; + esac eval $ac_envvar=\$ac_optarg export $ac_envvar ;; *) # FIXME: should be removed in autoconf 3.0. - echo "$as_me: WARNING: you should use --build, --host, --target" >&2 + $as_echo "$as_me: WARNING: you should use --build, --host, --target" >&2 expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null && - echo "$as_me: WARNING: invalid host type: $ac_option" >&2 - : ${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option} + $as_echo "$as_me: WARNING: invalid host type: $ac_option" >&2 + : "${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option}" ;; esac @@ -1281,23 +1333,36 @@ done if test -n "$ac_prev"; then ac_option=--`echo $ac_prev | sed 's/_/-/g'` - { echo "$as_me: error: missing argument to $ac_option" >&2 - { (exit 1); exit 1; }; } + as_fn_error $? "missing argument to $ac_option" +fi + +if test -n "$ac_unrecognized_opts"; then + case $enable_option_checking in + no) ;; + fatal) as_fn_error $? "unrecognized options: $ac_unrecognized_opts" ;; + *) $as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2 ;; + esac fi -# Be sure to have absolute directory names. +# Check all directory arguments for consistency. for ac_var in exec_prefix prefix bindir sbindir libexecdir datarootdir \ datadir sysconfdir sharedstatedir localstatedir includedir \ oldincludedir docdir infodir htmldir dvidir pdfdir psdir \ libdir localedir mandir do eval ac_val=\$$ac_var + # Remove trailing slashes. + case $ac_val in + */ ) + ac_val=`expr "X$ac_val" : 'X\(.*[^/]\)' \| "X$ac_val" : 'X\(.*\)'` + eval $ac_var=\$ac_val;; + esac + # Be sure to have absolute directory names. case $ac_val in [\\/$]* | ?:[\\/]* ) continue;; NONE | '' ) case $ac_var in *prefix ) continue;; esac;; esac - { echo "$as_me: error: expected an absolute directory name for --$ac_var: $ac_val" >&2 - { (exit 1); exit 1; }; } + as_fn_error $? "expected an absolute directory name for --$ac_var: $ac_val" done # There might be people who depend on the old broken behavior: `$host' @@ -1311,8 +1376,6 @@ target=$target_alias if test "x$host_alias" != x; then if test "x$build_alias" = x; then cross_compiling=maybe - echo "$as_me: WARNING: If you wanted to set the --build type, don't use --host. - If a cross compiler is detected then cross compile mode will be used." >&2 elif test "x$build_alias" != "x$host_alias"; then cross_compiling=yes fi @@ -1327,23 +1390,21 @@ test "$silent" = yes && exec 6>/dev/null ac_pwd=`pwd` && test -n "$ac_pwd" && ac_ls_di=`ls -di .` && ac_pwd_ls_di=`cd "$ac_pwd" && ls -di .` || - { echo "$as_me: error: Working directory cannot be determined" >&2 - { (exit 1); exit 1; }; } + as_fn_error $? "working directory cannot be determined" test "X$ac_ls_di" = "X$ac_pwd_ls_di" || - { echo "$as_me: error: pwd does not report name of working directory" >&2 - { (exit 1); exit 1; }; } + as_fn_error $? "pwd does not report name of working directory" # Find the source files, if location was not specified. if test -z "$srcdir"; then ac_srcdir_defaulted=yes # Try the directory containing this script, then the parent directory. - ac_confdir=`$as_dirname -- "$0" || -$as_expr X"$0" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ - X"$0" : 'X\(//\)[^/]' \| \ - X"$0" : 'X\(//\)$' \| \ - X"$0" : 'X\(/\)' \| . 2>/dev/null || -echo X"$0" | + ac_confdir=`$as_dirname -- "$as_myself" || +$as_expr X"$as_myself" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$as_myself" : 'X\(//\)[^/]' \| \ + X"$as_myself" : 'X\(//\)$' \| \ + X"$as_myself" : 'X\(/\)' \| . 2>/dev/null || +$as_echo X"$as_myself" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q @@ -1370,13 +1431,11 @@ else fi if test ! -r "$srcdir/$ac_unique_file"; then test "$ac_srcdir_defaulted" = yes && srcdir="$ac_confdir or .." - { echo "$as_me: error: cannot find sources ($ac_unique_file) in $srcdir" >&2 - { (exit 1); exit 1; }; } + as_fn_error $? "cannot find sources ($ac_unique_file) in $srcdir" fi ac_msg="sources are in $srcdir, but \`cd $srcdir' does not work" ac_abs_confdir=`( - cd "$srcdir" && test -r "./$ac_unique_file" || { echo "$as_me: error: $ac_msg" >&2 - { (exit 1); exit 1; }; } + cd "$srcdir" && test -r "./$ac_unique_file" || as_fn_error $? "$ac_msg" pwd)` # When building in place, set srcdir=. if test "$ac_abs_confdir" = "$ac_pwd"; then @@ -1416,7 +1475,7 @@ Configuration: --help=short display options specific to this package --help=recursive display the short help of all the included packages -V, --version display version information and exit - -q, --quiet, --silent do not print \`checking...' messages + -q, --quiet, --silent do not print \`checking ...' messages --cache-file=FILE cache test results in FILE [disabled] -C, --config-cache alias for \`--cache-file=config.cache' -n, --no-create do not create output files @@ -1424,173 +1483,736 @@ Configuration: Installation directories: --prefix=PREFIX install architecture-independent files in PREFIX - [$ac_default_prefix] + [$ac_default_prefix] --exec-prefix=EPREFIX install architecture-dependent files in EPREFIX - [PREFIX] + [PREFIX] By default, \`make install' will install all the files in \`$ac_default_prefix/bin', \`$ac_default_prefix/lib' etc. You can specify an installation prefix other than \`$ac_default_prefix' using \`--prefix', for instance \`--prefix=\$HOME'. -For better control, use the options below. +For better control, use the options below. + +Fine tuning of the installation directories: + --bindir=DIR user executables [EPREFIX/bin] + --sbindir=DIR system admin executables [EPREFIX/sbin] + --libexecdir=DIR program executables [EPREFIX/libexec] + --sysconfdir=DIR read-only single-machine data [PREFIX/etc] + --sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com] + --localstatedir=DIR modifiable single-machine data [PREFIX/var] + --libdir=DIR object code libraries [EPREFIX/lib] + --includedir=DIR C header files [PREFIX/include] + --oldincludedir=DIR C header files for non-gcc [/usr/include] + --datarootdir=DIR read-only arch.-independent data root [PREFIX/share] + --datadir=DIR read-only architecture-independent data [DATAROOTDIR] + --infodir=DIR info documentation [DATAROOTDIR/info] + --localedir=DIR locale-dependent data [DATAROOTDIR/locale] + --mandir=DIR man documentation [DATAROOTDIR/man] + --docdir=DIR documentation root [DATAROOTDIR/doc/gtest] + --htmldir=DIR html documentation [DOCDIR] + --dvidir=DIR dvi documentation [DOCDIR] + --pdfdir=DIR pdf documentation [DOCDIR] + --psdir=DIR ps documentation [DOCDIR] +_ACEOF + + cat <<\_ACEOF + +Program names: + --program-prefix=PREFIX prepend PREFIX to installed program names + --program-suffix=SUFFIX append SUFFIX to installed program names + --program-transform-name=PROGRAM run sed PROGRAM on installed program names + +System types: + --build=BUILD configure for building on BUILD [guessed] + --host=HOST cross-compile to build programs to run on HOST [BUILD] +_ACEOF +fi + +if test -n "$ac_init_help"; then + case $ac_init_help in + short | recursive ) echo "Configuration of Google C++ Testing Framework 1.5.0:";; + esac + cat <<\_ACEOF + +Optional Features: + --disable-option-checking ignore unrecognized --enable/--with options + --disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no) + --enable-FEATURE[=ARG] include FEATURE [ARG=yes] + --disable-dependency-tracking speeds up one-time build + --enable-dependency-tracking do not reject slow dependency extractors + --enable-shared[=PKGS] build shared libraries [default=yes] + --enable-static[=PKGS] build static libraries [default=yes] + --enable-fast-install[=PKGS] + optimize for fast installation [default=yes] + --disable-libtool-lock avoid locking (might break parallel builds) + +Optional Packages: + --with-PACKAGE[=ARG] use PACKAGE [ARG=yes] + --without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no) + --with-gnu-ld assume the C compiler uses GNU ld [default=no] + --with-pic try to use only PIC/non-PIC objects [default=use + both] + --with-tags[=TAGS] include additional configurations [automatic] + --with-pthreads use pthreads (default is yes) + +Some influential environment variables: + CC C compiler command + CFLAGS C compiler flags + LDFLAGS linker flags, e.g. -L if you have libraries in a + nonstandard directory + LIBS libraries to pass to the linker, e.g. -l + CPPFLAGS (Objective) C/C++ preprocessor flags, e.g. -I if + you have headers in a nonstandard directory + CXX C++ compiler command + CXXFLAGS C++ compiler flags + CPP C preprocessor + CXXCPP C++ preprocessor + F77 Fortran 77 compiler command + FFLAGS Fortran 77 compiler flags + +Use these variables to override the choices made by `configure' or to help +it to find libraries and programs with nonstandard names/locations. + +Report bugs to . +_ACEOF +ac_status=$? +fi + +if test "$ac_init_help" = "recursive"; then + # If there are subdirs, report their specific --help. + for ac_dir in : $ac_subdirs_all; do test "x$ac_dir" = x: && continue + test -d "$ac_dir" || + { cd "$srcdir" && ac_pwd=`pwd` && srcdir=. && test -d "$ac_dir"; } || + continue + ac_builddir=. + +case "$ac_dir" in +.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; +*) + ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'` + # A ".." for each directory in $ac_dir_suffix. + ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` + case $ac_top_builddir_sub in + "") ac_top_builddir_sub=. ac_top_build_prefix= ;; + *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; + esac ;; +esac +ac_abs_top_builddir=$ac_pwd +ac_abs_builddir=$ac_pwd$ac_dir_suffix +# for backward compatibility: +ac_top_builddir=$ac_top_build_prefix + +case $srcdir in + .) # We are building in place. + ac_srcdir=. + ac_top_srcdir=$ac_top_builddir_sub + ac_abs_top_srcdir=$ac_pwd ;; + [\\/]* | ?:[\\/]* ) # Absolute name. + ac_srcdir=$srcdir$ac_dir_suffix; + ac_top_srcdir=$srcdir + ac_abs_top_srcdir=$srcdir ;; + *) # Relative name. + ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix + ac_top_srcdir=$ac_top_build_prefix$srcdir + ac_abs_top_srcdir=$ac_pwd/$srcdir ;; +esac +ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix + + cd "$ac_dir" || { ac_status=$?; continue; } + # Check for guested configure. + if test -f "$ac_srcdir/configure.gnu"; then + echo && + $SHELL "$ac_srcdir/configure.gnu" --help=recursive + elif test -f "$ac_srcdir/configure"; then + echo && + $SHELL "$ac_srcdir/configure" --help=recursive + else + $as_echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2 + fi || ac_status=$? + cd "$ac_pwd" || { ac_status=$?; break; } + done +fi + +test -n "$ac_init_help" && exit $ac_status +if $ac_init_version; then + cat <<\_ACEOF +Google C++ Testing Framework configure 1.5.0 +generated by GNU Autoconf 2.69 + +Copyright (C) 2012 Free Software Foundation, Inc. +This configure script is free software; the Free Software Foundation +gives unlimited permission to copy, distribute and modify it. +_ACEOF + exit +fi + +## ------------------------ ## +## Autoconf initialization. ## +## ------------------------ ## + +# ac_fn_c_try_compile LINENO +# -------------------------- +# Try to compile conftest.$ac_ext, and return whether this succeeded. +ac_fn_c_try_compile () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + rm -f conftest.$ac_objext + if { { ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_compile") 2>conftest.err + ac_status=$? + if test -s conftest.err; then + grep -v '^ *+' conftest.err >conftest.er1 + cat conftest.er1 >&5 + mv -f conftest.er1 conftest.err + fi + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then : + ac_retval=0 +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_retval=1 +fi + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + as_fn_set_status $ac_retval + +} # ac_fn_c_try_compile + +# ac_fn_cxx_try_compile LINENO +# ---------------------------- +# Try to compile conftest.$ac_ext, and return whether this succeeded. +ac_fn_cxx_try_compile () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + rm -f conftest.$ac_objext + if { { ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_compile") 2>conftest.err + ac_status=$? + if test -s conftest.err; then + grep -v '^ *+' conftest.err >conftest.er1 + cat conftest.er1 >&5 + mv -f conftest.er1 conftest.err + fi + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } && { + test -z "$ac_cxx_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then : + ac_retval=0 +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_retval=1 +fi + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + as_fn_set_status $ac_retval + +} # ac_fn_cxx_try_compile + +# ac_fn_cxx_try_link LINENO +# ------------------------- +# Try to link conftest.$ac_ext, and return whether this succeeded. +ac_fn_cxx_try_link () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + rm -f conftest.$ac_objext conftest$ac_exeext + if { { ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_link") 2>conftest.err + ac_status=$? + if test -s conftest.err; then + grep -v '^ *+' conftest.err >conftest.er1 + cat conftest.er1 >&5 + mv -f conftest.er1 conftest.err + fi + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } && { + test -z "$ac_cxx_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && { + test "$cross_compiling" = yes || + test -x conftest$ac_exeext + }; then : + ac_retval=0 +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_retval=1 +fi + # Delete the IPA/IPO (Inter Procedural Analysis/Optimization) information + # created by the PGI compiler (conftest_ipa8_conftest.oo), as it would + # interfere with the next link command; also delete a directory that is + # left behind by Apple's compiler. We do this before executing the actions. + rm -rf conftest.dSYM conftest_ipa8_conftest.oo + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + as_fn_set_status $ac_retval + +} # ac_fn_cxx_try_link + +# ac_fn_c_try_link LINENO +# ----------------------- +# Try to link conftest.$ac_ext, and return whether this succeeded. +ac_fn_c_try_link () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + rm -f conftest.$ac_objext conftest$ac_exeext + if { { ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_link") 2>conftest.err + ac_status=$? + if test -s conftest.err; then + grep -v '^ *+' conftest.err >conftest.er1 + cat conftest.er1 >&5 + mv -f conftest.er1 conftest.err + fi + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && { + test "$cross_compiling" = yes || + test -x conftest$ac_exeext + }; then : + ac_retval=0 +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_retval=1 +fi + # Delete the IPA/IPO (Inter Procedural Analysis/Optimization) information + # created by the PGI compiler (conftest_ipa8_conftest.oo), as it would + # interfere with the next link command; also delete a directory that is + # left behind by Apple's compiler. We do this before executing the actions. + rm -rf conftest.dSYM conftest_ipa8_conftest.oo + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + as_fn_set_status $ac_retval + +} # ac_fn_c_try_link + +# ac_fn_c_try_cpp LINENO +# ---------------------- +# Try to preprocess conftest.$ac_ext, and return whether this succeeded. +ac_fn_c_try_cpp () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + if { { ac_try="$ac_cpp conftest.$ac_ext" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_cpp conftest.$ac_ext") 2>conftest.err + ac_status=$? + if test -s conftest.err; then + grep -v '^ *+' conftest.err >conftest.er1 + cat conftest.er1 >&5 + mv -f conftest.er1 conftest.err + fi + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } > conftest.i && { + test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || + test ! -s conftest.err + }; then : + ac_retval=0 +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_retval=1 +fi + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + as_fn_set_status $ac_retval + +} # ac_fn_c_try_cpp + +# ac_fn_c_check_header_mongrel LINENO HEADER VAR INCLUDES +# ------------------------------------------------------- +# Tests whether HEADER exists, giving a warning if it cannot be compiled using +# the include files in INCLUDES and setting the cache variable VAR +# accordingly. +ac_fn_c_check_header_mongrel () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + if eval \${$3+:} false; then : + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 +$as_echo_n "checking for $2... " >&6; } +if eval \${$3+:} false; then : + $as_echo_n "(cached) " >&6 +fi +eval ac_res=\$$3 + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +$as_echo "$ac_res" >&6; } +else + # Is the header compilable? +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking $2 usability" >&5 +$as_echo_n "checking $2 usability... " >&6; } +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$4 +#include <$2> +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + ac_header_compiler=yes +else + ac_header_compiler=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_compiler" >&5 +$as_echo "$ac_header_compiler" >&6; } + +# Is the header present? +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking $2 presence" >&5 +$as_echo_n "checking $2 presence... " >&6; } +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include <$2> +_ACEOF +if ac_fn_c_try_cpp "$LINENO"; then : + ac_header_preproc=yes +else + ac_header_preproc=no +fi +rm -f conftest.err conftest.i conftest.$ac_ext +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_preproc" >&5 +$as_echo "$ac_header_preproc" >&6; } + +# So? What about this header? +case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in #(( + yes:no: ) + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: accepted by the compiler, rejected by the preprocessor!" >&5 +$as_echo "$as_me: WARNING: $2: accepted by the compiler, rejected by the preprocessor!" >&2;} + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5 +$as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;} + ;; + no:yes:* ) + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: present but cannot be compiled" >&5 +$as_echo "$as_me: WARNING: $2: present but cannot be compiled" >&2;} + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: check for missing prerequisite headers?" >&5 +$as_echo "$as_me: WARNING: $2: check for missing prerequisite headers?" >&2;} + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: see the Autoconf documentation" >&5 +$as_echo "$as_me: WARNING: $2: see the Autoconf documentation" >&2;} + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: section \"Present But Cannot Be Compiled\"" >&5 +$as_echo "$as_me: WARNING: $2: section \"Present But Cannot Be Compiled\"" >&2;} + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5 +$as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;} +( $as_echo "## --------------------------------------------------- ## +## Report this to googletestframework@googlegroups.com ## +## --------------------------------------------------- ##" + ) | sed "s/^/$as_me: WARNING: /" >&2 + ;; +esac + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 +$as_echo_n "checking for $2... " >&6; } +if eval \${$3+:} false; then : + $as_echo_n "(cached) " >&6 +else + eval "$3=\$ac_header_compiler" +fi +eval ac_res=\$$3 + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +$as_echo "$ac_res" >&6; } +fi + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno -Fine tuning of the installation directories: - --bindir=DIR user executables [EPREFIX/bin] - --sbindir=DIR system admin executables [EPREFIX/sbin] - --libexecdir=DIR program executables [EPREFIX/libexec] - --sysconfdir=DIR read-only single-machine data [PREFIX/etc] - --sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com] - --localstatedir=DIR modifiable single-machine data [PREFIX/var] - --libdir=DIR object code libraries [EPREFIX/lib] - --includedir=DIR C header files [PREFIX/include] - --oldincludedir=DIR C header files for non-gcc [/usr/include] - --datarootdir=DIR read-only arch.-independent data root [PREFIX/share] - --datadir=DIR read-only architecture-independent data [DATAROOTDIR] - --infodir=DIR info documentation [DATAROOTDIR/info] - --localedir=DIR locale-dependent data [DATAROOTDIR/locale] - --mandir=DIR man documentation [DATAROOTDIR/man] - --docdir=DIR documentation root [DATAROOTDIR/doc/gtest] - --htmldir=DIR html documentation [DOCDIR] - --dvidir=DIR dvi documentation [DOCDIR] - --pdfdir=DIR pdf documentation [DOCDIR] - --psdir=DIR ps documentation [DOCDIR] -_ACEOF +} # ac_fn_c_check_header_mongrel - cat <<\_ACEOF +# ac_fn_c_try_run LINENO +# ---------------------- +# Try to link conftest.$ac_ext, and return whether this succeeded. Assumes +# that executables *can* be run. +ac_fn_c_try_run () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + if { { ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_link") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } && { ac_try='./conftest$ac_exeext' + { { case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; }; then : + ac_retval=0 +else + $as_echo "$as_me: program exited with status $ac_status" >&5 + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 -Program names: - --program-prefix=PREFIX prepend PREFIX to installed program names - --program-suffix=SUFFIX append SUFFIX to installed program names - --program-transform-name=PROGRAM run sed PROGRAM on installed program names + ac_retval=$ac_status +fi + rm -rf conftest.dSYM conftest_ipa8_conftest.oo + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + as_fn_set_status $ac_retval -System types: - --build=BUILD configure for building on BUILD [guessed] - --host=HOST cross-compile to build programs to run on HOST [BUILD] +} # ac_fn_c_try_run + +# ac_fn_c_check_header_compile LINENO HEADER VAR INCLUDES +# ------------------------------------------------------- +# Tests whether HEADER exists and can be compiled using the include files in +# INCLUDES, setting the cache variable VAR accordingly. +ac_fn_c_check_header_compile () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 +$as_echo_n "checking for $2... " >&6; } +if eval \${$3+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$4 +#include <$2> _ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + eval "$3=yes" +else + eval "$3=no" +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi +eval ac_res=\$$3 + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +$as_echo "$ac_res" >&6; } + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno -if test -n "$ac_init_help"; then - case $ac_init_help in - short | recursive ) echo "Configuration of Google C++ Testing Framework 1.5.0:";; - esac - cat <<\_ACEOF +} # ac_fn_c_check_header_compile -Optional Features: - --disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no) - --enable-FEATURE[=ARG] include FEATURE [ARG=yes] - --disable-dependency-tracking speeds up one-time build - --enable-dependency-tracking do not reject slow dependency extractors - --enable-shared[=PKGS] build shared libraries [default=yes] - --enable-static[=PKGS] build static libraries [default=yes] - --enable-fast-install[=PKGS] - optimize for fast installation [default=yes] - --disable-libtool-lock avoid locking (might break parallel builds) +# ac_fn_c_check_func LINENO FUNC VAR +# ---------------------------------- +# Tests whether FUNC exists, setting the cache variable VAR accordingly +ac_fn_c_check_func () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 +$as_echo_n "checking for $2... " >&6; } +if eval \${$3+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +/* Define $2 to an innocuous variant, in case declares $2. + For example, HP-UX 11i declares gettimeofday. */ +#define $2 innocuous_$2 -Optional Packages: - --with-PACKAGE[=ARG] use PACKAGE [ARG=yes] - --without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no) - --with-gnu-ld assume the C compiler uses GNU ld [default=no] - --with-pic try to use only PIC/non-PIC objects [default=use - both] - --with-tags[=TAGS] include additional configurations [automatic] - --with-pthreads use pthreads (default is yes) +/* System header to define __stub macros and hopefully few prototypes, + which can conflict with char $2 (); below. + Prefer to if __STDC__ is defined, since + exists even on freestanding compilers. */ -Some influential environment variables: - CC C compiler command - CFLAGS C compiler flags - LDFLAGS linker flags, e.g. -L if you have libraries in a - nonstandard directory - LIBS libraries to pass to the linker, e.g. -l - CPPFLAGS C/C++/Objective C preprocessor flags, e.g. -I if - you have headers in a nonstandard directory - CXX C++ compiler command - CXXFLAGS C++ compiler flags - CPP C preprocessor - CXXCPP C++ preprocessor - F77 Fortran 77 compiler command - FFLAGS Fortran 77 compiler flags +#ifdef __STDC__ +# include +#else +# include +#endif -Use these variables to override the choices made by `configure' or to help -it to find libraries and programs with nonstandard names/locations. +#undef $2 -Report bugs to . +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char $2 (); +/* The GNU C library defines this for functions which it implements + to always fail with ENOSYS. Some functions are actually named + something starting with __ and the normal name is an alias. */ +#if defined __stub_$2 || defined __stub___$2 +choke me +#endif + +int +main () +{ +return $2 (); + ; + return 0; +} _ACEOF -ac_status=$? +if ac_fn_c_try_link "$LINENO"; then : + eval "$3=yes" +else + eval "$3=no" +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext fi +eval ac_res=\$$3 + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +$as_echo "$ac_res" >&6; } + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno -if test "$ac_init_help" = "recursive"; then - # If there are subdirs, report their specific --help. - for ac_dir in : $ac_subdirs_all; do test "x$ac_dir" = x: && continue - test -d "$ac_dir" || continue - ac_builddir=. +} # ac_fn_c_check_func -case "$ac_dir" in -.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; -*) - ac_dir_suffix=/`echo "$ac_dir" | sed 's,^\.[\\/],,'` - # A ".." for each directory in $ac_dir_suffix. - ac_top_builddir_sub=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,/..,g;s,/,,'` - case $ac_top_builddir_sub in - "") ac_top_builddir_sub=. ac_top_build_prefix= ;; - *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; - esac ;; +# ac_fn_cxx_try_cpp LINENO +# ------------------------ +# Try to preprocess conftest.$ac_ext, and return whether this succeeded. +ac_fn_cxx_try_cpp () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + if { { ac_try="$ac_cpp conftest.$ac_ext" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; esac -ac_abs_top_builddir=$ac_pwd -ac_abs_builddir=$ac_pwd$ac_dir_suffix -# for backward compatibility: -ac_top_builddir=$ac_top_build_prefix +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_cpp conftest.$ac_ext") 2>conftest.err + ac_status=$? + if test -s conftest.err; then + grep -v '^ *+' conftest.err >conftest.er1 + cat conftest.er1 >&5 + mv -f conftest.er1 conftest.err + fi + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } > conftest.i && { + test -z "$ac_cxx_preproc_warn_flag$ac_cxx_werror_flag" || + test ! -s conftest.err + }; then : + ac_retval=0 +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 -case $srcdir in - .) # We are building in place. - ac_srcdir=. - ac_top_srcdir=$ac_top_builddir_sub - ac_abs_top_srcdir=$ac_pwd ;; - [\\/]* | ?:[\\/]* ) # Absolute name. - ac_srcdir=$srcdir$ac_dir_suffix; - ac_top_srcdir=$srcdir - ac_abs_top_srcdir=$srcdir ;; - *) # Relative name. - ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix - ac_top_srcdir=$ac_top_build_prefix$srcdir - ac_abs_top_srcdir=$ac_pwd/$srcdir ;; + ac_retval=1 +fi + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + as_fn_set_status $ac_retval + +} # ac_fn_cxx_try_cpp + +# ac_fn_f77_try_compile LINENO +# ---------------------------- +# Try to compile conftest.$ac_ext, and return whether this succeeded. +ac_fn_f77_try_compile () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + rm -f conftest.$ac_objext + if { { ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; esac -ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_compile") 2>conftest.err + ac_status=$? + if test -s conftest.err; then + grep -v '^ *+' conftest.err >conftest.er1 + cat conftest.er1 >&5 + mv -f conftest.er1 conftest.err + fi + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } && { + test -z "$ac_f77_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then : + ac_retval=0 +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 - cd "$ac_dir" || { ac_status=$?; continue; } - # Check for guested configure. - if test -f "$ac_srcdir/configure.gnu"; then - echo && - $SHELL "$ac_srcdir/configure.gnu" --help=recursive - elif test -f "$ac_srcdir/configure"; then - echo && - $SHELL "$ac_srcdir/configure" --help=recursive - else - echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2 - fi || ac_status=$? - cd "$ac_pwd" || { ac_status=$?; break; } - done + ac_retval=1 fi + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + as_fn_set_status $ac_retval -test -n "$ac_init_help" && exit $ac_status -if $ac_init_version; then - cat <<\_ACEOF -Google C++ Testing Framework configure 1.5.0 -generated by GNU Autoconf 2.61 +} # ac_fn_f77_try_compile -Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001, -2002, 2003, 2004, 2005, 2006 Free Software Foundation, Inc. -This configure script is free software; the Free Software Foundation -gives unlimited permission to copy, distribute and modify it. -_ACEOF - exit +# ac_fn_f77_try_link LINENO +# ------------------------- +# Try to link conftest.$ac_ext, and return whether this succeeded. +ac_fn_f77_try_link () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + rm -f conftest.$ac_objext conftest$ac_exeext + if { { ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_link") 2>conftest.err + ac_status=$? + if test -s conftest.err; then + grep -v '^ *+' conftest.err >conftest.er1 + cat conftest.er1 >&5 + mv -f conftest.er1 conftest.err + fi + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } && { + test -z "$ac_f77_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && { + test "$cross_compiling" = yes || + test -x conftest$ac_exeext + }; then : + ac_retval=0 +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_retval=1 fi + # Delete the IPA/IPO (Inter Procedural Analysis/Optimization) information + # created by the PGI compiler (conftest_ipa8_conftest.oo), as it would + # interfere with the next link command; also delete a directory that is + # left behind by Apple's compiler. We do this before executing the actions. + rm -rf conftest.dSYM conftest_ipa8_conftest.oo + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + as_fn_set_status $ac_retval + +} # ac_fn_f77_try_link cat >config.log <<_ACEOF This file contains any messages produced by compilers while running configure, to aid debugging if configure makes a mistake. It was created by Google C++ Testing Framework $as_me 1.5.0, which was -generated by GNU Autoconf 2.61. Invocation command line was +generated by GNU Autoconf 2.69. Invocation command line was $ $0 $@ @@ -1626,8 +2248,8 @@ for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. - echo "PATH: $as_dir" -done + $as_echo "PATH: $as_dir" + done IFS=$as_save_IFS } >&5 @@ -1661,12 +2283,12 @@ do | -silent | --silent | --silen | --sile | --sil) continue ;; *\'*) - ac_arg=`echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;; + ac_arg=`$as_echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;; esac case $ac_pass in - 1) ac_configure_args0="$ac_configure_args0 '$ac_arg'" ;; + 1) as_fn_append ac_configure_args0 " '$ac_arg'" ;; 2) - ac_configure_args1="$ac_configure_args1 '$ac_arg'" + as_fn_append ac_configure_args1 " '$ac_arg'" if test $ac_must_keep_next = true; then ac_must_keep_next=false # Got value, back to normal. else @@ -1682,13 +2304,13 @@ do -* ) ac_must_keep_next=true ;; esac fi - ac_configure_args="$ac_configure_args '$ac_arg'" + as_fn_append ac_configure_args " '$ac_arg'" ;; esac done done -$as_unset ac_configure_args0 || test "${ac_configure_args0+set}" != set || { ac_configure_args0=; export ac_configure_args0; } -$as_unset ac_configure_args1 || test "${ac_configure_args1+set}" != set || { ac_configure_args1=; export ac_configure_args1; } +{ ac_configure_args0=; unset ac_configure_args0;} +{ ac_configure_args1=; unset ac_configure_args1;} # When interrupted or exit'd, cleanup temporary files, and complete # config.log. We remove comments because anyway the quotes in there @@ -1700,11 +2322,9 @@ trap 'exit_status=$? { echo - cat <<\_ASBOX -## ---------------- ## + $as_echo "## ---------------- ## ## Cache variables. ## -## ---------------- ## -_ASBOX +## ---------------- ##" echo # The following way of writing the cache mishandles newlines in values, ( @@ -1713,12 +2333,13 @@ _ASBOX case $ac_val in #( *${as_nl}*) case $ac_var in #( - *_cv_*) { echo "$as_me:$LINENO: WARNING: Cache variable $ac_var contains a newline." >&5 -echo "$as_me: WARNING: Cache variable $ac_var contains a newline." >&2;} ;; + *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5 +$as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; esac case $ac_var in #( _ | IFS | as_nl) ;; #( - *) $as_unset $ac_var ;; + BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #( + *) { eval $ac_var=; unset $ac_var;} ;; esac ;; esac done @@ -1737,128 +2358,136 @@ echo "$as_me: WARNING: Cache variable $ac_var contains a newline." >&2;} ;; ) echo - cat <<\_ASBOX -## ----------------- ## + $as_echo "## ----------------- ## ## Output variables. ## -## ----------------- ## -_ASBOX +## ----------------- ##" echo for ac_var in $ac_subst_vars do eval ac_val=\$$ac_var case $ac_val in - *\'\''*) ac_val=`echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; + *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; esac - echo "$ac_var='\''$ac_val'\''" + $as_echo "$ac_var='\''$ac_val'\''" done | sort echo if test -n "$ac_subst_files"; then - cat <<\_ASBOX -## ------------------- ## + $as_echo "## ------------------- ## ## File substitutions. ## -## ------------------- ## -_ASBOX +## ------------------- ##" echo for ac_var in $ac_subst_files do eval ac_val=\$$ac_var case $ac_val in - *\'\''*) ac_val=`echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; + *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; esac - echo "$ac_var='\''$ac_val'\''" + $as_echo "$ac_var='\''$ac_val'\''" done | sort echo fi if test -s confdefs.h; then - cat <<\_ASBOX -## ----------- ## + $as_echo "## ----------- ## ## confdefs.h. ## -## ----------- ## -_ASBOX +## ----------- ##" echo cat confdefs.h echo fi test "$ac_signal" != 0 && - echo "$as_me: caught signal $ac_signal" - echo "$as_me: exit $exit_status" + $as_echo "$as_me: caught signal $ac_signal" + $as_echo "$as_me: exit $exit_status" } >&5 rm -f core *.core core.conftest.* && rm -f -r conftest* confdefs* conf$$* $ac_clean_files && exit $exit_status ' 0 for ac_signal in 1 2 13 15; do - trap 'ac_signal='$ac_signal'; { (exit 1); exit 1; }' $ac_signal + trap 'ac_signal='$ac_signal'; as_fn_exit 1' $ac_signal done ac_signal=0 # confdefs.h avoids OS command line length limits that DEFS can exceed. rm -f -r conftest* confdefs.h +$as_echo "/* confdefs.h */" > confdefs.h + # Predefined preprocessor variables. cat >>confdefs.h <<_ACEOF #define PACKAGE_NAME "$PACKAGE_NAME" _ACEOF - cat >>confdefs.h <<_ACEOF #define PACKAGE_TARNAME "$PACKAGE_TARNAME" _ACEOF - cat >>confdefs.h <<_ACEOF #define PACKAGE_VERSION "$PACKAGE_VERSION" _ACEOF - cat >>confdefs.h <<_ACEOF #define PACKAGE_STRING "$PACKAGE_STRING" _ACEOF - cat >>confdefs.h <<_ACEOF #define PACKAGE_BUGREPORT "$PACKAGE_BUGREPORT" _ACEOF +cat >>confdefs.h <<_ACEOF +#define PACKAGE_URL "$PACKAGE_URL" +_ACEOF + # Let the site file select an alternate cache file if it wants to. -# Prefer explicitly selected file to automatically selected ones. +# Prefer an explicitly selected file to automatically selected ones. +ac_site_file1=NONE +ac_site_file2=NONE if test -n "$CONFIG_SITE"; then - set x "$CONFIG_SITE" + # We do not want a PATH search for config.site. + case $CONFIG_SITE in #(( + -*) ac_site_file1=./$CONFIG_SITE;; + */*) ac_site_file1=$CONFIG_SITE;; + *) ac_site_file1=./$CONFIG_SITE;; + esac elif test "x$prefix" != xNONE; then - set x "$prefix/share/config.site" "$prefix/etc/config.site" + ac_site_file1=$prefix/share/config.site + ac_site_file2=$prefix/etc/config.site else - set x "$ac_default_prefix/share/config.site" \ - "$ac_default_prefix/etc/config.site" + ac_site_file1=$ac_default_prefix/share/config.site + ac_site_file2=$ac_default_prefix/etc/config.site fi -shift -for ac_site_file +for ac_site_file in "$ac_site_file1" "$ac_site_file2" do - if test -r "$ac_site_file"; then - { echo "$as_me:$LINENO: loading site script $ac_site_file" >&5 -echo "$as_me: loading site script $ac_site_file" >&6;} + test "x$ac_site_file" = xNONE && continue + if test /dev/null != "$ac_site_file" && test -r "$ac_site_file"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: loading site script $ac_site_file" >&5 +$as_echo "$as_me: loading site script $ac_site_file" >&6;} sed 's/^/| /' "$ac_site_file" >&5 - . "$ac_site_file" + . "$ac_site_file" \ + || { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error $? "failed to load site script $ac_site_file +See \`config.log' for more details" "$LINENO" 5; } fi done if test -r "$cache_file"; then - # Some versions of bash will fail to source /dev/null (special - # files actually), so we avoid doing that. - if test -f "$cache_file"; then - { echo "$as_me:$LINENO: loading cache $cache_file" >&5 -echo "$as_me: loading cache $cache_file" >&6;} + # Some versions of bash will fail to source /dev/null (special files + # actually), so we avoid doing that. DJGPP emulates it as a regular file. + if test /dev/null != "$cache_file" && test -f "$cache_file"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: loading cache $cache_file" >&5 +$as_echo "$as_me: loading cache $cache_file" >&6;} case $cache_file in [\\/]* | ?:[\\/]* ) . "$cache_file";; *) . "./$cache_file";; esac fi else - { echo "$as_me:$LINENO: creating cache $cache_file" >&5 -echo "$as_me: creating cache $cache_file" >&6;} + { $as_echo "$as_me:${as_lineno-$LINENO}: creating cache $cache_file" >&5 +$as_echo "$as_me: creating cache $cache_file" >&6;} >$cache_file fi @@ -1872,68 +2501,56 @@ for ac_var in $ac_precious_vars; do eval ac_new_val=\$ac_env_${ac_var}_value case $ac_old_set,$ac_new_set in set,) - { echo "$as_me:$LINENO: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5 -echo "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;} + { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5 +$as_echo "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;} ac_cache_corrupted=: ;; ,set) - { echo "$as_me:$LINENO: error: \`$ac_var' was not set in the previous run" >&5 -echo "$as_me: error: \`$ac_var' was not set in the previous run" >&2;} + { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was not set in the previous run" >&5 +$as_echo "$as_me: error: \`$ac_var' was not set in the previous run" >&2;} ac_cache_corrupted=: ;; ,);; *) if test "x$ac_old_val" != "x$ac_new_val"; then - { echo "$as_me:$LINENO: error: \`$ac_var' has changed since the previous run:" >&5 -echo "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;} - { echo "$as_me:$LINENO: former value: $ac_old_val" >&5 -echo "$as_me: former value: $ac_old_val" >&2;} - { echo "$as_me:$LINENO: current value: $ac_new_val" >&5 -echo "$as_me: current value: $ac_new_val" >&2;} - ac_cache_corrupted=: + # differences in whitespace do not lead to failure. + ac_old_val_w=`echo x $ac_old_val` + ac_new_val_w=`echo x $ac_new_val` + if test "$ac_old_val_w" != "$ac_new_val_w"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' has changed since the previous run:" >&5 +$as_echo "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;} + ac_cache_corrupted=: + else + { $as_echo "$as_me:${as_lineno-$LINENO}: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&5 +$as_echo "$as_me: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&2;} + eval $ac_var=\$ac_old_val + fi + { $as_echo "$as_me:${as_lineno-$LINENO}: former value: \`$ac_old_val'" >&5 +$as_echo "$as_me: former value: \`$ac_old_val'" >&2;} + { $as_echo "$as_me:${as_lineno-$LINENO}: current value: \`$ac_new_val'" >&5 +$as_echo "$as_me: current value: \`$ac_new_val'" >&2;} fi;; esac # Pass precious variables to config.status. if test "$ac_new_set" = set; then case $ac_new_val in - *\'*) ac_arg=$ac_var=`echo "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;; + *\'*) ac_arg=$ac_var=`$as_echo "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;; *) ac_arg=$ac_var=$ac_new_val ;; esac case " $ac_configure_args " in *" '$ac_arg' "*) ;; # Avoid dups. Use of quotes ensures accuracy. - *) ac_configure_args="$ac_configure_args '$ac_arg'" ;; + *) as_fn_append ac_configure_args " '$ac_arg'" ;; esac fi done if $ac_cache_corrupted; then - { echo "$as_me:$LINENO: error: changes in the environment can compromise the build" >&5 -echo "$as_me: error: changes in the environment can compromise the build" >&2;} - { { echo "$as_me:$LINENO: error: run \`make distclean' and/or \`rm $cache_file' and start over" >&5 -echo "$as_me: error: run \`make distclean' and/or \`rm $cache_file' and start over" >&2;} - { (exit 1); exit 1; }; } + { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} + { $as_echo "$as_me:${as_lineno-$LINENO}: error: changes in the environment can compromise the build" >&5 +$as_echo "$as_me: error: changes in the environment can compromise the build" >&2;} + as_fn_error $? "run \`make distclean' and/or \`rm $cache_file' and start over" "$LINENO" 5 fi - - - - - - - - - - - - - - - - - - - - - - - - +## -------------------- ## +## Main body of script. ## +## -------------------- ## ac_ext=c ac_cpp='$CPP $CPPFLAGS' @@ -1963,9 +2580,7 @@ for ac_dir in build-aux "$srcdir"/build-aux; do fi done if test -z "$ac_aux_dir"; then - { { echo "$as_me:$LINENO: error: cannot find install-sh or install.sh in build-aux \"$srcdir\"/build-aux" >&5 -echo "$as_me: error: cannot find install-sh or install.sh in build-aux \"$srcdir\"/build-aux" >&2;} - { (exit 1); exit 1; }; } + as_fn_error $? "cannot find install-sh, install.sh, or shtool in build-aux \"$srcdir\"/build-aux" "$LINENO" 5 fi # These three variables are undocumented and unsupported, @@ -2002,22 +2617,23 @@ am__api_version='1.10' # SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff" # OS/2's system install, which has a completely different semantic # ./install, which can be erroneously created by make from ./install.sh. -{ echo "$as_me:$LINENO: checking for a BSD-compatible install" >&5 -echo $ECHO_N "checking for a BSD-compatible install... $ECHO_C" >&6; } +# Reject install programs that cannot install multiple files. +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for a BSD-compatible install" >&5 +$as_echo_n "checking for a BSD-compatible install... " >&6; } if test -z "$INSTALL"; then -if test "${ac_cv_path_install+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 +if ${ac_cv_path_install+:} false; then : + $as_echo_n "(cached) " >&6 else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. - # Account for people who put trailing slashes in PATH elements. -case $as_dir/ in - ./ | .// | /cC/* | \ + # Account for people who put trailing slashes in PATH elements. +case $as_dir/ in #(( + ./ | .// | /[cC]/* | \ /etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* | \ - ?:\\/os2\\/install\\/* | ?:\\/OS2\\/INSTALL\\/* | \ + ?:[\\/]os2[\\/]install[\\/]* | ?:[\\/]OS2[\\/]INSTALL[\\/]* | \ /usr/ucb/* ) ;; *) # OSF1 and SCO ODT 3.0 have their own names for install. @@ -2025,7 +2641,7 @@ case $as_dir/ in # by default. for ac_prog in ginstall scoinst install; do for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_prog$ac_exec_ext" && $as_test_x "$as_dir/$ac_prog$ac_exec_ext"; }; then + if as_fn_executable_p "$as_dir/$ac_prog$ac_exec_ext"; then if test $ac_prog = install && grep dspmsg "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then # AIX install. It has an incompatible calling convention. @@ -2035,17 +2651,29 @@ case $as_dir/ in # program-specific install script used by HP pwplus--don't use. : else - ac_cv_path_install="$as_dir/$ac_prog$ac_exec_ext -c" - break 3 + rm -rf conftest.one conftest.two conftest.dir + echo one > conftest.one + echo two > conftest.two + mkdir conftest.dir + if "$as_dir/$ac_prog$ac_exec_ext" -c conftest.one conftest.two "`pwd`/conftest.dir" && + test -s conftest.one && test -s conftest.two && + test -s conftest.dir/conftest.one && + test -s conftest.dir/conftest.two + then + ac_cv_path_install="$as_dir/$ac_prog$ac_exec_ext -c" + break 3 + fi fi fi done done ;; esac -done + + done IFS=$as_save_IFS +rm -rf conftest.one conftest.two conftest.dir fi if test "${ac_cv_path_install+set}" = set; then @@ -2058,8 +2686,8 @@ fi INSTALL=$ac_install_sh fi fi -{ echo "$as_me:$LINENO: result: $INSTALL" >&5 -echo "${ECHO_T}$INSTALL" >&6; } +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $INSTALL" >&5 +$as_echo "$INSTALL" >&6; } # Use test -z because SunOS4 sh mishandles braces in ${var-val}. # It thinks the first close brace ends the variable substitution. @@ -2069,8 +2697,8 @@ test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL}' test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644' -{ echo "$as_me:$LINENO: checking whether build environment is sane" >&5 -echo $ECHO_N "checking whether build environment is sane... $ECHO_C" >&6; } +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether build environment is sane" >&5 +$as_echo_n "checking whether build environment is sane... " >&6; } # Just in case sleep 1 echo timestamp > conftest.file @@ -2093,11 +2721,8 @@ if ( # if, for instance, CONFIG_SHELL is bash and it inherits a # broken ls alias from the environment. This has actually # happened. Such a system could not be considered "sane". - { { echo "$as_me:$LINENO: error: ls -t appears to fail. Make sure there is not a broken -alias in your environment" >&5 -echo "$as_me: error: ls -t appears to fail. Make sure there is not a broken -alias in your environment" >&2;} - { (exit 1); exit 1; }; } + as_fn_error $? "ls -t appears to fail. Make sure there is not a broken +alias in your environment" "$LINENO" 5 fi test "$2" = conftest.file @@ -2106,26 +2731,20 @@ then # Ok. : else - { { echo "$as_me:$LINENO: error: newly created file is older than distributed files! -Check your system clock" >&5 -echo "$as_me: error: newly created file is older than distributed files! -Check your system clock" >&2;} - { (exit 1); exit 1; }; } + as_fn_error $? "newly created file is older than distributed files! +Check your system clock" "$LINENO" 5 fi -{ echo "$as_me:$LINENO: result: yes" >&5 -echo "${ECHO_T}yes" >&6; } +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } test "$program_prefix" != NONE && program_transform_name="s&^&$program_prefix&;$program_transform_name" # Use a double $ so make ignores it. test "$program_suffix" != NONE && program_transform_name="s&\$&$program_suffix&;$program_transform_name" -# Double any \ or $. echo might interpret backslashes. +# Double any \ or $. # By default was `s,x,x', remove it if useless. -cat <<\_ACEOF >conftest.sed -s/[\\$]/&&/g;s/;s,x,x,$// -_ACEOF -program_transform_name=`echo $program_transform_name | sed -f conftest.sed` -rm -f conftest.sed +ac_script='s/[\\$]/&&/g;s/;s,x,x,$//' +program_transform_name=`$as_echo "$program_transform_name" | sed "$ac_script"` # expand $ac_aux_dir to an absolute path am_aux_dir=`cd $ac_aux_dir && pwd` @@ -2136,24 +2755,24 @@ if eval "$MISSING --run true"; then am_missing_run="$MISSING --run " else am_missing_run= - { echo "$as_me:$LINENO: WARNING: \`missing' script is too old or missing" >&5 -echo "$as_me: WARNING: \`missing' script is too old or missing" >&2;} + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: \`missing' script is too old or missing" >&5 +$as_echo "$as_me: WARNING: \`missing' script is too old or missing" >&2;} fi -{ echo "$as_me:$LINENO: checking for a thread-safe mkdir -p" >&5 -echo $ECHO_N "checking for a thread-safe mkdir -p... $ECHO_C" >&6; } +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for a thread-safe mkdir -p" >&5 +$as_echo_n "checking for a thread-safe mkdir -p... " >&6; } if test -z "$MKDIR_P"; then - if test "${ac_cv_path_mkdir+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 + if ${ac_cv_path_mkdir+:} false; then : + $as_echo_n "(cached) " >&6 else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH$PATH_SEPARATOR/opt/sfw/bin do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. - for ac_prog in mkdir gmkdir; do + for ac_prog in mkdir gmkdir; do for ac_exec_ext in '' $ac_executable_extensions; do - { test -f "$as_dir/$ac_prog$ac_exec_ext" && $as_test_x "$as_dir/$ac_prog$ac_exec_ext"; } || continue + as_fn_executable_p "$as_dir/$ac_prog$ac_exec_ext" || continue case `"$as_dir/$ac_prog$ac_exec_ext" --version 2>&1` in #( 'mkdir (GNU coreutils) '* | \ 'mkdir (coreutils) '* | \ @@ -2163,11 +2782,12 @@ do esac done done -done + done IFS=$as_save_IFS fi + test -d ./--version && rmdir ./--version if test "${ac_cv_path_mkdir+set}" = set; then MKDIR_P="$ac_cv_path_mkdir -p" else @@ -2175,12 +2795,11 @@ fi # value for MKDIR_P within a source directory, because that will # break other packages using the cache if that directory is # removed, or if the value is a relative name. - test -d ./--version && rmdir ./--version MKDIR_P="$ac_install_sh -d" fi fi -{ echo "$as_me:$LINENO: result: $MKDIR_P" >&5 -echo "${ECHO_T}$MKDIR_P" >&6; } +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $MKDIR_P" >&5 +$as_echo "$MKDIR_P" >&6; } mkdir_p="$MKDIR_P" case $mkdir_p in @@ -2192,10 +2811,10 @@ for ac_prog in gawk mawk nawk awk do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 -{ echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } -if test "${ac_cv_prog_AWK+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_AWK+:} false; then : + $as_echo_n "(cached) " >&6 else if test -n "$AWK"; then ac_cv_prog_AWK="$AWK" # Let the user override the test. @@ -2205,43 +2824,44 @@ for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_AWK="$ac_prog" - echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done -done + done IFS=$as_save_IFS fi fi AWK=$ac_cv_prog_AWK if test -n "$AWK"; then - { echo "$as_me:$LINENO: result: $AWK" >&5 -echo "${ECHO_T}$AWK" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AWK" >&5 +$as_echo "$AWK" >&6; } else - { echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } fi test -n "$AWK" && break done -{ echo "$as_me:$LINENO: checking whether ${MAKE-make} sets \$(MAKE)" >&5 -echo $ECHO_N "checking whether ${MAKE-make} sets \$(MAKE)... $ECHO_C" >&6; } -set x ${MAKE-make}; ac_make=`echo "$2" | sed 's/+/p/g; s/[^a-zA-Z0-9_]/_/g'` -if { as_var=ac_cv_prog_make_${ac_make}_set; eval "test \"\${$as_var+set}\" = set"; }; then - echo $ECHO_N "(cached) $ECHO_C" >&6 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ${MAKE-make} sets \$(MAKE)" >&5 +$as_echo_n "checking whether ${MAKE-make} sets \$(MAKE)... " >&6; } +set x ${MAKE-make} +ac_make=`$as_echo "$2" | sed 's/+/p/g; s/[^a-zA-Z0-9_]/_/g'` +if eval \${ac_cv_prog_make_${ac_make}_set+:} false; then : + $as_echo_n "(cached) " >&6 else cat >conftest.make <<\_ACEOF SHELL = /bin/sh all: @echo '@@@%%%=$(MAKE)=@@@%%%' _ACEOF -# GNU make sometimes prints "make[1]: Entering...", which would confuse us. +# GNU make sometimes prints "make[1]: Entering ...", which would confuse us. case `${MAKE-make} -f conftest.make 2>/dev/null` in *@@@%%%=?*=@@@%%%*) eval ac_cv_prog_make_${ac_make}_set=yes;; @@ -2251,12 +2871,12 @@ esac rm -f conftest.make fi if eval test \$ac_cv_prog_make_${ac_make}_set = yes; then - { echo "$as_me:$LINENO: result: yes" >&5 -echo "${ECHO_T}yes" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } SET_MAKE= else - { echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } SET_MAKE="MAKE=${MAKE-make}" fi @@ -2275,9 +2895,7 @@ if test "`cd $srcdir && pwd`" != "`pwd`"; then am__isrc=' -I$(srcdir)' # test to see if srcdir already configured if test -f $srcdir/config.status; then - { { echo "$as_me:$LINENO: error: source directory already configured; run \"make distclean\" there first" >&5 -echo "$as_me: error: source directory already configured; run \"make distclean\" there first" >&2;} - { (exit 1); exit 1; }; } + as_fn_error $? "source directory already configured; run \"make distclean\" there first" "$LINENO" 5 fi fi @@ -2331,10 +2949,10 @@ if test "$cross_compiling" != no; then if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args. set dummy ${ac_tool_prefix}strip; ac_word=$2 -{ echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } -if test "${ac_cv_prog_STRIP+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_STRIP+:} false; then : + $as_echo_n "(cached) " >&6 else if test -n "$STRIP"; then ac_cv_prog_STRIP="$STRIP" # Let the user override the test. @@ -2344,25 +2962,25 @@ for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_STRIP="${ac_tool_prefix}strip" - echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done -done + done IFS=$as_save_IFS fi fi STRIP=$ac_cv_prog_STRIP if test -n "$STRIP"; then - { echo "$as_me:$LINENO: result: $STRIP" >&5 -echo "${ECHO_T}$STRIP" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $STRIP" >&5 +$as_echo "$STRIP" >&6; } else - { echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } fi @@ -2371,10 +2989,10 @@ if test -z "$ac_cv_prog_STRIP"; then ac_ct_STRIP=$STRIP # Extract the first word of "strip", so it can be a program name with args. set dummy strip; ac_word=$2 -{ echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } -if test "${ac_cv_prog_ac_ct_STRIP+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_ac_ct_STRIP+:} false; then : + $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_STRIP"; then ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # Let the user override the test. @@ -2384,25 +3002,25 @@ for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_STRIP="strip" - echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done -done + done IFS=$as_save_IFS fi fi ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP if test -n "$ac_ct_STRIP"; then - { echo "$as_me:$LINENO: result: $ac_ct_STRIP" >&5 -echo "${ECHO_T}$ac_ct_STRIP" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_STRIP" >&5 +$as_echo "$ac_ct_STRIP" >&6; } else - { echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } fi if test "x$ac_ct_STRIP" = x; then @@ -2410,12 +3028,8 @@ fi else case $cross_compiling:$ac_tool_warned in yes:) -{ echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools -whose name does not start with the host triplet. If you think this -configuration is useful to you, please write to autoconf@gnu.org." >&5 -echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools -whose name does not start with the host triplet. If you think this -configuration is useful to you, please write to autoconf@gnu.org." >&2;} +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac STRIP=$ac_ct_STRIP @@ -2449,10 +3063,10 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args. set dummy ${ac_tool_prefix}gcc; ac_word=$2 -{ echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } -if test "${ac_cv_prog_CC+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_CC+:} false; then : + $as_echo_n "(cached) " >&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. @@ -2462,25 +3076,25 @@ for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_CC="${ac_tool_prefix}gcc" - echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done -done + done IFS=$as_save_IFS fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then - { echo "$as_me:$LINENO: result: $CC" >&5 -echo "${ECHO_T}$CC" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 +$as_echo "$CC" >&6; } else - { echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } fi @@ -2489,10 +3103,10 @@ if test -z "$ac_cv_prog_CC"; then ac_ct_CC=$CC # Extract the first word of "gcc", so it can be a program name with args. set dummy gcc; ac_word=$2 -{ echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } -if test "${ac_cv_prog_ac_ct_CC+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_ac_ct_CC+:} false; then : + $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_CC"; then ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. @@ -2502,25 +3116,25 @@ for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_CC="gcc" - echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done -done + done IFS=$as_save_IFS fi fi ac_ct_CC=$ac_cv_prog_ac_ct_CC if test -n "$ac_ct_CC"; then - { echo "$as_me:$LINENO: result: $ac_ct_CC" >&5 -echo "${ECHO_T}$ac_ct_CC" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 +$as_echo "$ac_ct_CC" >&6; } else - { echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } fi if test "x$ac_ct_CC" = x; then @@ -2528,12 +3142,8 @@ fi else case $cross_compiling:$ac_tool_warned in yes:) -{ echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools -whose name does not start with the host triplet. If you think this -configuration is useful to you, please write to autoconf@gnu.org." >&5 -echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools -whose name does not start with the host triplet. If you think this -configuration is useful to you, please write to autoconf@gnu.org." >&2;} +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac CC=$ac_ct_CC @@ -2546,10 +3156,10 @@ if test -z "$CC"; then if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args. set dummy ${ac_tool_prefix}cc; ac_word=$2 -{ echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } -if test "${ac_cv_prog_CC+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_CC+:} false; then : + $as_echo_n "(cached) " >&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. @@ -2559,25 +3169,25 @@ for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_CC="${ac_tool_prefix}cc" - echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done -done + done IFS=$as_save_IFS fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then - { echo "$as_me:$LINENO: result: $CC" >&5 -echo "${ECHO_T}$CC" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 +$as_echo "$CC" >&6; } else - { echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } fi @@ -2586,10 +3196,10 @@ fi if test -z "$CC"; then # Extract the first word of "cc", so it can be a program name with args. set dummy cc; ac_word=$2 -{ echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } -if test "${ac_cv_prog_CC+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_CC+:} false; then : + $as_echo_n "(cached) " >&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. @@ -2600,18 +3210,18 @@ for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then ac_prog_rejected=yes continue fi ac_cv_prog_CC="cc" - echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done -done + done IFS=$as_save_IFS if test $ac_prog_rejected = yes; then @@ -2630,11 +3240,11 @@ fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then - { echo "$as_me:$LINENO: result: $CC" >&5 -echo "${ECHO_T}$CC" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 +$as_echo "$CC" >&6; } else - { echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } fi @@ -2645,10 +3255,10 @@ if test -z "$CC"; then do # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. set dummy $ac_tool_prefix$ac_prog; ac_word=$2 -{ echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } -if test "${ac_cv_prog_CC+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_CC+:} false; then : + $as_echo_n "(cached) " >&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. @@ -2658,25 +3268,25 @@ for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_CC="$ac_tool_prefix$ac_prog" - echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done -done + done IFS=$as_save_IFS fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then - { echo "$as_me:$LINENO: result: $CC" >&5 -echo "${ECHO_T}$CC" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 +$as_echo "$CC" >&6; } else - { echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } fi @@ -2689,10 +3299,10 @@ if test -z "$CC"; then do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 -{ echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } -if test "${ac_cv_prog_ac_ct_CC+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_ac_ct_CC+:} false; then : + $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_CC"; then ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. @@ -2702,25 +3312,25 @@ for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_CC="$ac_prog" - echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done -done + done IFS=$as_save_IFS fi fi ac_ct_CC=$ac_cv_prog_ac_ct_CC if test -n "$ac_ct_CC"; then - { echo "$as_me:$LINENO: result: $ac_ct_CC" >&5 -echo "${ECHO_T}$ac_ct_CC" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 +$as_echo "$ac_ct_CC" >&6; } else - { echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } fi @@ -2732,12 +3342,8 @@ done else case $cross_compiling:$ac_tool_warned in yes:) -{ echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools -whose name does not start with the host triplet. If you think this -configuration is useful to you, please write to autoconf@gnu.org." >&5 -echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools -whose name does not start with the host triplet. If you think this -configuration is useful to you, please write to autoconf@gnu.org." >&2;} +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac CC=$ac_ct_CC @@ -2747,51 +3353,37 @@ fi fi -test -z "$CC" && { { echo "$as_me:$LINENO: error: no acceptable C compiler found in \$PATH -See \`config.log' for more details." >&5 -echo "$as_me: error: no acceptable C compiler found in \$PATH -See \`config.log' for more details." >&2;} - { (exit 1); exit 1; }; } +test -z "$CC" && { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error $? "no acceptable C compiler found in \$PATH +See \`config.log' for more details" "$LINENO" 5; } # Provide some information about the compiler. -echo "$as_me:$LINENO: checking for C compiler version" >&5 -ac_compiler=`set X $ac_compile; echo $2` -{ (ac_try="$ac_compiler --version >&5" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compiler --version >&5") 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } -{ (ac_try="$ac_compiler -v >&5" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compiler -v >&5") 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } -{ (ac_try="$ac_compiler -V >&5" +$as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler version" >&5 +set X $ac_compile +ac_compiler=$2 +for ac_option in --version -v -V -qversion; do + { { ac_try="$ac_compiler $ac_option >&5" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compiler -V >&5") 2>&5 +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_compiler $ac_option >&5") 2>conftest.err ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } + if test -s conftest.err; then + sed '10a\ +... rest of stderr output deleted ... + 10q' conftest.err >conftest.er1 + cat conftest.er1 >&5 + fi + rm -f conftest.er1 conftest.err + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } +done -cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF +cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int @@ -2803,42 +3395,38 @@ main () } _ACEOF ac_clean_files_save=$ac_clean_files -ac_clean_files="$ac_clean_files a.out a.exe b.out" +ac_clean_files="$ac_clean_files a.out a.out.dSYM a.exe b.out" # Try to create an executable without -o first, disregard a.out. # It will help us diagnose broken compilers, and finding out an intuition # of exeext. -{ echo "$as_me:$LINENO: checking for C compiler default output file name" >&5 -echo $ECHO_N "checking for C compiler default output file name... $ECHO_C" >&6; } -ac_link_default=`echo "$ac_link" | sed 's/ -o *conftest[^ ]*//'` -# -# List of possible output files, starting from the most likely. -# The algorithm is not robust to junk in `.', hence go to wildcards (a.*) -# only as a last resort. b.out is created by i960 compilers. -ac_files='a_out.exe a.exe conftest.exe a.out conftest a.* conftest.* b.out' -# -# The IRIX 6 linker writes into existing files which may not be -# executable, retaining their permissions. Remove them first so a -# subsequent execution test works. +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the C compiler works" >&5 +$as_echo_n "checking whether the C compiler works... " >&6; } +ac_link_default=`$as_echo "$ac_link" | sed 's/ -o *conftest[^ ]*//'` + +# The possible output files: +ac_files="a.out conftest.exe conftest a.exe a_out.exe b.out conftest.*" + ac_rmfiles= for ac_file in $ac_files do case $ac_file in - *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.o | *.obj ) ;; + *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; * ) ac_rmfiles="$ac_rmfiles $ac_file";; esac done rm -f $ac_rmfiles -if { (ac_try="$ac_link_default" +if { { ac_try="$ac_link_default" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 (eval "$ac_link_default") 2>&5 ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; then + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then : # Autoconf-2.13 could set the ac_cv_exeext variable to `no'. # So ignore a value of `no', otherwise this would lead to `EXEEXT = no' # in a Makefile. We should not override ac_cv_exeext if it was cached, @@ -2848,14 +3436,14 @@ for ac_file in $ac_files '' do test -f "$ac_file" || continue case $ac_file in - *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.o | *.obj ) + *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; [ab].out ) # We found the default executable, but exeext='' is most # certainly right. break;; *.* ) - if test "${ac_cv_exeext+set}" = set && test "$ac_cv_exeext" != no; + if test "${ac_cv_exeext+set}" = set && test "$ac_cv_exeext" != no; then :; else ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` fi @@ -2874,78 +3462,41 @@ test "$ac_cv_exeext" = no && ac_cv_exeext= else ac_file='' fi - -{ echo "$as_me:$LINENO: result: $ac_file" >&5 -echo "${ECHO_T}$ac_file" >&6; } -if test -z "$ac_file"; then - echo "$as_me: failed program was:" >&5 +if test -z "$ac_file"; then : + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +$as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 -{ { echo "$as_me:$LINENO: error: C compiler cannot create executables -See \`config.log' for more details." >&5 -echo "$as_me: error: C compiler cannot create executables -See \`config.log' for more details." >&2;} - { (exit 77); exit 77; }; } +{ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error 77 "C compiler cannot create executables +See \`config.log' for more details" "$LINENO" 5; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } fi - +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler default output file name" >&5 +$as_echo_n "checking for C compiler default output file name... " >&6; } +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_file" >&5 +$as_echo "$ac_file" >&6; } ac_exeext=$ac_cv_exeext -# Check that the compiler produces executables we can run. If not, either -# the compiler is broken, or we cross compile. -{ echo "$as_me:$LINENO: checking whether the C compiler works" >&5 -echo $ECHO_N "checking whether the C compiler works... $ECHO_C" >&6; } -# FIXME: These cross compiler hacks should be removed for Autoconf 3.0 -# If not cross compiling, check that we can run a simple program. -if test "$cross_compiling" != yes; then - if { ac_try='./$ac_file' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - cross_compiling=no - else - if test "$cross_compiling" = maybe; then - cross_compiling=yes - else - { { echo "$as_me:$LINENO: error: cannot run C compiled programs. -If you meant to cross compile, use \`--host'. -See \`config.log' for more details." >&5 -echo "$as_me: error: cannot run C compiled programs. -If you meant to cross compile, use \`--host'. -See \`config.log' for more details." >&2;} - { (exit 1); exit 1; }; } - fi - fi -fi -{ echo "$as_me:$LINENO: result: yes" >&5 -echo "${ECHO_T}yes" >&6; } - -rm -f a.out a.exe conftest$ac_cv_exeext b.out +rm -f -r a.out a.out.dSYM a.exe conftest$ac_cv_exeext b.out ac_clean_files=$ac_clean_files_save -# Check that the compiler produces executables we can run. If not, either -# the compiler is broken, or we cross compile. -{ echo "$as_me:$LINENO: checking whether we are cross compiling" >&5 -echo $ECHO_N "checking whether we are cross compiling... $ECHO_C" >&6; } -{ echo "$as_me:$LINENO: result: $cross_compiling" >&5 -echo "${ECHO_T}$cross_compiling" >&6; } - -{ echo "$as_me:$LINENO: checking for suffix of executables" >&5 -echo $ECHO_N "checking for suffix of executables... $ECHO_C" >&6; } -if { (ac_try="$ac_link" +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of executables" >&5 +$as_echo_n "checking for suffix of executables... " >&6; } +if { { ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 (eval "$ac_link") 2>&5 ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; then + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then : # If both `conftest.exe' and `conftest' are `present' (well, observable) # catch `conftest.exe'. For instance with Cygwin, `ls conftest' will # work properly (i.e., refer to `conftest.exe'), while it won't with @@ -2953,37 +3504,90 @@ eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 for ac_file in conftest.exe conftest conftest.*; do test -f "$ac_file" || continue case $ac_file in - *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.o | *.obj ) ;; + *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` break;; * ) break;; esac done else - { { echo "$as_me:$LINENO: error: cannot compute suffix of executables: cannot compile and link -See \`config.log' for more details." >&5 -echo "$as_me: error: cannot compute suffix of executables: cannot compile and link -See \`config.log' for more details." >&2;} - { (exit 1); exit 1; }; } + { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error $? "cannot compute suffix of executables: cannot compile and link +See \`config.log' for more details" "$LINENO" 5; } fi - -rm -f conftest$ac_cv_exeext -{ echo "$as_me:$LINENO: result: $ac_cv_exeext" >&5 -echo "${ECHO_T}$ac_cv_exeext" >&6; } +rm -f conftest conftest$ac_cv_exeext +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_exeext" >&5 +$as_echo "$ac_cv_exeext" >&6; } rm -f conftest.$ac_ext EXEEXT=$ac_cv_exeext ac_exeext=$EXEEXT -{ echo "$as_me:$LINENO: checking for suffix of object files" >&5 -echo $ECHO_N "checking for suffix of object files... $ECHO_C" >&6; } -if test "${ac_cv_objext+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +int +main () +{ +FILE *f = fopen ("conftest.out", "w"); + return ferror (f) || fclose (f) != 0; + + ; + return 0; +} _ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF +ac_clean_files="$ac_clean_files conftest.out" +# Check that the compiler produces executables we can run. If not, either +# the compiler is broken, or we cross compile. +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are cross compiling" >&5 +$as_echo_n "checking whether we are cross compiling... " >&6; } +if test "$cross_compiling" != yes; then + { { ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_link") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } + if { ac_try='./conftest$ac_cv_exeext' + { { case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; }; then + cross_compiling=no + else + if test "$cross_compiling" = maybe; then + cross_compiling=yes + else + { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error $? "cannot run C compiled programs. +If you meant to cross compile, use \`--host'. +See \`config.log' for more details" "$LINENO" 5; } + fi + fi +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $cross_compiling" >&5 +$as_echo "$cross_compiling" >&6; } + +rm -f conftest.$ac_ext conftest$ac_cv_exeext conftest.out +ac_clean_files=$ac_clean_files_save +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of object files" >&5 +$as_echo_n "checking for suffix of object files... " >&6; } +if ${ac_cv_objext+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int @@ -2995,51 +3599,46 @@ main () } _ACEOF rm -f conftest.o conftest.obj -if { (ac_try="$ac_compile" +if { { ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 (eval "$ac_compile") 2>&5 ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; then + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then : for ac_file in conftest.o conftest.obj conftest.*; do test -f "$ac_file" || continue; case $ac_file in - *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf ) ;; + *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM ) ;; *) ac_cv_objext=`expr "$ac_file" : '.*\.\(.*\)'` break;; esac done else - echo "$as_me: failed program was:" >&5 + $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 -{ { echo "$as_me:$LINENO: error: cannot compute suffix of object files: cannot compile -See \`config.log' for more details." >&5 -echo "$as_me: error: cannot compute suffix of object files: cannot compile -See \`config.log' for more details." >&2;} - { (exit 1); exit 1; }; } +{ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error $? "cannot compute suffix of object files: cannot compile +See \`config.log' for more details" "$LINENO" 5; } fi - rm -f conftest.$ac_cv_objext conftest.$ac_ext fi -{ echo "$as_me:$LINENO: result: $ac_cv_objext" >&5 -echo "${ECHO_T}$ac_cv_objext" >&6; } +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_objext" >&5 +$as_echo "$ac_cv_objext" >&6; } OBJEXT=$ac_cv_objext ac_objext=$OBJEXT -{ echo "$as_me:$LINENO: checking whether we are using the GNU C compiler" >&5 -echo $ECHO_N "checking whether we are using the GNU C compiler... $ECHO_C" >&6; } -if test "${ac_cv_c_compiler_gnu+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU C compiler" >&5 +$as_echo_n "checking whether we are using the GNU C compiler... " >&6; } +if ${ac_cv_c_compiler_gnu+:} false; then : + $as_echo_n "(cached) " >&6 else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF + cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int @@ -3053,54 +3652,34 @@ main () return 0; } _ACEOF -rm -f conftest.$ac_objext -if { (ac_try="$ac_compile" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compile") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then +if ac_fn_c_try_compile "$LINENO"; then : ac_compiler_gnu=yes else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_compiler_gnu=no + ac_compiler_gnu=no fi - rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ac_cv_c_compiler_gnu=$ac_compiler_gnu fi -{ echo "$as_me:$LINENO: result: $ac_cv_c_compiler_gnu" >&5 -echo "${ECHO_T}$ac_cv_c_compiler_gnu" >&6; } -GCC=`test $ac_compiler_gnu = yes && echo yes` +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_compiler_gnu" >&5 +$as_echo "$ac_cv_c_compiler_gnu" >&6; } +if test $ac_compiler_gnu = yes; then + GCC=yes +else + GCC= +fi ac_test_CFLAGS=${CFLAGS+set} ac_save_CFLAGS=$CFLAGS -{ echo "$as_me:$LINENO: checking whether $CC accepts -g" >&5 -echo $ECHO_N "checking whether $CC accepts -g... $ECHO_C" >&6; } -if test "${ac_cv_prog_cc_g+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC accepts -g" >&5 +$as_echo_n "checking whether $CC accepts -g... " >&6; } +if ${ac_cv_prog_cc_g+:} false; then : + $as_echo_n "(cached) " >&6 else ac_save_c_werror_flag=$ac_c_werror_flag ac_c_werror_flag=yes ac_cv_prog_cc_g=no CFLAGS="-g" - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF + cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int @@ -3111,34 +3690,11 @@ main () return 0; } _ACEOF -rm -f conftest.$ac_objext -if { (ac_try="$ac_compile" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compile") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then +if ac_fn_c_try_compile "$LINENO"; then : ac_cv_prog_cc_g=yes else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - CFLAGS="" - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF + CFLAGS="" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int @@ -3149,35 +3705,12 @@ main () return 0; } _ACEOF -rm -f conftest.$ac_objext -if { (ac_try="$ac_compile" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compile") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then - : -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 +if ac_fn_c_try_compile "$LINENO"; then : - ac_c_werror_flag=$ac_save_c_werror_flag +else + ac_c_werror_flag=$ac_save_c_werror_flag CFLAGS="-g" - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF + cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int @@ -3188,42 +3721,18 @@ main () return 0; } _ACEOF -rm -f conftest.$ac_objext -if { (ac_try="$ac_compile" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compile") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then +if ac_fn_c_try_compile "$LINENO"; then : ac_cv_prog_cc_g=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - fi - rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi - rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi - rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ac_c_werror_flag=$ac_save_c_werror_flag fi -{ echo "$as_me:$LINENO: result: $ac_cv_prog_cc_g" >&5 -echo "${ECHO_T}$ac_cv_prog_cc_g" >&6; } +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_g" >&5 +$as_echo "$ac_cv_prog_cc_g" >&6; } if test "$ac_test_CFLAGS" = set; then CFLAGS=$ac_save_CFLAGS elif test $ac_cv_prog_cc_g = yes; then @@ -3239,23 +3748,18 @@ else CFLAGS= fi fi -{ echo "$as_me:$LINENO: checking for $CC option to accept ISO C89" >&5 -echo $ECHO_N "checking for $CC option to accept ISO C89... $ECHO_C" >&6; } -if test "${ac_cv_prog_cc_c89+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $CC option to accept ISO C89" >&5 +$as_echo_n "checking for $CC option to accept ISO C89... " >&6; } +if ${ac_cv_prog_cc_c89+:} false; then : + $as_echo_n "(cached) " >&6 else ac_cv_prog_cc_c89=no ac_save_CC=$CC -cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF +cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include -#include -#include +struct stat; /* Most of the following tests are stolen from RCS 5.7's src/conf.sh. */ struct buf { int x; }; FILE * (*rcsopen) (struct buf *, struct stat *, int); @@ -3307,31 +3811,9 @@ for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std \ -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__" do CC="$ac_save_CC $ac_arg" - rm -f conftest.$ac_objext -if { (ac_try="$ac_compile" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compile") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then + if ac_fn_c_try_compile "$LINENO"; then : ac_cv_prog_cc_c89=$ac_arg -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - fi - rm -f core conftest.err conftest.$ac_objext test "x$ac_cv_prog_cc_c89" != "xno" && break done @@ -3342,17 +3824,19 @@ fi # AC_CACHE_VAL case "x$ac_cv_prog_cc_c89" in x) - { echo "$as_me:$LINENO: result: none needed" >&5 -echo "${ECHO_T}none needed" >&6; } ;; + { $as_echo "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 +$as_echo "none needed" >&6; } ;; xno) - { echo "$as_me:$LINENO: result: unsupported" >&5 -echo "${ECHO_T}unsupported" >&6; } ;; + { $as_echo "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 +$as_echo "unsupported" >&6; } ;; *) CC="$CC $ac_cv_prog_cc_c89" - { echo "$as_me:$LINENO: result: $ac_cv_prog_cc_c89" >&5 -echo "${ECHO_T}$ac_cv_prog_cc_c89" >&6; } ;; + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c89" >&5 +$as_echo "$ac_cv_prog_cc_c89" >&6; } ;; esac +if test "x$ac_cv_prog_cc_c89" != xno; then : +fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' @@ -3371,8 +3855,8 @@ am__doit: .PHONY: am__doit END # If we don't find an include directive, just comment out the code. -{ echo "$as_me:$LINENO: checking for style of include used by $am_make" >&5 -echo $ECHO_N "checking for style of include used by $am_make... $ECHO_C" >&6; } +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for style of include used by $am_make" >&5 +$as_echo_n "checking for style of include used by $am_make... " >&6; } am__include="#" am__quote= _am_result=none @@ -3399,12 +3883,12 @@ if test "$am__include" = "#"; then fi -{ echo "$as_me:$LINENO: result: $_am_result" >&5 -echo "${ECHO_T}$_am_result" >&6; } +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $_am_result" >&5 +$as_echo "$_am_result" >&6; } rm -f confinc confmf # Check whether --enable-dependency-tracking was given. -if test "${enable_dependency_tracking+set}" = set; then +if test "${enable_dependency_tracking+set}" = set; then : enableval=$enable_dependency_tracking; fi @@ -3424,10 +3908,10 @@ fi depcc="$CC" am_compiler_list= -{ echo "$as_me:$LINENO: checking dependency style of $depcc" >&5 -echo $ECHO_N "checking dependency style of $depcc... $ECHO_C" >&6; } -if test "${am_cv_CC_dependencies_compiler_type+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking dependency style of $depcc" >&5 +$as_echo_n "checking dependency style of $depcc... " >&6; } +if ${am_cv_CC_dependencies_compiler_type+:} false; then : + $as_echo_n "(cached) " >&6 else if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then # We make a subdir and do the tests there. Otherwise we can end up @@ -3515,8 +3999,8 @@ else fi fi -{ echo "$as_me:$LINENO: result: $am_cv_CC_dependencies_compiler_type" >&5 -echo "${ECHO_T}$am_cv_CC_dependencies_compiler_type" >&6; } +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_CC_dependencies_compiler_type" >&5 +$as_echo "$am_cv_CC_dependencies_compiler_type" >&6; } CCDEPMODE=depmode=$am_cv_CC_dependencies_compiler_type if @@ -3544,10 +4028,10 @@ if test -z "$CXX"; then do # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. set dummy $ac_tool_prefix$ac_prog; ac_word=$2 -{ echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } -if test "${ac_cv_prog_CXX+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_CXX+:} false; then : + $as_echo_n "(cached) " >&6 else if test -n "$CXX"; then ac_cv_prog_CXX="$CXX" # Let the user override the test. @@ -3557,25 +4041,25 @@ for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_CXX="$ac_tool_prefix$ac_prog" - echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done -done + done IFS=$as_save_IFS fi fi CXX=$ac_cv_prog_CXX if test -n "$CXX"; then - { echo "$as_me:$LINENO: result: $CXX" >&5 -echo "${ECHO_T}$CXX" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CXX" >&5 +$as_echo "$CXX" >&6; } else - { echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } fi @@ -3588,10 +4072,10 @@ if test -z "$CXX"; then do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 -{ echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } -if test "${ac_cv_prog_ac_ct_CXX+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_ac_ct_CXX+:} false; then : + $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_CXX"; then ac_cv_prog_ac_ct_CXX="$ac_ct_CXX" # Let the user override the test. @@ -3601,25 +4085,25 @@ for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_CXX="$ac_prog" - echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done -done + done IFS=$as_save_IFS fi fi ac_ct_CXX=$ac_cv_prog_ac_ct_CXX if test -n "$ac_ct_CXX"; then - { echo "$as_me:$LINENO: result: $ac_ct_CXX" >&5 -echo "${ECHO_T}$ac_ct_CXX" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CXX" >&5 +$as_echo "$ac_ct_CXX" >&6; } else - { echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } fi @@ -3631,12 +4115,8 @@ done else case $cross_compiling:$ac_tool_warned in yes:) -{ echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools -whose name does not start with the host triplet. If you think this -configuration is useful to you, please write to autoconf@gnu.org." >&5 -echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools -whose name does not start with the host triplet. If you think this -configuration is useful to you, please write to autoconf@gnu.org." >&2;} +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac CXX=$ac_ct_CXX @@ -3646,49 +4126,36 @@ fi fi fi # Provide some information about the compiler. -echo "$as_me:$LINENO: checking for C++ compiler version" >&5 -ac_compiler=`set X $ac_compile; echo $2` -{ (ac_try="$ac_compiler --version >&5" +$as_echo "$as_me:${as_lineno-$LINENO}: checking for C++ compiler version" >&5 +set X $ac_compile +ac_compiler=$2 +for ac_option in --version -v -V -qversion; do + { { ac_try="$ac_compiler $ac_option >&5" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compiler --version >&5") 2>&5 +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_compiler $ac_option >&5") 2>conftest.err ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } -{ (ac_try="$ac_compiler -v >&5" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compiler -v >&5") 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } -{ (ac_try="$ac_compiler -V >&5" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compiler -V >&5") 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } + if test -s conftest.err; then + sed '10a\ +... rest of stderr output deleted ... + 10q' conftest.err >conftest.er1 + cat conftest.er1 >&5 + fi + rm -f conftest.er1 conftest.err + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } +done -{ echo "$as_me:$LINENO: checking whether we are using the GNU C++ compiler" >&5 -echo $ECHO_N "checking whether we are using the GNU C++ compiler... $ECHO_C" >&6; } -if test "${ac_cv_cxx_compiler_gnu+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU C++ compiler" >&5 +$as_echo_n "checking whether we are using the GNU C++ compiler... " >&6; } +if ${ac_cv_cxx_compiler_gnu+:} false; then : + $as_echo_n "(cached) " >&6 else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF + cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int @@ -3702,54 +4169,34 @@ main () return 0; } _ACEOF -rm -f conftest.$ac_objext -if { (ac_try="$ac_compile" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compile") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_cxx_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then +if ac_fn_cxx_try_compile "$LINENO"; then : ac_compiler_gnu=yes else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_compiler_gnu=no + ac_compiler_gnu=no fi - rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ac_cv_cxx_compiler_gnu=$ac_compiler_gnu fi -{ echo "$as_me:$LINENO: result: $ac_cv_cxx_compiler_gnu" >&5 -echo "${ECHO_T}$ac_cv_cxx_compiler_gnu" >&6; } -GXX=`test $ac_compiler_gnu = yes && echo yes` +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_cxx_compiler_gnu" >&5 +$as_echo "$ac_cv_cxx_compiler_gnu" >&6; } +if test $ac_compiler_gnu = yes; then + GXX=yes +else + GXX= +fi ac_test_CXXFLAGS=${CXXFLAGS+set} ac_save_CXXFLAGS=$CXXFLAGS -{ echo "$as_me:$LINENO: checking whether $CXX accepts -g" >&5 -echo $ECHO_N "checking whether $CXX accepts -g... $ECHO_C" >&6; } -if test "${ac_cv_prog_cxx_g+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CXX accepts -g" >&5 +$as_echo_n "checking whether $CXX accepts -g... " >&6; } +if ${ac_cv_prog_cxx_g+:} false; then : + $as_echo_n "(cached) " >&6 else ac_save_cxx_werror_flag=$ac_cxx_werror_flag ac_cxx_werror_flag=yes ac_cv_prog_cxx_g=no CXXFLAGS="-g" - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF + cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int @@ -3760,34 +4207,11 @@ main () return 0; } _ACEOF -rm -f conftest.$ac_objext -if { (ac_try="$ac_compile" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compile") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_cxx_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then +if ac_fn_cxx_try_compile "$LINENO"; then : ac_cv_prog_cxx_g=yes else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - CXXFLAGS="" - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF + CXXFLAGS="" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int @@ -3798,35 +4222,12 @@ main () return 0; } _ACEOF -rm -f conftest.$ac_objext -if { (ac_try="$ac_compile" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compile") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_cxx_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then - : -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 +if ac_fn_cxx_try_compile "$LINENO"; then : - ac_cxx_werror_flag=$ac_save_cxx_werror_flag +else + ac_cxx_werror_flag=$ac_save_cxx_werror_flag CXXFLAGS="-g" - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF + cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int @@ -3837,42 +4238,18 @@ main () return 0; } _ACEOF -rm -f conftest.$ac_objext -if { (ac_try="$ac_compile" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compile") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_cxx_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then +if ac_fn_cxx_try_compile "$LINENO"; then : ac_cv_prog_cxx_g=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - fi - rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi - rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi - rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ac_cxx_werror_flag=$ac_save_cxx_werror_flag fi -{ echo "$as_me:$LINENO: result: $ac_cv_prog_cxx_g" >&5 -echo "${ECHO_T}$ac_cv_prog_cxx_g" >&6; } +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cxx_g" >&5 +$as_echo "$ac_cv_prog_cxx_g" >&6; } if test "$ac_test_CXXFLAGS" = set; then CXXFLAGS=$ac_save_CXXFLAGS elif test $ac_cv_prog_cxx_g = yes; then @@ -3896,10 +4273,10 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu depcc="$CXX" am_compiler_list= -{ echo "$as_me:$LINENO: checking dependency style of $depcc" >&5 -echo $ECHO_N "checking dependency style of $depcc... $ECHO_C" >&6; } -if test "${am_cv_CXX_dependencies_compiler_type+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking dependency style of $depcc" >&5 +$as_echo_n "checking dependency style of $depcc... " >&6; } +if ${am_cv_CXX_dependencies_compiler_type+:} false; then : + $as_echo_n "(cached) " >&6 else if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then # We make a subdir and do the tests there. Otherwise we can end up @@ -3987,8 +4364,8 @@ else fi fi -{ echo "$as_me:$LINENO: result: $am_cv_CXX_dependencies_compiler_type" >&5 -echo "${ECHO_T}$am_cv_CXX_dependencies_compiler_type" >&6; } +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_CXX_dependencies_compiler_type" >&5 +$as_echo "$am_cv_CXX_dependencies_compiler_type" >&6; } CXXDEPMODE=depmode=$am_cv_CXX_dependencies_compiler_type if @@ -4009,7 +4386,7 @@ ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ex ac_compiler_gnu=$ac_cv_cxx_compiler_gnu # Check whether --enable-shared was given. -if test "${enable_shared+set}" = set; then +if test "${enable_shared+set}" = set; then : enableval=$enable_shared; p=${PACKAGE-default} case $enableval in yes) enable_shared=yes ;; @@ -4033,7 +4410,7 @@ fi # Check whether --enable-static was given. -if test "${enable_static+set}" = set; then +if test "${enable_static+set}" = set; then : enableval=$enable_static; p=${PACKAGE-default} case $enableval in yes) enable_static=yes ;; @@ -4057,7 +4434,7 @@ fi # Check whether --enable-fast-install was given. -if test "${enable_fast_install+set}" = set; then +if test "${enable_fast_install+set}" = set; then : enableval=$enable_fast_install; p=${PACKAGE-default} case $enableval in yes) enable_fast_install=yes ;; @@ -4082,35 +4459,27 @@ fi # Make sure we can run config.sub. $SHELL "$ac_aux_dir/config.sub" sun4 >/dev/null 2>&1 || - { { echo "$as_me:$LINENO: error: cannot run $SHELL $ac_aux_dir/config.sub" >&5 -echo "$as_me: error: cannot run $SHELL $ac_aux_dir/config.sub" >&2;} - { (exit 1); exit 1; }; } + as_fn_error $? "cannot run $SHELL $ac_aux_dir/config.sub" "$LINENO" 5 -{ echo "$as_me:$LINENO: checking build system type" >&5 -echo $ECHO_N "checking build system type... $ECHO_C" >&6; } -if test "${ac_cv_build+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking build system type" >&5 +$as_echo_n "checking build system type... " >&6; } +if ${ac_cv_build+:} false; then : + $as_echo_n "(cached) " >&6 else ac_build_alias=$build_alias test "x$ac_build_alias" = x && ac_build_alias=`$SHELL "$ac_aux_dir/config.guess"` test "x$ac_build_alias" = x && - { { echo "$as_me:$LINENO: error: cannot guess build type; you must specify one" >&5 -echo "$as_me: error: cannot guess build type; you must specify one" >&2;} - { (exit 1); exit 1; }; } + as_fn_error $? "cannot guess build type; you must specify one" "$LINENO" 5 ac_cv_build=`$SHELL "$ac_aux_dir/config.sub" $ac_build_alias` || - { { echo "$as_me:$LINENO: error: $SHELL $ac_aux_dir/config.sub $ac_build_alias failed" >&5 -echo "$as_me: error: $SHELL $ac_aux_dir/config.sub $ac_build_alias failed" >&2;} - { (exit 1); exit 1; }; } + as_fn_error $? "$SHELL $ac_aux_dir/config.sub $ac_build_alias failed" "$LINENO" 5 fi -{ echo "$as_me:$LINENO: result: $ac_cv_build" >&5 -echo "${ECHO_T}$ac_cv_build" >&6; } +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_build" >&5 +$as_echo "$ac_cv_build" >&6; } case $ac_cv_build in *-*-*) ;; -*) { { echo "$as_me:$LINENO: error: invalid value of canonical build" >&5 -echo "$as_me: error: invalid value of canonical build" >&2;} - { (exit 1); exit 1; }; };; +*) as_fn_error $? "invalid value of canonical build" "$LINENO" 5;; esac build=$ac_cv_build ac_save_IFS=$IFS; IFS='-' @@ -4126,28 +4495,24 @@ IFS=$ac_save_IFS case $build_os in *\ *) build_os=`echo "$build_os" | sed 's/ /-/g'`;; esac -{ echo "$as_me:$LINENO: checking host system type" >&5 -echo $ECHO_N "checking host system type... $ECHO_C" >&6; } -if test "${ac_cv_host+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking host system type" >&5 +$as_echo_n "checking host system type... " >&6; } +if ${ac_cv_host+:} false; then : + $as_echo_n "(cached) " >&6 else if test "x$host_alias" = x; then ac_cv_host=$ac_cv_build else ac_cv_host=`$SHELL "$ac_aux_dir/config.sub" $host_alias` || - { { echo "$as_me:$LINENO: error: $SHELL $ac_aux_dir/config.sub $host_alias failed" >&5 -echo "$as_me: error: $SHELL $ac_aux_dir/config.sub $host_alias failed" >&2;} - { (exit 1); exit 1; }; } + as_fn_error $? "$SHELL $ac_aux_dir/config.sub $host_alias failed" "$LINENO" 5 fi fi -{ echo "$as_me:$LINENO: result: $ac_cv_host" >&5 -echo "${ECHO_T}$ac_cv_host" >&6; } +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_host" >&5 +$as_echo "$ac_cv_host" >&6; } case $ac_cv_host in *-*-*) ;; -*) { { echo "$as_me:$LINENO: error: invalid value of canonical host" >&5 -echo "$as_me: error: invalid value of canonical host" >&2;} - { (exit 1); exit 1; }; };; +*) as_fn_error $? "invalid value of canonical host" "$LINENO" 5;; esac host=$ac_cv_host ac_save_IFS=$IFS; IFS='-' @@ -4163,10 +4528,10 @@ IFS=$ac_save_IFS case $host_os in *\ *) host_os=`echo "$host_os" | sed 's/ /-/g'`;; esac -{ echo "$as_me:$LINENO: checking for a sed that does not truncate output" >&5 -echo $ECHO_N "checking for a sed that does not truncate output... $ECHO_C" >&6; } -if test "${lt_cv_path_SED+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for a sed that does not truncate output" >&5 +$as_echo_n "checking for a sed that does not truncate output... " >&6; } +if ${lt_cv_path_SED+:} false; then : + $as_echo_n "(cached) " >&6 else # Loop through the user's path and test for sed and gsed. # Then use that list of sed's as ones to test for truncation. @@ -4177,7 +4542,7 @@ do test -z "$as_dir" && as_dir=. for lt_ac_prog in sed gsed; do for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$lt_ac_prog$ac_exec_ext" && $as_test_x "$as_dir/$lt_ac_prog$ac_exec_ext"; }; then + if as_fn_executable_p "$as_dir/$lt_ac_prog$ac_exec_ext"; then lt_ac_sed_list="$lt_ac_sed_list $as_dir/$lt_ac_prog$ac_exec_ext" fi done @@ -4219,48 +4584,43 @@ fi SED=$lt_cv_path_SED -{ echo "$as_me:$LINENO: result: $SED" >&5 -echo "${ECHO_T}$SED" >&6; } +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $SED" >&5 +$as_echo "$SED" >&6; } -{ echo "$as_me:$LINENO: checking for grep that handles long lines and -e" >&5 -echo $ECHO_N "checking for grep that handles long lines and -e... $ECHO_C" >&6; } -if test "${ac_cv_path_GREP+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - # Extract the first word of "grep ggrep" to use in msg output -if test -z "$GREP"; then -set dummy grep ggrep; ac_prog_name=$2 -if test "${ac_cv_path_GREP+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for grep that handles long lines and -e" >&5 +$as_echo_n "checking for grep that handles long lines and -e... " >&6; } +if ${ac_cv_path_GREP+:} false; then : + $as_echo_n "(cached) " >&6 else + if test -z "$GREP"; then ac_path_GREP_found=false -# Loop through the user's path and test for each of PROGNAME-LIST -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR + # Loop through the user's path and test for each of PROGNAME-LIST + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. - for ac_prog in grep ggrep; do - for ac_exec_ext in '' $ac_executable_extensions; do - ac_path_GREP="$as_dir/$ac_prog$ac_exec_ext" - { test -f "$ac_path_GREP" && $as_test_x "$ac_path_GREP"; } || continue - # Check for GNU ac_path_GREP and select it if it is found. + for ac_prog in grep ggrep; do + for ac_exec_ext in '' $ac_executable_extensions; do + ac_path_GREP="$as_dir/$ac_prog$ac_exec_ext" + as_fn_executable_p "$ac_path_GREP" || continue +# Check for GNU ac_path_GREP and select it if it is found. # Check for GNU $ac_path_GREP case `"$ac_path_GREP" --version 2>&1` in *GNU*) ac_cv_path_GREP="$ac_path_GREP" ac_path_GREP_found=:;; *) ac_count=0 - echo $ECHO_N "0123456789$ECHO_C" >"conftest.in" + $as_echo_n 0123456789 >"conftest.in" while : do cat "conftest.in" "conftest.in" >"conftest.tmp" mv "conftest.tmp" "conftest.in" cp "conftest.in" "conftest.nl" - echo 'GREP' >> "conftest.nl" + $as_echo 'GREP' >> "conftest.nl" "$ac_path_GREP" -e 'GREP$' -e '-(cannot match)-' < "conftest.nl" >"conftest.out" 2>/dev/null || break diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break - ac_count=`expr $ac_count + 1` + as_fn_arith $ac_count + 1 && ac_count=$as_val if test $ac_count -gt ${ac_path_GREP_max-0}; then # Best one so far, save it but keep looking for a better one ac_cv_path_GREP="$ac_path_GREP" @@ -4269,80 +4629,64 @@ case `"$ac_path_GREP" --version 2>&1` in # 10*(2^10) chars as input seems more than enough test $ac_count -gt 10 && break done - rm -f conftest.in conftest.tmp conftest.nl conftest.out;; -esac - - - $ac_path_GREP_found && break 3 - done -done - -done -IFS=$as_save_IFS - - -fi - -GREP="$ac_cv_path_GREP" -if test -z "$GREP"; then - { { echo "$as_me:$LINENO: error: no acceptable $ac_prog_name could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" >&5 -echo "$as_me: error: no acceptable $ac_prog_name could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" >&2;} - { (exit 1); exit 1; }; } -fi + rm -f conftest.in conftest.tmp conftest.nl conftest.out;; +esac + $ac_path_GREP_found && break 3 + done + done + done +IFS=$as_save_IFS + if test -z "$ac_cv_path_GREP"; then + as_fn_error $? "no acceptable grep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5 + fi else ac_cv_path_GREP=$GREP fi - fi -{ echo "$as_me:$LINENO: result: $ac_cv_path_GREP" >&5 -echo "${ECHO_T}$ac_cv_path_GREP" >&6; } +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_GREP" >&5 +$as_echo "$ac_cv_path_GREP" >&6; } GREP="$ac_cv_path_GREP" -{ echo "$as_me:$LINENO: checking for egrep" >&5 -echo $ECHO_N "checking for egrep... $ECHO_C" >&6; } -if test "${ac_cv_path_EGREP+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for egrep" >&5 +$as_echo_n "checking for egrep... " >&6; } +if ${ac_cv_path_EGREP+:} false; then : + $as_echo_n "(cached) " >&6 else if echo a | $GREP -E '(a|b)' >/dev/null 2>&1 then ac_cv_path_EGREP="$GREP -E" else - # Extract the first word of "egrep" to use in msg output -if test -z "$EGREP"; then -set dummy egrep; ac_prog_name=$2 -if test "${ac_cv_path_EGREP+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else + if test -z "$EGREP"; then ac_path_EGREP_found=false -# Loop through the user's path and test for each of PROGNAME-LIST -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR + # Loop through the user's path and test for each of PROGNAME-LIST + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. - for ac_prog in egrep; do - for ac_exec_ext in '' $ac_executable_extensions; do - ac_path_EGREP="$as_dir/$ac_prog$ac_exec_ext" - { test -f "$ac_path_EGREP" && $as_test_x "$ac_path_EGREP"; } || continue - # Check for GNU ac_path_EGREP and select it if it is found. + for ac_prog in egrep; do + for ac_exec_ext in '' $ac_executable_extensions; do + ac_path_EGREP="$as_dir/$ac_prog$ac_exec_ext" + as_fn_executable_p "$ac_path_EGREP" || continue +# Check for GNU ac_path_EGREP and select it if it is found. # Check for GNU $ac_path_EGREP case `"$ac_path_EGREP" --version 2>&1` in *GNU*) ac_cv_path_EGREP="$ac_path_EGREP" ac_path_EGREP_found=:;; *) ac_count=0 - echo $ECHO_N "0123456789$ECHO_C" >"conftest.in" + $as_echo_n 0123456789 >"conftest.in" while : do cat "conftest.in" "conftest.in" >"conftest.tmp" mv "conftest.tmp" "conftest.in" cp "conftest.in" "conftest.nl" - echo 'EGREP' >> "conftest.nl" + $as_echo 'EGREP' >> "conftest.nl" "$ac_path_EGREP" 'EGREP$' < "conftest.nl" >"conftest.out" 2>/dev/null || break diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break - ac_count=`expr $ac_count + 1` + as_fn_arith $ac_count + 1 && ac_count=$as_val if test $ac_count -gt ${ac_path_EGREP_max-0}; then # Best one so far, save it but keep looking for a better one ac_cv_path_EGREP="$ac_path_EGREP" @@ -4354,39 +4698,28 @@ case `"$ac_path_EGREP" --version 2>&1` in rm -f conftest.in conftest.tmp conftest.nl conftest.out;; esac - - $ac_path_EGREP_found && break 3 + $ac_path_EGREP_found && break 3 + done + done done -done - -done IFS=$as_save_IFS - - -fi - -EGREP="$ac_cv_path_EGREP" -if test -z "$EGREP"; then - { { echo "$as_me:$LINENO: error: no acceptable $ac_prog_name could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" >&5 -echo "$as_me: error: no acceptable $ac_prog_name could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" >&2;} - { (exit 1); exit 1; }; } -fi - + if test -z "$ac_cv_path_EGREP"; then + as_fn_error $? "no acceptable egrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5 + fi else ac_cv_path_EGREP=$EGREP fi - fi fi -{ echo "$as_me:$LINENO: result: $ac_cv_path_EGREP" >&5 -echo "${ECHO_T}$ac_cv_path_EGREP" >&6; } +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_EGREP" >&5 +$as_echo "$ac_cv_path_EGREP" >&6; } EGREP="$ac_cv_path_EGREP" # Check whether --with-gnu-ld was given. -if test "${with_gnu_ld+set}" = set; then +if test "${with_gnu_ld+set}" = set; then : withval=$with_gnu_ld; test "$withval" = no || with_gnu_ld=yes else with_gnu_ld=no @@ -4395,8 +4728,8 @@ fi ac_prog=ld if test "$GCC" = yes; then # Check if gcc -print-prog-name=ld gives a path. - { echo "$as_me:$LINENO: checking for ld used by $CC" >&5 -echo $ECHO_N "checking for ld used by $CC... $ECHO_C" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ld used by $CC" >&5 +$as_echo_n "checking for ld used by $CC... " >&6; } case $host in *-*-mingw*) # gcc leaves a trailing carriage return which upsets mingw @@ -4425,14 +4758,14 @@ echo $ECHO_N "checking for ld used by $CC... $ECHO_C" >&6; } ;; esac elif test "$with_gnu_ld" = yes; then - { echo "$as_me:$LINENO: checking for GNU ld" >&5 -echo $ECHO_N "checking for GNU ld... $ECHO_C" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GNU ld" >&5 +$as_echo_n "checking for GNU ld... " >&6; } else - { echo "$as_me:$LINENO: checking for non-GNU ld" >&5 -echo $ECHO_N "checking for non-GNU ld... $ECHO_C" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for non-GNU ld" >&5 +$as_echo_n "checking for non-GNU ld... " >&6; } fi -if test "${lt_cv_path_LD+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 +if ${lt_cv_path_LD+:} false; then : + $as_echo_n "(cached) " >&6 else if test -z "$LD"; then lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR @@ -4462,19 +4795,17 @@ fi LD="$lt_cv_path_LD" if test -n "$LD"; then - { echo "$as_me:$LINENO: result: $LD" >&5 -echo "${ECHO_T}$LD" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LD" >&5 +$as_echo "$LD" >&6; } else - { echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } fi -test -z "$LD" && { { echo "$as_me:$LINENO: error: no acceptable ld found in \$PATH" >&5 -echo "$as_me: error: no acceptable ld found in \$PATH" >&2;} - { (exit 1); exit 1; }; } -{ echo "$as_me:$LINENO: checking if the linker ($LD) is GNU ld" >&5 -echo $ECHO_N "checking if the linker ($LD) is GNU ld... $ECHO_C" >&6; } -if test "${lt_cv_prog_gnu_ld+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 +test -z "$LD" && as_fn_error $? "no acceptable ld found in \$PATH" "$LINENO" 5 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if the linker ($LD) is GNU ld" >&5 +$as_echo_n "checking if the linker ($LD) is GNU ld... " >&6; } +if ${lt_cv_prog_gnu_ld+:} false; then : + $as_echo_n "(cached) " >&6 else # I'd rather use --version here, but apparently some GNU lds only accept -v. case `$LD -v 2>&1 &1 &5 -echo "${ECHO_T}$lt_cv_prog_gnu_ld" >&6; } +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_gnu_ld" >&5 +$as_echo "$lt_cv_prog_gnu_ld" >&6; } with_gnu_ld=$lt_cv_prog_gnu_ld -{ echo "$as_me:$LINENO: checking for $LD option to reload object files" >&5 -echo $ECHO_N "checking for $LD option to reload object files... $ECHO_C" >&6; } -if test "${lt_cv_ld_reload_flag+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $LD option to reload object files" >&5 +$as_echo_n "checking for $LD option to reload object files... " >&6; } +if ${lt_cv_ld_reload_flag+:} false; then : + $as_echo_n "(cached) " >&6 else lt_cv_ld_reload_flag='-r' fi -{ echo "$as_me:$LINENO: result: $lt_cv_ld_reload_flag" >&5 -echo "${ECHO_T}$lt_cv_ld_reload_flag" >&6; } +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ld_reload_flag" >&5 +$as_echo "$lt_cv_ld_reload_flag" >&6; } reload_flag=$lt_cv_ld_reload_flag case $reload_flag in "" | " "*) ;; @@ -4516,10 +4847,10 @@ case $host_os in ;; esac -{ echo "$as_me:$LINENO: checking for BSD-compatible nm" >&5 -echo $ECHO_N "checking for BSD-compatible nm... $ECHO_C" >&6; } -if test "${lt_cv_path_NM+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for BSD-compatible nm" >&5 +$as_echo_n "checking for BSD-compatible nm... " >&6; } +if ${lt_cv_path_NM+:} false; then : + $as_echo_n "(cached) " >&6 else if test -n "$NM"; then # Let the user override the test. @@ -4565,25 +4896,25 @@ else test -z "$lt_cv_path_NM" && lt_cv_path_NM=nm fi fi -{ echo "$as_me:$LINENO: result: $lt_cv_path_NM" >&5 -echo "${ECHO_T}$lt_cv_path_NM" >&6; } +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_path_NM" >&5 +$as_echo "$lt_cv_path_NM" >&6; } NM="$lt_cv_path_NM" -{ echo "$as_me:$LINENO: checking whether ln -s works" >&5 -echo $ECHO_N "checking whether ln -s works... $ECHO_C" >&6; } +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ln -s works" >&5 +$as_echo_n "checking whether ln -s works... " >&6; } LN_S=$as_ln_s if test "$LN_S" = "ln -s"; then - { echo "$as_me:$LINENO: result: yes" >&5 -echo "${ECHO_T}yes" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } else - { echo "$as_me:$LINENO: result: no, using $LN_S" >&5 -echo "${ECHO_T}no, using $LN_S" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no, using $LN_S" >&5 +$as_echo "no, using $LN_S" >&6; } fi -{ echo "$as_me:$LINENO: checking how to recognize dependent libraries" >&5 -echo $ECHO_N "checking how to recognize dependent libraries... $ECHO_C" >&6; } -if test "${lt_cv_deplibs_check_method+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to recognize dependent libraries" >&5 +$as_echo_n "checking how to recognize dependent libraries... " >&6; } +if ${lt_cv_deplibs_check_method+:} false; then : + $as_echo_n "(cached) " >&6 else lt_cv_file_magic_cmd='$MAGIC_CMD' lt_cv_file_magic_test_file= @@ -4766,8 +5097,8 @@ sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) esac fi -{ echo "$as_me:$LINENO: result: $lt_cv_deplibs_check_method" >&5 -echo "${ECHO_T}$lt_cv_deplibs_check_method" >&6; } +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_deplibs_check_method" >&5 +$as_echo "$lt_cv_deplibs_check_method" >&6; } file_magic_cmd=$lt_cv_file_magic_cmd deplibs_check_method=$lt_cv_deplibs_check_method test -z "$deplibs_check_method" && deplibs_check_method=unknown @@ -4787,7 +5118,7 @@ compiler=$CC # Check whether --enable-libtool-lock was given. -if test "${enable_libtool_lock+set}" = set; then +if test "${enable_libtool_lock+set}" = set; then : enableval=$enable_libtool_lock; fi @@ -4799,11 +5130,11 @@ case $host in ia64-*-hpux*) # Find out which ABI we are using. echo 'int i;' > conftest.$ac_ext - if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 (eval $ac_compile) 2>&5 ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; then + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then case `/usr/bin/file conftest.$ac_objext` in *ELF-32*) HPUX_IA64_MODE="32" @@ -4817,12 +5148,12 @@ ia64-*-hpux*) ;; *-*-irix6*) # Find out which ABI we are using. - echo '#line 4820 "configure"' > conftest.$ac_ext - if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + echo '#line 5151 "configure"' > conftest.$ac_ext + if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 (eval $ac_compile) 2>&5 ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; then + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then if test "$lt_cv_prog_gnu_ld" = yes; then case `/usr/bin/file conftest.$ac_objext` in *32-bit*) @@ -4856,11 +5187,11 @@ x86_64-*kfreebsd*-gnu|x86_64-*linux*|ppc*-*linux*|powerpc*-*linux*| \ s390*-*linux*|sparc*-*linux*) # Find out which ABI we are using. echo 'int i;' > conftest.$ac_ext - if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 (eval $ac_compile) 2>&5 ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; then + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then case `/usr/bin/file conftest.o` in *32-bit*) case $host in @@ -4909,10 +5240,10 @@ s390*-*linux*|sparc*-*linux*) # On SCO OpenServer 5, we need -belf to get full-featured binaries. SAVE_CFLAGS="$CFLAGS" CFLAGS="$CFLAGS -belf" - { echo "$as_me:$LINENO: checking whether the C compiler needs -belf" >&5 -echo $ECHO_N "checking whether the C compiler needs -belf... $ECHO_C" >&6; } -if test "${lt_cv_cc_needs_belf+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the C compiler needs -belf" >&5 +$as_echo_n "checking whether the C compiler needs -belf... " >&6; } +if ${lt_cv_cc_needs_belf+:} false; then : + $as_echo_n "(cached) " >&6 else ac_ext=c ac_cpp='$CPP $CPPFLAGS' @@ -4920,11 +5251,7 @@ ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF + cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int @@ -4935,34 +5262,13 @@ main () return 0; } _ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_link") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest$ac_exeext && - $as_test_x conftest$ac_exeext; then +if ac_fn_c_try_link "$LINENO"; then : lt_cv_cc_needs_belf=yes else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - lt_cv_cc_needs_belf=no + lt_cv_cc_needs_belf=no fi - -rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ - conftest$ac_exeext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' @@ -4970,8 +5276,8 @@ ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $ ac_compiler_gnu=$ac_cv_c_compiler_gnu fi -{ echo "$as_me:$LINENO: result: $lt_cv_cc_needs_belf" >&5 -echo "${ECHO_T}$lt_cv_cc_needs_belf" >&6; } +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_cc_needs_belf" >&5 +$as_echo "$lt_cv_cc_needs_belf" >&6; } if test x"$lt_cv_cc_needs_belf" != x"yes"; then # this is probably gcc 2.8.0, egcs 1.0 or newer; no need for -belf CFLAGS="$SAVE_CFLAGS" @@ -4980,11 +5286,11 @@ echo "${ECHO_T}$lt_cv_cc_needs_belf" >&6; } sparc*-*solaris*) # Find out which ABI we are using. echo 'int i;' > conftest.$ac_ext - if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 (eval $ac_compile) 2>&5 ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; then + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then case `/usr/bin/file conftest.o` in *64-bit*) case $lt_cv_prog_gnu_ld in @@ -5012,15 +5318,15 @@ ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu -{ echo "$as_me:$LINENO: checking how to run the C preprocessor" >&5 -echo $ECHO_N "checking how to run the C preprocessor... $ECHO_C" >&6; } +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to run the C preprocessor" >&5 +$as_echo_n "checking how to run the C preprocessor... " >&6; } # On Suns, sometimes $CPP names a directory. if test -n "$CPP" && test -d "$CPP"; then CPP= fi if test -z "$CPP"; then - if test "${ac_cv_prog_CPP+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 + if ${ac_cv_prog_CPP+:} false; then : + $as_echo_n "(cached) " >&6 else # Double quotes because CPP needs to be expanded for CPP in "$CC -E" "$CC -E -traditional-cpp" "/lib/cpp" @@ -5034,11 +5340,7 @@ do # exists even on freestanding compilers. # On the NeXT, cc -E runs the code through the compiler's parser, # not just through cpp. "Syntax error" is here to catch this case. - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF + cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #ifdef __STDC__ # include @@ -5047,76 +5349,34 @@ cat >>conftest.$ac_ext <<_ACEOF #endif Syntax error _ACEOF -if { (ac_try="$ac_cpp conftest.$ac_ext" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } >/dev/null && { - test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || - test ! -s conftest.err - }; then - : -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 +if ac_fn_c_try_cpp "$LINENO"; then : +else # Broken: fails on valid input. continue fi - -rm -f conftest.err conftest.$ac_ext +rm -f conftest.err conftest.i conftest.$ac_ext # OK, works on sane cases. Now check whether nonexistent headers # can be detected and how. - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF + cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include _ACEOF -if { (ac_try="$ac_cpp conftest.$ac_ext" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } >/dev/null && { - test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || - test ! -s conftest.err - }; then +if ac_fn_c_try_cpp "$LINENO"; then : # Broken: success on invalid input. continue else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - # Passes both tests. ac_preproc_ok=: break fi - -rm -f conftest.err conftest.$ac_ext +rm -f conftest.err conftest.i conftest.$ac_ext done # Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. -rm -f conftest.err conftest.$ac_ext -if $ac_preproc_ok; then +rm -f conftest.i conftest.err conftest.$ac_ext +if $ac_preproc_ok; then : break fi @@ -5128,8 +5388,8 @@ fi else ac_cv_prog_CPP=$CPP fi -{ echo "$as_me:$LINENO: result: $CPP" >&5 -echo "${ECHO_T}$CPP" >&6; } +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $CPP" >&5 +$as_echo "$CPP" >&6; } ac_preproc_ok=false for ac_c_preproc_warn_flag in '' yes do @@ -5139,11 +5399,7 @@ do # exists even on freestanding compilers. # On the NeXT, cc -E runs the code through the compiler's parser, # not just through cpp. "Syntax error" is here to catch this case. - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF + cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #ifdef __STDC__ # include @@ -5152,83 +5408,40 @@ cat >>conftest.$ac_ext <<_ACEOF #endif Syntax error _ACEOF -if { (ac_try="$ac_cpp conftest.$ac_ext" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } >/dev/null && { - test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || - test ! -s conftest.err - }; then - : -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 +if ac_fn_c_try_cpp "$LINENO"; then : +else # Broken: fails on valid input. continue fi - -rm -f conftest.err conftest.$ac_ext +rm -f conftest.err conftest.i conftest.$ac_ext # OK, works on sane cases. Now check whether nonexistent headers # can be detected and how. - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF + cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include _ACEOF -if { (ac_try="$ac_cpp conftest.$ac_ext" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } >/dev/null && { - test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || - test ! -s conftest.err - }; then +if ac_fn_c_try_cpp "$LINENO"; then : # Broken: success on invalid input. continue else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - # Passes both tests. ac_preproc_ok=: break fi - -rm -f conftest.err conftest.$ac_ext +rm -f conftest.err conftest.i conftest.$ac_ext done # Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. -rm -f conftest.err conftest.$ac_ext -if $ac_preproc_ok; then - : +rm -f conftest.i conftest.err conftest.$ac_ext +if $ac_preproc_ok; then : + else - { { echo "$as_me:$LINENO: error: C preprocessor \"$CPP\" fails sanity check -See \`config.log' for more details." >&5 -echo "$as_me: error: C preprocessor \"$CPP\" fails sanity check -See \`config.log' for more details." >&2;} - { (exit 1); exit 1; }; } + { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error $? "C preprocessor \"$CPP\" fails sanity check +See \`config.log' for more details" "$LINENO" 5; } fi ac_ext=c @@ -5238,16 +5451,12 @@ ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $ ac_compiler_gnu=$ac_cv_c_compiler_gnu -{ echo "$as_me:$LINENO: checking for ANSI C header files" >&5 -echo $ECHO_N "checking for ANSI C header files... $ECHO_C" >&6; } -if test "${ac_cv_header_stdc+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for ANSI C header files" >&5 +$as_echo_n "checking for ANSI C header files... " >&6; } +if ${ac_cv_header_stdc+:} false; then : + $as_echo_n "(cached) " >&6 else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF + cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include @@ -5262,47 +5471,23 @@ main () return 0; } _ACEOF -rm -f conftest.$ac_objext -if { (ac_try="$ac_compile" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compile") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then +if ac_fn_c_try_compile "$LINENO"; then : ac_cv_header_stdc=yes else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_cv_header_stdc=no + ac_cv_header_stdc=no fi - rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext if test $ac_cv_header_stdc = yes; then # SunOS 4.x string.h does not declare mem*, contrary to ANSI. - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF + cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include _ACEOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - $EGREP "memchr" >/dev/null 2>&1; then - : + $EGREP "memchr" >/dev/null 2>&1; then : + else ac_cv_header_stdc=no fi @@ -5312,18 +5497,14 @@ fi if test $ac_cv_header_stdc = yes; then # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI. - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF + cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include _ACEOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - $EGREP "free" >/dev/null 2>&1; then - : + $EGREP "free" >/dev/null 2>&1; then : + else ac_cv_header_stdc=no fi @@ -5333,14 +5514,10 @@ fi if test $ac_cv_header_stdc = yes; then # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi. - if test "$cross_compiling" = yes; then + if test "$cross_compiling" = yes; then : : else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF + cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include @@ -5367,113 +5544,35 @@ main () return 0; } _ACEOF -rm -f conftest$ac_exeext -if { (ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_link") 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { ac_try='./conftest$ac_exeext' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - : -else - echo "$as_me: program exited with status $ac_status" >&5 -echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 +if ac_fn_c_try_run "$LINENO"; then : -( exit $ac_status ) -ac_cv_header_stdc=no +else + ac_cv_header_stdc=no fi -rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ + conftest.$ac_objext conftest.beam conftest.$ac_ext fi - fi fi -{ echo "$as_me:$LINENO: result: $ac_cv_header_stdc" >&5 -echo "${ECHO_T}$ac_cv_header_stdc" >&6; } +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_stdc" >&5 +$as_echo "$ac_cv_header_stdc" >&6; } if test $ac_cv_header_stdc = yes; then -cat >>confdefs.h <<\_ACEOF -#define STDC_HEADERS 1 -_ACEOF +$as_echo "#define STDC_HEADERS 1" >>confdefs.h fi # On IRIX 5.3, sys/types and inttypes.h are conflicting. - - - - - - - - - for ac_header in sys/types.h sys/stat.h stdlib.h string.h memory.h strings.h \ inttypes.h stdint.h unistd.h -do -as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` -{ echo "$as_me:$LINENO: checking for $ac_header" >&5 -echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; } -if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -$ac_includes_default - -#include <$ac_header> -_ACEOF -rm -f conftest.$ac_objext -if { (ac_try="$ac_compile" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compile") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then - eval "$as_ac_Header=yes" -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - eval "$as_ac_Header=no" -fi - -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -fi -ac_res=`eval echo '${'$as_ac_Header'}'` - { echo "$as_me:$LINENO: result: $ac_res" >&5 -echo "${ECHO_T}$ac_res" >&6; } -if test `eval echo '${'$as_ac_Header'}'` = yes; then +do : + as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` +ac_fn_c_check_header_compile "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default +" +if eval test \"x\$"$as_ac_Header"\" = x"yes"; then : cat >>confdefs.h <<_ACEOF -#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 +#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 _ACEOF fi @@ -5481,145 +5580,12 @@ fi done - for ac_header in dlfcn.h -do -as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` -if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then - { echo "$as_me:$LINENO: checking for $ac_header" >&5 -echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; } -if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -fi -ac_res=`eval echo '${'$as_ac_Header'}'` - { echo "$as_me:$LINENO: result: $ac_res" >&5 -echo "${ECHO_T}$ac_res" >&6; } -else - # Is the header compilable? -{ echo "$as_me:$LINENO: checking $ac_header usability" >&5 -echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6; } -cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -$ac_includes_default -#include <$ac_header> -_ACEOF -rm -f conftest.$ac_objext -if { (ac_try="$ac_compile" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compile") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then - ac_header_compiler=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_header_compiler=no -fi - -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -{ echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 -echo "${ECHO_T}$ac_header_compiler" >&6; } - -# Is the header present? -{ echo "$as_me:$LINENO: checking $ac_header presence" >&5 -echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6; } -cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -#include <$ac_header> -_ACEOF -if { (ac_try="$ac_cpp conftest.$ac_ext" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } >/dev/null && { - test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || - test ! -s conftest.err - }; then - ac_header_preproc=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_header_preproc=no -fi - -rm -f conftest.err conftest.$ac_ext -{ echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 -echo "${ECHO_T}$ac_header_preproc" >&6; } - -# So? What about this header? -case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in - yes:no: ) - { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5 -echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;} - { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5 -echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;} - ac_header_preproc=yes - ;; - no:yes:* ) - { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5 -echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;} - { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5 -echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;} - { echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5 -echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;} - { echo "$as_me:$LINENO: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&5 -echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&2;} - { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 -echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;} - { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5 -echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;} - ( cat <<\_ASBOX -## --------------------------------------------------- ## -## Report this to googletestframework@googlegroups.com ## -## --------------------------------------------------- ## -_ASBOX - ) | sed "s/^/$as_me: WARNING: /" >&2 - ;; -esac -{ echo "$as_me:$LINENO: checking for $ac_header" >&5 -echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; } -if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - eval "$as_ac_Header=\$ac_header_preproc" -fi -ac_res=`eval echo '${'$as_ac_Header'}'` - { echo "$as_me:$LINENO: result: $ac_res" >&5 -echo "${ECHO_T}$ac_res" >&6; } - -fi -if test `eval echo '${'$as_ac_Header'}'` = yes; then +do : + ac_fn_c_check_header_mongrel "$LINENO" "dlfcn.h" "ac_cv_header_dlfcn_h" "$ac_includes_default" +if test "x$ac_cv_header_dlfcn_h" = xyes; then : cat >>confdefs.h <<_ACEOF -#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 +#define HAVE_DLFCN_H 1 _ACEOF fi @@ -5636,11 +5602,11 @@ ac_cpp='$CXXCPP $CPPFLAGS' ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_cxx_compiler_gnu -{ echo "$as_me:$LINENO: checking how to run the C++ preprocessor" >&5 -echo $ECHO_N "checking how to run the C++ preprocessor... $ECHO_C" >&6; } +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to run the C++ preprocessor" >&5 +$as_echo_n "checking how to run the C++ preprocessor... " >&6; } if test -z "$CXXCPP"; then - if test "${ac_cv_prog_CXXCPP+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 + if ${ac_cv_prog_CXXCPP+:} false; then : + $as_echo_n "(cached) " >&6 else # Double quotes because CXXCPP needs to be expanded for CXXCPP in "$CXX -E" "/lib/cpp" @@ -5654,11 +5620,7 @@ do # exists even on freestanding compilers. # On the NeXT, cc -E runs the code through the compiler's parser, # not just through cpp. "Syntax error" is here to catch this case. - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF + cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #ifdef __STDC__ # include @@ -5667,76 +5629,34 @@ cat >>conftest.$ac_ext <<_ACEOF #endif Syntax error _ACEOF -if { (ac_try="$ac_cpp conftest.$ac_ext" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } >/dev/null && { - test -z "$ac_cxx_preproc_warn_flag$ac_cxx_werror_flag" || - test ! -s conftest.err - }; then - : -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 +if ac_fn_cxx_try_cpp "$LINENO"; then : +else # Broken: fails on valid input. continue fi - -rm -f conftest.err conftest.$ac_ext +rm -f conftest.err conftest.i conftest.$ac_ext # OK, works on sane cases. Now check whether nonexistent headers # can be detected and how. - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF + cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include _ACEOF -if { (ac_try="$ac_cpp conftest.$ac_ext" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } >/dev/null && { - test -z "$ac_cxx_preproc_warn_flag$ac_cxx_werror_flag" || - test ! -s conftest.err - }; then +if ac_fn_cxx_try_cpp "$LINENO"; then : # Broken: success on invalid input. continue else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - # Passes both tests. ac_preproc_ok=: break fi - -rm -f conftest.err conftest.$ac_ext +rm -f conftest.err conftest.i conftest.$ac_ext done # Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. -rm -f conftest.err conftest.$ac_ext -if $ac_preproc_ok; then +rm -f conftest.i conftest.err conftest.$ac_ext +if $ac_preproc_ok; then : break fi @@ -5748,8 +5668,8 @@ fi else ac_cv_prog_CXXCPP=$CXXCPP fi -{ echo "$as_me:$LINENO: result: $CXXCPP" >&5 -echo "${ECHO_T}$CXXCPP" >&6; } +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $CXXCPP" >&5 +$as_echo "$CXXCPP" >&6; } ac_preproc_ok=false for ac_cxx_preproc_warn_flag in '' yes do @@ -5759,11 +5679,7 @@ do # exists even on freestanding compilers. # On the NeXT, cc -E runs the code through the compiler's parser, # not just through cpp. "Syntax error" is here to catch this case. - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF + cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #ifdef __STDC__ # include @@ -5772,83 +5688,40 @@ cat >>conftest.$ac_ext <<_ACEOF #endif Syntax error _ACEOF -if { (ac_try="$ac_cpp conftest.$ac_ext" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } >/dev/null && { - test -z "$ac_cxx_preproc_warn_flag$ac_cxx_werror_flag" || - test ! -s conftest.err - }; then - : -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 +if ac_fn_cxx_try_cpp "$LINENO"; then : +else # Broken: fails on valid input. continue fi - -rm -f conftest.err conftest.$ac_ext +rm -f conftest.err conftest.i conftest.$ac_ext # OK, works on sane cases. Now check whether nonexistent headers # can be detected and how. - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF + cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include _ACEOF -if { (ac_try="$ac_cpp conftest.$ac_ext" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } >/dev/null && { - test -z "$ac_cxx_preproc_warn_flag$ac_cxx_werror_flag" || - test ! -s conftest.err - }; then +if ac_fn_cxx_try_cpp "$LINENO"; then : # Broken: success on invalid input. continue -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - +else # Passes both tests. ac_preproc_ok=: break fi - -rm -f conftest.err conftest.$ac_ext +rm -f conftest.err conftest.i conftest.$ac_ext done # Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. -rm -f conftest.err conftest.$ac_ext -if $ac_preproc_ok; then - : +rm -f conftest.i conftest.err conftest.$ac_ext +if $ac_preproc_ok; then : + else - { { echo "$as_me:$LINENO: error: C++ preprocessor \"$CXXCPP\" fails sanity check -See \`config.log' for more details." >&5 -echo "$as_me: error: C++ preprocessor \"$CXXCPP\" fails sanity check -See \`config.log' for more details." >&2;} - { (exit 1); exit 1; }; } + { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error $? "C++ preprocessor \"$CXXCPP\" fails sanity check +See \`config.log' for more details" "$LINENO" 5; } fi ac_ext=cpp @@ -5864,14 +5737,14 @@ ac_compile='$F77 -c $FFLAGS conftest.$ac_ext >&5' ac_link='$F77 -o conftest$ac_exeext $FFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_f77_compiler_gnu if test -n "$ac_tool_prefix"; then - for ac_prog in g77 xlf f77 frt pgf77 cf77 fort77 fl32 af77 xlf90 f90 pgf90 pghpf epcf90 gfortran g95 xlf95 f95 fort ifort ifc efc pgf95 lf95 ftn + for ac_prog in g77 xlf f77 frt pgf77 cf77 fort77 fl32 af77 xlf90 f90 pgf90 pghpf epcf90 gfortran g95 xlf95 f95 fort ifort ifc efc pgfortran pgf95 lf95 ftn nagfor do # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. set dummy $ac_tool_prefix$ac_prog; ac_word=$2 -{ echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } -if test "${ac_cv_prog_F77+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_F77+:} false; then : + $as_echo_n "(cached) " >&6 else if test -n "$F77"; then ac_cv_prog_F77="$F77" # Let the user override the test. @@ -5881,25 +5754,25 @@ for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_F77="$ac_tool_prefix$ac_prog" - echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done -done + done IFS=$as_save_IFS fi fi F77=$ac_cv_prog_F77 if test -n "$F77"; then - { echo "$as_me:$LINENO: result: $F77" >&5 -echo "${ECHO_T}$F77" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $F77" >&5 +$as_echo "$F77" >&6; } else - { echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } fi @@ -5908,14 +5781,14 @@ fi fi if test -z "$F77"; then ac_ct_F77=$F77 - for ac_prog in g77 xlf f77 frt pgf77 cf77 fort77 fl32 af77 xlf90 f90 pgf90 pghpf epcf90 gfortran g95 xlf95 f95 fort ifort ifc efc pgf95 lf95 ftn + for ac_prog in g77 xlf f77 frt pgf77 cf77 fort77 fl32 af77 xlf90 f90 pgf90 pghpf epcf90 gfortran g95 xlf95 f95 fort ifort ifc efc pgfortran pgf95 lf95 ftn nagfor do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 -{ echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } -if test "${ac_cv_prog_ac_ct_F77+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_ac_ct_F77+:} false; then : + $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_F77"; then ac_cv_prog_ac_ct_F77="$ac_ct_F77" # Let the user override the test. @@ -5925,25 +5798,25 @@ for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_F77="$ac_prog" - echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done -done + done IFS=$as_save_IFS fi fi ac_ct_F77=$ac_cv_prog_ac_ct_F77 if test -n "$ac_ct_F77"; then - { echo "$as_me:$LINENO: result: $ac_ct_F77" >&5 -echo "${ECHO_T}$ac_ct_F77" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_F77" >&5 +$as_echo "$ac_ct_F77" >&6; } else - { echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } fi @@ -5955,12 +5828,8 @@ done else case $cross_compiling:$ac_tool_warned in yes:) -{ echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools -whose name does not start with the host triplet. If you think this -configuration is useful to you, please write to autoconf@gnu.org." >&5 -echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools -whose name does not start with the host triplet. If you think this -configuration is useful to you, please write to autoconf@gnu.org." >&2;} +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac F77=$ac_ct_F77 @@ -5969,50 +5838,41 @@ fi # Provide some information about the compiler. -echo "$as_me:$LINENO: checking for Fortran 77 compiler version" >&5 -ac_compiler=`set X $ac_compile; echo $2` -{ (ac_try="$ac_compiler --version >&5" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compiler --version >&5") 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } -{ (ac_try="$ac_compiler -v >&5" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compiler -v >&5") 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } -{ (ac_try="$ac_compiler -V >&5" +$as_echo "$as_me:${as_lineno-$LINENO}: checking for Fortran 77 compiler version" >&5 +set X $ac_compile +ac_compiler=$2 +for ac_option in --version -v -V -qversion; do + { { ac_try="$ac_compiler $ac_option >&5" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compiler -V >&5") 2>&5 +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_compiler $ac_option >&5") 2>conftest.err ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } + if test -s conftest.err; then + sed '10a\ +... rest of stderr output deleted ... + 10q' conftest.err >conftest.er1 + cat conftest.er1 >&5 + fi + rm -f conftest.er1 conftest.err + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } +done rm -f a.out # If we don't use `.F' as extension, the preprocessor is not run on the # input file. (Note that this only needs to work for GNU compilers.) ac_save_ext=$ac_ext ac_ext=F -{ echo "$as_me:$LINENO: checking whether we are using the GNU Fortran 77 compiler" >&5 -echo $ECHO_N "checking whether we are using the GNU Fortran 77 compiler... $ECHO_C" >&6; } -if test "${ac_cv_f77_compiler_gnu+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU Fortran 77 compiler" >&5 +$as_echo_n "checking whether we are using the GNU Fortran 77 compiler... " >&6; } +if ${ac_cv_f77_compiler_gnu+:} false; then : + $as_echo_n "(cached) " >&6 else - cat >conftest.$ac_ext <<_ACEOF + cat > conftest.$ac_ext <<_ACEOF program main #ifndef __GNUC__ choke me @@ -6020,82 +5880,42 @@ else end _ACEOF -rm -f conftest.$ac_objext -if { (ac_try="$ac_compile" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compile") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_f77_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then +if ac_fn_f77_try_compile "$LINENO"; then : ac_compiler_gnu=yes else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_compiler_gnu=no + ac_compiler_gnu=no fi - rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ac_cv_f77_compiler_gnu=$ac_compiler_gnu fi -{ echo "$as_me:$LINENO: result: $ac_cv_f77_compiler_gnu" >&5 -echo "${ECHO_T}$ac_cv_f77_compiler_gnu" >&6; } +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_f77_compiler_gnu" >&5 +$as_echo "$ac_cv_f77_compiler_gnu" >&6; } ac_ext=$ac_save_ext ac_test_FFLAGS=${FFLAGS+set} ac_save_FFLAGS=$FFLAGS FFLAGS= -{ echo "$as_me:$LINENO: checking whether $F77 accepts -g" >&5 -echo $ECHO_N "checking whether $F77 accepts -g... $ECHO_C" >&6; } -if test "${ac_cv_prog_f77_g+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $F77 accepts -g" >&5 +$as_echo_n "checking whether $F77 accepts -g... " >&6; } +if ${ac_cv_prog_f77_g+:} false; then : + $as_echo_n "(cached) " >&6 else FFLAGS=-g -cat >conftest.$ac_ext <<_ACEOF +cat > conftest.$ac_ext <<_ACEOF program main end _ACEOF -rm -f conftest.$ac_objext -if { (ac_try="$ac_compile" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compile") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_f77_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then +if ac_fn_f77_try_compile "$LINENO"; then : ac_cv_prog_f77_g=yes else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_cv_prog_f77_g=no + ac_cv_prog_f77_g=no fi - rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi -{ echo "$as_me:$LINENO: result: $ac_cv_prog_f77_g" >&5 -echo "${ECHO_T}$ac_cv_prog_f77_g" >&6; } +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_f77_g" >&5 +$as_echo "$ac_cv_prog_f77_g" >&6; } if test "$ac_test_FFLAGS" = set; then FFLAGS=$ac_save_FFLAGS elif test $ac_cv_prog_f77_g = yes; then @@ -6112,7 +5932,11 @@ else fi fi -G77=`test $ac_compiler_gnu = yes && echo yes` +if test $ac_compiler_gnu = yes; then + G77=yes +else + G77= +fi ac_ext=cpp ac_cpp='$CXXCPP $CPPFLAGS' ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' @@ -6123,10 +5947,10 @@ ac_compiler_gnu=$ac_cv_cxx_compiler_gnu # Autoconf 2.13's AC_OBJEXT and AC_EXEEXT macros only works for C compilers! # find the maximum length of command line arguments -{ echo "$as_me:$LINENO: checking the maximum length of command line arguments" >&5 -echo $ECHO_N "checking the maximum length of command line arguments... $ECHO_C" >&6; } -if test "${lt_cv_sys_max_cmd_len+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking the maximum length of command line arguments" >&5 +$as_echo_n "checking the maximum length of command line arguments... " >&6; } +if ${lt_cv_sys_max_cmd_len+:} false; then : + $as_echo_n "(cached) " >&6 else i=0 teststring="ABCD" @@ -6235,11 +6059,11 @@ else fi if test -n $lt_cv_sys_max_cmd_len ; then - { echo "$as_me:$LINENO: result: $lt_cv_sys_max_cmd_len" >&5 -echo "${ECHO_T}$lt_cv_sys_max_cmd_len" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_sys_max_cmd_len" >&5 +$as_echo "$lt_cv_sys_max_cmd_len" >&6; } else - { echo "$as_me:$LINENO: result: none" >&5 -echo "${ECHO_T}none" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: none" >&5 +$as_echo "none" >&6; } fi @@ -6247,10 +6071,10 @@ fi # Check for command to grab the raw symbol name followed by C symbol from nm. -{ echo "$as_me:$LINENO: checking command to parse $NM output from $compiler object" >&5 -echo $ECHO_N "checking command to parse $NM output from $compiler object... $ECHO_C" >&6; } -if test "${lt_cv_sys_global_symbol_pipe+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking command to parse $NM output from $compiler object" >&5 +$as_echo_n "checking command to parse $NM output from $compiler object... " >&6; } +if ${lt_cv_sys_global_symbol_pipe+:} false; then : + $as_echo_n "(cached) " >&6 else # These are sane defaults that work on at least a few old systems. @@ -6352,18 +6176,18 @@ void nm_test_func(){} int main(){nm_test_var='a';nm_test_func();return(0);} EOF - if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 (eval $ac_compile) 2>&5 ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; then + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then # Now try to grab the symbols. nlist=conftest.nm - if { (eval echo "$as_me:$LINENO: \"$NM conftest.$ac_objext \| $lt_cv_sys_global_symbol_pipe \> $nlist\"") >&5 + if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$NM conftest.$ac_objext \| $lt_cv_sys_global_symbol_pipe \> $nlist\""; } >&5 (eval $NM conftest.$ac_objext \| $lt_cv_sys_global_symbol_pipe \> $nlist) 2>&5 ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && test -s "$nlist"; then + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } && test -s "$nlist"; then # Try sorting and uniquifying the output. if sort "$nlist" | uniq > "$nlist"T; then mv -f "$nlist"T "$nlist" @@ -6414,11 +6238,11 @@ EOF lt_save_CFLAGS="$CFLAGS" LIBS="conftstm.$ac_objext" CFLAGS="$CFLAGS$lt_prog_compiler_no_builtin_flag" - if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5 (eval $ac_link) 2>&5 ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && test -s conftest${ac_exeext}; then + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } && test -s conftest${ac_exeext}; then pipe_works=yes fi LIBS="$lt_save_LIBS" @@ -6452,17 +6276,17 @@ if test -z "$lt_cv_sys_global_symbol_pipe"; then lt_cv_sys_global_symbol_to_cdecl= fi if test -z "$lt_cv_sys_global_symbol_pipe$lt_cv_sys_global_symbol_to_cdecl"; then - { echo "$as_me:$LINENO: result: failed" >&5 -echo "${ECHO_T}failed" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: failed" >&5 +$as_echo "failed" >&6; } else - { echo "$as_me:$LINENO: result: ok" >&5 -echo "${ECHO_T}ok" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: ok" >&5 +$as_echo "ok" >&6; } fi -{ echo "$as_me:$LINENO: checking for objdir" >&5 -echo $ECHO_N "checking for objdir... $ECHO_C" >&6; } -if test "${lt_cv_objdir+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for objdir" >&5 +$as_echo_n "checking for objdir... " >&6; } +if ${lt_cv_objdir+:} false; then : + $as_echo_n "(cached) " >&6 else rm -f .libs 2>/dev/null mkdir .libs 2>/dev/null @@ -6474,8 +6298,8 @@ else fi rmdir .libs 2>/dev/null fi -{ echo "$as_me:$LINENO: result: $lt_cv_objdir" >&5 -echo "${ECHO_T}$lt_cv_objdir" >&6; } +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_objdir" >&5 +$as_echo "$lt_cv_objdir" >&6; } objdir=$lt_cv_objdir @@ -6526,10 +6350,10 @@ with_gnu_ld="$lt_cv_prog_gnu_ld" if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}ar", so it can be a program name with args. set dummy ${ac_tool_prefix}ar; ac_word=$2 -{ echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } -if test "${ac_cv_prog_AR+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_AR+:} false; then : + $as_echo_n "(cached) " >&6 else if test -n "$AR"; then ac_cv_prog_AR="$AR" # Let the user override the test. @@ -6539,25 +6363,25 @@ for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_AR="${ac_tool_prefix}ar" - echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done -done + done IFS=$as_save_IFS fi fi AR=$ac_cv_prog_AR if test -n "$AR"; then - { echo "$as_me:$LINENO: result: $AR" >&5 -echo "${ECHO_T}$AR" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AR" >&5 +$as_echo "$AR" >&6; } else - { echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } fi @@ -6566,10 +6390,10 @@ if test -z "$ac_cv_prog_AR"; then ac_ct_AR=$AR # Extract the first word of "ar", so it can be a program name with args. set dummy ar; ac_word=$2 -{ echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } -if test "${ac_cv_prog_ac_ct_AR+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_ac_ct_AR+:} false; then : + $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_AR"; then ac_cv_prog_ac_ct_AR="$ac_ct_AR" # Let the user override the test. @@ -6579,25 +6403,25 @@ for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_AR="ar" - echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done -done + done IFS=$as_save_IFS fi fi ac_ct_AR=$ac_cv_prog_ac_ct_AR if test -n "$ac_ct_AR"; then - { echo "$as_me:$LINENO: result: $ac_ct_AR" >&5 -echo "${ECHO_T}$ac_ct_AR" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_AR" >&5 +$as_echo "$ac_ct_AR" >&6; } else - { echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } fi if test "x$ac_ct_AR" = x; then @@ -6605,12 +6429,8 @@ fi else case $cross_compiling:$ac_tool_warned in yes:) -{ echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools -whose name does not start with the host triplet. If you think this -configuration is useful to you, please write to autoconf@gnu.org." >&5 -echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools -whose name does not start with the host triplet. If you think this -configuration is useful to you, please write to autoconf@gnu.org." >&2;} +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac AR=$ac_ct_AR @@ -6622,10 +6442,10 @@ fi if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}ranlib", so it can be a program name with args. set dummy ${ac_tool_prefix}ranlib; ac_word=$2 -{ echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } -if test "${ac_cv_prog_RANLIB+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_RANLIB+:} false; then : + $as_echo_n "(cached) " >&6 else if test -n "$RANLIB"; then ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test. @@ -6635,25 +6455,25 @@ for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_RANLIB="${ac_tool_prefix}ranlib" - echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done -done + done IFS=$as_save_IFS fi fi RANLIB=$ac_cv_prog_RANLIB if test -n "$RANLIB"; then - { echo "$as_me:$LINENO: result: $RANLIB" >&5 -echo "${ECHO_T}$RANLIB" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $RANLIB" >&5 +$as_echo "$RANLIB" >&6; } else - { echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } fi @@ -6662,10 +6482,10 @@ if test -z "$ac_cv_prog_RANLIB"; then ac_ct_RANLIB=$RANLIB # Extract the first word of "ranlib", so it can be a program name with args. set dummy ranlib; ac_word=$2 -{ echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } -if test "${ac_cv_prog_ac_ct_RANLIB+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_ac_ct_RANLIB+:} false; then : + $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_RANLIB"; then ac_cv_prog_ac_ct_RANLIB="$ac_ct_RANLIB" # Let the user override the test. @@ -6675,25 +6495,25 @@ for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_RANLIB="ranlib" - echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done -done + done IFS=$as_save_IFS fi fi ac_ct_RANLIB=$ac_cv_prog_ac_ct_RANLIB if test -n "$ac_ct_RANLIB"; then - { echo "$as_me:$LINENO: result: $ac_ct_RANLIB" >&5 -echo "${ECHO_T}$ac_ct_RANLIB" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_RANLIB" >&5 +$as_echo "$ac_ct_RANLIB" >&6; } else - { echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } fi if test "x$ac_ct_RANLIB" = x; then @@ -6701,12 +6521,8 @@ fi else case $cross_compiling:$ac_tool_warned in yes:) -{ echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools -whose name does not start with the host triplet. If you think this -configuration is useful to you, please write to autoconf@gnu.org." >&5 -echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools -whose name does not start with the host triplet. If you think this -configuration is useful to you, please write to autoconf@gnu.org." >&2;} +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac RANLIB=$ac_ct_RANLIB @@ -6718,10 +6534,10 @@ fi if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args. set dummy ${ac_tool_prefix}strip; ac_word=$2 -{ echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } -if test "${ac_cv_prog_STRIP+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_STRIP+:} false; then : + $as_echo_n "(cached) " >&6 else if test -n "$STRIP"; then ac_cv_prog_STRIP="$STRIP" # Let the user override the test. @@ -6731,25 +6547,25 @@ for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_STRIP="${ac_tool_prefix}strip" - echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done -done + done IFS=$as_save_IFS fi fi STRIP=$ac_cv_prog_STRIP if test -n "$STRIP"; then - { echo "$as_me:$LINENO: result: $STRIP" >&5 -echo "${ECHO_T}$STRIP" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $STRIP" >&5 +$as_echo "$STRIP" >&6; } else - { echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } fi @@ -6758,10 +6574,10 @@ if test -z "$ac_cv_prog_STRIP"; then ac_ct_STRIP=$STRIP # Extract the first word of "strip", so it can be a program name with args. set dummy strip; ac_word=$2 -{ echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } -if test "${ac_cv_prog_ac_ct_STRIP+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_ac_ct_STRIP+:} false; then : + $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_STRIP"; then ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # Let the user override the test. @@ -6771,25 +6587,25 @@ for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_STRIP="strip" - echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done -done + done IFS=$as_save_IFS fi fi ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP if test -n "$ac_ct_STRIP"; then - { echo "$as_me:$LINENO: result: $ac_ct_STRIP" >&5 -echo "${ECHO_T}$ac_ct_STRIP" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_STRIP" >&5 +$as_echo "$ac_ct_STRIP" >&6; } else - { echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } fi if test "x$ac_ct_STRIP" = x; then @@ -6797,12 +6613,8 @@ fi else case $cross_compiling:$ac_tool_warned in yes:) -{ echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools -whose name does not start with the host triplet. If you think this -configuration is useful to you, please write to autoconf@gnu.org." >&5 -echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools -whose name does not start with the host triplet. If you think this -configuration is useful to you, please write to autoconf@gnu.org." >&2;} +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac STRIP=$ac_ct_STRIP @@ -6865,10 +6677,10 @@ cc_basename=`$echo "X$cc_temp" | $Xsed -e 's%.*/%%' -e "s%^$host_alias-%%"` case $deplibs_check_method in file_magic*) if test "$file_magic_cmd" = '$MAGIC_CMD'; then - { echo "$as_me:$LINENO: checking for ${ac_tool_prefix}file" >&5 -echo $ECHO_N "checking for ${ac_tool_prefix}file... $ECHO_C" >&6; } -if test "${lt_cv_path_MAGIC_CMD+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ${ac_tool_prefix}file" >&5 +$as_echo_n "checking for ${ac_tool_prefix}file... " >&6; } +if ${lt_cv_path_MAGIC_CMD+:} false; then : + $as_echo_n "(cached) " >&6 else case $MAGIC_CMD in [\\/*] | ?:[\\/]*) @@ -6918,19 +6730,19 @@ fi MAGIC_CMD="$lt_cv_path_MAGIC_CMD" if test -n "$MAGIC_CMD"; then - { echo "$as_me:$LINENO: result: $MAGIC_CMD" >&5 -echo "${ECHO_T}$MAGIC_CMD" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MAGIC_CMD" >&5 +$as_echo "$MAGIC_CMD" >&6; } else - { echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } fi if test -z "$lt_cv_path_MAGIC_CMD"; then if test -n "$ac_tool_prefix"; then - { echo "$as_me:$LINENO: checking for file" >&5 -echo $ECHO_N "checking for file... $ECHO_C" >&6; } -if test "${lt_cv_path_MAGIC_CMD+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for file" >&5 +$as_echo_n "checking for file... " >&6; } +if ${lt_cv_path_MAGIC_CMD+:} false; then : + $as_echo_n "(cached) " >&6 else case $MAGIC_CMD in [\\/*] | ?:[\\/]*) @@ -6980,11 +6792,11 @@ fi MAGIC_CMD="$lt_cv_path_MAGIC_CMD" if test -n "$MAGIC_CMD"; then - { echo "$as_me:$LINENO: result: $MAGIC_CMD" >&5 -echo "${ECHO_T}$MAGIC_CMD" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MAGIC_CMD" >&5 +$as_echo "$MAGIC_CMD" >&6; } else - { echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } fi else @@ -7002,10 +6814,10 @@ esac if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}dsymutil", so it can be a program name with args. set dummy ${ac_tool_prefix}dsymutil; ac_word=$2 -{ echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } -if test "${ac_cv_prog_DSYMUTIL+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_DSYMUTIL+:} false; then : + $as_echo_n "(cached) " >&6 else if test -n "$DSYMUTIL"; then ac_cv_prog_DSYMUTIL="$DSYMUTIL" # Let the user override the test. @@ -7015,25 +6827,25 @@ for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_DSYMUTIL="${ac_tool_prefix}dsymutil" - echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done -done + done IFS=$as_save_IFS fi fi DSYMUTIL=$ac_cv_prog_DSYMUTIL if test -n "$DSYMUTIL"; then - { echo "$as_me:$LINENO: result: $DSYMUTIL" >&5 -echo "${ECHO_T}$DSYMUTIL" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DSYMUTIL" >&5 +$as_echo "$DSYMUTIL" >&6; } else - { echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } fi @@ -7042,10 +6854,10 @@ if test -z "$ac_cv_prog_DSYMUTIL"; then ac_ct_DSYMUTIL=$DSYMUTIL # Extract the first word of "dsymutil", so it can be a program name with args. set dummy dsymutil; ac_word=$2 -{ echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } -if test "${ac_cv_prog_ac_ct_DSYMUTIL+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_ac_ct_DSYMUTIL+:} false; then : + $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_DSYMUTIL"; then ac_cv_prog_ac_ct_DSYMUTIL="$ac_ct_DSYMUTIL" # Let the user override the test. @@ -7055,25 +6867,25 @@ for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_DSYMUTIL="dsymutil" - echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done -done + done IFS=$as_save_IFS fi fi ac_ct_DSYMUTIL=$ac_cv_prog_ac_ct_DSYMUTIL if test -n "$ac_ct_DSYMUTIL"; then - { echo "$as_me:$LINENO: result: $ac_ct_DSYMUTIL" >&5 -echo "${ECHO_T}$ac_ct_DSYMUTIL" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DSYMUTIL" >&5 +$as_echo "$ac_ct_DSYMUTIL" >&6; } else - { echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } fi if test "x$ac_ct_DSYMUTIL" = x; then @@ -7081,12 +6893,8 @@ fi else case $cross_compiling:$ac_tool_warned in yes:) -{ echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools -whose name does not start with the host triplet. If you think this -configuration is useful to you, please write to autoconf@gnu.org." >&5 -echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools -whose name does not start with the host triplet. If you think this -configuration is useful to you, please write to autoconf@gnu.org." >&2;} +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac DSYMUTIL=$ac_ct_DSYMUTIL @@ -7098,10 +6906,10 @@ fi if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}nmedit", so it can be a program name with args. set dummy ${ac_tool_prefix}nmedit; ac_word=$2 -{ echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } -if test "${ac_cv_prog_NMEDIT+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_NMEDIT+:} false; then : + $as_echo_n "(cached) " >&6 else if test -n "$NMEDIT"; then ac_cv_prog_NMEDIT="$NMEDIT" # Let the user override the test. @@ -7111,25 +6919,25 @@ for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_NMEDIT="${ac_tool_prefix}nmedit" - echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done -done + done IFS=$as_save_IFS fi fi NMEDIT=$ac_cv_prog_NMEDIT if test -n "$NMEDIT"; then - { echo "$as_me:$LINENO: result: $NMEDIT" >&5 -echo "${ECHO_T}$NMEDIT" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $NMEDIT" >&5 +$as_echo "$NMEDIT" >&6; } else - { echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } fi @@ -7138,10 +6946,10 @@ if test -z "$ac_cv_prog_NMEDIT"; then ac_ct_NMEDIT=$NMEDIT # Extract the first word of "nmedit", so it can be a program name with args. set dummy nmedit; ac_word=$2 -{ echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } -if test "${ac_cv_prog_ac_ct_NMEDIT+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_ac_ct_NMEDIT+:} false; then : + $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_NMEDIT"; then ac_cv_prog_ac_ct_NMEDIT="$ac_ct_NMEDIT" # Let the user override the test. @@ -7151,25 +6959,25 @@ for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_NMEDIT="nmedit" - echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done -done + done IFS=$as_save_IFS fi fi ac_ct_NMEDIT=$ac_cv_prog_ac_ct_NMEDIT if test -n "$ac_ct_NMEDIT"; then - { echo "$as_me:$LINENO: result: $ac_ct_NMEDIT" >&5 -echo "${ECHO_T}$ac_ct_NMEDIT" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_NMEDIT" >&5 +$as_echo "$ac_ct_NMEDIT" >&6; } else - { echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } fi if test "x$ac_ct_NMEDIT" = x; then @@ -7177,12 +6985,8 @@ fi else case $cross_compiling:$ac_tool_warned in yes:) -{ echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools -whose name does not start with the host triplet. If you think this -configuration is useful to you, please write to autoconf@gnu.org." >&5 -echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools -whose name does not start with the host triplet. If you think this -configuration is useful to you, please write to autoconf@gnu.org." >&2;} +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac NMEDIT=$ac_ct_NMEDIT @@ -7192,10 +6996,10 @@ else fi - { echo "$as_me:$LINENO: checking for -single_module linker flag" >&5 -echo $ECHO_N "checking for -single_module linker flag... $ECHO_C" >&6; } -if test "${lt_cv_apple_cc_single_mod+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for -single_module linker flag" >&5 +$as_echo_n "checking for -single_module linker flag... " >&6; } +if ${lt_cv_apple_cc_single_mod+:} false; then : + $as_echo_n "(cached) " >&6 else lt_cv_apple_cc_single_mod=no if test -z "${LT_MULTI_MODULE}"; then @@ -7213,22 +7017,18 @@ else rm conftest.c fi fi -{ echo "$as_me:$LINENO: result: $lt_cv_apple_cc_single_mod" >&5 -echo "${ECHO_T}$lt_cv_apple_cc_single_mod" >&6; } - { echo "$as_me:$LINENO: checking for -exported_symbols_list linker flag" >&5 -echo $ECHO_N "checking for -exported_symbols_list linker flag... $ECHO_C" >&6; } -if test "${lt_cv_ld_exported_symbols_list+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_apple_cc_single_mod" >&5 +$as_echo "$lt_cv_apple_cc_single_mod" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for -exported_symbols_list linker flag" >&5 +$as_echo_n "checking for -exported_symbols_list linker flag... " >&6; } +if ${lt_cv_ld_exported_symbols_list+:} false; then : + $as_echo_n "(cached) " >&6 else lt_cv_ld_exported_symbols_list=no save_LDFLAGS=$LDFLAGS echo "_main" > conftest.sym LDFLAGS="$LDFLAGS -Wl,-exported_symbols_list,conftest.sym" - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF + cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int @@ -7239,39 +7039,18 @@ main () return 0; } _ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_link") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_cxx_werror_flag" || - test ! -s conftest.err - } && test -s conftest$ac_exeext && - $as_test_x conftest$ac_exeext; then +if ac_fn_cxx_try_link "$LINENO"; then : lt_cv_ld_exported_symbols_list=yes else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - lt_cv_ld_exported_symbols_list=no + lt_cv_ld_exported_symbols_list=no fi - -rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ - conftest$ac_exeext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext LDFLAGS="$save_LDFLAGS" fi -{ echo "$as_me:$LINENO: result: $lt_cv_ld_exported_symbols_list" >&5 -echo "${ECHO_T}$lt_cv_ld_exported_symbols_list" >&6; } +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ld_exported_symbols_list" >&5 +$as_echo "$lt_cv_ld_exported_symbols_list" >&6; } case $host_os in rhapsody* | darwin1.[0123]) _lt_dar_allow_undefined='${wl}-undefined ${wl}suppress' ;; @@ -7312,7 +7091,7 @@ enable_dlopen=no enable_win32_dll=no # Check whether --enable-libtool-lock was given. -if test "${enable_libtool_lock+set}" = set; then +if test "${enable_libtool_lock+set}" = set; then : enableval=$enable_libtool_lock; fi @@ -7320,7 +7099,7 @@ test "x$enable_libtool_lock" != xno && enable_libtool_lock=yes # Check whether --with-pic was given. -if test "${with_pic+set}" = set; then +if test "${with_pic+set}" = set; then : withval=$with_pic; pic_mode="$withval" else pic_mode=default @@ -7383,10 +7162,10 @@ if test "$GCC" = yes; then lt_prog_compiler_no_builtin_flag=' -fno-builtin' -{ echo "$as_me:$LINENO: checking if $compiler supports -fno-rtti -fno-exceptions" >&5 -echo $ECHO_N "checking if $compiler supports -fno-rtti -fno-exceptions... $ECHO_C" >&6; } -if test "${lt_cv_prog_compiler_rtti_exceptions+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -fno-rtti -fno-exceptions" >&5 +$as_echo_n "checking if $compiler supports -fno-rtti -fno-exceptions... " >&6; } +if ${lt_cv_prog_compiler_rtti_exceptions+:} false; then : + $as_echo_n "(cached) " >&6 else lt_cv_prog_compiler_rtti_exceptions=no ac_outfile=conftest.$ac_objext @@ -7401,11 +7180,11 @@ else -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` - (eval echo "\"\$as_me:7404: $lt_compile\"" >&5) + (eval echo "\"\$as_me:7183: $lt_compile\"" >&5) (eval "$lt_compile" 2>conftest.err) ac_status=$? cat conftest.err >&5 - echo "$as_me:7408: \$? = $ac_status" >&5 + echo "$as_me:7187: \$? = $ac_status" >&5 if (exit $ac_status) && test -s "$ac_outfile"; then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings other than the usual output. @@ -7418,8 +7197,8 @@ else $rm conftest* fi -{ echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_rtti_exceptions" >&5 -echo "${ECHO_T}$lt_cv_prog_compiler_rtti_exceptions" >&6; } +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_rtti_exceptions" >&5 +$as_echo "$lt_cv_prog_compiler_rtti_exceptions" >&6; } if test x"$lt_cv_prog_compiler_rtti_exceptions" = xyes; then lt_prog_compiler_no_builtin_flag="$lt_prog_compiler_no_builtin_flag -fno-rtti -fno-exceptions" @@ -7433,8 +7212,8 @@ lt_prog_compiler_wl= lt_prog_compiler_pic= lt_prog_compiler_static= -{ echo "$as_me:$LINENO: checking for $compiler option to produce PIC" >&5 -echo $ECHO_N "checking for $compiler option to produce PIC... $ECHO_C" >&6; } +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $compiler option to produce PIC" >&5 +$as_echo_n "checking for $compiler option to produce PIC... " >&6; } if test "$GCC" = yes; then lt_prog_compiler_wl='-Wl,' @@ -7665,18 +7444,18 @@ echo $ECHO_N "checking for $compiler option to produce PIC... $ECHO_C" >&6; } esac fi -{ echo "$as_me:$LINENO: result: $lt_prog_compiler_pic" >&5 -echo "${ECHO_T}$lt_prog_compiler_pic" >&6; } +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_prog_compiler_pic" >&5 +$as_echo "$lt_prog_compiler_pic" >&6; } # # Check to make sure the PIC flag actually works. # if test -n "$lt_prog_compiler_pic"; then -{ echo "$as_me:$LINENO: checking if $compiler PIC flag $lt_prog_compiler_pic works" >&5 -echo $ECHO_N "checking if $compiler PIC flag $lt_prog_compiler_pic works... $ECHO_C" >&6; } -if test "${lt_cv_prog_compiler_pic_works+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler PIC flag $lt_prog_compiler_pic works" >&5 +$as_echo_n "checking if $compiler PIC flag $lt_prog_compiler_pic works... " >&6; } +if ${lt_cv_prog_compiler_pic_works+:} false; then : + $as_echo_n "(cached) " >&6 else lt_cv_prog_compiler_pic_works=no ac_outfile=conftest.$ac_objext @@ -7691,11 +7470,11 @@ else -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` - (eval echo "\"\$as_me:7694: $lt_compile\"" >&5) + (eval echo "\"\$as_me:7473: $lt_compile\"" >&5) (eval "$lt_compile" 2>conftest.err) ac_status=$? cat conftest.err >&5 - echo "$as_me:7698: \$? = $ac_status" >&5 + echo "$as_me:7477: \$? = $ac_status" >&5 if (exit $ac_status) && test -s "$ac_outfile"; then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings other than the usual output. @@ -7708,8 +7487,8 @@ else $rm conftest* fi -{ echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_pic_works" >&5 -echo "${ECHO_T}$lt_cv_prog_compiler_pic_works" >&6; } +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic_works" >&5 +$as_echo "$lt_cv_prog_compiler_pic_works" >&6; } if test x"$lt_cv_prog_compiler_pic_works" = xyes; then case $lt_prog_compiler_pic in @@ -7736,10 +7515,10 @@ esac # Check to make sure the static flag actually works. # wl=$lt_prog_compiler_wl eval lt_tmp_static_flag=\"$lt_prog_compiler_static\" -{ echo "$as_me:$LINENO: checking if $compiler static flag $lt_tmp_static_flag works" >&5 -echo $ECHO_N "checking if $compiler static flag $lt_tmp_static_flag works... $ECHO_C" >&6; } -if test "${lt_cv_prog_compiler_static_works+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler static flag $lt_tmp_static_flag works" >&5 +$as_echo_n "checking if $compiler static flag $lt_tmp_static_flag works... " >&6; } +if ${lt_cv_prog_compiler_static_works+:} false; then : + $as_echo_n "(cached) " >&6 else lt_cv_prog_compiler_static_works=no save_LDFLAGS="$LDFLAGS" @@ -7764,8 +7543,8 @@ else LDFLAGS="$save_LDFLAGS" fi -{ echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_static_works" >&5 -echo "${ECHO_T}$lt_cv_prog_compiler_static_works" >&6; } +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_static_works" >&5 +$as_echo "$lt_cv_prog_compiler_static_works" >&6; } if test x"$lt_cv_prog_compiler_static_works" = xyes; then : @@ -7774,10 +7553,10 @@ else fi -{ echo "$as_me:$LINENO: checking if $compiler supports -c -o file.$ac_objext" >&5 -echo $ECHO_N "checking if $compiler supports -c -o file.$ac_objext... $ECHO_C" >&6; } -if test "${lt_cv_prog_compiler_c_o+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5 +$as_echo_n "checking if $compiler supports -c -o file.$ac_objext... " >&6; } +if ${lt_cv_prog_compiler_c_o+:} false; then : + $as_echo_n "(cached) " >&6 else lt_cv_prog_compiler_c_o=no $rm -r conftest 2>/dev/null @@ -7795,11 +7574,11 @@ else -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` - (eval echo "\"\$as_me:7798: $lt_compile\"" >&5) + (eval echo "\"\$as_me:7577: $lt_compile\"" >&5) (eval "$lt_compile" 2>out/conftest.err) ac_status=$? cat out/conftest.err >&5 - echo "$as_me:7802: \$? = $ac_status" >&5 + echo "$as_me:7581: \$? = $ac_status" >&5 if (exit $ac_status) && test -s out/conftest2.$ac_objext then # The compiler can only warn and ignore the option if not recognized @@ -7821,34 +7600,34 @@ else $rm conftest* fi -{ echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_c_o" >&5 -echo "${ECHO_T}$lt_cv_prog_compiler_c_o" >&6; } +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o" >&5 +$as_echo "$lt_cv_prog_compiler_c_o" >&6; } hard_links="nottested" if test "$lt_cv_prog_compiler_c_o" = no && test "$need_locks" != no; then # do not overwrite the value of need_locks provided by the user - { echo "$as_me:$LINENO: checking if we can lock with hard links" >&5 -echo $ECHO_N "checking if we can lock with hard links... $ECHO_C" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if we can lock with hard links" >&5 +$as_echo_n "checking if we can lock with hard links... " >&6; } hard_links=yes $rm conftest* ln conftest.a conftest.b 2>/dev/null && hard_links=no touch conftest.a ln conftest.a conftest.b 2>&5 || hard_links=no ln conftest.a conftest.b 2>/dev/null && hard_links=no - { echo "$as_me:$LINENO: result: $hard_links" >&5 -echo "${ECHO_T}$hard_links" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $hard_links" >&5 +$as_echo "$hard_links" >&6; } if test "$hard_links" = no; then - { echo "$as_me:$LINENO: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&5 -echo "$as_me: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&2;} + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&5 +$as_echo "$as_me: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&2;} need_locks=warn fi else need_locks=no fi -{ echo "$as_me:$LINENO: checking whether the $compiler linker ($LD) supports shared libraries" >&5 -echo $ECHO_N "checking whether the $compiler linker ($LD) supports shared libraries... $ECHO_C" >&6; } +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the $compiler linker ($LD) supports shared libraries" >&5 +$as_echo_n "checking whether the $compiler linker ($LD) supports shared libraries... " >&6; } runpath_var= allow_undefined_flag= @@ -8258,11 +8037,7 @@ _LT_EOF # -berok will link without error, but may produce a broken library. allow_undefined_flag='-berok' # Determine the default libpath from the value encoded in an empty executable. - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF + cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int @@ -8273,24 +8048,7 @@ main () return 0; } _ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_link") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest$ac_exeext && - $as_test_x conftest$ac_exeext; then +if ac_fn_c_try_link "$LINENO"; then : lt_aix_libpath_sed=' /Import File Strings/,/^$/ { @@ -8304,15 +8062,9 @@ aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpat if test -z "$aix_libpath"; then aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` fi -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - fi - -rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ - conftest$ac_exeext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:'"$aix_libpath" @@ -8324,11 +8076,7 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi archive_expsym_cmds="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$exp_sym_flag:\$export_symbols" else # Determine the default libpath from the value encoded in an empty executable. - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF + cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int @@ -8339,24 +8087,7 @@ main () return 0; } _ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_link") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest$ac_exeext && - $as_test_x conftest$ac_exeext; then +if ac_fn_c_try_link "$LINENO"; then : lt_aix_libpath_sed=' /Import File Strings/,/^$/ { @@ -8370,15 +8101,9 @@ aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpat if test -z "$aix_libpath"; then aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` fi -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - fi - -rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ - conftest$ac_exeext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:'"$aix_libpath" @@ -8828,8 +8553,8 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi esac fi -{ echo "$as_me:$LINENO: result: $ld_shlibs" >&5 -echo "${ECHO_T}$ld_shlibs" >&6; } +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ld_shlibs" >&5 +$as_echo "$ld_shlibs" >&6; } test "$ld_shlibs" = no && can_build_shared=no # @@ -8849,16 +8574,16 @@ x|xyes) # Test whether the compiler implicitly links with -lc since on some # systems, -lgcc has to come before -lc. If gcc already passes -lc # to ld, don't add -lc before -lgcc. - { echo "$as_me:$LINENO: checking whether -lc should be explicitly linked in" >&5 -echo $ECHO_N "checking whether -lc should be explicitly linked in... $ECHO_C" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether -lc should be explicitly linked in" >&5 +$as_echo_n "checking whether -lc should be explicitly linked in... " >&6; } $rm conftest* echo "$lt_simple_compile_test_code" > conftest.$ac_ext - if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 (eval $ac_compile) 2>&5 ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } 2>conftest.err; then + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } 2>conftest.err; then soname=conftest lib=conftest libobjs=conftest.$ac_objext @@ -8872,11 +8597,11 @@ echo $ECHO_N "checking whether -lc should be explicitly linked in... $ECHO_C" >& libname=conftest lt_save_allow_undefined_flag=$allow_undefined_flag allow_undefined_flag= - if { (eval echo "$as_me:$LINENO: \"$archive_cmds 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1\"") >&5 + if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$archive_cmds 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1\""; } >&5 (eval $archive_cmds 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1) 2>&5 ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } then archive_cmds_need_lc=no else @@ -8887,16 +8612,16 @@ echo $ECHO_N "checking whether -lc should be explicitly linked in... $ECHO_C" >& cat conftest.err 1>&5 fi $rm conftest* - { echo "$as_me:$LINENO: result: $archive_cmds_need_lc" >&5 -echo "${ECHO_T}$archive_cmds_need_lc" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $archive_cmds_need_lc" >&5 +$as_echo "$archive_cmds_need_lc" >&6; } ;; esac fi ;; esac -{ echo "$as_me:$LINENO: checking dynamic linker characteristics" >&5 -echo $ECHO_N "checking dynamic linker characteristics... $ECHO_C" >&6; } +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking dynamic linker characteristics" >&5 +$as_echo_n "checking dynamic linker characteristics... " >&6; } library_names_spec= libname_spec='lib$name' soname_spec= @@ -9509,19 +9234,19 @@ uts4*) dynamic_linker=no ;; esac -{ echo "$as_me:$LINENO: result: $dynamic_linker" >&5 -echo "${ECHO_T}$dynamic_linker" >&6; } +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $dynamic_linker" >&5 +$as_echo "$dynamic_linker" >&6; } test "$dynamic_linker" = no && can_build_shared=no -if test "${lt_cv_sys_lib_search_path_spec+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 +if ${lt_cv_sys_lib_search_path_spec+:} false; then : + $as_echo_n "(cached) " >&6 else lt_cv_sys_lib_search_path_spec="$sys_lib_search_path_spec" fi sys_lib_search_path_spec="$lt_cv_sys_lib_search_path_spec" -if test "${lt_cv_sys_lib_dlsearch_path_spec+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 +if ${lt_cv_sys_lib_dlsearch_path_spec+:} false; then : + $as_echo_n "(cached) " >&6 else lt_cv_sys_lib_dlsearch_path_spec="$sys_lib_dlsearch_path_spec" fi @@ -9533,8 +9258,8 @@ if test "$GCC" = yes; then variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH" fi -{ echo "$as_me:$LINENO: checking how to hardcode library paths into programs" >&5 -echo $ECHO_N "checking how to hardcode library paths into programs... $ECHO_C" >&6; } +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to hardcode library paths into programs" >&5 +$as_echo_n "checking how to hardcode library paths into programs... " >&6; } hardcode_action= if test -n "$hardcode_libdir_flag_spec" || \ test -n "$runpath_var" || \ @@ -9558,8 +9283,8 @@ else # directories. hardcode_action=unsupported fi -{ echo "$as_me:$LINENO: result: $hardcode_action" >&5 -echo "${ECHO_T}$hardcode_action" >&6; } +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $hardcode_action" >&5 +$as_echo "$hardcode_action" >&6; } if test "$hardcode_action" = relink; then # Fast installation is not supported @@ -9572,13 +9297,13 @@ fi striplib= old_striplib= -{ echo "$as_me:$LINENO: checking whether stripping libraries is possible" >&5 -echo $ECHO_N "checking whether stripping libraries is possible... $ECHO_C" >&6; } +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether stripping libraries is possible" >&5 +$as_echo_n "checking whether stripping libraries is possible... " >&6; } if test -n "$STRIP" && $STRIP -V 2>&1 | grep "GNU strip" >/dev/null; then test -z "$old_striplib" && old_striplib="$STRIP --strip-debug" test -z "$striplib" && striplib="$STRIP --strip-unneeded" - { echo "$as_me:$LINENO: result: yes" >&5 -echo "${ECHO_T}yes" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } else # FIXME - insert some real tests, host_os isn't really good enough case $host_os in @@ -9586,16 +9311,16 @@ else if test -n "$STRIP" ; then striplib="$STRIP -x" old_striplib="$STRIP -S" - { echo "$as_me:$LINENO: result: yes" >&5 -echo "${ECHO_T}yes" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } else - { echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } fi ;; *) - { echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } ;; esac fi @@ -9627,18 +9352,14 @@ else darwin*) # if libdl is installed we need to link against it - { echo "$as_me:$LINENO: checking for dlopen in -ldl" >&5 -echo $ECHO_N "checking for dlopen in -ldl... $ECHO_C" >&6; } -if test "${ac_cv_lib_dl_dlopen+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dlopen in -ldl" >&5 +$as_echo_n "checking for dlopen in -ldl... " >&6; } +if ${ac_cv_lib_dl_dlopen+:} false; then : + $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-ldl $LIBS" -cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF +cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. @@ -9656,39 +9377,18 @@ return dlopen (); return 0; } _ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_link") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest$ac_exeext && - $as_test_x conftest$ac_exeext; then +if ac_fn_c_try_link "$LINENO"; then : ac_cv_lib_dl_dlopen=yes else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_cv_lib_dl_dlopen=no + ac_cv_lib_dl_dlopen=no fi - -rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ - conftest$ac_exeext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi -{ echo "$as_me:$LINENO: result: $ac_cv_lib_dl_dlopen" >&5 -echo "${ECHO_T}$ac_cv_lib_dl_dlopen" >&6; } -if test $ac_cv_lib_dl_dlopen = yes; then +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dl_dlopen" >&5 +$as_echo "$ac_cv_lib_dl_dlopen" >&6; } +if test "x$ac_cv_lib_dl_dlopen" = xyes; then : lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl" else @@ -9701,102 +9401,18 @@ fi ;; *) - { echo "$as_me:$LINENO: checking for shl_load" >&5 -echo $ECHO_N "checking for shl_load... $ECHO_C" >&6; } -if test "${ac_cv_func_shl_load+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -/* Define shl_load to an innocuous variant, in case declares shl_load. - For example, HP-UX 11i declares gettimeofday. */ -#define shl_load innocuous_shl_load - -/* System header to define __stub macros and hopefully few prototypes, - which can conflict with char shl_load (); below. - Prefer to if __STDC__ is defined, since - exists even on freestanding compilers. */ - -#ifdef __STDC__ -# include -#else -# include -#endif - -#undef shl_load - -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif -char shl_load (); -/* The GNU C library defines this for functions which it implements - to always fail with ENOSYS. Some functions are actually named - something starting with __ and the normal name is an alias. */ -#if defined __stub_shl_load || defined __stub___shl_load -choke me -#endif - -int -main () -{ -return shl_load (); - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_link") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest$ac_exeext && - $as_test_x conftest$ac_exeext; then - ac_cv_func_shl_load=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_cv_func_shl_load=no -fi - -rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ - conftest$ac_exeext conftest.$ac_ext -fi -{ echo "$as_me:$LINENO: result: $ac_cv_func_shl_load" >&5 -echo "${ECHO_T}$ac_cv_func_shl_load" >&6; } -if test $ac_cv_func_shl_load = yes; then + ac_fn_c_check_func "$LINENO" "shl_load" "ac_cv_func_shl_load" +if test "x$ac_cv_func_shl_load" = xyes; then : lt_cv_dlopen="shl_load" else - { echo "$as_me:$LINENO: checking for shl_load in -ldld" >&5 -echo $ECHO_N "checking for shl_load in -ldld... $ECHO_C" >&6; } -if test "${ac_cv_lib_dld_shl_load+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for shl_load in -ldld" >&5 +$as_echo_n "checking for shl_load in -ldld... " >&6; } +if ${ac_cv_lib_dld_shl_load+:} false; then : + $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-ldld $LIBS" -cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF +cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. @@ -9814,137 +9430,32 @@ return shl_load (); return 0; } _ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_link") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest$ac_exeext && - $as_test_x conftest$ac_exeext; then +if ac_fn_c_try_link "$LINENO"; then : ac_cv_lib_dld_shl_load=yes else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_cv_lib_dld_shl_load=no + ac_cv_lib_dld_shl_load=no fi - -rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ - conftest$ac_exeext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi -{ echo "$as_me:$LINENO: result: $ac_cv_lib_dld_shl_load" >&5 -echo "${ECHO_T}$ac_cv_lib_dld_shl_load" >&6; } -if test $ac_cv_lib_dld_shl_load = yes; then +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dld_shl_load" >&5 +$as_echo "$ac_cv_lib_dld_shl_load" >&6; } +if test "x$ac_cv_lib_dld_shl_load" = xyes; then : lt_cv_dlopen="shl_load" lt_cv_dlopen_libs="-ldld" else - { echo "$as_me:$LINENO: checking for dlopen" >&5 -echo $ECHO_N "checking for dlopen... $ECHO_C" >&6; } -if test "${ac_cv_func_dlopen+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -/* Define dlopen to an innocuous variant, in case declares dlopen. - For example, HP-UX 11i declares gettimeofday. */ -#define dlopen innocuous_dlopen - -/* System header to define __stub macros and hopefully few prototypes, - which can conflict with char dlopen (); below. - Prefer to if __STDC__ is defined, since - exists even on freestanding compilers. */ - -#ifdef __STDC__ -# include -#else -# include -#endif - -#undef dlopen - -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif -char dlopen (); -/* The GNU C library defines this for functions which it implements - to always fail with ENOSYS. Some functions are actually named - something starting with __ and the normal name is an alias. */ -#if defined __stub_dlopen || defined __stub___dlopen -choke me -#endif - -int -main () -{ -return dlopen (); - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_link") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest$ac_exeext && - $as_test_x conftest$ac_exeext; then - ac_cv_func_dlopen=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_cv_func_dlopen=no -fi - -rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ - conftest$ac_exeext conftest.$ac_ext -fi -{ echo "$as_me:$LINENO: result: $ac_cv_func_dlopen" >&5 -echo "${ECHO_T}$ac_cv_func_dlopen" >&6; } -if test $ac_cv_func_dlopen = yes; then + ac_fn_c_check_func "$LINENO" "dlopen" "ac_cv_func_dlopen" +if test "x$ac_cv_func_dlopen" = xyes; then : lt_cv_dlopen="dlopen" else - { echo "$as_me:$LINENO: checking for dlopen in -ldl" >&5 -echo $ECHO_N "checking for dlopen in -ldl... $ECHO_C" >&6; } -if test "${ac_cv_lib_dl_dlopen+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dlopen in -ldl" >&5 +$as_echo_n "checking for dlopen in -ldl... " >&6; } +if ${ac_cv_lib_dl_dlopen+:} false; then : + $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-ldl $LIBS" -cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF +cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. @@ -9962,53 +9473,28 @@ return dlopen (); return 0; } _ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_link") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest$ac_exeext && - $as_test_x conftest$ac_exeext; then +if ac_fn_c_try_link "$LINENO"; then : ac_cv_lib_dl_dlopen=yes else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_cv_lib_dl_dlopen=no + ac_cv_lib_dl_dlopen=no fi - -rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ - conftest$ac_exeext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi -{ echo "$as_me:$LINENO: result: $ac_cv_lib_dl_dlopen" >&5 -echo "${ECHO_T}$ac_cv_lib_dl_dlopen" >&6; } -if test $ac_cv_lib_dl_dlopen = yes; then +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dl_dlopen" >&5 +$as_echo "$ac_cv_lib_dl_dlopen" >&6; } +if test "x$ac_cv_lib_dl_dlopen" = xyes; then : lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl" else - { echo "$as_me:$LINENO: checking for dlopen in -lsvld" >&5 -echo $ECHO_N "checking for dlopen in -lsvld... $ECHO_C" >&6; } -if test "${ac_cv_lib_svld_dlopen+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dlopen in -lsvld" >&5 +$as_echo_n "checking for dlopen in -lsvld... " >&6; } +if ${ac_cv_lib_svld_dlopen+:} false; then : + $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lsvld $LIBS" -cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF +cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. @@ -10026,53 +9512,28 @@ return dlopen (); return 0; } _ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_link") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest$ac_exeext && - $as_test_x conftest$ac_exeext; then +if ac_fn_c_try_link "$LINENO"; then : ac_cv_lib_svld_dlopen=yes else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_cv_lib_svld_dlopen=no + ac_cv_lib_svld_dlopen=no fi - -rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ - conftest$ac_exeext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi -{ echo "$as_me:$LINENO: result: $ac_cv_lib_svld_dlopen" >&5 -echo "${ECHO_T}$ac_cv_lib_svld_dlopen" >&6; } -if test $ac_cv_lib_svld_dlopen = yes; then +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_svld_dlopen" >&5 +$as_echo "$ac_cv_lib_svld_dlopen" >&6; } +if test "x$ac_cv_lib_svld_dlopen" = xyes; then : lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-lsvld" else - { echo "$as_me:$LINENO: checking for dld_link in -ldld" >&5 -echo $ECHO_N "checking for dld_link in -ldld... $ECHO_C" >&6; } -if test "${ac_cv_lib_dld_dld_link+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dld_link in -ldld" >&5 +$as_echo_n "checking for dld_link in -ldld... " >&6; } +if ${ac_cv_lib_dld_dld_link+:} false; then : + $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-ldld $LIBS" -cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF +cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. @@ -10090,39 +9551,18 @@ return dld_link (); return 0; } _ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_link") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest$ac_exeext && - $as_test_x conftest$ac_exeext; then +if ac_fn_c_try_link "$LINENO"; then : ac_cv_lib_dld_dld_link=yes else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_cv_lib_dld_dld_link=no + ac_cv_lib_dld_dld_link=no fi - -rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ - conftest$ac_exeext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi -{ echo "$as_me:$LINENO: result: $ac_cv_lib_dld_dld_link" >&5 -echo "${ECHO_T}$ac_cv_lib_dld_dld_link" >&6; } -if test $ac_cv_lib_dld_dld_link = yes; then +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dld_dld_link" >&5 +$as_echo "$ac_cv_lib_dld_dld_link" >&6; } +if test "x$ac_cv_lib_dld_dld_link" = xyes; then : lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-ldld" fi @@ -10161,10 +9601,10 @@ fi save_LIBS="$LIBS" LIBS="$lt_cv_dlopen_libs $LIBS" - { echo "$as_me:$LINENO: checking whether a program can dlopen itself" >&5 -echo $ECHO_N "checking whether a program can dlopen itself... $ECHO_C" >&6; } -if test "${lt_cv_dlopen_self+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether a program can dlopen itself" >&5 +$as_echo_n "checking whether a program can dlopen itself... " >&6; } +if ${lt_cv_dlopen_self+:} false; then : + $as_echo_n "(cached) " >&6 else if test "$cross_compiling" = yes; then : lt_cv_dlopen_self=cross @@ -10172,7 +9612,7 @@ else lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 lt_status=$lt_dlunknown cat > conftest.$ac_ext <&5 + if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5 (eval $ac_link) 2>&5 ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && test -s conftest${ac_exeext} 2>/dev/null; then + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } && test -s conftest${ac_exeext} 2>/dev/null; then (./conftest; exit; ) >&5 2>/dev/null lt_status=$? case x$lt_status in @@ -10256,15 +9696,15 @@ rm -fr conftest* fi -{ echo "$as_me:$LINENO: result: $lt_cv_dlopen_self" >&5 -echo "${ECHO_T}$lt_cv_dlopen_self" >&6; } +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_dlopen_self" >&5 +$as_echo "$lt_cv_dlopen_self" >&6; } if test "x$lt_cv_dlopen_self" = xyes; then wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $lt_prog_compiler_static\" - { echo "$as_me:$LINENO: checking whether a statically linked program can dlopen itself" >&5 -echo $ECHO_N "checking whether a statically linked program can dlopen itself... $ECHO_C" >&6; } -if test "${lt_cv_dlopen_self_static+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether a statically linked program can dlopen itself" >&5 +$as_echo_n "checking whether a statically linked program can dlopen itself... " >&6; } +if ${lt_cv_dlopen_self_static+:} false; then : + $as_echo_n "(cached) " >&6 else if test "$cross_compiling" = yes; then : lt_cv_dlopen_self_static=cross @@ -10272,7 +9712,7 @@ else lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 lt_status=$lt_dlunknown cat > conftest.$ac_ext <&5 + if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5 (eval $ac_link) 2>&5 ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && test -s conftest${ac_exeext} 2>/dev/null; then + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } && test -s conftest${ac_exeext} 2>/dev/null; then (./conftest; exit; ) >&5 2>/dev/null lt_status=$? case x$lt_status in @@ -10356,8 +9796,8 @@ rm -fr conftest* fi -{ echo "$as_me:$LINENO: result: $lt_cv_dlopen_self_static" >&5 -echo "${ECHO_T}$lt_cv_dlopen_self_static" >&6; } +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_dlopen_self_static" >&5 +$as_echo "$lt_cv_dlopen_self_static" >&6; } fi CPPFLAGS="$save_CPPFLAGS" @@ -10379,13 +9819,13 @@ fi # Report which library types will actually be built -{ echo "$as_me:$LINENO: checking if libtool supports shared libraries" >&5 -echo $ECHO_N "checking if libtool supports shared libraries... $ECHO_C" >&6; } -{ echo "$as_me:$LINENO: result: $can_build_shared" >&5 -echo "${ECHO_T}$can_build_shared" >&6; } +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if libtool supports shared libraries" >&5 +$as_echo_n "checking if libtool supports shared libraries... " >&6; } +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $can_build_shared" >&5 +$as_echo "$can_build_shared" >&6; } -{ echo "$as_me:$LINENO: checking whether to build shared libraries" >&5 -echo $ECHO_N "checking whether to build shared libraries... $ECHO_C" >&6; } +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to build shared libraries" >&5 +$as_echo_n "checking whether to build shared libraries... " >&6; } test "$can_build_shared" = "no" && enable_shared=no # On AIX, shared libraries and static libraries use the same namespace, and @@ -10405,15 +9845,15 @@ aix[4-9]*) fi ;; esac -{ echo "$as_me:$LINENO: result: $enable_shared" >&5 -echo "${ECHO_T}$enable_shared" >&6; } +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_shared" >&5 +$as_echo "$enable_shared" >&6; } -{ echo "$as_me:$LINENO: checking whether to build static libraries" >&5 -echo $ECHO_N "checking whether to build static libraries... $ECHO_C" >&6; } +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to build static libraries" >&5 +$as_echo_n "checking whether to build static libraries... " >&6; } # Make sure either enable_shared or enable_static is yes. test "$enable_shared" = yes || enable_static=yes -{ echo "$as_me:$LINENO: result: $enable_static" >&5 -echo "${ECHO_T}$enable_static" >&6; } +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_static" >&5 +$as_echo "$enable_static" >&6; } # The else clause should only fire when bootstrapping the # libtool distribution, otherwise you forgot to ship ltmain.sh @@ -10506,8 +9946,8 @@ if test -f "$ltmain"; then cfgfile="${ofile}T" trap "$rm \"$cfgfile\"; exit 1" 1 2 15 $rm -f "$cfgfile" - { echo "$as_me:$LINENO: creating $ofile" >&5 -echo "$as_me: creating $ofile" >&6;} + { $as_echo "$as_me:${as_lineno-$LINENO}: creating $ofile" >&5 +$as_echo "$as_me: creating $ofile" >&6;} cat <<__EOF__ >> "$cfgfile" #! $SHELL @@ -10912,25 +10352,25 @@ CC="$lt_save_CC" # Check whether --with-tags was given. -if test "${with_tags+set}" = set; then +if test "${with_tags+set}" = set; then : withval=$with_tags; tagnames="$withval" fi if test -f "$ltmain" && test -n "$tagnames"; then if test ! -f "${ofile}"; then - { echo "$as_me:$LINENO: WARNING: output file \`$ofile' does not exist" >&5 -echo "$as_me: WARNING: output file \`$ofile' does not exist" >&2;} + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: output file \`$ofile' does not exist" >&5 +$as_echo "$as_me: WARNING: output file \`$ofile' does not exist" >&2;} fi if test -z "$LTCC"; then eval "`$SHELL ${ofile} --config | grep '^LTCC='`" if test -z "$LTCC"; then - { echo "$as_me:$LINENO: WARNING: output file \`$ofile' does not look like a libtool script" >&5 -echo "$as_me: WARNING: output file \`$ofile' does not look like a libtool script" >&2;} + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: output file \`$ofile' does not look like a libtool script" >&5 +$as_echo "$as_me: WARNING: output file \`$ofile' does not look like a libtool script" >&2;} else - { echo "$as_me:$LINENO: WARNING: using \`LTCC=$LTCC', extracted from \`$ofile'" >&5 -echo "$as_me: WARNING: using \`LTCC=$LTCC', extracted from \`$ofile'" >&2;} + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using \`LTCC=$LTCC', extracted from \`$ofile'" >&5 +$as_echo "$as_me: WARNING: using \`LTCC=$LTCC', extracted from \`$ofile'" >&2;} fi fi if test -z "$LTCFLAGS"; then @@ -10947,17 +10387,13 @@ echo "$as_me: WARNING: using \`LTCC=$LTCC', extracted from \`$ofile'" >&2;} # Check whether tagname contains only valid characters case `$echo "X$tagname" | $Xsed -e 's:[-_ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz1234567890,/]::g'` in "") ;; - *) { { echo "$as_me:$LINENO: error: invalid tag name: $tagname" >&5 -echo "$as_me: error: invalid tag name: $tagname" >&2;} - { (exit 1); exit 1; }; } + *) as_fn_error $? "invalid tag name: $tagname" "$LINENO" 5 ;; esac if grep "^# ### BEGIN LIBTOOL TAG CONFIG: $tagname$" < "${ofile}" > /dev/null then - { { echo "$as_me:$LINENO: error: tag name \"$tagname\" already exists" >&5 -echo "$as_me: error: tag name \"$tagname\" already exists" >&2;} - { (exit 1); exit 1; }; } + as_fn_error $? "tag name \"$tagname\" already exists" "$LINENO" 5 fi # Update the list of available tags. @@ -11090,7 +10526,7 @@ if test "$GXX" = yes; then # Check whether --with-gnu-ld was given. -if test "${with_gnu_ld+set}" = set; then +if test "${with_gnu_ld+set}" = set; then : withval=$with_gnu_ld; test "$withval" = no || with_gnu_ld=yes else with_gnu_ld=no @@ -11099,8 +10535,8 @@ fi ac_prog=ld if test "$GCC" = yes; then # Check if gcc -print-prog-name=ld gives a path. - { echo "$as_me:$LINENO: checking for ld used by $CC" >&5 -echo $ECHO_N "checking for ld used by $CC... $ECHO_C" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ld used by $CC" >&5 +$as_echo_n "checking for ld used by $CC... " >&6; } case $host in *-*-mingw*) # gcc leaves a trailing carriage return which upsets mingw @@ -11129,14 +10565,14 @@ echo $ECHO_N "checking for ld used by $CC... $ECHO_C" >&6; } ;; esac elif test "$with_gnu_ld" = yes; then - { echo "$as_me:$LINENO: checking for GNU ld" >&5 -echo $ECHO_N "checking for GNU ld... $ECHO_C" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GNU ld" >&5 +$as_echo_n "checking for GNU ld... " >&6; } else - { echo "$as_me:$LINENO: checking for non-GNU ld" >&5 -echo $ECHO_N "checking for non-GNU ld... $ECHO_C" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for non-GNU ld" >&5 +$as_echo_n "checking for non-GNU ld... " >&6; } fi -if test "${lt_cv_path_LD+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 +if ${lt_cv_path_LD+:} false; then : + $as_echo_n "(cached) " >&6 else if test -z "$LD"; then lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR @@ -11166,19 +10602,17 @@ fi LD="$lt_cv_path_LD" if test -n "$LD"; then - { echo "$as_me:$LINENO: result: $LD" >&5 -echo "${ECHO_T}$LD" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LD" >&5 +$as_echo "$LD" >&6; } else - { echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } fi -test -z "$LD" && { { echo "$as_me:$LINENO: error: no acceptable ld found in \$PATH" >&5 -echo "$as_me: error: no acceptable ld found in \$PATH" >&2;} - { (exit 1); exit 1; }; } -{ echo "$as_me:$LINENO: checking if the linker ($LD) is GNU ld" >&5 -echo $ECHO_N "checking if the linker ($LD) is GNU ld... $ECHO_C" >&6; } -if test "${lt_cv_prog_gnu_ld+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 +test -z "$LD" && as_fn_error $? "no acceptable ld found in \$PATH" "$LINENO" 5 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if the linker ($LD) is GNU ld" >&5 +$as_echo_n "checking if the linker ($LD) is GNU ld... " >&6; } +if ${lt_cv_prog_gnu_ld+:} false; then : + $as_echo_n "(cached) " >&6 else # I'd rather use --version here, but apparently some GNU lds only accept -v. case `$LD -v 2>&1 &1 &5 -echo "${ECHO_T}$lt_cv_prog_gnu_ld" >&6; } +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_gnu_ld" >&5 +$as_echo "$lt_cv_prog_gnu_ld" >&6; } with_gnu_ld=$lt_cv_prog_gnu_ld @@ -11241,8 +10675,8 @@ else fi # PORTME: fill in a description of your system's C++ link characteristics -{ echo "$as_me:$LINENO: checking whether the $compiler linker ($LD) supports shared libraries" >&5 -echo $ECHO_N "checking whether the $compiler linker ($LD) supports shared libraries... $ECHO_C" >&6; } +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the $compiler linker ($LD) supports shared libraries" >&5 +$as_echo_n "checking whether the $compiler linker ($LD) supports shared libraries... " >&6; } ld_shlibs_CXX=yes case $host_os in aix3*) @@ -11338,11 +10772,7 @@ case $host_os in # -berok will link without error, but may produce a broken library. allow_undefined_flag_CXX='-berok' # Determine the default libpath from the value encoded in an empty executable. - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF + cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int @@ -11353,24 +10783,7 @@ main () return 0; } _ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_link") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_cxx_werror_flag" || - test ! -s conftest.err - } && test -s conftest$ac_exeext && - $as_test_x conftest$ac_exeext; then +if ac_fn_cxx_try_link "$LINENO"; then : lt_aix_libpath_sed=' /Import File Strings/,/^$/ { @@ -11384,15 +10797,9 @@ aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpat if test -z "$aix_libpath"; then aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` fi -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - fi - -rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ - conftest$ac_exeext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi hardcode_libdir_flag_spec_CXX='${wl}-blibpath:$libdir:'"$aix_libpath" @@ -11405,11 +10812,7 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi archive_expsym_cmds_CXX="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$exp_sym_flag:\$export_symbols" else # Determine the default libpath from the value encoded in an empty executable. - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF + cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int @@ -11420,24 +10823,7 @@ main () return 0; } _ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_link") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_cxx_werror_flag" || - test ! -s conftest.err - } && test -s conftest$ac_exeext && - $as_test_x conftest$ac_exeext; then +if ac_fn_cxx_try_link "$LINENO"; then : lt_aix_libpath_sed=' /Import File Strings/,/^$/ { @@ -11451,15 +10837,9 @@ aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpat if test -z "$aix_libpath"; then aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` fi -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - fi - -rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ - conftest$ac_exeext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi hardcode_libdir_flag_spec_CXX='${wl}-blibpath:$libdir:'"$aix_libpath" @@ -12187,8 +11567,8 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi ld_shlibs_CXX=no ;; esac -{ echo "$as_me:$LINENO: result: $ld_shlibs_CXX" >&5 -echo "${ECHO_T}$ld_shlibs_CXX" >&6; } +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ld_shlibs_CXX" >&5 +$as_echo "$ld_shlibs_CXX" >&6; } test "$ld_shlibs_CXX" = no && can_build_shared=no GCC_CXX="$GXX" @@ -12204,11 +11584,11 @@ private: }; EOF -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 +if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 (eval $ac_compile) 2>&5 ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; then + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then # Parse the compiler output and extract the necessary # objects, libraries and library flags. @@ -12363,8 +11743,8 @@ lt_prog_compiler_wl_CXX= lt_prog_compiler_pic_CXX= lt_prog_compiler_static_CXX= -{ echo "$as_me:$LINENO: checking for $compiler option to produce PIC" >&5 -echo $ECHO_N "checking for $compiler option to produce PIC... $ECHO_C" >&6; } +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $compiler option to produce PIC" >&5 +$as_echo_n "checking for $compiler option to produce PIC... " >&6; } # C++ specific cases for pic, static, wl, etc. if test "$GXX" = yes; then @@ -12647,18 +12027,18 @@ echo $ECHO_N "checking for $compiler option to produce PIC... $ECHO_C" >&6; } esac fi -{ echo "$as_me:$LINENO: result: $lt_prog_compiler_pic_CXX" >&5 -echo "${ECHO_T}$lt_prog_compiler_pic_CXX" >&6; } +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_prog_compiler_pic_CXX" >&5 +$as_echo "$lt_prog_compiler_pic_CXX" >&6; } # # Check to make sure the PIC flag actually works. # if test -n "$lt_prog_compiler_pic_CXX"; then -{ echo "$as_me:$LINENO: checking if $compiler PIC flag $lt_prog_compiler_pic_CXX works" >&5 -echo $ECHO_N "checking if $compiler PIC flag $lt_prog_compiler_pic_CXX works... $ECHO_C" >&6; } -if test "${lt_cv_prog_compiler_pic_works_CXX+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler PIC flag $lt_prog_compiler_pic_CXX works" >&5 +$as_echo_n "checking if $compiler PIC flag $lt_prog_compiler_pic_CXX works... " >&6; } +if ${lt_cv_prog_compiler_pic_works_CXX+:} false; then : + $as_echo_n "(cached) " >&6 else lt_cv_prog_compiler_pic_works_CXX=no ac_outfile=conftest.$ac_objext @@ -12673,11 +12053,11 @@ else -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` - (eval echo "\"\$as_me:12676: $lt_compile\"" >&5) + (eval echo "\"\$as_me:12056: $lt_compile\"" >&5) (eval "$lt_compile" 2>conftest.err) ac_status=$? cat conftest.err >&5 - echo "$as_me:12680: \$? = $ac_status" >&5 + echo "$as_me:12060: \$? = $ac_status" >&5 if (exit $ac_status) && test -s "$ac_outfile"; then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings other than the usual output. @@ -12690,8 +12070,8 @@ else $rm conftest* fi -{ echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_pic_works_CXX" >&5 -echo "${ECHO_T}$lt_cv_prog_compiler_pic_works_CXX" >&6; } +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic_works_CXX" >&5 +$as_echo "$lt_cv_prog_compiler_pic_works_CXX" >&6; } if test x"$lt_cv_prog_compiler_pic_works_CXX" = xyes; then case $lt_prog_compiler_pic_CXX in @@ -12718,10 +12098,10 @@ esac # Check to make sure the static flag actually works. # wl=$lt_prog_compiler_wl_CXX eval lt_tmp_static_flag=\"$lt_prog_compiler_static_CXX\" -{ echo "$as_me:$LINENO: checking if $compiler static flag $lt_tmp_static_flag works" >&5 -echo $ECHO_N "checking if $compiler static flag $lt_tmp_static_flag works... $ECHO_C" >&6; } -if test "${lt_cv_prog_compiler_static_works_CXX+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler static flag $lt_tmp_static_flag works" >&5 +$as_echo_n "checking if $compiler static flag $lt_tmp_static_flag works... " >&6; } +if ${lt_cv_prog_compiler_static_works_CXX+:} false; then : + $as_echo_n "(cached) " >&6 else lt_cv_prog_compiler_static_works_CXX=no save_LDFLAGS="$LDFLAGS" @@ -12746,8 +12126,8 @@ else LDFLAGS="$save_LDFLAGS" fi -{ echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_static_works_CXX" >&5 -echo "${ECHO_T}$lt_cv_prog_compiler_static_works_CXX" >&6; } +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_static_works_CXX" >&5 +$as_echo "$lt_cv_prog_compiler_static_works_CXX" >&6; } if test x"$lt_cv_prog_compiler_static_works_CXX" = xyes; then : @@ -12756,10 +12136,10 @@ else fi -{ echo "$as_me:$LINENO: checking if $compiler supports -c -o file.$ac_objext" >&5 -echo $ECHO_N "checking if $compiler supports -c -o file.$ac_objext... $ECHO_C" >&6; } -if test "${lt_cv_prog_compiler_c_o_CXX+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5 +$as_echo_n "checking if $compiler supports -c -o file.$ac_objext... " >&6; } +if ${lt_cv_prog_compiler_c_o_CXX+:} false; then : + $as_echo_n "(cached) " >&6 else lt_cv_prog_compiler_c_o_CXX=no $rm -r conftest 2>/dev/null @@ -12777,11 +12157,11 @@ else -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` - (eval echo "\"\$as_me:12780: $lt_compile\"" >&5) + (eval echo "\"\$as_me:12160: $lt_compile\"" >&5) (eval "$lt_compile" 2>out/conftest.err) ac_status=$? cat out/conftest.err >&5 - echo "$as_me:12784: \$? = $ac_status" >&5 + echo "$as_me:12164: \$? = $ac_status" >&5 if (exit $ac_status) && test -s out/conftest2.$ac_objext then # The compiler can only warn and ignore the option if not recognized @@ -12803,34 +12183,34 @@ else $rm conftest* fi -{ echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_c_o_CXX" >&5 -echo "${ECHO_T}$lt_cv_prog_compiler_c_o_CXX" >&6; } +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o_CXX" >&5 +$as_echo "$lt_cv_prog_compiler_c_o_CXX" >&6; } hard_links="nottested" if test "$lt_cv_prog_compiler_c_o_CXX" = no && test "$need_locks" != no; then # do not overwrite the value of need_locks provided by the user - { echo "$as_me:$LINENO: checking if we can lock with hard links" >&5 -echo $ECHO_N "checking if we can lock with hard links... $ECHO_C" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if we can lock with hard links" >&5 +$as_echo_n "checking if we can lock with hard links... " >&6; } hard_links=yes $rm conftest* ln conftest.a conftest.b 2>/dev/null && hard_links=no touch conftest.a ln conftest.a conftest.b 2>&5 || hard_links=no ln conftest.a conftest.b 2>/dev/null && hard_links=no - { echo "$as_me:$LINENO: result: $hard_links" >&5 -echo "${ECHO_T}$hard_links" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $hard_links" >&5 +$as_echo "$hard_links" >&6; } if test "$hard_links" = no; then - { echo "$as_me:$LINENO: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&5 -echo "$as_me: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&2;} + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&5 +$as_echo "$as_me: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&2;} need_locks=warn fi else need_locks=no fi -{ echo "$as_me:$LINENO: checking whether the $compiler linker ($LD) supports shared libraries" >&5 -echo $ECHO_N "checking whether the $compiler linker ($LD) supports shared libraries... $ECHO_C" >&6; } +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the $compiler linker ($LD) supports shared libraries" >&5 +$as_echo_n "checking whether the $compiler linker ($LD) supports shared libraries... " >&6; } export_symbols_cmds_CXX='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' case $host_os in @@ -12858,8 +12238,8 @@ echo $ECHO_N "checking whether the $compiler linker ($LD) supports shared librar esac exclude_expsyms_CXX='_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*' -{ echo "$as_me:$LINENO: result: $ld_shlibs_CXX" >&5 -echo "${ECHO_T}$ld_shlibs_CXX" >&6; } +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ld_shlibs_CXX" >&5 +$as_echo "$ld_shlibs_CXX" >&6; } test "$ld_shlibs_CXX" = no && can_build_shared=no # @@ -12879,16 +12259,16 @@ x|xyes) # Test whether the compiler implicitly links with -lc since on some # systems, -lgcc has to come before -lc. If gcc already passes -lc # to ld, don't add -lc before -lgcc. - { echo "$as_me:$LINENO: checking whether -lc should be explicitly linked in" >&5 -echo $ECHO_N "checking whether -lc should be explicitly linked in... $ECHO_C" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether -lc should be explicitly linked in" >&5 +$as_echo_n "checking whether -lc should be explicitly linked in... " >&6; } $rm conftest* echo "$lt_simple_compile_test_code" > conftest.$ac_ext - if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 (eval $ac_compile) 2>&5 ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } 2>conftest.err; then + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } 2>conftest.err; then soname=conftest lib=conftest libobjs=conftest.$ac_objext @@ -12902,11 +12282,11 @@ echo $ECHO_N "checking whether -lc should be explicitly linked in... $ECHO_C" >& libname=conftest lt_save_allow_undefined_flag=$allow_undefined_flag_CXX allow_undefined_flag_CXX= - if { (eval echo "$as_me:$LINENO: \"$archive_cmds_CXX 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1\"") >&5 + if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$archive_cmds_CXX 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1\""; } >&5 (eval $archive_cmds_CXX 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1) 2>&5 ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } then archive_cmds_need_lc_CXX=no else @@ -12917,16 +12297,16 @@ echo $ECHO_N "checking whether -lc should be explicitly linked in... $ECHO_C" >& cat conftest.err 1>&5 fi $rm conftest* - { echo "$as_me:$LINENO: result: $archive_cmds_need_lc_CXX" >&5 -echo "${ECHO_T}$archive_cmds_need_lc_CXX" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $archive_cmds_need_lc_CXX" >&5 +$as_echo "$archive_cmds_need_lc_CXX" >&6; } ;; esac fi ;; esac -{ echo "$as_me:$LINENO: checking dynamic linker characteristics" >&5 -echo $ECHO_N "checking dynamic linker characteristics... $ECHO_C" >&6; } +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking dynamic linker characteristics" >&5 +$as_echo_n "checking dynamic linker characteristics... " >&6; } library_names_spec= libname_spec='lib$name' soname_spec= @@ -13487,19 +12867,19 @@ uts4*) dynamic_linker=no ;; esac -{ echo "$as_me:$LINENO: result: $dynamic_linker" >&5 -echo "${ECHO_T}$dynamic_linker" >&6; } +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $dynamic_linker" >&5 +$as_echo "$dynamic_linker" >&6; } test "$dynamic_linker" = no && can_build_shared=no -if test "${lt_cv_sys_lib_search_path_spec+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 +if ${lt_cv_sys_lib_search_path_spec+:} false; then : + $as_echo_n "(cached) " >&6 else lt_cv_sys_lib_search_path_spec="$sys_lib_search_path_spec" fi sys_lib_search_path_spec="$lt_cv_sys_lib_search_path_spec" -if test "${lt_cv_sys_lib_dlsearch_path_spec+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 +if ${lt_cv_sys_lib_dlsearch_path_spec+:} false; then : + $as_echo_n "(cached) " >&6 else lt_cv_sys_lib_dlsearch_path_spec="$sys_lib_dlsearch_path_spec" fi @@ -13511,8 +12891,8 @@ if test "$GCC" = yes; then variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH" fi -{ echo "$as_me:$LINENO: checking how to hardcode library paths into programs" >&5 -echo $ECHO_N "checking how to hardcode library paths into programs... $ECHO_C" >&6; } +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to hardcode library paths into programs" >&5 +$as_echo_n "checking how to hardcode library paths into programs... " >&6; } hardcode_action_CXX= if test -n "$hardcode_libdir_flag_spec_CXX" || \ test -n "$runpath_var_CXX" || \ @@ -13536,8 +12916,8 @@ else # directories. hardcode_action_CXX=unsupported fi -{ echo "$as_me:$LINENO: result: $hardcode_action_CXX" >&5 -echo "${ECHO_T}$hardcode_action_CXX" >&6; } +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $hardcode_action_CXX" >&5 +$as_echo "$hardcode_action_CXX" >&6; } if test "$hardcode_action_CXX" = relink; then # Fast installation is not supported @@ -14075,13 +13455,13 @@ done cc_basename=`$echo "X$cc_temp" | $Xsed -e 's%.*/%%' -e "s%^$host_alias-%%"` -{ echo "$as_me:$LINENO: checking if libtool supports shared libraries" >&5 -echo $ECHO_N "checking if libtool supports shared libraries... $ECHO_C" >&6; } -{ echo "$as_me:$LINENO: result: $can_build_shared" >&5 -echo "${ECHO_T}$can_build_shared" >&6; } +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if libtool supports shared libraries" >&5 +$as_echo_n "checking if libtool supports shared libraries... " >&6; } +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $can_build_shared" >&5 +$as_echo "$can_build_shared" >&6; } -{ echo "$as_me:$LINENO: checking whether to build shared libraries" >&5 -echo $ECHO_N "checking whether to build shared libraries... $ECHO_C" >&6; } +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to build shared libraries" >&5 +$as_echo_n "checking whether to build shared libraries... " >&6; } test "$can_build_shared" = "no" && enable_shared=no # On AIX, shared libraries and static libraries use the same namespace, and @@ -14100,15 +13480,15 @@ aix[4-9]*) fi ;; esac -{ echo "$as_me:$LINENO: result: $enable_shared" >&5 -echo "${ECHO_T}$enable_shared" >&6; } +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_shared" >&5 +$as_echo "$enable_shared" >&6; } -{ echo "$as_me:$LINENO: checking whether to build static libraries" >&5 -echo $ECHO_N "checking whether to build static libraries... $ECHO_C" >&6; } +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to build static libraries" >&5 +$as_echo_n "checking whether to build static libraries... " >&6; } # Make sure either enable_shared or enable_static is yes. test "$enable_shared" = yes || enable_static=yes -{ echo "$as_me:$LINENO: result: $enable_static" >&5 -echo "${ECHO_T}$enable_static" >&6; } +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_static" >&5 +$as_echo "$enable_static" >&6; } GCC_F77="$G77" LD_F77="$LD" @@ -14117,8 +13497,8 @@ lt_prog_compiler_wl_F77= lt_prog_compiler_pic_F77= lt_prog_compiler_static_F77= -{ echo "$as_me:$LINENO: checking for $compiler option to produce PIC" >&5 -echo $ECHO_N "checking for $compiler option to produce PIC... $ECHO_C" >&6; } +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $compiler option to produce PIC" >&5 +$as_echo_n "checking for $compiler option to produce PIC... " >&6; } if test "$GCC" = yes; then lt_prog_compiler_wl_F77='-Wl,' @@ -14349,18 +13729,18 @@ echo $ECHO_N "checking for $compiler option to produce PIC... $ECHO_C" >&6; } esac fi -{ echo "$as_me:$LINENO: result: $lt_prog_compiler_pic_F77" >&5 -echo "${ECHO_T}$lt_prog_compiler_pic_F77" >&6; } +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_prog_compiler_pic_F77" >&5 +$as_echo "$lt_prog_compiler_pic_F77" >&6; } # # Check to make sure the PIC flag actually works. # if test -n "$lt_prog_compiler_pic_F77"; then -{ echo "$as_me:$LINENO: checking if $compiler PIC flag $lt_prog_compiler_pic_F77 works" >&5 -echo $ECHO_N "checking if $compiler PIC flag $lt_prog_compiler_pic_F77 works... $ECHO_C" >&6; } -if test "${lt_cv_prog_compiler_pic_works_F77+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler PIC flag $lt_prog_compiler_pic_F77 works" >&5 +$as_echo_n "checking if $compiler PIC flag $lt_prog_compiler_pic_F77 works... " >&6; } +if ${lt_cv_prog_compiler_pic_works_F77+:} false; then : + $as_echo_n "(cached) " >&6 else lt_cv_prog_compiler_pic_works_F77=no ac_outfile=conftest.$ac_objext @@ -14375,11 +13755,11 @@ else -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` - (eval echo "\"\$as_me:14378: $lt_compile\"" >&5) + (eval echo "\"\$as_me:13758: $lt_compile\"" >&5) (eval "$lt_compile" 2>conftest.err) ac_status=$? cat conftest.err >&5 - echo "$as_me:14382: \$? = $ac_status" >&5 + echo "$as_me:13762: \$? = $ac_status" >&5 if (exit $ac_status) && test -s "$ac_outfile"; then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings other than the usual output. @@ -14392,8 +13772,8 @@ else $rm conftest* fi -{ echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_pic_works_F77" >&5 -echo "${ECHO_T}$lt_cv_prog_compiler_pic_works_F77" >&6; } +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic_works_F77" >&5 +$as_echo "$lt_cv_prog_compiler_pic_works_F77" >&6; } if test x"$lt_cv_prog_compiler_pic_works_F77" = xyes; then case $lt_prog_compiler_pic_F77 in @@ -14420,10 +13800,10 @@ esac # Check to make sure the static flag actually works. # wl=$lt_prog_compiler_wl_F77 eval lt_tmp_static_flag=\"$lt_prog_compiler_static_F77\" -{ echo "$as_me:$LINENO: checking if $compiler static flag $lt_tmp_static_flag works" >&5 -echo $ECHO_N "checking if $compiler static flag $lt_tmp_static_flag works... $ECHO_C" >&6; } -if test "${lt_cv_prog_compiler_static_works_F77+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler static flag $lt_tmp_static_flag works" >&5 +$as_echo_n "checking if $compiler static flag $lt_tmp_static_flag works... " >&6; } +if ${lt_cv_prog_compiler_static_works_F77+:} false; then : + $as_echo_n "(cached) " >&6 else lt_cv_prog_compiler_static_works_F77=no save_LDFLAGS="$LDFLAGS" @@ -14448,8 +13828,8 @@ else LDFLAGS="$save_LDFLAGS" fi -{ echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_static_works_F77" >&5 -echo "${ECHO_T}$lt_cv_prog_compiler_static_works_F77" >&6; } +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_static_works_F77" >&5 +$as_echo "$lt_cv_prog_compiler_static_works_F77" >&6; } if test x"$lt_cv_prog_compiler_static_works_F77" = xyes; then : @@ -14458,10 +13838,10 @@ else fi -{ echo "$as_me:$LINENO: checking if $compiler supports -c -o file.$ac_objext" >&5 -echo $ECHO_N "checking if $compiler supports -c -o file.$ac_objext... $ECHO_C" >&6; } -if test "${lt_cv_prog_compiler_c_o_F77+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5 +$as_echo_n "checking if $compiler supports -c -o file.$ac_objext... " >&6; } +if ${lt_cv_prog_compiler_c_o_F77+:} false; then : + $as_echo_n "(cached) " >&6 else lt_cv_prog_compiler_c_o_F77=no $rm -r conftest 2>/dev/null @@ -14479,11 +13859,11 @@ else -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` - (eval echo "\"\$as_me:14482: $lt_compile\"" >&5) + (eval echo "\"\$as_me:13862: $lt_compile\"" >&5) (eval "$lt_compile" 2>out/conftest.err) ac_status=$? cat out/conftest.err >&5 - echo "$as_me:14486: \$? = $ac_status" >&5 + echo "$as_me:13866: \$? = $ac_status" >&5 if (exit $ac_status) && test -s out/conftest2.$ac_objext then # The compiler can only warn and ignore the option if not recognized @@ -14505,34 +13885,34 @@ else $rm conftest* fi -{ echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_c_o_F77" >&5 -echo "${ECHO_T}$lt_cv_prog_compiler_c_o_F77" >&6; } +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o_F77" >&5 +$as_echo "$lt_cv_prog_compiler_c_o_F77" >&6; } hard_links="nottested" if test "$lt_cv_prog_compiler_c_o_F77" = no && test "$need_locks" != no; then # do not overwrite the value of need_locks provided by the user - { echo "$as_me:$LINENO: checking if we can lock with hard links" >&5 -echo $ECHO_N "checking if we can lock with hard links... $ECHO_C" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if we can lock with hard links" >&5 +$as_echo_n "checking if we can lock with hard links... " >&6; } hard_links=yes $rm conftest* ln conftest.a conftest.b 2>/dev/null && hard_links=no touch conftest.a ln conftest.a conftest.b 2>&5 || hard_links=no ln conftest.a conftest.b 2>/dev/null && hard_links=no - { echo "$as_me:$LINENO: result: $hard_links" >&5 -echo "${ECHO_T}$hard_links" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $hard_links" >&5 +$as_echo "$hard_links" >&6; } if test "$hard_links" = no; then - { echo "$as_me:$LINENO: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&5 -echo "$as_me: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&2;} + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&5 +$as_echo "$as_me: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&2;} need_locks=warn fi else need_locks=no fi -{ echo "$as_me:$LINENO: checking whether the $compiler linker ($LD) supports shared libraries" >&5 -echo $ECHO_N "checking whether the $compiler linker ($LD) supports shared libraries... $ECHO_C" >&6; } +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the $compiler linker ($LD) supports shared libraries" >&5 +$as_echo_n "checking whether the $compiler linker ($LD) supports shared libraries... " >&6; } runpath_var= allow_undefined_flag_F77= @@ -14942,29 +14322,12 @@ _LT_EOF # -berok will link without error, but may produce a broken library. allow_undefined_flag_F77='-berok' # Determine the default libpath from the value encoded in an empty executable. - cat >conftest.$ac_ext <<_ACEOF + cat > conftest.$ac_ext <<_ACEOF program main end _ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_link") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_f77_werror_flag" || - test ! -s conftest.err - } && test -s conftest$ac_exeext && - $as_test_x conftest$ac_exeext; then +if ac_fn_f77_try_link "$LINENO"; then : lt_aix_libpath_sed=' /Import File Strings/,/^$/ { @@ -14978,15 +14341,9 @@ aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpat if test -z "$aix_libpath"; then aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` fi -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - fi - -rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ - conftest$ac_exeext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi hardcode_libdir_flag_spec_F77='${wl}-blibpath:$libdir:'"$aix_libpath" @@ -14998,29 +14355,12 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi archive_expsym_cmds_F77="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$exp_sym_flag:\$export_symbols" else # Determine the default libpath from the value encoded in an empty executable. - cat >conftest.$ac_ext <<_ACEOF + cat > conftest.$ac_ext <<_ACEOF program main end _ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_link") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_f77_werror_flag" || - test ! -s conftest.err - } && test -s conftest$ac_exeext && - $as_test_x conftest$ac_exeext; then +if ac_fn_f77_try_link "$LINENO"; then : lt_aix_libpath_sed=' /Import File Strings/,/^$/ { @@ -15034,15 +14374,9 @@ aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpat if test -z "$aix_libpath"; then aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` fi -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - fi - -rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ - conftest$ac_exeext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi hardcode_libdir_flag_spec_F77='${wl}-blibpath:$libdir:'"$aix_libpath" @@ -15492,8 +14826,8 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi esac fi -{ echo "$as_me:$LINENO: result: $ld_shlibs_F77" >&5 -echo "${ECHO_T}$ld_shlibs_F77" >&6; } +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ld_shlibs_F77" >&5 +$as_echo "$ld_shlibs_F77" >&6; } test "$ld_shlibs_F77" = no && can_build_shared=no # @@ -15513,16 +14847,16 @@ x|xyes) # Test whether the compiler implicitly links with -lc since on some # systems, -lgcc has to come before -lc. If gcc already passes -lc # to ld, don't add -lc before -lgcc. - { echo "$as_me:$LINENO: checking whether -lc should be explicitly linked in" >&5 -echo $ECHO_N "checking whether -lc should be explicitly linked in... $ECHO_C" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether -lc should be explicitly linked in" >&5 +$as_echo_n "checking whether -lc should be explicitly linked in... " >&6; } $rm conftest* echo "$lt_simple_compile_test_code" > conftest.$ac_ext - if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 (eval $ac_compile) 2>&5 ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } 2>conftest.err; then + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } 2>conftest.err; then soname=conftest lib=conftest libobjs=conftest.$ac_objext @@ -15536,11 +14870,11 @@ echo $ECHO_N "checking whether -lc should be explicitly linked in... $ECHO_C" >& libname=conftest lt_save_allow_undefined_flag=$allow_undefined_flag_F77 allow_undefined_flag_F77= - if { (eval echo "$as_me:$LINENO: \"$archive_cmds_F77 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1\"") >&5 + if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$archive_cmds_F77 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1\""; } >&5 (eval $archive_cmds_F77 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1) 2>&5 ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } then archive_cmds_need_lc_F77=no else @@ -15551,16 +14885,16 @@ echo $ECHO_N "checking whether -lc should be explicitly linked in... $ECHO_C" >& cat conftest.err 1>&5 fi $rm conftest* - { echo "$as_me:$LINENO: result: $archive_cmds_need_lc_F77" >&5 -echo "${ECHO_T}$archive_cmds_need_lc_F77" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $archive_cmds_need_lc_F77" >&5 +$as_echo "$archive_cmds_need_lc_F77" >&6; } ;; esac fi ;; esac -{ echo "$as_me:$LINENO: checking dynamic linker characteristics" >&5 -echo $ECHO_N "checking dynamic linker characteristics... $ECHO_C" >&6; } +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking dynamic linker characteristics" >&5 +$as_echo_n "checking dynamic linker characteristics... " >&6; } library_names_spec= libname_spec='lib$name' soname_spec= @@ -16121,19 +15455,19 @@ uts4*) dynamic_linker=no ;; esac -{ echo "$as_me:$LINENO: result: $dynamic_linker" >&5 -echo "${ECHO_T}$dynamic_linker" >&6; } +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $dynamic_linker" >&5 +$as_echo "$dynamic_linker" >&6; } test "$dynamic_linker" = no && can_build_shared=no -if test "${lt_cv_sys_lib_search_path_spec+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 +if ${lt_cv_sys_lib_search_path_spec+:} false; then : + $as_echo_n "(cached) " >&6 else lt_cv_sys_lib_search_path_spec="$sys_lib_search_path_spec" fi sys_lib_search_path_spec="$lt_cv_sys_lib_search_path_spec" -if test "${lt_cv_sys_lib_dlsearch_path_spec+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 +if ${lt_cv_sys_lib_dlsearch_path_spec+:} false; then : + $as_echo_n "(cached) " >&6 else lt_cv_sys_lib_dlsearch_path_spec="$sys_lib_dlsearch_path_spec" fi @@ -16145,8 +15479,8 @@ if test "$GCC" = yes; then variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH" fi -{ echo "$as_me:$LINENO: checking how to hardcode library paths into programs" >&5 -echo $ECHO_N "checking how to hardcode library paths into programs... $ECHO_C" >&6; } +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to hardcode library paths into programs" >&5 +$as_echo_n "checking how to hardcode library paths into programs... " >&6; } hardcode_action_F77= if test -n "$hardcode_libdir_flag_spec_F77" || \ test -n "$runpath_var_F77" || \ @@ -16170,8 +15504,8 @@ else # directories. hardcode_action_F77=unsupported fi -{ echo "$as_me:$LINENO: result: $hardcode_action_F77" >&5 -echo "${ECHO_T}$hardcode_action_F77" >&6; } +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $hardcode_action_F77" >&5 +$as_echo "$hardcode_action_F77" >&6; } if test "$hardcode_action_F77" = relink; then # Fast installation is not supported @@ -16681,10 +16015,10 @@ if test "$GCC" = yes; then lt_prog_compiler_no_builtin_flag_GCJ=' -fno-builtin' -{ echo "$as_me:$LINENO: checking if $compiler supports -fno-rtti -fno-exceptions" >&5 -echo $ECHO_N "checking if $compiler supports -fno-rtti -fno-exceptions... $ECHO_C" >&6; } -if test "${lt_cv_prog_compiler_rtti_exceptions+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -fno-rtti -fno-exceptions" >&5 +$as_echo_n "checking if $compiler supports -fno-rtti -fno-exceptions... " >&6; } +if ${lt_cv_prog_compiler_rtti_exceptions+:} false; then : + $as_echo_n "(cached) " >&6 else lt_cv_prog_compiler_rtti_exceptions=no ac_outfile=conftest.$ac_objext @@ -16699,11 +16033,11 @@ else -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` - (eval echo "\"\$as_me:16702: $lt_compile\"" >&5) + (eval echo "\"\$as_me:16036: $lt_compile\"" >&5) (eval "$lt_compile" 2>conftest.err) ac_status=$? cat conftest.err >&5 - echo "$as_me:16706: \$? = $ac_status" >&5 + echo "$as_me:16040: \$? = $ac_status" >&5 if (exit $ac_status) && test -s "$ac_outfile"; then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings other than the usual output. @@ -16716,8 +16050,8 @@ else $rm conftest* fi -{ echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_rtti_exceptions" >&5 -echo "${ECHO_T}$lt_cv_prog_compiler_rtti_exceptions" >&6; } +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_rtti_exceptions" >&5 +$as_echo "$lt_cv_prog_compiler_rtti_exceptions" >&6; } if test x"$lt_cv_prog_compiler_rtti_exceptions" = xyes; then lt_prog_compiler_no_builtin_flag_GCJ="$lt_prog_compiler_no_builtin_flag_GCJ -fno-rtti -fno-exceptions" @@ -16731,8 +16065,8 @@ lt_prog_compiler_wl_GCJ= lt_prog_compiler_pic_GCJ= lt_prog_compiler_static_GCJ= -{ echo "$as_me:$LINENO: checking for $compiler option to produce PIC" >&5 -echo $ECHO_N "checking for $compiler option to produce PIC... $ECHO_C" >&6; } +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $compiler option to produce PIC" >&5 +$as_echo_n "checking for $compiler option to produce PIC... " >&6; } if test "$GCC" = yes; then lt_prog_compiler_wl_GCJ='-Wl,' @@ -16963,18 +16297,18 @@ echo $ECHO_N "checking for $compiler option to produce PIC... $ECHO_C" >&6; } esac fi -{ echo "$as_me:$LINENO: result: $lt_prog_compiler_pic_GCJ" >&5 -echo "${ECHO_T}$lt_prog_compiler_pic_GCJ" >&6; } +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_prog_compiler_pic_GCJ" >&5 +$as_echo "$lt_prog_compiler_pic_GCJ" >&6; } # # Check to make sure the PIC flag actually works. # if test -n "$lt_prog_compiler_pic_GCJ"; then -{ echo "$as_me:$LINENO: checking if $compiler PIC flag $lt_prog_compiler_pic_GCJ works" >&5 -echo $ECHO_N "checking if $compiler PIC flag $lt_prog_compiler_pic_GCJ works... $ECHO_C" >&6; } -if test "${lt_cv_prog_compiler_pic_works_GCJ+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler PIC flag $lt_prog_compiler_pic_GCJ works" >&5 +$as_echo_n "checking if $compiler PIC flag $lt_prog_compiler_pic_GCJ works... " >&6; } +if ${lt_cv_prog_compiler_pic_works_GCJ+:} false; then : + $as_echo_n "(cached) " >&6 else lt_cv_prog_compiler_pic_works_GCJ=no ac_outfile=conftest.$ac_objext @@ -16989,11 +16323,11 @@ else -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` - (eval echo "\"\$as_me:16992: $lt_compile\"" >&5) + (eval echo "\"\$as_me:16326: $lt_compile\"" >&5) (eval "$lt_compile" 2>conftest.err) ac_status=$? cat conftest.err >&5 - echo "$as_me:16996: \$? = $ac_status" >&5 + echo "$as_me:16330: \$? = $ac_status" >&5 if (exit $ac_status) && test -s "$ac_outfile"; then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings other than the usual output. @@ -17006,8 +16340,8 @@ else $rm conftest* fi -{ echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_pic_works_GCJ" >&5 -echo "${ECHO_T}$lt_cv_prog_compiler_pic_works_GCJ" >&6; } +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic_works_GCJ" >&5 +$as_echo "$lt_cv_prog_compiler_pic_works_GCJ" >&6; } if test x"$lt_cv_prog_compiler_pic_works_GCJ" = xyes; then case $lt_prog_compiler_pic_GCJ in @@ -17034,10 +16368,10 @@ esac # Check to make sure the static flag actually works. # wl=$lt_prog_compiler_wl_GCJ eval lt_tmp_static_flag=\"$lt_prog_compiler_static_GCJ\" -{ echo "$as_me:$LINENO: checking if $compiler static flag $lt_tmp_static_flag works" >&5 -echo $ECHO_N "checking if $compiler static flag $lt_tmp_static_flag works... $ECHO_C" >&6; } -if test "${lt_cv_prog_compiler_static_works_GCJ+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler static flag $lt_tmp_static_flag works" >&5 +$as_echo_n "checking if $compiler static flag $lt_tmp_static_flag works... " >&6; } +if ${lt_cv_prog_compiler_static_works_GCJ+:} false; then : + $as_echo_n "(cached) " >&6 else lt_cv_prog_compiler_static_works_GCJ=no save_LDFLAGS="$LDFLAGS" @@ -17062,8 +16396,8 @@ else LDFLAGS="$save_LDFLAGS" fi -{ echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_static_works_GCJ" >&5 -echo "${ECHO_T}$lt_cv_prog_compiler_static_works_GCJ" >&6; } +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_static_works_GCJ" >&5 +$as_echo "$lt_cv_prog_compiler_static_works_GCJ" >&6; } if test x"$lt_cv_prog_compiler_static_works_GCJ" = xyes; then : @@ -17072,10 +16406,10 @@ else fi -{ echo "$as_me:$LINENO: checking if $compiler supports -c -o file.$ac_objext" >&5 -echo $ECHO_N "checking if $compiler supports -c -o file.$ac_objext... $ECHO_C" >&6; } -if test "${lt_cv_prog_compiler_c_o_GCJ+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5 +$as_echo_n "checking if $compiler supports -c -o file.$ac_objext... " >&6; } +if ${lt_cv_prog_compiler_c_o_GCJ+:} false; then : + $as_echo_n "(cached) " >&6 else lt_cv_prog_compiler_c_o_GCJ=no $rm -r conftest 2>/dev/null @@ -17093,11 +16427,11 @@ else -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` - (eval echo "\"\$as_me:17096: $lt_compile\"" >&5) + (eval echo "\"\$as_me:16430: $lt_compile\"" >&5) (eval "$lt_compile" 2>out/conftest.err) ac_status=$? cat out/conftest.err >&5 - echo "$as_me:17100: \$? = $ac_status" >&5 + echo "$as_me:16434: \$? = $ac_status" >&5 if (exit $ac_status) && test -s out/conftest2.$ac_objext then # The compiler can only warn and ignore the option if not recognized @@ -17119,34 +16453,34 @@ else $rm conftest* fi -{ echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_c_o_GCJ" >&5 -echo "${ECHO_T}$lt_cv_prog_compiler_c_o_GCJ" >&6; } +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o_GCJ" >&5 +$as_echo "$lt_cv_prog_compiler_c_o_GCJ" >&6; } hard_links="nottested" if test "$lt_cv_prog_compiler_c_o_GCJ" = no && test "$need_locks" != no; then # do not overwrite the value of need_locks provided by the user - { echo "$as_me:$LINENO: checking if we can lock with hard links" >&5 -echo $ECHO_N "checking if we can lock with hard links... $ECHO_C" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if we can lock with hard links" >&5 +$as_echo_n "checking if we can lock with hard links... " >&6; } hard_links=yes $rm conftest* ln conftest.a conftest.b 2>/dev/null && hard_links=no touch conftest.a ln conftest.a conftest.b 2>&5 || hard_links=no ln conftest.a conftest.b 2>/dev/null && hard_links=no - { echo "$as_me:$LINENO: result: $hard_links" >&5 -echo "${ECHO_T}$hard_links" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $hard_links" >&5 +$as_echo "$hard_links" >&6; } if test "$hard_links" = no; then - { echo "$as_me:$LINENO: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&5 -echo "$as_me: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&2;} + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&5 +$as_echo "$as_me: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&2;} need_locks=warn fi else need_locks=no fi -{ echo "$as_me:$LINENO: checking whether the $compiler linker ($LD) supports shared libraries" >&5 -echo $ECHO_N "checking whether the $compiler linker ($LD) supports shared libraries... $ECHO_C" >&6; } +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the $compiler linker ($LD) supports shared libraries" >&5 +$as_echo_n "checking whether the $compiler linker ($LD) supports shared libraries... " >&6; } runpath_var= allow_undefined_flag_GCJ= @@ -17556,11 +16890,7 @@ _LT_EOF # -berok will link without error, but may produce a broken library. allow_undefined_flag_GCJ='-berok' # Determine the default libpath from the value encoded in an empty executable. - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF + cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int @@ -17571,24 +16901,7 @@ main () return 0; } _ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_link") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_cxx_werror_flag" || - test ! -s conftest.err - } && test -s conftest$ac_exeext && - $as_test_x conftest$ac_exeext; then +if ac_fn_cxx_try_link "$LINENO"; then : lt_aix_libpath_sed=' /Import File Strings/,/^$/ { @@ -17602,15 +16915,9 @@ aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpat if test -z "$aix_libpath"; then aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` fi -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - fi - -rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ - conftest$ac_exeext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi hardcode_libdir_flag_spec_GCJ='${wl}-blibpath:$libdir:'"$aix_libpath" @@ -17622,11 +16929,7 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi archive_expsym_cmds_GCJ="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$exp_sym_flag:\$export_symbols" else # Determine the default libpath from the value encoded in an empty executable. - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF + cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int @@ -17637,24 +16940,7 @@ main () return 0; } _ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_link") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_cxx_werror_flag" || - test ! -s conftest.err - } && test -s conftest$ac_exeext && - $as_test_x conftest$ac_exeext; then +if ac_fn_cxx_try_link "$LINENO"; then : lt_aix_libpath_sed=' /Import File Strings/,/^$/ { @@ -17668,15 +16954,9 @@ aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpat if test -z "$aix_libpath"; then aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` fi -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - fi - -rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ - conftest$ac_exeext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi hardcode_libdir_flag_spec_GCJ='${wl}-blibpath:$libdir:'"$aix_libpath" @@ -18126,8 +17406,8 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi esac fi -{ echo "$as_me:$LINENO: result: $ld_shlibs_GCJ" >&5 -echo "${ECHO_T}$ld_shlibs_GCJ" >&6; } +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ld_shlibs_GCJ" >&5 +$as_echo "$ld_shlibs_GCJ" >&6; } test "$ld_shlibs_GCJ" = no && can_build_shared=no # @@ -18147,16 +17427,16 @@ x|xyes) # Test whether the compiler implicitly links with -lc since on some # systems, -lgcc has to come before -lc. If gcc already passes -lc # to ld, don't add -lc before -lgcc. - { echo "$as_me:$LINENO: checking whether -lc should be explicitly linked in" >&5 -echo $ECHO_N "checking whether -lc should be explicitly linked in... $ECHO_C" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether -lc should be explicitly linked in" >&5 +$as_echo_n "checking whether -lc should be explicitly linked in... " >&6; } $rm conftest* echo "$lt_simple_compile_test_code" > conftest.$ac_ext - if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 (eval $ac_compile) 2>&5 ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } 2>conftest.err; then + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } 2>conftest.err; then soname=conftest lib=conftest libobjs=conftest.$ac_objext @@ -18170,11 +17450,11 @@ echo $ECHO_N "checking whether -lc should be explicitly linked in... $ECHO_C" >& libname=conftest lt_save_allow_undefined_flag=$allow_undefined_flag_GCJ allow_undefined_flag_GCJ= - if { (eval echo "$as_me:$LINENO: \"$archive_cmds_GCJ 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1\"") >&5 + if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$archive_cmds_GCJ 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1\""; } >&5 (eval $archive_cmds_GCJ 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1) 2>&5 ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } then archive_cmds_need_lc_GCJ=no else @@ -18185,16 +17465,16 @@ echo $ECHO_N "checking whether -lc should be explicitly linked in... $ECHO_C" >& cat conftest.err 1>&5 fi $rm conftest* - { echo "$as_me:$LINENO: result: $archive_cmds_need_lc_GCJ" >&5 -echo "${ECHO_T}$archive_cmds_need_lc_GCJ" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $archive_cmds_need_lc_GCJ" >&5 +$as_echo "$archive_cmds_need_lc_GCJ" >&6; } ;; esac fi ;; esac -{ echo "$as_me:$LINENO: checking dynamic linker characteristics" >&5 -echo $ECHO_N "checking dynamic linker characteristics... $ECHO_C" >&6; } +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking dynamic linker characteristics" >&5 +$as_echo_n "checking dynamic linker characteristics... " >&6; } library_names_spec= libname_spec='lib$name' soname_spec= @@ -18755,19 +18035,19 @@ uts4*) dynamic_linker=no ;; esac -{ echo "$as_me:$LINENO: result: $dynamic_linker" >&5 -echo "${ECHO_T}$dynamic_linker" >&6; } +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $dynamic_linker" >&5 +$as_echo "$dynamic_linker" >&6; } test "$dynamic_linker" = no && can_build_shared=no -if test "${lt_cv_sys_lib_search_path_spec+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 +if ${lt_cv_sys_lib_search_path_spec+:} false; then : + $as_echo_n "(cached) " >&6 else lt_cv_sys_lib_search_path_spec="$sys_lib_search_path_spec" fi sys_lib_search_path_spec="$lt_cv_sys_lib_search_path_spec" -if test "${lt_cv_sys_lib_dlsearch_path_spec+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 +if ${lt_cv_sys_lib_dlsearch_path_spec+:} false; then : + $as_echo_n "(cached) " >&6 else lt_cv_sys_lib_dlsearch_path_spec="$sys_lib_dlsearch_path_spec" fi @@ -18779,8 +18059,8 @@ if test "$GCC" = yes; then variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH" fi -{ echo "$as_me:$LINENO: checking how to hardcode library paths into programs" >&5 -echo $ECHO_N "checking how to hardcode library paths into programs... $ECHO_C" >&6; } +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to hardcode library paths into programs" >&5 +$as_echo_n "checking how to hardcode library paths into programs... " >&6; } hardcode_action_GCJ= if test -n "$hardcode_libdir_flag_spec_GCJ" || \ test -n "$runpath_var_GCJ" || \ @@ -18804,8 +18084,8 @@ else # directories. hardcode_action_GCJ=unsupported fi -{ echo "$as_me:$LINENO: result: $hardcode_action_GCJ" >&5 -echo "${ECHO_T}$hardcode_action_GCJ" >&6; } +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $hardcode_action_GCJ" >&5 +$as_echo "$hardcode_action_GCJ" >&6; } if test "$hardcode_action_GCJ" = relink; then # Fast installation is not supported @@ -19728,9 +19008,7 @@ CC="$lt_save_CC" ;; *) - { { echo "$as_me:$LINENO: error: Unsupported tag name: $tagname" >&5 -echo "$as_me: error: Unsupported tag name: $tagname" >&2;} - { (exit 1); exit 1; }; } + as_fn_error $? "Unsupported tag name: $tagname" "$LINENO" 5 ;; esac @@ -19748,9 +19026,7 @@ echo "$as_me: error: Unsupported tag name: $tagname" >&2;} chmod +x "$ofile" else rm -f "${ofile}T" - { { echo "$as_me:$LINENO: error: unable to update list of available tagged configurations." >&5 -echo "$as_me: error: unable to update list of available tagged configurations." >&2;} - { (exit 1); exit 1; }; } + as_fn_error $? "unable to update list of available tagged configurations." "$LINENO" 5 fi fi @@ -19792,10 +19068,10 @@ LIBTOOL='$(SHELL) $(top_builddir)/libtool' PYTHON= # We *do not* allow the user to specify a python interpreter # Extract the first word of "python", so it can be a program name with args. set dummy python; ac_word=$2 -{ echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } -if test "${ac_cv_path_PYTHON+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_path_PYTHON+:} false; then : + $as_echo_n "(cached) " >&6 else case $PYTHON in [\\/]* | ?:[\\/]*) @@ -19807,14 +19083,14 @@ for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_path_PYTHON="$as_dir/$ac_word$ac_exec_ext" - echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done -done + done IFS=$as_save_IFS test -z "$ac_cv_path_PYTHON" && ac_cv_path_PYTHON=":" @@ -19823,15 +19099,15 @@ esac fi PYTHON=$ac_cv_path_PYTHON if test -n "$PYTHON"; then - { echo "$as_me:$LINENO: result: $PYTHON" >&5 -echo "${ECHO_T}$PYTHON" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PYTHON" >&5 +$as_echo "$PYTHON" >&6; } else - { echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } fi -if test "$PYTHON" != ":"; then +if test "$PYTHON" != ":"; then : prog="import sys, string # split strings by '.' and convert to numeric. Append some zeros # because we need at least 4 digits for the hex conversion. @@ -19843,14 +19119,12 @@ sys.exit(sys.hexversion < minverhex)" ($PYTHON -c "$prog") >&5 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; then + (exit $ac_status); }; then : : else PYTHON=":" fi - fi - if test "$PYTHON" != ":"; then HAVE_PYTHON_TRUE= HAVE_PYTHON_FALSE='#' @@ -19863,7 +19137,7 @@ fi # Configure pthreads. # Check whether --with-pthreads was given. -if test "${with_pthreads+set}" = set; then +if test "${with_pthreads+set}" = set; then : withval=$with_pthreads; with_pthreads=$withval else with_pthreads=check @@ -19871,7 +19145,7 @@ fi have_pthreads=no -if test "x$with_pthreads" != "xno"; then +if test "x$with_pthreads" != "xno"; then : @@ -19895,13 +19169,9 @@ if test x"$PTHREAD_LIBS$PTHREAD_CFLAGS" != x; then CFLAGS="$CFLAGS $PTHREAD_CFLAGS" save_LIBS="$LIBS" LIBS="$PTHREAD_LIBS $LIBS" - { echo "$as_me:$LINENO: checking for pthread_join in LIBS=$PTHREAD_LIBS with CFLAGS=$PTHREAD_CFLAGS" >&5 -echo $ECHO_N "checking for pthread_join in LIBS=$PTHREAD_LIBS with CFLAGS=$PTHREAD_CFLAGS... $ECHO_C" >&6; } - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for pthread_join in LIBS=$PTHREAD_LIBS with CFLAGS=$PTHREAD_CFLAGS" >&5 +$as_echo_n "checking for pthread_join in LIBS=$PTHREAD_LIBS with CFLAGS=$PTHREAD_CFLAGS... " >&6; } + cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. @@ -19919,36 +19189,13 @@ return pthread_join (); return 0; } _ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_link") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest$ac_exeext && - $as_test_x conftest$ac_exeext; then +if ac_fn_c_try_link "$LINENO"; then : acx_pthread_ok=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - fi - -rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ - conftest$ac_exeext conftest.$ac_ext - { echo "$as_me:$LINENO: result: $acx_pthread_ok" >&5 -echo "${ECHO_T}$acx_pthread_ok" >&6; } +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $acx_pthread_ok" >&5 +$as_echo "$acx_pthread_ok" >&6; } if test x"$acx_pthread_ok" = xno; then PTHREAD_LIBS="" PTHREAD_CFLAGS="" @@ -20009,23 +19256,23 @@ for flag in $acx_pthread_flags; do case $flag in none) - { echo "$as_me:$LINENO: checking whether pthreads work without any flags" >&5 -echo $ECHO_N "checking whether pthreads work without any flags... $ECHO_C" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether pthreads work without any flags" >&5 +$as_echo_n "checking whether pthreads work without any flags... " >&6; } ;; -*) - { echo "$as_me:$LINENO: checking whether pthreads work with $flag" >&5 -echo $ECHO_N "checking whether pthreads work with $flag... $ECHO_C" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether pthreads work with $flag" >&5 +$as_echo_n "checking whether pthreads work with $flag... " >&6; } PTHREAD_CFLAGS="$flag" ;; pthread-config) # Extract the first word of "pthread-config", so it can be a program name with args. set dummy pthread-config; ac_word=$2 -{ echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } -if test "${ac_cv_prog_acx_pthread_config+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_acx_pthread_config+:} false; then : + $as_echo_n "(cached) " >&6 else if test -n "$acx_pthread_config"; then ac_cv_prog_acx_pthread_config="$acx_pthread_config" # Let the user override the test. @@ -20035,14 +19282,14 @@ for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_acx_pthread_config="yes" - echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done -done + done IFS=$as_save_IFS test -z "$ac_cv_prog_acx_pthread_config" && ac_cv_prog_acx_pthread_config="no" @@ -20050,11 +19297,11 @@ fi fi acx_pthread_config=$ac_cv_prog_acx_pthread_config if test -n "$acx_pthread_config"; then - { echo "$as_me:$LINENO: result: $acx_pthread_config" >&5 -echo "${ECHO_T}$acx_pthread_config" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $acx_pthread_config" >&5 +$as_echo "$acx_pthread_config" >&6; } else - { echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } fi @@ -20064,8 +19311,8 @@ fi ;; *) - { echo "$as_me:$LINENO: checking for the pthreads library -l$flag" >&5 -echo $ECHO_N "checking for the pthreads library -l$flag... $ECHO_C" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for the pthreads library -l$flag" >&5 +$as_echo_n "checking for the pthreads library -l$flag... " >&6; } PTHREAD_LIBS="-l$flag" ;; esac @@ -20084,11 +19331,7 @@ echo $ECHO_N "checking for the pthreads library -l$flag... $ECHO_C" >&6; } # pthread_cleanup_push because it is one of the few pthread # functions on Solaris that doesn't have a non-functional libc stub. # We try pthread_create on general principles. - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF + cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int @@ -20101,40 +19344,17 @@ pthread_t th; pthread_join(th, 0); return 0; } _ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_link") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest$ac_exeext && - $as_test_x conftest$ac_exeext; then +if ac_fn_c_try_link "$LINENO"; then : acx_pthread_ok=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - fi - -rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ - conftest$ac_exeext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext LIBS="$save_LIBS" CFLAGS="$save_CFLAGS" - { echo "$as_me:$LINENO: result: $acx_pthread_ok" >&5 -echo "${ECHO_T}$acx_pthread_ok" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $acx_pthread_ok" >&5 +$as_echo "$acx_pthread_ok" >&6; } if test "x$acx_pthread_ok" = xyes; then break; fi @@ -20152,15 +19372,11 @@ if test "x$acx_pthread_ok" = xyes; then CFLAGS="$CFLAGS $PTHREAD_CFLAGS" # Detect AIX lossage: JOINABLE attribute is called UNDETACHED. - { echo "$as_me:$LINENO: checking for joinable pthread attribute" >&5 -echo $ECHO_N "checking for joinable pthread attribute... $ECHO_C" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for joinable pthread attribute" >&5 +$as_echo_n "checking for joinable pthread attribute... " >&6; } attr_name=unknown for attr in PTHREAD_CREATE_JOINABLE PTHREAD_CREATE_UNDETACHED; do - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF + cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int @@ -20171,37 +19387,14 @@ int attr=$attr; return attr; return 0; } _ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_link") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest$ac_exeext && - $as_test_x conftest$ac_exeext; then +if ac_fn_c_try_link "$LINENO"; then : attr_name=$attr; break -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - fi - -rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ - conftest$ac_exeext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext done - { echo "$as_me:$LINENO: result: $attr_name" >&5 -echo "${ECHO_T}$attr_name" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $attr_name" >&5 +$as_echo "$attr_name" >&6; } if test "$attr_name" != PTHREAD_CREATE_JOINABLE; then cat >>confdefs.h <<_ACEOF @@ -20210,15 +19403,15 @@ _ACEOF fi - { echo "$as_me:$LINENO: checking if more special flags are required for pthreads" >&5 -echo $ECHO_N "checking if more special flags are required for pthreads... $ECHO_C" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if more special flags are required for pthreads" >&5 +$as_echo_n "checking if more special flags are required for pthreads... " >&6; } flag=no case "${host_cpu}-${host_os}" in *-aix* | *-freebsd* | *-darwin*) flag="-D_THREAD_SAFE";; *solaris* | *-osf* | *-hpux*) flag="-D_REENTRANT";; esac - { echo "$as_me:$LINENO: result: ${flag}" >&5 -echo "${ECHO_T}${flag}" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: ${flag}" >&5 +$as_echo "${flag}" >&6; } if test "x$flag" != xno; then PTHREAD_CFLAGS="$flag $PTHREAD_CFLAGS" fi @@ -20231,10 +19424,10 @@ echo "${ECHO_T}${flag}" >&6; } do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 -{ echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } -if test "${ac_cv_prog_PTHREAD_CC+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_PTHREAD_CC+:} false; then : + $as_echo_n "(cached) " >&6 else if test -n "$PTHREAD_CC"; then ac_cv_prog_PTHREAD_CC="$PTHREAD_CC" # Let the user override the test. @@ -20244,25 +19437,25 @@ for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_PTHREAD_CC="$ac_prog" - echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done -done + done IFS=$as_save_IFS fi fi PTHREAD_CC=$ac_cv_prog_PTHREAD_CC if test -n "$PTHREAD_CC"; then - { echo "$as_me:$LINENO: result: $PTHREAD_CC" >&5 -echo "${ECHO_T}$PTHREAD_CC" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PTHREAD_CC" >&5 +$as_echo "$PTHREAD_CC" >&6; } else - { echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } fi @@ -20306,13 +19499,9 @@ test -n "$PTHREAD_CC" || PTHREAD_CC="${CC}" # compiler. If not (and OS X's ld, for instance, does not accept -z), # then we can't do this test. if test x"$done" = xno; then - { echo "$as_me:$LINENO: checking whether to check for GCC pthread/shared inconsistencies" >&5 -echo $ECHO_N "checking whether to check for GCC pthread/shared inconsistencies... $ECHO_C" >&6; } - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to check for GCC pthread/shared inconsistencies" >&5 +$as_echo_n "checking whether to check for GCC pthread/shared inconsistencies... " >&6; } + cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int @@ -20323,52 +19512,27 @@ main () return 0; } _ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_link") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest$ac_exeext && - $as_test_x conftest$ac_exeext; then - : -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 +if ac_fn_c_try_link "$LINENO"; then : - done=yes +else + done=yes fi - -rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ - conftest$ac_exeext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext if test "x$done" = xyes ; then - { echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } else - { echo "$as_me:$LINENO: result: yes" >&5 -echo "${ECHO_T}yes" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } fi fi if test x"$done" = xno; then - { echo "$as_me:$LINENO: checking whether -pthread is sufficient with -shared" >&5 -echo $ECHO_N "checking whether -pthread is sufficient with -shared... $ECHO_C" >&6; } - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether -pthread is sufficient with -shared" >&5 +$as_echo_n "checking whether -pthread is sufficient with -shared... " >&6; } + cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int @@ -20381,41 +19545,18 @@ pthread_t th; pthread_join(th, 0); return 0; } _ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_link") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest$ac_exeext && - $as_test_x conftest$ac_exeext; then +if ac_fn_c_try_link "$LINENO"; then : done=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - fi - -rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ - conftest$ac_exeext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext if test "x$done" = xyes; then - { echo "$as_me:$LINENO: result: yes" >&5 -echo "${ECHO_T}yes" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } else - { echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } fi fi @@ -20424,14 +19565,10 @@ echo "${ECHO_T}no" >&6; } # about -lpthread # if test x"$done" = xno; then - { echo "$as_me:$LINENO: checking whether -lpthread fixes that" >&5 -echo $ECHO_N "checking whether -lpthread fixes that... $ECHO_C" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether -lpthread fixes that" >&5 +$as_echo_n "checking whether -lpthread fixes that... " >&6; } LIBS="-lpthread $PTHREAD_LIBS $save_LIBS" - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF + cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int @@ -20444,56 +19581,29 @@ pthread_t th; pthread_join(th, 0); return 0; } _ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_link") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest$ac_exeext && - $as_test_x conftest$ac_exeext; then +if ac_fn_c_try_link "$LINENO"; then : done=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - fi - -rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ - conftest$ac_exeext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext if test "x$done" = xyes; then - { echo "$as_me:$LINENO: result: yes" >&5 -echo "${ECHO_T}yes" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } PTHREAD_LIBS="-lpthread $PTHREAD_LIBS" else - { echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } fi fi # # FreeBSD 4.10 gcc forgets to use -lc_r instead of -lc # if test x"$done" = xno; then - { echo "$as_me:$LINENO: checking whether -lc_r fixes that" >&5 -echo $ECHO_N "checking whether -lc_r fixes that... $ECHO_C" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether -lc_r fixes that" >&5 +$as_echo_n "checking whether -lc_r fixes that... " >&6; } LIBS="-lc_r $PTHREAD_LIBS $save_LIBS" - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF + cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int @@ -20506,48 +19616,25 @@ pthread_t th; pthread_join(th, 0); return 0; } _ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_link") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest$ac_exeext && - $as_test_x conftest$ac_exeext; then +if ac_fn_c_try_link "$LINENO"; then : done=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - fi - -rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ - conftest$ac_exeext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext if test "x$done" = xyes; then - { echo "$as_me:$LINENO: result: yes" >&5 -echo "${ECHO_T}yes" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } PTHREAD_LIBS="-lc_r $PTHREAD_LIBS" else - { echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } fi fi if test x"$done" = xno; then # OK, we have run out of ideas - { echo "$as_me:$LINENO: WARNING: Impossible to determine how to use pthreads with shared libraries" >&5 -echo "$as_me: WARNING: Impossible to determine how to use pthreads with shared libraries" >&2;} + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Impossible to determine how to use pthreads with shared libraries" >&5 +$as_echo "$as_me: WARNING: Impossible to determine how to use pthreads with shared libraries" >&2;} # so it's not safe to assume that we may use pthreads acx_pthread_ok=no @@ -20567,21 +19654,17 @@ fi # Finally, execute ACTION-IF-FOUND/ACTION-IF-NOT-FOUND: if test x"$acx_pthread_ok" = xyes; then -cat >>confdefs.h <<\_ACEOF -#define HAVE_PTHREAD 1 -_ACEOF +$as_echo "#define HAVE_PTHREAD 1" >>confdefs.h : else acx_pthread_ok=no - if test "x$with_pthreads" != "xcheck"; then - { { echo "$as_me:$LINENO: error: --with-pthreads was specified, but unable to be used -See \`config.log' for more details." >&5 -echo "$as_me: error: --with-pthreads was specified, but unable to be used -See \`config.log' for more details." >&2;} - { (exit 1); exit 1; }; } + if test "x$with_pthreads" != "xcheck"; then : + { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error $? "--with-pthreads was specified, but unable to be used +See \`config.log' for more details" "$LINENO" 5; } fi - fi ac_ext=cpp ac_cpp='$CXXCPP $CPPFLAGS' @@ -20592,7 +19675,6 @@ ac_compiler_gnu=$ac_cv_cxx_compiler_gnu have_pthreads="$acx_pthread_ok" fi - if test "x$have_pthreads" == "xyes"; then HAVE_PTHREADS_TRUE= HAVE_PTHREADS_FALSE='#' @@ -20637,12 +19719,13 @@ _ACEOF case $ac_val in #( *${as_nl}*) case $ac_var in #( - *_cv_*) { echo "$as_me:$LINENO: WARNING: Cache variable $ac_var contains a newline." >&5 -echo "$as_me: WARNING: Cache variable $ac_var contains a newline." >&2;} ;; + *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5 +$as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; esac case $ac_var in #( _ | IFS | as_nl) ;; #( - *) $as_unset $ac_var ;; + BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #( + *) { eval $ac_var=; unset $ac_var;} ;; esac ;; esac done @@ -20650,8 +19733,8 @@ echo "$as_me: WARNING: Cache variable $ac_var contains a newline." >&2;} ;; (set) 2>&1 | case $as_nl`(ac_space=' '; set) 2>&1` in #( *${as_nl}ac_space=\ *) - # `set' does not quote correctly, so add quotes (double-quote - # substitution turns \\\\ into \\, and sed turns \\ into \). + # `set' does not quote correctly, so add quotes: double-quote + # substitution turns \\\\ into \\, and sed turns \\ into \. sed -n \ "s/'/'\\\\''/g; s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p" @@ -20673,13 +19756,24 @@ echo "$as_me: WARNING: Cache variable $ac_var contains a newline." >&2;} ;; :end' >>confcache if diff "$cache_file" confcache >/dev/null 2>&1; then :; else if test -w "$cache_file"; then - test "x$cache_file" != "x/dev/null" && - { echo "$as_me:$LINENO: updating cache $cache_file" >&5 -echo "$as_me: updating cache $cache_file" >&6;} - cat confcache >$cache_file + if test "x$cache_file" != "x/dev/null"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: updating cache $cache_file" >&5 +$as_echo "$as_me: updating cache $cache_file" >&6;} + if test ! -f "$cache_file" || test -h "$cache_file"; then + cat confcache >"$cache_file" + else + case $cache_file in #( + */* | ?:*) + mv -f confcache "$cache_file"$$ && + mv -f "$cache_file"$$ "$cache_file" ;; #( + *) + mv -f confcache "$cache_file" ;; + esac + fi + fi else - { echo "$as_me:$LINENO: not updating unwritable cache $cache_file" >&5 -echo "$as_me: not updating unwritable cache $cache_file" >&6;} + { $as_echo "$as_me:${as_lineno-$LINENO}: not updating unwritable cache $cache_file" >&5 +$as_echo "$as_me: not updating unwritable cache $cache_file" >&6;} fi fi rm -f confcache @@ -20692,14 +19786,15 @@ DEFS=-DHAVE_CONFIG_H ac_libobjs= ac_ltlibobjs= +U= for ac_i in : $LIBOBJS; do test "x$ac_i" = x: && continue # 1. Remove the extension, and $U if already installed. ac_script='s/\$U\././;s/\.o$//;s/\.obj$//' - ac_i=`echo "$ac_i" | sed "$ac_script"` + ac_i=`$as_echo "$ac_i" | sed "$ac_script"` # 2. Prepend LIBOBJDIR. When used with automake>=1.10 LIBOBJDIR # will be set to the directory where LIBOBJS objects are built. - ac_libobjs="$ac_libobjs \${LIBOBJDIR}$ac_i\$U.$ac_objext" - ac_ltlibobjs="$ac_ltlibobjs \${LIBOBJDIR}$ac_i"'$U.lo' + as_fn_append ac_libobjs " \${LIBOBJDIR}$ac_i\$U.$ac_objext" + as_fn_append ac_ltlibobjs " \${LIBOBJDIR}$ac_i"'$U.lo' done LIBOBJS=$ac_libobjs @@ -20707,47 +19802,34 @@ LTLIBOBJS=$ac_ltlibobjs if test -z "${AMDEP_TRUE}" && test -z "${AMDEP_FALSE}"; then - { { echo "$as_me:$LINENO: error: conditional \"AMDEP\" was never defined. -Usually this means the macro was only invoked conditionally." >&5 -echo "$as_me: error: conditional \"AMDEP\" was never defined. -Usually this means the macro was only invoked conditionally." >&2;} - { (exit 1); exit 1; }; } + as_fn_error $? "conditional \"AMDEP\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${am__fastdepCC_TRUE}" && test -z "${am__fastdepCC_FALSE}"; then - { { echo "$as_me:$LINENO: error: conditional \"am__fastdepCC\" was never defined. -Usually this means the macro was only invoked conditionally." >&5 -echo "$as_me: error: conditional \"am__fastdepCC\" was never defined. -Usually this means the macro was only invoked conditionally." >&2;} - { (exit 1); exit 1; }; } + as_fn_error $? "conditional \"am__fastdepCC\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${am__fastdepCXX_TRUE}" && test -z "${am__fastdepCXX_FALSE}"; then - { { echo "$as_me:$LINENO: error: conditional \"am__fastdepCXX\" was never defined. -Usually this means the macro was only invoked conditionally." >&5 -echo "$as_me: error: conditional \"am__fastdepCXX\" was never defined. -Usually this means the macro was only invoked conditionally." >&2;} - { (exit 1); exit 1; }; } + as_fn_error $? "conditional \"am__fastdepCXX\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${HAVE_PYTHON_TRUE}" && test -z "${HAVE_PYTHON_FALSE}"; then - { { echo "$as_me:$LINENO: error: conditional \"HAVE_PYTHON\" was never defined. -Usually this means the macro was only invoked conditionally." >&5 -echo "$as_me: error: conditional \"HAVE_PYTHON\" was never defined. -Usually this means the macro was only invoked conditionally." >&2;} - { (exit 1); exit 1; }; } + as_fn_error $? "conditional \"HAVE_PYTHON\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${HAVE_PTHREADS_TRUE}" && test -z "${HAVE_PTHREADS_FALSE}"; then - { { echo "$as_me:$LINENO: error: conditional \"HAVE_PTHREADS\" was never defined. -Usually this means the macro was only invoked conditionally." >&5 -echo "$as_me: error: conditional \"HAVE_PTHREADS\" was never defined. -Usually this means the macro was only invoked conditionally." >&2;} - { (exit 1); exit 1; }; } + as_fn_error $? "conditional \"HAVE_PTHREADS\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi -: ${CONFIG_STATUS=./config.status} +: "${CONFIG_STATUS=./config.status}" +ac_write_fail=0 ac_clean_files_save=$ac_clean_files ac_clean_files="$ac_clean_files $CONFIG_STATUS" -{ echo "$as_me:$LINENO: creating $CONFIG_STATUS" >&5 -echo "$as_me: creating $CONFIG_STATUS" >&6;} -cat >$CONFIG_STATUS <<_ACEOF +{ $as_echo "$as_me:${as_lineno-$LINENO}: creating $CONFIG_STATUS" >&5 +$as_echo "$as_me: creating $CONFIG_STATUS" >&6;} +as_write_fail=0 +cat >$CONFIG_STATUS <<_ASEOF || as_write_fail=1 #! $SHELL # Generated by $as_me. # Run this file to recreate the current configuration. @@ -20757,59 +19839,79 @@ cat >$CONFIG_STATUS <<_ACEOF debug=false ac_cs_recheck=false ac_cs_silent=false -SHELL=\${CONFIG_SHELL-$SHELL} -_ACEOF -cat >>$CONFIG_STATUS <<\_ACEOF -## --------------------- ## -## M4sh Initialization. ## -## --------------------- ## +SHELL=\${CONFIG_SHELL-$SHELL} +export SHELL +_ASEOF +cat >>$CONFIG_STATUS <<\_ASEOF || as_write_fail=1 +## -------------------- ## +## M4sh Initialization. ## +## -------------------- ## # Be more Bourne compatible DUALCASE=1; export DUALCASE # for MKS sh -if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then +if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then : emulate sh NULLCMD=: - # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which + # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which # is contrary to our usage. Disable this feature. alias -g '${1+"$@"}'='"$@"' setopt NO_GLOB_SUBST else - case `(set -o) 2>/dev/null` in - *posix*) set -o posix ;; + case `(set -o) 2>/dev/null` in #( + *posix*) : + set -o posix ;; #( + *) : + ;; esac - fi - - -# PATH needs CR -# Avoid depending upon Character Ranges. -as_cr_letters='abcdefghijklmnopqrstuvwxyz' -as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' -as_cr_Letters=$as_cr_letters$as_cr_LETTERS -as_cr_digits='0123456789' -as_cr_alnum=$as_cr_Letters$as_cr_digits - -# The user is always right. -if test "${PATH_SEPARATOR+set}" != set; then - echo "#! /bin/sh" >conf$$.sh - echo "exit 0" >>conf$$.sh - chmod +x conf$$.sh - if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then - PATH_SEPARATOR=';' +as_nl=' +' +export as_nl +# Printing a long string crashes Solaris 7 /usr/bin/printf. +as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' +as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo +as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo +# Prefer a ksh shell builtin over an external printf program on Solaris, +# but without wasting forks for bash or zsh. +if test -z "$BASH_VERSION$ZSH_VERSION" \ + && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then + as_echo='print -r --' + as_echo_n='print -rn --' +elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then + as_echo='printf %s\n' + as_echo_n='printf %s' +else + if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then + as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"' + as_echo_n='/usr/ucb/echo -n' else - PATH_SEPARATOR=: + as_echo_body='eval expr "X$1" : "X\\(.*\\)"' + as_echo_n_body='eval + arg=$1; + case $arg in #( + *"$as_nl"*) + expr "X$arg" : "X\\(.*\\)$as_nl"; + arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;; + esac; + expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl" + ' + export as_echo_n_body + as_echo_n='sh -c $as_echo_n_body as_echo' fi - rm -f conf$$.sh + export as_echo_body + as_echo='sh -c $as_echo_body as_echo' fi -# Support unset when possible. -if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then - as_unset=unset -else - as_unset=false +# The user is always right. +if test "${PATH_SEPARATOR+set}" != set; then + PATH_SEPARATOR=: + (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { + (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || + PATH_SEPARATOR=';' + } fi @@ -20818,20 +19920,19 @@ fi # there to prevent editors from complaining about space-tab. # (If _AS_PATH_WALK were called with IFS unset, it would disable word # splitting by setting IFS to empty value.) -as_nl=' -' IFS=" "" $as_nl" # Find who we are. Look in the path if we contain no directory separator. -case $0 in +as_myself= +case $0 in #(( *[\\/]* ) as_myself=$0 ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. - test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break -done + test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break + done IFS=$as_save_IFS ;; @@ -20842,32 +19943,111 @@ if test "x$as_myself" = x; then as_myself=$0 fi if test ! -f "$as_myself"; then - echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 - { (exit 1); exit 1; } + $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 + exit 1 fi -# Work around bugs in pre-3.0 UWIN ksh. -for as_var in ENV MAIL MAILPATH -do ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var +# Unset variables that we do not need and which cause bugs (e.g. in +# pre-3.0 UWIN ksh). But do not cause bugs in bash 2.01; the "|| exit 1" +# suppresses any "Segmentation fault" message there. '((' could +# trigger a bug in pdksh 5.2.14. +for as_var in BASH_ENV ENV MAIL MAILPATH +do eval test x\${$as_var+set} = xset \ + && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : done PS1='$ ' PS2='> ' PS4='+ ' # NLS nuisances. -for as_var in \ - LANG LANGUAGE LC_ADDRESS LC_ALL LC_COLLATE LC_CTYPE LC_IDENTIFICATION \ - LC_MEASUREMENT LC_MESSAGES LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER \ - LC_TELEPHONE LC_TIME -do - if (set +x; test -z "`(eval $as_var=C; export $as_var) 2>&1`"); then - eval $as_var=C; export $as_var - else - ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var +LC_ALL=C +export LC_ALL +LANGUAGE=C +export LANGUAGE + +# CDPATH. +(unset CDPATH) >/dev/null 2>&1 && unset CDPATH + + +# as_fn_error STATUS ERROR [LINENO LOG_FD] +# ---------------------------------------- +# Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are +# provided, also output the error to LOG_FD, referencing LINENO. Then exit the +# script with STATUS, using 1 if that was 0. +as_fn_error () +{ + as_status=$1; test $as_status -eq 0 && as_status=1 + if test "$4"; then + as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4 fi -done + $as_echo "$as_me: error: $2" >&2 + as_fn_exit $as_status +} # as_fn_error + + +# as_fn_set_status STATUS +# ----------------------- +# Set $? to STATUS, without forking. +as_fn_set_status () +{ + return $1 +} # as_fn_set_status + +# as_fn_exit STATUS +# ----------------- +# Exit the shell with STATUS, even in a "trap 0" or "set -e" context. +as_fn_exit () +{ + set +e + as_fn_set_status $1 + exit $1 +} # as_fn_exit + +# as_fn_unset VAR +# --------------- +# Portably unset VAR. +as_fn_unset () +{ + { eval $1=; unset $1;} +} +as_unset=as_fn_unset +# as_fn_append VAR VALUE +# ---------------------- +# Append the text in VALUE to the end of the definition contained in VAR. Take +# advantage of any shell optimizations that allow amortized linear growth over +# repeated appends, instead of the typical quadratic growth present in naive +# implementations. +if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then : + eval 'as_fn_append () + { + eval $1+=\$2 + }' +else + as_fn_append () + { + eval $1=\$$1\$2 + } +fi # as_fn_append + +# as_fn_arith ARG... +# ------------------ +# Perform arithmetic evaluation on the ARGs, and store the result in the +# global $as_val. Take advantage of shells that can avoid forks. The arguments +# must be portable across $(()) and expr. +if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then : + eval 'as_fn_arith () + { + as_val=$(( $* )) + }' +else + as_fn_arith () + { + as_val=`expr "$@" || test $? -eq 1` + } +fi # as_fn_arith + -# Required to use basename. if expr a : '\(a\)' >/dev/null 2>&1 && test "X`expr 00001 : '.*\(...\)'`" = X001; then as_expr=expr @@ -20881,13 +20061,17 @@ else as_basename=false fi - -# Name of the executable. +if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then + as_dirname=dirname +else + as_dirname=false +fi + as_me=`$as_basename -- "$0" || $as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ X"$0" : 'X\(//\)$' \| \ X"$0" : 'X\(/\)' \| . 2>/dev/null || -echo X/"$0" | +$as_echo X/"$0" | sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/ q @@ -20902,131 +20086,118 @@ echo X/"$0" | } s/.*/./; q'` -# CDPATH. -$as_unset CDPATH - - - - as_lineno_1=$LINENO - as_lineno_2=$LINENO - test "x$as_lineno_1" != "x$as_lineno_2" && - test "x`expr $as_lineno_1 + 1`" = "x$as_lineno_2" || { - - # Create $as_me.lineno as a copy of $as_myself, but with $LINENO - # uniformly replaced by the line number. The first 'sed' inserts a - # line-number line after each line using $LINENO; the second 'sed' - # does the real work. The second script uses 'N' to pair each - # line-number line with the line containing $LINENO, and appends - # trailing '-' during substitution so that $LINENO is not a special - # case at line end. - # (Raja R Harinath suggested sed '=', and Paul Eggert wrote the - # scripts with optimization help from Paolo Bonzini. Blame Lee - # E. McMahon (1931-1989) for sed's syntax. :-) - sed -n ' - p - /[$]LINENO/= - ' <$as_myself | - sed ' - s/[$]LINENO.*/&-/ - t lineno - b - :lineno - N - :loop - s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/ - t loop - s/-\n.*// - ' >$as_me.lineno && - chmod +x "$as_me.lineno" || - { echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2 - { (exit 1); exit 1; }; } - - # Don't try to exec as it changes $[0], causing all sort of problems - # (the dirname of $[0] is not the place where we might find the - # original and so on. Autoconf is especially sensitive to this). - . "./$as_me.lineno" - # Exit status is that of the last command. - exit -} - - -if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then - as_dirname=dirname -else - as_dirname=false -fi +# Avoid depending upon Character Ranges. +as_cr_letters='abcdefghijklmnopqrstuvwxyz' +as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' +as_cr_Letters=$as_cr_letters$as_cr_LETTERS +as_cr_digits='0123456789' +as_cr_alnum=$as_cr_Letters$as_cr_digits ECHO_C= ECHO_N= ECHO_T= -case `echo -n x` in +case `echo -n x` in #((((( -n*) - case `echo 'x\c'` in + case `echo 'xy\c'` in *c*) ECHO_T=' ';; # ECHO_T is single tab character. - *) ECHO_C='\c';; + xy) ECHO_C='\c';; + *) echo `echo ksh88 bug on AIX 6.1` > /dev/null + ECHO_T=' ';; esac;; *) ECHO_N='-n';; esac -if expr a : '\(a\)' >/dev/null 2>&1 && - test "X`expr 00001 : '.*\(...\)'`" = X001; then - as_expr=expr -else - as_expr=false -fi - rm -f conf$$ conf$$.exe conf$$.file if test -d conf$$.dir; then rm -f conf$$.dir/conf$$.file else rm -f conf$$.dir - mkdir conf$$.dir -fi -echo >conf$$.file -if ln -s conf$$.file conf$$ 2>/dev/null; then - as_ln_s='ln -s' - # ... but there are two gotchas: - # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. - # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. - # In both cases, we have to default to `cp -p'. - ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || - as_ln_s='cp -p' -elif ln conf$$.file conf$$ 2>/dev/null; then - as_ln_s=ln -else - as_ln_s='cp -p' + mkdir conf$$.dir 2>/dev/null +fi +if (echo >conf$$.file) 2>/dev/null; then + if ln -s conf$$.file conf$$ 2>/dev/null; then + as_ln_s='ln -s' + # ... but there are two gotchas: + # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. + # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. + # In both cases, we have to default to `cp -pR'. + ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || + as_ln_s='cp -pR' + elif ln conf$$.file conf$$ 2>/dev/null; then + as_ln_s=ln + else + as_ln_s='cp -pR' + fi +else + as_ln_s='cp -pR' fi rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file rmdir conf$$.dir 2>/dev/null + +# as_fn_mkdir_p +# ------------- +# Create "$as_dir" as a directory, including parents if necessary. +as_fn_mkdir_p () +{ + + case $as_dir in #( + -*) as_dir=./$as_dir;; + esac + test -d "$as_dir" || eval $as_mkdir_p || { + as_dirs= + while :; do + case $as_dir in #( + *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( + *) as_qdir=$as_dir;; + esac + as_dirs="'$as_qdir' $as_dirs" + as_dir=`$as_dirname -- "$as_dir" || +$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$as_dir" : 'X\(//\)[^/]' \| \ + X"$as_dir" : 'X\(//\)$' \| \ + X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || +$as_echo X"$as_dir" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + test -d "$as_dir" && break + done + test -z "$as_dirs" || eval "mkdir $as_dirs" + } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir" + + +} # as_fn_mkdir_p if mkdir -p . 2>/dev/null; then - as_mkdir_p=: + as_mkdir_p='mkdir -p "$as_dir"' else test -d ./-p && rmdir ./-p as_mkdir_p=false fi -if test -x / >/dev/null 2>&1; then - as_test_x='test -x' -else - if ls -dL / >/dev/null 2>&1; then - as_ls_L_option=L - else - as_ls_L_option= - fi - as_test_x=' - eval sh -c '\'' - if test -d "$1"; then - test -d "$1/."; - else - case $1 in - -*)set "./$1";; - esac; - case `ls -ld'$as_ls_L_option' "$1" 2>/dev/null` in - ???[sx]*):;;*)false;;esac;fi - '\'' sh - ' -fi -as_executable_p=$as_test_x + +# as_fn_executable_p FILE +# ----------------------- +# Test if FILE is an executable regular file. +as_fn_executable_p () +{ + test -f "$1" && test -x "$1" +} # as_fn_executable_p +as_test_x='test -x' +as_executable_p=as_fn_executable_p # Sed expression to map a string onto a valid CPP name. as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" @@ -21036,13 +20207,19 @@ as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" exec 6>&1 +## ----------------------------------- ## +## Main body of $CONFIG_STATUS script. ## +## ----------------------------------- ## +_ASEOF +test $as_write_fail = 0 && chmod +x $CONFIG_STATUS || ac_write_fail=1 -# Save the log message, to keep $[0] and so on meaningful, and to +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +# Save the log message, to keep $0 and so on meaningful, and to # report actual input values of CONFIG_FILES etc. instead of their # values after options handling. ac_log=" This file was extended by Google C++ Testing Framework $as_me 1.5.0, which was -generated by GNU Autoconf 2.61. Invocation command line was +generated by GNU Autoconf 2.69. Invocation command line was CONFIG_FILES = $CONFIG_FILES CONFIG_HEADERS = $CONFIG_HEADERS @@ -21055,7 +20232,16 @@ on `(hostname || uname -n) 2>/dev/null | sed 1q` _ACEOF -cat >>$CONFIG_STATUS <<_ACEOF +case $ac_config_files in *" +"*) set x $ac_config_files; shift; ac_config_files=$*;; +esac + +case $ac_config_headers in *" +"*) set x $ac_config_headers; shift; ac_config_headers=$*;; +esac + + +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 # Files that config.status was made for. config_files="$ac_config_files" config_headers="$ac_config_headers" @@ -21063,22 +20249,25 @@ config_commands="$ac_config_commands" _ACEOF -cat >>$CONFIG_STATUS <<\_ACEOF +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 ac_cs_usage="\ -\`$as_me' instantiates files from templates according to the -current configuration. +\`$as_me' instantiates files and other configuration actions +from templates according to the current configuration. Unless the files +and actions are specified as TAGs, all are instantiated by default. -Usage: $0 [OPTIONS] [FILE]... +Usage: $0 [OPTION]... [TAG]... -h, --help print this help, then exit -V, --version print version number and configuration settings, then exit - -q, --quiet do not print progress messages + --config print configuration, then exit + -q, --quiet, --silent + do not print progress messages -d, --debug don't remove temporary files --recheck update $as_me by reconfiguring in the same conditions - --file=FILE[:TEMPLATE] - instantiate the configuration file FILE - --header=FILE[:TEMPLATE] - instantiate the configuration header FILE + --file=FILE[:TEMPLATE] + instantiate the configuration file FILE + --header=FILE[:TEMPLATE] + instantiate the configuration header FILE Configuration files: $config_files @@ -21089,16 +20278,17 @@ $config_headers Configuration commands: $config_commands -Report bugs to ." +Report bugs to ." _ACEOF -cat >>$CONFIG_STATUS <<_ACEOF +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 +ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`" ac_cs_version="\\ Google C++ Testing Framework config.status 1.5.0 -configured by $0, generated by GNU Autoconf 2.61, - with options \\"`echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`\\" +configured by $0, generated by GNU Autoconf 2.69, + with options \\"\$ac_cs_config\\" -Copyright (C) 2006 Free Software Foundation, Inc. +Copyright (C) 2012 Free Software Foundation, Inc. This config.status script is free software; the Free Software Foundation gives unlimited permission to copy, distribute and modify it." @@ -21106,20 +20296,26 @@ ac_pwd='$ac_pwd' srcdir='$srcdir' INSTALL='$INSTALL' MKDIR_P='$MKDIR_P' +AWK='$AWK' +test -n "\$AWK" || AWK=awk _ACEOF -cat >>$CONFIG_STATUS <<\_ACEOF -# If no file are specified by the user, then we need to provide default -# value. By we need to know if files were specified by the user. +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +# The default lists apply if the user does not specify any file. ac_need_defaults=: while test $# != 0 do case $1 in - --*=*) + --*=?*) ac_option=`expr "X$1" : 'X\([^=]*\)='` ac_optarg=`expr "X$1" : 'X[^=]*=\(.*\)'` ac_shift=: ;; + --*=) + ac_option=`expr "X$1" : 'X\([^=]*\)='` + ac_optarg= + ac_shift=: + ;; *) ac_option=$1 ac_optarg=$2 @@ -21132,34 +20328,41 @@ do -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r) ac_cs_recheck=: ;; --version | --versio | --versi | --vers | --ver | --ve | --v | -V ) - echo "$ac_cs_version"; exit ;; + $as_echo "$ac_cs_version"; exit ;; + --config | --confi | --conf | --con | --co | --c ) + $as_echo "$ac_cs_config"; exit ;; --debug | --debu | --deb | --de | --d | -d ) debug=: ;; --file | --fil | --fi | --f ) $ac_shift - CONFIG_FILES="$CONFIG_FILES $ac_optarg" + case $ac_optarg in + *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;; + '') as_fn_error $? "missing file argument" ;; + esac + as_fn_append CONFIG_FILES " '$ac_optarg'" ac_need_defaults=false;; --header | --heade | --head | --hea ) $ac_shift - CONFIG_HEADERS="$CONFIG_HEADERS $ac_optarg" + case $ac_optarg in + *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;; + esac + as_fn_append CONFIG_HEADERS " '$ac_optarg'" ac_need_defaults=false;; --he | --h) # Conflict between --help and --header - { echo "$as_me: error: ambiguous option: $1 -Try \`$0 --help' for more information." >&2 - { (exit 1); exit 1; }; };; + as_fn_error $? "ambiguous option: \`$1' +Try \`$0 --help' for more information.";; --help | --hel | -h ) - echo "$ac_cs_usage"; exit ;; + $as_echo "$ac_cs_usage"; exit ;; -q | -quiet | --quiet | --quie | --qui | --qu | --q \ | -silent | --silent | --silen | --sile | --sil | --si | --s) ac_cs_silent=: ;; # This is an error. - -*) { echo "$as_me: error: unrecognized option: $1 -Try \`$0 --help' for more information." >&2 - { (exit 1); exit 1; }; } ;; + -*) as_fn_error $? "unrecognized option: \`$1' +Try \`$0 --help' for more information." ;; - *) ac_config_targets="$ac_config_targets $1" + *) as_fn_append ac_config_targets " $1" ac_need_defaults=false ;; esac @@ -21174,27 +20377,29 @@ if $ac_cs_silent; then fi _ACEOF -cat >>$CONFIG_STATUS <<_ACEOF +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 if \$ac_cs_recheck; then - echo "running CONFIG_SHELL=$SHELL $SHELL $0 "$ac_configure_args \$ac_configure_extra_args " --no-create --no-recursion" >&6 - CONFIG_SHELL=$SHELL + set X $SHELL '$0' $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion + shift + \$as_echo "running CONFIG_SHELL=$SHELL \$*" >&6 + CONFIG_SHELL='$SHELL' export CONFIG_SHELL - exec $SHELL "$0"$ac_configure_args \$ac_configure_extra_args --no-create --no-recursion + exec "\$@" fi _ACEOF -cat >>$CONFIG_STATUS <<\_ACEOF +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 exec 5>>config.log { echo sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX ## Running $as_me. ## _ASBOX - echo "$ac_log" + $as_echo "$ac_log" } >&5 _ACEOF -cat >>$CONFIG_STATUS <<_ACEOF +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 # # INIT-COMMANDS # @@ -21202,7 +20407,7 @@ AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir" _ACEOF -cat >>$CONFIG_STATUS <<\_ACEOF +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # Handling of arguments. for ac_config_target in $ac_config_targets @@ -21213,9 +20418,7 @@ do "scripts/gtest-config") CONFIG_FILES="$CONFIG_FILES scripts/gtest-config" ;; "depfiles") CONFIG_COMMANDS="$CONFIG_COMMANDS depfiles" ;; - *) { { echo "$as_me:$LINENO: error: invalid argument: $ac_config_target" >&5 -echo "$as_me: error: invalid argument: $ac_config_target" >&2;} - { (exit 1); exit 1; }; };; + *) as_fn_error $? "invalid argument: \`$ac_config_target'" "$LINENO" 5;; esac done @@ -21238,267 +20441,302 @@ fi # after its creation but before its name has been assigned to `$tmp'. $debug || { - tmp= + tmp= ac_tmp= trap 'exit_status=$? - { test -z "$tmp" || test ! -d "$tmp" || rm -fr "$tmp"; } && exit $exit_status + : "${ac_tmp:=$tmp}" + { test ! -d "$ac_tmp" || rm -fr "$ac_tmp"; } && exit $exit_status ' 0 - trap '{ (exit 1); exit 1; }' 1 2 13 15 + trap 'as_fn_exit 1' 1 2 13 15 } # Create a (secure) tmp directory for tmp files. { tmp=`(umask 077 && mktemp -d "./confXXXXXX") 2>/dev/null` && - test -n "$tmp" && test -d "$tmp" + test -d "$tmp" } || { tmp=./conf$$-$RANDOM (umask 077 && mkdir "$tmp") -} || -{ - echo "$me: cannot create a temporary directory in ." >&2 - { (exit 1); exit 1; } -} - -# -# Set up the sed scripts for CONFIG_FILES section. -# +} || as_fn_error $? "cannot create a temporary directory in ." "$LINENO" 5 +ac_tmp=$tmp -# No need to generate the scripts if there are no CONFIG_FILES. -# This happens for instance when ./config.status config.h +# Set up the scripts for CONFIG_FILES section. +# No need to generate them if there are no CONFIG_FILES. +# This happens for instance with `./config.status config.h'. if test -n "$CONFIG_FILES"; then -_ACEOF - - - -ac_delim='%!_!# ' -for ac_last_try in false false false false false :; do - cat >conf$$subs.sed <<_ACEOF -SHELL!$SHELL$ac_delim -PATH_SEPARATOR!$PATH_SEPARATOR$ac_delim -PACKAGE_NAME!$PACKAGE_NAME$ac_delim -PACKAGE_TARNAME!$PACKAGE_TARNAME$ac_delim -PACKAGE_VERSION!$PACKAGE_VERSION$ac_delim -PACKAGE_STRING!$PACKAGE_STRING$ac_delim -PACKAGE_BUGREPORT!$PACKAGE_BUGREPORT$ac_delim -exec_prefix!$exec_prefix$ac_delim -prefix!$prefix$ac_delim -program_transform_name!$program_transform_name$ac_delim -bindir!$bindir$ac_delim -sbindir!$sbindir$ac_delim -libexecdir!$libexecdir$ac_delim -datarootdir!$datarootdir$ac_delim -datadir!$datadir$ac_delim -sysconfdir!$sysconfdir$ac_delim -sharedstatedir!$sharedstatedir$ac_delim -localstatedir!$localstatedir$ac_delim -includedir!$includedir$ac_delim -oldincludedir!$oldincludedir$ac_delim -docdir!$docdir$ac_delim -infodir!$infodir$ac_delim -htmldir!$htmldir$ac_delim -dvidir!$dvidir$ac_delim -pdfdir!$pdfdir$ac_delim -psdir!$psdir$ac_delim -libdir!$libdir$ac_delim -localedir!$localedir$ac_delim -mandir!$mandir$ac_delim -DEFS!$DEFS$ac_delim -ECHO_C!$ECHO_C$ac_delim -ECHO_N!$ECHO_N$ac_delim -ECHO_T!$ECHO_T$ac_delim -LIBS!$LIBS$ac_delim -build_alias!$build_alias$ac_delim -host_alias!$host_alias$ac_delim -target_alias!$target_alias$ac_delim -INSTALL_PROGRAM!$INSTALL_PROGRAM$ac_delim -INSTALL_SCRIPT!$INSTALL_SCRIPT$ac_delim -INSTALL_DATA!$INSTALL_DATA$ac_delim -am__isrc!$am__isrc$ac_delim -CYGPATH_W!$CYGPATH_W$ac_delim -PACKAGE!$PACKAGE$ac_delim -VERSION!$VERSION$ac_delim -ACLOCAL!$ACLOCAL$ac_delim -AUTOCONF!$AUTOCONF$ac_delim -AUTOMAKE!$AUTOMAKE$ac_delim -AUTOHEADER!$AUTOHEADER$ac_delim -MAKEINFO!$MAKEINFO$ac_delim -install_sh!$install_sh$ac_delim -STRIP!$STRIP$ac_delim -INSTALL_STRIP_PROGRAM!$INSTALL_STRIP_PROGRAM$ac_delim -mkdir_p!$mkdir_p$ac_delim -AWK!$AWK$ac_delim -SET_MAKE!$SET_MAKE$ac_delim -am__leading_dot!$am__leading_dot$ac_delim -AMTAR!$AMTAR$ac_delim -am__tar!$am__tar$ac_delim -am__untar!$am__untar$ac_delim -CC!$CC$ac_delim -CFLAGS!$CFLAGS$ac_delim -LDFLAGS!$LDFLAGS$ac_delim -CPPFLAGS!$CPPFLAGS$ac_delim -ac_ct_CC!$ac_ct_CC$ac_delim -EXEEXT!$EXEEXT$ac_delim -OBJEXT!$OBJEXT$ac_delim -DEPDIR!$DEPDIR$ac_delim -am__include!$am__include$ac_delim -am__quote!$am__quote$ac_delim -AMDEP_TRUE!$AMDEP_TRUE$ac_delim -AMDEP_FALSE!$AMDEP_FALSE$ac_delim -AMDEPBACKSLASH!$AMDEPBACKSLASH$ac_delim -CCDEPMODE!$CCDEPMODE$ac_delim -am__fastdepCC_TRUE!$am__fastdepCC_TRUE$ac_delim -am__fastdepCC_FALSE!$am__fastdepCC_FALSE$ac_delim -CXX!$CXX$ac_delim -CXXFLAGS!$CXXFLAGS$ac_delim -ac_ct_CXX!$ac_ct_CXX$ac_delim -CXXDEPMODE!$CXXDEPMODE$ac_delim -am__fastdepCXX_TRUE!$am__fastdepCXX_TRUE$ac_delim -am__fastdepCXX_FALSE!$am__fastdepCXX_FALSE$ac_delim -build!$build$ac_delim -build_cpu!$build_cpu$ac_delim -build_vendor!$build_vendor$ac_delim -build_os!$build_os$ac_delim -host!$host$ac_delim -host_cpu!$host_cpu$ac_delim -host_vendor!$host_vendor$ac_delim -host_os!$host_os$ac_delim -SED!$SED$ac_delim -GREP!$GREP$ac_delim -EGREP!$EGREP$ac_delim -LN_S!$LN_S$ac_delim -ECHO!$ECHO$ac_delim -AR!$AR$ac_delim -RANLIB!$RANLIB$ac_delim -DSYMUTIL!$DSYMUTIL$ac_delim -_ACEOF - - if test `sed -n "s/.*$ac_delim\$/X/p" conf$$subs.sed | grep -c X` = 97; then - break - elif $ac_last_try; then - { { echo "$as_me:$LINENO: error: could not make $CONFIG_STATUS" >&5 -echo "$as_me: error: could not make $CONFIG_STATUS" >&2;} - { (exit 1); exit 1; }; } - else - ac_delim="$ac_delim!$ac_delim _$ac_delim!! " - fi -done -ac_eof=`sed -n '/^CEOF[0-9]*$/s/CEOF/0/p' conf$$subs.sed` -if test -n "$ac_eof"; then - ac_eof=`echo "$ac_eof" | sort -nru | sed 1q` - ac_eof=`expr $ac_eof + 1` +ac_cr=`echo X | tr X '\015'` +# On cygwin, bash can eat \r inside `` if the user requested igncr. +# But we know of no other shell where ac_cr would be empty at this +# point, so we can use a bashism as a fallback. +if test "x$ac_cr" = x; then + eval ac_cr=\$\'\\r\' +fi +ac_cs_awk_cr=`$AWK 'BEGIN { print "a\rb" }' /dev/null` +if test "$ac_cs_awk_cr" = "a${ac_cr}b"; then + ac_cs_awk_cr='\\r' +else + ac_cs_awk_cr=$ac_cr fi -cat >>$CONFIG_STATUS <<_ACEOF -cat >"\$tmp/subs-1.sed" <<\CEOF$ac_eof -/@[a-zA-Z_][a-zA-Z_0-9]*@/!b -_ACEOF -sed ' -s/[,\\&]/\\&/g; s/@/@|#_!!_#|/g -s/^/s,@/; s/!/@,|#_!!_#|/ -:n -t n -s/'"$ac_delim"'$/,g/; t -s/$/\\/; p -N; s/^.*\n//; s/[,\\&]/\\&/g; s/@/@|#_!!_#|/g; b n -' >>$CONFIG_STATUS >$CONFIG_STATUS <<_ACEOF -CEOF$ac_eof +echo 'BEGIN {' >"$ac_tmp/subs1.awk" && _ACEOF +{ + echo "cat >conf$$subs.awk <<_ACEOF" && + echo "$ac_subst_vars" | sed 's/.*/&!$&$ac_delim/' && + echo "_ACEOF" +} >conf$$subs.sh || + as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 +ac_delim_num=`echo "$ac_subst_vars" | grep -c '^'` ac_delim='%!_!# ' for ac_last_try in false false false false false :; do - cat >conf$$subs.sed <<_ACEOF -NMEDIT!$NMEDIT$ac_delim -CPP!$CPP$ac_delim -CXXCPP!$CXXCPP$ac_delim -F77!$F77$ac_delim -FFLAGS!$FFLAGS$ac_delim -ac_ct_F77!$ac_ct_F77$ac_delim -LIBTOOL!$LIBTOOL$ac_delim -PYTHON!$PYTHON$ac_delim -HAVE_PYTHON_TRUE!$HAVE_PYTHON_TRUE$ac_delim -HAVE_PYTHON_FALSE!$HAVE_PYTHON_FALSE$ac_delim -acx_pthread_config!$acx_pthread_config$ac_delim -PTHREAD_CC!$PTHREAD_CC$ac_delim -PTHREAD_LIBS!$PTHREAD_LIBS$ac_delim -PTHREAD_CFLAGS!$PTHREAD_CFLAGS$ac_delim -HAVE_PTHREADS_TRUE!$HAVE_PTHREADS_TRUE$ac_delim -HAVE_PTHREADS_FALSE!$HAVE_PTHREADS_FALSE$ac_delim -LIBOBJS!$LIBOBJS$ac_delim -LTLIBOBJS!$LTLIBOBJS$ac_delim -_ACEOF + . ./conf$$subs.sh || + as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 - if test `sed -n "s/.*$ac_delim\$/X/p" conf$$subs.sed | grep -c X` = 18; then + ac_delim_n=`sed -n "s/.*$ac_delim\$/X/p" conf$$subs.awk | grep -c X` + if test $ac_delim_n = $ac_delim_num; then break elif $ac_last_try; then - { { echo "$as_me:$LINENO: error: could not make $CONFIG_STATUS" >&5 -echo "$as_me: error: could not make $CONFIG_STATUS" >&2;} - { (exit 1); exit 1; }; } + as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 else ac_delim="$ac_delim!$ac_delim _$ac_delim!! " fi done +rm -f conf$$subs.sh -ac_eof=`sed -n '/^CEOF[0-9]*$/s/CEOF/0/p' conf$$subs.sed` -if test -n "$ac_eof"; then - ac_eof=`echo "$ac_eof" | sort -nru | sed 1q` - ac_eof=`expr $ac_eof + 1` -fi +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 +cat >>"\$ac_tmp/subs1.awk" <<\\_ACAWK && +_ACEOF +sed -n ' +h +s/^/S["/; s/!.*/"]=/ +p +g +s/^[^!]*!// +:repl +t repl +s/'"$ac_delim"'$// +t delim +:nl +h +s/\(.\{148\}\)..*/\1/ +t more1 +s/["\\]/\\&/g; s/^/"/; s/$/\\n"\\/ +p +n +b repl +:more1 +s/["\\]/\\&/g; s/^/"/; s/$/"\\/ +p +g +s/.\{148\}// +t nl +:delim +h +s/\(.\{148\}\)..*/\1/ +t more2 +s/["\\]/\\&/g; s/^/"/; s/$/"/ +p +b +:more2 +s/["\\]/\\&/g; s/^/"/; s/$/"\\/ +p +g +s/.\{148\}// +t delim +' >$CONFIG_STATUS || ac_write_fail=1 +rm -f conf$$subs.awk +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 +_ACAWK +cat >>"\$ac_tmp/subs1.awk" <<_ACAWK && + for (key in S) S_is_set[key] = 1 + FS = "" + +} +{ + line = $ 0 + nfields = split(line, field, "@") + substed = 0 + len = length(field[1]) + for (i = 2; i < nfields; i++) { + key = field[i] + keylen = length(key) + if (S_is_set[key]) { + value = S[key] + line = substr(line, 1, len) "" value "" substr(line, len + keylen + 3) + len += length(value) + length(field[++i]) + substed = 1 + } else + len += 1 + keylen + } + + print line +} -cat >>$CONFIG_STATUS <<_ACEOF -cat >"\$tmp/subs-2.sed" <<\CEOF$ac_eof -/@[a-zA-Z_][a-zA-Z_0-9]*@/!b end +_ACAWK _ACEOF -sed ' -s/[,\\&]/\\&/g; s/@/@|#_!!_#|/g -s/^/s,@/; s/!/@,|#_!!_#|/ -:n -t n -s/'"$ac_delim"'$/,g/; t -s/$/\\/; p -N; s/^.*\n//; s/[,\\&]/\\&/g; s/@/@|#_!!_#|/g; b n -' >>$CONFIG_STATUS >$CONFIG_STATUS <<_ACEOF -:end -s/|#_!!_#|//g -CEOF$ac_eof +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +if sed "s/$ac_cr//" < /dev/null > /dev/null 2>&1; then + sed "s/$ac_cr\$//; s/$ac_cr/$ac_cs_awk_cr/g" +else + cat +fi < "$ac_tmp/subs1.awk" > "$ac_tmp/subs.awk" \ + || as_fn_error $? "could not setup config files machinery" "$LINENO" 5 _ACEOF - -# VPATH may cause trouble with some makes, so we remove $(srcdir), -# ${srcdir} and @srcdir@ from VPATH if srcdir is ".", strip leading and +# VPATH may cause trouble with some makes, so we remove sole $(srcdir), +# ${srcdir} and @srcdir@ entries from VPATH if srcdir is ".", strip leading and # trailing colons and then remove the whole line if VPATH becomes empty # (actually we leave an empty line to preserve line numbers). if test "x$srcdir" = x.; then - ac_vpsub='/^[ ]*VPATH[ ]*=/{ -s/:*\$(srcdir):*/:/ -s/:*\${srcdir}:*/:/ -s/:*@srcdir@:*/:/ -s/^\([^=]*=[ ]*\):*/\1/ + ac_vpsub='/^[ ]*VPATH[ ]*=[ ]*/{ +h +s/// +s/^/:/ +s/[ ]*$/:/ +s/:\$(srcdir):/:/g +s/:\${srcdir}:/:/g +s/:@srcdir@:/:/g +s/^:*// s/:*$// +x +s/\(=[ ]*\).*/\1/ +G +s/\n// s/^[^=]*=[ ]*$// }' fi -cat >>$CONFIG_STATUS <<\_ACEOF +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 fi # test -n "$CONFIG_FILES" +# Set up the scripts for CONFIG_HEADERS section. +# No need to generate them if there are no CONFIG_HEADERS. +# This happens for instance with `./config.status Makefile'. +if test -n "$CONFIG_HEADERS"; then +cat >"$ac_tmp/defines.awk" <<\_ACAWK || +BEGIN { +_ACEOF + +# Transform confdefs.h into an awk script `defines.awk', embedded as +# here-document in config.status, that substitutes the proper values into +# config.h.in to produce config.h. + +# Create a delimiter string that does not exist in confdefs.h, to ease +# handling of long lines. +ac_delim='%!_!# ' +for ac_last_try in false false :; do + ac_tt=`sed -n "/$ac_delim/p" confdefs.h` + if test -z "$ac_tt"; then + break + elif $ac_last_try; then + as_fn_error $? "could not make $CONFIG_HEADERS" "$LINENO" 5 + else + ac_delim="$ac_delim!$ac_delim _$ac_delim!! " + fi +done + +# For the awk script, D is an array of macro values keyed by name, +# likewise P contains macro parameters if any. Preserve backslash +# newline sequences. -for ac_tag in :F $CONFIG_FILES :H $CONFIG_HEADERS :C $CONFIG_COMMANDS +ac_word_re=[_$as_cr_Letters][_$as_cr_alnum]* +sed -n ' +s/.\{148\}/&'"$ac_delim"'/g +t rset +:rset +s/^[ ]*#[ ]*define[ ][ ]*/ / +t def +d +:def +s/\\$// +t bsnl +s/["\\]/\\&/g +s/^ \('"$ac_word_re"'\)\(([^()]*)\)[ ]*\(.*\)/P["\1"]="\2"\ +D["\1"]=" \3"/p +s/^ \('"$ac_word_re"'\)[ ]*\(.*\)/D["\1"]=" \2"/p +d +:bsnl +s/["\\]/\\&/g +s/^ \('"$ac_word_re"'\)\(([^()]*)\)[ ]*\(.*\)/P["\1"]="\2"\ +D["\1"]=" \3\\\\\\n"\\/p +t cont +s/^ \('"$ac_word_re"'\)[ ]*\(.*\)/D["\1"]=" \2\\\\\\n"\\/p +t cont +d +:cont +n +s/.\{148\}/&'"$ac_delim"'/g +t clear +:clear +s/\\$// +t bsnlc +s/["\\]/\\&/g; s/^/"/; s/$/"/p +d +:bsnlc +s/["\\]/\\&/g; s/^/"/; s/$/\\\\\\n"\\/p +b cont +' >$CONFIG_STATUS || ac_write_fail=1 + +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 + for (key in D) D_is_set[key] = 1 + FS = "" +} +/^[\t ]*#[\t ]*(define|undef)[\t ]+$ac_word_re([\t (]|\$)/ { + line = \$ 0 + split(line, arg, " ") + if (arg[1] == "#") { + defundef = arg[2] + mac1 = arg[3] + } else { + defundef = substr(arg[1], 2) + mac1 = arg[2] + } + split(mac1, mac2, "(") #) + macro = mac2[1] + prefix = substr(line, 1, index(line, defundef) - 1) + if (D_is_set[macro]) { + # Preserve the white space surrounding the "#". + print prefix "define", macro P[macro] D[macro] + next + } else { + # Replace #undef with comments. This is necessary, for example, + # in the case of _POSIX_SOURCE, which is predefined and required + # on some systems where configure will not decide to define it. + if (defundef == "undef") { + print "/*", prefix defundef, macro, "*/" + next + } + } +} +{ print } +_ACAWK +_ACEOF +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 + as_fn_error $? "could not setup config headers machinery" "$LINENO" 5 +fi # test -n "$CONFIG_HEADERS" + + +eval set X " :F $CONFIG_FILES :H $CONFIG_HEADERS :C $CONFIG_COMMANDS" +shift +for ac_tag do case $ac_tag in :[FHLC]) ac_mode=$ac_tag; continue;; esac case $ac_mode$ac_tag in :[FHL]*:*);; - :L* | :C*:*) { { echo "$as_me:$LINENO: error: Invalid tag $ac_tag." >&5 -echo "$as_me: error: Invalid tag $ac_tag." >&2;} - { (exit 1); exit 1; }; };; + :L* | :C*:*) as_fn_error $? "invalid tag \`$ac_tag'" "$LINENO" 5;; :[FH]-) ac_tag=-:-;; :[FH]*) ac_tag=$ac_tag:$ac_tag.in;; esac @@ -21517,7 +20755,7 @@ echo "$as_me: error: Invalid tag $ac_tag." >&2;} for ac_f do case $ac_f in - -) ac_f="$tmp/stdin";; + -) ac_f="$ac_tmp/stdin";; *) # Look for the file first in the build tree, then in the source tree # (if the path is not absolute). The absolute path cannot be DOS-style, # because $ac_f cannot contain `:'. @@ -21526,26 +20764,34 @@ echo "$as_me: error: Invalid tag $ac_tag." >&2;} [\\/$]*) false;; *) test -f "$srcdir/$ac_f" && ac_f="$srcdir/$ac_f";; esac || - { { echo "$as_me:$LINENO: error: cannot find input file: $ac_f" >&5 -echo "$as_me: error: cannot find input file: $ac_f" >&2;} - { (exit 1); exit 1; }; };; + as_fn_error 1 "cannot find input file: \`$ac_f'" "$LINENO" 5;; esac - ac_file_inputs="$ac_file_inputs $ac_f" + case $ac_f in *\'*) ac_f=`$as_echo "$ac_f" | sed "s/'/'\\\\\\\\''/g"`;; esac + as_fn_append ac_file_inputs " '$ac_f'" done # Let's still pretend it is `configure' which instantiates (i.e., don't # use $as_me), people would be surprised to read: # /* config.h. Generated by config.status. */ - configure_input="Generated from "`IFS=: - echo $* | sed 's|^[^:]*/||;s|:[^:]*/|, |g'`" by configure." + configure_input='Generated from '` + $as_echo "$*" | sed 's|^[^:]*/||;s|:[^:]*/|, |g' + `' by configure.' if test x"$ac_file" != x-; then configure_input="$ac_file. $configure_input" - { echo "$as_me:$LINENO: creating $ac_file" >&5 -echo "$as_me: creating $ac_file" >&6;} + { $as_echo "$as_me:${as_lineno-$LINENO}: creating $ac_file" >&5 +$as_echo "$as_me: creating $ac_file" >&6;} fi + # Neutralize special characters interpreted by sed in replacement strings. + case $configure_input in #( + *\&* | *\|* | *\\* ) + ac_sed_conf_input=`$as_echo "$configure_input" | + sed 's/[\\\\&|]/\\\\&/g'`;; #( + *) ac_sed_conf_input=$configure_input;; + esac case $ac_tag in - *:-:* | *:-) cat >"$tmp/stdin";; + *:-:* | *:-) cat >"$ac_tmp/stdin" \ + || as_fn_error $? "could not create $ac_file" "$LINENO" 5 ;; esac ;; esac @@ -21555,42 +20801,7 @@ $as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$ac_file" : 'X\(//\)[^/]' \| \ X"$ac_file" : 'X\(//\)$' \| \ X"$ac_file" : 'X\(/\)' \| . 2>/dev/null || -echo X"$ac_file" | - sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ - s//\1/ - q - } - /^X\(\/\/\)[^/].*/{ - s//\1/ - q - } - /^X\(\/\/\)$/{ - s//\1/ - q - } - /^X\(\/\).*/{ - s//\1/ - q - } - s/.*/./; q'` - { as_dir="$ac_dir" - case $as_dir in #( - -*) as_dir=./$as_dir;; - esac - test -d "$as_dir" || { $as_mkdir_p && mkdir -p "$as_dir"; } || { - as_dirs= - while :; do - case $as_dir in #( - *\'*) as_qdir=`echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #( - *) as_qdir=$as_dir;; - esac - as_dirs="'$as_qdir' $as_dirs" - as_dir=`$as_dirname -- "$as_dir" || -$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ - X"$as_dir" : 'X\(//\)[^/]' \| \ - X"$as_dir" : 'X\(//\)$' \| \ - X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || -echo X"$as_dir" | +$as_echo X"$ac_file" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q @@ -21608,20 +20819,15 @@ echo X"$as_dir" | q } s/.*/./; q'` - test -d "$as_dir" && break - done - test -z "$as_dirs" || eval "mkdir $as_dirs" - } || test -d "$as_dir" || { { echo "$as_me:$LINENO: error: cannot create directory $as_dir" >&5 -echo "$as_me: error: cannot create directory $as_dir" >&2;} - { (exit 1); exit 1; }; }; } + as_dir="$ac_dir"; as_fn_mkdir_p ac_builddir=. case "$ac_dir" in .) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; *) - ac_dir_suffix=/`echo "$ac_dir" | sed 's,^\.[\\/],,'` + ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'` # A ".." for each directory in $ac_dir_suffix. - ac_top_builddir_sub=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,/..,g;s,/,,'` + ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` case $ac_top_builddir_sub in "") ac_top_builddir_sub=. ac_top_build_prefix= ;; *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; @@ -21666,12 +20872,12 @@ ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix esac _ACEOF -cat >>$CONFIG_STATUS <<\_ACEOF +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # If the template does not know about datarootdir, expand it. # FIXME: This hack should be removed a few years after 2.60. ac_datarootdir_hack=; ac_datarootdir_seen= - -case `sed -n '/datarootdir/ { +ac_sed_dataroot=' +/datarootdir/ { p q } @@ -21679,36 +20885,37 @@ case `sed -n '/datarootdir/ { /@docdir@/p /@infodir@/p /@localedir@/p -/@mandir@/p -' $ac_file_inputs` in +/@mandir@/p' +case `eval "sed -n \"\$ac_sed_dataroot\" $ac_file_inputs"` in *datarootdir*) ac_datarootdir_seen=yes;; *@datadir@*|*@docdir@*|*@infodir@*|*@localedir@*|*@mandir@*) - { echo "$as_me:$LINENO: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&5 -echo "$as_me: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&2;} + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&5 +$as_echo "$as_me: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&2;} _ACEOF -cat >>$CONFIG_STATUS <<_ACEOF +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_datarootdir_hack=' s&@datadir@&$datadir&g s&@docdir@&$docdir&g s&@infodir@&$infodir&g s&@localedir@&$localedir&g s&@mandir@&$mandir&g - s&\\\${datarootdir}&$datarootdir&g' ;; + s&\\\${datarootdir}&$datarootdir&g' ;; esac _ACEOF # Neutralize VPATH when `$srcdir' = `.'. # Shell code in configure.ac might set extrasub. # FIXME: do we really want to maintain this feature? -cat >>$CONFIG_STATUS <<_ACEOF - sed "$ac_vpsub +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 +ac_sed_extra="$ac_vpsub $extrasub _ACEOF -cat >>$CONFIG_STATUS <<\_ACEOF +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 :t /@[a-zA-Z_][a-zA-Z_0-9]*@/!b -s&@configure_input@&$configure_input&;t t +s|@configure_input@|$ac_sed_conf_input|;t t s&@top_builddir@&$ac_top_builddir_sub&;t t +s&@top_build_prefix@&$ac_top_build_prefix&;t t s&@srcdir@&$ac_srcdir&;t t s&@abs_srcdir@&$ac_abs_srcdir&;t t s&@top_srcdir@&$ac_top_srcdir&;t t @@ -21719,121 +20926,51 @@ s&@abs_top_builddir@&$ac_abs_top_builddir&;t t s&@INSTALL@&$ac_INSTALL&;t t s&@MKDIR_P@&$ac_MKDIR_P&;t t $ac_datarootdir_hack -" $ac_file_inputs | sed -f "$tmp/subs-1.sed" | sed -f "$tmp/subs-2.sed" >$tmp/out +" +eval sed \"\$ac_sed_extra\" "$ac_file_inputs" | $AWK -f "$ac_tmp/subs.awk" \ + >$ac_tmp/out || as_fn_error $? "could not create $ac_file" "$LINENO" 5 test -z "$ac_datarootdir_hack$ac_datarootdir_seen" && - { ac_out=`sed -n '/\${datarootdir}/p' "$tmp/out"`; test -n "$ac_out"; } && - { ac_out=`sed -n '/^[ ]*datarootdir[ ]*:*=/p' "$tmp/out"`; test -z "$ac_out"; } && - { echo "$as_me:$LINENO: WARNING: $ac_file contains a reference to the variable \`datarootdir' -which seems to be undefined. Please make sure it is defined." >&5 -echo "$as_me: WARNING: $ac_file contains a reference to the variable \`datarootdir' -which seems to be undefined. Please make sure it is defined." >&2;} - - rm -f "$tmp/stdin" + { ac_out=`sed -n '/\${datarootdir}/p' "$ac_tmp/out"`; test -n "$ac_out"; } && + { ac_out=`sed -n '/^[ ]*datarootdir[ ]*:*=/p' \ + "$ac_tmp/out"`; test -z "$ac_out"; } && + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file contains a reference to the variable \`datarootdir' +which seems to be undefined. Please make sure it is defined" >&5 +$as_echo "$as_me: WARNING: $ac_file contains a reference to the variable \`datarootdir' +which seems to be undefined. Please make sure it is defined" >&2;} + + rm -f "$ac_tmp/stdin" case $ac_file in - -) cat "$tmp/out"; rm -f "$tmp/out";; - *) rm -f "$ac_file"; mv "$tmp/out" $ac_file;; - esac + -) cat "$ac_tmp/out" && rm -f "$ac_tmp/out";; + *) rm -f "$ac_file" && mv "$ac_tmp/out" "$ac_file";; + esac \ + || as_fn_error $? "could not create $ac_file" "$LINENO" 5 ;; :H) # # CONFIG_HEADER # -_ACEOF - -# Transform confdefs.h into a sed script `conftest.defines', that -# substitutes the proper values into config.h.in to produce config.h. -rm -f conftest.defines conftest.tail -# First, append a space to every undef/define line, to ease matching. -echo 's/$/ /' >conftest.defines -# Then, protect against being on the right side of a sed subst, or in -# an unquoted here document, in config.status. If some macros were -# called several times there might be several #defines for the same -# symbol, which is useless. But do not sort them, since the last -# AC_DEFINE must be honored. -ac_word_re=[_$as_cr_Letters][_$as_cr_alnum]* -# These sed commands are passed to sed as "A NAME B PARAMS C VALUE D", where -# NAME is the cpp macro being defined, VALUE is the value it is being given. -# PARAMS is the parameter list in the macro definition--in most cases, it's -# just an empty string. -ac_dA='s,^\\([ #]*\\)[^ ]*\\([ ]*' -ac_dB='\\)[ (].*,\\1define\\2' -ac_dC=' ' -ac_dD=' ,' - -uniq confdefs.h | - sed -n ' - t rset - :rset - s/^[ ]*#[ ]*define[ ][ ]*// - t ok - d - :ok - s/[\\&,]/\\&/g - s/^\('"$ac_word_re"'\)\(([^()]*)\)[ ]*\(.*\)/ '"$ac_dA"'\1'"$ac_dB"'\2'"${ac_dC}"'\3'"$ac_dD"'/p - s/^\('"$ac_word_re"'\)[ ]*\(.*\)/'"$ac_dA"'\1'"$ac_dB$ac_dC"'\2'"$ac_dD"'/p - ' >>conftest.defines - -# Remove the space that was appended to ease matching. -# Then replace #undef with comments. This is necessary, for -# example, in the case of _POSIX_SOURCE, which is predefined and required -# on some systems where configure will not decide to define it. -# (The regexp can be short, since the line contains either #define or #undef.) -echo 's/ $// -s,^[ #]*u.*,/* & */,' >>conftest.defines - -# Break up conftest.defines: -ac_max_sed_lines=50 - -# First sed command is: sed -f defines.sed $ac_file_inputs >"$tmp/out1" -# Second one is: sed -f defines.sed "$tmp/out1" >"$tmp/out2" -# Third one will be: sed -f defines.sed "$tmp/out2" >"$tmp/out1" -# et cetera. -ac_in='$ac_file_inputs' -ac_out='"$tmp/out1"' -ac_nxt='"$tmp/out2"' - -while : -do - # Write a here document: - cat >>$CONFIG_STATUS <<_ACEOF - # First, check the format of the line: - cat >"\$tmp/defines.sed" <<\\CEOF -/^[ ]*#[ ]*undef[ ][ ]*$ac_word_re[ ]*\$/b def -/^[ ]*#[ ]*define[ ][ ]*$ac_word_re[( ]/b def -b -:def -_ACEOF - sed ${ac_max_sed_lines}q conftest.defines >>$CONFIG_STATUS - echo 'CEOF - sed -f "$tmp/defines.sed"' "$ac_in >$ac_out" >>$CONFIG_STATUS - ac_in=$ac_out; ac_out=$ac_nxt; ac_nxt=$ac_in - sed 1,${ac_max_sed_lines}d conftest.defines >conftest.tail - grep . conftest.tail >/dev/null || break - rm -f conftest.defines - mv conftest.tail conftest.defines -done -rm -f conftest.defines conftest.tail - -echo "ac_result=$ac_in" >>$CONFIG_STATUS -cat >>$CONFIG_STATUS <<\_ACEOF if test x"$ac_file" != x-; then - echo "/* $configure_input */" >"$tmp/config.h" - cat "$ac_result" >>"$tmp/config.h" - if diff $ac_file "$tmp/config.h" >/dev/null 2>&1; then - { echo "$as_me:$LINENO: $ac_file is unchanged" >&5 -echo "$as_me: $ac_file is unchanged" >&6;} + { + $as_echo "/* $configure_input */" \ + && eval '$AWK -f "$ac_tmp/defines.awk"' "$ac_file_inputs" + } >"$ac_tmp/config.h" \ + || as_fn_error $? "could not create $ac_file" "$LINENO" 5 + if diff "$ac_file" "$ac_tmp/config.h" >/dev/null 2>&1; then + { $as_echo "$as_me:${as_lineno-$LINENO}: $ac_file is unchanged" >&5 +$as_echo "$as_me: $ac_file is unchanged" >&6;} else - rm -f $ac_file - mv "$tmp/config.h" $ac_file + rm -f "$ac_file" + mv "$ac_tmp/config.h" "$ac_file" \ + || as_fn_error $? "could not create $ac_file" "$LINENO" 5 fi else - echo "/* $configure_input */" - cat "$ac_result" + $as_echo "/* $configure_input */" \ + && eval '$AWK -f "$ac_tmp/defines.awk"' "$ac_file_inputs" \ + || as_fn_error $? "could not create -" "$LINENO" 5 fi - rm -f "$tmp/out12" -# Compute $ac_file's index in $config_headers. -_am_arg=$ac_file +# Compute "$ac_file"'s index in $config_headers. +_am_arg="$ac_file" _am_stamp_count=1 for _am_header in $config_headers :; do case $_am_header in @@ -21848,7 +20985,7 @@ $as_expr X"$_am_arg" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$_am_arg" : 'X\(//\)[^/]' \| \ X"$_am_arg" : 'X\(//\)$' \| \ X"$_am_arg" : 'X\(/\)' \| . 2>/dev/null || -echo X"$_am_arg" | +$as_echo X"$_am_arg" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q @@ -21868,8 +21005,8 @@ echo X"$_am_arg" | s/.*/./; q'`/stamp-h$_am_stamp_count ;; - :C) { echo "$as_me:$LINENO: executing $ac_file commands" >&5 -echo "$as_me: executing $ac_file commands" >&6;} + :C) { $as_echo "$as_me:${as_lineno-$LINENO}: executing $ac_file commands" >&5 +$as_echo "$as_me: executing $ac_file commands" >&6;} ;; esac @@ -21892,7 +21029,7 @@ $as_expr X"$mf" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$mf" : 'X\(//\)[^/]' \| \ X"$mf" : 'X\(//\)$' \| \ X"$mf" : 'X\(/\)' \| . 2>/dev/null || -echo X"$mf" | +$as_echo X"$mf" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q @@ -21936,42 +21073,7 @@ $as_expr X"$file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$file" : 'X\(//\)[^/]' \| \ X"$file" : 'X\(//\)$' \| \ X"$file" : 'X\(/\)' \| . 2>/dev/null || -echo X"$file" | - sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ - s//\1/ - q - } - /^X\(\/\/\)[^/].*/{ - s//\1/ - q - } - /^X\(\/\/\)$/{ - s//\1/ - q - } - /^X\(\/\).*/{ - s//\1/ - q - } - s/.*/./; q'` - { as_dir=$dirpart/$fdir - case $as_dir in #( - -*) as_dir=./$as_dir;; - esac - test -d "$as_dir" || { $as_mkdir_p && mkdir -p "$as_dir"; } || { - as_dirs= - while :; do - case $as_dir in #( - *\'*) as_qdir=`echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #( - *) as_qdir=$as_dir;; - esac - as_dirs="'$as_qdir' $as_dirs" - as_dir=`$as_dirname -- "$as_dir" || -$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ - X"$as_dir" : 'X\(//\)[^/]' \| \ - X"$as_dir" : 'X\(//\)$' \| \ - X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || -echo X"$as_dir" | +$as_echo X"$file" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q @@ -21989,12 +21091,7 @@ echo X"$as_dir" | q } s/.*/./; q'` - test -d "$as_dir" && break - done - test -z "$as_dirs" || eval "mkdir $as_dirs" - } || test -d "$as_dir" || { { echo "$as_me:$LINENO: error: cannot create directory $as_dir" >&5 -echo "$as_me: error: cannot create directory $as_dir" >&2;} - { (exit 1); exit 1; }; }; } + as_dir=$dirpart/$fdir; as_fn_mkdir_p # echo "creating $dirpart/$file" echo '# dummy' > "$dirpart/$file" done @@ -22005,11 +21102,13 @@ done done # for ac_tag -{ (exit 0); exit 0; } +as_fn_exit 0 _ACEOF -chmod +x $CONFIG_STATUS ac_clean_files=$ac_clean_files_save +test $ac_write_fail = 0 || + as_fn_error $? "write failure creating $CONFIG_STATUS" "$LINENO" 5 + # configure is writing to config.log, and then calls config.status. # config.status does its own redirection, appending to config.log. @@ -22029,6 +21128,10 @@ if test "$no_create" != yes; then exec 5>>config.log # Use ||, not &&, to avoid exiting from the if with $? = 1, which # would make configure fail if this is the last instruction. - $ac_cs_success || { (exit 1); exit 1; } + $ac_cs_success || as_fn_exit 1 +fi +if test -n "$ac_unrecognized_opts" && test "$enable_option_checking" != no; then + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: unrecognized options: $ac_unrecognized_opts" >&5 +$as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2;} fi diff --git a/cpp/thirdparty/protobuf-2.3.0/.gitignore b/cpp/thirdparty/protobuf-2.3.0/.gitignore deleted file mode 100644 index fbfbbaa0f..000000000 --- a/cpp/thirdparty/protobuf-2.3.0/.gitignore +++ /dev/null @@ -1,10 +0,0 @@ -/config.log -/config.h -/config.status -/libtool -/Makefile -/protobuf.pc -/protobuf-lite.pc -/stamp-h1 -/autom4te.cache -/*~ diff --git a/cpp/thirdparty/protobuf-2.3.0/gtest/.gitignore b/cpp/thirdparty/protobuf-2.3.0/gtest/.gitignore deleted file mode 100644 index 26a153087..000000000 --- a/cpp/thirdparty/protobuf-2.3.0/gtest/.gitignore +++ /dev/null @@ -1,4 +0,0 @@ -/config.log -/config.status -/libtool -/Makefile diff --git a/cpp/thirdparty/protobuf-2.3.0/gtest/Makefile.am b/cpp/thirdparty/protobuf-2.3.0/gtest/Makefile.am deleted file mode 100644 index 3a9233db7..000000000 --- a/cpp/thirdparty/protobuf-2.3.0/gtest/Makefile.am +++ /dev/null @@ -1,441 +0,0 @@ -# Automake file - -# TODO(chandlerc@google.com): automate the generation of *.h from *.h.pump. - -# Nonstandard package files for distribution -EXTRA_DIST = \ - CHANGES \ - CONTRIBUTORS \ - include/gtest/gtest-param-test.h.pump \ - include/gtest/internal/gtest-tuple.h.pump \ - include/gtest/internal/gtest-type-util.h.pump \ - include/gtest/internal/gtest-param-util-generated.h.pump \ - make/Makefile \ - scons/SConscript \ - scons/SConstruct \ - scons/SConstruct.common \ - scripts/fuse_gtest_files.py \ - scripts/gen_gtest_pred_impl.py \ - scripts/test/Makefile \ - test/gtest_all_test.cc - -# MSVC project files -EXTRA_DIST += \ - msvc/gtest-md.sln \ - msvc/gtest.sln \ - msvc/gtest-md.vcproj \ - msvc/gtest.vcproj \ - msvc/gtest_main-md.vcproj \ - msvc/gtest_main.vcproj \ - msvc/gtest_prod_test-md.vcproj \ - msvc/gtest_prod_test.vcproj \ - msvc/gtest_unittest-md.vcproj \ - msvc/gtest_unittest.vcproj - -# xcode project files -EXTRA_DIST += \ - xcode/Config/DebugProject.xcconfig \ - xcode/Config/FrameworkTarget.xcconfig \ - xcode/Config/General.xcconfig \ - xcode/Config/ReleaseProject.xcconfig \ - xcode/Config/StaticLibraryTarget.xcconfig \ - xcode/Config/TestTarget.xcconfig \ - xcode/Resources/Info.plist \ - xcode/Scripts/versiongenerate.py \ - xcode/Scripts/runtests.sh \ - xcode/gtest.xcodeproj/project.pbxproj - -# xcode sample files -EXTRA_DIST += \ - xcode/Samples/FrameworkSample/Info.plist \ - xcode/Samples/FrameworkSample/widget_test.cc \ - xcode/Samples/FrameworkSample/widget.cc \ - xcode/Samples/FrameworkSample/widget.h \ - xcode/Samples/FrameworkSample/WidgetFramework.xcodeproj/project.pbxproj - -# C++Builder project files -EXTRA_DIST += \ - codegear/gtest_all.cc \ - codegear/gtest_link.cc \ - codegear/gtest.cbproj \ - codegear/gtest_main.cbproj \ - codegear/gtest_unittest.cbproj \ - codegear/gtest.groupproj - -# TODO(wan@google.com): integrate scripts/gen_gtest_pred_impl.py into -# the build system such that a user can specify the maximum predicate -# arity here and have the script automatically generate the -# corresponding .h and .cc files. - -# Scripts and utilities -bin_SCRIPTS = scripts/gtest-config -CLEANFILES = $(bin_SCRIPTS) - -# Distribute and install M4 macro -m4datadir = $(datadir)/aclocal -m4data_DATA = m4/gtest.m4 -EXTRA_DIST += $(m4data_DATA) - -# We define the global AM_CPPFLAGS as everything we compile includes from these -# directories. -AM_CPPFLAGS = -I$(srcdir) -I$(srcdir)/include - -# Build rules for libraries. -lib_LTLIBRARIES = lib/libgtest.la lib/libgtest_main.la - -lib_libgtest_la_SOURCES = src/gtest.cc \ - src/gtest-death-test.cc \ - src/gtest-filepath.cc \ - src/gtest-internal-inl.h \ - src/gtest-port.cc \ - src/gtest-test-part.cc \ - src/gtest-typed-test.cc - -pkginclude_HEADERS = include/gtest/gtest.h \ - include/gtest/gtest-death-test.h \ - include/gtest/gtest-message.h \ - include/gtest/gtest-param-test.h \ - include/gtest/gtest_pred_impl.h \ - include/gtest/gtest_prod.h \ - include/gtest/gtest-spi.h \ - include/gtest/gtest-test-part.h \ - include/gtest/gtest-typed-test.h - -pkginclude_internaldir = $(pkgincludedir)/internal -pkginclude_internal_HEADERS = \ - include/gtest/internal/gtest-death-test-internal.h \ - include/gtest/internal/gtest-filepath.h \ - include/gtest/internal/gtest-internal.h \ - include/gtest/internal/gtest-linked_ptr.h \ - include/gtest/internal/gtest-param-util-generated.h \ - include/gtest/internal/gtest-param-util.h \ - include/gtest/internal/gtest-port.h \ - include/gtest/internal/gtest-string.h \ - include/gtest/internal/gtest-tuple.h \ - include/gtest/internal/gtest-type-util.h - -lib_libgtest_main_la_SOURCES = src/gtest_main.cc -lib_libgtest_main_la_LIBADD = lib/libgtest.la - -# Bulid rules for samples and tests. Automake's naming for some of -# these variables isn't terribly obvious, so this is a brief -# reference: -# -# TESTS -- Programs run automatically by "make check" -# check_PROGRAMS -- Programs built by "make check" but not necessarily run - -noinst_LTLIBRARIES = samples/libsamples.la - -samples_libsamples_la_SOURCES = samples/sample1.cc \ - samples/sample1.h \ - samples/sample2.cc \ - samples/sample2.h \ - samples/sample3-inl.h \ - samples/sample4.cc \ - samples/sample4.h - -TESTS= -TESTS_ENVIRONMENT = GTEST_SOURCE_DIR="$(srcdir)/test" \ - GTEST_BUILD_DIR="$(top_builddir)/test" -check_PROGRAMS= - -TESTS += samples/sample1_unittest -check_PROGRAMS += samples/sample1_unittest -samples_sample1_unittest_SOURCES = samples/sample1_unittest.cc -samples_sample1_unittest_LDADD = lib/libgtest_main.la \ - samples/libsamples.la - -TESTS += samples/sample2_unittest -check_PROGRAMS += samples/sample2_unittest -samples_sample2_unittest_SOURCES = samples/sample2_unittest.cc -samples_sample2_unittest_LDADD = lib/libgtest_main.la \ - samples/libsamples.la - -TESTS += samples/sample3_unittest -check_PROGRAMS += samples/sample3_unittest -samples_sample3_unittest_SOURCES = samples/sample3_unittest.cc -samples_sample3_unittest_LDADD = lib/libgtest_main.la \ - samples/libsamples.la - -TESTS += samples/sample4_unittest -check_PROGRAMS += samples/sample4_unittest -samples_sample4_unittest_SOURCES = samples/sample4_unittest.cc -samples_sample4_unittest_LDADD = lib/libgtest_main.la \ - samples/libsamples.la - -TESTS += samples/sample5_unittest -check_PROGRAMS += samples/sample5_unittest -samples_sample5_unittest_SOURCES = samples/sample5_unittest.cc -samples_sample5_unittest_LDADD = lib/libgtest_main.la \ - samples/libsamples.la - -TESTS += samples/sample6_unittest -check_PROGRAMS += samples/sample6_unittest -samples_sample6_unittest_SOURCES = samples/prime_tables.h \ - samples/sample6_unittest.cc -samples_sample6_unittest_LDADD = lib/libgtest_main.la - -TESTS += samples/sample7_unittest -check_PROGRAMS += samples/sample7_unittest -samples_sample7_unittest_SOURCES = samples/prime_tables.h \ - samples/sample7_unittest.cc -samples_sample7_unittest_LDADD = lib/libgtest_main.la - -TESTS += samples/sample8_unittest -check_PROGRAMS += samples/sample8_unittest -samples_sample8_unittest_SOURCES = samples/prime_tables.h \ - samples/sample8_unittest.cc -samples_sample8_unittest_LDADD = lib/libgtest_main.la - -TESTS += samples/sample9_unittest -check_PROGRAMS += samples/sample9_unittest -samples_sample9_unittest_SOURCES = samples/sample9_unittest.cc -samples_sample9_unittest_LDADD = lib/libgtest.la - -TESTS += samples/sample10_unittest -check_PROGRAMS += samples/sample10_unittest -samples_sample10_unittest_SOURCES = samples/sample10_unittest.cc -samples_sample10_unittest_LDADD = lib/libgtest.la - -TESTS += test/gtest-death-test_test -check_PROGRAMS += test/gtest-death-test_test -test_gtest_death_test_test_SOURCES = test/gtest-death-test_test.cc -test_gtest_death_test_test_CXXFLAGS = $(AM_CXXFLAGS) $(PTHREAD_CFLAGS) -test_gtest_death_test_test_LDADD = $(PTHREAD_LIBS) $(PTHREAD_CFLAGS) \ - lib/libgtest_main.la - -TESTS += test/gtest_environment_test -check_PROGRAMS += test/gtest_environment_test -test_gtest_environment_test_SOURCES = test/gtest_environment_test.cc -test_gtest_environment_test_LDADD = lib/libgtest.la - -TESTS += test/gtest-filepath_test -check_PROGRAMS += test/gtest-filepath_test -test_gtest_filepath_test_SOURCES = test/gtest-filepath_test.cc -test_gtest_filepath_test_LDADD = lib/libgtest_main.la - -TESTS += test/gtest-linked_ptr_test -check_PROGRAMS += test/gtest-linked_ptr_test -test_gtest_linked_ptr_test_SOURCES = test/gtest-linked_ptr_test.cc -test_gtest_linked_ptr_test_LDADD = lib/libgtest_main.la - -TESTS += test/gtest_main_unittest -check_PROGRAMS += test/gtest_main_unittest -test_gtest_main_unittest_SOURCES = test/gtest_main_unittest.cc -test_gtest_main_unittest_LDADD = lib/libgtest_main.la - -TESTS += test/gtest-message_test -check_PROGRAMS += test/gtest-message_test -test_gtest_message_test_SOURCES = test/gtest-message_test.cc -test_gtest_message_test_LDADD = lib/libgtest_main.la - -TESTS += test/gtest_no_test_unittest -check_PROGRAMS += test/gtest_no_test_unittest -test_gtest_no_test_unittest_SOURCES = test/gtest_no_test_unittest.cc -test_gtest_no_test_unittest_LDADD = lib/libgtest.la - -TESTS += test/gtest-options_test -check_PROGRAMS += test/gtest-options_test -test_gtest_options_test_SOURCES = test/gtest-options_test.cc -test_gtest_options_test_LDADD = lib/libgtest_main.la - -TESTS += test/gtest-param-test_test -check_PROGRAMS += test/gtest-param-test_test -test_gtest_param_test_test_SOURCES = test/gtest-param-test_test.cc \ - test/gtest-param-test2_test.cc \ - test/gtest-param-test_test.h -test_gtest_param_test_test_LDADD = lib/libgtest.la - -TESTS += test/gtest-port_test -check_PROGRAMS += test/gtest-port_test -test_gtest_port_test_SOURCES = test/gtest-port_test.cc -test_gtest_port_test_LDADD = lib/libgtest_main.la - -TESTS += test/gtest_pred_impl_unittest -check_PROGRAMS += test/gtest_pred_impl_unittest -test_gtest_pred_impl_unittest_SOURCES = test/gtest_pred_impl_unittest.cc -test_gtest_pred_impl_unittest_LDADD = lib/libgtest_main.la - -TESTS += test/gtest_prod_test -check_PROGRAMS += test/gtest_prod_test -test_gtest_prod_test_SOURCES = test/gtest_prod_test.cc \ - test/production.cc \ - test/production.h -test_gtest_prod_test_LDADD = lib/libgtest_main.la - -TESTS += test/gtest_repeat_test -check_PROGRAMS += test/gtest_repeat_test -test_gtest_repeat_test_SOURCES = test/gtest_repeat_test.cc -test_gtest_repeat_test_LDADD = lib/libgtest.la - -TESTS += test/gtest_sole_header_test -check_PROGRAMS += test/gtest_sole_header_test -test_gtest_sole_header_test_SOURCES = test/gtest_sole_header_test.cc -test_gtest_sole_header_test_LDADD = lib/libgtest_main.la - -TESTS += test/gtest_stress_test -check_PROGRAMS += test/gtest_stress_test -test_gtest_stress_test_SOURCES = test/gtest_stress_test.cc -test_gtest_stress_test_LDADD = lib/libgtest.la - -TESTS += test/gtest-test-part_test -check_PROGRAMS += test/gtest-test-part_test -test_gtest_test_part_test_SOURCES = test/gtest-test-part_test.cc -test_gtest_test_part_test_LDADD = lib/libgtest_main.la - -TESTS += test/gtest_throw_on_failure_ex_test -check_PROGRAMS += test/gtest_throw_on_failure_ex_test -test_gtest_throw_on_failure_ex_test_SOURCES = \ - test/gtest_throw_on_failure_ex_test.cc \ - src/gtest-all.cc -test_gtest_throw_on_failure_ex_test_CXXFLAGS = $(AM_CXXFLAGS) -fexceptions - -TESTS += test/gtest-typed-test_test -check_PROGRAMS += test/gtest-typed-test_test -test_gtest_typed_test_test_SOURCES = test/gtest-typed-test_test.cc \ - test/gtest-typed-test2_test.cc \ - test/gtest-typed-test_test.h -test_gtest_typed_test_test_LDADD = lib/libgtest_main.la - -TESTS += test/gtest_unittest -check_PROGRAMS += test/gtest_unittest -test_gtest_unittest_SOURCES = test/gtest_unittest.cc -test_gtest_unittest_LDADD = lib/libgtest_main.la - -TESTS += test/gtest-unittest-api_test -check_PROGRAMS += test/gtest-unittest-api_test -test_gtest_unittest_api_test_SOURCES = test/gtest-unittest-api_test.cc -test_gtest_unittest_api_test_LDADD = lib/libgtest_main.la - -TESTS += test/gtest-listener_test -check_PROGRAMS += test/gtest-listener_test -test_gtest_listener_test_SOURCES = test/gtest-listener_test.cc -test_gtest_listener_test_LDADD = lib/libgtest_main.la - -# Verifies that Google Test works when RTTI is disabled. -TESTS += test/gtest_no_rtti_test -check_PROGRAMS += test/gtest_no_rtti_test -test_gtest_no_rtti_test_SOURCES = test/gtest_unittest.cc \ - src/gtest-all.cc \ - src/gtest_main.cc -test_gtest_no_rtti_test_CXXFLAGS = $(AM_CXXFLAGS) -fno-rtti -DGTEST_HAS_RTTI=0 - -# Verifies that Google Test's own TR1 tuple implementation works. -TESTS += test/gtest-tuple_test -check_PROGRAMS += test/gtest-tuple_test -test_gtest_tuple_test_SOURCES = test/gtest-tuple_test.cc \ - src/gtest-all.cc \ - src/gtest_main.cc -test_gtest_tuple_test_CXXFLAGS = $(AM_CXXFLAGS) -DGTEST_USE_OWN_TR1_TUPLE=1 - -# Verifies that Google Test's features that use its own TR1 tuple work. -TESTS += test/gtest_use_own_tuple_test -check_PROGRAMS += test/gtest_use_own_tuple_test -test_gtest_use_own_tuple_test_SOURCES = test/gtest-param-test_test.cc \ - test/gtest-param-test2_test.cc \ - src/gtest-all.cc -test_gtest_use_own_tuple_test_CXXFLAGS = \ - $(AM_CXXFLAGS) -DGTEST_USE_OWN_TR1_TUPLE=1 - -# The following tests depend on the presence of a Python installation and are -# keyed off of it. TODO(chandlerc@google.com): While we currently only attempt -# to build and execute these tests if Autoconf has found Python v2.4 on the -# system, we don't use the PYTHON variable it specified as the valid -# interpreter. The problem is that TESTS_ENVIRONMENT is a global variable, and -# thus we cannot distinguish between C++ unit tests and Python unit tests. -if HAVE_PYTHON -check_SCRIPTS = - -# These two Python modules are used by multiple Python tests below. -check_SCRIPTS += test/gtest_test_utils.py \ - test/gtest_xml_test_utils.py - -check_PROGRAMS += test/gtest_break_on_failure_unittest_ -test_gtest_break_on_failure_unittest__SOURCES = \ - test/gtest_break_on_failure_unittest_.cc -test_gtest_break_on_failure_unittest__LDADD = lib/libgtest.la -check_SCRIPTS += test/gtest_break_on_failure_unittest.py -TESTS += test/gtest_break_on_failure_unittest.py - -check_PROGRAMS += test/gtest_color_test_ -test_gtest_color_test__SOURCES = test/gtest_color_test_.cc -test_gtest_color_test__LDADD = lib/libgtest.la -check_SCRIPTS += test/gtest_color_test.py -TESTS += test/gtest_color_test.py - -check_PROGRAMS += test/gtest_env_var_test_ -test_gtest_env_var_test__SOURCES = test/gtest_env_var_test_.cc -test_gtest_env_var_test__LDADD = lib/libgtest.la -check_SCRIPTS += test/gtest_env_var_test.py -TESTS += test/gtest_env_var_test.py - -check_PROGRAMS += test/gtest_filter_unittest_ -test_gtest_filter_unittest__SOURCES = test/gtest_filter_unittest_.cc -test_gtest_filter_unittest__LDADD = lib/libgtest.la -check_SCRIPTS += test/gtest_filter_unittest.py -TESTS += test/gtest_filter_unittest.py - -check_PROGRAMS += test/gtest_help_test_ -test_gtest_help_test__SOURCES = test/gtest_help_test_.cc -test_gtest_help_test__LDADD = lib/libgtest_main.la -check_SCRIPTS += test/gtest_help_test.py -TESTS += test/gtest_help_test.py - -check_PROGRAMS += test/gtest_list_tests_unittest_ -test_gtest_list_tests_unittest__SOURCES = test/gtest_list_tests_unittest_.cc -test_gtest_list_tests_unittest__LDADD = lib/libgtest.la -check_SCRIPTS += test/gtest_list_tests_unittest.py -TESTS += test/gtest_list_tests_unittest.py - -check_PROGRAMS += test/gtest_output_test_ -test_gtest_output_test__SOURCES = test/gtest_output_test_.cc -test_gtest_output_test__LDADD = lib/libgtest.la -check_SCRIPTS += test/gtest_output_test.py -EXTRA_DIST += test/gtest_output_test_golden_lin.txt \ - test/gtest_output_test_golden_win.txt -TESTS += test/gtest_output_test.py - -check_PROGRAMS += test/gtest_shuffle_test_ -test_gtest_shuffle_test__SOURCES = test/gtest_shuffle_test_.cc -test_gtest_shuffle_test__LDADD = lib/libgtest.la -check_SCRIPTS += test/gtest_shuffle_test.py -TESTS += test/gtest_shuffle_test.py - -check_PROGRAMS += test/gtest_throw_on_failure_test_ -test_gtest_throw_on_failure_test__SOURCES = \ - test/gtest_throw_on_failure_test_.cc \ - src/gtest-all.cc -test_gtest_throw_on_failure_test__CXXFLAGS = $(AM_CXXFLAGS) -fno-exceptions -check_SCRIPTS += test/gtest_throw_on_failure_test.py -TESTS += test/gtest_throw_on_failure_test.py - -check_PROGRAMS += test/gtest_uninitialized_test_ -test_gtest_uninitialized_test__SOURCES = test/gtest_uninitialized_test_.cc -test_gtest_uninitialized_test__LDADD = lib/libgtest.la -check_SCRIPTS += test/gtest_uninitialized_test.py -TESTS += test/gtest_uninitialized_test.py - -check_PROGRAMS += test/gtest_xml_outfile1_test_ -test_gtest_xml_outfile1_test__SOURCES = test/gtest_xml_outfile1_test_.cc -test_gtest_xml_outfile1_test__LDADD = lib/libgtest_main.la -check_PROGRAMS += test/gtest_xml_outfile2_test_ -test_gtest_xml_outfile2_test__SOURCES = test/gtest_xml_outfile2_test_.cc -test_gtest_xml_outfile2_test__LDADD = lib/libgtest_main.la -check_SCRIPTS += test/gtest_xml_outfiles_test.py -TESTS += test/gtest_xml_outfiles_test.py - -check_PROGRAMS += test/gtest_xml_output_unittest_ -test_gtest_xml_output_unittest__SOURCES = test/gtest_xml_output_unittest_.cc -test_gtest_xml_output_unittest__LDADD = lib/libgtest.la -check_SCRIPTS += test/gtest_xml_output_unittest.py -TESTS += test/gtest_xml_output_unittest.py - -# TODO(wan@google.com): make the build script compile and run the -# negative-compilation tests. (The test/gtest_nc* files are unfinished -# implementation of tests for verifying that certain kinds of misuse -# of Google Test don't compile.) -EXTRA_DIST += $(check_SCRIPTS) \ - test/gtest_nc.cc \ - test/gtest_nc_test.py - -endif diff --git a/cpp/thirdparty/protobuf-2.3.0/gtest/Makefile.in b/cpp/thirdparty/protobuf-2.3.0/gtest/Makefile.in deleted file mode 100644 index 2cc34bf79..000000000 --- a/cpp/thirdparty/protobuf-2.3.0/gtest/Makefile.in +++ /dev/null @@ -1,2269 +0,0 @@ -# Makefile.in generated by automake 1.10.1 from Makefile.am. -# @configure_input@ - -# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, -# 2003, 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc. -# This Makefile.in is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY, to the extent permitted by law; without -# even the implied warranty of MERCHANTABILITY or FITNESS FOR A -# PARTICULAR PURPOSE. - -@SET_MAKE@ - -# Automake file - -# TODO(chandlerc@google.com): automate the generation of *.h from *.h.pump. - - - - -VPATH = @srcdir@ -pkgdatadir = $(datadir)/@PACKAGE@ -pkglibdir = $(libdir)/@PACKAGE@ -pkgincludedir = $(includedir)/@PACKAGE@ -am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd -install_sh_DATA = $(install_sh) -c -m 644 -install_sh_PROGRAM = $(install_sh) -c -install_sh_SCRIPT = $(install_sh) -c -INSTALL_HEADER = $(INSTALL_DATA) -transform = $(program_transform_name) -NORMAL_INSTALL = : -PRE_INSTALL = : -POST_INSTALL = : -NORMAL_UNINSTALL = : -PRE_UNINSTALL = : -POST_UNINSTALL = : -build_triplet = @build@ -host_triplet = @host@ -TESTS = samples/sample1_unittest$(EXEEXT) \ - samples/sample2_unittest$(EXEEXT) \ - samples/sample3_unittest$(EXEEXT) \ - samples/sample4_unittest$(EXEEXT) \ - samples/sample5_unittest$(EXEEXT) \ - samples/sample6_unittest$(EXEEXT) \ - samples/sample7_unittest$(EXEEXT) \ - samples/sample8_unittest$(EXEEXT) \ - samples/sample9_unittest$(EXEEXT) \ - samples/sample10_unittest$(EXEEXT) \ - test/gtest-death-test_test$(EXEEXT) \ - test/gtest_environment_test$(EXEEXT) \ - test/gtest-filepath_test$(EXEEXT) \ - test/gtest-linked_ptr_test$(EXEEXT) \ - test/gtest_main_unittest$(EXEEXT) \ - test/gtest-message_test$(EXEEXT) \ - test/gtest_no_test_unittest$(EXEEXT) \ - test/gtest-options_test$(EXEEXT) \ - test/gtest-param-test_test$(EXEEXT) \ - test/gtest-port_test$(EXEEXT) \ - test/gtest_pred_impl_unittest$(EXEEXT) \ - test/gtest_prod_test$(EXEEXT) test/gtest_repeat_test$(EXEEXT) \ - test/gtest_sole_header_test$(EXEEXT) \ - test/gtest_stress_test$(EXEEXT) \ - test/gtest-test-part_test$(EXEEXT) \ - test/gtest_throw_on_failure_ex_test$(EXEEXT) \ - test/gtest-typed-test_test$(EXEEXT) \ - test/gtest_unittest$(EXEEXT) \ - test/gtest-unittest-api_test$(EXEEXT) \ - test/gtest-listener_test$(EXEEXT) \ - test/gtest_no_rtti_test$(EXEEXT) \ - test/gtest-tuple_test$(EXEEXT) \ - test/gtest_use_own_tuple_test$(EXEEXT) $(am__append_2) -check_PROGRAMS = samples/sample1_unittest$(EXEEXT) \ - samples/sample2_unittest$(EXEEXT) \ - samples/sample3_unittest$(EXEEXT) \ - samples/sample4_unittest$(EXEEXT) \ - samples/sample5_unittest$(EXEEXT) \ - samples/sample6_unittest$(EXEEXT) \ - samples/sample7_unittest$(EXEEXT) \ - samples/sample8_unittest$(EXEEXT) \ - samples/sample9_unittest$(EXEEXT) \ - samples/sample10_unittest$(EXEEXT) \ - test/gtest-death-test_test$(EXEEXT) \ - test/gtest_environment_test$(EXEEXT) \ - test/gtest-filepath_test$(EXEEXT) \ - test/gtest-linked_ptr_test$(EXEEXT) \ - test/gtest_main_unittest$(EXEEXT) \ - test/gtest-message_test$(EXEEXT) \ - test/gtest_no_test_unittest$(EXEEXT) \ - test/gtest-options_test$(EXEEXT) \ - test/gtest-param-test_test$(EXEEXT) \ - test/gtest-port_test$(EXEEXT) \ - test/gtest_pred_impl_unittest$(EXEEXT) \ - test/gtest_prod_test$(EXEEXT) test/gtest_repeat_test$(EXEEXT) \ - test/gtest_sole_header_test$(EXEEXT) \ - test/gtest_stress_test$(EXEEXT) \ - test/gtest-test-part_test$(EXEEXT) \ - test/gtest_throw_on_failure_ex_test$(EXEEXT) \ - test/gtest-typed-test_test$(EXEEXT) \ - test/gtest_unittest$(EXEEXT) \ - test/gtest-unittest-api_test$(EXEEXT) \ - test/gtest-listener_test$(EXEEXT) \ - test/gtest_no_rtti_test$(EXEEXT) \ - test/gtest-tuple_test$(EXEEXT) \ - test/gtest_use_own_tuple_test$(EXEEXT) $(am__EXEEXT_1) -@HAVE_PYTHON_TRUE@am__append_1 = \ -@HAVE_PYTHON_TRUE@ test/gtest_break_on_failure_unittest_ \ -@HAVE_PYTHON_TRUE@ test/gtest_color_test_ \ -@HAVE_PYTHON_TRUE@ test/gtest_env_var_test_ \ -@HAVE_PYTHON_TRUE@ test/gtest_filter_unittest_ \ -@HAVE_PYTHON_TRUE@ test/gtest_help_test_ \ -@HAVE_PYTHON_TRUE@ test/gtest_list_tests_unittest_ \ -@HAVE_PYTHON_TRUE@ test/gtest_output_test_ \ -@HAVE_PYTHON_TRUE@ test/gtest_shuffle_test_ \ -@HAVE_PYTHON_TRUE@ test/gtest_throw_on_failure_test_ \ -@HAVE_PYTHON_TRUE@ test/gtest_uninitialized_test_ \ -@HAVE_PYTHON_TRUE@ test/gtest_xml_outfile1_test_ \ -@HAVE_PYTHON_TRUE@ test/gtest_xml_outfile2_test_ \ -@HAVE_PYTHON_TRUE@ test/gtest_xml_output_unittest_ -@HAVE_PYTHON_TRUE@am__append_2 = \ -@HAVE_PYTHON_TRUE@ test/gtest_break_on_failure_unittest.py \ -@HAVE_PYTHON_TRUE@ test/gtest_color_test.py \ -@HAVE_PYTHON_TRUE@ test/gtest_env_var_test.py \ -@HAVE_PYTHON_TRUE@ test/gtest_filter_unittest.py \ -@HAVE_PYTHON_TRUE@ test/gtest_help_test.py \ -@HAVE_PYTHON_TRUE@ test/gtest_list_tests_unittest.py \ -@HAVE_PYTHON_TRUE@ test/gtest_output_test.py \ -@HAVE_PYTHON_TRUE@ test/gtest_shuffle_test.py \ -@HAVE_PYTHON_TRUE@ test/gtest_throw_on_failure_test.py \ -@HAVE_PYTHON_TRUE@ test/gtest_uninitialized_test.py \ -@HAVE_PYTHON_TRUE@ test/gtest_xml_outfiles_test.py \ -@HAVE_PYTHON_TRUE@ test/gtest_xml_output_unittest.py - -# TODO(wan@google.com): make the build script compile and run the -# negative-compilation tests. (The test/gtest_nc* files are unfinished -# implementation of tests for verifying that certain kinds of misuse -# of Google Test don't compile.) -@HAVE_PYTHON_TRUE@am__append_3 = \ -@HAVE_PYTHON_TRUE@ test/gtest_output_test_golden_lin.txt \ -@HAVE_PYTHON_TRUE@ test/gtest_output_test_golden_win.txt \ -@HAVE_PYTHON_TRUE@ $(check_SCRIPTS) test/gtest_nc.cc \ -@HAVE_PYTHON_TRUE@ test/gtest_nc_test.py -subdir = . -DIST_COMMON = README $(am__configure_deps) $(pkginclude_HEADERS) \ - $(pkginclude_internal_HEADERS) $(srcdir)/Makefile.am \ - $(srcdir)/Makefile.in $(top_srcdir)/build-aux/config.h.in \ - $(top_srcdir)/configure $(top_srcdir)/scripts/gtest-config.in \ - COPYING build-aux/config.guess build-aux/config.sub \ - build-aux/depcomp build-aux/install-sh build-aux/ltmain.sh \ - build-aux/missing -ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 -am__aclocal_m4_deps = $(top_srcdir)/m4/acx_pthread.m4 \ - $(top_srcdir)/configure.ac -am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ - $(ACLOCAL_M4) -am__CONFIG_DISTCLEAN_FILES = config.status config.cache config.log \ - configure.lineno config.status.lineno -mkinstalldirs = $(install_sh) -d -CONFIG_HEADER = $(top_builddir)/build-aux/config.h -CONFIG_CLEAN_FILES = scripts/gtest-config -am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; -am__vpath_adj = case $$p in \ - $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ - *) f=$$p;; \ - esac; -am__strip_dir = `echo $$p | sed -e 's|^.*/||'`; -am__installdirs = "$(DESTDIR)$(libdir)" "$(DESTDIR)$(bindir)" \ - "$(DESTDIR)$(m4datadir)" "$(DESTDIR)$(pkgincludedir)" \ - "$(DESTDIR)$(pkginclude_internaldir)" -libLTLIBRARIES_INSTALL = $(INSTALL) -LTLIBRARIES = $(lib_LTLIBRARIES) $(noinst_LTLIBRARIES) -lib_libgtest_la_LIBADD = -am__dirstamp = $(am__leading_dot)dirstamp -am_lib_libgtest_la_OBJECTS = src/gtest.lo src/gtest-death-test.lo \ - src/gtest-filepath.lo src/gtest-port.lo src/gtest-test-part.lo \ - src/gtest-typed-test.lo -lib_libgtest_la_OBJECTS = $(am_lib_libgtest_la_OBJECTS) -lib_libgtest_main_la_DEPENDENCIES = lib/libgtest.la -am_lib_libgtest_main_la_OBJECTS = src/gtest_main.lo -lib_libgtest_main_la_OBJECTS = $(am_lib_libgtest_main_la_OBJECTS) -samples_libsamples_la_LIBADD = -am_samples_libsamples_la_OBJECTS = samples/sample1.lo \ - samples/sample2.lo samples/sample4.lo -samples_libsamples_la_OBJECTS = $(am_samples_libsamples_la_OBJECTS) -@HAVE_PYTHON_TRUE@am__EXEEXT_1 = test/gtest_break_on_failure_unittest_$(EXEEXT) \ -@HAVE_PYTHON_TRUE@ test/gtest_color_test_$(EXEEXT) \ -@HAVE_PYTHON_TRUE@ test/gtest_env_var_test_$(EXEEXT) \ -@HAVE_PYTHON_TRUE@ test/gtest_filter_unittest_$(EXEEXT) \ -@HAVE_PYTHON_TRUE@ test/gtest_help_test_$(EXEEXT) \ -@HAVE_PYTHON_TRUE@ test/gtest_list_tests_unittest_$(EXEEXT) \ -@HAVE_PYTHON_TRUE@ test/gtest_output_test_$(EXEEXT) \ -@HAVE_PYTHON_TRUE@ test/gtest_shuffle_test_$(EXEEXT) \ -@HAVE_PYTHON_TRUE@ test/gtest_throw_on_failure_test_$(EXEEXT) \ -@HAVE_PYTHON_TRUE@ test/gtest_uninitialized_test_$(EXEEXT) \ -@HAVE_PYTHON_TRUE@ test/gtest_xml_outfile1_test_$(EXEEXT) \ -@HAVE_PYTHON_TRUE@ test/gtest_xml_outfile2_test_$(EXEEXT) \ -@HAVE_PYTHON_TRUE@ test/gtest_xml_output_unittest_$(EXEEXT) -am_samples_sample10_unittest_OBJECTS = \ - samples/sample10_unittest.$(OBJEXT) -samples_sample10_unittest_OBJECTS = \ - $(am_samples_sample10_unittest_OBJECTS) -samples_sample10_unittest_DEPENDENCIES = lib/libgtest.la -am_samples_sample1_unittest_OBJECTS = \ - samples/sample1_unittest.$(OBJEXT) -samples_sample1_unittest_OBJECTS = \ - $(am_samples_sample1_unittest_OBJECTS) -samples_sample1_unittest_DEPENDENCIES = lib/libgtest_main.la \ - samples/libsamples.la -am_samples_sample2_unittest_OBJECTS = \ - samples/sample2_unittest.$(OBJEXT) -samples_sample2_unittest_OBJECTS = \ - $(am_samples_sample2_unittest_OBJECTS) -samples_sample2_unittest_DEPENDENCIES = lib/libgtest_main.la \ - samples/libsamples.la -am_samples_sample3_unittest_OBJECTS = \ - samples/sample3_unittest.$(OBJEXT) -samples_sample3_unittest_OBJECTS = \ - $(am_samples_sample3_unittest_OBJECTS) -samples_sample3_unittest_DEPENDENCIES = lib/libgtest_main.la \ - samples/libsamples.la -am_samples_sample4_unittest_OBJECTS = \ - samples/sample4_unittest.$(OBJEXT) -samples_sample4_unittest_OBJECTS = \ - $(am_samples_sample4_unittest_OBJECTS) -samples_sample4_unittest_DEPENDENCIES = lib/libgtest_main.la \ - samples/libsamples.la -am_samples_sample5_unittest_OBJECTS = \ - samples/sample5_unittest.$(OBJEXT) -samples_sample5_unittest_OBJECTS = \ - $(am_samples_sample5_unittest_OBJECTS) -samples_sample5_unittest_DEPENDENCIES = lib/libgtest_main.la \ - samples/libsamples.la -am_samples_sample6_unittest_OBJECTS = \ - samples/sample6_unittest.$(OBJEXT) -samples_sample6_unittest_OBJECTS = \ - $(am_samples_sample6_unittest_OBJECTS) -samples_sample6_unittest_DEPENDENCIES = lib/libgtest_main.la -am_samples_sample7_unittest_OBJECTS = \ - samples/sample7_unittest.$(OBJEXT) -samples_sample7_unittest_OBJECTS = \ - $(am_samples_sample7_unittest_OBJECTS) -samples_sample7_unittest_DEPENDENCIES = lib/libgtest_main.la -am_samples_sample8_unittest_OBJECTS = \ - samples/sample8_unittest.$(OBJEXT) -samples_sample8_unittest_OBJECTS = \ - $(am_samples_sample8_unittest_OBJECTS) -samples_sample8_unittest_DEPENDENCIES = lib/libgtest_main.la -am_samples_sample9_unittest_OBJECTS = \ - samples/sample9_unittest.$(OBJEXT) -samples_sample9_unittest_OBJECTS = \ - $(am_samples_sample9_unittest_OBJECTS) -samples_sample9_unittest_DEPENDENCIES = lib/libgtest.la -am_test_gtest_death_test_test_OBJECTS = test/test_gtest_death_test_test-gtest-death-test_test.$(OBJEXT) -test_gtest_death_test_test_OBJECTS = \ - $(am_test_gtest_death_test_test_OBJECTS) -am__DEPENDENCIES_1 = -test_gtest_death_test_test_DEPENDENCIES = $(am__DEPENDENCIES_1) \ - $(am__DEPENDENCIES_1) lib/libgtest_main.la -test_gtest_death_test_test_LINK = $(LIBTOOL) --tag=CXX \ - $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CXXLD) \ - $(test_gtest_death_test_test_CXXFLAGS) $(CXXFLAGS) \ - $(AM_LDFLAGS) $(LDFLAGS) -o $@ -am_test_gtest_filepath_test_OBJECTS = \ - test/gtest-filepath_test.$(OBJEXT) -test_gtest_filepath_test_OBJECTS = \ - $(am_test_gtest_filepath_test_OBJECTS) -test_gtest_filepath_test_DEPENDENCIES = lib/libgtest_main.la -am_test_gtest_linked_ptr_test_OBJECTS = \ - test/gtest-linked_ptr_test.$(OBJEXT) -test_gtest_linked_ptr_test_OBJECTS = \ - $(am_test_gtest_linked_ptr_test_OBJECTS) -test_gtest_linked_ptr_test_DEPENDENCIES = lib/libgtest_main.la -am_test_gtest_listener_test_OBJECTS = \ - test/gtest-listener_test.$(OBJEXT) -test_gtest_listener_test_OBJECTS = \ - $(am_test_gtest_listener_test_OBJECTS) -test_gtest_listener_test_DEPENDENCIES = lib/libgtest_main.la -am_test_gtest_message_test_OBJECTS = \ - test/gtest-message_test.$(OBJEXT) -test_gtest_message_test_OBJECTS = \ - $(am_test_gtest_message_test_OBJECTS) -test_gtest_message_test_DEPENDENCIES = lib/libgtest_main.la -am_test_gtest_options_test_OBJECTS = \ - test/gtest-options_test.$(OBJEXT) -test_gtest_options_test_OBJECTS = \ - $(am_test_gtest_options_test_OBJECTS) -test_gtest_options_test_DEPENDENCIES = lib/libgtest_main.la -am_test_gtest_param_test_test_OBJECTS = \ - test/gtest-param-test_test.$(OBJEXT) \ - test/gtest-param-test2_test.$(OBJEXT) -test_gtest_param_test_test_OBJECTS = \ - $(am_test_gtest_param_test_test_OBJECTS) -test_gtest_param_test_test_DEPENDENCIES = lib/libgtest.la -am_test_gtest_port_test_OBJECTS = test/gtest-port_test.$(OBJEXT) -test_gtest_port_test_OBJECTS = $(am_test_gtest_port_test_OBJECTS) -test_gtest_port_test_DEPENDENCIES = lib/libgtest_main.la -am_test_gtest_test_part_test_OBJECTS = \ - test/gtest-test-part_test.$(OBJEXT) -test_gtest_test_part_test_OBJECTS = \ - $(am_test_gtest_test_part_test_OBJECTS) -test_gtest_test_part_test_DEPENDENCIES = lib/libgtest_main.la -am_test_gtest_tuple_test_OBJECTS = \ - test/test_gtest_tuple_test-gtest-tuple_test.$(OBJEXT) \ - src/test_gtest_tuple_test-gtest-all.$(OBJEXT) \ - src/test_gtest_tuple_test-gtest_main.$(OBJEXT) -test_gtest_tuple_test_OBJECTS = $(am_test_gtest_tuple_test_OBJECTS) -test_gtest_tuple_test_LDADD = $(LDADD) -test_gtest_tuple_test_LINK = $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) \ - $(LIBTOOLFLAGS) --mode=link $(CXXLD) \ - $(test_gtest_tuple_test_CXXFLAGS) $(CXXFLAGS) $(AM_LDFLAGS) \ - $(LDFLAGS) -o $@ -am_test_gtest_typed_test_test_OBJECTS = \ - test/gtest-typed-test_test.$(OBJEXT) \ - test/gtest-typed-test2_test.$(OBJEXT) -test_gtest_typed_test_test_OBJECTS = \ - $(am_test_gtest_typed_test_test_OBJECTS) -test_gtest_typed_test_test_DEPENDENCIES = lib/libgtest_main.la -am_test_gtest_unittest_api_test_OBJECTS = \ - test/gtest-unittest-api_test.$(OBJEXT) -test_gtest_unittest_api_test_OBJECTS = \ - $(am_test_gtest_unittest_api_test_OBJECTS) -test_gtest_unittest_api_test_DEPENDENCIES = lib/libgtest_main.la -am__test_gtest_break_on_failure_unittest__SOURCES_DIST = \ - test/gtest_break_on_failure_unittest_.cc -@HAVE_PYTHON_TRUE@am_test_gtest_break_on_failure_unittest__OBJECTS = test/gtest_break_on_failure_unittest_.$(OBJEXT) -test_gtest_break_on_failure_unittest__OBJECTS = \ - $(am_test_gtest_break_on_failure_unittest__OBJECTS) -@HAVE_PYTHON_TRUE@test_gtest_break_on_failure_unittest__DEPENDENCIES = \ -@HAVE_PYTHON_TRUE@ lib/libgtest.la -am__test_gtest_color_test__SOURCES_DIST = test/gtest_color_test_.cc -@HAVE_PYTHON_TRUE@am_test_gtest_color_test__OBJECTS = \ -@HAVE_PYTHON_TRUE@ test/gtest_color_test_.$(OBJEXT) -test_gtest_color_test__OBJECTS = $(am_test_gtest_color_test__OBJECTS) -@HAVE_PYTHON_TRUE@test_gtest_color_test__DEPENDENCIES = \ -@HAVE_PYTHON_TRUE@ lib/libgtest.la -am__test_gtest_env_var_test__SOURCES_DIST = \ - test/gtest_env_var_test_.cc -@HAVE_PYTHON_TRUE@am_test_gtest_env_var_test__OBJECTS = \ -@HAVE_PYTHON_TRUE@ test/gtest_env_var_test_.$(OBJEXT) -test_gtest_env_var_test__OBJECTS = \ - $(am_test_gtest_env_var_test__OBJECTS) -@HAVE_PYTHON_TRUE@test_gtest_env_var_test__DEPENDENCIES = \ -@HAVE_PYTHON_TRUE@ lib/libgtest.la -am_test_gtest_environment_test_OBJECTS = \ - test/gtest_environment_test.$(OBJEXT) -test_gtest_environment_test_OBJECTS = \ - $(am_test_gtest_environment_test_OBJECTS) -test_gtest_environment_test_DEPENDENCIES = lib/libgtest.la -am__test_gtest_filter_unittest__SOURCES_DIST = \ - test/gtest_filter_unittest_.cc -@HAVE_PYTHON_TRUE@am_test_gtest_filter_unittest__OBJECTS = \ -@HAVE_PYTHON_TRUE@ test/gtest_filter_unittest_.$(OBJEXT) -test_gtest_filter_unittest__OBJECTS = \ - $(am_test_gtest_filter_unittest__OBJECTS) -@HAVE_PYTHON_TRUE@test_gtest_filter_unittest__DEPENDENCIES = \ -@HAVE_PYTHON_TRUE@ lib/libgtest.la -am__test_gtest_help_test__SOURCES_DIST = test/gtest_help_test_.cc -@HAVE_PYTHON_TRUE@am_test_gtest_help_test__OBJECTS = \ -@HAVE_PYTHON_TRUE@ test/gtest_help_test_.$(OBJEXT) -test_gtest_help_test__OBJECTS = $(am_test_gtest_help_test__OBJECTS) -@HAVE_PYTHON_TRUE@test_gtest_help_test__DEPENDENCIES = \ -@HAVE_PYTHON_TRUE@ lib/libgtest_main.la -am__test_gtest_list_tests_unittest__SOURCES_DIST = \ - test/gtest_list_tests_unittest_.cc -@HAVE_PYTHON_TRUE@am_test_gtest_list_tests_unittest__OBJECTS = \ -@HAVE_PYTHON_TRUE@ test/gtest_list_tests_unittest_.$(OBJEXT) -test_gtest_list_tests_unittest__OBJECTS = \ - $(am_test_gtest_list_tests_unittest__OBJECTS) -@HAVE_PYTHON_TRUE@test_gtest_list_tests_unittest__DEPENDENCIES = \ -@HAVE_PYTHON_TRUE@ lib/libgtest.la -am_test_gtest_main_unittest_OBJECTS = \ - test/gtest_main_unittest.$(OBJEXT) -test_gtest_main_unittest_OBJECTS = \ - $(am_test_gtest_main_unittest_OBJECTS) -test_gtest_main_unittest_DEPENDENCIES = lib/libgtest_main.la -am_test_gtest_no_rtti_test_OBJECTS = \ - test/test_gtest_no_rtti_test-gtest_unittest.$(OBJEXT) \ - src/test_gtest_no_rtti_test-gtest-all.$(OBJEXT) \ - src/test_gtest_no_rtti_test-gtest_main.$(OBJEXT) -test_gtest_no_rtti_test_OBJECTS = \ - $(am_test_gtest_no_rtti_test_OBJECTS) -test_gtest_no_rtti_test_LDADD = $(LDADD) -test_gtest_no_rtti_test_LINK = $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) \ - $(LIBTOOLFLAGS) --mode=link $(CXXLD) \ - $(test_gtest_no_rtti_test_CXXFLAGS) $(CXXFLAGS) $(AM_LDFLAGS) \ - $(LDFLAGS) -o $@ -am_test_gtest_no_test_unittest_OBJECTS = \ - test/gtest_no_test_unittest.$(OBJEXT) -test_gtest_no_test_unittest_OBJECTS = \ - $(am_test_gtest_no_test_unittest_OBJECTS) -test_gtest_no_test_unittest_DEPENDENCIES = lib/libgtest.la -am__test_gtest_output_test__SOURCES_DIST = test/gtest_output_test_.cc -@HAVE_PYTHON_TRUE@am_test_gtest_output_test__OBJECTS = \ -@HAVE_PYTHON_TRUE@ test/gtest_output_test_.$(OBJEXT) -test_gtest_output_test__OBJECTS = \ - $(am_test_gtest_output_test__OBJECTS) -@HAVE_PYTHON_TRUE@test_gtest_output_test__DEPENDENCIES = \ -@HAVE_PYTHON_TRUE@ lib/libgtest.la -am_test_gtest_pred_impl_unittest_OBJECTS = \ - test/gtest_pred_impl_unittest.$(OBJEXT) -test_gtest_pred_impl_unittest_OBJECTS = \ - $(am_test_gtest_pred_impl_unittest_OBJECTS) -test_gtest_pred_impl_unittest_DEPENDENCIES = lib/libgtest_main.la -am_test_gtest_prod_test_OBJECTS = test/gtest_prod_test.$(OBJEXT) \ - test/production.$(OBJEXT) -test_gtest_prod_test_OBJECTS = $(am_test_gtest_prod_test_OBJECTS) -test_gtest_prod_test_DEPENDENCIES = lib/libgtest_main.la -am_test_gtest_repeat_test_OBJECTS = test/gtest_repeat_test.$(OBJEXT) -test_gtest_repeat_test_OBJECTS = $(am_test_gtest_repeat_test_OBJECTS) -test_gtest_repeat_test_DEPENDENCIES = lib/libgtest.la -am__test_gtest_shuffle_test__SOURCES_DIST = \ - test/gtest_shuffle_test_.cc -@HAVE_PYTHON_TRUE@am_test_gtest_shuffle_test__OBJECTS = \ -@HAVE_PYTHON_TRUE@ test/gtest_shuffle_test_.$(OBJEXT) -test_gtest_shuffle_test__OBJECTS = \ - $(am_test_gtest_shuffle_test__OBJECTS) -@HAVE_PYTHON_TRUE@test_gtest_shuffle_test__DEPENDENCIES = \ -@HAVE_PYTHON_TRUE@ lib/libgtest.la -am_test_gtest_sole_header_test_OBJECTS = \ - test/gtest_sole_header_test.$(OBJEXT) -test_gtest_sole_header_test_OBJECTS = \ - $(am_test_gtest_sole_header_test_OBJECTS) -test_gtest_sole_header_test_DEPENDENCIES = lib/libgtest_main.la -am_test_gtest_stress_test_OBJECTS = test/gtest_stress_test.$(OBJEXT) -test_gtest_stress_test_OBJECTS = $(am_test_gtest_stress_test_OBJECTS) -test_gtest_stress_test_DEPENDENCIES = lib/libgtest.la -am_test_gtest_throw_on_failure_ex_test_OBJECTS = test/test_gtest_throw_on_failure_ex_test-gtest_throw_on_failure_ex_test.$(OBJEXT) \ - src/test_gtest_throw_on_failure_ex_test-gtest-all.$(OBJEXT) -test_gtest_throw_on_failure_ex_test_OBJECTS = \ - $(am_test_gtest_throw_on_failure_ex_test_OBJECTS) -test_gtest_throw_on_failure_ex_test_LDADD = $(LDADD) -test_gtest_throw_on_failure_ex_test_LINK = $(LIBTOOL) --tag=CXX \ - $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CXXLD) \ - $(test_gtest_throw_on_failure_ex_test_CXXFLAGS) $(CXXFLAGS) \ - $(AM_LDFLAGS) $(LDFLAGS) -o $@ -am__test_gtest_throw_on_failure_test__SOURCES_DIST = \ - test/gtest_throw_on_failure_test_.cc src/gtest-all.cc -@HAVE_PYTHON_TRUE@am_test_gtest_throw_on_failure_test__OBJECTS = test/test_gtest_throw_on_failure_test_-gtest_throw_on_failure_test_.$(OBJEXT) \ -@HAVE_PYTHON_TRUE@ src/test_gtest_throw_on_failure_test_-gtest-all.$(OBJEXT) -test_gtest_throw_on_failure_test__OBJECTS = \ - $(am_test_gtest_throw_on_failure_test__OBJECTS) -test_gtest_throw_on_failure_test__LDADD = $(LDADD) -test_gtest_throw_on_failure_test__LINK = $(LIBTOOL) --tag=CXX \ - $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CXXLD) \ - $(test_gtest_throw_on_failure_test__CXXFLAGS) $(CXXFLAGS) \ - $(AM_LDFLAGS) $(LDFLAGS) -o $@ -am__test_gtest_uninitialized_test__SOURCES_DIST = \ - test/gtest_uninitialized_test_.cc -@HAVE_PYTHON_TRUE@am_test_gtest_uninitialized_test__OBJECTS = \ -@HAVE_PYTHON_TRUE@ test/gtest_uninitialized_test_.$(OBJEXT) -test_gtest_uninitialized_test__OBJECTS = \ - $(am_test_gtest_uninitialized_test__OBJECTS) -@HAVE_PYTHON_TRUE@test_gtest_uninitialized_test__DEPENDENCIES = \ -@HAVE_PYTHON_TRUE@ lib/libgtest.la -am_test_gtest_unittest_OBJECTS = test/gtest_unittest.$(OBJEXT) -test_gtest_unittest_OBJECTS = $(am_test_gtest_unittest_OBJECTS) -test_gtest_unittest_DEPENDENCIES = lib/libgtest_main.la -am_test_gtest_use_own_tuple_test_OBJECTS = test/test_gtest_use_own_tuple_test-gtest-param-test_test.$(OBJEXT) \ - test/test_gtest_use_own_tuple_test-gtest-param-test2_test.$(OBJEXT) \ - src/test_gtest_use_own_tuple_test-gtest-all.$(OBJEXT) -test_gtest_use_own_tuple_test_OBJECTS = \ - $(am_test_gtest_use_own_tuple_test_OBJECTS) -test_gtest_use_own_tuple_test_LDADD = $(LDADD) -test_gtest_use_own_tuple_test_LINK = $(LIBTOOL) --tag=CXX \ - $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CXXLD) \ - $(test_gtest_use_own_tuple_test_CXXFLAGS) $(CXXFLAGS) \ - $(AM_LDFLAGS) $(LDFLAGS) -o $@ -am__test_gtest_xml_outfile1_test__SOURCES_DIST = \ - test/gtest_xml_outfile1_test_.cc -@HAVE_PYTHON_TRUE@am_test_gtest_xml_outfile1_test__OBJECTS = \ -@HAVE_PYTHON_TRUE@ test/gtest_xml_outfile1_test_.$(OBJEXT) -test_gtest_xml_outfile1_test__OBJECTS = \ - $(am_test_gtest_xml_outfile1_test__OBJECTS) -@HAVE_PYTHON_TRUE@test_gtest_xml_outfile1_test__DEPENDENCIES = \ -@HAVE_PYTHON_TRUE@ lib/libgtest_main.la -am__test_gtest_xml_outfile2_test__SOURCES_DIST = \ - test/gtest_xml_outfile2_test_.cc -@HAVE_PYTHON_TRUE@am_test_gtest_xml_outfile2_test__OBJECTS = \ -@HAVE_PYTHON_TRUE@ test/gtest_xml_outfile2_test_.$(OBJEXT) -test_gtest_xml_outfile2_test__OBJECTS = \ - $(am_test_gtest_xml_outfile2_test__OBJECTS) -@HAVE_PYTHON_TRUE@test_gtest_xml_outfile2_test__DEPENDENCIES = \ -@HAVE_PYTHON_TRUE@ lib/libgtest_main.la -am__test_gtest_xml_output_unittest__SOURCES_DIST = \ - test/gtest_xml_output_unittest_.cc -@HAVE_PYTHON_TRUE@am_test_gtest_xml_output_unittest__OBJECTS = \ -@HAVE_PYTHON_TRUE@ test/gtest_xml_output_unittest_.$(OBJEXT) -test_gtest_xml_output_unittest__OBJECTS = \ - $(am_test_gtest_xml_output_unittest__OBJECTS) -@HAVE_PYTHON_TRUE@test_gtest_xml_output_unittest__DEPENDENCIES = \ -@HAVE_PYTHON_TRUE@ lib/libgtest.la -binSCRIPT_INSTALL = $(INSTALL_SCRIPT) -SCRIPTS = $(bin_SCRIPTS) -DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)/build-aux -depcomp = $(SHELL) $(top_srcdir)/build-aux/depcomp -am__depfiles_maybe = depfiles -CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ - $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -LTCXXCOMPILE = $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ - --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ - $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -CXXLD = $(CXX) -CXXLINK = $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ - --mode=link $(CXXLD) $(AM_CXXFLAGS) $(CXXFLAGS) $(AM_LDFLAGS) \ - $(LDFLAGS) -o $@ -COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ - $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -LTCOMPILE = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ - --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ - $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -CCLD = $(CC) -LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ - --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \ - $(LDFLAGS) -o $@ -SOURCES = $(lib_libgtest_la_SOURCES) $(lib_libgtest_main_la_SOURCES) \ - $(samples_libsamples_la_SOURCES) \ - $(samples_sample10_unittest_SOURCES) \ - $(samples_sample1_unittest_SOURCES) \ - $(samples_sample2_unittest_SOURCES) \ - $(samples_sample3_unittest_SOURCES) \ - $(samples_sample4_unittest_SOURCES) \ - $(samples_sample5_unittest_SOURCES) \ - $(samples_sample6_unittest_SOURCES) \ - $(samples_sample7_unittest_SOURCES) \ - $(samples_sample8_unittest_SOURCES) \ - $(samples_sample9_unittest_SOURCES) \ - $(test_gtest_death_test_test_SOURCES) \ - $(test_gtest_filepath_test_SOURCES) \ - $(test_gtest_linked_ptr_test_SOURCES) \ - $(test_gtest_listener_test_SOURCES) \ - $(test_gtest_message_test_SOURCES) \ - $(test_gtest_options_test_SOURCES) \ - $(test_gtest_param_test_test_SOURCES) \ - $(test_gtest_port_test_SOURCES) \ - $(test_gtest_test_part_test_SOURCES) \ - $(test_gtest_tuple_test_SOURCES) \ - $(test_gtest_typed_test_test_SOURCES) \ - $(test_gtest_unittest_api_test_SOURCES) \ - $(test_gtest_break_on_failure_unittest__SOURCES) \ - $(test_gtest_color_test__SOURCES) \ - $(test_gtest_env_var_test__SOURCES) \ - $(test_gtest_environment_test_SOURCES) \ - $(test_gtest_filter_unittest__SOURCES) \ - $(test_gtest_help_test__SOURCES) \ - $(test_gtest_list_tests_unittest__SOURCES) \ - $(test_gtest_main_unittest_SOURCES) \ - $(test_gtest_no_rtti_test_SOURCES) \ - $(test_gtest_no_test_unittest_SOURCES) \ - $(test_gtest_output_test__SOURCES) \ - $(test_gtest_pred_impl_unittest_SOURCES) \ - $(test_gtest_prod_test_SOURCES) \ - $(test_gtest_repeat_test_SOURCES) \ - $(test_gtest_shuffle_test__SOURCES) \ - $(test_gtest_sole_header_test_SOURCES) \ - $(test_gtest_stress_test_SOURCES) \ - $(test_gtest_throw_on_failure_ex_test_SOURCES) \ - $(test_gtest_throw_on_failure_test__SOURCES) \ - $(test_gtest_uninitialized_test__SOURCES) \ - $(test_gtest_unittest_SOURCES) \ - $(test_gtest_use_own_tuple_test_SOURCES) \ - $(test_gtest_xml_outfile1_test__SOURCES) \ - $(test_gtest_xml_outfile2_test__SOURCES) \ - $(test_gtest_xml_output_unittest__SOURCES) -DIST_SOURCES = $(lib_libgtest_la_SOURCES) \ - $(lib_libgtest_main_la_SOURCES) \ - $(samples_libsamples_la_SOURCES) \ - $(samples_sample10_unittest_SOURCES) \ - $(samples_sample1_unittest_SOURCES) \ - $(samples_sample2_unittest_SOURCES) \ - $(samples_sample3_unittest_SOURCES) \ - $(samples_sample4_unittest_SOURCES) \ - $(samples_sample5_unittest_SOURCES) \ - $(samples_sample6_unittest_SOURCES) \ - $(samples_sample7_unittest_SOURCES) \ - $(samples_sample8_unittest_SOURCES) \ - $(samples_sample9_unittest_SOURCES) \ - $(test_gtest_death_test_test_SOURCES) \ - $(test_gtest_filepath_test_SOURCES) \ - $(test_gtest_linked_ptr_test_SOURCES) \ - $(test_gtest_listener_test_SOURCES) \ - $(test_gtest_message_test_SOURCES) \ - $(test_gtest_options_test_SOURCES) \ - $(test_gtest_param_test_test_SOURCES) \ - $(test_gtest_port_test_SOURCES) \ - $(test_gtest_test_part_test_SOURCES) \ - $(test_gtest_tuple_test_SOURCES) \ - $(test_gtest_typed_test_test_SOURCES) \ - $(test_gtest_unittest_api_test_SOURCES) \ - $(am__test_gtest_break_on_failure_unittest__SOURCES_DIST) \ - $(am__test_gtest_color_test__SOURCES_DIST) \ - $(am__test_gtest_env_var_test__SOURCES_DIST) \ - $(test_gtest_environment_test_SOURCES) \ - $(am__test_gtest_filter_unittest__SOURCES_DIST) \ - $(am__test_gtest_help_test__SOURCES_DIST) \ - $(am__test_gtest_list_tests_unittest__SOURCES_DIST) \ - $(test_gtest_main_unittest_SOURCES) \ - $(test_gtest_no_rtti_test_SOURCES) \ - $(test_gtest_no_test_unittest_SOURCES) \ - $(am__test_gtest_output_test__SOURCES_DIST) \ - $(test_gtest_pred_impl_unittest_SOURCES) \ - $(test_gtest_prod_test_SOURCES) \ - $(test_gtest_repeat_test_SOURCES) \ - $(am__test_gtest_shuffle_test__SOURCES_DIST) \ - $(test_gtest_sole_header_test_SOURCES) \ - $(test_gtest_stress_test_SOURCES) \ - $(test_gtest_throw_on_failure_ex_test_SOURCES) \ - $(am__test_gtest_throw_on_failure_test__SOURCES_DIST) \ - $(am__test_gtest_uninitialized_test__SOURCES_DIST) \ - $(test_gtest_unittest_SOURCES) \ - $(test_gtest_use_own_tuple_test_SOURCES) \ - $(am__test_gtest_xml_outfile1_test__SOURCES_DIST) \ - $(am__test_gtest_xml_outfile2_test__SOURCES_DIST) \ - $(am__test_gtest_xml_output_unittest__SOURCES_DIST) -m4dataDATA_INSTALL = $(INSTALL_DATA) -DATA = $(m4data_DATA) -pkgincludeHEADERS_INSTALL = $(INSTALL_HEADER) -pkginclude_internalHEADERS_INSTALL = $(INSTALL_HEADER) -HEADERS = $(pkginclude_HEADERS) $(pkginclude_internal_HEADERS) -ETAGS = etags -CTAGS = ctags -DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) -distdir = $(PACKAGE)-$(VERSION) -top_distdir = $(distdir) -am__remove_distdir = \ - { test ! -d $(distdir) \ - || { find $(distdir) -type d ! -perm -200 -exec chmod u+w {} ';' \ - && rm -fr $(distdir); }; } -DIST_ARCHIVES = $(distdir).tar.gz $(distdir).tar.bz2 $(distdir).zip -GZIP_ENV = --best -distuninstallcheck_listfiles = find . -type f -print -distcleancheck_listfiles = find . -type f -print -ACLOCAL = @ACLOCAL@ -AMTAR = @AMTAR@ -AR = @AR@ -AUTOCONF = @AUTOCONF@ -AUTOHEADER = @AUTOHEADER@ -AUTOMAKE = @AUTOMAKE@ -AWK = @AWK@ -CC = @CC@ -CCDEPMODE = @CCDEPMODE@ -CFLAGS = @CFLAGS@ -CPP = @CPP@ -CPPFLAGS = @CPPFLAGS@ -CXX = @CXX@ -CXXCPP = @CXXCPP@ -CXXDEPMODE = @CXXDEPMODE@ -CXXFLAGS = @CXXFLAGS@ -CYGPATH_W = @CYGPATH_W@ -DEFS = @DEFS@ -DEPDIR = @DEPDIR@ -DSYMUTIL = @DSYMUTIL@ -DUMPBIN = @DUMPBIN@ -ECHO_C = @ECHO_C@ -ECHO_N = @ECHO_N@ -ECHO_T = @ECHO_T@ -EGREP = @EGREP@ -EXEEXT = @EXEEXT@ -FGREP = @FGREP@ -GREP = @GREP@ -INSTALL = @INSTALL@ -INSTALL_DATA = @INSTALL_DATA@ -INSTALL_PROGRAM = @INSTALL_PROGRAM@ -INSTALL_SCRIPT = @INSTALL_SCRIPT@ -INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ -LD = @LD@ -LDFLAGS = @LDFLAGS@ -LIBOBJS = @LIBOBJS@ -LIBS = @LIBS@ -LIBTOOL = @LIBTOOL@ -LIPO = @LIPO@ -LN_S = @LN_S@ -LTLIBOBJS = @LTLIBOBJS@ -MAKEINFO = @MAKEINFO@ -MKDIR_P = @MKDIR_P@ -NM = @NM@ -NMEDIT = @NMEDIT@ -OBJEXT = @OBJEXT@ -OTOOL = @OTOOL@ -OTOOL64 = @OTOOL64@ -PACKAGE = @PACKAGE@ -PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ -PACKAGE_NAME = @PACKAGE_NAME@ -PACKAGE_STRING = @PACKAGE_STRING@ -PACKAGE_TARNAME = @PACKAGE_TARNAME@ -PACKAGE_VERSION = @PACKAGE_VERSION@ -PATH_SEPARATOR = @PATH_SEPARATOR@ -PTHREAD_CC = @PTHREAD_CC@ -PTHREAD_CFLAGS = @PTHREAD_CFLAGS@ -PTHREAD_LIBS = @PTHREAD_LIBS@ -PYTHON = @PYTHON@ -RANLIB = @RANLIB@ -SED = @SED@ -SET_MAKE = @SET_MAKE@ -SHELL = @SHELL@ -STRIP = @STRIP@ -VERSION = @VERSION@ -abs_builddir = @abs_builddir@ -abs_srcdir = @abs_srcdir@ -abs_top_builddir = @abs_top_builddir@ -abs_top_srcdir = @abs_top_srcdir@ -ac_ct_CC = @ac_ct_CC@ -ac_ct_CXX = @ac_ct_CXX@ -ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ -acx_pthread_config = @acx_pthread_config@ -am__include = @am__include@ -am__leading_dot = @am__leading_dot@ -am__quote = @am__quote@ -am__tar = @am__tar@ -am__untar = @am__untar@ -bindir = @bindir@ -build = @build@ -build_alias = @build_alias@ -build_cpu = @build_cpu@ -build_os = @build_os@ -build_vendor = @build_vendor@ -builddir = @builddir@ -datadir = @datadir@ -datarootdir = @datarootdir@ -docdir = @docdir@ -dvidir = @dvidir@ -exec_prefix = @exec_prefix@ -host = @host@ -host_alias = @host_alias@ -host_cpu = @host_cpu@ -host_os = @host_os@ -host_vendor = @host_vendor@ -htmldir = @htmldir@ -includedir = @includedir@ -infodir = @infodir@ -install_sh = @install_sh@ -libdir = @libdir@ -libexecdir = @libexecdir@ -localedir = @localedir@ -localstatedir = @localstatedir@ -lt_ECHO = @lt_ECHO@ -mandir = @mandir@ -mkdir_p = @mkdir_p@ -oldincludedir = @oldincludedir@ -pdfdir = @pdfdir@ -prefix = @prefix@ -program_transform_name = @program_transform_name@ -psdir = @psdir@ -sbindir = @sbindir@ -sharedstatedir = @sharedstatedir@ -srcdir = @srcdir@ -sysconfdir = @sysconfdir@ -target_alias = @target_alias@ -top_builddir = @top_builddir@ -top_srcdir = @top_srcdir@ - -# Nonstandard package files for distribution - -# MSVC project files - -# xcode project files - -# xcode sample files - -# C++Builder project files -EXTRA_DIST = CHANGES CONTRIBUTORS \ - include/gtest/gtest-param-test.h.pump \ - include/gtest/internal/gtest-tuple.h.pump \ - include/gtest/internal/gtest-type-util.h.pump \ - include/gtest/internal/gtest-param-util-generated.h.pump \ - make/Makefile scons/SConscript scons/SConstruct \ - scons/SConstruct.common scripts/fuse_gtest_files.py \ - scripts/gen_gtest_pred_impl.py scripts/test/Makefile \ - test/gtest_all_test.cc msvc/gtest-md.sln msvc/gtest.sln \ - msvc/gtest-md.vcproj msvc/gtest.vcproj \ - msvc/gtest_main-md.vcproj msvc/gtest_main.vcproj \ - msvc/gtest_prod_test-md.vcproj msvc/gtest_prod_test.vcproj \ - msvc/gtest_unittest-md.vcproj msvc/gtest_unittest.vcproj \ - xcode/Config/DebugProject.xcconfig \ - xcode/Config/FrameworkTarget.xcconfig \ - xcode/Config/General.xcconfig \ - xcode/Config/ReleaseProject.xcconfig \ - xcode/Config/StaticLibraryTarget.xcconfig \ - xcode/Config/TestTarget.xcconfig xcode/Resources/Info.plist \ - xcode/Scripts/versiongenerate.py xcode/Scripts/runtests.sh \ - xcode/gtest.xcodeproj/project.pbxproj \ - xcode/Samples/FrameworkSample/Info.plist \ - xcode/Samples/FrameworkSample/widget_test.cc \ - xcode/Samples/FrameworkSample/widget.cc \ - xcode/Samples/FrameworkSample/widget.h \ - xcode/Samples/FrameworkSample/WidgetFramework.xcodeproj/project.pbxproj \ - codegear/gtest_all.cc codegear/gtest_link.cc \ - codegear/gtest.cbproj codegear/gtest_main.cbproj \ - codegear/gtest_unittest.cbproj codegear/gtest.groupproj \ - $(m4data_DATA) $(am__append_3) - -# TODO(wan@google.com): integrate scripts/gen_gtest_pred_impl.py into -# the build system such that a user can specify the maximum predicate -# arity here and have the script automatically generate the -# corresponding .h and .cc files. - -# Scripts and utilities -bin_SCRIPTS = scripts/gtest-config -CLEANFILES = $(bin_SCRIPTS) - -# Distribute and install M4 macro -m4datadir = $(datadir)/aclocal -m4data_DATA = m4/gtest.m4 - -# We define the global AM_CPPFLAGS as everything we compile includes from these -# directories. -AM_CPPFLAGS = -I$(srcdir) -I$(srcdir)/include - -# Build rules for libraries. -lib_LTLIBRARIES = lib/libgtest.la lib/libgtest_main.la -lib_libgtest_la_SOURCES = src/gtest.cc \ - src/gtest-death-test.cc \ - src/gtest-filepath.cc \ - src/gtest-internal-inl.h \ - src/gtest-port.cc \ - src/gtest-test-part.cc \ - src/gtest-typed-test.cc - -pkginclude_HEADERS = include/gtest/gtest.h \ - include/gtest/gtest-death-test.h \ - include/gtest/gtest-message.h \ - include/gtest/gtest-param-test.h \ - include/gtest/gtest_pred_impl.h \ - include/gtest/gtest_prod.h \ - include/gtest/gtest-spi.h \ - include/gtest/gtest-test-part.h \ - include/gtest/gtest-typed-test.h - -pkginclude_internaldir = $(pkgincludedir)/internal -pkginclude_internal_HEADERS = \ - include/gtest/internal/gtest-death-test-internal.h \ - include/gtest/internal/gtest-filepath.h \ - include/gtest/internal/gtest-internal.h \ - include/gtest/internal/gtest-linked_ptr.h \ - include/gtest/internal/gtest-param-util-generated.h \ - include/gtest/internal/gtest-param-util.h \ - include/gtest/internal/gtest-port.h \ - include/gtest/internal/gtest-string.h \ - include/gtest/internal/gtest-tuple.h \ - include/gtest/internal/gtest-type-util.h - -lib_libgtest_main_la_SOURCES = src/gtest_main.cc -lib_libgtest_main_la_LIBADD = lib/libgtest.la - -# Bulid rules for samples and tests. Automake's naming for some of -# these variables isn't terribly obvious, so this is a brief -# reference: -# -# TESTS -- Programs run automatically by "make check" -# check_PROGRAMS -- Programs built by "make check" but not necessarily run -noinst_LTLIBRARIES = samples/libsamples.la -samples_libsamples_la_SOURCES = samples/sample1.cc \ - samples/sample1.h \ - samples/sample2.cc \ - samples/sample2.h \ - samples/sample3-inl.h \ - samples/sample4.cc \ - samples/sample4.h - -TESTS_ENVIRONMENT = GTEST_SOURCE_DIR="$(srcdir)/test" \ - GTEST_BUILD_DIR="$(top_builddir)/test" - -samples_sample1_unittest_SOURCES = samples/sample1_unittest.cc -samples_sample1_unittest_LDADD = lib/libgtest_main.la \ - samples/libsamples.la - -samples_sample2_unittest_SOURCES = samples/sample2_unittest.cc -samples_sample2_unittest_LDADD = lib/libgtest_main.la \ - samples/libsamples.la - -samples_sample3_unittest_SOURCES = samples/sample3_unittest.cc -samples_sample3_unittest_LDADD = lib/libgtest_main.la \ - samples/libsamples.la - -samples_sample4_unittest_SOURCES = samples/sample4_unittest.cc -samples_sample4_unittest_LDADD = lib/libgtest_main.la \ - samples/libsamples.la - -samples_sample5_unittest_SOURCES = samples/sample5_unittest.cc -samples_sample5_unittest_LDADD = lib/libgtest_main.la \ - samples/libsamples.la - -samples_sample6_unittest_SOURCES = samples/prime_tables.h \ - samples/sample6_unittest.cc - -samples_sample6_unittest_LDADD = lib/libgtest_main.la -samples_sample7_unittest_SOURCES = samples/prime_tables.h \ - samples/sample7_unittest.cc - -samples_sample7_unittest_LDADD = lib/libgtest_main.la -samples_sample8_unittest_SOURCES = samples/prime_tables.h \ - samples/sample8_unittest.cc - -samples_sample8_unittest_LDADD = lib/libgtest_main.la -samples_sample9_unittest_SOURCES = samples/sample9_unittest.cc -samples_sample9_unittest_LDADD = lib/libgtest.la -samples_sample10_unittest_SOURCES = samples/sample10_unittest.cc -samples_sample10_unittest_LDADD = lib/libgtest.la -test_gtest_death_test_test_SOURCES = test/gtest-death-test_test.cc -test_gtest_death_test_test_CXXFLAGS = $(AM_CXXFLAGS) $(PTHREAD_CFLAGS) -test_gtest_death_test_test_LDADD = $(PTHREAD_LIBS) $(PTHREAD_CFLAGS) \ - lib/libgtest_main.la - -test_gtest_environment_test_SOURCES = test/gtest_environment_test.cc -test_gtest_environment_test_LDADD = lib/libgtest.la -test_gtest_filepath_test_SOURCES = test/gtest-filepath_test.cc -test_gtest_filepath_test_LDADD = lib/libgtest_main.la -test_gtest_linked_ptr_test_SOURCES = test/gtest-linked_ptr_test.cc -test_gtest_linked_ptr_test_LDADD = lib/libgtest_main.la -test_gtest_main_unittest_SOURCES = test/gtest_main_unittest.cc -test_gtest_main_unittest_LDADD = lib/libgtest_main.la -test_gtest_message_test_SOURCES = test/gtest-message_test.cc -test_gtest_message_test_LDADD = lib/libgtest_main.la -test_gtest_no_test_unittest_SOURCES = test/gtest_no_test_unittest.cc -test_gtest_no_test_unittest_LDADD = lib/libgtest.la -test_gtest_options_test_SOURCES = test/gtest-options_test.cc -test_gtest_options_test_LDADD = lib/libgtest_main.la -test_gtest_param_test_test_SOURCES = test/gtest-param-test_test.cc \ - test/gtest-param-test2_test.cc \ - test/gtest-param-test_test.h - -test_gtest_param_test_test_LDADD = lib/libgtest.la -test_gtest_port_test_SOURCES = test/gtest-port_test.cc -test_gtest_port_test_LDADD = lib/libgtest_main.la -test_gtest_pred_impl_unittest_SOURCES = test/gtest_pred_impl_unittest.cc -test_gtest_pred_impl_unittest_LDADD = lib/libgtest_main.la -test_gtest_prod_test_SOURCES = test/gtest_prod_test.cc \ - test/production.cc \ - test/production.h - -test_gtest_prod_test_LDADD = lib/libgtest_main.la -test_gtest_repeat_test_SOURCES = test/gtest_repeat_test.cc -test_gtest_repeat_test_LDADD = lib/libgtest.la -test_gtest_sole_header_test_SOURCES = test/gtest_sole_header_test.cc -test_gtest_sole_header_test_LDADD = lib/libgtest_main.la -test_gtest_stress_test_SOURCES = test/gtest_stress_test.cc -test_gtest_stress_test_LDADD = lib/libgtest.la -test_gtest_test_part_test_SOURCES = test/gtest-test-part_test.cc -test_gtest_test_part_test_LDADD = lib/libgtest_main.la -test_gtest_throw_on_failure_ex_test_SOURCES = \ - test/gtest_throw_on_failure_ex_test.cc \ - src/gtest-all.cc - -test_gtest_throw_on_failure_ex_test_CXXFLAGS = $(AM_CXXFLAGS) -fexceptions -test_gtest_typed_test_test_SOURCES = test/gtest-typed-test_test.cc \ - test/gtest-typed-test2_test.cc \ - test/gtest-typed-test_test.h - -test_gtest_typed_test_test_LDADD = lib/libgtest_main.la -test_gtest_unittest_SOURCES = test/gtest_unittest.cc -test_gtest_unittest_LDADD = lib/libgtest_main.la -test_gtest_unittest_api_test_SOURCES = test/gtest-unittest-api_test.cc -test_gtest_unittest_api_test_LDADD = lib/libgtest_main.la -test_gtest_listener_test_SOURCES = test/gtest-listener_test.cc -test_gtest_listener_test_LDADD = lib/libgtest_main.la -test_gtest_no_rtti_test_SOURCES = test/gtest_unittest.cc \ - src/gtest-all.cc \ - src/gtest_main.cc - -test_gtest_no_rtti_test_CXXFLAGS = $(AM_CXXFLAGS) -fno-rtti -DGTEST_HAS_RTTI=0 -test_gtest_tuple_test_SOURCES = test/gtest-tuple_test.cc \ - src/gtest-all.cc \ - src/gtest_main.cc - -test_gtest_tuple_test_CXXFLAGS = $(AM_CXXFLAGS) -DGTEST_USE_OWN_TR1_TUPLE=1 -test_gtest_use_own_tuple_test_SOURCES = test/gtest-param-test_test.cc \ - test/gtest-param-test2_test.cc \ - src/gtest-all.cc - -test_gtest_use_own_tuple_test_CXXFLAGS = \ - $(AM_CXXFLAGS) -DGTEST_USE_OWN_TR1_TUPLE=1 - - -# The following tests depend on the presence of a Python installation and are -# keyed off of it. TODO(chandlerc@google.com): While we currently only attempt -# to build and execute these tests if Autoconf has found Python v2.4 on the -# system, we don't use the PYTHON variable it specified as the valid -# interpreter. The problem is that TESTS_ENVIRONMENT is a global variable, and -# thus we cannot distinguish between C++ unit tests and Python unit tests. - -# These two Python modules are used by multiple Python tests below. -@HAVE_PYTHON_TRUE@check_SCRIPTS = test/gtest_test_utils.py \ -@HAVE_PYTHON_TRUE@ test/gtest_xml_test_utils.py \ -@HAVE_PYTHON_TRUE@ test/gtest_break_on_failure_unittest.py \ -@HAVE_PYTHON_TRUE@ test/gtest_color_test.py \ -@HAVE_PYTHON_TRUE@ test/gtest_env_var_test.py \ -@HAVE_PYTHON_TRUE@ test/gtest_filter_unittest.py \ -@HAVE_PYTHON_TRUE@ test/gtest_help_test.py \ -@HAVE_PYTHON_TRUE@ test/gtest_list_tests_unittest.py \ -@HAVE_PYTHON_TRUE@ test/gtest_output_test.py \ -@HAVE_PYTHON_TRUE@ test/gtest_shuffle_test.py \ -@HAVE_PYTHON_TRUE@ test/gtest_throw_on_failure_test.py \ -@HAVE_PYTHON_TRUE@ test/gtest_uninitialized_test.py \ -@HAVE_PYTHON_TRUE@ test/gtest_xml_outfiles_test.py \ -@HAVE_PYTHON_TRUE@ test/gtest_xml_output_unittest.py -@HAVE_PYTHON_TRUE@test_gtest_break_on_failure_unittest__SOURCES = \ -@HAVE_PYTHON_TRUE@ test/gtest_break_on_failure_unittest_.cc - -@HAVE_PYTHON_TRUE@test_gtest_break_on_failure_unittest__LDADD = lib/libgtest.la -@HAVE_PYTHON_TRUE@test_gtest_color_test__SOURCES = test/gtest_color_test_.cc -@HAVE_PYTHON_TRUE@test_gtest_color_test__LDADD = lib/libgtest.la -@HAVE_PYTHON_TRUE@test_gtest_env_var_test__SOURCES = test/gtest_env_var_test_.cc -@HAVE_PYTHON_TRUE@test_gtest_env_var_test__LDADD = lib/libgtest.la -@HAVE_PYTHON_TRUE@test_gtest_filter_unittest__SOURCES = test/gtest_filter_unittest_.cc -@HAVE_PYTHON_TRUE@test_gtest_filter_unittest__LDADD = lib/libgtest.la -@HAVE_PYTHON_TRUE@test_gtest_help_test__SOURCES = test/gtest_help_test_.cc -@HAVE_PYTHON_TRUE@test_gtest_help_test__LDADD = lib/libgtest_main.la -@HAVE_PYTHON_TRUE@test_gtest_list_tests_unittest__SOURCES = test/gtest_list_tests_unittest_.cc -@HAVE_PYTHON_TRUE@test_gtest_list_tests_unittest__LDADD = lib/libgtest.la -@HAVE_PYTHON_TRUE@test_gtest_output_test__SOURCES = test/gtest_output_test_.cc -@HAVE_PYTHON_TRUE@test_gtest_output_test__LDADD = lib/libgtest.la -@HAVE_PYTHON_TRUE@test_gtest_shuffle_test__SOURCES = test/gtest_shuffle_test_.cc -@HAVE_PYTHON_TRUE@test_gtest_shuffle_test__LDADD = lib/libgtest.la -@HAVE_PYTHON_TRUE@test_gtest_throw_on_failure_test__SOURCES = \ -@HAVE_PYTHON_TRUE@ test/gtest_throw_on_failure_test_.cc \ -@HAVE_PYTHON_TRUE@ src/gtest-all.cc - -@HAVE_PYTHON_TRUE@test_gtest_throw_on_failure_test__CXXFLAGS = $(AM_CXXFLAGS) -fno-exceptions -@HAVE_PYTHON_TRUE@test_gtest_uninitialized_test__SOURCES = test/gtest_uninitialized_test_.cc -@HAVE_PYTHON_TRUE@test_gtest_uninitialized_test__LDADD = lib/libgtest.la -@HAVE_PYTHON_TRUE@test_gtest_xml_outfile1_test__SOURCES = test/gtest_xml_outfile1_test_.cc -@HAVE_PYTHON_TRUE@test_gtest_xml_outfile1_test__LDADD = lib/libgtest_main.la -@HAVE_PYTHON_TRUE@test_gtest_xml_outfile2_test__SOURCES = test/gtest_xml_outfile2_test_.cc -@HAVE_PYTHON_TRUE@test_gtest_xml_outfile2_test__LDADD = lib/libgtest_main.la -@HAVE_PYTHON_TRUE@test_gtest_xml_output_unittest__SOURCES = test/gtest_xml_output_unittest_.cc -@HAVE_PYTHON_TRUE@test_gtest_xml_output_unittest__LDADD = lib/libgtest.la -all: all-am - -.SUFFIXES: -.SUFFIXES: .cc .lo .o .obj -am--refresh: - @: -$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) - @for dep in $?; do \ - case '$(am__configure_deps)' in \ - *$$dep*) \ - echo ' cd $(srcdir) && $(AUTOMAKE) --foreign '; \ - cd $(srcdir) && $(AUTOMAKE) --foreign \ - && exit 0; \ - exit 1;; \ - esac; \ - done; \ - echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign Makefile'; \ - cd $(top_srcdir) && \ - $(AUTOMAKE) --foreign Makefile -.PRECIOUS: Makefile -Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status - @case '$?' in \ - *config.status*) \ - echo ' $(SHELL) ./config.status'; \ - $(SHELL) ./config.status;; \ - *) \ - echo ' cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe)'; \ - cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe);; \ - esac; - -$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) - $(SHELL) ./config.status --recheck - -$(top_srcdir)/configure: $(am__configure_deps) - cd $(srcdir) && $(AUTOCONF) -$(ACLOCAL_M4): $(am__aclocal_m4_deps) - cd $(srcdir) && $(ACLOCAL) $(ACLOCAL_AMFLAGS) - -build-aux/config.h: build-aux/stamp-h1 - @if test ! -f $@; then \ - rm -f build-aux/stamp-h1; \ - $(MAKE) $(AM_MAKEFLAGS) build-aux/stamp-h1; \ - else :; fi - -build-aux/stamp-h1: $(top_srcdir)/build-aux/config.h.in $(top_builddir)/config.status - @rm -f build-aux/stamp-h1 - cd $(top_builddir) && $(SHELL) ./config.status build-aux/config.h -$(top_srcdir)/build-aux/config.h.in: $(am__configure_deps) - cd $(top_srcdir) && $(AUTOHEADER) - rm -f build-aux/stamp-h1 - touch $@ - -distclean-hdr: - -rm -f build-aux/config.h build-aux/stamp-h1 -scripts/gtest-config: $(top_builddir)/config.status $(top_srcdir)/scripts/gtest-config.in - cd $(top_builddir) && $(SHELL) ./config.status $@ -install-libLTLIBRARIES: $(lib_LTLIBRARIES) - @$(NORMAL_INSTALL) - test -z "$(libdir)" || $(MKDIR_P) "$(DESTDIR)$(libdir)" - @list='$(lib_LTLIBRARIES)'; for p in $$list; do \ - if test -f $$p; then \ - f=$(am__strip_dir) \ - echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(libLTLIBRARIES_INSTALL) $(INSTALL_STRIP_FLAG) '$$p' '$(DESTDIR)$(libdir)/$$f'"; \ - $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(libLTLIBRARIES_INSTALL) $(INSTALL_STRIP_FLAG) "$$p" "$(DESTDIR)$(libdir)/$$f"; \ - else :; fi; \ - done - -uninstall-libLTLIBRARIES: - @$(NORMAL_UNINSTALL) - @list='$(lib_LTLIBRARIES)'; for p in $$list; do \ - p=$(am__strip_dir) \ - echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f '$(DESTDIR)$(libdir)/$$p'"; \ - $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f "$(DESTDIR)$(libdir)/$$p"; \ - done - -clean-libLTLIBRARIES: - -test -z "$(lib_LTLIBRARIES)" || rm -f $(lib_LTLIBRARIES) - @list='$(lib_LTLIBRARIES)'; for p in $$list; do \ - dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \ - test "$$dir" != "$$p" || dir=.; \ - echo "rm -f \"$${dir}/so_locations\""; \ - rm -f "$${dir}/so_locations"; \ - done - -clean-noinstLTLIBRARIES: - -test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES) - @list='$(noinst_LTLIBRARIES)'; for p in $$list; do \ - dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \ - test "$$dir" != "$$p" || dir=.; \ - echo "rm -f \"$${dir}/so_locations\""; \ - rm -f "$${dir}/so_locations"; \ - done -src/$(am__dirstamp): - @$(MKDIR_P) src - @: > src/$(am__dirstamp) -src/$(DEPDIR)/$(am__dirstamp): - @$(MKDIR_P) src/$(DEPDIR) - @: > src/$(DEPDIR)/$(am__dirstamp) -src/gtest.lo: src/$(am__dirstamp) src/$(DEPDIR)/$(am__dirstamp) -src/gtest-death-test.lo: src/$(am__dirstamp) \ - src/$(DEPDIR)/$(am__dirstamp) -src/gtest-filepath.lo: src/$(am__dirstamp) \ - src/$(DEPDIR)/$(am__dirstamp) -src/gtest-port.lo: src/$(am__dirstamp) src/$(DEPDIR)/$(am__dirstamp) -src/gtest-test-part.lo: src/$(am__dirstamp) \ - src/$(DEPDIR)/$(am__dirstamp) -src/gtest-typed-test.lo: src/$(am__dirstamp) \ - src/$(DEPDIR)/$(am__dirstamp) -lib/$(am__dirstamp): - @$(MKDIR_P) lib - @: > lib/$(am__dirstamp) -lib/libgtest.la: $(lib_libgtest_la_OBJECTS) $(lib_libgtest_la_DEPENDENCIES) lib/$(am__dirstamp) - $(CXXLINK) -rpath $(libdir) $(lib_libgtest_la_OBJECTS) $(lib_libgtest_la_LIBADD) $(LIBS) -src/gtest_main.lo: src/$(am__dirstamp) src/$(DEPDIR)/$(am__dirstamp) -lib/libgtest_main.la: $(lib_libgtest_main_la_OBJECTS) $(lib_libgtest_main_la_DEPENDENCIES) lib/$(am__dirstamp) - $(CXXLINK) -rpath $(libdir) $(lib_libgtest_main_la_OBJECTS) $(lib_libgtest_main_la_LIBADD) $(LIBS) -samples/$(am__dirstamp): - @$(MKDIR_P) samples - @: > samples/$(am__dirstamp) -samples/$(DEPDIR)/$(am__dirstamp): - @$(MKDIR_P) samples/$(DEPDIR) - @: > samples/$(DEPDIR)/$(am__dirstamp) -samples/sample1.lo: samples/$(am__dirstamp) \ - samples/$(DEPDIR)/$(am__dirstamp) -samples/sample2.lo: samples/$(am__dirstamp) \ - samples/$(DEPDIR)/$(am__dirstamp) -samples/sample4.lo: samples/$(am__dirstamp) \ - samples/$(DEPDIR)/$(am__dirstamp) -samples/libsamples.la: $(samples_libsamples_la_OBJECTS) $(samples_libsamples_la_DEPENDENCIES) samples/$(am__dirstamp) - $(CXXLINK) $(samples_libsamples_la_OBJECTS) $(samples_libsamples_la_LIBADD) $(LIBS) - -clean-checkPROGRAMS: - @list='$(check_PROGRAMS)'; for p in $$list; do \ - f=`echo $$p|sed 's/$(EXEEXT)$$//'`; \ - echo " rm -f $$p $$f"; \ - rm -f $$p $$f ; \ - done -samples/sample10_unittest.$(OBJEXT): samples/$(am__dirstamp) \ - samples/$(DEPDIR)/$(am__dirstamp) -samples/sample10_unittest$(EXEEXT): $(samples_sample10_unittest_OBJECTS) $(samples_sample10_unittest_DEPENDENCIES) samples/$(am__dirstamp) - @rm -f samples/sample10_unittest$(EXEEXT) - $(CXXLINK) $(samples_sample10_unittest_OBJECTS) $(samples_sample10_unittest_LDADD) $(LIBS) -samples/sample1_unittest.$(OBJEXT): samples/$(am__dirstamp) \ - samples/$(DEPDIR)/$(am__dirstamp) -samples/sample1_unittest$(EXEEXT): $(samples_sample1_unittest_OBJECTS) $(samples_sample1_unittest_DEPENDENCIES) samples/$(am__dirstamp) - @rm -f samples/sample1_unittest$(EXEEXT) - $(CXXLINK) $(samples_sample1_unittest_OBJECTS) $(samples_sample1_unittest_LDADD) $(LIBS) -samples/sample2_unittest.$(OBJEXT): samples/$(am__dirstamp) \ - samples/$(DEPDIR)/$(am__dirstamp) -samples/sample2_unittest$(EXEEXT): $(samples_sample2_unittest_OBJECTS) $(samples_sample2_unittest_DEPENDENCIES) samples/$(am__dirstamp) - @rm -f samples/sample2_unittest$(EXEEXT) - $(CXXLINK) $(samples_sample2_unittest_OBJECTS) $(samples_sample2_unittest_LDADD) $(LIBS) -samples/sample3_unittest.$(OBJEXT): samples/$(am__dirstamp) \ - samples/$(DEPDIR)/$(am__dirstamp) -samples/sample3_unittest$(EXEEXT): $(samples_sample3_unittest_OBJECTS) $(samples_sample3_unittest_DEPENDENCIES) samples/$(am__dirstamp) - @rm -f samples/sample3_unittest$(EXEEXT) - $(CXXLINK) $(samples_sample3_unittest_OBJECTS) $(samples_sample3_unittest_LDADD) $(LIBS) -samples/sample4_unittest.$(OBJEXT): samples/$(am__dirstamp) \ - samples/$(DEPDIR)/$(am__dirstamp) -samples/sample4_unittest$(EXEEXT): $(samples_sample4_unittest_OBJECTS) $(samples_sample4_unittest_DEPENDENCIES) samples/$(am__dirstamp) - @rm -f samples/sample4_unittest$(EXEEXT) - $(CXXLINK) $(samples_sample4_unittest_OBJECTS) $(samples_sample4_unittest_LDADD) $(LIBS) -samples/sample5_unittest.$(OBJEXT): samples/$(am__dirstamp) \ - samples/$(DEPDIR)/$(am__dirstamp) -samples/sample5_unittest$(EXEEXT): $(samples_sample5_unittest_OBJECTS) $(samples_sample5_unittest_DEPENDENCIES) samples/$(am__dirstamp) - @rm -f samples/sample5_unittest$(EXEEXT) - $(CXXLINK) $(samples_sample5_unittest_OBJECTS) $(samples_sample5_unittest_LDADD) $(LIBS) -samples/sample6_unittest.$(OBJEXT): samples/$(am__dirstamp) \ - samples/$(DEPDIR)/$(am__dirstamp) -samples/sample6_unittest$(EXEEXT): $(samples_sample6_unittest_OBJECTS) $(samples_sample6_unittest_DEPENDENCIES) samples/$(am__dirstamp) - @rm -f samples/sample6_unittest$(EXEEXT) - $(CXXLINK) $(samples_sample6_unittest_OBJECTS) $(samples_sample6_unittest_LDADD) $(LIBS) -samples/sample7_unittest.$(OBJEXT): samples/$(am__dirstamp) \ - samples/$(DEPDIR)/$(am__dirstamp) -samples/sample7_unittest$(EXEEXT): $(samples_sample7_unittest_OBJECTS) $(samples_sample7_unittest_DEPENDENCIES) samples/$(am__dirstamp) - @rm -f samples/sample7_unittest$(EXEEXT) - $(CXXLINK) $(samples_sample7_unittest_OBJECTS) $(samples_sample7_unittest_LDADD) $(LIBS) -samples/sample8_unittest.$(OBJEXT): samples/$(am__dirstamp) \ - samples/$(DEPDIR)/$(am__dirstamp) -samples/sample8_unittest$(EXEEXT): $(samples_sample8_unittest_OBJECTS) $(samples_sample8_unittest_DEPENDENCIES) samples/$(am__dirstamp) - @rm -f samples/sample8_unittest$(EXEEXT) - $(CXXLINK) $(samples_sample8_unittest_OBJECTS) $(samples_sample8_unittest_LDADD) $(LIBS) -samples/sample9_unittest.$(OBJEXT): samples/$(am__dirstamp) \ - samples/$(DEPDIR)/$(am__dirstamp) -samples/sample9_unittest$(EXEEXT): $(samples_sample9_unittest_OBJECTS) $(samples_sample9_unittest_DEPENDENCIES) samples/$(am__dirstamp) - @rm -f samples/sample9_unittest$(EXEEXT) - $(CXXLINK) $(samples_sample9_unittest_OBJECTS) $(samples_sample9_unittest_LDADD) $(LIBS) -test/$(am__dirstamp): - @$(MKDIR_P) test - @: > test/$(am__dirstamp) -test/$(DEPDIR)/$(am__dirstamp): - @$(MKDIR_P) test/$(DEPDIR) - @: > test/$(DEPDIR)/$(am__dirstamp) -test/test_gtest_death_test_test-gtest-death-test_test.$(OBJEXT): \ - test/$(am__dirstamp) test/$(DEPDIR)/$(am__dirstamp) -test/gtest-death-test_test$(EXEEXT): $(test_gtest_death_test_test_OBJECTS) $(test_gtest_death_test_test_DEPENDENCIES) test/$(am__dirstamp) - @rm -f test/gtest-death-test_test$(EXEEXT) - $(test_gtest_death_test_test_LINK) $(test_gtest_death_test_test_OBJECTS) $(test_gtest_death_test_test_LDADD) $(LIBS) -test/gtest-filepath_test.$(OBJEXT): test/$(am__dirstamp) \ - test/$(DEPDIR)/$(am__dirstamp) -test/gtest-filepath_test$(EXEEXT): $(test_gtest_filepath_test_OBJECTS) $(test_gtest_filepath_test_DEPENDENCIES) test/$(am__dirstamp) - @rm -f test/gtest-filepath_test$(EXEEXT) - $(CXXLINK) $(test_gtest_filepath_test_OBJECTS) $(test_gtest_filepath_test_LDADD) $(LIBS) -test/gtest-linked_ptr_test.$(OBJEXT): test/$(am__dirstamp) \ - test/$(DEPDIR)/$(am__dirstamp) -test/gtest-linked_ptr_test$(EXEEXT): $(test_gtest_linked_ptr_test_OBJECTS) $(test_gtest_linked_ptr_test_DEPENDENCIES) test/$(am__dirstamp) - @rm -f test/gtest-linked_ptr_test$(EXEEXT) - $(CXXLINK) $(test_gtest_linked_ptr_test_OBJECTS) $(test_gtest_linked_ptr_test_LDADD) $(LIBS) -test/gtest-listener_test.$(OBJEXT): test/$(am__dirstamp) \ - test/$(DEPDIR)/$(am__dirstamp) -test/gtest-listener_test$(EXEEXT): $(test_gtest_listener_test_OBJECTS) $(test_gtest_listener_test_DEPENDENCIES) test/$(am__dirstamp) - @rm -f test/gtest-listener_test$(EXEEXT) - $(CXXLINK) $(test_gtest_listener_test_OBJECTS) $(test_gtest_listener_test_LDADD) $(LIBS) -test/gtest-message_test.$(OBJEXT): test/$(am__dirstamp) \ - test/$(DEPDIR)/$(am__dirstamp) -test/gtest-message_test$(EXEEXT): $(test_gtest_message_test_OBJECTS) $(test_gtest_message_test_DEPENDENCIES) test/$(am__dirstamp) - @rm -f test/gtest-message_test$(EXEEXT) - $(CXXLINK) $(test_gtest_message_test_OBJECTS) $(test_gtest_message_test_LDADD) $(LIBS) -test/gtest-options_test.$(OBJEXT): test/$(am__dirstamp) \ - test/$(DEPDIR)/$(am__dirstamp) -test/gtest-options_test$(EXEEXT): $(test_gtest_options_test_OBJECTS) $(test_gtest_options_test_DEPENDENCIES) test/$(am__dirstamp) - @rm -f test/gtest-options_test$(EXEEXT) - $(CXXLINK) $(test_gtest_options_test_OBJECTS) $(test_gtest_options_test_LDADD) $(LIBS) -test/gtest-param-test_test.$(OBJEXT): test/$(am__dirstamp) \ - test/$(DEPDIR)/$(am__dirstamp) -test/gtest-param-test2_test.$(OBJEXT): test/$(am__dirstamp) \ - test/$(DEPDIR)/$(am__dirstamp) -test/gtest-param-test_test$(EXEEXT): $(test_gtest_param_test_test_OBJECTS) $(test_gtest_param_test_test_DEPENDENCIES) test/$(am__dirstamp) - @rm -f test/gtest-param-test_test$(EXEEXT) - $(CXXLINK) $(test_gtest_param_test_test_OBJECTS) $(test_gtest_param_test_test_LDADD) $(LIBS) -test/gtest-port_test.$(OBJEXT): test/$(am__dirstamp) \ - test/$(DEPDIR)/$(am__dirstamp) -test/gtest-port_test$(EXEEXT): $(test_gtest_port_test_OBJECTS) $(test_gtest_port_test_DEPENDENCIES) test/$(am__dirstamp) - @rm -f test/gtest-port_test$(EXEEXT) - $(CXXLINK) $(test_gtest_port_test_OBJECTS) $(test_gtest_port_test_LDADD) $(LIBS) -test/gtest-test-part_test.$(OBJEXT): test/$(am__dirstamp) \ - test/$(DEPDIR)/$(am__dirstamp) -test/gtest-test-part_test$(EXEEXT): $(test_gtest_test_part_test_OBJECTS) $(test_gtest_test_part_test_DEPENDENCIES) test/$(am__dirstamp) - @rm -f test/gtest-test-part_test$(EXEEXT) - $(CXXLINK) $(test_gtest_test_part_test_OBJECTS) $(test_gtest_test_part_test_LDADD) $(LIBS) -test/test_gtest_tuple_test-gtest-tuple_test.$(OBJEXT): \ - test/$(am__dirstamp) test/$(DEPDIR)/$(am__dirstamp) -src/test_gtest_tuple_test-gtest-all.$(OBJEXT): src/$(am__dirstamp) \ - src/$(DEPDIR)/$(am__dirstamp) -src/test_gtest_tuple_test-gtest_main.$(OBJEXT): src/$(am__dirstamp) \ - src/$(DEPDIR)/$(am__dirstamp) -test/gtest-tuple_test$(EXEEXT): $(test_gtest_tuple_test_OBJECTS) $(test_gtest_tuple_test_DEPENDENCIES) test/$(am__dirstamp) - @rm -f test/gtest-tuple_test$(EXEEXT) - $(test_gtest_tuple_test_LINK) $(test_gtest_tuple_test_OBJECTS) $(test_gtest_tuple_test_LDADD) $(LIBS) -test/gtest-typed-test_test.$(OBJEXT): test/$(am__dirstamp) \ - test/$(DEPDIR)/$(am__dirstamp) -test/gtest-typed-test2_test.$(OBJEXT): test/$(am__dirstamp) \ - test/$(DEPDIR)/$(am__dirstamp) -test/gtest-typed-test_test$(EXEEXT): $(test_gtest_typed_test_test_OBJECTS) $(test_gtest_typed_test_test_DEPENDENCIES) test/$(am__dirstamp) - @rm -f test/gtest-typed-test_test$(EXEEXT) - $(CXXLINK) $(test_gtest_typed_test_test_OBJECTS) $(test_gtest_typed_test_test_LDADD) $(LIBS) -test/gtest-unittest-api_test.$(OBJEXT): test/$(am__dirstamp) \ - test/$(DEPDIR)/$(am__dirstamp) -test/gtest-unittest-api_test$(EXEEXT): $(test_gtest_unittest_api_test_OBJECTS) $(test_gtest_unittest_api_test_DEPENDENCIES) test/$(am__dirstamp) - @rm -f test/gtest-unittest-api_test$(EXEEXT) - $(CXXLINK) $(test_gtest_unittest_api_test_OBJECTS) $(test_gtest_unittest_api_test_LDADD) $(LIBS) -test/gtest_break_on_failure_unittest_.$(OBJEXT): test/$(am__dirstamp) \ - test/$(DEPDIR)/$(am__dirstamp) -test/gtest_break_on_failure_unittest_$(EXEEXT): $(test_gtest_break_on_failure_unittest__OBJECTS) $(test_gtest_break_on_failure_unittest__DEPENDENCIES) test/$(am__dirstamp) - @rm -f test/gtest_break_on_failure_unittest_$(EXEEXT) - $(CXXLINK) $(test_gtest_break_on_failure_unittest__OBJECTS) $(test_gtest_break_on_failure_unittest__LDADD) $(LIBS) -test/gtest_color_test_.$(OBJEXT): test/$(am__dirstamp) \ - test/$(DEPDIR)/$(am__dirstamp) -test/gtest_color_test_$(EXEEXT): $(test_gtest_color_test__OBJECTS) $(test_gtest_color_test__DEPENDENCIES) test/$(am__dirstamp) - @rm -f test/gtest_color_test_$(EXEEXT) - $(CXXLINK) $(test_gtest_color_test__OBJECTS) $(test_gtest_color_test__LDADD) $(LIBS) -test/gtest_env_var_test_.$(OBJEXT): test/$(am__dirstamp) \ - test/$(DEPDIR)/$(am__dirstamp) -test/gtest_env_var_test_$(EXEEXT): $(test_gtest_env_var_test__OBJECTS) $(test_gtest_env_var_test__DEPENDENCIES) test/$(am__dirstamp) - @rm -f test/gtest_env_var_test_$(EXEEXT) - $(CXXLINK) $(test_gtest_env_var_test__OBJECTS) $(test_gtest_env_var_test__LDADD) $(LIBS) -test/gtest_environment_test.$(OBJEXT): test/$(am__dirstamp) \ - test/$(DEPDIR)/$(am__dirstamp) -test/gtest_environment_test$(EXEEXT): $(test_gtest_environment_test_OBJECTS) $(test_gtest_environment_test_DEPENDENCIES) test/$(am__dirstamp) - @rm -f test/gtest_environment_test$(EXEEXT) - $(CXXLINK) $(test_gtest_environment_test_OBJECTS) $(test_gtest_environment_test_LDADD) $(LIBS) -test/gtest_filter_unittest_.$(OBJEXT): test/$(am__dirstamp) \ - test/$(DEPDIR)/$(am__dirstamp) -test/gtest_filter_unittest_$(EXEEXT): $(test_gtest_filter_unittest__OBJECTS) $(test_gtest_filter_unittest__DEPENDENCIES) test/$(am__dirstamp) - @rm -f test/gtest_filter_unittest_$(EXEEXT) - $(CXXLINK) $(test_gtest_filter_unittest__OBJECTS) $(test_gtest_filter_unittest__LDADD) $(LIBS) -test/gtest_help_test_.$(OBJEXT): test/$(am__dirstamp) \ - test/$(DEPDIR)/$(am__dirstamp) -test/gtest_help_test_$(EXEEXT): $(test_gtest_help_test__OBJECTS) $(test_gtest_help_test__DEPENDENCIES) test/$(am__dirstamp) - @rm -f test/gtest_help_test_$(EXEEXT) - $(CXXLINK) $(test_gtest_help_test__OBJECTS) $(test_gtest_help_test__LDADD) $(LIBS) -test/gtest_list_tests_unittest_.$(OBJEXT): test/$(am__dirstamp) \ - test/$(DEPDIR)/$(am__dirstamp) -test/gtest_list_tests_unittest_$(EXEEXT): $(test_gtest_list_tests_unittest__OBJECTS) $(test_gtest_list_tests_unittest__DEPENDENCIES) test/$(am__dirstamp) - @rm -f test/gtest_list_tests_unittest_$(EXEEXT) - $(CXXLINK) $(test_gtest_list_tests_unittest__OBJECTS) $(test_gtest_list_tests_unittest__LDADD) $(LIBS) -test/gtest_main_unittest.$(OBJEXT): test/$(am__dirstamp) \ - test/$(DEPDIR)/$(am__dirstamp) -test/gtest_main_unittest$(EXEEXT): $(test_gtest_main_unittest_OBJECTS) $(test_gtest_main_unittest_DEPENDENCIES) test/$(am__dirstamp) - @rm -f test/gtest_main_unittest$(EXEEXT) - $(CXXLINK) $(test_gtest_main_unittest_OBJECTS) $(test_gtest_main_unittest_LDADD) $(LIBS) -test/test_gtest_no_rtti_test-gtest_unittest.$(OBJEXT): \ - test/$(am__dirstamp) test/$(DEPDIR)/$(am__dirstamp) -src/test_gtest_no_rtti_test-gtest-all.$(OBJEXT): src/$(am__dirstamp) \ - src/$(DEPDIR)/$(am__dirstamp) -src/test_gtest_no_rtti_test-gtest_main.$(OBJEXT): src/$(am__dirstamp) \ - src/$(DEPDIR)/$(am__dirstamp) -test/gtest_no_rtti_test$(EXEEXT): $(test_gtest_no_rtti_test_OBJECTS) $(test_gtest_no_rtti_test_DEPENDENCIES) test/$(am__dirstamp) - @rm -f test/gtest_no_rtti_test$(EXEEXT) - $(test_gtest_no_rtti_test_LINK) $(test_gtest_no_rtti_test_OBJECTS) $(test_gtest_no_rtti_test_LDADD) $(LIBS) -test/gtest_no_test_unittest.$(OBJEXT): test/$(am__dirstamp) \ - test/$(DEPDIR)/$(am__dirstamp) -test/gtest_no_test_unittest$(EXEEXT): $(test_gtest_no_test_unittest_OBJECTS) $(test_gtest_no_test_unittest_DEPENDENCIES) test/$(am__dirstamp) - @rm -f test/gtest_no_test_unittest$(EXEEXT) - $(CXXLINK) $(test_gtest_no_test_unittest_OBJECTS) $(test_gtest_no_test_unittest_LDADD) $(LIBS) -test/gtest_output_test_.$(OBJEXT): test/$(am__dirstamp) \ - test/$(DEPDIR)/$(am__dirstamp) -test/gtest_output_test_$(EXEEXT): $(test_gtest_output_test__OBJECTS) $(test_gtest_output_test__DEPENDENCIES) test/$(am__dirstamp) - @rm -f test/gtest_output_test_$(EXEEXT) - $(CXXLINK) $(test_gtest_output_test__OBJECTS) $(test_gtest_output_test__LDADD) $(LIBS) -test/gtest_pred_impl_unittest.$(OBJEXT): test/$(am__dirstamp) \ - test/$(DEPDIR)/$(am__dirstamp) -test/gtest_pred_impl_unittest$(EXEEXT): $(test_gtest_pred_impl_unittest_OBJECTS) $(test_gtest_pred_impl_unittest_DEPENDENCIES) test/$(am__dirstamp) - @rm -f test/gtest_pred_impl_unittest$(EXEEXT) - $(CXXLINK) $(test_gtest_pred_impl_unittest_OBJECTS) $(test_gtest_pred_impl_unittest_LDADD) $(LIBS) -test/gtest_prod_test.$(OBJEXT): test/$(am__dirstamp) \ - test/$(DEPDIR)/$(am__dirstamp) -test/production.$(OBJEXT): test/$(am__dirstamp) \ - test/$(DEPDIR)/$(am__dirstamp) -test/gtest_prod_test$(EXEEXT): $(test_gtest_prod_test_OBJECTS) $(test_gtest_prod_test_DEPENDENCIES) test/$(am__dirstamp) - @rm -f test/gtest_prod_test$(EXEEXT) - $(CXXLINK) $(test_gtest_prod_test_OBJECTS) $(test_gtest_prod_test_LDADD) $(LIBS) -test/gtest_repeat_test.$(OBJEXT): test/$(am__dirstamp) \ - test/$(DEPDIR)/$(am__dirstamp) -test/gtest_repeat_test$(EXEEXT): $(test_gtest_repeat_test_OBJECTS) $(test_gtest_repeat_test_DEPENDENCIES) test/$(am__dirstamp) - @rm -f test/gtest_repeat_test$(EXEEXT) - $(CXXLINK) $(test_gtest_repeat_test_OBJECTS) $(test_gtest_repeat_test_LDADD) $(LIBS) -test/gtest_shuffle_test_.$(OBJEXT): test/$(am__dirstamp) \ - test/$(DEPDIR)/$(am__dirstamp) -test/gtest_shuffle_test_$(EXEEXT): $(test_gtest_shuffle_test__OBJECTS) $(test_gtest_shuffle_test__DEPENDENCIES) test/$(am__dirstamp) - @rm -f test/gtest_shuffle_test_$(EXEEXT) - $(CXXLINK) $(test_gtest_shuffle_test__OBJECTS) $(test_gtest_shuffle_test__LDADD) $(LIBS) -test/gtest_sole_header_test.$(OBJEXT): test/$(am__dirstamp) \ - test/$(DEPDIR)/$(am__dirstamp) -test/gtest_sole_header_test$(EXEEXT): $(test_gtest_sole_header_test_OBJECTS) $(test_gtest_sole_header_test_DEPENDENCIES) test/$(am__dirstamp) - @rm -f test/gtest_sole_header_test$(EXEEXT) - $(CXXLINK) $(test_gtest_sole_header_test_OBJECTS) $(test_gtest_sole_header_test_LDADD) $(LIBS) -test/gtest_stress_test.$(OBJEXT): test/$(am__dirstamp) \ - test/$(DEPDIR)/$(am__dirstamp) -test/gtest_stress_test$(EXEEXT): $(test_gtest_stress_test_OBJECTS) $(test_gtest_stress_test_DEPENDENCIES) test/$(am__dirstamp) - @rm -f test/gtest_stress_test$(EXEEXT) - $(CXXLINK) $(test_gtest_stress_test_OBJECTS) $(test_gtest_stress_test_LDADD) $(LIBS) -test/test_gtest_throw_on_failure_ex_test-gtest_throw_on_failure_ex_test.$(OBJEXT): \ - test/$(am__dirstamp) test/$(DEPDIR)/$(am__dirstamp) -src/test_gtest_throw_on_failure_ex_test-gtest-all.$(OBJEXT): \ - src/$(am__dirstamp) src/$(DEPDIR)/$(am__dirstamp) -test/gtest_throw_on_failure_ex_test$(EXEEXT): $(test_gtest_throw_on_failure_ex_test_OBJECTS) $(test_gtest_throw_on_failure_ex_test_DEPENDENCIES) test/$(am__dirstamp) - @rm -f test/gtest_throw_on_failure_ex_test$(EXEEXT) - $(test_gtest_throw_on_failure_ex_test_LINK) $(test_gtest_throw_on_failure_ex_test_OBJECTS) $(test_gtest_throw_on_failure_ex_test_LDADD) $(LIBS) -test/test_gtest_throw_on_failure_test_-gtest_throw_on_failure_test_.$(OBJEXT): \ - test/$(am__dirstamp) test/$(DEPDIR)/$(am__dirstamp) -src/test_gtest_throw_on_failure_test_-gtest-all.$(OBJEXT): \ - src/$(am__dirstamp) src/$(DEPDIR)/$(am__dirstamp) -test/gtest_throw_on_failure_test_$(EXEEXT): $(test_gtest_throw_on_failure_test__OBJECTS) $(test_gtest_throw_on_failure_test__DEPENDENCIES) test/$(am__dirstamp) - @rm -f test/gtest_throw_on_failure_test_$(EXEEXT) - $(test_gtest_throw_on_failure_test__LINK) $(test_gtest_throw_on_failure_test__OBJECTS) $(test_gtest_throw_on_failure_test__LDADD) $(LIBS) -test/gtest_uninitialized_test_.$(OBJEXT): test/$(am__dirstamp) \ - test/$(DEPDIR)/$(am__dirstamp) -test/gtest_uninitialized_test_$(EXEEXT): $(test_gtest_uninitialized_test__OBJECTS) $(test_gtest_uninitialized_test__DEPENDENCIES) test/$(am__dirstamp) - @rm -f test/gtest_uninitialized_test_$(EXEEXT) - $(CXXLINK) $(test_gtest_uninitialized_test__OBJECTS) $(test_gtest_uninitialized_test__LDADD) $(LIBS) -test/gtest_unittest.$(OBJEXT): test/$(am__dirstamp) \ - test/$(DEPDIR)/$(am__dirstamp) -test/gtest_unittest$(EXEEXT): $(test_gtest_unittest_OBJECTS) $(test_gtest_unittest_DEPENDENCIES) test/$(am__dirstamp) - @rm -f test/gtest_unittest$(EXEEXT) - $(CXXLINK) $(test_gtest_unittest_OBJECTS) $(test_gtest_unittest_LDADD) $(LIBS) -test/test_gtest_use_own_tuple_test-gtest-param-test_test.$(OBJEXT): \ - test/$(am__dirstamp) test/$(DEPDIR)/$(am__dirstamp) -test/test_gtest_use_own_tuple_test-gtest-param-test2_test.$(OBJEXT): \ - test/$(am__dirstamp) test/$(DEPDIR)/$(am__dirstamp) -src/test_gtest_use_own_tuple_test-gtest-all.$(OBJEXT): \ - src/$(am__dirstamp) src/$(DEPDIR)/$(am__dirstamp) -test/gtest_use_own_tuple_test$(EXEEXT): $(test_gtest_use_own_tuple_test_OBJECTS) $(test_gtest_use_own_tuple_test_DEPENDENCIES) test/$(am__dirstamp) - @rm -f test/gtest_use_own_tuple_test$(EXEEXT) - $(test_gtest_use_own_tuple_test_LINK) $(test_gtest_use_own_tuple_test_OBJECTS) $(test_gtest_use_own_tuple_test_LDADD) $(LIBS) -test/gtest_xml_outfile1_test_.$(OBJEXT): test/$(am__dirstamp) \ - test/$(DEPDIR)/$(am__dirstamp) -test/gtest_xml_outfile1_test_$(EXEEXT): $(test_gtest_xml_outfile1_test__OBJECTS) $(test_gtest_xml_outfile1_test__DEPENDENCIES) test/$(am__dirstamp) - @rm -f test/gtest_xml_outfile1_test_$(EXEEXT) - $(CXXLINK) $(test_gtest_xml_outfile1_test__OBJECTS) $(test_gtest_xml_outfile1_test__LDADD) $(LIBS) -test/gtest_xml_outfile2_test_.$(OBJEXT): test/$(am__dirstamp) \ - test/$(DEPDIR)/$(am__dirstamp) -test/gtest_xml_outfile2_test_$(EXEEXT): $(test_gtest_xml_outfile2_test__OBJECTS) $(test_gtest_xml_outfile2_test__DEPENDENCIES) test/$(am__dirstamp) - @rm -f test/gtest_xml_outfile2_test_$(EXEEXT) - $(CXXLINK) $(test_gtest_xml_outfile2_test__OBJECTS) $(test_gtest_xml_outfile2_test__LDADD) $(LIBS) -test/gtest_xml_output_unittest_.$(OBJEXT): test/$(am__dirstamp) \ - test/$(DEPDIR)/$(am__dirstamp) -test/gtest_xml_output_unittest_$(EXEEXT): $(test_gtest_xml_output_unittest__OBJECTS) $(test_gtest_xml_output_unittest__DEPENDENCIES) test/$(am__dirstamp) - @rm -f test/gtest_xml_output_unittest_$(EXEEXT) - $(CXXLINK) $(test_gtest_xml_output_unittest__OBJECTS) $(test_gtest_xml_output_unittest__LDADD) $(LIBS) -install-binSCRIPTS: $(bin_SCRIPTS) - @$(NORMAL_INSTALL) - test -z "$(bindir)" || $(MKDIR_P) "$(DESTDIR)$(bindir)" - @list='$(bin_SCRIPTS)'; for p in $$list; do \ - if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ - if test -f $$d$$p; then \ - f=`echo "$$p" | sed 's|^.*/||;$(transform)'`; \ - echo " $(binSCRIPT_INSTALL) '$$d$$p' '$(DESTDIR)$(bindir)/$$f'"; \ - $(binSCRIPT_INSTALL) "$$d$$p" "$(DESTDIR)$(bindir)/$$f"; \ - else :; fi; \ - done - -uninstall-binSCRIPTS: - @$(NORMAL_UNINSTALL) - @list='$(bin_SCRIPTS)'; for p in $$list; do \ - f=`echo "$$p" | sed 's|^.*/||;$(transform)'`; \ - echo " rm -f '$(DESTDIR)$(bindir)/$$f'"; \ - rm -f "$(DESTDIR)$(bindir)/$$f"; \ - done - -mostlyclean-compile: - -rm -f *.$(OBJEXT) - -rm -f samples/sample1.$(OBJEXT) - -rm -f samples/sample1.lo - -rm -f samples/sample10_unittest.$(OBJEXT) - -rm -f samples/sample1_unittest.$(OBJEXT) - -rm -f samples/sample2.$(OBJEXT) - -rm -f samples/sample2.lo - -rm -f samples/sample2_unittest.$(OBJEXT) - -rm -f samples/sample3_unittest.$(OBJEXT) - -rm -f samples/sample4.$(OBJEXT) - -rm -f samples/sample4.lo - -rm -f samples/sample4_unittest.$(OBJEXT) - -rm -f samples/sample5_unittest.$(OBJEXT) - -rm -f samples/sample6_unittest.$(OBJEXT) - -rm -f samples/sample7_unittest.$(OBJEXT) - -rm -f samples/sample8_unittest.$(OBJEXT) - -rm -f samples/sample9_unittest.$(OBJEXT) - -rm -f src/gtest-death-test.$(OBJEXT) - -rm -f src/gtest-death-test.lo - -rm -f src/gtest-filepath.$(OBJEXT) - -rm -f src/gtest-filepath.lo - -rm -f src/gtest-port.$(OBJEXT) - -rm -f src/gtest-port.lo - -rm -f src/gtest-test-part.$(OBJEXT) - -rm -f src/gtest-test-part.lo - -rm -f src/gtest-typed-test.$(OBJEXT) - -rm -f src/gtest-typed-test.lo - -rm -f src/gtest.$(OBJEXT) - -rm -f src/gtest.lo - -rm -f src/gtest_main.$(OBJEXT) - -rm -f src/gtest_main.lo - -rm -f src/test_gtest_no_rtti_test-gtest-all.$(OBJEXT) - -rm -f src/test_gtest_no_rtti_test-gtest_main.$(OBJEXT) - -rm -f src/test_gtest_throw_on_failure_ex_test-gtest-all.$(OBJEXT) - -rm -f src/test_gtest_throw_on_failure_test_-gtest-all.$(OBJEXT) - -rm -f src/test_gtest_tuple_test-gtest-all.$(OBJEXT) - -rm -f src/test_gtest_tuple_test-gtest_main.$(OBJEXT) - -rm -f src/test_gtest_use_own_tuple_test-gtest-all.$(OBJEXT) - -rm -f test/gtest-filepath_test.$(OBJEXT) - -rm -f test/gtest-linked_ptr_test.$(OBJEXT) - -rm -f test/gtest-listener_test.$(OBJEXT) - -rm -f test/gtest-message_test.$(OBJEXT) - -rm -f test/gtest-options_test.$(OBJEXT) - -rm -f test/gtest-param-test2_test.$(OBJEXT) - -rm -f test/gtest-param-test_test.$(OBJEXT) - -rm -f test/gtest-port_test.$(OBJEXT) - -rm -f test/gtest-test-part_test.$(OBJEXT) - -rm -f test/gtest-typed-test2_test.$(OBJEXT) - -rm -f test/gtest-typed-test_test.$(OBJEXT) - -rm -f test/gtest-unittest-api_test.$(OBJEXT) - -rm -f test/gtest_break_on_failure_unittest_.$(OBJEXT) - -rm -f test/gtest_color_test_.$(OBJEXT) - -rm -f test/gtest_env_var_test_.$(OBJEXT) - -rm -f test/gtest_environment_test.$(OBJEXT) - -rm -f test/gtest_filter_unittest_.$(OBJEXT) - -rm -f test/gtest_help_test_.$(OBJEXT) - -rm -f test/gtest_list_tests_unittest_.$(OBJEXT) - -rm -f test/gtest_main_unittest.$(OBJEXT) - -rm -f test/gtest_no_test_unittest.$(OBJEXT) - -rm -f test/gtest_output_test_.$(OBJEXT) - -rm -f test/gtest_pred_impl_unittest.$(OBJEXT) - -rm -f test/gtest_prod_test.$(OBJEXT) - -rm -f test/gtest_repeat_test.$(OBJEXT) - -rm -f test/gtest_shuffle_test_.$(OBJEXT) - -rm -f test/gtest_sole_header_test.$(OBJEXT) - -rm -f test/gtest_stress_test.$(OBJEXT) - -rm -f test/gtest_uninitialized_test_.$(OBJEXT) - -rm -f test/gtest_unittest.$(OBJEXT) - -rm -f test/gtest_xml_outfile1_test_.$(OBJEXT) - -rm -f test/gtest_xml_outfile2_test_.$(OBJEXT) - -rm -f test/gtest_xml_output_unittest_.$(OBJEXT) - -rm -f test/production.$(OBJEXT) - -rm -f test/test_gtest_death_test_test-gtest-death-test_test.$(OBJEXT) - -rm -f test/test_gtest_no_rtti_test-gtest_unittest.$(OBJEXT) - -rm -f test/test_gtest_throw_on_failure_ex_test-gtest_throw_on_failure_ex_test.$(OBJEXT) - -rm -f test/test_gtest_throw_on_failure_test_-gtest_throw_on_failure_test_.$(OBJEXT) - -rm -f test/test_gtest_tuple_test-gtest-tuple_test.$(OBJEXT) - -rm -f test/test_gtest_use_own_tuple_test-gtest-param-test2_test.$(OBJEXT) - -rm -f test/test_gtest_use_own_tuple_test-gtest-param-test_test.$(OBJEXT) - -distclean-compile: - -rm -f *.tab.c - -@AMDEP_TRUE@@am__include@ @am__quote@samples/$(DEPDIR)/sample1.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@samples/$(DEPDIR)/sample10_unittest.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@samples/$(DEPDIR)/sample1_unittest.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@samples/$(DEPDIR)/sample2.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@samples/$(DEPDIR)/sample2_unittest.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@samples/$(DEPDIR)/sample3_unittest.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@samples/$(DEPDIR)/sample4.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@samples/$(DEPDIR)/sample4_unittest.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@samples/$(DEPDIR)/sample5_unittest.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@samples/$(DEPDIR)/sample6_unittest.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@samples/$(DEPDIR)/sample7_unittest.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@samples/$(DEPDIR)/sample8_unittest.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@samples/$(DEPDIR)/sample9_unittest.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/gtest-death-test.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/gtest-filepath.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/gtest-port.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/gtest-test-part.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/gtest-typed-test.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/gtest.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/gtest_main.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/test_gtest_no_rtti_test-gtest-all.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/test_gtest_no_rtti_test-gtest_main.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/test_gtest_throw_on_failure_ex_test-gtest-all.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/test_gtest_throw_on_failure_test_-gtest-all.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/test_gtest_tuple_test-gtest-all.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/test_gtest_tuple_test-gtest_main.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/test_gtest_use_own_tuple_test-gtest-all.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@test/$(DEPDIR)/gtest-filepath_test.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@test/$(DEPDIR)/gtest-linked_ptr_test.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@test/$(DEPDIR)/gtest-listener_test.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@test/$(DEPDIR)/gtest-message_test.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@test/$(DEPDIR)/gtest-options_test.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@test/$(DEPDIR)/gtest-param-test2_test.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@test/$(DEPDIR)/gtest-param-test_test.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@test/$(DEPDIR)/gtest-port_test.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@test/$(DEPDIR)/gtest-test-part_test.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@test/$(DEPDIR)/gtest-typed-test2_test.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@test/$(DEPDIR)/gtest-typed-test_test.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@test/$(DEPDIR)/gtest-unittest-api_test.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@test/$(DEPDIR)/gtest_break_on_failure_unittest_.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@test/$(DEPDIR)/gtest_color_test_.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@test/$(DEPDIR)/gtest_env_var_test_.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@test/$(DEPDIR)/gtest_environment_test.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@test/$(DEPDIR)/gtest_filter_unittest_.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@test/$(DEPDIR)/gtest_help_test_.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@test/$(DEPDIR)/gtest_list_tests_unittest_.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@test/$(DEPDIR)/gtest_main_unittest.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@test/$(DEPDIR)/gtest_no_test_unittest.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@test/$(DEPDIR)/gtest_output_test_.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@test/$(DEPDIR)/gtest_pred_impl_unittest.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@test/$(DEPDIR)/gtest_prod_test.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@test/$(DEPDIR)/gtest_repeat_test.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@test/$(DEPDIR)/gtest_shuffle_test_.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@test/$(DEPDIR)/gtest_sole_header_test.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@test/$(DEPDIR)/gtest_stress_test.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@test/$(DEPDIR)/gtest_uninitialized_test_.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@test/$(DEPDIR)/gtest_unittest.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@test/$(DEPDIR)/gtest_xml_outfile1_test_.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@test/$(DEPDIR)/gtest_xml_outfile2_test_.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@test/$(DEPDIR)/gtest_xml_output_unittest_.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@test/$(DEPDIR)/production.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@test/$(DEPDIR)/test_gtest_death_test_test-gtest-death-test_test.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@test/$(DEPDIR)/test_gtest_no_rtti_test-gtest_unittest.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@test/$(DEPDIR)/test_gtest_throw_on_failure_ex_test-gtest_throw_on_failure_ex_test.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@test/$(DEPDIR)/test_gtest_throw_on_failure_test_-gtest_throw_on_failure_test_.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@test/$(DEPDIR)/test_gtest_tuple_test-gtest-tuple_test.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@test/$(DEPDIR)/test_gtest_use_own_tuple_test-gtest-param-test2_test.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@test/$(DEPDIR)/test_gtest_use_own_tuple_test-gtest-param-test_test.Po@am__quote@ - -.cc.o: -@am__fastdepCXX_TRUE@ depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\ -@am__fastdepCXX_TRUE@ $(CXXCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ -@am__fastdepCXX_TRUE@ mv -f $$depbase.Tpo $$depbase.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(CXXCOMPILE) -c -o $@ $< - -.cc.obj: -@am__fastdepCXX_TRUE@ depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\ -@am__fastdepCXX_TRUE@ $(CXXCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\ -@am__fastdepCXX_TRUE@ mv -f $$depbase.Tpo $$depbase.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'` - -.cc.lo: -@am__fastdepCXX_TRUE@ depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.lo$$||'`;\ -@am__fastdepCXX_TRUE@ $(LTCXXCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ -@am__fastdepCXX_TRUE@ mv -f $$depbase.Tpo $$depbase.Plo -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(LTCXXCOMPILE) -c -o $@ $< - -test/test_gtest_death_test_test-gtest-death-test_test.o: test/gtest-death-test_test.cc -@am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(test_gtest_death_test_test_CXXFLAGS) $(CXXFLAGS) -MT test/test_gtest_death_test_test-gtest-death-test_test.o -MD -MP -MF test/$(DEPDIR)/test_gtest_death_test_test-gtest-death-test_test.Tpo -c -o test/test_gtest_death_test_test-gtest-death-test_test.o `test -f 'test/gtest-death-test_test.cc' || echo '$(srcdir)/'`test/gtest-death-test_test.cc -@am__fastdepCXX_TRUE@ mv -f test/$(DEPDIR)/test_gtest_death_test_test-gtest-death-test_test.Tpo test/$(DEPDIR)/test_gtest_death_test_test-gtest-death-test_test.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='test/gtest-death-test_test.cc' object='test/test_gtest_death_test_test-gtest-death-test_test.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(test_gtest_death_test_test_CXXFLAGS) $(CXXFLAGS) -c -o test/test_gtest_death_test_test-gtest-death-test_test.o `test -f 'test/gtest-death-test_test.cc' || echo '$(srcdir)/'`test/gtest-death-test_test.cc - -test/test_gtest_death_test_test-gtest-death-test_test.obj: test/gtest-death-test_test.cc -@am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(test_gtest_death_test_test_CXXFLAGS) $(CXXFLAGS) -MT test/test_gtest_death_test_test-gtest-death-test_test.obj -MD -MP -MF test/$(DEPDIR)/test_gtest_death_test_test-gtest-death-test_test.Tpo -c -o test/test_gtest_death_test_test-gtest-death-test_test.obj `if test -f 'test/gtest-death-test_test.cc'; then $(CYGPATH_W) 'test/gtest-death-test_test.cc'; else $(CYGPATH_W) '$(srcdir)/test/gtest-death-test_test.cc'; fi` -@am__fastdepCXX_TRUE@ mv -f test/$(DEPDIR)/test_gtest_death_test_test-gtest-death-test_test.Tpo test/$(DEPDIR)/test_gtest_death_test_test-gtest-death-test_test.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='test/gtest-death-test_test.cc' object='test/test_gtest_death_test_test-gtest-death-test_test.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(test_gtest_death_test_test_CXXFLAGS) $(CXXFLAGS) -c -o test/test_gtest_death_test_test-gtest-death-test_test.obj `if test -f 'test/gtest-death-test_test.cc'; then $(CYGPATH_W) 'test/gtest-death-test_test.cc'; else $(CYGPATH_W) '$(srcdir)/test/gtest-death-test_test.cc'; fi` - -test/test_gtest_tuple_test-gtest-tuple_test.o: test/gtest-tuple_test.cc -@am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(test_gtest_tuple_test_CXXFLAGS) $(CXXFLAGS) -MT test/test_gtest_tuple_test-gtest-tuple_test.o -MD -MP -MF test/$(DEPDIR)/test_gtest_tuple_test-gtest-tuple_test.Tpo -c -o test/test_gtest_tuple_test-gtest-tuple_test.o `test -f 'test/gtest-tuple_test.cc' || echo '$(srcdir)/'`test/gtest-tuple_test.cc -@am__fastdepCXX_TRUE@ mv -f test/$(DEPDIR)/test_gtest_tuple_test-gtest-tuple_test.Tpo test/$(DEPDIR)/test_gtest_tuple_test-gtest-tuple_test.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='test/gtest-tuple_test.cc' object='test/test_gtest_tuple_test-gtest-tuple_test.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(test_gtest_tuple_test_CXXFLAGS) $(CXXFLAGS) -c -o test/test_gtest_tuple_test-gtest-tuple_test.o `test -f 'test/gtest-tuple_test.cc' || echo '$(srcdir)/'`test/gtest-tuple_test.cc - -test/test_gtest_tuple_test-gtest-tuple_test.obj: test/gtest-tuple_test.cc -@am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(test_gtest_tuple_test_CXXFLAGS) $(CXXFLAGS) -MT test/test_gtest_tuple_test-gtest-tuple_test.obj -MD -MP -MF test/$(DEPDIR)/test_gtest_tuple_test-gtest-tuple_test.Tpo -c -o test/test_gtest_tuple_test-gtest-tuple_test.obj `if test -f 'test/gtest-tuple_test.cc'; then $(CYGPATH_W) 'test/gtest-tuple_test.cc'; else $(CYGPATH_W) '$(srcdir)/test/gtest-tuple_test.cc'; fi` -@am__fastdepCXX_TRUE@ mv -f test/$(DEPDIR)/test_gtest_tuple_test-gtest-tuple_test.Tpo test/$(DEPDIR)/test_gtest_tuple_test-gtest-tuple_test.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='test/gtest-tuple_test.cc' object='test/test_gtest_tuple_test-gtest-tuple_test.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(test_gtest_tuple_test_CXXFLAGS) $(CXXFLAGS) -c -o test/test_gtest_tuple_test-gtest-tuple_test.obj `if test -f 'test/gtest-tuple_test.cc'; then $(CYGPATH_W) 'test/gtest-tuple_test.cc'; else $(CYGPATH_W) '$(srcdir)/test/gtest-tuple_test.cc'; fi` - -src/test_gtest_tuple_test-gtest-all.o: src/gtest-all.cc -@am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(test_gtest_tuple_test_CXXFLAGS) $(CXXFLAGS) -MT src/test_gtest_tuple_test-gtest-all.o -MD -MP -MF src/$(DEPDIR)/test_gtest_tuple_test-gtest-all.Tpo -c -o src/test_gtest_tuple_test-gtest-all.o `test -f 'src/gtest-all.cc' || echo '$(srcdir)/'`src/gtest-all.cc -@am__fastdepCXX_TRUE@ mv -f src/$(DEPDIR)/test_gtest_tuple_test-gtest-all.Tpo src/$(DEPDIR)/test_gtest_tuple_test-gtest-all.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='src/gtest-all.cc' object='src/test_gtest_tuple_test-gtest-all.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(test_gtest_tuple_test_CXXFLAGS) $(CXXFLAGS) -c -o src/test_gtest_tuple_test-gtest-all.o `test -f 'src/gtest-all.cc' || echo '$(srcdir)/'`src/gtest-all.cc - -src/test_gtest_tuple_test-gtest-all.obj: src/gtest-all.cc -@am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(test_gtest_tuple_test_CXXFLAGS) $(CXXFLAGS) -MT src/test_gtest_tuple_test-gtest-all.obj -MD -MP -MF src/$(DEPDIR)/test_gtest_tuple_test-gtest-all.Tpo -c -o src/test_gtest_tuple_test-gtest-all.obj `if test -f 'src/gtest-all.cc'; then $(CYGPATH_W) 'src/gtest-all.cc'; else $(CYGPATH_W) '$(srcdir)/src/gtest-all.cc'; fi` -@am__fastdepCXX_TRUE@ mv -f src/$(DEPDIR)/test_gtest_tuple_test-gtest-all.Tpo src/$(DEPDIR)/test_gtest_tuple_test-gtest-all.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='src/gtest-all.cc' object='src/test_gtest_tuple_test-gtest-all.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(test_gtest_tuple_test_CXXFLAGS) $(CXXFLAGS) -c -o src/test_gtest_tuple_test-gtest-all.obj `if test -f 'src/gtest-all.cc'; then $(CYGPATH_W) 'src/gtest-all.cc'; else $(CYGPATH_W) '$(srcdir)/src/gtest-all.cc'; fi` - -src/test_gtest_tuple_test-gtest_main.o: src/gtest_main.cc -@am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(test_gtest_tuple_test_CXXFLAGS) $(CXXFLAGS) -MT src/test_gtest_tuple_test-gtest_main.o -MD -MP -MF src/$(DEPDIR)/test_gtest_tuple_test-gtest_main.Tpo -c -o src/test_gtest_tuple_test-gtest_main.o `test -f 'src/gtest_main.cc' || echo '$(srcdir)/'`src/gtest_main.cc -@am__fastdepCXX_TRUE@ mv -f src/$(DEPDIR)/test_gtest_tuple_test-gtest_main.Tpo src/$(DEPDIR)/test_gtest_tuple_test-gtest_main.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='src/gtest_main.cc' object='src/test_gtest_tuple_test-gtest_main.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(test_gtest_tuple_test_CXXFLAGS) $(CXXFLAGS) -c -o src/test_gtest_tuple_test-gtest_main.o `test -f 'src/gtest_main.cc' || echo '$(srcdir)/'`src/gtest_main.cc - -src/test_gtest_tuple_test-gtest_main.obj: src/gtest_main.cc -@am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(test_gtest_tuple_test_CXXFLAGS) $(CXXFLAGS) -MT src/test_gtest_tuple_test-gtest_main.obj -MD -MP -MF src/$(DEPDIR)/test_gtest_tuple_test-gtest_main.Tpo -c -o src/test_gtest_tuple_test-gtest_main.obj `if test -f 'src/gtest_main.cc'; then $(CYGPATH_W) 'src/gtest_main.cc'; else $(CYGPATH_W) '$(srcdir)/src/gtest_main.cc'; fi` -@am__fastdepCXX_TRUE@ mv -f src/$(DEPDIR)/test_gtest_tuple_test-gtest_main.Tpo src/$(DEPDIR)/test_gtest_tuple_test-gtest_main.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='src/gtest_main.cc' object='src/test_gtest_tuple_test-gtest_main.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(test_gtest_tuple_test_CXXFLAGS) $(CXXFLAGS) -c -o src/test_gtest_tuple_test-gtest_main.obj `if test -f 'src/gtest_main.cc'; then $(CYGPATH_W) 'src/gtest_main.cc'; else $(CYGPATH_W) '$(srcdir)/src/gtest_main.cc'; fi` - -test/test_gtest_no_rtti_test-gtest_unittest.o: test/gtest_unittest.cc -@am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(test_gtest_no_rtti_test_CXXFLAGS) $(CXXFLAGS) -MT test/test_gtest_no_rtti_test-gtest_unittest.o -MD -MP -MF test/$(DEPDIR)/test_gtest_no_rtti_test-gtest_unittest.Tpo -c -o test/test_gtest_no_rtti_test-gtest_unittest.o `test -f 'test/gtest_unittest.cc' || echo '$(srcdir)/'`test/gtest_unittest.cc -@am__fastdepCXX_TRUE@ mv -f test/$(DEPDIR)/test_gtest_no_rtti_test-gtest_unittest.Tpo test/$(DEPDIR)/test_gtest_no_rtti_test-gtest_unittest.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='test/gtest_unittest.cc' object='test/test_gtest_no_rtti_test-gtest_unittest.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(test_gtest_no_rtti_test_CXXFLAGS) $(CXXFLAGS) -c -o test/test_gtest_no_rtti_test-gtest_unittest.o `test -f 'test/gtest_unittest.cc' || echo '$(srcdir)/'`test/gtest_unittest.cc - -test/test_gtest_no_rtti_test-gtest_unittest.obj: test/gtest_unittest.cc -@am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(test_gtest_no_rtti_test_CXXFLAGS) $(CXXFLAGS) -MT test/test_gtest_no_rtti_test-gtest_unittest.obj -MD -MP -MF test/$(DEPDIR)/test_gtest_no_rtti_test-gtest_unittest.Tpo -c -o test/test_gtest_no_rtti_test-gtest_unittest.obj `if test -f 'test/gtest_unittest.cc'; then $(CYGPATH_W) 'test/gtest_unittest.cc'; else $(CYGPATH_W) '$(srcdir)/test/gtest_unittest.cc'; fi` -@am__fastdepCXX_TRUE@ mv -f test/$(DEPDIR)/test_gtest_no_rtti_test-gtest_unittest.Tpo test/$(DEPDIR)/test_gtest_no_rtti_test-gtest_unittest.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='test/gtest_unittest.cc' object='test/test_gtest_no_rtti_test-gtest_unittest.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(test_gtest_no_rtti_test_CXXFLAGS) $(CXXFLAGS) -c -o test/test_gtest_no_rtti_test-gtest_unittest.obj `if test -f 'test/gtest_unittest.cc'; then $(CYGPATH_W) 'test/gtest_unittest.cc'; else $(CYGPATH_W) '$(srcdir)/test/gtest_unittest.cc'; fi` - -src/test_gtest_no_rtti_test-gtest-all.o: src/gtest-all.cc -@am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(test_gtest_no_rtti_test_CXXFLAGS) $(CXXFLAGS) -MT src/test_gtest_no_rtti_test-gtest-all.o -MD -MP -MF src/$(DEPDIR)/test_gtest_no_rtti_test-gtest-all.Tpo -c -o src/test_gtest_no_rtti_test-gtest-all.o `test -f 'src/gtest-all.cc' || echo '$(srcdir)/'`src/gtest-all.cc -@am__fastdepCXX_TRUE@ mv -f src/$(DEPDIR)/test_gtest_no_rtti_test-gtest-all.Tpo src/$(DEPDIR)/test_gtest_no_rtti_test-gtest-all.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='src/gtest-all.cc' object='src/test_gtest_no_rtti_test-gtest-all.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(test_gtest_no_rtti_test_CXXFLAGS) $(CXXFLAGS) -c -o src/test_gtest_no_rtti_test-gtest-all.o `test -f 'src/gtest-all.cc' || echo '$(srcdir)/'`src/gtest-all.cc - -src/test_gtest_no_rtti_test-gtest-all.obj: src/gtest-all.cc -@am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(test_gtest_no_rtti_test_CXXFLAGS) $(CXXFLAGS) -MT src/test_gtest_no_rtti_test-gtest-all.obj -MD -MP -MF src/$(DEPDIR)/test_gtest_no_rtti_test-gtest-all.Tpo -c -o src/test_gtest_no_rtti_test-gtest-all.obj `if test -f 'src/gtest-all.cc'; then $(CYGPATH_W) 'src/gtest-all.cc'; else $(CYGPATH_W) '$(srcdir)/src/gtest-all.cc'; fi` -@am__fastdepCXX_TRUE@ mv -f src/$(DEPDIR)/test_gtest_no_rtti_test-gtest-all.Tpo src/$(DEPDIR)/test_gtest_no_rtti_test-gtest-all.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='src/gtest-all.cc' object='src/test_gtest_no_rtti_test-gtest-all.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(test_gtest_no_rtti_test_CXXFLAGS) $(CXXFLAGS) -c -o src/test_gtest_no_rtti_test-gtest-all.obj `if test -f 'src/gtest-all.cc'; then $(CYGPATH_W) 'src/gtest-all.cc'; else $(CYGPATH_W) '$(srcdir)/src/gtest-all.cc'; fi` - -src/test_gtest_no_rtti_test-gtest_main.o: src/gtest_main.cc -@am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(test_gtest_no_rtti_test_CXXFLAGS) $(CXXFLAGS) -MT src/test_gtest_no_rtti_test-gtest_main.o -MD -MP -MF src/$(DEPDIR)/test_gtest_no_rtti_test-gtest_main.Tpo -c -o src/test_gtest_no_rtti_test-gtest_main.o `test -f 'src/gtest_main.cc' || echo '$(srcdir)/'`src/gtest_main.cc -@am__fastdepCXX_TRUE@ mv -f src/$(DEPDIR)/test_gtest_no_rtti_test-gtest_main.Tpo src/$(DEPDIR)/test_gtest_no_rtti_test-gtest_main.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='src/gtest_main.cc' object='src/test_gtest_no_rtti_test-gtest_main.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(test_gtest_no_rtti_test_CXXFLAGS) $(CXXFLAGS) -c -o src/test_gtest_no_rtti_test-gtest_main.o `test -f 'src/gtest_main.cc' || echo '$(srcdir)/'`src/gtest_main.cc - -src/test_gtest_no_rtti_test-gtest_main.obj: src/gtest_main.cc -@am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(test_gtest_no_rtti_test_CXXFLAGS) $(CXXFLAGS) -MT src/test_gtest_no_rtti_test-gtest_main.obj -MD -MP -MF src/$(DEPDIR)/test_gtest_no_rtti_test-gtest_main.Tpo -c -o src/test_gtest_no_rtti_test-gtest_main.obj `if test -f 'src/gtest_main.cc'; then $(CYGPATH_W) 'src/gtest_main.cc'; else $(CYGPATH_W) '$(srcdir)/src/gtest_main.cc'; fi` -@am__fastdepCXX_TRUE@ mv -f src/$(DEPDIR)/test_gtest_no_rtti_test-gtest_main.Tpo src/$(DEPDIR)/test_gtest_no_rtti_test-gtest_main.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='src/gtest_main.cc' object='src/test_gtest_no_rtti_test-gtest_main.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(test_gtest_no_rtti_test_CXXFLAGS) $(CXXFLAGS) -c -o src/test_gtest_no_rtti_test-gtest_main.obj `if test -f 'src/gtest_main.cc'; then $(CYGPATH_W) 'src/gtest_main.cc'; else $(CYGPATH_W) '$(srcdir)/src/gtest_main.cc'; fi` - -test/test_gtest_throw_on_failure_ex_test-gtest_throw_on_failure_ex_test.o: test/gtest_throw_on_failure_ex_test.cc -@am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(test_gtest_throw_on_failure_ex_test_CXXFLAGS) $(CXXFLAGS) -MT test/test_gtest_throw_on_failure_ex_test-gtest_throw_on_failure_ex_test.o -MD -MP -MF test/$(DEPDIR)/test_gtest_throw_on_failure_ex_test-gtest_throw_on_failure_ex_test.Tpo -c -o test/test_gtest_throw_on_failure_ex_test-gtest_throw_on_failure_ex_test.o `test -f 'test/gtest_throw_on_failure_ex_test.cc' || echo '$(srcdir)/'`test/gtest_throw_on_failure_ex_test.cc -@am__fastdepCXX_TRUE@ mv -f test/$(DEPDIR)/test_gtest_throw_on_failure_ex_test-gtest_throw_on_failure_ex_test.Tpo test/$(DEPDIR)/test_gtest_throw_on_failure_ex_test-gtest_throw_on_failure_ex_test.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='test/gtest_throw_on_failure_ex_test.cc' object='test/test_gtest_throw_on_failure_ex_test-gtest_throw_on_failure_ex_test.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(test_gtest_throw_on_failure_ex_test_CXXFLAGS) $(CXXFLAGS) -c -o test/test_gtest_throw_on_failure_ex_test-gtest_throw_on_failure_ex_test.o `test -f 'test/gtest_throw_on_failure_ex_test.cc' || echo '$(srcdir)/'`test/gtest_throw_on_failure_ex_test.cc - -test/test_gtest_throw_on_failure_ex_test-gtest_throw_on_failure_ex_test.obj: test/gtest_throw_on_failure_ex_test.cc -@am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(test_gtest_throw_on_failure_ex_test_CXXFLAGS) $(CXXFLAGS) -MT test/test_gtest_throw_on_failure_ex_test-gtest_throw_on_failure_ex_test.obj -MD -MP -MF test/$(DEPDIR)/test_gtest_throw_on_failure_ex_test-gtest_throw_on_failure_ex_test.Tpo -c -o test/test_gtest_throw_on_failure_ex_test-gtest_throw_on_failure_ex_test.obj `if test -f 'test/gtest_throw_on_failure_ex_test.cc'; then $(CYGPATH_W) 'test/gtest_throw_on_failure_ex_test.cc'; else $(CYGPATH_W) '$(srcdir)/test/gtest_throw_on_failure_ex_test.cc'; fi` -@am__fastdepCXX_TRUE@ mv -f test/$(DEPDIR)/test_gtest_throw_on_failure_ex_test-gtest_throw_on_failure_ex_test.Tpo test/$(DEPDIR)/test_gtest_throw_on_failure_ex_test-gtest_throw_on_failure_ex_test.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='test/gtest_throw_on_failure_ex_test.cc' object='test/test_gtest_throw_on_failure_ex_test-gtest_throw_on_failure_ex_test.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(test_gtest_throw_on_failure_ex_test_CXXFLAGS) $(CXXFLAGS) -c -o test/test_gtest_throw_on_failure_ex_test-gtest_throw_on_failure_ex_test.obj `if test -f 'test/gtest_throw_on_failure_ex_test.cc'; then $(CYGPATH_W) 'test/gtest_throw_on_failure_ex_test.cc'; else $(CYGPATH_W) '$(srcdir)/test/gtest_throw_on_failure_ex_test.cc'; fi` - -src/test_gtest_throw_on_failure_ex_test-gtest-all.o: src/gtest-all.cc -@am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(test_gtest_throw_on_failure_ex_test_CXXFLAGS) $(CXXFLAGS) -MT src/test_gtest_throw_on_failure_ex_test-gtest-all.o -MD -MP -MF src/$(DEPDIR)/test_gtest_throw_on_failure_ex_test-gtest-all.Tpo -c -o src/test_gtest_throw_on_failure_ex_test-gtest-all.o `test -f 'src/gtest-all.cc' || echo '$(srcdir)/'`src/gtest-all.cc -@am__fastdepCXX_TRUE@ mv -f src/$(DEPDIR)/test_gtest_throw_on_failure_ex_test-gtest-all.Tpo src/$(DEPDIR)/test_gtest_throw_on_failure_ex_test-gtest-all.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='src/gtest-all.cc' object='src/test_gtest_throw_on_failure_ex_test-gtest-all.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(test_gtest_throw_on_failure_ex_test_CXXFLAGS) $(CXXFLAGS) -c -o src/test_gtest_throw_on_failure_ex_test-gtest-all.o `test -f 'src/gtest-all.cc' || echo '$(srcdir)/'`src/gtest-all.cc - -src/test_gtest_throw_on_failure_ex_test-gtest-all.obj: src/gtest-all.cc -@am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(test_gtest_throw_on_failure_ex_test_CXXFLAGS) $(CXXFLAGS) -MT src/test_gtest_throw_on_failure_ex_test-gtest-all.obj -MD -MP -MF src/$(DEPDIR)/test_gtest_throw_on_failure_ex_test-gtest-all.Tpo -c -o src/test_gtest_throw_on_failure_ex_test-gtest-all.obj `if test -f 'src/gtest-all.cc'; then $(CYGPATH_W) 'src/gtest-all.cc'; else $(CYGPATH_W) '$(srcdir)/src/gtest-all.cc'; fi` -@am__fastdepCXX_TRUE@ mv -f src/$(DEPDIR)/test_gtest_throw_on_failure_ex_test-gtest-all.Tpo src/$(DEPDIR)/test_gtest_throw_on_failure_ex_test-gtest-all.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='src/gtest-all.cc' object='src/test_gtest_throw_on_failure_ex_test-gtest-all.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(test_gtest_throw_on_failure_ex_test_CXXFLAGS) $(CXXFLAGS) -c -o src/test_gtest_throw_on_failure_ex_test-gtest-all.obj `if test -f 'src/gtest-all.cc'; then $(CYGPATH_W) 'src/gtest-all.cc'; else $(CYGPATH_W) '$(srcdir)/src/gtest-all.cc'; fi` - -test/test_gtest_throw_on_failure_test_-gtest_throw_on_failure_test_.o: test/gtest_throw_on_failure_test_.cc -@am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(test_gtest_throw_on_failure_test__CXXFLAGS) $(CXXFLAGS) -MT test/test_gtest_throw_on_failure_test_-gtest_throw_on_failure_test_.o -MD -MP -MF test/$(DEPDIR)/test_gtest_throw_on_failure_test_-gtest_throw_on_failure_test_.Tpo -c -o test/test_gtest_throw_on_failure_test_-gtest_throw_on_failure_test_.o `test -f 'test/gtest_throw_on_failure_test_.cc' || echo '$(srcdir)/'`test/gtest_throw_on_failure_test_.cc -@am__fastdepCXX_TRUE@ mv -f test/$(DEPDIR)/test_gtest_throw_on_failure_test_-gtest_throw_on_failure_test_.Tpo test/$(DEPDIR)/test_gtest_throw_on_failure_test_-gtest_throw_on_failure_test_.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='test/gtest_throw_on_failure_test_.cc' object='test/test_gtest_throw_on_failure_test_-gtest_throw_on_failure_test_.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(test_gtest_throw_on_failure_test__CXXFLAGS) $(CXXFLAGS) -c -o test/test_gtest_throw_on_failure_test_-gtest_throw_on_failure_test_.o `test -f 'test/gtest_throw_on_failure_test_.cc' || echo '$(srcdir)/'`test/gtest_throw_on_failure_test_.cc - -test/test_gtest_throw_on_failure_test_-gtest_throw_on_failure_test_.obj: test/gtest_throw_on_failure_test_.cc -@am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(test_gtest_throw_on_failure_test__CXXFLAGS) $(CXXFLAGS) -MT test/test_gtest_throw_on_failure_test_-gtest_throw_on_failure_test_.obj -MD -MP -MF test/$(DEPDIR)/test_gtest_throw_on_failure_test_-gtest_throw_on_failure_test_.Tpo -c -o test/test_gtest_throw_on_failure_test_-gtest_throw_on_failure_test_.obj `if test -f 'test/gtest_throw_on_failure_test_.cc'; then $(CYGPATH_W) 'test/gtest_throw_on_failure_test_.cc'; else $(CYGPATH_W) '$(srcdir)/test/gtest_throw_on_failure_test_.cc'; fi` -@am__fastdepCXX_TRUE@ mv -f test/$(DEPDIR)/test_gtest_throw_on_failure_test_-gtest_throw_on_failure_test_.Tpo test/$(DEPDIR)/test_gtest_throw_on_failure_test_-gtest_throw_on_failure_test_.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='test/gtest_throw_on_failure_test_.cc' object='test/test_gtest_throw_on_failure_test_-gtest_throw_on_failure_test_.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(test_gtest_throw_on_failure_test__CXXFLAGS) $(CXXFLAGS) -c -o test/test_gtest_throw_on_failure_test_-gtest_throw_on_failure_test_.obj `if test -f 'test/gtest_throw_on_failure_test_.cc'; then $(CYGPATH_W) 'test/gtest_throw_on_failure_test_.cc'; else $(CYGPATH_W) '$(srcdir)/test/gtest_throw_on_failure_test_.cc'; fi` - -src/test_gtest_throw_on_failure_test_-gtest-all.o: src/gtest-all.cc -@am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(test_gtest_throw_on_failure_test__CXXFLAGS) $(CXXFLAGS) -MT src/test_gtest_throw_on_failure_test_-gtest-all.o -MD -MP -MF src/$(DEPDIR)/test_gtest_throw_on_failure_test_-gtest-all.Tpo -c -o src/test_gtest_throw_on_failure_test_-gtest-all.o `test -f 'src/gtest-all.cc' || echo '$(srcdir)/'`src/gtest-all.cc -@am__fastdepCXX_TRUE@ mv -f src/$(DEPDIR)/test_gtest_throw_on_failure_test_-gtest-all.Tpo src/$(DEPDIR)/test_gtest_throw_on_failure_test_-gtest-all.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='src/gtest-all.cc' object='src/test_gtest_throw_on_failure_test_-gtest-all.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(test_gtest_throw_on_failure_test__CXXFLAGS) $(CXXFLAGS) -c -o src/test_gtest_throw_on_failure_test_-gtest-all.o `test -f 'src/gtest-all.cc' || echo '$(srcdir)/'`src/gtest-all.cc - -src/test_gtest_throw_on_failure_test_-gtest-all.obj: src/gtest-all.cc -@am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(test_gtest_throw_on_failure_test__CXXFLAGS) $(CXXFLAGS) -MT src/test_gtest_throw_on_failure_test_-gtest-all.obj -MD -MP -MF src/$(DEPDIR)/test_gtest_throw_on_failure_test_-gtest-all.Tpo -c -o src/test_gtest_throw_on_failure_test_-gtest-all.obj `if test -f 'src/gtest-all.cc'; then $(CYGPATH_W) 'src/gtest-all.cc'; else $(CYGPATH_W) '$(srcdir)/src/gtest-all.cc'; fi` -@am__fastdepCXX_TRUE@ mv -f src/$(DEPDIR)/test_gtest_throw_on_failure_test_-gtest-all.Tpo src/$(DEPDIR)/test_gtest_throw_on_failure_test_-gtest-all.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='src/gtest-all.cc' object='src/test_gtest_throw_on_failure_test_-gtest-all.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(test_gtest_throw_on_failure_test__CXXFLAGS) $(CXXFLAGS) -c -o src/test_gtest_throw_on_failure_test_-gtest-all.obj `if test -f 'src/gtest-all.cc'; then $(CYGPATH_W) 'src/gtest-all.cc'; else $(CYGPATH_W) '$(srcdir)/src/gtest-all.cc'; fi` - -test/test_gtest_use_own_tuple_test-gtest-param-test_test.o: test/gtest-param-test_test.cc -@am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(test_gtest_use_own_tuple_test_CXXFLAGS) $(CXXFLAGS) -MT test/test_gtest_use_own_tuple_test-gtest-param-test_test.o -MD -MP -MF test/$(DEPDIR)/test_gtest_use_own_tuple_test-gtest-param-test_test.Tpo -c -o test/test_gtest_use_own_tuple_test-gtest-param-test_test.o `test -f 'test/gtest-param-test_test.cc' || echo '$(srcdir)/'`test/gtest-param-test_test.cc -@am__fastdepCXX_TRUE@ mv -f test/$(DEPDIR)/test_gtest_use_own_tuple_test-gtest-param-test_test.Tpo test/$(DEPDIR)/test_gtest_use_own_tuple_test-gtest-param-test_test.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='test/gtest-param-test_test.cc' object='test/test_gtest_use_own_tuple_test-gtest-param-test_test.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(test_gtest_use_own_tuple_test_CXXFLAGS) $(CXXFLAGS) -c -o test/test_gtest_use_own_tuple_test-gtest-param-test_test.o `test -f 'test/gtest-param-test_test.cc' || echo '$(srcdir)/'`test/gtest-param-test_test.cc - -test/test_gtest_use_own_tuple_test-gtest-param-test_test.obj: test/gtest-param-test_test.cc -@am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(test_gtest_use_own_tuple_test_CXXFLAGS) $(CXXFLAGS) -MT test/test_gtest_use_own_tuple_test-gtest-param-test_test.obj -MD -MP -MF test/$(DEPDIR)/test_gtest_use_own_tuple_test-gtest-param-test_test.Tpo -c -o test/test_gtest_use_own_tuple_test-gtest-param-test_test.obj `if test -f 'test/gtest-param-test_test.cc'; then $(CYGPATH_W) 'test/gtest-param-test_test.cc'; else $(CYGPATH_W) '$(srcdir)/test/gtest-param-test_test.cc'; fi` -@am__fastdepCXX_TRUE@ mv -f test/$(DEPDIR)/test_gtest_use_own_tuple_test-gtest-param-test_test.Tpo test/$(DEPDIR)/test_gtest_use_own_tuple_test-gtest-param-test_test.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='test/gtest-param-test_test.cc' object='test/test_gtest_use_own_tuple_test-gtest-param-test_test.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(test_gtest_use_own_tuple_test_CXXFLAGS) $(CXXFLAGS) -c -o test/test_gtest_use_own_tuple_test-gtest-param-test_test.obj `if test -f 'test/gtest-param-test_test.cc'; then $(CYGPATH_W) 'test/gtest-param-test_test.cc'; else $(CYGPATH_W) '$(srcdir)/test/gtest-param-test_test.cc'; fi` - -test/test_gtest_use_own_tuple_test-gtest-param-test2_test.o: test/gtest-param-test2_test.cc -@am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(test_gtest_use_own_tuple_test_CXXFLAGS) $(CXXFLAGS) -MT test/test_gtest_use_own_tuple_test-gtest-param-test2_test.o -MD -MP -MF test/$(DEPDIR)/test_gtest_use_own_tuple_test-gtest-param-test2_test.Tpo -c -o test/test_gtest_use_own_tuple_test-gtest-param-test2_test.o `test -f 'test/gtest-param-test2_test.cc' || echo '$(srcdir)/'`test/gtest-param-test2_test.cc -@am__fastdepCXX_TRUE@ mv -f test/$(DEPDIR)/test_gtest_use_own_tuple_test-gtest-param-test2_test.Tpo test/$(DEPDIR)/test_gtest_use_own_tuple_test-gtest-param-test2_test.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='test/gtest-param-test2_test.cc' object='test/test_gtest_use_own_tuple_test-gtest-param-test2_test.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(test_gtest_use_own_tuple_test_CXXFLAGS) $(CXXFLAGS) -c -o test/test_gtest_use_own_tuple_test-gtest-param-test2_test.o `test -f 'test/gtest-param-test2_test.cc' || echo '$(srcdir)/'`test/gtest-param-test2_test.cc - -test/test_gtest_use_own_tuple_test-gtest-param-test2_test.obj: test/gtest-param-test2_test.cc -@am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(test_gtest_use_own_tuple_test_CXXFLAGS) $(CXXFLAGS) -MT test/test_gtest_use_own_tuple_test-gtest-param-test2_test.obj -MD -MP -MF test/$(DEPDIR)/test_gtest_use_own_tuple_test-gtest-param-test2_test.Tpo -c -o test/test_gtest_use_own_tuple_test-gtest-param-test2_test.obj `if test -f 'test/gtest-param-test2_test.cc'; then $(CYGPATH_W) 'test/gtest-param-test2_test.cc'; else $(CYGPATH_W) '$(srcdir)/test/gtest-param-test2_test.cc'; fi` -@am__fastdepCXX_TRUE@ mv -f test/$(DEPDIR)/test_gtest_use_own_tuple_test-gtest-param-test2_test.Tpo test/$(DEPDIR)/test_gtest_use_own_tuple_test-gtest-param-test2_test.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='test/gtest-param-test2_test.cc' object='test/test_gtest_use_own_tuple_test-gtest-param-test2_test.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(test_gtest_use_own_tuple_test_CXXFLAGS) $(CXXFLAGS) -c -o test/test_gtest_use_own_tuple_test-gtest-param-test2_test.obj `if test -f 'test/gtest-param-test2_test.cc'; then $(CYGPATH_W) 'test/gtest-param-test2_test.cc'; else $(CYGPATH_W) '$(srcdir)/test/gtest-param-test2_test.cc'; fi` - -src/test_gtest_use_own_tuple_test-gtest-all.o: src/gtest-all.cc -@am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(test_gtest_use_own_tuple_test_CXXFLAGS) $(CXXFLAGS) -MT src/test_gtest_use_own_tuple_test-gtest-all.o -MD -MP -MF src/$(DEPDIR)/test_gtest_use_own_tuple_test-gtest-all.Tpo -c -o src/test_gtest_use_own_tuple_test-gtest-all.o `test -f 'src/gtest-all.cc' || echo '$(srcdir)/'`src/gtest-all.cc -@am__fastdepCXX_TRUE@ mv -f src/$(DEPDIR)/test_gtest_use_own_tuple_test-gtest-all.Tpo src/$(DEPDIR)/test_gtest_use_own_tuple_test-gtest-all.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='src/gtest-all.cc' object='src/test_gtest_use_own_tuple_test-gtest-all.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(test_gtest_use_own_tuple_test_CXXFLAGS) $(CXXFLAGS) -c -o src/test_gtest_use_own_tuple_test-gtest-all.o `test -f 'src/gtest-all.cc' || echo '$(srcdir)/'`src/gtest-all.cc - -src/test_gtest_use_own_tuple_test-gtest-all.obj: src/gtest-all.cc -@am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(test_gtest_use_own_tuple_test_CXXFLAGS) $(CXXFLAGS) -MT src/test_gtest_use_own_tuple_test-gtest-all.obj -MD -MP -MF src/$(DEPDIR)/test_gtest_use_own_tuple_test-gtest-all.Tpo -c -o src/test_gtest_use_own_tuple_test-gtest-all.obj `if test -f 'src/gtest-all.cc'; then $(CYGPATH_W) 'src/gtest-all.cc'; else $(CYGPATH_W) '$(srcdir)/src/gtest-all.cc'; fi` -@am__fastdepCXX_TRUE@ mv -f src/$(DEPDIR)/test_gtest_use_own_tuple_test-gtest-all.Tpo src/$(DEPDIR)/test_gtest_use_own_tuple_test-gtest-all.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='src/gtest-all.cc' object='src/test_gtest_use_own_tuple_test-gtest-all.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(test_gtest_use_own_tuple_test_CXXFLAGS) $(CXXFLAGS) -c -o src/test_gtest_use_own_tuple_test-gtest-all.obj `if test -f 'src/gtest-all.cc'; then $(CYGPATH_W) 'src/gtest-all.cc'; else $(CYGPATH_W) '$(srcdir)/src/gtest-all.cc'; fi` - -mostlyclean-libtool: - -rm -f *.lo - -clean-libtool: - -rm -rf .libs _libs - -rm -rf lib/.libs lib/_libs - -rm -rf samples/.libs samples/_libs - -rm -rf src/.libs src/_libs - -rm -rf test/.libs test/_libs - -distclean-libtool: - -rm -f libtool -install-m4dataDATA: $(m4data_DATA) - @$(NORMAL_INSTALL) - test -z "$(m4datadir)" || $(MKDIR_P) "$(DESTDIR)$(m4datadir)" - @list='$(m4data_DATA)'; for p in $$list; do \ - if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ - f=$(am__strip_dir) \ - echo " $(m4dataDATA_INSTALL) '$$d$$p' '$(DESTDIR)$(m4datadir)/$$f'"; \ - $(m4dataDATA_INSTALL) "$$d$$p" "$(DESTDIR)$(m4datadir)/$$f"; \ - done - -uninstall-m4dataDATA: - @$(NORMAL_UNINSTALL) - @list='$(m4data_DATA)'; for p in $$list; do \ - f=$(am__strip_dir) \ - echo " rm -f '$(DESTDIR)$(m4datadir)/$$f'"; \ - rm -f "$(DESTDIR)$(m4datadir)/$$f"; \ - done -install-pkgincludeHEADERS: $(pkginclude_HEADERS) - @$(NORMAL_INSTALL) - test -z "$(pkgincludedir)" || $(MKDIR_P) "$(DESTDIR)$(pkgincludedir)" - @list='$(pkginclude_HEADERS)'; for p in $$list; do \ - if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ - f=$(am__strip_dir) \ - echo " $(pkgincludeHEADERS_INSTALL) '$$d$$p' '$(DESTDIR)$(pkgincludedir)/$$f'"; \ - $(pkgincludeHEADERS_INSTALL) "$$d$$p" "$(DESTDIR)$(pkgincludedir)/$$f"; \ - done - -uninstall-pkgincludeHEADERS: - @$(NORMAL_UNINSTALL) - @list='$(pkginclude_HEADERS)'; for p in $$list; do \ - f=$(am__strip_dir) \ - echo " rm -f '$(DESTDIR)$(pkgincludedir)/$$f'"; \ - rm -f "$(DESTDIR)$(pkgincludedir)/$$f"; \ - done -install-pkginclude_internalHEADERS: $(pkginclude_internal_HEADERS) - @$(NORMAL_INSTALL) - test -z "$(pkginclude_internaldir)" || $(MKDIR_P) "$(DESTDIR)$(pkginclude_internaldir)" - @list='$(pkginclude_internal_HEADERS)'; for p in $$list; do \ - if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ - f=$(am__strip_dir) \ - echo " $(pkginclude_internalHEADERS_INSTALL) '$$d$$p' '$(DESTDIR)$(pkginclude_internaldir)/$$f'"; \ - $(pkginclude_internalHEADERS_INSTALL) "$$d$$p" "$(DESTDIR)$(pkginclude_internaldir)/$$f"; \ - done - -uninstall-pkginclude_internalHEADERS: - @$(NORMAL_UNINSTALL) - @list='$(pkginclude_internal_HEADERS)'; for p in $$list; do \ - f=$(am__strip_dir) \ - echo " rm -f '$(DESTDIR)$(pkginclude_internaldir)/$$f'"; \ - rm -f "$(DESTDIR)$(pkginclude_internaldir)/$$f"; \ - done - -ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) '{ files[$$0] = 1; nonemtpy = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ - mkid -fID $$unique -tags: TAGS - -TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ - $(TAGS_FILES) $(LISP) - tags=; \ - here=`pwd`; \ - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ - if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \ - test -n "$$unique" || unique=$$empty_fix; \ - $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ - $$tags $$unique; \ - fi -ctags: CTAGS -CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ - $(TAGS_FILES) $(LISP) - tags=; \ - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ - test -z "$(CTAGS_ARGS)$$tags$$unique" \ - || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ - $$tags $$unique - -GTAGS: - here=`$(am__cd) $(top_builddir) && pwd` \ - && cd $(top_srcdir) \ - && gtags -i $(GTAGS_ARGS) $$here - -distclean-tags: - -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags - -check-TESTS: $(TESTS) - @failed=0; all=0; xfail=0; xpass=0; skip=0; ws='[ ]'; \ - srcdir=$(srcdir); export srcdir; \ - list=' $(TESTS) '; \ - if test -n "$$list"; then \ - for tst in $$list; do \ - if test -f ./$$tst; then dir=./; \ - elif test -f $$tst; then dir=; \ - else dir="$(srcdir)/"; fi; \ - if $(TESTS_ENVIRONMENT) $${dir}$$tst; then \ - all=`expr $$all + 1`; \ - case " $(XFAIL_TESTS) " in \ - *$$ws$$tst$$ws*) \ - xpass=`expr $$xpass + 1`; \ - failed=`expr $$failed + 1`; \ - echo "XPASS: $$tst"; \ - ;; \ - *) \ - echo "PASS: $$tst"; \ - ;; \ - esac; \ - elif test $$? -ne 77; then \ - all=`expr $$all + 1`; \ - case " $(XFAIL_TESTS) " in \ - *$$ws$$tst$$ws*) \ - xfail=`expr $$xfail + 1`; \ - echo "XFAIL: $$tst"; \ - ;; \ - *) \ - failed=`expr $$failed + 1`; \ - echo "FAIL: $$tst"; \ - ;; \ - esac; \ - else \ - skip=`expr $$skip + 1`; \ - echo "SKIP: $$tst"; \ - fi; \ - done; \ - if test "$$failed" -eq 0; then \ - if test "$$xfail" -eq 0; then \ - banner="All $$all tests passed"; \ - else \ - banner="All $$all tests behaved as expected ($$xfail expected failures)"; \ - fi; \ - else \ - if test "$$xpass" -eq 0; then \ - banner="$$failed of $$all tests failed"; \ - else \ - banner="$$failed of $$all tests did not behave as expected ($$xpass unexpected passes)"; \ - fi; \ - fi; \ - dashes="$$banner"; \ - skipped=""; \ - if test "$$skip" -ne 0; then \ - skipped="($$skip tests were not run)"; \ - test `echo "$$skipped" | wc -c` -le `echo "$$banner" | wc -c` || \ - dashes="$$skipped"; \ - fi; \ - report=""; \ - if test "$$failed" -ne 0 && test -n "$(PACKAGE_BUGREPORT)"; then \ - report="Please report to $(PACKAGE_BUGREPORT)"; \ - test `echo "$$report" | wc -c` -le `echo "$$banner" | wc -c` || \ - dashes="$$report"; \ - fi; \ - dashes=`echo "$$dashes" | sed s/./=/g`; \ - echo "$$dashes"; \ - echo "$$banner"; \ - test -z "$$skipped" || echo "$$skipped"; \ - test -z "$$report" || echo "$$report"; \ - echo "$$dashes"; \ - test "$$failed" -eq 0; \ - else :; fi - -distdir: $(DISTFILES) - $(am__remove_distdir) - test -d $(distdir) || mkdir $(distdir) - @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ - topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ - list='$(DISTFILES)'; \ - dist_files=`for file in $$list; do echo $$file; done | \ - sed -e "s|^$$srcdirstrip/||;t" \ - -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ - case $$dist_files in \ - */*) $(MKDIR_P) `echo "$$dist_files" | \ - sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ - sort -u` ;; \ - esac; \ - for file in $$dist_files; do \ - if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ - if test -d $$d/$$file; then \ - dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ - if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ - cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ - fi; \ - cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ - else \ - test -f $(distdir)/$$file \ - || cp -p $$d/$$file $(distdir)/$$file \ - || exit 1; \ - fi; \ - done - -find $(distdir) -type d ! -perm -777 -exec chmod a+rwx {} \; -o \ - ! -type d ! -perm -444 -links 1 -exec chmod a+r {} \; -o \ - ! -type d ! -perm -400 -exec chmod a+r {} \; -o \ - ! -type d ! -perm -444 -exec $(install_sh) -c -m a+r {} {} \; \ - || chmod -R a+r $(distdir) -dist-gzip: distdir - tardir=$(distdir) && $(am__tar) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz - $(am__remove_distdir) -dist-bzip2: distdir - tardir=$(distdir) && $(am__tar) | bzip2 -9 -c >$(distdir).tar.bz2 - $(am__remove_distdir) - -dist-lzma: distdir - tardir=$(distdir) && $(am__tar) | lzma -9 -c >$(distdir).tar.lzma - $(am__remove_distdir) - -dist-tarZ: distdir - tardir=$(distdir) && $(am__tar) | compress -c >$(distdir).tar.Z - $(am__remove_distdir) - -dist-shar: distdir - shar $(distdir) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).shar.gz - $(am__remove_distdir) -dist-zip: distdir - -rm -f $(distdir).zip - zip -rq $(distdir).zip $(distdir) - $(am__remove_distdir) - -dist dist-all: distdir - tardir=$(distdir) && $(am__tar) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz - tardir=$(distdir) && $(am__tar) | bzip2 -9 -c >$(distdir).tar.bz2 - -rm -f $(distdir).zip - zip -rq $(distdir).zip $(distdir) - $(am__remove_distdir) - -# This target untars the dist file and tries a VPATH configuration. Then -# it guarantees that the distribution is self-contained by making another -# tarfile. -distcheck: dist - case '$(DIST_ARCHIVES)' in \ - *.tar.gz*) \ - GZIP=$(GZIP_ENV) gunzip -c $(distdir).tar.gz | $(am__untar) ;;\ - *.tar.bz2*) \ - bunzip2 -c $(distdir).tar.bz2 | $(am__untar) ;;\ - *.tar.lzma*) \ - unlzma -c $(distdir).tar.lzma | $(am__untar) ;;\ - *.tar.Z*) \ - uncompress -c $(distdir).tar.Z | $(am__untar) ;;\ - *.shar.gz*) \ - GZIP=$(GZIP_ENV) gunzip -c $(distdir).shar.gz | unshar ;;\ - *.zip*) \ - unzip $(distdir).zip ;;\ - esac - chmod -R a-w $(distdir); chmod a+w $(distdir) - mkdir $(distdir)/_build - mkdir $(distdir)/_inst - chmod a-w $(distdir) - dc_install_base=`$(am__cd) $(distdir)/_inst && pwd | sed -e 's,^[^:\\/]:[\\/],/,'` \ - && dc_destdir="$${TMPDIR-/tmp}/am-dc-$$$$/" \ - && cd $(distdir)/_build \ - && ../configure --srcdir=.. --prefix="$$dc_install_base" \ - $(DISTCHECK_CONFIGURE_FLAGS) \ - && $(MAKE) $(AM_MAKEFLAGS) \ - && $(MAKE) $(AM_MAKEFLAGS) dvi \ - && $(MAKE) $(AM_MAKEFLAGS) check \ - && $(MAKE) $(AM_MAKEFLAGS) install \ - && $(MAKE) $(AM_MAKEFLAGS) installcheck \ - && $(MAKE) $(AM_MAKEFLAGS) uninstall \ - && $(MAKE) $(AM_MAKEFLAGS) distuninstallcheck_dir="$$dc_install_base" \ - distuninstallcheck \ - && chmod -R a-w "$$dc_install_base" \ - && ({ \ - (cd ../.. && umask 077 && mkdir "$$dc_destdir") \ - && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" install \ - && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" uninstall \ - && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" \ - distuninstallcheck_dir="$$dc_destdir" distuninstallcheck; \ - } || { rm -rf "$$dc_destdir"; exit 1; }) \ - && rm -rf "$$dc_destdir" \ - && $(MAKE) $(AM_MAKEFLAGS) dist \ - && rm -rf $(DIST_ARCHIVES) \ - && $(MAKE) $(AM_MAKEFLAGS) distcleancheck - $(am__remove_distdir) - @(echo "$(distdir) archives ready for distribution: "; \ - list='$(DIST_ARCHIVES)'; for i in $$list; do echo $$i; done) | \ - sed -e 1h -e 1s/./=/g -e 1p -e 1x -e '$$p' -e '$$x' -distuninstallcheck: - @cd $(distuninstallcheck_dir) \ - && test `$(distuninstallcheck_listfiles) | wc -l` -le 1 \ - || { echo "ERROR: files left after uninstall:" ; \ - if test -n "$(DESTDIR)"; then \ - echo " (check DESTDIR support)"; \ - fi ; \ - $(distuninstallcheck_listfiles) ; \ - exit 1; } >&2 -distcleancheck: distclean - @if test '$(srcdir)' = . ; then \ - echo "ERROR: distcleancheck can only run from a VPATH build" ; \ - exit 1 ; \ - fi - @test `$(distcleancheck_listfiles) | wc -l` -eq 0 \ - || { echo "ERROR: files left in build directory after distclean:" ; \ - $(distcleancheck_listfiles) ; \ - exit 1; } >&2 -check-am: all-am - $(MAKE) $(AM_MAKEFLAGS) $(check_PROGRAMS) $(check_SCRIPTS) - $(MAKE) $(AM_MAKEFLAGS) check-TESTS -check: check-am -all-am: Makefile $(LTLIBRARIES) $(SCRIPTS) $(DATA) $(HEADERS) -installdirs: - for dir in "$(DESTDIR)$(libdir)" "$(DESTDIR)$(bindir)" "$(DESTDIR)$(m4datadir)" "$(DESTDIR)$(pkgincludedir)" "$(DESTDIR)$(pkginclude_internaldir)"; do \ - test -z "$$dir" || $(MKDIR_P) "$$dir"; \ - done -install: install-am -install-exec: install-exec-am -install-data: install-data-am -uninstall: uninstall-am - -install-am: all-am - @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am - -installcheck: installcheck-am -install-strip: - $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ - install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ - `test -z '$(STRIP)' || \ - echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install -mostlyclean-generic: - -clean-generic: - -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES) - -distclean-generic: - -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) - -rm -f lib/$(am__dirstamp) - -rm -f samples/$(DEPDIR)/$(am__dirstamp) - -rm -f samples/$(am__dirstamp) - -rm -f src/$(DEPDIR)/$(am__dirstamp) - -rm -f src/$(am__dirstamp) - -rm -f test/$(DEPDIR)/$(am__dirstamp) - -rm -f test/$(am__dirstamp) - -maintainer-clean-generic: - @echo "This command is intended for maintainers to use" - @echo "it deletes files that may require special tools to rebuild." -clean: clean-am - -clean-am: clean-checkPROGRAMS clean-generic clean-libLTLIBRARIES \ - clean-libtool clean-noinstLTLIBRARIES mostlyclean-am - -distclean: distclean-am - -rm -f $(am__CONFIG_DISTCLEAN_FILES) - -rm -rf samples/$(DEPDIR) src/$(DEPDIR) test/$(DEPDIR) - -rm -f Makefile -distclean-am: clean-am distclean-compile distclean-generic \ - distclean-hdr distclean-libtool distclean-tags - -dvi: dvi-am - -dvi-am: - -html: html-am - -info: info-am - -info-am: - -install-data-am: install-m4dataDATA install-pkgincludeHEADERS \ - install-pkginclude_internalHEADERS - -install-dvi: install-dvi-am - -install-exec-am: install-binSCRIPTS install-libLTLIBRARIES - -install-html: install-html-am - -install-info: install-info-am - -install-man: - -install-pdf: install-pdf-am - -install-ps: install-ps-am - -installcheck-am: - -maintainer-clean: maintainer-clean-am - -rm -f $(am__CONFIG_DISTCLEAN_FILES) - -rm -rf $(top_srcdir)/autom4te.cache - -rm -rf samples/$(DEPDIR) src/$(DEPDIR) test/$(DEPDIR) - -rm -f Makefile -maintainer-clean-am: distclean-am maintainer-clean-generic - -mostlyclean: mostlyclean-am - -mostlyclean-am: mostlyclean-compile mostlyclean-generic \ - mostlyclean-libtool - -pdf: pdf-am - -pdf-am: - -ps: ps-am - -ps-am: - -uninstall-am: uninstall-binSCRIPTS uninstall-libLTLIBRARIES \ - uninstall-m4dataDATA uninstall-pkgincludeHEADERS \ - uninstall-pkginclude_internalHEADERS - -.MAKE: install-am install-strip - -.PHONY: CTAGS GTAGS all all-am am--refresh check check-TESTS check-am \ - clean clean-checkPROGRAMS clean-generic clean-libLTLIBRARIES \ - clean-libtool clean-noinstLTLIBRARIES ctags dist dist-all \ - dist-bzip2 dist-gzip dist-lzma dist-shar dist-tarZ dist-zip \ - distcheck distclean distclean-compile distclean-generic \ - distclean-hdr distclean-libtool distclean-tags distcleancheck \ - distdir distuninstallcheck dvi dvi-am html html-am info \ - info-am install install-am install-binSCRIPTS install-data \ - install-data-am install-dvi install-dvi-am install-exec \ - install-exec-am install-html install-html-am install-info \ - install-info-am install-libLTLIBRARIES install-m4dataDATA \ - install-man install-pdf install-pdf-am \ - install-pkgincludeHEADERS install-pkginclude_internalHEADERS \ - install-ps install-ps-am install-strip installcheck \ - installcheck-am installdirs maintainer-clean \ - maintainer-clean-generic mostlyclean mostlyclean-compile \ - mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ - tags uninstall uninstall-am uninstall-binSCRIPTS \ - uninstall-libLTLIBRARIES uninstall-m4dataDATA \ - uninstall-pkgincludeHEADERS \ - uninstall-pkginclude_internalHEADERS - -# Tell versions [3.59,3.63) of GNU make to not export all variables. -# Otherwise a system limit (for SysV at least) may be exceeded. -.NOEXPORT: diff --git a/cpp/thirdparty/protobuf-2.3.0/gtest/README b/cpp/thirdparty/protobuf-2.3.0/gtest/README deleted file mode 100644 index a9172c567..000000000 --- a/cpp/thirdparty/protobuf-2.3.0/gtest/README +++ /dev/null @@ -1,318 +0,0 @@ -Google C++ Testing Framework -============================ -http://code.google.com/p/googletest/ - -Overview --------- -Google's framework for writing C++ tests on a variety of platforms (Linux, Mac -OS X, Windows, Windows CE, Symbian, and etc). Based on the xUnit architecture. -Supports automatic test discovery, a rich set of assertions, user-defined -assertions, death tests, fatal and non-fatal failures, various options for -running the tests, and XML test report generation. - -Please see the project page above for more information as well as mailing lists -for questions, discussions, and development. There is also an IRC channel on -OFTC (irc.oftc.net) #gtest available. Please join us! - -Requirements ------------- -Google Test is designed to have fairly minimal requirements to build -and use with your projects, but there are some. Currently, we support -building Google Test on Linux, Windows, Mac OS X, and Cygwin. We will -also make our best effort to support other platforms (e.g. Solaris and -IBM z/OS). However, since core members of the Google Test project -have no access to them, Google Test may have outstanding issues on -these platforms. If you notice any problems on your platform, please -notify googletestframework@googlegroups.com (patches for fixing them -are even more welcome!). - -### Linux Requirements ### -These are the base requirements to build and use Google Test from a source -package (as described below): - * GNU-compatible Make or "gmake" - * POSIX-standard shell - * POSIX(-2) Regular Expressions (regex.h) - * A C++98 standards compliant compiler - -Furthermore, if you are building Google Test from a VCS Checkout (also -described below), there are further requirements: - * Automake version 1.9 or newer - * Autoconf version 2.59 or newer - * Libtool / Libtoolize - * Python version 2.4 or newer - -### Windows Requirements ### - * Microsoft Visual Studio 7.1 or newer - -### Cygwin Requirements ### - * Cygwin 1.5.25-14 or newer - -### Mac OS X Requirements ### - * Mac OS X 10.4 Tiger or newer - * Developer Tools Installed - * Optional: Xcode 2.5 or later for univeral-binary framework; see note below. - -Getting the Source ------------------- -There are two primary ways of getting Google Test's source code: you can -download a source release in your preferred archive format, or directly check -out the source from a Version Control System (VCS, we use Google Code's -Subversion hosting). The VCS checkout requires a few extra steps and some extra -software packages on your system, but lets you track development, and make -patches to contribute much more easily, so we highly encourage it. - -### VCS Checkout: ### -The first step is to select whether you want to check out the main line of -development on Google Test, or one of the released branches. The former will be -much more active and have the latest features, but the latter provides much -more stability and predictability. Choose whichever fits your needs best, and -proceed with the following Subversion commands: - - svn checkout http://googletest.googlecode.com/svn/trunk/ gtest-svn - -or for a release version X.Y.*'s branch: - - svn checkout http://googletest.googlecode.com/svn/branches/release-X.Y/ \ - gtest-X.Y-svn - -Next you will need to prepare the GNU Autotools build system, if you -are using Linux, Mac OS X, or Cygwin. Enter the target directory of -the checkout command you used ('gtest-svn' or 'gtest-X.Y-svn' above) -and proceed with the following command: - - autoreconf -fvi - -Once you have completed this step, you are ready to build the library. Note -that you should only need to complete this step once. The subsequent `make' -invocations will automatically re-generate the bits of the build system that -need to be changed. - -If your system uses older versions of the autotools, the above command will -fail. You may need to explicitly specify a version to use. For instance, if you -have both GNU Automake 1.4 and 1.9 installed and `automake' would invoke the -1.4, use instead: - - AUTOMAKE=automake-1.9 ACLOCAL=aclocal-1.9 autoreconf -fvi - -Make sure you're using the same version of automake and aclocal. - -### Source Package: ### -Google Test is also released in source packages which can be downloaded from -its Google Code download page[1]. Several different archive formats are -provided, but the only difference is the tools used to manipulate them, and the -size of the resulting file. Download whichever you are most comfortable with. - - [1] Google Test Downloads: http://code.google.com/p/googletest/downloads/list - -Once downloaded expand the archive using whichever tools you prefer for that -type. This will always result in a new directory with the name "gtest-X.Y.Z" -which contains all of the source code. Here are some examples in Linux: - - tar -xvzf gtest-X.Y.Z.tar.gz - tar -xvjf gtest-X.Y.Z.tar.bz2 - unzip gtest-X.Y.Z.zip - -Choosing a TR1 Tuple Library ----------------------------- -Some Google Test features require the C++ Technical Report 1 (TR1) -tuple library, which is not yet widely available with all compilers. -The good news is that Google Test implements a subset of TR1 tuple -that's enough for its own need, and will automatically use this when -the compiler doesn't provide TR1 tuple. - -Usually you don't need to care about which tuple library Google Test -uses. However, if your project already uses TR1 tuple, you need to -tell Google Test to use the same TR1 tuple library the rest of your -project uses (this requirement is new in Google Test 1.4.0, so you may -need to take care of it when upgrading from an earlier version), or -the two tuple implementations will clash. To do that, add - - -DGTEST_USE_OWN_TR1_TUPLE=0 - -to the compiler flags while compiling Google Test and your tests. - -If you don't want Google Test to use tuple at all, add - - -DGTEST_HAS_TR1_TUPLE=0 - -to the compiler flags. All features using tuple will be disabled in -this mode. - -Building the Source -------------------- -### Linux, Mac OS X (without Xcode), and Cygwin ### -There are two primary options for building the source at this point: build it -inside the source code tree, or in a separate directory. We recommend building -in a separate directory as that tends to produce both more consistent results -and be easier to clean up should anything go wrong, but both patterns are -supported. The only hard restriction is that while the build directory can be -a subdirectory of the source directory, the opposite is not possible and will -result in errors. Once you have selected where you wish to build Google Test, -create the directory if necessary, and enter it. The following steps apply for -either approach by simply substituting the shell variable SRCDIR with "." for -building inside the source directory, and the relative path to the source -directory otherwise. - - ${SRCDIR}/configure # Standard GNU configure script, --help for more info - make # Standard makefile following GNU conventions - make check # Builds and runs all tests - all should pass - -Other programs will only be able to use Google Test's functionality if you -install it in a location which they can access, in Linux this is typically -under '/usr/local'. The following command will install all of the Google Test -libraries, public headers, and utilities necessary for other programs and -libraries to leverage it: - - sudo make install # Not necessary, but allows use by other programs - -Should you need to remove Google Test from your system after having installed -it, run the following command, and it will back out its changes. However, note -carefully that you must run this command on the *same* Google Test build that -you ran the install from, or the results are not predictable. If you install -Google Test on your system, and are working from a VCS checkout, make sure you -run this *before* updating your checkout of the source in order to uninstall -the same version which you installed. - - sudo make uninstall # Must be run against the exact same build as "install" - -Your project can build against Google Test simply by leveraging the -'gtest-config' script. This script can be invoked directly out of the 'scripts' -subdirectory of the build tree, and it will be installed in the binary -directory specified during the 'configure'. Here are some examples of its use, -see 'gtest-config --help' for more detailed information. - - gtest-config --min-version=1.0 || echo "Insufficient Google Test version." - - g++ $(gtest-config --cppflags --cxxflags) -o foo.o -c foo.cpp - g++ $(gtest-config --ldflags --libs) -o foo foo.o - - # When using a built but not installed Google Test: - g++ $(../../my_gtest_build/scripts/gtest-config ...) ... - -### Windows ### -The msvc\ folder contains two solutions with Visual C++ projects. Open the -gtest.sln or gtest-md.sln file using Visual Studio, and you are ready to -build Google Test the same way you build any Visual Studio project. Files -that have names ending with -md use DLL versions of Microsoft runtime -libraries (the /MD or the /MDd compiler option). Files without that suffix -use static versions of the runtime libraries (the /MT or the /MTd option). -Please note that one must use the same option to compile both gtest and his -test code. If you use Visual Studio 2005 or above, we recommend the -md -version as /MD is the default for new projects in these versions of Visual -Studio. - -### Mac OS X (universal-binary framework) ### -Open the gtest.xcodeproj in the xcode/ folder using Xcode. Build the "gtest" -target. The universal binary framework will end up in your selected build -directory (selected in the Xcode "Preferences..." -> "Building" pane and -defaults to xcode/build). Alternatively, at the command line, enter: - - xcodebuild - -This will build the "Release" configuration of gtest.framework in your -default build location. See the "xcodebuild" man page for more information about -building different configurations and building in different locations. - -To test the gtest.framework in Xcode, change the active target to "Check" and -then build. This target builds all of the tests and then runs them. Don't worry -if you see some errors. Xcode reports all test failures (even the intentional -ones) as errors. However, you should see a "Build succeeded" message at the end -of the build log. To run all of the tests from the command line, enter: - - xcodebuild -target Check - -Installation with xcodebuild requires specifying an installation desitination -directory, known as the DSTROOT. Three items will be installed when using -xcodebuild: - - $DSTROOT/Library/Frameworks/gtest.framework - $DSTROOT/usr/local/lib/libgtest.a - $DSTROOT/usr/local/lib/libgtest_main.a - -You specify the installation directory on the command line with the other -xcodebuild options. Here's how you would install in a user-visible location: - - xcodebuild install DSTROOT=~ - -To perform a system-wide inistall, escalate to an administrator and specify -the file system root as the DSTROOT: - - sudo xcodebuild install DSTROOT=/ - -To uninstall gtest.framework via the command line, you need to delete the three -items listed above. Remember to escalate to an administrator if deleting these -from the system-wide location using the commands listed below: - - sudo rm -r /Library/Frameworks/gtest.framework - sudo rm /usr/local/lib/libgtest.a - sudo rm /usr/local/lib/libgtest_main.a - -It is also possible to build and execute individual tests within Xcode. Each -test has its own Xcode "Target" and Xcode "Executable". To build any of the -tests, change the active target and the active executable to the test of -interest and then build and run. - -Individual tests can be built from the command line using: - - xcodebuild -target - -These tests can be executed from the command line by moving to the build -directory and then (in bash) - - export DYLD_FRAMEWORK_PATH=`pwd` - ./ # (e.g. ./gtest_unittest) - -To use gtest.framework for your own tests, first, install the framework using -the steps described above. Then add it to your Xcode project by selecting -Project->Add to Project... from the main menu. Next, add libgtest_main.a from -gtest.framework/Resources directory using the same menu command. Finally, -create a new executable target and add gtest.framework and libgtest_main.a to -the "Link Binary With Libraries" build phase. - -### Using GNU Make ### -The make/ directory contains a Makefile that you can use to build -Google Test on systems where GNU make is available (e.g. Linux, Mac OS -X, and Cygwin). It doesn't try to build Google Test's own tests. -Instead, it just builds the Google Test library and a sample test. -You can use it as a starting point for your own Makefile. - -If the default settings are correct for your environment, the -following commands should succeed: - - cd ${SRCDIR}/make - make - ./sample1_unittest - -If you see errors, try to tweak the contents of make/Makefile to make -them go away. There are instructions in make/Makefile on how to do -it. - -### Using Your Own Build System ### -If none of the build solutions we provide works for you, or if you -prefer your own build system, you just need to compile -src/gtest-all.cc into a library and link your tests with it. Assuming -a Linux-like system and gcc, something like the following will do: - - cd ${SRCDIR} - g++ -I. -I./include -c src/gtest-all.cc - ar -rv libgtest.a gtest-all.o - g++ -I. -I./include path/to/your_test.cc libgtest.a -o your_test - -Regenerating Source Files -------------------------- -Some of Google Test's source files are generated from templates (not -in the C++ sense) using a script. A template file is named FOO.pump, -where FOO is the name of the file it will generate. For example, the -file include/gtest/internal/gtest-type-util.h.pump is used to generate -gtest-type-util.h in the same directory. - -Normally you don't need to worry about regenerating the source files, -unless you need to modify them (e.g. if you are working on a patch for -Google Test). In that case, you should modify the corresponding .pump -files instead and run the 'pump' script (for Pump is Useful for Meta -Programming) to regenerate them. We are still working on releasing -the script and its documentation. If you need it now, please email -googletestframework@googlegroups.com such that we know to make it -happen sooner. - -Happy testing! diff --git a/cpp/thirdparty/protobuf-2.3.0/gtest/build-aux/.gitignore b/cpp/thirdparty/protobuf-2.3.0/gtest/build-aux/.gitignore deleted file mode 100644 index b0f0ddac4..000000000 --- a/cpp/thirdparty/protobuf-2.3.0/gtest/build-aux/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -/config.h -/stamp-h1 diff --git a/cpp/thirdparty/protobuf-2.3.0/gtest/include/gtest/internal/gtest-port.h b/cpp/thirdparty/protobuf-2.3.0/gtest/include/gtest/internal/gtest-port.h deleted file mode 100644 index ee97881f7..000000000 --- a/cpp/thirdparty/protobuf-2.3.0/gtest/include/gtest/internal/gtest-port.h +++ /dev/null @@ -1,1084 +0,0 @@ -// Copyright 2005, Google Inc. -// All rights reserved. -// -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following disclaimer -// in the documentation and/or other materials provided with the -// distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived from -// this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -// -// Authors: wan@google.com (Zhanyong Wan) -// -// Low-level types and utilities for porting Google Test to various -// platforms. They are subject to change without notice. DO NOT USE -// THEM IN USER CODE. - -#ifndef GTEST_INCLUDE_GTEST_INTERNAL_GTEST_PORT_H_ -#define GTEST_INCLUDE_GTEST_INTERNAL_GTEST_PORT_H_ - -// The user can define the following macros in the build script to -// control Google Test's behavior. If the user doesn't define a macro -// in this list, Google Test will define it. -// -// GTEST_HAS_CLONE - Define it to 1/0 to indicate that clone(2) -// is/isn't available. -// GTEST_HAS_GLOBAL_STRING - Define it to 1/0 to indicate that ::string -// is/isn't available (some systems define -// ::string, which is different to std::string). -// GTEST_HAS_GLOBAL_WSTRING - Define it to 1/0 to indicate that ::string -// is/isn't available (some systems define -// ::wstring, which is different to std::wstring). -// GTEST_HAS_PTHREAD - Define it to 1/0 to indicate that -// is/isn't available. -// GTEST_HAS_RTTI - Define it to 1/0 to indicate that RTTI is/isn't -// enabled. -// GTEST_HAS_STD_STRING - Define it to 1/0 to indicate that -// std::string does/doesn't work (Google Test can -// be used where std::string is unavailable). -// GTEST_HAS_STD_WSTRING - Define it to 1/0 to indicate that -// std::wstring does/doesn't work (Google Test can -// be used where std::wstring is unavailable). -// GTEST_HAS_TR1_TUPLE - Define it to 1/0 to indicate tr1::tuple -// is/isn't available. -// GTEST_HAS_SEH - Define it to 1/0 to indicate whether the -// compiler supports Microsoft's "Structured -// Exception Handling". -// GTEST_USE_OWN_TR1_TUPLE - Define it to 1/0 to indicate whether Google -// Test's own tr1 tuple implementation should be -// used. Unused when the user sets -// GTEST_HAS_TR1_TUPLE to 0. - -// This header defines the following utilities: -// -// Macros indicating the current platform (defined to 1 if compiled on -// the given platform; otherwise undefined): -// GTEST_OS_CYGWIN - Cygwin -// GTEST_OS_LINUX - Linux -// GTEST_OS_MAC - Mac OS X -// GTEST_OS_SOLARIS - Sun Solaris -// GTEST_OS_SYMBIAN - Symbian -// GTEST_OS_WINDOWS - Windows (Desktop, MinGW, or Mobile) -// GTEST_OS_WINDOWS_DESKTOP - Windows Desktop -// GTEST_OS_WINDOWS_MINGW - MinGW -// GTEST_OS_WINODWS_MOBILE - Windows Mobile -// GTEST_OS_ZOS - z/OS -// -// Among the platforms, Cygwin, Linux, Max OS X, and Windows have the -// most stable support. Since core members of the Google Test project -// don't have access to other platforms, support for them may be less -// stable. If you notice any problems on your platform, please notify -// googletestframework@googlegroups.com (patches for fixing them are -// even more welcome!). -// -// Note that it is possible that none of the GTEST_OS_* macros are defined. -// -// Macros indicating available Google Test features (defined to 1 if -// the corresponding feature is supported; otherwise undefined): -// GTEST_HAS_COMBINE - the Combine() function (for value-parameterized -// tests) -// GTEST_HAS_DEATH_TEST - death tests -// GTEST_HAS_PARAM_TEST - value-parameterized tests -// GTEST_HAS_TYPED_TEST - typed tests -// GTEST_HAS_TYPED_TEST_P - type-parameterized tests -// GTEST_USES_POSIX_RE - enhanced POSIX regex is used. -// GTEST_USES_SIMPLE_RE - our own simple regex is used; -// the above two are mutually exclusive. -// -// Macros for basic C++ coding: -// GTEST_AMBIGUOUS_ELSE_BLOCKER_ - for disabling a gcc warning. -// GTEST_ATTRIBUTE_UNUSED_ - declares that a class' instances or a -// variable don't have to be used. -// GTEST_DISALLOW_COPY_AND_ASSIGN_ - disables copy ctor and operator=. -// GTEST_MUST_USE_RESULT_ - declares that a function's result must be used. -// -// Synchronization: -// Mutex, MutexLock, ThreadLocal, GetThreadCount() -// - synchronization primitives. -// GTEST_IS_THREADSAFE - defined to 1 to indicate that the above -// synchronization primitives have real implementations -// and Google Test is thread-safe; or 0 otherwise. -// -// Template meta programming: -// is_pointer - as in TR1; needed on Symbian and IBM XL C/C++ only. -// -// Smart pointers: -// scoped_ptr - as in TR2. -// -// Regular expressions: -// RE - a simple regular expression class using the POSIX -// Extended Regular Expression syntax. Not available on -// Windows. -// -// Logging: -// GTEST_LOG_() - logs messages at the specified severity level. -// LogToStderr() - directs all log messages to stderr. -// FlushInfoLog() - flushes informational log messages. -// -// Stderr capturing: -// CaptureStderr() - starts capturing stderr. -// GetCapturedStderr() - stops capturing stderr and returns the captured -// string. -// -// Integer types: -// TypeWithSize - maps an integer to a int type. -// Int32, UInt32, Int64, UInt64, TimeInMillis -// - integers of known sizes. -// BiggestInt - the biggest signed integer type. -// -// Command-line utilities: -// GTEST_FLAG() - references a flag. -// GTEST_DECLARE_*() - declares a flag. -// GTEST_DEFINE_*() - defines a flag. -// GetArgvs() - returns the command line as a vector of strings. -// -// Environment variable utilities: -// GetEnv() - gets the value of an environment variable. -// BoolFromGTestEnv() - parses a bool environment variable. -// Int32FromGTestEnv() - parses an Int32 environment variable. -// StringFromGTestEnv() - parses a string environment variable. - -#include // For ptrdiff_t -#include -#include -#include -#ifndef _WIN32_WCE -#include -#endif // !_WIN32_WCE - -#include // NOLINT - -#define GTEST_DEV_EMAIL_ "googletestframework@@googlegroups.com" -#define GTEST_FLAG_PREFIX_ "gtest_" -#define GTEST_FLAG_PREFIX_UPPER_ "GTEST_" -#define GTEST_NAME_ "Google Test" -#define GTEST_PROJECT_URL_ "http://code.google.com/p/googletest/" - -// Determines the version of gcc that is used to compile this. -#ifdef __GNUC__ -// 40302 means version 4.3.2. -#define GTEST_GCC_VER_ \ - (__GNUC__*10000 + __GNUC_MINOR__*100 + __GNUC_PATCHLEVEL__) -#endif // __GNUC__ - -// Determines the platform on which Google Test is compiled. -#ifdef __CYGWIN__ -#define GTEST_OS_CYGWIN 1 -#elif defined __SYMBIAN32__ -#define GTEST_OS_SYMBIAN 1 -#elif defined _WIN32 -#define GTEST_OS_WINDOWS 1 -#ifdef _WIN32_WCE -#define GTEST_OS_WINDOWS_MOBILE 1 -#elif defined(__MINGW__) || defined(__MINGW32__) -#define GTEST_OS_WINDOWS_MINGW 1 -#else -#define GTEST_OS_WINDOWS_DESKTOP 1 -#endif // _WIN32_WCE -#elif defined __APPLE__ -#define GTEST_OS_MAC 1 -#elif defined __linux__ -#define GTEST_OS_LINUX 1 -#elif defined __MVS__ -#define GTEST_OS_ZOS 1 -#elif defined(__sun) && defined(__SVR4) -#define GTEST_OS_SOLARIS 1 -#endif // __CYGWIN__ - -#if GTEST_OS_CYGWIN || GTEST_OS_LINUX || GTEST_OS_MAC || GTEST_OS_SYMBIAN || \ - GTEST_OS_SOLARIS - -// On some platforms, needs someone to define size_t, and -// won't compile otherwise. We can #include it here as we already -// included , which is guaranteed to define size_t through -// . -#include // NOLINT -#include // NOLINT -#include // NOLINT -#include // NOLINT - -#define GTEST_USES_POSIX_RE 1 - -#elif GTEST_OS_WINDOWS - -#if !GTEST_OS_WINDOWS_MOBILE -#include // NOLINT -#include // NOLINT -#endif - -// is not available on Windows. Use our own simple regex -// implementation instead. -#define GTEST_USES_SIMPLE_RE 1 - -#else - -// may not be available on this platform. Use our own -// simple regex implementation instead. -#define GTEST_USES_SIMPLE_RE 1 - -#endif // GTEST_OS_CYGWIN || GTEST_OS_LINUX || GTEST_OS_MAC || - // GTEST_OS_SYMBIAN || GTEST_OS_SOLARIS - -// Defines GTEST_HAS_EXCEPTIONS to 1 if exceptions are enabled, or 0 -// otherwise. - -#if defined(_MSC_VER) || defined(__BORLANDC__) -// MSVC's and C++Builder's implementations of the STL use the _HAS_EXCEPTIONS -// macro to enable exceptions, so we'll do the same. -// Assumes that exceptions are enabled by default. -#ifndef _HAS_EXCEPTIONS -#define _HAS_EXCEPTIONS 1 -#endif // _HAS_EXCEPTIONS -#define GTEST_HAS_EXCEPTIONS _HAS_EXCEPTIONS -#else // The compiler is not MSVC or C++Builder. -// gcc defines __EXCEPTIONS to 1 iff exceptions are enabled. For -// other compilers, we assume exceptions are disabled to be -// conservative. -#if defined(__GNUC__) && __EXCEPTIONS -#define GTEST_HAS_EXCEPTIONS 1 -#else -#define GTEST_HAS_EXCEPTIONS 0 -#endif // defined(__GNUC__) && __EXCEPTIONS -#endif // defined(_MSC_VER) || defined(__BORLANDC__) - -// Determines whether ::std::string and ::string are available. - -#ifndef GTEST_HAS_STD_STRING -// The user didn't tell us whether ::std::string is available, so we -// need to figure it out. The only environment that we know -// ::std::string is not available is MSVC 7.1 or lower with exceptions -// disabled. -#if defined(_MSC_VER) && (_MSC_VER < 1400) && !GTEST_HAS_EXCEPTIONS -#define GTEST_HAS_STD_STRING 0 -#else -#define GTEST_HAS_STD_STRING 1 -#endif -#endif // GTEST_HAS_STD_STRING - -#ifndef GTEST_HAS_GLOBAL_STRING -// The user didn't tell us whether ::string is available, so we need -// to figure it out. - -#define GTEST_HAS_GLOBAL_STRING 0 - -#endif // GTEST_HAS_GLOBAL_STRING - -#ifndef GTEST_HAS_STD_WSTRING -// The user didn't tell us whether ::std::wstring is available, so we need -// to figure it out. -// TODO(wan@google.com): uses autoconf to detect whether ::std::wstring -// is available. - -#if GTEST_OS_CYGWIN || GTEST_OS_SOLARIS -// Cygwin 1.5 and below doesn't support ::std::wstring. -// Cygwin 1.7 might add wstring support; this should be updated when clear. -// Solaris' libc++ doesn't support it either. -#define GTEST_HAS_STD_WSTRING 0 -#else -#define GTEST_HAS_STD_WSTRING GTEST_HAS_STD_STRING -#endif // GTEST_OS_CYGWIN || GTEST_OS_SOLARIS - -#endif // GTEST_HAS_STD_WSTRING - -#ifndef GTEST_HAS_GLOBAL_WSTRING -// The user didn't tell us whether ::wstring is available, so we need -// to figure it out. -#define GTEST_HAS_GLOBAL_WSTRING \ - (GTEST_HAS_STD_WSTRING && GTEST_HAS_GLOBAL_STRING) -#endif // GTEST_HAS_GLOBAL_WSTRING - -#if GTEST_HAS_STD_STRING || GTEST_HAS_GLOBAL_STRING || \ - GTEST_HAS_STD_WSTRING || GTEST_HAS_GLOBAL_WSTRING -#include // NOLINT -#endif // GTEST_HAS_STD_STRING || GTEST_HAS_GLOBAL_STRING || - // GTEST_HAS_STD_WSTRING || GTEST_HAS_GLOBAL_WSTRING - -#if GTEST_HAS_STD_STRING -#include // NOLINT -#else -#include // NOLINT -#endif // GTEST_HAS_STD_STRING - -// Determines whether RTTI is available. -#ifndef GTEST_HAS_RTTI -// The user didn't tell us whether RTTI is enabled, so we need to -// figure it out. - -#ifdef _MSC_VER - -#ifdef _CPPRTTI // MSVC defines this macro iff RTTI is enabled. -#define GTEST_HAS_RTTI 1 -#else -#define GTEST_HAS_RTTI 0 -#endif // _CPPRTTI - -#elif defined(__GNUC__) - -// Starting with version 4.3.2, gcc defines __GXX_RTTI iff RTTI is enabled. -#if GTEST_GCC_VER_ >= 40302 -#ifdef __GXX_RTTI -#define GTEST_HAS_RTTI 1 -#else -#define GTEST_HAS_RTTI 0 -#endif // __GXX_RTTI -#else -// For gcc versions smaller than 4.3.2, we assume RTTI is enabled. -#define GTEST_HAS_RTTI 1 -#endif // GTEST_GCC_VER >= 40302 - -#else - -// Unknown compiler - assume RTTI is enabled. -#define GTEST_HAS_RTTI 1 - -#endif // _MSC_VER - -#endif // GTEST_HAS_RTTI - -// Determines whether is available. -#ifndef GTEST_HAS_PTHREAD -// The user didn't tell us, so we need to figure it out. -#define GTEST_HAS_PTHREAD (GTEST_OS_LINUX || GTEST_OS_MAC) -#endif // GTEST_HAS_PTHREAD - -// Determines whether Google Test can use tr1/tuple. You can define -// this macro to 0 to prevent Google Test from using tuple (any -// feature depending on tuple with be disabled in this mode). -#ifndef GTEST_HAS_TR1_TUPLE -// The user didn't tell us not to do it, so we assume it's OK. -#define GTEST_HAS_TR1_TUPLE 1 -#endif // GTEST_HAS_TR1_TUPLE - -// Determines whether Google Test's own tr1 tuple implementation -// should be used. -#ifndef GTEST_USE_OWN_TR1_TUPLE -// The user didn't tell us, so we need to figure it out. - -// We use our own tr1 tuple if we aren't sure the user has an -// implementation of it already. At this time, GCC 4.0.0+ is the only -// mainstream compiler that comes with a TR1 tuple implementation. -// MSVC 2008 (9.0) provides TR1 tuple in a 323 MB Feature Pack -// download, which we cannot assume the user has. MSVC 2010 isn't -// released yet. -#if defined(__GNUC__) && (GTEST_GCC_VER_ >= 40000) -#define GTEST_USE_OWN_TR1_TUPLE 0 -#else -#define GTEST_USE_OWN_TR1_TUPLE 1 -#endif // defined(__GNUC__) && (GTEST_GCC_VER_ >= 40000) - -#endif // GTEST_USE_OWN_TR1_TUPLE - -// To avoid conditional compilation everywhere, we make it -// gtest-port.h's responsibility to #include the header implementing -// tr1/tuple. -#if GTEST_HAS_TR1_TUPLE - -#if GTEST_USE_OWN_TR1_TUPLE -#include -#elif GTEST_OS_SYMBIAN - -// On Symbian, BOOST_HAS_TR1_TUPLE causes Boost's TR1 tuple library to -// use STLport's tuple implementation, which unfortunately doesn't -// work as the copy of STLport distributed with Symbian is incomplete. -// By making sure BOOST_HAS_TR1_TUPLE is undefined, we force Boost to -// use its own tuple implementation. -#ifdef BOOST_HAS_TR1_TUPLE -#undef BOOST_HAS_TR1_TUPLE -#endif // BOOST_HAS_TR1_TUPLE - -// This prevents , which defines -// BOOST_HAS_TR1_TUPLE, from being #included by Boost's . -#define BOOST_TR1_DETAIL_CONFIG_HPP_INCLUDED -#include - -#elif defined(__GNUC__) && (GTEST_GCC_VER_ >= 40000) -// GCC 4.0+ implements tr1/tuple in the header. This does -// not conform to the TR1 spec, which requires the header to be . - -#if !GTEST_HAS_RTTI && GTEST_GCC_VER_ < 40302 -// Until version 4.3.2, gcc has a bug that causes , -// which is #included by , to not compile when RTTI is -// disabled. _TR1_FUNCTIONAL is the header guard for -// . Hence the following #define is a hack to prevent -// from being included. -#define _TR1_FUNCTIONAL 1 -#include -#undef _TR1_FUNCTIONAL // Allows the user to #include - // if he chooses to. -#else -#include -#endif // !GTEST_HAS_RTTI && GTEST_GCC_VER_ < 40302 - -#else -// If the compiler is not GCC 4.0+, we assume the user is using a -// spec-conforming TR1 implementation. -#include -#endif // GTEST_USE_OWN_TR1_TUPLE - -#endif // GTEST_HAS_TR1_TUPLE - -// Determines whether clone(2) is supported. -// Usually it will only be available on Linux, excluding -// Linux on the Itanium architecture. -// Also see http://linux.die.net/man/2/clone. -#ifndef GTEST_HAS_CLONE -// The user didn't tell us, so we need to figure it out. - -#if GTEST_OS_LINUX && !defined(__ia64__) -#define GTEST_HAS_CLONE 1 -#else -#define GTEST_HAS_CLONE 0 -#endif // GTEST_OS_LINUX && !defined(__ia64__) - -#endif // GTEST_HAS_CLONE - -// Determines whether to support death tests. -// Google Test does not support death tests for VC 7.1 and earlier for -// these reasons: -// 1. std::vector does not build in VC 7.1 when exceptions are disabled. -// 2. std::string does not build in VC 7.1 when exceptions are disabled -// (this is covered by GTEST_HAS_STD_STRING guard). -// 3. abort() in a VC 7.1 application compiled as GUI in debug config -// pops up a dialog window that cannot be suppressed programmatically. -#if GTEST_HAS_STD_STRING && \ - (GTEST_OS_LINUX || GTEST_OS_MAC || GTEST_OS_CYGWIN || \ - (GTEST_OS_WINDOWS_DESKTOP && _MSC_VER >= 1400) || GTEST_OS_WINDOWS_MINGW) -#define GTEST_HAS_DEATH_TEST 1 -#include // NOLINT -#endif - -// Determines whether to support value-parameterized tests. - -#if defined(__GNUC__) || (_MSC_VER >= 1400) -// TODO(vladl@google.com): get the implementation rid of vector and list -// to compile on MSVC 7.1. -#define GTEST_HAS_PARAM_TEST 1 -#endif // defined(__GNUC__) || (_MSC_VER >= 1400) - -// Determines whether to support type-driven tests. - -// Typed tests need and variadic macros, which gcc and VC -// 8.0+ support. -#if defined(__GNUC__) || (_MSC_VER >= 1400) -#define GTEST_HAS_TYPED_TEST 1 -#define GTEST_HAS_TYPED_TEST_P 1 -#endif // defined(__GNUC__) || (_MSC_VER >= 1400) - -// Determines whether to support Combine(). This only makes sense when -// value-parameterized tests are enabled. -#if GTEST_HAS_PARAM_TEST && GTEST_HAS_TR1_TUPLE -#define GTEST_HAS_COMBINE 1 -#endif // GTEST_HAS_PARAM_TEST && GTEST_HAS_TR1_TUPLE - -// Determines whether the system compiler uses UTF-16 for encoding wide strings. -#define GTEST_WIDE_STRING_USES_UTF16_ \ - (GTEST_OS_WINDOWS || GTEST_OS_CYGWIN || GTEST_OS_SYMBIAN) - -// Defines some utility macros. - -// The GNU compiler emits a warning if nested "if" statements are followed by -// an "else" statement and braces are not used to explicitly disambiguate the -// "else" binding. This leads to problems with code like: -// -// if (gate) -// ASSERT_*(condition) << "Some message"; -// -// The "switch (0) case 0:" idiom is used to suppress this. -#ifdef __INTEL_COMPILER -#define GTEST_AMBIGUOUS_ELSE_BLOCKER_ -#else -#define GTEST_AMBIGUOUS_ELSE_BLOCKER_ switch (0) case 0: // NOLINT -#endif - -// Use this annotation at the end of a struct/class definition to -// prevent the compiler from optimizing away instances that are never -// used. This is useful when all interesting logic happens inside the -// c'tor and / or d'tor. Example: -// -// struct Foo { -// Foo() { ... } -// } GTEST_ATTRIBUTE_UNUSED_; -// -// Also use it after a variable or parameter declaration to tell the -// compiler the variable/parameter does not have to be used. -#if defined(__GNUC__) && !defined(COMPILER_ICC) -#define GTEST_ATTRIBUTE_UNUSED_ __attribute__ ((unused)) -#else -#define GTEST_ATTRIBUTE_UNUSED_ -#endif - -// A macro to disallow the evil copy constructor and operator= functions -// This should be used in the private: declarations for a class. -#define GTEST_DISALLOW_COPY_AND_ASSIGN_(type)\ - type(const type &);\ - void operator=(const type &) - -// Tell the compiler to warn about unused return values for functions declared -// with this macro. The macro should be used on function declarations -// following the argument list: -// -// Sprocket* AllocateSprocket() GTEST_MUST_USE_RESULT_; -#if defined(__GNUC__) && (GTEST_GCC_VER_ >= 30400) && !defined(COMPILER_ICC) -#define GTEST_MUST_USE_RESULT_ __attribute__ ((warn_unused_result)) -#else -#define GTEST_MUST_USE_RESULT_ -#endif // __GNUC__ && (GTEST_GCC_VER_ >= 30400) && !COMPILER_ICC - -// Determine whether the compiler supports Microsoft's Structured Exception -// Handling. This is supported by several Windows compilers but generally -// does not exist on any other system. -#ifndef GTEST_HAS_SEH -// The user didn't tell us, so we need to figure it out. - -#if defined(_MSC_VER) || defined(__BORLANDC__) -// These two compilers are known to support SEH. -#define GTEST_HAS_SEH 1 -#else -// Assume no SEH. -#define GTEST_HAS_SEH 0 -#endif - -#endif // GTEST_HAS_SEH - -namespace testing { - -class Message; - -namespace internal { - -class String; - -// std::strstream is deprecated. However, we have to use it on -// Windows as std::stringstream won't compile on Windows when -// exceptions are disabled. We use std::stringstream on other -// platforms to avoid compiler warnings there. -#if GTEST_HAS_STD_STRING -typedef ::std::stringstream StrStream; -#else -typedef ::std::strstream StrStream; -#endif // GTEST_HAS_STD_STRING - -// A helper for suppressing warnings on constant condition. It just -// returns 'condition'. -bool IsTrue(bool condition); - -// Defines scoped_ptr. - -// This implementation of scoped_ptr is PARTIAL - it only contains -// enough stuff to satisfy Google Test's need. -template -class scoped_ptr { - public: - explicit scoped_ptr(T* p = NULL) : ptr_(p) {} - ~scoped_ptr() { reset(); } - - T& operator*() const { return *ptr_; } - T* operator->() const { return ptr_; } - T* get() const { return ptr_; } - - T* release() { - T* const ptr = ptr_; - ptr_ = NULL; - return ptr; - } - - void reset(T* p = NULL) { - if (p != ptr_) { - if (IsTrue(sizeof(T) > 0)) { // Makes sure T is a complete type. - delete ptr_; - } - ptr_ = p; - } - } - private: - T* ptr_; - - GTEST_DISALLOW_COPY_AND_ASSIGN_(scoped_ptr); -}; - -// Defines RE. - -// A simple C++ wrapper for . It uses the POSIX Enxtended -// Regular Expression syntax. -class RE { - public: - // Constructs an RE from a string. -#if GTEST_HAS_STD_STRING - RE(const ::std::string& regex) { Init(regex.c_str()); } // NOLINT -#endif // GTEST_HAS_STD_STRING - -#if GTEST_HAS_GLOBAL_STRING - RE(const ::string& regex) { Init(regex.c_str()); } // NOLINT -#endif // GTEST_HAS_GLOBAL_STRING - - RE(const char* regex) { Init(regex); } // NOLINT - ~RE(); - - // Returns the string representation of the regex. - const char* pattern() const { return pattern_; } - - // FullMatch(str, re) returns true iff regular expression re matches - // the entire str. - // PartialMatch(str, re) returns true iff regular expression re - // matches a substring of str (including str itself). - // - // TODO(wan@google.com): make FullMatch() and PartialMatch() work - // when str contains NUL characters. -#if GTEST_HAS_STD_STRING - static bool FullMatch(const ::std::string& str, const RE& re) { - return FullMatch(str.c_str(), re); - } - static bool PartialMatch(const ::std::string& str, const RE& re) { - return PartialMatch(str.c_str(), re); - } -#endif // GTEST_HAS_STD_STRING - -#if GTEST_HAS_GLOBAL_STRING - static bool FullMatch(const ::string& str, const RE& re) { - return FullMatch(str.c_str(), re); - } - static bool PartialMatch(const ::string& str, const RE& re) { - return PartialMatch(str.c_str(), re); - } -#endif // GTEST_HAS_GLOBAL_STRING - - static bool FullMatch(const char* str, const RE& re); - static bool PartialMatch(const char* str, const RE& re); - - private: - void Init(const char* regex); - - // We use a const char* instead of a string, as Google Test may be used - // where string is not available. We also do not use Google Test's own - // String type here, in order to simplify dependencies between the - // files. - const char* pattern_; - bool is_valid_; -#if GTEST_USES_POSIX_RE - regex_t full_regex_; // For FullMatch(). - regex_t partial_regex_; // For PartialMatch(). -#else // GTEST_USES_SIMPLE_RE - const char* full_pattern_; // For FullMatch(); -#endif - - GTEST_DISALLOW_COPY_AND_ASSIGN_(RE); -}; - -// Defines logging utilities: -// GTEST_LOG_(severity) - logs messages at the specified severity level. The -// message itself is streamed into the macro. -// LogToStderr() - directs all log messages to stderr. -// FlushInfoLog() - flushes informational log messages. - -enum GTestLogSeverity { - GTEST_INFO, - GTEST_WARNING, - GTEST_ERROR, - GTEST_FATAL -}; - -// Formats log entry severity, provides a stream object for streaming the -// log message, and terminates the message with a newline when going out of -// scope. -class GTestLog { - public: - GTestLog(GTestLogSeverity severity, const char* file, int line); - - // Flushes the buffers and, if severity is GTEST_FATAL, aborts the program. - ~GTestLog(); - - ::std::ostream& GetStream() { return ::std::cerr; } - - private: - const GTestLogSeverity severity_; - - GTEST_DISALLOW_COPY_AND_ASSIGN_(GTestLog); -}; - -#define GTEST_LOG_(severity) \ - ::testing::internal::GTestLog(::testing::internal::GTEST_##severity, \ - __FILE__, __LINE__).GetStream() - -inline void LogToStderr() {} -inline void FlushInfoLog() { fflush(NULL); } - -// Defines the stderr capturer: -// CaptureStderr - starts capturing stderr. -// GetCapturedStderr - stops capturing stderr and returns the captured string. - -void CaptureStderr(); -String GetCapturedStderr(); - -#if GTEST_HAS_DEATH_TEST - -// A copy of all command line arguments. Set by InitGoogleTest(). -extern ::std::vector g_argvs; - -// GTEST_HAS_DEATH_TEST implies we have ::std::string. -const ::std::vector& GetArgvs(); - -#endif // GTEST_HAS_DEATH_TEST - -// Defines synchronization primitives. - -// A dummy implementation of synchronization primitives (mutex, lock, -// and thread-local variable). Necessary for compiling Google Test where -// mutex is not supported - using Google Test in multiple threads is not -// supported on such platforms. - -class Mutex { - public: - Mutex() {} - explicit Mutex(int /*unused*/) {} - void AssertHeld() const {} - enum { NO_CONSTRUCTOR_NEEDED_FOR_STATIC_MUTEX = 0 }; -}; - -// We cannot call it MutexLock directly as the ctor declaration would -// conflict with a macro named MutexLock, which is defined on some -// platforms. Hence the typedef trick below. -class GTestMutexLock { - public: - explicit GTestMutexLock(Mutex*) {} // NOLINT -}; - -typedef GTestMutexLock MutexLock; - -template -class ThreadLocal { - public: - ThreadLocal() : value_() {} - explicit ThreadLocal(const T& value) : value_(value) {} - T* pointer() { return &value_; } - const T* pointer() const { return &value_; } - const T& get() const { return value_; } - void set(const T& value) { value_ = value; } - private: - T value_; -}; - -// Returns the number of threads running in the process, or 0 to indicate that -// we cannot detect it. -size_t GetThreadCount(); - -// The above synchronization primitives have dummy implementations. -// Therefore Google Test is not thread-safe. -#define GTEST_IS_THREADSAFE 0 - -#if defined(__SYMBIAN32__) || defined(__IBMCPP__) - -// Passing non-POD classes through ellipsis (...) crashes the ARM -// compiler. The Nokia Symbian and the IBM XL C/C++ compiler try to -// instantiate a copy constructor for objects passed through ellipsis -// (...), failing for uncopyable objects. We define this to indicate -// the fact. -#define GTEST_ELLIPSIS_NEEDS_COPY_ 1 - -// The Nokia Symbian and IBM XL C/C++ compilers cannot decide between -// const T& and const T* in a function template. These compilers -// _can_ decide between class template specializations for T and T*, -// so a tr1::type_traits-like is_pointer works. -#define GTEST_NEEDS_IS_POINTER_ 1 - -#endif // defined(__SYMBIAN32__) || defined(__IBMCPP__) - -template -struct bool_constant { - typedef bool_constant type; - static const bool value = bool_value; -}; -template const bool bool_constant::value; - -typedef bool_constant false_type; -typedef bool_constant true_type; - -template -struct is_pointer : public false_type {}; - -template -struct is_pointer : public true_type {}; - -#if GTEST_OS_WINDOWS -#define GTEST_PATH_SEP_ "\\" -// The biggest signed integer type the compiler supports. -typedef __int64 BiggestInt; -#else -#define GTEST_PATH_SEP_ "/" -typedef long long BiggestInt; // NOLINT -#endif // GTEST_OS_WINDOWS - -// The testing::internal::posix namespace holds wrappers for common -// POSIX functions. These wrappers hide the differences between -// Windows/MSVC and POSIX systems. Since some compilers define these -// standard functions as macros, the wrapper cannot have the same name -// as the wrapped function. - -namespace posix { - -// Functions with a different name on Windows. - -#if GTEST_OS_WINDOWS - -typedef struct _stat StatStruct; - -#ifdef __BORLANDC__ -inline int IsATTY(int fd) { return isatty(fd); } -inline int StrCaseCmp(const char* s1, const char* s2) { - return stricmp(s1, s2); -} -inline char* StrDup(const char* src) { return strdup(src); } -#else // !__BORLANDC__ -#if GTEST_OS_WINDOWS_MOBILE -inline int IsATTY(int /* fd */) { return 0; } -#else -inline int IsATTY(int fd) { return _isatty(fd); } -#endif // GTEST_OS_WINDOWS_MOBILE -inline int StrCaseCmp(const char* s1, const char* s2) { - return _stricmp(s1, s2); -} -inline char* StrDup(const char* src) { return _strdup(src); } -#endif // __BORLANDC__ - -#if GTEST_OS_WINDOWS_MOBILE -inline int FileNo(FILE* file) { return reinterpret_cast(_fileno(file)); } -// Stat(), RmDir(), and IsDir() are not needed on Windows CE at this -// time and thus not defined there. -#else -inline int FileNo(FILE* file) { return _fileno(file); } -inline int Stat(const char* path, StatStruct* buf) { return _stat(path, buf); } -inline int RmDir(const char* dir) { return _rmdir(dir); } -inline bool IsDir(const StatStruct& st) { - return (_S_IFDIR & st.st_mode) != 0; -} -#endif // GTEST_OS_WINDOWS_MOBILE - -#else - -typedef struct stat StatStruct; - -inline int FileNo(FILE* file) { return fileno(file); } -inline int IsATTY(int fd) { return isatty(fd); } -inline int Stat(const char* path, StatStruct* buf) { return stat(path, buf); } -inline int StrCaseCmp(const char* s1, const char* s2) { - return strcasecmp(s1, s2); -} -inline char* StrDup(const char* src) { return strdup(src); } -inline int RmDir(const char* dir) { return rmdir(dir); } -inline bool IsDir(const StatStruct& st) { return S_ISDIR(st.st_mode); } - -#endif // GTEST_OS_WINDOWS - -// Functions deprecated by MSVC 8.0. - -#ifdef _MSC_VER -// Temporarily disable warning 4996 (deprecated function). -#pragma warning(push) -#pragma warning(disable:4996) -#endif - -inline const char* StrNCpy(char* dest, const char* src, size_t n) { - return strncpy(dest, src, n); -} - -// ChDir(), FReopen(), FDOpen(), Read(), Write(), Close(), and -// StrError() aren't needed on Windows CE at this time and thus not -// defined there. - -#if !GTEST_OS_WINDOWS_MOBILE -inline int ChDir(const char* dir) { return chdir(dir); } -#endif -inline FILE* FOpen(const char* path, const char* mode) { - return fopen(path, mode); -} -#if !GTEST_OS_WINDOWS_MOBILE -inline FILE *FReopen(const char* path, const char* mode, FILE* stream) { - return freopen(path, mode, stream); -} -inline FILE* FDOpen(int fd, const char* mode) { return fdopen(fd, mode); } -#endif -inline int FClose(FILE* fp) { return fclose(fp); } -#if !GTEST_OS_WINDOWS_MOBILE -inline int Read(int fd, void* buf, unsigned int count) { - return static_cast(read(fd, buf, count)); -} -inline int Write(int fd, const void* buf, unsigned int count) { - return static_cast(write(fd, buf, count)); -} -inline int Close(int fd) { return close(fd); } -inline const char* StrError(int errnum) { return strerror(errnum); } -#endif -inline const char* GetEnv(const char* name) { -#if GTEST_OS_WINDOWS_MOBILE - // We are on Windows CE, which has no environment variables. - return NULL; -#elif defined(__BORLANDC__) - // Environment variables which we programmatically clear will be set to the - // empty string rather than unset (NULL). Handle that case. - const char* const env = getenv(name); - return (env != NULL && env[0] != '\0') ? env : NULL; -#else - return getenv(name); -#endif -} - -#ifdef _MSC_VER -#pragma warning(pop) // Restores the warning state. -#endif - -#if GTEST_OS_WINDOWS_MOBILE -// Windows CE has no C library. The abort() function is used in -// several places in Google Test. This implementation provides a reasonable -// imitation of standard behaviour. -void Abort(); -#else -inline void Abort() { abort(); } -#endif // GTEST_OS_WINDOWS_MOBILE - -} // namespace posix - -// The maximum number a BiggestInt can represent. This definition -// works no matter BiggestInt is represented in one's complement or -// two's complement. -// -// We cannot rely on numeric_limits in STL, as __int64 and long long -// are not part of standard C++ and numeric_limits doesn't need to be -// defined for them. -const BiggestInt kMaxBiggestInt = - ~(static_cast(1) << (8*sizeof(BiggestInt) - 1)); - -// This template class serves as a compile-time function from size to -// type. It maps a size in bytes to a primitive type with that -// size. e.g. -// -// TypeWithSize<4>::UInt -// -// is typedef-ed to be unsigned int (unsigned integer made up of 4 -// bytes). -// -// Such functionality should belong to STL, but I cannot find it -// there. -// -// Google Test uses this class in the implementation of floating-point -// comparison. -// -// For now it only handles UInt (unsigned int) as that's all Google Test -// needs. Other types can be easily added in the future if need -// arises. -template -class TypeWithSize { - public: - // This prevents the user from using TypeWithSize with incorrect - // values of N. - typedef void UInt; -}; - -// The specialization for size 4. -template <> -class TypeWithSize<4> { - public: - // unsigned int has size 4 in both gcc and MSVC. - // - // As base/basictypes.h doesn't compile on Windows, we cannot use - // uint32, uint64, and etc here. - typedef int Int; - typedef unsigned int UInt; -}; - -// The specialization for size 8. -template <> -class TypeWithSize<8> { - public: -#if GTEST_OS_WINDOWS - typedef __int64 Int; - typedef unsigned __int64 UInt; -#else - typedef long long Int; // NOLINT - typedef unsigned long long UInt; // NOLINT -#endif // GTEST_OS_WINDOWS -}; - -// Integer types of known sizes. -typedef TypeWithSize<4>::Int Int32; -typedef TypeWithSize<4>::UInt UInt32; -typedef TypeWithSize<8>::Int Int64; -typedef TypeWithSize<8>::UInt UInt64; -typedef TypeWithSize<8>::Int TimeInMillis; // Represents time in milliseconds. - -// Utilities for command line flags and environment variables. - -// INTERNAL IMPLEMENTATION - DO NOT USE. -// -// GTEST_CHECK_ is an all-mode assert. It aborts the program if the condition -// is not satisfied. -// Synopsys: -// GTEST_CHECK_(boolean_condition); -// or -// GTEST_CHECK_(boolean_condition) << "Additional message"; -// -// This checks the condition and if the condition is not satisfied -// it prints message about the condition violation, including the -// condition itself, plus additional message streamed into it, if any, -// and then it aborts the program. It aborts the program irrespective of -// whether it is built in the debug mode or not. -#define GTEST_CHECK_(condition) \ - GTEST_AMBIGUOUS_ELSE_BLOCKER_ \ - if (::testing::internal::IsTrue(condition)) \ - ; \ - else \ - GTEST_LOG_(FATAL) << "Condition " #condition " failed. " - -// Macro for referencing flags. -#define GTEST_FLAG(name) FLAGS_gtest_##name - -// Macros for declaring flags. -#define GTEST_DECLARE_bool_(name) extern bool GTEST_FLAG(name) -#define GTEST_DECLARE_int32_(name) \ - extern ::testing::internal::Int32 GTEST_FLAG(name) -#define GTEST_DECLARE_string_(name) \ - extern ::testing::internal::String GTEST_FLAG(name) - -// Macros for defining flags. -#define GTEST_DEFINE_bool_(name, default_val, doc) \ - bool GTEST_FLAG(name) = (default_val) -#define GTEST_DEFINE_int32_(name, default_val, doc) \ - ::testing::internal::Int32 GTEST_FLAG(name) = (default_val) -#define GTEST_DEFINE_string_(name, default_val, doc) \ - ::testing::internal::String GTEST_FLAG(name) = (default_val) - -// Parses 'str' for a 32-bit signed integer. If successful, writes the result -// to *value and returns true; otherwise leaves *value unchanged and returns -// false. -// TODO(chandlerc): Find a better way to refactor flag and environment parsing -// out of both gtest-port.cc and gtest.cc to avoid exporting this utility -// function. -bool ParseInt32(const Message& src_text, const char* str, Int32* value); - -// Parses a bool/Int32/string from the environment variable -// corresponding to the given Google Test flag. -bool BoolFromGTestEnv(const char* flag, bool default_val); -Int32 Int32FromGTestEnv(const char* flag, Int32 default_val); -const char* StringFromGTestEnv(const char* flag, const char* default_val); - -} // namespace internal -} // namespace testing - -#endif // GTEST_INCLUDE_GTEST_INTERNAL_GTEST_PORT_H_ diff --git a/cpp/thirdparty/protobuf-2.3.0/gtest/include/gtest/internal/gtest-string.h b/cpp/thirdparty/protobuf-2.3.0/gtest/include/gtest/internal/gtest-string.h deleted file mode 100644 index 4bc824130..000000000 --- a/cpp/thirdparty/protobuf-2.3.0/gtest/include/gtest/internal/gtest-string.h +++ /dev/null @@ -1,348 +0,0 @@ -// Copyright 2005, Google Inc. -// All rights reserved. -// -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following disclaimer -// in the documentation and/or other materials provided with the -// distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived from -// this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -// -// Authors: wan@google.com (Zhanyong Wan), eefacm@gmail.com (Sean Mcafee) -// -// The Google C++ Testing Framework (Google Test) -// -// This header file declares the String class and functions used internally by -// Google Test. They are subject to change without notice. They should not used -// by code external to Google Test. -// -// This header file is #included by . -// It should not be #included by other files. - -#ifndef GTEST_INCLUDE_GTEST_INTERNAL_GTEST_STRING_H_ -#define GTEST_INCLUDE_GTEST_INTERNAL_GTEST_STRING_H_ - -#include -#include - -#if GTEST_HAS_GLOBAL_STRING || GTEST_HAS_STD_STRING -#include -#endif // GTEST_HAS_GLOBAL_STRING || GTEST_HAS_STD_STRING - -namespace testing { -namespace internal { - -// String - a UTF-8 string class. -// -// We cannot use std::string as Microsoft's STL implementation in -// Visual C++ 7.1 has problems when exception is disabled. There is a -// hack to work around this, but we've seen cases where the hack fails -// to work. -// -// Also, String is different from std::string in that it can represent -// both NULL and the empty string, while std::string cannot represent -// NULL. -// -// NULL and the empty string are considered different. NULL is less -// than anything (including the empty string) except itself. -// -// This class only provides minimum functionality necessary for -// implementing Google Test. We do not intend to implement a full-fledged -// string class here. -// -// Since the purpose of this class is to provide a substitute for -// std::string on platforms where it cannot be used, we define a copy -// constructor and assignment operators such that we don't need -// conditional compilation in a lot of places. -// -// In order to make the representation efficient, the d'tor of String -// is not virtual. Therefore DO NOT INHERIT FROM String. -class String { - public: - // Static utility methods - - // Returns the input enclosed in double quotes if it's not NULL; - // otherwise returns "(null)". For example, "\"Hello\"" is returned - // for input "Hello". - // - // This is useful for printing a C string in the syntax of a literal. - // - // Known issue: escape sequences are not handled yet. - static String ShowCStringQuoted(const char* c_str); - - // Clones a 0-terminated C string, allocating memory using new. The - // caller is responsible for deleting the return value using - // delete[]. Returns the cloned string, or NULL if the input is - // NULL. - // - // This is different from strdup() in string.h, which allocates - // memory using malloc(). - static const char* CloneCString(const char* c_str); - -#if GTEST_OS_WINDOWS_MOBILE - // Windows CE does not have the 'ANSI' versions of Win32 APIs. To be - // able to pass strings to Win32 APIs on CE we need to convert them - // to 'Unicode', UTF-16. - - // Creates a UTF-16 wide string from the given ANSI string, allocating - // memory using new. The caller is responsible for deleting the return - // value using delete[]. Returns the wide string, or NULL if the - // input is NULL. - // - // The wide string is created using the ANSI codepage (CP_ACP) to - // match the behaviour of the ANSI versions of Win32 calls and the - // C runtime. - static LPCWSTR AnsiToUtf16(const char* c_str); - - // Creates an ANSI string from the given wide string, allocating - // memory using new. The caller is responsible for deleting the return - // value using delete[]. Returns the ANSI string, or NULL if the - // input is NULL. - // - // The returned string is created using the ANSI codepage (CP_ACP) to - // match the behaviour of the ANSI versions of Win32 calls and the - // C runtime. - static const char* Utf16ToAnsi(LPCWSTR utf16_str); -#endif - - // Compares two C strings. Returns true iff they have the same content. - // - // Unlike strcmp(), this function can handle NULL argument(s). A - // NULL C string is considered different to any non-NULL C string, - // including the empty string. - static bool CStringEquals(const char* lhs, const char* rhs); - - // Converts a wide C string to a String using the UTF-8 encoding. - // NULL will be converted to "(null)". If an error occurred during - // the conversion, "(failed to convert from wide string)" is - // returned. - static String ShowWideCString(const wchar_t* wide_c_str); - - // Similar to ShowWideCString(), except that this function encloses - // the converted string in double quotes. - static String ShowWideCStringQuoted(const wchar_t* wide_c_str); - - // Compares two wide C strings. Returns true iff they have the same - // content. - // - // Unlike wcscmp(), this function can handle NULL argument(s). A - // NULL C string is considered different to any non-NULL C string, - // including the empty string. - static bool WideCStringEquals(const wchar_t* lhs, const wchar_t* rhs); - - // Compares two C strings, ignoring case. Returns true iff they - // have the same content. - // - // Unlike strcasecmp(), this function can handle NULL argument(s). - // A NULL C string is considered different to any non-NULL C string, - // including the empty string. - static bool CaseInsensitiveCStringEquals(const char* lhs, - const char* rhs); - - // Compares two wide C strings, ignoring case. Returns true iff they - // have the same content. - // - // Unlike wcscasecmp(), this function can handle NULL argument(s). - // A NULL C string is considered different to any non-NULL wide C string, - // including the empty string. - // NB: The implementations on different platforms slightly differ. - // On windows, this method uses _wcsicmp which compares according to LC_CTYPE - // environment variable. On GNU platform this method uses wcscasecmp - // which compares according to LC_CTYPE category of the current locale. - // On MacOS X, it uses towlower, which also uses LC_CTYPE category of the - // current locale. - static bool CaseInsensitiveWideCStringEquals(const wchar_t* lhs, - const wchar_t* rhs); - - // Formats a list of arguments to a String, using the same format - // spec string as for printf. - // - // We do not use the StringPrintf class as it is not universally - // available. - // - // The result is limited to 4096 characters (including the tailing - // 0). If 4096 characters are not enough to format the input, - // "" is returned. - static String Format(const char* format, ...); - - // C'tors - - // The default c'tor constructs a NULL string. - String() : c_str_(NULL), length_(0) {} - - // Constructs a String by cloning a 0-terminated C string. - String(const char* c_str) { // NOLINT - if (c_str == NULL) { - c_str_ = NULL; - length_ = 0; - } else { - ConstructNonNull(c_str, strlen(c_str)); - } - } - - // Constructs a String by copying a given number of chars from a - // buffer. E.g. String("hello", 3) creates the string "hel", - // String("a\0bcd", 4) creates "a\0bc", String(NULL, 0) creates "", - // and String(NULL, 1) results in access violation. - String(const char* buffer, size_t length) { - ConstructNonNull(buffer, length); - } - - // The copy c'tor creates a new copy of the string. The two - // String objects do not share content. - String(const String& str) : c_str_(NULL), length_(0) { *this = str; } - - // D'tor. String is intended to be a final class, so the d'tor - // doesn't need to be virtual. - ~String() { delete[] c_str_; } - - // Allows a String to be implicitly converted to an ::std::string or - // ::string, and vice versa. Converting a String containing a NULL - // pointer to ::std::string or ::string is undefined behavior. - // Converting a ::std::string or ::string containing an embedded NUL - // character to a String will result in the prefix up to the first - // NUL character. -#if GTEST_HAS_STD_STRING - String(const ::std::string& str) { - ConstructNonNull(str.c_str(), str.length()); - } - - operator ::std::string() const { return ::std::string(c_str(), length()); } -#endif // GTEST_HAS_STD_STRING - -#if GTEST_HAS_GLOBAL_STRING - String(const ::string& str) { - ConstructNonNull(str.c_str(), str.length()); - } - - operator ::string() const { return ::string(c_str(), length()); } -#endif // GTEST_HAS_GLOBAL_STRING - - // Returns true iff this is an empty string (i.e. ""). - bool empty() const { return (c_str() != NULL) && (length() == 0); } - - // Compares this with another String. - // Returns < 0 if this is less than rhs, 0 if this is equal to rhs, or > 0 - // if this is greater than rhs. - int Compare(const String& rhs) const; - - // Returns true iff this String equals the given C string. A NULL - // string and a non-NULL string are considered not equal. - bool operator==(const char* c_str) const { return Compare(c_str) == 0; } - - // Returns true iff this String is less than the given String. A - // NULL string is considered less than "". - bool operator<(const String& rhs) const { return Compare(rhs) < 0; } - - // Returns true iff this String doesn't equal the given C string. A NULL - // string and a non-NULL string are considered not equal. - bool operator!=(const char* c_str) const { return !(*this == c_str); } - - // Returns true iff this String ends with the given suffix. *Any* - // String is considered to end with a NULL or empty suffix. - bool EndsWith(const char* suffix) const; - - // Returns true iff this String ends with the given suffix, not considering - // case. Any String is considered to end with a NULL or empty suffix. - bool EndsWithCaseInsensitive(const char* suffix) const; - - // Returns the length of the encapsulated string, or 0 if the - // string is NULL. - size_t length() const { return length_; } - - // Gets the 0-terminated C string this String object represents. - // The String object still owns the string. Therefore the caller - // should NOT delete the return value. - const char* c_str() const { return c_str_; } - - // Assigns a C string to this object. Self-assignment works. - const String& operator=(const char* c_str) { return *this = String(c_str); } - - // Assigns a String object to this object. Self-assignment works. - const String& operator=(const String& rhs) { - if (this != &rhs) { - delete[] c_str_; - if (rhs.c_str() == NULL) { - c_str_ = NULL; - length_ = 0; - } else { - ConstructNonNull(rhs.c_str(), rhs.length()); - } - } - - return *this; - } - - private: - // Constructs a non-NULL String from the given content. This - // function can only be called when data_ has not been allocated. - // ConstructNonNull(NULL, 0) results in an empty string (""). - // ConstructNonNull(NULL, non_zero) is undefined behavior. - void ConstructNonNull(const char* buffer, size_t length) { - char* const str = new char[length + 1]; - memcpy(str, buffer, length); - str[length] = '\0'; - c_str_ = str; - length_ = length; - } - - const char* c_str_; - size_t length_; -}; // class String - -// Streams a String to an ostream. Each '\0' character in the String -// is replaced with "\\0". -inline ::std::ostream& operator<<(::std::ostream& os, const String& str) { - if (str.c_str() == NULL) { - os << "(null)"; - } else { - const char* const c_str = str.c_str(); - for (size_t i = 0; i != str.length(); i++) { - if (c_str[i] == '\0') { - os << "\\0"; - } else { - os << c_str[i]; - } - } - } - return os; -} - -// Gets the content of the StrStream's buffer as a String. Each '\0' -// character in the buffer is replaced with "\\0". -String StrStreamToString(StrStream* stream); - -// Converts a streamable value to a String. A NULL pointer is -// converted to "(null)". When the input value is a ::string, -// ::std::string, ::wstring, or ::std::wstring object, each NUL -// character in it is replaced with "\\0". - -// Declared here but defined in gtest.h, so that it has access -// to the definition of the Message class, required by the ARM -// compiler. -template -String StreamableToString(const T& streamable); - -} // namespace internal -} // namespace testing - -#endif // GTEST_INCLUDE_GTEST_INTERNAL_GTEST_STRING_H_ diff --git a/cpp/thirdparty/protobuf-2.3.0/gtest/msvc/gtest-md.vcproj b/cpp/thirdparty/protobuf-2.3.0/gtest/msvc/gtest-md.vcproj deleted file mode 100644 index c78a4a4d9..000000000 --- a/cpp/thirdparty/protobuf-2.3.0/gtest/msvc/gtest-md.vcproj +++ /dev/null @@ -1,237 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/cpp/thirdparty/protobuf-2.3.0/gtest/msvc/gtest.vcproj b/cpp/thirdparty/protobuf-2.3.0/gtest/msvc/gtest.vcproj deleted file mode 100644 index 09d5b93c8..000000000 --- a/cpp/thirdparty/protobuf-2.3.0/gtest/msvc/gtest.vcproj +++ /dev/null @@ -1,237 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/cpp/thirdparty/protobuf-2.3.0/gtest/samples/.gitignore b/cpp/thirdparty/protobuf-2.3.0/gtest/samples/.gitignore deleted file mode 100644 index e49a737d5..000000000 --- a/cpp/thirdparty/protobuf-2.3.0/gtest/samples/.gitignore +++ /dev/null @@ -1 +0,0 @@ -/.deps diff --git a/cpp/thirdparty/protobuf-2.3.0/gtest/scons/SConscript b/cpp/thirdparty/protobuf-2.3.0/gtest/scons/SConscript deleted file mode 100644 index 26fa5fbf4..000000000 --- a/cpp/thirdparty/protobuf-2.3.0/gtest/scons/SConscript +++ /dev/null @@ -1,325 +0,0 @@ -# -*- Python -*- -# Copyright 2008 Google Inc. All Rights Reserved. -# -# Redistribution and use in source and binary forms, with or without -# modification, are permitted provided that the following conditions are -# met: -# -# * Redistributions of source code must retain the above copyright -# notice, this list of conditions and the following disclaimer. -# * Redistributions in binary form must reproduce the above -# copyright notice, this list of conditions and the following disclaimer -# in the documentation and/or other materials provided with the -# distribution. -# * Neither the name of Google Inc. nor the names of its -# contributors may be used to endorse or promote products derived from -# this software without specific prior written permission. -# -# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - - -"""Builds the Google Test (gtest) lib. This has been tested on Windows, -Linux, Mac OS X, and Cygwin. The compilation settings from your project -will be used, with some specific flags required for gtest added. - -You should be able to call this file from more or less any SConscript -file. - -You can optionally set a variable on the construction environment to -have the unit test executables copied to your output directory. The -variable should be env['EXE_OUTPUT']. - -Another optional variable is env['LIB_OUTPUT']. If set, the generated -libraries are copied to the folder indicated by the variable. - -If you place the gtest sources within your own project's source -directory, you should be able to call this SConscript file simply as -follows: - -# -- cut here -- -# Build gtest library; first tell it where to copy executables. -env['EXE_OUTPUT'] = '#/mybuilddir/mybuildmode' # example, optional -env['LIB_OUTPUT'] = '#/mybuilddir/mybuildmode/lib' -env.SConscript('whateverpath/gtest/scons/SConscript') -# -- cut here -- - -If on the other hand you place the gtest sources in a directory -outside of your project's source tree, you would use a snippet similar -to the following: - -# -- cut here -- - -# The following assumes that $BUILD_DIR refers to the root of the -# directory for your current build mode, e.g. "#/mybuilddir/mybuildmode" - -# Build gtest library; as it is outside of our source root, we need to -# tell SCons that the directory it will refer to as -# e.g. $BUILD_DIR/gtest is actually on disk in original form as -# ../../gtest (relative to your project root directory). Recall that -# SCons by default copies all source files into the build directory -# before building. -gtest_dir = env.Dir('$BUILD_DIR/gtest') - -# Modify this part to point to gtest relative to the current -# SConscript or SConstruct file's directory. The ../.. path would -# be different per project, to locate the base directory for gtest. -gtest_dir.addRepository(env.Dir('../../gtest')) - -# Tell the gtest SCons file where to copy executables. -env['EXE_OUTPUT'] = '$BUILD_DIR' # example, optional - -# Call the gtest SConscript to build gtest.lib and unit tests. The -# location of the library should end up as -# '$BUILD_DIR/gtest/scons/gtest.lib' -env.SConscript(env.File('scons/SConscript', gtest_dir)) - -# -- cut here -- -""" - - -__author__ = 'joi@google.com (Joi Sigurdsson)' - - -import os - -############################################################ -# Environments for building the targets, sorted by name. - -Import('env', 'EnvCreator') - -env = EnvCreator.Create(env) - -# Note: The relative paths in SConscript files are relative to the location -# of the SConscript file itself. To make a path relative to the location of -# the main SConstruct file, prepend the path with the # sign. -# -# But if a project uses variant builds without source duplication, the above -# rule gets muddied a bit. In that case the paths must be counted from the -# location of the copy of the SConscript file in scons/build//scons. -# -# Include paths to gtest headers are relative to either the gtest -# directory or the 'include' subdirectory of it, and this SConscript -# file is one directory deeper than the gtest directory. -env.Prepend(CPPPATH = ['..', '../include']) - -env_use_own_tuple = EnvCreator.Create(env, EnvCreator.UseOwnTuple) -env_less_optimized = EnvCreator.Create(env, EnvCreator.LessOptimized) -env_with_threads = EnvCreator.Create(env, EnvCreator.WithThreads) -# The following environments are used to compile gtest_unittest.cc, which -# triggers a warning in all but the most recent GCC versions when compiling -# the EXPECT_EQ(NULL, ptr) statement. -env_warning_ok = EnvCreator.Create(env, EnvCreator.WarningOk) -env_with_exceptions = EnvCreator.Create(env_warning_ok, - EnvCreator.WithExceptions) -env_without_rtti = EnvCreator.Create(env_warning_ok, EnvCreator.NoRtti) - -############################################################ -# Helpers for creating build targets. - -# Caches object file targets built by GtestObject to allow passing the -# same source file with the same environment twice into the function as a -# convenience. -_all_objects = {} - -def GtestObject(build_env, source): - """Returns a target to build an object file from the given .cc source file.""" - - object_name = os.path.basename(source).rstrip('.cc') + build_env['OBJ_SUFFIX'] - if object_name not in _all_objects: - _all_objects[object_name] = build_env.Object(target=object_name, - source=source) - return _all_objects[object_name] - - -def GtestStaticLibraries(build_env): - """Builds static libraries for gtest and gtest_main in build_env. - - Args: - build_env: An environment in which to build libraries. - - Returns: - A pair (gtest library, gtest_main library) built in the given environment. - """ - - gtest_object = GtestObject(build_env, '../src/gtest-all.cc') - gtest_main_object = GtestObject(build_env, '../src/gtest_main.cc') - - return (build_env.StaticLibrary(target='gtest' + build_env['OBJ_SUFFIX'], - source=[gtest_object]), - build_env.StaticLibrary(target='gtest_main' + build_env['OBJ_SUFFIX'], - source=[gtest_object, gtest_main_object])) - - -def GtestBinary(build_env, target, gtest_libs, sources): - """Creates a target to build a binary (either test or sample). - - Args: - build_env: The SCons construction environment to use to build. - target: The basename of the target's main source file, also used as the - target name. - gtest_libs: The gtest library or the list of libraries to link. - sources: A list of source files in the target. - """ - srcs = [] # The object targets corresponding to sources. - for src in sources: - if type(src) is str: - srcs.append(GtestObject(build_env, src)) - else: - srcs.append(src) - - if not gtest_libs: - gtest_libs = [] - elif type(gtest_libs) != type(list()): - gtest_libs = [gtest_libs] - binary = build_env.Program(target=target, source=srcs, LIBS=gtest_libs) - if 'EXE_OUTPUT' in build_env.Dictionary(): - build_env.Install('$EXE_OUTPUT', source=[binary]) - - -def GtestTest(build_env, target, gtest_libs, additional_sources=None): - """Creates a target to build the given test. - - Args: - build_env: The SCons construction environment to use to build. - target: The basename of the target test .cc file. - gtest_libs: The gtest library or the list of libraries to use. - additional_sources: A list of additional source files in the target. - """ - - GtestBinary(build_env, target, gtest_libs, - ['../test/%s.cc' % target] + (additional_sources or [])) - - -def GtestSample(build_env, target, additional_sources=None): - """Creates a target to build the given sample. - - Args: - build_env: The SCons construction environment to use to build. - target: The basename of the target sample .cc file. - gtest_libs: The gtest library or the list of libraries to use. - additional_sources: A list of additional source files in the target. - """ - GtestBinary(build_env, target, gtest_main, - ['../samples/%s.cc' % target] + (additional_sources or [])) - - -############################################################ -# Object and library targets. - -# gtest.lib to be used by most apps (if you have your own main function). -# gtest_main.lib can be used if you just want a basic main function; it is also -# used by some tests for Google Test itself. -gtest, gtest_main = GtestStaticLibraries(env) -gtest_ex, gtest_main_ex = GtestStaticLibraries(env_with_exceptions) -gtest_no_rtti, gtest_main_no_rtti = GtestStaticLibraries(env_without_rtti) -gtest_use_own_tuple, gtest_use_own_tuple_main = GtestStaticLibraries( - env_use_own_tuple) - -# Install the libraries if needed. -if 'LIB_OUTPUT' in env.Dictionary(): - env.Install('$LIB_OUTPUT', source=[gtest, gtest_main, - gtest_ex, gtest_main_ex, - gtest_no_rtti, gtest_main_no_rtti, - gtest_use_own_tuple, - gtest_use_own_tuple_main]) - -############################################################ -# Test targets using the standard environment. - -GtestTest(env, 'gtest-filepath_test', gtest_main) -GtestTest(env, 'gtest-message_test', gtest_main) -GtestTest(env, 'gtest-options_test', gtest_main) -GtestTest(env, 'gtest_environment_test', gtest) -GtestTest(env, 'gtest_main_unittest', gtest_main) -GtestTest(env, 'gtest_no_test_unittest', gtest) -GtestTest(env, 'gtest_pred_impl_unittest', gtest_main) -GtestTest(env, 'gtest_prod_test', gtest_main, - additional_sources=['../test/production.cc']) -GtestTest(env, 'gtest_repeat_test', gtest) -GtestTest(env, 'gtest_sole_header_test', gtest_main) -GtestTest(env, 'gtest-test-part_test', gtest_main) -GtestTest(env, 'gtest-typed-test_test', gtest_main, - additional_sources=['../test/gtest-typed-test2_test.cc']) -GtestTest(env, 'gtest-param-test_test', gtest, - additional_sources=['../test/gtest-param-test2_test.cc']) -GtestTest(env, 'gtest_color_test_', gtest) -GtestTest(env, 'gtest-linked_ptr_test', gtest_main) -GtestTest(env, 'gtest-port_test', gtest_main) -GtestTest(env, 'gtest_break_on_failure_unittest_', gtest) -GtestTest(env, 'gtest_filter_unittest_', gtest) -GtestTest(env, 'gtest_help_test_', gtest_main) -GtestTest(env, 'gtest_list_tests_unittest_', gtest) -GtestTest(env, 'gtest_throw_on_failure_test_', gtest) -GtestTest(env, 'gtest_xml_outfile1_test_', gtest_main) -GtestTest(env, 'gtest_xml_outfile2_test_', gtest_main) -GtestTest(env, 'gtest_xml_output_unittest_', gtest) -GtestTest(env, 'gtest-unittest-api_test', gtest) -GtestTest(env, 'gtest-listener_test', gtest) -GtestTest(env, 'gtest_shuffle_test_', gtest) - -############################################################ -# Tests targets using custom environments. - -GtestTest(env_warning_ok, 'gtest_unittest', gtest_main) -GtestTest(env_with_exceptions, 'gtest_output_test_', gtest_ex) -GtestTest(env_with_exceptions, 'gtest_throw_on_failure_ex_test', gtest_ex) -GtestTest(env_with_threads, 'gtest-death-test_test', gtest_main) -GtestTest(env_less_optimized, 'gtest_env_var_test_', gtest) -GtestTest(env_less_optimized, 'gtest_uninitialized_test_', gtest) -GtestTest(env_use_own_tuple, 'gtest-tuple_test', gtest_use_own_tuple_main) -GtestBinary(env_use_own_tuple, - 'gtest_use_own_tuple_test', - gtest_use_own_tuple_main, - ['../test/gtest-param-test_test.cc', - '../test/gtest-param-test2_test.cc']) -GtestBinary(env_with_exceptions, 'gtest_ex_unittest', gtest_main_ex, - ['../test/gtest_unittest.cc']) -GtestBinary(env_without_rtti, 'gtest_no_rtti_test', gtest_main_no_rtti, - ['../test/gtest_unittest.cc']) - -############################################################ -# Sample targets. - -# Use the GTEST_BUILD_SAMPLES build variable to control building of samples. -# In your SConstruct file, add -# vars = Variables() -# vars.Add(BoolVariable('GTEST_BUILD_SAMPLES', 'Build samples', False)) -# my_environment = Environment(variables = vars, ...) -# Then, in the command line use GTEST_BUILD_SAMPLES=true to enable them. -if env.get('GTEST_BUILD_SAMPLES', False): - GtestSample(env, 'sample1_unittest', - additional_sources=['../samples/sample1.cc']) - GtestSample(env, 'sample2_unittest', - additional_sources=['../samples/sample2.cc']) - GtestSample(env, 'sample3_unittest') - GtestSample(env, 'sample4_unittest', - additional_sources=['../samples/sample4.cc']) - GtestSample(env, 'sample5_unittest', - additional_sources=['../samples/sample1.cc']) - GtestSample(env, 'sample6_unittest') - GtestSample(env, 'sample7_unittest') - GtestSample(env, 'sample8_unittest') - GtestSample(env, 'sample9_unittest') - GtestSample(env, 'sample10_unittest') - -# These exports are used by Google Mock. -gtest_exports = {'gtest': gtest, - 'gtest_ex': gtest_ex, - 'gtest_no_rtti': gtest_no_rtti, - 'gtest_use_own_tuple': gtest_use_own_tuple, - 'EnvCreator': EnvCreator, - 'GtestObject': GtestObject, - 'GtestBinary': GtestBinary, - 'GtestTest': GtestTest} -# Makes the gtest_exports dictionary available to the invoking SConstruct. -Return('gtest_exports') diff --git a/cpp/thirdparty/protobuf-2.3.0/gtest/scons/SConstruct.common b/cpp/thirdparty/protobuf-2.3.0/gtest/scons/SConstruct.common deleted file mode 100644 index 2445bebd4..000000000 --- a/cpp/thirdparty/protobuf-2.3.0/gtest/scons/SConstruct.common +++ /dev/null @@ -1,356 +0,0 @@ -# -*- Python -*- -# Copyright 2008 Google Inc. All Rights Reserved. -# -# Redistribution and use in source and binary forms, with or without -# modification, are permitted provided that the following conditions are -# met: -# -# * Redistributions of source code must retain the above copyright -# notice, this list of conditions and the following disclaimer. -# * Redistributions in binary form must reproduce the above -# copyright notice, this list of conditions and the following disclaimer -# in the documentation and/or other materials provided with the -# distribution. -# * Neither the name of Google Inc. nor the names of its -# contributors may be used to endorse or promote products derived from -# this software without specific prior written permission. -# -# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -# -# Author: joi@google.com (Joi Sigurdsson) -# Author: vladl@google.com (Vlad Losev) -# -# Shared SCons utilities for building Google Test inside and outside of -# Google's environment. -# - -EnsurePythonVersion(2, 3) - - -BUILD_DIR_PREFIX = 'build' - - -class SConstructHelper: - def __init__(self): - # A dictionary to look up an environment by its name. - self.env_dict = {} - - def Initialize(self, build_root_path, support_multiple_win_builds=False): - test_env = Environment() - platform = test_env['PLATFORM'] - if platform == 'win32': - if support_multiple_win_builds: - available_build_types = ['win-dbg8', 'win-opt8', 'win-dbg', 'win-opt'] - else: - available_build_types = ['win-dbg', 'win-opt'] - elif platform == 'darwin': # MacOSX - available_build_types = ['mac-dbg', 'mac-opt'] - else: - available_build_types = ['dbg', 'opt'] # Assuming POSIX-like environment - # with GCC by default. - - vars = Variables() - vars.Add(ListVariable('BUILD', 'Build type', available_build_types[0], - available_build_types)) - vars.Add(BoolVariable('GTEST_BUILD_SAMPLES', 'Build samples', False)) - - # Create base environment. - self.env_base = Environment(variables=vars, - BUILD_MODE={'BUILD' : '"${BUILD}"'}) - - # Leave around a variable pointing at the build root so that SConscript - # files from outside our project root can find their bearings. Trick - # borrowed from Hammer in Software Construction Toolkit - # (http://code.google.com/p/swtoolkit/); if/when we switch to using the - # Hammer idioms instead of just Hammer's version of SCons, we should be - # able to remove this line. - self.env_base['SOURCE_ROOT'] = self.env_base.Dir(build_root_path) - - # And another that definitely always points to the project root. - self.env_base['PROJECT_ROOT'] = self.env_base.Dir('.').abspath - - # Enable scons -h - Help(vars.GenerateHelpText(self.env_base)) - - class EnvCreator: - """Creates new customized environments from a base one.""" - - def _Remove(cls, env, attribute, value): - """Removes the given attribute value from the environment.""" - - attribute_values = env[attribute] - if value in attribute_values: - attribute_values.remove(value) - _Remove = classmethod(_Remove) - - def Create(cls, base_env, modifier=None): - # User should NOT create more than one environment with the same - # modifier (including None). - env = base_env.Clone() - if modifier: - modifier(env) - else: - env['OBJ_SUFFIX'] = '' # Default suffix for unchanged environment. - return env; - Create = classmethod(Create) - - # Each of the following methods modifies the environment for a particular - # purpose and can be used by clients for creating new environments. Each - # one needs to set the OBJ_SUFFIX variable to a unique suffix to - # differentiate targets built with that environment. Otherwise, SCons may - # complain about same target built with different settings. - - def UseOwnTuple(cls, env): - """Instructs Google Test to use its internal implementation of tuple.""" - - env['OBJ_SUFFIX'] = '_use_own_tuple' - env.Append(CPPDEFINES = 'GTEST_USE_OWN_TR1_TUPLE=1') - UseOwnTuple = classmethod(UseOwnTuple) - - def WarningOk(cls, env): - """Does not treat warnings as errors. - - Necessary for compiling gtest_unittest.cc, which triggers a gcc - warning when testing EXPECT_EQ(NULL, ptr).""" - - env['OBJ_SUFFIX'] = '_warning_ok' - if env['PLATFORM'] == 'win32': - cls._Remove(env, 'CCFLAGS', '-WX') - else: - cls._Remove(env, 'CCFLAGS', '-Werror') - WarningOk = classmethod(WarningOk) - - def WithExceptions(cls, env): - """Re-enables exceptions.""" - - env['OBJ_SUFFIX'] = '_ex' - if env['PLATFORM'] == 'win32': - env.Append(CCFLAGS=['/EHsc']) - env.Append(CPPDEFINES='_HAS_EXCEPTIONS=1') - # Undoes the _TYPEINFO_ hack, which is unnecessary and only creates - # trouble when exceptions are enabled. - cls._Remove(env, 'CPPDEFINES', '_TYPEINFO_') - cls._Remove(env, 'CPPDEFINES', '_HAS_EXCEPTIONS=0') - else: - env.Append(CCFLAGS='-fexceptions') - cls._Remove(env, 'CCFLAGS', '-fno-exceptions') - WithExceptions = classmethod(WithExceptions) - - def LessOptimized(cls, env): - """Disables certain optimizations on Windows. - - We need to disable some optimization flags for some tests on - Windows; otherwise the redirection of stdout does not work - (apparently because of a compiler bug).""" - - env['OBJ_SUFFIX'] = '_less_optimized' - if env['PLATFORM'] == 'win32': - for flag in ['/O1', '/Os', '/Og', '/Oy']: - cls._Remove(env, 'LINKFLAGS', flag) - LessOptimized = classmethod(LessOptimized) - - def WithThreads(cls, env): - """Allows use of threads. - - Currently only enables pthreads under GCC.""" - - env['OBJ_SUFFIX'] = '_with_threads' - if env['PLATFORM'] != 'win32': - # Assuming POSIX-like environment with GCC. - # TODO(vladl@google.com): sniff presence of pthread_atfork instead of - # selecting on a platform. - env.Append(CCFLAGS=['-pthread']) - env.Append(LINKFLAGS=['-pthread']) - WithThreads = classmethod(WithThreads) - - def NoRtti(cls, env): - """Disables RTTI support.""" - - env['OBJ_SUFFIX'] = '_no_rtti' - if env['PLATFORM'] == 'win32': - env.Append(CCFLAGS=['/GR-']) - else: - env.Append(CCFLAGS=['-fno-rtti']) - env.Append(CPPDEFINES='GTEST_HAS_RTTI=0') - NoRtti = classmethod(NoRtti) - - def AllowVc71StlWithoutExceptions(self, env): - env.Append( - CPPDEFINES = [# needed for using some parts of STL with exception - # disabled. The scoop is given here, with comments - # from P.J. Plauger at - # http://groups.google.com/group/microsoft.public.vc.stl/browse_thread/thread/5e719833c6bdb177?q=_HAS_EXCEPTIONS+using+namespace+std&pli=1 - '_TYPEINFO_']) - - def MakeWinBaseEnvironment(self): - win_base = self.env_base.Clone( - platform='win32', - CCFLAGS=['-GS', # Enable buffer security check - '-W4', # Warning level - - # Disables warnings that are either uninteresting or - # hard to fix. - - '-WX', # Treat warning as errors - #'-GR-', # Disable runtime type information - '-RTCs', # Enable stack-frame run-time error checks - '-RTCu', # Report when variable used without init. - #'-EHs', # enable C++ EH (no SEH exceptions) - '-nologo', # Suppress logo line - '-J', # All chars unsigned - #'-Wp64', # Detect 64-bit portability issues. This - # flag has been deprecated by VS 2008. - '-Zi', # Produce debug information in PDB files. - ], - CCPDBFLAGS='', - CPPDEFINES=['_UNICODE', 'UNICODE', - 'WIN32', '_WIN32', - 'STRICT', - 'WIN32_LEAN_AND_MEAN', - '_HAS_EXCEPTIONS=0', - ], - LIBPATH=['#/$MAIN_DIR/lib'], - LINKFLAGS=['-MACHINE:x86', # Enable safe SEH (not supp. on x64) - '-DEBUG', # Generate debug info - '-NOLOGO', # Suppress logo line - ], - # All strings in string tables zero terminated. - RCFLAGS=['-n']) - - return win_base - - def SetBuildNameAndDir(self, env, name): - env['BUILD_NAME'] = name; - env['BUILD_DIR'] = '%s/%s' % (BUILD_DIR_PREFIX, name) - self.env_dict[name] = env - - def MakeWinDebugEnvironment(self, base_environment, name): - """Takes a VC71 or VC80 base environment and adds debug settings.""" - debug_env = base_environment.Clone() - self.SetBuildNameAndDir(debug_env, name) - debug_env.Append( - CCFLAGS = ['-Od', # Disable optimizations - '-MTd', # Multithreaded, static link (debug) - # Path for PDB files - '-Fd%s\\' % debug_env.Dir(debug_env['BUILD_DIR']), - ], - CPPDEFINES = ['DEBUG', - '_DEBUG', - ], - LIBPATH = [], - LINKFLAGS = ['-INCREMENTAL:yes', - '/OPT:NOICF', - ] - ) - return debug_env - - def MakeWinOptimizedEnvironment(self, base_environment, name): - """Takes a VC71 or VC80 base environment and adds release settings.""" - optimized_env = base_environment.Clone() - self.SetBuildNameAndDir(optimized_env, name) - optimized_env.Append( - CCFLAGS = ['-GL', # Enable link-time code generation (/GL) - '-GF', # Enable String Pooling (/GF) - '-MT', # Multithreaded, static link - # Path for PDB files - '-Fd%s\\' % optimized_env.Dir(optimized_env['BUILD_DIR']), - - # Favor small code (this is /O1 minus /Og) - '-Os', - '-Oy', - '-Ob2', - '-Gs', - '-GF', - '-Gy', - ], - CPPDEFINES = ['NDEBUG', - '_NDEBUG', - ], - LIBPATH = [], - ARFLAGS = ['-LTCG'], # Link-time Code Generation - LINKFLAGS = ['-LTCG', # Link-time Code Generation - '-OPT:REF', # Optimize by reference. - '-OPT:ICF=32', # Optimize by identical COMDAT folding - '-OPT:NOWIN98', # Optimize by not aligning section for - # Win98 - '-INCREMENTAL:NO', # No incremental linking as we don't - # want padding bytes in release build. - ], - ) - return optimized_env - - def AddGccFlagsTo(self, env, optimized): - env.Append(CCFLAGS=['-fno-exceptions', - '-Wall', - '-Werror', - ]) - if optimized: - env.Append(CCFLAGS=['-O2'], CPPDEFINES=['NDEBUG', '_NDEBUG']) - else: - env.Append(CCFLAGS=['-g'], CPPDEFINES=['DEBUG', '_DEBUG']) - - def ConfigureGccEnvironments(self): - # Mac environments. - mac_base = self.env_base.Clone(platform='darwin') - - mac_dbg = mac_base.Clone() - self.AddGccFlagsTo(mac_dbg, optimized=False) - self.SetBuildNameAndDir(mac_dbg, 'mac-dbg') - - mac_opt = mac_base.Clone() - self.AddGccFlagsTo(mac_opt, optimized=True) - self.SetBuildNameAndDir(mac_opt, 'mac-opt') - - # Generic GCC environments. - gcc_dbg = self.env_base.Clone() - self.AddGccFlagsTo(gcc_dbg, optimized=False) - self.SetBuildNameAndDir(gcc_dbg, 'dbg') - - gcc_opt = self.env_base.Clone() - self.AddGccFlagsTo(gcc_opt, optimized=True) - self.SetBuildNameAndDir(gcc_opt, 'opt') - - def BuildSelectedEnvironments(self): - EnvCreator = SConstructHelper.EnvCreator - Export('EnvCreator') - # Build using whichever environments the 'BUILD' option selected - for build_name in self.env_base['BUILD']: - print 'BUILDING %s' % build_name - env = self.env_dict[build_name] - - # Make sure SConscript files can refer to base build dir - env['MAIN_DIR'] = env.Dir(env['BUILD_DIR']) - - #print 'CCFLAGS: %s' % env.subst('$CCFLAGS') - #print 'LINK: %s' % env.subst('$LINK') - #print 'AR: %s' % env.subst('$AR') - #print 'CC: %s' % env.subst('$CC') - #print 'CXX: %s' % env.subst('$CXX') - #print 'LIBPATH: %s' % env.subst('$LIBPATH') - #print 'ENV:PATH: %s' % env['ENV']['PATH'] - #print 'ENV:INCLUDE: %s' % env['ENV']['INCLUDE'] - #print 'ENV:LIB: %s' % env['ENV']['LIB'] - #print 'ENV:TEMP: %s' % env['ENV']['TEMP'] - - Export('env') - # Invokes SConscript with variant_dir being build/. - # Counter-intuitively, src_dir is relative to the build dir and has - # to be '..' to point to the scons directory. - SConscript('SConscript', - src_dir='..', - variant_dir=env['BUILD_DIR'], - duplicate=0) - - -sconstruct_helper = SConstructHelper() -Return('sconstruct_helper') diff --git a/cpp/thirdparty/protobuf-2.3.0/gtest/scripts/.gitignore b/cpp/thirdparty/protobuf-2.3.0/gtest/scripts/.gitignore deleted file mode 100644 index 468e9caac..000000000 --- a/cpp/thirdparty/protobuf-2.3.0/gtest/scripts/.gitignore +++ /dev/null @@ -1 +0,0 @@ -/gtest-config diff --git a/cpp/thirdparty/protobuf-2.3.0/gtest/src/.gitignore b/cpp/thirdparty/protobuf-2.3.0/gtest/src/.gitignore deleted file mode 100644 index e49a737d5..000000000 --- a/cpp/thirdparty/protobuf-2.3.0/gtest/src/.gitignore +++ /dev/null @@ -1 +0,0 @@ -/.deps diff --git a/cpp/thirdparty/protobuf-2.3.0/gtest/test/.gitignore b/cpp/thirdparty/protobuf-2.3.0/gtest/test/.gitignore deleted file mode 100644 index e49a737d5..000000000 --- a/cpp/thirdparty/protobuf-2.3.0/gtest/test/.gitignore +++ /dev/null @@ -1 +0,0 @@ -/.deps diff --git a/cpp/thirdparty/protobuf-2.3.0/gtest/test/gtest-options_test.cc b/cpp/thirdparty/protobuf-2.3.0/gtest/test/gtest-options_test.cc deleted file mode 100644 index 31ae32771..000000000 --- a/cpp/thirdparty/protobuf-2.3.0/gtest/test/gtest-options_test.cc +++ /dev/null @@ -1,267 +0,0 @@ -// Copyright 2008, Google Inc. -// All rights reserved. -// -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following disclaimer -// in the documentation and/or other materials provided with the -// distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived from -// this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -// -// Authors: keith.ray@gmail.com (Keith Ray) -// -// Google Test UnitTestOptions tests -// -// This file tests classes and functions used internally by -// Google Test. They are subject to change without notice. -// -// This file is #included from gtest.cc, to avoid changing build or -// make-files on Windows and other platforms. Do not #include this file -// anywhere else! - -#include - -#if GTEST_OS_WINDOWS_MOBILE -#include -#elif GTEST_OS_WINDOWS -#include -#endif // GTEST_OS_WINDOWS_MOBILE - -// Indicates that this translation unit is part of Google Test's -// implementation. It must come before gtest-internal-inl.h is -// included, or there will be a compiler error. This trick is to -// prevent a user from accidentally including gtest-internal-inl.h in -// his code. -#define GTEST_IMPLEMENTATION_ 1 -#include "src/gtest-internal-inl.h" -#undef GTEST_IMPLEMENTATION_ - -namespace testing { -namespace internal { -namespace { - -// Turns the given relative path into an absolute path. -FilePath GetAbsolutePathOf(const FilePath& relative_path) { - return FilePath::ConcatPaths(FilePath::GetCurrentDir(), relative_path); -} - -// Testing UnitTestOptions::GetOutputFormat/GetOutputFile. - -TEST(XmlOutputTest, GetOutputFormatDefault) { - GTEST_FLAG(output) = ""; - EXPECT_STREQ("", UnitTestOptions::GetOutputFormat().c_str()); -} - -TEST(XmlOutputTest, GetOutputFormat) { - GTEST_FLAG(output) = "xml:filename"; - EXPECT_STREQ("xml", UnitTestOptions::GetOutputFormat().c_str()); -} - -TEST(XmlOutputTest, GetOutputFileDefault) { - GTEST_FLAG(output) = ""; - EXPECT_STREQ(GetAbsolutePathOf(FilePath("test_detail.xml")).c_str(), - UnitTestOptions::GetAbsolutePathToOutputFile().c_str()); -} - -TEST(XmlOutputTest, GetOutputFileSingleFile) { - GTEST_FLAG(output) = "xml:filename.abc"; - EXPECT_STREQ(GetAbsolutePathOf(FilePath("filename.abc")).c_str(), - UnitTestOptions::GetAbsolutePathToOutputFile().c_str()); -} - -TEST(XmlOutputTest, GetOutputFileFromDirectoryPath) { -#if GTEST_OS_WINDOWS - GTEST_FLAG(output) = "xml:path\\"; - const String& output_file = UnitTestOptions::GetAbsolutePathToOutputFile(); - EXPECT_TRUE( - _strcmpi(output_file.c_str(), - GetAbsolutePathOf( - FilePath("path\\gtest-options_test.xml")).c_str()) == 0 || - _strcmpi(output_file.c_str(), - GetAbsolutePathOf( - FilePath("path\\gtest-options-ex_test.xml")).c_str()) == 0 || - _strcmpi(output_file.c_str(), - GetAbsolutePathOf( - FilePath("path\\gtest_all_test.xml")).c_str()) == 0) - << " output_file = " << output_file; -#else - GTEST_FLAG(output) = "xml:path/"; - const String& output_file = UnitTestOptions::GetAbsolutePathToOutputFile(); - // TODO(wan@google.com): libtool causes the test binary file to be - // named lt-gtest-options_test. Therefore the output file may be - // named .../lt-gtest-options_test.xml. We should remove this - // hard-coded logic when Chandler Carruth's libtool replacement is - // ready. - EXPECT_TRUE(output_file == - GetAbsolutePathOf( - FilePath("path/gtest-options_test.xml")).c_str() || - output_file == - GetAbsolutePathOf( - FilePath("path/lt-gtest-options_test.xml")).c_str() || - output_file == - GetAbsolutePathOf( - FilePath("path/gtest_all_test.xml")).c_str() || - output_file == - GetAbsolutePathOf( - FilePath("path/lt-gtest_all_test.xml")).c_str()) - << " output_file = " << output_file; -#endif -} - -TEST(OutputFileHelpersTest, GetCurrentExecutableName) { - const FilePath executable = GetCurrentExecutableName(); - const char* const exe_str = executable.c_str(); -#if GTEST_OS_WINDOWS - ASSERT_TRUE(_strcmpi("gtest-options_test", exe_str) == 0 || - _strcmpi("gtest-options-ex_test", exe_str) == 0 || - _strcmpi("gtest_all_test", exe_str) == 0) - << "GetCurrentExecutableName() returns " << exe_str; -#else - // TODO(wan@google.com): remove the hard-coded "lt-" prefix when - // Chandler Carruth's libtool replacement is ready. - EXPECT_TRUE(String(exe_str) == "gtest-options_test" || - String(exe_str) == "lt-gtest-options_test" || - String(exe_str) == "gtest_all_test" || - String(exe_str) == "lt-gtest_all_test") - << "GetCurrentExecutableName() returns " << exe_str; -#endif // GTEST_OS_WINDOWS -} - -class XmlOutputChangeDirTest : public Test { - protected: - virtual void SetUp() { - original_working_dir_ = FilePath::GetCurrentDir(); - posix::ChDir(".."); - // This will make the test fail if run from the root directory. - EXPECT_STRNE(original_working_dir_.c_str(), - FilePath::GetCurrentDir().c_str()); - } - - virtual void TearDown() { - posix::ChDir(original_working_dir_.c_str()); - } - - FilePath original_working_dir_; -}; - -TEST_F(XmlOutputChangeDirTest, PreserveOriginalWorkingDirWithDefault) { - GTEST_FLAG(output) = ""; - EXPECT_STREQ(FilePath::ConcatPaths(original_working_dir_, - FilePath("test_detail.xml")).c_str(), - UnitTestOptions::GetAbsolutePathToOutputFile().c_str()); -} - -TEST_F(XmlOutputChangeDirTest, PreserveOriginalWorkingDirWithDefaultXML) { - GTEST_FLAG(output) = "xml"; - EXPECT_STREQ(FilePath::ConcatPaths(original_working_dir_, - FilePath("test_detail.xml")).c_str(), - UnitTestOptions::GetAbsolutePathToOutputFile().c_str()); -} - -TEST_F(XmlOutputChangeDirTest, PreserveOriginalWorkingDirWithRelativeFile) { - GTEST_FLAG(output) = "xml:filename.abc"; - EXPECT_STREQ(FilePath::ConcatPaths(original_working_dir_, - FilePath("filename.abc")).c_str(), - UnitTestOptions::GetAbsolutePathToOutputFile().c_str()); -} - -TEST_F(XmlOutputChangeDirTest, PreserveOriginalWorkingDirWithRelativePath) { -#if GTEST_OS_WINDOWS - GTEST_FLAG(output) = "xml:path\\"; - const String& output_file = UnitTestOptions::GetAbsolutePathToOutputFile(); - EXPECT_TRUE( - _strcmpi(output_file.c_str(), - FilePath::ConcatPaths( - original_working_dir_, - FilePath("path\\gtest-options_test.xml")).c_str()) == 0 || - _strcmpi(output_file.c_str(), - FilePath::ConcatPaths( - original_working_dir_, - FilePath("path\\gtest-options-ex_test.xml")).c_str()) == 0 || - _strcmpi(output_file.c_str(), - FilePath::ConcatPaths( - original_working_dir_, - FilePath("path\\gtest_all_test.xml")).c_str()) == 0) - << " output_file = " << output_file; -#else - GTEST_FLAG(output) = "xml:path/"; - const String& output_file = UnitTestOptions::GetAbsolutePathToOutputFile(); - // TODO(wan@google.com): libtool causes the test binary file to be - // named lt-gtest-options_test. Therefore the output file may be - // named .../lt-gtest-options_test.xml. We should remove this - // hard-coded logic when Chandler Carruth's libtool replacement is - // ready. - EXPECT_TRUE(output_file == FilePath::ConcatPaths(original_working_dir_, - FilePath("path/gtest-options_test.xml")).c_str() || - output_file == FilePath::ConcatPaths(original_working_dir_, - FilePath("path/lt-gtest-options_test.xml")).c_str() || - output_file == FilePath::ConcatPaths(original_working_dir_, - FilePath("path/gtest_all_test.xml")).c_str() || - output_file == FilePath::ConcatPaths(original_working_dir_, - FilePath("path/lt-gtest_all_test.xml")).c_str()) - << " output_file = " << output_file; -#endif -} - -TEST_F(XmlOutputChangeDirTest, PreserveOriginalWorkingDirWithAbsoluteFile) { -#if GTEST_OS_WINDOWS - GTEST_FLAG(output) = "xml:c:\\tmp\\filename.abc"; - EXPECT_STREQ(FilePath("c:\\tmp\\filename.abc").c_str(), - UnitTestOptions::GetAbsolutePathToOutputFile().c_str()); -#else - GTEST_FLAG(output) ="xml:/tmp/filename.abc"; - EXPECT_STREQ(FilePath("/tmp/filename.abc").c_str(), - UnitTestOptions::GetAbsolutePathToOutputFile().c_str()); -#endif -} - -TEST_F(XmlOutputChangeDirTest, PreserveOriginalWorkingDirWithAbsolutePath) { -#if GTEST_OS_WINDOWS - GTEST_FLAG(output) = "xml:c:\\tmp\\"; - const String& output_file = UnitTestOptions::GetAbsolutePathToOutputFile(); - EXPECT_TRUE( - _strcmpi(output_file.c_str(), - FilePath("c:\\tmp\\gtest-options_test.xml").c_str()) == 0 || - _strcmpi(output_file.c_str(), - FilePath("c:\\tmp\\gtest-options-ex_test.xml").c_str()) == 0 || - _strcmpi(output_file.c_str(), - FilePath("c:\\tmp\\gtest_all_test.xml").c_str()) == 0) - << " output_file = " << output_file; -#else - GTEST_FLAG(output) = "xml:/tmp/"; - const String& output_file = UnitTestOptions::GetAbsolutePathToOutputFile(); - // TODO(wan@google.com): libtool causes the test binary file to be - // named lt-gtest-options_test. Therefore the output file may be - // named .../lt-gtest-options_test.xml. We should remove this - // hard-coded logic when Chandler Carruth's libtool replacement is - // ready. - EXPECT_TRUE(output_file == "/tmp/gtest-options_test.xml" || - output_file == "/tmp/lt-gtest-options_test.xml" || - output_file == "/tmp/gtest_all_test.xml" || - output_file == "/tmp/lt-gtest_all_test.xml") - << " output_file = " << output_file; -#endif -} - -} // namespace -} // namespace internal -} // namespace testing diff --git a/cpp/thirdparty/protobuf-2.3.0/gtest/test/gtest_nc.cc b/cpp/thirdparty/protobuf-2.3.0/gtest/test/gtest_nc.cc deleted file mode 100644 index 73b5db6d4..000000000 --- a/cpp/thirdparty/protobuf-2.3.0/gtest/test/gtest_nc.cc +++ /dev/null @@ -1,234 +0,0 @@ -// Copyright 2007, Google Inc. -// All rights reserved. -// -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following disclaimer -// in the documentation and/or other materials provided with the -// distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived from -// this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -// -// Author: wan@google.com (Zhanyong Wan) - -// This file is the input to a negative-compilation test for Google -// Test. Code here is NOT supposed to compile. Its purpose is to -// verify that certain incorrect usages of the Google Test API are -// indeed rejected by the compiler. -// -// We still need to write the negative-compilation test itself, which -// will be tightly coupled with the build environment. -// -// TODO(wan@google.com): finish the negative-compilation test. - -#ifdef TEST_CANNOT_IGNORE_RUN_ALL_TESTS_RESULT -// Tests that the result of RUN_ALL_TESTS() cannot be ignored. - -#include - -int main(int argc, char** argv) { - testing::InitGoogleTest(&argc, argv); - RUN_ALL_TESTS(); // This line shouldn't compile. -} - -#elif defined(TEST_USER_CANNOT_INCLUDE_GTEST_INTERNAL_INL_H) -// Tests that a user cannot include gtest-internal-inl.h in his code. - -#include "src/gtest-internal-inl.h" - -#elif defined(TEST_CATCHES_DECLARING_SETUP_IN_TEST_FIXTURE_WITH_TYPO) -// Tests that the compiler catches the typo when a user declares a -// Setup() method in a test fixture. - -#include - -class MyTest : public testing::Test { - protected: - void Setup() {} -}; - -#elif defined(TEST_CATCHES_CALLING_SETUP_IN_TEST_WITH_TYPO) -// Tests that the compiler catches the typo when a user calls Setup() -// from a test fixture. - -#include - -class MyTest : public testing::Test { - protected: - virtual void SetUp() { - testing::Test::Setup(); // Tries to call SetUp() in the parent class. - } -}; - -#elif defined(TEST_CATCHES_DECLARING_SETUP_IN_ENVIRONMENT_WITH_TYPO) -// Tests that the compiler catches the typo when a user declares a -// Setup() method in a subclass of Environment. - -#include - -class MyEnvironment : public testing::Environment { - public: - void Setup() {} -}; - -#elif defined(TEST_CATCHES_CALLING_SETUP_IN_ENVIRONMENT_WITH_TYPO) -// Tests that the compiler catches the typo when a user calls Setup() -// in an Environment. - -#include - -class MyEnvironment : public testing::Environment { - protected: - virtual void SetUp() { - // Tries to call SetUp() in the parent class. - testing::Environment::Setup(); - } -}; - -#elif defined(TEST_CATCHES_WRONG_CASE_IN_TYPED_TEST_P) -// Tests that the compiler catches using the wrong test case name in -// TYPED_TEST_P. - -#include - -template -class FooTest : public testing::Test { -}; - -template -class BarTest : public testing::Test { -}; - -TYPED_TEST_CASE_P(FooTest); -TYPED_TEST_P(BarTest, A) {} // Wrong test case name. -REGISTER_TYPED_TEST_CASE_P(FooTest, A); -INSTANTIATE_TYPED_TEST_CASE_P(My, FooTest, testing::Types); - -#elif defined(TEST_CATCHES_WRONG_CASE_IN_REGISTER_TYPED_TEST_CASE_P) -// Tests that the compiler catches using the wrong test case name in -// REGISTER_TYPED_TEST_CASE_P. - -#include - -template -class FooTest : public testing::Test { -}; - -template -class BarTest : public testing::Test { -}; - -TYPED_TEST_CASE_P(FooTest); -TYPED_TEST_P(FooTest, A) {} -REGISTER_TYPED_TEST_CASE_P(BarTest, A); // Wrong test case name. -INSTANTIATE_TYPED_TEST_CASE_P(My, FooTest, testing::Types); - -#elif defined(TEST_CATCHES_WRONG_CASE_IN_INSTANTIATE_TYPED_TEST_CASE_P) -// Tests that the compiler catches using the wrong test case name in -// INSTANTIATE_TYPED_TEST_CASE_P. - -#include - -template -class FooTest : public testing::Test { -}; - -template -class BarTest : public testing::Test { -}; - -TYPED_TEST_CASE_P(FooTest); -TYPED_TEST_P(FooTest, A) {} -REGISTER_TYPED_TEST_CASE_P(FooTest, A); - -// Wrong test case name. -INSTANTIATE_TYPED_TEST_CASE_P(My, BarTest, testing::Types); - -#elif defined(TEST_CATCHES_INSTANTIATE_TYPED_TESET_CASE_P_WITH_SAME_NAME_PREFIX) -// Tests that the compiler catches instantiating TYPED_TEST_CASE_P -// twice with the same name prefix. - -#include - -template -class FooTest : public testing::Test { -}; - -TYPED_TEST_CASE_P(FooTest); -TYPED_TEST_P(FooTest, A) {} -REGISTER_TYPED_TEST_CASE_P(FooTest, A); - -INSTANTIATE_TYPED_TEST_CASE_P(My, FooTest, testing::Types); - -// Wrong name prefix: "My" has been used. -INSTANTIATE_TYPED_TEST_CASE_P(My, FooTest, testing::Types); - -#elif defined(TEST_STATIC_ASSERT_TYPE_EQ_IS_NOT_A_TYPE) - -#include - -// Tests that StaticAssertTypeEq cannot be used as a type. -testing::StaticAssertTypeEq dummy; - -#elif defined(TEST_STATIC_ASSERT_TYPE_EQ_WORKS_IN_NAMESPACE) - -#include - -// Tests that StaticAssertTypeEq works in a namespace scope. -static bool dummy = testing::StaticAssertTypeEq(); - -#elif defined(TEST_STATIC_ASSERT_TYPE_EQ_WORKS_IN_CLASS) - -#include - -template -class Helper { - public: - // Tests that StaticAssertTypeEq works in a class. - Helper() { testing::StaticAssertTypeEq(); } - - void DoSomething() {} -}; - -void Test() { - Helper h; - h.DoSomething(); // To avoid the "unused variable" warning. -} - -#elif defined(TEST_STATIC_ASSERT_TYPE_EQ_WORKS_IN_FUNCTION) - -#include - -void Test() { - // Tests that StaticAssertTypeEq works inside a function. - testing::StaticAssertTypeEq(); -} - -#else -// A sanity test. This should compile. - -#include - -int main() { - return RUN_ALL_TESTS(); -} - -#endif diff --git a/cpp/thirdparty/protobuf-2.3.0/gtest/test/gtest_nc_test.py b/cpp/thirdparty/protobuf-2.3.0/gtest/test/gtest_nc_test.py deleted file mode 100755 index 06ffb3f80..000000000 --- a/cpp/thirdparty/protobuf-2.3.0/gtest/test/gtest_nc_test.py +++ /dev/null @@ -1,106 +0,0 @@ -#!/usr/bin/env python -# -# Copyright 2007, Google Inc. -# All rights reserved. -# -# Redistribution and use in source and binary forms, with or without -# modification, are permitted provided that the following conditions are -# met: -# -# * Redistributions of source code must retain the above copyright -# notice, this list of conditions and the following disclaimer. -# * Redistributions in binary form must reproduce the above -# copyright notice, this list of conditions and the following disclaimer -# in the documentation and/or other materials provided with the -# distribution. -# * Neither the name of Google Inc. nor the names of its -# contributors may be used to endorse or promote products derived from -# this software without specific prior written permission. -# -# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -"""Negative compilation test for Google Test.""" - -__author__ = 'wan@google.com (Zhanyong Wan)' - -import os -import sys -import unittest - - -IS_LINUX = os.name == 'posix' and os.uname()[0] == 'Linux' -if not IS_LINUX: - sys.exit(0) # Negative compilation tests are not supported on Windows & Mac. - - -class GTestNCTest(unittest.TestCase): - """Negative compilation test for Google Test.""" - - def testCompilerError(self): - """Verifies that erroneous code leads to expected compiler - messages.""" - - # Defines a list of test specs, where each element is a tuple - # (test name, list of regexes for matching the compiler errors). - test_specs = [ - ('CANNOT_IGNORE_RUN_ALL_TESTS_RESULT', - [r'ignoring return value']), - - ('USER_CANNOT_INCLUDE_GTEST_INTERNAL_INL_H', - [r'must not be included except by Google Test itself']), - - ('CATCHES_DECLARING_SETUP_IN_TEST_FIXTURE_WITH_TYPO', - [r'Setup_should_be_spelled_SetUp']), - - ('CATCHES_CALLING_SETUP_IN_TEST_WITH_TYPO', - [r'Setup_should_be_spelled_SetUp']), - - ('CATCHES_DECLARING_SETUP_IN_ENVIRONMENT_WITH_TYPO', - [r'Setup_should_be_spelled_SetUp']), - - ('CATCHES_CALLING_SETUP_IN_ENVIRONMENT_WITH_TYPO', - [r'Setup_should_be_spelled_SetUp']), - - ('CATCHES_WRONG_CASE_IN_TYPED_TEST_P', - [r'BarTest.*was not declared']), - - ('CATCHES_WRONG_CASE_IN_REGISTER_TYPED_TEST_CASE_P', - [r'BarTest.*was not declared']), - - ('CATCHES_WRONG_CASE_IN_INSTANTIATE_TYPED_TEST_CASE_P', - [r'BarTest.*not declared']), - - ('CATCHES_INSTANTIATE_TYPED_TESET_CASE_P_WITH_SAME_NAME_PREFIX', - [r'redefinition of.*My.*FooTest']), - - ('STATIC_ASSERT_TYPE_EQ_IS_NOT_A_TYPE', - [r'StaticAssertTypeEq.* does not name a type']), - - ('STATIC_ASSERT_TYPE_EQ_WORKS_IN_NAMESPACE', - [r'StaticAssertTypeEq.*int.*const int']), - - ('STATIC_ASSERT_TYPE_EQ_WORKS_IN_CLASS', - [r'StaticAssertTypeEq.*int.*bool']), - - ('STATIC_ASSERT_TYPE_EQ_WORKS_IN_FUNCTION', - [r'StaticAssertTypeEq.*const int.*int']), - - ('SANITY', - None) - ] - - # TODO(wan@google.com): verify that the test specs are satisfied. - - -if __name__ == '__main__': - unittest.main() diff --git a/cpp/thirdparty/protobuf-2.3.0/gtest/test/gtest_output_test_golden_win.txt b/cpp/thirdparty/protobuf-2.3.0/gtest/test/gtest_output_test_golden_win.txt deleted file mode 100644 index 313c3aafc..000000000 --- a/cpp/thirdparty/protobuf-2.3.0/gtest/test/gtest_output_test_golden_win.txt +++ /dev/null @@ -1,605 +0,0 @@ -The non-test part of the code is expected to have 2 failures. - -gtest_output_test_.cc:#: error: Value of: false - Actual: false -Expected: true -gtest_output_test_.cc:#: error: Value of: 3 -Expected: 2 -[==========] Running 61 tests from 27 test cases. -[----------] Global test environment set-up. -FooEnvironment::SetUp() called. -BarEnvironment::SetUp() called. -[----------] 1 test from ADeathTest -[ RUN ] ADeathTest.ShouldRunFirst -[ OK ] ADeathTest.ShouldRunFirst -[----------] 1 test from ATypedDeathTest/0, where TypeParam = int -[ RUN ] ATypedDeathTest/0.ShouldRunFirst -[ OK ] ATypedDeathTest/0.ShouldRunFirst -[----------] 1 test from ATypedDeathTest/1, where TypeParam = double -[ RUN ] ATypedDeathTest/1.ShouldRunFirst -[ OK ] ATypedDeathTest/1.ShouldRunFirst -[----------] 1 test from My/ATypeParamDeathTest/0, where TypeParam = int -[ RUN ] My/ATypeParamDeathTest/0.ShouldRunFirst -[ OK ] My/ATypeParamDeathTest/0.ShouldRunFirst -[----------] 1 test from My/ATypeParamDeathTest/1, where TypeParam = double -[ RUN ] My/ATypeParamDeathTest/1.ShouldRunFirst -[ OK ] My/ATypeParamDeathTest/1.ShouldRunFirst -[----------] 2 tests from PassingTest -[ RUN ] PassingTest.PassingTest1 -[ OK ] PassingTest.PassingTest1 -[ RUN ] PassingTest.PassingTest2 -[ OK ] PassingTest.PassingTest2 -[----------] 3 tests from FatalFailureTest -[ RUN ] FatalFailureTest.FatalFailureInSubroutine -(expecting a failure that x should be 1) -gtest_output_test_.cc:#: error: Value of: x - Actual: 2 -Expected: 1 -[ FAILED ] FatalFailureTest.FatalFailureInSubroutine -[ RUN ] FatalFailureTest.FatalFailureInNestedSubroutine -(expecting a failure that x should be 1) -gtest_output_test_.cc:#: error: Value of: x - Actual: 2 -Expected: 1 -[ FAILED ] FatalFailureTest.FatalFailureInNestedSubroutine -[ RUN ] FatalFailureTest.NonfatalFailureInSubroutine -(expecting a failure on false) -gtest_output_test_.cc:#: error: Value of: false - Actual: false -Expected: true -[ FAILED ] FatalFailureTest.NonfatalFailureInSubroutine -[----------] 1 test from LoggingTest -[ RUN ] LoggingTest.InterleavingLoggingAndAssertions -(expecting 2 failures on (3) >= (a[i])) -i == 0 -i == 1 -gtest_output_test_.cc:#: error: Expected: (3) >= (a[i]), actual: 3 vs 9 -i == 2 -i == 3 -gtest_output_test_.cc:#: error: Expected: (3) >= (a[i]), actual: 3 vs 6 -[ FAILED ] LoggingTest.InterleavingLoggingAndAssertions -[----------] 5 tests from SCOPED_TRACETest -[ RUN ] SCOPED_TRACETest.ObeysScopes -(expected to fail) -gtest_output_test_.cc:#: error: Failed -This failure is expected, and shouldn't have a trace. -gtest_output_test_.cc:#: error: Failed -This failure is expected, and should have a trace. -Google Test trace: -gtest_output_test_.cc:#: Expected trace -gtest_output_test_.cc:#: error: Failed -This failure is expected, and shouldn't have a trace. -[ FAILED ] SCOPED_TRACETest.ObeysScopes -[ RUN ] SCOPED_TRACETest.WorksInLoop -(expected to fail) -gtest_output_test_.cc:#: error: Value of: n - Actual: 1 -Expected: 2 -Google Test trace: -gtest_output_test_.cc:#: i = 1 -gtest_output_test_.cc:#: error: Value of: n - Actual: 2 -Expected: 1 -Google Test trace: -gtest_output_test_.cc:#: i = 2 -[ FAILED ] SCOPED_TRACETest.WorksInLoop -[ RUN ] SCOPED_TRACETest.WorksInSubroutine -(expected to fail) -gtest_output_test_.cc:#: error: Value of: n - Actual: 1 -Expected: 2 -Google Test trace: -gtest_output_test_.cc:#: n = 1 -gtest_output_test_.cc:#: error: Value of: n - Actual: 2 -Expected: 1 -Google Test trace: -gtest_output_test_.cc:#: n = 2 -[ FAILED ] SCOPED_TRACETest.WorksInSubroutine -[ RUN ] SCOPED_TRACETest.CanBeNested -(expected to fail) -gtest_output_test_.cc:#: error: Value of: n - Actual: 2 -Expected: 1 -Google Test trace: -gtest_output_test_.cc:#: n = 2 -gtest_output_test_.cc:#: -[ FAILED ] SCOPED_TRACETest.CanBeNested -[ RUN ] SCOPED_TRACETest.CanBeRepeated -(expected to fail) -gtest_output_test_.cc:#: error: Failed -This failure is expected, and should contain trace point A. -Google Test trace: -gtest_output_test_.cc:#: A -gtest_output_test_.cc:#: error: Failed -This failure is expected, and should contain trace point A and B. -Google Test trace: -gtest_output_test_.cc:#: B -gtest_output_test_.cc:#: A -gtest_output_test_.cc:#: error: Failed -This failure is expected, and should contain trace point A, B, and C. -Google Test trace: -gtest_output_test_.cc:#: C -gtest_output_test_.cc:#: B -gtest_output_test_.cc:#: A -gtest_output_test_.cc:#: error: Failed -This failure is expected, and should contain trace point A, B, and D. -Google Test trace: -gtest_output_test_.cc:#: D -gtest_output_test_.cc:#: B -gtest_output_test_.cc:#: A -[ FAILED ] SCOPED_TRACETest.CanBeRepeated -[----------] 1 test from NonFatalFailureInFixtureConstructorTest -[ RUN ] NonFatalFailureInFixtureConstructorTest.FailureInConstructor -(expecting 5 failures) -gtest_output_test_.cc:#: error: Failed -Expected failure #1, in the test fixture c'tor. -gtest_output_test_.cc:#: error: Failed -Expected failure #2, in SetUp(). -gtest_output_test_.cc:#: error: Failed -Expected failure #3, in the test body. -gtest_output_test_.cc:#: error: Failed -Expected failure #4, in TearDown. -gtest_output_test_.cc:#: error: Failed -Expected failure #5, in the test fixture d'tor. -[ FAILED ] NonFatalFailureInFixtureConstructorTest.FailureInConstructor -[----------] 1 test from FatalFailureInFixtureConstructorTest -[ RUN ] FatalFailureInFixtureConstructorTest.FailureInConstructor -(expecting 2 failures) -gtest_output_test_.cc:#: error: Failed -Expected failure #1, in the test fixture c'tor. -gtest_output_test_.cc:#: error: Failed -Expected failure #2, in the test fixture d'tor. -[ FAILED ] FatalFailureInFixtureConstructorTest.FailureInConstructor -[----------] 1 test from NonFatalFailureInSetUpTest -[ RUN ] NonFatalFailureInSetUpTest.FailureInSetUp -(expecting 4 failures) -gtest_output_test_.cc:#: error: Failed -Expected failure #1, in SetUp(). -gtest_output_test_.cc:#: error: Failed -Expected failure #2, in the test function. -gtest_output_test_.cc:#: error: Failed -Expected failure #3, in TearDown(). -gtest_output_test_.cc:#: error: Failed -Expected failure #4, in the test fixture d'tor. -[ FAILED ] NonFatalFailureInSetUpTest.FailureInSetUp -[----------] 1 test from FatalFailureInSetUpTest -[ RUN ] FatalFailureInSetUpTest.FailureInSetUp -(expecting 3 failures) -gtest_output_test_.cc:#: error: Failed -Expected failure #1, in SetUp(). -gtest_output_test_.cc:#: error: Failed -Expected failure #2, in TearDown(). -gtest_output_test_.cc:#: error: Failed -Expected failure #3, in the test fixture d'tor. -[ FAILED ] FatalFailureInSetUpTest.FailureInSetUp -[----------] 1 test from ExceptionInFixtureCtorTest -[ RUN ] ExceptionInFixtureCtorTest.ExceptionInFixtureCtor -(expecting a failure on thrown exception in the test fixture's constructor) -unknown file: error: Exception thrown with code 0xc0000005 in the test fixture's constructor. -[----------] 1 test from ExceptionInSetUpTest -[ RUN ] ExceptionInSetUpTest.ExceptionInSetUp -(expecting 3 failures) -unknown file: error: Exception thrown with code 0xc0000005 in SetUp(). -gtest_output_test_.cc:#: error: Failed -Expected failure #2, in TearDown(). -gtest_output_test_.cc:#: error: Failed -Expected failure #3, in the test fixture d'tor. -[ FAILED ] ExceptionInSetUpTest.ExceptionInSetUp -[----------] 2 tests from ExceptionInTestFunctionTest -[ RUN ] ExceptionInTestFunctionTest.SEH -(expecting 3 failures) -unknown file: error: Exception thrown with code 0xc0000005 in the test body. -gtest_output_test_.cc:#: error: Failed -Expected failure #2, in TearDown(). -gtest_output_test_.cc:#: error: Failed -Expected failure #3, in the test fixture d'tor. -[ FAILED ] ExceptionInTestFunctionTest.SEH -[ RUN ] ExceptionInTestFunctionTest.CppException -unknown file: error: Exception thrown with code 0xe06d7363 in the test body. -gtest_output_test_.cc:#: error: Failed -Expected failure #2, in TearDown(). -gtest_output_test_.cc:#: error: Failed -Expected failure #3, in the test fixture d'tor. -[ FAILED ] ExceptionInTestFunctionTest.CppException -[----------] 1 test from ExceptionInTearDownTest -[ RUN ] ExceptionInTearDownTest.ExceptionInTearDown -(expecting 2 failures) -unknown file: error: Exception thrown with code 0xe06d7363 in TearDown(). -gtest_output_test_.cc:#: error: Failed -Expected failure #2, in the test fixture d'tor. -[ FAILED ] ExceptionInTearDownTest.ExceptionInTearDown -[----------] 4 tests from MixedUpTestCaseTest -[ RUN ] MixedUpTestCaseTest.FirstTestFromNamespaceFoo -[ OK ] MixedUpTestCaseTest.FirstTestFromNamespaceFoo -[ RUN ] MixedUpTestCaseTest.SecondTestFromNamespaceFoo -[ OK ] MixedUpTestCaseTest.SecondTestFromNamespaceFoo -[ RUN ] MixedUpTestCaseTest.ThisShouldFail -gtest.cc:#: error: Failed -All tests in the same test case must use the same test fixture -class. However, in test case MixedUpTestCaseTest, -you defined test FirstTestFromNamespaceFoo and test ThisShouldFail -using two different test fixture classes. This can happen if -the two classes are from different namespaces or translation -units and have the same name. You should probably rename one -of the classes to put the tests into different test cases. -[ FAILED ] MixedUpTestCaseTest.ThisShouldFail -[ RUN ] MixedUpTestCaseTest.ThisShouldFailToo -gtest.cc:#: error: Failed -All tests in the same test case must use the same test fixture -class. However, in test case MixedUpTestCaseTest, -you defined test FirstTestFromNamespaceFoo and test ThisShouldFailToo -using two different test fixture classes. This can happen if -the two classes are from different namespaces or translation -units and have the same name. You should probably rename one -of the classes to put the tests into different test cases. -[ FAILED ] MixedUpTestCaseTest.ThisShouldFailToo -[----------] 2 tests from MixedUpTestCaseWithSameTestNameTest -[ RUN ] MixedUpTestCaseWithSameTestNameTest.TheSecondTestWithThisNameShouldFail -[ OK ] MixedUpTestCaseWithSameTestNameTest.TheSecondTestWithThisNameShouldFail -[ RUN ] MixedUpTestCaseWithSameTestNameTest.TheSecondTestWithThisNameShouldFail -gtest.cc:#: error: Failed -All tests in the same test case must use the same test fixture -class. However, in test case MixedUpTestCaseWithSameTestNameTest, -you defined test TheSecondTestWithThisNameShouldFail and test TheSecondTestWithThisNameShouldFail -using two different test fixture classes. This can happen if -the two classes are from different namespaces or translation -units and have the same name. You should probably rename one -of the classes to put the tests into different test cases. -[ FAILED ] MixedUpTestCaseWithSameTestNameTest.TheSecondTestWithThisNameShouldFail -[----------] 2 tests from TEST_F_before_TEST_in_same_test_case -[ RUN ] TEST_F_before_TEST_in_same_test_case.DefinedUsingTEST_F -[ OK ] TEST_F_before_TEST_in_same_test_case.DefinedUsingTEST_F -[ RUN ] TEST_F_before_TEST_in_same_test_case.DefinedUsingTESTAndShouldFail -gtest.cc:#: error: Failed -All tests in the same test case must use the same test fixture -class, so mixing TEST_F and TEST in the same test case is -illegal. In test case TEST_F_before_TEST_in_same_test_case, -test DefinedUsingTEST_F is defined using TEST_F but -test DefinedUsingTESTAndShouldFail is defined using TEST. You probably -want to change the TEST to TEST_F or move it to another test -case. -[ FAILED ] TEST_F_before_TEST_in_same_test_case.DefinedUsingTESTAndShouldFail -[----------] 2 tests from TEST_before_TEST_F_in_same_test_case -[ RUN ] TEST_before_TEST_F_in_same_test_case.DefinedUsingTEST -[ OK ] TEST_before_TEST_F_in_same_test_case.DefinedUsingTEST -[ RUN ] TEST_before_TEST_F_in_same_test_case.DefinedUsingTEST_FAndShouldFail -gtest.cc:#: error: Failed -All tests in the same test case must use the same test fixture -class, so mixing TEST_F and TEST in the same test case is -illegal. In test case TEST_before_TEST_F_in_same_test_case, -test DefinedUsingTEST_FAndShouldFail is defined using TEST_F but -test DefinedUsingTEST is defined using TEST. You probably -want to change the TEST to TEST_F or move it to another test -case. -[ FAILED ] TEST_before_TEST_F_in_same_test_case.DefinedUsingTEST_FAndShouldFail -[----------] 8 tests from ExpectNonfatalFailureTest -[ RUN ] ExpectNonfatalFailureTest.CanReferenceGlobalVariables -[ OK ] ExpectNonfatalFailureTest.CanReferenceGlobalVariables -[ RUN ] ExpectNonfatalFailureTest.CanReferenceLocalVariables -[ OK ] ExpectNonfatalFailureTest.CanReferenceLocalVariables -[ RUN ] ExpectNonfatalFailureTest.SucceedsWhenThereIsOneNonfatalFailure -[ OK ] ExpectNonfatalFailureTest.SucceedsWhenThereIsOneNonfatalFailure -[ RUN ] ExpectNonfatalFailureTest.FailsWhenThereIsNoNonfatalFailure -(expecting a failure) -gtest.cc:#: error: Expected: 1 non-fatal failure - Actual: 0 failures -[ FAILED ] ExpectNonfatalFailureTest.FailsWhenThereIsNoNonfatalFailure -[ RUN ] ExpectNonfatalFailureTest.FailsWhenThereAreTwoNonfatalFailures -(expecting a failure) -gtest.cc:#: error: Expected: 1 non-fatal failure - Actual: 2 failures -gtest_output_test_.cc:#: Non-fatal failure: -Failed -Expected non-fatal failure 1. - -gtest_output_test_.cc:#: Non-fatal failure: -Failed -Expected non-fatal failure 2. - -[ FAILED ] ExpectNonfatalFailureTest.FailsWhenThereAreTwoNonfatalFailures -[ RUN ] ExpectNonfatalFailureTest.FailsWhenThereIsOneFatalFailure -(expecting a failure) -gtest.cc:#: error: Expected: 1 non-fatal failure - Actual: -gtest_output_test_.cc:#: Fatal failure: -Failed -Expected fatal failure. - -[ FAILED ] ExpectNonfatalFailureTest.FailsWhenThereIsOneFatalFailure -[ RUN ] ExpectNonfatalFailureTest.FailsWhenStatementReturns -(expecting a failure) -gtest.cc:#: error: Expected: 1 non-fatal failure - Actual: 0 failures -[ FAILED ] ExpectNonfatalFailureTest.FailsWhenStatementReturns -[ RUN ] ExpectNonfatalFailureTest.FailsWhenStatementThrows -(expecting a failure) -gtest.cc:#: error: Expected: 1 non-fatal failure - Actual: 0 failures -[ FAILED ] ExpectNonfatalFailureTest.FailsWhenStatementThrows -[----------] 8 tests from ExpectFatalFailureTest -[ RUN ] ExpectFatalFailureTest.CanReferenceGlobalVariables -[ OK ] ExpectFatalFailureTest.CanReferenceGlobalVariables -[ RUN ] ExpectFatalFailureTest.CanReferenceLocalStaticVariables -[ OK ] ExpectFatalFailureTest.CanReferenceLocalStaticVariables -[ RUN ] ExpectFatalFailureTest.SucceedsWhenThereIsOneFatalFailure -[ OK ] ExpectFatalFailureTest.SucceedsWhenThereIsOneFatalFailure -[ RUN ] ExpectFatalFailureTest.FailsWhenThereIsNoFatalFailure -(expecting a failure) -gtest.cc:#: error: Expected: 1 fatal failure - Actual: 0 failures -[ FAILED ] ExpectFatalFailureTest.FailsWhenThereIsNoFatalFailure -[ RUN ] ExpectFatalFailureTest.FailsWhenThereAreTwoFatalFailures -(expecting a failure) -gtest.cc:#: error: Expected: 1 fatal failure - Actual: 2 failures -gtest_output_test_.cc:#: Fatal failure: -Failed -Expected fatal failure. - -gtest_output_test_.cc:#: Fatal failure: -Failed -Expected fatal failure. - -[ FAILED ] ExpectFatalFailureTest.FailsWhenThereAreTwoFatalFailures -[ RUN ] ExpectFatalFailureTest.FailsWhenThereIsOneNonfatalFailure -(expecting a failure) -gtest.cc:#: error: Expected: 1 fatal failure - Actual: -gtest_output_test_.cc:#: Non-fatal failure: -Failed -Expected non-fatal failure. - -[ FAILED ] ExpectFatalFailureTest.FailsWhenThereIsOneNonfatalFailure -[ RUN ] ExpectFatalFailureTest.FailsWhenStatementReturns -(expecting a failure) -gtest.cc:#: error: Expected: 1 fatal failure - Actual: 0 failures -[ FAILED ] ExpectFatalFailureTest.FailsWhenStatementReturns -[ RUN ] ExpectFatalFailureTest.FailsWhenStatementThrows -(expecting a failure) -gtest.cc:#: error: Expected: 1 fatal failure - Actual: 0 failures -[ FAILED ] ExpectFatalFailureTest.FailsWhenStatementThrows -[----------] 2 tests from TypedTest/0, where TypeParam = int -[ RUN ] TypedTest/0.Success -[ OK ] TypedTest/0.Success -[ RUN ] TypedTest/0.Failure -gtest_output_test_.cc:#: error: Value of: TypeParam() - Actual: 0 -Expected: 1 -Expected failure -[ FAILED ] TypedTest/0.Failure -[----------] 2 tests from Unsigned/TypedTestP/0, where TypeParam = unsigned char -[ RUN ] Unsigned/TypedTestP/0.Success -[ OK ] Unsigned/TypedTestP/0.Success -[ RUN ] Unsigned/TypedTestP/0.Failure -gtest_output_test_.cc:#: error: Value of: TypeParam() - Actual: \0 -Expected: 1U -Which is: 1 -Expected failure -[ FAILED ] Unsigned/TypedTestP/0.Failure -[----------] 2 tests from Unsigned/TypedTestP/1, where TypeParam = unsigned int -[ RUN ] Unsigned/TypedTestP/1.Success -[ OK ] Unsigned/TypedTestP/1.Success -[ RUN ] Unsigned/TypedTestP/1.Failure -gtest_output_test_.cc:#: error: Value of: TypeParam() - Actual: 0 -Expected: 1U -Which is: 1 -Expected failure -[ FAILED ] Unsigned/TypedTestP/1.Failure -[----------] 4 tests from ExpectFailureTest -[ RUN ] ExpectFailureTest.ExpectFatalFailure -(expecting 1 failure) -gtest.cc:#: error: Expected: 1 fatal failure - Actual: -gtest_output_test_.cc:#: Success: -Succeeded - -(expecting 1 failure) -gtest.cc:#: error: Expected: 1 fatal failure - Actual: -gtest_output_test_.cc:#: Non-fatal failure: -Failed -Expected non-fatal failure. - -(expecting 1 failure) -gtest.cc:#: error: Expected: 1 fatal failure containing "Some other fatal failure expected." - Actual: -gtest_output_test_.cc:#: Fatal failure: -Failed -Expected fatal failure. - -[ FAILED ] ExpectFailureTest.ExpectFatalFailure -[ RUN ] ExpectFailureTest.ExpectNonFatalFailure -(expecting 1 failure) -gtest.cc:#: error: Expected: 1 non-fatal failure - Actual: -gtest_output_test_.cc:#: Success: -Succeeded - -(expecting 1 failure) -gtest.cc:#: error: Expected: 1 non-fatal failure - Actual: -gtest_output_test_.cc:#: Fatal failure: -Failed -Expected fatal failure. - -(expecting 1 failure) -gtest.cc:#: error: Expected: 1 non-fatal failure containing "Some other non-fatal failure." - Actual: -gtest_output_test_.cc:#: Non-fatal failure: -Failed -Expected non-fatal failure. - -[ FAILED ] ExpectFailureTest.ExpectNonFatalFailure -[ RUN ] ExpectFailureTest.ExpectFatalFailureOnAllThreads -(expecting 1 failure) -gtest.cc:#: error: Expected: 1 fatal failure - Actual: -gtest_output_test_.cc:#: Success: -Succeeded - -(expecting 1 failure) -gtest.cc:#: error: Expected: 1 fatal failure - Actual: -gtest_output_test_.cc:#: Non-fatal failure: -Failed -Expected non-fatal failure. - -(expecting 1 failure) -gtest.cc:#: error: Expected: 1 fatal failure containing "Some other fatal failure expected." - Actual: -gtest_output_test_.cc:#: Fatal failure: -Failed -Expected fatal failure. - -[ FAILED ] ExpectFailureTest.ExpectFatalFailureOnAllThreads -[ RUN ] ExpectFailureTest.ExpectNonFatalFailureOnAllThreads -(expecting 1 failure) -gtest.cc:#: error: Expected: 1 non-fatal failure - Actual: -gtest_output_test_.cc:#: Success: -Succeeded - -(expecting 1 failure) -gtest.cc:#: error: Expected: 1 non-fatal failure - Actual: -gtest_output_test_.cc:#: Fatal failure: -Failed -Expected fatal failure. - -(expecting 1 failure) -gtest.cc:#: error: Expected: 1 non-fatal failure containing "Some other non-fatal failure." - Actual: -gtest_output_test_.cc:#: Non-fatal failure: -Failed -Expected non-fatal failure. - -[ FAILED ] ExpectFailureTest.ExpectNonFatalFailureOnAllThreads -[----------] Global test environment tear-down -BarEnvironment::TearDown() called. -gtest_output_test_.cc:#: error: Failed -Expected non-fatal failure. -FooEnvironment::TearDown() called. -gtest_output_test_.cc:#: error: Failed -Expected fatal failure. -[==========] 61 tests from 27 test cases ran. -[ PASSED ] 21 tests. -[ FAILED ] 40 tests, listed below: -[ FAILED ] FatalFailureTest.FatalFailureInSubroutine -[ FAILED ] FatalFailureTest.FatalFailureInNestedSubroutine -[ FAILED ] FatalFailureTest.NonfatalFailureInSubroutine -[ FAILED ] LoggingTest.InterleavingLoggingAndAssertions -[ FAILED ] SCOPED_TRACETest.ObeysScopes -[ FAILED ] SCOPED_TRACETest.WorksInLoop -[ FAILED ] SCOPED_TRACETest.WorksInSubroutine -[ FAILED ] SCOPED_TRACETest.CanBeNested -[ FAILED ] SCOPED_TRACETest.CanBeRepeated -[ FAILED ] NonFatalFailureInFixtureConstructorTest.FailureInConstructor -[ FAILED ] FatalFailureInFixtureConstructorTest.FailureInConstructor -[ FAILED ] NonFatalFailureInSetUpTest.FailureInSetUp -[ FAILED ] FatalFailureInSetUpTest.FailureInSetUp -[ FAILED ] ExceptionInFixtureCtorTest.ExceptionInFixtureCtor -[ FAILED ] ExceptionInSetUpTest.ExceptionInSetUp -[ FAILED ] ExceptionInTestFunctionTest.SEH -[ FAILED ] ExceptionInTestFunctionTest.CppException -[ FAILED ] ExceptionInTearDownTest.ExceptionInTearDown -[ FAILED ] MixedUpTestCaseTest.ThisShouldFail -[ FAILED ] MixedUpTestCaseTest.ThisShouldFailToo -[ FAILED ] MixedUpTestCaseWithSameTestNameTest.TheSecondTestWithThisNameShouldFail -[ FAILED ] TEST_F_before_TEST_in_same_test_case.DefinedUsingTESTAndShouldFail -[ FAILED ] TEST_before_TEST_F_in_same_test_case.DefinedUsingTEST_FAndShouldFail -[ FAILED ] ExpectNonfatalFailureTest.FailsWhenThereIsNoNonfatalFailure -[ FAILED ] ExpectNonfatalFailureTest.FailsWhenThereAreTwoNonfatalFailures -[ FAILED ] ExpectNonfatalFailureTest.FailsWhenThereIsOneFatalFailure -[ FAILED ] ExpectNonfatalFailureTest.FailsWhenStatementReturns -[ FAILED ] ExpectNonfatalFailureTest.FailsWhenStatementThrows -[ FAILED ] ExpectFatalFailureTest.FailsWhenThereIsNoFatalFailure -[ FAILED ] ExpectFatalFailureTest.FailsWhenThereAreTwoFatalFailures -[ FAILED ] ExpectFatalFailureTest.FailsWhenThereIsOneNonfatalFailure -[ FAILED ] ExpectFatalFailureTest.FailsWhenStatementReturns -[ FAILED ] ExpectFatalFailureTest.FailsWhenStatementThrows -[ FAILED ] TypedTest/0.Failure, where TypeParam = int -[ FAILED ] Unsigned/TypedTestP/0.Failure, where TypeParam = unsigned char -[ FAILED ] Unsigned/TypedTestP/1.Failure, where TypeParam = unsigned int -[ FAILED ] ExpectFailureTest.ExpectFatalFailure -[ FAILED ] ExpectFailureTest.ExpectNonFatalFailure -[ FAILED ] ExpectFailureTest.ExpectFatalFailureOnAllThreads -[ FAILED ] ExpectFailureTest.ExpectNonFatalFailureOnAllThreads - -40 FAILED TESTS - YOU HAVE 1 DISABLED TEST - -Note: Google Test filter = FatalFailureTest.*:LoggingTest.* -[==========] Running 4 tests from 2 test cases. -[----------] Global test environment set-up. -[----------] 3 tests from FatalFailureTest -[ RUN ] FatalFailureTest.FatalFailureInSubroutine -(expecting a failure that x should be 1) -gtest_output_test_.cc:#: error: Value of: x - Actual: 2 -Expected: 1 -[ FAILED ] FatalFailureTest.FatalFailureInSubroutine (? ms) -[ RUN ] FatalFailureTest.FatalFailureInNestedSubroutine -(expecting a failure that x should be 1) -gtest_output_test_.cc:#: error: Value of: x - Actual: 2 -Expected: 1 -[ FAILED ] FatalFailureTest.FatalFailureInNestedSubroutine (? ms) -[ RUN ] FatalFailureTest.NonfatalFailureInSubroutine -(expecting a failure on false) -gtest_output_test_.cc:#: error: Value of: false - Actual: false -Expected: true -[ FAILED ] FatalFailureTest.NonfatalFailureInSubroutine (? ms) -[----------] 3 tests from FatalFailureTest (? ms total) - -[----------] 1 test from LoggingTest -[ RUN ] LoggingTest.InterleavingLoggingAndAssertions -(expecting 2 failures on (3) >= (a[i])) -i == 0 -i == 1 -gtest_output_test_.cc:#: error: Expected: (3) >= (a[i]), actual: 3 vs 9 -i == 2 -i == 3 -gtest_output_test_.cc:#: error: Expected: (3) >= (a[i]), actual: 3 vs 6 -[ FAILED ] LoggingTest.InterleavingLoggingAndAssertions (? ms) -[----------] 1 test from LoggingTest (? ms total) - -[----------] Global test environment tear-down -[==========] 4 tests from 2 test cases ran. (? ms total) -[ PASSED ] 0 tests. -[ FAILED ] 4 tests, listed below: -[ FAILED ] FatalFailureTest.FatalFailureInSubroutine -[ FAILED ] FatalFailureTest.FatalFailureInNestedSubroutine -[ FAILED ] FatalFailureTest.NonfatalFailureInSubroutine -[ FAILED ] LoggingTest.InterleavingLoggingAndAssertions - - 4 FAILED TESTS - YOU HAVE 1 DISABLED TEST - -Note: Google Test filter = *DISABLED_* -[==========] Running 1 test from 1 test case. -[----------] Global test environment set-up. -[----------] 1 test from DisabledTestsWarningTest -[ RUN ] DisabledTestsWarningTest.DISABLED_AlsoRunDisabledTestsFlagSuppressesWarning -[ OK ] DisabledTestsWarningTest.DISABLED_AlsoRunDisabledTestsFlagSuppressesWarning -[----------] Global test environment tear-down -[==========] 1 test from 1 test case ran. -[ PASSED ] 1 test. -Note: Google Test filter = PassingTest.* -Note: This is test shard 1 of 2. -[==========] Running 1 test from 1 test case. -[----------] Global test environment set-up. -[----------] 1 test from PassingTest -[ RUN ] PassingTest.PassingTest2 -[ OK ] PassingTest.PassingTest2 -[----------] Global test environment tear-down -[==========] 1 test from 1 test case ran. -[ PASSED ] 1 test. - - YOU HAVE 1 DISABLED TEST - diff --git a/cpp/thirdparty/protobuf-2.3.0/gtest/test/gtest_stress_test.cc b/cpp/thirdparty/protobuf-2.3.0/gtest/test/gtest_stress_test.cc deleted file mode 100644 index 0034bb842..000000000 --- a/cpp/thirdparty/protobuf-2.3.0/gtest/test/gtest_stress_test.cc +++ /dev/null @@ -1,151 +0,0 @@ -// Copyright 2007, Google Inc. -// All rights reserved. -// -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following disclaimer -// in the documentation and/or other materials provided with the -// distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived from -// this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -// -// Author: wan@google.com (Zhanyong Wan) - -// Tests that SCOPED_TRACE() and various Google Test assertions can be -// used in a large number of threads concurrently. - -#include -#include - -// We must define this macro in order to #include -// gtest-internal-inl.h. This is how Google Test prevents a user from -// accidentally depending on its internal implementation. -#define GTEST_IMPLEMENTATION_ 1 -#include "src/gtest-internal-inl.h" -#undef GTEST_IMPLEMENTATION_ - -namespace testing { -namespace { - -using internal::String; -using internal::TestPropertyKeyIs; -using internal::Vector; - -// How many threads to create? -const int kThreadCount = 50; - -String IdToKey(int id, const char* suffix) { - Message key; - key << "key_" << id << "_" << suffix; - return key.GetString(); -} - -String IdToString(int id) { - Message id_message; - id_message << id; - return id_message.GetString(); -} - -void ExpectKeyAndValueWereRecordedForId(const Vector& properties, - int id, - const char* suffix) { - TestPropertyKeyIs matches_key(IdToKey(id, suffix).c_str()); - const TestProperty* property = properties.FindIf(matches_key); - ASSERT_TRUE(property != NULL) - << "expecting " << suffix << " value for id " << id; - EXPECT_STREQ(IdToString(id).c_str(), property->value()); -} - -// Calls a large number of Google Test assertions, where exactly one of them -// will fail. -void ManyAsserts(int id) { - ::std::cout << "Thread #" << id << " running...\n"; - - SCOPED_TRACE(Message() << "Thread #" << id); - - for (int i = 0; i < kThreadCount; i++) { - SCOPED_TRACE(Message() << "Iteration #" << i); - - // A bunch of assertions that should succeed. - EXPECT_TRUE(true); - ASSERT_FALSE(false) << "This shouldn't fail."; - EXPECT_STREQ("a", "a"); - ASSERT_LE(5, 6); - EXPECT_EQ(i, i) << "This shouldn't fail."; - - // RecordProperty() should interact safely with other threads as well. - // The shared_key forces property updates. - Test::RecordProperty(IdToKey(id, "string").c_str(), IdToString(id).c_str()); - Test::RecordProperty(IdToKey(id, "int").c_str(), id); - Test::RecordProperty("shared_key", IdToString(id).c_str()); - - // This assertion should fail kThreadCount times per thread. It - // is for testing whether Google Test can handle failed assertions in a - // multi-threaded context. - EXPECT_LT(i, 0) << "This should always fail."; - } -} - -// Tests using SCOPED_TRACE() and Google Test assertions in many threads -// concurrently. -TEST(StressTest, CanUseScopedTraceAndAssertionsInManyThreads) { - // TODO(wan): when Google Test is made thread-safe, run - // ManyAsserts() in many threads here. -} - -TEST(NoFatalFailureTest, ExpectNoFatalFailureIgnoresFailuresInOtherThreads) { - // TODO(mheule@google.com): Test this works correctly when Google - // Test is made thread-safe. -} - -TEST(NoFatalFailureTest, AssertNoFatalFailureIgnoresFailuresInOtherThreads) { - // TODO(mheule@google.com): Test this works correctly when Google - // Test is made thread-safe. -} - -TEST(FatalFailureTest, ExpectFatalFailureIgnoresFailuresInOtherThreads) { - // TODO(mheule@google.com): Test this works correctly when Google - // Test is made thread-safe. -} - -TEST(FatalFailureOnAllThreadsTest, ExpectFatalFailureOnAllThreads) { - // TODO(wan@google.com): Test this works correctly when Google Test - // is made thread-safe. -} - -TEST(NonFatalFailureTest, ExpectNonFatalFailureIgnoresFailuresInOtherThreads) { - // TODO(mheule@google.com): Test this works correctly when Google - // Test is made thread-safe. -} - -TEST(NonFatalFailureOnAllThreadsTest, ExpectNonFatalFailureOnAllThreads) { - // TODO(wan@google.com): Test this works correctly when Google Test - // is made thread-safe. -} - -} // namespace -} // namespace testing - -int main(int argc, char **argv) { - testing::InitGoogleTest(&argc, argv); - - return RUN_ALL_TESTS(); -} diff --git a/cpp/thirdparty/protobuf-2.3.0/gtest/xcode/Scripts/runtests.sh b/cpp/thirdparty/protobuf-2.3.0/gtest/xcode/Scripts/runtests.sh deleted file mode 100644 index 9d23a7721..000000000 --- a/cpp/thirdparty/protobuf-2.3.0/gtest/xcode/Scripts/runtests.sh +++ /dev/null @@ -1,36 +0,0 @@ -#!/bin/bash - -# Executes the samples and tests for the Google Test Framework. - -# Help the dynamic linker find the path to the libraries. -export DYLD_FRAMEWORK_PATH=$BUILT_PRODUCTS_DIR -export DYLD_LIBRARY_PATH=$BUILT_PRODUCTS_DIR - -# Create some executables. -test_executables=("$BUILT_PRODUCTS_DIR/gtest_unittest-framework" - "$BUILT_PRODUCTS_DIR/gtest_unittest" - "$BUILT_PRODUCTS_DIR/sample1_unittest-framework" - "$BUILT_PRODUCTS_DIR/sample1_unittest-static") - -# Now execute each one in turn keeping track of how many succeeded and failed. -succeeded=0 -failed=0 -failed_list=() -for test in ${test_executables[*]}; do - "$test" - result=$? - if [ $result -eq 0 ]; then - succeeded=$(( $succeeded + 1 )) - else - failed=$(( failed + 1 )) - failed_list="$failed_list $test" - fi -done - -# Report the successes and failures to the console. -echo "Tests complete with $succeeded successes and $failed failures." -if [ $failed -ne 0 ]; then - echo "The following tests failed:" - echo $failed_list -fi -exit $failed diff --git a/cpp/thirdparty/protobuf-2.3.0/java/src/main/java/com/google/protobuf/ByteString.java b/cpp/thirdparty/protobuf-2.3.0/java/src/main/java/com/google/protobuf/ByteString.java deleted file mode 100644 index 5fade03ad..000000000 --- a/cpp/thirdparty/protobuf-2.3.0/java/src/main/java/com/google/protobuf/ByteString.java +++ /dev/null @@ -1,391 +0,0 @@ -// Protocol Buffers - Google's data interchange format -// Copyright 2008 Google Inc. All rights reserved. -// http://code.google.com/p/protobuf/ -// -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following disclaimer -// in the documentation and/or other materials provided with the -// distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived from -// this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -package com.google.protobuf; - -import java.io.InputStream; -import java.io.ByteArrayInputStream; -import java.io.ByteArrayOutputStream; -import java.io.FilterOutputStream; -import java.io.UnsupportedEncodingException; -import java.nio.ByteBuffer; -import java.util.List; - -/** - * Immutable array of bytes. - * - * @author crazybob@google.com Bob Lee - * @author kenton@google.com Kenton Varda - */ -public final class ByteString { - private final byte[] bytes; - - private ByteString(final byte[] bytes) { - this.bytes = bytes; - } - - /** - * Gets the byte at the given index. - * - * @throws ArrayIndexOutOfBoundsException {@code index} is < 0 or >= size - */ - public byte byteAt(final int index) { - return bytes[index]; - } - - /** - * Gets the number of bytes. - */ - public int size() { - return bytes.length; - } - - /** - * Returns {@code true} if the size is {@code 0}, {@code false} otherwise. - */ - public boolean isEmpty() { - return bytes.length == 0; - } - - // ================================================================= - // byte[] -> ByteString - - /** - * Empty ByteString. - */ - public static final ByteString EMPTY = new ByteString(new byte[0]); - - /** - * Copies the given bytes into a {@code ByteString}. - */ - public static ByteString copyFrom(final byte[] bytes, final int offset, - final int size) { - final byte[] copy = new byte[size]; - System.arraycopy(bytes, offset, copy, 0, size); - return new ByteString(copy); - } - - /** - * Copies the given bytes into a {@code ByteString}. - */ - public static ByteString copyFrom(final byte[] bytes) { - return copyFrom(bytes, 0, bytes.length); - } - - /** - * Copies {@code size} bytes from a {@code java.nio.ByteBuffer} into - * a {@code ByteString}. - */ - public static ByteString copyFrom(final ByteBuffer bytes, final int size) { - final byte[] copy = new byte[size]; - bytes.get(copy); - return new ByteString(copy); - } - - /** - * Copies the remaining bytes from a {@code java.nio.ByteBuffer} into - * a {@code ByteString}. - */ - public static ByteString copyFrom(final ByteBuffer bytes) { - return copyFrom(bytes, bytes.remaining()); - } - - /** - * Encodes {@code text} into a sequence of bytes using the named charset - * and returns the result as a {@code ByteString}. - */ - public static ByteString copyFrom(final String text, final String charsetName) - throws UnsupportedEncodingException { - return new ByteString(text.getBytes(charsetName)); - } - - /** - * Encodes {@code text} into a sequence of UTF-8 bytes and returns the - * result as a {@code ByteString}. - */ - public static ByteString copyFromUtf8(final String text) { - try { - return new ByteString(text.getBytes("UTF-8")); - } catch (UnsupportedEncodingException e) { - throw new RuntimeException("UTF-8 not supported?", e); - } - } - - /** - * Concatenates all byte strings in the list and returns the result. - * - *

The returned {@code ByteString} is not necessarily a unique object. - * If the list is empty, the returned object is the singleton empty - * {@code ByteString}. If the list has only one element, that - * {@code ByteString} will be returned without copying. - */ - public static ByteString copyFrom(List list) { - if (list.size() == 0) { - return EMPTY; - } else if (list.size() == 1) { - return list.get(0); - } - - int size = 0; - for (ByteString str : list) { - size += str.size(); - } - byte[] bytes = new byte[size]; - int pos = 0; - for (ByteString str : list) { - System.arraycopy(str.bytes, 0, bytes, pos, str.size()); - pos += str.size(); - } - return new ByteString(bytes); - } - - // ================================================================= - // ByteString -> byte[] - - /** - * Copies bytes into a buffer at the given offset. - * - * @param target buffer to copy into - * @param offset in the target buffer - */ - public void copyTo(final byte[] target, final int offset) { - System.arraycopy(bytes, 0, target, offset, bytes.length); - } - - /** - * Copies bytes into a buffer. - * - * @param target buffer to copy into - * @param sourceOffset offset within these bytes - * @param targetOffset offset within the target buffer - * @param size number of bytes to copy - */ - public void copyTo(final byte[] target, final int sourceOffset, - final int targetOffset, - final int size) { - System.arraycopy(bytes, sourceOffset, target, targetOffset, size); - } - - /** - * Copies bytes to a {@code byte[]}. - */ - public byte[] toByteArray() { - final int size = bytes.length; - final byte[] copy = new byte[size]; - System.arraycopy(bytes, 0, copy, 0, size); - return copy; - } - - /** - * Constructs a new read-only {@code java.nio.ByteBuffer} with the - * same backing byte array. - */ - public ByteBuffer asReadOnlyByteBuffer() { - final ByteBuffer byteBuffer = ByteBuffer.wrap(bytes); - return byteBuffer.asReadOnlyBuffer(); - } - - /** - * Constructs a new {@code String} by decoding the bytes using the - * specified charset. - */ - public String toString(final String charsetName) - throws UnsupportedEncodingException { - return new String(bytes, charsetName); - } - - /** - * Constructs a new {@code String} by decoding the bytes as UTF-8. - */ - public String toStringUtf8() { - try { - return new String(bytes, "UTF-8"); - } catch (UnsupportedEncodingException e) { - throw new RuntimeException("UTF-8 not supported?", e); - } - } - - // ================================================================= - // equals() and hashCode() - - @Override - public boolean equals(final Object o) { - if (o == this) { - return true; - } - - if (!(o instanceof ByteString)) { - return false; - } - - final ByteString other = (ByteString) o; - final int size = bytes.length; - if (size != other.bytes.length) { - return false; - } - - final byte[] thisBytes = bytes; - final byte[] otherBytes = other.bytes; - for (int i = 0; i < size; i++) { - if (thisBytes[i] != otherBytes[i]) { - return false; - } - } - - return true; - } - - private volatile int hash = 0; - - @Override - public int hashCode() { - int h = hash; - - if (h == 0) { - final byte[] thisBytes = bytes; - final int size = bytes.length; - - h = size; - for (int i = 0; i < size; i++) { - h = h * 31 + thisBytes[i]; - } - if (h == 0) { - h = 1; - } - - hash = h; - } - - return h; - } - - // ================================================================= - // Input stream - - /** - * Creates an {@code InputStream} which can be used to read the bytes. - */ - public InputStream newInput() { - return new ByteArrayInputStream(bytes); - } - - /** - * Creates a {@link CodedInputStream} which can be used to read the bytes. - * Using this is more efficient than creating a {@link CodedInputStream} - * wrapping the result of {@link #newInput()}. - */ - public CodedInputStream newCodedInput() { - // We trust CodedInputStream not to modify the bytes, or to give anyone - // else access to them. - return CodedInputStream.newInstance(bytes); - } - - // ================================================================= - // Output stream - - /** - * Creates a new {@link Output} with the given initial capacity. - */ - public static Output newOutput(final int initialCapacity) { - return new Output(new ByteArrayOutputStream(initialCapacity)); - } - - /** - * Creates a new {@link Output}. - */ - public static Output newOutput() { - return newOutput(32); - } - - /** - * Outputs to a {@code ByteString} instance. Call {@link #toByteString()} to - * create the {@code ByteString} instance. - */ - public static final class Output extends FilterOutputStream { - private final ByteArrayOutputStream bout; - - /** - * Constructs a new output with the given initial capacity. - */ - private Output(final ByteArrayOutputStream bout) { - super(bout); - this.bout = bout; - } - - /** - * Creates a {@code ByteString} instance from this {@code Output}. - */ - public ByteString toByteString() { - final byte[] byteArray = bout.toByteArray(); - return new ByteString(byteArray); - } - } - - /** - * Constructs a new ByteString builder, which allows you to efficiently - * construct a {@code ByteString} by writing to a {@link CodedOutputStream}. - * Using this is much more efficient than calling {@code newOutput()} and - * wrapping that in a {@code CodedOutputStream}. - * - *

This is package-private because it's a somewhat confusing interface. - * Users can call {@link Message#toByteString()} instead of calling this - * directly. - * - * @param size The target byte size of the {@code ByteString}. You must - * write exactly this many bytes before building the result. - */ - static CodedBuilder newCodedBuilder(final int size) { - return new CodedBuilder(size); - } - - /** See {@link ByteString#newCodedBuilder(int)}. */ - static final class CodedBuilder { - private final CodedOutputStream output; - private final byte[] buffer; - - private CodedBuilder(final int size) { - buffer = new byte[size]; - output = CodedOutputStream.newInstance(buffer); - } - - public ByteString build() { - output.checkNoSpaceLeft(); - - // We can be confident that the CodedOutputStream will not modify the - // underlying bytes anymore because it already wrote all of them. So, - // no need to make a copy. - return new ByteString(buffer); - } - - public CodedOutputStream getCodedOutput() { - return output; - } - } -} diff --git a/cpp/thirdparty/protobuf-2.3.0/java/src/main/java/com/google/protobuf/GeneratedMessageLite.java b/cpp/thirdparty/protobuf-2.3.0/java/src/main/java/com/google/protobuf/GeneratedMessageLite.java deleted file mode 100644 index 9cdd4e94d..000000000 --- a/cpp/thirdparty/protobuf-2.3.0/java/src/main/java/com/google/protobuf/GeneratedMessageLite.java +++ /dev/null @@ -1,566 +0,0 @@ -// Protocol Buffers - Google's data interchange format -// Copyright 2008 Google Inc. All rights reserved. -// http://code.google.com/p/protobuf/ -// -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following disclaimer -// in the documentation and/or other materials provided with the -// distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived from -// this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -package com.google.protobuf; - -import java.io.IOException; -import java.util.Collections; -import java.util.Iterator; -import java.util.List; -import java.util.Map; - -/** - * Lite version of {@link GeneratedMessage}. - * - * @author kenton@google.com Kenton Varda - */ -public abstract class GeneratedMessageLite extends AbstractMessageLite { - protected GeneratedMessageLite() {} - - @SuppressWarnings("unchecked") - public abstract static class Builder - extends AbstractMessageLite.Builder { - protected Builder() {} - - // This is implemented here only to work around an apparent bug in the - // Java compiler and/or build system. See bug #1898463. The mere presence - // of this dummy clone() implementation makes it go away. - @Override - public BuilderType clone() { - throw new UnsupportedOperationException( - "This is supposed to be overridden by subclasses."); - } - - /** All subclasses implement this. */ - public abstract BuilderType mergeFrom(MessageType message); - - // Defined here for return type covariance. - public abstract MessageType getDefaultInstanceForType(); - - /** - * Get the message being built. We don't just pass this to the - * constructor because it becomes null when build() is called. - */ - protected abstract MessageType internalGetResult(); - - /** - * Called by subclasses to parse an unknown field. - * @return {@code true} unless the tag is an end-group tag. - */ - protected boolean parseUnknownField( - final CodedInputStream input, - final ExtensionRegistryLite extensionRegistry, - final int tag) throws IOException { - return input.skipField(tag); - } - } - - // ================================================================= - // Extensions-related stuff - - /** - * Lite equivalent of {@link GeneratedMessage.ExtendableMessage}. - */ - public abstract static class ExtendableMessage< - MessageType extends ExtendableMessage> - extends GeneratedMessageLite { - protected ExtendableMessage() {} - private final FieldSet extensions = - FieldSet.newFieldSet(); - - private void verifyExtensionContainingType( - final GeneratedExtension extension) { - if (extension.getContainingTypeDefaultInstance() != - getDefaultInstanceForType()) { - // This can only happen if someone uses unchecked operations. - throw new IllegalArgumentException( - "This extension is for a different message type. Please make " + - "sure that you are not suppressing any generics type warnings."); - } - } - - /** Check if a singular extension is present. */ - public final boolean hasExtension( - final GeneratedExtension extension) { - verifyExtensionContainingType(extension); - return extensions.hasField(extension.descriptor); - } - - /** Get the number of elements in a repeated extension. */ - public final int getExtensionCount( - final GeneratedExtension> extension) { - verifyExtensionContainingType(extension); - return extensions.getRepeatedFieldCount(extension.descriptor); - } - - /** Get the value of an extension. */ - @SuppressWarnings("unchecked") - public final Type getExtension( - final GeneratedExtension extension) { - verifyExtensionContainingType(extension); - final Object value = extensions.getField(extension.descriptor); - if (value == null) { - return extension.defaultValue; - } else { - return (Type) value; - } - } - - /** Get one element of a repeated extension. */ - @SuppressWarnings("unchecked") - public final Type getExtension( - final GeneratedExtension> extension, - final int index) { - verifyExtensionContainingType(extension); - return (Type) extensions.getRepeatedField(extension.descriptor, index); - } - - /** Called by subclasses to check if all extensions are initialized. */ - protected boolean extensionsAreInitialized() { - return extensions.isInitialized(); - } - - /** - * Used by subclasses to serialize extensions. Extension ranges may be - * interleaved with field numbers, but we must write them in canonical - * (sorted by field number) order. ExtensionWriter helps us write - * individual ranges of extensions at once. - */ - protected class ExtensionWriter { - // Imagine how much simpler this code would be if Java iterators had - // a way to get the next element without advancing the iterator. - - private final Iterator> iter = - extensions.iterator(); - private Map.Entry next; - private final boolean messageSetWireFormat; - - private ExtensionWriter(boolean messageSetWireFormat) { - if (iter.hasNext()) { - next = iter.next(); - } - this.messageSetWireFormat = messageSetWireFormat; - } - - public void writeUntil(final int end, final CodedOutputStream output) - throws IOException { - while (next != null && next.getKey().getNumber() < end) { - ExtensionDescriptor extension = next.getKey(); - if (messageSetWireFormat && extension.getLiteJavaType() == - WireFormat.JavaType.MESSAGE && - !extension.isRepeated()) { - output.writeMessageSetExtension(extension.getNumber(), - (MessageLite) next.getValue()); - } else { - FieldSet.writeField(extension, next.getValue(), output); - } - if (iter.hasNext()) { - next = iter.next(); - } else { - next = null; - } - } - } - } - - protected ExtensionWriter newExtensionWriter() { - return new ExtensionWriter(false); - } - protected ExtensionWriter newMessageSetExtensionWriter() { - return new ExtensionWriter(true); - } - - /** Called by subclasses to compute the size of extensions. */ - protected int extensionsSerializedSize() { - return extensions.getSerializedSize(); - } - protected int extensionsSerializedSizeAsMessageSet() { - return extensions.getMessageSetSerializedSize(); - } - } - - /** - * Lite equivalent of {@link GeneratedMessage.ExtendableBuilder}. - */ - @SuppressWarnings("unchecked") - public abstract static class ExtendableBuilder< - MessageType extends ExtendableMessage, - BuilderType extends ExtendableBuilder> - extends Builder { - protected ExtendableBuilder() {} - - // This is implemented here only to work around an apparent bug in the - // Java compiler and/or build system. See bug #1898463. The mere presence - // of this dummy clone() implementation makes it go away. - @Override - public BuilderType clone() { - throw new UnsupportedOperationException( - "This is supposed to be overridden by subclasses."); - } - - @Override - protected abstract MessageType internalGetResult(); - - /** Check if a singular extension is present. */ - public final boolean hasExtension( - final GeneratedExtension extension) { - return internalGetResult().hasExtension(extension); - } - - /** Get the number of elements in a repeated extension. */ - public final int getExtensionCount( - final GeneratedExtension> extension) { - return internalGetResult().getExtensionCount(extension); - } - - /** Get the value of an extension. */ - public final Type getExtension( - final GeneratedExtension extension) { - return internalGetResult().getExtension(extension); - } - - /** Get one element of a repeated extension. */ - public final Type getExtension( - final GeneratedExtension> extension, - final int index) { - return internalGetResult().getExtension(extension, index); - } - - /** Set the value of an extension. */ - public final BuilderType setExtension( - final GeneratedExtension extension, - final Type value) { - final ExtendableMessage message = internalGetResult(); - message.verifyExtensionContainingType(extension); - message.extensions.setField(extension.descriptor, value); - return (BuilderType) this; - } - - /** Set the value of one element of a repeated extension. */ - public final BuilderType setExtension( - final GeneratedExtension> extension, - final int index, final Type value) { - final ExtendableMessage message = internalGetResult(); - message.verifyExtensionContainingType(extension); - message.extensions.setRepeatedField(extension.descriptor, index, value); - return (BuilderType) this; - } - - /** Append a value to a repeated extension. */ - public final BuilderType addExtension( - final GeneratedExtension> extension, - final Type value) { - final ExtendableMessage message = internalGetResult(); - message.verifyExtensionContainingType(extension); - message.extensions.addRepeatedField(extension.descriptor, value); - return (BuilderType) this; - } - - /** Clear an extension. */ - public final BuilderType clearExtension( - final GeneratedExtension extension) { - final ExtendableMessage message = internalGetResult(); - message.verifyExtensionContainingType(extension); - message.extensions.clearField(extension.descriptor); - return (BuilderType) this; - } - - /** - * Called by subclasses to parse an unknown field or an extension. - * @return {@code true} unless the tag is an end-group tag. - */ - @Override - protected boolean parseUnknownField( - final CodedInputStream input, - final ExtensionRegistryLite extensionRegistry, - final int tag) throws IOException { - final FieldSet extensions = - ((ExtendableMessage) internalGetResult()).extensions; - - final int wireType = WireFormat.getTagWireType(tag); - final int fieldNumber = WireFormat.getTagFieldNumber(tag); - - final GeneratedExtension extension = - extensionRegistry.findLiteExtensionByNumber( - getDefaultInstanceForType(), fieldNumber); - - boolean unknown = false; - boolean packed = false; - if (extension == null) { - unknown = true; // Unknown field. - } else if (wireType == FieldSet.getWireFormatForFieldType( - extension.descriptor.getLiteType(), - false /* isPacked */)) { - packed = false; // Normal, unpacked value. - } else if (extension.descriptor.isRepeated && - extension.descriptor.type.isPackable() && - wireType == FieldSet.getWireFormatForFieldType( - extension.descriptor.getLiteType(), - true /* isPacked */)) { - packed = true; // Packed value. - } else { - unknown = true; // Wrong wire type. - } - - if (unknown) { // Unknown field or wrong wire type. Skip. - return input.skipField(tag); - } - - if (packed) { - final int length = input.readRawVarint32(); - final int limit = input.pushLimit(length); - if (extension.descriptor.getLiteType() == WireFormat.FieldType.ENUM) { - while (input.getBytesUntilLimit() > 0) { - final int rawValue = input.readEnum(); - final Object value = - extension.descriptor.getEnumType().findValueByNumber(rawValue); - if (value == null) { - // If the number isn't recognized as a valid value for this - // enum, drop it (don't even add it to unknownFields). - return true; - } - extensions.addRepeatedField(extension.descriptor, value); - } - } else { - while (input.getBytesUntilLimit() > 0) { - final Object value = - FieldSet.readPrimitiveField(input, - extension.descriptor.getLiteType()); - extensions.addRepeatedField(extension.descriptor, value); - } - } - input.popLimit(limit); - } else { - final Object value; - switch (extension.descriptor.getLiteJavaType()) { - case MESSAGE: { - MessageLite.Builder subBuilder = null; - if (!extension.descriptor.isRepeated()) { - MessageLite existingValue = - (MessageLite) extensions.getField(extension.descriptor); - if (existingValue != null) { - subBuilder = existingValue.toBuilder(); - } - } - if (subBuilder == null) { - subBuilder = extension.messageDefaultInstance.newBuilderForType(); - } - if (extension.descriptor.getLiteType() == - WireFormat.FieldType.GROUP) { - input.readGroup(extension.getNumber(), - subBuilder, extensionRegistry); - } else { - input.readMessage(subBuilder, extensionRegistry); - } - value = subBuilder.build(); - break; - } - case ENUM: - final int rawValue = input.readEnum(); - value = extension.descriptor.getEnumType() - .findValueByNumber(rawValue); - // If the number isn't recognized as a valid value for this enum, - // drop it. - if (value == null) { - return true; - } - break; - default: - value = FieldSet.readPrimitiveField(input, - extension.descriptor.getLiteType()); - break; - } - - if (extension.descriptor.isRepeated()) { - extensions.addRepeatedField(extension.descriptor, value); - } else { - extensions.setField(extension.descriptor, value); - } - } - - return true; - } - - protected final void mergeExtensionFields(final MessageType other) { - ((ExtendableMessage) internalGetResult()).extensions.mergeFrom( - ((ExtendableMessage) other).extensions); - } - } - - // ----------------------------------------------------------------- - - /** For use by generated code only. */ - public static - GeneratedExtension - newGeneratedExtension() { - return new GeneratedExtension(); - } - - private static final class ExtensionDescriptor - implements FieldSet.FieldDescriptorLite< - ExtensionDescriptor> { - private ExtensionDescriptor( - final Internal.EnumLiteMap enumTypeMap, - final int number, - final WireFormat.FieldType type, - final boolean isRepeated, - final boolean isPacked) { - this.enumTypeMap = enumTypeMap; - this.number = number; - this.type = type; - this.isRepeated = isRepeated; - this.isPacked = isPacked; - } - - private final Internal.EnumLiteMap enumTypeMap; - private final int number; - private final WireFormat.FieldType type; - private final boolean isRepeated; - private final boolean isPacked; - - public int getNumber() { - return number; - } - - public WireFormat.FieldType getLiteType() { - return type; - } - - public WireFormat.JavaType getLiteJavaType() { - return type.getJavaType(); - } - - public boolean isRepeated() { - return isRepeated; - } - - public boolean isPacked() { - return isPacked; - } - - public Internal.EnumLiteMap getEnumType() { - return enumTypeMap; - } - - @SuppressWarnings("unchecked") - public MessageLite.Builder internalMergeFrom( - MessageLite.Builder to, MessageLite from) { - return ((Builder) to).mergeFrom((GeneratedMessageLite) from); - } - - public int compareTo(ExtensionDescriptor other) { - return number - other.number; - } - } - - /** - * Lite equivalent to {@link GeneratedMessage.GeneratedExtension}. - * - * Users should ignore the contents of this class and only use objects of - * this type as parameters to extension accessors and ExtensionRegistry.add(). - */ - public static final class GeneratedExtension< - ContainingType extends MessageLite, Type> { - // We can't always initialize a GeneratedExtension when we first construct - // it due to initialization order difficulties (namely, the default - // instances may not have been constructed yet). So, we construct an - // uninitialized GeneratedExtension once, then call internalInit() on it - // later. Generated code will always call internalInit() on all extensions - // as part of the static initialization code, and internalInit() throws an - // exception if called more than once, so this method is useless to users. - private GeneratedExtension() {} - - private void internalInit( - final ContainingType containingTypeDefaultInstance, - final Type defaultValue, - final MessageLite messageDefaultInstance, - final ExtensionDescriptor descriptor) { - this.containingTypeDefaultInstance = containingTypeDefaultInstance; - this.defaultValue = defaultValue; - this.messageDefaultInstance = messageDefaultInstance; - this.descriptor = descriptor; - } - - /** For use by generated code only. */ - public void internalInitSingular( - final ContainingType containingTypeDefaultInstance, - final Type defaultValue, - final MessageLite messageDefaultInstance, - final Internal.EnumLiteMap enumTypeMap, - final int number, - final WireFormat.FieldType type) { - internalInit( - containingTypeDefaultInstance, defaultValue, messageDefaultInstance, - new ExtensionDescriptor(enumTypeMap, number, type, - false /* isRepeated */, false /* isPacked */)); - } - - /** For use by generated code only. */ - public void internalInitRepeated( - final ContainingType containingTypeDefaultInstance, - final MessageLite messageDefaultInstance, - final Internal.EnumLiteMap enumTypeMap, - final int number, - final WireFormat.FieldType type, - final boolean isPacked) { - internalInit( - containingTypeDefaultInstance, (Type) Collections.emptyList(), - messageDefaultInstance, - new ExtensionDescriptor( - enumTypeMap, number, type, true /* isRepeated */, isPacked)); - } - - private ContainingType containingTypeDefaultInstance; - private Type defaultValue; - private MessageLite messageDefaultInstance; - private ExtensionDescriptor descriptor; - - /** - * Default instance of the type being extended, used to identify that type. - */ - public ContainingType getContainingTypeDefaultInstance() { - return containingTypeDefaultInstance; - } - - /** Get the field number. */ - public int getNumber() { - return descriptor.getNumber(); - } - - /** - * If the extension is an embedded message, this is the default instance of - * that type. - */ - public MessageLite getMessageDefaultInstance() { - return messageDefaultInstance; - } - } -} diff --git a/cpp/thirdparty/protobuf-2.3.0/m4/stl_hash.m4 b/cpp/thirdparty/protobuf-2.3.0/m4/stl_hash.m4 deleted file mode 100644 index 08813c995..000000000 --- a/cpp/thirdparty/protobuf-2.3.0/m4/stl_hash.m4 +++ /dev/null @@ -1,60 +0,0 @@ -# We check two things: where the include file is for hash_map, and -# what namespace hash_map lives in within that include file. We -# include AC_TRY_COMPILE for all the combinations we've seen in the -# wild. We define one of HAVE_HASH_MAP or HAVE_EXT_HASH_MAP depending -# on location, and HASH_NAMESPACE to be the namespace hash_map is -# defined in. -# -# Ideally we'd use AC_CACHE_CHECK, but that only lets us store one value -# at a time, and we need to store two (filename and namespace). -# prints messages itself, so we have to do the message-printing ourselves -# via AC_MSG_CHECKING + AC_MSG_RESULT. (TODO(csilvers): can we cache?) - -AC_DEFUN([AC_CXX_STL_HASH], - [AC_MSG_CHECKING(the location of hash_map) - AC_LANG_SAVE - AC_LANG_CPLUSPLUS - ac_cv_cxx_hash_map_header="" - ac_cv_cxx_hash_map_class="" - for location in [tr1/unordered_map ext/hash_map hash_map]; do - for namespace in [std::tr1 __gnu_cxx "" std stdext]; do - for name in [unordered_map hash_map]; do - - if test -z "$ac_cv_cxx_hash_map_header"; then - - # On OSX 1.5 / GCC 4.0.1 (the standard compiler on that platform), - # calling find() on a const unordered_map does not compile. So, we - # include a call to find() in our test to detect this broken - # implementation and avoid using it. Note that ext/hash_map works - # fine on this platform, so we'll end up using that. - AC_TRY_COMPILE([#include <$location>], - [const ${namespace}::$name t; - t.find(1);], - [ac_cv_cxx_hash_map_header="<$location>"; - ac_cv_cxx_hash_namespace="$namespace"; - ac_cv_cxx_hash_map_class="$name";]) - fi - done - done - done - ac_cv_cxx_hash_set_header=`echo "$ac_cv_cxx_hash_map_header" | sed s/map/set/`; - ac_cv_cxx_hash_set_class=`echo "$ac_cv_cxx_hash_map_class" | sed s/map/set/`; - if test -n "$ac_cv_cxx_hash_map_header"; then - AC_DEFINE(HAVE_HASH_MAP, 1, [define if the compiler has hash_map]) - AC_DEFINE(HAVE_HASH_SET, 1, [define if the compiler has hash_set]) - AC_DEFINE_UNQUOTED(HASH_MAP_H,$ac_cv_cxx_hash_map_header, - [the location of ]) - AC_DEFINE_UNQUOTED(HASH_SET_H,$ac_cv_cxx_hash_set_header, - [the location of ]) - AC_DEFINE_UNQUOTED(HASH_MAP_CLASS,$ac_cv_cxx_hash_map_class, - [the name of ]) - AC_DEFINE_UNQUOTED(HASH_SET_CLASS,$ac_cv_cxx_hash_set_class, - [the name of ]) - AC_DEFINE_UNQUOTED(HASH_NAMESPACE,$ac_cv_cxx_hash_namespace, - [the namespace of hash_map/hash_set]) - AC_MSG_RESULT([$ac_cv_cxx_hash_map_header]) - else - AC_MSG_RESULT() - AC_MSG_WARN([could not find an STL hash_map]) - fi -]) diff --git a/cpp/thirdparty/protobuf-2.3.0/python/google/protobuf/internal/descriptor_test.py b/cpp/thirdparty/protobuf-2.3.0/python/google/protobuf/internal/descriptor_test.py deleted file mode 100755 index 05c274524..000000000 --- a/cpp/thirdparty/protobuf-2.3.0/python/google/protobuf/internal/descriptor_test.py +++ /dev/null @@ -1,334 +0,0 @@ -#! /usr/bin/python -# -# Protocol Buffers - Google's data interchange format -# Copyright 2008 Google Inc. All rights reserved. -# http://code.google.com/p/protobuf/ -# -# Redistribution and use in source and binary forms, with or without -# modification, are permitted provided that the following conditions are -# met: -# -# * Redistributions of source code must retain the above copyright -# notice, this list of conditions and the following disclaimer. -# * Redistributions in binary form must reproduce the above -# copyright notice, this list of conditions and the following disclaimer -# in the documentation and/or other materials provided with the -# distribution. -# * Neither the name of Google Inc. nor the names of its -# contributors may be used to endorse or promote products derived from -# this software without specific prior written permission. -# -# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -"""Unittest for google.protobuf.internal.descriptor.""" - -__author__ = 'robinson@google.com (Will Robinson)' - -import unittest -from google.protobuf import unittest_import_pb2 -from google.protobuf import unittest_pb2 -from google.protobuf import descriptor_pb2 -from google.protobuf import descriptor -from google.protobuf import text_format - - -TEST_EMPTY_MESSAGE_DESCRIPTOR_ASCII = """ -name: 'TestEmptyMessage' -""" - - -class DescriptorTest(unittest.TestCase): - - def setUp(self): - self.my_file = descriptor.FileDescriptor( - name='some/filename/some.proto', - package='protobuf_unittest' - ) - self.my_enum = descriptor.EnumDescriptor( - name='ForeignEnum', - full_name='protobuf_unittest.ForeignEnum', - filename=None, - file=self.my_file, - values=[ - descriptor.EnumValueDescriptor(name='FOREIGN_FOO', index=0, number=4), - descriptor.EnumValueDescriptor(name='FOREIGN_BAR', index=1, number=5), - descriptor.EnumValueDescriptor(name='FOREIGN_BAZ', index=2, number=6), - ]) - self.my_message = descriptor.Descriptor( - name='NestedMessage', - full_name='protobuf_unittest.TestAllTypes.NestedMessage', - filename=None, - file=self.my_file, - containing_type=None, - fields=[ - descriptor.FieldDescriptor( - name='bb', - full_name='protobuf_unittest.TestAllTypes.NestedMessage.bb', - index=0, number=1, - type=5, cpp_type=1, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None), - ], - nested_types=[], - enum_types=[ - self.my_enum, - ], - extensions=[]) - self.my_method = descriptor.MethodDescriptor( - name='Bar', - full_name='protobuf_unittest.TestService.Bar', - index=0, - containing_service=None, - input_type=None, - output_type=None) - self.my_service = descriptor.ServiceDescriptor( - name='TestServiceWithOptions', - full_name='protobuf_unittest.TestServiceWithOptions', - file=self.my_file, - index=0, - methods=[ - self.my_method - ]) - - def testEnumFixups(self): - self.assertEqual(self.my_enum, self.my_enum.values[0].type) - - def testContainingTypeFixups(self): - self.assertEqual(self.my_message, self.my_message.fields[0].containing_type) - self.assertEqual(self.my_message, self.my_enum.containing_type) - - def testContainingServiceFixups(self): - self.assertEqual(self.my_service, self.my_method.containing_service) - - def testGetOptions(self): - self.assertEqual(self.my_enum.GetOptions(), - descriptor_pb2.EnumOptions()) - self.assertEqual(self.my_enum.values[0].GetOptions(), - descriptor_pb2.EnumValueOptions()) - self.assertEqual(self.my_message.GetOptions(), - descriptor_pb2.MessageOptions()) - self.assertEqual(self.my_message.fields[0].GetOptions(), - descriptor_pb2.FieldOptions()) - self.assertEqual(self.my_method.GetOptions(), - descriptor_pb2.MethodOptions()) - self.assertEqual(self.my_service.GetOptions(), - descriptor_pb2.ServiceOptions()) - - def testFileDescriptorReferences(self): - self.assertEqual(self.my_enum.file, self.my_file) - self.assertEqual(self.my_message.file, self.my_file) - - def testFileDescriptor(self): - self.assertEqual(self.my_file.name, 'some/filename/some.proto') - self.assertEqual(self.my_file.package, 'protobuf_unittest') - - -class DescriptorCopyToProtoTest(unittest.TestCase): - """Tests for CopyTo functions of Descriptor.""" - - def _AssertProtoEqual(self, actual_proto, expected_class, expected_ascii): - expected_proto = expected_class() - text_format.Merge(expected_ascii, expected_proto) - - self.assertEqual( - actual_proto, expected_proto, - 'Not equal,\nActual:\n%s\nExpected:\n%s\n' - % (str(actual_proto), str(expected_proto))) - - def _InternalTestCopyToProto(self, desc, expected_proto_class, - expected_proto_ascii): - actual = expected_proto_class() - desc.CopyToProto(actual) - self._AssertProtoEqual( - actual, expected_proto_class, expected_proto_ascii) - - def testCopyToProto_EmptyMessage(self): - self._InternalTestCopyToProto( - unittest_pb2.TestEmptyMessage.DESCRIPTOR, - descriptor_pb2.DescriptorProto, - TEST_EMPTY_MESSAGE_DESCRIPTOR_ASCII) - - def testCopyToProto_NestedMessage(self): - TEST_NESTED_MESSAGE_ASCII = """ - name: 'NestedMessage' - field: < - name: 'bb' - number: 1 - label: 1 # Optional - type: 5 # TYPE_INT32 - > - """ - - self._InternalTestCopyToProto( - unittest_pb2.TestAllTypes.NestedMessage.DESCRIPTOR, - descriptor_pb2.DescriptorProto, - TEST_NESTED_MESSAGE_ASCII) - - def testCopyToProto_ForeignNestedMessage(self): - TEST_FOREIGN_NESTED_ASCII = """ - name: 'TestForeignNested' - field: < - name: 'foreign_nested' - number: 1 - label: 1 # Optional - type: 11 # TYPE_MESSAGE - type_name: '.protobuf_unittest.TestAllTypes.NestedMessage' - > - """ - - self._InternalTestCopyToProto( - unittest_pb2.TestForeignNested.DESCRIPTOR, - descriptor_pb2.DescriptorProto, - TEST_FOREIGN_NESTED_ASCII) - - def testCopyToProto_ForeignEnum(self): - TEST_FOREIGN_ENUM_ASCII = """ - name: 'ForeignEnum' - value: < - name: 'FOREIGN_FOO' - number: 4 - > - value: < - name: 'FOREIGN_BAR' - number: 5 - > - value: < - name: 'FOREIGN_BAZ' - number: 6 - > - """ - - self._InternalTestCopyToProto( - unittest_pb2._FOREIGNENUM, - descriptor_pb2.EnumDescriptorProto, - TEST_FOREIGN_ENUM_ASCII) - - def testCopyToProto_Options(self): - TEST_DEPRECATED_FIELDS_ASCII = """ - name: 'TestDeprecatedFields' - field: < - name: 'deprecated_int32' - number: 1 - label: 1 # Optional - type: 5 # TYPE_INT32 - options: < - deprecated: true - > - > - """ - - self._InternalTestCopyToProto( - unittest_pb2.TestDeprecatedFields.DESCRIPTOR, - descriptor_pb2.DescriptorProto, - TEST_DEPRECATED_FIELDS_ASCII) - - def testCopyToProto_AllExtensions(self): - TEST_EMPTY_MESSAGE_WITH_EXTENSIONS_ASCII = """ - name: 'TestEmptyMessageWithExtensions' - extension_range: < - start: 1 - end: 536870912 - > - """ - - self._InternalTestCopyToProto( - unittest_pb2.TestEmptyMessageWithExtensions.DESCRIPTOR, - descriptor_pb2.DescriptorProto, - TEST_EMPTY_MESSAGE_WITH_EXTENSIONS_ASCII) - - def testCopyToProto_SeveralExtensions(self): - TEST_MESSAGE_WITH_SEVERAL_EXTENSIONS_ASCII = """ - name: 'TestMultipleExtensionRanges' - extension_range: < - start: 42 - end: 43 - > - extension_range: < - start: 4143 - end: 4244 - > - extension_range: < - start: 65536 - end: 536870912 - > - """ - - self._InternalTestCopyToProto( - unittest_pb2.TestMultipleExtensionRanges.DESCRIPTOR, - descriptor_pb2.DescriptorProto, - TEST_MESSAGE_WITH_SEVERAL_EXTENSIONS_ASCII) - - def testCopyToProto_FileDescriptor(self): - UNITTEST_IMPORT_FILE_DESCRIPTOR_ASCII = (""" - name: 'google/protobuf/unittest_import.proto' - package: 'protobuf_unittest_import' - message_type: < - name: 'ImportMessage' - field: < - name: 'd' - number: 1 - label: 1 # Optional - type: 5 # TYPE_INT32 - > - > - """ + - """enum_type: < - name: 'ImportEnum' - value: < - name: 'IMPORT_FOO' - number: 7 - > - value: < - name: 'IMPORT_BAR' - number: 8 - > - value: < - name: 'IMPORT_BAZ' - number: 9 - > - > - options: < - java_package: 'com.google.protobuf.test' - optimize_for: 1 # SPEED - > - """) - - self._InternalTestCopyToProto( - unittest_import_pb2.DESCRIPTOR, - descriptor_pb2.FileDescriptorProto, - UNITTEST_IMPORT_FILE_DESCRIPTOR_ASCII) - - def testCopyToProto_ServiceDescriptor(self): - TEST_SERVICE_ASCII = """ - name: 'TestService' - method: < - name: 'Foo' - input_type: '.protobuf_unittest.FooRequest' - output_type: '.protobuf_unittest.FooResponse' - > - method: < - name: 'Bar' - input_type: '.protobuf_unittest.BarRequest' - output_type: '.protobuf_unittest.BarResponse' - > - """ - - self._InternalTestCopyToProto( - unittest_pb2.TestService.DESCRIPTOR, - descriptor_pb2.ServiceDescriptorProto, - TEST_SERVICE_ASCII) - - -if __name__ == '__main__': - unittest.main() diff --git a/cpp/thirdparty/protobuf-2.3.0/python/google/protobuf/internal/message_test.py b/cpp/thirdparty/protobuf-2.3.0/python/google/protobuf/internal/message_test.py deleted file mode 100755 index 73a9a3a37..000000000 --- a/cpp/thirdparty/protobuf-2.3.0/python/google/protobuf/internal/message_test.py +++ /dev/null @@ -1,89 +0,0 @@ -#! /usr/bin/python -# -# Protocol Buffers - Google's data interchange format -# Copyright 2008 Google Inc. All rights reserved. -# http://code.google.com/p/protobuf/ -# -# Redistribution and use in source and binary forms, with or without -# modification, are permitted provided that the following conditions are -# met: -# -# * Redistributions of source code must retain the above copyright -# notice, this list of conditions and the following disclaimer. -# * Redistributions in binary form must reproduce the above -# copyright notice, this list of conditions and the following disclaimer -# in the documentation and/or other materials provided with the -# distribution. -# * Neither the name of Google Inc. nor the names of its -# contributors may be used to endorse or promote products derived from -# this software without specific prior written permission. -# -# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -"""Tests python protocol buffers against the golden message. - -Note that the golden messages exercise every known field type, thus this -test ends up exercising and verifying nearly all of the parsing and -serialization code in the whole library. - -TODO(kenton): Merge with wire_format_test? It doesn't make a whole lot of -sense to call this a test of the "message" module, which only declares an -abstract interface. -""" - -__author__ = 'gps@google.com (Gregory P. Smith)' - -import unittest -from google.protobuf import unittest_import_pb2 -from google.protobuf import unittest_pb2 -from google.protobuf.internal import test_util - - -class MessageTest(unittest.TestCase): - - def testGoldenMessage(self): - golden_data = test_util.GoldenFile('golden_message').read() - golden_message = unittest_pb2.TestAllTypes() - golden_message.ParseFromString(golden_data) - test_util.ExpectAllFieldsSet(self, golden_message) - self.assertTrue(golden_message.SerializeToString() == golden_data) - - def testGoldenExtensions(self): - golden_data = test_util.GoldenFile('golden_message').read() - golden_message = unittest_pb2.TestAllExtensions() - golden_message.ParseFromString(golden_data) - all_set = unittest_pb2.TestAllExtensions() - test_util.SetAllExtensions(all_set) - self.assertEquals(all_set, golden_message) - self.assertTrue(golden_message.SerializeToString() == golden_data) - - def testGoldenPackedMessage(self): - golden_data = test_util.GoldenFile('golden_packed_fields_message').read() - golden_message = unittest_pb2.TestPackedTypes() - golden_message.ParseFromString(golden_data) - all_set = unittest_pb2.TestPackedTypes() - test_util.SetAllPackedFields(all_set) - self.assertEquals(all_set, golden_message) - self.assertTrue(all_set.SerializeToString() == golden_data) - - def testGoldenPackedExtensions(self): - golden_data = test_util.GoldenFile('golden_packed_fields_message').read() - golden_message = unittest_pb2.TestPackedExtensions() - golden_message.ParseFromString(golden_data) - all_set = unittest_pb2.TestPackedExtensions() - test_util.SetAllPackedExtensions(all_set) - self.assertEquals(all_set, golden_message) - self.assertTrue(all_set.SerializeToString() == golden_data) - -if __name__ == '__main__': - unittest.main() diff --git a/cpp/thirdparty/protobuf-2.3.0/src/.gitignore b/cpp/thirdparty/protobuf-2.3.0/src/.gitignore deleted file mode 100644 index bb2b559e4..000000000 --- a/cpp/thirdparty/protobuf-2.3.0/src/.gitignore +++ /dev/null @@ -1,8 +0,0 @@ -/.deps -/Makefile -/protoc -/unittest_proto_middleman -/*.o -/*.lo -/*.la -/.libs diff --git a/cpp/thirdparty/protobuf-2.3.0/src/google/protobuf/.gitignore b/cpp/thirdparty/protobuf-2.3.0/src/google/protobuf/.gitignore deleted file mode 100644 index ac407371e..000000000 --- a/cpp/thirdparty/protobuf-2.3.0/src/google/protobuf/.gitignore +++ /dev/null @@ -1,22 +0,0 @@ -/unittest_custom_options.pb.cc -/unittest_custom_options.pb.h -/unittest_embed_optimize_for.pb.cc -/unittest_embed_optimize_for.pb.h -/unittest_empty.pb.cc -/unittest_empty.pb.h -/unittest_import_lite.pb.cc -/unittest_import_lite.pb.h -/unittest_import.pb.cc -/unittest_import.pb.h -/unittest_lite_imports_nonlite.pb.cc -/unittest_lite_imports_nonlite.pb.h -/unittest_lite.pb.cc -/unittest_lite.pb.h -/unittest_mset.pb.cc -/unittest_mset.pb.h -/unittest_no_generic_services.pb.cc -/unittest_no_generic_services.pb.h -/unittest_optimize_for.pb.cc -/unittest_optimize_for.pb.h -/unittest.pb.cc -/unittest.pb.h diff --git a/cpp/thirdparty/protobuf-2.3.0/src/google/protobuf/compiler/cpp/.gitignore b/cpp/thirdparty/protobuf-2.3.0/src/google/protobuf/compiler/cpp/.gitignore deleted file mode 100644 index cc28f5537..000000000 --- a/cpp/thirdparty/protobuf-2.3.0/src/google/protobuf/compiler/cpp/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -/cpp_test_bad_identifiers.pb.cc -/cpp_test_bad_identifiers.pb.h diff --git a/cpp/thirdparty/protobuf-2.3.0/src/google/protobuf/compiler/java/java_enum_field.cc b/cpp/thirdparty/protobuf-2.3.0/src/google/protobuf/compiler/java/java_enum_field.cc deleted file mode 100644 index af6b1cd29..000000000 --- a/cpp/thirdparty/protobuf-2.3.0/src/google/protobuf/compiler/java/java_enum_field.cc +++ /dev/null @@ -1,373 +0,0 @@ -// Protocol Buffers - Google's data interchange format -// Copyright 2008 Google Inc. All rights reserved. -// http://code.google.com/p/protobuf/ -// -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following disclaimer -// in the documentation and/or other materials provided with the -// distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived from -// this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Author: kenton@google.com (Kenton Varda) -// Based on original Protocol Buffers design by -// Sanjay Ghemawat, Jeff Dean, and others. - -#include -#include - -#include -#include -#include -#include -#include -#include - -namespace google { -namespace protobuf { -namespace compiler { -namespace java { - -namespace { - -// TODO(kenton): Factor out a "SetCommonFieldVariables()" to get rid of -// repeat code between this and the other field types. -void SetEnumVariables(const FieldDescriptor* descriptor, - map* variables) { - (*variables)["name"] = - UnderscoresToCamelCase(descriptor); - (*variables)["capitalized_name"] = - UnderscoresToCapitalizedCamelCase(descriptor); - (*variables)["number"] = SimpleItoa(descriptor->number()); - (*variables)["type"] = ClassName(descriptor->enum_type()); - (*variables)["default"] = DefaultValue(descriptor); - (*variables)["tag"] = SimpleItoa(internal::WireFormat::MakeTag(descriptor)); - (*variables)["tag_size"] = SimpleItoa( - internal::WireFormat::TagSize(descriptor->number(), GetType(descriptor))); -} - -} // namespace - -// =================================================================== - -EnumFieldGenerator:: -EnumFieldGenerator(const FieldDescriptor* descriptor) - : descriptor_(descriptor) { - SetEnumVariables(descriptor, &variables_); -} - -EnumFieldGenerator::~EnumFieldGenerator() {} - -void EnumFieldGenerator:: -GenerateMembers(io::Printer* printer) const { - printer->Print(variables_, - "private boolean has$capitalized_name$;\n" - "private $type$ $name$_;\n" - "public boolean has$capitalized_name$() { return has$capitalized_name$; }\n" - "public $type$ get$capitalized_name$() { return $name$_; }\n"); -} - -void EnumFieldGenerator:: -GenerateBuilderMembers(io::Printer* printer) const { - printer->Print(variables_, - "public boolean has$capitalized_name$() {\n" - " return result.has$capitalized_name$();\n" - "}\n" - "public $type$ get$capitalized_name$() {\n" - " return result.get$capitalized_name$();\n" - "}\n" - "public Builder set$capitalized_name$($type$ value) {\n" - " if (value == null) {\n" - " throw new NullPointerException();\n" - " }\n" - " result.has$capitalized_name$ = true;\n" - " result.$name$_ = value;\n" - " return this;\n" - "}\n" - "public Builder clear$capitalized_name$() {\n" - " result.has$capitalized_name$ = false;\n" - " result.$name$_ = $default$;\n" - " return this;\n" - "}\n"); -} - -void EnumFieldGenerator:: -GenerateInitializationCode(io::Printer* printer) const { - printer->Print(variables_, "$name$_ = $default$;\n"); -} - -void EnumFieldGenerator:: -GenerateMergingCode(io::Printer* printer) const { - printer->Print(variables_, - "if (other.has$capitalized_name$()) {\n" - " set$capitalized_name$(other.get$capitalized_name$());\n" - "}\n"); -} - -void EnumFieldGenerator:: -GenerateBuildingCode(io::Printer* printer) const { - // Nothing to do here for enum types. -} - -void EnumFieldGenerator:: -GenerateParsingCode(io::Printer* printer) const { - printer->Print(variables_, - "int rawValue = input.readEnum();\n" - "$type$ value = $type$.valueOf(rawValue);\n"); - if (HasUnknownFields(descriptor_->containing_type())) { - printer->Print(variables_, - "if (value == null) {\n" - " unknownFields.mergeVarintField($number$, rawValue);\n" - "} else {\n"); - } else { - printer->Print(variables_, - "if (value != null) {\n"); - } - printer->Print(variables_, - " set$capitalized_name$(value);\n" - "}\n"); -} - -void EnumFieldGenerator:: -GenerateSerializationCode(io::Printer* printer) const { - printer->Print(variables_, - "if (has$capitalized_name$()) {\n" - " output.writeEnum($number$, get$capitalized_name$().getNumber());\n" - "}\n"); -} - -void EnumFieldGenerator:: -GenerateSerializedSizeCode(io::Printer* printer) const { - printer->Print(variables_, - "if (has$capitalized_name$()) {\n" - " size += com.google.protobuf.CodedOutputStream\n" - " .computeEnumSize($number$, get$capitalized_name$().getNumber());\n" - "}\n"); -} - -string EnumFieldGenerator::GetBoxedType() const { - return ClassName(descriptor_->enum_type()); -} - -// =================================================================== - -RepeatedEnumFieldGenerator:: -RepeatedEnumFieldGenerator(const FieldDescriptor* descriptor) - : descriptor_(descriptor) { - SetEnumVariables(descriptor, &variables_); -} - -RepeatedEnumFieldGenerator::~RepeatedEnumFieldGenerator() {} - -void RepeatedEnumFieldGenerator:: -GenerateMembers(io::Printer* printer) const { - printer->Print(variables_, - "private java.util.List<$type$> $name$_ =\n" - " java.util.Collections.emptyList();\n" - "public java.util.List<$type$> get$capitalized_name$List() {\n" - " return $name$_;\n" // note: unmodifiable list - "}\n" - "public int get$capitalized_name$Count() { return $name$_.size(); }\n" - "public $type$ get$capitalized_name$(int index) {\n" - " return $name$_.get(index);\n" - "}\n"); - - if (descriptor_->options().packed() && - HasGeneratedMethods(descriptor_->containing_type())) { - printer->Print(variables_, - "private int $name$MemoizedSerializedSize;\n"); - } -} - -void RepeatedEnumFieldGenerator:: -GenerateBuilderMembers(io::Printer* printer) const { - printer->Print(variables_, - // Note: We return an unmodifiable list because otherwise the caller - // could hold on to the returned list and modify it after the message - // has been built, thus mutating the message which is supposed to be - // immutable. - "public java.util.List<$type$> get$capitalized_name$List() {\n" - " return java.util.Collections.unmodifiableList(result.$name$_);\n" - "}\n" - "public int get$capitalized_name$Count() {\n" - " return result.get$capitalized_name$Count();\n" - "}\n" - "public $type$ get$capitalized_name$(int index) {\n" - " return result.get$capitalized_name$(index);\n" - "}\n" - "public Builder set$capitalized_name$(int index, $type$ value) {\n" - " if (value == null) {\n" - " throw new NullPointerException();\n" - " }\n" - " result.$name$_.set(index, value);\n" - " return this;\n" - "}\n" - "public Builder add$capitalized_name$($type$ value) {\n" - " if (value == null) {\n" - " throw new NullPointerException();\n" - " }\n" - " if (result.$name$_.isEmpty()) {\n" - " result.$name$_ = new java.util.ArrayList<$type$>();\n" - " }\n" - " result.$name$_.add(value);\n" - " return this;\n" - "}\n" - "public Builder addAll$capitalized_name$(\n" - " java.lang.Iterable values) {\n" - " if (result.$name$_.isEmpty()) {\n" - " result.$name$_ = new java.util.ArrayList<$type$>();\n" - " }\n" - " super.addAll(values, result.$name$_);\n" - " return this;\n" - "}\n" - "public Builder clear$capitalized_name$() {\n" - " result.$name$_ = java.util.Collections.emptyList();\n" - " return this;\n" - "}\n"); -} - -void RepeatedEnumFieldGenerator:: -GenerateInitializationCode(io::Printer* printer) const { - // Initialized inline. -} - -void RepeatedEnumFieldGenerator:: -GenerateMergingCode(io::Printer* printer) const { - printer->Print(variables_, - "if (!other.$name$_.isEmpty()) {\n" - " if (result.$name$_.isEmpty()) {\n" - " result.$name$_ = new java.util.ArrayList<$type$>();\n" - " }\n" - " result.$name$_.addAll(other.$name$_);\n" - "}\n"); -} - -void RepeatedEnumFieldGenerator:: -GenerateBuildingCode(io::Printer* printer) const { - printer->Print(variables_, - "if (result.$name$_ != java.util.Collections.EMPTY_LIST) {\n" - " result.$name$_ =\n" - " java.util.Collections.unmodifiableList(result.$name$_);\n" - "}\n"); -} - -void RepeatedEnumFieldGenerator:: -GenerateParsingCode(io::Printer* printer) const { - // Read and store the enum - printer->Print(variables_, - "int rawValue = input.readEnum();\n" - "$type$ value = $type$.valueOf(rawValue);\n"); - if (HasUnknownFields(descriptor_->containing_type())) { - printer->Print(variables_, - "if (value == null) {\n" - " unknownFields.mergeVarintField($number$, rawValue);\n" - "} else {\n"); - } else { - printer->Print(variables_, - "if (value != null) {\n"); - } - printer->Print(variables_, - " add$capitalized_name$(value);\n" - "}\n"); -} - -void RepeatedEnumFieldGenerator:: -GenerateParsingCodeFromPacked(io::Printer* printer) const { - // Wrap GenerateParsingCode's contents with a while loop. - - printer->Print(variables_, - "int length = input.readRawVarint32();\n" - "int oldLimit = input.pushLimit(length);\n" - "while(input.getBytesUntilLimit() > 0) {\n"); - printer->Indent(); - - GenerateParsingCode(printer); - - printer->Outdent(); - printer->Print(variables_, - "}\n" - "input.popLimit(oldLimit);\n"); -} - -void RepeatedEnumFieldGenerator:: -GenerateSerializationCode(io::Printer* printer) const { - if (descriptor_->options().packed()) { - printer->Print(variables_, - "if (get$capitalized_name$List().size() > 0) {\n" - " output.writeRawVarint32($tag$);\n" - " output.writeRawVarint32($name$MemoizedSerializedSize);\n" - "}\n" - "for ($type$ element : get$capitalized_name$List()) {\n" - " output.writeEnumNoTag(element.getNumber());\n" - "}\n"); - } else { - printer->Print(variables_, - "for ($type$ element : get$capitalized_name$List()) {\n" - " output.writeEnum($number$, element.getNumber());\n" - "}\n"); - } -} - -void RepeatedEnumFieldGenerator:: -GenerateSerializedSizeCode(io::Printer* printer) const { - printer->Print(variables_, - "{\n" - " int dataSize = 0;\n"); - printer->Indent(); - - printer->Print(variables_, - "for ($type$ element : get$capitalized_name$List()) {\n" - " dataSize += com.google.protobuf.CodedOutputStream\n" - " .computeEnumSizeNoTag(element.getNumber());\n" - "}\n"); - printer->Print( - "size += dataSize;\n"); - if (descriptor_->options().packed()) { - printer->Print(variables_, - "if (!get$capitalized_name$List().isEmpty()) {" - " size += $tag_size$;\n" - " size += com.google.protobuf.CodedOutputStream\n" - " .computeRawVarint32Size(dataSize);\n" - "}"); - } else { - printer->Print(variables_, - "size += $tag_size$ * get$capitalized_name$List().size();\n"); - } - - // cache the data size for packed fields. - if (descriptor_->options().packed()) { - printer->Print(variables_, - "$name$MemoizedSerializedSize = dataSize;\n"); - } - - printer->Outdent(); - printer->Print("}\n"); -} - -string RepeatedEnumFieldGenerator::GetBoxedType() const { - return ClassName(descriptor_->enum_type()); -} - -} // namespace java -} // namespace compiler -} // namespace protobuf -} // namespace google diff --git a/cpp/thirdparty/protobuf-2.3.0/src/google/protobuf/compiler/java/java_message_field.cc b/cpp/thirdparty/protobuf-2.3.0/src/google/protobuf/compiler/java/java_message_field.cc deleted file mode 100644 index 71edc0243..000000000 --- a/cpp/thirdparty/protobuf-2.3.0/src/google/protobuf/compiler/java/java_message_field.cc +++ /dev/null @@ -1,335 +0,0 @@ -// Protocol Buffers - Google's data interchange format -// Copyright 2008 Google Inc. All rights reserved. -// http://code.google.com/p/protobuf/ -// -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following disclaimer -// in the documentation and/or other materials provided with the -// distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived from -// this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Author: kenton@google.com (Kenton Varda) -// Based on original Protocol Buffers design by -// Sanjay Ghemawat, Jeff Dean, and others. - -#include -#include - -#include -#include -#include -#include -#include - -namespace google { -namespace protobuf { -namespace compiler { -namespace java { - -namespace { - -// TODO(kenton): Factor out a "SetCommonFieldVariables()" to get rid of -// repeat code between this and the other field types. -void SetMessageVariables(const FieldDescriptor* descriptor, - map* variables) { - (*variables)["name"] = - UnderscoresToCamelCase(descriptor); - (*variables)["capitalized_name"] = - UnderscoresToCapitalizedCamelCase(descriptor); - (*variables)["number"] = SimpleItoa(descriptor->number()); - (*variables)["type"] = ClassName(descriptor->message_type()); - (*variables)["group_or_message"] = - (GetType(descriptor) == FieldDescriptor::TYPE_GROUP) ? - "Group" : "Message"; -} - -} // namespace - -// =================================================================== - -MessageFieldGenerator:: -MessageFieldGenerator(const FieldDescriptor* descriptor) - : descriptor_(descriptor) { - SetMessageVariables(descriptor, &variables_); -} - -MessageFieldGenerator::~MessageFieldGenerator() {} - -void MessageFieldGenerator:: -GenerateMembers(io::Printer* printer) const { - printer->Print(variables_, - "private boolean has$capitalized_name$;\n" - "private $type$ $name$_;\n" - "public boolean has$capitalized_name$() { return has$capitalized_name$; }\n" - "public $type$ get$capitalized_name$() { return $name$_; }\n"); -} - -void MessageFieldGenerator:: -GenerateBuilderMembers(io::Printer* printer) const { - printer->Print(variables_, - "public boolean has$capitalized_name$() {\n" - " return result.has$capitalized_name$();\n" - "}\n" - "public $type$ get$capitalized_name$() {\n" - " return result.get$capitalized_name$();\n" - "}\n" - "public Builder set$capitalized_name$($type$ value) {\n" - " if (value == null) {\n" - " throw new NullPointerException();\n" - " }\n" - " result.has$capitalized_name$ = true;\n" - " result.$name$_ = value;\n" - " return this;\n" - "}\n" - "public Builder set$capitalized_name$($type$.Builder builderForValue) {\n" - " result.has$capitalized_name$ = true;\n" - " result.$name$_ = builderForValue.build();\n" - " return this;\n" - "}\n" - "public Builder merge$capitalized_name$($type$ value) {\n" - " if (result.has$capitalized_name$() &&\n" - " result.$name$_ != $type$.getDefaultInstance()) {\n" - " result.$name$_ =\n" - " $type$.newBuilder(result.$name$_).mergeFrom(value).buildPartial();\n" - " } else {\n" - " result.$name$_ = value;\n" - " }\n" - " result.has$capitalized_name$ = true;\n" - " return this;\n" - "}\n" - "public Builder clear$capitalized_name$() {\n" - " result.has$capitalized_name$ = false;\n" - " result.$name$_ = $type$.getDefaultInstance();\n" - " return this;\n" - "}\n"); -} - -void MessageFieldGenerator:: -GenerateInitializationCode(io::Printer* printer) const { - printer->Print(variables_, "$name$_ = $type$.getDefaultInstance();\n"); -} - -void MessageFieldGenerator:: -GenerateMergingCode(io::Printer* printer) const { - printer->Print(variables_, - "if (other.has$capitalized_name$()) {\n" - " merge$capitalized_name$(other.get$capitalized_name$());\n" - "}\n"); -} - -void MessageFieldGenerator:: -GenerateBuildingCode(io::Printer* printer) const { - // Nothing to do for singular fields. -} - -void MessageFieldGenerator:: -GenerateParsingCode(io::Printer* printer) const { - printer->Print(variables_, - "$type$.Builder subBuilder = $type$.newBuilder();\n" - "if (has$capitalized_name$()) {\n" - " subBuilder.mergeFrom(get$capitalized_name$());\n" - "}\n"); - - if (GetType(descriptor_) == FieldDescriptor::TYPE_GROUP) { - printer->Print(variables_, - "input.readGroup($number$, subBuilder, extensionRegistry);\n"); - } else { - printer->Print(variables_, - "input.readMessage(subBuilder, extensionRegistry);\n"); - } - - printer->Print(variables_, - "set$capitalized_name$(subBuilder.buildPartial());\n"); -} - -void MessageFieldGenerator:: -GenerateSerializationCode(io::Printer* printer) const { - printer->Print(variables_, - "if (has$capitalized_name$()) {\n" - " output.write$group_or_message$($number$, get$capitalized_name$());\n" - "}\n"); -} - -void MessageFieldGenerator:: -GenerateSerializedSizeCode(io::Printer* printer) const { - printer->Print(variables_, - "if (has$capitalized_name$()) {\n" - " size += com.google.protobuf.CodedOutputStream\n" - " .compute$group_or_message$Size($number$, get$capitalized_name$());\n" - "}\n"); -} - -string MessageFieldGenerator::GetBoxedType() const { - return ClassName(descriptor_->message_type()); -} - -// =================================================================== - -RepeatedMessageFieldGenerator:: -RepeatedMessageFieldGenerator(const FieldDescriptor* descriptor) - : descriptor_(descriptor) { - SetMessageVariables(descriptor, &variables_); -} - -RepeatedMessageFieldGenerator::~RepeatedMessageFieldGenerator() {} - -void RepeatedMessageFieldGenerator:: -GenerateMembers(io::Printer* printer) const { - printer->Print(variables_, - "private java.util.List<$type$> $name$_ =\n" - " java.util.Collections.emptyList();\n" - "public java.util.List<$type$> get$capitalized_name$List() {\n" - " return $name$_;\n" // note: unmodifiable list - "}\n" - "public int get$capitalized_name$Count() { return $name$_.size(); }\n" - "public $type$ get$capitalized_name$(int index) {\n" - " return $name$_.get(index);\n" - "}\n"); -} - -void RepeatedMessageFieldGenerator:: -GenerateBuilderMembers(io::Printer* printer) const { - printer->Print(variables_, - // Note: We return an unmodifiable list because otherwise the caller - // could hold on to the returned list and modify it after the message - // has been built, thus mutating the message which is supposed to be - // immutable. - "public java.util.List<$type$> get$capitalized_name$List() {\n" - " return java.util.Collections.unmodifiableList(result.$name$_);\n" - "}\n" - "public int get$capitalized_name$Count() {\n" - " return result.get$capitalized_name$Count();\n" - "}\n" - "public $type$ get$capitalized_name$(int index) {\n" - " return result.get$capitalized_name$(index);\n" - "}\n" - "public Builder set$capitalized_name$(int index, $type$ value) {\n" - " if (value == null) {\n" - " throw new NullPointerException();\n" - " }\n" - " result.$name$_.set(index, value);\n" - " return this;\n" - "}\n" - "public Builder set$capitalized_name$(int index, " - "$type$.Builder builderForValue) {\n" - " result.$name$_.set(index, builderForValue.build());\n" - " return this;\n" - "}\n" - "public Builder add$capitalized_name$($type$ value) {\n" - " if (value == null) {\n" - " throw new NullPointerException();\n" - " }\n" - " if (result.$name$_.isEmpty()) {\n" - " result.$name$_ = new java.util.ArrayList<$type$>();\n" - " }\n" - " result.$name$_.add(value);\n" - " return this;\n" - "}\n" - "public Builder add$capitalized_name$($type$.Builder builderForValue) {\n" - " if (result.$name$_.isEmpty()) {\n" - " result.$name$_ = new java.util.ArrayList<$type$>();\n" - " }\n" - " result.$name$_.add(builderForValue.build());\n" - " return this;\n" - "}\n" - "public Builder addAll$capitalized_name$(\n" - " java.lang.Iterable values) {\n" - " if (result.$name$_.isEmpty()) {\n" - " result.$name$_ = new java.util.ArrayList<$type$>();\n" - " }\n" - " super.addAll(values, result.$name$_);\n" - " return this;\n" - "}\n" - "public Builder clear$capitalized_name$() {\n" - " result.$name$_ = java.util.Collections.emptyList();\n" - " return this;\n" - "}\n"); -} - -void RepeatedMessageFieldGenerator:: -GenerateInitializationCode(io::Printer* printer) const { - // Initialized inline. -} - -void RepeatedMessageFieldGenerator:: -GenerateMergingCode(io::Printer* printer) const { - printer->Print(variables_, - "if (!other.$name$_.isEmpty()) {\n" - " if (result.$name$_.isEmpty()) {\n" - " result.$name$_ = new java.util.ArrayList<$type$>();\n" - " }\n" - " result.$name$_.addAll(other.$name$_);\n" - "}\n"); -} - -void RepeatedMessageFieldGenerator:: -GenerateBuildingCode(io::Printer* printer) const { - printer->Print(variables_, - "if (result.$name$_ != java.util.Collections.EMPTY_LIST) {\n" - " result.$name$_ =\n" - " java.util.Collections.unmodifiableList(result.$name$_);\n" - "}\n"); -} - -void RepeatedMessageFieldGenerator:: -GenerateParsingCode(io::Printer* printer) const { - printer->Print(variables_, - "$type$.Builder subBuilder = $type$.newBuilder();\n"); - - if (GetType(descriptor_) == FieldDescriptor::TYPE_GROUP) { - printer->Print(variables_, - "input.readGroup($number$, subBuilder, extensionRegistry);\n"); - } else { - printer->Print(variables_, - "input.readMessage(subBuilder, extensionRegistry);\n"); - } - - printer->Print(variables_, - "add$capitalized_name$(subBuilder.buildPartial());\n"); -} - -void RepeatedMessageFieldGenerator:: -GenerateSerializationCode(io::Printer* printer) const { - printer->Print(variables_, - "for ($type$ element : get$capitalized_name$List()) {\n" - " output.write$group_or_message$($number$, element);\n" - "}\n"); -} - -void RepeatedMessageFieldGenerator:: -GenerateSerializedSizeCode(io::Printer* printer) const { - printer->Print(variables_, - "for ($type$ element : get$capitalized_name$List()) {\n" - " size += com.google.protobuf.CodedOutputStream\n" - " .compute$group_or_message$Size($number$, element);\n" - "}\n"); -} - -string RepeatedMessageFieldGenerator::GetBoxedType() const { - return ClassName(descriptor_->message_type()); -} - -} // namespace java -} // namespace compiler -} // namespace protobuf -} // namespace google diff --git a/cpp/thirdparty/protobuf-2.3.0/src/google/protobuf/compiler/java/java_primitive_field.cc b/cpp/thirdparty/protobuf-2.3.0/src/google/protobuf/compiler/java/java_primitive_field.cc deleted file mode 100644 index f6179bfa9..000000000 --- a/cpp/thirdparty/protobuf-2.3.0/src/google/protobuf/compiler/java/java_primitive_field.cc +++ /dev/null @@ -1,465 +0,0 @@ -// Protocol Buffers - Google's data interchange format -// Copyright 2008 Google Inc. All rights reserved. -// http://code.google.com/p/protobuf/ -// -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following disclaimer -// in the documentation and/or other materials provided with the -// distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived from -// this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Author: kenton@google.com (Kenton Varda) -// Based on original Protocol Buffers design by -// Sanjay Ghemawat, Jeff Dean, and others. - -#include -#include - -#include -#include -#include -#include -#include -#include - -namespace google { -namespace protobuf { -namespace compiler { -namespace java { - -using internal::WireFormat; -using internal::WireFormatLite; - -namespace { - -const char* PrimitiveTypeName(JavaType type) { - switch (type) { - case JAVATYPE_INT : return "int"; - case JAVATYPE_LONG : return "long"; - case JAVATYPE_FLOAT : return "float"; - case JAVATYPE_DOUBLE : return "double"; - case JAVATYPE_BOOLEAN: return "boolean"; - case JAVATYPE_STRING : return "java.lang.String"; - case JAVATYPE_BYTES : return "com.google.protobuf.ByteString"; - case JAVATYPE_ENUM : return NULL; - case JAVATYPE_MESSAGE: return NULL; - - // No default because we want the compiler to complain if any new - // JavaTypes are added. - } - - GOOGLE_LOG(FATAL) << "Can't get here."; - return NULL; -} - -bool IsReferenceType(JavaType type) { - switch (type) { - case JAVATYPE_INT : return false; - case JAVATYPE_LONG : return false; - case JAVATYPE_FLOAT : return false; - case JAVATYPE_DOUBLE : return false; - case JAVATYPE_BOOLEAN: return false; - case JAVATYPE_STRING : return true; - case JAVATYPE_BYTES : return true; - case JAVATYPE_ENUM : return true; - case JAVATYPE_MESSAGE: return true; - - // No default because we want the compiler to complain if any new - // JavaTypes are added. - } - - GOOGLE_LOG(FATAL) << "Can't get here."; - return false; -} - -const char* GetCapitalizedType(const FieldDescriptor* field) { - switch (GetType(field)) { - case FieldDescriptor::TYPE_INT32 : return "Int32" ; - case FieldDescriptor::TYPE_UINT32 : return "UInt32" ; - case FieldDescriptor::TYPE_SINT32 : return "SInt32" ; - case FieldDescriptor::TYPE_FIXED32 : return "Fixed32" ; - case FieldDescriptor::TYPE_SFIXED32: return "SFixed32"; - case FieldDescriptor::TYPE_INT64 : return "Int64" ; - case FieldDescriptor::TYPE_UINT64 : return "UInt64" ; - case FieldDescriptor::TYPE_SINT64 : return "SInt64" ; - case FieldDescriptor::TYPE_FIXED64 : return "Fixed64" ; - case FieldDescriptor::TYPE_SFIXED64: return "SFixed64"; - case FieldDescriptor::TYPE_FLOAT : return "Float" ; - case FieldDescriptor::TYPE_DOUBLE : return "Double" ; - case FieldDescriptor::TYPE_BOOL : return "Bool" ; - case FieldDescriptor::TYPE_STRING : return "String" ; - case FieldDescriptor::TYPE_BYTES : return "Bytes" ; - case FieldDescriptor::TYPE_ENUM : return "Enum" ; - case FieldDescriptor::TYPE_GROUP : return "Group" ; - case FieldDescriptor::TYPE_MESSAGE : return "Message" ; - - // No default because we want the compiler to complain if any new - // types are added. - } - - GOOGLE_LOG(FATAL) << "Can't get here."; - return NULL; -} - -// For encodings with fixed sizes, returns that size in bytes. Otherwise -// returns -1. -int FixedSize(FieldDescriptor::Type type) { - switch (type) { - case FieldDescriptor::TYPE_INT32 : return -1; - case FieldDescriptor::TYPE_INT64 : return -1; - case FieldDescriptor::TYPE_UINT32 : return -1; - case FieldDescriptor::TYPE_UINT64 : return -1; - case FieldDescriptor::TYPE_SINT32 : return -1; - case FieldDescriptor::TYPE_SINT64 : return -1; - case FieldDescriptor::TYPE_FIXED32 : return WireFormatLite::kFixed32Size; - case FieldDescriptor::TYPE_FIXED64 : return WireFormatLite::kFixed64Size; - case FieldDescriptor::TYPE_SFIXED32: return WireFormatLite::kSFixed32Size; - case FieldDescriptor::TYPE_SFIXED64: return WireFormatLite::kSFixed64Size; - case FieldDescriptor::TYPE_FLOAT : return WireFormatLite::kFloatSize; - case FieldDescriptor::TYPE_DOUBLE : return WireFormatLite::kDoubleSize; - - case FieldDescriptor::TYPE_BOOL : return WireFormatLite::kBoolSize; - case FieldDescriptor::TYPE_ENUM : return -1; - - case FieldDescriptor::TYPE_STRING : return -1; - case FieldDescriptor::TYPE_BYTES : return -1; - case FieldDescriptor::TYPE_GROUP : return -1; - case FieldDescriptor::TYPE_MESSAGE : return -1; - - // No default because we want the compiler to complain if any new - // types are added. - } - GOOGLE_LOG(FATAL) << "Can't get here."; - return -1; -} - -void SetPrimitiveVariables(const FieldDescriptor* descriptor, - map* variables) { - (*variables)["name"] = - UnderscoresToCamelCase(descriptor); - (*variables)["capitalized_name"] = - UnderscoresToCapitalizedCamelCase(descriptor); - (*variables)["number"] = SimpleItoa(descriptor->number()); - (*variables)["type"] = PrimitiveTypeName(GetJavaType(descriptor)); - (*variables)["boxed_type"] = BoxedPrimitiveTypeName(GetJavaType(descriptor)); - (*variables)["default"] = DefaultValue(descriptor); - (*variables)["capitalized_type"] = GetCapitalizedType(descriptor); - (*variables)["tag"] = SimpleItoa(WireFormat::MakeTag(descriptor)); - (*variables)["tag_size"] = SimpleItoa( - WireFormat::TagSize(descriptor->number(), GetType(descriptor))); - if (IsReferenceType(GetJavaType(descriptor))) { - (*variables)["null_check"] = - " if (value == null) {\n" - " throw new NullPointerException();\n" - " }\n"; - } else { - (*variables)["null_check"] = ""; - } - int fixed_size = FixedSize(GetType(descriptor)); - if (fixed_size != -1) { - (*variables)["fixed_size"] = SimpleItoa(fixed_size); - } -} -} // namespace - -// =================================================================== - -PrimitiveFieldGenerator:: -PrimitiveFieldGenerator(const FieldDescriptor* descriptor) - : descriptor_(descriptor) { - SetPrimitiveVariables(descriptor, &variables_); -} - -PrimitiveFieldGenerator::~PrimitiveFieldGenerator() {} - -void PrimitiveFieldGenerator:: -GenerateMembers(io::Printer* printer) const { - printer->Print(variables_, - "private boolean has$capitalized_name$;\n" - "private $type$ $name$_ = $default$;\n" - "public boolean has$capitalized_name$() { return has$capitalized_name$; }\n" - "public $type$ get$capitalized_name$() { return $name$_; }\n"); -} - -void PrimitiveFieldGenerator:: -GenerateBuilderMembers(io::Printer* printer) const { - printer->Print(variables_, - "public boolean has$capitalized_name$() {\n" - " return result.has$capitalized_name$();\n" - "}\n" - "public $type$ get$capitalized_name$() {\n" - " return result.get$capitalized_name$();\n" - "}\n" - "public Builder set$capitalized_name$($type$ value) {\n" - "$null_check$" - " result.has$capitalized_name$ = true;\n" - " result.$name$_ = value;\n" - " return this;\n" - "}\n" - "public Builder clear$capitalized_name$() {\n" - " result.has$capitalized_name$ = false;\n"); - JavaType type = GetJavaType(descriptor_); - if (type == JAVATYPE_STRING || type == JAVATYPE_BYTES) { - // The default value is not a simple literal so we want to avoid executing - // it multiple times. Instead, get the default out of the default instance. - printer->Print(variables_, - " result.$name$_ = getDefaultInstance().get$capitalized_name$();\n"); - } else { - printer->Print(variables_, - " result.$name$_ = $default$;\n"); - } - printer->Print(variables_, - " return this;\n" - "}\n"); -} - -void PrimitiveFieldGenerator:: -GenerateInitializationCode(io::Printer* printer) const { - // Initialized inline. -} - -void PrimitiveFieldGenerator:: -GenerateMergingCode(io::Printer* printer) const { - printer->Print(variables_, - "if (other.has$capitalized_name$()) {\n" - " set$capitalized_name$(other.get$capitalized_name$());\n" - "}\n"); -} - -void PrimitiveFieldGenerator:: -GenerateBuildingCode(io::Printer* printer) const { - // Nothing to do here for primitive types. -} - -void PrimitiveFieldGenerator:: -GenerateParsingCode(io::Printer* printer) const { - printer->Print(variables_, - "set$capitalized_name$(input.read$capitalized_type$());\n"); -} - -void PrimitiveFieldGenerator:: -GenerateSerializationCode(io::Printer* printer) const { - printer->Print(variables_, - "if (has$capitalized_name$()) {\n" - " output.write$capitalized_type$($number$, get$capitalized_name$());\n" - "}\n"); -} - -void PrimitiveFieldGenerator:: -GenerateSerializedSizeCode(io::Printer* printer) const { - printer->Print(variables_, - "if (has$capitalized_name$()) {\n" - " size += com.google.protobuf.CodedOutputStream\n" - " .compute$capitalized_type$Size($number$, get$capitalized_name$());\n" - "}\n"); -} - -string PrimitiveFieldGenerator::GetBoxedType() const { - return BoxedPrimitiveTypeName(GetJavaType(descriptor_)); -} - -// =================================================================== - -RepeatedPrimitiveFieldGenerator:: -RepeatedPrimitiveFieldGenerator(const FieldDescriptor* descriptor) - : descriptor_(descriptor) { - SetPrimitiveVariables(descriptor, &variables_); -} - -RepeatedPrimitiveFieldGenerator::~RepeatedPrimitiveFieldGenerator() {} - -void RepeatedPrimitiveFieldGenerator:: -GenerateMembers(io::Printer* printer) const { - printer->Print(variables_, - "private java.util.List<$boxed_type$> $name$_ =\n" - " java.util.Collections.emptyList();\n" - "public java.util.List<$boxed_type$> get$capitalized_name$List() {\n" - " return $name$_;\n" // note: unmodifiable list - "}\n" - "public int get$capitalized_name$Count() { return $name$_.size(); }\n" - "public $type$ get$capitalized_name$(int index) {\n" - " return $name$_.get(index);\n" - "}\n"); - - if (descriptor_->options().packed() && - HasGeneratedMethods(descriptor_->containing_type())) { - printer->Print(variables_, - "private int $name$MemoizedSerializedSize = -1;\n"); - } -} - -void RepeatedPrimitiveFieldGenerator:: -GenerateBuilderMembers(io::Printer* printer) const { - printer->Print(variables_, - // Note: We return an unmodifiable list because otherwise the caller - // could hold on to the returned list and modify it after the message - // has been built, thus mutating the message which is supposed to be - // immutable. - "public java.util.List<$boxed_type$> get$capitalized_name$List() {\n" - " return java.util.Collections.unmodifiableList(result.$name$_);\n" - "}\n" - "public int get$capitalized_name$Count() {\n" - " return result.get$capitalized_name$Count();\n" - "}\n" - "public $type$ get$capitalized_name$(int index) {\n" - " return result.get$capitalized_name$(index);\n" - "}\n" - "public Builder set$capitalized_name$(int index, $type$ value) {\n" - "$null_check$" - " result.$name$_.set(index, value);\n" - " return this;\n" - "}\n" - "public Builder add$capitalized_name$($type$ value) {\n" - "$null_check$" - " if (result.$name$_.isEmpty()) {\n" - " result.$name$_ = new java.util.ArrayList<$boxed_type$>();\n" - " }\n" - " result.$name$_.add(value);\n" - " return this;\n" - "}\n" - "public Builder addAll$capitalized_name$(\n" - " java.lang.Iterable values) {\n" - " if (result.$name$_.isEmpty()) {\n" - " result.$name$_ = new java.util.ArrayList<$boxed_type$>();\n" - " }\n" - " super.addAll(values, result.$name$_);\n" - " return this;\n" - "}\n" - "public Builder clear$capitalized_name$() {\n" - " result.$name$_ = java.util.Collections.emptyList();\n" - " return this;\n" - "}\n"); -} - -void RepeatedPrimitiveFieldGenerator:: -GenerateInitializationCode(io::Printer* printer) const { - // Initialized inline. -} - -void RepeatedPrimitiveFieldGenerator:: -GenerateMergingCode(io::Printer* printer) const { - printer->Print(variables_, - "if (!other.$name$_.isEmpty()) {\n" - " if (result.$name$_.isEmpty()) {\n" - " result.$name$_ = new java.util.ArrayList<$boxed_type$>();\n" - " }\n" - " result.$name$_.addAll(other.$name$_);\n" - "}\n"); -} - -void RepeatedPrimitiveFieldGenerator:: -GenerateBuildingCode(io::Printer* printer) const { - printer->Print(variables_, - "if (result.$name$_ != java.util.Collections.EMPTY_LIST) {\n" - " result.$name$_ =\n" - " java.util.Collections.unmodifiableList(result.$name$_);\n" - "}\n"); -} - -void RepeatedPrimitiveFieldGenerator:: -GenerateParsingCode(io::Printer* printer) const { - printer->Print(variables_, - "add$capitalized_name$(input.read$capitalized_type$());\n"); -} - -void RepeatedPrimitiveFieldGenerator:: -GenerateParsingCodeFromPacked(io::Printer* printer) const { - printer->Print(variables_, - "int length = input.readRawVarint32();\n" - "int limit = input.pushLimit(length);\n" - "while (input.getBytesUntilLimit() > 0) {\n" - " add$capitalized_name$(input.read$capitalized_type$());\n" - "}\n" - "input.popLimit(limit);\n"); -} - -void RepeatedPrimitiveFieldGenerator:: -GenerateSerializationCode(io::Printer* printer) const { - if (descriptor_->options().packed()) { - printer->Print(variables_, - "if (get$capitalized_name$List().size() > 0) {\n" - " output.writeRawVarint32($tag$);\n" - " output.writeRawVarint32($name$MemoizedSerializedSize);\n" - "}\n" - "for ($type$ element : get$capitalized_name$List()) {\n" - " output.write$capitalized_type$NoTag(element);\n" - "}\n"); - } else { - printer->Print(variables_, - "for ($type$ element : get$capitalized_name$List()) {\n" - " output.write$capitalized_type$($number$, element);\n" - "}\n"); - } -} - -void RepeatedPrimitiveFieldGenerator:: -GenerateSerializedSizeCode(io::Printer* printer) const { - printer->Print(variables_, - "{\n" - " int dataSize = 0;\n"); - printer->Indent(); - - if (FixedSize(GetType(descriptor_)) == -1) { - printer->Print(variables_, - "for ($type$ element : get$capitalized_name$List()) {\n" - " dataSize += com.google.protobuf.CodedOutputStream\n" - " .compute$capitalized_type$SizeNoTag(element);\n" - "}\n"); - } else { - printer->Print(variables_, - "dataSize = $fixed_size$ * get$capitalized_name$List().size();\n"); - } - - printer->Print( - "size += dataSize;\n"); - - if (descriptor_->options().packed()) { - printer->Print(variables_, - "if (!get$capitalized_name$List().isEmpty()) {\n" - " size += $tag_size$;\n" - " size += com.google.protobuf.CodedOutputStream\n" - " .computeInt32SizeNoTag(dataSize);\n" - "}\n"); - } else { - printer->Print(variables_, - "size += $tag_size$ * get$capitalized_name$List().size();\n"); - } - - // cache the data size for packed fields. - if (descriptor_->options().packed()) { - printer->Print(variables_, - "$name$MemoizedSerializedSize = dataSize;\n"); - } - - printer->Outdent(); - printer->Print("}\n"); -} - -string RepeatedPrimitiveFieldGenerator::GetBoxedType() const { - return BoxedPrimitiveTypeName(GetJavaType(descriptor_)); -} - -} // namespace java -} // namespace compiler -} // namespace protobuf -} // namespace google diff --git a/cpp/thirdparty/protobuf-2.3.0/src/google/protobuf/compiler/parser.cc b/cpp/thirdparty/protobuf-2.3.0/src/google/protobuf/compiler/parser.cc deleted file mode 100644 index 758f70dc2..000000000 --- a/cpp/thirdparty/protobuf-2.3.0/src/google/protobuf/compiler/parser.cc +++ /dev/null @@ -1,1130 +0,0 @@ -// Protocol Buffers - Google's data interchange format -// Copyright 2008 Google Inc. All rights reserved. -// http://code.google.com/p/protobuf/ -// -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following disclaimer -// in the documentation and/or other materials provided with the -// distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived from -// this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Author: kenton@google.com (Kenton Varda) -// Based on original Protocol Buffers design by -// Sanjay Ghemawat, Jeff Dean, and others. -// -// Recursive descent FTW. - -#include -#include -#include - - -#include -#include -#include -#include -#include -#include -#include -#include - -namespace google { -namespace protobuf { -namespace compiler { - -using internal::WireFormat; - -namespace { - -typedef hash_map TypeNameMap; - -TypeNameMap MakeTypeNameTable() { - TypeNameMap result; - - result["double" ] = FieldDescriptorProto::TYPE_DOUBLE; - result["float" ] = FieldDescriptorProto::TYPE_FLOAT; - result["uint64" ] = FieldDescriptorProto::TYPE_UINT64; - result["fixed64" ] = FieldDescriptorProto::TYPE_FIXED64; - result["fixed32" ] = FieldDescriptorProto::TYPE_FIXED32; - result["bool" ] = FieldDescriptorProto::TYPE_BOOL; - result["string" ] = FieldDescriptorProto::TYPE_STRING; - result["group" ] = FieldDescriptorProto::TYPE_GROUP; - - result["bytes" ] = FieldDescriptorProto::TYPE_BYTES; - result["uint32" ] = FieldDescriptorProto::TYPE_UINT32; - result["sfixed32"] = FieldDescriptorProto::TYPE_SFIXED32; - result["sfixed64"] = FieldDescriptorProto::TYPE_SFIXED64; - result["int32" ] = FieldDescriptorProto::TYPE_INT32; - result["int64" ] = FieldDescriptorProto::TYPE_INT64; - result["sint32" ] = FieldDescriptorProto::TYPE_SINT32; - result["sint64" ] = FieldDescriptorProto::TYPE_SINT64; - - return result; -} - -const TypeNameMap kTypeNames = MakeTypeNameTable(); - -} // anonymous namespace - -// Makes code slightly more readable. The meaning of "DO(foo)" is -// "Execute foo and fail if it fails.", where failure is indicated by -// returning false. -#define DO(STATEMENT) if (STATEMENT) {} else return false - -// =================================================================== - -Parser::Parser() - : input_(NULL), - error_collector_(NULL), - source_location_table_(NULL), - had_errors_(false), - require_syntax_identifier_(false), - stop_after_syntax_identifier_(false) { -} - -Parser::~Parser() { -} - -// =================================================================== - -inline bool Parser::LookingAt(const char* text) { - return input_->current().text == text; -} - -inline bool Parser::LookingAtType(io::Tokenizer::TokenType token_type) { - return input_->current().type == token_type; -} - -inline bool Parser::AtEnd() { - return LookingAtType(io::Tokenizer::TYPE_END); -} - -bool Parser::TryConsume(const char* text) { - if (LookingAt(text)) { - input_->Next(); - return true; - } else { - return false; - } -} - -bool Parser::Consume(const char* text, const char* error) { - if (TryConsume(text)) { - return true; - } else { - AddError(error); - return false; - } -} - -bool Parser::Consume(const char* text) { - if (TryConsume(text)) { - return true; - } else { - AddError("Expected \"" + string(text) + "\"."); - return false; - } -} - -bool Parser::ConsumeIdentifier(string* output, const char* error) { - if (LookingAtType(io::Tokenizer::TYPE_IDENTIFIER)) { - *output = input_->current().text; - input_->Next(); - return true; - } else { - AddError(error); - return false; - } -} - -bool Parser::ConsumeInteger(int* output, const char* error) { - if (LookingAtType(io::Tokenizer::TYPE_INTEGER)) { - uint64 value = 0; - if (!io::Tokenizer::ParseInteger(input_->current().text, - kint32max, &value)) { - AddError("Integer out of range."); - // We still return true because we did, in fact, parse an integer. - } - *output = value; - input_->Next(); - return true; - } else { - AddError(error); - return false; - } -} - -bool Parser::ConsumeInteger64(uint64 max_value, uint64* output, - const char* error) { - if (LookingAtType(io::Tokenizer::TYPE_INTEGER)) { - if (!io::Tokenizer::ParseInteger(input_->current().text, max_value, - output)) { - AddError("Integer out of range."); - // We still return true because we did, in fact, parse an integer. - *output = 0; - } - input_->Next(); - return true; - } else { - AddError(error); - return false; - } -} - -bool Parser::ConsumeNumber(double* output, const char* error) { - if (LookingAtType(io::Tokenizer::TYPE_FLOAT)) { - *output = io::Tokenizer::ParseFloat(input_->current().text); - input_->Next(); - return true; - } else if (LookingAtType(io::Tokenizer::TYPE_INTEGER)) { - // Also accept integers. - uint64 value = 0; - if (!io::Tokenizer::ParseInteger(input_->current().text, - kuint64max, &value)) { - AddError("Integer out of range."); - // We still return true because we did, in fact, parse a number. - } - *output = value; - input_->Next(); - return true; - } else if (LookingAt("inf")) { - *output = numeric_limits::infinity(); - input_->Next(); - return true; - } else if (LookingAt("nan")) { - *output = numeric_limits::quiet_NaN(); - input_->Next(); - return true; - } else { - AddError(error); - return false; - } -} - -bool Parser::ConsumeString(string* output, const char* error) { - if (LookingAtType(io::Tokenizer::TYPE_STRING)) { - io::Tokenizer::ParseString(input_->current().text, output); - input_->Next(); - // Allow C++ like concatenation of adjacent string tokens. - while (LookingAtType(io::Tokenizer::TYPE_STRING)) { - io::Tokenizer::ParseStringAppend(input_->current().text, output); - input_->Next(); - } - return true; - } else { - AddError(error); - return false; - } -} - -// ------------------------------------------------------------------- - -void Parser::AddError(int line, int column, const string& error) { - if (error_collector_ != NULL) { - error_collector_->AddError(line, column, error); - } - had_errors_ = true; -} - -void Parser::AddError(const string& error) { - AddError(input_->current().line, input_->current().column, error); -} - -void Parser::RecordLocation( - const Message* descriptor, - DescriptorPool::ErrorCollector::ErrorLocation location, - int line, int column) { - if (source_location_table_ != NULL) { - source_location_table_->Add(descriptor, location, line, column); - } -} - -void Parser::RecordLocation( - const Message* descriptor, - DescriptorPool::ErrorCollector::ErrorLocation location) { - RecordLocation(descriptor, location, - input_->current().line, input_->current().column); -} - -// ------------------------------------------------------------------- - -void Parser::SkipStatement() { - while (true) { - if (AtEnd()) { - return; - } else if (LookingAtType(io::Tokenizer::TYPE_SYMBOL)) { - if (TryConsume(";")) { - return; - } else if (TryConsume("{")) { - SkipRestOfBlock(); - return; - } else if (LookingAt("}")) { - return; - } - } - input_->Next(); - } -} - -void Parser::SkipRestOfBlock() { - while (true) { - if (AtEnd()) { - return; - } else if (LookingAtType(io::Tokenizer::TYPE_SYMBOL)) { - if (TryConsume("}")) { - return; - } else if (TryConsume("{")) { - SkipRestOfBlock(); - } - } - input_->Next(); - } -} - -// =================================================================== - -bool Parser::Parse(io::Tokenizer* input, FileDescriptorProto* file) { - input_ = input; - had_errors_ = false; - syntax_identifier_.clear(); - - if (LookingAtType(io::Tokenizer::TYPE_START)) { - // Advance to first token. - input_->Next(); - } - - if (require_syntax_identifier_ || LookingAt("syntax")) { - if (!ParseSyntaxIdentifier()) { - // Don't attempt to parse the file if we didn't recognize the syntax - // identifier. - return false; - } - } else if (!stop_after_syntax_identifier_) { - syntax_identifier_ = "proto2"; - } - - if (stop_after_syntax_identifier_) return !had_errors_; - - // Repeatedly parse statements until we reach the end of the file. - while (!AtEnd()) { - if (!ParseTopLevelStatement(file)) { - // This statement failed to parse. Skip it, but keep looping to parse - // other statements. - SkipStatement(); - - if (LookingAt("}")) { - AddError("Unmatched \"}\"."); - input_->Next(); - } - } - } - - input_ = NULL; - return !had_errors_; -} - -bool Parser::ParseSyntaxIdentifier() { - DO(Consume("syntax", "File must begin with 'syntax = \"proto2\";'.")); - DO(Consume("=")); - io::Tokenizer::Token syntax_token = input_->current(); - string syntax; - DO(ConsumeString(&syntax, "Expected syntax identifier.")); - DO(Consume(";")); - - syntax_identifier_ = syntax; - - if (syntax != "proto2" && !stop_after_syntax_identifier_) { - AddError(syntax_token.line, syntax_token.column, - "Unrecognized syntax identifier \"" + syntax + "\". This parser " - "only recognizes \"proto2\"."); - return false; - } - - return true; -} - -bool Parser::ParseTopLevelStatement(FileDescriptorProto* file) { - if (TryConsume(";")) { - // empty statement; ignore - return true; - } else if (LookingAt("message")) { - return ParseMessageDefinition(file->add_message_type()); - } else if (LookingAt("enum")) { - return ParseEnumDefinition(file->add_enum_type()); - } else if (LookingAt("service")) { - return ParseServiceDefinition(file->add_service()); - } else if (LookingAt("extend")) { - return ParseExtend(file->mutable_extension(), - file->mutable_message_type()); - } else if (LookingAt("import")) { - return ParseImport(file->add_dependency()); - } else if (LookingAt("package")) { - return ParsePackage(file); - } else if (LookingAt("option")) { - return ParseOption(file->mutable_options()); - } else { - AddError("Expected top-level statement (e.g. \"message\")."); - return false; - } -} - -// ------------------------------------------------------------------- -// Messages - -bool Parser::ParseMessageDefinition(DescriptorProto* message) { - DO(Consume("message")); - RecordLocation(message, DescriptorPool::ErrorCollector::NAME); - DO(ConsumeIdentifier(message->mutable_name(), "Expected message name.")); - DO(ParseMessageBlock(message)); - return true; -} - -bool Parser::ParseMessageBlock(DescriptorProto* message) { - DO(Consume("{")); - - while (!TryConsume("}")) { - if (AtEnd()) { - AddError("Reached end of input in message definition (missing '}')."); - return false; - } - - if (!ParseMessageStatement(message)) { - // This statement failed to parse. Skip it, but keep looping to parse - // other statements. - SkipStatement(); - } - } - - return true; -} - -bool Parser::ParseMessageStatement(DescriptorProto* message) { - if (TryConsume(";")) { - // empty statement; ignore - return true; - } else if (LookingAt("message")) { - return ParseMessageDefinition(message->add_nested_type()); - } else if (LookingAt("enum")) { - return ParseEnumDefinition(message->add_enum_type()); - } else if (LookingAt("extensions")) { - return ParseExtensions(message); - } else if (LookingAt("extend")) { - return ParseExtend(message->mutable_extension(), - message->mutable_nested_type()); - } else if (LookingAt("option")) { - return ParseOption(message->mutable_options()); - } else { - return ParseMessageField(message->add_field(), - message->mutable_nested_type()); - } -} - -bool Parser::ParseMessageField(FieldDescriptorProto* field, - RepeatedPtrField* messages) { - // Parse label and type. - FieldDescriptorProto::Label label; - DO(ParseLabel(&label)); - field->set_label(label); - - RecordLocation(field, DescriptorPool::ErrorCollector::TYPE); - FieldDescriptorProto::Type type = FieldDescriptorProto::TYPE_INT32; - string type_name; - DO(ParseType(&type, &type_name)); - if (type_name.empty()) { - field->set_type(type); - } else { - field->set_type_name(type_name); - } - - // Parse name and '='. - RecordLocation(field, DescriptorPool::ErrorCollector::NAME); - io::Tokenizer::Token name_token = input_->current(); - DO(ConsumeIdentifier(field->mutable_name(), "Expected field name.")); - DO(Consume("=", "Missing field number.")); - - // Parse field number. - RecordLocation(field, DescriptorPool::ErrorCollector::NUMBER); - int number; - DO(ConsumeInteger(&number, "Expected field number.")); - field->set_number(number); - - // Parse options. - DO(ParseFieldOptions(field)); - - // Deal with groups. - if (type_name.empty() && type == FieldDescriptorProto::TYPE_GROUP) { - DescriptorProto* group = messages->Add(); - group->set_name(field->name()); - // Record name location to match the field name's location. - RecordLocation(group, DescriptorPool::ErrorCollector::NAME, - name_token.line, name_token.column); - - // As a hack for backwards-compatibility, we force the group name to start - // with a capital letter and lower-case the field name. New code should - // not use groups; it should use nested messages. - if (group->name()[0] < 'A' || 'Z' < group->name()[0]) { - AddError(name_token.line, name_token.column, - "Group names must start with a capital letter."); - } - LowerString(field->mutable_name()); - - field->set_type_name(group->name()); - if (LookingAt("{")) { - DO(ParseMessageBlock(group)); - } else { - AddError("Missing group body."); - return false; - } - } else { - DO(Consume(";")); - } - - return true; -} - -bool Parser::ParseFieldOptions(FieldDescriptorProto* field) { - if (!TryConsume("[")) return true; - - // Parse field options. - do { - if (LookingAt("default")) { - DO(ParseDefaultAssignment(field)); - } else { - DO(ParseOptionAssignment(field->mutable_options())); - } - } while (TryConsume(",")); - - DO(Consume("]")); - return true; -} - -bool Parser::ParseDefaultAssignment(FieldDescriptorProto* field) { - if (field->has_default_value()) { - AddError("Already set option \"default\"."); - field->clear_default_value(); - } - - DO(Consume("default")); - DO(Consume("=")); - - RecordLocation(field, DescriptorPool::ErrorCollector::DEFAULT_VALUE); - string* default_value = field->mutable_default_value(); - - if (!field->has_type()) { - // The field has a type name, but we don't know if it is a message or an - // enum yet. Assume an enum for now. - DO(ConsumeIdentifier(default_value, "Expected identifier.")); - return true; - } - - switch (field->type()) { - case FieldDescriptorProto::TYPE_INT32: - case FieldDescriptorProto::TYPE_INT64: - case FieldDescriptorProto::TYPE_SINT32: - case FieldDescriptorProto::TYPE_SINT64: - case FieldDescriptorProto::TYPE_SFIXED32: - case FieldDescriptorProto::TYPE_SFIXED64: { - uint64 max_value = kint64max; - if (field->type() == FieldDescriptorProto::TYPE_INT32 || - field->type() == FieldDescriptorProto::TYPE_SINT32 || - field->type() == FieldDescriptorProto::TYPE_SFIXED32) { - max_value = kint32max; - } - - // These types can be negative. - if (TryConsume("-")) { - default_value->append("-"); - // Two's complement always has one more negative value than positive. - ++max_value; - } - // Parse the integer to verify that it is not out-of-range. - uint64 value; - DO(ConsumeInteger64(max_value, &value, "Expected integer.")); - // And stringify it again. - default_value->append(SimpleItoa(value)); - break; - } - - case FieldDescriptorProto::TYPE_UINT32: - case FieldDescriptorProto::TYPE_UINT64: - case FieldDescriptorProto::TYPE_FIXED32: - case FieldDescriptorProto::TYPE_FIXED64: { - uint64 max_value = kuint64max; - if (field->type() == FieldDescriptorProto::TYPE_UINT32 || - field->type() == FieldDescriptorProto::TYPE_FIXED32) { - max_value = kuint32max; - } - - // Numeric, not negative. - if (TryConsume("-")) { - AddError("Unsigned field can't have negative default value."); - } - // Parse the integer to verify that it is not out-of-range. - uint64 value; - DO(ConsumeInteger64(max_value, &value, "Expected integer.")); - // And stringify it again. - default_value->append(SimpleItoa(value)); - break; - } - - case FieldDescriptorProto::TYPE_FLOAT: - case FieldDescriptorProto::TYPE_DOUBLE: - // These types can be negative. - if (TryConsume("-")) { - default_value->append("-"); - } - // Parse the integer because we have to convert hex integers to decimal - // floats. - double value; - DO(ConsumeNumber(&value, "Expected number.")); - // And stringify it again. - default_value->append(SimpleDtoa(value)); - break; - - case FieldDescriptorProto::TYPE_BOOL: - if (TryConsume("true")) { - default_value->assign("true"); - } else if (TryConsume("false")) { - default_value->assign("false"); - } else { - AddError("Expected \"true\" or \"false\"."); - return false; - } - break; - - case FieldDescriptorProto::TYPE_STRING: - DO(ConsumeString(default_value, "Expected string.")); - break; - - case FieldDescriptorProto::TYPE_BYTES: - DO(ConsumeString(default_value, "Expected string.")); - *default_value = CEscape(*default_value); - break; - - case FieldDescriptorProto::TYPE_ENUM: - DO(ConsumeIdentifier(default_value, "Expected identifier.")); - break; - - case FieldDescriptorProto::TYPE_MESSAGE: - case FieldDescriptorProto::TYPE_GROUP: - AddError("Messages can't have default values."); - return false; - } - - return true; -} - -bool Parser::ParseOptionNamePart(UninterpretedOption* uninterpreted_option) { - UninterpretedOption::NamePart* name = uninterpreted_option->add_name(); - string identifier; // We parse identifiers into this string. - if (LookingAt("(")) { // This is an extension. - DO(Consume("(")); - // An extension name consists of dot-separated identifiers, and may begin - // with a dot. - if (LookingAtType(io::Tokenizer::TYPE_IDENTIFIER)) { - DO(ConsumeIdentifier(&identifier, "Expected identifier.")); - name->mutable_name_part()->append(identifier); - } - while (LookingAt(".")) { - DO(Consume(".")); - name->mutable_name_part()->append("."); - DO(ConsumeIdentifier(&identifier, "Expected identifier.")); - name->mutable_name_part()->append(identifier); - } - DO(Consume(")")); - name->set_is_extension(true); - } else { // This is a regular field. - DO(ConsumeIdentifier(&identifier, "Expected identifier.")); - name->mutable_name_part()->append(identifier); - name->set_is_extension(false); - } - return true; -} - -// We don't interpret the option here. Instead we store it in an -// UninterpretedOption, to be interpreted later. -bool Parser::ParseOptionAssignment(Message* options) { - // Create an entry in the uninterpreted_option field. - const FieldDescriptor* uninterpreted_option_field = options->GetDescriptor()-> - FindFieldByName("uninterpreted_option"); - GOOGLE_CHECK(uninterpreted_option_field != NULL) - << "No field named \"uninterpreted_option\" in the Options proto."; - - UninterpretedOption* uninterpreted_option = down_cast( - options->GetReflection()->AddMessage(options, - uninterpreted_option_field)); - - // Parse dot-separated name. - RecordLocation(uninterpreted_option, - DescriptorPool::ErrorCollector::OPTION_NAME); - - DO(ParseOptionNamePart(uninterpreted_option)); - - while (LookingAt(".")) { - DO(Consume(".")); - DO(ParseOptionNamePart(uninterpreted_option)); - } - - DO(Consume("=")); - - RecordLocation(uninterpreted_option, - DescriptorPool::ErrorCollector::OPTION_VALUE); - - // All values are a single token, except for negative numbers, which consist - // of a single '-' symbol, followed by a positive number. - bool is_negative = TryConsume("-"); - - switch (input_->current().type) { - case io::Tokenizer::TYPE_START: - GOOGLE_LOG(FATAL) << "Trying to read value before any tokens have been read."; - return false; - - case io::Tokenizer::TYPE_END: - AddError("Unexpected end of stream while parsing option value."); - return false; - - case io::Tokenizer::TYPE_IDENTIFIER: { - if (is_negative) { - AddError("Invalid '-' symbol before identifier."); - return false; - } - string value; - DO(ConsumeIdentifier(&value, "Expected identifier.")); - uninterpreted_option->set_identifier_value(value); - break; - } - - case io::Tokenizer::TYPE_INTEGER: { - uint64 value; - uint64 max_value = - is_negative ? static_cast(kint64max) + 1 : kuint64max; - DO(ConsumeInteger64(max_value, &value, "Expected integer.")); - if (is_negative) { - uninterpreted_option->set_negative_int_value(-value); - } else { - uninterpreted_option->set_positive_int_value(value); - } - break; - } - - case io::Tokenizer::TYPE_FLOAT: { - double value; - DO(ConsumeNumber(&value, "Expected number.")); - uninterpreted_option->set_double_value(is_negative ? -value : value); - break; - } - - case io::Tokenizer::TYPE_STRING: { - if (is_negative) { - AddError("Invalid '-' symbol before string."); - return false; - } - string value; - DO(ConsumeString(&value, "Expected string.")); - uninterpreted_option->set_string_value(value); - break; - } - - case io::Tokenizer::TYPE_SYMBOL: - AddError("Expected option value."); - return false; - } - - return true; -} - -bool Parser::ParseExtensions(DescriptorProto* message) { - // Parse the declaration. - DO(Consume("extensions")); - - do { - DescriptorProto::ExtensionRange* range = message->add_extension_range(); - RecordLocation(range, DescriptorPool::ErrorCollector::NUMBER); - - int start, end; - DO(ConsumeInteger(&start, "Expected field number range.")); - - if (TryConsume("to")) { - if (TryConsume("max")) { - end = FieldDescriptor::kMaxNumber; - } else { - DO(ConsumeInteger(&end, "Expected integer.")); - } - } else { - end = start; - } - - // Users like to specify inclusive ranges, but in code we like the end - // number to be exclusive. - ++end; - - range->set_start(start); - range->set_end(end); - } while (TryConsume(",")); - - DO(Consume(";")); - return true; -} - -bool Parser::ParseExtend(RepeatedPtrField* extensions, - RepeatedPtrField* messages) { - DO(Consume("extend")); - - // We expect to see at least one extension field defined in the extend block. - // We need to create it now so we can record the extendee's location. - FieldDescriptorProto* first_field = extensions->Add(); - - // Parse the extendee type. - RecordLocation(first_field, DescriptorPool::ErrorCollector::EXTENDEE); - DO(ParseUserDefinedType(first_field->mutable_extendee())); - - // Parse the block. - DO(Consume("{")); - - bool is_first = true; - - do { - if (AtEnd()) { - AddError("Reached end of input in extend definition (missing '}')."); - return false; - } - - FieldDescriptorProto* field; - if (is_first) { - field = first_field; - is_first = false; - } else { - field = extensions->Add(); - field->set_extendee(first_field->extendee()); - } - - if (!ParseMessageField(field, messages)) { - // This statement failed to parse. Skip it, but keep looping to parse - // other statements. - SkipStatement(); - } - } while(!TryConsume("}")); - - return true; -} - -// ------------------------------------------------------------------- -// Enums - -bool Parser::ParseEnumDefinition(EnumDescriptorProto* enum_type) { - DO(Consume("enum")); - RecordLocation(enum_type, DescriptorPool::ErrorCollector::NAME); - DO(ConsumeIdentifier(enum_type->mutable_name(), "Expected enum name.")); - DO(ParseEnumBlock(enum_type)); - return true; -} - -bool Parser::ParseEnumBlock(EnumDescriptorProto* enum_type) { - DO(Consume("{")); - - while (!TryConsume("}")) { - if (AtEnd()) { - AddError("Reached end of input in enum definition (missing '}')."); - return false; - } - - if (!ParseEnumStatement(enum_type)) { - // This statement failed to parse. Skip it, but keep looping to parse - // other statements. - SkipStatement(); - } - } - - return true; -} - -bool Parser::ParseEnumStatement(EnumDescriptorProto* enum_type) { - if (TryConsume(";")) { - // empty statement; ignore - return true; - } else if (LookingAt("option")) { - return ParseOption(enum_type->mutable_options()); - } else { - return ParseEnumConstant(enum_type->add_value()); - } -} - -bool Parser::ParseEnumConstant(EnumValueDescriptorProto* enum_value) { - RecordLocation(enum_value, DescriptorPool::ErrorCollector::NAME); - DO(ConsumeIdentifier(enum_value->mutable_name(), - "Expected enum constant name.")); - DO(Consume("=", "Missing numeric value for enum constant.")); - - bool is_negative = TryConsume("-"); - int number; - DO(ConsumeInteger(&number, "Expected integer.")); - if (is_negative) number *= -1; - enum_value->set_number(number); - - DO(ParseEnumConstantOptions(enum_value)); - - DO(Consume(";")); - - return true; -} - -bool Parser::ParseEnumConstantOptions(EnumValueDescriptorProto* value) { - if (!TryConsume("[")) return true; - - do { - DO(ParseOptionAssignment(value->mutable_options())); - } while (TryConsume(",")); - - DO(Consume("]")); - return true; -} - -// ------------------------------------------------------------------- -// Services - -bool Parser::ParseServiceDefinition(ServiceDescriptorProto* service) { - DO(Consume("service")); - RecordLocation(service, DescriptorPool::ErrorCollector::NAME); - DO(ConsumeIdentifier(service->mutable_name(), "Expected service name.")); - DO(ParseServiceBlock(service)); - return true; -} - -bool Parser::ParseServiceBlock(ServiceDescriptorProto* service) { - DO(Consume("{")); - - while (!TryConsume("}")) { - if (AtEnd()) { - AddError("Reached end of input in service definition (missing '}')."); - return false; - } - - if (!ParseServiceStatement(service)) { - // This statement failed to parse. Skip it, but keep looping to parse - // other statements. - SkipStatement(); - } - } - - return true; -} - -bool Parser::ParseServiceStatement(ServiceDescriptorProto* service) { - if (TryConsume(";")) { - // empty statement; ignore - return true; - } else if (LookingAt("option")) { - return ParseOption(service->mutable_options()); - } else { - return ParseServiceMethod(service->add_method()); - } -} - -bool Parser::ParseServiceMethod(MethodDescriptorProto* method) { - DO(Consume("rpc")); - RecordLocation(method, DescriptorPool::ErrorCollector::NAME); - DO(ConsumeIdentifier(method->mutable_name(), "Expected method name.")); - - // Parse input type. - DO(Consume("(")); - RecordLocation(method, DescriptorPool::ErrorCollector::INPUT_TYPE); - DO(ParseUserDefinedType(method->mutable_input_type())); - DO(Consume(")")); - - // Parse output type. - DO(Consume("returns")); - DO(Consume("(")); - RecordLocation(method, DescriptorPool::ErrorCollector::OUTPUT_TYPE); - DO(ParseUserDefinedType(method->mutable_output_type())); - DO(Consume(")")); - - if (TryConsume("{")) { - // Options! - while (!TryConsume("}")) { - if (AtEnd()) { - AddError("Reached end of input in method options (missing '}')."); - return false; - } - - if (TryConsume(";")) { - // empty statement; ignore - } else { - if (!ParseOption(method->mutable_options())) { - // This statement failed to parse. Skip it, but keep looping to - // parse other statements. - SkipStatement(); - } - } - } - } else { - DO(Consume(";")); - } - - return true; -} - -// ------------------------------------------------------------------- - -bool Parser::ParseLabel(FieldDescriptorProto::Label* label) { - if (TryConsume("optional")) { - *label = FieldDescriptorProto::LABEL_OPTIONAL; - return true; - } else if (TryConsume("repeated")) { - *label = FieldDescriptorProto::LABEL_REPEATED; - return true; - } else if (TryConsume("required")) { - *label = FieldDescriptorProto::LABEL_REQUIRED; - return true; - } else { - AddError("Expected \"required\", \"optional\", or \"repeated\"."); - // We can actually reasonably recover here by just assuming the user - // forgot the label altogether. - *label = FieldDescriptorProto::LABEL_OPTIONAL; - return true; - } -} - -bool Parser::ParseType(FieldDescriptorProto::Type* type, - string* type_name) { - TypeNameMap::const_iterator iter = kTypeNames.find(input_->current().text); - if (iter != kTypeNames.end()) { - *type = iter->second; - input_->Next(); - } else { - DO(ParseUserDefinedType(type_name)); - } - return true; -} - -bool Parser::ParseUserDefinedType(string* type_name) { - type_name->clear(); - - TypeNameMap::const_iterator iter = kTypeNames.find(input_->current().text); - if (iter != kTypeNames.end()) { - // Note: The only place enum types are allowed is for field types, but - // if we are parsing a field type then we would not get here because - // primitives are allowed there as well. So this error message doesn't - // need to account for enums. - AddError("Expected message type."); - - // Pretend to accept this type so that we can go on parsing. - *type_name = input_->current().text; - input_->Next(); - return true; - } - - // A leading "." means the name is fully-qualified. - if (TryConsume(".")) type_name->append("."); - - // Consume the first part of the name. - string identifier; - DO(ConsumeIdentifier(&identifier, "Expected type name.")); - type_name->append(identifier); - - // Consume more parts. - while (TryConsume(".")) { - type_name->append("."); - DO(ConsumeIdentifier(&identifier, "Expected identifier.")); - type_name->append(identifier); - } - - return true; -} - -// =================================================================== - -bool Parser::ParsePackage(FileDescriptorProto* file) { - if (file->has_package()) { - AddError("Multiple package definitions."); - // Don't append the new package to the old one. Just replace it. Not - // that it really matters since this is an error anyway. - file->clear_package(); - } - - DO(Consume("package")); - - RecordLocation(file, DescriptorPool::ErrorCollector::NAME); - - while (true) { - string identifier; - DO(ConsumeIdentifier(&identifier, "Expected identifier.")); - file->mutable_package()->append(identifier); - if (!TryConsume(".")) break; - file->mutable_package()->append("."); - } - - DO(Consume(";")); - return true; -} - -bool Parser::ParseImport(string* import_filename) { - DO(Consume("import")); - DO(ConsumeString(import_filename, - "Expected a string naming the file to import.")); - DO(Consume(";")); - return true; -} - -bool Parser::ParseOption(Message* options) { - DO(Consume("option")); - DO(ParseOptionAssignment(options)); - DO(Consume(";")); - return true; -} - -// =================================================================== - -SourceLocationTable::SourceLocationTable() {} -SourceLocationTable::~SourceLocationTable() {} - -bool SourceLocationTable::Find( - const Message* descriptor, - DescriptorPool::ErrorCollector::ErrorLocation location, - int* line, int* column) const { - const pair* result = - FindOrNull(location_map_, make_pair(descriptor, location)); - if (result == NULL) { - *line = -1; - *column = 0; - return false; - } else { - *line = result->first; - *column = result->second; - return true; - } -} - -void SourceLocationTable::Add( - const Message* descriptor, - DescriptorPool::ErrorCollector::ErrorLocation location, - int line, int column) { - location_map_[make_pair(descriptor, location)] = make_pair(line, column); -} - -void SourceLocationTable::Clear() { - location_map_.clear(); -} - -} // namespace compiler -} // namespace protobuf -} // namespace google diff --git a/cpp/thirdparty/protobuf-2.3.0/src/google/protobuf/testdata/golden_message b/cpp/thirdparty/protobuf-2.3.0/src/google/protobuf/testdata/golden_message deleted file mode 100644 index 94898e494a4103086e83b2d53f1d9e5e0265017a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 487 zcmd-`6-bjvSIE$~#AtAZ(Kefbfx$6{0Rnt;85kG>^B^3CSO$iBPKgjsj6()v5woG8 zX%(}fp;n3##7#M<`&oVJI z%yz!W1eR{da)7al9d0l&-e6*Q#Kdf5X!?kW+1SwZ6^L#23dA=1%=CllCgT?-5WSb_ z3sVy_Gsi7P5V?=3i * Optimize Java serialization code when writing a small message to a stream. + * Optimize Java serialization of strings so that UTF-8 encoding happens only + once per string per serialization call. + * Clean up some Java warnings. + * Fix bug with permanent callbacks that delete themselves when run. Michael Kucharski * Added CodedInputStream.getTotalBytesRead(). + Kacper Kowalik + * Fixed m4/acx_pthread.m4 problem for some Linux distributions. diff --git a/cpp/thirdparty/protobuf-2.3.0/COPYING.txt b/cpp/thirdparty/protobuf-2.5.0/COPYING.txt similarity index 100% rename from cpp/thirdparty/protobuf-2.3.0/COPYING.txt rename to cpp/thirdparty/protobuf-2.5.0/COPYING.txt diff --git a/cpp/thirdparty/protobuf-2.3.0/INSTALL.txt b/cpp/thirdparty/protobuf-2.5.0/INSTALL.txt similarity index 100% rename from cpp/thirdparty/protobuf-2.3.0/INSTALL.txt rename to cpp/thirdparty/protobuf-2.5.0/INSTALL.txt diff --git a/cpp/thirdparty/protobuf-2.3.0/Makefile.am b/cpp/thirdparty/protobuf-2.5.0/Makefile.am similarity index 68% rename from cpp/thirdparty/protobuf-2.3.0/Makefile.am rename to cpp/thirdparty/protobuf-2.5.0/Makefile.am index b65daee0e..c9286132b 100644 --- a/cpp/thirdparty/protobuf-2.3.0/Makefile.am +++ b/cpp/thirdparty/protobuf-2.5.0/Makefile.am @@ -69,8 +69,10 @@ EXTRA_DIST = \ examples/list_people.py \ java/src/main/java/com/google/protobuf/AbstractMessage.java \ java/src/main/java/com/google/protobuf/AbstractMessageLite.java \ + java/src/main/java/com/google/protobuf/AbstractParser.java \ java/src/main/java/com/google/protobuf/BlockingRpcChannel.java \ java/src/main/java/com/google/protobuf/BlockingService.java \ + java/src/main/java/com/google/protobuf/BoundedByteString.java \ java/src/main/java/com/google/protobuf/ByteString.java \ java/src/main/java/com/google/protobuf/CodedInputStream.java \ java/src/main/java/com/google/protobuf/CodedOutputStream.java \ @@ -83,54 +85,113 @@ EXTRA_DIST = \ java/src/main/java/com/google/protobuf/GeneratedMessageLite.java \ java/src/main/java/com/google/protobuf/Internal.java \ java/src/main/java/com/google/protobuf/InvalidProtocolBufferException.java \ + java/src/main/java/com/google/protobuf/LazyField.java \ + java/src/main/java/com/google/protobuf/LazyStringArrayList.java \ + java/src/main/java/com/google/protobuf/LazyStringList.java \ + java/src/main/java/com/google/protobuf/LiteralByteString.java \ java/src/main/java/com/google/protobuf/Message.java \ java/src/main/java/com/google/protobuf/MessageLite.java \ + java/src/main/java/com/google/protobuf/MessageLiteOrBuilder.java \ + java/src/main/java/com/google/protobuf/MessageOrBuilder.java \ + java/src/main/java/com/google/protobuf/Parser.java \ java/src/main/java/com/google/protobuf/ProtocolMessageEnum.java \ + java/src/main/java/com/google/protobuf/RepeatedFieldBuilder.java \ + java/src/main/java/com/google/protobuf/RopeByteString.java \ java/src/main/java/com/google/protobuf/RpcCallback.java \ java/src/main/java/com/google/protobuf/RpcChannel.java \ java/src/main/java/com/google/protobuf/RpcController.java \ java/src/main/java/com/google/protobuf/RpcUtil.java \ - java/src/main/java/com/google/protobuf/Service.java \ java/src/main/java/com/google/protobuf/ServiceException.java \ + java/src/main/java/com/google/protobuf/Service.java \ + java/src/main/java/com/google/protobuf/SingleFieldBuilder.java \ + java/src/main/java/com/google/protobuf/SmallSortedMap.java \ java/src/main/java/com/google/protobuf/TextFormat.java \ java/src/main/java/com/google/protobuf/UninitializedMessageException.java \ java/src/main/java/com/google/protobuf/UnknownFieldSet.java \ + java/src/main/java/com/google/protobuf/UnmodifiableLazyStringList.java \ + java/src/main/java/com/google/protobuf/Utf8.java \ java/src/main/java/com/google/protobuf/WireFormat.java \ java/src/test/java/com/google/protobuf/AbstractMessageTest.java \ + java/src/test/java/com/google/protobuf/BoundedByteStringTest.java \ + java/src/test/java/com/google/protobuf/ByteStringTest.java \ java/src/test/java/com/google/protobuf/CodedInputStreamTest.java \ java/src/test/java/com/google/protobuf/CodedOutputStreamTest.java \ + java/src/test/java/com/google/protobuf/DeprecatedFieldTest.java \ java/src/test/java/com/google/protobuf/DescriptorsTest.java \ java/src/test/java/com/google/protobuf/DynamicMessageTest.java \ + java/src/test/java/com/google/protobuf/ForceFieldBuildersPreRun.java \ java/src/test/java/com/google/protobuf/GeneratedMessageTest.java \ + java/src/test/java/com/google/protobuf/IsValidUtf8Test.java \ + java/src/test/java/com/google/protobuf/IsValidUtf8TestUtil.java \ + java/src/test/java/com/google/protobuf/LazyStringArrayListTest.java \ + java/src/test/java/com/google/protobuf/LazyStringEndToEndTest.java \ + java/src/test/java/com/google/protobuf/LiteralByteStringTest.java \ java/src/test/java/com/google/protobuf/LiteTest.java \ java/src/test/java/com/google/protobuf/MessageTest.java \ + java/src/test/java/com/google/protobuf/NestedBuildersTest.java \ + java/src/test/java/com/google/protobuf/ParserTest.java \ + java/src/test/java/com/google/protobuf/RepeatedFieldBuilderTest.java \ + java/src/test/java/com/google/protobuf/RopeByteStringSubstringTest.java \ + java/src/test/java/com/google/protobuf/RopeByteStringTest.java \ java/src/test/java/com/google/protobuf/ServiceTest.java \ + java/src/test/java/com/google/protobuf/SingleFieldBuilderTest.java \ + java/src/test/java/com/google/protobuf/SmallSortedMapTest.java \ + java/src/test/java/com/google/protobuf/TestBadIdentifiers.java \ java/src/test/java/com/google/protobuf/TestUtil.java \ java/src/test/java/com/google/protobuf/TextFormatTest.java \ java/src/test/java/com/google/protobuf/UnknownFieldSetTest.java \ + java/src/test/java/com/google/protobuf/UnmodifiableLazyStringListTest.java \ java/src/test/java/com/google/protobuf/WireFormatTest.java \ java/src/test/java/com/google/protobuf/multiple_files_test.proto \ + java/src/test/java/com/google/protobuf/nested_builders_test.proto \ + java/src/test/java/com/google/protobuf/nested_extension_lite.proto \ + java/src/test/java/com/google/protobuf/nested_extension.proto \ + java/src/test/java/com/google/protobuf/non_nested_extension_lite.proto \ + java/src/test/java/com/google/protobuf/non_nested_extension.proto \ + java/src/test/java/com/google/protobuf/test_bad_identifiers.proto \ java/pom.xml \ java/README.txt \ python/google/protobuf/internal/generator_test.py \ python/google/protobuf/internal/containers.py \ python/google/protobuf/internal/decoder.py \ + python/google/protobuf/internal/descriptor_database_test.py \ + python/google/protobuf/internal/descriptor_pool_test.py \ python/google/protobuf/internal/descriptor_test.py \ python/google/protobuf/internal/encoder.py \ + python/google/protobuf/internal/enum_type_wrapper.py \ + python/google/protobuf/internal/factory_test1.proto \ + python/google/protobuf/internal/factory_test2.proto \ + python/google/protobuf/internal/message_cpp_test.py \ + python/google/protobuf/internal/message_factory_test.py \ python/google/protobuf/internal/message_listener.py \ python/google/protobuf/internal/message_test.py \ python/google/protobuf/internal/more_extensions.proto \ + python/google/protobuf/internal/more_extensions_dynamic.proto \ python/google/protobuf/internal/more_messages.proto \ + python/google/protobuf/internal/python_message.py \ + python/google/protobuf/internal/cpp_message.py \ + python/google/protobuf/internal/api_implementation.py \ python/google/protobuf/internal/reflection_test.py \ + python/google/protobuf/internal/reflection_cpp_generated_test.py \ python/google/protobuf/internal/service_reflection_test.py \ + python/google/protobuf/internal/test_bad_identifiers.proto \ python/google/protobuf/internal/test_util.py \ python/google/protobuf/internal/text_format_test.py \ python/google/protobuf/internal/type_checkers.py \ + python/google/protobuf/internal/unknown_fields_test.py \ python/google/protobuf/internal/wire_format.py \ python/google/protobuf/internal/wire_format_test.py \ python/google/protobuf/internal/__init__.py \ + python/google/protobuf/pyext/python-proto2.cc \ + python/google/protobuf/pyext/python_descriptor.cc \ + python/google/protobuf/pyext/python_descriptor.h \ + python/google/protobuf/pyext/python_protobuf.cc \ + python/google/protobuf/pyext/python_protobuf.h \ python/google/protobuf/descriptor.py \ + python/google/protobuf/descriptor_database.py \ + python/google/protobuf/descriptor_pool.py \ python/google/protobuf/message.py \ + python/google/protobuf/message_factory.py \ python/google/protobuf/reflection.py \ python/google/protobuf/service.py \ python/google/protobuf/service_reflection.py \ diff --git a/cpp/thirdparty/protobuf-2.3.0/Makefile.in b/cpp/thirdparty/protobuf-2.5.0/Makefile.in similarity index 66% rename from cpp/thirdparty/protobuf-2.3.0/Makefile.in rename to cpp/thirdparty/protobuf-2.5.0/Makefile.in index 22fd5ab9d..12ae8231a 100644 --- a/cpp/thirdparty/protobuf-2.3.0/Makefile.in +++ b/cpp/thirdparty/protobuf-2.5.0/Makefile.in @@ -1,8 +1,9 @@ -# Makefile.in generated by automake 1.10.1 from Makefile.am. +# Makefile.in generated by automake 1.11.3 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, -# 2003, 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc. +# 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software +# Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. @@ -16,8 +17,9 @@ VPATH = @srcdir@ pkgdatadir = $(datadir)/@PACKAGE@ -pkglibdir = $(libdir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c @@ -53,6 +55,7 @@ am__CONFIG_DISTCLEAN_FILES = config.status config.cache config.log \ mkinstalldirs = $(install_sh) -d CONFIG_HEADER = config.h CONFIG_CLEAN_FILES = protobuf.pc protobuf-lite.pc +CONFIG_CLEAN_VPATH_FILES = SOURCES = DIST_SOURCES = RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \ @@ -67,24 +70,76 @@ am__vpath_adj = case $$p in \ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ *) f=$$p;; \ esac; -am__strip_dir = `echo $$p | sed -e 's|^.*/||'`; +am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; +am__install_max = 40 +am__nobase_strip_setup = \ + srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` +am__nobase_strip = \ + for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" +am__nobase_list = $(am__nobase_strip_setup); \ + for p in $$list; do echo "$$p $$p"; done | \ + sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ + $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ + if (++n[$$2] == $(am__install_max)) \ + { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ + END { for (dir in files) print dir, files[dir] }' +am__base_list = \ + sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ + sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' +am__uninstall_files_from_dir = { \ + test -z "$$files" \ + || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ + || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ + $(am__cd) "$$dir" && rm -f $$files; }; \ + } am__installdirs = "$(DESTDIR)$(pkgconfigdir)" -pkgconfigDATA_INSTALL = $(INSTALL_DATA) DATA = $(pkgconfig_DATA) RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \ distclean-recursive maintainer-clean-recursive +AM_RECURSIVE_TARGETS = $(RECURSIVE_TARGETS:-recursive=) \ + $(RECURSIVE_CLEAN_TARGETS:-recursive=) tags TAGS ctags CTAGS \ + distdir dist dist-all distcheck ETAGS = etags CTAGS = ctags DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) distdir = $(PACKAGE)-$(VERSION) top_distdir = $(distdir) am__remove_distdir = \ - { test ! -d $(distdir) \ - || { find $(distdir) -type d ! -perm -200 -exec chmod u+w {} ';' \ - && rm -fr $(distdir); }; } + if test -d "$(distdir)"; then \ + find "$(distdir)" -type d ! -perm -200 -exec chmod u+w {} ';' \ + && rm -rf "$(distdir)" \ + || { sleep 5 && rm -rf "$(distdir)"; }; \ + else :; fi +am__relativize = \ + dir0=`pwd`; \ + sed_first='s,^\([^/]*\)/.*$$,\1,'; \ + sed_rest='s,^[^/]*/*,,'; \ + sed_last='s,^.*/\([^/]*\)$$,\1,'; \ + sed_butlast='s,/*[^/]*$$,,'; \ + while test -n "$$dir1"; do \ + first=`echo "$$dir1" | sed -e "$$sed_first"`; \ + if test "$$first" != "."; then \ + if test "$$first" = ".."; then \ + dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \ + dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \ + else \ + first2=`echo "$$dir2" | sed -e "$$sed_first"`; \ + if test "$$first2" = "$$first"; then \ + dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \ + else \ + dir2="../$$dir2"; \ + fi; \ + dir0="$$dir0"/"$$first"; \ + fi; \ + fi; \ + dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \ + done; \ + reldir="$$dir2" DIST_ARCHIVES = $(distdir).tar.gz GZIP_ENV = --best distuninstallcheck_listfiles = find . -type f -print +am__distuninstallcheck_listfiles = $(distuninstallcheck_listfiles) \ + | sed 's|^\./|$(prefix)/|' | grep -v '$(infodir)/dir$$' distcleancheck_listfiles = find . -type f -print ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ @@ -104,6 +159,7 @@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ +DLLTOOL = @DLLTOOL@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ @@ -127,10 +183,13 @@ LIBTOOL = @LIBTOOL@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBOBJS = @LTLIBOBJS@ +MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ +MANIFEST_TOOL = @MANIFEST_TOOL@ MKDIR_P = @MKDIR_P@ NM = @NM@ NMEDIT = @NMEDIT@ +OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ @@ -139,6 +198,7 @@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ POW_LIB = @POW_LIB@ @@ -157,6 +217,7 @@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ +ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ @@ -191,7 +252,6 @@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ -lt_ECHO = @lt_ECHO@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ @@ -209,6 +269,7 @@ target_alias = @target_alias@ target_cpu = @target_cpu@ target_os = @target_os@ target_vendor = @target_vendor@ +top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ ACLOCAL_AMFLAGS = -I m4 @@ -256,8 +317,10 @@ EXTRA_DIST = \ examples/list_people.py \ java/src/main/java/com/google/protobuf/AbstractMessage.java \ java/src/main/java/com/google/protobuf/AbstractMessageLite.java \ + java/src/main/java/com/google/protobuf/AbstractParser.java \ java/src/main/java/com/google/protobuf/BlockingRpcChannel.java \ java/src/main/java/com/google/protobuf/BlockingService.java \ + java/src/main/java/com/google/protobuf/BoundedByteString.java \ java/src/main/java/com/google/protobuf/ByteString.java \ java/src/main/java/com/google/protobuf/CodedInputStream.java \ java/src/main/java/com/google/protobuf/CodedOutputStream.java \ @@ -270,54 +333,113 @@ EXTRA_DIST = \ java/src/main/java/com/google/protobuf/GeneratedMessageLite.java \ java/src/main/java/com/google/protobuf/Internal.java \ java/src/main/java/com/google/protobuf/InvalidProtocolBufferException.java \ + java/src/main/java/com/google/protobuf/LazyField.java \ + java/src/main/java/com/google/protobuf/LazyStringArrayList.java \ + java/src/main/java/com/google/protobuf/LazyStringList.java \ + java/src/main/java/com/google/protobuf/LiteralByteString.java \ java/src/main/java/com/google/protobuf/Message.java \ java/src/main/java/com/google/protobuf/MessageLite.java \ + java/src/main/java/com/google/protobuf/MessageLiteOrBuilder.java \ + java/src/main/java/com/google/protobuf/MessageOrBuilder.java \ + java/src/main/java/com/google/protobuf/Parser.java \ java/src/main/java/com/google/protobuf/ProtocolMessageEnum.java \ + java/src/main/java/com/google/protobuf/RepeatedFieldBuilder.java \ + java/src/main/java/com/google/protobuf/RopeByteString.java \ java/src/main/java/com/google/protobuf/RpcCallback.java \ java/src/main/java/com/google/protobuf/RpcChannel.java \ java/src/main/java/com/google/protobuf/RpcController.java \ java/src/main/java/com/google/protobuf/RpcUtil.java \ - java/src/main/java/com/google/protobuf/Service.java \ java/src/main/java/com/google/protobuf/ServiceException.java \ + java/src/main/java/com/google/protobuf/Service.java \ + java/src/main/java/com/google/protobuf/SingleFieldBuilder.java \ + java/src/main/java/com/google/protobuf/SmallSortedMap.java \ java/src/main/java/com/google/protobuf/TextFormat.java \ java/src/main/java/com/google/protobuf/UninitializedMessageException.java \ java/src/main/java/com/google/protobuf/UnknownFieldSet.java \ + java/src/main/java/com/google/protobuf/UnmodifiableLazyStringList.java \ + java/src/main/java/com/google/protobuf/Utf8.java \ java/src/main/java/com/google/protobuf/WireFormat.java \ java/src/test/java/com/google/protobuf/AbstractMessageTest.java \ + java/src/test/java/com/google/protobuf/BoundedByteStringTest.java \ + java/src/test/java/com/google/protobuf/ByteStringTest.java \ java/src/test/java/com/google/protobuf/CodedInputStreamTest.java \ java/src/test/java/com/google/protobuf/CodedOutputStreamTest.java \ + java/src/test/java/com/google/protobuf/DeprecatedFieldTest.java \ java/src/test/java/com/google/protobuf/DescriptorsTest.java \ java/src/test/java/com/google/protobuf/DynamicMessageTest.java \ + java/src/test/java/com/google/protobuf/ForceFieldBuildersPreRun.java \ java/src/test/java/com/google/protobuf/GeneratedMessageTest.java \ + java/src/test/java/com/google/protobuf/IsValidUtf8Test.java \ + java/src/test/java/com/google/protobuf/IsValidUtf8TestUtil.java \ + java/src/test/java/com/google/protobuf/LazyStringArrayListTest.java \ + java/src/test/java/com/google/protobuf/LazyStringEndToEndTest.java \ + java/src/test/java/com/google/protobuf/LiteralByteStringTest.java \ java/src/test/java/com/google/protobuf/LiteTest.java \ java/src/test/java/com/google/protobuf/MessageTest.java \ + java/src/test/java/com/google/protobuf/NestedBuildersTest.java \ + java/src/test/java/com/google/protobuf/ParserTest.java \ + java/src/test/java/com/google/protobuf/RepeatedFieldBuilderTest.java \ + java/src/test/java/com/google/protobuf/RopeByteStringSubstringTest.java \ + java/src/test/java/com/google/protobuf/RopeByteStringTest.java \ java/src/test/java/com/google/protobuf/ServiceTest.java \ + java/src/test/java/com/google/protobuf/SingleFieldBuilderTest.java \ + java/src/test/java/com/google/protobuf/SmallSortedMapTest.java \ + java/src/test/java/com/google/protobuf/TestBadIdentifiers.java \ java/src/test/java/com/google/protobuf/TestUtil.java \ java/src/test/java/com/google/protobuf/TextFormatTest.java \ java/src/test/java/com/google/protobuf/UnknownFieldSetTest.java \ + java/src/test/java/com/google/protobuf/UnmodifiableLazyStringListTest.java \ java/src/test/java/com/google/protobuf/WireFormatTest.java \ java/src/test/java/com/google/protobuf/multiple_files_test.proto \ + java/src/test/java/com/google/protobuf/nested_builders_test.proto \ + java/src/test/java/com/google/protobuf/nested_extension_lite.proto \ + java/src/test/java/com/google/protobuf/nested_extension.proto \ + java/src/test/java/com/google/protobuf/non_nested_extension_lite.proto \ + java/src/test/java/com/google/protobuf/non_nested_extension.proto \ + java/src/test/java/com/google/protobuf/test_bad_identifiers.proto \ java/pom.xml \ java/README.txt \ python/google/protobuf/internal/generator_test.py \ python/google/protobuf/internal/containers.py \ python/google/protobuf/internal/decoder.py \ + python/google/protobuf/internal/descriptor_database_test.py \ + python/google/protobuf/internal/descriptor_pool_test.py \ python/google/protobuf/internal/descriptor_test.py \ python/google/protobuf/internal/encoder.py \ + python/google/protobuf/internal/enum_type_wrapper.py \ + python/google/protobuf/internal/factory_test1.proto \ + python/google/protobuf/internal/factory_test2.proto \ + python/google/protobuf/internal/message_cpp_test.py \ + python/google/protobuf/internal/message_factory_test.py \ python/google/protobuf/internal/message_listener.py \ python/google/protobuf/internal/message_test.py \ python/google/protobuf/internal/more_extensions.proto \ + python/google/protobuf/internal/more_extensions_dynamic.proto \ python/google/protobuf/internal/more_messages.proto \ + python/google/protobuf/internal/python_message.py \ + python/google/protobuf/internal/cpp_message.py \ + python/google/protobuf/internal/api_implementation.py \ python/google/protobuf/internal/reflection_test.py \ + python/google/protobuf/internal/reflection_cpp_generated_test.py \ python/google/protobuf/internal/service_reflection_test.py \ + python/google/protobuf/internal/test_bad_identifiers.proto \ python/google/protobuf/internal/test_util.py \ python/google/protobuf/internal/text_format_test.py \ python/google/protobuf/internal/type_checkers.py \ + python/google/protobuf/internal/unknown_fields_test.py \ python/google/protobuf/internal/wire_format.py \ python/google/protobuf/internal/wire_format_test.py \ python/google/protobuf/internal/__init__.py \ + python/google/protobuf/pyext/python-proto2.cc \ + python/google/protobuf/pyext/python_descriptor.cc \ + python/google/protobuf/pyext/python_descriptor.h \ + python/google/protobuf/pyext/python_protobuf.cc \ + python/google/protobuf/pyext/python_protobuf.h \ python/google/protobuf/descriptor.py \ + python/google/protobuf/descriptor_database.py \ + python/google/protobuf/descriptor_pool.py \ python/google/protobuf/message.py \ + python/google/protobuf/message_factory.py \ python/google/protobuf/reflection.py \ python/google/protobuf/service.py \ python/google/protobuf/service_reflection.py \ @@ -355,21 +477,21 @@ all: config.h $(MAKE) $(AM_MAKEFLAGS) all-recursive .SUFFIXES: -am--refresh: +am--refresh: Makefile @: -$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) +$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ - echo ' cd $(srcdir) && $(AUTOMAKE) --foreign '; \ - cd $(srcdir) && $(AUTOMAKE) --foreign \ + echo ' cd $(srcdir) && $(AUTOMAKE) --foreign'; \ + $(am__cd) $(srcdir) && $(AUTOMAKE) --foreign \ && exit 0; \ exit 1;; \ esac; \ done; \ - echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign Makefile'; \ - cd $(top_srcdir) && \ - $(AUTOMAKE) --foreign Makefile + echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --foreign Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ @@ -384,22 +506,21 @@ Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) $(SHELL) ./config.status --recheck -$(top_srcdir)/configure: $(am__configure_deps) - cd $(srcdir) && $(AUTOCONF) -$(ACLOCAL_M4): $(am__aclocal_m4_deps) - cd $(srcdir) && $(ACLOCAL) $(ACLOCAL_AMFLAGS) +$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) + $(am__cd) $(srcdir) && $(AUTOCONF) +$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) + $(am__cd) $(srcdir) && $(ACLOCAL) $(ACLOCAL_AMFLAGS) +$(am__aclocal_m4_deps): config.h: stamp-h1 - @if test ! -f $@; then \ - rm -f stamp-h1; \ - $(MAKE) $(AM_MAKEFLAGS) stamp-h1; \ - else :; fi + @if test ! -f $@; then rm -f stamp-h1; else :; fi + @if test ! -f $@; then $(MAKE) $(AM_MAKEFLAGS) stamp-h1; else :; fi stamp-h1: $(srcdir)/config.h.in $(top_builddir)/config.status @rm -f stamp-h1 cd $(top_builddir) && $(SHELL) ./config.status config.h -$(srcdir)/config.h.in: $(am__configure_deps) - cd $(top_srcdir) && $(AUTOHEADER) +$(srcdir)/config.h.in: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) + ($(am__cd) $(top_srcdir) && $(AUTOHEADER)) rm -f stamp-h1 touch $@ @@ -417,24 +538,25 @@ clean-libtool: -rm -rf .libs _libs distclean-libtool: - -rm -f libtool + -rm -f libtool config.lt install-pkgconfigDATA: $(pkgconfig_DATA) @$(NORMAL_INSTALL) test -z "$(pkgconfigdir)" || $(MKDIR_P) "$(DESTDIR)$(pkgconfigdir)" - @list='$(pkgconfig_DATA)'; for p in $$list; do \ + @list='$(pkgconfig_DATA)'; test -n "$(pkgconfigdir)" || list=; \ + for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ - f=$(am__strip_dir) \ - echo " $(pkgconfigDATA_INSTALL) '$$d$$p' '$(DESTDIR)$(pkgconfigdir)/$$f'"; \ - $(pkgconfigDATA_INSTALL) "$$d$$p" "$(DESTDIR)$(pkgconfigdir)/$$f"; \ + echo "$$d$$p"; \ + done | $(am__base_list) | \ + while read files; do \ + echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(pkgconfigdir)'"; \ + $(INSTALL_DATA) $$files "$(DESTDIR)$(pkgconfigdir)" || exit $$?; \ done uninstall-pkgconfigDATA: @$(NORMAL_UNINSTALL) - @list='$(pkgconfig_DATA)'; for p in $$list; do \ - f=$(am__strip_dir) \ - echo " rm -f '$(DESTDIR)$(pkgconfigdir)/$$f'"; \ - rm -f "$(DESTDIR)$(pkgconfigdir)/$$f"; \ - done + @list='$(pkgconfig_DATA)'; test -n "$(pkgconfigdir)" || list=; \ + files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ + dir='$(DESTDIR)$(pkgconfigdir)'; $(am__uninstall_files_from_dir) # This directory's subdirectories are mostly independent; you can cd # into them and run `make' without going through this Makefile. @@ -443,7 +565,7 @@ uninstall-pkgconfigDATA: # (which will cause the Makefiles to be regenerated when you run `make'); # (2) otherwise, pass the desired values on the `make' command line. $(RECURSIVE_TARGETS): - @failcom='exit 1'; \ + @fail= failcom='exit 1'; \ for f in x $$MAKEFLAGS; do \ case $$f in \ *=* | --[!k]*);; \ @@ -460,7 +582,7 @@ $(RECURSIVE_TARGETS): else \ local_target="$$target"; \ fi; \ - (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ + ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ || eval $$failcom; \ done; \ if test "$$dot_seen" = "no"; then \ @@ -468,7 +590,7 @@ $(RECURSIVE_TARGETS): fi; test -z "$$fail" $(RECURSIVE_CLEAN_TARGETS): - @failcom='exit 1'; \ + @fail= failcom='exit 1'; \ for f in x $$MAKEFLAGS; do \ case $$f in \ *=* | --[!k]*);; \ @@ -494,16 +616,16 @@ $(RECURSIVE_CLEAN_TARGETS): else \ local_target="$$target"; \ fi; \ - (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ + ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ || eval $$failcom; \ done && test -z "$$fail" tags-recursive: list='$(SUBDIRS)'; for subdir in $$list; do \ - test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \ + test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \ done ctags-recursive: list='$(SUBDIRS)'; for subdir in $$list; do \ - test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \ + test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \ done ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) @@ -511,14 +633,14 @@ ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ - $(AWK) '{ files[$$0] = 1; nonemtpy = 1; } \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ mkid -fID $$unique tags: TAGS TAGS: tags-recursive $(HEADERS) $(SOURCES) config.h.in $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) - tags=; \ + set x; \ here=`pwd`; \ if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \ include_option=--etags-include; \ @@ -530,7 +652,7 @@ TAGS: tags-recursive $(HEADERS) $(SOURCES) config.h.in $(TAGS_DEPENDENCIES) \ list='$(SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ test ! -f $$subdir/TAGS || \ - tags="$$tags $$include_option=$$here/$$subdir/TAGS"; \ + set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \ fi; \ done; \ list='$(SOURCES) $(HEADERS) config.h.in $(LISP) $(TAGS_FILES)'; \ @@ -539,36 +661,41 @@ TAGS: tags-recursive $(HEADERS) $(SOURCES) config.h.in $(TAGS_DEPENDENCIES) \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ - if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \ + shift; \ + if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ - $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ - $$tags $$unique; \ + if test $$# -gt 0; then \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + "$$@" $$unique; \ + else \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$unique; \ + fi; \ fi ctags: CTAGS CTAGS: ctags-recursive $(HEADERS) $(SOURCES) config.h.in $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) - tags=; \ list='$(SOURCES) $(HEADERS) config.h.in $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ - test -z "$(CTAGS_ARGS)$$tags$$unique" \ + test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ - $$tags $$unique + $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ - && cd $(top_srcdir) \ - && gtags -i $(GTAGS_ARGS) $$here + && $(am__cd) $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) "$$here" distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(DISTFILES) $(am__remove_distdir) - test -d $(distdir) || mkdir $(distdir) + test -d "$(distdir)" || mkdir "$(distdir)" @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ @@ -584,50 +711,75 @@ distdir: $(DISTFILES) if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ - cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ - cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ + cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ - test -f $(distdir)/$$file \ - || cp -p $$d/$$file $(distdir)/$$file \ + test -f "$(distdir)/$$file" \ + || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done - list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ + @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ test -d "$(distdir)/$$subdir" \ || $(MKDIR_P) "$(distdir)/$$subdir" \ || exit 1; \ - distdir=`$(am__cd) $(distdir) && pwd`; \ - top_distdir=`$(am__cd) $(top_distdir) && pwd`; \ - (cd $$subdir && \ + fi; \ + done + @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ + dir1=$$subdir; dir2="$(distdir)/$$subdir"; \ + $(am__relativize); \ + new_distdir=$$reldir; \ + dir1=$$subdir; dir2="$(top_distdir)"; \ + $(am__relativize); \ + new_top_distdir=$$reldir; \ + echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \ + echo " am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \ + ($(am__cd) $$subdir && \ $(MAKE) $(AM_MAKEFLAGS) \ - top_distdir="$$top_distdir" \ - distdir="$$distdir/$$subdir" \ + top_distdir="$$new_top_distdir" \ + distdir="$$new_distdir" \ am__remove_distdir=: \ am__skip_length_check=: \ + am__skip_mode_fix=: \ distdir) \ || exit 1; \ fi; \ done - -find $(distdir) -type d ! -perm -777 -exec chmod a+rwx {} \; -o \ + -test -n "$(am__skip_mode_fix)" \ + || find "$(distdir)" -type d ! -perm -755 \ + -exec chmod u+rwx,go+rx {} \; -o \ ! -type d ! -perm -444 -links 1 -exec chmod a+r {} \; -o \ ! -type d ! -perm -400 -exec chmod a+r {} \; -o \ ! -type d ! -perm -444 -exec $(install_sh) -c -m a+r {} {} \; \ - || chmod -R a+r $(distdir) + || chmod -R a+r "$(distdir)" dist-gzip: distdir tardir=$(distdir) && $(am__tar) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz $(am__remove_distdir) dist-bzip2: distdir - tardir=$(distdir) && $(am__tar) | bzip2 -9 -c >$(distdir).tar.bz2 + tardir=$(distdir) && $(am__tar) | BZIP2=$${BZIP2--9} bzip2 -c >$(distdir).tar.bz2 + $(am__remove_distdir) + +dist-lzip: distdir + tardir=$(distdir) && $(am__tar) | lzip -c $${LZIP_OPT--9} >$(distdir).tar.lz $(am__remove_distdir) dist-lzma: distdir tardir=$(distdir) && $(am__tar) | lzma -9 -c >$(distdir).tar.lzma $(am__remove_distdir) +dist-xz: distdir + tardir=$(distdir) && $(am__tar) | XZ_OPT=$${XZ_OPT--e} xz -c >$(distdir).tar.xz + $(am__remove_distdir) + dist-tarZ: distdir tardir=$(distdir) && $(am__tar) | compress -c >$(distdir).tar.Z $(am__remove_distdir) @@ -651,15 +803,19 @@ dist dist-all: distdir distcheck: dist case '$(DIST_ARCHIVES)' in \ *.tar.gz*) \ - GZIP=$(GZIP_ENV) gunzip -c $(distdir).tar.gz | $(am__untar) ;;\ + GZIP=$(GZIP_ENV) gzip -dc $(distdir).tar.gz | $(am__untar) ;;\ *.tar.bz2*) \ - bunzip2 -c $(distdir).tar.bz2 | $(am__untar) ;;\ + bzip2 -dc $(distdir).tar.bz2 | $(am__untar) ;;\ *.tar.lzma*) \ - unlzma -c $(distdir).tar.lzma | $(am__untar) ;;\ + lzma -dc $(distdir).tar.lzma | $(am__untar) ;;\ + *.tar.lz*) \ + lzip -dc $(distdir).tar.lz | $(am__untar) ;;\ + *.tar.xz*) \ + xz -dc $(distdir).tar.xz | $(am__untar) ;;\ *.tar.Z*) \ uncompress -c $(distdir).tar.Z | $(am__untar) ;;\ *.shar.gz*) \ - GZIP=$(GZIP_ENV) gunzip -c $(distdir).shar.gz | unshar ;;\ + GZIP=$(GZIP_ENV) gzip -dc $(distdir).shar.gz | unshar ;;\ *.zip*) \ unzip $(distdir).zip ;;\ esac @@ -667,10 +823,13 @@ distcheck: dist mkdir $(distdir)/_build mkdir $(distdir)/_inst chmod a-w $(distdir) + test -d $(distdir)/_build || exit 0; \ dc_install_base=`$(am__cd) $(distdir)/_inst && pwd | sed -e 's,^[^:\\/]:[\\/],/,'` \ && dc_destdir="$${TMPDIR-/tmp}/am-dc-$$$$/" \ - && cd $(distdir)/_build \ + && am__cwd=`pwd` \ + && $(am__cd) $(distdir)/_build \ && ../configure --srcdir=.. --prefix="$$dc_install_base" \ + $(AM_DISTCHECK_CONFIGURE_FLAGS) \ $(DISTCHECK_CONFIGURE_FLAGS) \ && $(MAKE) $(AM_MAKEFLAGS) \ && $(MAKE) $(AM_MAKEFLAGS) dvi \ @@ -691,14 +850,24 @@ distcheck: dist && rm -rf "$$dc_destdir" \ && $(MAKE) $(AM_MAKEFLAGS) dist \ && rm -rf $(DIST_ARCHIVES) \ - && $(MAKE) $(AM_MAKEFLAGS) distcleancheck + && $(MAKE) $(AM_MAKEFLAGS) distcleancheck \ + && cd "$$am__cwd" \ + || exit 1 $(am__remove_distdir) @(echo "$(distdir) archives ready for distribution: "; \ list='$(DIST_ARCHIVES)'; for i in $$list; do echo $$i; done) | \ sed -e 1h -e 1s/./=/g -e 1p -e 1x -e '$$p' -e '$$x' distuninstallcheck: - @cd $(distuninstallcheck_dir) \ - && test `$(distuninstallcheck_listfiles) | wc -l` -le 1 \ + @test -n '$(distuninstallcheck_dir)' || { \ + echo 'ERROR: trying to run $@ with an empty' \ + '$$(distuninstallcheck_dir)' >&2; \ + exit 1; \ + }; \ + $(am__cd) '$(distuninstallcheck_dir)' || { \ + echo 'ERROR: cannot chdir into $(distuninstallcheck_dir)' >&2; \ + exit 1; \ + }; \ + test `$(am__distuninstallcheck_listfiles) | wc -l` -eq 0 \ || { echo "ERROR: files left after uninstall:" ; \ if test -n "$(DESTDIR)"; then \ echo " (check DESTDIR support)"; \ @@ -733,16 +902,22 @@ install-am: all-am installcheck: installcheck-recursive install-strip: - $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ - install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ - `test -z '$(STRIP)' || \ - echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install + if test -z '$(STRIP)'; then \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + install; \ + else \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ + fi mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @@ -764,6 +939,8 @@ dvi-am: html: html-recursive +html-am: + info: info-recursive info-am: @@ -772,18 +949,28 @@ install-data-am: install-pkgconfigDATA install-dvi: install-dvi-recursive +install-dvi-am: + install-exec-am: install-html: install-html-recursive +install-html-am: + install-info: install-info-recursive +install-info-am: + install-man: install-pdf: install-pdf-recursive +install-pdf-am: + install-ps: install-ps-recursive +install-ps-am: + installcheck-am: maintainer-clean: maintainer-clean-recursive @@ -806,25 +993,26 @@ ps-am: uninstall-am: uninstall-pkgconfigDATA -.MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) install-am \ - install-strip +.MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) all check-am \ + ctags-recursive install-am install-strip tags-recursive .PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \ all all-am am--refresh check check-am check-local clean \ clean-generic clean-libtool clean-local ctags ctags-recursive \ - dist dist-all dist-bzip2 dist-gzip dist-lzma dist-shar \ - dist-tarZ dist-zip distcheck distclean distclean-generic \ - distclean-hdr distclean-libtool distclean-tags distcleancheck \ - distdir distuninstallcheck dvi dvi-am html html-am info \ - info-am install install-am install-data install-data-am \ - install-dvi install-dvi-am install-exec install-exec-am \ - install-html install-html-am install-info install-info-am \ - install-man install-pdf install-pdf-am install-pkgconfigDATA \ - install-ps install-ps-am install-strip installcheck \ - installcheck-am installdirs installdirs-am maintainer-clean \ - maintainer-clean-generic mostlyclean mostlyclean-generic \ - mostlyclean-libtool pdf pdf-am ps ps-am tags tags-recursive \ - uninstall uninstall-am uninstall-pkgconfigDATA + dist dist-all dist-bzip2 dist-gzip dist-lzip dist-lzma \ + dist-shar dist-tarZ dist-xz dist-zip distcheck distclean \ + distclean-generic distclean-hdr distclean-libtool \ + distclean-tags distcleancheck distdir distuninstallcheck dvi \ + dvi-am html html-am info info-am install install-am \ + install-data install-data-am install-dvi install-dvi-am \ + install-exec install-exec-am install-html install-html-am \ + install-info install-info-am install-man install-pdf \ + install-pdf-am install-pkgconfigDATA install-ps install-ps-am \ + install-strip installcheck installcheck-am installdirs \ + installdirs-am maintainer-clean maintainer-clean-generic \ + mostlyclean mostlyclean-generic mostlyclean-libtool pdf pdf-am \ + ps ps-am tags tags-recursive uninstall uninstall-am \ + uninstall-pkgconfigDATA # Build gtest before we build protobuf tests. We don't add gtest to SUBDIRS @@ -847,6 +1035,7 @@ clean-local: echo "Making clean in gtest"; \ cd gtest && $(MAKE) $(AM_MAKEFLAGS) clean; \ fi + # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: diff --git a/cpp/thirdparty/protobuf-2.3.0/README.txt b/cpp/thirdparty/protobuf-2.5.0/README.txt similarity index 98% rename from cpp/thirdparty/protobuf-2.3.0/README.txt rename to cpp/thirdparty/protobuf-2.5.0/README.txt index a8f660448..17551a5a0 100644 --- a/cpp/thirdparty/protobuf-2.3.0/README.txt +++ b/cpp/thirdparty/protobuf-2.5.0/README.txt @@ -115,7 +115,7 @@ For advanced usage information on configure and make, see INSTALL.txt. C++ Installation - Windows ========================== -If you are using Micosoft Visual C++, see vsprojects/readme.txt. +If you are using Microsoft Visual C++, see vsprojects/readme.txt. If you are using Cygwin or MinGW, follow the Unix installation instructions, above. diff --git a/cpp/thirdparty/protobuf-2.3.0/aclocal.m4 b/cpp/thirdparty/protobuf-2.5.0/aclocal.m4 similarity index 74% rename from cpp/thirdparty/protobuf-2.3.0/aclocal.m4 rename to cpp/thirdparty/protobuf-2.5.0/aclocal.m4 index 72bcfcf3c..5081ad9af 100644 --- a/cpp/thirdparty/protobuf-2.3.0/aclocal.m4 +++ b/cpp/thirdparty/protobuf-2.5.0/aclocal.m4 @@ -1,7 +1,8 @@ -# generated automatically by aclocal 1.10.1 -*- Autoconf -*- +# generated automatically by aclocal 1.11.3 -*- Autoconf -*- # Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, -# 2005, 2006, 2007, 2008 Free Software Foundation, Inc. +# 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software Foundation, +# Inc. # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. @@ -13,28 +14,31 @@ m4_ifndef([AC_AUTOCONF_VERSION], [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl -m4_if(AC_AUTOCONF_VERSION, [2.61],, -[m4_warning([this file was generated for autoconf 2.61. +m4_if(m4_defn([AC_AUTOCONF_VERSION]), [2.68],, +[m4_warning([this file was generated for autoconf 2.68. You have another version of autoconf. It may work, but is not guaranteed to. If you have problems, you may need to regenerate the build system entirely. To do so, use the procedure documented by the package, typically `autoreconf'.])]) -# Copyright (C) 2002, 2003, 2005, 2006, 2007 Free Software Foundation, Inc. +# Copyright (C) 2002, 2003, 2005, 2006, 2007, 2008, 2011 Free Software +# Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. +# serial 1 + # AM_AUTOMAKE_VERSION(VERSION) # ---------------------------- # Automake X.Y traces this macro to ensure aclocal.m4 has been # generated from the m4 files accompanying Automake X.Y. # (This private macro should not be called outside this file.) AC_DEFUN([AM_AUTOMAKE_VERSION], -[am__api_version='1.10' +[am__api_version='1.11' dnl Some users find AM_AUTOMAKE_VERSION and mistake it for a way to dnl require some minimum version. Point them to the right macro. -m4_if([$1], [1.10.1], [], +m4_if([$1], [1.11.3], [], [AC_FATAL([Do not call $0, use AM_INIT_AUTOMAKE([$1]).])])dnl ]) @@ -48,21 +52,23 @@ m4_define([_AM_AUTOCONF_VERSION], []) # AM_SET_CURRENT_AUTOMAKE_VERSION # ------------------------------- # Call AM_AUTOMAKE_VERSION and AM_AUTOMAKE_VERSION so they can be traced. -# This function is AC_REQUIREd by AC_INIT_AUTOMAKE. +# This function is AC_REQUIREd by AM_INIT_AUTOMAKE. AC_DEFUN([AM_SET_CURRENT_AUTOMAKE_VERSION], -[AM_AUTOMAKE_VERSION([1.10.1])dnl +[AM_AUTOMAKE_VERSION([1.11.3])dnl m4_ifndef([AC_AUTOCONF_VERSION], [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl -_AM_AUTOCONF_VERSION(AC_AUTOCONF_VERSION)]) +_AM_AUTOCONF_VERSION(m4_defn([AC_AUTOCONF_VERSION]))]) # AM_AUX_DIR_EXPAND -*- Autoconf -*- -# Copyright (C) 2001, 2003, 2005 Free Software Foundation, Inc. +# Copyright (C) 2001, 2003, 2005, 2011 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. +# serial 1 + # For projects using AC_CONFIG_AUX_DIR([foo]), Autoconf sets # $ac_aux_dir to `$srcdir/foo'. In other projects, it is set to # `$srcdir', `$srcdir/..', or `$srcdir/../..'. @@ -110,14 +116,14 @@ am_aux_dir=`cd $ac_aux_dir && pwd` # AM_CONDITIONAL -*- Autoconf -*- -# Copyright (C) 1997, 2000, 2001, 2003, 2004, 2005, 2006 +# Copyright (C) 1997, 2000, 2001, 2003, 2004, 2005, 2006, 2008 # Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. -# serial 8 +# serial 9 # AM_CONDITIONAL(NAME, SHELL-CONDITION) # ------------------------------------- @@ -130,6 +136,7 @@ AC_SUBST([$1_TRUE])dnl AC_SUBST([$1_FALSE])dnl _AM_SUBST_NOTMAKE([$1_TRUE])dnl _AM_SUBST_NOTMAKE([$1_FALSE])dnl +m4_define([_AM_COND_VALUE_$1], [$2])dnl if $2; then $1_TRUE= $1_FALSE='#' @@ -143,14 +150,14 @@ AC_CONFIG_COMMANDS_PRE( Usually this means the macro was only invoked conditionally.]]) fi])]) -# Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006 -# Free Software Foundation, Inc. +# Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2009, +# 2010, 2011 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. -# serial 9 +# serial 12 # There are a few dirty hacks below to avoid letting `AC_PROG_CC' be # written in clear, in which case automake, when reading aclocal.m4, @@ -190,6 +197,7 @@ AC_CACHE_CHECK([dependency style of $depcc], # instance it was reported that on HP-UX the gcc test will end up # making a dummy file named `D' -- because `-MD' means `put the output # in D'. + rm -rf conftest.dir mkdir conftest.dir # Copy depcomp to subdir because otherwise we won't find it if we're # using a relative directory. @@ -207,6 +215,16 @@ AC_CACHE_CHECK([dependency style of $depcc], if test "$am_compiler_list" = ""; then am_compiler_list=`sed -n ['s/^#*\([a-zA-Z0-9]*\))$/\1/p'] < ./depcomp` fi + am__universal=false + m4_case([$1], [CC], + [case " $depcc " in #( + *\ -arch\ *\ -arch\ *) am__universal=true ;; + esac], + [CXX], + [case " $depcc " in #( + *\ -arch\ *\ -arch\ *) am__universal=true ;; + esac]) + for depmode in $am_compiler_list; do # Setup a source with many dependencies, because some compilers # like to wrap large dependency lists on column 80 (with \), and @@ -224,7 +242,17 @@ AC_CACHE_CHECK([dependency style of $depcc], done echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf + # We check with `-c' and `-o' for the sake of the "dashmstdout" + # mode. It turns out that the SunPro C++ compiler does not properly + # handle `-M -o', and we need to detect this. Also, some Intel + # versions had trouble with output in subdirs + am__obj=sub/conftest.${OBJEXT-o} + am__minus_obj="-o $am__obj" case $depmode in + gcc) + # This depmode causes a compiler race in universal mode. + test "$am__universal" = false || continue + ;; nosideeffect) # after this tag, mechanisms are not by side-effect, so they'll # only be used when explicitly requested @@ -234,19 +262,23 @@ AC_CACHE_CHECK([dependency style of $depcc], break fi ;; + msvc7 | msvc7msys | msvisualcpp | msvcmsys) + # This compiler won't grok `-c -o', but also, the minuso test has + # not run yet. These depmodes are late enough in the game, and + # so weak that their functioning should not be impacted. + am__obj=conftest.${OBJEXT-o} + am__minus_obj= + ;; none) break ;; esac - # We check with `-c' and `-o' for the sake of the "dashmstdout" - # mode. It turns out that the SunPro C++ compiler does not properly - # handle `-M -o', and we need to detect this. if depmode=$depmode \ - source=sub/conftest.c object=sub/conftest.${OBJEXT-o} \ + source=sub/conftest.c object=$am__obj \ depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ - $SHELL ./depcomp $depcc -c -o sub/conftest.${OBJEXT-o} sub/conftest.c \ + $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \ >/dev/null 2>conftest.err && grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 && grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && - grep sub/conftest.${OBJEXT-o} sub/conftest.Po > /dev/null 2>&1 && + grep $am__obj sub/conftest.Po > /dev/null 2>&1 && ${MAKE-make} -s -f confmf > /dev/null 2>&1; then # icc doesn't choke on unknown options, it will just issue warnings # or remarks (even with -Werror). So we grep stderr for any message @@ -295,65 +327,79 @@ AC_DEFUN([AM_DEP_TRACK], if test "x$enable_dependency_tracking" != xno; then am_depcomp="$ac_aux_dir/depcomp" AMDEPBACKSLASH='\' + am__nodep='_no' fi AM_CONDITIONAL([AMDEP], [test "x$enable_dependency_tracking" != xno]) AC_SUBST([AMDEPBACKSLASH])dnl _AM_SUBST_NOTMAKE([AMDEPBACKSLASH])dnl +AC_SUBST([am__nodep])dnl +_AM_SUBST_NOTMAKE([am__nodep])dnl ]) # Generate code to set up dependency tracking. -*- Autoconf -*- -# Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005 +# Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2008 # Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. -#serial 3 +#serial 5 # _AM_OUTPUT_DEPENDENCY_COMMANDS # ------------------------------ AC_DEFUN([_AM_OUTPUT_DEPENDENCY_COMMANDS], -[for mf in $CONFIG_FILES; do - # Strip MF so we end up with the name of the file. - mf=`echo "$mf" | sed -e 's/:.*$//'` - # Check whether this is an Automake generated Makefile or not. - # We used to match only the files named `Makefile.in', but - # some people rename them; so instead we look at the file content. - # Grep'ing the first line is not enough: some people post-process - # each Makefile.in and add a new line on top of each file to say so. - # Grep'ing the whole file is not good either: AIX grep has a line - # limit of 2048, but all sed's we know have understand at least 4000. - if sed -n 's,^#.*generated by automake.*,X,p' "$mf" | grep X >/dev/null 2>&1; then - dirpart=`AS_DIRNAME("$mf")` - else - continue - fi - # Extract the definition of DEPDIR, am__include, and am__quote - # from the Makefile without running `make'. - DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"` - test -z "$DEPDIR" && continue - am__include=`sed -n 's/^am__include = //p' < "$mf"` - test -z "am__include" && continue - am__quote=`sed -n 's/^am__quote = //p' < "$mf"` - # When using ansi2knr, U may be empty or an underscore; expand it - U=`sed -n 's/^U = //p' < "$mf"` - # Find all dependency output files, they are included files with - # $(DEPDIR) in their names. We invoke sed twice because it is the - # simplest approach to changing $(DEPDIR) to its actual value in the - # expansion. - for file in `sed -n " - s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \ - sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g' -e 's/\$U/'"$U"'/g'`; do - # Make sure the directory exists. - test -f "$dirpart/$file" && continue - fdir=`AS_DIRNAME(["$file"])` - AS_MKDIR_P([$dirpart/$fdir]) - # echo "creating $dirpart/$file" - echo '# dummy' > "$dirpart/$file" +[{ + # Autoconf 2.62 quotes --file arguments for eval, but not when files + # are listed without --file. Let's play safe and only enable the eval + # if we detect the quoting. + case $CONFIG_FILES in + *\'*) eval set x "$CONFIG_FILES" ;; + *) set x $CONFIG_FILES ;; + esac + shift + for mf + do + # Strip MF so we end up with the name of the file. + mf=`echo "$mf" | sed -e 's/:.*$//'` + # Check whether this is an Automake generated Makefile or not. + # We used to match only the files named `Makefile.in', but + # some people rename them; so instead we look at the file content. + # Grep'ing the first line is not enough: some people post-process + # each Makefile.in and add a new line on top of each file to say so. + # Grep'ing the whole file is not good either: AIX grep has a line + # limit of 2048, but all sed's we know have understand at least 4000. + if sed -n 's,^#.*generated by automake.*,X,p' "$mf" | grep X >/dev/null 2>&1; then + dirpart=`AS_DIRNAME("$mf")` + else + continue + fi + # Extract the definition of DEPDIR, am__include, and am__quote + # from the Makefile without running `make'. + DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"` + test -z "$DEPDIR" && continue + am__include=`sed -n 's/^am__include = //p' < "$mf"` + test -z "am__include" && continue + am__quote=`sed -n 's/^am__quote = //p' < "$mf"` + # When using ansi2knr, U may be empty or an underscore; expand it + U=`sed -n 's/^U = //p' < "$mf"` + # Find all dependency output files, they are included files with + # $(DEPDIR) in their names. We invoke sed twice because it is the + # simplest approach to changing $(DEPDIR) to its actual value in the + # expansion. + for file in `sed -n " + s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \ + sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g' -e 's/\$U/'"$U"'/g'`; do + # Make sure the directory exists. + test -f "$dirpart/$file" && continue + fdir=`AS_DIRNAME(["$file"])` + AS_MKDIR_P([$dirpart/$fdir]) + # echo "creating $dirpart/$file" + echo '# dummy' > "$dirpart/$file" + done done -done +} ])# _AM_OUTPUT_DEPENDENCY_COMMANDS @@ -373,13 +419,13 @@ AC_DEFUN([AM_OUTPUT_DEPENDENCY_COMMANDS], # Do all the work for Automake. -*- Autoconf -*- # Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, -# 2005, 2006, 2008 Free Software Foundation, Inc. +# 2005, 2006, 2008, 2009 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. -# serial 13 +# serial 16 # This macro actually does too much. Some checks are only needed if # your package does certain things. But this isn't really a big deal. @@ -396,7 +442,7 @@ AC_DEFUN([AM_OUTPUT_DEPENDENCY_COMMANDS], # arguments mandatory, and then we can depend on a new Autoconf # release and drop the old call support. AC_DEFUN([AM_INIT_AUTOMAKE], -[AC_PREREQ([2.60])dnl +[AC_PREREQ([2.62])dnl dnl Autoconf wants to disallow AM_ names. We explicitly allow dnl the ones we care about. m4_pattern_allow([^AM_[A-Z]+FLAGS$])dnl @@ -447,8 +493,8 @@ AM_MISSING_PROG(AUTOCONF, autoconf) AM_MISSING_PROG(AUTOMAKE, automake-${am__api_version}) AM_MISSING_PROG(AUTOHEADER, autoheader) AM_MISSING_PROG(MAKEINFO, makeinfo) -AM_PROG_INSTALL_SH -AM_PROG_INSTALL_STRIP +AC_REQUIRE([AM_PROG_INSTALL_SH])dnl +AC_REQUIRE([AM_PROG_INSTALL_STRIP])dnl AC_REQUIRE([AM_PROG_MKDIR_P])dnl # We need awk for the "check" target. The system "awk" is bad on # some platforms. @@ -456,24 +502,37 @@ AC_REQUIRE([AC_PROG_AWK])dnl AC_REQUIRE([AC_PROG_MAKE_SET])dnl AC_REQUIRE([AM_SET_LEADING_DOT])dnl _AM_IF_OPTION([tar-ustar], [_AM_PROG_TAR([ustar])], - [_AM_IF_OPTION([tar-pax], [_AM_PROG_TAR([pax])], - [_AM_PROG_TAR([v7])])]) + [_AM_IF_OPTION([tar-pax], [_AM_PROG_TAR([pax])], + [_AM_PROG_TAR([v7])])]) _AM_IF_OPTION([no-dependencies],, [AC_PROVIDE_IFELSE([AC_PROG_CC], - [_AM_DEPENDENCIES(CC)], - [define([AC_PROG_CC], - defn([AC_PROG_CC])[_AM_DEPENDENCIES(CC)])])dnl + [_AM_DEPENDENCIES(CC)], + [define([AC_PROG_CC], + defn([AC_PROG_CC])[_AM_DEPENDENCIES(CC)])])dnl AC_PROVIDE_IFELSE([AC_PROG_CXX], - [_AM_DEPENDENCIES(CXX)], - [define([AC_PROG_CXX], - defn([AC_PROG_CXX])[_AM_DEPENDENCIES(CXX)])])dnl + [_AM_DEPENDENCIES(CXX)], + [define([AC_PROG_CXX], + defn([AC_PROG_CXX])[_AM_DEPENDENCIES(CXX)])])dnl AC_PROVIDE_IFELSE([AC_PROG_OBJC], - [_AM_DEPENDENCIES(OBJC)], - [define([AC_PROG_OBJC], - defn([AC_PROG_OBJC])[_AM_DEPENDENCIES(OBJC)])])dnl + [_AM_DEPENDENCIES(OBJC)], + [define([AC_PROG_OBJC], + defn([AC_PROG_OBJC])[_AM_DEPENDENCIES(OBJC)])])dnl ]) +_AM_IF_OPTION([silent-rules], [AC_REQUIRE([AM_SILENT_RULES])])dnl +dnl The `parallel-tests' driver may need to know about EXEEXT, so add the +dnl `am__EXEEXT' conditional if _AM_COMPILER_EXEEXT was seen. This macro +dnl is hooked onto _AC_COMPILER_EXEEXT early, see below. +AC_CONFIG_COMMANDS_PRE(dnl +[m4_provide_if([_AM_COMPILER_EXEEXT], + [AM_CONDITIONAL([am__EXEEXT], [test -n "$EXEEXT"])])])dnl ]) +dnl Hook into `_AC_COMPILER_EXEEXT' early to learn its expansion. Do not +dnl add the conditional right here, as _AC_COMPILER_EXEEXT may be further +dnl mangled by Autoconf and run in a shell conditional statement. +m4_define([_AC_COMPILER_EXEEXT], +m4_defn([_AC_COMPILER_EXEEXT])[m4_provide([_AM_COMPILER_EXEEXT])]) + # When config.status generates a header, we must update the stamp-h file. # This file resides in the same directory as the config header @@ -496,18 +555,28 @@ for _am_header in $config_headers :; do done echo "timestamp for $_am_arg" >`AS_DIRNAME(["$_am_arg"])`/stamp-h[]$_am_stamp_count]) -# Copyright (C) 2001, 2003, 2005 Free Software Foundation, Inc. +# Copyright (C) 2001, 2003, 2005, 2008, 2011 Free Software Foundation, +# Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. +# serial 1 + # AM_PROG_INSTALL_SH # ------------------ # Define $install_sh. AC_DEFUN([AM_PROG_INSTALL_SH], [AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl -install_sh=${install_sh-"\$(SHELL) $am_aux_dir/install-sh"} +if test x"${install_sh}" != xset; then + case $am_aux_dir in + *\ * | *\ *) + install_sh="\${SHELL} '$am_aux_dir/install-sh'" ;; + *) + install_sh="\${SHELL} $am_aux_dir/install-sh" + esac +fi AC_SUBST(install_sh)]) # Copyright (C) 2003, 2005 Free Software Foundation, Inc. @@ -531,15 +600,55 @@ fi rmdir .tst 2>/dev/null AC_SUBST([am__leading_dot])]) +# Add --enable-maintainer-mode option to configure. -*- Autoconf -*- +# From Jim Meyering + +# Copyright (C) 1996, 1998, 2000, 2001, 2002, 2003, 2004, 2005, 2008, +# 2011 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# serial 5 + +# AM_MAINTAINER_MODE([DEFAULT-MODE]) +# ---------------------------------- +# Control maintainer-specific portions of Makefiles. +# Default is to disable them, unless `enable' is passed literally. +# For symmetry, `disable' may be passed as well. Anyway, the user +# can override the default with the --enable/--disable switch. +AC_DEFUN([AM_MAINTAINER_MODE], +[m4_case(m4_default([$1], [disable]), + [enable], [m4_define([am_maintainer_other], [disable])], + [disable], [m4_define([am_maintainer_other], [enable])], + [m4_define([am_maintainer_other], [enable]) + m4_warn([syntax], [unexpected argument to AM@&t@_MAINTAINER_MODE: $1])]) +AC_MSG_CHECKING([whether to enable maintainer-specific portions of Makefiles]) + dnl maintainer-mode's default is 'disable' unless 'enable' is passed + AC_ARG_ENABLE([maintainer-mode], +[ --][am_maintainer_other][-maintainer-mode am_maintainer_other make rules and dependencies not useful + (and sometimes confusing) to the casual installer], + [USE_MAINTAINER_MODE=$enableval], + [USE_MAINTAINER_MODE=]m4_if(am_maintainer_other, [enable], [no], [yes])) + AC_MSG_RESULT([$USE_MAINTAINER_MODE]) + AM_CONDITIONAL([MAINTAINER_MODE], [test $USE_MAINTAINER_MODE = yes]) + MAINT=$MAINTAINER_MODE_TRUE + AC_SUBST([MAINT])dnl +] +) + +AU_DEFUN([jm_MAINTAINER_MODE], [AM_MAINTAINER_MODE]) + # Check to see how 'make' treats includes. -*- Autoconf -*- -# Copyright (C) 2001, 2002, 2003, 2005 Free Software Foundation, Inc. +# Copyright (C) 2001, 2002, 2003, 2005, 2009 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. -# serial 3 +# serial 4 # AM_MAKE_INCLUDE() # ----------------- @@ -548,7 +657,7 @@ AC_DEFUN([AM_MAKE_INCLUDE], [am_make=${MAKE-make} cat > confinc << 'END' am__doit: - @echo done + @echo this is the am__doit target .PHONY: am__doit END # If we don't find an include directive, just comment out the code. @@ -558,24 +667,24 @@ am__quote= _am_result=none # First try GNU make style include. echo "include confinc" > confmf -# We grep out `Entering directory' and `Leaving directory' -# messages which can occur if `w' ends up in MAKEFLAGS. -# In particular we don't look at `^make:' because GNU make might -# be invoked under some other name (usually "gmake"), in which -# case it prints its new name instead of `make'. -if test "`$am_make -s -f confmf 2> /dev/null | grep -v 'ing directory'`" = "done"; then - am__include=include - am__quote= - _am_result=GNU -fi +# Ignore all kinds of additional output from `make'. +case `$am_make -s -f confmf 2> /dev/null` in #( +*the\ am__doit\ target*) + am__include=include + am__quote= + _am_result=GNU + ;; +esac # Now try BSD make style include. if test "$am__include" = "#"; then echo '.include "confinc"' > confmf - if test "`$am_make -s -f confmf 2> /dev/null`" = "done"; then - am__include=.include - am__quote="\"" - _am_result=BSD - fi + case `$am_make -s -f confmf 2> /dev/null` in #( + *the\ am__doit\ target*) + am__include=.include + am__quote="\"" + _am_result=BSD + ;; + esac fi AC_SUBST([am__include]) AC_SUBST([am__quote]) @@ -585,14 +694,14 @@ rm -f confinc confmf # Fake the existence of programs that GNU maintainers use. -*- Autoconf -*- -# Copyright (C) 1997, 1999, 2000, 2001, 2003, 2004, 2005 +# Copyright (C) 1997, 1999, 2000, 2001, 2003, 2004, 2005, 2008 # Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. -# serial 5 +# serial 6 # AM_MISSING_PROG(NAME, PROGRAM) # ------------------------------ @@ -609,7 +718,14 @@ AC_SUBST($1)]) AC_DEFUN([AM_MISSING_HAS_RUN], [AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl AC_REQUIRE_AUX_FILE([missing])dnl -test x"${MISSING+set}" = xset || MISSING="\${SHELL} $am_aux_dir/missing" +if test x"${MISSING+set}" != xset; then + case $am_aux_dir in + *\ * | *\ *) + MISSING="\${SHELL} \"$am_aux_dir/missing\"" ;; + *) + MISSING="\${SHELL} $am_aux_dir/missing" ;; + esac +fi # Use eval to expand $SHELL if eval "$MISSING --run true"; then am_missing_run="$MISSING --run " @@ -619,12 +735,15 @@ else fi ]) -# Copyright (C) 2003, 2004, 2005, 2006 Free Software Foundation, Inc. +# Copyright (C) 2003, 2004, 2005, 2006, 2011 Free Software Foundation, +# Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. +# serial 1 + # AM_PROG_MKDIR_P # --------------- # Check for `mkdir -p'. @@ -647,13 +766,14 @@ esac # Helper functions for option handling. -*- Autoconf -*- -# Copyright (C) 2001, 2002, 2003, 2005 Free Software Foundation, Inc. +# Copyright (C) 2001, 2002, 2003, 2005, 2008, 2010 Free Software +# Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. -# serial 3 +# serial 5 # _AM_MANGLE_OPTION(NAME) # ----------------------- @@ -661,16 +781,16 @@ AC_DEFUN([_AM_MANGLE_OPTION], [[_AM_OPTION_]m4_bpatsubst($1, [[^a-zA-Z0-9_]], [_])]) # _AM_SET_OPTION(NAME) -# ------------------------------ +# -------------------- # Set option NAME. Presently that only means defining a flag for this option. AC_DEFUN([_AM_SET_OPTION], [m4_define(_AM_MANGLE_OPTION([$1]), 1)]) # _AM_SET_OPTIONS(OPTIONS) -# ---------------------------------- +# ------------------------ # OPTIONS is a space-separated list of Automake options. AC_DEFUN([_AM_SET_OPTIONS], -[AC_FOREACH([_AM_Option], [$1], [_AM_SET_OPTION(_AM_Option)])]) +[m4_foreach_w([_AM_Option], [$1], [_AM_SET_OPTION(_AM_Option)])]) # _AM_IF_OPTION(OPTION, IF-SET, [IF-NOT-SET]) # ------------------------------------------- @@ -680,14 +800,14 @@ AC_DEFUN([_AM_IF_OPTION], # Check to make sure that the build environment is sane. -*- Autoconf -*- -# Copyright (C) 1996, 1997, 2000, 2001, 2003, 2005 +# Copyright (C) 1996, 1997, 2000, 2001, 2003, 2005, 2008 # Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. -# serial 4 +# serial 5 # AM_SANITY_CHECK # --------------- @@ -696,16 +816,29 @@ AC_DEFUN([AM_SANITY_CHECK], # Just in case sleep 1 echo timestamp > conftest.file +# Reject unsafe characters in $srcdir or the absolute working directory +# name. Accept space and tab only in the latter. +am_lf=' +' +case `pwd` in + *[[\\\"\#\$\&\'\`$am_lf]]*) + AC_MSG_ERROR([unsafe absolute working directory name]);; +esac +case $srcdir in + *[[\\\"\#\$\&\'\`$am_lf\ \ ]]*) + AC_MSG_ERROR([unsafe srcdir value: `$srcdir']);; +esac + # Do `set' in a subshell so we don't clobber the current shell's # arguments. Must try -L first in case configure is actually a # symlink; some systems play weird games with the mod time of symlinks # (eg FreeBSD returns the mod time of the symlink's containing # directory). if ( - set X `ls -Lt $srcdir/configure conftest.file 2> /dev/null` + set X `ls -Lt "$srcdir/configure" conftest.file 2> /dev/null` if test "$[*]" = "X"; then # -L didn't work. - set X `ls -t $srcdir/configure conftest.file` + set X `ls -t "$srcdir/configure" conftest.file` fi rm -f conftest.file if test "$[*]" != "X $srcdir/configure conftest.file" \ @@ -730,12 +863,14 @@ Check your system clock]) fi AC_MSG_RESULT(yes)]) -# Copyright (C) 2001, 2003, 2005 Free Software Foundation, Inc. +# Copyright (C) 2001, 2003, 2005, 2011 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. +# serial 1 + # AM_PROG_INSTALL_STRIP # --------------------- # One issue with vendor `install' (even GNU) is that you can't @@ -758,21 +893,28 @@ fi INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s" AC_SUBST([INSTALL_STRIP_PROGRAM])]) -# Copyright (C) 2006 Free Software Foundation, Inc. +# Copyright (C) 2006, 2008, 2010 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. +# serial 3 + # _AM_SUBST_NOTMAKE(VARIABLE) # --------------------------- # Prevent Automake from outputting VARIABLE = @VARIABLE@ in Makefile.in. # This macro is traced by Automake. AC_DEFUN([_AM_SUBST_NOTMAKE]) +# AM_SUBST_NOTMAKE(VARIABLE) +# -------------------------- +# Public sister of _AM_SUBST_NOTMAKE. +AC_DEFUN([AM_SUBST_NOTMAKE], [_AM_SUBST_NOTMAKE($@)]) + # Check how to create a tarball. -*- Autoconf -*- -# Copyright (C) 2004, 2005 Free Software Foundation, Inc. +# Copyright (C) 2004, 2005, 2012 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -794,10 +936,11 @@ AC_DEFUN([_AM_SUBST_NOTMAKE]) # a tarball read from stdin. # $(am__untar) < result.tar AC_DEFUN([_AM_PROG_TAR], -[# Always define AMTAR for backward compatibility. -AM_MISSING_PROG([AMTAR], [tar]) +[# Always define AMTAR for backward compatibility. Yes, it's still used +# in the wild :-( We should find a proper way to deprecate it ... +AC_SUBST([AMTAR], ['$${TAR-tar}']) m4_if([$1], [v7], - [am__tar='${AMTAR} chof - "$$tardir"'; am__untar='${AMTAR} xf -'], + [am__tar='$${TAR-tar} chof - "$$tardir"' am__untar='$${TAR-tar} xf -'], [m4_case([$1], [ustar],, [pax],, [m4_fatal([Unknown tar format])]) AC_MSG_CHECKING([how to create a $1 tar archive]) diff --git a/cpp/thirdparty/protobuf-2.3.0/autogen.sh b/cpp/thirdparty/protobuf-2.5.0/autogen.sh similarity index 90% rename from cpp/thirdparty/protobuf-2.3.0/autogen.sh rename to cpp/thirdparty/protobuf-2.5.0/autogen.sh index 04d65b163..c3e026d24 100755 --- a/cpp/thirdparty/protobuf-2.3.0/autogen.sh +++ b/cpp/thirdparty/protobuf-2.5.0/autogen.sh @@ -18,9 +18,9 @@ fi # Check that gtest is present. Usually it is already there since the # directory is set up as an SVN external. if test ! -e gtest; then - echo "Google Test not present. Fetching gtest-1.3.0 from the web..." - curl http://googletest.googlecode.com/files/gtest-1.3.0.tar.bz2 | tar jx - mv gtest-1.3.0 gtest + echo "Google Test not present. Fetching gtest-1.5.0 from the web..." + curl http://googletest.googlecode.com/files/gtest-1.5.0.tar.bz2 | tar jx + mv gtest-1.5.0 gtest fi set -ex diff --git a/cpp/thirdparty/protobuf-2.3.0/config.guess b/cpp/thirdparty/protobuf-2.5.0/config.guess similarity index 82% rename from cpp/thirdparty/protobuf-2.3.0/config.guess rename to cpp/thirdparty/protobuf-2.5.0/config.guess index 278f9e9e0..d622a44e5 100755 --- a/cpp/thirdparty/protobuf-2.3.0/config.guess +++ b/cpp/thirdparty/protobuf-2.5.0/config.guess @@ -1,10 +1,10 @@ #! /bin/sh # Attempt to guess a canonical system name. # Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, -# 2000, 2001, 2002, 2003, 2004, 2005, 2006 Free Software Foundation, -# Inc. +# 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, +# 2011, 2012 Free Software Foundation, Inc. -timestamp='2007-07-22' +timestamp='2012-02-10' # This file is free software; you can redistribute it and/or modify it # under the terms of the GNU General Public License as published by @@ -17,9 +17,7 @@ timestamp='2007-07-22' # General Public License for more details. # # You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA -# 02110-1301, USA. +# along with this program; if not, see . # # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a @@ -27,16 +25,16 @@ timestamp='2007-07-22' # the same distribution terms that you use for the rest of that program. -# Originally written by Per Bothner . -# Please send patches to . Submit a context -# diff and a properly formatted ChangeLog entry. +# Originally written by Per Bothner. Please send patches (context +# diff format) to and include a ChangeLog +# entry. # # This script attempts to guess a canonical system name similar to # config.sub. If it succeeds, it prints the system name on stdout, and # exits with 0. Otherwise, it exits with 1. # -# The plan is that this can be called by configure scripts if you -# don't specify an explicit build system type. +# You can get the latest version of this script from: +# http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess;hb=HEAD me=`echo "$0" | sed -e 's,.*/,,'` @@ -56,7 +54,8 @@ version="\ GNU config.guess ($timestamp) Originally written by Per Bothner. -Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005 +Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, +2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO @@ -144,7 +143,7 @@ UNAME_VERSION=`(uname -v) 2>/dev/null` || UNAME_VERSION=unknown case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in *:NetBSD:*:*) # NetBSD (nbsd) targets should (where applicable) match one or - # more of the tupples: *-*-netbsdelf*, *-*-netbsdaout*, + # more of the tuples: *-*-netbsdelf*, *-*-netbsdaout*, # *-*-netbsdecoff* and *-*-netbsd*. For targets that recently # switched to ELF, *-*-netbsd* would select the old # object file format. This provides both forward @@ -170,7 +169,7 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in arm*|i386|m68k|ns32k|sh3*|sparc|vax) eval $set_cc_for_build if echo __ELF__ | $CC_FOR_BUILD -E - 2>/dev/null \ - | grep __ELF__ >/dev/null + | grep -q __ELF__ then # Once all utilities can be ECOFF (netbsdecoff) or a.out (netbsdaout). # Return netbsd for either. FIX? @@ -180,7 +179,7 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in fi ;; *) - os=netbsd + os=netbsd ;; esac # The OS release @@ -223,7 +222,7 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $3}'` ;; *5.*) - UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $4}'` + UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $4}'` ;; esac # According to Compaq, /usr/sbin/psrinfo has been available on @@ -269,7 +268,10 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in # A Xn.n version is an unreleased experimental baselevel. # 1.2 uses "1.2" for uname -r. echo ${UNAME_MACHINE}-dec-osf`echo ${UNAME_RELEASE} | sed -e 's/^[PVTX]//' | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'` - exit ;; + # Reset EXIT trap before exiting to avoid spurious non-zero exit code. + exitcode=$? + trap '' 0 + exit $exitcode ;; Alpha\ *:Windows_NT*:*) # How do we know it's Interix rather than the generic POSIX subsystem? # Should we change UNAME_MACHINE based on the output of uname instead @@ -295,7 +297,7 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in echo s390-ibm-zvmoe exit ;; *:OS400:*:*) - echo powerpc-ibm-os400 + echo powerpc-ibm-os400 exit ;; arm:RISC*:1.[012]*:*|arm:riscix:1.[012]*:*) echo arm-acorn-riscix${UNAME_RELEASE} @@ -324,14 +326,33 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in case `/usr/bin/uname -p` in sparc) echo sparc-icl-nx7; exit ;; esac ;; + s390x:SunOS:*:*) + echo ${UNAME_MACHINE}-ibm-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` + exit ;; sun4H:SunOS:5.*:*) echo sparc-hal-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` exit ;; sun4*:SunOS:5.*:* | tadpole*:SunOS:5.*:*) echo sparc-sun-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` exit ;; + i86pc:AuroraUX:5.*:* | i86xen:AuroraUX:5.*:*) + echo i386-pc-auroraux${UNAME_RELEASE} + exit ;; i86pc:SunOS:5.*:* | i86xen:SunOS:5.*:*) - echo i386-pc-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` + eval $set_cc_for_build + SUN_ARCH="i386" + # If there is a compiler, see if it is configured for 64-bit objects. + # Note that the Sun cc does not turn __LP64__ into 1 like gcc does. + # This test works for both compilers. + if [ "$CC_FOR_BUILD" != 'no_compiler_found' ]; then + if (echo '#ifdef __amd64'; echo IS_64BIT_ARCH; echo '#endif') | \ + (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | \ + grep IS_64BIT_ARCH >/dev/null + then + SUN_ARCH="x86_64" + fi + fi + echo ${SUN_ARCH}-pc-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` exit ;; sun4*:SunOS:6*:*) # According to config.sub, this is the proper way to canonicalize @@ -375,23 +396,23 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in # MiNT. But MiNT is downward compatible to TOS, so this should # be no problem. atarist[e]:*MiNT:*:* | atarist[e]:*mint:*:* | atarist[e]:*TOS:*:*) - echo m68k-atari-mint${UNAME_RELEASE} + echo m68k-atari-mint${UNAME_RELEASE} exit ;; atari*:*MiNT:*:* | atari*:*mint:*:* | atarist[e]:*TOS:*:*) echo m68k-atari-mint${UNAME_RELEASE} - exit ;; + exit ;; *falcon*:*MiNT:*:* | *falcon*:*mint:*:* | *falcon*:*TOS:*:*) - echo m68k-atari-mint${UNAME_RELEASE} + echo m68k-atari-mint${UNAME_RELEASE} exit ;; milan*:*MiNT:*:* | milan*:*mint:*:* | *milan*:*TOS:*:*) - echo m68k-milan-mint${UNAME_RELEASE} - exit ;; + echo m68k-milan-mint${UNAME_RELEASE} + exit ;; hades*:*MiNT:*:* | hades*:*mint:*:* | *hades*:*TOS:*:*) - echo m68k-hades-mint${UNAME_RELEASE} - exit ;; + echo m68k-hades-mint${UNAME_RELEASE} + exit ;; *:*MiNT:*:* | *:*mint:*:* | *:*TOS:*:*) - echo m68k-unknown-mint${UNAME_RELEASE} - exit ;; + echo m68k-unknown-mint${UNAME_RELEASE} + exit ;; m68k:machten:*:*) echo m68k-apple-machten${UNAME_RELEASE} exit ;; @@ -461,8 +482,8 @@ EOF echo m88k-motorola-sysv3 exit ;; AViiON:dgux:*:*) - # DG/UX returns AViiON for all architectures - UNAME_PROCESSOR=`/usr/bin/uname -p` + # DG/UX returns AViiON for all architectures + UNAME_PROCESSOR=`/usr/bin/uname -p` if [ $UNAME_PROCESSOR = mc88100 ] || [ $UNAME_PROCESSOR = mc88110 ] then if [ ${TARGET_BINARY_INTERFACE}x = m88kdguxelfx ] || \ @@ -475,7 +496,7 @@ EOF else echo i586-dg-dgux${UNAME_RELEASE} fi - exit ;; + exit ;; M88*:DolphinOS:*:*) # DolphinOS (SVR3) echo m88k-dolphin-sysv3 exit ;; @@ -532,7 +553,7 @@ EOF echo rs6000-ibm-aix3.2 fi exit ;; - *:AIX:*:[45]) + *:AIX:*:[4567]) IBM_CPU_ID=`/usr/sbin/lsdev -C -c processor -S available | sed 1q | awk '{ print $1 }'` if /usr/sbin/lsattr -El ${IBM_CPU_ID} | grep ' POWER' >/dev/null 2>&1; then IBM_ARCH=rs6000 @@ -575,52 +596,52 @@ EOF 9000/[678][0-9][0-9]) if [ -x /usr/bin/getconf ]; then sc_cpu_version=`/usr/bin/getconf SC_CPU_VERSION 2>/dev/null` - sc_kernel_bits=`/usr/bin/getconf SC_KERNEL_BITS 2>/dev/null` - case "${sc_cpu_version}" in - 523) HP_ARCH="hppa1.0" ;; # CPU_PA_RISC1_0 - 528) HP_ARCH="hppa1.1" ;; # CPU_PA_RISC1_1 - 532) # CPU_PA_RISC2_0 - case "${sc_kernel_bits}" in - 32) HP_ARCH="hppa2.0n" ;; - 64) HP_ARCH="hppa2.0w" ;; + sc_kernel_bits=`/usr/bin/getconf SC_KERNEL_BITS 2>/dev/null` + case "${sc_cpu_version}" in + 523) HP_ARCH="hppa1.0" ;; # CPU_PA_RISC1_0 + 528) HP_ARCH="hppa1.1" ;; # CPU_PA_RISC1_1 + 532) # CPU_PA_RISC2_0 + case "${sc_kernel_bits}" in + 32) HP_ARCH="hppa2.0n" ;; + 64) HP_ARCH="hppa2.0w" ;; '') HP_ARCH="hppa2.0" ;; # HP-UX 10.20 - esac ;; - esac + esac ;; + esac fi if [ "${HP_ARCH}" = "" ]; then eval $set_cc_for_build - sed 's/^ //' << EOF >$dummy.c + sed 's/^ //' << EOF >$dummy.c - #define _HPUX_SOURCE - #include - #include + #define _HPUX_SOURCE + #include + #include - int main () - { - #if defined(_SC_KERNEL_BITS) - long bits = sysconf(_SC_KERNEL_BITS); - #endif - long cpu = sysconf (_SC_CPU_VERSION); + int main () + { + #if defined(_SC_KERNEL_BITS) + long bits = sysconf(_SC_KERNEL_BITS); + #endif + long cpu = sysconf (_SC_CPU_VERSION); - switch (cpu) - { - case CPU_PA_RISC1_0: puts ("hppa1.0"); break; - case CPU_PA_RISC1_1: puts ("hppa1.1"); break; - case CPU_PA_RISC2_0: - #if defined(_SC_KERNEL_BITS) - switch (bits) - { - case 64: puts ("hppa2.0w"); break; - case 32: puts ("hppa2.0n"); break; - default: puts ("hppa2.0"); break; - } break; - #else /* !defined(_SC_KERNEL_BITS) */ - puts ("hppa2.0"); break; - #endif - default: puts ("hppa1.0"); break; - } - exit (0); - } + switch (cpu) + { + case CPU_PA_RISC1_0: puts ("hppa1.0"); break; + case CPU_PA_RISC1_1: puts ("hppa1.1"); break; + case CPU_PA_RISC2_0: + #if defined(_SC_KERNEL_BITS) + switch (bits) + { + case 64: puts ("hppa2.0w"); break; + case 32: puts ("hppa2.0n"); break; + default: puts ("hppa2.0"); break; + } break; + #else /* !defined(_SC_KERNEL_BITS) */ + puts ("hppa2.0"); break; + #endif + default: puts ("hppa1.0"); break; + } + exit (0); + } EOF (CCOPTS= $CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null) && HP_ARCH=`$dummy` test -z "$HP_ARCH" && HP_ARCH=hppa @@ -640,7 +661,7 @@ EOF # => hppa64-hp-hpux11.23 if echo __LP64__ | (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | - grep __LP64__ >/dev/null + grep -q __LP64__ then HP_ARCH="hppa2.0w" else @@ -711,22 +732,22 @@ EOF exit ;; C1*:ConvexOS:*:* | convex:ConvexOS:C1*:*) echo c1-convex-bsd - exit ;; + exit ;; C2*:ConvexOS:*:* | convex:ConvexOS:C2*:*) if getsysinfo -f scalar_acc then echo c32-convex-bsd else echo c2-convex-bsd fi - exit ;; + exit ;; C34*:ConvexOS:*:* | convex:ConvexOS:C34*:*) echo c34-convex-bsd - exit ;; + exit ;; C38*:ConvexOS:*:* | convex:ConvexOS:C38*:*) echo c38-convex-bsd - exit ;; + exit ;; C4*:ConvexOS:*:* | convex:ConvexOS:C4*:*) echo c4-convex-bsd - exit ;; + exit ;; CRAY*Y-MP:*:*:*) echo ymp-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' exit ;; @@ -750,14 +771,14 @@ EOF exit ;; F30[01]:UNIX_System_V:*:* | F700:UNIX_System_V:*:*) FUJITSU_PROC=`uname -m | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'` - FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'` - FUJITSU_REL=`echo ${UNAME_RELEASE} | sed -e 's/ /_/'` - echo "${FUJITSU_PROC}-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}" - exit ;; + FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'` + FUJITSU_REL=`echo ${UNAME_RELEASE} | sed -e 's/ /_/'` + echo "${FUJITSU_PROC}-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}" + exit ;; 5000:UNIX_System_V:4.*:*) - FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'` - FUJITSU_REL=`echo ${UNAME_RELEASE} | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/ /_/'` - echo "sparc-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}" + FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'` + FUJITSU_REL=`echo ${UNAME_RELEASE} | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/ /_/'` + echo "sparc-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}" exit ;; i*86:BSD/386:*:* | i*86:BSD/OS:*:* | *:Ascend\ Embedded/OS:*:*) echo ${UNAME_MACHINE}-pc-bsdi${UNAME_RELEASE} @@ -769,13 +790,12 @@ EOF echo ${UNAME_MACHINE}-unknown-bsdi${UNAME_RELEASE} exit ;; *:FreeBSD:*:*) - case ${UNAME_MACHINE} in - pc98) - echo i386-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;; + UNAME_PROCESSOR=`/usr/bin/uname -p` + case ${UNAME_PROCESSOR} in amd64) echo x86_64-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;; *) - echo ${UNAME_MACHINE}-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;; + echo ${UNAME_PROCESSOR}-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;; esac exit ;; i*:CYGWIN*:*) @@ -784,25 +804,34 @@ EOF *:MINGW*:*) echo ${UNAME_MACHINE}-pc-mingw32 exit ;; + i*:MSYS*:*) + echo ${UNAME_MACHINE}-pc-msys + exit ;; i*:windows32*:*) - # uname -m includes "-pc" on this system. - echo ${UNAME_MACHINE}-mingw32 + # uname -m includes "-pc" on this system. + echo ${UNAME_MACHINE}-mingw32 exit ;; i*:PW*:*) echo ${UNAME_MACHINE}-pc-pw32 exit ;; - *:Interix*:[3456]*) - case ${UNAME_MACHINE} in + *:Interix*:*) + case ${UNAME_MACHINE} in x86) echo i586-pc-interix${UNAME_RELEASE} exit ;; - EM64T | authenticamd) + authenticamd | genuineintel | EM64T) echo x86_64-unknown-interix${UNAME_RELEASE} exit ;; + IA64) + echo ia64-unknown-interix${UNAME_RELEASE} + exit ;; esac ;; [345]86:Windows_95:* | [345]86:Windows_98:* | [345]86:Windows_NT:*) echo i${UNAME_MACHINE}-pc-mks exit ;; + 8664:Windows_NT:*) + echo x86_64-pc-mks + exit ;; i*:Windows_NT*:* | Pentium*:Windows_NT*:*) # How do we know it's Interix rather than the generic POSIX subsystem? # It also conflicts with pre-2.0 versions of AT&T UWIN. Should we @@ -832,20 +861,68 @@ EOF i*86:Minix:*:*) echo ${UNAME_MACHINE}-pc-minix exit ;; - arm*:Linux:*:*) + aarch64:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-gnu + exit ;; + aarch64_be:Linux:*:*) + UNAME_MACHINE=aarch64_be echo ${UNAME_MACHINE}-unknown-linux-gnu exit ;; + alpha:Linux:*:*) + case `sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' < /proc/cpuinfo` in + EV5) UNAME_MACHINE=alphaev5 ;; + EV56) UNAME_MACHINE=alphaev56 ;; + PCA56) UNAME_MACHINE=alphapca56 ;; + PCA57) UNAME_MACHINE=alphapca56 ;; + EV6) UNAME_MACHINE=alphaev6 ;; + EV67) UNAME_MACHINE=alphaev67 ;; + EV68*) UNAME_MACHINE=alphaev68 ;; + esac + objdump --private-headers /bin/sh | grep -q ld.so.1 + if test "$?" = 0 ; then LIBC="libc1" ; else LIBC="" ; fi + echo ${UNAME_MACHINE}-unknown-linux-gnu${LIBC} + exit ;; + arm*:Linux:*:*) + eval $set_cc_for_build + if echo __ARM_EABI__ | $CC_FOR_BUILD -E - 2>/dev/null \ + | grep -q __ARM_EABI__ + then + echo ${UNAME_MACHINE}-unknown-linux-gnu + else + if echo __ARM_PCS_VFP | $CC_FOR_BUILD -E - 2>/dev/null \ + | grep -q __ARM_PCS_VFP + then + echo ${UNAME_MACHINE}-unknown-linux-gnueabi + else + echo ${UNAME_MACHINE}-unknown-linux-gnueabihf + fi + fi + exit ;; avr32*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-gnu exit ;; cris:Linux:*:*) - echo cris-axis-linux-gnu + echo ${UNAME_MACHINE}-axis-linux-gnu exit ;; crisv32:Linux:*:*) - echo crisv32-axis-linux-gnu + echo ${UNAME_MACHINE}-axis-linux-gnu exit ;; frv:Linux:*:*) - echo frv-unknown-linux-gnu + echo ${UNAME_MACHINE}-unknown-linux-gnu + exit ;; + hexagon:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-gnu + exit ;; + i*86:Linux:*:*) + LIBC=gnu + eval $set_cc_for_build + sed 's/^ //' << EOF >$dummy.c + #ifdef __dietlibc__ + LIBC=dietlibc + #endif +EOF + eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^LIBC'` + echo "${UNAME_MACHINE}-pc-linux-${LIBC}" exit ;; ia64:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-gnu @@ -856,74 +933,33 @@ EOF m68*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-gnu exit ;; - mips:Linux:*:*) + mips:Linux:*:* | mips64:Linux:*:*) eval $set_cc_for_build sed 's/^ //' << EOF >$dummy.c #undef CPU - #undef mips - #undef mipsel + #undef ${UNAME_MACHINE} + #undef ${UNAME_MACHINE}el #if defined(__MIPSEL__) || defined(__MIPSEL) || defined(_MIPSEL) || defined(MIPSEL) - CPU=mipsel + CPU=${UNAME_MACHINE}el #else #if defined(__MIPSEB__) || defined(__MIPSEB) || defined(_MIPSEB) || defined(MIPSEB) - CPU=mips + CPU=${UNAME_MACHINE} #else CPU= #endif #endif EOF - eval "`$CC_FOR_BUILD -E $dummy.c 2>/dev/null | sed -n ' - /^CPU/{ - s: ::g - p - }'`" - test x"${CPU}" != x && { echo "${CPU}-unknown-linux-gnu"; exit; } - ;; - mips64:Linux:*:*) - eval $set_cc_for_build - sed 's/^ //' << EOF >$dummy.c - #undef CPU - #undef mips64 - #undef mips64el - #if defined(__MIPSEL__) || defined(__MIPSEL) || defined(_MIPSEL) || defined(MIPSEL) - CPU=mips64el - #else - #if defined(__MIPSEB__) || defined(__MIPSEB) || defined(_MIPSEB) || defined(MIPSEB) - CPU=mips64 - #else - CPU= - #endif - #endif -EOF - eval "`$CC_FOR_BUILD -E $dummy.c 2>/dev/null | sed -n ' - /^CPU/{ - s: ::g - p - }'`" + eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^CPU'` test x"${CPU}" != x && { echo "${CPU}-unknown-linux-gnu"; exit; } ;; or32:Linux:*:*) - echo or32-unknown-linux-gnu - exit ;; - ppc:Linux:*:*) - echo powerpc-unknown-linux-gnu + echo ${UNAME_MACHINE}-unknown-linux-gnu exit ;; - ppc64:Linux:*:*) - echo powerpc64-unknown-linux-gnu + padre:Linux:*:*) + echo sparc-unknown-linux-gnu exit ;; - alpha:Linux:*:*) - case `sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' < /proc/cpuinfo` in - EV5) UNAME_MACHINE=alphaev5 ;; - EV56) UNAME_MACHINE=alphaev56 ;; - PCA56) UNAME_MACHINE=alphapca56 ;; - PCA57) UNAME_MACHINE=alphapca56 ;; - EV6) UNAME_MACHINE=alphaev6 ;; - EV67) UNAME_MACHINE=alphaev67 ;; - EV68*) UNAME_MACHINE=alphaev68 ;; - esac - objdump --private-headers /bin/sh | grep ld.so.1 >/dev/null - if test "$?" = 0 ; then LIBC="libc1" ; else LIBC="" ; fi - echo ${UNAME_MACHINE}-unknown-linux-gnu${LIBC} + parisc64:Linux:*:* | hppa64:Linux:*:*) + echo hppa64-unknown-linux-gnu exit ;; parisc:Linux:*:* | hppa:Linux:*:*) # Look for CPU level @@ -933,14 +969,17 @@ EOF *) echo hppa-unknown-linux-gnu ;; esac exit ;; - parisc64:Linux:*:* | hppa64:Linux:*:*) - echo hppa64-unknown-linux-gnu + ppc64:Linux:*:*) + echo powerpc64-unknown-linux-gnu + exit ;; + ppc:Linux:*:*) + echo powerpc-unknown-linux-gnu exit ;; s390:Linux:*:* | s390x:Linux:*:*) echo ${UNAME_MACHINE}-ibm-linux exit ;; sh64*:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-gnu + echo ${UNAME_MACHINE}-unknown-linux-gnu exit ;; sh*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-gnu @@ -948,78 +987,18 @@ EOF sparc:Linux:*:* | sparc64:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-gnu exit ;; + tile*:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-gnu + exit ;; vax:Linux:*:*) echo ${UNAME_MACHINE}-dec-linux-gnu exit ;; x86_64:Linux:*:*) - echo x86_64-unknown-linux-gnu + echo ${UNAME_MACHINE}-unknown-linux-gnu exit ;; - xtensa:Linux:*:*) - echo xtensa-unknown-linux-gnu + xtensa*:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-gnu exit ;; - i*86:Linux:*:*) - # The BFD linker knows what the default object file format is, so - # first see if it will tell us. cd to the root directory to prevent - # problems with other programs or directories called `ld' in the path. - # Set LC_ALL=C to ensure ld outputs messages in English. - ld_supported_targets=`cd /; LC_ALL=C ld --help 2>&1 \ - | sed -ne '/supported targets:/!d - s/[ ][ ]*/ /g - s/.*supported targets: *// - s/ .*// - p'` - case "$ld_supported_targets" in - elf32-i386) - TENTATIVE="${UNAME_MACHINE}-pc-linux-gnu" - ;; - a.out-i386-linux) - echo "${UNAME_MACHINE}-pc-linux-gnuaout" - exit ;; - coff-i386) - echo "${UNAME_MACHINE}-pc-linux-gnucoff" - exit ;; - "") - # Either a pre-BFD a.out linker (linux-gnuoldld) or - # one that does not give us useful --help. - echo "${UNAME_MACHINE}-pc-linux-gnuoldld" - exit ;; - esac - # Determine whether the default compiler is a.out or elf - eval $set_cc_for_build - sed 's/^ //' << EOF >$dummy.c - #include - #ifdef __ELF__ - # ifdef __GLIBC__ - # if __GLIBC__ >= 2 - LIBC=gnu - # else - LIBC=gnulibc1 - # endif - # else - LIBC=gnulibc1 - # endif - #else - #if defined(__INTEL_COMPILER) || defined(__PGI) || defined(__SUNPRO_C) || defined(__SUNPRO_CC) - LIBC=gnu - #else - LIBC=gnuaout - #endif - #endif - #ifdef __dietlibc__ - LIBC=dietlibc - #endif -EOF - eval "`$CC_FOR_BUILD -E $dummy.c 2>/dev/null | sed -n ' - /^LIBC/{ - s: ::g - p - }'`" - test x"${LIBC}" != x && { - echo "${UNAME_MACHINE}-pc-linux-${LIBC}" - exit - } - test x"${TENTATIVE}" != x && { echo "${TENTATIVE}"; exit; } - ;; i*86:DYNIX/ptx:4*:*) # ptx 4.0 does uname -s correctly, with DYNIX/ptx in there. # earlier versions are messed up and put the nodename in both @@ -1027,11 +1006,11 @@ EOF echo i386-sequent-sysv4 exit ;; i*86:UNIX_SV:4.2MP:2.*) - # Unixware is an offshoot of SVR4, but it has its own version - # number series starting with 2... - # I am not positive that other SVR4 systems won't match this, + # Unixware is an offshoot of SVR4, but it has its own version + # number series starting with 2... + # I am not positive that other SVR4 systems won't match this, # I just have to hope. -- rms. - # Use sysv4.2uw... so that sysv4* matches it. + # Use sysv4.2uw... so that sysv4* matches it. echo ${UNAME_MACHINE}-pc-sysv4.2uw${UNAME_VERSION} exit ;; i*86:OS/2:*:*) @@ -1048,7 +1027,7 @@ EOF i*86:syllable:*:*) echo ${UNAME_MACHINE}-pc-syllable exit ;; - i*86:LynxOS:2.*:* | i*86:LynxOS:3.[01]*:* | i*86:LynxOS:4.0*:*) + i*86:LynxOS:2.*:* | i*86:LynxOS:3.[01]*:* | i*86:LynxOS:4.[02]*:*) echo i386-unknown-lynxos${UNAME_RELEASE} exit ;; i*86:*DOS:*:*) @@ -1063,7 +1042,7 @@ EOF fi exit ;; i*86:*:5:[678]*) - # UnixWare 7.x, OpenUNIX and OpenServer 6. + # UnixWare 7.x, OpenUNIX and OpenServer 6. case `/bin/uname -X | grep "^Machine"` in *486*) UNAME_MACHINE=i486 ;; *Pentium) UNAME_MACHINE=i586 ;; @@ -1091,10 +1070,13 @@ EOF exit ;; pc:*:*:*) # Left here for compatibility: - # uname -m prints for DJGPP always 'pc', but it prints nothing about - # the processor, so we play safe by assuming i386. - echo i386-pc-msdosdjgpp - exit ;; + # uname -m prints for DJGPP always 'pc', but it prints nothing about + # the processor, so we play safe by assuming i586. + # Note: whatever this is, it MUST be the same as what config.sub + # prints for the "djgpp" host, or else GDB configury will decide that + # this is a cross-build. + echo i586-pc-msdosdjgpp + exit ;; Intel:Mach:3*:*) echo i386-pc-mach3 exit ;; @@ -1129,8 +1111,18 @@ EOF /bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \ && { echo i586-ncr-sysv4.3${OS_REL}; exit; } ;; 3[34]??:*:4.0:* | 3[34]??,*:*:4.0:*) - /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ - && { echo i486-ncr-sysv4; exit; } ;; + /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ + && { echo i486-ncr-sysv4; exit; } ;; + NCR*:*:4.2:* | MPRAS*:*:4.2:*) + OS_REL='.3' + test -r /etc/.relid \ + && OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid` + /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ + && { echo i486-ncr-sysv4.3${OS_REL}; exit; } + /bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \ + && { echo i586-ncr-sysv4.3${OS_REL}; exit; } + /bin/uname -p 2>/dev/null | /bin/grep pteron >/dev/null \ + && { echo i586-ncr-sysv4.3${OS_REL}; exit; } ;; m68*:LynxOS:2.*:* | m68*:LynxOS:3.0*:*) echo m68k-unknown-lynxos${UNAME_RELEASE} exit ;; @@ -1143,7 +1135,7 @@ EOF rs6000:LynxOS:2.*:*) echo rs6000-unknown-lynxos${UNAME_RELEASE} exit ;; - PowerPC:LynxOS:2.*:* | PowerPC:LynxOS:3.[01]*:* | PowerPC:LynxOS:4.0*:*) + PowerPC:LynxOS:2.*:* | PowerPC:LynxOS:3.[01]*:* | PowerPC:LynxOS:4.[02]*:*) echo powerpc-unknown-lynxos${UNAME_RELEASE} exit ;; SM[BE]S:UNIX_SV:*:*) @@ -1163,10 +1155,10 @@ EOF echo ns32k-sni-sysv fi exit ;; - PENTIUM:*:4.0*:*) # Unisys `ClearPath HMP IX 4000' SVR4/MP effort - # says - echo i586-unisys-sysv4 - exit ;; + PENTIUM:*:4.0*:*) # Unisys `ClearPath HMP IX 4000' SVR4/MP effort + # says + echo i586-unisys-sysv4 + exit ;; *:UNIX_System_V:4*:FTX*) # From Gerald Hewes . # How about differentiating between stratus architectures? -djm @@ -1192,11 +1184,11 @@ EOF exit ;; R[34]000:*System_V*:*:* | R4000:UNIX_SYSV:*:* | R*000:UNIX_SV:*:*) if [ -d /usr/nec ]; then - echo mips-nec-sysv${UNAME_RELEASE} + echo mips-nec-sysv${UNAME_RELEASE} else - echo mips-unknown-sysv${UNAME_RELEASE} + echo mips-unknown-sysv${UNAME_RELEASE} fi - exit ;; + exit ;; BeBox:BeOS:*:*) # BeOS running on hardware made by Be, PPC only. echo powerpc-be-beos exit ;; @@ -1206,6 +1198,9 @@ EOF BePC:BeOS:*:*) # BeOS running on Intel PC compatible. echo i586-pc-beos exit ;; + BePC:Haiku:*:*) # Haiku running on Intel PC compatible. + echo i586-pc-haiku + exit ;; SX-4:SUPER-UX:*:*) echo sx4-nec-superux${UNAME_RELEASE} exit ;; @@ -1233,6 +1228,16 @@ EOF *:Darwin:*:*) UNAME_PROCESSOR=`uname -p` || UNAME_PROCESSOR=unknown case $UNAME_PROCESSOR in + i386) + eval $set_cc_for_build + if [ "$CC_FOR_BUILD" != 'no_compiler_found' ]; then + if (echo '#ifdef __LP64__'; echo IS_64BIT_ARCH; echo '#endif') | \ + (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | \ + grep IS_64BIT_ARCH >/dev/null + then + UNAME_PROCESSOR="x86_64" + fi + fi ;; unknown) UNAME_PROCESSOR=powerpc ;; esac echo ${UNAME_PROCESSOR}-apple-darwin${UNAME_RELEASE} @@ -1248,6 +1253,9 @@ EOF *:QNX:*:4*) echo i386-pc-qnx exit ;; + NEO-?:NONSTOP_KERNEL:*:*) + echo neo-tandem-nsk${UNAME_RELEASE} + exit ;; NSE-?:NONSTOP_KERNEL:*:*) echo nse-tandem-nsk${UNAME_RELEASE} exit ;; @@ -1293,13 +1301,13 @@ EOF echo pdp10-unknown-its exit ;; SEI:*:*:SEIUX) - echo mips-sei-seiux${UNAME_RELEASE} + echo mips-sei-seiux${UNAME_RELEASE} exit ;; *:DragonFly:*:*) echo ${UNAME_MACHINE}-unknown-dragonfly`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` exit ;; *:*VMS:*:*) - UNAME_MACHINE=`(uname -p) 2>/dev/null` + UNAME_MACHINE=`(uname -p) 2>/dev/null` case "${UNAME_MACHINE}" in A*) echo alpha-dec-vms ; exit ;; I*) echo ia64-dec-vms ; exit ;; @@ -1314,6 +1322,12 @@ EOF i*86:rdos:*:*) echo ${UNAME_MACHINE}-pc-rdos exit ;; + i*86:AROS:*:*) + echo ${UNAME_MACHINE}-pc-aros + exit ;; + x86_64:VMkernel:*:*) + echo ${UNAME_MACHINE}-unknown-esx + exit ;; esac #echo '(No uname command or uname output not recognized.)' 1>&2 @@ -1336,11 +1350,11 @@ main () #include printf ("m68k-sony-newsos%s\n", #ifdef NEWSOS4 - "4" + "4" #else - "" + "" #endif - ); exit (0); + ); exit (0); #endif #endif @@ -1474,9 +1488,9 @@ This script, last modified $timestamp, has failed to recognize the operating system you are using. It is advised that you download the most up to date version of the config scripts from - http://savannah.gnu.org/cgi-bin/viewcvs/*checkout*/config/config/config.guess + http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess;hb=HEAD and - http://savannah.gnu.org/cgi-bin/viewcvs/*checkout*/config/config/config.sub + http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub;hb=HEAD If the version you run ($0) is already up to date, please send the following data and any information you think might be diff --git a/cpp/thirdparty/protobuf-2.3.0/config.h.in b/cpp/thirdparty/protobuf-2.5.0/config.h.in similarity index 89% rename from cpp/thirdparty/protobuf-2.3.0/config.h.in rename to cpp/thirdparty/protobuf-2.5.0/config.h.in index 4c6678d01..6580e9523 100644 --- a/cpp/thirdparty/protobuf-2.3.0/config.h.in +++ b/cpp/thirdparty/protobuf-2.5.0/config.h.in @@ -1,9 +1,9 @@ /* config.h.in. Generated from configure.ac by autoheader. */ -/* the name of */ +/* the name of */ #undef HASH_MAP_CLASS -/* the location of */ +/* the location of or */ #undef HASH_MAP_H /* the namespace of hash_map/hash_set */ @@ -12,7 +12,7 @@ /* the name of */ #undef HASH_SET_CLASS -/* the location of */ +/* the location of or */ #undef HASH_SET_H /* Define to 1 if you have the header file. */ @@ -100,6 +100,9 @@ /* Define to the one symbol short name of this package. */ #undef PACKAGE_TARNAME +/* Define to the home page for this package. */ +#undef PACKAGE_URL + /* Define to the version of this package. */ #undef PACKAGE_VERSION @@ -110,20 +113,30 @@ /* Define to 1 if you have the ANSI C header files. */ #undef STDC_HEADERS -/* Version number of package */ -#undef VERSION - -/* Define to 1 if on AIX 3. - System headers sometimes define this. - We just want to avoid a redefinition error message. */ +/* Enable extensions on AIX 3, Interix. */ #ifndef _ALL_SOURCE # undef _ALL_SOURCE #endif - /* Enable GNU extensions on systems that have them. */ #ifndef _GNU_SOURCE # undef _GNU_SOURCE #endif +/* Enable threading extensions on Solaris. */ +#ifndef _POSIX_PTHREAD_SEMANTICS +# undef _POSIX_PTHREAD_SEMANTICS +#endif +/* Enable extensions on HP NonStop. */ +#ifndef _TANDEM_SOURCE +# undef _TANDEM_SOURCE +#endif +/* Enable general extensions on Solaris. */ +#ifndef __EXTENSIONS__ +# undef __EXTENSIONS__ +#endif + + +/* Version number of package */ +#undef VERSION /* Define to 1 if on MINIX. */ #undef _MINIX @@ -134,14 +147,3 @@ /* Define to 1 if you need to in order for `stat' and other things to work. */ #undef _POSIX_SOURCE - -/* Enable extensions on Solaris. */ -#ifndef __EXTENSIONS__ -# undef __EXTENSIONS__ -#endif -#ifndef _POSIX_PTHREAD_SEMANTICS -# undef _POSIX_PTHREAD_SEMANTICS -#endif -#ifndef _TANDEM_SOURCE -# undef _TANDEM_SOURCE -#endif diff --git a/cpp/thirdparty/protobuf-2.3.0/gtest/build-aux/config.sub b/cpp/thirdparty/protobuf-2.5.0/config.sub similarity index 85% rename from cpp/thirdparty/protobuf-2.3.0/gtest/build-aux/config.sub rename to cpp/thirdparty/protobuf-2.5.0/config.sub index 1761d8bdf..c894da455 100755 --- a/cpp/thirdparty/protobuf-2.3.0/gtest/build-aux/config.sub +++ b/cpp/thirdparty/protobuf-2.5.0/config.sub @@ -1,10 +1,10 @@ #! /bin/sh # Configuration validation subroutine script. # Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, -# 2000, 2001, 2002, 2003, 2004, 2005, 2006 Free Software Foundation, -# Inc. +# 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, +# 2011, 2012 Free Software Foundation, Inc. -timestamp='2007-06-28' +timestamp='2012-02-10' # This file is (in principle) common to ALL GNU software. # The presence of a machine in this file suggests that SOME GNU software @@ -21,9 +21,7 @@ timestamp='2007-06-28' # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA -# 02110-1301, USA. +# along with this program; if not, see . # # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a @@ -32,13 +30,16 @@ timestamp='2007-06-28' # Please send patches to . Submit a context -# diff and a properly formatted ChangeLog entry. +# diff and a properly formatted GNU ChangeLog entry. # # Configuration subroutine to validate and canonicalize a configuration type. # Supply the specified configuration type as an argument. # If it is invalid, we print an error message on stderr and exit with code 1. # Otherwise, we print the canonical config type on stdout and succeed. +# You can get the latest version of this script from: +# http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub;hb=HEAD + # This file is supposed to be the same for all GNU packages # and recognize all the CPU types, system types and aliases # that are meaningful with *any* GNU software. @@ -72,7 +73,8 @@ Report bugs and patches to ." version="\ GNU config.sub ($timestamp) -Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005 +Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, +2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO @@ -120,12 +122,18 @@ esac # Here we must recognize all the valid KERNEL-OS combinations. maybe_os=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\2/'` case $maybe_os in - nto-qnx* | linux-gnu* | linux-dietlibc | linux-newlib* | linux-uclibc* | \ - uclinux-uclibc* | uclinux-gnu* | kfreebsd*-gnu* | knetbsd*-gnu* | netbsd*-gnu* | \ + nto-qnx* | linux-gnu* | linux-android* | linux-dietlibc | linux-newlib* | \ + linux-uclibc* | uclinux-uclibc* | uclinux-gnu* | kfreebsd*-gnu* | \ + knetbsd*-gnu* | netbsd*-gnu* | \ + kopensolaris*-gnu* | \ storm-chaos* | os2-emx* | rtmk-nova*) os=-$maybe_os basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'` ;; + android-linux) + os=-linux-android + basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'`-unknown + ;; *) basic_machine=`echo $1 | sed 's/-[^-]*$//'` if [ $basic_machine != $1 ] @@ -148,10 +156,13 @@ case $os in -convergent* | -ncr* | -news | -32* | -3600* | -3100* | -hitachi* |\ -c[123]* | -convex* | -sun | -crds | -omron* | -dg | -ultra | -tti* | \ -harris | -dolphin | -highlevel | -gould | -cbm | -ns | -masscomp | \ - -apple | -axis | -knuth | -cray) + -apple | -axis | -knuth | -cray | -microblaze) os= basic_machine=$1 ;; + -bluegene*) + os=-cnk + ;; -sim | -cisco | -oki | -wec | -winbond) os= basic_machine=$1 @@ -166,10 +177,10 @@ case $os in os=-chorusos basic_machine=$1 ;; - -chorusrdb) - os=-chorusrdb + -chorusrdb) + os=-chorusrdb basic_machine=$1 - ;; + ;; -hiux*) os=-hiuxwe2 ;; @@ -238,24 +249,32 @@ case $basic_machine in # Some are omitted here because they have special meanings below. 1750a | 580 \ | a29k \ + | aarch64 | aarch64_be \ | alpha | alphaev[4-8] | alphaev56 | alphaev6[78] | alphapca5[67] \ | alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] | alpha64pca5[67] \ | am33_2.0 \ | arc | arm | arm[bl]e | arme[lb] | armv[2345] | armv[345][lb] | avr | avr32 \ + | be32 | be64 \ | bfin \ | c4x | clipper \ | d10v | d30v | dlx | dsp16xx \ + | epiphany \ | fido | fr30 | frv \ | h8300 | h8500 | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \ + | hexagon \ | i370 | i860 | i960 | ia64 \ | ip2k | iq2000 \ + | le32 | le64 \ + | lm32 \ | m32c | m32r | m32rle | m68000 | m68k | m88k \ - | maxq | mb | microblaze | mcore | mep \ + | maxq | mb | microblaze | mcore | mep | metag \ | mips | mipsbe | mipseb | mipsel | mipsle \ | mips16 \ | mips64 | mips64el \ - | mips64vr | mips64vrel \ + | mips64octeon | mips64octeonel \ | mips64orion | mips64orionel \ + | mips64r5900 | mips64r5900el \ + | mips64vr | mips64vrel \ | mips64vr4100 | mips64vr4100el \ | mips64vr4300 | mips64vr4300el \ | mips64vr5000 | mips64vr5000el \ @@ -268,29 +287,42 @@ case $basic_machine in | mipsisa64sr71k | mipsisa64sr71kel \ | mipstx39 | mipstx39el \ | mn10200 | mn10300 \ + | moxie \ | mt \ | msp430 \ + | nds32 | nds32le | nds32be \ | nios | nios2 \ | ns16k | ns32k \ + | open8 \ | or32 \ | pdp10 | pdp11 | pj | pjl \ - | powerpc | powerpc64 | powerpc64le | powerpcle | ppcbe \ + | powerpc | powerpc64 | powerpc64le | powerpcle \ | pyramid \ + | rl78 | rx \ | score \ - | sh | sh[1234] | sh[24]a | sh[23]e | sh[34]eb | sheb | shbe | shle | sh[1234]le | sh3ele \ + | sh | sh[1234] | sh[24]a | sh[24]aeb | sh[23]e | sh[34]eb | sheb | shbe | shle | sh[1234]le | sh3ele \ | sh64 | sh64le \ | sparc | sparc64 | sparc64b | sparc64v | sparc86x | sparclet | sparclite \ | sparcv8 | sparcv9 | sparcv9b | sparcv9v \ - | spu | strongarm \ - | tahoe | thumb | tic4x | tic80 | tron \ - | v850 | v850e \ + | spu \ + | tahoe | tic4x | tic54x | tic55x | tic6x | tic80 | tron \ + | ubicom32 \ + | v850 | v850e | v850e1 | v850e2 | v850es | v850e2v3 \ | we32k \ - | x86 | xc16x | xscale | xscalee[bl] | xstormy16 | xtensa \ - | z8k) + | x86 | xc16x | xstormy16 | xtensa \ + | z8k | z80) basic_machine=$basic_machine-unknown ;; - m6811 | m68hc11 | m6812 | m68hc12) - # Motorola 68HC11/12. + c54x) + basic_machine=tic54x-unknown + ;; + c55x) + basic_machine=tic55x-unknown + ;; + c6x) + basic_machine=tic6x-unknown + ;; + m6811 | m68hc11 | m6812 | m68hc12 | m68hcs12x | picochip) basic_machine=$basic_machine-unknown os=-none ;; @@ -300,6 +332,21 @@ case $basic_machine in basic_machine=mt-unknown ;; + strongarm | thumb | xscale) + basic_machine=arm-unknown + ;; + xgate) + basic_machine=$basic_machine-unknown + os=-none + ;; + xscaleeb) + basic_machine=armeb-unknown + ;; + + xscaleel) + basic_machine=armel-unknown + ;; + # We use `pc' rather than `unknown' # because (1) that's what they normally are, and # (2) the word "unknown" tends to confuse beginning users. @@ -314,29 +361,36 @@ case $basic_machine in # Recognize the basic CPU types with company name. 580-* \ | a29k-* \ + | aarch64-* | aarch64_be-* \ | alpha-* | alphaev[4-8]-* | alphaev56-* | alphaev6[78]-* \ | alpha64-* | alpha64ev[4-8]-* | alpha64ev56-* | alpha64ev6[78]-* \ | alphapca5[67]-* | alpha64pca5[67]-* | arc-* \ | arm-* | armbe-* | armle-* | armeb-* | armv*-* \ | avr-* | avr32-* \ + | be32-* | be64-* \ | bfin-* | bs2000-* \ - | c[123]* | c30-* | [cjt]90-* | c4x-* | c54x-* | c55x-* | c6x-* \ + | c[123]* | c30-* | [cjt]90-* | c4x-* \ | clipper-* | craynv-* | cydra-* \ | d10v-* | d30v-* | dlx-* \ | elxsi-* \ | f30[01]-* | f700-* | fido-* | fr30-* | frv-* | fx80-* \ | h8300-* | h8500-* \ | hppa-* | hppa1.[01]-* | hppa2.0-* | hppa2.0[nw]-* | hppa64-* \ + | hexagon-* \ | i*86-* | i860-* | i960-* | ia64-* \ | ip2k-* | iq2000-* \ + | le32-* | le64-* \ + | lm32-* \ | m32c-* | m32r-* | m32rle-* \ | m68000-* | m680[012346]0-* | m68360-* | m683?2-* | m68k-* \ - | m88110-* | m88k-* | maxq-* | mcore-* \ + | m88110-* | m88k-* | maxq-* | mcore-* | metag-* | microblaze-* \ | mips-* | mipsbe-* | mipseb-* | mipsel-* | mipsle-* \ | mips16-* \ | mips64-* | mips64el-* \ - | mips64vr-* | mips64vrel-* \ + | mips64octeon-* | mips64octeonel-* \ | mips64orion-* | mips64orionel-* \ + | mips64r5900-* | mips64r5900el-* \ + | mips64vr-* | mips64vrel-* \ | mips64vr4100-* | mips64vr4100el-* \ | mips64vr4300-* | mips64vr4300el-* \ | mips64vr5000-* | mips64vr5000el-* \ @@ -351,27 +405,36 @@ case $basic_machine in | mmix-* \ | mt-* \ | msp430-* \ + | nds32-* | nds32le-* | nds32be-* \ | nios-* | nios2-* \ | none-* | np1-* | ns16k-* | ns32k-* \ + | open8-* \ | orion-* \ | pdp10-* | pdp11-* | pj-* | pjl-* | pn-* | power-* \ - | powerpc-* | powerpc64-* | powerpc64le-* | powerpcle-* | ppcbe-* \ + | powerpc-* | powerpc64-* | powerpc64le-* | powerpcle-* \ | pyramid-* \ - | romp-* | rs6000-* \ - | sh-* | sh[1234]-* | sh[24]a-* | sh[23]e-* | sh[34]eb-* | sheb-* | shbe-* \ + | rl78-* | romp-* | rs6000-* | rx-* \ + | sh-* | sh[1234]-* | sh[24]a-* | sh[24]aeb-* | sh[23]e-* | sh[34]eb-* | sheb-* | shbe-* \ | shle-* | sh[1234]le-* | sh3ele-* | sh64-* | sh64le-* \ | sparc-* | sparc64-* | sparc64b-* | sparc64v-* | sparc86x-* | sparclet-* \ | sparclite-* \ - | sparcv8-* | sparcv9-* | sparcv9b-* | sparcv9v-* | strongarm-* | sv1-* | sx?-* \ - | tahoe-* | thumb-* \ + | sparcv8-* | sparcv9-* | sparcv9b-* | sparcv9v-* | sv1-* | sx?-* \ + | tahoe-* \ | tic30-* | tic4x-* | tic54x-* | tic55x-* | tic6x-* | tic80-* \ + | tile*-* \ | tron-* \ - | v850-* | v850e-* | vax-* \ + | ubicom32-* \ + | v850-* | v850e-* | v850e1-* | v850es-* | v850e2-* | v850e2v3-* \ + | vax-* \ | we32k-* \ - | x86-* | x86_64-* | xc16x-* | xps100-* | xscale-* | xscalee[bl]-* \ - | xstormy16-* | xtensa-* \ + | x86-* | x86_64-* | xc16x-* | xps100-* \ + | xstormy16-* | xtensa*-* \ | ymp-* \ - | z8k-*) + | z8k-* | z80-*) + ;; + # Recognize the basic CPU types without company name, with glob match. + xtensa*) + basic_machine=$basic_machine-unknown ;; # Recognize the various machine names and aliases which stand # for a CPU type and a company and sometimes even an OS. @@ -389,7 +452,7 @@ case $basic_machine in basic_machine=a29k-amd os=-udi ;; - abacus) + abacus) basic_machine=abacus-unknown ;; adobe68k) @@ -435,6 +498,10 @@ case $basic_machine in basic_machine=m68k-apollo os=-bsd ;; + aros) + basic_machine=i386-pc + os=-aros + ;; aux) basic_machine=m68k-apple os=-aux @@ -443,10 +510,35 @@ case $basic_machine in basic_machine=ns32k-sequent os=-dynix ;; + blackfin) + basic_machine=bfin-unknown + os=-linux + ;; + blackfin-*) + basic_machine=bfin-`echo $basic_machine | sed 's/^[^-]*-//'` + os=-linux + ;; + bluegene*) + basic_machine=powerpc-ibm + os=-cnk + ;; + c54x-*) + basic_machine=tic54x-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + c55x-*) + basic_machine=tic55x-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + c6x-*) + basic_machine=tic6x-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; c90) basic_machine=c90-cray os=-unicos ;; + cegcc) + basic_machine=arm-unknown + os=-cegcc + ;; convex-c1) basic_machine=c1-convex os=-bsd @@ -475,7 +567,7 @@ case $basic_machine in basic_machine=craynv-cray os=-unicosmp ;; - cr16) + cr16 | cr16-*) basic_machine=cr16-unknown os=-elf ;; @@ -514,6 +606,10 @@ case $basic_machine in basic_machine=m88k-motorola os=-sysv3 ;; + dicos) + basic_machine=i686-pc + os=-dicos + ;; djgpp) basic_machine=i586-pc os=-msdosdjgpp @@ -629,7 +725,6 @@ case $basic_machine in i370-ibm* | ibm*) basic_machine=i370-ibm ;; -# I'm not sure what "Sysv32" means. Should this be sysv3.2? i*86v32) basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` os=-sysv32 @@ -668,6 +763,14 @@ case $basic_machine in basic_machine=m68k-isi os=-sysv ;; + m68knommu) + basic_machine=m68k-unknown + os=-linux + ;; + m68knommu-*) + basic_machine=m68k-`echo $basic_machine | sed 's/^[^-]*-//'` + os=-linux + ;; m88k-omron*) basic_machine=m88k-omron ;; @@ -679,6 +782,9 @@ case $basic_machine in basic_machine=ns32k-utek os=-sysv ;; + microblaze) + basic_machine=microblaze-xilinx + ;; mingw32) basic_machine=i386-pc os=-mingw32 @@ -715,10 +821,18 @@ case $basic_machine in ms1-*) basic_machine=`echo $basic_machine | sed -e 's/ms1-/mt-/'` ;; + msys) + basic_machine=i386-pc + os=-msys + ;; mvs) basic_machine=i370-ibm os=-mvs ;; + nacl) + basic_machine=le32-unknown + os=-nacl + ;; ncr3000) basic_machine=i486-ncr os=-sysv4 @@ -783,6 +897,12 @@ case $basic_machine in np1) basic_machine=np1-gould ;; + neo-tandem) + basic_machine=neo-tandem + ;; + nse-tandem) + basic_machine=nse-tandem + ;; nsr-tandem) basic_machine=nsr-tandem ;; @@ -813,6 +933,14 @@ case $basic_machine in basic_machine=i860-intel os=-osf ;; + parisc) + basic_machine=hppa-unknown + os=-linux + ;; + parisc-*) + basic_machine=hppa-`echo $basic_machine | sed 's/^[^-]*-//'` + os=-linux + ;; pbd) basic_machine=sparc-tti ;; @@ -857,9 +985,10 @@ case $basic_machine in ;; power) basic_machine=power-ibm ;; - ppc) basic_machine=powerpc-unknown + ppc | ppcbe) basic_machine=powerpc-unknown ;; - ppc-*) basic_machine=powerpc-`echo $basic_machine | sed 's/^[^-]*-//'` + ppc-* | ppcbe-*) + basic_machine=powerpc-`echo $basic_machine | sed 's/^[^-]*-//'` ;; ppcle | powerpclittle | ppc-le | powerpc-little) basic_machine=powerpcle-unknown @@ -953,6 +1082,9 @@ case $basic_machine in basic_machine=i860-stratus os=-sysv4 ;; + strongarm-* | thumb-*) + basic_machine=arm-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; sun2) basic_machine=m68000-sun ;; @@ -1009,17 +1141,9 @@ case $basic_machine in basic_machine=t90-cray os=-unicos ;; - tic54x | c54x*) - basic_machine=tic54x-unknown - os=-coff - ;; - tic55x | c55x*) - basic_machine=tic55x-unknown - os=-coff - ;; - tic6x | c6x*) - basic_machine=tic6x-unknown - os=-coff + tile*) + basic_machine=$basic_machine-unknown + os=-linux-gnu ;; tx39) basic_machine=mipstx39-unknown @@ -1088,6 +1212,9 @@ case $basic_machine in xps | xps100) basic_machine=xps100-honeywell ;; + xscale-* | xscalee[bl]-*) + basic_machine=`echo $basic_machine | sed 's/^xscale/arm/'` + ;; ymp) basic_machine=ymp-cray os=-unicos @@ -1096,6 +1223,10 @@ case $basic_machine in basic_machine=z8k-unknown os=-sim ;; + z80-*-coff) + basic_machine=z80-unknown + os=-sim + ;; none) basic_machine=none-none os=-none @@ -1134,7 +1265,7 @@ case $basic_machine in we32k) basic_machine=we32k-att ;; - sh[1234] | sh[24]a | sh[34]eb | sh[1234]le | sh[23]ele) + sh[1234] | sh[24]a | sh[24]aeb | sh[34]eb | sh[1234]le | sh[23]ele) basic_machine=sh-unknown ;; sparc | sparcv8 | sparcv9 | sparcv9b | sparcv9v) @@ -1181,9 +1312,12 @@ esac if [ x"$os" != x"" ] then case $os in - # First match some system type aliases - # that might get confused with valid system types. + # First match some system type aliases + # that might get confused with valid system types. # -solaris* is a basic system type, with this one exception. + -auroraux) + os=-auroraux + ;; -solaris1 | -solaris1.*) os=`echo $os | sed -e 's|solaris1|sunos4|'` ;; @@ -1204,10 +1338,11 @@ case $os in # Each alternative MUST END IN A *, to match a version number. # -sysv* is not here because it comes later, after sysvr4. -gnu* | -bsd* | -mach* | -minix* | -genix* | -ultrix* | -irix* \ - | -*vms* | -sco* | -esix* | -isc* | -aix* | -sunos | -sunos[34]*\ - | -hpux* | -unos* | -osf* | -luna* | -dgux* | -solaris* | -sym* \ + | -*vms* | -sco* | -esix* | -isc* | -aix* | -cnk* | -sunos | -sunos[34]*\ + | -hpux* | -unos* | -osf* | -luna* | -dgux* | -auroraux* | -solaris* \ + | -sym* | -kopensolaris* \ | -amigaos* | -amigados* | -msdos* | -newsos* | -unicos* | -aof* \ - | -aos* \ + | -aos* | -aros* \ | -nindy* | -vxsim* | -vxworks* | -ebmon* | -hms* | -mvs* \ | -clix* | -riscos* | -uniplus* | -iris* | -rtu* | -xenix* \ | -hiux* | -386bsd* | -knetbsd* | -mirbsd* | -netbsd* \ @@ -1216,9 +1351,10 @@ case $os in | -bosx* | -nextstep* | -cxux* | -aout* | -elf* | -oabi* \ | -ptx* | -coff* | -ecoff* | -winnt* | -domain* | -vsta* \ | -udi* | -eabi* | -lites* | -ieee* | -go32* | -aux* \ - | -chorusos* | -chorusrdb* \ - | -cygwin* | -pe* | -psos* | -moss* | -proelf* | -rtems* \ - | -mingw32* | -linux-gnu* | -linux-newlib* | -linux-uclibc* \ + | -chorusos* | -chorusrdb* | -cegcc* \ + | -cygwin* | -msys* | -pe* | -psos* | -moss* | -proelf* | -rtems* \ + | -mingw32* | -linux-gnu* | -linux-android* \ + | -linux-newlib* | -linux-uclibc* \ | -uxpv* | -beos* | -mpeix* | -udk* \ | -interix* | -uwin* | -mks* | -rhapsody* | -darwin* | -opened* \ | -openstep* | -oskit* | -conix* | -pw32* | -nonstopux* \ @@ -1226,7 +1362,7 @@ case $os in | -os2* | -vos* | -palmos* | -uclinux* | -nucleus* \ | -morphos* | -superux* | -rtmk* | -rtmk-nova* | -windiss* \ | -powermax* | -dnix* | -nx6 | -nx7 | -sei* | -dragonfly* \ - | -skyos* | -haiku* | -rdos* | -toppers* | -drops*) + | -skyos* | -haiku* | -rdos* | -toppers* | -drops* | -es*) # Remember, each alternative MUST END IN *, to match a version number. ;; -qnx*) @@ -1265,7 +1401,7 @@ case $os in -opened*) os=-openedition ;; - -os400*) + -os400*) os=-os400 ;; -wince*) @@ -1314,7 +1450,7 @@ case $os in -sinix*) os=-sysv4 ;; - -tpf*) + -tpf*) os=-tpf ;; -triton*) @@ -1356,6 +1492,11 @@ case $os in -zvmoe) os=-zvmoe ;; + -dicos*) + os=-dicos + ;; + -nacl*) + ;; -none) ;; *) @@ -1378,10 +1519,10 @@ else # system, and we'll never get to this point. case $basic_machine in - score-*) + score-*) os=-elf ;; - spu-*) + spu-*) os=-elf ;; *-acorn) @@ -1393,8 +1534,17 @@ case $basic_machine in arm*-semi) os=-aout ;; - c4x-* | tic4x-*) - os=-coff + c4x-* | tic4x-*) + os=-coff + ;; + tic54x-*) + os=-coff + ;; + tic55x-*) + os=-coff + ;; + tic6x-*) + os=-coff ;; # This must come before the *-dec entry. pdp10-*) @@ -1414,14 +1564,11 @@ case $basic_machine in ;; m68000-sun) os=-sunos3 - # This also exists in the configure program, but was not the - # default. - # os=-sunos4 ;; m68*-cisco) os=-aout ;; - mep-*) + mep-*) os=-elf ;; mips*-cisco) @@ -1448,7 +1595,7 @@ case $basic_machine in *-ibm) os=-aix ;; - *-knuth) + *-knuth) os=-mmixware ;; *-wec) @@ -1553,7 +1700,7 @@ case $basic_machine in -sunos*) vendor=sun ;; - -aix*) + -cnk*|-aix*) vendor=ibm ;; -beos*) diff --git a/cpp/thirdparty/protobuf-2.3.0/configure b/cpp/thirdparty/protobuf-2.5.0/configure similarity index 60% rename from cpp/thirdparty/protobuf-2.3.0/configure rename to cpp/thirdparty/protobuf-2.5.0/configure index 5b395ad9a..80443b2fd 100755 --- a/cpp/thirdparty/protobuf-2.3.0/configure +++ b/cpp/thirdparty/protobuf-2.5.0/configure @@ -1,62 +1,85 @@ #! /bin/sh # Guess values for system-dependent variables and create Makefiles. -# Generated by GNU Autoconf 2.61 for Protocol Buffers 2.3.0. +# Generated by GNU Autoconf 2.68 for Protocol Buffers 2.5.0. # # Report bugs to . # +# # Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001, -# 2002, 2003, 2004, 2005, 2006 Free Software Foundation, Inc. +# 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 Free Software +# Foundation, Inc. +# +# # This configure script is free software; the Free Software Foundation # gives unlimited permission to copy, distribute and modify it. -## --------------------- ## -## M4sh Initialization. ## -## --------------------- ## +## -------------------- ## +## M4sh Initialization. ## +## -------------------- ## # Be more Bourne compatible DUALCASE=1; export DUALCASE # for MKS sh -if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then +if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then : emulate sh NULLCMD=: - # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which + # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which # is contrary to our usage. Disable this feature. alias -g '${1+"$@"}'='"$@"' setopt NO_GLOB_SUBST else - case `(set -o) 2>/dev/null` in - *posix*) set -o posix ;; + case `(set -o) 2>/dev/null` in #( + *posix*) : + set -o posix ;; #( + *) : + ;; esac - fi - - -# PATH needs CR -# Avoid depending upon Character Ranges. -as_cr_letters='abcdefghijklmnopqrstuvwxyz' -as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' -as_cr_Letters=$as_cr_letters$as_cr_LETTERS -as_cr_digits='0123456789' -as_cr_alnum=$as_cr_Letters$as_cr_digits - -# The user is always right. -if test "${PATH_SEPARATOR+set}" != set; then - echo "#! /bin/sh" >conf$$.sh - echo "exit 0" >>conf$$.sh - chmod +x conf$$.sh - if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then - PATH_SEPARATOR=';' +as_nl=' +' +export as_nl +# Printing a long string crashes Solaris 7 /usr/bin/printf. +as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' +as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo +as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo +# Prefer a ksh shell builtin over an external printf program on Solaris, +# but without wasting forks for bash or zsh. +if test -z "$BASH_VERSION$ZSH_VERSION" \ + && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then + as_echo='print -r --' + as_echo_n='print -rn --' +elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then + as_echo='printf %s\n' + as_echo_n='printf %s' +else + if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then + as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"' + as_echo_n='/usr/ucb/echo -n' else - PATH_SEPARATOR=: + as_echo_body='eval expr "X$1" : "X\\(.*\\)"' + as_echo_n_body='eval + arg=$1; + case $arg in #( + *"$as_nl"*) + expr "X$arg" : "X\\(.*\\)$as_nl"; + arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;; + esac; + expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl" + ' + export as_echo_n_body + as_echo_n='sh -c $as_echo_n_body as_echo' fi - rm -f conf$$.sh + export as_echo_body + as_echo='sh -c $as_echo_body as_echo' fi -# Support unset when possible. -if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then - as_unset=unset -else - as_unset=false +# The user is always right. +if test "${PATH_SEPARATOR+set}" != set; then + PATH_SEPARATOR=: + (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { + (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || + PATH_SEPARATOR=';' + } fi @@ -65,20 +88,19 @@ fi # there to prevent editors from complaining about space-tab. # (If _AS_PATH_WALK were called with IFS unset, it would disable word # splitting by setting IFS to empty value.) -as_nl=' -' IFS=" "" $as_nl" # Find who we are. Look in the path if we contain no directory separator. -case $0 in +as_myself= +case $0 in #(( *[\\/]* ) as_myself=$0 ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. - test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break -done + test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break + done IFS=$as_save_IFS ;; @@ -89,32 +111,286 @@ if test "x$as_myself" = x; then as_myself=$0 fi if test ! -f "$as_myself"; then - echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 - { (exit 1); exit 1; } + $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 + exit 1 fi -# Work around bugs in pre-3.0 UWIN ksh. -for as_var in ENV MAIL MAILPATH -do ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var +# Unset variables that we do not need and which cause bugs (e.g. in +# pre-3.0 UWIN ksh). But do not cause bugs in bash 2.01; the "|| exit 1" +# suppresses any "Segmentation fault" message there. '((' could +# trigger a bug in pdksh 5.2.14. +for as_var in BASH_ENV ENV MAIL MAILPATH +do eval test x\${$as_var+set} = xset \ + && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : done PS1='$ ' PS2='> ' PS4='+ ' # NLS nuisances. -for as_var in \ - LANG LANGUAGE LC_ADDRESS LC_ALL LC_COLLATE LC_CTYPE LC_IDENTIFICATION \ - LC_MEASUREMENT LC_MESSAGES LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER \ - LC_TELEPHONE LC_TIME +LC_ALL=C +export LC_ALL +LANGUAGE=C +export LANGUAGE + +# CDPATH. +(unset CDPATH) >/dev/null 2>&1 && unset CDPATH + +if test "x$CONFIG_SHELL" = x; then + as_bourne_compatible="if test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then : + emulate sh + NULLCMD=: + # Pre-4.2 versions of Zsh do word splitting on \${1+\"\$@\"}, which + # is contrary to our usage. Disable this feature. + alias -g '\${1+\"\$@\"}'='\"\$@\"' + setopt NO_GLOB_SUBST +else + case \`(set -o) 2>/dev/null\` in #( + *posix*) : + set -o posix ;; #( + *) : + ;; +esac +fi +" + as_required="as_fn_return () { (exit \$1); } +as_fn_success () { as_fn_return 0; } +as_fn_failure () { as_fn_return 1; } +as_fn_ret_success () { return 0; } +as_fn_ret_failure () { return 1; } + +exitcode=0 +as_fn_success || { exitcode=1; echo as_fn_success failed.; } +as_fn_failure && { exitcode=1; echo as_fn_failure succeeded.; } +as_fn_ret_success || { exitcode=1; echo as_fn_ret_success failed.; } +as_fn_ret_failure && { exitcode=1; echo as_fn_ret_failure succeeded.; } +if ( set x; as_fn_ret_success y && test x = \"\$1\" ); then : + +else + exitcode=1; echo positional parameters were not saved. +fi +test x\$exitcode = x0 || exit 1" + as_suggested=" as_lineno_1=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_1a=\$LINENO + as_lineno_2=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_2a=\$LINENO + eval 'test \"x\$as_lineno_1'\$as_run'\" != \"x\$as_lineno_2'\$as_run'\" && + test \"x\`expr \$as_lineno_1'\$as_run' + 1\`\" = \"x\$as_lineno_2'\$as_run'\"' || exit 1 +test \$(( 1 + 1 )) = 2 || exit 1 + + test -n \"\${ZSH_VERSION+set}\${BASH_VERSION+set}\" || ( + ECHO='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' + ECHO=\$ECHO\$ECHO\$ECHO\$ECHO\$ECHO + ECHO=\$ECHO\$ECHO\$ECHO\$ECHO\$ECHO\$ECHO + PATH=/empty FPATH=/empty; export PATH FPATH + test \"X\`printf %s \$ECHO\`\" = \"X\$ECHO\" \\ + || test \"X\`print -r -- \$ECHO\`\" = \"X\$ECHO\" ) || exit 1" + if (eval "$as_required") 2>/dev/null; then : + as_have_required=yes +else + as_have_required=no +fi + if test x$as_have_required = xyes && (eval "$as_suggested") 2>/dev/null; then : + +else + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +as_found=false +for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH do - if (set +x; test -z "`(eval $as_var=C; export $as_var) 2>&1`"); then - eval $as_var=C; export $as_var + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + as_found=: + case $as_dir in #( + /*) + for as_base in sh bash ksh sh5; do + # Try only shells that exist, to save several forks. + as_shell=$as_dir/$as_base + if { test -f "$as_shell" || test -f "$as_shell.exe"; } && + { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$as_shell"; } 2>/dev/null; then : + CONFIG_SHELL=$as_shell as_have_required=yes + if { $as_echo "$as_bourne_compatible""$as_suggested" | as_run=a "$as_shell"; } 2>/dev/null; then : + break 2 +fi +fi + done;; + esac + as_found=false +done +$as_found || { if { test -f "$SHELL" || test -f "$SHELL.exe"; } && + { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$SHELL"; } 2>/dev/null; then : + CONFIG_SHELL=$SHELL as_have_required=yes +fi; } +IFS=$as_save_IFS + + + if test "x$CONFIG_SHELL" != x; then : + # We cannot yet assume a decent shell, so we have to provide a + # neutralization value for shells without unset; and this also + # works around shells that cannot unset nonexistent variables. + # Preserve -v and -x to the replacement shell. + BASH_ENV=/dev/null + ENV=/dev/null + (unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV + export CONFIG_SHELL + case $- in # (((( + *v*x* | *x*v* ) as_opts=-vx ;; + *v* ) as_opts=-v ;; + *x* ) as_opts=-x ;; + * ) as_opts= ;; + esac + exec "$CONFIG_SHELL" $as_opts "$as_myself" ${1+"$@"} +fi + + if test x$as_have_required = xno; then : + $as_echo "$0: This script requires a shell more modern than all" + $as_echo "$0: the shells that I found on your system." + if test x${ZSH_VERSION+set} = xset ; then + $as_echo "$0: In particular, zsh $ZSH_VERSION has bugs and should" + $as_echo "$0: be upgraded to zsh 4.3.4 or later." else - ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var + $as_echo "$0: Please tell bug-autoconf@gnu.org and +$0: protobuf@googlegroups.com about your system, including +$0: any error possibly output before this message. Then +$0: install a modern shell, or manually run the script +$0: under such a shell if you do have one." fi -done + exit 1 +fi +fi +fi +SHELL=${CONFIG_SHELL-/bin/sh} +export SHELL +# Unset more variables known to interfere with behavior of common tools. +CLICOLOR_FORCE= GREP_OPTIONS= +unset CLICOLOR_FORCE GREP_OPTIONS + +## --------------------- ## +## M4sh Shell Functions. ## +## --------------------- ## +# as_fn_unset VAR +# --------------- +# Portably unset VAR. +as_fn_unset () +{ + { eval $1=; unset $1;} +} +as_unset=as_fn_unset + +# as_fn_set_status STATUS +# ----------------------- +# Set $? to STATUS, without forking. +as_fn_set_status () +{ + return $1 +} # as_fn_set_status + +# as_fn_exit STATUS +# ----------------- +# Exit the shell with STATUS, even in a "trap 0" or "set -e" context. +as_fn_exit () +{ + set +e + as_fn_set_status $1 + exit $1 +} # as_fn_exit + +# as_fn_mkdir_p +# ------------- +# Create "$as_dir" as a directory, including parents if necessary. +as_fn_mkdir_p () +{ + + case $as_dir in #( + -*) as_dir=./$as_dir;; + esac + test -d "$as_dir" || eval $as_mkdir_p || { + as_dirs= + while :; do + case $as_dir in #( + *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( + *) as_qdir=$as_dir;; + esac + as_dirs="'$as_qdir' $as_dirs" + as_dir=`$as_dirname -- "$as_dir" || +$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$as_dir" : 'X\(//\)[^/]' \| \ + X"$as_dir" : 'X\(//\)$' \| \ + X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || +$as_echo X"$as_dir" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + test -d "$as_dir" && break + done + test -z "$as_dirs" || eval "mkdir $as_dirs" + } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir" + + +} # as_fn_mkdir_p +# as_fn_append VAR VALUE +# ---------------------- +# Append the text in VALUE to the end of the definition contained in VAR. Take +# advantage of any shell optimizations that allow amortized linear growth over +# repeated appends, instead of the typical quadratic growth present in naive +# implementations. +if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then : + eval 'as_fn_append () + { + eval $1+=\$2 + }' +else + as_fn_append () + { + eval $1=\$$1\$2 + } +fi # as_fn_append + +# as_fn_arith ARG... +# ------------------ +# Perform arithmetic evaluation on the ARGs, and store the result in the +# global $as_val. Take advantage of shells that can avoid forks. The arguments +# must be portable across $(()) and expr. +if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then : + eval 'as_fn_arith () + { + as_val=$(( $* )) + }' +else + as_fn_arith () + { + as_val=`expr "$@" || test $? -eq 1` + } +fi # as_fn_arith + + +# as_fn_error STATUS ERROR [LINENO LOG_FD] +# ---------------------------------------- +# Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are +# provided, also output the error to LOG_FD, referencing LINENO. Then exit the +# script with STATUS, using 1 if that was 0. +as_fn_error () +{ + as_status=$1; test $as_status -eq 0 && as_status=1 + if test "$4"; then + as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4 + fi + $as_echo "$as_me: error: $2" >&2 + as_fn_exit $as_status +} # as_fn_error -# Required to use basename. if expr a : '\(a\)' >/dev/null 2>&1 && test "X`expr 00001 : '.*\(...\)'`" = X001; then as_expr=expr @@ -128,13 +404,17 @@ else as_basename=false fi +if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then + as_dirname=dirname +else + as_dirname=false +fi -# Name of the executable. as_me=`$as_basename -- "$0" || $as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ X"$0" : 'X\(//\)$' \| \ X"$0" : 'X\(/\)' \| . 2>/dev/null || -echo X/"$0" | +$as_echo X/"$0" | sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/ q @@ -149,563 +429,131 @@ echo X/"$0" | } s/.*/./; q'` -# CDPATH. -$as_unset CDPATH +# Avoid depending upon Character Ranges. +as_cr_letters='abcdefghijklmnopqrstuvwxyz' +as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' +as_cr_Letters=$as_cr_letters$as_cr_LETTERS +as_cr_digits='0123456789' +as_cr_alnum=$as_cr_Letters$as_cr_digits -if test "x$CONFIG_SHELL" = x; then - if (eval ":") 2>/dev/null; then - as_have_required=yes -else - as_have_required=no -fi + as_lineno_1=$LINENO as_lineno_1a=$LINENO + as_lineno_2=$LINENO as_lineno_2a=$LINENO + eval 'test "x$as_lineno_1'$as_run'" != "x$as_lineno_2'$as_run'" && + test "x`expr $as_lineno_1'$as_run' + 1`" = "x$as_lineno_2'$as_run'"' || { + # Blame Lee E. McMahon (1931-1989) for sed's syntax. :-) + sed -n ' + p + /[$]LINENO/= + ' <$as_myself | + sed ' + s/[$]LINENO.*/&-/ + t lineno + b + :lineno + N + :loop + s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/ + t loop + s/-\n.*// + ' >$as_me.lineno && + chmod +x "$as_me.lineno" || + { $as_echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2; as_fn_exit 1; } - if test $as_have_required = yes && (eval ": -(as_func_return () { - (exit \$1) -} -as_func_success () { - as_func_return 0 -} -as_func_failure () { - as_func_return 1 -} -as_func_ret_success () { - return 0 -} -as_func_ret_failure () { - return 1 + # Don't try to exec as it changes $[0], causing all sort of problems + # (the dirname of $[0] is not the place where we might find the + # original and so on. Autoconf is especially sensitive to this). + . "./$as_me.lineno" + # Exit status is that of the last command. + exit } -exitcode=0 -if as_func_success; then - : -else - exitcode=1 - echo as_func_success failed. -fi - -if as_func_failure; then - exitcode=1 - echo as_func_failure succeeded. -fi +ECHO_C= ECHO_N= ECHO_T= +case `echo -n x` in #((((( +-n*) + case `echo 'xy\c'` in + *c*) ECHO_T=' ';; # ECHO_T is single tab character. + xy) ECHO_C='\c';; + *) echo `echo ksh88 bug on AIX 6.1` > /dev/null + ECHO_T=' ';; + esac;; +*) + ECHO_N='-n';; +esac -if as_func_ret_success; then - : +rm -f conf$$ conf$$.exe conf$$.file +if test -d conf$$.dir; then + rm -f conf$$.dir/conf$$.file +else + rm -f conf$$.dir + mkdir conf$$.dir 2>/dev/null +fi +if (echo >conf$$.file) 2>/dev/null; then + if ln -s conf$$.file conf$$ 2>/dev/null; then + as_ln_s='ln -s' + # ... but there are two gotchas: + # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. + # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. + # In both cases, we have to default to `cp -p'. + ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || + as_ln_s='cp -p' + elif ln conf$$.file conf$$ 2>/dev/null; then + as_ln_s=ln + else + as_ln_s='cp -p' + fi else - exitcode=1 - echo as_func_ret_success failed. + as_ln_s='cp -p' fi +rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file +rmdir conf$$.dir 2>/dev/null -if as_func_ret_failure; then - exitcode=1 - echo as_func_ret_failure succeeded. +if mkdir -p . 2>/dev/null; then + as_mkdir_p='mkdir -p "$as_dir"' +else + test -d ./-p && rmdir ./-p + as_mkdir_p=false fi -if ( set x; as_func_ret_success y && test x = \"\$1\" ); then - : +if test -x / >/dev/null 2>&1; then + as_test_x='test -x' else - exitcode=1 - echo positional parameters were not saved. + if ls -dL / >/dev/null 2>&1; then + as_ls_L_option=L + else + as_ls_L_option= + fi + as_test_x=' + eval sh -c '\'' + if test -d "$1"; then + test -d "$1/."; + else + case $1 in #( + -*)set "./$1";; + esac; + case `ls -ld'$as_ls_L_option' "$1" 2>/dev/null` in #(( + ???[sx]*):;;*)false;;esac;fi + '\'' sh + ' fi +as_executable_p=$as_test_x -test \$exitcode = 0) || { (exit 1); exit 1; } +# Sed expression to map a string onto a valid CPP name. +as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" -( - as_lineno_1=\$LINENO - as_lineno_2=\$LINENO - test \"x\$as_lineno_1\" != \"x\$as_lineno_2\" && - test \"x\`expr \$as_lineno_1 + 1\`\" = \"x\$as_lineno_2\") || { (exit 1); exit 1; } -") 2> /dev/null; then - : -else - as_candidate_shells= - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - case $as_dir in - /*) - for as_base in sh bash ksh sh5; do - as_candidate_shells="$as_candidate_shells $as_dir/$as_base" - done;; - esac -done -IFS=$as_save_IFS +# Sed expression to map a string onto a valid variable name. +as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" +SHELL=${CONFIG_SHELL-/bin/sh} - for as_shell in $as_candidate_shells $SHELL; do - # Try only shells that exist, to save several forks. - if { test -f "$as_shell" || test -f "$as_shell.exe"; } && - { ("$as_shell") 2> /dev/null <<\_ASEOF -if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then - emulate sh - NULLCMD=: - # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which - # is contrary to our usage. Disable this feature. - alias -g '${1+"$@"}'='"$@"' - setopt NO_GLOB_SUBST -else - case `(set -o) 2>/dev/null` in - *posix*) set -o posix ;; -esac -fi +test -n "$DJDIR" || exec 7<&0 &1 - -: -_ASEOF -}; then - CONFIG_SHELL=$as_shell - as_have_required=yes - if { "$as_shell" 2> /dev/null <<\_ASEOF -if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then - emulate sh - NULLCMD=: - # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which - # is contrary to our usage. Disable this feature. - alias -g '${1+"$@"}'='"$@"' - setopt NO_GLOB_SUBST -else - case `(set -o) 2>/dev/null` in - *posix*) set -o posix ;; -esac - -fi - - -: -(as_func_return () { - (exit $1) -} -as_func_success () { - as_func_return 0 -} -as_func_failure () { - as_func_return 1 -} -as_func_ret_success () { - return 0 -} -as_func_ret_failure () { - return 1 -} - -exitcode=0 -if as_func_success; then - : -else - exitcode=1 - echo as_func_success failed. -fi - -if as_func_failure; then - exitcode=1 - echo as_func_failure succeeded. -fi - -if as_func_ret_success; then - : -else - exitcode=1 - echo as_func_ret_success failed. -fi - -if as_func_ret_failure; then - exitcode=1 - echo as_func_ret_failure succeeded. -fi - -if ( set x; as_func_ret_success y && test x = "$1" ); then - : -else - exitcode=1 - echo positional parameters were not saved. -fi - -test $exitcode = 0) || { (exit 1); exit 1; } - -( - as_lineno_1=$LINENO - as_lineno_2=$LINENO - test "x$as_lineno_1" != "x$as_lineno_2" && - test "x`expr $as_lineno_1 + 1`" = "x$as_lineno_2") || { (exit 1); exit 1; } - -_ASEOF -}; then - break -fi - -fi - - done - - if test "x$CONFIG_SHELL" != x; then - for as_var in BASH_ENV ENV - do ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var - done - export CONFIG_SHELL - exec "$CONFIG_SHELL" "$as_myself" ${1+"$@"} -fi - - - if test $as_have_required = no; then - echo This script requires a shell more modern than all the - echo shells that I found on your system. Please install a - echo modern shell, or manually run the script under such a - echo shell if you do have one. - { (exit 1); exit 1; } -fi - - -fi - -fi - - - -(eval "as_func_return () { - (exit \$1) -} -as_func_success () { - as_func_return 0 -} -as_func_failure () { - as_func_return 1 -} -as_func_ret_success () { - return 0 -} -as_func_ret_failure () { - return 1 -} - -exitcode=0 -if as_func_success; then - : -else - exitcode=1 - echo as_func_success failed. -fi - -if as_func_failure; then - exitcode=1 - echo as_func_failure succeeded. -fi - -if as_func_ret_success; then - : -else - exitcode=1 - echo as_func_ret_success failed. -fi - -if as_func_ret_failure; then - exitcode=1 - echo as_func_ret_failure succeeded. -fi - -if ( set x; as_func_ret_success y && test x = \"\$1\" ); then - : -else - exitcode=1 - echo positional parameters were not saved. -fi - -test \$exitcode = 0") || { - echo No shell found that supports shell functions. - echo Please tell autoconf@gnu.org about your system, - echo including any error possibly output before this - echo message -} - - - - as_lineno_1=$LINENO - as_lineno_2=$LINENO - test "x$as_lineno_1" != "x$as_lineno_2" && - test "x`expr $as_lineno_1 + 1`" = "x$as_lineno_2" || { - - # Create $as_me.lineno as a copy of $as_myself, but with $LINENO - # uniformly replaced by the line number. The first 'sed' inserts a - # line-number line after each line using $LINENO; the second 'sed' - # does the real work. The second script uses 'N' to pair each - # line-number line with the line containing $LINENO, and appends - # trailing '-' during substitution so that $LINENO is not a special - # case at line end. - # (Raja R Harinath suggested sed '=', and Paul Eggert wrote the - # scripts with optimization help from Paolo Bonzini. Blame Lee - # E. McMahon (1931-1989) for sed's syntax. :-) - sed -n ' - p - /[$]LINENO/= - ' <$as_myself | - sed ' - s/[$]LINENO.*/&-/ - t lineno - b - :lineno - N - :loop - s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/ - t loop - s/-\n.*// - ' >$as_me.lineno && - chmod +x "$as_me.lineno" || - { echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2 - { (exit 1); exit 1; }; } - - # Don't try to exec as it changes $[0], causing all sort of problems - # (the dirname of $[0] is not the place where we might find the - # original and so on. Autoconf is especially sensitive to this). - . "./$as_me.lineno" - # Exit status is that of the last command. - exit -} - - -if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then - as_dirname=dirname -else - as_dirname=false -fi - -ECHO_C= ECHO_N= ECHO_T= -case `echo -n x` in --n*) - case `echo 'x\c'` in - *c*) ECHO_T=' ';; # ECHO_T is single tab character. - *) ECHO_C='\c';; - esac;; -*) - ECHO_N='-n';; -esac - -if expr a : '\(a\)' >/dev/null 2>&1 && - test "X`expr 00001 : '.*\(...\)'`" = X001; then - as_expr=expr -else - as_expr=false -fi - -rm -f conf$$ conf$$.exe conf$$.file -if test -d conf$$.dir; then - rm -f conf$$.dir/conf$$.file -else - rm -f conf$$.dir - mkdir conf$$.dir -fi -echo >conf$$.file -if ln -s conf$$.file conf$$ 2>/dev/null; then - as_ln_s='ln -s' - # ... but there are two gotchas: - # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. - # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. - # In both cases, we have to default to `cp -p'. - ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || - as_ln_s='cp -p' -elif ln conf$$.file conf$$ 2>/dev/null; then - as_ln_s=ln -else - as_ln_s='cp -p' -fi -rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file -rmdir conf$$.dir 2>/dev/null - -if mkdir -p . 2>/dev/null; then - as_mkdir_p=: -else - test -d ./-p && rmdir ./-p - as_mkdir_p=false -fi - -if test -x / >/dev/null 2>&1; then - as_test_x='test -x' -else - if ls -dL / >/dev/null 2>&1; then - as_ls_L_option=L - else - as_ls_L_option= - fi - as_test_x=' - eval sh -c '\'' - if test -d "$1"; then - test -d "$1/."; - else - case $1 in - -*)set "./$1";; - esac; - case `ls -ld'$as_ls_L_option' "$1" 2>/dev/null` in - ???[sx]*):;;*)false;;esac;fi - '\'' sh - ' -fi -as_executable_p=$as_test_x - -# Sed expression to map a string onto a valid CPP name. -as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" - -# Sed expression to map a string onto a valid variable name. -as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" - - - - -# Check that we are running under the correct shell. -SHELL=${CONFIG_SHELL-/bin/sh} - -case X$lt_ECHO in -X*--fallback-echo) - # Remove one level of quotation (which was required for Make). - ECHO=`echo "$lt_ECHO" | sed 's,\\\\\$\\$0,'$0','` - ;; -esac - -ECHO=${lt_ECHO-echo} -if test "X$1" = X--no-reexec; then - # Discard the --no-reexec flag, and continue. - shift -elif test "X$1" = X--fallback-echo; then - # Avoid inline document here, it may be left over - : -elif test "X`{ $ECHO '\t'; } 2>/dev/null`" = 'X\t' ; then - # Yippee, $ECHO works! - : -else - # Restart under the correct shell. - exec $SHELL "$0" --no-reexec ${1+"$@"} -fi - -if test "X$1" = X--fallback-echo; then - # used as fallback echo - shift - cat <<_LT_EOF -$* -_LT_EOF - exit 0 -fi - -# The HP-UX ksh and POSIX shell print the target directory to stdout -# if CDPATH is set. -(unset CDPATH) >/dev/null 2>&1 && unset CDPATH - -if test -z "$lt_ECHO"; then - if test "X${echo_test_string+set}" != Xset; then - # find a string as large as possible, as long as the shell can cope with it - for cmd in 'sed 50q "$0"' 'sed 20q "$0"' 'sed 10q "$0"' 'sed 2q "$0"' 'echo test'; do - # expected sizes: less than 2Kb, 1Kb, 512 bytes, 16 bytes, ... - if { echo_test_string=`eval $cmd`; } 2>/dev/null && - { test "X$echo_test_string" = "X$echo_test_string"; } 2>/dev/null - then - break - fi - done - fi - - if test "X`{ $ECHO '\t'; } 2>/dev/null`" = 'X\t' && - echo_testing_string=`{ $ECHO "$echo_test_string"; } 2>/dev/null` && - test "X$echo_testing_string" = "X$echo_test_string"; then - : - else - # The Solaris, AIX, and Digital Unix default echo programs unquote - # backslashes. This makes it impossible to quote backslashes using - # echo "$something" | sed 's/\\/\\\\/g' - # - # So, first we look for a working echo in the user's PATH. - - lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR - for dir in $PATH /usr/ucb; do - IFS="$lt_save_ifs" - if (test -f $dir/echo || test -f $dir/echo$ac_exeext) && - test "X`($dir/echo '\t') 2>/dev/null`" = 'X\t' && - echo_testing_string=`($dir/echo "$echo_test_string") 2>/dev/null` && - test "X$echo_testing_string" = "X$echo_test_string"; then - ECHO="$dir/echo" - break - fi - done - IFS="$lt_save_ifs" - - if test "X$ECHO" = Xecho; then - # We didn't find a better echo, so look for alternatives. - if test "X`{ print -r '\t'; } 2>/dev/null`" = 'X\t' && - echo_testing_string=`{ print -r "$echo_test_string"; } 2>/dev/null` && - test "X$echo_testing_string" = "X$echo_test_string"; then - # This shell has a builtin print -r that does the trick. - ECHO='print -r' - elif { test -f /bin/ksh || test -f /bin/ksh$ac_exeext; } && - test "X$CONFIG_SHELL" != X/bin/ksh; then - # If we have ksh, try running configure again with it. - ORIGINAL_CONFIG_SHELL=${CONFIG_SHELL-/bin/sh} - export ORIGINAL_CONFIG_SHELL - CONFIG_SHELL=/bin/ksh - export CONFIG_SHELL - exec $CONFIG_SHELL "$0" --no-reexec ${1+"$@"} - else - # Try using printf. - ECHO='printf %s\n' - if test "X`{ $ECHO '\t'; } 2>/dev/null`" = 'X\t' && - echo_testing_string=`{ $ECHO "$echo_test_string"; } 2>/dev/null` && - test "X$echo_testing_string" = "X$echo_test_string"; then - # Cool, printf works - : - elif echo_testing_string=`($ORIGINAL_CONFIG_SHELL "$0" --fallback-echo '\t') 2>/dev/null` && - test "X$echo_testing_string" = 'X\t' && - echo_testing_string=`($ORIGINAL_CONFIG_SHELL "$0" --fallback-echo "$echo_test_string") 2>/dev/null` && - test "X$echo_testing_string" = "X$echo_test_string"; then - CONFIG_SHELL=$ORIGINAL_CONFIG_SHELL - export CONFIG_SHELL - SHELL="$CONFIG_SHELL" - export SHELL - ECHO="$CONFIG_SHELL $0 --fallback-echo" - elif echo_testing_string=`($CONFIG_SHELL "$0" --fallback-echo '\t') 2>/dev/null` && - test "X$echo_testing_string" = 'X\t' && - echo_testing_string=`($CONFIG_SHELL "$0" --fallback-echo "$echo_test_string") 2>/dev/null` && - test "X$echo_testing_string" = "X$echo_test_string"; then - ECHO="$CONFIG_SHELL $0 --fallback-echo" - else - # maybe with a smaller string... - prev=: - - for cmd in 'echo test' 'sed 2q "$0"' 'sed 10q "$0"' 'sed 20q "$0"' 'sed 50q "$0"'; do - if { test "X$echo_test_string" = "X`eval $cmd`"; } 2>/dev/null - then - break - fi - prev="$cmd" - done - - if test "$prev" != 'sed 50q "$0"'; then - echo_test_string=`eval $prev` - export echo_test_string - exec ${ORIGINAL_CONFIG_SHELL-${CONFIG_SHELL-/bin/sh}} "$0" ${1+"$@"} - else - # Oops. We lost completely, so just stick with echo. - ECHO=echo - fi - fi - fi - fi - fi -fi - -# Copy echo and quote the copy suitably for passing to libtool from -# the Makefile, instead of quoting the original, which is used later. -lt_ECHO=$ECHO -if test "X$lt_ECHO" = "X$CONFIG_SHELL $0 --fallback-echo"; then - lt_ECHO="$CONFIG_SHELL \\\$\$0 --fallback-echo" -fi - - - - -exec 7<&0 &1 - -# Name of the host. -# hostname on some systems (SVR3.2, Linux) returns a bogus exit status, -# so uname gets run too. -ac_hostname=`(hostname || uname -n) 2>/dev/null | sed 1q` +# Name of the host. +# hostname on some systems (SVR3.2, old GNU/Linux) returns a bogus exit status, +# so uname gets run too. +ac_hostname=`(hostname || uname -n) 2>/dev/null | sed 1q` # # Initializations. @@ -718,14 +566,14 @@ cross_compiling=no subdirs= MFLAGS= MAKEFLAGS= -SHELL=${CONFIG_SHELL-/bin/sh} # Identity of this package. PACKAGE_NAME='Protocol Buffers' PACKAGE_TARNAME='protobuf' -PACKAGE_VERSION='2.3.0' -PACKAGE_STRING='Protocol Buffers 2.3.0' +PACKAGE_VERSION='2.5.0' +PACKAGE_STRING='Protocol Buffers 2.5.0' PACKAGE_BUGREPORT='protobuf@googlegroups.com' +PACKAGE_URL='' ac_unique_file="src/google/protobuf/message.cc" # Factoring default headers for most tests. @@ -764,136 +612,163 @@ ac_includes_default="\ # include #endif" -ac_subst_vars='SHELL -PATH_SEPARATOR -PACKAGE_NAME -PACKAGE_TARNAME -PACKAGE_VERSION -PACKAGE_STRING -PACKAGE_BUGREPORT -exec_prefix -prefix -program_transform_name -bindir -sbindir -libexecdir -datarootdir -datadir -sysconfdir -sharedstatedir -localstatedir -includedir -oldincludedir -docdir -infodir -htmldir -dvidir -pdfdir -psdir -libdir -localedir -mandir -DEFS -ECHO_C -ECHO_N -ECHO_T -LIBS -build_alias -host_alias -target_alias -build -build_cpu -build_vendor -build_os -host -host_cpu -host_vendor -host_os -target -target_cpu -target_vendor -target_os -INSTALL_PROGRAM -INSTALL_SCRIPT -INSTALL_DATA -am__isrc -CYGPATH_W -PACKAGE -VERSION -ACLOCAL -AUTOCONF -AUTOMAKE -AUTOHEADER -MAKEINFO -install_sh -STRIP -INSTALL_STRIP_PROGRAM -mkdir_p -AWK -SET_MAKE -am__leading_dot -AMTAR -am__tar -am__untar -CC -CFLAGS -LDFLAGS -CPPFLAGS -ac_ct_CC -EXEEXT -OBJEXT -DEPDIR -am__include -am__quote -AMDEP_TRUE -AMDEP_FALSE -AMDEPBACKSLASH -CCDEPMODE -am__fastdepCC_TRUE -am__fastdepCC_FALSE -CXX -CXXFLAGS -ac_ct_CXX -CXXDEPMODE -am__fastdepCXX_TRUE -am__fastdepCXX_FALSE -CXXCPP -GREP -EGREP -GCC_TRUE -GCC_FALSE -PROTOBUF_OPT_FLAG -ISAINFO -LIBTOOL -SED -FGREP -LD -DUMPBIN -ac_ct_DUMPBIN -NM -LN_S -AR -RANLIB -lt_ECHO -DSYMUTIL -NMEDIT -LIPO -OTOOL -OTOOL64 -LIBOBJS -POW_LIB -HAVE_ZLIB_TRUE -HAVE_ZLIB_FALSE -PROTOC -USE_EXTERNAL_PROTOC_TRUE -USE_EXTERNAL_PROTOC_FALSE -acx_pthread_config -PTHREAD_CC -PTHREAD_LIBS -PTHREAD_CFLAGS +enable_option_checking=no +ac_subst_vars='am__EXEEXT_FALSE +am__EXEEXT_TRUE +LTLIBOBJS subdirs -LTLIBOBJS' +PTHREAD_CFLAGS +PTHREAD_LIBS +PTHREAD_CC +acx_pthread_config +USE_EXTERNAL_PROTOC_FALSE +USE_EXTERNAL_PROTOC_TRUE +PROTOC +HAVE_ZLIB_FALSE +HAVE_ZLIB_TRUE +POW_LIB +LIBOBJS +OTOOL64 +OTOOL +LIPO +NMEDIT +DSYMUTIL +MANIFEST_TOOL +RANLIB +ac_ct_AR +AR +DLLTOOL +OBJDUMP +LN_S +NM +ac_ct_DUMPBIN +DUMPBIN +LD +FGREP +SED +LIBTOOL +ISAINFO +PROTOBUF_OPT_FLAG +GCC_FALSE +GCC_TRUE +EGREP +GREP +CXXCPP +am__fastdepCXX_FALSE +am__fastdepCXX_TRUE +CXXDEPMODE +ac_ct_CXX +CXXFLAGS +CXX +am__fastdepCC_FALSE +am__fastdepCC_TRUE +CCDEPMODE +am__nodep +AMDEPBACKSLASH +AMDEP_FALSE +AMDEP_TRUE +am__quote +am__include +DEPDIR +OBJEXT +EXEEXT +ac_ct_CC +CPPFLAGS +LDFLAGS +CFLAGS +CC +am__untar +am__tar +AMTAR +am__leading_dot +SET_MAKE +AWK +mkdir_p +MKDIR_P +INSTALL_STRIP_PROGRAM +STRIP +install_sh +MAKEINFO +AUTOHEADER +AUTOMAKE +AUTOCONF +ACLOCAL +VERSION +PACKAGE +CYGPATH_W +am__isrc +INSTALL_DATA +INSTALL_SCRIPT +INSTALL_PROGRAM +target_os +target_vendor +target_cpu +target +host_os +host_vendor +host_cpu +host +build_os +build_vendor +build_cpu +build +MAINT +MAINTAINER_MODE_FALSE +MAINTAINER_MODE_TRUE +target_alias +host_alias +build_alias +LIBS +ECHO_T +ECHO_N +ECHO_C +DEFS +mandir +localedir +libdir +psdir +pdfdir +dvidir +htmldir +infodir +docdir +oldincludedir +includedir +localstatedir +sharedstatedir +sysconfdir +datadir +datarootdir +libexecdir +sbindir +bindir +program_transform_name +prefix +exec_prefix +PACKAGE_URL +PACKAGE_BUGREPORT +PACKAGE_STRING +PACKAGE_VERSION +PACKAGE_TARNAME +PACKAGE_NAME +PATH_SEPARATOR +SHELL' ac_subst_files='' +ac_user_opts=' +enable_option_checking +enable_maintainer_mode +with_zlib +with_protoc +enable_dependency_tracking +enable_64bit_solaris +enable_shared +enable_static +with_pic +enable_fast_install +with_gnu_ld +with_sysroot +enable_libtool_lock +' ac_precious_vars='build_alias host_alias target_alias @@ -911,6 +786,8 @@ ac_subdirs_all='gtest' # Initialize some variables set by options. ac_init_help= ac_init_version=false +ac_unrecognized_opts= +ac_unrecognized_sep= # The variables have the same names as the options, with # dashes changed to underlines. cache_file=/dev/null @@ -966,8 +843,9 @@ do fi case $ac_option in - *=*) ac_optarg=`expr "X$ac_option" : '[^=]*=\(.*\)'` ;; - *) ac_optarg=yes ;; + *=?*) ac_optarg=`expr "X$ac_option" : '[^=]*=\(.*\)'` ;; + *=) ac_optarg= ;; + *) ac_optarg=yes ;; esac # Accept the important Cygnus configure options, so we can diagnose typos. @@ -1009,13 +887,20 @@ do datarootdir=$ac_optarg ;; -disable-* | --disable-*) - ac_feature=`expr "x$ac_option" : 'x-*disable-\(.*\)'` + ac_useropt=`expr "x$ac_option" : 'x-*disable-\(.*\)'` # Reject names that are not valid shell variable names. - expr "x$ac_feature" : ".*[^-._$as_cr_alnum]" >/dev/null && - { echo "$as_me: error: invalid feature name: $ac_feature" >&2 - { (exit 1); exit 1; }; } - ac_feature=`echo $ac_feature | sed 's/[-.]/_/g'` - eval enable_$ac_feature=no ;; + expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && + as_fn_error $? "invalid feature name: $ac_useropt" + ac_useropt_orig=$ac_useropt + ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` + case $ac_user_opts in + *" +"enable_$ac_useropt" +"*) ;; + *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--disable-$ac_useropt_orig" + ac_unrecognized_sep=', ';; + esac + eval enable_$ac_useropt=no ;; -docdir | --docdir | --docdi | --doc | --do) ac_prev=docdir ;; @@ -1028,13 +913,20 @@ do dvidir=$ac_optarg ;; -enable-* | --enable-*) - ac_feature=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'` + ac_useropt=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'` # Reject names that are not valid shell variable names. - expr "x$ac_feature" : ".*[^-._$as_cr_alnum]" >/dev/null && - { echo "$as_me: error: invalid feature name: $ac_feature" >&2 - { (exit 1); exit 1; }; } - ac_feature=`echo $ac_feature | sed 's/[-.]/_/g'` - eval enable_$ac_feature=\$ac_optarg ;; + expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && + as_fn_error $? "invalid feature name: $ac_useropt" + ac_useropt_orig=$ac_useropt + ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` + case $ac_user_opts in + *" +"enable_$ac_useropt" +"*) ;; + *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--enable-$ac_useropt_orig" + ac_unrecognized_sep=', ';; + esac + eval enable_$ac_useropt=\$ac_optarg ;; -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \ | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \ @@ -1225,22 +1117,36 @@ do ac_init_version=: ;; -with-* | --with-*) - ac_package=`expr "x$ac_option" : 'x-*with-\([^=]*\)'` + ac_useropt=`expr "x$ac_option" : 'x-*with-\([^=]*\)'` # Reject names that are not valid shell variable names. - expr "x$ac_package" : ".*[^-._$as_cr_alnum]" >/dev/null && - { echo "$as_me: error: invalid package name: $ac_package" >&2 - { (exit 1); exit 1; }; } - ac_package=`echo $ac_package | sed 's/[-.]/_/g'` - eval with_$ac_package=\$ac_optarg ;; + expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && + as_fn_error $? "invalid package name: $ac_useropt" + ac_useropt_orig=$ac_useropt + ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` + case $ac_user_opts in + *" +"with_$ac_useropt" +"*) ;; + *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--with-$ac_useropt_orig" + ac_unrecognized_sep=', ';; + esac + eval with_$ac_useropt=\$ac_optarg ;; -without-* | --without-*) - ac_package=`expr "x$ac_option" : 'x-*without-\(.*\)'` + ac_useropt=`expr "x$ac_option" : 'x-*without-\(.*\)'` # Reject names that are not valid shell variable names. - expr "x$ac_package" : ".*[^-._$as_cr_alnum]" >/dev/null && - { echo "$as_me: error: invalid package name: $ac_package" >&2 - { (exit 1); exit 1; }; } - ac_package=`echo $ac_package | sed 's/[-.]/_/g'` - eval with_$ac_package=no ;; + expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && + as_fn_error $? "invalid package name: $ac_useropt" + ac_useropt_orig=$ac_useropt + ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` + case $ac_user_opts in + *" +"with_$ac_useropt" +"*) ;; + *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--without-$ac_useropt_orig" + ac_unrecognized_sep=', ';; + esac + eval with_$ac_useropt=no ;; --x) # Obsolete; use --with-x. @@ -1260,26 +1166,26 @@ do | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*) x_libraries=$ac_optarg ;; - -*) { echo "$as_me: error: unrecognized option: $ac_option -Try \`$0 --help' for more information." >&2 - { (exit 1); exit 1; }; } + -*) as_fn_error $? "unrecognized option: \`$ac_option' +Try \`$0 --help' for more information" ;; *=*) ac_envvar=`expr "x$ac_option" : 'x\([^=]*\)='` # Reject names that are not valid shell variable names. - expr "x$ac_envvar" : ".*[^_$as_cr_alnum]" >/dev/null && - { echo "$as_me: error: invalid variable name: $ac_envvar" >&2 - { (exit 1); exit 1; }; } + case $ac_envvar in #( + '' | [0-9]* | *[!_$as_cr_alnum]* ) + as_fn_error $? "invalid variable name: \`$ac_envvar'" ;; + esac eval $ac_envvar=\$ac_optarg export $ac_envvar ;; *) # FIXME: should be removed in autoconf 3.0. - echo "$as_me: WARNING: you should use --build, --host, --target" >&2 + $as_echo "$as_me: WARNING: you should use --build, --host, --target" >&2 expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null && - echo "$as_me: WARNING: invalid host type: $ac_option" >&2 - : ${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option} + $as_echo "$as_me: WARNING: invalid host type: $ac_option" >&2 + : "${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option}" ;; esac @@ -1287,23 +1193,36 @@ done if test -n "$ac_prev"; then ac_option=--`echo $ac_prev | sed 's/_/-/g'` - { echo "$as_me: error: missing argument to $ac_option" >&2 - { (exit 1); exit 1; }; } + as_fn_error $? "missing argument to $ac_option" fi -# Be sure to have absolute directory names. +if test -n "$ac_unrecognized_opts"; then + case $enable_option_checking in + no) ;; + fatal) as_fn_error $? "unrecognized options: $ac_unrecognized_opts" ;; + *) $as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2 ;; + esac +fi + +# Check all directory arguments for consistency. for ac_var in exec_prefix prefix bindir sbindir libexecdir datarootdir \ datadir sysconfdir sharedstatedir localstatedir includedir \ oldincludedir docdir infodir htmldir dvidir pdfdir psdir \ libdir localedir mandir do eval ac_val=\$$ac_var + # Remove trailing slashes. + case $ac_val in + */ ) + ac_val=`expr "X$ac_val" : 'X\(.*[^/]\)' \| "X$ac_val" : 'X\(.*\)'` + eval $ac_var=\$ac_val;; + esac + # Be sure to have absolute directory names. case $ac_val in [\\/$]* | ?:[\\/]* ) continue;; NONE | '' ) case $ac_var in *prefix ) continue;; esac;; esac - { echo "$as_me: error: expected an absolute directory name for --$ac_var: $ac_val" >&2 - { (exit 1); exit 1; }; } + as_fn_error $? "expected an absolute directory name for --$ac_var: $ac_val" done # There might be people who depend on the old broken behavior: `$host' @@ -1317,8 +1236,8 @@ target=$target_alias if test "x$host_alias" != x; then if test "x$build_alias" = x; then cross_compiling=maybe - echo "$as_me: WARNING: If you wanted to set the --build type, don't use --host. - If a cross compiler is detected then cross compile mode will be used." >&2 + $as_echo "$as_me: WARNING: if you wanted to set the --build type, don't use --host. + If a cross compiler is detected then cross compile mode will be used" >&2 elif test "x$build_alias" != "x$host_alias"; then cross_compiling=yes fi @@ -1333,23 +1252,21 @@ test "$silent" = yes && exec 6>/dev/null ac_pwd=`pwd` && test -n "$ac_pwd" && ac_ls_di=`ls -di .` && ac_pwd_ls_di=`cd "$ac_pwd" && ls -di .` || - { echo "$as_me: error: Working directory cannot be determined" >&2 - { (exit 1); exit 1; }; } + as_fn_error $? "working directory cannot be determined" test "X$ac_ls_di" = "X$ac_pwd_ls_di" || - { echo "$as_me: error: pwd does not report name of working directory" >&2 - { (exit 1); exit 1; }; } + as_fn_error $? "pwd does not report name of working directory" # Find the source files, if location was not specified. if test -z "$srcdir"; then ac_srcdir_defaulted=yes # Try the directory containing this script, then the parent directory. - ac_confdir=`$as_dirname -- "$0" || -$as_expr X"$0" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ - X"$0" : 'X\(//\)[^/]' \| \ - X"$0" : 'X\(//\)$' \| \ - X"$0" : 'X\(/\)' \| . 2>/dev/null || -echo X"$0" | + ac_confdir=`$as_dirname -- "$as_myself" || +$as_expr X"$as_myself" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$as_myself" : 'X\(//\)[^/]' \| \ + X"$as_myself" : 'X\(//\)$' \| \ + X"$as_myself" : 'X\(/\)' \| . 2>/dev/null || +$as_echo X"$as_myself" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q @@ -1376,13 +1293,11 @@ else fi if test ! -r "$srcdir/$ac_unique_file"; then test "$ac_srcdir_defaulted" = yes && srcdir="$ac_confdir or .." - { echo "$as_me: error: cannot find sources ($ac_unique_file) in $srcdir" >&2 - { (exit 1); exit 1; }; } + as_fn_error $? "cannot find sources ($ac_unique_file) in $srcdir" fi ac_msg="sources are in $srcdir, but \`cd $srcdir' does not work" ac_abs_confdir=`( - cd "$srcdir" && test -r "./$ac_unique_file" || { echo "$as_me: error: $ac_msg" >&2 - { (exit 1); exit 1; }; } + cd "$srcdir" && test -r "./$ac_unique_file" || as_fn_error $? "$ac_msg" pwd)` # When building in place, set srcdir=. if test "$ac_abs_confdir" = "$ac_pwd"; then @@ -1408,7 +1323,7 @@ if test "$ac_init_help" = "long"; then # Omit some internal or obsolete options to make the list less imposing. # This message is too long to be a string in the A/UX 3.1 sh. cat <<_ACEOF -\`configure' configures Protocol Buffers 2.3.0 to adapt to many kinds of systems. +\`configure' configures Protocol Buffers 2.5.0 to adapt to many kinds of systems. Usage: $0 [OPTION]... [VAR=VALUE]... @@ -1422,7 +1337,7 @@ Configuration: --help=short display options specific to this package --help=recursive display the short help of all the included packages -V, --version display version information and exit - -q, --quiet, --silent do not print \`checking...' messages + -q, --quiet, --silent do not print \`checking ...' messages --cache-file=FILE cache test results in FILE [disabled] -C, --config-cache alias for \`--cache-file=config.cache' -n, --no-create do not create output files @@ -1430,9 +1345,9 @@ Configuration: Installation directories: --prefix=PREFIX install architecture-independent files in PREFIX - [$ac_default_prefix] + [$ac_default_prefix] --exec-prefix=EPREFIX install architecture-dependent files in EPREFIX - [PREFIX] + [PREFIX] By default, \`make install' will install all the files in \`$ac_default_prefix/bin', \`$ac_default_prefix/lib' etc. You can specify @@ -1442,25 +1357,25 @@ for instance \`--prefix=\$HOME'. For better control, use the options below. Fine tuning of the installation directories: - --bindir=DIR user executables [EPREFIX/bin] - --sbindir=DIR system admin executables [EPREFIX/sbin] - --libexecdir=DIR program executables [EPREFIX/libexec] - --sysconfdir=DIR read-only single-machine data [PREFIX/etc] - --sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com] - --localstatedir=DIR modifiable single-machine data [PREFIX/var] - --libdir=DIR object code libraries [EPREFIX/lib] - --includedir=DIR C header files [PREFIX/include] - --oldincludedir=DIR C header files for non-gcc [/usr/include] - --datarootdir=DIR read-only arch.-independent data root [PREFIX/share] - --datadir=DIR read-only architecture-independent data [DATAROOTDIR] - --infodir=DIR info documentation [DATAROOTDIR/info] - --localedir=DIR locale-dependent data [DATAROOTDIR/locale] - --mandir=DIR man documentation [DATAROOTDIR/man] - --docdir=DIR documentation root [DATAROOTDIR/doc/protobuf] - --htmldir=DIR html documentation [DOCDIR] - --dvidir=DIR dvi documentation [DOCDIR] - --pdfdir=DIR pdf documentation [DOCDIR] - --psdir=DIR ps documentation [DOCDIR] + --bindir=DIR user executables [EPREFIX/bin] + --sbindir=DIR system admin executables [EPREFIX/sbin] + --libexecdir=DIR program executables [EPREFIX/libexec] + --sysconfdir=DIR read-only single-machine data [PREFIX/etc] + --sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com] + --localstatedir=DIR modifiable single-machine data [PREFIX/var] + --libdir=DIR object code libraries [EPREFIX/lib] + --includedir=DIR C header files [PREFIX/include] + --oldincludedir=DIR C header files for non-gcc [/usr/include] + --datarootdir=DIR read-only arch.-independent data root [PREFIX/share] + --datadir=DIR read-only architecture-independent data [DATAROOTDIR] + --infodir=DIR info documentation [DATAROOTDIR/info] + --localedir=DIR locale-dependent data [DATAROOTDIR/locale] + --mandir=DIR man documentation [DATAROOTDIR/man] + --docdir=DIR documentation root [DATAROOTDIR/doc/protobuf] + --htmldir=DIR html documentation [DOCDIR] + --dvidir=DIR dvi documentation [DOCDIR] + --pdfdir=DIR pdf documentation [DOCDIR] + --psdir=DIR ps documentation [DOCDIR] _ACEOF cat <<\_ACEOF @@ -1479,13 +1394,16 @@ fi if test -n "$ac_init_help"; then case $ac_init_help in - short | recursive ) echo "Configuration of Protocol Buffers 2.3.0:";; + short | recursive ) echo "Configuration of Protocol Buffers 2.5.0:";; esac cat <<\_ACEOF Optional Features: + --disable-option-checking ignore unrecognized --enable/--with options --disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no) --enable-FEATURE[=ARG] include FEATURE [ARG=yes] + --disable-maintainer-mode disable make rules and dependencies not useful + (and sometimes confusing) to the casual installer --disable-dependency-tracking speeds up one-time build --enable-dependency-tracking do not reject slow dependency extractors --disable-64bit-solaris Build 64 bit binary on Solaris [default=on] @@ -1503,9 +1421,11 @@ Optional Packages: --with-protoc=COMMAND use the given protoc command instead of building a new one when building tests (useful for cross-compiling) - --with-pic try to use only PIC/non-PIC objects [default=use + --with-pic[=PKGS] try to use only PIC/non-PIC objects [default=use both] --with-gnu-ld assume the C compiler uses GNU ld [default=no] + --with-sysroot=DIR Search for dependent libraries within DIR + (or the compiler's sysroot if not specified). Some influential environment variables: CC C compiler command @@ -1513,7 +1433,7 @@ Some influential environment variables: LDFLAGS linker flags, e.g. -L if you have libraries in a nonstandard directory LIBS libraries to pass to the linker, e.g. -l - CPPFLAGS C/C++/Objective C preprocessor flags, e.g. -I if + CPPFLAGS (Objective) C/C++ preprocessor flags, e.g. -I if you have headers in a nonstandard directory CXX C++ compiler command CXXFLAGS C++ compiler flags @@ -1530,15 +1450,17 @@ fi if test "$ac_init_help" = "recursive"; then # If there are subdirs, report their specific --help. for ac_dir in : $ac_subdirs_all; do test "x$ac_dir" = x: && continue - test -d "$ac_dir" || continue + test -d "$ac_dir" || + { cd "$srcdir" && ac_pwd=`pwd` && srcdir=. && test -d "$ac_dir"; } || + continue ac_builddir=. case "$ac_dir" in .) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; *) - ac_dir_suffix=/`echo "$ac_dir" | sed 's,^\.[\\/],,'` + ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'` # A ".." for each directory in $ac_dir_suffix. - ac_top_builddir_sub=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,/..,g;s,/,,'` + ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` case $ac_top_builddir_sub in "") ac_top_builddir_sub=. ac_top_build_prefix= ;; *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; @@ -1574,7 +1496,7 @@ ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix echo && $SHELL "$ac_srcdir/configure" --help=recursive else - echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2 + $as_echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2 fi || ac_status=$? cd "$ac_pwd" || { ac_status=$?; break; } done @@ -1583,33 +1505,616 @@ fi test -n "$ac_init_help" && exit $ac_status if $ac_init_version; then cat <<\_ACEOF -Protocol Buffers configure 2.3.0 -generated by GNU Autoconf 2.61 +Protocol Buffers configure 2.5.0 +generated by GNU Autoconf 2.68 -Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001, -2002, 2003, 2004, 2005, 2006 Free Software Foundation, Inc. +Copyright (C) 2010 Free Software Foundation, Inc. This configure script is free software; the Free Software Foundation gives unlimited permission to copy, distribute and modify it. _ACEOF exit fi -cat >config.log <<_ACEOF -This file contains any messages produced by compilers while -running configure, to aid debugging if configure makes a mistake. - -It was created by Protocol Buffers $as_me 2.3.0, which was -generated by GNU Autoconf 2.61. Invocation command line was - $ $0 $@ +## ------------------------ ## +## Autoconf initialization. ## +## ------------------------ ## -_ACEOF -exec 5>>config.log +# ac_fn_c_try_compile LINENO +# -------------------------- +# Try to compile conftest.$ac_ext, and return whether this succeeded. +ac_fn_c_try_compile () { -cat <<_ASUNAME -## --------- ## -## Platform. ## -## --------- ## - + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + rm -f conftest.$ac_objext + if { { ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_compile") 2>conftest.err + ac_status=$? + if test -s conftest.err; then + grep -v '^ *+' conftest.err >conftest.er1 + cat conftest.er1 >&5 + mv -f conftest.er1 conftest.err + fi + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then : + ac_retval=0 +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_retval=1 +fi + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + as_fn_set_status $ac_retval + +} # ac_fn_c_try_compile + +# ac_fn_cxx_try_compile LINENO +# ---------------------------- +# Try to compile conftest.$ac_ext, and return whether this succeeded. +ac_fn_cxx_try_compile () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + rm -f conftest.$ac_objext + if { { ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_compile") 2>conftest.err + ac_status=$? + if test -s conftest.err; then + grep -v '^ *+' conftest.err >conftest.er1 + cat conftest.er1 >&5 + mv -f conftest.er1 conftest.err + fi + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } && { + test -z "$ac_cxx_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then : + ac_retval=0 +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_retval=1 +fi + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + as_fn_set_status $ac_retval + +} # ac_fn_cxx_try_compile + +# ac_fn_cxx_try_cpp LINENO +# ------------------------ +# Try to preprocess conftest.$ac_ext, and return whether this succeeded. +ac_fn_cxx_try_cpp () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + if { { ac_try="$ac_cpp conftest.$ac_ext" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_cpp conftest.$ac_ext") 2>conftest.err + ac_status=$? + if test -s conftest.err; then + grep -v '^ *+' conftest.err >conftest.er1 + cat conftest.er1 >&5 + mv -f conftest.er1 conftest.err + fi + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } > conftest.i && { + test -z "$ac_cxx_preproc_warn_flag$ac_cxx_werror_flag" || + test ! -s conftest.err + }; then : + ac_retval=0 +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_retval=1 +fi + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + as_fn_set_status $ac_retval + +} # ac_fn_cxx_try_cpp + +# ac_fn_cxx_check_header_mongrel LINENO HEADER VAR INCLUDES +# --------------------------------------------------------- +# Tests whether HEADER exists, giving a warning if it cannot be compiled using +# the include files in INCLUDES and setting the cache variable VAR +# accordingly. +ac_fn_cxx_check_header_mongrel () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + if eval \${$3+:} false; then : + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 +$as_echo_n "checking for $2... " >&6; } +if eval \${$3+:} false; then : + $as_echo_n "(cached) " >&6 +fi +eval ac_res=\$$3 + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +$as_echo "$ac_res" >&6; } +else + # Is the header compilable? +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking $2 usability" >&5 +$as_echo_n "checking $2 usability... " >&6; } +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$4 +#include <$2> +_ACEOF +if ac_fn_cxx_try_compile "$LINENO"; then : + ac_header_compiler=yes +else + ac_header_compiler=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_compiler" >&5 +$as_echo "$ac_header_compiler" >&6; } + +# Is the header present? +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking $2 presence" >&5 +$as_echo_n "checking $2 presence... " >&6; } +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include <$2> +_ACEOF +if ac_fn_cxx_try_cpp "$LINENO"; then : + ac_header_preproc=yes +else + ac_header_preproc=no +fi +rm -f conftest.err conftest.i conftest.$ac_ext +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_preproc" >&5 +$as_echo "$ac_header_preproc" >&6; } + +# So? What about this header? +case $ac_header_compiler:$ac_header_preproc:$ac_cxx_preproc_warn_flag in #(( + yes:no: ) + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: accepted by the compiler, rejected by the preprocessor!" >&5 +$as_echo "$as_me: WARNING: $2: accepted by the compiler, rejected by the preprocessor!" >&2;} + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5 +$as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;} + ;; + no:yes:* ) + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: present but cannot be compiled" >&5 +$as_echo "$as_me: WARNING: $2: present but cannot be compiled" >&2;} + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: check for missing prerequisite headers?" >&5 +$as_echo "$as_me: WARNING: $2: check for missing prerequisite headers?" >&2;} + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: see the Autoconf documentation" >&5 +$as_echo "$as_me: WARNING: $2: see the Autoconf documentation" >&2;} + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: section \"Present But Cannot Be Compiled\"" >&5 +$as_echo "$as_me: WARNING: $2: section \"Present But Cannot Be Compiled\"" >&2;} + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5 +$as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;} +( $as_echo "## ---------------------------------------- ## +## Report this to protobuf@googlegroups.com ## +## ---------------------------------------- ##" + ) | sed "s/^/$as_me: WARNING: /" >&2 + ;; +esac + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 +$as_echo_n "checking for $2... " >&6; } +if eval \${$3+:} false; then : + $as_echo_n "(cached) " >&6 +else + eval "$3=\$ac_header_compiler" +fi +eval ac_res=\$$3 + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +$as_echo "$ac_res" >&6; } +fi + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + +} # ac_fn_cxx_check_header_mongrel + +# ac_fn_cxx_try_run LINENO +# ------------------------ +# Try to link conftest.$ac_ext, and return whether this succeeded. Assumes +# that executables *can* be run. +ac_fn_cxx_try_run () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + if { { ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_link") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } && { ac_try='./conftest$ac_exeext' + { { case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; }; then : + ac_retval=0 +else + $as_echo "$as_me: program exited with status $ac_status" >&5 + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_retval=$ac_status +fi + rm -rf conftest.dSYM conftest_ipa8_conftest.oo + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + as_fn_set_status $ac_retval + +} # ac_fn_cxx_try_run + +# ac_fn_cxx_check_header_compile LINENO HEADER VAR INCLUDES +# --------------------------------------------------------- +# Tests whether HEADER exists and can be compiled using the include files in +# INCLUDES, setting the cache variable VAR accordingly. +ac_fn_cxx_check_header_compile () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 +$as_echo_n "checking for $2... " >&6; } +if eval \${$3+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$4 +#include <$2> +_ACEOF +if ac_fn_cxx_try_compile "$LINENO"; then : + eval "$3=yes" +else + eval "$3=no" +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +eval ac_res=\$$3 + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +$as_echo "$ac_res" >&6; } + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + +} # ac_fn_cxx_check_header_compile + +# ac_fn_cxx_check_decl LINENO SYMBOL VAR INCLUDES +# ----------------------------------------------- +# Tests whether SYMBOL is declared in INCLUDES, setting cache variable VAR +# accordingly. +ac_fn_cxx_check_decl () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + as_decl_name=`echo $2|sed 's/ *(.*//'` + as_decl_use=`echo $2|sed -e 's/(/((/' -e 's/)/) 0&/' -e 's/,/) 0& (/g'` + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $as_decl_name is declared" >&5 +$as_echo_n "checking whether $as_decl_name is declared... " >&6; } +if eval \${$3+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$4 +int +main () +{ +#ifndef $as_decl_name +#ifdef __cplusplus + (void) $as_decl_use; +#else + (void) $as_decl_name; +#endif +#endif + + ; + return 0; +} +_ACEOF +if ac_fn_cxx_try_compile "$LINENO"; then : + eval "$3=yes" +else + eval "$3=no" +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +eval ac_res=\$$3 + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +$as_echo "$ac_res" >&6; } + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + +} # ac_fn_cxx_check_decl + +# ac_fn_c_try_link LINENO +# ----------------------- +# Try to link conftest.$ac_ext, and return whether this succeeded. +ac_fn_c_try_link () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + rm -f conftest.$ac_objext conftest$ac_exeext + if { { ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_link") 2>conftest.err + ac_status=$? + if test -s conftest.err; then + grep -v '^ *+' conftest.err >conftest.er1 + cat conftest.er1 >&5 + mv -f conftest.er1 conftest.err + fi + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && { + test "$cross_compiling" = yes || + $as_test_x conftest$ac_exeext + }; then : + ac_retval=0 +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_retval=1 +fi + # Delete the IPA/IPO (Inter Procedural Analysis/Optimization) information + # created by the PGI compiler (conftest_ipa8_conftest.oo), as it would + # interfere with the next link command; also delete a directory that is + # left behind by Apple's compiler. We do this before executing the actions. + rm -rf conftest.dSYM conftest_ipa8_conftest.oo + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + as_fn_set_status $ac_retval + +} # ac_fn_c_try_link + +# ac_fn_c_check_header_compile LINENO HEADER VAR INCLUDES +# ------------------------------------------------------- +# Tests whether HEADER exists and can be compiled using the include files in +# INCLUDES, setting the cache variable VAR accordingly. +ac_fn_c_check_header_compile () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 +$as_echo_n "checking for $2... " >&6; } +if eval \${$3+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$4 +#include <$2> +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + eval "$3=yes" +else + eval "$3=no" +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +eval ac_res=\$$3 + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +$as_echo "$ac_res" >&6; } + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + +} # ac_fn_c_check_header_compile + +# ac_fn_c_check_func LINENO FUNC VAR +# ---------------------------------- +# Tests whether FUNC exists, setting the cache variable VAR accordingly +ac_fn_c_check_func () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 +$as_echo_n "checking for $2... " >&6; } +if eval \${$3+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +/* Define $2 to an innocuous variant, in case declares $2. + For example, HP-UX 11i declares gettimeofday. */ +#define $2 innocuous_$2 + +/* System header to define __stub macros and hopefully few prototypes, + which can conflict with char $2 (); below. + Prefer to if __STDC__ is defined, since + exists even on freestanding compilers. */ + +#ifdef __STDC__ +# include +#else +# include +#endif + +#undef $2 + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char $2 (); +/* The GNU C library defines this for functions which it implements + to always fail with ENOSYS. Some functions are actually named + something starting with __ and the normal name is an alias. */ +#if defined __stub_$2 || defined __stub___$2 +choke me +#endif + +int +main () +{ +return $2 (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + eval "$3=yes" +else + eval "$3=no" +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi +eval ac_res=\$$3 + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +$as_echo "$ac_res" >&6; } + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + +} # ac_fn_c_check_func + +# ac_fn_cxx_try_link LINENO +# ------------------------- +# Try to link conftest.$ac_ext, and return whether this succeeded. +ac_fn_cxx_try_link () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + rm -f conftest.$ac_objext conftest$ac_exeext + if { { ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_link") 2>conftest.err + ac_status=$? + if test -s conftest.err; then + grep -v '^ *+' conftest.err >conftest.er1 + cat conftest.er1 >&5 + mv -f conftest.er1 conftest.err + fi + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } && { + test -z "$ac_cxx_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && { + test "$cross_compiling" = yes || + $as_test_x conftest$ac_exeext + }; then : + ac_retval=0 +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_retval=1 +fi + # Delete the IPA/IPO (Inter Procedural Analysis/Optimization) information + # created by the PGI compiler (conftest_ipa8_conftest.oo), as it would + # interfere with the next link command; also delete a directory that is + # left behind by Apple's compiler. We do this before executing the actions. + rm -rf conftest.dSYM conftest_ipa8_conftest.oo + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + as_fn_set_status $ac_retval + +} # ac_fn_cxx_try_link + +# ac_fn_cxx_check_func LINENO FUNC VAR +# ------------------------------------ +# Tests whether FUNC exists, setting the cache variable VAR accordingly +ac_fn_cxx_check_func () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 +$as_echo_n "checking for $2... " >&6; } +if eval \${$3+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +/* Define $2 to an innocuous variant, in case declares $2. + For example, HP-UX 11i declares gettimeofday. */ +#define $2 innocuous_$2 + +/* System header to define __stub macros and hopefully few prototypes, + which can conflict with char $2 (); below. + Prefer to if __STDC__ is defined, since + exists even on freestanding compilers. */ + +#ifdef __STDC__ +# include +#else +# include +#endif + +#undef $2 + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char $2 (); +/* The GNU C library defines this for functions which it implements + to always fail with ENOSYS. Some functions are actually named + something starting with __ and the normal name is an alias. */ +#if defined __stub_$2 || defined __stub___$2 +choke me +#endif + +int +main () +{ +return $2 (); + ; + return 0; +} +_ACEOF +if ac_fn_cxx_try_link "$LINENO"; then : + eval "$3=yes" +else + eval "$3=no" +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi +eval ac_res=\$$3 + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +$as_echo "$ac_res" >&6; } + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + +} # ac_fn_cxx_check_func +cat >config.log <<_ACEOF +This file contains any messages produced by compilers while +running configure, to aid debugging if configure makes a mistake. + +It was created by Protocol Buffers $as_me 2.5.0, which was +generated by GNU Autoconf 2.68. Invocation command line was + + $ $0 $@ + +_ACEOF +exec 5>>config.log +{ +cat <<_ASUNAME +## --------- ## +## Platform. ## +## --------- ## + hostname = `(hostname || uname -n) 2>/dev/null | sed 1q` uname -m = `(uname -m) 2>/dev/null || echo unknown` uname -r = `(uname -r) 2>/dev/null || echo unknown` @@ -1634,8 +2139,8 @@ for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. - echo "PATH: $as_dir" -done + $as_echo "PATH: $as_dir" + done IFS=$as_save_IFS } >&5 @@ -1669,12 +2174,12 @@ do | -silent | --silent | --silen | --sile | --sil) continue ;; *\'*) - ac_arg=`echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;; + ac_arg=`$as_echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;; esac case $ac_pass in - 1) ac_configure_args0="$ac_configure_args0 '$ac_arg'" ;; + 1) as_fn_append ac_configure_args0 " '$ac_arg'" ;; 2) - ac_configure_args1="$ac_configure_args1 '$ac_arg'" + as_fn_append ac_configure_args1 " '$ac_arg'" if test $ac_must_keep_next = true; then ac_must_keep_next=false # Got value, back to normal. else @@ -1690,13 +2195,13 @@ do -* ) ac_must_keep_next=true ;; esac fi - ac_configure_args="$ac_configure_args '$ac_arg'" + as_fn_append ac_configure_args " '$ac_arg'" ;; esac done done -$as_unset ac_configure_args0 || test "${ac_configure_args0+set}" != set || { ac_configure_args0=; export ac_configure_args0; } -$as_unset ac_configure_args1 || test "${ac_configure_args1+set}" != set || { ac_configure_args1=; export ac_configure_args1; } +{ ac_configure_args0=; unset ac_configure_args0;} +{ ac_configure_args1=; unset ac_configure_args1;} # When interrupted or exit'd, cleanup temporary files, and complete # config.log. We remove comments because anyway the quotes in there @@ -1708,11 +2213,9 @@ trap 'exit_status=$? { echo - cat <<\_ASBOX -## ---------------- ## + $as_echo "## ---------------- ## ## Cache variables. ## -## ---------------- ## -_ASBOX +## ---------------- ##" echo # The following way of writing the cache mishandles newlines in values, ( @@ -1721,12 +2224,13 @@ _ASBOX case $ac_val in #( *${as_nl}*) case $ac_var in #( - *_cv_*) { echo "$as_me:$LINENO: WARNING: Cache variable $ac_var contains a newline." >&5 -echo "$as_me: WARNING: Cache variable $ac_var contains a newline." >&2;} ;; + *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5 +$as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; esac case $ac_var in #( _ | IFS | as_nl) ;; #( - *) $as_unset $ac_var ;; + BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #( + *) { eval $ac_var=; unset $ac_var;} ;; esac ;; esac done @@ -1745,128 +2249,136 @@ echo "$as_me: WARNING: Cache variable $ac_var contains a newline." >&2;} ;; ) echo - cat <<\_ASBOX -## ----------------- ## + $as_echo "## ----------------- ## ## Output variables. ## -## ----------------- ## -_ASBOX +## ----------------- ##" echo for ac_var in $ac_subst_vars do eval ac_val=\$$ac_var case $ac_val in - *\'\''*) ac_val=`echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; + *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; esac - echo "$ac_var='\''$ac_val'\''" + $as_echo "$ac_var='\''$ac_val'\''" done | sort echo if test -n "$ac_subst_files"; then - cat <<\_ASBOX -## ------------------- ## + $as_echo "## ------------------- ## ## File substitutions. ## -## ------------------- ## -_ASBOX +## ------------------- ##" echo for ac_var in $ac_subst_files do eval ac_val=\$$ac_var case $ac_val in - *\'\''*) ac_val=`echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; + *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; esac - echo "$ac_var='\''$ac_val'\''" + $as_echo "$ac_var='\''$ac_val'\''" done | sort echo fi if test -s confdefs.h; then - cat <<\_ASBOX -## ----------- ## + $as_echo "## ----------- ## ## confdefs.h. ## -## ----------- ## -_ASBOX +## ----------- ##" echo cat confdefs.h echo fi test "$ac_signal" != 0 && - echo "$as_me: caught signal $ac_signal" - echo "$as_me: exit $exit_status" + $as_echo "$as_me: caught signal $ac_signal" + $as_echo "$as_me: exit $exit_status" } >&5 rm -f core *.core core.conftest.* && rm -f -r conftest* confdefs* conf$$* $ac_clean_files && exit $exit_status ' 0 for ac_signal in 1 2 13 15; do - trap 'ac_signal='$ac_signal'; { (exit 1); exit 1; }' $ac_signal + trap 'ac_signal='$ac_signal'; as_fn_exit 1' $ac_signal done ac_signal=0 # confdefs.h avoids OS command line length limits that DEFS can exceed. rm -f -r conftest* confdefs.h +$as_echo "/* confdefs.h */" > confdefs.h + # Predefined preprocessor variables. cat >>confdefs.h <<_ACEOF #define PACKAGE_NAME "$PACKAGE_NAME" _ACEOF - cat >>confdefs.h <<_ACEOF #define PACKAGE_TARNAME "$PACKAGE_TARNAME" _ACEOF - cat >>confdefs.h <<_ACEOF #define PACKAGE_VERSION "$PACKAGE_VERSION" _ACEOF - cat >>confdefs.h <<_ACEOF #define PACKAGE_STRING "$PACKAGE_STRING" _ACEOF - cat >>confdefs.h <<_ACEOF #define PACKAGE_BUGREPORT "$PACKAGE_BUGREPORT" _ACEOF +cat >>confdefs.h <<_ACEOF +#define PACKAGE_URL "$PACKAGE_URL" +_ACEOF + # Let the site file select an alternate cache file if it wants to. -# Prefer explicitly selected file to automatically selected ones. +# Prefer an explicitly selected file to automatically selected ones. +ac_site_file1=NONE +ac_site_file2=NONE if test -n "$CONFIG_SITE"; then - set x "$CONFIG_SITE" + # We do not want a PATH search for config.site. + case $CONFIG_SITE in #(( + -*) ac_site_file1=./$CONFIG_SITE;; + */*) ac_site_file1=$CONFIG_SITE;; + *) ac_site_file1=./$CONFIG_SITE;; + esac elif test "x$prefix" != xNONE; then - set x "$prefix/share/config.site" "$prefix/etc/config.site" + ac_site_file1=$prefix/share/config.site + ac_site_file2=$prefix/etc/config.site else - set x "$ac_default_prefix/share/config.site" \ - "$ac_default_prefix/etc/config.site" + ac_site_file1=$ac_default_prefix/share/config.site + ac_site_file2=$ac_default_prefix/etc/config.site fi -shift -for ac_site_file +for ac_site_file in "$ac_site_file1" "$ac_site_file2" do - if test -r "$ac_site_file"; then - { echo "$as_me:$LINENO: loading site script $ac_site_file" >&5 -echo "$as_me: loading site script $ac_site_file" >&6;} + test "x$ac_site_file" = xNONE && continue + if test /dev/null != "$ac_site_file" && test -r "$ac_site_file"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: loading site script $ac_site_file" >&5 +$as_echo "$as_me: loading site script $ac_site_file" >&6;} sed 's/^/| /' "$ac_site_file" >&5 - . "$ac_site_file" + . "$ac_site_file" \ + || { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error $? "failed to load site script $ac_site_file +See \`config.log' for more details" "$LINENO" 5; } fi done if test -r "$cache_file"; then - # Some versions of bash will fail to source /dev/null (special - # files actually), so we avoid doing that. - if test -f "$cache_file"; then - { echo "$as_me:$LINENO: loading cache $cache_file" >&5 -echo "$as_me: loading cache $cache_file" >&6;} + # Some versions of bash will fail to source /dev/null (special files + # actually), so we avoid doing that. DJGPP emulates it as a regular file. + if test /dev/null != "$cache_file" && test -f "$cache_file"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: loading cache $cache_file" >&5 +$as_echo "$as_me: loading cache $cache_file" >&6;} case $cache_file in [\\/]* | ?:[\\/]* ) . "$cache_file";; *) . "./$cache_file";; esac fi else - { echo "$as_me:$LINENO: creating cache $cache_file" >&5 -echo "$as_me: creating cache $cache_file" >&6;} + { $as_echo "$as_me:${as_lineno-$LINENO}: creating cache $cache_file" >&5 +$as_echo "$as_me: creating cache $cache_file" >&6;} >$cache_file fi @@ -1880,68 +2392,56 @@ for ac_var in $ac_precious_vars; do eval ac_new_val=\$ac_env_${ac_var}_value case $ac_old_set,$ac_new_set in set,) - { echo "$as_me:$LINENO: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5 -echo "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;} + { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5 +$as_echo "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;} ac_cache_corrupted=: ;; ,set) - { echo "$as_me:$LINENO: error: \`$ac_var' was not set in the previous run" >&5 -echo "$as_me: error: \`$ac_var' was not set in the previous run" >&2;} + { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was not set in the previous run" >&5 +$as_echo "$as_me: error: \`$ac_var' was not set in the previous run" >&2;} ac_cache_corrupted=: ;; ,);; *) if test "x$ac_old_val" != "x$ac_new_val"; then - { echo "$as_me:$LINENO: error: \`$ac_var' has changed since the previous run:" >&5 -echo "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;} - { echo "$as_me:$LINENO: former value: $ac_old_val" >&5 -echo "$as_me: former value: $ac_old_val" >&2;} - { echo "$as_me:$LINENO: current value: $ac_new_val" >&5 -echo "$as_me: current value: $ac_new_val" >&2;} - ac_cache_corrupted=: + # differences in whitespace do not lead to failure. + ac_old_val_w=`echo x $ac_old_val` + ac_new_val_w=`echo x $ac_new_val` + if test "$ac_old_val_w" != "$ac_new_val_w"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' has changed since the previous run:" >&5 +$as_echo "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;} + ac_cache_corrupted=: + else + { $as_echo "$as_me:${as_lineno-$LINENO}: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&5 +$as_echo "$as_me: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&2;} + eval $ac_var=\$ac_old_val + fi + { $as_echo "$as_me:${as_lineno-$LINENO}: former value: \`$ac_old_val'" >&5 +$as_echo "$as_me: former value: \`$ac_old_val'" >&2;} + { $as_echo "$as_me:${as_lineno-$LINENO}: current value: \`$ac_new_val'" >&5 +$as_echo "$as_me: current value: \`$ac_new_val'" >&2;} fi;; esac # Pass precious variables to config.status. if test "$ac_new_set" = set; then case $ac_new_val in - *\'*) ac_arg=$ac_var=`echo "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;; + *\'*) ac_arg=$ac_var=`$as_echo "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;; *) ac_arg=$ac_var=$ac_new_val ;; esac case " $ac_configure_args " in *" '$ac_arg' "*) ;; # Avoid dups. Use of quotes ensures accuracy. - *) ac_configure_args="$ac_configure_args '$ac_arg'" ;; + *) as_fn_append ac_configure_args " '$ac_arg'" ;; esac fi done if $ac_cache_corrupted; then - { echo "$as_me:$LINENO: error: changes in the environment can compromise the build" >&5 -echo "$as_me: error: changes in the environment can compromise the build" >&2;} - { { echo "$as_me:$LINENO: error: run \`make distclean' and/or \`rm $cache_file' and start over" >&5 -echo "$as_me: error: run \`make distclean' and/or \`rm $cache_file' and start over" >&2;} - { (exit 1); exit 1; }; } + { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} + { $as_echo "$as_me:${as_lineno-$LINENO}: error: changes in the environment can compromise the build" >&5 +$as_echo "$as_me: error: changes in the environment can compromise the build" >&2;} + as_fn_error $? "run \`make distclean' and/or \`rm $cache_file' and start over" "$LINENO" 5 fi - - - - - - - - - - - - - - - - - - - - - - - - +## -------------------- ## +## Main body of script. ## +## -------------------- ## ac_ext=c ac_cpp='$CPP $CPPFLAGS' @@ -1952,6 +2452,29 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to enable maintainer-specific portions of Makefiles" >&5 +$as_echo_n "checking whether to enable maintainer-specific portions of Makefiles... " >&6; } + # Check whether --enable-maintainer-mode was given. +if test "${enable_maintainer_mode+set}" = set; then : + enableval=$enable_maintainer_mode; USE_MAINTAINER_MODE=$enableval +else + USE_MAINTAINER_MODE=yes +fi + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $USE_MAINTAINER_MODE" >&5 +$as_echo "$USE_MAINTAINER_MODE" >&6; } + if test $USE_MAINTAINER_MODE = yes; then + MAINTAINER_MODE_TRUE= + MAINTAINER_MODE_FALSE='#' +else + MAINTAINER_MODE_TRUE='#' + MAINTAINER_MODE_FALSE= +fi + + MAINT=$MAINTAINER_MODE_TRUE + + + ac_config_headers="$ac_config_headers config.h" @@ -1959,15 +2482,13 @@ ac_config_headers="$ac_config_headers config.h" # autoconf's default CXXFLAGS are usually "-g -O2". These aren't necessarily # the best choice for libprotobuf. -if test "x${ac_cv_env_CFLAGS_set}" = "x"; then +if test "x${ac_cv_env_CFLAGS_set}" = "x"; then : CFLAGS="" fi - -if test "x${ac_cv_env_CXXFLAGS_set}" = "x"; then +if test "x${ac_cv_env_CXXFLAGS_set}" = "x"; then : CXXFLAGS="" fi - ac_aux_dir= for ac_dir in "$srcdir" "$srcdir/.." "$srcdir/../.."; do if test -f "$ac_dir/install-sh"; then @@ -1985,9 +2506,7 @@ for ac_dir in "$srcdir" "$srcdir/.." "$srcdir/../.."; do fi done if test -z "$ac_aux_dir"; then - { { echo "$as_me:$LINENO: error: cannot find install-sh or install.sh in \"$srcdir\" \"$srcdir/..\" \"$srcdir/../..\"" >&5 -echo "$as_me: error: cannot find install-sh or install.sh in \"$srcdir\" \"$srcdir/..\" \"$srcdir/../..\"" >&2;} - { (exit 1); exit 1; }; } + as_fn_error $? "cannot find install-sh, install.sh, or shtool in \"$srcdir\" \"$srcdir/..\" \"$srcdir/../..\"" "$LINENO" 5 fi # These three variables are undocumented and unsupported, @@ -2001,35 +2520,27 @@ ac_configure="$SHELL $ac_aux_dir/configure" # Please don't use this var. # Make sure we can run config.sub. $SHELL "$ac_aux_dir/config.sub" sun4 >/dev/null 2>&1 || - { { echo "$as_me:$LINENO: error: cannot run $SHELL $ac_aux_dir/config.sub" >&5 -echo "$as_me: error: cannot run $SHELL $ac_aux_dir/config.sub" >&2;} - { (exit 1); exit 1; }; } + as_fn_error $? "cannot run $SHELL $ac_aux_dir/config.sub" "$LINENO" 5 -{ echo "$as_me:$LINENO: checking build system type" >&5 -echo $ECHO_N "checking build system type... $ECHO_C" >&6; } -if test "${ac_cv_build+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking build system type" >&5 +$as_echo_n "checking build system type... " >&6; } +if ${ac_cv_build+:} false; then : + $as_echo_n "(cached) " >&6 else ac_build_alias=$build_alias test "x$ac_build_alias" = x && ac_build_alias=`$SHELL "$ac_aux_dir/config.guess"` test "x$ac_build_alias" = x && - { { echo "$as_me:$LINENO: error: cannot guess build type; you must specify one" >&5 -echo "$as_me: error: cannot guess build type; you must specify one" >&2;} - { (exit 1); exit 1; }; } + as_fn_error $? "cannot guess build type; you must specify one" "$LINENO" 5 ac_cv_build=`$SHELL "$ac_aux_dir/config.sub" $ac_build_alias` || - { { echo "$as_me:$LINENO: error: $SHELL $ac_aux_dir/config.sub $ac_build_alias failed" >&5 -echo "$as_me: error: $SHELL $ac_aux_dir/config.sub $ac_build_alias failed" >&2;} - { (exit 1); exit 1; }; } + as_fn_error $? "$SHELL $ac_aux_dir/config.sub $ac_build_alias failed" "$LINENO" 5 fi -{ echo "$as_me:$LINENO: result: $ac_cv_build" >&5 -echo "${ECHO_T}$ac_cv_build" >&6; } +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_build" >&5 +$as_echo "$ac_cv_build" >&6; } case $ac_cv_build in *-*-*) ;; -*) { { echo "$as_me:$LINENO: error: invalid value of canonical build" >&5 -echo "$as_me: error: invalid value of canonical build" >&2;} - { (exit 1); exit 1; }; };; +*) as_fn_error $? "invalid value of canonical build" "$LINENO" 5;; esac build=$ac_cv_build ac_save_IFS=$IFS; IFS='-' @@ -2045,28 +2556,24 @@ IFS=$ac_save_IFS case $build_os in *\ *) build_os=`echo "$build_os" | sed 's/ /-/g'`;; esac -{ echo "$as_me:$LINENO: checking host system type" >&5 -echo $ECHO_N "checking host system type... $ECHO_C" >&6; } -if test "${ac_cv_host+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking host system type" >&5 +$as_echo_n "checking host system type... " >&6; } +if ${ac_cv_host+:} false; then : + $as_echo_n "(cached) " >&6 else if test "x$host_alias" = x; then ac_cv_host=$ac_cv_build else ac_cv_host=`$SHELL "$ac_aux_dir/config.sub" $host_alias` || - { { echo "$as_me:$LINENO: error: $SHELL $ac_aux_dir/config.sub $host_alias failed" >&5 -echo "$as_me: error: $SHELL $ac_aux_dir/config.sub $host_alias failed" >&2;} - { (exit 1); exit 1; }; } + as_fn_error $? "$SHELL $ac_aux_dir/config.sub $host_alias failed" "$LINENO" 5 fi fi -{ echo "$as_me:$LINENO: result: $ac_cv_host" >&5 -echo "${ECHO_T}$ac_cv_host" >&6; } +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_host" >&5 +$as_echo "$ac_cv_host" >&6; } case $ac_cv_host in *-*-*) ;; -*) { { echo "$as_me:$LINENO: error: invalid value of canonical host" >&5 -echo "$as_me: error: invalid value of canonical host" >&2;} - { (exit 1); exit 1; }; };; +*) as_fn_error $? "invalid value of canonical host" "$LINENO" 5;; esac host=$ac_cv_host ac_save_IFS=$IFS; IFS='-' @@ -2082,28 +2589,24 @@ IFS=$ac_save_IFS case $host_os in *\ *) host_os=`echo "$host_os" | sed 's/ /-/g'`;; esac -{ echo "$as_me:$LINENO: checking target system type" >&5 -echo $ECHO_N "checking target system type... $ECHO_C" >&6; } -if test "${ac_cv_target+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking target system type" >&5 +$as_echo_n "checking target system type... " >&6; } +if ${ac_cv_target+:} false; then : + $as_echo_n "(cached) " >&6 else if test "x$target_alias" = x; then ac_cv_target=$ac_cv_host else ac_cv_target=`$SHELL "$ac_aux_dir/config.sub" $target_alias` || - { { echo "$as_me:$LINENO: error: $SHELL $ac_aux_dir/config.sub $target_alias failed" >&5 -echo "$as_me: error: $SHELL $ac_aux_dir/config.sub $target_alias failed" >&2;} - { (exit 1); exit 1; }; } + as_fn_error $? "$SHELL $ac_aux_dir/config.sub $target_alias failed" "$LINENO" 5 fi fi -{ echo "$as_me:$LINENO: result: $ac_cv_target" >&5 -echo "${ECHO_T}$ac_cv_target" >&6; } +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_target" >&5 +$as_echo "$ac_cv_target" >&6; } case $ac_cv_target in *-*-*) ;; -*) { { echo "$as_me:$LINENO: error: invalid value of canonical target" >&5 -echo "$as_me: error: invalid value of canonical target" >&2;} - { (exit 1); exit 1; }; };; +*) as_fn_error $? "invalid value of canonical target" "$LINENO" 5;; esac target=$ac_cv_target ac_save_IFS=$IFS; IFS='-' @@ -2126,7 +2629,7 @@ test -n "$target_alias" && NONENONEs,x,x, && program_prefix=${target_alias}- -am__api_version='1.10' +am__api_version='1.11' # Find a good install program. We prefer a C program (faster), # so one script is as good as another. But avoid the broken or @@ -2141,22 +2644,23 @@ am__api_version='1.10' # SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff" # OS/2's system install, which has a completely different semantic # ./install, which can be erroneously created by make from ./install.sh. -{ echo "$as_me:$LINENO: checking for a BSD-compatible install" >&5 -echo $ECHO_N "checking for a BSD-compatible install... $ECHO_C" >&6; } +# Reject install programs that cannot install multiple files. +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for a BSD-compatible install" >&5 +$as_echo_n "checking for a BSD-compatible install... " >&6; } if test -z "$INSTALL"; then -if test "${ac_cv_path_install+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 +if ${ac_cv_path_install+:} false; then : + $as_echo_n "(cached) " >&6 else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. - # Account for people who put trailing slashes in PATH elements. -case $as_dir/ in - ./ | .// | /cC/* | \ + # Account for people who put trailing slashes in PATH elements. +case $as_dir/ in #(( + ./ | .// | /[cC]/* | \ /etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* | \ - ?:\\/os2\\/install\\/* | ?:\\/OS2\\/INSTALL\\/* | \ + ?:[\\/]os2[\\/]install[\\/]* | ?:[\\/]OS2[\\/]INSTALL[\\/]* | \ /usr/ucb/* ) ;; *) # OSF1 and SCO ODT 3.0 have their own names for install. @@ -2174,17 +2678,29 @@ case $as_dir/ in # program-specific install script used by HP pwplus--don't use. : else - ac_cv_path_install="$as_dir/$ac_prog$ac_exec_ext -c" - break 3 + rm -rf conftest.one conftest.two conftest.dir + echo one > conftest.one + echo two > conftest.two + mkdir conftest.dir + if "$as_dir/$ac_prog$ac_exec_ext" -c conftest.one conftest.two "`pwd`/conftest.dir" && + test -s conftest.one && test -s conftest.two && + test -s conftest.dir/conftest.one && + test -s conftest.dir/conftest.two + then + ac_cv_path_install="$as_dir/$ac_prog$ac_exec_ext -c" + break 3 + fi fi fi done done ;; esac -done + + done IFS=$as_save_IFS +rm -rf conftest.one conftest.two conftest.dir fi if test "${ac_cv_path_install+set}" = set; then @@ -2197,8 +2713,8 @@ fi INSTALL=$ac_install_sh fi fi -{ echo "$as_me:$LINENO: result: $INSTALL" >&5 -echo "${ECHO_T}$INSTALL" >&6; } +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $INSTALL" >&5 +$as_echo "$INSTALL" >&6; } # Use test -z because SunOS4 sh mishandles braces in ${var-val}. # It thinks the first close brace ends the variable substitution. @@ -2208,21 +2724,34 @@ test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL}' test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644' -{ echo "$as_me:$LINENO: checking whether build environment is sane" >&5 -echo $ECHO_N "checking whether build environment is sane... $ECHO_C" >&6; } +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether build environment is sane" >&5 +$as_echo_n "checking whether build environment is sane... " >&6; } # Just in case sleep 1 echo timestamp > conftest.file +# Reject unsafe characters in $srcdir or the absolute working directory +# name. Accept space and tab only in the latter. +am_lf=' +' +case `pwd` in + *[\\\"\#\$\&\'\`$am_lf]*) + as_fn_error $? "unsafe absolute working directory name" "$LINENO" 5;; +esac +case $srcdir in + *[\\\"\#\$\&\'\`$am_lf\ \ ]*) + as_fn_error $? "unsafe srcdir value: \`$srcdir'" "$LINENO" 5;; +esac + # Do `set' in a subshell so we don't clobber the current shell's # arguments. Must try -L first in case configure is actually a # symlink; some systems play weird games with the mod time of symlinks # (eg FreeBSD returns the mod time of the symlink's containing # directory). if ( - set X `ls -Lt $srcdir/configure conftest.file 2> /dev/null` + set X `ls -Lt "$srcdir/configure" conftest.file 2> /dev/null` if test "$*" = "X"; then # -L didn't work. - set X `ls -t $srcdir/configure conftest.file` + set X `ls -t "$srcdir/configure" conftest.file` fi rm -f conftest.file if test "$*" != "X $srcdir/configure conftest.file" \ @@ -2232,11 +2761,8 @@ if ( # if, for instance, CONFIG_SHELL is bash and it inherits a # broken ls alias from the environment. This has actually # happened. Such a system could not be considered "sane". - { { echo "$as_me:$LINENO: error: ls -t appears to fail. Make sure there is not a broken -alias in your environment" >&5 -echo "$as_me: error: ls -t appears to fail. Make sure there is not a broken -alias in your environment" >&2;} - { (exit 1); exit 1; }; } + as_fn_error $? "ls -t appears to fail. Make sure there is not a broken +alias in your environment" "$LINENO" 5 fi test "$2" = conftest.file @@ -2245,52 +2771,162 @@ then # Ok. : else - { { echo "$as_me:$LINENO: error: newly created file is older than distributed files! -Check your system clock" >&5 -echo "$as_me: error: newly created file is older than distributed files! -Check your system clock" >&2;} - { (exit 1); exit 1; }; } + as_fn_error $? "newly created file is older than distributed files! +Check your system clock" "$LINENO" 5 fi -{ echo "$as_me:$LINENO: result: yes" >&5 -echo "${ECHO_T}yes" >&6; } +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } test "$program_prefix" != NONE && program_transform_name="s&^&$program_prefix&;$program_transform_name" # Use a double $ so make ignores it. test "$program_suffix" != NONE && program_transform_name="s&\$&$program_suffix&;$program_transform_name" -# Double any \ or $. echo might interpret backslashes. +# Double any \ or $. # By default was `s,x,x', remove it if useless. -cat <<\_ACEOF >conftest.sed -s/[\\$]/&&/g;s/;s,x,x,$// -_ACEOF -program_transform_name=`echo $program_transform_name | sed -f conftest.sed` -rm -f conftest.sed +ac_script='s/[\\$]/&&/g;s/;s,x,x,$//' +program_transform_name=`$as_echo "$program_transform_name" | sed "$ac_script"` # expand $ac_aux_dir to an absolute path am_aux_dir=`cd $ac_aux_dir && pwd` -test x"${MISSING+set}" = xset || MISSING="\${SHELL} $am_aux_dir/missing" +if test x"${MISSING+set}" != xset; then + case $am_aux_dir in + *\ * | *\ *) + MISSING="\${SHELL} \"$am_aux_dir/missing\"" ;; + *) + MISSING="\${SHELL} $am_aux_dir/missing" ;; + esac +fi # Use eval to expand $SHELL if eval "$MISSING --run true"; then am_missing_run="$MISSING --run " else am_missing_run= - { echo "$as_me:$LINENO: WARNING: \`missing' script is too old or missing" >&5 -echo "$as_me: WARNING: \`missing' script is too old or missing" >&2;} + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: \`missing' script is too old or missing" >&5 +$as_echo "$as_me: WARNING: \`missing' script is too old or missing" >&2;} +fi + +if test x"${install_sh}" != xset; then + case $am_aux_dir in + *\ * | *\ *) + install_sh="\${SHELL} '$am_aux_dir/install-sh'" ;; + *) + install_sh="\${SHELL} $am_aux_dir/install-sh" + esac +fi + +# Installed binaries are usually stripped using `strip' when the user +# run `make install-strip'. However `strip' might not be the right +# tool to use in cross-compilation environments, therefore Automake +# will honor the `STRIP' environment variable to overrule this program. +if test "$cross_compiling" != no; then + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args. +set dummy ${ac_tool_prefix}strip; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_STRIP+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$STRIP"; then + ac_cv_prog_STRIP="$STRIP" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_STRIP="${ac_tool_prefix}strip" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +STRIP=$ac_cv_prog_STRIP +if test -n "$STRIP"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $STRIP" >&5 +$as_echo "$STRIP" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_STRIP"; then + ac_ct_STRIP=$STRIP + # Extract the first word of "strip", so it can be a program name with args. +set dummy strip; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_ac_ct_STRIP+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_STRIP"; then + ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_ac_ct_STRIP="strip" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP +if test -n "$ac_ct_STRIP"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_STRIP" >&5 +$as_echo "$ac_ct_STRIP" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } fi -{ echo "$as_me:$LINENO: checking for a thread-safe mkdir -p" >&5 -echo $ECHO_N "checking for a thread-safe mkdir -p... $ECHO_C" >&6; } + if test "x$ac_ct_STRIP" = x; then + STRIP=":" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + STRIP=$ac_ct_STRIP + fi +else + STRIP="$ac_cv_prog_STRIP" +fi + +fi +INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s" + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for a thread-safe mkdir -p" >&5 +$as_echo_n "checking for a thread-safe mkdir -p... " >&6; } if test -z "$MKDIR_P"; then - if test "${ac_cv_path_mkdir+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 + if ${ac_cv_path_mkdir+:} false; then : + $as_echo_n "(cached) " >&6 else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH$PATH_SEPARATOR/opt/sfw/bin do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. - for ac_prog in mkdir gmkdir; do + for ac_prog in mkdir gmkdir; do for ac_exec_ext in '' $ac_executable_extensions; do { test -f "$as_dir/$ac_prog$ac_exec_ext" && $as_test_x "$as_dir/$ac_prog$ac_exec_ext"; } || continue case `"$as_dir/$ac_prog$ac_exec_ext" --version 2>&1` in #( @@ -2302,11 +2938,12 @@ do esac done done -done + done IFS=$as_save_IFS fi + test -d ./--version && rmdir ./--version if test "${ac_cv_path_mkdir+set}" = set; then MKDIR_P="$ac_cv_path_mkdir -p" else @@ -2314,12 +2951,11 @@ fi # value for MKDIR_P within a source directory, because that will # break other packages using the cache if that directory is # removed, or if the value is a relative name. - test -d ./--version && rmdir ./--version MKDIR_P="$ac_install_sh -d" fi fi -{ echo "$as_me:$LINENO: result: $MKDIR_P" >&5 -echo "${ECHO_T}$MKDIR_P" >&6; } +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $MKDIR_P" >&5 +$as_echo "$MKDIR_P" >&6; } mkdir_p="$MKDIR_P" case $mkdir_p in @@ -2331,10 +2967,10 @@ for ac_prog in gawk mawk nawk awk do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 -{ echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } -if test "${ac_cv_prog_AWK+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_AWK+:} false; then : + $as_echo_n "(cached) " >&6 else if test -n "$AWK"; then ac_cv_prog_AWK="$AWK" # Let the user override the test. @@ -2344,43 +2980,44 @@ for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do + for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_AWK="$ac_prog" - echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done -done + done IFS=$as_save_IFS fi fi AWK=$ac_cv_prog_AWK if test -n "$AWK"; then - { echo "$as_me:$LINENO: result: $AWK" >&5 -echo "${ECHO_T}$AWK" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AWK" >&5 +$as_echo "$AWK" >&6; } else - { echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } fi test -n "$AWK" && break done -{ echo "$as_me:$LINENO: checking whether ${MAKE-make} sets \$(MAKE)" >&5 -echo $ECHO_N "checking whether ${MAKE-make} sets \$(MAKE)... $ECHO_C" >&6; } -set x ${MAKE-make}; ac_make=`echo "$2" | sed 's/+/p/g; s/[^a-zA-Z0-9_]/_/g'` -if { as_var=ac_cv_prog_make_${ac_make}_set; eval "test \"\${$as_var+set}\" = set"; }; then - echo $ECHO_N "(cached) $ECHO_C" >&6 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ${MAKE-make} sets \$(MAKE)" >&5 +$as_echo_n "checking whether ${MAKE-make} sets \$(MAKE)... " >&6; } +set x ${MAKE-make} +ac_make=`$as_echo "$2" | sed 's/+/p/g; s/[^a-zA-Z0-9_]/_/g'` +if eval \${ac_cv_prog_make_${ac_make}_set+:} false; then : + $as_echo_n "(cached) " >&6 else cat >conftest.make <<\_ACEOF SHELL = /bin/sh all: @echo '@@@%%%=$(MAKE)=@@@%%%' _ACEOF -# GNU make sometimes prints "make[1]: Entering...", which would confuse us. +# GNU make sometimes prints "make[1]: Entering ...", which would confuse us. case `${MAKE-make} -f conftest.make 2>/dev/null` in *@@@%%%=?*=@@@%%%*) eval ac_cv_prog_make_${ac_make}_set=yes;; @@ -2390,12 +3027,12 @@ esac rm -f conftest.make fi if eval test \$ac_cv_prog_make_${ac_make}_set = yes; then - { echo "$as_me:$LINENO: result: yes" >&5 -echo "${ECHO_T}yes" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } SET_MAKE= else - { echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } SET_MAKE="MAKE=${MAKE-make}" fi @@ -2414,9 +3051,7 @@ if test "`cd $srcdir && pwd`" != "`pwd`"; then am__isrc=' -I$(srcdir)' # test to see if srcdir already configured if test -f $srcdir/config.status; then - { { echo "$as_me:$LINENO: error: source directory already configured; run \"make distclean\" there first" >&5 -echo "$as_me: error: source directory already configured; run \"make distclean\" there first" >&2;} - { (exit 1); exit 1; }; } + as_fn_error $? "source directory already configured; run \"make distclean\" there first" "$LINENO" 5 fi fi @@ -2432,7 +3067,7 @@ fi # Define the identity of the package. PACKAGE='protobuf' - VERSION='2.3.0' + VERSION='2.5.0' cat >>confdefs.h <<_ACEOF @@ -2452,127 +3087,21 @@ ACLOCAL=${ACLOCAL-"${am_missing_run}aclocal-${am__api_version}"} AUTOCONF=${AUTOCONF-"${am_missing_run}autoconf"} -AUTOMAKE=${AUTOMAKE-"${am_missing_run}automake-${am__api_version}"} - - -AUTOHEADER=${AUTOHEADER-"${am_missing_run}autoheader"} - - -MAKEINFO=${MAKEINFO-"${am_missing_run}makeinfo"} - -install_sh=${install_sh-"\$(SHELL) $am_aux_dir/install-sh"} - -# Installed binaries are usually stripped using `strip' when the user -# run `make install-strip'. However `strip' might not be the right -# tool to use in cross-compilation environments, therefore Automake -# will honor the `STRIP' environment variable to overrule this program. -if test "$cross_compiling" != no; then - if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args. -set dummy ${ac_tool_prefix}strip; ac_word=$2 -{ echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } -if test "${ac_cv_prog_STRIP+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - if test -n "$STRIP"; then - ac_cv_prog_STRIP="$STRIP" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_prog_STRIP="${ac_tool_prefix}strip" - echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done -done -IFS=$as_save_IFS - -fi -fi -STRIP=$ac_cv_prog_STRIP -if test -n "$STRIP"; then - { echo "$as_me:$LINENO: result: $STRIP" >&5 -echo "${ECHO_T}$STRIP" >&6; } -else - { echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6; } -fi - - -fi -if test -z "$ac_cv_prog_STRIP"; then - ac_ct_STRIP=$STRIP - # Extract the first word of "strip", so it can be a program name with args. -set dummy strip; ac_word=$2 -{ echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } -if test "${ac_cv_prog_ac_ct_STRIP+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - if test -n "$ac_ct_STRIP"; then - ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_prog_ac_ct_STRIP="strip" - echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done -done -IFS=$as_save_IFS - -fi -fi -ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP -if test -n "$ac_ct_STRIP"; then - { echo "$as_me:$LINENO: result: $ac_ct_STRIP" >&5 -echo "${ECHO_T}$ac_ct_STRIP" >&6; } -else - { echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6; } -fi - - if test "x$ac_ct_STRIP" = x; then - STRIP=":" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools -whose name does not start with the host triplet. If you think this -configuration is useful to you, please write to autoconf@gnu.org." >&5 -echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools -whose name does not start with the host triplet. If you think this -configuration is useful to you, please write to autoconf@gnu.org." >&2;} -ac_tool_warned=yes ;; -esac - STRIP=$ac_ct_STRIP - fi -else - STRIP="$ac_cv_prog_STRIP" -fi +AUTOMAKE=${AUTOMAKE-"${am_missing_run}automake-${am__api_version}"} -fi -INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s" + +AUTOHEADER=${AUTOHEADER-"${am_missing_run}autoheader"} + + +MAKEINFO=${MAKEINFO-"${am_missing_run}makeinfo"} # We need awk for the "check" target. The system "awk" is bad on # some platforms. -# Always define AMTAR for backward compatibility. +# Always define AMTAR for backward compatibility. Yes, it's still used +# in the wild :-( We should find a proper way to deprecate it ... +AMTAR='$${TAR-tar}' -AMTAR=${AMTAR-"${am_missing_run}tar"} - -am__tar='${AMTAR} chof - "$$tardir"'; am__untar='${AMTAR} xf -' +am__tar='$${TAR-tar} chof - "$$tardir"' am__untar='$${TAR-tar} xf -' @@ -2581,7 +3110,7 @@ am__tar='${AMTAR} chof - "$$tardir"'; am__untar='${AMTAR} xf -' # Check whether --with-zlib was given. -if test "${with_zlib+set}" = set; then +if test "${with_zlib+set}" = set; then : withval=$with_zlib; else with_zlib=check @@ -2590,7 +3119,7 @@ fi # Check whether --with-protoc was given. -if test "${with_protoc+set}" = set; then +if test "${with_protoc+set}" = set; then : withval=$with_protoc; else with_protoc=no @@ -2606,10 +3135,10 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args. set dummy ${ac_tool_prefix}gcc; ac_word=$2 -{ echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } -if test "${ac_cv_prog_CC+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_CC+:} false; then : + $as_echo_n "(cached) " >&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. @@ -2619,25 +3148,25 @@ for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do + for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_CC="${ac_tool_prefix}gcc" - echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done -done + done IFS=$as_save_IFS fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then - { echo "$as_me:$LINENO: result: $CC" >&5 -echo "${ECHO_T}$CC" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 +$as_echo "$CC" >&6; } else - { echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } fi @@ -2646,10 +3175,10 @@ if test -z "$ac_cv_prog_CC"; then ac_ct_CC=$CC # Extract the first word of "gcc", so it can be a program name with args. set dummy gcc; ac_word=$2 -{ echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } -if test "${ac_cv_prog_ac_ct_CC+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_ac_ct_CC+:} false; then : + $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_CC"; then ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. @@ -2659,25 +3188,25 @@ for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do + for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_ac_ct_CC="gcc" - echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done -done + done IFS=$as_save_IFS fi fi ac_ct_CC=$ac_cv_prog_ac_ct_CC if test -n "$ac_ct_CC"; then - { echo "$as_me:$LINENO: result: $ac_ct_CC" >&5 -echo "${ECHO_T}$ac_ct_CC" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 +$as_echo "$ac_ct_CC" >&6; } else - { echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } fi if test "x$ac_ct_CC" = x; then @@ -2685,12 +3214,8 @@ fi else case $cross_compiling:$ac_tool_warned in yes:) -{ echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools -whose name does not start with the host triplet. If you think this -configuration is useful to you, please write to autoconf@gnu.org." >&5 -echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools -whose name does not start with the host triplet. If you think this -configuration is useful to you, please write to autoconf@gnu.org." >&2;} +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac CC=$ac_ct_CC @@ -2703,10 +3228,10 @@ if test -z "$CC"; then if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args. set dummy ${ac_tool_prefix}cc; ac_word=$2 -{ echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } -if test "${ac_cv_prog_CC+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_CC+:} false; then : + $as_echo_n "(cached) " >&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. @@ -2716,25 +3241,25 @@ for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do + for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_CC="${ac_tool_prefix}cc" - echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done -done + done IFS=$as_save_IFS fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then - { echo "$as_me:$LINENO: result: $CC" >&5 -echo "${ECHO_T}$CC" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 +$as_echo "$CC" >&6; } else - { echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } fi @@ -2743,10 +3268,10 @@ fi if test -z "$CC"; then # Extract the first word of "cc", so it can be a program name with args. set dummy cc; ac_word=$2 -{ echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } -if test "${ac_cv_prog_CC+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_CC+:} false; then : + $as_echo_n "(cached) " >&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. @@ -2757,18 +3282,18 @@ for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do + for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then ac_prog_rejected=yes continue fi ac_cv_prog_CC="cc" - echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done -done + done IFS=$as_save_IFS if test $ac_prog_rejected = yes; then @@ -2787,11 +3312,11 @@ fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then - { echo "$as_me:$LINENO: result: $CC" >&5 -echo "${ECHO_T}$CC" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 +$as_echo "$CC" >&6; } else - { echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } fi @@ -2802,10 +3327,10 @@ if test -z "$CC"; then do # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. set dummy $ac_tool_prefix$ac_prog; ac_word=$2 -{ echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } -if test "${ac_cv_prog_CC+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_CC+:} false; then : + $as_echo_n "(cached) " >&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. @@ -2815,25 +3340,25 @@ for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do + for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_CC="$ac_tool_prefix$ac_prog" - echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done -done + done IFS=$as_save_IFS fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then - { echo "$as_me:$LINENO: result: $CC" >&5 -echo "${ECHO_T}$CC" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 +$as_echo "$CC" >&6; } else - { echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } fi @@ -2846,10 +3371,10 @@ if test -z "$CC"; then do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 -{ echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } -if test "${ac_cv_prog_ac_ct_CC+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_ac_ct_CC+:} false; then : + $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_CC"; then ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. @@ -2859,25 +3384,25 @@ for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do + for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_ac_ct_CC="$ac_prog" - echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done -done + done IFS=$as_save_IFS fi fi ac_ct_CC=$ac_cv_prog_ac_ct_CC if test -n "$ac_ct_CC"; then - { echo "$as_me:$LINENO: result: $ac_ct_CC" >&5 -echo "${ECHO_T}$ac_ct_CC" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 +$as_echo "$ac_ct_CC" >&6; } else - { echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } fi @@ -2889,12 +3414,8 @@ done else case $cross_compiling:$ac_tool_warned in yes:) -{ echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools -whose name does not start with the host triplet. If you think this -configuration is useful to you, please write to autoconf@gnu.org." >&5 -echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools -whose name does not start with the host triplet. If you think this -configuration is useful to you, please write to autoconf@gnu.org." >&2;} +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac CC=$ac_ct_CC @@ -2904,51 +3425,37 @@ fi fi -test -z "$CC" && { { echo "$as_me:$LINENO: error: no acceptable C compiler found in \$PATH -See \`config.log' for more details." >&5 -echo "$as_me: error: no acceptable C compiler found in \$PATH -See \`config.log' for more details." >&2;} - { (exit 1); exit 1; }; } +test -z "$CC" && { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error $? "no acceptable C compiler found in \$PATH +See \`config.log' for more details" "$LINENO" 5; } # Provide some information about the compiler. -echo "$as_me:$LINENO: checking for C compiler version" >&5 -ac_compiler=`set X $ac_compile; echo $2` -{ (ac_try="$ac_compiler --version >&5" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compiler --version >&5") 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } -{ (ac_try="$ac_compiler -v >&5" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compiler -v >&5") 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } -{ (ac_try="$ac_compiler -V >&5" +$as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler version" >&5 +set X $ac_compile +ac_compiler=$2 +for ac_option in --version -v -V -qversion; do + { { ac_try="$ac_compiler $ac_option >&5" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compiler -V >&5") 2>&5 +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_compiler $ac_option >&5") 2>conftest.err ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } + if test -s conftest.err; then + sed '10a\ +... rest of stderr output deleted ... + 10q' conftest.err >conftest.er1 + cat conftest.er1 >&5 + fi + rm -f conftest.er1 conftest.err + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } +done -cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF +cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int @@ -2960,42 +3467,38 @@ main () } _ACEOF ac_clean_files_save=$ac_clean_files -ac_clean_files="$ac_clean_files a.out a.exe b.out" +ac_clean_files="$ac_clean_files a.out a.out.dSYM a.exe b.out" # Try to create an executable without -o first, disregard a.out. # It will help us diagnose broken compilers, and finding out an intuition # of exeext. -{ echo "$as_me:$LINENO: checking for C compiler default output file name" >&5 -echo $ECHO_N "checking for C compiler default output file name... $ECHO_C" >&6; } -ac_link_default=`echo "$ac_link" | sed 's/ -o *conftest[^ ]*//'` -# -# List of possible output files, starting from the most likely. -# The algorithm is not robust to junk in `.', hence go to wildcards (a.*) -# only as a last resort. b.out is created by i960 compilers. -ac_files='a_out.exe a.exe conftest.exe a.out conftest a.* conftest.* b.out' -# -# The IRIX 6 linker writes into existing files which may not be -# executable, retaining their permissions. Remove them first so a -# subsequent execution test works. +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the C compiler works" >&5 +$as_echo_n "checking whether the C compiler works... " >&6; } +ac_link_default=`$as_echo "$ac_link" | sed 's/ -o *conftest[^ ]*//'` + +# The possible output files: +ac_files="a.out conftest.exe conftest a.exe a_out.exe b.out conftest.*" + ac_rmfiles= for ac_file in $ac_files do case $ac_file in - *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.o | *.obj ) ;; + *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; * ) ac_rmfiles="$ac_rmfiles $ac_file";; esac done rm -f $ac_rmfiles -if { (ac_try="$ac_link_default" +if { { ac_try="$ac_link_default" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 (eval "$ac_link_default") 2>&5 ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; then + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then : # Autoconf-2.13 could set the ac_cv_exeext variable to `no'. # So ignore a value of `no', otherwise this would lead to `EXEEXT = no' # in a Makefile. We should not override ac_cv_exeext if it was cached, @@ -3005,14 +3508,14 @@ for ac_file in $ac_files '' do test -f "$ac_file" || continue case $ac_file in - *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.o | *.obj ) + *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; [ab].out ) # We found the default executable, but exeext='' is most # certainly right. break;; *.* ) - if test "${ac_cv_exeext+set}" = set && test "$ac_cv_exeext" != no; + if test "${ac_cv_exeext+set}" = set && test "$ac_cv_exeext" != no; then :; else ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` fi @@ -3031,78 +3534,41 @@ test "$ac_cv_exeext" = no && ac_cv_exeext= else ac_file='' fi - -{ echo "$as_me:$LINENO: result: $ac_file" >&5 -echo "${ECHO_T}$ac_file" >&6; } -if test -z "$ac_file"; then - echo "$as_me: failed program was:" >&5 +if test -z "$ac_file"; then : + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +$as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 -{ { echo "$as_me:$LINENO: error: C compiler cannot create executables -See \`config.log' for more details." >&5 -echo "$as_me: error: C compiler cannot create executables -See \`config.log' for more details." >&2;} - { (exit 77); exit 77; }; } +{ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error 77 "C compiler cannot create executables +See \`config.log' for more details" "$LINENO" 5; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } fi - +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler default output file name" >&5 +$as_echo_n "checking for C compiler default output file name... " >&6; } +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_file" >&5 +$as_echo "$ac_file" >&6; } ac_exeext=$ac_cv_exeext -# Check that the compiler produces executables we can run. If not, either -# the compiler is broken, or we cross compile. -{ echo "$as_me:$LINENO: checking whether the C compiler works" >&5 -echo $ECHO_N "checking whether the C compiler works... $ECHO_C" >&6; } -# FIXME: These cross compiler hacks should be removed for Autoconf 3.0 -# If not cross compiling, check that we can run a simple program. -if test "$cross_compiling" != yes; then - if { ac_try='./$ac_file' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - cross_compiling=no - else - if test "$cross_compiling" = maybe; then - cross_compiling=yes - else - { { echo "$as_me:$LINENO: error: cannot run C compiled programs. -If you meant to cross compile, use \`--host'. -See \`config.log' for more details." >&5 -echo "$as_me: error: cannot run C compiled programs. -If you meant to cross compile, use \`--host'. -See \`config.log' for more details." >&2;} - { (exit 1); exit 1; }; } - fi - fi -fi -{ echo "$as_me:$LINENO: result: yes" >&5 -echo "${ECHO_T}yes" >&6; } - -rm -f a.out a.exe conftest$ac_cv_exeext b.out +rm -f -r a.out a.out.dSYM a.exe conftest$ac_cv_exeext b.out ac_clean_files=$ac_clean_files_save -# Check that the compiler produces executables we can run. If not, either -# the compiler is broken, or we cross compile. -{ echo "$as_me:$LINENO: checking whether we are cross compiling" >&5 -echo $ECHO_N "checking whether we are cross compiling... $ECHO_C" >&6; } -{ echo "$as_me:$LINENO: result: $cross_compiling" >&5 -echo "${ECHO_T}$cross_compiling" >&6; } - -{ echo "$as_me:$LINENO: checking for suffix of executables" >&5 -echo $ECHO_N "checking for suffix of executables... $ECHO_C" >&6; } -if { (ac_try="$ac_link" +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of executables" >&5 +$as_echo_n "checking for suffix of executables... " >&6; } +if { { ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 (eval "$ac_link") 2>&5 ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; then + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then : # If both `conftest.exe' and `conftest' are `present' (well, observable) # catch `conftest.exe'. For instance with Cygwin, `ls conftest' will # work properly (i.e., refer to `conftest.exe'), while it won't with @@ -3110,37 +3576,90 @@ eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 for ac_file in conftest.exe conftest conftest.*; do test -f "$ac_file" || continue case $ac_file in - *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.o | *.obj ) ;; + *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` break;; * ) break;; esac done else - { { echo "$as_me:$LINENO: error: cannot compute suffix of executables: cannot compile and link -See \`config.log' for more details." >&5 -echo "$as_me: error: cannot compute suffix of executables: cannot compile and link -See \`config.log' for more details." >&2;} - { (exit 1); exit 1; }; } + { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error $? "cannot compute suffix of executables: cannot compile and link +See \`config.log' for more details" "$LINENO" 5; } fi - -rm -f conftest$ac_cv_exeext -{ echo "$as_me:$LINENO: result: $ac_cv_exeext" >&5 -echo "${ECHO_T}$ac_cv_exeext" >&6; } +rm -f conftest conftest$ac_cv_exeext +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_exeext" >&5 +$as_echo "$ac_cv_exeext" >&6; } rm -f conftest.$ac_ext EXEEXT=$ac_cv_exeext ac_exeext=$EXEEXT -{ echo "$as_me:$LINENO: checking for suffix of object files" >&5 -echo $ECHO_N "checking for suffix of object files... $ECHO_C" >&6; } -if test "${ac_cv_objext+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +int +main () +{ +FILE *f = fopen ("conftest.out", "w"); + return ferror (f) || fclose (f) != 0; + + ; + return 0; +} _ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF +ac_clean_files="$ac_clean_files conftest.out" +# Check that the compiler produces executables we can run. If not, either +# the compiler is broken, or we cross compile. +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are cross compiling" >&5 +$as_echo_n "checking whether we are cross compiling... " >&6; } +if test "$cross_compiling" != yes; then + { { ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_link") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } + if { ac_try='./conftest$ac_cv_exeext' + { { case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; }; then + cross_compiling=no + else + if test "$cross_compiling" = maybe; then + cross_compiling=yes + else + { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error $? "cannot run C compiled programs. +If you meant to cross compile, use \`--host'. +See \`config.log' for more details" "$LINENO" 5; } + fi + fi +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $cross_compiling" >&5 +$as_echo "$cross_compiling" >&6; } + +rm -f conftest.$ac_ext conftest$ac_cv_exeext conftest.out +ac_clean_files=$ac_clean_files_save +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of object files" >&5 +$as_echo_n "checking for suffix of object files... " >&6; } +if ${ac_cv_objext+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int @@ -3152,51 +3671,46 @@ main () } _ACEOF rm -f conftest.o conftest.obj -if { (ac_try="$ac_compile" +if { { ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 (eval "$ac_compile") 2>&5 ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; then + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then : for ac_file in conftest.o conftest.obj conftest.*; do test -f "$ac_file" || continue; case $ac_file in - *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf ) ;; + *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM ) ;; *) ac_cv_objext=`expr "$ac_file" : '.*\.\(.*\)'` break;; esac done else - echo "$as_me: failed program was:" >&5 + $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 -{ { echo "$as_me:$LINENO: error: cannot compute suffix of object files: cannot compile -See \`config.log' for more details." >&5 -echo "$as_me: error: cannot compute suffix of object files: cannot compile -See \`config.log' for more details." >&2;} - { (exit 1); exit 1; }; } +{ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error $? "cannot compute suffix of object files: cannot compile +See \`config.log' for more details" "$LINENO" 5; } fi - rm -f conftest.$ac_cv_objext conftest.$ac_ext fi -{ echo "$as_me:$LINENO: result: $ac_cv_objext" >&5 -echo "${ECHO_T}$ac_cv_objext" >&6; } +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_objext" >&5 +$as_echo "$ac_cv_objext" >&6; } OBJEXT=$ac_cv_objext ac_objext=$OBJEXT -{ echo "$as_me:$LINENO: checking whether we are using the GNU C compiler" >&5 -echo $ECHO_N "checking whether we are using the GNU C compiler... $ECHO_C" >&6; } -if test "${ac_cv_c_compiler_gnu+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU C compiler" >&5 +$as_echo_n "checking whether we are using the GNU C compiler... " >&6; } +if ${ac_cv_c_compiler_gnu+:} false; then : + $as_echo_n "(cached) " >&6 else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF + cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int @@ -3210,54 +3724,34 @@ main () return 0; } _ACEOF -rm -f conftest.$ac_objext -if { (ac_try="$ac_compile" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compile") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then +if ac_fn_c_try_compile "$LINENO"; then : ac_compiler_gnu=yes else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_compiler_gnu=no + ac_compiler_gnu=no fi - rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ac_cv_c_compiler_gnu=$ac_compiler_gnu fi -{ echo "$as_me:$LINENO: result: $ac_cv_c_compiler_gnu" >&5 -echo "${ECHO_T}$ac_cv_c_compiler_gnu" >&6; } -GCC=`test $ac_compiler_gnu = yes && echo yes` +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_compiler_gnu" >&5 +$as_echo "$ac_cv_c_compiler_gnu" >&6; } +if test $ac_compiler_gnu = yes; then + GCC=yes +else + GCC= +fi ac_test_CFLAGS=${CFLAGS+set} ac_save_CFLAGS=$CFLAGS -{ echo "$as_me:$LINENO: checking whether $CC accepts -g" >&5 -echo $ECHO_N "checking whether $CC accepts -g... $ECHO_C" >&6; } -if test "${ac_cv_prog_cc_g+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC accepts -g" >&5 +$as_echo_n "checking whether $CC accepts -g... " >&6; } +if ${ac_cv_prog_cc_g+:} false; then : + $as_echo_n "(cached) " >&6 else ac_save_c_werror_flag=$ac_c_werror_flag ac_c_werror_flag=yes ac_cv_prog_cc_g=no CFLAGS="-g" - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF + cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int @@ -3268,34 +3762,11 @@ main () return 0; } _ACEOF -rm -f conftest.$ac_objext -if { (ac_try="$ac_compile" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compile") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then +if ac_fn_c_try_compile "$LINENO"; then : ac_cv_prog_cc_g=yes else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - CFLAGS="" - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF + CFLAGS="" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int @@ -3306,35 +3777,12 @@ main () return 0; } _ACEOF -rm -f conftest.$ac_objext -if { (ac_try="$ac_compile" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compile") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then - : -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 +if ac_fn_c_try_compile "$LINENO"; then : - ac_c_werror_flag=$ac_save_c_werror_flag +else + ac_c_werror_flag=$ac_save_c_werror_flag CFLAGS="-g" - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF + cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int @@ -3345,42 +3793,18 @@ main () return 0; } _ACEOF -rm -f conftest.$ac_objext -if { (ac_try="$ac_compile" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compile") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then +if ac_fn_c_try_compile "$LINENO"; then : ac_cv_prog_cc_g=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - fi - rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi - rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi - rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ac_c_werror_flag=$ac_save_c_werror_flag fi -{ echo "$as_me:$LINENO: result: $ac_cv_prog_cc_g" >&5 -echo "${ECHO_T}$ac_cv_prog_cc_g" >&6; } +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_g" >&5 +$as_echo "$ac_cv_prog_cc_g" >&6; } if test "$ac_test_CFLAGS" = set; then CFLAGS=$ac_save_CFLAGS elif test $ac_cv_prog_cc_g = yes; then @@ -3396,18 +3820,14 @@ else CFLAGS= fi fi -{ echo "$as_me:$LINENO: checking for $CC option to accept ISO C89" >&5 -echo $ECHO_N "checking for $CC option to accept ISO C89... $ECHO_C" >&6; } -if test "${ac_cv_prog_cc_c89+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $CC option to accept ISO C89" >&5 +$as_echo_n "checking for $CC option to accept ISO C89... " >&6; } +if ${ac_cv_prog_cc_c89+:} false; then : + $as_echo_n "(cached) " >&6 else ac_cv_prog_cc_c89=no ac_save_CC=$CC -cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF +cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include @@ -3464,31 +3884,9 @@ for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std \ -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__" do CC="$ac_save_CC $ac_arg" - rm -f conftest.$ac_objext -if { (ac_try="$ac_compile" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compile") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then + if ac_fn_c_try_compile "$LINENO"; then : ac_cv_prog_cc_c89=$ac_arg -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - fi - rm -f core conftest.err conftest.$ac_objext test "x$ac_cv_prog_cc_c89" != "xno" && break done @@ -3499,17 +3897,19 @@ fi # AC_CACHE_VAL case "x$ac_cv_prog_cc_c89" in x) - { echo "$as_me:$LINENO: result: none needed" >&5 -echo "${ECHO_T}none needed" >&6; } ;; + { $as_echo "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 +$as_echo "none needed" >&6; } ;; xno) - { echo "$as_me:$LINENO: result: unsupported" >&5 -echo "${ECHO_T}unsupported" >&6; } ;; + { $as_echo "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 +$as_echo "unsupported" >&6; } ;; *) CC="$CC $ac_cv_prog_cc_c89" - { echo "$as_me:$LINENO: result: $ac_cv_prog_cc_c89" >&5 -echo "${ECHO_T}$ac_cv_prog_cc_c89" >&6; } ;; + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c89" >&5 +$as_echo "$ac_cv_prog_cc_c89" >&6; } ;; esac +if test "x$ac_cv_prog_cc_c89" != xno; then : +fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' @@ -3524,50 +3924,51 @@ ac_config_commands="$ac_config_commands depfiles" am_make=${MAKE-make} cat > confinc << 'END' am__doit: - @echo done + @echo this is the am__doit target .PHONY: am__doit END # If we don't find an include directive, just comment out the code. -{ echo "$as_me:$LINENO: checking for style of include used by $am_make" >&5 -echo $ECHO_N "checking for style of include used by $am_make... $ECHO_C" >&6; } +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for style of include used by $am_make" >&5 +$as_echo_n "checking for style of include used by $am_make... " >&6; } am__include="#" am__quote= _am_result=none # First try GNU make style include. echo "include confinc" > confmf -# We grep out `Entering directory' and `Leaving directory' -# messages which can occur if `w' ends up in MAKEFLAGS. -# In particular we don't look at `^make:' because GNU make might -# be invoked under some other name (usually "gmake"), in which -# case it prints its new name instead of `make'. -if test "`$am_make -s -f confmf 2> /dev/null | grep -v 'ing directory'`" = "done"; then - am__include=include - am__quote= - _am_result=GNU -fi +# Ignore all kinds of additional output from `make'. +case `$am_make -s -f confmf 2> /dev/null` in #( +*the\ am__doit\ target*) + am__include=include + am__quote= + _am_result=GNU + ;; +esac # Now try BSD make style include. if test "$am__include" = "#"; then echo '.include "confinc"' > confmf - if test "`$am_make -s -f confmf 2> /dev/null`" = "done"; then - am__include=.include - am__quote="\"" - _am_result=BSD - fi + case `$am_make -s -f confmf 2> /dev/null` in #( + *the\ am__doit\ target*) + am__include=.include + am__quote="\"" + _am_result=BSD + ;; + esac fi -{ echo "$as_me:$LINENO: result: $_am_result" >&5 -echo "${ECHO_T}$_am_result" >&6; } +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $_am_result" >&5 +$as_echo "$_am_result" >&6; } rm -f confinc confmf # Check whether --enable-dependency-tracking was given. -if test "${enable_dependency_tracking+set}" = set; then +if test "${enable_dependency_tracking+set}" = set; then : enableval=$enable_dependency_tracking; fi if test "x$enable_dependency_tracking" != xno; then am_depcomp="$ac_aux_dir/depcomp" AMDEPBACKSLASH='\' + am__nodep='_no' fi if test "x$enable_dependency_tracking" != xno; then AMDEP_TRUE= @@ -3581,10 +3982,10 @@ fi depcc="$CC" am_compiler_list= -{ echo "$as_me:$LINENO: checking dependency style of $depcc" >&5 -echo $ECHO_N "checking dependency style of $depcc... $ECHO_C" >&6; } -if test "${am_cv_CC_dependencies_compiler_type+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking dependency style of $depcc" >&5 +$as_echo_n "checking dependency style of $depcc... " >&6; } +if ${am_cv_CC_dependencies_compiler_type+:} false; then : + $as_echo_n "(cached) " >&6 else if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then # We make a subdir and do the tests there. Otherwise we can end up @@ -3592,6 +3993,7 @@ else # instance it was reported that on HP-UX the gcc test will end up # making a dummy file named `D' -- because `-MD' means `put the output # in D'. + rm -rf conftest.dir mkdir conftest.dir # Copy depcomp to subdir because otherwise we won't find it if we're # using a relative directory. @@ -3609,6 +4011,11 @@ else if test "$am_compiler_list" = ""; then am_compiler_list=`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp` fi + am__universal=false + case " $depcc " in #( + *\ -arch\ *\ -arch\ *) am__universal=true ;; + esac + for depmode in $am_compiler_list; do # Setup a source with many dependencies, because some compilers # like to wrap large dependency lists on column 80 (with \), and @@ -3626,7 +4033,17 @@ else done echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf + # We check with `-c' and `-o' for the sake of the "dashmstdout" + # mode. It turns out that the SunPro C++ compiler does not properly + # handle `-M -o', and we need to detect this. Also, some Intel + # versions had trouble with output in subdirs + am__obj=sub/conftest.${OBJEXT-o} + am__minus_obj="-o $am__obj" case $depmode in + gcc) + # This depmode causes a compiler race in universal mode. + test "$am__universal" = false || continue + ;; nosideeffect) # after this tag, mechanisms are not by side-effect, so they'll # only be used when explicitly requested @@ -3636,19 +4053,23 @@ else break fi ;; + msvc7 | msvc7msys | msvisualcpp | msvcmsys) + # This compiler won't grok `-c -o', but also, the minuso test has + # not run yet. These depmodes are late enough in the game, and + # so weak that their functioning should not be impacted. + am__obj=conftest.${OBJEXT-o} + am__minus_obj= + ;; none) break ;; esac - # We check with `-c' and `-o' for the sake of the "dashmstdout" - # mode. It turns out that the SunPro C++ compiler does not properly - # handle `-M -o', and we need to detect this. if depmode=$depmode \ - source=sub/conftest.c object=sub/conftest.${OBJEXT-o} \ + source=sub/conftest.c object=$am__obj \ depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ - $SHELL ./depcomp $depcc -c -o sub/conftest.${OBJEXT-o} sub/conftest.c \ + $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \ >/dev/null 2>conftest.err && grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 && grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && - grep sub/conftest.${OBJEXT-o} sub/conftest.Po > /dev/null 2>&1 && + grep $am__obj sub/conftest.Po > /dev/null 2>&1 && ${MAKE-make} -s -f confmf > /dev/null 2>&1; then # icc doesn't choke on unknown options, it will just issue warnings # or remarks (even with -Werror). So we grep stderr for any message @@ -3672,8 +4093,8 @@ else fi fi -{ echo "$as_me:$LINENO: result: $am_cv_CC_dependencies_compiler_type" >&5 -echo "${ECHO_T}$am_cv_CC_dependencies_compiler_type" >&6; } +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_CC_dependencies_compiler_type" >&5 +$as_echo "$am_cv_CC_dependencies_compiler_type" >&6; } CCDEPMODE=depmode=$am_cv_CC_dependencies_compiler_type if @@ -3701,10 +4122,10 @@ if test -z "$CXX"; then do # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. set dummy $ac_tool_prefix$ac_prog; ac_word=$2 -{ echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } -if test "${ac_cv_prog_CXX+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_CXX+:} false; then : + $as_echo_n "(cached) " >&6 else if test -n "$CXX"; then ac_cv_prog_CXX="$CXX" # Let the user override the test. @@ -3714,25 +4135,25 @@ for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do + for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_CXX="$ac_tool_prefix$ac_prog" - echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done -done + done IFS=$as_save_IFS fi fi CXX=$ac_cv_prog_CXX if test -n "$CXX"; then - { echo "$as_me:$LINENO: result: $CXX" >&5 -echo "${ECHO_T}$CXX" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CXX" >&5 +$as_echo "$CXX" >&6; } else - { echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } fi @@ -3745,10 +4166,10 @@ if test -z "$CXX"; then do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 -{ echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } -if test "${ac_cv_prog_ac_ct_CXX+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_ac_ct_CXX+:} false; then : + $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_CXX"; then ac_cv_prog_ac_ct_CXX="$ac_ct_CXX" # Let the user override the test. @@ -3758,25 +4179,25 @@ for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do + for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_ac_ct_CXX="$ac_prog" - echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done -done + done IFS=$as_save_IFS fi fi ac_ct_CXX=$ac_cv_prog_ac_ct_CXX if test -n "$ac_ct_CXX"; then - { echo "$as_me:$LINENO: result: $ac_ct_CXX" >&5 -echo "${ECHO_T}$ac_ct_CXX" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CXX" >&5 +$as_echo "$ac_ct_CXX" >&6; } else - { echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } fi @@ -3788,12 +4209,8 @@ done else case $cross_compiling:$ac_tool_warned in yes:) -{ echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools -whose name does not start with the host triplet. If you think this -configuration is useful to you, please write to autoconf@gnu.org." >&5 -echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools -whose name does not start with the host triplet. If you think this -configuration is useful to you, please write to autoconf@gnu.org." >&2;} +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac CXX=$ac_ct_CXX @@ -3803,49 +4220,36 @@ fi fi fi # Provide some information about the compiler. -echo "$as_me:$LINENO: checking for C++ compiler version" >&5 -ac_compiler=`set X $ac_compile; echo $2` -{ (ac_try="$ac_compiler --version >&5" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compiler --version >&5") 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } -{ (ac_try="$ac_compiler -v >&5" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compiler -v >&5") 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } -{ (ac_try="$ac_compiler -V >&5" +$as_echo "$as_me:${as_lineno-$LINENO}: checking for C++ compiler version" >&5 +set X $ac_compile +ac_compiler=$2 +for ac_option in --version -v -V -qversion; do + { { ac_try="$ac_compiler $ac_option >&5" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compiler -V >&5") 2>&5 +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_compiler $ac_option >&5") 2>conftest.err ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } + if test -s conftest.err; then + sed '10a\ +... rest of stderr output deleted ... + 10q' conftest.err >conftest.er1 + cat conftest.er1 >&5 + fi + rm -f conftest.er1 conftest.err + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } +done -{ echo "$as_me:$LINENO: checking whether we are using the GNU C++ compiler" >&5 -echo $ECHO_N "checking whether we are using the GNU C++ compiler... $ECHO_C" >&6; } -if test "${ac_cv_cxx_compiler_gnu+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU C++ compiler" >&5 +$as_echo_n "checking whether we are using the GNU C++ compiler... " >&6; } +if ${ac_cv_cxx_compiler_gnu+:} false; then : + $as_echo_n "(cached) " >&6 else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF + cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int @@ -3859,54 +4263,34 @@ main () return 0; } _ACEOF -rm -f conftest.$ac_objext -if { (ac_try="$ac_compile" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compile") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_cxx_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then +if ac_fn_cxx_try_compile "$LINENO"; then : ac_compiler_gnu=yes else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_compiler_gnu=no + ac_compiler_gnu=no fi - rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ac_cv_cxx_compiler_gnu=$ac_compiler_gnu fi -{ echo "$as_me:$LINENO: result: $ac_cv_cxx_compiler_gnu" >&5 -echo "${ECHO_T}$ac_cv_cxx_compiler_gnu" >&6; } -GXX=`test $ac_compiler_gnu = yes && echo yes` +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_cxx_compiler_gnu" >&5 +$as_echo "$ac_cv_cxx_compiler_gnu" >&6; } +if test $ac_compiler_gnu = yes; then + GXX=yes +else + GXX= +fi ac_test_CXXFLAGS=${CXXFLAGS+set} ac_save_CXXFLAGS=$CXXFLAGS -{ echo "$as_me:$LINENO: checking whether $CXX accepts -g" >&5 -echo $ECHO_N "checking whether $CXX accepts -g... $ECHO_C" >&6; } -if test "${ac_cv_prog_cxx_g+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CXX accepts -g" >&5 +$as_echo_n "checking whether $CXX accepts -g... " >&6; } +if ${ac_cv_prog_cxx_g+:} false; then : + $as_echo_n "(cached) " >&6 else ac_save_cxx_werror_flag=$ac_cxx_werror_flag ac_cxx_werror_flag=yes ac_cv_prog_cxx_g=no CXXFLAGS="-g" - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF + cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int @@ -3917,34 +4301,11 @@ main () return 0; } _ACEOF -rm -f conftest.$ac_objext -if { (ac_try="$ac_compile" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compile") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_cxx_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then +if ac_fn_cxx_try_compile "$LINENO"; then : ac_cv_prog_cxx_g=yes else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - CXXFLAGS="" - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF + CXXFLAGS="" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int @@ -3955,35 +4316,12 @@ main () return 0; } _ACEOF -rm -f conftest.$ac_objext -if { (ac_try="$ac_compile" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compile") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_cxx_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then - : -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 +if ac_fn_cxx_try_compile "$LINENO"; then : - ac_cxx_werror_flag=$ac_save_cxx_werror_flag +else + ac_cxx_werror_flag=$ac_save_cxx_werror_flag CXXFLAGS="-g" - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF + cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int @@ -3994,42 +4332,18 @@ main () return 0; } _ACEOF -rm -f conftest.$ac_objext -if { (ac_try="$ac_compile" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compile") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_cxx_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then +if ac_fn_cxx_try_compile "$LINENO"; then : ac_cv_prog_cxx_g=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - fi - rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi - rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi - rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ac_cxx_werror_flag=$ac_save_cxx_werror_flag fi -{ echo "$as_me:$LINENO: result: $ac_cv_prog_cxx_g" >&5 -echo "${ECHO_T}$ac_cv_prog_cxx_g" >&6; } +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cxx_g" >&5 +$as_echo "$ac_cv_prog_cxx_g" >&6; } if test "$ac_test_CXXFLAGS" = set; then CXXFLAGS=$ac_save_CXXFLAGS elif test $ac_cv_prog_cxx_g = yes; then @@ -4053,10 +4367,10 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu depcc="$CXX" am_compiler_list= -{ echo "$as_me:$LINENO: checking dependency style of $depcc" >&5 -echo $ECHO_N "checking dependency style of $depcc... $ECHO_C" >&6; } -if test "${am_cv_CXX_dependencies_compiler_type+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking dependency style of $depcc" >&5 +$as_echo_n "checking dependency style of $depcc... " >&6; } +if ${am_cv_CXX_dependencies_compiler_type+:} false; then : + $as_echo_n "(cached) " >&6 else if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then # We make a subdir and do the tests there. Otherwise we can end up @@ -4064,6 +4378,7 @@ else # instance it was reported that on HP-UX the gcc test will end up # making a dummy file named `D' -- because `-MD' means `put the output # in D'. + rm -rf conftest.dir mkdir conftest.dir # Copy depcomp to subdir because otherwise we won't find it if we're # using a relative directory. @@ -4081,6 +4396,11 @@ else if test "$am_compiler_list" = ""; then am_compiler_list=`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp` fi + am__universal=false + case " $depcc " in #( + *\ -arch\ *\ -arch\ *) am__universal=true ;; + esac + for depmode in $am_compiler_list; do # Setup a source with many dependencies, because some compilers # like to wrap large dependency lists on column 80 (with \), and @@ -4098,7 +4418,17 @@ else done echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf + # We check with `-c' and `-o' for the sake of the "dashmstdout" + # mode. It turns out that the SunPro C++ compiler does not properly + # handle `-M -o', and we need to detect this. Also, some Intel + # versions had trouble with output in subdirs + am__obj=sub/conftest.${OBJEXT-o} + am__minus_obj="-o $am__obj" case $depmode in + gcc) + # This depmode causes a compiler race in universal mode. + test "$am__universal" = false || continue + ;; nosideeffect) # after this tag, mechanisms are not by side-effect, so they'll # only be used when explicitly requested @@ -4108,19 +4438,23 @@ else break fi ;; + msvc7 | msvc7msys | msvisualcpp | msvcmsys) + # This compiler won't grok `-c -o', but also, the minuso test has + # not run yet. These depmodes are late enough in the game, and + # so weak that their functioning should not be impacted. + am__obj=conftest.${OBJEXT-o} + am__minus_obj= + ;; none) break ;; esac - # We check with `-c' and `-o' for the sake of the "dashmstdout" - # mode. It turns out that the SunPro C++ compiler does not properly - # handle `-M -o', and we need to detect this. if depmode=$depmode \ - source=sub/conftest.c object=sub/conftest.${OBJEXT-o} \ + source=sub/conftest.c object=$am__obj \ depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ - $SHELL ./depcomp $depcc -c -o sub/conftest.${OBJEXT-o} sub/conftest.c \ + $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \ >/dev/null 2>conftest.err && grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 && grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && - grep sub/conftest.${OBJEXT-o} sub/conftest.Po > /dev/null 2>&1 && + grep $am__obj sub/conftest.Po > /dev/null 2>&1 && ${MAKE-make} -s -f confmf > /dev/null 2>&1; then # icc doesn't choke on unknown options, it will just issue warnings # or remarks (even with -Werror). So we grep stderr for any message @@ -4144,8 +4478,8 @@ else fi fi -{ echo "$as_me:$LINENO: result: $am_cv_CXX_dependencies_compiler_type" >&5 -echo "${ECHO_T}$am_cv_CXX_dependencies_compiler_type" >&6; } +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_CXX_dependencies_compiler_type" >&5 +$as_echo "$am_cv_CXX_dependencies_compiler_type" >&6; } CXXDEPMODE=depmode=$am_cv_CXX_dependencies_compiler_type if @@ -4166,22 +4500,16 @@ ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ex ac_compiler_gnu=$ac_cv_cxx_compiler_gnu -cat >>confdefs.h <<\_ACEOF -#define _GNU_SOURCE 1 -_ACEOF - - - ac_ext=cpp ac_cpp='$CXXCPP $CPPFLAGS' ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_cxx_compiler_gnu -{ echo "$as_me:$LINENO: checking how to run the C++ preprocessor" >&5 -echo $ECHO_N "checking how to run the C++ preprocessor... $ECHO_C" >&6; } +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to run the C++ preprocessor" >&5 +$as_echo_n "checking how to run the C++ preprocessor... " >&6; } if test -z "$CXXCPP"; then - if test "${ac_cv_prog_CXXCPP+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 + if ${ac_cv_prog_CXXCPP+:} false; then : + $as_echo_n "(cached) " >&6 else # Double quotes because CXXCPP needs to be expanded for CXXCPP in "$CXX -E" "/lib/cpp" @@ -4195,11 +4523,7 @@ do # exists even on freestanding compilers. # On the NeXT, cc -E runs the code through the compiler's parser, # not just through cpp. "Syntax error" is here to catch this case. - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF + cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #ifdef __STDC__ # include @@ -4208,76 +4532,34 @@ cat >>conftest.$ac_ext <<_ACEOF #endif Syntax error _ACEOF -if { (ac_try="$ac_cpp conftest.$ac_ext" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } >/dev/null && { - test -z "$ac_cxx_preproc_warn_flag$ac_cxx_werror_flag" || - test ! -s conftest.err - }; then - : -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 +if ac_fn_cxx_try_cpp "$LINENO"; then : +else # Broken: fails on valid input. continue fi - -rm -f conftest.err conftest.$ac_ext +rm -f conftest.err conftest.i conftest.$ac_ext # OK, works on sane cases. Now check whether nonexistent headers # can be detected and how. - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF + cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include _ACEOF -if { (ac_try="$ac_cpp conftest.$ac_ext" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } >/dev/null && { - test -z "$ac_cxx_preproc_warn_flag$ac_cxx_werror_flag" || - test ! -s conftest.err - }; then +if ac_fn_cxx_try_cpp "$LINENO"; then : # Broken: success on invalid input. continue else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - # Passes both tests. ac_preproc_ok=: break fi - -rm -f conftest.err conftest.$ac_ext +rm -f conftest.err conftest.i conftest.$ac_ext done # Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. -rm -f conftest.err conftest.$ac_ext -if $ac_preproc_ok; then +rm -f conftest.i conftest.err conftest.$ac_ext +if $ac_preproc_ok; then : break fi @@ -4289,8 +4571,8 @@ fi else ac_cv_prog_CXXCPP=$CXXCPP fi -{ echo "$as_me:$LINENO: result: $CXXCPP" >&5 -echo "${ECHO_T}$CXXCPP" >&6; } +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $CXXCPP" >&5 +$as_echo "$CXXCPP" >&6; } ac_preproc_ok=false for ac_cxx_preproc_warn_flag in '' yes do @@ -4300,11 +4582,7 @@ do # exists even on freestanding compilers. # On the NeXT, cc -E runs the code through the compiler's parser, # not just through cpp. "Syntax error" is here to catch this case. - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF + cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #ifdef __STDC__ # include @@ -4313,83 +4591,40 @@ cat >>conftest.$ac_ext <<_ACEOF #endif Syntax error _ACEOF -if { (ac_try="$ac_cpp conftest.$ac_ext" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } >/dev/null && { - test -z "$ac_cxx_preproc_warn_flag$ac_cxx_werror_flag" || - test ! -s conftest.err - }; then - : -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 +if ac_fn_cxx_try_cpp "$LINENO"; then : +else # Broken: fails on valid input. continue fi - -rm -f conftest.err conftest.$ac_ext +rm -f conftest.err conftest.i conftest.$ac_ext # OK, works on sane cases. Now check whether nonexistent headers # can be detected and how. - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF + cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include _ACEOF -if { (ac_try="$ac_cpp conftest.$ac_ext" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } >/dev/null && { - test -z "$ac_cxx_preproc_warn_flag$ac_cxx_werror_flag" || - test ! -s conftest.err - }; then +if ac_fn_cxx_try_cpp "$LINENO"; then : # Broken: success on invalid input. continue else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - # Passes both tests. ac_preproc_ok=: break fi - -rm -f conftest.err conftest.$ac_ext +rm -f conftest.err conftest.i conftest.$ac_ext done # Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. -rm -f conftest.err conftest.$ac_ext -if $ac_preproc_ok; then - : +rm -f conftest.i conftest.err conftest.$ac_ext +if $ac_preproc_ok; then : + else - { { echo "$as_me:$LINENO: error: C++ preprocessor \"$CXXCPP\" fails sanity check -See \`config.log' for more details." >&5 -echo "$as_me: error: C++ preprocessor \"$CXXCPP\" fails sanity check -See \`config.log' for more details." >&2;} - { (exit 1); exit 1; }; } + { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error $? "C++ preprocessor \"$CXXCPP\" fails sanity check +See \`config.log' for more details" "$LINENO" 5; } fi ac_ext=cpp @@ -4399,45 +4634,40 @@ ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ex ac_compiler_gnu=$ac_cv_cxx_compiler_gnu -{ echo "$as_me:$LINENO: checking for grep that handles long lines and -e" >&5 -echo $ECHO_N "checking for grep that handles long lines and -e... $ECHO_C" >&6; } -if test "${ac_cv_path_GREP+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - # Extract the first word of "grep ggrep" to use in msg output -if test -z "$GREP"; then -set dummy grep ggrep; ac_prog_name=$2 -if test "${ac_cv_path_GREP+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for grep that handles long lines and -e" >&5 +$as_echo_n "checking for grep that handles long lines and -e... " >&6; } +if ${ac_cv_path_GREP+:} false; then : + $as_echo_n "(cached) " >&6 else + if test -z "$GREP"; then ac_path_GREP_found=false -# Loop through the user's path and test for each of PROGNAME-LIST -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR + # Loop through the user's path and test for each of PROGNAME-LIST + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. - for ac_prog in grep ggrep; do - for ac_exec_ext in '' $ac_executable_extensions; do - ac_path_GREP="$as_dir/$ac_prog$ac_exec_ext" - { test -f "$ac_path_GREP" && $as_test_x "$ac_path_GREP"; } || continue - # Check for GNU ac_path_GREP and select it if it is found. + for ac_prog in grep ggrep; do + for ac_exec_ext in '' $ac_executable_extensions; do + ac_path_GREP="$as_dir/$ac_prog$ac_exec_ext" + { test -f "$ac_path_GREP" && $as_test_x "$ac_path_GREP"; } || continue +# Check for GNU ac_path_GREP and select it if it is found. # Check for GNU $ac_path_GREP case `"$ac_path_GREP" --version 2>&1` in *GNU*) ac_cv_path_GREP="$ac_path_GREP" ac_path_GREP_found=:;; *) ac_count=0 - echo $ECHO_N "0123456789$ECHO_C" >"conftest.in" + $as_echo_n 0123456789 >"conftest.in" while : do cat "conftest.in" "conftest.in" >"conftest.tmp" mv "conftest.tmp" "conftest.in" cp "conftest.in" "conftest.nl" - echo 'GREP' >> "conftest.nl" + $as_echo 'GREP' >> "conftest.nl" "$ac_path_GREP" -e 'GREP$' -e '-(cannot match)-' < "conftest.nl" >"conftest.out" 2>/dev/null || break diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break - ac_count=`expr $ac_count + 1` + as_fn_arith $ac_count + 1 && ac_count=$as_val if test $ac_count -gt ${ac_path_GREP_max-0}; then # Best one so far, save it but keep looking for a better one ac_cv_path_GREP="$ac_path_GREP" @@ -4449,77 +4679,61 @@ case `"$ac_path_GREP" --version 2>&1` in rm -f conftest.in conftest.tmp conftest.nl conftest.out;; esac - - $ac_path_GREP_found && break 3 + $ac_path_GREP_found && break 3 + done + done done -done - -done IFS=$as_save_IFS - - -fi - -GREP="$ac_cv_path_GREP" -if test -z "$GREP"; then - { { echo "$as_me:$LINENO: error: no acceptable $ac_prog_name could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" >&5 -echo "$as_me: error: no acceptable $ac_prog_name could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" >&2;} - { (exit 1); exit 1; }; } -fi - + if test -z "$ac_cv_path_GREP"; then + as_fn_error $? "no acceptable grep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5 + fi else ac_cv_path_GREP=$GREP fi - fi -{ echo "$as_me:$LINENO: result: $ac_cv_path_GREP" >&5 -echo "${ECHO_T}$ac_cv_path_GREP" >&6; } +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_GREP" >&5 +$as_echo "$ac_cv_path_GREP" >&6; } GREP="$ac_cv_path_GREP" -{ echo "$as_me:$LINENO: checking for egrep" >&5 -echo $ECHO_N "checking for egrep... $ECHO_C" >&6; } -if test "${ac_cv_path_EGREP+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for egrep" >&5 +$as_echo_n "checking for egrep... " >&6; } +if ${ac_cv_path_EGREP+:} false; then : + $as_echo_n "(cached) " >&6 else if echo a | $GREP -E '(a|b)' >/dev/null 2>&1 then ac_cv_path_EGREP="$GREP -E" else - # Extract the first word of "egrep" to use in msg output -if test -z "$EGREP"; then -set dummy egrep; ac_prog_name=$2 -if test "${ac_cv_path_EGREP+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else + if test -z "$EGREP"; then ac_path_EGREP_found=false -# Loop through the user's path and test for each of PROGNAME-LIST -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR + # Loop through the user's path and test for each of PROGNAME-LIST + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. - for ac_prog in egrep; do - for ac_exec_ext in '' $ac_executable_extensions; do - ac_path_EGREP="$as_dir/$ac_prog$ac_exec_ext" - { test -f "$ac_path_EGREP" && $as_test_x "$ac_path_EGREP"; } || continue - # Check for GNU ac_path_EGREP and select it if it is found. + for ac_prog in egrep; do + for ac_exec_ext in '' $ac_executable_extensions; do + ac_path_EGREP="$as_dir/$ac_prog$ac_exec_ext" + { test -f "$ac_path_EGREP" && $as_test_x "$ac_path_EGREP"; } || continue +# Check for GNU ac_path_EGREP and select it if it is found. # Check for GNU $ac_path_EGREP case `"$ac_path_EGREP" --version 2>&1` in *GNU*) ac_cv_path_EGREP="$ac_path_EGREP" ac_path_EGREP_found=:;; *) ac_count=0 - echo $ECHO_N "0123456789$ECHO_C" >"conftest.in" + $as_echo_n 0123456789 >"conftest.in" while : do cat "conftest.in" "conftest.in" >"conftest.tmp" mv "conftest.tmp" "conftest.in" cp "conftest.in" "conftest.nl" - echo 'EGREP' >> "conftest.nl" + $as_echo 'EGREP' >> "conftest.nl" "$ac_path_EGREP" 'EGREP$' < "conftest.nl" >"conftest.out" 2>/dev/null || break diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break - ac_count=`expr $ac_count + 1` + as_fn_arith $ac_count + 1 && ac_count=$as_val if test $ac_count -gt ${ac_path_EGREP_max-0}; then # Best one so far, save it but keep looking for a better one ac_cv_path_EGREP="$ac_path_EGREP" @@ -4531,75 +4745,31 @@ case `"$ac_path_EGREP" --version 2>&1` in rm -f conftest.in conftest.tmp conftest.nl conftest.out;; esac - - $ac_path_EGREP_found && break 3 + $ac_path_EGREP_found && break 3 + done + done done -done - -done IFS=$as_save_IFS - - -fi - -EGREP="$ac_cv_path_EGREP" -if test -z "$EGREP"; then - { { echo "$as_me:$LINENO: error: no acceptable $ac_prog_name could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" >&5 -echo "$as_me: error: no acceptable $ac_prog_name could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" >&2;} - { (exit 1); exit 1; }; } -fi - + if test -z "$ac_cv_path_EGREP"; then + as_fn_error $? "no acceptable egrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5 + fi else ac_cv_path_EGREP=$EGREP fi - fi fi -{ echo "$as_me:$LINENO: result: $ac_cv_path_EGREP" >&5 -echo "${ECHO_T}$ac_cv_path_EGREP" >&6; } +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_EGREP" >&5 +$as_echo "$ac_cv_path_EGREP" >&6; } EGREP="$ac_cv_path_EGREP" - -{ echo "$as_me:$LINENO: checking for AIX" >&5 -echo $ECHO_N "checking for AIX... $ECHO_C" >&6; } -cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -#ifdef _AIX - yes -#endif - -_ACEOF -if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - $EGREP "yes" >/dev/null 2>&1; then - { echo "$as_me:$LINENO: result: yes" >&5 -echo "${ECHO_T}yes" >&6; } -cat >>confdefs.h <<\_ACEOF -#define _ALL_SOURCE 1 -_ACEOF - -else - { echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6; } -fi -rm -f conftest* - - -{ echo "$as_me:$LINENO: checking for ANSI C header files" >&5 -echo $ECHO_N "checking for ANSI C header files... $ECHO_C" >&6; } -if test "${ac_cv_header_stdc+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for ANSI C header files" >&5 +$as_echo_n "checking for ANSI C header files... " >&6; } +if ${ac_cv_header_stdc+:} false; then : + $as_echo_n "(cached) " >&6 else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF + cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include @@ -4614,402 +4784,143 @@ main () return 0; } _ACEOF -rm -f conftest.$ac_objext -if { (ac_try="$ac_compile" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compile") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_cxx_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then +if ac_fn_cxx_try_compile "$LINENO"; then : ac_cv_header_stdc=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_cv_header_stdc=no -fi - -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext - -if test $ac_cv_header_stdc = yes; then - # SunOS 4.x string.h does not declare mem*, contrary to ANSI. - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -#include - -_ACEOF -if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - $EGREP "memchr" >/dev/null 2>&1; then - : -else - ac_cv_header_stdc=no -fi -rm -f conftest* - -fi - -if test $ac_cv_header_stdc = yes; then - # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI. - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -#include - -_ACEOF -if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - $EGREP "free" >/dev/null 2>&1; then - : else ac_cv_header_stdc=no fi -rm -f conftest* - -fi - -if test $ac_cv_header_stdc = yes; then - # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi. - if test "$cross_compiling" = yes; then - : -else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -#include -#include -#if ((' ' & 0x0FF) == 0x020) -# define ISLOWER(c) ('a' <= (c) && (c) <= 'z') -# define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c)) -#else -# define ISLOWER(c) \ - (('a' <= (c) && (c) <= 'i') \ - || ('j' <= (c) && (c) <= 'r') \ - || ('s' <= (c) && (c) <= 'z')) -# define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c)) -#endif - -#define XOR(e, f) (((e) && !(f)) || (!(e) && (f))) -int -main () -{ - int i; - for (i = 0; i < 256; i++) - if (XOR (islower (i), ISLOWER (i)) - || toupper (i) != TOUPPER (i)) - return 2; - return 0; -} -_ACEOF -rm -f conftest$ac_exeext -if { (ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_link") 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { ac_try='./conftest$ac_exeext' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - : -else - echo "$as_me: program exited with status $ac_status" >&5 -echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -( exit $ac_status ) -ac_cv_header_stdc=no -fi -rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext -fi - - -fi -fi -{ echo "$as_me:$LINENO: result: $ac_cv_header_stdc" >&5 -echo "${ECHO_T}$ac_cv_header_stdc" >&6; } -if test $ac_cv_header_stdc = yes; then - -cat >>confdefs.h <<\_ACEOF -#define STDC_HEADERS 1 -_ACEOF - -fi - -# On IRIX 5.3, sys/types and inttypes.h are conflicting. - - - - - - - - - -for ac_header in sys/types.h sys/stat.h stdlib.h string.h memory.h strings.h \ - inttypes.h stdint.h unistd.h -do -as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` -{ echo "$as_me:$LINENO: checking for $ac_header" >&5 -echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; } -if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -$ac_includes_default - -#include <$ac_header> -_ACEOF -rm -f conftest.$ac_objext -if { (ac_try="$ac_compile" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compile") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_cxx_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then - eval "$as_ac_Header=yes" -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - eval "$as_ac_Header=no" -fi - -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -fi -ac_res=`eval echo '${'$as_ac_Header'}'` - { echo "$as_me:$LINENO: result: $ac_res" >&5 -echo "${ECHO_T}$ac_res" >&6; } -if test `eval echo '${'$as_ac_Header'}'` = yes; then - cat >>confdefs.h <<_ACEOF -#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 -_ACEOF - -fi - -done - +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -if test "${ac_cv_header_minix_config_h+set}" = set; then - { echo "$as_me:$LINENO: checking for minix/config.h" >&5 -echo $ECHO_N "checking for minix/config.h... $ECHO_C" >&6; } -if test "${ac_cv_header_minix_config_h+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -fi -{ echo "$as_me:$LINENO: result: $ac_cv_header_minix_config_h" >&5 -echo "${ECHO_T}$ac_cv_header_minix_config_h" >&6; } -else - # Is the header compilable? -{ echo "$as_me:$LINENO: checking minix/config.h usability" >&5 -echo $ECHO_N "checking minix/config.h usability... $ECHO_C" >&6; } -cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF +if test $ac_cv_header_stdc = yes; then + # SunOS 4.x string.h does not declare mem*, contrary to ANSI. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ -$ac_includes_default -#include +#include + _ACEOF -rm -f conftest.$ac_objext -if { (ac_try="$ac_compile" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compile") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_cxx_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then - ac_header_compiler=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + $EGREP "memchr" >/dev/null 2>&1; then : - ac_header_compiler=no +else + ac_cv_header_stdc=no fi +rm -f conftest* -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -{ echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 -echo "${ECHO_T}$ac_header_compiler" >&6; } +fi -# Is the header present? -{ echo "$as_me:$LINENO: checking minix/config.h presence" >&5 -echo $ECHO_N "checking minix/config.h presence... $ECHO_C" >&6; } -cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF +if test $ac_cv_header_stdc = yes; then + # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ -#include +#include + _ACEOF -if { (ac_try="$ac_cpp conftest.$ac_ext" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } >/dev/null && { - test -z "$ac_cxx_preproc_warn_flag$ac_cxx_werror_flag" || - test ! -s conftest.err - }; then - ac_header_preproc=yes +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + $EGREP "free" >/dev/null 2>&1; then : + else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 + ac_cv_header_stdc=no +fi +rm -f conftest* - ac_header_preproc=no fi -rm -f conftest.err conftest.$ac_ext -{ echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 -echo "${ECHO_T}$ac_header_preproc" >&6; } +if test $ac_cv_header_stdc = yes; then + # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi. + if test "$cross_compiling" = yes; then : + : +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +#include +#if ((' ' & 0x0FF) == 0x020) +# define ISLOWER(c) ('a' <= (c) && (c) <= 'z') +# define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c)) +#else +# define ISLOWER(c) \ + (('a' <= (c) && (c) <= 'i') \ + || ('j' <= (c) && (c) <= 'r') \ + || ('s' <= (c) && (c) <= 'z')) +# define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c)) +#endif + +#define XOR(e, f) (((e) && !(f)) || (!(e) && (f))) +int +main () +{ + int i; + for (i = 0; i < 256; i++) + if (XOR (islower (i), ISLOWER (i)) + || toupper (i) != TOUPPER (i)) + return 2; + return 0; +} +_ACEOF +if ac_fn_cxx_try_run "$LINENO"; then : -# So? What about this header? -case $ac_header_compiler:$ac_header_preproc:$ac_cxx_preproc_warn_flag in - yes:no: ) - { echo "$as_me:$LINENO: WARNING: minix/config.h: accepted by the compiler, rejected by the preprocessor!" >&5 -echo "$as_me: WARNING: minix/config.h: accepted by the compiler, rejected by the preprocessor!" >&2;} - { echo "$as_me:$LINENO: WARNING: minix/config.h: proceeding with the compiler's result" >&5 -echo "$as_me: WARNING: minix/config.h: proceeding with the compiler's result" >&2;} - ac_header_preproc=yes - ;; - no:yes:* ) - { echo "$as_me:$LINENO: WARNING: minix/config.h: present but cannot be compiled" >&5 -echo "$as_me: WARNING: minix/config.h: present but cannot be compiled" >&2;} - { echo "$as_me:$LINENO: WARNING: minix/config.h: check for missing prerequisite headers?" >&5 -echo "$as_me: WARNING: minix/config.h: check for missing prerequisite headers?" >&2;} - { echo "$as_me:$LINENO: WARNING: minix/config.h: see the Autoconf documentation" >&5 -echo "$as_me: WARNING: minix/config.h: see the Autoconf documentation" >&2;} - { echo "$as_me:$LINENO: WARNING: minix/config.h: section \"Present But Cannot Be Compiled\"" >&5 -echo "$as_me: WARNING: minix/config.h: section \"Present But Cannot Be Compiled\"" >&2;} - { echo "$as_me:$LINENO: WARNING: minix/config.h: proceeding with the preprocessor's result" >&5 -echo "$as_me: WARNING: minix/config.h: proceeding with the preprocessor's result" >&2;} - { echo "$as_me:$LINENO: WARNING: minix/config.h: in the future, the compiler will take precedence" >&5 -echo "$as_me: WARNING: minix/config.h: in the future, the compiler will take precedence" >&2;} - ( cat <<\_ASBOX -## ---------------------------------------- ## -## Report this to protobuf@googlegroups.com ## -## ---------------------------------------- ## -_ASBOX - ) | sed "s/^/$as_me: WARNING: /" >&2 - ;; -esac -{ echo "$as_me:$LINENO: checking for minix/config.h" >&5 -echo $ECHO_N "checking for minix/config.h... $ECHO_C" >&6; } -if test "${ac_cv_header_minix_config_h+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 else - ac_cv_header_minix_config_h=$ac_header_preproc + ac_cv_header_stdc=no +fi +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ + conftest.$ac_objext conftest.beam conftest.$ac_ext fi -{ echo "$as_me:$LINENO: result: $ac_cv_header_minix_config_h" >&5 -echo "${ECHO_T}$ac_cv_header_minix_config_h" >&6; } fi -if test $ac_cv_header_minix_config_h = yes; then - MINIX=yes -else - MINIX= fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_stdc" >&5 +$as_echo "$ac_cv_header_stdc" >&6; } +if test $ac_cv_header_stdc = yes; then +$as_echo "#define STDC_HEADERS 1" >>confdefs.h -if test "$MINIX" = yes; then +fi -cat >>confdefs.h <<\_ACEOF -#define _POSIX_SOURCE 1 +# On IRIX 5.3, sys/types and inttypes.h are conflicting. +for ac_header in sys/types.h sys/stat.h stdlib.h string.h memory.h strings.h \ + inttypes.h stdint.h unistd.h +do : + as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` +ac_fn_cxx_check_header_compile "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default +" +if eval test \"x\$"$as_ac_Header"\" = x"yes"; then : + cat >>confdefs.h <<_ACEOF +#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 _ACEOF +fi -cat >>confdefs.h <<\_ACEOF -#define _POSIX_1_SOURCE 2 -_ACEOF +done -cat >>confdefs.h <<\_ACEOF -#define _MINIX 1 -_ACEOF + ac_fn_cxx_check_header_mongrel "$LINENO" "minix/config.h" "ac_cv_header_minix_config_h" "$ac_includes_default" +if test "x$ac_cv_header_minix_config_h" = xyes; then : + MINIX=yes +else + MINIX= fi + if test "$MINIX" = yes; then +$as_echo "#define _POSIX_SOURCE 1" >>confdefs.h +$as_echo "#define _POSIX_1_SOURCE 2" >>confdefs.h +$as_echo "#define _MINIX 1" >>confdefs.h + fi - - - - { echo "$as_me:$LINENO: checking whether it is safe to define __EXTENSIONS__" >&5 -echo $ECHO_N "checking whether it is safe to define __EXTENSIONS__... $ECHO_C" >&6; } -if test "${ac_cv_safe_to_define___extensions__+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether it is safe to define __EXTENSIONS__" >&5 +$as_echo_n "checking whether it is safe to define __EXTENSIONS__... " >&6; } +if ${ac_cv_safe_to_define___extensions__+:} false; then : + $as_echo_n "(cached) " >&6 else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF + cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ # define __EXTENSIONS__ 1 @@ -5022,47 +4933,28 @@ main () return 0; } _ACEOF -rm -f conftest.$ac_objext -if { (ac_try="$ac_compile" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compile") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_cxx_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then +if ac_fn_cxx_try_compile "$LINENO"; then : ac_cv_safe_to_define___extensions__=yes else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_cv_safe_to_define___extensions__=no + ac_cv_safe_to_define___extensions__=no fi - rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi -{ echo "$as_me:$LINENO: result: $ac_cv_safe_to_define___extensions__" >&5 -echo "${ECHO_T}$ac_cv_safe_to_define___extensions__" >&6; } +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_safe_to_define___extensions__" >&5 +$as_echo "$ac_cv_safe_to_define___extensions__" >&6; } test $ac_cv_safe_to_define___extensions__ = yes && - cat >>confdefs.h <<\_ACEOF -#define __EXTENSIONS__ 1 -_ACEOF + $as_echo "#define __EXTENSIONS__ 1" >>confdefs.h + + $as_echo "#define _ALL_SOURCE 1" >>confdefs.h + + $as_echo "#define _GNU_SOURCE 1" >>confdefs.h + + $as_echo "#define _POSIX_PTHREAD_SEMANTICS 1" >>confdefs.h + + $as_echo "#define _TANDEM_SOURCE 1" >>confdefs.h + - cat >>confdefs.h <<\_ACEOF -#define _POSIX_PTHREAD_SEMANTICS 1 -_ACEOF - cat >>confdefs.h <<\_ACEOF -#define _TANDEM_SOURCE 1 -_ACEOF @@ -5077,30 +4969,29 @@ fi # let the Makefile know if we're gcc # test_util.cc takes forever to compile with GCC and optimization turned on. -{ echo "$as_me:$LINENO: checking C++ compiler flags..." >&5 -echo $ECHO_N "checking C++ compiler flags...... $ECHO_C" >&6; } -if test "x${ac_cv_env_CXXFLAGS_set}" = "x"; then +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking C++ compiler flags..." >&5 +$as_echo_n "checking C++ compiler flags...... " >&6; } +if test "x${ac_cv_env_CXXFLAGS_set}" = "x"; then : - if test "$GCC" = "yes"; then + if test "$GCC" = "yes"; then : PROTOBUF_OPT_FLAG="-O2" CXXFLAGS="${CXXFLAGS} -g" fi - # Protocol Buffers contains several checks that are intended to be used only # for debugging and which might hurt performance. Most users are probably # end users who don't want these checks, so add -DNDEBUG by default. CXXFLAGS="$CXXFLAGS -DNDEBUG" - { echo "$as_me:$LINENO: result: use default: $PROTOBUF_OPT_FLAG $CXXFLAGS" >&5 -echo "${ECHO_T}use default: $PROTOBUF_OPT_FLAG $CXXFLAGS" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: use default: $PROTOBUF_OPT_FLAG $CXXFLAGS" >&5 +$as_echo "use default: $PROTOBUF_OPT_FLAG $CXXFLAGS" >&6; } else - { echo "$as_me:$LINENO: result: use user-supplied: $CXXFLAGS" >&5 -echo "${ECHO_T}use user-supplied: $CXXFLAGS" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: use user-supplied: $CXXFLAGS" >&5 +$as_echo "use user-supplied: $CXXFLAGS" >&6; } fi @@ -5108,66 +4999,14 @@ fi - ac_ext=cpp ac_cpp='$CXXCPP $CPPFLAGS' ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_cxx_compiler_gnu - { echo "$as_me:$LINENO: checking whether __SUNPRO_CC is declared" >&5 -echo $ECHO_N "checking whether __SUNPRO_CC is declared... $ECHO_C" >&6; } -if test "${ac_cv_have_decl___SUNPRO_CC+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -$ac_includes_default -int -main () -{ -#ifndef __SUNPRO_CC - (void) __SUNPRO_CC; -#endif - - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (ac_try="$ac_compile" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compile") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_cxx_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then - ac_cv_have_decl___SUNPRO_CC=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_cv_have_decl___SUNPRO_CC=no -fi - -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -fi -{ echo "$as_me:$LINENO: result: $ac_cv_have_decl___SUNPRO_CC" >&5 -echo "${ECHO_T}$ac_cv_have_decl___SUNPRO_CC" >&6; } -if test $ac_cv_have_decl___SUNPRO_CC = yes; then + ac_fn_cxx_check_decl "$LINENO" "__SUNPRO_CC" "ac_cv_have_decl___SUNPRO_CC" "$ac_includes_default" +if test "x$ac_cv_have_decl___SUNPRO_CC" = xyes; then : SUNCC="yes" else SUNCC="no" @@ -5182,30 +5021,29 @@ ac_compiler_gnu=$ac_cv_cxx_compiler_gnu # Check whether --enable-64bit-solaris was given. -if test "${enable_64bit_solaris+set}" = set; then +if test "${enable_64bit_solaris+set}" = set; then : enableval=$enable_64bit_solaris; ac_enable_64bit="$enableval" else ac_enable_64bit="yes" fi - if test "$SUNCC" = "yes" -a "x${ac_cv_env_CXXFLAGS_set}" = "x"; then + if test "$SUNCC" = "yes" -a "x${ac_cv_env_CXXFLAGS_set}" = "x"; then : CXXFLAGS="-g0 -xO3 -xlibmil -xdepend -xbuiltin -mt -compat=5 -library=stlport4 -library=Crun -template=no%extdef ${CXXFLAGS}" fi - case $host_os in *solaris*) for ac_prog in isainfo do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 -{ echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } -if test "${ac_cv_prog_ISAINFO+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_ISAINFO+:} false; then : + $as_echo_n "(cached) " >&6 else if test -n "$ISAINFO"; then ac_cv_prog_ISAINFO="$ISAINFO" # Let the user override the test. @@ -5215,25 +5053,25 @@ for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do + for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_ISAINFO="$ac_prog" - echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done -done + done IFS=$as_save_IFS fi fi ISAINFO=$ac_cv_prog_ISAINFO if test -n "$ISAINFO"; then - { echo "$as_me:$LINENO: result: $ISAINFO" >&5 -echo "${ECHO_T}$ISAINFO" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ISAINFO" >&5 +$as_echo "$ISAINFO" >&6; } else - { echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } fi @@ -5241,29 +5079,27 @@ fi done test -n "$ISAINFO" || ISAINFO="no" - if test "x$ISAINFO" != "xno"; then + if test "x$ISAINFO" != "xno"; then : isainfo_b=`${ISAINFO} -b` else isainfo_b="x" fi - - if test "$isainfo_b" != "x"; then + if test "$isainfo_b" != "x"; then : isainfo_k=`${ISAINFO} -k` - if test "x$ac_enable_64bit" = "xyes"; then + if test "x$ac_enable_64bit" = "xyes"; then : - if test "x$libdir" = "x\${exec_prefix}/lib"; then + if test "x$libdir" = "x\${exec_prefix}/lib"; then : libdir="${libdir}/${isainfo_k}" fi - - if test "x${ac_cv_env_CXXFLAGS_set}" = "x"; then + if test "x${ac_cv_env_CXXFLAGS_set}" = "x"; then : CXXFLAGS="${CXXFLAGS} -m64" ac_cv_env_CXXFLAGS_set=set @@ -5271,8 +5107,7 @@ fi fi - - if test "x${ac_cv_env_CFLAGS_set}" = "x"; then + if test "x${ac_cv_env_CFLAGS_set}" = "x"; then : CFLAGS="${CFLAGS} -m64" ac_cv_env_CFLAGS_set=set @@ -5280,19 +5115,15 @@ fi fi - - if test "$target_cpu" = "sparc" -a "x$SUNCC" = "xyes" ; then + if test "$target_cpu" = "sparc" -a "x$SUNCC" = "xyes" ; then : CXXFLAGS="-xmemalign=8s ${CXXFLAGS}" fi - fi - fi - ;; esac @@ -5302,14 +5133,14 @@ fi # to the link case `pwd` in *\ * | *\ *) - { echo "$as_me:$LINENO: WARNING: Libtool does not cope well with whitespace in \`pwd\`" >&5 -echo "$as_me: WARNING: Libtool does not cope well with whitespace in \`pwd\`" >&2;} ;; + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Libtool does not cope well with whitespace in \`pwd\`" >&5 +$as_echo "$as_me: WARNING: Libtool does not cope well with whitespace in \`pwd\`" >&2;} ;; esac -macro_version='2.2.4' -macro_revision='1.2976' +macro_version='2.4.2' +macro_revision='1.3337' @@ -5325,51 +5156,115 @@ macro_revision='1.2976' ltmain="$ac_aux_dir/ltmain.sh" -{ echo "$as_me:$LINENO: checking for a sed that does not truncate output" >&5 -echo $ECHO_N "checking for a sed that does not truncate output... $ECHO_C" >&6; } -if test "${ac_cv_path_SED+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 +# Backslashify metacharacters that are still active within +# double-quoted strings. +sed_quote_subst='s/\(["`$\\]\)/\\\1/g' + +# Same as above, but do not quote variable references. +double_quote_subst='s/\(["`\\]\)/\\\1/g' + +# Sed substitution to delay expansion of an escaped shell variable in a +# double_quote_subst'ed string. +delay_variable_subst='s/\\\\\\\\\\\$/\\\\\\$/g' + +# Sed substitution to delay expansion of an escaped single quote. +delay_single_quote_subst='s/'\''/'\'\\\\\\\'\''/g' + +# Sed substitution to avoid accidental globbing in evaled expressions +no_glob_subst='s/\*/\\\*/g' + +ECHO='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' +ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO +ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO$ECHO + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to print strings" >&5 +$as_echo_n "checking how to print strings... " >&6; } +# Test print first, because it will be a builtin if present. +if test "X`( print -r -- -n ) 2>/dev/null`" = X-n && \ + test "X`print -r -- $ECHO 2>/dev/null`" = "X$ECHO"; then + ECHO='print -r --' +elif test "X`printf %s $ECHO 2>/dev/null`" = "X$ECHO"; then + ECHO='printf %s\n' +else + # Use this function as a fallback that always works. + func_fallback_echo () + { + eval 'cat <<_LTECHO_EOF +$1 +_LTECHO_EOF' + } + ECHO='func_fallback_echo' +fi + +# func_echo_all arg... +# Invoke $ECHO with all args, space-separated. +func_echo_all () +{ + $ECHO "" +} + +case "$ECHO" in + printf*) { $as_echo "$as_me:${as_lineno-$LINENO}: result: printf" >&5 +$as_echo "printf" >&6; } ;; + print*) { $as_echo "$as_me:${as_lineno-$LINENO}: result: print -r" >&5 +$as_echo "print -r" >&6; } ;; + *) { $as_echo "$as_me:${as_lineno-$LINENO}: result: cat" >&5 +$as_echo "cat" >&6; } ;; +esac + + + + + + + + + + + + + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for a sed that does not truncate output" >&5 +$as_echo_n "checking for a sed that does not truncate output... " >&6; } +if ${ac_cv_path_SED+:} false; then : + $as_echo_n "(cached) " >&6 else ac_script=s/aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb/ for ac_i in 1 2 3 4 5 6 7; do ac_script="$ac_script$as_nl$ac_script" done - echo "$ac_script" | sed 99q >conftest.sed - $as_unset ac_script || ac_script= - # Extract the first word of "sed gsed" to use in msg output -if test -z "$SED"; then -set dummy sed gsed; ac_prog_name=$2 -if test "${ac_cv_path_SED+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else + echo "$ac_script" 2>/dev/null | sed 99q >conftest.sed + { ac_script=; unset ac_script;} + if test -z "$SED"; then ac_path_SED_found=false -# Loop through the user's path and test for each of PROGNAME-LIST -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR + # Loop through the user's path and test for each of PROGNAME-LIST + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. - for ac_prog in sed gsed; do - for ac_exec_ext in '' $ac_executable_extensions; do - ac_path_SED="$as_dir/$ac_prog$ac_exec_ext" - { test -f "$ac_path_SED" && $as_test_x "$ac_path_SED"; } || continue - # Check for GNU ac_path_SED and select it if it is found. + for ac_prog in sed gsed; do + for ac_exec_ext in '' $ac_executable_extensions; do + ac_path_SED="$as_dir/$ac_prog$ac_exec_ext" + { test -f "$ac_path_SED" && $as_test_x "$ac_path_SED"; } || continue +# Check for GNU ac_path_SED and select it if it is found. # Check for GNU $ac_path_SED case `"$ac_path_SED" --version 2>&1` in *GNU*) ac_cv_path_SED="$ac_path_SED" ac_path_SED_found=:;; *) ac_count=0 - echo $ECHO_N "0123456789$ECHO_C" >"conftest.in" + $as_echo_n 0123456789 >"conftest.in" while : do cat "conftest.in" "conftest.in" >"conftest.tmp" mv "conftest.tmp" "conftest.in" cp "conftest.in" "conftest.nl" - echo '' >> "conftest.nl" + $as_echo '' >> "conftest.nl" "$ac_path_SED" -f conftest.sed < "conftest.nl" >"conftest.out" 2>/dev/null || break diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break - ac_count=`expr $ac_count + 1` + as_fn_arith $ac_count + 1 && ac_count=$as_val if test $ac_count -gt ${ac_path_SED_max-0}; then # Best one so far, save it but keep looking for a better one ac_cv_path_SED="$ac_path_SED" @@ -5381,31 +5276,21 @@ case `"$ac_path_SED" --version 2>&1` in rm -f conftest.in conftest.tmp conftest.nl conftest.out;; esac - - $ac_path_SED_found && break 3 + $ac_path_SED_found && break 3 + done + done done -done - -done IFS=$as_save_IFS - - -fi - -SED="$ac_cv_path_SED" -if test -z "$SED"; then - { { echo "$as_me:$LINENO: error: no acceptable $ac_prog_name could be found in \$PATH" >&5 -echo "$as_me: error: no acceptable $ac_prog_name could be found in \$PATH" >&2;} - { (exit 1); exit 1; }; } -fi - + if test -z "$ac_cv_path_SED"; then + as_fn_error $? "no acceptable sed could be found in \$PATH" "$LINENO" 5 + fi else ac_cv_path_SED=$SED fi fi -{ echo "$as_me:$LINENO: result: $ac_cv_path_SED" >&5 -echo "${ECHO_T}$ac_cv_path_SED" >&6; } +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_SED" >&5 +$as_echo "$ac_cv_path_SED" >&6; } SED="$ac_cv_path_SED" rm -f conftest.sed @@ -5422,48 +5307,43 @@ Xsed="$SED -e 1s/^X//" -{ echo "$as_me:$LINENO: checking for fgrep" >&5 -echo $ECHO_N "checking for fgrep... $ECHO_C" >&6; } -if test "${ac_cv_path_FGREP+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for fgrep" >&5 +$as_echo_n "checking for fgrep... " >&6; } +if ${ac_cv_path_FGREP+:} false; then : + $as_echo_n "(cached) " >&6 else if echo 'ab*c' | $GREP -F 'ab*c' >/dev/null 2>&1 then ac_cv_path_FGREP="$GREP -F" else - # Extract the first word of "fgrep" to use in msg output -if test -z "$FGREP"; then -set dummy fgrep; ac_prog_name=$2 -if test "${ac_cv_path_FGREP+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else + if test -z "$FGREP"; then ac_path_FGREP_found=false -# Loop through the user's path and test for each of PROGNAME-LIST -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR + # Loop through the user's path and test for each of PROGNAME-LIST + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. - for ac_prog in fgrep; do - for ac_exec_ext in '' $ac_executable_extensions; do - ac_path_FGREP="$as_dir/$ac_prog$ac_exec_ext" - { test -f "$ac_path_FGREP" && $as_test_x "$ac_path_FGREP"; } || continue - # Check for GNU ac_path_FGREP and select it if it is found. + for ac_prog in fgrep; do + for ac_exec_ext in '' $ac_executable_extensions; do + ac_path_FGREP="$as_dir/$ac_prog$ac_exec_ext" + { test -f "$ac_path_FGREP" && $as_test_x "$ac_path_FGREP"; } || continue +# Check for GNU ac_path_FGREP and select it if it is found. # Check for GNU $ac_path_FGREP case `"$ac_path_FGREP" --version 2>&1` in *GNU*) ac_cv_path_FGREP="$ac_path_FGREP" ac_path_FGREP_found=:;; *) ac_count=0 - echo $ECHO_N "0123456789$ECHO_C" >"conftest.in" + $as_echo_n 0123456789 >"conftest.in" while : do cat "conftest.in" "conftest.in" >"conftest.tmp" mv "conftest.tmp" "conftest.in" cp "conftest.in" "conftest.nl" - echo 'FGREP' >> "conftest.nl" + $as_echo 'FGREP' >> "conftest.nl" "$ac_path_FGREP" FGREP < "conftest.nl" >"conftest.out" 2>/dev/null || break diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break - ac_count=`expr $ac_count + 1` + as_fn_arith $ac_count + 1 && ac_count=$as_val if test $ac_count -gt ${ac_path_FGREP_max-0}; then # Best one so far, save it but keep looking for a better one ac_cv_path_FGREP="$ac_path_FGREP" @@ -5475,33 +5355,22 @@ case `"$ac_path_FGREP" --version 2>&1` in rm -f conftest.in conftest.tmp conftest.nl conftest.out;; esac - - $ac_path_FGREP_found && break 3 + $ac_path_FGREP_found && break 3 + done + done done -done - -done IFS=$as_save_IFS - - -fi - -FGREP="$ac_cv_path_FGREP" -if test -z "$FGREP"; then - { { echo "$as_me:$LINENO: error: no acceptable $ac_prog_name could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" >&5 -echo "$as_me: error: no acceptable $ac_prog_name could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" >&2;} - { (exit 1); exit 1; }; } -fi - + if test -z "$ac_cv_path_FGREP"; then + as_fn_error $? "no acceptable fgrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5 + fi else ac_cv_path_FGREP=$FGREP fi - fi fi -{ echo "$as_me:$LINENO: result: $ac_cv_path_FGREP" >&5 -echo "${ECHO_T}$ac_cv_path_FGREP" >&6; } +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_FGREP" >&5 +$as_echo "$ac_cv_path_FGREP" >&6; } FGREP="$ac_cv_path_FGREP" @@ -5526,7 +5395,7 @@ test -z "$GREP" && GREP=grep # Check whether --with-gnu-ld was given. -if test "${with_gnu_ld+set}" = set; then +if test "${with_gnu_ld+set}" = set; then : withval=$with_gnu_ld; test "$withval" = no || with_gnu_ld=yes else with_gnu_ld=no @@ -5535,8 +5404,8 @@ fi ac_prog=ld if test "$GCC" = yes; then # Check if gcc -print-prog-name=ld gives a path. - { echo "$as_me:$LINENO: checking for ld used by $CC" >&5 -echo $ECHO_N "checking for ld used by $CC... $ECHO_C" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ld used by $CC" >&5 +$as_echo_n "checking for ld used by $CC... " >&6; } case $host in *-*-mingw*) # gcc leaves a trailing carriage return which upsets mingw @@ -5565,14 +5434,14 @@ echo $ECHO_N "checking for ld used by $CC... $ECHO_C" >&6; } ;; esac elif test "$with_gnu_ld" = yes; then - { echo "$as_me:$LINENO: checking for GNU ld" >&5 -echo $ECHO_N "checking for GNU ld... $ECHO_C" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GNU ld" >&5 +$as_echo_n "checking for GNU ld... " >&6; } else - { echo "$as_me:$LINENO: checking for non-GNU ld" >&5 -echo $ECHO_N "checking for non-GNU ld... $ECHO_C" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for non-GNU ld" >&5 +$as_echo_n "checking for non-GNU ld... " >&6; } fi -if test "${lt_cv_path_LD+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 +if ${lt_cv_path_LD+:} false; then : + $as_echo_n "(cached) " >&6 else if test -z "$LD"; then lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR @@ -5602,19 +5471,17 @@ fi LD="$lt_cv_path_LD" if test -n "$LD"; then - { echo "$as_me:$LINENO: result: $LD" >&5 -echo "${ECHO_T}$LD" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LD" >&5 +$as_echo "$LD" >&6; } else - { echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } fi -test -z "$LD" && { { echo "$as_me:$LINENO: error: no acceptable ld found in \$PATH" >&5 -echo "$as_me: error: no acceptable ld found in \$PATH" >&2;} - { (exit 1); exit 1; }; } -{ echo "$as_me:$LINENO: checking if the linker ($LD) is GNU ld" >&5 -echo $ECHO_N "checking if the linker ($LD) is GNU ld... $ECHO_C" >&6; } -if test "${lt_cv_prog_gnu_ld+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 +test -z "$LD" && as_fn_error $? "no acceptable ld found in \$PATH" "$LINENO" 5 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if the linker ($LD) is GNU ld" >&5 +$as_echo_n "checking if the linker ($LD) is GNU ld... " >&6; } +if ${lt_cv_prog_gnu_ld+:} false; then : + $as_echo_n "(cached) " >&6 else # I'd rather use --version here, but apparently some GNU lds only accept -v. case `$LD -v 2>&1 &1 &5 -echo "${ECHO_T}$lt_cv_prog_gnu_ld" >&6; } +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_gnu_ld" >&5 +$as_echo "$lt_cv_prog_gnu_ld" >&6; } with_gnu_ld=$lt_cv_prog_gnu_ld @@ -5638,10 +5505,10 @@ with_gnu_ld=$lt_cv_prog_gnu_ld -{ echo "$as_me:$LINENO: checking for BSD- or MS-compatible name lister (nm)" >&5 -echo $ECHO_N "checking for BSD- or MS-compatible name lister (nm)... $ECHO_C" >&6; } -if test "${lt_cv_path_NM+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for BSD- or MS-compatible name lister (nm)" >&5 +$as_echo_n "checking for BSD- or MS-compatible name lister (nm)... " >&6; } +if ${lt_cv_path_NM+:} false; then : + $as_echo_n "(cached) " >&6 else if test -n "$NM"; then # Let the user override the test. @@ -5687,21 +5554,24 @@ else : ${lt_cv_path_NM=no} fi fi -{ echo "$as_me:$LINENO: result: $lt_cv_path_NM" >&5 -echo "${ECHO_T}$lt_cv_path_NM" >&6; } +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_path_NM" >&5 +$as_echo "$lt_cv_path_NM" >&6; } if test "$lt_cv_path_NM" != "no"; then NM="$lt_cv_path_NM" else # Didn't find any BSD compatible name lister, look for dumpbin. - if test -n "$ac_tool_prefix"; then - for ac_prog in "dumpbin -symbols" "link -dump -symbols" + if test -n "$DUMPBIN"; then : + # Let the user override the test. + else + if test -n "$ac_tool_prefix"; then + for ac_prog in dumpbin "link -dump" do # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. set dummy $ac_tool_prefix$ac_prog; ac_word=$2 -{ echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } -if test "${ac_cv_prog_DUMPBIN+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_DUMPBIN+:} false; then : + $as_echo_n "(cached) " >&6 else if test -n "$DUMPBIN"; then ac_cv_prog_DUMPBIN="$DUMPBIN" # Let the user override the test. @@ -5711,25 +5581,25 @@ for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do + for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_DUMPBIN="$ac_tool_prefix$ac_prog" - echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done -done + done IFS=$as_save_IFS fi fi DUMPBIN=$ac_cv_prog_DUMPBIN if test -n "$DUMPBIN"; then - { echo "$as_me:$LINENO: result: $DUMPBIN" >&5 -echo "${ECHO_T}$DUMPBIN" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DUMPBIN" >&5 +$as_echo "$DUMPBIN" >&6; } else - { echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } fi @@ -5738,14 +5608,14 @@ fi fi if test -z "$DUMPBIN"; then ac_ct_DUMPBIN=$DUMPBIN - for ac_prog in "dumpbin -symbols" "link -dump -symbols" + for ac_prog in dumpbin "link -dump" do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 -{ echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } -if test "${ac_cv_prog_ac_ct_DUMPBIN+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_ac_ct_DUMPBIN+:} false; then : + $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_DUMPBIN"; then ac_cv_prog_ac_ct_DUMPBIN="$ac_ct_DUMPBIN" # Let the user override the test. @@ -5755,25 +5625,25 @@ for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do + for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_ac_ct_DUMPBIN="$ac_prog" - echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done -done + done IFS=$as_save_IFS fi fi ac_ct_DUMPBIN=$ac_cv_prog_ac_ct_DUMPBIN if test -n "$ac_ct_DUMPBIN"; then - { echo "$as_me:$LINENO: result: $ac_ct_DUMPBIN" >&5 -echo "${ECHO_T}$ac_ct_DUMPBIN" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DUMPBIN" >&5 +$as_echo "$ac_ct_DUMPBIN" >&6; } else - { echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } fi @@ -5785,18 +5655,23 @@ done else case $cross_compiling:$ac_tool_warned in yes:) -{ echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools -whose name does not start with the host triplet. If you think this -configuration is useful to you, please write to autoconf@gnu.org." >&5 -echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools -whose name does not start with the host triplet. If you think this -configuration is useful to you, please write to autoconf@gnu.org." >&2;} +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac DUMPBIN=$ac_ct_DUMPBIN fi -fi - +fi + + case `$DUMPBIN -symbols /dev/null 2>&1 | sed '1q'` in + *COFF*) + DUMPBIN="$DUMPBIN -symbols" + ;; + *) + DUMPBIN=: + ;; + esac + fi if test "$DUMPBIN" != ":"; then NM="$DUMPBIN" @@ -5809,45 +5684,45 @@ test -z "$NM" && NM=nm -{ echo "$as_me:$LINENO: checking the name lister ($NM) interface" >&5 -echo $ECHO_N "checking the name lister ($NM) interface... $ECHO_C" >&6; } -if test "${lt_cv_nm_interface+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking the name lister ($NM) interface" >&5 +$as_echo_n "checking the name lister ($NM) interface... " >&6; } +if ${lt_cv_nm_interface+:} false; then : + $as_echo_n "(cached) " >&6 else lt_cv_nm_interface="BSD nm" echo "int some_variable = 0;" > conftest.$ac_ext - (eval echo "\"\$as_me:5819: $ac_compile\"" >&5) + (eval echo "\"\$as_me:$LINENO: $ac_compile\"" >&5) (eval "$ac_compile" 2>conftest.err) cat conftest.err >&5 - (eval echo "\"\$as_me:5822: $NM \\\"conftest.$ac_objext\\\"\"" >&5) + (eval echo "\"\$as_me:$LINENO: $NM \\\"conftest.$ac_objext\\\"\"" >&5) (eval "$NM \"conftest.$ac_objext\"" 2>conftest.err > conftest.out) cat conftest.err >&5 - (eval echo "\"\$as_me:5825: output\"" >&5) + (eval echo "\"\$as_me:$LINENO: output\"" >&5) cat conftest.out >&5 if $GREP 'External.*some_variable' conftest.out > /dev/null; then lt_cv_nm_interface="MS dumpbin" fi rm -f conftest* fi -{ echo "$as_me:$LINENO: result: $lt_cv_nm_interface" >&5 -echo "${ECHO_T}$lt_cv_nm_interface" >&6; } +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_nm_interface" >&5 +$as_echo "$lt_cv_nm_interface" >&6; } -{ echo "$as_me:$LINENO: checking whether ln -s works" >&5 -echo $ECHO_N "checking whether ln -s works... $ECHO_C" >&6; } +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ln -s works" >&5 +$as_echo_n "checking whether ln -s works... " >&6; } LN_S=$as_ln_s if test "$LN_S" = "ln -s"; then - { echo "$as_me:$LINENO: result: yes" >&5 -echo "${ECHO_T}yes" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } else - { echo "$as_me:$LINENO: result: no, using $LN_S" >&5 -echo "${ECHO_T}no, using $LN_S" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no, using $LN_S" >&5 +$as_echo "no, using $LN_S" >&6; } fi # find the maximum length of command line arguments -{ echo "$as_me:$LINENO: checking the maximum length of command line arguments" >&5 -echo $ECHO_N "checking the maximum length of command line arguments... $ECHO_C" >&6; } -if test "${lt_cv_sys_max_cmd_len+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking the maximum length of command line arguments" >&5 +$as_echo_n "checking the maximum length of command line arguments... " >&6; } +if ${lt_cv_sys_max_cmd_len+:} false; then : + $as_echo_n "(cached) " >&6 else i=0 teststring="ABCD" @@ -5868,7 +5743,7 @@ else lt_cv_sys_max_cmd_len=-1; ;; - cygwin* | mingw*) + cygwin* | mingw* | cegcc*) # On Win9x/ME, this test blows up -- it succeeds, but takes # about 5 minutes as the teststring grows exponentially. # Worse, since 9x/ME are not pre-emptively multitasking, @@ -5879,6 +5754,11 @@ else lt_cv_sys_max_cmd_len=8192; ;; + mint*) + # On MiNT this can take a long time and run out of memory. + lt_cv_sys_max_cmd_len=8192; + ;; + amigaos*) # On AmigaOS with pdksh, this test takes hours, literally. # So we just punt and use a minimum line length of 8192. @@ -5904,6 +5784,11 @@ else lt_cv_sys_max_cmd_len=196608 ;; + os2*) + # The test takes a long time on OS/2. + lt_cv_sys_max_cmd_len=8192 + ;; + osf*) # Dr. Hans Ekkehard Plesser reports seeing a kernel panic running configure # due to this test when exec_disable_arg_limit is 1 on Tru64. It is not @@ -5943,8 +5828,8 @@ else # If test is not a shell built-in, we'll probably end up computing a # maximum length that is only half of the actual maximum length, but # we can't tell. - while { test "X"`$SHELL $0 --fallback-echo "X$teststring$teststring" 2>/dev/null` \ - = "XX$teststring$teststring"; } >/dev/null 2>&1 && + while { test "X"`env echo "$teststring$teststring" 2>/dev/null` \ + = "X$teststring$teststring"; } >/dev/null 2>&1 && test $i != 17 # 1/2 MB should be enough do i=`expr $i + 1` @@ -5964,11 +5849,11 @@ else fi if test -n $lt_cv_sys_max_cmd_len ; then - { echo "$as_me:$LINENO: result: $lt_cv_sys_max_cmd_len" >&5 -echo "${ECHO_T}$lt_cv_sys_max_cmd_len" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_sys_max_cmd_len" >&5 +$as_echo "$lt_cv_sys_max_cmd_len" >&6; } else - { echo "$as_me:$LINENO: result: none" >&5 -echo "${ECHO_T}none" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: none" >&5 +$as_echo "none" >&6; } fi max_cmd_len=$lt_cv_sys_max_cmd_len @@ -5981,28 +5866,28 @@ max_cmd_len=$lt_cv_sys_max_cmd_len : ${MV="mv -f"} : ${RM="rm -f"} -{ echo "$as_me:$LINENO: checking whether the shell understands some XSI constructs" >&5 -echo $ECHO_N "checking whether the shell understands some XSI constructs... $ECHO_C" >&6; } +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the shell understands some XSI constructs" >&5 +$as_echo_n "checking whether the shell understands some XSI constructs... " >&6; } # Try some XSI features xsi_shell=no ( _lt_dummy="a/b/c" - test "${_lt_dummy##*/},${_lt_dummy%/*},"${_lt_dummy%"$_lt_dummy"}, \ - = c,a/b,, \ + test "${_lt_dummy##*/},${_lt_dummy%/*},${_lt_dummy#??}"${_lt_dummy%"$_lt_dummy"}, \ + = c,a/b,b/c, \ && eval 'test $(( 1 + 1 )) -eq 2 \ && test "${#_lt_dummy}" -eq 5' ) >/dev/null 2>&1 \ && xsi_shell=yes -{ echo "$as_me:$LINENO: result: $xsi_shell" >&5 -echo "${ECHO_T}$xsi_shell" >&6; } +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $xsi_shell" >&5 +$as_echo "$xsi_shell" >&6; } -{ echo "$as_me:$LINENO: checking whether the shell understands \"+=\"" >&5 -echo $ECHO_N "checking whether the shell understands \"+=\"... $ECHO_C" >&6; } +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the shell understands \"+=\"" >&5 +$as_echo_n "checking whether the shell understands \"+=\"... " >&6; } lt_shell_append=no ( foo=bar; set foo baz; eval "$1+=\$2" && test "$foo" = barbaz ) \ >/dev/null 2>&1 \ && lt_shell_append=yes -{ echo "$as_me:$LINENO: result: $lt_shell_append" >&5 -echo "${ECHO_T}$lt_shell_append" >&6; } +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_shell_append" >&5 +$as_echo "$lt_shell_append" >&6; } if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then @@ -6036,15 +5921,89 @@ esac -{ echo "$as_me:$LINENO: checking for $LD option to reload object files" >&5 -echo $ECHO_N "checking for $LD option to reload object files... $ECHO_C" >&6; } -if test "${lt_cv_ld_reload_flag+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to convert $build file names to $host format" >&5 +$as_echo_n "checking how to convert $build file names to $host format... " >&6; } +if ${lt_cv_to_host_file_cmd+:} false; then : + $as_echo_n "(cached) " >&6 +else + case $host in + *-*-mingw* ) + case $build in + *-*-mingw* ) # actually msys + lt_cv_to_host_file_cmd=func_convert_file_msys_to_w32 + ;; + *-*-cygwin* ) + lt_cv_to_host_file_cmd=func_convert_file_cygwin_to_w32 + ;; + * ) # otherwise, assume *nix + lt_cv_to_host_file_cmd=func_convert_file_nix_to_w32 + ;; + esac + ;; + *-*-cygwin* ) + case $build in + *-*-mingw* ) # actually msys + lt_cv_to_host_file_cmd=func_convert_file_msys_to_cygwin + ;; + *-*-cygwin* ) + lt_cv_to_host_file_cmd=func_convert_file_noop + ;; + * ) # otherwise, assume *nix + lt_cv_to_host_file_cmd=func_convert_file_nix_to_cygwin + ;; + esac + ;; + * ) # unhandled hosts (and "normal" native builds) + lt_cv_to_host_file_cmd=func_convert_file_noop + ;; +esac + +fi + +to_host_file_cmd=$lt_cv_to_host_file_cmd +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_to_host_file_cmd" >&5 +$as_echo "$lt_cv_to_host_file_cmd" >&6; } + + + + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to convert $build file names to toolchain format" >&5 +$as_echo_n "checking how to convert $build file names to toolchain format... " >&6; } +if ${lt_cv_to_tool_file_cmd+:} false; then : + $as_echo_n "(cached) " >&6 +else + #assume ordinary cross tools, or native build. +lt_cv_to_tool_file_cmd=func_convert_file_noop +case $host in + *-*-mingw* ) + case $build in + *-*-mingw* ) # actually msys + lt_cv_to_tool_file_cmd=func_convert_file_msys_to_w32 + ;; + esac + ;; +esac + +fi + +to_tool_file_cmd=$lt_cv_to_tool_file_cmd +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_to_tool_file_cmd" >&5 +$as_echo "$lt_cv_to_tool_file_cmd" >&6; } + + + + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $LD option to reload object files" >&5 +$as_echo_n "checking for $LD option to reload object files... " >&6; } +if ${lt_cv_ld_reload_flag+:} false; then : + $as_echo_n "(cached) " >&6 else lt_cv_ld_reload_flag='-r' fi -{ echo "$as_me:$LINENO: result: $lt_cv_ld_reload_flag" >&5 -echo "${ECHO_T}$lt_cv_ld_reload_flag" >&6; } +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ld_reload_flag" >&5 +$as_echo "$lt_cv_ld_reload_flag" >&6; } reload_flag=$lt_cv_ld_reload_flag case $reload_flag in "" | " "*) ;; @@ -6052,6 +6011,11 @@ case $reload_flag in esac reload_cmds='$LD$reload_flag -o $output$reload_objs' case $host_os in + cygwin* | mingw* | pw32* | cegcc*) + if test "$GCC" != yes; then + reload_cmds=false + fi + ;; darwin*) if test "$GCC" = yes; then reload_cmds='$LTCC $LTCFLAGS -nostdlib ${wl}-r -o $output$reload_objs' @@ -6069,11 +6033,112 @@ esac +if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}objdump", so it can be a program name with args. +set dummy ${ac_tool_prefix}objdump; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_OBJDUMP+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$OBJDUMP"; then + ac_cv_prog_OBJDUMP="$OBJDUMP" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_OBJDUMP="${ac_tool_prefix}objdump" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +OBJDUMP=$ac_cv_prog_OBJDUMP +if test -n "$OBJDUMP"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $OBJDUMP" >&5 +$as_echo "$OBJDUMP" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_OBJDUMP"; then + ac_ct_OBJDUMP=$OBJDUMP + # Extract the first word of "objdump", so it can be a program name with args. +set dummy objdump; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_ac_ct_OBJDUMP+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_OBJDUMP"; then + ac_cv_prog_ac_ct_OBJDUMP="$ac_ct_OBJDUMP" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_ac_ct_OBJDUMP="objdump" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_OBJDUMP=$ac_cv_prog_ac_ct_OBJDUMP +if test -n "$ac_ct_OBJDUMP"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OBJDUMP" >&5 +$as_echo "$ac_ct_OBJDUMP" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + if test "x$ac_ct_OBJDUMP" = x; then + OBJDUMP="false" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + OBJDUMP=$ac_ct_OBJDUMP + fi +else + OBJDUMP="$ac_cv_prog_OBJDUMP" +fi + +test -z "$OBJDUMP" && OBJDUMP=objdump + + + + + + + + -{ echo "$as_me:$LINENO: checking how to recognize dependent libraries" >&5 -echo $ECHO_N "checking how to recognize dependent libraries... $ECHO_C" >&6; } -if test "${lt_cv_deplibs_check_method+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to recognize dependent libraries" >&5 +$as_echo_n "checking how to recognize dependent libraries... " >&6; } +if ${lt_cv_deplibs_check_method+:} false; then : + $as_echo_n "(cached) " >&6 else lt_cv_file_magic_cmd='$MAGIC_CMD' lt_cv_file_magic_test_file= @@ -6114,15 +6179,23 @@ mingw* | pw32*) # Base MSYS/MinGW do not provide the 'file' command needed by # func_win32_libid shell function, so use a weaker test based on 'objdump', # unless we find 'file', for example because we are cross-compiling. - if ( file / ) >/dev/null 2>&1; then + # func_win32_libid assumes BSD nm, so disallow it if using MS dumpbin. + if ( test "$lt_cv_nm_interface" = "BSD nm" && file / ) >/dev/null 2>&1; then lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL' lt_cv_file_magic_cmd='func_win32_libid' else - lt_cv_deplibs_check_method='file_magic file format pei*-i386(.*architecture: i386)?' + # Keep this pattern in sync with the one in func_win32_libid. + lt_cv_deplibs_check_method='file_magic file format (pei*-i386(.*architecture: i386)?|pe-arm-wince|pe-x86-64)' lt_cv_file_magic_cmd='$OBJDUMP -f' fi ;; +cegcc*) + # use the weaker test based on 'objdump'. See mingw*. + lt_cv_deplibs_check_method='file_magic file format pe-arm-.*little(.*architecture: arm)?' + lt_cv_file_magic_cmd='$OBJDUMP -f' + ;; + darwin* | rhapsody*) lt_cv_deplibs_check_method=pass_all ;; @@ -6147,6 +6220,10 @@ gnu*) lt_cv_deplibs_check_method=pass_all ;; +haiku*) + lt_cv_deplibs_check_method=pass_all + ;; + hpux10.20* | hpux11*) lt_cv_file_magic_cmd=/usr/bin/file case $host_cpu in @@ -6155,11 +6232,11 @@ hpux10.20* | hpux11*) lt_cv_file_magic_test_file=/usr/lib/hpux32/libc.so ;; hppa*64*) - lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF-[0-9][0-9]) shared object file - PA-RISC [0-9].[0-9]' + lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF[ -][0-9][0-9])(-bit)?( [LM]SB)? shared object( file)?[, -]* PA-RISC [0-9]\.[0-9]' lt_cv_file_magic_test_file=/usr/lib/pa20_64/libc.sl ;; *) - lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|PA-RISC[0-9].[0-9]) shared library' + lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|PA-RISC[0-9]\.[0-9]) shared library' lt_cv_file_magic_test_file=/usr/lib/libc.sl ;; esac @@ -6180,12 +6257,12 @@ irix5* | irix6* | nonstopux*) lt_cv_deplibs_check_method=pass_all ;; -# This must be Linux ELF. -linux* | k*bsd*-gnu) +# This must be glibc/ELF. +linux* | k*bsd*-gnu | kopensolaris*-gnu) lt_cv_deplibs_check_method=pass_all ;; -netbsd*) +netbsd* | netbsdelf*-gnu) if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|_pic\.a)$' else @@ -6260,8 +6337,23 @@ tpf*) esac fi -{ echo "$as_me:$LINENO: result: $lt_cv_deplibs_check_method" >&5 -echo "${ECHO_T}$lt_cv_deplibs_check_method" >&6; } +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_deplibs_check_method" >&5 +$as_echo "$lt_cv_deplibs_check_method" >&6; } + +file_magic_glob= +want_nocaseglob=no +if test "$build" = "$host"; then + case $host_os in + mingw* | pw32*) + if ( shopt | grep nocaseglob ) >/dev/null 2>&1; then + want_nocaseglob=yes + else + file_magic_glob=`echo aAbBcCdDeEfFgGhHiIjJkKlLmMnNoOpPqQrRsStTuUvVwWxXyYzZ | $SED -e "s/\(..\)/s\/[\1]\/[\1]\/g;/g"` + fi + ;; + esac +fi + file_magic_cmd=$lt_cv_file_magic_cmd deplibs_check_method=$lt_cv_deplibs_check_method test -z "$deplibs_check_method" && deplibs_check_method=unknown @@ -6277,13 +6369,166 @@ test -z "$deplibs_check_method" && deplibs_check_method=unknown + + + + + + + + + + +if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}dlltool", so it can be a program name with args. +set dummy ${ac_tool_prefix}dlltool; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_DLLTOOL+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$DLLTOOL"; then + ac_cv_prog_DLLTOOL="$DLLTOOL" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_DLLTOOL="${ac_tool_prefix}dlltool" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +DLLTOOL=$ac_cv_prog_DLLTOOL +if test -n "$DLLTOOL"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DLLTOOL" >&5 +$as_echo "$DLLTOOL" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_DLLTOOL"; then + ac_ct_DLLTOOL=$DLLTOOL + # Extract the first word of "dlltool", so it can be a program name with args. +set dummy dlltool; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_ac_ct_DLLTOOL+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_DLLTOOL"; then + ac_cv_prog_ac_ct_DLLTOOL="$ac_ct_DLLTOOL" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_ac_ct_DLLTOOL="dlltool" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_DLLTOOL=$ac_cv_prog_ac_ct_DLLTOOL +if test -n "$ac_ct_DLLTOOL"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DLLTOOL" >&5 +$as_echo "$ac_ct_DLLTOOL" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + if test "x$ac_ct_DLLTOOL" = x; then + DLLTOOL="false" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + DLLTOOL=$ac_ct_DLLTOOL + fi +else + DLLTOOL="$ac_cv_prog_DLLTOOL" +fi + +test -z "$DLLTOOL" && DLLTOOL=dlltool + + + + + + + + + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to associate runtime and link libraries" >&5 +$as_echo_n "checking how to associate runtime and link libraries... " >&6; } +if ${lt_cv_sharedlib_from_linklib_cmd+:} false; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_sharedlib_from_linklib_cmd='unknown' + +case $host_os in +cygwin* | mingw* | pw32* | cegcc*) + # two different shell functions defined in ltmain.sh + # decide which to use based on capabilities of $DLLTOOL + case `$DLLTOOL --help 2>&1` in + *--identify-strict*) + lt_cv_sharedlib_from_linklib_cmd=func_cygming_dll_for_implib + ;; + *) + lt_cv_sharedlib_from_linklib_cmd=func_cygming_dll_for_implib_fallback + ;; + esac + ;; +*) + # fallback: assume linklib IS sharedlib + lt_cv_sharedlib_from_linklib_cmd="$ECHO" + ;; +esac + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_sharedlib_from_linklib_cmd" >&5 +$as_echo "$lt_cv_sharedlib_from_linklib_cmd" >&6; } +sharedlib_from_linklib_cmd=$lt_cv_sharedlib_from_linklib_cmd +test -z "$sharedlib_from_linklib_cmd" && sharedlib_from_linklib_cmd=$ECHO + + + + + + + if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}ar", so it can be a program name with args. -set dummy ${ac_tool_prefix}ar; ac_word=$2 -{ echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } -if test "${ac_cv_prog_AR+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 + for ac_prog in ar + do + # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. +set dummy $ac_tool_prefix$ac_prog; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_AR+:} false; then : + $as_echo_n "(cached) " >&6 else if test -n "$AR"; then ac_cv_prog_AR="$AR" # Let the user override the test. @@ -6293,37 +6538,41 @@ for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do + for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_prog_AR="${ac_tool_prefix}ar" - echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + ac_cv_prog_AR="$ac_tool_prefix$ac_prog" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done -done + done IFS=$as_save_IFS fi fi AR=$ac_cv_prog_AR if test -n "$AR"; then - { echo "$as_me:$LINENO: result: $AR" >&5 -echo "${ECHO_T}$AR" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AR" >&5 +$as_echo "$AR" >&6; } else - { echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } fi + test -n "$AR" && break + done fi -if test -z "$ac_cv_prog_AR"; then +if test -z "$AR"; then ac_ct_AR=$AR - # Extract the first word of "ar", so it can be a program name with args. -set dummy ar; ac_word=$2 -{ echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } -if test "${ac_cv_prog_ac_ct_AR+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 + for ac_prog in ar +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_ac_ct_AR+:} false; then : + $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_AR"; then ac_cv_prog_ac_ct_AR="$ac_ct_AR" # Let the user override the test. @@ -6333,52 +6582,108 @@ for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do + for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_prog_ac_ct_AR="ar" - echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + ac_cv_prog_ac_ct_AR="$ac_prog" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done -done + done IFS=$as_save_IFS fi fi ac_ct_AR=$ac_cv_prog_ac_ct_AR if test -n "$ac_ct_AR"; then - { echo "$as_me:$LINENO: result: $ac_ct_AR" >&5 -echo "${ECHO_T}$ac_ct_AR" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_AR" >&5 +$as_echo "$ac_ct_AR" >&6; } else - { echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } fi + + test -n "$ac_ct_AR" && break +done + if test "x$ac_ct_AR" = x; then AR="false" else case $cross_compiling:$ac_tool_warned in yes:) -{ echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools -whose name does not start with the host triplet. If you think this -configuration is useful to you, please write to autoconf@gnu.org." >&5 -echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools -whose name does not start with the host triplet. If you think this -configuration is useful to you, please write to autoconf@gnu.org." >&2;} +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac AR=$ac_ct_AR fi -else - AR="$ac_cv_prog_AR" fi -test -z "$AR" && AR=ar -test -z "$AR_FLAGS" && AR_FLAGS=cru +: ${AR=ar} +: ${AR_FLAGS=cru} + + + + + + + + + + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for archiver @FILE support" >&5 +$as_echo_n "checking for archiver @FILE support... " >&6; } +if ${lt_cv_ar_at_file+:} false; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_ar_at_file=no + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + ; + return 0; +} +_ACEOF +if ac_fn_cxx_try_compile "$LINENO"; then : + echo conftest.$ac_objext > conftest.lst + lt_ar_try='$AR $AR_FLAGS libconftest.a @conftest.lst >&5' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$lt_ar_try\""; } >&5 + (eval $lt_ar_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } + if test "$ac_status" -eq 0; then + # Ensure the archiver fails upon bogus file names. + rm -f conftest.$ac_objext libconftest.a + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$lt_ar_try\""; } >&5 + (eval $lt_ar_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } + if test "$ac_status" -ne 0; then + lt_cv_ar_at_file=@ + fi + fi + rm -f conftest.* libconftest.a +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ar_at_file" >&5 +$as_echo "$lt_cv_ar_at_file" >&6; } +if test "x$lt_cv_ar_at_file" = xno; then + archiver_list_spec= +else + archiver_list_spec=$lt_cv_ar_at_file +fi @@ -6389,10 +6694,10 @@ test -z "$AR_FLAGS" && AR_FLAGS=cru if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args. set dummy ${ac_tool_prefix}strip; ac_word=$2 -{ echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } -if test "${ac_cv_prog_STRIP+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_STRIP+:} false; then : + $as_echo_n "(cached) " >&6 else if test -n "$STRIP"; then ac_cv_prog_STRIP="$STRIP" # Let the user override the test. @@ -6402,25 +6707,25 @@ for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do + for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_STRIP="${ac_tool_prefix}strip" - echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done -done + done IFS=$as_save_IFS fi fi STRIP=$ac_cv_prog_STRIP if test -n "$STRIP"; then - { echo "$as_me:$LINENO: result: $STRIP" >&5 -echo "${ECHO_T}$STRIP" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $STRIP" >&5 +$as_echo "$STRIP" >&6; } else - { echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } fi @@ -6429,10 +6734,10 @@ if test -z "$ac_cv_prog_STRIP"; then ac_ct_STRIP=$STRIP # Extract the first word of "strip", so it can be a program name with args. set dummy strip; ac_word=$2 -{ echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } -if test "${ac_cv_prog_ac_ct_STRIP+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_ac_ct_STRIP+:} false; then : + $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_STRIP"; then ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # Let the user override the test. @@ -6442,25 +6747,25 @@ for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do + for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_ac_ct_STRIP="strip" - echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done -done + done IFS=$as_save_IFS fi fi ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP if test -n "$ac_ct_STRIP"; then - { echo "$as_me:$LINENO: result: $ac_ct_STRIP" >&5 -echo "${ECHO_T}$ac_ct_STRIP" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_STRIP" >&5 +$as_echo "$ac_ct_STRIP" >&6; } else - { echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } fi if test "x$ac_ct_STRIP" = x; then @@ -6468,12 +6773,8 @@ fi else case $cross_compiling:$ac_tool_warned in yes:) -{ echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools -whose name does not start with the host triplet. If you think this -configuration is useful to you, please write to autoconf@gnu.org." >&5 -echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools -whose name does not start with the host triplet. If you think this -configuration is useful to you, please write to autoconf@gnu.org." >&2;} +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac STRIP=$ac_ct_STRIP @@ -6492,10 +6793,10 @@ test -z "$STRIP" && STRIP=: if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}ranlib", so it can be a program name with args. set dummy ${ac_tool_prefix}ranlib; ac_word=$2 -{ echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } -if test "${ac_cv_prog_RANLIB+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_RANLIB+:} false; then : + $as_echo_n "(cached) " >&6 else if test -n "$RANLIB"; then ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test. @@ -6505,25 +6806,25 @@ for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do + for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_RANLIB="${ac_tool_prefix}ranlib" - echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done -done + done IFS=$as_save_IFS fi fi RANLIB=$ac_cv_prog_RANLIB if test -n "$RANLIB"; then - { echo "$as_me:$LINENO: result: $RANLIB" >&5 -echo "${ECHO_T}$RANLIB" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $RANLIB" >&5 +$as_echo "$RANLIB" >&6; } else - { echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } fi @@ -6532,10 +6833,10 @@ if test -z "$ac_cv_prog_RANLIB"; then ac_ct_RANLIB=$RANLIB # Extract the first word of "ranlib", so it can be a program name with args. set dummy ranlib; ac_word=$2 -{ echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } -if test "${ac_cv_prog_ac_ct_RANLIB+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_ac_ct_RANLIB+:} false; then : + $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_RANLIB"; then ac_cv_prog_ac_ct_RANLIB="$ac_ct_RANLIB" # Let the user override the test. @@ -6545,25 +6846,25 @@ for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do + for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_ac_ct_RANLIB="ranlib" - echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done -done + done IFS=$as_save_IFS fi fi ac_ct_RANLIB=$ac_cv_prog_ac_ct_RANLIB if test -n "$ac_ct_RANLIB"; then - { echo "$as_me:$LINENO: result: $ac_ct_RANLIB" >&5 -echo "${ECHO_T}$ac_ct_RANLIB" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_RANLIB" >&5 +$as_echo "$ac_ct_RANLIB" >&6; } else - { echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } fi if test "x$ac_ct_RANLIB" = x; then @@ -6571,12 +6872,8 @@ fi else case $cross_compiling:$ac_tool_warned in yes:) -{ echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools -whose name does not start with the host triplet. If you think this -configuration is useful to you, please write to autoconf@gnu.org." >&5 -echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools -whose name does not start with the host triplet. If you think this -configuration is useful to you, please write to autoconf@gnu.org." >&2;} +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac RANLIB=$ac_ct_RANLIB @@ -6600,15 +6897,27 @@ old_postuninstall_cmds= if test -n "$RANLIB"; then case $host_os in openbsd*) - old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB -t \$oldlib" + old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB -t \$tool_oldlib" ;; *) - old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB \$oldlib" + old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB \$tool_oldlib" ;; esac - old_archive_cmds="$old_archive_cmds~\$RANLIB \$oldlib" + old_archive_cmds="$old_archive_cmds~\$RANLIB \$tool_oldlib" fi +case $host_os in + darwin*) + lock_old_archive_extraction=yes ;; + *) + lock_old_archive_extraction=no ;; +esac + + + + + + @@ -6653,10 +6962,10 @@ compiler=$CC # Check for command to grab the raw symbol name followed by C symbol from nm. -{ echo "$as_me:$LINENO: checking command to parse $NM output from $compiler object" >&5 -echo $ECHO_N "checking command to parse $NM output from $compiler object... $ECHO_C" >&6; } -if test "${lt_cv_sys_global_symbol_pipe+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking command to parse $NM output from $compiler object" >&5 +$as_echo_n "checking command to parse $NM output from $compiler object... " >&6; } +if ${lt_cv_sys_global_symbol_pipe+:} false; then : + $as_echo_n "(cached) " >&6 else # These are sane defaults that work on at least a few old systems. @@ -6673,7 +6982,7 @@ case $host_os in aix*) symcode='[BCDT]' ;; -cygwin* | mingw* | pw32*) +cygwin* | mingw* | pw32* | cegcc*) symcode='[ABCDGISTW]' ;; hpux*) @@ -6716,8 +7025,8 @@ esac lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^T .* \(.*\)$/extern int \1();/p' -e 's/^$symcode* .* \(.*\)$/extern char \1;/p'" # Transform an extracted symbol line into symbol name and symbol address -lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([^ ]*\) $/ {\\\"\1\\\", (void *) 0},/p' -e 's/^$symcode* \([^ ]*\) \([^ ]*\)$/ {\"\2\", (void *) \&\2},/p'" -lt_cv_sys_global_symbol_to_c_name_address_lib_prefix="sed -n -e 's/^: \([^ ]*\) $/ {\\\"\1\\\", (void *) 0},/p' -e 's/^$symcode* \([^ ]*\) \(lib[^ ]*\)$/ {\"\2\", (void *) \&\2},/p' -e 's/^$symcode* \([^ ]*\) \([^ ]*\)$/ {\"lib\2\", (void *) \&\2},/p'" +lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([^ ]*\)[ ]*$/ {\\\"\1\\\", (void *) 0},/p' -e 's/^$symcode* \([^ ]*\) \([^ ]*\)$/ {\"\2\", (void *) \&\2},/p'" +lt_cv_sys_global_symbol_to_c_name_address_lib_prefix="sed -n -e 's/^: \([^ ]*\)[ ]*$/ {\\\"\1\\\", (void *) 0},/p' -e 's/^$symcode* \([^ ]*\) \(lib[^ ]*\)$/ {\"\2\", (void *) \&\2},/p' -e 's/^$symcode* \([^ ]*\) \([^ ]*\)$/ {\"lib\2\", (void *) \&\2},/p'" # Handle CRLF in mingw tool chain opt_cr= @@ -6741,6 +7050,7 @@ for ac_symprfx in "" "_"; do # which start with @ or ?. lt_cv_sys_global_symbol_pipe="$AWK '"\ " {last_section=section; section=\$ 3};"\ +" /^COFF SYMBOL TABLE/{for(i in hide) delete hide[i]};"\ " /Section length .*#relocs.*(pick any)/{hide[last_section]=1};"\ " \$ 0!~/External *\|/{next};"\ " / 0+ UNDEF /{next}; / UNDEF \([^|]\)*()/{next};"\ @@ -6753,6 +7063,7 @@ for ac_symprfx in "" "_"; do else lt_cv_sys_global_symbol_pipe="sed -n -e 's/^.*[ ]\($symcode$symcode*\)[ ][ ]*$ac_symprfx$sympat$opt_cr$/$symxfrm/p'" fi + lt_cv_sys_global_symbol_pipe="$lt_cv_sys_global_symbol_pipe | sed '/ __gnu_lto/d'" # Check to see that the pipe works correctly. pipe_works=no @@ -6771,18 +7082,18 @@ void nm_test_func(void){} int main(){nm_test_var='a';nm_test_func();return(0);} _LT_EOF - if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 (eval $ac_compile) 2>&5 ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; then + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then # Now try to grab the symbols. nlist=conftest.nm - if { (eval echo "$as_me:$LINENO: \"$NM conftest.$ac_objext \| $lt_cv_sys_global_symbol_pipe \> $nlist\"") >&5 - (eval $NM conftest.$ac_objext \| $lt_cv_sys_global_symbol_pipe \> $nlist) 2>&5 + if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$NM conftest.$ac_objext \| "$lt_cv_sys_global_symbol_pipe" \> $nlist\""; } >&5 + (eval $NM conftest.$ac_objext \| "$lt_cv_sys_global_symbol_pipe" \> $nlist) 2>&5 ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && test -s "$nlist"; then + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } && test -s "$nlist"; then # Try sorting and uniquifying the output. if sort "$nlist" | uniq > "$nlist"T; then mv -f "$nlist"T "$nlist" @@ -6794,6 +7105,18 @@ _LT_EOF if $GREP ' nm_test_var$' "$nlist" >/dev/null; then if $GREP ' nm_test_func$' "$nlist" >/dev/null; then cat <<_LT_EOF > conftest.$ac_ext +/* Keep this code in sync between libtool.m4, ltmain, lt_system.h, and tests. */ +#if defined(_WIN32) || defined(__CYGWIN__) || defined(_WIN32_WCE) +/* DATA imports from DLLs on WIN32 con't be const, because runtime + relocations are performed -- see ld's documentation on pseudo-relocs. */ +# define LT_DLSYM_CONST +#elif defined(__osf__) +/* This system does not cope well with relocations in const data. */ +# define LT_DLSYM_CONST +#else +# define LT_DLSYM_CONST const +#endif + #ifdef __cplusplus extern "C" { #endif @@ -6805,7 +7128,7 @@ _LT_EOF cat <<_LT_EOF >> conftest.$ac_ext /* The mapping between symbol names and symbols. */ -const struct { +LT_DLSYM_CONST struct { const char *name; void *address; } @@ -6831,19 +7154,19 @@ static const void *lt_preloaded_setup() { _LT_EOF # Now try linking the two files. mv conftest.$ac_objext conftstm.$ac_objext - lt_save_LIBS="$LIBS" - lt_save_CFLAGS="$CFLAGS" + lt_globsym_save_LIBS=$LIBS + lt_globsym_save_CFLAGS=$CFLAGS LIBS="conftstm.$ac_objext" CFLAGS="$CFLAGS$lt_prog_compiler_no_builtin_flag" - if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5 (eval $ac_link) 2>&5 ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && test -s conftest${ac_exeext}; then + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } && test -s conftest${ac_exeext}; then pipe_works=yes fi - LIBS="$lt_save_LIBS" - CFLAGS="$lt_save_CFLAGS" + LIBS=$lt_globsym_save_LIBS + CFLAGS=$lt_globsym_save_CFLAGS else echo "cannot find nm_test_func in $nlist" >&5 fi @@ -6873,11 +7196,18 @@ if test -z "$lt_cv_sys_global_symbol_pipe"; then lt_cv_sys_global_symbol_to_cdecl= fi if test -z "$lt_cv_sys_global_symbol_pipe$lt_cv_sys_global_symbol_to_cdecl"; then - { echo "$as_me:$LINENO: result: failed" >&5 -echo "${ECHO_T}failed" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: failed" >&5 +$as_echo "failed" >&6; } else - { echo "$as_me:$LINENO: result: ok" >&5 -echo "${ECHO_T}ok" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: ok" >&5 +$as_echo "ok" >&6; } +fi + +# Response file support. +if test "$lt_cv_nm_interface" = "MS dumpbin"; then + nm_file_list_spec='@' +elif $NM --help 2>/dev/null | grep '[@]FILE' >/dev/null; then + nm_file_list_spec='@' fi @@ -6899,11 +7229,53 @@ fi + + + + + + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for sysroot" >&5 +$as_echo_n "checking for sysroot... " >&6; } + +# Check whether --with-sysroot was given. +if test "${with_sysroot+set}" = set; then : + withval=$with_sysroot; +else + with_sysroot=no +fi + + +lt_sysroot= +case ${with_sysroot} in #( + yes) + if test "$GCC" = yes; then + lt_sysroot=`$CC --print-sysroot 2>/dev/null` + fi + ;; #( + /*) + lt_sysroot=`echo "$with_sysroot" | sed -e "$sed_quote_subst"` + ;; #( + no|'') + ;; #( + *) + { $as_echo "$as_me:${as_lineno-$LINENO}: result: ${with_sysroot}" >&5 +$as_echo "${with_sysroot}" >&6; } + as_fn_error $? "The sysroot must be an absolute path." "$LINENO" 5 + ;; +esac + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: ${lt_sysroot:-no}" >&5 +$as_echo "${lt_sysroot:-no}" >&6; } + + + # Check whether --enable-libtool-lock was given. -if test "${enable_libtool_lock+set}" = set; then +if test "${enable_libtool_lock+set}" = set; then : enableval=$enable_libtool_lock; fi @@ -6915,11 +7287,11 @@ case $host in ia64-*-hpux*) # Find out which ABI we are using. echo 'int i;' > conftest.$ac_ext - if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 (eval $ac_compile) 2>&5 ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; then + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then case `/usr/bin/file conftest.$ac_objext` in *ELF-32*) HPUX_IA64_MODE="32" @@ -6933,12 +7305,12 @@ ia64-*-hpux*) ;; *-*-irix6*) # Find out which ABI we are using. - echo '#line 6936 "configure"' > conftest.$ac_ext - if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + echo '#line '$LINENO' "configure"' > conftest.$ac_ext + if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 (eval $ac_compile) 2>&5 ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; then + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then if test "$lt_cv_prog_gnu_ld" = yes; then case `/usr/bin/file conftest.$ac_objext` in *32-bit*) @@ -6972,11 +7344,11 @@ x86_64-*kfreebsd*-gnu|x86_64-*linux*|ppc*-*linux*|powerpc*-*linux*| \ s390*-*linux*|s390*-*tpf*|sparc*-*linux*) # Find out which ABI we are using. echo 'int i;' > conftest.$ac_ext - if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 (eval $ac_compile) 2>&5 ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; then + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then case `/usr/bin/file conftest.o` in *32-bit*) case $host in @@ -7025,10 +7397,10 @@ s390*-*linux*|s390*-*tpf*|sparc*-*linux*) # On SCO OpenServer 5, we need -belf to get full-featured binaries. SAVE_CFLAGS="$CFLAGS" CFLAGS="$CFLAGS -belf" - { echo "$as_me:$LINENO: checking whether the C compiler needs -belf" >&5 -echo $ECHO_N "checking whether the C compiler needs -belf... $ECHO_C" >&6; } -if test "${lt_cv_cc_needs_belf+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the C compiler needs -belf" >&5 +$as_echo_n "checking whether the C compiler needs -belf... " >&6; } +if ${lt_cv_cc_needs_belf+:} false; then : + $as_echo_n "(cached) " >&6 else ac_ext=c ac_cpp='$CPP $CPPFLAGS' @@ -7036,11 +7408,7 @@ ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF + cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int @@ -7051,34 +7419,13 @@ main () return 0; } _ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_link") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest$ac_exeext && - $as_test_x conftest$ac_exeext; then +if ac_fn_c_try_link "$LINENO"; then : lt_cv_cc_needs_belf=yes else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - lt_cv_cc_needs_belf=no + lt_cv_cc_needs_belf=no fi - -rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ - conftest$ac_exeext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' @@ -7086,1430 +7433,820 @@ ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $ ac_compiler_gnu=$ac_cv_c_compiler_gnu fi -{ echo "$as_me:$LINENO: result: $lt_cv_cc_needs_belf" >&5 -echo "${ECHO_T}$lt_cv_cc_needs_belf" >&6; } +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_cc_needs_belf" >&5 +$as_echo "$lt_cv_cc_needs_belf" >&6; } if test x"$lt_cv_cc_needs_belf" != x"yes"; then # this is probably gcc 2.8.0, egcs 1.0 or newer; no need for -belf CFLAGS="$SAVE_CFLAGS" fi ;; -sparc*-*solaris*) +*-*solaris*) # Find out which ABI we are using. echo 'int i;' > conftest.$ac_ext - if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 (eval $ac_compile) 2>&5 ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; then + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then case `/usr/bin/file conftest.o` in *64-bit*) case $lt_cv_prog_gnu_ld in - yes*) LD="${LD-ld} -m elf64_sparc" ;; + yes*) + case $host in + i?86-*-solaris*) + LD="${LD-ld} -m elf_x86_64" + ;; + sparc*-*-solaris*) + LD="${LD-ld} -m elf64_sparc" + ;; + esac + # GNU ld 2.21 introduced _sol2 emulations. Use them if available. + if ${LD-ld} -V | grep _sol2 >/dev/null 2>&1; then + LD="${LD-ld}_sol2" + fi + ;; *) if ${LD-ld} -64 -r -o conftest2.o conftest.o >/dev/null 2>&1; then LD="${LD-ld} -64" - fi - ;; - esac - ;; - esac - fi - rm -rf conftest* - ;; -esac - -need_locks="$enable_libtool_lock" - - - case $host_os in - rhapsody* | darwin*) - if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}dsymutil", so it can be a program name with args. -set dummy ${ac_tool_prefix}dsymutil; ac_word=$2 -{ echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } -if test "${ac_cv_prog_DSYMUTIL+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - if test -n "$DSYMUTIL"; then - ac_cv_prog_DSYMUTIL="$DSYMUTIL" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_prog_DSYMUTIL="${ac_tool_prefix}dsymutil" - echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done -done -IFS=$as_save_IFS - -fi -fi -DSYMUTIL=$ac_cv_prog_DSYMUTIL -if test -n "$DSYMUTIL"; then - { echo "$as_me:$LINENO: result: $DSYMUTIL" >&5 -echo "${ECHO_T}$DSYMUTIL" >&6; } -else - { echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6; } -fi - - -fi -if test -z "$ac_cv_prog_DSYMUTIL"; then - ac_ct_DSYMUTIL=$DSYMUTIL - # Extract the first word of "dsymutil", so it can be a program name with args. -set dummy dsymutil; ac_word=$2 -{ echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } -if test "${ac_cv_prog_ac_ct_DSYMUTIL+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - if test -n "$ac_ct_DSYMUTIL"; then - ac_cv_prog_ac_ct_DSYMUTIL="$ac_ct_DSYMUTIL" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_prog_ac_ct_DSYMUTIL="dsymutil" - echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done -done -IFS=$as_save_IFS - -fi -fi -ac_ct_DSYMUTIL=$ac_cv_prog_ac_ct_DSYMUTIL -if test -n "$ac_ct_DSYMUTIL"; then - { echo "$as_me:$LINENO: result: $ac_ct_DSYMUTIL" >&5 -echo "${ECHO_T}$ac_ct_DSYMUTIL" >&6; } -else - { echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6; } -fi - - if test "x$ac_ct_DSYMUTIL" = x; then - DSYMUTIL=":" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools -whose name does not start with the host triplet. If you think this -configuration is useful to you, please write to autoconf@gnu.org." >&5 -echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools -whose name does not start with the host triplet. If you think this -configuration is useful to you, please write to autoconf@gnu.org." >&2;} -ac_tool_warned=yes ;; -esac - DSYMUTIL=$ac_ct_DSYMUTIL - fi -else - DSYMUTIL="$ac_cv_prog_DSYMUTIL" -fi - - if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}nmedit", so it can be a program name with args. -set dummy ${ac_tool_prefix}nmedit; ac_word=$2 -{ echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } -if test "${ac_cv_prog_NMEDIT+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - if test -n "$NMEDIT"; then - ac_cv_prog_NMEDIT="$NMEDIT" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_prog_NMEDIT="${ac_tool_prefix}nmedit" - echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done -done -IFS=$as_save_IFS - -fi -fi -NMEDIT=$ac_cv_prog_NMEDIT -if test -n "$NMEDIT"; then - { echo "$as_me:$LINENO: result: $NMEDIT" >&5 -echo "${ECHO_T}$NMEDIT" >&6; } -else - { echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6; } -fi - - -fi -if test -z "$ac_cv_prog_NMEDIT"; then - ac_ct_NMEDIT=$NMEDIT - # Extract the first word of "nmedit", so it can be a program name with args. -set dummy nmedit; ac_word=$2 -{ echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } -if test "${ac_cv_prog_ac_ct_NMEDIT+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - if test -n "$ac_ct_NMEDIT"; then - ac_cv_prog_ac_ct_NMEDIT="$ac_ct_NMEDIT" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_prog_ac_ct_NMEDIT="nmedit" - echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done -done -IFS=$as_save_IFS - -fi -fi -ac_ct_NMEDIT=$ac_cv_prog_ac_ct_NMEDIT -if test -n "$ac_ct_NMEDIT"; then - { echo "$as_me:$LINENO: result: $ac_ct_NMEDIT" >&5 -echo "${ECHO_T}$ac_ct_NMEDIT" >&6; } -else - { echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6; } -fi - - if test "x$ac_ct_NMEDIT" = x; then - NMEDIT=":" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools -whose name does not start with the host triplet. If you think this -configuration is useful to you, please write to autoconf@gnu.org." >&5 -echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools -whose name does not start with the host triplet. If you think this -configuration is useful to you, please write to autoconf@gnu.org." >&2;} -ac_tool_warned=yes ;; -esac - NMEDIT=$ac_ct_NMEDIT - fi -else - NMEDIT="$ac_cv_prog_NMEDIT" -fi - - if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}lipo", so it can be a program name with args. -set dummy ${ac_tool_prefix}lipo; ac_word=$2 -{ echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } -if test "${ac_cv_prog_LIPO+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - if test -n "$LIPO"; then - ac_cv_prog_LIPO="$LIPO" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_prog_LIPO="${ac_tool_prefix}lipo" - echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done -done -IFS=$as_save_IFS - -fi -fi -LIPO=$ac_cv_prog_LIPO -if test -n "$LIPO"; then - { echo "$as_me:$LINENO: result: $LIPO" >&5 -echo "${ECHO_T}$LIPO" >&6; } -else - { echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6; } -fi - - -fi -if test -z "$ac_cv_prog_LIPO"; then - ac_ct_LIPO=$LIPO - # Extract the first word of "lipo", so it can be a program name with args. -set dummy lipo; ac_word=$2 -{ echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } -if test "${ac_cv_prog_ac_ct_LIPO+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - if test -n "$ac_ct_LIPO"; then - ac_cv_prog_ac_ct_LIPO="$ac_ct_LIPO" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_prog_ac_ct_LIPO="lipo" - echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 + fi + ;; + esac + ;; + esac fi -done -done -IFS=$as_save_IFS - -fi -fi -ac_ct_LIPO=$ac_cv_prog_ac_ct_LIPO -if test -n "$ac_ct_LIPO"; then - { echo "$as_me:$LINENO: result: $ac_ct_LIPO" >&5 -echo "${ECHO_T}$ac_ct_LIPO" >&6; } -else - { echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6; } -fi - - if test "x$ac_ct_LIPO" = x; then - LIPO=":" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools -whose name does not start with the host triplet. If you think this -configuration is useful to you, please write to autoconf@gnu.org." >&5 -echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools -whose name does not start with the host triplet. If you think this -configuration is useful to you, please write to autoconf@gnu.org." >&2;} -ac_tool_warned=yes ;; + rm -rf conftest* + ;; esac - LIPO=$ac_ct_LIPO - fi -else - LIPO="$ac_cv_prog_LIPO" -fi - if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}otool", so it can be a program name with args. -set dummy ${ac_tool_prefix}otool; ac_word=$2 -{ echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } -if test "${ac_cv_prog_OTOOL+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 +need_locks="$enable_libtool_lock" + +if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}mt", so it can be a program name with args. +set dummy ${ac_tool_prefix}mt; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_MANIFEST_TOOL+:} false; then : + $as_echo_n "(cached) " >&6 else - if test -n "$OTOOL"; then - ac_cv_prog_OTOOL="$OTOOL" # Let the user override the test. + if test -n "$MANIFEST_TOOL"; then + ac_cv_prog_MANIFEST_TOOL="$MANIFEST_TOOL" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do + for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_prog_OTOOL="${ac_tool_prefix}otool" - echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + ac_cv_prog_MANIFEST_TOOL="${ac_tool_prefix}mt" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done -done + done IFS=$as_save_IFS fi fi -OTOOL=$ac_cv_prog_OTOOL -if test -n "$OTOOL"; then - { echo "$as_me:$LINENO: result: $OTOOL" >&5 -echo "${ECHO_T}$OTOOL" >&6; } +MANIFEST_TOOL=$ac_cv_prog_MANIFEST_TOOL +if test -n "$MANIFEST_TOOL"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MANIFEST_TOOL" >&5 +$as_echo "$MANIFEST_TOOL" >&6; } else - { echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } fi fi -if test -z "$ac_cv_prog_OTOOL"; then - ac_ct_OTOOL=$OTOOL - # Extract the first word of "otool", so it can be a program name with args. -set dummy otool; ac_word=$2 -{ echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } -if test "${ac_cv_prog_ac_ct_OTOOL+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 +if test -z "$ac_cv_prog_MANIFEST_TOOL"; then + ac_ct_MANIFEST_TOOL=$MANIFEST_TOOL + # Extract the first word of "mt", so it can be a program name with args. +set dummy mt; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_ac_ct_MANIFEST_TOOL+:} false; then : + $as_echo_n "(cached) " >&6 else - if test -n "$ac_ct_OTOOL"; then - ac_cv_prog_ac_ct_OTOOL="$ac_ct_OTOOL" # Let the user override the test. + if test -n "$ac_ct_MANIFEST_TOOL"; then + ac_cv_prog_ac_ct_MANIFEST_TOOL="$ac_ct_MANIFEST_TOOL" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do + for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_prog_ac_ct_OTOOL="otool" - echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + ac_cv_prog_ac_ct_MANIFEST_TOOL="mt" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done -done + done IFS=$as_save_IFS fi fi -ac_ct_OTOOL=$ac_cv_prog_ac_ct_OTOOL -if test -n "$ac_ct_OTOOL"; then - { echo "$as_me:$LINENO: result: $ac_ct_OTOOL" >&5 -echo "${ECHO_T}$ac_ct_OTOOL" >&6; } +ac_ct_MANIFEST_TOOL=$ac_cv_prog_ac_ct_MANIFEST_TOOL +if test -n "$ac_ct_MANIFEST_TOOL"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_MANIFEST_TOOL" >&5 +$as_echo "$ac_ct_MANIFEST_TOOL" >&6; } else - { echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } fi - if test "x$ac_ct_OTOOL" = x; then - OTOOL=":" + if test "x$ac_ct_MANIFEST_TOOL" = x; then + MANIFEST_TOOL=":" else case $cross_compiling:$ac_tool_warned in yes:) -{ echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools -whose name does not start with the host triplet. If you think this -configuration is useful to you, please write to autoconf@gnu.org." >&5 -echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools -whose name does not start with the host triplet. If you think this -configuration is useful to you, please write to autoconf@gnu.org." >&2;} +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac - OTOOL=$ac_ct_OTOOL + MANIFEST_TOOL=$ac_ct_MANIFEST_TOOL fi else - OTOOL="$ac_cv_prog_OTOOL" + MANIFEST_TOOL="$ac_cv_prog_MANIFEST_TOOL" +fi + +test -z "$MANIFEST_TOOL" && MANIFEST_TOOL=mt +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if $MANIFEST_TOOL is a manifest tool" >&5 +$as_echo_n "checking if $MANIFEST_TOOL is a manifest tool... " >&6; } +if ${lt_cv_path_mainfest_tool+:} false; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_path_mainfest_tool=no + echo "$as_me:$LINENO: $MANIFEST_TOOL '-?'" >&5 + $MANIFEST_TOOL '-?' 2>conftest.err > conftest.out + cat conftest.err >&5 + if $GREP 'Manifest Tool' conftest.out > /dev/null; then + lt_cv_path_mainfest_tool=yes + fi + rm -f conftest* +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_path_mainfest_tool" >&5 +$as_echo "$lt_cv_path_mainfest_tool" >&6; } +if test "x$lt_cv_path_mainfest_tool" != xyes; then + MANIFEST_TOOL=: fi + + + + + + case $host_os in + rhapsody* | darwin*) if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}otool64", so it can be a program name with args. -set dummy ${ac_tool_prefix}otool64; ac_word=$2 -{ echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } -if test "${ac_cv_prog_OTOOL64+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 + # Extract the first word of "${ac_tool_prefix}dsymutil", so it can be a program name with args. +set dummy ${ac_tool_prefix}dsymutil; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_DSYMUTIL+:} false; then : + $as_echo_n "(cached) " >&6 else - if test -n "$OTOOL64"; then - ac_cv_prog_OTOOL64="$OTOOL64" # Let the user override the test. + if test -n "$DSYMUTIL"; then + ac_cv_prog_DSYMUTIL="$DSYMUTIL" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do + for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_prog_OTOOL64="${ac_tool_prefix}otool64" - echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + ac_cv_prog_DSYMUTIL="${ac_tool_prefix}dsymutil" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done -done + done IFS=$as_save_IFS fi fi -OTOOL64=$ac_cv_prog_OTOOL64 -if test -n "$OTOOL64"; then - { echo "$as_me:$LINENO: result: $OTOOL64" >&5 -echo "${ECHO_T}$OTOOL64" >&6; } +DSYMUTIL=$ac_cv_prog_DSYMUTIL +if test -n "$DSYMUTIL"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DSYMUTIL" >&5 +$as_echo "$DSYMUTIL" >&6; } else - { echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } fi fi -if test -z "$ac_cv_prog_OTOOL64"; then - ac_ct_OTOOL64=$OTOOL64 - # Extract the first word of "otool64", so it can be a program name with args. -set dummy otool64; ac_word=$2 -{ echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } -if test "${ac_cv_prog_ac_ct_OTOOL64+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 +if test -z "$ac_cv_prog_DSYMUTIL"; then + ac_ct_DSYMUTIL=$DSYMUTIL + # Extract the first word of "dsymutil", so it can be a program name with args. +set dummy dsymutil; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_ac_ct_DSYMUTIL+:} false; then : + $as_echo_n "(cached) " >&6 else - if test -n "$ac_ct_OTOOL64"; then - ac_cv_prog_ac_ct_OTOOL64="$ac_ct_OTOOL64" # Let the user override the test. + if test -n "$ac_ct_DSYMUTIL"; then + ac_cv_prog_ac_ct_DSYMUTIL="$ac_ct_DSYMUTIL" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do + for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_prog_ac_ct_OTOOL64="otool64" - echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + ac_cv_prog_ac_ct_DSYMUTIL="dsymutil" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done -done + done IFS=$as_save_IFS fi fi -ac_ct_OTOOL64=$ac_cv_prog_ac_ct_OTOOL64 -if test -n "$ac_ct_OTOOL64"; then - { echo "$as_me:$LINENO: result: $ac_ct_OTOOL64" >&5 -echo "${ECHO_T}$ac_ct_OTOOL64" >&6; } -else - { echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6; } -fi - - if test "x$ac_ct_OTOOL64" = x; then - OTOOL64=":" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools -whose name does not start with the host triplet. If you think this -configuration is useful to you, please write to autoconf@gnu.org." >&5 -echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools -whose name does not start with the host triplet. If you think this -configuration is useful to you, please write to autoconf@gnu.org." >&2;} -ac_tool_warned=yes ;; -esac - OTOOL64=$ac_ct_OTOOL64 - fi -else - OTOOL64="$ac_cv_prog_OTOOL64" -fi - - - - - - - - - - - - - - - - - - - - - - - - - - - - { echo "$as_me:$LINENO: checking for -single_module linker flag" >&5 -echo $ECHO_N "checking for -single_module linker flag... $ECHO_C" >&6; } -if test "${lt_cv_apple_cc_single_mod+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - lt_cv_apple_cc_single_mod=no - if test -z "${LT_MULTI_MODULE}"; then - # By default we will add the -single_module flag. You can override - # by either setting the environment variable LT_MULTI_MODULE - # non-empty at configure time, or by adding -multi_module to the - # link flags. - rm -rf libconftest.dylib* - echo "int foo(void){return 1;}" > conftest.c - echo "$LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \ --dynamiclib -Wl,-single_module conftest.c" >&5 - $LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \ - -dynamiclib -Wl,-single_module conftest.c 2>conftest.err - _lt_result=$? - if test -f libconftest.dylib && test ! -s conftest.err && test $_lt_result = 0; then - lt_cv_apple_cc_single_mod=yes - else - cat conftest.err >&5 - fi - rm -rf libconftest.dylib* - rm -f conftest.* - fi -fi -{ echo "$as_me:$LINENO: result: $lt_cv_apple_cc_single_mod" >&5 -echo "${ECHO_T}$lt_cv_apple_cc_single_mod" >&6; } - { echo "$as_me:$LINENO: checking for -exported_symbols_list linker flag" >&5 -echo $ECHO_N "checking for -exported_symbols_list linker flag... $ECHO_C" >&6; } -if test "${lt_cv_ld_exported_symbols_list+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - lt_cv_ld_exported_symbols_list=no - save_LDFLAGS=$LDFLAGS - echo "_main" > conftest.sym - LDFLAGS="$LDFLAGS -Wl,-exported_symbols_list,conftest.sym" - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ - -int -main () -{ - - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_link") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest$ac_exeext && - $as_test_x conftest$ac_exeext; then - lt_cv_ld_exported_symbols_list=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - lt_cv_ld_exported_symbols_list=no -fi - -rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ - conftest$ac_exeext conftest.$ac_ext - LDFLAGS="$save_LDFLAGS" - -fi -{ echo "$as_me:$LINENO: result: $lt_cv_ld_exported_symbols_list" >&5 -echo "${ECHO_T}$lt_cv_ld_exported_symbols_list" >&6; } - case $host_os in - rhapsody* | darwin1.[012]) - _lt_dar_allow_undefined='${wl}-undefined ${wl}suppress' ;; - darwin1.*) - _lt_dar_allow_undefined='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' ;; - darwin*) # darwin 5.x on - # if running on 10.5 or later, the deployment target defaults - # to the OS version, if on x86, and 10.4, the deployment - # target defaults to 10.4. Don't you love it? - case ${MACOSX_DEPLOYMENT_TARGET-10.0},$host in - 10.0,*86*-darwin8*|10.0,*-darwin[91]*) - _lt_dar_allow_undefined='${wl}-undefined ${wl}dynamic_lookup' ;; - 10.[012]*) - _lt_dar_allow_undefined='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' ;; - 10.*) - _lt_dar_allow_undefined='${wl}-undefined ${wl}dynamic_lookup' ;; - esac - ;; - esac - if test "$lt_cv_apple_cc_single_mod" = "yes"; then - _lt_dar_single_mod='$single_module' - fi - if test "$lt_cv_ld_exported_symbols_list" = "yes"; then - _lt_dar_export_syms=' ${wl}-exported_symbols_list,$output_objdir/${libname}-symbols.expsym' - else - _lt_dar_export_syms='~$NMEDIT -s $output_objdir/${libname}-symbols.expsym ${lib}' - fi - if test "$DSYMUTIL" != ":"; then - _lt_dsymutil='~$DSYMUTIL $lib || :' - else - _lt_dsymutil= - fi - ;; - esac - - -for ac_header in dlfcn.h -do -as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` -{ echo "$as_me:$LINENO: checking for $ac_header" >&5 -echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; } -if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -$ac_includes_default - -#include <$ac_header> -_ACEOF -rm -f conftest.$ac_objext -if { (ac_try="$ac_compile" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compile") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then - eval "$as_ac_Header=yes" -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - eval "$as_ac_Header=no" -fi - -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +ac_ct_DSYMUTIL=$ac_cv_prog_ac_ct_DSYMUTIL +if test -n "$ac_ct_DSYMUTIL"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DSYMUTIL" >&5 +$as_echo "$ac_ct_DSYMUTIL" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } fi -ac_res=`eval echo '${'$as_ac_Header'}'` - { echo "$as_me:$LINENO: result: $ac_res" >&5 -echo "${ECHO_T}$ac_res" >&6; } -if test `eval echo '${'$as_ac_Header'}'` = yes; then - cat >>confdefs.h <<_ACEOF -#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 -_ACEOF + if test "x$ac_ct_DSYMUTIL" = x; then + DSYMUTIL=":" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + DSYMUTIL=$ac_ct_DSYMUTIL + fi +else + DSYMUTIL="$ac_cv_prog_DSYMUTIL" fi -done - - - -ac_ext=cpp -ac_cpp='$CXXCPP $CPPFLAGS' -ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_cxx_compiler_gnu -if test -z "$CXX"; then - if test -n "$CCC"; then - CXX=$CCC - else if test -n "$ac_tool_prefix"; then - for ac_prog in g++ c++ gpp aCC CC cxx cc++ cl.exe FCC KCC RCC xlC_r xlC - do - # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. -set dummy $ac_tool_prefix$ac_prog; ac_word=$2 -{ echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } -if test "${ac_cv_prog_CXX+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 + # Extract the first word of "${ac_tool_prefix}nmedit", so it can be a program name with args. +set dummy ${ac_tool_prefix}nmedit; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_NMEDIT+:} false; then : + $as_echo_n "(cached) " >&6 else - if test -n "$CXX"; then - ac_cv_prog_CXX="$CXX" # Let the user override the test. + if test -n "$NMEDIT"; then + ac_cv_prog_NMEDIT="$NMEDIT" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do + for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_prog_CXX="$ac_tool_prefix$ac_prog" - echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + ac_cv_prog_NMEDIT="${ac_tool_prefix}nmedit" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done -done + done IFS=$as_save_IFS fi fi -CXX=$ac_cv_prog_CXX -if test -n "$CXX"; then - { echo "$as_me:$LINENO: result: $CXX" >&5 -echo "${ECHO_T}$CXX" >&6; } +NMEDIT=$ac_cv_prog_NMEDIT +if test -n "$NMEDIT"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $NMEDIT" >&5 +$as_echo "$NMEDIT" >&6; } else - { echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } fi - test -n "$CXX" && break - done fi -if test -z "$CXX"; then - ac_ct_CXX=$CXX - for ac_prog in g++ c++ gpp aCC CC cxx cc++ cl.exe FCC KCC RCC xlC_r xlC -do - # Extract the first word of "$ac_prog", so it can be a program name with args. -set dummy $ac_prog; ac_word=$2 -{ echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } -if test "${ac_cv_prog_ac_ct_CXX+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 +if test -z "$ac_cv_prog_NMEDIT"; then + ac_ct_NMEDIT=$NMEDIT + # Extract the first word of "nmedit", so it can be a program name with args. +set dummy nmedit; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_ac_ct_NMEDIT+:} false; then : + $as_echo_n "(cached) " >&6 else - if test -n "$ac_ct_CXX"; then - ac_cv_prog_ac_ct_CXX="$ac_ct_CXX" # Let the user override the test. + if test -n "$ac_ct_NMEDIT"; then + ac_cv_prog_ac_ct_NMEDIT="$ac_ct_NMEDIT" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do + for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_prog_ac_ct_CXX="$ac_prog" - echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + ac_cv_prog_ac_ct_NMEDIT="nmedit" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done -done + done IFS=$as_save_IFS fi fi -ac_ct_CXX=$ac_cv_prog_ac_ct_CXX -if test -n "$ac_ct_CXX"; then - { echo "$as_me:$LINENO: result: $ac_ct_CXX" >&5 -echo "${ECHO_T}$ac_ct_CXX" >&6; } +ac_ct_NMEDIT=$ac_cv_prog_ac_ct_NMEDIT +if test -n "$ac_ct_NMEDIT"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_NMEDIT" >&5 +$as_echo "$ac_ct_NMEDIT" >&6; } else - { echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } fi - - test -n "$ac_ct_CXX" && break -done - - if test "x$ac_ct_CXX" = x; then - CXX="g++" + if test "x$ac_ct_NMEDIT" = x; then + NMEDIT=":" else case $cross_compiling:$ac_tool_warned in yes:) -{ echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools -whose name does not start with the host triplet. If you think this -configuration is useful to you, please write to autoconf@gnu.org." >&5 -echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools -whose name does not start with the host triplet. If you think this -configuration is useful to you, please write to autoconf@gnu.org." >&2;} +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac - CXX=$ac_ct_CXX + NMEDIT=$ac_ct_NMEDIT fi +else + NMEDIT="$ac_cv_prog_NMEDIT" fi + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}lipo", so it can be a program name with args. +set dummy ${ac_tool_prefix}lipo; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_LIPO+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$LIPO"; then + ac_cv_prog_LIPO="$LIPO" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_LIPO="${ac_tool_prefix}lipo" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 fi -fi -# Provide some information about the compiler. -echo "$as_me:$LINENO: checking for C++ compiler version" >&5 -ac_compiler=`set X $ac_compile; echo $2` -{ (ac_try="$ac_compiler --version >&5" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compiler --version >&5") 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } -{ (ac_try="$ac_compiler -v >&5" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compiler -v >&5") 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } -{ (ac_try="$ac_compiler -V >&5" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compiler -V >&5") 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } +done + done +IFS=$as_save_IFS -{ echo "$as_me:$LINENO: checking whether we are using the GNU C++ compiler" >&5 -echo $ECHO_N "checking whether we are using the GNU C++ compiler... $ECHO_C" >&6; } -if test "${ac_cv_cxx_compiler_gnu+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 +fi +fi +LIPO=$ac_cv_prog_LIPO +if test -n "$LIPO"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LIPO" >&5 +$as_echo "$LIPO" >&6; } else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi -int -main () -{ -#ifndef __GNUC__ - choke me -#endif - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (ac_try="$ac_compile" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compile") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_cxx_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then - ac_compiler_gnu=yes +fi +if test -z "$ac_cv_prog_LIPO"; then + ac_ct_LIPO=$LIPO + # Extract the first word of "lipo", so it can be a program name with args. +set dummy lipo; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_ac_ct_LIPO+:} false; then : + $as_echo_n "(cached) " >&6 else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 + if test -n "$ac_ct_LIPO"; then + ac_cv_prog_ac_ct_LIPO="$ac_ct_LIPO" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_ac_ct_LIPO="lipo" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS - ac_compiler_gnu=no fi - -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -ac_cv_cxx_compiler_gnu=$ac_compiler_gnu - fi -{ echo "$as_me:$LINENO: result: $ac_cv_cxx_compiler_gnu" >&5 -echo "${ECHO_T}$ac_cv_cxx_compiler_gnu" >&6; } -GXX=`test $ac_compiler_gnu = yes && echo yes` -ac_test_CXXFLAGS=${CXXFLAGS+set} -ac_save_CXXFLAGS=$CXXFLAGS -{ echo "$as_me:$LINENO: checking whether $CXX accepts -g" >&5 -echo $ECHO_N "checking whether $CXX accepts -g... $ECHO_C" >&6; } -if test "${ac_cv_prog_cxx_g+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 +ac_ct_LIPO=$ac_cv_prog_ac_ct_LIPO +if test -n "$ac_ct_LIPO"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_LIPO" >&5 +$as_echo "$ac_ct_LIPO" >&6; } else - ac_save_cxx_werror_flag=$ac_cxx_werror_flag - ac_cxx_werror_flag=yes - ac_cv_prog_cxx_g=no - CXXFLAGS="-g" - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ - -int -main () -{ + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (ac_try="$ac_compile" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; + if test "x$ac_ct_LIPO" = x; then + LIPO=":" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compile") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_cxx_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then - ac_cv_prog_cxx_g=yes + LIPO=$ac_ct_LIPO + fi else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - CXXFLAGS="" - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ - -int -main () -{ + LIPO="$ac_cv_prog_LIPO" +fi - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (ac_try="$ac_compile" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compile") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_cxx_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then - : + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}otool", so it can be a program name with args. +set dummy ${ac_tool_prefix}otool; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_OTOOL+:} false; then : + $as_echo_n "(cached) " >&6 else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_cxx_werror_flag=$ac_save_cxx_werror_flag - CXXFLAGS="-g" - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ - -int -main () -{ + if test -n "$OTOOL"; then + ac_cv_prog_OTOOL="$OTOOL" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_OTOOL="${ac_tool_prefix}otool" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (ac_try="$ac_compile" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compile") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_cxx_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then - ac_cv_prog_cxx_g=yes +fi +fi +OTOOL=$ac_cv_prog_OTOOL +if test -n "$OTOOL"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $OTOOL" >&5 +$as_echo "$OTOOL" >&6; } else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi fi +if test -z "$ac_cv_prog_OTOOL"; then + ac_ct_OTOOL=$OTOOL + # Extract the first word of "otool", so it can be a program name with args. +set dummy otool; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_ac_ct_OTOOL+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_OTOOL"; then + ac_cv_prog_ac_ct_OTOOL="$ac_ct_OTOOL" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_ac_ct_OTOOL="otool" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi - -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi - -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext - ac_cxx_werror_flag=$ac_save_cxx_werror_flag +ac_ct_OTOOL=$ac_cv_prog_ac_ct_OTOOL +if test -n "$ac_ct_OTOOL"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OTOOL" >&5 +$as_echo "$ac_ct_OTOOL" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } fi -{ echo "$as_me:$LINENO: result: $ac_cv_prog_cxx_g" >&5 -echo "${ECHO_T}$ac_cv_prog_cxx_g" >&6; } -if test "$ac_test_CXXFLAGS" = set; then - CXXFLAGS=$ac_save_CXXFLAGS -elif test $ac_cv_prog_cxx_g = yes; then - if test "$GXX" = yes; then - CXXFLAGS="-g -O2" + + if test "x$ac_ct_OTOOL" = x; then + OTOOL=":" else - CXXFLAGS="-g" + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + OTOOL=$ac_ct_OTOOL fi else - if test "$GXX" = yes; then - CXXFLAGS="-O2" - else - CXXFLAGS= - fi + OTOOL="$ac_cv_prog_OTOOL" fi -ac_ext=cpp -ac_cpp='$CXXCPP $CPPFLAGS' -ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_cxx_compiler_gnu - -depcc="$CXX" am_compiler_list= -{ echo "$as_me:$LINENO: checking dependency style of $depcc" >&5 -echo $ECHO_N "checking dependency style of $depcc... $ECHO_C" >&6; } -if test "${am_cv_CXX_dependencies_compiler_type+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}otool64", so it can be a program name with args. +set dummy ${ac_tool_prefix}otool64; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_OTOOL64+:} false; then : + $as_echo_n "(cached) " >&6 else - if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then - # We make a subdir and do the tests there. Otherwise we can end up - # making bogus files that we don't know about and never remove. For - # instance it was reported that on HP-UX the gcc test will end up - # making a dummy file named `D' -- because `-MD' means `put the output - # in D'. - mkdir conftest.dir - # Copy depcomp to subdir because otherwise we won't find it if we're - # using a relative directory. - cp "$am_depcomp" conftest.dir - cd conftest.dir - # We will build objects and dependencies in a subdirectory because - # it helps to detect inapplicable dependency modes. For instance - # both Tru64's cc and ICC support -MD to output dependencies as a - # side effect of compilation, but ICC will put the dependencies in - # the current directory while Tru64 will put them in the object - # directory. - mkdir sub - - am_cv_CXX_dependencies_compiler_type=none - if test "$am_compiler_list" = ""; then - am_compiler_list=`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp` + if test -n "$OTOOL64"; then + ac_cv_prog_OTOOL64="$OTOOL64" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_OTOOL64="${ac_tool_prefix}otool64" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 fi - for depmode in $am_compiler_list; do - # Setup a source with many dependencies, because some compilers - # like to wrap large dependency lists on column 80 (with \), and - # we should not choose a depcomp mode which is confused by this. - # - # We need to recreate these files for each test, as the compiler may - # overwrite some of them when testing with obscure command lines. - # This happens at least with the AIX C compiler. - : > sub/conftest.c - for i in 1 2 3 4 5 6; do - echo '#include "conftst'$i'.h"' >> sub/conftest.c - # Using `: > sub/conftst$i.h' creates only sub/conftst1.h with - # Solaris 8's {/usr,}/bin/sh. - touch sub/conftst$i.h - done - echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf - - case $depmode in - nosideeffect) - # after this tag, mechanisms are not by side-effect, so they'll - # only be used when explicitly requested - if test "x$enable_dependency_tracking" = xyes; then - continue - else - break - fi - ;; - none) break ;; - esac - # We check with `-c' and `-o' for the sake of the "dashmstdout" - # mode. It turns out that the SunPro C++ compiler does not properly - # handle `-M -o', and we need to detect this. - if depmode=$depmode \ - source=sub/conftest.c object=sub/conftest.${OBJEXT-o} \ - depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ - $SHELL ./depcomp $depcc -c -o sub/conftest.${OBJEXT-o} sub/conftest.c \ - >/dev/null 2>conftest.err && - grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 && - grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && - grep sub/conftest.${OBJEXT-o} sub/conftest.Po > /dev/null 2>&1 && - ${MAKE-make} -s -f confmf > /dev/null 2>&1; then - # icc doesn't choke on unknown options, it will just issue warnings - # or remarks (even with -Werror). So we grep stderr for any message - # that says an option was ignored or not supported. - # When given -MP, icc 7.0 and 7.1 complain thusly: - # icc: Command line warning: ignoring option '-M'; no argument required - # The diagnosis changed in icc 8.0: - # icc: Command line remark: option '-MP' not supported - if (grep 'ignoring option' conftest.err || - grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else - am_cv_CXX_dependencies_compiler_type=$depmode - break - fi - fi +done done +IFS=$as_save_IFS - cd .. - rm -rf conftest.dir -else - am_cv_CXX_dependencies_compiler_type=none fi - fi -{ echo "$as_me:$LINENO: result: $am_cv_CXX_dependencies_compiler_type" >&5 -echo "${ECHO_T}$am_cv_CXX_dependencies_compiler_type" >&6; } -CXXDEPMODE=depmode=$am_cv_CXX_dependencies_compiler_type - - if - test "x$enable_dependency_tracking" != xno \ - && test "$am_cv_CXX_dependencies_compiler_type" = gcc3; then - am__fastdepCXX_TRUE= - am__fastdepCXX_FALSE='#' +OTOOL64=$ac_cv_prog_OTOOL64 +if test -n "$OTOOL64"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $OTOOL64" >&5 +$as_echo "$OTOOL64" >&6; } else - am__fastdepCXX_TRUE='#' - am__fastdepCXX_FALSE= + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } fi -if test -n "$CXX" && ( test "X$CXX" != "Xno" && - ( (test "X$CXX" = "Xg++" && `g++ -v >/dev/null 2>&1` ) || - (test "X$CXX" != "Xg++"))) ; then - ac_ext=cpp -ac_cpp='$CXXCPP $CPPFLAGS' -ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_cxx_compiler_gnu -{ echo "$as_me:$LINENO: checking how to run the C++ preprocessor" >&5 -echo $ECHO_N "checking how to run the C++ preprocessor... $ECHO_C" >&6; } -if test -z "$CXXCPP"; then - if test "${ac_cv_prog_CXXCPP+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 +fi +if test -z "$ac_cv_prog_OTOOL64"; then + ac_ct_OTOOL64=$OTOOL64 + # Extract the first word of "otool64", so it can be a program name with args. +set dummy otool64; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_ac_ct_OTOOL64+:} false; then : + $as_echo_n "(cached) " >&6 else - # Double quotes because CXXCPP needs to be expanded - for CXXCPP in "$CXX -E" "/lib/cpp" - do - ac_preproc_ok=false -for ac_cxx_preproc_warn_flag in '' yes + if test -n "$ac_ct_OTOOL64"; then + ac_cv_prog_ac_ct_OTOOL64="$ac_ct_OTOOL64" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH do - # Use a header file that comes with gcc, so configuring glibc - # with a fresh cross-compiler works. - # Prefer to if __STDC__ is defined, since - # exists even on freestanding compilers. - # On the NeXT, cc -E runs the code through the compiler's parser, - # not just through cpp. "Syntax error" is here to catch this case. - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -#ifdef __STDC__ -# include -#else -# include -#endif - Syntax error -_ACEOF -if { (ac_try="$ac_cpp conftest.$ac_ext" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_ac_ct_OTOOL64="otool64" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_OTOOL64=$ac_cv_prog_ac_ct_OTOOL64 +if test -n "$ac_ct_OTOOL64"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OTOOL64" >&5 +$as_echo "$ac_ct_OTOOL64" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + if test "x$ac_ct_OTOOL64" = x; then + OTOOL64=":" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } >/dev/null && { - test -z "$ac_cxx_preproc_warn_flag$ac_cxx_werror_flag" || - test ! -s conftest.err - }; then - : + OTOOL64=$ac_ct_OTOOL64 + fi else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 + OTOOL64="$ac_cv_prog_OTOOL64" +fi + + + - # Broken: fails on valid input. -continue -fi -rm -f conftest.err conftest.$ac_ext - # OK, works on sane cases. Now check whether nonexistent headers - # can be detected and how. - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -#include -_ACEOF -if { (ac_try="$ac_cpp conftest.$ac_ext" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } >/dev/null && { - test -z "$ac_cxx_preproc_warn_flag$ac_cxx_werror_flag" || - test ! -s conftest.err - }; then - # Broken: success on invalid input. -continue -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - # Passes both tests. -ac_preproc_ok=: -break -fi -rm -f conftest.err conftest.$ac_ext -done -# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. -rm -f conftest.err conftest.$ac_ext -if $ac_preproc_ok; then - break -fi - done - ac_cv_prog_CXXCPP=$CXXCPP -fi - CXXCPP=$ac_cv_prog_CXXCPP + + + + + + + + + + + + + + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for -single_module linker flag" >&5 +$as_echo_n "checking for -single_module linker flag... " >&6; } +if ${lt_cv_apple_cc_single_mod+:} false; then : + $as_echo_n "(cached) " >&6 else - ac_cv_prog_CXXCPP=$CXXCPP + lt_cv_apple_cc_single_mod=no + if test -z "${LT_MULTI_MODULE}"; then + # By default we will add the -single_module flag. You can override + # by either setting the environment variable LT_MULTI_MODULE + # non-empty at configure time, or by adding -multi_module to the + # link flags. + rm -rf libconftest.dylib* + echo "int foo(void){return 1;}" > conftest.c + echo "$LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \ +-dynamiclib -Wl,-single_module conftest.c" >&5 + $LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \ + -dynamiclib -Wl,-single_module conftest.c 2>conftest.err + _lt_result=$? + # If there is a non-empty error log, and "single_module" + # appears in it, assume the flag caused a linker warning + if test -s conftest.err && $GREP single_module conftest.err; then + cat conftest.err >&5 + # Otherwise, if the output was created with a 0 exit code from + # the compiler, it worked. + elif test -f libconftest.dylib && test $_lt_result -eq 0; then + lt_cv_apple_cc_single_mod=yes + else + cat conftest.err >&5 + fi + rm -rf libconftest.dylib* + rm -f conftest.* + fi fi -{ echo "$as_me:$LINENO: result: $CXXCPP" >&5 -echo "${ECHO_T}$CXXCPP" >&6; } -ac_preproc_ok=false -for ac_cxx_preproc_warn_flag in '' yes -do - # Use a header file that comes with gcc, so configuring glibc - # with a fresh cross-compiler works. - # Prefer to if __STDC__ is defined, since - # exists even on freestanding compilers. - # On the NeXT, cc -E runs the code through the compiler's parser, - # not just through cpp. "Syntax error" is here to catch this case. - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_apple_cc_single_mod" >&5 +$as_echo "$lt_cv_apple_cc_single_mod" >&6; } + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for -exported_symbols_list linker flag" >&5 +$as_echo_n "checking for -exported_symbols_list linker flag... " >&6; } +if ${lt_cv_ld_exported_symbols_list+:} false; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_ld_exported_symbols_list=no + save_LDFLAGS=$LDFLAGS + echo "_main" > conftest.sym + LDFLAGS="$LDFLAGS -Wl,-exported_symbols_list,conftest.sym" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ -#ifdef __STDC__ -# include -#else -# include -#endif - Syntax error + +int +main () +{ + + ; + return 0; +} _ACEOF -if { (ac_try="$ac_cpp conftest.$ac_ext" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } >/dev/null && { - test -z "$ac_cxx_preproc_warn_flag$ac_cxx_werror_flag" || - test ! -s conftest.err - }; then - : +if ac_fn_c_try_link "$LINENO"; then : + lt_cv_ld_exported_symbols_list=yes else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - # Broken: fails on valid input. -continue + lt_cv_ld_exported_symbols_list=no fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + LDFLAGS="$save_LDFLAGS" -rm -f conftest.err conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ld_exported_symbols_list" >&5 +$as_echo "$lt_cv_ld_exported_symbols_list" >&6; } - # OK, works on sane cases. Now check whether nonexistent headers - # can be detected and how. - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -#include -_ACEOF -if { (ac_try="$ac_cpp conftest.$ac_ext" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } >/dev/null && { - test -z "$ac_cxx_preproc_warn_flag$ac_cxx_werror_flag" || - test ! -s conftest.err - }; then - # Broken: success on invalid input. -continue + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for -force_load linker flag" >&5 +$as_echo_n "checking for -force_load linker flag... " >&6; } +if ${lt_cv_ld_force_load+:} false; then : + $as_echo_n "(cached) " >&6 else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 + lt_cv_ld_force_load=no + cat > conftest.c << _LT_EOF +int forced_loaded() { return 2;} +_LT_EOF + echo "$LTCC $LTCFLAGS -c -o conftest.o conftest.c" >&5 + $LTCC $LTCFLAGS -c -o conftest.o conftest.c 2>&5 + echo "$AR cru libconftest.a conftest.o" >&5 + $AR cru libconftest.a conftest.o 2>&5 + echo "$RANLIB libconftest.a" >&5 + $RANLIB libconftest.a 2>&5 + cat > conftest.c << _LT_EOF +int main() { return 0;} +_LT_EOF + echo "$LTCC $LTCFLAGS $LDFLAGS -o conftest conftest.c -Wl,-force_load,./libconftest.a" >&5 + $LTCC $LTCFLAGS $LDFLAGS -o conftest conftest.c -Wl,-force_load,./libconftest.a 2>conftest.err + _lt_result=$? + if test -s conftest.err && $GREP force_load conftest.err; then + cat conftest.err >&5 + elif test -f conftest && test $_lt_result -eq 0 && $GREP forced_load conftest >/dev/null 2>&1 ; then + lt_cv_ld_force_load=yes + else + cat conftest.err >&5 + fi + rm -f conftest.err libconftest.a conftest conftest.c + rm -rf conftest.dSYM - # Passes both tests. -ac_preproc_ok=: -break fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ld_force_load" >&5 +$as_echo "$lt_cv_ld_force_load" >&6; } + case $host_os in + rhapsody* | darwin1.[012]) + _lt_dar_allow_undefined='${wl}-undefined ${wl}suppress' ;; + darwin1.*) + _lt_dar_allow_undefined='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' ;; + darwin*) # darwin 5.x on + # if running on 10.5 or later, the deployment target defaults + # to the OS version, if on x86, and 10.4, the deployment + # target defaults to 10.4. Don't you love it? + case ${MACOSX_DEPLOYMENT_TARGET-10.0},$host in + 10.0,*86*-darwin8*|10.0,*-darwin[91]*) + _lt_dar_allow_undefined='${wl}-undefined ${wl}dynamic_lookup' ;; + 10.[012]*) + _lt_dar_allow_undefined='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' ;; + 10.*) + _lt_dar_allow_undefined='${wl}-undefined ${wl}dynamic_lookup' ;; + esac + ;; + esac + if test "$lt_cv_apple_cc_single_mod" = "yes"; then + _lt_dar_single_mod='$single_module' + fi + if test "$lt_cv_ld_exported_symbols_list" = "yes"; then + _lt_dar_export_syms=' ${wl}-exported_symbols_list,$output_objdir/${libname}-symbols.expsym' + else + _lt_dar_export_syms='~$NMEDIT -s $output_objdir/${libname}-symbols.expsym ${lib}' + fi + if test "$DSYMUTIL" != ":" && test "$lt_cv_ld_force_load" = "no"; then + _lt_dsymutil='~$DSYMUTIL $lib || :' + else + _lt_dsymutil= + fi + ;; + esac -rm -f conftest.err conftest.$ac_ext +for ac_header in dlfcn.h +do : + ac_fn_c_check_header_compile "$LINENO" "dlfcn.h" "ac_cv_header_dlfcn_h" "$ac_includes_default +" +if test "x$ac_cv_header_dlfcn_h" = xyes; then : + cat >>confdefs.h <<_ACEOF +#define HAVE_DLFCN_H 1 +_ACEOF -done -# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. -rm -f conftest.err conftest.$ac_ext -if $ac_preproc_ok; then - : -else - _lt_caught_CXX_error=yes fi -ac_ext=cpp -ac_cpp='$CXXCPP $CPPFLAGS' -ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_cxx_compiler_gnu +done + + + +func_stripname_cnf () +{ + case ${2} in + .*) func_stripname_result=`$ECHO "${3}" | $SED "s%^${1}%%; s%\\\\${2}\$%%"`;; + *) func_stripname_result=`$ECHO "${3}" | $SED "s%^${1}%%; s%${2}\$%%"`;; + esac +} # func_stripname_cnf -else - _lt_caught_CXX_error=yes -fi @@ -8525,7 +8262,7 @@ fi # Check whether --enable-shared was given. -if test "${enable_shared+set}" = set; then +if test "${enable_shared+set}" = set; then : enableval=$enable_shared; p=${PACKAGE-default} case $enableval in yes) enable_shared=yes ;; @@ -8556,7 +8293,7 @@ fi # Check whether --enable-static was given. -if test "${enable_static+set}" = set; then +if test "${enable_static+set}" = set; then : enableval=$enable_static; p=${PACKAGE-default} case $enableval in yes) enable_static=yes ;; @@ -8588,8 +8325,23 @@ fi # Check whether --with-pic was given. -if test "${with_pic+set}" = set; then - withval=$with_pic; pic_mode="$withval" +if test "${with_pic+set}" = set; then : + withval=$with_pic; lt_p=${PACKAGE-default} + case $withval in + yes|no) pic_mode=$withval ;; + *) + pic_mode=default + # Look at the argument we got. We use all the common list separators. + lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," + for lt_pkg in $withval; do + IFS="$lt_save_ifs" + if test "X$lt_pkg" = "X$lt_p"; then + pic_mode=yes + fi + done + IFS="$lt_save_ifs" + ;; + esac else pic_mode=default fi @@ -8604,7 +8356,7 @@ test -z "$pic_mode" && pic_mode=default # Check whether --enable-fast-install was given. -if test "${enable_fast_install+set}" = set; then +if test "${enable_fast_install+set}" = set; then : enableval=$enable_fast_install; p=${PACKAGE-default} case $enableval in yes) enable_fast_install=yes ;; @@ -8660,6 +8412,11 @@ LIBTOOL='$(SHELL) $(top_builddir)/libtool' + + + + + @@ -8685,10 +8442,10 @@ if test -n "${ZSH_VERSION+set}" ; then setopt NO_GLOB_SUBST fi -{ echo "$as_me:$LINENO: checking for objdir" >&5 -echo $ECHO_N "checking for objdir... $ECHO_C" >&6; } -if test "${lt_cv_objdir+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for objdir" >&5 +$as_echo_n "checking for objdir... " >&6; } +if ${lt_cv_objdir+:} false; then : + $as_echo_n "(cached) " >&6 else rm -f .libs 2>/dev/null mkdir .libs 2>/dev/null @@ -8700,8 +8457,8 @@ else fi rmdir .libs 2>/dev/null fi -{ echo "$as_me:$LINENO: result: $lt_cv_objdir" >&5 -echo "${ECHO_T}$lt_cv_objdir" >&6; } +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_objdir" >&5 +$as_echo "$lt_cv_objdir" >&6; } objdir=$lt_cv_objdir @@ -8715,19 +8472,6 @@ _ACEOF - - - - - - - - - - - - - case $host_os in aix3*) # AIX sometimes has problems with the GCC collect2 program. For some @@ -8740,23 +8484,6 @@ aix3*) ;; esac -# Sed substitution that helps us do robust quoting. It backslashifies -# metacharacters that are still active within double-quoted strings. -sed_quote_subst='s/\(["`$\\]\)/\\\1/g' - -# Same as above, but do not quote variable references. -double_quote_subst='s/\(["`\\]\)/\\\1/g' - -# Sed substitution to delay expansion of an escaped shell variable in a -# double_quote_subst'ed string. -delay_variable_subst='s/\\\\\\\\\\\$/\\\\\\$/g' - -# Sed substitution to delay expansion of an escaped single quote. -delay_single_quote_subst='s/'\''/'\'\\\\\\\'\''/g' - -# Sed substitution to avoid accidental globbing in evaled expressions -no_glob_subst='s/\*/\\\*/g' - # Global variables: ofile=libtool can_build_shared=yes @@ -8785,7 +8512,7 @@ for cc_temp in $compiler""; do *) break;; esac done -cc_basename=`$ECHO "X$cc_temp" | $Xsed -e 's%.*/%%' -e "s%^$host_alias-%%"` +cc_basename=`$ECHO "$cc_temp" | $SED "s%.*/%%; s%^$host_alias-%%"` # Only perform the check for file, if the check method requires it @@ -8793,10 +8520,10 @@ test -z "$MAGIC_CMD" && MAGIC_CMD=file case $deplibs_check_method in file_magic*) if test "$file_magic_cmd" = '$MAGIC_CMD'; then - { echo "$as_me:$LINENO: checking for ${ac_tool_prefix}file" >&5 -echo $ECHO_N "checking for ${ac_tool_prefix}file... $ECHO_C" >&6; } -if test "${lt_cv_path_MAGIC_CMD+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ${ac_tool_prefix}file" >&5 +$as_echo_n "checking for ${ac_tool_prefix}file... " >&6; } +if ${lt_cv_path_MAGIC_CMD+:} false; then : + $as_echo_n "(cached) " >&6 else case $MAGIC_CMD in [\\/*] | ?:[\\/]*) @@ -8846,11 +8573,11 @@ fi MAGIC_CMD="$lt_cv_path_MAGIC_CMD" if test -n "$MAGIC_CMD"; then - { echo "$as_me:$LINENO: result: $MAGIC_CMD" >&5 -echo "${ECHO_T}$MAGIC_CMD" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MAGIC_CMD" >&5 +$as_echo "$MAGIC_CMD" >&6; } else - { echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } fi @@ -8859,10 +8586,10 @@ fi if test -z "$lt_cv_path_MAGIC_CMD"; then if test -n "$ac_tool_prefix"; then - { echo "$as_me:$LINENO: checking for file" >&5 -echo $ECHO_N "checking for file... $ECHO_C" >&6; } -if test "${lt_cv_path_MAGIC_CMD+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for file" >&5 +$as_echo_n "checking for file... " >&6; } +if ${lt_cv_path_MAGIC_CMD+:} false; then : + $as_echo_n "(cached) " >&6 else case $MAGIC_CMD in [\\/*] | ?:[\\/]*) @@ -8912,11 +8639,11 @@ fi MAGIC_CMD="$lt_cv_path_MAGIC_CMD" if test -n "$MAGIC_CMD"; then - { echo "$as_me:$LINENO: result: $MAGIC_CMD" >&5 -echo "${ECHO_T}$MAGIC_CMD" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MAGIC_CMD" >&5 +$as_echo "$MAGIC_CMD" >&6; } else - { echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } fi @@ -8994,12 +8721,17 @@ if test -n "$compiler"; then lt_prog_compiler_no_builtin_flag= if test "$GCC" = yes; then - lt_prog_compiler_no_builtin_flag=' -fno-builtin' + case $cc_basename in + nvcc*) + lt_prog_compiler_no_builtin_flag=' -Xcompiler -fno-builtin' ;; + *) + lt_prog_compiler_no_builtin_flag=' -fno-builtin' ;; + esac - { echo "$as_me:$LINENO: checking if $compiler supports -fno-rtti -fno-exceptions" >&5 -echo $ECHO_N "checking if $compiler supports -fno-rtti -fno-exceptions... $ECHO_C" >&6; } -if test "${lt_cv_prog_compiler_rtti_exceptions+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -fno-rtti -fno-exceptions" >&5 +$as_echo_n "checking if $compiler supports -fno-rtti -fno-exceptions... " >&6; } +if ${lt_cv_prog_compiler_rtti_exceptions+:} false; then : + $as_echo_n "(cached) " >&6 else lt_cv_prog_compiler_rtti_exceptions=no ac_outfile=conftest.$ac_objext @@ -9014,15 +8746,15 @@ else -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` - (eval echo "\"\$as_me:9017: $lt_compile\"" >&5) + (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5) (eval "$lt_compile" 2>conftest.err) ac_status=$? cat conftest.err >&5 - echo "$as_me:9021: \$? = $ac_status" >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 if (exit $ac_status) && test -s "$ac_outfile"; then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings other than the usual output. - $ECHO "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' >conftest.exp + $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' >conftest.exp $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then lt_cv_prog_compiler_rtti_exceptions=yes @@ -9031,8 +8763,8 @@ else $RM conftest* fi -{ echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_rtti_exceptions" >&5 -echo "${ECHO_T}$lt_cv_prog_compiler_rtti_exceptions" >&6; } +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_rtti_exceptions" >&5 +$as_echo "$lt_cv_prog_compiler_rtti_exceptions" >&6; } if test x"$lt_cv_prog_compiler_rtti_exceptions" = xyes; then lt_prog_compiler_no_builtin_flag="$lt_prog_compiler_no_builtin_flag -fno-rtti -fno-exceptions" @@ -9051,8 +8783,6 @@ fi lt_prog_compiler_pic= lt_prog_compiler_static= -{ echo "$as_me:$LINENO: checking for $compiler option to produce PIC" >&5 -echo $ECHO_N "checking for $compiler option to produce PIC... $ECHO_C" >&6; } if test "$GCC" = yes; then lt_prog_compiler_wl='-Wl,' @@ -9086,7 +8816,7 @@ echo $ECHO_N "checking for $compiler option to produce PIC... $ECHO_C" >&6; } # PIC is the default for these OSes. ;; - mingw* | cygwin* | pw32* | os2*) + mingw* | cygwin* | pw32* | os2* | cegcc*) # This hack is so that the source file can tell whether it is being # built for inclusion in a dll (and should export symbols for example). # Although the cygwin gcc ignores -fPIC, still need this for old-style @@ -9100,11 +8830,18 @@ echo $ECHO_N "checking for $compiler option to produce PIC... $ECHO_C" >&6; } lt_prog_compiler_pic='-fno-common' ;; + haiku*) + # PIC is the default for Haiku. + # The "-static" flag exists, but is broken. + lt_prog_compiler_static= + ;; + hpux*) - # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but - # not for PA HP-UX. + # PIC is the default for 64-bit PA HP-UX, but not for 32-bit + # PA HP-UX. On IA64 HP-UX, PIC is the default but the pic flag + # sets the default TLS model and affects inlining. case $host_cpu in - hppa*64*|ia64*) + hppa*64*) # +Z the default ;; *) @@ -9141,6 +8878,15 @@ echo $ECHO_N "checking for $compiler option to produce PIC... $ECHO_C" >&6; } lt_prog_compiler_pic='-fPIC' ;; esac + + case $cc_basename in + nvcc*) # Cuda Compiler Driver 2.2 + lt_prog_compiler_wl='-Xlinker ' + if test -n "$lt_prog_compiler_pic"; then + lt_prog_compiler_pic="-Xcompiler $lt_prog_compiler_pic" + fi + ;; + esac else # PORTME Check for flag to pass linker flags through the system compiler. case $host_os in @@ -9154,7 +8900,7 @@ echo $ECHO_N "checking for $compiler option to produce PIC... $ECHO_C" >&6; } fi ;; - mingw* | cygwin* | pw32* | os2*) + mingw* | cygwin* | pw32* | os2* | cegcc*) # This hack is so that the source file can tell whether it is being # built for inclusion in a dll (and should export symbols for example). lt_prog_compiler_pic='-DDLL_EXPORT' @@ -9182,14 +8928,34 @@ echo $ECHO_N "checking for $compiler option to produce PIC... $ECHO_C" >&6; } lt_prog_compiler_static='-non_shared' ;; - linux* | k*bsd*-gnu) + linux* | k*bsd*-gnu | kopensolaris*-gnu) case $cc_basename in - icc* | ecc* | ifort*) + # old Intel for x86_64 which still supported -KPIC. + ecc*) + lt_prog_compiler_wl='-Wl,' + lt_prog_compiler_pic='-KPIC' + lt_prog_compiler_static='-static' + ;; + # icc used to be incompatible with GCC. + # ICC 10 doesn't accept -KPIC any more. + icc* | ifort*) lt_prog_compiler_wl='-Wl,' - lt_prog_compiler_pic='-KPIC' + lt_prog_compiler_pic='-fPIC' lt_prog_compiler_static='-static' ;; - pgcc* | pgf77* | pgf90* | pgf95*) + # Lahey Fortran 8.1. + lf95*) + lt_prog_compiler_wl='-Wl,' + lt_prog_compiler_pic='--shared' + lt_prog_compiler_static='--static' + ;; + nagfor*) + # NAG Fortran compiler + lt_prog_compiler_wl='-Wl,-Wl,,' + lt_prog_compiler_pic='-PIC' + lt_prog_compiler_static='-Bstatic' + ;; + pgcc* | pgf77* | pgf90* | pgf95* | pgfortran*) # Portland Group compilers (*not* the Pentium gcc compiler, # which looks to be a dead project) lt_prog_compiler_wl='-Wl,' @@ -9201,25 +8967,40 @@ echo $ECHO_N "checking for $compiler option to produce PIC... $ECHO_C" >&6; } # All Alpha code is PIC. lt_prog_compiler_static='-non_shared' ;; - xl*) - # IBM XL C 8.0/Fortran 10.1 on PPC + xl* | bgxl* | bgf* | mpixl*) + # IBM XL C 8.0/Fortran 10.1, 11.1 on PPC and BlueGene lt_prog_compiler_wl='-Wl,' lt_prog_compiler_pic='-qpic' lt_prog_compiler_static='-qstaticlink' ;; *) case `$CC -V 2>&1 | sed 5q` in + *Sun\ Ceres\ Fortran* | *Sun*Fortran*\ [1-7].* | *Sun*Fortran*\ 8.[0-3]*) + # Sun Fortran 8.3 passes all unrecognized flags to the linker + lt_prog_compiler_pic='-KPIC' + lt_prog_compiler_static='-Bstatic' + lt_prog_compiler_wl='' + ;; + *Sun\ F* | *Sun*Fortran*) + lt_prog_compiler_pic='-KPIC' + lt_prog_compiler_static='-Bstatic' + lt_prog_compiler_wl='-Qoption ld ' + ;; *Sun\ C*) # Sun C 5.9 lt_prog_compiler_pic='-KPIC' lt_prog_compiler_static='-Bstatic' lt_prog_compiler_wl='-Wl,' ;; - *Sun\ F*) - # Sun Fortran 8.3 passes all unrecognized flags to the linker - lt_prog_compiler_pic='-KPIC' + *Intel*\ [CF]*Compiler*) + lt_prog_compiler_wl='-Wl,' + lt_prog_compiler_pic='-fPIC' + lt_prog_compiler_static='-static' + ;; + *Portland\ Group*) + lt_prog_compiler_wl='-Wl,' + lt_prog_compiler_pic='-fpic' lt_prog_compiler_static='-Bstatic' - lt_prog_compiler_wl='' ;; esac ;; @@ -9251,7 +9032,7 @@ echo $ECHO_N "checking for $compiler option to produce PIC... $ECHO_C" >&6; } lt_prog_compiler_pic='-KPIC' lt_prog_compiler_static='-Bstatic' case $cc_basename in - f77* | f90* | f95*) + f77* | f90* | f95* | sunf77* | sunf90* | sunf95*) lt_prog_compiler_wl='-Qoption ld ';; *) lt_prog_compiler_wl='-Wl,';; @@ -9308,22 +9089,26 @@ case $host_os in lt_prog_compiler_pic="$lt_prog_compiler_pic -DPIC" ;; esac -{ echo "$as_me:$LINENO: result: $lt_prog_compiler_pic" >&5 -echo "${ECHO_T}$lt_prog_compiler_pic" >&6; } - - - - +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $compiler option to produce PIC" >&5 +$as_echo_n "checking for $compiler option to produce PIC... " >&6; } +if ${lt_cv_prog_compiler_pic+:} false; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_prog_compiler_pic=$lt_prog_compiler_pic +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic" >&5 +$as_echo "$lt_cv_prog_compiler_pic" >&6; } +lt_prog_compiler_pic=$lt_cv_prog_compiler_pic # # Check to make sure the PIC flag actually works. # if test -n "$lt_prog_compiler_pic"; then - { echo "$as_me:$LINENO: checking if $compiler PIC flag $lt_prog_compiler_pic works" >&5 -echo $ECHO_N "checking if $compiler PIC flag $lt_prog_compiler_pic works... $ECHO_C" >&6; } -if test "${lt_cv_prog_compiler_pic_works+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler PIC flag $lt_prog_compiler_pic works" >&5 +$as_echo_n "checking if $compiler PIC flag $lt_prog_compiler_pic works... " >&6; } +if ${lt_cv_prog_compiler_pic_works+:} false; then : + $as_echo_n "(cached) " >&6 else lt_cv_prog_compiler_pic_works=no ac_outfile=conftest.$ac_objext @@ -9338,15 +9123,15 @@ else -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` - (eval echo "\"\$as_me:9341: $lt_compile\"" >&5) + (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5) (eval "$lt_compile" 2>conftest.err) ac_status=$? cat conftest.err >&5 - echo "$as_me:9345: \$? = $ac_status" >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 if (exit $ac_status) && test -s "$ac_outfile"; then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings other than the usual output. - $ECHO "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' >conftest.exp + $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' >conftest.exp $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then lt_cv_prog_compiler_pic_works=yes @@ -9355,8 +9140,8 @@ else $RM conftest* fi -{ echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_pic_works" >&5 -echo "${ECHO_T}$lt_cv_prog_compiler_pic_works" >&6; } +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic_works" >&5 +$as_echo "$lt_cv_prog_compiler_pic_works" >&6; } if test x"$lt_cv_prog_compiler_pic_works" = xyes; then case $lt_prog_compiler_pic in @@ -9375,14 +9160,19 @@ fi + + + + + # # Check to make sure the static flag actually works. # wl=$lt_prog_compiler_wl eval lt_tmp_static_flag=\"$lt_prog_compiler_static\" -{ echo "$as_me:$LINENO: checking if $compiler static flag $lt_tmp_static_flag works" >&5 -echo $ECHO_N "checking if $compiler static flag $lt_tmp_static_flag works... $ECHO_C" >&6; } -if test "${lt_cv_prog_compiler_static_works+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler static flag $lt_tmp_static_flag works" >&5 +$as_echo_n "checking if $compiler static flag $lt_tmp_static_flag works... " >&6; } +if ${lt_cv_prog_compiler_static_works+:} false; then : + $as_echo_n "(cached) " >&6 else lt_cv_prog_compiler_static_works=no save_LDFLAGS="$LDFLAGS" @@ -9394,7 +9184,7 @@ else if test -s conftest.err; then # Append any errors to the config.log. cat conftest.err 1>&5 - $ECHO "X$_lt_linker_boilerplate" | $Xsed -e '/^$/d' > conftest.exp + $ECHO "$_lt_linker_boilerplate" | $SED '/^$/d' > conftest.exp $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 if diff conftest.exp conftest.er2 >/dev/null; then lt_cv_prog_compiler_static_works=yes @@ -9407,8 +9197,8 @@ else LDFLAGS="$save_LDFLAGS" fi -{ echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_static_works" >&5 -echo "${ECHO_T}$lt_cv_prog_compiler_static_works" >&6; } +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_static_works" >&5 +$as_echo "$lt_cv_prog_compiler_static_works" >&6; } if test x"$lt_cv_prog_compiler_static_works" = xyes; then : @@ -9422,10 +9212,10 @@ fi - { echo "$as_me:$LINENO: checking if $compiler supports -c -o file.$ac_objext" >&5 -echo $ECHO_N "checking if $compiler supports -c -o file.$ac_objext... $ECHO_C" >&6; } -if test "${lt_cv_prog_compiler_c_o+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5 +$as_echo_n "checking if $compiler supports -c -o file.$ac_objext... " >&6; } +if ${lt_cv_prog_compiler_c_o+:} false; then : + $as_echo_n "(cached) " >&6 else lt_cv_prog_compiler_c_o=no $RM -r conftest 2>/dev/null @@ -9443,16 +9233,16 @@ else -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` - (eval echo "\"\$as_me:9446: $lt_compile\"" >&5) + (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5) (eval "$lt_compile" 2>out/conftest.err) ac_status=$? cat out/conftest.err >&5 - echo "$as_me:9450: \$? = $ac_status" >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 if (exit $ac_status) && test -s out/conftest2.$ac_objext then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings - $ECHO "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' > out/conftest.exp + $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' > out/conftest.exp $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2 if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then lt_cv_prog_compiler_c_o=yes @@ -9469,18 +9259,18 @@ else $RM conftest* fi -{ echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_c_o" >&5 -echo "${ECHO_T}$lt_cv_prog_compiler_c_o" >&6; } +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o" >&5 +$as_echo "$lt_cv_prog_compiler_c_o" >&6; } - { echo "$as_me:$LINENO: checking if $compiler supports -c -o file.$ac_objext" >&5 -echo $ECHO_N "checking if $compiler supports -c -o file.$ac_objext... $ECHO_C" >&6; } -if test "${lt_cv_prog_compiler_c_o+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5 +$as_echo_n "checking if $compiler supports -c -o file.$ac_objext... " >&6; } +if ${lt_cv_prog_compiler_c_o+:} false; then : + $as_echo_n "(cached) " >&6 else lt_cv_prog_compiler_c_o=no $RM -r conftest 2>/dev/null @@ -9498,16 +9288,16 @@ else -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` - (eval echo "\"\$as_me:9501: $lt_compile\"" >&5) + (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5) (eval "$lt_compile" 2>out/conftest.err) ac_status=$? cat out/conftest.err >&5 - echo "$as_me:9505: \$? = $ac_status" >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 if (exit $ac_status) && test -s out/conftest2.$ac_objext then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings - $ECHO "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' > out/conftest.exp + $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' > out/conftest.exp $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2 if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then lt_cv_prog_compiler_c_o=yes @@ -9524,8 +9314,8 @@ else $RM conftest* fi -{ echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_c_o" >&5 -echo "${ECHO_T}$lt_cv_prog_compiler_c_o" >&6; } +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o" >&5 +$as_echo "$lt_cv_prog_compiler_c_o" >&6; } @@ -9533,19 +9323,19 @@ echo "${ECHO_T}$lt_cv_prog_compiler_c_o" >&6; } hard_links="nottested" if test "$lt_cv_prog_compiler_c_o" = no && test "$need_locks" != no; then # do not overwrite the value of need_locks provided by the user - { echo "$as_me:$LINENO: checking if we can lock with hard links" >&5 -echo $ECHO_N "checking if we can lock with hard links... $ECHO_C" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if we can lock with hard links" >&5 +$as_echo_n "checking if we can lock with hard links... " >&6; } hard_links=yes $RM conftest* ln conftest.a conftest.b 2>/dev/null && hard_links=no touch conftest.a ln conftest.a conftest.b 2>&5 || hard_links=no ln conftest.a conftest.b 2>/dev/null && hard_links=no - { echo "$as_me:$LINENO: result: $hard_links" >&5 -echo "${ECHO_T}$hard_links" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $hard_links" >&5 +$as_echo "$hard_links" >&6; } if test "$hard_links" = no; then - { echo "$as_me:$LINENO: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&5 -echo "$as_me: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&2;} + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&5 +$as_echo "$as_me: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&2;} need_locks=warn fi else @@ -9557,8 +9347,8 @@ fi - { echo "$as_me:$LINENO: checking whether the $compiler linker ($LD) supports shared libraries" >&5 -echo $ECHO_N "checking whether the $compiler linker ($LD) supports shared libraries... $ECHO_C" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the $compiler linker ($LD) supports shared libraries" >&5 +$as_echo_n "checking whether the $compiler linker ($LD) supports shared libraries... " >&6; } runpath_var= allow_undefined_flag= @@ -9573,7 +9363,6 @@ echo $ECHO_N "checking whether the $compiler linker ($LD) supports shared librar hardcode_direct=no hardcode_direct_absolute=no hardcode_libdir_flag_spec= - hardcode_libdir_flag_spec_ld= hardcode_libdir_separator= hardcode_minus_L=no hardcode_shlibpath_var=unsupported @@ -9602,7 +9391,7 @@ echo $ECHO_N "checking whether the $compiler linker ($LD) supports shared librar extract_expsyms_cmds= case $host_os in - cygwin* | mingw* | pw32*) + cygwin* | mingw* | pw32* | cegcc*) # FIXME: the MSVC++ port hasn't been tested in a loooong time # When not using gcc, we currently assume that we are using # Microsoft Visual C++. @@ -9617,10 +9406,39 @@ echo $ECHO_N "checking whether the $compiler linker ($LD) supports shared librar openbsd*) with_gnu_ld=no ;; + linux* | k*bsd*-gnu | gnu*) + link_all_deplibs=no + ;; esac ld_shlibs=yes + + # On some targets, GNU ld is compatible enough with the native linker + # that we're better off using the native interface for both. + lt_use_gnu_ld_interface=no if test "$with_gnu_ld" = yes; then + case $host_os in + aix*) + # The AIX port of GNU ld has always aspired to compatibility + # with the native linker. However, as the warning in the GNU ld + # block says, versions before 2.19.5* couldn't really create working + # shared libraries, regardless of the interface used. + case `$LD -v 2>&1` in + *\ \(GNU\ Binutils\)\ 2.19.5*) ;; + *\ \(GNU\ Binutils\)\ 2.[2-9]*) ;; + *\ \(GNU\ Binutils\)\ [3-9]*) ;; + *) + lt_use_gnu_ld_interface=yes + ;; + esac + ;; + *) + lt_use_gnu_ld_interface=yes + ;; + esac + fi + + if test "$lt_use_gnu_ld_interface" = yes; then # If archive_cmds runs LD, not CC, wlarc should be empty wlarc='${wl}' @@ -9638,6 +9456,7 @@ echo $ECHO_N "checking whether the $compiler linker ($LD) supports shared librar fi supports_anon_versioning=no case `$LD -v 2>&1` in + *GNU\ gold*) supports_anon_versioning=yes ;; *\ [01].* | *\ 2.[0-9].* | *\ 2.10.*) ;; # catch versions < 2.11 *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ... *\ 2.11.92.0.12\ *) supports_anon_versioning=yes ;; # Mandrake 8.2 ... @@ -9653,11 +9472,12 @@ echo $ECHO_N "checking whether the $compiler linker ($LD) supports shared librar ld_shlibs=no cat <<_LT_EOF 1>&2 -*** Warning: the GNU linker, at least up to release 2.9.1, is reported +*** Warning: the GNU linker, at least up to release 2.19, is reported *** to be unable to reliably create shared libraries on AIX. *** Therefore, libtool is disabling shared libraries support. If you -*** really care for shared libraries, you may want to modify your PATH -*** so that a non-GNU linker is found, and then restart. +*** really care for shared libraries, you may want to install binutils +*** 2.20 or above, or modify your PATH so that a non-GNU linker is found. +*** You will then need to restart the configuration process. _LT_EOF fi @@ -9689,14 +9509,16 @@ _LT_EOF fi ;; - cygwin* | mingw* | pw32*) + cygwin* | mingw* | pw32* | cegcc*) # _LT_TAGVAR(hardcode_libdir_flag_spec, ) is actually meaningless, # as there is no search path for DLLs. hardcode_libdir_flag_spec='-L$libdir' + export_dynamic_flag_spec='${wl}--export-all-symbols' allow_undefined_flag=unsupported always_export_symbols=no enable_shared_with_static_runtimes=yes - export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS][ ]/s/.*[ ]\([^ ]*\)/\1 DATA/'\'' | $SED -e '\''/^[AITW][ ]/s/.*[ ]//'\'' | sort | uniq > $export_symbols' + export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS][ ]/s/.*[ ]\([^ ]*\)/\1 DATA/;s/^.*[ ]__nm__\([^ ]*\)[ ][^ ]*/\1 DATA/;/^I[ ]/d;/^[AITW][ ]/s/.* //'\'' | sort | uniq > $export_symbols' + exclude_expsyms='[_]+GLOBAL_OFFSET_TABLE_|[_]+GLOBAL__[FID]_.*|[_]+head_[A-Za-z0-9_]+_dll|[A-Za-z0-9_]+_dll_iname' if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' @@ -9714,6 +9536,11 @@ _LT_EOF fi ;; + haiku*) + archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + link_all_deplibs=yes + ;; + interix[3-9]*) hardcode_direct=no hardcode_shlibpath_var=no @@ -9729,7 +9556,7 @@ _LT_EOF archive_expsym_cmds='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' ;; - gnu* | linux* | tpf* | k*bsd*-gnu) + gnu* | linux* | tpf* | k*bsd*-gnu | kopensolaris*-gnu) tmp_diet=no if test "$host_os" = linux-dietlibc; then case $cc_basename in @@ -9739,15 +9566,16 @@ _LT_EOF if $LD --help 2>&1 | $EGREP ': supported targets:.* elf' > /dev/null \ && test "$tmp_diet" = no then - tmp_addflag= + tmp_addflag=' $pic_flag' tmp_sharedflag='-shared' case $cc_basename,$host_cpu in pgcc*) # Portland Group C compiler - whole_archive_flag_spec='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $ECHO \"$new_convenience\"` ${wl}--no-whole-archive' + whole_archive_flag_spec='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' tmp_addflag=' $pic_flag' ;; - pgf77* | pgf90* | pgf95*) # Portland Group f77 and f90 compilers - whole_archive_flag_spec='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $ECHO \"$new_convenience\"` ${wl}--no-whole-archive' + pgf77* | pgf90* | pgf95* | pgfortran*) + # Portland Group f77 and f90 compilers + whole_archive_flag_spec='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' tmp_addflag=' $pic_flag -Mnomain' ;; ecc*,ia64* | icc*,ia64*) # Intel C compiler on ia64 tmp_addflag=' -i_dynamic' ;; @@ -9755,13 +9583,20 @@ _LT_EOF tmp_addflag=' -i_dynamic -nofor_main' ;; ifc* | ifort*) # Intel Fortran compiler tmp_addflag=' -nofor_main' ;; - xl[cC]*) # IBM XL C 8.0 on PPC (deal with xlf below) + lf95*) # Lahey Fortran 8.1 + whole_archive_flag_spec= + tmp_sharedflag='--shared' ;; + xl[cC]* | bgxl[cC]* | mpixl[cC]*) # IBM XL C 8.0 on PPC (deal with xlf below) tmp_sharedflag='-qmkshrobj' tmp_addflag= ;; + nvcc*) # Cuda Compiler Driver 2.2 + whole_archive_flag_spec='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' + compiler_needs_object=yes + ;; esac case `$CC -V 2>&1 | sed 5q` in *Sun\ C*) # Sun C 5.9 - whole_archive_flag_spec='${wl}--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; $ECHO \"$new_convenience\"` ${wl}--no-whole-archive' + whole_archive_flag_spec='${wl}--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' compiler_needs_object=yes tmp_sharedflag='-G' ;; *Sun\ F*) # Sun Fortran 8.3 @@ -9777,17 +9612,16 @@ _LT_EOF fi case $cc_basename in - xlf*) + xlf* | bgf* | bgxlf* | mpixlf*) # IBM XL Fortran 10.1 on PPC cannot create shared libs itself whole_archive_flag_spec='--whole-archive$convenience --no-whole-archive' - hardcode_libdir_flag_spec= - hardcode_libdir_flag_spec_ld='-rpath $libdir' - archive_cmds='$LD -shared $libobjs $deplibs $compiler_flags -soname $soname -o $lib' + hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' + archive_cmds='$LD -shared $libobjs $deplibs $linker_flags -soname $soname -o $lib' if test "x$supports_anon_versioning" = xyes; then archive_expsym_cmds='echo "{ global:" > $output_objdir/$libname.ver~ cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ echo "local: *; };" >> $output_objdir/$libname.ver~ - $LD -shared $libobjs $deplibs $compiler_flags -soname $soname -version-script $output_objdir/$libname.ver -o $lib' + $LD -shared $libobjs $deplibs $linker_flags -soname $soname -version-script $output_objdir/$libname.ver -o $lib' fi ;; esac @@ -9796,13 +9630,13 @@ _LT_EOF fi ;; - netbsd*) + netbsd* | netbsdelf*-gnu) if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then archive_cmds='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib' wlarc= else - archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' - archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' fi ;; @@ -9820,8 +9654,8 @@ _LT_EOF _LT_EOF elif $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then - archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' - archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' else ld_shlibs=no fi @@ -9867,8 +9701,8 @@ _LT_EOF *) if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then - archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' - archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' else ld_shlibs=no fi @@ -9908,8 +9742,10 @@ _LT_EOF else # If we're using GNU nm, then we don't want the "-C" option. # -C means demangle to AIX nm, but means don't demangle with GNU nm + # Also, AIX nm treats weak defined symbols like other global + # defined symbols, whereas GNU nm marks them as "W". if $NM -V 2>&1 | $GREP 'GNU' > /dev/null; then - export_symbols_cmds='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B")) && (substr(\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols' + export_symbols_cmds='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W")) && (substr(\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols' else export_symbols_cmds='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B")) && (substr(\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols' fi @@ -9971,6 +9807,7 @@ _LT_EOF if test "$aix_use_runtimelinking" = yes; then shared_flag="$shared_flag "'${wl}-G' fi + link_all_deplibs=no else # not using gcc if test "$host_cpu" = ia64; then @@ -9986,6 +9823,7 @@ _LT_EOF fi fi + export_dynamic_flag_spec='${wl}-bexpall' # It seems that -bexpall does not export symbols beginning with # underscore (_), so it is better to generate a list of symbols to export. always_export_symbols=yes @@ -9995,11 +9833,13 @@ _LT_EOF allow_undefined_flag='-berok' # Determine the default libpath from the value encoded in an # empty executable. - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF + if test "${lt_cv_aix_libpath+set}" = set; then + aix_libpath=$lt_cv_aix_libpath +else + if ${lt_cv_aix_libpath_+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int @@ -10010,50 +9850,34 @@ main () return 0; } _ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_link") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest$ac_exeext && - $as_test_x conftest$ac_exeext; then - -lt_aix_libpath_sed=' - /Import File Strings/,/^$/ { - /^0/ { - s/^0 *\(.*\)$/\1/ - p - } - }' -aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` -# Check for a 64-bit object if we didn't find anything. -if test -z "$aix_libpath"; then - aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` -fi -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 +if ac_fn_c_try_link "$LINENO"; then : + lt_aix_libpath_sed=' + /Import File Strings/,/^$/ { + /^0/ { + s/^0 *\([^ ]*\) *$/\1/ + p + } + }' + lt_cv_aix_libpath_=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` + # Check for a 64-bit object if we didn't find anything. + if test -z "$lt_cv_aix_libpath_"; then + lt_cv_aix_libpath_=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` + fi +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + if test -z "$lt_cv_aix_libpath_"; then + lt_cv_aix_libpath_="/usr/lib:/lib" + fi fi -rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ - conftest$ac_exeext conftest.$ac_ext -if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi + aix_libpath=$lt_cv_aix_libpath_ +fi hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:'"$aix_libpath" - archive_expsym_cmds='$CC -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then $ECHO "X${wl}${allow_undefined_flag}" | $Xsed; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag" + archive_expsym_cmds='$CC -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then func_echo_all "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag" else if test "$host_cpu" = ia64; then hardcode_libdir_flag_spec='${wl}-R $libdir:/usr/lib:/lib' @@ -10062,11 +9886,13 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi else # Determine the default libpath from the value encoded in an # empty executable. - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF + if test "${lt_cv_aix_libpath+set}" = set; then + aix_libpath=$lt_cv_aix_libpath +else + if ${lt_cv_aix_libpath_+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int @@ -10077,55 +9903,44 @@ main () return 0; } _ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_link") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest$ac_exeext && - $as_test_x conftest$ac_exeext; then - -lt_aix_libpath_sed=' - /Import File Strings/,/^$/ { - /^0/ { - s/^0 *\(.*\)$/\1/ - p - } - }' -aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` -# Check for a 64-bit object if we didn't find anything. -if test -z "$aix_libpath"; then - aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` -fi -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 +if ac_fn_c_try_link "$LINENO"; then : + lt_aix_libpath_sed=' + /Import File Strings/,/^$/ { + /^0/ { + s/^0 *\([^ ]*\) *$/\1/ + p + } + }' + lt_cv_aix_libpath_=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` + # Check for a 64-bit object if we didn't find anything. + if test -z "$lt_cv_aix_libpath_"; then + lt_cv_aix_libpath_=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` + fi +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + if test -z "$lt_cv_aix_libpath_"; then + lt_cv_aix_libpath_="/usr/lib:/lib" + fi fi -rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ - conftest$ac_exeext conftest.$ac_ext -if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi + aix_libpath=$lt_cv_aix_libpath_ +fi hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:'"$aix_libpath" # Warning - without using the other run time loading flags, # -berok will link without error, but may produce a broken library. no_undefined_flag=' ${wl}-bernotok' allow_undefined_flag=' ${wl}-berok' - # Exported symbols can be pulled into shared objects from archives - whole_archive_flag_spec='$convenience' + if test "$with_gnu_ld" = yes; then + # We only use this code for GNU lds that support --whole-archive. + whole_archive_flag_spec='${wl}--whole-archive$convenience ${wl}--no-whole-archive' + else + # Exported symbols can be pulled into shared objects from archives + whole_archive_flag_spec='$convenience' + fi archive_cmds_need_lc=yes # This is similar to how AIX traditionally builds its shared libraries. archive_expsym_cmds="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname' @@ -10152,25 +9967,69 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi export_dynamic_flag_spec=-rdynamic ;; - cygwin* | mingw* | pw32*) + cygwin* | mingw* | pw32* | cegcc*) # When not using gcc, we currently assume that we are using # Microsoft Visual C++. # hardcode_libdir_flag_spec is actually meaningless, as there is # no search path for DLLs. - hardcode_libdir_flag_spec=' ' - allow_undefined_flag=unsupported - # Tell ltmain to make .lib files, not .a files. - libext=lib - # Tell ltmain to make .dll files, not .so files. - shrext_cmds=".dll" - # FIXME: Setting linknames here is a bad hack. - archive_cmds='$CC -o $lib $libobjs $compiler_flags `$ECHO "X$deplibs" | $Xsed -e '\''s/ -lc$//'\''` -link -dll~linknames=' - # The linker will automatically build a .lib file if we build a DLL. - old_archive_from_new_cmds='true' - # FIXME: Should let the user specify the lib program. - old_archive_cmds='lib -OUT:$oldlib$oldobjs$old_deplibs' - fix_srcfile_path='`cygpath -w "$srcfile"`' - enable_shared_with_static_runtimes=yes + case $cc_basename in + cl*) + # Native MSVC + hardcode_libdir_flag_spec=' ' + allow_undefined_flag=unsupported + always_export_symbols=yes + file_list_spec='@' + # Tell ltmain to make .lib files, not .a files. + libext=lib + # Tell ltmain to make .dll files, not .so files. + shrext_cmds=".dll" + # FIXME: Setting linknames here is a bad hack. + archive_cmds='$CC -o $output_objdir/$soname $libobjs $compiler_flags $deplibs -Wl,-dll~linknames=' + archive_expsym_cmds='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then + sed -n -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' -e '1\\\!p' < $export_symbols > $output_objdir/$soname.exp; + else + sed -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' < $export_symbols > $output_objdir/$soname.exp; + fi~ + $CC -o $tool_output_objdir$soname $libobjs $compiler_flags $deplibs "@$tool_output_objdir$soname.exp" -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~ + linknames=' + # The linker will not automatically build a static lib if we build a DLL. + # _LT_TAGVAR(old_archive_from_new_cmds, )='true' + enable_shared_with_static_runtimes=yes + exclude_expsyms='_NULL_IMPORT_DESCRIPTOR|_IMPORT_DESCRIPTOR_.*' + export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS][ ]/s/.*[ ]\([^ ]*\)/\1,DATA/'\'' | $SED -e '\''/^[AITW][ ]/s/.*[ ]//'\'' | sort | uniq > $export_symbols' + # Don't use ranlib + old_postinstall_cmds='chmod 644 $oldlib' + postlink_cmds='lt_outputfile="@OUTPUT@"~ + lt_tool_outputfile="@TOOL_OUTPUT@"~ + case $lt_outputfile in + *.exe|*.EXE) ;; + *) + lt_outputfile="$lt_outputfile.exe" + lt_tool_outputfile="$lt_tool_outputfile.exe" + ;; + esac~ + if test "$MANIFEST_TOOL" != ":" && test -f "$lt_outputfile.manifest"; then + $MANIFEST_TOOL -manifest "$lt_tool_outputfile.manifest" -outputresource:"$lt_tool_outputfile" || exit 1; + $RM "$lt_outputfile.manifest"; + fi' + ;; + *) + # Assume MSVC wrapper + hardcode_libdir_flag_spec=' ' + allow_undefined_flag=unsupported + # Tell ltmain to make .lib files, not .a files. + libext=lib + # Tell ltmain to make .dll files, not .so files. + shrext_cmds=".dll" + # FIXME: Setting linknames here is a bad hack. + archive_cmds='$CC -o $lib $libobjs $compiler_flags `func_echo_all "$deplibs" | $SED '\''s/ -lc$//'\''` -link -dll~linknames=' + # The linker will automatically build a .lib file if we build a DLL. + old_archive_from_new_cmds='true' + # FIXME: Should let the user specify the lib program. + old_archive_cmds='lib -OUT:$oldlib$oldobjs$old_deplibs' + enable_shared_with_static_runtimes=yes + ;; + esac ;; darwin* | rhapsody*) @@ -10180,11 +10039,20 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi hardcode_direct=no hardcode_automatic=yes hardcode_shlibpath_var=unsupported - whole_archive_flag_spec='' + if test "$lt_cv_ld_force_load" = "yes"; then + whole_archive_flag_spec='`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience ${wl}-force_load,$conv\"; done; func_echo_all \"$new_convenience\"`' + + else + whole_archive_flag_spec='' + fi link_all_deplibs=yes allow_undefined_flag="$_lt_dar_allow_undefined" - if test "$GCC" = "yes"; then - output_verbose_link_cmd=echo + case $cc_basename in + ifort*) _lt_dar_can_shared=yes ;; + *) _lt_dar_can_shared=$GCC ;; + esac + if test "$_lt_dar_can_shared" = "yes"; then + output_verbose_link_cmd=func_echo_all archive_cmds="\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod${_lt_dsymutil}" module_cmds="\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dsymutil}" archive_expsym_cmds="sed 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring ${_lt_dar_single_mod}${_lt_dar_export_syms}${_lt_dsymutil}" @@ -10202,10 +10070,6 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi hardcode_shlibpath_var=no ;; - freebsd1*) - ld_shlibs=no - ;; - # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor # support. Future versions do this automatically, but an explicit c++rt0.o # does not break anything, and helps significantly (at the cost of a little @@ -10218,7 +10082,7 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi ;; # Unfortunately, older versions of FreeBSD 2 do not have this feature. - freebsd2*) + freebsd2.*) archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' hardcode_direct=yes hardcode_minus_L=yes @@ -10227,7 +10091,7 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi # FreeBSD 3 and greater uses gcc -shared to do shared libraries. freebsd* | dragonfly*) - archive_cmds='$CC -shared -o $lib $libobjs $deplibs $compiler_flags' + archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' hardcode_libdir_flag_spec='-R$libdir' hardcode_direct=yes hardcode_shlibpath_var=no @@ -10235,7 +10099,7 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi hpux9*) if test "$GCC" = yes; then - archive_cmds='$RM $output_objdir/$soname~$CC -shared -fPIC ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' + archive_cmds='$RM $output_objdir/$soname~$CC -shared $pic_flag ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' else archive_cmds='$RM $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' fi @@ -10250,14 +10114,13 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi ;; hpux10*) - if test "$GCC" = yes -a "$with_gnu_ld" = no; then - archive_cmds='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' + if test "$GCC" = yes && test "$with_gnu_ld" = no; then + archive_cmds='$CC -shared $pic_flag ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' else archive_cmds='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags' fi if test "$with_gnu_ld" = no; then hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir' - hardcode_libdir_flag_spec_ld='+b $libdir' hardcode_libdir_separator=: hardcode_direct=yes hardcode_direct_absolute=yes @@ -10269,16 +10132,16 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi ;; hpux11*) - if test "$GCC" = yes -a "$with_gnu_ld" = no; then + if test "$GCC" = yes && test "$with_gnu_ld" = no; then case $host_cpu in hppa*64*) archive_cmds='$CC -shared ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' ;; ia64*) - archive_cmds='$CC -shared ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' + archive_cmds='$CC -shared $pic_flag ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' ;; *) - archive_cmds='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' + archive_cmds='$CC -shared $pic_flag ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' ;; esac else @@ -10290,7 +10153,46 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi archive_cmds='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' ;; *) - archive_cmds='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' + + # Older versions of the 11.00 compiler do not understand -b yet + # (HP92453-01 A.11.01.20 doesn't, HP92453-01 B.11.X.35175-35176.GP does) + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC understands -b" >&5 +$as_echo_n "checking if $CC understands -b... " >&6; } +if ${lt_cv_prog_compiler__b+:} false; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_prog_compiler__b=no + save_LDFLAGS="$LDFLAGS" + LDFLAGS="$LDFLAGS -b" + echo "$lt_simple_link_test_code" > conftest.$ac_ext + if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then + # The linker can only warn and ignore the option if not recognized + # So say no if there are warnings + if test -s conftest.err; then + # Append any errors to the config.log. + cat conftest.err 1>&5 + $ECHO "$_lt_linker_boilerplate" | $SED '/^$/d' > conftest.exp + $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 + if diff conftest.exp conftest.er2 >/dev/null; then + lt_cv_prog_compiler__b=yes + fi + else + lt_cv_prog_compiler__b=yes + fi + fi + $RM -r conftest* + LDFLAGS="$save_LDFLAGS" + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler__b" >&5 +$as_echo "$lt_cv_prog_compiler__b" >&6; } + +if test x"$lt_cv_prog_compiler__b" = xyes; then + archive_cmds='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' +else + archive_cmds='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags' +fi + ;; esac fi @@ -10318,48 +10220,39 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi irix5* | irix6* | nonstopux*) if test "$GCC" = yes; then - archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && $ECHO "X${wl}-set_version ${wl}$verstring" | $Xsed` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' + archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' # Try to use the -exported_symbol ld option, if it does not # work, assume that -exports_file does not work either and # implicitly export all symbols. - save_LDFLAGS="$LDFLAGS" - LDFLAGS="$LDFLAGS -shared ${wl}-exported_symbol ${wl}foo ${wl}-update_registry ${wl}/dev/null" - cat >conftest.$ac_ext <<_ACEOF -int foo(void) {} + # This should be the same for all languages, so no per-tag cache variable. + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the $host_os linker accepts -exported_symbol" >&5 +$as_echo_n "checking whether the $host_os linker accepts -exported_symbol... " >&6; } +if ${lt_cv_irix_exported_symbol+:} false; then : + $as_echo_n "(cached) " >&6 +else + save_LDFLAGS="$LDFLAGS" + LDFLAGS="$LDFLAGS -shared ${wl}-exported_symbol ${wl}foo ${wl}-update_registry ${wl}/dev/null" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int foo (void) { return 0; } _ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_link") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest$ac_exeext && - $as_test_x conftest$ac_exeext; then - archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && $ECHO "X${wl}-set_version ${wl}$verstring" | $Xsed` ${wl}-update_registry ${wl}${output_objdir}/so_locations ${wl}-exports_file ${wl}$export_symbols -o $lib' - +if ac_fn_c_try_link "$LINENO"; then : + lt_cv_irix_exported_symbol=yes else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - + lt_cv_irix_exported_symbol=no fi - -rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ - conftest$ac_exeext conftest.$ac_ext - LDFLAGS="$save_LDFLAGS" +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + LDFLAGS="$save_LDFLAGS" +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_irix_exported_symbol" >&5 +$as_echo "$lt_cv_irix_exported_symbol" >&6; } + if test "$lt_cv_irix_exported_symbol" = yes; then + archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations ${wl}-exports_file ${wl}$export_symbols -o $lib' + fi else - archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && $ECHO "X-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -o $lib' - archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && $ECHO "X-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -exports_file $export_symbols -o $lib' + archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib' + archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -exports_file $export_symbols -o $lib' fi archive_cmds_need_lc='no' hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' @@ -10368,7 +10261,7 @@ rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ link_all_deplibs=yes ;; - netbsd*) + netbsd* | netbsdelf*-gnu) if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' # a.out else @@ -10421,17 +10314,17 @@ rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ hardcode_libdir_flag_spec='-L$libdir' hardcode_minus_L=yes allow_undefined_flag=unsupported - archive_cmds='$ECHO "LIBRARY $libname INITINSTANCE" > $output_objdir/$libname.def~$ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~$ECHO DATA >> $output_objdir/$libname.def~$ECHO " SINGLE NONSHARED" >> $output_objdir/$libname.def~$ECHO EXPORTS >> $output_objdir/$libname.def~emxexp $libobjs >> $output_objdir/$libname.def~$CC -Zdll -Zcrtdll -o $lib $libobjs $deplibs $compiler_flags $output_objdir/$libname.def' + archive_cmds='$ECHO "LIBRARY $libname INITINSTANCE" > $output_objdir/$libname.def~$ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~echo DATA >> $output_objdir/$libname.def~echo " SINGLE NONSHARED" >> $output_objdir/$libname.def~echo EXPORTS >> $output_objdir/$libname.def~emxexp $libobjs >> $output_objdir/$libname.def~$CC -Zdll -Zcrtdll -o $lib $libobjs $deplibs $compiler_flags $output_objdir/$libname.def' old_archive_from_new_cmds='emximp -o $output_objdir/$libname.a $output_objdir/$libname.def' ;; osf3*) if test "$GCC" = yes; then allow_undefined_flag=' ${wl}-expect_unresolved ${wl}\*' - archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && $ECHO "X${wl}-set_version ${wl}$verstring" | $Xsed` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' + archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' else allow_undefined_flag=' -expect_unresolved \*' - archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && $ECHO "X-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -o $lib' + archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib' fi archive_cmds_need_lc='no' hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' @@ -10441,13 +10334,13 @@ rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ osf4* | osf5*) # as osf3* with the addition of -msym flag if test "$GCC" = yes; then allow_undefined_flag=' ${wl}-expect_unresolved ${wl}\*' - archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && $ECHO "X${wl}-set_version ${wl}$verstring" | $Xsed` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' + archive_cmds='$CC -shared${allow_undefined_flag} $pic_flag $libobjs $deplibs $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' else allow_undefined_flag=' -expect_unresolved \*' - archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags -msym -soname $soname `test -n "$verstring" && $ECHO "X-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -o $lib' + archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags -msym -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib' archive_expsym_cmds='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done; printf "%s\\n" "-hidden">> $lib.exp~ - $CC -shared${allow_undefined_flag} ${wl}-input ${wl}$lib.exp $compiler_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && $ECHO "X-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -o $lib~$RM $lib.exp' + $CC -shared${allow_undefined_flag} ${wl}-input ${wl}$lib.exp $compiler_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && $ECHO "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib~$RM $lib.exp' # Both c and cxx compiler support -rpath directly hardcode_libdir_flag_spec='-rpath $libdir' @@ -10460,9 +10353,9 @@ rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ no_undefined_flag=' -z defs' if test "$GCC" = yes; then wlarc='${wl}' - archive_cmds='$CC -shared ${wl}-z ${wl}text ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' + archive_cmds='$CC -shared $pic_flag ${wl}-z ${wl}text ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ - $CC -shared ${wl}-z ${wl}text ${wl}-M ${wl}$lib.exp ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp' + $CC -shared $pic_flag ${wl}-z ${wl}text ${wl}-M ${wl}$lib.exp ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp' else case `$CC -V 2>&1` in *"Compilers 5.0"*) @@ -10611,8 +10504,8 @@ rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ fi fi -{ echo "$as_me:$LINENO: result: $ld_shlibs" >&5 -echo "${ECHO_T}$ld_shlibs" >&6; } +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ld_shlibs" >&5 +$as_echo "$ld_shlibs" >&6; } test "$ld_shlibs" = no && can_build_shared=no with_gnu_ld=$with_gnu_ld @@ -10648,46 +10541,52 @@ x|xyes) # Test whether the compiler implicitly links with -lc since on some # systems, -lgcc has to come before -lc. If gcc already passes -lc # to ld, don't add -lc before -lgcc. - { echo "$as_me:$LINENO: checking whether -lc should be explicitly linked in" >&5 -echo $ECHO_N "checking whether -lc should be explicitly linked in... $ECHO_C" >&6; } - $RM conftest* - echo "$lt_simple_compile_test_code" > conftest.$ac_ext + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether -lc should be explicitly linked in" >&5 +$as_echo_n "checking whether -lc should be explicitly linked in... " >&6; } +if ${lt_cv_archive_cmds_need_lc+:} false; then : + $as_echo_n "(cached) " >&6 +else + $RM conftest* + echo "$lt_simple_compile_test_code" > conftest.$ac_ext - if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 (eval $ac_compile) 2>&5 ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } 2>conftest.err; then - soname=conftest - lib=conftest - libobjs=conftest.$ac_objext - deplibs= - wl=$lt_prog_compiler_wl - pic_flag=$lt_prog_compiler_pic - compiler_flags=-v - linker_flags=-v - verstring= - output_objdir=. - libname=conftest - lt_save_allow_undefined_flag=$allow_undefined_flag - allow_undefined_flag= - if { (eval echo "$as_me:$LINENO: \"$archive_cmds 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1\"") >&5 + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } 2>conftest.err; then + soname=conftest + lib=conftest + libobjs=conftest.$ac_objext + deplibs= + wl=$lt_prog_compiler_wl + pic_flag=$lt_prog_compiler_pic + compiler_flags=-v + linker_flags=-v + verstring= + output_objdir=. + libname=conftest + lt_save_allow_undefined_flag=$allow_undefined_flag + allow_undefined_flag= + if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$archive_cmds 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1\""; } >&5 (eval $archive_cmds 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1) 2>&5 ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } - then - archive_cmds_need_lc=no - else - archive_cmds_need_lc=yes - fi - allow_undefined_flag=$lt_save_allow_undefined_flag - else - cat conftest.err 1>&5 - fi - $RM conftest* - { echo "$as_me:$LINENO: result: $archive_cmds_need_lc" >&5 -echo "${ECHO_T}$archive_cmds_need_lc" >&6; } + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } + then + lt_cv_archive_cmds_need_lc=no + else + lt_cv_archive_cmds_need_lc=yes + fi + allow_undefined_flag=$lt_save_allow_undefined_flag + else + cat conftest.err 1>&5 + fi + $RM conftest* + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_archive_cmds_need_lc" >&5 +$as_echo "$lt_cv_archive_cmds_need_lc" >&6; } + archive_cmds_need_lc=$lt_cv_archive_cmds_need_lc ;; esac fi @@ -10845,29 +10744,31 @@ esac - - - - - - { echo "$as_me:$LINENO: checking dynamic linker characteristics" >&5 -echo $ECHO_N "checking dynamic linker characteristics... $ECHO_C" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: checking dynamic linker characteristics" >&5 +$as_echo_n "checking dynamic linker characteristics... " >&6; } if test "$GCC" = yes; then case $host_os in darwin*) lt_awk_arg="/^libraries:/,/LR/" ;; *) lt_awk_arg="/^libraries:/" ;; esac - lt_search_path_spec=`$CC -print-search-dirs | awk $lt_awk_arg | $SED -e "s/^libraries://" -e "s,=/,/,g"` - if $ECHO "$lt_search_path_spec" | $GREP ';' >/dev/null ; then + case $host_os in + mingw* | cegcc*) lt_sed_strip_eq="s,=\([A-Za-z]:\),\1,g" ;; + *) lt_sed_strip_eq="s,=/,/,g" ;; + esac + lt_search_path_spec=`$CC -print-search-dirs | awk $lt_awk_arg | $SED -e "s/^libraries://" -e $lt_sed_strip_eq` + case $lt_search_path_spec in + *\;*) # if the path contains ";" then we assume it to be the separator # otherwise default to the standard path separator (i.e. ":") - it is # assumed that no part of a normal pathname contains ";" but that should # okay in the real world where ";" in dirpaths is itself problematic. - lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED -e 's/;/ /g'` - else - lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` - fi + lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED 's/;/ /g'` + ;; + *) + lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED "s/$PATH_SEPARATOR/ /g"` + ;; + esac # Ok, now we have the path, separated by spaces, we can step through it # and add multilib dir if necessary. lt_tmp_lt_search_path_spec= @@ -10880,7 +10781,7 @@ if test "$GCC" = yes; then lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path" fi done - lt_search_path_spec=`$ECHO $lt_tmp_lt_search_path_spec | awk ' + lt_search_path_spec=`$ECHO "$lt_tmp_lt_search_path_spec" | awk ' BEGIN {RS=" "; FS="/|\n";} { lt_foo=""; lt_count=0; @@ -10900,7 +10801,13 @@ BEGIN {RS=" "; FS="/|\n";} { if (lt_foo != "") { lt_freq[lt_foo]++; } if (lt_freq[lt_foo] == 1) { print lt_foo; } }'` - sys_lib_search_path_spec=`$ECHO $lt_search_path_spec` + # AWK program above erroneously prepends '/' to C:/dos/paths + # for these hosts. + case $host_os in + mingw* | cegcc*) lt_search_path_spec=`$ECHO "$lt_search_path_spec" |\ + $SED 's,/\([A-Za-z]:\),\1,g'` ;; + esac + sys_lib_search_path_spec=`$ECHO "$lt_search_path_spec" | $lt_NL2SP` else sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib" fi @@ -10926,7 +10833,7 @@ need_version=unknown case $host_os in aix3*) - version_type=linux + version_type=linux # correct to gnu/linux during the next big refactor library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a' shlibpath_var=LIBPATH @@ -10935,7 +10842,7 @@ aix3*) ;; aix[4-9]*) - version_type=linux + version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no hardcode_into_libs=yes @@ -10988,7 +10895,7 @@ amigaos*) m68k) library_names_spec='$libname.ixlibrary $libname.a' # Create ${libname}_ixlibrary.a entries in /sys/libs. - finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`$ECHO "X$lib" | $Xsed -e '\''s%^.*/\([^/]*\)\.ixlibrary$%\1%'\''`; test $RM /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done' + finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`func_echo_all "$lib" | $SED '\''s%^.*/\([^/]*\)\.ixlibrary$%\1%'\''`; test $RM /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done' ;; esac ;; @@ -11000,7 +10907,7 @@ beos*) ;; bsdi[45]*) - version_type=linux + version_type=linux # correct to gnu/linux during the next big refactor need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' @@ -11013,14 +10920,15 @@ bsdi[45]*) # libtool to hard-code these into programs ;; -cygwin* | mingw* | pw32*) +cygwin* | mingw* | pw32* | cegcc*) version_type=windows shrext_cmds=".dll" need_version=no need_lib_prefix=no - case $GCC,$host_os in - yes,cygwin* | yes,mingw* | yes,pw32*) + case $GCC,$cc_basename in + yes,*) + # gcc library_names_spec='$libname.dll.a' # DLL is installed to $(libdir)/../bin by postinstall_cmds postinstall_cmds='base_file=`basename \${file}`~ @@ -11041,36 +10949,83 @@ cygwin* | mingw* | pw32*) cygwin*) # Cygwin DLLs use 'cyg' prefix rather than 'lib' soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' - sys_lib_search_path_spec="/usr/lib /lib/w32api /lib /usr/local/lib" + + sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/lib/w32api" ;; - mingw*) + mingw* | cegcc*) # MinGW DLLs use traditional 'lib' prefix soname_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' - sys_lib_search_path_spec=`$CC -print-search-dirs | $GREP "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"` - if $ECHO "$sys_lib_search_path_spec" | $GREP ';[c-zC-Z]:/' >/dev/null; then - # It is most probably a Windows format PATH printed by - # mingw gcc, but we are running on Cygwin. Gcc prints its search - # path with ; separators, and with drive letters. We can handle the - # drive letters (cygwin fileutils understands them), so leave them, - # especially as we might pass files found there to a mingw objdump, - # which wouldn't understand a cygwinified path. Ahh. - sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'` - else - sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` - fi ;; pw32*) # pw32 DLLs use 'pw' prefix rather than 'lib' library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' ;; esac + dynamic_linker='Win32 ld.exe' + ;; + + *,cl*) + # Native MSVC + libname_spec='$name' + soname_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' + library_names_spec='${libname}.dll.lib' + + case $build_os in + mingw*) + sys_lib_search_path_spec= + lt_save_ifs=$IFS + IFS=';' + for lt_path in $LIB + do + IFS=$lt_save_ifs + # Let DOS variable expansion print the short 8.3 style file name. + lt_path=`cd "$lt_path" 2>/dev/null && cmd //C "for %i in (".") do @echo %~si"` + sys_lib_search_path_spec="$sys_lib_search_path_spec $lt_path" + done + IFS=$lt_save_ifs + # Convert to MSYS style. + sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | sed -e 's|\\\\|/|g' -e 's| \\([a-zA-Z]\\):| /\\1|g' -e 's|^ ||'` + ;; + cygwin*) + # Convert to unix form, then to dos form, then back to unix form + # but this time dos style (no spaces!) so that the unix form looks + # like /cygdrive/c/PROGRA~1:/cygdr... + sys_lib_search_path_spec=`cygpath --path --unix "$LIB"` + sys_lib_search_path_spec=`cygpath --path --dos "$sys_lib_search_path_spec" 2>/dev/null` + sys_lib_search_path_spec=`cygpath --path --unix "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` + ;; + *) + sys_lib_search_path_spec="$LIB" + if $ECHO "$sys_lib_search_path_spec" | $GREP ';[c-zC-Z]:/' >/dev/null; then + # It is most probably a Windows format PATH. + sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'` + else + sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` + fi + # FIXME: find the short name or the path components, as spaces are + # common. (e.g. "Program Files" -> "PROGRA~1") + ;; + esac + + # DLL is installed to $(libdir)/../bin by postinstall_cmds + postinstall_cmds='base_file=`basename \${file}`~ + dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i; echo \$dlname'\''`~ + dldir=$destdir/`dirname \$dlpath`~ + test -d \$dldir || mkdir -p \$dldir~ + $install_prog $dir/$dlname \$dldir/$dlname' + postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ + dlpath=$dir/\$dldll~ + $RM \$dlpath' + shlibpath_overrides_runpath=yes + dynamic_linker='Win32 link.exe' ;; *) + # Assume MSVC wrapper library_names_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext} $libname.lib' + dynamic_linker='Win32 ld.exe' ;; esac - dynamic_linker='Win32 ld.exe' # FIXME: first we should search . and the directory the executable is in shlibpath_var=PATH ;; @@ -11091,7 +11046,7 @@ darwin* | rhapsody*) ;; dgux*) - version_type=linux + version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname$shared_ext' @@ -11099,10 +11054,6 @@ dgux*) shlibpath_var=LD_LIBRARY_PATH ;; -freebsd1*) - dynamic_linker=no - ;; - freebsd* | dragonfly*) # DragonFly does not have aout. When/if they implement a new # versioning mechanism, adjust this. @@ -11110,7 +11061,7 @@ freebsd* | dragonfly*) objformat=`/usr/bin/objformat` else case $host_os in - freebsd[123]*) objformat=aout ;; + freebsd[23].*) objformat=aout ;; *) objformat=elf ;; esac fi @@ -11128,7 +11079,7 @@ freebsd* | dragonfly*) esac shlibpath_var=LD_LIBRARY_PATH case $host_os in - freebsd2*) + freebsd2.*) shlibpath_overrides_runpath=yes ;; freebsd3.[01]* | freebsdelf3.[01]*) @@ -11148,12 +11099,26 @@ freebsd* | dragonfly*) ;; gnu*) - version_type=linux + version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + ;; + +haiku*) + version_type=linux # correct to gnu/linux during the next big refactor + need_lib_prefix=no + need_version=no + dynamic_linker="$host_os runtime_loader" + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LIBRARY_PATH + shlibpath_overrides_runpath=yes + sys_lib_dlsearch_path_spec='/boot/home/config/lib /boot/common/lib /boot/system/lib' hardcode_into_libs=yes ;; @@ -11199,12 +11164,14 @@ hpux9* | hpux10* | hpux11*) soname_spec='${libname}${release}${shared_ext}$major' ;; esac - # HP-UX runs *really* slowly unless shared libraries are mode 555. + # HP-UX runs *really* slowly unless shared libraries are mode 555, ... postinstall_cmds='chmod 555 $lib' + # or fails outright, so override atomically: + install_override_mode=555 ;; interix[3-9]*) - version_type=linux + version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' @@ -11220,7 +11187,7 @@ irix5* | irix6* | nonstopux*) nonstopux*) version_type=nonstopux ;; *) if test "$lt_cv_prog_gnu_ld" = yes; then - version_type=linux + version_type=linux # correct to gnu/linux during the next big refactor else version_type=irix fi ;; @@ -11257,9 +11224,9 @@ linux*oldld* | linux*aout* | linux*coff*) dynamic_linker=no ;; -# This must be Linux ELF. -linux* | k*bsd*-gnu) - version_type=linux +# This must be glibc/ELF. +linux* | k*bsd*-gnu | kopensolaris*-gnu) + version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' @@ -11267,16 +11234,17 @@ linux* | k*bsd*-gnu) finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no + # Some binutils ld are patched to set DT_RUNPATH - save_LDFLAGS=$LDFLAGS - save_libdir=$libdir - eval "libdir=/foo; wl=\"$lt_prog_compiler_wl\"; \ - LDFLAGS=\"\$LDFLAGS $hardcode_libdir_flag_spec\"" - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF + if ${lt_cv_shlibpath_overrides_runpath+:} false; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_shlibpath_overrides_runpath=no + save_LDFLAGS=$LDFLAGS + save_libdir=$libdir + eval "libdir=/foo; wl=\"$lt_prog_compiler_wl\"; \ + LDFLAGS=\"\$LDFLAGS $hardcode_libdir_flag_spec\"" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int @@ -11287,39 +11255,19 @@ main () return 0; } _ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_link") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest$ac_exeext && - $as_test_x conftest$ac_exeext; then - if ($OBJDUMP -p conftest$ac_exeext) 2>/dev/null | grep "RUNPATH.*$libdir" >/dev/null; then - shlibpath_overrides_runpath=yes +if ac_fn_c_try_link "$LINENO"; then : + if ($OBJDUMP -p conftest$ac_exeext) 2>/dev/null | grep "RUNPATH.*$libdir" >/dev/null; then : + lt_cv_shlibpath_overrides_runpath=yes fi - -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + LDFLAGS=$save_LDFLAGS + libdir=$save_libdir fi -rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ - conftest$ac_exeext conftest.$ac_ext - LDFLAGS=$save_LDFLAGS - libdir=$save_libdir + shlibpath_overrides_runpath=$lt_cv_shlibpath_overrides_runpath # This implies no fast_install, which is unacceptable. # Some rework will be needed to allow for fast_install @@ -11328,7 +11276,7 @@ rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ # Append ld.so.conf contents to the search path if test -f /etc/ld.so.conf; then - lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \$2)); skip = 1; } { if (!skip) print \$0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;/^[ ]*hwcap[ ]/d;s/[:, ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;/^$/d' | tr '\n' ' '` + lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \$2)); skip = 1; } { if (!skip) print \$0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;/^[ ]*hwcap[ ]/d;s/[:, ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;s/"//g;/^$/d' | tr '\n' ' '` sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra" fi @@ -11341,6 +11289,18 @@ rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ dynamic_linker='GNU/Linux ld.so' ;; +netbsdelf*-gnu) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + dynamic_linker='NetBSD ld.elf_so' + ;; + netbsd*) version_type=sunos need_lib_prefix=no @@ -11360,7 +11320,7 @@ netbsd*) ;; newsos6) - version_type=linux + version_type=linux # correct to gnu/linux during the next big refactor library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes @@ -11429,7 +11389,7 @@ rdos*) ;; solaris*) - version_type=linux + version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' @@ -11454,7 +11414,7 @@ sunos4*) ;; sysv4 | sysv4.3*) - version_type=linux + version_type=linux # correct to gnu/linux during the next big refactor library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH @@ -11478,7 +11438,7 @@ sysv4 | sysv4.3*) sysv4*MP*) if test -d /usr/nec ;then - version_type=linux + version_type=linux # correct to gnu/linux during the next big refactor library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}' soname_spec='$libname${shared_ext}.$major' shlibpath_var=LD_LIBRARY_PATH @@ -11509,17 +11469,17 @@ sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) tpf*) # TPF is a cross-target only. Preferred cross-host = GNU/Linux. - version_type=linux + version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no - library_name_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no hardcode_into_libs=yes ;; uts4*) - version_type=linux + version_type=linux # correct to gnu/linux during the next big refactor library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH @@ -11529,8 +11489,8 @@ uts4*) dynamic_linker=no ;; esac -{ echo "$as_me:$LINENO: result: $dynamic_linker" >&5 -echo "${ECHO_T}$dynamic_linker" >&6; } +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $dynamic_linker" >&5 +$as_echo "$dynamic_linker" >&6; } test "$dynamic_linker" = no && can_build_shared=no variables_saved_for_relink="PATH $shlibpath_var $runpath_var" @@ -11631,8 +11591,13 @@ fi - { echo "$as_me:$LINENO: checking how to hardcode library paths into programs" >&5 -echo $ECHO_N "checking how to hardcode library paths into programs... $ECHO_C" >&6; } + + + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to hardcode library paths into programs" >&5 +$as_echo_n "checking how to hardcode library paths into programs... " >&6; } hardcode_action= if test -n "$hardcode_libdir_flag_spec" || test -n "$runpath_var" || @@ -11656,8 +11621,8 @@ else # directories. hardcode_action=unsupported fi -{ echo "$as_me:$LINENO: result: $hardcode_action" >&5 -echo "${ECHO_T}$hardcode_action" >&6; } +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $hardcode_action" >&5 +$as_echo "$hardcode_action" >&6; } if test "$hardcode_action" = relink || test "$inherit_rpath" = yes; then @@ -11689,7 +11654,7 @@ else lt_cv_dlopen_self=yes ;; - mingw* | pw32*) + mingw* | pw32* | cegcc*) lt_cv_dlopen="LoadLibrary" lt_cv_dlopen_libs= ;; @@ -11701,18 +11666,14 @@ else darwin*) # if libdl is installed we need to link against it - { echo "$as_me:$LINENO: checking for dlopen in -ldl" >&5 -echo $ECHO_N "checking for dlopen in -ldl... $ECHO_C" >&6; } -if test "${ac_cv_lib_dl_dlopen+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dlopen in -ldl" >&5 +$as_echo_n "checking for dlopen in -ldl... " >&6; } +if ${ac_cv_lib_dl_dlopen+:} false; then : + $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-ldl $LIBS" -cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF +cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. @@ -11730,39 +11691,18 @@ return dlopen (); return 0; } _ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_link") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest$ac_exeext && - $as_test_x conftest$ac_exeext; then +if ac_fn_c_try_link "$LINENO"; then : ac_cv_lib_dl_dlopen=yes else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_cv_lib_dl_dlopen=no + ac_cv_lib_dl_dlopen=no fi - -rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ - conftest$ac_exeext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi -{ echo "$as_me:$LINENO: result: $ac_cv_lib_dl_dlopen" >&5 -echo "${ECHO_T}$ac_cv_lib_dl_dlopen" >&6; } -if test $ac_cv_lib_dl_dlopen = yes; then +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dl_dlopen" >&5 +$as_echo "$ac_cv_lib_dl_dlopen" >&6; } +if test "x$ac_cv_lib_dl_dlopen" = xyes; then : lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl" else @@ -11775,102 +11715,18 @@ fi ;; *) - { echo "$as_me:$LINENO: checking for shl_load" >&5 -echo $ECHO_N "checking for shl_load... $ECHO_C" >&6; } -if test "${ac_cv_func_shl_load+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -/* Define shl_load to an innocuous variant, in case declares shl_load. - For example, HP-UX 11i declares gettimeofday. */ -#define shl_load innocuous_shl_load - -/* System header to define __stub macros and hopefully few prototypes, - which can conflict with char shl_load (); below. - Prefer to if __STDC__ is defined, since - exists even on freestanding compilers. */ - -#ifdef __STDC__ -# include -#else -# include -#endif - -#undef shl_load - -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif -char shl_load (); -/* The GNU C library defines this for functions which it implements - to always fail with ENOSYS. Some functions are actually named - something starting with __ and the normal name is an alias. */ -#if defined __stub_shl_load || defined __stub___shl_load -choke me -#endif - -int -main () -{ -return shl_load (); - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_link") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest$ac_exeext && - $as_test_x conftest$ac_exeext; then - ac_cv_func_shl_load=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_cv_func_shl_load=no -fi - -rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ - conftest$ac_exeext conftest.$ac_ext -fi -{ echo "$as_me:$LINENO: result: $ac_cv_func_shl_load" >&5 -echo "${ECHO_T}$ac_cv_func_shl_load" >&6; } -if test $ac_cv_func_shl_load = yes; then + ac_fn_c_check_func "$LINENO" "shl_load" "ac_cv_func_shl_load" +if test "x$ac_cv_func_shl_load" = xyes; then : lt_cv_dlopen="shl_load" else - { echo "$as_me:$LINENO: checking for shl_load in -ldld" >&5 -echo $ECHO_N "checking for shl_load in -ldld... $ECHO_C" >&6; } -if test "${ac_cv_lib_dld_shl_load+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for shl_load in -ldld" >&5 +$as_echo_n "checking for shl_load in -ldld... " >&6; } +if ${ac_cv_lib_dld_shl_load+:} false; then : + $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-ldld $LIBS" -cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF +cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. @@ -11888,137 +11744,32 @@ return shl_load (); return 0; } _ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_link") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest$ac_exeext && - $as_test_x conftest$ac_exeext; then +if ac_fn_c_try_link "$LINENO"; then : ac_cv_lib_dld_shl_load=yes else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_cv_lib_dld_shl_load=no + ac_cv_lib_dld_shl_load=no fi - -rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ - conftest$ac_exeext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi -{ echo "$as_me:$LINENO: result: $ac_cv_lib_dld_shl_load" >&5 -echo "${ECHO_T}$ac_cv_lib_dld_shl_load" >&6; } -if test $ac_cv_lib_dld_shl_load = yes; then +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dld_shl_load" >&5 +$as_echo "$ac_cv_lib_dld_shl_load" >&6; } +if test "x$ac_cv_lib_dld_shl_load" = xyes; then : lt_cv_dlopen="shl_load" lt_cv_dlopen_libs="-ldld" else - { echo "$as_me:$LINENO: checking for dlopen" >&5 -echo $ECHO_N "checking for dlopen... $ECHO_C" >&6; } -if test "${ac_cv_func_dlopen+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -/* Define dlopen to an innocuous variant, in case declares dlopen. - For example, HP-UX 11i declares gettimeofday. */ -#define dlopen innocuous_dlopen - -/* System header to define __stub macros and hopefully few prototypes, - which can conflict with char dlopen (); below. - Prefer to if __STDC__ is defined, since - exists even on freestanding compilers. */ - -#ifdef __STDC__ -# include -#else -# include -#endif - -#undef dlopen - -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif -char dlopen (); -/* The GNU C library defines this for functions which it implements - to always fail with ENOSYS. Some functions are actually named - something starting with __ and the normal name is an alias. */ -#if defined __stub_dlopen || defined __stub___dlopen -choke me -#endif - -int -main () -{ -return dlopen (); - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_link") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest$ac_exeext && - $as_test_x conftest$ac_exeext; then - ac_cv_func_dlopen=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_cv_func_dlopen=no -fi - -rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ - conftest$ac_exeext conftest.$ac_ext -fi -{ echo "$as_me:$LINENO: result: $ac_cv_func_dlopen" >&5 -echo "${ECHO_T}$ac_cv_func_dlopen" >&6; } -if test $ac_cv_func_dlopen = yes; then + ac_fn_c_check_func "$LINENO" "dlopen" "ac_cv_func_dlopen" +if test "x$ac_cv_func_dlopen" = xyes; then : lt_cv_dlopen="dlopen" else - { echo "$as_me:$LINENO: checking for dlopen in -ldl" >&5 -echo $ECHO_N "checking for dlopen in -ldl... $ECHO_C" >&6; } -if test "${ac_cv_lib_dl_dlopen+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dlopen in -ldl" >&5 +$as_echo_n "checking for dlopen in -ldl... " >&6; } +if ${ac_cv_lib_dl_dlopen+:} false; then : + $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-ldl $LIBS" -cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF +cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. @@ -12036,53 +11787,28 @@ return dlopen (); return 0; } _ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_link") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest$ac_exeext && - $as_test_x conftest$ac_exeext; then +if ac_fn_c_try_link "$LINENO"; then : ac_cv_lib_dl_dlopen=yes else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_cv_lib_dl_dlopen=no + ac_cv_lib_dl_dlopen=no fi - -rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ - conftest$ac_exeext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi -{ echo "$as_me:$LINENO: result: $ac_cv_lib_dl_dlopen" >&5 -echo "${ECHO_T}$ac_cv_lib_dl_dlopen" >&6; } -if test $ac_cv_lib_dl_dlopen = yes; then +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dl_dlopen" >&5 +$as_echo "$ac_cv_lib_dl_dlopen" >&6; } +if test "x$ac_cv_lib_dl_dlopen" = xyes; then : lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl" else - { echo "$as_me:$LINENO: checking for dlopen in -lsvld" >&5 -echo $ECHO_N "checking for dlopen in -lsvld... $ECHO_C" >&6; } -if test "${ac_cv_lib_svld_dlopen+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dlopen in -lsvld" >&5 +$as_echo_n "checking for dlopen in -lsvld... " >&6; } +if ${ac_cv_lib_svld_dlopen+:} false; then : + $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lsvld $LIBS" -cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF +cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. @@ -12100,53 +11826,28 @@ return dlopen (); return 0; } _ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_link") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest$ac_exeext && - $as_test_x conftest$ac_exeext; then +if ac_fn_c_try_link "$LINENO"; then : ac_cv_lib_svld_dlopen=yes else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_cv_lib_svld_dlopen=no + ac_cv_lib_svld_dlopen=no fi - -rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ - conftest$ac_exeext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi -{ echo "$as_me:$LINENO: result: $ac_cv_lib_svld_dlopen" >&5 -echo "${ECHO_T}$ac_cv_lib_svld_dlopen" >&6; } -if test $ac_cv_lib_svld_dlopen = yes; then +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_svld_dlopen" >&5 +$as_echo "$ac_cv_lib_svld_dlopen" >&6; } +if test "x$ac_cv_lib_svld_dlopen" = xyes; then : lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-lsvld" else - { echo "$as_me:$LINENO: checking for dld_link in -ldld" >&5 -echo $ECHO_N "checking for dld_link in -ldld... $ECHO_C" >&6; } -if test "${ac_cv_lib_dld_dld_link+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dld_link in -ldld" >&5 +$as_echo_n "checking for dld_link in -ldld... " >&6; } +if ${ac_cv_lib_dld_dld_link+:} false; then : + $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-ldld $LIBS" -cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF +cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. @@ -12164,39 +11865,18 @@ return dld_link (); return 0; } _ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_link") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest$ac_exeext && - $as_test_x conftest$ac_exeext; then +if ac_fn_c_try_link "$LINENO"; then : ac_cv_lib_dld_dld_link=yes else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_cv_lib_dld_dld_link=no + ac_cv_lib_dld_dld_link=no fi - -rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ - conftest$ac_exeext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi -{ echo "$as_me:$LINENO: result: $ac_cv_lib_dld_dld_link" >&5 -echo "${ECHO_T}$ac_cv_lib_dld_dld_link" >&6; } -if test $ac_cv_lib_dld_dld_link = yes; then +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dld_dld_link" >&5 +$as_echo "$ac_cv_lib_dld_dld_link" >&6; } +if test "x$ac_cv_lib_dld_dld_link" = xyes; then : lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-ldld" fi @@ -12235,10 +11915,10 @@ fi save_LIBS="$LIBS" LIBS="$lt_cv_dlopen_libs $LIBS" - { echo "$as_me:$LINENO: checking whether a program can dlopen itself" >&5 -echo $ECHO_N "checking whether a program can dlopen itself... $ECHO_C" >&6; } -if test "${lt_cv_dlopen_self+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether a program can dlopen itself" >&5 +$as_echo_n "checking whether a program can dlopen itself... " >&6; } +if ${lt_cv_dlopen_self+:} false; then : + $as_echo_n "(cached) " >&6 else if test "$cross_compiling" = yes; then : lt_cv_dlopen_self=cross @@ -12246,7 +11926,7 @@ else lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 lt_status=$lt_dlunknown cat > conftest.$ac_ext <<_LT_EOF -#line 12249 "configure" +#line $LINENO "configure" #include "confdefs.h" #if HAVE_DLFCN_H @@ -12287,11 +11967,13 @@ else # endif #endif -#ifdef __cplusplus -extern "C" void exit (int); +/* When -fvisbility=hidden is used, assume the code has been annotated + correspondingly for the symbols needed. */ +#if defined(__GNUC__) && (((__GNUC__ == 3) && (__GNUC_MINOR__ >= 3)) || (__GNUC__ > 3)) +int fnord () __attribute__((visibility("default"))); #endif -void fnord() { int i=42;} +int fnord () { return 42; } int main () { void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW); @@ -12300,20 +11982,24 @@ int main () if (self) { if (dlsym (self,"fnord")) status = $lt_dlno_uscore; - else if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore; + else + { + if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore; + else puts (dlerror ()); + } /* dlclose (self); */ } else puts (dlerror ()); - exit (status); + return status; } _LT_EOF - if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5 (eval $ac_link) 2>&5 ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && test -s conftest${ac_exeext} 2>/dev/null; then + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } && test -s conftest${ac_exeext} 2>/dev/null; then (./conftest; exit; ) >&5 2>/dev/null lt_status=$? case x$lt_status in @@ -12330,15 +12016,15 @@ rm -fr conftest* fi -{ echo "$as_me:$LINENO: result: $lt_cv_dlopen_self" >&5 -echo "${ECHO_T}$lt_cv_dlopen_self" >&6; } +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_dlopen_self" >&5 +$as_echo "$lt_cv_dlopen_self" >&6; } if test "x$lt_cv_dlopen_self" = xyes; then wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $lt_prog_compiler_static\" - { echo "$as_me:$LINENO: checking whether a statically linked program can dlopen itself" >&5 -echo $ECHO_N "checking whether a statically linked program can dlopen itself... $ECHO_C" >&6; } -if test "${lt_cv_dlopen_self_static+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether a statically linked program can dlopen itself" >&5 +$as_echo_n "checking whether a statically linked program can dlopen itself... " >&6; } +if ${lt_cv_dlopen_self_static+:} false; then : + $as_echo_n "(cached) " >&6 else if test "$cross_compiling" = yes; then : lt_cv_dlopen_self_static=cross @@ -12346,7 +12032,7 @@ else lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 lt_status=$lt_dlunknown cat > conftest.$ac_ext <<_LT_EOF -#line 12349 "configure" +#line $LINENO "configure" #include "confdefs.h" #if HAVE_DLFCN_H @@ -12387,11 +12073,13 @@ else # endif #endif -#ifdef __cplusplus -extern "C" void exit (int); +/* When -fvisbility=hidden is used, assume the code has been annotated + correspondingly for the symbols needed. */ +#if defined(__GNUC__) && (((__GNUC__ == 3) && (__GNUC_MINOR__ >= 3)) || (__GNUC__ > 3)) +int fnord () __attribute__((visibility("default"))); #endif -void fnord() { int i=42;} +int fnord () { return 42; } int main () { void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW); @@ -12400,20 +12088,24 @@ int main () if (self) { if (dlsym (self,"fnord")) status = $lt_dlno_uscore; - else if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore; + else + { + if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore; + else puts (dlerror ()); + } /* dlclose (self); */ } else puts (dlerror ()); - exit (status); + return status; } _LT_EOF - if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5 (eval $ac_link) 2>&5 ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && test -s conftest${ac_exeext} 2>/dev/null; then + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } && test -s conftest${ac_exeext} 2>/dev/null; then (./conftest; exit; ) >&5 2>/dev/null lt_status=$? case x$lt_status in @@ -12430,8 +12122,8 @@ rm -fr conftest* fi -{ echo "$as_me:$LINENO: result: $lt_cv_dlopen_self_static" >&5 -echo "${ECHO_T}$lt_cv_dlopen_self_static" >&6; } +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_dlopen_self_static" >&5 +$as_echo "$lt_cv_dlopen_self_static" >&6; } fi CPPFLAGS="$save_CPPFLAGS" @@ -12469,13 +12161,13 @@ fi striplib= old_striplib= -{ echo "$as_me:$LINENO: checking whether stripping libraries is possible" >&5 -echo $ECHO_N "checking whether stripping libraries is possible... $ECHO_C" >&6; } +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether stripping libraries is possible" >&5 +$as_echo_n "checking whether stripping libraries is possible... " >&6; } if test -n "$STRIP" && $STRIP -V 2>&1 | $GREP "GNU strip" >/dev/null; then test -z "$old_striplib" && old_striplib="$STRIP --strip-debug" test -z "$striplib" && striplib="$STRIP --strip-unneeded" - { echo "$as_me:$LINENO: result: yes" >&5 -echo "${ECHO_T}yes" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } else # FIXME - insert some real tests, host_os isn't really good enough case $host_os in @@ -12483,16 +12175,16 @@ else if test -n "$STRIP" ; then striplib="$STRIP -x" old_striplib="$STRIP -S" - { echo "$as_me:$LINENO: result: yes" >&5 -echo "${ECHO_T}yes" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } else - { echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } fi ;; *) - { echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } ;; esac fi @@ -12509,13 +12201,13 @@ fi # Report which library types will actually be built - { echo "$as_me:$LINENO: checking if libtool supports shared libraries" >&5 -echo $ECHO_N "checking if libtool supports shared libraries... $ECHO_C" >&6; } - { echo "$as_me:$LINENO: result: $can_build_shared" >&5 -echo "${ECHO_T}$can_build_shared" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if libtool supports shared libraries" >&5 +$as_echo_n "checking if libtool supports shared libraries... " >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $can_build_shared" >&5 +$as_echo "$can_build_shared" >&6; } - { echo "$as_me:$LINENO: checking whether to build shared libraries" >&5 -echo $ECHO_N "checking whether to build shared libraries... $ECHO_C" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to build shared libraries" >&5 +$as_echo_n "checking whether to build shared libraries... " >&6; } test "$can_build_shared" = "no" && enable_shared=no # On AIX, shared libraries and static libraries use the same namespace, and @@ -12535,28 +12227,167 @@ echo $ECHO_N "checking whether to build shared libraries... $ECHO_C" >&6; } fi ;; esac - { echo "$as_me:$LINENO: result: $enable_shared" >&5 -echo "${ECHO_T}$enable_shared" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_shared" >&5 +$as_echo "$enable_shared" >&6; } - { echo "$as_me:$LINENO: checking whether to build static libraries" >&5 -echo $ECHO_N "checking whether to build static libraries... $ECHO_C" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to build static libraries" >&5 +$as_echo_n "checking whether to build static libraries... " >&6; } # Make sure either enable_shared or enable_static is yes. test "$enable_shared" = yes || enable_static=yes - { echo "$as_me:$LINENO: result: $enable_static" >&5 -echo "${ECHO_T}$enable_static" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_static" >&5 +$as_echo "$enable_static" >&6; } + + + + +fi +ac_ext=cpp +ac_cpp='$CXXCPP $CPPFLAGS' +ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_cxx_compiler_gnu + +CC="$lt_save_CC" + + if test -n "$CXX" && ( test "X$CXX" != "Xno" && + ( (test "X$CXX" = "Xg++" && `g++ -v >/dev/null 2>&1` ) || + (test "X$CXX" != "Xg++"))) ; then + ac_ext=cpp +ac_cpp='$CXXCPP $CPPFLAGS' +ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_cxx_compiler_gnu +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to run the C++ preprocessor" >&5 +$as_echo_n "checking how to run the C++ preprocessor... " >&6; } +if test -z "$CXXCPP"; then + if ${ac_cv_prog_CXXCPP+:} false; then : + $as_echo_n "(cached) " >&6 +else + # Double quotes because CXXCPP needs to be expanded + for CXXCPP in "$CXX -E" "/lib/cpp" + do + ac_preproc_ok=false +for ac_cxx_preproc_warn_flag in '' yes +do + # Use a header file that comes with gcc, so configuring glibc + # with a fresh cross-compiler works. + # Prefer to if __STDC__ is defined, since + # exists even on freestanding compilers. + # On the NeXT, cc -E runs the code through the compiler's parser, + # not just through cpp. "Syntax error" is here to catch this case. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#ifdef __STDC__ +# include +#else +# include +#endif + Syntax error +_ACEOF +if ac_fn_cxx_try_cpp "$LINENO"; then : + +else + # Broken: fails on valid input. +continue +fi +rm -f conftest.err conftest.i conftest.$ac_ext + + # OK, works on sane cases. Now check whether nonexistent headers + # can be detected and how. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +_ACEOF +if ac_fn_cxx_try_cpp "$LINENO"; then : + # Broken: success on invalid input. +continue +else + # Passes both tests. +ac_preproc_ok=: +break +fi +rm -f conftest.err conftest.i conftest.$ac_ext + +done +# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. +rm -f conftest.i conftest.err conftest.$ac_ext +if $ac_preproc_ok; then : + break +fi + + done + ac_cv_prog_CXXCPP=$CXXCPP + +fi + CXXCPP=$ac_cv_prog_CXXCPP +else + ac_cv_prog_CXXCPP=$CXXCPP +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $CXXCPP" >&5 +$as_echo "$CXXCPP" >&6; } +ac_preproc_ok=false +for ac_cxx_preproc_warn_flag in '' yes +do + # Use a header file that comes with gcc, so configuring glibc + # with a fresh cross-compiler works. + # Prefer to if __STDC__ is defined, since + # exists even on freestanding compilers. + # On the NeXT, cc -E runs the code through the compiler's parser, + # not just through cpp. "Syntax error" is here to catch this case. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#ifdef __STDC__ +# include +#else +# include +#endif + Syntax error +_ACEOF +if ac_fn_cxx_try_cpp "$LINENO"; then : +else + # Broken: fails on valid input. +continue +fi +rm -f conftest.err conftest.i conftest.$ac_ext + # OK, works on sane cases. Now check whether nonexistent headers + # can be detected and how. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +_ACEOF +if ac_fn_cxx_try_cpp "$LINENO"; then : + # Broken: success on invalid input. +continue +else + # Passes both tests. +ac_preproc_ok=: +break +fi +rm -f conftest.err conftest.i conftest.$ac_ext +done +# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. +rm -f conftest.i conftest.err conftest.$ac_ext +if $ac_preproc_ok; then : +else + { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error $? "C++ preprocessor \"$CXXCPP\" fails sanity check +See \`config.log' for more details" "$LINENO" 5; } fi + ac_ext=cpp ac_cpp='$CXXCPP $CPPFLAGS' ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_cxx_compiler_gnu -CC="$lt_save_CC" - +else + _lt_caught_CXX_error=yes +fi ac_ext=cpp ac_cpp='$CXXCPP $CPPFLAGS' @@ -12573,7 +12404,6 @@ export_dynamic_flag_spec_CXX= hardcode_direct_CXX=no hardcode_direct_absolute_CXX=no hardcode_libdir_flag_spec_CXX= -hardcode_libdir_flag_spec_ld_CXX= hardcode_libdir_separator_CXX= hardcode_minus_L_CXX=no hardcode_shlibpath_var_CXX=unsupported @@ -12583,6 +12413,8 @@ module_cmds_CXX= module_expsym_cmds_CXX= link_all_deplibs_CXX=unknown old_archive_cmds_CXX=$old_archive_cmds +reload_flag_CXX=$reload_flag +reload_cmds_CXX=$reload_cmds no_undefined_flag_CXX= whole_archive_flag_spec_CXX= enable_shared_with_static_runtimes_CXX=no @@ -12638,6 +12470,7 @@ $RM -r conftest* # Allow CC to be a program name with arguments. lt_save_CC=$CC + lt_save_CFLAGS=$CFLAGS lt_save_LD=$LD lt_save_GCC=$GCC GCC=$GXX @@ -12655,6 +12488,7 @@ $RM -r conftest* fi test -z "${LDCXX+set}" || LD=$LDCXX CC=${CXX-"c++"} + CFLAGS=$CXXFLAGS compiler=$CC compiler_CXX=$CC for cc_temp in $compiler""; do @@ -12665,7 +12499,7 @@ $RM -r conftest* *) break;; esac done -cc_basename=`$ECHO "X$cc_temp" | $Xsed -e 's%.*/%%' -e "s%^$host_alias-%%"` +cc_basename=`$ECHO "$cc_temp" | $SED "s%.*/%%; s%^$host_alias-%%"` if test -n "$compiler"; then @@ -12683,7 +12517,7 @@ cc_basename=`$ECHO "X$cc_temp" | $Xsed -e 's%.*/%%' -e "s%^$host_alias-%%"` # Check whether --with-gnu-ld was given. -if test "${with_gnu_ld+set}" = set; then +if test "${with_gnu_ld+set}" = set; then : withval=$with_gnu_ld; test "$withval" = no || with_gnu_ld=yes else with_gnu_ld=no @@ -12692,8 +12526,8 @@ fi ac_prog=ld if test "$GCC" = yes; then # Check if gcc -print-prog-name=ld gives a path. - { echo "$as_me:$LINENO: checking for ld used by $CC" >&5 -echo $ECHO_N "checking for ld used by $CC... $ECHO_C" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ld used by $CC" >&5 +$as_echo_n "checking for ld used by $CC... " >&6; } case $host in *-*-mingw*) # gcc leaves a trailing carriage return which upsets mingw @@ -12722,14 +12556,14 @@ echo $ECHO_N "checking for ld used by $CC... $ECHO_C" >&6; } ;; esac elif test "$with_gnu_ld" = yes; then - { echo "$as_me:$LINENO: checking for GNU ld" >&5 -echo $ECHO_N "checking for GNU ld... $ECHO_C" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GNU ld" >&5 +$as_echo_n "checking for GNU ld... " >&6; } else - { echo "$as_me:$LINENO: checking for non-GNU ld" >&5 -echo $ECHO_N "checking for non-GNU ld... $ECHO_C" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for non-GNU ld" >&5 +$as_echo_n "checking for non-GNU ld... " >&6; } fi -if test "${lt_cv_path_LD+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 +if ${lt_cv_path_LD+:} false; then : + $as_echo_n "(cached) " >&6 else if test -z "$LD"; then lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR @@ -12759,19 +12593,17 @@ fi LD="$lt_cv_path_LD" if test -n "$LD"; then - { echo "$as_me:$LINENO: result: $LD" >&5 -echo "${ECHO_T}$LD" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LD" >&5 +$as_echo "$LD" >&6; } else - { echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } fi -test -z "$LD" && { { echo "$as_me:$LINENO: error: no acceptable ld found in \$PATH" >&5 -echo "$as_me: error: no acceptable ld found in \$PATH" >&2;} - { (exit 1); exit 1; }; } -{ echo "$as_me:$LINENO: checking if the linker ($LD) is GNU ld" >&5 -echo $ECHO_N "checking if the linker ($LD) is GNU ld... $ECHO_C" >&6; } -if test "${lt_cv_prog_gnu_ld+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 +test -z "$LD" && as_fn_error $? "no acceptable ld found in \$PATH" "$LINENO" 5 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if the linker ($LD) is GNU ld" >&5 +$as_echo_n "checking if the linker ($LD) is GNU ld... " >&6; } +if ${lt_cv_prog_gnu_ld+:} false; then : + $as_echo_n "(cached) " >&6 else # I'd rather use --version here, but apparently some GNU lds only accept -v. case `$LD -v 2>&1 &1 &5 -echo "${ECHO_T}$lt_cv_prog_gnu_ld" >&6; } +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_gnu_ld" >&5 +$as_echo "$lt_cv_prog_gnu_ld" >&6; } with_gnu_ld=$lt_cv_prog_gnu_ld @@ -12796,8 +12628,8 @@ with_gnu_ld=$lt_cv_prog_gnu_ld # Check if GNU C++ uses GNU ld as the underlying linker, since the # archiving commands below assume that GNU ld is being used. if test "$with_gnu_ld" = yes; then - archive_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib' - archive_expsym_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + archive_cmds_CXX='$CC $pic_flag -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib' + archive_expsym_cmds_CXX='$CC $pic_flag -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' hardcode_libdir_flag_spec_CXX='${wl}-rpath ${wl}$libdir' export_dynamic_flag_spec_CXX='${wl}--export-dynamic' @@ -12829,7 +12661,7 @@ with_gnu_ld=$lt_cv_prog_gnu_ld # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. - output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "\-L"' + output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"' else GXX=no @@ -12838,8 +12670,8 @@ with_gnu_ld=$lt_cv_prog_gnu_ld fi # PORTME: fill in a description of your system's C++ link characteristics - { echo "$as_me:$LINENO: checking whether the $compiler linker ($LD) supports shared libraries" >&5 -echo $ECHO_N "checking whether the $compiler linker ($LD) supports shared libraries... $ECHO_C" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the $compiler linker ($LD) supports shared libraries" >&5 +$as_echo_n "checking whether the $compiler linker ($LD) supports shared libraries... " >&6; } ld_shlibs_CXX=yes case $host_os in aix3*) @@ -12928,6 +12760,7 @@ echo $ECHO_N "checking whether the $compiler linker ($LD) supports shared librar fi fi + export_dynamic_flag_spec_CXX='${wl}-bexpall' # It seems that -bexpall does not export symbols beginning with # underscore (_), so it is better to generate a list of symbols to # export. @@ -12938,11 +12771,13 @@ echo $ECHO_N "checking whether the $compiler linker ($LD) supports shared librar allow_undefined_flag_CXX='-berok' # Determine the default libpath from the value encoded in an empty # executable. - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF + if test "${lt_cv_aix_libpath+set}" = set; then + aix_libpath=$lt_cv_aix_libpath +else + if ${lt_cv_aix_libpath__CXX+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int @@ -12953,51 +12788,35 @@ main () return 0; } _ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_link") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_cxx_werror_flag" || - test ! -s conftest.err - } && test -s conftest$ac_exeext && - $as_test_x conftest$ac_exeext; then - -lt_aix_libpath_sed=' - /Import File Strings/,/^$/ { - /^0/ { - s/^0 *\(.*\)$/\1/ - p - } - }' -aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` -# Check for a 64-bit object if we didn't find anything. -if test -z "$aix_libpath"; then - aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` -fi -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 +if ac_fn_cxx_try_link "$LINENO"; then : + lt_aix_libpath_sed=' + /Import File Strings/,/^$/ { + /^0/ { + s/^0 *\([^ ]*\) *$/\1/ + p + } + }' + lt_cv_aix_libpath__CXX=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` + # Check for a 64-bit object if we didn't find anything. + if test -z "$lt_cv_aix_libpath__CXX"; then + lt_cv_aix_libpath__CXX=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` + fi +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + if test -z "$lt_cv_aix_libpath__CXX"; then + lt_cv_aix_libpath__CXX="/usr/lib:/lib" + fi fi -rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ - conftest$ac_exeext conftest.$ac_ext -if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi + aix_libpath=$lt_cv_aix_libpath__CXX +fi hardcode_libdir_flag_spec_CXX='${wl}-blibpath:$libdir:'"$aix_libpath" - archive_expsym_cmds_CXX='$CC -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then $ECHO "X${wl}${allow_undefined_flag}" | $Xsed; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag" + archive_expsym_cmds_CXX='$CC -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then func_echo_all "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag" else if test "$host_cpu" = ia64; then hardcode_libdir_flag_spec_CXX='${wl}-R $libdir:/usr/lib:/lib' @@ -13006,11 +12825,13 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi else # Determine the default libpath from the value encoded in an # empty executable. - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF + if test "${lt_cv_aix_libpath+set}" = set; then + aix_libpath=$lt_cv_aix_libpath +else + if ${lt_cv_aix_libpath__CXX+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int @@ -13021,55 +12842,44 @@ main () return 0; } _ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_link") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_cxx_werror_flag" || - test ! -s conftest.err - } && test -s conftest$ac_exeext && - $as_test_x conftest$ac_exeext; then - -lt_aix_libpath_sed=' - /Import File Strings/,/^$/ { - /^0/ { - s/^0 *\(.*\)$/\1/ - p - } - }' -aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` -# Check for a 64-bit object if we didn't find anything. -if test -z "$aix_libpath"; then - aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` -fi -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 +if ac_fn_cxx_try_link "$LINENO"; then : + lt_aix_libpath_sed=' + /Import File Strings/,/^$/ { + /^0/ { + s/^0 *\([^ ]*\) *$/\1/ + p + } + }' + lt_cv_aix_libpath__CXX=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` + # Check for a 64-bit object if we didn't find anything. + if test -z "$lt_cv_aix_libpath__CXX"; then + lt_cv_aix_libpath__CXX=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` + fi +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + if test -z "$lt_cv_aix_libpath__CXX"; then + lt_cv_aix_libpath__CXX="/usr/lib:/lib" + fi fi -rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ - conftest$ac_exeext conftest.$ac_ext -if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi + aix_libpath=$lt_cv_aix_libpath__CXX +fi hardcode_libdir_flag_spec_CXX='${wl}-blibpath:$libdir:'"$aix_libpath" # Warning - without using the other run time loading flags, # -berok will link without error, but may produce a broken library. no_undefined_flag_CXX=' ${wl}-bernotok' allow_undefined_flag_CXX=' ${wl}-berok' - # Exported symbols can be pulled into shared objects from archives - whole_archive_flag_spec_CXX='$convenience' + if test "$with_gnu_ld" = yes; then + # We only use this code for GNU lds that support --whole-archive. + whole_archive_flag_spec_CXX='${wl}--whole-archive$convenience ${wl}--no-whole-archive' + else + # Exported symbols can be pulled into shared objects from archives + whole_archive_flag_spec_CXX='$convenience' + fi archive_cmds_need_lc_CXX=yes # This is similar to how AIX traditionally builds its shared # libraries. @@ -13098,29 +12908,76 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi esac ;; - cygwin* | mingw* | pw32*) - # _LT_TAGVAR(hardcode_libdir_flag_spec, CXX) is actually meaningless, - # as there is no search path for DLLs. - hardcode_libdir_flag_spec_CXX='-L$libdir' - allow_undefined_flag_CXX=unsupported - always_export_symbols_CXX=no - enable_shared_with_static_runtimes_CXX=yes - - if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then - archive_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' - # If the export-symbols file already is a .def file (1st line - # is EXPORTS), use it as is; otherwise, prepend... - archive_expsym_cmds_CXX='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then - cp $export_symbols $output_objdir/$soname.def; - else - echo EXPORTS > $output_objdir/$soname.def; - cat $export_symbols >> $output_objdir/$soname.def; - fi~ - $CC -shared -nostdlib $output_objdir/$soname.def $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' - else - ld_shlibs_CXX=no - fi - ;; + cygwin* | mingw* | pw32* | cegcc*) + case $GXX,$cc_basename in + ,cl* | no,cl*) + # Native MSVC + # hardcode_libdir_flag_spec is actually meaningless, as there is + # no search path for DLLs. + hardcode_libdir_flag_spec_CXX=' ' + allow_undefined_flag_CXX=unsupported + always_export_symbols_CXX=yes + file_list_spec_CXX='@' + # Tell ltmain to make .lib files, not .a files. + libext=lib + # Tell ltmain to make .dll files, not .so files. + shrext_cmds=".dll" + # FIXME: Setting linknames here is a bad hack. + archive_cmds_CXX='$CC -o $output_objdir/$soname $libobjs $compiler_flags $deplibs -Wl,-dll~linknames=' + archive_expsym_cmds_CXX='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then + $SED -n -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' -e '1\\\!p' < $export_symbols > $output_objdir/$soname.exp; + else + $SED -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' < $export_symbols > $output_objdir/$soname.exp; + fi~ + $CC -o $tool_output_objdir$soname $libobjs $compiler_flags $deplibs "@$tool_output_objdir$soname.exp" -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~ + linknames=' + # The linker will not automatically build a static lib if we build a DLL. + # _LT_TAGVAR(old_archive_from_new_cmds, CXX)='true' + enable_shared_with_static_runtimes_CXX=yes + # Don't use ranlib + old_postinstall_cmds_CXX='chmod 644 $oldlib' + postlink_cmds_CXX='lt_outputfile="@OUTPUT@"~ + lt_tool_outputfile="@TOOL_OUTPUT@"~ + case $lt_outputfile in + *.exe|*.EXE) ;; + *) + lt_outputfile="$lt_outputfile.exe" + lt_tool_outputfile="$lt_tool_outputfile.exe" + ;; + esac~ + func_to_tool_file "$lt_outputfile"~ + if test "$MANIFEST_TOOL" != ":" && test -f "$lt_outputfile.manifest"; then + $MANIFEST_TOOL -manifest "$lt_tool_outputfile.manifest" -outputresource:"$lt_tool_outputfile" || exit 1; + $RM "$lt_outputfile.manifest"; + fi' + ;; + *) + # g++ + # _LT_TAGVAR(hardcode_libdir_flag_spec, CXX) is actually meaningless, + # as there is no search path for DLLs. + hardcode_libdir_flag_spec_CXX='-L$libdir' + export_dynamic_flag_spec_CXX='${wl}--export-all-symbols' + allow_undefined_flag_CXX=unsupported + always_export_symbols_CXX=no + enable_shared_with_static_runtimes_CXX=yes + + if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then + archive_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' + # If the export-symbols file already is a .def file (1st line + # is EXPORTS), use it as is; otherwise, prepend... + archive_expsym_cmds_CXX='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then + cp $export_symbols $output_objdir/$soname.def; + else + echo EXPORTS > $output_objdir/$soname.def; + cat $export_symbols >> $output_objdir/$soname.def; + fi~ + $CC -shared -nostdlib $output_objdir/$soname.def $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' + else + ld_shlibs_CXX=no + fi + ;; + esac + ;; darwin* | rhapsody*) @@ -13128,11 +12985,20 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi hardcode_direct_CXX=no hardcode_automatic_CXX=yes hardcode_shlibpath_var_CXX=unsupported - whole_archive_flag_spec_CXX='' + if test "$lt_cv_ld_force_load" = "yes"; then + whole_archive_flag_spec_CXX='`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience ${wl}-force_load,$conv\"; done; func_echo_all \"$new_convenience\"`' + + else + whole_archive_flag_spec_CXX='' + fi link_all_deplibs_CXX=yes allow_undefined_flag_CXX="$_lt_dar_allow_undefined" - if test "$GCC" = "yes"; then - output_verbose_link_cmd=echo + case $cc_basename in + ifort*) _lt_dar_can_shared=yes ;; + *) _lt_dar_can_shared=$GCC ;; + esac + if test "$_lt_dar_can_shared" = "yes"; then + output_verbose_link_cmd=func_echo_all archive_cmds_CXX="\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod${_lt_dsymutil}" module_cmds_CXX="\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dsymutil}" archive_expsym_cmds_CXX="sed 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring ${_lt_dar_single_mod}${_lt_dar_export_syms}${_lt_dsymutil}" @@ -13166,7 +13032,7 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi esac ;; - freebsd[12]*) + freebsd2.*) # C++ shared libraries reported to be fairly broken before # switch to ELF ld_shlibs_CXX=no @@ -13185,6 +13051,11 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi gnu*) ;; + haiku*) + archive_cmds_CXX='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + link_all_deplibs_CXX=yes + ;; + hpux9*) hardcode_libdir_flag_spec_CXX='${wl}+b ${wl}$libdir' hardcode_libdir_separator_CXX=: @@ -13209,11 +13080,11 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi # explicitly linking system object files so we need to strip them # from the output so that they don't get included in the library # dependencies. - output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | $EGREP "\-L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; $ECHO "X$list" | $Xsed' + output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | $EGREP "\-L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' ;; *) if test "$GXX" = yes; then - archive_cmds_CXX='$RM $output_objdir/$soname~$CC -shared -nostdlib -fPIC ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' + archive_cmds_CXX='$RM $output_objdir/$soname~$CC -shared -nostdlib $pic_flag ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' else # FIXME: insert proper C++ library support ld_shlibs_CXX=no @@ -13274,7 +13145,7 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi # explicitly linking system object files so we need to strip them # from the output so that they don't get included in the library # dependencies. - output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | $GREP "\-L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; $ECHO "X$list" | $Xsed' + output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | $GREP "\-L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' ;; *) if test "$GXX" = yes; then @@ -13284,10 +13155,10 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi archive_cmds_CXX='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' ;; ia64*) - archive_cmds_CXX='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + archive_cmds_CXX='$CC -shared -nostdlib $pic_flag ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' ;; *) - archive_cmds_CXX='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + archive_cmds_CXX='$CC -shared -nostdlib $pic_flag ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' ;; esac fi @@ -13317,7 +13188,7 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi case $cc_basename in CC*) # SGI C++ - archive_cmds_CXX='$CC -shared -all -multigot $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -soname $soname `test -n "$verstring" && $ECHO "X-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -o $lib' + archive_cmds_CXX='$CC -shared -all -multigot $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib' # Archives containing C++ object files must be created using # "CC -ar", where "CC" is the IRIX C++ compiler. This is @@ -13328,9 +13199,9 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi *) if test "$GXX" = yes; then if test "$with_gnu_ld" = no; then - archive_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && $ECHO "X${wl}-set_version ${wl}$verstring" | $Xsed` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' + archive_cmds_CXX='$CC -shared $pic_flag -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' else - archive_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && $ECHO "X${wl}-set_version ${wl}$verstring" | $Xsed` -o $lib' + archive_cmds_CXX='$CC -shared $pic_flag -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` -o $lib' fi fi link_all_deplibs_CXX=yes @@ -13341,7 +13212,7 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi inherit_rpath_CXX=yes ;; - linux* | k*bsd*-gnu) + linux* | k*bsd*-gnu | kopensolaris*-gnu) case $cc_basename in KCC*) # Kuck and Associates, Inc. (KAI) C++ Compiler @@ -13359,7 +13230,7 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi # explicitly linking system object files so we need to strip them # from the output so that they don't get included in the library # dependencies. - output_verbose_link_cmd='templist=`$CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1 | $GREP "ld"`; rm -f libconftest$shared_ext; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; $ECHO "X$list" | $Xsed' + output_verbose_link_cmd='templist=`$CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1 | $GREP "ld"`; rm -f libconftest$shared_ext; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' hardcode_libdir_flag_spec_CXX='${wl}-rpath,$libdir' export_dynamic_flag_spec_CXX='${wl}--export-dynamic' @@ -13396,26 +13267,26 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi pgCC* | pgcpp*) # Portland Group C++ compiler case `$CC -V` in - *pgCC\ [1-5]* | *pgcpp\ [1-5]*) + *pgCC\ [1-5].* | *pgcpp\ [1-5].*) prelink_cmds_CXX='tpldir=Template.dir~ rm -rf $tpldir~ $CC --prelink_objects --instantiation_dir $tpldir $objs $libobjs $compile_deplibs~ - compile_command="$compile_command `find $tpldir -name \*.o | $NL2SP`"' + compile_command="$compile_command `find $tpldir -name \*.o | sort | $NL2SP`"' old_archive_cmds_CXX='tpldir=Template.dir~ rm -rf $tpldir~ $CC --prelink_objects --instantiation_dir $tpldir $oldobjs$old_deplibs~ - $AR $AR_FLAGS $oldlib$oldobjs$old_deplibs `find $tpldir -name \*.o | $NL2SP`~ + $AR $AR_FLAGS $oldlib$oldobjs$old_deplibs `find $tpldir -name \*.o | sort | $NL2SP`~ $RANLIB $oldlib' archive_cmds_CXX='tpldir=Template.dir~ rm -rf $tpldir~ $CC --prelink_objects --instantiation_dir $tpldir $predep_objects $libobjs $deplibs $convenience $postdep_objects~ - $CC -shared $pic_flag $predep_objects $libobjs $deplibs `find $tpldir -name \*.o | $NL2SP` $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname -o $lib' + $CC -shared $pic_flag $predep_objects $libobjs $deplibs `find $tpldir -name \*.o | sort | $NL2SP` $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname -o $lib' archive_expsym_cmds_CXX='tpldir=Template.dir~ rm -rf $tpldir~ $CC --prelink_objects --instantiation_dir $tpldir $predep_objects $libobjs $deplibs $convenience $postdep_objects~ - $CC -shared $pic_flag $predep_objects $libobjs $deplibs `find $tpldir -name \*.o | $NL2SP` $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname ${wl}-retain-symbols-file ${wl}$export_symbols -o $lib' + $CC -shared $pic_flag $predep_objects $libobjs $deplibs `find $tpldir -name \*.o | sort | $NL2SP` $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname ${wl}-retain-symbols-file ${wl}$export_symbols -o $lib' ;; - *) # Version 6 will use weak symbols + *) # Version 6 and above use weak symbols archive_cmds_CXX='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname -o $lib' archive_expsym_cmds_CXX='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname ${wl}-retain-symbols-file ${wl}$export_symbols -o $lib' ;; @@ -13423,7 +13294,7 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi hardcode_libdir_flag_spec_CXX='${wl}--rpath ${wl}$libdir' export_dynamic_flag_spec_CXX='${wl}--export-dynamic' - whole_archive_flag_spec_CXX='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $ECHO \"$new_convenience\"` ${wl}--no-whole-archive' + whole_archive_flag_spec_CXX='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' ;; cxx*) # Compaq C++ @@ -13442,9 +13313,9 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi # explicitly linking system object files so we need to strip them # from the output so that they don't get included in the library # dependencies. - output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "ld"`; templist=`$ECHO "X$templist" | $Xsed -e "s/\(^.*ld.*\)\( .*ld .*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; $ECHO "X$list" | $Xsed' + output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "ld"`; templist=`func_echo_all "$templist" | $SED "s/\(^.*ld.*\)\( .*ld .*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "X$list" | $Xsed' ;; - xl*) + xl* | mpixl* | bgxl*) # IBM XL 8.0 on PPC, with GNU ld hardcode_libdir_flag_spec_CXX='${wl}-rpath ${wl}$libdir' export_dynamic_flag_spec_CXX='${wl}--export-dynamic' @@ -13464,13 +13335,13 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi archive_cmds_CXX='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' archive_expsym_cmds_CXX='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-retain-symbols-file ${wl}$export_symbols' hardcode_libdir_flag_spec_CXX='-R$libdir' - whole_archive_flag_spec_CXX='${wl}--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; $ECHO \"$new_convenience\"` ${wl}--no-whole-archive' + whole_archive_flag_spec_CXX='${wl}--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' compiler_needs_object_CXX=yes # Not sure whether something based on # $CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1 # would be better. - output_verbose_link_cmd='echo' + output_verbose_link_cmd='func_echo_all' # Archives containing C++ object files must be created using # "CC -xar", where "CC" is the Sun C++ compiler. This is @@ -13539,7 +13410,7 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi export_dynamic_flag_spec_CXX='${wl}-E' whole_archive_flag_spec_CXX="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' fi - output_verbose_link_cmd=echo + output_verbose_link_cmd=func_echo_all else ld_shlibs_CXX=no fi @@ -13574,15 +13445,15 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi case $host in osf3*) allow_undefined_flag_CXX=' ${wl}-expect_unresolved ${wl}\*' - archive_cmds_CXX='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $soname `test -n "$verstring" && $ECHO "X${wl}-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -o $lib' + archive_cmds_CXX='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $soname `test -n "$verstring" && func_echo_all "${wl}-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib' hardcode_libdir_flag_spec_CXX='${wl}-rpath ${wl}$libdir' ;; *) allow_undefined_flag_CXX=' -expect_unresolved \*' - archive_cmds_CXX='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname `test -n "$verstring" && $ECHO "X-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -o $lib' + archive_cmds_CXX='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib' archive_expsym_cmds_CXX='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done~ echo "-hidden">> $lib.exp~ - $CC -shared$allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname ${wl}-input ${wl}$lib.exp `test -n "$verstring" && $ECHO "X-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -o $lib~ + $CC -shared$allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname ${wl}-input ${wl}$lib.exp `test -n "$verstring" && $ECHO "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib~ $RM $lib.exp' hardcode_libdir_flag_spec_CXX='-rpath $libdir' ;; @@ -13598,17 +13469,17 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi # explicitly linking system object files so we need to strip them # from the output so that they don't get included in the library # dependencies. - output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "ld" | $GREP -v "ld:"`; templist=`$ECHO "X$templist" | $Xsed -e "s/\(^.*ld.*\)\( .*ld.*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; $ECHO "X$list" | $Xsed' + output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "ld" | $GREP -v "ld:"`; templist=`func_echo_all "$templist" | $SED "s/\(^.*ld.*\)\( .*ld.*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' ;; *) if test "$GXX" = yes && test "$with_gnu_ld" = no; then allow_undefined_flag_CXX=' ${wl}-expect_unresolved ${wl}\*' case $host in osf3*) - archive_cmds_CXX='$CC -shared -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && $ECHO "X${wl}-set_version ${wl}$verstring" | $Xsed` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' + archive_cmds_CXX='$CC -shared -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' ;; *) - archive_cmds_CXX='$CC -shared -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && $ECHO "${wl}-set_version ${wl}$verstring" | $Xsed` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' + archive_cmds_CXX='$CC -shared $pic_flag -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' ;; esac @@ -13618,7 +13489,7 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. - output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "\-L"' + output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"' else # FIXME: insert proper C++ library support @@ -13654,7 +13525,7 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi solaris*) case $cc_basename in - CC*) + CC* | sunCC*) # Sun C++ 4.2, 5.x and Centerline C++ archive_cmds_need_lc_CXX=yes no_undefined_flag_CXX=' -zdefs' @@ -13675,7 +13546,7 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi esac link_all_deplibs_CXX=yes - output_verbose_link_cmd='echo' + output_verbose_link_cmd='func_echo_all' # Archives containing C++ object files must be created using # "CC -xar", where "CC" is the Sun C++ compiler. This is @@ -13695,14 +13566,14 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi if test "$GXX" = yes && test "$with_gnu_ld" = no; then no_undefined_flag_CXX=' ${wl}-z ${wl}defs' if $CC --version | $GREP -v '^2\.7' > /dev/null; then - archive_cmds_CXX='$CC -shared -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib' + archive_cmds_CXX='$CC -shared $pic_flag -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib' archive_expsym_cmds_CXX='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ - $CC -shared -nostdlib ${wl}-M $wl$lib.exp -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp' + $CC -shared $pic_flag -nostdlib ${wl}-M $wl$lib.exp -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp' # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. - output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "\-L"' + output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"' else # g++ 2.7 appears to require `-G' NOT `-shared' on this # platform. @@ -13713,7 +13584,7 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. - output_verbose_link_cmd='$CC -G $CFLAGS -v conftest.$objext 2>&1 | $GREP "\-L"' + output_verbose_link_cmd='$CC -G $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"' fi hardcode_libdir_flag_spec_CXX='${wl}-R $wl$libdir' @@ -13767,6 +13638,10 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi CC*) archive_cmds_CXX='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds_CXX='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + old_archive_cmds_CXX='$CC -Tprelink_objects $oldobjs~ + '"$old_archive_cmds_CXX" + reload_cmds_CXX='$CC -Tprelink_objects $reload_objs~ + '"$reload_cmds_CXX" ;; *) archive_cmds_CXX='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' @@ -13800,8 +13675,8 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi ;; esac - { echo "$as_me:$LINENO: result: $ld_shlibs_CXX" >&5 -echo "${ECHO_T}$ld_shlibs_CXX" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ld_shlibs_CXX" >&5 +$as_echo "$ld_shlibs_CXX" >&6; } test "$ld_shlibs_CXX" = no && can_build_shared=no GCC_CXX="$GXX" @@ -13828,11 +13703,19 @@ private: }; _LT_EOF -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + +_lt_libdeps_save_CFLAGS=$CFLAGS +case "$CC $CFLAGS " in #( +*\ -flto*\ *) CFLAGS="$CFLAGS -fno-lto" ;; +*\ -fwhopr*\ *) CFLAGS="$CFLAGS -fno-whopr" ;; +*\ -fuse-linker-plugin*\ *) CFLAGS="$CFLAGS -fno-use-linker-plugin" ;; +esac + +if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 (eval $ac_compile) 2>&5 ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; then + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then # Parse the compiler output and extract the necessary # objects, libraries and library flags. @@ -13841,7 +13724,7 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 pre_test_object_deps_done=no for p in `eval "$output_verbose_link_cmd"`; do - case $p in + case ${prev}${p} in -L* | -R* | -l*) # Some compilers place space between "-{L,R}" and the path. @@ -13850,13 +13733,22 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 test $p = "-R"; then prev=$p continue - else - prev= fi + # Expand the sysroot to ease extracting the directories later. + if test -z "$prev"; then + case $p in + -L*) func_stripname_cnf '-L' '' "$p"; prev=-L; p=$func_stripname_result ;; + -R*) func_stripname_cnf '-R' '' "$p"; prev=-R; p=$func_stripname_result ;; + -l*) func_stripname_cnf '-l' '' "$p"; prev=-l; p=$func_stripname_result ;; + esac + fi + case $p in + =*) func_stripname_cnf '=' '' "$p"; p=$lt_sysroot$func_stripname_result ;; + esac if test "$pre_test_object_deps_done" = no; then - case $p in - -L* | -R*) + case ${prev} in + -L | -R) # Internal compiler library paths should come after those # provided the user. The postdeps already come after the # user supplied libs so there is no need to process them. @@ -13876,8 +13768,10 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 postdeps_CXX="${postdeps_CXX} ${prev}${p}" fi fi + prev= ;; + *.lto.$objext) ;; # Ignore GCC LTO objects *.$objext) # This assumes that the test object file only shows up # once in the compiler output. @@ -13913,6 +13807,7 @@ else fi $RM -f confest.$objext +CFLAGS=$_lt_libdeps_save_CFLAGS # PORTME: override above test on systems where it is broken case $host_os in @@ -13948,7 +13843,7 @@ linux*) solaris*) case $cc_basename in - CC*) + CC* | sunCC*) # The more standards-conforming stlport4 library is # incompatible with the Cstd library. Avoid specifying # it if it's in CXXFLAGS. Ignore libCrun as @@ -14013,8 +13908,6 @@ fi lt_prog_compiler_pic_CXX= lt_prog_compiler_static_CXX= -{ echo "$as_me:$LINENO: checking for $compiler option to produce PIC" >&5 -echo $ECHO_N "checking for $compiler option to produce PIC... $ECHO_C" >&6; } # C++ specific cases for pic, static, wl, etc. if test "$GXX" = yes; then @@ -14048,7 +13941,7 @@ echo $ECHO_N "checking for $compiler option to produce PIC... $ECHO_C" >&6; } beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) # PIC is the default for these OSes. ;; - mingw* | cygwin* | os2* | pw32*) + mingw* | cygwin* | os2* | pw32* | cegcc*) # This hack is so that the source file can tell whether it is being # built for inclusion in a dll (and should export symbols for example). # Although the cygwin gcc ignores -fPIC, still need this for old-style @@ -14064,6 +13957,11 @@ echo $ECHO_N "checking for $compiler option to produce PIC... $ECHO_C" >&6; } # DJGPP does not support shared libraries at all lt_prog_compiler_pic_CXX= ;; + haiku*) + # PIC is the default for Haiku. + # The "-static" flag exists, but is broken. + lt_prog_compiler_static_CXX= + ;; interix[3-9]*) # Interix 3.x gcc -fpic/-fPIC options generate broken code. # Instead, we relocate shared libraries at runtime. @@ -14074,10 +13972,11 @@ echo $ECHO_N "checking for $compiler option to produce PIC... $ECHO_C" >&6; } fi ;; hpux*) - # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but - # not for PA HP-UX. + # PIC is the default for 64-bit PA HP-UX, but not for 32-bit + # PA HP-UX. On IA64 HP-UX, PIC is the default but the pic flag + # sets the default TLS model and affects inlining. case $host_cpu in - hppa*64*|ia64*) + hppa*64*) ;; *) lt_prog_compiler_pic_CXX='-fPIC' @@ -14112,6 +14011,11 @@ echo $ECHO_N "checking for $compiler option to produce PIC... $ECHO_C" >&6; } ;; esac ;; + mingw* | cygwin* | os2* | pw32* | cegcc*) + # This hack is so that the source file can tell whether it is being + # built for inclusion in a dll (and should export symbols for example). + lt_prog_compiler_pic_CXX='-DDLL_EXPORT' + ;; dgux*) case $cc_basename in ec++*) @@ -14168,19 +14072,26 @@ echo $ECHO_N "checking for $compiler option to produce PIC... $ECHO_C" >&6; } ;; esac ;; - linux* | k*bsd*-gnu) + linux* | k*bsd*-gnu | kopensolaris*-gnu) case $cc_basename in KCC*) # KAI C++ Compiler lt_prog_compiler_wl_CXX='--backend -Wl,' lt_prog_compiler_pic_CXX='-fPIC' ;; - icpc* | ecpc* ) - # Intel C++ + ecpc* ) + # old Intel C++ for x86_64 which still supported -KPIC. lt_prog_compiler_wl_CXX='-Wl,' lt_prog_compiler_pic_CXX='-KPIC' lt_prog_compiler_static_CXX='-static' ;; + icpc* ) + # Intel C++, used to be incompatible with GCC. + # ICC 10 doesn't accept -KPIC any more. + lt_prog_compiler_wl_CXX='-Wl,' + lt_prog_compiler_pic_CXX='-fPIC' + lt_prog_compiler_static_CXX='-static' + ;; pgCC* | pgcpp*) # Portland Group C++ compiler lt_prog_compiler_wl_CXX='-Wl,' @@ -14194,8 +14105,8 @@ echo $ECHO_N "checking for $compiler option to produce PIC... $ECHO_C" >&6; } lt_prog_compiler_pic_CXX= lt_prog_compiler_static_CXX='-non_shared' ;; - xlc* | xlC*) - # IBM XL 8.0 on PPC + xlc* | xlC* | bgxl[cC]* | mpixl[cC]*) + # IBM XL 8.0, 9.0 on PPC and BlueGene lt_prog_compiler_wl_CXX='-Wl,' lt_prog_compiler_pic_CXX='-qpic' lt_prog_compiler_static_CXX='-qstaticlink' @@ -14225,7 +14136,7 @@ echo $ECHO_N "checking for $compiler option to produce PIC... $ECHO_C" >&6; } ;; esac ;; - netbsd*) + netbsd* | netbsdelf*-gnu) ;; *qnx* | *nto*) # QNX uses GNU C++, but need to define -shared option too, otherwise @@ -14257,7 +14168,7 @@ echo $ECHO_N "checking for $compiler option to produce PIC... $ECHO_C" >&6; } ;; solaris*) case $cc_basename in - CC*) + CC* | sunCC*) # Sun C++ 4.2, 5.x and Centerline C++ lt_prog_compiler_pic_CXX='-KPIC' lt_prog_compiler_static_CXX='-Bstatic' @@ -14322,19 +14233,26 @@ case $host_os in lt_prog_compiler_pic_CXX="$lt_prog_compiler_pic_CXX -DPIC" ;; esac -{ echo "$as_me:$LINENO: result: $lt_prog_compiler_pic_CXX" >&5 -echo "${ECHO_T}$lt_prog_compiler_pic_CXX" >&6; } - +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $compiler option to produce PIC" >&5 +$as_echo_n "checking for $compiler option to produce PIC... " >&6; } +if ${lt_cv_prog_compiler_pic_CXX+:} false; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_prog_compiler_pic_CXX=$lt_prog_compiler_pic_CXX +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic_CXX" >&5 +$as_echo "$lt_cv_prog_compiler_pic_CXX" >&6; } +lt_prog_compiler_pic_CXX=$lt_cv_prog_compiler_pic_CXX # # Check to make sure the PIC flag actually works. # if test -n "$lt_prog_compiler_pic_CXX"; then - { echo "$as_me:$LINENO: checking if $compiler PIC flag $lt_prog_compiler_pic_CXX works" >&5 -echo $ECHO_N "checking if $compiler PIC flag $lt_prog_compiler_pic_CXX works... $ECHO_C" >&6; } -if test "${lt_cv_prog_compiler_pic_works_CXX+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler PIC flag $lt_prog_compiler_pic_CXX works" >&5 +$as_echo_n "checking if $compiler PIC flag $lt_prog_compiler_pic_CXX works... " >&6; } +if ${lt_cv_prog_compiler_pic_works_CXX+:} false; then : + $as_echo_n "(cached) " >&6 else lt_cv_prog_compiler_pic_works_CXX=no ac_outfile=conftest.$ac_objext @@ -14349,15 +14267,15 @@ else -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` - (eval echo "\"\$as_me:14352: $lt_compile\"" >&5) + (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5) (eval "$lt_compile" 2>conftest.err) ac_status=$? cat conftest.err >&5 - echo "$as_me:14356: \$? = $ac_status" >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 if (exit $ac_status) && test -s "$ac_outfile"; then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings other than the usual output. - $ECHO "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' >conftest.exp + $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' >conftest.exp $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then lt_cv_prog_compiler_pic_works_CXX=yes @@ -14366,8 +14284,8 @@ else $RM conftest* fi -{ echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_pic_works_CXX" >&5 -echo "${ECHO_T}$lt_cv_prog_compiler_pic_works_CXX" >&6; } +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic_works_CXX" >&5 +$as_echo "$lt_cv_prog_compiler_pic_works_CXX" >&6; } if test x"$lt_cv_prog_compiler_pic_works_CXX" = xyes; then case $lt_prog_compiler_pic_CXX in @@ -14383,14 +14301,16 @@ fi + + # # Check to make sure the static flag actually works. # wl=$lt_prog_compiler_wl_CXX eval lt_tmp_static_flag=\"$lt_prog_compiler_static_CXX\" -{ echo "$as_me:$LINENO: checking if $compiler static flag $lt_tmp_static_flag works" >&5 -echo $ECHO_N "checking if $compiler static flag $lt_tmp_static_flag works... $ECHO_C" >&6; } -if test "${lt_cv_prog_compiler_static_works_CXX+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler static flag $lt_tmp_static_flag works" >&5 +$as_echo_n "checking if $compiler static flag $lt_tmp_static_flag works... " >&6; } +if ${lt_cv_prog_compiler_static_works_CXX+:} false; then : + $as_echo_n "(cached) " >&6 else lt_cv_prog_compiler_static_works_CXX=no save_LDFLAGS="$LDFLAGS" @@ -14402,7 +14322,7 @@ else if test -s conftest.err; then # Append any errors to the config.log. cat conftest.err 1>&5 - $ECHO "X$_lt_linker_boilerplate" | $Xsed -e '/^$/d' > conftest.exp + $ECHO "$_lt_linker_boilerplate" | $SED '/^$/d' > conftest.exp $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 if diff conftest.exp conftest.er2 >/dev/null; then lt_cv_prog_compiler_static_works_CXX=yes @@ -14415,8 +14335,8 @@ else LDFLAGS="$save_LDFLAGS" fi -{ echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_static_works_CXX" >&5 -echo "${ECHO_T}$lt_cv_prog_compiler_static_works_CXX" >&6; } +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_static_works_CXX" >&5 +$as_echo "$lt_cv_prog_compiler_static_works_CXX" >&6; } if test x"$lt_cv_prog_compiler_static_works_CXX" = xyes; then : @@ -14427,10 +14347,10 @@ fi - { echo "$as_me:$LINENO: checking if $compiler supports -c -o file.$ac_objext" >&5 -echo $ECHO_N "checking if $compiler supports -c -o file.$ac_objext... $ECHO_C" >&6; } -if test "${lt_cv_prog_compiler_c_o_CXX+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5 +$as_echo_n "checking if $compiler supports -c -o file.$ac_objext... " >&6; } +if ${lt_cv_prog_compiler_c_o_CXX+:} false; then : + $as_echo_n "(cached) " >&6 else lt_cv_prog_compiler_c_o_CXX=no $RM -r conftest 2>/dev/null @@ -14448,16 +14368,16 @@ else -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` - (eval echo "\"\$as_me:14451: $lt_compile\"" >&5) + (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5) (eval "$lt_compile" 2>out/conftest.err) ac_status=$? cat out/conftest.err >&5 - echo "$as_me:14455: \$? = $ac_status" >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 if (exit $ac_status) && test -s out/conftest2.$ac_objext then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings - $ECHO "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' > out/conftest.exp + $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' > out/conftest.exp $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2 if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then lt_cv_prog_compiler_c_o_CXX=yes @@ -14474,15 +14394,15 @@ else $RM conftest* fi -{ echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_c_o_CXX" >&5 -echo "${ECHO_T}$lt_cv_prog_compiler_c_o_CXX" >&6; } +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o_CXX" >&5 +$as_echo "$lt_cv_prog_compiler_c_o_CXX" >&6; } - { echo "$as_me:$LINENO: checking if $compiler supports -c -o file.$ac_objext" >&5 -echo $ECHO_N "checking if $compiler supports -c -o file.$ac_objext... $ECHO_C" >&6; } -if test "${lt_cv_prog_compiler_c_o_CXX+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5 +$as_echo_n "checking if $compiler supports -c -o file.$ac_objext... " >&6; } +if ${lt_cv_prog_compiler_c_o_CXX+:} false; then : + $as_echo_n "(cached) " >&6 else lt_cv_prog_compiler_c_o_CXX=no $RM -r conftest 2>/dev/null @@ -14500,16 +14420,16 @@ else -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` - (eval echo "\"\$as_me:14503: $lt_compile\"" >&5) + (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5) (eval "$lt_compile" 2>out/conftest.err) ac_status=$? cat out/conftest.err >&5 - echo "$as_me:14507: \$? = $ac_status" >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 if (exit $ac_status) && test -s out/conftest2.$ac_objext then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings - $ECHO "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' > out/conftest.exp + $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' > out/conftest.exp $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2 if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then lt_cv_prog_compiler_c_o_CXX=yes @@ -14526,8 +14446,8 @@ else $RM conftest* fi -{ echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_c_o_CXX" >&5 -echo "${ECHO_T}$lt_cv_prog_compiler_c_o_CXX" >&6; } +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o_CXX" >&5 +$as_echo "$lt_cv_prog_compiler_c_o_CXX" >&6; } @@ -14535,19 +14455,19 @@ echo "${ECHO_T}$lt_cv_prog_compiler_c_o_CXX" >&6; } hard_links="nottested" if test "$lt_cv_prog_compiler_c_o_CXX" = no && test "$need_locks" != no; then # do not overwrite the value of need_locks provided by the user - { echo "$as_me:$LINENO: checking if we can lock with hard links" >&5 -echo $ECHO_N "checking if we can lock with hard links... $ECHO_C" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if we can lock with hard links" >&5 +$as_echo_n "checking if we can lock with hard links... " >&6; } hard_links=yes $RM conftest* ln conftest.a conftest.b 2>/dev/null && hard_links=no touch conftest.a ln conftest.a conftest.b 2>&5 || hard_links=no ln conftest.a conftest.b 2>/dev/null && hard_links=no - { echo "$as_me:$LINENO: result: $hard_links" >&5 -echo "${ECHO_T}$hard_links" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $hard_links" >&5 +$as_echo "$hard_links" >&6; } if test "$hard_links" = no; then - { echo "$as_me:$LINENO: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&5 -echo "$as_me: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&2;} + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&5 +$as_echo "$as_me: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&2;} need_locks=warn fi else @@ -14556,34 +14476,47 @@ fi - { echo "$as_me:$LINENO: checking whether the $compiler linker ($LD) supports shared libraries" >&5 -echo $ECHO_N "checking whether the $compiler linker ($LD) supports shared libraries... $ECHO_C" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the $compiler linker ($LD) supports shared libraries" >&5 +$as_echo_n "checking whether the $compiler linker ($LD) supports shared libraries... " >&6; } export_symbols_cmds_CXX='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' + exclude_expsyms_CXX='_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*' case $host_os in aix[4-9]*) # If we're using GNU nm, then we don't want the "-C" option. # -C means demangle to AIX nm, but means don't demangle with GNU nm + # Also, AIX nm treats weak defined symbols like other global defined + # symbols, whereas GNU nm marks them as "W". if $NM -V 2>&1 | $GREP 'GNU' > /dev/null; then - export_symbols_cmds_CXX='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B")) && (substr(\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols' + export_symbols_cmds_CXX='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W")) && (substr(\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols' else export_symbols_cmds_CXX='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B")) && (substr(\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols' fi ;; pw32*) export_symbols_cmds_CXX="$ltdll_cmds" - ;; - cygwin* | mingw*) - export_symbols_cmds_CXX='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS][ ]/s/.*[ ]\([^ ]*\)/\1 DATA/;/^.*[ ]__nm__/s/^.*[ ]__nm__\([^ ]*\)[ ][^ ]*/\1 DATA/;/^I[ ]/d;/^[AITW][ ]/s/.* //'\'' | sort | uniq > $export_symbols' - ;; + ;; + cygwin* | mingw* | cegcc*) + case $cc_basename in + cl*) + exclude_expsyms_CXX='_NULL_IMPORT_DESCRIPTOR|_IMPORT_DESCRIPTOR_.*' + ;; + *) + export_symbols_cmds_CXX='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS][ ]/s/.*[ ]\([^ ]*\)/\1 DATA/;s/^.*[ ]__nm__\([^ ]*\)[ ][^ ]*/\1 DATA/;/^I[ ]/d;/^[AITW][ ]/s/.* //'\'' | sort | uniq > $export_symbols' + exclude_expsyms_CXX='[_]+GLOBAL_OFFSET_TABLE_|[_]+GLOBAL__[FID]_.*|[_]+head_[A-Za-z0-9_]+_dll|[A-Za-z0-9_]+_dll_iname' + ;; + esac + ;; + linux* | k*bsd*-gnu | gnu*) + link_all_deplibs_CXX=no + ;; *) export_symbols_cmds_CXX='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' - ;; + ;; esac - exclude_expsyms_CXX='_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*' -{ echo "$as_me:$LINENO: result: $ld_shlibs_CXX" >&5 -echo "${ECHO_T}$ld_shlibs_CXX" >&6; } +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ld_shlibs_CXX" >&5 +$as_echo "$ld_shlibs_CXX" >&6; } test "$ld_shlibs_CXX" = no && can_build_shared=no with_gnu_ld_CXX=$with_gnu_ld @@ -14610,46 +14543,52 @@ x|xyes) # Test whether the compiler implicitly links with -lc since on some # systems, -lgcc has to come before -lc. If gcc already passes -lc # to ld, don't add -lc before -lgcc. - { echo "$as_me:$LINENO: checking whether -lc should be explicitly linked in" >&5 -echo $ECHO_N "checking whether -lc should be explicitly linked in... $ECHO_C" >&6; } - $RM conftest* - echo "$lt_simple_compile_test_code" > conftest.$ac_ext + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether -lc should be explicitly linked in" >&5 +$as_echo_n "checking whether -lc should be explicitly linked in... " >&6; } +if ${lt_cv_archive_cmds_need_lc_CXX+:} false; then : + $as_echo_n "(cached) " >&6 +else + $RM conftest* + echo "$lt_simple_compile_test_code" > conftest.$ac_ext - if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 (eval $ac_compile) 2>&5 ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } 2>conftest.err; then - soname=conftest - lib=conftest - libobjs=conftest.$ac_objext - deplibs= - wl=$lt_prog_compiler_wl_CXX - pic_flag=$lt_prog_compiler_pic_CXX - compiler_flags=-v - linker_flags=-v - verstring= - output_objdir=. - libname=conftest - lt_save_allow_undefined_flag=$allow_undefined_flag_CXX - allow_undefined_flag_CXX= - if { (eval echo "$as_me:$LINENO: \"$archive_cmds_CXX 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1\"") >&5 + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } 2>conftest.err; then + soname=conftest + lib=conftest + libobjs=conftest.$ac_objext + deplibs= + wl=$lt_prog_compiler_wl_CXX + pic_flag=$lt_prog_compiler_pic_CXX + compiler_flags=-v + linker_flags=-v + verstring= + output_objdir=. + libname=conftest + lt_save_allow_undefined_flag=$allow_undefined_flag_CXX + allow_undefined_flag_CXX= + if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$archive_cmds_CXX 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1\""; } >&5 (eval $archive_cmds_CXX 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1) 2>&5 ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } - then - archive_cmds_need_lc_CXX=no - else - archive_cmds_need_lc_CXX=yes - fi - allow_undefined_flag_CXX=$lt_save_allow_undefined_flag - else - cat conftest.err 1>&5 - fi - $RM conftest* - { echo "$as_me:$LINENO: result: $archive_cmds_need_lc_CXX" >&5 -echo "${ECHO_T}$archive_cmds_need_lc_CXX" >&6; } + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } + then + lt_cv_archive_cmds_need_lc_CXX=no + else + lt_cv_archive_cmds_need_lc_CXX=yes + fi + allow_undefined_flag_CXX=$lt_save_allow_undefined_flag + else + cat conftest.err 1>&5 + fi + $RM conftest* + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_archive_cmds_need_lc_CXX" >&5 +$as_echo "$lt_cv_archive_cmds_need_lc_CXX" >&6; } + archive_cmds_need_lc_CXX=$lt_cv_archive_cmds_need_lc_CXX ;; esac fi @@ -14717,10 +14656,8 @@ esac - - - { echo "$as_me:$LINENO: checking dynamic linker characteristics" >&5 -echo $ECHO_N "checking dynamic linker characteristics... $ECHO_C" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: checking dynamic linker characteristics" >&5 +$as_echo_n "checking dynamic linker characteristics... " >&6; } library_names_spec= libname_spec='lib$name' @@ -14744,7 +14681,7 @@ need_version=unknown case $host_os in aix3*) - version_type=linux + version_type=linux # correct to gnu/linux during the next big refactor library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a' shlibpath_var=LIBPATH @@ -14753,7 +14690,7 @@ aix3*) ;; aix[4-9]*) - version_type=linux + version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no hardcode_into_libs=yes @@ -14806,7 +14743,7 @@ amigaos*) m68k) library_names_spec='$libname.ixlibrary $libname.a' # Create ${libname}_ixlibrary.a entries in /sys/libs. - finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`$ECHO "X$lib" | $Xsed -e '\''s%^.*/\([^/]*\)\.ixlibrary$%\1%'\''`; test $RM /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done' + finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`func_echo_all "$lib" | $SED '\''s%^.*/\([^/]*\)\.ixlibrary$%\1%'\''`; test $RM /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done' ;; esac ;; @@ -14818,7 +14755,7 @@ beos*) ;; bsdi[45]*) - version_type=linux + version_type=linux # correct to gnu/linux during the next big refactor need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' @@ -14831,14 +14768,15 @@ bsdi[45]*) # libtool to hard-code these into programs ;; -cygwin* | mingw* | pw32*) +cygwin* | mingw* | pw32* | cegcc*) version_type=windows shrext_cmds=".dll" need_version=no need_lib_prefix=no - case $GCC,$host_os in - yes,cygwin* | yes,mingw* | yes,pw32*) + case $GCC,$cc_basename in + yes,*) + # gcc library_names_spec='$libname.dll.a' # DLL is installed to $(libdir)/../bin by postinstall_cmds postinstall_cmds='base_file=`basename \${file}`~ @@ -14859,36 +14797,82 @@ cygwin* | mingw* | pw32*) cygwin*) # Cygwin DLLs use 'cyg' prefix rather than 'lib' soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' - sys_lib_search_path_spec="/usr/lib /lib/w32api /lib /usr/local/lib" + ;; - mingw*) + mingw* | cegcc*) # MinGW DLLs use traditional 'lib' prefix soname_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' - sys_lib_search_path_spec=`$CC -print-search-dirs | $GREP "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"` - if $ECHO "$sys_lib_search_path_spec" | $GREP ';[c-zC-Z]:/' >/dev/null; then - # It is most probably a Windows format PATH printed by - # mingw gcc, but we are running on Cygwin. Gcc prints its search - # path with ; separators, and with drive letters. We can handle the - # drive letters (cygwin fileutils understands them), so leave them, - # especially as we might pass files found there to a mingw objdump, - # which wouldn't understand a cygwinified path. Ahh. - sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'` - else - sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` - fi ;; pw32*) # pw32 DLLs use 'pw' prefix rather than 'lib' library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' ;; esac + dynamic_linker='Win32 ld.exe' + ;; + + *,cl*) + # Native MSVC + libname_spec='$name' + soname_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' + library_names_spec='${libname}.dll.lib' + + case $build_os in + mingw*) + sys_lib_search_path_spec= + lt_save_ifs=$IFS + IFS=';' + for lt_path in $LIB + do + IFS=$lt_save_ifs + # Let DOS variable expansion print the short 8.3 style file name. + lt_path=`cd "$lt_path" 2>/dev/null && cmd //C "for %i in (".") do @echo %~si"` + sys_lib_search_path_spec="$sys_lib_search_path_spec $lt_path" + done + IFS=$lt_save_ifs + # Convert to MSYS style. + sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | sed -e 's|\\\\|/|g' -e 's| \\([a-zA-Z]\\):| /\\1|g' -e 's|^ ||'` + ;; + cygwin*) + # Convert to unix form, then to dos form, then back to unix form + # but this time dos style (no spaces!) so that the unix form looks + # like /cygdrive/c/PROGRA~1:/cygdr... + sys_lib_search_path_spec=`cygpath --path --unix "$LIB"` + sys_lib_search_path_spec=`cygpath --path --dos "$sys_lib_search_path_spec" 2>/dev/null` + sys_lib_search_path_spec=`cygpath --path --unix "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` + ;; + *) + sys_lib_search_path_spec="$LIB" + if $ECHO "$sys_lib_search_path_spec" | $GREP ';[c-zC-Z]:/' >/dev/null; then + # It is most probably a Windows format PATH. + sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'` + else + sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` + fi + # FIXME: find the short name or the path components, as spaces are + # common. (e.g. "Program Files" -> "PROGRA~1") + ;; + esac + + # DLL is installed to $(libdir)/../bin by postinstall_cmds + postinstall_cmds='base_file=`basename \${file}`~ + dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i; echo \$dlname'\''`~ + dldir=$destdir/`dirname \$dlpath`~ + test -d \$dldir || mkdir -p \$dldir~ + $install_prog $dir/$dlname \$dldir/$dlname' + postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ + dlpath=$dir/\$dldll~ + $RM \$dlpath' + shlibpath_overrides_runpath=yes + dynamic_linker='Win32 link.exe' ;; *) + # Assume MSVC wrapper library_names_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext} $libname.lib' + dynamic_linker='Win32 ld.exe' ;; esac - dynamic_linker='Win32 ld.exe' # FIXME: first we should search . and the directory the executable is in shlibpath_var=PATH ;; @@ -14908,7 +14892,7 @@ darwin* | rhapsody*) ;; dgux*) - version_type=linux + version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname$shared_ext' @@ -14916,10 +14900,6 @@ dgux*) shlibpath_var=LD_LIBRARY_PATH ;; -freebsd1*) - dynamic_linker=no - ;; - freebsd* | dragonfly*) # DragonFly does not have aout. When/if they implement a new # versioning mechanism, adjust this. @@ -14927,7 +14907,7 @@ freebsd* | dragonfly*) objformat=`/usr/bin/objformat` else case $host_os in - freebsd[123]*) objformat=aout ;; + freebsd[23].*) objformat=aout ;; *) objformat=elf ;; esac fi @@ -14945,7 +14925,7 @@ freebsd* | dragonfly*) esac shlibpath_var=LD_LIBRARY_PATH case $host_os in - freebsd2*) + freebsd2.*) shlibpath_overrides_runpath=yes ;; freebsd3.[01]* | freebsdelf3.[01]*) @@ -14965,12 +14945,26 @@ freebsd* | dragonfly*) ;; gnu*) - version_type=linux + version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + ;; + +haiku*) + version_type=linux # correct to gnu/linux during the next big refactor + need_lib_prefix=no + need_version=no + dynamic_linker="$host_os runtime_loader" + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LIBRARY_PATH + shlibpath_overrides_runpath=yes + sys_lib_dlsearch_path_spec='/boot/home/config/lib /boot/common/lib /boot/system/lib' hardcode_into_libs=yes ;; @@ -15016,12 +15010,14 @@ hpux9* | hpux10* | hpux11*) soname_spec='${libname}${release}${shared_ext}$major' ;; esac - # HP-UX runs *really* slowly unless shared libraries are mode 555. + # HP-UX runs *really* slowly unless shared libraries are mode 555, ... postinstall_cmds='chmod 555 $lib' + # or fails outright, so override atomically: + install_override_mode=555 ;; interix[3-9]*) - version_type=linux + version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' @@ -15037,7 +15033,7 @@ irix5* | irix6* | nonstopux*) nonstopux*) version_type=nonstopux ;; *) if test "$lt_cv_prog_gnu_ld" = yes; then - version_type=linux + version_type=linux # correct to gnu/linux during the next big refactor else version_type=irix fi ;; @@ -15074,9 +15070,9 @@ linux*oldld* | linux*aout* | linux*coff*) dynamic_linker=no ;; -# This must be Linux ELF. -linux* | k*bsd*-gnu) - version_type=linux +# This must be glibc/ELF. +linux* | k*bsd*-gnu | kopensolaris*-gnu) + version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' @@ -15084,16 +15080,17 @@ linux* | k*bsd*-gnu) finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no + # Some binutils ld are patched to set DT_RUNPATH - save_LDFLAGS=$LDFLAGS - save_libdir=$libdir - eval "libdir=/foo; wl=\"$lt_prog_compiler_wl_CXX\"; \ - LDFLAGS=\"\$LDFLAGS $hardcode_libdir_flag_spec_CXX\"" - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF + if ${lt_cv_shlibpath_overrides_runpath+:} false; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_shlibpath_overrides_runpath=no + save_LDFLAGS=$LDFLAGS + save_libdir=$libdir + eval "libdir=/foo; wl=\"$lt_prog_compiler_wl_CXX\"; \ + LDFLAGS=\"\$LDFLAGS $hardcode_libdir_flag_spec_CXX\"" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int @@ -15104,39 +15101,19 @@ main () return 0; } _ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_link") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_cxx_werror_flag" || - test ! -s conftest.err - } && test -s conftest$ac_exeext && - $as_test_x conftest$ac_exeext; then - if ($OBJDUMP -p conftest$ac_exeext) 2>/dev/null | grep "RUNPATH.*$libdir" >/dev/null; then - shlibpath_overrides_runpath=yes +if ac_fn_cxx_try_link "$LINENO"; then : + if ($OBJDUMP -p conftest$ac_exeext) 2>/dev/null | grep "RUNPATH.*$libdir" >/dev/null; then : + lt_cv_shlibpath_overrides_runpath=yes fi - -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + LDFLAGS=$save_LDFLAGS + libdir=$save_libdir fi -rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ - conftest$ac_exeext conftest.$ac_ext - LDFLAGS=$save_LDFLAGS - libdir=$save_libdir + shlibpath_overrides_runpath=$lt_cv_shlibpath_overrides_runpath # This implies no fast_install, which is unacceptable. # Some rework will be needed to allow for fast_install @@ -15145,7 +15122,7 @@ rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ # Append ld.so.conf contents to the search path if test -f /etc/ld.so.conf; then - lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \$2)); skip = 1; } { if (!skip) print \$0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;/^[ ]*hwcap[ ]/d;s/[:, ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;/^$/d' | tr '\n' ' '` + lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \$2)); skip = 1; } { if (!skip) print \$0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;/^[ ]*hwcap[ ]/d;s/[:, ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;s/"//g;/^$/d' | tr '\n' ' '` sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra" fi @@ -15158,6 +15135,18 @@ rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ dynamic_linker='GNU/Linux ld.so' ;; +netbsdelf*-gnu) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + dynamic_linker='NetBSD ld.elf_so' + ;; + netbsd*) version_type=sunos need_lib_prefix=no @@ -15177,7 +15166,7 @@ netbsd*) ;; newsos6) - version_type=linux + version_type=linux # correct to gnu/linux during the next big refactor library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes @@ -15246,7 +15235,7 @@ rdos*) ;; solaris*) - version_type=linux + version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' @@ -15271,7 +15260,7 @@ sunos4*) ;; sysv4 | sysv4.3*) - version_type=linux + version_type=linux # correct to gnu/linux during the next big refactor library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH @@ -15295,7 +15284,7 @@ sysv4 | sysv4.3*) sysv4*MP*) if test -d /usr/nec ;then - version_type=linux + version_type=linux # correct to gnu/linux during the next big refactor library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}' soname_spec='$libname${shared_ext}.$major' shlibpath_var=LD_LIBRARY_PATH @@ -15326,17 +15315,17 @@ sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) tpf*) # TPF is a cross-target only. Preferred cross-host = GNU/Linux. - version_type=linux + version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no - library_name_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no hardcode_into_libs=yes ;; uts4*) - version_type=linux + version_type=linux # correct to gnu/linux during the next big refactor library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH @@ -15346,8 +15335,8 @@ uts4*) dynamic_linker=no ;; esac -{ echo "$as_me:$LINENO: result: $dynamic_linker" >&5 -echo "${ECHO_T}$dynamic_linker" >&6; } +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $dynamic_linker" >&5 +$as_echo "$dynamic_linker" >&6; } test "$dynamic_linker" = no && can_build_shared=no variables_saved_for_relink="PATH $shlibpath_var $runpath_var" @@ -15397,8 +15386,10 @@ fi - { echo "$as_me:$LINENO: checking how to hardcode library paths into programs" >&5 -echo $ECHO_N "checking how to hardcode library paths into programs... $ECHO_C" >&6; } + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to hardcode library paths into programs" >&5 +$as_echo_n "checking how to hardcode library paths into programs... " >&6; } hardcode_action_CXX= if test -n "$hardcode_libdir_flag_spec_CXX" || test -n "$runpath_var_CXX" || @@ -15422,8 +15413,8 @@ else # directories. hardcode_action_CXX=unsupported fi -{ echo "$as_me:$LINENO: result: $hardcode_action_CXX" >&5 -echo "${ECHO_T}$hardcode_action_CXX" >&6; } +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $hardcode_action_CXX" >&5 +$as_echo "$hardcode_action_CXX" >&6; } if test "$hardcode_action_CXX" = relink || test "$inherit_rpath_CXX" = yes; then @@ -15444,6 +15435,7 @@ fi fi # test -n "$compiler" CC=$lt_save_CC + CFLAGS=$lt_save_CFLAGS LDCXX=$LD LD=$lt_save_LD GCC=$lt_save_GCC @@ -15472,6 +15464,8 @@ ac_compiler_gnu=$ac_cv_cxx_compiler_gnu + + ac_config_commands="$ac_config_commands libtool" @@ -15482,16 +15476,12 @@ ac_compiler_gnu=$ac_cv_cxx_compiler_gnu # Checks for header files. -{ echo "$as_me:$LINENO: checking for ANSI C header files" >&5 -echo $ECHO_N "checking for ANSI C header files... $ECHO_C" >&6; } -if test "${ac_cv_header_stdc+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for ANSI C header files" >&5 +$as_echo_n "checking for ANSI C header files... " >&6; } +if ${ac_cv_header_stdc+:} false; then : + $as_echo_n "(cached) " >&6 else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF + cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include @@ -15506,47 +15496,23 @@ main () return 0; } _ACEOF -rm -f conftest.$ac_objext -if { (ac_try="$ac_compile" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compile") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_cxx_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then +if ac_fn_cxx_try_compile "$LINENO"; then : ac_cv_header_stdc=yes else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_cv_header_stdc=no + ac_cv_header_stdc=no fi - rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext if test $ac_cv_header_stdc = yes; then # SunOS 4.x string.h does not declare mem*, contrary to ANSI. - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF + cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include _ACEOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - $EGREP "memchr" >/dev/null 2>&1; then - : + $EGREP "memchr" >/dev/null 2>&1; then : + else ac_cv_header_stdc=no fi @@ -15556,18 +15522,14 @@ fi if test $ac_cv_header_stdc = yes; then # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI. - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF + cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include _ACEOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - $EGREP "free" >/dev/null 2>&1; then - : + $EGREP "free" >/dev/null 2>&1; then : + else ac_cv_header_stdc=no fi @@ -15577,14 +15539,10 @@ fi if test $ac_cv_header_stdc = yes; then # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi. - if test "$cross_compiling" = yes; then + if test "$cross_compiling" = yes; then : : else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF + cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include @@ -15611,194 +15569,32 @@ main () return 0; } _ACEOF -rm -f conftest$ac_exeext -if { (ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_link") 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { ac_try='./conftest$ac_exeext' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - : -else - echo "$as_me: program exited with status $ac_status" >&5 -echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 +if ac_fn_cxx_try_run "$LINENO"; then : -( exit $ac_status ) -ac_cv_header_stdc=no +else + ac_cv_header_stdc=no fi -rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ + conftest.$ac_objext conftest.beam conftest.$ac_ext fi - fi fi -{ echo "$as_me:$LINENO: result: $ac_cv_header_stdc" >&5 -echo "${ECHO_T}$ac_cv_header_stdc" >&6; } +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_stdc" >&5 +$as_echo "$ac_cv_header_stdc" >&6; } if test $ac_cv_header_stdc = yes; then -cat >>confdefs.h <<\_ACEOF -#define STDC_HEADERS 1 -_ACEOF +$as_echo "#define STDC_HEADERS 1" >>confdefs.h fi - - - - - for ac_header in fcntl.h inttypes.h limits.h stdlib.h unistd.h -do -as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` -if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then - { echo "$as_me:$LINENO: checking for $ac_header" >&5 -echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; } -if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -fi -ac_res=`eval echo '${'$as_ac_Header'}'` - { echo "$as_me:$LINENO: result: $ac_res" >&5 -echo "${ECHO_T}$ac_res" >&6; } -else - # Is the header compilable? -{ echo "$as_me:$LINENO: checking $ac_header usability" >&5 -echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6; } -cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -$ac_includes_default -#include <$ac_header> -_ACEOF -rm -f conftest.$ac_objext -if { (ac_try="$ac_compile" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compile") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_cxx_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then - ac_header_compiler=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_header_compiler=no -fi - -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -{ echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 -echo "${ECHO_T}$ac_header_compiler" >&6; } - -# Is the header present? -{ echo "$as_me:$LINENO: checking $ac_header presence" >&5 -echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6; } -cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -#include <$ac_header> -_ACEOF -if { (ac_try="$ac_cpp conftest.$ac_ext" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } >/dev/null && { - test -z "$ac_cxx_preproc_warn_flag$ac_cxx_werror_flag" || - test ! -s conftest.err - }; then - ac_header_preproc=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_header_preproc=no -fi - -rm -f conftest.err conftest.$ac_ext -{ echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 -echo "${ECHO_T}$ac_header_preproc" >&6; } - -# So? What about this header? -case $ac_header_compiler:$ac_header_preproc:$ac_cxx_preproc_warn_flag in - yes:no: ) - { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5 -echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;} - { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5 -echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;} - ac_header_preproc=yes - ;; - no:yes:* ) - { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5 -echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;} - { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5 -echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;} - { echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5 -echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;} - { echo "$as_me:$LINENO: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&5 -echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&2;} - { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 -echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;} - { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5 -echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;} - ( cat <<\_ASBOX -## ---------------------------------------- ## -## Report this to protobuf@googlegroups.com ## -## ---------------------------------------- ## -_ASBOX - ) | sed "s/^/$as_me: WARNING: /" >&2 - ;; -esac -{ echo "$as_me:$LINENO: checking for $ac_header" >&5 -echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; } -if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - eval "$as_ac_Header=\$ac_header_preproc" -fi -ac_res=`eval echo '${'$as_ac_Header'}'` - { echo "$as_me:$LINENO: result: $ac_res" >&5 -echo "${ECHO_T}$ac_res" >&6; } - -fi -if test `eval echo '${'$as_ac_Header'}'` = yes; then +do : + as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` +ac_fn_cxx_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default" +if eval test \"x\$"$as_ac_Header"\" = x"yes"; then : cat >>confdefs.h <<_ACEOF -#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 +#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 _ACEOF fi @@ -15807,19 +15603,15 @@ done # Checks for library functions. -{ echo "$as_me:$LINENO: checking for working memcmp" >&5 -echo $ECHO_N "checking for working memcmp... $ECHO_C" >&6; } -if test "${ac_cv_func_memcmp_working+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for working memcmp" >&5 +$as_echo_n "checking for working memcmp... " >&6; } +if ${ac_cv_func_memcmp_working+:} false; then : + $as_echo_n "(cached) " >&6 else - if test "$cross_compiling" = yes; then + if test "$cross_compiling" = yes; then : ac_cv_func_memcmp_working=no else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF + cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $ac_includes_default int @@ -15854,42 +15646,18 @@ main () return 0; } _ACEOF -rm -f conftest$ac_exeext -if { (ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_link") 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { ac_try='./conftest$ac_exeext' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then +if ac_fn_cxx_try_run "$LINENO"; then : ac_cv_func_memcmp_working=yes else - echo "$as_me: program exited with status $ac_status" >&5 -echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -( exit $ac_status ) -ac_cv_func_memcmp_working=no + ac_cv_func_memcmp_working=no fi -rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ + conftest.$ac_objext conftest.beam conftest.$ac_ext fi - fi -{ echo "$as_me:$LINENO: result: $ac_cv_func_memcmp_working" >&5 -echo "${ECHO_T}$ac_cv_func_memcmp_working" >&6; } +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_memcmp_working" >&5 +$as_echo "$ac_cv_func_memcmp_working" >&6; } test $ac_cv_func_memcmp_working = no && case " $LIBOBJS " in *" memcmp.$ac_objext "* ) ;; *) LIBOBJS="$LIBOBJS memcmp.$ac_objext" @@ -15897,19 +15665,15 @@ test $ac_cv_func_memcmp_working = no && case " $LIBOBJS " in esac -{ echo "$as_me:$LINENO: checking for working strtod" >&5 -echo $ECHO_N "checking for working strtod... $ECHO_C" >&6; } -if test "${ac_cv_func_strtod+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for working strtod" >&5 +$as_echo_n "checking for working strtod... " >&6; } +if ${ac_cv_func_strtod+:} false; then : + $as_echo_n "(cached) " >&6 else - if test "$cross_compiling" = yes; then + if test "$cross_compiling" = yes; then : ac_cv_func_strtod=no else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF + cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $ac_includes_default @@ -15942,42 +15706,18 @@ main() } _ACEOF -rm -f conftest$ac_exeext -if { (ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_link") 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { ac_try='./conftest$ac_exeext' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then +if ac_fn_cxx_try_run "$LINENO"; then : ac_cv_func_strtod=yes else - echo "$as_me: program exited with status $ac_status" >&5 -echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -( exit $ac_status ) -ac_cv_func_strtod=no + ac_cv_func_strtod=no fi -rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ + conftest.$ac_objext conftest.beam conftest.$ac_ext fi - fi -{ echo "$as_me:$LINENO: result: $ac_cv_func_strtod" >&5 -echo "${ECHO_T}$ac_cv_func_strtod" >&6; } +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_strtod" >&5 +$as_echo "$ac_cv_func_strtod" >&6; } if test $ac_cv_func_strtod = no; then case " $LIBOBJS " in *" strtod.$ac_objext "* ) ;; @@ -15985,101 +15725,20 @@ if test $ac_cv_func_strtod = no; then ;; esac -{ echo "$as_me:$LINENO: checking for pow" >&5 -echo $ECHO_N "checking for pow... $ECHO_C" >&6; } -if test "${ac_cv_func_pow+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -/* Define pow to an innocuous variant, in case declares pow. - For example, HP-UX 11i declares gettimeofday. */ -#define pow innocuous_pow - -/* System header to define __stub macros and hopefully few prototypes, - which can conflict with char pow (); below. - Prefer to if __STDC__ is defined, since - exists even on freestanding compilers. */ - -#ifdef __STDC__ -# include -#else -# include -#endif - -#undef pow - -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif -char pow (); -/* The GNU C library defines this for functions which it implements - to always fail with ENOSYS. Some functions are actually named - something starting with __ and the normal name is an alias. */ -#if defined __stub_pow || defined __stub___pow -choke me -#endif - -int -main () -{ -return pow (); - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_link") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_cxx_werror_flag" || - test ! -s conftest.err - } && test -s conftest$ac_exeext && - $as_test_x conftest$ac_exeext; then - ac_cv_func_pow=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_cv_func_pow=no -fi +ac_fn_cxx_check_func "$LINENO" "pow" "ac_cv_func_pow" +if test "x$ac_cv_func_pow" = xyes; then : -rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ - conftest$ac_exeext conftest.$ac_ext fi -{ echo "$as_me:$LINENO: result: $ac_cv_func_pow" >&5 -echo "${ECHO_T}$ac_cv_func_pow" >&6; } if test $ac_cv_func_pow = no; then - { echo "$as_me:$LINENO: checking for pow in -lm" >&5 -echo $ECHO_N "checking for pow in -lm... $ECHO_C" >&6; } -if test "${ac_cv_lib_m_pow+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for pow in -lm" >&5 +$as_echo_n "checking for pow in -lm... " >&6; } +if ${ac_cv_lib_m_pow+:} false; then : + $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lm $LIBS" -cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF +cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. @@ -16096,144 +15755,36 @@ return pow (); ; return 0; } -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_link") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_cxx_werror_flag" || - test ! -s conftest.err - } && test -s conftest$ac_exeext && - $as_test_x conftest$ac_exeext; then - ac_cv_lib_m_pow=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_cv_lib_m_pow=no -fi - -rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ - conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS -fi -{ echo "$as_me:$LINENO: result: $ac_cv_lib_m_pow" >&5 -echo "${ECHO_T}$ac_cv_lib_m_pow" >&6; } -if test $ac_cv_lib_m_pow = yes; then - POW_LIB=-lm -else - { echo "$as_me:$LINENO: WARNING: cannot find library containing definition of pow" >&5 -echo "$as_me: WARNING: cannot find library containing definition of pow" >&2;} -fi - -fi - -fi - - - - - - - -for ac_func in ftruncate memset mkdir strchr strerror strtol -do -as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` -{ echo "$as_me:$LINENO: checking for $ac_func" >&5 -echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6; } -if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -/* Define $ac_func to an innocuous variant, in case declares $ac_func. - For example, HP-UX 11i declares gettimeofday. */ -#define $ac_func innocuous_$ac_func - -/* System header to define __stub macros and hopefully few prototypes, - which can conflict with char $ac_func (); below. - Prefer to if __STDC__ is defined, since - exists even on freestanding compilers. */ - -#ifdef __STDC__ -# include -#else -# include -#endif - -#undef $ac_func - -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif -char $ac_func (); -/* The GNU C library defines this for functions which it implements - to always fail with ENOSYS. Some functions are actually named - something starting with __ and the normal name is an alias. */ -#if defined __stub_$ac_func || defined __stub___$ac_func -choke me -#endif - -int -main () -{ -return $ac_func (); - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_link") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_cxx_werror_flag" || - test ! -s conftest.err - } && test -s conftest$ac_exeext && - $as_test_x conftest$ac_exeext; then - eval "$as_ac_var=yes" +_ACEOF +if ac_fn_cxx_try_link "$LINENO"; then : + ac_cv_lib_m_pow=yes else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 + ac_cv_lib_m_pow=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_m_pow" >&5 +$as_echo "$ac_cv_lib_m_pow" >&6; } +if test "x$ac_cv_lib_m_pow" = xyes; then : + POW_LIB=-lm +else + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cannot find library containing definition of pow" >&5 +$as_echo "$as_me: WARNING: cannot find library containing definition of pow" >&2;} +fi - eval "$as_ac_var=no" fi -rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ - conftest$ac_exeext conftest.$ac_ext fi -ac_res=`eval echo '${'$as_ac_var'}'` - { echo "$as_me:$LINENO: result: $ac_res" >&5 -echo "${ECHO_T}$ac_res" >&6; } -if test `eval echo '${'$as_ac_var'}'` = yes; then + +for ac_func in ftruncate memset mkdir strchr strerror strtol +do : + as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` +ac_fn_cxx_check_func "$LINENO" "$ac_func" "$as_ac_var" +if eval test \"x\$"$as_ac_var"\" = x"yes"; then : cat >>confdefs.h <<_ACEOF -#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1 +#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1 _ACEOF fi @@ -16242,17 +15793,13 @@ done # Check for zlib. HAVE_ZLIB=0 -if test "$with_zlib" != no; then +if test "$with_zlib" != no; then : - { echo "$as_me:$LINENO: checking zlib version" >&5 -echo $ECHO_N "checking zlib version... $ECHO_C" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: checking zlib version" >&5 +$as_echo_n "checking zlib version... " >&6; } # First check the zlib header version. - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF + cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include @@ -16268,39 +15815,19 @@ main () return 0; } _ACEOF -rm -f conftest.$ac_objext -if { (ac_try="$ac_compile" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compile") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_cxx_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then +if ac_fn_cxx_try_compile "$LINENO"; then : - { echo "$as_me:$LINENO: result: ok (1.2.0.4 or later)" >&5 -echo "${ECHO_T}ok (1.2.0.4 or later)" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: ok (1.2.0.4 or later)" >&5 +$as_echo "ok (1.2.0.4 or later)" >&6; } # Also need to add -lz to the linker flags and make sure this succeeds. - { echo "$as_me:$LINENO: checking for library containing zlibVersion" >&5 -echo $ECHO_N "checking for library containing zlibVersion... $ECHO_C" >&6; } -if test "${ac_cv_search_zlibVersion+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing zlibVersion" >&5 +$as_echo_n "checking for library containing zlibVersion... " >&6; } +if ${ac_cv_search_zlibVersion+:} false; then : + $as_echo_n "(cached) " >&6 else ac_func_search_save_LIBS=$LIBS -cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF +cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. @@ -16325,102 +15852,68 @@ for ac_lib in '' z; do ac_res=-l$ac_lib LIBS="-l$ac_lib $ac_func_search_save_LIBS" fi - rm -f conftest.$ac_objext conftest$ac_exeext -if { (ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_link") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_cxx_werror_flag" || - test ! -s conftest.err - } && test -s conftest$ac_exeext && - $as_test_x conftest$ac_exeext; then + if ac_fn_cxx_try_link "$LINENO"; then : ac_cv_search_zlibVersion=$ac_res -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - fi - -rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ - conftest$ac_exeext - if test "${ac_cv_search_zlibVersion+set}" = set; then +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext + if ${ac_cv_search_zlibVersion+:} false; then : break fi done -if test "${ac_cv_search_zlibVersion+set}" = set; then - : +if ${ac_cv_search_zlibVersion+:} false; then : + else ac_cv_search_zlibVersion=no fi rm conftest.$ac_ext LIBS=$ac_func_search_save_LIBS fi -{ echo "$as_me:$LINENO: result: $ac_cv_search_zlibVersion" >&5 -echo "${ECHO_T}$ac_cv_search_zlibVersion" >&6; } +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_zlibVersion" >&5 +$as_echo "$ac_cv_search_zlibVersion" >&6; } ac_res=$ac_cv_search_zlibVersion -if test "$ac_res" != no; then +if test "$ac_res" != no; then : test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" -cat >>confdefs.h <<\_ACEOF -#define HAVE_ZLIB 1 -_ACEOF +$as_echo "#define HAVE_ZLIB 1" >>confdefs.h HAVE_ZLIB=1 else - if test "$with_zlib" != check; then + if test "$with_zlib" != check; then : - { { echo "$as_me:$LINENO: error: --with-zlib was given, but no working zlib library was found -See \`config.log' for more details." >&5 -echo "$as_me: error: --with-zlib was given, but no working zlib library was found -See \`config.log' for more details." >&2;} - { (exit 1); exit 1; }; } + { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error $? "--with-zlib was given, but no working zlib library was found +See \`config.log' for more details" "$LINENO" 5; } fi - fi else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 + if test "$with_zlib" = check; then : - if test "$with_zlib" = check; then - - { echo "$as_me:$LINENO: result: headers missing or too old (requires 1.2.0.4)" >&5 -echo "${ECHO_T}headers missing or too old (requires 1.2.0.4)" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: headers missing or too old (requires 1.2.0.4)" >&5 +$as_echo "headers missing or too old (requires 1.2.0.4)" >&6; } else - { { echo "$as_me:$LINENO: error: --with-zlib was given, but zlib headers were not present or were too old (requires 1.2.0.4) -See \`config.log' for more details." >&5 -echo "$as_me: error: --with-zlib was given, but zlib headers were not present or were too old (requires 1.2.0.4) -See \`config.log' for more details." >&2;} - { (exit 1); exit 1; }; } + { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error $? "--with-zlib was given, but zlib headers were not present or were too old (requires 1.2.0.4) +See \`config.log' for more details" "$LINENO" 5; } fi - fi - rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi - if test $HAVE_ZLIB = 1; then HAVE_ZLIB_TRUE= HAVE_ZLIB_FALSE='#' @@ -16430,17 +15923,16 @@ else fi -if test "$with_protoc" != "no"; then +if test "$with_protoc" != "no"; then : PROTOC=$with_protoc - if test "$with_protoc" == "yes"; then + if test "$with_protoc" = "yes"; then : # No argument given. Use system protoc. PROTOC=protoc fi - - if echo "$PROTOC" | grep -q '^[^/].*/'; then + if echo "$PROTOC" | grep -q '^[^/].*/'; then : # Does not start with a slash, but contains a slash. So, it's a relative # path (as opposed to an absolute path or an executable in $PATH). @@ -16453,9 +15945,7 @@ fi fi - fi - if test "$with_protoc" != "no"; then USE_EXTERNAL_PROTOC_TRUE= USE_EXTERNAL_PROTOC_FALSE='#' @@ -16488,13 +15978,9 @@ if test x"$PTHREAD_LIBS$PTHREAD_CFLAGS" != x; then CFLAGS="$CFLAGS $PTHREAD_CFLAGS" save_LIBS="$LIBS" LIBS="$PTHREAD_LIBS $LIBS" - { echo "$as_me:$LINENO: checking for pthread_join in LIBS=$PTHREAD_LIBS with CFLAGS=$PTHREAD_CFLAGS" >&5 -echo $ECHO_N "checking for pthread_join in LIBS=$PTHREAD_LIBS with CFLAGS=$PTHREAD_CFLAGS... $ECHO_C" >&6; } - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for pthread_join in LIBS=$PTHREAD_LIBS with CFLAGS=$PTHREAD_CFLAGS" >&5 +$as_echo_n "checking for pthread_join in LIBS=$PTHREAD_LIBS with CFLAGS=$PTHREAD_CFLAGS... " >&6; } + cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. @@ -16512,36 +15998,13 @@ return pthread_join (); return 0; } _ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_link") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest$ac_exeext && - $as_test_x conftest$ac_exeext; then +if ac_fn_c_try_link "$LINENO"; then : acx_pthread_ok=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - fi - -rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ - conftest$ac_exeext conftest.$ac_ext - { echo "$as_me:$LINENO: result: $acx_pthread_ok" >&5 -echo "${ECHO_T}$acx_pthread_ok" >&6; } +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $acx_pthread_ok" >&5 +$as_echo "$acx_pthread_ok" >&6; } if test x"$acx_pthread_ok" = xno; then PTHREAD_LIBS="" PTHREAD_CFLAGS="" @@ -16602,23 +16065,23 @@ for flag in $acx_pthread_flags; do case $flag in none) - { echo "$as_me:$LINENO: checking whether pthreads work without any flags" >&5 -echo $ECHO_N "checking whether pthreads work without any flags... $ECHO_C" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether pthreads work without any flags" >&5 +$as_echo_n "checking whether pthreads work without any flags... " >&6; } ;; -*) - { echo "$as_me:$LINENO: checking whether pthreads work with $flag" >&5 -echo $ECHO_N "checking whether pthreads work with $flag... $ECHO_C" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether pthreads work with $flag" >&5 +$as_echo_n "checking whether pthreads work with $flag... " >&6; } PTHREAD_CFLAGS="$flag" ;; pthread-config) # Extract the first word of "pthread-config", so it can be a program name with args. set dummy pthread-config; ac_word=$2 -{ echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } -if test "${ac_cv_prog_acx_pthread_config+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_acx_pthread_config+:} false; then : + $as_echo_n "(cached) " >&6 else if test -n "$acx_pthread_config"; then ac_cv_prog_acx_pthread_config="$acx_pthread_config" # Let the user override the test. @@ -16628,14 +16091,14 @@ for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do + for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_acx_pthread_config="yes" - echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done -done + done IFS=$as_save_IFS test -z "$ac_cv_prog_acx_pthread_config" && ac_cv_prog_acx_pthread_config="no" @@ -16643,11 +16106,11 @@ fi fi acx_pthread_config=$ac_cv_prog_acx_pthread_config if test -n "$acx_pthread_config"; then - { echo "$as_me:$LINENO: result: $acx_pthread_config" >&5 -echo "${ECHO_T}$acx_pthread_config" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $acx_pthread_config" >&5 +$as_echo "$acx_pthread_config" >&6; } else - { echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } fi @@ -16657,8 +16120,8 @@ fi ;; *) - { echo "$as_me:$LINENO: checking for the pthreads library -l$flag" >&5 -echo $ECHO_N "checking for the pthreads library -l$flag... $ECHO_C" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for the pthreads library -l$flag" >&5 +$as_echo_n "checking for the pthreads library -l$flag... " >&6; } PTHREAD_LIBS="-l$flag" ;; esac @@ -16677,11 +16140,7 @@ echo $ECHO_N "checking for the pthreads library -l$flag... $ECHO_C" >&6; } # pthread_cleanup_push because it is one of the few pthread # functions on Solaris that doesn't have a non-functional libc stub. # We try pthread_create on general principles. - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF + cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int @@ -16694,40 +16153,17 @@ pthread_t th; pthread_join(th, 0); return 0; } _ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_link") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest$ac_exeext && - $as_test_x conftest$ac_exeext; then +if ac_fn_c_try_link "$LINENO"; then : acx_pthread_ok=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - fi - -rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ - conftest$ac_exeext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext LIBS="$save_LIBS" CFLAGS="$save_CFLAGS" - { echo "$as_me:$LINENO: result: $acx_pthread_ok" >&5 -echo "${ECHO_T}$acx_pthread_ok" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $acx_pthread_ok" >&5 +$as_echo "$acx_pthread_ok" >&6; } if test "x$acx_pthread_ok" = xyes; then break; fi @@ -16745,15 +16181,11 @@ if test "x$acx_pthread_ok" = xyes; then CFLAGS="$CFLAGS $PTHREAD_CFLAGS" # Detect AIX lossage: JOINABLE attribute is called UNDETACHED. - { echo "$as_me:$LINENO: checking for joinable pthread attribute" >&5 -echo $ECHO_N "checking for joinable pthread attribute... $ECHO_C" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for joinable pthread attribute" >&5 +$as_echo_n "checking for joinable pthread attribute... " >&6; } attr_name=unknown for attr in PTHREAD_CREATE_JOINABLE PTHREAD_CREATE_UNDETACHED; do - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF + cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int @@ -16764,37 +16196,14 @@ int attr=$attr; return attr; return 0; } _ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_link") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest$ac_exeext && - $as_test_x conftest$ac_exeext; then +if ac_fn_c_try_link "$LINENO"; then : attr_name=$attr; break -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - fi - -rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ - conftest$ac_exeext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext done - { echo "$as_me:$LINENO: result: $attr_name" >&5 -echo "${ECHO_T}$attr_name" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $attr_name" >&5 +$as_echo "$attr_name" >&6; } if test "$attr_name" != PTHREAD_CREATE_JOINABLE; then cat >>confdefs.h <<_ACEOF @@ -16803,15 +16212,15 @@ _ACEOF fi - { echo "$as_me:$LINENO: checking if more special flags are required for pthreads" >&5 -echo $ECHO_N "checking if more special flags are required for pthreads... $ECHO_C" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if more special flags are required for pthreads" >&5 +$as_echo_n "checking if more special flags are required for pthreads... " >&6; } flag=no case "${host_cpu}-${host_os}" in *-aix* | *-freebsd* | *-darwin*) flag="-D_THREAD_SAFE";; *solaris* | *-osf* | *-hpux*) flag="-D_REENTRANT";; esac - { echo "$as_me:$LINENO: result: ${flag}" >&5 -echo "${ECHO_T}${flag}" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: ${flag}" >&5 +$as_echo "${flag}" >&6; } if test "x$flag" != xno; then PTHREAD_CFLAGS="$flag $PTHREAD_CFLAGS" fi @@ -16824,10 +16233,10 @@ echo "${ECHO_T}${flag}" >&6; } do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 -{ echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } -if test "${ac_cv_prog_PTHREAD_CC+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_PTHREAD_CC+:} false; then : + $as_echo_n "(cached) " >&6 else if test -n "$PTHREAD_CC"; then ac_cv_prog_PTHREAD_CC="$PTHREAD_CC" # Let the user override the test. @@ -16837,25 +16246,25 @@ for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do + for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_PTHREAD_CC="$ac_prog" - echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done -done + done IFS=$as_save_IFS fi fi PTHREAD_CC=$ac_cv_prog_PTHREAD_CC if test -n "$PTHREAD_CC"; then - { echo "$as_me:$LINENO: result: $PTHREAD_CC" >&5 -echo "${ECHO_T}$PTHREAD_CC" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PTHREAD_CC" >&5 +$as_echo "$PTHREAD_CC" >&6; } else - { echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } fi @@ -16899,13 +16308,9 @@ test -n "$PTHREAD_CC" || PTHREAD_CC="${CC}" # compiler. If not (and OS X's ld, for instance, does not accept -z), # then we can't do this test. if test x"$done" = xno; then - { echo "$as_me:$LINENO: checking whether to check for GCC pthread/shared inconsistencies" >&5 -echo $ECHO_N "checking whether to check for GCC pthread/shared inconsistencies... $ECHO_C" >&6; } - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to check for GCC pthread/shared inconsistencies" >&5 +$as_echo_n "checking whether to check for GCC pthread/shared inconsistencies... " >&6; } + cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int @@ -16916,52 +16321,27 @@ main () return 0; } _ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_link") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest$ac_exeext && - $as_test_x conftest$ac_exeext; then - : -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 +if ac_fn_c_try_link "$LINENO"; then : - done=yes +else + done=yes fi - -rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ - conftest$ac_exeext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext if test "x$done" = xyes ; then - { echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } else - { echo "$as_me:$LINENO: result: yes" >&5 -echo "${ECHO_T}yes" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } fi fi if test x"$done" = xno; then - { echo "$as_me:$LINENO: checking whether -pthread is sufficient with -shared" >&5 -echo $ECHO_N "checking whether -pthread is sufficient with -shared... $ECHO_C" >&6; } - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether -pthread is sufficient with -shared" >&5 +$as_echo_n "checking whether -pthread is sufficient with -shared... " >&6; } + cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int @@ -16974,41 +16354,18 @@ pthread_t th; pthread_join(th, 0); return 0; } _ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_link") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest$ac_exeext && - $as_test_x conftest$ac_exeext; then +if ac_fn_c_try_link "$LINENO"; then : done=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - fi - -rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ - conftest$ac_exeext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext if test "x$done" = xyes; then - { echo "$as_me:$LINENO: result: yes" >&5 -echo "${ECHO_T}yes" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } else - { echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } fi fi @@ -17017,14 +16374,10 @@ echo "${ECHO_T}no" >&6; } # about -lpthread # if test x"$done" = xno; then - { echo "$as_me:$LINENO: checking whether -lpthread fixes that" >&5 -echo $ECHO_N "checking whether -lpthread fixes that... $ECHO_C" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether -lpthread fixes that" >&5 +$as_echo_n "checking whether -lpthread fixes that... " >&6; } LIBS="-lpthread $PTHREAD_LIBS $save_LIBS" - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF + cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int @@ -17037,56 +16390,29 @@ pthread_t th; pthread_join(th, 0); return 0; } _ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_link") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest$ac_exeext && - $as_test_x conftest$ac_exeext; then +if ac_fn_c_try_link "$LINENO"; then : done=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - fi - -rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ - conftest$ac_exeext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext if test "x$done" = xyes; then - { echo "$as_me:$LINENO: result: yes" >&5 -echo "${ECHO_T}yes" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } PTHREAD_LIBS="-lpthread $PTHREAD_LIBS" else - { echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } fi fi # # FreeBSD 4.10 gcc forgets to use -lc_r instead of -lc # if test x"$done" = xno; then - { echo "$as_me:$LINENO: checking whether -lc_r fixes that" >&5 -echo $ECHO_N "checking whether -lc_r fixes that... $ECHO_C" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether -lc_r fixes that" >&5 +$as_echo_n "checking whether -lc_r fixes that... " >&6; } LIBS="-lc_r $PTHREAD_LIBS $save_LIBS" - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF + cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int @@ -17099,53 +16425,101 @@ pthread_t th; pthread_join(th, 0); return 0; } _ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_link") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest$ac_exeext && - $as_test_x conftest$ac_exeext; then +if ac_fn_c_try_link "$LINENO"; then : done=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - fi - -rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ - conftest$ac_exeext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext if test "x$done" = xyes; then - { echo "$as_me:$LINENO: result: yes" >&5 -echo "${ECHO_T}yes" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } PTHREAD_LIBS="-lc_r $PTHREAD_LIBS" else - { echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } fi fi if test x"$done" = xno; then # OK, we have run out of ideas - { echo "$as_me:$LINENO: WARNING: Impossible to determine how to use pthreads with shared libraries" >&5 -echo "$as_me: WARNING: Impossible to determine how to use pthreads with shared libraries" >&2;} + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Impossible to determine how to use pthreads with shared libraries" >&5 +$as_echo "$as_me: WARNING: Impossible to determine how to use pthreads with shared libraries" >&2;} # so it's not safe to assume that we may use pthreads acx_pthread_ok=no fi + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether what we have so far is sufficient with -nostdlib" >&5 +$as_echo_n "checking whether what we have so far is sufficient with -nostdlib... " >&6; } + CFLAGS="-nostdlib $CFLAGS" + # we need c with nostdlib + LIBS="$LIBS -lc" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +int +main () +{ +pthread_t th; pthread_join(th, 0); + pthread_attr_init(0); pthread_cleanup_push(0, 0); + pthread_create(0,0,0,0); pthread_cleanup_pop(0); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + done=yes +else + done=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + + if test "x$done" = xyes; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + fi + + if test x"$done" = xno; then + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether -lpthread saves the day" >&5 +$as_echo_n "checking whether -lpthread saves the day... " >&6; } + LIBS="-lpthread $LIBS" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +int +main () +{ +pthread_t th; pthread_join(th, 0); + pthread_attr_init(0); pthread_cleanup_push(0, 0); + pthread_create(0,0,0,0); pthread_cleanup_pop(0); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + done=yes +else + done=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + + if test "x$done" = xyes; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + PTHREAD_LIBS="$PTHREAD_LIBS -lpthread" + else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Impossible to determine how to use pthreads with shared libraries and -nostdlib" >&5 +$as_echo "$as_me: WARNING: Impossible to determine how to use pthreads with shared libraries and -nostdlib" >&2;} + fi + fi + CFLAGS="$save_CFLAGS" LIBS="$save_LIBS" CC="$save_CC" @@ -17160,9 +16534,7 @@ fi # Finally, execute ACTION-IF-FOUND/ACTION-IF-NOT-FOUND: if test x"$acx_pthread_ok" = xyes; then -cat >>confdefs.h <<\_ACEOF -#define HAVE_PTHREAD 1 -_ACEOF +$as_echo "#define HAVE_PTHREAD 1" >>confdefs.h : else @@ -17176,8 +16548,9 @@ ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ex ac_compiler_gnu=$ac_cv_cxx_compiler_gnu -{ echo "$as_me:$LINENO: checking the location of hash_map" >&5 -echo $ECHO_N "checking the location of hash_map... $ECHO_C" >&6; } + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking the location of hash_map" >&5 +$as_echo_n "checking the location of hash_map... " >&6; } ac_ext=cpp ac_cpp='$CXXCPP $CPPFLAGS' @@ -17185,112 +16558,119 @@ ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_cxx_compiler_gnu - ac_cv_cxx_hash_map_header="" - ac_cv_cxx_hash_map_class="" - for location in tr1/unordered_map ext/hash_map hash_map; do - for namespace in std::tr1 __gnu_cxx "" std stdext; do - for name in unordered_map hash_map; do - - if test -z "$ac_cv_cxx_hash_map_header"; then - - # On OSX 1.5 / GCC 4.0.1 (the standard compiler on that platform), - # calling find() on a const unordered_map does not compile. So, we - # include a call to find() in our test to detect this broken - # implementation and avoid using it. Note that ext/hash_map works - # fine on this platform, so we'll end up using that. - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ + ac_cv_cxx_hash_map="" + # First try unordered_map, but not on gcc's before 4.2 -- I've + # seen unexplainable unordered_map bugs with -O2 on older gcc's. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#if defined(__GNUC__) && (__GNUC__ < 4 || (__GNUC__ == 4 && __GNUC_MINOR__ < 2)) + # error GCC too old for unordered_map + #endif + +int +main () +{ +/* no program body necessary */ + ; + return 0; +} _ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF +if ac_fn_cxx_try_compile "$LINENO"; then : + stl_hash_old_gcc=no +else + stl_hash_old_gcc=yes +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + for location in unordered_map tr1/unordered_map; do + for namespace in std std::tr1; do + if test -z "$ac_cv_cxx_hash_map" -a "$stl_hash_old_gcc" != yes; then + # Some older gcc's have a buggy tr1, so test a bit of code. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include <$location> int main () { -const ${namespace}::$name t; - t.find(1); +const ${namespace}::unordered_map t; + return t.find(5) == t.end(); ; return 0; } _ACEOF -rm -f conftest.$ac_objext -if { (ac_try="$ac_compile" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compile") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_cxx_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then - ac_cv_cxx_hash_map_header="<$location>"; - ac_cv_cxx_hash_namespace="$namespace"; - ac_cv_cxx_hash_map_class="$name"; -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - +if ac_fn_cxx_try_compile "$LINENO"; then : + ac_cv_cxx_hash_map="<$location>"; + ac_cv_cxx_hash_namespace="$namespace"; + ac_cv_cxx_hash_map_class="unordered_map"; fi - rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext - fi - done + fi + done + done + # Now try hash_map + for location in ext/hash_map hash_map; do + for namespace in __gnu_cxx "" std stdext; do + if test -z "$ac_cv_cxx_hash_map"; then + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include <$location> +int +main () +{ +${namespace}::hash_map t + ; + return 0; +} +_ACEOF +if ac_fn_cxx_try_compile "$LINENO"; then : + ac_cv_cxx_hash_map="<$location>"; + ac_cv_cxx_hash_namespace="$namespace"; + ac_cv_cxx_hash_map_class="hash_map"; +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + fi done done - ac_cv_cxx_hash_set_header=`echo "$ac_cv_cxx_hash_map_header" | sed s/map/set/`; + ac_cv_cxx_hash_set=`echo "$ac_cv_cxx_hash_map" | sed s/map/set/`; ac_cv_cxx_hash_set_class=`echo "$ac_cv_cxx_hash_map_class" | sed s/map/set/`; - if test -n "$ac_cv_cxx_hash_map_header"; then + if test -n "$ac_cv_cxx_hash_map"; then -cat >>confdefs.h <<\_ACEOF -#define HAVE_HASH_MAP 1 -_ACEOF +$as_echo "#define HAVE_HASH_MAP 1" >>confdefs.h -cat >>confdefs.h <<\_ACEOF -#define HAVE_HASH_SET 1 -_ACEOF +$as_echo "#define HAVE_HASH_SET 1" >>confdefs.h cat >>confdefs.h <<_ACEOF -#define HASH_MAP_H $ac_cv_cxx_hash_map_header +#define HASH_MAP_H $ac_cv_cxx_hash_map _ACEOF cat >>confdefs.h <<_ACEOF -#define HASH_SET_H $ac_cv_cxx_hash_set_header +#define HASH_SET_H $ac_cv_cxx_hash_set _ACEOF cat >>confdefs.h <<_ACEOF -#define HASH_MAP_CLASS $ac_cv_cxx_hash_map_class +#define HASH_NAMESPACE $ac_cv_cxx_hash_namespace _ACEOF cat >>confdefs.h <<_ACEOF -#define HASH_SET_CLASS $ac_cv_cxx_hash_set_class +#define HASH_MAP_CLASS $ac_cv_cxx_hash_map_class _ACEOF cat >>confdefs.h <<_ACEOF -#define HASH_NAMESPACE $ac_cv_cxx_hash_namespace +#define HASH_SET_CLASS $ac_cv_cxx_hash_set_class _ACEOF - { echo "$as_me:$LINENO: result: $ac_cv_cxx_hash_map_header" >&5 -echo "${ECHO_T}$ac_cv_cxx_hash_map_header" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_cxx_hash_map" >&5 +$as_echo "$ac_cv_cxx_hash_map" >&6; } else - { echo "$as_me:$LINENO: result: " >&5 -echo "${ECHO_T}" >&6; } - { echo "$as_me:$LINENO: WARNING: could not find an STL hash_map" >&5 -echo "$as_me: WARNING: could not find an STL hash_map" >&2;} + { $as_echo "$as_me:${as_lineno-$LINENO}: result: " >&5 +$as_echo "" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: could not find an STL hash_map" >&5 +$as_echo "$as_me: WARNING: could not find an STL hash_map" >&2;} fi @@ -17299,6 +16679,8 @@ echo "$as_me: WARNING: could not find an STL hash_map" >&2;} # too. export CFLAGS export CXXFLAGS + + subdirs="$subdirs gtest" @@ -17331,12 +16713,13 @@ _ACEOF case $ac_val in #( *${as_nl}*) case $ac_var in #( - *_cv_*) { echo "$as_me:$LINENO: WARNING: Cache variable $ac_var contains a newline." >&5 -echo "$as_me: WARNING: Cache variable $ac_var contains a newline." >&2;} ;; + *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5 +$as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; esac case $ac_var in #( _ | IFS | as_nl) ;; #( - *) $as_unset $ac_var ;; + BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #( + *) { eval $ac_var=; unset $ac_var;} ;; esac ;; esac done @@ -17344,8 +16727,8 @@ echo "$as_me: WARNING: Cache variable $ac_var contains a newline." >&2;} ;; (set) 2>&1 | case $as_nl`(ac_space=' '; set) 2>&1` in #( *${as_nl}ac_space=\ *) - # `set' does not quote correctly, so add quotes (double-quote - # substitution turns \\\\ into \\, and sed turns \\ into \). + # `set' does not quote correctly, so add quotes: double-quote + # substitution turns \\\\ into \\, and sed turns \\ into \. sed -n \ "s/'/'\\\\''/g; s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p" @@ -17367,13 +16750,24 @@ echo "$as_me: WARNING: Cache variable $ac_var contains a newline." >&2;} ;; :end' >>confcache if diff "$cache_file" confcache >/dev/null 2>&1; then :; else if test -w "$cache_file"; then - test "x$cache_file" != "x/dev/null" && - { echo "$as_me:$LINENO: updating cache $cache_file" >&5 -echo "$as_me: updating cache $cache_file" >&6;} - cat confcache >$cache_file + if test "x$cache_file" != "x/dev/null"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: updating cache $cache_file" >&5 +$as_echo "$as_me: updating cache $cache_file" >&6;} + if test ! -f "$cache_file" || test -h "$cache_file"; then + cat confcache >"$cache_file" + else + case $cache_file in #( + */* | ?:*) + mv -f confcache "$cache_file"$$ && + mv -f "$cache_file"$$ "$cache_file" ;; #( + *) + mv -f confcache "$cache_file" ;; + esac + fi + fi else - { echo "$as_me:$LINENO: not updating unwritable cache $cache_file" >&5 -echo "$as_me: not updating unwritable cache $cache_file" >&6;} + { $as_echo "$as_me:${as_lineno-$LINENO}: not updating unwritable cache $cache_file" >&5 +$as_echo "$as_me: not updating unwritable cache $cache_file" >&6;} fi fi rm -f confcache @@ -17386,76 +16780,66 @@ DEFS=-DHAVE_CONFIG_H ac_libobjs= ac_ltlibobjs= +U= for ac_i in : $LIBOBJS; do test "x$ac_i" = x: && continue # 1. Remove the extension, and $U if already installed. ac_script='s/\$U\././;s/\.o$//;s/\.obj$//' - ac_i=`echo "$ac_i" | sed "$ac_script"` + ac_i=`$as_echo "$ac_i" | sed "$ac_script"` # 2. Prepend LIBOBJDIR. When used with automake>=1.10 LIBOBJDIR # will be set to the directory where LIBOBJS objects are built. - ac_libobjs="$ac_libobjs \${LIBOBJDIR}$ac_i\$U.$ac_objext" - ac_ltlibobjs="$ac_ltlibobjs \${LIBOBJDIR}$ac_i"'$U.lo' + as_fn_append ac_libobjs " \${LIBOBJDIR}$ac_i\$U.$ac_objext" + as_fn_append ac_ltlibobjs " \${LIBOBJDIR}$ac_i"'$U.lo' done LIBOBJS=$ac_libobjs LTLIBOBJS=$ac_ltlibobjs +if test -z "${MAINTAINER_MODE_TRUE}" && test -z "${MAINTAINER_MODE_FALSE}"; then + as_fn_error $? "conditional \"MAINTAINER_MODE\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi + if test -n "$EXEEXT"; then + am__EXEEXT_TRUE= + am__EXEEXT_FALSE='#' +else + am__EXEEXT_TRUE='#' + am__EXEEXT_FALSE= +fi + if test -z "${AMDEP_TRUE}" && test -z "${AMDEP_FALSE}"; then - { { echo "$as_me:$LINENO: error: conditional \"AMDEP\" was never defined. -Usually this means the macro was only invoked conditionally." >&5 -echo "$as_me: error: conditional \"AMDEP\" was never defined. -Usually this means the macro was only invoked conditionally." >&2;} - { (exit 1); exit 1; }; } + as_fn_error $? "conditional \"AMDEP\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${am__fastdepCC_TRUE}" && test -z "${am__fastdepCC_FALSE}"; then - { { echo "$as_me:$LINENO: error: conditional \"am__fastdepCC\" was never defined. -Usually this means the macro was only invoked conditionally." >&5 -echo "$as_me: error: conditional \"am__fastdepCC\" was never defined. -Usually this means the macro was only invoked conditionally." >&2;} - { (exit 1); exit 1; }; } + as_fn_error $? "conditional \"am__fastdepCC\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${am__fastdepCXX_TRUE}" && test -z "${am__fastdepCXX_FALSE}"; then - { { echo "$as_me:$LINENO: error: conditional \"am__fastdepCXX\" was never defined. -Usually this means the macro was only invoked conditionally." >&5 -echo "$as_me: error: conditional \"am__fastdepCXX\" was never defined. -Usually this means the macro was only invoked conditionally." >&2;} - { (exit 1); exit 1; }; } + as_fn_error $? "conditional \"am__fastdepCXX\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${GCC_TRUE}" && test -z "${GCC_FALSE}"; then - { { echo "$as_me:$LINENO: error: conditional \"GCC\" was never defined. -Usually this means the macro was only invoked conditionally." >&5 -echo "$as_me: error: conditional \"GCC\" was never defined. -Usually this means the macro was only invoked conditionally." >&2;} - { (exit 1); exit 1; }; } -fi -if test -z "${am__fastdepCXX_TRUE}" && test -z "${am__fastdepCXX_FALSE}"; then - { { echo "$as_me:$LINENO: error: conditional \"am__fastdepCXX\" was never defined. -Usually this means the macro was only invoked conditionally." >&5 -echo "$as_me: error: conditional \"am__fastdepCXX\" was never defined. -Usually this means the macro was only invoked conditionally." >&2;} - { (exit 1); exit 1; }; } + as_fn_error $? "conditional \"GCC\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${HAVE_ZLIB_TRUE}" && test -z "${HAVE_ZLIB_FALSE}"; then - { { echo "$as_me:$LINENO: error: conditional \"HAVE_ZLIB\" was never defined. -Usually this means the macro was only invoked conditionally." >&5 -echo "$as_me: error: conditional \"HAVE_ZLIB\" was never defined. -Usually this means the macro was only invoked conditionally." >&2;} - { (exit 1); exit 1; }; } + as_fn_error $? "conditional \"HAVE_ZLIB\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${USE_EXTERNAL_PROTOC_TRUE}" && test -z "${USE_EXTERNAL_PROTOC_FALSE}"; then - { { echo "$as_me:$LINENO: error: conditional \"USE_EXTERNAL_PROTOC\" was never defined. -Usually this means the macro was only invoked conditionally." >&5 -echo "$as_me: error: conditional \"USE_EXTERNAL_PROTOC\" was never defined. -Usually this means the macro was only invoked conditionally." >&2;} - { (exit 1); exit 1; }; } + as_fn_error $? "conditional \"USE_EXTERNAL_PROTOC\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi -: ${CONFIG_STATUS=./config.status} +: "${CONFIG_STATUS=./config.status}" +ac_write_fail=0 ac_clean_files_save=$ac_clean_files ac_clean_files="$ac_clean_files $CONFIG_STATUS" -{ echo "$as_me:$LINENO: creating $CONFIG_STATUS" >&5 -echo "$as_me: creating $CONFIG_STATUS" >&6;} -cat >$CONFIG_STATUS <<_ACEOF +{ $as_echo "$as_me:${as_lineno-$LINENO}: creating $CONFIG_STATUS" >&5 +$as_echo "$as_me: creating $CONFIG_STATUS" >&6;} +as_write_fail=0 +cat >$CONFIG_STATUS <<_ASEOF || as_write_fail=1 #! $SHELL # Generated by $as_me. # Run this file to recreate the current configuration. @@ -17465,59 +16849,79 @@ cat >$CONFIG_STATUS <<_ACEOF debug=false ac_cs_recheck=false ac_cs_silent=false -SHELL=\${CONFIG_SHELL-$SHELL} -_ACEOF -cat >>$CONFIG_STATUS <<\_ACEOF -## --------------------- ## -## M4sh Initialization. ## -## --------------------- ## +SHELL=\${CONFIG_SHELL-$SHELL} +export SHELL +_ASEOF +cat >>$CONFIG_STATUS <<\_ASEOF || as_write_fail=1 +## -------------------- ## +## M4sh Initialization. ## +## -------------------- ## # Be more Bourne compatible DUALCASE=1; export DUALCASE # for MKS sh -if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then +if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then : emulate sh NULLCMD=: - # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which + # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which # is contrary to our usage. Disable this feature. alias -g '${1+"$@"}'='"$@"' setopt NO_GLOB_SUBST else - case `(set -o) 2>/dev/null` in - *posix*) set -o posix ;; + case `(set -o) 2>/dev/null` in #( + *posix*) : + set -o posix ;; #( + *) : + ;; esac - fi - - -# PATH needs CR -# Avoid depending upon Character Ranges. -as_cr_letters='abcdefghijklmnopqrstuvwxyz' -as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' -as_cr_Letters=$as_cr_letters$as_cr_LETTERS -as_cr_digits='0123456789' -as_cr_alnum=$as_cr_Letters$as_cr_digits - -# The user is always right. -if test "${PATH_SEPARATOR+set}" != set; then - echo "#! /bin/sh" >conf$$.sh - echo "exit 0" >>conf$$.sh - chmod +x conf$$.sh - if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then - PATH_SEPARATOR=';' +as_nl=' +' +export as_nl +# Printing a long string crashes Solaris 7 /usr/bin/printf. +as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' +as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo +as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo +# Prefer a ksh shell builtin over an external printf program on Solaris, +# but without wasting forks for bash or zsh. +if test -z "$BASH_VERSION$ZSH_VERSION" \ + && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then + as_echo='print -r --' + as_echo_n='print -rn --' +elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then + as_echo='printf %s\n' + as_echo_n='printf %s' +else + if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then + as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"' + as_echo_n='/usr/ucb/echo -n' else - PATH_SEPARATOR=: + as_echo_body='eval expr "X$1" : "X\\(.*\\)"' + as_echo_n_body='eval + arg=$1; + case $arg in #( + *"$as_nl"*) + expr "X$arg" : "X\\(.*\\)$as_nl"; + arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;; + esac; + expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl" + ' + export as_echo_n_body + as_echo_n='sh -c $as_echo_n_body as_echo' fi - rm -f conf$$.sh + export as_echo_body + as_echo='sh -c $as_echo_body as_echo' fi -# Support unset when possible. -if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then - as_unset=unset -else - as_unset=false +# The user is always right. +if test "${PATH_SEPARATOR+set}" != set; then + PATH_SEPARATOR=: + (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { + (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || + PATH_SEPARATOR=';' + } fi @@ -17526,20 +16930,19 @@ fi # there to prevent editors from complaining about space-tab. # (If _AS_PATH_WALK were called with IFS unset, it would disable word # splitting by setting IFS to empty value.) -as_nl=' -' IFS=" "" $as_nl" # Find who we are. Look in the path if we contain no directory separator. -case $0 in +as_myself= +case $0 in #(( *[\\/]* ) as_myself=$0 ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. - test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break -done + test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break + done IFS=$as_save_IFS ;; @@ -17550,32 +16953,111 @@ if test "x$as_myself" = x; then as_myself=$0 fi if test ! -f "$as_myself"; then - echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 - { (exit 1); exit 1; } + $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 + exit 1 fi -# Work around bugs in pre-3.0 UWIN ksh. -for as_var in ENV MAIL MAILPATH -do ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var +# Unset variables that we do not need and which cause bugs (e.g. in +# pre-3.0 UWIN ksh). But do not cause bugs in bash 2.01; the "|| exit 1" +# suppresses any "Segmentation fault" message there. '((' could +# trigger a bug in pdksh 5.2.14. +for as_var in BASH_ENV ENV MAIL MAILPATH +do eval test x\${$as_var+set} = xset \ + && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : done PS1='$ ' PS2='> ' PS4='+ ' # NLS nuisances. -for as_var in \ - LANG LANGUAGE LC_ADDRESS LC_ALL LC_COLLATE LC_CTYPE LC_IDENTIFICATION \ - LC_MEASUREMENT LC_MESSAGES LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER \ - LC_TELEPHONE LC_TIME -do - if (set +x; test -z "`(eval $as_var=C; export $as_var) 2>&1`"); then - eval $as_var=C; export $as_var - else - ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var +LC_ALL=C +export LC_ALL +LANGUAGE=C +export LANGUAGE + +# CDPATH. +(unset CDPATH) >/dev/null 2>&1 && unset CDPATH + + +# as_fn_error STATUS ERROR [LINENO LOG_FD] +# ---------------------------------------- +# Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are +# provided, also output the error to LOG_FD, referencing LINENO. Then exit the +# script with STATUS, using 1 if that was 0. +as_fn_error () +{ + as_status=$1; test $as_status -eq 0 && as_status=1 + if test "$4"; then + as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4 fi -done + $as_echo "$as_me: error: $2" >&2 + as_fn_exit $as_status +} # as_fn_error + + +# as_fn_set_status STATUS +# ----------------------- +# Set $? to STATUS, without forking. +as_fn_set_status () +{ + return $1 +} # as_fn_set_status + +# as_fn_exit STATUS +# ----------------- +# Exit the shell with STATUS, even in a "trap 0" or "set -e" context. +as_fn_exit () +{ + set +e + as_fn_set_status $1 + exit $1 +} # as_fn_exit + +# as_fn_unset VAR +# --------------- +# Portably unset VAR. +as_fn_unset () +{ + { eval $1=; unset $1;} +} +as_unset=as_fn_unset +# as_fn_append VAR VALUE +# ---------------------- +# Append the text in VALUE to the end of the definition contained in VAR. Take +# advantage of any shell optimizations that allow amortized linear growth over +# repeated appends, instead of the typical quadratic growth present in naive +# implementations. +if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then : + eval 'as_fn_append () + { + eval $1+=\$2 + }' +else + as_fn_append () + { + eval $1=\$$1\$2 + } +fi # as_fn_append + +# as_fn_arith ARG... +# ------------------ +# Perform arithmetic evaluation on the ARGs, and store the result in the +# global $as_val. Take advantage of shells that can avoid forks. The arguments +# must be portable across $(()) and expr. +if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then : + eval 'as_fn_arith () + { + as_val=$(( $* )) + }' +else + as_fn_arith () + { + as_val=`expr "$@" || test $? -eq 1` + } +fi # as_fn_arith + -# Required to use basename. if expr a : '\(a\)' >/dev/null 2>&1 && test "X`expr 00001 : '.*\(...\)'`" = X001; then as_expr=expr @@ -17589,13 +17071,17 @@ else as_basename=false fi +if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then + as_dirname=dirname +else + as_dirname=false +fi -# Name of the executable. as_me=`$as_basename -- "$0" || $as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ X"$0" : 'X\(//\)$' \| \ X"$0" : 'X\(/\)' \| . 2>/dev/null || -echo X/"$0" | +$as_echo X/"$0" | sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/ q @@ -17610,104 +17096,103 @@ echo X/"$0" | } s/.*/./; q'` -# CDPATH. -$as_unset CDPATH - - - - as_lineno_1=$LINENO - as_lineno_2=$LINENO - test "x$as_lineno_1" != "x$as_lineno_2" && - test "x`expr $as_lineno_1 + 1`" = "x$as_lineno_2" || { - - # Create $as_me.lineno as a copy of $as_myself, but with $LINENO - # uniformly replaced by the line number. The first 'sed' inserts a - # line-number line after each line using $LINENO; the second 'sed' - # does the real work. The second script uses 'N' to pair each - # line-number line with the line containing $LINENO, and appends - # trailing '-' during substitution so that $LINENO is not a special - # case at line end. - # (Raja R Harinath suggested sed '=', and Paul Eggert wrote the - # scripts with optimization help from Paolo Bonzini. Blame Lee - # E. McMahon (1931-1989) for sed's syntax. :-) - sed -n ' - p - /[$]LINENO/= - ' <$as_myself | - sed ' - s/[$]LINENO.*/&-/ - t lineno - b - :lineno - N - :loop - s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/ - t loop - s/-\n.*// - ' >$as_me.lineno && - chmod +x "$as_me.lineno" || - { echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2 - { (exit 1); exit 1; }; } - - # Don't try to exec as it changes $[0], causing all sort of problems - # (the dirname of $[0] is not the place where we might find the - # original and so on. Autoconf is especially sensitive to this). - . "./$as_me.lineno" - # Exit status is that of the last command. - exit -} - - -if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then - as_dirname=dirname -else - as_dirname=false -fi +# Avoid depending upon Character Ranges. +as_cr_letters='abcdefghijklmnopqrstuvwxyz' +as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' +as_cr_Letters=$as_cr_letters$as_cr_LETTERS +as_cr_digits='0123456789' +as_cr_alnum=$as_cr_Letters$as_cr_digits ECHO_C= ECHO_N= ECHO_T= -case `echo -n x` in +case `echo -n x` in #((((( -n*) - case `echo 'x\c'` in + case `echo 'xy\c'` in *c*) ECHO_T=' ';; # ECHO_T is single tab character. - *) ECHO_C='\c';; + xy) ECHO_C='\c';; + *) echo `echo ksh88 bug on AIX 6.1` > /dev/null + ECHO_T=' ';; esac;; *) ECHO_N='-n';; esac -if expr a : '\(a\)' >/dev/null 2>&1 && - test "X`expr 00001 : '.*\(...\)'`" = X001; then - as_expr=expr -else - as_expr=false -fi - rm -f conf$$ conf$$.exe conf$$.file if test -d conf$$.dir; then rm -f conf$$.dir/conf$$.file else rm -f conf$$.dir - mkdir conf$$.dir -fi -echo >conf$$.file -if ln -s conf$$.file conf$$ 2>/dev/null; then - as_ln_s='ln -s' - # ... but there are two gotchas: - # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. - # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. - # In both cases, we have to default to `cp -p'. - ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || + mkdir conf$$.dir 2>/dev/null +fi +if (echo >conf$$.file) 2>/dev/null; then + if ln -s conf$$.file conf$$ 2>/dev/null; then + as_ln_s='ln -s' + # ... but there are two gotchas: + # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. + # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. + # In both cases, we have to default to `cp -p'. + ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || + as_ln_s='cp -p' + elif ln conf$$.file conf$$ 2>/dev/null; then + as_ln_s=ln + else as_ln_s='cp -p' -elif ln conf$$.file conf$$ 2>/dev/null; then - as_ln_s=ln + fi else as_ln_s='cp -p' fi rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file rmdir conf$$.dir 2>/dev/null + +# as_fn_mkdir_p +# ------------- +# Create "$as_dir" as a directory, including parents if necessary. +as_fn_mkdir_p () +{ + + case $as_dir in #( + -*) as_dir=./$as_dir;; + esac + test -d "$as_dir" || eval $as_mkdir_p || { + as_dirs= + while :; do + case $as_dir in #( + *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( + *) as_qdir=$as_dir;; + esac + as_dirs="'$as_qdir' $as_dirs" + as_dir=`$as_dirname -- "$as_dir" || +$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$as_dir" : 'X\(//\)[^/]' \| \ + X"$as_dir" : 'X\(//\)$' \| \ + X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || +$as_echo X"$as_dir" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + test -d "$as_dir" && break + done + test -z "$as_dirs" || eval "mkdir $as_dirs" + } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir" + + +} # as_fn_mkdir_p if mkdir -p . 2>/dev/null; then - as_mkdir_p=: + as_mkdir_p='mkdir -p "$as_dir"' else test -d ./-p && rmdir ./-p as_mkdir_p=false @@ -17724,12 +17209,12 @@ else as_test_x=' eval sh -c '\'' if test -d "$1"; then - test -d "$1/."; + test -d "$1/."; else - case $1 in - -*)set "./$1";; + case $1 in #( + -*)set "./$1";; esac; - case `ls -ld'$as_ls_L_option' "$1" 2>/dev/null` in + case `ls -ld'$as_ls_L_option' "$1" 2>/dev/null` in #(( ???[sx]*):;;*)false;;esac;fi '\'' sh ' @@ -17744,13 +17229,19 @@ as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" exec 6>&1 +## ----------------------------------- ## +## Main body of $CONFIG_STATUS script. ## +## ----------------------------------- ## +_ASEOF +test $as_write_fail = 0 && chmod +x $CONFIG_STATUS || ac_write_fail=1 -# Save the log message, to keep $[0] and so on meaningful, and to +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +# Save the log message, to keep $0 and so on meaningful, and to # report actual input values of CONFIG_FILES etc. instead of their # values after options handling. ac_log=" -This file was extended by Protocol Buffers $as_me 2.3.0, which was -generated by GNU Autoconf 2.61. Invocation command line was +This file was extended by Protocol Buffers $as_me 2.5.0, which was +generated by GNU Autoconf 2.68. Invocation command line was CONFIG_FILES = $CONFIG_FILES CONFIG_HEADERS = $CONFIG_HEADERS @@ -17763,7 +17254,16 @@ on `(hostname || uname -n) 2>/dev/null | sed 1q` _ACEOF -cat >>$CONFIG_STATUS <<_ACEOF +case $ac_config_files in *" +"*) set x $ac_config_files; shift; ac_config_files=$*;; +esac + +case $ac_config_headers in *" +"*) set x $ac_config_headers; shift; ac_config_headers=$*;; +esac + + +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 # Files that config.status was made for. config_files="$ac_config_files" config_headers="$ac_config_headers" @@ -17771,22 +17271,25 @@ config_commands="$ac_config_commands" _ACEOF -cat >>$CONFIG_STATUS <<\_ACEOF +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 ac_cs_usage="\ -\`$as_me' instantiates files from templates according to the -current configuration. +\`$as_me' instantiates files and other configuration actions +from templates according to the current configuration. Unless the files +and actions are specified as TAGs, all are instantiated by default. -Usage: $0 [OPTIONS] [FILE]... +Usage: $0 [OPTION]... [TAG]... -h, --help print this help, then exit -V, --version print version number and configuration settings, then exit - -q, --quiet do not print progress messages + --config print configuration, then exit + -q, --quiet, --silent + do not print progress messages -d, --debug don't remove temporary files --recheck update $as_me by reconfiguring in the same conditions - --file=FILE[:TEMPLATE] - instantiate the configuration file FILE - --header=FILE[:TEMPLATE] - instantiate the configuration header FILE + --file=FILE[:TEMPLATE] + instantiate the configuration file FILE + --header=FILE[:TEMPLATE] + instantiate the configuration header FILE Configuration files: $config_files @@ -17797,16 +17300,17 @@ $config_headers Configuration commands: $config_commands -Report bugs to ." +Report bugs to ." _ACEOF -cat >>$CONFIG_STATUS <<_ACEOF +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 +ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`" ac_cs_version="\\ -Protocol Buffers config.status 2.3.0 -configured by $0, generated by GNU Autoconf 2.61, - with options \\"`echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`\\" +Protocol Buffers config.status 2.5.0 +configured by $0, generated by GNU Autoconf 2.68, + with options \\"\$ac_cs_config\\" -Copyright (C) 2006 Free Software Foundation, Inc. +Copyright (C) 2010 Free Software Foundation, Inc. This config.status script is free software; the Free Software Foundation gives unlimited permission to copy, distribute and modify it." @@ -17814,20 +17318,26 @@ ac_pwd='$ac_pwd' srcdir='$srcdir' INSTALL='$INSTALL' MKDIR_P='$MKDIR_P' +AWK='$AWK' +test -n "\$AWK" || AWK=awk _ACEOF -cat >>$CONFIG_STATUS <<\_ACEOF -# If no file are specified by the user, then we need to provide default -# value. By we need to know if files were specified by the user. +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +# The default lists apply if the user does not specify any file. ac_need_defaults=: while test $# != 0 do case $1 in - --*=*) + --*=?*) ac_option=`expr "X$1" : 'X\([^=]*\)='` ac_optarg=`expr "X$1" : 'X[^=]*=\(.*\)'` ac_shift=: ;; + --*=) + ac_option=`expr "X$1" : 'X\([^=]*\)='` + ac_optarg= + ac_shift=: + ;; *) ac_option=$1 ac_optarg=$2 @@ -17840,34 +17350,41 @@ do -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r) ac_cs_recheck=: ;; --version | --versio | --versi | --vers | --ver | --ve | --v | -V ) - echo "$ac_cs_version"; exit ;; + $as_echo "$ac_cs_version"; exit ;; + --config | --confi | --conf | --con | --co | --c ) + $as_echo "$ac_cs_config"; exit ;; --debug | --debu | --deb | --de | --d | -d ) debug=: ;; --file | --fil | --fi | --f ) $ac_shift - CONFIG_FILES="$CONFIG_FILES $ac_optarg" + case $ac_optarg in + *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;; + '') as_fn_error $? "missing file argument" ;; + esac + as_fn_append CONFIG_FILES " '$ac_optarg'" ac_need_defaults=false;; --header | --heade | --head | --hea ) $ac_shift - CONFIG_HEADERS="$CONFIG_HEADERS $ac_optarg" + case $ac_optarg in + *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;; + esac + as_fn_append CONFIG_HEADERS " '$ac_optarg'" ac_need_defaults=false;; --he | --h) # Conflict between --help and --header - { echo "$as_me: error: ambiguous option: $1 -Try \`$0 --help' for more information." >&2 - { (exit 1); exit 1; }; };; + as_fn_error $? "ambiguous option: \`$1' +Try \`$0 --help' for more information.";; --help | --hel | -h ) - echo "$ac_cs_usage"; exit ;; + $as_echo "$ac_cs_usage"; exit ;; -q | -quiet | --quiet | --quie | --qui | --qu | --q \ | -silent | --silent | --silen | --sile | --sil | --si | --s) ac_cs_silent=: ;; # This is an error. - -*) { echo "$as_me: error: unrecognized option: $1 -Try \`$0 --help' for more information." >&2 - { (exit 1); exit 1; }; } ;; + -*) as_fn_error $? "unrecognized option: \`$1' +Try \`$0 --help' for more information." ;; - *) ac_config_targets="$ac_config_targets $1" + *) as_fn_append ac_config_targets " $1" ac_need_defaults=false ;; esac @@ -17882,27 +17399,29 @@ if $ac_cs_silent; then fi _ACEOF -cat >>$CONFIG_STATUS <<_ACEOF +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 if \$ac_cs_recheck; then - echo "running CONFIG_SHELL=$SHELL $SHELL $0 "$ac_configure_args \$ac_configure_extra_args " --no-create --no-recursion" >&6 - CONFIG_SHELL=$SHELL + set X '$SHELL' '$0' $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion + shift + \$as_echo "running CONFIG_SHELL=$SHELL \$*" >&6 + CONFIG_SHELL='$SHELL' export CONFIG_SHELL - exec $SHELL "$0"$ac_configure_args \$ac_configure_extra_args --no-create --no-recursion + exec "\$@" fi _ACEOF -cat >>$CONFIG_STATUS <<\_ACEOF +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 exec 5>>config.log { echo sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX ## Running $as_me. ## _ASBOX - echo "$ac_log" + $as_echo "$ac_log" } >&5 _ACEOF -cat >>$CONFIG_STATUS <<_ACEOF +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 # # INIT-COMMANDS # @@ -17916,183 +17435,208 @@ AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir" sed_quote_subst='$sed_quote_subst' double_quote_subst='$double_quote_subst' delay_variable_subst='$delay_variable_subst' -macro_version='`$ECHO "X$macro_version" | $Xsed -e "$delay_single_quote_subst"`' -macro_revision='`$ECHO "X$macro_revision" | $Xsed -e "$delay_single_quote_subst"`' -enable_shared='`$ECHO "X$enable_shared" | $Xsed -e "$delay_single_quote_subst"`' -enable_static='`$ECHO "X$enable_static" | $Xsed -e "$delay_single_quote_subst"`' -pic_mode='`$ECHO "X$pic_mode" | $Xsed -e "$delay_single_quote_subst"`' -enable_fast_install='`$ECHO "X$enable_fast_install" | $Xsed -e "$delay_single_quote_subst"`' -host_alias='`$ECHO "X$host_alias" | $Xsed -e "$delay_single_quote_subst"`' -host='`$ECHO "X$host" | $Xsed -e "$delay_single_quote_subst"`' -host_os='`$ECHO "X$host_os" | $Xsed -e "$delay_single_quote_subst"`' -build_alias='`$ECHO "X$build_alias" | $Xsed -e "$delay_single_quote_subst"`' -build='`$ECHO "X$build" | $Xsed -e "$delay_single_quote_subst"`' -build_os='`$ECHO "X$build_os" | $Xsed -e "$delay_single_quote_subst"`' -SED='`$ECHO "X$SED" | $Xsed -e "$delay_single_quote_subst"`' -Xsed='`$ECHO "X$Xsed" | $Xsed -e "$delay_single_quote_subst"`' -GREP='`$ECHO "X$GREP" | $Xsed -e "$delay_single_quote_subst"`' -EGREP='`$ECHO "X$EGREP" | $Xsed -e "$delay_single_quote_subst"`' -FGREP='`$ECHO "X$FGREP" | $Xsed -e "$delay_single_quote_subst"`' -LD='`$ECHO "X$LD" | $Xsed -e "$delay_single_quote_subst"`' -NM='`$ECHO "X$NM" | $Xsed -e "$delay_single_quote_subst"`' -LN_S='`$ECHO "X$LN_S" | $Xsed -e "$delay_single_quote_subst"`' -max_cmd_len='`$ECHO "X$max_cmd_len" | $Xsed -e "$delay_single_quote_subst"`' -ac_objext='`$ECHO "X$ac_objext" | $Xsed -e "$delay_single_quote_subst"`' -exeext='`$ECHO "X$exeext" | $Xsed -e "$delay_single_quote_subst"`' -lt_unset='`$ECHO "X$lt_unset" | $Xsed -e "$delay_single_quote_subst"`' -lt_SP2NL='`$ECHO "X$lt_SP2NL" | $Xsed -e "$delay_single_quote_subst"`' -lt_NL2SP='`$ECHO "X$lt_NL2SP" | $Xsed -e "$delay_single_quote_subst"`' -reload_flag='`$ECHO "X$reload_flag" | $Xsed -e "$delay_single_quote_subst"`' -reload_cmds='`$ECHO "X$reload_cmds" | $Xsed -e "$delay_single_quote_subst"`' -deplibs_check_method='`$ECHO "X$deplibs_check_method" | $Xsed -e "$delay_single_quote_subst"`' -file_magic_cmd='`$ECHO "X$file_magic_cmd" | $Xsed -e "$delay_single_quote_subst"`' -AR='`$ECHO "X$AR" | $Xsed -e "$delay_single_quote_subst"`' -AR_FLAGS='`$ECHO "X$AR_FLAGS" | $Xsed -e "$delay_single_quote_subst"`' -STRIP='`$ECHO "X$STRIP" | $Xsed -e "$delay_single_quote_subst"`' -RANLIB='`$ECHO "X$RANLIB" | $Xsed -e "$delay_single_quote_subst"`' -old_postinstall_cmds='`$ECHO "X$old_postinstall_cmds" | $Xsed -e "$delay_single_quote_subst"`' -old_postuninstall_cmds='`$ECHO "X$old_postuninstall_cmds" | $Xsed -e "$delay_single_quote_subst"`' -old_archive_cmds='`$ECHO "X$old_archive_cmds" | $Xsed -e "$delay_single_quote_subst"`' -CC='`$ECHO "X$CC" | $Xsed -e "$delay_single_quote_subst"`' -CFLAGS='`$ECHO "X$CFLAGS" | $Xsed -e "$delay_single_quote_subst"`' -compiler='`$ECHO "X$compiler" | $Xsed -e "$delay_single_quote_subst"`' -GCC='`$ECHO "X$GCC" | $Xsed -e "$delay_single_quote_subst"`' -lt_cv_sys_global_symbol_pipe='`$ECHO "X$lt_cv_sys_global_symbol_pipe" | $Xsed -e "$delay_single_quote_subst"`' -lt_cv_sys_global_symbol_to_cdecl='`$ECHO "X$lt_cv_sys_global_symbol_to_cdecl" | $Xsed -e "$delay_single_quote_subst"`' -lt_cv_sys_global_symbol_to_c_name_address='`$ECHO "X$lt_cv_sys_global_symbol_to_c_name_address" | $Xsed -e "$delay_single_quote_subst"`' -lt_cv_sys_global_symbol_to_c_name_address_lib_prefix='`$ECHO "X$lt_cv_sys_global_symbol_to_c_name_address_lib_prefix" | $Xsed -e "$delay_single_quote_subst"`' -objdir='`$ECHO "X$objdir" | $Xsed -e "$delay_single_quote_subst"`' -SHELL='`$ECHO "X$SHELL" | $Xsed -e "$delay_single_quote_subst"`' -ECHO='`$ECHO "X$ECHO" | $Xsed -e "$delay_single_quote_subst"`' -MAGIC_CMD='`$ECHO "X$MAGIC_CMD" | $Xsed -e "$delay_single_quote_subst"`' -lt_prog_compiler_no_builtin_flag='`$ECHO "X$lt_prog_compiler_no_builtin_flag" | $Xsed -e "$delay_single_quote_subst"`' -lt_prog_compiler_wl='`$ECHO "X$lt_prog_compiler_wl" | $Xsed -e "$delay_single_quote_subst"`' -lt_prog_compiler_pic='`$ECHO "X$lt_prog_compiler_pic" | $Xsed -e "$delay_single_quote_subst"`' -lt_prog_compiler_static='`$ECHO "X$lt_prog_compiler_static" | $Xsed -e "$delay_single_quote_subst"`' -lt_cv_prog_compiler_c_o='`$ECHO "X$lt_cv_prog_compiler_c_o" | $Xsed -e "$delay_single_quote_subst"`' -need_locks='`$ECHO "X$need_locks" | $Xsed -e "$delay_single_quote_subst"`' -DSYMUTIL='`$ECHO "X$DSYMUTIL" | $Xsed -e "$delay_single_quote_subst"`' -NMEDIT='`$ECHO "X$NMEDIT" | $Xsed -e "$delay_single_quote_subst"`' -LIPO='`$ECHO "X$LIPO" | $Xsed -e "$delay_single_quote_subst"`' -OTOOL='`$ECHO "X$OTOOL" | $Xsed -e "$delay_single_quote_subst"`' -OTOOL64='`$ECHO "X$OTOOL64" | $Xsed -e "$delay_single_quote_subst"`' -libext='`$ECHO "X$libext" | $Xsed -e "$delay_single_quote_subst"`' -shrext_cmds='`$ECHO "X$shrext_cmds" | $Xsed -e "$delay_single_quote_subst"`' -extract_expsyms_cmds='`$ECHO "X$extract_expsyms_cmds" | $Xsed -e "$delay_single_quote_subst"`' -archive_cmds_need_lc='`$ECHO "X$archive_cmds_need_lc" | $Xsed -e "$delay_single_quote_subst"`' -enable_shared_with_static_runtimes='`$ECHO "X$enable_shared_with_static_runtimes" | $Xsed -e "$delay_single_quote_subst"`' -export_dynamic_flag_spec='`$ECHO "X$export_dynamic_flag_spec" | $Xsed -e "$delay_single_quote_subst"`' -whole_archive_flag_spec='`$ECHO "X$whole_archive_flag_spec" | $Xsed -e "$delay_single_quote_subst"`' -compiler_needs_object='`$ECHO "X$compiler_needs_object" | $Xsed -e "$delay_single_quote_subst"`' -old_archive_from_new_cmds='`$ECHO "X$old_archive_from_new_cmds" | $Xsed -e "$delay_single_quote_subst"`' -old_archive_from_expsyms_cmds='`$ECHO "X$old_archive_from_expsyms_cmds" | $Xsed -e "$delay_single_quote_subst"`' -archive_cmds='`$ECHO "X$archive_cmds" | $Xsed -e "$delay_single_quote_subst"`' -archive_expsym_cmds='`$ECHO "X$archive_expsym_cmds" | $Xsed -e "$delay_single_quote_subst"`' -module_cmds='`$ECHO "X$module_cmds" | $Xsed -e "$delay_single_quote_subst"`' -module_expsym_cmds='`$ECHO "X$module_expsym_cmds" | $Xsed -e "$delay_single_quote_subst"`' -with_gnu_ld='`$ECHO "X$with_gnu_ld" | $Xsed -e "$delay_single_quote_subst"`' -allow_undefined_flag='`$ECHO "X$allow_undefined_flag" | $Xsed -e "$delay_single_quote_subst"`' -no_undefined_flag='`$ECHO "X$no_undefined_flag" | $Xsed -e "$delay_single_quote_subst"`' -hardcode_libdir_flag_spec='`$ECHO "X$hardcode_libdir_flag_spec" | $Xsed -e "$delay_single_quote_subst"`' -hardcode_libdir_flag_spec_ld='`$ECHO "X$hardcode_libdir_flag_spec_ld" | $Xsed -e "$delay_single_quote_subst"`' -hardcode_libdir_separator='`$ECHO "X$hardcode_libdir_separator" | $Xsed -e "$delay_single_quote_subst"`' -hardcode_direct='`$ECHO "X$hardcode_direct" | $Xsed -e "$delay_single_quote_subst"`' -hardcode_direct_absolute='`$ECHO "X$hardcode_direct_absolute" | $Xsed -e "$delay_single_quote_subst"`' -hardcode_minus_L='`$ECHO "X$hardcode_minus_L" | $Xsed -e "$delay_single_quote_subst"`' -hardcode_shlibpath_var='`$ECHO "X$hardcode_shlibpath_var" | $Xsed -e "$delay_single_quote_subst"`' -hardcode_automatic='`$ECHO "X$hardcode_automatic" | $Xsed -e "$delay_single_quote_subst"`' -inherit_rpath='`$ECHO "X$inherit_rpath" | $Xsed -e "$delay_single_quote_subst"`' -link_all_deplibs='`$ECHO "X$link_all_deplibs" | $Xsed -e "$delay_single_quote_subst"`' -fix_srcfile_path='`$ECHO "X$fix_srcfile_path" | $Xsed -e "$delay_single_quote_subst"`' -always_export_symbols='`$ECHO "X$always_export_symbols" | $Xsed -e "$delay_single_quote_subst"`' -export_symbols_cmds='`$ECHO "X$export_symbols_cmds" | $Xsed -e "$delay_single_quote_subst"`' -exclude_expsyms='`$ECHO "X$exclude_expsyms" | $Xsed -e "$delay_single_quote_subst"`' -include_expsyms='`$ECHO "X$include_expsyms" | $Xsed -e "$delay_single_quote_subst"`' -prelink_cmds='`$ECHO "X$prelink_cmds" | $Xsed -e "$delay_single_quote_subst"`' -file_list_spec='`$ECHO "X$file_list_spec" | $Xsed -e "$delay_single_quote_subst"`' -variables_saved_for_relink='`$ECHO "X$variables_saved_for_relink" | $Xsed -e "$delay_single_quote_subst"`' -need_lib_prefix='`$ECHO "X$need_lib_prefix" | $Xsed -e "$delay_single_quote_subst"`' -need_version='`$ECHO "X$need_version" | $Xsed -e "$delay_single_quote_subst"`' -version_type='`$ECHO "X$version_type" | $Xsed -e "$delay_single_quote_subst"`' -runpath_var='`$ECHO "X$runpath_var" | $Xsed -e "$delay_single_quote_subst"`' -shlibpath_var='`$ECHO "X$shlibpath_var" | $Xsed -e "$delay_single_quote_subst"`' -shlibpath_overrides_runpath='`$ECHO "X$shlibpath_overrides_runpath" | $Xsed -e "$delay_single_quote_subst"`' -libname_spec='`$ECHO "X$libname_spec" | $Xsed -e "$delay_single_quote_subst"`' -library_names_spec='`$ECHO "X$library_names_spec" | $Xsed -e "$delay_single_quote_subst"`' -soname_spec='`$ECHO "X$soname_spec" | $Xsed -e "$delay_single_quote_subst"`' -postinstall_cmds='`$ECHO "X$postinstall_cmds" | $Xsed -e "$delay_single_quote_subst"`' -postuninstall_cmds='`$ECHO "X$postuninstall_cmds" | $Xsed -e "$delay_single_quote_subst"`' -finish_cmds='`$ECHO "X$finish_cmds" | $Xsed -e "$delay_single_quote_subst"`' -finish_eval='`$ECHO "X$finish_eval" | $Xsed -e "$delay_single_quote_subst"`' -hardcode_into_libs='`$ECHO "X$hardcode_into_libs" | $Xsed -e "$delay_single_quote_subst"`' -sys_lib_search_path_spec='`$ECHO "X$sys_lib_search_path_spec" | $Xsed -e "$delay_single_quote_subst"`' -sys_lib_dlsearch_path_spec='`$ECHO "X$sys_lib_dlsearch_path_spec" | $Xsed -e "$delay_single_quote_subst"`' -hardcode_action='`$ECHO "X$hardcode_action" | $Xsed -e "$delay_single_quote_subst"`' -enable_dlopen='`$ECHO "X$enable_dlopen" | $Xsed -e "$delay_single_quote_subst"`' -enable_dlopen_self='`$ECHO "X$enable_dlopen_self" | $Xsed -e "$delay_single_quote_subst"`' -enable_dlopen_self_static='`$ECHO "X$enable_dlopen_self_static" | $Xsed -e "$delay_single_quote_subst"`' -old_striplib='`$ECHO "X$old_striplib" | $Xsed -e "$delay_single_quote_subst"`' -striplib='`$ECHO "X$striplib" | $Xsed -e "$delay_single_quote_subst"`' -compiler_lib_search_dirs='`$ECHO "X$compiler_lib_search_dirs" | $Xsed -e "$delay_single_quote_subst"`' -predep_objects='`$ECHO "X$predep_objects" | $Xsed -e "$delay_single_quote_subst"`' -postdep_objects='`$ECHO "X$postdep_objects" | $Xsed -e "$delay_single_quote_subst"`' -predeps='`$ECHO "X$predeps" | $Xsed -e "$delay_single_quote_subst"`' -postdeps='`$ECHO "X$postdeps" | $Xsed -e "$delay_single_quote_subst"`' -compiler_lib_search_path='`$ECHO "X$compiler_lib_search_path" | $Xsed -e "$delay_single_quote_subst"`' -LD_CXX='`$ECHO "X$LD_CXX" | $Xsed -e "$delay_single_quote_subst"`' -old_archive_cmds_CXX='`$ECHO "X$old_archive_cmds_CXX" | $Xsed -e "$delay_single_quote_subst"`' -compiler_CXX='`$ECHO "X$compiler_CXX" | $Xsed -e "$delay_single_quote_subst"`' -GCC_CXX='`$ECHO "X$GCC_CXX" | $Xsed -e "$delay_single_quote_subst"`' -lt_prog_compiler_no_builtin_flag_CXX='`$ECHO "X$lt_prog_compiler_no_builtin_flag_CXX" | $Xsed -e "$delay_single_quote_subst"`' -lt_prog_compiler_wl_CXX='`$ECHO "X$lt_prog_compiler_wl_CXX" | $Xsed -e "$delay_single_quote_subst"`' -lt_prog_compiler_pic_CXX='`$ECHO "X$lt_prog_compiler_pic_CXX" | $Xsed -e "$delay_single_quote_subst"`' -lt_prog_compiler_static_CXX='`$ECHO "X$lt_prog_compiler_static_CXX" | $Xsed -e "$delay_single_quote_subst"`' -lt_cv_prog_compiler_c_o_CXX='`$ECHO "X$lt_cv_prog_compiler_c_o_CXX" | $Xsed -e "$delay_single_quote_subst"`' -archive_cmds_need_lc_CXX='`$ECHO "X$archive_cmds_need_lc_CXX" | $Xsed -e "$delay_single_quote_subst"`' -enable_shared_with_static_runtimes_CXX='`$ECHO "X$enable_shared_with_static_runtimes_CXX" | $Xsed -e "$delay_single_quote_subst"`' -export_dynamic_flag_spec_CXX='`$ECHO "X$export_dynamic_flag_spec_CXX" | $Xsed -e "$delay_single_quote_subst"`' -whole_archive_flag_spec_CXX='`$ECHO "X$whole_archive_flag_spec_CXX" | $Xsed -e "$delay_single_quote_subst"`' -compiler_needs_object_CXX='`$ECHO "X$compiler_needs_object_CXX" | $Xsed -e "$delay_single_quote_subst"`' -old_archive_from_new_cmds_CXX='`$ECHO "X$old_archive_from_new_cmds_CXX" | $Xsed -e "$delay_single_quote_subst"`' -old_archive_from_expsyms_cmds_CXX='`$ECHO "X$old_archive_from_expsyms_cmds_CXX" | $Xsed -e "$delay_single_quote_subst"`' -archive_cmds_CXX='`$ECHO "X$archive_cmds_CXX" | $Xsed -e "$delay_single_quote_subst"`' -archive_expsym_cmds_CXX='`$ECHO "X$archive_expsym_cmds_CXX" | $Xsed -e "$delay_single_quote_subst"`' -module_cmds_CXX='`$ECHO "X$module_cmds_CXX" | $Xsed -e "$delay_single_quote_subst"`' -module_expsym_cmds_CXX='`$ECHO "X$module_expsym_cmds_CXX" | $Xsed -e "$delay_single_quote_subst"`' -with_gnu_ld_CXX='`$ECHO "X$with_gnu_ld_CXX" | $Xsed -e "$delay_single_quote_subst"`' -allow_undefined_flag_CXX='`$ECHO "X$allow_undefined_flag_CXX" | $Xsed -e "$delay_single_quote_subst"`' -no_undefined_flag_CXX='`$ECHO "X$no_undefined_flag_CXX" | $Xsed -e "$delay_single_quote_subst"`' -hardcode_libdir_flag_spec_CXX='`$ECHO "X$hardcode_libdir_flag_spec_CXX" | $Xsed -e "$delay_single_quote_subst"`' -hardcode_libdir_flag_spec_ld_CXX='`$ECHO "X$hardcode_libdir_flag_spec_ld_CXX" | $Xsed -e "$delay_single_quote_subst"`' -hardcode_libdir_separator_CXX='`$ECHO "X$hardcode_libdir_separator_CXX" | $Xsed -e "$delay_single_quote_subst"`' -hardcode_direct_CXX='`$ECHO "X$hardcode_direct_CXX" | $Xsed -e "$delay_single_quote_subst"`' -hardcode_direct_absolute_CXX='`$ECHO "X$hardcode_direct_absolute_CXX" | $Xsed -e "$delay_single_quote_subst"`' -hardcode_minus_L_CXX='`$ECHO "X$hardcode_minus_L_CXX" | $Xsed -e "$delay_single_quote_subst"`' -hardcode_shlibpath_var_CXX='`$ECHO "X$hardcode_shlibpath_var_CXX" | $Xsed -e "$delay_single_quote_subst"`' -hardcode_automatic_CXX='`$ECHO "X$hardcode_automatic_CXX" | $Xsed -e "$delay_single_quote_subst"`' -inherit_rpath_CXX='`$ECHO "X$inherit_rpath_CXX" | $Xsed -e "$delay_single_quote_subst"`' -link_all_deplibs_CXX='`$ECHO "X$link_all_deplibs_CXX" | $Xsed -e "$delay_single_quote_subst"`' -fix_srcfile_path_CXX='`$ECHO "X$fix_srcfile_path_CXX" | $Xsed -e "$delay_single_quote_subst"`' -always_export_symbols_CXX='`$ECHO "X$always_export_symbols_CXX" | $Xsed -e "$delay_single_quote_subst"`' -export_symbols_cmds_CXX='`$ECHO "X$export_symbols_cmds_CXX" | $Xsed -e "$delay_single_quote_subst"`' -exclude_expsyms_CXX='`$ECHO "X$exclude_expsyms_CXX" | $Xsed -e "$delay_single_quote_subst"`' -include_expsyms_CXX='`$ECHO "X$include_expsyms_CXX" | $Xsed -e "$delay_single_quote_subst"`' -prelink_cmds_CXX='`$ECHO "X$prelink_cmds_CXX" | $Xsed -e "$delay_single_quote_subst"`' -file_list_spec_CXX='`$ECHO "X$file_list_spec_CXX" | $Xsed -e "$delay_single_quote_subst"`' -hardcode_action_CXX='`$ECHO "X$hardcode_action_CXX" | $Xsed -e "$delay_single_quote_subst"`' -compiler_lib_search_dirs_CXX='`$ECHO "X$compiler_lib_search_dirs_CXX" | $Xsed -e "$delay_single_quote_subst"`' -predep_objects_CXX='`$ECHO "X$predep_objects_CXX" | $Xsed -e "$delay_single_quote_subst"`' -postdep_objects_CXX='`$ECHO "X$postdep_objects_CXX" | $Xsed -e "$delay_single_quote_subst"`' -predeps_CXX='`$ECHO "X$predeps_CXX" | $Xsed -e "$delay_single_quote_subst"`' -postdeps_CXX='`$ECHO "X$postdeps_CXX" | $Xsed -e "$delay_single_quote_subst"`' -compiler_lib_search_path_CXX='`$ECHO "X$compiler_lib_search_path_CXX" | $Xsed -e "$delay_single_quote_subst"`' +macro_version='`$ECHO "$macro_version" | $SED "$delay_single_quote_subst"`' +macro_revision='`$ECHO "$macro_revision" | $SED "$delay_single_quote_subst"`' +enable_shared='`$ECHO "$enable_shared" | $SED "$delay_single_quote_subst"`' +enable_static='`$ECHO "$enable_static" | $SED "$delay_single_quote_subst"`' +pic_mode='`$ECHO "$pic_mode" | $SED "$delay_single_quote_subst"`' +enable_fast_install='`$ECHO "$enable_fast_install" | $SED "$delay_single_quote_subst"`' +SHELL='`$ECHO "$SHELL" | $SED "$delay_single_quote_subst"`' +ECHO='`$ECHO "$ECHO" | $SED "$delay_single_quote_subst"`' +PATH_SEPARATOR='`$ECHO "$PATH_SEPARATOR" | $SED "$delay_single_quote_subst"`' +host_alias='`$ECHO "$host_alias" | $SED "$delay_single_quote_subst"`' +host='`$ECHO "$host" | $SED "$delay_single_quote_subst"`' +host_os='`$ECHO "$host_os" | $SED "$delay_single_quote_subst"`' +build_alias='`$ECHO "$build_alias" | $SED "$delay_single_quote_subst"`' +build='`$ECHO "$build" | $SED "$delay_single_quote_subst"`' +build_os='`$ECHO "$build_os" | $SED "$delay_single_quote_subst"`' +SED='`$ECHO "$SED" | $SED "$delay_single_quote_subst"`' +Xsed='`$ECHO "$Xsed" | $SED "$delay_single_quote_subst"`' +GREP='`$ECHO "$GREP" | $SED "$delay_single_quote_subst"`' +EGREP='`$ECHO "$EGREP" | $SED "$delay_single_quote_subst"`' +FGREP='`$ECHO "$FGREP" | $SED "$delay_single_quote_subst"`' +LD='`$ECHO "$LD" | $SED "$delay_single_quote_subst"`' +NM='`$ECHO "$NM" | $SED "$delay_single_quote_subst"`' +LN_S='`$ECHO "$LN_S" | $SED "$delay_single_quote_subst"`' +max_cmd_len='`$ECHO "$max_cmd_len" | $SED "$delay_single_quote_subst"`' +ac_objext='`$ECHO "$ac_objext" | $SED "$delay_single_quote_subst"`' +exeext='`$ECHO "$exeext" | $SED "$delay_single_quote_subst"`' +lt_unset='`$ECHO "$lt_unset" | $SED "$delay_single_quote_subst"`' +lt_SP2NL='`$ECHO "$lt_SP2NL" | $SED "$delay_single_quote_subst"`' +lt_NL2SP='`$ECHO "$lt_NL2SP" | $SED "$delay_single_quote_subst"`' +lt_cv_to_host_file_cmd='`$ECHO "$lt_cv_to_host_file_cmd" | $SED "$delay_single_quote_subst"`' +lt_cv_to_tool_file_cmd='`$ECHO "$lt_cv_to_tool_file_cmd" | $SED "$delay_single_quote_subst"`' +reload_flag='`$ECHO "$reload_flag" | $SED "$delay_single_quote_subst"`' +reload_cmds='`$ECHO "$reload_cmds" | $SED "$delay_single_quote_subst"`' +OBJDUMP='`$ECHO "$OBJDUMP" | $SED "$delay_single_quote_subst"`' +deplibs_check_method='`$ECHO "$deplibs_check_method" | $SED "$delay_single_quote_subst"`' +file_magic_cmd='`$ECHO "$file_magic_cmd" | $SED "$delay_single_quote_subst"`' +file_magic_glob='`$ECHO "$file_magic_glob" | $SED "$delay_single_quote_subst"`' +want_nocaseglob='`$ECHO "$want_nocaseglob" | $SED "$delay_single_quote_subst"`' +DLLTOOL='`$ECHO "$DLLTOOL" | $SED "$delay_single_quote_subst"`' +sharedlib_from_linklib_cmd='`$ECHO "$sharedlib_from_linklib_cmd" | $SED "$delay_single_quote_subst"`' +AR='`$ECHO "$AR" | $SED "$delay_single_quote_subst"`' +AR_FLAGS='`$ECHO "$AR_FLAGS" | $SED "$delay_single_quote_subst"`' +archiver_list_spec='`$ECHO "$archiver_list_spec" | $SED "$delay_single_quote_subst"`' +STRIP='`$ECHO "$STRIP" | $SED "$delay_single_quote_subst"`' +RANLIB='`$ECHO "$RANLIB" | $SED "$delay_single_quote_subst"`' +old_postinstall_cmds='`$ECHO "$old_postinstall_cmds" | $SED "$delay_single_quote_subst"`' +old_postuninstall_cmds='`$ECHO "$old_postuninstall_cmds" | $SED "$delay_single_quote_subst"`' +old_archive_cmds='`$ECHO "$old_archive_cmds" | $SED "$delay_single_quote_subst"`' +lock_old_archive_extraction='`$ECHO "$lock_old_archive_extraction" | $SED "$delay_single_quote_subst"`' +CC='`$ECHO "$CC" | $SED "$delay_single_quote_subst"`' +CFLAGS='`$ECHO "$CFLAGS" | $SED "$delay_single_quote_subst"`' +compiler='`$ECHO "$compiler" | $SED "$delay_single_quote_subst"`' +GCC='`$ECHO "$GCC" | $SED "$delay_single_quote_subst"`' +lt_cv_sys_global_symbol_pipe='`$ECHO "$lt_cv_sys_global_symbol_pipe" | $SED "$delay_single_quote_subst"`' +lt_cv_sys_global_symbol_to_cdecl='`$ECHO "$lt_cv_sys_global_symbol_to_cdecl" | $SED "$delay_single_quote_subst"`' +lt_cv_sys_global_symbol_to_c_name_address='`$ECHO "$lt_cv_sys_global_symbol_to_c_name_address" | $SED "$delay_single_quote_subst"`' +lt_cv_sys_global_symbol_to_c_name_address_lib_prefix='`$ECHO "$lt_cv_sys_global_symbol_to_c_name_address_lib_prefix" | $SED "$delay_single_quote_subst"`' +nm_file_list_spec='`$ECHO "$nm_file_list_spec" | $SED "$delay_single_quote_subst"`' +lt_sysroot='`$ECHO "$lt_sysroot" | $SED "$delay_single_quote_subst"`' +objdir='`$ECHO "$objdir" | $SED "$delay_single_quote_subst"`' +MAGIC_CMD='`$ECHO "$MAGIC_CMD" | $SED "$delay_single_quote_subst"`' +lt_prog_compiler_no_builtin_flag='`$ECHO "$lt_prog_compiler_no_builtin_flag" | $SED "$delay_single_quote_subst"`' +lt_prog_compiler_pic='`$ECHO "$lt_prog_compiler_pic" | $SED "$delay_single_quote_subst"`' +lt_prog_compiler_wl='`$ECHO "$lt_prog_compiler_wl" | $SED "$delay_single_quote_subst"`' +lt_prog_compiler_static='`$ECHO "$lt_prog_compiler_static" | $SED "$delay_single_quote_subst"`' +lt_cv_prog_compiler_c_o='`$ECHO "$lt_cv_prog_compiler_c_o" | $SED "$delay_single_quote_subst"`' +need_locks='`$ECHO "$need_locks" | $SED "$delay_single_quote_subst"`' +MANIFEST_TOOL='`$ECHO "$MANIFEST_TOOL" | $SED "$delay_single_quote_subst"`' +DSYMUTIL='`$ECHO "$DSYMUTIL" | $SED "$delay_single_quote_subst"`' +NMEDIT='`$ECHO "$NMEDIT" | $SED "$delay_single_quote_subst"`' +LIPO='`$ECHO "$LIPO" | $SED "$delay_single_quote_subst"`' +OTOOL='`$ECHO "$OTOOL" | $SED "$delay_single_quote_subst"`' +OTOOL64='`$ECHO "$OTOOL64" | $SED "$delay_single_quote_subst"`' +libext='`$ECHO "$libext" | $SED "$delay_single_quote_subst"`' +shrext_cmds='`$ECHO "$shrext_cmds" | $SED "$delay_single_quote_subst"`' +extract_expsyms_cmds='`$ECHO "$extract_expsyms_cmds" | $SED "$delay_single_quote_subst"`' +archive_cmds_need_lc='`$ECHO "$archive_cmds_need_lc" | $SED "$delay_single_quote_subst"`' +enable_shared_with_static_runtimes='`$ECHO "$enable_shared_with_static_runtimes" | $SED "$delay_single_quote_subst"`' +export_dynamic_flag_spec='`$ECHO "$export_dynamic_flag_spec" | $SED "$delay_single_quote_subst"`' +whole_archive_flag_spec='`$ECHO "$whole_archive_flag_spec" | $SED "$delay_single_quote_subst"`' +compiler_needs_object='`$ECHO "$compiler_needs_object" | $SED "$delay_single_quote_subst"`' +old_archive_from_new_cmds='`$ECHO "$old_archive_from_new_cmds" | $SED "$delay_single_quote_subst"`' +old_archive_from_expsyms_cmds='`$ECHO "$old_archive_from_expsyms_cmds" | $SED "$delay_single_quote_subst"`' +archive_cmds='`$ECHO "$archive_cmds" | $SED "$delay_single_quote_subst"`' +archive_expsym_cmds='`$ECHO "$archive_expsym_cmds" | $SED "$delay_single_quote_subst"`' +module_cmds='`$ECHO "$module_cmds" | $SED "$delay_single_quote_subst"`' +module_expsym_cmds='`$ECHO "$module_expsym_cmds" | $SED "$delay_single_quote_subst"`' +with_gnu_ld='`$ECHO "$with_gnu_ld" | $SED "$delay_single_quote_subst"`' +allow_undefined_flag='`$ECHO "$allow_undefined_flag" | $SED "$delay_single_quote_subst"`' +no_undefined_flag='`$ECHO "$no_undefined_flag" | $SED "$delay_single_quote_subst"`' +hardcode_libdir_flag_spec='`$ECHO "$hardcode_libdir_flag_spec" | $SED "$delay_single_quote_subst"`' +hardcode_libdir_separator='`$ECHO "$hardcode_libdir_separator" | $SED "$delay_single_quote_subst"`' +hardcode_direct='`$ECHO "$hardcode_direct" | $SED "$delay_single_quote_subst"`' +hardcode_direct_absolute='`$ECHO "$hardcode_direct_absolute" | $SED "$delay_single_quote_subst"`' +hardcode_minus_L='`$ECHO "$hardcode_minus_L" | $SED "$delay_single_quote_subst"`' +hardcode_shlibpath_var='`$ECHO "$hardcode_shlibpath_var" | $SED "$delay_single_quote_subst"`' +hardcode_automatic='`$ECHO "$hardcode_automatic" | $SED "$delay_single_quote_subst"`' +inherit_rpath='`$ECHO "$inherit_rpath" | $SED "$delay_single_quote_subst"`' +link_all_deplibs='`$ECHO "$link_all_deplibs" | $SED "$delay_single_quote_subst"`' +always_export_symbols='`$ECHO "$always_export_symbols" | $SED "$delay_single_quote_subst"`' +export_symbols_cmds='`$ECHO "$export_symbols_cmds" | $SED "$delay_single_quote_subst"`' +exclude_expsyms='`$ECHO "$exclude_expsyms" | $SED "$delay_single_quote_subst"`' +include_expsyms='`$ECHO "$include_expsyms" | $SED "$delay_single_quote_subst"`' +prelink_cmds='`$ECHO "$prelink_cmds" | $SED "$delay_single_quote_subst"`' +postlink_cmds='`$ECHO "$postlink_cmds" | $SED "$delay_single_quote_subst"`' +file_list_spec='`$ECHO "$file_list_spec" | $SED "$delay_single_quote_subst"`' +variables_saved_for_relink='`$ECHO "$variables_saved_for_relink" | $SED "$delay_single_quote_subst"`' +need_lib_prefix='`$ECHO "$need_lib_prefix" | $SED "$delay_single_quote_subst"`' +need_version='`$ECHO "$need_version" | $SED "$delay_single_quote_subst"`' +version_type='`$ECHO "$version_type" | $SED "$delay_single_quote_subst"`' +runpath_var='`$ECHO "$runpath_var" | $SED "$delay_single_quote_subst"`' +shlibpath_var='`$ECHO "$shlibpath_var" | $SED "$delay_single_quote_subst"`' +shlibpath_overrides_runpath='`$ECHO "$shlibpath_overrides_runpath" | $SED "$delay_single_quote_subst"`' +libname_spec='`$ECHO "$libname_spec" | $SED "$delay_single_quote_subst"`' +library_names_spec='`$ECHO "$library_names_spec" | $SED "$delay_single_quote_subst"`' +soname_spec='`$ECHO "$soname_spec" | $SED "$delay_single_quote_subst"`' +install_override_mode='`$ECHO "$install_override_mode" | $SED "$delay_single_quote_subst"`' +postinstall_cmds='`$ECHO "$postinstall_cmds" | $SED "$delay_single_quote_subst"`' +postuninstall_cmds='`$ECHO "$postuninstall_cmds" | $SED "$delay_single_quote_subst"`' +finish_cmds='`$ECHO "$finish_cmds" | $SED "$delay_single_quote_subst"`' +finish_eval='`$ECHO "$finish_eval" | $SED "$delay_single_quote_subst"`' +hardcode_into_libs='`$ECHO "$hardcode_into_libs" | $SED "$delay_single_quote_subst"`' +sys_lib_search_path_spec='`$ECHO "$sys_lib_search_path_spec" | $SED "$delay_single_quote_subst"`' +sys_lib_dlsearch_path_spec='`$ECHO "$sys_lib_dlsearch_path_spec" | $SED "$delay_single_quote_subst"`' +hardcode_action='`$ECHO "$hardcode_action" | $SED "$delay_single_quote_subst"`' +enable_dlopen='`$ECHO "$enable_dlopen" | $SED "$delay_single_quote_subst"`' +enable_dlopen_self='`$ECHO "$enable_dlopen_self" | $SED "$delay_single_quote_subst"`' +enable_dlopen_self_static='`$ECHO "$enable_dlopen_self_static" | $SED "$delay_single_quote_subst"`' +old_striplib='`$ECHO "$old_striplib" | $SED "$delay_single_quote_subst"`' +striplib='`$ECHO "$striplib" | $SED "$delay_single_quote_subst"`' +compiler_lib_search_dirs='`$ECHO "$compiler_lib_search_dirs" | $SED "$delay_single_quote_subst"`' +predep_objects='`$ECHO "$predep_objects" | $SED "$delay_single_quote_subst"`' +postdep_objects='`$ECHO "$postdep_objects" | $SED "$delay_single_quote_subst"`' +predeps='`$ECHO "$predeps" | $SED "$delay_single_quote_subst"`' +postdeps='`$ECHO "$postdeps" | $SED "$delay_single_quote_subst"`' +compiler_lib_search_path='`$ECHO "$compiler_lib_search_path" | $SED "$delay_single_quote_subst"`' +LD_CXX='`$ECHO "$LD_CXX" | $SED "$delay_single_quote_subst"`' +reload_flag_CXX='`$ECHO "$reload_flag_CXX" | $SED "$delay_single_quote_subst"`' +reload_cmds_CXX='`$ECHO "$reload_cmds_CXX" | $SED "$delay_single_quote_subst"`' +old_archive_cmds_CXX='`$ECHO "$old_archive_cmds_CXX" | $SED "$delay_single_quote_subst"`' +compiler_CXX='`$ECHO "$compiler_CXX" | $SED "$delay_single_quote_subst"`' +GCC_CXX='`$ECHO "$GCC_CXX" | $SED "$delay_single_quote_subst"`' +lt_prog_compiler_no_builtin_flag_CXX='`$ECHO "$lt_prog_compiler_no_builtin_flag_CXX" | $SED "$delay_single_quote_subst"`' +lt_prog_compiler_pic_CXX='`$ECHO "$lt_prog_compiler_pic_CXX" | $SED "$delay_single_quote_subst"`' +lt_prog_compiler_wl_CXX='`$ECHO "$lt_prog_compiler_wl_CXX" | $SED "$delay_single_quote_subst"`' +lt_prog_compiler_static_CXX='`$ECHO "$lt_prog_compiler_static_CXX" | $SED "$delay_single_quote_subst"`' +lt_cv_prog_compiler_c_o_CXX='`$ECHO "$lt_cv_prog_compiler_c_o_CXX" | $SED "$delay_single_quote_subst"`' +archive_cmds_need_lc_CXX='`$ECHO "$archive_cmds_need_lc_CXX" | $SED "$delay_single_quote_subst"`' +enable_shared_with_static_runtimes_CXX='`$ECHO "$enable_shared_with_static_runtimes_CXX" | $SED "$delay_single_quote_subst"`' +export_dynamic_flag_spec_CXX='`$ECHO "$export_dynamic_flag_spec_CXX" | $SED "$delay_single_quote_subst"`' +whole_archive_flag_spec_CXX='`$ECHO "$whole_archive_flag_spec_CXX" | $SED "$delay_single_quote_subst"`' +compiler_needs_object_CXX='`$ECHO "$compiler_needs_object_CXX" | $SED "$delay_single_quote_subst"`' +old_archive_from_new_cmds_CXX='`$ECHO "$old_archive_from_new_cmds_CXX" | $SED "$delay_single_quote_subst"`' +old_archive_from_expsyms_cmds_CXX='`$ECHO "$old_archive_from_expsyms_cmds_CXX" | $SED "$delay_single_quote_subst"`' +archive_cmds_CXX='`$ECHO "$archive_cmds_CXX" | $SED "$delay_single_quote_subst"`' +archive_expsym_cmds_CXX='`$ECHO "$archive_expsym_cmds_CXX" | $SED "$delay_single_quote_subst"`' +module_cmds_CXX='`$ECHO "$module_cmds_CXX" | $SED "$delay_single_quote_subst"`' +module_expsym_cmds_CXX='`$ECHO "$module_expsym_cmds_CXX" | $SED "$delay_single_quote_subst"`' +with_gnu_ld_CXX='`$ECHO "$with_gnu_ld_CXX" | $SED "$delay_single_quote_subst"`' +allow_undefined_flag_CXX='`$ECHO "$allow_undefined_flag_CXX" | $SED "$delay_single_quote_subst"`' +no_undefined_flag_CXX='`$ECHO "$no_undefined_flag_CXX" | $SED "$delay_single_quote_subst"`' +hardcode_libdir_flag_spec_CXX='`$ECHO "$hardcode_libdir_flag_spec_CXX" | $SED "$delay_single_quote_subst"`' +hardcode_libdir_separator_CXX='`$ECHO "$hardcode_libdir_separator_CXX" | $SED "$delay_single_quote_subst"`' +hardcode_direct_CXX='`$ECHO "$hardcode_direct_CXX" | $SED "$delay_single_quote_subst"`' +hardcode_direct_absolute_CXX='`$ECHO "$hardcode_direct_absolute_CXX" | $SED "$delay_single_quote_subst"`' +hardcode_minus_L_CXX='`$ECHO "$hardcode_minus_L_CXX" | $SED "$delay_single_quote_subst"`' +hardcode_shlibpath_var_CXX='`$ECHO "$hardcode_shlibpath_var_CXX" | $SED "$delay_single_quote_subst"`' +hardcode_automatic_CXX='`$ECHO "$hardcode_automatic_CXX" | $SED "$delay_single_quote_subst"`' +inherit_rpath_CXX='`$ECHO "$inherit_rpath_CXX" | $SED "$delay_single_quote_subst"`' +link_all_deplibs_CXX='`$ECHO "$link_all_deplibs_CXX" | $SED "$delay_single_quote_subst"`' +always_export_symbols_CXX='`$ECHO "$always_export_symbols_CXX" | $SED "$delay_single_quote_subst"`' +export_symbols_cmds_CXX='`$ECHO "$export_symbols_cmds_CXX" | $SED "$delay_single_quote_subst"`' +exclude_expsyms_CXX='`$ECHO "$exclude_expsyms_CXX" | $SED "$delay_single_quote_subst"`' +include_expsyms_CXX='`$ECHO "$include_expsyms_CXX" | $SED "$delay_single_quote_subst"`' +prelink_cmds_CXX='`$ECHO "$prelink_cmds_CXX" | $SED "$delay_single_quote_subst"`' +postlink_cmds_CXX='`$ECHO "$postlink_cmds_CXX" | $SED "$delay_single_quote_subst"`' +file_list_spec_CXX='`$ECHO "$file_list_spec_CXX" | $SED "$delay_single_quote_subst"`' +hardcode_action_CXX='`$ECHO "$hardcode_action_CXX" | $SED "$delay_single_quote_subst"`' +compiler_lib_search_dirs_CXX='`$ECHO "$compiler_lib_search_dirs_CXX" | $SED "$delay_single_quote_subst"`' +predep_objects_CXX='`$ECHO "$predep_objects_CXX" | $SED "$delay_single_quote_subst"`' +postdep_objects_CXX='`$ECHO "$postdep_objects_CXX" | $SED "$delay_single_quote_subst"`' +predeps_CXX='`$ECHO "$predeps_CXX" | $SED "$delay_single_quote_subst"`' +postdeps_CXX='`$ECHO "$postdeps_CXX" | $SED "$delay_single_quote_subst"`' +compiler_lib_search_path_CXX='`$ECHO "$compiler_lib_search_path_CXX" | $SED "$delay_single_quote_subst"`' LTCC='$LTCC' LTCFLAGS='$LTCFLAGS' compiler='$compiler_DEFAULT' +# A function that is used when there is no print builtin or printf. +func_fallback_echo () +{ + eval 'cat <<_LTECHO_EOF +\$1 +_LTECHO_EOF' +} + # Quote evaled strings. -for var in SED \ +for var in SHELL \ +ECHO \ +PATH_SEPARATOR \ +SED \ GREP \ EGREP \ FGREP \ @@ -18102,10 +17646,16 @@ LN_S \ lt_SP2NL \ lt_NL2SP \ reload_flag \ +OBJDUMP \ deplibs_check_method \ file_magic_cmd \ +file_magic_glob \ +want_nocaseglob \ +DLLTOOL \ +sharedlib_from_linklib_cmd \ AR \ AR_FLAGS \ +archiver_list_spec \ STRIP \ RANLIB \ CC \ @@ -18115,14 +17665,14 @@ lt_cv_sys_global_symbol_pipe \ lt_cv_sys_global_symbol_to_cdecl \ lt_cv_sys_global_symbol_to_c_name_address \ lt_cv_sys_global_symbol_to_c_name_address_lib_prefix \ -SHELL \ -ECHO \ +nm_file_list_spec \ lt_prog_compiler_no_builtin_flag \ -lt_prog_compiler_wl \ lt_prog_compiler_pic \ +lt_prog_compiler_wl \ lt_prog_compiler_static \ lt_cv_prog_compiler_c_o \ need_locks \ +MANIFEST_TOOL \ DSYMUTIL \ NMEDIT \ LIPO \ @@ -18136,9 +17686,7 @@ with_gnu_ld \ allow_undefined_flag \ no_undefined_flag \ hardcode_libdir_flag_spec \ -hardcode_libdir_flag_spec_ld \ hardcode_libdir_separator \ -fix_srcfile_path \ exclude_expsyms \ include_expsyms \ file_list_spec \ @@ -18146,6 +17694,7 @@ variables_saved_for_relink \ libname_spec \ library_names_spec \ soname_spec \ +install_override_mode \ finish_eval \ old_striplib \ striplib \ @@ -18156,10 +17705,11 @@ predeps \ postdeps \ compiler_lib_search_path \ LD_CXX \ +reload_flag_CXX \ compiler_CXX \ lt_prog_compiler_no_builtin_flag_CXX \ -lt_prog_compiler_wl_CXX \ lt_prog_compiler_pic_CXX \ +lt_prog_compiler_wl_CXX \ lt_prog_compiler_static_CXX \ lt_cv_prog_compiler_c_o_CXX \ export_dynamic_flag_spec_CXX \ @@ -18169,9 +17719,7 @@ with_gnu_ld_CXX \ allow_undefined_flag_CXX \ no_undefined_flag_CXX \ hardcode_libdir_flag_spec_CXX \ -hardcode_libdir_flag_spec_ld_CXX \ hardcode_libdir_separator_CXX \ -fix_srcfile_path_CXX \ exclude_expsyms_CXX \ include_expsyms_CXX \ file_list_spec_CXX \ @@ -18181,9 +17729,9 @@ postdep_objects_CXX \ predeps_CXX \ postdeps_CXX \ compiler_lib_search_path_CXX; do - case \`eval \\\\\$ECHO "X\\\\\$\$var"\` in + case \`eval \\\\\$ECHO \\\\""\\\\\$\$var"\\\\"\` in *[\\\\\\\`\\"\\\$]*) - eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"X\\\$\$var\\" | \\\$Xsed -e \\"\\\$sed_quote_subst\\"\\\`\\\\\\"" + eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED \\"\\\$sed_quote_subst\\"\\\`\\\\\\"" ;; *) eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\"" @@ -18205,11 +17753,13 @@ module_cmds \ module_expsym_cmds \ export_symbols_cmds \ prelink_cmds \ +postlink_cmds \ postinstall_cmds \ postuninstall_cmds \ finish_cmds \ sys_lib_search_path_spec \ sys_lib_dlsearch_path_spec \ +reload_cmds_CXX \ old_archive_cmds_CXX \ old_archive_from_new_cmds_CXX \ old_archive_from_expsyms_cmds_CXX \ @@ -18218,10 +17768,11 @@ archive_expsym_cmds_CXX \ module_cmds_CXX \ module_expsym_cmds_CXX \ export_symbols_cmds_CXX \ -prelink_cmds_CXX; do - case \`eval \\\\\$ECHO "X\\\\\$\$var"\` in +prelink_cmds_CXX \ +postlink_cmds_CXX; do + case \`eval \\\\\$ECHO \\\\""\\\\\$\$var"\\\\"\` in *[\\\\\\\`\\"\\\$]*) - eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"X\\\$\$var\\" | \\\$Xsed -e \\"\\\$double_quote_subst\\" -e \\"\\\$sed_quote_subst\\" -e \\"\\\$delay_variable_subst\\"\\\`\\\\\\"" + eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED -e \\"\\\$double_quote_subst\\" -e \\"\\\$sed_quote_subst\\" -e \\"\\\$delay_variable_subst\\"\\\`\\\\\\"" ;; *) eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\"" @@ -18229,12 +17780,6 @@ prelink_cmds_CXX; do esac done -# Fix-up fallback echo if it was mangled by the above quoting rules. -case \$lt_ECHO in -*'\\\$0 --fallback-echo"') lt_ECHO=\`\$ECHO "X\$lt_ECHO" | \$Xsed -e 's/\\\\\\\\\\\\\\\$0 --fallback-echo"\$/\$0 --fallback-echo"/'\` - ;; -esac - ac_aux_dir='$ac_aux_dir' xsi_shell='$xsi_shell' lt_shell_append='$lt_shell_append' @@ -18259,7 +17804,7 @@ fi _ACEOF -cat >>$CONFIG_STATUS <<\_ACEOF +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # Handling of arguments. for ac_config_target in $ac_config_targets @@ -18273,9 +17818,7 @@ do "protobuf.pc") CONFIG_FILES="$CONFIG_FILES protobuf.pc" ;; "protobuf-lite.pc") CONFIG_FILES="$CONFIG_FILES protobuf-lite.pc" ;; - *) { { echo "$as_me:$LINENO: error: invalid argument: $ac_config_target" >&5 -echo "$as_me: error: invalid argument: $ac_config_target" >&2;} - { (exit 1); exit 1; }; };; + *) as_fn_error $? "invalid argument: \`$ac_config_target'" "$LINENO" 5;; esac done @@ -18298,281 +17841,302 @@ fi # after its creation but before its name has been assigned to `$tmp'. $debug || { - tmp= + tmp= ac_tmp= trap 'exit_status=$? - { test -z "$tmp" || test ! -d "$tmp" || rm -fr "$tmp"; } && exit $exit_status + : "${ac_tmp:=$tmp}" + { test ! -d "$ac_tmp" || rm -fr "$ac_tmp"; } && exit $exit_status ' 0 - trap '{ (exit 1); exit 1; }' 1 2 13 15 + trap 'as_fn_exit 1' 1 2 13 15 } # Create a (secure) tmp directory for tmp files. { tmp=`(umask 077 && mktemp -d "./confXXXXXX") 2>/dev/null` && - test -n "$tmp" && test -d "$tmp" + test -d "$tmp" } || { tmp=./conf$$-$RANDOM (umask 077 && mkdir "$tmp") -} || -{ - echo "$me: cannot create a temporary directory in ." >&2 - { (exit 1); exit 1; } -} - -# -# Set up the sed scripts for CONFIG_FILES section. -# +} || as_fn_error $? "cannot create a temporary directory in ." "$LINENO" 5 +ac_tmp=$tmp -# No need to generate the scripts if there are no CONFIG_FILES. -# This happens for instance when ./config.status config.h +# Set up the scripts for CONFIG_FILES section. +# No need to generate them if there are no CONFIG_FILES. +# This happens for instance with `./config.status config.h'. if test -n "$CONFIG_FILES"; then -_ACEOF - - - -ac_delim='%!_!# ' -for ac_last_try in false false false false false :; do - cat >conf$$subs.sed <<_ACEOF -SHELL!$SHELL$ac_delim -PATH_SEPARATOR!$PATH_SEPARATOR$ac_delim -PACKAGE_NAME!$PACKAGE_NAME$ac_delim -PACKAGE_TARNAME!$PACKAGE_TARNAME$ac_delim -PACKAGE_VERSION!$PACKAGE_VERSION$ac_delim -PACKAGE_STRING!$PACKAGE_STRING$ac_delim -PACKAGE_BUGREPORT!$PACKAGE_BUGREPORT$ac_delim -exec_prefix!$exec_prefix$ac_delim -prefix!$prefix$ac_delim -program_transform_name!$program_transform_name$ac_delim -bindir!$bindir$ac_delim -sbindir!$sbindir$ac_delim -libexecdir!$libexecdir$ac_delim -datarootdir!$datarootdir$ac_delim -datadir!$datadir$ac_delim -sysconfdir!$sysconfdir$ac_delim -sharedstatedir!$sharedstatedir$ac_delim -localstatedir!$localstatedir$ac_delim -includedir!$includedir$ac_delim -oldincludedir!$oldincludedir$ac_delim -docdir!$docdir$ac_delim -infodir!$infodir$ac_delim -htmldir!$htmldir$ac_delim -dvidir!$dvidir$ac_delim -pdfdir!$pdfdir$ac_delim -psdir!$psdir$ac_delim -libdir!$libdir$ac_delim -localedir!$localedir$ac_delim -mandir!$mandir$ac_delim -DEFS!$DEFS$ac_delim -ECHO_C!$ECHO_C$ac_delim -ECHO_N!$ECHO_N$ac_delim -ECHO_T!$ECHO_T$ac_delim -LIBS!$LIBS$ac_delim -build_alias!$build_alias$ac_delim -host_alias!$host_alias$ac_delim -target_alias!$target_alias$ac_delim -build!$build$ac_delim -build_cpu!$build_cpu$ac_delim -build_vendor!$build_vendor$ac_delim -build_os!$build_os$ac_delim -host!$host$ac_delim -host_cpu!$host_cpu$ac_delim -host_vendor!$host_vendor$ac_delim -host_os!$host_os$ac_delim -target!$target$ac_delim -target_cpu!$target_cpu$ac_delim -target_vendor!$target_vendor$ac_delim -target_os!$target_os$ac_delim -INSTALL_PROGRAM!$INSTALL_PROGRAM$ac_delim -INSTALL_SCRIPT!$INSTALL_SCRIPT$ac_delim -INSTALL_DATA!$INSTALL_DATA$ac_delim -am__isrc!$am__isrc$ac_delim -CYGPATH_W!$CYGPATH_W$ac_delim -PACKAGE!$PACKAGE$ac_delim -VERSION!$VERSION$ac_delim -ACLOCAL!$ACLOCAL$ac_delim -AUTOCONF!$AUTOCONF$ac_delim -AUTOMAKE!$AUTOMAKE$ac_delim -AUTOHEADER!$AUTOHEADER$ac_delim -MAKEINFO!$MAKEINFO$ac_delim -install_sh!$install_sh$ac_delim -STRIP!$STRIP$ac_delim -INSTALL_STRIP_PROGRAM!$INSTALL_STRIP_PROGRAM$ac_delim -mkdir_p!$mkdir_p$ac_delim -AWK!$AWK$ac_delim -SET_MAKE!$SET_MAKE$ac_delim -am__leading_dot!$am__leading_dot$ac_delim -AMTAR!$AMTAR$ac_delim -am__tar!$am__tar$ac_delim -am__untar!$am__untar$ac_delim -CC!$CC$ac_delim -CFLAGS!$CFLAGS$ac_delim -LDFLAGS!$LDFLAGS$ac_delim -CPPFLAGS!$CPPFLAGS$ac_delim -ac_ct_CC!$ac_ct_CC$ac_delim -EXEEXT!$EXEEXT$ac_delim -OBJEXT!$OBJEXT$ac_delim -DEPDIR!$DEPDIR$ac_delim -am__include!$am__include$ac_delim -am__quote!$am__quote$ac_delim -AMDEP_TRUE!$AMDEP_TRUE$ac_delim -AMDEP_FALSE!$AMDEP_FALSE$ac_delim -AMDEPBACKSLASH!$AMDEPBACKSLASH$ac_delim -CCDEPMODE!$CCDEPMODE$ac_delim -am__fastdepCC_TRUE!$am__fastdepCC_TRUE$ac_delim -am__fastdepCC_FALSE!$am__fastdepCC_FALSE$ac_delim -CXX!$CXX$ac_delim -CXXFLAGS!$CXXFLAGS$ac_delim -ac_ct_CXX!$ac_ct_CXX$ac_delim -CXXDEPMODE!$CXXDEPMODE$ac_delim -am__fastdepCXX_TRUE!$am__fastdepCXX_TRUE$ac_delim -am__fastdepCXX_FALSE!$am__fastdepCXX_FALSE$ac_delim -CXXCPP!$CXXCPP$ac_delim -GREP!$GREP$ac_delim -EGREP!$EGREP$ac_delim -GCC_TRUE!$GCC_TRUE$ac_delim -_ACEOF - - if test `sed -n "s/.*$ac_delim\$/X/p" conf$$subs.sed | grep -c X` = 97; then - break - elif $ac_last_try; then - { { echo "$as_me:$LINENO: error: could not make $CONFIG_STATUS" >&5 -echo "$as_me: error: could not make $CONFIG_STATUS" >&2;} - { (exit 1); exit 1; }; } - else - ac_delim="$ac_delim!$ac_delim _$ac_delim!! " - fi -done -ac_eof=`sed -n '/^CEOF[0-9]*$/s/CEOF/0/p' conf$$subs.sed` -if test -n "$ac_eof"; then - ac_eof=`echo "$ac_eof" | sort -nru | sed 1q` - ac_eof=`expr $ac_eof + 1` +ac_cr=`echo X | tr X '\015'` +# On cygwin, bash can eat \r inside `` if the user requested igncr. +# But we know of no other shell where ac_cr would be empty at this +# point, so we can use a bashism as a fallback. +if test "x$ac_cr" = x; then + eval ac_cr=\$\'\\r\' +fi +ac_cs_awk_cr=`$AWK 'BEGIN { print "a\rb" }' /dev/null` +if test "$ac_cs_awk_cr" = "a${ac_cr}b"; then + ac_cs_awk_cr='\\r' +else + ac_cs_awk_cr=$ac_cr fi -cat >>$CONFIG_STATUS <<_ACEOF -cat >"\$tmp/subs-1.sed" <<\CEOF$ac_eof -/@[a-zA-Z_][a-zA-Z_0-9]*@/!b -_ACEOF -sed ' -s/[,\\&]/\\&/g; s/@/@|#_!!_#|/g -s/^/s,@/; s/!/@,|#_!!_#|/ -:n -t n -s/'"$ac_delim"'$/,g/; t -s/$/\\/; p -N; s/^.*\n//; s/[,\\&]/\\&/g; s/@/@|#_!!_#|/g; b n -' >>$CONFIG_STATUS >$CONFIG_STATUS <<_ACEOF -CEOF$ac_eof +echo 'BEGIN {' >"$ac_tmp/subs1.awk" && _ACEOF +{ + echo "cat >conf$$subs.awk <<_ACEOF" && + echo "$ac_subst_vars" | sed 's/.*/&!$&$ac_delim/' && + echo "_ACEOF" +} >conf$$subs.sh || + as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 +ac_delim_num=`echo "$ac_subst_vars" | grep -c '^'` ac_delim='%!_!# ' for ac_last_try in false false false false false :; do - cat >conf$$subs.sed <<_ACEOF -GCC_FALSE!$GCC_FALSE$ac_delim -PROTOBUF_OPT_FLAG!$PROTOBUF_OPT_FLAG$ac_delim -ISAINFO!$ISAINFO$ac_delim -LIBTOOL!$LIBTOOL$ac_delim -SED!$SED$ac_delim -FGREP!$FGREP$ac_delim -LD!$LD$ac_delim -DUMPBIN!$DUMPBIN$ac_delim -ac_ct_DUMPBIN!$ac_ct_DUMPBIN$ac_delim -NM!$NM$ac_delim -LN_S!$LN_S$ac_delim -AR!$AR$ac_delim -RANLIB!$RANLIB$ac_delim -lt_ECHO!$lt_ECHO$ac_delim -DSYMUTIL!$DSYMUTIL$ac_delim -NMEDIT!$NMEDIT$ac_delim -LIPO!$LIPO$ac_delim -OTOOL!$OTOOL$ac_delim -OTOOL64!$OTOOL64$ac_delim -LIBOBJS!$LIBOBJS$ac_delim -POW_LIB!$POW_LIB$ac_delim -HAVE_ZLIB_TRUE!$HAVE_ZLIB_TRUE$ac_delim -HAVE_ZLIB_FALSE!$HAVE_ZLIB_FALSE$ac_delim -PROTOC!$PROTOC$ac_delim -USE_EXTERNAL_PROTOC_TRUE!$USE_EXTERNAL_PROTOC_TRUE$ac_delim -USE_EXTERNAL_PROTOC_FALSE!$USE_EXTERNAL_PROTOC_FALSE$ac_delim -acx_pthread_config!$acx_pthread_config$ac_delim -PTHREAD_CC!$PTHREAD_CC$ac_delim -PTHREAD_LIBS!$PTHREAD_LIBS$ac_delim -PTHREAD_CFLAGS!$PTHREAD_CFLAGS$ac_delim -subdirs!$subdirs$ac_delim -LTLIBOBJS!$LTLIBOBJS$ac_delim -_ACEOF + . ./conf$$subs.sh || + as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 - if test `sed -n "s/.*$ac_delim\$/X/p" conf$$subs.sed | grep -c X` = 32; then + ac_delim_n=`sed -n "s/.*$ac_delim\$/X/p" conf$$subs.awk | grep -c X` + if test $ac_delim_n = $ac_delim_num; then break elif $ac_last_try; then - { { echo "$as_me:$LINENO: error: could not make $CONFIG_STATUS" >&5 -echo "$as_me: error: could not make $CONFIG_STATUS" >&2;} - { (exit 1); exit 1; }; } + as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 else ac_delim="$ac_delim!$ac_delim _$ac_delim!! " fi done +rm -f conf$$subs.sh -ac_eof=`sed -n '/^CEOF[0-9]*$/s/CEOF/0/p' conf$$subs.sed` -if test -n "$ac_eof"; then - ac_eof=`echo "$ac_eof" | sort -nru | sed 1q` - ac_eof=`expr $ac_eof + 1` -fi +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 +cat >>"\$ac_tmp/subs1.awk" <<\\_ACAWK && +_ACEOF +sed -n ' +h +s/^/S["/; s/!.*/"]=/ +p +g +s/^[^!]*!// +:repl +t repl +s/'"$ac_delim"'$// +t delim +:nl +h +s/\(.\{148\}\)..*/\1/ +t more1 +s/["\\]/\\&/g; s/^/"/; s/$/\\n"\\/ +p +n +b repl +:more1 +s/["\\]/\\&/g; s/^/"/; s/$/"\\/ +p +g +s/.\{148\}// +t nl +:delim +h +s/\(.\{148\}\)..*/\1/ +t more2 +s/["\\]/\\&/g; s/^/"/; s/$/"/ +p +b +:more2 +s/["\\]/\\&/g; s/^/"/; s/$/"\\/ +p +g +s/.\{148\}// +t delim +' >$CONFIG_STATUS || ac_write_fail=1 +rm -f conf$$subs.awk +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 +_ACAWK +cat >>"\$ac_tmp/subs1.awk" <<_ACAWK && + for (key in S) S_is_set[key] = 1 + FS = "" + +} +{ + line = $ 0 + nfields = split(line, field, "@") + substed = 0 + len = length(field[1]) + for (i = 2; i < nfields; i++) { + key = field[i] + keylen = length(key) + if (S_is_set[key]) { + value = S[key] + line = substr(line, 1, len) "" value "" substr(line, len + keylen + 3) + len += length(value) + length(field[++i]) + substed = 1 + } else + len += 1 + keylen + } -cat >>$CONFIG_STATUS <<_ACEOF -cat >"\$tmp/subs-2.sed" <<\CEOF$ac_eof -/@[a-zA-Z_][a-zA-Z_0-9]*@/!b end + print line +} + +_ACAWK _ACEOF -sed ' -s/[,\\&]/\\&/g; s/@/@|#_!!_#|/g -s/^/s,@/; s/!/@,|#_!!_#|/ -:n -t n -s/'"$ac_delim"'$/,g/; t -s/$/\\/; p -N; s/^.*\n//; s/[,\\&]/\\&/g; s/@/@|#_!!_#|/g; b n -' >>$CONFIG_STATUS >$CONFIG_STATUS <<_ACEOF -:end -s/|#_!!_#|//g -CEOF$ac_eof +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +if sed "s/$ac_cr//" < /dev/null > /dev/null 2>&1; then + sed "s/$ac_cr\$//; s/$ac_cr/$ac_cs_awk_cr/g" +else + cat +fi < "$ac_tmp/subs1.awk" > "$ac_tmp/subs.awk" \ + || as_fn_error $? "could not setup config files machinery" "$LINENO" 5 _ACEOF - -# VPATH may cause trouble with some makes, so we remove $(srcdir), -# ${srcdir} and @srcdir@ from VPATH if srcdir is ".", strip leading and +# VPATH may cause trouble with some makes, so we remove sole $(srcdir), +# ${srcdir} and @srcdir@ entries from VPATH if srcdir is ".", strip leading and # trailing colons and then remove the whole line if VPATH becomes empty # (actually we leave an empty line to preserve line numbers). if test "x$srcdir" = x.; then - ac_vpsub='/^[ ]*VPATH[ ]*=/{ -s/:*\$(srcdir):*/:/ -s/:*\${srcdir}:*/:/ -s/:*@srcdir@:*/:/ -s/^\([^=]*=[ ]*\):*/\1/ + ac_vpsub='/^[ ]*VPATH[ ]*=[ ]*/{ +h +s/// +s/^/:/ +s/[ ]*$/:/ +s/:\$(srcdir):/:/g +s/:\${srcdir}:/:/g +s/:@srcdir@:/:/g +s/^:*// s/:*$// +x +s/\(=[ ]*\).*/\1/ +G +s/\n// s/^[^=]*=[ ]*$// }' fi -cat >>$CONFIG_STATUS <<\_ACEOF +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 fi # test -n "$CONFIG_FILES" +# Set up the scripts for CONFIG_HEADERS section. +# No need to generate them if there are no CONFIG_HEADERS. +# This happens for instance with `./config.status Makefile'. +if test -n "$CONFIG_HEADERS"; then +cat >"$ac_tmp/defines.awk" <<\_ACAWK || +BEGIN { +_ACEOF + +# Transform confdefs.h into an awk script `defines.awk', embedded as +# here-document in config.status, that substitutes the proper values into +# config.h.in to produce config.h. + +# Create a delimiter string that does not exist in confdefs.h, to ease +# handling of long lines. +ac_delim='%!_!# ' +for ac_last_try in false false :; do + ac_tt=`sed -n "/$ac_delim/p" confdefs.h` + if test -z "$ac_tt"; then + break + elif $ac_last_try; then + as_fn_error $? "could not make $CONFIG_HEADERS" "$LINENO" 5 + else + ac_delim="$ac_delim!$ac_delim _$ac_delim!! " + fi +done + +# For the awk script, D is an array of macro values keyed by name, +# likewise P contains macro parameters if any. Preserve backslash +# newline sequences. + +ac_word_re=[_$as_cr_Letters][_$as_cr_alnum]* +sed -n ' +s/.\{148\}/&'"$ac_delim"'/g +t rset +:rset +s/^[ ]*#[ ]*define[ ][ ]*/ / +t def +d +:def +s/\\$// +t bsnl +s/["\\]/\\&/g +s/^ \('"$ac_word_re"'\)\(([^()]*)\)[ ]*\(.*\)/P["\1"]="\2"\ +D["\1"]=" \3"/p +s/^ \('"$ac_word_re"'\)[ ]*\(.*\)/D["\1"]=" \2"/p +d +:bsnl +s/["\\]/\\&/g +s/^ \('"$ac_word_re"'\)\(([^()]*)\)[ ]*\(.*\)/P["\1"]="\2"\ +D["\1"]=" \3\\\\\\n"\\/p +t cont +s/^ \('"$ac_word_re"'\)[ ]*\(.*\)/D["\1"]=" \2\\\\\\n"\\/p +t cont +d +:cont +n +s/.\{148\}/&'"$ac_delim"'/g +t clear +:clear +s/\\$// +t bsnlc +s/["\\]/\\&/g; s/^/"/; s/$/"/p +d +:bsnlc +s/["\\]/\\&/g; s/^/"/; s/$/\\\\\\n"\\/p +b cont +' >$CONFIG_STATUS || ac_write_fail=1 + +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 + for (key in D) D_is_set[key] = 1 + FS = "" +} +/^[\t ]*#[\t ]*(define|undef)[\t ]+$ac_word_re([\t (]|\$)/ { + line = \$ 0 + split(line, arg, " ") + if (arg[1] == "#") { + defundef = arg[2] + mac1 = arg[3] + } else { + defundef = substr(arg[1], 2) + mac1 = arg[2] + } + split(mac1, mac2, "(") #) + macro = mac2[1] + prefix = substr(line, 1, index(line, defundef) - 1) + if (D_is_set[macro]) { + # Preserve the white space surrounding the "#". + print prefix "define", macro P[macro] D[macro] + next + } else { + # Replace #undef with comments. This is necessary, for example, + # in the case of _POSIX_SOURCE, which is predefined and required + # on some systems where configure will not decide to define it. + if (defundef == "undef") { + print "/*", prefix defundef, macro, "*/" + next + } + } +} +{ print } +_ACAWK +_ACEOF +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 + as_fn_error $? "could not setup config headers machinery" "$LINENO" 5 +fi # test -n "$CONFIG_HEADERS" + -for ac_tag in :F $CONFIG_FILES :H $CONFIG_HEADERS :C $CONFIG_COMMANDS +eval set X " :F $CONFIG_FILES :H $CONFIG_HEADERS :C $CONFIG_COMMANDS" +shift +for ac_tag do case $ac_tag in :[FHLC]) ac_mode=$ac_tag; continue;; esac case $ac_mode$ac_tag in :[FHL]*:*);; - :L* | :C*:*) { { echo "$as_me:$LINENO: error: Invalid tag $ac_tag." >&5 -echo "$as_me: error: Invalid tag $ac_tag." >&2;} - { (exit 1); exit 1; }; };; + :L* | :C*:*) as_fn_error $? "invalid tag \`$ac_tag'" "$LINENO" 5;; :[FH]-) ac_tag=-:-;; :[FH]*) ac_tag=$ac_tag:$ac_tag.in;; esac @@ -18591,7 +18155,7 @@ echo "$as_me: error: Invalid tag $ac_tag." >&2;} for ac_f do case $ac_f in - -) ac_f="$tmp/stdin";; + -) ac_f="$ac_tmp/stdin";; *) # Look for the file first in the build tree, then in the source tree # (if the path is not absolute). The absolute path cannot be DOS-style, # because $ac_f cannot contain `:'. @@ -18600,71 +18164,44 @@ echo "$as_me: error: Invalid tag $ac_tag." >&2;} [\\/$]*) false;; *) test -f "$srcdir/$ac_f" && ac_f="$srcdir/$ac_f";; esac || - { { echo "$as_me:$LINENO: error: cannot find input file: $ac_f" >&5 -echo "$as_me: error: cannot find input file: $ac_f" >&2;} - { (exit 1); exit 1; }; };; + as_fn_error 1 "cannot find input file: \`$ac_f'" "$LINENO" 5;; esac - ac_file_inputs="$ac_file_inputs $ac_f" + case $ac_f in *\'*) ac_f=`$as_echo "$ac_f" | sed "s/'/'\\\\\\\\''/g"`;; esac + as_fn_append ac_file_inputs " '$ac_f'" done # Let's still pretend it is `configure' which instantiates (i.e., don't # use $as_me), people would be surprised to read: # /* config.h. Generated by config.status. */ - configure_input="Generated from "`IFS=: - echo $* | sed 's|^[^:]*/||;s|:[^:]*/|, |g'`" by configure." + configure_input='Generated from '` + $as_echo "$*" | sed 's|^[^:]*/||;s|:[^:]*/|, |g' + `' by configure.' if test x"$ac_file" != x-; then configure_input="$ac_file. $configure_input" - { echo "$as_me:$LINENO: creating $ac_file" >&5 -echo "$as_me: creating $ac_file" >&6;} + { $as_echo "$as_me:${as_lineno-$LINENO}: creating $ac_file" >&5 +$as_echo "$as_me: creating $ac_file" >&6;} fi - - case $ac_tag in - *:-:* | *:-) cat >"$tmp/stdin";; - esac - ;; - esac - - ac_dir=`$as_dirname -- "$ac_file" || -$as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ - X"$ac_file" : 'X\(//\)[^/]' \| \ - X"$ac_file" : 'X\(//\)$' \| \ - X"$ac_file" : 'X\(/\)' \| . 2>/dev/null || -echo X"$ac_file" | - sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ - s//\1/ - q - } - /^X\(\/\/\)[^/].*/{ - s//\1/ - q - } - /^X\(\/\/\)$/{ - s//\1/ - q - } - /^X\(\/\).*/{ - s//\1/ - q - } - s/.*/./; q'` - { as_dir="$ac_dir" - case $as_dir in #( - -*) as_dir=./$as_dir;; + # Neutralize special characters interpreted by sed in replacement strings. + case $configure_input in #( + *\&* | *\|* | *\\* ) + ac_sed_conf_input=`$as_echo "$configure_input" | + sed 's/[\\\\&|]/\\\\&/g'`;; #( + *) ac_sed_conf_input=$configure_input;; + esac + + case $ac_tag in + *:-:* | *:-) cat >"$ac_tmp/stdin" \ + || as_fn_error $? "could not create $ac_file" "$LINENO" 5 ;; + esac + ;; esac - test -d "$as_dir" || { $as_mkdir_p && mkdir -p "$as_dir"; } || { - as_dirs= - while :; do - case $as_dir in #( - *\'*) as_qdir=`echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #( - *) as_qdir=$as_dir;; - esac - as_dirs="'$as_qdir' $as_dirs" - as_dir=`$as_dirname -- "$as_dir" || -$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ - X"$as_dir" : 'X\(//\)[^/]' \| \ - X"$as_dir" : 'X\(//\)$' \| \ - X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || -echo X"$as_dir" | + + ac_dir=`$as_dirname -- "$ac_file" || +$as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$ac_file" : 'X\(//\)[^/]' \| \ + X"$ac_file" : 'X\(//\)$' \| \ + X"$ac_file" : 'X\(/\)' \| . 2>/dev/null || +$as_echo X"$ac_file" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q @@ -18682,20 +18219,15 @@ echo X"$as_dir" | q } s/.*/./; q'` - test -d "$as_dir" && break - done - test -z "$as_dirs" || eval "mkdir $as_dirs" - } || test -d "$as_dir" || { { echo "$as_me:$LINENO: error: cannot create directory $as_dir" >&5 -echo "$as_me: error: cannot create directory $as_dir" >&2;} - { (exit 1); exit 1; }; }; } + as_dir="$ac_dir"; as_fn_mkdir_p ac_builddir=. case "$ac_dir" in .) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; *) - ac_dir_suffix=/`echo "$ac_dir" | sed 's,^\.[\\/],,'` + ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'` # A ".." for each directory in $ac_dir_suffix. - ac_top_builddir_sub=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,/..,g;s,/,,'` + ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` case $ac_top_builddir_sub in "") ac_top_builddir_sub=. ac_top_build_prefix= ;; *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; @@ -18740,12 +18272,12 @@ ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix esac _ACEOF -cat >>$CONFIG_STATUS <<\_ACEOF +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # If the template does not know about datarootdir, expand it. # FIXME: This hack should be removed a few years after 2.60. ac_datarootdir_hack=; ac_datarootdir_seen= - -case `sed -n '/datarootdir/ { +ac_sed_dataroot=' +/datarootdir/ { p q } @@ -18753,36 +18285,37 @@ case `sed -n '/datarootdir/ { /@docdir@/p /@infodir@/p /@localedir@/p -/@mandir@/p -' $ac_file_inputs` in +/@mandir@/p' +case `eval "sed -n \"\$ac_sed_dataroot\" $ac_file_inputs"` in *datarootdir*) ac_datarootdir_seen=yes;; *@datadir@*|*@docdir@*|*@infodir@*|*@localedir@*|*@mandir@*) - { echo "$as_me:$LINENO: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&5 -echo "$as_me: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&2;} + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&5 +$as_echo "$as_me: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&2;} _ACEOF -cat >>$CONFIG_STATUS <<_ACEOF +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_datarootdir_hack=' s&@datadir@&$datadir&g s&@docdir@&$docdir&g s&@infodir@&$infodir&g s&@localedir@&$localedir&g s&@mandir@&$mandir&g - s&\\\${datarootdir}&$datarootdir&g' ;; + s&\\\${datarootdir}&$datarootdir&g' ;; esac _ACEOF # Neutralize VPATH when `$srcdir' = `.'. # Shell code in configure.ac might set extrasub. # FIXME: do we really want to maintain this feature? -cat >>$CONFIG_STATUS <<_ACEOF - sed "$ac_vpsub +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 +ac_sed_extra="$ac_vpsub $extrasub _ACEOF -cat >>$CONFIG_STATUS <<\_ACEOF +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 :t /@[a-zA-Z_][a-zA-Z_0-9]*@/!b -s&@configure_input@&$configure_input&;t t +s|@configure_input@|$ac_sed_conf_input|;t t s&@top_builddir@&$ac_top_builddir_sub&;t t +s&@top_build_prefix@&$ac_top_build_prefix&;t t s&@srcdir@&$ac_srcdir&;t t s&@abs_srcdir@&$ac_abs_srcdir&;t t s&@top_srcdir@&$ac_top_srcdir&;t t @@ -18793,121 +18326,51 @@ s&@abs_top_builddir@&$ac_abs_top_builddir&;t t s&@INSTALL@&$ac_INSTALL&;t t s&@MKDIR_P@&$ac_MKDIR_P&;t t $ac_datarootdir_hack -" $ac_file_inputs | sed -f "$tmp/subs-1.sed" | sed -f "$tmp/subs-2.sed" >$tmp/out +" +eval sed \"\$ac_sed_extra\" "$ac_file_inputs" | $AWK -f "$ac_tmp/subs.awk" \ + >$ac_tmp/out || as_fn_error $? "could not create $ac_file" "$LINENO" 5 test -z "$ac_datarootdir_hack$ac_datarootdir_seen" && - { ac_out=`sed -n '/\${datarootdir}/p' "$tmp/out"`; test -n "$ac_out"; } && - { ac_out=`sed -n '/^[ ]*datarootdir[ ]*:*=/p' "$tmp/out"`; test -z "$ac_out"; } && - { echo "$as_me:$LINENO: WARNING: $ac_file contains a reference to the variable \`datarootdir' -which seems to be undefined. Please make sure it is defined." >&5 -echo "$as_me: WARNING: $ac_file contains a reference to the variable \`datarootdir' -which seems to be undefined. Please make sure it is defined." >&2;} - - rm -f "$tmp/stdin" + { ac_out=`sed -n '/\${datarootdir}/p' "$ac_tmp/out"`; test -n "$ac_out"; } && + { ac_out=`sed -n '/^[ ]*datarootdir[ ]*:*=/p' \ + "$ac_tmp/out"`; test -z "$ac_out"; } && + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file contains a reference to the variable \`datarootdir' +which seems to be undefined. Please make sure it is defined" >&5 +$as_echo "$as_me: WARNING: $ac_file contains a reference to the variable \`datarootdir' +which seems to be undefined. Please make sure it is defined" >&2;} + + rm -f "$ac_tmp/stdin" case $ac_file in - -) cat "$tmp/out"; rm -f "$tmp/out";; - *) rm -f "$ac_file"; mv "$tmp/out" $ac_file;; - esac + -) cat "$ac_tmp/out" && rm -f "$ac_tmp/out";; + *) rm -f "$ac_file" && mv "$ac_tmp/out" "$ac_file";; + esac \ + || as_fn_error $? "could not create $ac_file" "$LINENO" 5 ;; :H) # # CONFIG_HEADER # -_ACEOF - -# Transform confdefs.h into a sed script `conftest.defines', that -# substitutes the proper values into config.h.in to produce config.h. -rm -f conftest.defines conftest.tail -# First, append a space to every undef/define line, to ease matching. -echo 's/$/ /' >conftest.defines -# Then, protect against being on the right side of a sed subst, or in -# an unquoted here document, in config.status. If some macros were -# called several times there might be several #defines for the same -# symbol, which is useless. But do not sort them, since the last -# AC_DEFINE must be honored. -ac_word_re=[_$as_cr_Letters][_$as_cr_alnum]* -# These sed commands are passed to sed as "A NAME B PARAMS C VALUE D", where -# NAME is the cpp macro being defined, VALUE is the value it is being given. -# PARAMS is the parameter list in the macro definition--in most cases, it's -# just an empty string. -ac_dA='s,^\\([ #]*\\)[^ ]*\\([ ]*' -ac_dB='\\)[ (].*,\\1define\\2' -ac_dC=' ' -ac_dD=' ,' - -uniq confdefs.h | - sed -n ' - t rset - :rset - s/^[ ]*#[ ]*define[ ][ ]*// - t ok - d - :ok - s/[\\&,]/\\&/g - s/^\('"$ac_word_re"'\)\(([^()]*)\)[ ]*\(.*\)/ '"$ac_dA"'\1'"$ac_dB"'\2'"${ac_dC}"'\3'"$ac_dD"'/p - s/^\('"$ac_word_re"'\)[ ]*\(.*\)/'"$ac_dA"'\1'"$ac_dB$ac_dC"'\2'"$ac_dD"'/p - ' >>conftest.defines - -# Remove the space that was appended to ease matching. -# Then replace #undef with comments. This is necessary, for -# example, in the case of _POSIX_SOURCE, which is predefined and required -# on some systems where configure will not decide to define it. -# (The regexp can be short, since the line contains either #define or #undef.) -echo 's/ $// -s,^[ #]*u.*,/* & */,' >>conftest.defines - -# Break up conftest.defines: -ac_max_sed_lines=50 - -# First sed command is: sed -f defines.sed $ac_file_inputs >"$tmp/out1" -# Second one is: sed -f defines.sed "$tmp/out1" >"$tmp/out2" -# Third one will be: sed -f defines.sed "$tmp/out2" >"$tmp/out1" -# et cetera. -ac_in='$ac_file_inputs' -ac_out='"$tmp/out1"' -ac_nxt='"$tmp/out2"' - -while : -do - # Write a here document: - cat >>$CONFIG_STATUS <<_ACEOF - # First, check the format of the line: - cat >"\$tmp/defines.sed" <<\\CEOF -/^[ ]*#[ ]*undef[ ][ ]*$ac_word_re[ ]*\$/b def -/^[ ]*#[ ]*define[ ][ ]*$ac_word_re[( ]/b def -b -:def -_ACEOF - sed ${ac_max_sed_lines}q conftest.defines >>$CONFIG_STATUS - echo 'CEOF - sed -f "$tmp/defines.sed"' "$ac_in >$ac_out" >>$CONFIG_STATUS - ac_in=$ac_out; ac_out=$ac_nxt; ac_nxt=$ac_in - sed 1,${ac_max_sed_lines}d conftest.defines >conftest.tail - grep . conftest.tail >/dev/null || break - rm -f conftest.defines - mv conftest.tail conftest.defines -done -rm -f conftest.defines conftest.tail - -echo "ac_result=$ac_in" >>$CONFIG_STATUS -cat >>$CONFIG_STATUS <<\_ACEOF if test x"$ac_file" != x-; then - echo "/* $configure_input */" >"$tmp/config.h" - cat "$ac_result" >>"$tmp/config.h" - if diff $ac_file "$tmp/config.h" >/dev/null 2>&1; then - { echo "$as_me:$LINENO: $ac_file is unchanged" >&5 -echo "$as_me: $ac_file is unchanged" >&6;} + { + $as_echo "/* $configure_input */" \ + && eval '$AWK -f "$ac_tmp/defines.awk"' "$ac_file_inputs" + } >"$ac_tmp/config.h" \ + || as_fn_error $? "could not create $ac_file" "$LINENO" 5 + if diff "$ac_file" "$ac_tmp/config.h" >/dev/null 2>&1; then + { $as_echo "$as_me:${as_lineno-$LINENO}: $ac_file is unchanged" >&5 +$as_echo "$as_me: $ac_file is unchanged" >&6;} else - rm -f $ac_file - mv "$tmp/config.h" $ac_file + rm -f "$ac_file" + mv "$ac_tmp/config.h" "$ac_file" \ + || as_fn_error $? "could not create $ac_file" "$LINENO" 5 fi else - echo "/* $configure_input */" - cat "$ac_result" + $as_echo "/* $configure_input */" \ + && eval '$AWK -f "$ac_tmp/defines.awk"' "$ac_file_inputs" \ + || as_fn_error $? "could not create -" "$LINENO" 5 fi - rm -f "$tmp/out12" -# Compute $ac_file's index in $config_headers. -_am_arg=$ac_file +# Compute "$ac_file"'s index in $config_headers. +_am_arg="$ac_file" _am_stamp_count=1 for _am_header in $config_headers :; do case $_am_header in @@ -18922,7 +18385,7 @@ $as_expr X"$_am_arg" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$_am_arg" : 'X\(//\)[^/]' \| \ X"$_am_arg" : 'X\(//\)$' \| \ X"$_am_arg" : 'X\(/\)' \| . 2>/dev/null || -echo X"$_am_arg" | +$as_echo X"$_am_arg" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q @@ -18942,30 +18405,40 @@ echo X"$_am_arg" | s/.*/./; q'`/stamp-h$_am_stamp_count ;; - :C) { echo "$as_me:$LINENO: executing $ac_file commands" >&5 -echo "$as_me: executing $ac_file commands" >&6;} + :C) { $as_echo "$as_me:${as_lineno-$LINENO}: executing $ac_file commands" >&5 +$as_echo "$as_me: executing $ac_file commands" >&6;} ;; esac case $ac_file$ac_mode in - "depfiles":C) test x"$AMDEP_TRUE" != x"" || for mf in $CONFIG_FILES; do - # Strip MF so we end up with the name of the file. - mf=`echo "$mf" | sed -e 's/:.*$//'` - # Check whether this is an Automake generated Makefile or not. - # We used to match only the files named `Makefile.in', but - # some people rename them; so instead we look at the file content. - # Grep'ing the first line is not enough: some people post-process - # each Makefile.in and add a new line on top of each file to say so. - # Grep'ing the whole file is not good either: AIX grep has a line - # limit of 2048, but all sed's we know have understand at least 4000. - if sed -n 's,^#.*generated by automake.*,X,p' "$mf" | grep X >/dev/null 2>&1; then - dirpart=`$as_dirname -- "$mf" || + "depfiles":C) test x"$AMDEP_TRUE" != x"" || { + # Autoconf 2.62 quotes --file arguments for eval, but not when files + # are listed without --file. Let's play safe and only enable the eval + # if we detect the quoting. + case $CONFIG_FILES in + *\'*) eval set x "$CONFIG_FILES" ;; + *) set x $CONFIG_FILES ;; + esac + shift + for mf + do + # Strip MF so we end up with the name of the file. + mf=`echo "$mf" | sed -e 's/:.*$//'` + # Check whether this is an Automake generated Makefile or not. + # We used to match only the files named `Makefile.in', but + # some people rename them; so instead we look at the file content. + # Grep'ing the first line is not enough: some people post-process + # each Makefile.in and add a new line on top of each file to say so. + # Grep'ing the whole file is not good either: AIX grep has a line + # limit of 2048, but all sed's we know have understand at least 4000. + if sed -n 's,^#.*generated by automake.*,X,p' "$mf" | grep X >/dev/null 2>&1; then + dirpart=`$as_dirname -- "$mf" || $as_expr X"$mf" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$mf" : 'X\(//\)[^/]' \| \ X"$mf" : 'X\(//\)$' \| \ X"$mf" : 'X\(/\)' \| . 2>/dev/null || -echo X"$mf" | +$as_echo X"$mf" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q @@ -18983,68 +18456,33 @@ echo X"$mf" | q } s/.*/./; q'` - else - continue - fi - # Extract the definition of DEPDIR, am__include, and am__quote - # from the Makefile without running `make'. - DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"` - test -z "$DEPDIR" && continue - am__include=`sed -n 's/^am__include = //p' < "$mf"` - test -z "am__include" && continue - am__quote=`sed -n 's/^am__quote = //p' < "$mf"` - # When using ansi2knr, U may be empty or an underscore; expand it - U=`sed -n 's/^U = //p' < "$mf"` - # Find all dependency output files, they are included files with - # $(DEPDIR) in their names. We invoke sed twice because it is the - # simplest approach to changing $(DEPDIR) to its actual value in the - # expansion. - for file in `sed -n " - s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \ - sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g' -e 's/\$U/'"$U"'/g'`; do - # Make sure the directory exists. - test -f "$dirpart/$file" && continue - fdir=`$as_dirname -- "$file" || + else + continue + fi + # Extract the definition of DEPDIR, am__include, and am__quote + # from the Makefile without running `make'. + DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"` + test -z "$DEPDIR" && continue + am__include=`sed -n 's/^am__include = //p' < "$mf"` + test -z "am__include" && continue + am__quote=`sed -n 's/^am__quote = //p' < "$mf"` + # When using ansi2knr, U may be empty or an underscore; expand it + U=`sed -n 's/^U = //p' < "$mf"` + # Find all dependency output files, they are included files with + # $(DEPDIR) in their names. We invoke sed twice because it is the + # simplest approach to changing $(DEPDIR) to its actual value in the + # expansion. + for file in `sed -n " + s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \ + sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g' -e 's/\$U/'"$U"'/g'`; do + # Make sure the directory exists. + test -f "$dirpart/$file" && continue + fdir=`$as_dirname -- "$file" || $as_expr X"$file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$file" : 'X\(//\)[^/]' \| \ X"$file" : 'X\(//\)$' \| \ X"$file" : 'X\(/\)' \| . 2>/dev/null || -echo X"$file" | - sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ - s//\1/ - q - } - /^X\(\/\/\)[^/].*/{ - s//\1/ - q - } - /^X\(\/\/\)$/{ - s//\1/ - q - } - /^X\(\/\).*/{ - s//\1/ - q - } - s/.*/./; q'` - { as_dir=$dirpart/$fdir - case $as_dir in #( - -*) as_dir=./$as_dir;; - esac - test -d "$as_dir" || { $as_mkdir_p && mkdir -p "$as_dir"; } || { - as_dirs= - while :; do - case $as_dir in #( - *\'*) as_qdir=`echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #( - *) as_qdir=$as_dir;; - esac - as_dirs="'$as_qdir' $as_dirs" - as_dir=`$as_dirname -- "$as_dir" || -$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ - X"$as_dir" : 'X\(//\)[^/]' \| \ - X"$as_dir" : 'X\(//\)$' \| \ - X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || -echo X"$as_dir" | +$as_echo X"$file" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q @@ -19062,16 +18500,12 @@ echo X"$as_dir" | q } s/.*/./; q'` - test -d "$as_dir" && break + as_dir=$dirpart/$fdir; as_fn_mkdir_p + # echo "creating $dirpart/$file" + echo '# dummy' > "$dirpart/$file" done - test -z "$as_dirs" || eval "mkdir $as_dirs" - } || test -d "$as_dir" || { { echo "$as_me:$LINENO: error: cannot create directory $as_dir" >&5 -echo "$as_me: error: cannot create directory $as_dir" >&2;} - { (exit 1); exit 1; }; }; } - # echo "creating $dirpart/$file" - echo '# dummy' > "$dirpart/$file" done -done +} ;; "libtool":C) @@ -19094,7 +18528,8 @@ done # NOTE: Changes made to this file will be lost: look at ltmain.sh. # # Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005, -# 2006, 2007, 2008 Free Software Foundation, Inc. +# 2006, 2007, 2008, 2009, 2010, 2011 Free Software +# Foundation, Inc. # Written by Gordon Matzigkeit, 1996 # # This file is part of GNU Libtool. @@ -19142,6 +18577,15 @@ pic_mode=$pic_mode # Whether or not to optimize for fast installation. fast_install=$enable_fast_install +# Shell to use when invoking shell scripts. +SHELL=$lt_SHELL + +# An echo program that protects backslashes. +ECHO=$lt_ECHO + +# The PATH separator for the build system. +PATH_SEPARATOR=$lt_PATH_SEPARATOR + # The host system. host_alias=$host_alias host=$host @@ -19191,20 +18635,42 @@ SP2NL=$lt_lt_SP2NL # turn newlines into spaces. NL2SP=$lt_lt_NL2SP -# How to create reloadable object files. -reload_flag=$lt_reload_flag -reload_cmds=$lt_reload_cmds +# convert \$build file names to \$host format. +to_host_file_cmd=$lt_cv_to_host_file_cmd + +# convert \$build files to toolchain format. +to_tool_file_cmd=$lt_cv_to_tool_file_cmd + +# An object symbol dumper. +OBJDUMP=$lt_OBJDUMP # Method to check whether dependent libraries are shared objects. deplibs_check_method=$lt_deplibs_check_method -# Command to use when deplibs_check_method == "file_magic". +# Command to use when deplibs_check_method = "file_magic". file_magic_cmd=$lt_file_magic_cmd +# How to find potential files when deplibs_check_method = "file_magic". +file_magic_glob=$lt_file_magic_glob + +# Find potential files using nocaseglob when deplibs_check_method = "file_magic". +want_nocaseglob=$lt_want_nocaseglob + +# DLL creation program. +DLLTOOL=$lt_DLLTOOL + +# Command to associate shared and link libraries. +sharedlib_from_linklib_cmd=$lt_sharedlib_from_linklib_cmd + # The archiver. AR=$lt_AR + +# Flags to create an archive. AR_FLAGS=$lt_AR_FLAGS +# How to feed a file listing to the archiver. +archiver_list_spec=$lt_archiver_list_spec + # A symbol stripping program. STRIP=$lt_STRIP @@ -19213,6 +18679,9 @@ RANLIB=$lt_RANLIB old_postinstall_cmds=$lt_old_postinstall_cmds old_postuninstall_cmds=$lt_old_postuninstall_cmds +# Whether to use a lock for old archive extraction. +lock_old_archive_extraction=$lock_old_archive_extraction + # A C compiler. LTCC=$lt_CC @@ -19231,14 +18700,14 @@ global_symbol_to_c_name_address=$lt_lt_cv_sys_global_symbol_to_c_name_address # Transform the output of nm in a C name address pair when lib prefix is needed. global_symbol_to_c_name_address_lib_prefix=$lt_lt_cv_sys_global_symbol_to_c_name_address_lib_prefix -# The name of the directory that contains temporary libtool files. -objdir=$objdir +# Specify filename containing input files for \$NM. +nm_file_list_spec=$lt_nm_file_list_spec -# Shell to use when invoking shell scripts. -SHELL=$lt_SHELL +# The root where to search for dependent libraries,and in which our libraries should be installed. +lt_sysroot=$lt_sysroot -# An echo program that does not interpret backslashes. -ECHO=$lt_ECHO +# The name of the directory that contains temporary libtool files. +objdir=$objdir # Used to examine libraries when file_magic_cmd begins with "file". MAGIC_CMD=$MAGIC_CMD @@ -19246,6 +18715,9 @@ MAGIC_CMD=$MAGIC_CMD # Must we lock files when doing compilation? need_locks=$lt_need_locks +# Manifest tool. +MANIFEST_TOOL=$lt_MANIFEST_TOOL + # Tool to manipulate archived DWARF debug symbol files on Mac OS X. DSYMUTIL=$lt_DSYMUTIL @@ -19302,6 +18774,9 @@ library_names_spec=$lt_library_names_spec # The coded name of the library, if different from the real name. soname_spec=$lt_soname_spec +# Permission mode override for installation of shared libraries. +install_override_mode=$lt_install_override_mode + # Command to use after installation of a shared archive. postinstall_cmds=$lt_postinstall_cmds @@ -19341,6 +18816,10 @@ striplib=$lt_striplib # The linker used to build libraries. LD=$lt_LD +# How to create reloadable object files. +reload_flag=$lt_reload_flag +reload_cmds=$lt_reload_cmds + # Commands used to build an old-style archive. old_archive_cmds=$lt_old_archive_cmds @@ -19353,12 +18832,12 @@ with_gcc=$GCC # Compiler flag to turn off builtin functions. no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag -# How to pass a linker flag through the compiler. -wl=$lt_lt_prog_compiler_wl - # Additional compiler flags for building library objects. pic_flag=$lt_lt_prog_compiler_pic +# How to pass a linker flag through the compiler. +wl=$lt_lt_prog_compiler_wl + # Compiler flag to prevent dynamic linking. link_static_flag=$lt_lt_prog_compiler_static @@ -19408,10 +18887,6 @@ no_undefined_flag=$lt_no_undefined_flag # This must work even if \$libdir does not exist hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec -# If ld is used when linking, flag to hardcode \$libdir into a binary -# during linking. This must work even if \$libdir does not exist. -hardcode_libdir_flag_spec_ld=$lt_hardcode_libdir_flag_spec_ld - # Whether we need a single "-rpath" flag with a separated argument. hardcode_libdir_separator=$lt_hardcode_libdir_separator @@ -19445,9 +18920,6 @@ inherit_rpath=$inherit_rpath # Whether libtool must link a program against all its dependency libraries. link_all_deplibs=$link_all_deplibs -# Fix the shell variable \$srcfile for the compiler. -fix_srcfile_path=$lt_fix_srcfile_path - # Set to "yes" if exported symbols are required. always_export_symbols=$always_export_symbols @@ -19463,6 +18935,9 @@ include_expsyms=$lt_include_expsyms # Commands necessary for linking programs (against libraries) with templates. prelink_cmds=$lt_prelink_cmds +# Commands necessary for finishing linking programs. +postlink_cmds=$lt_postlink_cmds + # Specify filename containing input files. file_list_spec=$lt_file_list_spec @@ -19509,212 +18984,169 @@ ltmain="$ac_aux_dir/ltmain.sh" # if finds mixed CR/LF and LF-only lines. Since sed operates in # text mode, it properly converts lines to CR/LF. This bash problem # is reportedly fixed, but why not run on old versions too? - sed '/^# Generated shell functions inserted here/q' "$ltmain" >> "$cfgfile" \ - || (rm -f "$cfgfile"; exit 1) - - case $xsi_shell in - yes) - cat << \_LT_EOF >> "$cfgfile" - -# func_dirname file append nondir_replacement -# Compute the dirname of FILE. If nonempty, add APPEND to the result, -# otherwise set result to NONDIR_REPLACEMENT. -func_dirname () -{ - case ${1} in - */*) func_dirname_result="${1%/*}${2}" ;; - * ) func_dirname_result="${3}" ;; - esac -} - -# func_basename file -func_basename () -{ - func_basename_result="${1##*/}" -} - -# func_dirname_and_basename file append nondir_replacement -# perform func_basename and func_dirname in a single function -# call: -# dirname: Compute the dirname of FILE. If nonempty, -# add APPEND to the result, otherwise set result -# to NONDIR_REPLACEMENT. -# value returned in "$func_dirname_result" -# basename: Compute filename of FILE. -# value retuned in "$func_basename_result" -# Implementation must be kept synchronized with func_dirname -# and func_basename. For efficiency, we do not delegate to -# those functions but instead duplicate the functionality here. -func_dirname_and_basename () -{ - case ${1} in - */*) func_dirname_result="${1%/*}${2}" ;; - * ) func_dirname_result="${3}" ;; - esac - func_basename_result="${1##*/}" -} - -# func_stripname prefix suffix name -# strip PREFIX and SUFFIX off of NAME. -# PREFIX and SUFFIX must not contain globbing or regex special -# characters, hashes, percent signs, but SUFFIX may contain a leading -# dot (in which case that matches only a dot). -func_stripname () -{ - # pdksh 5.2.14 does not do ${X%$Y} correctly if both X and Y are - # positional parameters, so assign one to ordinary parameter first. - func_stripname_result=${3} - func_stripname_result=${func_stripname_result#"${1}"} - func_stripname_result=${func_stripname_result%"${2}"} -} - -# func_opt_split -func_opt_split () -{ - func_opt_split_opt=${1%%=*} - func_opt_split_arg=${1#*=} -} - -# func_lo2o object -func_lo2o () -{ - case ${1} in - *.lo) func_lo2o_result=${1%.lo}.${objext} ;; - *) func_lo2o_result=${1} ;; - esac -} - -# func_xform libobj-or-source -func_xform () -{ - func_xform_result=${1%.*}.lo -} - -# func_arith arithmetic-term... -func_arith () -{ - func_arith_result=$(( $* )) -} - -# func_len string -# STRING may not start with a hyphen. -func_len () -{ - func_len_result=${#1} -} - -_LT_EOF - ;; - *) # Bourne compatible functions. - cat << \_LT_EOF >> "$cfgfile" - -# func_dirname file append nondir_replacement -# Compute the dirname of FILE. If nonempty, add APPEND to the result, -# otherwise set result to NONDIR_REPLACEMENT. -func_dirname () -{ - # Extract subdirectory from the argument. - func_dirname_result=`$ECHO "X${1}" | $Xsed -e "$dirname"` - if test "X$func_dirname_result" = "X${1}"; then - func_dirname_result="${3}" - else - func_dirname_result="$func_dirname_result${2}" - fi -} - -# func_basename file -func_basename () -{ - func_basename_result=`$ECHO "X${1}" | $Xsed -e "$basename"` -} - - -# func_stripname prefix suffix name -# strip PREFIX and SUFFIX off of NAME. -# PREFIX and SUFFIX must not contain globbing or regex special -# characters, hashes, percent signs, but SUFFIX may contain a leading -# dot (in which case that matches only a dot). -# func_strip_suffix prefix name -func_stripname () -{ - case ${2} in - .*) func_stripname_result=`$ECHO "X${3}" \ - | $Xsed -e "s%^${1}%%" -e "s%\\\\${2}\$%%"`;; - *) func_stripname_result=`$ECHO "X${3}" \ - | $Xsed -e "s%^${1}%%" -e "s%${2}\$%%"`;; - esac -} - -# sed scripts: -my_sed_long_opt='1s/^\(-[^=]*\)=.*/\1/;q' -my_sed_long_arg='1s/^-[^=]*=//' - -# func_opt_split -func_opt_split () -{ - func_opt_split_opt=`$ECHO "X${1}" | $Xsed -e "$my_sed_long_opt"` - func_opt_split_arg=`$ECHO "X${1}" | $Xsed -e "$my_sed_long_arg"` -} - -# func_lo2o object -func_lo2o () -{ - func_lo2o_result=`$ECHO "X${1}" | $Xsed -e "$lo2o"` -} - -# func_xform libobj-or-source -func_xform () -{ - func_xform_result=`$ECHO "X${1}" | $Xsed -e 's/\.[^.]*$/.lo/'` -} - -# func_arith arithmetic-term... -func_arith () -{ - func_arith_result=`expr "$@"` -} - -# func_len string -# STRING may not start with a hyphen. -func_len () -{ - func_len_result=`expr "$1" : ".*" 2>/dev/null || echo $max_cmd_len` -} - -_LT_EOF -esac - -case $lt_shell_append in - yes) - cat << \_LT_EOF >> "$cfgfile" - -# func_append var value -# Append VALUE to the end of shell variable VAR. -func_append () -{ - eval "$1+=\$2" -} -_LT_EOF - ;; - *) - cat << \_LT_EOF >> "$cfgfile" - -# func_append var value -# Append VALUE to the end of shell variable VAR. -func_append () -{ - eval "$1=\$$1\$2" -} - -_LT_EOF - ;; - esac - - - sed -n '/^# Generated shell functions inserted here/,$p' "$ltmain" >> "$cfgfile" \ - || (rm -f "$cfgfile"; exit 1) - - mv -f "$cfgfile" "$ofile" || + sed '$q' "$ltmain" >> "$cfgfile" \ + || (rm -f "$cfgfile"; exit 1) + + if test x"$xsi_shell" = xyes; then + sed -e '/^func_dirname ()$/,/^} # func_dirname /c\ +func_dirname ()\ +{\ +\ case ${1} in\ +\ */*) func_dirname_result="${1%/*}${2}" ;;\ +\ * ) func_dirname_result="${3}" ;;\ +\ esac\ +} # Extended-shell func_dirname implementation' "$cfgfile" > $cfgfile.tmp \ + && mv -f "$cfgfile.tmp" "$cfgfile" \ + || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") +test 0 -eq $? || _lt_function_replace_fail=: + + + sed -e '/^func_basename ()$/,/^} # func_basename /c\ +func_basename ()\ +{\ +\ func_basename_result="${1##*/}"\ +} # Extended-shell func_basename implementation' "$cfgfile" > $cfgfile.tmp \ + && mv -f "$cfgfile.tmp" "$cfgfile" \ + || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") +test 0 -eq $? || _lt_function_replace_fail=: + + + sed -e '/^func_dirname_and_basename ()$/,/^} # func_dirname_and_basename /c\ +func_dirname_and_basename ()\ +{\ +\ case ${1} in\ +\ */*) func_dirname_result="${1%/*}${2}" ;;\ +\ * ) func_dirname_result="${3}" ;;\ +\ esac\ +\ func_basename_result="${1##*/}"\ +} # Extended-shell func_dirname_and_basename implementation' "$cfgfile" > $cfgfile.tmp \ + && mv -f "$cfgfile.tmp" "$cfgfile" \ + || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") +test 0 -eq $? || _lt_function_replace_fail=: + + + sed -e '/^func_stripname ()$/,/^} # func_stripname /c\ +func_stripname ()\ +{\ +\ # pdksh 5.2.14 does not do ${X%$Y} correctly if both X and Y are\ +\ # positional parameters, so assign one to ordinary parameter first.\ +\ func_stripname_result=${3}\ +\ func_stripname_result=${func_stripname_result#"${1}"}\ +\ func_stripname_result=${func_stripname_result%"${2}"}\ +} # Extended-shell func_stripname implementation' "$cfgfile" > $cfgfile.tmp \ + && mv -f "$cfgfile.tmp" "$cfgfile" \ + || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") +test 0 -eq $? || _lt_function_replace_fail=: + + + sed -e '/^func_split_long_opt ()$/,/^} # func_split_long_opt /c\ +func_split_long_opt ()\ +{\ +\ func_split_long_opt_name=${1%%=*}\ +\ func_split_long_opt_arg=${1#*=}\ +} # Extended-shell func_split_long_opt implementation' "$cfgfile" > $cfgfile.tmp \ + && mv -f "$cfgfile.tmp" "$cfgfile" \ + || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") +test 0 -eq $? || _lt_function_replace_fail=: + + + sed -e '/^func_split_short_opt ()$/,/^} # func_split_short_opt /c\ +func_split_short_opt ()\ +{\ +\ func_split_short_opt_arg=${1#??}\ +\ func_split_short_opt_name=${1%"$func_split_short_opt_arg"}\ +} # Extended-shell func_split_short_opt implementation' "$cfgfile" > $cfgfile.tmp \ + && mv -f "$cfgfile.tmp" "$cfgfile" \ + || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") +test 0 -eq $? || _lt_function_replace_fail=: + + + sed -e '/^func_lo2o ()$/,/^} # func_lo2o /c\ +func_lo2o ()\ +{\ +\ case ${1} in\ +\ *.lo) func_lo2o_result=${1%.lo}.${objext} ;;\ +\ *) func_lo2o_result=${1} ;;\ +\ esac\ +} # Extended-shell func_lo2o implementation' "$cfgfile" > $cfgfile.tmp \ + && mv -f "$cfgfile.tmp" "$cfgfile" \ + || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") +test 0 -eq $? || _lt_function_replace_fail=: + + + sed -e '/^func_xform ()$/,/^} # func_xform /c\ +func_xform ()\ +{\ + func_xform_result=${1%.*}.lo\ +} # Extended-shell func_xform implementation' "$cfgfile" > $cfgfile.tmp \ + && mv -f "$cfgfile.tmp" "$cfgfile" \ + || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") +test 0 -eq $? || _lt_function_replace_fail=: + + + sed -e '/^func_arith ()$/,/^} # func_arith /c\ +func_arith ()\ +{\ + func_arith_result=$(( $* ))\ +} # Extended-shell func_arith implementation' "$cfgfile" > $cfgfile.tmp \ + && mv -f "$cfgfile.tmp" "$cfgfile" \ + || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") +test 0 -eq $? || _lt_function_replace_fail=: + + + sed -e '/^func_len ()$/,/^} # func_len /c\ +func_len ()\ +{\ + func_len_result=${#1}\ +} # Extended-shell func_len implementation' "$cfgfile" > $cfgfile.tmp \ + && mv -f "$cfgfile.tmp" "$cfgfile" \ + || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") +test 0 -eq $? || _lt_function_replace_fail=: + +fi + +if test x"$lt_shell_append" = xyes; then + sed -e '/^func_append ()$/,/^} # func_append /c\ +func_append ()\ +{\ + eval "${1}+=\\${2}"\ +} # Extended-shell func_append implementation' "$cfgfile" > $cfgfile.tmp \ + && mv -f "$cfgfile.tmp" "$cfgfile" \ + || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") +test 0 -eq $? || _lt_function_replace_fail=: + + + sed -e '/^func_append_quoted ()$/,/^} # func_append_quoted /c\ +func_append_quoted ()\ +{\ +\ func_quote_for_eval "${2}"\ +\ eval "${1}+=\\\\ \\$func_quote_for_eval_result"\ +} # Extended-shell func_append_quoted implementation' "$cfgfile" > $cfgfile.tmp \ + && mv -f "$cfgfile.tmp" "$cfgfile" \ + || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") +test 0 -eq $? || _lt_function_replace_fail=: + + + # Save a `func_append' function call where possible by direct use of '+=' + sed -e 's%func_append \([a-zA-Z_]\{1,\}\) "%\1+="%g' $cfgfile > $cfgfile.tmp \ + && mv -f "$cfgfile.tmp" "$cfgfile" \ + || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") + test 0 -eq $? || _lt_function_replace_fail=: +else + # Save a `func_append' function call even when '+=' is not available + sed -e 's%func_append \([a-zA-Z_]\{1,\}\) "%\1="$\1%g' $cfgfile > $cfgfile.tmp \ + && mv -f "$cfgfile.tmp" "$cfgfile" \ + || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") + test 0 -eq $? || _lt_function_replace_fail=: +fi + +if test x"$_lt_function_replace_fail" = x":"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Unable to substitute extended shell functions in $ofile" >&5 +$as_echo "$as_me: WARNING: Unable to substitute extended shell functions in $ofile" >&2;} +fi + + + mv -f "$cfgfile" "$ofile" || (rm -f "$ofile" && cp "$cfgfile" "$ofile" && rm -f "$cfgfile") chmod +x "$ofile" @@ -19726,6 +19158,10 @@ _LT_EOF # The linker used to build libraries. LD=$lt_LD_CXX +# How to create reloadable object files. +reload_flag=$lt_reload_flag_CXX +reload_cmds=$lt_reload_cmds_CXX + # Commands used to build an old-style archive. old_archive_cmds=$lt_old_archive_cmds_CXX @@ -19738,12 +19174,12 @@ with_gcc=$GCC_CXX # Compiler flag to turn off builtin functions. no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag_CXX -# How to pass a linker flag through the compiler. -wl=$lt_lt_prog_compiler_wl_CXX - # Additional compiler flags for building library objects. pic_flag=$lt_lt_prog_compiler_pic_CXX +# How to pass a linker flag through the compiler. +wl=$lt_lt_prog_compiler_wl_CXX + # Compiler flag to prevent dynamic linking. link_static_flag=$lt_lt_prog_compiler_static_CXX @@ -19793,10 +19229,6 @@ no_undefined_flag=$lt_no_undefined_flag_CXX # This must work even if \$libdir does not exist hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec_CXX -# If ld is used when linking, flag to hardcode \$libdir into a binary -# during linking. This must work even if \$libdir does not exist. -hardcode_libdir_flag_spec_ld=$lt_hardcode_libdir_flag_spec_ld_CXX - # Whether we need a single "-rpath" flag with a separated argument. hardcode_libdir_separator=$lt_hardcode_libdir_separator_CXX @@ -19830,9 +19262,6 @@ inherit_rpath=$inherit_rpath_CXX # Whether libtool must link a program against all its dependency libraries. link_all_deplibs=$link_all_deplibs_CXX -# Fix the shell variable \$srcfile for the compiler. -fix_srcfile_path=$lt_fix_srcfile_path_CXX - # Set to "yes" if exported symbols are required. always_export_symbols=$always_export_symbols_CXX @@ -19848,6 +19277,9 @@ include_expsyms=$lt_include_expsyms_CXX # Commands necessary for linking programs (against libraries) with templates. prelink_cmds=$lt_prelink_cmds_CXX +# Commands necessary for finishing linking programs. +postlink_cmds=$lt_postlink_cmds_CXX + # Specify filename containing input files. file_list_spec=$lt_file_list_spec_CXX @@ -19877,11 +19309,13 @@ _LT_EOF done # for ac_tag -{ (exit 0); exit 0; } +as_fn_exit 0 _ACEOF -chmod +x $CONFIG_STATUS ac_clean_files=$ac_clean_files_save +test $ac_write_fail = 0 || + as_fn_error $? "write failure creating $CONFIG_STATUS" "$LINENO" 5 + # configure is writing to config.log, and then calls config.status. # config.status does its own redirection, appending to config.log. @@ -19901,7 +19335,7 @@ if test "$no_create" != yes; then exec 5>>config.log # Use ||, not &&, to avoid exiting from the if with $? = 1, which # would make configure fail if this is the last instruction. - $ac_cs_success || { (exit 1); exit 1; } + $ac_cs_success || as_fn_exit 1 fi # @@ -19909,7 +19343,8 @@ fi # if test "$no_recursion" != yes; then - # Remove --cache-file and --srcdir arguments so they do not pile up. + # Remove --cache-file, --srcdir, and --disable-option-checking arguments + # so they do not pile up. ac_sub_configure_args= ac_prev= eval "set x $ac_configure_args" @@ -19938,11 +19373,13 @@ if test "$no_recursion" != yes; then ac_prev=prefix ;; -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*) ;; + --disable-option-checking) + ;; *) case $ac_arg in - *\'*) ac_arg=`echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;; + *\'*) ac_arg=`$as_echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;; esac - ac_sub_configure_args="$ac_sub_configure_args '$ac_arg'" ;; + as_fn_append ac_sub_configure_args " '$ac_arg'" ;; esac done @@ -19950,7 +19387,7 @@ if test "$no_recursion" != yes; then # in subdir configurations. ac_arg="--prefix=$prefix" case $ac_arg in - *\'*) ac_arg=`echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;; + *\'*) ac_arg=`$as_echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;; esac ac_sub_configure_args="'$ac_arg' $ac_sub_configure_args" @@ -19959,6 +19396,10 @@ if test "$no_recursion" != yes; then ac_sub_configure_args="--silent $ac_sub_configure_args" fi + # Always prepend --disable-option-checking to silence warnings, since + # different subdirs can have different --enable and --with options. + ac_sub_configure_args="--disable-option-checking $ac_sub_configure_args" + ac_popdir=`pwd` for ac_dir in : $subdirs; do test "x$ac_dir" = x: && continue @@ -19967,57 +19408,17 @@ if test "$no_recursion" != yes; then test -d "$srcdir/$ac_dir" || continue ac_msg="=== configuring in $ac_dir (`pwd`/$ac_dir)" - echo "$as_me:$LINENO: $ac_msg" >&5 - echo "$ac_msg" >&6 - { as_dir="$ac_dir" - case $as_dir in #( - -*) as_dir=./$as_dir;; - esac - test -d "$as_dir" || { $as_mkdir_p && mkdir -p "$as_dir"; } || { - as_dirs= - while :; do - case $as_dir in #( - *\'*) as_qdir=`echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #( - *) as_qdir=$as_dir;; - esac - as_dirs="'$as_qdir' $as_dirs" - as_dir=`$as_dirname -- "$as_dir" || -$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ - X"$as_dir" : 'X\(//\)[^/]' \| \ - X"$as_dir" : 'X\(//\)$' \| \ - X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || -echo X"$as_dir" | - sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ - s//\1/ - q - } - /^X\(\/\/\)[^/].*/{ - s//\1/ - q - } - /^X\(\/\/\)$/{ - s//\1/ - q - } - /^X\(\/\).*/{ - s//\1/ - q - } - s/.*/./; q'` - test -d "$as_dir" && break - done - test -z "$as_dirs" || eval "mkdir $as_dirs" - } || test -d "$as_dir" || { { echo "$as_me:$LINENO: error: cannot create directory $as_dir" >&5 -echo "$as_me: error: cannot create directory $as_dir" >&2;} - { (exit 1); exit 1; }; }; } + $as_echo "$as_me:${as_lineno-$LINENO}: $ac_msg" >&5 + $as_echo "$ac_msg" >&6 + as_dir="$ac_dir"; as_fn_mkdir_p ac_builddir=. case "$ac_dir" in .) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; *) - ac_dir_suffix=/`echo "$ac_dir" | sed 's,^\.[\\/],,'` + ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'` # A ".." for each directory in $ac_dir_suffix. - ac_top_builddir_sub=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,/..,g;s,/,,'` + ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` case $ac_top_builddir_sub in "") ac_top_builddir_sub=. ac_top_build_prefix= ;; *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; @@ -20056,8 +19457,8 @@ ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix # This should be Cygnus configure. ac_sub_configure=$ac_aux_dir/configure else - { echo "$as_me:$LINENO: WARNING: no configuration information is in $ac_dir" >&5 -echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2;} + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: no configuration information is in $ac_dir" >&5 +$as_echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2;} ac_sub_configure= fi @@ -20070,17 +19471,19 @@ echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2;} ac_sub_cache_file=$ac_top_build_prefix$cache_file ;; esac - { echo "$as_me:$LINENO: running $SHELL $ac_sub_configure $ac_sub_configure_args --cache-file=$ac_sub_cache_file --srcdir=$ac_srcdir" >&5 -echo "$as_me: running $SHELL $ac_sub_configure $ac_sub_configure_args --cache-file=$ac_sub_cache_file --srcdir=$ac_srcdir" >&6;} + { $as_echo "$as_me:${as_lineno-$LINENO}: running $SHELL $ac_sub_configure $ac_sub_configure_args --cache-file=$ac_sub_cache_file --srcdir=$ac_srcdir" >&5 +$as_echo "$as_me: running $SHELL $ac_sub_configure $ac_sub_configure_args --cache-file=$ac_sub_cache_file --srcdir=$ac_srcdir" >&6;} # The eval makes quoting arguments work. eval "\$SHELL \"\$ac_sub_configure\" $ac_sub_configure_args \ --cache-file=\"\$ac_sub_cache_file\" --srcdir=\"\$ac_srcdir\"" || - { { echo "$as_me:$LINENO: error: $ac_sub_configure failed for $ac_dir" >&5 -echo "$as_me: error: $ac_sub_configure failed for $ac_dir" >&2;} - { (exit 1); exit 1; }; } + as_fn_error $? "$ac_sub_configure failed for $ac_dir" "$LINENO" 5 fi cd "$ac_popdir" done fi +if test -n "$ac_unrecognized_opts" && test "$enable_option_checking" != no; then + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: unrecognized options: $ac_unrecognized_opts" >&5 +$as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2;} +fi diff --git a/cpp/thirdparty/protobuf-2.3.0/configure.ac b/cpp/thirdparty/protobuf-2.5.0/configure.ac similarity index 96% rename from cpp/thirdparty/protobuf-2.3.0/configure.ac rename to cpp/thirdparty/protobuf-2.5.0/configure.ac index 63322b416..b2325290d 100644 --- a/cpp/thirdparty/protobuf-2.3.0/configure.ac +++ b/cpp/thirdparty/protobuf-2.5.0/configure.ac @@ -12,8 +12,9 @@ AC_PREREQ(2.59) # In the SVN trunk, the version should always be the next anticipated release # version with the "-pre" suffix. (We used to use "-SNAPSHOT" but this pushed # the size of one file name in the dist tarfile over the 99-char limit.) -AC_INIT([Protocol Buffers],[2.3.0],[protobuf@googlegroups.com],[protobuf]) +AC_INIT([Protocol Buffers],[2.5.0],[protobuf@googlegroups.com],[protobuf]) +AM_MAINTAINER_MODE([enable]) AC_CONFIG_SRCDIR(src/google/protobuf/message.cc) AC_CONFIG_HEADERS([config.h]) @@ -89,12 +90,12 @@ AS_IF([test "$with_zlib" != no], [ # First check the zlib header version. AC_COMPILE_IFELSE( - AC_LANG_PROGRAM([[ + [AC_LANG_PROGRAM([[ #include #if !defined(ZLIB_VERNUM) || (ZLIB_VERNUM < 0x1204) # error zlib version too old #endif - ]], []), [ + ]], [])], [ AC_MSG_RESULT([ok (1.2.0.4 or later)]) # Also need to add -lz to the linker flags and make sure this succeeds. @@ -118,7 +119,7 @@ AM_CONDITIONAL([HAVE_ZLIB], [test $HAVE_ZLIB = 1]) AS_IF([test "$with_protoc" != "no"], [ PROTOC=$with_protoc - AS_IF([test "$with_protoc" == "yes"], [ + AS_IF([test "$with_protoc" = "yes"], [ # No argument given. Use system protoc. PROTOC=protoc ]) diff --git a/cpp/thirdparty/protobuf-2.3.0/gtest/build-aux/depcomp b/cpp/thirdparty/protobuf-2.5.0/depcomp similarity index 81% rename from cpp/thirdparty/protobuf-2.3.0/gtest/build-aux/depcomp rename to cpp/thirdparty/protobuf-2.5.0/depcomp index e5f9736c7..bd0ac0895 100755 --- a/cpp/thirdparty/protobuf-2.3.0/gtest/build-aux/depcomp +++ b/cpp/thirdparty/protobuf-2.5.0/depcomp @@ -1,10 +1,10 @@ #! /bin/sh # depcomp - compile a program generating dependencies as side-effects -scriptversion=2007-03-29.01 +scriptversion=2011-12-04.11; # UTC -# Copyright (C) 1999, 2000, 2003, 2004, 2005, 2006, 2007 Free Software -# Foundation, Inc. +# Copyright (C) 1999, 2000, 2003, 2004, 2005, 2006, 2007, 2009, 2010, +# 2011 Free Software Foundation, Inc. # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by @@ -17,9 +17,7 @@ scriptversion=2007-03-29.01 # GNU General Public License for more details. # You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA -# 02110-1301, USA. +# along with this program. If not, see . # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a @@ -46,7 +44,7 @@ Environment variables: object Object file output by `PROGRAMS ARGS'. DEPDIR directory where to store dependencies. depfile Dependency file to output. - tmpdepfile Temporary file to use when outputing dependencies. + tmpdepfile Temporary file to use when outputting dependencies. libtool Whether libtool is used (yes/no). Report bugs to . @@ -87,6 +85,23 @@ if test "$depmode" = dashXmstdout; then depmode=dashmstdout fi +cygpath_u="cygpath -u -f -" +if test "$depmode" = msvcmsys; then + # This is just like msvisualcpp but w/o cygpath translation. + # Just convert the backslash-escaped backslashes to single forward + # slashes to satisfy depend.m4 + cygpath_u='sed s,\\\\,/,g' + depmode=msvisualcpp +fi + +if test "$depmode" = msvc7msys; then + # This is just like msvc7 but w/o cygpath translation. + # Just convert the backslash-escaped backslashes to single forward + # slashes to satisfy depend.m4 + cygpath_u='sed s,\\\\,/,g' + depmode=msvc7 +fi + case "$depmode" in gcc3) ## gcc 3 implements dependency tracking that does exactly what @@ -151,10 +166,12 @@ gcc) ' < "$tmpdepfile" | ## Some versions of gcc put a space before the `:'. On the theory ## that the space means something, we add a space to the output as -## well. +## well. hp depmode also adds that space, but also prefixes the VPATH +## to the object. Take care to not repeat it in the output. ## Some versions of the HPUX 10.20 sed can't process this invocation ## correctly. Breaking it into two sed invocations is a workaround. - sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile" + sed -e 's/^\\$//' -e '/^$/d' -e "s|.*$object$||" -e '/:$/d' \ + | sed -e 's/$/ :/' >> "$depfile" rm -f "$tmpdepfile" ;; @@ -192,14 +209,14 @@ sgi) ' < "$tmpdepfile" \ | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' | \ tr ' -' ' ' >> $depfile - echo >> $depfile +' ' ' >> "$depfile" + echo >> "$depfile" # The second pass generates a dummy entry for each header file. tr ' ' ' ' < "$tmpdepfile" \ | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' -e 's/$/:/' \ - >> $depfile + >> "$depfile" else # The sourcefile does not contain any dependencies, so just # store a dummy comment line, to avoid errors with the Makefile @@ -328,7 +345,12 @@ hp2) if test -f "$tmpdepfile"; then sed -e "s,^.*\.[a-z]*:,$object:," "$tmpdepfile" > "$depfile" # Add `dependent.h:' lines. - sed -ne '2,${; s/^ *//; s/ \\*$//; s/$/:/; p;}' "$tmpdepfile" >> "$depfile" + sed -ne '2,${ + s/^ *// + s/ \\*$// + s/$/:/ + p + }' "$tmpdepfile" >> "$depfile" else echo "#dummy" > "$depfile" fi @@ -393,6 +415,52 @@ tru64) rm -f "$tmpdepfile" ;; +msvc7) + if test "$libtool" = yes; then + showIncludes=-Wc,-showIncludes + else + showIncludes=-showIncludes + fi + "$@" $showIncludes > "$tmpdepfile" + stat=$? + grep -v '^Note: including file: ' "$tmpdepfile" + if test "$stat" = 0; then : + else + rm -f "$tmpdepfile" + exit $stat + fi + rm -f "$depfile" + echo "$object : \\" > "$depfile" + # The first sed program below extracts the file names and escapes + # backslashes for cygpath. The second sed program outputs the file + # name when reading, but also accumulates all include files in the + # hold buffer in order to output them again at the end. This only + # works with sed implementations that can handle large buffers. + sed < "$tmpdepfile" -n ' +/^Note: including file: *\(.*\)/ { + s//\1/ + s/\\/\\\\/g + p +}' | $cygpath_u | sort -u | sed -n ' +s/ /\\ /g +s/\(.*\)/ \1 \\/p +s/.\(.*\) \\/\1:/ +H +$ { + s/.*/ / + G + p +}' >> "$depfile" + rm -f "$tmpdepfile" + ;; + +msvc7msys) + # This case exists only to let depend.m4 do its work. It works by + # looking at the text of this script. This case will never be run, + # since it is checked for above. + exit 1 + ;; + #nosideeffect) # This comment above is used by automake to tell side-effect # dependency tracking mechanisms from slower ones. @@ -404,7 +472,7 @@ dashmstdout) # Remove the call to Libtool. if test "$libtool" = yes; then - while test $1 != '--mode=compile'; do + while test "X$1" != 'X--mode=compile'; do shift done shift @@ -455,36 +523,45 @@ makedepend) "$@" || exit $? # Remove any Libtool call if test "$libtool" = yes; then - while test $1 != '--mode=compile'; do + while test "X$1" != 'X--mode=compile'; do shift done shift fi # X makedepend shift - cleared=no - for arg in "$@"; do + cleared=no eat=no + for arg + do case $cleared in no) set ""; shift cleared=yes ;; esac + if test $eat = yes; then + eat=no + continue + fi case "$arg" in -D*|-I*) set fnord "$@" "$arg"; shift ;; # Strip any option that makedepend may not understand. Remove # the object too, otherwise makedepend will parse it as a source file. + -arch) + eat=yes ;; -*|$object) ;; *) set fnord "$@" "$arg"; shift ;; esac done - obj_suffix="`echo $object | sed 's/^.*\././'`" + obj_suffix=`echo "$object" | sed 's/^.*\././'` touch "$tmpdepfile" ${MAKEDEPEND-makedepend} -o"$obj_suffix" -f"$tmpdepfile" "$@" rm -f "$depfile" - cat < "$tmpdepfile" > "$depfile" + # makedepend may prepend the VPATH from the source file name to the object. + # No need to regex-escape $object, excess matching of '.' is harmless. + sed "s|^.*\($object *:\)|\1|" "$tmpdepfile" > "$depfile" sed '1,2d' "$tmpdepfile" | tr ' ' ' ' | \ ## Some versions of the HPUX 10.20 sed can't process this invocation @@ -500,7 +577,7 @@ cpp) # Remove the call to Libtool. if test "$libtool" = yes; then - while test $1 != '--mode=compile'; do + while test "X$1" != 'X--mode=compile'; do shift done shift @@ -538,13 +615,27 @@ cpp) msvisualcpp) # Important note: in order to support this mode, a compiler *must* - # always write the preprocessed file to stdout, regardless of -o, - # because we must use -o when running libtool. + # always write the preprocessed file to stdout. "$@" || exit $? + + # Remove the call to Libtool. + if test "$libtool" = yes; then + while test "X$1" != 'X--mode=compile'; do + shift + done + shift + fi + IFS=" " for arg do case "$arg" in + -o) + shift + ;; + $object) + shift + ;; "-Gm"|"/Gm"|"-Gi"|"/Gi"|"-ZI"|"/ZI") set fnord "$@" shift @@ -557,16 +648,23 @@ msvisualcpp) ;; esac done - "$@" -E | - sed -n '/^#line [0-9][0-9]* "\([^"]*\)"/ s::echo "`cygpath -u \\"\1\\"`":p' | sort | uniq > "$tmpdepfile" + "$@" -E 2>/dev/null | + sed -n '/^#line [0-9][0-9]* "\([^"]*\)"/ s::\1:p' | $cygpath_u | sort -u > "$tmpdepfile" rm -f "$depfile" echo "$object : \\" > "$depfile" - . "$tmpdepfile" | sed 's% %\\ %g' | sed -n '/^\(.*\)$/ s:: \1 \\:p' >> "$depfile" + sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s:: \1 \\:p' >> "$depfile" echo " " >> "$depfile" - . "$tmpdepfile" | sed 's% %\\ %g' | sed -n '/^\(.*\)$/ s::\1\::p' >> "$depfile" + sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s::\1\::p' >> "$depfile" rm -f "$tmpdepfile" ;; +msvcmsys) + # This case exists only to let depend.m4 do its work. It works by + # looking at the text of this script. This case will never be run, + # since it is checked for above. + exit 1 + ;; + none) exec "$@" ;; @@ -585,5 +683,6 @@ exit 0 # eval: (add-hook 'write-file-hooks 'time-stamp) # time-stamp-start: "scriptversion=" # time-stamp-format: "%:y-%02m-%02d.%02H" -# time-stamp-end: "$" +# time-stamp-time-zone: "UTC" +# time-stamp-end: "; # UTC" # End: diff --git a/cpp/thirdparty/protobuf-2.3.0/editors/README.txt b/cpp/thirdparty/protobuf-2.5.0/editors/README.txt similarity index 100% rename from cpp/thirdparty/protobuf-2.3.0/editors/README.txt rename to cpp/thirdparty/protobuf-2.5.0/editors/README.txt diff --git a/cpp/thirdparty/protobuf-2.3.0/editors/proto.vim b/cpp/thirdparty/protobuf-2.5.0/editors/proto.vim similarity index 94% rename from cpp/thirdparty/protobuf-2.3.0/editors/proto.vim rename to cpp/thirdparty/protobuf-2.5.0/editors/proto.vim index 42f330751..2a25fa603 100644 --- a/cpp/thirdparty/protobuf-2.3.0/editors/proto.vim +++ b/cpp/thirdparty/protobuf-2.5.0/editors/proto.vim @@ -69,11 +69,10 @@ syn keyword pbBool true false syn match pbInt /-\?\<\d\+\>/ syn match pbInt /\<0[xX]\x+\>/ syn match pbFloat /\<-\?\d*\(\.\d*\)\?/ -" TODO: .proto also supports C-style block comments; -" see /usr/share/vim/vim70/syntax/c.vim for how it's done. +syn region pbComment start="\/\*" end="\*\/" contains=@pbCommentGrp syn region pbComment start="//" skip="\\$" end="$" keepend contains=@pbCommentGrp -syn region pbString start=/"/ skip=/\\"/ end=/"/ -syn region pbString start=/'/ skip=/\\'/ end=/'/ +syn region pbString start=/"/ skip=/\\./ end=/"/ +syn region pbString start=/'/ skip=/\\./ end=/'/ if version >= 508 || !exists("did_proto_syn_inits") if version < 508 diff --git a/cpp/thirdparty/protobuf-2.3.0/editors/protobuf-mode.el b/cpp/thirdparty/protobuf-2.5.0/editors/protobuf-mode.el similarity index 100% rename from cpp/thirdparty/protobuf-2.3.0/editors/protobuf-mode.el rename to cpp/thirdparty/protobuf-2.5.0/editors/protobuf-mode.el diff --git a/cpp/thirdparty/protobuf-2.3.0/examples/AddPerson.java b/cpp/thirdparty/protobuf-2.5.0/examples/AddPerson.java similarity index 92% rename from cpp/thirdparty/protobuf-2.3.0/examples/AddPerson.java rename to cpp/thirdparty/protobuf-2.5.0/examples/AddPerson.java index 4917684bc..ca5ac2734 100644 --- a/cpp/thirdparty/protobuf-2.3.0/examples/AddPerson.java +++ b/cpp/thirdparty/protobuf-2.5.0/examples/AddPerson.java @@ -70,8 +70,11 @@ class AddPerson { // Read the existing address book. try { FileInputStream input = new FileInputStream(args[0]); - addressBook.mergeFrom(input); - input.close(); + try { + addressBook.mergeFrom(input); + } finally { + try { input.close(); } catch (Throwable ignore) {} + } } catch (FileNotFoundException e) { System.out.println(args[0] + ": File not found. Creating a new file."); } @@ -83,7 +86,10 @@ class AddPerson { // Write the new address book back to disk. FileOutputStream output = new FileOutputStream(args[0]); - addressBook.build().writeTo(output); - output.close(); + try { + addressBook.build().writeTo(output); + } finally { + output.close(); + } } } diff --git a/cpp/thirdparty/protobuf-2.3.0/examples/ListPeople.java b/cpp/thirdparty/protobuf-2.5.0/examples/ListPeople.java similarity index 100% rename from cpp/thirdparty/protobuf-2.3.0/examples/ListPeople.java rename to cpp/thirdparty/protobuf-2.5.0/examples/ListPeople.java diff --git a/cpp/thirdparty/protobuf-2.3.0/examples/Makefile b/cpp/thirdparty/protobuf-2.5.0/examples/Makefile similarity index 100% rename from cpp/thirdparty/protobuf-2.3.0/examples/Makefile rename to cpp/thirdparty/protobuf-2.5.0/examples/Makefile diff --git a/cpp/thirdparty/protobuf-2.3.0/examples/README.txt b/cpp/thirdparty/protobuf-2.5.0/examples/README.txt similarity index 100% rename from cpp/thirdparty/protobuf-2.3.0/examples/README.txt rename to cpp/thirdparty/protobuf-2.5.0/examples/README.txt diff --git a/cpp/thirdparty/protobuf-2.3.0/examples/add_person.cc b/cpp/thirdparty/protobuf-2.5.0/examples/add_person.cc similarity index 100% rename from cpp/thirdparty/protobuf-2.3.0/examples/add_person.cc rename to cpp/thirdparty/protobuf-2.5.0/examples/add_person.cc diff --git a/cpp/thirdparty/protobuf-2.3.0/examples/add_person.py b/cpp/thirdparty/protobuf-2.5.0/examples/add_person.py similarity index 100% rename from cpp/thirdparty/protobuf-2.3.0/examples/add_person.py rename to cpp/thirdparty/protobuf-2.5.0/examples/add_person.py diff --git a/cpp/thirdparty/protobuf-2.3.0/examples/addressbook.proto b/cpp/thirdparty/protobuf-2.5.0/examples/addressbook.proto similarity index 100% rename from cpp/thirdparty/protobuf-2.3.0/examples/addressbook.proto rename to cpp/thirdparty/protobuf-2.5.0/examples/addressbook.proto diff --git a/cpp/thirdparty/protobuf-2.3.0/examples/list_people.cc b/cpp/thirdparty/protobuf-2.5.0/examples/list_people.cc similarity index 100% rename from cpp/thirdparty/protobuf-2.3.0/examples/list_people.cc rename to cpp/thirdparty/protobuf-2.5.0/examples/list_people.cc diff --git a/cpp/thirdparty/protobuf-2.3.0/examples/list_people.py b/cpp/thirdparty/protobuf-2.5.0/examples/list_people.py similarity index 100% rename from cpp/thirdparty/protobuf-2.3.0/examples/list_people.py rename to cpp/thirdparty/protobuf-2.5.0/examples/list_people.py diff --git a/cpp/thirdparty/protobuf-2.3.0/generate_descriptor_proto.sh b/cpp/thirdparty/protobuf-2.5.0/generate_descriptor_proto.sh similarity index 100% rename from cpp/thirdparty/protobuf-2.3.0/generate_descriptor_proto.sh rename to cpp/thirdparty/protobuf-2.5.0/generate_descriptor_proto.sh diff --git a/cpp/thirdparty/protobuf-2.3.0/gtest/CHANGES b/cpp/thirdparty/protobuf-2.5.0/gtest/CHANGES similarity index 53% rename from cpp/thirdparty/protobuf-2.3.0/gtest/CHANGES rename to cpp/thirdparty/protobuf-2.5.0/gtest/CHANGES index 1858f7f8b..591924583 100644 --- a/cpp/thirdparty/protobuf-2.3.0/gtest/CHANGES +++ b/cpp/thirdparty/protobuf-2.5.0/gtest/CHANGES @@ -1,3 +1,57 @@ +Changes for 1.6.0: + +* New feature: ADD_FAILURE_AT() for reporting a test failure at the + given source location -- useful for writing testing utilities. +* New feature: the universal value printer is moved from Google Mock + to Google Test. +* New feature: type parameters and value parameters are reported in + the XML report now. +* A gtest_disable_pthreads CMake option. +* Colored output works in GNU Screen sessions now. +* Parameters of value-parameterized tests are now printed in the + textual output. +* Failures from ad hoc test assertions run before RUN_ALL_TESTS() are + now correctly reported. +* Arguments of ASSERT_XY and EXPECT_XY no longer need to support << to + ostream. +* More complete handling of exceptions. +* GTEST_ASSERT_XY can be used instead of ASSERT_XY in case the latter + name is already used by another library. +* --gtest_catch_exceptions is now true by default, allowing a test + program to continue after an exception is thrown. +* Value-parameterized test fixtures can now derive from Test and + WithParamInterface separately, easing conversion of legacy tests. +* Death test messages are clearly marked to make them more + distinguishable from other messages. +* Compatibility fixes for Android, Google Native Client, MinGW, HP UX, + PowerPC, Lucid autotools, libCStd, Sun C++, Borland C++ Builder (Code Gear), + IBM XL C++ (Visual Age C++), and C++0x. +* Bug fixes and implementation clean-ups. +* Potentially incompatible changes: disables the harmful 'make install' + command in autotools. + +Changes for 1.5.0: + + * New feature: assertions can be safely called in multiple threads + where the pthreads library is available. + * New feature: predicates used inside EXPECT_TRUE() and friends + can now generate custom failure messages. + * New feature: Google Test can now be compiled as a DLL. + * New feature: fused source files are included. + * New feature: prints help when encountering unrecognized Google Test flags. + * Experimental feature: CMake build script (requires CMake 2.6.4+). + * Experimental feature: the Pump script for meta programming. + * double values streamed to an assertion are printed with enough precision + to differentiate any two different values. + * Google Test now works on Solaris and AIX. + * Build and test script improvements. + * Bug fixes and implementation clean-ups. + + Potentially breaking changes: + + * Stopped supporting VC++ 7.1 with exceptions disabled. + * Dropped support for 'make install'. + Changes for 1.4.0: * New feature: the event listener API diff --git a/cpp/thirdparty/protobuf-2.5.0/gtest/CMakeLists.txt b/cpp/thirdparty/protobuf-2.5.0/gtest/CMakeLists.txt new file mode 100644 index 000000000..64527f74c --- /dev/null +++ b/cpp/thirdparty/protobuf-2.5.0/gtest/CMakeLists.txt @@ -0,0 +1,250 @@ +######################################################################## +# CMake build script for Google Test. +# +# To run the tests for Google Test itself on Linux, use 'make test' or +# ctest. You can select which tests to run using 'ctest -R regex'. +# For more options, run 'ctest --help'. + +# BUILD_SHARED_LIBS is a standard CMake variable, but we declare it here to +# make it prominent in the GUI. +option(BUILD_SHARED_LIBS "Build shared libraries (DLLs)." OFF) + +# When other libraries are using a shared version of runtime libraries, +# Google Test also has to use one. +option( + gtest_force_shared_crt + "Use shared (DLL) run-time lib even when Google Test is built as static lib." + OFF) + +option(gtest_build_tests "Build all of gtest's own tests." OFF) + +option(gtest_build_samples "Build gtest's sample programs." OFF) + +option(gtest_disable_pthreads "Disable uses of pthreads in gtest." OFF) + +# Defines pre_project_set_up_hermetic_build() and set_up_hermetic_build(). +include(cmake/hermetic_build.cmake OPTIONAL) + +if (COMMAND pre_project_set_up_hermetic_build) + pre_project_set_up_hermetic_build() +endif() + +######################################################################## +# +# Project-wide settings + +# Name of the project. +# +# CMake files in this project can refer to the root source directory +# as ${gtest_SOURCE_DIR} and to the root binary directory as +# ${gtest_BINARY_DIR}. +# Language "C" is required for find_package(Threads). +project(gtest CXX C) +cmake_minimum_required(VERSION 2.6.2) + +if (COMMAND set_up_hermetic_build) + set_up_hermetic_build() +endif() + +# Define helper functions and macros used by Google Test. +include(cmake/internal_utils.cmake) + +config_compiler_and_linker() # Defined in internal_utils.cmake. + +# Where Google Test's .h files can be found. +include_directories( + ${gtest_SOURCE_DIR}/include + ${gtest_SOURCE_DIR}) + +# Where Google Test's libraries can be found. +link_directories(${gtest_BINARY_DIR}/src) + +######################################################################## +# +# Defines the gtest & gtest_main libraries. User tests should link +# with one of them. + +# Google Test libraries. We build them using more strict warnings than what +# are used for other targets, to ensure that gtest can be compiled by a user +# aggressive about warnings. +cxx_library(gtest "${cxx_strict}" src/gtest-all.cc) +cxx_library(gtest_main "${cxx_strict}" src/gtest_main.cc) +target_link_libraries(gtest_main gtest) + +######################################################################## +# +# Samples on how to link user tests with gtest or gtest_main. +# +# They are not built by default. To build them, set the +# gtest_build_samples option to ON. You can do it by running ccmake +# or specifying the -Dbuild_gtest_samples=ON flag when running cmake. + +if (gtest_build_samples) + cxx_executable(sample1_unittest samples gtest_main samples/sample1.cc) + cxx_executable(sample2_unittest samples gtest_main samples/sample2.cc) + cxx_executable(sample3_unittest samples gtest_main) + cxx_executable(sample4_unittest samples gtest_main samples/sample4.cc) + cxx_executable(sample5_unittest samples gtest_main samples/sample1.cc) + cxx_executable(sample6_unittest samples gtest_main) + cxx_executable(sample7_unittest samples gtest_main) + cxx_executable(sample8_unittest samples gtest_main) + cxx_executable(sample9_unittest samples gtest) + cxx_executable(sample10_unittest samples gtest) +endif() + +######################################################################## +# +# Google Test's own tests. +# +# You can skip this section if you aren't interested in testing +# Google Test itself. +# +# The tests are not built by default. To build them, set the +# gtest_build_tests option to ON. You can do it by running ccmake +# or specifying the -Dgtest_build_tests=ON flag when running cmake. + +if (gtest_build_tests) + # This must be set in the root directory for the tests to be run by + # 'make test' or ctest. + enable_testing() + + ############################################################ + # C++ tests built with standard compiler flags. + + cxx_test(gtest-death-test_test gtest_main) + cxx_test(gtest_environment_test gtest) + cxx_test(gtest-filepath_test gtest_main) + cxx_test(gtest-linked_ptr_test gtest_main) + cxx_test(gtest-listener_test gtest_main) + cxx_test(gtest_main_unittest gtest_main) + cxx_test(gtest-message_test gtest_main) + cxx_test(gtest_no_test_unittest gtest) + cxx_test(gtest-options_test gtest_main) + cxx_test(gtest-param-test_test gtest + test/gtest-param-test2_test.cc) + cxx_test(gtest-port_test gtest_main) + cxx_test(gtest_pred_impl_unittest gtest_main) + cxx_test(gtest-printers_test gtest_main) + cxx_test(gtest_prod_test gtest_main + test/production.cc) + cxx_test(gtest_repeat_test gtest) + cxx_test(gtest_sole_header_test gtest_main) + cxx_test(gtest_stress_test gtest) + cxx_test(gtest-test-part_test gtest_main) + cxx_test(gtest_throw_on_failure_ex_test gtest) + cxx_test(gtest-typed-test_test gtest_main + test/gtest-typed-test2_test.cc) + cxx_test(gtest_unittest gtest_main) + cxx_test(gtest-unittest-api_test gtest) + + ############################################################ + # C++ tests built with non-standard compiler flags. + + # MSVC 7.1 does not support STL with exceptions disabled. + if (NOT MSVC OR MSVC_VERSION GREATER 1310) + cxx_library(gtest_no_exception "${cxx_no_exception}" + src/gtest-all.cc) + cxx_library(gtest_main_no_exception "${cxx_no_exception}" + src/gtest-all.cc src/gtest_main.cc) + endif() + cxx_library(gtest_main_no_rtti "${cxx_no_rtti}" + src/gtest-all.cc src/gtest_main.cc) + + cxx_test_with_flags(gtest-death-test_ex_nocatch_test + "${cxx_exception} -DGTEST_ENABLE_CATCH_EXCEPTIONS_=0" + gtest test/gtest-death-test_ex_test.cc) + cxx_test_with_flags(gtest-death-test_ex_catch_test + "${cxx_exception} -DGTEST_ENABLE_CATCH_EXCEPTIONS_=1" + gtest test/gtest-death-test_ex_test.cc) + + cxx_test_with_flags(gtest_no_rtti_unittest "${cxx_no_rtti}" + gtest_main_no_rtti test/gtest_unittest.cc) + + cxx_shared_library(gtest_dll "${cxx_default}" + src/gtest-all.cc src/gtest_main.cc) + + cxx_executable_with_flags(gtest_dll_test_ "${cxx_default}" + gtest_dll test/gtest_all_test.cc) + set_target_properties(gtest_dll_test_ + PROPERTIES + COMPILE_DEFINITIONS "GTEST_LINKED_AS_SHARED_LIBRARY=1") + + if (NOT MSVC OR NOT MSVC_VERSION EQUAL 1600) + # The C++ Standard specifies tuple_element. + # Yet MSVC 10's declares tuple_element. + # That declaration conflicts with our own standard-conforming + # tuple implementation. Therefore using our own tuple with + # MSVC 10 doesn't compile. + cxx_library(gtest_main_use_own_tuple "${cxx_use_own_tuple}" + src/gtest-all.cc src/gtest_main.cc) + + cxx_test_with_flags(gtest-tuple_test "${cxx_use_own_tuple}" + gtest_main_use_own_tuple test/gtest-tuple_test.cc) + + cxx_test_with_flags(gtest_use_own_tuple_test "${cxx_use_own_tuple}" + gtest_main_use_own_tuple + test/gtest-param-test_test.cc test/gtest-param-test2_test.cc) + endif() + + ############################################################ + # Python tests. + + cxx_executable(gtest_break_on_failure_unittest_ test gtest) + py_test(gtest_break_on_failure_unittest) + + # MSVC 7.1 does not support STL with exceptions disabled. + if (NOT MSVC OR MSVC_VERSION GREATER 1310) + cxx_executable_with_flags( + gtest_catch_exceptions_no_ex_test_ + "${cxx_no_exception}" + gtest_main_no_exception + test/gtest_catch_exceptions_test_.cc) + endif() + + cxx_executable_with_flags( + gtest_catch_exceptions_ex_test_ + "${cxx_exception}" + gtest_main + test/gtest_catch_exceptions_test_.cc) + py_test(gtest_catch_exceptions_test) + + cxx_executable(gtest_color_test_ test gtest) + py_test(gtest_color_test) + + cxx_executable(gtest_env_var_test_ test gtest) + py_test(gtest_env_var_test) + + cxx_executable(gtest_filter_unittest_ test gtest) + py_test(gtest_filter_unittest) + + cxx_executable(gtest_help_test_ test gtest_main) + py_test(gtest_help_test) + + cxx_executable(gtest_list_tests_unittest_ test gtest) + py_test(gtest_list_tests_unittest) + + cxx_executable(gtest_output_test_ test gtest) + py_test(gtest_output_test) + + cxx_executable(gtest_shuffle_test_ test gtest) + py_test(gtest_shuffle_test) + + # MSVC 7.1 does not support STL with exceptions disabled. + if (NOT MSVC OR MSVC_VERSION GREATER 1310) + cxx_executable(gtest_throw_on_failure_test_ test gtest_no_exception) + set_target_properties(gtest_throw_on_failure_test_ + PROPERTIES + COMPILE_FLAGS "${cxx_no_exception}") + py_test(gtest_throw_on_failure_test) + endif() + + cxx_executable(gtest_uninitialized_test_ test gtest) + py_test(gtest_uninitialized_test) + + cxx_executable(gtest_xml_outfile1_test_ test gtest_main) + cxx_executable(gtest_xml_outfile2_test_ test gtest_main) + py_test(gtest_xml_outfiles_test) + + cxx_executable(gtest_xml_output_unittest_ test gtest) + py_test(gtest_xml_output_unittest) +endif() diff --git a/cpp/thirdparty/protobuf-2.3.0/gtest/CONTRIBUTORS b/cpp/thirdparty/protobuf-2.5.0/gtest/CONTRIBUTORS similarity index 89% rename from cpp/thirdparty/protobuf-2.3.0/gtest/CONTRIBUTORS rename to cpp/thirdparty/protobuf-2.5.0/gtest/CONTRIBUTORS index 40ce6c879..feae2fc04 100644 --- a/cpp/thirdparty/protobuf-2.3.0/gtest/CONTRIBUTORS +++ b/cpp/thirdparty/protobuf-2.5.0/gtest/CONTRIBUTORS @@ -11,13 +11,17 @@ Chris Prince Chris Taylor Dan Egnor Eric Roman +Hady Zalek Jeffrey Yasskin Jói Sigurðsson Keir Mierle Keith Ray Kenton Varda +Manuel Klimek Markus Heule Mika Raento +Miklós Fazekas +Pasi Valminen Patrick Hanna Patrick Riley Peter Kaminski diff --git a/cpp/thirdparty/protobuf-2.3.0/gtest/COPYING b/cpp/thirdparty/protobuf-2.5.0/gtest/LICENSE similarity index 100% rename from cpp/thirdparty/protobuf-2.3.0/gtest/COPYING rename to cpp/thirdparty/protobuf-2.5.0/gtest/LICENSE diff --git a/cpp/thirdparty/protobuf-2.5.0/gtest/Makefile.am b/cpp/thirdparty/protobuf-2.5.0/gtest/Makefile.am new file mode 100644 index 000000000..788c475f6 --- /dev/null +++ b/cpp/thirdparty/protobuf-2.5.0/gtest/Makefile.am @@ -0,0 +1,305 @@ +# Automake file + +ACLOCAL_AMFLAGS = -I m4 + +# Nonstandard package files for distribution +EXTRA_DIST = \ + CHANGES \ + CONTRIBUTORS \ + LICENSE \ + include/gtest/gtest-param-test.h.pump \ + include/gtest/internal/gtest-param-util-generated.h.pump \ + include/gtest/internal/gtest-tuple.h.pump \ + include/gtest/internal/gtest-type-util.h.pump \ + make/Makefile \ + scripts/fuse_gtest_files.py \ + scripts/gen_gtest_pred_impl.py \ + scripts/pump.py \ + scripts/test/Makefile + +# gtest source files that we don't compile directly. They are +# #included by gtest-all.cc. +GTEST_SRC = \ + src/gtest-death-test.cc \ + src/gtest-filepath.cc \ + src/gtest-internal-inl.h \ + src/gtest-port.cc \ + src/gtest-printers.cc \ + src/gtest-test-part.cc \ + src/gtest-typed-test.cc \ + src/gtest.cc + +EXTRA_DIST += $(GTEST_SRC) + +# Sample files that we don't compile. +EXTRA_DIST += \ + samples/prime_tables.h \ + samples/sample2_unittest.cc \ + samples/sample3_unittest.cc \ + samples/sample4_unittest.cc \ + samples/sample5_unittest.cc \ + samples/sample6_unittest.cc \ + samples/sample7_unittest.cc \ + samples/sample8_unittest.cc \ + samples/sample9_unittest.cc + +# C++ test files that we don't compile directly. +EXTRA_DIST += \ + test/gtest-death-test_ex_test.cc \ + test/gtest-death-test_test.cc \ + test/gtest-filepath_test.cc \ + test/gtest-linked_ptr_test.cc \ + test/gtest-listener_test.cc \ + test/gtest-message_test.cc \ + test/gtest-options_test.cc \ + test/gtest-param-test2_test.cc \ + test/gtest-param-test2_test.cc \ + test/gtest-param-test_test.cc \ + test/gtest-param-test_test.cc \ + test/gtest-param-test_test.h \ + test/gtest-port_test.cc \ + test/gtest-printers_test.cc \ + test/gtest-test-part_test.cc \ + test/gtest-tuple_test.cc \ + test/gtest-typed-test2_test.cc \ + test/gtest-typed-test_test.cc \ + test/gtest-typed-test_test.h \ + test/gtest-unittest-api_test.cc \ + test/gtest_break_on_failure_unittest_.cc \ + test/gtest_catch_exceptions_test_.cc \ + test/gtest_color_test_.cc \ + test/gtest_env_var_test_.cc \ + test/gtest_environment_test.cc \ + test/gtest_filter_unittest_.cc \ + test/gtest_help_test_.cc \ + test/gtest_list_tests_unittest_.cc \ + test/gtest_main_unittest.cc \ + test/gtest_no_test_unittest.cc \ + test/gtest_output_test_.cc \ + test/gtest_pred_impl_unittest.cc \ + test/gtest_prod_test.cc \ + test/gtest_repeat_test.cc \ + test/gtest_shuffle_test_.cc \ + test/gtest_sole_header_test.cc \ + test/gtest_stress_test.cc \ + test/gtest_throw_on_failure_ex_test.cc \ + test/gtest_throw_on_failure_test_.cc \ + test/gtest_uninitialized_test_.cc \ + test/gtest_unittest.cc \ + test/gtest_unittest.cc \ + test/gtest_xml_outfile1_test_.cc \ + test/gtest_xml_outfile2_test_.cc \ + test/gtest_xml_output_unittest_.cc \ + test/production.cc \ + test/production.h + +# Python tests that we don't run. +EXTRA_DIST += \ + test/gtest_break_on_failure_unittest.py \ + test/gtest_catch_exceptions_test.py \ + test/gtest_color_test.py \ + test/gtest_env_var_test.py \ + test/gtest_filter_unittest.py \ + test/gtest_help_test.py \ + test/gtest_list_tests_unittest.py \ + test/gtest_output_test.py \ + test/gtest_output_test_golden_lin.txt \ + test/gtest_shuffle_test.py \ + test/gtest_test_utils.py \ + test/gtest_throw_on_failure_test.py \ + test/gtest_uninitialized_test.py \ + test/gtest_xml_outfiles_test.py \ + test/gtest_xml_output_unittest.py \ + test/gtest_xml_test_utils.py + +# CMake script +EXTRA_DIST += \ + CMakeLists.txt \ + cmake/internal_utils.cmake + +# MSVC project files +EXTRA_DIST += \ + msvc/gtest-md.sln \ + msvc/gtest-md.vcproj \ + msvc/gtest.sln \ + msvc/gtest.vcproj \ + msvc/gtest_main-md.vcproj \ + msvc/gtest_main.vcproj \ + msvc/gtest_prod_test-md.vcproj \ + msvc/gtest_prod_test.vcproj \ + msvc/gtest_unittest-md.vcproj \ + msvc/gtest_unittest.vcproj + +# xcode project files +EXTRA_DIST += \ + xcode/Config/DebugProject.xcconfig \ + xcode/Config/FrameworkTarget.xcconfig \ + xcode/Config/General.xcconfig \ + xcode/Config/ReleaseProject.xcconfig \ + xcode/Config/StaticLibraryTarget.xcconfig \ + xcode/Config/TestTarget.xcconfig \ + xcode/Resources/Info.plist \ + xcode/Scripts/runtests.sh \ + xcode/Scripts/versiongenerate.py \ + xcode/gtest.xcodeproj/project.pbxproj + +# xcode sample files +EXTRA_DIST += \ + xcode/Samples/FrameworkSample/Info.plist \ + xcode/Samples/FrameworkSample/WidgetFramework.xcodeproj/project.pbxproj \ + xcode/Samples/FrameworkSample/runtests.sh \ + xcode/Samples/FrameworkSample/widget.cc \ + xcode/Samples/FrameworkSample/widget.h \ + xcode/Samples/FrameworkSample/widget_test.cc + +# C++Builder project files +EXTRA_DIST += \ + codegear/gtest.cbproj \ + codegear/gtest.groupproj \ + codegear/gtest_all.cc \ + codegear/gtest_link.cc \ + codegear/gtest_main.cbproj \ + codegear/gtest_unittest.cbproj + +# Distribute and install M4 macro +m4datadir = $(datadir)/aclocal +m4data_DATA = m4/gtest.m4 +EXTRA_DIST += $(m4data_DATA) + +# We define the global AM_CPPFLAGS as everything we compile includes from these +# directories. +AM_CPPFLAGS = -I$(srcdir) -I$(srcdir)/include + +# Modifies compiler and linker flags for pthreads compatibility. +if HAVE_PTHREADS + AM_CXXFLAGS = @PTHREAD_CFLAGS@ -DGTEST_HAS_PTHREAD=1 + AM_LIBS = @PTHREAD_LIBS@ +else + AM_CXXFLAGS = -DGTEST_HAS_PTHREAD=0 +endif + +# Build rules for libraries. +lib_LTLIBRARIES = lib/libgtest.la lib/libgtest_main.la + +lib_libgtest_la_SOURCES = src/gtest-all.cc + +pkginclude_HEADERS = \ + include/gtest/gtest-death-test.h \ + include/gtest/gtest-message.h \ + include/gtest/gtest-param-test.h \ + include/gtest/gtest-printers.h \ + include/gtest/gtest-spi.h \ + include/gtest/gtest-test-part.h \ + include/gtest/gtest-typed-test.h \ + include/gtest/gtest.h \ + include/gtest/gtest_pred_impl.h \ + include/gtest/gtest_prod.h + +pkginclude_internaldir = $(pkgincludedir)/internal +pkginclude_internal_HEADERS = \ + include/gtest/internal/gtest-death-test-internal.h \ + include/gtest/internal/gtest-filepath.h \ + include/gtest/internal/gtest-internal.h \ + include/gtest/internal/gtest-linked_ptr.h \ + include/gtest/internal/gtest-param-util-generated.h \ + include/gtest/internal/gtest-param-util.h \ + include/gtest/internal/gtest-port.h \ + include/gtest/internal/gtest-string.h \ + include/gtest/internal/gtest-tuple.h \ + include/gtest/internal/gtest-type-util.h + +lib_libgtest_main_la_SOURCES = src/gtest_main.cc +lib_libgtest_main_la_LIBADD = lib/libgtest.la + +# Bulid rules for samples and tests. Automake's naming for some of +# these variables isn't terribly obvious, so this is a brief +# reference: +# +# TESTS -- Programs run automatically by "make check" +# check_PROGRAMS -- Programs built by "make check" but not necessarily run + +noinst_LTLIBRARIES = samples/libsamples.la + +samples_libsamples_la_SOURCES = \ + samples/sample1.cc \ + samples/sample1.h \ + samples/sample2.cc \ + samples/sample2.h \ + samples/sample3-inl.h \ + samples/sample4.cc \ + samples/sample4.h + +TESTS= +TESTS_ENVIRONMENT = GTEST_SOURCE_DIR="$(srcdir)/test" \ + GTEST_BUILD_DIR="$(top_builddir)/test" +check_PROGRAMS= + +# A simple sample on using gtest. +TESTS += samples/sample1_unittest +check_PROGRAMS += samples/sample1_unittest +samples_sample1_unittest_SOURCES = samples/sample1_unittest.cc +samples_sample1_unittest_LDADD = lib/libgtest_main.la \ + lib/libgtest.la \ + samples/libsamples.la + +# Another sample. It also verifies that libgtest works. +TESTS += samples/sample10_unittest +check_PROGRAMS += samples/sample10_unittest +samples_sample10_unittest_SOURCES = samples/sample10_unittest.cc +samples_sample10_unittest_LDADD = lib/libgtest.la + +# This tests most constructs of gtest and verifies that libgtest_main +# and libgtest work. +TESTS += test/gtest_all_test +check_PROGRAMS += test/gtest_all_test +test_gtest_all_test_SOURCES = test/gtest_all_test.cc +test_gtest_all_test_LDADD = lib/libgtest_main.la \ + lib/libgtest.la + +# Tests that fused gtest files compile and work. +FUSED_GTEST_SRC = \ + fused-src/gtest/gtest-all.cc \ + fused-src/gtest/gtest.h \ + fused-src/gtest/gtest_main.cc + +if HAVE_PYTHON +TESTS += test/fused_gtest_test +check_PROGRAMS += test/fused_gtest_test +test_fused_gtest_test_SOURCES = $(FUSED_GTEST_SRC) \ + samples/sample1.cc samples/sample1_unittest.cc +test_fused_gtest_test_CPPFLAGS = -I"$(srcdir)/fused-src" + +# Build rules for putting fused Google Test files into the distribution +# package. The user can also create those files by manually running +# scripts/fuse_gtest_files.py. +$(test_fused_gtest_test_SOURCES): fused-gtest + +fused-gtest: $(pkginclude_HEADERS) $(pkginclude_internal_HEADERS) \ + $(GTEST_SRC) src/gtest-all.cc src/gtest_main.cc \ + scripts/fuse_gtest_files.py + mkdir -p "$(srcdir)/fused-src" + chmod -R u+w "$(srcdir)/fused-src" + rm -f "$(srcdir)/fused-src/gtest/gtest-all.cc" + rm -f "$(srcdir)/fused-src/gtest/gtest.h" + "$(srcdir)/scripts/fuse_gtest_files.py" "$(srcdir)/fused-src" + cp -f "$(srcdir)/src/gtest_main.cc" "$(srcdir)/fused-src/gtest/" + +maintainer-clean-local: + rm -rf "$(srcdir)/fused-src" +endif + +# Death tests may produce core dumps in the build directory. In case +# this happens, clean them to keep distcleancheck happy. +CLEANFILES = core + +# Disables 'make install' as installing a compiled version of Google +# Test can lead to undefined behavior due to violation of the +# One-Definition Rule. + +install-exec-local: + echo "'make install' is dangerous and not supported. Instead, see README for how to integrate Google Test into your build system." + false + +install-data-local: + echo "'make install' is dangerous and not supported. Instead, see README for how to integrate Google Test into your build system." + false diff --git a/cpp/thirdparty/protobuf-2.5.0/gtest/Makefile.in b/cpp/thirdparty/protobuf-2.5.0/gtest/Makefile.in new file mode 100644 index 000000000..940934355 --- /dev/null +++ b/cpp/thirdparty/protobuf-2.5.0/gtest/Makefile.in @@ -0,0 +1,1360 @@ +# Makefile.in generated by automake 1.11.3 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +# 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software +# Foundation, Inc. +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ + +# Automake file + + + +VPATH = @srcdir@ +pkgdatadir = $(datadir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkglibexecdir = $(libexecdir)/@PACKAGE@ +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = @build@ +host_triplet = @host@ +TESTS = samples/sample1_unittest$(EXEEXT) \ + samples/sample10_unittest$(EXEEXT) \ + test/gtest_all_test$(EXEEXT) $(am__EXEEXT_1) +check_PROGRAMS = samples/sample1_unittest$(EXEEXT) \ + samples/sample10_unittest$(EXEEXT) \ + test/gtest_all_test$(EXEEXT) $(am__EXEEXT_1) +@HAVE_PYTHON_TRUE@am__append_1 = test/fused_gtest_test +@HAVE_PYTHON_TRUE@am__append_2 = test/fused_gtest_test +subdir = . +DIST_COMMON = README $(am__configure_deps) $(pkginclude_HEADERS) \ + $(pkginclude_internal_HEADERS) $(srcdir)/Makefile.am \ + $(srcdir)/Makefile.in $(top_srcdir)/build-aux/config.h.in \ + $(top_srcdir)/configure $(top_srcdir)/scripts/gtest-config.in \ + build-aux/config.guess build-aux/config.sub build-aux/depcomp \ + build-aux/install-sh build-aux/ltmain.sh build-aux/missing +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/m4/libtool.m4 \ + $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \ + $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \ + $(top_srcdir)/m4/acx_pthread.m4 $(top_srcdir)/configure.ac +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +am__CONFIG_DISTCLEAN_FILES = config.status config.cache config.log \ + configure.lineno config.status.lineno +mkinstalldirs = $(install_sh) -d +CONFIG_HEADER = $(top_builddir)/build-aux/config.h +CONFIG_CLEAN_FILES = scripts/gtest-config +CONFIG_CLEAN_VPATH_FILES = +am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; +am__vpath_adj = case $$p in \ + $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ + *) f=$$p;; \ + esac; +am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; +am__install_max = 40 +am__nobase_strip_setup = \ + srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` +am__nobase_strip = \ + for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" +am__nobase_list = $(am__nobase_strip_setup); \ + for p in $$list; do echo "$$p $$p"; done | \ + sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ + $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ + if (++n[$$2] == $(am__install_max)) \ + { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ + END { for (dir in files) print dir, files[dir] }' +am__base_list = \ + sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ + sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' +am__uninstall_files_from_dir = { \ + test -z "$$files" \ + || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ + || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ + $(am__cd) "$$dir" && rm -f $$files; }; \ + } +am__installdirs = "$(DESTDIR)$(libdir)" "$(DESTDIR)$(m4datadir)" \ + "$(DESTDIR)$(pkgincludedir)" \ + "$(DESTDIR)$(pkginclude_internaldir)" +LTLIBRARIES = $(lib_LTLIBRARIES) $(noinst_LTLIBRARIES) +lib_libgtest_la_LIBADD = +am__dirstamp = $(am__leading_dot)dirstamp +am_lib_libgtest_la_OBJECTS = src/gtest-all.lo +lib_libgtest_la_OBJECTS = $(am_lib_libgtest_la_OBJECTS) +lib_libgtest_main_la_DEPENDENCIES = lib/libgtest.la +am_lib_libgtest_main_la_OBJECTS = src/gtest_main.lo +lib_libgtest_main_la_OBJECTS = $(am_lib_libgtest_main_la_OBJECTS) +samples_libsamples_la_LIBADD = +am_samples_libsamples_la_OBJECTS = samples/sample1.lo \ + samples/sample2.lo samples/sample4.lo +samples_libsamples_la_OBJECTS = $(am_samples_libsamples_la_OBJECTS) +@HAVE_PYTHON_TRUE@am__EXEEXT_1 = test/fused_gtest_test$(EXEEXT) +am_samples_sample10_unittest_OBJECTS = \ + samples/sample10_unittest.$(OBJEXT) +samples_sample10_unittest_OBJECTS = \ + $(am_samples_sample10_unittest_OBJECTS) +samples_sample10_unittest_DEPENDENCIES = lib/libgtest.la +am_samples_sample1_unittest_OBJECTS = \ + samples/sample1_unittest.$(OBJEXT) +samples_sample1_unittest_OBJECTS = \ + $(am_samples_sample1_unittest_OBJECTS) +samples_sample1_unittest_DEPENDENCIES = lib/libgtest_main.la \ + lib/libgtest.la samples/libsamples.la +am__test_fused_gtest_test_SOURCES_DIST = fused-src/gtest/gtest-all.cc \ + fused-src/gtest/gtest.h fused-src/gtest/gtest_main.cc \ + samples/sample1.cc samples/sample1_unittest.cc +am__objects_1 = \ + fused-src/gtest/test_fused_gtest_test-gtest-all.$(OBJEXT) \ + fused-src/gtest/test_fused_gtest_test-gtest_main.$(OBJEXT) +@HAVE_PYTHON_TRUE@am_test_fused_gtest_test_OBJECTS = $(am__objects_1) \ +@HAVE_PYTHON_TRUE@ samples/test_fused_gtest_test-sample1.$(OBJEXT) \ +@HAVE_PYTHON_TRUE@ samples/test_fused_gtest_test-sample1_unittest.$(OBJEXT) +test_fused_gtest_test_OBJECTS = $(am_test_fused_gtest_test_OBJECTS) +test_fused_gtest_test_LDADD = $(LDADD) +am_test_gtest_all_test_OBJECTS = test/gtest_all_test.$(OBJEXT) +test_gtest_all_test_OBJECTS = $(am_test_gtest_all_test_OBJECTS) +test_gtest_all_test_DEPENDENCIES = lib/libgtest_main.la \ + lib/libgtest.la +DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)/build-aux +depcomp = $(SHELL) $(top_srcdir)/build-aux/depcomp +am__depfiles_maybe = depfiles +am__mv = mv -f +CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ + $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) +LTCXXCOMPILE = $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ + --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ + $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) +CXXLD = $(CXX) +CXXLINK = $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ + --mode=link $(CXXLD) $(AM_CXXFLAGS) $(CXXFLAGS) $(AM_LDFLAGS) \ + $(LDFLAGS) -o $@ +COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ + $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +LTCOMPILE = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ + --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ + $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +CCLD = $(CC) +LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ + --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \ + $(LDFLAGS) -o $@ +SOURCES = $(lib_libgtest_la_SOURCES) $(lib_libgtest_main_la_SOURCES) \ + $(samples_libsamples_la_SOURCES) \ + $(samples_sample10_unittest_SOURCES) \ + $(samples_sample1_unittest_SOURCES) \ + $(test_fused_gtest_test_SOURCES) \ + $(test_gtest_all_test_SOURCES) +DIST_SOURCES = $(lib_libgtest_la_SOURCES) \ + $(lib_libgtest_main_la_SOURCES) \ + $(samples_libsamples_la_SOURCES) \ + $(samples_sample10_unittest_SOURCES) \ + $(samples_sample1_unittest_SOURCES) \ + $(am__test_fused_gtest_test_SOURCES_DIST) \ + $(test_gtest_all_test_SOURCES) +DATA = $(m4data_DATA) +HEADERS = $(pkginclude_HEADERS) $(pkginclude_internal_HEADERS) +ETAGS = etags +CTAGS = ctags +am__tty_colors = \ +red=; grn=; lgn=; blu=; std= +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +distdir = $(PACKAGE)-$(VERSION) +top_distdir = $(distdir) +am__remove_distdir = \ + if test -d "$(distdir)"; then \ + find "$(distdir)" -type d ! -perm -200 -exec chmod u+w {} ';' \ + && rm -rf "$(distdir)" \ + || { sleep 5 && rm -rf "$(distdir)"; }; \ + else :; fi +DIST_ARCHIVES = $(distdir).tar.gz $(distdir).tar.bz2 $(distdir).zip +GZIP_ENV = --best +distuninstallcheck_listfiles = find . -type f -print +am__distuninstallcheck_listfiles = $(distuninstallcheck_listfiles) \ + | sed 's|^\./|$(prefix)/|' | grep -v '$(infodir)/dir$$' +distcleancheck_listfiles = find . -type f -print +ACLOCAL = @ACLOCAL@ +AMTAR = @AMTAR@ +AR = @AR@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +CC = @CC@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CXX = @CXX@ +CXXCPP = @CXXCPP@ +CXXDEPMODE = @CXXDEPMODE@ +CXXFLAGS = @CXXFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +DLLTOOL = @DLLTOOL@ +DSYMUTIL = @DSYMUTIL@ +DUMPBIN = @DUMPBIN@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +FGREP = @FGREP@ +GREP = @GREP@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +LD = @LD@ +LDFLAGS = @LDFLAGS@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LIBTOOL = @LIBTOOL@ +LIPO = @LIPO@ +LN_S = @LN_S@ +LTLIBOBJS = @LTLIBOBJS@ +MAKEINFO = @MAKEINFO@ +MANIFEST_TOOL = @MANIFEST_TOOL@ +MKDIR_P = @MKDIR_P@ +NM = @NM@ +NMEDIT = @NMEDIT@ +OBJDUMP = @OBJDUMP@ +OBJEXT = @OBJEXT@ +OTOOL = @OTOOL@ +OTOOL64 = @OTOOL64@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_URL = @PACKAGE_URL@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +PTHREAD_CC = @PTHREAD_CC@ +PTHREAD_CFLAGS = @PTHREAD_CFLAGS@ +PTHREAD_LIBS = @PTHREAD_LIBS@ +PYTHON = @PYTHON@ +RANLIB = @RANLIB@ +SED = @SED@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +STRIP = @STRIP@ +VERSION = @VERSION@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ +ac_ct_AR = @ac_ct_AR@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_CXX = @ac_ct_CXX@ +ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ +acx_pthread_config = @acx_pthread_config@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +builddir = @builddir@ +datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ +exec_prefix = @exec_prefix@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +htmldir = @htmldir@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localedir = @localedir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +srcdir = @srcdir@ +sysconfdir = @sysconfdir@ +target_alias = @target_alias@ +top_build_prefix = @top_build_prefix@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ +ACLOCAL_AMFLAGS = -I m4 + +# Nonstandard package files for distribution + +# Sample files that we don't compile. + +# C++ test files that we don't compile directly. + +# Python tests that we don't run. + +# CMake script + +# MSVC project files + +# xcode project files + +# xcode sample files + +# C++Builder project files +EXTRA_DIST = CHANGES CONTRIBUTORS LICENSE \ + include/gtest/gtest-param-test.h.pump \ + include/gtest/internal/gtest-param-util-generated.h.pump \ + include/gtest/internal/gtest-tuple.h.pump \ + include/gtest/internal/gtest-type-util.h.pump make/Makefile \ + scripts/fuse_gtest_files.py scripts/gen_gtest_pred_impl.py \ + scripts/pump.py scripts/test/Makefile $(GTEST_SRC) \ + samples/prime_tables.h samples/sample2_unittest.cc \ + samples/sample3_unittest.cc samples/sample4_unittest.cc \ + samples/sample5_unittest.cc samples/sample6_unittest.cc \ + samples/sample7_unittest.cc samples/sample8_unittest.cc \ + samples/sample9_unittest.cc test/gtest-death-test_ex_test.cc \ + test/gtest-death-test_test.cc test/gtest-filepath_test.cc \ + test/gtest-linked_ptr_test.cc test/gtest-listener_test.cc \ + test/gtest-message_test.cc test/gtest-options_test.cc \ + test/gtest-param-test2_test.cc test/gtest-param-test2_test.cc \ + test/gtest-param-test_test.cc test/gtest-param-test_test.cc \ + test/gtest-param-test_test.h test/gtest-port_test.cc \ + test/gtest-printers_test.cc test/gtest-test-part_test.cc \ + test/gtest-tuple_test.cc test/gtest-typed-test2_test.cc \ + test/gtest-typed-test_test.cc test/gtest-typed-test_test.h \ + test/gtest-unittest-api_test.cc \ + test/gtest_break_on_failure_unittest_.cc \ + test/gtest_catch_exceptions_test_.cc test/gtest_color_test_.cc \ + test/gtest_env_var_test_.cc test/gtest_environment_test.cc \ + test/gtest_filter_unittest_.cc test/gtest_help_test_.cc \ + test/gtest_list_tests_unittest_.cc test/gtest_main_unittest.cc \ + test/gtest_no_test_unittest.cc test/gtest_output_test_.cc \ + test/gtest_pred_impl_unittest.cc test/gtest_prod_test.cc \ + test/gtest_repeat_test.cc test/gtest_shuffle_test_.cc \ + test/gtest_sole_header_test.cc test/gtest_stress_test.cc \ + test/gtest_throw_on_failure_ex_test.cc \ + test/gtest_throw_on_failure_test_.cc \ + test/gtest_uninitialized_test_.cc test/gtest_unittest.cc \ + test/gtest_unittest.cc test/gtest_xml_outfile1_test_.cc \ + test/gtest_xml_outfile2_test_.cc \ + test/gtest_xml_output_unittest_.cc test/production.cc \ + test/production.h test/gtest_break_on_failure_unittest.py \ + test/gtest_catch_exceptions_test.py test/gtest_color_test.py \ + test/gtest_env_var_test.py test/gtest_filter_unittest.py \ + test/gtest_help_test.py test/gtest_list_tests_unittest.py \ + test/gtest_output_test.py \ + test/gtest_output_test_golden_lin.txt \ + test/gtest_shuffle_test.py test/gtest_test_utils.py \ + test/gtest_throw_on_failure_test.py \ + test/gtest_uninitialized_test.py \ + test/gtest_xml_outfiles_test.py \ + test/gtest_xml_output_unittest.py test/gtest_xml_test_utils.py \ + CMakeLists.txt cmake/internal_utils.cmake msvc/gtest-md.sln \ + msvc/gtest-md.vcproj msvc/gtest.sln msvc/gtest.vcproj \ + msvc/gtest_main-md.vcproj msvc/gtest_main.vcproj \ + msvc/gtest_prod_test-md.vcproj msvc/gtest_prod_test.vcproj \ + msvc/gtest_unittest-md.vcproj msvc/gtest_unittest.vcproj \ + xcode/Config/DebugProject.xcconfig \ + xcode/Config/FrameworkTarget.xcconfig \ + xcode/Config/General.xcconfig \ + xcode/Config/ReleaseProject.xcconfig \ + xcode/Config/StaticLibraryTarget.xcconfig \ + xcode/Config/TestTarget.xcconfig xcode/Resources/Info.plist \ + xcode/Scripts/runtests.sh xcode/Scripts/versiongenerate.py \ + xcode/gtest.xcodeproj/project.pbxproj \ + xcode/Samples/FrameworkSample/Info.plist \ + xcode/Samples/FrameworkSample/WidgetFramework.xcodeproj/project.pbxproj \ + xcode/Samples/FrameworkSample/runtests.sh \ + xcode/Samples/FrameworkSample/widget.cc \ + xcode/Samples/FrameworkSample/widget.h \ + xcode/Samples/FrameworkSample/widget_test.cc \ + codegear/gtest.cbproj codegear/gtest.groupproj \ + codegear/gtest_all.cc codegear/gtest_link.cc \ + codegear/gtest_main.cbproj codegear/gtest_unittest.cbproj \ + $(m4data_DATA) + +# gtest source files that we don't compile directly. They are +# #included by gtest-all.cc. +GTEST_SRC = \ + src/gtest-death-test.cc \ + src/gtest-filepath.cc \ + src/gtest-internal-inl.h \ + src/gtest-port.cc \ + src/gtest-printers.cc \ + src/gtest-test-part.cc \ + src/gtest-typed-test.cc \ + src/gtest.cc + + +# Distribute and install M4 macro +m4datadir = $(datadir)/aclocal +m4data_DATA = m4/gtest.m4 + +# We define the global AM_CPPFLAGS as everything we compile includes from these +# directories. +AM_CPPFLAGS = -I$(srcdir) -I$(srcdir)/include +@HAVE_PTHREADS_FALSE@AM_CXXFLAGS = -DGTEST_HAS_PTHREAD=0 + +# Modifies compiler and linker flags for pthreads compatibility. +@HAVE_PTHREADS_TRUE@AM_CXXFLAGS = @PTHREAD_CFLAGS@ -DGTEST_HAS_PTHREAD=1 +@HAVE_PTHREADS_TRUE@AM_LIBS = @PTHREAD_LIBS@ + +# Build rules for libraries. +lib_LTLIBRARIES = lib/libgtest.la lib/libgtest_main.la +lib_libgtest_la_SOURCES = src/gtest-all.cc +pkginclude_HEADERS = \ + include/gtest/gtest-death-test.h \ + include/gtest/gtest-message.h \ + include/gtest/gtest-param-test.h \ + include/gtest/gtest-printers.h \ + include/gtest/gtest-spi.h \ + include/gtest/gtest-test-part.h \ + include/gtest/gtest-typed-test.h \ + include/gtest/gtest.h \ + include/gtest/gtest_pred_impl.h \ + include/gtest/gtest_prod.h + +pkginclude_internaldir = $(pkgincludedir)/internal +pkginclude_internal_HEADERS = \ + include/gtest/internal/gtest-death-test-internal.h \ + include/gtest/internal/gtest-filepath.h \ + include/gtest/internal/gtest-internal.h \ + include/gtest/internal/gtest-linked_ptr.h \ + include/gtest/internal/gtest-param-util-generated.h \ + include/gtest/internal/gtest-param-util.h \ + include/gtest/internal/gtest-port.h \ + include/gtest/internal/gtest-string.h \ + include/gtest/internal/gtest-tuple.h \ + include/gtest/internal/gtest-type-util.h + +lib_libgtest_main_la_SOURCES = src/gtest_main.cc +lib_libgtest_main_la_LIBADD = lib/libgtest.la + +# Bulid rules for samples and tests. Automake's naming for some of +# these variables isn't terribly obvious, so this is a brief +# reference: +# +# TESTS -- Programs run automatically by "make check" +# check_PROGRAMS -- Programs built by "make check" but not necessarily run +noinst_LTLIBRARIES = samples/libsamples.la +samples_libsamples_la_SOURCES = \ + samples/sample1.cc \ + samples/sample1.h \ + samples/sample2.cc \ + samples/sample2.h \ + samples/sample3-inl.h \ + samples/sample4.cc \ + samples/sample4.h + +TESTS_ENVIRONMENT = GTEST_SOURCE_DIR="$(srcdir)/test" \ + GTEST_BUILD_DIR="$(top_builddir)/test" + +samples_sample1_unittest_SOURCES = samples/sample1_unittest.cc +samples_sample1_unittest_LDADD = lib/libgtest_main.la \ + lib/libgtest.la \ + samples/libsamples.la + +samples_sample10_unittest_SOURCES = samples/sample10_unittest.cc +samples_sample10_unittest_LDADD = lib/libgtest.la +test_gtest_all_test_SOURCES = test/gtest_all_test.cc +test_gtest_all_test_LDADD = lib/libgtest_main.la \ + lib/libgtest.la + + +# Tests that fused gtest files compile and work. +FUSED_GTEST_SRC = \ + fused-src/gtest/gtest-all.cc \ + fused-src/gtest/gtest.h \ + fused-src/gtest/gtest_main.cc + +@HAVE_PYTHON_TRUE@test_fused_gtest_test_SOURCES = $(FUSED_GTEST_SRC) \ +@HAVE_PYTHON_TRUE@ samples/sample1.cc samples/sample1_unittest.cc + +@HAVE_PYTHON_TRUE@test_fused_gtest_test_CPPFLAGS = -I"$(srcdir)/fused-src" + +# Death tests may produce core dumps in the build directory. In case +# this happens, clean them to keep distcleancheck happy. +CLEANFILES = core +all: all-am + +.SUFFIXES: +.SUFFIXES: .cc .lo .o .obj +am--refresh: Makefile + @: +$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + echo ' cd $(srcdir) && $(AUTOMAKE) --foreign'; \ + $(am__cd) $(srcdir) && $(AUTOMAKE) --foreign \ + && exit 0; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --foreign Makefile +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + echo ' $(SHELL) ./config.status'; \ + $(SHELL) ./config.status;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + $(SHELL) ./config.status --recheck + +$(top_srcdir)/configure: $(am__configure_deps) + $(am__cd) $(srcdir) && $(AUTOCONF) +$(ACLOCAL_M4): $(am__aclocal_m4_deps) + $(am__cd) $(srcdir) && $(ACLOCAL) $(ACLOCAL_AMFLAGS) +$(am__aclocal_m4_deps): + +build-aux/config.h: build-aux/stamp-h1 + @if test ! -f $@; then rm -f build-aux/stamp-h1; else :; fi + @if test ! -f $@; then $(MAKE) $(AM_MAKEFLAGS) build-aux/stamp-h1; else :; fi + +build-aux/stamp-h1: $(top_srcdir)/build-aux/config.h.in $(top_builddir)/config.status + @rm -f build-aux/stamp-h1 + cd $(top_builddir) && $(SHELL) ./config.status build-aux/config.h +$(top_srcdir)/build-aux/config.h.in: $(am__configure_deps) + ($(am__cd) $(top_srcdir) && $(AUTOHEADER)) + rm -f build-aux/stamp-h1 + touch $@ + +distclean-hdr: + -rm -f build-aux/config.h build-aux/stamp-h1 +scripts/gtest-config: $(top_builddir)/config.status $(top_srcdir)/scripts/gtest-config.in + cd $(top_builddir) && $(SHELL) ./config.status $@ +install-libLTLIBRARIES: $(lib_LTLIBRARIES) + @$(NORMAL_INSTALL) + test -z "$(libdir)" || $(MKDIR_P) "$(DESTDIR)$(libdir)" + @list='$(lib_LTLIBRARIES)'; test -n "$(libdir)" || list=; \ + list2=; for p in $$list; do \ + if test -f $$p; then \ + list2="$$list2 $$p"; \ + else :; fi; \ + done; \ + test -z "$$list2" || { \ + echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(libdir)'"; \ + $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(libdir)"; \ + } + +uninstall-libLTLIBRARIES: + @$(NORMAL_UNINSTALL) + @list='$(lib_LTLIBRARIES)'; test -n "$(libdir)" || list=; \ + for p in $$list; do \ + $(am__strip_dir) \ + echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f '$(DESTDIR)$(libdir)/$$f'"; \ + $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f "$(DESTDIR)$(libdir)/$$f"; \ + done + +clean-libLTLIBRARIES: + -test -z "$(lib_LTLIBRARIES)" || rm -f $(lib_LTLIBRARIES) + @list='$(lib_LTLIBRARIES)'; for p in $$list; do \ + dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \ + test "$$dir" != "$$p" || dir=.; \ + echo "rm -f \"$${dir}/so_locations\""; \ + rm -f "$${dir}/so_locations"; \ + done + +clean-noinstLTLIBRARIES: + -test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES) + @list='$(noinst_LTLIBRARIES)'; for p in $$list; do \ + dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \ + test "$$dir" != "$$p" || dir=.; \ + echo "rm -f \"$${dir}/so_locations\""; \ + rm -f "$${dir}/so_locations"; \ + done +src/$(am__dirstamp): + @$(MKDIR_P) src + @: > src/$(am__dirstamp) +src/$(DEPDIR)/$(am__dirstamp): + @$(MKDIR_P) src/$(DEPDIR) + @: > src/$(DEPDIR)/$(am__dirstamp) +src/gtest-all.lo: src/$(am__dirstamp) src/$(DEPDIR)/$(am__dirstamp) +lib/$(am__dirstamp): + @$(MKDIR_P) lib + @: > lib/$(am__dirstamp) +lib/libgtest.la: $(lib_libgtest_la_OBJECTS) $(lib_libgtest_la_DEPENDENCIES) $(EXTRA_lib_libgtest_la_DEPENDENCIES) lib/$(am__dirstamp) + $(CXXLINK) -rpath $(libdir) $(lib_libgtest_la_OBJECTS) $(lib_libgtest_la_LIBADD) $(LIBS) +src/gtest_main.lo: src/$(am__dirstamp) src/$(DEPDIR)/$(am__dirstamp) +lib/libgtest_main.la: $(lib_libgtest_main_la_OBJECTS) $(lib_libgtest_main_la_DEPENDENCIES) $(EXTRA_lib_libgtest_main_la_DEPENDENCIES) lib/$(am__dirstamp) + $(CXXLINK) -rpath $(libdir) $(lib_libgtest_main_la_OBJECTS) $(lib_libgtest_main_la_LIBADD) $(LIBS) +samples/$(am__dirstamp): + @$(MKDIR_P) samples + @: > samples/$(am__dirstamp) +samples/$(DEPDIR)/$(am__dirstamp): + @$(MKDIR_P) samples/$(DEPDIR) + @: > samples/$(DEPDIR)/$(am__dirstamp) +samples/sample1.lo: samples/$(am__dirstamp) \ + samples/$(DEPDIR)/$(am__dirstamp) +samples/sample2.lo: samples/$(am__dirstamp) \ + samples/$(DEPDIR)/$(am__dirstamp) +samples/sample4.lo: samples/$(am__dirstamp) \ + samples/$(DEPDIR)/$(am__dirstamp) +samples/libsamples.la: $(samples_libsamples_la_OBJECTS) $(samples_libsamples_la_DEPENDENCIES) $(EXTRA_samples_libsamples_la_DEPENDENCIES) samples/$(am__dirstamp) + $(CXXLINK) $(samples_libsamples_la_OBJECTS) $(samples_libsamples_la_LIBADD) $(LIBS) + +clean-checkPROGRAMS: + @list='$(check_PROGRAMS)'; test -n "$$list" || exit 0; \ + echo " rm -f" $$list; \ + rm -f $$list || exit $$?; \ + test -n "$(EXEEXT)" || exit 0; \ + list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \ + echo " rm -f" $$list; \ + rm -f $$list +samples/sample10_unittest.$(OBJEXT): samples/$(am__dirstamp) \ + samples/$(DEPDIR)/$(am__dirstamp) +samples/sample10_unittest$(EXEEXT): $(samples_sample10_unittest_OBJECTS) $(samples_sample10_unittest_DEPENDENCIES) $(EXTRA_samples_sample10_unittest_DEPENDENCIES) samples/$(am__dirstamp) + @rm -f samples/sample10_unittest$(EXEEXT) + $(CXXLINK) $(samples_sample10_unittest_OBJECTS) $(samples_sample10_unittest_LDADD) $(LIBS) +samples/sample1_unittest.$(OBJEXT): samples/$(am__dirstamp) \ + samples/$(DEPDIR)/$(am__dirstamp) +samples/sample1_unittest$(EXEEXT): $(samples_sample1_unittest_OBJECTS) $(samples_sample1_unittest_DEPENDENCIES) $(EXTRA_samples_sample1_unittest_DEPENDENCIES) samples/$(am__dirstamp) + @rm -f samples/sample1_unittest$(EXEEXT) + $(CXXLINK) $(samples_sample1_unittest_OBJECTS) $(samples_sample1_unittest_LDADD) $(LIBS) +fused-src/gtest/$(am__dirstamp): + @$(MKDIR_P) fused-src/gtest + @: > fused-src/gtest/$(am__dirstamp) +fused-src/gtest/$(DEPDIR)/$(am__dirstamp): + @$(MKDIR_P) fused-src/gtest/$(DEPDIR) + @: > fused-src/gtest/$(DEPDIR)/$(am__dirstamp) +fused-src/gtest/test_fused_gtest_test-gtest-all.$(OBJEXT): \ + fused-src/gtest/$(am__dirstamp) \ + fused-src/gtest/$(DEPDIR)/$(am__dirstamp) +fused-src/gtest/test_fused_gtest_test-gtest_main.$(OBJEXT): \ + fused-src/gtest/$(am__dirstamp) \ + fused-src/gtest/$(DEPDIR)/$(am__dirstamp) +samples/test_fused_gtest_test-sample1.$(OBJEXT): \ + samples/$(am__dirstamp) samples/$(DEPDIR)/$(am__dirstamp) +samples/test_fused_gtest_test-sample1_unittest.$(OBJEXT): \ + samples/$(am__dirstamp) samples/$(DEPDIR)/$(am__dirstamp) +test/$(am__dirstamp): + @$(MKDIR_P) test + @: > test/$(am__dirstamp) +test/fused_gtest_test$(EXEEXT): $(test_fused_gtest_test_OBJECTS) $(test_fused_gtest_test_DEPENDENCIES) $(EXTRA_test_fused_gtest_test_DEPENDENCIES) test/$(am__dirstamp) + @rm -f test/fused_gtest_test$(EXEEXT) + $(CXXLINK) $(test_fused_gtest_test_OBJECTS) $(test_fused_gtest_test_LDADD) $(LIBS) +test/$(DEPDIR)/$(am__dirstamp): + @$(MKDIR_P) test/$(DEPDIR) + @: > test/$(DEPDIR)/$(am__dirstamp) +test/gtest_all_test.$(OBJEXT): test/$(am__dirstamp) \ + test/$(DEPDIR)/$(am__dirstamp) +test/gtest_all_test$(EXEEXT): $(test_gtest_all_test_OBJECTS) $(test_gtest_all_test_DEPENDENCIES) $(EXTRA_test_gtest_all_test_DEPENDENCIES) test/$(am__dirstamp) + @rm -f test/gtest_all_test$(EXEEXT) + $(CXXLINK) $(test_gtest_all_test_OBJECTS) $(test_gtest_all_test_LDADD) $(LIBS) + +mostlyclean-compile: + -rm -f *.$(OBJEXT) + -rm -f fused-src/gtest/test_fused_gtest_test-gtest-all.$(OBJEXT) + -rm -f fused-src/gtest/test_fused_gtest_test-gtest_main.$(OBJEXT) + -rm -f samples/sample1.$(OBJEXT) + -rm -f samples/sample1.lo + -rm -f samples/sample10_unittest.$(OBJEXT) + -rm -f samples/sample1_unittest.$(OBJEXT) + -rm -f samples/sample2.$(OBJEXT) + -rm -f samples/sample2.lo + -rm -f samples/sample4.$(OBJEXT) + -rm -f samples/sample4.lo + -rm -f samples/test_fused_gtest_test-sample1.$(OBJEXT) + -rm -f samples/test_fused_gtest_test-sample1_unittest.$(OBJEXT) + -rm -f src/gtest-all.$(OBJEXT) + -rm -f src/gtest-all.lo + -rm -f src/gtest_main.$(OBJEXT) + -rm -f src/gtest_main.lo + -rm -f test/gtest_all_test.$(OBJEXT) + +distclean-compile: + -rm -f *.tab.c + +@AMDEP_TRUE@@am__include@ @am__quote@fused-src/gtest/$(DEPDIR)/test_fused_gtest_test-gtest-all.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@fused-src/gtest/$(DEPDIR)/test_fused_gtest_test-gtest_main.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@samples/$(DEPDIR)/sample1.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@samples/$(DEPDIR)/sample10_unittest.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@samples/$(DEPDIR)/sample1_unittest.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@samples/$(DEPDIR)/sample2.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@samples/$(DEPDIR)/sample4.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@samples/$(DEPDIR)/test_fused_gtest_test-sample1.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@samples/$(DEPDIR)/test_fused_gtest_test-sample1_unittest.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/gtest-all.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/gtest_main.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@test/$(DEPDIR)/gtest_all_test.Po@am__quote@ + +.cc.o: +@am__fastdepCXX_TRUE@ depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\ +@am__fastdepCXX_TRUE@ $(CXXCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ +@am__fastdepCXX_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(CXXCOMPILE) -c -o $@ $< + +.cc.obj: +@am__fastdepCXX_TRUE@ depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\ +@am__fastdepCXX_TRUE@ $(CXXCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\ +@am__fastdepCXX_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'` + +.cc.lo: +@am__fastdepCXX_TRUE@ depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.lo$$||'`;\ +@am__fastdepCXX_TRUE@ $(LTCXXCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ +@am__fastdepCXX_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Plo +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(LTCXXCOMPILE) -c -o $@ $< + +fused-src/gtest/test_fused_gtest_test-gtest-all.o: fused-src/gtest/gtest-all.cc +@am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(test_fused_gtest_test_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT fused-src/gtest/test_fused_gtest_test-gtest-all.o -MD -MP -MF fused-src/gtest/$(DEPDIR)/test_fused_gtest_test-gtest-all.Tpo -c -o fused-src/gtest/test_fused_gtest_test-gtest-all.o `test -f 'fused-src/gtest/gtest-all.cc' || echo '$(srcdir)/'`fused-src/gtest/gtest-all.cc +@am__fastdepCXX_TRUE@ $(am__mv) fused-src/gtest/$(DEPDIR)/test_fused_gtest_test-gtest-all.Tpo fused-src/gtest/$(DEPDIR)/test_fused_gtest_test-gtest-all.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='fused-src/gtest/gtest-all.cc' object='fused-src/gtest/test_fused_gtest_test-gtest-all.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(test_fused_gtest_test_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o fused-src/gtest/test_fused_gtest_test-gtest-all.o `test -f 'fused-src/gtest/gtest-all.cc' || echo '$(srcdir)/'`fused-src/gtest/gtest-all.cc + +fused-src/gtest/test_fused_gtest_test-gtest-all.obj: fused-src/gtest/gtest-all.cc +@am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(test_fused_gtest_test_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT fused-src/gtest/test_fused_gtest_test-gtest-all.obj -MD -MP -MF fused-src/gtest/$(DEPDIR)/test_fused_gtest_test-gtest-all.Tpo -c -o fused-src/gtest/test_fused_gtest_test-gtest-all.obj `if test -f 'fused-src/gtest/gtest-all.cc'; then $(CYGPATH_W) 'fused-src/gtest/gtest-all.cc'; else $(CYGPATH_W) '$(srcdir)/fused-src/gtest/gtest-all.cc'; fi` +@am__fastdepCXX_TRUE@ $(am__mv) fused-src/gtest/$(DEPDIR)/test_fused_gtest_test-gtest-all.Tpo fused-src/gtest/$(DEPDIR)/test_fused_gtest_test-gtest-all.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='fused-src/gtest/gtest-all.cc' object='fused-src/gtest/test_fused_gtest_test-gtest-all.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(test_fused_gtest_test_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o fused-src/gtest/test_fused_gtest_test-gtest-all.obj `if test -f 'fused-src/gtest/gtest-all.cc'; then $(CYGPATH_W) 'fused-src/gtest/gtest-all.cc'; else $(CYGPATH_W) '$(srcdir)/fused-src/gtest/gtest-all.cc'; fi` + +fused-src/gtest/test_fused_gtest_test-gtest_main.o: fused-src/gtest/gtest_main.cc +@am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(test_fused_gtest_test_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT fused-src/gtest/test_fused_gtest_test-gtest_main.o -MD -MP -MF fused-src/gtest/$(DEPDIR)/test_fused_gtest_test-gtest_main.Tpo -c -o fused-src/gtest/test_fused_gtest_test-gtest_main.o `test -f 'fused-src/gtest/gtest_main.cc' || echo '$(srcdir)/'`fused-src/gtest/gtest_main.cc +@am__fastdepCXX_TRUE@ $(am__mv) fused-src/gtest/$(DEPDIR)/test_fused_gtest_test-gtest_main.Tpo fused-src/gtest/$(DEPDIR)/test_fused_gtest_test-gtest_main.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='fused-src/gtest/gtest_main.cc' object='fused-src/gtest/test_fused_gtest_test-gtest_main.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(test_fused_gtest_test_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o fused-src/gtest/test_fused_gtest_test-gtest_main.o `test -f 'fused-src/gtest/gtest_main.cc' || echo '$(srcdir)/'`fused-src/gtest/gtest_main.cc + +fused-src/gtest/test_fused_gtest_test-gtest_main.obj: fused-src/gtest/gtest_main.cc +@am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(test_fused_gtest_test_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT fused-src/gtest/test_fused_gtest_test-gtest_main.obj -MD -MP -MF fused-src/gtest/$(DEPDIR)/test_fused_gtest_test-gtest_main.Tpo -c -o fused-src/gtest/test_fused_gtest_test-gtest_main.obj `if test -f 'fused-src/gtest/gtest_main.cc'; then $(CYGPATH_W) 'fused-src/gtest/gtest_main.cc'; else $(CYGPATH_W) '$(srcdir)/fused-src/gtest/gtest_main.cc'; fi` +@am__fastdepCXX_TRUE@ $(am__mv) fused-src/gtest/$(DEPDIR)/test_fused_gtest_test-gtest_main.Tpo fused-src/gtest/$(DEPDIR)/test_fused_gtest_test-gtest_main.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='fused-src/gtest/gtest_main.cc' object='fused-src/gtest/test_fused_gtest_test-gtest_main.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(test_fused_gtest_test_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o fused-src/gtest/test_fused_gtest_test-gtest_main.obj `if test -f 'fused-src/gtest/gtest_main.cc'; then $(CYGPATH_W) 'fused-src/gtest/gtest_main.cc'; else $(CYGPATH_W) '$(srcdir)/fused-src/gtest/gtest_main.cc'; fi` + +samples/test_fused_gtest_test-sample1.o: samples/sample1.cc +@am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(test_fused_gtest_test_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT samples/test_fused_gtest_test-sample1.o -MD -MP -MF samples/$(DEPDIR)/test_fused_gtest_test-sample1.Tpo -c -o samples/test_fused_gtest_test-sample1.o `test -f 'samples/sample1.cc' || echo '$(srcdir)/'`samples/sample1.cc +@am__fastdepCXX_TRUE@ $(am__mv) samples/$(DEPDIR)/test_fused_gtest_test-sample1.Tpo samples/$(DEPDIR)/test_fused_gtest_test-sample1.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='samples/sample1.cc' object='samples/test_fused_gtest_test-sample1.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(test_fused_gtest_test_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o samples/test_fused_gtest_test-sample1.o `test -f 'samples/sample1.cc' || echo '$(srcdir)/'`samples/sample1.cc + +samples/test_fused_gtest_test-sample1.obj: samples/sample1.cc +@am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(test_fused_gtest_test_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT samples/test_fused_gtest_test-sample1.obj -MD -MP -MF samples/$(DEPDIR)/test_fused_gtest_test-sample1.Tpo -c -o samples/test_fused_gtest_test-sample1.obj `if test -f 'samples/sample1.cc'; then $(CYGPATH_W) 'samples/sample1.cc'; else $(CYGPATH_W) '$(srcdir)/samples/sample1.cc'; fi` +@am__fastdepCXX_TRUE@ $(am__mv) samples/$(DEPDIR)/test_fused_gtest_test-sample1.Tpo samples/$(DEPDIR)/test_fused_gtest_test-sample1.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='samples/sample1.cc' object='samples/test_fused_gtest_test-sample1.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(test_fused_gtest_test_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o samples/test_fused_gtest_test-sample1.obj `if test -f 'samples/sample1.cc'; then $(CYGPATH_W) 'samples/sample1.cc'; else $(CYGPATH_W) '$(srcdir)/samples/sample1.cc'; fi` + +samples/test_fused_gtest_test-sample1_unittest.o: samples/sample1_unittest.cc +@am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(test_fused_gtest_test_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT samples/test_fused_gtest_test-sample1_unittest.o -MD -MP -MF samples/$(DEPDIR)/test_fused_gtest_test-sample1_unittest.Tpo -c -o samples/test_fused_gtest_test-sample1_unittest.o `test -f 'samples/sample1_unittest.cc' || echo '$(srcdir)/'`samples/sample1_unittest.cc +@am__fastdepCXX_TRUE@ $(am__mv) samples/$(DEPDIR)/test_fused_gtest_test-sample1_unittest.Tpo samples/$(DEPDIR)/test_fused_gtest_test-sample1_unittest.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='samples/sample1_unittest.cc' object='samples/test_fused_gtest_test-sample1_unittest.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(test_fused_gtest_test_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o samples/test_fused_gtest_test-sample1_unittest.o `test -f 'samples/sample1_unittest.cc' || echo '$(srcdir)/'`samples/sample1_unittest.cc + +samples/test_fused_gtest_test-sample1_unittest.obj: samples/sample1_unittest.cc +@am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(test_fused_gtest_test_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT samples/test_fused_gtest_test-sample1_unittest.obj -MD -MP -MF samples/$(DEPDIR)/test_fused_gtest_test-sample1_unittest.Tpo -c -o samples/test_fused_gtest_test-sample1_unittest.obj `if test -f 'samples/sample1_unittest.cc'; then $(CYGPATH_W) 'samples/sample1_unittest.cc'; else $(CYGPATH_W) '$(srcdir)/samples/sample1_unittest.cc'; fi` +@am__fastdepCXX_TRUE@ $(am__mv) samples/$(DEPDIR)/test_fused_gtest_test-sample1_unittest.Tpo samples/$(DEPDIR)/test_fused_gtest_test-sample1_unittest.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='samples/sample1_unittest.cc' object='samples/test_fused_gtest_test-sample1_unittest.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(test_fused_gtest_test_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o samples/test_fused_gtest_test-sample1_unittest.obj `if test -f 'samples/sample1_unittest.cc'; then $(CYGPATH_W) 'samples/sample1_unittest.cc'; else $(CYGPATH_W) '$(srcdir)/samples/sample1_unittest.cc'; fi` + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs + -rm -rf lib/.libs lib/_libs + -rm -rf samples/.libs samples/_libs + -rm -rf src/.libs src/_libs + -rm -rf test/.libs test/_libs + +distclean-libtool: + -rm -f libtool config.lt +install-m4dataDATA: $(m4data_DATA) + @$(NORMAL_INSTALL) + test -z "$(m4datadir)" || $(MKDIR_P) "$(DESTDIR)$(m4datadir)" + @list='$(m4data_DATA)'; test -n "$(m4datadir)" || list=; \ + for p in $$list; do \ + if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ + echo "$$d$$p"; \ + done | $(am__base_list) | \ + while read files; do \ + echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(m4datadir)'"; \ + $(INSTALL_DATA) $$files "$(DESTDIR)$(m4datadir)" || exit $$?; \ + done + +uninstall-m4dataDATA: + @$(NORMAL_UNINSTALL) + @list='$(m4data_DATA)'; test -n "$(m4datadir)" || list=; \ + files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ + dir='$(DESTDIR)$(m4datadir)'; $(am__uninstall_files_from_dir) +install-pkgincludeHEADERS: $(pkginclude_HEADERS) + @$(NORMAL_INSTALL) + test -z "$(pkgincludedir)" || $(MKDIR_P) "$(DESTDIR)$(pkgincludedir)" + @list='$(pkginclude_HEADERS)'; test -n "$(pkgincludedir)" || list=; \ + for p in $$list; do \ + if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ + echo "$$d$$p"; \ + done | $(am__base_list) | \ + while read files; do \ + echo " $(INSTALL_HEADER) $$files '$(DESTDIR)$(pkgincludedir)'"; \ + $(INSTALL_HEADER) $$files "$(DESTDIR)$(pkgincludedir)" || exit $$?; \ + done + +uninstall-pkgincludeHEADERS: + @$(NORMAL_UNINSTALL) + @list='$(pkginclude_HEADERS)'; test -n "$(pkgincludedir)" || list=; \ + files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ + dir='$(DESTDIR)$(pkgincludedir)'; $(am__uninstall_files_from_dir) +install-pkginclude_internalHEADERS: $(pkginclude_internal_HEADERS) + @$(NORMAL_INSTALL) + test -z "$(pkginclude_internaldir)" || $(MKDIR_P) "$(DESTDIR)$(pkginclude_internaldir)" + @list='$(pkginclude_internal_HEADERS)'; test -n "$(pkginclude_internaldir)" || list=; \ + for p in $$list; do \ + if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ + echo "$$d$$p"; \ + done | $(am__base_list) | \ + while read files; do \ + echo " $(INSTALL_HEADER) $$files '$(DESTDIR)$(pkginclude_internaldir)'"; \ + $(INSTALL_HEADER) $$files "$(DESTDIR)$(pkginclude_internaldir)" || exit $$?; \ + done + +uninstall-pkginclude_internalHEADERS: + @$(NORMAL_UNINSTALL) + @list='$(pkginclude_internal_HEADERS)'; test -n "$(pkginclude_internaldir)" || list=; \ + files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ + dir='$(DESTDIR)$(pkginclude_internaldir)'; $(am__uninstall_files_from_dir) + +ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + mkid -fID $$unique +tags: TAGS + +TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + set x; \ + here=`pwd`; \ + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + shift; \ + if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + if test $$# -gt 0; then \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + "$$@" $$unique; \ + else \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$unique; \ + fi; \ + fi +ctags: CTAGS +CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + test -z "$(CTAGS_ARGS)$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && $(am__cd) $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) "$$here" + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + +check-TESTS: $(TESTS) + @failed=0; all=0; xfail=0; xpass=0; skip=0; \ + srcdir=$(srcdir); export srcdir; \ + list=' $(TESTS) '; \ + $(am__tty_colors); \ + if test -n "$$list"; then \ + for tst in $$list; do \ + if test -f ./$$tst; then dir=./; \ + elif test -f $$tst; then dir=; \ + else dir="$(srcdir)/"; fi; \ + if $(TESTS_ENVIRONMENT) $${dir}$$tst; then \ + all=`expr $$all + 1`; \ + case " $(XFAIL_TESTS) " in \ + *[\ \ ]$$tst[\ \ ]*) \ + xpass=`expr $$xpass + 1`; \ + failed=`expr $$failed + 1`; \ + col=$$red; res=XPASS; \ + ;; \ + *) \ + col=$$grn; res=PASS; \ + ;; \ + esac; \ + elif test $$? -ne 77; then \ + all=`expr $$all + 1`; \ + case " $(XFAIL_TESTS) " in \ + *[\ \ ]$$tst[\ \ ]*) \ + xfail=`expr $$xfail + 1`; \ + col=$$lgn; res=XFAIL; \ + ;; \ + *) \ + failed=`expr $$failed + 1`; \ + col=$$red; res=FAIL; \ + ;; \ + esac; \ + else \ + skip=`expr $$skip + 1`; \ + col=$$blu; res=SKIP; \ + fi; \ + echo "$${col}$$res$${std}: $$tst"; \ + done; \ + if test "$$all" -eq 1; then \ + tests="test"; \ + All=""; \ + else \ + tests="tests"; \ + All="All "; \ + fi; \ + if test "$$failed" -eq 0; then \ + if test "$$xfail" -eq 0; then \ + banner="$$All$$all $$tests passed"; \ + else \ + if test "$$xfail" -eq 1; then failures=failure; else failures=failures; fi; \ + banner="$$All$$all $$tests behaved as expected ($$xfail expected $$failures)"; \ + fi; \ + else \ + if test "$$xpass" -eq 0; then \ + banner="$$failed of $$all $$tests failed"; \ + else \ + if test "$$xpass" -eq 1; then passes=pass; else passes=passes; fi; \ + banner="$$failed of $$all $$tests did not behave as expected ($$xpass unexpected $$passes)"; \ + fi; \ + fi; \ + dashes="$$banner"; \ + skipped=""; \ + if test "$$skip" -ne 0; then \ + if test "$$skip" -eq 1; then \ + skipped="($$skip test was not run)"; \ + else \ + skipped="($$skip tests were not run)"; \ + fi; \ + test `echo "$$skipped" | wc -c` -le `echo "$$banner" | wc -c` || \ + dashes="$$skipped"; \ + fi; \ + report=""; \ + if test "$$failed" -ne 0 && test -n "$(PACKAGE_BUGREPORT)"; then \ + report="Please report to $(PACKAGE_BUGREPORT)"; \ + test `echo "$$report" | wc -c` -le `echo "$$banner" | wc -c` || \ + dashes="$$report"; \ + fi; \ + dashes=`echo "$$dashes" | sed s/./=/g`; \ + if test "$$failed" -eq 0; then \ + col="$$grn"; \ + else \ + col="$$red"; \ + fi; \ + echo "$${col}$$dashes$${std}"; \ + echo "$${col}$$banner$${std}"; \ + test -z "$$skipped" || echo "$${col}$$skipped$${std}"; \ + test -z "$$report" || echo "$${col}$$report$${std}"; \ + echo "$${col}$$dashes$${std}"; \ + test "$$failed" -eq 0; \ + else :; fi + +distdir: $(DISTFILES) + $(am__remove_distdir) + test -d "$(distdir)" || mkdir "$(distdir)" + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ + else \ + test -f "$(distdir)/$$file" \ + || cp -p $$d/$$file "$(distdir)/$$file" \ + || exit 1; \ + fi; \ + done + -test -n "$(am__skip_mode_fix)" \ + || find "$(distdir)" -type d ! -perm -755 \ + -exec chmod u+rwx,go+rx {} \; -o \ + ! -type d ! -perm -444 -links 1 -exec chmod a+r {} \; -o \ + ! -type d ! -perm -400 -exec chmod a+r {} \; -o \ + ! -type d ! -perm -444 -exec $(install_sh) -c -m a+r {} {} \; \ + || chmod -R a+r "$(distdir)" +dist-gzip: distdir + tardir=$(distdir) && $(am__tar) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz + $(am__remove_distdir) +dist-bzip2: distdir + tardir=$(distdir) && $(am__tar) | BZIP2=$${BZIP2--9} bzip2 -c >$(distdir).tar.bz2 + $(am__remove_distdir) + +dist-lzip: distdir + tardir=$(distdir) && $(am__tar) | lzip -c $${LZIP_OPT--9} >$(distdir).tar.lz + $(am__remove_distdir) + +dist-lzma: distdir + tardir=$(distdir) && $(am__tar) | lzma -9 -c >$(distdir).tar.lzma + $(am__remove_distdir) + +dist-xz: distdir + tardir=$(distdir) && $(am__tar) | XZ_OPT=$${XZ_OPT--e} xz -c >$(distdir).tar.xz + $(am__remove_distdir) + +dist-tarZ: distdir + tardir=$(distdir) && $(am__tar) | compress -c >$(distdir).tar.Z + $(am__remove_distdir) + +dist-shar: distdir + shar $(distdir) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).shar.gz + $(am__remove_distdir) +dist-zip: distdir + -rm -f $(distdir).zip + zip -rq $(distdir).zip $(distdir) + $(am__remove_distdir) + +dist dist-all: distdir + tardir=$(distdir) && $(am__tar) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz + tardir=$(distdir) && $(am__tar) | BZIP2=$${BZIP2--9} bzip2 -c >$(distdir).tar.bz2 + -rm -f $(distdir).zip + zip -rq $(distdir).zip $(distdir) + $(am__remove_distdir) + +# This target untars the dist file and tries a VPATH configuration. Then +# it guarantees that the distribution is self-contained by making another +# tarfile. +distcheck: dist + case '$(DIST_ARCHIVES)' in \ + *.tar.gz*) \ + GZIP=$(GZIP_ENV) gzip -dc $(distdir).tar.gz | $(am__untar) ;;\ + *.tar.bz2*) \ + bzip2 -dc $(distdir).tar.bz2 | $(am__untar) ;;\ + *.tar.lzma*) \ + lzma -dc $(distdir).tar.lzma | $(am__untar) ;;\ + *.tar.lz*) \ + lzip -dc $(distdir).tar.lz | $(am__untar) ;;\ + *.tar.xz*) \ + xz -dc $(distdir).tar.xz | $(am__untar) ;;\ + *.tar.Z*) \ + uncompress -c $(distdir).tar.Z | $(am__untar) ;;\ + *.shar.gz*) \ + GZIP=$(GZIP_ENV) gzip -dc $(distdir).shar.gz | unshar ;;\ + *.zip*) \ + unzip $(distdir).zip ;;\ + esac + chmod -R a-w $(distdir); chmod a+w $(distdir) + mkdir $(distdir)/_build + mkdir $(distdir)/_inst + chmod a-w $(distdir) + test -d $(distdir)/_build || exit 0; \ + dc_install_base=`$(am__cd) $(distdir)/_inst && pwd | sed -e 's,^[^:\\/]:[\\/],/,'` \ + && dc_destdir="$${TMPDIR-/tmp}/am-dc-$$$$/" \ + && am__cwd=`pwd` \ + && $(am__cd) $(distdir)/_build \ + && ../configure --srcdir=.. --prefix="$$dc_install_base" \ + $(AM_DISTCHECK_CONFIGURE_FLAGS) \ + $(DISTCHECK_CONFIGURE_FLAGS) \ + && $(MAKE) $(AM_MAKEFLAGS) \ + && $(MAKE) $(AM_MAKEFLAGS) dvi \ + && $(MAKE) $(AM_MAKEFLAGS) check \ + && $(MAKE) $(AM_MAKEFLAGS) install \ + && $(MAKE) $(AM_MAKEFLAGS) installcheck \ + && $(MAKE) $(AM_MAKEFLAGS) uninstall \ + && $(MAKE) $(AM_MAKEFLAGS) distuninstallcheck_dir="$$dc_install_base" \ + distuninstallcheck \ + && chmod -R a-w "$$dc_install_base" \ + && ({ \ + (cd ../.. && umask 077 && mkdir "$$dc_destdir") \ + && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" install \ + && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" uninstall \ + && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" \ + distuninstallcheck_dir="$$dc_destdir" distuninstallcheck; \ + } || { rm -rf "$$dc_destdir"; exit 1; }) \ + && rm -rf "$$dc_destdir" \ + && $(MAKE) $(AM_MAKEFLAGS) dist \ + && rm -rf $(DIST_ARCHIVES) \ + && $(MAKE) $(AM_MAKEFLAGS) distcleancheck \ + && cd "$$am__cwd" \ + || exit 1 + $(am__remove_distdir) + @(echo "$(distdir) archives ready for distribution: "; \ + list='$(DIST_ARCHIVES)'; for i in $$list; do echo $$i; done) | \ + sed -e 1h -e 1s/./=/g -e 1p -e 1x -e '$$p' -e '$$x' +distuninstallcheck: + @test -n '$(distuninstallcheck_dir)' || { \ + echo 'ERROR: trying to run $@ with an empty' \ + '$$(distuninstallcheck_dir)' >&2; \ + exit 1; \ + }; \ + $(am__cd) '$(distuninstallcheck_dir)' || { \ + echo 'ERROR: cannot chdir into $(distuninstallcheck_dir)' >&2; \ + exit 1; \ + }; \ + test `$(am__distuninstallcheck_listfiles) | wc -l` -eq 0 \ + || { echo "ERROR: files left after uninstall:" ; \ + if test -n "$(DESTDIR)"; then \ + echo " (check DESTDIR support)"; \ + fi ; \ + $(distuninstallcheck_listfiles) ; \ + exit 1; } >&2 +distcleancheck: distclean + @if test '$(srcdir)' = . ; then \ + echo "ERROR: distcleancheck can only run from a VPATH build" ; \ + exit 1 ; \ + fi + @test `$(distcleancheck_listfiles) | wc -l` -eq 0 \ + || { echo "ERROR: files left in build directory after distclean:" ; \ + $(distcleancheck_listfiles) ; \ + exit 1; } >&2 +check-am: all-am + $(MAKE) $(AM_MAKEFLAGS) $(check_PROGRAMS) + $(MAKE) $(AM_MAKEFLAGS) check-TESTS +check: check-am +all-am: Makefile $(LTLIBRARIES) $(DATA) $(HEADERS) +installdirs: + for dir in "$(DESTDIR)$(libdir)" "$(DESTDIR)$(m4datadir)" "$(DESTDIR)$(pkgincludedir)" "$(DESTDIR)$(pkginclude_internaldir)"; do \ + test -z "$$dir" || $(MKDIR_P) "$$dir"; \ + done +install: install-am +install-exec: install-exec-am +install-data: install-data-am +uninstall: uninstall-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-am +install-strip: + if test -z '$(STRIP)'; then \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + install; \ + else \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ + fi +mostlyclean-generic: + +clean-generic: + -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES) + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) + -rm -f fused-src/gtest/$(DEPDIR)/$(am__dirstamp) + -rm -f fused-src/gtest/$(am__dirstamp) + -rm -f lib/$(am__dirstamp) + -rm -f samples/$(DEPDIR)/$(am__dirstamp) + -rm -f samples/$(am__dirstamp) + -rm -f src/$(DEPDIR)/$(am__dirstamp) + -rm -f src/$(am__dirstamp) + -rm -f test/$(DEPDIR)/$(am__dirstamp) + -rm -f test/$(am__dirstamp) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +@HAVE_PYTHON_FALSE@maintainer-clean-local: +clean: clean-am + +clean-am: clean-checkPROGRAMS clean-generic clean-libLTLIBRARIES \ + clean-libtool clean-noinstLTLIBRARIES mostlyclean-am + +distclean: distclean-am + -rm -f $(am__CONFIG_DISTCLEAN_FILES) + -rm -rf fused-src/gtest/$(DEPDIR) samples/$(DEPDIR) src/$(DEPDIR) test/$(DEPDIR) + -rm -f Makefile +distclean-am: clean-am distclean-compile distclean-generic \ + distclean-hdr distclean-libtool distclean-tags + +dvi: dvi-am + +dvi-am: + +html: html-am + +html-am: + +info: info-am + +info-am: + +install-data-am: install-data-local install-m4dataDATA \ + install-pkgincludeHEADERS install-pkginclude_internalHEADERS + +install-dvi: install-dvi-am + +install-dvi-am: + +install-exec-am: install-exec-local install-libLTLIBRARIES + +install-html: install-html-am + +install-html-am: + +install-info: install-info-am + +install-info-am: + +install-man: + +install-pdf: install-pdf-am + +install-pdf-am: + +install-ps: install-ps-am + +install-ps-am: + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -f $(am__CONFIG_DISTCLEAN_FILES) + -rm -rf $(top_srcdir)/autom4te.cache + -rm -rf fused-src/gtest/$(DEPDIR) samples/$(DEPDIR) src/$(DEPDIR) test/$(DEPDIR) + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic \ + maintainer-clean-local + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-compile mostlyclean-generic \ + mostlyclean-libtool + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: uninstall-libLTLIBRARIES uninstall-m4dataDATA \ + uninstall-pkgincludeHEADERS \ + uninstall-pkginclude_internalHEADERS + +.MAKE: check-am install-am install-strip + +.PHONY: CTAGS GTAGS all all-am am--refresh check check-TESTS check-am \ + clean clean-checkPROGRAMS clean-generic clean-libLTLIBRARIES \ + clean-libtool clean-noinstLTLIBRARIES ctags dist dist-all \ + dist-bzip2 dist-gzip dist-lzip dist-lzma dist-shar dist-tarZ \ + dist-xz dist-zip distcheck distclean distclean-compile \ + distclean-generic distclean-hdr distclean-libtool \ + distclean-tags distcleancheck distdir distuninstallcheck dvi \ + dvi-am html html-am info info-am install install-am \ + install-data install-data-am install-data-local install-dvi \ + install-dvi-am install-exec install-exec-am install-exec-local \ + install-html install-html-am install-info install-info-am \ + install-libLTLIBRARIES install-m4dataDATA install-man \ + install-pdf install-pdf-am install-pkgincludeHEADERS \ + install-pkginclude_internalHEADERS install-ps install-ps-am \ + install-strip installcheck installcheck-am installdirs \ + maintainer-clean maintainer-clean-generic \ + maintainer-clean-local mostlyclean mostlyclean-compile \ + mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ + tags uninstall uninstall-am uninstall-libLTLIBRARIES \ + uninstall-m4dataDATA uninstall-pkgincludeHEADERS \ + uninstall-pkginclude_internalHEADERS + + +# Build rules for putting fused Google Test files into the distribution +# package. The user can also create those files by manually running +# scripts/fuse_gtest_files.py. +@HAVE_PYTHON_TRUE@$(test_fused_gtest_test_SOURCES): fused-gtest + +@HAVE_PYTHON_TRUE@fused-gtest: $(pkginclude_HEADERS) $(pkginclude_internal_HEADERS) \ +@HAVE_PYTHON_TRUE@ $(GTEST_SRC) src/gtest-all.cc src/gtest_main.cc \ +@HAVE_PYTHON_TRUE@ scripts/fuse_gtest_files.py +@HAVE_PYTHON_TRUE@ mkdir -p "$(srcdir)/fused-src" +@HAVE_PYTHON_TRUE@ chmod -R u+w "$(srcdir)/fused-src" +@HAVE_PYTHON_TRUE@ rm -f "$(srcdir)/fused-src/gtest/gtest-all.cc" +@HAVE_PYTHON_TRUE@ rm -f "$(srcdir)/fused-src/gtest/gtest.h" +@HAVE_PYTHON_TRUE@ "$(srcdir)/scripts/fuse_gtest_files.py" "$(srcdir)/fused-src" +@HAVE_PYTHON_TRUE@ cp -f "$(srcdir)/src/gtest_main.cc" "$(srcdir)/fused-src/gtest/" + +@HAVE_PYTHON_TRUE@maintainer-clean-local: +@HAVE_PYTHON_TRUE@ rm -rf "$(srcdir)/fused-src" + +# Disables 'make install' as installing a compiled version of Google +# Test can lead to undefined behavior due to violation of the +# One-Definition Rule. + +install-exec-local: + echo "'make install' is dangerous and not supported. Instead, see README for how to integrate Google Test into your build system." + false + +install-data-local: + echo "'make install' is dangerous and not supported. Instead, see README for how to integrate Google Test into your build system." + false + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/cpp/thirdparty/protobuf-2.5.0/gtest/README b/cpp/thirdparty/protobuf-2.5.0/gtest/README new file mode 100644 index 000000000..17bf72f4a --- /dev/null +++ b/cpp/thirdparty/protobuf-2.5.0/gtest/README @@ -0,0 +1,434 @@ +Google C++ Testing Framework +============================ + +http://code.google.com/p/googletest/ + +Overview +-------- + +Google's framework for writing C++ tests on a variety of platforms +(Linux, Mac OS X, Windows, Windows CE, Symbian, etc). Based on the +xUnit architecture. Supports automatic test discovery, a rich set of +assertions, user-defined assertions, death tests, fatal and non-fatal +failures, various options for running the tests, and XML test report +generation. + +Please see the project page above for more information as well as the +mailing list for questions, discussions, and development. There is +also an IRC channel on OFTC (irc.oftc.net) #gtest available. Please +join us! + +Requirements for End Users +-------------------------- + +Google Test is designed to have fairly minimal requirements to build +and use with your projects, but there are some. Currently, we support +Linux, Windows, Mac OS X, and Cygwin. We will also make our best +effort to support other platforms (e.g. Solaris, AIX, and z/OS). +However, since core members of the Google Test project have no access +to these platforms, Google Test may have outstanding issues there. If +you notice any problems on your platform, please notify +googletestframework@googlegroups.com. Patches for fixing them are +even more welcome! + +### Linux Requirements ### + +These are the base requirements to build and use Google Test from a source +package (as described below): + * GNU-compatible Make or gmake + * POSIX-standard shell + * POSIX(-2) Regular Expressions (regex.h) + * A C++98-standard-compliant compiler + +### Windows Requirements ### + + * Microsoft Visual C++ 7.1 or newer + +### Cygwin Requirements ### + + * Cygwin 1.5.25-14 or newer + +### Mac OS X Requirements ### + + * Mac OS X 10.4 Tiger or newer + * Developer Tools Installed + +Also, you'll need CMake 2.6.4 or higher if you want to build the +samples using the provided CMake script, regardless of the platform. + +Requirements for Contributors +----------------------------- + +We welcome patches. If you plan to contribute a patch, you need to +build Google Test and its own tests from an SVN checkout (described +below), which has further requirements: + + * Python version 2.3 or newer (for running some of the tests and + re-generating certain source files from templates) + * CMake 2.6.4 or newer + +Getting the Source +------------------ + +There are two primary ways of getting Google Test's source code: you +can download a stable source release in your preferred archive format, +or directly check out the source from our Subversion (SVN) repositary. +The SVN checkout requires a few extra steps and some extra software +packages on your system, but lets you track the latest development and +make patches much more easily, so we highly encourage it. + +### Source Package ### + +Google Test is released in versioned source packages which can be +downloaded from the download page [1]. Several different archive +formats are provided, but the only difference is the tools used to +manipulate them, and the size of the resulting file. Download +whichever you are most comfortable with. + + [1] http://code.google.com/p/googletest/downloads/list + +Once the package is downloaded, expand it using whichever tools you +prefer for that type. This will result in a new directory with the +name "gtest-X.Y.Z" which contains all of the source code. Here are +some examples on Linux: + + tar -xvzf gtest-X.Y.Z.tar.gz + tar -xvjf gtest-X.Y.Z.tar.bz2 + unzip gtest-X.Y.Z.zip + +### SVN Checkout ### + +To check out the main branch (also known as the "trunk") of Google +Test, run the following Subversion command: + + svn checkout http://googletest.googlecode.com/svn/trunk/ gtest-svn + +Setting up the Build +-------------------- + +To build Google Test and your tests that use it, you need to tell your +build system where to find its headers and source files. The exact +way to do it depends on which build system you use, and is usually +straightforward. + +### Generic Build Instructions ### + +Suppose you put Google Test in directory ${GTEST_DIR}. To build it, +create a library build target (or a project as called by Visual Studio +and Xcode) to compile + + ${GTEST_DIR}/src/gtest-all.cc + +with + + ${GTEST_DIR}/include and ${GTEST_DIR} + +in the header search path. Assuming a Linux-like system and gcc, +something like the following will do: + + g++ -I${GTEST_DIR}/include -I${GTEST_DIR} -c ${GTEST_DIR}/src/gtest-all.cc + ar -rv libgtest.a gtest-all.o + +Next, you should compile your test source file with +${GTEST_DIR}/include in the header search path, and link it with gtest +and any other necessary libraries: + + g++ -I${GTEST_DIR}/include path/to/your_test.cc libgtest.a -o your_test + +As an example, the make/ directory contains a Makefile that you can +use to build Google Test on systems where GNU make is available +(e.g. Linux, Mac OS X, and Cygwin). It doesn't try to build Google +Test's own tests. Instead, it just builds the Google Test library and +a sample test. You can use it as a starting point for your own build +script. + +If the default settings are correct for your environment, the +following commands should succeed: + + cd ${GTEST_DIR}/make + make + ./sample1_unittest + +If you see errors, try to tweak the contents of make/Makefile to make +them go away. There are instructions in make/Makefile on how to do +it. + +### Using CMake ### + +Google Test comes with a CMake build script (CMakeLists.txt) that can +be used on a wide range of platforms ("C" stands for cross-platofrm.). +If you don't have CMake installed already, you can download it for +free from http://www.cmake.org/. + +CMake works by generating native makefiles or build projects that can +be used in the compiler environment of your choice. The typical +workflow starts with: + + mkdir mybuild # Create a directory to hold the build output. + cd mybuild + cmake ${GTEST_DIR} # Generate native build scripts. + +If you want to build Google Test's samples, you should replace the +last command with + + cmake -Dgtest_build_samples=ON ${GTEST_DIR} + +If you are on a *nix system, you should now see a Makefile in the +current directory. Just type 'make' to build gtest. + +If you use Windows and have Vistual Studio installed, a gtest.sln file +and several .vcproj files will be created. You can then build them +using Visual Studio. + +On Mac OS X with Xcode installed, a .xcodeproj file will be generated. + +### Legacy Build Scripts ### + +Before settling on CMake, we have been providing hand-maintained build +projects/scripts for Visual Studio, Xcode, and Autotools. While we +continue to provide them for convenience, they are not actively +maintained any more. We highly recommend that you follow the +instructions in the previous two sections to integrate Google Test +with your existing build system. + +If you still need to use the legacy build scripts, here's how: + +The msvc\ folder contains two solutions with Visual C++ projects. +Open the gtest.sln or gtest-md.sln file using Visual Studio, and you +are ready to build Google Test the same way you build any Visual +Studio project. Files that have names ending with -md use DLL +versions of Microsoft runtime libraries (the /MD or the /MDd compiler +option). Files without that suffix use static versions of the runtime +libraries (the /MT or the /MTd option). Please note that one must use +the same option to compile both gtest and the test code. If you use +Visual Studio 2005 or above, we recommend the -md version as /MD is +the default for new projects in these versions of Visual Studio. + +On Mac OS X, open the gtest.xcodeproj in the xcode/ folder using +Xcode. Build the "gtest" target. The universal binary framework will +end up in your selected build directory (selected in the Xcode +"Preferences..." -> "Building" pane and defaults to xcode/build). +Alternatively, at the command line, enter: + + xcodebuild + +This will build the "Release" configuration of gtest.framework in your +default build location. See the "xcodebuild" man page for more +information about building different configurations and building in +different locations. + +If you wish to use the Google Test Xcode project with Xcode 4.x and +above, you need to either: + * update the SDK configuration options in xcode/Config/General.xconfig. + Comment options SDKROOT, MACOS_DEPLOYMENT_TARGET, and GCC_VERSION. If + you choose this route you lose the ability to target earlier versions + of MacOS X. + * Install an SDK for an earlier version. This doesn't appear to be + supported by Apple, but has been reported to work + (http://stackoverflow.com/questions/5378518). + +Tweaking Google Test +-------------------- + +Google Test can be used in diverse environments. The default +configuration may not work (or may not work well) out of the box in +some environments. However, you can easily tweak Google Test by +defining control macros on the compiler command line. Generally, +these macros are named like GTEST_XYZ and you define them to either 1 +or 0 to enable or disable a certain feature. + +We list the most frequently used macros below. For a complete list, +see file include/gtest/internal/gtest-port.h. + +### Choosing a TR1 Tuple Library ### + +Some Google Test features require the C++ Technical Report 1 (TR1) +tuple library, which is not yet available with all compilers. The +good news is that Google Test implements a subset of TR1 tuple that's +enough for its own need, and will automatically use this when the +compiler doesn't provide TR1 tuple. + +Usually you don't need to care about which tuple library Google Test +uses. However, if your project already uses TR1 tuple, you need to +tell Google Test to use the same TR1 tuple library the rest of your +project uses, or the two tuple implementations will clash. To do +that, add + + -DGTEST_USE_OWN_TR1_TUPLE=0 + +to the compiler flags while compiling Google Test and your tests. If +you want to force Google Test to use its own tuple library, just add + + -DGTEST_USE_OWN_TR1_TUPLE=1 + +to the compiler flags instead. + +If you don't want Google Test to use tuple at all, add + + -DGTEST_HAS_TR1_TUPLE=0 + +and all features using tuple will be disabled. + +### Multi-threaded Tests ### + +Google Test is thread-safe where the pthread library is available. +After #include "gtest/gtest.h", you can check the GTEST_IS_THREADSAFE +macro to see whether this is the case (yes if the macro is #defined to +1, no if it's undefined.). + +If Google Test doesn't correctly detect whether pthread is available +in your environment, you can force it with + + -DGTEST_HAS_PTHREAD=1 + +or + + -DGTEST_HAS_PTHREAD=0 + +When Google Test uses pthread, you may need to add flags to your +compiler and/or linker to select the pthread library, or you'll get +link errors. If you use the CMake script or the deprecated Autotools +script, this is taken care of for you. If you use your own build +script, you'll need to read your compiler and linker's manual to +figure out what flags to add. + +### As a Shared Library (DLL) ### + +Google Test is compact, so most users can build and link it as a +static library for the simplicity. You can choose to use Google Test +as a shared library (known as a DLL on Windows) if you prefer. + +To compile *gtest* as a shared library, add + + -DGTEST_CREATE_SHARED_LIBRARY=1 + +to the compiler flags. You'll also need to tell the linker to produce +a shared library instead - consult your linker's manual for how to do +it. + +To compile your *tests* that use the gtest shared library, add + + -DGTEST_LINKED_AS_SHARED_LIBRARY=1 + +to the compiler flags. + +Note: while the above steps aren't technically necessary today when +using some compilers (e.g. GCC), they may become necessary in the +future, if we decide to improve the speed of loading the library (see +http://gcc.gnu.org/wiki/Visibility for details). Therefore you are +recommended to always add the above flags when using Google Test as a +shared library. Otherwise a future release of Google Test may break +your build script. + +### Avoiding Macro Name Clashes ### + +In C++, macros don't obey namespaces. Therefore two libraries that +both define a macro of the same name will clash if you #include both +definitions. In case a Google Test macro clashes with another +library, you can force Google Test to rename its macro to avoid the +conflict. + +Specifically, if both Google Test and some other code define macro +FOO, you can add + + -DGTEST_DONT_DEFINE_FOO=1 + +to the compiler flags to tell Google Test to change the macro's name +from FOO to GTEST_FOO. Currently FOO can be FAIL, SUCCEED, or TEST. +For example, with -DGTEST_DONT_DEFINE_TEST=1, you'll need to write + + GTEST_TEST(SomeTest, DoesThis) { ... } + +instead of + + TEST(SomeTest, DoesThis) { ... } + +in order to define a test. + +Upgrating from an Earlier Version +--------------------------------- + +We strive to keep Google Test releases backward compatible. +Sometimes, though, we have to make some breaking changes for the +users' long-term benefits. This section describes what you'll need to +do if you are upgrading from an earlier version of Google Test. + +### Upgrading from 1.3.0 or Earlier ### + +You may need to explicitly enable or disable Google Test's own TR1 +tuple library. See the instructions in section "Choosing a TR1 Tuple +Library". + +### Upgrading from 1.4.0 or Earlier ### + +The Autotools build script (configure + make) is no longer officially +supportted. You are encouraged to migrate to your own build system or +use CMake. If you still need to use Autotools, you can find +instructions in the README file from Google Test 1.4.0. + +On platforms where the pthread library is available, Google Test uses +it in order to be thread-safe. See the "Multi-threaded Tests" section +for what this means to your build script. + +If you use Microsoft Visual C++ 7.1 with exceptions disabled, Google +Test will no longer compile. This should affect very few people, as a +large portion of STL (including ) doesn't compile in this mode +anyway. We decided to stop supporting it in order to greatly simplify +Google Test's implementation. + +Developing Google Test +---------------------- + +This section discusses how to make your own changes to Google Test. + +### Testing Google Test Itself ### + +To make sure your changes work as intended and don't break existing +functionality, you'll want to compile and run Google Test's own tests. +For that you can use CMake: + + mkdir mybuild + cd mybuild + cmake -Dgtest_build_tests=ON ${GTEST_DIR} + +Make sure you have Python installed, as some of Google Test's tests +are written in Python. If the cmake command complains about not being +able to find Python ("Could NOT find PythonInterp (missing: +PYTHON_EXECUTABLE)"), try telling it explicitly where your Python +executable can be found: + + cmake -DPYTHON_EXECUTABLE=path/to/python -Dgtest_build_tests=ON ${GTEST_DIR} + +Next, you can build Google Test and all of its own tests. On *nix, +this is usually done by 'make'. To run the tests, do + + make test + +All tests should pass. + +### Regenerating Source Files ### + +Some of Google Test's source files are generated from templates (not +in the C++ sense) using a script. A template file is named FOO.pump, +where FOO is the name of the file it will generate. For example, the +file include/gtest/internal/gtest-type-util.h.pump is used to generate +gtest-type-util.h in the same directory. + +Normally you don't need to worry about regenerating the source files, +unless you need to modify them. In that case, you should modify the +corresponding .pump files instead and run the pump.py Python script to +regenerate them. You can find pump.py in the scripts/ directory. +Read the Pump manual [2] for how to use it. + + [2] http://code.google.com/p/googletest/wiki/PumpManual + +### Contributing a Patch ### + +We welcome patches. Please read the Google Test developer's guide [3] +for how you can contribute. In particular, make sure you have signed +the Contributor License Agreement, or we won't be able to accept the +patch. + + [3] http://code.google.com/p/googletest/wiki/GoogleTestDevGuide + +Happy testing! diff --git a/cpp/thirdparty/protobuf-2.5.0/gtest/aclocal.m4 b/cpp/thirdparty/protobuf-2.5.0/gtest/aclocal.m4 new file mode 100644 index 000000000..e7df9fe0e --- /dev/null +++ b/cpp/thirdparty/protobuf-2.5.0/gtest/aclocal.m4 @@ -0,0 +1,1198 @@ +# generated automatically by aclocal 1.11.3 -*- Autoconf -*- + +# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, +# 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software Foundation, +# Inc. +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +m4_ifndef([AC_AUTOCONF_VERSION], + [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl +m4_if(m4_defn([AC_AUTOCONF_VERSION]), [2.68],, +[m4_warning([this file was generated for autoconf 2.68. +You have another version of autoconf. It may work, but is not guaranteed to. +If you have problems, you may need to regenerate the build system entirely. +To do so, use the procedure documented by the package, typically `autoreconf'.])]) + +# Copyright (C) 2002, 2003, 2005, 2006, 2007, 2008, 2011 Free Software +# Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# serial 1 + +# AM_AUTOMAKE_VERSION(VERSION) +# ---------------------------- +# Automake X.Y traces this macro to ensure aclocal.m4 has been +# generated from the m4 files accompanying Automake X.Y. +# (This private macro should not be called outside this file.) +AC_DEFUN([AM_AUTOMAKE_VERSION], +[am__api_version='1.11' +dnl Some users find AM_AUTOMAKE_VERSION and mistake it for a way to +dnl require some minimum version. Point them to the right macro. +m4_if([$1], [1.11.3], [], + [AC_FATAL([Do not call $0, use AM_INIT_AUTOMAKE([$1]).])])dnl +]) + +# _AM_AUTOCONF_VERSION(VERSION) +# ----------------------------- +# aclocal traces this macro to find the Autoconf version. +# This is a private macro too. Using m4_define simplifies +# the logic in aclocal, which can simply ignore this definition. +m4_define([_AM_AUTOCONF_VERSION], []) + +# AM_SET_CURRENT_AUTOMAKE_VERSION +# ------------------------------- +# Call AM_AUTOMAKE_VERSION and AM_AUTOMAKE_VERSION so they can be traced. +# This function is AC_REQUIREd by AM_INIT_AUTOMAKE. +AC_DEFUN([AM_SET_CURRENT_AUTOMAKE_VERSION], +[AM_AUTOMAKE_VERSION([1.11.3])dnl +m4_ifndef([AC_AUTOCONF_VERSION], + [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl +_AM_AUTOCONF_VERSION(m4_defn([AC_AUTOCONF_VERSION]))]) + +# AM_AUX_DIR_EXPAND -*- Autoconf -*- + +# Copyright (C) 2001, 2003, 2005, 2011 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# serial 1 + +# For projects using AC_CONFIG_AUX_DIR([foo]), Autoconf sets +# $ac_aux_dir to `$srcdir/foo'. In other projects, it is set to +# `$srcdir', `$srcdir/..', or `$srcdir/../..'. +# +# Of course, Automake must honor this variable whenever it calls a +# tool from the auxiliary directory. The problem is that $srcdir (and +# therefore $ac_aux_dir as well) can be either absolute or relative, +# depending on how configure is run. This is pretty annoying, since +# it makes $ac_aux_dir quite unusable in subdirectories: in the top +# source directory, any form will work fine, but in subdirectories a +# relative path needs to be adjusted first. +# +# $ac_aux_dir/missing +# fails when called from a subdirectory if $ac_aux_dir is relative +# $top_srcdir/$ac_aux_dir/missing +# fails if $ac_aux_dir is absolute, +# fails when called from a subdirectory in a VPATH build with +# a relative $ac_aux_dir +# +# The reason of the latter failure is that $top_srcdir and $ac_aux_dir +# are both prefixed by $srcdir. In an in-source build this is usually +# harmless because $srcdir is `.', but things will broke when you +# start a VPATH build or use an absolute $srcdir. +# +# So we could use something similar to $top_srcdir/$ac_aux_dir/missing, +# iff we strip the leading $srcdir from $ac_aux_dir. That would be: +# am_aux_dir='\$(top_srcdir)/'`expr "$ac_aux_dir" : "$srcdir//*\(.*\)"` +# and then we would define $MISSING as +# MISSING="\${SHELL} $am_aux_dir/missing" +# This will work as long as MISSING is not called from configure, because +# unfortunately $(top_srcdir) has no meaning in configure. +# However there are other variables, like CC, which are often used in +# configure, and could therefore not use this "fixed" $ac_aux_dir. +# +# Another solution, used here, is to always expand $ac_aux_dir to an +# absolute PATH. The drawback is that using absolute paths prevent a +# configured tree to be moved without reconfiguration. + +AC_DEFUN([AM_AUX_DIR_EXPAND], +[dnl Rely on autoconf to set up CDPATH properly. +AC_PREREQ([2.50])dnl +# expand $ac_aux_dir to an absolute path +am_aux_dir=`cd $ac_aux_dir && pwd` +]) + +# AM_CONDITIONAL -*- Autoconf -*- + +# Copyright (C) 1997, 2000, 2001, 2003, 2004, 2005, 2006, 2008 +# Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# serial 9 + +# AM_CONDITIONAL(NAME, SHELL-CONDITION) +# ------------------------------------- +# Define a conditional. +AC_DEFUN([AM_CONDITIONAL], +[AC_PREREQ(2.52)dnl + ifelse([$1], [TRUE], [AC_FATAL([$0: invalid condition: $1])], + [$1], [FALSE], [AC_FATAL([$0: invalid condition: $1])])dnl +AC_SUBST([$1_TRUE])dnl +AC_SUBST([$1_FALSE])dnl +_AM_SUBST_NOTMAKE([$1_TRUE])dnl +_AM_SUBST_NOTMAKE([$1_FALSE])dnl +m4_define([_AM_COND_VALUE_$1], [$2])dnl +if $2; then + $1_TRUE= + $1_FALSE='#' +else + $1_TRUE='#' + $1_FALSE= +fi +AC_CONFIG_COMMANDS_PRE( +[if test -z "${$1_TRUE}" && test -z "${$1_FALSE}"; then + AC_MSG_ERROR([[conditional "$1" was never defined. +Usually this means the macro was only invoked conditionally.]]) +fi])]) + +# Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2009, +# 2010, 2011 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# serial 12 + +# There are a few dirty hacks below to avoid letting `AC_PROG_CC' be +# written in clear, in which case automake, when reading aclocal.m4, +# will think it sees a *use*, and therefore will trigger all it's +# C support machinery. Also note that it means that autoscan, seeing +# CC etc. in the Makefile, will ask for an AC_PROG_CC use... + + +# _AM_DEPENDENCIES(NAME) +# ---------------------- +# See how the compiler implements dependency checking. +# NAME is "CC", "CXX", "GCJ", or "OBJC". +# We try a few techniques and use that to set a single cache variable. +# +# We don't AC_REQUIRE the corresponding AC_PROG_CC since the latter was +# modified to invoke _AM_DEPENDENCIES(CC); we would have a circular +# dependency, and given that the user is not expected to run this macro, +# just rely on AC_PROG_CC. +AC_DEFUN([_AM_DEPENDENCIES], +[AC_REQUIRE([AM_SET_DEPDIR])dnl +AC_REQUIRE([AM_OUTPUT_DEPENDENCY_COMMANDS])dnl +AC_REQUIRE([AM_MAKE_INCLUDE])dnl +AC_REQUIRE([AM_DEP_TRACK])dnl + +ifelse([$1], CC, [depcc="$CC" am_compiler_list=], + [$1], CXX, [depcc="$CXX" am_compiler_list=], + [$1], OBJC, [depcc="$OBJC" am_compiler_list='gcc3 gcc'], + [$1], UPC, [depcc="$UPC" am_compiler_list=], + [$1], GCJ, [depcc="$GCJ" am_compiler_list='gcc3 gcc'], + [depcc="$$1" am_compiler_list=]) + +AC_CACHE_CHECK([dependency style of $depcc], + [am_cv_$1_dependencies_compiler_type], +[if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then + # We make a subdir and do the tests there. Otherwise we can end up + # making bogus files that we don't know about and never remove. For + # instance it was reported that on HP-UX the gcc test will end up + # making a dummy file named `D' -- because `-MD' means `put the output + # in D'. + rm -rf conftest.dir + mkdir conftest.dir + # Copy depcomp to subdir because otherwise we won't find it if we're + # using a relative directory. + cp "$am_depcomp" conftest.dir + cd conftest.dir + # We will build objects and dependencies in a subdirectory because + # it helps to detect inapplicable dependency modes. For instance + # both Tru64's cc and ICC support -MD to output dependencies as a + # side effect of compilation, but ICC will put the dependencies in + # the current directory while Tru64 will put them in the object + # directory. + mkdir sub + + am_cv_$1_dependencies_compiler_type=none + if test "$am_compiler_list" = ""; then + am_compiler_list=`sed -n ['s/^#*\([a-zA-Z0-9]*\))$/\1/p'] < ./depcomp` + fi + am__universal=false + m4_case([$1], [CC], + [case " $depcc " in #( + *\ -arch\ *\ -arch\ *) am__universal=true ;; + esac], + [CXX], + [case " $depcc " in #( + *\ -arch\ *\ -arch\ *) am__universal=true ;; + esac]) + + for depmode in $am_compiler_list; do + # Setup a source with many dependencies, because some compilers + # like to wrap large dependency lists on column 80 (with \), and + # we should not choose a depcomp mode which is confused by this. + # + # We need to recreate these files for each test, as the compiler may + # overwrite some of them when testing with obscure command lines. + # This happens at least with the AIX C compiler. + : > sub/conftest.c + for i in 1 2 3 4 5 6; do + echo '#include "conftst'$i'.h"' >> sub/conftest.c + # Using `: > sub/conftst$i.h' creates only sub/conftst1.h with + # Solaris 8's {/usr,}/bin/sh. + touch sub/conftst$i.h + done + echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf + + # We check with `-c' and `-o' for the sake of the "dashmstdout" + # mode. It turns out that the SunPro C++ compiler does not properly + # handle `-M -o', and we need to detect this. Also, some Intel + # versions had trouble with output in subdirs + am__obj=sub/conftest.${OBJEXT-o} + am__minus_obj="-o $am__obj" + case $depmode in + gcc) + # This depmode causes a compiler race in universal mode. + test "$am__universal" = false || continue + ;; + nosideeffect) + # after this tag, mechanisms are not by side-effect, so they'll + # only be used when explicitly requested + if test "x$enable_dependency_tracking" = xyes; then + continue + else + break + fi + ;; + msvc7 | msvc7msys | msvisualcpp | msvcmsys) + # This compiler won't grok `-c -o', but also, the minuso test has + # not run yet. These depmodes are late enough in the game, and + # so weak that their functioning should not be impacted. + am__obj=conftest.${OBJEXT-o} + am__minus_obj= + ;; + none) break ;; + esac + if depmode=$depmode \ + source=sub/conftest.c object=$am__obj \ + depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ + $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \ + >/dev/null 2>conftest.err && + grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 && + grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && + grep $am__obj sub/conftest.Po > /dev/null 2>&1 && + ${MAKE-make} -s -f confmf > /dev/null 2>&1; then + # icc doesn't choke on unknown options, it will just issue warnings + # or remarks (even with -Werror). So we grep stderr for any message + # that says an option was ignored or not supported. + # When given -MP, icc 7.0 and 7.1 complain thusly: + # icc: Command line warning: ignoring option '-M'; no argument required + # The diagnosis changed in icc 8.0: + # icc: Command line remark: option '-MP' not supported + if (grep 'ignoring option' conftest.err || + grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else + am_cv_$1_dependencies_compiler_type=$depmode + break + fi + fi + done + + cd .. + rm -rf conftest.dir +else + am_cv_$1_dependencies_compiler_type=none +fi +]) +AC_SUBST([$1DEPMODE], [depmode=$am_cv_$1_dependencies_compiler_type]) +AM_CONDITIONAL([am__fastdep$1], [ + test "x$enable_dependency_tracking" != xno \ + && test "$am_cv_$1_dependencies_compiler_type" = gcc3]) +]) + + +# AM_SET_DEPDIR +# ------------- +# Choose a directory name for dependency files. +# This macro is AC_REQUIREd in _AM_DEPENDENCIES +AC_DEFUN([AM_SET_DEPDIR], +[AC_REQUIRE([AM_SET_LEADING_DOT])dnl +AC_SUBST([DEPDIR], ["${am__leading_dot}deps"])dnl +]) + + +# AM_DEP_TRACK +# ------------ +AC_DEFUN([AM_DEP_TRACK], +[AC_ARG_ENABLE(dependency-tracking, +[ --disable-dependency-tracking speeds up one-time build + --enable-dependency-tracking do not reject slow dependency extractors]) +if test "x$enable_dependency_tracking" != xno; then + am_depcomp="$ac_aux_dir/depcomp" + AMDEPBACKSLASH='\' + am__nodep='_no' +fi +AM_CONDITIONAL([AMDEP], [test "x$enable_dependency_tracking" != xno]) +AC_SUBST([AMDEPBACKSLASH])dnl +_AM_SUBST_NOTMAKE([AMDEPBACKSLASH])dnl +AC_SUBST([am__nodep])dnl +_AM_SUBST_NOTMAKE([am__nodep])dnl +]) + +# Generate code to set up dependency tracking. -*- Autoconf -*- + +# Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2008 +# Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +#serial 5 + +# _AM_OUTPUT_DEPENDENCY_COMMANDS +# ------------------------------ +AC_DEFUN([_AM_OUTPUT_DEPENDENCY_COMMANDS], +[{ + # Autoconf 2.62 quotes --file arguments for eval, but not when files + # are listed without --file. Let's play safe and only enable the eval + # if we detect the quoting. + case $CONFIG_FILES in + *\'*) eval set x "$CONFIG_FILES" ;; + *) set x $CONFIG_FILES ;; + esac + shift + for mf + do + # Strip MF so we end up with the name of the file. + mf=`echo "$mf" | sed -e 's/:.*$//'` + # Check whether this is an Automake generated Makefile or not. + # We used to match only the files named `Makefile.in', but + # some people rename them; so instead we look at the file content. + # Grep'ing the first line is not enough: some people post-process + # each Makefile.in and add a new line on top of each file to say so. + # Grep'ing the whole file is not good either: AIX grep has a line + # limit of 2048, but all sed's we know have understand at least 4000. + if sed -n 's,^#.*generated by automake.*,X,p' "$mf" | grep X >/dev/null 2>&1; then + dirpart=`AS_DIRNAME("$mf")` + else + continue + fi + # Extract the definition of DEPDIR, am__include, and am__quote + # from the Makefile without running `make'. + DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"` + test -z "$DEPDIR" && continue + am__include=`sed -n 's/^am__include = //p' < "$mf"` + test -z "am__include" && continue + am__quote=`sed -n 's/^am__quote = //p' < "$mf"` + # When using ansi2knr, U may be empty or an underscore; expand it + U=`sed -n 's/^U = //p' < "$mf"` + # Find all dependency output files, they are included files with + # $(DEPDIR) in their names. We invoke sed twice because it is the + # simplest approach to changing $(DEPDIR) to its actual value in the + # expansion. + for file in `sed -n " + s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \ + sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g' -e 's/\$U/'"$U"'/g'`; do + # Make sure the directory exists. + test -f "$dirpart/$file" && continue + fdir=`AS_DIRNAME(["$file"])` + AS_MKDIR_P([$dirpart/$fdir]) + # echo "creating $dirpart/$file" + echo '# dummy' > "$dirpart/$file" + done + done +} +])# _AM_OUTPUT_DEPENDENCY_COMMANDS + + +# AM_OUTPUT_DEPENDENCY_COMMANDS +# ----------------------------- +# This macro should only be invoked once -- use via AC_REQUIRE. +# +# This code is only required when automatic dependency tracking +# is enabled. FIXME. This creates each `.P' file that we will +# need in order to bootstrap the dependency handling code. +AC_DEFUN([AM_OUTPUT_DEPENDENCY_COMMANDS], +[AC_CONFIG_COMMANDS([depfiles], + [test x"$AMDEP_TRUE" != x"" || _AM_OUTPUT_DEPENDENCY_COMMANDS], + [AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir"]) +]) + +# Do all the work for Automake. -*- Autoconf -*- + +# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, +# 2005, 2006, 2008, 2009 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# serial 16 + +# This macro actually does too much. Some checks are only needed if +# your package does certain things. But this isn't really a big deal. + +# AM_INIT_AUTOMAKE(PACKAGE, VERSION, [NO-DEFINE]) +# AM_INIT_AUTOMAKE([OPTIONS]) +# ----------------------------------------------- +# The call with PACKAGE and VERSION arguments is the old style +# call (pre autoconf-2.50), which is being phased out. PACKAGE +# and VERSION should now be passed to AC_INIT and removed from +# the call to AM_INIT_AUTOMAKE. +# We support both call styles for the transition. After +# the next Automake release, Autoconf can make the AC_INIT +# arguments mandatory, and then we can depend on a new Autoconf +# release and drop the old call support. +AC_DEFUN([AM_INIT_AUTOMAKE], +[AC_PREREQ([2.62])dnl +dnl Autoconf wants to disallow AM_ names. We explicitly allow +dnl the ones we care about. +m4_pattern_allow([^AM_[A-Z]+FLAGS$])dnl +AC_REQUIRE([AM_SET_CURRENT_AUTOMAKE_VERSION])dnl +AC_REQUIRE([AC_PROG_INSTALL])dnl +if test "`cd $srcdir && pwd`" != "`pwd`"; then + # Use -I$(srcdir) only when $(srcdir) != ., so that make's output + # is not polluted with repeated "-I." + AC_SUBST([am__isrc], [' -I$(srcdir)'])_AM_SUBST_NOTMAKE([am__isrc])dnl + # test to see if srcdir already configured + if test -f $srcdir/config.status; then + AC_MSG_ERROR([source directory already configured; run "make distclean" there first]) + fi +fi + +# test whether we have cygpath +if test -z "$CYGPATH_W"; then + if (cygpath --version) >/dev/null 2>/dev/null; then + CYGPATH_W='cygpath -w' + else + CYGPATH_W=echo + fi +fi +AC_SUBST([CYGPATH_W]) + +# Define the identity of the package. +dnl Distinguish between old-style and new-style calls. +m4_ifval([$2], +[m4_ifval([$3], [_AM_SET_OPTION([no-define])])dnl + AC_SUBST([PACKAGE], [$1])dnl + AC_SUBST([VERSION], [$2])], +[_AM_SET_OPTIONS([$1])dnl +dnl Diagnose old-style AC_INIT with new-style AM_AUTOMAKE_INIT. +m4_if(m4_ifdef([AC_PACKAGE_NAME], 1)m4_ifdef([AC_PACKAGE_VERSION], 1), 11,, + [m4_fatal([AC_INIT should be called with package and version arguments])])dnl + AC_SUBST([PACKAGE], ['AC_PACKAGE_TARNAME'])dnl + AC_SUBST([VERSION], ['AC_PACKAGE_VERSION'])])dnl + +_AM_IF_OPTION([no-define],, +[AC_DEFINE_UNQUOTED(PACKAGE, "$PACKAGE", [Name of package]) + AC_DEFINE_UNQUOTED(VERSION, "$VERSION", [Version number of package])])dnl + +# Some tools Automake needs. +AC_REQUIRE([AM_SANITY_CHECK])dnl +AC_REQUIRE([AC_ARG_PROGRAM])dnl +AM_MISSING_PROG(ACLOCAL, aclocal-${am__api_version}) +AM_MISSING_PROG(AUTOCONF, autoconf) +AM_MISSING_PROG(AUTOMAKE, automake-${am__api_version}) +AM_MISSING_PROG(AUTOHEADER, autoheader) +AM_MISSING_PROG(MAKEINFO, makeinfo) +AC_REQUIRE([AM_PROG_INSTALL_SH])dnl +AC_REQUIRE([AM_PROG_INSTALL_STRIP])dnl +AC_REQUIRE([AM_PROG_MKDIR_P])dnl +# We need awk for the "check" target. The system "awk" is bad on +# some platforms. +AC_REQUIRE([AC_PROG_AWK])dnl +AC_REQUIRE([AC_PROG_MAKE_SET])dnl +AC_REQUIRE([AM_SET_LEADING_DOT])dnl +_AM_IF_OPTION([tar-ustar], [_AM_PROG_TAR([ustar])], + [_AM_IF_OPTION([tar-pax], [_AM_PROG_TAR([pax])], + [_AM_PROG_TAR([v7])])]) +_AM_IF_OPTION([no-dependencies],, +[AC_PROVIDE_IFELSE([AC_PROG_CC], + [_AM_DEPENDENCIES(CC)], + [define([AC_PROG_CC], + defn([AC_PROG_CC])[_AM_DEPENDENCIES(CC)])])dnl +AC_PROVIDE_IFELSE([AC_PROG_CXX], + [_AM_DEPENDENCIES(CXX)], + [define([AC_PROG_CXX], + defn([AC_PROG_CXX])[_AM_DEPENDENCIES(CXX)])])dnl +AC_PROVIDE_IFELSE([AC_PROG_OBJC], + [_AM_DEPENDENCIES(OBJC)], + [define([AC_PROG_OBJC], + defn([AC_PROG_OBJC])[_AM_DEPENDENCIES(OBJC)])])dnl +]) +_AM_IF_OPTION([silent-rules], [AC_REQUIRE([AM_SILENT_RULES])])dnl +dnl The `parallel-tests' driver may need to know about EXEEXT, so add the +dnl `am__EXEEXT' conditional if _AM_COMPILER_EXEEXT was seen. This macro +dnl is hooked onto _AC_COMPILER_EXEEXT early, see below. +AC_CONFIG_COMMANDS_PRE(dnl +[m4_provide_if([_AM_COMPILER_EXEEXT], + [AM_CONDITIONAL([am__EXEEXT], [test -n "$EXEEXT"])])])dnl +]) + +dnl Hook into `_AC_COMPILER_EXEEXT' early to learn its expansion. Do not +dnl add the conditional right here, as _AC_COMPILER_EXEEXT may be further +dnl mangled by Autoconf and run in a shell conditional statement. +m4_define([_AC_COMPILER_EXEEXT], +m4_defn([_AC_COMPILER_EXEEXT])[m4_provide([_AM_COMPILER_EXEEXT])]) + + +# When config.status generates a header, we must update the stamp-h file. +# This file resides in the same directory as the config header +# that is generated. The stamp files are numbered to have different names. + +# Autoconf calls _AC_AM_CONFIG_HEADER_HOOK (when defined) in the +# loop where config.status creates the headers, so we can generate +# our stamp files there. +AC_DEFUN([_AC_AM_CONFIG_HEADER_HOOK], +[# Compute $1's index in $config_headers. +_am_arg=$1 +_am_stamp_count=1 +for _am_header in $config_headers :; do + case $_am_header in + $_am_arg | $_am_arg:* ) + break ;; + * ) + _am_stamp_count=`expr $_am_stamp_count + 1` ;; + esac +done +echo "timestamp for $_am_arg" >`AS_DIRNAME(["$_am_arg"])`/stamp-h[]$_am_stamp_count]) + +# Copyright (C) 2001, 2003, 2005, 2008, 2011 Free Software Foundation, +# Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# serial 1 + +# AM_PROG_INSTALL_SH +# ------------------ +# Define $install_sh. +AC_DEFUN([AM_PROG_INSTALL_SH], +[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl +if test x"${install_sh}" != xset; then + case $am_aux_dir in + *\ * | *\ *) + install_sh="\${SHELL} '$am_aux_dir/install-sh'" ;; + *) + install_sh="\${SHELL} $am_aux_dir/install-sh" + esac +fi +AC_SUBST(install_sh)]) + +# Copyright (C) 2003, 2005 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# serial 2 + +# Check whether the underlying file-system supports filenames +# with a leading dot. For instance MS-DOS doesn't. +AC_DEFUN([AM_SET_LEADING_DOT], +[rm -rf .tst 2>/dev/null +mkdir .tst 2>/dev/null +if test -d .tst; then + am__leading_dot=. +else + am__leading_dot=_ +fi +rmdir .tst 2>/dev/null +AC_SUBST([am__leading_dot])]) + +# Check to see how 'make' treats includes. -*- Autoconf -*- + +# Copyright (C) 2001, 2002, 2003, 2005, 2009 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# serial 4 + +# AM_MAKE_INCLUDE() +# ----------------- +# Check to see how make treats includes. +AC_DEFUN([AM_MAKE_INCLUDE], +[am_make=${MAKE-make} +cat > confinc << 'END' +am__doit: + @echo this is the am__doit target +.PHONY: am__doit +END +# If we don't find an include directive, just comment out the code. +AC_MSG_CHECKING([for style of include used by $am_make]) +am__include="#" +am__quote= +_am_result=none +# First try GNU make style include. +echo "include confinc" > confmf +# Ignore all kinds of additional output from `make'. +case `$am_make -s -f confmf 2> /dev/null` in #( +*the\ am__doit\ target*) + am__include=include + am__quote= + _am_result=GNU + ;; +esac +# Now try BSD make style include. +if test "$am__include" = "#"; then + echo '.include "confinc"' > confmf + case `$am_make -s -f confmf 2> /dev/null` in #( + *the\ am__doit\ target*) + am__include=.include + am__quote="\"" + _am_result=BSD + ;; + esac +fi +AC_SUBST([am__include]) +AC_SUBST([am__quote]) +AC_MSG_RESULT([$_am_result]) +rm -f confinc confmf +]) + +# Fake the existence of programs that GNU maintainers use. -*- Autoconf -*- + +# Copyright (C) 1997, 1999, 2000, 2001, 2003, 2004, 2005, 2008 +# Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# serial 6 + +# AM_MISSING_PROG(NAME, PROGRAM) +# ------------------------------ +AC_DEFUN([AM_MISSING_PROG], +[AC_REQUIRE([AM_MISSING_HAS_RUN]) +$1=${$1-"${am_missing_run}$2"} +AC_SUBST($1)]) + + +# AM_MISSING_HAS_RUN +# ------------------ +# Define MISSING if not defined so far and test if it supports --run. +# If it does, set am_missing_run to use it, otherwise, to nothing. +AC_DEFUN([AM_MISSING_HAS_RUN], +[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl +AC_REQUIRE_AUX_FILE([missing])dnl +if test x"${MISSING+set}" != xset; then + case $am_aux_dir in + *\ * | *\ *) + MISSING="\${SHELL} \"$am_aux_dir/missing\"" ;; + *) + MISSING="\${SHELL} $am_aux_dir/missing" ;; + esac +fi +# Use eval to expand $SHELL +if eval "$MISSING --run true"; then + am_missing_run="$MISSING --run " +else + am_missing_run= + AC_MSG_WARN([`missing' script is too old or missing]) +fi +]) + +# Copyright (C) 2003, 2004, 2005, 2006, 2011 Free Software Foundation, +# Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# serial 1 + +# AM_PROG_MKDIR_P +# --------------- +# Check for `mkdir -p'. +AC_DEFUN([AM_PROG_MKDIR_P], +[AC_PREREQ([2.60])dnl +AC_REQUIRE([AC_PROG_MKDIR_P])dnl +dnl Automake 1.8 to 1.9.6 used to define mkdir_p. We now use MKDIR_P, +dnl while keeping a definition of mkdir_p for backward compatibility. +dnl @MKDIR_P@ is magic: AC_OUTPUT adjusts its value for each Makefile. +dnl However we cannot define mkdir_p as $(MKDIR_P) for the sake of +dnl Makefile.ins that do not define MKDIR_P, so we do our own +dnl adjustment using top_builddir (which is defined more often than +dnl MKDIR_P). +AC_SUBST([mkdir_p], ["$MKDIR_P"])dnl +case $mkdir_p in + [[\\/$]]* | ?:[[\\/]]*) ;; + */*) mkdir_p="\$(top_builddir)/$mkdir_p" ;; +esac +]) + +# Helper functions for option handling. -*- Autoconf -*- + +# Copyright (C) 2001, 2002, 2003, 2005, 2008, 2010 Free Software +# Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# serial 5 + +# _AM_MANGLE_OPTION(NAME) +# ----------------------- +AC_DEFUN([_AM_MANGLE_OPTION], +[[_AM_OPTION_]m4_bpatsubst($1, [[^a-zA-Z0-9_]], [_])]) + +# _AM_SET_OPTION(NAME) +# -------------------- +# Set option NAME. Presently that only means defining a flag for this option. +AC_DEFUN([_AM_SET_OPTION], +[m4_define(_AM_MANGLE_OPTION([$1]), 1)]) + +# _AM_SET_OPTIONS(OPTIONS) +# ------------------------ +# OPTIONS is a space-separated list of Automake options. +AC_DEFUN([_AM_SET_OPTIONS], +[m4_foreach_w([_AM_Option], [$1], [_AM_SET_OPTION(_AM_Option)])]) + +# _AM_IF_OPTION(OPTION, IF-SET, [IF-NOT-SET]) +# ------------------------------------------- +# Execute IF-SET if OPTION is set, IF-NOT-SET otherwise. +AC_DEFUN([_AM_IF_OPTION], +[m4_ifset(_AM_MANGLE_OPTION([$1]), [$2], [$3])]) + +# Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2008, 2009, +# 2011 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# serial 2 + +# AM_PATH_PYTHON([MINIMUM-VERSION], [ACTION-IF-FOUND], [ACTION-IF-NOT-FOUND]) +# --------------------------------------------------------------------------- +# Adds support for distributing Python modules and packages. To +# install modules, copy them to $(pythondir), using the python_PYTHON +# automake variable. To install a package with the same name as the +# automake package, install to $(pkgpythondir), or use the +# pkgpython_PYTHON automake variable. +# +# The variables $(pyexecdir) and $(pkgpyexecdir) are provided as +# locations to install python extension modules (shared libraries). +# Another macro is required to find the appropriate flags to compile +# extension modules. +# +# If your package is configured with a different prefix to python, +# users will have to add the install directory to the PYTHONPATH +# environment variable, or create a .pth file (see the python +# documentation for details). +# +# If the MINIMUM-VERSION argument is passed, AM_PATH_PYTHON will +# cause an error if the version of python installed on the system +# doesn't meet the requirement. MINIMUM-VERSION should consist of +# numbers and dots only. +AC_DEFUN([AM_PATH_PYTHON], + [ + dnl Find a Python interpreter. Python versions prior to 2.0 are not + dnl supported. (2.0 was released on October 16, 2000). + m4_define_default([_AM_PYTHON_INTERPRETER_LIST], +[python python2 python3 python3.2 python3.1 python3.0 python2.7 dnl + python2.6 python2.5 python2.4 python2.3 python2.2 python2.1 python2.0]) + + AC_ARG_VAR([PYTHON], [the Python interpreter]) + + m4_if([$1],[],[ + dnl No version check is needed. + # Find any Python interpreter. + if test -z "$PYTHON"; then + AC_PATH_PROGS([PYTHON], _AM_PYTHON_INTERPRETER_LIST, :) + fi + am_display_PYTHON=python + ], [ + dnl A version check is needed. + if test -n "$PYTHON"; then + # If the user set $PYTHON, use it and don't search something else. + AC_MSG_CHECKING([whether $PYTHON version >= $1]) + AM_PYTHON_CHECK_VERSION([$PYTHON], [$1], + [AC_MSG_RESULT(yes)], + [AC_MSG_ERROR(too old)]) + am_display_PYTHON=$PYTHON + else + # Otherwise, try each interpreter until we find one that satisfies + # VERSION. + AC_CACHE_CHECK([for a Python interpreter with version >= $1], + [am_cv_pathless_PYTHON],[ + for am_cv_pathless_PYTHON in _AM_PYTHON_INTERPRETER_LIST none; do + test "$am_cv_pathless_PYTHON" = none && break + AM_PYTHON_CHECK_VERSION([$am_cv_pathless_PYTHON], [$1], [break]) + done]) + # Set $PYTHON to the absolute path of $am_cv_pathless_PYTHON. + if test "$am_cv_pathless_PYTHON" = none; then + PYTHON=: + else + AC_PATH_PROG([PYTHON], [$am_cv_pathless_PYTHON]) + fi + am_display_PYTHON=$am_cv_pathless_PYTHON + fi + ]) + + if test "$PYTHON" = :; then + dnl Run any user-specified action, or abort. + m4_default([$3], [AC_MSG_ERROR([no suitable Python interpreter found])]) + else + + dnl Query Python for its version number. Getting [:3] seems to be + dnl the best way to do this; it's what "site.py" does in the standard + dnl library. + + AC_CACHE_CHECK([for $am_display_PYTHON version], [am_cv_python_version], + [am_cv_python_version=`$PYTHON -c "import sys; sys.stdout.write(sys.version[[:3]])"`]) + AC_SUBST([PYTHON_VERSION], [$am_cv_python_version]) + + dnl Use the values of $prefix and $exec_prefix for the corresponding + dnl values of PYTHON_PREFIX and PYTHON_EXEC_PREFIX. These are made + dnl distinct variables so they can be overridden if need be. However, + dnl general consensus is that you shouldn't need this ability. + + AC_SUBST([PYTHON_PREFIX], ['${prefix}']) + AC_SUBST([PYTHON_EXEC_PREFIX], ['${exec_prefix}']) + + dnl At times (like when building shared libraries) you may want + dnl to know which OS platform Python thinks this is. + + AC_CACHE_CHECK([for $am_display_PYTHON platform], [am_cv_python_platform], + [am_cv_python_platform=`$PYTHON -c "import sys; sys.stdout.write(sys.platform)"`]) + AC_SUBST([PYTHON_PLATFORM], [$am_cv_python_platform]) + + + dnl Set up 4 directories: + + dnl pythondir -- where to install python scripts. This is the + dnl site-packages directory, not the python standard library + dnl directory like in previous automake betas. This behavior + dnl is more consistent with lispdir.m4 for example. + dnl Query distutils for this directory. + AC_CACHE_CHECK([for $am_display_PYTHON script directory], + [am_cv_python_pythondir], + [if test "x$prefix" = xNONE + then + am_py_prefix=$ac_default_prefix + else + am_py_prefix=$prefix + fi + am_cv_python_pythondir=`$PYTHON -c "import sys; from distutils import sysconfig; sys.stdout.write(sysconfig.get_python_lib(0,0,prefix='$am_py_prefix'))" 2>/dev/null` + case $am_cv_python_pythondir in + $am_py_prefix*) + am__strip_prefix=`echo "$am_py_prefix" | sed 's|.|.|g'` + am_cv_python_pythondir=`echo "$am_cv_python_pythondir" | sed "s,^$am__strip_prefix,$PYTHON_PREFIX,"` + ;; + *) + case $am_py_prefix in + /usr|/System*) ;; + *) + am_cv_python_pythondir=$PYTHON_PREFIX/lib/python$PYTHON_VERSION/site-packages + ;; + esac + ;; + esac + ]) + AC_SUBST([pythondir], [$am_cv_python_pythondir]) + + dnl pkgpythondir -- $PACKAGE directory under pythondir. Was + dnl PYTHON_SITE_PACKAGE in previous betas, but this naming is + dnl more consistent with the rest of automake. + + AC_SUBST([pkgpythondir], [\${pythondir}/$PACKAGE]) + + dnl pyexecdir -- directory for installing python extension modules + dnl (shared libraries) + dnl Query distutils for this directory. + AC_CACHE_CHECK([for $am_display_PYTHON extension module directory], + [am_cv_python_pyexecdir], + [if test "x$exec_prefix" = xNONE + then + am_py_exec_prefix=$am_py_prefix + else + am_py_exec_prefix=$exec_prefix + fi + am_cv_python_pyexecdir=`$PYTHON -c "import sys; from distutils import sysconfig; sys.stdout.write(sysconfig.get_python_lib(1,0,prefix='$am_py_exec_prefix'))" 2>/dev/null` + case $am_cv_python_pyexecdir in + $am_py_exec_prefix*) + am__strip_prefix=`echo "$am_py_exec_prefix" | sed 's|.|.|g'` + am_cv_python_pyexecdir=`echo "$am_cv_python_pyexecdir" | sed "s,^$am__strip_prefix,$PYTHON_EXEC_PREFIX,"` + ;; + *) + case $am_py_exec_prefix in + /usr|/System*) ;; + *) + am_cv_python_pyexecdir=$PYTHON_EXEC_PREFIX/lib/python$PYTHON_VERSION/site-packages + ;; + esac + ;; + esac + ]) + AC_SUBST([pyexecdir], [$am_cv_python_pyexecdir]) + + dnl pkgpyexecdir -- $(pyexecdir)/$(PACKAGE) + + AC_SUBST([pkgpyexecdir], [\${pyexecdir}/$PACKAGE]) + + dnl Run any user-specified action. + $2 + fi + +]) + + +# AM_PYTHON_CHECK_VERSION(PROG, VERSION, [ACTION-IF-TRUE], [ACTION-IF-FALSE]) +# --------------------------------------------------------------------------- +# Run ACTION-IF-TRUE if the Python interpreter PROG has version >= VERSION. +# Run ACTION-IF-FALSE otherwise. +# This test uses sys.hexversion instead of the string equivalent (first +# word of sys.version), in order to cope with versions such as 2.2c1. +# This supports Python 2.0 or higher. (2.0 was released on October 16, 2000). +AC_DEFUN([AM_PYTHON_CHECK_VERSION], + [prog="import sys +# split strings by '.' and convert to numeric. Append some zeros +# because we need at least 4 digits for the hex conversion. +# map returns an iterator in Python 3.0 and a list in 2.x +minver = list(map(int, '$2'.split('.'))) + [[0, 0, 0]] +minverhex = 0 +# xrange is not present in Python 3.0 and range returns an iterator +for i in list(range(0, 4)): minverhex = (minverhex << 8) + minver[[i]] +sys.exit(sys.hexversion < minverhex)" + AS_IF([AM_RUN_LOG([$1 -c "$prog"])], [$3], [$4])]) + +# Copyright (C) 2001, 2003, 2005, 2011 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# serial 1 + +# AM_RUN_LOG(COMMAND) +# ------------------- +# Run COMMAND, save the exit status in ac_status, and log it. +# (This has been adapted from Autoconf's _AC_RUN_LOG macro.) +AC_DEFUN([AM_RUN_LOG], +[{ echo "$as_me:$LINENO: $1" >&AS_MESSAGE_LOG_FD + ($1) >&AS_MESSAGE_LOG_FD 2>&AS_MESSAGE_LOG_FD + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&AS_MESSAGE_LOG_FD + (exit $ac_status); }]) + +# Check to make sure that the build environment is sane. -*- Autoconf -*- + +# Copyright (C) 1996, 1997, 2000, 2001, 2003, 2005, 2008 +# Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# serial 5 + +# AM_SANITY_CHECK +# --------------- +AC_DEFUN([AM_SANITY_CHECK], +[AC_MSG_CHECKING([whether build environment is sane]) +# Just in case +sleep 1 +echo timestamp > conftest.file +# Reject unsafe characters in $srcdir or the absolute working directory +# name. Accept space and tab only in the latter. +am_lf=' +' +case `pwd` in + *[[\\\"\#\$\&\'\`$am_lf]]*) + AC_MSG_ERROR([unsafe absolute working directory name]);; +esac +case $srcdir in + *[[\\\"\#\$\&\'\`$am_lf\ \ ]]*) + AC_MSG_ERROR([unsafe srcdir value: `$srcdir']);; +esac + +# Do `set' in a subshell so we don't clobber the current shell's +# arguments. Must try -L first in case configure is actually a +# symlink; some systems play weird games with the mod time of symlinks +# (eg FreeBSD returns the mod time of the symlink's containing +# directory). +if ( + set X `ls -Lt "$srcdir/configure" conftest.file 2> /dev/null` + if test "$[*]" = "X"; then + # -L didn't work. + set X `ls -t "$srcdir/configure" conftest.file` + fi + rm -f conftest.file + if test "$[*]" != "X $srcdir/configure conftest.file" \ + && test "$[*]" != "X conftest.file $srcdir/configure"; then + + # If neither matched, then we have a broken ls. This can happen + # if, for instance, CONFIG_SHELL is bash and it inherits a + # broken ls alias from the environment. This has actually + # happened. Such a system could not be considered "sane". + AC_MSG_ERROR([ls -t appears to fail. Make sure there is not a broken +alias in your environment]) + fi + + test "$[2]" = conftest.file + ) +then + # Ok. + : +else + AC_MSG_ERROR([newly created file is older than distributed files! +Check your system clock]) +fi +AC_MSG_RESULT(yes)]) + +# Copyright (C) 2001, 2003, 2005, 2011 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# serial 1 + +# AM_PROG_INSTALL_STRIP +# --------------------- +# One issue with vendor `install' (even GNU) is that you can't +# specify the program used to strip binaries. This is especially +# annoying in cross-compiling environments, where the build's strip +# is unlikely to handle the host's binaries. +# Fortunately install-sh will honor a STRIPPROG variable, so we +# always use install-sh in `make install-strip', and initialize +# STRIPPROG with the value of the STRIP variable (set by the user). +AC_DEFUN([AM_PROG_INSTALL_STRIP], +[AC_REQUIRE([AM_PROG_INSTALL_SH])dnl +# Installed binaries are usually stripped using `strip' when the user +# run `make install-strip'. However `strip' might not be the right +# tool to use in cross-compilation environments, therefore Automake +# will honor the `STRIP' environment variable to overrule this program. +dnl Don't test for $cross_compiling = yes, because it might be `maybe'. +if test "$cross_compiling" != no; then + AC_CHECK_TOOL([STRIP], [strip], :) +fi +INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s" +AC_SUBST([INSTALL_STRIP_PROGRAM])]) + +# Copyright (C) 2006, 2008, 2010 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# serial 3 + +# _AM_SUBST_NOTMAKE(VARIABLE) +# --------------------------- +# Prevent Automake from outputting VARIABLE = @VARIABLE@ in Makefile.in. +# This macro is traced by Automake. +AC_DEFUN([_AM_SUBST_NOTMAKE]) + +# AM_SUBST_NOTMAKE(VARIABLE) +# -------------------------- +# Public sister of _AM_SUBST_NOTMAKE. +AC_DEFUN([AM_SUBST_NOTMAKE], [_AM_SUBST_NOTMAKE($@)]) + +# Check how to create a tarball. -*- Autoconf -*- + +# Copyright (C) 2004, 2005, 2012 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# serial 2 + +# _AM_PROG_TAR(FORMAT) +# -------------------- +# Check how to create a tarball in format FORMAT. +# FORMAT should be one of `v7', `ustar', or `pax'. +# +# Substitute a variable $(am__tar) that is a command +# writing to stdout a FORMAT-tarball containing the directory +# $tardir. +# tardir=directory && $(am__tar) > result.tar +# +# Substitute a variable $(am__untar) that extract such +# a tarball read from stdin. +# $(am__untar) < result.tar +AC_DEFUN([_AM_PROG_TAR], +[# Always define AMTAR for backward compatibility. Yes, it's still used +# in the wild :-( We should find a proper way to deprecate it ... +AC_SUBST([AMTAR], ['$${TAR-tar}']) +m4_if([$1], [v7], + [am__tar='$${TAR-tar} chof - "$$tardir"' am__untar='$${TAR-tar} xf -'], + [m4_case([$1], [ustar],, [pax],, + [m4_fatal([Unknown tar format])]) +AC_MSG_CHECKING([how to create a $1 tar archive]) +# Loop over all known methods to create a tar archive until one works. +_am_tools='gnutar m4_if([$1], [ustar], [plaintar]) pax cpio none' +_am_tools=${am_cv_prog_tar_$1-$_am_tools} +# Do not fold the above two line into one, because Tru64 sh and +# Solaris sh will not grok spaces in the rhs of `-'. +for _am_tool in $_am_tools +do + case $_am_tool in + gnutar) + for _am_tar in tar gnutar gtar; + do + AM_RUN_LOG([$_am_tar --version]) && break + done + am__tar="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$$tardir"' + am__tar_="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$tardir"' + am__untar="$_am_tar -xf -" + ;; + plaintar) + # Must skip GNU tar: if it does not support --format= it doesn't create + # ustar tarball either. + (tar --version) >/dev/null 2>&1 && continue + am__tar='tar chf - "$$tardir"' + am__tar_='tar chf - "$tardir"' + am__untar='tar xf -' + ;; + pax) + am__tar='pax -L -x $1 -w "$$tardir"' + am__tar_='pax -L -x $1 -w "$tardir"' + am__untar='pax -r' + ;; + cpio) + am__tar='find "$$tardir" -print | cpio -o -H $1 -L' + am__tar_='find "$tardir" -print | cpio -o -H $1 -L' + am__untar='cpio -i -H $1 -d' + ;; + none) + am__tar=false + am__tar_=false + am__untar=false + ;; + esac + + # If the value was cached, stop now. We just wanted to have am__tar + # and am__untar set. + test -n "${am_cv_prog_tar_$1}" && break + + # tar/untar a dummy directory, and stop if the command works + rm -rf conftest.dir + mkdir conftest.dir + echo GrepMe > conftest.dir/file + AM_RUN_LOG([tardir=conftest.dir && eval $am__tar_ >conftest.tar]) + rm -rf conftest.dir + if test -s conftest.tar; then + AM_RUN_LOG([$am__untar /dev/null 2>&1 && break + fi +done +rm -rf conftest.dir + +AC_CACHE_VAL([am_cv_prog_tar_$1], [am_cv_prog_tar_$1=$_am_tool]) +AC_MSG_RESULT([$am_cv_prog_tar_$1])]) +AC_SUBST([am__tar]) +AC_SUBST([am__untar]) +]) # _AM_PROG_TAR + +m4_include([m4/libtool.m4]) +m4_include([m4/ltoptions.m4]) +m4_include([m4/ltsugar.m4]) +m4_include([m4/ltversion.m4]) +m4_include([m4/lt~obsolete.m4]) diff --git a/cpp/thirdparty/protobuf-2.3.0/gtest/build-aux/config.guess b/cpp/thirdparty/protobuf-2.5.0/gtest/build-aux/config.guess similarity index 82% rename from cpp/thirdparty/protobuf-2.3.0/gtest/build-aux/config.guess rename to cpp/thirdparty/protobuf-2.5.0/gtest/build-aux/config.guess index 278f9e9e0..d622a44e5 100755 --- a/cpp/thirdparty/protobuf-2.3.0/gtest/build-aux/config.guess +++ b/cpp/thirdparty/protobuf-2.5.0/gtest/build-aux/config.guess @@ -1,10 +1,10 @@ #! /bin/sh # Attempt to guess a canonical system name. # Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, -# 2000, 2001, 2002, 2003, 2004, 2005, 2006 Free Software Foundation, -# Inc. +# 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, +# 2011, 2012 Free Software Foundation, Inc. -timestamp='2007-07-22' +timestamp='2012-02-10' # This file is free software; you can redistribute it and/or modify it # under the terms of the GNU General Public License as published by @@ -17,9 +17,7 @@ timestamp='2007-07-22' # General Public License for more details. # # You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA -# 02110-1301, USA. +# along with this program; if not, see . # # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a @@ -27,16 +25,16 @@ timestamp='2007-07-22' # the same distribution terms that you use for the rest of that program. -# Originally written by Per Bothner . -# Please send patches to . Submit a context -# diff and a properly formatted ChangeLog entry. +# Originally written by Per Bothner. Please send patches (context +# diff format) to and include a ChangeLog +# entry. # # This script attempts to guess a canonical system name similar to # config.sub. If it succeeds, it prints the system name on stdout, and # exits with 0. Otherwise, it exits with 1. # -# The plan is that this can be called by configure scripts if you -# don't specify an explicit build system type. +# You can get the latest version of this script from: +# http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess;hb=HEAD me=`echo "$0" | sed -e 's,.*/,,'` @@ -56,7 +54,8 @@ version="\ GNU config.guess ($timestamp) Originally written by Per Bothner. -Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005 +Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, +2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO @@ -144,7 +143,7 @@ UNAME_VERSION=`(uname -v) 2>/dev/null` || UNAME_VERSION=unknown case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in *:NetBSD:*:*) # NetBSD (nbsd) targets should (where applicable) match one or - # more of the tupples: *-*-netbsdelf*, *-*-netbsdaout*, + # more of the tuples: *-*-netbsdelf*, *-*-netbsdaout*, # *-*-netbsdecoff* and *-*-netbsd*. For targets that recently # switched to ELF, *-*-netbsd* would select the old # object file format. This provides both forward @@ -170,7 +169,7 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in arm*|i386|m68k|ns32k|sh3*|sparc|vax) eval $set_cc_for_build if echo __ELF__ | $CC_FOR_BUILD -E - 2>/dev/null \ - | grep __ELF__ >/dev/null + | grep -q __ELF__ then # Once all utilities can be ECOFF (netbsdecoff) or a.out (netbsdaout). # Return netbsd for either. FIX? @@ -180,7 +179,7 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in fi ;; *) - os=netbsd + os=netbsd ;; esac # The OS release @@ -223,7 +222,7 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $3}'` ;; *5.*) - UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $4}'` + UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $4}'` ;; esac # According to Compaq, /usr/sbin/psrinfo has been available on @@ -269,7 +268,10 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in # A Xn.n version is an unreleased experimental baselevel. # 1.2 uses "1.2" for uname -r. echo ${UNAME_MACHINE}-dec-osf`echo ${UNAME_RELEASE} | sed -e 's/^[PVTX]//' | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'` - exit ;; + # Reset EXIT trap before exiting to avoid spurious non-zero exit code. + exitcode=$? + trap '' 0 + exit $exitcode ;; Alpha\ *:Windows_NT*:*) # How do we know it's Interix rather than the generic POSIX subsystem? # Should we change UNAME_MACHINE based on the output of uname instead @@ -295,7 +297,7 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in echo s390-ibm-zvmoe exit ;; *:OS400:*:*) - echo powerpc-ibm-os400 + echo powerpc-ibm-os400 exit ;; arm:RISC*:1.[012]*:*|arm:riscix:1.[012]*:*) echo arm-acorn-riscix${UNAME_RELEASE} @@ -324,14 +326,33 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in case `/usr/bin/uname -p` in sparc) echo sparc-icl-nx7; exit ;; esac ;; + s390x:SunOS:*:*) + echo ${UNAME_MACHINE}-ibm-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` + exit ;; sun4H:SunOS:5.*:*) echo sparc-hal-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` exit ;; sun4*:SunOS:5.*:* | tadpole*:SunOS:5.*:*) echo sparc-sun-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` exit ;; + i86pc:AuroraUX:5.*:* | i86xen:AuroraUX:5.*:*) + echo i386-pc-auroraux${UNAME_RELEASE} + exit ;; i86pc:SunOS:5.*:* | i86xen:SunOS:5.*:*) - echo i386-pc-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` + eval $set_cc_for_build + SUN_ARCH="i386" + # If there is a compiler, see if it is configured for 64-bit objects. + # Note that the Sun cc does not turn __LP64__ into 1 like gcc does. + # This test works for both compilers. + if [ "$CC_FOR_BUILD" != 'no_compiler_found' ]; then + if (echo '#ifdef __amd64'; echo IS_64BIT_ARCH; echo '#endif') | \ + (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | \ + grep IS_64BIT_ARCH >/dev/null + then + SUN_ARCH="x86_64" + fi + fi + echo ${SUN_ARCH}-pc-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` exit ;; sun4*:SunOS:6*:*) # According to config.sub, this is the proper way to canonicalize @@ -375,23 +396,23 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in # MiNT. But MiNT is downward compatible to TOS, so this should # be no problem. atarist[e]:*MiNT:*:* | atarist[e]:*mint:*:* | atarist[e]:*TOS:*:*) - echo m68k-atari-mint${UNAME_RELEASE} + echo m68k-atari-mint${UNAME_RELEASE} exit ;; atari*:*MiNT:*:* | atari*:*mint:*:* | atarist[e]:*TOS:*:*) echo m68k-atari-mint${UNAME_RELEASE} - exit ;; + exit ;; *falcon*:*MiNT:*:* | *falcon*:*mint:*:* | *falcon*:*TOS:*:*) - echo m68k-atari-mint${UNAME_RELEASE} + echo m68k-atari-mint${UNAME_RELEASE} exit ;; milan*:*MiNT:*:* | milan*:*mint:*:* | *milan*:*TOS:*:*) - echo m68k-milan-mint${UNAME_RELEASE} - exit ;; + echo m68k-milan-mint${UNAME_RELEASE} + exit ;; hades*:*MiNT:*:* | hades*:*mint:*:* | *hades*:*TOS:*:*) - echo m68k-hades-mint${UNAME_RELEASE} - exit ;; + echo m68k-hades-mint${UNAME_RELEASE} + exit ;; *:*MiNT:*:* | *:*mint:*:* | *:*TOS:*:*) - echo m68k-unknown-mint${UNAME_RELEASE} - exit ;; + echo m68k-unknown-mint${UNAME_RELEASE} + exit ;; m68k:machten:*:*) echo m68k-apple-machten${UNAME_RELEASE} exit ;; @@ -461,8 +482,8 @@ EOF echo m88k-motorola-sysv3 exit ;; AViiON:dgux:*:*) - # DG/UX returns AViiON for all architectures - UNAME_PROCESSOR=`/usr/bin/uname -p` + # DG/UX returns AViiON for all architectures + UNAME_PROCESSOR=`/usr/bin/uname -p` if [ $UNAME_PROCESSOR = mc88100 ] || [ $UNAME_PROCESSOR = mc88110 ] then if [ ${TARGET_BINARY_INTERFACE}x = m88kdguxelfx ] || \ @@ -475,7 +496,7 @@ EOF else echo i586-dg-dgux${UNAME_RELEASE} fi - exit ;; + exit ;; M88*:DolphinOS:*:*) # DolphinOS (SVR3) echo m88k-dolphin-sysv3 exit ;; @@ -532,7 +553,7 @@ EOF echo rs6000-ibm-aix3.2 fi exit ;; - *:AIX:*:[45]) + *:AIX:*:[4567]) IBM_CPU_ID=`/usr/sbin/lsdev -C -c processor -S available | sed 1q | awk '{ print $1 }'` if /usr/sbin/lsattr -El ${IBM_CPU_ID} | grep ' POWER' >/dev/null 2>&1; then IBM_ARCH=rs6000 @@ -575,52 +596,52 @@ EOF 9000/[678][0-9][0-9]) if [ -x /usr/bin/getconf ]; then sc_cpu_version=`/usr/bin/getconf SC_CPU_VERSION 2>/dev/null` - sc_kernel_bits=`/usr/bin/getconf SC_KERNEL_BITS 2>/dev/null` - case "${sc_cpu_version}" in - 523) HP_ARCH="hppa1.0" ;; # CPU_PA_RISC1_0 - 528) HP_ARCH="hppa1.1" ;; # CPU_PA_RISC1_1 - 532) # CPU_PA_RISC2_0 - case "${sc_kernel_bits}" in - 32) HP_ARCH="hppa2.0n" ;; - 64) HP_ARCH="hppa2.0w" ;; + sc_kernel_bits=`/usr/bin/getconf SC_KERNEL_BITS 2>/dev/null` + case "${sc_cpu_version}" in + 523) HP_ARCH="hppa1.0" ;; # CPU_PA_RISC1_0 + 528) HP_ARCH="hppa1.1" ;; # CPU_PA_RISC1_1 + 532) # CPU_PA_RISC2_0 + case "${sc_kernel_bits}" in + 32) HP_ARCH="hppa2.0n" ;; + 64) HP_ARCH="hppa2.0w" ;; '') HP_ARCH="hppa2.0" ;; # HP-UX 10.20 - esac ;; - esac + esac ;; + esac fi if [ "${HP_ARCH}" = "" ]; then eval $set_cc_for_build - sed 's/^ //' << EOF >$dummy.c + sed 's/^ //' << EOF >$dummy.c - #define _HPUX_SOURCE - #include - #include + #define _HPUX_SOURCE + #include + #include - int main () - { - #if defined(_SC_KERNEL_BITS) - long bits = sysconf(_SC_KERNEL_BITS); - #endif - long cpu = sysconf (_SC_CPU_VERSION); + int main () + { + #if defined(_SC_KERNEL_BITS) + long bits = sysconf(_SC_KERNEL_BITS); + #endif + long cpu = sysconf (_SC_CPU_VERSION); - switch (cpu) - { - case CPU_PA_RISC1_0: puts ("hppa1.0"); break; - case CPU_PA_RISC1_1: puts ("hppa1.1"); break; - case CPU_PA_RISC2_0: - #if defined(_SC_KERNEL_BITS) - switch (bits) - { - case 64: puts ("hppa2.0w"); break; - case 32: puts ("hppa2.0n"); break; - default: puts ("hppa2.0"); break; - } break; - #else /* !defined(_SC_KERNEL_BITS) */ - puts ("hppa2.0"); break; - #endif - default: puts ("hppa1.0"); break; - } - exit (0); - } + switch (cpu) + { + case CPU_PA_RISC1_0: puts ("hppa1.0"); break; + case CPU_PA_RISC1_1: puts ("hppa1.1"); break; + case CPU_PA_RISC2_0: + #if defined(_SC_KERNEL_BITS) + switch (bits) + { + case 64: puts ("hppa2.0w"); break; + case 32: puts ("hppa2.0n"); break; + default: puts ("hppa2.0"); break; + } break; + #else /* !defined(_SC_KERNEL_BITS) */ + puts ("hppa2.0"); break; + #endif + default: puts ("hppa1.0"); break; + } + exit (0); + } EOF (CCOPTS= $CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null) && HP_ARCH=`$dummy` test -z "$HP_ARCH" && HP_ARCH=hppa @@ -640,7 +661,7 @@ EOF # => hppa64-hp-hpux11.23 if echo __LP64__ | (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | - grep __LP64__ >/dev/null + grep -q __LP64__ then HP_ARCH="hppa2.0w" else @@ -711,22 +732,22 @@ EOF exit ;; C1*:ConvexOS:*:* | convex:ConvexOS:C1*:*) echo c1-convex-bsd - exit ;; + exit ;; C2*:ConvexOS:*:* | convex:ConvexOS:C2*:*) if getsysinfo -f scalar_acc then echo c32-convex-bsd else echo c2-convex-bsd fi - exit ;; + exit ;; C34*:ConvexOS:*:* | convex:ConvexOS:C34*:*) echo c34-convex-bsd - exit ;; + exit ;; C38*:ConvexOS:*:* | convex:ConvexOS:C38*:*) echo c38-convex-bsd - exit ;; + exit ;; C4*:ConvexOS:*:* | convex:ConvexOS:C4*:*) echo c4-convex-bsd - exit ;; + exit ;; CRAY*Y-MP:*:*:*) echo ymp-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' exit ;; @@ -750,14 +771,14 @@ EOF exit ;; F30[01]:UNIX_System_V:*:* | F700:UNIX_System_V:*:*) FUJITSU_PROC=`uname -m | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'` - FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'` - FUJITSU_REL=`echo ${UNAME_RELEASE} | sed -e 's/ /_/'` - echo "${FUJITSU_PROC}-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}" - exit ;; + FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'` + FUJITSU_REL=`echo ${UNAME_RELEASE} | sed -e 's/ /_/'` + echo "${FUJITSU_PROC}-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}" + exit ;; 5000:UNIX_System_V:4.*:*) - FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'` - FUJITSU_REL=`echo ${UNAME_RELEASE} | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/ /_/'` - echo "sparc-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}" + FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'` + FUJITSU_REL=`echo ${UNAME_RELEASE} | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/ /_/'` + echo "sparc-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}" exit ;; i*86:BSD/386:*:* | i*86:BSD/OS:*:* | *:Ascend\ Embedded/OS:*:*) echo ${UNAME_MACHINE}-pc-bsdi${UNAME_RELEASE} @@ -769,13 +790,12 @@ EOF echo ${UNAME_MACHINE}-unknown-bsdi${UNAME_RELEASE} exit ;; *:FreeBSD:*:*) - case ${UNAME_MACHINE} in - pc98) - echo i386-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;; + UNAME_PROCESSOR=`/usr/bin/uname -p` + case ${UNAME_PROCESSOR} in amd64) echo x86_64-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;; *) - echo ${UNAME_MACHINE}-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;; + echo ${UNAME_PROCESSOR}-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;; esac exit ;; i*:CYGWIN*:*) @@ -784,25 +804,34 @@ EOF *:MINGW*:*) echo ${UNAME_MACHINE}-pc-mingw32 exit ;; + i*:MSYS*:*) + echo ${UNAME_MACHINE}-pc-msys + exit ;; i*:windows32*:*) - # uname -m includes "-pc" on this system. - echo ${UNAME_MACHINE}-mingw32 + # uname -m includes "-pc" on this system. + echo ${UNAME_MACHINE}-mingw32 exit ;; i*:PW*:*) echo ${UNAME_MACHINE}-pc-pw32 exit ;; - *:Interix*:[3456]*) - case ${UNAME_MACHINE} in + *:Interix*:*) + case ${UNAME_MACHINE} in x86) echo i586-pc-interix${UNAME_RELEASE} exit ;; - EM64T | authenticamd) + authenticamd | genuineintel | EM64T) echo x86_64-unknown-interix${UNAME_RELEASE} exit ;; + IA64) + echo ia64-unknown-interix${UNAME_RELEASE} + exit ;; esac ;; [345]86:Windows_95:* | [345]86:Windows_98:* | [345]86:Windows_NT:*) echo i${UNAME_MACHINE}-pc-mks exit ;; + 8664:Windows_NT:*) + echo x86_64-pc-mks + exit ;; i*:Windows_NT*:* | Pentium*:Windows_NT*:*) # How do we know it's Interix rather than the generic POSIX subsystem? # It also conflicts with pre-2.0 versions of AT&T UWIN. Should we @@ -832,20 +861,68 @@ EOF i*86:Minix:*:*) echo ${UNAME_MACHINE}-pc-minix exit ;; - arm*:Linux:*:*) + aarch64:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-gnu + exit ;; + aarch64_be:Linux:*:*) + UNAME_MACHINE=aarch64_be echo ${UNAME_MACHINE}-unknown-linux-gnu exit ;; + alpha:Linux:*:*) + case `sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' < /proc/cpuinfo` in + EV5) UNAME_MACHINE=alphaev5 ;; + EV56) UNAME_MACHINE=alphaev56 ;; + PCA56) UNAME_MACHINE=alphapca56 ;; + PCA57) UNAME_MACHINE=alphapca56 ;; + EV6) UNAME_MACHINE=alphaev6 ;; + EV67) UNAME_MACHINE=alphaev67 ;; + EV68*) UNAME_MACHINE=alphaev68 ;; + esac + objdump --private-headers /bin/sh | grep -q ld.so.1 + if test "$?" = 0 ; then LIBC="libc1" ; else LIBC="" ; fi + echo ${UNAME_MACHINE}-unknown-linux-gnu${LIBC} + exit ;; + arm*:Linux:*:*) + eval $set_cc_for_build + if echo __ARM_EABI__ | $CC_FOR_BUILD -E - 2>/dev/null \ + | grep -q __ARM_EABI__ + then + echo ${UNAME_MACHINE}-unknown-linux-gnu + else + if echo __ARM_PCS_VFP | $CC_FOR_BUILD -E - 2>/dev/null \ + | grep -q __ARM_PCS_VFP + then + echo ${UNAME_MACHINE}-unknown-linux-gnueabi + else + echo ${UNAME_MACHINE}-unknown-linux-gnueabihf + fi + fi + exit ;; avr32*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-gnu exit ;; cris:Linux:*:*) - echo cris-axis-linux-gnu + echo ${UNAME_MACHINE}-axis-linux-gnu exit ;; crisv32:Linux:*:*) - echo crisv32-axis-linux-gnu + echo ${UNAME_MACHINE}-axis-linux-gnu exit ;; frv:Linux:*:*) - echo frv-unknown-linux-gnu + echo ${UNAME_MACHINE}-unknown-linux-gnu + exit ;; + hexagon:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-gnu + exit ;; + i*86:Linux:*:*) + LIBC=gnu + eval $set_cc_for_build + sed 's/^ //' << EOF >$dummy.c + #ifdef __dietlibc__ + LIBC=dietlibc + #endif +EOF + eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^LIBC'` + echo "${UNAME_MACHINE}-pc-linux-${LIBC}" exit ;; ia64:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-gnu @@ -856,74 +933,33 @@ EOF m68*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-gnu exit ;; - mips:Linux:*:*) + mips:Linux:*:* | mips64:Linux:*:*) eval $set_cc_for_build sed 's/^ //' << EOF >$dummy.c #undef CPU - #undef mips - #undef mipsel + #undef ${UNAME_MACHINE} + #undef ${UNAME_MACHINE}el #if defined(__MIPSEL__) || defined(__MIPSEL) || defined(_MIPSEL) || defined(MIPSEL) - CPU=mipsel + CPU=${UNAME_MACHINE}el #else #if defined(__MIPSEB__) || defined(__MIPSEB) || defined(_MIPSEB) || defined(MIPSEB) - CPU=mips + CPU=${UNAME_MACHINE} #else CPU= #endif #endif EOF - eval "`$CC_FOR_BUILD -E $dummy.c 2>/dev/null | sed -n ' - /^CPU/{ - s: ::g - p - }'`" - test x"${CPU}" != x && { echo "${CPU}-unknown-linux-gnu"; exit; } - ;; - mips64:Linux:*:*) - eval $set_cc_for_build - sed 's/^ //' << EOF >$dummy.c - #undef CPU - #undef mips64 - #undef mips64el - #if defined(__MIPSEL__) || defined(__MIPSEL) || defined(_MIPSEL) || defined(MIPSEL) - CPU=mips64el - #else - #if defined(__MIPSEB__) || defined(__MIPSEB) || defined(_MIPSEB) || defined(MIPSEB) - CPU=mips64 - #else - CPU= - #endif - #endif -EOF - eval "`$CC_FOR_BUILD -E $dummy.c 2>/dev/null | sed -n ' - /^CPU/{ - s: ::g - p - }'`" + eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^CPU'` test x"${CPU}" != x && { echo "${CPU}-unknown-linux-gnu"; exit; } ;; or32:Linux:*:*) - echo or32-unknown-linux-gnu - exit ;; - ppc:Linux:*:*) - echo powerpc-unknown-linux-gnu + echo ${UNAME_MACHINE}-unknown-linux-gnu exit ;; - ppc64:Linux:*:*) - echo powerpc64-unknown-linux-gnu + padre:Linux:*:*) + echo sparc-unknown-linux-gnu exit ;; - alpha:Linux:*:*) - case `sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' < /proc/cpuinfo` in - EV5) UNAME_MACHINE=alphaev5 ;; - EV56) UNAME_MACHINE=alphaev56 ;; - PCA56) UNAME_MACHINE=alphapca56 ;; - PCA57) UNAME_MACHINE=alphapca56 ;; - EV6) UNAME_MACHINE=alphaev6 ;; - EV67) UNAME_MACHINE=alphaev67 ;; - EV68*) UNAME_MACHINE=alphaev68 ;; - esac - objdump --private-headers /bin/sh | grep ld.so.1 >/dev/null - if test "$?" = 0 ; then LIBC="libc1" ; else LIBC="" ; fi - echo ${UNAME_MACHINE}-unknown-linux-gnu${LIBC} + parisc64:Linux:*:* | hppa64:Linux:*:*) + echo hppa64-unknown-linux-gnu exit ;; parisc:Linux:*:* | hppa:Linux:*:*) # Look for CPU level @@ -933,14 +969,17 @@ EOF *) echo hppa-unknown-linux-gnu ;; esac exit ;; - parisc64:Linux:*:* | hppa64:Linux:*:*) - echo hppa64-unknown-linux-gnu + ppc64:Linux:*:*) + echo powerpc64-unknown-linux-gnu + exit ;; + ppc:Linux:*:*) + echo powerpc-unknown-linux-gnu exit ;; s390:Linux:*:* | s390x:Linux:*:*) echo ${UNAME_MACHINE}-ibm-linux exit ;; sh64*:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-gnu + echo ${UNAME_MACHINE}-unknown-linux-gnu exit ;; sh*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-gnu @@ -948,78 +987,18 @@ EOF sparc:Linux:*:* | sparc64:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-gnu exit ;; + tile*:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-gnu + exit ;; vax:Linux:*:*) echo ${UNAME_MACHINE}-dec-linux-gnu exit ;; x86_64:Linux:*:*) - echo x86_64-unknown-linux-gnu + echo ${UNAME_MACHINE}-unknown-linux-gnu exit ;; - xtensa:Linux:*:*) - echo xtensa-unknown-linux-gnu + xtensa*:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-gnu exit ;; - i*86:Linux:*:*) - # The BFD linker knows what the default object file format is, so - # first see if it will tell us. cd to the root directory to prevent - # problems with other programs or directories called `ld' in the path. - # Set LC_ALL=C to ensure ld outputs messages in English. - ld_supported_targets=`cd /; LC_ALL=C ld --help 2>&1 \ - | sed -ne '/supported targets:/!d - s/[ ][ ]*/ /g - s/.*supported targets: *// - s/ .*// - p'` - case "$ld_supported_targets" in - elf32-i386) - TENTATIVE="${UNAME_MACHINE}-pc-linux-gnu" - ;; - a.out-i386-linux) - echo "${UNAME_MACHINE}-pc-linux-gnuaout" - exit ;; - coff-i386) - echo "${UNAME_MACHINE}-pc-linux-gnucoff" - exit ;; - "") - # Either a pre-BFD a.out linker (linux-gnuoldld) or - # one that does not give us useful --help. - echo "${UNAME_MACHINE}-pc-linux-gnuoldld" - exit ;; - esac - # Determine whether the default compiler is a.out or elf - eval $set_cc_for_build - sed 's/^ //' << EOF >$dummy.c - #include - #ifdef __ELF__ - # ifdef __GLIBC__ - # if __GLIBC__ >= 2 - LIBC=gnu - # else - LIBC=gnulibc1 - # endif - # else - LIBC=gnulibc1 - # endif - #else - #if defined(__INTEL_COMPILER) || defined(__PGI) || defined(__SUNPRO_C) || defined(__SUNPRO_CC) - LIBC=gnu - #else - LIBC=gnuaout - #endif - #endif - #ifdef __dietlibc__ - LIBC=dietlibc - #endif -EOF - eval "`$CC_FOR_BUILD -E $dummy.c 2>/dev/null | sed -n ' - /^LIBC/{ - s: ::g - p - }'`" - test x"${LIBC}" != x && { - echo "${UNAME_MACHINE}-pc-linux-${LIBC}" - exit - } - test x"${TENTATIVE}" != x && { echo "${TENTATIVE}"; exit; } - ;; i*86:DYNIX/ptx:4*:*) # ptx 4.0 does uname -s correctly, with DYNIX/ptx in there. # earlier versions are messed up and put the nodename in both @@ -1027,11 +1006,11 @@ EOF echo i386-sequent-sysv4 exit ;; i*86:UNIX_SV:4.2MP:2.*) - # Unixware is an offshoot of SVR4, but it has its own version - # number series starting with 2... - # I am not positive that other SVR4 systems won't match this, + # Unixware is an offshoot of SVR4, but it has its own version + # number series starting with 2... + # I am not positive that other SVR4 systems won't match this, # I just have to hope. -- rms. - # Use sysv4.2uw... so that sysv4* matches it. + # Use sysv4.2uw... so that sysv4* matches it. echo ${UNAME_MACHINE}-pc-sysv4.2uw${UNAME_VERSION} exit ;; i*86:OS/2:*:*) @@ -1048,7 +1027,7 @@ EOF i*86:syllable:*:*) echo ${UNAME_MACHINE}-pc-syllable exit ;; - i*86:LynxOS:2.*:* | i*86:LynxOS:3.[01]*:* | i*86:LynxOS:4.0*:*) + i*86:LynxOS:2.*:* | i*86:LynxOS:3.[01]*:* | i*86:LynxOS:4.[02]*:*) echo i386-unknown-lynxos${UNAME_RELEASE} exit ;; i*86:*DOS:*:*) @@ -1063,7 +1042,7 @@ EOF fi exit ;; i*86:*:5:[678]*) - # UnixWare 7.x, OpenUNIX and OpenServer 6. + # UnixWare 7.x, OpenUNIX and OpenServer 6. case `/bin/uname -X | grep "^Machine"` in *486*) UNAME_MACHINE=i486 ;; *Pentium) UNAME_MACHINE=i586 ;; @@ -1091,10 +1070,13 @@ EOF exit ;; pc:*:*:*) # Left here for compatibility: - # uname -m prints for DJGPP always 'pc', but it prints nothing about - # the processor, so we play safe by assuming i386. - echo i386-pc-msdosdjgpp - exit ;; + # uname -m prints for DJGPP always 'pc', but it prints nothing about + # the processor, so we play safe by assuming i586. + # Note: whatever this is, it MUST be the same as what config.sub + # prints for the "djgpp" host, or else GDB configury will decide that + # this is a cross-build. + echo i586-pc-msdosdjgpp + exit ;; Intel:Mach:3*:*) echo i386-pc-mach3 exit ;; @@ -1129,8 +1111,18 @@ EOF /bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \ && { echo i586-ncr-sysv4.3${OS_REL}; exit; } ;; 3[34]??:*:4.0:* | 3[34]??,*:*:4.0:*) - /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ - && { echo i486-ncr-sysv4; exit; } ;; + /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ + && { echo i486-ncr-sysv4; exit; } ;; + NCR*:*:4.2:* | MPRAS*:*:4.2:*) + OS_REL='.3' + test -r /etc/.relid \ + && OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid` + /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ + && { echo i486-ncr-sysv4.3${OS_REL}; exit; } + /bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \ + && { echo i586-ncr-sysv4.3${OS_REL}; exit; } + /bin/uname -p 2>/dev/null | /bin/grep pteron >/dev/null \ + && { echo i586-ncr-sysv4.3${OS_REL}; exit; } ;; m68*:LynxOS:2.*:* | m68*:LynxOS:3.0*:*) echo m68k-unknown-lynxos${UNAME_RELEASE} exit ;; @@ -1143,7 +1135,7 @@ EOF rs6000:LynxOS:2.*:*) echo rs6000-unknown-lynxos${UNAME_RELEASE} exit ;; - PowerPC:LynxOS:2.*:* | PowerPC:LynxOS:3.[01]*:* | PowerPC:LynxOS:4.0*:*) + PowerPC:LynxOS:2.*:* | PowerPC:LynxOS:3.[01]*:* | PowerPC:LynxOS:4.[02]*:*) echo powerpc-unknown-lynxos${UNAME_RELEASE} exit ;; SM[BE]S:UNIX_SV:*:*) @@ -1163,10 +1155,10 @@ EOF echo ns32k-sni-sysv fi exit ;; - PENTIUM:*:4.0*:*) # Unisys `ClearPath HMP IX 4000' SVR4/MP effort - # says - echo i586-unisys-sysv4 - exit ;; + PENTIUM:*:4.0*:*) # Unisys `ClearPath HMP IX 4000' SVR4/MP effort + # says + echo i586-unisys-sysv4 + exit ;; *:UNIX_System_V:4*:FTX*) # From Gerald Hewes . # How about differentiating between stratus architectures? -djm @@ -1192,11 +1184,11 @@ EOF exit ;; R[34]000:*System_V*:*:* | R4000:UNIX_SYSV:*:* | R*000:UNIX_SV:*:*) if [ -d /usr/nec ]; then - echo mips-nec-sysv${UNAME_RELEASE} + echo mips-nec-sysv${UNAME_RELEASE} else - echo mips-unknown-sysv${UNAME_RELEASE} + echo mips-unknown-sysv${UNAME_RELEASE} fi - exit ;; + exit ;; BeBox:BeOS:*:*) # BeOS running on hardware made by Be, PPC only. echo powerpc-be-beos exit ;; @@ -1206,6 +1198,9 @@ EOF BePC:BeOS:*:*) # BeOS running on Intel PC compatible. echo i586-pc-beos exit ;; + BePC:Haiku:*:*) # Haiku running on Intel PC compatible. + echo i586-pc-haiku + exit ;; SX-4:SUPER-UX:*:*) echo sx4-nec-superux${UNAME_RELEASE} exit ;; @@ -1233,6 +1228,16 @@ EOF *:Darwin:*:*) UNAME_PROCESSOR=`uname -p` || UNAME_PROCESSOR=unknown case $UNAME_PROCESSOR in + i386) + eval $set_cc_for_build + if [ "$CC_FOR_BUILD" != 'no_compiler_found' ]; then + if (echo '#ifdef __LP64__'; echo IS_64BIT_ARCH; echo '#endif') | \ + (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | \ + grep IS_64BIT_ARCH >/dev/null + then + UNAME_PROCESSOR="x86_64" + fi + fi ;; unknown) UNAME_PROCESSOR=powerpc ;; esac echo ${UNAME_PROCESSOR}-apple-darwin${UNAME_RELEASE} @@ -1248,6 +1253,9 @@ EOF *:QNX:*:4*) echo i386-pc-qnx exit ;; + NEO-?:NONSTOP_KERNEL:*:*) + echo neo-tandem-nsk${UNAME_RELEASE} + exit ;; NSE-?:NONSTOP_KERNEL:*:*) echo nse-tandem-nsk${UNAME_RELEASE} exit ;; @@ -1293,13 +1301,13 @@ EOF echo pdp10-unknown-its exit ;; SEI:*:*:SEIUX) - echo mips-sei-seiux${UNAME_RELEASE} + echo mips-sei-seiux${UNAME_RELEASE} exit ;; *:DragonFly:*:*) echo ${UNAME_MACHINE}-unknown-dragonfly`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` exit ;; *:*VMS:*:*) - UNAME_MACHINE=`(uname -p) 2>/dev/null` + UNAME_MACHINE=`(uname -p) 2>/dev/null` case "${UNAME_MACHINE}" in A*) echo alpha-dec-vms ; exit ;; I*) echo ia64-dec-vms ; exit ;; @@ -1314,6 +1322,12 @@ EOF i*86:rdos:*:*) echo ${UNAME_MACHINE}-pc-rdos exit ;; + i*86:AROS:*:*) + echo ${UNAME_MACHINE}-pc-aros + exit ;; + x86_64:VMkernel:*:*) + echo ${UNAME_MACHINE}-unknown-esx + exit ;; esac #echo '(No uname command or uname output not recognized.)' 1>&2 @@ -1336,11 +1350,11 @@ main () #include printf ("m68k-sony-newsos%s\n", #ifdef NEWSOS4 - "4" + "4" #else - "" + "" #endif - ); exit (0); + ); exit (0); #endif #endif @@ -1474,9 +1488,9 @@ This script, last modified $timestamp, has failed to recognize the operating system you are using. It is advised that you download the most up to date version of the config scripts from - http://savannah.gnu.org/cgi-bin/viewcvs/*checkout*/config/config/config.guess + http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess;hb=HEAD and - http://savannah.gnu.org/cgi-bin/viewcvs/*checkout*/config/config/config.sub + http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub;hb=HEAD If the version you run ($0) is already up to date, please send the following data and any information you think might be diff --git a/cpp/thirdparty/protobuf-2.3.0/gtest/build-aux/config.h.in b/cpp/thirdparty/protobuf-2.5.0/gtest/build-aux/config.h.in similarity index 96% rename from cpp/thirdparty/protobuf-2.3.0/gtest/build-aux/config.h.in rename to cpp/thirdparty/protobuf-2.5.0/gtest/build-aux/config.h.in index a8531bb40..843b5b10c 100644 --- a/cpp/thirdparty/protobuf-2.3.0/gtest/build-aux/config.h.in +++ b/cpp/thirdparty/protobuf-2.5.0/gtest/build-aux/config.h.in @@ -52,6 +52,9 @@ /* Define to the one symbol short name of this package. */ #undef PACKAGE_TARNAME +/* Define to the home page for this package. */ +#undef PACKAGE_URL + /* Define to the version of this package. */ #undef PACKAGE_VERSION diff --git a/cpp/thirdparty/protobuf-2.3.0/config.sub b/cpp/thirdparty/protobuf-2.5.0/gtest/build-aux/config.sub similarity index 85% rename from cpp/thirdparty/protobuf-2.3.0/config.sub rename to cpp/thirdparty/protobuf-2.5.0/gtest/build-aux/config.sub index 1761d8bdf..c894da455 100755 --- a/cpp/thirdparty/protobuf-2.3.0/config.sub +++ b/cpp/thirdparty/protobuf-2.5.0/gtest/build-aux/config.sub @@ -1,10 +1,10 @@ #! /bin/sh # Configuration validation subroutine script. # Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, -# 2000, 2001, 2002, 2003, 2004, 2005, 2006 Free Software Foundation, -# Inc. +# 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, +# 2011, 2012 Free Software Foundation, Inc. -timestamp='2007-06-28' +timestamp='2012-02-10' # This file is (in principle) common to ALL GNU software. # The presence of a machine in this file suggests that SOME GNU software @@ -21,9 +21,7 @@ timestamp='2007-06-28' # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA -# 02110-1301, USA. +# along with this program; if not, see . # # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a @@ -32,13 +30,16 @@ timestamp='2007-06-28' # Please send patches to . Submit a context -# diff and a properly formatted ChangeLog entry. +# diff and a properly formatted GNU ChangeLog entry. # # Configuration subroutine to validate and canonicalize a configuration type. # Supply the specified configuration type as an argument. # If it is invalid, we print an error message on stderr and exit with code 1. # Otherwise, we print the canonical config type on stdout and succeed. +# You can get the latest version of this script from: +# http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub;hb=HEAD + # This file is supposed to be the same for all GNU packages # and recognize all the CPU types, system types and aliases # that are meaningful with *any* GNU software. @@ -72,7 +73,8 @@ Report bugs and patches to ." version="\ GNU config.sub ($timestamp) -Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005 +Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, +2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO @@ -120,12 +122,18 @@ esac # Here we must recognize all the valid KERNEL-OS combinations. maybe_os=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\2/'` case $maybe_os in - nto-qnx* | linux-gnu* | linux-dietlibc | linux-newlib* | linux-uclibc* | \ - uclinux-uclibc* | uclinux-gnu* | kfreebsd*-gnu* | knetbsd*-gnu* | netbsd*-gnu* | \ + nto-qnx* | linux-gnu* | linux-android* | linux-dietlibc | linux-newlib* | \ + linux-uclibc* | uclinux-uclibc* | uclinux-gnu* | kfreebsd*-gnu* | \ + knetbsd*-gnu* | netbsd*-gnu* | \ + kopensolaris*-gnu* | \ storm-chaos* | os2-emx* | rtmk-nova*) os=-$maybe_os basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'` ;; + android-linux) + os=-linux-android + basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'`-unknown + ;; *) basic_machine=`echo $1 | sed 's/-[^-]*$//'` if [ $basic_machine != $1 ] @@ -148,10 +156,13 @@ case $os in -convergent* | -ncr* | -news | -32* | -3600* | -3100* | -hitachi* |\ -c[123]* | -convex* | -sun | -crds | -omron* | -dg | -ultra | -tti* | \ -harris | -dolphin | -highlevel | -gould | -cbm | -ns | -masscomp | \ - -apple | -axis | -knuth | -cray) + -apple | -axis | -knuth | -cray | -microblaze) os= basic_machine=$1 ;; + -bluegene*) + os=-cnk + ;; -sim | -cisco | -oki | -wec | -winbond) os= basic_machine=$1 @@ -166,10 +177,10 @@ case $os in os=-chorusos basic_machine=$1 ;; - -chorusrdb) - os=-chorusrdb + -chorusrdb) + os=-chorusrdb basic_machine=$1 - ;; + ;; -hiux*) os=-hiuxwe2 ;; @@ -238,24 +249,32 @@ case $basic_machine in # Some are omitted here because they have special meanings below. 1750a | 580 \ | a29k \ + | aarch64 | aarch64_be \ | alpha | alphaev[4-8] | alphaev56 | alphaev6[78] | alphapca5[67] \ | alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] | alpha64pca5[67] \ | am33_2.0 \ | arc | arm | arm[bl]e | arme[lb] | armv[2345] | armv[345][lb] | avr | avr32 \ + | be32 | be64 \ | bfin \ | c4x | clipper \ | d10v | d30v | dlx | dsp16xx \ + | epiphany \ | fido | fr30 | frv \ | h8300 | h8500 | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \ + | hexagon \ | i370 | i860 | i960 | ia64 \ | ip2k | iq2000 \ + | le32 | le64 \ + | lm32 \ | m32c | m32r | m32rle | m68000 | m68k | m88k \ - | maxq | mb | microblaze | mcore | mep \ + | maxq | mb | microblaze | mcore | mep | metag \ | mips | mipsbe | mipseb | mipsel | mipsle \ | mips16 \ | mips64 | mips64el \ - | mips64vr | mips64vrel \ + | mips64octeon | mips64octeonel \ | mips64orion | mips64orionel \ + | mips64r5900 | mips64r5900el \ + | mips64vr | mips64vrel \ | mips64vr4100 | mips64vr4100el \ | mips64vr4300 | mips64vr4300el \ | mips64vr5000 | mips64vr5000el \ @@ -268,29 +287,42 @@ case $basic_machine in | mipsisa64sr71k | mipsisa64sr71kel \ | mipstx39 | mipstx39el \ | mn10200 | mn10300 \ + | moxie \ | mt \ | msp430 \ + | nds32 | nds32le | nds32be \ | nios | nios2 \ | ns16k | ns32k \ + | open8 \ | or32 \ | pdp10 | pdp11 | pj | pjl \ - | powerpc | powerpc64 | powerpc64le | powerpcle | ppcbe \ + | powerpc | powerpc64 | powerpc64le | powerpcle \ | pyramid \ + | rl78 | rx \ | score \ - | sh | sh[1234] | sh[24]a | sh[23]e | sh[34]eb | sheb | shbe | shle | sh[1234]le | sh3ele \ + | sh | sh[1234] | sh[24]a | sh[24]aeb | sh[23]e | sh[34]eb | sheb | shbe | shle | sh[1234]le | sh3ele \ | sh64 | sh64le \ | sparc | sparc64 | sparc64b | sparc64v | sparc86x | sparclet | sparclite \ | sparcv8 | sparcv9 | sparcv9b | sparcv9v \ - | spu | strongarm \ - | tahoe | thumb | tic4x | tic80 | tron \ - | v850 | v850e \ + | spu \ + | tahoe | tic4x | tic54x | tic55x | tic6x | tic80 | tron \ + | ubicom32 \ + | v850 | v850e | v850e1 | v850e2 | v850es | v850e2v3 \ | we32k \ - | x86 | xc16x | xscale | xscalee[bl] | xstormy16 | xtensa \ - | z8k) + | x86 | xc16x | xstormy16 | xtensa \ + | z8k | z80) basic_machine=$basic_machine-unknown ;; - m6811 | m68hc11 | m6812 | m68hc12) - # Motorola 68HC11/12. + c54x) + basic_machine=tic54x-unknown + ;; + c55x) + basic_machine=tic55x-unknown + ;; + c6x) + basic_machine=tic6x-unknown + ;; + m6811 | m68hc11 | m6812 | m68hc12 | m68hcs12x | picochip) basic_machine=$basic_machine-unknown os=-none ;; @@ -300,6 +332,21 @@ case $basic_machine in basic_machine=mt-unknown ;; + strongarm | thumb | xscale) + basic_machine=arm-unknown + ;; + xgate) + basic_machine=$basic_machine-unknown + os=-none + ;; + xscaleeb) + basic_machine=armeb-unknown + ;; + + xscaleel) + basic_machine=armel-unknown + ;; + # We use `pc' rather than `unknown' # because (1) that's what they normally are, and # (2) the word "unknown" tends to confuse beginning users. @@ -314,29 +361,36 @@ case $basic_machine in # Recognize the basic CPU types with company name. 580-* \ | a29k-* \ + | aarch64-* | aarch64_be-* \ | alpha-* | alphaev[4-8]-* | alphaev56-* | alphaev6[78]-* \ | alpha64-* | alpha64ev[4-8]-* | alpha64ev56-* | alpha64ev6[78]-* \ | alphapca5[67]-* | alpha64pca5[67]-* | arc-* \ | arm-* | armbe-* | armle-* | armeb-* | armv*-* \ | avr-* | avr32-* \ + | be32-* | be64-* \ | bfin-* | bs2000-* \ - | c[123]* | c30-* | [cjt]90-* | c4x-* | c54x-* | c55x-* | c6x-* \ + | c[123]* | c30-* | [cjt]90-* | c4x-* \ | clipper-* | craynv-* | cydra-* \ | d10v-* | d30v-* | dlx-* \ | elxsi-* \ | f30[01]-* | f700-* | fido-* | fr30-* | frv-* | fx80-* \ | h8300-* | h8500-* \ | hppa-* | hppa1.[01]-* | hppa2.0-* | hppa2.0[nw]-* | hppa64-* \ + | hexagon-* \ | i*86-* | i860-* | i960-* | ia64-* \ | ip2k-* | iq2000-* \ + | le32-* | le64-* \ + | lm32-* \ | m32c-* | m32r-* | m32rle-* \ | m68000-* | m680[012346]0-* | m68360-* | m683?2-* | m68k-* \ - | m88110-* | m88k-* | maxq-* | mcore-* \ + | m88110-* | m88k-* | maxq-* | mcore-* | metag-* | microblaze-* \ | mips-* | mipsbe-* | mipseb-* | mipsel-* | mipsle-* \ | mips16-* \ | mips64-* | mips64el-* \ - | mips64vr-* | mips64vrel-* \ + | mips64octeon-* | mips64octeonel-* \ | mips64orion-* | mips64orionel-* \ + | mips64r5900-* | mips64r5900el-* \ + | mips64vr-* | mips64vrel-* \ | mips64vr4100-* | mips64vr4100el-* \ | mips64vr4300-* | mips64vr4300el-* \ | mips64vr5000-* | mips64vr5000el-* \ @@ -351,27 +405,36 @@ case $basic_machine in | mmix-* \ | mt-* \ | msp430-* \ + | nds32-* | nds32le-* | nds32be-* \ | nios-* | nios2-* \ | none-* | np1-* | ns16k-* | ns32k-* \ + | open8-* \ | orion-* \ | pdp10-* | pdp11-* | pj-* | pjl-* | pn-* | power-* \ - | powerpc-* | powerpc64-* | powerpc64le-* | powerpcle-* | ppcbe-* \ + | powerpc-* | powerpc64-* | powerpc64le-* | powerpcle-* \ | pyramid-* \ - | romp-* | rs6000-* \ - | sh-* | sh[1234]-* | sh[24]a-* | sh[23]e-* | sh[34]eb-* | sheb-* | shbe-* \ + | rl78-* | romp-* | rs6000-* | rx-* \ + | sh-* | sh[1234]-* | sh[24]a-* | sh[24]aeb-* | sh[23]e-* | sh[34]eb-* | sheb-* | shbe-* \ | shle-* | sh[1234]le-* | sh3ele-* | sh64-* | sh64le-* \ | sparc-* | sparc64-* | sparc64b-* | sparc64v-* | sparc86x-* | sparclet-* \ | sparclite-* \ - | sparcv8-* | sparcv9-* | sparcv9b-* | sparcv9v-* | strongarm-* | sv1-* | sx?-* \ - | tahoe-* | thumb-* \ + | sparcv8-* | sparcv9-* | sparcv9b-* | sparcv9v-* | sv1-* | sx?-* \ + | tahoe-* \ | tic30-* | tic4x-* | tic54x-* | tic55x-* | tic6x-* | tic80-* \ + | tile*-* \ | tron-* \ - | v850-* | v850e-* | vax-* \ + | ubicom32-* \ + | v850-* | v850e-* | v850e1-* | v850es-* | v850e2-* | v850e2v3-* \ + | vax-* \ | we32k-* \ - | x86-* | x86_64-* | xc16x-* | xps100-* | xscale-* | xscalee[bl]-* \ - | xstormy16-* | xtensa-* \ + | x86-* | x86_64-* | xc16x-* | xps100-* \ + | xstormy16-* | xtensa*-* \ | ymp-* \ - | z8k-*) + | z8k-* | z80-*) + ;; + # Recognize the basic CPU types without company name, with glob match. + xtensa*) + basic_machine=$basic_machine-unknown ;; # Recognize the various machine names and aliases which stand # for a CPU type and a company and sometimes even an OS. @@ -389,7 +452,7 @@ case $basic_machine in basic_machine=a29k-amd os=-udi ;; - abacus) + abacus) basic_machine=abacus-unknown ;; adobe68k) @@ -435,6 +498,10 @@ case $basic_machine in basic_machine=m68k-apollo os=-bsd ;; + aros) + basic_machine=i386-pc + os=-aros + ;; aux) basic_machine=m68k-apple os=-aux @@ -443,10 +510,35 @@ case $basic_machine in basic_machine=ns32k-sequent os=-dynix ;; + blackfin) + basic_machine=bfin-unknown + os=-linux + ;; + blackfin-*) + basic_machine=bfin-`echo $basic_machine | sed 's/^[^-]*-//'` + os=-linux + ;; + bluegene*) + basic_machine=powerpc-ibm + os=-cnk + ;; + c54x-*) + basic_machine=tic54x-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + c55x-*) + basic_machine=tic55x-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + c6x-*) + basic_machine=tic6x-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; c90) basic_machine=c90-cray os=-unicos ;; + cegcc) + basic_machine=arm-unknown + os=-cegcc + ;; convex-c1) basic_machine=c1-convex os=-bsd @@ -475,7 +567,7 @@ case $basic_machine in basic_machine=craynv-cray os=-unicosmp ;; - cr16) + cr16 | cr16-*) basic_machine=cr16-unknown os=-elf ;; @@ -514,6 +606,10 @@ case $basic_machine in basic_machine=m88k-motorola os=-sysv3 ;; + dicos) + basic_machine=i686-pc + os=-dicos + ;; djgpp) basic_machine=i586-pc os=-msdosdjgpp @@ -629,7 +725,6 @@ case $basic_machine in i370-ibm* | ibm*) basic_machine=i370-ibm ;; -# I'm not sure what "Sysv32" means. Should this be sysv3.2? i*86v32) basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` os=-sysv32 @@ -668,6 +763,14 @@ case $basic_machine in basic_machine=m68k-isi os=-sysv ;; + m68knommu) + basic_machine=m68k-unknown + os=-linux + ;; + m68knommu-*) + basic_machine=m68k-`echo $basic_machine | sed 's/^[^-]*-//'` + os=-linux + ;; m88k-omron*) basic_machine=m88k-omron ;; @@ -679,6 +782,9 @@ case $basic_machine in basic_machine=ns32k-utek os=-sysv ;; + microblaze) + basic_machine=microblaze-xilinx + ;; mingw32) basic_machine=i386-pc os=-mingw32 @@ -715,10 +821,18 @@ case $basic_machine in ms1-*) basic_machine=`echo $basic_machine | sed -e 's/ms1-/mt-/'` ;; + msys) + basic_machine=i386-pc + os=-msys + ;; mvs) basic_machine=i370-ibm os=-mvs ;; + nacl) + basic_machine=le32-unknown + os=-nacl + ;; ncr3000) basic_machine=i486-ncr os=-sysv4 @@ -783,6 +897,12 @@ case $basic_machine in np1) basic_machine=np1-gould ;; + neo-tandem) + basic_machine=neo-tandem + ;; + nse-tandem) + basic_machine=nse-tandem + ;; nsr-tandem) basic_machine=nsr-tandem ;; @@ -813,6 +933,14 @@ case $basic_machine in basic_machine=i860-intel os=-osf ;; + parisc) + basic_machine=hppa-unknown + os=-linux + ;; + parisc-*) + basic_machine=hppa-`echo $basic_machine | sed 's/^[^-]*-//'` + os=-linux + ;; pbd) basic_machine=sparc-tti ;; @@ -857,9 +985,10 @@ case $basic_machine in ;; power) basic_machine=power-ibm ;; - ppc) basic_machine=powerpc-unknown + ppc | ppcbe) basic_machine=powerpc-unknown ;; - ppc-*) basic_machine=powerpc-`echo $basic_machine | sed 's/^[^-]*-//'` + ppc-* | ppcbe-*) + basic_machine=powerpc-`echo $basic_machine | sed 's/^[^-]*-//'` ;; ppcle | powerpclittle | ppc-le | powerpc-little) basic_machine=powerpcle-unknown @@ -953,6 +1082,9 @@ case $basic_machine in basic_machine=i860-stratus os=-sysv4 ;; + strongarm-* | thumb-*) + basic_machine=arm-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; sun2) basic_machine=m68000-sun ;; @@ -1009,17 +1141,9 @@ case $basic_machine in basic_machine=t90-cray os=-unicos ;; - tic54x | c54x*) - basic_machine=tic54x-unknown - os=-coff - ;; - tic55x | c55x*) - basic_machine=tic55x-unknown - os=-coff - ;; - tic6x | c6x*) - basic_machine=tic6x-unknown - os=-coff + tile*) + basic_machine=$basic_machine-unknown + os=-linux-gnu ;; tx39) basic_machine=mipstx39-unknown @@ -1088,6 +1212,9 @@ case $basic_machine in xps | xps100) basic_machine=xps100-honeywell ;; + xscale-* | xscalee[bl]-*) + basic_machine=`echo $basic_machine | sed 's/^xscale/arm/'` + ;; ymp) basic_machine=ymp-cray os=-unicos @@ -1096,6 +1223,10 @@ case $basic_machine in basic_machine=z8k-unknown os=-sim ;; + z80-*-coff) + basic_machine=z80-unknown + os=-sim + ;; none) basic_machine=none-none os=-none @@ -1134,7 +1265,7 @@ case $basic_machine in we32k) basic_machine=we32k-att ;; - sh[1234] | sh[24]a | sh[34]eb | sh[1234]le | sh[23]ele) + sh[1234] | sh[24]a | sh[24]aeb | sh[34]eb | sh[1234]le | sh[23]ele) basic_machine=sh-unknown ;; sparc | sparcv8 | sparcv9 | sparcv9b | sparcv9v) @@ -1181,9 +1312,12 @@ esac if [ x"$os" != x"" ] then case $os in - # First match some system type aliases - # that might get confused with valid system types. + # First match some system type aliases + # that might get confused with valid system types. # -solaris* is a basic system type, with this one exception. + -auroraux) + os=-auroraux + ;; -solaris1 | -solaris1.*) os=`echo $os | sed -e 's|solaris1|sunos4|'` ;; @@ -1204,10 +1338,11 @@ case $os in # Each alternative MUST END IN A *, to match a version number. # -sysv* is not here because it comes later, after sysvr4. -gnu* | -bsd* | -mach* | -minix* | -genix* | -ultrix* | -irix* \ - | -*vms* | -sco* | -esix* | -isc* | -aix* | -sunos | -sunos[34]*\ - | -hpux* | -unos* | -osf* | -luna* | -dgux* | -solaris* | -sym* \ + | -*vms* | -sco* | -esix* | -isc* | -aix* | -cnk* | -sunos | -sunos[34]*\ + | -hpux* | -unos* | -osf* | -luna* | -dgux* | -auroraux* | -solaris* \ + | -sym* | -kopensolaris* \ | -amigaos* | -amigados* | -msdos* | -newsos* | -unicos* | -aof* \ - | -aos* \ + | -aos* | -aros* \ | -nindy* | -vxsim* | -vxworks* | -ebmon* | -hms* | -mvs* \ | -clix* | -riscos* | -uniplus* | -iris* | -rtu* | -xenix* \ | -hiux* | -386bsd* | -knetbsd* | -mirbsd* | -netbsd* \ @@ -1216,9 +1351,10 @@ case $os in | -bosx* | -nextstep* | -cxux* | -aout* | -elf* | -oabi* \ | -ptx* | -coff* | -ecoff* | -winnt* | -domain* | -vsta* \ | -udi* | -eabi* | -lites* | -ieee* | -go32* | -aux* \ - | -chorusos* | -chorusrdb* \ - | -cygwin* | -pe* | -psos* | -moss* | -proelf* | -rtems* \ - | -mingw32* | -linux-gnu* | -linux-newlib* | -linux-uclibc* \ + | -chorusos* | -chorusrdb* | -cegcc* \ + | -cygwin* | -msys* | -pe* | -psos* | -moss* | -proelf* | -rtems* \ + | -mingw32* | -linux-gnu* | -linux-android* \ + | -linux-newlib* | -linux-uclibc* \ | -uxpv* | -beos* | -mpeix* | -udk* \ | -interix* | -uwin* | -mks* | -rhapsody* | -darwin* | -opened* \ | -openstep* | -oskit* | -conix* | -pw32* | -nonstopux* \ @@ -1226,7 +1362,7 @@ case $os in | -os2* | -vos* | -palmos* | -uclinux* | -nucleus* \ | -morphos* | -superux* | -rtmk* | -rtmk-nova* | -windiss* \ | -powermax* | -dnix* | -nx6 | -nx7 | -sei* | -dragonfly* \ - | -skyos* | -haiku* | -rdos* | -toppers* | -drops*) + | -skyos* | -haiku* | -rdos* | -toppers* | -drops* | -es*) # Remember, each alternative MUST END IN *, to match a version number. ;; -qnx*) @@ -1265,7 +1401,7 @@ case $os in -opened*) os=-openedition ;; - -os400*) + -os400*) os=-os400 ;; -wince*) @@ -1314,7 +1450,7 @@ case $os in -sinix*) os=-sysv4 ;; - -tpf*) + -tpf*) os=-tpf ;; -triton*) @@ -1356,6 +1492,11 @@ case $os in -zvmoe) os=-zvmoe ;; + -dicos*) + os=-dicos + ;; + -nacl*) + ;; -none) ;; *) @@ -1378,10 +1519,10 @@ else # system, and we'll never get to this point. case $basic_machine in - score-*) + score-*) os=-elf ;; - spu-*) + spu-*) os=-elf ;; *-acorn) @@ -1393,8 +1534,17 @@ case $basic_machine in arm*-semi) os=-aout ;; - c4x-* | tic4x-*) - os=-coff + c4x-* | tic4x-*) + os=-coff + ;; + tic54x-*) + os=-coff + ;; + tic55x-*) + os=-coff + ;; + tic6x-*) + os=-coff ;; # This must come before the *-dec entry. pdp10-*) @@ -1414,14 +1564,11 @@ case $basic_machine in ;; m68000-sun) os=-sunos3 - # This also exists in the configure program, but was not the - # default. - # os=-sunos4 ;; m68*-cisco) os=-aout ;; - mep-*) + mep-*) os=-elf ;; mips*-cisco) @@ -1448,7 +1595,7 @@ case $basic_machine in *-ibm) os=-aix ;; - *-knuth) + *-knuth) os=-mmixware ;; *-wec) @@ -1553,7 +1700,7 @@ case $basic_machine in -sunos*) vendor=sun ;; - -aix*) + -cnk*|-aix*) vendor=ibm ;; -beos*) diff --git a/cpp/thirdparty/protobuf-2.3.0/depcomp b/cpp/thirdparty/protobuf-2.5.0/gtest/build-aux/depcomp similarity index 81% rename from cpp/thirdparty/protobuf-2.3.0/depcomp rename to cpp/thirdparty/protobuf-2.5.0/gtest/build-aux/depcomp index e5f9736c7..bd0ac0895 100755 --- a/cpp/thirdparty/protobuf-2.3.0/depcomp +++ b/cpp/thirdparty/protobuf-2.5.0/gtest/build-aux/depcomp @@ -1,10 +1,10 @@ #! /bin/sh # depcomp - compile a program generating dependencies as side-effects -scriptversion=2007-03-29.01 +scriptversion=2011-12-04.11; # UTC -# Copyright (C) 1999, 2000, 2003, 2004, 2005, 2006, 2007 Free Software -# Foundation, Inc. +# Copyright (C) 1999, 2000, 2003, 2004, 2005, 2006, 2007, 2009, 2010, +# 2011 Free Software Foundation, Inc. # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by @@ -17,9 +17,7 @@ scriptversion=2007-03-29.01 # GNU General Public License for more details. # You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA -# 02110-1301, USA. +# along with this program. If not, see . # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a @@ -46,7 +44,7 @@ Environment variables: object Object file output by `PROGRAMS ARGS'. DEPDIR directory where to store dependencies. depfile Dependency file to output. - tmpdepfile Temporary file to use when outputing dependencies. + tmpdepfile Temporary file to use when outputting dependencies. libtool Whether libtool is used (yes/no). Report bugs to . @@ -87,6 +85,23 @@ if test "$depmode" = dashXmstdout; then depmode=dashmstdout fi +cygpath_u="cygpath -u -f -" +if test "$depmode" = msvcmsys; then + # This is just like msvisualcpp but w/o cygpath translation. + # Just convert the backslash-escaped backslashes to single forward + # slashes to satisfy depend.m4 + cygpath_u='sed s,\\\\,/,g' + depmode=msvisualcpp +fi + +if test "$depmode" = msvc7msys; then + # This is just like msvc7 but w/o cygpath translation. + # Just convert the backslash-escaped backslashes to single forward + # slashes to satisfy depend.m4 + cygpath_u='sed s,\\\\,/,g' + depmode=msvc7 +fi + case "$depmode" in gcc3) ## gcc 3 implements dependency tracking that does exactly what @@ -151,10 +166,12 @@ gcc) ' < "$tmpdepfile" | ## Some versions of gcc put a space before the `:'. On the theory ## that the space means something, we add a space to the output as -## well. +## well. hp depmode also adds that space, but also prefixes the VPATH +## to the object. Take care to not repeat it in the output. ## Some versions of the HPUX 10.20 sed can't process this invocation ## correctly. Breaking it into two sed invocations is a workaround. - sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile" + sed -e 's/^\\$//' -e '/^$/d' -e "s|.*$object$||" -e '/:$/d' \ + | sed -e 's/$/ :/' >> "$depfile" rm -f "$tmpdepfile" ;; @@ -192,14 +209,14 @@ sgi) ' < "$tmpdepfile" \ | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' | \ tr ' -' ' ' >> $depfile - echo >> $depfile +' ' ' >> "$depfile" + echo >> "$depfile" # The second pass generates a dummy entry for each header file. tr ' ' ' ' < "$tmpdepfile" \ | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' -e 's/$/:/' \ - >> $depfile + >> "$depfile" else # The sourcefile does not contain any dependencies, so just # store a dummy comment line, to avoid errors with the Makefile @@ -328,7 +345,12 @@ hp2) if test -f "$tmpdepfile"; then sed -e "s,^.*\.[a-z]*:,$object:," "$tmpdepfile" > "$depfile" # Add `dependent.h:' lines. - sed -ne '2,${; s/^ *//; s/ \\*$//; s/$/:/; p;}' "$tmpdepfile" >> "$depfile" + sed -ne '2,${ + s/^ *// + s/ \\*$// + s/$/:/ + p + }' "$tmpdepfile" >> "$depfile" else echo "#dummy" > "$depfile" fi @@ -393,6 +415,52 @@ tru64) rm -f "$tmpdepfile" ;; +msvc7) + if test "$libtool" = yes; then + showIncludes=-Wc,-showIncludes + else + showIncludes=-showIncludes + fi + "$@" $showIncludes > "$tmpdepfile" + stat=$? + grep -v '^Note: including file: ' "$tmpdepfile" + if test "$stat" = 0; then : + else + rm -f "$tmpdepfile" + exit $stat + fi + rm -f "$depfile" + echo "$object : \\" > "$depfile" + # The first sed program below extracts the file names and escapes + # backslashes for cygpath. The second sed program outputs the file + # name when reading, but also accumulates all include files in the + # hold buffer in order to output them again at the end. This only + # works with sed implementations that can handle large buffers. + sed < "$tmpdepfile" -n ' +/^Note: including file: *\(.*\)/ { + s//\1/ + s/\\/\\\\/g + p +}' | $cygpath_u | sort -u | sed -n ' +s/ /\\ /g +s/\(.*\)/ \1 \\/p +s/.\(.*\) \\/\1:/ +H +$ { + s/.*/ / + G + p +}' >> "$depfile" + rm -f "$tmpdepfile" + ;; + +msvc7msys) + # This case exists only to let depend.m4 do its work. It works by + # looking at the text of this script. This case will never be run, + # since it is checked for above. + exit 1 + ;; + #nosideeffect) # This comment above is used by automake to tell side-effect # dependency tracking mechanisms from slower ones. @@ -404,7 +472,7 @@ dashmstdout) # Remove the call to Libtool. if test "$libtool" = yes; then - while test $1 != '--mode=compile'; do + while test "X$1" != 'X--mode=compile'; do shift done shift @@ -455,36 +523,45 @@ makedepend) "$@" || exit $? # Remove any Libtool call if test "$libtool" = yes; then - while test $1 != '--mode=compile'; do + while test "X$1" != 'X--mode=compile'; do shift done shift fi # X makedepend shift - cleared=no - for arg in "$@"; do + cleared=no eat=no + for arg + do case $cleared in no) set ""; shift cleared=yes ;; esac + if test $eat = yes; then + eat=no + continue + fi case "$arg" in -D*|-I*) set fnord "$@" "$arg"; shift ;; # Strip any option that makedepend may not understand. Remove # the object too, otherwise makedepend will parse it as a source file. + -arch) + eat=yes ;; -*|$object) ;; *) set fnord "$@" "$arg"; shift ;; esac done - obj_suffix="`echo $object | sed 's/^.*\././'`" + obj_suffix=`echo "$object" | sed 's/^.*\././'` touch "$tmpdepfile" ${MAKEDEPEND-makedepend} -o"$obj_suffix" -f"$tmpdepfile" "$@" rm -f "$depfile" - cat < "$tmpdepfile" > "$depfile" + # makedepend may prepend the VPATH from the source file name to the object. + # No need to regex-escape $object, excess matching of '.' is harmless. + sed "s|^.*\($object *:\)|\1|" "$tmpdepfile" > "$depfile" sed '1,2d' "$tmpdepfile" | tr ' ' ' ' | \ ## Some versions of the HPUX 10.20 sed can't process this invocation @@ -500,7 +577,7 @@ cpp) # Remove the call to Libtool. if test "$libtool" = yes; then - while test $1 != '--mode=compile'; do + while test "X$1" != 'X--mode=compile'; do shift done shift @@ -538,13 +615,27 @@ cpp) msvisualcpp) # Important note: in order to support this mode, a compiler *must* - # always write the preprocessed file to stdout, regardless of -o, - # because we must use -o when running libtool. + # always write the preprocessed file to stdout. "$@" || exit $? + + # Remove the call to Libtool. + if test "$libtool" = yes; then + while test "X$1" != 'X--mode=compile'; do + shift + done + shift + fi + IFS=" " for arg do case "$arg" in + -o) + shift + ;; + $object) + shift + ;; "-Gm"|"/Gm"|"-Gi"|"/Gi"|"-ZI"|"/ZI") set fnord "$@" shift @@ -557,16 +648,23 @@ msvisualcpp) ;; esac done - "$@" -E | - sed -n '/^#line [0-9][0-9]* "\([^"]*\)"/ s::echo "`cygpath -u \\"\1\\"`":p' | sort | uniq > "$tmpdepfile" + "$@" -E 2>/dev/null | + sed -n '/^#line [0-9][0-9]* "\([^"]*\)"/ s::\1:p' | $cygpath_u | sort -u > "$tmpdepfile" rm -f "$depfile" echo "$object : \\" > "$depfile" - . "$tmpdepfile" | sed 's% %\\ %g' | sed -n '/^\(.*\)$/ s:: \1 \\:p' >> "$depfile" + sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s:: \1 \\:p' >> "$depfile" echo " " >> "$depfile" - . "$tmpdepfile" | sed 's% %\\ %g' | sed -n '/^\(.*\)$/ s::\1\::p' >> "$depfile" + sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s::\1\::p' >> "$depfile" rm -f "$tmpdepfile" ;; +msvcmsys) + # This case exists only to let depend.m4 do its work. It works by + # looking at the text of this script. This case will never be run, + # since it is checked for above. + exit 1 + ;; + none) exec "$@" ;; @@ -585,5 +683,6 @@ exit 0 # eval: (add-hook 'write-file-hooks 'time-stamp) # time-stamp-start: "scriptversion=" # time-stamp-format: "%:y-%02m-%02d.%02H" -# time-stamp-end: "$" +# time-stamp-time-zone: "UTC" +# time-stamp-end: "; # UTC" # End: diff --git a/cpp/thirdparty/protobuf-2.3.0/install-sh b/cpp/thirdparty/protobuf-2.5.0/gtest/build-aux/install-sh similarity index 95% rename from cpp/thirdparty/protobuf-2.3.0/install-sh rename to cpp/thirdparty/protobuf-2.5.0/gtest/build-aux/install-sh index a5897de6e..a9244eb07 100755 --- a/cpp/thirdparty/protobuf-2.3.0/install-sh +++ b/cpp/thirdparty/protobuf-2.5.0/gtest/build-aux/install-sh @@ -1,7 +1,7 @@ #!/bin/sh # install - install a program, script, or datafile -scriptversion=2006-12-25.00 +scriptversion=2011-01-19.21; # UTC # This originates from X11R5 (mit/util/scripts/install.sh), which was # later released in X11R6 (xc/config/util/install.sh) with the @@ -156,6 +156,10 @@ while test $# -ne 0; do -s) stripcmd=$stripprog;; -t) dst_arg=$2 + # Protect names problematic for `test' and other utilities. + case $dst_arg in + -* | [=\(\)!]) dst_arg=./$dst_arg;; + esac shift;; -T) no_target_directory=true;; @@ -186,6 +190,10 @@ if test $# -ne 0 && test -z "$dir_arg$dst_arg"; then fi shift # arg dst_arg=$arg + # Protect names problematic for `test' and other utilities. + case $dst_arg in + -* | [=\(\)!]) dst_arg=./$dst_arg;; + esac done fi @@ -200,7 +208,11 @@ if test $# -eq 0; then fi if test -z "$dir_arg"; then - trap '(exit $?); exit' 1 2 13 15 + do_exit='(exit $ret); exit $ret' + trap "ret=129; $do_exit" 1 + trap "ret=130; $do_exit" 2 + trap "ret=141; $do_exit" 13 + trap "ret=143; $do_exit" 15 # Set umask so as not to create temps with too-generous modes. # However, 'strip' requires both read and write access to temps. @@ -228,9 +240,9 @@ fi for src do - # Protect names starting with `-'. + # Protect names problematic for `test' and other utilities. case $src in - -*) src=./$src;; + -* | [=\(\)!]) src=./$src;; esac if test -n "$dir_arg"; then @@ -252,12 +264,7 @@ do echo "$0: no destination specified." >&2 exit 1 fi - dst=$dst_arg - # Protect names starting with `-'. - case $dst in - -*) dst=./$dst;; - esac # If destination is a directory, append the input filename; won't work # if double slashes aren't ignored. @@ -385,7 +392,7 @@ do case $dstdir in /*) prefix='/';; - -*) prefix='./';; + [-=\(\)!]*) prefix='./';; *) prefix='';; esac @@ -403,7 +410,7 @@ do for d do - test -z "$d" && continue + test X"$d" = X && continue prefix=$prefix$d if test -d "$prefix"; then @@ -515,5 +522,6 @@ done # eval: (add-hook 'write-file-hooks 'time-stamp) # time-stamp-start: "scriptversion=" # time-stamp-format: "%:y-%02m-%02d.%02H" -# time-stamp-end: "$" +# time-stamp-time-zone: "UTC" +# time-stamp-end: "; # UTC" # End: diff --git a/cpp/thirdparty/protobuf-2.3.0/gtest/build-aux/ltmain.sh b/cpp/thirdparty/protobuf-2.5.0/gtest/build-aux/ltmain.sh old mode 100755 new mode 100644 similarity index 64% rename from cpp/thirdparty/protobuf-2.3.0/gtest/build-aux/ltmain.sh rename to cpp/thirdparty/protobuf-2.5.0/gtest/build-aux/ltmain.sh index 174e49238..c2852d856 --- a/cpp/thirdparty/protobuf-2.3.0/gtest/build-aux/ltmain.sh +++ b/cpp/thirdparty/protobuf-2.5.0/gtest/build-aux/ltmain.sh @@ -1,9 +1,9 @@ -# Generated from ltmain.m4sh. -# ltmain.sh (GNU libtool) 2.2.4 +# libtool (GNU libtool) 2.4.2 # Written by Gordon Matzigkeit , 1996 -# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005, 2006, 2007 2008 Free Software Foundation, Inc. +# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005, 2006, +# 2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc. # This is free software; see the source for copying conditions. There is NO # warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. @@ -32,50 +32,57 @@ # # Provide generalized library-building support services. # -# --config show all configuration variables -# --debug enable verbose shell tracing -# -n, --dry-run display commands without modifying any files -# --features display basic configuration information and exit -# --mode=MODE use operation mode MODE -# --preserve-dup-deps don't remove duplicate dependency libraries -# --quiet, --silent don't print informational messages -# --tag=TAG use configuration variables from tag TAG -# -v, --verbose print informational messages (default) -# --version print version information -# -h, --help print short or long help message +# --config show all configuration variables +# --debug enable verbose shell tracing +# -n, --dry-run display commands without modifying any files +# --features display basic configuration information and exit +# --mode=MODE use operation mode MODE +# --preserve-dup-deps don't remove duplicate dependency libraries +# --quiet, --silent don't print informational messages +# --no-quiet, --no-silent +# print informational messages (default) +# --no-warn don't display warning messages +# --tag=TAG use configuration variables from tag TAG +# -v, --verbose print more informational messages than default +# --no-verbose don't print the extra informational messages +# --version print version information +# -h, --help, --help-all print short, long, or detailed help message # # MODE must be one of the following: # -# clean remove files from the build directory -# compile compile a source file into a libtool object -# execute automatically set library path, then run a program -# finish complete the installation of libtool libraries -# install install libraries or executables -# link create a library or an executable -# uninstall remove libraries from an installed directory +# clean remove files from the build directory +# compile compile a source file into a libtool object +# execute automatically set library path, then run a program +# finish complete the installation of libtool libraries +# install install libraries or executables +# link create a library or an executable +# uninstall remove libraries from an installed directory # -# MODE-ARGS vary depending on the MODE. +# MODE-ARGS vary depending on the MODE. When passed as first option, +# `--mode=MODE' may be abbreviated as `MODE' or a unique abbreviation of that. # Try `$progname --help --mode=MODE' for a more detailed description of MODE. # # When reporting a bug, please describe a test case to reproduce it and # include the following information: # -# host-triplet: $host -# shell: $SHELL -# compiler: $LTCC -# compiler flags: $LTCFLAGS -# linker: $LD (gnu? $with_gnu_ld) -# $progname: (GNU libtool) 2.2.4 -# automake: $automake_version -# autoconf: $autoconf_version +# host-triplet: $host +# shell: $SHELL +# compiler: $LTCC +# compiler flags: $LTCFLAGS +# linker: $LD (gnu? $with_gnu_ld) +# $progname: (GNU libtool) 2.4.2 Debian-2.4.2-1ubuntu1 +# automake: $automake_version +# autoconf: $autoconf_version # # Report bugs to . +# GNU libtool home page: . +# General help using GNU software: . -PROGRAM=ltmain.sh +PROGRAM=libtool PACKAGE=libtool -VERSION=2.2.4 +VERSION="2.4.2 Debian-2.4.2-1ubuntu1" TIMESTAMP="" -package_revision=1.2976 +package_revision=1.3337 # Be Bourne compatible if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then @@ -91,10 +98,15 @@ fi BIN_SH=xpg4; export BIN_SH # for Tru64 DUALCASE=1; export DUALCASE # for MKS sh +# A function that is used when there is no print builtin or printf. +func_fallback_echo () +{ + eval 'cat <<_LTECHO_EOF +$1 +_LTECHO_EOF' +} + # NLS nuisances: We save the old values to restore during execute mode. -# Only set LANG and LC_ALL to C if already set. -# These must not be set unconditionally because not all systems understand -# e.g. LANG=C (notably SCO). lt_user_locale= lt_safe_locale= for lt_var in LANG LANGUAGE LC_ALL LC_CTYPE LC_COLLATE LC_MESSAGES @@ -107,24 +119,28 @@ do lt_safe_locale=\"$lt_var=C; \$lt_safe_locale\" fi" done +LC_ALL=C +LANGUAGE=C +export LANGUAGE LC_ALL $lt_unset CDPATH +# Work around backward compatibility issue on IRIX 6.5. On IRIX 6.4+, sh +# is ksh but when the shell is invoked as "sh" and the current value of +# the _XPG environment variable is not equal to 1 (one), the special +# positional parameter $0, within a function call, is the name of the +# function. +progpath="$0" : ${CP="cp -f"} -: ${ECHO="echo"} -: ${EGREP="/usr/bin/grep -E"} -: ${FGREP="/usr/bin/grep -F"} -: ${GREP="/usr/bin/grep"} -: ${LN_S="ln -s"} +test "${ECHO+set}" = set || ECHO=${as_echo-'printf %s\n'} : ${MAKE="make"} : ${MKDIR="mkdir"} : ${MV="mv -f"} : ${RM="rm -f"} -: ${SED="/opt/local/bin/gsed"} : ${SHELL="${CONFIG_SHELL-/bin/sh}"} : ${Xsed="$SED -e 1s/^X//"} @@ -144,6 +160,27 @@ IFS=" $lt_nl" dirname="s,/[^/]*$,," basename="s,^.*/,," +# func_dirname file append nondir_replacement +# Compute the dirname of FILE. If nonempty, add APPEND to the result, +# otherwise set result to NONDIR_REPLACEMENT. +func_dirname () +{ + func_dirname_result=`$ECHO "${1}" | $SED "$dirname"` + if test "X$func_dirname_result" = "X${1}"; then + func_dirname_result="${3}" + else + func_dirname_result="$func_dirname_result${2}" + fi +} # func_dirname may be replaced by extended shell implementation + + +# func_basename file +func_basename () +{ + func_basename_result=`$ECHO "${1}" | $SED "$basename"` +} # func_basename may be replaced by extended shell implementation + + # func_dirname_and_basename file append nondir_replacement # perform func_basename and func_dirname in a single function # call: @@ -158,33 +195,183 @@ basename="s,^.*/,," # those functions but instead duplicate the functionality here. func_dirname_and_basename () { - # Extract subdirectory from the argument. - func_dirname_result=`$ECHO "X${1}" | $Xsed -e "$dirname"` - if test "X$func_dirname_result" = "X${1}"; then - func_dirname_result="${3}" - else - func_dirname_result="$func_dirname_result${2}" - fi - func_basename_result=`$ECHO "X${1}" | $Xsed -e "$basename"` + # Extract subdirectory from the argument. + func_dirname_result=`$ECHO "${1}" | $SED -e "$dirname"` + if test "X$func_dirname_result" = "X${1}"; then + func_dirname_result="${3}" + else + func_dirname_result="$func_dirname_result${2}" + fi + func_basename_result=`$ECHO "${1}" | $SED -e "$basename"` +} # func_dirname_and_basename may be replaced by extended shell implementation + + +# func_stripname prefix suffix name +# strip PREFIX and SUFFIX off of NAME. +# PREFIX and SUFFIX must not contain globbing or regex special +# characters, hashes, percent signs, but SUFFIX may contain a leading +# dot (in which case that matches only a dot). +# func_strip_suffix prefix name +func_stripname () +{ + case ${2} in + .*) func_stripname_result=`$ECHO "${3}" | $SED "s%^${1}%%; s%\\\\${2}\$%%"`;; + *) func_stripname_result=`$ECHO "${3}" | $SED "s%^${1}%%; s%${2}\$%%"`;; + esac +} # func_stripname may be replaced by extended shell implementation + + +# These SED scripts presuppose an absolute path with a trailing slash. +pathcar='s,^/\([^/]*\).*$,\1,' +pathcdr='s,^/[^/]*,,' +removedotparts=':dotsl + s@/\./@/@g + t dotsl + s,/\.$,/,' +collapseslashes='s@/\{1,\}@/@g' +finalslash='s,/*$,/,' + +# func_normal_abspath PATH +# Remove doubled-up and trailing slashes, "." path components, +# and cancel out any ".." path components in PATH after making +# it an absolute path. +# value returned in "$func_normal_abspath_result" +func_normal_abspath () +{ + # Start from root dir and reassemble the path. + func_normal_abspath_result= + func_normal_abspath_tpath=$1 + func_normal_abspath_altnamespace= + case $func_normal_abspath_tpath in + "") + # Empty path, that just means $cwd. + func_stripname '' '/' "`pwd`" + func_normal_abspath_result=$func_stripname_result + return + ;; + # The next three entries are used to spot a run of precisely + # two leading slashes without using negated character classes; + # we take advantage of case's first-match behaviour. + ///*) + # Unusual form of absolute path, do nothing. + ;; + //*) + # Not necessarily an ordinary path; POSIX reserves leading '//' + # and for example Cygwin uses it to access remote file shares + # over CIFS/SMB, so we conserve a leading double slash if found. + func_normal_abspath_altnamespace=/ + ;; + /*) + # Absolute path, do nothing. + ;; + *) + # Relative path, prepend $cwd. + func_normal_abspath_tpath=`pwd`/$func_normal_abspath_tpath + ;; + esac + # Cancel out all the simple stuff to save iterations. We also want + # the path to end with a slash for ease of parsing, so make sure + # there is one (and only one) here. + func_normal_abspath_tpath=`$ECHO "$func_normal_abspath_tpath" | $SED \ + -e "$removedotparts" -e "$collapseslashes" -e "$finalslash"` + while :; do + # Processed it all yet? + if test "$func_normal_abspath_tpath" = / ; then + # If we ascended to the root using ".." the result may be empty now. + if test -z "$func_normal_abspath_result" ; then + func_normal_abspath_result=/ + fi + break + fi + func_normal_abspath_tcomponent=`$ECHO "$func_normal_abspath_tpath" | $SED \ + -e "$pathcar"` + func_normal_abspath_tpath=`$ECHO "$func_normal_abspath_tpath" | $SED \ + -e "$pathcdr"` + # Figure out what to do with it + case $func_normal_abspath_tcomponent in + "") + # Trailing empty path component, ignore it. + ;; + ..) + # Parent dir; strip last assembled component from result. + func_dirname "$func_normal_abspath_result" + func_normal_abspath_result=$func_dirname_result + ;; + *) + # Actual path component, append it. + func_normal_abspath_result=$func_normal_abspath_result/$func_normal_abspath_tcomponent + ;; + esac + done + # Restore leading double-slash if one was found on entry. + func_normal_abspath_result=$func_normal_abspath_altnamespace$func_normal_abspath_result } -# Generated shell functions inserted here. +# func_relative_path SRCDIR DSTDIR +# generates a relative path from SRCDIR to DSTDIR, with a trailing +# slash if non-empty, suitable for immediately appending a filename +# without needing to append a separator. +# value returned in "$func_relative_path_result" +func_relative_path () +{ + func_relative_path_result= + func_normal_abspath "$1" + func_relative_path_tlibdir=$func_normal_abspath_result + func_normal_abspath "$2" + func_relative_path_tbindir=$func_normal_abspath_result + + # Ascend the tree starting from libdir + while :; do + # check if we have found a prefix of bindir + case $func_relative_path_tbindir in + $func_relative_path_tlibdir) + # found an exact match + func_relative_path_tcancelled= + break + ;; + $func_relative_path_tlibdir*) + # found a matching prefix + func_stripname "$func_relative_path_tlibdir" '' "$func_relative_path_tbindir" + func_relative_path_tcancelled=$func_stripname_result + if test -z "$func_relative_path_result"; then + func_relative_path_result=. + fi + break + ;; + *) + func_dirname $func_relative_path_tlibdir + func_relative_path_tlibdir=${func_dirname_result} + if test "x$func_relative_path_tlibdir" = x ; then + # Have to descend all the way to the root! + func_relative_path_result=../$func_relative_path_result + func_relative_path_tcancelled=$func_relative_path_tbindir + break + fi + func_relative_path_result=../$func_relative_path_result + ;; + esac + done -# Work around backward compatibility issue on IRIX 6.5. On IRIX 6.4+, sh -# is ksh but when the shell is invoked as "sh" and the current value of -# the _XPG environment variable is not equal to 1 (one), the special -# positional parameter $0, within a function call, is the name of the -# function. -progpath="$0" + # Now calculate path; take care to avoid doubling-up slashes. + func_stripname '' '/' "$func_relative_path_result" + func_relative_path_result=$func_stripname_result + func_stripname '/' '/' "$func_relative_path_tcancelled" + if test "x$func_stripname_result" != x ; then + func_relative_path_result=${func_relative_path_result}/${func_stripname_result} + fi + + # Normalisation. If bindir is libdir, return empty string, + # else relative path ending with a slash; either way, target + # file name can be directly appended. + if test ! -z "$func_relative_path_result"; then + func_stripname './' '' "$func_relative_path_result/" + func_relative_path_result=$func_stripname_result + fi +} # The name of this program: -# In the unlikely event $progname began with a '-', it would play havoc with -# func_echo (imagine progname=-n), so we prepend ./ in that case: func_dirname_and_basename "$progpath" progname=$func_basename_result -case $progname in - -*) progname=./$progname ;; -esac # Make sure we have an absolute path for reexecution: case $progpath in @@ -196,7 +383,7 @@ case $progpath in ;; *) save_IFS="$IFS" - IFS=: + IFS=${PATH_SEPARATOR-:} for progdir in $PATH; do IFS="$save_IFS" test -x "$progdir/$progname" && break @@ -215,6 +402,15 @@ sed_quote_subst='s/\([`"$\\]\)/\\\1/g' # Same as above, but do not quote variable references. double_quote_subst='s/\(["`\\]\)/\\\1/g' +# Sed substitution that turns a string into a regex matching for the +# string literally. +sed_make_literal_regex='s,[].[^$\\*\/],\\&,g' + +# Sed substitution that converts a w32 file name or path +# which contains forward slashes, into one that contains +# (escaped) backslashes. A very naive implementation. +lt_sed_naive_backslashify='s|\\\\*|\\|g;s|/|\\|g;s|\\|\\\\|g' + # Re-`\' parameter expansions in output of double_quote_subst that were # `\'-ed in input to the same. If an odd number of `\' preceded a '$' # in input to double_quote_subst, that '$' was protected from expansion. @@ -243,7 +439,7 @@ opt_warning=: # name if it has been set yet. func_echo () { - $ECHO "$progname${mode+: }$mode: $*" + $ECHO "$progname: ${opt_mode+$opt_mode: }$*" } # func_verbose arg... @@ -258,18 +454,25 @@ func_verbose () : } +# func_echo_all arg... +# Invoke $ECHO with all args, space-separated. +func_echo_all () +{ + $ECHO "$*" +} + # func_error arg... # Echo program name prefixed message to standard error. func_error () { - $ECHO "$progname${mode+: }$mode: "${1+"$@"} 1>&2 + $ECHO "$progname: ${opt_mode+$opt_mode: }"${1+"$@"} 1>&2 } # func_warning arg... # Echo program name prefixed warning message to standard error. func_warning () { - $opt_warning && $ECHO "$progname${mode+: }$mode: warning: "${1+"$@"} 1>&2 + $opt_warning && $ECHO "$progname: ${opt_mode+$opt_mode: }warning: "${1+"$@"} 1>&2 # bash bug again: : @@ -326,9 +529,9 @@ func_mkdir_p () case $my_directory_path in */*) ;; *) break ;; esac # ...otherwise throw away the child directory and loop - my_directory_path=`$ECHO "X$my_directory_path" | $Xsed -e "$dirname"` + my_directory_path=`$ECHO "$my_directory_path" | $SED -e "$dirname"` done - my_dir_list=`$ECHO "X$my_dir_list" | $Xsed -e 's,:*$,,'` + my_dir_list=`$ECHO "$my_dir_list" | $SED 's,:*$,,'` save_mkdir_p_IFS="$IFS"; IFS=':' for my_dir in $my_dir_list; do @@ -378,7 +581,7 @@ func_mktempdir () func_fatal_error "cannot create temporary directory \`$my_tmpdir'" fi - $ECHO "X$my_tmpdir" | $Xsed + $ECHO "$my_tmpdir" } @@ -392,7 +595,7 @@ func_quote_for_eval () { case $1 in *[\\\`\"\$]*) - func_quote_for_eval_unquoted_result=`$ECHO "X$1" | $Xsed -e "$sed_quote_subst"` ;; + func_quote_for_eval_unquoted_result=`$ECHO "$1" | $SED "$sed_quote_subst"` ;; *) func_quote_for_eval_unquoted_result="$1" ;; esac @@ -419,7 +622,7 @@ func_quote_for_expand () { case $1 in *[\\\`\"]*) - my_arg=`$ECHO "X$1" | $Xsed \ + my_arg=`$ECHO "$1" | $SED \ -e "$double_quote_subst" -e "$sed_double_backslash"` ;; *) my_arg="$1" ;; @@ -488,15 +691,39 @@ func_show_eval_locale () fi } - - +# func_tr_sh +# Turn $1 into a string suitable for a shell variable name. +# Result is stored in $func_tr_sh_result. All characters +# not in the set a-zA-Z0-9_ are replaced with '_'. Further, +# if $1 begins with a digit, a '_' is prepended as well. +func_tr_sh () +{ + case $1 in + [0-9]* | *[!a-zA-Z0-9_]*) + func_tr_sh_result=`$ECHO "$1" | $SED 's/^\([0-9]\)/_\1/; s/[^a-zA-Z0-9_]/_/g'` + ;; + * ) + func_tr_sh_result=$1 + ;; + esac +} # func_version # Echo version message to standard output and exit. func_version () { - $SED -n '/^# '$PROGRAM' (GNU /,/# warranty; / { + $opt_debug + + $SED -n '/(C)/!b go + :more + /\./!{ + N + s/\n# / / + b more + } + :go + /^# '$PROGRAM' (GNU /,/# warranty; / { s/^# // s/^# *$// s/\((C)\)[ 0-9,-]*\( [1-9][0-9]*\)/\1\2/ @@ -509,22 +736,28 @@ func_version () # Echo short help message to standard output and exit. func_usage () { - $SED -n '/^# Usage:/,/# -h/ { + $opt_debug + + $SED -n '/^# Usage:/,/^# *.*--help/ { s/^# // s/^# *$// s/\$progname/'$progname'/ p }' < "$progpath" - $ECHO + echo $ECHO "run \`$progname --help | more' for full usage" exit $? } -# func_help -# Echo long help message to standard output and exit. +# func_help [NOEXIT] +# Echo long help message to standard output and exit, +# unless 'noexit' is passed as argument. func_help () { + $opt_debug + $SED -n '/^# Usage:/,/# Report bugs to/ { + :print s/^# // s/^# *$// s*\$progname*'$progname'* @@ -534,11 +767,18 @@ func_help () s*\$LTCFLAGS*'"$LTCFLAGS"'* s*\$LD*'"$LD"'* s/\$with_gnu_ld/'"$with_gnu_ld"'/ - s/\$automake_version/'"`(automake --version) 2>/dev/null |$SED 1q`"'/ - s/\$autoconf_version/'"`(autoconf --version) 2>/dev/null |$SED 1q`"'/ + s/\$automake_version/'"`(${AUTOMAKE-automake} --version) 2>/dev/null |$SED 1q`"'/ + s/\$autoconf_version/'"`(${AUTOCONF-autoconf} --version) 2>/dev/null |$SED 1q`"'/ p - }' < "$progpath" - exit $? + d + } + /^# .* home page:/b print + /^# General help using/b print + ' < "$progpath" + ret=$? + if test -z "$1"; then + exit $ret + fi } # func_missing_arg argname @@ -546,63 +786,106 @@ func_help () # exit_cmd. func_missing_arg () { - func_error "missing argument for $1" + $opt_debug + + func_error "missing argument for $1." exit_cmd=exit } -exit_cmd=: +# func_split_short_opt shortopt +# Set func_split_short_opt_name and func_split_short_opt_arg shell +# variables after splitting SHORTOPT after the 2nd character. +func_split_short_opt () +{ + my_sed_short_opt='1s/^\(..\).*$/\1/;q' + my_sed_short_rest='1s/^..\(.*\)$/\1/;q' + func_split_short_opt_name=`$ECHO "$1" | $SED "$my_sed_short_opt"` + func_split_short_opt_arg=`$ECHO "$1" | $SED "$my_sed_short_rest"` +} # func_split_short_opt may be replaced by extended shell implementation + + +# func_split_long_opt longopt +# Set func_split_long_opt_name and func_split_long_opt_arg shell +# variables after splitting LONGOPT at the `=' sign. +func_split_long_opt () +{ + my_sed_long_opt='1s/^\(--[^=]*\)=.*/\1/;q' + my_sed_long_arg='1s/^--[^=]*=//' + + func_split_long_opt_name=`$ECHO "$1" | $SED "$my_sed_long_opt"` + func_split_long_opt_arg=`$ECHO "$1" | $SED "$my_sed_long_arg"` +} # func_split_long_opt may be replaced by extended shell implementation + +exit_cmd=: -# Check that we have a working $ECHO. -if test "X$1" = X--no-reexec; then - # Discard the --no-reexec flag, and continue. - shift -elif test "X$1" = X--fallback-echo; then - # Avoid inline document here, it may be left over - : -elif test "X`{ $ECHO '\t'; } 2>/dev/null`" = 'X\t'; then - # Yippee, $ECHO works! - : -else - # Restart under the correct shell, and then maybe $ECHO will work. - exec $SHELL "$progpath" --no-reexec ${1+"$@"} -fi -if test "X$1" = X--fallback-echo; then - # used as fallback echo - shift - cat </dev/null || echo $max_cmd_len` +} # func_len may be replaced by extended shell implementation + + +# func_lo2o object +func_lo2o () +{ + func_lo2o_result=`$ECHO "${1}" | $SED "$lo2o"` +} # func_lo2o may be replaced by extended shell implementation + + +# func_xform libobj-or-source +func_xform () +{ + func_xform_result=`$ECHO "${1}" | $SED 's/\.[^.]*$/.lo/'` +} # func_xform may be replaced by extended shell implementation + + # func_fatal_configuration arg... # Echo program name prefixed message to standard error, followed by # a configuration failure hint, and exit. @@ -636,16 +919,16 @@ func_config () # Display the features supported by this script. func_features () { - $ECHO "host: $host" + echo "host: $host" if test "$build_libtool_libs" = yes; then - $ECHO "enable shared libraries" + echo "enable shared libraries" else - $ECHO "disable shared libraries" + echo "disable shared libraries" fi if test "$build_old_libs" = yes; then - $ECHO "enable static libraries" + echo "enable static libraries" else - $ECHO "disable static libraries" + echo "disable static libraries" fi exit $? @@ -692,133 +975,6 @@ func_enable_tag () esac } -# Parse options once, thoroughly. This comes as soon as possible in -# the script to make things like `libtool --version' happen quickly. -{ - - # Shorthand for --mode=foo, only valid as the first argument - case $1 in - clean|clea|cle|cl) - shift; set dummy --mode clean ${1+"$@"}; shift - ;; - compile|compil|compi|comp|com|co|c) - shift; set dummy --mode compile ${1+"$@"}; shift - ;; - execute|execut|execu|exec|exe|ex|e) - shift; set dummy --mode execute ${1+"$@"}; shift - ;; - finish|finis|fini|fin|fi|f) - shift; set dummy --mode finish ${1+"$@"}; shift - ;; - install|instal|insta|inst|ins|in|i) - shift; set dummy --mode install ${1+"$@"}; shift - ;; - link|lin|li|l) - shift; set dummy --mode link ${1+"$@"}; shift - ;; - uninstall|uninstal|uninsta|uninst|unins|unin|uni|un|u) - shift; set dummy --mode uninstall ${1+"$@"}; shift - ;; - esac - - # Parse non-mode specific arguments: - while test "$#" -gt 0; do - opt="$1" - shift - - case $opt in - --config) func_config ;; - - --debug) preserve_args="$preserve_args $opt" - func_echo "enabling shell trace mode" - opt_debug='set -x' - $opt_debug - ;; - - -dlopen) test "$#" -eq 0 && func_missing_arg "$opt" && break - execute_dlfiles="$execute_dlfiles $1" - shift - ;; - - --dry-run | -n) opt_dry_run=: ;; - --features) func_features ;; - --finish) mode="finish" ;; - - --mode) test "$#" -eq 0 && func_missing_arg "$opt" && break - case $1 in - # Valid mode arguments: - clean) ;; - compile) ;; - execute) ;; - finish) ;; - install) ;; - link) ;; - relink) ;; - uninstall) ;; - - # Catch anything else as an error - *) func_error "invalid argument for $opt" - exit_cmd=exit - break - ;; - esac - - mode="$1" - shift - ;; - - --preserve-dup-deps) - opt_duplicate_deps=: ;; - - --quiet|--silent) preserve_args="$preserve_args $opt" - opt_silent=: - ;; - - --verbose| -v) preserve_args="$preserve_args $opt" - opt_silent=false - ;; - - --tag) test "$#" -eq 0 && func_missing_arg "$opt" && break - preserve_args="$preserve_args $opt $1" - func_enable_tag "$1" # tagname is set here - shift - ;; - - # Separate optargs to long options: - -dlopen=*|--mode=*|--tag=*) - func_opt_split "$opt" - set dummy "$func_opt_split_opt" "$func_opt_split_arg" ${1+"$@"} - shift - ;; - - -\?|-h) func_usage ;; - --help) opt_help=: ;; - --version) func_version ;; - - -*) func_fatal_help "unrecognized option \`$opt'" ;; - - *) nonopt="$opt" - break - ;; - esac - done - - - case $host in - *cygwin* | *mingw* | *pw32*) - # don't eliminate duplications in $postdeps and $predeps - opt_duplicate_compiler_generated_deps=: - ;; - *) - opt_duplicate_compiler_generated_deps=$opt_duplicate_deps - ;; - esac - - # Having warned about all mis-specified options, bail out if - # anything was wrong. - $exit_cmd $EXIT_FAILURE -} - # func_check_version_match # Ensure that we are using m4 macros, and libtool script from the same # release of libtool. @@ -855,46 +1011,228 @@ _LT_EOF } -## ----------- ## -## Main. ## -## ----------- ## +# Shorthand for --mode=foo, only valid as the first argument +case $1 in +clean|clea|cle|cl) + shift; set dummy --mode clean ${1+"$@"}; shift + ;; +compile|compil|compi|comp|com|co|c) + shift; set dummy --mode compile ${1+"$@"}; shift + ;; +execute|execut|execu|exec|exe|ex|e) + shift; set dummy --mode execute ${1+"$@"}; shift + ;; +finish|finis|fini|fin|fi|f) + shift; set dummy --mode finish ${1+"$@"}; shift + ;; +install|instal|insta|inst|ins|in|i) + shift; set dummy --mode install ${1+"$@"}; shift + ;; +link|lin|li|l) + shift; set dummy --mode link ${1+"$@"}; shift + ;; +uninstall|uninstal|uninsta|uninst|unins|unin|uni|un|u) + shift; set dummy --mode uninstall ${1+"$@"}; shift + ;; +esac -$opt_help || { - # Sanity checks first: - func_check_version_match - if test "$build_libtool_libs" != yes && test "$build_old_libs" != yes; then - func_fatal_configuration "not configured to build any kind of library" - fi - test -z "$mode" && func_fatal_error "error: you must specify a MODE." +# Option defaults: +opt_debug=: +opt_dry_run=false +opt_config=false +opt_preserve_dup_deps=false +opt_features=false +opt_finish=false +opt_help=false +opt_help_all=false +opt_silent=: +opt_warning=: +opt_verbose=: +opt_silent=false +opt_verbose=false + + +# Parse options once, thoroughly. This comes as soon as possible in the +# script to make things like `--version' happen as quickly as we can. +{ + # this just eases exit handling + while test $# -gt 0; do + opt="$1" + shift + case $opt in + --debug|-x) opt_debug='set -x' + func_echo "enabling shell trace mode" + $opt_debug + ;; + --dry-run|--dryrun|-n) + opt_dry_run=: + ;; + --config) + opt_config=: +func_config + ;; + --dlopen|-dlopen) + optarg="$1" + opt_dlopen="${opt_dlopen+$opt_dlopen +}$optarg" + shift + ;; + --preserve-dup-deps) + opt_preserve_dup_deps=: + ;; + --features) + opt_features=: +func_features + ;; + --finish) + opt_finish=: +set dummy --mode finish ${1+"$@"}; shift + ;; + --help) + opt_help=: + ;; + --help-all) + opt_help_all=: +opt_help=': help-all' + ;; + --mode) + test $# = 0 && func_missing_arg $opt && break + optarg="$1" + opt_mode="$optarg" +case $optarg in + # Valid mode arguments: + clean|compile|execute|finish|install|link|relink|uninstall) ;; + + # Catch anything else as an error + *) func_error "invalid argument for $opt" + exit_cmd=exit + break + ;; +esac + shift + ;; + --no-silent|--no-quiet) + opt_silent=false +func_append preserve_args " $opt" + ;; + --no-warning|--no-warn) + opt_warning=false +func_append preserve_args " $opt" + ;; + --no-verbose) + opt_verbose=false +func_append preserve_args " $opt" + ;; + --silent|--quiet) + opt_silent=: +func_append preserve_args " $opt" + opt_verbose=false + ;; + --verbose|-v) + opt_verbose=: +func_append preserve_args " $opt" +opt_silent=false + ;; + --tag) + test $# = 0 && func_missing_arg $opt && break + optarg="$1" + opt_tag="$optarg" +func_append preserve_args " $opt $optarg" +func_enable_tag "$optarg" + shift + ;; + + -\?|-h) func_usage ;; + --help) func_help ;; + --version) func_version ;; + # Separate optargs to long options: + --*=*) + func_split_long_opt "$opt" + set dummy "$func_split_long_opt_name" "$func_split_long_opt_arg" ${1+"$@"} + shift + ;; - # Darwin sucks - eval std_shrext=\"$shrext_cmds\" + # Separate non-argument short options: + -\?*|-h*|-n*|-v*) + func_split_short_opt "$opt" + set dummy "$func_split_short_opt_name" "-$func_split_short_opt_arg" ${1+"$@"} + shift + ;; + --) break ;; + -*) func_fatal_help "unrecognized option \`$opt'" ;; + *) set dummy "$opt" ${1+"$@"}; shift; break ;; + esac + done - # Only execute mode is allowed to have -dlopen flags. - if test -n "$execute_dlfiles" && test "$mode" != execute; then - func_error "unrecognized option \`-dlopen'" - $ECHO "$help" 1>&2 - exit $EXIT_FAILURE + # Validate options: + + # save first non-option argument + if test "$#" -gt 0; then + nonopt="$opt" + shift fi - # Change the help message to a mode-specific one. - generic_help="$help" - help="Try \`$progname --help --mode=$mode' for more information." + # preserve --debug + test "$opt_debug" = : || func_append preserve_args " --debug" + + case $host in + *cygwin* | *mingw* | *pw32* | *cegcc*) + # don't eliminate duplications in $postdeps and $predeps + opt_duplicate_compiler_generated_deps=: + ;; + *) + opt_duplicate_compiler_generated_deps=$opt_preserve_dup_deps + ;; + esac + + $opt_help || { + # Sanity checks first: + func_check_version_match + + if test "$build_libtool_libs" != yes && test "$build_old_libs" != yes; then + func_fatal_configuration "not configured to build any kind of library" + fi + + # Darwin sucks + eval std_shrext=\"$shrext_cmds\" + + # Only execute mode is allowed to have -dlopen flags. + if test -n "$opt_dlopen" && test "$opt_mode" != execute; then + func_error "unrecognized option \`-dlopen'" + $ECHO "$help" 1>&2 + exit $EXIT_FAILURE + fi + + # Change the help message to a mode-specific one. + generic_help="$help" + help="Try \`$progname --help --mode=$opt_mode' for more information." + } + + + # Bail if the options were screwed + $exit_cmd $EXIT_FAILURE } + + +## ----------- ## +## Main. ## +## ----------- ## + # func_lalib_p file # True iff FILE is a libtool `.la' library or `.lo' object file. # This function is only a basic sanity check; it will hardly flush out # determined imposters. func_lalib_p () { - $SED -e 4q "$1" 2>/dev/null \ - | $GREP "^# Generated by .*$PACKAGE" > /dev/null 2>&1 + test -f "$1" && + $SED -e 4q "$1" 2>/dev/null \ + | $GREP "^# Generated by .*$PACKAGE" > /dev/null 2>&1 } # func_lalib_unsafe_p file @@ -907,7 +1245,7 @@ func_lalib_p () func_lalib_unsafe_p () { lalib_p=no - if test -r "$1" && exec 5<&0 <"$1"; then + if test -f "$1" && test -r "$1" && exec 5<&0 <"$1"; then for lalib_p_l in 1 2 3 4 do read lalib_p_line @@ -949,12 +1287,9 @@ func_ltwrapper_executable_p () # temporary ltwrapper_script. func_ltwrapper_scriptname () { - func_ltwrapper_scriptname_result="" - if func_ltwrapper_executable_p "$1"; then - func_dirname_and_basename "$1" "" "." - func_stripname '' '.exe' "$func_basename_result" - func_ltwrapper_scriptname_result="$func_dirname_result/$objdir/${func_stripname_result}_ltshwrapper" - fi + func_dirname_and_basename "$1" "" "." + func_stripname '' '.exe' "$func_basename_result" + func_ltwrapper_scriptname_result="$func_dirname_result/$objdir/${func_stripname_result}_ltshwrapper" } # func_ltwrapper_p file @@ -1000,6 +1335,37 @@ func_source () } +# func_resolve_sysroot PATH +# Replace a leading = in PATH with a sysroot. Store the result into +# func_resolve_sysroot_result +func_resolve_sysroot () +{ + func_resolve_sysroot_result=$1 + case $func_resolve_sysroot_result in + =*) + func_stripname '=' '' "$func_resolve_sysroot_result" + func_resolve_sysroot_result=$lt_sysroot$func_stripname_result + ;; + esac +} + +# func_replace_sysroot PATH +# If PATH begins with the sysroot, replace it with = and +# store the result into func_replace_sysroot_result. +func_replace_sysroot () +{ + case "$lt_sysroot:$1" in + ?*:"$lt_sysroot"*) + func_stripname "$lt_sysroot" '' "$1" + func_replace_sysroot_result="=$func_stripname_result" + ;; + *) + # Including no sysroot. + func_replace_sysroot_result=$1 + ;; + esac +} + # func_infer_tag arg # Infer tagged configuration to use if any are available and # if one wasn't chosen via the "--tag" command line option. @@ -1012,13 +1378,15 @@ func_infer_tag () if test -n "$available_tags" && test -z "$tagname"; then CC_quoted= for arg in $CC; do - func_quote_for_eval "$arg" - CC_quoted="$CC_quoted $func_quote_for_eval_result" + func_append_quoted CC_quoted "$arg" done + CC_expanded=`func_echo_all $CC` + CC_quoted_expanded=`func_echo_all $CC_quoted` case $@ in # Blanks in the command may have been stripped by the calling shell, # but not from the CC environment variable when configure was run. - " $CC "* | "$CC "* | " `$ECHO $CC` "* | "`$ECHO $CC` "* | " $CC_quoted"* | "$CC_quoted "* | " `$ECHO $CC_quoted` "* | "`$ECHO $CC_quoted` "*) ;; + " $CC "* | "$CC "* | " $CC_expanded "* | "$CC_expanded "* | \ + " $CC_quoted"* | "$CC_quoted "* | " $CC_quoted_expanded "* | "$CC_quoted_expanded "*) ;; # Blanks at the start of $base_compile will cause this to fail # if we don't check for them as well. *) @@ -1029,11 +1397,13 @@ func_infer_tag () CC_quoted= for arg in $CC; do # Double-quote args containing other shell metacharacters. - func_quote_for_eval "$arg" - CC_quoted="$CC_quoted $func_quote_for_eval_result" + func_append_quoted CC_quoted "$arg" done + CC_expanded=`func_echo_all $CC` + CC_quoted_expanded=`func_echo_all $CC_quoted` case "$@ " in - " $CC "* | "$CC "* | " `$ECHO $CC` "* | "`$ECHO $CC` "* | " $CC_quoted"* | "$CC_quoted "* | " `$ECHO $CC_quoted` "* | "`$ECHO $CC_quoted` "*) + " $CC "* | "$CC "* | " $CC_expanded "* | "$CC_expanded "* | \ + " $CC_quoted"* | "$CC_quoted "* | " $CC_quoted_expanded "* | "$CC_quoted_expanded "*) # The compiler in the base compile command matches # the one in the tagged configuration. # Assume this is the tagged configuration we want. @@ -1058,43 +1428,523 @@ func_infer_tag () } - -# func_write_libtool_object output_name pic_name nonpic_name -# Create a libtool object file (analogous to a ".la" file), -# but don't create it if we're doing a dry run. -func_write_libtool_object () + +# func_write_libtool_object output_name pic_name nonpic_name +# Create a libtool object file (analogous to a ".la" file), +# but don't create it if we're doing a dry run. +func_write_libtool_object () +{ + write_libobj=${1} + if test "$build_libtool_libs" = yes; then + write_lobj=\'${2}\' + else + write_lobj=none + fi + + if test "$build_old_libs" = yes; then + write_oldobj=\'${3}\' + else + write_oldobj=none + fi + + $opt_dry_run || { + cat >${write_libobj}T </dev/null` + if test "$?" -eq 0 && test -n "${func_convert_core_file_wine_to_w32_tmp}"; then + func_convert_core_file_wine_to_w32_result=`$ECHO "$func_convert_core_file_wine_to_w32_tmp" | + $SED -e "$lt_sed_naive_backslashify"` + else + func_convert_core_file_wine_to_w32_result= + fi + fi +} +# end: func_convert_core_file_wine_to_w32 + + +# func_convert_core_path_wine_to_w32 ARG +# Helper function used by path conversion functions when $build is *nix, and +# $host is mingw, cygwin, or some other w32 environment. Relies on a correctly +# configured wine environment available, with the winepath program in $build's +# $PATH. Assumes ARG has no leading or trailing path separator characters. +# +# ARG is path to be converted from $build format to win32. +# Result is available in $func_convert_core_path_wine_to_w32_result. +# Unconvertible file (directory) names in ARG are skipped; if no directory names +# are convertible, then the result may be empty. +func_convert_core_path_wine_to_w32 () +{ + $opt_debug + # unfortunately, winepath doesn't convert paths, only file names + func_convert_core_path_wine_to_w32_result="" + if test -n "$1"; then + oldIFS=$IFS + IFS=: + for func_convert_core_path_wine_to_w32_f in $1; do + IFS=$oldIFS + func_convert_core_file_wine_to_w32 "$func_convert_core_path_wine_to_w32_f" + if test -n "$func_convert_core_file_wine_to_w32_result" ; then + if test -z "$func_convert_core_path_wine_to_w32_result"; then + func_convert_core_path_wine_to_w32_result="$func_convert_core_file_wine_to_w32_result" + else + func_append func_convert_core_path_wine_to_w32_result ";$func_convert_core_file_wine_to_w32_result" + fi + fi + done + IFS=$oldIFS + fi +} +# end: func_convert_core_path_wine_to_w32 + + +# func_cygpath ARGS... +# Wrapper around calling the cygpath program via LT_CYGPATH. This is used when +# when (1) $build is *nix and Cygwin is hosted via a wine environment; or (2) +# $build is MSYS and $host is Cygwin, or (3) $build is Cygwin. In case (1) or +# (2), returns the Cygwin file name or path in func_cygpath_result (input +# file name or path is assumed to be in w32 format, as previously converted +# from $build's *nix or MSYS format). In case (3), returns the w32 file name +# or path in func_cygpath_result (input file name or path is assumed to be in +# Cygwin format). Returns an empty string on error. +# +# ARGS are passed to cygpath, with the last one being the file name or path to +# be converted. +# +# Specify the absolute *nix (or w32) name to cygpath in the LT_CYGPATH +# environment variable; do not put it in $PATH. +func_cygpath () +{ + $opt_debug + if test -n "$LT_CYGPATH" && test -f "$LT_CYGPATH"; then + func_cygpath_result=`$LT_CYGPATH "$@" 2>/dev/null` + if test "$?" -ne 0; then + # on failure, ensure result is empty + func_cygpath_result= + fi + else + func_cygpath_result= + func_error "LT_CYGPATH is empty or specifies non-existent file: \`$LT_CYGPATH'" + fi +} +#end: func_cygpath + + +# func_convert_core_msys_to_w32 ARG +# Convert file name or path ARG from MSYS format to w32 format. Return +# result in func_convert_core_msys_to_w32_result. +func_convert_core_msys_to_w32 () +{ + $opt_debug + # awkward: cmd appends spaces to result + func_convert_core_msys_to_w32_result=`( cmd //c echo "$1" ) 2>/dev/null | + $SED -e 's/[ ]*$//' -e "$lt_sed_naive_backslashify"` +} +#end: func_convert_core_msys_to_w32 + + +# func_convert_file_check ARG1 ARG2 +# Verify that ARG1 (a file name in $build format) was converted to $host +# format in ARG2. Otherwise, emit an error message, but continue (resetting +# func_to_host_file_result to ARG1). +func_convert_file_check () +{ + $opt_debug + if test -z "$2" && test -n "$1" ; then + func_error "Could not determine host file name corresponding to" + func_error " \`$1'" + func_error "Continuing, but uninstalled executables may not work." + # Fallback: + func_to_host_file_result="$1" + fi +} +# end func_convert_file_check + + +# func_convert_path_check FROM_PATHSEP TO_PATHSEP FROM_PATH TO_PATH +# Verify that FROM_PATH (a path in $build format) was converted to $host +# format in TO_PATH. Otherwise, emit an error message, but continue, resetting +# func_to_host_file_result to a simplistic fallback value (see below). +func_convert_path_check () +{ + $opt_debug + if test -z "$4" && test -n "$3"; then + func_error "Could not determine the host path corresponding to" + func_error " \`$3'" + func_error "Continuing, but uninstalled executables may not work." + # Fallback. This is a deliberately simplistic "conversion" and + # should not be "improved". See libtool.info. + if test "x$1" != "x$2"; then + lt_replace_pathsep_chars="s|$1|$2|g" + func_to_host_path_result=`echo "$3" | + $SED -e "$lt_replace_pathsep_chars"` + else + func_to_host_path_result="$3" + fi + fi +} +# end func_convert_path_check + + +# func_convert_path_front_back_pathsep FRONTPAT BACKPAT REPL ORIG +# Modifies func_to_host_path_result by prepending REPL if ORIG matches FRONTPAT +# and appending REPL if ORIG matches BACKPAT. +func_convert_path_front_back_pathsep () +{ + $opt_debug + case $4 in + $1 ) func_to_host_path_result="$3$func_to_host_path_result" + ;; + esac + case $4 in + $2 ) func_append func_to_host_path_result "$3" + ;; + esac +} +# end func_convert_path_front_back_pathsep + + +################################################## +# $build to $host FILE NAME CONVERSION FUNCTIONS # +################################################## +# invoked via `$to_host_file_cmd ARG' +# +# In each case, ARG is the path to be converted from $build to $host format. +# Result will be available in $func_to_host_file_result. + + +# func_to_host_file ARG +# Converts the file name ARG from $build format to $host format. Return result +# in func_to_host_file_result. +func_to_host_file () +{ + $opt_debug + $to_host_file_cmd "$1" +} +# end func_to_host_file + + +# func_to_tool_file ARG LAZY +# converts the file name ARG from $build format to toolchain format. Return +# result in func_to_tool_file_result. If the conversion in use is listed +# in (the comma separated) LAZY, no conversion takes place. +func_to_tool_file () +{ + $opt_debug + case ,$2, in + *,"$to_tool_file_cmd",*) + func_to_tool_file_result=$1 + ;; + *) + $to_tool_file_cmd "$1" + func_to_tool_file_result=$func_to_host_file_result + ;; + esac +} +# end func_to_tool_file + + +# func_convert_file_noop ARG +# Copy ARG to func_to_host_file_result. +func_convert_file_noop () +{ + func_to_host_file_result="$1" +} +# end func_convert_file_noop + + +# func_convert_file_msys_to_w32 ARG +# Convert file name ARG from (mingw) MSYS to (mingw) w32 format; automatic +# conversion to w32 is not available inside the cwrapper. Returns result in +# func_to_host_file_result. +func_convert_file_msys_to_w32 () +{ + $opt_debug + func_to_host_file_result="$1" + if test -n "$1"; then + func_convert_core_msys_to_w32 "$1" + func_to_host_file_result="$func_convert_core_msys_to_w32_result" + fi + func_convert_file_check "$1" "$func_to_host_file_result" +} +# end func_convert_file_msys_to_w32 + + +# func_convert_file_cygwin_to_w32 ARG +# Convert file name ARG from Cygwin to w32 format. Returns result in +# func_to_host_file_result. +func_convert_file_cygwin_to_w32 () +{ + $opt_debug + func_to_host_file_result="$1" + if test -n "$1"; then + # because $build is cygwin, we call "the" cygpath in $PATH; no need to use + # LT_CYGPATH in this case. + func_to_host_file_result=`cygpath -m "$1"` + fi + func_convert_file_check "$1" "$func_to_host_file_result" +} +# end func_convert_file_cygwin_to_w32 + + +# func_convert_file_nix_to_w32 ARG +# Convert file name ARG from *nix to w32 format. Requires a wine environment +# and a working winepath. Returns result in func_to_host_file_result. +func_convert_file_nix_to_w32 () +{ + $opt_debug + func_to_host_file_result="$1" + if test -n "$1"; then + func_convert_core_file_wine_to_w32 "$1" + func_to_host_file_result="$func_convert_core_file_wine_to_w32_result" + fi + func_convert_file_check "$1" "$func_to_host_file_result" +} +# end func_convert_file_nix_to_w32 + + +# func_convert_file_msys_to_cygwin ARG +# Convert file name ARG from MSYS to Cygwin format. Requires LT_CYGPATH set. +# Returns result in func_to_host_file_result. +func_convert_file_msys_to_cygwin () +{ + $opt_debug + func_to_host_file_result="$1" + if test -n "$1"; then + func_convert_core_msys_to_w32 "$1" + func_cygpath -u "$func_convert_core_msys_to_w32_result" + func_to_host_file_result="$func_cygpath_result" + fi + func_convert_file_check "$1" "$func_to_host_file_result" +} +# end func_convert_file_msys_to_cygwin + + +# func_convert_file_nix_to_cygwin ARG +# Convert file name ARG from *nix to Cygwin format. Requires Cygwin installed +# in a wine environment, working winepath, and LT_CYGPATH set. Returns result +# in func_to_host_file_result. +func_convert_file_nix_to_cygwin () +{ + $opt_debug + func_to_host_file_result="$1" + if test -n "$1"; then + # convert from *nix to w32, then use cygpath to convert from w32 to cygwin. + func_convert_core_file_wine_to_w32 "$1" + func_cygpath -u "$func_convert_core_file_wine_to_w32_result" + func_to_host_file_result="$func_cygpath_result" + fi + func_convert_file_check "$1" "$func_to_host_file_result" +} +# end func_convert_file_nix_to_cygwin + + +############################################# +# $build to $host PATH CONVERSION FUNCTIONS # +############################################# +# invoked via `$to_host_path_cmd ARG' +# +# In each case, ARG is the path to be converted from $build to $host format. +# The result will be available in $func_to_host_path_result. +# +# Path separators are also converted from $build format to $host format. If +# ARG begins or ends with a path separator character, it is preserved (but +# converted to $host format) on output. +# +# All path conversion functions are named using the following convention: +# file name conversion function : func_convert_file_X_to_Y () +# path conversion function : func_convert_path_X_to_Y () +# where, for any given $build/$host combination the 'X_to_Y' value is the +# same. If conversion functions are added for new $build/$host combinations, +# the two new functions must follow this pattern, or func_init_to_host_path_cmd +# will break. + + +# func_init_to_host_path_cmd +# Ensures that function "pointer" variable $to_host_path_cmd is set to the +# appropriate value, based on the value of $to_host_file_cmd. +to_host_path_cmd= +func_init_to_host_path_cmd () +{ + $opt_debug + if test -z "$to_host_path_cmd"; then + func_stripname 'func_convert_file_' '' "$to_host_file_cmd" + to_host_path_cmd="func_convert_path_${func_stripname_result}" + fi +} + + +# func_to_host_path ARG +# Converts the path ARG from $build format to $host format. Return result +# in func_to_host_path_result. +func_to_host_path () +{ + $opt_debug + func_init_to_host_path_cmd + $to_host_path_cmd "$1" +} +# end func_to_host_path + + +# func_convert_path_noop ARG +# Copy ARG to func_to_host_path_result. +func_convert_path_noop () +{ + func_to_host_path_result="$1" +} +# end func_convert_path_noop + + +# func_convert_path_msys_to_w32 ARG +# Convert path ARG from (mingw) MSYS to (mingw) w32 format; automatic +# conversion to w32 is not available inside the cwrapper. Returns result in +# func_to_host_path_result. +func_convert_path_msys_to_w32 () +{ + $opt_debug + func_to_host_path_result="$1" + if test -n "$1"; then + # Remove leading and trailing path separator characters from ARG. MSYS + # behavior is inconsistent here; cygpath turns them into '.;' and ';.'; + # and winepath ignores them completely. + func_stripname : : "$1" + func_to_host_path_tmp1=$func_stripname_result + func_convert_core_msys_to_w32 "$func_to_host_path_tmp1" + func_to_host_path_result="$func_convert_core_msys_to_w32_result" + func_convert_path_check : ";" \ + "$func_to_host_path_tmp1" "$func_to_host_path_result" + func_convert_path_front_back_pathsep ":*" "*:" ";" "$1" + fi +} +# end func_convert_path_msys_to_w32 + + +# func_convert_path_cygwin_to_w32 ARG +# Convert path ARG from Cygwin to w32 format. Returns result in +# func_to_host_file_result. +func_convert_path_cygwin_to_w32 () +{ + $opt_debug + func_to_host_path_result="$1" + if test -n "$1"; then + # See func_convert_path_msys_to_w32: + func_stripname : : "$1" + func_to_host_path_tmp1=$func_stripname_result + func_to_host_path_result=`cygpath -m -p "$func_to_host_path_tmp1"` + func_convert_path_check : ";" \ + "$func_to_host_path_tmp1" "$func_to_host_path_result" + func_convert_path_front_back_pathsep ":*" "*:" ";" "$1" + fi +} +# end func_convert_path_cygwin_to_w32 + + +# func_convert_path_nix_to_w32 ARG +# Convert path ARG from *nix to w32 format. Requires a wine environment and +# a working winepath. Returns result in func_to_host_file_result. +func_convert_path_nix_to_w32 () { - write_libobj=${1} - if test "$build_libtool_libs" = yes; then - write_lobj=\'${2}\' - else - write_lobj=none - fi - - if test "$build_old_libs" = yes; then - write_oldobj=\'${3}\' - else - write_oldobj=none - fi + $opt_debug + func_to_host_path_result="$1" + if test -n "$1"; then + # See func_convert_path_msys_to_w32: + func_stripname : : "$1" + func_to_host_path_tmp1=$func_stripname_result + func_convert_core_path_wine_to_w32 "$func_to_host_path_tmp1" + func_to_host_path_result="$func_convert_core_path_wine_to_w32_result" + func_convert_path_check : ";" \ + "$func_to_host_path_tmp1" "$func_to_host_path_result" + func_convert_path_front_back_pathsep ":*" "*:" ";" "$1" + fi +} +# end func_convert_path_nix_to_w32 - $opt_dry_run || { - cat >${write_libobj}T < "$lockfile" fi $opt_dry_run || $RM $removelist - removelist="$removelist $lockfile" + func_append removelist " $lockfile" trap '$opt_dry_run || $RM $removelist; exit $EXIT_FAILURE' 1 2 15 - if test -n "$fix_srcfile_path"; then - eval srcfile=\"$fix_srcfile_path\" - fi + func_to_tool_file "$srcfile" func_convert_file_msys_to_w32 + srcfile=$func_to_tool_file_result func_quote_for_eval "$srcfile" qsrcfile=$func_quote_for_eval_result @@ -1348,7 +2195,7 @@ compiler." if test -z "$output_obj"; then # Place PIC objects in $objdir - command="$command -o $lobj" + func_append command " -o $lobj" fi func_show_eval_locale "$command" \ @@ -1395,11 +2242,11 @@ compiler." command="$base_compile $qsrcfile $pic_flag" fi if test "$compiler_c_o" = yes; then - command="$command -o $obj" + func_append command " -o $obj" fi # Suppress compiler output if we already did a PIC compilation. - command="$command$suppress_output" + func_append command "$suppress_output" func_show_eval_locale "$command" \ '$opt_dry_run || $RM $removelist; exit $EXIT_FAILURE' @@ -1444,13 +2291,13 @@ compiler." } $opt_help || { -test "$mode" = compile && func_mode_compile ${1+"$@"} + test "$opt_mode" = compile && func_mode_compile ${1+"$@"} } func_mode_help () { # We need to display help for each of the modes. - case $mode in + case $opt_mode in "") # Generic help is extracted from the usage comments # at the start of this file. @@ -1481,10 +2328,11 @@ This mode accepts the following additional options: -o OUTPUT-FILE set the output file name to OUTPUT-FILE -no-suppress do not suppress compiler output for multiple passes - -prefer-pic try to building PIC objects only - -prefer-non-pic try to building non-PIC objects only + -prefer-pic try to build PIC objects only + -prefer-non-pic try to build non-PIC objects only -shared do not build a \`.o' file suitable for static linking -static only build a \`.o' file suitable for static linking + -Wc,FLAG pass FLAG directly to the compiler COMPILE-COMMAND is a command to be used in creating a \`standard' object file from the given SOURCEFILE. @@ -1537,7 +2385,7 @@ either the \`install' or \`cp' program. The following components of INSTALL-COMMAND are treated specially: - -inst-prefix PREFIX-DIR Use PREFIX-DIR as a staging area for installation + -inst-prefix-dir PREFIX-DIR Use PREFIX-DIR as a staging area for installation The rest of the components are interpreted as arguments to that command (only BSD-compatible install options are recognized)." @@ -1557,6 +2405,8 @@ The following components of LINK-COMMAND are treated specially: -all-static do not do any dynamic linking at all -avoid-version do not add a version suffix if possible + -bindir BINDIR specify path to binaries directory (for systems where + libraries must be found in the PATH setting at runtime) -dlopen FILE \`-dlpreopen' FILE if it cannot be dlopened at runtime -dlpreopen FILE link in FILE and add its symbols to lt_preloaded_symbols -export-dynamic allow symbols from OUTPUT-FILE to be resolved with dlsym(3) @@ -1585,6 +2435,11 @@ The following components of LINK-COMMAND are treated specially: -version-info CURRENT[:REVISION[:AGE]] specify library version info [each variable defaults to 0] -weak LIBNAME declare that the target provides the LIBNAME interface + -Wc,FLAG + -Xcompiler FLAG pass linker-specific FLAG directly to the compiler + -Wl,FLAG + -Xlinker FLAG pass linker-specific FLAG directly to the linker + -XCClinker FLAG pass link-specific FLAG to the compiler driver (CC) All other options (arguments beginning with \`-') are ignored. @@ -1618,18 +2473,44 @@ Otherwise, only FILE itself is deleted using RM." ;; *) - func_fatal_help "invalid operation mode \`$mode'" + func_fatal_help "invalid operation mode \`$opt_mode'" ;; esac - $ECHO + echo $ECHO "Try \`$progname --help' for more information about other modes." - - exit $? } - # Now that we've collected a possible --mode arg, show help if necessary - $opt_help && func_mode_help +# Now that we've collected a possible --mode arg, show help if necessary +if $opt_help; then + if test "$opt_help" = :; then + func_mode_help + else + { + func_help noexit + for opt_mode in compile link execute install finish uninstall clean; do + func_mode_help + done + } | sed -n '1p; 2,$s/^Usage:/ or: /p' + { + func_help noexit + for opt_mode in compile link execute install finish uninstall clean; do + echo + func_mode_help + done + } | + sed '1d + /^When reporting/,/^Report/{ + H + d + } + $x + /information about other modes/d + /more detailed .*MODE/d + s/^Usage:.*--mode=\([^ ]*\) .*/Description of \1 mode:/' + fi + exit $? +fi # func_mode_execute arg... @@ -1642,13 +2523,16 @@ func_mode_execute () func_fatal_help "you must specify a COMMAND" # Handle -dlopen flags immediately. - for file in $execute_dlfiles; do + for file in $opt_dlopen; do test -f "$file" \ || func_fatal_help "\`$file' is not a file" dir= case $file in *.la) + func_resolve_sysroot "$file" + file=$func_resolve_sysroot_result + # Check to see that this really is a libtool archive. func_lalib_unsafe_p "$file" \ || func_fatal_help "\`$lib' is not a valid libtool archive" @@ -1670,7 +2554,7 @@ func_mode_execute () dir="$func_dirname_result" if test -f "$dir/$objdir/$dlname"; then - dir="$dir/$objdir" + func_append dir "/$objdir" else if test ! -f "$dir/$dlname"; then func_fatal_error "cannot find \`$dlname' in \`$dir' or \`$dir/$objdir'" @@ -1711,7 +2595,7 @@ func_mode_execute () for file do case $file in - -*) ;; + -* | *.la | *.lo ) ;; *) # Do a test to see if this is really a libtool program. if func_ltwrapper_script_p "$file"; then @@ -1727,8 +2611,7 @@ func_mode_execute () ;; esac # Quote arguments (to preserve shell metacharacters). - func_quote_for_eval "$file" - args="$args $func_quote_for_eval_result" + func_append_quoted args "$file" done if test "X$opt_dry_run" = Xfalse; then @@ -1753,29 +2636,66 @@ func_mode_execute () # Display what would be done. if test -n "$shlibpath_var"; then eval "\$ECHO \"\$shlibpath_var=\$$shlibpath_var\"" - $ECHO "export $shlibpath_var" + echo "export $shlibpath_var" fi $ECHO "$cmd$args" exit $EXIT_SUCCESS fi } -test "$mode" = execute && func_mode_execute ${1+"$@"} +test "$opt_mode" = execute && func_mode_execute ${1+"$@"} # func_mode_finish arg... func_mode_finish () { $opt_debug - libdirs="$nonopt" + libs= + libdirs= admincmds= - if test -n "$finish_cmds$finish_eval" && test -n "$libdirs"; then - for dir - do - libdirs="$libdirs $dir" - done + for opt in "$nonopt" ${1+"$@"} + do + if test -d "$opt"; then + func_append libdirs " $opt" + + elif test -f "$opt"; then + if func_lalib_unsafe_p "$opt"; then + func_append libs " $opt" + else + func_warning "\`$opt' is not a valid libtool archive" + fi + else + func_fatal_error "invalid argument \`$opt'" + fi + done + + if test -n "$libs"; then + if test -n "$lt_sysroot"; then + sysroot_regex=`$ECHO "$lt_sysroot" | $SED "$sed_make_literal_regex"` + sysroot_cmd="s/\([ ']\)$sysroot_regex/\1/g;" + else + sysroot_cmd= + fi + + # Remove sysroot references + if $opt_dry_run; then + for lib in $libs; do + echo "removing references to $lt_sysroot and \`=' prefixes from $lib" + done + else + tmpdir=`func_mktempdir` + for lib in $libs; do + sed -e "${sysroot_cmd} s/\([ ']-[LR]\)=/\1/g; s/\([ ']\)=/\1/g" $lib \ + > $tmpdir/tmp-la + mv -f $tmpdir/tmp-la $lib + done + ${RM}r "$tmpdir" + fi + fi + + if test -n "$finish_cmds$finish_eval" && test -n "$libdirs"; then for libdir in $libdirs; do if test -n "$finish_cmds"; then # Do each command in the finish commands. @@ -1785,7 +2705,7 @@ func_mode_finish () if test -n "$finish_eval"; then # Do the single finish_eval. eval cmds=\"$finish_eval\" - $opt_dry_run || eval "$cmds" || admincmds="$admincmds + $opt_dry_run || eval "$cmds" || func_append admincmds " $cmds" fi done @@ -1794,53 +2714,55 @@ func_mode_finish () # Exit here if they wanted silent mode. $opt_silent && exit $EXIT_SUCCESS - $ECHO "X----------------------------------------------------------------------" | $Xsed - $ECHO "Libraries have been installed in:" - for libdir in $libdirs; do - $ECHO " $libdir" - done - $ECHO - $ECHO "If you ever happen to want to link against installed libraries" - $ECHO "in a given directory, LIBDIR, you must either use libtool, and" - $ECHO "specify the full pathname of the library, or use the \`-LLIBDIR'" - $ECHO "flag during linking and do at least one of the following:" - if test -n "$shlibpath_var"; then - $ECHO " - add LIBDIR to the \`$shlibpath_var' environment variable" - $ECHO " during execution" - fi - if test -n "$runpath_var"; then - $ECHO " - add LIBDIR to the \`$runpath_var' environment variable" - $ECHO " during linking" - fi - if test -n "$hardcode_libdir_flag_spec"; then - libdir=LIBDIR - eval flag=\"$hardcode_libdir_flag_spec\" + if test -n "$finish_cmds$finish_eval" && test -n "$libdirs"; then + echo "----------------------------------------------------------------------" + echo "Libraries have been installed in:" + for libdir in $libdirs; do + $ECHO " $libdir" + done + echo + echo "If you ever happen to want to link against installed libraries" + echo "in a given directory, LIBDIR, you must either use libtool, and" + echo "specify the full pathname of the library, or use the \`-LLIBDIR'" + echo "flag during linking and do at least one of the following:" + if test -n "$shlibpath_var"; then + echo " - add LIBDIR to the \`$shlibpath_var' environment variable" + echo " during execution" + fi + if test -n "$runpath_var"; then + echo " - add LIBDIR to the \`$runpath_var' environment variable" + echo " during linking" + fi + if test -n "$hardcode_libdir_flag_spec"; then + libdir=LIBDIR + eval flag=\"$hardcode_libdir_flag_spec\" - $ECHO " - use the \`$flag' linker flag" - fi - if test -n "$admincmds"; then - $ECHO " - have your system administrator run these commands:$admincmds" - fi - if test -f /etc/ld.so.conf; then - $ECHO " - have your system administrator add LIBDIR to \`/etc/ld.so.conf'" - fi - $ECHO + $ECHO " - use the \`$flag' linker flag" + fi + if test -n "$admincmds"; then + $ECHO " - have your system administrator run these commands:$admincmds" + fi + if test -f /etc/ld.so.conf; then + echo " - have your system administrator add LIBDIR to \`/etc/ld.so.conf'" + fi + echo - $ECHO "See any operating system documentation about shared libraries for" - case $host in - solaris2.[6789]|solaris2.1[0-9]) - $ECHO "more information, such as the ld(1), crle(1) and ld.so(8) manual" - $ECHO "pages." - ;; - *) - $ECHO "more information, such as the ld(1) and ld.so(8) manual pages." - ;; - esac - $ECHO "X----------------------------------------------------------------------" | $Xsed + echo "See any operating system documentation about shared libraries for" + case $host in + solaris2.[6789]|solaris2.1[0-9]) + echo "more information, such as the ld(1), crle(1) and ld.so(8) manual" + echo "pages." + ;; + *) + echo "more information, such as the ld(1) and ld.so(8) manual pages." + ;; + esac + echo "----------------------------------------------------------------------" + fi exit $EXIT_SUCCESS } -test "$mode" = finish && func_mode_finish ${1+"$@"} +test "$opt_mode" = finish && func_mode_finish ${1+"$@"} # func_mode_install arg... @@ -1851,7 +2773,7 @@ func_mode_install () # install_prog (especially on Windows NT). if test "$nonopt" = "$SHELL" || test "$nonopt" = /bin/sh || # Allow the use of GNU shtool's install command. - $ECHO "X$nonopt" | $GREP shtool >/dev/null; then + case $nonopt in *shtool*) :;; *) false;; esac; then # Aesthetically quote it. func_quote_for_eval "$nonopt" install_prog="$func_quote_for_eval_result " @@ -1865,7 +2787,12 @@ func_mode_install () # The real first argument should be the name of the installation program. # Aesthetically quote it. func_quote_for_eval "$arg" - install_prog="$install_prog$func_quote_for_eval_result" + func_append install_prog "$func_quote_for_eval_result" + install_shared_prog=$install_prog + case " $install_prog " in + *[\\\ /]cp\ *) install_cp=: ;; + *) install_cp=false ;; + esac # We need to accept at least all the BSD install flags. dest= @@ -1875,10 +2802,12 @@ func_mode_install () install_type= isdir=no stripme= + no_mode=: for arg do + arg2= if test -n "$dest"; then - files="$files $dest" + func_append files " $dest" dest=$arg continue fi @@ -1886,10 +2815,9 @@ func_mode_install () case $arg in -d) isdir=yes ;; -f) - case " $install_prog " in - *[\\\ /]cp\ *) ;; - *) prev=$arg ;; - esac + if $install_cp; then :; else + prev=$arg + fi ;; -g | -m | -o) prev=$arg @@ -1903,6 +2831,10 @@ func_mode_install () *) # If the previous option needed an argument, then skip it. if test -n "$prev"; then + if test "x$prev" = x-m && test -n "$install_override_mode"; then + arg2=$install_override_mode + no_mode=false + fi prev= else dest=$arg @@ -1913,7 +2845,11 @@ func_mode_install () # Aesthetically quote the argument. func_quote_for_eval "$arg" - install_prog="$install_prog $func_quote_for_eval_result" + func_append install_prog " $func_quote_for_eval_result" + if test -n "$arg2"; then + func_quote_for_eval "$arg2" + fi + func_append install_shared_prog " $func_quote_for_eval_result" done test -z "$install_prog" && \ @@ -1922,6 +2858,13 @@ func_mode_install () test -n "$prev" && \ func_fatal_help "the \`$prev' option requires an argument" + if test -n "$install_override_mode" && $no_mode; then + if $install_cp; then :; else + func_quote_for_eval "$install_override_mode" + func_append install_shared_prog " -m $func_quote_for_eval_result" + fi + fi + if test -z "$files"; then if test -z "$dest"; then func_fatal_help "no file or destination specified" @@ -1976,10 +2919,13 @@ func_mode_install () case $file in *.$libext) # Do the static libraries later. - staticlibs="$staticlibs $file" + func_append staticlibs " $file" ;; *.la) + func_resolve_sysroot "$file" + file=$func_resolve_sysroot_result + # Check to see that this really is a libtool archive. func_lalib_unsafe_p "$file" \ || func_fatal_help "\`$file' is not a valid libtool archive" @@ -1993,23 +2939,23 @@ func_mode_install () if test "X$destdir" = "X$libdir"; then case "$current_libdirs " in *" $libdir "*) ;; - *) current_libdirs="$current_libdirs $libdir" ;; + *) func_append current_libdirs " $libdir" ;; esac else # Note the libdir as a future libdir. case "$future_libdirs " in *" $libdir "*) ;; - *) future_libdirs="$future_libdirs $libdir" ;; + *) func_append future_libdirs " $libdir" ;; esac fi func_dirname "$file" "/" "" dir="$func_dirname_result" - dir="$dir$objdir" + func_append dir "$objdir" if test -n "$relink_command"; then # Determine the prefix the user has applied to our future dir. - inst_prefix_dir=`$ECHO "X$destdir" | $Xsed -e "s%$libdir\$%%"` + inst_prefix_dir=`$ECHO "$destdir" | $SED -e "s%$libdir\$%%"` # Don't allow the user to place us outside of our expected # location b/c this prevents finding dependent libraries that @@ -2022,9 +2968,9 @@ func_mode_install () if test -n "$inst_prefix_dir"; then # Stick the inst_prefix_dir data into the link command. - relink_command=`$ECHO "X$relink_command" | $Xsed -e "s%@inst_prefix_dir@%-inst-prefix-dir $inst_prefix_dir%"` + relink_command=`$ECHO "$relink_command" | $SED "s%@inst_prefix_dir@%-inst-prefix-dir $inst_prefix_dir%"` else - relink_command=`$ECHO "X$relink_command" | $Xsed -e "s%@inst_prefix_dir@%%"` + relink_command=`$ECHO "$relink_command" | $SED "s%@inst_prefix_dir@%%"` fi func_warning "relinking \`$file'" @@ -2042,11 +2988,11 @@ func_mode_install () test -n "$relink_command" && srcname="$realname"T # Install the shared library and build the symlinks. - func_show_eval "$install_prog $dir/$srcname $destdir/$realname" \ + func_show_eval "$install_shared_prog $dir/$srcname $destdir/$realname" \ 'exit $?' tstripme="$stripme" case $host_os in - cygwin* | mingw* | pw32*) + cygwin* | mingw* | pw32* | cegcc*) case $realname in *.dll.a) tstripme="" @@ -2082,7 +3028,7 @@ func_mode_install () func_show_eval "$install_prog $instname $destdir/$name" 'exit $?' # Maybe install the static library, too. - test -n "$old_library" && staticlibs="$staticlibs $dir/$old_library" + test -n "$old_library" && func_append staticlibs " $dir/$old_library" ;; *.lo) @@ -2152,7 +3098,7 @@ func_mode_install () # Do a test to see if this is really a libtool program. case $host in - *cygwin*|*mingw*) + *cygwin* | *mingw*) if func_ltwrapper_executable_p "$file"; then func_ltwrapper_scriptname "$file" wrapper=$func_ltwrapper_scriptname_result @@ -2182,7 +3128,7 @@ func_mode_install () if test -f "$lib"; then func_source "$lib" fi - libfile="$libdir/"`$ECHO "X$lib" | $Xsed -e 's%^.*/%%g'` ### testsuite: skip nested quoting test + libfile="$libdir/"`$ECHO "$lib" | $SED 's%^.*/%%g'` ### testsuite: skip nested quoting test if test -n "$libdir" && test ! -f "$libfile"; then func_warning "\`$lib' has not been installed in \`$libdir'" finalize=no @@ -2201,7 +3147,7 @@ func_mode_install () file="$func_basename_result" outputname="$tmpdir/$file" # Replace the output file specification. - relink_command=`$ECHO "X$relink_command" | $Xsed -e 's%@OUTPUT@%'"$outputname"'%g'` + relink_command=`$ECHO "$relink_command" | $SED 's%@OUTPUT@%'"$outputname"'%g'` $opt_silent || { func_quote_for_expand "$relink_command" @@ -2220,7 +3166,7 @@ func_mode_install () } else # Install the binary that we compiled earlier. - file=`$ECHO "X$file$stripped_ext" | $Xsed -e "s%\([^/]*\)$%$objdir/\1%"` + file=`$ECHO "$file$stripped_ext" | $SED "s%\([^/]*\)$%$objdir/\1%"` fi fi @@ -2256,11 +3202,13 @@ func_mode_install () # Set up the ranlib parameters. oldlib="$destdir/$name" + func_to_tool_file "$oldlib" func_convert_file_msys_to_w32 + tool_oldlib=$func_to_tool_file_result func_show_eval "$install_prog \$file \$oldlib" 'exit $?' if test -n "$stripme" && test -n "$old_striplib"; then - func_show_eval "$old_striplib $oldlib" 'exit $?' + func_show_eval "$old_striplib $tool_oldlib" 'exit $?' fi # Do each command in the postinstall commands. @@ -2279,7 +3227,7 @@ func_mode_install () fi } -test "$mode" = install && func_mode_install ${1+"$@"} +test "$opt_mode" = install && func_mode_install ${1+"$@"} # func_generate_dlsyms outputname originator pic_p @@ -2322,6 +3270,22 @@ func_generate_dlsyms () extern \"C\" { #endif +#if defined(__GNUC__) && (((__GNUC__ == 4) && (__GNUC_MINOR__ >= 4)) || (__GNUC__ > 4)) +#pragma GCC diagnostic ignored \"-Wstrict-prototypes\" +#endif + +/* Keep this code in sync between libtool.m4, ltmain, lt_system.h, and tests. */ +#if defined(_WIN32) || defined(__CYGWIN__) || defined(_WIN32_WCE) +/* DATA imports from DLLs on WIN32 con't be const, because runtime + relocations are performed -- see ld's documentation on pseudo-relocs. */ +# define LT_DLSYM_CONST +#elif defined(__osf__) +/* This system does not cope well with relocations in const data. */ +# define LT_DLSYM_CONST +#else +# define LT_DLSYM_CONST const +#endif + /* External symbol declarations for the compiler. */\ " @@ -2331,10 +3295,11 @@ extern \"C\" { $opt_dry_run || echo ': @PROGRAM@ ' > "$nlist" # Add our own program objects to the symbol list. - progfiles=`$ECHO "X$objs$old_deplibs" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP` + progfiles=`$ECHO "$objs$old_deplibs" | $SP2NL | $SED "$lo2o" | $NL2SP` for progfile in $progfiles; do - func_verbose "extracting global C symbols from \`$progfile'" - $opt_dry_run || eval "$NM $progfile | $global_symbol_pipe >> '$nlist'" + func_to_tool_file "$progfile" func_convert_file_msys_to_w32 + func_verbose "extracting global C symbols from \`$func_to_tool_file_result'" + $opt_dry_run || eval "$NM $func_to_tool_file_result | $global_symbol_pipe >> '$nlist'" done if test -n "$exclude_expsyms"; then @@ -2358,7 +3323,7 @@ extern \"C\" { $RM $export_symbols eval "${SED} -n -e '/^: @PROGRAM@ $/d' -e 's/^.* \(.*\)$/\1/p' "'< "$nlist" > "$export_symbols"' case $host in - *cygwin* | *mingw* ) + *cygwin* | *mingw* | *cegcc* ) eval "echo EXPORTS "'> "$output_objdir/$outputname.def"' eval 'cat "$export_symbols" >> "$output_objdir/$outputname.def"' ;; @@ -2370,7 +3335,7 @@ extern \"C\" { eval '$GREP -f "$output_objdir/$outputname.exp" < "$nlist" > "$nlist"T' eval '$MV "$nlist"T "$nlist"' case $host in - *cygwin | *mingw* ) + *cygwin* | *mingw* | *cegcc* ) eval "echo EXPORTS "'> "$output_objdir/$outputname.def"' eval 'cat "$nlist" >> "$output_objdir/$outputname.def"' ;; @@ -2383,10 +3348,52 @@ extern \"C\" { func_verbose "extracting global C symbols from \`$dlprefile'" func_basename "$dlprefile" name="$func_basename_result" - $opt_dry_run || { - eval '$ECHO ": $name " >> "$nlist"' - eval "$NM $dlprefile 2>/dev/null | $global_symbol_pipe >> '$nlist'" - } + case $host in + *cygwin* | *mingw* | *cegcc* ) + # if an import library, we need to obtain dlname + if func_win32_import_lib_p "$dlprefile"; then + func_tr_sh "$dlprefile" + eval "curr_lafile=\$libfile_$func_tr_sh_result" + dlprefile_dlbasename="" + if test -n "$curr_lafile" && func_lalib_p "$curr_lafile"; then + # Use subshell, to avoid clobbering current variable values + dlprefile_dlname=`source "$curr_lafile" && echo "$dlname"` + if test -n "$dlprefile_dlname" ; then + func_basename "$dlprefile_dlname" + dlprefile_dlbasename="$func_basename_result" + else + # no lafile. user explicitly requested -dlpreopen . + $sharedlib_from_linklib_cmd "$dlprefile" + dlprefile_dlbasename=$sharedlib_from_linklib_result + fi + fi + $opt_dry_run || { + if test -n "$dlprefile_dlbasename" ; then + eval '$ECHO ": $dlprefile_dlbasename" >> "$nlist"' + else + func_warning "Could not compute DLL name from $name" + eval '$ECHO ": $name " >> "$nlist"' + fi + func_to_tool_file "$dlprefile" func_convert_file_msys_to_w32 + eval "$NM \"$func_to_tool_file_result\" 2>/dev/null | $global_symbol_pipe | + $SED -e '/I __imp/d' -e 's/I __nm_/D /;s/_nm__//' >> '$nlist'" + } + else # not an import lib + $opt_dry_run || { + eval '$ECHO ": $name " >> "$nlist"' + func_to_tool_file "$dlprefile" func_convert_file_msys_to_w32 + eval "$NM \"$func_to_tool_file_result\" 2>/dev/null | $global_symbol_pipe >> '$nlist'" + } + fi + ;; + *) + $opt_dry_run || { + eval '$ECHO ": $name " >> "$nlist"' + func_to_tool_file "$dlprefile" func_convert_file_msys_to_w32 + eval "$NM \"$func_to_tool_file_result\" 2>/dev/null | $global_symbol_pipe >> '$nlist'" + } + ;; + esac done $opt_dry_run || { @@ -2414,36 +3421,19 @@ extern \"C\" { if test -f "$nlist"S; then eval "$global_symbol_to_cdecl"' < "$nlist"S >> "$output_objdir/$my_dlsyms"' else - $ECHO '/* NONE */' >> "$output_objdir/$my_dlsyms" + echo '/* NONE */' >> "$output_objdir/$my_dlsyms" fi - $ECHO >> "$output_objdir/$my_dlsyms" "\ + echo >> "$output_objdir/$my_dlsyms" "\ /* The mapping between symbol names and symbols. */ typedef struct { const char *name; void *address; } lt_dlsymlist; -" - case $host in - *cygwin* | *mingw* ) - $ECHO >> "$output_objdir/$my_dlsyms" "\ -/* DATA imports from DLLs on WIN32 con't be const, because - runtime relocations are performed -- see ld's documentation - on pseudo-relocs. */" - lt_dlsym_const= ;; - *osf5*) - echo >> "$output_objdir/$my_dlsyms" "\ -/* This system does not cope well with relocations in const data */" - lt_dlsym_const= ;; - *) - lt_dlsym_const=const ;; - esac - - $ECHO >> "$output_objdir/$my_dlsyms" "\ -extern $lt_dlsym_const lt_dlsymlist +extern LT_DLSYM_CONST lt_dlsymlist lt_${my_prefix}_LTX_preloaded_symbols[]; -$lt_dlsym_const lt_dlsymlist +LT_DLSYM_CONST lt_dlsymlist lt_${my_prefix}_LTX_preloaded_symbols[] = {\ { \"$my_originator\", (void *) 0 }," @@ -2456,7 +3446,7 @@ lt_${my_prefix}_LTX_preloaded_symbols[] = eval "$global_symbol_to_c_name_address_lib_prefix" < "$nlist" >> "$output_objdir/$my_dlsyms" ;; esac - $ECHO >> "$output_objdir/$my_dlsyms" "\ + echo >> "$output_objdir/$my_dlsyms" "\ {0, (void *) 0} }; @@ -2483,7 +3473,7 @@ static const void *lt_preloaded_setup() { # linked before any other PIC object. But we must not use # pic_flag when linking with -static. The problem exists in # FreeBSD 2.2.6 and is fixed in FreeBSD 3.1. - *-*-freebsd2*|*-*-freebsd3.0*|*-*-freebsdelf3.0*) + *-*-freebsd2.*|*-*-freebsd3.0*|*-*-freebsdelf3.0*) pic_flag_for_symtable=" $pic_flag -DFREEBSD_WORKAROUND" ;; *-*-hpux*) pic_flag_for_symtable=" $pic_flag" ;; @@ -2499,7 +3489,7 @@ static const void *lt_preloaded_setup() { for arg in $LTCFLAGS; do case $arg in -pie | -fpie | -fPIE) ;; - *) symtab_cflags="$symtab_cflags $arg" ;; + *) func_append symtab_cflags " $arg" ;; esac done @@ -2512,18 +3502,18 @@ static const void *lt_preloaded_setup() { # Transform the symbol file into the correct name. symfileobj="$output_objdir/${my_outputname}S.$objext" case $host in - *cygwin* | *mingw* ) + *cygwin* | *mingw* | *cegcc* ) if test -f "$output_objdir/$my_outputname.def"; then - compile_command=`$ECHO "X$compile_command" | $Xsed -e "s%@SYMFILE@%$output_objdir/$my_outputname.def $symfileobj%"` - finalize_command=`$ECHO "X$finalize_command" | $Xsed -e "s%@SYMFILE@%$output_objdir/$my_outputname.def $symfileobj%"` + compile_command=`$ECHO "$compile_command" | $SED "s%@SYMFILE@%$output_objdir/$my_outputname.def $symfileobj%"` + finalize_command=`$ECHO "$finalize_command" | $SED "s%@SYMFILE@%$output_objdir/$my_outputname.def $symfileobj%"` else - compile_command=`$ECHO "X$compile_command" | $Xsed -e "s%@SYMFILE@%$symfileobj%"` - finalize_command=`$ECHO "X$finalize_command" | $Xsed -e "s%@SYMFILE@%$symfileobj%"` + compile_command=`$ECHO "$compile_command" | $SED "s%@SYMFILE@%$symfileobj%"` + finalize_command=`$ECHO "$finalize_command" | $SED "s%@SYMFILE@%$symfileobj%"` fi ;; *) - compile_command=`$ECHO "X$compile_command" | $Xsed -e "s%@SYMFILE@%$symfileobj%"` - finalize_command=`$ECHO "X$finalize_command" | $Xsed -e "s%@SYMFILE@%$symfileobj%"` + compile_command=`$ECHO "$compile_command" | $SED "s%@SYMFILE@%$symfileobj%"` + finalize_command=`$ECHO "$finalize_command" | $SED "s%@SYMFILE@%$symfileobj%"` ;; esac ;; @@ -2537,8 +3527,8 @@ static const void *lt_preloaded_setup() { # really was required. # Nullify the symbol file. - compile_command=`$ECHO "X$compile_command" | $Xsed -e "s% @SYMFILE@%%"` - finalize_command=`$ECHO "X$finalize_command" | $Xsed -e "s% @SYMFILE@%%"` + compile_command=`$ECHO "$compile_command" | $SED "s% @SYMFILE@%%"` + finalize_command=`$ECHO "$finalize_command" | $SED "s% @SYMFILE@%%"` fi } @@ -2548,6 +3538,7 @@ static const void *lt_preloaded_setup() { # Need a lot of goo to handle *both* DLLs and import libs # Has to be a shell function in order to 'eat' the argument # that is supplied when $file_magic_command is called. +# Despite the name, also deal with 64 bit binaries. func_win32_libid () { $opt_debug @@ -2558,9 +3549,11 @@ func_win32_libid () win32_libid_type="x86 archive import" ;; *ar\ archive*) # could be an import, or static + # Keep the egrep pattern in sync with the one in _LT_CHECK_MAGIC_METHOD. if eval $OBJDUMP -f $1 | $SED -e '10q' 2>/dev/null | - $EGREP 'file format pe-i386(.*architecture: i386)?' >/dev/null ; then - win32_nmres=`eval $NM -f posix -A $1 | + $EGREP 'file format (pei*-i386(.*architecture: i386)?|pe-arm-wince|pe-x86-64)' >/dev/null; then + func_to_tool_file "$1" func_convert_file_msys_to_w32 + win32_nmres=`eval $NM -f posix -A \"$func_to_tool_file_result\" | $SED -n -e ' 1,100{ / I /{ @@ -2589,6 +3582,131 @@ func_win32_libid () $ECHO "$win32_libid_type" } +# func_cygming_dll_for_implib ARG +# +# Platform-specific function to extract the +# name of the DLL associated with the specified +# import library ARG. +# Invoked by eval'ing the libtool variable +# $sharedlib_from_linklib_cmd +# Result is available in the variable +# $sharedlib_from_linklib_result +func_cygming_dll_for_implib () +{ + $opt_debug + sharedlib_from_linklib_result=`$DLLTOOL --identify-strict --identify "$1"` +} + +# func_cygming_dll_for_implib_fallback_core SECTION_NAME LIBNAMEs +# +# The is the core of a fallback implementation of a +# platform-specific function to extract the name of the +# DLL associated with the specified import library LIBNAME. +# +# SECTION_NAME is either .idata$6 or .idata$7, depending +# on the platform and compiler that created the implib. +# +# Echos the name of the DLL associated with the +# specified import library. +func_cygming_dll_for_implib_fallback_core () +{ + $opt_debug + match_literal=`$ECHO "$1" | $SED "$sed_make_literal_regex"` + $OBJDUMP -s --section "$1" "$2" 2>/dev/null | + $SED '/^Contents of section '"$match_literal"':/{ + # Place marker at beginning of archive member dllname section + s/.*/====MARK====/ + p + d + } + # These lines can sometimes be longer than 43 characters, but + # are always uninteresting + /:[ ]*file format pe[i]\{,1\}-/d + /^In archive [^:]*:/d + # Ensure marker is printed + /^====MARK====/p + # Remove all lines with less than 43 characters + /^.\{43\}/!d + # From remaining lines, remove first 43 characters + s/^.\{43\}//' | + $SED -n ' + # Join marker and all lines until next marker into a single line + /^====MARK====/ b para + H + $ b para + b + :para + x + s/\n//g + # Remove the marker + s/^====MARK====// + # Remove trailing dots and whitespace + s/[\. \t]*$// + # Print + /./p' | + # we now have a list, one entry per line, of the stringified + # contents of the appropriate section of all members of the + # archive which possess that section. Heuristic: eliminate + # all those which have a first or second character that is + # a '.' (that is, objdump's representation of an unprintable + # character.) This should work for all archives with less than + # 0x302f exports -- but will fail for DLLs whose name actually + # begins with a literal '.' or a single character followed by + # a '.'. + # + # Of those that remain, print the first one. + $SED -e '/^\./d;/^.\./d;q' +} + +# func_cygming_gnu_implib_p ARG +# This predicate returns with zero status (TRUE) if +# ARG is a GNU/binutils-style import library. Returns +# with nonzero status (FALSE) otherwise. +func_cygming_gnu_implib_p () +{ + $opt_debug + func_to_tool_file "$1" func_convert_file_msys_to_w32 + func_cygming_gnu_implib_tmp=`$NM "$func_to_tool_file_result" | eval "$global_symbol_pipe" | $EGREP ' (_head_[A-Za-z0-9_]+_[ad]l*|[A-Za-z0-9_]+_[ad]l*_iname)$'` + test -n "$func_cygming_gnu_implib_tmp" +} + +# func_cygming_ms_implib_p ARG +# This predicate returns with zero status (TRUE) if +# ARG is an MS-style import library. Returns +# with nonzero status (FALSE) otherwise. +func_cygming_ms_implib_p () +{ + $opt_debug + func_to_tool_file "$1" func_convert_file_msys_to_w32 + func_cygming_ms_implib_tmp=`$NM "$func_to_tool_file_result" | eval "$global_symbol_pipe" | $GREP '_NULL_IMPORT_DESCRIPTOR'` + test -n "$func_cygming_ms_implib_tmp" +} + +# func_cygming_dll_for_implib_fallback ARG +# Platform-specific function to extract the +# name of the DLL associated with the specified +# import library ARG. +# +# This fallback implementation is for use when $DLLTOOL +# does not support the --identify-strict option. +# Invoked by eval'ing the libtool variable +# $sharedlib_from_linklib_cmd +# Result is available in the variable +# $sharedlib_from_linklib_result +func_cygming_dll_for_implib_fallback () +{ + $opt_debug + if func_cygming_gnu_implib_p "$1" ; then + # binutils import library + sharedlib_from_linklib_result=`func_cygming_dll_for_implib_fallback_core '.idata$7' "$1"` + elif func_cygming_ms_implib_p "$1" ; then + # ms-generated import library + sharedlib_from_linklib_result=`func_cygming_dll_for_implib_fallback_core '.idata$6' "$1"` + else + # unknown + sharedlib_from_linklib_result="" + fi +} # func_extract_an_archive dir oldlib @@ -2597,7 +3715,18 @@ func_extract_an_archive () $opt_debug f_ex_an_ar_dir="$1"; shift f_ex_an_ar_oldlib="$1" - func_show_eval "(cd \$f_ex_an_ar_dir && $AR x \"\$f_ex_an_ar_oldlib\")" 'exit $?' + if test "$lock_old_archive_extraction" = yes; then + lockfile=$f_ex_an_ar_oldlib.lock + until $opt_dry_run || ln "$progpath" "$lockfile" 2>/dev/null; do + func_echo "Waiting for $lockfile to be removed" + sleep 2 + done + fi + func_show_eval "(cd \$f_ex_an_ar_dir && $AR x \"\$f_ex_an_ar_oldlib\")" \ + 'stat=$?; rm -f "$lockfile"; exit $stat' + if test "$lock_old_archive_extraction" = yes; then + $opt_dry_run || rm -f "$lockfile" + fi if ($AR t "$f_ex_an_ar_oldlib" | sort | sort -uc >/dev/null 2>&1); then : else @@ -2668,7 +3797,7 @@ func_extract_archives () darwin_file= darwin_files= for darwin_file in $darwin_filelist; do - darwin_files=`find unfat-$$ -name $darwin_file -print | $NL2SP` + darwin_files=`find unfat-$$ -name $darwin_file -print | sort | $NL2SP` $LIPO -create -output "$darwin_file" $darwin_files done # $darwin_filelist $RM -rf unfat-$$ @@ -2683,34 +3812,30 @@ func_extract_archives () func_extract_an_archive "$my_xdir" "$my_xabs" ;; esac - my_oldobjs="$my_oldobjs "`find $my_xdir -name \*.$objext -print -o -name \*.lo -print | $NL2SP` + my_oldobjs="$my_oldobjs "`find $my_xdir -name \*.$objext -print -o -name \*.lo -print | sort | $NL2SP` done func_extract_archives_result="$my_oldobjs" } - -# func_emit_wrapper arg +# func_emit_wrapper [arg=no] # -# emit a libtool wrapper script on stdout -# don't directly open a file because we may want to +# Emit a libtool wrapper script on stdout. +# Don't directly open a file because we may want to # incorporate the script contents within a cygwin/mingw # wrapper executable. Must ONLY be called from within -# func_mode_link because it depends on a number of variable +# func_mode_link because it depends on a number of variables # set therein. # -# arg is the value that the WRAPPER_SCRIPT_BELONGS_IN_OBJDIR +# ARG is the value that the WRAPPER_SCRIPT_BELONGS_IN_OBJDIR # variable will take. If 'yes', then the emitted script # will assume that the directory in which it is stored is -# the '.lib' directory. This is a cygwin/mingw-specific +# the $objdir directory. This is a cygwin/mingw-specific # behavior. func_emit_wrapper () { - func_emit_wrapper_arg1=no - if test -n "$1" ; then - func_emit_wrapper_arg1=$1 - fi + func_emit_wrapper_arg1=${1-no} $ECHO "\ #! $SHELL @@ -2726,7 +3851,6 @@ func_emit_wrapper () # Sed substitution that helps us do robust quoting. It backslashifies # metacharacters that are still active within double-quoted strings. -Xsed='${SED} -e 1s/^X//' sed_quote_subst='$sed_quote_subst' # Be Bourne compatible @@ -2757,31 +3881,135 @@ if test \"\$libtool_install_magic\" = \"$magic\"; then else # When we are sourced in execute mode, \$file and \$ECHO are already set. if test \"\$libtool_execute_magic\" != \"$magic\"; then - ECHO=\"$qecho\" - file=\"\$0\" - # Make sure echo works. - if test \"X\$1\" = X--no-reexec; then - # Discard the --no-reexec flag, and continue. - shift - elif test \"X\`{ \$ECHO '\t'; } 2>/dev/null\`\" = 'X\t'; then - # Yippee, \$ECHO works! - : - else - # Restart under the correct shell, and then maybe \$ECHO will work. - exec $SHELL \"\$0\" --no-reexec \${1+\"\$@\"} - fi - fi\ + file=\"\$0\"" + + qECHO=`$ECHO "$ECHO" | $SED "$sed_quote_subst"` + $ECHO "\ + +# A function that is used when there is no print builtin or printf. +func_fallback_echo () +{ + eval 'cat <<_LTECHO_EOF +\$1 +_LTECHO_EOF' +} + ECHO=\"$qECHO\" + fi + +# Very basic option parsing. These options are (a) specific to +# the libtool wrapper, (b) are identical between the wrapper +# /script/ and the wrapper /executable/ which is used only on +# windows platforms, and (c) all begin with the string "--lt-" +# (application programs are unlikely to have options which match +# this pattern). +# +# There are only two supported options: --lt-debug and +# --lt-dump-script. There is, deliberately, no --lt-help. +# +# The first argument to this parsing function should be the +# script's $0 value, followed by "$@". +lt_option_debug= +func_parse_lt_options () +{ + lt_script_arg0=\$0 + shift + for lt_opt + do + case \"\$lt_opt\" in + --lt-debug) lt_option_debug=1 ;; + --lt-dump-script) + lt_dump_D=\`\$ECHO \"X\$lt_script_arg0\" | $SED -e 's/^X//' -e 's%/[^/]*$%%'\` + test \"X\$lt_dump_D\" = \"X\$lt_script_arg0\" && lt_dump_D=. + lt_dump_F=\`\$ECHO \"X\$lt_script_arg0\" | $SED -e 's/^X//' -e 's%^.*/%%'\` + cat \"\$lt_dump_D/\$lt_dump_F\" + exit 0 + ;; + --lt-*) + \$ECHO \"Unrecognized --lt- option: '\$lt_opt'\" 1>&2 + exit 1 + ;; + esac + done + + # Print the debug banner immediately: + if test -n \"\$lt_option_debug\"; then + echo \"${outputname}:${output}:\${LINENO}: libtool wrapper (GNU $PACKAGE$TIMESTAMP) $VERSION\" 1>&2 + fi +} + +# Used when --lt-debug. Prints its arguments to stdout +# (redirection is the responsibility of the caller) +func_lt_dump_args () +{ + lt_dump_args_N=1; + for lt_arg + do + \$ECHO \"${outputname}:${output}:\${LINENO}: newargv[\$lt_dump_args_N]: \$lt_arg\" + lt_dump_args_N=\`expr \$lt_dump_args_N + 1\` + done +} + +# Core function for launching the target application +func_exec_program_core () +{ " - $ECHO "\ + case $host in + # Backslashes separate directories on plain windows + *-*-mingw | *-*-os2* | *-cegcc*) + $ECHO "\ + if test -n \"\$lt_option_debug\"; then + \$ECHO \"${outputname}:${output}:\${LINENO}: newargv[0]: \$progdir\\\\\$program\" 1>&2 + func_lt_dump_args \${1+\"\$@\"} 1>&2 + fi + exec \"\$progdir\\\\\$program\" \${1+\"\$@\"} +" + ;; + + *) + $ECHO "\ + if test -n \"\$lt_option_debug\"; then + \$ECHO \"${outputname}:${output}:\${LINENO}: newargv[0]: \$progdir/\$program\" 1>&2 + func_lt_dump_args \${1+\"\$@\"} 1>&2 + fi + exec \"\$progdir/\$program\" \${1+\"\$@\"} +" + ;; + esac + $ECHO "\ + \$ECHO \"\$0: cannot exec \$program \$*\" 1>&2 + exit 1 +} + +# A function to encapsulate launching the target application +# Strips options in the --lt-* namespace from \$@ and +# launches target application with the remaining arguments. +func_exec_program () +{ + case \" \$* \" in + *\\ --lt-*) + for lt_wr_arg + do + case \$lt_wr_arg in + --lt-*) ;; + *) set x \"\$@\" \"\$lt_wr_arg\"; shift;; + esac + shift + done ;; + esac + func_exec_program_core \${1+\"\$@\"} +} + + # Parse options + func_parse_lt_options \"\$0\" \${1+\"\$@\"} # Find the directory that this script lives in. - thisdir=\`\$ECHO \"X\$file\" | \$Xsed -e 's%/[^/]*$%%'\` + thisdir=\`\$ECHO \"\$file\" | $SED 's%/[^/]*$%%'\` test \"x\$thisdir\" = \"x\$file\" && thisdir=. # Follow symbolic links until we get to the real thisdir. - file=\`ls -ld \"\$file\" | ${SED} -n 's/.*-> //p'\` + file=\`ls -ld \"\$file\" | $SED -n 's/.*-> //p'\` while test -n \"\$file\"; do - destdir=\`\$ECHO \"X\$file\" | \$Xsed -e 's%/[^/]*\$%%'\` + destdir=\`\$ECHO \"\$file\" | $SED 's%/[^/]*\$%%'\` # If there was a directory component, then change thisdir. if test \"x\$destdir\" != \"x\$file\"; then @@ -2791,8 +4019,8 @@ else esac fi - file=\`\$ECHO \"X\$file\" | \$Xsed -e 's%^.*/%%'\` - file=\`ls -ld \"\$thisdir/\$file\" | ${SED} -n 's/.*-> //p'\` + file=\`\$ECHO \"\$file\" | $SED 's%^.*/%%'\` + file=\`ls -ld \"\$thisdir/\$file\" | $SED -n 's/.*-> //p'\` done # Usually 'no', except on cygwin/mingw when embedded into @@ -2805,7 +4033,7 @@ else fi # remove .libs from thisdir case \"\$thisdir\" in - *[\\\\/]$objdir ) thisdir=\`\$ECHO \"X\$thisdir\" | \$Xsed -e 's%[\\\\/][^\\\\/]*$%%'\` ;; + *[\\\\/]$objdir ) thisdir=\`\$ECHO \"\$thisdir\" | $SED 's%[\\\\/][^\\\\/]*$%%'\` ;; $objdir ) thisdir=. ;; esac fi @@ -2860,6 +4088,18 @@ else if test -f \"\$progdir/\$program\"; then" + # fixup the dll searchpath if we need to. + # + # Fix the DLL searchpath if we need to. Do this before prepending + # to shlibpath, because on Windows, both are PATH and uninstalled + # libraries must come first. + if test -n "$dllsearchpath"; then + $ECHO "\ + # Add the dll search path components to the executable PATH + PATH=$dllsearchpath:\$PATH +" + fi + # Export our shlibpath_var if we have one. if test "$shlibpath_overrides_runpath" = yes && test -n "$shlibpath_var" && test -n "$temp_rpath"; then $ECHO "\ @@ -2868,53 +4108,28 @@ else # Some systems cannot cope with colon-terminated $shlibpath_var # The second colon is a workaround for a bug in BeOS R4 sed - $shlibpath_var=\`\$ECHO \"X\$$shlibpath_var\" | \$Xsed -e 's/::*\$//'\` + $shlibpath_var=\`\$ECHO \"\$$shlibpath_var\" | $SED 's/::*\$//'\` export $shlibpath_var " fi - # fixup the dll searchpath if we need to. - if test -n "$dllsearchpath"; then - $ECHO "\ - # Add the dll search path components to the executable PATH - PATH=$dllsearchpath:\$PATH -" - fi - $ECHO "\ if test \"\$libtool_execute_magic\" != \"$magic\"; then # Run the actual program with our arguments. -" - case $host in - # Backslashes separate directories on plain windows - *-*-mingw | *-*-os2*) - $ECHO "\ - exec \"\$progdir\\\\\$program\" \${1+\"\$@\"} -" - ;; - - *) - $ECHO "\ - exec \"\$progdir/\$program\" \${1+\"\$@\"} -" - ;; - esac - $ECHO "\ - \$ECHO \"\$0: cannot exec \$program \$*\" 1>&2 - exit 1 + func_exec_program \${1+\"\$@\"} fi else # The program doesn't exist. \$ECHO \"\$0: error: \\\`\$progdir/\$program' does not exist\" 1>&2 \$ECHO \"This script is just a wrapper for \$program.\" 1>&2 - $ECHO \"See the $PACKAGE documentation for more information.\" 1>&2 + \$ECHO \"See the $PACKAGE documentation for more information.\" 1>&2 exit 1 fi fi\ " } -# end: func_emit_wrapper + # func_emit_cwrapperexe_src # emit the source code for a wrapper executable on stdout @@ -2932,20 +4147,18 @@ func_emit_cwrapperexe_src () This wrapper executable should never be moved out of the build directory. If it is, it will not operate correctly. - - Currently, it simply execs the wrapper *script* "$SHELL $output", - but could eventually absorb all of the scripts functionality and - exec $objdir/$outputname directly. */ EOF cat <<"EOF" +#ifdef _MSC_VER +# define _CRT_SECURE_NO_DEPRECATE 1 +#endif #include #include #ifdef _MSC_VER # include # include # include -# define setmode _setmode #else # include # include @@ -2962,6 +4175,44 @@ EOF #include #include +/* declarations of non-ANSI functions */ +#if defined(__MINGW32__) +# ifdef __STRICT_ANSI__ +int _putenv (const char *); +# endif +#elif defined(__CYGWIN__) +# ifdef __STRICT_ANSI__ +char *realpath (const char *, char *); +int putenv (char *); +int setenv (const char *, const char *, int); +# endif +/* #elif defined (other platforms) ... */ +#endif + +/* portability defines, excluding path handling macros */ +#if defined(_MSC_VER) +# define setmode _setmode +# define stat _stat +# define chmod _chmod +# define getcwd _getcwd +# define putenv _putenv +# define S_IXUSR _S_IEXEC +# ifndef _INTPTR_T_DEFINED +# define _INTPTR_T_DEFINED +# define intptr_t int +# endif +#elif defined(__MINGW32__) +# define setmode _setmode +# define stat _stat +# define chmod _chmod +# define getcwd _getcwd +# define putenv _putenv +#elif defined(__CYGWIN__) +# define HAVE_SETENV +# define FOPEN_WB "wb" +/* #elif defined (other platforms) ... */ +#endif + #if defined(PATH_MAX) # define LT_PATHMAX PATH_MAX #elif defined(MAXPATHLEN) @@ -2977,14 +4228,7 @@ EOF # define S_IXGRP 0 #endif -#ifdef _MSC_VER -# define S_IXUSR _S_IEXEC -# define stat _stat -# ifndef _INTPTR_T_DEFINED -# define intptr_t int -# endif -#endif - +/* path handling portability macros */ #ifndef DIR_SEPARATOR # define DIR_SEPARATOR '/' # define PATH_SEPARATOR ':' @@ -3015,10 +4259,6 @@ EOF # define IS_PATH_SEPARATOR(ch) ((ch) == PATH_SEPARATOR_2) #endif /* PATH_SEPARATOR_2 */ -#ifdef __CYGWIN__ -# define FOPEN_WB "wb" -#endif - #ifndef FOPEN_WB # define FOPEN_WB "w" #endif @@ -3031,22 +4271,13 @@ EOF if (stale) { free ((void *) stale); stale = 0; } \ } while (0) -#undef LTWRAPPER_DEBUGPRINTF -#if defined DEBUGWRAPPER -# define LTWRAPPER_DEBUGPRINTF(args) ltwrapper_debugprintf args -static void -ltwrapper_debugprintf (const char *fmt, ...) -{ - va_list args; - va_start (args, fmt); - (void) vfprintf (stderr, fmt, args); - va_end (args); -} +#if defined(LT_DEBUGWRAPPER) +static int lt_debug = 1; #else -# define LTWRAPPER_DEBUGPRINTF(args) +static int lt_debug = 0; #endif -const char *program_name = NULL; +const char *program_name = "libtool-wrapper"; /* in case xstrdup fails */ void *xmalloc (size_t num); char *xstrdup (const char *string); @@ -3056,37 +4287,88 @@ char *chase_symlinks (const char *pathspec); int make_executable (const char *path); int check_executable (const char *path); char *strendzap (char *str, const char *pat); -void lt_fatal (const char *message, ...); +void lt_debugprintf (const char *file, int line, const char *fmt, ...); +void lt_fatal (const char *file, int line, const char *message, ...); +static const char *nonnull (const char *s); +static const char *nonempty (const char *s); +void lt_setenv (const char *name, const char *value); +char *lt_extend_str (const char *orig_value, const char *add, int to_end); +void lt_update_exe_path (const char *name, const char *value); +void lt_update_lib_path (const char *name, const char *value); +char **prepare_spawn (char **argv); +void lt_dump_script (FILE *f); +EOF -static const char *script_text = + cat </dev/null || echo $SHELL` - case $lt_newargv0 in - *.exe | *.EXE) ;; - *) lt_newargv0=$lt_newargv0.exe ;; - esac - ;; - * ) lt_newargv0=$SHELL ;; - esac - fi - - cat < 0) && IS_PATH_SEPARATOR (new_value[len-1])) + { + new_value[len-1] = '\0'; + } + lt_setenv (name, new_value); + XFREE (new_value); + } +} + +void +lt_update_lib_path (const char *name, const char *value) +{ + lt_debugprintf (__FILE__, __LINE__, + "(lt_update_lib_path) modifying '%s' by prepending '%s'\n", + nonnull (name), nonnull (value)); + + if (name && *name && value && *value) + { + char *new_value = lt_extend_str (getenv (name), value, 0); + lt_setenv (name, new_value); + XFREE (new_value); + } +} + +EOF + case $host_os in + mingw*) + cat <<"EOF" + +/* Prepares an argument vector before calling spawn(). + Note that spawn() does not by itself call the command interpreter + (getenv ("COMSPEC") != NULL ? getenv ("COMSPEC") : + ({ OSVERSIONINFO v; v.dwOSVersionInfoSize = sizeof(OSVERSIONINFO); + GetVersionEx(&v); + v.dwPlatformId == VER_PLATFORM_WIN32_NT; + }) ? "cmd.exe" : "command.com"). + Instead it simply concatenates the arguments, separated by ' ', and calls + CreateProcess(). We must quote the arguments since Win32 CreateProcess() + interprets characters like ' ', '\t', '\\', '"' (but not '<' and '>') in a + special way: + - Space and tab are interpreted as delimiters. They are not treated as + delimiters if they are surrounded by double quotes: "...". + - Unescaped double quotes are removed from the input. Their only effect is + that within double quotes, space and tab are treated like normal + characters. + - Backslashes not followed by double quotes are not special. + - But 2*n+1 backslashes followed by a double quote become + n backslashes followed by a double quote (n >= 0): + \" -> " + \\\" -> \" + \\\\\" -> \\" + */ +#define SHELL_SPECIAL_CHARS "\"\\ \001\002\003\004\005\006\007\010\011\012\013\014\015\016\017\020\021\022\023\024\025\026\027\030\031\032\033\034\035\036\037" +#define SHELL_SPACE_CHARS " \001\002\003\004\005\006\007\010\011\012\013\014\015\016\017\020\021\022\023\024\025\026\027\030\031\032\033\034\035\036\037" +char ** +prepare_spawn (char **argv) +{ + size_t argc; + char **new_argv; + size_t i; + + /* Count number of arguments. */ + for (argc = 0; argv[argc] != NULL; argc++) + ; + + /* Allocate new argument vector. */ + new_argv = XMALLOC (char *, argc + 1); + + /* Put quoted arguments into the new argument vector. */ + for (i = 0; i < argc; i++) + { + const char *string = argv[i]; + + if (string[0] == '\0') + new_argv[i] = xstrdup ("\"\""); + else if (strpbrk (string, SHELL_SPECIAL_CHARS) != NULL) + { + int quote_around = (strpbrk (string, SHELL_SPACE_CHARS) != NULL); + size_t length; + unsigned int backslashes; + const char *s; + char *quoted_string; + char *p; + + length = 0; + backslashes = 0; + if (quote_around) + length++; + for (s = string; *s != '\0'; s++) + { + char c = *s; + if (c == '"') + length += backslashes + 1; + length++; + if (c == '\\') + backslashes++; + else + backslashes = 0; + } + if (quote_around) + length += backslashes + 1; + + quoted_string = XMALLOC (char, length + 1); + + p = quoted_string; + backslashes = 0; + if (quote_around) + *p++ = '"'; + for (s = string; *s != '\0'; s++) + { + char c = *s; + if (c == '"') + { + unsigned int j; + for (j = backslashes + 1; j > 0; j--) + *p++ = '\\'; + } + *p++ = c; + if (c == '\\') + backslashes++; + else + backslashes = 0; + } + if (quote_around) + { + unsigned int j; + for (j = backslashes; j > 0; j--) + *p++ = '\\'; + *p++ = '"'; + } + *p = '\0'; + + new_argv[i] = quoted_string; + } + else + new_argv[i] = (char *) string; + } + new_argv[argc] = NULL; + + return new_argv; +} +EOF + ;; + esac + + cat <<"EOF" +void lt_dump_script (FILE* f) +{ +EOF + func_emit_wrapper yes | + $SED -n -e ' +s/^\(.\{79\}\)\(..*\)/\1\ +\2/ +h +s/\([\\"]\)/\\\1/g +s/$/\\n/ +s/\([^\n]*\).*/ fputs ("\1", f);/p +g +D' + cat <<"EOF" +} EOF } # end: func_emit_cwrapperexe_src +# func_win32_import_lib_p ARG +# True if ARG is an import lib, as indicated by $file_magic_cmd +func_win32_import_lib_p () +{ + $opt_debug + case `eval $file_magic_cmd \"\$1\" 2>/dev/null | $SED -e 10q` in + *import*) : ;; + *) false ;; + esac +} + # func_mode_link arg... func_mode_link () { $opt_debug case $host in - *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2*) + *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*) # It is impossible to link a dll without this setting, and # we shouldn't force the makefile maintainer to figure out # which system we are compiling for in order to pass an extra @@ -3554,6 +5133,7 @@ func_mode_link () new_inherited_linker_flags= avoid_version=no + bindir= dlfiles= dlprefiles= dlself=no @@ -3646,6 +5226,11 @@ func_mode_link () esac case $prev in + bindir) + bindir="$arg" + prev= + continue + ;; dlfiles|dlprefiles) if test "$preload" = no; then # Add the symbol object into the linking commands. @@ -3677,9 +5262,9 @@ func_mode_link () ;; *) if test "$prev" = dlfiles; then - dlfiles="$dlfiles $arg" + func_append dlfiles " $arg" else - dlprefiles="$dlprefiles $arg" + func_append dlprefiles " $arg" fi prev= continue @@ -3703,7 +5288,7 @@ func_mode_link () *-*-darwin*) case "$deplibs " in *" $qarg.ltframework "*) ;; - *) deplibs="$deplibs $qarg.ltframework" # this is fixed later + *) func_append deplibs " $qarg.ltframework" # this is fixed later ;; esac ;; @@ -3722,7 +5307,7 @@ func_mode_link () moreargs= for fil in `cat "$save_arg"` do -# moreargs="$moreargs $fil" +# func_append moreargs " $fil" arg=$fil # A libtool-controlled object. @@ -3751,7 +5336,7 @@ func_mode_link () if test "$prev" = dlfiles; then if test "$build_libtool_libs" = yes && test "$dlopen_support" = yes; then - dlfiles="$dlfiles $pic_object" + func_append dlfiles " $pic_object" prev= continue else @@ -3763,7 +5348,7 @@ func_mode_link () # CHECK ME: I think I busted this. -Ossama if test "$prev" = dlprefiles; then # Preload the old-style object. - dlprefiles="$dlprefiles $pic_object" + func_append dlprefiles " $pic_object" prev= fi @@ -3833,12 +5418,12 @@ func_mode_link () if test "$prev" = rpath; then case "$rpath " in *" $arg "*) ;; - *) rpath="$rpath $arg" ;; + *) func_append rpath " $arg" ;; esac else case "$xrpath " in *" $arg "*) ;; - *) xrpath="$xrpath $arg" ;; + *) func_append xrpath " $arg" ;; esac fi prev= @@ -3850,28 +5435,28 @@ func_mode_link () continue ;; weak) - weak_libs="$weak_libs $arg" + func_append weak_libs " $arg" prev= continue ;; xcclinker) - linker_flags="$linker_flags $qarg" - compiler_flags="$compiler_flags $qarg" + func_append linker_flags " $qarg" + func_append compiler_flags " $qarg" prev= func_append compile_command " $qarg" func_append finalize_command " $qarg" continue ;; xcompiler) - compiler_flags="$compiler_flags $qarg" + func_append compiler_flags " $qarg" prev= func_append compile_command " $qarg" func_append finalize_command " $qarg" continue ;; xlinker) - linker_flags="$linker_flags $qarg" - compiler_flags="$compiler_flags $wl$qarg" + func_append linker_flags " $qarg" + func_append compiler_flags " $wl$qarg" prev= func_append compile_command " $wl$qarg" func_append finalize_command " $wl$qarg" @@ -3907,6 +5492,11 @@ func_mode_link () continue ;; + -bindir) + prev=bindir + continue + ;; + -dlopen) prev=dlfiles continue @@ -3957,8 +5547,16 @@ func_mode_link () ;; -L*) - func_stripname '-L' '' "$arg" - dir=$func_stripname_result + func_stripname "-L" '' "$arg" + if test -z "$func_stripname_result"; then + if test "$#" -gt 0; then + func_fatal_error "require no space between \`-L' and \`$1'" + else + func_fatal_error "need path for \`-L' option" + fi + fi + func_resolve_sysroot "$func_stripname_result" + dir=$func_resolve_sysroot_result # We need an absolute path. case $dir in [\\/]* | [A-Za-z]:[\\/]*) ;; @@ -3970,22 +5568,30 @@ func_mode_link () ;; esac case "$deplibs " in - *" -L$dir "*) ;; + *" -L$dir "* | *" $arg "*) + # Will only happen for absolute or sysroot arguments + ;; *) - deplibs="$deplibs -L$dir" - lib_search_path="$lib_search_path $dir" + # Preserve sysroot, but never include relative directories + case $dir in + [\\/]* | [A-Za-z]:[\\/]* | =*) func_append deplibs " $arg" ;; + *) func_append deplibs " -L$dir" ;; + esac + func_append lib_search_path " $dir" ;; esac case $host in - *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2*) - testbindir=`$ECHO "X$dir" | $Xsed -e 's*/lib$*/bin*'` + *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*) + testbindir=`$ECHO "$dir" | $SED 's*/lib$*/bin*'` case :$dllsearchpath: in *":$dir:"*) ;; - *) dllsearchpath="$dllsearchpath:$dir";; + ::) dllsearchpath=$dir;; + *) func_append dllsearchpath ":$dir";; esac case :$dllsearchpath: in *":$testbindir:"*) ;; - *) dllsearchpath="$dllsearchpath:$testbindir";; + ::) dllsearchpath=$testbindir;; + *) func_append dllsearchpath ":$testbindir";; esac ;; esac @@ -3995,7 +5601,7 @@ func_mode_link () -l*) if test "X$arg" = "X-lc" || test "X$arg" = "X-lm"; then case $host in - *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-beos*) + *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-beos* | *-cegcc* | *-*-haiku*) # These systems don't actually have a C or math library (as such) continue ;; @@ -4009,7 +5615,7 @@ func_mode_link () ;; *-*-rhapsody* | *-*-darwin1.[012]) # Rhapsody C and math libraries are in the System framework - deplibs="$deplibs System.ltframework" + func_append deplibs " System.ltframework" continue ;; *-*-sco3.2v5* | *-*-sco5v6*) @@ -4029,7 +5635,7 @@ func_mode_link () ;; esac fi - deplibs="$deplibs $arg" + func_append deplibs " $arg" continue ;; @@ -4041,21 +5647,22 @@ func_mode_link () # Tru64 UNIX uses -model [arg] to determine the layout of C++ # classes, name mangling, and exception handling. # Darwin uses the -arch flag to determine output architecture. - -model|-arch|-isysroot) - compiler_flags="$compiler_flags $arg" + -model|-arch|-isysroot|--sysroot) + func_append compiler_flags " $arg" func_append compile_command " $arg" func_append finalize_command " $arg" prev=xcompiler continue ;; - -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe|-threads) - compiler_flags="$compiler_flags $arg" + -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe \ + |-threads|-fopenmp|-openmp|-mp|-xopenmp|-omp|-qsmp=*) + func_append compiler_flags " $arg" func_append compile_command " $arg" func_append finalize_command " $arg" case "$new_inherited_linker_flags " in *" $arg "*) ;; - * ) new_inherited_linker_flags="$new_inherited_linker_flags $arg" ;; + * ) func_append new_inherited_linker_flags " $arg" ;; esac continue ;; @@ -4072,7 +5679,7 @@ func_mode_link () -no-install) case $host in - *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-darwin*) + *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-darwin* | *-cegcc*) # The PATH hackery in wrapper scripts is required on Windows # and Darwin in order for the loader to find any dlls it needs. func_warning "\`-no-install' is ignored for $host" @@ -4122,13 +5729,17 @@ func_mode_link () # We need an absolute path. case $dir in [\\/]* | [A-Za-z]:[\\/]*) ;; + =*) + func_stripname '=' '' "$dir" + dir=$lt_sysroot$func_stripname_result + ;; *) func_fatal_error "only absolute run-paths are allowed" ;; esac case "$xrpath " in *" $dir "*) ;; - *) xrpath="$xrpath $dir" ;; + *) func_append xrpath " $dir" ;; esac continue ;; @@ -4181,8 +5792,8 @@ func_mode_link () for flag in $args; do IFS="$save_ifs" func_quote_for_eval "$flag" - arg="$arg $wl$func_quote_for_eval_result" - compiler_flags="$compiler_flags $func_quote_for_eval_result" + func_append arg " $func_quote_for_eval_result" + func_append compiler_flags " $func_quote_for_eval_result" done IFS="$save_ifs" func_stripname ' ' '' "$arg" @@ -4197,9 +5808,9 @@ func_mode_link () for flag in $args; do IFS="$save_ifs" func_quote_for_eval "$flag" - arg="$arg $wl$func_quote_for_eval_result" - compiler_flags="$compiler_flags $wl$func_quote_for_eval_result" - linker_flags="$linker_flags $func_quote_for_eval_result" + func_append arg " $wl$func_quote_for_eval_result" + func_append compiler_flags " $wl$func_quote_for_eval_result" + func_append linker_flags " $func_quote_for_eval_result" done IFS="$save_ifs" func_stripname ' ' '' "$arg" @@ -4227,23 +5838,27 @@ func_mode_link () arg="$func_quote_for_eval_result" ;; - # -64, -mips[0-9] enable 64-bit mode on the SGI compiler - # -r[0-9][0-9]* specifies the processor on the SGI compiler - # -xarch=*, -xtarget=* enable 64-bit mode on the Sun compiler - # +DA*, +DD* enable 64-bit mode on the HP compiler - # -q* pass through compiler args for the IBM compiler - # -m*, -t[45]*, -txscale* pass through architecture-specific - # compiler args for GCC - # -F/path gives path to uninstalled frameworks, gcc on darwin - # -p, -pg, --coverage, -fprofile-* pass through profiling flag for GCC - # @file GCC response files + # Flags to be passed through unchanged, with rationale: + # -64, -mips[0-9] enable 64-bit mode for the SGI compiler + # -r[0-9][0-9]* specify processor for the SGI compiler + # -xarch=*, -xtarget=* enable 64-bit mode for the Sun compiler + # +DA*, +DD* enable 64-bit mode for the HP compiler + # -q* compiler args for the IBM compiler + # -m*, -t[45]*, -txscale* architecture-specific flags for GCC + # -F/path path to uninstalled frameworks, gcc on darwin + # -p, -pg, --coverage, -fprofile-* profiling flags for GCC + # @file GCC response files + # -tp=* Portland pgcc target processor selection + # --sysroot=* for sysroot support + # -O*, -flto*, -fwhopr*, -fuse-linker-plugin GCC link-time optimization -64|-mips[0-9]|-r[0-9][0-9]*|-xarch=*|-xtarget=*|+DA*|+DD*|-q*|-m*| \ - -t[45]*|-txscale*|-p|-pg|--coverage|-fprofile-*|-F*|@*) + -t[45]*|-txscale*|-p|-pg|--coverage|-fprofile-*|-F*|@*|-tp=*|--sysroot=*| \ + -O*|-flto*|-fwhopr*|-fuse-linker-plugin) func_quote_for_eval "$arg" arg="$func_quote_for_eval_result" func_append compile_command " $arg" func_append finalize_command " $arg" - compiler_flags="$compiler_flags $arg" + func_append compiler_flags " $arg" continue ;; @@ -4255,7 +5870,7 @@ func_mode_link () *.$objext) # A standard object. - objs="$objs $arg" + func_append objs " $arg" ;; *.lo) @@ -4286,7 +5901,7 @@ func_mode_link () if test "$prev" = dlfiles; then if test "$build_libtool_libs" = yes && test "$dlopen_support" = yes; then - dlfiles="$dlfiles $pic_object" + func_append dlfiles " $pic_object" prev= continue else @@ -4298,7 +5913,7 @@ func_mode_link () # CHECK ME: I think I busted this. -Ossama if test "$prev" = dlprefiles; then # Preload the old-style object. - dlprefiles="$dlprefiles $pic_object" + func_append dlprefiles " $pic_object" prev= fi @@ -4343,24 +5958,25 @@ func_mode_link () *.$libext) # An archive. - deplibs="$deplibs $arg" - old_deplibs="$old_deplibs $arg" + func_append deplibs " $arg" + func_append old_deplibs " $arg" continue ;; *.la) # A libtool-controlled library. + func_resolve_sysroot "$arg" if test "$prev" = dlfiles; then # This library was specified with -dlopen. - dlfiles="$dlfiles $arg" + func_append dlfiles " $func_resolve_sysroot_result" prev= elif test "$prev" = dlprefiles; then # The library was specified with -dlpreopen. - dlprefiles="$dlprefiles $arg" + func_append dlprefiles " $func_resolve_sysroot_result" prev= else - deplibs="$deplibs $arg" + func_append deplibs " $func_resolve_sysroot_result" fi continue ;; @@ -4398,7 +6014,7 @@ func_mode_link () if test -n "$shlibpath_var"; then # get the directories listed in $shlibpath_var - eval shlib_search_path=\`\$ECHO \"X\${$shlibpath_var}\" \| \$Xsed -e \'s/:/ /g\'\` + eval shlib_search_path=\`\$ECHO \"\${$shlibpath_var}\" \| \$SED \'s/:/ /g\'\` else shlib_search_path= fi @@ -4407,6 +6023,8 @@ func_mode_link () func_dirname "$output" "/" "" output_objdir="$func_dirname_result$objdir" + func_to_tool_file "$output_objdir/" + tool_output_objdir=$func_to_tool_file_result # Create the object directory. func_mkdir_p "$output_objdir" @@ -4427,12 +6045,12 @@ func_mode_link () # Find all interdependent deplibs by searching for libraries # that are linked more than once (e.g. -la -lb -la) for deplib in $deplibs; do - if $opt_duplicate_deps ; then + if $opt_preserve_dup_deps ; then case "$libs " in - *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;; + *" $deplib "*) func_append specialdeplibs " $deplib" ;; esac fi - libs="$libs $deplib" + func_append libs " $deplib" done if test "$linkmode" = lib; then @@ -4445,9 +6063,9 @@ func_mode_link () if $opt_duplicate_compiler_generated_deps; then for pre_post_dep in $predeps $postdeps; do case "$pre_post_deps " in - *" $pre_post_dep "*) specialdeplibs="$specialdeplibs $pre_post_deps" ;; + *" $pre_post_dep "*) func_append specialdeplibs " $pre_post_deps" ;; esac - pre_post_deps="$pre_post_deps $pre_post_dep" + func_append pre_post_deps " $pre_post_dep" done fi pre_post_deps= @@ -4506,7 +6124,10 @@ func_mode_link () case $pass in dlopen) libs="$dlfiles" ;; dlpreopen) libs="$dlprefiles" ;; - link) libs="$deplibs %DEPLIBS% $dependency_libs" ;; + link) + libs="$deplibs %DEPLIBS%" + test "X$link_all_deplibs" != Xno && libs="$libs $dependency_libs" + ;; esac fi if test "$linkmode,$pass" = "lib,dlpreopen"; then @@ -4514,17 +6135,19 @@ func_mode_link () for lib in $dlprefiles; do # Ignore non-libtool-libs dependency_libs= + func_resolve_sysroot "$lib" case $lib in - *.la) func_source "$lib" ;; + *.la) func_source "$func_resolve_sysroot_result" ;; esac # Collect preopened libtool deplibs, except any this library # has declared as weak libs for deplib in $dependency_libs; do - deplib_base=`$ECHO "X$deplib" | $Xsed -e "$basename"` + func_basename "$deplib" + deplib_base=$func_basename_result case " $weak_libs " in *" $deplib_base "*) ;; - *) deplibs="$deplibs $deplib" ;; + *) func_append deplibs " $deplib" ;; esac done done @@ -4540,16 +6163,17 @@ func_mode_link () lib= found=no case $deplib in - -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe|-threads) + -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe \ + |-threads|-fopenmp|-openmp|-mp|-xopenmp|-omp|-qsmp=*) if test "$linkmode,$pass" = "prog,link"; then compile_deplibs="$deplib $compile_deplibs" finalize_deplibs="$deplib $finalize_deplibs" else - compiler_flags="$compiler_flags $deplib" + func_append compiler_flags " $deplib" if test "$linkmode" = lib ; then case "$new_inherited_linker_flags " in *" $deplib "*) ;; - * ) new_inherited_linker_flags="$new_inherited_linker_flags $deplib" ;; + * ) func_append new_inherited_linker_flags " $deplib" ;; esac fi fi @@ -4634,7 +6258,7 @@ func_mode_link () if test "$linkmode" = lib ; then case "$new_inherited_linker_flags " in *" $deplib "*) ;; - * ) new_inherited_linker_flags="$new_inherited_linker_flags $deplib" ;; + * ) func_append new_inherited_linker_flags " $deplib" ;; esac fi fi @@ -4647,7 +6271,8 @@ func_mode_link () test "$pass" = conv && continue newdependency_libs="$deplib $newdependency_libs" func_stripname '-L' '' "$deplib" - newlib_search_path="$newlib_search_path $func_stripname_result" + func_resolve_sysroot "$func_stripname_result" + func_append newlib_search_path " $func_resolve_sysroot_result" ;; prog) if test "$pass" = conv; then @@ -4661,7 +6286,8 @@ func_mode_link () finalize_deplibs="$deplib $finalize_deplibs" fi func_stripname '-L' '' "$deplib" - newlib_search_path="$newlib_search_path $func_stripname_result" + func_resolve_sysroot "$func_stripname_result" + func_append newlib_search_path " $func_resolve_sysroot_result" ;; *) func_warning "\`-L' is ignored for archives/objects" @@ -4672,17 +6298,21 @@ func_mode_link () -R*) if test "$pass" = link; then func_stripname '-R' '' "$deplib" - dir=$func_stripname_result + func_resolve_sysroot "$func_stripname_result" + dir=$func_resolve_sysroot_result # Make sure the xrpath contains only unique directories. case "$xrpath " in *" $dir "*) ;; - *) xrpath="$xrpath $dir" ;; + *) func_append xrpath " $dir" ;; esac fi deplibs="$deplib $deplibs" continue ;; - *.la) lib="$deplib" ;; + *.la) + func_resolve_sysroot "$deplib" + lib=$func_resolve_sysroot_result + ;; *.$libext) if test "$pass" = conv; then deplibs="$deplib $deplibs" @@ -4700,7 +6330,7 @@ func_mode_link () match_pattern*) set dummy $deplibs_check_method; shift match_pattern_regex=`expr "$deplibs_check_method" : "$1 \(.*\)"` - if eval "\$ECHO \"X$deplib\"" 2>/dev/null | $Xsed -e 10q \ + if eval "\$ECHO \"$deplib\"" 2>/dev/null | $SED 10q \ | $EGREP "$match_pattern_regex" > /dev/null; then valid_a_lib=yes fi @@ -4710,15 +6340,15 @@ func_mode_link () ;; esac if test "$valid_a_lib" != yes; then - $ECHO + echo $ECHO "*** Warning: Trying to link with static lib archive $deplib." - $ECHO "*** I have the capability to make that library automatically link in when" - $ECHO "*** you link to this library. But I can only do this if you have a" - $ECHO "*** shared version of the library, which you do not appear to have" - $ECHO "*** because the file extensions .$libext of this argument makes me believe" - $ECHO "*** that it is just a static archive that I should not use here." + echo "*** I have the capability to make that library automatically link in when" + echo "*** you link to this library. But I can only do this if you have a" + echo "*** shared version of the library, which you do not appear to have" + echo "*** because the file extensions .$libext of this argument makes me believe" + echo "*** that it is just a static archive that I should not use here." else - $ECHO + echo $ECHO "*** Warning: Linking the shared library $output against the" $ECHO "*** static library $deplib is not portable!" deplibs="$deplib $deplibs" @@ -4745,11 +6375,11 @@ func_mode_link () if test "$pass" = dlpreopen || test "$dlopen_support" != yes || test "$build_libtool_libs" = no; then # If there is no dlopen support or we're linking statically, # we need to preload. - newdlprefiles="$newdlprefiles $deplib" + func_append newdlprefiles " $deplib" compile_deplibs="$deplib $compile_deplibs" finalize_deplibs="$deplib $finalize_deplibs" else - newdlfiles="$newdlfiles $deplib" + func_append newdlfiles " $deplib" fi fi continue @@ -4791,20 +6421,20 @@ func_mode_link () # Convert "-framework foo" to "foo.ltframework" if test -n "$inherited_linker_flags"; then - tmp_inherited_linker_flags=`$ECHO "X$inherited_linker_flags" | $Xsed -e 's/-framework \([^ $]*\)/\1.ltframework/g'` + tmp_inherited_linker_flags=`$ECHO "$inherited_linker_flags" | $SED 's/-framework \([^ $]*\)/\1.ltframework/g'` for tmp_inherited_linker_flag in $tmp_inherited_linker_flags; do case " $new_inherited_linker_flags " in *" $tmp_inherited_linker_flag "*) ;; - *) new_inherited_linker_flags="$new_inherited_linker_flags $tmp_inherited_linker_flag";; + *) func_append new_inherited_linker_flags " $tmp_inherited_linker_flag";; esac done fi - dependency_libs=`$ECHO "X $dependency_libs" | $Xsed -e 's% \([^ $]*\).ltframework% -framework \1%g'` + dependency_libs=`$ECHO " $dependency_libs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` if test "$linkmode,$pass" = "lib,link" || test "$linkmode,$pass" = "prog,scan" || { test "$linkmode" != prog && test "$linkmode" != lib; }; then - test -n "$dlopen" && dlfiles="$dlfiles $dlopen" - test -n "$dlpreopen" && dlprefiles="$dlprefiles $dlpreopen" + test -n "$dlopen" && func_append dlfiles " $dlopen" + test -n "$dlpreopen" && func_append dlprefiles " $dlpreopen" fi if test "$pass" = conv; then @@ -4815,30 +6445,36 @@ func_mode_link () func_fatal_error "cannot find name of link library for \`$lib'" fi # It is a libtool convenience library, so add in its objects. - convenience="$convenience $ladir/$objdir/$old_library" - old_convenience="$old_convenience $ladir/$objdir/$old_library" + func_append convenience " $ladir/$objdir/$old_library" + func_append old_convenience " $ladir/$objdir/$old_library" + tmp_libs= + for deplib in $dependency_libs; do + deplibs="$deplib $deplibs" + if $opt_preserve_dup_deps ; then + case "$tmp_libs " in + *" $deplib "*) func_append specialdeplibs " $deplib" ;; + esac + fi + func_append tmp_libs " $deplib" + done elif test "$linkmode" != prog && test "$linkmode" != lib; then func_fatal_error "\`$lib' is not a convenience library" fi - tmp_libs= - for deplib in $dependency_libs; do - deplibs="$deplib $deplibs" - if $opt_duplicate_deps ; then - case "$tmp_libs " in - *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;; - esac - fi - tmp_libs="$tmp_libs $deplib" - done continue fi # $pass = conv # Get the name of the library we link against. linklib= - for l in $old_library $library_names; do - linklib="$l" - done + if test -n "$old_library" && + { test "$prefer_static_libs" = yes || + test "$prefer_static_libs,$installed" = "built,no"; }; then + linklib=$old_library + else + for l in $old_library $library_names; do + linklib="$l" + done + fi if test -z "$linklib"; then func_fatal_error "cannot find name of link library for \`$lib'" fi @@ -4855,9 +6491,9 @@ func_mode_link () # statically, we need to preload. We also need to preload any # dependent libraries so libltdl's deplib preloader doesn't # bomb out in the load deplibs phase. - dlprefiles="$dlprefiles $lib $dependency_libs" + func_append dlprefiles " $lib $dependency_libs" else - newdlfiles="$newdlfiles $lib" + func_append newdlfiles " $lib" fi continue fi # $pass = dlopen @@ -4879,14 +6515,14 @@ func_mode_link () # Find the relevant object directory and library name. if test "X$installed" = Xyes; then - if test ! -f "$libdir/$linklib" && test -f "$abs_ladir/$linklib"; then + if test ! -f "$lt_sysroot$libdir/$linklib" && test -f "$abs_ladir/$linklib"; then func_warning "library \`$lib' was moved." dir="$ladir" absdir="$abs_ladir" libdir="$abs_ladir" else - dir="$libdir" - absdir="$libdir" + dir="$lt_sysroot$libdir" + absdir="$lt_sysroot$libdir" fi test "X$hardcode_automatic" = Xyes && avoidtemprpath=yes else @@ -4894,12 +6530,12 @@ func_mode_link () dir="$ladir" absdir="$abs_ladir" # Remove this search path later - notinst_path="$notinst_path $abs_ladir" + func_append notinst_path " $abs_ladir" else dir="$ladir/$objdir" absdir="$abs_ladir/$objdir" # Remove this search path later - notinst_path="$notinst_path $abs_ladir" + func_append notinst_path " $abs_ladir" fi fi # $installed = yes func_stripname 'lib' '.la' "$laname" @@ -4910,20 +6546,46 @@ func_mode_link () if test -z "$libdir" && test "$linkmode" = prog; then func_fatal_error "only libraries may -dlpreopen a convenience library: \`$lib'" fi - # Prefer using a static library (so that no silly _DYNAMIC symbols - # are required to link). - if test -n "$old_library"; then - newdlprefiles="$newdlprefiles $dir/$old_library" - # Keep a list of preopened convenience libraries to check - # that they are being used correctly in the link pass. - test -z "$libdir" && \ - dlpreconveniencelibs="$dlpreconveniencelibs $dir/$old_library" - # Otherwise, use the dlname, so that lt_dlopen finds it. - elif test -n "$dlname"; then - newdlprefiles="$newdlprefiles $dir/$dlname" - else - newdlprefiles="$newdlprefiles $dir/$linklib" - fi + case "$host" in + # special handling for platforms with PE-DLLs. + *cygwin* | *mingw* | *cegcc* ) + # Linker will automatically link against shared library if both + # static and shared are present. Therefore, ensure we extract + # symbols from the import library if a shared library is present + # (otherwise, the dlopen module name will be incorrect). We do + # this by putting the import library name into $newdlprefiles. + # We recover the dlopen module name by 'saving' the la file + # name in a special purpose variable, and (later) extracting the + # dlname from the la file. + if test -n "$dlname"; then + func_tr_sh "$dir/$linklib" + eval "libfile_$func_tr_sh_result=\$abs_ladir/\$laname" + func_append newdlprefiles " $dir/$linklib" + else + func_append newdlprefiles " $dir/$old_library" + # Keep a list of preopened convenience libraries to check + # that they are being used correctly in the link pass. + test -z "$libdir" && \ + func_append dlpreconveniencelibs " $dir/$old_library" + fi + ;; + * ) + # Prefer using a static library (so that no silly _DYNAMIC symbols + # are required to link). + if test -n "$old_library"; then + func_append newdlprefiles " $dir/$old_library" + # Keep a list of preopened convenience libraries to check + # that they are being used correctly in the link pass. + test -z "$libdir" && \ + func_append dlpreconveniencelibs " $dir/$old_library" + # Otherwise, use the dlname, so that lt_dlopen finds it. + elif test -n "$dlname"; then + func_append newdlprefiles " $dir/$dlname" + else + func_append newdlprefiles " $dir/$linklib" + fi + ;; + esac fi # $pass = dlpreopen if test -z "$libdir"; then @@ -4941,7 +6603,7 @@ func_mode_link () if test "$linkmode" = prog && test "$pass" != link; then - newlib_search_path="$newlib_search_path $ladir" + func_append newlib_search_path " $ladir" deplibs="$lib $deplibs" linkalldeplibs=no @@ -4954,7 +6616,8 @@ func_mode_link () for deplib in $dependency_libs; do case $deplib in -L*) func_stripname '-L' '' "$deplib" - newlib_search_path="$newlib_search_path $func_stripname_result" + func_resolve_sysroot "$func_stripname_result" + func_append newlib_search_path " $func_resolve_sysroot_result" ;; esac # Need to link against all dependency_libs? @@ -4965,12 +6628,12 @@ func_mode_link () # or/and link against static libraries newdependency_libs="$deplib $newdependency_libs" fi - if $opt_duplicate_deps ; then + if $opt_preserve_dup_deps ; then case "$tmp_libs " in - *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;; + *" $deplib "*) func_append specialdeplibs " $deplib" ;; esac fi - tmp_libs="$tmp_libs $deplib" + func_append tmp_libs " $deplib" done # for deplib continue fi # $linkmode = prog... @@ -4985,7 +6648,7 @@ func_mode_link () # Make sure the rpath contains only unique directories. case "$temp_rpath:" in *"$absdir:"*) ;; - *) temp_rpath="$temp_rpath$absdir:" ;; + *) func_append temp_rpath "$absdir:" ;; esac fi @@ -4997,7 +6660,7 @@ func_mode_link () *) case "$compile_rpath " in *" $absdir "*) ;; - *) compile_rpath="$compile_rpath $absdir" + *) func_append compile_rpath " $absdir" ;; esac ;; esac @@ -5006,7 +6669,7 @@ func_mode_link () *) case "$finalize_rpath " in *" $libdir "*) ;; - *) finalize_rpath="$finalize_rpath $libdir" + *) func_append finalize_rpath " $libdir" ;; esac ;; esac @@ -5029,14 +6692,14 @@ func_mode_link () if test -n "$library_names" && { test "$use_static_libs" = no || test -z "$old_library"; }; then case $host in - *cygwin* | *mingw*) + *cygwin* | *mingw* | *cegcc*) # No point in relinking DLLs because paths are not encoded - notinst_deplibs="$notinst_deplibs $lib" + func_append notinst_deplibs " $lib" need_relink=no ;; *) if test "$installed" = no; then - notinst_deplibs="$notinst_deplibs $lib" + func_append notinst_deplibs " $lib" need_relink=yes fi ;; @@ -5053,7 +6716,7 @@ func_mode_link () fi done if test -z "$dlopenmodule" && test "$shouldnotlink" = yes && test "$pass" = link; then - $ECHO + echo if test "$linkmode" = prog; then $ECHO "*** Warning: Linking the executable $output against the loadable module" else @@ -5071,7 +6734,7 @@ func_mode_link () *) case "$compile_rpath " in *" $absdir "*) ;; - *) compile_rpath="$compile_rpath $absdir" + *) func_append compile_rpath " $absdir" ;; esac ;; esac @@ -5080,7 +6743,7 @@ func_mode_link () *) case "$finalize_rpath " in *" $libdir "*) ;; - *) finalize_rpath="$finalize_rpath $libdir" + *) func_append finalize_rpath " $libdir" ;; esac ;; esac @@ -5099,7 +6762,7 @@ func_mode_link () elif test -n "$soname_spec"; then # bleh windows case $host in - *cygwin* | mingw*) + *cygwin* | mingw* | *cegcc*) func_arith $current - $age major=$func_arith_result versuffix="-$major" @@ -5134,7 +6797,7 @@ func_mode_link () linklib=$newlib fi # test -n "$old_archive_from_expsyms_cmds" - if test "$linkmode" = prog || test "$mode" != relink; then + if test "$linkmode" = prog || test "$opt_mode" != relink; then add_shlibpath= add_dir= add= @@ -5156,9 +6819,9 @@ func_mode_link () if test "X$dlopenmodule" != "X$lib"; then $ECHO "*** Warning: lib $linklib is a module, not a shared library" if test -z "$old_library" ; then - $ECHO - $ECHO "*** And there doesn't seem to be a static archive available" - $ECHO "*** The link will probably fail, sorry" + echo + echo "*** And there doesn't seem to be a static archive available" + echo "*** The link will probably fail, sorry" else add="$dir/$old_library" fi @@ -5185,12 +6848,12 @@ func_mode_link () test "$hardcode_direct_absolute" = no; then add="$dir/$linklib" elif test "$hardcode_minus_L" = yes; then - add_dir="-L$dir" + add_dir="-L$absdir" # Try looking first in the location we're being installed to. if test -n "$inst_prefix_dir"; then case $libdir in [\\/]*) - add_dir="$add_dir -L$inst_prefix_dir$libdir" + func_append add_dir " -L$inst_prefix_dir$libdir" ;; esac fi @@ -5212,7 +6875,7 @@ func_mode_link () if test -n "$add_shlibpath"; then case :$compile_shlibpath: in *":$add_shlibpath:"*) ;; - *) compile_shlibpath="$compile_shlibpath$add_shlibpath:" ;; + *) func_append compile_shlibpath "$add_shlibpath:" ;; esac fi if test "$linkmode" = prog; then @@ -5226,13 +6889,13 @@ func_mode_link () test "$hardcode_shlibpath_var" = yes; then case :$finalize_shlibpath: in *":$libdir:"*) ;; - *) finalize_shlibpath="$finalize_shlibpath$libdir:" ;; + *) func_append finalize_shlibpath "$libdir:" ;; esac fi fi fi - if test "$linkmode" = prog || test "$mode" = relink; then + if test "$linkmode" = prog || test "$opt_mode" = relink; then add_shlibpath= add_dir= add= @@ -5246,7 +6909,7 @@ func_mode_link () elif test "$hardcode_shlibpath_var" = yes; then case :$finalize_shlibpath: in *":$libdir:"*) ;; - *) finalize_shlibpath="$finalize_shlibpath$libdir:" ;; + *) func_append finalize_shlibpath "$libdir:" ;; esac add="-l$name" elif test "$hardcode_automatic" = yes; then @@ -5263,7 +6926,7 @@ func_mode_link () if test -n "$inst_prefix_dir"; then case $libdir in [\\/]*) - add_dir="$add_dir -L$inst_prefix_dir$libdir" + func_append add_dir " -L$inst_prefix_dir$libdir" ;; esac fi @@ -5298,21 +6961,21 @@ func_mode_link () # Just print a warning and add the library to dependency_libs so # that the program can be linked against the static library. - $ECHO + echo $ECHO "*** Warning: This system can not link to static lib archive $lib." - $ECHO "*** I have the capability to make that library automatically link in when" - $ECHO "*** you link to this library. But I can only do this if you have a" - $ECHO "*** shared version of the library, which you do not appear to have." + echo "*** I have the capability to make that library automatically link in when" + echo "*** you link to this library. But I can only do this if you have a" + echo "*** shared version of the library, which you do not appear to have." if test "$module" = yes; then - $ECHO "*** But as you try to build a module library, libtool will still create " - $ECHO "*** a static module, that should work as long as the dlopening application" - $ECHO "*** is linked with the -dlopen flag to resolve symbols at runtime." + echo "*** But as you try to build a module library, libtool will still create " + echo "*** a static module, that should work as long as the dlopening application" + echo "*** is linked with the -dlopen flag to resolve symbols at runtime." if test -z "$global_symbol_pipe"; then - $ECHO - $ECHO "*** However, this would only work if libtool was able to extract symbol" - $ECHO "*** lists from a program, using \`nm' or equivalent, but libtool could" - $ECHO "*** not find such a program. So, this module is probably useless." - $ECHO "*** \`nm' from GNU binutils and a full rebuild may help." + echo + echo "*** However, this would only work if libtool was able to extract symbol" + echo "*** lists from a program, using \`nm' or equivalent, but libtool could" + echo "*** not find such a program. So, this module is probably useless." + echo "*** \`nm' from GNU binutils and a full rebuild may help." fi if test "$build_old_libs" = no; then build_libtool_libs=module @@ -5340,37 +7003,46 @@ func_mode_link () temp_xrpath=$func_stripname_result case " $xrpath " in *" $temp_xrpath "*) ;; - *) xrpath="$xrpath $temp_xrpath";; + *) func_append xrpath " $temp_xrpath";; esac;; - *) temp_deplibs="$temp_deplibs $libdir";; + *) func_append temp_deplibs " $libdir";; esac done dependency_libs="$temp_deplibs" fi - newlib_search_path="$newlib_search_path $absdir" + func_append newlib_search_path " $absdir" # Link against this library test "$link_static" = no && newdependency_libs="$abs_ladir/$laname $newdependency_libs" # ... and its dependency_libs tmp_libs= for deplib in $dependency_libs; do newdependency_libs="$deplib $newdependency_libs" - if $opt_duplicate_deps ; then + case $deplib in + -L*) func_stripname '-L' '' "$deplib" + func_resolve_sysroot "$func_stripname_result";; + *) func_resolve_sysroot "$deplib" ;; + esac + if $opt_preserve_dup_deps ; then case "$tmp_libs " in - *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;; + *" $func_resolve_sysroot_result "*) + func_append specialdeplibs " $func_resolve_sysroot_result" ;; esac fi - tmp_libs="$tmp_libs $deplib" + func_append tmp_libs " $func_resolve_sysroot_result" done if test "$link_all_deplibs" != no; then # Add the search paths of all dependency libraries for deplib in $dependency_libs; do + path= case $deplib in -L*) path="$deplib" ;; *.la) + func_resolve_sysroot "$deplib" + deplib=$func_resolve_sysroot_result func_dirname "$deplib" "" "." - dir="$func_dirname_result" + dir=$func_dirname_result # We need an absolute path. case $dir in [\\/]* | [A-Za-z]:[\\/]*) absdir="$dir" ;; @@ -5397,8 +7069,8 @@ func_mode_link () if test -z "$darwin_install_name"; then darwin_install_name=`${OTOOL64} -L $depdepl | awk '{if (NR == 2) {print $1;exit}}'` fi - compiler_flags="$compiler_flags ${wl}-dylib_file ${wl}${darwin_install_name}:${depdepl}" - linker_flags="$linker_flags -dylib_file ${darwin_install_name}:${depdepl}" + func_append compiler_flags " ${wl}-dylib_file ${wl}${darwin_install_name}:${depdepl}" + func_append linker_flags " -dylib_file ${darwin_install_name}:${depdepl}" path= fi fi @@ -5431,7 +7103,7 @@ func_mode_link () compile_deplibs="$new_inherited_linker_flags $compile_deplibs" finalize_deplibs="$new_inherited_linker_flags $finalize_deplibs" else - compiler_flags="$compiler_flags "`$ECHO "X $new_inherited_linker_flags" | $Xsed -e 's% \([^ $]*\).ltframework% -framework \1%g'` + compiler_flags="$compiler_flags "`$ECHO " $new_inherited_linker_flags" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` fi fi dependency_libs="$newdependency_libs" @@ -5448,7 +7120,7 @@ func_mode_link () for dir in $newlib_search_path; do case "$lib_search_path " in *" $dir "*) ;; - *) lib_search_path="$lib_search_path $dir" ;; + *) func_append lib_search_path " $dir" ;; esac done newlib_search_path= @@ -5506,10 +7178,10 @@ func_mode_link () -L*) case " $tmp_libs " in *" $deplib "*) ;; - *) tmp_libs="$tmp_libs $deplib" ;; + *) func_append tmp_libs " $deplib" ;; esac ;; - *) tmp_libs="$tmp_libs $deplib" ;; + *) func_append tmp_libs " $deplib" ;; esac done eval $var=\"$tmp_libs\" @@ -5525,7 +7197,7 @@ func_mode_link () ;; esac if test -n "$i" ; then - tmp_libs="$tmp_libs $i" + func_append tmp_libs " $i" fi done dependency_libs=$tmp_libs @@ -5566,7 +7238,7 @@ func_mode_link () # Now set the variables for building old libraries. build_libtool_libs=no oldlibs="$output" - objs="$objs$old_deplibs" + func_append objs "$old_deplibs" ;; lib) @@ -5599,10 +7271,10 @@ func_mode_link () if test "$deplibs_check_method" != pass_all; then func_fatal_error "cannot build libtool library \`$output' from non-libtool objects on this host:$objs" else - $ECHO + echo $ECHO "*** Warning: Linking the shared library $output against the non-libtool" $ECHO "*** objects $objs is not portable!" - libobjs="$libobjs $objs" + func_append libobjs " $objs" fi fi @@ -5661,13 +7333,14 @@ func_mode_link () # which has an extra 1 added just for fun # case $version_type in + # correct linux to gnu/linux during the next big refactor darwin|linux|osf|windows|none) func_arith $number_major + $number_minor current=$func_arith_result age="$number_minor" revision="$number_revision" ;; - freebsd-aout|freebsd-elf|sunos) + freebsd-aout|freebsd-elf|qnx|sunos) current="$number_major" revision="$number_minor" age="0" @@ -5679,6 +7352,9 @@ func_mode_link () revision="$number_minor" lt_irix_increment=no ;; + *) + func_fatal_configuration "$modename: unknown library version type \`$version_type'" + ;; esac ;; no) @@ -5777,7 +7453,7 @@ func_mode_link () versuffix="$major.$revision" ;; - linux) + linux) # correct to gnu/linux during the next big refactor func_arith $current - $age major=.$func_arith_result versuffix="$major.$age.$revision" @@ -5800,7 +7476,7 @@ func_mode_link () done # Make executables depend on our current version. - verstring="$verstring:${current}.0" + func_append verstring ":${current}.0" ;; qnx) @@ -5868,17 +7544,17 @@ func_mode_link () fi func_generate_dlsyms "$libname" "$libname" "yes" - libobjs="$libobjs $symfileobj" + func_append libobjs " $symfileobj" test "X$libobjs" = "X " && libobjs= - if test "$mode" != relink; then + if test "$opt_mode" != relink; then # Remove our outputs, but don't remove object files since they # may have been created when compiling PIC objects. removelist= tempremovelist=`$ECHO "$output_objdir/*"` for p in $tempremovelist; do case $p in - *.$objext) + *.$objext | *.gcno) ;; $output_objdir/$outputname | $output_objdir/$libname.* | $output_objdir/${libname}${release}.*) if test "X$precious_files_regex" != "X"; then @@ -5887,7 +7563,7 @@ func_mode_link () continue fi fi - removelist="$removelist $p" + func_append removelist " $p" ;; *) ;; esac @@ -5898,27 +7574,28 @@ func_mode_link () # Now set the variables for building old libraries. if test "$build_old_libs" = yes && test "$build_libtool_libs" != convenience ; then - oldlibs="$oldlibs $output_objdir/$libname.$libext" + func_append oldlibs " $output_objdir/$libname.$libext" # Transform .lo files to .o files. - oldobjs="$objs "`$ECHO "X$libobjs" | $SP2NL | $Xsed -e '/\.'${libext}'$/d' -e "$lo2o" | $NL2SP` + oldobjs="$objs "`$ECHO "$libobjs" | $SP2NL | $SED "/\.${libext}$/d; $lo2o" | $NL2SP` fi # Eliminate all temporary directories. #for path in $notinst_path; do - # lib_search_path=`$ECHO "X$lib_search_path " | $Xsed -e "s% $path % %g"` - # deplibs=`$ECHO "X$deplibs " | $Xsed -e "s% -L$path % %g"` - # dependency_libs=`$ECHO "X$dependency_libs " | $Xsed -e "s% -L$path % %g"` + # lib_search_path=`$ECHO "$lib_search_path " | $SED "s% $path % %g"` + # deplibs=`$ECHO "$deplibs " | $SED "s% -L$path % %g"` + # dependency_libs=`$ECHO "$dependency_libs " | $SED "s% -L$path % %g"` #done if test -n "$xrpath"; then # If the user specified any rpath flags, then add them. temp_xrpath= for libdir in $xrpath; do - temp_xrpath="$temp_xrpath -R$libdir" + func_replace_sysroot "$libdir" + func_append temp_xrpath " -R$func_replace_sysroot_result" case "$finalize_rpath " in *" $libdir "*) ;; - *) finalize_rpath="$finalize_rpath $libdir" ;; + *) func_append finalize_rpath " $libdir" ;; esac done if test "$hardcode_into_libs" != yes || test "$build_old_libs" = yes; then @@ -5932,7 +7609,7 @@ func_mode_link () for lib in $old_dlfiles; do case " $dlprefiles $dlfiles " in *" $lib "*) ;; - *) dlfiles="$dlfiles $lib" ;; + *) func_append dlfiles " $lib" ;; esac done @@ -5942,19 +7619,19 @@ func_mode_link () for lib in $old_dlprefiles; do case "$dlprefiles " in *" $lib "*) ;; - *) dlprefiles="$dlprefiles $lib" ;; + *) func_append dlprefiles " $lib" ;; esac done if test "$build_libtool_libs" = yes; then if test -n "$rpath"; then case $host in - *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-beos*) + *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-beos* | *-cegcc* | *-*-haiku*) # these systems don't actually have a c library (as such)! ;; *-*-rhapsody* | *-*-darwin1.[012]) # Rhapsody C library is in the System framework - deplibs="$deplibs System.ltframework" + func_append deplibs " System.ltframework" ;; *-*-netbsd*) # Don't link with libc until the a.out ld.so is fixed. @@ -5971,7 +7648,7 @@ func_mode_link () *) # Add libc to deplibs on all other systems if necessary. if test "$build_libtool_need_lc" = "yes"; then - deplibs="$deplibs -lc" + func_append deplibs " -lc" fi ;; esac @@ -6020,7 +7697,7 @@ EOF if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then case " $predeps $postdeps " in *" $i "*) - newdeplibs="$newdeplibs $i" + func_append newdeplibs " $i" i="" ;; esac @@ -6031,21 +7708,21 @@ EOF set dummy $deplib_matches; shift deplib_match=$1 if test `expr "$ldd_output" : ".*$deplib_match"` -ne 0 ; then - newdeplibs="$newdeplibs $i" + func_append newdeplibs " $i" else droppeddeps=yes - $ECHO + echo $ECHO "*** Warning: dynamic linker does not accept needed library $i." - $ECHO "*** I have the capability to make that library automatically link in when" - $ECHO "*** you link to this library. But I can only do this if you have a" - $ECHO "*** shared version of the library, which I believe you do not have" - $ECHO "*** because a test_compile did reveal that the linker did not use it for" - $ECHO "*** its dynamic dependency list that programs get resolved with at runtime." + echo "*** I have the capability to make that library automatically link in when" + echo "*** you link to this library. But I can only do this if you have a" + echo "*** shared version of the library, which I believe you do not have" + echo "*** because a test_compile did reveal that the linker did not use it for" + echo "*** its dynamic dependency list that programs get resolved with at runtime." fi fi ;; *) - newdeplibs="$newdeplibs $i" + func_append newdeplibs " $i" ;; esac done @@ -6063,7 +7740,7 @@ EOF if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then case " $predeps $postdeps " in *" $i "*) - newdeplibs="$newdeplibs $i" + func_append newdeplibs " $i" i="" ;; esac @@ -6074,29 +7751,29 @@ EOF set dummy $deplib_matches; shift deplib_match=$1 if test `expr "$ldd_output" : ".*$deplib_match"` -ne 0 ; then - newdeplibs="$newdeplibs $i" + func_append newdeplibs " $i" else droppeddeps=yes - $ECHO + echo $ECHO "*** Warning: dynamic linker does not accept needed library $i." - $ECHO "*** I have the capability to make that library automatically link in when" - $ECHO "*** you link to this library. But I can only do this if you have a" - $ECHO "*** shared version of the library, which you do not appear to have" - $ECHO "*** because a test_compile did reveal that the linker did not use this one" - $ECHO "*** as a dynamic dependency that programs can get resolved with at runtime." + echo "*** I have the capability to make that library automatically link in when" + echo "*** you link to this library. But I can only do this if you have a" + echo "*** shared version of the library, which you do not appear to have" + echo "*** because a test_compile did reveal that the linker did not use this one" + echo "*** as a dynamic dependency that programs can get resolved with at runtime." fi fi else droppeddeps=yes - $ECHO + echo $ECHO "*** Warning! Library $i is needed by this library but I was not able to" - $ECHO "*** make it link in! You will probably need to install it or some" - $ECHO "*** library that it depends on before this library will be fully" - $ECHO "*** functional. Installing it before continuing would be even better." + echo "*** make it link in! You will probably need to install it or some" + echo "*** library that it depends on before this library will be fully" + echo "*** functional. Installing it before continuing would be even better." fi ;; *) - newdeplibs="$newdeplibs $i" + func_append newdeplibs " $i" ;; esac done @@ -6113,15 +7790,27 @@ EOF if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then case " $predeps $postdeps " in *" $a_deplib "*) - newdeplibs="$newdeplibs $a_deplib" + func_append newdeplibs " $a_deplib" a_deplib="" ;; esac fi if test -n "$a_deplib" ; then libname=`eval "\\$ECHO \"$libname_spec\""` + if test -n "$file_magic_glob"; then + libnameglob=`func_echo_all "$libname" | $SED -e $file_magic_glob` + else + libnameglob=$libname + fi + test "$want_nocaseglob" = yes && nocaseglob=`shopt -p nocaseglob` for i in $lib_search_path $sys_lib_search_path $shlib_search_path; do - potential_libs=`ls $i/$libname[.-]* 2>/dev/null` + if test "$want_nocaseglob" = yes; then + shopt -s nocaseglob + potential_libs=`ls $i/$libnameglob[.-]* 2>/dev/null` + $nocaseglob + else + potential_libs=`ls $i/$libnameglob[.-]* 2>/dev/null` + fi for potent_lib in $potential_libs; do # Follow soft links. if ls -lLd "$potent_lib" 2>/dev/null | @@ -6138,13 +7827,13 @@ EOF potliblink=`ls -ld $potlib | ${SED} 's/.* -> //'` case $potliblink in [\\/]* | [A-Za-z]:[\\/]*) potlib="$potliblink";; - *) potlib=`$ECHO "X$potlib" | $Xsed -e 's,[^/]*$,,'`"$potliblink";; + *) potlib=`$ECHO "$potlib" | $SED 's,[^/]*$,,'`"$potliblink";; esac done if eval $file_magic_cmd \"\$potlib\" 2>/dev/null | $SED -e 10q | $EGREP "$file_magic_regex" > /dev/null; then - newdeplibs="$newdeplibs $a_deplib" + func_append newdeplibs " $a_deplib" a_deplib="" break 2 fi @@ -6153,12 +7842,12 @@ EOF fi if test -n "$a_deplib" ; then droppeddeps=yes - $ECHO + echo $ECHO "*** Warning: linker path does not have real file for library $a_deplib." - $ECHO "*** I have the capability to make that library automatically link in when" - $ECHO "*** you link to this library. But I can only do this if you have a" - $ECHO "*** shared version of the library, which you do not appear to have" - $ECHO "*** because I did check the linker path looking for a file starting" + echo "*** I have the capability to make that library automatically link in when" + echo "*** you link to this library. But I can only do this if you have a" + echo "*** shared version of the library, which you do not appear to have" + echo "*** because I did check the linker path looking for a file starting" if test -z "$potlib" ; then $ECHO "*** with $libname but no candidates were found. (...for file magic test)" else @@ -6169,7 +7858,7 @@ EOF ;; *) # Add a -L argument. - newdeplibs="$newdeplibs $a_deplib" + func_append newdeplibs " $a_deplib" ;; esac done # Gone through all deplibs. @@ -6185,7 +7874,7 @@ EOF if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then case " $predeps $postdeps " in *" $a_deplib "*) - newdeplibs="$newdeplibs $a_deplib" + func_append newdeplibs " $a_deplib" a_deplib="" ;; esac @@ -6196,9 +7885,9 @@ EOF potential_libs=`ls $i/$libname[.-]* 2>/dev/null` for potent_lib in $potential_libs; do potlib="$potent_lib" # see symlink-check above in file_magic test - if eval "\$ECHO \"X$potent_lib\"" 2>/dev/null | $Xsed -e 10q | \ + if eval "\$ECHO \"$potent_lib\"" 2>/dev/null | $SED 10q | \ $EGREP "$match_pattern_regex" > /dev/null; then - newdeplibs="$newdeplibs $a_deplib" + func_append newdeplibs " $a_deplib" a_deplib="" break 2 fi @@ -6207,12 +7896,12 @@ EOF fi if test -n "$a_deplib" ; then droppeddeps=yes - $ECHO + echo $ECHO "*** Warning: linker path does not have real file for library $a_deplib." - $ECHO "*** I have the capability to make that library automatically link in when" - $ECHO "*** you link to this library. But I can only do this if you have a" - $ECHO "*** shared version of the library, which you do not appear to have" - $ECHO "*** because I did check the linker path looking for a file starting" + echo "*** I have the capability to make that library automatically link in when" + echo "*** you link to this library. But I can only do this if you have a" + echo "*** shared version of the library, which you do not appear to have" + echo "*** because I did check the linker path looking for a file starting" if test -z "$potlib" ; then $ECHO "*** with $libname but no candidates were found. (...for regex pattern test)" else @@ -6223,32 +7912,32 @@ EOF ;; *) # Add a -L argument. - newdeplibs="$newdeplibs $a_deplib" + func_append newdeplibs " $a_deplib" ;; esac done # Gone through all deplibs. ;; none | unknown | *) newdeplibs="" - tmp_deplibs=`$ECHO "X $deplibs" | $Xsed \ - -e 's/ -lc$//' -e 's/ -[LR][^ ]*//g'` + tmp_deplibs=`$ECHO " $deplibs" | $SED 's/ -lc$//; s/ -[LR][^ ]*//g'` if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then for i in $predeps $postdeps ; do # can't use Xsed below, because $i might contain '/' - tmp_deplibs=`$ECHO "X $tmp_deplibs" | $Xsed -e "s,$i,,"` + tmp_deplibs=`$ECHO " $tmp_deplibs" | $SED "s,$i,,"` done fi - if $ECHO "X $tmp_deplibs" | $Xsed -e 's/[ ]//g' | - $GREP . >/dev/null; then - $ECHO + case $tmp_deplibs in + *[!\ \ ]*) + echo if test "X$deplibs_check_method" = "Xnone"; then - $ECHO "*** Warning: inter-library dependencies are not supported in this platform." + echo "*** Warning: inter-library dependencies are not supported in this platform." else - $ECHO "*** Warning: inter-library dependencies are not known to be supported." + echo "*** Warning: inter-library dependencies are not known to be supported." fi - $ECHO "*** All declared inter-library dependencies are being dropped." + echo "*** All declared inter-library dependencies are being dropped." droppeddeps=yes - fi + ;; + esac ;; esac versuffix=$versuffix_save @@ -6260,23 +7949,23 @@ EOF case $host in *-*-rhapsody* | *-*-darwin1.[012]) # On Rhapsody replace the C library with the System framework - newdeplibs=`$ECHO "X $newdeplibs" | $Xsed -e 's/ -lc / System.ltframework /'` + newdeplibs=`$ECHO " $newdeplibs" | $SED 's/ -lc / System.ltframework /'` ;; esac if test "$droppeddeps" = yes; then if test "$module" = yes; then - $ECHO - $ECHO "*** Warning: libtool could not satisfy all declared inter-library" + echo + echo "*** Warning: libtool could not satisfy all declared inter-library" $ECHO "*** dependencies of module $libname. Therefore, libtool will create" - $ECHO "*** a static module, that should work as long as the dlopening" - $ECHO "*** application is linked with the -dlopen flag." + echo "*** a static module, that should work as long as the dlopening" + echo "*** application is linked with the -dlopen flag." if test -z "$global_symbol_pipe"; then - $ECHO - $ECHO "*** However, this would only work if libtool was able to extract symbol" - $ECHO "*** lists from a program, using \`nm' or equivalent, but libtool could" - $ECHO "*** not find such a program. So, this module is probably useless." - $ECHO "*** \`nm' from GNU binutils and a full rebuild may help." + echo + echo "*** However, this would only work if libtool was able to extract symbol" + echo "*** lists from a program, using \`nm' or equivalent, but libtool could" + echo "*** not find such a program. So, this module is probably useless." + echo "*** \`nm' from GNU binutils and a full rebuild may help." fi if test "$build_old_libs" = no; then oldlibs="$output_objdir/$libname.$libext" @@ -6286,16 +7975,16 @@ EOF build_libtool_libs=no fi else - $ECHO "*** The inter-library dependencies that have been dropped here will be" - $ECHO "*** automatically added whenever a program is linked with this library" - $ECHO "*** or is declared to -dlopen it." + echo "*** The inter-library dependencies that have been dropped here will be" + echo "*** automatically added whenever a program is linked with this library" + echo "*** or is declared to -dlopen it." if test "$allow_undefined" = no; then - $ECHO - $ECHO "*** Since this library must not contain undefined symbols," - $ECHO "*** because either the platform does not support them or" - $ECHO "*** it was explicitly requested with -no-undefined," - $ECHO "*** libtool will only create a static version of it." + echo + echo "*** Since this library must not contain undefined symbols," + echo "*** because either the platform does not support them or" + echo "*** it was explicitly requested with -no-undefined," + echo "*** libtool will only create a static version of it." if test "$build_old_libs" = no; then oldlibs="$output_objdir/$libname.$libext" build_libtool_libs=module @@ -6312,9 +8001,9 @@ EOF # Time to change all our "foo.ltframework" stuff back to "-framework foo" case $host in *-*-darwin*) - newdeplibs=`$ECHO "X $newdeplibs" | $Xsed -e 's% \([^ $]*\).ltframework% -framework \1%g'` - new_inherited_linker_flags=`$ECHO "X $new_inherited_linker_flags" | $Xsed -e 's% \([^ $]*\).ltframework% -framework \1%g'` - deplibs=`$ECHO "X $deplibs" | $Xsed -e 's% \([^ $]*\).ltframework% -framework \1%g'` + newdeplibs=`$ECHO " $newdeplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` + new_inherited_linker_flags=`$ECHO " $new_inherited_linker_flags" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` + deplibs=`$ECHO " $deplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` ;; esac @@ -6327,7 +8016,7 @@ EOF *) case " $deplibs " in *" -L$path/$objdir "*) - new_libs="$new_libs -L$path/$objdir" ;; + func_append new_libs " -L$path/$objdir" ;; esac ;; esac @@ -6337,10 +8026,10 @@ EOF -L*) case " $new_libs " in *" $deplib "*) ;; - *) new_libs="$new_libs $deplib" ;; + *) func_append new_libs " $deplib" ;; esac ;; - *) new_libs="$new_libs $deplib" ;; + *) func_append new_libs " $deplib" ;; esac done deplibs="$new_libs" @@ -6352,15 +8041,22 @@ EOF # Test again, we may have decided not to build it any more if test "$build_libtool_libs" = yes; then + # Remove ${wl} instances when linking with ld. + # FIXME: should test the right _cmds variable. + case $archive_cmds in + *\$LD\ *) wl= ;; + esac if test "$hardcode_into_libs" = yes; then # Hardcode the library paths hardcode_libdirs= dep_rpath= rpath="$finalize_rpath" - test "$mode" != relink && rpath="$compile_rpath$rpath" + test "$opt_mode" != relink && rpath="$compile_rpath$rpath" for libdir in $rpath; do if test -n "$hardcode_libdir_flag_spec"; then if test -n "$hardcode_libdir_separator"; then + func_replace_sysroot "$libdir" + libdir=$func_replace_sysroot_result if test -z "$hardcode_libdirs"; then hardcode_libdirs="$libdir" else @@ -6369,18 +8065,18 @@ EOF *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*) ;; *) - hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir" + func_append hardcode_libdirs "$hardcode_libdir_separator$libdir" ;; esac fi else eval flag=\"$hardcode_libdir_flag_spec\" - dep_rpath="$dep_rpath $flag" + func_append dep_rpath " $flag" fi elif test -n "$runpath_var"; then case "$perm_rpath " in *" $libdir "*) ;; - *) perm_rpath="$perm_rpath $libdir" ;; + *) func_append perm_rpath " $libdir" ;; esac fi done @@ -6388,17 +8084,13 @@ EOF if test -n "$hardcode_libdir_separator" && test -n "$hardcode_libdirs"; then libdir="$hardcode_libdirs" - if test -n "$hardcode_libdir_flag_spec_ld"; then - eval dep_rpath=\"$hardcode_libdir_flag_spec_ld\" - else - eval dep_rpath=\"$hardcode_libdir_flag_spec\" - fi + eval "dep_rpath=\"$hardcode_libdir_flag_spec\"" fi if test -n "$runpath_var" && test -n "$perm_rpath"; then # We should set the runpath_var. rpath= for dir in $perm_rpath; do - rpath="$rpath$dir:" + func_append rpath "$dir:" done eval "$runpath_var='$rpath\$$runpath_var'; export $runpath_var" fi @@ -6406,7 +8098,7 @@ EOF fi shlibpath="$finalize_shlibpath" - test "$mode" != relink && shlibpath="$compile_shlibpath$shlibpath" + test "$opt_mode" != relink && shlibpath="$compile_shlibpath$shlibpath" if test -n "$shlibpath"; then eval "$shlibpath_var='$shlibpath\$$shlibpath_var'; export $shlibpath_var" fi @@ -6432,23 +8124,23 @@ EOF linknames= for link do - linknames="$linknames $link" + func_append linknames " $link" done # Use standard objects if they are pic - test -z "$pic_flag" && libobjs=`$ECHO "X$libobjs" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP` + test -z "$pic_flag" && libobjs=`$ECHO "$libobjs" | $SP2NL | $SED "$lo2o" | $NL2SP` test "X$libobjs" = "X " && libobjs= delfiles= if test -n "$export_symbols" && test -n "$include_expsyms"; then $opt_dry_run || cp "$export_symbols" "$output_objdir/$libname.uexp" export_symbols="$output_objdir/$libname.uexp" - delfiles="$delfiles $export_symbols" + func_append delfiles " $export_symbols" fi orig_export_symbols= case $host_os in - cygwin* | mingw*) + cygwin* | mingw* | cegcc*) if test -n "$export_symbols" && test -z "$export_symbols_regex"; then # exporting using user supplied symfile if test "x`$SED 1q $export_symbols`" != xEXPORTS; then @@ -6474,13 +8166,45 @@ EOF $opt_dry_run || $RM $export_symbols cmds=$export_symbols_cmds save_ifs="$IFS"; IFS='~' - for cmd in $cmds; do + for cmd1 in $cmds; do IFS="$save_ifs" - eval cmd=\"$cmd\" - func_len " $cmd" - len=$func_len_result - if test "$len" -lt "$max_cmd_len" || test "$max_cmd_len" -le -1; then + # Take the normal branch if the nm_file_list_spec branch + # doesn't work or if tool conversion is not needed. + case $nm_file_list_spec~$to_tool_file_cmd in + *~func_convert_file_noop | *~func_convert_file_msys_to_w32 | ~*) + try_normal_branch=yes + eval cmd=\"$cmd1\" + func_len " $cmd" + len=$func_len_result + ;; + *) + try_normal_branch=no + ;; + esac + if test "$try_normal_branch" = yes \ + && { test "$len" -lt "$max_cmd_len" \ + || test "$max_cmd_len" -le -1; } + then + func_show_eval "$cmd" 'exit $?' + skipped_export=false + elif test -n "$nm_file_list_spec"; then + func_basename "$output" + output_la=$func_basename_result + save_libobjs=$libobjs + save_output=$output + output=${output_objdir}/${output_la}.nm + func_to_tool_file "$output" + libobjs=$nm_file_list_spec$func_to_tool_file_result + func_append delfiles " $output" + func_verbose "creating $NM input file list: $output" + for obj in $save_libobjs; do + func_to_tool_file "$obj" + $ECHO "$func_to_tool_file_result" + done > "$output" + eval cmd=\"$cmd1\" func_show_eval "$cmd" 'exit $?' + output=$save_output + libobjs=$save_libobjs skipped_export=false else # The command line is too long to execute in one step. @@ -6502,7 +8226,7 @@ EOF if test -n "$export_symbols" && test -n "$include_expsyms"; then tmp_export_symbols="$export_symbols" test -n "$orig_export_symbols" && tmp_export_symbols="$orig_export_symbols" - $opt_dry_run || eval '$ECHO "X$include_expsyms" | $Xsed | $SP2NL >> "$tmp_export_symbols"' + $opt_dry_run || eval '$ECHO "$include_expsyms" | $SP2NL >> "$tmp_export_symbols"' fi if test "X$skipped_export" != "X:" && test -n "$orig_export_symbols"; then @@ -6514,7 +8238,7 @@ EOF # global variables. join(1) would be nice here, but unfortunately # isn't a blessed tool. $opt_dry_run || $SED -e '/[ ,]DATA/!d;s,\(.*\)\([ \,].*\),s|^\1$|\1\2|,' < $export_symbols > $output_objdir/$libname.filter - delfiles="$delfiles $export_symbols $output_objdir/$libname.filter" + func_append delfiles " $export_symbols $output_objdir/$libname.filter" export_symbols=$output_objdir/$libname.def $opt_dry_run || $SED -f $output_objdir/$libname.filter < $orig_export_symbols > $export_symbols fi @@ -6524,7 +8248,7 @@ EOF case " $convenience " in *" $test_deplib "*) ;; *) - tmp_deplibs="$tmp_deplibs $test_deplib" + func_append tmp_deplibs " $test_deplib" ;; esac done @@ -6544,21 +8268,21 @@ EOF test "X$libobjs" = "X " && libobjs= else gentop="$output_objdir/${outputname}x" - generated="$generated $gentop" + func_append generated " $gentop" func_extract_archives $gentop $convenience - libobjs="$libobjs $func_extract_archives_result" + func_append libobjs " $func_extract_archives_result" test "X$libobjs" = "X " && libobjs= fi fi if test "$thread_safe" = yes && test -n "$thread_safe_flag_spec"; then eval flag=\"$thread_safe_flag_spec\" - linker_flags="$linker_flags $flag" + func_append linker_flags " $flag" fi # Make a backup of the uninstalled library when relinking - if test "$mode" = relink; then + if test "$opt_mode" = relink; then $opt_dry_run || eval '(cd $output_objdir && $RM ${realname}U && $MV $realname ${realname}U)' || exit $? fi @@ -6603,7 +8327,8 @@ EOF save_libobjs=$libobjs fi save_output=$output - output_la=`$ECHO "X$output" | $Xsed -e "$basename"` + func_basename "$output" + output_la=$func_basename_result # Clear the reloadable object creation command queue and # initialize k to one. @@ -6616,13 +8341,16 @@ EOF if test -n "$save_libobjs" && test "X$skipped_export" != "X:" && test "$with_gnu_ld" = yes; then output=${output_objdir}/${output_la}.lnkscript func_verbose "creating GNU ld script: $output" - $ECHO 'INPUT (' > $output + echo 'INPUT (' > $output for obj in $save_libobjs do - $ECHO "$obj" >> $output + func_to_tool_file "$obj" + $ECHO "$func_to_tool_file_result" >> $output done - $ECHO ')' >> $output - delfiles="$delfiles $output" + echo ')' >> $output + func_append delfiles " $output" + func_to_tool_file "$output" + output=$func_to_tool_file_result elif test -n "$save_libobjs" && test "X$skipped_export" != "X:" && test "X$file_list_spec" != X; then output=${output_objdir}/${output_la}.lnk func_verbose "creating linker input file list: $output" @@ -6636,10 +8364,12 @@ EOF fi for obj do - $ECHO "$obj" >> $output + func_to_tool_file "$obj" + $ECHO "$func_to_tool_file_result" >> $output done - delfiles="$delfiles $output" - output=$firstobj\"$file_list_spec$output\" + func_append delfiles " $output" + func_to_tool_file "$output" + output=$firstobj\"$file_list_spec$func_to_tool_file_result\" else if test -n "$save_libobjs"; then func_verbose "creating reloadable object files..." @@ -6663,17 +8393,19 @@ EOF # command to the queue. if test "$k" -eq 1 ; then # The first file doesn't have a previous command to add. - eval concat_cmds=\"$reload_cmds $objlist $last_robj\" + reload_objs=$objlist + eval concat_cmds=\"$reload_cmds\" else # All subsequent reloadable object files will link in # the last one created. - eval concat_cmds=\"\$concat_cmds~$reload_cmds $objlist $last_robj~\$RM $last_robj\" + reload_objs="$objlist $last_robj" + eval concat_cmds=\"\$concat_cmds~$reload_cmds~\$RM $last_robj\" fi last_robj=$output_objdir/$output_la-${k}.$objext func_arith $k + 1 k=$func_arith_result output=$output_objdir/$output_la-${k}.$objext - objlist=$obj + objlist=" $obj" func_len " $last_robj" func_arith $len0 + $func_len_result len=$func_arith_result @@ -6683,11 +8415,12 @@ EOF # reloadable object file. All subsequent reloadable object # files will link in the last one created. test -z "$concat_cmds" || concat_cmds=$concat_cmds~ - eval concat_cmds=\"\${concat_cmds}$reload_cmds $objlist $last_robj\" + reload_objs="$objlist $last_robj" + eval concat_cmds=\"\${concat_cmds}$reload_cmds\" if test -n "$last_robj"; then eval concat_cmds=\"\${concat_cmds}~\$RM $last_robj\" fi - delfiles="$delfiles $output" + func_append delfiles " $output" else output= @@ -6721,7 +8454,7 @@ EOF lt_exit=$? # Restore the uninstalled library and exit - if test "$mode" = relink; then + if test "$opt_mode" = relink; then ( cd "$output_objdir" && \ $RM "${realname}T" && \ $MV "${realname}U" "$realname" ) @@ -6742,7 +8475,7 @@ EOF if test -n "$export_symbols" && test -n "$include_expsyms"; then tmp_export_symbols="$export_symbols" test -n "$orig_export_symbols" && tmp_export_symbols="$orig_export_symbols" - $opt_dry_run || eval '$ECHO "X$include_expsyms" | $Xsed | $SP2NL >> "$tmp_export_symbols"' + $opt_dry_run || eval '$ECHO "$include_expsyms" | $SP2NL >> "$tmp_export_symbols"' fi if test -n "$orig_export_symbols"; then @@ -6754,7 +8487,7 @@ EOF # global variables. join(1) would be nice here, but unfortunately # isn't a blessed tool. $opt_dry_run || $SED -e '/[ ,]DATA/!d;s,\(.*\)\([ \,].*\),s|^\1$|\1\2|,' < $export_symbols > $output_objdir/$libname.filter - delfiles="$delfiles $export_symbols $output_objdir/$libname.filter" + func_append delfiles " $export_symbols $output_objdir/$libname.filter" export_symbols=$output_objdir/$libname.def $opt_dry_run || $SED -f $output_objdir/$libname.filter < $orig_export_symbols > $export_symbols fi @@ -6795,10 +8528,10 @@ EOF # Add any objects from preloaded convenience libraries if test -n "$dlprefiles"; then gentop="$output_objdir/${outputname}x" - generated="$generated $gentop" + func_append generated " $gentop" func_extract_archives $gentop $dlprefiles - libobjs="$libobjs $func_extract_archives_result" + func_append libobjs " $func_extract_archives_result" test "X$libobjs" = "X " && libobjs= fi @@ -6814,7 +8547,7 @@ EOF lt_exit=$? # Restore the uninstalled library and exit - if test "$mode" = relink; then + if test "$opt_mode" = relink; then ( cd "$output_objdir" && \ $RM "${realname}T" && \ $MV "${realname}U" "$realname" ) @@ -6826,7 +8559,7 @@ EOF IFS="$save_ifs" # Restore the uninstalled library and exit - if test "$mode" = relink; then + if test "$opt_mode" = relink; then $opt_dry_run || eval '(cd $output_objdir && $RM ${realname}T && $MV $realname ${realname}T && $MV ${realname}U $realname)' || exit $? if test -n "$convenience"; then @@ -6907,18 +8640,21 @@ EOF if test -n "$convenience"; then if test -n "$whole_archive_flag_spec"; then eval tmp_whole_archive_flags=\"$whole_archive_flag_spec\" - reload_conv_objs=$reload_objs\ `$ECHO "X$tmp_whole_archive_flags" | $Xsed -e 's|,| |g'` + reload_conv_objs=$reload_objs\ `$ECHO "$tmp_whole_archive_flags" | $SED 's|,| |g'` else gentop="$output_objdir/${obj}x" - generated="$generated $gentop" + func_append generated " $gentop" func_extract_archives $gentop $convenience reload_conv_objs="$reload_objs $func_extract_archives_result" fi fi + # If we're not building shared, we need to use non_pic_objs + test "$build_libtool_libs" != yes && libobjs="$non_pic_objects" + # Create the old-style object. - reload_objs="$objs$old_deplibs "`$ECHO "X$libobjs" | $SP2NL | $Xsed -e '/\.'${libext}$'/d' -e '/\.lib$/d' -e "$lo2o" | $NL2SP`" $reload_conv_objs" ### testsuite: skip nested quoting test + reload_objs="$objs$old_deplibs "`$ECHO "$libobjs" | $SP2NL | $SED "/\.${libext}$/d; /\.lib$/d; $lo2o" | $NL2SP`" $reload_conv_objs" ### testsuite: skip nested quoting test output="$obj" func_execute_cmds "$reload_cmds" 'exit $?' @@ -6978,8 +8714,8 @@ EOF case $host in *-*-rhapsody* | *-*-darwin1.[012]) # On Rhapsody replace the C library is the System framework - compile_deplibs=`$ECHO "X $compile_deplibs" | $Xsed -e 's/ -lc / System.ltframework /'` - finalize_deplibs=`$ECHO "X $finalize_deplibs" | $Xsed -e 's/ -lc / System.ltframework /'` + compile_deplibs=`$ECHO " $compile_deplibs" | $SED 's/ -lc / System.ltframework /'` + finalize_deplibs=`$ECHO " $finalize_deplibs" | $SED 's/ -lc / System.ltframework /'` ;; esac @@ -6990,14 +8726,14 @@ EOF if test "$tagname" = CXX ; then case ${MACOSX_DEPLOYMENT_TARGET-10.0} in 10.[0123]) - compile_command="$compile_command ${wl}-bind_at_load" - finalize_command="$finalize_command ${wl}-bind_at_load" + func_append compile_command " ${wl}-bind_at_load" + func_append finalize_command " ${wl}-bind_at_load" ;; esac fi # Time to change all our "foo.ltframework" stuff back to "-framework foo" - compile_deplibs=`$ECHO "X $compile_deplibs" | $Xsed -e 's% \([^ $]*\).ltframework% -framework \1%g'` - finalize_deplibs=`$ECHO "X $finalize_deplibs" | $Xsed -e 's% \([^ $]*\).ltframework% -framework \1%g'` + compile_deplibs=`$ECHO " $compile_deplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` + finalize_deplibs=`$ECHO " $finalize_deplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` ;; esac @@ -7011,7 +8747,7 @@ EOF *) case " $compile_deplibs " in *" -L$path/$objdir "*) - new_libs="$new_libs -L$path/$objdir" ;; + func_append new_libs " -L$path/$objdir" ;; esac ;; esac @@ -7021,17 +8757,17 @@ EOF -L*) case " $new_libs " in *" $deplib "*) ;; - *) new_libs="$new_libs $deplib" ;; + *) func_append new_libs " $deplib" ;; esac ;; - *) new_libs="$new_libs $deplib" ;; + *) func_append new_libs " $deplib" ;; esac done compile_deplibs="$new_libs" - compile_command="$compile_command $compile_deplibs" - finalize_command="$finalize_command $finalize_deplibs" + func_append compile_command " $compile_deplibs" + func_append finalize_command " $finalize_deplibs" if test -n "$rpath$xrpath"; then # If the user specified any rpath flags, then add them. @@ -7039,7 +8775,7 @@ EOF # This is the magic to use -rpath. case "$finalize_rpath " in *" $libdir "*) ;; - *) finalize_rpath="$finalize_rpath $libdir" ;; + *) func_append finalize_rpath " $libdir" ;; esac done fi @@ -7058,30 +8794,32 @@ EOF *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*) ;; *) - hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir" + func_append hardcode_libdirs "$hardcode_libdir_separator$libdir" ;; esac fi else eval flag=\"$hardcode_libdir_flag_spec\" - rpath="$rpath $flag" + func_append rpath " $flag" fi elif test -n "$runpath_var"; then case "$perm_rpath " in *" $libdir "*) ;; - *) perm_rpath="$perm_rpath $libdir" ;; + *) func_append perm_rpath " $libdir" ;; esac fi case $host in - *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2*) + *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*) testbindir=`${ECHO} "$libdir" | ${SED} -e 's*/lib$*/bin*'` case :$dllsearchpath: in *":$libdir:"*) ;; - *) dllsearchpath="$dllsearchpath:$libdir";; + ::) dllsearchpath=$libdir;; + *) func_append dllsearchpath ":$libdir";; esac case :$dllsearchpath: in *":$testbindir:"*) ;; - *) dllsearchpath="$dllsearchpath:$testbindir";; + ::) dllsearchpath=$testbindir;; + *) func_append dllsearchpath ":$testbindir";; esac ;; esac @@ -7107,18 +8845,18 @@ EOF *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*) ;; *) - hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir" + func_append hardcode_libdirs "$hardcode_libdir_separator$libdir" ;; esac fi else eval flag=\"$hardcode_libdir_flag_spec\" - rpath="$rpath $flag" + func_append rpath " $flag" fi elif test -n "$runpath_var"; then case "$finalize_perm_rpath " in *" $libdir "*) ;; - *) finalize_perm_rpath="$finalize_perm_rpath $libdir" ;; + *) func_append finalize_perm_rpath " $libdir" ;; esac fi done @@ -7132,8 +8870,8 @@ EOF if test -n "$libobjs" && test "$build_old_libs" = yes; then # Transform all the library objects into standard objects. - compile_command=`$ECHO "X$compile_command" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP` - finalize_command=`$ECHO "X$finalize_command" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP` + compile_command=`$ECHO "$compile_command" | $SP2NL | $SED "$lo2o" | $NL2SP` + finalize_command=`$ECHO "$finalize_command" | $SP2NL | $SED "$lo2o" | $NL2SP` fi func_generate_dlsyms "$outputname" "@PROGRAM@" "no" @@ -7145,6 +8883,10 @@ EOF wrappers_required=yes case $host in + *cegcc* | *mingw32ce*) + # Disable wrappers for cegcc and mingw32ce hosts, we are cross compiling anyway. + wrappers_required=no + ;; *cygwin* | *mingw* ) if test "$build_libtool_libs" != yes; then wrappers_required=no @@ -7158,13 +8900,19 @@ EOF esac if test "$wrappers_required" = no; then # Replace the output file specification. - compile_command=`$ECHO "X$compile_command" | $Xsed -e 's%@OUTPUT@%'"$output"'%g'` + compile_command=`$ECHO "$compile_command" | $SED 's%@OUTPUT@%'"$output"'%g'` link_command="$compile_command$compile_rpath" # We have no uninstalled library dependencies, so finalize right now. exit_status=0 func_show_eval "$link_command" 'exit_status=$?' + if test -n "$postlink_cmds"; then + func_to_tool_file "$output" + postlink_cmds=`func_echo_all "$postlink_cmds" | $SED -e 's%@OUTPUT@%'"$output"'%g' -e 's%@TOOL_OUTPUT@%'"$func_to_tool_file_result"'%g'` + func_execute_cmds "$postlink_cmds" 'exit $?' + fi + # Delete the generated files. if test -f "$output_objdir/${outputname}S.${objext}"; then func_show_eval '$RM "$output_objdir/${outputname}S.${objext}"' @@ -7187,7 +8935,7 @@ EOF # We should set the runpath_var. rpath= for dir in $perm_rpath; do - rpath="$rpath$dir:" + func_append rpath "$dir:" done compile_var="$runpath_var=\"$rpath\$$runpath_var\" " fi @@ -7195,7 +8943,7 @@ EOF # We should set the runpath_var. rpath= for dir in $finalize_perm_rpath; do - rpath="$rpath$dir:" + func_append rpath "$dir:" done finalize_var="$runpath_var=\"$rpath\$$runpath_var\" " fi @@ -7205,11 +8953,18 @@ EOF # We don't need to create a wrapper script. link_command="$compile_var$compile_command$compile_rpath" # Replace the output file specification. - link_command=`$ECHO "X$link_command" | $Xsed -e 's%@OUTPUT@%'"$output"'%g'` + link_command=`$ECHO "$link_command" | $SED 's%@OUTPUT@%'"$output"'%g'` # Delete the old output file. $opt_dry_run || $RM $output # Link the executable and exit func_show_eval "$link_command" 'exit $?' + + if test -n "$postlink_cmds"; then + func_to_tool_file "$output" + postlink_cmds=`func_echo_all "$postlink_cmds" | $SED -e 's%@OUTPUT@%'"$output"'%g' -e 's%@TOOL_OUTPUT@%'"$func_to_tool_file_result"'%g'` + func_execute_cmds "$postlink_cmds" 'exit $?' + fi + exit $EXIT_SUCCESS fi @@ -7224,7 +8979,7 @@ EOF if test "$fast_install" != no; then link_command="$finalize_var$compile_command$finalize_rpath" if test "$fast_install" = yes; then - relink_command=`$ECHO "X$compile_var$compile_command$compile_rpath" | $Xsed -e 's%@OUTPUT@%\$progdir/\$file%g'` + relink_command=`$ECHO "$compile_var$compile_command$compile_rpath" | $SED 's%@OUTPUT@%\$progdir/\$file%g'` else # fast_install is set to needless relink_command= @@ -7236,13 +8991,19 @@ EOF fi # Replace the output file specification. - link_command=`$ECHO "X$link_command" | $Xsed -e 's%@OUTPUT@%'"$output_objdir/$outputname"'%g'` + link_command=`$ECHO "$link_command" | $SED 's%@OUTPUT@%'"$output_objdir/$outputname"'%g'` # Delete the old output files. $opt_dry_run || $RM $output $output_objdir/$outputname $output_objdir/lt-$outputname func_show_eval "$link_command" 'exit $?' + if test -n "$postlink_cmds"; then + func_to_tool_file "$output_objdir/$outputname" + postlink_cmds=`func_echo_all "$postlink_cmds" | $SED -e 's%@OUTPUT@%'"$output_objdir/$outputname"'%g' -e 's%@TOOL_OUTPUT@%'"$func_to_tool_file_result"'%g'` + func_execute_cmds "$postlink_cmds" 'exit $?' + fi + # Now create the wrapper script. func_verbose "creating $output" @@ -7260,18 +9021,7 @@ EOF fi done relink_command="(cd `pwd`; $relink_command)" - relink_command=`$ECHO "X$relink_command" | $Xsed -e "$sed_quote_subst"` - fi - - # Quote $ECHO for shipping. - if test "X$ECHO" = "X$SHELL $progpath --fallback-echo"; then - case $progpath in - [\\/]* | [A-Za-z]:[\\/]*) qecho="$SHELL $progpath --fallback-echo";; - *) qecho="$SHELL `pwd`/$progpath --fallback-echo";; - esac - qecho=`$ECHO "X$qecho" | $Xsed -e "$sed_quote_subst"` - else - qecho=`$ECHO "X$ECHO" | $Xsed -e "$sed_quote_subst"` + relink_command=`$ECHO "$relink_command" | $SED "$sed_quote_subst"` fi # Only actually do things if not in dry run mode. @@ -7302,11 +9052,10 @@ EOF func_emit_cwrapperexe_src > $cwrappersource - # we should really use a build-platform specific compiler - # here, but OTOH, the wrappers (shell script and this C one) - # are only useful if you want to execute the "real" binary. - # Since the "real" binary is built for $host, then this - # wrapper might as well be built for $host, too. + # The wrapper executable is built using the $host compiler, + # because it contains $host paths and files. If cross- + # compiling, it, like the target executable, must be + # executed on the $host or under an emulation environment. $opt_dry_run || { $LTCC $LTCFLAGS -o $cwrapper $cwrappersource $STRIP $cwrapper @@ -7352,7 +9101,7 @@ EOF else oldobjs="$old_deplibs $non_pic_objects" if test "$preload" = yes && test -f "$symfileobj"; then - oldobjs="$oldobjs $symfileobj" + func_append oldobjs " $symfileobj" fi fi addlibs="$old_convenience" @@ -7360,10 +9109,10 @@ EOF if test -n "$addlibs"; then gentop="$output_objdir/${outputname}x" - generated="$generated $gentop" + func_append generated " $gentop" func_extract_archives $gentop $addlibs - oldobjs="$oldobjs $func_extract_archives_result" + func_append oldobjs " $func_extract_archives_result" fi # Do each command in the archive commands. @@ -7374,10 +9123,10 @@ EOF # Add any objects from preloaded convenience libraries if test -n "$dlprefiles"; then gentop="$output_objdir/${outputname}x" - generated="$generated $gentop" + func_append generated " $gentop" func_extract_archives $gentop $dlprefiles - oldobjs="$oldobjs $func_extract_archives_result" + func_append oldobjs " $func_extract_archives_result" fi # POSIX demands no paths to be encoded in archives. We have @@ -7393,9 +9142,9 @@ EOF done | sort | sort -uc >/dev/null 2>&1); then : else - $ECHO "copying selected object files to avoid basename conflicts..." + echo "copying selected object files to avoid basename conflicts..." gentop="$output_objdir/${outputname}x" - generated="$generated $gentop" + func_append generated " $gentop" func_mkdir_p "$gentop" save_oldobjs=$oldobjs oldobjs= @@ -7419,18 +9168,30 @@ EOF esac done func_show_eval "ln $obj $gentop/$newobj || cp $obj $gentop/$newobj" - oldobjs="$oldobjs $gentop/$newobj" + func_append oldobjs " $gentop/$newobj" ;; - *) oldobjs="$oldobjs $obj" ;; + *) func_append oldobjs " $obj" ;; esac done fi + func_to_tool_file "$oldlib" func_convert_file_msys_to_w32 + tool_oldlib=$func_to_tool_file_result eval cmds=\"$old_archive_cmds\" func_len " $cmds" len=$func_len_result if test "$len" -lt "$max_cmd_len" || test "$max_cmd_len" -le -1; then cmds=$old_archive_cmds + elif test -n "$archiver_list_spec"; then + func_verbose "using command file archive linking..." + for obj in $oldobjs + do + func_to_tool_file "$obj" + $ECHO "$func_to_tool_file_result" + done > $output_objdir/$libname.libcmd + func_to_tool_file "$output_objdir/$libname.libcmd" + oldobjs=" $archiver_list_spec$func_to_tool_file_result" + cmds=$old_archive_cmds else # the command line is too long to link in one step, link in parts func_verbose "using piecewise archive linking..." @@ -7504,7 +9265,7 @@ EOF done # Quote the link command for shipping. relink_command="(cd `pwd`; $SHELL $progpath $preserve_args --mode=relink $libtool_args @inst_prefix_dir@)" - relink_command=`$ECHO "X$relink_command" | $Xsed -e "$sed_quote_subst"` + relink_command=`$ECHO "$relink_command" | $SED "$sed_quote_subst"` if test "$hardcode_automatic" = yes ; then relink_command= fi @@ -7524,12 +9285,23 @@ EOF *.la) func_basename "$deplib" name="$func_basename_result" - eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $deplib` + func_resolve_sysroot "$deplib" + eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $func_resolve_sysroot_result` test -z "$libdir" && \ func_fatal_error "\`$deplib' is not a valid libtool archive" - newdependency_libs="$newdependency_libs $libdir/$name" + func_append newdependency_libs " ${lt_sysroot:+=}$libdir/$name" + ;; + -L*) + func_stripname -L '' "$deplib" + func_replace_sysroot "$func_stripname_result" + func_append newdependency_libs " -L$func_replace_sysroot_result" ;; - *) newdependency_libs="$newdependency_libs $deplib" ;; + -R*) + func_stripname -R '' "$deplib" + func_replace_sysroot "$func_stripname_result" + func_append newdependency_libs " -R$func_replace_sysroot_result" + ;; + *) func_append newdependency_libs " $deplib" ;; esac done dependency_libs="$newdependency_libs" @@ -7543,9 +9315,9 @@ EOF eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $lib` test -z "$libdir" && \ func_fatal_error "\`$lib' is not a valid libtool archive" - newdlfiles="$newdlfiles $libdir/$name" + func_append newdlfiles " ${lt_sysroot:+=}$libdir/$name" ;; - *) newdlfiles="$newdlfiles $lib" ;; + *) func_append newdlfiles " $lib" ;; esac done dlfiles="$newdlfiles" @@ -7562,7 +9334,7 @@ EOF eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $lib` test -z "$libdir" && \ func_fatal_error "\`$lib' is not a valid libtool archive" - newdlprefiles="$newdlprefiles $libdir/$name" + func_append newdlprefiles " ${lt_sysroot:+=}$libdir/$name" ;; esac done @@ -7574,7 +9346,7 @@ EOF [\\/]* | [A-Za-z]:[\\/]*) abs="$lib" ;; *) abs=`pwd`"/$lib" ;; esac - newdlfiles="$newdlfiles $abs" + func_append newdlfiles " $abs" done dlfiles="$newdlfiles" newdlprefiles= @@ -7583,15 +9355,33 @@ EOF [\\/]* | [A-Za-z]:[\\/]*) abs="$lib" ;; *) abs=`pwd`"/$lib" ;; esac - newdlprefiles="$newdlprefiles $abs" + func_append newdlprefiles " $abs" done dlprefiles="$newdlprefiles" fi $RM $output # place dlname in correct position for cygwin + # In fact, it would be nice if we could use this code for all target + # systems that can't hard-code library paths into their executables + # and that have no shared library path variable independent of PATH, + # but it turns out we can't easily determine that from inspecting + # libtool variables, so we have to hard-code the OSs to which it + # applies here; at the moment, that means platforms that use the PE + # object format with DLL files. See the long comment at the top of + # tests/bindir.at for full details. tdlname=$dlname case $host,$output,$installed,$module,$dlname in - *cygwin*,*lai,yes,no,*.dll | *mingw*,*lai,yes,no,*.dll) tdlname=../bin/$dlname ;; + *cygwin*,*lai,yes,no,*.dll | *mingw*,*lai,yes,no,*.dll | *cegcc*,*lai,yes,no,*.dll) + # If a -bindir argument was supplied, place the dll there. + if test "x$bindir" != x ; + then + func_relative_path "$install_libdir" "$bindir" + tdlname=$func_relative_path_result$dlname + else + # Otherwise fall back on heuristic. + tdlname=../bin/$dlname + fi + ;; esac $ECHO > $output "\ # $outputname - a libtool library file @@ -7650,7 +9440,7 @@ relink_command=\"$relink_command\"" exit $EXIT_SUCCESS } -{ test "$mode" = link || test "$mode" = relink; } && +{ test "$opt_mode" = link || test "$opt_mode" = relink; } && func_mode_link ${1+"$@"} @@ -7670,9 +9460,9 @@ func_mode_uninstall () for arg do case $arg in - -f) RM="$RM $arg"; rmforce=yes ;; - -*) RM="$RM $arg" ;; - *) files="$files $arg" ;; + -f) func_append RM " $arg"; rmforce=yes ;; + -*) func_append RM " $arg" ;; + *) func_append files " $arg" ;; esac done @@ -7681,24 +9471,23 @@ func_mode_uninstall () rmdirs= - origobjdir="$objdir" for file in $files; do func_dirname "$file" "" "." dir="$func_dirname_result" if test "X$dir" = X.; then - objdir="$origobjdir" + odir="$objdir" else - objdir="$dir/$origobjdir" + odir="$dir/$objdir" fi func_basename "$file" name="$func_basename_result" - test "$mode" = uninstall && objdir="$dir" + test "$opt_mode" = uninstall && odir="$dir" - # Remember objdir for removal later, being careful to avoid duplicates - if test "$mode" = clean; then + # Remember odir for removal later, being careful to avoid duplicates + if test "$opt_mode" = clean; then case " $rmdirs " in - *" $objdir "*) ;; - *) rmdirs="$rmdirs $objdir" ;; + *" $odir "*) ;; + *) func_append rmdirs " $odir" ;; esac fi @@ -7724,18 +9513,17 @@ func_mode_uninstall () # Delete the libtool libraries and symlinks. for n in $library_names; do - rmfiles="$rmfiles $objdir/$n" + func_append rmfiles " $odir/$n" done - test -n "$old_library" && rmfiles="$rmfiles $objdir/$old_library" + test -n "$old_library" && func_append rmfiles " $odir/$old_library" - case "$mode" in + case "$opt_mode" in clean) - case " $library_names " in - # " " in the beginning catches empty $dlname + case " $library_names " in *" $dlname "*) ;; - *) rmfiles="$rmfiles $objdir/$dlname" ;; + *) test -n "$dlname" && func_append rmfiles " $odir/$dlname" ;; esac - test -n "$libdir" && rmfiles="$rmfiles $objdir/$name $objdir/${name}i" + test -n "$libdir" && func_append rmfiles " $odir/$name $odir/${name}i" ;; uninstall) if test -n "$library_names"; then @@ -7763,19 +9551,19 @@ func_mode_uninstall () # Add PIC object to the list of files to remove. if test -n "$pic_object" && test "$pic_object" != none; then - rmfiles="$rmfiles $dir/$pic_object" + func_append rmfiles " $dir/$pic_object" fi # Add non-PIC object to the list of files to remove. if test -n "$non_pic_object" && test "$non_pic_object" != none; then - rmfiles="$rmfiles $dir/$non_pic_object" + func_append rmfiles " $dir/$non_pic_object" fi fi ;; *) - if test "$mode" = clean ; then + if test "$opt_mode" = clean ; then noexename=$name case $file in *.exe) @@ -7785,7 +9573,7 @@ func_mode_uninstall () noexename=$func_stripname_result # $file with .exe has already been added to rmfiles, # add $file without .exe - rmfiles="$rmfiles $file" + func_append rmfiles " $file" ;; esac # Do a test to see if this is a libtool program. @@ -7794,7 +9582,7 @@ func_mode_uninstall () func_ltwrapper_scriptname "$file" relink_command= func_source $func_ltwrapper_scriptname_result - rmfiles="$rmfiles $func_ltwrapper_scriptname_result" + func_append rmfiles " $func_ltwrapper_scriptname_result" else relink_command= func_source $dir/$noexename @@ -7802,12 +9590,12 @@ func_mode_uninstall () # note $name still contains .exe if it was in $file originally # as does the version of $file that was added into $rmfiles - rmfiles="$rmfiles $objdir/$name $objdir/${name}S.${objext}" + func_append rmfiles " $odir/$name $odir/${name}S.${objext}" if test "$fast_install" = yes && test -n "$relink_command"; then - rmfiles="$rmfiles $objdir/lt-$name" + func_append rmfiles " $odir/lt-$name" fi if test "X$noexename" != "X$name" ; then - rmfiles="$rmfiles $objdir/lt-${noexename}.c" + func_append rmfiles " $odir/lt-${noexename}.c" fi fi fi @@ -7815,7 +9603,6 @@ func_mode_uninstall () esac func_show_eval "$RM $rmfiles" 'exit_status=1' done - objdir="$origobjdir" # Try to remove the ${objdir}s in the directories where we deleted files for dir in $rmdirs; do @@ -7827,16 +9614,16 @@ func_mode_uninstall () exit $exit_status } -{ test "$mode" = uninstall || test "$mode" = clean; } && +{ test "$opt_mode" = uninstall || test "$opt_mode" = clean; } && func_mode_uninstall ${1+"$@"} -test -z "$mode" && { +test -z "$opt_mode" && { help="$generic_help" func_fatal_help "you must specify a MODE" } test -z "$exec_cmd" && \ - func_fatal_help "invalid operation mode \`$mode'" + func_fatal_help "invalid operation mode \`$opt_mode'" if test -n "$exec_cmd"; then eval exec "$exec_cmd" diff --git a/cpp/thirdparty/protobuf-2.3.0/missing b/cpp/thirdparty/protobuf-2.5.0/gtest/build-aux/missing similarity index 86% rename from cpp/thirdparty/protobuf-2.3.0/missing rename to cpp/thirdparty/protobuf-2.5.0/gtest/build-aux/missing index 1c8ff7049..86a8fc31e 100755 --- a/cpp/thirdparty/protobuf-2.3.0/missing +++ b/cpp/thirdparty/protobuf-2.5.0/gtest/build-aux/missing @@ -1,10 +1,10 @@ #! /bin/sh # Common stub for a few missing GNU programs while installing. -scriptversion=2006-05-10.23 +scriptversion=2012-01-06.13; # UTC -# Copyright (C) 1996, 1997, 1999, 2000, 2002, 2003, 2004, 2005, 2006 -# Free Software Foundation, Inc. +# Copyright (C) 1996, 1997, 1999, 2000, 2002, 2003, 2004, 2005, 2006, +# 2008, 2009, 2010, 2011, 2012 Free Software Foundation, Inc. # Originally by Fran,cois Pinard , 1996. # This program is free software; you can redistribute it and/or modify @@ -18,9 +18,7 @@ scriptversion=2006-05-10.23 # GNU General Public License for more details. # You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA -# 02110-1301, USA. +# along with this program. If not, see . # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a @@ -86,9 +84,11 @@ Supported PROGRAM values: help2man touch the output file lex create \`lex.yy.c', if possible, from existing .c makeinfo touch the output file - tar try tar, gnutar, gtar, then tar without non-portable flags yacc create \`y.tab.[ch]', if possible, from existing .[ch] +Version suffixes to PROGRAM as well as the prefixes \`gnu-', \`gnu', and +\`g' are ignored when checking the name. + Send bug reports to ." exit $? ;; @@ -106,23 +106,21 @@ Send bug reports to ." esac +# normalize program name to check for. +program=`echo "$1" | sed ' + s/^gnu-//; t + s/^gnu//; t + s/^g//; t'` + # Now exit if we have it, but it failed. Also exit now if we # don't have it and --version was passed (most likely to detect -# the program). +# the program). This is about non-GNU programs, so use $1 not +# $program. case $1 in - lex|yacc) + lex*|yacc*) # Not GNU programs, they don't have --version. ;; - tar) - if test -n "$run"; then - echo 1>&2 "ERROR: \`tar' requires --run" - exit 1 - elif test "x$2" = "x--version" || test "x$2" = "x--help"; then - exit 1 - fi - ;; - *) if test -z "$run" && ($1 --version) > /dev/null 2>&1; then # We have it, but it failed. @@ -138,7 +136,7 @@ esac # If it does not exist, or fails to run (possibly an outdated version), # try to emulate it. -case $1 in +case $program in aclocal*) echo 1>&2 "\ WARNING: \`$1' is $msg. You should only need it if @@ -148,7 +146,7 @@ WARNING: \`$1' is $msg. You should only need it if touch aclocal.m4 ;; - autoconf) + autoconf*) echo 1>&2 "\ WARNING: \`$1' is $msg. You should only need it if you modified \`${configure_ac}'. You might want to install the @@ -157,7 +155,7 @@ WARNING: \`$1' is $msg. You should only need it if touch configure ;; - autoheader) + autoheader*) echo 1>&2 "\ WARNING: \`$1' is $msg. You should only need it if you modified \`acconfig.h' or \`${configure_ac}'. You might want @@ -187,7 +185,7 @@ WARNING: \`$1' is $msg. You should only need it if while read f; do touch "$f"; done ;; - autom4te) + autom4te*) echo 1>&2 "\ WARNING: \`$1' is needed, but is $msg. You might have modified some files without having the @@ -210,7 +208,7 @@ WARNING: \`$1' is needed, but is $msg. fi ;; - bison|yacc) + bison*|yacc*) echo 1>&2 "\ WARNING: \`$1' $msg. You should only need it if you modified a \`.y' file. You may need the \`Bison' package @@ -218,7 +216,7 @@ WARNING: \`$1' $msg. You should only need it if \`Bison' from any GNU archive site." rm -f y.tab.c y.tab.h if test $# -ne 1; then - eval LASTARG="\${$#}" + eval LASTARG=\${$#} case $LASTARG in *.y) SRCFILE=`echo "$LASTARG" | sed 's/y$/c/'` @@ -240,7 +238,7 @@ WARNING: \`$1' $msg. You should only need it if fi ;; - lex|flex) + lex*|flex*) echo 1>&2 "\ WARNING: \`$1' is $msg. You should only need it if you modified a \`.l' file. You may need the \`Flex' package @@ -248,7 +246,7 @@ WARNING: \`$1' is $msg. You should only need it if \`Flex' from any GNU archive site." rm -f lex.yy.c if test $# -ne 1; then - eval LASTARG="\${$#}" + eval LASTARG=\${$#} case $LASTARG in *.l) SRCFILE=`echo "$LASTARG" | sed 's/l$/c/'` @@ -263,7 +261,7 @@ WARNING: \`$1' is $msg. You should only need it if fi ;; - help2man) + help2man*) echo 1>&2 "\ WARNING: \`$1' is $msg. You should only need it if you modified a dependency of a manual page. You may need the @@ -277,11 +275,11 @@ WARNING: \`$1' is $msg. You should only need it if else test -z "$file" || exec >$file echo ".ab help2man is required to generate this page" - exit 1 + exit $? fi ;; - makeinfo) + makeinfo*) echo 1>&2 "\ WARNING: \`$1' is $msg. You should only need it if you modified a \`.texi' or \`.texinfo' file, or any other file @@ -310,41 +308,6 @@ WARNING: \`$1' is $msg. You should only need it if touch $file ;; - tar) - shift - - # We have already tried tar in the generic part. - # Look for gnutar/gtar before invocation to avoid ugly error - # messages. - if (gnutar --version > /dev/null 2>&1); then - gnutar "$@" && exit 0 - fi - if (gtar --version > /dev/null 2>&1); then - gtar "$@" && exit 0 - fi - firstarg="$1" - if shift; then - case $firstarg in - *o*) - firstarg=`echo "$firstarg" | sed s/o//` - tar "$firstarg" "$@" && exit 0 - ;; - esac - case $firstarg in - *h*) - firstarg=`echo "$firstarg" | sed s/h//` - tar "$firstarg" "$@" && exit 0 - ;; - esac - fi - - echo 1>&2 "\ -WARNING: I can't seem to be able to run \`tar' with the given arguments. - You may want to install GNU tar or Free paxutils, or check the - command line arguments." - exit 1 - ;; - *) echo 1>&2 "\ WARNING: \`$1' is needed, and is $msg. @@ -363,5 +326,6 @@ exit 0 # eval: (add-hook 'write-file-hooks 'time-stamp) # time-stamp-start: "scriptversion=" # time-stamp-format: "%:y-%02m-%02d.%02H" -# time-stamp-end: "$" +# time-stamp-time-zone: "UTC" +# time-stamp-end: "; # UTC" # End: diff --git a/cpp/thirdparty/protobuf-2.5.0/gtest/cmake/internal_utils.cmake b/cpp/thirdparty/protobuf-2.5.0/gtest/cmake/internal_utils.cmake new file mode 100644 index 000000000..8cb21894c --- /dev/null +++ b/cpp/thirdparty/protobuf-2.5.0/gtest/cmake/internal_utils.cmake @@ -0,0 +1,227 @@ +# Defines functions and macros useful for building Google Test and +# Google Mock. +# +# Note: +# +# - This file will be run twice when building Google Mock (once via +# Google Test's CMakeLists.txt, and once via Google Mock's). +# Therefore it shouldn't have any side effects other than defining +# the functions and macros. +# +# - The functions/macros defined in this file may depend on Google +# Test and Google Mock's option() definitions, and thus must be +# called *after* the options have been defined. + +# Tweaks CMake's default compiler/linker settings to suit Google Test's needs. +# +# This must be a macro(), as inside a function string() can only +# update variables in the function scope. +macro(fix_default_compiler_settings_) + if (MSVC) + # For MSVC, CMake sets certain flags to defaults we want to override. + # This replacement code is taken from sample in the CMake Wiki at + # http://www.cmake.org/Wiki/CMake_FAQ#Dynamic_Replace. + foreach (flag_var + CMAKE_CXX_FLAGS CMAKE_CXX_FLAGS_DEBUG CMAKE_CXX_FLAGS_RELEASE + CMAKE_CXX_FLAGS_MINSIZEREL CMAKE_CXX_FLAGS_RELWITHDEBINFO) + if (NOT BUILD_SHARED_LIBS AND NOT gtest_force_shared_crt) + # When Google Test is built as a shared library, it should also use + # shared runtime libraries. Otherwise, it may end up with multiple + # copies of runtime library data in different modules, resulting in + # hard-to-find crashes. When it is built as a static library, it is + # preferable to use CRT as static libraries, as we don't have to rely + # on CRT DLLs being available. CMake always defaults to using shared + # CRT libraries, so we override that default here. + string(REPLACE "/MD" "-MT" ${flag_var} "${${flag_var}}") + endif() + + # We prefer more strict warning checking for building Google Test. + # Replaces /W3 with /W4 in defaults. + string(REPLACE "/W3" "-W4" ${flag_var} "${${flag_var}}") + endforeach() + endif() +endmacro() + +# Defines the compiler/linker flags used to build Google Test and +# Google Mock. You can tweak these definitions to suit your need. A +# variable's value is empty before it's explicitly assigned to. +macro(config_compiler_and_linker) + if (NOT gtest_disable_pthreads) + # Defines CMAKE_USE_PTHREADS_INIT and CMAKE_THREAD_LIBS_INIT. + find_package(Threads) + endif() + + fix_default_compiler_settings_() + if (MSVC) + # Newlines inside flags variables break CMake's NMake generator. + # TODO(vladl@google.com): Add -RTCs and -RTCu to debug builds. + set(cxx_base_flags "-GS -W4 -WX -wd4127 -wd4251 -wd4275 -nologo -J -Zi") + if (MSVC_VERSION LESS 1400) + # Suppress spurious warnings MSVC 7.1 sometimes issues. + # Forcing value to bool. + set(cxx_base_flags "${cxx_base_flags} -wd4800") + # Copy constructor and assignment operator could not be generated. + set(cxx_base_flags "${cxx_base_flags} -wd4511 -wd4512") + # Compatibility warnings not applicable to Google Test. + # Resolved overload was found by argument-dependent lookup. + set(cxx_base_flags "${cxx_base_flags} -wd4675") + endif() + set(cxx_base_flags "${cxx_base_flags} -D_UNICODE -DUNICODE -DWIN32 -D_WIN32") + set(cxx_base_flags "${cxx_base_flags} -DSTRICT -DWIN32_LEAN_AND_MEAN") + set(cxx_exception_flags "-EHsc -D_HAS_EXCEPTIONS=1") + set(cxx_no_exception_flags "-D_HAS_EXCEPTIONS=0") + set(cxx_no_rtti_flags "-GR-") + elseif (CMAKE_COMPILER_IS_GNUCXX) + set(cxx_base_flags "-Wall -Wshadow") + set(cxx_exception_flags "-fexceptions") + set(cxx_no_exception_flags "-fno-exceptions") + # Until version 4.3.2, GCC doesn't define a macro to indicate + # whether RTTI is enabled. Therefore we define GTEST_HAS_RTTI + # explicitly. + set(cxx_no_rtti_flags "-fno-rtti -DGTEST_HAS_RTTI=0") + set(cxx_strict_flags + "-Wextra -Wno-unused-parameter -Wno-missing-field-initializers") + elseif (CMAKE_CXX_COMPILER_ID STREQUAL "SunPro") + set(cxx_exception_flags "-features=except") + # Sun Pro doesn't provide macros to indicate whether exceptions and + # RTTI are enabled, so we define GTEST_HAS_* explicitly. + set(cxx_no_exception_flags "-features=no%except -DGTEST_HAS_EXCEPTIONS=0") + set(cxx_no_rtti_flags "-features=no%rtti -DGTEST_HAS_RTTI=0") + elseif (CMAKE_CXX_COMPILER_ID STREQUAL "VisualAge" OR + CMAKE_CXX_COMPILER_ID STREQUAL "XL") + # CMake 2.8 changes Visual Age's compiler ID to "XL". + set(cxx_exception_flags "-qeh") + set(cxx_no_exception_flags "-qnoeh") + # Until version 9.0, Visual Age doesn't define a macro to indicate + # whether RTTI is enabled. Therefore we define GTEST_HAS_RTTI + # explicitly. + set(cxx_no_rtti_flags "-qnortti -DGTEST_HAS_RTTI=0") + elseif (CMAKE_CXX_COMPILER_ID STREQUAL "HP") + set(cxx_base_flags "-AA -mt") + set(cxx_exception_flags "-DGTEST_HAS_EXCEPTIONS=1") + set(cxx_no_exception_flags "+noeh -DGTEST_HAS_EXCEPTIONS=0") + # RTTI can not be disabled in HP aCC compiler. + set(cxx_no_rtti_flags "") + endif() + + if (CMAKE_USE_PTHREADS_INIT) # The pthreads library is available and allowed. + set(cxx_base_flags "${cxx_base_flags} -DGTEST_HAS_PTHREAD=1") + else() + set(cxx_base_flags "${cxx_base_flags} -DGTEST_HAS_PTHREAD=0") + endif() + + # For building gtest's own tests and samples. + set(cxx_exception "${CMAKE_CXX_FLAGS} ${cxx_base_flags} ${cxx_exception_flags}") + set(cxx_no_exception + "${CMAKE_CXX_FLAGS} ${cxx_base_flags} ${cxx_no_exception_flags}") + set(cxx_default "${cxx_exception}") + set(cxx_no_rtti "${cxx_default} ${cxx_no_rtti_flags}") + set(cxx_use_own_tuple "${cxx_default} -DGTEST_USE_OWN_TR1_TUPLE=1") + + # For building the gtest libraries. + set(cxx_strict "${cxx_default} ${cxx_strict_flags}") +endmacro() + +# Defines the gtest & gtest_main libraries. User tests should link +# with one of them. +function(cxx_library_with_type name type cxx_flags) + # type can be either STATIC or SHARED to denote a static or shared library. + # ARGN refers to additional arguments after 'cxx_flags'. + add_library(${name} ${type} ${ARGN}) + set_target_properties(${name} + PROPERTIES + COMPILE_FLAGS "${cxx_flags}") + if (BUILD_SHARED_LIBS OR type STREQUAL "SHARED") + set_target_properties(${name} + PROPERTIES + COMPILE_DEFINITIONS "GTEST_CREATE_SHARED_LIBRARY=1") + endif() + if (CMAKE_USE_PTHREADS_INIT) + target_link_libraries(${name} ${CMAKE_THREAD_LIBS_INIT}) + endif() +endfunction() + +######################################################################## +# +# Helper functions for creating build targets. + +function(cxx_shared_library name cxx_flags) + cxx_library_with_type(${name} SHARED "${cxx_flags}" ${ARGN}) +endfunction() + +function(cxx_library name cxx_flags) + cxx_library_with_type(${name} "" "${cxx_flags}" ${ARGN}) +endfunction() + +# cxx_executable_with_flags(name cxx_flags libs srcs...) +# +# creates a named C++ executable that depends on the given libraries and +# is built from the given source files with the given compiler flags. +function(cxx_executable_with_flags name cxx_flags libs) + add_executable(${name} ${ARGN}) + if (cxx_flags) + set_target_properties(${name} + PROPERTIES + COMPILE_FLAGS "${cxx_flags}") + endif() + if (BUILD_SHARED_LIBS) + set_target_properties(${name} + PROPERTIES + COMPILE_DEFINITIONS "GTEST_LINKED_AS_SHARED_LIBRARY=1") + endif() + # To support mixing linking in static and dynamic libraries, link each + # library in with an extra call to target_link_libraries. + foreach (lib "${libs}") + target_link_libraries(${name} ${lib}) + endforeach() +endfunction() + +# cxx_executable(name dir lib srcs...) +# +# creates a named target that depends on the given libs and is built +# from the given source files. dir/name.cc is implicitly included in +# the source file list. +function(cxx_executable name dir libs) + cxx_executable_with_flags( + ${name} "${cxx_default}" "${libs}" "${dir}/${name}.cc" ${ARGN}) +endfunction() + +# Sets PYTHONINTERP_FOUND and PYTHON_EXECUTABLE. +find_package(PythonInterp) + +# cxx_test_with_flags(name cxx_flags libs srcs...) +# +# creates a named C++ test that depends on the given libs and is built +# from the given source files with the given compiler flags. +function(cxx_test_with_flags name cxx_flags libs) + cxx_executable_with_flags(${name} "${cxx_flags}" "${libs}" ${ARGN}) + add_test(${name} ${name}) +endfunction() + +# cxx_test(name libs srcs...) +# +# creates a named test target that depends on the given libs and is +# built from the given source files. Unlike cxx_test_with_flags, +# test/name.cc is already implicitly included in the source file list. +function(cxx_test name libs) + cxx_test_with_flags("${name}" "${cxx_default}" "${libs}" + "test/${name}.cc" ${ARGN}) +endfunction() + +# py_test(name) +# +# creates a Python test with the given name whose main module is in +# test/name.py. It does nothing if Python is not installed. +function(py_test name) + # We are not supporting Python tests on Linux yet as they consider + # all Linux environments to be google3 and try to use google3 features. + if (PYTHONINTERP_FOUND) + # ${CMAKE_BINARY_DIR} is known at configuration time, so we can + # directly bind it from cmake. ${CTEST_CONFIGURATION_TYPE} is known + # only at ctest runtime (by calling ctest -c ), so + # we have to escape $ to delay variable substitution here. + add_test(${name} + ${PYTHON_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/test/${name}.py + --build_dir=${CMAKE_CURRENT_BINARY_DIR}/\${CTEST_CONFIGURATION_TYPE}) + endif() +endfunction() diff --git a/cpp/thirdparty/protobuf-2.3.0/gtest/codegear/gtest.cbproj b/cpp/thirdparty/protobuf-2.5.0/gtest/codegear/gtest.cbproj similarity index 100% rename from cpp/thirdparty/protobuf-2.3.0/gtest/codegear/gtest.cbproj rename to cpp/thirdparty/protobuf-2.5.0/gtest/codegear/gtest.cbproj diff --git a/cpp/thirdparty/protobuf-2.3.0/gtest/codegear/gtest.groupproj b/cpp/thirdparty/protobuf-2.5.0/gtest/codegear/gtest.groupproj similarity index 86% rename from cpp/thirdparty/protobuf-2.3.0/gtest/codegear/gtest.groupproj rename to cpp/thirdparty/protobuf-2.5.0/gtest/codegear/gtest.groupproj index 8b650f852..faf31cab6 100644 --- a/cpp/thirdparty/protobuf-2.3.0/gtest/codegear/gtest.groupproj +++ b/cpp/thirdparty/protobuf-2.5.0/gtest/codegear/gtest.groupproj @@ -23,15 +23,6 @@ - - - - - - - - - @@ -41,14 +32,23 @@ + + + + + + + + + - + - + - + \ No newline at end of file diff --git a/cpp/thirdparty/protobuf-2.3.0/gtest/codegear/gtest_all.cc b/cpp/thirdparty/protobuf-2.5.0/gtest/codegear/gtest_all.cc similarity index 100% rename from cpp/thirdparty/protobuf-2.3.0/gtest/codegear/gtest_all.cc rename to cpp/thirdparty/protobuf-2.5.0/gtest/codegear/gtest_all.cc diff --git a/cpp/thirdparty/protobuf-2.3.0/gtest/codegear/gtest_link.cc b/cpp/thirdparty/protobuf-2.5.0/gtest/codegear/gtest_link.cc similarity index 100% rename from cpp/thirdparty/protobuf-2.3.0/gtest/codegear/gtest_link.cc rename to cpp/thirdparty/protobuf-2.5.0/gtest/codegear/gtest_link.cc diff --git a/cpp/thirdparty/protobuf-2.3.0/gtest/codegear/gtest_main.cbproj b/cpp/thirdparty/protobuf-2.5.0/gtest/codegear/gtest_main.cbproj similarity index 100% rename from cpp/thirdparty/protobuf-2.3.0/gtest/codegear/gtest_main.cbproj rename to cpp/thirdparty/protobuf-2.5.0/gtest/codegear/gtest_main.cbproj diff --git a/cpp/thirdparty/protobuf-2.3.0/gtest/codegear/gtest_unittest.cbproj b/cpp/thirdparty/protobuf-2.5.0/gtest/codegear/gtest_unittest.cbproj similarity index 92% rename from cpp/thirdparty/protobuf-2.3.0/gtest/codegear/gtest_unittest.cbproj rename to cpp/thirdparty/protobuf-2.5.0/gtest/codegear/gtest_unittest.cbproj index d3823c90a..dc5db8e4d 100644 --- a/cpp/thirdparty/protobuf-2.3.0/gtest/codegear/gtest_unittest.cbproj +++ b/cpp/thirdparty/protobuf-2.5.0/gtest/codegear/gtest_unittest.cbproj @@ -18,27 +18,27 @@ Base - true exe - JPHNE + true NO_STRICT + JPHNE true - true ..\test - true + true CppConsoleApplication + true true - rtl.bpi;vcl.bpi;bcbie.bpi;vclx.bpi;vclactnband.bpi;xmlrtl.bpi;bcbsmp.bpi;dbrtl.bpi;vcldb.bpi;bdertl.bpi;vcldbx.bpi;dsnap.bpi;dsnapcon.bpi;vclib.bpi;ibxpress.bpi;adortl.bpi;dbxcds.bpi;dbexpress.bpi;DbxCommonDriver.bpi;websnap.bpi;vclie.bpi;webdsnap.bpi;inet.bpi;inetdbbde.bpi;inetdbxpress.bpi;soaprtl.bpi;Rave75VCL.bpi;teeUI.bpi;tee.bpi;teedb.bpi;IndyCore.bpi;IndySystem.bpi;IndyProtocols.bpi;IntrawebDB_90_100.bpi;Intraweb_90_100.bpi;dclZipForged11.bpi;vclZipForged11.bpi;Jcl.bpi;JclVcl.bpi;JvCoreD11R.bpi;JvSystemD11R.bpi;JvStdCtrlsD11R.bpi;JvAppFrmD11R.bpi;JvBandsD11R.bpi;JvDBD11R.bpi;JvDlgsD11R.bpi;JvBDED11R.bpi;JvCmpD11R.bpi;JvCryptD11R.bpi;JvCtrlsD11R.bpi;JvCustomD11R.bpi;JvDockingD11R.bpi;JvDotNetCtrlsD11R.bpi;JvEDID11R.bpi;JvGlobusD11R.bpi;JvHMID11R.bpi;JvInterpreterD11R.bpi;JvJansD11R.bpi;JvManagedThreadsD11R.bpi;JvMMD11R.bpi;JvNetD11R.bpi;JvPageCompsD11R.bpi;JvPluginD11R.bpi;JvPrintPreviewD11R.bpi;JvRuntimeDesignD11R.bpi;JvTimeFrameworkD11R.bpi;JvValidatorsD11R.bpi;JvWizardD11R.bpi;JvXPCtrlsD11R.bpi;VclSmp.bpi + rtl.bpi;vcl.bpi;bcbie.bpi;vclx.bpi;vclactnband.bpi;xmlrtl.bpi;bcbsmp.bpi;dbrtl.bpi;vcldb.bpi;bdertl.bpi;vcldbx.bpi;dsnap.bpi;dsnapcon.bpi;vclib.bpi;ibxpress.bpi;adortl.bpi;dbxcds.bpi;dbexpress.bpi;DbxCommonDriver.bpi;websnap.bpi;vclie.bpi;webdsnap.bpi;inet.bpi;inetdbbde.bpi;inetdbxpress.bpi;soaprtl.bpi;Rave75VCL.bpi;teeUI.bpi;tee.bpi;teedb.bpi;IndyCore.bpi;IndySystem.bpi;IndyProtocols.bpi;IntrawebDB_90_100.bpi;Intraweb_90_100.bpi;Jcl.bpi;JclVcl.bpi;JvCoreD11R.bpi;JvSystemD11R.bpi;JvStdCtrlsD11R.bpi;JvAppFrmD11R.bpi;JvBandsD11R.bpi;JvDBD11R.bpi;JvDlgsD11R.bpi;JvBDED11R.bpi;JvCmpD11R.bpi;JvCryptD11R.bpi;JvCtrlsD11R.bpi;JvCustomD11R.bpi;JvDockingD11R.bpi;JvDotNetCtrlsD11R.bpi;JvEDID11R.bpi;JvGlobusD11R.bpi;JvHMID11R.bpi;JvInterpreterD11R.bpi;JvJansD11R.bpi;JvManagedThreadsD11R.bpi;JvMMD11R.bpi;JvNetD11R.bpi;JvPageCompsD11R.bpi;JvPluginD11R.bpi;JvPrintPreviewD11R.bpi;JvRuntimeDesignD11R.bpi;JvTimeFrameworkD11R.bpi;JvValidatorsD11R.bpi;JvWizardD11R.bpi;JvXPCtrlsD11R.bpi;VclSmp.bpi false $(BDS)\include;$(BDS)\include\dinkumware;$(BDS)\include\vcl;..\include;..\test;.. $(BDS)\lib;$(BDS)\lib\obj;$(BDS)\lib\psdk;..\test true - false false - _DEBUG;$(Defines) + false true + _DEBUG;$(Defines) true false true @@ -48,8 +48,8 @@ Debug true true - $(BDS)\lib\debug;$(ILINK_LibraryPath) true + $(BDS)\lib\debug;$(ILINK_LibraryPath) Full true diff --git a/cpp/thirdparty/protobuf-2.3.0/gtest/configure b/cpp/thirdparty/protobuf-2.5.0/gtest/configure similarity index 61% rename from cpp/thirdparty/protobuf-2.3.0/gtest/configure rename to cpp/thirdparty/protobuf-2.5.0/gtest/configure index cb3877f17..9bfac5f5f 100755 --- a/cpp/thirdparty/protobuf-2.3.0/gtest/configure +++ b/cpp/thirdparty/protobuf-2.5.0/gtest/configure @@ -1,62 +1,85 @@ #! /bin/sh # Guess values for system-dependent variables and create Makefiles. -# Generated by GNU Autoconf 2.61 for Google C++ Testing Framework 1.4.0. +# Generated by GNU Autoconf 2.68 for Google C++ Testing Framework 1.6.0. # # Report bugs to . # +# # Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001, -# 2002, 2003, 2004, 2005, 2006 Free Software Foundation, Inc. +# 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 Free Software +# Foundation, Inc. +# +# # This configure script is free software; the Free Software Foundation # gives unlimited permission to copy, distribute and modify it. -## --------------------- ## -## M4sh Initialization. ## -## --------------------- ## +## -------------------- ## +## M4sh Initialization. ## +## -------------------- ## # Be more Bourne compatible DUALCASE=1; export DUALCASE # for MKS sh -if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then +if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then : emulate sh NULLCMD=: - # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which + # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which # is contrary to our usage. Disable this feature. alias -g '${1+"$@"}'='"$@"' setopt NO_GLOB_SUBST else - case `(set -o) 2>/dev/null` in - *posix*) set -o posix ;; + case `(set -o) 2>/dev/null` in #( + *posix*) : + set -o posix ;; #( + *) : + ;; esac - fi - - -# PATH needs CR -# Avoid depending upon Character Ranges. -as_cr_letters='abcdefghijklmnopqrstuvwxyz' -as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' -as_cr_Letters=$as_cr_letters$as_cr_LETTERS -as_cr_digits='0123456789' -as_cr_alnum=$as_cr_Letters$as_cr_digits - -# The user is always right. -if test "${PATH_SEPARATOR+set}" != set; then - echo "#! /bin/sh" >conf$$.sh - echo "exit 0" >>conf$$.sh - chmod +x conf$$.sh - if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then - PATH_SEPARATOR=';' +as_nl=' +' +export as_nl +# Printing a long string crashes Solaris 7 /usr/bin/printf. +as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' +as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo +as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo +# Prefer a ksh shell builtin over an external printf program on Solaris, +# but without wasting forks for bash or zsh. +if test -z "$BASH_VERSION$ZSH_VERSION" \ + && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then + as_echo='print -r --' + as_echo_n='print -rn --' +elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then + as_echo='printf %s\n' + as_echo_n='printf %s' +else + if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then + as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"' + as_echo_n='/usr/ucb/echo -n' else - PATH_SEPARATOR=: + as_echo_body='eval expr "X$1" : "X\\(.*\\)"' + as_echo_n_body='eval + arg=$1; + case $arg in #( + *"$as_nl"*) + expr "X$arg" : "X\\(.*\\)$as_nl"; + arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;; + esac; + expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl" + ' + export as_echo_n_body + as_echo_n='sh -c $as_echo_n_body as_echo' fi - rm -f conf$$.sh + export as_echo_body + as_echo='sh -c $as_echo_body as_echo' fi -# Support unset when possible. -if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then - as_unset=unset -else - as_unset=false +# The user is always right. +if test "${PATH_SEPARATOR+set}" != set; then + PATH_SEPARATOR=: + (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { + (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || + PATH_SEPARATOR=';' + } fi @@ -65,20 +88,19 @@ fi # there to prevent editors from complaining about space-tab. # (If _AS_PATH_WALK were called with IFS unset, it would disable word # splitting by setting IFS to empty value.) -as_nl=' -' IFS=" "" $as_nl" # Find who we are. Look in the path if we contain no directory separator. -case $0 in +as_myself= +case $0 in #(( *[\\/]* ) as_myself=$0 ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. - test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break -done + test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break + done IFS=$as_save_IFS ;; @@ -89,32 +111,286 @@ if test "x$as_myself" = x; then as_myself=$0 fi if test ! -f "$as_myself"; then - echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 - { (exit 1); exit 1; } + $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 + exit 1 fi -# Work around bugs in pre-3.0 UWIN ksh. -for as_var in ENV MAIL MAILPATH -do ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var +# Unset variables that we do not need and which cause bugs (e.g. in +# pre-3.0 UWIN ksh). But do not cause bugs in bash 2.01; the "|| exit 1" +# suppresses any "Segmentation fault" message there. '((' could +# trigger a bug in pdksh 5.2.14. +for as_var in BASH_ENV ENV MAIL MAILPATH +do eval test x\${$as_var+set} = xset \ + && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : done PS1='$ ' PS2='> ' PS4='+ ' # NLS nuisances. -for as_var in \ - LANG LANGUAGE LC_ADDRESS LC_ALL LC_COLLATE LC_CTYPE LC_IDENTIFICATION \ - LC_MEASUREMENT LC_MESSAGES LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER \ - LC_TELEPHONE LC_TIME +LC_ALL=C +export LC_ALL +LANGUAGE=C +export LANGUAGE + +# CDPATH. +(unset CDPATH) >/dev/null 2>&1 && unset CDPATH + +if test "x$CONFIG_SHELL" = x; then + as_bourne_compatible="if test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then : + emulate sh + NULLCMD=: + # Pre-4.2 versions of Zsh do word splitting on \${1+\"\$@\"}, which + # is contrary to our usage. Disable this feature. + alias -g '\${1+\"\$@\"}'='\"\$@\"' + setopt NO_GLOB_SUBST +else + case \`(set -o) 2>/dev/null\` in #( + *posix*) : + set -o posix ;; #( + *) : + ;; +esac +fi +" + as_required="as_fn_return () { (exit \$1); } +as_fn_success () { as_fn_return 0; } +as_fn_failure () { as_fn_return 1; } +as_fn_ret_success () { return 0; } +as_fn_ret_failure () { return 1; } + +exitcode=0 +as_fn_success || { exitcode=1; echo as_fn_success failed.; } +as_fn_failure && { exitcode=1; echo as_fn_failure succeeded.; } +as_fn_ret_success || { exitcode=1; echo as_fn_ret_success failed.; } +as_fn_ret_failure && { exitcode=1; echo as_fn_ret_failure succeeded.; } +if ( set x; as_fn_ret_success y && test x = \"\$1\" ); then : + +else + exitcode=1; echo positional parameters were not saved. +fi +test x\$exitcode = x0 || exit 1" + as_suggested=" as_lineno_1=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_1a=\$LINENO + as_lineno_2=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_2a=\$LINENO + eval 'test \"x\$as_lineno_1'\$as_run'\" != \"x\$as_lineno_2'\$as_run'\" && + test \"x\`expr \$as_lineno_1'\$as_run' + 1\`\" = \"x\$as_lineno_2'\$as_run'\"' || exit 1 + + test -n \"\${ZSH_VERSION+set}\${BASH_VERSION+set}\" || ( + ECHO='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' + ECHO=\$ECHO\$ECHO\$ECHO\$ECHO\$ECHO + ECHO=\$ECHO\$ECHO\$ECHO\$ECHO\$ECHO\$ECHO + PATH=/empty FPATH=/empty; export PATH FPATH + test \"X\`printf %s \$ECHO\`\" = \"X\$ECHO\" \\ + || test \"X\`print -r -- \$ECHO\`\" = \"X\$ECHO\" ) || exit 1 +test \$(( 1 + 1 )) = 2 || exit 1" + if (eval "$as_required") 2>/dev/null; then : + as_have_required=yes +else + as_have_required=no +fi + if test x$as_have_required = xyes && (eval "$as_suggested") 2>/dev/null; then : + +else + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +as_found=false +for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH do - if (set +x; test -z "`(eval $as_var=C; export $as_var) 2>&1`"); then - eval $as_var=C; export $as_var + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + as_found=: + case $as_dir in #( + /*) + for as_base in sh bash ksh sh5; do + # Try only shells that exist, to save several forks. + as_shell=$as_dir/$as_base + if { test -f "$as_shell" || test -f "$as_shell.exe"; } && + { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$as_shell"; } 2>/dev/null; then : + CONFIG_SHELL=$as_shell as_have_required=yes + if { $as_echo "$as_bourne_compatible""$as_suggested" | as_run=a "$as_shell"; } 2>/dev/null; then : + break 2 +fi +fi + done;; + esac + as_found=false +done +$as_found || { if { test -f "$SHELL" || test -f "$SHELL.exe"; } && + { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$SHELL"; } 2>/dev/null; then : + CONFIG_SHELL=$SHELL as_have_required=yes +fi; } +IFS=$as_save_IFS + + + if test "x$CONFIG_SHELL" != x; then : + # We cannot yet assume a decent shell, so we have to provide a + # neutralization value for shells without unset; and this also + # works around shells that cannot unset nonexistent variables. + # Preserve -v and -x to the replacement shell. + BASH_ENV=/dev/null + ENV=/dev/null + (unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV + export CONFIG_SHELL + case $- in # (((( + *v*x* | *x*v* ) as_opts=-vx ;; + *v* ) as_opts=-v ;; + *x* ) as_opts=-x ;; + * ) as_opts= ;; + esac + exec "$CONFIG_SHELL" $as_opts "$as_myself" ${1+"$@"} +fi + + if test x$as_have_required = xno; then : + $as_echo "$0: This script requires a shell more modern than all" + $as_echo "$0: the shells that I found on your system." + if test x${ZSH_VERSION+set} = xset ; then + $as_echo "$0: In particular, zsh $ZSH_VERSION has bugs and should" + $as_echo "$0: be upgraded to zsh 4.3.4 or later." else - ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var + $as_echo "$0: Please tell bug-autoconf@gnu.org and +$0: googletestframework@googlegroups.com about your system, +$0: including any error possibly output before this +$0: message. Then install a modern shell, or manually run +$0: the script under such a shell if you do have one." fi -done + exit 1 +fi +fi +fi +SHELL=${CONFIG_SHELL-/bin/sh} +export SHELL +# Unset more variables known to interfere with behavior of common tools. +CLICOLOR_FORCE= GREP_OPTIONS= +unset CLICOLOR_FORCE GREP_OPTIONS + +## --------------------- ## +## M4sh Shell Functions. ## +## --------------------- ## +# as_fn_unset VAR +# --------------- +# Portably unset VAR. +as_fn_unset () +{ + { eval $1=; unset $1;} +} +as_unset=as_fn_unset + +# as_fn_set_status STATUS +# ----------------------- +# Set $? to STATUS, without forking. +as_fn_set_status () +{ + return $1 +} # as_fn_set_status + +# as_fn_exit STATUS +# ----------------- +# Exit the shell with STATUS, even in a "trap 0" or "set -e" context. +as_fn_exit () +{ + set +e + as_fn_set_status $1 + exit $1 +} # as_fn_exit + +# as_fn_mkdir_p +# ------------- +# Create "$as_dir" as a directory, including parents if necessary. +as_fn_mkdir_p () +{ + + case $as_dir in #( + -*) as_dir=./$as_dir;; + esac + test -d "$as_dir" || eval $as_mkdir_p || { + as_dirs= + while :; do + case $as_dir in #( + *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( + *) as_qdir=$as_dir;; + esac + as_dirs="'$as_qdir' $as_dirs" + as_dir=`$as_dirname -- "$as_dir" || +$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$as_dir" : 'X\(//\)[^/]' \| \ + X"$as_dir" : 'X\(//\)$' \| \ + X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || +$as_echo X"$as_dir" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + test -d "$as_dir" && break + done + test -z "$as_dirs" || eval "mkdir $as_dirs" + } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir" + + +} # as_fn_mkdir_p +# as_fn_append VAR VALUE +# ---------------------- +# Append the text in VALUE to the end of the definition contained in VAR. Take +# advantage of any shell optimizations that allow amortized linear growth over +# repeated appends, instead of the typical quadratic growth present in naive +# implementations. +if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then : + eval 'as_fn_append () + { + eval $1+=\$2 + }' +else + as_fn_append () + { + eval $1=\$$1\$2 + } +fi # as_fn_append + +# as_fn_arith ARG... +# ------------------ +# Perform arithmetic evaluation on the ARGs, and store the result in the +# global $as_val. Take advantage of shells that can avoid forks. The arguments +# must be portable across $(()) and expr. +if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then : + eval 'as_fn_arith () + { + as_val=$(( $* )) + }' +else + as_fn_arith () + { + as_val=`expr "$@" || test $? -eq 1` + } +fi # as_fn_arith + + +# as_fn_error STATUS ERROR [LINENO LOG_FD] +# ---------------------------------------- +# Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are +# provided, also output the error to LOG_FD, referencing LINENO. Then exit the +# script with STATUS, using 1 if that was 0. +as_fn_error () +{ + as_status=$1; test $as_status -eq 0 && as_status=1 + if test "$4"; then + as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4 + fi + $as_echo "$as_me: error: $2" >&2 + as_fn_exit $as_status +} # as_fn_error -# Required to use basename. if expr a : '\(a\)' >/dev/null 2>&1 && test "X`expr 00001 : '.*\(...\)'`" = X001; then as_expr=expr @@ -128,13 +404,17 @@ else as_basename=false fi +if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then + as_dirname=dirname +else + as_dirname=false +fi -# Name of the executable. as_me=`$as_basename -- "$0" || $as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ X"$0" : 'X\(//\)$' \| \ X"$0" : 'X\(/\)' \| . 2>/dev/null || -echo X/"$0" | +$as_echo X/"$0" | sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/ q @@ -149,563 +429,131 @@ echo X/"$0" | } s/.*/./; q'` -# CDPATH. -$as_unset CDPATH +# Avoid depending upon Character Ranges. +as_cr_letters='abcdefghijklmnopqrstuvwxyz' +as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' +as_cr_Letters=$as_cr_letters$as_cr_LETTERS +as_cr_digits='0123456789' +as_cr_alnum=$as_cr_Letters$as_cr_digits -if test "x$CONFIG_SHELL" = x; then - if (eval ":") 2>/dev/null; then - as_have_required=yes -else - as_have_required=no -fi + as_lineno_1=$LINENO as_lineno_1a=$LINENO + as_lineno_2=$LINENO as_lineno_2a=$LINENO + eval 'test "x$as_lineno_1'$as_run'" != "x$as_lineno_2'$as_run'" && + test "x`expr $as_lineno_1'$as_run' + 1`" = "x$as_lineno_2'$as_run'"' || { + # Blame Lee E. McMahon (1931-1989) for sed's syntax. :-) + sed -n ' + p + /[$]LINENO/= + ' <$as_myself | + sed ' + s/[$]LINENO.*/&-/ + t lineno + b + :lineno + N + :loop + s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/ + t loop + s/-\n.*// + ' >$as_me.lineno && + chmod +x "$as_me.lineno" || + { $as_echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2; as_fn_exit 1; } - if test $as_have_required = yes && (eval ": -(as_func_return () { - (exit \$1) -} -as_func_success () { - as_func_return 0 -} -as_func_failure () { - as_func_return 1 -} -as_func_ret_success () { - return 0 -} -as_func_ret_failure () { - return 1 + # Don't try to exec as it changes $[0], causing all sort of problems + # (the dirname of $[0] is not the place where we might find the + # original and so on. Autoconf is especially sensitive to this). + . "./$as_me.lineno" + # Exit status is that of the last command. + exit } -exitcode=0 -if as_func_success; then - : -else - exitcode=1 - echo as_func_success failed. -fi - -if as_func_failure; then - exitcode=1 - echo as_func_failure succeeded. -fi +ECHO_C= ECHO_N= ECHO_T= +case `echo -n x` in #((((( +-n*) + case `echo 'xy\c'` in + *c*) ECHO_T=' ';; # ECHO_T is single tab character. + xy) ECHO_C='\c';; + *) echo `echo ksh88 bug on AIX 6.1` > /dev/null + ECHO_T=' ';; + esac;; +*) + ECHO_N='-n';; +esac -if as_func_ret_success; then - : +rm -f conf$$ conf$$.exe conf$$.file +if test -d conf$$.dir; then + rm -f conf$$.dir/conf$$.file +else + rm -f conf$$.dir + mkdir conf$$.dir 2>/dev/null +fi +if (echo >conf$$.file) 2>/dev/null; then + if ln -s conf$$.file conf$$ 2>/dev/null; then + as_ln_s='ln -s' + # ... but there are two gotchas: + # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. + # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. + # In both cases, we have to default to `cp -p'. + ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || + as_ln_s='cp -p' + elif ln conf$$.file conf$$ 2>/dev/null; then + as_ln_s=ln + else + as_ln_s='cp -p' + fi else - exitcode=1 - echo as_func_ret_success failed. + as_ln_s='cp -p' fi +rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file +rmdir conf$$.dir 2>/dev/null -if as_func_ret_failure; then - exitcode=1 - echo as_func_ret_failure succeeded. +if mkdir -p . 2>/dev/null; then + as_mkdir_p='mkdir -p "$as_dir"' +else + test -d ./-p && rmdir ./-p + as_mkdir_p=false fi -if ( set x; as_func_ret_success y && test x = \"\$1\" ); then - : +if test -x / >/dev/null 2>&1; then + as_test_x='test -x' else - exitcode=1 - echo positional parameters were not saved. + if ls -dL / >/dev/null 2>&1; then + as_ls_L_option=L + else + as_ls_L_option= + fi + as_test_x=' + eval sh -c '\'' + if test -d "$1"; then + test -d "$1/."; + else + case $1 in #( + -*)set "./$1";; + esac; + case `ls -ld'$as_ls_L_option' "$1" 2>/dev/null` in #(( + ???[sx]*):;;*)false;;esac;fi + '\'' sh + ' fi +as_executable_p=$as_test_x -test \$exitcode = 0) || { (exit 1); exit 1; } +# Sed expression to map a string onto a valid CPP name. +as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" -( - as_lineno_1=\$LINENO - as_lineno_2=\$LINENO - test \"x\$as_lineno_1\" != \"x\$as_lineno_2\" && - test \"x\`expr \$as_lineno_1 + 1\`\" = \"x\$as_lineno_2\") || { (exit 1); exit 1; } -") 2> /dev/null; then - : -else - as_candidate_shells= - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - case $as_dir in - /*) - for as_base in sh bash ksh sh5; do - as_candidate_shells="$as_candidate_shells $as_dir/$as_base" - done;; - esac -done -IFS=$as_save_IFS +# Sed expression to map a string onto a valid variable name. +as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" +SHELL=${CONFIG_SHELL-/bin/sh} - for as_shell in $as_candidate_shells $SHELL; do - # Try only shells that exist, to save several forks. - if { test -f "$as_shell" || test -f "$as_shell.exe"; } && - { ("$as_shell") 2> /dev/null <<\_ASEOF -if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then - emulate sh - NULLCMD=: - # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which - # is contrary to our usage. Disable this feature. - alias -g '${1+"$@"}'='"$@"' - setopt NO_GLOB_SUBST -else - case `(set -o) 2>/dev/null` in - *posix*) set -o posix ;; -esac -fi +test -n "$DJDIR" || exec 7<&0 &1 - -: -_ASEOF -}; then - CONFIG_SHELL=$as_shell - as_have_required=yes - if { "$as_shell" 2> /dev/null <<\_ASEOF -if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then - emulate sh - NULLCMD=: - # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which - # is contrary to our usage. Disable this feature. - alias -g '${1+"$@"}'='"$@"' - setopt NO_GLOB_SUBST -else - case `(set -o) 2>/dev/null` in - *posix*) set -o posix ;; -esac - -fi - - -: -(as_func_return () { - (exit $1) -} -as_func_success () { - as_func_return 0 -} -as_func_failure () { - as_func_return 1 -} -as_func_ret_success () { - return 0 -} -as_func_ret_failure () { - return 1 -} - -exitcode=0 -if as_func_success; then - : -else - exitcode=1 - echo as_func_success failed. -fi - -if as_func_failure; then - exitcode=1 - echo as_func_failure succeeded. -fi - -if as_func_ret_success; then - : -else - exitcode=1 - echo as_func_ret_success failed. -fi - -if as_func_ret_failure; then - exitcode=1 - echo as_func_ret_failure succeeded. -fi - -if ( set x; as_func_ret_success y && test x = "$1" ); then - : -else - exitcode=1 - echo positional parameters were not saved. -fi - -test $exitcode = 0) || { (exit 1); exit 1; } - -( - as_lineno_1=$LINENO - as_lineno_2=$LINENO - test "x$as_lineno_1" != "x$as_lineno_2" && - test "x`expr $as_lineno_1 + 1`" = "x$as_lineno_2") || { (exit 1); exit 1; } - -_ASEOF -}; then - break -fi - -fi - - done - - if test "x$CONFIG_SHELL" != x; then - for as_var in BASH_ENV ENV - do ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var - done - export CONFIG_SHELL - exec "$CONFIG_SHELL" "$as_myself" ${1+"$@"} -fi - - - if test $as_have_required = no; then - echo This script requires a shell more modern than all the - echo shells that I found on your system. Please install a - echo modern shell, or manually run the script under such a - echo shell if you do have one. - { (exit 1); exit 1; } -fi - - -fi - -fi - - - -(eval "as_func_return () { - (exit \$1) -} -as_func_success () { - as_func_return 0 -} -as_func_failure () { - as_func_return 1 -} -as_func_ret_success () { - return 0 -} -as_func_ret_failure () { - return 1 -} - -exitcode=0 -if as_func_success; then - : -else - exitcode=1 - echo as_func_success failed. -fi - -if as_func_failure; then - exitcode=1 - echo as_func_failure succeeded. -fi - -if as_func_ret_success; then - : -else - exitcode=1 - echo as_func_ret_success failed. -fi - -if as_func_ret_failure; then - exitcode=1 - echo as_func_ret_failure succeeded. -fi - -if ( set x; as_func_ret_success y && test x = \"\$1\" ); then - : -else - exitcode=1 - echo positional parameters were not saved. -fi - -test \$exitcode = 0") || { - echo No shell found that supports shell functions. - echo Please tell autoconf@gnu.org about your system, - echo including any error possibly output before this - echo message -} - - - - as_lineno_1=$LINENO - as_lineno_2=$LINENO - test "x$as_lineno_1" != "x$as_lineno_2" && - test "x`expr $as_lineno_1 + 1`" = "x$as_lineno_2" || { - - # Create $as_me.lineno as a copy of $as_myself, but with $LINENO - # uniformly replaced by the line number. The first 'sed' inserts a - # line-number line after each line using $LINENO; the second 'sed' - # does the real work. The second script uses 'N' to pair each - # line-number line with the line containing $LINENO, and appends - # trailing '-' during substitution so that $LINENO is not a special - # case at line end. - # (Raja R Harinath suggested sed '=', and Paul Eggert wrote the - # scripts with optimization help from Paolo Bonzini. Blame Lee - # E. McMahon (1931-1989) for sed's syntax. :-) - sed -n ' - p - /[$]LINENO/= - ' <$as_myself | - sed ' - s/[$]LINENO.*/&-/ - t lineno - b - :lineno - N - :loop - s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/ - t loop - s/-\n.*// - ' >$as_me.lineno && - chmod +x "$as_me.lineno" || - { echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2 - { (exit 1); exit 1; }; } - - # Don't try to exec as it changes $[0], causing all sort of problems - # (the dirname of $[0] is not the place where we might find the - # original and so on. Autoconf is especially sensitive to this). - . "./$as_me.lineno" - # Exit status is that of the last command. - exit -} - - -if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then - as_dirname=dirname -else - as_dirname=false -fi - -ECHO_C= ECHO_N= ECHO_T= -case `echo -n x` in --n*) - case `echo 'x\c'` in - *c*) ECHO_T=' ';; # ECHO_T is single tab character. - *) ECHO_C='\c';; - esac;; -*) - ECHO_N='-n';; -esac - -if expr a : '\(a\)' >/dev/null 2>&1 && - test "X`expr 00001 : '.*\(...\)'`" = X001; then - as_expr=expr -else - as_expr=false -fi - -rm -f conf$$ conf$$.exe conf$$.file -if test -d conf$$.dir; then - rm -f conf$$.dir/conf$$.file -else - rm -f conf$$.dir - mkdir conf$$.dir -fi -echo >conf$$.file -if ln -s conf$$.file conf$$ 2>/dev/null; then - as_ln_s='ln -s' - # ... but there are two gotchas: - # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. - # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. - # In both cases, we have to default to `cp -p'. - ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || - as_ln_s='cp -p' -elif ln conf$$.file conf$$ 2>/dev/null; then - as_ln_s=ln -else - as_ln_s='cp -p' -fi -rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file -rmdir conf$$.dir 2>/dev/null - -if mkdir -p . 2>/dev/null; then - as_mkdir_p=: -else - test -d ./-p && rmdir ./-p - as_mkdir_p=false -fi - -if test -x / >/dev/null 2>&1; then - as_test_x='test -x' -else - if ls -dL / >/dev/null 2>&1; then - as_ls_L_option=L - else - as_ls_L_option= - fi - as_test_x=' - eval sh -c '\'' - if test -d "$1"; then - test -d "$1/."; - else - case $1 in - -*)set "./$1";; - esac; - case `ls -ld'$as_ls_L_option' "$1" 2>/dev/null` in - ???[sx]*):;;*)false;;esac;fi - '\'' sh - ' -fi -as_executable_p=$as_test_x - -# Sed expression to map a string onto a valid CPP name. -as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" - -# Sed expression to map a string onto a valid variable name. -as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" - - - - -# Check that we are running under the correct shell. -SHELL=${CONFIG_SHELL-/bin/sh} - -case X$lt_ECHO in -X*--fallback-echo) - # Remove one level of quotation (which was required for Make). - ECHO=`echo "$lt_ECHO" | sed 's,\\\\\$\\$0,'$0','` - ;; -esac - -ECHO=${lt_ECHO-echo} -if test "X$1" = X--no-reexec; then - # Discard the --no-reexec flag, and continue. - shift -elif test "X$1" = X--fallback-echo; then - # Avoid inline document here, it may be left over - : -elif test "X`{ $ECHO '\t'; } 2>/dev/null`" = 'X\t' ; then - # Yippee, $ECHO works! - : -else - # Restart under the correct shell. - exec $SHELL "$0" --no-reexec ${1+"$@"} -fi - -if test "X$1" = X--fallback-echo; then - # used as fallback echo - shift - cat <<_LT_EOF -$* -_LT_EOF - exit 0 -fi - -# The HP-UX ksh and POSIX shell print the target directory to stdout -# if CDPATH is set. -(unset CDPATH) >/dev/null 2>&1 && unset CDPATH - -if test -z "$lt_ECHO"; then - if test "X${echo_test_string+set}" != Xset; then - # find a string as large as possible, as long as the shell can cope with it - for cmd in 'sed 50q "$0"' 'sed 20q "$0"' 'sed 10q "$0"' 'sed 2q "$0"' 'echo test'; do - # expected sizes: less than 2Kb, 1Kb, 512 bytes, 16 bytes, ... - if { echo_test_string=`eval $cmd`; } 2>/dev/null && - { test "X$echo_test_string" = "X$echo_test_string"; } 2>/dev/null - then - break - fi - done - fi - - if test "X`{ $ECHO '\t'; } 2>/dev/null`" = 'X\t' && - echo_testing_string=`{ $ECHO "$echo_test_string"; } 2>/dev/null` && - test "X$echo_testing_string" = "X$echo_test_string"; then - : - else - # The Solaris, AIX, and Digital Unix default echo programs unquote - # backslashes. This makes it impossible to quote backslashes using - # echo "$something" | sed 's/\\/\\\\/g' - # - # So, first we look for a working echo in the user's PATH. - - lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR - for dir in $PATH /usr/ucb; do - IFS="$lt_save_ifs" - if (test -f $dir/echo || test -f $dir/echo$ac_exeext) && - test "X`($dir/echo '\t') 2>/dev/null`" = 'X\t' && - echo_testing_string=`($dir/echo "$echo_test_string") 2>/dev/null` && - test "X$echo_testing_string" = "X$echo_test_string"; then - ECHO="$dir/echo" - break - fi - done - IFS="$lt_save_ifs" - - if test "X$ECHO" = Xecho; then - # We didn't find a better echo, so look for alternatives. - if test "X`{ print -r '\t'; } 2>/dev/null`" = 'X\t' && - echo_testing_string=`{ print -r "$echo_test_string"; } 2>/dev/null` && - test "X$echo_testing_string" = "X$echo_test_string"; then - # This shell has a builtin print -r that does the trick. - ECHO='print -r' - elif { test -f /bin/ksh || test -f /bin/ksh$ac_exeext; } && - test "X$CONFIG_SHELL" != X/bin/ksh; then - # If we have ksh, try running configure again with it. - ORIGINAL_CONFIG_SHELL=${CONFIG_SHELL-/bin/sh} - export ORIGINAL_CONFIG_SHELL - CONFIG_SHELL=/bin/ksh - export CONFIG_SHELL - exec $CONFIG_SHELL "$0" --no-reexec ${1+"$@"} - else - # Try using printf. - ECHO='printf %s\n' - if test "X`{ $ECHO '\t'; } 2>/dev/null`" = 'X\t' && - echo_testing_string=`{ $ECHO "$echo_test_string"; } 2>/dev/null` && - test "X$echo_testing_string" = "X$echo_test_string"; then - # Cool, printf works - : - elif echo_testing_string=`($ORIGINAL_CONFIG_SHELL "$0" --fallback-echo '\t') 2>/dev/null` && - test "X$echo_testing_string" = 'X\t' && - echo_testing_string=`($ORIGINAL_CONFIG_SHELL "$0" --fallback-echo "$echo_test_string") 2>/dev/null` && - test "X$echo_testing_string" = "X$echo_test_string"; then - CONFIG_SHELL=$ORIGINAL_CONFIG_SHELL - export CONFIG_SHELL - SHELL="$CONFIG_SHELL" - export SHELL - ECHO="$CONFIG_SHELL $0 --fallback-echo" - elif echo_testing_string=`($CONFIG_SHELL "$0" --fallback-echo '\t') 2>/dev/null` && - test "X$echo_testing_string" = 'X\t' && - echo_testing_string=`($CONFIG_SHELL "$0" --fallback-echo "$echo_test_string") 2>/dev/null` && - test "X$echo_testing_string" = "X$echo_test_string"; then - ECHO="$CONFIG_SHELL $0 --fallback-echo" - else - # maybe with a smaller string... - prev=: - - for cmd in 'echo test' 'sed 2q "$0"' 'sed 10q "$0"' 'sed 20q "$0"' 'sed 50q "$0"'; do - if { test "X$echo_test_string" = "X`eval $cmd`"; } 2>/dev/null - then - break - fi - prev="$cmd" - done - - if test "$prev" != 'sed 50q "$0"'; then - echo_test_string=`eval $prev` - export echo_test_string - exec ${ORIGINAL_CONFIG_SHELL-${CONFIG_SHELL-/bin/sh}} "$0" ${1+"$@"} - else - # Oops. We lost completely, so just stick with echo. - ECHO=echo - fi - fi - fi - fi - fi -fi - -# Copy echo and quote the copy suitably for passing to libtool from -# the Makefile, instead of quoting the original, which is used later. -lt_ECHO=$ECHO -if test "X$lt_ECHO" = "X$CONFIG_SHELL $0 --fallback-echo"; then - lt_ECHO="$CONFIG_SHELL \\\$\$0 --fallback-echo" -fi - - - - -exec 7<&0 &1 - -# Name of the host. -# hostname on some systems (SVR3.2, Linux) returns a bogus exit status, -# so uname gets run too. -ac_hostname=`(hostname || uname -n) 2>/dev/null | sed 1q` +# Name of the host. +# hostname on some systems (SVR3.2, old GNU/Linux) returns a bogus exit status, +# so uname gets run too. +ac_hostname=`(hostname || uname -n) 2>/dev/null | sed 1q` # # Initializations. @@ -718,16 +566,16 @@ cross_compiling=no subdirs= MFLAGS= MAKEFLAGS= -SHELL=${CONFIG_SHELL-/bin/sh} # Identity of this package. PACKAGE_NAME='Google C++ Testing Framework' PACKAGE_TARNAME='gtest' -PACKAGE_VERSION='1.4.0' -PACKAGE_STRING='Google C++ Testing Framework 1.4.0' +PACKAGE_VERSION='1.6.0' +PACKAGE_STRING='Google C++ Testing Framework 1.6.0' PACKAGE_BUGREPORT='googletestframework@googlegroups.com' +PACKAGE_URL='' -ac_unique_file="./COPYING" +ac_unique_file="./LICENSE" # Factoring default headers for most tests. ac_includes_default="\ #include @@ -764,125 +612,147 @@ ac_includes_default="\ # include #endif" -ac_subst_vars='SHELL -PATH_SEPARATOR -PACKAGE_NAME -PACKAGE_TARNAME -PACKAGE_VERSION -PACKAGE_STRING -PACKAGE_BUGREPORT -exec_prefix -prefix -program_transform_name -bindir -sbindir -libexecdir -datarootdir -datadir -sysconfdir -sharedstatedir -localstatedir -includedir -oldincludedir -docdir -infodir -htmldir -dvidir -pdfdir -psdir -libdir -localedir -mandir -DEFS -ECHO_C -ECHO_N -ECHO_T -LIBS -build_alias -host_alias -target_alias -INSTALL_PROGRAM -INSTALL_SCRIPT -INSTALL_DATA -am__isrc -CYGPATH_W -PACKAGE -VERSION -ACLOCAL -AUTOCONF -AUTOMAKE -AUTOHEADER -MAKEINFO -install_sh -STRIP -INSTALL_STRIP_PROGRAM -mkdir_p -AWK -SET_MAKE -am__leading_dot -AMTAR -am__tar -am__untar -CC -CFLAGS -LDFLAGS -CPPFLAGS -ac_ct_CC -EXEEXT -OBJEXT -DEPDIR -am__include -am__quote -AMDEP_TRUE -AMDEP_FALSE -AMDEPBACKSLASH -CCDEPMODE -am__fastdepCC_TRUE -am__fastdepCC_FALSE -CXX -CXXFLAGS -ac_ct_CXX -CXXDEPMODE -am__fastdepCXX_TRUE -am__fastdepCXX_FALSE -LIBTOOL -build -build_cpu -build_vendor -build_os -host -host_cpu -host_vendor -host_os -SED -GREP -EGREP -FGREP -LD -DUMPBIN -ac_ct_DUMPBIN -NM -LN_S -AR -RANLIB -lt_ECHO -DSYMUTIL -NMEDIT -LIPO -OTOOL -OTOOL64 -CPP -CXXCPP -PYTHON -HAVE_PYTHON_TRUE -HAVE_PYTHON_FALSE -acx_pthread_config -PTHREAD_CC -PTHREAD_LIBS -PTHREAD_CFLAGS +ac_subst_vars='am__EXEEXT_FALSE +am__EXEEXT_TRUE +LTLIBOBJS LIBOBJS -LTLIBOBJS' +HAVE_PTHREADS_FALSE +HAVE_PTHREADS_TRUE +PTHREAD_CFLAGS +PTHREAD_LIBS +PTHREAD_CC +acx_pthread_config +HAVE_PYTHON_FALSE +HAVE_PYTHON_TRUE +PYTHON +CXXCPP +CPP +OTOOL64 +OTOOL +LIPO +NMEDIT +DSYMUTIL +MANIFEST_TOOL +RANLIB +ac_ct_AR +AR +DLLTOOL +OBJDUMP +LN_S +NM +ac_ct_DUMPBIN +DUMPBIN +LD +FGREP +EGREP +GREP +SED +host_os +host_vendor +host_cpu +host +build_os +build_vendor +build_cpu +build +LIBTOOL +am__fastdepCXX_FALSE +am__fastdepCXX_TRUE +CXXDEPMODE +ac_ct_CXX +CXXFLAGS +CXX +am__fastdepCC_FALSE +am__fastdepCC_TRUE +CCDEPMODE +am__nodep +AMDEPBACKSLASH +AMDEP_FALSE +AMDEP_TRUE +am__quote +am__include +DEPDIR +OBJEXT +EXEEXT +ac_ct_CC +CPPFLAGS +LDFLAGS +CFLAGS +CC +am__untar +am__tar +AMTAR +am__leading_dot +SET_MAKE +AWK +mkdir_p +MKDIR_P +INSTALL_STRIP_PROGRAM +STRIP +install_sh +MAKEINFO +AUTOHEADER +AUTOMAKE +AUTOCONF +ACLOCAL +VERSION +PACKAGE +CYGPATH_W +am__isrc +INSTALL_DATA +INSTALL_SCRIPT +INSTALL_PROGRAM +target_alias +host_alias +build_alias +LIBS +ECHO_T +ECHO_N +ECHO_C +DEFS +mandir +localedir +libdir +psdir +pdfdir +dvidir +htmldir +infodir +docdir +oldincludedir +includedir +localstatedir +sharedstatedir +sysconfdir +datadir +datarootdir +libexecdir +sbindir +bindir +program_transform_name +prefix +exec_prefix +PACKAGE_URL +PACKAGE_BUGREPORT +PACKAGE_STRING +PACKAGE_VERSION +PACKAGE_TARNAME +PACKAGE_NAME +PATH_SEPARATOR +SHELL' ac_subst_files='' +ac_user_opts=' +enable_option_checking +enable_dependency_tracking +enable_shared +enable_static +with_pic +enable_fast_install +with_gnu_ld +with_sysroot +enable_libtool_lock +with_pthreads +' ac_precious_vars='build_alias host_alias target_alias @@ -901,6 +771,8 @@ CXXCPP' # Initialize some variables set by options. ac_init_help= ac_init_version=false +ac_unrecognized_opts= +ac_unrecognized_sep= # The variables have the same names as the options, with # dashes changed to underlines. cache_file=/dev/null @@ -956,8 +828,9 @@ do fi case $ac_option in - *=*) ac_optarg=`expr "X$ac_option" : '[^=]*=\(.*\)'` ;; - *) ac_optarg=yes ;; + *=?*) ac_optarg=`expr "X$ac_option" : '[^=]*=\(.*\)'` ;; + *=) ac_optarg= ;; + *) ac_optarg=yes ;; esac # Accept the important Cygnus configure options, so we can diagnose typos. @@ -999,13 +872,20 @@ do datarootdir=$ac_optarg ;; -disable-* | --disable-*) - ac_feature=`expr "x$ac_option" : 'x-*disable-\(.*\)'` + ac_useropt=`expr "x$ac_option" : 'x-*disable-\(.*\)'` # Reject names that are not valid shell variable names. - expr "x$ac_feature" : ".*[^-._$as_cr_alnum]" >/dev/null && - { echo "$as_me: error: invalid feature name: $ac_feature" >&2 - { (exit 1); exit 1; }; } - ac_feature=`echo $ac_feature | sed 's/[-.]/_/g'` - eval enable_$ac_feature=no ;; + expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && + as_fn_error $? "invalid feature name: $ac_useropt" + ac_useropt_orig=$ac_useropt + ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` + case $ac_user_opts in + *" +"enable_$ac_useropt" +"*) ;; + *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--disable-$ac_useropt_orig" + ac_unrecognized_sep=', ';; + esac + eval enable_$ac_useropt=no ;; -docdir | --docdir | --docdi | --doc | --do) ac_prev=docdir ;; @@ -1018,13 +898,20 @@ do dvidir=$ac_optarg ;; -enable-* | --enable-*) - ac_feature=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'` + ac_useropt=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'` # Reject names that are not valid shell variable names. - expr "x$ac_feature" : ".*[^-._$as_cr_alnum]" >/dev/null && - { echo "$as_me: error: invalid feature name: $ac_feature" >&2 - { (exit 1); exit 1; }; } - ac_feature=`echo $ac_feature | sed 's/[-.]/_/g'` - eval enable_$ac_feature=\$ac_optarg ;; + expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && + as_fn_error $? "invalid feature name: $ac_useropt" + ac_useropt_orig=$ac_useropt + ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` + case $ac_user_opts in + *" +"enable_$ac_useropt" +"*) ;; + *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--enable-$ac_useropt_orig" + ac_unrecognized_sep=', ';; + esac + eval enable_$ac_useropt=\$ac_optarg ;; -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \ | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \ @@ -1215,22 +1102,36 @@ do ac_init_version=: ;; -with-* | --with-*) - ac_package=`expr "x$ac_option" : 'x-*with-\([^=]*\)'` + ac_useropt=`expr "x$ac_option" : 'x-*with-\([^=]*\)'` # Reject names that are not valid shell variable names. - expr "x$ac_package" : ".*[^-._$as_cr_alnum]" >/dev/null && - { echo "$as_me: error: invalid package name: $ac_package" >&2 - { (exit 1); exit 1; }; } - ac_package=`echo $ac_package | sed 's/[-.]/_/g'` - eval with_$ac_package=\$ac_optarg ;; + expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && + as_fn_error $? "invalid package name: $ac_useropt" + ac_useropt_orig=$ac_useropt + ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` + case $ac_user_opts in + *" +"with_$ac_useropt" +"*) ;; + *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--with-$ac_useropt_orig" + ac_unrecognized_sep=', ';; + esac + eval with_$ac_useropt=\$ac_optarg ;; -without-* | --without-*) - ac_package=`expr "x$ac_option" : 'x-*without-\(.*\)'` + ac_useropt=`expr "x$ac_option" : 'x-*without-\(.*\)'` # Reject names that are not valid shell variable names. - expr "x$ac_package" : ".*[^-._$as_cr_alnum]" >/dev/null && - { echo "$as_me: error: invalid package name: $ac_package" >&2 - { (exit 1); exit 1; }; } - ac_package=`echo $ac_package | sed 's/[-.]/_/g'` - eval with_$ac_package=no ;; + expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && + as_fn_error $? "invalid package name: $ac_useropt" + ac_useropt_orig=$ac_useropt + ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` + case $ac_user_opts in + *" +"with_$ac_useropt" +"*) ;; + *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--without-$ac_useropt_orig" + ac_unrecognized_sep=', ';; + esac + eval with_$ac_useropt=no ;; --x) # Obsolete; use --with-x. @@ -1250,26 +1151,26 @@ do | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*) x_libraries=$ac_optarg ;; - -*) { echo "$as_me: error: unrecognized option: $ac_option -Try \`$0 --help' for more information." >&2 - { (exit 1); exit 1; }; } + -*) as_fn_error $? "unrecognized option: \`$ac_option' +Try \`$0 --help' for more information" ;; *=*) ac_envvar=`expr "x$ac_option" : 'x\([^=]*\)='` # Reject names that are not valid shell variable names. - expr "x$ac_envvar" : ".*[^_$as_cr_alnum]" >/dev/null && - { echo "$as_me: error: invalid variable name: $ac_envvar" >&2 - { (exit 1); exit 1; }; } + case $ac_envvar in #( + '' | [0-9]* | *[!_$as_cr_alnum]* ) + as_fn_error $? "invalid variable name: \`$ac_envvar'" ;; + esac eval $ac_envvar=\$ac_optarg export $ac_envvar ;; *) # FIXME: should be removed in autoconf 3.0. - echo "$as_me: WARNING: you should use --build, --host, --target" >&2 + $as_echo "$as_me: WARNING: you should use --build, --host, --target" >&2 expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null && - echo "$as_me: WARNING: invalid host type: $ac_option" >&2 - : ${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option} + $as_echo "$as_me: WARNING: invalid host type: $ac_option" >&2 + : "${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option}" ;; esac @@ -1277,23 +1178,36 @@ done if test -n "$ac_prev"; then ac_option=--`echo $ac_prev | sed 's/_/-/g'` - { echo "$as_me: error: missing argument to $ac_option" >&2 - { (exit 1); exit 1; }; } + as_fn_error $? "missing argument to $ac_option" +fi + +if test -n "$ac_unrecognized_opts"; then + case $enable_option_checking in + no) ;; + fatal) as_fn_error $? "unrecognized options: $ac_unrecognized_opts" ;; + *) $as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2 ;; + esac fi -# Be sure to have absolute directory names. +# Check all directory arguments for consistency. for ac_var in exec_prefix prefix bindir sbindir libexecdir datarootdir \ datadir sysconfdir sharedstatedir localstatedir includedir \ oldincludedir docdir infodir htmldir dvidir pdfdir psdir \ libdir localedir mandir do eval ac_val=\$$ac_var + # Remove trailing slashes. + case $ac_val in + */ ) + ac_val=`expr "X$ac_val" : 'X\(.*[^/]\)' \| "X$ac_val" : 'X\(.*\)'` + eval $ac_var=\$ac_val;; + esac + # Be sure to have absolute directory names. case $ac_val in [\\/$]* | ?:[\\/]* ) continue;; NONE | '' ) case $ac_var in *prefix ) continue;; esac;; esac - { echo "$as_me: error: expected an absolute directory name for --$ac_var: $ac_val" >&2 - { (exit 1); exit 1; }; } + as_fn_error $? "expected an absolute directory name for --$ac_var: $ac_val" done # There might be people who depend on the old broken behavior: `$host' @@ -1307,8 +1221,8 @@ target=$target_alias if test "x$host_alias" != x; then if test "x$build_alias" = x; then cross_compiling=maybe - echo "$as_me: WARNING: If you wanted to set the --build type, don't use --host. - If a cross compiler is detected then cross compile mode will be used." >&2 + $as_echo "$as_me: WARNING: if you wanted to set the --build type, don't use --host. + If a cross compiler is detected then cross compile mode will be used" >&2 elif test "x$build_alias" != "x$host_alias"; then cross_compiling=yes fi @@ -1323,23 +1237,21 @@ test "$silent" = yes && exec 6>/dev/null ac_pwd=`pwd` && test -n "$ac_pwd" && ac_ls_di=`ls -di .` && ac_pwd_ls_di=`cd "$ac_pwd" && ls -di .` || - { echo "$as_me: error: Working directory cannot be determined" >&2 - { (exit 1); exit 1; }; } + as_fn_error $? "working directory cannot be determined" test "X$ac_ls_di" = "X$ac_pwd_ls_di" || - { echo "$as_me: error: pwd does not report name of working directory" >&2 - { (exit 1); exit 1; }; } + as_fn_error $? "pwd does not report name of working directory" # Find the source files, if location was not specified. if test -z "$srcdir"; then ac_srcdir_defaulted=yes # Try the directory containing this script, then the parent directory. - ac_confdir=`$as_dirname -- "$0" || -$as_expr X"$0" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ - X"$0" : 'X\(//\)[^/]' \| \ - X"$0" : 'X\(//\)$' \| \ - X"$0" : 'X\(/\)' \| . 2>/dev/null || -echo X"$0" | + ac_confdir=`$as_dirname -- "$as_myself" || +$as_expr X"$as_myself" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$as_myself" : 'X\(//\)[^/]' \| \ + X"$as_myself" : 'X\(//\)$' \| \ + X"$as_myself" : 'X\(/\)' \| . 2>/dev/null || +$as_echo X"$as_myself" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q @@ -1366,13 +1278,11 @@ else fi if test ! -r "$srcdir/$ac_unique_file"; then test "$ac_srcdir_defaulted" = yes && srcdir="$ac_confdir or .." - { echo "$as_me: error: cannot find sources ($ac_unique_file) in $srcdir" >&2 - { (exit 1); exit 1; }; } + as_fn_error $? "cannot find sources ($ac_unique_file) in $srcdir" fi ac_msg="sources are in $srcdir, but \`cd $srcdir' does not work" ac_abs_confdir=`( - cd "$srcdir" && test -r "./$ac_unique_file" || { echo "$as_me: error: $ac_msg" >&2 - { (exit 1); exit 1; }; } + cd "$srcdir" && test -r "./$ac_unique_file" || as_fn_error $? "$ac_msg" pwd)` # When building in place, set srcdir=. if test "$ac_abs_confdir" = "$ac_pwd"; then @@ -1398,7 +1308,7 @@ if test "$ac_init_help" = "long"; then # Omit some internal or obsolete options to make the list less imposing. # This message is too long to be a string in the A/UX 3.1 sh. cat <<_ACEOF -\`configure' configures Google C++ Testing Framework 1.4.0 to adapt to many kinds of systems. +\`configure' configures Google C++ Testing Framework 1.6.0 to adapt to many kinds of systems. Usage: $0 [OPTION]... [VAR=VALUE]... @@ -1412,7 +1322,7 @@ Configuration: --help=short display options specific to this package --help=recursive display the short help of all the included packages -V, --version display version information and exit - -q, --quiet, --silent do not print \`checking...' messages + -q, --quiet, --silent do not print \`checking ...' messages --cache-file=FILE cache test results in FILE [disabled] -C, --config-cache alias for \`--cache-file=config.cache' -n, --no-create do not create output files @@ -1420,9 +1330,9 @@ Configuration: Installation directories: --prefix=PREFIX install architecture-independent files in PREFIX - [$ac_default_prefix] + [$ac_default_prefix] --exec-prefix=EPREFIX install architecture-dependent files in EPREFIX - [PREFIX] + [PREFIX] By default, \`make install' will install all the files in \`$ac_default_prefix/bin', \`$ac_default_prefix/lib' etc. You can specify @@ -1432,25 +1342,25 @@ for instance \`--prefix=\$HOME'. For better control, use the options below. Fine tuning of the installation directories: - --bindir=DIR user executables [EPREFIX/bin] - --sbindir=DIR system admin executables [EPREFIX/sbin] - --libexecdir=DIR program executables [EPREFIX/libexec] - --sysconfdir=DIR read-only single-machine data [PREFIX/etc] - --sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com] - --localstatedir=DIR modifiable single-machine data [PREFIX/var] - --libdir=DIR object code libraries [EPREFIX/lib] - --includedir=DIR C header files [PREFIX/include] - --oldincludedir=DIR C header files for non-gcc [/usr/include] - --datarootdir=DIR read-only arch.-independent data root [PREFIX/share] - --datadir=DIR read-only architecture-independent data [DATAROOTDIR] - --infodir=DIR info documentation [DATAROOTDIR/info] - --localedir=DIR locale-dependent data [DATAROOTDIR/locale] - --mandir=DIR man documentation [DATAROOTDIR/man] - --docdir=DIR documentation root [DATAROOTDIR/doc/gtest] - --htmldir=DIR html documentation [DOCDIR] - --dvidir=DIR dvi documentation [DOCDIR] - --pdfdir=DIR pdf documentation [DOCDIR] - --psdir=DIR ps documentation [DOCDIR] + --bindir=DIR user executables [EPREFIX/bin] + --sbindir=DIR system admin executables [EPREFIX/sbin] + --libexecdir=DIR program executables [EPREFIX/libexec] + --sysconfdir=DIR read-only single-machine data [PREFIX/etc] + --sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com] + --localstatedir=DIR modifiable single-machine data [PREFIX/var] + --libdir=DIR object code libraries [EPREFIX/lib] + --includedir=DIR C header files [PREFIX/include] + --oldincludedir=DIR C header files for non-gcc [/usr/include] + --datarootdir=DIR read-only arch.-independent data root [PREFIX/share] + --datadir=DIR read-only architecture-independent data [DATAROOTDIR] + --infodir=DIR info documentation [DATAROOTDIR/info] + --localedir=DIR locale-dependent data [DATAROOTDIR/locale] + --mandir=DIR man documentation [DATAROOTDIR/man] + --docdir=DIR documentation root [DATAROOTDIR/doc/gtest] + --htmldir=DIR html documentation [DOCDIR] + --dvidir=DIR dvi documentation [DOCDIR] + --pdfdir=DIR pdf documentation [DOCDIR] + --psdir=DIR ps documentation [DOCDIR] _ACEOF cat <<\_ACEOF @@ -1468,11 +1378,12 @@ fi if test -n "$ac_init_help"; then case $ac_init_help in - short | recursive ) echo "Configuration of Google C++ Testing Framework 1.4.0:";; + short | recursive ) echo "Configuration of Google C++ Testing Framework 1.6.0:";; esac cat <<\_ACEOF Optional Features: + --disable-option-checking ignore unrecognized --enable/--with options --disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no) --enable-FEATURE[=ARG] include FEATURE [ARG=yes] --disable-dependency-tracking speeds up one-time build @@ -1486,9 +1397,12 @@ Optional Features: Optional Packages: --with-PACKAGE[=ARG] use PACKAGE [ARG=yes] --without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no) - --with-pic try to use only PIC/non-PIC objects [default=use + --with-pic[=PKGS] try to use only PIC/non-PIC objects [default=use both] --with-gnu-ld assume the C compiler uses GNU ld [default=no] + --with-sysroot=DIR Search for dependent libraries within DIR + (or the compiler's sysroot if not specified). + --with-pthreads use pthreads (default is yes) Some influential environment variables: CC C compiler command @@ -1496,7 +1410,7 @@ Some influential environment variables: LDFLAGS linker flags, e.g. -L if you have libraries in a nonstandard directory LIBS libraries to pass to the linker, e.g. -l - CPPFLAGS C/C++/Objective C preprocessor flags, e.g. -I if + CPPFLAGS (Objective) C/C++ preprocessor flags, e.g. -I if you have headers in a nonstandard directory CXX C++ compiler command CXXFLAGS C++ compiler flags @@ -1514,15 +1428,17 @@ fi if test "$ac_init_help" = "recursive"; then # If there are subdirs, report their specific --help. for ac_dir in : $ac_subdirs_all; do test "x$ac_dir" = x: && continue - test -d "$ac_dir" || continue + test -d "$ac_dir" || + { cd "$srcdir" && ac_pwd=`pwd` && srcdir=. && test -d "$ac_dir"; } || + continue ac_builddir=. case "$ac_dir" in .) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; *) - ac_dir_suffix=/`echo "$ac_dir" | sed 's,^\.[\\/],,'` + ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'` # A ".." for each directory in $ac_dir_suffix. - ac_top_builddir_sub=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,/..,g;s,/,,'` + ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` case $ac_top_builddir_sub in "") ac_top_builddir_sub=. ac_top_build_prefix= ;; *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; @@ -1558,7 +1474,7 @@ ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix echo && $SHELL "$ac_srcdir/configure" --help=recursive else - echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2 + $as_echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2 fi || ac_status=$? cd "$ac_pwd" || { ac_status=$?; break; } done @@ -1567,47 +1483,432 @@ fi test -n "$ac_init_help" && exit $ac_status if $ac_init_version; then cat <<\_ACEOF -Google C++ Testing Framework configure 1.4.0 -generated by GNU Autoconf 2.61 +Google C++ Testing Framework configure 1.6.0 +generated by GNU Autoconf 2.68 -Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001, -2002, 2003, 2004, 2005, 2006 Free Software Foundation, Inc. +Copyright (C) 2010 Free Software Foundation, Inc. This configure script is free software; the Free Software Foundation gives unlimited permission to copy, distribute and modify it. _ACEOF exit fi -cat >config.log <<_ACEOF -This file contains any messages produced by compilers while -running configure, to aid debugging if configure makes a mistake. -It was created by Google C++ Testing Framework $as_me 1.4.0, which was -generated by GNU Autoconf 2.61. Invocation command line was +## ------------------------ ## +## Autoconf initialization. ## +## ------------------------ ## - $ $0 $@ - -_ACEOF -exec 5>>config.log +# ac_fn_c_try_compile LINENO +# -------------------------- +# Try to compile conftest.$ac_ext, and return whether this succeeded. +ac_fn_c_try_compile () { -cat <<_ASUNAME -## --------- ## -## Platform. ## -## --------- ## + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + rm -f conftest.$ac_objext + if { { ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_compile") 2>conftest.err + ac_status=$? + if test -s conftest.err; then + grep -v '^ *+' conftest.err >conftest.er1 + cat conftest.er1 >&5 + mv -f conftest.er1 conftest.err + fi + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then : + ac_retval=0 +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 -hostname = `(hostname || uname -n) 2>/dev/null | sed 1q` -uname -m = `(uname -m) 2>/dev/null || echo unknown` -uname -r = `(uname -r) 2>/dev/null || echo unknown` -uname -s = `(uname -s) 2>/dev/null || echo unknown` -uname -v = `(uname -v) 2>/dev/null || echo unknown` + ac_retval=1 +fi + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + as_fn_set_status $ac_retval -/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null || echo unknown` -/bin/uname -X = `(/bin/uname -X) 2>/dev/null || echo unknown` +} # ac_fn_c_try_compile -/bin/arch = `(/bin/arch) 2>/dev/null || echo unknown` -/usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null || echo unknown` -/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null || echo unknown` -/usr/bin/hostinfo = `(/usr/bin/hostinfo) 2>/dev/null || echo unknown` -/bin/machine = `(/bin/machine) 2>/dev/null || echo unknown` +# ac_fn_cxx_try_compile LINENO +# ---------------------------- +# Try to compile conftest.$ac_ext, and return whether this succeeded. +ac_fn_cxx_try_compile () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + rm -f conftest.$ac_objext + if { { ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_compile") 2>conftest.err + ac_status=$? + if test -s conftest.err; then + grep -v '^ *+' conftest.err >conftest.er1 + cat conftest.er1 >&5 + mv -f conftest.er1 conftest.err + fi + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } && { + test -z "$ac_cxx_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then : + ac_retval=0 +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_retval=1 +fi + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + as_fn_set_status $ac_retval + +} # ac_fn_cxx_try_compile + +# ac_fn_c_try_link LINENO +# ----------------------- +# Try to link conftest.$ac_ext, and return whether this succeeded. +ac_fn_c_try_link () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + rm -f conftest.$ac_objext conftest$ac_exeext + if { { ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_link") 2>conftest.err + ac_status=$? + if test -s conftest.err; then + grep -v '^ *+' conftest.err >conftest.er1 + cat conftest.er1 >&5 + mv -f conftest.er1 conftest.err + fi + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && { + test "$cross_compiling" = yes || + $as_test_x conftest$ac_exeext + }; then : + ac_retval=0 +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_retval=1 +fi + # Delete the IPA/IPO (Inter Procedural Analysis/Optimization) information + # created by the PGI compiler (conftest_ipa8_conftest.oo), as it would + # interfere with the next link command; also delete a directory that is + # left behind by Apple's compiler. We do this before executing the actions. + rm -rf conftest.dSYM conftest_ipa8_conftest.oo + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + as_fn_set_status $ac_retval + +} # ac_fn_c_try_link + +# ac_fn_c_check_header_compile LINENO HEADER VAR INCLUDES +# ------------------------------------------------------- +# Tests whether HEADER exists and can be compiled using the include files in +# INCLUDES, setting the cache variable VAR accordingly. +ac_fn_c_check_header_compile () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 +$as_echo_n "checking for $2... " >&6; } +if eval \${$3+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$4 +#include <$2> +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + eval "$3=yes" +else + eval "$3=no" +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +eval ac_res=\$$3 + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +$as_echo "$ac_res" >&6; } + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + +} # ac_fn_c_check_header_compile + +# ac_fn_c_try_cpp LINENO +# ---------------------- +# Try to preprocess conftest.$ac_ext, and return whether this succeeded. +ac_fn_c_try_cpp () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + if { { ac_try="$ac_cpp conftest.$ac_ext" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_cpp conftest.$ac_ext") 2>conftest.err + ac_status=$? + if test -s conftest.err; then + grep -v '^ *+' conftest.err >conftest.er1 + cat conftest.er1 >&5 + mv -f conftest.er1 conftest.err + fi + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } > conftest.i && { + test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || + test ! -s conftest.err + }; then : + ac_retval=0 +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_retval=1 +fi + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + as_fn_set_status $ac_retval + +} # ac_fn_c_try_cpp + +# ac_fn_c_try_run LINENO +# ---------------------- +# Try to link conftest.$ac_ext, and return whether this succeeded. Assumes +# that executables *can* be run. +ac_fn_c_try_run () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + if { { ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_link") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } && { ac_try='./conftest$ac_exeext' + { { case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; }; then : + ac_retval=0 +else + $as_echo "$as_me: program exited with status $ac_status" >&5 + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_retval=$ac_status +fi + rm -rf conftest.dSYM conftest_ipa8_conftest.oo + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + as_fn_set_status $ac_retval + +} # ac_fn_c_try_run + +# ac_fn_c_check_func LINENO FUNC VAR +# ---------------------------------- +# Tests whether FUNC exists, setting the cache variable VAR accordingly +ac_fn_c_check_func () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 +$as_echo_n "checking for $2... " >&6; } +if eval \${$3+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +/* Define $2 to an innocuous variant, in case declares $2. + For example, HP-UX 11i declares gettimeofday. */ +#define $2 innocuous_$2 + +/* System header to define __stub macros and hopefully few prototypes, + which can conflict with char $2 (); below. + Prefer to if __STDC__ is defined, since + exists even on freestanding compilers. */ + +#ifdef __STDC__ +# include +#else +# include +#endif + +#undef $2 + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char $2 (); +/* The GNU C library defines this for functions which it implements + to always fail with ENOSYS. Some functions are actually named + something starting with __ and the normal name is an alias. */ +#if defined __stub_$2 || defined __stub___$2 +choke me +#endif + +int +main () +{ +return $2 (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + eval "$3=yes" +else + eval "$3=no" +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi +eval ac_res=\$$3 + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +$as_echo "$ac_res" >&6; } + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + +} # ac_fn_c_check_func + +# ac_fn_cxx_try_cpp LINENO +# ------------------------ +# Try to preprocess conftest.$ac_ext, and return whether this succeeded. +ac_fn_cxx_try_cpp () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + if { { ac_try="$ac_cpp conftest.$ac_ext" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_cpp conftest.$ac_ext") 2>conftest.err + ac_status=$? + if test -s conftest.err; then + grep -v '^ *+' conftest.err >conftest.er1 + cat conftest.er1 >&5 + mv -f conftest.er1 conftest.err + fi + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } > conftest.i && { + test -z "$ac_cxx_preproc_warn_flag$ac_cxx_werror_flag" || + test ! -s conftest.err + }; then : + ac_retval=0 +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_retval=1 +fi + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + as_fn_set_status $ac_retval + +} # ac_fn_cxx_try_cpp + +# ac_fn_cxx_try_link LINENO +# ------------------------- +# Try to link conftest.$ac_ext, and return whether this succeeded. +ac_fn_cxx_try_link () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + rm -f conftest.$ac_objext conftest$ac_exeext + if { { ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_link") 2>conftest.err + ac_status=$? + if test -s conftest.err; then + grep -v '^ *+' conftest.err >conftest.er1 + cat conftest.er1 >&5 + mv -f conftest.er1 conftest.err + fi + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } && { + test -z "$ac_cxx_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && { + test "$cross_compiling" = yes || + $as_test_x conftest$ac_exeext + }; then : + ac_retval=0 +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_retval=1 +fi + # Delete the IPA/IPO (Inter Procedural Analysis/Optimization) information + # created by the PGI compiler (conftest_ipa8_conftest.oo), as it would + # interfere with the next link command; also delete a directory that is + # left behind by Apple's compiler. We do this before executing the actions. + rm -rf conftest.dSYM conftest_ipa8_conftest.oo + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + as_fn_set_status $ac_retval + +} # ac_fn_cxx_try_link +cat >config.log <<_ACEOF +This file contains any messages produced by compilers while +running configure, to aid debugging if configure makes a mistake. + +It was created by Google C++ Testing Framework $as_me 1.6.0, which was +generated by GNU Autoconf 2.68. Invocation command line was + + $ $0 $@ + +_ACEOF +exec 5>>config.log +{ +cat <<_ASUNAME +## --------- ## +## Platform. ## +## --------- ## + +hostname = `(hostname || uname -n) 2>/dev/null | sed 1q` +uname -m = `(uname -m) 2>/dev/null || echo unknown` +uname -r = `(uname -r) 2>/dev/null || echo unknown` +uname -s = `(uname -s) 2>/dev/null || echo unknown` +uname -v = `(uname -v) 2>/dev/null || echo unknown` + +/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null || echo unknown` +/bin/uname -X = `(/bin/uname -X) 2>/dev/null || echo unknown` + +/bin/arch = `(/bin/arch) 2>/dev/null || echo unknown` +/usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null || echo unknown` +/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null || echo unknown` +/usr/bin/hostinfo = `(/usr/bin/hostinfo) 2>/dev/null || echo unknown` +/bin/machine = `(/bin/machine) 2>/dev/null || echo unknown` /usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null || echo unknown` /bin/universe = `(/bin/universe) 2>/dev/null || echo unknown` @@ -1618,8 +1919,8 @@ for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. - echo "PATH: $as_dir" -done + $as_echo "PATH: $as_dir" + done IFS=$as_save_IFS } >&5 @@ -1653,12 +1954,12 @@ do | -silent | --silent | --silen | --sile | --sil) continue ;; *\'*) - ac_arg=`echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;; + ac_arg=`$as_echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;; esac case $ac_pass in - 1) ac_configure_args0="$ac_configure_args0 '$ac_arg'" ;; + 1) as_fn_append ac_configure_args0 " '$ac_arg'" ;; 2) - ac_configure_args1="$ac_configure_args1 '$ac_arg'" + as_fn_append ac_configure_args1 " '$ac_arg'" if test $ac_must_keep_next = true; then ac_must_keep_next=false # Got value, back to normal. else @@ -1674,13 +1975,13 @@ do -* ) ac_must_keep_next=true ;; esac fi - ac_configure_args="$ac_configure_args '$ac_arg'" + as_fn_append ac_configure_args " '$ac_arg'" ;; esac done done -$as_unset ac_configure_args0 || test "${ac_configure_args0+set}" != set || { ac_configure_args0=; export ac_configure_args0; } -$as_unset ac_configure_args1 || test "${ac_configure_args1+set}" != set || { ac_configure_args1=; export ac_configure_args1; } +{ ac_configure_args0=; unset ac_configure_args0;} +{ ac_configure_args1=; unset ac_configure_args1;} # When interrupted or exit'd, cleanup temporary files, and complete # config.log. We remove comments because anyway the quotes in there @@ -1692,11 +1993,9 @@ trap 'exit_status=$? { echo - cat <<\_ASBOX -## ---------------- ## + $as_echo "## ---------------- ## ## Cache variables. ## -## ---------------- ## -_ASBOX +## ---------------- ##" echo # The following way of writing the cache mishandles newlines in values, ( @@ -1705,12 +2004,13 @@ _ASBOX case $ac_val in #( *${as_nl}*) case $ac_var in #( - *_cv_*) { echo "$as_me:$LINENO: WARNING: Cache variable $ac_var contains a newline." >&5 -echo "$as_me: WARNING: Cache variable $ac_var contains a newline." >&2;} ;; + *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5 +$as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; esac case $ac_var in #( _ | IFS | as_nl) ;; #( - *) $as_unset $ac_var ;; + BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #( + *) { eval $ac_var=; unset $ac_var;} ;; esac ;; esac done @@ -1729,128 +2029,136 @@ echo "$as_me: WARNING: Cache variable $ac_var contains a newline." >&2;} ;; ) echo - cat <<\_ASBOX -## ----------------- ## + $as_echo "## ----------------- ## ## Output variables. ## -## ----------------- ## -_ASBOX +## ----------------- ##" echo for ac_var in $ac_subst_vars do eval ac_val=\$$ac_var case $ac_val in - *\'\''*) ac_val=`echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; + *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; esac - echo "$ac_var='\''$ac_val'\''" + $as_echo "$ac_var='\''$ac_val'\''" done | sort echo if test -n "$ac_subst_files"; then - cat <<\_ASBOX -## ------------------- ## + $as_echo "## ------------------- ## ## File substitutions. ## -## ------------------- ## -_ASBOX +## ------------------- ##" echo for ac_var in $ac_subst_files do eval ac_val=\$$ac_var case $ac_val in - *\'\''*) ac_val=`echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; + *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; esac - echo "$ac_var='\''$ac_val'\''" + $as_echo "$ac_var='\''$ac_val'\''" done | sort echo fi if test -s confdefs.h; then - cat <<\_ASBOX -## ----------- ## + $as_echo "## ----------- ## ## confdefs.h. ## -## ----------- ## -_ASBOX +## ----------- ##" echo cat confdefs.h echo fi test "$ac_signal" != 0 && - echo "$as_me: caught signal $ac_signal" - echo "$as_me: exit $exit_status" + $as_echo "$as_me: caught signal $ac_signal" + $as_echo "$as_me: exit $exit_status" } >&5 rm -f core *.core core.conftest.* && rm -f -r conftest* confdefs* conf$$* $ac_clean_files && exit $exit_status ' 0 for ac_signal in 1 2 13 15; do - trap 'ac_signal='$ac_signal'; { (exit 1); exit 1; }' $ac_signal + trap 'ac_signal='$ac_signal'; as_fn_exit 1' $ac_signal done ac_signal=0 # confdefs.h avoids OS command line length limits that DEFS can exceed. rm -f -r conftest* confdefs.h +$as_echo "/* confdefs.h */" > confdefs.h + # Predefined preprocessor variables. cat >>confdefs.h <<_ACEOF #define PACKAGE_NAME "$PACKAGE_NAME" _ACEOF - cat >>confdefs.h <<_ACEOF #define PACKAGE_TARNAME "$PACKAGE_TARNAME" _ACEOF - cat >>confdefs.h <<_ACEOF #define PACKAGE_VERSION "$PACKAGE_VERSION" _ACEOF - cat >>confdefs.h <<_ACEOF #define PACKAGE_STRING "$PACKAGE_STRING" _ACEOF - cat >>confdefs.h <<_ACEOF #define PACKAGE_BUGREPORT "$PACKAGE_BUGREPORT" _ACEOF +cat >>confdefs.h <<_ACEOF +#define PACKAGE_URL "$PACKAGE_URL" +_ACEOF + # Let the site file select an alternate cache file if it wants to. -# Prefer explicitly selected file to automatically selected ones. +# Prefer an explicitly selected file to automatically selected ones. +ac_site_file1=NONE +ac_site_file2=NONE if test -n "$CONFIG_SITE"; then - set x "$CONFIG_SITE" + # We do not want a PATH search for config.site. + case $CONFIG_SITE in #(( + -*) ac_site_file1=./$CONFIG_SITE;; + */*) ac_site_file1=$CONFIG_SITE;; + *) ac_site_file1=./$CONFIG_SITE;; + esac elif test "x$prefix" != xNONE; then - set x "$prefix/share/config.site" "$prefix/etc/config.site" + ac_site_file1=$prefix/share/config.site + ac_site_file2=$prefix/etc/config.site else - set x "$ac_default_prefix/share/config.site" \ - "$ac_default_prefix/etc/config.site" + ac_site_file1=$ac_default_prefix/share/config.site + ac_site_file2=$ac_default_prefix/etc/config.site fi -shift -for ac_site_file +for ac_site_file in "$ac_site_file1" "$ac_site_file2" do - if test -r "$ac_site_file"; then - { echo "$as_me:$LINENO: loading site script $ac_site_file" >&5 -echo "$as_me: loading site script $ac_site_file" >&6;} + test "x$ac_site_file" = xNONE && continue + if test /dev/null != "$ac_site_file" && test -r "$ac_site_file"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: loading site script $ac_site_file" >&5 +$as_echo "$as_me: loading site script $ac_site_file" >&6;} sed 's/^/| /' "$ac_site_file" >&5 - . "$ac_site_file" + . "$ac_site_file" \ + || { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error $? "failed to load site script $ac_site_file +See \`config.log' for more details" "$LINENO" 5; } fi done if test -r "$cache_file"; then - # Some versions of bash will fail to source /dev/null (special - # files actually), so we avoid doing that. - if test -f "$cache_file"; then - { echo "$as_me:$LINENO: loading cache $cache_file" >&5 -echo "$as_me: loading cache $cache_file" >&6;} + # Some versions of bash will fail to source /dev/null (special files + # actually), so we avoid doing that. DJGPP emulates it as a regular file. + if test /dev/null != "$cache_file" && test -f "$cache_file"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: loading cache $cache_file" >&5 +$as_echo "$as_me: loading cache $cache_file" >&6;} case $cache_file in [\\/]* | ?:[\\/]* ) . "$cache_file";; *) . "./$cache_file";; esac fi else - { echo "$as_me:$LINENO: creating cache $cache_file" >&5 -echo "$as_me: creating cache $cache_file" >&6;} + { $as_echo "$as_me:${as_lineno-$LINENO}: creating cache $cache_file" >&5 +$as_echo "$as_me: creating cache $cache_file" >&6;} >$cache_file fi @@ -1864,68 +2172,56 @@ for ac_var in $ac_precious_vars; do eval ac_new_val=\$ac_env_${ac_var}_value case $ac_old_set,$ac_new_set in set,) - { echo "$as_me:$LINENO: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5 -echo "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;} + { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5 +$as_echo "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;} ac_cache_corrupted=: ;; ,set) - { echo "$as_me:$LINENO: error: \`$ac_var' was not set in the previous run" >&5 -echo "$as_me: error: \`$ac_var' was not set in the previous run" >&2;} + { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was not set in the previous run" >&5 +$as_echo "$as_me: error: \`$ac_var' was not set in the previous run" >&2;} ac_cache_corrupted=: ;; ,);; *) if test "x$ac_old_val" != "x$ac_new_val"; then - { echo "$as_me:$LINENO: error: \`$ac_var' has changed since the previous run:" >&5 -echo "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;} - { echo "$as_me:$LINENO: former value: $ac_old_val" >&5 -echo "$as_me: former value: $ac_old_val" >&2;} - { echo "$as_me:$LINENO: current value: $ac_new_val" >&5 -echo "$as_me: current value: $ac_new_val" >&2;} - ac_cache_corrupted=: + # differences in whitespace do not lead to failure. + ac_old_val_w=`echo x $ac_old_val` + ac_new_val_w=`echo x $ac_new_val` + if test "$ac_old_val_w" != "$ac_new_val_w"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' has changed since the previous run:" >&5 +$as_echo "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;} + ac_cache_corrupted=: + else + { $as_echo "$as_me:${as_lineno-$LINENO}: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&5 +$as_echo "$as_me: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&2;} + eval $ac_var=\$ac_old_val + fi + { $as_echo "$as_me:${as_lineno-$LINENO}: former value: \`$ac_old_val'" >&5 +$as_echo "$as_me: former value: \`$ac_old_val'" >&2;} + { $as_echo "$as_me:${as_lineno-$LINENO}: current value: \`$ac_new_val'" >&5 +$as_echo "$as_me: current value: \`$ac_new_val'" >&2;} fi;; esac # Pass precious variables to config.status. if test "$ac_new_set" = set; then case $ac_new_val in - *\'*) ac_arg=$ac_var=`echo "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;; + *\'*) ac_arg=$ac_var=`$as_echo "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;; *) ac_arg=$ac_var=$ac_new_val ;; esac case " $ac_configure_args " in *" '$ac_arg' "*) ;; # Avoid dups. Use of quotes ensures accuracy. - *) ac_configure_args="$ac_configure_args '$ac_arg'" ;; + *) as_fn_append ac_configure_args " '$ac_arg'" ;; esac fi done if $ac_cache_corrupted; then - { echo "$as_me:$LINENO: error: changes in the environment can compromise the build" >&5 -echo "$as_me: error: changes in the environment can compromise the build" >&2;} - { { echo "$as_me:$LINENO: error: run \`make distclean' and/or \`rm $cache_file' and start over" >&5 -echo "$as_me: error: run \`make distclean' and/or \`rm $cache_file' and start over" >&2;} - { (exit 1); exit 1; }; } + { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} + { $as_echo "$as_me:${as_lineno-$LINENO}: error: changes in the environment can compromise the build" >&5 +$as_echo "$as_me: error: changes in the environment can compromise the build" >&2;} + as_fn_error $? "run \`make distclean' and/or \`rm $cache_file' and start over" "$LINENO" 5 fi - - - - - - - - - - - - - - - - - - - - - - - - +## -------------------- ## +## Main body of script. ## +## -------------------- ## ac_ext=c ac_cpp='$CPP $CPPFLAGS' @@ -1938,6 +2234,7 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu # Provide various options to initialize the Autoconf and configure processes. + ac_aux_dir= for ac_dir in build-aux "$srcdir"/build-aux; do if test -f "$ac_dir/install-sh"; then @@ -1955,9 +2252,7 @@ for ac_dir in build-aux "$srcdir"/build-aux; do fi done if test -z "$ac_aux_dir"; then - { { echo "$as_me:$LINENO: error: cannot find install-sh or install.sh in build-aux \"$srcdir\"/build-aux" >&5 -echo "$as_me: error: cannot find install-sh or install.sh in build-aux \"$srcdir\"/build-aux" >&2;} - { (exit 1); exit 1; }; } + as_fn_error $? "cannot find install-sh, install.sh, or shtool in build-aux \"$srcdir\"/build-aux" "$LINENO" 5 fi # These three variables are undocumented and unsupported, @@ -1979,7 +2274,7 @@ ac_config_files="$ac_config_files scripts/gtest-config" # Initialize Automake with various options. We require at least v1.9, prevent # pedantic complaints about package files, and enable various distribution # targets. -am__api_version='1.10' +am__api_version='1.11' # Find a good install program. We prefer a C program (faster), # so one script is as good as another. But avoid the broken or @@ -1994,22 +2289,23 @@ am__api_version='1.10' # SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff" # OS/2's system install, which has a completely different semantic # ./install, which can be erroneously created by make from ./install.sh. -{ echo "$as_me:$LINENO: checking for a BSD-compatible install" >&5 -echo $ECHO_N "checking for a BSD-compatible install... $ECHO_C" >&6; } +# Reject install programs that cannot install multiple files. +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for a BSD-compatible install" >&5 +$as_echo_n "checking for a BSD-compatible install... " >&6; } if test -z "$INSTALL"; then -if test "${ac_cv_path_install+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 +if ${ac_cv_path_install+:} false; then : + $as_echo_n "(cached) " >&6 else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. - # Account for people who put trailing slashes in PATH elements. -case $as_dir/ in - ./ | .// | /cC/* | \ + # Account for people who put trailing slashes in PATH elements. +case $as_dir/ in #(( + ./ | .// | /[cC]/* | \ /etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* | \ - ?:\\/os2\\/install\\/* | ?:\\/OS2\\/INSTALL\\/* | \ + ?:[\\/]os2[\\/]install[\\/]* | ?:[\\/]OS2[\\/]INSTALL[\\/]* | \ /usr/ucb/* ) ;; *) # OSF1 and SCO ODT 3.0 have their own names for install. @@ -2027,17 +2323,29 @@ case $as_dir/ in # program-specific install script used by HP pwplus--don't use. : else - ac_cv_path_install="$as_dir/$ac_prog$ac_exec_ext -c" - break 3 + rm -rf conftest.one conftest.two conftest.dir + echo one > conftest.one + echo two > conftest.two + mkdir conftest.dir + if "$as_dir/$ac_prog$ac_exec_ext" -c conftest.one conftest.two "`pwd`/conftest.dir" && + test -s conftest.one && test -s conftest.two && + test -s conftest.dir/conftest.one && + test -s conftest.dir/conftest.two + then + ac_cv_path_install="$as_dir/$ac_prog$ac_exec_ext -c" + break 3 + fi fi fi done done ;; esac -done + + done IFS=$as_save_IFS +rm -rf conftest.one conftest.two conftest.dir fi if test "${ac_cv_path_install+set}" = set; then @@ -2050,8 +2358,8 @@ fi INSTALL=$ac_install_sh fi fi -{ echo "$as_me:$LINENO: result: $INSTALL" >&5 -echo "${ECHO_T}$INSTALL" >&6; } +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $INSTALL" >&5 +$as_echo "$INSTALL" >&6; } # Use test -z because SunOS4 sh mishandles braces in ${var-val}. # It thinks the first close brace ends the variable substitution. @@ -2061,21 +2369,34 @@ test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL}' test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644' -{ echo "$as_me:$LINENO: checking whether build environment is sane" >&5 -echo $ECHO_N "checking whether build environment is sane... $ECHO_C" >&6; } +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether build environment is sane" >&5 +$as_echo_n "checking whether build environment is sane... " >&6; } # Just in case sleep 1 echo timestamp > conftest.file +# Reject unsafe characters in $srcdir or the absolute working directory +# name. Accept space and tab only in the latter. +am_lf=' +' +case `pwd` in + *[\\\"\#\$\&\'\`$am_lf]*) + as_fn_error $? "unsafe absolute working directory name" "$LINENO" 5;; +esac +case $srcdir in + *[\\\"\#\$\&\'\`$am_lf\ \ ]*) + as_fn_error $? "unsafe srcdir value: \`$srcdir'" "$LINENO" 5;; +esac + # Do `set' in a subshell so we don't clobber the current shell's # arguments. Must try -L first in case configure is actually a # symlink; some systems play weird games with the mod time of symlinks # (eg FreeBSD returns the mod time of the symlink's containing # directory). if ( - set X `ls -Lt $srcdir/configure conftest.file 2> /dev/null` + set X `ls -Lt "$srcdir/configure" conftest.file 2> /dev/null` if test "$*" = "X"; then # -L didn't work. - set X `ls -t $srcdir/configure conftest.file` + set X `ls -t "$srcdir/configure" conftest.file` fi rm -f conftest.file if test "$*" != "X $srcdir/configure conftest.file" \ @@ -2085,11 +2406,8 @@ if ( # if, for instance, CONFIG_SHELL is bash and it inherits a # broken ls alias from the environment. This has actually # happened. Such a system could not be considered "sane". - { { echo "$as_me:$LINENO: error: ls -t appears to fail. Make sure there is not a broken -alias in your environment" >&5 -echo "$as_me: error: ls -t appears to fail. Make sure there is not a broken -alias in your environment" >&2;} - { (exit 1); exit 1; }; } + as_fn_error $? "ls -t appears to fail. Make sure there is not a broken +alias in your environment" "$LINENO" 5 fi test "$2" = conftest.file @@ -2098,53 +2416,163 @@ then # Ok. : else - { { echo "$as_me:$LINENO: error: newly created file is older than distributed files! -Check your system clock" >&5 -echo "$as_me: error: newly created file is older than distributed files! -Check your system clock" >&2;} - { (exit 1); exit 1; }; } + as_fn_error $? "newly created file is older than distributed files! +Check your system clock" "$LINENO" 5 fi -{ echo "$as_me:$LINENO: result: yes" >&5 -echo "${ECHO_T}yes" >&6; } +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } test "$program_prefix" != NONE && program_transform_name="s&^&$program_prefix&;$program_transform_name" # Use a double $ so make ignores it. test "$program_suffix" != NONE && program_transform_name="s&\$&$program_suffix&;$program_transform_name" -# Double any \ or $. echo might interpret backslashes. +# Double any \ or $. # By default was `s,x,x', remove it if useless. -cat <<\_ACEOF >conftest.sed -s/[\\$]/&&/g;s/;s,x,x,$// -_ACEOF -program_transform_name=`echo $program_transform_name | sed -f conftest.sed` -rm -f conftest.sed +ac_script='s/[\\$]/&&/g;s/;s,x,x,$//' +program_transform_name=`$as_echo "$program_transform_name" | sed "$ac_script"` # expand $ac_aux_dir to an absolute path am_aux_dir=`cd $ac_aux_dir && pwd` -test x"${MISSING+set}" = xset || MISSING="\${SHELL} $am_aux_dir/missing" +if test x"${MISSING+set}" != xset; then + case $am_aux_dir in + *\ * | *\ *) + MISSING="\${SHELL} \"$am_aux_dir/missing\"" ;; + *) + MISSING="\${SHELL} $am_aux_dir/missing" ;; + esac +fi # Use eval to expand $SHELL if eval "$MISSING --run true"; then am_missing_run="$MISSING --run " else am_missing_run= - { echo "$as_me:$LINENO: WARNING: \`missing' script is too old or missing" >&5 -echo "$as_me: WARNING: \`missing' script is too old or missing" >&2;} + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: \`missing' script is too old or missing" >&5 +$as_echo "$as_me: WARNING: \`missing' script is too old or missing" >&2;} fi -{ echo "$as_me:$LINENO: checking for a thread-safe mkdir -p" >&5 -echo $ECHO_N "checking for a thread-safe mkdir -p... $ECHO_C" >&6; } -if test -z "$MKDIR_P"; then - if test "${ac_cv_path_mkdir+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 +if test x"${install_sh}" != xset; then + case $am_aux_dir in + *\ * | *\ *) + install_sh="\${SHELL} '$am_aux_dir/install-sh'" ;; + *) + install_sh="\${SHELL} $am_aux_dir/install-sh" + esac +fi + +# Installed binaries are usually stripped using `strip' when the user +# run `make install-strip'. However `strip' might not be the right +# tool to use in cross-compilation environments, therefore Automake +# will honor the `STRIP' environment variable to overrule this program. +if test "$cross_compiling" != no; then + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args. +set dummy ${ac_tool_prefix}strip; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_STRIP+:} false; then : + $as_echo_n "(cached) " >&6 else - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH$PATH_SEPARATOR/opt/sfw/bin + if test -n "$STRIP"; then + ac_cv_prog_STRIP="$STRIP" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. - for ac_prog in mkdir gmkdir; do - for ac_exec_ext in '' $ac_executable_extensions; do + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_STRIP="${ac_tool_prefix}strip" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +STRIP=$ac_cv_prog_STRIP +if test -n "$STRIP"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $STRIP" >&5 +$as_echo "$STRIP" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_STRIP"; then + ac_ct_STRIP=$STRIP + # Extract the first word of "strip", so it can be a program name with args. +set dummy strip; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_ac_ct_STRIP+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_STRIP"; then + ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_ac_ct_STRIP="strip" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP +if test -n "$ac_ct_STRIP"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_STRIP" >&5 +$as_echo "$ac_ct_STRIP" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + if test "x$ac_ct_STRIP" = x; then + STRIP=":" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + STRIP=$ac_ct_STRIP + fi +else + STRIP="$ac_cv_prog_STRIP" +fi + +fi +INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s" + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for a thread-safe mkdir -p" >&5 +$as_echo_n "checking for a thread-safe mkdir -p... " >&6; } +if test -z "$MKDIR_P"; then + if ${ac_cv_path_mkdir+:} false; then : + $as_echo_n "(cached) " >&6 +else + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH$PATH_SEPARATOR/opt/sfw/bin +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_prog in mkdir gmkdir; do + for ac_exec_ext in '' $ac_executable_extensions; do { test -f "$as_dir/$ac_prog$ac_exec_ext" && $as_test_x "$as_dir/$ac_prog$ac_exec_ext"; } || continue case `"$as_dir/$ac_prog$ac_exec_ext" --version 2>&1` in #( 'mkdir (GNU coreutils) '* | \ @@ -2155,11 +2583,12 @@ do esac done done -done + done IFS=$as_save_IFS fi + test -d ./--version && rmdir ./--version if test "${ac_cv_path_mkdir+set}" = set; then MKDIR_P="$ac_cv_path_mkdir -p" else @@ -2167,12 +2596,11 @@ fi # value for MKDIR_P within a source directory, because that will # break other packages using the cache if that directory is # removed, or if the value is a relative name. - test -d ./--version && rmdir ./--version MKDIR_P="$ac_install_sh -d" fi fi -{ echo "$as_me:$LINENO: result: $MKDIR_P" >&5 -echo "${ECHO_T}$MKDIR_P" >&6; } +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $MKDIR_P" >&5 +$as_echo "$MKDIR_P" >&6; } mkdir_p="$MKDIR_P" case $mkdir_p in @@ -2184,10 +2612,10 @@ for ac_prog in gawk mawk nawk awk do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 -{ echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } -if test "${ac_cv_prog_AWK+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_AWK+:} false; then : + $as_echo_n "(cached) " >&6 else if test -n "$AWK"; then ac_cv_prog_AWK="$AWK" # Let the user override the test. @@ -2197,43 +2625,44 @@ for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do + for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_AWK="$ac_prog" - echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done -done + done IFS=$as_save_IFS fi fi AWK=$ac_cv_prog_AWK if test -n "$AWK"; then - { echo "$as_me:$LINENO: result: $AWK" >&5 -echo "${ECHO_T}$AWK" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AWK" >&5 +$as_echo "$AWK" >&6; } else - { echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } fi test -n "$AWK" && break done -{ echo "$as_me:$LINENO: checking whether ${MAKE-make} sets \$(MAKE)" >&5 -echo $ECHO_N "checking whether ${MAKE-make} sets \$(MAKE)... $ECHO_C" >&6; } -set x ${MAKE-make}; ac_make=`echo "$2" | sed 's/+/p/g; s/[^a-zA-Z0-9_]/_/g'` -if { as_var=ac_cv_prog_make_${ac_make}_set; eval "test \"\${$as_var+set}\" = set"; }; then - echo $ECHO_N "(cached) $ECHO_C" >&6 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ${MAKE-make} sets \$(MAKE)" >&5 +$as_echo_n "checking whether ${MAKE-make} sets \$(MAKE)... " >&6; } +set x ${MAKE-make} +ac_make=`$as_echo "$2" | sed 's/+/p/g; s/[^a-zA-Z0-9_]/_/g'` +if eval \${ac_cv_prog_make_${ac_make}_set+:} false; then : + $as_echo_n "(cached) " >&6 else cat >conftest.make <<\_ACEOF SHELL = /bin/sh all: @echo '@@@%%%=$(MAKE)=@@@%%%' _ACEOF -# GNU make sometimes prints "make[1]: Entering...", which would confuse us. +# GNU make sometimes prints "make[1]: Entering ...", which would confuse us. case `${MAKE-make} -f conftest.make 2>/dev/null` in *@@@%%%=?*=@@@%%%*) eval ac_cv_prog_make_${ac_make}_set=yes;; @@ -2243,12 +2672,12 @@ esac rm -f conftest.make fi if eval test \$ac_cv_prog_make_${ac_make}_set = yes; then - { echo "$as_me:$LINENO: result: yes" >&5 -echo "${ECHO_T}yes" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } SET_MAKE= else - { echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } SET_MAKE="MAKE=${MAKE-make}" fi @@ -2267,9 +2696,7 @@ if test "`cd $srcdir && pwd`" != "`pwd`"; then am__isrc=' -I$(srcdir)' # test to see if srcdir already configured if test -f $srcdir/config.status; then - { { echo "$as_me:$LINENO: error: source directory already configured; run \"make distclean\" there first" >&5 -echo "$as_me: error: source directory already configured; run \"make distclean\" there first" >&2;} - { (exit 1); exit 1; }; } + as_fn_error $? "source directory already configured; run \"make distclean\" there first" "$LINENO" 5 fi fi @@ -2285,7 +2712,7 @@ fi # Define the identity of the package. PACKAGE='gtest' - VERSION='1.4.0' + VERSION='1.6.0' cat >>confdefs.h <<_ACEOF @@ -2313,119 +2740,13 @@ AUTOHEADER=${AUTOHEADER-"${am_missing_run}autoheader"} MAKEINFO=${MAKEINFO-"${am_missing_run}makeinfo"} -install_sh=${install_sh-"\$(SHELL) $am_aux_dir/install-sh"} - -# Installed binaries are usually stripped using `strip' when the user -# run `make install-strip'. However `strip' might not be the right -# tool to use in cross-compilation environments, therefore Automake -# will honor the `STRIP' environment variable to overrule this program. -if test "$cross_compiling" != no; then - if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args. -set dummy ${ac_tool_prefix}strip; ac_word=$2 -{ echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } -if test "${ac_cv_prog_STRIP+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - if test -n "$STRIP"; then - ac_cv_prog_STRIP="$STRIP" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_prog_STRIP="${ac_tool_prefix}strip" - echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done -done -IFS=$as_save_IFS - -fi -fi -STRIP=$ac_cv_prog_STRIP -if test -n "$STRIP"; then - { echo "$as_me:$LINENO: result: $STRIP" >&5 -echo "${ECHO_T}$STRIP" >&6; } -else - { echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6; } -fi - - -fi -if test -z "$ac_cv_prog_STRIP"; then - ac_ct_STRIP=$STRIP - # Extract the first word of "strip", so it can be a program name with args. -set dummy strip; ac_word=$2 -{ echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } -if test "${ac_cv_prog_ac_ct_STRIP+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - if test -n "$ac_ct_STRIP"; then - ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_prog_ac_ct_STRIP="strip" - echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done -done -IFS=$as_save_IFS - -fi -fi -ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP -if test -n "$ac_ct_STRIP"; then - { echo "$as_me:$LINENO: result: $ac_ct_STRIP" >&5 -echo "${ECHO_T}$ac_ct_STRIP" >&6; } -else - { echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6; } -fi - - if test "x$ac_ct_STRIP" = x; then - STRIP=":" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools -whose name does not start with the host triplet. If you think this -configuration is useful to you, please write to autoconf@gnu.org." >&5 -echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools -whose name does not start with the host triplet. If you think this -configuration is useful to you, please write to autoconf@gnu.org." >&2;} -ac_tool_warned=yes ;; -esac - STRIP=$ac_ct_STRIP - fi -else - STRIP="$ac_cv_prog_STRIP" -fi - -fi -INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s" - # We need awk for the "check" target. The system "awk" is bad on # some platforms. -# Always define AMTAR for backward compatibility. +# Always define AMTAR for backward compatibility. Yes, it's still used +# in the wild :-( We should find a proper way to deprecate it ... +AMTAR='$${TAR-tar}' -AMTAR=${AMTAR-"${am_missing_run}tar"} - -am__tar='${AMTAR} chof - "$$tardir"'; am__untar='${AMTAR} xf -' +am__tar='$${TAR-tar} chof - "$$tardir"' am__untar='$${TAR-tar} xf -' @@ -2441,10 +2762,10 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args. set dummy ${ac_tool_prefix}gcc; ac_word=$2 -{ echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } -if test "${ac_cv_prog_CC+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_CC+:} false; then : + $as_echo_n "(cached) " >&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. @@ -2454,25 +2775,25 @@ for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do + for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_CC="${ac_tool_prefix}gcc" - echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done -done + done IFS=$as_save_IFS fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then - { echo "$as_me:$LINENO: result: $CC" >&5 -echo "${ECHO_T}$CC" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 +$as_echo "$CC" >&6; } else - { echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } fi @@ -2481,10 +2802,10 @@ if test -z "$ac_cv_prog_CC"; then ac_ct_CC=$CC # Extract the first word of "gcc", so it can be a program name with args. set dummy gcc; ac_word=$2 -{ echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } -if test "${ac_cv_prog_ac_ct_CC+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_ac_ct_CC+:} false; then : + $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_CC"; then ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. @@ -2494,25 +2815,25 @@ for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do + for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_ac_ct_CC="gcc" - echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done -done + done IFS=$as_save_IFS fi fi ac_ct_CC=$ac_cv_prog_ac_ct_CC if test -n "$ac_ct_CC"; then - { echo "$as_me:$LINENO: result: $ac_ct_CC" >&5 -echo "${ECHO_T}$ac_ct_CC" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 +$as_echo "$ac_ct_CC" >&6; } else - { echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } fi if test "x$ac_ct_CC" = x; then @@ -2520,12 +2841,8 @@ fi else case $cross_compiling:$ac_tool_warned in yes:) -{ echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools -whose name does not start with the host triplet. If you think this -configuration is useful to you, please write to autoconf@gnu.org." >&5 -echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools -whose name does not start with the host triplet. If you think this -configuration is useful to you, please write to autoconf@gnu.org." >&2;} +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac CC=$ac_ct_CC @@ -2538,10 +2855,10 @@ if test -z "$CC"; then if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args. set dummy ${ac_tool_prefix}cc; ac_word=$2 -{ echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } -if test "${ac_cv_prog_CC+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_CC+:} false; then : + $as_echo_n "(cached) " >&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. @@ -2551,25 +2868,25 @@ for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do + for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_CC="${ac_tool_prefix}cc" - echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done -done + done IFS=$as_save_IFS fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then - { echo "$as_me:$LINENO: result: $CC" >&5 -echo "${ECHO_T}$CC" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 +$as_echo "$CC" >&6; } else - { echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } fi @@ -2578,10 +2895,10 @@ fi if test -z "$CC"; then # Extract the first word of "cc", so it can be a program name with args. set dummy cc; ac_word=$2 -{ echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } -if test "${ac_cv_prog_CC+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_CC+:} false; then : + $as_echo_n "(cached) " >&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. @@ -2592,18 +2909,18 @@ for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do + for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then ac_prog_rejected=yes continue fi ac_cv_prog_CC="cc" - echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done -done + done IFS=$as_save_IFS if test $ac_prog_rejected = yes; then @@ -2622,11 +2939,11 @@ fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then - { echo "$as_me:$LINENO: result: $CC" >&5 -echo "${ECHO_T}$CC" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 +$as_echo "$CC" >&6; } else - { echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } fi @@ -2637,10 +2954,10 @@ if test -z "$CC"; then do # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. set dummy $ac_tool_prefix$ac_prog; ac_word=$2 -{ echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } -if test "${ac_cv_prog_CC+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_CC+:} false; then : + $as_echo_n "(cached) " >&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. @@ -2650,25 +2967,25 @@ for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do + for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_CC="$ac_tool_prefix$ac_prog" - echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done -done + done IFS=$as_save_IFS fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then - { echo "$as_me:$LINENO: result: $CC" >&5 -echo "${ECHO_T}$CC" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 +$as_echo "$CC" >&6; } else - { echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } fi @@ -2681,10 +2998,10 @@ if test -z "$CC"; then do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 -{ echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } -if test "${ac_cv_prog_ac_ct_CC+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_ac_ct_CC+:} false; then : + $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_CC"; then ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. @@ -2694,25 +3011,25 @@ for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do + for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_ac_ct_CC="$ac_prog" - echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done -done + done IFS=$as_save_IFS fi fi ac_ct_CC=$ac_cv_prog_ac_ct_CC if test -n "$ac_ct_CC"; then - { echo "$as_me:$LINENO: result: $ac_ct_CC" >&5 -echo "${ECHO_T}$ac_ct_CC" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 +$as_echo "$ac_ct_CC" >&6; } else - { echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } fi @@ -2724,12 +3041,8 @@ done else case $cross_compiling:$ac_tool_warned in yes:) -{ echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools -whose name does not start with the host triplet. If you think this -configuration is useful to you, please write to autoconf@gnu.org." >&5 -echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools -whose name does not start with the host triplet. If you think this -configuration is useful to you, please write to autoconf@gnu.org." >&2;} +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac CC=$ac_ct_CC @@ -2739,51 +3052,37 @@ fi fi -test -z "$CC" && { { echo "$as_me:$LINENO: error: no acceptable C compiler found in \$PATH -See \`config.log' for more details." >&5 -echo "$as_me: error: no acceptable C compiler found in \$PATH -See \`config.log' for more details." >&2;} - { (exit 1); exit 1; }; } +test -z "$CC" && { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error $? "no acceptable C compiler found in \$PATH +See \`config.log' for more details" "$LINENO" 5; } # Provide some information about the compiler. -echo "$as_me:$LINENO: checking for C compiler version" >&5 -ac_compiler=`set X $ac_compile; echo $2` -{ (ac_try="$ac_compiler --version >&5" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compiler --version >&5") 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } -{ (ac_try="$ac_compiler -v >&5" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compiler -v >&5") 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } -{ (ac_try="$ac_compiler -V >&5" +$as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler version" >&5 +set X $ac_compile +ac_compiler=$2 +for ac_option in --version -v -V -qversion; do + { { ac_try="$ac_compiler $ac_option >&5" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compiler -V >&5") 2>&5 +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_compiler $ac_option >&5") 2>conftest.err ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } + if test -s conftest.err; then + sed '10a\ +... rest of stderr output deleted ... + 10q' conftest.err >conftest.er1 + cat conftest.er1 >&5 + fi + rm -f conftest.er1 conftest.err + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } +done -cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF +cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int @@ -2795,42 +3094,38 @@ main () } _ACEOF ac_clean_files_save=$ac_clean_files -ac_clean_files="$ac_clean_files a.out a.exe b.out" +ac_clean_files="$ac_clean_files a.out a.out.dSYM a.exe b.out" # Try to create an executable without -o first, disregard a.out. # It will help us diagnose broken compilers, and finding out an intuition # of exeext. -{ echo "$as_me:$LINENO: checking for C compiler default output file name" >&5 -echo $ECHO_N "checking for C compiler default output file name... $ECHO_C" >&6; } -ac_link_default=`echo "$ac_link" | sed 's/ -o *conftest[^ ]*//'` -# -# List of possible output files, starting from the most likely. -# The algorithm is not robust to junk in `.', hence go to wildcards (a.*) -# only as a last resort. b.out is created by i960 compilers. -ac_files='a_out.exe a.exe conftest.exe a.out conftest a.* conftest.* b.out' -# -# The IRIX 6 linker writes into existing files which may not be -# executable, retaining their permissions. Remove them first so a -# subsequent execution test works. +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the C compiler works" >&5 +$as_echo_n "checking whether the C compiler works... " >&6; } +ac_link_default=`$as_echo "$ac_link" | sed 's/ -o *conftest[^ ]*//'` + +# The possible output files: +ac_files="a.out conftest.exe conftest a.exe a_out.exe b.out conftest.*" + ac_rmfiles= for ac_file in $ac_files do case $ac_file in - *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.o | *.obj ) ;; + *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; * ) ac_rmfiles="$ac_rmfiles $ac_file";; esac done rm -f $ac_rmfiles -if { (ac_try="$ac_link_default" +if { { ac_try="$ac_link_default" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 (eval "$ac_link_default") 2>&5 ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; then + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then : # Autoconf-2.13 could set the ac_cv_exeext variable to `no'. # So ignore a value of `no', otherwise this would lead to `EXEEXT = no' # in a Makefile. We should not override ac_cv_exeext if it was cached, @@ -2840,14 +3135,14 @@ for ac_file in $ac_files '' do test -f "$ac_file" || continue case $ac_file in - *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.o | *.obj ) + *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; [ab].out ) # We found the default executable, but exeext='' is most # certainly right. break;; *.* ) - if test "${ac_cv_exeext+set}" = set && test "$ac_cv_exeext" != no; + if test "${ac_cv_exeext+set}" = set && test "$ac_cv_exeext" != no; then :; else ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` fi @@ -2866,78 +3161,41 @@ test "$ac_cv_exeext" = no && ac_cv_exeext= else ac_file='' fi - -{ echo "$as_me:$LINENO: result: $ac_file" >&5 -echo "${ECHO_T}$ac_file" >&6; } -if test -z "$ac_file"; then - echo "$as_me: failed program was:" >&5 +if test -z "$ac_file"; then : + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +$as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 -{ { echo "$as_me:$LINENO: error: C compiler cannot create executables -See \`config.log' for more details." >&5 -echo "$as_me: error: C compiler cannot create executables -See \`config.log' for more details." >&2;} - { (exit 77); exit 77; }; } +{ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error 77 "C compiler cannot create executables +See \`config.log' for more details" "$LINENO" 5; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } fi - +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler default output file name" >&5 +$as_echo_n "checking for C compiler default output file name... " >&6; } +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_file" >&5 +$as_echo "$ac_file" >&6; } ac_exeext=$ac_cv_exeext -# Check that the compiler produces executables we can run. If not, either -# the compiler is broken, or we cross compile. -{ echo "$as_me:$LINENO: checking whether the C compiler works" >&5 -echo $ECHO_N "checking whether the C compiler works... $ECHO_C" >&6; } -# FIXME: These cross compiler hacks should be removed for Autoconf 3.0 -# If not cross compiling, check that we can run a simple program. -if test "$cross_compiling" != yes; then - if { ac_try='./$ac_file' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - cross_compiling=no - else - if test "$cross_compiling" = maybe; then - cross_compiling=yes - else - { { echo "$as_me:$LINENO: error: cannot run C compiled programs. -If you meant to cross compile, use \`--host'. -See \`config.log' for more details." >&5 -echo "$as_me: error: cannot run C compiled programs. -If you meant to cross compile, use \`--host'. -See \`config.log' for more details." >&2;} - { (exit 1); exit 1; }; } - fi - fi -fi -{ echo "$as_me:$LINENO: result: yes" >&5 -echo "${ECHO_T}yes" >&6; } - -rm -f a.out a.exe conftest$ac_cv_exeext b.out +rm -f -r a.out a.out.dSYM a.exe conftest$ac_cv_exeext b.out ac_clean_files=$ac_clean_files_save -# Check that the compiler produces executables we can run. If not, either -# the compiler is broken, or we cross compile. -{ echo "$as_me:$LINENO: checking whether we are cross compiling" >&5 -echo $ECHO_N "checking whether we are cross compiling... $ECHO_C" >&6; } -{ echo "$as_me:$LINENO: result: $cross_compiling" >&5 -echo "${ECHO_T}$cross_compiling" >&6; } - -{ echo "$as_me:$LINENO: checking for suffix of executables" >&5 -echo $ECHO_N "checking for suffix of executables... $ECHO_C" >&6; } -if { (ac_try="$ac_link" +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of executables" >&5 +$as_echo_n "checking for suffix of executables... " >&6; } +if { { ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 (eval "$ac_link") 2>&5 ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; then + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then : # If both `conftest.exe' and `conftest' are `present' (well, observable) # catch `conftest.exe'. For instance with Cygwin, `ls conftest' will # work properly (i.e., refer to `conftest.exe'), while it won't with @@ -2945,37 +3203,90 @@ eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 for ac_file in conftest.exe conftest conftest.*; do test -f "$ac_file" || continue case $ac_file in - *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.o | *.obj ) ;; + *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` break;; * ) break;; esac done else - { { echo "$as_me:$LINENO: error: cannot compute suffix of executables: cannot compile and link -See \`config.log' for more details." >&5 -echo "$as_me: error: cannot compute suffix of executables: cannot compile and link -See \`config.log' for more details." >&2;} - { (exit 1); exit 1; }; } + { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error $? "cannot compute suffix of executables: cannot compile and link +See \`config.log' for more details" "$LINENO" 5; } fi - -rm -f conftest$ac_cv_exeext -{ echo "$as_me:$LINENO: result: $ac_cv_exeext" >&5 -echo "${ECHO_T}$ac_cv_exeext" >&6; } +rm -f conftest conftest$ac_cv_exeext +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_exeext" >&5 +$as_echo "$ac_cv_exeext" >&6; } rm -f conftest.$ac_ext EXEEXT=$ac_cv_exeext ac_exeext=$EXEEXT -{ echo "$as_me:$LINENO: checking for suffix of object files" >&5 -echo $ECHO_N "checking for suffix of object files... $ECHO_C" >&6; } -if test "${ac_cv_objext+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +int +main () +{ +FILE *f = fopen ("conftest.out", "w"); + return ferror (f) || fclose (f) != 0; + + ; + return 0; +} _ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF +ac_clean_files="$ac_clean_files conftest.out" +# Check that the compiler produces executables we can run. If not, either +# the compiler is broken, or we cross compile. +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are cross compiling" >&5 +$as_echo_n "checking whether we are cross compiling... " >&6; } +if test "$cross_compiling" != yes; then + { { ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_link") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } + if { ac_try='./conftest$ac_cv_exeext' + { { case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; }; then + cross_compiling=no + else + if test "$cross_compiling" = maybe; then + cross_compiling=yes + else + { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error $? "cannot run C compiled programs. +If you meant to cross compile, use \`--host'. +See \`config.log' for more details" "$LINENO" 5; } + fi + fi +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $cross_compiling" >&5 +$as_echo "$cross_compiling" >&6; } + +rm -f conftest.$ac_ext conftest$ac_cv_exeext conftest.out +ac_clean_files=$ac_clean_files_save +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of object files" >&5 +$as_echo_n "checking for suffix of object files... " >&6; } +if ${ac_cv_objext+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int @@ -2987,51 +3298,46 @@ main () } _ACEOF rm -f conftest.o conftest.obj -if { (ac_try="$ac_compile" +if { { ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 (eval "$ac_compile") 2>&5 ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; then + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then : for ac_file in conftest.o conftest.obj conftest.*; do test -f "$ac_file" || continue; case $ac_file in - *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf ) ;; + *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM ) ;; *) ac_cv_objext=`expr "$ac_file" : '.*\.\(.*\)'` break;; esac done else - echo "$as_me: failed program was:" >&5 + $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 -{ { echo "$as_me:$LINENO: error: cannot compute suffix of object files: cannot compile -See \`config.log' for more details." >&5 -echo "$as_me: error: cannot compute suffix of object files: cannot compile -See \`config.log' for more details." >&2;} - { (exit 1); exit 1; }; } +{ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error $? "cannot compute suffix of object files: cannot compile +See \`config.log' for more details" "$LINENO" 5; } fi - rm -f conftest.$ac_cv_objext conftest.$ac_ext fi -{ echo "$as_me:$LINENO: result: $ac_cv_objext" >&5 -echo "${ECHO_T}$ac_cv_objext" >&6; } +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_objext" >&5 +$as_echo "$ac_cv_objext" >&6; } OBJEXT=$ac_cv_objext ac_objext=$OBJEXT -{ echo "$as_me:$LINENO: checking whether we are using the GNU C compiler" >&5 -echo $ECHO_N "checking whether we are using the GNU C compiler... $ECHO_C" >&6; } -if test "${ac_cv_c_compiler_gnu+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU C compiler" >&5 +$as_echo_n "checking whether we are using the GNU C compiler... " >&6; } +if ${ac_cv_c_compiler_gnu+:} false; then : + $as_echo_n "(cached) " >&6 else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF + cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int @@ -3045,54 +3351,34 @@ main () return 0; } _ACEOF -rm -f conftest.$ac_objext -if { (ac_try="$ac_compile" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compile") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then +if ac_fn_c_try_compile "$LINENO"; then : ac_compiler_gnu=yes else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_compiler_gnu=no + ac_compiler_gnu=no fi - rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ac_cv_c_compiler_gnu=$ac_compiler_gnu fi -{ echo "$as_me:$LINENO: result: $ac_cv_c_compiler_gnu" >&5 -echo "${ECHO_T}$ac_cv_c_compiler_gnu" >&6; } -GCC=`test $ac_compiler_gnu = yes && echo yes` +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_compiler_gnu" >&5 +$as_echo "$ac_cv_c_compiler_gnu" >&6; } +if test $ac_compiler_gnu = yes; then + GCC=yes +else + GCC= +fi ac_test_CFLAGS=${CFLAGS+set} ac_save_CFLAGS=$CFLAGS -{ echo "$as_me:$LINENO: checking whether $CC accepts -g" >&5 -echo $ECHO_N "checking whether $CC accepts -g... $ECHO_C" >&6; } -if test "${ac_cv_prog_cc_g+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC accepts -g" >&5 +$as_echo_n "checking whether $CC accepts -g... " >&6; } +if ${ac_cv_prog_cc_g+:} false; then : + $as_echo_n "(cached) " >&6 else ac_save_c_werror_flag=$ac_c_werror_flag ac_c_werror_flag=yes ac_cv_prog_cc_g=no CFLAGS="-g" - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF + cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int @@ -3103,34 +3389,11 @@ main () return 0; } _ACEOF -rm -f conftest.$ac_objext -if { (ac_try="$ac_compile" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compile") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then +if ac_fn_c_try_compile "$LINENO"; then : ac_cv_prog_cc_g=yes else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - CFLAGS="" - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF + CFLAGS="" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int @@ -3141,35 +3404,12 @@ main () return 0; } _ACEOF -rm -f conftest.$ac_objext -if { (ac_try="$ac_compile" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compile") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then - : -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 +if ac_fn_c_try_compile "$LINENO"; then : - ac_c_werror_flag=$ac_save_c_werror_flag +else + ac_c_werror_flag=$ac_save_c_werror_flag CFLAGS="-g" - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF + cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int @@ -3180,42 +3420,18 @@ main () return 0; } _ACEOF -rm -f conftest.$ac_objext -if { (ac_try="$ac_compile" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compile") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then +if ac_fn_c_try_compile "$LINENO"; then : ac_cv_prog_cc_g=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - fi - rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi - rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi - rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ac_c_werror_flag=$ac_save_c_werror_flag fi -{ echo "$as_me:$LINENO: result: $ac_cv_prog_cc_g" >&5 -echo "${ECHO_T}$ac_cv_prog_cc_g" >&6; } +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_g" >&5 +$as_echo "$ac_cv_prog_cc_g" >&6; } if test "$ac_test_CFLAGS" = set; then CFLAGS=$ac_save_CFLAGS elif test $ac_cv_prog_cc_g = yes; then @@ -3231,18 +3447,14 @@ else CFLAGS= fi fi -{ echo "$as_me:$LINENO: checking for $CC option to accept ISO C89" >&5 -echo $ECHO_N "checking for $CC option to accept ISO C89... $ECHO_C" >&6; } -if test "${ac_cv_prog_cc_c89+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $CC option to accept ISO C89" >&5 +$as_echo_n "checking for $CC option to accept ISO C89... " >&6; } +if ${ac_cv_prog_cc_c89+:} false; then : + $as_echo_n "(cached) " >&6 else ac_cv_prog_cc_c89=no ac_save_CC=$CC -cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF +cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include @@ -3299,31 +3511,9 @@ for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std \ -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__" do CC="$ac_save_CC $ac_arg" - rm -f conftest.$ac_objext -if { (ac_try="$ac_compile" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compile") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then + if ac_fn_c_try_compile "$LINENO"; then : ac_cv_prog_cc_c89=$ac_arg -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - fi - rm -f core conftest.err conftest.$ac_objext test "x$ac_cv_prog_cc_c89" != "xno" && break done @@ -3334,17 +3524,19 @@ fi # AC_CACHE_VAL case "x$ac_cv_prog_cc_c89" in x) - { echo "$as_me:$LINENO: result: none needed" >&5 -echo "${ECHO_T}none needed" >&6; } ;; + { $as_echo "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 +$as_echo "none needed" >&6; } ;; xno) - { echo "$as_me:$LINENO: result: unsupported" >&5 -echo "${ECHO_T}unsupported" >&6; } ;; + { $as_echo "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 +$as_echo "unsupported" >&6; } ;; *) CC="$CC $ac_cv_prog_cc_c89" - { echo "$as_me:$LINENO: result: $ac_cv_prog_cc_c89" >&5 -echo "${ECHO_T}$ac_cv_prog_cc_c89" >&6; } ;; + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c89" >&5 +$as_echo "$ac_cv_prog_cc_c89" >&6; } ;; esac +if test "x$ac_cv_prog_cc_c89" != xno; then : +fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' @@ -3359,50 +3551,51 @@ ac_config_commands="$ac_config_commands depfiles" am_make=${MAKE-make} cat > confinc << 'END' am__doit: - @echo done + @echo this is the am__doit target .PHONY: am__doit END # If we don't find an include directive, just comment out the code. -{ echo "$as_me:$LINENO: checking for style of include used by $am_make" >&5 -echo $ECHO_N "checking for style of include used by $am_make... $ECHO_C" >&6; } +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for style of include used by $am_make" >&5 +$as_echo_n "checking for style of include used by $am_make... " >&6; } am__include="#" am__quote= _am_result=none # First try GNU make style include. echo "include confinc" > confmf -# We grep out `Entering directory' and `Leaving directory' -# messages which can occur if `w' ends up in MAKEFLAGS. -# In particular we don't look at `^make:' because GNU make might -# be invoked under some other name (usually "gmake"), in which -# case it prints its new name instead of `make'. -if test "`$am_make -s -f confmf 2> /dev/null | grep -v 'ing directory'`" = "done"; then - am__include=include - am__quote= - _am_result=GNU -fi +# Ignore all kinds of additional output from `make'. +case `$am_make -s -f confmf 2> /dev/null` in #( +*the\ am__doit\ target*) + am__include=include + am__quote= + _am_result=GNU + ;; +esac # Now try BSD make style include. if test "$am__include" = "#"; then echo '.include "confinc"' > confmf - if test "`$am_make -s -f confmf 2> /dev/null`" = "done"; then - am__include=.include - am__quote="\"" - _am_result=BSD - fi + case `$am_make -s -f confmf 2> /dev/null` in #( + *the\ am__doit\ target*) + am__include=.include + am__quote="\"" + _am_result=BSD + ;; + esac fi -{ echo "$as_me:$LINENO: result: $_am_result" >&5 -echo "${ECHO_T}$_am_result" >&6; } +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $_am_result" >&5 +$as_echo "$_am_result" >&6; } rm -f confinc confmf # Check whether --enable-dependency-tracking was given. -if test "${enable_dependency_tracking+set}" = set; then +if test "${enable_dependency_tracking+set}" = set; then : enableval=$enable_dependency_tracking; fi if test "x$enable_dependency_tracking" != xno; then am_depcomp="$ac_aux_dir/depcomp" AMDEPBACKSLASH='\' + am__nodep='_no' fi if test "x$enable_dependency_tracking" != xno; then AMDEP_TRUE= @@ -3416,10 +3609,10 @@ fi depcc="$CC" am_compiler_list= -{ echo "$as_me:$LINENO: checking dependency style of $depcc" >&5 -echo $ECHO_N "checking dependency style of $depcc... $ECHO_C" >&6; } -if test "${am_cv_CC_dependencies_compiler_type+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking dependency style of $depcc" >&5 +$as_echo_n "checking dependency style of $depcc... " >&6; } +if ${am_cv_CC_dependencies_compiler_type+:} false; then : + $as_echo_n "(cached) " >&6 else if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then # We make a subdir and do the tests there. Otherwise we can end up @@ -3427,6 +3620,7 @@ else # instance it was reported that on HP-UX the gcc test will end up # making a dummy file named `D' -- because `-MD' means `put the output # in D'. + rm -rf conftest.dir mkdir conftest.dir # Copy depcomp to subdir because otherwise we won't find it if we're # using a relative directory. @@ -3444,6 +3638,11 @@ else if test "$am_compiler_list" = ""; then am_compiler_list=`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp` fi + am__universal=false + case " $depcc " in #( + *\ -arch\ *\ -arch\ *) am__universal=true ;; + esac + for depmode in $am_compiler_list; do # Setup a source with many dependencies, because some compilers # like to wrap large dependency lists on column 80 (with \), and @@ -3461,7 +3660,17 @@ else done echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf + # We check with `-c' and `-o' for the sake of the "dashmstdout" + # mode. It turns out that the SunPro C++ compiler does not properly + # handle `-M -o', and we need to detect this. Also, some Intel + # versions had trouble with output in subdirs + am__obj=sub/conftest.${OBJEXT-o} + am__minus_obj="-o $am__obj" case $depmode in + gcc) + # This depmode causes a compiler race in universal mode. + test "$am__universal" = false || continue + ;; nosideeffect) # after this tag, mechanisms are not by side-effect, so they'll # only be used when explicitly requested @@ -3471,19 +3680,23 @@ else break fi ;; + msvc7 | msvc7msys | msvisualcpp | msvcmsys) + # This compiler won't grok `-c -o', but also, the minuso test has + # not run yet. These depmodes are late enough in the game, and + # so weak that their functioning should not be impacted. + am__obj=conftest.${OBJEXT-o} + am__minus_obj= + ;; none) break ;; esac - # We check with `-c' and `-o' for the sake of the "dashmstdout" - # mode. It turns out that the SunPro C++ compiler does not properly - # handle `-M -o', and we need to detect this. if depmode=$depmode \ - source=sub/conftest.c object=sub/conftest.${OBJEXT-o} \ + source=sub/conftest.c object=$am__obj \ depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ - $SHELL ./depcomp $depcc -c -o sub/conftest.${OBJEXT-o} sub/conftest.c \ + $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \ >/dev/null 2>conftest.err && grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 && grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && - grep sub/conftest.${OBJEXT-o} sub/conftest.Po > /dev/null 2>&1 && + grep $am__obj sub/conftest.Po > /dev/null 2>&1 && ${MAKE-make} -s -f confmf > /dev/null 2>&1; then # icc doesn't choke on unknown options, it will just issue warnings # or remarks (even with -Werror). So we grep stderr for any message @@ -3507,8 +3720,8 @@ else fi fi -{ echo "$as_me:$LINENO: result: $am_cv_CC_dependencies_compiler_type" >&5 -echo "${ECHO_T}$am_cv_CC_dependencies_compiler_type" >&6; } +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_CC_dependencies_compiler_type" >&5 +$as_echo "$am_cv_CC_dependencies_compiler_type" >&6; } CCDEPMODE=depmode=$am_cv_CC_dependencies_compiler_type if @@ -3536,10 +3749,10 @@ if test -z "$CXX"; then do # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. set dummy $ac_tool_prefix$ac_prog; ac_word=$2 -{ echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } -if test "${ac_cv_prog_CXX+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_CXX+:} false; then : + $as_echo_n "(cached) " >&6 else if test -n "$CXX"; then ac_cv_prog_CXX="$CXX" # Let the user override the test. @@ -3549,25 +3762,25 @@ for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do + for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_CXX="$ac_tool_prefix$ac_prog" - echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done -done + done IFS=$as_save_IFS fi fi CXX=$ac_cv_prog_CXX if test -n "$CXX"; then - { echo "$as_me:$LINENO: result: $CXX" >&5 -echo "${ECHO_T}$CXX" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CXX" >&5 +$as_echo "$CXX" >&6; } else - { echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } fi @@ -3580,10 +3793,10 @@ if test -z "$CXX"; then do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 -{ echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } -if test "${ac_cv_prog_ac_ct_CXX+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_ac_ct_CXX+:} false; then : + $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_CXX"; then ac_cv_prog_ac_ct_CXX="$ac_ct_CXX" # Let the user override the test. @@ -3593,25 +3806,25 @@ for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do + for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_ac_ct_CXX="$ac_prog" - echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done -done + done IFS=$as_save_IFS fi fi ac_ct_CXX=$ac_cv_prog_ac_ct_CXX if test -n "$ac_ct_CXX"; then - { echo "$as_me:$LINENO: result: $ac_ct_CXX" >&5 -echo "${ECHO_T}$ac_ct_CXX" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CXX" >&5 +$as_echo "$ac_ct_CXX" >&6; } else - { echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } fi @@ -3623,12 +3836,8 @@ done else case $cross_compiling:$ac_tool_warned in yes:) -{ echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools -whose name does not start with the host triplet. If you think this -configuration is useful to you, please write to autoconf@gnu.org." >&5 -echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools -whose name does not start with the host triplet. If you think this -configuration is useful to you, please write to autoconf@gnu.org." >&2;} +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac CXX=$ac_ct_CXX @@ -3638,49 +3847,36 @@ fi fi fi # Provide some information about the compiler. -echo "$as_me:$LINENO: checking for C++ compiler version" >&5 -ac_compiler=`set X $ac_compile; echo $2` -{ (ac_try="$ac_compiler --version >&5" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compiler --version >&5") 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } -{ (ac_try="$ac_compiler -v >&5" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compiler -v >&5") 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } -{ (ac_try="$ac_compiler -V >&5" +$as_echo "$as_me:${as_lineno-$LINENO}: checking for C++ compiler version" >&5 +set X $ac_compile +ac_compiler=$2 +for ac_option in --version -v -V -qversion; do + { { ac_try="$ac_compiler $ac_option >&5" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compiler -V >&5") 2>&5 +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_compiler $ac_option >&5") 2>conftest.err ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } + if test -s conftest.err; then + sed '10a\ +... rest of stderr output deleted ... + 10q' conftest.err >conftest.er1 + cat conftest.er1 >&5 + fi + rm -f conftest.er1 conftest.err + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } +done -{ echo "$as_me:$LINENO: checking whether we are using the GNU C++ compiler" >&5 -echo $ECHO_N "checking whether we are using the GNU C++ compiler... $ECHO_C" >&6; } -if test "${ac_cv_cxx_compiler_gnu+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU C++ compiler" >&5 +$as_echo_n "checking whether we are using the GNU C++ compiler... " >&6; } +if ${ac_cv_cxx_compiler_gnu+:} false; then : + $as_echo_n "(cached) " >&6 else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF + cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int @@ -3694,54 +3890,34 @@ main () return 0; } _ACEOF -rm -f conftest.$ac_objext -if { (ac_try="$ac_compile" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compile") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_cxx_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then +if ac_fn_cxx_try_compile "$LINENO"; then : ac_compiler_gnu=yes else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_compiler_gnu=no + ac_compiler_gnu=no fi - rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ac_cv_cxx_compiler_gnu=$ac_compiler_gnu fi -{ echo "$as_me:$LINENO: result: $ac_cv_cxx_compiler_gnu" >&5 -echo "${ECHO_T}$ac_cv_cxx_compiler_gnu" >&6; } -GXX=`test $ac_compiler_gnu = yes && echo yes` +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_cxx_compiler_gnu" >&5 +$as_echo "$ac_cv_cxx_compiler_gnu" >&6; } +if test $ac_compiler_gnu = yes; then + GXX=yes +else + GXX= +fi ac_test_CXXFLAGS=${CXXFLAGS+set} ac_save_CXXFLAGS=$CXXFLAGS -{ echo "$as_me:$LINENO: checking whether $CXX accepts -g" >&5 -echo $ECHO_N "checking whether $CXX accepts -g... $ECHO_C" >&6; } -if test "${ac_cv_prog_cxx_g+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CXX accepts -g" >&5 +$as_echo_n "checking whether $CXX accepts -g... " >&6; } +if ${ac_cv_prog_cxx_g+:} false; then : + $as_echo_n "(cached) " >&6 else ac_save_cxx_werror_flag=$ac_cxx_werror_flag ac_cxx_werror_flag=yes ac_cv_prog_cxx_g=no CXXFLAGS="-g" - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF + cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int @@ -3752,34 +3928,11 @@ main () return 0; } _ACEOF -rm -f conftest.$ac_objext -if { (ac_try="$ac_compile" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compile") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_cxx_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then +if ac_fn_cxx_try_compile "$LINENO"; then : ac_cv_prog_cxx_g=yes else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - CXXFLAGS="" - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF + CXXFLAGS="" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int @@ -3790,35 +3943,12 @@ main () return 0; } _ACEOF -rm -f conftest.$ac_objext -if { (ac_try="$ac_compile" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compile") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_cxx_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then - : -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 +if ac_fn_cxx_try_compile "$LINENO"; then : - ac_cxx_werror_flag=$ac_save_cxx_werror_flag +else + ac_cxx_werror_flag=$ac_save_cxx_werror_flag CXXFLAGS="-g" - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF + cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int @@ -3829,42 +3959,18 @@ main () return 0; } _ACEOF -rm -f conftest.$ac_objext -if { (ac_try="$ac_compile" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compile") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_cxx_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then +if ac_fn_cxx_try_compile "$LINENO"; then : ac_cv_prog_cxx_g=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - fi - rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi - rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi - rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ac_cxx_werror_flag=$ac_save_cxx_werror_flag fi -{ echo "$as_me:$LINENO: result: $ac_cv_prog_cxx_g" >&5 -echo "${ECHO_T}$ac_cv_prog_cxx_g" >&6; } +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cxx_g" >&5 +$as_echo "$ac_cv_prog_cxx_g" >&6; } if test "$ac_test_CXXFLAGS" = set; then CXXFLAGS=$ac_save_CXXFLAGS elif test $ac_cv_prog_cxx_g = yes; then @@ -3888,10 +3994,10 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu depcc="$CXX" am_compiler_list= -{ echo "$as_me:$LINENO: checking dependency style of $depcc" >&5 -echo $ECHO_N "checking dependency style of $depcc... $ECHO_C" >&6; } -if test "${am_cv_CXX_dependencies_compiler_type+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking dependency style of $depcc" >&5 +$as_echo_n "checking dependency style of $depcc... " >&6; } +if ${am_cv_CXX_dependencies_compiler_type+:} false; then : + $as_echo_n "(cached) " >&6 else if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then # We make a subdir and do the tests there. Otherwise we can end up @@ -3899,6 +4005,7 @@ else # instance it was reported that on HP-UX the gcc test will end up # making a dummy file named `D' -- because `-MD' means `put the output # in D'. + rm -rf conftest.dir mkdir conftest.dir # Copy depcomp to subdir because otherwise we won't find it if we're # using a relative directory. @@ -3916,6 +4023,11 @@ else if test "$am_compiler_list" = ""; then am_compiler_list=`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp` fi + am__universal=false + case " $depcc " in #( + *\ -arch\ *\ -arch\ *) am__universal=true ;; + esac + for depmode in $am_compiler_list; do # Setup a source with many dependencies, because some compilers # like to wrap large dependency lists on column 80 (with \), and @@ -3933,7 +4045,17 @@ else done echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf + # We check with `-c' and `-o' for the sake of the "dashmstdout" + # mode. It turns out that the SunPro C++ compiler does not properly + # handle `-M -o', and we need to detect this. Also, some Intel + # versions had trouble with output in subdirs + am__obj=sub/conftest.${OBJEXT-o} + am__minus_obj="-o $am__obj" case $depmode in + gcc) + # This depmode causes a compiler race in universal mode. + test "$am__universal" = false || continue + ;; nosideeffect) # after this tag, mechanisms are not by side-effect, so they'll # only be used when explicitly requested @@ -3943,19 +4065,23 @@ else break fi ;; + msvc7 | msvc7msys | msvisualcpp | msvcmsys) + # This compiler won't grok `-c -o', but also, the minuso test has + # not run yet. These depmodes are late enough in the game, and + # so weak that their functioning should not be impacted. + am__obj=conftest.${OBJEXT-o} + am__minus_obj= + ;; none) break ;; esac - # We check with `-c' and `-o' for the sake of the "dashmstdout" - # mode. It turns out that the SunPro C++ compiler does not properly - # handle `-M -o', and we need to detect this. if depmode=$depmode \ - source=sub/conftest.c object=sub/conftest.${OBJEXT-o} \ + source=sub/conftest.c object=$am__obj \ depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ - $SHELL ./depcomp $depcc -c -o sub/conftest.${OBJEXT-o} sub/conftest.c \ + $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \ >/dev/null 2>conftest.err && grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 && grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && - grep sub/conftest.${OBJEXT-o} sub/conftest.Po > /dev/null 2>&1 && + grep $am__obj sub/conftest.Po > /dev/null 2>&1 && ${MAKE-make} -s -f confmf > /dev/null 2>&1; then # icc doesn't choke on unknown options, it will just issue warnings # or remarks (even with -Werror). So we grep stderr for any message @@ -3979,8 +4105,8 @@ else fi fi -{ echo "$as_me:$LINENO: result: $am_cv_CXX_dependencies_compiler_type" >&5 -echo "${ECHO_T}$am_cv_CXX_dependencies_compiler_type" >&6; } +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_CXX_dependencies_compiler_type" >&5 +$as_echo "$am_cv_CXX_dependencies_compiler_type" >&6; } CXXDEPMODE=depmode=$am_cv_CXX_dependencies_compiler_type if @@ -4002,14 +4128,14 @@ ac_compiler_gnu=$ac_cv_cxx_compiler_gnu case `pwd` in *\ * | *\ *) - { echo "$as_me:$LINENO: WARNING: Libtool does not cope well with whitespace in \`pwd\`" >&5 -echo "$as_me: WARNING: Libtool does not cope well with whitespace in \`pwd\`" >&2;} ;; + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Libtool does not cope well with whitespace in \`pwd\`" >&5 +$as_echo "$as_me: WARNING: Libtool does not cope well with whitespace in \`pwd\`" >&2;} ;; esac -macro_version='2.2.4' -macro_revision='1.2976' +macro_version='2.4.2' +macro_revision='1.3337' @@ -4027,35 +4153,27 @@ ltmain="$ac_aux_dir/ltmain.sh" # Make sure we can run config.sub. $SHELL "$ac_aux_dir/config.sub" sun4 >/dev/null 2>&1 || - { { echo "$as_me:$LINENO: error: cannot run $SHELL $ac_aux_dir/config.sub" >&5 -echo "$as_me: error: cannot run $SHELL $ac_aux_dir/config.sub" >&2;} - { (exit 1); exit 1; }; } + as_fn_error $? "cannot run $SHELL $ac_aux_dir/config.sub" "$LINENO" 5 -{ echo "$as_me:$LINENO: checking build system type" >&5 -echo $ECHO_N "checking build system type... $ECHO_C" >&6; } -if test "${ac_cv_build+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking build system type" >&5 +$as_echo_n "checking build system type... " >&6; } +if ${ac_cv_build+:} false; then : + $as_echo_n "(cached) " >&6 else ac_build_alias=$build_alias test "x$ac_build_alias" = x && ac_build_alias=`$SHELL "$ac_aux_dir/config.guess"` test "x$ac_build_alias" = x && - { { echo "$as_me:$LINENO: error: cannot guess build type; you must specify one" >&5 -echo "$as_me: error: cannot guess build type; you must specify one" >&2;} - { (exit 1); exit 1; }; } + as_fn_error $? "cannot guess build type; you must specify one" "$LINENO" 5 ac_cv_build=`$SHELL "$ac_aux_dir/config.sub" $ac_build_alias` || - { { echo "$as_me:$LINENO: error: $SHELL $ac_aux_dir/config.sub $ac_build_alias failed" >&5 -echo "$as_me: error: $SHELL $ac_aux_dir/config.sub $ac_build_alias failed" >&2;} - { (exit 1); exit 1; }; } + as_fn_error $? "$SHELL $ac_aux_dir/config.sub $ac_build_alias failed" "$LINENO" 5 fi -{ echo "$as_me:$LINENO: result: $ac_cv_build" >&5 -echo "${ECHO_T}$ac_cv_build" >&6; } +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_build" >&5 +$as_echo "$ac_cv_build" >&6; } case $ac_cv_build in *-*-*) ;; -*) { { echo "$as_me:$LINENO: error: invalid value of canonical build" >&5 -echo "$as_me: error: invalid value of canonical build" >&2;} - { (exit 1); exit 1; }; };; +*) as_fn_error $? "invalid value of canonical build" "$LINENO" 5;; esac build=$ac_cv_build ac_save_IFS=$IFS; IFS='-' @@ -4071,28 +4189,24 @@ IFS=$ac_save_IFS case $build_os in *\ *) build_os=`echo "$build_os" | sed 's/ /-/g'`;; esac -{ echo "$as_me:$LINENO: checking host system type" >&5 -echo $ECHO_N "checking host system type... $ECHO_C" >&6; } -if test "${ac_cv_host+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking host system type" >&5 +$as_echo_n "checking host system type... " >&6; } +if ${ac_cv_host+:} false; then : + $as_echo_n "(cached) " >&6 else if test "x$host_alias" = x; then ac_cv_host=$ac_cv_build else ac_cv_host=`$SHELL "$ac_aux_dir/config.sub" $host_alias` || - { { echo "$as_me:$LINENO: error: $SHELL $ac_aux_dir/config.sub $host_alias failed" >&5 -echo "$as_me: error: $SHELL $ac_aux_dir/config.sub $host_alias failed" >&2;} - { (exit 1); exit 1; }; } + as_fn_error $? "$SHELL $ac_aux_dir/config.sub $host_alias failed" "$LINENO" 5 fi fi -{ echo "$as_me:$LINENO: result: $ac_cv_host" >&5 -echo "${ECHO_T}$ac_cv_host" >&6; } +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_host" >&5 +$as_echo "$ac_cv_host" >&6; } case $ac_cv_host in *-*-*) ;; -*) { { echo "$as_me:$LINENO: error: invalid value of canonical host" >&5 -echo "$as_me: error: invalid value of canonical host" >&2;} - { (exit 1); exit 1; }; };; +*) as_fn_error $? "invalid value of canonical host" "$LINENO" 5;; esac host=$ac_cv_host ac_save_IFS=$IFS; IFS='-' @@ -4108,51 +4222,115 @@ IFS=$ac_save_IFS case $host_os in *\ *) host_os=`echo "$host_os" | sed 's/ /-/g'`;; esac -{ echo "$as_me:$LINENO: checking for a sed that does not truncate output" >&5 -echo $ECHO_N "checking for a sed that does not truncate output... $ECHO_C" >&6; } -if test "${ac_cv_path_SED+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 +# Backslashify metacharacters that are still active within +# double-quoted strings. +sed_quote_subst='s/\(["`$\\]\)/\\\1/g' + +# Same as above, but do not quote variable references. +double_quote_subst='s/\(["`\\]\)/\\\1/g' + +# Sed substitution to delay expansion of an escaped shell variable in a +# double_quote_subst'ed string. +delay_variable_subst='s/\\\\\\\\\\\$/\\\\\\$/g' + +# Sed substitution to delay expansion of an escaped single quote. +delay_single_quote_subst='s/'\''/'\'\\\\\\\'\''/g' + +# Sed substitution to avoid accidental globbing in evaled expressions +no_glob_subst='s/\*/\\\*/g' + +ECHO='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' +ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO +ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO$ECHO + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to print strings" >&5 +$as_echo_n "checking how to print strings... " >&6; } +# Test print first, because it will be a builtin if present. +if test "X`( print -r -- -n ) 2>/dev/null`" = X-n && \ + test "X`print -r -- $ECHO 2>/dev/null`" = "X$ECHO"; then + ECHO='print -r --' +elif test "X`printf %s $ECHO 2>/dev/null`" = "X$ECHO"; then + ECHO='printf %s\n' +else + # Use this function as a fallback that always works. + func_fallback_echo () + { + eval 'cat <<_LTECHO_EOF +$1 +_LTECHO_EOF' + } + ECHO='func_fallback_echo' +fi + +# func_echo_all arg... +# Invoke $ECHO with all args, space-separated. +func_echo_all () +{ + $ECHO "" +} + +case "$ECHO" in + printf*) { $as_echo "$as_me:${as_lineno-$LINENO}: result: printf" >&5 +$as_echo "printf" >&6; } ;; + print*) { $as_echo "$as_me:${as_lineno-$LINENO}: result: print -r" >&5 +$as_echo "print -r" >&6; } ;; + *) { $as_echo "$as_me:${as_lineno-$LINENO}: result: cat" >&5 +$as_echo "cat" >&6; } ;; +esac + + + + + + + + + + + + + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for a sed that does not truncate output" >&5 +$as_echo_n "checking for a sed that does not truncate output... " >&6; } +if ${ac_cv_path_SED+:} false; then : + $as_echo_n "(cached) " >&6 else ac_script=s/aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb/ for ac_i in 1 2 3 4 5 6 7; do ac_script="$ac_script$as_nl$ac_script" done - echo "$ac_script" | sed 99q >conftest.sed - $as_unset ac_script || ac_script= - # Extract the first word of "sed gsed" to use in msg output -if test -z "$SED"; then -set dummy sed gsed; ac_prog_name=$2 -if test "${ac_cv_path_SED+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else + echo "$ac_script" 2>/dev/null | sed 99q >conftest.sed + { ac_script=; unset ac_script;} + if test -z "$SED"; then ac_path_SED_found=false -# Loop through the user's path and test for each of PROGNAME-LIST -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR + # Loop through the user's path and test for each of PROGNAME-LIST + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. - for ac_prog in sed gsed; do - for ac_exec_ext in '' $ac_executable_extensions; do - ac_path_SED="$as_dir/$ac_prog$ac_exec_ext" - { test -f "$ac_path_SED" && $as_test_x "$ac_path_SED"; } || continue - # Check for GNU ac_path_SED and select it if it is found. + for ac_prog in sed gsed; do + for ac_exec_ext in '' $ac_executable_extensions; do + ac_path_SED="$as_dir/$ac_prog$ac_exec_ext" + { test -f "$ac_path_SED" && $as_test_x "$ac_path_SED"; } || continue +# Check for GNU ac_path_SED and select it if it is found. # Check for GNU $ac_path_SED case `"$ac_path_SED" --version 2>&1` in *GNU*) ac_cv_path_SED="$ac_path_SED" ac_path_SED_found=:;; *) ac_count=0 - echo $ECHO_N "0123456789$ECHO_C" >"conftest.in" + $as_echo_n 0123456789 >"conftest.in" while : do cat "conftest.in" "conftest.in" >"conftest.tmp" mv "conftest.tmp" "conftest.in" cp "conftest.in" "conftest.nl" - echo '' >> "conftest.nl" + $as_echo '' >> "conftest.nl" "$ac_path_SED" -f conftest.sed < "conftest.nl" >"conftest.out" 2>/dev/null || break diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break - ac_count=`expr $ac_count + 1` + as_fn_arith $ac_count + 1 && ac_count=$as_val if test $ac_count -gt ${ac_path_SED_max-0}; then # Best one so far, save it but keep looking for a better one ac_cv_path_SED="$ac_path_SED" @@ -4164,31 +4342,21 @@ case `"$ac_path_SED" --version 2>&1` in rm -f conftest.in conftest.tmp conftest.nl conftest.out;; esac - - $ac_path_SED_found && break 3 + $ac_path_SED_found && break 3 + done + done done -done - -done IFS=$as_save_IFS - - -fi - -SED="$ac_cv_path_SED" -if test -z "$SED"; then - { { echo "$as_me:$LINENO: error: no acceptable $ac_prog_name could be found in \$PATH" >&5 -echo "$as_me: error: no acceptable $ac_prog_name could be found in \$PATH" >&2;} - { (exit 1); exit 1; }; } -fi - + if test -z "$ac_cv_path_SED"; then + as_fn_error $? "no acceptable sed could be found in \$PATH" "$LINENO" 5 + fi else ac_cv_path_SED=$SED fi fi -{ echo "$as_me:$LINENO: result: $ac_cv_path_SED" >&5 -echo "${ECHO_T}$ac_cv_path_SED" >&6; } +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_SED" >&5 +$as_echo "$ac_cv_path_SED" >&6; } SED="$ac_cv_path_SED" rm -f conftest.sed @@ -4205,45 +4373,40 @@ Xsed="$SED -e 1s/^X//" -{ echo "$as_me:$LINENO: checking for grep that handles long lines and -e" >&5 -echo $ECHO_N "checking for grep that handles long lines and -e... $ECHO_C" >&6; } -if test "${ac_cv_path_GREP+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - # Extract the first word of "grep ggrep" to use in msg output -if test -z "$GREP"; then -set dummy grep ggrep; ac_prog_name=$2 -if test "${ac_cv_path_GREP+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for grep that handles long lines and -e" >&5 +$as_echo_n "checking for grep that handles long lines and -e... " >&6; } +if ${ac_cv_path_GREP+:} false; then : + $as_echo_n "(cached) " >&6 else + if test -z "$GREP"; then ac_path_GREP_found=false -# Loop through the user's path and test for each of PROGNAME-LIST -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR + # Loop through the user's path and test for each of PROGNAME-LIST + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. - for ac_prog in grep ggrep; do - for ac_exec_ext in '' $ac_executable_extensions; do - ac_path_GREP="$as_dir/$ac_prog$ac_exec_ext" - { test -f "$ac_path_GREP" && $as_test_x "$ac_path_GREP"; } || continue - # Check for GNU ac_path_GREP and select it if it is found. + for ac_prog in grep ggrep; do + for ac_exec_ext in '' $ac_executable_extensions; do + ac_path_GREP="$as_dir/$ac_prog$ac_exec_ext" + { test -f "$ac_path_GREP" && $as_test_x "$ac_path_GREP"; } || continue +# Check for GNU ac_path_GREP and select it if it is found. # Check for GNU $ac_path_GREP case `"$ac_path_GREP" --version 2>&1` in *GNU*) ac_cv_path_GREP="$ac_path_GREP" ac_path_GREP_found=:;; *) ac_count=0 - echo $ECHO_N "0123456789$ECHO_C" >"conftest.in" + $as_echo_n 0123456789 >"conftest.in" while : do cat "conftest.in" "conftest.in" >"conftest.tmp" mv "conftest.tmp" "conftest.in" cp "conftest.in" "conftest.nl" - echo 'GREP' >> "conftest.nl" + $as_echo 'GREP' >> "conftest.nl" "$ac_path_GREP" -e 'GREP$' -e '-(cannot match)-' < "conftest.nl" >"conftest.out" 2>/dev/null || break diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break - ac_count=`expr $ac_count + 1` + as_fn_arith $ac_count + 1 && ac_count=$as_val if test $ac_count -gt ${ac_path_GREP_max-0}; then # Best one so far, save it but keep looking for a better one ac_cv_path_GREP="$ac_path_GREP" @@ -4255,77 +4418,61 @@ case `"$ac_path_GREP" --version 2>&1` in rm -f conftest.in conftest.tmp conftest.nl conftest.out;; esac - - $ac_path_GREP_found && break 3 + $ac_path_GREP_found && break 3 + done + done done -done - -done IFS=$as_save_IFS - - -fi - -GREP="$ac_cv_path_GREP" -if test -z "$GREP"; then - { { echo "$as_me:$LINENO: error: no acceptable $ac_prog_name could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" >&5 -echo "$as_me: error: no acceptable $ac_prog_name could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" >&2;} - { (exit 1); exit 1; }; } -fi - + if test -z "$ac_cv_path_GREP"; then + as_fn_error $? "no acceptable grep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5 + fi else ac_cv_path_GREP=$GREP fi - fi -{ echo "$as_me:$LINENO: result: $ac_cv_path_GREP" >&5 -echo "${ECHO_T}$ac_cv_path_GREP" >&6; } +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_GREP" >&5 +$as_echo "$ac_cv_path_GREP" >&6; } GREP="$ac_cv_path_GREP" -{ echo "$as_me:$LINENO: checking for egrep" >&5 -echo $ECHO_N "checking for egrep... $ECHO_C" >&6; } -if test "${ac_cv_path_EGREP+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for egrep" >&5 +$as_echo_n "checking for egrep... " >&6; } +if ${ac_cv_path_EGREP+:} false; then : + $as_echo_n "(cached) " >&6 else if echo a | $GREP -E '(a|b)' >/dev/null 2>&1 then ac_cv_path_EGREP="$GREP -E" else - # Extract the first word of "egrep" to use in msg output -if test -z "$EGREP"; then -set dummy egrep; ac_prog_name=$2 -if test "${ac_cv_path_EGREP+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else + if test -z "$EGREP"; then ac_path_EGREP_found=false -# Loop through the user's path and test for each of PROGNAME-LIST -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR + # Loop through the user's path and test for each of PROGNAME-LIST + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. - for ac_prog in egrep; do - for ac_exec_ext in '' $ac_executable_extensions; do - ac_path_EGREP="$as_dir/$ac_prog$ac_exec_ext" - { test -f "$ac_path_EGREP" && $as_test_x "$ac_path_EGREP"; } || continue - # Check for GNU ac_path_EGREP and select it if it is found. + for ac_prog in egrep; do + for ac_exec_ext in '' $ac_executable_extensions; do + ac_path_EGREP="$as_dir/$ac_prog$ac_exec_ext" + { test -f "$ac_path_EGREP" && $as_test_x "$ac_path_EGREP"; } || continue +# Check for GNU ac_path_EGREP and select it if it is found. # Check for GNU $ac_path_EGREP case `"$ac_path_EGREP" --version 2>&1` in *GNU*) ac_cv_path_EGREP="$ac_path_EGREP" ac_path_EGREP_found=:;; *) ac_count=0 - echo $ECHO_N "0123456789$ECHO_C" >"conftest.in" + $as_echo_n 0123456789 >"conftest.in" while : do cat "conftest.in" "conftest.in" >"conftest.tmp" mv "conftest.tmp" "conftest.in" cp "conftest.in" "conftest.nl" - echo 'EGREP' >> "conftest.nl" + $as_echo 'EGREP' >> "conftest.nl" "$ac_path_EGREP" 'EGREP$' < "conftest.nl" >"conftest.out" 2>/dev/null || break diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break - ac_count=`expr $ac_count + 1` + as_fn_arith $ac_count + 1 && ac_count=$as_val if test $ac_count -gt ${ac_path_EGREP_max-0}; then # Best one so far, save it but keep looking for a better one ac_cv_path_EGREP="$ac_path_EGREP" @@ -4337,78 +4484,62 @@ case `"$ac_path_EGREP" --version 2>&1` in rm -f conftest.in conftest.tmp conftest.nl conftest.out;; esac - - $ac_path_EGREP_found && break 3 + $ac_path_EGREP_found && break 3 + done + done done -done - -done IFS=$as_save_IFS - - -fi - -EGREP="$ac_cv_path_EGREP" -if test -z "$EGREP"; then - { { echo "$as_me:$LINENO: error: no acceptable $ac_prog_name could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" >&5 -echo "$as_me: error: no acceptable $ac_prog_name could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" >&2;} - { (exit 1); exit 1; }; } -fi - + if test -z "$ac_cv_path_EGREP"; then + as_fn_error $? "no acceptable egrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5 + fi else ac_cv_path_EGREP=$EGREP fi - fi fi -{ echo "$as_me:$LINENO: result: $ac_cv_path_EGREP" >&5 -echo "${ECHO_T}$ac_cv_path_EGREP" >&6; } +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_EGREP" >&5 +$as_echo "$ac_cv_path_EGREP" >&6; } EGREP="$ac_cv_path_EGREP" -{ echo "$as_me:$LINENO: checking for fgrep" >&5 -echo $ECHO_N "checking for fgrep... $ECHO_C" >&6; } -if test "${ac_cv_path_FGREP+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for fgrep" >&5 +$as_echo_n "checking for fgrep... " >&6; } +if ${ac_cv_path_FGREP+:} false; then : + $as_echo_n "(cached) " >&6 else if echo 'ab*c' | $GREP -F 'ab*c' >/dev/null 2>&1 then ac_cv_path_FGREP="$GREP -F" else - # Extract the first word of "fgrep" to use in msg output -if test -z "$FGREP"; then -set dummy fgrep; ac_prog_name=$2 -if test "${ac_cv_path_FGREP+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else + if test -z "$FGREP"; then ac_path_FGREP_found=false -# Loop through the user's path and test for each of PROGNAME-LIST -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR + # Loop through the user's path and test for each of PROGNAME-LIST + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. - for ac_prog in fgrep; do - for ac_exec_ext in '' $ac_executable_extensions; do - ac_path_FGREP="$as_dir/$ac_prog$ac_exec_ext" - { test -f "$ac_path_FGREP" && $as_test_x "$ac_path_FGREP"; } || continue - # Check for GNU ac_path_FGREP and select it if it is found. + for ac_prog in fgrep; do + for ac_exec_ext in '' $ac_executable_extensions; do + ac_path_FGREP="$as_dir/$ac_prog$ac_exec_ext" + { test -f "$ac_path_FGREP" && $as_test_x "$ac_path_FGREP"; } || continue +# Check for GNU ac_path_FGREP and select it if it is found. # Check for GNU $ac_path_FGREP case `"$ac_path_FGREP" --version 2>&1` in *GNU*) ac_cv_path_FGREP="$ac_path_FGREP" ac_path_FGREP_found=:;; *) ac_count=0 - echo $ECHO_N "0123456789$ECHO_C" >"conftest.in" + $as_echo_n 0123456789 >"conftest.in" while : do cat "conftest.in" "conftest.in" >"conftest.tmp" mv "conftest.tmp" "conftest.in" cp "conftest.in" "conftest.nl" - echo 'FGREP' >> "conftest.nl" + $as_echo 'FGREP' >> "conftest.nl" "$ac_path_FGREP" FGREP < "conftest.nl" >"conftest.out" 2>/dev/null || break diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break - ac_count=`expr $ac_count + 1` + as_fn_arith $ac_count + 1 && ac_count=$as_val if test $ac_count -gt ${ac_path_FGREP_max-0}; then # Best one so far, save it but keep looking for a better one ac_cv_path_FGREP="$ac_path_FGREP" @@ -4420,33 +4551,22 @@ case `"$ac_path_FGREP" --version 2>&1` in rm -f conftest.in conftest.tmp conftest.nl conftest.out;; esac - - $ac_path_FGREP_found && break 3 + $ac_path_FGREP_found && break 3 + done + done done -done - -done IFS=$as_save_IFS - - -fi - -FGREP="$ac_cv_path_FGREP" -if test -z "$FGREP"; then - { { echo "$as_me:$LINENO: error: no acceptable $ac_prog_name could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" >&5 -echo "$as_me: error: no acceptable $ac_prog_name could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" >&2;} - { (exit 1); exit 1; }; } -fi - + if test -z "$ac_cv_path_FGREP"; then + as_fn_error $? "no acceptable fgrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5 + fi else ac_cv_path_FGREP=$FGREP fi - fi fi -{ echo "$as_me:$LINENO: result: $ac_cv_path_FGREP" >&5 -echo "${ECHO_T}$ac_cv_path_FGREP" >&6; } +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_FGREP" >&5 +$as_echo "$ac_cv_path_FGREP" >&6; } FGREP="$ac_cv_path_FGREP" @@ -4471,7 +4591,7 @@ test -z "$GREP" && GREP=grep # Check whether --with-gnu-ld was given. -if test "${with_gnu_ld+set}" = set; then +if test "${with_gnu_ld+set}" = set; then : withval=$with_gnu_ld; test "$withval" = no || with_gnu_ld=yes else with_gnu_ld=no @@ -4480,8 +4600,8 @@ fi ac_prog=ld if test "$GCC" = yes; then # Check if gcc -print-prog-name=ld gives a path. - { echo "$as_me:$LINENO: checking for ld used by $CC" >&5 -echo $ECHO_N "checking for ld used by $CC... $ECHO_C" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ld used by $CC" >&5 +$as_echo_n "checking for ld used by $CC... " >&6; } case $host in *-*-mingw*) # gcc leaves a trailing carriage return which upsets mingw @@ -4510,14 +4630,14 @@ echo $ECHO_N "checking for ld used by $CC... $ECHO_C" >&6; } ;; esac elif test "$with_gnu_ld" = yes; then - { echo "$as_me:$LINENO: checking for GNU ld" >&5 -echo $ECHO_N "checking for GNU ld... $ECHO_C" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GNU ld" >&5 +$as_echo_n "checking for GNU ld... " >&6; } else - { echo "$as_me:$LINENO: checking for non-GNU ld" >&5 -echo $ECHO_N "checking for non-GNU ld... $ECHO_C" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for non-GNU ld" >&5 +$as_echo_n "checking for non-GNU ld... " >&6; } fi -if test "${lt_cv_path_LD+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 +if ${lt_cv_path_LD+:} false; then : + $as_echo_n "(cached) " >&6 else if test -z "$LD"; then lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR @@ -4547,19 +4667,17 @@ fi LD="$lt_cv_path_LD" if test -n "$LD"; then - { echo "$as_me:$LINENO: result: $LD" >&5 -echo "${ECHO_T}$LD" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LD" >&5 +$as_echo "$LD" >&6; } else - { echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } fi -test -z "$LD" && { { echo "$as_me:$LINENO: error: no acceptable ld found in \$PATH" >&5 -echo "$as_me: error: no acceptable ld found in \$PATH" >&2;} - { (exit 1); exit 1; }; } -{ echo "$as_me:$LINENO: checking if the linker ($LD) is GNU ld" >&5 -echo $ECHO_N "checking if the linker ($LD) is GNU ld... $ECHO_C" >&6; } -if test "${lt_cv_prog_gnu_ld+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 +test -z "$LD" && as_fn_error $? "no acceptable ld found in \$PATH" "$LINENO" 5 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if the linker ($LD) is GNU ld" >&5 +$as_echo_n "checking if the linker ($LD) is GNU ld... " >&6; } +if ${lt_cv_prog_gnu_ld+:} false; then : + $as_echo_n "(cached) " >&6 else # I'd rather use --version here, but apparently some GNU lds only accept -v. case `$LD -v 2>&1 &1 &5 -echo "${ECHO_T}$lt_cv_prog_gnu_ld" >&6; } +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_gnu_ld" >&5 +$as_echo "$lt_cv_prog_gnu_ld" >&6; } with_gnu_ld=$lt_cv_prog_gnu_ld @@ -4583,10 +4701,10 @@ with_gnu_ld=$lt_cv_prog_gnu_ld -{ echo "$as_me:$LINENO: checking for BSD- or MS-compatible name lister (nm)" >&5 -echo $ECHO_N "checking for BSD- or MS-compatible name lister (nm)... $ECHO_C" >&6; } -if test "${lt_cv_path_NM+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for BSD- or MS-compatible name lister (nm)" >&5 +$as_echo_n "checking for BSD- or MS-compatible name lister (nm)... " >&6; } +if ${lt_cv_path_NM+:} false; then : + $as_echo_n "(cached) " >&6 else if test -n "$NM"; then # Let the user override the test. @@ -4632,21 +4750,24 @@ else : ${lt_cv_path_NM=no} fi fi -{ echo "$as_me:$LINENO: result: $lt_cv_path_NM" >&5 -echo "${ECHO_T}$lt_cv_path_NM" >&6; } +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_path_NM" >&5 +$as_echo "$lt_cv_path_NM" >&6; } if test "$lt_cv_path_NM" != "no"; then NM="$lt_cv_path_NM" else # Didn't find any BSD compatible name lister, look for dumpbin. - if test -n "$ac_tool_prefix"; then - for ac_prog in "dumpbin -symbols" "link -dump -symbols" + if test -n "$DUMPBIN"; then : + # Let the user override the test. + else + if test -n "$ac_tool_prefix"; then + for ac_prog in dumpbin "link -dump" do # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. set dummy $ac_tool_prefix$ac_prog; ac_word=$2 -{ echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } -if test "${ac_cv_prog_DUMPBIN+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_DUMPBIN+:} false; then : + $as_echo_n "(cached) " >&6 else if test -n "$DUMPBIN"; then ac_cv_prog_DUMPBIN="$DUMPBIN" # Let the user override the test. @@ -4656,25 +4777,25 @@ for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do + for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_DUMPBIN="$ac_tool_prefix$ac_prog" - echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done -done + done IFS=$as_save_IFS fi fi DUMPBIN=$ac_cv_prog_DUMPBIN if test -n "$DUMPBIN"; then - { echo "$as_me:$LINENO: result: $DUMPBIN" >&5 -echo "${ECHO_T}$DUMPBIN" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DUMPBIN" >&5 +$as_echo "$DUMPBIN" >&6; } else - { echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } fi @@ -4683,14 +4804,14 @@ fi fi if test -z "$DUMPBIN"; then ac_ct_DUMPBIN=$DUMPBIN - for ac_prog in "dumpbin -symbols" "link -dump -symbols" + for ac_prog in dumpbin "link -dump" do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 -{ echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } -if test "${ac_cv_prog_ac_ct_DUMPBIN+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_ac_ct_DUMPBIN+:} false; then : + $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_DUMPBIN"; then ac_cv_prog_ac_ct_DUMPBIN="$ac_ct_DUMPBIN" # Let the user override the test. @@ -4700,25 +4821,25 @@ for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do + for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_ac_ct_DUMPBIN="$ac_prog" - echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done -done + done IFS=$as_save_IFS fi fi ac_ct_DUMPBIN=$ac_cv_prog_ac_ct_DUMPBIN if test -n "$ac_ct_DUMPBIN"; then - { echo "$as_me:$LINENO: result: $ac_ct_DUMPBIN" >&5 -echo "${ECHO_T}$ac_ct_DUMPBIN" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DUMPBIN" >&5 +$as_echo "$ac_ct_DUMPBIN" >&6; } else - { echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } fi @@ -4730,18 +4851,23 @@ done else case $cross_compiling:$ac_tool_warned in yes:) -{ echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools -whose name does not start with the host triplet. If you think this -configuration is useful to you, please write to autoconf@gnu.org." >&5 -echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools -whose name does not start with the host triplet. If you think this -configuration is useful to you, please write to autoconf@gnu.org." >&2;} +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac DUMPBIN=$ac_ct_DUMPBIN fi fi + case `$DUMPBIN -symbols /dev/null 2>&1 | sed '1q'` in + *COFF*) + DUMPBIN="$DUMPBIN -symbols" + ;; + *) + DUMPBIN=: + ;; + esac + fi if test "$DUMPBIN" != ":"; then NM="$DUMPBIN" @@ -4754,45 +4880,45 @@ test -z "$NM" && NM=nm -{ echo "$as_me:$LINENO: checking the name lister ($NM) interface" >&5 -echo $ECHO_N "checking the name lister ($NM) interface... $ECHO_C" >&6; } -if test "${lt_cv_nm_interface+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking the name lister ($NM) interface" >&5 +$as_echo_n "checking the name lister ($NM) interface... " >&6; } +if ${lt_cv_nm_interface+:} false; then : + $as_echo_n "(cached) " >&6 else lt_cv_nm_interface="BSD nm" echo "int some_variable = 0;" > conftest.$ac_ext - (eval echo "\"\$as_me:4764: $ac_compile\"" >&5) + (eval echo "\"\$as_me:$LINENO: $ac_compile\"" >&5) (eval "$ac_compile" 2>conftest.err) cat conftest.err >&5 - (eval echo "\"\$as_me:4767: $NM \\\"conftest.$ac_objext\\\"\"" >&5) + (eval echo "\"\$as_me:$LINENO: $NM \\\"conftest.$ac_objext\\\"\"" >&5) (eval "$NM \"conftest.$ac_objext\"" 2>conftest.err > conftest.out) cat conftest.err >&5 - (eval echo "\"\$as_me:4770: output\"" >&5) + (eval echo "\"\$as_me:$LINENO: output\"" >&5) cat conftest.out >&5 if $GREP 'External.*some_variable' conftest.out > /dev/null; then lt_cv_nm_interface="MS dumpbin" fi rm -f conftest* fi -{ echo "$as_me:$LINENO: result: $lt_cv_nm_interface" >&5 -echo "${ECHO_T}$lt_cv_nm_interface" >&6; } +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_nm_interface" >&5 +$as_echo "$lt_cv_nm_interface" >&6; } -{ echo "$as_me:$LINENO: checking whether ln -s works" >&5 -echo $ECHO_N "checking whether ln -s works... $ECHO_C" >&6; } +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ln -s works" >&5 +$as_echo_n "checking whether ln -s works... " >&6; } LN_S=$as_ln_s if test "$LN_S" = "ln -s"; then - { echo "$as_me:$LINENO: result: yes" >&5 -echo "${ECHO_T}yes" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } else - { echo "$as_me:$LINENO: result: no, using $LN_S" >&5 -echo "${ECHO_T}no, using $LN_S" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no, using $LN_S" >&5 +$as_echo "no, using $LN_S" >&6; } fi # find the maximum length of command line arguments -{ echo "$as_me:$LINENO: checking the maximum length of command line arguments" >&5 -echo $ECHO_N "checking the maximum length of command line arguments... $ECHO_C" >&6; } -if test "${lt_cv_sys_max_cmd_len+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking the maximum length of command line arguments" >&5 +$as_echo_n "checking the maximum length of command line arguments... " >&6; } +if ${lt_cv_sys_max_cmd_len+:} false; then : + $as_echo_n "(cached) " >&6 else i=0 teststring="ABCD" @@ -4813,7 +4939,7 @@ else lt_cv_sys_max_cmd_len=-1; ;; - cygwin* | mingw*) + cygwin* | mingw* | cegcc*) # On Win9x/ME, this test blows up -- it succeeds, but takes # about 5 minutes as the teststring grows exponentially. # Worse, since 9x/ME are not pre-emptively multitasking, @@ -4824,6 +4950,11 @@ else lt_cv_sys_max_cmd_len=8192; ;; + mint*) + # On MiNT this can take a long time and run out of memory. + lt_cv_sys_max_cmd_len=8192; + ;; + amigaos*) # On AmigaOS with pdksh, this test takes hours, literally. # So we just punt and use a minimum line length of 8192. @@ -4849,6 +4980,11 @@ else lt_cv_sys_max_cmd_len=196608 ;; + os2*) + # The test takes a long time on OS/2. + lt_cv_sys_max_cmd_len=8192 + ;; + osf*) # Dr. Hans Ekkehard Plesser reports seeing a kernel panic running configure # due to this test when exec_disable_arg_limit is 1 on Tru64. It is not @@ -4888,8 +5024,8 @@ else # If test is not a shell built-in, we'll probably end up computing a # maximum length that is only half of the actual maximum length, but # we can't tell. - while { test "X"`$SHELL $0 --fallback-echo "X$teststring$teststring" 2>/dev/null` \ - = "XX$teststring$teststring"; } >/dev/null 2>&1 && + while { test "X"`env echo "$teststring$teststring" 2>/dev/null` \ + = "X$teststring$teststring"; } >/dev/null 2>&1 && test $i != 17 # 1/2 MB should be enough do i=`expr $i + 1` @@ -4909,11 +5045,11 @@ else fi if test -n $lt_cv_sys_max_cmd_len ; then - { echo "$as_me:$LINENO: result: $lt_cv_sys_max_cmd_len" >&5 -echo "${ECHO_T}$lt_cv_sys_max_cmd_len" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_sys_max_cmd_len" >&5 +$as_echo "$lt_cv_sys_max_cmd_len" >&6; } else - { echo "$as_me:$LINENO: result: none" >&5 -echo "${ECHO_T}none" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: none" >&5 +$as_echo "none" >&6; } fi max_cmd_len=$lt_cv_sys_max_cmd_len @@ -4926,28 +5062,28 @@ max_cmd_len=$lt_cv_sys_max_cmd_len : ${MV="mv -f"} : ${RM="rm -f"} -{ echo "$as_me:$LINENO: checking whether the shell understands some XSI constructs" >&5 -echo $ECHO_N "checking whether the shell understands some XSI constructs... $ECHO_C" >&6; } +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the shell understands some XSI constructs" >&5 +$as_echo_n "checking whether the shell understands some XSI constructs... " >&6; } # Try some XSI features xsi_shell=no ( _lt_dummy="a/b/c" - test "${_lt_dummy##*/},${_lt_dummy%/*},"${_lt_dummy%"$_lt_dummy"}, \ - = c,a/b,, \ + test "${_lt_dummy##*/},${_lt_dummy%/*},${_lt_dummy#??}"${_lt_dummy%"$_lt_dummy"}, \ + = c,a/b,b/c, \ && eval 'test $(( 1 + 1 )) -eq 2 \ && test "${#_lt_dummy}" -eq 5' ) >/dev/null 2>&1 \ && xsi_shell=yes -{ echo "$as_me:$LINENO: result: $xsi_shell" >&5 -echo "${ECHO_T}$xsi_shell" >&6; } +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $xsi_shell" >&5 +$as_echo "$xsi_shell" >&6; } -{ echo "$as_me:$LINENO: checking whether the shell understands \"+=\"" >&5 -echo $ECHO_N "checking whether the shell understands \"+=\"... $ECHO_C" >&6; } +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the shell understands \"+=\"" >&5 +$as_echo_n "checking whether the shell understands \"+=\"... " >&6; } lt_shell_append=no ( foo=bar; set foo baz; eval "$1+=\$2" && test "$foo" = barbaz ) \ >/dev/null 2>&1 \ && lt_shell_append=yes -{ echo "$as_me:$LINENO: result: $lt_shell_append" >&5 -echo "${ECHO_T}$lt_shell_append" >&6; } +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_shell_append" >&5 +$as_echo "$lt_shell_append" >&6; } if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then @@ -4981,15 +5117,89 @@ esac -{ echo "$as_me:$LINENO: checking for $LD option to reload object files" >&5 -echo $ECHO_N "checking for $LD option to reload object files... $ECHO_C" >&6; } -if test "${lt_cv_ld_reload_flag+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to convert $build file names to $host format" >&5 +$as_echo_n "checking how to convert $build file names to $host format... " >&6; } +if ${lt_cv_to_host_file_cmd+:} false; then : + $as_echo_n "(cached) " >&6 +else + case $host in + *-*-mingw* ) + case $build in + *-*-mingw* ) # actually msys + lt_cv_to_host_file_cmd=func_convert_file_msys_to_w32 + ;; + *-*-cygwin* ) + lt_cv_to_host_file_cmd=func_convert_file_cygwin_to_w32 + ;; + * ) # otherwise, assume *nix + lt_cv_to_host_file_cmd=func_convert_file_nix_to_w32 + ;; + esac + ;; + *-*-cygwin* ) + case $build in + *-*-mingw* ) # actually msys + lt_cv_to_host_file_cmd=func_convert_file_msys_to_cygwin + ;; + *-*-cygwin* ) + lt_cv_to_host_file_cmd=func_convert_file_noop + ;; + * ) # otherwise, assume *nix + lt_cv_to_host_file_cmd=func_convert_file_nix_to_cygwin + ;; + esac + ;; + * ) # unhandled hosts (and "normal" native builds) + lt_cv_to_host_file_cmd=func_convert_file_noop + ;; +esac + +fi + +to_host_file_cmd=$lt_cv_to_host_file_cmd +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_to_host_file_cmd" >&5 +$as_echo "$lt_cv_to_host_file_cmd" >&6; } + + + + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to convert $build file names to toolchain format" >&5 +$as_echo_n "checking how to convert $build file names to toolchain format... " >&6; } +if ${lt_cv_to_tool_file_cmd+:} false; then : + $as_echo_n "(cached) " >&6 +else + #assume ordinary cross tools, or native build. +lt_cv_to_tool_file_cmd=func_convert_file_noop +case $host in + *-*-mingw* ) + case $build in + *-*-mingw* ) # actually msys + lt_cv_to_tool_file_cmd=func_convert_file_msys_to_w32 + ;; + esac + ;; +esac + +fi + +to_tool_file_cmd=$lt_cv_to_tool_file_cmd +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_to_tool_file_cmd" >&5 +$as_echo "$lt_cv_to_tool_file_cmd" >&6; } + + + + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $LD option to reload object files" >&5 +$as_echo_n "checking for $LD option to reload object files... " >&6; } +if ${lt_cv_ld_reload_flag+:} false; then : + $as_echo_n "(cached) " >&6 else lt_cv_ld_reload_flag='-r' fi -{ echo "$as_me:$LINENO: result: $lt_cv_ld_reload_flag" >&5 -echo "${ECHO_T}$lt_cv_ld_reload_flag" >&6; } +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ld_reload_flag" >&5 +$as_echo "$lt_cv_ld_reload_flag" >&6; } reload_flag=$lt_cv_ld_reload_flag case $reload_flag in "" | " "*) ;; @@ -4997,6 +5207,11 @@ case $reload_flag in esac reload_cmds='$LD$reload_flag -o $output$reload_objs' case $host_os in + cygwin* | mingw* | pw32* | cegcc*) + if test "$GCC" != yes; then + reload_cmds=false + fi + ;; darwin*) if test "$GCC" = yes; then reload_cmds='$LTCC $LTCFLAGS -nostdlib ${wl}-r -o $output$reload_objs' @@ -5014,11 +5229,112 @@ esac +if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}objdump", so it can be a program name with args. +set dummy ${ac_tool_prefix}objdump; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_OBJDUMP+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$OBJDUMP"; then + ac_cv_prog_OBJDUMP="$OBJDUMP" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_OBJDUMP="${ac_tool_prefix}objdump" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +OBJDUMP=$ac_cv_prog_OBJDUMP +if test -n "$OBJDUMP"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $OBJDUMP" >&5 +$as_echo "$OBJDUMP" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_OBJDUMP"; then + ac_ct_OBJDUMP=$OBJDUMP + # Extract the first word of "objdump", so it can be a program name with args. +set dummy objdump; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_ac_ct_OBJDUMP+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_OBJDUMP"; then + ac_cv_prog_ac_ct_OBJDUMP="$ac_ct_OBJDUMP" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_ac_ct_OBJDUMP="objdump" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_OBJDUMP=$ac_cv_prog_ac_ct_OBJDUMP +if test -n "$ac_ct_OBJDUMP"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OBJDUMP" >&5 +$as_echo "$ac_ct_OBJDUMP" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + if test "x$ac_ct_OBJDUMP" = x; then + OBJDUMP="false" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + OBJDUMP=$ac_ct_OBJDUMP + fi +else + OBJDUMP="$ac_cv_prog_OBJDUMP" +fi + +test -z "$OBJDUMP" && OBJDUMP=objdump + + + + + + + + -{ echo "$as_me:$LINENO: checking how to recognize dependent libraries" >&5 -echo $ECHO_N "checking how to recognize dependent libraries... $ECHO_C" >&6; } -if test "${lt_cv_deplibs_check_method+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to recognize dependent libraries" >&5 +$as_echo_n "checking how to recognize dependent libraries... " >&6; } +if ${lt_cv_deplibs_check_method+:} false; then : + $as_echo_n "(cached) " >&6 else lt_cv_file_magic_cmd='$MAGIC_CMD' lt_cv_file_magic_test_file= @@ -5059,15 +5375,23 @@ mingw* | pw32*) # Base MSYS/MinGW do not provide the 'file' command needed by # func_win32_libid shell function, so use a weaker test based on 'objdump', # unless we find 'file', for example because we are cross-compiling. - if ( file / ) >/dev/null 2>&1; then + # func_win32_libid assumes BSD nm, so disallow it if using MS dumpbin. + if ( test "$lt_cv_nm_interface" = "BSD nm" && file / ) >/dev/null 2>&1; then lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL' lt_cv_file_magic_cmd='func_win32_libid' else - lt_cv_deplibs_check_method='file_magic file format pei*-i386(.*architecture: i386)?' + # Keep this pattern in sync with the one in func_win32_libid. + lt_cv_deplibs_check_method='file_magic file format (pei*-i386(.*architecture: i386)?|pe-arm-wince|pe-x86-64)' lt_cv_file_magic_cmd='$OBJDUMP -f' fi ;; +cegcc*) + # use the weaker test based on 'objdump'. See mingw*. + lt_cv_deplibs_check_method='file_magic file format pe-arm-.*little(.*architecture: arm)?' + lt_cv_file_magic_cmd='$OBJDUMP -f' + ;; + darwin* | rhapsody*) lt_cv_deplibs_check_method=pass_all ;; @@ -5092,6 +5416,10 @@ gnu*) lt_cv_deplibs_check_method=pass_all ;; +haiku*) + lt_cv_deplibs_check_method=pass_all + ;; + hpux10.20* | hpux11*) lt_cv_file_magic_cmd=/usr/bin/file case $host_cpu in @@ -5100,11 +5428,11 @@ hpux10.20* | hpux11*) lt_cv_file_magic_test_file=/usr/lib/hpux32/libc.so ;; hppa*64*) - lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF-[0-9][0-9]) shared object file - PA-RISC [0-9].[0-9]' + lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF[ -][0-9][0-9])(-bit)?( [LM]SB)? shared object( file)?[, -]* PA-RISC [0-9]\.[0-9]' lt_cv_file_magic_test_file=/usr/lib/pa20_64/libc.sl ;; *) - lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|PA-RISC[0-9].[0-9]) shared library' + lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|PA-RISC[0-9]\.[0-9]) shared library' lt_cv_file_magic_test_file=/usr/lib/libc.sl ;; esac @@ -5125,12 +5453,12 @@ irix5* | irix6* | nonstopux*) lt_cv_deplibs_check_method=pass_all ;; -# This must be Linux ELF. -linux* | k*bsd*-gnu) +# This must be glibc/ELF. +linux* | k*bsd*-gnu | kopensolaris*-gnu) lt_cv_deplibs_check_method=pass_all ;; -netbsd*) +netbsd* | netbsdelf*-gnu) if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|_pic\.a)$' else @@ -5205,8 +5533,23 @@ tpf*) esac fi -{ echo "$as_me:$LINENO: result: $lt_cv_deplibs_check_method" >&5 -echo "${ECHO_T}$lt_cv_deplibs_check_method" >&6; } +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_deplibs_check_method" >&5 +$as_echo "$lt_cv_deplibs_check_method" >&6; } + +file_magic_glob= +want_nocaseglob=no +if test "$build" = "$host"; then + case $host_os in + mingw* | pw32*) + if ( shopt | grep nocaseglob ) >/dev/null 2>&1; then + want_nocaseglob=yes + else + file_magic_glob=`echo aAbBcCdDeEfFgGhHiIjJkKlLmMnNoOpPqQrRsStTuUvVwWxXyYzZ | $SED -e "s/\(..\)/s\/[\1]\/[\1]\/g;/g"` + fi + ;; + esac +fi + file_magic_cmd=$lt_cv_file_magic_cmd deplibs_check_method=$lt_cv_deplibs_check_method test -z "$deplibs_check_method" && deplibs_check_method=unknown @@ -5220,111 +5563,154 @@ test -z "$deplibs_check_method" && deplibs_check_method=unknown + + + + + + + + + + if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}ar", so it can be a program name with args. -set dummy ${ac_tool_prefix}ar; ac_word=$2 -{ echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } -if test "${ac_cv_prog_AR+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 + # Extract the first word of "${ac_tool_prefix}dlltool", so it can be a program name with args. +set dummy ${ac_tool_prefix}dlltool; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_DLLTOOL+:} false; then : + $as_echo_n "(cached) " >&6 else - if test -n "$AR"; then - ac_cv_prog_AR="$AR" # Let the user override the test. + if test -n "$DLLTOOL"; then + ac_cv_prog_DLLTOOL="$DLLTOOL" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do + for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_prog_AR="${ac_tool_prefix}ar" - echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + ac_cv_prog_DLLTOOL="${ac_tool_prefix}dlltool" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done -done + done IFS=$as_save_IFS fi fi -AR=$ac_cv_prog_AR -if test -n "$AR"; then - { echo "$as_me:$LINENO: result: $AR" >&5 -echo "${ECHO_T}$AR" >&6; } +DLLTOOL=$ac_cv_prog_DLLTOOL +if test -n "$DLLTOOL"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DLLTOOL" >&5 +$as_echo "$DLLTOOL" >&6; } else - { echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } fi fi -if test -z "$ac_cv_prog_AR"; then - ac_ct_AR=$AR - # Extract the first word of "ar", so it can be a program name with args. -set dummy ar; ac_word=$2 -{ echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } -if test "${ac_cv_prog_ac_ct_AR+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 +if test -z "$ac_cv_prog_DLLTOOL"; then + ac_ct_DLLTOOL=$DLLTOOL + # Extract the first word of "dlltool", so it can be a program name with args. +set dummy dlltool; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_ac_ct_DLLTOOL+:} false; then : + $as_echo_n "(cached) " >&6 else - if test -n "$ac_ct_AR"; then - ac_cv_prog_ac_ct_AR="$ac_ct_AR" # Let the user override the test. + if test -n "$ac_ct_DLLTOOL"; then + ac_cv_prog_ac_ct_DLLTOOL="$ac_ct_DLLTOOL" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do + for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_prog_ac_ct_AR="ar" - echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + ac_cv_prog_ac_ct_DLLTOOL="dlltool" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done -done + done IFS=$as_save_IFS fi fi -ac_ct_AR=$ac_cv_prog_ac_ct_AR -if test -n "$ac_ct_AR"; then - { echo "$as_me:$LINENO: result: $ac_ct_AR" >&5 -echo "${ECHO_T}$ac_ct_AR" >&6; } +ac_ct_DLLTOOL=$ac_cv_prog_ac_ct_DLLTOOL +if test -n "$ac_ct_DLLTOOL"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DLLTOOL" >&5 +$as_echo "$ac_ct_DLLTOOL" >&6; } else - { echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } fi - if test "x$ac_ct_AR" = x; then - AR="false" + if test "x$ac_ct_DLLTOOL" = x; then + DLLTOOL="false" else case $cross_compiling:$ac_tool_warned in yes:) -{ echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools -whose name does not start with the host triplet. If you think this -configuration is useful to you, please write to autoconf@gnu.org." >&5 -echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools -whose name does not start with the host triplet. If you think this -configuration is useful to you, please write to autoconf@gnu.org." >&2;} +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac - AR=$ac_ct_AR + DLLTOOL=$ac_ct_DLLTOOL fi else - AR="$ac_cv_prog_AR" + DLLTOOL="$ac_cv_prog_DLLTOOL" fi -test -z "$AR" && AR=ar -test -z "$AR_FLAGS" && AR_FLAGS=cru +test -z "$DLLTOOL" && DLLTOOL=dlltool + + + + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to associate runtime and link libraries" >&5 +$as_echo_n "checking how to associate runtime and link libraries... " >&6; } +if ${lt_cv_sharedlib_from_linklib_cmd+:} false; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_sharedlib_from_linklib_cmd='unknown' + +case $host_os in +cygwin* | mingw* | pw32* | cegcc*) + # two different shell functions defined in ltmain.sh + # decide which to use based on capabilities of $DLLTOOL + case `$DLLTOOL --help 2>&1` in + *--identify-strict*) + lt_cv_sharedlib_from_linklib_cmd=func_cygming_dll_for_implib + ;; + *) + lt_cv_sharedlib_from_linklib_cmd=func_cygming_dll_for_implib_fallback + ;; + esac + ;; +*) + # fallback: assume linklib IS sharedlib + lt_cv_sharedlib_from_linklib_cmd="$ECHO" + ;; +esac + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_sharedlib_from_linklib_cmd" >&5 +$as_echo "$lt_cv_sharedlib_from_linklib_cmd" >&6; } +sharedlib_from_linklib_cmd=$lt_cv_sharedlib_from_linklib_cmd +test -z "$sharedlib_from_linklib_cmd" && sharedlib_from_linklib_cmd=$ECHO + + @@ -5332,157 +5718,324 @@ test -z "$AR_FLAGS" && AR_FLAGS=cru if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args. -set dummy ${ac_tool_prefix}strip; ac_word=$2 -{ echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } -if test "${ac_cv_prog_STRIP+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 + for ac_prog in ar + do + # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. +set dummy $ac_tool_prefix$ac_prog; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_AR+:} false; then : + $as_echo_n "(cached) " >&6 else - if test -n "$STRIP"; then - ac_cv_prog_STRIP="$STRIP" # Let the user override the test. + if test -n "$AR"; then + ac_cv_prog_AR="$AR" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do + for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_prog_STRIP="${ac_tool_prefix}strip" - echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + ac_cv_prog_AR="$ac_tool_prefix$ac_prog" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done -done + done IFS=$as_save_IFS fi fi -STRIP=$ac_cv_prog_STRIP -if test -n "$STRIP"; then - { echo "$as_me:$LINENO: result: $STRIP" >&5 -echo "${ECHO_T}$STRIP" >&6; } +AR=$ac_cv_prog_AR +if test -n "$AR"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AR" >&5 +$as_echo "$AR" >&6; } else - { echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } fi + test -n "$AR" && break + done fi -if test -z "$ac_cv_prog_STRIP"; then - ac_ct_STRIP=$STRIP - # Extract the first word of "strip", so it can be a program name with args. -set dummy strip; ac_word=$2 -{ echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } -if test "${ac_cv_prog_ac_ct_STRIP+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 +if test -z "$AR"; then + ac_ct_AR=$AR + for ac_prog in ar +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_ac_ct_AR+:} false; then : + $as_echo_n "(cached) " >&6 else - if test -n "$ac_ct_STRIP"; then - ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # Let the user override the test. + if test -n "$ac_ct_AR"; then + ac_cv_prog_ac_ct_AR="$ac_ct_AR" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do + for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_prog_ac_ct_STRIP="strip" - echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + ac_cv_prog_ac_ct_AR="$ac_prog" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done -done + done IFS=$as_save_IFS fi fi -ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP -if test -n "$ac_ct_STRIP"; then - { echo "$as_me:$LINENO: result: $ac_ct_STRIP" >&5 -echo "${ECHO_T}$ac_ct_STRIP" >&6; } +ac_ct_AR=$ac_cv_prog_ac_ct_AR +if test -n "$ac_ct_AR"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_AR" >&5 +$as_echo "$ac_ct_AR" >&6; } else - { echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } fi - if test "x$ac_ct_STRIP" = x; then - STRIP=":" + + test -n "$ac_ct_AR" && break +done + + if test "x$ac_ct_AR" = x; then + AR="false" else case $cross_compiling:$ac_tool_warned in yes:) -{ echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools -whose name does not start with the host triplet. If you think this -configuration is useful to you, please write to autoconf@gnu.org." >&5 -echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools -whose name does not start with the host triplet. If you think this -configuration is useful to you, please write to autoconf@gnu.org." >&2;} +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac - STRIP=$ac_ct_STRIP + AR=$ac_ct_AR fi -else - STRIP="$ac_cv_prog_STRIP" fi -test -z "$STRIP" && STRIP=: +: ${AR=ar} +: ${AR_FLAGS=cru} -if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}ranlib", so it can be a program name with args. -set dummy ${ac_tool_prefix}ranlib; ac_word=$2 -{ echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } -if test "${ac_cv_prog_RANLIB+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - if test -n "$RANLIB"; then - ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_prog_RANLIB="${ac_tool_prefix}ranlib" - echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done -done -IFS=$as_save_IFS -fi -fi -RANLIB=$ac_cv_prog_RANLIB -if test -n "$RANLIB"; then - { echo "$as_me:$LINENO: result: $RANLIB" >&5 -echo "${ECHO_T}$RANLIB" >&6; } -else - { echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6; } -fi -fi -if test -z "$ac_cv_prog_RANLIB"; then - ac_ct_RANLIB=$RANLIB - # Extract the first word of "ranlib", so it can be a program name with args. -set dummy ranlib; ac_word=$2 -{ echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } -if test "${ac_cv_prog_ac_ct_RANLIB+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for archiver @FILE support" >&5 +$as_echo_n "checking for archiver @FILE support... " >&6; } +if ${lt_cv_ar_at_file+:} false; then : + $as_echo_n "(cached) " >&6 else - if test -n "$ac_ct_RANLIB"; then + lt_cv_ar_at_file=no + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_cxx_try_compile "$LINENO"; then : + echo conftest.$ac_objext > conftest.lst + lt_ar_try='$AR $AR_FLAGS libconftest.a @conftest.lst >&5' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$lt_ar_try\""; } >&5 + (eval $lt_ar_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } + if test "$ac_status" -eq 0; then + # Ensure the archiver fails upon bogus file names. + rm -f conftest.$ac_objext libconftest.a + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$lt_ar_try\""; } >&5 + (eval $lt_ar_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } + if test "$ac_status" -ne 0; then + lt_cv_ar_at_file=@ + fi + fi + rm -f conftest.* libconftest.a + +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ar_at_file" >&5 +$as_echo "$lt_cv_ar_at_file" >&6; } + +if test "x$lt_cv_ar_at_file" = xno; then + archiver_list_spec= +else + archiver_list_spec=$lt_cv_ar_at_file +fi + + + + + + + +if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args. +set dummy ${ac_tool_prefix}strip; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_STRIP+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$STRIP"; then + ac_cv_prog_STRIP="$STRIP" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_STRIP="${ac_tool_prefix}strip" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +STRIP=$ac_cv_prog_STRIP +if test -n "$STRIP"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $STRIP" >&5 +$as_echo "$STRIP" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_STRIP"; then + ac_ct_STRIP=$STRIP + # Extract the first word of "strip", so it can be a program name with args. +set dummy strip; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_ac_ct_STRIP+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_STRIP"; then + ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_ac_ct_STRIP="strip" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP +if test -n "$ac_ct_STRIP"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_STRIP" >&5 +$as_echo "$ac_ct_STRIP" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + if test "x$ac_ct_STRIP" = x; then + STRIP=":" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + STRIP=$ac_ct_STRIP + fi +else + STRIP="$ac_cv_prog_STRIP" +fi + +test -z "$STRIP" && STRIP=: + + + + + + +if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}ranlib", so it can be a program name with args. +set dummy ${ac_tool_prefix}ranlib; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_RANLIB+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$RANLIB"; then + ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_RANLIB="${ac_tool_prefix}ranlib" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +RANLIB=$ac_cv_prog_RANLIB +if test -n "$RANLIB"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $RANLIB" >&5 +$as_echo "$RANLIB" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_RANLIB"; then + ac_ct_RANLIB=$RANLIB + # Extract the first word of "ranlib", so it can be a program name with args. +set dummy ranlib; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_ac_ct_RANLIB+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_RANLIB"; then ac_cv_prog_ac_ct_RANLIB="$ac_ct_RANLIB" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR @@ -5490,25 +6043,25 @@ for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do + for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_ac_ct_RANLIB="ranlib" - echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done -done + done IFS=$as_save_IFS fi fi ac_ct_RANLIB=$ac_cv_prog_ac_ct_RANLIB if test -n "$ac_ct_RANLIB"; then - { echo "$as_me:$LINENO: result: $ac_ct_RANLIB" >&5 -echo "${ECHO_T}$ac_ct_RANLIB" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_RANLIB" >&5 +$as_echo "$ac_ct_RANLIB" >&6; } else - { echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } fi if test "x$ac_ct_RANLIB" = x; then @@ -5516,12 +6069,8 @@ fi else case $cross_compiling:$ac_tool_warned in yes:) -{ echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools -whose name does not start with the host triplet. If you think this -configuration is useful to you, please write to autoconf@gnu.org." >&5 -echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools -whose name does not start with the host triplet. If you think this -configuration is useful to you, please write to autoconf@gnu.org." >&2;} +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac RANLIB=$ac_ct_RANLIB @@ -5545,15 +6094,27 @@ old_postuninstall_cmds= if test -n "$RANLIB"; then case $host_os in openbsd*) - old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB -t \$oldlib" + old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB -t \$tool_oldlib" ;; *) - old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB \$oldlib" + old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB \$tool_oldlib" ;; esac - old_archive_cmds="$old_archive_cmds~\$RANLIB \$oldlib" + old_archive_cmds="$old_archive_cmds~\$RANLIB \$tool_oldlib" fi +case $host_os in + darwin*) + lock_old_archive_extraction=yes ;; + *) + lock_old_archive_extraction=no ;; +esac + + + + + + @@ -5598,10 +6159,10 @@ compiler=$CC # Check for command to grab the raw symbol name followed by C symbol from nm. -{ echo "$as_me:$LINENO: checking command to parse $NM output from $compiler object" >&5 -echo $ECHO_N "checking command to parse $NM output from $compiler object... $ECHO_C" >&6; } -if test "${lt_cv_sys_global_symbol_pipe+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking command to parse $NM output from $compiler object" >&5 +$as_echo_n "checking command to parse $NM output from $compiler object... " >&6; } +if ${lt_cv_sys_global_symbol_pipe+:} false; then : + $as_echo_n "(cached) " >&6 else # These are sane defaults that work on at least a few old systems. @@ -5618,7 +6179,7 @@ case $host_os in aix*) symcode='[BCDT]' ;; -cygwin* | mingw* | pw32*) +cygwin* | mingw* | pw32* | cegcc*) symcode='[ABCDGISTW]' ;; hpux*) @@ -5661,8 +6222,8 @@ esac lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^T .* \(.*\)$/extern int \1();/p' -e 's/^$symcode* .* \(.*\)$/extern char \1;/p'" # Transform an extracted symbol line into symbol name and symbol address -lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([^ ]*\) $/ {\\\"\1\\\", (void *) 0},/p' -e 's/^$symcode* \([^ ]*\) \([^ ]*\)$/ {\"\2\", (void *) \&\2},/p'" -lt_cv_sys_global_symbol_to_c_name_address_lib_prefix="sed -n -e 's/^: \([^ ]*\) $/ {\\\"\1\\\", (void *) 0},/p' -e 's/^$symcode* \([^ ]*\) \(lib[^ ]*\)$/ {\"\2\", (void *) \&\2},/p' -e 's/^$symcode* \([^ ]*\) \([^ ]*\)$/ {\"lib\2\", (void *) \&\2},/p'" +lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([^ ]*\)[ ]*$/ {\\\"\1\\\", (void *) 0},/p' -e 's/^$symcode* \([^ ]*\) \([^ ]*\)$/ {\"\2\", (void *) \&\2},/p'" +lt_cv_sys_global_symbol_to_c_name_address_lib_prefix="sed -n -e 's/^: \([^ ]*\)[ ]*$/ {\\\"\1\\\", (void *) 0},/p' -e 's/^$symcode* \([^ ]*\) \(lib[^ ]*\)$/ {\"\2\", (void *) \&\2},/p' -e 's/^$symcode* \([^ ]*\) \([^ ]*\)$/ {\"lib\2\", (void *) \&\2},/p'" # Handle CRLF in mingw tool chain opt_cr= @@ -5686,6 +6247,7 @@ for ac_symprfx in "" "_"; do # which start with @ or ?. lt_cv_sys_global_symbol_pipe="$AWK '"\ " {last_section=section; section=\$ 3};"\ +" /^COFF SYMBOL TABLE/{for(i in hide) delete hide[i]};"\ " /Section length .*#relocs.*(pick any)/{hide[last_section]=1};"\ " \$ 0!~/External *\|/{next};"\ " / 0+ UNDEF /{next}; / UNDEF \([^|]\)*()/{next};"\ @@ -5698,6 +6260,7 @@ for ac_symprfx in "" "_"; do else lt_cv_sys_global_symbol_pipe="sed -n -e 's/^.*[ ]\($symcode$symcode*\)[ ][ ]*$ac_symprfx$sympat$opt_cr$/$symxfrm/p'" fi + lt_cv_sys_global_symbol_pipe="$lt_cv_sys_global_symbol_pipe | sed '/ __gnu_lto/d'" # Check to see that the pipe works correctly. pipe_works=no @@ -5716,18 +6279,18 @@ void nm_test_func(void){} int main(){nm_test_var='a';nm_test_func();return(0);} _LT_EOF - if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 (eval $ac_compile) 2>&5 ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; then + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then # Now try to grab the symbols. nlist=conftest.nm - if { (eval echo "$as_me:$LINENO: \"$NM conftest.$ac_objext \| $lt_cv_sys_global_symbol_pipe \> $nlist\"") >&5 - (eval $NM conftest.$ac_objext \| $lt_cv_sys_global_symbol_pipe \> $nlist) 2>&5 + if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$NM conftest.$ac_objext \| "$lt_cv_sys_global_symbol_pipe" \> $nlist\""; } >&5 + (eval $NM conftest.$ac_objext \| "$lt_cv_sys_global_symbol_pipe" \> $nlist) 2>&5 ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && test -s "$nlist"; then + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } && test -s "$nlist"; then # Try sorting and uniquifying the output. if sort "$nlist" | uniq > "$nlist"T; then mv -f "$nlist"T "$nlist" @@ -5739,6 +6302,18 @@ _LT_EOF if $GREP ' nm_test_var$' "$nlist" >/dev/null; then if $GREP ' nm_test_func$' "$nlist" >/dev/null; then cat <<_LT_EOF > conftest.$ac_ext +/* Keep this code in sync between libtool.m4, ltmain, lt_system.h, and tests. */ +#if defined(_WIN32) || defined(__CYGWIN__) || defined(_WIN32_WCE) +/* DATA imports from DLLs on WIN32 con't be const, because runtime + relocations are performed -- see ld's documentation on pseudo-relocs. */ +# define LT_DLSYM_CONST +#elif defined(__osf__) +/* This system does not cope well with relocations in const data. */ +# define LT_DLSYM_CONST +#else +# define LT_DLSYM_CONST const +#endif + #ifdef __cplusplus extern "C" { #endif @@ -5750,7 +6325,7 @@ _LT_EOF cat <<_LT_EOF >> conftest.$ac_ext /* The mapping between symbol names and symbols. */ -const struct { +LT_DLSYM_CONST struct { const char *name; void *address; } @@ -5776,19 +6351,19 @@ static const void *lt_preloaded_setup() { _LT_EOF # Now try linking the two files. mv conftest.$ac_objext conftstm.$ac_objext - lt_save_LIBS="$LIBS" - lt_save_CFLAGS="$CFLAGS" + lt_globsym_save_LIBS=$LIBS + lt_globsym_save_CFLAGS=$CFLAGS LIBS="conftstm.$ac_objext" CFLAGS="$CFLAGS$lt_prog_compiler_no_builtin_flag" - if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5 (eval $ac_link) 2>&5 ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && test -s conftest${ac_exeext}; then + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } && test -s conftest${ac_exeext}; then pipe_works=yes fi - LIBS="$lt_save_LIBS" - CFLAGS="$lt_save_CFLAGS" + LIBS=$lt_globsym_save_LIBS + CFLAGS=$lt_globsym_save_CFLAGS else echo "cannot find nm_test_func in $nlist" >&5 fi @@ -5818,13 +6393,22 @@ if test -z "$lt_cv_sys_global_symbol_pipe"; then lt_cv_sys_global_symbol_to_cdecl= fi if test -z "$lt_cv_sys_global_symbol_pipe$lt_cv_sys_global_symbol_to_cdecl"; then - { echo "$as_me:$LINENO: result: failed" >&5 -echo "${ECHO_T}failed" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: failed" >&5 +$as_echo "failed" >&6; } else - { echo "$as_me:$LINENO: result: ok" >&5 -echo "${ECHO_T}ok" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: ok" >&5 +$as_echo "ok" >&6; } fi +# Response file support. +if test "$lt_cv_nm_interface" = "MS dumpbin"; then + nm_file_list_spec='@' +elif $NM --help 2>/dev/null | grep '[@]FILE' >/dev/null; then + nm_file_list_spec='@' +fi + + + @@ -5842,13 +6426,53 @@ fi + + + + + + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for sysroot" >&5 +$as_echo_n "checking for sysroot... " >&6; } + +# Check whether --with-sysroot was given. +if test "${with_sysroot+set}" = set; then : + withval=$with_sysroot; +else + with_sysroot=no +fi + + +lt_sysroot= +case ${with_sysroot} in #( + yes) + if test "$GCC" = yes; then + lt_sysroot=`$CC --print-sysroot 2>/dev/null` + fi + ;; #( + /*) + lt_sysroot=`echo "$with_sysroot" | sed -e "$sed_quote_subst"` + ;; #( + no|'') + ;; #( + *) + { $as_echo "$as_me:${as_lineno-$LINENO}: result: ${with_sysroot}" >&5 +$as_echo "${with_sysroot}" >&6; } + as_fn_error $? "The sysroot must be an absolute path." "$LINENO" 5 + ;; +esac + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: ${lt_sysroot:-no}" >&5 +$as_echo "${lt_sysroot:-no}" >&6; } + # Check whether --enable-libtool-lock was given. -if test "${enable_libtool_lock+set}" = set; then +if test "${enable_libtool_lock+set}" = set; then : enableval=$enable_libtool_lock; fi @@ -5860,11 +6484,11 @@ case $host in ia64-*-hpux*) # Find out which ABI we are using. echo 'int i;' > conftest.$ac_ext - if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 (eval $ac_compile) 2>&5 ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; then + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then case `/usr/bin/file conftest.$ac_objext` in *ELF-32*) HPUX_IA64_MODE="32" @@ -5878,12 +6502,12 @@ ia64-*-hpux*) ;; *-*-irix6*) # Find out which ABI we are using. - echo '#line 5881 "configure"' > conftest.$ac_ext - if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + echo '#line '$LINENO' "configure"' > conftest.$ac_ext + if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 (eval $ac_compile) 2>&5 ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; then + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then if test "$lt_cv_prog_gnu_ld" = yes; then case `/usr/bin/file conftest.$ac_objext` in *32-bit*) @@ -5917,11 +6541,11 @@ x86_64-*kfreebsd*-gnu|x86_64-*linux*|ppc*-*linux*|powerpc*-*linux*| \ s390*-*linux*|s390*-*tpf*|sparc*-*linux*) # Find out which ABI we are using. echo 'int i;' > conftest.$ac_ext - if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 (eval $ac_compile) 2>&5 ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; then + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then case `/usr/bin/file conftest.o` in *32-bit*) case $host in @@ -5970,10 +6594,10 @@ s390*-*linux*|s390*-*tpf*|sparc*-*linux*) # On SCO OpenServer 5, we need -belf to get full-featured binaries. SAVE_CFLAGS="$CFLAGS" CFLAGS="$CFLAGS -belf" - { echo "$as_me:$LINENO: checking whether the C compiler needs -belf" >&5 -echo $ECHO_N "checking whether the C compiler needs -belf... $ECHO_C" >&6; } -if test "${lt_cv_cc_needs_belf+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the C compiler needs -belf" >&5 +$as_echo_n "checking whether the C compiler needs -belf... " >&6; } +if ${lt_cv_cc_needs_belf+:} false; then : + $as_echo_n "(cached) " >&6 else ac_ext=c ac_cpp='$CPP $CPPFLAGS' @@ -5981,11 +6605,7 @@ ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF + cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int @@ -5996,34 +6616,13 @@ main () return 0; } _ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_link") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest$ac_exeext && - $as_test_x conftest$ac_exeext; then +if ac_fn_c_try_link "$LINENO"; then : lt_cv_cc_needs_belf=yes else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - lt_cv_cc_needs_belf=no + lt_cv_cc_needs_belf=no fi - -rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ - conftest$ac_exeext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' @@ -6031,25 +6630,38 @@ ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $ ac_compiler_gnu=$ac_cv_c_compiler_gnu fi -{ echo "$as_me:$LINENO: result: $lt_cv_cc_needs_belf" >&5 -echo "${ECHO_T}$lt_cv_cc_needs_belf" >&6; } +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_cc_needs_belf" >&5 +$as_echo "$lt_cv_cc_needs_belf" >&6; } if test x"$lt_cv_cc_needs_belf" != x"yes"; then # this is probably gcc 2.8.0, egcs 1.0 or newer; no need for -belf CFLAGS="$SAVE_CFLAGS" fi ;; -sparc*-*solaris*) +*-*solaris*) # Find out which ABI we are using. echo 'int i;' > conftest.$ac_ext - if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 (eval $ac_compile) 2>&5 ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; then + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then case `/usr/bin/file conftest.o` in *64-bit*) case $lt_cv_prog_gnu_ld in - yes*) LD="${LD-ld} -m elf64_sparc" ;; + yes*) + case $host in + i?86-*-solaris*) + LD="${LD-ld} -m elf_x86_64" + ;; + sparc*-*-solaris*) + LD="${LD-ld} -m elf64_sparc" + ;; + esac + # GNU ld 2.21 introduced _sol2 emulations. Use them if available. + if ${LD-ld} -V | grep _sol2 >/dev/null 2>&1; then + LD="${LD-ld}_sol2" + fi + ;; *) if ${LD-ld} -64 -r -o conftest2.o conftest.o >/dev/null 2>&1; then LD="${LD-ld} -64" @@ -6065,16 +6677,133 @@ esac need_locks="$enable_libtool_lock" +if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}mt", so it can be a program name with args. +set dummy ${ac_tool_prefix}mt; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_MANIFEST_TOOL+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$MANIFEST_TOOL"; then + ac_cv_prog_MANIFEST_TOOL="$MANIFEST_TOOL" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_MANIFEST_TOOL="${ac_tool_prefix}mt" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +MANIFEST_TOOL=$ac_cv_prog_MANIFEST_TOOL +if test -n "$MANIFEST_TOOL"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MANIFEST_TOOL" >&5 +$as_echo "$MANIFEST_TOOL" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_MANIFEST_TOOL"; then + ac_ct_MANIFEST_TOOL=$MANIFEST_TOOL + # Extract the first word of "mt", so it can be a program name with args. +set dummy mt; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_ac_ct_MANIFEST_TOOL+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_MANIFEST_TOOL"; then + ac_cv_prog_ac_ct_MANIFEST_TOOL="$ac_ct_MANIFEST_TOOL" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_ac_ct_MANIFEST_TOOL="mt" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_MANIFEST_TOOL=$ac_cv_prog_ac_ct_MANIFEST_TOOL +if test -n "$ac_ct_MANIFEST_TOOL"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_MANIFEST_TOOL" >&5 +$as_echo "$ac_ct_MANIFEST_TOOL" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + if test "x$ac_ct_MANIFEST_TOOL" = x; then + MANIFEST_TOOL=":" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + MANIFEST_TOOL=$ac_ct_MANIFEST_TOOL + fi +else + MANIFEST_TOOL="$ac_cv_prog_MANIFEST_TOOL" +fi + +test -z "$MANIFEST_TOOL" && MANIFEST_TOOL=mt +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if $MANIFEST_TOOL is a manifest tool" >&5 +$as_echo_n "checking if $MANIFEST_TOOL is a manifest tool... " >&6; } +if ${lt_cv_path_mainfest_tool+:} false; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_path_mainfest_tool=no + echo "$as_me:$LINENO: $MANIFEST_TOOL '-?'" >&5 + $MANIFEST_TOOL '-?' 2>conftest.err > conftest.out + cat conftest.err >&5 + if $GREP 'Manifest Tool' conftest.out > /dev/null; then + lt_cv_path_mainfest_tool=yes + fi + rm -f conftest* +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_path_mainfest_tool" >&5 +$as_echo "$lt_cv_path_mainfest_tool" >&6; } +if test "x$lt_cv_path_mainfest_tool" != xyes; then + MANIFEST_TOOL=: +fi + + + + + case $host_os in rhapsody* | darwin*) if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}dsymutil", so it can be a program name with args. set dummy ${ac_tool_prefix}dsymutil; ac_word=$2 -{ echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } -if test "${ac_cv_prog_DSYMUTIL+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_DSYMUTIL+:} false; then : + $as_echo_n "(cached) " >&6 else if test -n "$DSYMUTIL"; then ac_cv_prog_DSYMUTIL="$DSYMUTIL" # Let the user override the test. @@ -6084,25 +6813,25 @@ for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do + for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_DSYMUTIL="${ac_tool_prefix}dsymutil" - echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done -done + done IFS=$as_save_IFS fi fi DSYMUTIL=$ac_cv_prog_DSYMUTIL if test -n "$DSYMUTIL"; then - { echo "$as_me:$LINENO: result: $DSYMUTIL" >&5 -echo "${ECHO_T}$DSYMUTIL" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DSYMUTIL" >&5 +$as_echo "$DSYMUTIL" >&6; } else - { echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } fi @@ -6111,10 +6840,10 @@ if test -z "$ac_cv_prog_DSYMUTIL"; then ac_ct_DSYMUTIL=$DSYMUTIL # Extract the first word of "dsymutil", so it can be a program name with args. set dummy dsymutil; ac_word=$2 -{ echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } -if test "${ac_cv_prog_ac_ct_DSYMUTIL+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_ac_ct_DSYMUTIL+:} false; then : + $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_DSYMUTIL"; then ac_cv_prog_ac_ct_DSYMUTIL="$ac_ct_DSYMUTIL" # Let the user override the test. @@ -6124,25 +6853,25 @@ for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do + for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_ac_ct_DSYMUTIL="dsymutil" - echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done -done + done IFS=$as_save_IFS fi fi ac_ct_DSYMUTIL=$ac_cv_prog_ac_ct_DSYMUTIL if test -n "$ac_ct_DSYMUTIL"; then - { echo "$as_me:$LINENO: result: $ac_ct_DSYMUTIL" >&5 -echo "${ECHO_T}$ac_ct_DSYMUTIL" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DSYMUTIL" >&5 +$as_echo "$ac_ct_DSYMUTIL" >&6; } else - { echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } fi if test "x$ac_ct_DSYMUTIL" = x; then @@ -6150,12 +6879,8 @@ fi else case $cross_compiling:$ac_tool_warned in yes:) -{ echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools -whose name does not start with the host triplet. If you think this -configuration is useful to you, please write to autoconf@gnu.org." >&5 -echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools -whose name does not start with the host triplet. If you think this -configuration is useful to you, please write to autoconf@gnu.org." >&2;} +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac DSYMUTIL=$ac_ct_DSYMUTIL @@ -6167,10 +6892,10 @@ fi if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}nmedit", so it can be a program name with args. set dummy ${ac_tool_prefix}nmedit; ac_word=$2 -{ echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } -if test "${ac_cv_prog_NMEDIT+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_NMEDIT+:} false; then : + $as_echo_n "(cached) " >&6 else if test -n "$NMEDIT"; then ac_cv_prog_NMEDIT="$NMEDIT" # Let the user override the test. @@ -6180,25 +6905,25 @@ for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do + for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_NMEDIT="${ac_tool_prefix}nmedit" - echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done -done + done IFS=$as_save_IFS fi fi NMEDIT=$ac_cv_prog_NMEDIT if test -n "$NMEDIT"; then - { echo "$as_me:$LINENO: result: $NMEDIT" >&5 -echo "${ECHO_T}$NMEDIT" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $NMEDIT" >&5 +$as_echo "$NMEDIT" >&6; } else - { echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } fi @@ -6207,10 +6932,10 @@ if test -z "$ac_cv_prog_NMEDIT"; then ac_ct_NMEDIT=$NMEDIT # Extract the first word of "nmedit", so it can be a program name with args. set dummy nmedit; ac_word=$2 -{ echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } -if test "${ac_cv_prog_ac_ct_NMEDIT+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_ac_ct_NMEDIT+:} false; then : + $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_NMEDIT"; then ac_cv_prog_ac_ct_NMEDIT="$ac_ct_NMEDIT" # Let the user override the test. @@ -6220,25 +6945,25 @@ for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do + for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_ac_ct_NMEDIT="nmedit" - echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done -done + done IFS=$as_save_IFS fi fi ac_ct_NMEDIT=$ac_cv_prog_ac_ct_NMEDIT if test -n "$ac_ct_NMEDIT"; then - { echo "$as_me:$LINENO: result: $ac_ct_NMEDIT" >&5 -echo "${ECHO_T}$ac_ct_NMEDIT" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_NMEDIT" >&5 +$as_echo "$ac_ct_NMEDIT" >&6; } else - { echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } fi if test "x$ac_ct_NMEDIT" = x; then @@ -6246,12 +6971,8 @@ fi else case $cross_compiling:$ac_tool_warned in yes:) -{ echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools -whose name does not start with the host triplet. If you think this -configuration is useful to you, please write to autoconf@gnu.org." >&5 -echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools -whose name does not start with the host triplet. If you think this -configuration is useful to you, please write to autoconf@gnu.org." >&2;} +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac NMEDIT=$ac_ct_NMEDIT @@ -6263,10 +6984,10 @@ fi if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}lipo", so it can be a program name with args. set dummy ${ac_tool_prefix}lipo; ac_word=$2 -{ echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } -if test "${ac_cv_prog_LIPO+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_LIPO+:} false; then : + $as_echo_n "(cached) " >&6 else if test -n "$LIPO"; then ac_cv_prog_LIPO="$LIPO" # Let the user override the test. @@ -6276,25 +6997,25 @@ for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do + for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_LIPO="${ac_tool_prefix}lipo" - echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done -done + done IFS=$as_save_IFS fi fi LIPO=$ac_cv_prog_LIPO if test -n "$LIPO"; then - { echo "$as_me:$LINENO: result: $LIPO" >&5 -echo "${ECHO_T}$LIPO" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LIPO" >&5 +$as_echo "$LIPO" >&6; } else - { echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } fi @@ -6303,10 +7024,10 @@ if test -z "$ac_cv_prog_LIPO"; then ac_ct_LIPO=$LIPO # Extract the first word of "lipo", so it can be a program name with args. set dummy lipo; ac_word=$2 -{ echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } -if test "${ac_cv_prog_ac_ct_LIPO+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_ac_ct_LIPO+:} false; then : + $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_LIPO"; then ac_cv_prog_ac_ct_LIPO="$ac_ct_LIPO" # Let the user override the test. @@ -6316,25 +7037,25 @@ for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do + for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_ac_ct_LIPO="lipo" - echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done -done + done IFS=$as_save_IFS fi fi ac_ct_LIPO=$ac_cv_prog_ac_ct_LIPO if test -n "$ac_ct_LIPO"; then - { echo "$as_me:$LINENO: result: $ac_ct_LIPO" >&5 -echo "${ECHO_T}$ac_ct_LIPO" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_LIPO" >&5 +$as_echo "$ac_ct_LIPO" >&6; } else - { echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } fi if test "x$ac_ct_LIPO" = x; then @@ -6342,12 +7063,8 @@ fi else case $cross_compiling:$ac_tool_warned in yes:) -{ echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools -whose name does not start with the host triplet. If you think this -configuration is useful to you, please write to autoconf@gnu.org." >&5 -echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools -whose name does not start with the host triplet. If you think this -configuration is useful to you, please write to autoconf@gnu.org." >&2;} +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac LIPO=$ac_ct_LIPO @@ -6359,10 +7076,10 @@ fi if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}otool", so it can be a program name with args. set dummy ${ac_tool_prefix}otool; ac_word=$2 -{ echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } -if test "${ac_cv_prog_OTOOL+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_OTOOL+:} false; then : + $as_echo_n "(cached) " >&6 else if test -n "$OTOOL"; then ac_cv_prog_OTOOL="$OTOOL" # Let the user override the test. @@ -6372,25 +7089,25 @@ for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do + for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_OTOOL="${ac_tool_prefix}otool" - echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done -done + done IFS=$as_save_IFS fi fi OTOOL=$ac_cv_prog_OTOOL if test -n "$OTOOL"; then - { echo "$as_me:$LINENO: result: $OTOOL" >&5 -echo "${ECHO_T}$OTOOL" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $OTOOL" >&5 +$as_echo "$OTOOL" >&6; } else - { echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } fi @@ -6399,10 +7116,10 @@ if test -z "$ac_cv_prog_OTOOL"; then ac_ct_OTOOL=$OTOOL # Extract the first word of "otool", so it can be a program name with args. set dummy otool; ac_word=$2 -{ echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } -if test "${ac_cv_prog_ac_ct_OTOOL+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_ac_ct_OTOOL+:} false; then : + $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_OTOOL"; then ac_cv_prog_ac_ct_OTOOL="$ac_ct_OTOOL" # Let the user override the test. @@ -6412,25 +7129,25 @@ for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do + for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_ac_ct_OTOOL="otool" - echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done -done + done IFS=$as_save_IFS fi fi ac_ct_OTOOL=$ac_cv_prog_ac_ct_OTOOL if test -n "$ac_ct_OTOOL"; then - { echo "$as_me:$LINENO: result: $ac_ct_OTOOL" >&5 -echo "${ECHO_T}$ac_ct_OTOOL" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OTOOL" >&5 +$as_echo "$ac_ct_OTOOL" >&6; } else - { echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } fi if test "x$ac_ct_OTOOL" = x; then @@ -6438,12 +7155,8 @@ fi else case $cross_compiling:$ac_tool_warned in yes:) -{ echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools -whose name does not start with the host triplet. If you think this -configuration is useful to you, please write to autoconf@gnu.org." >&5 -echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools -whose name does not start with the host triplet. If you think this -configuration is useful to you, please write to autoconf@gnu.org." >&2;} +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac OTOOL=$ac_ct_OTOOL @@ -6455,10 +7168,10 @@ fi if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}otool64", so it can be a program name with args. set dummy ${ac_tool_prefix}otool64; ac_word=$2 -{ echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } -if test "${ac_cv_prog_OTOOL64+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_OTOOL64+:} false; then : + $as_echo_n "(cached) " >&6 else if test -n "$OTOOL64"; then ac_cv_prog_OTOOL64="$OTOOL64" # Let the user override the test. @@ -6468,25 +7181,25 @@ for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do + for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_OTOOL64="${ac_tool_prefix}otool64" - echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done -done + done IFS=$as_save_IFS fi fi OTOOL64=$ac_cv_prog_OTOOL64 if test -n "$OTOOL64"; then - { echo "$as_me:$LINENO: result: $OTOOL64" >&5 -echo "${ECHO_T}$OTOOL64" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $OTOOL64" >&5 +$as_echo "$OTOOL64" >&6; } else - { echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } fi @@ -6495,10 +7208,10 @@ if test -z "$ac_cv_prog_OTOOL64"; then ac_ct_OTOOL64=$OTOOL64 # Extract the first word of "otool64", so it can be a program name with args. set dummy otool64; ac_word=$2 -{ echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } -if test "${ac_cv_prog_ac_ct_OTOOL64+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_ac_ct_OTOOL64+:} false; then : + $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_OTOOL64"; then ac_cv_prog_ac_ct_OTOOL64="$ac_ct_OTOOL64" # Let the user override the test. @@ -6508,25 +7221,25 @@ for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do + for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_ac_ct_OTOOL64="otool64" - echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done -done + done IFS=$as_save_IFS fi fi ac_ct_OTOOL64=$ac_cv_prog_ac_ct_OTOOL64 if test -n "$ac_ct_OTOOL64"; then - { echo "$as_me:$LINENO: result: $ac_ct_OTOOL64" >&5 -echo "${ECHO_T}$ac_ct_OTOOL64" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OTOOL64" >&5 +$as_echo "$ac_ct_OTOOL64" >&6; } else - { echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } fi if test "x$ac_ct_OTOOL64" = x; then @@ -6534,12 +7247,8 @@ fi else case $cross_compiling:$ac_tool_warned in yes:) -{ echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools -whose name does not start with the host triplet. If you think this -configuration is useful to you, please write to autoconf@gnu.org." >&5 -echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools -whose name does not start with the host triplet. If you think this -configuration is useful to you, please write to autoconf@gnu.org." >&2;} +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac OTOOL64=$ac_ct_OTOOL64 @@ -6574,10 +7283,10 @@ fi - { echo "$as_me:$LINENO: checking for -single_module linker flag" >&5 -echo $ECHO_N "checking for -single_module linker flag... $ECHO_C" >&6; } -if test "${lt_cv_apple_cc_single_mod+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for -single_module linker flag" >&5 +$as_echo_n "checking for -single_module linker flag... " >&6; } +if ${lt_cv_apple_cc_single_mod+:} false; then : + $as_echo_n "(cached) " >&6 else lt_cv_apple_cc_single_mod=no if test -z "${LT_MULTI_MODULE}"; then @@ -6591,1135 +7300,147 @@ else -dynamiclib -Wl,-single_module conftest.c" >&5 $LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \ -dynamiclib -Wl,-single_module conftest.c 2>conftest.err - _lt_result=$? - if test -f libconftest.dylib && test ! -s conftest.err && test $_lt_result = 0; then - lt_cv_apple_cc_single_mod=yes - else - cat conftest.err >&5 - fi - rm -rf libconftest.dylib* - rm -f conftest.* - fi -fi -{ echo "$as_me:$LINENO: result: $lt_cv_apple_cc_single_mod" >&5 -echo "${ECHO_T}$lt_cv_apple_cc_single_mod" >&6; } - { echo "$as_me:$LINENO: checking for -exported_symbols_list linker flag" >&5 -echo $ECHO_N "checking for -exported_symbols_list linker flag... $ECHO_C" >&6; } -if test "${lt_cv_ld_exported_symbols_list+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - lt_cv_ld_exported_symbols_list=no - save_LDFLAGS=$LDFLAGS - echo "_main" > conftest.sym - LDFLAGS="$LDFLAGS -Wl,-exported_symbols_list,conftest.sym" - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ - -int -main () -{ - - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_link") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest$ac_exeext && - $as_test_x conftest$ac_exeext; then - lt_cv_ld_exported_symbols_list=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - lt_cv_ld_exported_symbols_list=no -fi - -rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ - conftest$ac_exeext conftest.$ac_ext - LDFLAGS="$save_LDFLAGS" - -fi -{ echo "$as_me:$LINENO: result: $lt_cv_ld_exported_symbols_list" >&5 -echo "${ECHO_T}$lt_cv_ld_exported_symbols_list" >&6; } - case $host_os in - rhapsody* | darwin1.[012]) - _lt_dar_allow_undefined='${wl}-undefined ${wl}suppress' ;; - darwin1.*) - _lt_dar_allow_undefined='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' ;; - darwin*) # darwin 5.x on - # if running on 10.5 or later, the deployment target defaults - # to the OS version, if on x86, and 10.4, the deployment - # target defaults to 10.4. Don't you love it? - case ${MACOSX_DEPLOYMENT_TARGET-10.0},$host in - 10.0,*86*-darwin8*|10.0,*-darwin[91]*) - _lt_dar_allow_undefined='${wl}-undefined ${wl}dynamic_lookup' ;; - 10.[012]*) - _lt_dar_allow_undefined='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' ;; - 10.*) - _lt_dar_allow_undefined='${wl}-undefined ${wl}dynamic_lookup' ;; - esac - ;; - esac - if test "$lt_cv_apple_cc_single_mod" = "yes"; then - _lt_dar_single_mod='$single_module' - fi - if test "$lt_cv_ld_exported_symbols_list" = "yes"; then - _lt_dar_export_syms=' ${wl}-exported_symbols_list,$output_objdir/${libname}-symbols.expsym' - else - _lt_dar_export_syms='~$NMEDIT -s $output_objdir/${libname}-symbols.expsym ${lib}' - fi - if test "$DSYMUTIL" != ":"; then - _lt_dsymutil='~$DSYMUTIL $lib || :' - else - _lt_dsymutil= - fi - ;; - esac - -ac_ext=c -ac_cpp='$CPP $CPPFLAGS' -ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_c_compiler_gnu -{ echo "$as_me:$LINENO: checking how to run the C preprocessor" >&5 -echo $ECHO_N "checking how to run the C preprocessor... $ECHO_C" >&6; } -# On Suns, sometimes $CPP names a directory. -if test -n "$CPP" && test -d "$CPP"; then - CPP= -fi -if test -z "$CPP"; then - if test "${ac_cv_prog_CPP+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - # Double quotes because CPP needs to be expanded - for CPP in "$CC -E" "$CC -E -traditional-cpp" "/lib/cpp" - do - ac_preproc_ok=false -for ac_c_preproc_warn_flag in '' yes -do - # Use a header file that comes with gcc, so configuring glibc - # with a fresh cross-compiler works. - # Prefer to if __STDC__ is defined, since - # exists even on freestanding compilers. - # On the NeXT, cc -E runs the code through the compiler's parser, - # not just through cpp. "Syntax error" is here to catch this case. - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -#ifdef __STDC__ -# include -#else -# include -#endif - Syntax error -_ACEOF -if { (ac_try="$ac_cpp conftest.$ac_ext" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } >/dev/null && { - test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || - test ! -s conftest.err - }; then - : -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - # Broken: fails on valid input. -continue -fi - -rm -f conftest.err conftest.$ac_ext - - # OK, works on sane cases. Now check whether nonexistent headers - # can be detected and how. - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -#include -_ACEOF -if { (ac_try="$ac_cpp conftest.$ac_ext" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } >/dev/null && { - test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || - test ! -s conftest.err - }; then - # Broken: success on invalid input. -continue -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - # Passes both tests. -ac_preproc_ok=: -break -fi - -rm -f conftest.err conftest.$ac_ext - -done -# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. -rm -f conftest.err conftest.$ac_ext -if $ac_preproc_ok; then - break -fi - - done - ac_cv_prog_CPP=$CPP - -fi - CPP=$ac_cv_prog_CPP -else - ac_cv_prog_CPP=$CPP -fi -{ echo "$as_me:$LINENO: result: $CPP" >&5 -echo "${ECHO_T}$CPP" >&6; } -ac_preproc_ok=false -for ac_c_preproc_warn_flag in '' yes -do - # Use a header file that comes with gcc, so configuring glibc - # with a fresh cross-compiler works. - # Prefer to if __STDC__ is defined, since - # exists even on freestanding compilers. - # On the NeXT, cc -E runs the code through the compiler's parser, - # not just through cpp. "Syntax error" is here to catch this case. - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -#ifdef __STDC__ -# include -#else -# include -#endif - Syntax error -_ACEOF -if { (ac_try="$ac_cpp conftest.$ac_ext" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } >/dev/null && { - test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || - test ! -s conftest.err - }; then - : -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - # Broken: fails on valid input. -continue -fi - -rm -f conftest.err conftest.$ac_ext - - # OK, works on sane cases. Now check whether nonexistent headers - # can be detected and how. - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -#include -_ACEOF -if { (ac_try="$ac_cpp conftest.$ac_ext" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } >/dev/null && { - test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || - test ! -s conftest.err - }; then - # Broken: success on invalid input. -continue -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - # Passes both tests. -ac_preproc_ok=: -break -fi - -rm -f conftest.err conftest.$ac_ext - -done -# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. -rm -f conftest.err conftest.$ac_ext -if $ac_preproc_ok; then - : -else - { { echo "$as_me:$LINENO: error: C preprocessor \"$CPP\" fails sanity check -See \`config.log' for more details." >&5 -echo "$as_me: error: C preprocessor \"$CPP\" fails sanity check -See \`config.log' for more details." >&2;} - { (exit 1); exit 1; }; } -fi - -ac_ext=c -ac_cpp='$CPP $CPPFLAGS' -ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_c_compiler_gnu - - -{ echo "$as_me:$LINENO: checking for ANSI C header files" >&5 -echo $ECHO_N "checking for ANSI C header files... $ECHO_C" >&6; } -if test "${ac_cv_header_stdc+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -#include -#include -#include -#include - -int -main () -{ - - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (ac_try="$ac_compile" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compile") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then - ac_cv_header_stdc=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_cv_header_stdc=no -fi - -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext - -if test $ac_cv_header_stdc = yes; then - # SunOS 4.x string.h does not declare mem*, contrary to ANSI. - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -#include - -_ACEOF -if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - $EGREP "memchr" >/dev/null 2>&1; then - : -else - ac_cv_header_stdc=no -fi -rm -f conftest* - -fi - -if test $ac_cv_header_stdc = yes; then - # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI. - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -#include - -_ACEOF -if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - $EGREP "free" >/dev/null 2>&1; then - : -else - ac_cv_header_stdc=no -fi -rm -f conftest* - -fi - -if test $ac_cv_header_stdc = yes; then - # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi. - if test "$cross_compiling" = yes; then - : -else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -#include -#include -#if ((' ' & 0x0FF) == 0x020) -# define ISLOWER(c) ('a' <= (c) && (c) <= 'z') -# define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c)) -#else -# define ISLOWER(c) \ - (('a' <= (c) && (c) <= 'i') \ - || ('j' <= (c) && (c) <= 'r') \ - || ('s' <= (c) && (c) <= 'z')) -# define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c)) -#endif - -#define XOR(e, f) (((e) && !(f)) || (!(e) && (f))) -int -main () -{ - int i; - for (i = 0; i < 256; i++) - if (XOR (islower (i), ISLOWER (i)) - || toupper (i) != TOUPPER (i)) - return 2; - return 0; -} -_ACEOF -rm -f conftest$ac_exeext -if { (ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_link") 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { ac_try='./conftest$ac_exeext' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - : -else - echo "$as_me: program exited with status $ac_status" >&5 -echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -( exit $ac_status ) -ac_cv_header_stdc=no -fi -rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext -fi - - -fi -fi -{ echo "$as_me:$LINENO: result: $ac_cv_header_stdc" >&5 -echo "${ECHO_T}$ac_cv_header_stdc" >&6; } -if test $ac_cv_header_stdc = yes; then - -cat >>confdefs.h <<\_ACEOF -#define STDC_HEADERS 1 -_ACEOF - -fi - -# On IRIX 5.3, sys/types and inttypes.h are conflicting. - - - - - - - - - -for ac_header in sys/types.h sys/stat.h stdlib.h string.h memory.h strings.h \ - inttypes.h stdint.h unistd.h -do -as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` -{ echo "$as_me:$LINENO: checking for $ac_header" >&5 -echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; } -if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -$ac_includes_default - -#include <$ac_header> -_ACEOF -rm -f conftest.$ac_objext -if { (ac_try="$ac_compile" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compile") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then - eval "$as_ac_Header=yes" -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - eval "$as_ac_Header=no" -fi - -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -fi -ac_res=`eval echo '${'$as_ac_Header'}'` - { echo "$as_me:$LINENO: result: $ac_res" >&5 -echo "${ECHO_T}$ac_res" >&6; } -if test `eval echo '${'$as_ac_Header'}'` = yes; then - cat >>confdefs.h <<_ACEOF -#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 -_ACEOF - -fi - -done - - - -for ac_header in dlfcn.h -do -as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` -{ echo "$as_me:$LINENO: checking for $ac_header" >&5 -echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; } -if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -$ac_includes_default - -#include <$ac_header> -_ACEOF -rm -f conftest.$ac_objext -if { (ac_try="$ac_compile" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compile") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then - eval "$as_ac_Header=yes" -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - eval "$as_ac_Header=no" -fi - -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -fi -ac_res=`eval echo '${'$as_ac_Header'}'` - { echo "$as_me:$LINENO: result: $ac_res" >&5 -echo "${ECHO_T}$ac_res" >&6; } -if test `eval echo '${'$as_ac_Header'}'` = yes; then - cat >>confdefs.h <<_ACEOF -#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 -_ACEOF - -fi - -done - - - -ac_ext=cpp -ac_cpp='$CXXCPP $CPPFLAGS' -ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_cxx_compiler_gnu -if test -z "$CXX"; then - if test -n "$CCC"; then - CXX=$CCC - else - if test -n "$ac_tool_prefix"; then - for ac_prog in g++ c++ gpp aCC CC cxx cc++ cl.exe FCC KCC RCC xlC_r xlC - do - # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. -set dummy $ac_tool_prefix$ac_prog; ac_word=$2 -{ echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } -if test "${ac_cv_prog_CXX+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - if test -n "$CXX"; then - ac_cv_prog_CXX="$CXX" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_prog_CXX="$ac_tool_prefix$ac_prog" - echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done -done -IFS=$as_save_IFS - -fi -fi -CXX=$ac_cv_prog_CXX -if test -n "$CXX"; then - { echo "$as_me:$LINENO: result: $CXX" >&5 -echo "${ECHO_T}$CXX" >&6; } -else - { echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6; } -fi - - - test -n "$CXX" && break - done -fi -if test -z "$CXX"; then - ac_ct_CXX=$CXX - for ac_prog in g++ c++ gpp aCC CC cxx cc++ cl.exe FCC KCC RCC xlC_r xlC -do - # Extract the first word of "$ac_prog", so it can be a program name with args. -set dummy $ac_prog; ac_word=$2 -{ echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } -if test "${ac_cv_prog_ac_ct_CXX+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - if test -n "$ac_ct_CXX"; then - ac_cv_prog_ac_ct_CXX="$ac_ct_CXX" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_prog_ac_ct_CXX="$ac_prog" - echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done -done -IFS=$as_save_IFS - -fi -fi -ac_ct_CXX=$ac_cv_prog_ac_ct_CXX -if test -n "$ac_ct_CXX"; then - { echo "$as_me:$LINENO: result: $ac_ct_CXX" >&5 -echo "${ECHO_T}$ac_ct_CXX" >&6; } -else - { echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6; } -fi - - - test -n "$ac_ct_CXX" && break -done - - if test "x$ac_ct_CXX" = x; then - CXX="g++" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools -whose name does not start with the host triplet. If you think this -configuration is useful to you, please write to autoconf@gnu.org." >&5 -echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools -whose name does not start with the host triplet. If you think this -configuration is useful to you, please write to autoconf@gnu.org." >&2;} -ac_tool_warned=yes ;; -esac - CXX=$ac_ct_CXX - fi -fi - - fi -fi -# Provide some information about the compiler. -echo "$as_me:$LINENO: checking for C++ compiler version" >&5 -ac_compiler=`set X $ac_compile; echo $2` -{ (ac_try="$ac_compiler --version >&5" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compiler --version >&5") 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } -{ (ac_try="$ac_compiler -v >&5" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compiler -v >&5") 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } -{ (ac_try="$ac_compiler -V >&5" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compiler -V >&5") 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } - -{ echo "$as_me:$LINENO: checking whether we are using the GNU C++ compiler" >&5 -echo $ECHO_N "checking whether we are using the GNU C++ compiler... $ECHO_C" >&6; } -if test "${ac_cv_cxx_compiler_gnu+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ - -int -main () -{ -#ifndef __GNUC__ - choke me -#endif - - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (ac_try="$ac_compile" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compile") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_cxx_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then - ac_compiler_gnu=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_compiler_gnu=no -fi - -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -ac_cv_cxx_compiler_gnu=$ac_compiler_gnu - -fi -{ echo "$as_me:$LINENO: result: $ac_cv_cxx_compiler_gnu" >&5 -echo "${ECHO_T}$ac_cv_cxx_compiler_gnu" >&6; } -GXX=`test $ac_compiler_gnu = yes && echo yes` -ac_test_CXXFLAGS=${CXXFLAGS+set} -ac_save_CXXFLAGS=$CXXFLAGS -{ echo "$as_me:$LINENO: checking whether $CXX accepts -g" >&5 -echo $ECHO_N "checking whether $CXX accepts -g... $ECHO_C" >&6; } -if test "${ac_cv_prog_cxx_g+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - ac_save_cxx_werror_flag=$ac_cxx_werror_flag - ac_cxx_werror_flag=yes - ac_cv_prog_cxx_g=no - CXXFLAGS="-g" - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ - -int -main () -{ - - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (ac_try="$ac_compile" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compile") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_cxx_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then - ac_cv_prog_cxx_g=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - CXXFLAGS="" - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ - -int -main () -{ - - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (ac_try="$ac_compile" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compile") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_cxx_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then - : -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_cxx_werror_flag=$ac_save_cxx_werror_flag - CXXFLAGS="-g" - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ - -int -main () -{ - - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (ac_try="$ac_compile" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compile") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_cxx_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then - ac_cv_prog_cxx_g=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - -fi - -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -fi - -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -fi - -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext - ac_cxx_werror_flag=$ac_save_cxx_werror_flag -fi -{ echo "$as_me:$LINENO: result: $ac_cv_prog_cxx_g" >&5 -echo "${ECHO_T}$ac_cv_prog_cxx_g" >&6; } -if test "$ac_test_CXXFLAGS" = set; then - CXXFLAGS=$ac_save_CXXFLAGS -elif test $ac_cv_prog_cxx_g = yes; then - if test "$GXX" = yes; then - CXXFLAGS="-g -O2" - else - CXXFLAGS="-g" - fi -else - if test "$GXX" = yes; then - CXXFLAGS="-O2" - else - CXXFLAGS= - fi -fi -ac_ext=cpp -ac_cpp='$CXXCPP $CPPFLAGS' -ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_cxx_compiler_gnu - -depcc="$CXX" am_compiler_list= - -{ echo "$as_me:$LINENO: checking dependency style of $depcc" >&5 -echo $ECHO_N "checking dependency style of $depcc... $ECHO_C" >&6; } -if test "${am_cv_CXX_dependencies_compiler_type+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then - # We make a subdir and do the tests there. Otherwise we can end up - # making bogus files that we don't know about and never remove. For - # instance it was reported that on HP-UX the gcc test will end up - # making a dummy file named `D' -- because `-MD' means `put the output - # in D'. - mkdir conftest.dir - # Copy depcomp to subdir because otherwise we won't find it if we're - # using a relative directory. - cp "$am_depcomp" conftest.dir - cd conftest.dir - # We will build objects and dependencies in a subdirectory because - # it helps to detect inapplicable dependency modes. For instance - # both Tru64's cc and ICC support -MD to output dependencies as a - # side effect of compilation, but ICC will put the dependencies in - # the current directory while Tru64 will put them in the object - # directory. - mkdir sub - - am_cv_CXX_dependencies_compiler_type=none - if test "$am_compiler_list" = ""; then - am_compiler_list=`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp` - fi - for depmode in $am_compiler_list; do - # Setup a source with many dependencies, because some compilers - # like to wrap large dependency lists on column 80 (with \), and - # we should not choose a depcomp mode which is confused by this. - # - # We need to recreate these files for each test, as the compiler may - # overwrite some of them when testing with obscure command lines. - # This happens at least with the AIX C compiler. - : > sub/conftest.c - for i in 1 2 3 4 5 6; do - echo '#include "conftst'$i'.h"' >> sub/conftest.c - # Using `: > sub/conftst$i.h' creates only sub/conftst1.h with - # Solaris 8's {/usr,}/bin/sh. - touch sub/conftst$i.h - done - echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf - - case $depmode in - nosideeffect) - # after this tag, mechanisms are not by side-effect, so they'll - # only be used when explicitly requested - if test "x$enable_dependency_tracking" = xyes; then - continue - else - break - fi - ;; - none) break ;; - esac - # We check with `-c' and `-o' for the sake of the "dashmstdout" - # mode. It turns out that the SunPro C++ compiler does not properly - # handle `-M -o', and we need to detect this. - if depmode=$depmode \ - source=sub/conftest.c object=sub/conftest.${OBJEXT-o} \ - depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ - $SHELL ./depcomp $depcc -c -o sub/conftest.${OBJEXT-o} sub/conftest.c \ - >/dev/null 2>conftest.err && - grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 && - grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && - grep sub/conftest.${OBJEXT-o} sub/conftest.Po > /dev/null 2>&1 && - ${MAKE-make} -s -f confmf > /dev/null 2>&1; then - # icc doesn't choke on unknown options, it will just issue warnings - # or remarks (even with -Werror). So we grep stderr for any message - # that says an option was ignored or not supported. - # When given -MP, icc 7.0 and 7.1 complain thusly: - # icc: Command line warning: ignoring option '-M'; no argument required - # The diagnosis changed in icc 8.0: - # icc: Command line remark: option '-MP' not supported - if (grep 'ignoring option' conftest.err || - grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else - am_cv_CXX_dependencies_compiler_type=$depmode - break + _lt_result=$? + # If there is a non-empty error log, and "single_module" + # appears in it, assume the flag caused a linker warning + if test -s conftest.err && $GREP single_module conftest.err; then + cat conftest.err >&5 + # Otherwise, if the output was created with a 0 exit code from + # the compiler, it worked. + elif test -f libconftest.dylib && test $_lt_result -eq 0; then + lt_cv_apple_cc_single_mod=yes + else + cat conftest.err >&5 + fi + rm -rf libconftest.dylib* + rm -f conftest.* fi - fi - done +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_apple_cc_single_mod" >&5 +$as_echo "$lt_cv_apple_cc_single_mod" >&6; } - cd .. - rm -rf conftest.dir + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for -exported_symbols_list linker flag" >&5 +$as_echo_n "checking for -exported_symbols_list linker flag... " >&6; } +if ${lt_cv_ld_exported_symbols_list+:} false; then : + $as_echo_n "(cached) " >&6 else - am_cv_CXX_dependencies_compiler_type=none + lt_cv_ld_exported_symbols_list=no + save_LDFLAGS=$LDFLAGS + echo "_main" > conftest.sym + LDFLAGS="$LDFLAGS -Wl,-exported_symbols_list,conftest.sym" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + lt_cv_ld_exported_symbols_list=yes +else + lt_cv_ld_exported_symbols_list=no fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + LDFLAGS="$save_LDFLAGS" fi -{ echo "$as_me:$LINENO: result: $am_cv_CXX_dependencies_compiler_type" >&5 -echo "${ECHO_T}$am_cv_CXX_dependencies_compiler_type" >&6; } -CXXDEPMODE=depmode=$am_cv_CXX_dependencies_compiler_type +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ld_exported_symbols_list" >&5 +$as_echo "$lt_cv_ld_exported_symbols_list" >&6; } - if - test "x$enable_dependency_tracking" != xno \ - && test "$am_cv_CXX_dependencies_compiler_type" = gcc3; then - am__fastdepCXX_TRUE= - am__fastdepCXX_FALSE='#' + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for -force_load linker flag" >&5 +$as_echo_n "checking for -force_load linker flag... " >&6; } +if ${lt_cv_ld_force_load+:} false; then : + $as_echo_n "(cached) " >&6 else - am__fastdepCXX_TRUE='#' - am__fastdepCXX_FALSE= -fi + lt_cv_ld_force_load=no + cat > conftest.c << _LT_EOF +int forced_loaded() { return 2;} +_LT_EOF + echo "$LTCC $LTCFLAGS -c -o conftest.o conftest.c" >&5 + $LTCC $LTCFLAGS -c -o conftest.o conftest.c 2>&5 + echo "$AR cru libconftest.a conftest.o" >&5 + $AR cru libconftest.a conftest.o 2>&5 + echo "$RANLIB libconftest.a" >&5 + $RANLIB libconftest.a 2>&5 + cat > conftest.c << _LT_EOF +int main() { return 0;} +_LT_EOF + echo "$LTCC $LTCFLAGS $LDFLAGS -o conftest conftest.c -Wl,-force_load,./libconftest.a" >&5 + $LTCC $LTCFLAGS $LDFLAGS -o conftest conftest.c -Wl,-force_load,./libconftest.a 2>conftest.err + _lt_result=$? + if test -s conftest.err && $GREP force_load conftest.err; then + cat conftest.err >&5 + elif test -f conftest && test $_lt_result -eq 0 && $GREP forced_load conftest >/dev/null 2>&1 ; then + lt_cv_ld_force_load=yes + else + cat conftest.err >&5 + fi + rm -f conftest.err libconftest.a conftest conftest.c + rm -rf conftest.dSYM +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ld_force_load" >&5 +$as_echo "$lt_cv_ld_force_load" >&6; } + case $host_os in + rhapsody* | darwin1.[012]) + _lt_dar_allow_undefined='${wl}-undefined ${wl}suppress' ;; + darwin1.*) + _lt_dar_allow_undefined='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' ;; + darwin*) # darwin 5.x on + # if running on 10.5 or later, the deployment target defaults + # to the OS version, if on x86, and 10.4, the deployment + # target defaults to 10.4. Don't you love it? + case ${MACOSX_DEPLOYMENT_TARGET-10.0},$host in + 10.0,*86*-darwin8*|10.0,*-darwin[91]*) + _lt_dar_allow_undefined='${wl}-undefined ${wl}dynamic_lookup' ;; + 10.[012]*) + _lt_dar_allow_undefined='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' ;; + 10.*) + _lt_dar_allow_undefined='${wl}-undefined ${wl}dynamic_lookup' ;; + esac + ;; + esac + if test "$lt_cv_apple_cc_single_mod" = "yes"; then + _lt_dar_single_mod='$single_module' + fi + if test "$lt_cv_ld_exported_symbols_list" = "yes"; then + _lt_dar_export_syms=' ${wl}-exported_symbols_list,$output_objdir/${libname}-symbols.expsym' + else + _lt_dar_export_syms='~$NMEDIT -s $output_objdir/${libname}-symbols.expsym ${lib}' + fi + if test "$DSYMUTIL" != ":" && test "$lt_cv_ld_force_load" = "no"; then + _lt_dsymutil='~$DSYMUTIL $lib || :' + else + _lt_dsymutil= + fi + ;; + esac -if test -n "$CXX" && ( test "X$CXX" != "Xno" && - ( (test "X$CXX" = "Xg++" && `g++ -v >/dev/null 2>&1` ) || - (test "X$CXX" != "Xg++"))) ; then - ac_ext=cpp -ac_cpp='$CXXCPP $CPPFLAGS' -ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_cxx_compiler_gnu -{ echo "$as_me:$LINENO: checking how to run the C++ preprocessor" >&5 -echo $ECHO_N "checking how to run the C++ preprocessor... $ECHO_C" >&6; } -if test -z "$CXXCPP"; then - if test "${ac_cv_prog_CXXCPP+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to run the C preprocessor" >&5 +$as_echo_n "checking how to run the C preprocessor... " >&6; } +# On Suns, sometimes $CPP names a directory. +if test -n "$CPP" && test -d "$CPP"; then + CPP= +fi +if test -z "$CPP"; then + if ${ac_cv_prog_CPP+:} false; then : + $as_echo_n "(cached) " >&6 else - # Double quotes because CXXCPP needs to be expanded - for CXXCPP in "$CXX -E" "/lib/cpp" + # Double quotes because CPP needs to be expanded + for CPP in "$CC -E" "$CC -E -traditional-cpp" "/lib/cpp" do ac_preproc_ok=false -for ac_cxx_preproc_warn_flag in '' yes +for ac_c_preproc_warn_flag in '' yes do # Use a header file that comes with gcc, so configuring glibc # with a fresh cross-compiler works. @@ -7727,11 +7448,7 @@ do # exists even on freestanding compilers. # On the NeXT, cc -E runs the code through the compiler's parser, # not just through cpp. "Syntax error" is here to catch this case. - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF + cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #ifdef __STDC__ # include @@ -7740,91 +7457,49 @@ cat >>conftest.$ac_ext <<_ACEOF #endif Syntax error _ACEOF -if { (ac_try="$ac_cpp conftest.$ac_ext" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } >/dev/null && { - test -z "$ac_cxx_preproc_warn_flag$ac_cxx_werror_flag" || - test ! -s conftest.err - }; then - : -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 +if ac_fn_c_try_cpp "$LINENO"; then : +else # Broken: fails on valid input. continue fi - -rm -f conftest.err conftest.$ac_ext +rm -f conftest.err conftest.i conftest.$ac_ext # OK, works on sane cases. Now check whether nonexistent headers # can be detected and how. - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF + cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include _ACEOF -if { (ac_try="$ac_cpp conftest.$ac_ext" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } >/dev/null && { - test -z "$ac_cxx_preproc_warn_flag$ac_cxx_werror_flag" || - test ! -s conftest.err - }; then +if ac_fn_c_try_cpp "$LINENO"; then : # Broken: success on invalid input. continue else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - # Passes both tests. ac_preproc_ok=: break fi - -rm -f conftest.err conftest.$ac_ext +rm -f conftest.err conftest.i conftest.$ac_ext done # Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. -rm -f conftest.err conftest.$ac_ext -if $ac_preproc_ok; then +rm -f conftest.i conftest.err conftest.$ac_ext +if $ac_preproc_ok; then : break fi done - ac_cv_prog_CXXCPP=$CXXCPP + ac_cv_prog_CPP=$CPP fi - CXXCPP=$ac_cv_prog_CXXCPP + CPP=$ac_cv_prog_CPP else - ac_cv_prog_CXXCPP=$CXXCPP + ac_cv_prog_CPP=$CPP fi -{ echo "$as_me:$LINENO: result: $CXXCPP" >&5 -echo "${ECHO_T}$CXXCPP" >&6; } +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $CPP" >&5 +$as_echo "$CPP" >&6; } ac_preproc_ok=false -for ac_cxx_preproc_warn_flag in '' yes +for ac_c_preproc_warn_flag in '' yes do # Use a header file that comes with gcc, so configuring glibc # with a fresh cross-compiler works. @@ -7832,11 +7507,7 @@ do # exists even on freestanding compilers. # On the NeXT, cc -E runs the code through the compiler's parser, # not just through cpp. "Syntax error" is here to catch this case. - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF + cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #ifdef __STDC__ # include @@ -7845,91 +7516,201 @@ cat >>conftest.$ac_ext <<_ACEOF #endif Syntax error _ACEOF -if { (ac_try="$ac_cpp conftest.$ac_ext" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } >/dev/null && { - test -z "$ac_cxx_preproc_warn_flag$ac_cxx_werror_flag" || - test ! -s conftest.err - }; then +if ac_fn_c_try_cpp "$LINENO"; then : + +else + # Broken: fails on valid input. +continue +fi +rm -f conftest.err conftest.i conftest.$ac_ext + + # OK, works on sane cases. Now check whether nonexistent headers + # can be detected and how. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +_ACEOF +if ac_fn_c_try_cpp "$LINENO"; then : + # Broken: success on invalid input. +continue +else + # Passes both tests. +ac_preproc_ok=: +break +fi +rm -f conftest.err conftest.i conftest.$ac_ext + +done +# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. +rm -f conftest.i conftest.err conftest.$ac_ext +if $ac_preproc_ok; then : + +else + { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error $? "C preprocessor \"$CPP\" fails sanity check +See \`config.log' for more details" "$LINENO" 5; } +fi + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for ANSI C header files" >&5 +$as_echo_n "checking for ANSI C header files... " >&6; } +if ${ac_cv_header_stdc+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +#include +#include +#include + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + ac_cv_header_stdc=yes +else + ac_cv_header_stdc=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + +if test $ac_cv_header_stdc = yes; then + # SunOS 4.x string.h does not declare mem*, contrary to ANSI. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include + +_ACEOF +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + $EGREP "memchr" >/dev/null 2>&1; then : + +else + ac_cv_header_stdc=no +fi +rm -f conftest* + +fi + +if test $ac_cv_header_stdc = yes; then + # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include + +_ACEOF +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + $EGREP "free" >/dev/null 2>&1; then : + +else + ac_cv_header_stdc=no +fi +rm -f conftest* + +fi + +if test $ac_cv_header_stdc = yes; then + # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi. + if test "$cross_compiling" = yes; then : : else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +#include +#if ((' ' & 0x0FF) == 0x020) +# define ISLOWER(c) ('a' <= (c) && (c) <= 'z') +# define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c)) +#else +# define ISLOWER(c) \ + (('a' <= (c) && (c) <= 'i') \ + || ('j' <= (c) && (c) <= 'r') \ + || ('s' <= (c) && (c) <= 'z')) +# define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c)) +#endif + +#define XOR(e, f) (((e) && !(f)) || (!(e) && (f))) +int +main () +{ + int i; + for (i = 0; i < 256; i++) + if (XOR (islower (i), ISLOWER (i)) + || toupper (i) != TOUPPER (i)) + return 2; + return 0; +} +_ACEOF +if ac_fn_c_try_run "$LINENO"; then : + +else + ac_cv_header_stdc=no +fi +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ + conftest.$ac_objext conftest.beam conftest.$ac_ext +fi - # Broken: fails on valid input. -continue fi +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_stdc" >&5 +$as_echo "$ac_cv_header_stdc" >&6; } +if test $ac_cv_header_stdc = yes; then -rm -f conftest.err conftest.$ac_ext +$as_echo "#define STDC_HEADERS 1" >>confdefs.h - # OK, works on sane cases. Now check whether nonexistent headers - # can be detected and how. - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -#include +fi + +# On IRIX 5.3, sys/types and inttypes.h are conflicting. +for ac_header in sys/types.h sys/stat.h stdlib.h string.h memory.h strings.h \ + inttypes.h stdint.h unistd.h +do : + as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` +ac_fn_c_check_header_compile "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default +" +if eval test \"x\$"$as_ac_Header"\" = x"yes"; then : + cat >>confdefs.h <<_ACEOF +#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 _ACEOF -if { (ac_try="$ac_cpp conftest.$ac_ext" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } >/dev/null && { - test -z "$ac_cxx_preproc_warn_flag$ac_cxx_werror_flag" || - test ! -s conftest.err - }; then - # Broken: success on invalid input. -continue -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - # Passes both tests. -ac_preproc_ok=: -break fi -rm -f conftest.err conftest.$ac_ext - done -# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. -rm -f conftest.err conftest.$ac_ext -if $ac_preproc_ok; then - : -else - _lt_caught_CXX_error=yes -fi -ac_ext=cpp -ac_cpp='$CXXCPP $CPPFLAGS' -ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_cxx_compiler_gnu -else - _lt_caught_CXX_error=yes +for ac_header in dlfcn.h +do : + ac_fn_c_check_header_compile "$LINENO" "dlfcn.h" "ac_cv_header_dlfcn_h" "$ac_includes_default +" +if test "x$ac_cv_header_dlfcn_h" = xyes; then : + cat >>confdefs.h <<_ACEOF +#define HAVE_DLFCN_H 1 +_ACEOF + fi +done + + + +func_stripname_cnf () +{ + case ${2} in + .*) func_stripname_result=`$ECHO "${3}" | $SED "s%^${1}%%; s%\\\\${2}\$%%"`;; + *) func_stripname_result=`$ECHO "${3}" | $SED "s%^${1}%%; s%${2}\$%%"`;; + esac +} # func_stripname_cnf + @@ -7945,7 +7726,7 @@ fi # Check whether --enable-shared was given. -if test "${enable_shared+set}" = set; then +if test "${enable_shared+set}" = set; then : enableval=$enable_shared; p=${PACKAGE-default} case $enableval in yes) enable_shared=yes ;; @@ -7976,7 +7757,7 @@ fi # Check whether --enable-static was given. -if test "${enable_static+set}" = set; then +if test "${enable_static+set}" = set; then : enableval=$enable_static; p=${PACKAGE-default} case $enableval in yes) enable_static=yes ;; @@ -8008,8 +7789,23 @@ fi # Check whether --with-pic was given. -if test "${with_pic+set}" = set; then - withval=$with_pic; pic_mode="$withval" +if test "${with_pic+set}" = set; then : + withval=$with_pic; lt_p=${PACKAGE-default} + case $withval in + yes|no) pic_mode=$withval ;; + *) + pic_mode=default + # Look at the argument we got. We use all the common list separators. + lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," + for lt_pkg in $withval; do + IFS="$lt_save_ifs" + if test "X$lt_pkg" = "X$lt_p"; then + pic_mode=yes + fi + done + IFS="$lt_save_ifs" + ;; + esac else pic_mode=default fi @@ -8024,7 +7820,7 @@ test -z "$pic_mode" && pic_mode=default # Check whether --enable-fast-install was given. -if test "${enable_fast_install+set}" = set; then +if test "${enable_fast_install+set}" = set; then : enableval=$enable_fast_install; p=${PACKAGE-default} case $enableval in yes) enable_fast_install=yes ;; @@ -8080,6 +7876,11 @@ LIBTOOL='$(SHELL) $(top_builddir)/libtool' + + + + + @@ -8105,10 +7906,10 @@ if test -n "${ZSH_VERSION+set}" ; then setopt NO_GLOB_SUBST fi -{ echo "$as_me:$LINENO: checking for objdir" >&5 -echo $ECHO_N "checking for objdir... $ECHO_C" >&6; } -if test "${lt_cv_objdir+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for objdir" >&5 +$as_echo_n "checking for objdir... " >&6; } +if ${lt_cv_objdir+:} false; then : + $as_echo_n "(cached) " >&6 else rm -f .libs 2>/dev/null mkdir .libs 2>/dev/null @@ -8120,8 +7921,8 @@ else fi rmdir .libs 2>/dev/null fi -{ echo "$as_me:$LINENO: result: $lt_cv_objdir" >&5 -echo "${ECHO_T}$lt_cv_objdir" >&6; } +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_objdir" >&5 +$as_echo "$lt_cv_objdir" >&6; } objdir=$lt_cv_objdir @@ -8135,19 +7936,6 @@ _ACEOF - - - - - - - - - - - - - case $host_os in aix3*) # AIX sometimes has problems with the GCC collect2 program. For some @@ -8160,23 +7948,6 @@ aix3*) ;; esac -# Sed substitution that helps us do robust quoting. It backslashifies -# metacharacters that are still active within double-quoted strings. -sed_quote_subst='s/\(["`$\\]\)/\\\1/g' - -# Same as above, but do not quote variable references. -double_quote_subst='s/\(["`\\]\)/\\\1/g' - -# Sed substitution to delay expansion of an escaped shell variable in a -# double_quote_subst'ed string. -delay_variable_subst='s/\\\\\\\\\\\$/\\\\\\$/g' - -# Sed substitution to delay expansion of an escaped single quote. -delay_single_quote_subst='s/'\''/'\'\\\\\\\'\''/g' - -# Sed substitution to avoid accidental globbing in evaled expressions -no_glob_subst='s/\*/\\\*/g' - # Global variables: ofile=libtool can_build_shared=yes @@ -8205,7 +7976,7 @@ for cc_temp in $compiler""; do *) break;; esac done -cc_basename=`$ECHO "X$cc_temp" | $Xsed -e 's%.*/%%' -e "s%^$host_alias-%%"` +cc_basename=`$ECHO "$cc_temp" | $SED "s%.*/%%; s%^$host_alias-%%"` # Only perform the check for file, if the check method requires it @@ -8213,10 +7984,10 @@ test -z "$MAGIC_CMD" && MAGIC_CMD=file case $deplibs_check_method in file_magic*) if test "$file_magic_cmd" = '$MAGIC_CMD'; then - { echo "$as_me:$LINENO: checking for ${ac_tool_prefix}file" >&5 -echo $ECHO_N "checking for ${ac_tool_prefix}file... $ECHO_C" >&6; } -if test "${lt_cv_path_MAGIC_CMD+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ${ac_tool_prefix}file" >&5 +$as_echo_n "checking for ${ac_tool_prefix}file... " >&6; } +if ${lt_cv_path_MAGIC_CMD+:} false; then : + $as_echo_n "(cached) " >&6 else case $MAGIC_CMD in [\\/*] | ?:[\\/]*) @@ -8266,11 +8037,11 @@ fi MAGIC_CMD="$lt_cv_path_MAGIC_CMD" if test -n "$MAGIC_CMD"; then - { echo "$as_me:$LINENO: result: $MAGIC_CMD" >&5 -echo "${ECHO_T}$MAGIC_CMD" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MAGIC_CMD" >&5 +$as_echo "$MAGIC_CMD" >&6; } else - { echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } fi @@ -8279,10 +8050,10 @@ fi if test -z "$lt_cv_path_MAGIC_CMD"; then if test -n "$ac_tool_prefix"; then - { echo "$as_me:$LINENO: checking for file" >&5 -echo $ECHO_N "checking for file... $ECHO_C" >&6; } -if test "${lt_cv_path_MAGIC_CMD+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for file" >&5 +$as_echo_n "checking for file... " >&6; } +if ${lt_cv_path_MAGIC_CMD+:} false; then : + $as_echo_n "(cached) " >&6 else case $MAGIC_CMD in [\\/*] | ?:[\\/]*) @@ -8332,11 +8103,11 @@ fi MAGIC_CMD="$lt_cv_path_MAGIC_CMD" if test -n "$MAGIC_CMD"; then - { echo "$as_me:$LINENO: result: $MAGIC_CMD" >&5 -echo "${ECHO_T}$MAGIC_CMD" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MAGIC_CMD" >&5 +$as_echo "$MAGIC_CMD" >&6; } else - { echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } fi @@ -8405,17 +8176,26 @@ _lt_linker_boilerplate=`cat conftest.err` $RM -r conftest* +## CAVEAT EMPTOR: +## There is no encapsulation within the following macros, do not change +## the running order or otherwise move them around unless you know exactly +## what you are doing... if test -n "$compiler"; then lt_prog_compiler_no_builtin_flag= if test "$GCC" = yes; then - lt_prog_compiler_no_builtin_flag=' -fno-builtin' + case $cc_basename in + nvcc*) + lt_prog_compiler_no_builtin_flag=' -Xcompiler -fno-builtin' ;; + *) + lt_prog_compiler_no_builtin_flag=' -fno-builtin' ;; + esac - { echo "$as_me:$LINENO: checking if $compiler supports -fno-rtti -fno-exceptions" >&5 -echo $ECHO_N "checking if $compiler supports -fno-rtti -fno-exceptions... $ECHO_C" >&6; } -if test "${lt_cv_prog_compiler_rtti_exceptions+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -fno-rtti -fno-exceptions" >&5 +$as_echo_n "checking if $compiler supports -fno-rtti -fno-exceptions... " >&6; } +if ${lt_cv_prog_compiler_rtti_exceptions+:} false; then : + $as_echo_n "(cached) " >&6 else lt_cv_prog_compiler_rtti_exceptions=no ac_outfile=conftest.$ac_objext @@ -8430,15 +8210,15 @@ else -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` - (eval echo "\"\$as_me:8433: $lt_compile\"" >&5) + (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5) (eval "$lt_compile" 2>conftest.err) ac_status=$? cat conftest.err >&5 - echo "$as_me:8437: \$? = $ac_status" >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 if (exit $ac_status) && test -s "$ac_outfile"; then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings other than the usual output. - $ECHO "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' >conftest.exp + $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' >conftest.exp $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then lt_cv_prog_compiler_rtti_exceptions=yes @@ -8447,8 +8227,8 @@ else $RM conftest* fi -{ echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_rtti_exceptions" >&5 -echo "${ECHO_T}$lt_cv_prog_compiler_rtti_exceptions" >&6; } +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_rtti_exceptions" >&5 +$as_echo "$lt_cv_prog_compiler_rtti_exceptions" >&6; } if test x"$lt_cv_prog_compiler_rtti_exceptions" = xyes; then lt_prog_compiler_no_builtin_flag="$lt_prog_compiler_no_builtin_flag -fno-rtti -fno-exceptions" @@ -8467,8 +8247,6 @@ fi lt_prog_compiler_pic= lt_prog_compiler_static= -{ echo "$as_me:$LINENO: checking for $compiler option to produce PIC" >&5 -echo $ECHO_N "checking for $compiler option to produce PIC... $ECHO_C" >&6; } if test "$GCC" = yes; then lt_prog_compiler_wl='-Wl,' @@ -8502,7 +8280,7 @@ echo $ECHO_N "checking for $compiler option to produce PIC... $ECHO_C" >&6; } # PIC is the default for these OSes. ;; - mingw* | cygwin* | pw32* | os2*) + mingw* | cygwin* | pw32* | os2* | cegcc*) # This hack is so that the source file can tell whether it is being # built for inclusion in a dll (and should export symbols for example). # Although the cygwin gcc ignores -fPIC, still need this for old-style @@ -8516,11 +8294,18 @@ echo $ECHO_N "checking for $compiler option to produce PIC... $ECHO_C" >&6; } lt_prog_compiler_pic='-fno-common' ;; + haiku*) + # PIC is the default for Haiku. + # The "-static" flag exists, but is broken. + lt_prog_compiler_static= + ;; + hpux*) - # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but - # not for PA HP-UX. + # PIC is the default for 64-bit PA HP-UX, but not for 32-bit + # PA HP-UX. On IA64 HP-UX, PIC is the default but the pic flag + # sets the default TLS model and affects inlining. case $host_cpu in - hppa*64*|ia64*) + hppa*64*) # +Z the default ;; *) @@ -8557,6 +8342,15 @@ echo $ECHO_N "checking for $compiler option to produce PIC... $ECHO_C" >&6; } lt_prog_compiler_pic='-fPIC' ;; esac + + case $cc_basename in + nvcc*) # Cuda Compiler Driver 2.2 + lt_prog_compiler_wl='-Xlinker ' + if test -n "$lt_prog_compiler_pic"; then + lt_prog_compiler_pic="-Xcompiler $lt_prog_compiler_pic" + fi + ;; + esac else # PORTME Check for flag to pass linker flags through the system compiler. case $host_os in @@ -8570,7 +8364,7 @@ echo $ECHO_N "checking for $compiler option to produce PIC... $ECHO_C" >&6; } fi ;; - mingw* | cygwin* | pw32* | os2*) + mingw* | cygwin* | pw32* | os2* | cegcc*) # This hack is so that the source file can tell whether it is being # built for inclusion in a dll (and should export symbols for example). lt_prog_compiler_pic='-DDLL_EXPORT' @@ -8598,14 +8392,34 @@ echo $ECHO_N "checking for $compiler option to produce PIC... $ECHO_C" >&6; } lt_prog_compiler_static='-non_shared' ;; - linux* | k*bsd*-gnu) + linux* | k*bsd*-gnu | kopensolaris*-gnu) case $cc_basename in - icc* | ecc* | ifort*) + # old Intel for x86_64 which still supported -KPIC. + ecc*) lt_prog_compiler_wl='-Wl,' lt_prog_compiler_pic='-KPIC' lt_prog_compiler_static='-static' ;; - pgcc* | pgf77* | pgf90* | pgf95*) + # icc used to be incompatible with GCC. + # ICC 10 doesn't accept -KPIC any more. + icc* | ifort*) + lt_prog_compiler_wl='-Wl,' + lt_prog_compiler_pic='-fPIC' + lt_prog_compiler_static='-static' + ;; + # Lahey Fortran 8.1. + lf95*) + lt_prog_compiler_wl='-Wl,' + lt_prog_compiler_pic='--shared' + lt_prog_compiler_static='--static' + ;; + nagfor*) + # NAG Fortran compiler + lt_prog_compiler_wl='-Wl,-Wl,,' + lt_prog_compiler_pic='-PIC' + lt_prog_compiler_static='-Bstatic' + ;; + pgcc* | pgf77* | pgf90* | pgf95* | pgfortran*) # Portland Group compilers (*not* the Pentium gcc compiler, # which looks to be a dead project) lt_prog_compiler_wl='-Wl,' @@ -8617,25 +8431,40 @@ echo $ECHO_N "checking for $compiler option to produce PIC... $ECHO_C" >&6; } # All Alpha code is PIC. lt_prog_compiler_static='-non_shared' ;; - xl*) - # IBM XL C 8.0/Fortran 10.1 on PPC + xl* | bgxl* | bgf* | mpixl*) + # IBM XL C 8.0/Fortran 10.1, 11.1 on PPC and BlueGene lt_prog_compiler_wl='-Wl,' lt_prog_compiler_pic='-qpic' lt_prog_compiler_static='-qstaticlink' ;; *) case `$CC -V 2>&1 | sed 5q` in + *Sun\ Ceres\ Fortran* | *Sun*Fortran*\ [1-7].* | *Sun*Fortran*\ 8.[0-3]*) + # Sun Fortran 8.3 passes all unrecognized flags to the linker + lt_prog_compiler_pic='-KPIC' + lt_prog_compiler_static='-Bstatic' + lt_prog_compiler_wl='' + ;; + *Sun\ F* | *Sun*Fortran*) + lt_prog_compiler_pic='-KPIC' + lt_prog_compiler_static='-Bstatic' + lt_prog_compiler_wl='-Qoption ld ' + ;; *Sun\ C*) # Sun C 5.9 lt_prog_compiler_pic='-KPIC' lt_prog_compiler_static='-Bstatic' lt_prog_compiler_wl='-Wl,' ;; - *Sun\ F*) - # Sun Fortran 8.3 passes all unrecognized flags to the linker - lt_prog_compiler_pic='-KPIC' + *Intel*\ [CF]*Compiler*) + lt_prog_compiler_wl='-Wl,' + lt_prog_compiler_pic='-fPIC' + lt_prog_compiler_static='-static' + ;; + *Portland\ Group*) + lt_prog_compiler_wl='-Wl,' + lt_prog_compiler_pic='-fpic' lt_prog_compiler_static='-Bstatic' - lt_prog_compiler_wl='' ;; esac ;; @@ -8667,7 +8496,7 @@ echo $ECHO_N "checking for $compiler option to produce PIC... $ECHO_C" >&6; } lt_prog_compiler_pic='-KPIC' lt_prog_compiler_static='-Bstatic' case $cc_basename in - f77* | f90* | f95*) + f77* | f90* | f95* | sunf77* | sunf90* | sunf95*) lt_prog_compiler_wl='-Qoption ld ';; *) lt_prog_compiler_wl='-Wl,';; @@ -8724,22 +8553,26 @@ case $host_os in lt_prog_compiler_pic="$lt_prog_compiler_pic -DPIC" ;; esac -{ echo "$as_me:$LINENO: result: $lt_prog_compiler_pic" >&5 -echo "${ECHO_T}$lt_prog_compiler_pic" >&6; } - - - - +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $compiler option to produce PIC" >&5 +$as_echo_n "checking for $compiler option to produce PIC... " >&6; } +if ${lt_cv_prog_compiler_pic+:} false; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_prog_compiler_pic=$lt_prog_compiler_pic +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic" >&5 +$as_echo "$lt_cv_prog_compiler_pic" >&6; } +lt_prog_compiler_pic=$lt_cv_prog_compiler_pic # # Check to make sure the PIC flag actually works. # if test -n "$lt_prog_compiler_pic"; then - { echo "$as_me:$LINENO: checking if $compiler PIC flag $lt_prog_compiler_pic works" >&5 -echo $ECHO_N "checking if $compiler PIC flag $lt_prog_compiler_pic works... $ECHO_C" >&6; } -if test "${lt_cv_prog_compiler_pic_works+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler PIC flag $lt_prog_compiler_pic works" >&5 +$as_echo_n "checking if $compiler PIC flag $lt_prog_compiler_pic works... " >&6; } +if ${lt_cv_prog_compiler_pic_works+:} false; then : + $as_echo_n "(cached) " >&6 else lt_cv_prog_compiler_pic_works=no ac_outfile=conftest.$ac_objext @@ -8754,15 +8587,15 @@ else -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` - (eval echo "\"\$as_me:8757: $lt_compile\"" >&5) + (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5) (eval "$lt_compile" 2>conftest.err) ac_status=$? cat conftest.err >&5 - echo "$as_me:8761: \$? = $ac_status" >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 if (exit $ac_status) && test -s "$ac_outfile"; then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings other than the usual output. - $ECHO "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' >conftest.exp + $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' >conftest.exp $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then lt_cv_prog_compiler_pic_works=yes @@ -8771,8 +8604,8 @@ else $RM conftest* fi -{ echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_pic_works" >&5 -echo "${ECHO_T}$lt_cv_prog_compiler_pic_works" >&6; } +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic_works" >&5 +$as_echo "$lt_cv_prog_compiler_pic_works" >&6; } if test x"$lt_cv_prog_compiler_pic_works" = xyes; then case $lt_prog_compiler_pic in @@ -8791,14 +8624,19 @@ fi + + + + + # # Check to make sure the static flag actually works. # wl=$lt_prog_compiler_wl eval lt_tmp_static_flag=\"$lt_prog_compiler_static\" -{ echo "$as_me:$LINENO: checking if $compiler static flag $lt_tmp_static_flag works" >&5 -echo $ECHO_N "checking if $compiler static flag $lt_tmp_static_flag works... $ECHO_C" >&6; } -if test "${lt_cv_prog_compiler_static_works+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler static flag $lt_tmp_static_flag works" >&5 +$as_echo_n "checking if $compiler static flag $lt_tmp_static_flag works... " >&6; } +if ${lt_cv_prog_compiler_static_works+:} false; then : + $as_echo_n "(cached) " >&6 else lt_cv_prog_compiler_static_works=no save_LDFLAGS="$LDFLAGS" @@ -8810,7 +8648,7 @@ else if test -s conftest.err; then # Append any errors to the config.log. cat conftest.err 1>&5 - $ECHO "X$_lt_linker_boilerplate" | $Xsed -e '/^$/d' > conftest.exp + $ECHO "$_lt_linker_boilerplate" | $SED '/^$/d' > conftest.exp $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 if diff conftest.exp conftest.er2 >/dev/null; then lt_cv_prog_compiler_static_works=yes @@ -8823,8 +8661,8 @@ else LDFLAGS="$save_LDFLAGS" fi -{ echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_static_works" >&5 -echo "${ECHO_T}$lt_cv_prog_compiler_static_works" >&6; } +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_static_works" >&5 +$as_echo "$lt_cv_prog_compiler_static_works" >&6; } if test x"$lt_cv_prog_compiler_static_works" = xyes; then : @@ -8838,10 +8676,10 @@ fi - { echo "$as_me:$LINENO: checking if $compiler supports -c -o file.$ac_objext" >&5 -echo $ECHO_N "checking if $compiler supports -c -o file.$ac_objext... $ECHO_C" >&6; } -if test "${lt_cv_prog_compiler_c_o+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5 +$as_echo_n "checking if $compiler supports -c -o file.$ac_objext... " >&6; } +if ${lt_cv_prog_compiler_c_o+:} false; then : + $as_echo_n "(cached) " >&6 else lt_cv_prog_compiler_c_o=no $RM -r conftest 2>/dev/null @@ -8859,16 +8697,16 @@ else -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` - (eval echo "\"\$as_me:8862: $lt_compile\"" >&5) + (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5) (eval "$lt_compile" 2>out/conftest.err) ac_status=$? cat out/conftest.err >&5 - echo "$as_me:8866: \$? = $ac_status" >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 if (exit $ac_status) && test -s out/conftest2.$ac_objext then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings - $ECHO "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' > out/conftest.exp + $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' > out/conftest.exp $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2 if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then lt_cv_prog_compiler_c_o=yes @@ -8885,18 +8723,18 @@ else $RM conftest* fi -{ echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_c_o" >&5 -echo "${ECHO_T}$lt_cv_prog_compiler_c_o" >&6; } +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o" >&5 +$as_echo "$lt_cv_prog_compiler_c_o" >&6; } - { echo "$as_me:$LINENO: checking if $compiler supports -c -o file.$ac_objext" >&5 -echo $ECHO_N "checking if $compiler supports -c -o file.$ac_objext... $ECHO_C" >&6; } -if test "${lt_cv_prog_compiler_c_o+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5 +$as_echo_n "checking if $compiler supports -c -o file.$ac_objext... " >&6; } +if ${lt_cv_prog_compiler_c_o+:} false; then : + $as_echo_n "(cached) " >&6 else lt_cv_prog_compiler_c_o=no $RM -r conftest 2>/dev/null @@ -8914,16 +8752,16 @@ else -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` - (eval echo "\"\$as_me:8917: $lt_compile\"" >&5) + (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5) (eval "$lt_compile" 2>out/conftest.err) ac_status=$? cat out/conftest.err >&5 - echo "$as_me:8921: \$? = $ac_status" >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 if (exit $ac_status) && test -s out/conftest2.$ac_objext then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings - $ECHO "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' > out/conftest.exp + $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' > out/conftest.exp $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2 if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then lt_cv_prog_compiler_c_o=yes @@ -8940,8 +8778,8 @@ else $RM conftest* fi -{ echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_c_o" >&5 -echo "${ECHO_T}$lt_cv_prog_compiler_c_o" >&6; } +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o" >&5 +$as_echo "$lt_cv_prog_compiler_c_o" >&6; } @@ -8949,19 +8787,19 @@ echo "${ECHO_T}$lt_cv_prog_compiler_c_o" >&6; } hard_links="nottested" if test "$lt_cv_prog_compiler_c_o" = no && test "$need_locks" != no; then # do not overwrite the value of need_locks provided by the user - { echo "$as_me:$LINENO: checking if we can lock with hard links" >&5 -echo $ECHO_N "checking if we can lock with hard links... $ECHO_C" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if we can lock with hard links" >&5 +$as_echo_n "checking if we can lock with hard links... " >&6; } hard_links=yes $RM conftest* ln conftest.a conftest.b 2>/dev/null && hard_links=no touch conftest.a ln conftest.a conftest.b 2>&5 || hard_links=no ln conftest.a conftest.b 2>/dev/null && hard_links=no - { echo "$as_me:$LINENO: result: $hard_links" >&5 -echo "${ECHO_T}$hard_links" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $hard_links" >&5 +$as_echo "$hard_links" >&6; } if test "$hard_links" = no; then - { echo "$as_me:$LINENO: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&5 -echo "$as_me: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&2;} + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&5 +$as_echo "$as_me: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&2;} need_locks=warn fi else @@ -8973,8 +8811,8 @@ fi - { echo "$as_me:$LINENO: checking whether the $compiler linker ($LD) supports shared libraries" >&5 -echo $ECHO_N "checking whether the $compiler linker ($LD) supports shared libraries... $ECHO_C" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the $compiler linker ($LD) supports shared libraries" >&5 +$as_echo_n "checking whether the $compiler linker ($LD) supports shared libraries... " >&6; } runpath_var= allow_undefined_flag= @@ -8989,7 +8827,6 @@ echo $ECHO_N "checking whether the $compiler linker ($LD) supports shared librar hardcode_direct=no hardcode_direct_absolute=no hardcode_libdir_flag_spec= - hardcode_libdir_flag_spec_ld= hardcode_libdir_separator= hardcode_minus_L=no hardcode_shlibpath_var=unsupported @@ -9018,7 +8855,7 @@ echo $ECHO_N "checking whether the $compiler linker ($LD) supports shared librar extract_expsyms_cmds= case $host_os in - cygwin* | mingw* | pw32*) + cygwin* | mingw* | pw32* | cegcc*) # FIXME: the MSVC++ port hasn't been tested in a loooong time # When not using gcc, we currently assume that we are using # Microsoft Visual C++. @@ -9033,10 +8870,39 @@ echo $ECHO_N "checking whether the $compiler linker ($LD) supports shared librar openbsd*) with_gnu_ld=no ;; + linux* | k*bsd*-gnu | gnu*) + link_all_deplibs=no + ;; esac ld_shlibs=yes + + # On some targets, GNU ld is compatible enough with the native linker + # that we're better off using the native interface for both. + lt_use_gnu_ld_interface=no if test "$with_gnu_ld" = yes; then + case $host_os in + aix*) + # The AIX port of GNU ld has always aspired to compatibility + # with the native linker. However, as the warning in the GNU ld + # block says, versions before 2.19.5* couldn't really create working + # shared libraries, regardless of the interface used. + case `$LD -v 2>&1` in + *\ \(GNU\ Binutils\)\ 2.19.5*) ;; + *\ \(GNU\ Binutils\)\ 2.[2-9]*) ;; + *\ \(GNU\ Binutils\)\ [3-9]*) ;; + *) + lt_use_gnu_ld_interface=yes + ;; + esac + ;; + *) + lt_use_gnu_ld_interface=yes + ;; + esac + fi + + if test "$lt_use_gnu_ld_interface" = yes; then # If archive_cmds runs LD, not CC, wlarc should be empty wlarc='${wl}' @@ -9054,6 +8920,7 @@ echo $ECHO_N "checking whether the $compiler linker ($LD) supports shared librar fi supports_anon_versioning=no case `$LD -v 2>&1` in + *GNU\ gold*) supports_anon_versioning=yes ;; *\ [01].* | *\ 2.[0-9].* | *\ 2.10.*) ;; # catch versions < 2.11 *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ... *\ 2.11.92.0.12\ *) supports_anon_versioning=yes ;; # Mandrake 8.2 ... @@ -9069,11 +8936,12 @@ echo $ECHO_N "checking whether the $compiler linker ($LD) supports shared librar ld_shlibs=no cat <<_LT_EOF 1>&2 -*** Warning: the GNU linker, at least up to release 2.9.1, is reported +*** Warning: the GNU linker, at least up to release 2.19, is reported *** to be unable to reliably create shared libraries on AIX. *** Therefore, libtool is disabling shared libraries support. If you -*** really care for shared libraries, you may want to modify your PATH -*** so that a non-GNU linker is found, and then restart. +*** really care for shared libraries, you may want to install binutils +*** 2.20 or above, or modify your PATH so that a non-GNU linker is found. +*** You will then need to restart the configuration process. _LT_EOF fi @@ -9105,14 +8973,16 @@ _LT_EOF fi ;; - cygwin* | mingw* | pw32*) + cygwin* | mingw* | pw32* | cegcc*) # _LT_TAGVAR(hardcode_libdir_flag_spec, ) is actually meaningless, # as there is no search path for DLLs. hardcode_libdir_flag_spec='-L$libdir' + export_dynamic_flag_spec='${wl}--export-all-symbols' allow_undefined_flag=unsupported always_export_symbols=no enable_shared_with_static_runtimes=yes - export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS][ ]/s/.*[ ]\([^ ]*\)/\1 DATA/'\'' | $SED -e '\''/^[AITW][ ]/s/.*[ ]//'\'' | sort | uniq > $export_symbols' + export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS][ ]/s/.*[ ]\([^ ]*\)/\1 DATA/;s/^.*[ ]__nm__\([^ ]*\)[ ][^ ]*/\1 DATA/;/^I[ ]/d;/^[AITW][ ]/s/.* //'\'' | sort | uniq > $export_symbols' + exclude_expsyms='[_]+GLOBAL_OFFSET_TABLE_|[_]+GLOBAL__[FID]_.*|[_]+head_[A-Za-z0-9_]+_dll|[A-Za-z0-9_]+_dll_iname' if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' @@ -9130,6 +9000,11 @@ _LT_EOF fi ;; + haiku*) + archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + link_all_deplibs=yes + ;; + interix[3-9]*) hardcode_direct=no hardcode_shlibpath_var=no @@ -9145,7 +9020,7 @@ _LT_EOF archive_expsym_cmds='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' ;; - gnu* | linux* | tpf* | k*bsd*-gnu) + gnu* | linux* | tpf* | k*bsd*-gnu | kopensolaris*-gnu) tmp_diet=no if test "$host_os" = linux-dietlibc; then case $cc_basename in @@ -9155,15 +9030,16 @@ _LT_EOF if $LD --help 2>&1 | $EGREP ': supported targets:.* elf' > /dev/null \ && test "$tmp_diet" = no then - tmp_addflag= + tmp_addflag=' $pic_flag' tmp_sharedflag='-shared' case $cc_basename,$host_cpu in pgcc*) # Portland Group C compiler - whole_archive_flag_spec='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $ECHO \"$new_convenience\"` ${wl}--no-whole-archive' + whole_archive_flag_spec='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' tmp_addflag=' $pic_flag' ;; - pgf77* | pgf90* | pgf95*) # Portland Group f77 and f90 compilers - whole_archive_flag_spec='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $ECHO \"$new_convenience\"` ${wl}--no-whole-archive' + pgf77* | pgf90* | pgf95* | pgfortran*) + # Portland Group f77 and f90 compilers + whole_archive_flag_spec='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' tmp_addflag=' $pic_flag -Mnomain' ;; ecc*,ia64* | icc*,ia64*) # Intel C compiler on ia64 tmp_addflag=' -i_dynamic' ;; @@ -9171,13 +9047,20 @@ _LT_EOF tmp_addflag=' -i_dynamic -nofor_main' ;; ifc* | ifort*) # Intel Fortran compiler tmp_addflag=' -nofor_main' ;; - xl[cC]*) # IBM XL C 8.0 on PPC (deal with xlf below) + lf95*) # Lahey Fortran 8.1 + whole_archive_flag_spec= + tmp_sharedflag='--shared' ;; + xl[cC]* | bgxl[cC]* | mpixl[cC]*) # IBM XL C 8.0 on PPC (deal with xlf below) tmp_sharedflag='-qmkshrobj' tmp_addflag= ;; + nvcc*) # Cuda Compiler Driver 2.2 + whole_archive_flag_spec='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' + compiler_needs_object=yes + ;; esac case `$CC -V 2>&1 | sed 5q` in *Sun\ C*) # Sun C 5.9 - whole_archive_flag_spec='${wl}--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; $ECHO \"$new_convenience\"` ${wl}--no-whole-archive' + whole_archive_flag_spec='${wl}--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' compiler_needs_object=yes tmp_sharedflag='-G' ;; *Sun\ F*) # Sun Fortran 8.3 @@ -9193,17 +9076,16 @@ _LT_EOF fi case $cc_basename in - xlf*) + xlf* | bgf* | bgxlf* | mpixlf*) # IBM XL Fortran 10.1 on PPC cannot create shared libs itself whole_archive_flag_spec='--whole-archive$convenience --no-whole-archive' - hardcode_libdir_flag_spec= - hardcode_libdir_flag_spec_ld='-rpath $libdir' - archive_cmds='$LD -shared $libobjs $deplibs $compiler_flags -soname $soname -o $lib' + hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' + archive_cmds='$LD -shared $libobjs $deplibs $linker_flags -soname $soname -o $lib' if test "x$supports_anon_versioning" = xyes; then archive_expsym_cmds='echo "{ global:" > $output_objdir/$libname.ver~ cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ echo "local: *; };" >> $output_objdir/$libname.ver~ - $LD -shared $libobjs $deplibs $compiler_flags -soname $soname -version-script $output_objdir/$libname.ver -o $lib' + $LD -shared $libobjs $deplibs $linker_flags -soname $soname -version-script $output_objdir/$libname.ver -o $lib' fi ;; esac @@ -9212,13 +9094,13 @@ _LT_EOF fi ;; - netbsd*) + netbsd* | netbsdelf*-gnu) if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then archive_cmds='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib' wlarc= else - archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' - archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' fi ;; @@ -9236,8 +9118,8 @@ _LT_EOF _LT_EOF elif $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then - archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' - archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' else ld_shlibs=no fi @@ -9283,8 +9165,8 @@ _LT_EOF *) if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then - archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' - archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' else ld_shlibs=no fi @@ -9324,8 +9206,10 @@ _LT_EOF else # If we're using GNU nm, then we don't want the "-C" option. # -C means demangle to AIX nm, but means don't demangle with GNU nm + # Also, AIX nm treats weak defined symbols like other global + # defined symbols, whereas GNU nm marks them as "W". if $NM -V 2>&1 | $GREP 'GNU' > /dev/null; then - export_symbols_cmds='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B")) && (substr(\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols' + export_symbols_cmds='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W")) && (substr(\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols' else export_symbols_cmds='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B")) && (substr(\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols' fi @@ -9387,6 +9271,7 @@ _LT_EOF if test "$aix_use_runtimelinking" = yes; then shared_flag="$shared_flag "'${wl}-G' fi + link_all_deplibs=no else # not using gcc if test "$host_cpu" = ia64; then @@ -9402,6 +9287,7 @@ _LT_EOF fi fi + export_dynamic_flag_spec='${wl}-bexpall' # It seems that -bexpall does not export symbols beginning with # underscore (_), so it is better to generate a list of symbols to export. always_export_symbols=yes @@ -9411,11 +9297,13 @@ _LT_EOF allow_undefined_flag='-berok' # Determine the default libpath from the value encoded in an # empty executable. - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF + if test "${lt_cv_aix_libpath+set}" = set; then + aix_libpath=$lt_cv_aix_libpath +else + if ${lt_cv_aix_libpath_+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int @@ -9426,50 +9314,34 @@ main () return 0; } _ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_link") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest$ac_exeext && - $as_test_x conftest$ac_exeext; then - -lt_aix_libpath_sed=' - /Import File Strings/,/^$/ { - /^0/ { - s/^0 *\(.*\)$/\1/ - p - } - }' -aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` -# Check for a 64-bit object if we didn't find anything. -if test -z "$aix_libpath"; then - aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` -fi -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 +if ac_fn_c_try_link "$LINENO"; then : + lt_aix_libpath_sed=' + /Import File Strings/,/^$/ { + /^0/ { + s/^0 *\([^ ]*\) *$/\1/ + p + } + }' + lt_cv_aix_libpath_=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` + # Check for a 64-bit object if we didn't find anything. + if test -z "$lt_cv_aix_libpath_"; then + lt_cv_aix_libpath_=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` + fi +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + if test -z "$lt_cv_aix_libpath_"; then + lt_cv_aix_libpath_="/usr/lib:/lib" + fi fi -rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ - conftest$ac_exeext conftest.$ac_ext -if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi + aix_libpath=$lt_cv_aix_libpath_ +fi hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:'"$aix_libpath" - archive_expsym_cmds='$CC -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then $ECHO "X${wl}${allow_undefined_flag}" | $Xsed; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag" + archive_expsym_cmds='$CC -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then func_echo_all "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag" else if test "$host_cpu" = ia64; then hardcode_libdir_flag_spec='${wl}-R $libdir:/usr/lib:/lib' @@ -9478,11 +9350,13 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi else # Determine the default libpath from the value encoded in an # empty executable. - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF + if test "${lt_cv_aix_libpath+set}" = set; then + aix_libpath=$lt_cv_aix_libpath +else + if ${lt_cv_aix_libpath_+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int @@ -9493,55 +9367,44 @@ main () return 0; } _ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_link") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest$ac_exeext && - $as_test_x conftest$ac_exeext; then - -lt_aix_libpath_sed=' - /Import File Strings/,/^$/ { - /^0/ { - s/^0 *\(.*\)$/\1/ - p - } - }' -aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` -# Check for a 64-bit object if we didn't find anything. -if test -z "$aix_libpath"; then - aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` -fi -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 +if ac_fn_c_try_link "$LINENO"; then : + lt_aix_libpath_sed=' + /Import File Strings/,/^$/ { + /^0/ { + s/^0 *\([^ ]*\) *$/\1/ + p + } + }' + lt_cv_aix_libpath_=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` + # Check for a 64-bit object if we didn't find anything. + if test -z "$lt_cv_aix_libpath_"; then + lt_cv_aix_libpath_=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` + fi +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + if test -z "$lt_cv_aix_libpath_"; then + lt_cv_aix_libpath_="/usr/lib:/lib" + fi fi -rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ - conftest$ac_exeext conftest.$ac_ext -if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi + aix_libpath=$lt_cv_aix_libpath_ +fi hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:'"$aix_libpath" # Warning - without using the other run time loading flags, # -berok will link without error, but may produce a broken library. no_undefined_flag=' ${wl}-bernotok' allow_undefined_flag=' ${wl}-berok' - # Exported symbols can be pulled into shared objects from archives - whole_archive_flag_spec='$convenience' + if test "$with_gnu_ld" = yes; then + # We only use this code for GNU lds that support --whole-archive. + whole_archive_flag_spec='${wl}--whole-archive$convenience ${wl}--no-whole-archive' + else + # Exported symbols can be pulled into shared objects from archives + whole_archive_flag_spec='$convenience' + fi archive_cmds_need_lc=yes # This is similar to how AIX traditionally builds its shared libraries. archive_expsym_cmds="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname' @@ -9568,25 +9431,69 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi export_dynamic_flag_spec=-rdynamic ;; - cygwin* | mingw* | pw32*) + cygwin* | mingw* | pw32* | cegcc*) # When not using gcc, we currently assume that we are using # Microsoft Visual C++. # hardcode_libdir_flag_spec is actually meaningless, as there is # no search path for DLLs. - hardcode_libdir_flag_spec=' ' - allow_undefined_flag=unsupported - # Tell ltmain to make .lib files, not .a files. - libext=lib - # Tell ltmain to make .dll files, not .so files. - shrext_cmds=".dll" - # FIXME: Setting linknames here is a bad hack. - archive_cmds='$CC -o $lib $libobjs $compiler_flags `$ECHO "X$deplibs" | $Xsed -e '\''s/ -lc$//'\''` -link -dll~linknames=' - # The linker will automatically build a .lib file if we build a DLL. - old_archive_from_new_cmds='true' - # FIXME: Should let the user specify the lib program. - old_archive_cmds='lib -OUT:$oldlib$oldobjs$old_deplibs' - fix_srcfile_path='`cygpath -w "$srcfile"`' - enable_shared_with_static_runtimes=yes + case $cc_basename in + cl*) + # Native MSVC + hardcode_libdir_flag_spec=' ' + allow_undefined_flag=unsupported + always_export_symbols=yes + file_list_spec='@' + # Tell ltmain to make .lib files, not .a files. + libext=lib + # Tell ltmain to make .dll files, not .so files. + shrext_cmds=".dll" + # FIXME: Setting linknames here is a bad hack. + archive_cmds='$CC -o $output_objdir/$soname $libobjs $compiler_flags $deplibs -Wl,-dll~linknames=' + archive_expsym_cmds='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then + sed -n -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' -e '1\\\!p' < $export_symbols > $output_objdir/$soname.exp; + else + sed -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' < $export_symbols > $output_objdir/$soname.exp; + fi~ + $CC -o $tool_output_objdir$soname $libobjs $compiler_flags $deplibs "@$tool_output_objdir$soname.exp" -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~ + linknames=' + # The linker will not automatically build a static lib if we build a DLL. + # _LT_TAGVAR(old_archive_from_new_cmds, )='true' + enable_shared_with_static_runtimes=yes + exclude_expsyms='_NULL_IMPORT_DESCRIPTOR|_IMPORT_DESCRIPTOR_.*' + export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS][ ]/s/.*[ ]\([^ ]*\)/\1,DATA/'\'' | $SED -e '\''/^[AITW][ ]/s/.*[ ]//'\'' | sort | uniq > $export_symbols' + # Don't use ranlib + old_postinstall_cmds='chmod 644 $oldlib' + postlink_cmds='lt_outputfile="@OUTPUT@"~ + lt_tool_outputfile="@TOOL_OUTPUT@"~ + case $lt_outputfile in + *.exe|*.EXE) ;; + *) + lt_outputfile="$lt_outputfile.exe" + lt_tool_outputfile="$lt_tool_outputfile.exe" + ;; + esac~ + if test "$MANIFEST_TOOL" != ":" && test -f "$lt_outputfile.manifest"; then + $MANIFEST_TOOL -manifest "$lt_tool_outputfile.manifest" -outputresource:"$lt_tool_outputfile" || exit 1; + $RM "$lt_outputfile.manifest"; + fi' + ;; + *) + # Assume MSVC wrapper + hardcode_libdir_flag_spec=' ' + allow_undefined_flag=unsupported + # Tell ltmain to make .lib files, not .a files. + libext=lib + # Tell ltmain to make .dll files, not .so files. + shrext_cmds=".dll" + # FIXME: Setting linknames here is a bad hack. + archive_cmds='$CC -o $lib $libobjs $compiler_flags `func_echo_all "$deplibs" | $SED '\''s/ -lc$//'\''` -link -dll~linknames=' + # The linker will automatically build a .lib file if we build a DLL. + old_archive_from_new_cmds='true' + # FIXME: Should let the user specify the lib program. + old_archive_cmds='lib -OUT:$oldlib$oldobjs$old_deplibs' + enable_shared_with_static_runtimes=yes + ;; + esac ;; darwin* | rhapsody*) @@ -9596,11 +9503,20 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi hardcode_direct=no hardcode_automatic=yes hardcode_shlibpath_var=unsupported - whole_archive_flag_spec='' + if test "$lt_cv_ld_force_load" = "yes"; then + whole_archive_flag_spec='`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience ${wl}-force_load,$conv\"; done; func_echo_all \"$new_convenience\"`' + + else + whole_archive_flag_spec='' + fi link_all_deplibs=yes allow_undefined_flag="$_lt_dar_allow_undefined" - if test "$GCC" = "yes"; then - output_verbose_link_cmd=echo + case $cc_basename in + ifort*) _lt_dar_can_shared=yes ;; + *) _lt_dar_can_shared=$GCC ;; + esac + if test "$_lt_dar_can_shared" = "yes"; then + output_verbose_link_cmd=func_echo_all archive_cmds="\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod${_lt_dsymutil}" module_cmds="\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dsymutil}" archive_expsym_cmds="sed 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring ${_lt_dar_single_mod}${_lt_dar_export_syms}${_lt_dsymutil}" @@ -9618,10 +9534,6 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi hardcode_shlibpath_var=no ;; - freebsd1*) - ld_shlibs=no - ;; - # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor # support. Future versions do this automatically, but an explicit c++rt0.o # does not break anything, and helps significantly (at the cost of a little @@ -9634,7 +9546,7 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi ;; # Unfortunately, older versions of FreeBSD 2 do not have this feature. - freebsd2*) + freebsd2.*) archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' hardcode_direct=yes hardcode_minus_L=yes @@ -9643,7 +9555,7 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi # FreeBSD 3 and greater uses gcc -shared to do shared libraries. freebsd* | dragonfly*) - archive_cmds='$CC -shared -o $lib $libobjs $deplibs $compiler_flags' + archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' hardcode_libdir_flag_spec='-R$libdir' hardcode_direct=yes hardcode_shlibpath_var=no @@ -9651,7 +9563,7 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi hpux9*) if test "$GCC" = yes; then - archive_cmds='$RM $output_objdir/$soname~$CC -shared -fPIC ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' + archive_cmds='$RM $output_objdir/$soname~$CC -shared $pic_flag ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' else archive_cmds='$RM $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' fi @@ -9666,14 +9578,13 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi ;; hpux10*) - if test "$GCC" = yes -a "$with_gnu_ld" = no; then - archive_cmds='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' + if test "$GCC" = yes && test "$with_gnu_ld" = no; then + archive_cmds='$CC -shared $pic_flag ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' else archive_cmds='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags' fi if test "$with_gnu_ld" = no; then hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir' - hardcode_libdir_flag_spec_ld='+b $libdir' hardcode_libdir_separator=: hardcode_direct=yes hardcode_direct_absolute=yes @@ -9685,16 +9596,16 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi ;; hpux11*) - if test "$GCC" = yes -a "$with_gnu_ld" = no; then + if test "$GCC" = yes && test "$with_gnu_ld" = no; then case $host_cpu in hppa*64*) archive_cmds='$CC -shared ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' ;; ia64*) - archive_cmds='$CC -shared ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' + archive_cmds='$CC -shared $pic_flag ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' ;; *) - archive_cmds='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' + archive_cmds='$CC -shared $pic_flag ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' ;; esac else @@ -9706,7 +9617,46 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi archive_cmds='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' ;; *) - archive_cmds='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' + + # Older versions of the 11.00 compiler do not understand -b yet + # (HP92453-01 A.11.01.20 doesn't, HP92453-01 B.11.X.35175-35176.GP does) + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC understands -b" >&5 +$as_echo_n "checking if $CC understands -b... " >&6; } +if ${lt_cv_prog_compiler__b+:} false; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_prog_compiler__b=no + save_LDFLAGS="$LDFLAGS" + LDFLAGS="$LDFLAGS -b" + echo "$lt_simple_link_test_code" > conftest.$ac_ext + if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then + # The linker can only warn and ignore the option if not recognized + # So say no if there are warnings + if test -s conftest.err; then + # Append any errors to the config.log. + cat conftest.err 1>&5 + $ECHO "$_lt_linker_boilerplate" | $SED '/^$/d' > conftest.exp + $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 + if diff conftest.exp conftest.er2 >/dev/null; then + lt_cv_prog_compiler__b=yes + fi + else + lt_cv_prog_compiler__b=yes + fi + fi + $RM -r conftest* + LDFLAGS="$save_LDFLAGS" + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler__b" >&5 +$as_echo "$lt_cv_prog_compiler__b" >&6; } + +if test x"$lt_cv_prog_compiler__b" = xyes; then + archive_cmds='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' +else + archive_cmds='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags' +fi + ;; esac fi @@ -9734,48 +9684,39 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi irix5* | irix6* | nonstopux*) if test "$GCC" = yes; then - archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && $ECHO "X${wl}-set_version ${wl}$verstring" | $Xsed` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' + archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' # Try to use the -exported_symbol ld option, if it does not # work, assume that -exports_file does not work either and # implicitly export all symbols. - save_LDFLAGS="$LDFLAGS" - LDFLAGS="$LDFLAGS -shared ${wl}-exported_symbol ${wl}foo ${wl}-update_registry ${wl}/dev/null" - cat >conftest.$ac_ext <<_ACEOF -int foo(void) {} + # This should be the same for all languages, so no per-tag cache variable. + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the $host_os linker accepts -exported_symbol" >&5 +$as_echo_n "checking whether the $host_os linker accepts -exported_symbol... " >&6; } +if ${lt_cv_irix_exported_symbol+:} false; then : + $as_echo_n "(cached) " >&6 +else + save_LDFLAGS="$LDFLAGS" + LDFLAGS="$LDFLAGS -shared ${wl}-exported_symbol ${wl}foo ${wl}-update_registry ${wl}/dev/null" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int foo (void) { return 0; } _ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_link") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest$ac_exeext && - $as_test_x conftest$ac_exeext; then - archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && $ECHO "X${wl}-set_version ${wl}$verstring" | $Xsed` ${wl}-update_registry ${wl}${output_objdir}/so_locations ${wl}-exports_file ${wl}$export_symbols -o $lib' - +if ac_fn_c_try_link "$LINENO"; then : + lt_cv_irix_exported_symbol=yes else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - + lt_cv_irix_exported_symbol=no fi - -rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ - conftest$ac_exeext conftest.$ac_ext - LDFLAGS="$save_LDFLAGS" +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + LDFLAGS="$save_LDFLAGS" +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_irix_exported_symbol" >&5 +$as_echo "$lt_cv_irix_exported_symbol" >&6; } + if test "$lt_cv_irix_exported_symbol" = yes; then + archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations ${wl}-exports_file ${wl}$export_symbols -o $lib' + fi else - archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && $ECHO "X-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -o $lib' - archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && $ECHO "X-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -exports_file $export_symbols -o $lib' + archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib' + archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -exports_file $export_symbols -o $lib' fi archive_cmds_need_lc='no' hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' @@ -9784,7 +9725,7 @@ rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ link_all_deplibs=yes ;; - netbsd*) + netbsd* | netbsdelf*-gnu) if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' # a.out else @@ -9837,17 +9778,17 @@ rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ hardcode_libdir_flag_spec='-L$libdir' hardcode_minus_L=yes allow_undefined_flag=unsupported - archive_cmds='$ECHO "LIBRARY $libname INITINSTANCE" > $output_objdir/$libname.def~$ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~$ECHO DATA >> $output_objdir/$libname.def~$ECHO " SINGLE NONSHARED" >> $output_objdir/$libname.def~$ECHO EXPORTS >> $output_objdir/$libname.def~emxexp $libobjs >> $output_objdir/$libname.def~$CC -Zdll -Zcrtdll -o $lib $libobjs $deplibs $compiler_flags $output_objdir/$libname.def' + archive_cmds='$ECHO "LIBRARY $libname INITINSTANCE" > $output_objdir/$libname.def~$ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~echo DATA >> $output_objdir/$libname.def~echo " SINGLE NONSHARED" >> $output_objdir/$libname.def~echo EXPORTS >> $output_objdir/$libname.def~emxexp $libobjs >> $output_objdir/$libname.def~$CC -Zdll -Zcrtdll -o $lib $libobjs $deplibs $compiler_flags $output_objdir/$libname.def' old_archive_from_new_cmds='emximp -o $output_objdir/$libname.a $output_objdir/$libname.def' ;; osf3*) if test "$GCC" = yes; then allow_undefined_flag=' ${wl}-expect_unresolved ${wl}\*' - archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && $ECHO "X${wl}-set_version ${wl}$verstring" | $Xsed` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' + archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' else allow_undefined_flag=' -expect_unresolved \*' - archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && $ECHO "X-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -o $lib' + archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib' fi archive_cmds_need_lc='no' hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' @@ -9857,13 +9798,13 @@ rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ osf4* | osf5*) # as osf3* with the addition of -msym flag if test "$GCC" = yes; then allow_undefined_flag=' ${wl}-expect_unresolved ${wl}\*' - archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && $ECHO "X${wl}-set_version ${wl}$verstring" | $Xsed` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' + archive_cmds='$CC -shared${allow_undefined_flag} $pic_flag $libobjs $deplibs $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' else allow_undefined_flag=' -expect_unresolved \*' - archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags -msym -soname $soname `test -n "$verstring" && $ECHO "X-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -o $lib' + archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags -msym -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib' archive_expsym_cmds='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done; printf "%s\\n" "-hidden">> $lib.exp~ - $CC -shared${allow_undefined_flag} ${wl}-input ${wl}$lib.exp $compiler_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && $ECHO "X-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -o $lib~$RM $lib.exp' + $CC -shared${allow_undefined_flag} ${wl}-input ${wl}$lib.exp $compiler_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && $ECHO "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib~$RM $lib.exp' # Both c and cxx compiler support -rpath directly hardcode_libdir_flag_spec='-rpath $libdir' @@ -9876,9 +9817,9 @@ rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ no_undefined_flag=' -z defs' if test "$GCC" = yes; then wlarc='${wl}' - archive_cmds='$CC -shared ${wl}-z ${wl}text ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' + archive_cmds='$CC -shared $pic_flag ${wl}-z ${wl}text ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ - $CC -shared ${wl}-z ${wl}text ${wl}-M ${wl}$lib.exp ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp' + $CC -shared $pic_flag ${wl}-z ${wl}text ${wl}-M ${wl}$lib.exp ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp' else case `$CC -V 2>&1` in *"Compilers 5.0"*) @@ -10027,8 +9968,8 @@ rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ fi fi -{ echo "$as_me:$LINENO: result: $ld_shlibs" >&5 -echo "${ECHO_T}$ld_shlibs" >&6; } +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ld_shlibs" >&5 +$as_echo "$ld_shlibs" >&6; } test "$ld_shlibs" = no && can_build_shared=no with_gnu_ld=$with_gnu_ld @@ -10064,46 +10005,52 @@ x|xyes) # Test whether the compiler implicitly links with -lc since on some # systems, -lgcc has to come before -lc. If gcc already passes -lc # to ld, don't add -lc before -lgcc. - { echo "$as_me:$LINENO: checking whether -lc should be explicitly linked in" >&5 -echo $ECHO_N "checking whether -lc should be explicitly linked in... $ECHO_C" >&6; } - $RM conftest* - echo "$lt_simple_compile_test_code" > conftest.$ac_ext + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether -lc should be explicitly linked in" >&5 +$as_echo_n "checking whether -lc should be explicitly linked in... " >&6; } +if ${lt_cv_archive_cmds_need_lc+:} false; then : + $as_echo_n "(cached) " >&6 +else + $RM conftest* + echo "$lt_simple_compile_test_code" > conftest.$ac_ext - if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 (eval $ac_compile) 2>&5 ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } 2>conftest.err; then - soname=conftest - lib=conftest - libobjs=conftest.$ac_objext - deplibs= - wl=$lt_prog_compiler_wl - pic_flag=$lt_prog_compiler_pic - compiler_flags=-v - linker_flags=-v - verstring= - output_objdir=. - libname=conftest - lt_save_allow_undefined_flag=$allow_undefined_flag - allow_undefined_flag= - if { (eval echo "$as_me:$LINENO: \"$archive_cmds 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1\"") >&5 + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } 2>conftest.err; then + soname=conftest + lib=conftest + libobjs=conftest.$ac_objext + deplibs= + wl=$lt_prog_compiler_wl + pic_flag=$lt_prog_compiler_pic + compiler_flags=-v + linker_flags=-v + verstring= + output_objdir=. + libname=conftest + lt_save_allow_undefined_flag=$allow_undefined_flag + allow_undefined_flag= + if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$archive_cmds 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1\""; } >&5 (eval $archive_cmds 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1) 2>&5 ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } - then - archive_cmds_need_lc=no - else - archive_cmds_need_lc=yes - fi - allow_undefined_flag=$lt_save_allow_undefined_flag - else - cat conftest.err 1>&5 - fi - $RM conftest* - { echo "$as_me:$LINENO: result: $archive_cmds_need_lc" >&5 -echo "${ECHO_T}$archive_cmds_need_lc" >&6; } + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } + then + lt_cv_archive_cmds_need_lc=no + else + lt_cv_archive_cmds_need_lc=yes + fi + allow_undefined_flag=$lt_save_allow_undefined_flag + else + cat conftest.err 1>&5 + fi + $RM conftest* + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_archive_cmds_need_lc" >&5 +$as_echo "$lt_cv_archive_cmds_need_lc" >&6; } + archive_cmds_need_lc=$lt_cv_archive_cmds_need_lc ;; esac fi @@ -10261,29 +10208,31 @@ esac - - - - - - { echo "$as_me:$LINENO: checking dynamic linker characteristics" >&5 -echo $ECHO_N "checking dynamic linker characteristics... $ECHO_C" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: checking dynamic linker characteristics" >&5 +$as_echo_n "checking dynamic linker characteristics... " >&6; } if test "$GCC" = yes; then case $host_os in darwin*) lt_awk_arg="/^libraries:/,/LR/" ;; *) lt_awk_arg="/^libraries:/" ;; esac - lt_search_path_spec=`$CC -print-search-dirs | awk $lt_awk_arg | $SED -e "s/^libraries://" -e "s,=/,/,g"` - if $ECHO "$lt_search_path_spec" | $GREP ';' >/dev/null ; then + case $host_os in + mingw* | cegcc*) lt_sed_strip_eq="s,=\([A-Za-z]:\),\1,g" ;; + *) lt_sed_strip_eq="s,=/,/,g" ;; + esac + lt_search_path_spec=`$CC -print-search-dirs | awk $lt_awk_arg | $SED -e "s/^libraries://" -e $lt_sed_strip_eq` + case $lt_search_path_spec in + *\;*) # if the path contains ";" then we assume it to be the separator # otherwise default to the standard path separator (i.e. ":") - it is # assumed that no part of a normal pathname contains ";" but that should # okay in the real world where ";" in dirpaths is itself problematic. - lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED -e 's/;/ /g'` - else - lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` - fi + lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED 's/;/ /g'` + ;; + *) + lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED "s/$PATH_SEPARATOR/ /g"` + ;; + esac # Ok, now we have the path, separated by spaces, we can step through it # and add multilib dir if necessary. lt_tmp_lt_search_path_spec= @@ -10296,7 +10245,7 @@ if test "$GCC" = yes; then lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path" fi done - lt_search_path_spec=`$ECHO $lt_tmp_lt_search_path_spec | awk ' + lt_search_path_spec=`$ECHO "$lt_tmp_lt_search_path_spec" | awk ' BEGIN {RS=" "; FS="/|\n";} { lt_foo=""; lt_count=0; @@ -10316,7 +10265,13 @@ BEGIN {RS=" "; FS="/|\n";} { if (lt_foo != "") { lt_freq[lt_foo]++; } if (lt_freq[lt_foo] == 1) { print lt_foo; } }'` - sys_lib_search_path_spec=`$ECHO $lt_search_path_spec` + # AWK program above erroneously prepends '/' to C:/dos/paths + # for these hosts. + case $host_os in + mingw* | cegcc*) lt_search_path_spec=`$ECHO "$lt_search_path_spec" |\ + $SED 's,/\([A-Za-z]:\),\1,g'` ;; + esac + sys_lib_search_path_spec=`$ECHO "$lt_search_path_spec" | $lt_NL2SP` else sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib" fi @@ -10342,7 +10297,7 @@ need_version=unknown case $host_os in aix3*) - version_type=linux + version_type=linux # correct to gnu/linux during the next big refactor library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a' shlibpath_var=LIBPATH @@ -10351,7 +10306,7 @@ aix3*) ;; aix[4-9]*) - version_type=linux + version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no hardcode_into_libs=yes @@ -10404,7 +10359,7 @@ amigaos*) m68k) library_names_spec='$libname.ixlibrary $libname.a' # Create ${libname}_ixlibrary.a entries in /sys/libs. - finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`$ECHO "X$lib" | $Xsed -e '\''s%^.*/\([^/]*\)\.ixlibrary$%\1%'\''`; test $RM /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done' + finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`func_echo_all "$lib" | $SED '\''s%^.*/\([^/]*\)\.ixlibrary$%\1%'\''`; test $RM /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done' ;; esac ;; @@ -10416,7 +10371,7 @@ beos*) ;; bsdi[45]*) - version_type=linux + version_type=linux # correct to gnu/linux during the next big refactor need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' @@ -10429,14 +10384,15 @@ bsdi[45]*) # libtool to hard-code these into programs ;; -cygwin* | mingw* | pw32*) +cygwin* | mingw* | pw32* | cegcc*) version_type=windows shrext_cmds=".dll" need_version=no need_lib_prefix=no - case $GCC,$host_os in - yes,cygwin* | yes,mingw* | yes,pw32*) + case $GCC,$cc_basename in + yes,*) + # gcc library_names_spec='$libname.dll.a' # DLL is installed to $(libdir)/../bin by postinstall_cmds postinstall_cmds='base_file=`basename \${file}`~ @@ -10457,36 +10413,83 @@ cygwin* | mingw* | pw32*) cygwin*) # Cygwin DLLs use 'cyg' prefix rather than 'lib' soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' - sys_lib_search_path_spec="/usr/lib /lib/w32api /lib /usr/local/lib" + + sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/lib/w32api" ;; - mingw*) + mingw* | cegcc*) # MinGW DLLs use traditional 'lib' prefix soname_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' - sys_lib_search_path_spec=`$CC -print-search-dirs | $GREP "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"` - if $ECHO "$sys_lib_search_path_spec" | $GREP ';[c-zC-Z]:/' >/dev/null; then - # It is most probably a Windows format PATH printed by - # mingw gcc, but we are running on Cygwin. Gcc prints its search - # path with ; separators, and with drive letters. We can handle the - # drive letters (cygwin fileutils understands them), so leave them, - # especially as we might pass files found there to a mingw objdump, - # which wouldn't understand a cygwinified path. Ahh. - sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'` - else - sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` - fi ;; pw32*) # pw32 DLLs use 'pw' prefix rather than 'lib' library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' ;; esac + dynamic_linker='Win32 ld.exe' + ;; + + *,cl*) + # Native MSVC + libname_spec='$name' + soname_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' + library_names_spec='${libname}.dll.lib' + + case $build_os in + mingw*) + sys_lib_search_path_spec= + lt_save_ifs=$IFS + IFS=';' + for lt_path in $LIB + do + IFS=$lt_save_ifs + # Let DOS variable expansion print the short 8.3 style file name. + lt_path=`cd "$lt_path" 2>/dev/null && cmd //C "for %i in (".") do @echo %~si"` + sys_lib_search_path_spec="$sys_lib_search_path_spec $lt_path" + done + IFS=$lt_save_ifs + # Convert to MSYS style. + sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | sed -e 's|\\\\|/|g' -e 's| \\([a-zA-Z]\\):| /\\1|g' -e 's|^ ||'` + ;; + cygwin*) + # Convert to unix form, then to dos form, then back to unix form + # but this time dos style (no spaces!) so that the unix form looks + # like /cygdrive/c/PROGRA~1:/cygdr... + sys_lib_search_path_spec=`cygpath --path --unix "$LIB"` + sys_lib_search_path_spec=`cygpath --path --dos "$sys_lib_search_path_spec" 2>/dev/null` + sys_lib_search_path_spec=`cygpath --path --unix "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` + ;; + *) + sys_lib_search_path_spec="$LIB" + if $ECHO "$sys_lib_search_path_spec" | $GREP ';[c-zC-Z]:/' >/dev/null; then + # It is most probably a Windows format PATH. + sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'` + else + sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` + fi + # FIXME: find the short name or the path components, as spaces are + # common. (e.g. "Program Files" -> "PROGRA~1") + ;; + esac + + # DLL is installed to $(libdir)/../bin by postinstall_cmds + postinstall_cmds='base_file=`basename \${file}`~ + dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i; echo \$dlname'\''`~ + dldir=$destdir/`dirname \$dlpath`~ + test -d \$dldir || mkdir -p \$dldir~ + $install_prog $dir/$dlname \$dldir/$dlname' + postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ + dlpath=$dir/\$dldll~ + $RM \$dlpath' + shlibpath_overrides_runpath=yes + dynamic_linker='Win32 link.exe' ;; *) + # Assume MSVC wrapper library_names_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext} $libname.lib' + dynamic_linker='Win32 ld.exe' ;; esac - dynamic_linker='Win32 ld.exe' # FIXME: first we should search . and the directory the executable is in shlibpath_var=PATH ;; @@ -10507,7 +10510,7 @@ darwin* | rhapsody*) ;; dgux*) - version_type=linux + version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname$shared_ext' @@ -10515,10 +10518,6 @@ dgux*) shlibpath_var=LD_LIBRARY_PATH ;; -freebsd1*) - dynamic_linker=no - ;; - freebsd* | dragonfly*) # DragonFly does not have aout. When/if they implement a new # versioning mechanism, adjust this. @@ -10526,7 +10525,7 @@ freebsd* | dragonfly*) objformat=`/usr/bin/objformat` else case $host_os in - freebsd[123]*) objformat=aout ;; + freebsd[23].*) objformat=aout ;; *) objformat=elf ;; esac fi @@ -10544,7 +10543,7 @@ freebsd* | dragonfly*) esac shlibpath_var=LD_LIBRARY_PATH case $host_os in - freebsd2*) + freebsd2.*) shlibpath_overrides_runpath=yes ;; freebsd3.[01]* | freebsdelf3.[01]*) @@ -10564,12 +10563,26 @@ freebsd* | dragonfly*) ;; gnu*) - version_type=linux + version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + ;; + +haiku*) + version_type=linux # correct to gnu/linux during the next big refactor + need_lib_prefix=no + need_version=no + dynamic_linker="$host_os runtime_loader" + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LIBRARY_PATH + shlibpath_overrides_runpath=yes + sys_lib_dlsearch_path_spec='/boot/home/config/lib /boot/common/lib /boot/system/lib' hardcode_into_libs=yes ;; @@ -10615,12 +10628,14 @@ hpux9* | hpux10* | hpux11*) soname_spec='${libname}${release}${shared_ext}$major' ;; esac - # HP-UX runs *really* slowly unless shared libraries are mode 555. + # HP-UX runs *really* slowly unless shared libraries are mode 555, ... postinstall_cmds='chmod 555 $lib' + # or fails outright, so override atomically: + install_override_mode=555 ;; interix[3-9]*) - version_type=linux + version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' @@ -10636,7 +10651,7 @@ irix5* | irix6* | nonstopux*) nonstopux*) version_type=nonstopux ;; *) if test "$lt_cv_prog_gnu_ld" = yes; then - version_type=linux + version_type=linux # correct to gnu/linux during the next big refactor else version_type=irix fi ;; @@ -10673,9 +10688,9 @@ linux*oldld* | linux*aout* | linux*coff*) dynamic_linker=no ;; -# This must be Linux ELF. -linux* | k*bsd*-gnu) - version_type=linux +# This must be glibc/ELF. +linux* | k*bsd*-gnu | kopensolaris*-gnu) + version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' @@ -10683,16 +10698,17 @@ linux* | k*bsd*-gnu) finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no + # Some binutils ld are patched to set DT_RUNPATH - save_LDFLAGS=$LDFLAGS - save_libdir=$libdir - eval "libdir=/foo; wl=\"$lt_prog_compiler_wl\"; \ - LDFLAGS=\"\$LDFLAGS $hardcode_libdir_flag_spec\"" - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF + if ${lt_cv_shlibpath_overrides_runpath+:} false; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_shlibpath_overrides_runpath=no + save_LDFLAGS=$LDFLAGS + save_libdir=$libdir + eval "libdir=/foo; wl=\"$lt_prog_compiler_wl\"; \ + LDFLAGS=\"\$LDFLAGS $hardcode_libdir_flag_spec\"" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int @@ -10703,39 +10719,19 @@ main () return 0; } _ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_link") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest$ac_exeext && - $as_test_x conftest$ac_exeext; then - if ($OBJDUMP -p conftest$ac_exeext) 2>/dev/null | grep "RUNPATH.*$libdir" >/dev/null; then - shlibpath_overrides_runpath=yes +if ac_fn_c_try_link "$LINENO"; then : + if ($OBJDUMP -p conftest$ac_exeext) 2>/dev/null | grep "RUNPATH.*$libdir" >/dev/null; then : + lt_cv_shlibpath_overrides_runpath=yes fi - -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + LDFLAGS=$save_LDFLAGS + libdir=$save_libdir fi -rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ - conftest$ac_exeext conftest.$ac_ext - LDFLAGS=$save_LDFLAGS - libdir=$save_libdir + shlibpath_overrides_runpath=$lt_cv_shlibpath_overrides_runpath # This implies no fast_install, which is unacceptable. # Some rework will be needed to allow for fast_install @@ -10744,7 +10740,7 @@ rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ # Append ld.so.conf contents to the search path if test -f /etc/ld.so.conf; then - lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \$2)); skip = 1; } { if (!skip) print \$0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;/^[ ]*hwcap[ ]/d;s/[:, ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;/^$/d' | tr '\n' ' '` + lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \$2)); skip = 1; } { if (!skip) print \$0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;/^[ ]*hwcap[ ]/d;s/[:, ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;s/"//g;/^$/d' | tr '\n' ' '` sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra" fi @@ -10757,6 +10753,18 @@ rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ dynamic_linker='GNU/Linux ld.so' ;; +netbsdelf*-gnu) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + dynamic_linker='NetBSD ld.elf_so' + ;; + netbsd*) version_type=sunos need_lib_prefix=no @@ -10776,7 +10784,7 @@ netbsd*) ;; newsos6) - version_type=linux + version_type=linux # correct to gnu/linux during the next big refactor library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes @@ -10845,7 +10853,7 @@ rdos*) ;; solaris*) - version_type=linux + version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' @@ -10870,7 +10878,7 @@ sunos4*) ;; sysv4 | sysv4.3*) - version_type=linux + version_type=linux # correct to gnu/linux during the next big refactor library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH @@ -10894,7 +10902,7 @@ sysv4 | sysv4.3*) sysv4*MP*) if test -d /usr/nec ;then - version_type=linux + version_type=linux # correct to gnu/linux during the next big refactor library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}' soname_spec='$libname${shared_ext}.$major' shlibpath_var=LD_LIBRARY_PATH @@ -10925,17 +10933,17 @@ sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) tpf*) # TPF is a cross-target only. Preferred cross-host = GNU/Linux. - version_type=linux + version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no - library_name_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no hardcode_into_libs=yes ;; uts4*) - version_type=linux + version_type=linux # correct to gnu/linux during the next big refactor library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH @@ -10945,8 +10953,8 @@ uts4*) dynamic_linker=no ;; esac -{ echo "$as_me:$LINENO: result: $dynamic_linker" >&5 -echo "${ECHO_T}$dynamic_linker" >&6; } +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $dynamic_linker" >&5 +$as_echo "$dynamic_linker" >&6; } test "$dynamic_linker" = no && can_build_shared=no variables_saved_for_relink="PATH $shlibpath_var $runpath_var" @@ -11047,8 +11055,13 @@ fi - { echo "$as_me:$LINENO: checking how to hardcode library paths into programs" >&5 -echo $ECHO_N "checking how to hardcode library paths into programs... $ECHO_C" >&6; } + + + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to hardcode library paths into programs" >&5 +$as_echo_n "checking how to hardcode library paths into programs... " >&6; } hardcode_action= if test -n "$hardcode_libdir_flag_spec" || test -n "$runpath_var" || @@ -11072,8 +11085,8 @@ else # directories. hardcode_action=unsupported fi -{ echo "$as_me:$LINENO: result: $hardcode_action" >&5 -echo "${ECHO_T}$hardcode_action" >&6; } +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $hardcode_action" >&5 +$as_echo "$hardcode_action" >&6; } if test "$hardcode_action" = relink || test "$inherit_rpath" = yes; then @@ -11105,7 +11118,7 @@ else lt_cv_dlopen_self=yes ;; - mingw* | pw32*) + mingw* | pw32* | cegcc*) lt_cv_dlopen="LoadLibrary" lt_cv_dlopen_libs= ;; @@ -11117,18 +11130,14 @@ else darwin*) # if libdl is installed we need to link against it - { echo "$as_me:$LINENO: checking for dlopen in -ldl" >&5 -echo $ECHO_N "checking for dlopen in -ldl... $ECHO_C" >&6; } -if test "${ac_cv_lib_dl_dlopen+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dlopen in -ldl" >&5 +$as_echo_n "checking for dlopen in -ldl... " >&6; } +if ${ac_cv_lib_dl_dlopen+:} false; then : + $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-ldl $LIBS" -cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF +cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. @@ -11142,230 +11151,47 @@ int main () { return dlopen (); - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_link") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest$ac_exeext && - $as_test_x conftest$ac_exeext; then - ac_cv_lib_dl_dlopen=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_cv_lib_dl_dlopen=no -fi - -rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ - conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS -fi -{ echo "$as_me:$LINENO: result: $ac_cv_lib_dl_dlopen" >&5 -echo "${ECHO_T}$ac_cv_lib_dl_dlopen" >&6; } -if test $ac_cv_lib_dl_dlopen = yes; then - lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl" -else - - lt_cv_dlopen="dyld" - lt_cv_dlopen_libs= - lt_cv_dlopen_self=yes - -fi - - ;; - - *) - { echo "$as_me:$LINENO: checking for shl_load" >&5 -echo $ECHO_N "checking for shl_load... $ECHO_C" >&6; } -if test "${ac_cv_func_shl_load+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -/* Define shl_load to an innocuous variant, in case declares shl_load. - For example, HP-UX 11i declares gettimeofday. */ -#define shl_load innocuous_shl_load - -/* System header to define __stub macros and hopefully few prototypes, - which can conflict with char shl_load (); below. - Prefer to if __STDC__ is defined, since - exists even on freestanding compilers. */ - -#ifdef __STDC__ -# include -#else -# include -#endif - -#undef shl_load - -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif -char shl_load (); -/* The GNU C library defines this for functions which it implements - to always fail with ENOSYS. Some functions are actually named - something starting with __ and the normal name is an alias. */ -#if defined __stub_shl_load || defined __stub___shl_load -choke me -#endif - -int -main () -{ -return shl_load (); - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_link") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest$ac_exeext && - $as_test_x conftest$ac_exeext; then - ac_cv_func_shl_load=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_cv_func_shl_load=no -fi - -rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ - conftest$ac_exeext conftest.$ac_ext -fi -{ echo "$as_me:$LINENO: result: $ac_cv_func_shl_load" >&5 -echo "${ECHO_T}$ac_cv_func_shl_load" >&6; } -if test $ac_cv_func_shl_load = yes; then - lt_cv_dlopen="shl_load" -else - { echo "$as_me:$LINENO: checking for shl_load in -ldld" >&5 -echo $ECHO_N "checking for shl_load in -ldld... $ECHO_C" >&6; } -if test "${ac_cv_lib_dld_shl_load+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - ac_check_lib_save_LIBS=$LIBS -LIBS="-ldld $LIBS" -cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ - -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif -char shl_load (); -int -main () -{ -return shl_load (); - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_link") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest$ac_exeext && - $as_test_x conftest$ac_exeext; then - ac_cv_lib_dld_shl_load=yes + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + ac_cv_lib_dl_dlopen=yes else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_cv_lib_dld_shl_load=no + ac_cv_lib_dl_dlopen=no fi - -rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ - conftest$ac_exeext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi -{ echo "$as_me:$LINENO: result: $ac_cv_lib_dld_shl_load" >&5 -echo "${ECHO_T}$ac_cv_lib_dld_shl_load" >&6; } -if test $ac_cv_lib_dld_shl_load = yes; then - lt_cv_dlopen="shl_load" lt_cv_dlopen_libs="-ldld" -else - { echo "$as_me:$LINENO: checking for dlopen" >&5 -echo $ECHO_N "checking for dlopen... $ECHO_C" >&6; } -if test "${ac_cv_func_dlopen+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dl_dlopen" >&5 +$as_echo "$ac_cv_lib_dl_dlopen" >&6; } +if test "x$ac_cv_lib_dl_dlopen" = xyes; then : + lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl" else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -/* Define dlopen to an innocuous variant, in case declares dlopen. - For example, HP-UX 11i declares gettimeofday. */ -#define dlopen innocuous_dlopen -/* System header to define __stub macros and hopefully few prototypes, - which can conflict with char dlopen (); below. - Prefer to if __STDC__ is defined, since - exists even on freestanding compilers. */ + lt_cv_dlopen="dyld" + lt_cv_dlopen_libs= + lt_cv_dlopen_self=yes -#ifdef __STDC__ -# include -#else -# include -#endif +fi + + ;; -#undef dlopen + *) + ac_fn_c_check_func "$LINENO" "shl_load" "ac_cv_func_shl_load" +if test "x$ac_cv_func_shl_load" = xyes; then : + lt_cv_dlopen="shl_load" +else + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for shl_load in -ldld" >&5 +$as_echo_n "checking for shl_load in -ldld... " >&6; } +if ${ac_cv_lib_dld_shl_load+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-ldld $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC @@ -11373,68 +11199,41 @@ cat >>conftest.$ac_ext <<_ACEOF #ifdef __cplusplus extern "C" #endif -char dlopen (); -/* The GNU C library defines this for functions which it implements - to always fail with ENOSYS. Some functions are actually named - something starting with __ and the normal name is an alias. */ -#if defined __stub_dlopen || defined __stub___dlopen -choke me -#endif - +char shl_load (); int main () { -return dlopen (); +return shl_load (); ; return 0; } _ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_link") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest$ac_exeext && - $as_test_x conftest$ac_exeext; then - ac_cv_func_dlopen=yes +if ac_fn_c_try_link "$LINENO"; then : + ac_cv_lib_dld_shl_load=yes else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_cv_func_dlopen=no + ac_cv_lib_dld_shl_load=no fi - -rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ - conftest$ac_exeext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS fi -{ echo "$as_me:$LINENO: result: $ac_cv_func_dlopen" >&5 -echo "${ECHO_T}$ac_cv_func_dlopen" >&6; } -if test $ac_cv_func_dlopen = yes; then +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dld_shl_load" >&5 +$as_echo "$ac_cv_lib_dld_shl_load" >&6; } +if test "x$ac_cv_lib_dld_shl_load" = xyes; then : + lt_cv_dlopen="shl_load" lt_cv_dlopen_libs="-ldld" +else + ac_fn_c_check_func "$LINENO" "dlopen" "ac_cv_func_dlopen" +if test "x$ac_cv_func_dlopen" = xyes; then : lt_cv_dlopen="dlopen" else - { echo "$as_me:$LINENO: checking for dlopen in -ldl" >&5 -echo $ECHO_N "checking for dlopen in -ldl... $ECHO_C" >&6; } -if test "${ac_cv_lib_dl_dlopen+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dlopen in -ldl" >&5 +$as_echo_n "checking for dlopen in -ldl... " >&6; } +if ${ac_cv_lib_dl_dlopen+:} false; then : + $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-ldl $LIBS" -cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF +cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. @@ -11452,53 +11251,28 @@ return dlopen (); return 0; } _ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_link") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest$ac_exeext && - $as_test_x conftest$ac_exeext; then +if ac_fn_c_try_link "$LINENO"; then : ac_cv_lib_dl_dlopen=yes else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_cv_lib_dl_dlopen=no + ac_cv_lib_dl_dlopen=no fi - -rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ - conftest$ac_exeext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi -{ echo "$as_me:$LINENO: result: $ac_cv_lib_dl_dlopen" >&5 -echo "${ECHO_T}$ac_cv_lib_dl_dlopen" >&6; } -if test $ac_cv_lib_dl_dlopen = yes; then +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dl_dlopen" >&5 +$as_echo "$ac_cv_lib_dl_dlopen" >&6; } +if test "x$ac_cv_lib_dl_dlopen" = xyes; then : lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl" else - { echo "$as_me:$LINENO: checking for dlopen in -lsvld" >&5 -echo $ECHO_N "checking for dlopen in -lsvld... $ECHO_C" >&6; } -if test "${ac_cv_lib_svld_dlopen+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dlopen in -lsvld" >&5 +$as_echo_n "checking for dlopen in -lsvld... " >&6; } +if ${ac_cv_lib_svld_dlopen+:} false; then : + $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lsvld $LIBS" -cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF +cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. @@ -11516,53 +11290,28 @@ return dlopen (); return 0; } _ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_link") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest$ac_exeext && - $as_test_x conftest$ac_exeext; then +if ac_fn_c_try_link "$LINENO"; then : ac_cv_lib_svld_dlopen=yes else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_cv_lib_svld_dlopen=no + ac_cv_lib_svld_dlopen=no fi - -rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ - conftest$ac_exeext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi -{ echo "$as_me:$LINENO: result: $ac_cv_lib_svld_dlopen" >&5 -echo "${ECHO_T}$ac_cv_lib_svld_dlopen" >&6; } -if test $ac_cv_lib_svld_dlopen = yes; then +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_svld_dlopen" >&5 +$as_echo "$ac_cv_lib_svld_dlopen" >&6; } +if test "x$ac_cv_lib_svld_dlopen" = xyes; then : lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-lsvld" else - { echo "$as_me:$LINENO: checking for dld_link in -ldld" >&5 -echo $ECHO_N "checking for dld_link in -ldld... $ECHO_C" >&6; } -if test "${ac_cv_lib_dld_dld_link+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dld_link in -ldld" >&5 +$as_echo_n "checking for dld_link in -ldld... " >&6; } +if ${ac_cv_lib_dld_dld_link+:} false; then : + $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-ldld $LIBS" -cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF +cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. @@ -11580,39 +11329,18 @@ return dld_link (); return 0; } _ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_link") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest$ac_exeext && - $as_test_x conftest$ac_exeext; then +if ac_fn_c_try_link "$LINENO"; then : ac_cv_lib_dld_dld_link=yes else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_cv_lib_dld_dld_link=no + ac_cv_lib_dld_dld_link=no fi - -rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ - conftest$ac_exeext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi -{ echo "$as_me:$LINENO: result: $ac_cv_lib_dld_dld_link" >&5 -echo "${ECHO_T}$ac_cv_lib_dld_dld_link" >&6; } -if test $ac_cv_lib_dld_dld_link = yes; then +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dld_dld_link" >&5 +$as_echo "$ac_cv_lib_dld_dld_link" >&6; } +if test "x$ac_cv_lib_dld_dld_link" = xyes; then : lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-ldld" fi @@ -11651,10 +11379,10 @@ fi save_LIBS="$LIBS" LIBS="$lt_cv_dlopen_libs $LIBS" - { echo "$as_me:$LINENO: checking whether a program can dlopen itself" >&5 -echo $ECHO_N "checking whether a program can dlopen itself... $ECHO_C" >&6; } -if test "${lt_cv_dlopen_self+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether a program can dlopen itself" >&5 +$as_echo_n "checking whether a program can dlopen itself... " >&6; } +if ${lt_cv_dlopen_self+:} false; then : + $as_echo_n "(cached) " >&6 else if test "$cross_compiling" = yes; then : lt_cv_dlopen_self=cross @@ -11662,7 +11390,7 @@ else lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 lt_status=$lt_dlunknown cat > conftest.$ac_ext <<_LT_EOF -#line 11665 "configure" +#line $LINENO "configure" #include "confdefs.h" #if HAVE_DLFCN_H @@ -11703,11 +11431,13 @@ else # endif #endif -#ifdef __cplusplus -extern "C" void exit (int); +/* When -fvisbility=hidden is used, assume the code has been annotated + correspondingly for the symbols needed. */ +#if defined(__GNUC__) && (((__GNUC__ == 3) && (__GNUC_MINOR__ >= 3)) || (__GNUC__ > 3)) +int fnord () __attribute__((visibility("default"))); #endif -void fnord() { int i=42;} +int fnord () { return 42; } int main () { void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW); @@ -11716,20 +11446,24 @@ int main () if (self) { if (dlsym (self,"fnord")) status = $lt_dlno_uscore; - else if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore; + else + { + if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore; + else puts (dlerror ()); + } /* dlclose (self); */ } else puts (dlerror ()); - exit (status); + return status; } _LT_EOF - if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5 (eval $ac_link) 2>&5 ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && test -s conftest${ac_exeext} 2>/dev/null; then + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } && test -s conftest${ac_exeext} 2>/dev/null; then (./conftest; exit; ) >&5 2>/dev/null lt_status=$? case x$lt_status in @@ -11746,15 +11480,15 @@ rm -fr conftest* fi -{ echo "$as_me:$LINENO: result: $lt_cv_dlopen_self" >&5 -echo "${ECHO_T}$lt_cv_dlopen_self" >&6; } +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_dlopen_self" >&5 +$as_echo "$lt_cv_dlopen_self" >&6; } if test "x$lt_cv_dlopen_self" = xyes; then wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $lt_prog_compiler_static\" - { echo "$as_me:$LINENO: checking whether a statically linked program can dlopen itself" >&5 -echo $ECHO_N "checking whether a statically linked program can dlopen itself... $ECHO_C" >&6; } -if test "${lt_cv_dlopen_self_static+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether a statically linked program can dlopen itself" >&5 +$as_echo_n "checking whether a statically linked program can dlopen itself... " >&6; } +if ${lt_cv_dlopen_self_static+:} false; then : + $as_echo_n "(cached) " >&6 else if test "$cross_compiling" = yes; then : lt_cv_dlopen_self_static=cross @@ -11762,7 +11496,7 @@ else lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 lt_status=$lt_dlunknown cat > conftest.$ac_ext <<_LT_EOF -#line 11765 "configure" +#line $LINENO "configure" #include "confdefs.h" #if HAVE_DLFCN_H @@ -11803,11 +11537,13 @@ else # endif #endif -#ifdef __cplusplus -extern "C" void exit (int); +/* When -fvisbility=hidden is used, assume the code has been annotated + correspondingly for the symbols needed. */ +#if defined(__GNUC__) && (((__GNUC__ == 3) && (__GNUC_MINOR__ >= 3)) || (__GNUC__ > 3)) +int fnord () __attribute__((visibility("default"))); #endif -void fnord() { int i=42;} +int fnord () { return 42; } int main () { void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW); @@ -11816,20 +11552,24 @@ int main () if (self) { if (dlsym (self,"fnord")) status = $lt_dlno_uscore; - else if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore; + else + { + if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore; + else puts (dlerror ()); + } /* dlclose (self); */ } else puts (dlerror ()); - exit (status); + return status; } _LT_EOF - if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5 (eval $ac_link) 2>&5 ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && test -s conftest${ac_exeext} 2>/dev/null; then + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } && test -s conftest${ac_exeext} 2>/dev/null; then (./conftest; exit; ) >&5 2>/dev/null lt_status=$? case x$lt_status in @@ -11846,8 +11586,8 @@ rm -fr conftest* fi -{ echo "$as_me:$LINENO: result: $lt_cv_dlopen_self_static" >&5 -echo "${ECHO_T}$lt_cv_dlopen_self_static" >&6; } +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_dlopen_self_static" >&5 +$as_echo "$lt_cv_dlopen_self_static" >&6; } fi CPPFLAGS="$save_CPPFLAGS" @@ -11885,13 +11625,13 @@ fi striplib= old_striplib= -{ echo "$as_me:$LINENO: checking whether stripping libraries is possible" >&5 -echo $ECHO_N "checking whether stripping libraries is possible... $ECHO_C" >&6; } +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether stripping libraries is possible" >&5 +$as_echo_n "checking whether stripping libraries is possible... " >&6; } if test -n "$STRIP" && $STRIP -V 2>&1 | $GREP "GNU strip" >/dev/null; then test -z "$old_striplib" && old_striplib="$STRIP --strip-debug" test -z "$striplib" && striplib="$STRIP --strip-unneeded" - { echo "$as_me:$LINENO: result: yes" >&5 -echo "${ECHO_T}yes" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } else # FIXME - insert some real tests, host_os isn't really good enough case $host_os in @@ -11899,16 +11639,16 @@ else if test -n "$STRIP" ; then striplib="$STRIP -x" old_striplib="$STRIP -S" - { echo "$as_me:$LINENO: result: yes" >&5 -echo "${ECHO_T}yes" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } else - { echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } fi ;; *) - { echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } ;; esac fi @@ -11925,13 +11665,13 @@ fi # Report which library types will actually be built - { echo "$as_me:$LINENO: checking if libtool supports shared libraries" >&5 -echo $ECHO_N "checking if libtool supports shared libraries... $ECHO_C" >&6; } - { echo "$as_me:$LINENO: result: $can_build_shared" >&5 -echo "${ECHO_T}$can_build_shared" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if libtool supports shared libraries" >&5 +$as_echo_n "checking if libtool supports shared libraries... " >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $can_build_shared" >&5 +$as_echo "$can_build_shared" >&6; } - { echo "$as_me:$LINENO: checking whether to build shared libraries" >&5 -echo $ECHO_N "checking whether to build shared libraries... $ECHO_C" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to build shared libraries" >&5 +$as_echo_n "checking whether to build shared libraries... " >&6; } test "$can_build_shared" = "no" && enable_shared=no # On AIX, shared libraries and static libraries use the same namespace, and @@ -11951,15 +11691,15 @@ echo $ECHO_N "checking whether to build shared libraries... $ECHO_C" >&6; } fi ;; esac - { echo "$as_me:$LINENO: result: $enable_shared" >&5 -echo "${ECHO_T}$enable_shared" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_shared" >&5 +$as_echo "$enable_shared" >&6; } - { echo "$as_me:$LINENO: checking whether to build static libraries" >&5 -echo $ECHO_N "checking whether to build static libraries... $ECHO_C" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to build static libraries" >&5 +$as_echo_n "checking whether to build static libraries... " >&6; } # Make sure either enable_shared or enable_static is yes. test "$enable_shared" = yes || enable_static=yes - { echo "$as_me:$LINENO: result: $enable_static" >&5 -echo "${ECHO_T}$enable_static" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_static" >&5 +$as_echo "$enable_static" >&6; } @@ -11973,6 +11713,145 @@ ac_compiler_gnu=$ac_cv_cxx_compiler_gnu CC="$lt_save_CC" + if test -n "$CXX" && ( test "X$CXX" != "Xno" && + ( (test "X$CXX" = "Xg++" && `g++ -v >/dev/null 2>&1` ) || + (test "X$CXX" != "Xg++"))) ; then + ac_ext=cpp +ac_cpp='$CXXCPP $CPPFLAGS' +ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_cxx_compiler_gnu +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to run the C++ preprocessor" >&5 +$as_echo_n "checking how to run the C++ preprocessor... " >&6; } +if test -z "$CXXCPP"; then + if ${ac_cv_prog_CXXCPP+:} false; then : + $as_echo_n "(cached) " >&6 +else + # Double quotes because CXXCPP needs to be expanded + for CXXCPP in "$CXX -E" "/lib/cpp" + do + ac_preproc_ok=false +for ac_cxx_preproc_warn_flag in '' yes +do + # Use a header file that comes with gcc, so configuring glibc + # with a fresh cross-compiler works. + # Prefer to if __STDC__ is defined, since + # exists even on freestanding compilers. + # On the NeXT, cc -E runs the code through the compiler's parser, + # not just through cpp. "Syntax error" is here to catch this case. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#ifdef __STDC__ +# include +#else +# include +#endif + Syntax error +_ACEOF +if ac_fn_cxx_try_cpp "$LINENO"; then : + +else + # Broken: fails on valid input. +continue +fi +rm -f conftest.err conftest.i conftest.$ac_ext + + # OK, works on sane cases. Now check whether nonexistent headers + # can be detected and how. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +_ACEOF +if ac_fn_cxx_try_cpp "$LINENO"; then : + # Broken: success on invalid input. +continue +else + # Passes both tests. +ac_preproc_ok=: +break +fi +rm -f conftest.err conftest.i conftest.$ac_ext + +done +# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. +rm -f conftest.i conftest.err conftest.$ac_ext +if $ac_preproc_ok; then : + break +fi + + done + ac_cv_prog_CXXCPP=$CXXCPP + +fi + CXXCPP=$ac_cv_prog_CXXCPP +else + ac_cv_prog_CXXCPP=$CXXCPP +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $CXXCPP" >&5 +$as_echo "$CXXCPP" >&6; } +ac_preproc_ok=false +for ac_cxx_preproc_warn_flag in '' yes +do + # Use a header file that comes with gcc, so configuring glibc + # with a fresh cross-compiler works. + # Prefer to if __STDC__ is defined, since + # exists even on freestanding compilers. + # On the NeXT, cc -E runs the code through the compiler's parser, + # not just through cpp. "Syntax error" is here to catch this case. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#ifdef __STDC__ +# include +#else +# include +#endif + Syntax error +_ACEOF +if ac_fn_cxx_try_cpp "$LINENO"; then : + +else + # Broken: fails on valid input. +continue +fi +rm -f conftest.err conftest.i conftest.$ac_ext + + # OK, works on sane cases. Now check whether nonexistent headers + # can be detected and how. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +_ACEOF +if ac_fn_cxx_try_cpp "$LINENO"; then : + # Broken: success on invalid input. +continue +else + # Passes both tests. +ac_preproc_ok=: +break +fi +rm -f conftest.err conftest.i conftest.$ac_ext + +done +# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. +rm -f conftest.i conftest.err conftest.$ac_ext +if $ac_preproc_ok; then : + +else + { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error $? "C++ preprocessor \"$CXXCPP\" fails sanity check +See \`config.log' for more details" "$LINENO" 5; } +fi + +ac_ext=cpp +ac_cpp='$CXXCPP $CPPFLAGS' +ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_cxx_compiler_gnu + +else + _lt_caught_CXX_error=yes +fi ac_ext=cpp ac_cpp='$CXXCPP $CPPFLAGS' @@ -11989,7 +11868,6 @@ export_dynamic_flag_spec_CXX= hardcode_direct_CXX=no hardcode_direct_absolute_CXX=no hardcode_libdir_flag_spec_CXX= -hardcode_libdir_flag_spec_ld_CXX= hardcode_libdir_separator_CXX= hardcode_minus_L_CXX=no hardcode_shlibpath_var_CXX=unsupported @@ -11999,6 +11877,8 @@ module_cmds_CXX= module_expsym_cmds_CXX= link_all_deplibs_CXX=unknown old_archive_cmds_CXX=$old_archive_cmds +reload_flag_CXX=$reload_flag +reload_cmds_CXX=$reload_cmds no_undefined_flag_CXX= whole_archive_flag_spec_CXX= enable_shared_with_static_runtimes_CXX=no @@ -12054,6 +11934,7 @@ $RM -r conftest* # Allow CC to be a program name with arguments. lt_save_CC=$CC + lt_save_CFLAGS=$CFLAGS lt_save_LD=$LD lt_save_GCC=$GCC GCC=$GXX @@ -12071,6 +11952,7 @@ $RM -r conftest* fi test -z "${LDCXX+set}" || LD=$LDCXX CC=${CXX-"c++"} + CFLAGS=$CXXFLAGS compiler=$CC compiler_CXX=$CC for cc_temp in $compiler""; do @@ -12081,7 +11963,7 @@ $RM -r conftest* *) break;; esac done -cc_basename=`$ECHO "X$cc_temp" | $Xsed -e 's%.*/%%' -e "s%^$host_alias-%%"` +cc_basename=`$ECHO "$cc_temp" | $SED "s%.*/%%; s%^$host_alias-%%"` if test -n "$compiler"; then @@ -12099,7 +11981,7 @@ cc_basename=`$ECHO "X$cc_temp" | $Xsed -e 's%.*/%%' -e "s%^$host_alias-%%"` # Check whether --with-gnu-ld was given. -if test "${with_gnu_ld+set}" = set; then +if test "${with_gnu_ld+set}" = set; then : withval=$with_gnu_ld; test "$withval" = no || with_gnu_ld=yes else with_gnu_ld=no @@ -12108,8 +11990,8 @@ fi ac_prog=ld if test "$GCC" = yes; then # Check if gcc -print-prog-name=ld gives a path. - { echo "$as_me:$LINENO: checking for ld used by $CC" >&5 -echo $ECHO_N "checking for ld used by $CC... $ECHO_C" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ld used by $CC" >&5 +$as_echo_n "checking for ld used by $CC... " >&6; } case $host in *-*-mingw*) # gcc leaves a trailing carriage return which upsets mingw @@ -12138,14 +12020,14 @@ echo $ECHO_N "checking for ld used by $CC... $ECHO_C" >&6; } ;; esac elif test "$with_gnu_ld" = yes; then - { echo "$as_me:$LINENO: checking for GNU ld" >&5 -echo $ECHO_N "checking for GNU ld... $ECHO_C" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GNU ld" >&5 +$as_echo_n "checking for GNU ld... " >&6; } else - { echo "$as_me:$LINENO: checking for non-GNU ld" >&5 -echo $ECHO_N "checking for non-GNU ld... $ECHO_C" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for non-GNU ld" >&5 +$as_echo_n "checking for non-GNU ld... " >&6; } fi -if test "${lt_cv_path_LD+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 +if ${lt_cv_path_LD+:} false; then : + $as_echo_n "(cached) " >&6 else if test -z "$LD"; then lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR @@ -12175,19 +12057,17 @@ fi LD="$lt_cv_path_LD" if test -n "$LD"; then - { echo "$as_me:$LINENO: result: $LD" >&5 -echo "${ECHO_T}$LD" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LD" >&5 +$as_echo "$LD" >&6; } else - { echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } fi -test -z "$LD" && { { echo "$as_me:$LINENO: error: no acceptable ld found in \$PATH" >&5 -echo "$as_me: error: no acceptable ld found in \$PATH" >&2;} - { (exit 1); exit 1; }; } -{ echo "$as_me:$LINENO: checking if the linker ($LD) is GNU ld" >&5 -echo $ECHO_N "checking if the linker ($LD) is GNU ld... $ECHO_C" >&6; } -if test "${lt_cv_prog_gnu_ld+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 +test -z "$LD" && as_fn_error $? "no acceptable ld found in \$PATH" "$LINENO" 5 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if the linker ($LD) is GNU ld" >&5 +$as_echo_n "checking if the linker ($LD) is GNU ld... " >&6; } +if ${lt_cv_prog_gnu_ld+:} false; then : + $as_echo_n "(cached) " >&6 else # I'd rather use --version here, but apparently some GNU lds only accept -v. case `$LD -v 2>&1 &1 &5 -echo "${ECHO_T}$lt_cv_prog_gnu_ld" >&6; } +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_gnu_ld" >&5 +$as_echo "$lt_cv_prog_gnu_ld" >&6; } with_gnu_ld=$lt_cv_prog_gnu_ld @@ -12212,8 +12092,8 @@ with_gnu_ld=$lt_cv_prog_gnu_ld # Check if GNU C++ uses GNU ld as the underlying linker, since the # archiving commands below assume that GNU ld is being used. if test "$with_gnu_ld" = yes; then - archive_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib' - archive_expsym_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + archive_cmds_CXX='$CC $pic_flag -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib' + archive_expsym_cmds_CXX='$CC $pic_flag -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' hardcode_libdir_flag_spec_CXX='${wl}-rpath ${wl}$libdir' export_dynamic_flag_spec_CXX='${wl}--export-dynamic' @@ -12245,7 +12125,7 @@ with_gnu_ld=$lt_cv_prog_gnu_ld # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. - output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "\-L"' + output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"' else GXX=no @@ -12254,8 +12134,8 @@ with_gnu_ld=$lt_cv_prog_gnu_ld fi # PORTME: fill in a description of your system's C++ link characteristics - { echo "$as_me:$LINENO: checking whether the $compiler linker ($LD) supports shared libraries" >&5 -echo $ECHO_N "checking whether the $compiler linker ($LD) supports shared libraries... $ECHO_C" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the $compiler linker ($LD) supports shared libraries" >&5 +$as_echo_n "checking whether the $compiler linker ($LD) supports shared libraries... " >&6; } ld_shlibs_CXX=yes case $host_os in aix3*) @@ -12344,6 +12224,7 @@ echo $ECHO_N "checking whether the $compiler linker ($LD) supports shared librar fi fi + export_dynamic_flag_spec_CXX='${wl}-bexpall' # It seems that -bexpall does not export symbols beginning with # underscore (_), so it is better to generate a list of symbols to # export. @@ -12354,11 +12235,13 @@ echo $ECHO_N "checking whether the $compiler linker ($LD) supports shared librar allow_undefined_flag_CXX='-berok' # Determine the default libpath from the value encoded in an empty # executable. - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF + if test "${lt_cv_aix_libpath+set}" = set; then + aix_libpath=$lt_cv_aix_libpath +else + if ${lt_cv_aix_libpath__CXX+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int @@ -12369,51 +12252,35 @@ main () return 0; } _ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_link") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_cxx_werror_flag" || - test ! -s conftest.err - } && test -s conftest$ac_exeext && - $as_test_x conftest$ac_exeext; then - -lt_aix_libpath_sed=' - /Import File Strings/,/^$/ { - /^0/ { - s/^0 *\(.*\)$/\1/ - p - } - }' -aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` -# Check for a 64-bit object if we didn't find anything. -if test -z "$aix_libpath"; then - aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` -fi -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 +if ac_fn_cxx_try_link "$LINENO"; then : + lt_aix_libpath_sed=' + /Import File Strings/,/^$/ { + /^0/ { + s/^0 *\([^ ]*\) *$/\1/ + p + } + }' + lt_cv_aix_libpath__CXX=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` + # Check for a 64-bit object if we didn't find anything. + if test -z "$lt_cv_aix_libpath__CXX"; then + lt_cv_aix_libpath__CXX=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` + fi +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + if test -z "$lt_cv_aix_libpath__CXX"; then + lt_cv_aix_libpath__CXX="/usr/lib:/lib" + fi fi -rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ - conftest$ac_exeext conftest.$ac_ext -if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi + aix_libpath=$lt_cv_aix_libpath__CXX +fi hardcode_libdir_flag_spec_CXX='${wl}-blibpath:$libdir:'"$aix_libpath" - archive_expsym_cmds_CXX='$CC -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then $ECHO "X${wl}${allow_undefined_flag}" | $Xsed; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag" + archive_expsym_cmds_CXX='$CC -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then func_echo_all "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag" else if test "$host_cpu" = ia64; then hardcode_libdir_flag_spec_CXX='${wl}-R $libdir:/usr/lib:/lib' @@ -12422,11 +12289,13 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi else # Determine the default libpath from the value encoded in an # empty executable. - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF + if test "${lt_cv_aix_libpath+set}" = set; then + aix_libpath=$lt_cv_aix_libpath +else + if ${lt_cv_aix_libpath__CXX+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int @@ -12437,55 +12306,44 @@ main () return 0; } _ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_link") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_cxx_werror_flag" || - test ! -s conftest.err - } && test -s conftest$ac_exeext && - $as_test_x conftest$ac_exeext; then - -lt_aix_libpath_sed=' - /Import File Strings/,/^$/ { - /^0/ { - s/^0 *\(.*\)$/\1/ - p - } - }' -aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` -# Check for a 64-bit object if we didn't find anything. -if test -z "$aix_libpath"; then - aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` -fi -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 +if ac_fn_cxx_try_link "$LINENO"; then : + lt_aix_libpath_sed=' + /Import File Strings/,/^$/ { + /^0/ { + s/^0 *\([^ ]*\) *$/\1/ + p + } + }' + lt_cv_aix_libpath__CXX=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` + # Check for a 64-bit object if we didn't find anything. + if test -z "$lt_cv_aix_libpath__CXX"; then + lt_cv_aix_libpath__CXX=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` + fi +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + if test -z "$lt_cv_aix_libpath__CXX"; then + lt_cv_aix_libpath__CXX="/usr/lib:/lib" + fi fi -rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ - conftest$ac_exeext conftest.$ac_ext -if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi + aix_libpath=$lt_cv_aix_libpath__CXX +fi hardcode_libdir_flag_spec_CXX='${wl}-blibpath:$libdir:'"$aix_libpath" # Warning - without using the other run time loading flags, # -berok will link without error, but may produce a broken library. no_undefined_flag_CXX=' ${wl}-bernotok' allow_undefined_flag_CXX=' ${wl}-berok' - # Exported symbols can be pulled into shared objects from archives - whole_archive_flag_spec_CXX='$convenience' + if test "$with_gnu_ld" = yes; then + # We only use this code for GNU lds that support --whole-archive. + whole_archive_flag_spec_CXX='${wl}--whole-archive$convenience ${wl}--no-whole-archive' + else + # Exported symbols can be pulled into shared objects from archives + whole_archive_flag_spec_CXX='$convenience' + fi archive_cmds_need_lc_CXX=yes # This is similar to how AIX traditionally builds its shared # libraries. @@ -12514,29 +12372,76 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi esac ;; - cygwin* | mingw* | pw32*) - # _LT_TAGVAR(hardcode_libdir_flag_spec, CXX) is actually meaningless, - # as there is no search path for DLLs. - hardcode_libdir_flag_spec_CXX='-L$libdir' - allow_undefined_flag_CXX=unsupported - always_export_symbols_CXX=no - enable_shared_with_static_runtimes_CXX=yes - - if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then - archive_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' - # If the export-symbols file already is a .def file (1st line - # is EXPORTS), use it as is; otherwise, prepend... - archive_expsym_cmds_CXX='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then - cp $export_symbols $output_objdir/$soname.def; - else - echo EXPORTS > $output_objdir/$soname.def; - cat $export_symbols >> $output_objdir/$soname.def; - fi~ - $CC -shared -nostdlib $output_objdir/$soname.def $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' - else - ld_shlibs_CXX=no - fi - ;; + cygwin* | mingw* | pw32* | cegcc*) + case $GXX,$cc_basename in + ,cl* | no,cl*) + # Native MSVC + # hardcode_libdir_flag_spec is actually meaningless, as there is + # no search path for DLLs. + hardcode_libdir_flag_spec_CXX=' ' + allow_undefined_flag_CXX=unsupported + always_export_symbols_CXX=yes + file_list_spec_CXX='@' + # Tell ltmain to make .lib files, not .a files. + libext=lib + # Tell ltmain to make .dll files, not .so files. + shrext_cmds=".dll" + # FIXME: Setting linknames here is a bad hack. + archive_cmds_CXX='$CC -o $output_objdir/$soname $libobjs $compiler_flags $deplibs -Wl,-dll~linknames=' + archive_expsym_cmds_CXX='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then + $SED -n -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' -e '1\\\!p' < $export_symbols > $output_objdir/$soname.exp; + else + $SED -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' < $export_symbols > $output_objdir/$soname.exp; + fi~ + $CC -o $tool_output_objdir$soname $libobjs $compiler_flags $deplibs "@$tool_output_objdir$soname.exp" -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~ + linknames=' + # The linker will not automatically build a static lib if we build a DLL. + # _LT_TAGVAR(old_archive_from_new_cmds, CXX)='true' + enable_shared_with_static_runtimes_CXX=yes + # Don't use ranlib + old_postinstall_cmds_CXX='chmod 644 $oldlib' + postlink_cmds_CXX='lt_outputfile="@OUTPUT@"~ + lt_tool_outputfile="@TOOL_OUTPUT@"~ + case $lt_outputfile in + *.exe|*.EXE) ;; + *) + lt_outputfile="$lt_outputfile.exe" + lt_tool_outputfile="$lt_tool_outputfile.exe" + ;; + esac~ + func_to_tool_file "$lt_outputfile"~ + if test "$MANIFEST_TOOL" != ":" && test -f "$lt_outputfile.manifest"; then + $MANIFEST_TOOL -manifest "$lt_tool_outputfile.manifest" -outputresource:"$lt_tool_outputfile" || exit 1; + $RM "$lt_outputfile.manifest"; + fi' + ;; + *) + # g++ + # _LT_TAGVAR(hardcode_libdir_flag_spec, CXX) is actually meaningless, + # as there is no search path for DLLs. + hardcode_libdir_flag_spec_CXX='-L$libdir' + export_dynamic_flag_spec_CXX='${wl}--export-all-symbols' + allow_undefined_flag_CXX=unsupported + always_export_symbols_CXX=no + enable_shared_with_static_runtimes_CXX=yes + + if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then + archive_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' + # If the export-symbols file already is a .def file (1st line + # is EXPORTS), use it as is; otherwise, prepend... + archive_expsym_cmds_CXX='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then + cp $export_symbols $output_objdir/$soname.def; + else + echo EXPORTS > $output_objdir/$soname.def; + cat $export_symbols >> $output_objdir/$soname.def; + fi~ + $CC -shared -nostdlib $output_objdir/$soname.def $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' + else + ld_shlibs_CXX=no + fi + ;; + esac + ;; darwin* | rhapsody*) @@ -12544,11 +12449,20 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi hardcode_direct_CXX=no hardcode_automatic_CXX=yes hardcode_shlibpath_var_CXX=unsupported - whole_archive_flag_spec_CXX='' + if test "$lt_cv_ld_force_load" = "yes"; then + whole_archive_flag_spec_CXX='`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience ${wl}-force_load,$conv\"; done; func_echo_all \"$new_convenience\"`' + + else + whole_archive_flag_spec_CXX='' + fi link_all_deplibs_CXX=yes allow_undefined_flag_CXX="$_lt_dar_allow_undefined" - if test "$GCC" = "yes"; then - output_verbose_link_cmd=echo + case $cc_basename in + ifort*) _lt_dar_can_shared=yes ;; + *) _lt_dar_can_shared=$GCC ;; + esac + if test "$_lt_dar_can_shared" = "yes"; then + output_verbose_link_cmd=func_echo_all archive_cmds_CXX="\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod${_lt_dsymutil}" module_cmds_CXX="\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dsymutil}" archive_expsym_cmds_CXX="sed 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring ${_lt_dar_single_mod}${_lt_dar_export_syms}${_lt_dsymutil}" @@ -12582,7 +12496,7 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi esac ;; - freebsd[12]*) + freebsd2.*) # C++ shared libraries reported to be fairly broken before # switch to ELF ld_shlibs_CXX=no @@ -12601,6 +12515,11 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi gnu*) ;; + haiku*) + archive_cmds_CXX='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + link_all_deplibs_CXX=yes + ;; + hpux9*) hardcode_libdir_flag_spec_CXX='${wl}+b ${wl}$libdir' hardcode_libdir_separator_CXX=: @@ -12625,11 +12544,11 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi # explicitly linking system object files so we need to strip them # from the output so that they don't get included in the library # dependencies. - output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | $EGREP "\-L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; $ECHO "X$list" | $Xsed' + output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | $EGREP "\-L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' ;; *) if test "$GXX" = yes; then - archive_cmds_CXX='$RM $output_objdir/$soname~$CC -shared -nostdlib -fPIC ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' + archive_cmds_CXX='$RM $output_objdir/$soname~$CC -shared -nostdlib $pic_flag ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' else # FIXME: insert proper C++ library support ld_shlibs_CXX=no @@ -12690,7 +12609,7 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi # explicitly linking system object files so we need to strip them # from the output so that they don't get included in the library # dependencies. - output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | $GREP "\-L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; $ECHO "X$list" | $Xsed' + output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | $GREP "\-L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' ;; *) if test "$GXX" = yes; then @@ -12700,10 +12619,10 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi archive_cmds_CXX='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' ;; ia64*) - archive_cmds_CXX='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + archive_cmds_CXX='$CC -shared -nostdlib $pic_flag ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' ;; *) - archive_cmds_CXX='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + archive_cmds_CXX='$CC -shared -nostdlib $pic_flag ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' ;; esac fi @@ -12733,7 +12652,7 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi case $cc_basename in CC*) # SGI C++ - archive_cmds_CXX='$CC -shared -all -multigot $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -soname $soname `test -n "$verstring" && $ECHO "X-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -o $lib' + archive_cmds_CXX='$CC -shared -all -multigot $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib' # Archives containing C++ object files must be created using # "CC -ar", where "CC" is the IRIX C++ compiler. This is @@ -12744,9 +12663,9 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi *) if test "$GXX" = yes; then if test "$with_gnu_ld" = no; then - archive_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && $ECHO "X${wl}-set_version ${wl}$verstring" | $Xsed` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' + archive_cmds_CXX='$CC -shared $pic_flag -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' else - archive_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && $ECHO "X${wl}-set_version ${wl}$verstring" | $Xsed` -o $lib' + archive_cmds_CXX='$CC -shared $pic_flag -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` -o $lib' fi fi link_all_deplibs_CXX=yes @@ -12757,7 +12676,7 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi inherit_rpath_CXX=yes ;; - linux* | k*bsd*-gnu) + linux* | k*bsd*-gnu | kopensolaris*-gnu) case $cc_basename in KCC*) # Kuck and Associates, Inc. (KAI) C++ Compiler @@ -12775,7 +12694,7 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi # explicitly linking system object files so we need to strip them # from the output so that they don't get included in the library # dependencies. - output_verbose_link_cmd='templist=`$CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1 | $GREP "ld"`; rm -f libconftest$shared_ext; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; $ECHO "X$list" | $Xsed' + output_verbose_link_cmd='templist=`$CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1 | $GREP "ld"`; rm -f libconftest$shared_ext; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' hardcode_libdir_flag_spec_CXX='${wl}-rpath,$libdir' export_dynamic_flag_spec_CXX='${wl}--export-dynamic' @@ -12812,26 +12731,26 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi pgCC* | pgcpp*) # Portland Group C++ compiler case `$CC -V` in - *pgCC\ [1-5]* | *pgcpp\ [1-5]*) + *pgCC\ [1-5].* | *pgcpp\ [1-5].*) prelink_cmds_CXX='tpldir=Template.dir~ rm -rf $tpldir~ $CC --prelink_objects --instantiation_dir $tpldir $objs $libobjs $compile_deplibs~ - compile_command="$compile_command `find $tpldir -name \*.o | $NL2SP`"' + compile_command="$compile_command `find $tpldir -name \*.o | sort | $NL2SP`"' old_archive_cmds_CXX='tpldir=Template.dir~ rm -rf $tpldir~ $CC --prelink_objects --instantiation_dir $tpldir $oldobjs$old_deplibs~ - $AR $AR_FLAGS $oldlib$oldobjs$old_deplibs `find $tpldir -name \*.o | $NL2SP`~ + $AR $AR_FLAGS $oldlib$oldobjs$old_deplibs `find $tpldir -name \*.o | sort | $NL2SP`~ $RANLIB $oldlib' archive_cmds_CXX='tpldir=Template.dir~ rm -rf $tpldir~ $CC --prelink_objects --instantiation_dir $tpldir $predep_objects $libobjs $deplibs $convenience $postdep_objects~ - $CC -shared $pic_flag $predep_objects $libobjs $deplibs `find $tpldir -name \*.o | $NL2SP` $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname -o $lib' + $CC -shared $pic_flag $predep_objects $libobjs $deplibs `find $tpldir -name \*.o | sort | $NL2SP` $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname -o $lib' archive_expsym_cmds_CXX='tpldir=Template.dir~ rm -rf $tpldir~ $CC --prelink_objects --instantiation_dir $tpldir $predep_objects $libobjs $deplibs $convenience $postdep_objects~ - $CC -shared $pic_flag $predep_objects $libobjs $deplibs `find $tpldir -name \*.o | $NL2SP` $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname ${wl}-retain-symbols-file ${wl}$export_symbols -o $lib' + $CC -shared $pic_flag $predep_objects $libobjs $deplibs `find $tpldir -name \*.o | sort | $NL2SP` $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname ${wl}-retain-symbols-file ${wl}$export_symbols -o $lib' ;; - *) # Version 6 will use weak symbols + *) # Version 6 and above use weak symbols archive_cmds_CXX='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname -o $lib' archive_expsym_cmds_CXX='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname ${wl}-retain-symbols-file ${wl}$export_symbols -o $lib' ;; @@ -12839,7 +12758,7 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi hardcode_libdir_flag_spec_CXX='${wl}--rpath ${wl}$libdir' export_dynamic_flag_spec_CXX='${wl}--export-dynamic' - whole_archive_flag_spec_CXX='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $ECHO \"$new_convenience\"` ${wl}--no-whole-archive' + whole_archive_flag_spec_CXX='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' ;; cxx*) # Compaq C++ @@ -12858,9 +12777,9 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi # explicitly linking system object files so we need to strip them # from the output so that they don't get included in the library # dependencies. - output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "ld"`; templist=`$ECHO "X$templist" | $Xsed -e "s/\(^.*ld.*\)\( .*ld .*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; $ECHO "X$list" | $Xsed' + output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "ld"`; templist=`func_echo_all "$templist" | $SED "s/\(^.*ld.*\)\( .*ld .*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "X$list" | $Xsed' ;; - xl*) + xl* | mpixl* | bgxl*) # IBM XL 8.0 on PPC, with GNU ld hardcode_libdir_flag_spec_CXX='${wl}-rpath ${wl}$libdir' export_dynamic_flag_spec_CXX='${wl}--export-dynamic' @@ -12880,13 +12799,13 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi archive_cmds_CXX='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' archive_expsym_cmds_CXX='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-retain-symbols-file ${wl}$export_symbols' hardcode_libdir_flag_spec_CXX='-R$libdir' - whole_archive_flag_spec_CXX='${wl}--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; $ECHO \"$new_convenience\"` ${wl}--no-whole-archive' + whole_archive_flag_spec_CXX='${wl}--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' compiler_needs_object_CXX=yes # Not sure whether something based on # $CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1 # would be better. - output_verbose_link_cmd='echo' + output_verbose_link_cmd='func_echo_all' # Archives containing C++ object files must be created using # "CC -xar", where "CC" is the Sun C++ compiler. This is @@ -12955,7 +12874,7 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi export_dynamic_flag_spec_CXX='${wl}-E' whole_archive_flag_spec_CXX="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' fi - output_verbose_link_cmd=echo + output_verbose_link_cmd=func_echo_all else ld_shlibs_CXX=no fi @@ -12990,15 +12909,15 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi case $host in osf3*) allow_undefined_flag_CXX=' ${wl}-expect_unresolved ${wl}\*' - archive_cmds_CXX='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $soname `test -n "$verstring" && $ECHO "X${wl}-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -o $lib' + archive_cmds_CXX='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $soname `test -n "$verstring" && func_echo_all "${wl}-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib' hardcode_libdir_flag_spec_CXX='${wl}-rpath ${wl}$libdir' ;; *) allow_undefined_flag_CXX=' -expect_unresolved \*' - archive_cmds_CXX='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname `test -n "$verstring" && $ECHO "X-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -o $lib' + archive_cmds_CXX='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib' archive_expsym_cmds_CXX='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done~ echo "-hidden">> $lib.exp~ - $CC -shared$allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname ${wl}-input ${wl}$lib.exp `test -n "$verstring" && $ECHO "X-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -o $lib~ + $CC -shared$allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname ${wl}-input ${wl}$lib.exp `test -n "$verstring" && $ECHO "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib~ $RM $lib.exp' hardcode_libdir_flag_spec_CXX='-rpath $libdir' ;; @@ -13014,17 +12933,17 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi # explicitly linking system object files so we need to strip them # from the output so that they don't get included in the library # dependencies. - output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "ld" | $GREP -v "ld:"`; templist=`$ECHO "X$templist" | $Xsed -e "s/\(^.*ld.*\)\( .*ld.*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; $ECHO "X$list" | $Xsed' + output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "ld" | $GREP -v "ld:"`; templist=`func_echo_all "$templist" | $SED "s/\(^.*ld.*\)\( .*ld.*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' ;; *) if test "$GXX" = yes && test "$with_gnu_ld" = no; then allow_undefined_flag_CXX=' ${wl}-expect_unresolved ${wl}\*' case $host in osf3*) - archive_cmds_CXX='$CC -shared -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && $ECHO "X${wl}-set_version ${wl}$verstring" | $Xsed` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' + archive_cmds_CXX='$CC -shared -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' ;; *) - archive_cmds_CXX='$CC -shared -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && $ECHO "${wl}-set_version ${wl}$verstring" | $Xsed` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' + archive_cmds_CXX='$CC -shared $pic_flag -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' ;; esac @@ -13034,7 +12953,7 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. - output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "\-L"' + output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"' else # FIXME: insert proper C++ library support @@ -13070,7 +12989,7 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi solaris*) case $cc_basename in - CC*) + CC* | sunCC*) # Sun C++ 4.2, 5.x and Centerline C++ archive_cmds_need_lc_CXX=yes no_undefined_flag_CXX=' -zdefs' @@ -13091,7 +13010,7 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi esac link_all_deplibs_CXX=yes - output_verbose_link_cmd='echo' + output_verbose_link_cmd='func_echo_all' # Archives containing C++ object files must be created using # "CC -xar", where "CC" is the Sun C++ compiler. This is @@ -13111,14 +13030,14 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi if test "$GXX" = yes && test "$with_gnu_ld" = no; then no_undefined_flag_CXX=' ${wl}-z ${wl}defs' if $CC --version | $GREP -v '^2\.7' > /dev/null; then - archive_cmds_CXX='$CC -shared -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib' + archive_cmds_CXX='$CC -shared $pic_flag -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib' archive_expsym_cmds_CXX='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ - $CC -shared -nostdlib ${wl}-M $wl$lib.exp -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp' + $CC -shared $pic_flag -nostdlib ${wl}-M $wl$lib.exp -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp' # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. - output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "\-L"' + output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"' else # g++ 2.7 appears to require `-G' NOT `-shared' on this # platform. @@ -13129,7 +13048,7 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. - output_verbose_link_cmd='$CC -G $CFLAGS -v conftest.$objext 2>&1 | $GREP "\-L"' + output_verbose_link_cmd='$CC -G $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"' fi hardcode_libdir_flag_spec_CXX='${wl}-R $wl$libdir' @@ -13183,6 +13102,10 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi CC*) archive_cmds_CXX='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds_CXX='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + old_archive_cmds_CXX='$CC -Tprelink_objects $oldobjs~ + '"$old_archive_cmds_CXX" + reload_cmds_CXX='$CC -Tprelink_objects $reload_objs~ + '"$reload_cmds_CXX" ;; *) archive_cmds_CXX='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' @@ -13216,8 +13139,8 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi ;; esac - { echo "$as_me:$LINENO: result: $ld_shlibs_CXX" >&5 -echo "${ECHO_T}$ld_shlibs_CXX" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ld_shlibs_CXX" >&5 +$as_echo "$ld_shlibs_CXX" >&6; } test "$ld_shlibs_CXX" = no && can_build_shared=no GCC_CXX="$GXX" @@ -13244,11 +13167,19 @@ private: }; _LT_EOF -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + +_lt_libdeps_save_CFLAGS=$CFLAGS +case "$CC $CFLAGS " in #( +*\ -flto*\ *) CFLAGS="$CFLAGS -fno-lto" ;; +*\ -fwhopr*\ *) CFLAGS="$CFLAGS -fno-whopr" ;; +*\ -fuse-linker-plugin*\ *) CFLAGS="$CFLAGS -fno-use-linker-plugin" ;; +esac + +if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 (eval $ac_compile) 2>&5 ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; then + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then # Parse the compiler output and extract the necessary # objects, libraries and library flags. @@ -13257,7 +13188,7 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 pre_test_object_deps_done=no for p in `eval "$output_verbose_link_cmd"`; do - case $p in + case ${prev}${p} in -L* | -R* | -l*) # Some compilers place space between "-{L,R}" and the path. @@ -13266,13 +13197,22 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 test $p = "-R"; then prev=$p continue - else - prev= fi + # Expand the sysroot to ease extracting the directories later. + if test -z "$prev"; then + case $p in + -L*) func_stripname_cnf '-L' '' "$p"; prev=-L; p=$func_stripname_result ;; + -R*) func_stripname_cnf '-R' '' "$p"; prev=-R; p=$func_stripname_result ;; + -l*) func_stripname_cnf '-l' '' "$p"; prev=-l; p=$func_stripname_result ;; + esac + fi + case $p in + =*) func_stripname_cnf '=' '' "$p"; p=$lt_sysroot$func_stripname_result ;; + esac if test "$pre_test_object_deps_done" = no; then - case $p in - -L* | -R*) + case ${prev} in + -L | -R) # Internal compiler library paths should come after those # provided the user. The postdeps already come after the # user supplied libs so there is no need to process them. @@ -13292,8 +13232,10 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 postdeps_CXX="${postdeps_CXX} ${prev}${p}" fi fi + prev= ;; + *.lto.$objext) ;; # Ignore GCC LTO objects *.$objext) # This assumes that the test object file only shows up # once in the compiler output. @@ -13329,6 +13271,7 @@ else fi $RM -f confest.$objext +CFLAGS=$_lt_libdeps_save_CFLAGS # PORTME: override above test on systems where it is broken case $host_os in @@ -13364,7 +13307,7 @@ linux*) solaris*) case $cc_basename in - CC*) + CC* | sunCC*) # The more standards-conforming stlport4 library is # incompatible with the Cstd library. Avoid specifying # it if it's in CXXFLAGS. Ignore libCrun as @@ -13429,8 +13372,6 @@ fi lt_prog_compiler_pic_CXX= lt_prog_compiler_static_CXX= -{ echo "$as_me:$LINENO: checking for $compiler option to produce PIC" >&5 -echo $ECHO_N "checking for $compiler option to produce PIC... $ECHO_C" >&6; } # C++ specific cases for pic, static, wl, etc. if test "$GXX" = yes; then @@ -13464,7 +13405,7 @@ echo $ECHO_N "checking for $compiler option to produce PIC... $ECHO_C" >&6; } beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) # PIC is the default for these OSes. ;; - mingw* | cygwin* | os2* | pw32*) + mingw* | cygwin* | os2* | pw32* | cegcc*) # This hack is so that the source file can tell whether it is being # built for inclusion in a dll (and should export symbols for example). # Although the cygwin gcc ignores -fPIC, still need this for old-style @@ -13480,6 +13421,11 @@ echo $ECHO_N "checking for $compiler option to produce PIC... $ECHO_C" >&6; } # DJGPP does not support shared libraries at all lt_prog_compiler_pic_CXX= ;; + haiku*) + # PIC is the default for Haiku. + # The "-static" flag exists, but is broken. + lt_prog_compiler_static_CXX= + ;; interix[3-9]*) # Interix 3.x gcc -fpic/-fPIC options generate broken code. # Instead, we relocate shared libraries at runtime. @@ -13490,10 +13436,11 @@ echo $ECHO_N "checking for $compiler option to produce PIC... $ECHO_C" >&6; } fi ;; hpux*) - # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but - # not for PA HP-UX. + # PIC is the default for 64-bit PA HP-UX, but not for 32-bit + # PA HP-UX. On IA64 HP-UX, PIC is the default but the pic flag + # sets the default TLS model and affects inlining. case $host_cpu in - hppa*64*|ia64*) + hppa*64*) ;; *) lt_prog_compiler_pic_CXX='-fPIC' @@ -13528,6 +13475,11 @@ echo $ECHO_N "checking for $compiler option to produce PIC... $ECHO_C" >&6; } ;; esac ;; + mingw* | cygwin* | os2* | pw32* | cegcc*) + # This hack is so that the source file can tell whether it is being + # built for inclusion in a dll (and should export symbols for example). + lt_prog_compiler_pic_CXX='-DDLL_EXPORT' + ;; dgux*) case $cc_basename in ec++*) @@ -13584,19 +13536,26 @@ echo $ECHO_N "checking for $compiler option to produce PIC... $ECHO_C" >&6; } ;; esac ;; - linux* | k*bsd*-gnu) + linux* | k*bsd*-gnu | kopensolaris*-gnu) case $cc_basename in KCC*) # KAI C++ Compiler lt_prog_compiler_wl_CXX='--backend -Wl,' lt_prog_compiler_pic_CXX='-fPIC' ;; - icpc* | ecpc* ) - # Intel C++ + ecpc* ) + # old Intel C++ for x86_64 which still supported -KPIC. lt_prog_compiler_wl_CXX='-Wl,' lt_prog_compiler_pic_CXX='-KPIC' lt_prog_compiler_static_CXX='-static' ;; + icpc* ) + # Intel C++, used to be incompatible with GCC. + # ICC 10 doesn't accept -KPIC any more. + lt_prog_compiler_wl_CXX='-Wl,' + lt_prog_compiler_pic_CXX='-fPIC' + lt_prog_compiler_static_CXX='-static' + ;; pgCC* | pgcpp*) # Portland Group C++ compiler lt_prog_compiler_wl_CXX='-Wl,' @@ -13610,8 +13569,8 @@ echo $ECHO_N "checking for $compiler option to produce PIC... $ECHO_C" >&6; } lt_prog_compiler_pic_CXX= lt_prog_compiler_static_CXX='-non_shared' ;; - xlc* | xlC*) - # IBM XL 8.0 on PPC + xlc* | xlC* | bgxl[cC]* | mpixl[cC]*) + # IBM XL 8.0, 9.0 on PPC and BlueGene lt_prog_compiler_wl_CXX='-Wl,' lt_prog_compiler_pic_CXX='-qpic' lt_prog_compiler_static_CXX='-qstaticlink' @@ -13641,7 +13600,7 @@ echo $ECHO_N "checking for $compiler option to produce PIC... $ECHO_C" >&6; } ;; esac ;; - netbsd*) + netbsd* | netbsdelf*-gnu) ;; *qnx* | *nto*) # QNX uses GNU C++, but need to define -shared option too, otherwise @@ -13673,7 +13632,7 @@ echo $ECHO_N "checking for $compiler option to produce PIC... $ECHO_C" >&6; } ;; solaris*) case $cc_basename in - CC*) + CC* | sunCC*) # Sun C++ 4.2, 5.x and Centerline C++ lt_prog_compiler_pic_CXX='-KPIC' lt_prog_compiler_static_CXX='-Bstatic' @@ -13738,19 +13697,26 @@ case $host_os in lt_prog_compiler_pic_CXX="$lt_prog_compiler_pic_CXX -DPIC" ;; esac -{ echo "$as_me:$LINENO: result: $lt_prog_compiler_pic_CXX" >&5 -echo "${ECHO_T}$lt_prog_compiler_pic_CXX" >&6; } - +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $compiler option to produce PIC" >&5 +$as_echo_n "checking for $compiler option to produce PIC... " >&6; } +if ${lt_cv_prog_compiler_pic_CXX+:} false; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_prog_compiler_pic_CXX=$lt_prog_compiler_pic_CXX +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic_CXX" >&5 +$as_echo "$lt_cv_prog_compiler_pic_CXX" >&6; } +lt_prog_compiler_pic_CXX=$lt_cv_prog_compiler_pic_CXX # # Check to make sure the PIC flag actually works. # if test -n "$lt_prog_compiler_pic_CXX"; then - { echo "$as_me:$LINENO: checking if $compiler PIC flag $lt_prog_compiler_pic_CXX works" >&5 -echo $ECHO_N "checking if $compiler PIC flag $lt_prog_compiler_pic_CXX works... $ECHO_C" >&6; } -if test "${lt_cv_prog_compiler_pic_works_CXX+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler PIC flag $lt_prog_compiler_pic_CXX works" >&5 +$as_echo_n "checking if $compiler PIC flag $lt_prog_compiler_pic_CXX works... " >&6; } +if ${lt_cv_prog_compiler_pic_works_CXX+:} false; then : + $as_echo_n "(cached) " >&6 else lt_cv_prog_compiler_pic_works_CXX=no ac_outfile=conftest.$ac_objext @@ -13765,15 +13731,15 @@ else -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` - (eval echo "\"\$as_me:13768: $lt_compile\"" >&5) + (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5) (eval "$lt_compile" 2>conftest.err) ac_status=$? cat conftest.err >&5 - echo "$as_me:13772: \$? = $ac_status" >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 if (exit $ac_status) && test -s "$ac_outfile"; then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings other than the usual output. - $ECHO "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' >conftest.exp + $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' >conftest.exp $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then lt_cv_prog_compiler_pic_works_CXX=yes @@ -13782,8 +13748,8 @@ else $RM conftest* fi -{ echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_pic_works_CXX" >&5 -echo "${ECHO_T}$lt_cv_prog_compiler_pic_works_CXX" >&6; } +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic_works_CXX" >&5 +$as_echo "$lt_cv_prog_compiler_pic_works_CXX" >&6; } if test x"$lt_cv_prog_compiler_pic_works_CXX" = xyes; then case $lt_prog_compiler_pic_CXX in @@ -13799,14 +13765,16 @@ fi + + # # Check to make sure the static flag actually works. # wl=$lt_prog_compiler_wl_CXX eval lt_tmp_static_flag=\"$lt_prog_compiler_static_CXX\" -{ echo "$as_me:$LINENO: checking if $compiler static flag $lt_tmp_static_flag works" >&5 -echo $ECHO_N "checking if $compiler static flag $lt_tmp_static_flag works... $ECHO_C" >&6; } -if test "${lt_cv_prog_compiler_static_works_CXX+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler static flag $lt_tmp_static_flag works" >&5 +$as_echo_n "checking if $compiler static flag $lt_tmp_static_flag works... " >&6; } +if ${lt_cv_prog_compiler_static_works_CXX+:} false; then : + $as_echo_n "(cached) " >&6 else lt_cv_prog_compiler_static_works_CXX=no save_LDFLAGS="$LDFLAGS" @@ -13818,7 +13786,7 @@ else if test -s conftest.err; then # Append any errors to the config.log. cat conftest.err 1>&5 - $ECHO "X$_lt_linker_boilerplate" | $Xsed -e '/^$/d' > conftest.exp + $ECHO "$_lt_linker_boilerplate" | $SED '/^$/d' > conftest.exp $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 if diff conftest.exp conftest.er2 >/dev/null; then lt_cv_prog_compiler_static_works_CXX=yes @@ -13831,8 +13799,8 @@ else LDFLAGS="$save_LDFLAGS" fi -{ echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_static_works_CXX" >&5 -echo "${ECHO_T}$lt_cv_prog_compiler_static_works_CXX" >&6; } +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_static_works_CXX" >&5 +$as_echo "$lt_cv_prog_compiler_static_works_CXX" >&6; } if test x"$lt_cv_prog_compiler_static_works_CXX" = xyes; then : @@ -13843,10 +13811,10 @@ fi - { echo "$as_me:$LINENO: checking if $compiler supports -c -o file.$ac_objext" >&5 -echo $ECHO_N "checking if $compiler supports -c -o file.$ac_objext... $ECHO_C" >&6; } -if test "${lt_cv_prog_compiler_c_o_CXX+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5 +$as_echo_n "checking if $compiler supports -c -o file.$ac_objext... " >&6; } +if ${lt_cv_prog_compiler_c_o_CXX+:} false; then : + $as_echo_n "(cached) " >&6 else lt_cv_prog_compiler_c_o_CXX=no $RM -r conftest 2>/dev/null @@ -13864,16 +13832,16 @@ else -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` - (eval echo "\"\$as_me:13867: $lt_compile\"" >&5) + (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5) (eval "$lt_compile" 2>out/conftest.err) ac_status=$? cat out/conftest.err >&5 - echo "$as_me:13871: \$? = $ac_status" >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 if (exit $ac_status) && test -s out/conftest2.$ac_objext then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings - $ECHO "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' > out/conftest.exp + $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' > out/conftest.exp $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2 if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then lt_cv_prog_compiler_c_o_CXX=yes @@ -13890,15 +13858,15 @@ else $RM conftest* fi -{ echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_c_o_CXX" >&5 -echo "${ECHO_T}$lt_cv_prog_compiler_c_o_CXX" >&6; } +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o_CXX" >&5 +$as_echo "$lt_cv_prog_compiler_c_o_CXX" >&6; } - { echo "$as_me:$LINENO: checking if $compiler supports -c -o file.$ac_objext" >&5 -echo $ECHO_N "checking if $compiler supports -c -o file.$ac_objext... $ECHO_C" >&6; } -if test "${lt_cv_prog_compiler_c_o_CXX+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5 +$as_echo_n "checking if $compiler supports -c -o file.$ac_objext... " >&6; } +if ${lt_cv_prog_compiler_c_o_CXX+:} false; then : + $as_echo_n "(cached) " >&6 else lt_cv_prog_compiler_c_o_CXX=no $RM -r conftest 2>/dev/null @@ -13916,16 +13884,16 @@ else -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` - (eval echo "\"\$as_me:13919: $lt_compile\"" >&5) + (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5) (eval "$lt_compile" 2>out/conftest.err) ac_status=$? cat out/conftest.err >&5 - echo "$as_me:13923: \$? = $ac_status" >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 if (exit $ac_status) && test -s out/conftest2.$ac_objext then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings - $ECHO "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' > out/conftest.exp + $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' > out/conftest.exp $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2 if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then lt_cv_prog_compiler_c_o_CXX=yes @@ -13942,8 +13910,8 @@ else $RM conftest* fi -{ echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_c_o_CXX" >&5 -echo "${ECHO_T}$lt_cv_prog_compiler_c_o_CXX" >&6; } +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o_CXX" >&5 +$as_echo "$lt_cv_prog_compiler_c_o_CXX" >&6; } @@ -13951,19 +13919,19 @@ echo "${ECHO_T}$lt_cv_prog_compiler_c_o_CXX" >&6; } hard_links="nottested" if test "$lt_cv_prog_compiler_c_o_CXX" = no && test "$need_locks" != no; then # do not overwrite the value of need_locks provided by the user - { echo "$as_me:$LINENO: checking if we can lock with hard links" >&5 -echo $ECHO_N "checking if we can lock with hard links... $ECHO_C" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if we can lock with hard links" >&5 +$as_echo_n "checking if we can lock with hard links... " >&6; } hard_links=yes $RM conftest* ln conftest.a conftest.b 2>/dev/null && hard_links=no touch conftest.a ln conftest.a conftest.b 2>&5 || hard_links=no ln conftest.a conftest.b 2>/dev/null && hard_links=no - { echo "$as_me:$LINENO: result: $hard_links" >&5 -echo "${ECHO_T}$hard_links" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $hard_links" >&5 +$as_echo "$hard_links" >&6; } if test "$hard_links" = no; then - { echo "$as_me:$LINENO: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&5 -echo "$as_me: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&2;} + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&5 +$as_echo "$as_me: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&2;} need_locks=warn fi else @@ -13972,34 +13940,47 @@ fi - { echo "$as_me:$LINENO: checking whether the $compiler linker ($LD) supports shared libraries" >&5 -echo $ECHO_N "checking whether the $compiler linker ($LD) supports shared libraries... $ECHO_C" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the $compiler linker ($LD) supports shared libraries" >&5 +$as_echo_n "checking whether the $compiler linker ($LD) supports shared libraries... " >&6; } export_symbols_cmds_CXX='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' + exclude_expsyms_CXX='_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*' case $host_os in aix[4-9]*) # If we're using GNU nm, then we don't want the "-C" option. # -C means demangle to AIX nm, but means don't demangle with GNU nm + # Also, AIX nm treats weak defined symbols like other global defined + # symbols, whereas GNU nm marks them as "W". if $NM -V 2>&1 | $GREP 'GNU' > /dev/null; then - export_symbols_cmds_CXX='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B")) && (substr(\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols' + export_symbols_cmds_CXX='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W")) && (substr(\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols' else export_symbols_cmds_CXX='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B")) && (substr(\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols' fi ;; pw32*) export_symbols_cmds_CXX="$ltdll_cmds" - ;; - cygwin* | mingw*) - export_symbols_cmds_CXX='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS][ ]/s/.*[ ]\([^ ]*\)/\1 DATA/;/^.*[ ]__nm__/s/^.*[ ]__nm__\([^ ]*\)[ ][^ ]*/\1 DATA/;/^I[ ]/d;/^[AITW][ ]/s/.* //'\'' | sort | uniq > $export_symbols' - ;; + ;; + cygwin* | mingw* | cegcc*) + case $cc_basename in + cl*) + exclude_expsyms_CXX='_NULL_IMPORT_DESCRIPTOR|_IMPORT_DESCRIPTOR_.*' + ;; + *) + export_symbols_cmds_CXX='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS][ ]/s/.*[ ]\([^ ]*\)/\1 DATA/;s/^.*[ ]__nm__\([^ ]*\)[ ][^ ]*/\1 DATA/;/^I[ ]/d;/^[AITW][ ]/s/.* //'\'' | sort | uniq > $export_symbols' + exclude_expsyms_CXX='[_]+GLOBAL_OFFSET_TABLE_|[_]+GLOBAL__[FID]_.*|[_]+head_[A-Za-z0-9_]+_dll|[A-Za-z0-9_]+_dll_iname' + ;; + esac + ;; + linux* | k*bsd*-gnu | gnu*) + link_all_deplibs_CXX=no + ;; *) export_symbols_cmds_CXX='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' - ;; + ;; esac - exclude_expsyms_CXX='_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*' -{ echo "$as_me:$LINENO: result: $ld_shlibs_CXX" >&5 -echo "${ECHO_T}$ld_shlibs_CXX" >&6; } +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ld_shlibs_CXX" >&5 +$as_echo "$ld_shlibs_CXX" >&6; } test "$ld_shlibs_CXX" = no && can_build_shared=no with_gnu_ld_CXX=$with_gnu_ld @@ -14026,46 +14007,52 @@ x|xyes) # Test whether the compiler implicitly links with -lc since on some # systems, -lgcc has to come before -lc. If gcc already passes -lc # to ld, don't add -lc before -lgcc. - { echo "$as_me:$LINENO: checking whether -lc should be explicitly linked in" >&5 -echo $ECHO_N "checking whether -lc should be explicitly linked in... $ECHO_C" >&6; } - $RM conftest* - echo "$lt_simple_compile_test_code" > conftest.$ac_ext + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether -lc should be explicitly linked in" >&5 +$as_echo_n "checking whether -lc should be explicitly linked in... " >&6; } +if ${lt_cv_archive_cmds_need_lc_CXX+:} false; then : + $as_echo_n "(cached) " >&6 +else + $RM conftest* + echo "$lt_simple_compile_test_code" > conftest.$ac_ext - if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 (eval $ac_compile) 2>&5 ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } 2>conftest.err; then - soname=conftest - lib=conftest - libobjs=conftest.$ac_objext - deplibs= - wl=$lt_prog_compiler_wl_CXX - pic_flag=$lt_prog_compiler_pic_CXX - compiler_flags=-v - linker_flags=-v - verstring= - output_objdir=. - libname=conftest - lt_save_allow_undefined_flag=$allow_undefined_flag_CXX - allow_undefined_flag_CXX= - if { (eval echo "$as_me:$LINENO: \"$archive_cmds_CXX 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1\"") >&5 + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } 2>conftest.err; then + soname=conftest + lib=conftest + libobjs=conftest.$ac_objext + deplibs= + wl=$lt_prog_compiler_wl_CXX + pic_flag=$lt_prog_compiler_pic_CXX + compiler_flags=-v + linker_flags=-v + verstring= + output_objdir=. + libname=conftest + lt_save_allow_undefined_flag=$allow_undefined_flag_CXX + allow_undefined_flag_CXX= + if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$archive_cmds_CXX 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1\""; } >&5 (eval $archive_cmds_CXX 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1) 2>&5 ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } - then - archive_cmds_need_lc_CXX=no - else - archive_cmds_need_lc_CXX=yes - fi - allow_undefined_flag_CXX=$lt_save_allow_undefined_flag - else - cat conftest.err 1>&5 - fi - $RM conftest* - { echo "$as_me:$LINENO: result: $archive_cmds_need_lc_CXX" >&5 -echo "${ECHO_T}$archive_cmds_need_lc_CXX" >&6; } + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } + then + lt_cv_archive_cmds_need_lc_CXX=no + else + lt_cv_archive_cmds_need_lc_CXX=yes + fi + allow_undefined_flag_CXX=$lt_save_allow_undefined_flag + else + cat conftest.err 1>&5 + fi + $RM conftest* + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_archive_cmds_need_lc_CXX" >&5 +$as_echo "$lt_cv_archive_cmds_need_lc_CXX" >&6; } + archive_cmds_need_lc_CXX=$lt_cv_archive_cmds_need_lc_CXX ;; esac fi @@ -14133,10 +14120,8 @@ esac - - - { echo "$as_me:$LINENO: checking dynamic linker characteristics" >&5 -echo $ECHO_N "checking dynamic linker characteristics... $ECHO_C" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: checking dynamic linker characteristics" >&5 +$as_echo_n "checking dynamic linker characteristics... " >&6; } library_names_spec= libname_spec='lib$name' @@ -14160,7 +14145,7 @@ need_version=unknown case $host_os in aix3*) - version_type=linux + version_type=linux # correct to gnu/linux during the next big refactor library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a' shlibpath_var=LIBPATH @@ -14169,7 +14154,7 @@ aix3*) ;; aix[4-9]*) - version_type=linux + version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no hardcode_into_libs=yes @@ -14222,7 +14207,7 @@ amigaos*) m68k) library_names_spec='$libname.ixlibrary $libname.a' # Create ${libname}_ixlibrary.a entries in /sys/libs. - finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`$ECHO "X$lib" | $Xsed -e '\''s%^.*/\([^/]*\)\.ixlibrary$%\1%'\''`; test $RM /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done' + finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`func_echo_all "$lib" | $SED '\''s%^.*/\([^/]*\)\.ixlibrary$%\1%'\''`; test $RM /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done' ;; esac ;; @@ -14234,7 +14219,7 @@ beos*) ;; bsdi[45]*) - version_type=linux + version_type=linux # correct to gnu/linux during the next big refactor need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' @@ -14247,14 +14232,15 @@ bsdi[45]*) # libtool to hard-code these into programs ;; -cygwin* | mingw* | pw32*) +cygwin* | mingw* | pw32* | cegcc*) version_type=windows shrext_cmds=".dll" need_version=no need_lib_prefix=no - case $GCC,$host_os in - yes,cygwin* | yes,mingw* | yes,pw32*) + case $GCC,$cc_basename in + yes,*) + # gcc library_names_spec='$libname.dll.a' # DLL is installed to $(libdir)/../bin by postinstall_cmds postinstall_cmds='base_file=`basename \${file}`~ @@ -14275,36 +14261,82 @@ cygwin* | mingw* | pw32*) cygwin*) # Cygwin DLLs use 'cyg' prefix rather than 'lib' soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' - sys_lib_search_path_spec="/usr/lib /lib/w32api /lib /usr/local/lib" + ;; - mingw*) + mingw* | cegcc*) # MinGW DLLs use traditional 'lib' prefix soname_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' - sys_lib_search_path_spec=`$CC -print-search-dirs | $GREP "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"` - if $ECHO "$sys_lib_search_path_spec" | $GREP ';[c-zC-Z]:/' >/dev/null; then - # It is most probably a Windows format PATH printed by - # mingw gcc, but we are running on Cygwin. Gcc prints its search - # path with ; separators, and with drive letters. We can handle the - # drive letters (cygwin fileutils understands them), so leave them, - # especially as we might pass files found there to a mingw objdump, - # which wouldn't understand a cygwinified path. Ahh. - sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'` - else - sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` - fi ;; pw32*) # pw32 DLLs use 'pw' prefix rather than 'lib' library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' ;; esac + dynamic_linker='Win32 ld.exe' + ;; + + *,cl*) + # Native MSVC + libname_spec='$name' + soname_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' + library_names_spec='${libname}.dll.lib' + + case $build_os in + mingw*) + sys_lib_search_path_spec= + lt_save_ifs=$IFS + IFS=';' + for lt_path in $LIB + do + IFS=$lt_save_ifs + # Let DOS variable expansion print the short 8.3 style file name. + lt_path=`cd "$lt_path" 2>/dev/null && cmd //C "for %i in (".") do @echo %~si"` + sys_lib_search_path_spec="$sys_lib_search_path_spec $lt_path" + done + IFS=$lt_save_ifs + # Convert to MSYS style. + sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | sed -e 's|\\\\|/|g' -e 's| \\([a-zA-Z]\\):| /\\1|g' -e 's|^ ||'` + ;; + cygwin*) + # Convert to unix form, then to dos form, then back to unix form + # but this time dos style (no spaces!) so that the unix form looks + # like /cygdrive/c/PROGRA~1:/cygdr... + sys_lib_search_path_spec=`cygpath --path --unix "$LIB"` + sys_lib_search_path_spec=`cygpath --path --dos "$sys_lib_search_path_spec" 2>/dev/null` + sys_lib_search_path_spec=`cygpath --path --unix "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` + ;; + *) + sys_lib_search_path_spec="$LIB" + if $ECHO "$sys_lib_search_path_spec" | $GREP ';[c-zC-Z]:/' >/dev/null; then + # It is most probably a Windows format PATH. + sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'` + else + sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` + fi + # FIXME: find the short name or the path components, as spaces are + # common. (e.g. "Program Files" -> "PROGRA~1") + ;; + esac + + # DLL is installed to $(libdir)/../bin by postinstall_cmds + postinstall_cmds='base_file=`basename \${file}`~ + dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i; echo \$dlname'\''`~ + dldir=$destdir/`dirname \$dlpath`~ + test -d \$dldir || mkdir -p \$dldir~ + $install_prog $dir/$dlname \$dldir/$dlname' + postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ + dlpath=$dir/\$dldll~ + $RM \$dlpath' + shlibpath_overrides_runpath=yes + dynamic_linker='Win32 link.exe' ;; *) + # Assume MSVC wrapper library_names_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext} $libname.lib' + dynamic_linker='Win32 ld.exe' ;; esac - dynamic_linker='Win32 ld.exe' # FIXME: first we should search . and the directory the executable is in shlibpath_var=PATH ;; @@ -14324,7 +14356,7 @@ darwin* | rhapsody*) ;; dgux*) - version_type=linux + version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname$shared_ext' @@ -14332,10 +14364,6 @@ dgux*) shlibpath_var=LD_LIBRARY_PATH ;; -freebsd1*) - dynamic_linker=no - ;; - freebsd* | dragonfly*) # DragonFly does not have aout. When/if they implement a new # versioning mechanism, adjust this. @@ -14343,7 +14371,7 @@ freebsd* | dragonfly*) objformat=`/usr/bin/objformat` else case $host_os in - freebsd[123]*) objformat=aout ;; + freebsd[23].*) objformat=aout ;; *) objformat=elf ;; esac fi @@ -14361,7 +14389,7 @@ freebsd* | dragonfly*) esac shlibpath_var=LD_LIBRARY_PATH case $host_os in - freebsd2*) + freebsd2.*) shlibpath_overrides_runpath=yes ;; freebsd3.[01]* | freebsdelf3.[01]*) @@ -14381,12 +14409,26 @@ freebsd* | dragonfly*) ;; gnu*) - version_type=linux + version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + ;; + +haiku*) + version_type=linux # correct to gnu/linux during the next big refactor + need_lib_prefix=no + need_version=no + dynamic_linker="$host_os runtime_loader" + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LIBRARY_PATH + shlibpath_overrides_runpath=yes + sys_lib_dlsearch_path_spec='/boot/home/config/lib /boot/common/lib /boot/system/lib' hardcode_into_libs=yes ;; @@ -14432,12 +14474,14 @@ hpux9* | hpux10* | hpux11*) soname_spec='${libname}${release}${shared_ext}$major' ;; esac - # HP-UX runs *really* slowly unless shared libraries are mode 555. + # HP-UX runs *really* slowly unless shared libraries are mode 555, ... postinstall_cmds='chmod 555 $lib' + # or fails outright, so override atomically: + install_override_mode=555 ;; interix[3-9]*) - version_type=linux + version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' @@ -14453,7 +14497,7 @@ irix5* | irix6* | nonstopux*) nonstopux*) version_type=nonstopux ;; *) if test "$lt_cv_prog_gnu_ld" = yes; then - version_type=linux + version_type=linux # correct to gnu/linux during the next big refactor else version_type=irix fi ;; @@ -14490,9 +14534,9 @@ linux*oldld* | linux*aout* | linux*coff*) dynamic_linker=no ;; -# This must be Linux ELF. -linux* | k*bsd*-gnu) - version_type=linux +# This must be glibc/ELF. +linux* | k*bsd*-gnu | kopensolaris*-gnu) + version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' @@ -14500,16 +14544,17 @@ linux* | k*bsd*-gnu) finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no + # Some binutils ld are patched to set DT_RUNPATH - save_LDFLAGS=$LDFLAGS - save_libdir=$libdir - eval "libdir=/foo; wl=\"$lt_prog_compiler_wl_CXX\"; \ - LDFLAGS=\"\$LDFLAGS $hardcode_libdir_flag_spec_CXX\"" - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF + if ${lt_cv_shlibpath_overrides_runpath+:} false; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_shlibpath_overrides_runpath=no + save_LDFLAGS=$LDFLAGS + save_libdir=$libdir + eval "libdir=/foo; wl=\"$lt_prog_compiler_wl_CXX\"; \ + LDFLAGS=\"\$LDFLAGS $hardcode_libdir_flag_spec_CXX\"" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int @@ -14520,39 +14565,19 @@ main () return 0; } _ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_link") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_cxx_werror_flag" || - test ! -s conftest.err - } && test -s conftest$ac_exeext && - $as_test_x conftest$ac_exeext; then - if ($OBJDUMP -p conftest$ac_exeext) 2>/dev/null | grep "RUNPATH.*$libdir" >/dev/null; then - shlibpath_overrides_runpath=yes +if ac_fn_cxx_try_link "$LINENO"; then : + if ($OBJDUMP -p conftest$ac_exeext) 2>/dev/null | grep "RUNPATH.*$libdir" >/dev/null; then : + lt_cv_shlibpath_overrides_runpath=yes fi - -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + LDFLAGS=$save_LDFLAGS + libdir=$save_libdir fi -rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ - conftest$ac_exeext conftest.$ac_ext - LDFLAGS=$save_LDFLAGS - libdir=$save_libdir + shlibpath_overrides_runpath=$lt_cv_shlibpath_overrides_runpath # This implies no fast_install, which is unacceptable. # Some rework will be needed to allow for fast_install @@ -14561,7 +14586,7 @@ rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ # Append ld.so.conf contents to the search path if test -f /etc/ld.so.conf; then - lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \$2)); skip = 1; } { if (!skip) print \$0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;/^[ ]*hwcap[ ]/d;s/[:, ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;/^$/d' | tr '\n' ' '` + lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \$2)); skip = 1; } { if (!skip) print \$0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;/^[ ]*hwcap[ ]/d;s/[:, ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;s/"//g;/^$/d' | tr '\n' ' '` sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra" fi @@ -14574,6 +14599,18 @@ rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ dynamic_linker='GNU/Linux ld.so' ;; +netbsdelf*-gnu) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + dynamic_linker='NetBSD ld.elf_so' + ;; + netbsd*) version_type=sunos need_lib_prefix=no @@ -14593,7 +14630,7 @@ netbsd*) ;; newsos6) - version_type=linux + version_type=linux # correct to gnu/linux during the next big refactor library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes @@ -14662,7 +14699,7 @@ rdos*) ;; solaris*) - version_type=linux + version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' @@ -14687,7 +14724,7 @@ sunos4*) ;; sysv4 | sysv4.3*) - version_type=linux + version_type=linux # correct to gnu/linux during the next big refactor library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH @@ -14711,7 +14748,7 @@ sysv4 | sysv4.3*) sysv4*MP*) if test -d /usr/nec ;then - version_type=linux + version_type=linux # correct to gnu/linux during the next big refactor library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}' soname_spec='$libname${shared_ext}.$major' shlibpath_var=LD_LIBRARY_PATH @@ -14742,17 +14779,17 @@ sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) tpf*) # TPF is a cross-target only. Preferred cross-host = GNU/Linux. - version_type=linux + version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no - library_name_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no hardcode_into_libs=yes ;; uts4*) - version_type=linux + version_type=linux # correct to gnu/linux during the next big refactor library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH @@ -14762,8 +14799,8 @@ uts4*) dynamic_linker=no ;; esac -{ echo "$as_me:$LINENO: result: $dynamic_linker" >&5 -echo "${ECHO_T}$dynamic_linker" >&6; } +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $dynamic_linker" >&5 +$as_echo "$dynamic_linker" >&6; } test "$dynamic_linker" = no && can_build_shared=no variables_saved_for_relink="PATH $shlibpath_var $runpath_var" @@ -14813,8 +14850,10 @@ fi - { echo "$as_me:$LINENO: checking how to hardcode library paths into programs" >&5 -echo $ECHO_N "checking how to hardcode library paths into programs... $ECHO_C" >&6; } + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to hardcode library paths into programs" >&5 +$as_echo_n "checking how to hardcode library paths into programs... " >&6; } hardcode_action_CXX= if test -n "$hardcode_libdir_flag_spec_CXX" || test -n "$runpath_var_CXX" || @@ -14838,8 +14877,8 @@ else # directories. hardcode_action_CXX=unsupported fi -{ echo "$as_me:$LINENO: result: $hardcode_action_CXX" >&5 -echo "${ECHO_T}$hardcode_action_CXX" >&6; } +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $hardcode_action_CXX" >&5 +$as_echo "$hardcode_action_CXX" >&6; } if test "$hardcode_action_CXX" = relink || test "$inherit_rpath_CXX" = yes; then @@ -14860,6 +14899,7 @@ fi fi # test -n "$compiler" CC=$lt_save_CC + CFLAGS=$lt_save_CFLAGS LDCXX=$LD LD=$lt_save_LD GCC=$lt_save_GCC @@ -14888,6 +14928,8 @@ ac_compiler_gnu=$ac_cv_cxx_compiler_gnu + + ac_config_commands="$ac_config_commands libtool" @@ -14905,10 +14947,10 @@ ac_compiler_gnu=$ac_cv_cxx_compiler_gnu PYTHON= # We *do not* allow the user to specify a python interpreter # Extract the first word of "python", so it can be a program name with args. set dummy python; ac_word=$2 -{ echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } -if test "${ac_cv_path_PYTHON+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_path_PYTHON+:} false; then : + $as_echo_n "(cached) " >&6 else case $PYTHON in [\\/]* | ?:[\\/]*) @@ -14920,14 +14962,14 @@ for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do + for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_path_PYTHON="$as_dir/$ac_word$ac_exec_ext" - echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done -done + done IFS=$as_save_IFS test -z "$ac_cv_path_PYTHON" && ac_cv_path_PYTHON=":" @@ -14936,34 +14978,34 @@ esac fi PYTHON=$ac_cv_path_PYTHON if test -n "$PYTHON"; then - { echo "$as_me:$LINENO: result: $PYTHON" >&5 -echo "${ECHO_T}$PYTHON" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PYTHON" >&5 +$as_echo "$PYTHON" >&6; } else - { echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } fi -if test "$PYTHON" != ":"; then - prog="import sys, string +if test "$PYTHON" != ":"; then : + prog="import sys # split strings by '.' and convert to numeric. Append some zeros # because we need at least 4 digits for the hex conversion. -minver = map(int, string.split('2.3', '.')) + [0, 0, 0] +# map returns an iterator in Python 3.0 and a list in 2.x +minver = list(map(int, '2.3'.split('.'))) + [0, 0, 0] minverhex = 0 -for i in xrange(0, 4): minverhex = (minverhex << 8) + minver[i] +# xrange is not present in Python 3.0 and range returns an iterator +for i in list(range(0, 4)): minverhex = (minverhex << 8) + minver[i] sys.exit(sys.hexversion < minverhex)" if { echo "$as_me:$LINENO: $PYTHON -c "$prog"" >&5 ($PYTHON -c "$prog") >&5 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; then + (exit $ac_status); }; then : : else PYTHON=":" fi - fi - if test "$PYTHON" != ":"; then HAVE_PYTHON_TRUE= HAVE_PYTHON_FALSE='#' @@ -14973,7 +15015,18 @@ else fi -# Check for pthreads. +# Configure pthreads. + +# Check whether --with-pthreads was given. +if test "${with_pthreads+set}" = set; then : + withval=$with_pthreads; with_pthreads=$withval +else + with_pthreads=check +fi + + +have_pthreads=no +if test "x$with_pthreads" != "xno"; then : @@ -14997,13 +15050,9 @@ if test x"$PTHREAD_LIBS$PTHREAD_CFLAGS" != x; then CFLAGS="$CFLAGS $PTHREAD_CFLAGS" save_LIBS="$LIBS" LIBS="$PTHREAD_LIBS $LIBS" - { echo "$as_me:$LINENO: checking for pthread_join in LIBS=$PTHREAD_LIBS with CFLAGS=$PTHREAD_CFLAGS" >&5 -echo $ECHO_N "checking for pthread_join in LIBS=$PTHREAD_LIBS with CFLAGS=$PTHREAD_CFLAGS... $ECHO_C" >&6; } - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for pthread_join in LIBS=$PTHREAD_LIBS with CFLAGS=$PTHREAD_CFLAGS" >&5 +$as_echo_n "checking for pthread_join in LIBS=$PTHREAD_LIBS with CFLAGS=$PTHREAD_CFLAGS... " >&6; } + cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. @@ -15021,36 +15070,13 @@ return pthread_join (); return 0; } _ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_link") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest$ac_exeext && - $as_test_x conftest$ac_exeext; then +if ac_fn_c_try_link "$LINENO"; then : acx_pthread_ok=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - fi - -rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ - conftest$ac_exeext conftest.$ac_ext - { echo "$as_me:$LINENO: result: $acx_pthread_ok" >&5 -echo "${ECHO_T}$acx_pthread_ok" >&6; } +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $acx_pthread_ok" >&5 +$as_echo "$acx_pthread_ok" >&6; } if test x"$acx_pthread_ok" = xno; then PTHREAD_LIBS="" PTHREAD_CFLAGS="" @@ -15111,23 +15137,23 @@ for flag in $acx_pthread_flags; do case $flag in none) - { echo "$as_me:$LINENO: checking whether pthreads work without any flags" >&5 -echo $ECHO_N "checking whether pthreads work without any flags... $ECHO_C" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether pthreads work without any flags" >&5 +$as_echo_n "checking whether pthreads work without any flags... " >&6; } ;; -*) - { echo "$as_me:$LINENO: checking whether pthreads work with $flag" >&5 -echo $ECHO_N "checking whether pthreads work with $flag... $ECHO_C" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether pthreads work with $flag" >&5 +$as_echo_n "checking whether pthreads work with $flag... " >&6; } PTHREAD_CFLAGS="$flag" ;; pthread-config) # Extract the first word of "pthread-config", so it can be a program name with args. set dummy pthread-config; ac_word=$2 -{ echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } -if test "${ac_cv_prog_acx_pthread_config+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_acx_pthread_config+:} false; then : + $as_echo_n "(cached) " >&6 else if test -n "$acx_pthread_config"; then ac_cv_prog_acx_pthread_config="$acx_pthread_config" # Let the user override the test. @@ -15137,14 +15163,14 @@ for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do + for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_acx_pthread_config="yes" - echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done -done + done IFS=$as_save_IFS test -z "$ac_cv_prog_acx_pthread_config" && ac_cv_prog_acx_pthread_config="no" @@ -15152,11 +15178,11 @@ fi fi acx_pthread_config=$ac_cv_prog_acx_pthread_config if test -n "$acx_pthread_config"; then - { echo "$as_me:$LINENO: result: $acx_pthread_config" >&5 -echo "${ECHO_T}$acx_pthread_config" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $acx_pthread_config" >&5 +$as_echo "$acx_pthread_config" >&6; } else - { echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } fi @@ -15166,8 +15192,8 @@ fi ;; *) - { echo "$as_me:$LINENO: checking for the pthreads library -l$flag" >&5 -echo $ECHO_N "checking for the pthreads library -l$flag... $ECHO_C" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for the pthreads library -l$flag" >&5 +$as_echo_n "checking for the pthreads library -l$flag... " >&6; } PTHREAD_LIBS="-l$flag" ;; esac @@ -15186,11 +15212,7 @@ echo $ECHO_N "checking for the pthreads library -l$flag... $ECHO_C" >&6; } # pthread_cleanup_push because it is one of the few pthread # functions on Solaris that doesn't have a non-functional libc stub. # We try pthread_create on general principles. - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF + cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int @@ -15203,40 +15225,17 @@ pthread_t th; pthread_join(th, 0); return 0; } _ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_link") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest$ac_exeext && - $as_test_x conftest$ac_exeext; then +if ac_fn_c_try_link "$LINENO"; then : acx_pthread_ok=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - fi - -rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ - conftest$ac_exeext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext LIBS="$save_LIBS" CFLAGS="$save_CFLAGS" - { echo "$as_me:$LINENO: result: $acx_pthread_ok" >&5 -echo "${ECHO_T}$acx_pthread_ok" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $acx_pthread_ok" >&5 +$as_echo "$acx_pthread_ok" >&6; } if test "x$acx_pthread_ok" = xyes; then break; fi @@ -15254,15 +15253,11 @@ if test "x$acx_pthread_ok" = xyes; then CFLAGS="$CFLAGS $PTHREAD_CFLAGS" # Detect AIX lossage: JOINABLE attribute is called UNDETACHED. - { echo "$as_me:$LINENO: checking for joinable pthread attribute" >&5 -echo $ECHO_N "checking for joinable pthread attribute... $ECHO_C" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for joinable pthread attribute" >&5 +$as_echo_n "checking for joinable pthread attribute... " >&6; } attr_name=unknown for attr in PTHREAD_CREATE_JOINABLE PTHREAD_CREATE_UNDETACHED; do - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF + cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int @@ -15273,37 +15268,14 @@ int attr=$attr; return attr; return 0; } _ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_link") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest$ac_exeext && - $as_test_x conftest$ac_exeext; then +if ac_fn_c_try_link "$LINENO"; then : attr_name=$attr; break -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - fi - -rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ - conftest$ac_exeext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext done - { echo "$as_me:$LINENO: result: $attr_name" >&5 -echo "${ECHO_T}$attr_name" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $attr_name" >&5 +$as_echo "$attr_name" >&6; } if test "$attr_name" != PTHREAD_CREATE_JOINABLE; then cat >>confdefs.h <<_ACEOF @@ -15312,15 +15284,15 @@ _ACEOF fi - { echo "$as_me:$LINENO: checking if more special flags are required for pthreads" >&5 -echo $ECHO_N "checking if more special flags are required for pthreads... $ECHO_C" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if more special flags are required for pthreads" >&5 +$as_echo_n "checking if more special flags are required for pthreads... " >&6; } flag=no case "${host_cpu}-${host_os}" in *-aix* | *-freebsd* | *-darwin*) flag="-D_THREAD_SAFE";; *solaris* | *-osf* | *-hpux*) flag="-D_REENTRANT";; esac - { echo "$as_me:$LINENO: result: ${flag}" >&5 -echo "${ECHO_T}${flag}" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: ${flag}" >&5 +$as_echo "${flag}" >&6; } if test "x$flag" != xno; then PTHREAD_CFLAGS="$flag $PTHREAD_CFLAGS" fi @@ -15333,10 +15305,10 @@ echo "${ECHO_T}${flag}" >&6; } do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 -{ echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } -if test "${ac_cv_prog_PTHREAD_CC+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_PTHREAD_CC+:} false; then : + $as_echo_n "(cached) " >&6 else if test -n "$PTHREAD_CC"; then ac_cv_prog_PTHREAD_CC="$PTHREAD_CC" # Let the user override the test. @@ -15346,25 +15318,25 @@ for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do + for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_PTHREAD_CC="$ac_prog" - echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done -done + done IFS=$as_save_IFS fi fi PTHREAD_CC=$ac_cv_prog_PTHREAD_CC if test -n "$PTHREAD_CC"; then - { echo "$as_me:$LINENO: result: $PTHREAD_CC" >&5 -echo "${ECHO_T}$PTHREAD_CC" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PTHREAD_CC" >&5 +$as_echo "$PTHREAD_CC" >&6; } else - { echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } fi @@ -15408,13 +15380,9 @@ test -n "$PTHREAD_CC" || PTHREAD_CC="${CC}" # compiler. If not (and OS X's ld, for instance, does not accept -z), # then we can't do this test. if test x"$done" = xno; then - { echo "$as_me:$LINENO: checking whether to check for GCC pthread/shared inconsistencies" >&5 -echo $ECHO_N "checking whether to check for GCC pthread/shared inconsistencies... $ECHO_C" >&6; } - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to check for GCC pthread/shared inconsistencies" >&5 +$as_echo_n "checking whether to check for GCC pthread/shared inconsistencies... " >&6; } + cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int @@ -15425,52 +15393,27 @@ main () return 0; } _ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_link") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest$ac_exeext && - $as_test_x conftest$ac_exeext; then - : -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 +if ac_fn_c_try_link "$LINENO"; then : - done=yes +else + done=yes fi - -rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ - conftest$ac_exeext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext if test "x$done" = xyes ; then - { echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } else - { echo "$as_me:$LINENO: result: yes" >&5 -echo "${ECHO_T}yes" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } fi fi if test x"$done" = xno; then - { echo "$as_me:$LINENO: checking whether -pthread is sufficient with -shared" >&5 -echo $ECHO_N "checking whether -pthread is sufficient with -shared... $ECHO_C" >&6; } - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether -pthread is sufficient with -shared" >&5 +$as_echo_n "checking whether -pthread is sufficient with -shared... " >&6; } + cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int @@ -15482,42 +15425,19 @@ pthread_t th; pthread_join(th, 0); ; return 0; } -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_link") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest$ac_exeext && - $as_test_x conftest$ac_exeext; then - done=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + done=yes fi - -rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ - conftest$ac_exeext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext if test "x$done" = xyes; then - { echo "$as_me:$LINENO: result: yes" >&5 -echo "${ECHO_T}yes" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } else - { echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } fi fi @@ -15526,14 +15446,10 @@ echo "${ECHO_T}no" >&6; } # about -lpthread # if test x"$done" = xno; then - { echo "$as_me:$LINENO: checking whether -lpthread fixes that" >&5 -echo $ECHO_N "checking whether -lpthread fixes that... $ECHO_C" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether -lpthread fixes that" >&5 +$as_echo_n "checking whether -lpthread fixes that... " >&6; } LIBS="-lpthread $PTHREAD_LIBS $save_LIBS" - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF + cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int @@ -15546,56 +15462,29 @@ pthread_t th; pthread_join(th, 0); return 0; } _ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_link") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest$ac_exeext && - $as_test_x conftest$ac_exeext; then +if ac_fn_c_try_link "$LINENO"; then : done=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - fi - -rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ - conftest$ac_exeext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext if test "x$done" = xyes; then - { echo "$as_me:$LINENO: result: yes" >&5 -echo "${ECHO_T}yes" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } PTHREAD_LIBS="-lpthread $PTHREAD_LIBS" else - { echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } fi fi # # FreeBSD 4.10 gcc forgets to use -lc_r instead of -lc # if test x"$done" = xno; then - { echo "$as_me:$LINENO: checking whether -lc_r fixes that" >&5 -echo $ECHO_N "checking whether -lc_r fixes that... $ECHO_C" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether -lc_r fixes that" >&5 +$as_echo_n "checking whether -lc_r fixes that... " >&6; } LIBS="-lc_r $PTHREAD_LIBS $save_LIBS" - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF + cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int @@ -15608,48 +15497,25 @@ pthread_t th; pthread_join(th, 0); return 0; } _ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_link") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest$ac_exeext && - $as_test_x conftest$ac_exeext; then +if ac_fn_c_try_link "$LINENO"; then : done=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - fi - -rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ - conftest$ac_exeext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext if test "x$done" = xyes; then - { echo "$as_me:$LINENO: result: yes" >&5 -echo "${ECHO_T}yes" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } PTHREAD_LIBS="-lc_r $PTHREAD_LIBS" else - { echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } fi fi if test x"$done" = xno; then # OK, we have run out of ideas - { echo "$as_me:$LINENO: WARNING: Impossible to determine how to use pthreads with shared libraries" >&5 -echo "$as_me: WARNING: Impossible to determine how to use pthreads with shared libraries" >&2;} + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Impossible to determine how to use pthreads with shared libraries" >&5 +$as_echo "$as_me: WARNING: Impossible to determine how to use pthreads with shared libraries" >&2;} # so it's not safe to assume that we may use pthreads acx_pthread_ok=no @@ -15669,14 +15535,17 @@ fi # Finally, execute ACTION-IF-FOUND/ACTION-IF-NOT-FOUND: if test x"$acx_pthread_ok" = xyes; then -cat >>confdefs.h <<\_ACEOF -#define HAVE_PTHREAD 1 -_ACEOF +$as_echo "#define HAVE_PTHREAD 1" >>confdefs.h : else acx_pthread_ok=no - + if test "x$with_pthreads" != "xcheck"; then : + { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error $? "--with-pthreads was specified, but unable to be used +See \`config.log' for more details" "$LINENO" 5; } +fi fi ac_ext=cpp ac_cpp='$CXXCPP $CPPFLAGS' @@ -15685,6 +15554,18 @@ ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ex ac_compiler_gnu=$ac_cv_cxx_compiler_gnu + have_pthreads="$acx_pthread_ok" +fi + if test "x$have_pthreads" == "xyes"; then + HAVE_PTHREADS_TRUE= + HAVE_PTHREADS_FALSE='#' +else + HAVE_PTHREADS_TRUE='#' + HAVE_PTHREADS_FALSE= +fi + + + # TODO(chandlerc@google.com) Check for the necessary system headers. @@ -15719,12 +15600,13 @@ _ACEOF case $ac_val in #( *${as_nl}*) case $ac_var in #( - *_cv_*) { echo "$as_me:$LINENO: WARNING: Cache variable $ac_var contains a newline." >&5 -echo "$as_me: WARNING: Cache variable $ac_var contains a newline." >&2;} ;; + *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5 +$as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; esac case $ac_var in #( _ | IFS | as_nl) ;; #( - *) $as_unset $ac_var ;; + BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #( + *) { eval $ac_var=; unset $ac_var;} ;; esac ;; esac done @@ -15732,8 +15614,8 @@ echo "$as_me: WARNING: Cache variable $ac_var contains a newline." >&2;} ;; (set) 2>&1 | case $as_nl`(ac_space=' '; set) 2>&1` in #( *${as_nl}ac_space=\ *) - # `set' does not quote correctly, so add quotes (double-quote - # substitution turns \\\\ into \\, and sed turns \\ into \). + # `set' does not quote correctly, so add quotes: double-quote + # substitution turns \\\\ into \\, and sed turns \\ into \. sed -n \ "s/'/'\\\\''/g; s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p" @@ -15755,13 +15637,24 @@ echo "$as_me: WARNING: Cache variable $ac_var contains a newline." >&2;} ;; :end' >>confcache if diff "$cache_file" confcache >/dev/null 2>&1; then :; else if test -w "$cache_file"; then - test "x$cache_file" != "x/dev/null" && - { echo "$as_me:$LINENO: updating cache $cache_file" >&5 -echo "$as_me: updating cache $cache_file" >&6;} - cat confcache >$cache_file + if test "x$cache_file" != "x/dev/null"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: updating cache $cache_file" >&5 +$as_echo "$as_me: updating cache $cache_file" >&6;} + if test ! -f "$cache_file" || test -h "$cache_file"; then + cat confcache >"$cache_file" + else + case $cache_file in #( + */* | ?:*) + mv -f confcache "$cache_file"$$ && + mv -f "$cache_file"$$ "$cache_file" ;; #( + *) + mv -f confcache "$cache_file" ;; + esac + fi + fi else - { echo "$as_me:$LINENO: not updating unwritable cache $cache_file" >&5 -echo "$as_me: not updating unwritable cache $cache_file" >&6;} + { $as_echo "$as_me:${as_lineno-$LINENO}: not updating unwritable cache $cache_file" >&5 +$as_echo "$as_me: not updating unwritable cache $cache_file" >&6;} fi fi rm -f confcache @@ -15774,62 +15667,58 @@ DEFS=-DHAVE_CONFIG_H ac_libobjs= ac_ltlibobjs= +U= for ac_i in : $LIBOBJS; do test "x$ac_i" = x: && continue # 1. Remove the extension, and $U if already installed. ac_script='s/\$U\././;s/\.o$//;s/\.obj$//' - ac_i=`echo "$ac_i" | sed "$ac_script"` + ac_i=`$as_echo "$ac_i" | sed "$ac_script"` # 2. Prepend LIBOBJDIR. When used with automake>=1.10 LIBOBJDIR # will be set to the directory where LIBOBJS objects are built. - ac_libobjs="$ac_libobjs \${LIBOBJDIR}$ac_i\$U.$ac_objext" - ac_ltlibobjs="$ac_ltlibobjs \${LIBOBJDIR}$ac_i"'$U.lo' + as_fn_append ac_libobjs " \${LIBOBJDIR}$ac_i\$U.$ac_objext" + as_fn_append ac_ltlibobjs " \${LIBOBJDIR}$ac_i"'$U.lo' done LIBOBJS=$ac_libobjs LTLIBOBJS=$ac_ltlibobjs + if test -n "$EXEEXT"; then + am__EXEEXT_TRUE= + am__EXEEXT_FALSE='#' +else + am__EXEEXT_TRUE='#' + am__EXEEXT_FALSE= +fi + if test -z "${AMDEP_TRUE}" && test -z "${AMDEP_FALSE}"; then - { { echo "$as_me:$LINENO: error: conditional \"AMDEP\" was never defined. -Usually this means the macro was only invoked conditionally." >&5 -echo "$as_me: error: conditional \"AMDEP\" was never defined. -Usually this means the macro was only invoked conditionally." >&2;} - { (exit 1); exit 1; }; } + as_fn_error $? "conditional \"AMDEP\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${am__fastdepCC_TRUE}" && test -z "${am__fastdepCC_FALSE}"; then - { { echo "$as_me:$LINENO: error: conditional \"am__fastdepCC\" was never defined. -Usually this means the macro was only invoked conditionally." >&5 -echo "$as_me: error: conditional \"am__fastdepCC\" was never defined. -Usually this means the macro was only invoked conditionally." >&2;} - { (exit 1); exit 1; }; } -fi -if test -z "${am__fastdepCXX_TRUE}" && test -z "${am__fastdepCXX_FALSE}"; then - { { echo "$as_me:$LINENO: error: conditional \"am__fastdepCXX\" was never defined. -Usually this means the macro was only invoked conditionally." >&5 -echo "$as_me: error: conditional \"am__fastdepCXX\" was never defined. -Usually this means the macro was only invoked conditionally." >&2;} - { (exit 1); exit 1; }; } + as_fn_error $? "conditional \"am__fastdepCC\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${am__fastdepCXX_TRUE}" && test -z "${am__fastdepCXX_FALSE}"; then - { { echo "$as_me:$LINENO: error: conditional \"am__fastdepCXX\" was never defined. -Usually this means the macro was only invoked conditionally." >&5 -echo "$as_me: error: conditional \"am__fastdepCXX\" was never defined. -Usually this means the macro was only invoked conditionally." >&2;} - { (exit 1); exit 1; }; } + as_fn_error $? "conditional \"am__fastdepCXX\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${HAVE_PYTHON_TRUE}" && test -z "${HAVE_PYTHON_FALSE}"; then - { { echo "$as_me:$LINENO: error: conditional \"HAVE_PYTHON\" was never defined. -Usually this means the macro was only invoked conditionally." >&5 -echo "$as_me: error: conditional \"HAVE_PYTHON\" was never defined. -Usually this means the macro was only invoked conditionally." >&2;} - { (exit 1); exit 1; }; } + as_fn_error $? "conditional \"HAVE_PYTHON\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${HAVE_PTHREADS_TRUE}" && test -z "${HAVE_PTHREADS_FALSE}"; then + as_fn_error $? "conditional \"HAVE_PTHREADS\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi -: ${CONFIG_STATUS=./config.status} +: "${CONFIG_STATUS=./config.status}" +ac_write_fail=0 ac_clean_files_save=$ac_clean_files ac_clean_files="$ac_clean_files $CONFIG_STATUS" -{ echo "$as_me:$LINENO: creating $CONFIG_STATUS" >&5 -echo "$as_me: creating $CONFIG_STATUS" >&6;} -cat >$CONFIG_STATUS <<_ACEOF +{ $as_echo "$as_me:${as_lineno-$LINENO}: creating $CONFIG_STATUS" >&5 +$as_echo "$as_me: creating $CONFIG_STATUS" >&6;} +as_write_fail=0 +cat >$CONFIG_STATUS <<_ASEOF || as_write_fail=1 #! $SHELL # Generated by $as_me. # Run this file to recreate the current configuration. @@ -15839,59 +15728,79 @@ cat >$CONFIG_STATUS <<_ACEOF debug=false ac_cs_recheck=false ac_cs_silent=false -SHELL=\${CONFIG_SHELL-$SHELL} -_ACEOF -cat >>$CONFIG_STATUS <<\_ACEOF -## --------------------- ## -## M4sh Initialization. ## -## --------------------- ## +SHELL=\${CONFIG_SHELL-$SHELL} +export SHELL +_ASEOF +cat >>$CONFIG_STATUS <<\_ASEOF || as_write_fail=1 +## -------------------- ## +## M4sh Initialization. ## +## -------------------- ## # Be more Bourne compatible DUALCASE=1; export DUALCASE # for MKS sh -if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then +if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then : emulate sh NULLCMD=: - # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which + # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which # is contrary to our usage. Disable this feature. alias -g '${1+"$@"}'='"$@"' setopt NO_GLOB_SUBST else - case `(set -o) 2>/dev/null` in - *posix*) set -o posix ;; + case `(set -o) 2>/dev/null` in #( + *posix*) : + set -o posix ;; #( + *) : + ;; esac - fi - - -# PATH needs CR -# Avoid depending upon Character Ranges. -as_cr_letters='abcdefghijklmnopqrstuvwxyz' -as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' -as_cr_Letters=$as_cr_letters$as_cr_LETTERS -as_cr_digits='0123456789' -as_cr_alnum=$as_cr_Letters$as_cr_digits - -# The user is always right. -if test "${PATH_SEPARATOR+set}" != set; then - echo "#! /bin/sh" >conf$$.sh - echo "exit 0" >>conf$$.sh - chmod +x conf$$.sh - if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then - PATH_SEPARATOR=';' +as_nl=' +' +export as_nl +# Printing a long string crashes Solaris 7 /usr/bin/printf. +as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' +as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo +as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo +# Prefer a ksh shell builtin over an external printf program on Solaris, +# but without wasting forks for bash or zsh. +if test -z "$BASH_VERSION$ZSH_VERSION" \ + && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then + as_echo='print -r --' + as_echo_n='print -rn --' +elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then + as_echo='printf %s\n' + as_echo_n='printf %s' +else + if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then + as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"' + as_echo_n='/usr/ucb/echo -n' else - PATH_SEPARATOR=: + as_echo_body='eval expr "X$1" : "X\\(.*\\)"' + as_echo_n_body='eval + arg=$1; + case $arg in #( + *"$as_nl"*) + expr "X$arg" : "X\\(.*\\)$as_nl"; + arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;; + esac; + expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl" + ' + export as_echo_n_body + as_echo_n='sh -c $as_echo_n_body as_echo' fi - rm -f conf$$.sh + export as_echo_body + as_echo='sh -c $as_echo_body as_echo' fi -# Support unset when possible. -if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then - as_unset=unset -else - as_unset=false +# The user is always right. +if test "${PATH_SEPARATOR+set}" != set; then + PATH_SEPARATOR=: + (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { + (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || + PATH_SEPARATOR=';' + } fi @@ -15900,20 +15809,19 @@ fi # there to prevent editors from complaining about space-tab. # (If _AS_PATH_WALK were called with IFS unset, it would disable word # splitting by setting IFS to empty value.) -as_nl=' -' IFS=" "" $as_nl" # Find who we are. Look in the path if we contain no directory separator. -case $0 in +as_myself= +case $0 in #(( *[\\/]* ) as_myself=$0 ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. - test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break -done + test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break + done IFS=$as_save_IFS ;; @@ -15924,32 +15832,111 @@ if test "x$as_myself" = x; then as_myself=$0 fi if test ! -f "$as_myself"; then - echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 - { (exit 1); exit 1; } + $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 + exit 1 fi -# Work around bugs in pre-3.0 UWIN ksh. -for as_var in ENV MAIL MAILPATH -do ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var +# Unset variables that we do not need and which cause bugs (e.g. in +# pre-3.0 UWIN ksh). But do not cause bugs in bash 2.01; the "|| exit 1" +# suppresses any "Segmentation fault" message there. '((' could +# trigger a bug in pdksh 5.2.14. +for as_var in BASH_ENV ENV MAIL MAILPATH +do eval test x\${$as_var+set} = xset \ + && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : done PS1='$ ' PS2='> ' PS4='+ ' # NLS nuisances. -for as_var in \ - LANG LANGUAGE LC_ADDRESS LC_ALL LC_COLLATE LC_CTYPE LC_IDENTIFICATION \ - LC_MEASUREMENT LC_MESSAGES LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER \ - LC_TELEPHONE LC_TIME -do - if (set +x; test -z "`(eval $as_var=C; export $as_var) 2>&1`"); then - eval $as_var=C; export $as_var - else - ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var +LC_ALL=C +export LC_ALL +LANGUAGE=C +export LANGUAGE + +# CDPATH. +(unset CDPATH) >/dev/null 2>&1 && unset CDPATH + + +# as_fn_error STATUS ERROR [LINENO LOG_FD] +# ---------------------------------------- +# Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are +# provided, also output the error to LOG_FD, referencing LINENO. Then exit the +# script with STATUS, using 1 if that was 0. +as_fn_error () +{ + as_status=$1; test $as_status -eq 0 && as_status=1 + if test "$4"; then + as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4 fi -done + $as_echo "$as_me: error: $2" >&2 + as_fn_exit $as_status +} # as_fn_error + + +# as_fn_set_status STATUS +# ----------------------- +# Set $? to STATUS, without forking. +as_fn_set_status () +{ + return $1 +} # as_fn_set_status + +# as_fn_exit STATUS +# ----------------- +# Exit the shell with STATUS, even in a "trap 0" or "set -e" context. +as_fn_exit () +{ + set +e + as_fn_set_status $1 + exit $1 +} # as_fn_exit + +# as_fn_unset VAR +# --------------- +# Portably unset VAR. +as_fn_unset () +{ + { eval $1=; unset $1;} +} +as_unset=as_fn_unset +# as_fn_append VAR VALUE +# ---------------------- +# Append the text in VALUE to the end of the definition contained in VAR. Take +# advantage of any shell optimizations that allow amortized linear growth over +# repeated appends, instead of the typical quadratic growth present in naive +# implementations. +if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then : + eval 'as_fn_append () + { + eval $1+=\$2 + }' +else + as_fn_append () + { + eval $1=\$$1\$2 + } +fi # as_fn_append + +# as_fn_arith ARG... +# ------------------ +# Perform arithmetic evaluation on the ARGs, and store the result in the +# global $as_val. Take advantage of shells that can avoid forks. The arguments +# must be portable across $(()) and expr. +if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then : + eval 'as_fn_arith () + { + as_val=$(( $* )) + }' +else + as_fn_arith () + { + as_val=`expr "$@" || test $? -eq 1` + } +fi # as_fn_arith + -# Required to use basename. if expr a : '\(a\)' >/dev/null 2>&1 && test "X`expr 00001 : '.*\(...\)'`" = X001; then as_expr=expr @@ -15963,13 +15950,17 @@ else as_basename=false fi +if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then + as_dirname=dirname +else + as_dirname=false +fi -# Name of the executable. as_me=`$as_basename -- "$0" || $as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ X"$0" : 'X\(//\)$' \| \ X"$0" : 'X\(/\)' \| . 2>/dev/null || -echo X/"$0" | +$as_echo X/"$0" | sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/ q @@ -15984,104 +15975,103 @@ echo X/"$0" | } s/.*/./; q'` -# CDPATH. -$as_unset CDPATH - - - - as_lineno_1=$LINENO - as_lineno_2=$LINENO - test "x$as_lineno_1" != "x$as_lineno_2" && - test "x`expr $as_lineno_1 + 1`" = "x$as_lineno_2" || { - - # Create $as_me.lineno as a copy of $as_myself, but with $LINENO - # uniformly replaced by the line number. The first 'sed' inserts a - # line-number line after each line using $LINENO; the second 'sed' - # does the real work. The second script uses 'N' to pair each - # line-number line with the line containing $LINENO, and appends - # trailing '-' during substitution so that $LINENO is not a special - # case at line end. - # (Raja R Harinath suggested sed '=', and Paul Eggert wrote the - # scripts with optimization help from Paolo Bonzini. Blame Lee - # E. McMahon (1931-1989) for sed's syntax. :-) - sed -n ' - p - /[$]LINENO/= - ' <$as_myself | - sed ' - s/[$]LINENO.*/&-/ - t lineno - b - :lineno - N - :loop - s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/ - t loop - s/-\n.*// - ' >$as_me.lineno && - chmod +x "$as_me.lineno" || - { echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2 - { (exit 1); exit 1; }; } - - # Don't try to exec as it changes $[0], causing all sort of problems - # (the dirname of $[0] is not the place where we might find the - # original and so on. Autoconf is especially sensitive to this). - . "./$as_me.lineno" - # Exit status is that of the last command. - exit -} - - -if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then - as_dirname=dirname -else - as_dirname=false -fi +# Avoid depending upon Character Ranges. +as_cr_letters='abcdefghijklmnopqrstuvwxyz' +as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' +as_cr_Letters=$as_cr_letters$as_cr_LETTERS +as_cr_digits='0123456789' +as_cr_alnum=$as_cr_Letters$as_cr_digits ECHO_C= ECHO_N= ECHO_T= -case `echo -n x` in +case `echo -n x` in #((((( -n*) - case `echo 'x\c'` in + case `echo 'xy\c'` in *c*) ECHO_T=' ';; # ECHO_T is single tab character. - *) ECHO_C='\c';; + xy) ECHO_C='\c';; + *) echo `echo ksh88 bug on AIX 6.1` > /dev/null + ECHO_T=' ';; esac;; *) ECHO_N='-n';; esac -if expr a : '\(a\)' >/dev/null 2>&1 && - test "X`expr 00001 : '.*\(...\)'`" = X001; then - as_expr=expr -else - as_expr=false -fi - rm -f conf$$ conf$$.exe conf$$.file if test -d conf$$.dir; then rm -f conf$$.dir/conf$$.file else rm -f conf$$.dir - mkdir conf$$.dir -fi -echo >conf$$.file -if ln -s conf$$.file conf$$ 2>/dev/null; then - as_ln_s='ln -s' - # ... but there are two gotchas: - # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. - # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. - # In both cases, we have to default to `cp -p'. - ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || + mkdir conf$$.dir 2>/dev/null +fi +if (echo >conf$$.file) 2>/dev/null; then + if ln -s conf$$.file conf$$ 2>/dev/null; then + as_ln_s='ln -s' + # ... but there are two gotchas: + # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. + # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. + # In both cases, we have to default to `cp -p'. + ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || + as_ln_s='cp -p' + elif ln conf$$.file conf$$ 2>/dev/null; then + as_ln_s=ln + else as_ln_s='cp -p' -elif ln conf$$.file conf$$ 2>/dev/null; then - as_ln_s=ln + fi else as_ln_s='cp -p' fi rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file rmdir conf$$.dir 2>/dev/null + +# as_fn_mkdir_p +# ------------- +# Create "$as_dir" as a directory, including parents if necessary. +as_fn_mkdir_p () +{ + + case $as_dir in #( + -*) as_dir=./$as_dir;; + esac + test -d "$as_dir" || eval $as_mkdir_p || { + as_dirs= + while :; do + case $as_dir in #( + *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( + *) as_qdir=$as_dir;; + esac + as_dirs="'$as_qdir' $as_dirs" + as_dir=`$as_dirname -- "$as_dir" || +$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$as_dir" : 'X\(//\)[^/]' \| \ + X"$as_dir" : 'X\(//\)$' \| \ + X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || +$as_echo X"$as_dir" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + test -d "$as_dir" && break + done + test -z "$as_dirs" || eval "mkdir $as_dirs" + } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir" + + +} # as_fn_mkdir_p if mkdir -p . 2>/dev/null; then - as_mkdir_p=: + as_mkdir_p='mkdir -p "$as_dir"' else test -d ./-p && rmdir ./-p as_mkdir_p=false @@ -16098,12 +16088,12 @@ else as_test_x=' eval sh -c '\'' if test -d "$1"; then - test -d "$1/."; + test -d "$1/."; else - case $1 in - -*)set "./$1";; + case $1 in #( + -*)set "./$1";; esac; - case `ls -ld'$as_ls_L_option' "$1" 2>/dev/null` in + case `ls -ld'$as_ls_L_option' "$1" 2>/dev/null` in #(( ???[sx]*):;;*)false;;esac;fi '\'' sh ' @@ -16118,13 +16108,19 @@ as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" exec 6>&1 +## ----------------------------------- ## +## Main body of $CONFIG_STATUS script. ## +## ----------------------------------- ## +_ASEOF +test $as_write_fail = 0 && chmod +x $CONFIG_STATUS || ac_write_fail=1 -# Save the log message, to keep $[0] and so on meaningful, and to +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +# Save the log message, to keep $0 and so on meaningful, and to # report actual input values of CONFIG_FILES etc. instead of their # values after options handling. ac_log=" -This file was extended by Google C++ Testing Framework $as_me 1.4.0, which was -generated by GNU Autoconf 2.61. Invocation command line was +This file was extended by Google C++ Testing Framework $as_me 1.6.0, which was +generated by GNU Autoconf 2.68. Invocation command line was CONFIG_FILES = $CONFIG_FILES CONFIG_HEADERS = $CONFIG_HEADERS @@ -16137,7 +16133,16 @@ on `(hostname || uname -n) 2>/dev/null | sed 1q` _ACEOF -cat >>$CONFIG_STATUS <<_ACEOF +case $ac_config_files in *" +"*) set x $ac_config_files; shift; ac_config_files=$*;; +esac + +case $ac_config_headers in *" +"*) set x $ac_config_headers; shift; ac_config_headers=$*;; +esac + + +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 # Files that config.status was made for. config_files="$ac_config_files" config_headers="$ac_config_headers" @@ -16145,22 +16150,25 @@ config_commands="$ac_config_commands" _ACEOF -cat >>$CONFIG_STATUS <<\_ACEOF +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 ac_cs_usage="\ -\`$as_me' instantiates files from templates according to the -current configuration. +\`$as_me' instantiates files and other configuration actions +from templates according to the current configuration. Unless the files +and actions are specified as TAGs, all are instantiated by default. -Usage: $0 [OPTIONS] [FILE]... +Usage: $0 [OPTION]... [TAG]... -h, --help print this help, then exit -V, --version print version number and configuration settings, then exit - -q, --quiet do not print progress messages + --config print configuration, then exit + -q, --quiet, --silent + do not print progress messages -d, --debug don't remove temporary files --recheck update $as_me by reconfiguring in the same conditions - --file=FILE[:TEMPLATE] - instantiate the configuration file FILE - --header=FILE[:TEMPLATE] - instantiate the configuration header FILE + --file=FILE[:TEMPLATE] + instantiate the configuration file FILE + --header=FILE[:TEMPLATE] + instantiate the configuration header FILE Configuration files: $config_files @@ -16171,16 +16179,17 @@ $config_headers Configuration commands: $config_commands -Report bugs to ." +Report bugs to ." _ACEOF -cat >>$CONFIG_STATUS <<_ACEOF +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 +ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`" ac_cs_version="\\ -Google C++ Testing Framework config.status 1.4.0 -configured by $0, generated by GNU Autoconf 2.61, - with options \\"`echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`\\" +Google C++ Testing Framework config.status 1.6.0 +configured by $0, generated by GNU Autoconf 2.68, + with options \\"\$ac_cs_config\\" -Copyright (C) 2006 Free Software Foundation, Inc. +Copyright (C) 2010 Free Software Foundation, Inc. This config.status script is free software; the Free Software Foundation gives unlimited permission to copy, distribute and modify it." @@ -16188,20 +16197,26 @@ ac_pwd='$ac_pwd' srcdir='$srcdir' INSTALL='$INSTALL' MKDIR_P='$MKDIR_P' +AWK='$AWK' +test -n "\$AWK" || AWK=awk _ACEOF -cat >>$CONFIG_STATUS <<\_ACEOF -# If no file are specified by the user, then we need to provide default -# value. By we need to know if files were specified by the user. +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +# The default lists apply if the user does not specify any file. ac_need_defaults=: while test $# != 0 do case $1 in - --*=*) + --*=?*) ac_option=`expr "X$1" : 'X\([^=]*\)='` ac_optarg=`expr "X$1" : 'X[^=]*=\(.*\)'` ac_shift=: ;; + --*=) + ac_option=`expr "X$1" : 'X\([^=]*\)='` + ac_optarg= + ac_shift=: + ;; *) ac_option=$1 ac_optarg=$2 @@ -16214,34 +16229,41 @@ do -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r) ac_cs_recheck=: ;; --version | --versio | --versi | --vers | --ver | --ve | --v | -V ) - echo "$ac_cs_version"; exit ;; + $as_echo "$ac_cs_version"; exit ;; + --config | --confi | --conf | --con | --co | --c ) + $as_echo "$ac_cs_config"; exit ;; --debug | --debu | --deb | --de | --d | -d ) debug=: ;; --file | --fil | --fi | --f ) $ac_shift - CONFIG_FILES="$CONFIG_FILES $ac_optarg" + case $ac_optarg in + *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;; + '') as_fn_error $? "missing file argument" ;; + esac + as_fn_append CONFIG_FILES " '$ac_optarg'" ac_need_defaults=false;; --header | --heade | --head | --hea ) $ac_shift - CONFIG_HEADERS="$CONFIG_HEADERS $ac_optarg" + case $ac_optarg in + *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;; + esac + as_fn_append CONFIG_HEADERS " '$ac_optarg'" ac_need_defaults=false;; --he | --h) # Conflict between --help and --header - { echo "$as_me: error: ambiguous option: $1 -Try \`$0 --help' for more information." >&2 - { (exit 1); exit 1; }; };; + as_fn_error $? "ambiguous option: \`$1' +Try \`$0 --help' for more information.";; --help | --hel | -h ) - echo "$ac_cs_usage"; exit ;; + $as_echo "$ac_cs_usage"; exit ;; -q | -quiet | --quiet | --quie | --qui | --qu | --q \ | -silent | --silent | --silen | --sile | --sil | --si | --s) ac_cs_silent=: ;; # This is an error. - -*) { echo "$as_me: error: unrecognized option: $1 -Try \`$0 --help' for more information." >&2 - { (exit 1); exit 1; }; } ;; + -*) as_fn_error $? "unrecognized option: \`$1' +Try \`$0 --help' for more information." ;; - *) ac_config_targets="$ac_config_targets $1" + *) as_fn_append ac_config_targets " $1" ac_need_defaults=false ;; esac @@ -16256,27 +16278,29 @@ if $ac_cs_silent; then fi _ACEOF -cat >>$CONFIG_STATUS <<_ACEOF +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 if \$ac_cs_recheck; then - echo "running CONFIG_SHELL=$SHELL $SHELL $0 "$ac_configure_args \$ac_configure_extra_args " --no-create --no-recursion" >&6 - CONFIG_SHELL=$SHELL + set X '$SHELL' '$0' $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion + shift + \$as_echo "running CONFIG_SHELL=$SHELL \$*" >&6 + CONFIG_SHELL='$SHELL' export CONFIG_SHELL - exec $SHELL "$0"$ac_configure_args \$ac_configure_extra_args --no-create --no-recursion + exec "\$@" fi _ACEOF -cat >>$CONFIG_STATUS <<\_ACEOF +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 exec 5>>config.log { echo sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX ## Running $as_me. ## _ASBOX - echo "$ac_log" + $as_echo "$ac_log" } >&5 _ACEOF -cat >>$CONFIG_STATUS <<_ACEOF +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 # # INIT-COMMANDS # @@ -16290,183 +16314,208 @@ AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir" sed_quote_subst='$sed_quote_subst' double_quote_subst='$double_quote_subst' delay_variable_subst='$delay_variable_subst' -macro_version='`$ECHO "X$macro_version" | $Xsed -e "$delay_single_quote_subst"`' -macro_revision='`$ECHO "X$macro_revision" | $Xsed -e "$delay_single_quote_subst"`' -enable_shared='`$ECHO "X$enable_shared" | $Xsed -e "$delay_single_quote_subst"`' -enable_static='`$ECHO "X$enable_static" | $Xsed -e "$delay_single_quote_subst"`' -pic_mode='`$ECHO "X$pic_mode" | $Xsed -e "$delay_single_quote_subst"`' -enable_fast_install='`$ECHO "X$enable_fast_install" | $Xsed -e "$delay_single_quote_subst"`' -host_alias='`$ECHO "X$host_alias" | $Xsed -e "$delay_single_quote_subst"`' -host='`$ECHO "X$host" | $Xsed -e "$delay_single_quote_subst"`' -host_os='`$ECHO "X$host_os" | $Xsed -e "$delay_single_quote_subst"`' -build_alias='`$ECHO "X$build_alias" | $Xsed -e "$delay_single_quote_subst"`' -build='`$ECHO "X$build" | $Xsed -e "$delay_single_quote_subst"`' -build_os='`$ECHO "X$build_os" | $Xsed -e "$delay_single_quote_subst"`' -SED='`$ECHO "X$SED" | $Xsed -e "$delay_single_quote_subst"`' -Xsed='`$ECHO "X$Xsed" | $Xsed -e "$delay_single_quote_subst"`' -GREP='`$ECHO "X$GREP" | $Xsed -e "$delay_single_quote_subst"`' -EGREP='`$ECHO "X$EGREP" | $Xsed -e "$delay_single_quote_subst"`' -FGREP='`$ECHO "X$FGREP" | $Xsed -e "$delay_single_quote_subst"`' -LD='`$ECHO "X$LD" | $Xsed -e "$delay_single_quote_subst"`' -NM='`$ECHO "X$NM" | $Xsed -e "$delay_single_quote_subst"`' -LN_S='`$ECHO "X$LN_S" | $Xsed -e "$delay_single_quote_subst"`' -max_cmd_len='`$ECHO "X$max_cmd_len" | $Xsed -e "$delay_single_quote_subst"`' -ac_objext='`$ECHO "X$ac_objext" | $Xsed -e "$delay_single_quote_subst"`' -exeext='`$ECHO "X$exeext" | $Xsed -e "$delay_single_quote_subst"`' -lt_unset='`$ECHO "X$lt_unset" | $Xsed -e "$delay_single_quote_subst"`' -lt_SP2NL='`$ECHO "X$lt_SP2NL" | $Xsed -e "$delay_single_quote_subst"`' -lt_NL2SP='`$ECHO "X$lt_NL2SP" | $Xsed -e "$delay_single_quote_subst"`' -reload_flag='`$ECHO "X$reload_flag" | $Xsed -e "$delay_single_quote_subst"`' -reload_cmds='`$ECHO "X$reload_cmds" | $Xsed -e "$delay_single_quote_subst"`' -deplibs_check_method='`$ECHO "X$deplibs_check_method" | $Xsed -e "$delay_single_quote_subst"`' -file_magic_cmd='`$ECHO "X$file_magic_cmd" | $Xsed -e "$delay_single_quote_subst"`' -AR='`$ECHO "X$AR" | $Xsed -e "$delay_single_quote_subst"`' -AR_FLAGS='`$ECHO "X$AR_FLAGS" | $Xsed -e "$delay_single_quote_subst"`' -STRIP='`$ECHO "X$STRIP" | $Xsed -e "$delay_single_quote_subst"`' -RANLIB='`$ECHO "X$RANLIB" | $Xsed -e "$delay_single_quote_subst"`' -old_postinstall_cmds='`$ECHO "X$old_postinstall_cmds" | $Xsed -e "$delay_single_quote_subst"`' -old_postuninstall_cmds='`$ECHO "X$old_postuninstall_cmds" | $Xsed -e "$delay_single_quote_subst"`' -old_archive_cmds='`$ECHO "X$old_archive_cmds" | $Xsed -e "$delay_single_quote_subst"`' -CC='`$ECHO "X$CC" | $Xsed -e "$delay_single_quote_subst"`' -CFLAGS='`$ECHO "X$CFLAGS" | $Xsed -e "$delay_single_quote_subst"`' -compiler='`$ECHO "X$compiler" | $Xsed -e "$delay_single_quote_subst"`' -GCC='`$ECHO "X$GCC" | $Xsed -e "$delay_single_quote_subst"`' -lt_cv_sys_global_symbol_pipe='`$ECHO "X$lt_cv_sys_global_symbol_pipe" | $Xsed -e "$delay_single_quote_subst"`' -lt_cv_sys_global_symbol_to_cdecl='`$ECHO "X$lt_cv_sys_global_symbol_to_cdecl" | $Xsed -e "$delay_single_quote_subst"`' -lt_cv_sys_global_symbol_to_c_name_address='`$ECHO "X$lt_cv_sys_global_symbol_to_c_name_address" | $Xsed -e "$delay_single_quote_subst"`' -lt_cv_sys_global_symbol_to_c_name_address_lib_prefix='`$ECHO "X$lt_cv_sys_global_symbol_to_c_name_address_lib_prefix" | $Xsed -e "$delay_single_quote_subst"`' -objdir='`$ECHO "X$objdir" | $Xsed -e "$delay_single_quote_subst"`' -SHELL='`$ECHO "X$SHELL" | $Xsed -e "$delay_single_quote_subst"`' -ECHO='`$ECHO "X$ECHO" | $Xsed -e "$delay_single_quote_subst"`' -MAGIC_CMD='`$ECHO "X$MAGIC_CMD" | $Xsed -e "$delay_single_quote_subst"`' -lt_prog_compiler_no_builtin_flag='`$ECHO "X$lt_prog_compiler_no_builtin_flag" | $Xsed -e "$delay_single_quote_subst"`' -lt_prog_compiler_wl='`$ECHO "X$lt_prog_compiler_wl" | $Xsed -e "$delay_single_quote_subst"`' -lt_prog_compiler_pic='`$ECHO "X$lt_prog_compiler_pic" | $Xsed -e "$delay_single_quote_subst"`' -lt_prog_compiler_static='`$ECHO "X$lt_prog_compiler_static" | $Xsed -e "$delay_single_quote_subst"`' -lt_cv_prog_compiler_c_o='`$ECHO "X$lt_cv_prog_compiler_c_o" | $Xsed -e "$delay_single_quote_subst"`' -need_locks='`$ECHO "X$need_locks" | $Xsed -e "$delay_single_quote_subst"`' -DSYMUTIL='`$ECHO "X$DSYMUTIL" | $Xsed -e "$delay_single_quote_subst"`' -NMEDIT='`$ECHO "X$NMEDIT" | $Xsed -e "$delay_single_quote_subst"`' -LIPO='`$ECHO "X$LIPO" | $Xsed -e "$delay_single_quote_subst"`' -OTOOL='`$ECHO "X$OTOOL" | $Xsed -e "$delay_single_quote_subst"`' -OTOOL64='`$ECHO "X$OTOOL64" | $Xsed -e "$delay_single_quote_subst"`' -libext='`$ECHO "X$libext" | $Xsed -e "$delay_single_quote_subst"`' -shrext_cmds='`$ECHO "X$shrext_cmds" | $Xsed -e "$delay_single_quote_subst"`' -extract_expsyms_cmds='`$ECHO "X$extract_expsyms_cmds" | $Xsed -e "$delay_single_quote_subst"`' -archive_cmds_need_lc='`$ECHO "X$archive_cmds_need_lc" | $Xsed -e "$delay_single_quote_subst"`' -enable_shared_with_static_runtimes='`$ECHO "X$enable_shared_with_static_runtimes" | $Xsed -e "$delay_single_quote_subst"`' -export_dynamic_flag_spec='`$ECHO "X$export_dynamic_flag_spec" | $Xsed -e "$delay_single_quote_subst"`' -whole_archive_flag_spec='`$ECHO "X$whole_archive_flag_spec" | $Xsed -e "$delay_single_quote_subst"`' -compiler_needs_object='`$ECHO "X$compiler_needs_object" | $Xsed -e "$delay_single_quote_subst"`' -old_archive_from_new_cmds='`$ECHO "X$old_archive_from_new_cmds" | $Xsed -e "$delay_single_quote_subst"`' -old_archive_from_expsyms_cmds='`$ECHO "X$old_archive_from_expsyms_cmds" | $Xsed -e "$delay_single_quote_subst"`' -archive_cmds='`$ECHO "X$archive_cmds" | $Xsed -e "$delay_single_quote_subst"`' -archive_expsym_cmds='`$ECHO "X$archive_expsym_cmds" | $Xsed -e "$delay_single_quote_subst"`' -module_cmds='`$ECHO "X$module_cmds" | $Xsed -e "$delay_single_quote_subst"`' -module_expsym_cmds='`$ECHO "X$module_expsym_cmds" | $Xsed -e "$delay_single_quote_subst"`' -with_gnu_ld='`$ECHO "X$with_gnu_ld" | $Xsed -e "$delay_single_quote_subst"`' -allow_undefined_flag='`$ECHO "X$allow_undefined_flag" | $Xsed -e "$delay_single_quote_subst"`' -no_undefined_flag='`$ECHO "X$no_undefined_flag" | $Xsed -e "$delay_single_quote_subst"`' -hardcode_libdir_flag_spec='`$ECHO "X$hardcode_libdir_flag_spec" | $Xsed -e "$delay_single_quote_subst"`' -hardcode_libdir_flag_spec_ld='`$ECHO "X$hardcode_libdir_flag_spec_ld" | $Xsed -e "$delay_single_quote_subst"`' -hardcode_libdir_separator='`$ECHO "X$hardcode_libdir_separator" | $Xsed -e "$delay_single_quote_subst"`' -hardcode_direct='`$ECHO "X$hardcode_direct" | $Xsed -e "$delay_single_quote_subst"`' -hardcode_direct_absolute='`$ECHO "X$hardcode_direct_absolute" | $Xsed -e "$delay_single_quote_subst"`' -hardcode_minus_L='`$ECHO "X$hardcode_minus_L" | $Xsed -e "$delay_single_quote_subst"`' -hardcode_shlibpath_var='`$ECHO "X$hardcode_shlibpath_var" | $Xsed -e "$delay_single_quote_subst"`' -hardcode_automatic='`$ECHO "X$hardcode_automatic" | $Xsed -e "$delay_single_quote_subst"`' -inherit_rpath='`$ECHO "X$inherit_rpath" | $Xsed -e "$delay_single_quote_subst"`' -link_all_deplibs='`$ECHO "X$link_all_deplibs" | $Xsed -e "$delay_single_quote_subst"`' -fix_srcfile_path='`$ECHO "X$fix_srcfile_path" | $Xsed -e "$delay_single_quote_subst"`' -always_export_symbols='`$ECHO "X$always_export_symbols" | $Xsed -e "$delay_single_quote_subst"`' -export_symbols_cmds='`$ECHO "X$export_symbols_cmds" | $Xsed -e "$delay_single_quote_subst"`' -exclude_expsyms='`$ECHO "X$exclude_expsyms" | $Xsed -e "$delay_single_quote_subst"`' -include_expsyms='`$ECHO "X$include_expsyms" | $Xsed -e "$delay_single_quote_subst"`' -prelink_cmds='`$ECHO "X$prelink_cmds" | $Xsed -e "$delay_single_quote_subst"`' -file_list_spec='`$ECHO "X$file_list_spec" | $Xsed -e "$delay_single_quote_subst"`' -variables_saved_for_relink='`$ECHO "X$variables_saved_for_relink" | $Xsed -e "$delay_single_quote_subst"`' -need_lib_prefix='`$ECHO "X$need_lib_prefix" | $Xsed -e "$delay_single_quote_subst"`' -need_version='`$ECHO "X$need_version" | $Xsed -e "$delay_single_quote_subst"`' -version_type='`$ECHO "X$version_type" | $Xsed -e "$delay_single_quote_subst"`' -runpath_var='`$ECHO "X$runpath_var" | $Xsed -e "$delay_single_quote_subst"`' -shlibpath_var='`$ECHO "X$shlibpath_var" | $Xsed -e "$delay_single_quote_subst"`' -shlibpath_overrides_runpath='`$ECHO "X$shlibpath_overrides_runpath" | $Xsed -e "$delay_single_quote_subst"`' -libname_spec='`$ECHO "X$libname_spec" | $Xsed -e "$delay_single_quote_subst"`' -library_names_spec='`$ECHO "X$library_names_spec" | $Xsed -e "$delay_single_quote_subst"`' -soname_spec='`$ECHO "X$soname_spec" | $Xsed -e "$delay_single_quote_subst"`' -postinstall_cmds='`$ECHO "X$postinstall_cmds" | $Xsed -e "$delay_single_quote_subst"`' -postuninstall_cmds='`$ECHO "X$postuninstall_cmds" | $Xsed -e "$delay_single_quote_subst"`' -finish_cmds='`$ECHO "X$finish_cmds" | $Xsed -e "$delay_single_quote_subst"`' -finish_eval='`$ECHO "X$finish_eval" | $Xsed -e "$delay_single_quote_subst"`' -hardcode_into_libs='`$ECHO "X$hardcode_into_libs" | $Xsed -e "$delay_single_quote_subst"`' -sys_lib_search_path_spec='`$ECHO "X$sys_lib_search_path_spec" | $Xsed -e "$delay_single_quote_subst"`' -sys_lib_dlsearch_path_spec='`$ECHO "X$sys_lib_dlsearch_path_spec" | $Xsed -e "$delay_single_quote_subst"`' -hardcode_action='`$ECHO "X$hardcode_action" | $Xsed -e "$delay_single_quote_subst"`' -enable_dlopen='`$ECHO "X$enable_dlopen" | $Xsed -e "$delay_single_quote_subst"`' -enable_dlopen_self='`$ECHO "X$enable_dlopen_self" | $Xsed -e "$delay_single_quote_subst"`' -enable_dlopen_self_static='`$ECHO "X$enable_dlopen_self_static" | $Xsed -e "$delay_single_quote_subst"`' -old_striplib='`$ECHO "X$old_striplib" | $Xsed -e "$delay_single_quote_subst"`' -striplib='`$ECHO "X$striplib" | $Xsed -e "$delay_single_quote_subst"`' -compiler_lib_search_dirs='`$ECHO "X$compiler_lib_search_dirs" | $Xsed -e "$delay_single_quote_subst"`' -predep_objects='`$ECHO "X$predep_objects" | $Xsed -e "$delay_single_quote_subst"`' -postdep_objects='`$ECHO "X$postdep_objects" | $Xsed -e "$delay_single_quote_subst"`' -predeps='`$ECHO "X$predeps" | $Xsed -e "$delay_single_quote_subst"`' -postdeps='`$ECHO "X$postdeps" | $Xsed -e "$delay_single_quote_subst"`' -compiler_lib_search_path='`$ECHO "X$compiler_lib_search_path" | $Xsed -e "$delay_single_quote_subst"`' -LD_CXX='`$ECHO "X$LD_CXX" | $Xsed -e "$delay_single_quote_subst"`' -old_archive_cmds_CXX='`$ECHO "X$old_archive_cmds_CXX" | $Xsed -e "$delay_single_quote_subst"`' -compiler_CXX='`$ECHO "X$compiler_CXX" | $Xsed -e "$delay_single_quote_subst"`' -GCC_CXX='`$ECHO "X$GCC_CXX" | $Xsed -e "$delay_single_quote_subst"`' -lt_prog_compiler_no_builtin_flag_CXX='`$ECHO "X$lt_prog_compiler_no_builtin_flag_CXX" | $Xsed -e "$delay_single_quote_subst"`' -lt_prog_compiler_wl_CXX='`$ECHO "X$lt_prog_compiler_wl_CXX" | $Xsed -e "$delay_single_quote_subst"`' -lt_prog_compiler_pic_CXX='`$ECHO "X$lt_prog_compiler_pic_CXX" | $Xsed -e "$delay_single_quote_subst"`' -lt_prog_compiler_static_CXX='`$ECHO "X$lt_prog_compiler_static_CXX" | $Xsed -e "$delay_single_quote_subst"`' -lt_cv_prog_compiler_c_o_CXX='`$ECHO "X$lt_cv_prog_compiler_c_o_CXX" | $Xsed -e "$delay_single_quote_subst"`' -archive_cmds_need_lc_CXX='`$ECHO "X$archive_cmds_need_lc_CXX" | $Xsed -e "$delay_single_quote_subst"`' -enable_shared_with_static_runtimes_CXX='`$ECHO "X$enable_shared_with_static_runtimes_CXX" | $Xsed -e "$delay_single_quote_subst"`' -export_dynamic_flag_spec_CXX='`$ECHO "X$export_dynamic_flag_spec_CXX" | $Xsed -e "$delay_single_quote_subst"`' -whole_archive_flag_spec_CXX='`$ECHO "X$whole_archive_flag_spec_CXX" | $Xsed -e "$delay_single_quote_subst"`' -compiler_needs_object_CXX='`$ECHO "X$compiler_needs_object_CXX" | $Xsed -e "$delay_single_quote_subst"`' -old_archive_from_new_cmds_CXX='`$ECHO "X$old_archive_from_new_cmds_CXX" | $Xsed -e "$delay_single_quote_subst"`' -old_archive_from_expsyms_cmds_CXX='`$ECHO "X$old_archive_from_expsyms_cmds_CXX" | $Xsed -e "$delay_single_quote_subst"`' -archive_cmds_CXX='`$ECHO "X$archive_cmds_CXX" | $Xsed -e "$delay_single_quote_subst"`' -archive_expsym_cmds_CXX='`$ECHO "X$archive_expsym_cmds_CXX" | $Xsed -e "$delay_single_quote_subst"`' -module_cmds_CXX='`$ECHO "X$module_cmds_CXX" | $Xsed -e "$delay_single_quote_subst"`' -module_expsym_cmds_CXX='`$ECHO "X$module_expsym_cmds_CXX" | $Xsed -e "$delay_single_quote_subst"`' -with_gnu_ld_CXX='`$ECHO "X$with_gnu_ld_CXX" | $Xsed -e "$delay_single_quote_subst"`' -allow_undefined_flag_CXX='`$ECHO "X$allow_undefined_flag_CXX" | $Xsed -e "$delay_single_quote_subst"`' -no_undefined_flag_CXX='`$ECHO "X$no_undefined_flag_CXX" | $Xsed -e "$delay_single_quote_subst"`' -hardcode_libdir_flag_spec_CXX='`$ECHO "X$hardcode_libdir_flag_spec_CXX" | $Xsed -e "$delay_single_quote_subst"`' -hardcode_libdir_flag_spec_ld_CXX='`$ECHO "X$hardcode_libdir_flag_spec_ld_CXX" | $Xsed -e "$delay_single_quote_subst"`' -hardcode_libdir_separator_CXX='`$ECHO "X$hardcode_libdir_separator_CXX" | $Xsed -e "$delay_single_quote_subst"`' -hardcode_direct_CXX='`$ECHO "X$hardcode_direct_CXX" | $Xsed -e "$delay_single_quote_subst"`' -hardcode_direct_absolute_CXX='`$ECHO "X$hardcode_direct_absolute_CXX" | $Xsed -e "$delay_single_quote_subst"`' -hardcode_minus_L_CXX='`$ECHO "X$hardcode_minus_L_CXX" | $Xsed -e "$delay_single_quote_subst"`' -hardcode_shlibpath_var_CXX='`$ECHO "X$hardcode_shlibpath_var_CXX" | $Xsed -e "$delay_single_quote_subst"`' -hardcode_automatic_CXX='`$ECHO "X$hardcode_automatic_CXX" | $Xsed -e "$delay_single_quote_subst"`' -inherit_rpath_CXX='`$ECHO "X$inherit_rpath_CXX" | $Xsed -e "$delay_single_quote_subst"`' -link_all_deplibs_CXX='`$ECHO "X$link_all_deplibs_CXX" | $Xsed -e "$delay_single_quote_subst"`' -fix_srcfile_path_CXX='`$ECHO "X$fix_srcfile_path_CXX" | $Xsed -e "$delay_single_quote_subst"`' -always_export_symbols_CXX='`$ECHO "X$always_export_symbols_CXX" | $Xsed -e "$delay_single_quote_subst"`' -export_symbols_cmds_CXX='`$ECHO "X$export_symbols_cmds_CXX" | $Xsed -e "$delay_single_quote_subst"`' -exclude_expsyms_CXX='`$ECHO "X$exclude_expsyms_CXX" | $Xsed -e "$delay_single_quote_subst"`' -include_expsyms_CXX='`$ECHO "X$include_expsyms_CXX" | $Xsed -e "$delay_single_quote_subst"`' -prelink_cmds_CXX='`$ECHO "X$prelink_cmds_CXX" | $Xsed -e "$delay_single_quote_subst"`' -file_list_spec_CXX='`$ECHO "X$file_list_spec_CXX" | $Xsed -e "$delay_single_quote_subst"`' -hardcode_action_CXX='`$ECHO "X$hardcode_action_CXX" | $Xsed -e "$delay_single_quote_subst"`' -compiler_lib_search_dirs_CXX='`$ECHO "X$compiler_lib_search_dirs_CXX" | $Xsed -e "$delay_single_quote_subst"`' -predep_objects_CXX='`$ECHO "X$predep_objects_CXX" | $Xsed -e "$delay_single_quote_subst"`' -postdep_objects_CXX='`$ECHO "X$postdep_objects_CXX" | $Xsed -e "$delay_single_quote_subst"`' -predeps_CXX='`$ECHO "X$predeps_CXX" | $Xsed -e "$delay_single_quote_subst"`' -postdeps_CXX='`$ECHO "X$postdeps_CXX" | $Xsed -e "$delay_single_quote_subst"`' -compiler_lib_search_path_CXX='`$ECHO "X$compiler_lib_search_path_CXX" | $Xsed -e "$delay_single_quote_subst"`' +macro_version='`$ECHO "$macro_version" | $SED "$delay_single_quote_subst"`' +macro_revision='`$ECHO "$macro_revision" | $SED "$delay_single_quote_subst"`' +enable_shared='`$ECHO "$enable_shared" | $SED "$delay_single_quote_subst"`' +enable_static='`$ECHO "$enable_static" | $SED "$delay_single_quote_subst"`' +pic_mode='`$ECHO "$pic_mode" | $SED "$delay_single_quote_subst"`' +enable_fast_install='`$ECHO "$enable_fast_install" | $SED "$delay_single_quote_subst"`' +SHELL='`$ECHO "$SHELL" | $SED "$delay_single_quote_subst"`' +ECHO='`$ECHO "$ECHO" | $SED "$delay_single_quote_subst"`' +PATH_SEPARATOR='`$ECHO "$PATH_SEPARATOR" | $SED "$delay_single_quote_subst"`' +host_alias='`$ECHO "$host_alias" | $SED "$delay_single_quote_subst"`' +host='`$ECHO "$host" | $SED "$delay_single_quote_subst"`' +host_os='`$ECHO "$host_os" | $SED "$delay_single_quote_subst"`' +build_alias='`$ECHO "$build_alias" | $SED "$delay_single_quote_subst"`' +build='`$ECHO "$build" | $SED "$delay_single_quote_subst"`' +build_os='`$ECHO "$build_os" | $SED "$delay_single_quote_subst"`' +SED='`$ECHO "$SED" | $SED "$delay_single_quote_subst"`' +Xsed='`$ECHO "$Xsed" | $SED "$delay_single_quote_subst"`' +GREP='`$ECHO "$GREP" | $SED "$delay_single_quote_subst"`' +EGREP='`$ECHO "$EGREP" | $SED "$delay_single_quote_subst"`' +FGREP='`$ECHO "$FGREP" | $SED "$delay_single_quote_subst"`' +LD='`$ECHO "$LD" | $SED "$delay_single_quote_subst"`' +NM='`$ECHO "$NM" | $SED "$delay_single_quote_subst"`' +LN_S='`$ECHO "$LN_S" | $SED "$delay_single_quote_subst"`' +max_cmd_len='`$ECHO "$max_cmd_len" | $SED "$delay_single_quote_subst"`' +ac_objext='`$ECHO "$ac_objext" | $SED "$delay_single_quote_subst"`' +exeext='`$ECHO "$exeext" | $SED "$delay_single_quote_subst"`' +lt_unset='`$ECHO "$lt_unset" | $SED "$delay_single_quote_subst"`' +lt_SP2NL='`$ECHO "$lt_SP2NL" | $SED "$delay_single_quote_subst"`' +lt_NL2SP='`$ECHO "$lt_NL2SP" | $SED "$delay_single_quote_subst"`' +lt_cv_to_host_file_cmd='`$ECHO "$lt_cv_to_host_file_cmd" | $SED "$delay_single_quote_subst"`' +lt_cv_to_tool_file_cmd='`$ECHO "$lt_cv_to_tool_file_cmd" | $SED "$delay_single_quote_subst"`' +reload_flag='`$ECHO "$reload_flag" | $SED "$delay_single_quote_subst"`' +reload_cmds='`$ECHO "$reload_cmds" | $SED "$delay_single_quote_subst"`' +OBJDUMP='`$ECHO "$OBJDUMP" | $SED "$delay_single_quote_subst"`' +deplibs_check_method='`$ECHO "$deplibs_check_method" | $SED "$delay_single_quote_subst"`' +file_magic_cmd='`$ECHO "$file_magic_cmd" | $SED "$delay_single_quote_subst"`' +file_magic_glob='`$ECHO "$file_magic_glob" | $SED "$delay_single_quote_subst"`' +want_nocaseglob='`$ECHO "$want_nocaseglob" | $SED "$delay_single_quote_subst"`' +DLLTOOL='`$ECHO "$DLLTOOL" | $SED "$delay_single_quote_subst"`' +sharedlib_from_linklib_cmd='`$ECHO "$sharedlib_from_linklib_cmd" | $SED "$delay_single_quote_subst"`' +AR='`$ECHO "$AR" | $SED "$delay_single_quote_subst"`' +AR_FLAGS='`$ECHO "$AR_FLAGS" | $SED "$delay_single_quote_subst"`' +archiver_list_spec='`$ECHO "$archiver_list_spec" | $SED "$delay_single_quote_subst"`' +STRIP='`$ECHO "$STRIP" | $SED "$delay_single_quote_subst"`' +RANLIB='`$ECHO "$RANLIB" | $SED "$delay_single_quote_subst"`' +old_postinstall_cmds='`$ECHO "$old_postinstall_cmds" | $SED "$delay_single_quote_subst"`' +old_postuninstall_cmds='`$ECHO "$old_postuninstall_cmds" | $SED "$delay_single_quote_subst"`' +old_archive_cmds='`$ECHO "$old_archive_cmds" | $SED "$delay_single_quote_subst"`' +lock_old_archive_extraction='`$ECHO "$lock_old_archive_extraction" | $SED "$delay_single_quote_subst"`' +CC='`$ECHO "$CC" | $SED "$delay_single_quote_subst"`' +CFLAGS='`$ECHO "$CFLAGS" | $SED "$delay_single_quote_subst"`' +compiler='`$ECHO "$compiler" | $SED "$delay_single_quote_subst"`' +GCC='`$ECHO "$GCC" | $SED "$delay_single_quote_subst"`' +lt_cv_sys_global_symbol_pipe='`$ECHO "$lt_cv_sys_global_symbol_pipe" | $SED "$delay_single_quote_subst"`' +lt_cv_sys_global_symbol_to_cdecl='`$ECHO "$lt_cv_sys_global_symbol_to_cdecl" | $SED "$delay_single_quote_subst"`' +lt_cv_sys_global_symbol_to_c_name_address='`$ECHO "$lt_cv_sys_global_symbol_to_c_name_address" | $SED "$delay_single_quote_subst"`' +lt_cv_sys_global_symbol_to_c_name_address_lib_prefix='`$ECHO "$lt_cv_sys_global_symbol_to_c_name_address_lib_prefix" | $SED "$delay_single_quote_subst"`' +nm_file_list_spec='`$ECHO "$nm_file_list_spec" | $SED "$delay_single_quote_subst"`' +lt_sysroot='`$ECHO "$lt_sysroot" | $SED "$delay_single_quote_subst"`' +objdir='`$ECHO "$objdir" | $SED "$delay_single_quote_subst"`' +MAGIC_CMD='`$ECHO "$MAGIC_CMD" | $SED "$delay_single_quote_subst"`' +lt_prog_compiler_no_builtin_flag='`$ECHO "$lt_prog_compiler_no_builtin_flag" | $SED "$delay_single_quote_subst"`' +lt_prog_compiler_pic='`$ECHO "$lt_prog_compiler_pic" | $SED "$delay_single_quote_subst"`' +lt_prog_compiler_wl='`$ECHO "$lt_prog_compiler_wl" | $SED "$delay_single_quote_subst"`' +lt_prog_compiler_static='`$ECHO "$lt_prog_compiler_static" | $SED "$delay_single_quote_subst"`' +lt_cv_prog_compiler_c_o='`$ECHO "$lt_cv_prog_compiler_c_o" | $SED "$delay_single_quote_subst"`' +need_locks='`$ECHO "$need_locks" | $SED "$delay_single_quote_subst"`' +MANIFEST_TOOL='`$ECHO "$MANIFEST_TOOL" | $SED "$delay_single_quote_subst"`' +DSYMUTIL='`$ECHO "$DSYMUTIL" | $SED "$delay_single_quote_subst"`' +NMEDIT='`$ECHO "$NMEDIT" | $SED "$delay_single_quote_subst"`' +LIPO='`$ECHO "$LIPO" | $SED "$delay_single_quote_subst"`' +OTOOL='`$ECHO "$OTOOL" | $SED "$delay_single_quote_subst"`' +OTOOL64='`$ECHO "$OTOOL64" | $SED "$delay_single_quote_subst"`' +libext='`$ECHO "$libext" | $SED "$delay_single_quote_subst"`' +shrext_cmds='`$ECHO "$shrext_cmds" | $SED "$delay_single_quote_subst"`' +extract_expsyms_cmds='`$ECHO "$extract_expsyms_cmds" | $SED "$delay_single_quote_subst"`' +archive_cmds_need_lc='`$ECHO "$archive_cmds_need_lc" | $SED "$delay_single_quote_subst"`' +enable_shared_with_static_runtimes='`$ECHO "$enable_shared_with_static_runtimes" | $SED "$delay_single_quote_subst"`' +export_dynamic_flag_spec='`$ECHO "$export_dynamic_flag_spec" | $SED "$delay_single_quote_subst"`' +whole_archive_flag_spec='`$ECHO "$whole_archive_flag_spec" | $SED "$delay_single_quote_subst"`' +compiler_needs_object='`$ECHO "$compiler_needs_object" | $SED "$delay_single_quote_subst"`' +old_archive_from_new_cmds='`$ECHO "$old_archive_from_new_cmds" | $SED "$delay_single_quote_subst"`' +old_archive_from_expsyms_cmds='`$ECHO "$old_archive_from_expsyms_cmds" | $SED "$delay_single_quote_subst"`' +archive_cmds='`$ECHO "$archive_cmds" | $SED "$delay_single_quote_subst"`' +archive_expsym_cmds='`$ECHO "$archive_expsym_cmds" | $SED "$delay_single_quote_subst"`' +module_cmds='`$ECHO "$module_cmds" | $SED "$delay_single_quote_subst"`' +module_expsym_cmds='`$ECHO "$module_expsym_cmds" | $SED "$delay_single_quote_subst"`' +with_gnu_ld='`$ECHO "$with_gnu_ld" | $SED "$delay_single_quote_subst"`' +allow_undefined_flag='`$ECHO "$allow_undefined_flag" | $SED "$delay_single_quote_subst"`' +no_undefined_flag='`$ECHO "$no_undefined_flag" | $SED "$delay_single_quote_subst"`' +hardcode_libdir_flag_spec='`$ECHO "$hardcode_libdir_flag_spec" | $SED "$delay_single_quote_subst"`' +hardcode_libdir_separator='`$ECHO "$hardcode_libdir_separator" | $SED "$delay_single_quote_subst"`' +hardcode_direct='`$ECHO "$hardcode_direct" | $SED "$delay_single_quote_subst"`' +hardcode_direct_absolute='`$ECHO "$hardcode_direct_absolute" | $SED "$delay_single_quote_subst"`' +hardcode_minus_L='`$ECHO "$hardcode_minus_L" | $SED "$delay_single_quote_subst"`' +hardcode_shlibpath_var='`$ECHO "$hardcode_shlibpath_var" | $SED "$delay_single_quote_subst"`' +hardcode_automatic='`$ECHO "$hardcode_automatic" | $SED "$delay_single_quote_subst"`' +inherit_rpath='`$ECHO "$inherit_rpath" | $SED "$delay_single_quote_subst"`' +link_all_deplibs='`$ECHO "$link_all_deplibs" | $SED "$delay_single_quote_subst"`' +always_export_symbols='`$ECHO "$always_export_symbols" | $SED "$delay_single_quote_subst"`' +export_symbols_cmds='`$ECHO "$export_symbols_cmds" | $SED "$delay_single_quote_subst"`' +exclude_expsyms='`$ECHO "$exclude_expsyms" | $SED "$delay_single_quote_subst"`' +include_expsyms='`$ECHO "$include_expsyms" | $SED "$delay_single_quote_subst"`' +prelink_cmds='`$ECHO "$prelink_cmds" | $SED "$delay_single_quote_subst"`' +postlink_cmds='`$ECHO "$postlink_cmds" | $SED "$delay_single_quote_subst"`' +file_list_spec='`$ECHO "$file_list_spec" | $SED "$delay_single_quote_subst"`' +variables_saved_for_relink='`$ECHO "$variables_saved_for_relink" | $SED "$delay_single_quote_subst"`' +need_lib_prefix='`$ECHO "$need_lib_prefix" | $SED "$delay_single_quote_subst"`' +need_version='`$ECHO "$need_version" | $SED "$delay_single_quote_subst"`' +version_type='`$ECHO "$version_type" | $SED "$delay_single_quote_subst"`' +runpath_var='`$ECHO "$runpath_var" | $SED "$delay_single_quote_subst"`' +shlibpath_var='`$ECHO "$shlibpath_var" | $SED "$delay_single_quote_subst"`' +shlibpath_overrides_runpath='`$ECHO "$shlibpath_overrides_runpath" | $SED "$delay_single_quote_subst"`' +libname_spec='`$ECHO "$libname_spec" | $SED "$delay_single_quote_subst"`' +library_names_spec='`$ECHO "$library_names_spec" | $SED "$delay_single_quote_subst"`' +soname_spec='`$ECHO "$soname_spec" | $SED "$delay_single_quote_subst"`' +install_override_mode='`$ECHO "$install_override_mode" | $SED "$delay_single_quote_subst"`' +postinstall_cmds='`$ECHO "$postinstall_cmds" | $SED "$delay_single_quote_subst"`' +postuninstall_cmds='`$ECHO "$postuninstall_cmds" | $SED "$delay_single_quote_subst"`' +finish_cmds='`$ECHO "$finish_cmds" | $SED "$delay_single_quote_subst"`' +finish_eval='`$ECHO "$finish_eval" | $SED "$delay_single_quote_subst"`' +hardcode_into_libs='`$ECHO "$hardcode_into_libs" | $SED "$delay_single_quote_subst"`' +sys_lib_search_path_spec='`$ECHO "$sys_lib_search_path_spec" | $SED "$delay_single_quote_subst"`' +sys_lib_dlsearch_path_spec='`$ECHO "$sys_lib_dlsearch_path_spec" | $SED "$delay_single_quote_subst"`' +hardcode_action='`$ECHO "$hardcode_action" | $SED "$delay_single_quote_subst"`' +enable_dlopen='`$ECHO "$enable_dlopen" | $SED "$delay_single_quote_subst"`' +enable_dlopen_self='`$ECHO "$enable_dlopen_self" | $SED "$delay_single_quote_subst"`' +enable_dlopen_self_static='`$ECHO "$enable_dlopen_self_static" | $SED "$delay_single_quote_subst"`' +old_striplib='`$ECHO "$old_striplib" | $SED "$delay_single_quote_subst"`' +striplib='`$ECHO "$striplib" | $SED "$delay_single_quote_subst"`' +compiler_lib_search_dirs='`$ECHO "$compiler_lib_search_dirs" | $SED "$delay_single_quote_subst"`' +predep_objects='`$ECHO "$predep_objects" | $SED "$delay_single_quote_subst"`' +postdep_objects='`$ECHO "$postdep_objects" | $SED "$delay_single_quote_subst"`' +predeps='`$ECHO "$predeps" | $SED "$delay_single_quote_subst"`' +postdeps='`$ECHO "$postdeps" | $SED "$delay_single_quote_subst"`' +compiler_lib_search_path='`$ECHO "$compiler_lib_search_path" | $SED "$delay_single_quote_subst"`' +LD_CXX='`$ECHO "$LD_CXX" | $SED "$delay_single_quote_subst"`' +reload_flag_CXX='`$ECHO "$reload_flag_CXX" | $SED "$delay_single_quote_subst"`' +reload_cmds_CXX='`$ECHO "$reload_cmds_CXX" | $SED "$delay_single_quote_subst"`' +old_archive_cmds_CXX='`$ECHO "$old_archive_cmds_CXX" | $SED "$delay_single_quote_subst"`' +compiler_CXX='`$ECHO "$compiler_CXX" | $SED "$delay_single_quote_subst"`' +GCC_CXX='`$ECHO "$GCC_CXX" | $SED "$delay_single_quote_subst"`' +lt_prog_compiler_no_builtin_flag_CXX='`$ECHO "$lt_prog_compiler_no_builtin_flag_CXX" | $SED "$delay_single_quote_subst"`' +lt_prog_compiler_pic_CXX='`$ECHO "$lt_prog_compiler_pic_CXX" | $SED "$delay_single_quote_subst"`' +lt_prog_compiler_wl_CXX='`$ECHO "$lt_prog_compiler_wl_CXX" | $SED "$delay_single_quote_subst"`' +lt_prog_compiler_static_CXX='`$ECHO "$lt_prog_compiler_static_CXX" | $SED "$delay_single_quote_subst"`' +lt_cv_prog_compiler_c_o_CXX='`$ECHO "$lt_cv_prog_compiler_c_o_CXX" | $SED "$delay_single_quote_subst"`' +archive_cmds_need_lc_CXX='`$ECHO "$archive_cmds_need_lc_CXX" | $SED "$delay_single_quote_subst"`' +enable_shared_with_static_runtimes_CXX='`$ECHO "$enable_shared_with_static_runtimes_CXX" | $SED "$delay_single_quote_subst"`' +export_dynamic_flag_spec_CXX='`$ECHO "$export_dynamic_flag_spec_CXX" | $SED "$delay_single_quote_subst"`' +whole_archive_flag_spec_CXX='`$ECHO "$whole_archive_flag_spec_CXX" | $SED "$delay_single_quote_subst"`' +compiler_needs_object_CXX='`$ECHO "$compiler_needs_object_CXX" | $SED "$delay_single_quote_subst"`' +old_archive_from_new_cmds_CXX='`$ECHO "$old_archive_from_new_cmds_CXX" | $SED "$delay_single_quote_subst"`' +old_archive_from_expsyms_cmds_CXX='`$ECHO "$old_archive_from_expsyms_cmds_CXX" | $SED "$delay_single_quote_subst"`' +archive_cmds_CXX='`$ECHO "$archive_cmds_CXX" | $SED "$delay_single_quote_subst"`' +archive_expsym_cmds_CXX='`$ECHO "$archive_expsym_cmds_CXX" | $SED "$delay_single_quote_subst"`' +module_cmds_CXX='`$ECHO "$module_cmds_CXX" | $SED "$delay_single_quote_subst"`' +module_expsym_cmds_CXX='`$ECHO "$module_expsym_cmds_CXX" | $SED "$delay_single_quote_subst"`' +with_gnu_ld_CXX='`$ECHO "$with_gnu_ld_CXX" | $SED "$delay_single_quote_subst"`' +allow_undefined_flag_CXX='`$ECHO "$allow_undefined_flag_CXX" | $SED "$delay_single_quote_subst"`' +no_undefined_flag_CXX='`$ECHO "$no_undefined_flag_CXX" | $SED "$delay_single_quote_subst"`' +hardcode_libdir_flag_spec_CXX='`$ECHO "$hardcode_libdir_flag_spec_CXX" | $SED "$delay_single_quote_subst"`' +hardcode_libdir_separator_CXX='`$ECHO "$hardcode_libdir_separator_CXX" | $SED "$delay_single_quote_subst"`' +hardcode_direct_CXX='`$ECHO "$hardcode_direct_CXX" | $SED "$delay_single_quote_subst"`' +hardcode_direct_absolute_CXX='`$ECHO "$hardcode_direct_absolute_CXX" | $SED "$delay_single_quote_subst"`' +hardcode_minus_L_CXX='`$ECHO "$hardcode_minus_L_CXX" | $SED "$delay_single_quote_subst"`' +hardcode_shlibpath_var_CXX='`$ECHO "$hardcode_shlibpath_var_CXX" | $SED "$delay_single_quote_subst"`' +hardcode_automatic_CXX='`$ECHO "$hardcode_automatic_CXX" | $SED "$delay_single_quote_subst"`' +inherit_rpath_CXX='`$ECHO "$inherit_rpath_CXX" | $SED "$delay_single_quote_subst"`' +link_all_deplibs_CXX='`$ECHO "$link_all_deplibs_CXX" | $SED "$delay_single_quote_subst"`' +always_export_symbols_CXX='`$ECHO "$always_export_symbols_CXX" | $SED "$delay_single_quote_subst"`' +export_symbols_cmds_CXX='`$ECHO "$export_symbols_cmds_CXX" | $SED "$delay_single_quote_subst"`' +exclude_expsyms_CXX='`$ECHO "$exclude_expsyms_CXX" | $SED "$delay_single_quote_subst"`' +include_expsyms_CXX='`$ECHO "$include_expsyms_CXX" | $SED "$delay_single_quote_subst"`' +prelink_cmds_CXX='`$ECHO "$prelink_cmds_CXX" | $SED "$delay_single_quote_subst"`' +postlink_cmds_CXX='`$ECHO "$postlink_cmds_CXX" | $SED "$delay_single_quote_subst"`' +file_list_spec_CXX='`$ECHO "$file_list_spec_CXX" | $SED "$delay_single_quote_subst"`' +hardcode_action_CXX='`$ECHO "$hardcode_action_CXX" | $SED "$delay_single_quote_subst"`' +compiler_lib_search_dirs_CXX='`$ECHO "$compiler_lib_search_dirs_CXX" | $SED "$delay_single_quote_subst"`' +predep_objects_CXX='`$ECHO "$predep_objects_CXX" | $SED "$delay_single_quote_subst"`' +postdep_objects_CXX='`$ECHO "$postdep_objects_CXX" | $SED "$delay_single_quote_subst"`' +predeps_CXX='`$ECHO "$predeps_CXX" | $SED "$delay_single_quote_subst"`' +postdeps_CXX='`$ECHO "$postdeps_CXX" | $SED "$delay_single_quote_subst"`' +compiler_lib_search_path_CXX='`$ECHO "$compiler_lib_search_path_CXX" | $SED "$delay_single_quote_subst"`' LTCC='$LTCC' LTCFLAGS='$LTCFLAGS' compiler='$compiler_DEFAULT' +# A function that is used when there is no print builtin or printf. +func_fallback_echo () +{ + eval 'cat <<_LTECHO_EOF +\$1 +_LTECHO_EOF' +} + # Quote evaled strings. -for var in SED \ +for var in SHELL \ +ECHO \ +PATH_SEPARATOR \ +SED \ GREP \ EGREP \ FGREP \ @@ -16476,10 +16525,16 @@ LN_S \ lt_SP2NL \ lt_NL2SP \ reload_flag \ +OBJDUMP \ deplibs_check_method \ file_magic_cmd \ +file_magic_glob \ +want_nocaseglob \ +DLLTOOL \ +sharedlib_from_linklib_cmd \ AR \ AR_FLAGS \ +archiver_list_spec \ STRIP \ RANLIB \ CC \ @@ -16489,14 +16544,14 @@ lt_cv_sys_global_symbol_pipe \ lt_cv_sys_global_symbol_to_cdecl \ lt_cv_sys_global_symbol_to_c_name_address \ lt_cv_sys_global_symbol_to_c_name_address_lib_prefix \ -SHELL \ -ECHO \ +nm_file_list_spec \ lt_prog_compiler_no_builtin_flag \ -lt_prog_compiler_wl \ lt_prog_compiler_pic \ +lt_prog_compiler_wl \ lt_prog_compiler_static \ lt_cv_prog_compiler_c_o \ need_locks \ +MANIFEST_TOOL \ DSYMUTIL \ NMEDIT \ LIPO \ @@ -16510,9 +16565,7 @@ with_gnu_ld \ allow_undefined_flag \ no_undefined_flag \ hardcode_libdir_flag_spec \ -hardcode_libdir_flag_spec_ld \ hardcode_libdir_separator \ -fix_srcfile_path \ exclude_expsyms \ include_expsyms \ file_list_spec \ @@ -16520,6 +16573,7 @@ variables_saved_for_relink \ libname_spec \ library_names_spec \ soname_spec \ +install_override_mode \ finish_eval \ old_striplib \ striplib \ @@ -16530,10 +16584,11 @@ predeps \ postdeps \ compiler_lib_search_path \ LD_CXX \ +reload_flag_CXX \ compiler_CXX \ lt_prog_compiler_no_builtin_flag_CXX \ -lt_prog_compiler_wl_CXX \ lt_prog_compiler_pic_CXX \ +lt_prog_compiler_wl_CXX \ lt_prog_compiler_static_CXX \ lt_cv_prog_compiler_c_o_CXX \ export_dynamic_flag_spec_CXX \ @@ -16543,9 +16598,7 @@ with_gnu_ld_CXX \ allow_undefined_flag_CXX \ no_undefined_flag_CXX \ hardcode_libdir_flag_spec_CXX \ -hardcode_libdir_flag_spec_ld_CXX \ hardcode_libdir_separator_CXX \ -fix_srcfile_path_CXX \ exclude_expsyms_CXX \ include_expsyms_CXX \ file_list_spec_CXX \ @@ -16555,9 +16608,9 @@ postdep_objects_CXX \ predeps_CXX \ postdeps_CXX \ compiler_lib_search_path_CXX; do - case \`eval \\\\\$ECHO "X\\\\\$\$var"\` in + case \`eval \\\\\$ECHO \\\\""\\\\\$\$var"\\\\"\` in *[\\\\\\\`\\"\\\$]*) - eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"X\\\$\$var\\" | \\\$Xsed -e \\"\\\$sed_quote_subst\\"\\\`\\\\\\"" + eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED \\"\\\$sed_quote_subst\\"\\\`\\\\\\"" ;; *) eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\"" @@ -16579,11 +16632,13 @@ module_cmds \ module_expsym_cmds \ export_symbols_cmds \ prelink_cmds \ +postlink_cmds \ postinstall_cmds \ postuninstall_cmds \ finish_cmds \ sys_lib_search_path_spec \ sys_lib_dlsearch_path_spec \ +reload_cmds_CXX \ old_archive_cmds_CXX \ old_archive_from_new_cmds_CXX \ old_archive_from_expsyms_cmds_CXX \ @@ -16592,10 +16647,11 @@ archive_expsym_cmds_CXX \ module_cmds_CXX \ module_expsym_cmds_CXX \ export_symbols_cmds_CXX \ -prelink_cmds_CXX; do - case \`eval \\\\\$ECHO "X\\\\\$\$var"\` in +prelink_cmds_CXX \ +postlink_cmds_CXX; do + case \`eval \\\\\$ECHO \\\\""\\\\\$\$var"\\\\"\` in *[\\\\\\\`\\"\\\$]*) - eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"X\\\$\$var\\" | \\\$Xsed -e \\"\\\$double_quote_subst\\" -e \\"\\\$sed_quote_subst\\" -e \\"\\\$delay_variable_subst\\"\\\`\\\\\\"" + eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED -e \\"\\\$double_quote_subst\\" -e \\"\\\$sed_quote_subst\\" -e \\"\\\$delay_variable_subst\\"\\\`\\\\\\"" ;; *) eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\"" @@ -16603,12 +16659,6 @@ prelink_cmds_CXX; do esac done -# Fix-up fallback echo if it was mangled by the above quoting rules. -case \$lt_ECHO in -*'\\\$0 --fallback-echo"') lt_ECHO=\`\$ECHO "X\$lt_ECHO" | \$Xsed -e 's/\\\\\\\\\\\\\\\$0 --fallback-echo"\$/\$0 --fallback-echo"/'\` - ;; -esac - ac_aux_dir='$ac_aux_dir' xsi_shell='$xsi_shell' lt_shell_append='$lt_shell_append' @@ -16633,7 +16683,7 @@ fi _ACEOF -cat >>$CONFIG_STATUS <<\_ACEOF +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # Handling of arguments. for ac_config_target in $ac_config_targets @@ -16645,9 +16695,7 @@ do "depfiles") CONFIG_COMMANDS="$CONFIG_COMMANDS depfiles" ;; "libtool") CONFIG_COMMANDS="$CONFIG_COMMANDS libtool" ;; - *) { { echo "$as_me:$LINENO: error: invalid argument: $ac_config_target" >&5 -echo "$as_me: error: invalid argument: $ac_config_target" >&2;} - { (exit 1); exit 1; }; };; + *) as_fn_error $? "invalid argument: \`$ac_config_target'" "$LINENO" 5;; esac done @@ -16670,270 +16718,302 @@ fi # after its creation but before its name has been assigned to `$tmp'. $debug || { - tmp= + tmp= ac_tmp= trap 'exit_status=$? - { test -z "$tmp" || test ! -d "$tmp" || rm -fr "$tmp"; } && exit $exit_status + : "${ac_tmp:=$tmp}" + { test ! -d "$ac_tmp" || rm -fr "$ac_tmp"; } && exit $exit_status ' 0 - trap '{ (exit 1); exit 1; }' 1 2 13 15 + trap 'as_fn_exit 1' 1 2 13 15 } # Create a (secure) tmp directory for tmp files. { tmp=`(umask 077 && mktemp -d "./confXXXXXX") 2>/dev/null` && - test -n "$tmp" && test -d "$tmp" + test -d "$tmp" } || { tmp=./conf$$-$RANDOM (umask 077 && mkdir "$tmp") -} || -{ - echo "$me: cannot create a temporary directory in ." >&2 - { (exit 1); exit 1; } -} - -# -# Set up the sed scripts for CONFIG_FILES section. -# +} || as_fn_error $? "cannot create a temporary directory in ." "$LINENO" 5 +ac_tmp=$tmp -# No need to generate the scripts if there are no CONFIG_FILES. -# This happens for instance when ./config.status config.h +# Set up the scripts for CONFIG_FILES section. +# No need to generate them if there are no CONFIG_FILES. +# This happens for instance with `./config.status config.h'. if test -n "$CONFIG_FILES"; then -_ACEOF - - - -ac_delim='%!_!# ' -for ac_last_try in false false false false false :; do - cat >conf$$subs.sed <<_ACEOF -SHELL!$SHELL$ac_delim -PATH_SEPARATOR!$PATH_SEPARATOR$ac_delim -PACKAGE_NAME!$PACKAGE_NAME$ac_delim -PACKAGE_TARNAME!$PACKAGE_TARNAME$ac_delim -PACKAGE_VERSION!$PACKAGE_VERSION$ac_delim -PACKAGE_STRING!$PACKAGE_STRING$ac_delim -PACKAGE_BUGREPORT!$PACKAGE_BUGREPORT$ac_delim -exec_prefix!$exec_prefix$ac_delim -prefix!$prefix$ac_delim -program_transform_name!$program_transform_name$ac_delim -bindir!$bindir$ac_delim -sbindir!$sbindir$ac_delim -libexecdir!$libexecdir$ac_delim -datarootdir!$datarootdir$ac_delim -datadir!$datadir$ac_delim -sysconfdir!$sysconfdir$ac_delim -sharedstatedir!$sharedstatedir$ac_delim -localstatedir!$localstatedir$ac_delim -includedir!$includedir$ac_delim -oldincludedir!$oldincludedir$ac_delim -docdir!$docdir$ac_delim -infodir!$infodir$ac_delim -htmldir!$htmldir$ac_delim -dvidir!$dvidir$ac_delim -pdfdir!$pdfdir$ac_delim -psdir!$psdir$ac_delim -libdir!$libdir$ac_delim -localedir!$localedir$ac_delim -mandir!$mandir$ac_delim -DEFS!$DEFS$ac_delim -ECHO_C!$ECHO_C$ac_delim -ECHO_N!$ECHO_N$ac_delim -ECHO_T!$ECHO_T$ac_delim -LIBS!$LIBS$ac_delim -build_alias!$build_alias$ac_delim -host_alias!$host_alias$ac_delim -target_alias!$target_alias$ac_delim -INSTALL_PROGRAM!$INSTALL_PROGRAM$ac_delim -INSTALL_SCRIPT!$INSTALL_SCRIPT$ac_delim -INSTALL_DATA!$INSTALL_DATA$ac_delim -am__isrc!$am__isrc$ac_delim -CYGPATH_W!$CYGPATH_W$ac_delim -PACKAGE!$PACKAGE$ac_delim -VERSION!$VERSION$ac_delim -ACLOCAL!$ACLOCAL$ac_delim -AUTOCONF!$AUTOCONF$ac_delim -AUTOMAKE!$AUTOMAKE$ac_delim -AUTOHEADER!$AUTOHEADER$ac_delim -MAKEINFO!$MAKEINFO$ac_delim -install_sh!$install_sh$ac_delim -STRIP!$STRIP$ac_delim -INSTALL_STRIP_PROGRAM!$INSTALL_STRIP_PROGRAM$ac_delim -mkdir_p!$mkdir_p$ac_delim -AWK!$AWK$ac_delim -SET_MAKE!$SET_MAKE$ac_delim -am__leading_dot!$am__leading_dot$ac_delim -AMTAR!$AMTAR$ac_delim -am__tar!$am__tar$ac_delim -am__untar!$am__untar$ac_delim -CC!$CC$ac_delim -CFLAGS!$CFLAGS$ac_delim -LDFLAGS!$LDFLAGS$ac_delim -CPPFLAGS!$CPPFLAGS$ac_delim -ac_ct_CC!$ac_ct_CC$ac_delim -EXEEXT!$EXEEXT$ac_delim -OBJEXT!$OBJEXT$ac_delim -DEPDIR!$DEPDIR$ac_delim -am__include!$am__include$ac_delim -am__quote!$am__quote$ac_delim -AMDEP_TRUE!$AMDEP_TRUE$ac_delim -AMDEP_FALSE!$AMDEP_FALSE$ac_delim -AMDEPBACKSLASH!$AMDEPBACKSLASH$ac_delim -CCDEPMODE!$CCDEPMODE$ac_delim -am__fastdepCC_TRUE!$am__fastdepCC_TRUE$ac_delim -am__fastdepCC_FALSE!$am__fastdepCC_FALSE$ac_delim -CXX!$CXX$ac_delim -CXXFLAGS!$CXXFLAGS$ac_delim -ac_ct_CXX!$ac_ct_CXX$ac_delim -CXXDEPMODE!$CXXDEPMODE$ac_delim -am__fastdepCXX_TRUE!$am__fastdepCXX_TRUE$ac_delim -am__fastdepCXX_FALSE!$am__fastdepCXX_FALSE$ac_delim -LIBTOOL!$LIBTOOL$ac_delim -build!$build$ac_delim -build_cpu!$build_cpu$ac_delim -build_vendor!$build_vendor$ac_delim -build_os!$build_os$ac_delim -host!$host$ac_delim -host_cpu!$host_cpu$ac_delim -host_vendor!$host_vendor$ac_delim -host_os!$host_os$ac_delim -SED!$SED$ac_delim -GREP!$GREP$ac_delim -EGREP!$EGREP$ac_delim -FGREP!$FGREP$ac_delim -LD!$LD$ac_delim -DUMPBIN!$DUMPBIN$ac_delim -ac_ct_DUMPBIN!$ac_ct_DUMPBIN$ac_delim -_ACEOF - - if test `sed -n "s/.*$ac_delim\$/X/p" conf$$subs.sed | grep -c X` = 97; then - break - elif $ac_last_try; then - { { echo "$as_me:$LINENO: error: could not make $CONFIG_STATUS" >&5 -echo "$as_me: error: could not make $CONFIG_STATUS" >&2;} - { (exit 1); exit 1; }; } - else - ac_delim="$ac_delim!$ac_delim _$ac_delim!! " - fi -done -ac_eof=`sed -n '/^CEOF[0-9]*$/s/CEOF/0/p' conf$$subs.sed` -if test -n "$ac_eof"; then - ac_eof=`echo "$ac_eof" | sort -nru | sed 1q` - ac_eof=`expr $ac_eof + 1` +ac_cr=`echo X | tr X '\015'` +# On cygwin, bash can eat \r inside `` if the user requested igncr. +# But we know of no other shell where ac_cr would be empty at this +# point, so we can use a bashism as a fallback. +if test "x$ac_cr" = x; then + eval ac_cr=\$\'\\r\' +fi +ac_cs_awk_cr=`$AWK 'BEGIN { print "a\rb" }' /dev/null` +if test "$ac_cs_awk_cr" = "a${ac_cr}b"; then + ac_cs_awk_cr='\\r' +else + ac_cs_awk_cr=$ac_cr fi -cat >>$CONFIG_STATUS <<_ACEOF -cat >"\$tmp/subs-1.sed" <<\CEOF$ac_eof -/@[a-zA-Z_][a-zA-Z_0-9]*@/!b -_ACEOF -sed ' -s/[,\\&]/\\&/g; s/@/@|#_!!_#|/g -s/^/s,@/; s/!/@,|#_!!_#|/ -:n -t n -s/'"$ac_delim"'$/,g/; t -s/$/\\/; p -N; s/^.*\n//; s/[,\\&]/\\&/g; s/@/@|#_!!_#|/g; b n -' >>$CONFIG_STATUS >$CONFIG_STATUS <<_ACEOF -CEOF$ac_eof +echo 'BEGIN {' >"$ac_tmp/subs1.awk" && _ACEOF +{ + echo "cat >conf$$subs.awk <<_ACEOF" && + echo "$ac_subst_vars" | sed 's/.*/&!$&$ac_delim/' && + echo "_ACEOF" +} >conf$$subs.sh || + as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 +ac_delim_num=`echo "$ac_subst_vars" | grep -c '^'` ac_delim='%!_!# ' for ac_last_try in false false false false false :; do - cat >conf$$subs.sed <<_ACEOF -NM!$NM$ac_delim -LN_S!$LN_S$ac_delim -AR!$AR$ac_delim -RANLIB!$RANLIB$ac_delim -lt_ECHO!$lt_ECHO$ac_delim -DSYMUTIL!$DSYMUTIL$ac_delim -NMEDIT!$NMEDIT$ac_delim -LIPO!$LIPO$ac_delim -OTOOL!$OTOOL$ac_delim -OTOOL64!$OTOOL64$ac_delim -CPP!$CPP$ac_delim -CXXCPP!$CXXCPP$ac_delim -PYTHON!$PYTHON$ac_delim -HAVE_PYTHON_TRUE!$HAVE_PYTHON_TRUE$ac_delim -HAVE_PYTHON_FALSE!$HAVE_PYTHON_FALSE$ac_delim -acx_pthread_config!$acx_pthread_config$ac_delim -PTHREAD_CC!$PTHREAD_CC$ac_delim -PTHREAD_LIBS!$PTHREAD_LIBS$ac_delim -PTHREAD_CFLAGS!$PTHREAD_CFLAGS$ac_delim -LIBOBJS!$LIBOBJS$ac_delim -LTLIBOBJS!$LTLIBOBJS$ac_delim -_ACEOF + . ./conf$$subs.sh || + as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 - if test `sed -n "s/.*$ac_delim\$/X/p" conf$$subs.sed | grep -c X` = 21; then + ac_delim_n=`sed -n "s/.*$ac_delim\$/X/p" conf$$subs.awk | grep -c X` + if test $ac_delim_n = $ac_delim_num; then break elif $ac_last_try; then - { { echo "$as_me:$LINENO: error: could not make $CONFIG_STATUS" >&5 -echo "$as_me: error: could not make $CONFIG_STATUS" >&2;} - { (exit 1); exit 1; }; } + as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 else ac_delim="$ac_delim!$ac_delim _$ac_delim!! " fi done +rm -f conf$$subs.sh + +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 +cat >>"\$ac_tmp/subs1.awk" <<\\_ACAWK && +_ACEOF +sed -n ' +h +s/^/S["/; s/!.*/"]=/ +p +g +s/^[^!]*!// +:repl +t repl +s/'"$ac_delim"'$// +t delim +:nl +h +s/\(.\{148\}\)..*/\1/ +t more1 +s/["\\]/\\&/g; s/^/"/; s/$/\\n"\\/ +p +n +b repl +:more1 +s/["\\]/\\&/g; s/^/"/; s/$/"\\/ +p +g +s/.\{148\}// +t nl +:delim +h +s/\(.\{148\}\)..*/\1/ +t more2 +s/["\\]/\\&/g; s/^/"/; s/$/"/ +p +b +:more2 +s/["\\]/\\&/g; s/^/"/; s/$/"\\/ +p +g +s/.\{148\}// +t delim +' >$CONFIG_STATUS || ac_write_fail=1 +rm -f conf$$subs.awk +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 +_ACAWK +cat >>"\$ac_tmp/subs1.awk" <<_ACAWK && + for (key in S) S_is_set[key] = 1 + FS = "" + +} +{ + line = $ 0 + nfields = split(line, field, "@") + substed = 0 + len = length(field[1]) + for (i = 2; i < nfields; i++) { + key = field[i] + keylen = length(key) + if (S_is_set[key]) { + value = S[key] + line = substr(line, 1, len) "" value "" substr(line, len + keylen + 3) + len += length(value) + length(field[++i]) + substed = 1 + } else + len += 1 + keylen + } -ac_eof=`sed -n '/^CEOF[0-9]*$/s/CEOF/0/p' conf$$subs.sed` -if test -n "$ac_eof"; then - ac_eof=`echo "$ac_eof" | sort -nru | sed 1q` - ac_eof=`expr $ac_eof + 1` -fi + print line +} -cat >>$CONFIG_STATUS <<_ACEOF -cat >"\$tmp/subs-2.sed" <<\CEOF$ac_eof -/@[a-zA-Z_][a-zA-Z_0-9]*@/!b end +_ACAWK _ACEOF -sed ' -s/[,\\&]/\\&/g; s/@/@|#_!!_#|/g -s/^/s,@/; s/!/@,|#_!!_#|/ -:n -t n -s/'"$ac_delim"'$/,g/; t -s/$/\\/; p -N; s/^.*\n//; s/[,\\&]/\\&/g; s/@/@|#_!!_#|/g; b n -' >>$CONFIG_STATUS >$CONFIG_STATUS <<_ACEOF -:end -s/|#_!!_#|//g -CEOF$ac_eof +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +if sed "s/$ac_cr//" < /dev/null > /dev/null 2>&1; then + sed "s/$ac_cr\$//; s/$ac_cr/$ac_cs_awk_cr/g" +else + cat +fi < "$ac_tmp/subs1.awk" > "$ac_tmp/subs.awk" \ + || as_fn_error $? "could not setup config files machinery" "$LINENO" 5 _ACEOF - -# VPATH may cause trouble with some makes, so we remove $(srcdir), -# ${srcdir} and @srcdir@ from VPATH if srcdir is ".", strip leading and +# VPATH may cause trouble with some makes, so we remove sole $(srcdir), +# ${srcdir} and @srcdir@ entries from VPATH if srcdir is ".", strip leading and # trailing colons and then remove the whole line if VPATH becomes empty # (actually we leave an empty line to preserve line numbers). if test "x$srcdir" = x.; then - ac_vpsub='/^[ ]*VPATH[ ]*=/{ -s/:*\$(srcdir):*/:/ -s/:*\${srcdir}:*/:/ -s/:*@srcdir@:*/:/ -s/^\([^=]*=[ ]*\):*/\1/ + ac_vpsub='/^[ ]*VPATH[ ]*=[ ]*/{ +h +s/// +s/^/:/ +s/[ ]*$/:/ +s/:\$(srcdir):/:/g +s/:\${srcdir}:/:/g +s/:@srcdir@:/:/g +s/^:*// s/:*$// +x +s/\(=[ ]*\).*/\1/ +G +s/\n// s/^[^=]*=[ ]*$// }' fi -cat >>$CONFIG_STATUS <<\_ACEOF +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 fi # test -n "$CONFIG_FILES" +# Set up the scripts for CONFIG_HEADERS section. +# No need to generate them if there are no CONFIG_HEADERS. +# This happens for instance with `./config.status Makefile'. +if test -n "$CONFIG_HEADERS"; then +cat >"$ac_tmp/defines.awk" <<\_ACAWK || +BEGIN { +_ACEOF + +# Transform confdefs.h into an awk script `defines.awk', embedded as +# here-document in config.status, that substitutes the proper values into +# config.h.in to produce config.h. + +# Create a delimiter string that does not exist in confdefs.h, to ease +# handling of long lines. +ac_delim='%!_!# ' +for ac_last_try in false false :; do + ac_tt=`sed -n "/$ac_delim/p" confdefs.h` + if test -z "$ac_tt"; then + break + elif $ac_last_try; then + as_fn_error $? "could not make $CONFIG_HEADERS" "$LINENO" 5 + else + ac_delim="$ac_delim!$ac_delim _$ac_delim!! " + fi +done + +# For the awk script, D is an array of macro values keyed by name, +# likewise P contains macro parameters if any. Preserve backslash +# newline sequences. -for ac_tag in :F $CONFIG_FILES :H $CONFIG_HEADERS :C $CONFIG_COMMANDS +ac_word_re=[_$as_cr_Letters][_$as_cr_alnum]* +sed -n ' +s/.\{148\}/&'"$ac_delim"'/g +t rset +:rset +s/^[ ]*#[ ]*define[ ][ ]*/ / +t def +d +:def +s/\\$// +t bsnl +s/["\\]/\\&/g +s/^ \('"$ac_word_re"'\)\(([^()]*)\)[ ]*\(.*\)/P["\1"]="\2"\ +D["\1"]=" \3"/p +s/^ \('"$ac_word_re"'\)[ ]*\(.*\)/D["\1"]=" \2"/p +d +:bsnl +s/["\\]/\\&/g +s/^ \('"$ac_word_re"'\)\(([^()]*)\)[ ]*\(.*\)/P["\1"]="\2"\ +D["\1"]=" \3\\\\\\n"\\/p +t cont +s/^ \('"$ac_word_re"'\)[ ]*\(.*\)/D["\1"]=" \2\\\\\\n"\\/p +t cont +d +:cont +n +s/.\{148\}/&'"$ac_delim"'/g +t clear +:clear +s/\\$// +t bsnlc +s/["\\]/\\&/g; s/^/"/; s/$/"/p +d +:bsnlc +s/["\\]/\\&/g; s/^/"/; s/$/\\\\\\n"\\/p +b cont +' >$CONFIG_STATUS || ac_write_fail=1 + +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 + for (key in D) D_is_set[key] = 1 + FS = "" +} +/^[\t ]*#[\t ]*(define|undef)[\t ]+$ac_word_re([\t (]|\$)/ { + line = \$ 0 + split(line, arg, " ") + if (arg[1] == "#") { + defundef = arg[2] + mac1 = arg[3] + } else { + defundef = substr(arg[1], 2) + mac1 = arg[2] + } + split(mac1, mac2, "(") #) + macro = mac2[1] + prefix = substr(line, 1, index(line, defundef) - 1) + if (D_is_set[macro]) { + # Preserve the white space surrounding the "#". + print prefix "define", macro P[macro] D[macro] + next + } else { + # Replace #undef with comments. This is necessary, for example, + # in the case of _POSIX_SOURCE, which is predefined and required + # on some systems where configure will not decide to define it. + if (defundef == "undef") { + print "/*", prefix defundef, macro, "*/" + next + } + } +} +{ print } +_ACAWK +_ACEOF +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 + as_fn_error $? "could not setup config headers machinery" "$LINENO" 5 +fi # test -n "$CONFIG_HEADERS" + + +eval set X " :F $CONFIG_FILES :H $CONFIG_HEADERS :C $CONFIG_COMMANDS" +shift +for ac_tag do case $ac_tag in :[FHLC]) ac_mode=$ac_tag; continue;; esac case $ac_mode$ac_tag in :[FHL]*:*);; - :L* | :C*:*) { { echo "$as_me:$LINENO: error: Invalid tag $ac_tag." >&5 -echo "$as_me: error: Invalid tag $ac_tag." >&2;} - { (exit 1); exit 1; }; };; + :L* | :C*:*) as_fn_error $? "invalid tag \`$ac_tag'" "$LINENO" 5;; :[FH]-) ac_tag=-:-;; :[FH]*) ac_tag=$ac_tag:$ac_tag.in;; esac @@ -16952,7 +17032,7 @@ echo "$as_me: error: Invalid tag $ac_tag." >&2;} for ac_f do case $ac_f in - -) ac_f="$tmp/stdin";; + -) ac_f="$ac_tmp/stdin";; *) # Look for the file first in the build tree, then in the source tree # (if the path is not absolute). The absolute path cannot be DOS-style, # because $ac_f cannot contain `:'. @@ -16961,26 +17041,34 @@ echo "$as_me: error: Invalid tag $ac_tag." >&2;} [\\/$]*) false;; *) test -f "$srcdir/$ac_f" && ac_f="$srcdir/$ac_f";; esac || - { { echo "$as_me:$LINENO: error: cannot find input file: $ac_f" >&5 -echo "$as_me: error: cannot find input file: $ac_f" >&2;} - { (exit 1); exit 1; }; };; + as_fn_error 1 "cannot find input file: \`$ac_f'" "$LINENO" 5;; esac - ac_file_inputs="$ac_file_inputs $ac_f" + case $ac_f in *\'*) ac_f=`$as_echo "$ac_f" | sed "s/'/'\\\\\\\\''/g"`;; esac + as_fn_append ac_file_inputs " '$ac_f'" done # Let's still pretend it is `configure' which instantiates (i.e., don't # use $as_me), people would be surprised to read: # /* config.h. Generated by config.status. */ - configure_input="Generated from "`IFS=: - echo $* | sed 's|^[^:]*/||;s|:[^:]*/|, |g'`" by configure." + configure_input='Generated from '` + $as_echo "$*" | sed 's|^[^:]*/||;s|:[^:]*/|, |g' + `' by configure.' if test x"$ac_file" != x-; then configure_input="$ac_file. $configure_input" - { echo "$as_me:$LINENO: creating $ac_file" >&5 -echo "$as_me: creating $ac_file" >&6;} + { $as_echo "$as_me:${as_lineno-$LINENO}: creating $ac_file" >&5 +$as_echo "$as_me: creating $ac_file" >&6;} fi + # Neutralize special characters interpreted by sed in replacement strings. + case $configure_input in #( + *\&* | *\|* | *\\* ) + ac_sed_conf_input=`$as_echo "$configure_input" | + sed 's/[\\\\&|]/\\\\&/g'`;; #( + *) ac_sed_conf_input=$configure_input;; + esac case $ac_tag in - *:-:* | *:-) cat >"$tmp/stdin";; + *:-:* | *:-) cat >"$ac_tmp/stdin" \ + || as_fn_error $? "could not create $ac_file" "$LINENO" 5 ;; esac ;; esac @@ -16990,42 +17078,7 @@ $as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$ac_file" : 'X\(//\)[^/]' \| \ X"$ac_file" : 'X\(//\)$' \| \ X"$ac_file" : 'X\(/\)' \| . 2>/dev/null || -echo X"$ac_file" | - sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ - s//\1/ - q - } - /^X\(\/\/\)[^/].*/{ - s//\1/ - q - } - /^X\(\/\/\)$/{ - s//\1/ - q - } - /^X\(\/\).*/{ - s//\1/ - q - } - s/.*/./; q'` - { as_dir="$ac_dir" - case $as_dir in #( - -*) as_dir=./$as_dir;; - esac - test -d "$as_dir" || { $as_mkdir_p && mkdir -p "$as_dir"; } || { - as_dirs= - while :; do - case $as_dir in #( - *\'*) as_qdir=`echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #( - *) as_qdir=$as_dir;; - esac - as_dirs="'$as_qdir' $as_dirs" - as_dir=`$as_dirname -- "$as_dir" || -$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ - X"$as_dir" : 'X\(//\)[^/]' \| \ - X"$as_dir" : 'X\(//\)$' \| \ - X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || -echo X"$as_dir" | +$as_echo X"$ac_file" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q @@ -17043,20 +17096,15 @@ echo X"$as_dir" | q } s/.*/./; q'` - test -d "$as_dir" && break - done - test -z "$as_dirs" || eval "mkdir $as_dirs" - } || test -d "$as_dir" || { { echo "$as_me:$LINENO: error: cannot create directory $as_dir" >&5 -echo "$as_me: error: cannot create directory $as_dir" >&2;} - { (exit 1); exit 1; }; }; } + as_dir="$ac_dir"; as_fn_mkdir_p ac_builddir=. case "$ac_dir" in .) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; *) - ac_dir_suffix=/`echo "$ac_dir" | sed 's,^\.[\\/],,'` + ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'` # A ".." for each directory in $ac_dir_suffix. - ac_top_builddir_sub=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,/..,g;s,/,,'` + ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` case $ac_top_builddir_sub in "") ac_top_builddir_sub=. ac_top_build_prefix= ;; *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; @@ -17101,12 +17149,12 @@ ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix esac _ACEOF -cat >>$CONFIG_STATUS <<\_ACEOF +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # If the template does not know about datarootdir, expand it. # FIXME: This hack should be removed a few years after 2.60. ac_datarootdir_hack=; ac_datarootdir_seen= - -case `sed -n '/datarootdir/ { +ac_sed_dataroot=' +/datarootdir/ { p q } @@ -17114,36 +17162,37 @@ case `sed -n '/datarootdir/ { /@docdir@/p /@infodir@/p /@localedir@/p -/@mandir@/p -' $ac_file_inputs` in +/@mandir@/p' +case `eval "sed -n \"\$ac_sed_dataroot\" $ac_file_inputs"` in *datarootdir*) ac_datarootdir_seen=yes;; *@datadir@*|*@docdir@*|*@infodir@*|*@localedir@*|*@mandir@*) - { echo "$as_me:$LINENO: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&5 -echo "$as_me: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&2;} + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&5 +$as_echo "$as_me: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&2;} _ACEOF -cat >>$CONFIG_STATUS <<_ACEOF +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_datarootdir_hack=' s&@datadir@&$datadir&g s&@docdir@&$docdir&g s&@infodir@&$infodir&g s&@localedir@&$localedir&g s&@mandir@&$mandir&g - s&\\\${datarootdir}&$datarootdir&g' ;; + s&\\\${datarootdir}&$datarootdir&g' ;; esac _ACEOF # Neutralize VPATH when `$srcdir' = `.'. # Shell code in configure.ac might set extrasub. # FIXME: do we really want to maintain this feature? -cat >>$CONFIG_STATUS <<_ACEOF - sed "$ac_vpsub +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 +ac_sed_extra="$ac_vpsub $extrasub _ACEOF -cat >>$CONFIG_STATUS <<\_ACEOF +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 :t /@[a-zA-Z_][a-zA-Z_0-9]*@/!b -s&@configure_input@&$configure_input&;t t +s|@configure_input@|$ac_sed_conf_input|;t t s&@top_builddir@&$ac_top_builddir_sub&;t t +s&@top_build_prefix@&$ac_top_build_prefix&;t t s&@srcdir@&$ac_srcdir&;t t s&@abs_srcdir@&$ac_abs_srcdir&;t t s&@top_srcdir@&$ac_top_srcdir&;t t @@ -17154,121 +17203,51 @@ s&@abs_top_builddir@&$ac_abs_top_builddir&;t t s&@INSTALL@&$ac_INSTALL&;t t s&@MKDIR_P@&$ac_MKDIR_P&;t t $ac_datarootdir_hack -" $ac_file_inputs | sed -f "$tmp/subs-1.sed" | sed -f "$tmp/subs-2.sed" >$tmp/out +" +eval sed \"\$ac_sed_extra\" "$ac_file_inputs" | $AWK -f "$ac_tmp/subs.awk" \ + >$ac_tmp/out || as_fn_error $? "could not create $ac_file" "$LINENO" 5 test -z "$ac_datarootdir_hack$ac_datarootdir_seen" && - { ac_out=`sed -n '/\${datarootdir}/p' "$tmp/out"`; test -n "$ac_out"; } && - { ac_out=`sed -n '/^[ ]*datarootdir[ ]*:*=/p' "$tmp/out"`; test -z "$ac_out"; } && - { echo "$as_me:$LINENO: WARNING: $ac_file contains a reference to the variable \`datarootdir' -which seems to be undefined. Please make sure it is defined." >&5 -echo "$as_me: WARNING: $ac_file contains a reference to the variable \`datarootdir' -which seems to be undefined. Please make sure it is defined." >&2;} - - rm -f "$tmp/stdin" + { ac_out=`sed -n '/\${datarootdir}/p' "$ac_tmp/out"`; test -n "$ac_out"; } && + { ac_out=`sed -n '/^[ ]*datarootdir[ ]*:*=/p' \ + "$ac_tmp/out"`; test -z "$ac_out"; } && + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file contains a reference to the variable \`datarootdir' +which seems to be undefined. Please make sure it is defined" >&5 +$as_echo "$as_me: WARNING: $ac_file contains a reference to the variable \`datarootdir' +which seems to be undefined. Please make sure it is defined" >&2;} + + rm -f "$ac_tmp/stdin" case $ac_file in - -) cat "$tmp/out"; rm -f "$tmp/out";; - *) rm -f "$ac_file"; mv "$tmp/out" $ac_file;; - esac + -) cat "$ac_tmp/out" && rm -f "$ac_tmp/out";; + *) rm -f "$ac_file" && mv "$ac_tmp/out" "$ac_file";; + esac \ + || as_fn_error $? "could not create $ac_file" "$LINENO" 5 ;; :H) # # CONFIG_HEADER # -_ACEOF - -# Transform confdefs.h into a sed script `conftest.defines', that -# substitutes the proper values into config.h.in to produce config.h. -rm -f conftest.defines conftest.tail -# First, append a space to every undef/define line, to ease matching. -echo 's/$/ /' >conftest.defines -# Then, protect against being on the right side of a sed subst, or in -# an unquoted here document, in config.status. If some macros were -# called several times there might be several #defines for the same -# symbol, which is useless. But do not sort them, since the last -# AC_DEFINE must be honored. -ac_word_re=[_$as_cr_Letters][_$as_cr_alnum]* -# These sed commands are passed to sed as "A NAME B PARAMS C VALUE D", where -# NAME is the cpp macro being defined, VALUE is the value it is being given. -# PARAMS is the parameter list in the macro definition--in most cases, it's -# just an empty string. -ac_dA='s,^\\([ #]*\\)[^ ]*\\([ ]*' -ac_dB='\\)[ (].*,\\1define\\2' -ac_dC=' ' -ac_dD=' ,' - -uniq confdefs.h | - sed -n ' - t rset - :rset - s/^[ ]*#[ ]*define[ ][ ]*// - t ok - d - :ok - s/[\\&,]/\\&/g - s/^\('"$ac_word_re"'\)\(([^()]*)\)[ ]*\(.*\)/ '"$ac_dA"'\1'"$ac_dB"'\2'"${ac_dC}"'\3'"$ac_dD"'/p - s/^\('"$ac_word_re"'\)[ ]*\(.*\)/'"$ac_dA"'\1'"$ac_dB$ac_dC"'\2'"$ac_dD"'/p - ' >>conftest.defines - -# Remove the space that was appended to ease matching. -# Then replace #undef with comments. This is necessary, for -# example, in the case of _POSIX_SOURCE, which is predefined and required -# on some systems where configure will not decide to define it. -# (The regexp can be short, since the line contains either #define or #undef.) -echo 's/ $// -s,^[ #]*u.*,/* & */,' >>conftest.defines - -# Break up conftest.defines: -ac_max_sed_lines=50 - -# First sed command is: sed -f defines.sed $ac_file_inputs >"$tmp/out1" -# Second one is: sed -f defines.sed "$tmp/out1" >"$tmp/out2" -# Third one will be: sed -f defines.sed "$tmp/out2" >"$tmp/out1" -# et cetera. -ac_in='$ac_file_inputs' -ac_out='"$tmp/out1"' -ac_nxt='"$tmp/out2"' - -while : -do - # Write a here document: - cat >>$CONFIG_STATUS <<_ACEOF - # First, check the format of the line: - cat >"\$tmp/defines.sed" <<\\CEOF -/^[ ]*#[ ]*undef[ ][ ]*$ac_word_re[ ]*\$/b def -/^[ ]*#[ ]*define[ ][ ]*$ac_word_re[( ]/b def -b -:def -_ACEOF - sed ${ac_max_sed_lines}q conftest.defines >>$CONFIG_STATUS - echo 'CEOF - sed -f "$tmp/defines.sed"' "$ac_in >$ac_out" >>$CONFIG_STATUS - ac_in=$ac_out; ac_out=$ac_nxt; ac_nxt=$ac_in - sed 1,${ac_max_sed_lines}d conftest.defines >conftest.tail - grep . conftest.tail >/dev/null || break - rm -f conftest.defines - mv conftest.tail conftest.defines -done -rm -f conftest.defines conftest.tail - -echo "ac_result=$ac_in" >>$CONFIG_STATUS -cat >>$CONFIG_STATUS <<\_ACEOF if test x"$ac_file" != x-; then - echo "/* $configure_input */" >"$tmp/config.h" - cat "$ac_result" >>"$tmp/config.h" - if diff $ac_file "$tmp/config.h" >/dev/null 2>&1; then - { echo "$as_me:$LINENO: $ac_file is unchanged" >&5 -echo "$as_me: $ac_file is unchanged" >&6;} + { + $as_echo "/* $configure_input */" \ + && eval '$AWK -f "$ac_tmp/defines.awk"' "$ac_file_inputs" + } >"$ac_tmp/config.h" \ + || as_fn_error $? "could not create $ac_file" "$LINENO" 5 + if diff "$ac_file" "$ac_tmp/config.h" >/dev/null 2>&1; then + { $as_echo "$as_me:${as_lineno-$LINENO}: $ac_file is unchanged" >&5 +$as_echo "$as_me: $ac_file is unchanged" >&6;} else - rm -f $ac_file - mv "$tmp/config.h" $ac_file + rm -f "$ac_file" + mv "$ac_tmp/config.h" "$ac_file" \ + || as_fn_error $? "could not create $ac_file" "$LINENO" 5 fi else - echo "/* $configure_input */" - cat "$ac_result" + $as_echo "/* $configure_input */" \ + && eval '$AWK -f "$ac_tmp/defines.awk"' "$ac_file_inputs" \ + || as_fn_error $? "could not create -" "$LINENO" 5 fi - rm -f "$tmp/out12" -# Compute $ac_file's index in $config_headers. -_am_arg=$ac_file +# Compute "$ac_file"'s index in $config_headers. +_am_arg="$ac_file" _am_stamp_count=1 for _am_header in $config_headers :; do case $_am_header in @@ -17283,7 +17262,7 @@ $as_expr X"$_am_arg" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$_am_arg" : 'X\(//\)[^/]' \| \ X"$_am_arg" : 'X\(//\)$' \| \ X"$_am_arg" : 'X\(/\)' \| . 2>/dev/null || -echo X"$_am_arg" | +$as_echo X"$_am_arg" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q @@ -17303,31 +17282,41 @@ echo X"$_am_arg" | s/.*/./; q'`/stamp-h$_am_stamp_count ;; - :C) { echo "$as_me:$LINENO: executing $ac_file commands" >&5 -echo "$as_me: executing $ac_file commands" >&6;} + :C) { $as_echo "$as_me:${as_lineno-$LINENO}: executing $ac_file commands" >&5 +$as_echo "$as_me: executing $ac_file commands" >&6;} ;; esac case $ac_file$ac_mode in "scripts/gtest-config":F) chmod +x scripts/gtest-config ;; - "depfiles":C) test x"$AMDEP_TRUE" != x"" || for mf in $CONFIG_FILES; do - # Strip MF so we end up with the name of the file. - mf=`echo "$mf" | sed -e 's/:.*$//'` - # Check whether this is an Automake generated Makefile or not. - # We used to match only the files named `Makefile.in', but - # some people rename them; so instead we look at the file content. - # Grep'ing the first line is not enough: some people post-process - # each Makefile.in and add a new line on top of each file to say so. - # Grep'ing the whole file is not good either: AIX grep has a line - # limit of 2048, but all sed's we know have understand at least 4000. - if sed -n 's,^#.*generated by automake.*,X,p' "$mf" | grep X >/dev/null 2>&1; then - dirpart=`$as_dirname -- "$mf" || + "depfiles":C) test x"$AMDEP_TRUE" != x"" || { + # Autoconf 2.62 quotes --file arguments for eval, but not when files + # are listed without --file. Let's play safe and only enable the eval + # if we detect the quoting. + case $CONFIG_FILES in + *\'*) eval set x "$CONFIG_FILES" ;; + *) set x $CONFIG_FILES ;; + esac + shift + for mf + do + # Strip MF so we end up with the name of the file. + mf=`echo "$mf" | sed -e 's/:.*$//'` + # Check whether this is an Automake generated Makefile or not. + # We used to match only the files named `Makefile.in', but + # some people rename them; so instead we look at the file content. + # Grep'ing the first line is not enough: some people post-process + # each Makefile.in and add a new line on top of each file to say so. + # Grep'ing the whole file is not good either: AIX grep has a line + # limit of 2048, but all sed's we know have understand at least 4000. + if sed -n 's,^#.*generated by automake.*,X,p' "$mf" | grep X >/dev/null 2>&1; then + dirpart=`$as_dirname -- "$mf" || $as_expr X"$mf" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$mf" : 'X\(//\)[^/]' \| \ X"$mf" : 'X\(//\)$' \| \ X"$mf" : 'X\(/\)' \| . 2>/dev/null || -echo X"$mf" | +$as_echo X"$mf" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q @@ -17345,68 +17334,33 @@ echo X"$mf" | q } s/.*/./; q'` - else - continue - fi - # Extract the definition of DEPDIR, am__include, and am__quote - # from the Makefile without running `make'. - DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"` - test -z "$DEPDIR" && continue - am__include=`sed -n 's/^am__include = //p' < "$mf"` - test -z "am__include" && continue - am__quote=`sed -n 's/^am__quote = //p' < "$mf"` - # When using ansi2knr, U may be empty or an underscore; expand it - U=`sed -n 's/^U = //p' < "$mf"` - # Find all dependency output files, they are included files with - # $(DEPDIR) in their names. We invoke sed twice because it is the - # simplest approach to changing $(DEPDIR) to its actual value in the - # expansion. - for file in `sed -n " - s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \ - sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g' -e 's/\$U/'"$U"'/g'`; do - # Make sure the directory exists. - test -f "$dirpart/$file" && continue - fdir=`$as_dirname -- "$file" || + else + continue + fi + # Extract the definition of DEPDIR, am__include, and am__quote + # from the Makefile without running `make'. + DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"` + test -z "$DEPDIR" && continue + am__include=`sed -n 's/^am__include = //p' < "$mf"` + test -z "am__include" && continue + am__quote=`sed -n 's/^am__quote = //p' < "$mf"` + # When using ansi2knr, U may be empty or an underscore; expand it + U=`sed -n 's/^U = //p' < "$mf"` + # Find all dependency output files, they are included files with + # $(DEPDIR) in their names. We invoke sed twice because it is the + # simplest approach to changing $(DEPDIR) to its actual value in the + # expansion. + for file in `sed -n " + s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \ + sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g' -e 's/\$U/'"$U"'/g'`; do + # Make sure the directory exists. + test -f "$dirpart/$file" && continue + fdir=`$as_dirname -- "$file" || $as_expr X"$file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$file" : 'X\(//\)[^/]' \| \ X"$file" : 'X\(//\)$' \| \ X"$file" : 'X\(/\)' \| . 2>/dev/null || -echo X"$file" | - sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ - s//\1/ - q - } - /^X\(\/\/\)[^/].*/{ - s//\1/ - q - } - /^X\(\/\/\)$/{ - s//\1/ - q - } - /^X\(\/\).*/{ - s//\1/ - q - } - s/.*/./; q'` - { as_dir=$dirpart/$fdir - case $as_dir in #( - -*) as_dir=./$as_dir;; - esac - test -d "$as_dir" || { $as_mkdir_p && mkdir -p "$as_dir"; } || { - as_dirs= - while :; do - case $as_dir in #( - *\'*) as_qdir=`echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #( - *) as_qdir=$as_dir;; - esac - as_dirs="'$as_qdir' $as_dirs" - as_dir=`$as_dirname -- "$as_dir" || -$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ - X"$as_dir" : 'X\(//\)[^/]' \| \ - X"$as_dir" : 'X\(//\)$' \| \ - X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || -echo X"$as_dir" | +$as_echo X"$file" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q @@ -17424,16 +17378,12 @@ echo X"$as_dir" | q } s/.*/./; q'` - test -d "$as_dir" && break + as_dir=$dirpart/$fdir; as_fn_mkdir_p + # echo "creating $dirpart/$file" + echo '# dummy' > "$dirpart/$file" done - test -z "$as_dirs" || eval "mkdir $as_dirs" - } || test -d "$as_dir" || { { echo "$as_me:$LINENO: error: cannot create directory $as_dir" >&5 -echo "$as_me: error: cannot create directory $as_dir" >&2;} - { (exit 1); exit 1; }; }; } - # echo "creating $dirpart/$file" - echo '# dummy' > "$dirpart/$file" done -done +} ;; "libtool":C) @@ -17456,7 +17406,8 @@ done # NOTE: Changes made to this file will be lost: look at ltmain.sh. # # Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005, -# 2006, 2007, 2008 Free Software Foundation, Inc. +# 2006, 2007, 2008, 2009, 2010, 2011 Free Software +# Foundation, Inc. # Written by Gordon Matzigkeit, 1996 # # This file is part of GNU Libtool. @@ -17504,6 +17455,15 @@ pic_mode=$pic_mode # Whether or not to optimize for fast installation. fast_install=$enable_fast_install +# Shell to use when invoking shell scripts. +SHELL=$lt_SHELL + +# An echo program that protects backslashes. +ECHO=$lt_ECHO + +# The PATH separator for the build system. +PATH_SEPARATOR=$lt_PATH_SEPARATOR + # The host system. host_alias=$host_alias host=$host @@ -17553,20 +17513,42 @@ SP2NL=$lt_lt_SP2NL # turn newlines into spaces. NL2SP=$lt_lt_NL2SP -# How to create reloadable object files. -reload_flag=$lt_reload_flag -reload_cmds=$lt_reload_cmds +# convert \$build file names to \$host format. +to_host_file_cmd=$lt_cv_to_host_file_cmd + +# convert \$build files to toolchain format. +to_tool_file_cmd=$lt_cv_to_tool_file_cmd + +# An object symbol dumper. +OBJDUMP=$lt_OBJDUMP # Method to check whether dependent libraries are shared objects. deplibs_check_method=$lt_deplibs_check_method -# Command to use when deplibs_check_method == "file_magic". +# Command to use when deplibs_check_method = "file_magic". file_magic_cmd=$lt_file_magic_cmd +# How to find potential files when deplibs_check_method = "file_magic". +file_magic_glob=$lt_file_magic_glob + +# Find potential files using nocaseglob when deplibs_check_method = "file_magic". +want_nocaseglob=$lt_want_nocaseglob + +# DLL creation program. +DLLTOOL=$lt_DLLTOOL + +# Command to associate shared and link libraries. +sharedlib_from_linklib_cmd=$lt_sharedlib_from_linklib_cmd + # The archiver. AR=$lt_AR + +# Flags to create an archive. AR_FLAGS=$lt_AR_FLAGS +# How to feed a file listing to the archiver. +archiver_list_spec=$lt_archiver_list_spec + # A symbol stripping program. STRIP=$lt_STRIP @@ -17575,6 +17557,9 @@ RANLIB=$lt_RANLIB old_postinstall_cmds=$lt_old_postinstall_cmds old_postuninstall_cmds=$lt_old_postuninstall_cmds +# Whether to use a lock for old archive extraction. +lock_old_archive_extraction=$lock_old_archive_extraction + # A C compiler. LTCC=$lt_CC @@ -17593,14 +17578,14 @@ global_symbol_to_c_name_address=$lt_lt_cv_sys_global_symbol_to_c_name_address # Transform the output of nm in a C name address pair when lib prefix is needed. global_symbol_to_c_name_address_lib_prefix=$lt_lt_cv_sys_global_symbol_to_c_name_address_lib_prefix -# The name of the directory that contains temporary libtool files. -objdir=$objdir +# Specify filename containing input files for \$NM. +nm_file_list_spec=$lt_nm_file_list_spec -# Shell to use when invoking shell scripts. -SHELL=$lt_SHELL +# The root where to search for dependent libraries,and in which our libraries should be installed. +lt_sysroot=$lt_sysroot -# An echo program that does not interpret backslashes. -ECHO=$lt_ECHO +# The name of the directory that contains temporary libtool files. +objdir=$objdir # Used to examine libraries when file_magic_cmd begins with "file". MAGIC_CMD=$MAGIC_CMD @@ -17608,6 +17593,9 @@ MAGIC_CMD=$MAGIC_CMD # Must we lock files when doing compilation? need_locks=$lt_need_locks +# Manifest tool. +MANIFEST_TOOL=$lt_MANIFEST_TOOL + # Tool to manipulate archived DWARF debug symbol files on Mac OS X. DSYMUTIL=$lt_DSYMUTIL @@ -17664,6 +17652,9 @@ library_names_spec=$lt_library_names_spec # The coded name of the library, if different from the real name. soname_spec=$lt_soname_spec +# Permission mode override for installation of shared libraries. +install_override_mode=$lt_install_override_mode + # Command to use after installation of a shared archive. postinstall_cmds=$lt_postinstall_cmds @@ -17703,6 +17694,10 @@ striplib=$lt_striplib # The linker used to build libraries. LD=$lt_LD +# How to create reloadable object files. +reload_flag=$lt_reload_flag +reload_cmds=$lt_reload_cmds + # Commands used to build an old-style archive. old_archive_cmds=$lt_old_archive_cmds @@ -17715,12 +17710,12 @@ with_gcc=$GCC # Compiler flag to turn off builtin functions. no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag -# How to pass a linker flag through the compiler. -wl=$lt_lt_prog_compiler_wl - # Additional compiler flags for building library objects. pic_flag=$lt_lt_prog_compiler_pic +# How to pass a linker flag through the compiler. +wl=$lt_lt_prog_compiler_wl + # Compiler flag to prevent dynamic linking. link_static_flag=$lt_lt_prog_compiler_static @@ -17770,10 +17765,6 @@ no_undefined_flag=$lt_no_undefined_flag # This must work even if \$libdir does not exist hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec -# If ld is used when linking, flag to hardcode \$libdir into a binary -# during linking. This must work even if \$libdir does not exist. -hardcode_libdir_flag_spec_ld=$lt_hardcode_libdir_flag_spec_ld - # Whether we need a single "-rpath" flag with a separated argument. hardcode_libdir_separator=$lt_hardcode_libdir_separator @@ -17807,9 +17798,6 @@ inherit_rpath=$inherit_rpath # Whether libtool must link a program against all its dependency libraries. link_all_deplibs=$link_all_deplibs -# Fix the shell variable \$srcfile for the compiler. -fix_srcfile_path=$lt_fix_srcfile_path - # Set to "yes" if exported symbols are required. always_export_symbols=$always_export_symbols @@ -17825,6 +17813,9 @@ include_expsyms=$lt_include_expsyms # Commands necessary for linking programs (against libraries) with templates. prelink_cmds=$lt_prelink_cmds +# Commands necessary for finishing linking programs. +postlink_cmds=$lt_postlink_cmds + # Specify filename containing input files. file_list_spec=$lt_file_list_spec @@ -17871,212 +17862,169 @@ ltmain="$ac_aux_dir/ltmain.sh" # if finds mixed CR/LF and LF-only lines. Since sed operates in # text mode, it properly converts lines to CR/LF. This bash problem # is reportedly fixed, but why not run on old versions too? - sed '/^# Generated shell functions inserted here/q' "$ltmain" >> "$cfgfile" \ - || (rm -f "$cfgfile"; exit 1) - - case $xsi_shell in - yes) - cat << \_LT_EOF >> "$cfgfile" - -# func_dirname file append nondir_replacement -# Compute the dirname of FILE. If nonempty, add APPEND to the result, -# otherwise set result to NONDIR_REPLACEMENT. -func_dirname () -{ - case ${1} in - */*) func_dirname_result="${1%/*}${2}" ;; - * ) func_dirname_result="${3}" ;; - esac -} - -# func_basename file -func_basename () -{ - func_basename_result="${1##*/}" -} - -# func_dirname_and_basename file append nondir_replacement -# perform func_basename and func_dirname in a single function -# call: -# dirname: Compute the dirname of FILE. If nonempty, -# add APPEND to the result, otherwise set result -# to NONDIR_REPLACEMENT. -# value returned in "$func_dirname_result" -# basename: Compute filename of FILE. -# value retuned in "$func_basename_result" -# Implementation must be kept synchronized with func_dirname -# and func_basename. For efficiency, we do not delegate to -# those functions but instead duplicate the functionality here. -func_dirname_and_basename () -{ - case ${1} in - */*) func_dirname_result="${1%/*}${2}" ;; - * ) func_dirname_result="${3}" ;; - esac - func_basename_result="${1##*/}" -} - -# func_stripname prefix suffix name -# strip PREFIX and SUFFIX off of NAME. -# PREFIX and SUFFIX must not contain globbing or regex special -# characters, hashes, percent signs, but SUFFIX may contain a leading -# dot (in which case that matches only a dot). -func_stripname () -{ - # pdksh 5.2.14 does not do ${X%$Y} correctly if both X and Y are - # positional parameters, so assign one to ordinary parameter first. - func_stripname_result=${3} - func_stripname_result=${func_stripname_result#"${1}"} - func_stripname_result=${func_stripname_result%"${2}"} -} - -# func_opt_split -func_opt_split () -{ - func_opt_split_opt=${1%%=*} - func_opt_split_arg=${1#*=} -} - -# func_lo2o object -func_lo2o () -{ - case ${1} in - *.lo) func_lo2o_result=${1%.lo}.${objext} ;; - *) func_lo2o_result=${1} ;; - esac -} - -# func_xform libobj-or-source -func_xform () -{ - func_xform_result=${1%.*}.lo -} - -# func_arith arithmetic-term... -func_arith () -{ - func_arith_result=$(( $* )) -} - -# func_len string -# STRING may not start with a hyphen. -func_len () -{ - func_len_result=${#1} -} - -_LT_EOF - ;; - *) # Bourne compatible functions. - cat << \_LT_EOF >> "$cfgfile" - -# func_dirname file append nondir_replacement -# Compute the dirname of FILE. If nonempty, add APPEND to the result, -# otherwise set result to NONDIR_REPLACEMENT. -func_dirname () -{ - # Extract subdirectory from the argument. - func_dirname_result=`$ECHO "X${1}" | $Xsed -e "$dirname"` - if test "X$func_dirname_result" = "X${1}"; then - func_dirname_result="${3}" - else - func_dirname_result="$func_dirname_result${2}" - fi -} - -# func_basename file -func_basename () -{ - func_basename_result=`$ECHO "X${1}" | $Xsed -e "$basename"` -} - - -# func_stripname prefix suffix name -# strip PREFIX and SUFFIX off of NAME. -# PREFIX and SUFFIX must not contain globbing or regex special -# characters, hashes, percent signs, but SUFFIX may contain a leading -# dot (in which case that matches only a dot). -# func_strip_suffix prefix name -func_stripname () -{ - case ${2} in - .*) func_stripname_result=`$ECHO "X${3}" \ - | $Xsed -e "s%^${1}%%" -e "s%\\\\${2}\$%%"`;; - *) func_stripname_result=`$ECHO "X${3}" \ - | $Xsed -e "s%^${1}%%" -e "s%${2}\$%%"`;; - esac -} - -# sed scripts: -my_sed_long_opt='1s/^\(-[^=]*\)=.*/\1/;q' -my_sed_long_arg='1s/^-[^=]*=//' - -# func_opt_split -func_opt_split () -{ - func_opt_split_opt=`$ECHO "X${1}" | $Xsed -e "$my_sed_long_opt"` - func_opt_split_arg=`$ECHO "X${1}" | $Xsed -e "$my_sed_long_arg"` -} - -# func_lo2o object -func_lo2o () -{ - func_lo2o_result=`$ECHO "X${1}" | $Xsed -e "$lo2o"` -} - -# func_xform libobj-or-source -func_xform () -{ - func_xform_result=`$ECHO "X${1}" | $Xsed -e 's/\.[^.]*$/.lo/'` -} - -# func_arith arithmetic-term... -func_arith () -{ - func_arith_result=`expr "$@"` -} - -# func_len string -# STRING may not start with a hyphen. -func_len () -{ - func_len_result=`expr "$1" : ".*" 2>/dev/null || echo $max_cmd_len` -} - -_LT_EOF -esac - -case $lt_shell_append in - yes) - cat << \_LT_EOF >> "$cfgfile" - -# func_append var value -# Append VALUE to the end of shell variable VAR. -func_append () -{ - eval "$1+=\$2" -} -_LT_EOF - ;; - *) - cat << \_LT_EOF >> "$cfgfile" - -# func_append var value -# Append VALUE to the end of shell variable VAR. -func_append () -{ - eval "$1=\$$1\$2" -} - -_LT_EOF - ;; - esac - - - sed -n '/^# Generated shell functions inserted here/,$p' "$ltmain" >> "$cfgfile" \ - || (rm -f "$cfgfile"; exit 1) - - mv -f "$cfgfile" "$ofile" || + sed '$q' "$ltmain" >> "$cfgfile" \ + || (rm -f "$cfgfile"; exit 1) + + if test x"$xsi_shell" = xyes; then + sed -e '/^func_dirname ()$/,/^} # func_dirname /c\ +func_dirname ()\ +{\ +\ case ${1} in\ +\ */*) func_dirname_result="${1%/*}${2}" ;;\ +\ * ) func_dirname_result="${3}" ;;\ +\ esac\ +} # Extended-shell func_dirname implementation' "$cfgfile" > $cfgfile.tmp \ + && mv -f "$cfgfile.tmp" "$cfgfile" \ + || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") +test 0 -eq $? || _lt_function_replace_fail=: + + + sed -e '/^func_basename ()$/,/^} # func_basename /c\ +func_basename ()\ +{\ +\ func_basename_result="${1##*/}"\ +} # Extended-shell func_basename implementation' "$cfgfile" > $cfgfile.tmp \ + && mv -f "$cfgfile.tmp" "$cfgfile" \ + || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") +test 0 -eq $? || _lt_function_replace_fail=: + + + sed -e '/^func_dirname_and_basename ()$/,/^} # func_dirname_and_basename /c\ +func_dirname_and_basename ()\ +{\ +\ case ${1} in\ +\ */*) func_dirname_result="${1%/*}${2}" ;;\ +\ * ) func_dirname_result="${3}" ;;\ +\ esac\ +\ func_basename_result="${1##*/}"\ +} # Extended-shell func_dirname_and_basename implementation' "$cfgfile" > $cfgfile.tmp \ + && mv -f "$cfgfile.tmp" "$cfgfile" \ + || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") +test 0 -eq $? || _lt_function_replace_fail=: + + + sed -e '/^func_stripname ()$/,/^} # func_stripname /c\ +func_stripname ()\ +{\ +\ # pdksh 5.2.14 does not do ${X%$Y} correctly if both X and Y are\ +\ # positional parameters, so assign one to ordinary parameter first.\ +\ func_stripname_result=${3}\ +\ func_stripname_result=${func_stripname_result#"${1}"}\ +\ func_stripname_result=${func_stripname_result%"${2}"}\ +} # Extended-shell func_stripname implementation' "$cfgfile" > $cfgfile.tmp \ + && mv -f "$cfgfile.tmp" "$cfgfile" \ + || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") +test 0 -eq $? || _lt_function_replace_fail=: + + + sed -e '/^func_split_long_opt ()$/,/^} # func_split_long_opt /c\ +func_split_long_opt ()\ +{\ +\ func_split_long_opt_name=${1%%=*}\ +\ func_split_long_opt_arg=${1#*=}\ +} # Extended-shell func_split_long_opt implementation' "$cfgfile" > $cfgfile.tmp \ + && mv -f "$cfgfile.tmp" "$cfgfile" \ + || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") +test 0 -eq $? || _lt_function_replace_fail=: + + + sed -e '/^func_split_short_opt ()$/,/^} # func_split_short_opt /c\ +func_split_short_opt ()\ +{\ +\ func_split_short_opt_arg=${1#??}\ +\ func_split_short_opt_name=${1%"$func_split_short_opt_arg"}\ +} # Extended-shell func_split_short_opt implementation' "$cfgfile" > $cfgfile.tmp \ + && mv -f "$cfgfile.tmp" "$cfgfile" \ + || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") +test 0 -eq $? || _lt_function_replace_fail=: + + + sed -e '/^func_lo2o ()$/,/^} # func_lo2o /c\ +func_lo2o ()\ +{\ +\ case ${1} in\ +\ *.lo) func_lo2o_result=${1%.lo}.${objext} ;;\ +\ *) func_lo2o_result=${1} ;;\ +\ esac\ +} # Extended-shell func_lo2o implementation' "$cfgfile" > $cfgfile.tmp \ + && mv -f "$cfgfile.tmp" "$cfgfile" \ + || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") +test 0 -eq $? || _lt_function_replace_fail=: + + + sed -e '/^func_xform ()$/,/^} # func_xform /c\ +func_xform ()\ +{\ + func_xform_result=${1%.*}.lo\ +} # Extended-shell func_xform implementation' "$cfgfile" > $cfgfile.tmp \ + && mv -f "$cfgfile.tmp" "$cfgfile" \ + || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") +test 0 -eq $? || _lt_function_replace_fail=: + + + sed -e '/^func_arith ()$/,/^} # func_arith /c\ +func_arith ()\ +{\ + func_arith_result=$(( $* ))\ +} # Extended-shell func_arith implementation' "$cfgfile" > $cfgfile.tmp \ + && mv -f "$cfgfile.tmp" "$cfgfile" \ + || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") +test 0 -eq $? || _lt_function_replace_fail=: + + + sed -e '/^func_len ()$/,/^} # func_len /c\ +func_len ()\ +{\ + func_len_result=${#1}\ +} # Extended-shell func_len implementation' "$cfgfile" > $cfgfile.tmp \ + && mv -f "$cfgfile.tmp" "$cfgfile" \ + || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") +test 0 -eq $? || _lt_function_replace_fail=: + +fi + +if test x"$lt_shell_append" = xyes; then + sed -e '/^func_append ()$/,/^} # func_append /c\ +func_append ()\ +{\ + eval "${1}+=\\${2}"\ +} # Extended-shell func_append implementation' "$cfgfile" > $cfgfile.tmp \ + && mv -f "$cfgfile.tmp" "$cfgfile" \ + || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") +test 0 -eq $? || _lt_function_replace_fail=: + + + sed -e '/^func_append_quoted ()$/,/^} # func_append_quoted /c\ +func_append_quoted ()\ +{\ +\ func_quote_for_eval "${2}"\ +\ eval "${1}+=\\\\ \\$func_quote_for_eval_result"\ +} # Extended-shell func_append_quoted implementation' "$cfgfile" > $cfgfile.tmp \ + && mv -f "$cfgfile.tmp" "$cfgfile" \ + || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") +test 0 -eq $? || _lt_function_replace_fail=: + + + # Save a `func_append' function call where possible by direct use of '+=' + sed -e 's%func_append \([a-zA-Z_]\{1,\}\) "%\1+="%g' $cfgfile > $cfgfile.tmp \ + && mv -f "$cfgfile.tmp" "$cfgfile" \ + || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") + test 0 -eq $? || _lt_function_replace_fail=: +else + # Save a `func_append' function call even when '+=' is not available + sed -e 's%func_append \([a-zA-Z_]\{1,\}\) "%\1="$\1%g' $cfgfile > $cfgfile.tmp \ + && mv -f "$cfgfile.tmp" "$cfgfile" \ + || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") + test 0 -eq $? || _lt_function_replace_fail=: +fi + +if test x"$_lt_function_replace_fail" = x":"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Unable to substitute extended shell functions in $ofile" >&5 +$as_echo "$as_me: WARNING: Unable to substitute extended shell functions in $ofile" >&2;} +fi + + + mv -f "$cfgfile" "$ofile" || (rm -f "$ofile" && cp "$cfgfile" "$ofile" && rm -f "$cfgfile") chmod +x "$ofile" @@ -18088,6 +18036,10 @@ _LT_EOF # The linker used to build libraries. LD=$lt_LD_CXX +# How to create reloadable object files. +reload_flag=$lt_reload_flag_CXX +reload_cmds=$lt_reload_cmds_CXX + # Commands used to build an old-style archive. old_archive_cmds=$lt_old_archive_cmds_CXX @@ -18100,12 +18052,12 @@ with_gcc=$GCC_CXX # Compiler flag to turn off builtin functions. no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag_CXX -# How to pass a linker flag through the compiler. -wl=$lt_lt_prog_compiler_wl_CXX - # Additional compiler flags for building library objects. pic_flag=$lt_lt_prog_compiler_pic_CXX +# How to pass a linker flag through the compiler. +wl=$lt_lt_prog_compiler_wl_CXX + # Compiler flag to prevent dynamic linking. link_static_flag=$lt_lt_prog_compiler_static_CXX @@ -18155,10 +18107,6 @@ no_undefined_flag=$lt_no_undefined_flag_CXX # This must work even if \$libdir does not exist hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec_CXX -# If ld is used when linking, flag to hardcode \$libdir into a binary -# during linking. This must work even if \$libdir does not exist. -hardcode_libdir_flag_spec_ld=$lt_hardcode_libdir_flag_spec_ld_CXX - # Whether we need a single "-rpath" flag with a separated argument. hardcode_libdir_separator=$lt_hardcode_libdir_separator_CXX @@ -18192,9 +18140,6 @@ inherit_rpath=$inherit_rpath_CXX # Whether libtool must link a program against all its dependency libraries. link_all_deplibs=$link_all_deplibs_CXX -# Fix the shell variable \$srcfile for the compiler. -fix_srcfile_path=$lt_fix_srcfile_path_CXX - # Set to "yes" if exported symbols are required. always_export_symbols=$always_export_symbols_CXX @@ -18210,6 +18155,9 @@ include_expsyms=$lt_include_expsyms_CXX # Commands necessary for linking programs (against libraries) with templates. prelink_cmds=$lt_prelink_cmds_CXX +# Commands necessary for finishing linking programs. +postlink_cmds=$lt_postlink_cmds_CXX + # Specify filename containing input files. file_list_spec=$lt_file_list_spec_CXX @@ -18239,11 +18187,13 @@ _LT_EOF done # for ac_tag -{ (exit 0); exit 0; } +as_fn_exit 0 _ACEOF -chmod +x $CONFIG_STATUS ac_clean_files=$ac_clean_files_save +test $ac_write_fail = 0 || + as_fn_error $? "write failure creating $CONFIG_STATUS" "$LINENO" 5 + # configure is writing to config.log, and then calls config.status. # config.status does its own redirection, appending to config.log. @@ -18263,6 +18213,10 @@ if test "$no_create" != yes; then exec 5>>config.log # Use ||, not &&, to avoid exiting from the if with $? = 1, which # would make configure fail if this is the last instruction. - $ac_cs_success || { (exit 1); exit 1; } + $ac_cs_success || as_fn_exit 1 +fi +if test -n "$ac_unrecognized_opts" && test "$enable_option_checking" != no; then + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: unrecognized options: $ac_unrecognized_opts" >&5 +$as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2;} fi diff --git a/cpp/thirdparty/protobuf-2.3.0/gtest/configure.ac b/cpp/thirdparty/protobuf-2.5.0/gtest/configure.ac similarity index 72% rename from cpp/thirdparty/protobuf-2.3.0/gtest/configure.ac rename to cpp/thirdparty/protobuf-2.5.0/gtest/configure.ac index 709b024a6..37b298e12 100644 --- a/cpp/thirdparty/protobuf-2.3.0/gtest/configure.ac +++ b/cpp/thirdparty/protobuf-2.5.0/gtest/configure.ac @@ -5,13 +5,14 @@ m4_include(m4/acx_pthread.m4) # "[1.0.1]"). It also asumes that there won't be any closing parenthesis # between "AC_INIT(" and the closing ")" including comments and strings. AC_INIT([Google C++ Testing Framework], - [1.4.0], + [1.6.0], [googletestframework@googlegroups.com], [gtest]) # Provide various options to initialize the Autoconf and configure processes. AC_PREREQ([2.59]) -AC_CONFIG_SRCDIR([./COPYING]) +AC_CONFIG_SRCDIR([./LICENSE]) +AC_CONFIG_MACRO_DIR([m4]) AC_CONFIG_AUX_DIR([build-aux]) AC_CONFIG_HEADERS([build-aux/config.h]) AC_CONFIG_FILES([Makefile]) @@ -39,8 +40,24 @@ AS_IF([test "$PYTHON" != ":"], [AM_PYTHON_CHECK_VERSION([$PYTHON],[2.3],[:],[PYTHON=":"])]) AM_CONDITIONAL([HAVE_PYTHON],[test "$PYTHON" != ":"]) -# Check for pthreads. -ACX_PTHREAD +# Configure pthreads. +AC_ARG_WITH([pthreads], + [AS_HELP_STRING([--with-pthreads], + [use pthreads (default is yes)])], + [with_pthreads=$withval], + [with_pthreads=check]) + +have_pthreads=no +AS_IF([test "x$with_pthreads" != "xno"], + [ACX_PTHREAD( + [], + [AS_IF([test "x$with_pthreads" != "xcheck"], + [AC_MSG_FAILURE( + [--with-pthreads was specified, but unable to be used])])]) + have_pthreads="$acx_pthread_ok"]) +AM_CONDITIONAL([HAVE_PTHREADS],[test "x$have_pthreads" == "xyes"]) +AC_SUBST(PTHREAD_CFLAGS) +AC_SUBST(PTHREAD_LIBS) # TODO(chandlerc@google.com) Check for the necessary system headers. diff --git a/cpp/thirdparty/protobuf-2.5.0/gtest/fused-src/gtest/gtest-all.cc b/cpp/thirdparty/protobuf-2.5.0/gtest/fused-src/gtest/gtest-all.cc new file mode 100644 index 000000000..7688ca429 --- /dev/null +++ b/cpp/thirdparty/protobuf-2.5.0/gtest/fused-src/gtest/gtest-all.cc @@ -0,0 +1,9251 @@ +// Copyright 2008, Google Inc. +// All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Author: mheule@google.com (Markus Heule) +// +// Google C++ Testing Framework (Google Test) +// +// Sometimes it's desirable to build Google Test by compiling a single file. +// This file serves this purpose. + +// This line ensures that gtest.h can be compiled on its own, even +// when it's fused. +#include "gtest/gtest.h" + +// The following lines pull in the real gtest *.cc files. +// Copyright 2005, Google Inc. +// All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Author: wan@google.com (Zhanyong Wan) +// +// The Google C++ Testing Framework (Google Test) + +// Copyright 2007, Google Inc. +// All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Author: wan@google.com (Zhanyong Wan) +// +// Utilities for testing Google Test itself and code that uses Google Test +// (e.g. frameworks built on top of Google Test). + +#ifndef GTEST_INCLUDE_GTEST_GTEST_SPI_H_ +#define GTEST_INCLUDE_GTEST_GTEST_SPI_H_ + + +namespace testing { + +// This helper class can be used to mock out Google Test failure reporting +// so that we can test Google Test or code that builds on Google Test. +// +// An object of this class appends a TestPartResult object to the +// TestPartResultArray object given in the constructor whenever a Google Test +// failure is reported. It can either intercept only failures that are +// generated in the same thread that created this object or it can intercept +// all generated failures. The scope of this mock object can be controlled with +// the second argument to the two arguments constructor. +class GTEST_API_ ScopedFakeTestPartResultReporter + : public TestPartResultReporterInterface { + public: + // The two possible mocking modes of this object. + enum InterceptMode { + INTERCEPT_ONLY_CURRENT_THREAD, // Intercepts only thread local failures. + INTERCEPT_ALL_THREADS // Intercepts all failures. + }; + + // The c'tor sets this object as the test part result reporter used + // by Google Test. The 'result' parameter specifies where to report the + // results. This reporter will only catch failures generated in the current + // thread. DEPRECATED + explicit ScopedFakeTestPartResultReporter(TestPartResultArray* result); + + // Same as above, but you can choose the interception scope of this object. + ScopedFakeTestPartResultReporter(InterceptMode intercept_mode, + TestPartResultArray* result); + + // The d'tor restores the previous test part result reporter. + virtual ~ScopedFakeTestPartResultReporter(); + + // Appends the TestPartResult object to the TestPartResultArray + // received in the constructor. + // + // This method is from the TestPartResultReporterInterface + // interface. + virtual void ReportTestPartResult(const TestPartResult& result); + private: + void Init(); + + const InterceptMode intercept_mode_; + TestPartResultReporterInterface* old_reporter_; + TestPartResultArray* const result_; + + GTEST_DISALLOW_COPY_AND_ASSIGN_(ScopedFakeTestPartResultReporter); +}; + +namespace internal { + +// A helper class for implementing EXPECT_FATAL_FAILURE() and +// EXPECT_NONFATAL_FAILURE(). Its destructor verifies that the given +// TestPartResultArray contains exactly one failure that has the given +// type and contains the given substring. If that's not the case, a +// non-fatal failure will be generated. +class GTEST_API_ SingleFailureChecker { + public: + // The constructor remembers the arguments. + SingleFailureChecker(const TestPartResultArray* results, + TestPartResult::Type type, + const string& substr); + ~SingleFailureChecker(); + private: + const TestPartResultArray* const results_; + const TestPartResult::Type type_; + const string substr_; + + GTEST_DISALLOW_COPY_AND_ASSIGN_(SingleFailureChecker); +}; + +} // namespace internal + +} // namespace testing + +// A set of macros for testing Google Test assertions or code that's expected +// to generate Google Test fatal failures. It verifies that the given +// statement will cause exactly one fatal Google Test failure with 'substr' +// being part of the failure message. +// +// There are two different versions of this macro. EXPECT_FATAL_FAILURE only +// affects and considers failures generated in the current thread and +// EXPECT_FATAL_FAILURE_ON_ALL_THREADS does the same but for all threads. +// +// The verification of the assertion is done correctly even when the statement +// throws an exception or aborts the current function. +// +// Known restrictions: +// - 'statement' cannot reference local non-static variables or +// non-static members of the current object. +// - 'statement' cannot return a value. +// - You cannot stream a failure message to this macro. +// +// Note that even though the implementations of the following two +// macros are much alike, we cannot refactor them to use a common +// helper macro, due to some peculiarity in how the preprocessor +// works. The AcceptsMacroThatExpandsToUnprotectedComma test in +// gtest_unittest.cc will fail to compile if we do that. +#define EXPECT_FATAL_FAILURE(statement, substr) \ + do { \ + class GTestExpectFatalFailureHelper {\ + public:\ + static void Execute() { statement; }\ + };\ + ::testing::TestPartResultArray gtest_failures;\ + ::testing::internal::SingleFailureChecker gtest_checker(\ + >est_failures, ::testing::TestPartResult::kFatalFailure, (substr));\ + {\ + ::testing::ScopedFakeTestPartResultReporter gtest_reporter(\ + ::testing::ScopedFakeTestPartResultReporter:: \ + INTERCEPT_ONLY_CURRENT_THREAD, >est_failures);\ + GTestExpectFatalFailureHelper::Execute();\ + }\ + } while (::testing::internal::AlwaysFalse()) + +#define EXPECT_FATAL_FAILURE_ON_ALL_THREADS(statement, substr) \ + do { \ + class GTestExpectFatalFailureHelper {\ + public:\ + static void Execute() { statement; }\ + };\ + ::testing::TestPartResultArray gtest_failures;\ + ::testing::internal::SingleFailureChecker gtest_checker(\ + >est_failures, ::testing::TestPartResult::kFatalFailure, (substr));\ + {\ + ::testing::ScopedFakeTestPartResultReporter gtest_reporter(\ + ::testing::ScopedFakeTestPartResultReporter:: \ + INTERCEPT_ALL_THREADS, >est_failures);\ + GTestExpectFatalFailureHelper::Execute();\ + }\ + } while (::testing::internal::AlwaysFalse()) + +// A macro for testing Google Test assertions or code that's expected to +// generate Google Test non-fatal failures. It asserts that the given +// statement will cause exactly one non-fatal Google Test failure with 'substr' +// being part of the failure message. +// +// There are two different versions of this macro. EXPECT_NONFATAL_FAILURE only +// affects and considers failures generated in the current thread and +// EXPECT_NONFATAL_FAILURE_ON_ALL_THREADS does the same but for all threads. +// +// 'statement' is allowed to reference local variables and members of +// the current object. +// +// The verification of the assertion is done correctly even when the statement +// throws an exception or aborts the current function. +// +// Known restrictions: +// - You cannot stream a failure message to this macro. +// +// Note that even though the implementations of the following two +// macros are much alike, we cannot refactor them to use a common +// helper macro, due to some peculiarity in how the preprocessor +// works. If we do that, the code won't compile when the user gives +// EXPECT_NONFATAL_FAILURE() a statement that contains a macro that +// expands to code containing an unprotected comma. The +// AcceptsMacroThatExpandsToUnprotectedComma test in gtest_unittest.cc +// catches that. +// +// For the same reason, we have to write +// if (::testing::internal::AlwaysTrue()) { statement; } +// instead of +// GTEST_SUPPRESS_UNREACHABLE_CODE_WARNING_BELOW_(statement) +// to avoid an MSVC warning on unreachable code. +#define EXPECT_NONFATAL_FAILURE(statement, substr) \ + do {\ + ::testing::TestPartResultArray gtest_failures;\ + ::testing::internal::SingleFailureChecker gtest_checker(\ + >est_failures, ::testing::TestPartResult::kNonFatalFailure, \ + (substr));\ + {\ + ::testing::ScopedFakeTestPartResultReporter gtest_reporter(\ + ::testing::ScopedFakeTestPartResultReporter:: \ + INTERCEPT_ONLY_CURRENT_THREAD, >est_failures);\ + if (::testing::internal::AlwaysTrue()) { statement; }\ + }\ + } while (::testing::internal::AlwaysFalse()) + +#define EXPECT_NONFATAL_FAILURE_ON_ALL_THREADS(statement, substr) \ + do {\ + ::testing::TestPartResultArray gtest_failures;\ + ::testing::internal::SingleFailureChecker gtest_checker(\ + >est_failures, ::testing::TestPartResult::kNonFatalFailure, \ + (substr));\ + {\ + ::testing::ScopedFakeTestPartResultReporter gtest_reporter(\ + ::testing::ScopedFakeTestPartResultReporter::INTERCEPT_ALL_THREADS, \ + >est_failures);\ + if (::testing::internal::AlwaysTrue()) { statement; }\ + }\ + } while (::testing::internal::AlwaysFalse()) + +#endif // GTEST_INCLUDE_GTEST_GTEST_SPI_H_ + +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include // NOLINT +#include +#include + +#if GTEST_OS_LINUX + +// TODO(kenton@google.com): Use autoconf to detect availability of +// gettimeofday(). +# define GTEST_HAS_GETTIMEOFDAY_ 1 + +# include // NOLINT +# include // NOLINT +# include // NOLINT +// Declares vsnprintf(). This header is not available on Windows. +# include // NOLINT +# include // NOLINT +# include // NOLINT +# include // NOLINT +# include + +#elif GTEST_OS_SYMBIAN +# define GTEST_HAS_GETTIMEOFDAY_ 1 +# include // NOLINT + +#elif GTEST_OS_ZOS +# define GTEST_HAS_GETTIMEOFDAY_ 1 +# include // NOLINT + +// On z/OS we additionally need strings.h for strcasecmp. +# include // NOLINT + +#elif GTEST_OS_WINDOWS_MOBILE // We are on Windows CE. + +# include // NOLINT + +#elif GTEST_OS_WINDOWS // We are on Windows proper. + +# include // NOLINT +# include // NOLINT +# include // NOLINT +# include // NOLINT + +# if GTEST_OS_WINDOWS_MINGW +// MinGW has gettimeofday() but not _ftime64(). +// TODO(kenton@google.com): Use autoconf to detect availability of +// gettimeofday(). +// TODO(kenton@google.com): There are other ways to get the time on +// Windows, like GetTickCount() or GetSystemTimeAsFileTime(). MinGW +// supports these. consider using them instead. +# define GTEST_HAS_GETTIMEOFDAY_ 1 +# include // NOLINT +# endif // GTEST_OS_WINDOWS_MINGW + +// cpplint thinks that the header is already included, so we want to +// silence it. +# include // NOLINT + +#else + +// Assume other platforms have gettimeofday(). +// TODO(kenton@google.com): Use autoconf to detect availability of +// gettimeofday(). +# define GTEST_HAS_GETTIMEOFDAY_ 1 + +// cpplint thinks that the header is already included, so we want to +// silence it. +# include // NOLINT +# include // NOLINT + +#endif // GTEST_OS_LINUX + +#if GTEST_HAS_EXCEPTIONS +# include +#endif + +#if GTEST_CAN_STREAM_RESULTS_ +# include // NOLINT +# include // NOLINT +#endif + +// Indicates that this translation unit is part of Google Test's +// implementation. It must come before gtest-internal-inl.h is +// included, or there will be a compiler error. This trick is to +// prevent a user from accidentally including gtest-internal-inl.h in +// his code. +#define GTEST_IMPLEMENTATION_ 1 +// Copyright 2005, Google Inc. +// All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +// Utility functions and classes used by the Google C++ testing framework. +// +// Author: wan@google.com (Zhanyong Wan) +// +// This file contains purely Google Test's internal implementation. Please +// DO NOT #INCLUDE IT IN A USER PROGRAM. + +#ifndef GTEST_SRC_GTEST_INTERNAL_INL_H_ +#define GTEST_SRC_GTEST_INTERNAL_INL_H_ + +// GTEST_IMPLEMENTATION_ is defined to 1 iff the current translation unit is +// part of Google Test's implementation; otherwise it's undefined. +#if !GTEST_IMPLEMENTATION_ +// A user is trying to include this from his code - just say no. +# error "gtest-internal-inl.h is part of Google Test's internal implementation." +# error "It must not be included except by Google Test itself." +#endif // GTEST_IMPLEMENTATION_ + +#ifndef _WIN32_WCE +# include +#endif // !_WIN32_WCE +#include +#include // For strtoll/_strtoul64/malloc/free. +#include // For memmove. + +#include +#include +#include + + +#if GTEST_OS_WINDOWS +# include // NOLINT +#endif // GTEST_OS_WINDOWS + + +namespace testing { + +// Declares the flags. +// +// We don't want the users to modify this flag in the code, but want +// Google Test's own unit tests to be able to access it. Therefore we +// declare it here as opposed to in gtest.h. +GTEST_DECLARE_bool_(death_test_use_fork); + +namespace internal { + +// The value of GetTestTypeId() as seen from within the Google Test +// library. This is solely for testing GetTestTypeId(). +GTEST_API_ extern const TypeId kTestTypeIdInGoogleTest; + +// Names of the flags (needed for parsing Google Test flags). +const char kAlsoRunDisabledTestsFlag[] = "also_run_disabled_tests"; +const char kBreakOnFailureFlag[] = "break_on_failure"; +const char kCatchExceptionsFlag[] = "catch_exceptions"; +const char kColorFlag[] = "color"; +const char kFilterFlag[] = "filter"; +const char kListTestsFlag[] = "list_tests"; +const char kOutputFlag[] = "output"; +const char kPrintTimeFlag[] = "print_time"; +const char kRandomSeedFlag[] = "random_seed"; +const char kRepeatFlag[] = "repeat"; +const char kShuffleFlag[] = "shuffle"; +const char kStackTraceDepthFlag[] = "stack_trace_depth"; +const char kStreamResultToFlag[] = "stream_result_to"; +const char kThrowOnFailureFlag[] = "throw_on_failure"; + +// A valid random seed must be in [1, kMaxRandomSeed]. +const int kMaxRandomSeed = 99999; + +// g_help_flag is true iff the --help flag or an equivalent form is +// specified on the command line. +GTEST_API_ extern bool g_help_flag; + +// Returns the current time in milliseconds. +GTEST_API_ TimeInMillis GetTimeInMillis(); + +// Returns true iff Google Test should use colors in the output. +GTEST_API_ bool ShouldUseColor(bool stdout_is_tty); + +// Formats the given time in milliseconds as seconds. +GTEST_API_ std::string FormatTimeInMillisAsSeconds(TimeInMillis ms); + +// Converts the given time in milliseconds to a date string in the ISO 8601 +// format, without the timezone information. N.B.: due to the use the +// non-reentrant localtime() function, this function is not thread safe. Do +// not use it in any code that can be called from multiple threads. +GTEST_API_ std::string FormatEpochTimeInMillisAsIso8601(TimeInMillis ms); + +// Parses a string for an Int32 flag, in the form of "--flag=value". +// +// On success, stores the value of the flag in *value, and returns +// true. On failure, returns false without changing *value. +GTEST_API_ bool ParseInt32Flag( + const char* str, const char* flag, Int32* value); + +// Returns a random seed in range [1, kMaxRandomSeed] based on the +// given --gtest_random_seed flag value. +inline int GetRandomSeedFromFlag(Int32 random_seed_flag) { + const unsigned int raw_seed = (random_seed_flag == 0) ? + static_cast(GetTimeInMillis()) : + static_cast(random_seed_flag); + + // Normalizes the actual seed to range [1, kMaxRandomSeed] such that + // it's easy to type. + const int normalized_seed = + static_cast((raw_seed - 1U) % + static_cast(kMaxRandomSeed)) + 1; + return normalized_seed; +} + +// Returns the first valid random seed after 'seed'. The behavior is +// undefined if 'seed' is invalid. The seed after kMaxRandomSeed is +// considered to be 1. +inline int GetNextRandomSeed(int seed) { + GTEST_CHECK_(1 <= seed && seed <= kMaxRandomSeed) + << "Invalid random seed " << seed << " - must be in [1, " + << kMaxRandomSeed << "]."; + const int next_seed = seed + 1; + return (next_seed > kMaxRandomSeed) ? 1 : next_seed; +} + +// This class saves the values of all Google Test flags in its c'tor, and +// restores them in its d'tor. +class GTestFlagSaver { + public: + // The c'tor. + GTestFlagSaver() { + also_run_disabled_tests_ = GTEST_FLAG(also_run_disabled_tests); + break_on_failure_ = GTEST_FLAG(break_on_failure); + catch_exceptions_ = GTEST_FLAG(catch_exceptions); + color_ = GTEST_FLAG(color); + death_test_style_ = GTEST_FLAG(death_test_style); + death_test_use_fork_ = GTEST_FLAG(death_test_use_fork); + filter_ = GTEST_FLAG(filter); + internal_run_death_test_ = GTEST_FLAG(internal_run_death_test); + list_tests_ = GTEST_FLAG(list_tests); + output_ = GTEST_FLAG(output); + print_time_ = GTEST_FLAG(print_time); + random_seed_ = GTEST_FLAG(random_seed); + repeat_ = GTEST_FLAG(repeat); + shuffle_ = GTEST_FLAG(shuffle); + stack_trace_depth_ = GTEST_FLAG(stack_trace_depth); + stream_result_to_ = GTEST_FLAG(stream_result_to); + throw_on_failure_ = GTEST_FLAG(throw_on_failure); + } + + // The d'tor is not virtual. DO NOT INHERIT FROM THIS CLASS. + ~GTestFlagSaver() { + GTEST_FLAG(also_run_disabled_tests) = also_run_disabled_tests_; + GTEST_FLAG(break_on_failure) = break_on_failure_; + GTEST_FLAG(catch_exceptions) = catch_exceptions_; + GTEST_FLAG(color) = color_; + GTEST_FLAG(death_test_style) = death_test_style_; + GTEST_FLAG(death_test_use_fork) = death_test_use_fork_; + GTEST_FLAG(filter) = filter_; + GTEST_FLAG(internal_run_death_test) = internal_run_death_test_; + GTEST_FLAG(list_tests) = list_tests_; + GTEST_FLAG(output) = output_; + GTEST_FLAG(print_time) = print_time_; + GTEST_FLAG(random_seed) = random_seed_; + GTEST_FLAG(repeat) = repeat_; + GTEST_FLAG(shuffle) = shuffle_; + GTEST_FLAG(stack_trace_depth) = stack_trace_depth_; + GTEST_FLAG(stream_result_to) = stream_result_to_; + GTEST_FLAG(throw_on_failure) = throw_on_failure_; + } + + private: + // Fields for saving the original values of flags. + bool also_run_disabled_tests_; + bool break_on_failure_; + bool catch_exceptions_; + std::string color_; + std::string death_test_style_; + bool death_test_use_fork_; + std::string filter_; + std::string internal_run_death_test_; + bool list_tests_; + std::string output_; + bool print_time_; + bool pretty_; + internal::Int32 random_seed_; + internal::Int32 repeat_; + bool shuffle_; + internal::Int32 stack_trace_depth_; + std::string stream_result_to_; + bool throw_on_failure_; +} GTEST_ATTRIBUTE_UNUSED_; + +// Converts a Unicode code point to a narrow string in UTF-8 encoding. +// code_point parameter is of type UInt32 because wchar_t may not be +// wide enough to contain a code point. +// The output buffer str must containt at least 32 characters. +// The function returns the address of the output buffer. +// If the code_point is not a valid Unicode code point +// (i.e. outside of Unicode range U+0 to U+10FFFF) it will be output +// as '(Invalid Unicode 0xXXXXXXXX)'. +GTEST_API_ char* CodePointToUtf8(UInt32 code_point, char* str); + +// Converts a wide string to a narrow string in UTF-8 encoding. +// The wide string is assumed to have the following encoding: +// UTF-16 if sizeof(wchar_t) == 2 (on Windows, Cygwin, Symbian OS) +// UTF-32 if sizeof(wchar_t) == 4 (on Linux) +// Parameter str points to a null-terminated wide string. +// Parameter num_chars may additionally limit the number +// of wchar_t characters processed. -1 is used when the entire string +// should be processed. +// If the string contains code points that are not valid Unicode code points +// (i.e. outside of Unicode range U+0 to U+10FFFF) they will be output +// as '(Invalid Unicode 0xXXXXXXXX)'. If the string is in UTF16 encoding +// and contains invalid UTF-16 surrogate pairs, values in those pairs +// will be encoded as individual Unicode characters from Basic Normal Plane. +GTEST_API_ std::string WideStringToUtf8(const wchar_t* str, int num_chars); + +// Reads the GTEST_SHARD_STATUS_FILE environment variable, and creates the file +// if the variable is present. If a file already exists at this location, this +// function will write over it. If the variable is present, but the file cannot +// be created, prints an error and exits. +void WriteToShardStatusFileIfNeeded(); + +// Checks whether sharding is enabled by examining the relevant +// environment variable values. If the variables are present, +// but inconsistent (e.g., shard_index >= total_shards), prints +// an error and exits. If in_subprocess_for_death_test, sharding is +// disabled because it must only be applied to the original test +// process. Otherwise, we could filter out death tests we intended to execute. +GTEST_API_ bool ShouldShard(const char* total_shards_str, + const char* shard_index_str, + bool in_subprocess_for_death_test); + +// Parses the environment variable var as an Int32. If it is unset, +// returns default_val. If it is not an Int32, prints an error and +// and aborts. +GTEST_API_ Int32 Int32FromEnvOrDie(const char* env_var, Int32 default_val); + +// Given the total number of shards, the shard index, and the test id, +// returns true iff the test should be run on this shard. The test id is +// some arbitrary but unique non-negative integer assigned to each test +// method. Assumes that 0 <= shard_index < total_shards. +GTEST_API_ bool ShouldRunTestOnShard( + int total_shards, int shard_index, int test_id); + +// STL container utilities. + +// Returns the number of elements in the given container that satisfy +// the given predicate. +template +inline int CountIf(const Container& c, Predicate predicate) { + // Implemented as an explicit loop since std::count_if() in libCstd on + // Solaris has a non-standard signature. + int count = 0; + for (typename Container::const_iterator it = c.begin(); it != c.end(); ++it) { + if (predicate(*it)) + ++count; + } + return count; +} + +// Applies a function/functor to each element in the container. +template +void ForEach(const Container& c, Functor functor) { + std::for_each(c.begin(), c.end(), functor); +} + +// Returns the i-th element of the vector, or default_value if i is not +// in range [0, v.size()). +template +inline E GetElementOr(const std::vector& v, int i, E default_value) { + return (i < 0 || i >= static_cast(v.size())) ? default_value : v[i]; +} + +// Performs an in-place shuffle of a range of the vector's elements. +// 'begin' and 'end' are element indices as an STL-style range; +// i.e. [begin, end) are shuffled, where 'end' == size() means to +// shuffle to the end of the vector. +template +void ShuffleRange(internal::Random* random, int begin, int end, + std::vector* v) { + const int size = static_cast(v->size()); + GTEST_CHECK_(0 <= begin && begin <= size) + << "Invalid shuffle range start " << begin << ": must be in range [0, " + << size << "]."; + GTEST_CHECK_(begin <= end && end <= size) + << "Invalid shuffle range finish " << end << ": must be in range [" + << begin << ", " << size << "]."; + + // Fisher-Yates shuffle, from + // http://en.wikipedia.org/wiki/Fisher-Yates_shuffle + for (int range_width = end - begin; range_width >= 2; range_width--) { + const int last_in_range = begin + range_width - 1; + const int selected = begin + random->Generate(range_width); + std::swap((*v)[selected], (*v)[last_in_range]); + } +} + +// Performs an in-place shuffle of the vector's elements. +template +inline void Shuffle(internal::Random* random, std::vector* v) { + ShuffleRange(random, 0, static_cast(v->size()), v); +} + +// A function for deleting an object. Handy for being used as a +// functor. +template +static void Delete(T* x) { + delete x; +} + +// A predicate that checks the key of a TestProperty against a known key. +// +// TestPropertyKeyIs is copyable. +class TestPropertyKeyIs { + public: + // Constructor. + // + // TestPropertyKeyIs has NO default constructor. + explicit TestPropertyKeyIs(const char* key) + : key_(key) {} + + // Returns true iff the test name of test property matches on key_. + bool operator()(const TestProperty& test_property) const { + return test_property.key() == key_; + } + + private: + std::string key_; +}; + +// Class UnitTestOptions. +// +// This class contains functions for processing options the user +// specifies when running the tests. It has only static members. +// +// In most cases, the user can specify an option using either an +// environment variable or a command line flag. E.g. you can set the +// test filter using either GTEST_FILTER or --gtest_filter. If both +// the variable and the flag are present, the latter overrides the +// former. +class GTEST_API_ UnitTestOptions { + public: + // Functions for processing the gtest_output flag. + + // Returns the output format, or "" for normal printed output. + static std::string GetOutputFormat(); + + // Returns the absolute path of the requested output file, or the + // default (test_detail.xml in the original working directory) if + // none was explicitly specified. + static std::string GetAbsolutePathToOutputFile(); + + // Functions for processing the gtest_filter flag. + + // Returns true iff the wildcard pattern matches the string. The + // first ':' or '\0' character in pattern marks the end of it. + // + // This recursive algorithm isn't very efficient, but is clear and + // works well enough for matching test names, which are short. + static bool PatternMatchesString(const char *pattern, const char *str); + + // Returns true iff the user-specified filter matches the test case + // name and the test name. + static bool FilterMatchesTest(const std::string &test_case_name, + const std::string &test_name); + +#if GTEST_OS_WINDOWS + // Function for supporting the gtest_catch_exception flag. + + // Returns EXCEPTION_EXECUTE_HANDLER if Google Test should handle the + // given SEH exception, or EXCEPTION_CONTINUE_SEARCH otherwise. + // This function is useful as an __except condition. + static int GTestShouldProcessSEH(DWORD exception_code); +#endif // GTEST_OS_WINDOWS + + // Returns true if "name" matches the ':' separated list of glob-style + // filters in "filter". + static bool MatchesFilter(const std::string& name, const char* filter); +}; + +// Returns the current application's name, removing directory path if that +// is present. Used by UnitTestOptions::GetOutputFile. +GTEST_API_ FilePath GetCurrentExecutableName(); + +// The role interface for getting the OS stack trace as a string. +class OsStackTraceGetterInterface { + public: + OsStackTraceGetterInterface() {} + virtual ~OsStackTraceGetterInterface() {} + + // Returns the current OS stack trace as an std::string. Parameters: + // + // max_depth - the maximum number of stack frames to be included + // in the trace. + // skip_count - the number of top frames to be skipped; doesn't count + // against max_depth. + virtual string CurrentStackTrace(int max_depth, int skip_count) = 0; + + // UponLeavingGTest() should be called immediately before Google Test calls + // user code. It saves some information about the current stack that + // CurrentStackTrace() will use to find and hide Google Test stack frames. + virtual void UponLeavingGTest() = 0; + + private: + GTEST_DISALLOW_COPY_AND_ASSIGN_(OsStackTraceGetterInterface); +}; + +// A working implementation of the OsStackTraceGetterInterface interface. +class OsStackTraceGetter : public OsStackTraceGetterInterface { + public: + OsStackTraceGetter() : caller_frame_(NULL) {} + + virtual string CurrentStackTrace(int max_depth, int skip_count) + GTEST_LOCK_EXCLUDED_(mutex_); + + virtual void UponLeavingGTest() GTEST_LOCK_EXCLUDED_(mutex_); + + // This string is inserted in place of stack frames that are part of + // Google Test's implementation. + static const char* const kElidedFramesMarker; + + private: + Mutex mutex_; // protects all internal state + + // We save the stack frame below the frame that calls user code. + // We do this because the address of the frame immediately below + // the user code changes between the call to UponLeavingGTest() + // and any calls to CurrentStackTrace() from within the user code. + void* caller_frame_; + + GTEST_DISALLOW_COPY_AND_ASSIGN_(OsStackTraceGetter); +}; + +// Information about a Google Test trace point. +struct TraceInfo { + const char* file; + int line; + std::string message; +}; + +// This is the default global test part result reporter used in UnitTestImpl. +// This class should only be used by UnitTestImpl. +class DefaultGlobalTestPartResultReporter + : public TestPartResultReporterInterface { + public: + explicit DefaultGlobalTestPartResultReporter(UnitTestImpl* unit_test); + // Implements the TestPartResultReporterInterface. Reports the test part + // result in the current test. + virtual void ReportTestPartResult(const TestPartResult& result); + + private: + UnitTestImpl* const unit_test_; + + GTEST_DISALLOW_COPY_AND_ASSIGN_(DefaultGlobalTestPartResultReporter); +}; + +// This is the default per thread test part result reporter used in +// UnitTestImpl. This class should only be used by UnitTestImpl. +class DefaultPerThreadTestPartResultReporter + : public TestPartResultReporterInterface { + public: + explicit DefaultPerThreadTestPartResultReporter(UnitTestImpl* unit_test); + // Implements the TestPartResultReporterInterface. The implementation just + // delegates to the current global test part result reporter of *unit_test_. + virtual void ReportTestPartResult(const TestPartResult& result); + + private: + UnitTestImpl* const unit_test_; + + GTEST_DISALLOW_COPY_AND_ASSIGN_(DefaultPerThreadTestPartResultReporter); +}; + +// The private implementation of the UnitTest class. We don't protect +// the methods under a mutex, as this class is not accessible by a +// user and the UnitTest class that delegates work to this class does +// proper locking. +class GTEST_API_ UnitTestImpl { + public: + explicit UnitTestImpl(UnitTest* parent); + virtual ~UnitTestImpl(); + + // There are two different ways to register your own TestPartResultReporter. + // You can register your own repoter to listen either only for test results + // from the current thread or for results from all threads. + // By default, each per-thread test result repoter just passes a new + // TestPartResult to the global test result reporter, which registers the + // test part result for the currently running test. + + // Returns the global test part result reporter. + TestPartResultReporterInterface* GetGlobalTestPartResultReporter(); + + // Sets the global test part result reporter. + void SetGlobalTestPartResultReporter( + TestPartResultReporterInterface* reporter); + + // Returns the test part result reporter for the current thread. + TestPartResultReporterInterface* GetTestPartResultReporterForCurrentThread(); + + // Sets the test part result reporter for the current thread. + void SetTestPartResultReporterForCurrentThread( + TestPartResultReporterInterface* reporter); + + // Gets the number of successful test cases. + int successful_test_case_count() const; + + // Gets the number of failed test cases. + int failed_test_case_count() const; + + // Gets the number of all test cases. + int total_test_case_count() const; + + // Gets the number of all test cases that contain at least one test + // that should run. + int test_case_to_run_count() const; + + // Gets the number of successful tests. + int successful_test_count() const; + + // Gets the number of failed tests. + int failed_test_count() const; + + // Gets the number of disabled tests. + int disabled_test_count() const; + + // Gets the number of all tests. + int total_test_count() const; + + // Gets the number of tests that should run. + int test_to_run_count() const; + + // Gets the time of the test program start, in ms from the start of the + // UNIX epoch. + TimeInMillis start_timestamp() const { return start_timestamp_; } + + // Gets the elapsed time, in milliseconds. + TimeInMillis elapsed_time() const { return elapsed_time_; } + + // Returns true iff the unit test passed (i.e. all test cases passed). + bool Passed() const { return !Failed(); } + + // Returns true iff the unit test failed (i.e. some test case failed + // or something outside of all tests failed). + bool Failed() const { + return failed_test_case_count() > 0 || ad_hoc_test_result()->Failed(); + } + + // Gets the i-th test case among all the test cases. i can range from 0 to + // total_test_case_count() - 1. If i is not in that range, returns NULL. + const TestCase* GetTestCase(int i) const { + const int index = GetElementOr(test_case_indices_, i, -1); + return index < 0 ? NULL : test_cases_[i]; + } + + // Gets the i-th test case among all the test cases. i can range from 0 to + // total_test_case_count() - 1. If i is not in that range, returns NULL. + TestCase* GetMutableTestCase(int i) { + const int index = GetElementOr(test_case_indices_, i, -1); + return index < 0 ? NULL : test_cases_[index]; + } + + // Provides access to the event listener list. + TestEventListeners* listeners() { return &listeners_; } + + // Returns the TestResult for the test that's currently running, or + // the TestResult for the ad hoc test if no test is running. + TestResult* current_test_result(); + + // Returns the TestResult for the ad hoc test. + const TestResult* ad_hoc_test_result() const { return &ad_hoc_test_result_; } + + // Sets the OS stack trace getter. + // + // Does nothing if the input and the current OS stack trace getter + // are the same; otherwise, deletes the old getter and makes the + // input the current getter. + void set_os_stack_trace_getter(OsStackTraceGetterInterface* getter); + + // Returns the current OS stack trace getter if it is not NULL; + // otherwise, creates an OsStackTraceGetter, makes it the current + // getter, and returns it. + OsStackTraceGetterInterface* os_stack_trace_getter(); + + // Returns the current OS stack trace as an std::string. + // + // The maximum number of stack frames to be included is specified by + // the gtest_stack_trace_depth flag. The skip_count parameter + // specifies the number of top frames to be skipped, which doesn't + // count against the number of frames to be included. + // + // For example, if Foo() calls Bar(), which in turn calls + // CurrentOsStackTraceExceptTop(1), Foo() will be included in the + // trace but Bar() and CurrentOsStackTraceExceptTop() won't. + std::string CurrentOsStackTraceExceptTop(int skip_count) GTEST_NO_INLINE_; + + // Finds and returns a TestCase with the given name. If one doesn't + // exist, creates one and returns it. + // + // Arguments: + // + // test_case_name: name of the test case + // type_param: the name of the test's type parameter, or NULL if + // this is not a typed or a type-parameterized test. + // set_up_tc: pointer to the function that sets up the test case + // tear_down_tc: pointer to the function that tears down the test case + TestCase* GetTestCase(const char* test_case_name, + const char* type_param, + Test::SetUpTestCaseFunc set_up_tc, + Test::TearDownTestCaseFunc tear_down_tc); + + // Adds a TestInfo to the unit test. + // + // Arguments: + // + // set_up_tc: pointer to the function that sets up the test case + // tear_down_tc: pointer to the function that tears down the test case + // test_info: the TestInfo object + void AddTestInfo(Test::SetUpTestCaseFunc set_up_tc, + Test::TearDownTestCaseFunc tear_down_tc, + TestInfo* test_info) { + // In order to support thread-safe death tests, we need to + // remember the original working directory when the test program + // was first invoked. We cannot do this in RUN_ALL_TESTS(), as + // the user may have changed the current directory before calling + // RUN_ALL_TESTS(). Therefore we capture the current directory in + // AddTestInfo(), which is called to register a TEST or TEST_F + // before main() is reached. + if (original_working_dir_.IsEmpty()) { + original_working_dir_.Set(FilePath::GetCurrentDir()); + GTEST_CHECK_(!original_working_dir_.IsEmpty()) + << "Failed to get the current working directory."; + } + + GetTestCase(test_info->test_case_name(), + test_info->type_param(), + set_up_tc, + tear_down_tc)->AddTestInfo(test_info); + } + +#if GTEST_HAS_PARAM_TEST + // Returns ParameterizedTestCaseRegistry object used to keep track of + // value-parameterized tests and instantiate and register them. + internal::ParameterizedTestCaseRegistry& parameterized_test_registry() { + return parameterized_test_registry_; + } +#endif // GTEST_HAS_PARAM_TEST + + // Sets the TestCase object for the test that's currently running. + void set_current_test_case(TestCase* a_current_test_case) { + current_test_case_ = a_current_test_case; + } + + // Sets the TestInfo object for the test that's currently running. If + // current_test_info is NULL, the assertion results will be stored in + // ad_hoc_test_result_. + void set_current_test_info(TestInfo* a_current_test_info) { + current_test_info_ = a_current_test_info; + } + + // Registers all parameterized tests defined using TEST_P and + // INSTANTIATE_TEST_CASE_P, creating regular tests for each test/parameter + // combination. This method can be called more then once; it has guards + // protecting from registering the tests more then once. If + // value-parameterized tests are disabled, RegisterParameterizedTests is + // present but does nothing. + void RegisterParameterizedTests(); + + // Runs all tests in this UnitTest object, prints the result, and + // returns true if all tests are successful. If any exception is + // thrown during a test, this test is considered to be failed, but + // the rest of the tests will still be run. + bool RunAllTests(); + + // Clears the results of all tests, except the ad hoc tests. + void ClearNonAdHocTestResult() { + ForEach(test_cases_, TestCase::ClearTestCaseResult); + } + + // Clears the results of ad-hoc test assertions. + void ClearAdHocTestResult() { + ad_hoc_test_result_.Clear(); + } + + enum ReactionToSharding { + HONOR_SHARDING_PROTOCOL, + IGNORE_SHARDING_PROTOCOL + }; + + // Matches the full name of each test against the user-specified + // filter to decide whether the test should run, then records the + // result in each TestCase and TestInfo object. + // If shard_tests == HONOR_SHARDING_PROTOCOL, further filters tests + // based on sharding variables in the environment. + // Returns the number of tests that should run. + int FilterTests(ReactionToSharding shard_tests); + + // Prints the names of the tests matching the user-specified filter flag. + void ListTestsMatchingFilter(); + + const TestCase* current_test_case() const { return current_test_case_; } + TestInfo* current_test_info() { return current_test_info_; } + const TestInfo* current_test_info() const { return current_test_info_; } + + // Returns the vector of environments that need to be set-up/torn-down + // before/after the tests are run. + std::vector& environments() { return environments_; } + + // Getters for the per-thread Google Test trace stack. + std::vector& gtest_trace_stack() { + return *(gtest_trace_stack_.pointer()); + } + const std::vector& gtest_trace_stack() const { + return gtest_trace_stack_.get(); + } + +#if GTEST_HAS_DEATH_TEST + void InitDeathTestSubprocessControlInfo() { + internal_run_death_test_flag_.reset(ParseInternalRunDeathTestFlag()); + } + // Returns a pointer to the parsed --gtest_internal_run_death_test + // flag, or NULL if that flag was not specified. + // This information is useful only in a death test child process. + // Must not be called before a call to InitGoogleTest. + const InternalRunDeathTestFlag* internal_run_death_test_flag() const { + return internal_run_death_test_flag_.get(); + } + + // Returns a pointer to the current death test factory. + internal::DeathTestFactory* death_test_factory() { + return death_test_factory_.get(); + } + + void SuppressTestEventsIfInSubprocess(); + + friend class ReplaceDeathTestFactory; +#endif // GTEST_HAS_DEATH_TEST + + // Initializes the event listener performing XML output as specified by + // UnitTestOptions. Must not be called before InitGoogleTest. + void ConfigureXmlOutput(); + +#if GTEST_CAN_STREAM_RESULTS_ + // Initializes the event listener for streaming test results to a socket. + // Must not be called before InitGoogleTest. + void ConfigureStreamingOutput(); +#endif + + // Performs initialization dependent upon flag values obtained in + // ParseGoogleTestFlagsOnly. Is called from InitGoogleTest after the call to + // ParseGoogleTestFlagsOnly. In case a user neglects to call InitGoogleTest + // this function is also called from RunAllTests. Since this function can be + // called more than once, it has to be idempotent. + void PostFlagParsingInit(); + + // Gets the random seed used at the start of the current test iteration. + int random_seed() const { return random_seed_; } + + // Gets the random number generator. + internal::Random* random() { return &random_; } + + // Shuffles all test cases, and the tests within each test case, + // making sure that death tests are still run first. + void ShuffleTests(); + + // Restores the test cases and tests to their order before the first shuffle. + void UnshuffleTests(); + + // Returns the value of GTEST_FLAG(catch_exceptions) at the moment + // UnitTest::Run() starts. + bool catch_exceptions() const { return catch_exceptions_; } + + private: + friend class ::testing::UnitTest; + + // Used by UnitTest::Run() to capture the state of + // GTEST_FLAG(catch_exceptions) at the moment it starts. + void set_catch_exceptions(bool value) { catch_exceptions_ = value; } + + // The UnitTest object that owns this implementation object. + UnitTest* const parent_; + + // The working directory when the first TEST() or TEST_F() was + // executed. + internal::FilePath original_working_dir_; + + // The default test part result reporters. + DefaultGlobalTestPartResultReporter default_global_test_part_result_reporter_; + DefaultPerThreadTestPartResultReporter + default_per_thread_test_part_result_reporter_; + + // Points to (but doesn't own) the global test part result reporter. + TestPartResultReporterInterface* global_test_part_result_repoter_; + + // Protects read and write access to global_test_part_result_reporter_. + internal::Mutex global_test_part_result_reporter_mutex_; + + // Points to (but doesn't own) the per-thread test part result reporter. + internal::ThreadLocal + per_thread_test_part_result_reporter_; + + // The vector of environments that need to be set-up/torn-down + // before/after the tests are run. + std::vector environments_; + + // The vector of TestCases in their original order. It owns the + // elements in the vector. + std::vector test_cases_; + + // Provides a level of indirection for the test case list to allow + // easy shuffling and restoring the test case order. The i-th + // element of this vector is the index of the i-th test case in the + // shuffled order. + std::vector test_case_indices_; + +#if GTEST_HAS_PARAM_TEST + // ParameterizedTestRegistry object used to register value-parameterized + // tests. + internal::ParameterizedTestCaseRegistry parameterized_test_registry_; + + // Indicates whether RegisterParameterizedTests() has been called already. + bool parameterized_tests_registered_; +#endif // GTEST_HAS_PARAM_TEST + + // Index of the last death test case registered. Initially -1. + int last_death_test_case_; + + // This points to the TestCase for the currently running test. It + // changes as Google Test goes through one test case after another. + // When no test is running, this is set to NULL and Google Test + // stores assertion results in ad_hoc_test_result_. Initially NULL. + TestCase* current_test_case_; + + // This points to the TestInfo for the currently running test. It + // changes as Google Test goes through one test after another. When + // no test is running, this is set to NULL and Google Test stores + // assertion results in ad_hoc_test_result_. Initially NULL. + TestInfo* current_test_info_; + + // Normally, a user only writes assertions inside a TEST or TEST_F, + // or inside a function called by a TEST or TEST_F. Since Google + // Test keeps track of which test is current running, it can + // associate such an assertion with the test it belongs to. + // + // If an assertion is encountered when no TEST or TEST_F is running, + // Google Test attributes the assertion result to an imaginary "ad hoc" + // test, and records the result in ad_hoc_test_result_. + TestResult ad_hoc_test_result_; + + // The list of event listeners that can be used to track events inside + // Google Test. + TestEventListeners listeners_; + + // The OS stack trace getter. Will be deleted when the UnitTest + // object is destructed. By default, an OsStackTraceGetter is used, + // but the user can set this field to use a custom getter if that is + // desired. + OsStackTraceGetterInterface* os_stack_trace_getter_; + + // True iff PostFlagParsingInit() has been called. + bool post_flag_parse_init_performed_; + + // The random number seed used at the beginning of the test run. + int random_seed_; + + // Our random number generator. + internal::Random random_; + + // The time of the test program start, in ms from the start of the + // UNIX epoch. + TimeInMillis start_timestamp_; + + // How long the test took to run, in milliseconds. + TimeInMillis elapsed_time_; + +#if GTEST_HAS_DEATH_TEST + // The decomposed components of the gtest_internal_run_death_test flag, + // parsed when RUN_ALL_TESTS is called. + internal::scoped_ptr internal_run_death_test_flag_; + internal::scoped_ptr death_test_factory_; +#endif // GTEST_HAS_DEATH_TEST + + // A per-thread stack of traces created by the SCOPED_TRACE() macro. + internal::ThreadLocal > gtest_trace_stack_; + + // The value of GTEST_FLAG(catch_exceptions) at the moment RunAllTests() + // starts. + bool catch_exceptions_; + + GTEST_DISALLOW_COPY_AND_ASSIGN_(UnitTestImpl); +}; // class UnitTestImpl + +// Convenience function for accessing the global UnitTest +// implementation object. +inline UnitTestImpl* GetUnitTestImpl() { + return UnitTest::GetInstance()->impl(); +} + +#if GTEST_USES_SIMPLE_RE + +// Internal helper functions for implementing the simple regular +// expression matcher. +GTEST_API_ bool IsInSet(char ch, const char* str); +GTEST_API_ bool IsAsciiDigit(char ch); +GTEST_API_ bool IsAsciiPunct(char ch); +GTEST_API_ bool IsRepeat(char ch); +GTEST_API_ bool IsAsciiWhiteSpace(char ch); +GTEST_API_ bool IsAsciiWordChar(char ch); +GTEST_API_ bool IsValidEscape(char ch); +GTEST_API_ bool AtomMatchesChar(bool escaped, char pattern, char ch); +GTEST_API_ bool ValidateRegex(const char* regex); +GTEST_API_ bool MatchRegexAtHead(const char* regex, const char* str); +GTEST_API_ bool MatchRepetitionAndRegexAtHead( + bool escaped, char ch, char repeat, const char* regex, const char* str); +GTEST_API_ bool MatchRegexAnywhere(const char* regex, const char* str); + +#endif // GTEST_USES_SIMPLE_RE + +// Parses the command line for Google Test flags, without initializing +// other parts of Google Test. +GTEST_API_ void ParseGoogleTestFlagsOnly(int* argc, char** argv); +GTEST_API_ void ParseGoogleTestFlagsOnly(int* argc, wchar_t** argv); + +#if GTEST_HAS_DEATH_TEST + +// Returns the message describing the last system error, regardless of the +// platform. +GTEST_API_ std::string GetLastErrnoDescription(); + +# if GTEST_OS_WINDOWS +// Provides leak-safe Windows kernel handle ownership. +class AutoHandle { + public: + AutoHandle() : handle_(INVALID_HANDLE_VALUE) {} + explicit AutoHandle(HANDLE handle) : handle_(handle) {} + + ~AutoHandle() { Reset(); } + + HANDLE Get() const { return handle_; } + void Reset() { Reset(INVALID_HANDLE_VALUE); } + void Reset(HANDLE handle) { + if (handle != handle_) { + if (handle_ != INVALID_HANDLE_VALUE) + ::CloseHandle(handle_); + handle_ = handle; + } + } + + private: + HANDLE handle_; + + GTEST_DISALLOW_COPY_AND_ASSIGN_(AutoHandle); +}; +# endif // GTEST_OS_WINDOWS + +// Attempts to parse a string into a positive integer pointed to by the +// number parameter. Returns true if that is possible. +// GTEST_HAS_DEATH_TEST implies that we have ::std::string, so we can use +// it here. +template +bool ParseNaturalNumber(const ::std::string& str, Integer* number) { + // Fail fast if the given string does not begin with a digit; + // this bypasses strtoXXX's "optional leading whitespace and plus + // or minus sign" semantics, which are undesirable here. + if (str.empty() || !IsDigit(str[0])) { + return false; + } + errno = 0; + + char* end; + // BiggestConvertible is the largest integer type that system-provided + // string-to-number conversion routines can return. + +# if GTEST_OS_WINDOWS && !defined(__GNUC__) + + // MSVC and C++ Builder define __int64 instead of the standard long long. + typedef unsigned __int64 BiggestConvertible; + const BiggestConvertible parsed = _strtoui64(str.c_str(), &end, 10); + +# else + + typedef unsigned long long BiggestConvertible; // NOLINT + const BiggestConvertible parsed = strtoull(str.c_str(), &end, 10); + +# endif // GTEST_OS_WINDOWS && !defined(__GNUC__) + + const bool parse_success = *end == '\0' && errno == 0; + + // TODO(vladl@google.com): Convert this to compile time assertion when it is + // available. + GTEST_CHECK_(sizeof(Integer) <= sizeof(parsed)); + + const Integer result = static_cast(parsed); + if (parse_success && static_cast(result) == parsed) { + *number = result; + return true; + } + return false; +} +#endif // GTEST_HAS_DEATH_TEST + +// TestResult contains some private methods that should be hidden from +// Google Test user but are required for testing. This class allow our tests +// to access them. +// +// This class is supplied only for the purpose of testing Google Test's own +// constructs. Do not use it in user tests, either directly or indirectly. +class TestResultAccessor { + public: + static void RecordProperty(TestResult* test_result, + const TestProperty& property) { + test_result->RecordProperty(property); + } + + static void ClearTestPartResults(TestResult* test_result) { + test_result->ClearTestPartResults(); + } + + static const std::vector& test_part_results( + const TestResult& test_result) { + return test_result.test_part_results(); + } +}; + +} // namespace internal +} // namespace testing + +#endif // GTEST_SRC_GTEST_INTERNAL_INL_H_ +#undef GTEST_IMPLEMENTATION_ + +#if GTEST_OS_WINDOWS +# define vsnprintf _vsnprintf +#endif // GTEST_OS_WINDOWS + +namespace testing { + +using internal::CountIf; +using internal::ForEach; +using internal::GetElementOr; +using internal::Shuffle; + +// Constants. + +// A test whose test case name or test name matches this filter is +// disabled and not run. +static const char kDisableTestFilter[] = "DISABLED_*:*/DISABLED_*"; + +// A test case whose name matches this filter is considered a death +// test case and will be run before test cases whose name doesn't +// match this filter. +static const char kDeathTestCaseFilter[] = "*DeathTest:*DeathTest/*"; + +// A test filter that matches everything. +static const char kUniversalFilter[] = "*"; + +// The default output file for XML output. +static const char kDefaultOutputFile[] = "test_detail.xml"; + +// The environment variable name for the test shard index. +static const char kTestShardIndex[] = "GTEST_SHARD_INDEX"; +// The environment variable name for the total number of test shards. +static const char kTestTotalShards[] = "GTEST_TOTAL_SHARDS"; +// The environment variable name for the test shard status file. +static const char kTestShardStatusFile[] = "GTEST_SHARD_STATUS_FILE"; + +namespace internal { + +// The text used in failure messages to indicate the start of the +// stack trace. +const char kStackTraceMarker[] = "\nStack trace:\n"; + +// g_help_flag is true iff the --help flag or an equivalent form is +// specified on the command line. +bool g_help_flag = false; + +} // namespace internal + +GTEST_DEFINE_bool_( + also_run_disabled_tests, + internal::BoolFromGTestEnv("also_run_disabled_tests", false), + "Run disabled tests too, in addition to the tests normally being run."); + +GTEST_DEFINE_bool_( + break_on_failure, + internal::BoolFromGTestEnv("break_on_failure", false), + "True iff a failed assertion should be a debugger break-point."); + +GTEST_DEFINE_bool_( + catch_exceptions, + internal::BoolFromGTestEnv("catch_exceptions", true), + "True iff " GTEST_NAME_ + " should catch exceptions and treat them as test failures."); + +GTEST_DEFINE_string_( + color, + internal::StringFromGTestEnv("color", "auto"), + "Whether to use colors in the output. Valid values: yes, no, " + "and auto. 'auto' means to use colors if the output is " + "being sent to a terminal and the TERM environment variable " + "is set to xterm, xterm-color, xterm-256color, linux or cygwin."); + +GTEST_DEFINE_string_( + filter, + internal::StringFromGTestEnv("filter", kUniversalFilter), + "A colon-separated list of glob (not regex) patterns " + "for filtering the tests to run, optionally followed by a " + "'-' and a : separated list of negative patterns (tests to " + "exclude). A test is run if it matches one of the positive " + "patterns and does not match any of the negative patterns."); + +GTEST_DEFINE_bool_(list_tests, false, + "List all tests without running them."); + +GTEST_DEFINE_string_( + output, + internal::StringFromGTestEnv("output", ""), + "A format (currently must be \"xml\"), optionally followed " + "by a colon and an output file name or directory. A directory " + "is indicated by a trailing pathname separator. " + "Examples: \"xml:filename.xml\", \"xml::directoryname/\". " + "If a directory is specified, output files will be created " + "within that directory, with file-names based on the test " + "executable's name and, if necessary, made unique by adding " + "digits."); + +GTEST_DEFINE_bool_( + print_time, + internal::BoolFromGTestEnv("print_time", true), + "True iff " GTEST_NAME_ + " should display elapsed time in text output."); + +GTEST_DEFINE_int32_( + random_seed, + internal::Int32FromGTestEnv("random_seed", 0), + "Random number seed to use when shuffling test orders. Must be in range " + "[1, 99999], or 0 to use a seed based on the current time."); + +GTEST_DEFINE_int32_( + repeat, + internal::Int32FromGTestEnv("repeat", 1), + "How many times to repeat each test. Specify a negative number " + "for repeating forever. Useful for shaking out flaky tests."); + +GTEST_DEFINE_bool_( + show_internal_stack_frames, false, + "True iff " GTEST_NAME_ " should include internal stack frames when " + "printing test failure stack traces."); + +GTEST_DEFINE_bool_( + shuffle, + internal::BoolFromGTestEnv("shuffle", false), + "True iff " GTEST_NAME_ + " should randomize tests' order on every run."); + +GTEST_DEFINE_int32_( + stack_trace_depth, + internal::Int32FromGTestEnv("stack_trace_depth", kMaxStackTraceDepth), + "The maximum number of stack frames to print when an " + "assertion fails. The valid range is 0 through 100, inclusive."); + +GTEST_DEFINE_string_( + stream_result_to, + internal::StringFromGTestEnv("stream_result_to", ""), + "This flag specifies the host name and the port number on which to stream " + "test results. Example: \"localhost:555\". The flag is effective only on " + "Linux."); + +GTEST_DEFINE_bool_( + throw_on_failure, + internal::BoolFromGTestEnv("throw_on_failure", false), + "When this flag is specified, a failed assertion will throw an exception " + "if exceptions are enabled or exit the program with a non-zero code " + "otherwise."); + +namespace internal { + +// Generates a random number from [0, range), using a Linear +// Congruential Generator (LCG). Crashes if 'range' is 0 or greater +// than kMaxRange. +UInt32 Random::Generate(UInt32 range) { + // These constants are the same as are used in glibc's rand(3). + state_ = (1103515245U*state_ + 12345U) % kMaxRange; + + GTEST_CHECK_(range > 0) + << "Cannot generate a number in the range [0, 0)."; + GTEST_CHECK_(range <= kMaxRange) + << "Generation of a number in [0, " << range << ") was requested, " + << "but this can only generate numbers in [0, " << kMaxRange << ")."; + + // Converting via modulus introduces a bit of downward bias, but + // it's simple, and a linear congruential generator isn't too good + // to begin with. + return state_ % range; +} + +// GTestIsInitialized() returns true iff the user has initialized +// Google Test. Useful for catching the user mistake of not initializing +// Google Test before calling RUN_ALL_TESTS(). +// +// A user must call testing::InitGoogleTest() to initialize Google +// Test. g_init_gtest_count is set to the number of times +// InitGoogleTest() has been called. We don't protect this variable +// under a mutex as it is only accessed in the main thread. +GTEST_API_ int g_init_gtest_count = 0; +static bool GTestIsInitialized() { return g_init_gtest_count != 0; } + +// Iterates over a vector of TestCases, keeping a running sum of the +// results of calling a given int-returning method on each. +// Returns the sum. +static int SumOverTestCaseList(const std::vector& case_list, + int (TestCase::*method)() const) { + int sum = 0; + for (size_t i = 0; i < case_list.size(); i++) { + sum += (case_list[i]->*method)(); + } + return sum; +} + +// Returns true iff the test case passed. +static bool TestCasePassed(const TestCase* test_case) { + return test_case->should_run() && test_case->Passed(); +} + +// Returns true iff the test case failed. +static bool TestCaseFailed(const TestCase* test_case) { + return test_case->should_run() && test_case->Failed(); +} + +// Returns true iff test_case contains at least one test that should +// run. +static bool ShouldRunTestCase(const TestCase* test_case) { + return test_case->should_run(); +} + +// AssertHelper constructor. +AssertHelper::AssertHelper(TestPartResult::Type type, + const char* file, + int line, + const char* message) + : data_(new AssertHelperData(type, file, line, message)) { +} + +AssertHelper::~AssertHelper() { + delete data_; +} + +// Message assignment, for assertion streaming support. +void AssertHelper::operator=(const Message& message) const { + UnitTest::GetInstance()-> + AddTestPartResult(data_->type, data_->file, data_->line, + AppendUserMessage(data_->message, message), + UnitTest::GetInstance()->impl() + ->CurrentOsStackTraceExceptTop(1) + // Skips the stack frame for this function itself. + ); // NOLINT +} + +// Mutex for linked pointers. +GTEST_API_ GTEST_DEFINE_STATIC_MUTEX_(g_linked_ptr_mutex); + +// Application pathname gotten in InitGoogleTest. +std::string g_executable_path; + +// Returns the current application's name, removing directory path if that +// is present. +FilePath GetCurrentExecutableName() { + FilePath result; + +#if GTEST_OS_WINDOWS + result.Set(FilePath(g_executable_path).RemoveExtension("exe")); +#else + result.Set(FilePath(g_executable_path)); +#endif // GTEST_OS_WINDOWS + + return result.RemoveDirectoryName(); +} + +// Functions for processing the gtest_output flag. + +// Returns the output format, or "" for normal printed output. +std::string UnitTestOptions::GetOutputFormat() { + const char* const gtest_output_flag = GTEST_FLAG(output).c_str(); + if (gtest_output_flag == NULL) return std::string(""); + + const char* const colon = strchr(gtest_output_flag, ':'); + return (colon == NULL) ? + std::string(gtest_output_flag) : + std::string(gtest_output_flag, colon - gtest_output_flag); +} + +// Returns the name of the requested output file, or the default if none +// was explicitly specified. +std::string UnitTestOptions::GetAbsolutePathToOutputFile() { + const char* const gtest_output_flag = GTEST_FLAG(output).c_str(); + if (gtest_output_flag == NULL) + return ""; + + const char* const colon = strchr(gtest_output_flag, ':'); + if (colon == NULL) + return internal::FilePath::ConcatPaths( + internal::FilePath( + UnitTest::GetInstance()->original_working_dir()), + internal::FilePath(kDefaultOutputFile)).string(); + + internal::FilePath output_name(colon + 1); + if (!output_name.IsAbsolutePath()) + // TODO(wan@google.com): on Windows \some\path is not an absolute + // path (as its meaning depends on the current drive), yet the + // following logic for turning it into an absolute path is wrong. + // Fix it. + output_name = internal::FilePath::ConcatPaths( + internal::FilePath(UnitTest::GetInstance()->original_working_dir()), + internal::FilePath(colon + 1)); + + if (!output_name.IsDirectory()) + return output_name.string(); + + internal::FilePath result(internal::FilePath::GenerateUniqueFileName( + output_name, internal::GetCurrentExecutableName(), + GetOutputFormat().c_str())); + return result.string(); +} + +// Returns true iff the wildcard pattern matches the string. The +// first ':' or '\0' character in pattern marks the end of it. +// +// This recursive algorithm isn't very efficient, but is clear and +// works well enough for matching test names, which are short. +bool UnitTestOptions::PatternMatchesString(const char *pattern, + const char *str) { + switch (*pattern) { + case '\0': + case ':': // Either ':' or '\0' marks the end of the pattern. + return *str == '\0'; + case '?': // Matches any single character. + return *str != '\0' && PatternMatchesString(pattern + 1, str + 1); + case '*': // Matches any string (possibly empty) of characters. + return (*str != '\0' && PatternMatchesString(pattern, str + 1)) || + PatternMatchesString(pattern + 1, str); + default: // Non-special character. Matches itself. + return *pattern == *str && + PatternMatchesString(pattern + 1, str + 1); + } +} + +bool UnitTestOptions::MatchesFilter( + const std::string& name, const char* filter) { + const char *cur_pattern = filter; + for (;;) { + if (PatternMatchesString(cur_pattern, name.c_str())) { + return true; + } + + // Finds the next pattern in the filter. + cur_pattern = strchr(cur_pattern, ':'); + + // Returns if no more pattern can be found. + if (cur_pattern == NULL) { + return false; + } + + // Skips the pattern separater (the ':' character). + cur_pattern++; + } +} + +// Returns true iff the user-specified filter matches the test case +// name and the test name. +bool UnitTestOptions::FilterMatchesTest(const std::string &test_case_name, + const std::string &test_name) { + const std::string& full_name = test_case_name + "." + test_name.c_str(); + + // Split --gtest_filter at '-', if there is one, to separate into + // positive filter and negative filter portions + const char* const p = GTEST_FLAG(filter).c_str(); + const char* const dash = strchr(p, '-'); + std::string positive; + std::string negative; + if (dash == NULL) { + positive = GTEST_FLAG(filter).c_str(); // Whole string is a positive filter + negative = ""; + } else { + positive = std::string(p, dash); // Everything up to the dash + negative = std::string(dash + 1); // Everything after the dash + if (positive.empty()) { + // Treat '-test1' as the same as '*-test1' + positive = kUniversalFilter; + } + } + + // A filter is a colon-separated list of patterns. It matches a + // test if any pattern in it matches the test. + return (MatchesFilter(full_name, positive.c_str()) && + !MatchesFilter(full_name, negative.c_str())); +} + +#if GTEST_HAS_SEH +// Returns EXCEPTION_EXECUTE_HANDLER if Google Test should handle the +// given SEH exception, or EXCEPTION_CONTINUE_SEARCH otherwise. +// This function is useful as an __except condition. +int UnitTestOptions::GTestShouldProcessSEH(DWORD exception_code) { + // Google Test should handle a SEH exception if: + // 1. the user wants it to, AND + // 2. this is not a breakpoint exception, AND + // 3. this is not a C++ exception (VC++ implements them via SEH, + // apparently). + // + // SEH exception code for C++ exceptions. + // (see http://support.microsoft.com/kb/185294 for more information). + const DWORD kCxxExceptionCode = 0xe06d7363; + + bool should_handle = true; + + if (!GTEST_FLAG(catch_exceptions)) + should_handle = false; + else if (exception_code == EXCEPTION_BREAKPOINT) + should_handle = false; + else if (exception_code == kCxxExceptionCode) + should_handle = false; + + return should_handle ? EXCEPTION_EXECUTE_HANDLER : EXCEPTION_CONTINUE_SEARCH; +} +#endif // GTEST_HAS_SEH + +} // namespace internal + +// The c'tor sets this object as the test part result reporter used by +// Google Test. The 'result' parameter specifies where to report the +// results. Intercepts only failures from the current thread. +ScopedFakeTestPartResultReporter::ScopedFakeTestPartResultReporter( + TestPartResultArray* result) + : intercept_mode_(INTERCEPT_ONLY_CURRENT_THREAD), + result_(result) { + Init(); +} + +// The c'tor sets this object as the test part result reporter used by +// Google Test. The 'result' parameter specifies where to report the +// results. +ScopedFakeTestPartResultReporter::ScopedFakeTestPartResultReporter( + InterceptMode intercept_mode, TestPartResultArray* result) + : intercept_mode_(intercept_mode), + result_(result) { + Init(); +} + +void ScopedFakeTestPartResultReporter::Init() { + internal::UnitTestImpl* const impl = internal::GetUnitTestImpl(); + if (intercept_mode_ == INTERCEPT_ALL_THREADS) { + old_reporter_ = impl->GetGlobalTestPartResultReporter(); + impl->SetGlobalTestPartResultReporter(this); + } else { + old_reporter_ = impl->GetTestPartResultReporterForCurrentThread(); + impl->SetTestPartResultReporterForCurrentThread(this); + } +} + +// The d'tor restores the test part result reporter used by Google Test +// before. +ScopedFakeTestPartResultReporter::~ScopedFakeTestPartResultReporter() { + internal::UnitTestImpl* const impl = internal::GetUnitTestImpl(); + if (intercept_mode_ == INTERCEPT_ALL_THREADS) { + impl->SetGlobalTestPartResultReporter(old_reporter_); + } else { + impl->SetTestPartResultReporterForCurrentThread(old_reporter_); + } +} + +// Increments the test part result count and remembers the result. +// This method is from the TestPartResultReporterInterface interface. +void ScopedFakeTestPartResultReporter::ReportTestPartResult( + const TestPartResult& result) { + result_->Append(result); +} + +namespace internal { + +// Returns the type ID of ::testing::Test. We should always call this +// instead of GetTypeId< ::testing::Test>() to get the type ID of +// testing::Test. This is to work around a suspected linker bug when +// using Google Test as a framework on Mac OS X. The bug causes +// GetTypeId< ::testing::Test>() to return different values depending +// on whether the call is from the Google Test framework itself or +// from user test code. GetTestTypeId() is guaranteed to always +// return the same value, as it always calls GetTypeId<>() from the +// gtest.cc, which is within the Google Test framework. +TypeId GetTestTypeId() { + return GetTypeId(); +} + +// The value of GetTestTypeId() as seen from within the Google Test +// library. This is solely for testing GetTestTypeId(). +extern const TypeId kTestTypeIdInGoogleTest = GetTestTypeId(); + +// This predicate-formatter checks that 'results' contains a test part +// failure of the given type and that the failure message contains the +// given substring. +AssertionResult HasOneFailure(const char* /* results_expr */, + const char* /* type_expr */, + const char* /* substr_expr */, + const TestPartResultArray& results, + TestPartResult::Type type, + const string& substr) { + const std::string expected(type == TestPartResult::kFatalFailure ? + "1 fatal failure" : + "1 non-fatal failure"); + Message msg; + if (results.size() != 1) { + msg << "Expected: " << expected << "\n" + << " Actual: " << results.size() << " failures"; + for (int i = 0; i < results.size(); i++) { + msg << "\n" << results.GetTestPartResult(i); + } + return AssertionFailure() << msg; + } + + const TestPartResult& r = results.GetTestPartResult(0); + if (r.type() != type) { + return AssertionFailure() << "Expected: " << expected << "\n" + << " Actual:\n" + << r; + } + + if (strstr(r.message(), substr.c_str()) == NULL) { + return AssertionFailure() << "Expected: " << expected << " containing \"" + << substr << "\"\n" + << " Actual:\n" + << r; + } + + return AssertionSuccess(); +} + +// The constructor of SingleFailureChecker remembers where to look up +// test part results, what type of failure we expect, and what +// substring the failure message should contain. +SingleFailureChecker:: SingleFailureChecker( + const TestPartResultArray* results, + TestPartResult::Type type, + const string& substr) + : results_(results), + type_(type), + substr_(substr) {} + +// The destructor of SingleFailureChecker verifies that the given +// TestPartResultArray contains exactly one failure that has the given +// type and contains the given substring. If that's not the case, a +// non-fatal failure will be generated. +SingleFailureChecker::~SingleFailureChecker() { + EXPECT_PRED_FORMAT3(HasOneFailure, *results_, type_, substr_); +} + +DefaultGlobalTestPartResultReporter::DefaultGlobalTestPartResultReporter( + UnitTestImpl* unit_test) : unit_test_(unit_test) {} + +void DefaultGlobalTestPartResultReporter::ReportTestPartResult( + const TestPartResult& result) { + unit_test_->current_test_result()->AddTestPartResult(result); + unit_test_->listeners()->repeater()->OnTestPartResult(result); +} + +DefaultPerThreadTestPartResultReporter::DefaultPerThreadTestPartResultReporter( + UnitTestImpl* unit_test) : unit_test_(unit_test) {} + +void DefaultPerThreadTestPartResultReporter::ReportTestPartResult( + const TestPartResult& result) { + unit_test_->GetGlobalTestPartResultReporter()->ReportTestPartResult(result); +} + +// Returns the global test part result reporter. +TestPartResultReporterInterface* +UnitTestImpl::GetGlobalTestPartResultReporter() { + internal::MutexLock lock(&global_test_part_result_reporter_mutex_); + return global_test_part_result_repoter_; +} + +// Sets the global test part result reporter. +void UnitTestImpl::SetGlobalTestPartResultReporter( + TestPartResultReporterInterface* reporter) { + internal::MutexLock lock(&global_test_part_result_reporter_mutex_); + global_test_part_result_repoter_ = reporter; +} + +// Returns the test part result reporter for the current thread. +TestPartResultReporterInterface* +UnitTestImpl::GetTestPartResultReporterForCurrentThread() { + return per_thread_test_part_result_reporter_.get(); +} + +// Sets the test part result reporter for the current thread. +void UnitTestImpl::SetTestPartResultReporterForCurrentThread( + TestPartResultReporterInterface* reporter) { + per_thread_test_part_result_reporter_.set(reporter); +} + +// Gets the number of successful test cases. +int UnitTestImpl::successful_test_case_count() const { + return CountIf(test_cases_, TestCasePassed); +} + +// Gets the number of failed test cases. +int UnitTestImpl::failed_test_case_count() const { + return CountIf(test_cases_, TestCaseFailed); +} + +// Gets the number of all test cases. +int UnitTestImpl::total_test_case_count() const { + return static_cast(test_cases_.size()); +} + +// Gets the number of all test cases that contain at least one test +// that should run. +int UnitTestImpl::test_case_to_run_count() const { + return CountIf(test_cases_, ShouldRunTestCase); +} + +// Gets the number of successful tests. +int UnitTestImpl::successful_test_count() const { + return SumOverTestCaseList(test_cases_, &TestCase::successful_test_count); +} + +// Gets the number of failed tests. +int UnitTestImpl::failed_test_count() const { + return SumOverTestCaseList(test_cases_, &TestCase::failed_test_count); +} + +// Gets the number of disabled tests. +int UnitTestImpl::disabled_test_count() const { + return SumOverTestCaseList(test_cases_, &TestCase::disabled_test_count); +} + +// Gets the number of all tests. +int UnitTestImpl::total_test_count() const { + return SumOverTestCaseList(test_cases_, &TestCase::total_test_count); +} + +// Gets the number of tests that should run. +int UnitTestImpl::test_to_run_count() const { + return SumOverTestCaseList(test_cases_, &TestCase::test_to_run_count); +} + +// Returns the current OS stack trace as an std::string. +// +// The maximum number of stack frames to be included is specified by +// the gtest_stack_trace_depth flag. The skip_count parameter +// specifies the number of top frames to be skipped, which doesn't +// count against the number of frames to be included. +// +// For example, if Foo() calls Bar(), which in turn calls +// CurrentOsStackTraceExceptTop(1), Foo() will be included in the +// trace but Bar() and CurrentOsStackTraceExceptTop() won't. +std::string UnitTestImpl::CurrentOsStackTraceExceptTop(int skip_count) { + (void)skip_count; + return ""; +} + +// Returns the current time in milliseconds. +TimeInMillis GetTimeInMillis() { +#if GTEST_OS_WINDOWS_MOBILE || defined(__BORLANDC__) + // Difference between 1970-01-01 and 1601-01-01 in milliseconds. + // http://analogous.blogspot.com/2005/04/epoch.html + const TimeInMillis kJavaEpochToWinFileTimeDelta = + static_cast(116444736UL) * 100000UL; + const DWORD kTenthMicrosInMilliSecond = 10000; + + SYSTEMTIME now_systime; + FILETIME now_filetime; + ULARGE_INTEGER now_int64; + // TODO(kenton@google.com): Shouldn't this just use + // GetSystemTimeAsFileTime()? + GetSystemTime(&now_systime); + if (SystemTimeToFileTime(&now_systime, &now_filetime)) { + now_int64.LowPart = now_filetime.dwLowDateTime; + now_int64.HighPart = now_filetime.dwHighDateTime; + now_int64.QuadPart = (now_int64.QuadPart / kTenthMicrosInMilliSecond) - + kJavaEpochToWinFileTimeDelta; + return now_int64.QuadPart; + } + return 0; +#elif GTEST_OS_WINDOWS && !GTEST_HAS_GETTIMEOFDAY_ + __timeb64 now; + +# ifdef _MSC_VER + + // MSVC 8 deprecates _ftime64(), so we want to suppress warning 4996 + // (deprecated function) there. + // TODO(kenton@google.com): Use GetTickCount()? Or use + // SystemTimeToFileTime() +# pragma warning(push) // Saves the current warning state. +# pragma warning(disable:4996) // Temporarily disables warning 4996. + _ftime64(&now); +# pragma warning(pop) // Restores the warning state. +# else + + _ftime64(&now); + +# endif // _MSC_VER + + return static_cast(now.time) * 1000 + now.millitm; +#elif GTEST_HAS_GETTIMEOFDAY_ + struct timeval now; + gettimeofday(&now, NULL); + return static_cast(now.tv_sec) * 1000 + now.tv_usec / 1000; +#else +# error "Don't know how to get the current time on your system." +#endif +} + +// Utilities + +// class String. + +#if GTEST_OS_WINDOWS_MOBILE +// Creates a UTF-16 wide string from the given ANSI string, allocating +// memory using new. The caller is responsible for deleting the return +// value using delete[]. Returns the wide string, or NULL if the +// input is NULL. +LPCWSTR String::AnsiToUtf16(const char* ansi) { + if (!ansi) return NULL; + const int length = strlen(ansi); + const int unicode_length = + MultiByteToWideChar(CP_ACP, 0, ansi, length, + NULL, 0); + WCHAR* unicode = new WCHAR[unicode_length + 1]; + MultiByteToWideChar(CP_ACP, 0, ansi, length, + unicode, unicode_length); + unicode[unicode_length] = 0; + return unicode; +} + +// Creates an ANSI string from the given wide string, allocating +// memory using new. The caller is responsible for deleting the return +// value using delete[]. Returns the ANSI string, or NULL if the +// input is NULL. +const char* String::Utf16ToAnsi(LPCWSTR utf16_str) { + if (!utf16_str) return NULL; + const int ansi_length = + WideCharToMultiByte(CP_ACP, 0, utf16_str, -1, + NULL, 0, NULL, NULL); + char* ansi = new char[ansi_length + 1]; + WideCharToMultiByte(CP_ACP, 0, utf16_str, -1, + ansi, ansi_length, NULL, NULL); + ansi[ansi_length] = 0; + return ansi; +} + +#endif // GTEST_OS_WINDOWS_MOBILE + +// Compares two C strings. Returns true iff they have the same content. +// +// Unlike strcmp(), this function can handle NULL argument(s). A NULL +// C string is considered different to any non-NULL C string, +// including the empty string. +bool String::CStringEquals(const char * lhs, const char * rhs) { + if ( lhs == NULL ) return rhs == NULL; + + if ( rhs == NULL ) return false; + + return strcmp(lhs, rhs) == 0; +} + +#if GTEST_HAS_STD_WSTRING || GTEST_HAS_GLOBAL_WSTRING + +// Converts an array of wide chars to a narrow string using the UTF-8 +// encoding, and streams the result to the given Message object. +static void StreamWideCharsToMessage(const wchar_t* wstr, size_t length, + Message* msg) { + for (size_t i = 0; i != length; ) { // NOLINT + if (wstr[i] != L'\0') { + *msg << WideStringToUtf8(wstr + i, static_cast(length - i)); + while (i != length && wstr[i] != L'\0') + i++; + } else { + *msg << '\0'; + i++; + } + } +} + +#endif // GTEST_HAS_STD_WSTRING || GTEST_HAS_GLOBAL_WSTRING + +} // namespace internal + +#if GTEST_HAS_STD_WSTRING +// Converts the given wide string to a narrow string using the UTF-8 +// encoding, and streams the result to this Message object. +Message& Message::operator <<(const ::std::wstring& wstr) { + internal::StreamWideCharsToMessage(wstr.c_str(), wstr.length(), this); + return *this; +} +#endif // GTEST_HAS_STD_WSTRING + +#if GTEST_HAS_GLOBAL_WSTRING +// Converts the given wide string to a narrow string using the UTF-8 +// encoding, and streams the result to this Message object. +Message& Message::operator <<(const ::wstring& wstr) { + internal::StreamWideCharsToMessage(wstr.c_str(), wstr.length(), this); + return *this; +} +#endif // GTEST_HAS_GLOBAL_WSTRING + +// AssertionResult constructors. +// Used in EXPECT_TRUE/FALSE(assertion_result). +AssertionResult::AssertionResult(const AssertionResult& other) + : success_(other.success_), + message_(other.message_.get() != NULL ? + new ::std::string(*other.message_) : + static_cast< ::std::string*>(NULL)) { +} + +// Returns the assertion's negation. Used with EXPECT/ASSERT_FALSE. +AssertionResult AssertionResult::operator!() const { + AssertionResult negation(!success_); + if (message_.get() != NULL) + negation << *message_; + return negation; +} + +// Makes a successful assertion result. +AssertionResult AssertionSuccess() { + return AssertionResult(true); +} + +// Makes a failed assertion result. +AssertionResult AssertionFailure() { + return AssertionResult(false); +} + +// Makes a failed assertion result with the given failure message. +// Deprecated; use AssertionFailure() << message. +AssertionResult AssertionFailure(const Message& message) { + return AssertionFailure() << message; +} + +namespace internal { + +// Constructs and returns the message for an equality assertion +// (e.g. ASSERT_EQ, EXPECT_STREQ, etc) failure. +// +// The first four parameters are the expressions used in the assertion +// and their values, as strings. For example, for ASSERT_EQ(foo, bar) +// where foo is 5 and bar is 6, we have: +// +// expected_expression: "foo" +// actual_expression: "bar" +// expected_value: "5" +// actual_value: "6" +// +// The ignoring_case parameter is true iff the assertion is a +// *_STRCASEEQ*. When it's true, the string " (ignoring case)" will +// be inserted into the message. +AssertionResult EqFailure(const char* expected_expression, + const char* actual_expression, + const std::string& expected_value, + const std::string& actual_value, + bool ignoring_case) { + Message msg; + msg << "Value of: " << actual_expression; + if (actual_value != actual_expression) { + msg << "\n Actual: " << actual_value; + } + + msg << "\nExpected: " << expected_expression; + if (ignoring_case) { + msg << " (ignoring case)"; + } + if (expected_value != expected_expression) { + msg << "\nWhich is: " << expected_value; + } + + return AssertionFailure() << msg; +} + +// Constructs a failure message for Boolean assertions such as EXPECT_TRUE. +std::string GetBoolAssertionFailureMessage( + const AssertionResult& assertion_result, + const char* expression_text, + const char* actual_predicate_value, + const char* expected_predicate_value) { + const char* actual_message = assertion_result.message(); + Message msg; + msg << "Value of: " << expression_text + << "\n Actual: " << actual_predicate_value; + if (actual_message[0] != '\0') + msg << " (" << actual_message << ")"; + msg << "\nExpected: " << expected_predicate_value; + return msg.GetString(); +} + +// Helper function for implementing ASSERT_NEAR. +AssertionResult DoubleNearPredFormat(const char* expr1, + const char* expr2, + const char* abs_error_expr, + double val1, + double val2, + double abs_error) { + const double diff = fabs(val1 - val2); + if (diff <= abs_error) return AssertionSuccess(); + + // TODO(wan): do not print the value of an expression if it's + // already a literal. + return AssertionFailure() + << "The difference between " << expr1 << " and " << expr2 + << " is " << diff << ", which exceeds " << abs_error_expr << ", where\n" + << expr1 << " evaluates to " << val1 << ",\n" + << expr2 << " evaluates to " << val2 << ", and\n" + << abs_error_expr << " evaluates to " << abs_error << "."; +} + + +// Helper template for implementing FloatLE() and DoubleLE(). +template +AssertionResult FloatingPointLE(const char* expr1, + const char* expr2, + RawType val1, + RawType val2) { + // Returns success if val1 is less than val2, + if (val1 < val2) { + return AssertionSuccess(); + } + + // or if val1 is almost equal to val2. + const FloatingPoint lhs(val1), rhs(val2); + if (lhs.AlmostEquals(rhs)) { + return AssertionSuccess(); + } + + // Note that the above two checks will both fail if either val1 or + // val2 is NaN, as the IEEE floating-point standard requires that + // any predicate involving a NaN must return false. + + ::std::stringstream val1_ss; + val1_ss << std::setprecision(std::numeric_limits::digits10 + 2) + << val1; + + ::std::stringstream val2_ss; + val2_ss << std::setprecision(std::numeric_limits::digits10 + 2) + << val2; + + return AssertionFailure() + << "Expected: (" << expr1 << ") <= (" << expr2 << ")\n" + << " Actual: " << StringStreamToString(&val1_ss) << " vs " + << StringStreamToString(&val2_ss); +} + +} // namespace internal + +// Asserts that val1 is less than, or almost equal to, val2. Fails +// otherwise. In particular, it fails if either val1 or val2 is NaN. +AssertionResult FloatLE(const char* expr1, const char* expr2, + float val1, float val2) { + return internal::FloatingPointLE(expr1, expr2, val1, val2); +} + +// Asserts that val1 is less than, or almost equal to, val2. Fails +// otherwise. In particular, it fails if either val1 or val2 is NaN. +AssertionResult DoubleLE(const char* expr1, const char* expr2, + double val1, double val2) { + return internal::FloatingPointLE(expr1, expr2, val1, val2); +} + +namespace internal { + +// The helper function for {ASSERT|EXPECT}_EQ with int or enum +// arguments. +AssertionResult CmpHelperEQ(const char* expected_expression, + const char* actual_expression, + BiggestInt expected, + BiggestInt actual) { + if (expected == actual) { + return AssertionSuccess(); + } + + return EqFailure(expected_expression, + actual_expression, + FormatForComparisonFailureMessage(expected, actual), + FormatForComparisonFailureMessage(actual, expected), + false); +} + +// A macro for implementing the helper functions needed to implement +// ASSERT_?? and EXPECT_?? with integer or enum arguments. It is here +// just to avoid copy-and-paste of similar code. +#define GTEST_IMPL_CMP_HELPER_(op_name, op)\ +AssertionResult CmpHelper##op_name(const char* expr1, const char* expr2, \ + BiggestInt val1, BiggestInt val2) {\ + if (val1 op val2) {\ + return AssertionSuccess();\ + } else {\ + return AssertionFailure() \ + << "Expected: (" << expr1 << ") " #op " (" << expr2\ + << "), actual: " << FormatForComparisonFailureMessage(val1, val2)\ + << " vs " << FormatForComparisonFailureMessage(val2, val1);\ + }\ +} + +// Implements the helper function for {ASSERT|EXPECT}_NE with int or +// enum arguments. +GTEST_IMPL_CMP_HELPER_(NE, !=) +// Implements the helper function for {ASSERT|EXPECT}_LE with int or +// enum arguments. +GTEST_IMPL_CMP_HELPER_(LE, <=) +// Implements the helper function for {ASSERT|EXPECT}_LT with int or +// enum arguments. +GTEST_IMPL_CMP_HELPER_(LT, < ) +// Implements the helper function for {ASSERT|EXPECT}_GE with int or +// enum arguments. +GTEST_IMPL_CMP_HELPER_(GE, >=) +// Implements the helper function for {ASSERT|EXPECT}_GT with int or +// enum arguments. +GTEST_IMPL_CMP_HELPER_(GT, > ) + +#undef GTEST_IMPL_CMP_HELPER_ + +// The helper function for {ASSERT|EXPECT}_STREQ. +AssertionResult CmpHelperSTREQ(const char* expected_expression, + const char* actual_expression, + const char* expected, + const char* actual) { + if (String::CStringEquals(expected, actual)) { + return AssertionSuccess(); + } + + return EqFailure(expected_expression, + actual_expression, + PrintToString(expected), + PrintToString(actual), + false); +} + +// The helper function for {ASSERT|EXPECT}_STRCASEEQ. +AssertionResult CmpHelperSTRCASEEQ(const char* expected_expression, + const char* actual_expression, + const char* expected, + const char* actual) { + if (String::CaseInsensitiveCStringEquals(expected, actual)) { + return AssertionSuccess(); + } + + return EqFailure(expected_expression, + actual_expression, + PrintToString(expected), + PrintToString(actual), + true); +} + +// The helper function for {ASSERT|EXPECT}_STRNE. +AssertionResult CmpHelperSTRNE(const char* s1_expression, + const char* s2_expression, + const char* s1, + const char* s2) { + if (!String::CStringEquals(s1, s2)) { + return AssertionSuccess(); + } else { + return AssertionFailure() << "Expected: (" << s1_expression << ") != (" + << s2_expression << "), actual: \"" + << s1 << "\" vs \"" << s2 << "\""; + } +} + +// The helper function for {ASSERT|EXPECT}_STRCASENE. +AssertionResult CmpHelperSTRCASENE(const char* s1_expression, + const char* s2_expression, + const char* s1, + const char* s2) { + if (!String::CaseInsensitiveCStringEquals(s1, s2)) { + return AssertionSuccess(); + } else { + return AssertionFailure() + << "Expected: (" << s1_expression << ") != (" + << s2_expression << ") (ignoring case), actual: \"" + << s1 << "\" vs \"" << s2 << "\""; + } +} + +} // namespace internal + +namespace { + +// Helper functions for implementing IsSubString() and IsNotSubstring(). + +// This group of overloaded functions return true iff needle is a +// substring of haystack. NULL is considered a substring of itself +// only. + +bool IsSubstringPred(const char* needle, const char* haystack) { + if (needle == NULL || haystack == NULL) + return needle == haystack; + + return strstr(haystack, needle) != NULL; +} + +bool IsSubstringPred(const wchar_t* needle, const wchar_t* haystack) { + if (needle == NULL || haystack == NULL) + return needle == haystack; + + return wcsstr(haystack, needle) != NULL; +} + +// StringType here can be either ::std::string or ::std::wstring. +template +bool IsSubstringPred(const StringType& needle, + const StringType& haystack) { + return haystack.find(needle) != StringType::npos; +} + +// This function implements either IsSubstring() or IsNotSubstring(), +// depending on the value of the expected_to_be_substring parameter. +// StringType here can be const char*, const wchar_t*, ::std::string, +// or ::std::wstring. +template +AssertionResult IsSubstringImpl( + bool expected_to_be_substring, + const char* needle_expr, const char* haystack_expr, + const StringType& needle, const StringType& haystack) { + if (IsSubstringPred(needle, haystack) == expected_to_be_substring) + return AssertionSuccess(); + + const bool is_wide_string = sizeof(needle[0]) > 1; + const char* const begin_string_quote = is_wide_string ? "L\"" : "\""; + return AssertionFailure() + << "Value of: " << needle_expr << "\n" + << " Actual: " << begin_string_quote << needle << "\"\n" + << "Expected: " << (expected_to_be_substring ? "" : "not ") + << "a substring of " << haystack_expr << "\n" + << "Which is: " << begin_string_quote << haystack << "\""; +} + +} // namespace + +// IsSubstring() and IsNotSubstring() check whether needle is a +// substring of haystack (NULL is considered a substring of itself +// only), and return an appropriate error message when they fail. + +AssertionResult IsSubstring( + const char* needle_expr, const char* haystack_expr, + const char* needle, const char* haystack) { + return IsSubstringImpl(true, needle_expr, haystack_expr, needle, haystack); +} + +AssertionResult IsSubstring( + const char* needle_expr, const char* haystack_expr, + const wchar_t* needle, const wchar_t* haystack) { + return IsSubstringImpl(true, needle_expr, haystack_expr, needle, haystack); +} + +AssertionResult IsNotSubstring( + const char* needle_expr, const char* haystack_expr, + const char* needle, const char* haystack) { + return IsSubstringImpl(false, needle_expr, haystack_expr, needle, haystack); +} + +AssertionResult IsNotSubstring( + const char* needle_expr, const char* haystack_expr, + const wchar_t* needle, const wchar_t* haystack) { + return IsSubstringImpl(false, needle_expr, haystack_expr, needle, haystack); +} + +AssertionResult IsSubstring( + const char* needle_expr, const char* haystack_expr, + const ::std::string& needle, const ::std::string& haystack) { + return IsSubstringImpl(true, needle_expr, haystack_expr, needle, haystack); +} + +AssertionResult IsNotSubstring( + const char* needle_expr, const char* haystack_expr, + const ::std::string& needle, const ::std::string& haystack) { + return IsSubstringImpl(false, needle_expr, haystack_expr, needle, haystack); +} + +#if GTEST_HAS_STD_WSTRING +AssertionResult IsSubstring( + const char* needle_expr, const char* haystack_expr, + const ::std::wstring& needle, const ::std::wstring& haystack) { + return IsSubstringImpl(true, needle_expr, haystack_expr, needle, haystack); +} + +AssertionResult IsNotSubstring( + const char* needle_expr, const char* haystack_expr, + const ::std::wstring& needle, const ::std::wstring& haystack) { + return IsSubstringImpl(false, needle_expr, haystack_expr, needle, haystack); +} +#endif // GTEST_HAS_STD_WSTRING + +namespace internal { + +#if GTEST_OS_WINDOWS + +namespace { + +// Helper function for IsHRESULT{SuccessFailure} predicates +AssertionResult HRESULTFailureHelper(const char* expr, + const char* expected, + long hr) { // NOLINT +# if GTEST_OS_WINDOWS_MOBILE + + // Windows CE doesn't support FormatMessage. + const char error_text[] = ""; + +# else + + // Looks up the human-readable system message for the HRESULT code + // and since we're not passing any params to FormatMessage, we don't + // want inserts expanded. + const DWORD kFlags = FORMAT_MESSAGE_FROM_SYSTEM | + FORMAT_MESSAGE_IGNORE_INSERTS; + const DWORD kBufSize = 4096; // String::Format can't exceed this length. + // Gets the system's human readable message string for this HRESULT. + char error_text[kBufSize] = { '\0' }; + DWORD message_length = ::FormatMessageA(kFlags, + 0, // no source, we're asking system + hr, // the error + 0, // no line width restrictions + error_text, // output buffer + kBufSize, // buf size + NULL); // no arguments for inserts + // Trims tailing white space (FormatMessage leaves a trailing cr-lf) + for (; message_length && IsSpace(error_text[message_length - 1]); + --message_length) { + error_text[message_length - 1] = '\0'; + } + +# endif // GTEST_OS_WINDOWS_MOBILE + + const std::string error_hex(String::Format("0x%08X ", hr)); + return ::testing::AssertionFailure() + << "Expected: " << expr << " " << expected << ".\n" + << " Actual: " << error_hex << error_text << "\n"; +} + +} // namespace + +AssertionResult IsHRESULTSuccess(const char* expr, long hr) { // NOLINT + if (SUCCEEDED(hr)) { + return AssertionSuccess(); + } + return HRESULTFailureHelper(expr, "succeeds", hr); +} + +AssertionResult IsHRESULTFailure(const char* expr, long hr) { // NOLINT + if (FAILED(hr)) { + return AssertionSuccess(); + } + return HRESULTFailureHelper(expr, "fails", hr); +} + +#endif // GTEST_OS_WINDOWS + +// Utility functions for encoding Unicode text (wide strings) in +// UTF-8. + +// A Unicode code-point can have upto 21 bits, and is encoded in UTF-8 +// like this: +// +// Code-point length Encoding +// 0 - 7 bits 0xxxxxxx +// 8 - 11 bits 110xxxxx 10xxxxxx +// 12 - 16 bits 1110xxxx 10xxxxxx 10xxxxxx +// 17 - 21 bits 11110xxx 10xxxxxx 10xxxxxx 10xxxxxx + +// The maximum code-point a one-byte UTF-8 sequence can represent. +const UInt32 kMaxCodePoint1 = (static_cast(1) << 7) - 1; + +// The maximum code-point a two-byte UTF-8 sequence can represent. +const UInt32 kMaxCodePoint2 = (static_cast(1) << (5 + 6)) - 1; + +// The maximum code-point a three-byte UTF-8 sequence can represent. +const UInt32 kMaxCodePoint3 = (static_cast(1) << (4 + 2*6)) - 1; + +// The maximum code-point a four-byte UTF-8 sequence can represent. +const UInt32 kMaxCodePoint4 = (static_cast(1) << (3 + 3*6)) - 1; + +// Chops off the n lowest bits from a bit pattern. Returns the n +// lowest bits. As a side effect, the original bit pattern will be +// shifted to the right by n bits. +inline UInt32 ChopLowBits(UInt32* bits, int n) { + const UInt32 low_bits = *bits & ((static_cast(1) << n) - 1); + *bits >>= n; + return low_bits; +} + +// Converts a Unicode code point to a narrow string in UTF-8 encoding. +// code_point parameter is of type UInt32 because wchar_t may not be +// wide enough to contain a code point. +// The output buffer str must containt at least 32 characters. +// The function returns the address of the output buffer. +// If the code_point is not a valid Unicode code point +// (i.e. outside of Unicode range U+0 to U+10FFFF) it will be output +// as '(Invalid Unicode 0xXXXXXXXX)'. +char* CodePointToUtf8(UInt32 code_point, char* str) { + if (code_point <= kMaxCodePoint1) { + str[1] = '\0'; + str[0] = static_cast(code_point); // 0xxxxxxx + } else if (code_point <= kMaxCodePoint2) { + str[2] = '\0'; + str[1] = static_cast(0x80 | ChopLowBits(&code_point, 6)); // 10xxxxxx + str[0] = static_cast(0xC0 | code_point); // 110xxxxx + } else if (code_point <= kMaxCodePoint3) { + str[3] = '\0'; + str[2] = static_cast(0x80 | ChopLowBits(&code_point, 6)); // 10xxxxxx + str[1] = static_cast(0x80 | ChopLowBits(&code_point, 6)); // 10xxxxxx + str[0] = static_cast(0xE0 | code_point); // 1110xxxx + } else if (code_point <= kMaxCodePoint4) { + str[4] = '\0'; + str[3] = static_cast(0x80 | ChopLowBits(&code_point, 6)); // 10xxxxxx + str[2] = static_cast(0x80 | ChopLowBits(&code_point, 6)); // 10xxxxxx + str[1] = static_cast(0x80 | ChopLowBits(&code_point, 6)); // 10xxxxxx + str[0] = static_cast(0xF0 | code_point); // 11110xxx + } else { + // The longest string String::Format can produce when invoked + // with these parameters is 28 character long (not including + // the terminating nul character). We are asking for 32 character + // buffer just in case. This is also enough for strncpy to + // null-terminate the destination string. + posix::StrNCpy( + str, String::Format("(Invalid Unicode 0x%X)", code_point).c_str(), 32); + str[31] = '\0'; // Makes sure no change in the format to strncpy leaves + // the result unterminated. + } + return str; +} + +// The following two functions only make sense if the the system +// uses UTF-16 for wide string encoding. All supported systems +// with 16 bit wchar_t (Windows, Cygwin, Symbian OS) do use UTF-16. + +// Determines if the arguments constitute UTF-16 surrogate pair +// and thus should be combined into a single Unicode code point +// using CreateCodePointFromUtf16SurrogatePair. +inline bool IsUtf16SurrogatePair(wchar_t first, wchar_t second) { + return sizeof(wchar_t) == 2 && + (first & 0xFC00) == 0xD800 && (second & 0xFC00) == 0xDC00; +} + +// Creates a Unicode code point from UTF16 surrogate pair. +inline UInt32 CreateCodePointFromUtf16SurrogatePair(wchar_t first, + wchar_t second) { + const UInt32 mask = (1 << 10) - 1; + return (sizeof(wchar_t) == 2) ? + (((first & mask) << 10) | (second & mask)) + 0x10000 : + // This function should not be called when the condition is + // false, but we provide a sensible default in case it is. + static_cast(first); +} + +// Converts a wide string to a narrow string in UTF-8 encoding. +// The wide string is assumed to have the following encoding: +// UTF-16 if sizeof(wchar_t) == 2 (on Windows, Cygwin, Symbian OS) +// UTF-32 if sizeof(wchar_t) == 4 (on Linux) +// Parameter str points to a null-terminated wide string. +// Parameter num_chars may additionally limit the number +// of wchar_t characters processed. -1 is used when the entire string +// should be processed. +// If the string contains code points that are not valid Unicode code points +// (i.e. outside of Unicode range U+0 to U+10FFFF) they will be output +// as '(Invalid Unicode 0xXXXXXXXX)'. If the string is in UTF16 encoding +// and contains invalid UTF-16 surrogate pairs, values in those pairs +// will be encoded as individual Unicode characters from Basic Normal Plane. +std::string WideStringToUtf8(const wchar_t* str, int num_chars) { + if (num_chars == -1) + num_chars = static_cast(wcslen(str)); + + ::std::stringstream stream; + for (int i = 0; i < num_chars; ++i) { + UInt32 unicode_code_point; + + if (str[i] == L'\0') { + break; + } else if (i + 1 < num_chars && IsUtf16SurrogatePair(str[i], str[i + 1])) { + unicode_code_point = CreateCodePointFromUtf16SurrogatePair(str[i], + str[i + 1]); + i++; + } else { + unicode_code_point = static_cast(str[i]); + } + + char buffer[32]; // CodePointToUtf8 requires a buffer this big. + stream << CodePointToUtf8(unicode_code_point, buffer); + } + return StringStreamToString(&stream); +} + +// Converts a wide C string to an std::string using the UTF-8 encoding. +// NULL will be converted to "(null)". +std::string String::ShowWideCString(const wchar_t * wide_c_str) { + if (wide_c_str == NULL) return "(null)"; + + return internal::WideStringToUtf8(wide_c_str, -1); +} + +// Compares two wide C strings. Returns true iff they have the same +// content. +// +// Unlike wcscmp(), this function can handle NULL argument(s). A NULL +// C string is considered different to any non-NULL C string, +// including the empty string. +bool String::WideCStringEquals(const wchar_t * lhs, const wchar_t * rhs) { + if (lhs == NULL) return rhs == NULL; + + if (rhs == NULL) return false; + + return wcscmp(lhs, rhs) == 0; +} + +// Helper function for *_STREQ on wide strings. +AssertionResult CmpHelperSTREQ(const char* expected_expression, + const char* actual_expression, + const wchar_t* expected, + const wchar_t* actual) { + if (String::WideCStringEquals(expected, actual)) { + return AssertionSuccess(); + } + + return EqFailure(expected_expression, + actual_expression, + PrintToString(expected), + PrintToString(actual), + false); +} + +// Helper function for *_STRNE on wide strings. +AssertionResult CmpHelperSTRNE(const char* s1_expression, + const char* s2_expression, + const wchar_t* s1, + const wchar_t* s2) { + if (!String::WideCStringEquals(s1, s2)) { + return AssertionSuccess(); + } + + return AssertionFailure() << "Expected: (" << s1_expression << ") != (" + << s2_expression << "), actual: " + << PrintToString(s1) + << " vs " << PrintToString(s2); +} + +// Compares two C strings, ignoring case. Returns true iff they have +// the same content. +// +// Unlike strcasecmp(), this function can handle NULL argument(s). A +// NULL C string is considered different to any non-NULL C string, +// including the empty string. +bool String::CaseInsensitiveCStringEquals(const char * lhs, const char * rhs) { + if (lhs == NULL) + return rhs == NULL; + if (rhs == NULL) + return false; + return posix::StrCaseCmp(lhs, rhs) == 0; +} + + // Compares two wide C strings, ignoring case. Returns true iff they + // have the same content. + // + // Unlike wcscasecmp(), this function can handle NULL argument(s). + // A NULL C string is considered different to any non-NULL wide C string, + // including the empty string. + // NB: The implementations on different platforms slightly differ. + // On windows, this method uses _wcsicmp which compares according to LC_CTYPE + // environment variable. On GNU platform this method uses wcscasecmp + // which compares according to LC_CTYPE category of the current locale. + // On MacOS X, it uses towlower, which also uses LC_CTYPE category of the + // current locale. +bool String::CaseInsensitiveWideCStringEquals(const wchar_t* lhs, + const wchar_t* rhs) { + if (lhs == NULL) return rhs == NULL; + + if (rhs == NULL) return false; + +#if GTEST_OS_WINDOWS + return _wcsicmp(lhs, rhs) == 0; +#elif GTEST_OS_LINUX && !GTEST_OS_LINUX_ANDROID + return wcscasecmp(lhs, rhs) == 0; +#else + // Android, Mac OS X and Cygwin don't define wcscasecmp. + // Other unknown OSes may not define it either. + wint_t left, right; + do { + left = towlower(*lhs++); + right = towlower(*rhs++); + } while (left && left == right); + return left == right; +#endif // OS selector +} + +// Returns true iff str ends with the given suffix, ignoring case. +// Any string is considered to end with an empty suffix. +bool String::EndsWithCaseInsensitive( + const std::string& str, const std::string& suffix) { + const size_t str_len = str.length(); + const size_t suffix_len = suffix.length(); + return (str_len >= suffix_len) && + CaseInsensitiveCStringEquals(str.c_str() + str_len - suffix_len, + suffix.c_str()); +} + +// Formats a list of arguments to an std::string, using the same format +// spec string as for printf. +// +// We do not use the StringPrintf class as it is not universally +// available. +// +// The result is limited to 4096 characters (including the tailing 0). +// If 4096 characters are not enough to format the input, or if +// there's an error, "" is +// returned. +std::string String::Format(const char * format, ...) { + va_list args; + va_start(args, format); + + char buffer[4096]; + const int kBufferSize = sizeof(buffer)/sizeof(buffer[0]); + + // MSVC 8 deprecates vsnprintf(), so we want to suppress warning + // 4996 (deprecated function) there. +#ifdef _MSC_VER // We are using MSVC. +# pragma warning(push) // Saves the current warning state. +# pragma warning(disable:4996) // Temporarily disables warning 4996. + + const int size = vsnprintf(buffer, kBufferSize, format, args); + +# pragma warning(pop) // Restores the warning state. +#else // We are not using MSVC. + const int size = vsnprintf(buffer, kBufferSize, format, args); +#endif // _MSC_VER + va_end(args); + + // vsnprintf()'s behavior is not portable. When the buffer is not + // big enough, it returns a negative value in MSVC, and returns the + // needed buffer size on Linux. When there is an output error, it + // always returns a negative value. For simplicity, we lump the two + // error cases together. + if (size < 0 || size >= kBufferSize) { + return ""; + } else { + return std::string(buffer, size); + } +} + +// Converts the buffer in a stringstream to an std::string, converting NUL +// bytes to "\\0" along the way. +std::string StringStreamToString(::std::stringstream* ss) { + const ::std::string& str = ss->str(); + const char* const start = str.c_str(); + const char* const end = start + str.length(); + + std::string result; + result.reserve(2 * (end - start)); + for (const char* ch = start; ch != end; ++ch) { + if (*ch == '\0') { + result += "\\0"; // Replaces NUL with "\\0"; + } else { + result += *ch; + } + } + + return result; +} + +// Appends the user-supplied message to the Google-Test-generated message. +std::string AppendUserMessage(const std::string& gtest_msg, + const Message& user_msg) { + // Appends the user message if it's non-empty. + const std::string user_msg_string = user_msg.GetString(); + if (user_msg_string.empty()) { + return gtest_msg; + } + + return gtest_msg + "\n" + user_msg_string; +} + +} // namespace internal + +// class TestResult + +// Creates an empty TestResult. +TestResult::TestResult() + : death_test_count_(0), + elapsed_time_(0) { +} + +// D'tor. +TestResult::~TestResult() { +} + +// Returns the i-th test part result among all the results. i can +// range from 0 to total_part_count() - 1. If i is not in that range, +// aborts the program. +const TestPartResult& TestResult::GetTestPartResult(int i) const { + if (i < 0 || i >= total_part_count()) + internal::posix::Abort(); + return test_part_results_.at(i); +} + +// Returns the i-th test property. i can range from 0 to +// test_property_count() - 1. If i is not in that range, aborts the +// program. +const TestProperty& TestResult::GetTestProperty(int i) const { + if (i < 0 || i >= test_property_count()) + internal::posix::Abort(); + return test_properties_.at(i); +} + +// Clears the test part results. +void TestResult::ClearTestPartResults() { + test_part_results_.clear(); +} + +// Adds a test part result to the list. +void TestResult::AddTestPartResult(const TestPartResult& test_part_result) { + test_part_results_.push_back(test_part_result); +} + +// Adds a test property to the list. If a property with the same key as the +// supplied property is already represented, the value of this test_property +// replaces the old value for that key. +void TestResult::RecordProperty(const TestProperty& test_property) { + if (!ValidateTestProperty(test_property)) { + return; + } + internal::MutexLock lock(&test_properites_mutex_); + const std::vector::iterator property_with_matching_key = + std::find_if(test_properties_.begin(), test_properties_.end(), + internal::TestPropertyKeyIs(test_property.key())); + if (property_with_matching_key == test_properties_.end()) { + test_properties_.push_back(test_property); + return; + } + property_with_matching_key->SetValue(test_property.value()); +} + +// Adds a failure if the key is a reserved attribute of Google Test +// testcase tags. Returns true if the property is valid. +bool TestResult::ValidateTestProperty(const TestProperty& test_property) { + const std::string& key = test_property.key(); + if (key == "name" || key == "status" || key == "time" || key == "classname") { + ADD_FAILURE() + << "Reserved key used in RecordProperty(): " + << key + << " ('name', 'status', 'time', and 'classname' are reserved by " + << GTEST_NAME_ << ")"; + return false; + } + return true; +} + +// Clears the object. +void TestResult::Clear() { + test_part_results_.clear(); + test_properties_.clear(); + death_test_count_ = 0; + elapsed_time_ = 0; +} + +// Returns true iff the test failed. +bool TestResult::Failed() const { + for (int i = 0; i < total_part_count(); ++i) { + if (GetTestPartResult(i).failed()) + return true; + } + return false; +} + +// Returns true iff the test part fatally failed. +static bool TestPartFatallyFailed(const TestPartResult& result) { + return result.fatally_failed(); +} + +// Returns true iff the test fatally failed. +bool TestResult::HasFatalFailure() const { + return CountIf(test_part_results_, TestPartFatallyFailed) > 0; +} + +// Returns true iff the test part non-fatally failed. +static bool TestPartNonfatallyFailed(const TestPartResult& result) { + return result.nonfatally_failed(); +} + +// Returns true iff the test has a non-fatal failure. +bool TestResult::HasNonfatalFailure() const { + return CountIf(test_part_results_, TestPartNonfatallyFailed) > 0; +} + +// Gets the number of all test parts. This is the sum of the number +// of successful test parts and the number of failed test parts. +int TestResult::total_part_count() const { + return static_cast(test_part_results_.size()); +} + +// Returns the number of the test properties. +int TestResult::test_property_count() const { + return static_cast(test_properties_.size()); +} + +// class Test + +// Creates a Test object. + +// The c'tor saves the values of all Google Test flags. +Test::Test() + : gtest_flag_saver_(new internal::GTestFlagSaver) { +} + +// The d'tor restores the values of all Google Test flags. +Test::~Test() { + delete gtest_flag_saver_; +} + +// Sets up the test fixture. +// +// A sub-class may override this. +void Test::SetUp() { +} + +// Tears down the test fixture. +// +// A sub-class may override this. +void Test::TearDown() { +} + +// Allows user supplied key value pairs to be recorded for later output. +void Test::RecordProperty(const char* key, const char* value) { + UnitTest::GetInstance()->RecordPropertyForCurrentTest(key, value); +} + +// Allows user supplied key value pairs to be recorded for later output. +void Test::RecordProperty(const char* key, int value) { + Message value_message; + value_message << value; + RecordProperty(key, value_message.GetString().c_str()); +} + +namespace internal { + +void ReportFailureInUnknownLocation(TestPartResult::Type result_type, + const std::string& message) { + // This function is a friend of UnitTest and as such has access to + // AddTestPartResult. + UnitTest::GetInstance()->AddTestPartResult( + result_type, + NULL, // No info about the source file where the exception occurred. + -1, // We have no info on which line caused the exception. + message, + ""); // No stack trace, either. +} + +} // namespace internal + +// Google Test requires all tests in the same test case to use the same test +// fixture class. This function checks if the current test has the +// same fixture class as the first test in the current test case. If +// yes, it returns true; otherwise it generates a Google Test failure and +// returns false. +bool Test::HasSameFixtureClass() { + internal::UnitTestImpl* const impl = internal::GetUnitTestImpl(); + const TestCase* const test_case = impl->current_test_case(); + + // Info about the first test in the current test case. + const TestInfo* const first_test_info = test_case->test_info_list()[0]; + const internal::TypeId first_fixture_id = first_test_info->fixture_class_id_; + const char* const first_test_name = first_test_info->name(); + + // Info about the current test. + const TestInfo* const this_test_info = impl->current_test_info(); + const internal::TypeId this_fixture_id = this_test_info->fixture_class_id_; + const char* const this_test_name = this_test_info->name(); + + if (this_fixture_id != first_fixture_id) { + // Is the first test defined using TEST? + const bool first_is_TEST = first_fixture_id == internal::GetTestTypeId(); + // Is this test defined using TEST? + const bool this_is_TEST = this_fixture_id == internal::GetTestTypeId(); + + if (first_is_TEST || this_is_TEST) { + // The user mixed TEST and TEST_F in this test case - we'll tell + // him/her how to fix it. + + // Gets the name of the TEST and the name of the TEST_F. Note + // that first_is_TEST and this_is_TEST cannot both be true, as + // the fixture IDs are different for the two tests. + const char* const TEST_name = + first_is_TEST ? first_test_name : this_test_name; + const char* const TEST_F_name = + first_is_TEST ? this_test_name : first_test_name; + + ADD_FAILURE() + << "All tests in the same test case must use the same test fixture\n" + << "class, so mixing TEST_F and TEST in the same test case is\n" + << "illegal. In test case " << this_test_info->test_case_name() + << ",\n" + << "test " << TEST_F_name << " is defined using TEST_F but\n" + << "test " << TEST_name << " is defined using TEST. You probably\n" + << "want to change the TEST to TEST_F or move it to another test\n" + << "case."; + } else { + // The user defined two fixture classes with the same name in + // two namespaces - we'll tell him/her how to fix it. + ADD_FAILURE() + << "All tests in the same test case must use the same test fixture\n" + << "class. However, in test case " + << this_test_info->test_case_name() << ",\n" + << "you defined test " << first_test_name + << " and test " << this_test_name << "\n" + << "using two different test fixture classes. This can happen if\n" + << "the two classes are from different namespaces or translation\n" + << "units and have the same name. You should probably rename one\n" + << "of the classes to put the tests into different test cases."; + } + return false; + } + + return true; +} + +#if GTEST_HAS_SEH + +// Adds an "exception thrown" fatal failure to the current test. This +// function returns its result via an output parameter pointer because VC++ +// prohibits creation of objects with destructors on stack in functions +// using __try (see error C2712). +static std::string* FormatSehExceptionMessage(DWORD exception_code, + const char* location) { + Message message; + message << "SEH exception with code 0x" << std::setbase(16) << + exception_code << std::setbase(10) << " thrown in " << location << "."; + + return new std::string(message.GetString()); +} + +#endif // GTEST_HAS_SEH + +#if GTEST_HAS_EXCEPTIONS + +// Adds an "exception thrown" fatal failure to the current test. +static std::string FormatCxxExceptionMessage(const char* description, + const char* location) { + Message message; + if (description != NULL) { + message << "C++ exception with description \"" << description << "\""; + } else { + message << "Unknown C++ exception"; + } + message << " thrown in " << location << "."; + + return message.GetString(); +} + +static std::string PrintTestPartResultToString( + const TestPartResult& test_part_result); + +// A failed Google Test assertion will throw an exception of this type when +// GTEST_FLAG(throw_on_failure) is true (if exceptions are enabled). We +// derive it from std::runtime_error, which is for errors presumably +// detectable only at run time. Since std::runtime_error inherits from +// std::exception, many testing frameworks know how to extract and print the +// message inside it. +class GoogleTestFailureException : public ::std::runtime_error { + public: + explicit GoogleTestFailureException(const TestPartResult& failure) + : ::std::runtime_error(PrintTestPartResultToString(failure).c_str()) {} +}; +#endif // GTEST_HAS_EXCEPTIONS + +namespace internal { +// We put these helper functions in the internal namespace as IBM's xlC +// compiler rejects the code if they were declared static. + +// Runs the given method and handles SEH exceptions it throws, when +// SEH is supported; returns the 0-value for type Result in case of an +// SEH exception. (Microsoft compilers cannot handle SEH and C++ +// exceptions in the same function. Therefore, we provide a separate +// wrapper function for handling SEH exceptions.) +template +Result HandleSehExceptionsInMethodIfSupported( + T* object, Result (T::*method)(), const char* location) { +#if GTEST_HAS_SEH + __try { + return (object->*method)(); + } __except (internal::UnitTestOptions::GTestShouldProcessSEH( // NOLINT + GetExceptionCode())) { + // We create the exception message on the heap because VC++ prohibits + // creation of objects with destructors on stack in functions using __try + // (see error C2712). + std::string* exception_message = FormatSehExceptionMessage( + GetExceptionCode(), location); + internal::ReportFailureInUnknownLocation(TestPartResult::kFatalFailure, + *exception_message); + delete exception_message; + return static_cast(0); + } +#else + (void)location; + return (object->*method)(); +#endif // GTEST_HAS_SEH +} + +// Runs the given method and catches and reports C++ and/or SEH-style +// exceptions, if they are supported; returns the 0-value for type +// Result in case of an SEH exception. +template +Result HandleExceptionsInMethodIfSupported( + T* object, Result (T::*method)(), const char* location) { + // NOTE: The user code can affect the way in which Google Test handles + // exceptions by setting GTEST_FLAG(catch_exceptions), but only before + // RUN_ALL_TESTS() starts. It is technically possible to check the flag + // after the exception is caught and either report or re-throw the + // exception based on the flag's value: + // + // try { + // // Perform the test method. + // } catch (...) { + // if (GTEST_FLAG(catch_exceptions)) + // // Report the exception as failure. + // else + // throw; // Re-throws the original exception. + // } + // + // However, the purpose of this flag is to allow the program to drop into + // the debugger when the exception is thrown. On most platforms, once the + // control enters the catch block, the exception origin information is + // lost and the debugger will stop the program at the point of the + // re-throw in this function -- instead of at the point of the original + // throw statement in the code under test. For this reason, we perform + // the check early, sacrificing the ability to affect Google Test's + // exception handling in the method where the exception is thrown. + if (internal::GetUnitTestImpl()->catch_exceptions()) { +#if GTEST_HAS_EXCEPTIONS + try { + return HandleSehExceptionsInMethodIfSupported(object, method, location); + } catch (const GoogleTestFailureException&) { // NOLINT + // This exception doesn't originate in code under test. It makes no + // sense to report it as a test failure. + throw; + } catch (const std::exception& e) { // NOLINT + internal::ReportFailureInUnknownLocation( + TestPartResult::kFatalFailure, + FormatCxxExceptionMessage(e.what(), location)); + } catch (...) { // NOLINT + internal::ReportFailureInUnknownLocation( + TestPartResult::kFatalFailure, + FormatCxxExceptionMessage(NULL, location)); + } + return static_cast(0); +#else + return HandleSehExceptionsInMethodIfSupported(object, method, location); +#endif // GTEST_HAS_EXCEPTIONS + } else { + return (object->*method)(); + } +} + +} // namespace internal + +// Runs the test and updates the test result. +void Test::Run() { + if (!HasSameFixtureClass()) return; + + internal::UnitTestImpl* const impl = internal::GetUnitTestImpl(); + impl->os_stack_trace_getter()->UponLeavingGTest(); + internal::HandleExceptionsInMethodIfSupported(this, &Test::SetUp, "SetUp()"); + // We will run the test only if SetUp() was successful. + if (!HasFatalFailure()) { + impl->os_stack_trace_getter()->UponLeavingGTest(); + internal::HandleExceptionsInMethodIfSupported( + this, &Test::TestBody, "the test body"); + } + + // However, we want to clean up as much as possible. Hence we will + // always call TearDown(), even if SetUp() or the test body has + // failed. + impl->os_stack_trace_getter()->UponLeavingGTest(); + internal::HandleExceptionsInMethodIfSupported( + this, &Test::TearDown, "TearDown()"); +} + +// Returns true iff the current test has a fatal failure. +bool Test::HasFatalFailure() { + return internal::GetUnitTestImpl()->current_test_result()->HasFatalFailure(); +} + +// Returns true iff the current test has a non-fatal failure. +bool Test::HasNonfatalFailure() { + return internal::GetUnitTestImpl()->current_test_result()-> + HasNonfatalFailure(); +} + +// class TestInfo + +// Constructs a TestInfo object. It assumes ownership of the test factory +// object. +// TODO(vladl@google.com): Make a_test_case_name and a_name const string&'s +// to signify they cannot be NULLs. +TestInfo::TestInfo(const char* a_test_case_name, + const char* a_name, + const char* a_type_param, + const char* a_value_param, + internal::TypeId fixture_class_id, + internal::TestFactoryBase* factory) + : test_case_name_(a_test_case_name), + name_(a_name), + type_param_(a_type_param ? new std::string(a_type_param) : NULL), + value_param_(a_value_param ? new std::string(a_value_param) : NULL), + fixture_class_id_(fixture_class_id), + should_run_(false), + is_disabled_(false), + matches_filter_(false), + factory_(factory), + result_() {} + +// Destructs a TestInfo object. +TestInfo::~TestInfo() { delete factory_; } + +namespace internal { + +// Creates a new TestInfo object and registers it with Google Test; +// returns the created object. +// +// Arguments: +// +// test_case_name: name of the test case +// name: name of the test +// type_param: the name of the test's type parameter, or NULL if +// this is not a typed or a type-parameterized test. +// value_param: text representation of the test's value parameter, +// or NULL if this is not a value-parameterized test. +// fixture_class_id: ID of the test fixture class +// set_up_tc: pointer to the function that sets up the test case +// tear_down_tc: pointer to the function that tears down the test case +// factory: pointer to the factory that creates a test object. +// The newly created TestInfo instance will assume +// ownership of the factory object. +TestInfo* MakeAndRegisterTestInfo( + const char* test_case_name, const char* name, + const char* type_param, + const char* value_param, + TypeId fixture_class_id, + SetUpTestCaseFunc set_up_tc, + TearDownTestCaseFunc tear_down_tc, + TestFactoryBase* factory) { + TestInfo* const test_info = + new TestInfo(test_case_name, name, type_param, value_param, + fixture_class_id, factory); + GetUnitTestImpl()->AddTestInfo(set_up_tc, tear_down_tc, test_info); + return test_info; +} + +#if GTEST_HAS_PARAM_TEST +void ReportInvalidTestCaseType(const char* test_case_name, + const char* file, int line) { + Message errors; + errors + << "Attempted redefinition of test case " << test_case_name << ".\n" + << "All tests in the same test case must use the same test fixture\n" + << "class. However, in test case " << test_case_name << ", you tried\n" + << "to define a test using a fixture class different from the one\n" + << "used earlier. This can happen if the two fixture classes are\n" + << "from different namespaces and have the same name. You should\n" + << "probably rename one of the classes to put the tests into different\n" + << "test cases."; + + fprintf(stderr, "%s %s", FormatFileLocation(file, line).c_str(), + errors.GetString().c_str()); +} +#endif // GTEST_HAS_PARAM_TEST + +} // namespace internal + +namespace { + +// A predicate that checks the test name of a TestInfo against a known +// value. +// +// This is used for implementation of the TestCase class only. We put +// it in the anonymous namespace to prevent polluting the outer +// namespace. +// +// TestNameIs is copyable. +class TestNameIs { + public: + // Constructor. + // + // TestNameIs has NO default constructor. + explicit TestNameIs(const char* name) + : name_(name) {} + + // Returns true iff the test name of test_info matches name_. + bool operator()(const TestInfo * test_info) const { + return test_info && test_info->name() == name_; + } + + private: + std::string name_; +}; + +} // namespace + +namespace internal { + +// This method expands all parameterized tests registered with macros TEST_P +// and INSTANTIATE_TEST_CASE_P into regular tests and registers those. +// This will be done just once during the program runtime. +void UnitTestImpl::RegisterParameterizedTests() { +#if GTEST_HAS_PARAM_TEST + if (!parameterized_tests_registered_) { + parameterized_test_registry_.RegisterTests(); + parameterized_tests_registered_ = true; + } +#endif +} + +} // namespace internal + +// Creates the test object, runs it, records its result, and then +// deletes it. +void TestInfo::Run() { + if (!should_run_) return; + + // Tells UnitTest where to store test result. + internal::UnitTestImpl* const impl = internal::GetUnitTestImpl(); + impl->set_current_test_info(this); + + TestEventListener* repeater = UnitTest::GetInstance()->listeners().repeater(); + + // Notifies the unit test event listeners that a test is about to start. + repeater->OnTestStart(*this); + + const TimeInMillis start = internal::GetTimeInMillis(); + + impl->os_stack_trace_getter()->UponLeavingGTest(); + + // Creates the test object. + Test* const test = internal::HandleExceptionsInMethodIfSupported( + factory_, &internal::TestFactoryBase::CreateTest, + "the test fixture's constructor"); + + // Runs the test only if the test object was created and its + // constructor didn't generate a fatal failure. + if ((test != NULL) && !Test::HasFatalFailure()) { + // This doesn't throw as all user code that can throw are wrapped into + // exception handling code. + test->Run(); + } + + // Deletes the test object. + impl->os_stack_trace_getter()->UponLeavingGTest(); + internal::HandleExceptionsInMethodIfSupported( + test, &Test::DeleteSelf_, "the test fixture's destructor"); + + result_.set_elapsed_time(internal::GetTimeInMillis() - start); + + // Notifies the unit test event listener that a test has just finished. + repeater->OnTestEnd(*this); + + // Tells UnitTest to stop associating assertion results to this + // test. + impl->set_current_test_info(NULL); +} + +// class TestCase + +// Gets the number of successful tests in this test case. +int TestCase::successful_test_count() const { + return CountIf(test_info_list_, TestPassed); +} + +// Gets the number of failed tests in this test case. +int TestCase::failed_test_count() const { + return CountIf(test_info_list_, TestFailed); +} + +int TestCase::disabled_test_count() const { + return CountIf(test_info_list_, TestDisabled); +} + +// Get the number of tests in this test case that should run. +int TestCase::test_to_run_count() const { + return CountIf(test_info_list_, ShouldRunTest); +} + +// Gets the number of all tests. +int TestCase::total_test_count() const { + return static_cast(test_info_list_.size()); +} + +// Creates a TestCase with the given name. +// +// Arguments: +// +// name: name of the test case +// a_type_param: the name of the test case's type parameter, or NULL if +// this is not a typed or a type-parameterized test case. +// set_up_tc: pointer to the function that sets up the test case +// tear_down_tc: pointer to the function that tears down the test case +TestCase::TestCase(const char* a_name, const char* a_type_param, + Test::SetUpTestCaseFunc set_up_tc, + Test::TearDownTestCaseFunc tear_down_tc) + : name_(a_name), + type_param_(a_type_param ? new std::string(a_type_param) : NULL), + set_up_tc_(set_up_tc), + tear_down_tc_(tear_down_tc), + should_run_(false), + elapsed_time_(0) { +} + +// Destructor of TestCase. +TestCase::~TestCase() { + // Deletes every Test in the collection. + ForEach(test_info_list_, internal::Delete); +} + +// Returns the i-th test among all the tests. i can range from 0 to +// total_test_count() - 1. If i is not in that range, returns NULL. +const TestInfo* TestCase::GetTestInfo(int i) const { + const int index = GetElementOr(test_indices_, i, -1); + return index < 0 ? NULL : test_info_list_[index]; +} + +// Returns the i-th test among all the tests. i can range from 0 to +// total_test_count() - 1. If i is not in that range, returns NULL. +TestInfo* TestCase::GetMutableTestInfo(int i) { + const int index = GetElementOr(test_indices_, i, -1); + return index < 0 ? NULL : test_info_list_[index]; +} + +// Adds a test to this test case. Will delete the test upon +// destruction of the TestCase object. +void TestCase::AddTestInfo(TestInfo * test_info) { + test_info_list_.push_back(test_info); + test_indices_.push_back(static_cast(test_indices_.size())); +} + +// Runs every test in this TestCase. +void TestCase::Run() { + if (!should_run_) return; + + internal::UnitTestImpl* const impl = internal::GetUnitTestImpl(); + impl->set_current_test_case(this); + + TestEventListener* repeater = UnitTest::GetInstance()->listeners().repeater(); + + repeater->OnTestCaseStart(*this); + impl->os_stack_trace_getter()->UponLeavingGTest(); + internal::HandleExceptionsInMethodIfSupported( + this, &TestCase::RunSetUpTestCase, "SetUpTestCase()"); + + const internal::TimeInMillis start = internal::GetTimeInMillis(); + for (int i = 0; i < total_test_count(); i++) { + GetMutableTestInfo(i)->Run(); + } + elapsed_time_ = internal::GetTimeInMillis() - start; + + impl->os_stack_trace_getter()->UponLeavingGTest(); + internal::HandleExceptionsInMethodIfSupported( + this, &TestCase::RunTearDownTestCase, "TearDownTestCase()"); + + repeater->OnTestCaseEnd(*this); + impl->set_current_test_case(NULL); +} + +// Clears the results of all tests in this test case. +void TestCase::ClearResult() { + ForEach(test_info_list_, TestInfo::ClearTestResult); +} + +// Shuffles the tests in this test case. +void TestCase::ShuffleTests(internal::Random* random) { + Shuffle(random, &test_indices_); +} + +// Restores the test order to before the first shuffle. +void TestCase::UnshuffleTests() { + for (size_t i = 0; i < test_indices_.size(); i++) { + test_indices_[i] = static_cast(i); + } +} + +// Formats a countable noun. Depending on its quantity, either the +// singular form or the plural form is used. e.g. +// +// FormatCountableNoun(1, "formula", "formuli") returns "1 formula". +// FormatCountableNoun(5, "book", "books") returns "5 books". +static std::string FormatCountableNoun(int count, + const char * singular_form, + const char * plural_form) { + return internal::String::Format("%d %s", count, + count == 1 ? singular_form : plural_form); +} + +// Formats the count of tests. +static std::string FormatTestCount(int test_count) { + return FormatCountableNoun(test_count, "test", "tests"); +} + +// Formats the count of test cases. +static std::string FormatTestCaseCount(int test_case_count) { + return FormatCountableNoun(test_case_count, "test case", "test cases"); +} + +// Converts a TestPartResult::Type enum to human-friendly string +// representation. Both kNonFatalFailure and kFatalFailure are translated +// to "Failure", as the user usually doesn't care about the difference +// between the two when viewing the test result. +static const char * TestPartResultTypeToString(TestPartResult::Type type) { + switch (type) { + case TestPartResult::kSuccess: + return "Success"; + + case TestPartResult::kNonFatalFailure: + case TestPartResult::kFatalFailure: +#ifdef _MSC_VER + return "error: "; +#else + return "Failure\n"; +#endif + default: + return "Unknown result type"; + } +} + +// Prints a TestPartResult to an std::string. +static std::string PrintTestPartResultToString( + const TestPartResult& test_part_result) { + return (Message() + << internal::FormatFileLocation(test_part_result.file_name(), + test_part_result.line_number()) + << " " << TestPartResultTypeToString(test_part_result.type()) + << test_part_result.message()).GetString(); +} + +// Prints a TestPartResult. +static void PrintTestPartResult(const TestPartResult& test_part_result) { + const std::string& result = + PrintTestPartResultToString(test_part_result); + printf("%s\n", result.c_str()); + fflush(stdout); + // If the test program runs in Visual Studio or a debugger, the + // following statements add the test part result message to the Output + // window such that the user can double-click on it to jump to the + // corresponding source code location; otherwise they do nothing. +#if GTEST_OS_WINDOWS && !GTEST_OS_WINDOWS_MOBILE + // We don't call OutputDebugString*() on Windows Mobile, as printing + // to stdout is done by OutputDebugString() there already - we don't + // want the same message printed twice. + ::OutputDebugStringA(result.c_str()); + ::OutputDebugStringA("\n"); +#endif +} + +// class PrettyUnitTestResultPrinter + +namespace internal { + +enum GTestColor { + COLOR_DEFAULT, + COLOR_RED, + COLOR_GREEN, + COLOR_YELLOW +}; + +#if GTEST_OS_WINDOWS && !GTEST_OS_WINDOWS_MOBILE + +// Returns the character attribute for the given color. +WORD GetColorAttribute(GTestColor color) { + switch (color) { + case COLOR_RED: return FOREGROUND_RED; + case COLOR_GREEN: return FOREGROUND_GREEN; + case COLOR_YELLOW: return FOREGROUND_RED | FOREGROUND_GREEN; + default: return 0; + } +} + +#else + +// Returns the ANSI color code for the given color. COLOR_DEFAULT is +// an invalid input. +const char* GetAnsiColorCode(GTestColor color) { + switch (color) { + case COLOR_RED: return "1"; + case COLOR_GREEN: return "2"; + case COLOR_YELLOW: return "3"; + default: return NULL; + }; +} + +#endif // GTEST_OS_WINDOWS && !GTEST_OS_WINDOWS_MOBILE + +// Returns true iff Google Test should use colors in the output. +bool ShouldUseColor(bool stdout_is_tty) { + const char* const gtest_color = GTEST_FLAG(color).c_str(); + + if (String::CaseInsensitiveCStringEquals(gtest_color, "auto")) { +#if GTEST_OS_WINDOWS + // On Windows the TERM variable is usually not set, but the + // console there does support colors. + return stdout_is_tty; +#else + // On non-Windows platforms, we rely on the TERM variable. + const char* const term = posix::GetEnv("TERM"); + const bool term_supports_color = + String::CStringEquals(term, "xterm") || + String::CStringEquals(term, "xterm-color") || + String::CStringEquals(term, "xterm-256color") || + String::CStringEquals(term, "screen") || + String::CStringEquals(term, "linux") || + String::CStringEquals(term, "cygwin"); + return stdout_is_tty && term_supports_color; +#endif // GTEST_OS_WINDOWS + } + + return String::CaseInsensitiveCStringEquals(gtest_color, "yes") || + String::CaseInsensitiveCStringEquals(gtest_color, "true") || + String::CaseInsensitiveCStringEquals(gtest_color, "t") || + String::CStringEquals(gtest_color, "1"); + // We take "yes", "true", "t", and "1" as meaning "yes". If the + // value is neither one of these nor "auto", we treat it as "no" to + // be conservative. +} + +// Helpers for printing colored strings to stdout. Note that on Windows, we +// cannot simply emit special characters and have the terminal change colors. +// This routine must actually emit the characters rather than return a string +// that would be colored when printed, as can be done on Linux. +void ColoredPrintf(GTestColor color, const char* fmt, ...) { + va_list args; + va_start(args, fmt); + +#if GTEST_OS_WINDOWS_MOBILE || GTEST_OS_SYMBIAN || GTEST_OS_ZOS || GTEST_OS_IOS + const bool use_color = false; +#else + static const bool in_color_mode = + ShouldUseColor(posix::IsATTY(posix::FileNo(stdout)) != 0); + const bool use_color = in_color_mode && (color != COLOR_DEFAULT); +#endif // GTEST_OS_WINDOWS_MOBILE || GTEST_OS_SYMBIAN || GTEST_OS_ZOS + // The '!= 0' comparison is necessary to satisfy MSVC 7.1. + + if (!use_color) { + vprintf(fmt, args); + va_end(args); + return; + } + +#if GTEST_OS_WINDOWS && !GTEST_OS_WINDOWS_MOBILE + const HANDLE stdout_handle = GetStdHandle(STD_OUTPUT_HANDLE); + + // Gets the current text color. + CONSOLE_SCREEN_BUFFER_INFO buffer_info; + GetConsoleScreenBufferInfo(stdout_handle, &buffer_info); + const WORD old_color_attrs = buffer_info.wAttributes; + + // We need to flush the stream buffers into the console before each + // SetConsoleTextAttribute call lest it affect the text that is already + // printed but has not yet reached the console. + fflush(stdout); + SetConsoleTextAttribute(stdout_handle, + GetColorAttribute(color) | FOREGROUND_INTENSITY); + vprintf(fmt, args); + + fflush(stdout); + // Restores the text color. + SetConsoleTextAttribute(stdout_handle, old_color_attrs); +#else + printf("\033[0;3%sm", GetAnsiColorCode(color)); + vprintf(fmt, args); + printf("\033[m"); // Resets the terminal to default. +#endif // GTEST_OS_WINDOWS && !GTEST_OS_WINDOWS_MOBILE + va_end(args); +} + +void PrintFullTestCommentIfPresent(const TestInfo& test_info) { + const char* const type_param = test_info.type_param(); + const char* const value_param = test_info.value_param(); + + if (type_param != NULL || value_param != NULL) { + printf(", where "); + if (type_param != NULL) { + printf("TypeParam = %s", type_param); + if (value_param != NULL) + printf(" and "); + } + if (value_param != NULL) { + printf("GetParam() = %s", value_param); + } + } +} + +// This class implements the TestEventListener interface. +// +// Class PrettyUnitTestResultPrinter is copyable. +class PrettyUnitTestResultPrinter : public TestEventListener { + public: + PrettyUnitTestResultPrinter() {} + static void PrintTestName(const char * test_case, const char * test) { + printf("%s.%s", test_case, test); + } + + // The following methods override what's in the TestEventListener class. + virtual void OnTestProgramStart(const UnitTest& /*unit_test*/) {} + virtual void OnTestIterationStart(const UnitTest& unit_test, int iteration); + virtual void OnEnvironmentsSetUpStart(const UnitTest& unit_test); + virtual void OnEnvironmentsSetUpEnd(const UnitTest& /*unit_test*/) {} + virtual void OnTestCaseStart(const TestCase& test_case); + virtual void OnTestStart(const TestInfo& test_info); + virtual void OnTestPartResult(const TestPartResult& result); + virtual void OnTestEnd(const TestInfo& test_info); + virtual void OnTestCaseEnd(const TestCase& test_case); + virtual void OnEnvironmentsTearDownStart(const UnitTest& unit_test); + virtual void OnEnvironmentsTearDownEnd(const UnitTest& /*unit_test*/) {} + virtual void OnTestIterationEnd(const UnitTest& unit_test, int iteration); + virtual void OnTestProgramEnd(const UnitTest& /*unit_test*/) {} + + private: + static void PrintFailedTests(const UnitTest& unit_test); +}; + + // Fired before each iteration of tests starts. +void PrettyUnitTestResultPrinter::OnTestIterationStart( + const UnitTest& unit_test, int iteration) { + if (GTEST_FLAG(repeat) != 1) + printf("\nRepeating all tests (iteration %d) . . .\n\n", iteration + 1); + + const char* const filter = GTEST_FLAG(filter).c_str(); + + // Prints the filter if it's not *. This reminds the user that some + // tests may be skipped. + if (!String::CStringEquals(filter, kUniversalFilter)) { + ColoredPrintf(COLOR_YELLOW, + "Note: %s filter = %s\n", GTEST_NAME_, filter); + } + + if (internal::ShouldShard(kTestTotalShards, kTestShardIndex, false)) { + const Int32 shard_index = Int32FromEnvOrDie(kTestShardIndex, -1); + ColoredPrintf(COLOR_YELLOW, + "Note: This is test shard %d of %s.\n", + static_cast(shard_index) + 1, + internal::posix::GetEnv(kTestTotalShards)); + } + + if (GTEST_FLAG(shuffle)) { + ColoredPrintf(COLOR_YELLOW, + "Note: Randomizing tests' orders with a seed of %d .\n", + unit_test.random_seed()); + } + + ColoredPrintf(COLOR_GREEN, "[==========] "); + printf("Running %s from %s.\n", + FormatTestCount(unit_test.test_to_run_count()).c_str(), + FormatTestCaseCount(unit_test.test_case_to_run_count()).c_str()); + fflush(stdout); +} + +void PrettyUnitTestResultPrinter::OnEnvironmentsSetUpStart( + const UnitTest& /*unit_test*/) { + ColoredPrintf(COLOR_GREEN, "[----------] "); + printf("Global test environment set-up.\n"); + fflush(stdout); +} + +void PrettyUnitTestResultPrinter::OnTestCaseStart(const TestCase& test_case) { + const std::string counts = + FormatCountableNoun(test_case.test_to_run_count(), "test", "tests"); + ColoredPrintf(COLOR_GREEN, "[----------] "); + printf("%s from %s", counts.c_str(), test_case.name()); + if (test_case.type_param() == NULL) { + printf("\n"); + } else { + printf(", where TypeParam = %s\n", test_case.type_param()); + } + fflush(stdout); +} + +void PrettyUnitTestResultPrinter::OnTestStart(const TestInfo& test_info) { + ColoredPrintf(COLOR_GREEN, "[ RUN ] "); + PrintTestName(test_info.test_case_name(), test_info.name()); + printf("\n"); + fflush(stdout); +} + +// Called after an assertion failure. +void PrettyUnitTestResultPrinter::OnTestPartResult( + const TestPartResult& result) { + // If the test part succeeded, we don't need to do anything. + if (result.type() == TestPartResult::kSuccess) + return; + + // Print failure message from the assertion (e.g. expected this and got that). + PrintTestPartResult(result); + fflush(stdout); +} + +void PrettyUnitTestResultPrinter::OnTestEnd(const TestInfo& test_info) { + if (test_info.result()->Passed()) { + ColoredPrintf(COLOR_GREEN, "[ OK ] "); + } else { + ColoredPrintf(COLOR_RED, "[ FAILED ] "); + } + PrintTestName(test_info.test_case_name(), test_info.name()); + if (test_info.result()->Failed()) + PrintFullTestCommentIfPresent(test_info); + + if (GTEST_FLAG(print_time)) { + printf(" (%s ms)\n", internal::StreamableToString( + test_info.result()->elapsed_time()).c_str()); + } else { + printf("\n"); + } + fflush(stdout); +} + +void PrettyUnitTestResultPrinter::OnTestCaseEnd(const TestCase& test_case) { + if (!GTEST_FLAG(print_time)) return; + + const std::string counts = + FormatCountableNoun(test_case.test_to_run_count(), "test", "tests"); + ColoredPrintf(COLOR_GREEN, "[----------] "); + printf("%s from %s (%s ms total)\n\n", + counts.c_str(), test_case.name(), + internal::StreamableToString(test_case.elapsed_time()).c_str()); + fflush(stdout); +} + +void PrettyUnitTestResultPrinter::OnEnvironmentsTearDownStart( + const UnitTest& /*unit_test*/) { + ColoredPrintf(COLOR_GREEN, "[----------] "); + printf("Global test environment tear-down\n"); + fflush(stdout); +} + +// Internal helper for printing the list of failed tests. +void PrettyUnitTestResultPrinter::PrintFailedTests(const UnitTest& unit_test) { + const int failed_test_count = unit_test.failed_test_count(); + if (failed_test_count == 0) { + return; + } + + for (int i = 0; i < unit_test.total_test_case_count(); ++i) { + const TestCase& test_case = *unit_test.GetTestCase(i); + if (!test_case.should_run() || (test_case.failed_test_count() == 0)) { + continue; + } + for (int j = 0; j < test_case.total_test_count(); ++j) { + const TestInfo& test_info = *test_case.GetTestInfo(j); + if (!test_info.should_run() || test_info.result()->Passed()) { + continue; + } + ColoredPrintf(COLOR_RED, "[ FAILED ] "); + printf("%s.%s", test_case.name(), test_info.name()); + PrintFullTestCommentIfPresent(test_info); + printf("\n"); + } + } +} + +void PrettyUnitTestResultPrinter::OnTestIterationEnd(const UnitTest& unit_test, + int /*iteration*/) { + ColoredPrintf(COLOR_GREEN, "[==========] "); + printf("%s from %s ran.", + FormatTestCount(unit_test.test_to_run_count()).c_str(), + FormatTestCaseCount(unit_test.test_case_to_run_count()).c_str()); + if (GTEST_FLAG(print_time)) { + printf(" (%s ms total)", + internal::StreamableToString(unit_test.elapsed_time()).c_str()); + } + printf("\n"); + ColoredPrintf(COLOR_GREEN, "[ PASSED ] "); + printf("%s.\n", FormatTestCount(unit_test.successful_test_count()).c_str()); + + int num_failures = unit_test.failed_test_count(); + if (!unit_test.Passed()) { + const int failed_test_count = unit_test.failed_test_count(); + ColoredPrintf(COLOR_RED, "[ FAILED ] "); + printf("%s, listed below:\n", FormatTestCount(failed_test_count).c_str()); + PrintFailedTests(unit_test); + printf("\n%2d FAILED %s\n", num_failures, + num_failures == 1 ? "TEST" : "TESTS"); + } + + int num_disabled = unit_test.disabled_test_count(); + if (num_disabled && !GTEST_FLAG(also_run_disabled_tests)) { + if (!num_failures) { + printf("\n"); // Add a spacer if no FAILURE banner is displayed. + } + ColoredPrintf(COLOR_YELLOW, + " YOU HAVE %d DISABLED %s\n\n", + num_disabled, + num_disabled == 1 ? "TEST" : "TESTS"); + } + // Ensure that Google Test output is printed before, e.g., heapchecker output. + fflush(stdout); +} + +// End PrettyUnitTestResultPrinter + +// class TestEventRepeater +// +// This class forwards events to other event listeners. +class TestEventRepeater : public TestEventListener { + public: + TestEventRepeater() : forwarding_enabled_(true) {} + virtual ~TestEventRepeater(); + void Append(TestEventListener *listener); + TestEventListener* Release(TestEventListener* listener); + + // Controls whether events will be forwarded to listeners_. Set to false + // in death test child processes. + bool forwarding_enabled() const { return forwarding_enabled_; } + void set_forwarding_enabled(bool enable) { forwarding_enabled_ = enable; } + + virtual void OnTestProgramStart(const UnitTest& unit_test); + virtual void OnTestIterationStart(const UnitTest& unit_test, int iteration); + virtual void OnEnvironmentsSetUpStart(const UnitTest& unit_test); + virtual void OnEnvironmentsSetUpEnd(const UnitTest& unit_test); + virtual void OnTestCaseStart(const TestCase& test_case); + virtual void OnTestStart(const TestInfo& test_info); + virtual void OnTestPartResult(const TestPartResult& result); + virtual void OnTestEnd(const TestInfo& test_info); + virtual void OnTestCaseEnd(const TestCase& test_case); + virtual void OnEnvironmentsTearDownStart(const UnitTest& unit_test); + virtual void OnEnvironmentsTearDownEnd(const UnitTest& unit_test); + virtual void OnTestIterationEnd(const UnitTest& unit_test, int iteration); + virtual void OnTestProgramEnd(const UnitTest& unit_test); + + private: + // Controls whether events will be forwarded to listeners_. Set to false + // in death test child processes. + bool forwarding_enabled_; + // The list of listeners that receive events. + std::vector listeners_; + + GTEST_DISALLOW_COPY_AND_ASSIGN_(TestEventRepeater); +}; + +TestEventRepeater::~TestEventRepeater() { + ForEach(listeners_, Delete); +} + +void TestEventRepeater::Append(TestEventListener *listener) { + listeners_.push_back(listener); +} + +// TODO(vladl@google.com): Factor the search functionality into Vector::Find. +TestEventListener* TestEventRepeater::Release(TestEventListener *listener) { + for (size_t i = 0; i < listeners_.size(); ++i) { + if (listeners_[i] == listener) { + listeners_.erase(listeners_.begin() + i); + return listener; + } + } + + return NULL; +} + +// Since most methods are very similar, use macros to reduce boilerplate. +// This defines a member that forwards the call to all listeners. +#define GTEST_REPEATER_METHOD_(Name, Type) \ +void TestEventRepeater::Name(const Type& parameter) { \ + if (forwarding_enabled_) { \ + for (size_t i = 0; i < listeners_.size(); i++) { \ + listeners_[i]->Name(parameter); \ + } \ + } \ +} +// This defines a member that forwards the call to all listeners in reverse +// order. +#define GTEST_REVERSE_REPEATER_METHOD_(Name, Type) \ +void TestEventRepeater::Name(const Type& parameter) { \ + if (forwarding_enabled_) { \ + for (int i = static_cast(listeners_.size()) - 1; i >= 0; i--) { \ + listeners_[i]->Name(parameter); \ + } \ + } \ +} + +GTEST_REPEATER_METHOD_(OnTestProgramStart, UnitTest) +GTEST_REPEATER_METHOD_(OnEnvironmentsSetUpStart, UnitTest) +GTEST_REPEATER_METHOD_(OnTestCaseStart, TestCase) +GTEST_REPEATER_METHOD_(OnTestStart, TestInfo) +GTEST_REPEATER_METHOD_(OnTestPartResult, TestPartResult) +GTEST_REPEATER_METHOD_(OnEnvironmentsTearDownStart, UnitTest) +GTEST_REVERSE_REPEATER_METHOD_(OnEnvironmentsSetUpEnd, UnitTest) +GTEST_REVERSE_REPEATER_METHOD_(OnEnvironmentsTearDownEnd, UnitTest) +GTEST_REVERSE_REPEATER_METHOD_(OnTestEnd, TestInfo) +GTEST_REVERSE_REPEATER_METHOD_(OnTestCaseEnd, TestCase) +GTEST_REVERSE_REPEATER_METHOD_(OnTestProgramEnd, UnitTest) + +#undef GTEST_REPEATER_METHOD_ +#undef GTEST_REVERSE_REPEATER_METHOD_ + +void TestEventRepeater::OnTestIterationStart(const UnitTest& unit_test, + int iteration) { + if (forwarding_enabled_) { + for (size_t i = 0; i < listeners_.size(); i++) { + listeners_[i]->OnTestIterationStart(unit_test, iteration); + } + } +} + +void TestEventRepeater::OnTestIterationEnd(const UnitTest& unit_test, + int iteration) { + if (forwarding_enabled_) { + for (int i = static_cast(listeners_.size()) - 1; i >= 0; i--) { + listeners_[i]->OnTestIterationEnd(unit_test, iteration); + } + } +} + +// End TestEventRepeater + +// This class generates an XML output file. +class XmlUnitTestResultPrinter : public EmptyTestEventListener { + public: + explicit XmlUnitTestResultPrinter(const char* output_file); + + virtual void OnTestIterationEnd(const UnitTest& unit_test, int iteration); + + private: + // Is c a whitespace character that is normalized to a space character + // when it appears in an XML attribute value? + static bool IsNormalizableWhitespace(char c) { + return c == 0x9 || c == 0xA || c == 0xD; + } + + // May c appear in a well-formed XML document? + static bool IsValidXmlCharacter(char c) { + return IsNormalizableWhitespace(c) || c >= 0x20; + } + + // Returns an XML-escaped copy of the input string str. If + // is_attribute is true, the text is meant to appear as an attribute + // value, and normalizable whitespace is preserved by replacing it + // with character references. + static std::string EscapeXml(const char* str, bool is_attribute); + + // Returns the given string with all characters invalid in XML removed. + static string RemoveInvalidXmlCharacters(const string& str); + + // Convenience wrapper around EscapeXml when str is an attribute value. + static std::string EscapeXmlAttribute(const char* str) { + return EscapeXml(str, true); + } + + // Convenience wrapper around EscapeXml when str is not an attribute value. + static std::string EscapeXmlText(const char* str) { + return EscapeXml(str, false); + } + + // Streams an XML CDATA section, escaping invalid CDATA sequences as needed. + static void OutputXmlCDataSection(::std::ostream* stream, const char* data); + + // Streams an XML representation of a TestInfo object. + static void OutputXmlTestInfo(::std::ostream* stream, + const char* test_case_name, + const TestInfo& test_info); + + // Prints an XML representation of a TestCase object + static void PrintXmlTestCase(FILE* out, const TestCase& test_case); + + // Prints an XML summary of unit_test to output stream out. + static void PrintXmlUnitTest(FILE* out, const UnitTest& unit_test); + + // Produces a string representing the test properties in a result as space + // delimited XML attributes based on the property key="value" pairs. + // When the std::string is not empty, it includes a space at the beginning, + // to delimit this attribute from prior attributes. + static std::string TestPropertiesAsXmlAttributes(const TestResult& result); + + // The output file. + const std::string output_file_; + + GTEST_DISALLOW_COPY_AND_ASSIGN_(XmlUnitTestResultPrinter); +}; + +// Creates a new XmlUnitTestResultPrinter. +XmlUnitTestResultPrinter::XmlUnitTestResultPrinter(const char* output_file) + : output_file_(output_file) { + if (output_file_.c_str() == NULL || output_file_.empty()) { + fprintf(stderr, "XML output file may not be null\n"); + fflush(stderr); + exit(EXIT_FAILURE); + } +} + +// Called after the unit test ends. +void XmlUnitTestResultPrinter::OnTestIterationEnd(const UnitTest& unit_test, + int /*iteration*/) { + FILE* xmlout = NULL; + FilePath output_file(output_file_); + FilePath output_dir(output_file.RemoveFileName()); + + if (output_dir.CreateDirectoriesRecursively()) { + xmlout = posix::FOpen(output_file_.c_str(), "w"); + } + if (xmlout == NULL) { + // TODO(wan): report the reason of the failure. + // + // We don't do it for now as: + // + // 1. There is no urgent need for it. + // 2. It's a bit involved to make the errno variable thread-safe on + // all three operating systems (Linux, Windows, and Mac OS). + // 3. To interpret the meaning of errno in a thread-safe way, + // we need the strerror_r() function, which is not available on + // Windows. + fprintf(stderr, + "Unable to open file \"%s\"\n", + output_file_.c_str()); + fflush(stderr); + exit(EXIT_FAILURE); + } + PrintXmlUnitTest(xmlout, unit_test); + fclose(xmlout); +} + +// Returns an XML-escaped copy of the input string str. If is_attribute +// is true, the text is meant to appear as an attribute value, and +// normalizable whitespace is preserved by replacing it with character +// references. +// +// Invalid XML characters in str, if any, are stripped from the output. +// It is expected that most, if not all, of the text processed by this +// module will consist of ordinary English text. +// If this module is ever modified to produce version 1.1 XML output, +// most invalid characters can be retained using character references. +// TODO(wan): It might be nice to have a minimally invasive, human-readable +// escaping scheme for invalid characters, rather than dropping them. +std::string XmlUnitTestResultPrinter::EscapeXml( + const char* str, bool is_attribute) { + Message m; + + if (str != NULL) { + for (const char* src = str; *src; ++src) { + switch (*src) { + case '<': + m << "<"; + break; + case '>': + m << ">"; + break; + case '&': + m << "&"; + break; + case '\'': + if (is_attribute) + m << "'"; + else + m << '\''; + break; + case '"': + if (is_attribute) + m << """; + else + m << '"'; + break; + default: + if (IsValidXmlCharacter(*src)) { + if (is_attribute && IsNormalizableWhitespace(*src)) + m << String::Format("&#x%02X;", unsigned(*src)); + else + m << *src; + } + break; + } + } + } + + return m.GetString(); +} + +// Returns the given string with all characters invalid in XML removed. +// Currently invalid characters are dropped from the string. An +// alternative is to replace them with certain characters such as . or ?. +string XmlUnitTestResultPrinter::RemoveInvalidXmlCharacters(const string& str) { + string output; + output.reserve(str.size()); + for (string::const_iterator it = str.begin(); it != str.end(); ++it) + if (IsValidXmlCharacter(*it)) + output.push_back(*it); + + return output; +} + +// The following routines generate an XML representation of a UnitTest +// object. +// +// This is how Google Test concepts map to the DTD: +// +// <-- corresponds to a UnitTest object +// <-- corresponds to a TestCase object +// <-- corresponds to a TestInfo object +// ... +// ... +// ... +// <-- individual assertion failures +// +// +// + +// Formats the given time in milliseconds as seconds. +std::string FormatTimeInMillisAsSeconds(TimeInMillis ms) { + ::std::stringstream ss; + ss << ms/1000.0; + return ss.str(); +} + +// Converts the given epoch time in milliseconds to a date string in the ISO +// 8601 format, without the timezone information. +std::string FormatEpochTimeInMillisAsIso8601(TimeInMillis ms) { + // Using non-reentrant version as localtime_r is not portable. + time_t seconds = static_cast(ms / 1000); +#ifdef _MSC_VER +# pragma warning(push) // Saves the current warning state. +# pragma warning(disable:4996) // Temporarily disables warning 4996 + // (function or variable may be unsafe). + const struct tm* const time_struct = localtime(&seconds); // NOLINT +# pragma warning(pop) // Restores the warning state again. +#else + const struct tm* const time_struct = localtime(&seconds); // NOLINT +#endif + if (time_struct == NULL) + return ""; // Invalid ms value + + return String::Format("%d-%02d-%02dT%02d:%02d:%02d", // YYYY-MM-DDThh:mm:ss + time_struct->tm_year + 1900, + time_struct->tm_mon + 1, + time_struct->tm_mday, + time_struct->tm_hour, + time_struct->tm_min, + time_struct->tm_sec); +} + +// Streams an XML CDATA section, escaping invalid CDATA sequences as needed. +void XmlUnitTestResultPrinter::OutputXmlCDataSection(::std::ostream* stream, + const char* data) { + const char* segment = data; + *stream << ""); + if (next_segment != NULL) { + stream->write( + segment, static_cast(next_segment - segment)); + *stream << "]]>]]>"); + } else { + *stream << segment; + break; + } + } + *stream << "]]>"; +} + +// Prints an XML representation of a TestInfo object. +// TODO(wan): There is also value in printing properties with the plain printer. +void XmlUnitTestResultPrinter::OutputXmlTestInfo(::std::ostream* stream, + const char* test_case_name, + const TestInfo& test_info) { + const TestResult& result = *test_info.result(); + *stream << " \n"; + } + const string location = internal::FormatCompilerIndependentFileLocation( + part.file_name(), part.line_number()); + const string summary = location + "\n" + part.summary(); + *stream << " "; + const string detail = location + "\n" + part.message(); + OutputXmlCDataSection(stream, RemoveInvalidXmlCharacters(detail).c_str()); + *stream << "\n"; + } + } + + if (failures == 0) + *stream << " />\n"; + else + *stream << " \n"; +} + +// Prints an XML representation of a TestCase object +void XmlUnitTestResultPrinter::PrintXmlTestCase(FILE* out, + const TestCase& test_case) { + fprintf(out, + " \n", + FormatTimeInMillisAsSeconds(test_case.elapsed_time()).c_str()); + for (int i = 0; i < test_case.total_test_count(); ++i) { + ::std::stringstream stream; + OutputXmlTestInfo(&stream, test_case.name(), *test_case.GetTestInfo(i)); + fprintf(out, "%s", StringStreamToString(&stream).c_str()); + } + fprintf(out, " \n"); +} + +// Prints an XML summary of unit_test to output stream out. +void XmlUnitTestResultPrinter::PrintXmlUnitTest(FILE* out, + const UnitTest& unit_test) { + fprintf(out, "\n"); + fprintf(out, + "\n"); + for (int i = 0; i < unit_test.total_test_case_count(); ++i) + PrintXmlTestCase(out, *unit_test.GetTestCase(i)); + fprintf(out, "\n"); +} + +// Produces a string representing the test properties in a result as space +// delimited XML attributes based on the property key="value" pairs. +std::string XmlUnitTestResultPrinter::TestPropertiesAsXmlAttributes( + const TestResult& result) { + Message attributes; + for (int i = 0; i < result.test_property_count(); ++i) { + const TestProperty& property = result.GetTestProperty(i); + attributes << " " << property.key() << "=" + << "\"" << EscapeXmlAttribute(property.value()) << "\""; + } + return attributes.GetString(); +} + +// End XmlUnitTestResultPrinter + +#if GTEST_CAN_STREAM_RESULTS_ + +// Streams test results to the given port on the given host machine. +class StreamingListener : public EmptyTestEventListener { + public: + // Escapes '=', '&', '%', and '\n' characters in str as "%xx". + static string UrlEncode(const char* str); + + StreamingListener(const string& host, const string& port) + : sockfd_(-1), host_name_(host), port_num_(port) { + MakeConnection(); + Send("gtest_streaming_protocol_version=1.0\n"); + } + + virtual ~StreamingListener() { + if (sockfd_ != -1) + CloseConnection(); + } + + void OnTestProgramStart(const UnitTest& /* unit_test */) { + Send("event=TestProgramStart\n"); + } + + void OnTestProgramEnd(const UnitTest& unit_test) { + // Note that Google Test current only report elapsed time for each + // test iteration, not for the entire test program. + Send(String::Format("event=TestProgramEnd&passed=%d\n", + unit_test.Passed())); + + // Notify the streaming server to stop. + CloseConnection(); + } + + void OnTestIterationStart(const UnitTest& /* unit_test */, int iteration) { + Send(String::Format("event=TestIterationStart&iteration=%d\n", + iteration)); + } + + void OnTestIterationEnd(const UnitTest& unit_test, int /* iteration */) { + Send(String::Format("event=TestIterationEnd&passed=%d&elapsed_time=%sms\n", + unit_test.Passed(), + StreamableToString(unit_test.elapsed_time()).c_str())); + } + + void OnTestCaseStart(const TestCase& test_case) { + Send(String::Format("event=TestCaseStart&name=%s\n", test_case.name())); + } + + void OnTestCaseEnd(const TestCase& test_case) { + Send(String::Format("event=TestCaseEnd&passed=%d&elapsed_time=%sms\n", + test_case.Passed(), + StreamableToString(test_case.elapsed_time()).c_str())); + } + + void OnTestStart(const TestInfo& test_info) { + Send(String::Format("event=TestStart&name=%s\n", test_info.name())); + } + + void OnTestEnd(const TestInfo& test_info) { + Send(String::Format( + "event=TestEnd&passed=%d&elapsed_time=%sms\n", + (test_info.result())->Passed(), + StreamableToString((test_info.result())->elapsed_time()).c_str())); + } + + void OnTestPartResult(const TestPartResult& test_part_result) { + const char* file_name = test_part_result.file_name(); + if (file_name == NULL) + file_name = ""; + Send(String::Format("event=TestPartResult&file=%s&line=%d&message=", + UrlEncode(file_name).c_str(), + test_part_result.line_number())); + Send(UrlEncode(test_part_result.message()) + "\n"); + } + + private: + // Creates a client socket and connects to the server. + void MakeConnection(); + + // Closes the socket. + void CloseConnection() { + GTEST_CHECK_(sockfd_ != -1) + << "CloseConnection() can be called only when there is a connection."; + + close(sockfd_); + sockfd_ = -1; + } + + // Sends a string to the socket. + void Send(const string& message) { + GTEST_CHECK_(sockfd_ != -1) + << "Send() can be called only when there is a connection."; + + const int len = static_cast(message.length()); + if (write(sockfd_, message.c_str(), len) != len) { + GTEST_LOG_(WARNING) + << "stream_result_to: failed to stream to " + << host_name_ << ":" << port_num_; + } + } + + int sockfd_; // socket file descriptor + const string host_name_; + const string port_num_; + + GTEST_DISALLOW_COPY_AND_ASSIGN_(StreamingListener); +}; // class StreamingListener + +// Checks if str contains '=', '&', '%' or '\n' characters. If yes, +// replaces them by "%xx" where xx is their hexadecimal value. For +// example, replaces "=" with "%3D". This algorithm is O(strlen(str)) +// in both time and space -- important as the input str may contain an +// arbitrarily long test failure message and stack trace. +string StreamingListener::UrlEncode(const char* str) { + string result; + result.reserve(strlen(str) + 1); + for (char ch = *str; ch != '\0'; ch = *++str) { + switch (ch) { + case '%': + case '=': + case '&': + case '\n': + result.append(String::Format("%%%02x", static_cast(ch))); + break; + default: + result.push_back(ch); + break; + } + } + return result; +} + +void StreamingListener::MakeConnection() { + GTEST_CHECK_(sockfd_ == -1) + << "MakeConnection() can't be called when there is already a connection."; + + addrinfo hints; + memset(&hints, 0, sizeof(hints)); + hints.ai_family = AF_UNSPEC; // To allow both IPv4 and IPv6 addresses. + hints.ai_socktype = SOCK_STREAM; + addrinfo* servinfo = NULL; + + // Use the getaddrinfo() to get a linked list of IP addresses for + // the given host name. + const int error_num = getaddrinfo( + host_name_.c_str(), port_num_.c_str(), &hints, &servinfo); + if (error_num != 0) { + GTEST_LOG_(WARNING) << "stream_result_to: getaddrinfo() failed: " + << gai_strerror(error_num); + } + + // Loop through all the results and connect to the first we can. + for (addrinfo* cur_addr = servinfo; sockfd_ == -1 && cur_addr != NULL; + cur_addr = cur_addr->ai_next) { + sockfd_ = socket( + cur_addr->ai_family, cur_addr->ai_socktype, cur_addr->ai_protocol); + if (sockfd_ != -1) { + // Connect the client socket to the server socket. + if (connect(sockfd_, cur_addr->ai_addr, cur_addr->ai_addrlen) == -1) { + close(sockfd_); + sockfd_ = -1; + } + } + } + + freeaddrinfo(servinfo); // all done with this structure + + if (sockfd_ == -1) { + GTEST_LOG_(WARNING) << "stream_result_to: failed to connect to " + << host_name_ << ":" << port_num_; + } +} + +// End of class Streaming Listener +#endif // GTEST_CAN_STREAM_RESULTS__ + +// Class ScopedTrace + +// Pushes the given source file location and message onto a per-thread +// trace stack maintained by Google Test. +ScopedTrace::ScopedTrace(const char* file, int line, const Message& message) + GTEST_LOCK_EXCLUDED_(&UnitTest::mutex_) { + TraceInfo trace; + trace.file = file; + trace.line = line; + trace.message = message.GetString(); + + UnitTest::GetInstance()->PushGTestTrace(trace); +} + +// Pops the info pushed by the c'tor. +ScopedTrace::~ScopedTrace() + GTEST_LOCK_EXCLUDED_(&UnitTest::mutex_) { + UnitTest::GetInstance()->PopGTestTrace(); +} + + +// class OsStackTraceGetter + +// Returns the current OS stack trace as an std::string. Parameters: +// +// max_depth - the maximum number of stack frames to be included +// in the trace. +// skip_count - the number of top frames to be skipped; doesn't count +// against max_depth. +// +string OsStackTraceGetter::CurrentStackTrace(int /* max_depth */, + int /* skip_count */) + GTEST_LOCK_EXCLUDED_(mutex_) { + return ""; +} + +void OsStackTraceGetter::UponLeavingGTest() + GTEST_LOCK_EXCLUDED_(mutex_) { +} + +const char* const +OsStackTraceGetter::kElidedFramesMarker = + "... " GTEST_NAME_ " internal frames ..."; + +} // namespace internal + +// class TestEventListeners + +TestEventListeners::TestEventListeners() + : repeater_(new internal::TestEventRepeater()), + default_result_printer_(NULL), + default_xml_generator_(NULL) { +} + +TestEventListeners::~TestEventListeners() { delete repeater_; } + +// Returns the standard listener responsible for the default console +// output. Can be removed from the listeners list to shut down default +// console output. Note that removing this object from the listener list +// with Release transfers its ownership to the user. +void TestEventListeners::Append(TestEventListener* listener) { + repeater_->Append(listener); +} + +// Removes the given event listener from the list and returns it. It then +// becomes the caller's responsibility to delete the listener. Returns +// NULL if the listener is not found in the list. +TestEventListener* TestEventListeners::Release(TestEventListener* listener) { + if (listener == default_result_printer_) + default_result_printer_ = NULL; + else if (listener == default_xml_generator_) + default_xml_generator_ = NULL; + return repeater_->Release(listener); +} + +// Returns repeater that broadcasts the TestEventListener events to all +// subscribers. +TestEventListener* TestEventListeners::repeater() { return repeater_; } + +// Sets the default_result_printer attribute to the provided listener. +// The listener is also added to the listener list and previous +// default_result_printer is removed from it and deleted. The listener can +// also be NULL in which case it will not be added to the list. Does +// nothing if the previous and the current listener objects are the same. +void TestEventListeners::SetDefaultResultPrinter(TestEventListener* listener) { + if (default_result_printer_ != listener) { + // It is an error to pass this method a listener that is already in the + // list. + delete Release(default_result_printer_); + default_result_printer_ = listener; + if (listener != NULL) + Append(listener); + } +} + +// Sets the default_xml_generator attribute to the provided listener. The +// listener is also added to the listener list and previous +// default_xml_generator is removed from it and deleted. The listener can +// also be NULL in which case it will not be added to the list. Does +// nothing if the previous and the current listener objects are the same. +void TestEventListeners::SetDefaultXmlGenerator(TestEventListener* listener) { + if (default_xml_generator_ != listener) { + // It is an error to pass this method a listener that is already in the + // list. + delete Release(default_xml_generator_); + default_xml_generator_ = listener; + if (listener != NULL) + Append(listener); + } +} + +// Controls whether events will be forwarded by the repeater to the +// listeners in the list. +bool TestEventListeners::EventForwardingEnabled() const { + return repeater_->forwarding_enabled(); +} + +void TestEventListeners::SuppressEventForwarding() { + repeater_->set_forwarding_enabled(false); +} + +// class UnitTest + +// Gets the singleton UnitTest object. The first time this method is +// called, a UnitTest object is constructed and returned. Consecutive +// calls will return the same object. +// +// We don't protect this under mutex_ as a user is not supposed to +// call this before main() starts, from which point on the return +// value will never change. +UnitTest * UnitTest::GetInstance() { + // When compiled with MSVC 7.1 in optimized mode, destroying the + // UnitTest object upon exiting the program messes up the exit code, + // causing successful tests to appear failed. We have to use a + // different implementation in this case to bypass the compiler bug. + // This implementation makes the compiler happy, at the cost of + // leaking the UnitTest object. + + // CodeGear C++Builder insists on a public destructor for the + // default implementation. Use this implementation to keep good OO + // design with private destructor. + +#if (_MSC_VER == 1310 && !defined(_DEBUG)) || defined(__BORLANDC__) + static UnitTest* const instance = new UnitTest; + return instance; +#else + static UnitTest instance; + return &instance; +#endif // (_MSC_VER == 1310 && !defined(_DEBUG)) || defined(__BORLANDC__) +} + +// Gets the number of successful test cases. +int UnitTest::successful_test_case_count() const { + return impl()->successful_test_case_count(); +} + +// Gets the number of failed test cases. +int UnitTest::failed_test_case_count() const { + return impl()->failed_test_case_count(); +} + +// Gets the number of all test cases. +int UnitTest::total_test_case_count() const { + return impl()->total_test_case_count(); +} + +// Gets the number of all test cases that contain at least one test +// that should run. +int UnitTest::test_case_to_run_count() const { + return impl()->test_case_to_run_count(); +} + +// Gets the number of successful tests. +int UnitTest::successful_test_count() const { + return impl()->successful_test_count(); +} + +// Gets the number of failed tests. +int UnitTest::failed_test_count() const { return impl()->failed_test_count(); } + +// Gets the number of disabled tests. +int UnitTest::disabled_test_count() const { + return impl()->disabled_test_count(); +} + +// Gets the number of all tests. +int UnitTest::total_test_count() const { return impl()->total_test_count(); } + +// Gets the number of tests that should run. +int UnitTest::test_to_run_count() const { return impl()->test_to_run_count(); } + +// Gets the time of the test program start, in ms from the start of the +// UNIX epoch. +internal::TimeInMillis UnitTest::start_timestamp() const { + return impl()->start_timestamp(); +} + +// Gets the elapsed time, in milliseconds. +internal::TimeInMillis UnitTest::elapsed_time() const { + return impl()->elapsed_time(); +} + +// Returns true iff the unit test passed (i.e. all test cases passed). +bool UnitTest::Passed() const { return impl()->Passed(); } + +// Returns true iff the unit test failed (i.e. some test case failed +// or something outside of all tests failed). +bool UnitTest::Failed() const { return impl()->Failed(); } + +// Gets the i-th test case among all the test cases. i can range from 0 to +// total_test_case_count() - 1. If i is not in that range, returns NULL. +const TestCase* UnitTest::GetTestCase(int i) const { + return impl()->GetTestCase(i); +} + +// Gets the i-th test case among all the test cases. i can range from 0 to +// total_test_case_count() - 1. If i is not in that range, returns NULL. +TestCase* UnitTest::GetMutableTestCase(int i) { + return impl()->GetMutableTestCase(i); +} + +// Returns the list of event listeners that can be used to track events +// inside Google Test. +TestEventListeners& UnitTest::listeners() { + return *impl()->listeners(); +} + +// Registers and returns a global test environment. When a test +// program is run, all global test environments will be set-up in the +// order they were registered. After all tests in the program have +// finished, all global test environments will be torn-down in the +// *reverse* order they were registered. +// +// The UnitTest object takes ownership of the given environment. +// +// We don't protect this under mutex_, as we only support calling it +// from the main thread. +Environment* UnitTest::AddEnvironment(Environment* env) { + if (env == NULL) { + return NULL; + } + + impl_->environments().push_back(env); + return env; +} + +// Adds a TestPartResult to the current TestResult object. All Google Test +// assertion macros (e.g. ASSERT_TRUE, EXPECT_EQ, etc) eventually call +// this to report their results. The user code should use the +// assertion macros instead of calling this directly. +void UnitTest::AddTestPartResult( + TestPartResult::Type result_type, + const char* file_name, + int line_number, + const std::string& message, + const std::string& os_stack_trace) + GTEST_LOCK_EXCLUDED_(mutex_) { + Message msg; + msg << message; + + internal::MutexLock lock(&mutex_); + if (impl_->gtest_trace_stack().size() > 0) { + msg << "\n" << GTEST_NAME_ << " trace:"; + + for (int i = static_cast(impl_->gtest_trace_stack().size()); + i > 0; --i) { + const internal::TraceInfo& trace = impl_->gtest_trace_stack()[i - 1]; + msg << "\n" << internal::FormatFileLocation(trace.file, trace.line) + << " " << trace.message; + } + } + + if (os_stack_trace.c_str() != NULL && !os_stack_trace.empty()) { + msg << internal::kStackTraceMarker << os_stack_trace; + } + + const TestPartResult result = + TestPartResult(result_type, file_name, line_number, + msg.GetString().c_str()); + impl_->GetTestPartResultReporterForCurrentThread()-> + ReportTestPartResult(result); + + if (result_type != TestPartResult::kSuccess) { + // gtest_break_on_failure takes precedence over + // gtest_throw_on_failure. This allows a user to set the latter + // in the code (perhaps in order to use Google Test assertions + // with another testing framework) and specify the former on the + // command line for debugging. + if (GTEST_FLAG(break_on_failure)) { +#if GTEST_OS_WINDOWS + // Using DebugBreak on Windows allows gtest to still break into a debugger + // when a failure happens and both the --gtest_break_on_failure and + // the --gtest_catch_exceptions flags are specified. + DebugBreak(); +#else + // Dereference NULL through a volatile pointer to prevent the compiler + // from removing. We use this rather than abort() or __builtin_trap() for + // portability: Symbian doesn't implement abort() well, and some debuggers + // don't correctly trap abort(). + *static_cast(NULL) = 1; +#endif // GTEST_OS_WINDOWS + } else if (GTEST_FLAG(throw_on_failure)) { +#if GTEST_HAS_EXCEPTIONS + throw GoogleTestFailureException(result); +#else + // We cannot call abort() as it generates a pop-up in debug mode + // that cannot be suppressed in VC 7.1 or below. + exit(1); +#endif + } + } +} + +// Creates and adds a property to the current TestResult. If a property matching +// the supplied value already exists, updates its value instead. +void UnitTest::RecordPropertyForCurrentTest(const char* key, + const char* value) { + const TestProperty test_property(key, value); + impl_->current_test_result()->RecordProperty(test_property); +} + +// Runs all tests in this UnitTest object and prints the result. +// Returns 0 if successful, or 1 otherwise. +// +// We don't protect this under mutex_, as we only support calling it +// from the main thread. +int UnitTest::Run() { + // Captures the value of GTEST_FLAG(catch_exceptions). This value will be + // used for the duration of the program. + impl()->set_catch_exceptions(GTEST_FLAG(catch_exceptions)); + +#if GTEST_HAS_SEH + const bool in_death_test_child_process = + internal::GTEST_FLAG(internal_run_death_test).length() > 0; + + // Either the user wants Google Test to catch exceptions thrown by the + // tests or this is executing in the context of death test child + // process. In either case the user does not want to see pop-up dialogs + // about crashes - they are expected. + if (impl()->catch_exceptions() || in_death_test_child_process) { +# if !GTEST_OS_WINDOWS_MOBILE + // SetErrorMode doesn't exist on CE. + SetErrorMode(SEM_FAILCRITICALERRORS | SEM_NOALIGNMENTFAULTEXCEPT | + SEM_NOGPFAULTERRORBOX | SEM_NOOPENFILEERRORBOX); +# endif // !GTEST_OS_WINDOWS_MOBILE + +# if (defined(_MSC_VER) || GTEST_OS_WINDOWS_MINGW) && !GTEST_OS_WINDOWS_MOBILE + // Death test children can be terminated with _abort(). On Windows, + // _abort() can show a dialog with a warning message. This forces the + // abort message to go to stderr instead. + _set_error_mode(_OUT_TO_STDERR); +# endif + +# if _MSC_VER >= 1400 && !GTEST_OS_WINDOWS_MOBILE + // In the debug version, Visual Studio pops up a separate dialog + // offering a choice to debug the aborted program. We need to suppress + // this dialog or it will pop up for every EXPECT/ASSERT_DEATH statement + // executed. Google Test will notify the user of any unexpected + // failure via stderr. + // + // VC++ doesn't define _set_abort_behavior() prior to the version 8.0. + // Users of prior VC versions shall suffer the agony and pain of + // clicking through the countless debug dialogs. + // TODO(vladl@google.com): find a way to suppress the abort dialog() in the + // debug mode when compiled with VC 7.1 or lower. + if (!GTEST_FLAG(break_on_failure)) + _set_abort_behavior( + 0x0, // Clear the following flags: + _WRITE_ABORT_MSG | _CALL_REPORTFAULT); // pop-up window, core dump. +# endif + } +#endif // GTEST_HAS_SEH + + return internal::HandleExceptionsInMethodIfSupported( + impl(), + &internal::UnitTestImpl::RunAllTests, + "auxiliary test code (environments or event listeners)") ? 0 : 1; +} + +// Returns the working directory when the first TEST() or TEST_F() was +// executed. +const char* UnitTest::original_working_dir() const { + return impl_->original_working_dir_.c_str(); +} + +// Returns the TestCase object for the test that's currently running, +// or NULL if no test is running. +const TestCase* UnitTest::current_test_case() const + GTEST_LOCK_EXCLUDED_(mutex_) { + internal::MutexLock lock(&mutex_); + return impl_->current_test_case(); +} + +// Returns the TestInfo object for the test that's currently running, +// or NULL if no test is running. +const TestInfo* UnitTest::current_test_info() const + GTEST_LOCK_EXCLUDED_(mutex_) { + internal::MutexLock lock(&mutex_); + return impl_->current_test_info(); +} + +// Returns the random seed used at the start of the current test run. +int UnitTest::random_seed() const { return impl_->random_seed(); } + +#if GTEST_HAS_PARAM_TEST +// Returns ParameterizedTestCaseRegistry object used to keep track of +// value-parameterized tests and instantiate and register them. +internal::ParameterizedTestCaseRegistry& + UnitTest::parameterized_test_registry() + GTEST_LOCK_EXCLUDED_(mutex_) { + return impl_->parameterized_test_registry(); +} +#endif // GTEST_HAS_PARAM_TEST + +// Creates an empty UnitTest. +UnitTest::UnitTest() { + impl_ = new internal::UnitTestImpl(this); +} + +// Destructor of UnitTest. +UnitTest::~UnitTest() { + delete impl_; +} + +// Pushes a trace defined by SCOPED_TRACE() on to the per-thread +// Google Test trace stack. +void UnitTest::PushGTestTrace(const internal::TraceInfo& trace) + GTEST_LOCK_EXCLUDED_(mutex_) { + internal::MutexLock lock(&mutex_); + impl_->gtest_trace_stack().push_back(trace); +} + +// Pops a trace from the per-thread Google Test trace stack. +void UnitTest::PopGTestTrace() + GTEST_LOCK_EXCLUDED_(mutex_) { + internal::MutexLock lock(&mutex_); + impl_->gtest_trace_stack().pop_back(); +} + +namespace internal { + +UnitTestImpl::UnitTestImpl(UnitTest* parent) + : parent_(parent), +#ifdef _MSC_VER +# pragma warning(push) // Saves the current warning state. +# pragma warning(disable:4355) // Temporarily disables warning 4355 + // (using this in initializer). + default_global_test_part_result_reporter_(this), + default_per_thread_test_part_result_reporter_(this), +# pragma warning(pop) // Restores the warning state again. +#else + default_global_test_part_result_reporter_(this), + default_per_thread_test_part_result_reporter_(this), +#endif // _MSC_VER + global_test_part_result_repoter_( + &default_global_test_part_result_reporter_), + per_thread_test_part_result_reporter_( + &default_per_thread_test_part_result_reporter_), +#if GTEST_HAS_PARAM_TEST + parameterized_test_registry_(), + parameterized_tests_registered_(false), +#endif // GTEST_HAS_PARAM_TEST + last_death_test_case_(-1), + current_test_case_(NULL), + current_test_info_(NULL), + ad_hoc_test_result_(), + os_stack_trace_getter_(NULL), + post_flag_parse_init_performed_(false), + random_seed_(0), // Will be overridden by the flag before first use. + random_(0), // Will be reseeded before first use. + start_timestamp_(0), + elapsed_time_(0), +#if GTEST_HAS_DEATH_TEST + internal_run_death_test_flag_(NULL), + death_test_factory_(new DefaultDeathTestFactory), +#endif + // Will be overridden by the flag before first use. + catch_exceptions_(false) { + listeners()->SetDefaultResultPrinter(new PrettyUnitTestResultPrinter); +} + +UnitTestImpl::~UnitTestImpl() { + // Deletes every TestCase. + ForEach(test_cases_, internal::Delete); + + // Deletes every Environment. + ForEach(environments_, internal::Delete); + + delete os_stack_trace_getter_; +} + +#if GTEST_HAS_DEATH_TEST +// Disables event forwarding if the control is currently in a death test +// subprocess. Must not be called before InitGoogleTest. +void UnitTestImpl::SuppressTestEventsIfInSubprocess() { + if (internal_run_death_test_flag_.get() != NULL) + listeners()->SuppressEventForwarding(); +} +#endif // GTEST_HAS_DEATH_TEST + +// Initializes event listeners performing XML output as specified by +// UnitTestOptions. Must not be called before InitGoogleTest. +void UnitTestImpl::ConfigureXmlOutput() { + const std::string& output_format = UnitTestOptions::GetOutputFormat(); + if (output_format == "xml") { + listeners()->SetDefaultXmlGenerator(new XmlUnitTestResultPrinter( + UnitTestOptions::GetAbsolutePathToOutputFile().c_str())); + } else if (output_format != "") { + printf("WARNING: unrecognized output format \"%s\" ignored.\n", + output_format.c_str()); + fflush(stdout); + } +} + +#if GTEST_CAN_STREAM_RESULTS_ +// Initializes event listeners for streaming test results in string form. +// Must not be called before InitGoogleTest. +void UnitTestImpl::ConfigureStreamingOutput() { + const std::string& target = GTEST_FLAG(stream_result_to); + if (!target.empty()) { + const size_t pos = target.find(':'); + if (pos != std::string::npos) { + listeners()->Append(new StreamingListener(target.substr(0, pos), + target.substr(pos+1))); + } else { + printf("WARNING: unrecognized streaming target \"%s\" ignored.\n", + target.c_str()); + fflush(stdout); + } + } +} +#endif // GTEST_CAN_STREAM_RESULTS_ + +// Performs initialization dependent upon flag values obtained in +// ParseGoogleTestFlagsOnly. Is called from InitGoogleTest after the call to +// ParseGoogleTestFlagsOnly. In case a user neglects to call InitGoogleTest +// this function is also called from RunAllTests. Since this function can be +// called more than once, it has to be idempotent. +void UnitTestImpl::PostFlagParsingInit() { + // Ensures that this function does not execute more than once. + if (!post_flag_parse_init_performed_) { + post_flag_parse_init_performed_ = true; + +#if GTEST_HAS_DEATH_TEST + InitDeathTestSubprocessControlInfo(); + SuppressTestEventsIfInSubprocess(); +#endif // GTEST_HAS_DEATH_TEST + + // Registers parameterized tests. This makes parameterized tests + // available to the UnitTest reflection API without running + // RUN_ALL_TESTS. + RegisterParameterizedTests(); + + // Configures listeners for XML output. This makes it possible for users + // to shut down the default XML output before invoking RUN_ALL_TESTS. + ConfigureXmlOutput(); + +#if GTEST_CAN_STREAM_RESULTS_ + // Configures listeners for streaming test results to the specified server. + ConfigureStreamingOutput(); +#endif // GTEST_CAN_STREAM_RESULTS_ + } +} + +// A predicate that checks the name of a TestCase against a known +// value. +// +// This is used for implementation of the UnitTest class only. We put +// it in the anonymous namespace to prevent polluting the outer +// namespace. +// +// TestCaseNameIs is copyable. +class TestCaseNameIs { + public: + // Constructor. + explicit TestCaseNameIs(const std::string& name) + : name_(name) {} + + // Returns true iff the name of test_case matches name_. + bool operator()(const TestCase* test_case) const { + return test_case != NULL && strcmp(test_case->name(), name_.c_str()) == 0; + } + + private: + std::string name_; +}; + +// Finds and returns a TestCase with the given name. If one doesn't +// exist, creates one and returns it. It's the CALLER'S +// RESPONSIBILITY to ensure that this function is only called WHEN THE +// TESTS ARE NOT SHUFFLED. +// +// Arguments: +// +// test_case_name: name of the test case +// type_param: the name of the test case's type parameter, or NULL if +// this is not a typed or a type-parameterized test case. +// set_up_tc: pointer to the function that sets up the test case +// tear_down_tc: pointer to the function that tears down the test case +TestCase* UnitTestImpl::GetTestCase(const char* test_case_name, + const char* type_param, + Test::SetUpTestCaseFunc set_up_tc, + Test::TearDownTestCaseFunc tear_down_tc) { + // Can we find a TestCase with the given name? + const std::vector::const_iterator test_case = + std::find_if(test_cases_.begin(), test_cases_.end(), + TestCaseNameIs(test_case_name)); + + if (test_case != test_cases_.end()) + return *test_case; + + // No. Let's create one. + TestCase* const new_test_case = + new TestCase(test_case_name, type_param, set_up_tc, tear_down_tc); + + // Is this a death test case? + if (internal::UnitTestOptions::MatchesFilter(test_case_name, + kDeathTestCaseFilter)) { + // Yes. Inserts the test case after the last death test case + // defined so far. This only works when the test cases haven't + // been shuffled. Otherwise we may end up running a death test + // after a non-death test. + ++last_death_test_case_; + test_cases_.insert(test_cases_.begin() + last_death_test_case_, + new_test_case); + } else { + // No. Appends to the end of the list. + test_cases_.push_back(new_test_case); + } + + test_case_indices_.push_back(static_cast(test_case_indices_.size())); + return new_test_case; +} + +// Helpers for setting up / tearing down the given environment. They +// are for use in the ForEach() function. +static void SetUpEnvironment(Environment* env) { env->SetUp(); } +static void TearDownEnvironment(Environment* env) { env->TearDown(); } + +// Runs all tests in this UnitTest object, prints the result, and +// returns true if all tests are successful. If any exception is +// thrown during a test, the test is considered to be failed, but the +// rest of the tests will still be run. +// +// When parameterized tests are enabled, it expands and registers +// parameterized tests first in RegisterParameterizedTests(). +// All other functions called from RunAllTests() may safely assume that +// parameterized tests are ready to be counted and run. +bool UnitTestImpl::RunAllTests() { + // Makes sure InitGoogleTest() was called. + if (!GTestIsInitialized()) { + printf("%s", + "\nThis test program did NOT call ::testing::InitGoogleTest " + "before calling RUN_ALL_TESTS(). Please fix it.\n"); + return false; + } + + // Do not run any test if the --help flag was specified. + if (g_help_flag) + return true; + + // Repeats the call to the post-flag parsing initialization in case the + // user didn't call InitGoogleTest. + PostFlagParsingInit(); + + // Even if sharding is not on, test runners may want to use the + // GTEST_SHARD_STATUS_FILE to query whether the test supports the sharding + // protocol. + internal::WriteToShardStatusFileIfNeeded(); + + // True iff we are in a subprocess for running a thread-safe-style + // death test. + bool in_subprocess_for_death_test = false; + +#if GTEST_HAS_DEATH_TEST + in_subprocess_for_death_test = (internal_run_death_test_flag_.get() != NULL); +#endif // GTEST_HAS_DEATH_TEST + + const bool should_shard = ShouldShard(kTestTotalShards, kTestShardIndex, + in_subprocess_for_death_test); + + // Compares the full test names with the filter to decide which + // tests to run. + const bool has_tests_to_run = FilterTests(should_shard + ? HONOR_SHARDING_PROTOCOL + : IGNORE_SHARDING_PROTOCOL) > 0; + + // Lists the tests and exits if the --gtest_list_tests flag was specified. + if (GTEST_FLAG(list_tests)) { + // This must be called *after* FilterTests() has been called. + ListTestsMatchingFilter(); + return true; + } + + random_seed_ = GTEST_FLAG(shuffle) ? + GetRandomSeedFromFlag(GTEST_FLAG(random_seed)) : 0; + + // True iff at least one test has failed. + bool failed = false; + + TestEventListener* repeater = listeners()->repeater(); + + start_timestamp_ = GetTimeInMillis(); + repeater->OnTestProgramStart(*parent_); + + // How many times to repeat the tests? We don't want to repeat them + // when we are inside the subprocess of a death test. + const int repeat = in_subprocess_for_death_test ? 1 : GTEST_FLAG(repeat); + // Repeats forever if the repeat count is negative. + const bool forever = repeat < 0; + for (int i = 0; forever || i != repeat; i++) { + // We want to preserve failures generated by ad-hoc test + // assertions executed before RUN_ALL_TESTS(). + ClearNonAdHocTestResult(); + + const TimeInMillis start = GetTimeInMillis(); + + // Shuffles test cases and tests if requested. + if (has_tests_to_run && GTEST_FLAG(shuffle)) { + random()->Reseed(random_seed_); + // This should be done before calling OnTestIterationStart(), + // such that a test event listener can see the actual test order + // in the event. + ShuffleTests(); + } + + // Tells the unit test event listeners that the tests are about to start. + repeater->OnTestIterationStart(*parent_, i); + + // Runs each test case if there is at least one test to run. + if (has_tests_to_run) { + // Sets up all environments beforehand. + repeater->OnEnvironmentsSetUpStart(*parent_); + ForEach(environments_, SetUpEnvironment); + repeater->OnEnvironmentsSetUpEnd(*parent_); + + // Runs the tests only if there was no fatal failure during global + // set-up. + if (!Test::HasFatalFailure()) { + for (int test_index = 0; test_index < total_test_case_count(); + test_index++) { + GetMutableTestCase(test_index)->Run(); + } + } + + // Tears down all environments in reverse order afterwards. + repeater->OnEnvironmentsTearDownStart(*parent_); + std::for_each(environments_.rbegin(), environments_.rend(), + TearDownEnvironment); + repeater->OnEnvironmentsTearDownEnd(*parent_); + } + + elapsed_time_ = GetTimeInMillis() - start; + + // Tells the unit test event listener that the tests have just finished. + repeater->OnTestIterationEnd(*parent_, i); + + // Gets the result and clears it. + if (!Passed()) { + failed = true; + } + + // Restores the original test order after the iteration. This + // allows the user to quickly repro a failure that happens in the + // N-th iteration without repeating the first (N - 1) iterations. + // This is not enclosed in "if (GTEST_FLAG(shuffle)) { ... }", in + // case the user somehow changes the value of the flag somewhere + // (it's always safe to unshuffle the tests). + UnshuffleTests(); + + if (GTEST_FLAG(shuffle)) { + // Picks a new random seed for each iteration. + random_seed_ = GetNextRandomSeed(random_seed_); + } + } + + repeater->OnTestProgramEnd(*parent_); + + return !failed; +} + +// Reads the GTEST_SHARD_STATUS_FILE environment variable, and creates the file +// if the variable is present. If a file already exists at this location, this +// function will write over it. If the variable is present, but the file cannot +// be created, prints an error and exits. +void WriteToShardStatusFileIfNeeded() { + const char* const test_shard_file = posix::GetEnv(kTestShardStatusFile); + if (test_shard_file != NULL) { + FILE* const file = posix::FOpen(test_shard_file, "w"); + if (file == NULL) { + ColoredPrintf(COLOR_RED, + "Could not write to the test shard status file \"%s\" " + "specified by the %s environment variable.\n", + test_shard_file, kTestShardStatusFile); + fflush(stdout); + exit(EXIT_FAILURE); + } + fclose(file); + } +} + +// Checks whether sharding is enabled by examining the relevant +// environment variable values. If the variables are present, +// but inconsistent (i.e., shard_index >= total_shards), prints +// an error and exits. If in_subprocess_for_death_test, sharding is +// disabled because it must only be applied to the original test +// process. Otherwise, we could filter out death tests we intended to execute. +bool ShouldShard(const char* total_shards_env, + const char* shard_index_env, + bool in_subprocess_for_death_test) { + if (in_subprocess_for_death_test) { + return false; + } + + const Int32 total_shards = Int32FromEnvOrDie(total_shards_env, -1); + const Int32 shard_index = Int32FromEnvOrDie(shard_index_env, -1); + + if (total_shards == -1 && shard_index == -1) { + return false; + } else if (total_shards == -1 && shard_index != -1) { + const Message msg = Message() + << "Invalid environment variables: you have " + << kTestShardIndex << " = " << shard_index + << ", but have left " << kTestTotalShards << " unset.\n"; + ColoredPrintf(COLOR_RED, msg.GetString().c_str()); + fflush(stdout); + exit(EXIT_FAILURE); + } else if (total_shards != -1 && shard_index == -1) { + const Message msg = Message() + << "Invalid environment variables: you have " + << kTestTotalShards << " = " << total_shards + << ", but have left " << kTestShardIndex << " unset.\n"; + ColoredPrintf(COLOR_RED, msg.GetString().c_str()); + fflush(stdout); + exit(EXIT_FAILURE); + } else if (shard_index < 0 || shard_index >= total_shards) { + const Message msg = Message() + << "Invalid environment variables: we require 0 <= " + << kTestShardIndex << " < " << kTestTotalShards + << ", but you have " << kTestShardIndex << "=" << shard_index + << ", " << kTestTotalShards << "=" << total_shards << ".\n"; + ColoredPrintf(COLOR_RED, msg.GetString().c_str()); + fflush(stdout); + exit(EXIT_FAILURE); + } + + return total_shards > 1; +} + +// Parses the environment variable var as an Int32. If it is unset, +// returns default_val. If it is not an Int32, prints an error +// and aborts. +Int32 Int32FromEnvOrDie(const char* var, Int32 default_val) { + const char* str_val = posix::GetEnv(var); + if (str_val == NULL) { + return default_val; + } + + Int32 result; + if (!ParseInt32(Message() << "The value of environment variable " << var, + str_val, &result)) { + exit(EXIT_FAILURE); + } + return result; +} + +// Given the total number of shards, the shard index, and the test id, +// returns true iff the test should be run on this shard. The test id is +// some arbitrary but unique non-negative integer assigned to each test +// method. Assumes that 0 <= shard_index < total_shards. +bool ShouldRunTestOnShard(int total_shards, int shard_index, int test_id) { + return (test_id % total_shards) == shard_index; +} + +// Compares the name of each test with the user-specified filter to +// decide whether the test should be run, then records the result in +// each TestCase and TestInfo object. +// If shard_tests == true, further filters tests based on sharding +// variables in the environment - see +// http://code.google.com/p/googletest/wiki/GoogleTestAdvancedGuide. +// Returns the number of tests that should run. +int UnitTestImpl::FilterTests(ReactionToSharding shard_tests) { + const Int32 total_shards = shard_tests == HONOR_SHARDING_PROTOCOL ? + Int32FromEnvOrDie(kTestTotalShards, -1) : -1; + const Int32 shard_index = shard_tests == HONOR_SHARDING_PROTOCOL ? + Int32FromEnvOrDie(kTestShardIndex, -1) : -1; + + // num_runnable_tests are the number of tests that will + // run across all shards (i.e., match filter and are not disabled). + // num_selected_tests are the number of tests to be run on + // this shard. + int num_runnable_tests = 0; + int num_selected_tests = 0; + for (size_t i = 0; i < test_cases_.size(); i++) { + TestCase* const test_case = test_cases_[i]; + const std::string &test_case_name = test_case->name(); + test_case->set_should_run(false); + + for (size_t j = 0; j < test_case->test_info_list().size(); j++) { + TestInfo* const test_info = test_case->test_info_list()[j]; + const std::string test_name(test_info->name()); + // A test is disabled if test case name or test name matches + // kDisableTestFilter. + const bool is_disabled = + internal::UnitTestOptions::MatchesFilter(test_case_name, + kDisableTestFilter) || + internal::UnitTestOptions::MatchesFilter(test_name, + kDisableTestFilter); + test_info->is_disabled_ = is_disabled; + + const bool matches_filter = + internal::UnitTestOptions::FilterMatchesTest(test_case_name, + test_name); + test_info->matches_filter_ = matches_filter; + + const bool is_runnable = + (GTEST_FLAG(also_run_disabled_tests) || !is_disabled) && + matches_filter; + + const bool is_selected = is_runnable && + (shard_tests == IGNORE_SHARDING_PROTOCOL || + ShouldRunTestOnShard(total_shards, shard_index, + num_runnable_tests)); + + num_runnable_tests += is_runnable; + num_selected_tests += is_selected; + + test_info->should_run_ = is_selected; + test_case->set_should_run(test_case->should_run() || is_selected); + } + } + return num_selected_tests; +} + +// Prints the names of the tests matching the user-specified filter flag. +void UnitTestImpl::ListTestsMatchingFilter() { + for (size_t i = 0; i < test_cases_.size(); i++) { + const TestCase* const test_case = test_cases_[i]; + bool printed_test_case_name = false; + + for (size_t j = 0; j < test_case->test_info_list().size(); j++) { + const TestInfo* const test_info = + test_case->test_info_list()[j]; + if (test_info->matches_filter_) { + if (!printed_test_case_name) { + printed_test_case_name = true; + printf("%s.\n", test_case->name()); + } + printf(" %s\n", test_info->name()); + } + } + } + fflush(stdout); +} + +// Sets the OS stack trace getter. +// +// Does nothing if the input and the current OS stack trace getter are +// the same; otherwise, deletes the old getter and makes the input the +// current getter. +void UnitTestImpl::set_os_stack_trace_getter( + OsStackTraceGetterInterface* getter) { + if (os_stack_trace_getter_ != getter) { + delete os_stack_trace_getter_; + os_stack_trace_getter_ = getter; + } +} + +// Returns the current OS stack trace getter if it is not NULL; +// otherwise, creates an OsStackTraceGetter, makes it the current +// getter, and returns it. +OsStackTraceGetterInterface* UnitTestImpl::os_stack_trace_getter() { + if (os_stack_trace_getter_ == NULL) { + os_stack_trace_getter_ = new OsStackTraceGetter; + } + + return os_stack_trace_getter_; +} + +// Returns the TestResult for the test that's currently running, or +// the TestResult for the ad hoc test if no test is running. +TestResult* UnitTestImpl::current_test_result() { + return current_test_info_ ? + &(current_test_info_->result_) : &ad_hoc_test_result_; +} + +// Shuffles all test cases, and the tests within each test case, +// making sure that death tests are still run first. +void UnitTestImpl::ShuffleTests() { + // Shuffles the death test cases. + ShuffleRange(random(), 0, last_death_test_case_ + 1, &test_case_indices_); + + // Shuffles the non-death test cases. + ShuffleRange(random(), last_death_test_case_ + 1, + static_cast(test_cases_.size()), &test_case_indices_); + + // Shuffles the tests inside each test case. + for (size_t i = 0; i < test_cases_.size(); i++) { + test_cases_[i]->ShuffleTests(random()); + } +} + +// Restores the test cases and tests to their order before the first shuffle. +void UnitTestImpl::UnshuffleTests() { + for (size_t i = 0; i < test_cases_.size(); i++) { + // Unshuffles the tests in each test case. + test_cases_[i]->UnshuffleTests(); + // Resets the index of each test case. + test_case_indices_[i] = static_cast(i); + } +} + +// Returns the current OS stack trace as an std::string. +// +// The maximum number of stack frames to be included is specified by +// the gtest_stack_trace_depth flag. The skip_count parameter +// specifies the number of top frames to be skipped, which doesn't +// count against the number of frames to be included. +// +// For example, if Foo() calls Bar(), which in turn calls +// GetCurrentOsStackTraceExceptTop(..., 1), Foo() will be included in +// the trace but Bar() and GetCurrentOsStackTraceExceptTop() won't. +std::string GetCurrentOsStackTraceExceptTop(UnitTest* /*unit_test*/, + int skip_count) { + // We pass skip_count + 1 to skip this wrapper function in addition + // to what the user really wants to skip. + return GetUnitTestImpl()->CurrentOsStackTraceExceptTop(skip_count + 1); +} + +// Used by the GTEST_SUPPRESS_UNREACHABLE_CODE_WARNING_BELOW_ macro to +// suppress unreachable code warnings. +namespace { +class ClassUniqueToAlwaysTrue {}; +} + +bool IsTrue(bool condition) { return condition; } + +bool AlwaysTrue() { +#if GTEST_HAS_EXCEPTIONS + // This condition is always false so AlwaysTrue() never actually throws, + // but it makes the compiler think that it may throw. + if (IsTrue(false)) + throw ClassUniqueToAlwaysTrue(); +#endif // GTEST_HAS_EXCEPTIONS + return true; +} + +// If *pstr starts with the given prefix, modifies *pstr to be right +// past the prefix and returns true; otherwise leaves *pstr unchanged +// and returns false. None of pstr, *pstr, and prefix can be NULL. +bool SkipPrefix(const char* prefix, const char** pstr) { + const size_t prefix_len = strlen(prefix); + if (strncmp(*pstr, prefix, prefix_len) == 0) { + *pstr += prefix_len; + return true; + } + return false; +} + +// Parses a string as a command line flag. The string should have +// the format "--flag=value". When def_optional is true, the "=value" +// part can be omitted. +// +// Returns the value of the flag, or NULL if the parsing failed. +const char* ParseFlagValue(const char* str, + const char* flag, + bool def_optional) { + // str and flag must not be NULL. + if (str == NULL || flag == NULL) return NULL; + + // The flag must start with "--" followed by GTEST_FLAG_PREFIX_. + const std::string flag_str = std::string("--") + GTEST_FLAG_PREFIX_ + flag; + const size_t flag_len = flag_str.length(); + if (strncmp(str, flag_str.c_str(), flag_len) != 0) return NULL; + + // Skips the flag name. + const char* flag_end = str + flag_len; + + // When def_optional is true, it's OK to not have a "=value" part. + if (def_optional && (flag_end[0] == '\0')) { + return flag_end; + } + + // If def_optional is true and there are more characters after the + // flag name, or if def_optional is false, there must be a '=' after + // the flag name. + if (flag_end[0] != '=') return NULL; + + // Returns the string after "=". + return flag_end + 1; +} + +// Parses a string for a bool flag, in the form of either +// "--flag=value" or "--flag". +// +// In the former case, the value is taken as true as long as it does +// not start with '0', 'f', or 'F'. +// +// In the latter case, the value is taken as true. +// +// On success, stores the value of the flag in *value, and returns +// true. On failure, returns false without changing *value. +bool ParseBoolFlag(const char* str, const char* flag, bool* value) { + // Gets the value of the flag as a string. + const char* const value_str = ParseFlagValue(str, flag, true); + + // Aborts if the parsing failed. + if (value_str == NULL) return false; + + // Converts the string value to a bool. + *value = !(*value_str == '0' || *value_str == 'f' || *value_str == 'F'); + return true; +} + +// Parses a string for an Int32 flag, in the form of +// "--flag=value". +// +// On success, stores the value of the flag in *value, and returns +// true. On failure, returns false without changing *value. +bool ParseInt32Flag(const char* str, const char* flag, Int32* value) { + // Gets the value of the flag as a string. + const char* const value_str = ParseFlagValue(str, flag, false); + + // Aborts if the parsing failed. + if (value_str == NULL) return false; + + // Sets *value to the value of the flag. + return ParseInt32(Message() << "The value of flag --" << flag, + value_str, value); +} + +// Parses a string for a string flag, in the form of +// "--flag=value". +// +// On success, stores the value of the flag in *value, and returns +// true. On failure, returns false without changing *value. +bool ParseStringFlag(const char* str, const char* flag, std::string* value) { + // Gets the value of the flag as a string. + const char* const value_str = ParseFlagValue(str, flag, false); + + // Aborts if the parsing failed. + if (value_str == NULL) return false; + + // Sets *value to the value of the flag. + *value = value_str; + return true; +} + +// Determines whether a string has a prefix that Google Test uses for its +// flags, i.e., starts with GTEST_FLAG_PREFIX_ or GTEST_FLAG_PREFIX_DASH_. +// If Google Test detects that a command line flag has its prefix but is not +// recognized, it will print its help message. Flags starting with +// GTEST_INTERNAL_PREFIX_ followed by "internal_" are considered Google Test +// internal flags and do not trigger the help message. +static bool HasGoogleTestFlagPrefix(const char* str) { + return (SkipPrefix("--", &str) || + SkipPrefix("-", &str) || + SkipPrefix("/", &str)) && + !SkipPrefix(GTEST_FLAG_PREFIX_ "internal_", &str) && + (SkipPrefix(GTEST_FLAG_PREFIX_, &str) || + SkipPrefix(GTEST_FLAG_PREFIX_DASH_, &str)); +} + +// Prints a string containing code-encoded text. The following escape +// sequences can be used in the string to control the text color: +// +// @@ prints a single '@' character. +// @R changes the color to red. +// @G changes the color to green. +// @Y changes the color to yellow. +// @D changes to the default terminal text color. +// +// TODO(wan@google.com): Write tests for this once we add stdout +// capturing to Google Test. +static void PrintColorEncoded(const char* str) { + GTestColor color = COLOR_DEFAULT; // The current color. + + // Conceptually, we split the string into segments divided by escape + // sequences. Then we print one segment at a time. At the end of + // each iteration, the str pointer advances to the beginning of the + // next segment. + for (;;) { + const char* p = strchr(str, '@'); + if (p == NULL) { + ColoredPrintf(color, "%s", str); + return; + } + + ColoredPrintf(color, "%s", std::string(str, p).c_str()); + + const char ch = p[1]; + str = p + 2; + if (ch == '@') { + ColoredPrintf(color, "@"); + } else if (ch == 'D') { + color = COLOR_DEFAULT; + } else if (ch == 'R') { + color = COLOR_RED; + } else if (ch == 'G') { + color = COLOR_GREEN; + } else if (ch == 'Y') { + color = COLOR_YELLOW; + } else { + --str; + } + } +} + +static const char kColorEncodedHelpMessage[] = +"This program contains tests written using " GTEST_NAME_ ". You can use the\n" +"following command line flags to control its behavior:\n" +"\n" +"Test Selection:\n" +" @G--" GTEST_FLAG_PREFIX_ "list_tests@D\n" +" List the names of all tests instead of running them. The name of\n" +" TEST(Foo, Bar) is \"Foo.Bar\".\n" +" @G--" GTEST_FLAG_PREFIX_ "filter=@YPOSTIVE_PATTERNS" + "[@G-@YNEGATIVE_PATTERNS]@D\n" +" Run only the tests whose name matches one of the positive patterns but\n" +" none of the negative patterns. '?' matches any single character; '*'\n" +" matches any substring; ':' separates two patterns.\n" +" @G--" GTEST_FLAG_PREFIX_ "also_run_disabled_tests@D\n" +" Run all disabled tests too.\n" +"\n" +"Test Execution:\n" +" @G--" GTEST_FLAG_PREFIX_ "repeat=@Y[COUNT]@D\n" +" Run the tests repeatedly; use a negative count to repeat forever.\n" +" @G--" GTEST_FLAG_PREFIX_ "shuffle@D\n" +" Randomize tests' orders on every iteration.\n" +" @G--" GTEST_FLAG_PREFIX_ "random_seed=@Y[NUMBER]@D\n" +" Random number seed to use for shuffling test orders (between 1 and\n" +" 99999, or 0 to use a seed based on the current time).\n" +"\n" +"Test Output:\n" +" @G--" GTEST_FLAG_PREFIX_ "color=@Y(@Gyes@Y|@Gno@Y|@Gauto@Y)@D\n" +" Enable/disable colored output. The default is @Gauto@D.\n" +" -@G-" GTEST_FLAG_PREFIX_ "print_time=0@D\n" +" Don't print the elapsed time of each test.\n" +" @G--" GTEST_FLAG_PREFIX_ "output=xml@Y[@G:@YDIRECTORY_PATH@G" + GTEST_PATH_SEP_ "@Y|@G:@YFILE_PATH]@D\n" +" Generate an XML report in the given directory or with the given file\n" +" name. @YFILE_PATH@D defaults to @Gtest_details.xml@D.\n" +#if GTEST_CAN_STREAM_RESULTS_ +" @G--" GTEST_FLAG_PREFIX_ "stream_result_to=@YHOST@G:@YPORT@D\n" +" Stream test results to the given server.\n" +#endif // GTEST_CAN_STREAM_RESULTS_ +"\n" +"Assertion Behavior:\n" +#if GTEST_HAS_DEATH_TEST && !GTEST_OS_WINDOWS +" @G--" GTEST_FLAG_PREFIX_ "death_test_style=@Y(@Gfast@Y|@Gthreadsafe@Y)@D\n" +" Set the default death test style.\n" +#endif // GTEST_HAS_DEATH_TEST && !GTEST_OS_WINDOWS +" @G--" GTEST_FLAG_PREFIX_ "break_on_failure@D\n" +" Turn assertion failures into debugger break-points.\n" +" @G--" GTEST_FLAG_PREFIX_ "throw_on_failure@D\n" +" Turn assertion failures into C++ exceptions.\n" +" @G--" GTEST_FLAG_PREFIX_ "catch_exceptions=0@D\n" +" Do not report exceptions as test failures. Instead, allow them\n" +" to crash the program or throw a pop-up (on Windows).\n" +"\n" +"Except for @G--" GTEST_FLAG_PREFIX_ "list_tests@D, you can alternatively set " + "the corresponding\n" +"environment variable of a flag (all letters in upper-case). For example, to\n" +"disable colored text output, you can either specify @G--" GTEST_FLAG_PREFIX_ + "color=no@D or set\n" +"the @G" GTEST_FLAG_PREFIX_UPPER_ "COLOR@D environment variable to @Gno@D.\n" +"\n" +"For more information, please read the " GTEST_NAME_ " documentation at\n" +"@G" GTEST_PROJECT_URL_ "@D. If you find a bug in " GTEST_NAME_ "\n" +"(not one in your own code or tests), please report it to\n" +"@G<" GTEST_DEV_EMAIL_ ">@D.\n"; + +// Parses the command line for Google Test flags, without initializing +// other parts of Google Test. The type parameter CharType can be +// instantiated to either char or wchar_t. +template +void ParseGoogleTestFlagsOnlyImpl(int* argc, CharType** argv) { + for (int i = 1; i < *argc; i++) { + const std::string arg_string = StreamableToString(argv[i]); + const char* const arg = arg_string.c_str(); + + using internal::ParseBoolFlag; + using internal::ParseInt32Flag; + using internal::ParseStringFlag; + + // Do we see a Google Test flag? + if (ParseBoolFlag(arg, kAlsoRunDisabledTestsFlag, + >EST_FLAG(also_run_disabled_tests)) || + ParseBoolFlag(arg, kBreakOnFailureFlag, + >EST_FLAG(break_on_failure)) || + ParseBoolFlag(arg, kCatchExceptionsFlag, + >EST_FLAG(catch_exceptions)) || + ParseStringFlag(arg, kColorFlag, >EST_FLAG(color)) || + ParseStringFlag(arg, kDeathTestStyleFlag, + >EST_FLAG(death_test_style)) || + ParseBoolFlag(arg, kDeathTestUseFork, + >EST_FLAG(death_test_use_fork)) || + ParseStringFlag(arg, kFilterFlag, >EST_FLAG(filter)) || + ParseStringFlag(arg, kInternalRunDeathTestFlag, + >EST_FLAG(internal_run_death_test)) || + ParseBoolFlag(arg, kListTestsFlag, >EST_FLAG(list_tests)) || + ParseStringFlag(arg, kOutputFlag, >EST_FLAG(output)) || + ParseBoolFlag(arg, kPrintTimeFlag, >EST_FLAG(print_time)) || + ParseInt32Flag(arg, kRandomSeedFlag, >EST_FLAG(random_seed)) || + ParseInt32Flag(arg, kRepeatFlag, >EST_FLAG(repeat)) || + ParseBoolFlag(arg, kShuffleFlag, >EST_FLAG(shuffle)) || + ParseInt32Flag(arg, kStackTraceDepthFlag, + >EST_FLAG(stack_trace_depth)) || + ParseStringFlag(arg, kStreamResultToFlag, + >EST_FLAG(stream_result_to)) || + ParseBoolFlag(arg, kThrowOnFailureFlag, + >EST_FLAG(throw_on_failure)) + ) { + // Yes. Shift the remainder of the argv list left by one. Note + // that argv has (*argc + 1) elements, the last one always being + // NULL. The following loop moves the trailing NULL element as + // well. + for (int j = i; j != *argc; j++) { + argv[j] = argv[j + 1]; + } + + // Decrements the argument count. + (*argc)--; + + // We also need to decrement the iterator as we just removed + // an element. + i--; + } else if (arg_string == "--help" || arg_string == "-h" || + arg_string == "-?" || arg_string == "/?" || + HasGoogleTestFlagPrefix(arg)) { + // Both help flag and unrecognized Google Test flags (excluding + // internal ones) trigger help display. + g_help_flag = true; + } + } + + if (g_help_flag) { + // We print the help here instead of in RUN_ALL_TESTS(), as the + // latter may not be called at all if the user is using Google + // Test with another testing framework. + PrintColorEncoded(kColorEncodedHelpMessage); + } +} + +// Parses the command line for Google Test flags, without initializing +// other parts of Google Test. +void ParseGoogleTestFlagsOnly(int* argc, char** argv) { + ParseGoogleTestFlagsOnlyImpl(argc, argv); +} +void ParseGoogleTestFlagsOnly(int* argc, wchar_t** argv) { + ParseGoogleTestFlagsOnlyImpl(argc, argv); +} + +// The internal implementation of InitGoogleTest(). +// +// The type parameter CharType can be instantiated to either char or +// wchar_t. +template +void InitGoogleTestImpl(int* argc, CharType** argv) { + g_init_gtest_count++; + + // We don't want to run the initialization code twice. + if (g_init_gtest_count != 1) return; + + if (*argc <= 0) return; + + internal::g_executable_path = internal::StreamableToString(argv[0]); + +#if GTEST_HAS_DEATH_TEST + + g_argvs.clear(); + for (int i = 0; i != *argc; i++) { + g_argvs.push_back(StreamableToString(argv[i])); + } + +#endif // GTEST_HAS_DEATH_TEST + + ParseGoogleTestFlagsOnly(argc, argv); + GetUnitTestImpl()->PostFlagParsingInit(); +} + +} // namespace internal + +// Initializes Google Test. This must be called before calling +// RUN_ALL_TESTS(). In particular, it parses a command line for the +// flags that Google Test recognizes. Whenever a Google Test flag is +// seen, it is removed from argv, and *argc is decremented. +// +// No value is returned. Instead, the Google Test flag variables are +// updated. +// +// Calling the function for the second time has no user-visible effect. +void InitGoogleTest(int* argc, char** argv) { + internal::InitGoogleTestImpl(argc, argv); +} + +// This overloaded version can be used in Windows programs compiled in +// UNICODE mode. +void InitGoogleTest(int* argc, wchar_t** argv) { + internal::InitGoogleTestImpl(argc, argv); +} + +} // namespace testing +// Copyright 2005, Google Inc. +// All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Author: wan@google.com (Zhanyong Wan), vladl@google.com (Vlad Losev) +// +// This file implements death tests. + + +#if GTEST_HAS_DEATH_TEST + +# if GTEST_OS_MAC +# include +# endif // GTEST_OS_MAC + +# include +# include +# include + +# if GTEST_OS_LINUX +# include +# endif // GTEST_OS_LINUX + +# include + +# if GTEST_OS_WINDOWS +# include +# else +# include +# include +# endif // GTEST_OS_WINDOWS + +# if GTEST_OS_QNX +# include +# endif // GTEST_OS_QNX + +#endif // GTEST_HAS_DEATH_TEST + + +// Indicates that this translation unit is part of Google Test's +// implementation. It must come before gtest-internal-inl.h is +// included, or there will be a compiler error. This trick is to +// prevent a user from accidentally including gtest-internal-inl.h in +// his code. +#define GTEST_IMPLEMENTATION_ 1 +#undef GTEST_IMPLEMENTATION_ + +namespace testing { + +// Constants. + +// The default death test style. +static const char kDefaultDeathTestStyle[] = "fast"; + +GTEST_DEFINE_string_( + death_test_style, + internal::StringFromGTestEnv("death_test_style", kDefaultDeathTestStyle), + "Indicates how to run a death test in a forked child process: " + "\"threadsafe\" (child process re-executes the test binary " + "from the beginning, running only the specific death test) or " + "\"fast\" (child process runs the death test immediately " + "after forking)."); + +GTEST_DEFINE_bool_( + death_test_use_fork, + internal::BoolFromGTestEnv("death_test_use_fork", false), + "Instructs to use fork()/_exit() instead of clone() in death tests. " + "Ignored and always uses fork() on POSIX systems where clone() is not " + "implemented. Useful when running under valgrind or similar tools if " + "those do not support clone(). Valgrind 3.3.1 will just fail if " + "it sees an unsupported combination of clone() flags. " + "It is not recommended to use this flag w/o valgrind though it will " + "work in 99% of the cases. Once valgrind is fixed, this flag will " + "most likely be removed."); + +namespace internal { +GTEST_DEFINE_string_( + internal_run_death_test, "", + "Indicates the file, line number, temporal index of " + "the single death test to run, and a file descriptor to " + "which a success code may be sent, all separated by " + "the '|' characters. This flag is specified if and only if the current " + "process is a sub-process launched for running a thread-safe " + "death test. FOR INTERNAL USE ONLY."); +} // namespace internal + +#if GTEST_HAS_DEATH_TEST + +namespace internal { + +// Valid only for fast death tests. Indicates the code is running in the +// child process of a fast style death test. +static bool g_in_fast_death_test_child = false; + +// Returns a Boolean value indicating whether the caller is currently +// executing in the context of the death test child process. Tools such as +// Valgrind heap checkers may need this to modify their behavior in death +// tests. IMPORTANT: This is an internal utility. Using it may break the +// implementation of death tests. User code MUST NOT use it. +bool InDeathTestChild() { +# if GTEST_OS_WINDOWS + + // On Windows, death tests are thread-safe regardless of the value of the + // death_test_style flag. + return !GTEST_FLAG(internal_run_death_test).empty(); + +# else + + if (GTEST_FLAG(death_test_style) == "threadsafe") + return !GTEST_FLAG(internal_run_death_test).empty(); + else + return g_in_fast_death_test_child; +#endif +} + +} // namespace internal + +// ExitedWithCode constructor. +ExitedWithCode::ExitedWithCode(int exit_code) : exit_code_(exit_code) { +} + +// ExitedWithCode function-call operator. +bool ExitedWithCode::operator()(int exit_status) const { +# if GTEST_OS_WINDOWS + + return exit_status == exit_code_; + +# else + + return WIFEXITED(exit_status) && WEXITSTATUS(exit_status) == exit_code_; + +# endif // GTEST_OS_WINDOWS +} + +# if !GTEST_OS_WINDOWS +// KilledBySignal constructor. +KilledBySignal::KilledBySignal(int signum) : signum_(signum) { +} + +// KilledBySignal function-call operator. +bool KilledBySignal::operator()(int exit_status) const { + return WIFSIGNALED(exit_status) && WTERMSIG(exit_status) == signum_; +} +# endif // !GTEST_OS_WINDOWS + +namespace internal { + +// Utilities needed for death tests. + +// Generates a textual description of a given exit code, in the format +// specified by wait(2). +static std::string ExitSummary(int exit_code) { + Message m; + +# if GTEST_OS_WINDOWS + + m << "Exited with exit status " << exit_code; + +# else + + if (WIFEXITED(exit_code)) { + m << "Exited with exit status " << WEXITSTATUS(exit_code); + } else if (WIFSIGNALED(exit_code)) { + m << "Terminated by signal " << WTERMSIG(exit_code); + } +# ifdef WCOREDUMP + if (WCOREDUMP(exit_code)) { + m << " (core dumped)"; + } +# endif +# endif // GTEST_OS_WINDOWS + + return m.GetString(); +} + +// Returns true if exit_status describes a process that was terminated +// by a signal, or exited normally with a nonzero exit code. +bool ExitedUnsuccessfully(int exit_status) { + return !ExitedWithCode(0)(exit_status); +} + +# if !GTEST_OS_WINDOWS +// Generates a textual failure message when a death test finds more than +// one thread running, or cannot determine the number of threads, prior +// to executing the given statement. It is the responsibility of the +// caller not to pass a thread_count of 1. +static std::string DeathTestThreadWarning(size_t thread_count) { + Message msg; + msg << "Death tests use fork(), which is unsafe particularly" + << " in a threaded context. For this test, " << GTEST_NAME_ << " "; + if (thread_count == 0) + msg << "couldn't detect the number of threads."; + else + msg << "detected " << thread_count << " threads."; + return msg.GetString(); +} +# endif // !GTEST_OS_WINDOWS + +// Flag characters for reporting a death test that did not die. +static const char kDeathTestLived = 'L'; +static const char kDeathTestReturned = 'R'; +static const char kDeathTestThrew = 'T'; +static const char kDeathTestInternalError = 'I'; + +// An enumeration describing all of the possible ways that a death test can +// conclude. DIED means that the process died while executing the test +// code; LIVED means that process lived beyond the end of the test code; +// RETURNED means that the test statement attempted to execute a return +// statement, which is not allowed; THREW means that the test statement +// returned control by throwing an exception. IN_PROGRESS means the test +// has not yet concluded. +// TODO(vladl@google.com): Unify names and possibly values for +// AbortReason, DeathTestOutcome, and flag characters above. +enum DeathTestOutcome { IN_PROGRESS, DIED, LIVED, RETURNED, THREW }; + +// Routine for aborting the program which is safe to call from an +// exec-style death test child process, in which case the error +// message is propagated back to the parent process. Otherwise, the +// message is simply printed to stderr. In either case, the program +// then exits with status 1. +void DeathTestAbort(const std::string& message) { + // On a POSIX system, this function may be called from a threadsafe-style + // death test child process, which operates on a very small stack. Use + // the heap for any additional non-minuscule memory requirements. + const InternalRunDeathTestFlag* const flag = + GetUnitTestImpl()->internal_run_death_test_flag(); + if (flag != NULL) { + FILE* parent = posix::FDOpen(flag->write_fd(), "w"); + fputc(kDeathTestInternalError, parent); + fprintf(parent, "%s", message.c_str()); + fflush(parent); + _exit(1); + } else { + fprintf(stderr, "%s", message.c_str()); + fflush(stderr); + posix::Abort(); + } +} + +// A replacement for CHECK that calls DeathTestAbort if the assertion +// fails. +# define GTEST_DEATH_TEST_CHECK_(expression) \ + do { \ + if (!::testing::internal::IsTrue(expression)) { \ + DeathTestAbort(::testing::internal::String::Format( \ + "CHECK failed: File %s, line %d: %s", \ + __FILE__, __LINE__, #expression)); \ + } \ + } while (::testing::internal::AlwaysFalse()) + +// This macro is similar to GTEST_DEATH_TEST_CHECK_, but it is meant for +// evaluating any system call that fulfills two conditions: it must return +// -1 on failure, and set errno to EINTR when it is interrupted and +// should be tried again. The macro expands to a loop that repeatedly +// evaluates the expression as long as it evaluates to -1 and sets +// errno to EINTR. If the expression evaluates to -1 but errno is +// something other than EINTR, DeathTestAbort is called. +# define GTEST_DEATH_TEST_CHECK_SYSCALL_(expression) \ + do { \ + int gtest_retval; \ + do { \ + gtest_retval = (expression); \ + } while (gtest_retval == -1 && errno == EINTR); \ + if (gtest_retval == -1) { \ + DeathTestAbort(::testing::internal::String::Format( \ + "CHECK failed: File %s, line %d: %s != -1", \ + __FILE__, __LINE__, #expression)); \ + } \ + } while (::testing::internal::AlwaysFalse()) + +// Returns the message describing the last system error in errno. +std::string GetLastErrnoDescription() { + return errno == 0 ? "" : posix::StrError(errno); +} + +// This is called from a death test parent process to read a failure +// message from the death test child process and log it with the FATAL +// severity. On Windows, the message is read from a pipe handle. On other +// platforms, it is read from a file descriptor. +static void FailFromInternalError(int fd) { + Message error; + char buffer[256]; + int num_read; + + do { + while ((num_read = posix::Read(fd, buffer, 255)) > 0) { + buffer[num_read] = '\0'; + error << buffer; + } + } while (num_read == -1 && errno == EINTR); + + if (num_read == 0) { + GTEST_LOG_(FATAL) << error.GetString(); + } else { + const int last_error = errno; + GTEST_LOG_(FATAL) << "Error while reading death test internal: " + << GetLastErrnoDescription() << " [" << last_error << "]"; + } +} + +// Death test constructor. Increments the running death test count +// for the current test. +DeathTest::DeathTest() { + TestInfo* const info = GetUnitTestImpl()->current_test_info(); + if (info == NULL) { + DeathTestAbort("Cannot run a death test outside of a TEST or " + "TEST_F construct"); + } +} + +// Creates and returns a death test by dispatching to the current +// death test factory. +bool DeathTest::Create(const char* statement, const RE* regex, + const char* file, int line, DeathTest** test) { + return GetUnitTestImpl()->death_test_factory()->Create( + statement, regex, file, line, test); +} + +const char* DeathTest::LastMessage() { + return last_death_test_message_.c_str(); +} + +void DeathTest::set_last_death_test_message(const std::string& message) { + last_death_test_message_ = message; +} + +std::string DeathTest::last_death_test_message_; + +// Provides cross platform implementation for some death functionality. +class DeathTestImpl : public DeathTest { + protected: + DeathTestImpl(const char* a_statement, const RE* a_regex) + : statement_(a_statement), + regex_(a_regex), + spawned_(false), + status_(-1), + outcome_(IN_PROGRESS), + read_fd_(-1), + write_fd_(-1) {} + + // read_fd_ is expected to be closed and cleared by a derived class. + ~DeathTestImpl() { GTEST_DEATH_TEST_CHECK_(read_fd_ == -1); } + + void Abort(AbortReason reason); + virtual bool Passed(bool status_ok); + + const char* statement() const { return statement_; } + const RE* regex() const { return regex_; } + bool spawned() const { return spawned_; } + void set_spawned(bool is_spawned) { spawned_ = is_spawned; } + int status() const { return status_; } + void set_status(int a_status) { status_ = a_status; } + DeathTestOutcome outcome() const { return outcome_; } + void set_outcome(DeathTestOutcome an_outcome) { outcome_ = an_outcome; } + int read_fd() const { return read_fd_; } + void set_read_fd(int fd) { read_fd_ = fd; } + int write_fd() const { return write_fd_; } + void set_write_fd(int fd) { write_fd_ = fd; } + + // Called in the parent process only. Reads the result code of the death + // test child process via a pipe, interprets it to set the outcome_ + // member, and closes read_fd_. Outputs diagnostics and terminates in + // case of unexpected codes. + void ReadAndInterpretStatusByte(); + + private: + // The textual content of the code this object is testing. This class + // doesn't own this string and should not attempt to delete it. + const char* const statement_; + // The regular expression which test output must match. DeathTestImpl + // doesn't own this object and should not attempt to delete it. + const RE* const regex_; + // True if the death test child process has been successfully spawned. + bool spawned_; + // The exit status of the child process. + int status_; + // How the death test concluded. + DeathTestOutcome outcome_; + // Descriptor to the read end of the pipe to the child process. It is + // always -1 in the child process. The child keeps its write end of the + // pipe in write_fd_. + int read_fd_; + // Descriptor to the child's write end of the pipe to the parent process. + // It is always -1 in the parent process. The parent keeps its end of the + // pipe in read_fd_. + int write_fd_; +}; + +// Called in the parent process only. Reads the result code of the death +// test child process via a pipe, interprets it to set the outcome_ +// member, and closes read_fd_. Outputs diagnostics and terminates in +// case of unexpected codes. +void DeathTestImpl::ReadAndInterpretStatusByte() { + char flag; + int bytes_read; + + // The read() here blocks until data is available (signifying the + // failure of the death test) or until the pipe is closed (signifying + // its success), so it's okay to call this in the parent before + // the child process has exited. + do { + bytes_read = posix::Read(read_fd(), &flag, 1); + } while (bytes_read == -1 && errno == EINTR); + + if (bytes_read == 0) { + set_outcome(DIED); + } else if (bytes_read == 1) { + switch (flag) { + case kDeathTestReturned: + set_outcome(RETURNED); + break; + case kDeathTestThrew: + set_outcome(THREW); + break; + case kDeathTestLived: + set_outcome(LIVED); + break; + case kDeathTestInternalError: + FailFromInternalError(read_fd()); // Does not return. + break; + default: + GTEST_LOG_(FATAL) << "Death test child process reported " + << "unexpected status byte (" + << static_cast(flag) << ")"; + } + } else { + GTEST_LOG_(FATAL) << "Read from death test child process failed: " + << GetLastErrnoDescription(); + } + GTEST_DEATH_TEST_CHECK_SYSCALL_(posix::Close(read_fd())); + set_read_fd(-1); +} + +// Signals that the death test code which should have exited, didn't. +// Should be called only in a death test child process. +// Writes a status byte to the child's status file descriptor, then +// calls _exit(1). +void DeathTestImpl::Abort(AbortReason reason) { + // The parent process considers the death test to be a failure if + // it finds any data in our pipe. So, here we write a single flag byte + // to the pipe, then exit. + const char status_ch = + reason == TEST_DID_NOT_DIE ? kDeathTestLived : + reason == TEST_THREW_EXCEPTION ? kDeathTestThrew : kDeathTestReturned; + + GTEST_DEATH_TEST_CHECK_SYSCALL_(posix::Write(write_fd(), &status_ch, 1)); + // We are leaking the descriptor here because on some platforms (i.e., + // when built as Windows DLL), destructors of global objects will still + // run after calling _exit(). On such systems, write_fd_ will be + // indirectly closed from the destructor of UnitTestImpl, causing double + // close if it is also closed here. On debug configurations, double close + // may assert. As there are no in-process buffers to flush here, we are + // relying on the OS to close the descriptor after the process terminates + // when the destructors are not run. + _exit(1); // Exits w/o any normal exit hooks (we were supposed to crash) +} + +// Returns an indented copy of stderr output for a death test. +// This makes distinguishing death test output lines from regular log lines +// much easier. +static ::std::string FormatDeathTestOutput(const ::std::string& output) { + ::std::string ret; + for (size_t at = 0; ; ) { + const size_t line_end = output.find('\n', at); + ret += "[ DEATH ] "; + if (line_end == ::std::string::npos) { + ret += output.substr(at); + break; + } + ret += output.substr(at, line_end + 1 - at); + at = line_end + 1; + } + return ret; +} + +// Assesses the success or failure of a death test, using both private +// members which have previously been set, and one argument: +// +// Private data members: +// outcome: An enumeration describing how the death test +// concluded: DIED, LIVED, THREW, or RETURNED. The death test +// fails in the latter three cases. +// status: The exit status of the child process. On *nix, it is in the +// in the format specified by wait(2). On Windows, this is the +// value supplied to the ExitProcess() API or a numeric code +// of the exception that terminated the program. +// regex: A regular expression object to be applied to +// the test's captured standard error output; the death test +// fails if it does not match. +// +// Argument: +// status_ok: true if exit_status is acceptable in the context of +// this particular death test, which fails if it is false +// +// Returns true iff all of the above conditions are met. Otherwise, the +// first failing condition, in the order given above, is the one that is +// reported. Also sets the last death test message string. +bool DeathTestImpl::Passed(bool status_ok) { + if (!spawned()) + return false; + + const std::string error_message = GetCapturedStderr(); + + bool success = false; + Message buffer; + + buffer << "Death test: " << statement() << "\n"; + switch (outcome()) { + case LIVED: + buffer << " Result: failed to die.\n" + << " Error msg:\n" << FormatDeathTestOutput(error_message); + break; + case THREW: + buffer << " Result: threw an exception.\n" + << " Error msg:\n" << FormatDeathTestOutput(error_message); + break; + case RETURNED: + buffer << " Result: illegal return in test statement.\n" + << " Error msg:\n" << FormatDeathTestOutput(error_message); + break; + case DIED: + if (status_ok) { + const bool matched = RE::PartialMatch(error_message.c_str(), *regex()); + if (matched) { + success = true; + } else { + buffer << " Result: died but not with expected error.\n" + << " Expected: " << regex()->pattern() << "\n" + << "Actual msg:\n" << FormatDeathTestOutput(error_message); + } + } else { + buffer << " Result: died but not with expected exit code:\n" + << " " << ExitSummary(status()) << "\n" + << "Actual msg:\n" << FormatDeathTestOutput(error_message); + } + break; + case IN_PROGRESS: + default: + GTEST_LOG_(FATAL) + << "DeathTest::Passed somehow called before conclusion of test"; + } + + DeathTest::set_last_death_test_message(buffer.GetString()); + return success; +} + +# if GTEST_OS_WINDOWS +// WindowsDeathTest implements death tests on Windows. Due to the +// specifics of starting new processes on Windows, death tests there are +// always threadsafe, and Google Test considers the +// --gtest_death_test_style=fast setting to be equivalent to +// --gtest_death_test_style=threadsafe there. +// +// A few implementation notes: Like the Linux version, the Windows +// implementation uses pipes for child-to-parent communication. But due to +// the specifics of pipes on Windows, some extra steps are required: +// +// 1. The parent creates a communication pipe and stores handles to both +// ends of it. +// 2. The parent starts the child and provides it with the information +// necessary to acquire the handle to the write end of the pipe. +// 3. The child acquires the write end of the pipe and signals the parent +// using a Windows event. +// 4. Now the parent can release the write end of the pipe on its side. If +// this is done before step 3, the object's reference count goes down to +// 0 and it is destroyed, preventing the child from acquiring it. The +// parent now has to release it, or read operations on the read end of +// the pipe will not return when the child terminates. +// 5. The parent reads child's output through the pipe (outcome code and +// any possible error messages) from the pipe, and its stderr and then +// determines whether to fail the test. +// +// Note: to distinguish Win32 API calls from the local method and function +// calls, the former are explicitly resolved in the global namespace. +// +class WindowsDeathTest : public DeathTestImpl { + public: + WindowsDeathTest(const char* a_statement, + const RE* a_regex, + const char* file, + int line) + : DeathTestImpl(a_statement, a_regex), file_(file), line_(line) {} + + // All of these virtual functions are inherited from DeathTest. + virtual int Wait(); + virtual TestRole AssumeRole(); + + private: + // The name of the file in which the death test is located. + const char* const file_; + // The line number on which the death test is located. + const int line_; + // Handle to the write end of the pipe to the child process. + AutoHandle write_handle_; + // Child process handle. + AutoHandle child_handle_; + // Event the child process uses to signal the parent that it has + // acquired the handle to the write end of the pipe. After seeing this + // event the parent can release its own handles to make sure its + // ReadFile() calls return when the child terminates. + AutoHandle event_handle_; +}; + +// Waits for the child in a death test to exit, returning its exit +// status, or 0 if no child process exists. As a side effect, sets the +// outcome data member. +int WindowsDeathTest::Wait() { + if (!spawned()) + return 0; + + // Wait until the child either signals that it has acquired the write end + // of the pipe or it dies. + const HANDLE wait_handles[2] = { child_handle_.Get(), event_handle_.Get() }; + switch (::WaitForMultipleObjects(2, + wait_handles, + FALSE, // Waits for any of the handles. + INFINITE)) { + case WAIT_OBJECT_0: + case WAIT_OBJECT_0 + 1: + break; + default: + GTEST_DEATH_TEST_CHECK_(false); // Should not get here. + } + + // The child has acquired the write end of the pipe or exited. + // We release the handle on our side and continue. + write_handle_.Reset(); + event_handle_.Reset(); + + ReadAndInterpretStatusByte(); + + // Waits for the child process to exit if it haven't already. This + // returns immediately if the child has already exited, regardless of + // whether previous calls to WaitForMultipleObjects synchronized on this + // handle or not. + GTEST_DEATH_TEST_CHECK_( + WAIT_OBJECT_0 == ::WaitForSingleObject(child_handle_.Get(), + INFINITE)); + DWORD status_code; + GTEST_DEATH_TEST_CHECK_( + ::GetExitCodeProcess(child_handle_.Get(), &status_code) != FALSE); + child_handle_.Reset(); + set_status(static_cast(status_code)); + return status(); +} + +// The AssumeRole process for a Windows death test. It creates a child +// process with the same executable as the current process to run the +// death test. The child process is given the --gtest_filter and +// --gtest_internal_run_death_test flags such that it knows to run the +// current death test only. +DeathTest::TestRole WindowsDeathTest::AssumeRole() { + const UnitTestImpl* const impl = GetUnitTestImpl(); + const InternalRunDeathTestFlag* const flag = + impl->internal_run_death_test_flag(); + const TestInfo* const info = impl->current_test_info(); + const int death_test_index = info->result()->death_test_count(); + + if (flag != NULL) { + // ParseInternalRunDeathTestFlag() has performed all the necessary + // processing. + set_write_fd(flag->write_fd()); + return EXECUTE_TEST; + } + + // WindowsDeathTest uses an anonymous pipe to communicate results of + // a death test. + SECURITY_ATTRIBUTES handles_are_inheritable = { + sizeof(SECURITY_ATTRIBUTES), NULL, TRUE }; + HANDLE read_handle, write_handle; + GTEST_DEATH_TEST_CHECK_( + ::CreatePipe(&read_handle, &write_handle, &handles_are_inheritable, + 0) // Default buffer size. + != FALSE); + set_read_fd(::_open_osfhandle(reinterpret_cast(read_handle), + O_RDONLY)); + write_handle_.Reset(write_handle); + event_handle_.Reset(::CreateEvent( + &handles_are_inheritable, + TRUE, // The event will automatically reset to non-signaled state. + FALSE, // The initial state is non-signalled. + NULL)); // The even is unnamed. + GTEST_DEATH_TEST_CHECK_(event_handle_.Get() != NULL); + const std::string filter_flag = + std::string("--") + GTEST_FLAG_PREFIX_ + kFilterFlag + "=" + + info->test_case_name() + "." + info->name(); + const std::string internal_flag = + std::string("--") + GTEST_FLAG_PREFIX_ + kInternalRunDeathTestFlag + + "=" + file_ + "|" + String::Format("%d|%d|%u|%Iu|%Iu", line_, + death_test_index, + static_cast(::GetCurrentProcessId()), + // size_t has the same with as pointers on both 32-bit and 64-bit + // Windows platforms. + // See http://msdn.microsoft.com/en-us/library/tcxf1dw6.aspx. + reinterpret_cast(write_handle), + reinterpret_cast(event_handle_.Get())); + + char executable_path[_MAX_PATH + 1]; // NOLINT + GTEST_DEATH_TEST_CHECK_( + _MAX_PATH + 1 != ::GetModuleFileNameA(NULL, + executable_path, + _MAX_PATH)); + + std::string command_line = + std::string(::GetCommandLineA()) + " " + filter_flag + " \"" + + internal_flag + "\""; + + DeathTest::set_last_death_test_message(""); + + CaptureStderr(); + // Flush the log buffers since the log streams are shared with the child. + FlushInfoLog(); + + // The child process will share the standard handles with the parent. + STARTUPINFOA startup_info; + memset(&startup_info, 0, sizeof(STARTUPINFO)); + startup_info.dwFlags = STARTF_USESTDHANDLES; + startup_info.hStdInput = ::GetStdHandle(STD_INPUT_HANDLE); + startup_info.hStdOutput = ::GetStdHandle(STD_OUTPUT_HANDLE); + startup_info.hStdError = ::GetStdHandle(STD_ERROR_HANDLE); + + PROCESS_INFORMATION process_info; + GTEST_DEATH_TEST_CHECK_(::CreateProcessA( + executable_path, + const_cast(command_line.c_str()), + NULL, // Retuned process handle is not inheritable. + NULL, // Retuned thread handle is not inheritable. + TRUE, // Child inherits all inheritable handles (for write_handle_). + 0x0, // Default creation flags. + NULL, // Inherit the parent's environment. + UnitTest::GetInstance()->original_working_dir(), + &startup_info, + &process_info) != FALSE); + child_handle_.Reset(process_info.hProcess); + ::CloseHandle(process_info.hThread); + set_spawned(true); + return OVERSEE_TEST; +} +# else // We are not on Windows. + +// ForkingDeathTest provides implementations for most of the abstract +// methods of the DeathTest interface. Only the AssumeRole method is +// left undefined. +class ForkingDeathTest : public DeathTestImpl { + public: + ForkingDeathTest(const char* statement, const RE* regex); + + // All of these virtual functions are inherited from DeathTest. + virtual int Wait(); + + protected: + void set_child_pid(pid_t child_pid) { child_pid_ = child_pid; } + + private: + // PID of child process during death test; 0 in the child process itself. + pid_t child_pid_; +}; + +// Constructs a ForkingDeathTest. +ForkingDeathTest::ForkingDeathTest(const char* a_statement, const RE* a_regex) + : DeathTestImpl(a_statement, a_regex), + child_pid_(-1) {} + +// Waits for the child in a death test to exit, returning its exit +// status, or 0 if no child process exists. As a side effect, sets the +// outcome data member. +int ForkingDeathTest::Wait() { + if (!spawned()) + return 0; + + ReadAndInterpretStatusByte(); + + int status_value; + GTEST_DEATH_TEST_CHECK_SYSCALL_(waitpid(child_pid_, &status_value, 0)); + set_status(status_value); + return status_value; +} + +// A concrete death test class that forks, then immediately runs the test +// in the child process. +class NoExecDeathTest : public ForkingDeathTest { + public: + NoExecDeathTest(const char* a_statement, const RE* a_regex) : + ForkingDeathTest(a_statement, a_regex) { } + virtual TestRole AssumeRole(); +}; + +// The AssumeRole process for a fork-and-run death test. It implements a +// straightforward fork, with a simple pipe to transmit the status byte. +DeathTest::TestRole NoExecDeathTest::AssumeRole() { + const size_t thread_count = GetThreadCount(); + if (thread_count != 1) { + GTEST_LOG_(WARNING) << DeathTestThreadWarning(thread_count); + } + + int pipe_fd[2]; + GTEST_DEATH_TEST_CHECK_(pipe(pipe_fd) != -1); + + DeathTest::set_last_death_test_message(""); + CaptureStderr(); + // When we fork the process below, the log file buffers are copied, but the + // file descriptors are shared. We flush all log files here so that closing + // the file descriptors in the child process doesn't throw off the + // synchronization between descriptors and buffers in the parent process. + // This is as close to the fork as possible to avoid a race condition in case + // there are multiple threads running before the death test, and another + // thread writes to the log file. + FlushInfoLog(); + + const pid_t child_pid = fork(); + GTEST_DEATH_TEST_CHECK_(child_pid != -1); + set_child_pid(child_pid); + if (child_pid == 0) { + GTEST_DEATH_TEST_CHECK_SYSCALL_(close(pipe_fd[0])); + set_write_fd(pipe_fd[1]); + // Redirects all logging to stderr in the child process to prevent + // concurrent writes to the log files. We capture stderr in the parent + // process and append the child process' output to a log. + LogToStderr(); + // Event forwarding to the listeners of event listener API mush be shut + // down in death test subprocesses. + GetUnitTestImpl()->listeners()->SuppressEventForwarding(); + g_in_fast_death_test_child = true; + return EXECUTE_TEST; + } else { + GTEST_DEATH_TEST_CHECK_SYSCALL_(close(pipe_fd[1])); + set_read_fd(pipe_fd[0]); + set_spawned(true); + return OVERSEE_TEST; + } +} + +// A concrete death test class that forks and re-executes the main +// program from the beginning, with command-line flags set that cause +// only this specific death test to be run. +class ExecDeathTest : public ForkingDeathTest { + public: + ExecDeathTest(const char* a_statement, const RE* a_regex, + const char* file, int line) : + ForkingDeathTest(a_statement, a_regex), file_(file), line_(line) { } + virtual TestRole AssumeRole(); + private: + static ::std::vector + GetArgvsForDeathTestChildProcess() { + ::std::vector args = GetInjectableArgvs(); + return args; + } + // The name of the file in which the death test is located. + const char* const file_; + // The line number on which the death test is located. + const int line_; +}; + +// Utility class for accumulating command-line arguments. +class Arguments { + public: + Arguments() { + args_.push_back(NULL); + } + + ~Arguments() { + for (std::vector::iterator i = args_.begin(); i != args_.end(); + ++i) { + free(*i); + } + } + void AddArgument(const char* argument) { + args_.insert(args_.end() - 1, posix::StrDup(argument)); + } + + template + void AddArguments(const ::std::vector& arguments) { + for (typename ::std::vector::const_iterator i = arguments.begin(); + i != arguments.end(); + ++i) { + args_.insert(args_.end() - 1, posix::StrDup(i->c_str())); + } + } + char* const* Argv() { + return &args_[0]; + } + + private: + std::vector args_; +}; + +// A struct that encompasses the arguments to the child process of a +// threadsafe-style death test process. +struct ExecDeathTestArgs { + char* const* argv; // Command-line arguments for the child's call to exec + int close_fd; // File descriptor to close; the read end of a pipe +}; + +# if GTEST_OS_MAC +inline char** GetEnviron() { + // When Google Test is built as a framework on MacOS X, the environ variable + // is unavailable. Apple's documentation (man environ) recommends using + // _NSGetEnviron() instead. + return *_NSGetEnviron(); +} +# else +// Some POSIX platforms expect you to declare environ. extern "C" makes +// it reside in the global namespace. +extern "C" char** environ; +inline char** GetEnviron() { return environ; } +# endif // GTEST_OS_MAC + +# if !GTEST_OS_QNX +// The main function for a threadsafe-style death test child process. +// This function is called in a clone()-ed process and thus must avoid +// any potentially unsafe operations like malloc or libc functions. +static int ExecDeathTestChildMain(void* child_arg) { + ExecDeathTestArgs* const args = static_cast(child_arg); + GTEST_DEATH_TEST_CHECK_SYSCALL_(close(args->close_fd)); + + // We need to execute the test program in the same environment where + // it was originally invoked. Therefore we change to the original + // working directory first. + const char* const original_dir = + UnitTest::GetInstance()->original_working_dir(); + // We can safely call chdir() as it's a direct system call. + if (chdir(original_dir) != 0) { + DeathTestAbort(std::string("chdir(\"") + original_dir + "\") failed: " + + GetLastErrnoDescription()); + return EXIT_FAILURE; + } + + // We can safely call execve() as it's a direct system call. We + // cannot use execvp() as it's a libc function and thus potentially + // unsafe. Since execve() doesn't search the PATH, the user must + // invoke the test program via a valid path that contains at least + // one path separator. + execve(args->argv[0], args->argv, GetEnviron()); + DeathTestAbort(std::string("execve(") + args->argv[0] + ", ...) in " + + original_dir + " failed: " + + GetLastErrnoDescription()); + return EXIT_FAILURE; +} +# endif // !GTEST_OS_QNX + +// Two utility routines that together determine the direction the stack +// grows. +// This could be accomplished more elegantly by a single recursive +// function, but we want to guard against the unlikely possibility of +// a smart compiler optimizing the recursion away. +// +// GTEST_NO_INLINE_ is required to prevent GCC 4.6 from inlining +// StackLowerThanAddress into StackGrowsDown, which then doesn't give +// correct answer. +void StackLowerThanAddress(const void* ptr, bool* result) GTEST_NO_INLINE_; +void StackLowerThanAddress(const void* ptr, bool* result) { + int dummy; + *result = (&dummy < ptr); +} + +bool StackGrowsDown() { + int dummy; + bool result; + StackLowerThanAddress(&dummy, &result); + return result; +} + +// Spawns a child process with the same executable as the current process in +// a thread-safe manner and instructs it to run the death test. The +// implementation uses fork(2) + exec. On systems where clone(2) is +// available, it is used instead, being slightly more thread-safe. On QNX, +// fork supports only single-threaded environments, so this function uses +// spawn(2) there instead. The function dies with an error message if +// anything goes wrong. +static pid_t ExecDeathTestSpawnChild(char* const* argv, int close_fd) { + ExecDeathTestArgs args = { argv, close_fd }; + pid_t child_pid = -1; + +# if GTEST_OS_QNX + // Obtains the current directory and sets it to be closed in the child + // process. + const int cwd_fd = open(".", O_RDONLY); + GTEST_DEATH_TEST_CHECK_(cwd_fd != -1); + GTEST_DEATH_TEST_CHECK_SYSCALL_(fcntl(cwd_fd, F_SETFD, FD_CLOEXEC)); + // We need to execute the test program in the same environment where + // it was originally invoked. Therefore we change to the original + // working directory first. + const char* const original_dir = + UnitTest::GetInstance()->original_working_dir(); + // We can safely call chdir() as it's a direct system call. + if (chdir(original_dir) != 0) { + DeathTestAbort(std::string("chdir(\"") + original_dir + "\") failed: " + + GetLastErrnoDescription()); + return EXIT_FAILURE; + } + + int fd_flags; + // Set close_fd to be closed after spawn. + GTEST_DEATH_TEST_CHECK_SYSCALL_(fd_flags = fcntl(close_fd, F_GETFD)); + GTEST_DEATH_TEST_CHECK_SYSCALL_(fcntl(close_fd, F_SETFD, + fd_flags | FD_CLOEXEC)); + struct inheritance inherit = {0}; + // spawn is a system call. + child_pid = spawn(args.argv[0], 0, NULL, &inherit, args.argv, GetEnviron()); + // Restores the current working directory. + GTEST_DEATH_TEST_CHECK_(fchdir(cwd_fd) != -1); + GTEST_DEATH_TEST_CHECK_SYSCALL_(close(cwd_fd)); + +# else // GTEST_OS_QNX +# if GTEST_OS_LINUX + // When a SIGPROF signal is received while fork() or clone() are executing, + // the process may hang. To avoid this, we ignore SIGPROF here and re-enable + // it after the call to fork()/clone() is complete. + struct sigaction saved_sigprof_action; + struct sigaction ignore_sigprof_action; + memset(&ignore_sigprof_action, 0, sizeof(ignore_sigprof_action)); + sigemptyset(&ignore_sigprof_action.sa_mask); + ignore_sigprof_action.sa_handler = SIG_IGN; + GTEST_DEATH_TEST_CHECK_SYSCALL_(sigaction( + SIGPROF, &ignore_sigprof_action, &saved_sigprof_action)); +# endif // GTEST_OS_LINUX + +# if GTEST_HAS_CLONE + const bool use_fork = GTEST_FLAG(death_test_use_fork); + + if (!use_fork) { + static const bool stack_grows_down = StackGrowsDown(); + const size_t stack_size = getpagesize(); + // MMAP_ANONYMOUS is not defined on Mac, so we use MAP_ANON instead. + void* const stack = mmap(NULL, stack_size, PROT_READ | PROT_WRITE, + MAP_ANON | MAP_PRIVATE, -1, 0); + GTEST_DEATH_TEST_CHECK_(stack != MAP_FAILED); + + // Maximum stack alignment in bytes: For a downward-growing stack, this + // amount is subtracted from size of the stack space to get an address + // that is within the stack space and is aligned on all systems we care + // about. As far as I know there is no ABI with stack alignment greater + // than 64. We assume stack and stack_size already have alignment of + // kMaxStackAlignment. + const size_t kMaxStackAlignment = 64; + void* const stack_top = + static_cast(stack) + + (stack_grows_down ? stack_size - kMaxStackAlignment : 0); + GTEST_DEATH_TEST_CHECK_(stack_size > kMaxStackAlignment && + reinterpret_cast(stack_top) % kMaxStackAlignment == 0); + + child_pid = clone(&ExecDeathTestChildMain, stack_top, SIGCHLD, &args); + + GTEST_DEATH_TEST_CHECK_(munmap(stack, stack_size) != -1); + } +# else + const bool use_fork = true; +# endif // GTEST_HAS_CLONE + + if (use_fork && (child_pid = fork()) == 0) { + ExecDeathTestChildMain(&args); + _exit(0); + } +# endif // GTEST_OS_QNX +# if GTEST_OS_LINUX + GTEST_DEATH_TEST_CHECK_SYSCALL_( + sigaction(SIGPROF, &saved_sigprof_action, NULL)); +# endif // GTEST_OS_LINUX + + GTEST_DEATH_TEST_CHECK_(child_pid != -1); + return child_pid; +} + +// The AssumeRole process for a fork-and-exec death test. It re-executes the +// main program from the beginning, setting the --gtest_filter +// and --gtest_internal_run_death_test flags to cause only the current +// death test to be re-run. +DeathTest::TestRole ExecDeathTest::AssumeRole() { + const UnitTestImpl* const impl = GetUnitTestImpl(); + const InternalRunDeathTestFlag* const flag = + impl->internal_run_death_test_flag(); + const TestInfo* const info = impl->current_test_info(); + const int death_test_index = info->result()->death_test_count(); + + if (flag != NULL) { + set_write_fd(flag->write_fd()); + return EXECUTE_TEST; + } + + int pipe_fd[2]; + GTEST_DEATH_TEST_CHECK_(pipe(pipe_fd) != -1); + // Clear the close-on-exec flag on the write end of the pipe, lest + // it be closed when the child process does an exec: + GTEST_DEATH_TEST_CHECK_(fcntl(pipe_fd[1], F_SETFD, 0) != -1); + + const std::string filter_flag = + String::Format("--%s%s=%s.%s", + GTEST_FLAG_PREFIX_, kFilterFlag, + info->test_case_name(), info->name()); + const std::string internal_flag = + String::Format("--%s%s=%s|%d|%d|%d", + GTEST_FLAG_PREFIX_, kInternalRunDeathTestFlag, + file_, line_, death_test_index, pipe_fd[1]); + Arguments args; + args.AddArguments(GetArgvsForDeathTestChildProcess()); + args.AddArgument(filter_flag.c_str()); + args.AddArgument(internal_flag.c_str()); + + DeathTest::set_last_death_test_message(""); + + CaptureStderr(); + // See the comment in NoExecDeathTest::AssumeRole for why the next line + // is necessary. + FlushInfoLog(); + + const pid_t child_pid = ExecDeathTestSpawnChild(args.Argv(), pipe_fd[0]); + GTEST_DEATH_TEST_CHECK_SYSCALL_(close(pipe_fd[1])); + set_child_pid(child_pid); + set_read_fd(pipe_fd[0]); + set_spawned(true); + return OVERSEE_TEST; +} + +# endif // !GTEST_OS_WINDOWS + +// Creates a concrete DeathTest-derived class that depends on the +// --gtest_death_test_style flag, and sets the pointer pointed to +// by the "test" argument to its address. If the test should be +// skipped, sets that pointer to NULL. Returns true, unless the +// flag is set to an invalid value. +bool DefaultDeathTestFactory::Create(const char* statement, const RE* regex, + const char* file, int line, + DeathTest** test) { + UnitTestImpl* const impl = GetUnitTestImpl(); + const InternalRunDeathTestFlag* const flag = + impl->internal_run_death_test_flag(); + const int death_test_index = impl->current_test_info() + ->increment_death_test_count(); + + if (flag != NULL) { + if (death_test_index > flag->index()) { + DeathTest::set_last_death_test_message(String::Format( + "Death test count (%d) somehow exceeded expected maximum (%d)", + death_test_index, flag->index())); + return false; + } + + if (!(flag->file() == file && flag->line() == line && + flag->index() == death_test_index)) { + *test = NULL; + return true; + } + } + +# if GTEST_OS_WINDOWS + + if (GTEST_FLAG(death_test_style) == "threadsafe" || + GTEST_FLAG(death_test_style) == "fast") { + *test = new WindowsDeathTest(statement, regex, file, line); + } + +# else + + if (GTEST_FLAG(death_test_style) == "threadsafe") { + *test = new ExecDeathTest(statement, regex, file, line); + } else if (GTEST_FLAG(death_test_style) == "fast") { + *test = new NoExecDeathTest(statement, regex); + } + +# endif // GTEST_OS_WINDOWS + + else { // NOLINT - this is more readable than unbalanced brackets inside #if. + DeathTest::set_last_death_test_message(String::Format( + "Unknown death test style \"%s\" encountered", + GTEST_FLAG(death_test_style).c_str())); + return false; + } + + return true; +} + +// Splits a given string on a given delimiter, populating a given +// vector with the fields. GTEST_HAS_DEATH_TEST implies that we have +// ::std::string, so we can use it here. +static void SplitString(const ::std::string& str, char delimiter, + ::std::vector< ::std::string>* dest) { + ::std::vector< ::std::string> parsed; + ::std::string::size_type pos = 0; + while (::testing::internal::AlwaysTrue()) { + const ::std::string::size_type colon = str.find(delimiter, pos); + if (colon == ::std::string::npos) { + parsed.push_back(str.substr(pos)); + break; + } else { + parsed.push_back(str.substr(pos, colon - pos)); + pos = colon + 1; + } + } + dest->swap(parsed); +} + +# if GTEST_OS_WINDOWS +// Recreates the pipe and event handles from the provided parameters, +// signals the event, and returns a file descriptor wrapped around the pipe +// handle. This function is called in the child process only. +int GetStatusFileDescriptor(unsigned int parent_process_id, + size_t write_handle_as_size_t, + size_t event_handle_as_size_t) { + AutoHandle parent_process_handle(::OpenProcess(PROCESS_DUP_HANDLE, + FALSE, // Non-inheritable. + parent_process_id)); + if (parent_process_handle.Get() == INVALID_HANDLE_VALUE) { + DeathTestAbort(String::Format("Unable to open parent process %u", + parent_process_id)); + } + + // TODO(vladl@google.com): Replace the following check with a + // compile-time assertion when available. + GTEST_CHECK_(sizeof(HANDLE) <= sizeof(size_t)); + + const HANDLE write_handle = + reinterpret_cast(write_handle_as_size_t); + HANDLE dup_write_handle; + + // The newly initialized handle is accessible only in in the parent + // process. To obtain one accessible within the child, we need to use + // DuplicateHandle. + if (!::DuplicateHandle(parent_process_handle.Get(), write_handle, + ::GetCurrentProcess(), &dup_write_handle, + 0x0, // Requested privileges ignored since + // DUPLICATE_SAME_ACCESS is used. + FALSE, // Request non-inheritable handler. + DUPLICATE_SAME_ACCESS)) { + DeathTestAbort(String::Format( + "Unable to duplicate the pipe handle %Iu from the parent process %u", + write_handle_as_size_t, parent_process_id)); + } + + const HANDLE event_handle = reinterpret_cast(event_handle_as_size_t); + HANDLE dup_event_handle; + + if (!::DuplicateHandle(parent_process_handle.Get(), event_handle, + ::GetCurrentProcess(), &dup_event_handle, + 0x0, + FALSE, + DUPLICATE_SAME_ACCESS)) { + DeathTestAbort(String::Format( + "Unable to duplicate the event handle %Iu from the parent process %u", + event_handle_as_size_t, parent_process_id)); + } + + const int write_fd = + ::_open_osfhandle(reinterpret_cast(dup_write_handle), O_APPEND); + if (write_fd == -1) { + DeathTestAbort(String::Format( + "Unable to convert pipe handle %Iu to a file descriptor", + write_handle_as_size_t)); + } + + // Signals the parent that the write end of the pipe has been acquired + // so the parent can release its own write end. + ::SetEvent(dup_event_handle); + + return write_fd; +} +# endif // GTEST_OS_WINDOWS + +// Returns a newly created InternalRunDeathTestFlag object with fields +// initialized from the GTEST_FLAG(internal_run_death_test) flag if +// the flag is specified; otherwise returns NULL. +InternalRunDeathTestFlag* ParseInternalRunDeathTestFlag() { + if (GTEST_FLAG(internal_run_death_test) == "") return NULL; + + // GTEST_HAS_DEATH_TEST implies that we have ::std::string, so we + // can use it here. + int line = -1; + int index = -1; + ::std::vector< ::std::string> fields; + SplitString(GTEST_FLAG(internal_run_death_test).c_str(), '|', &fields); + int write_fd = -1; + +# if GTEST_OS_WINDOWS + + unsigned int parent_process_id = 0; + size_t write_handle_as_size_t = 0; + size_t event_handle_as_size_t = 0; + + if (fields.size() != 6 + || !ParseNaturalNumber(fields[1], &line) + || !ParseNaturalNumber(fields[2], &index) + || !ParseNaturalNumber(fields[3], &parent_process_id) + || !ParseNaturalNumber(fields[4], &write_handle_as_size_t) + || !ParseNaturalNumber(fields[5], &event_handle_as_size_t)) { + DeathTestAbort(String::Format( + "Bad --gtest_internal_run_death_test flag: %s", + GTEST_FLAG(internal_run_death_test).c_str())); + } + write_fd = GetStatusFileDescriptor(parent_process_id, + write_handle_as_size_t, + event_handle_as_size_t); +# else + + if (fields.size() != 4 + || !ParseNaturalNumber(fields[1], &line) + || !ParseNaturalNumber(fields[2], &index) + || !ParseNaturalNumber(fields[3], &write_fd)) { + DeathTestAbort(String::Format( + "Bad --gtest_internal_run_death_test flag: %s", + GTEST_FLAG(internal_run_death_test).c_str())); + } + +# endif // GTEST_OS_WINDOWS + + return new InternalRunDeathTestFlag(fields[0], line, index, write_fd); +} + +} // namespace internal + +#endif // GTEST_HAS_DEATH_TEST + +} // namespace testing +// Copyright 2008, Google Inc. +// All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Authors: keith.ray@gmail.com (Keith Ray) + + +#include + +#if GTEST_OS_WINDOWS_MOBILE +# include +#elif GTEST_OS_WINDOWS +# include +# include +#elif GTEST_OS_SYMBIAN +// Symbian OpenC has PATH_MAX in sys/syslimits.h +# include +#else +# include +# include // Some Linux distributions define PATH_MAX here. +#endif // GTEST_OS_WINDOWS_MOBILE + +#if GTEST_OS_WINDOWS +# define GTEST_PATH_MAX_ _MAX_PATH +#elif defined(PATH_MAX) +# define GTEST_PATH_MAX_ PATH_MAX +#elif defined(_XOPEN_PATH_MAX) +# define GTEST_PATH_MAX_ _XOPEN_PATH_MAX +#else +# define GTEST_PATH_MAX_ _POSIX_PATH_MAX +#endif // GTEST_OS_WINDOWS + + +namespace testing { +namespace internal { + +#if GTEST_OS_WINDOWS +// On Windows, '\\' is the standard path separator, but many tools and the +// Windows API also accept '/' as an alternate path separator. Unless otherwise +// noted, a file path can contain either kind of path separators, or a mixture +// of them. +const char kPathSeparator = '\\'; +const char kAlternatePathSeparator = '/'; +const char kPathSeparatorString[] = "\\"; +const char kAlternatePathSeparatorString[] = "/"; +# if GTEST_OS_WINDOWS_MOBILE +// Windows CE doesn't have a current directory. You should not use +// the current directory in tests on Windows CE, but this at least +// provides a reasonable fallback. +const char kCurrentDirectoryString[] = "\\"; +// Windows CE doesn't define INVALID_FILE_ATTRIBUTES +const DWORD kInvalidFileAttributes = 0xffffffff; +# else +const char kCurrentDirectoryString[] = ".\\"; +# endif // GTEST_OS_WINDOWS_MOBILE +#else +const char kPathSeparator = '/'; +const char kPathSeparatorString[] = "/"; +const char kCurrentDirectoryString[] = "./"; +#endif // GTEST_OS_WINDOWS + +// Returns whether the given character is a valid path separator. +static bool IsPathSeparator(char c) { +#if GTEST_HAS_ALT_PATH_SEP_ + return (c == kPathSeparator) || (c == kAlternatePathSeparator); +#else + return c == kPathSeparator; +#endif +} + +// Returns the current working directory, or "" if unsuccessful. +FilePath FilePath::GetCurrentDir() { +#if GTEST_OS_WINDOWS_MOBILE + // Windows CE doesn't have a current directory, so we just return + // something reasonable. + return FilePath(kCurrentDirectoryString); +#elif GTEST_OS_WINDOWS + char cwd[GTEST_PATH_MAX_ + 1] = { '\0' }; + return FilePath(_getcwd(cwd, sizeof(cwd)) == NULL ? "" : cwd); +#else + char cwd[GTEST_PATH_MAX_ + 1] = { '\0' }; + return FilePath(getcwd(cwd, sizeof(cwd)) == NULL ? "" : cwd); +#endif // GTEST_OS_WINDOWS_MOBILE +} + +// Returns a copy of the FilePath with the case-insensitive extension removed. +// Example: FilePath("dir/file.exe").RemoveExtension("EXE") returns +// FilePath("dir/file"). If a case-insensitive extension is not +// found, returns a copy of the original FilePath. +FilePath FilePath::RemoveExtension(const char* extension) const { + const std::string dot_extension = std::string(".") + extension; + if (String::EndsWithCaseInsensitive(pathname_, dot_extension)) { + return FilePath(pathname_.substr( + 0, pathname_.length() - dot_extension.length())); + } + return *this; +} + +// Returns a pointer to the last occurence of a valid path separator in +// the FilePath. On Windows, for example, both '/' and '\' are valid path +// separators. Returns NULL if no path separator was found. +const char* FilePath::FindLastPathSeparator() const { + const char* const last_sep = strrchr(c_str(), kPathSeparator); +#if GTEST_HAS_ALT_PATH_SEP_ + const char* const last_alt_sep = strrchr(c_str(), kAlternatePathSeparator); + // Comparing two pointers of which only one is NULL is undefined. + if (last_alt_sep != NULL && + (last_sep == NULL || last_alt_sep > last_sep)) { + return last_alt_sep; + } +#endif + return last_sep; +} + +// Returns a copy of the FilePath with the directory part removed. +// Example: FilePath("path/to/file").RemoveDirectoryName() returns +// FilePath("file"). If there is no directory part ("just_a_file"), it returns +// the FilePath unmodified. If there is no file part ("just_a_dir/") it +// returns an empty FilePath (""). +// On Windows platform, '\' is the path separator, otherwise it is '/'. +FilePath FilePath::RemoveDirectoryName() const { + const char* const last_sep = FindLastPathSeparator(); + return last_sep ? FilePath(last_sep + 1) : *this; +} + +// RemoveFileName returns the directory path with the filename removed. +// Example: FilePath("path/to/file").RemoveFileName() returns "path/to/". +// If the FilePath is "a_file" or "/a_file", RemoveFileName returns +// FilePath("./") or, on Windows, FilePath(".\\"). If the filepath does +// not have a file, like "just/a/dir/", it returns the FilePath unmodified. +// On Windows platform, '\' is the path separator, otherwise it is '/'. +FilePath FilePath::RemoveFileName() const { + const char* const last_sep = FindLastPathSeparator(); + std::string dir; + if (last_sep) { + dir = std::string(c_str(), last_sep + 1 - c_str()); + } else { + dir = kCurrentDirectoryString; + } + return FilePath(dir); +} + +// Helper functions for naming files in a directory for xml output. + +// Given directory = "dir", base_name = "test", number = 0, +// extension = "xml", returns "dir/test.xml". If number is greater +// than zero (e.g., 12), returns "dir/test_12.xml". +// On Windows platform, uses \ as the separator rather than /. +FilePath FilePath::MakeFileName(const FilePath& directory, + const FilePath& base_name, + int number, + const char* extension) { + std::string file; + if (number == 0) { + file = base_name.string() + "." + extension; + } else { + file = base_name.string() + "_" + String::Format("%d", number).c_str() + + "." + extension; + } + return ConcatPaths(directory, FilePath(file)); +} + +// Given directory = "dir", relative_path = "test.xml", returns "dir/test.xml". +// On Windows, uses \ as the separator rather than /. +FilePath FilePath::ConcatPaths(const FilePath& directory, + const FilePath& relative_path) { + if (directory.IsEmpty()) + return relative_path; + const FilePath dir(directory.RemoveTrailingPathSeparator()); + return FilePath(dir.string() + kPathSeparator + relative_path.string()); +} + +// Returns true if pathname describes something findable in the file-system, +// either a file, directory, or whatever. +bool FilePath::FileOrDirectoryExists() const { +#if GTEST_OS_WINDOWS_MOBILE + LPCWSTR unicode = String::AnsiToUtf16(pathname_.c_str()); + const DWORD attributes = GetFileAttributes(unicode); + delete [] unicode; + return attributes != kInvalidFileAttributes; +#else + posix::StatStruct file_stat; + return posix::Stat(pathname_.c_str(), &file_stat) == 0; +#endif // GTEST_OS_WINDOWS_MOBILE +} + +// Returns true if pathname describes a directory in the file-system +// that exists. +bool FilePath::DirectoryExists() const { + bool result = false; +#if GTEST_OS_WINDOWS + // Don't strip off trailing separator if path is a root directory on + // Windows (like "C:\\"). + const FilePath& path(IsRootDirectory() ? *this : + RemoveTrailingPathSeparator()); +#else + const FilePath& path(*this); +#endif + +#if GTEST_OS_WINDOWS_MOBILE + LPCWSTR unicode = String::AnsiToUtf16(path.c_str()); + const DWORD attributes = GetFileAttributes(unicode); + delete [] unicode; + if ((attributes != kInvalidFileAttributes) && + (attributes & FILE_ATTRIBUTE_DIRECTORY)) { + result = true; + } +#else + posix::StatStruct file_stat; + result = posix::Stat(path.c_str(), &file_stat) == 0 && + posix::IsDir(file_stat); +#endif // GTEST_OS_WINDOWS_MOBILE + + return result; +} + +// Returns true if pathname describes a root directory. (Windows has one +// root directory per disk drive.) +bool FilePath::IsRootDirectory() const { +#if GTEST_OS_WINDOWS + // TODO(wan@google.com): on Windows a network share like + // \\server\share can be a root directory, although it cannot be the + // current directory. Handle this properly. + return pathname_.length() == 3 && IsAbsolutePath(); +#else + return pathname_.length() == 1 && IsPathSeparator(pathname_.c_str()[0]); +#endif +} + +// Returns true if pathname describes an absolute path. +bool FilePath::IsAbsolutePath() const { + const char* const name = pathname_.c_str(); +#if GTEST_OS_WINDOWS + return pathname_.length() >= 3 && + ((name[0] >= 'a' && name[0] <= 'z') || + (name[0] >= 'A' && name[0] <= 'Z')) && + name[1] == ':' && + IsPathSeparator(name[2]); +#else + return IsPathSeparator(name[0]); +#endif +} + +// Returns a pathname for a file that does not currently exist. The pathname +// will be directory/base_name.extension or +// directory/base_name_.extension if directory/base_name.extension +// already exists. The number will be incremented until a pathname is found +// that does not already exist. +// Examples: 'dir/foo_test.xml' or 'dir/foo_test_1.xml'. +// There could be a race condition if two or more processes are calling this +// function at the same time -- they could both pick the same filename. +FilePath FilePath::GenerateUniqueFileName(const FilePath& directory, + const FilePath& base_name, + const char* extension) { + FilePath full_pathname; + int number = 0; + do { + full_pathname.Set(MakeFileName(directory, base_name, number++, extension)); + } while (full_pathname.FileOrDirectoryExists()); + return full_pathname; +} + +// Returns true if FilePath ends with a path separator, which indicates that +// it is intended to represent a directory. Returns false otherwise. +// This does NOT check that a directory (or file) actually exists. +bool FilePath::IsDirectory() const { + return !pathname_.empty() && + IsPathSeparator(pathname_.c_str()[pathname_.length() - 1]); +} + +// Create directories so that path exists. Returns true if successful or if +// the directories already exist; returns false if unable to create directories +// for any reason. +bool FilePath::CreateDirectoriesRecursively() const { + if (!this->IsDirectory()) { + return false; + } + + if (pathname_.length() == 0 || this->DirectoryExists()) { + return true; + } + + const FilePath parent(this->RemoveTrailingPathSeparator().RemoveFileName()); + return parent.CreateDirectoriesRecursively() && this->CreateFolder(); +} + +// Create the directory so that path exists. Returns true if successful or +// if the directory already exists; returns false if unable to create the +// directory for any reason, including if the parent directory does not +// exist. Not named "CreateDirectory" because that's a macro on Windows. +bool FilePath::CreateFolder() const { +#if GTEST_OS_WINDOWS_MOBILE + FilePath removed_sep(this->RemoveTrailingPathSeparator()); + LPCWSTR unicode = String::AnsiToUtf16(removed_sep.c_str()); + int result = CreateDirectory(unicode, NULL) ? 0 : -1; + delete [] unicode; +#elif GTEST_OS_WINDOWS + int result = _mkdir(pathname_.c_str()); +#else + int result = mkdir(pathname_.c_str(), 0777); +#endif // GTEST_OS_WINDOWS_MOBILE + + if (result == -1) { + return this->DirectoryExists(); // An error is OK if the directory exists. + } + return true; // No error. +} + +// If input name has a trailing separator character, remove it and return the +// name, otherwise return the name string unmodified. +// On Windows platform, uses \ as the separator, other platforms use /. +FilePath FilePath::RemoveTrailingPathSeparator() const { + return IsDirectory() + ? FilePath(pathname_.substr(0, pathname_.length() - 1)) + : *this; +} + +// Removes any redundant separators that might be in the pathname. +// For example, "bar///foo" becomes "bar/foo". Does not eliminate other +// redundancies that might be in a pathname involving "." or "..". +// TODO(wan@google.com): handle Windows network shares (e.g. \\server\share). +void FilePath::Normalize() { + if (pathname_.c_str() == NULL) { + pathname_ = ""; + return; + } + const char* src = pathname_.c_str(); + char* const dest = new char[pathname_.length() + 1]; + char* dest_ptr = dest; + memset(dest_ptr, 0, pathname_.length() + 1); + + while (*src != '\0') { + *dest_ptr = *src; + if (!IsPathSeparator(*src)) { + src++; + } else { +#if GTEST_HAS_ALT_PATH_SEP_ + if (*dest_ptr == kAlternatePathSeparator) { + *dest_ptr = kPathSeparator; + } +#endif + while (IsPathSeparator(*src)) + src++; + } + dest_ptr++; + } + *dest_ptr = '\0'; + pathname_ = dest; + delete[] dest; +} + +} // namespace internal +} // namespace testing +// Copyright 2008, Google Inc. +// All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Author: wan@google.com (Zhanyong Wan) + + +#include +#include +#include +#include + +#if GTEST_OS_WINDOWS_MOBILE +# include // For TerminateProcess() +#elif GTEST_OS_WINDOWS +# include +# include +#else +# include +#endif // GTEST_OS_WINDOWS_MOBILE + +#if GTEST_OS_MAC +# include +# include +# include +#endif // GTEST_OS_MAC + +#if GTEST_OS_QNX +# include +# include +#endif // GTEST_OS_QNX + + +// Indicates that this translation unit is part of Google Test's +// implementation. It must come before gtest-internal-inl.h is +// included, or there will be a compiler error. This trick is to +// prevent a user from accidentally including gtest-internal-inl.h in +// his code. +#define GTEST_IMPLEMENTATION_ 1 +#undef GTEST_IMPLEMENTATION_ + +namespace testing { +namespace internal { + +#if defined(_MSC_VER) || defined(__BORLANDC__) +// MSVC and C++Builder do not provide a definition of STDERR_FILENO. +const int kStdOutFileno = 1; +const int kStdErrFileno = 2; +#else +const int kStdOutFileno = STDOUT_FILENO; +const int kStdErrFileno = STDERR_FILENO; +#endif // _MSC_VER + +#if GTEST_OS_MAC + +// Returns the number of threads running in the process, or 0 to indicate that +// we cannot detect it. +size_t GetThreadCount() { + const task_t task = mach_task_self(); + mach_msg_type_number_t thread_count; + thread_act_array_t thread_list; + const kern_return_t status = task_threads(task, &thread_list, &thread_count); + if (status == KERN_SUCCESS) { + // task_threads allocates resources in thread_list and we need to free them + // to avoid leaks. + vm_deallocate(task, + reinterpret_cast(thread_list), + sizeof(thread_t) * thread_count); + return static_cast(thread_count); + } else { + return 0; + } +} + +#elif GTEST_OS_QNX + +// Returns the number of threads running in the process, or 0 to indicate that +// we cannot detect it. +size_t GetThreadCount() { + const int fd = open("/proc/self/as", O_RDONLY); + if (fd < 0) { + return 0; + } + procfs_info process_info; + const int status = + devctl(fd, DCMD_PROC_INFO, &process_info, sizeof(process_info), NULL); + close(fd); + if (status == EOK) { + return static_cast(process_info.num_threads); + } else { + return 0; + } +} + +#else + +size_t GetThreadCount() { + // There's no portable way to detect the number of threads, so we just + // return 0 to indicate that we cannot detect it. + return 0; +} + +#endif // GTEST_OS_MAC + +#if GTEST_USES_POSIX_RE + +// Implements RE. Currently only needed for death tests. + +RE::~RE() { + if (is_valid_) { + // regfree'ing an invalid regex might crash because the content + // of the regex is undefined. Since the regex's are essentially + // the same, one cannot be valid (or invalid) without the other + // being so too. + regfree(&partial_regex_); + regfree(&full_regex_); + } + free(const_cast(pattern_)); +} + +// Returns true iff regular expression re matches the entire str. +bool RE::FullMatch(const char* str, const RE& re) { + if (!re.is_valid_) return false; + + regmatch_t match; + return regexec(&re.full_regex_, str, 1, &match, 0) == 0; +} + +// Returns true iff regular expression re matches a substring of str +// (including str itself). +bool RE::PartialMatch(const char* str, const RE& re) { + if (!re.is_valid_) return false; + + regmatch_t match; + return regexec(&re.partial_regex_, str, 1, &match, 0) == 0; +} + +// Initializes an RE from its string representation. +void RE::Init(const char* regex) { + pattern_ = posix::StrDup(regex); + + // Reserves enough bytes to hold the regular expression used for a + // full match. + const size_t full_regex_len = strlen(regex) + 10; + char* const full_pattern = new char[full_regex_len]; + + snprintf(full_pattern, full_regex_len, "^(%s)$", regex); + is_valid_ = regcomp(&full_regex_, full_pattern, REG_EXTENDED) == 0; + // We want to call regcomp(&partial_regex_, ...) even if the + // previous expression returns false. Otherwise partial_regex_ may + // not be properly initialized can may cause trouble when it's + // freed. + // + // Some implementation of POSIX regex (e.g. on at least some + // versions of Cygwin) doesn't accept the empty string as a valid + // regex. We change it to an equivalent form "()" to be safe. + if (is_valid_) { + const char* const partial_regex = (*regex == '\0') ? "()" : regex; + is_valid_ = regcomp(&partial_regex_, partial_regex, REG_EXTENDED) == 0; + } + EXPECT_TRUE(is_valid_) + << "Regular expression \"" << regex + << "\" is not a valid POSIX Extended regular expression."; + + delete[] full_pattern; +} + +#elif GTEST_USES_SIMPLE_RE + +// Returns true iff ch appears anywhere in str (excluding the +// terminating '\0' character). +bool IsInSet(char ch, const char* str) { + return ch != '\0' && strchr(str, ch) != NULL; +} + +// Returns true iff ch belongs to the given classification. Unlike +// similar functions in , these aren't affected by the +// current locale. +bool IsAsciiDigit(char ch) { return '0' <= ch && ch <= '9'; } +bool IsAsciiPunct(char ch) { + return IsInSet(ch, "^-!\"#$%&'()*+,./:;<=>?@[\\]_`{|}~"); +} +bool IsRepeat(char ch) { return IsInSet(ch, "?*+"); } +bool IsAsciiWhiteSpace(char ch) { return IsInSet(ch, " \f\n\r\t\v"); } +bool IsAsciiWordChar(char ch) { + return ('a' <= ch && ch <= 'z') || ('A' <= ch && ch <= 'Z') || + ('0' <= ch && ch <= '9') || ch == '_'; +} + +// Returns true iff "\\c" is a supported escape sequence. +bool IsValidEscape(char c) { + return (IsAsciiPunct(c) || IsInSet(c, "dDfnrsStvwW")); +} + +// Returns true iff the given atom (specified by escaped and pattern) +// matches ch. The result is undefined if the atom is invalid. +bool AtomMatchesChar(bool escaped, char pattern_char, char ch) { + if (escaped) { // "\\p" where p is pattern_char. + switch (pattern_char) { + case 'd': return IsAsciiDigit(ch); + case 'D': return !IsAsciiDigit(ch); + case 'f': return ch == '\f'; + case 'n': return ch == '\n'; + case 'r': return ch == '\r'; + case 's': return IsAsciiWhiteSpace(ch); + case 'S': return !IsAsciiWhiteSpace(ch); + case 't': return ch == '\t'; + case 'v': return ch == '\v'; + case 'w': return IsAsciiWordChar(ch); + case 'W': return !IsAsciiWordChar(ch); + } + return IsAsciiPunct(pattern_char) && pattern_char == ch; + } + + return (pattern_char == '.' && ch != '\n') || pattern_char == ch; +} + +// Helper function used by ValidateRegex() to format error messages. +std::string FormatRegexSyntaxError(const char* regex, int index) { + return (Message() << "Syntax error at index " << index + << " in simple regular expression \"" << regex << "\": ").GetString(); +} + +// Generates non-fatal failures and returns false if regex is invalid; +// otherwise returns true. +bool ValidateRegex(const char* regex) { + if (regex == NULL) { + // TODO(wan@google.com): fix the source file location in the + // assertion failures to match where the regex is used in user + // code. + ADD_FAILURE() << "NULL is not a valid simple regular expression."; + return false; + } + + bool is_valid = true; + + // True iff ?, *, or + can follow the previous atom. + bool prev_repeatable = false; + for (int i = 0; regex[i]; i++) { + if (regex[i] == '\\') { // An escape sequence + i++; + if (regex[i] == '\0') { + ADD_FAILURE() << FormatRegexSyntaxError(regex, i - 1) + << "'\\' cannot appear at the end."; + return false; + } + + if (!IsValidEscape(regex[i])) { + ADD_FAILURE() << FormatRegexSyntaxError(regex, i - 1) + << "invalid escape sequence \"\\" << regex[i] << "\"."; + is_valid = false; + } + prev_repeatable = true; + } else { // Not an escape sequence. + const char ch = regex[i]; + + if (ch == '^' && i > 0) { + ADD_FAILURE() << FormatRegexSyntaxError(regex, i) + << "'^' can only appear at the beginning."; + is_valid = false; + } else if (ch == '$' && regex[i + 1] != '\0') { + ADD_FAILURE() << FormatRegexSyntaxError(regex, i) + << "'$' can only appear at the end."; + is_valid = false; + } else if (IsInSet(ch, "()[]{}|")) { + ADD_FAILURE() << FormatRegexSyntaxError(regex, i) + << "'" << ch << "' is unsupported."; + is_valid = false; + } else if (IsRepeat(ch) && !prev_repeatable) { + ADD_FAILURE() << FormatRegexSyntaxError(regex, i) + << "'" << ch << "' can only follow a repeatable token."; + is_valid = false; + } + + prev_repeatable = !IsInSet(ch, "^$?*+"); + } + } + + return is_valid; +} + +// Matches a repeated regex atom followed by a valid simple regular +// expression. The regex atom is defined as c if escaped is false, +// or \c otherwise. repeat is the repetition meta character (?, *, +// or +). The behavior is undefined if str contains too many +// characters to be indexable by size_t, in which case the test will +// probably time out anyway. We are fine with this limitation as +// std::string has it too. +bool MatchRepetitionAndRegexAtHead( + bool escaped, char c, char repeat, const char* regex, + const char* str) { + const size_t min_count = (repeat == '+') ? 1 : 0; + const size_t max_count = (repeat == '?') ? 1 : + static_cast(-1) - 1; + // We cannot call numeric_limits::max() as it conflicts with the + // max() macro on Windows. + + for (size_t i = 0; i <= max_count; ++i) { + // We know that the atom matches each of the first i characters in str. + if (i >= min_count && MatchRegexAtHead(regex, str + i)) { + // We have enough matches at the head, and the tail matches too. + // Since we only care about *whether* the pattern matches str + // (as opposed to *how* it matches), there is no need to find a + // greedy match. + return true; + } + if (str[i] == '\0' || !AtomMatchesChar(escaped, c, str[i])) + return false; + } + return false; +} + +// Returns true iff regex matches a prefix of str. regex must be a +// valid simple regular expression and not start with "^", or the +// result is undefined. +bool MatchRegexAtHead(const char* regex, const char* str) { + if (*regex == '\0') // An empty regex matches a prefix of anything. + return true; + + // "$" only matches the end of a string. Note that regex being + // valid guarantees that there's nothing after "$" in it. + if (*regex == '$') + return *str == '\0'; + + // Is the first thing in regex an escape sequence? + const bool escaped = *regex == '\\'; + if (escaped) + ++regex; + if (IsRepeat(regex[1])) { + // MatchRepetitionAndRegexAtHead() calls MatchRegexAtHead(), so + // here's an indirect recursion. It terminates as the regex gets + // shorter in each recursion. + return MatchRepetitionAndRegexAtHead( + escaped, regex[0], regex[1], regex + 2, str); + } else { + // regex isn't empty, isn't "$", and doesn't start with a + // repetition. We match the first atom of regex with the first + // character of str and recurse. + return (*str != '\0') && AtomMatchesChar(escaped, *regex, *str) && + MatchRegexAtHead(regex + 1, str + 1); + } +} + +// Returns true iff regex matches any substring of str. regex must be +// a valid simple regular expression, or the result is undefined. +// +// The algorithm is recursive, but the recursion depth doesn't exceed +// the regex length, so we won't need to worry about running out of +// stack space normally. In rare cases the time complexity can be +// exponential with respect to the regex length + the string length, +// but usually it's must faster (often close to linear). +bool MatchRegexAnywhere(const char* regex, const char* str) { + if (regex == NULL || str == NULL) + return false; + + if (*regex == '^') + return MatchRegexAtHead(regex + 1, str); + + // A successful match can be anywhere in str. + do { + if (MatchRegexAtHead(regex, str)) + return true; + } while (*str++ != '\0'); + return false; +} + +// Implements the RE class. + +RE::~RE() { + free(const_cast(pattern_)); + free(const_cast(full_pattern_)); +} + +// Returns true iff regular expression re matches the entire str. +bool RE::FullMatch(const char* str, const RE& re) { + return re.is_valid_ && MatchRegexAnywhere(re.full_pattern_, str); +} + +// Returns true iff regular expression re matches a substring of str +// (including str itself). +bool RE::PartialMatch(const char* str, const RE& re) { + return re.is_valid_ && MatchRegexAnywhere(re.pattern_, str); +} + +// Initializes an RE from its string representation. +void RE::Init(const char* regex) { + pattern_ = full_pattern_ = NULL; + if (regex != NULL) { + pattern_ = posix::StrDup(regex); + } + + is_valid_ = ValidateRegex(regex); + if (!is_valid_) { + // No need to calculate the full pattern when the regex is invalid. + return; + } + + const size_t len = strlen(regex); + // Reserves enough bytes to hold the regular expression used for a + // full match: we need space to prepend a '^', append a '$', and + // terminate the string with '\0'. + char* buffer = static_cast(malloc(len + 3)); + full_pattern_ = buffer; + + if (*regex != '^') + *buffer++ = '^'; // Makes sure full_pattern_ starts with '^'. + + // We don't use snprintf or strncpy, as they trigger a warning when + // compiled with VC++ 8.0. + memcpy(buffer, regex, len); + buffer += len; + + if (len == 0 || regex[len - 1] != '$') + *buffer++ = '$'; // Makes sure full_pattern_ ends with '$'. + + *buffer = '\0'; +} + +#endif // GTEST_USES_POSIX_RE + +const char kUnknownFile[] = "unknown file"; + +// Formats a source file path and a line number as they would appear +// in an error message from the compiler used to compile this code. +GTEST_API_ ::std::string FormatFileLocation(const char* file, int line) { + const char* const file_name = file == NULL ? kUnknownFile : file; + + if (line < 0) { + return String::Format("%s:", file_name).c_str(); + } +#ifdef _MSC_VER + return String::Format("%s(%d):", file_name, line).c_str(); +#else + return String::Format("%s:%d:", file_name, line).c_str(); +#endif // _MSC_VER +} + +// Formats a file location for compiler-independent XML output. +// Although this function is not platform dependent, we put it next to +// FormatFileLocation in order to contrast the two functions. +// Note that FormatCompilerIndependentFileLocation() does NOT append colon +// to the file location it produces, unlike FormatFileLocation(). +GTEST_API_ ::std::string FormatCompilerIndependentFileLocation( + const char* file, int line) { + const char* const file_name = file == NULL ? kUnknownFile : file; + + if (line < 0) + return file_name; + else + return String::Format("%s:%d", file_name, line).c_str(); +} + + +GTestLog::GTestLog(GTestLogSeverity severity, const char* file, int line) + : severity_(severity) { + const char* const marker = + severity == GTEST_INFO ? "[ INFO ]" : + severity == GTEST_WARNING ? "[WARNING]" : + severity == GTEST_ERROR ? "[ ERROR ]" : "[ FATAL ]"; + GetStream() << ::std::endl << marker << " " + << FormatFileLocation(file, line).c_str() << ": "; +} + +// Flushes the buffers and, if severity is GTEST_FATAL, aborts the program. +GTestLog::~GTestLog() { + GetStream() << ::std::endl; + if (severity_ == GTEST_FATAL) { + fflush(stderr); + posix::Abort(); + } +} +// Disable Microsoft deprecation warnings for POSIX functions called from +// this class (creat, dup, dup2, and close) +#ifdef _MSC_VER +# pragma warning(push) +# pragma warning(disable: 4996) +#endif // _MSC_VER + +#if GTEST_HAS_STREAM_REDIRECTION + +// Object that captures an output stream (stdout/stderr). +class CapturedStream { + public: + // The ctor redirects the stream to a temporary file. + explicit CapturedStream(int fd) : fd_(fd), uncaptured_fd_(dup(fd)) { +# if GTEST_OS_WINDOWS + char temp_dir_path[MAX_PATH + 1] = { '\0' }; // NOLINT + char temp_file_path[MAX_PATH + 1] = { '\0' }; // NOLINT + + ::GetTempPathA(sizeof(temp_dir_path), temp_dir_path); + const UINT success = ::GetTempFileNameA(temp_dir_path, + "gtest_redir", + 0, // Generate unique file name. + temp_file_path); + GTEST_CHECK_(success != 0) + << "Unable to create a temporary file in " << temp_dir_path; + const int captured_fd = creat(temp_file_path, _S_IREAD | _S_IWRITE); + GTEST_CHECK_(captured_fd != -1) << "Unable to open temporary file " + << temp_file_path; + filename_ = temp_file_path; +# else + // There's no guarantee that a test has write access to the current + // directory, so we create the temporary file in the /tmp directory + // instead. We use /tmp on most systems, and /sdcard on Android. + // That's because Android doesn't have /tmp. +# if GTEST_OS_LINUX_ANDROID + // Note: Android applications are expected to call the framework's + // Context.getExternalStorageDirectory() method through JNI to get + // the location of the world-writable SD Card directory. However, + // this requires a Context handle, which cannot be retrieved + // globally from native code. Doing so also precludes running the + // code as part of a regular standalone executable, which doesn't + // run in a Dalvik process (e.g. when running it through 'adb shell'). + // + // The location /sdcard is directly accessible from native code + // and is the only location (unofficially) supported by the Android + // team. It's generally a symlink to the real SD Card mount point + // which can be /mnt/sdcard, /mnt/sdcard0, /system/media/sdcard, or + // other OEM-customized locations. Never rely on these, and always + // use /sdcard. + char name_template[] = "/sdcard/gtest_captured_stream.XXXXXX"; +# else + char name_template[] = "/tmp/captured_stream.XXXXXX"; +# endif // GTEST_OS_LINUX_ANDROID + const int captured_fd = mkstemp(name_template); + filename_ = name_template; +# endif // GTEST_OS_WINDOWS + fflush(NULL); + dup2(captured_fd, fd_); + close(captured_fd); + } + + ~CapturedStream() { + remove(filename_.c_str()); + } + + std::string GetCapturedString() { + if (uncaptured_fd_ != -1) { + // Restores the original stream. + fflush(NULL); + dup2(uncaptured_fd_, fd_); + close(uncaptured_fd_); + uncaptured_fd_ = -1; + } + + FILE* const file = posix::FOpen(filename_.c_str(), "r"); + const std::string content = ReadEntireFile(file); + posix::FClose(file); + return content; + } + + private: + // Reads the entire content of a file as an std::string. + static std::string ReadEntireFile(FILE* file); + + // Returns the size (in bytes) of a file. + static size_t GetFileSize(FILE* file); + + const int fd_; // A stream to capture. + int uncaptured_fd_; + // Name of the temporary file holding the stderr output. + ::std::string filename_; + + GTEST_DISALLOW_COPY_AND_ASSIGN_(CapturedStream); +}; + +// Returns the size (in bytes) of a file. +size_t CapturedStream::GetFileSize(FILE* file) { + fseek(file, 0, SEEK_END); + return static_cast(ftell(file)); +} + +// Reads the entire content of a file as a string. +std::string CapturedStream::ReadEntireFile(FILE* file) { + const size_t file_size = GetFileSize(file); + char* const buffer = new char[file_size]; + + size_t bytes_last_read = 0; // # of bytes read in the last fread() + size_t bytes_read = 0; // # of bytes read so far + + fseek(file, 0, SEEK_SET); + + // Keeps reading the file until we cannot read further or the + // pre-determined file size is reached. + do { + bytes_last_read = fread(buffer+bytes_read, 1, file_size-bytes_read, file); + bytes_read += bytes_last_read; + } while (bytes_last_read > 0 && bytes_read < file_size); + + const std::string content(buffer, bytes_read); + delete[] buffer; + + return content; +} + +# ifdef _MSC_VER +# pragma warning(pop) +# endif // _MSC_VER + +static CapturedStream* g_captured_stderr = NULL; +static CapturedStream* g_captured_stdout = NULL; + +// Starts capturing an output stream (stdout/stderr). +void CaptureStream(int fd, const char* stream_name, CapturedStream** stream) { + if (*stream != NULL) { + GTEST_LOG_(FATAL) << "Only one " << stream_name + << " capturer can exist at a time."; + } + *stream = new CapturedStream(fd); +} + +// Stops capturing the output stream and returns the captured string. +std::string GetCapturedStream(CapturedStream** captured_stream) { + const std::string content = (*captured_stream)->GetCapturedString(); + + delete *captured_stream; + *captured_stream = NULL; + + return content; +} + +// Starts capturing stdout. +void CaptureStdout() { + CaptureStream(kStdOutFileno, "stdout", &g_captured_stdout); +} + +// Starts capturing stderr. +void CaptureStderr() { + CaptureStream(kStdErrFileno, "stderr", &g_captured_stderr); +} + +// Stops capturing stdout and returns the captured string. +std::string GetCapturedStdout() { + return GetCapturedStream(&g_captured_stdout); +} + +// Stops capturing stderr and returns the captured string. +std::string GetCapturedStderr() { + return GetCapturedStream(&g_captured_stderr); +} + +#endif // GTEST_HAS_STREAM_REDIRECTION + +#if GTEST_HAS_DEATH_TEST + +// A copy of all command line arguments. Set by InitGoogleTest(). +::std::vector g_argvs; + +static const ::std::vector* g_injected_test_argvs = + NULL; // Owned. + +void SetInjectableArgvs(const ::std::vector* argvs) { + if (g_injected_test_argvs != argvs) + delete g_injected_test_argvs; + g_injected_test_argvs = argvs; +} + +const ::std::vector& GetInjectableArgvs() { + if (g_injected_test_argvs != NULL) { + return *g_injected_test_argvs; + } + return g_argvs; +} +#endif // GTEST_HAS_DEATH_TEST + +#if GTEST_OS_WINDOWS_MOBILE +namespace posix { +void Abort() { + DebugBreak(); + TerminateProcess(GetCurrentProcess(), 1); +} +} // namespace posix +#endif // GTEST_OS_WINDOWS_MOBILE + +// Returns the name of the environment variable corresponding to the +// given flag. For example, FlagToEnvVar("foo") will return +// "GTEST_FOO" in the open-source version. +static std::string FlagToEnvVar(const char* flag) { + const std::string full_flag = + (Message() << GTEST_FLAG_PREFIX_ << flag).GetString(); + + Message env_var; + for (size_t i = 0; i != full_flag.length(); i++) { + env_var << ToUpper(full_flag.c_str()[i]); + } + + return env_var.GetString(); +} + +// Parses 'str' for a 32-bit signed integer. If successful, writes +// the result to *value and returns true; otherwise leaves *value +// unchanged and returns false. +bool ParseInt32(const Message& src_text, const char* str, Int32* value) { + // Parses the environment variable as a decimal integer. + char* end = NULL; + const long long_value = strtol(str, &end, 10); // NOLINT + + // Has strtol() consumed all characters in the string? + if (*end != '\0') { + // No - an invalid character was encountered. + Message msg; + msg << "WARNING: " << src_text + << " is expected to be a 32-bit integer, but actually" + << " has value \"" << str << "\".\n"; + printf("%s", msg.GetString().c_str()); + fflush(stdout); + return false; + } + + // Is the parsed value in the range of an Int32? + const Int32 result = static_cast(long_value); + if (long_value == LONG_MAX || long_value == LONG_MIN || + // The parsed value overflows as a long. (strtol() returns + // LONG_MAX or LONG_MIN when the input overflows.) + result != long_value + // The parsed value overflows as an Int32. + ) { + Message msg; + msg << "WARNING: " << src_text + << " is expected to be a 32-bit integer, but actually" + << " has value " << str << ", which overflows.\n"; + printf("%s", msg.GetString().c_str()); + fflush(stdout); + return false; + } + + *value = result; + return true; +} + +// Reads and returns the Boolean environment variable corresponding to +// the given flag; if it's not set, returns default_value. +// +// The value is considered true iff it's not "0". +bool BoolFromGTestEnv(const char* flag, bool default_value) { + const std::string env_var = FlagToEnvVar(flag); + const char* const string_value = posix::GetEnv(env_var.c_str()); + return string_value == NULL ? + default_value : strcmp(string_value, "0") != 0; +} + +// Reads and returns a 32-bit integer stored in the environment +// variable corresponding to the given flag; if it isn't set or +// doesn't represent a valid 32-bit integer, returns default_value. +Int32 Int32FromGTestEnv(const char* flag, Int32 default_value) { + const std::string env_var = FlagToEnvVar(flag); + const char* const string_value = posix::GetEnv(env_var.c_str()); + if (string_value == NULL) { + // The environment variable is not set. + return default_value; + } + + Int32 result = default_value; + if (!ParseInt32(Message() << "Environment variable " << env_var, + string_value, &result)) { + printf("The default value %s is used.\n", + (Message() << default_value).GetString().c_str()); + fflush(stdout); + return default_value; + } + + return result; +} + +// Reads and returns the string environment variable corresponding to +// the given flag; if it's not set, returns default_value. +const char* StringFromGTestEnv(const char* flag, const char* default_value) { + const std::string env_var = FlagToEnvVar(flag); + const char* const value = posix::GetEnv(env_var.c_str()); + return value == NULL ? default_value : value; +} + +} // namespace internal +} // namespace testing +// Copyright 2007, Google Inc. +// All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Author: wan@google.com (Zhanyong Wan) + +// Google Test - The Google C++ Testing Framework +// +// This file implements a universal value printer that can print a +// value of any type T: +// +// void ::testing::internal::UniversalPrinter::Print(value, ostream_ptr); +// +// It uses the << operator when possible, and prints the bytes in the +// object otherwise. A user can override its behavior for a class +// type Foo by defining either operator<<(::std::ostream&, const Foo&) +// or void PrintTo(const Foo&, ::std::ostream*) in the namespace that +// defines Foo. + +#include +#include +#include // NOLINT +#include + +namespace testing { + +namespace { + +using ::std::ostream; + +// Prints a segment of bytes in the given object. +void PrintByteSegmentInObjectTo(const unsigned char* obj_bytes, size_t start, + size_t count, ostream* os) { + char text[5] = ""; + for (size_t i = 0; i != count; i++) { + const size_t j = start + i; + if (i != 0) { + // Organizes the bytes into groups of 2 for easy parsing by + // human. + if ((j % 2) == 0) + *os << ' '; + else + *os << '-'; + } + GTEST_SNPRINTF_(text, sizeof(text), "%02X", obj_bytes[j]); + *os << text; + } +} + +// Prints the bytes in the given value to the given ostream. +void PrintBytesInObjectToImpl(const unsigned char* obj_bytes, size_t count, + ostream* os) { + // Tells the user how big the object is. + *os << count << "-byte object <"; + + const size_t kThreshold = 132; + const size_t kChunkSize = 64; + // If the object size is bigger than kThreshold, we'll have to omit + // some details by printing only the first and the last kChunkSize + // bytes. + // TODO(wan): let the user control the threshold using a flag. + if (count < kThreshold) { + PrintByteSegmentInObjectTo(obj_bytes, 0, count, os); + } else { + PrintByteSegmentInObjectTo(obj_bytes, 0, kChunkSize, os); + *os << " ... "; + // Rounds up to 2-byte boundary. + const size_t resume_pos = (count - kChunkSize + 1)/2*2; + PrintByteSegmentInObjectTo(obj_bytes, resume_pos, count - resume_pos, os); + } + *os << ">"; +} + +} // namespace + +namespace internal2 { + +// Delegates to PrintBytesInObjectToImpl() to print the bytes in the +// given object. The delegation simplifies the implementation, which +// uses the << operator and thus is easier done outside of the +// ::testing::internal namespace, which contains a << operator that +// sometimes conflicts with the one in STL. +void PrintBytesInObjectTo(const unsigned char* obj_bytes, size_t count, + ostream* os) { + PrintBytesInObjectToImpl(obj_bytes, count, os); +} + +} // namespace internal2 + +namespace internal { + +// Depending on the value of a char (or wchar_t), we print it in one +// of three formats: +// - as is if it's a printable ASCII (e.g. 'a', '2', ' '), +// - as a hexidecimal escape sequence (e.g. '\x7F'), or +// - as a special escape sequence (e.g. '\r', '\n'). +enum CharFormat { + kAsIs, + kHexEscape, + kSpecialEscape +}; + +// Returns true if c is a printable ASCII character. We test the +// value of c directly instead of calling isprint(), which is buggy on +// Windows Mobile. +inline bool IsPrintableAscii(wchar_t c) { + return 0x20 <= c && c <= 0x7E; +} + +// Prints a wide or narrow char c as a character literal without the +// quotes, escaping it when necessary; returns how c was formatted. +// The template argument UnsignedChar is the unsigned version of Char, +// which is the type of c. +template +static CharFormat PrintAsCharLiteralTo(Char c, ostream* os) { + switch (static_cast(c)) { + case L'\0': + *os << "\\0"; + break; + case L'\'': + *os << "\\'"; + break; + case L'\\': + *os << "\\\\"; + break; + case L'\a': + *os << "\\a"; + break; + case L'\b': + *os << "\\b"; + break; + case L'\f': + *os << "\\f"; + break; + case L'\n': + *os << "\\n"; + break; + case L'\r': + *os << "\\r"; + break; + case L'\t': + *os << "\\t"; + break; + case L'\v': + *os << "\\v"; + break; + default: + if (IsPrintableAscii(c)) { + *os << static_cast(c); + return kAsIs; + } else { + *os << String::Format("\\x%X", static_cast(c)); + return kHexEscape; + } + } + return kSpecialEscape; +} + +// Prints a wchar_t c as if it's part of a string literal, escaping it when +// necessary; returns how c was formatted. +static CharFormat PrintAsStringLiteralTo(wchar_t c, ostream* os) { + switch (c) { + case L'\'': + *os << "'"; + return kAsIs; + case L'"': + *os << "\\\""; + return kSpecialEscape; + default: + return PrintAsCharLiteralTo(c, os); + } +} + +// Prints a char c as if it's part of a string literal, escaping it when +// necessary; returns how c was formatted. +static CharFormat PrintAsStringLiteralTo(char c, ostream* os) { + return PrintAsStringLiteralTo( + static_cast(static_cast(c)), os); +} + +// Prints a wide or narrow character c and its code. '\0' is printed +// as "'\\0'", other unprintable characters are also properly escaped +// using the standard C++ escape sequence. The template argument +// UnsignedChar is the unsigned version of Char, which is the type of c. +template +void PrintCharAndCodeTo(Char c, ostream* os) { + // First, print c as a literal in the most readable form we can find. + *os << ((sizeof(c) > 1) ? "L'" : "'"); + const CharFormat format = PrintAsCharLiteralTo(c, os); + *os << "'"; + + // To aid user debugging, we also print c's code in decimal, unless + // it's 0 (in which case c was printed as '\\0', making the code + // obvious). + if (c == 0) + return; + *os << " (" << String::Format("%d", c).c_str(); + + // For more convenience, we print c's code again in hexidecimal, + // unless c was already printed in the form '\x##' or the code is in + // [1, 9]. + if (format == kHexEscape || (1 <= c && c <= 9)) { + // Do nothing. + } else { + *os << String::Format(", 0x%X", + static_cast(c)).c_str(); + } + *os << ")"; +} + +void PrintTo(unsigned char c, ::std::ostream* os) { + PrintCharAndCodeTo(c, os); +} +void PrintTo(signed char c, ::std::ostream* os) { + PrintCharAndCodeTo(c, os); +} + +// Prints a wchar_t as a symbol if it is printable or as its internal +// code otherwise and also as its code. L'\0' is printed as "L'\\0'". +void PrintTo(wchar_t wc, ostream* os) { + PrintCharAndCodeTo(wc, os); +} + +// Prints the given array of characters to the ostream. CharType must be either +// char or wchar_t. +// The array starts at begin, the length is len, it may include '\0' characters +// and may not be NUL-terminated. +template +static void PrintCharsAsStringTo( + const CharType* begin, size_t len, ostream* os) { + const char* const kQuoteBegin = sizeof(CharType) == 1 ? "\"" : "L\""; + *os << kQuoteBegin; + bool is_previous_hex = false; + for (size_t index = 0; index < len; ++index) { + const CharType cur = begin[index]; + if (is_previous_hex && IsXDigit(cur)) { + // Previous character is of '\x..' form and this character can be + // interpreted as another hexadecimal digit in its number. Break string to + // disambiguate. + *os << "\" " << kQuoteBegin; + } + is_previous_hex = PrintAsStringLiteralTo(cur, os) == kHexEscape; + } + *os << "\""; +} + +// Prints a (const) char/wchar_t array of 'len' elements, starting at address +// 'begin'. CharType must be either char or wchar_t. +template +static void UniversalPrintCharArray( + const CharType* begin, size_t len, ostream* os) { + // The code + // const char kFoo[] = "foo"; + // generates an array of 4, not 3, elements, with the last one being '\0'. + // + // Therefore when printing a char array, we don't print the last element if + // it's '\0', such that the output matches the string literal as it's + // written in the source code. + if (len > 0 && begin[len - 1] == '\0') { + PrintCharsAsStringTo(begin, len - 1, os); + return; + } + + // If, however, the last element in the array is not '\0', e.g. + // const char kFoo[] = { 'f', 'o', 'o' }; + // we must print the entire array. We also print a message to indicate + // that the array is not NUL-terminated. + PrintCharsAsStringTo(begin, len, os); + *os << " (no terminating NUL)"; +} + +// Prints a (const) char array of 'len' elements, starting at address 'begin'. +void UniversalPrintArray(const char* begin, size_t len, ostream* os) { + UniversalPrintCharArray(begin, len, os); +} + +// Prints a (const) wchar_t array of 'len' elements, starting at address +// 'begin'. +void UniversalPrintArray(const wchar_t* begin, size_t len, ostream* os) { + UniversalPrintCharArray(begin, len, os); +} + +// Prints the given C string to the ostream. +void PrintTo(const char* s, ostream* os) { + if (s == NULL) { + *os << "NULL"; + } else { + *os << ImplicitCast_(s) << " pointing to "; + PrintCharsAsStringTo(s, strlen(s), os); + } +} + +// MSVC compiler can be configured to define whar_t as a typedef +// of unsigned short. Defining an overload for const wchar_t* in that case +// would cause pointers to unsigned shorts be printed as wide strings, +// possibly accessing more memory than intended and causing invalid +// memory accesses. MSVC defines _NATIVE_WCHAR_T_DEFINED symbol when +// wchar_t is implemented as a native type. +#if !defined(_MSC_VER) || defined(_NATIVE_WCHAR_T_DEFINED) +// Prints the given wide C string to the ostream. +void PrintTo(const wchar_t* s, ostream* os) { + if (s == NULL) { + *os << "NULL"; + } else { + *os << ImplicitCast_(s) << " pointing to "; + PrintCharsAsStringTo(s, wcslen(s), os); + } +} +#endif // wchar_t is native + +// Prints a ::string object. +#if GTEST_HAS_GLOBAL_STRING +void PrintStringTo(const ::string& s, ostream* os) { + PrintCharsAsStringTo(s.data(), s.size(), os); +} +#endif // GTEST_HAS_GLOBAL_STRING + +void PrintStringTo(const ::std::string& s, ostream* os) { + PrintCharsAsStringTo(s.data(), s.size(), os); +} + +// Prints a ::wstring object. +#if GTEST_HAS_GLOBAL_WSTRING +void PrintWideStringTo(const ::wstring& s, ostream* os) { + PrintCharsAsStringTo(s.data(), s.size(), os); +} +#endif // GTEST_HAS_GLOBAL_WSTRING + +#if GTEST_HAS_STD_WSTRING +void PrintWideStringTo(const ::std::wstring& s, ostream* os) { + PrintCharsAsStringTo(s.data(), s.size(), os); +} +#endif // GTEST_HAS_STD_WSTRING + +} // namespace internal + +} // namespace testing +// Copyright 2008, Google Inc. +// All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Author: mheule@google.com (Markus Heule) +// +// The Google C++ Testing Framework (Google Test) + + +// Indicates that this translation unit is part of Google Test's +// implementation. It must come before gtest-internal-inl.h is +// included, or there will be a compiler error. This trick is to +// prevent a user from accidentally including gtest-internal-inl.h in +// his code. +#define GTEST_IMPLEMENTATION_ 1 +#undef GTEST_IMPLEMENTATION_ + +namespace testing { + +using internal::GetUnitTestImpl; + +// Gets the summary of the failure message by omitting the stack trace +// in it. +std::string TestPartResult::ExtractSummary(const char* message) { + const char* const stack_trace = strstr(message, internal::kStackTraceMarker); + return stack_trace == NULL ? message : + std::string(message, stack_trace); +} + +// Prints a TestPartResult object. +std::ostream& operator<<(std::ostream& os, const TestPartResult& result) { + return os + << result.file_name() << ":" << result.line_number() << ": " + << (result.type() == TestPartResult::kSuccess ? "Success" : + result.type() == TestPartResult::kFatalFailure ? "Fatal failure" : + "Non-fatal failure") << ":\n" + << result.message() << std::endl; +} + +// Appends a TestPartResult to the array. +void TestPartResultArray::Append(const TestPartResult& result) { + array_.push_back(result); +} + +// Returns the TestPartResult at the given index (0-based). +const TestPartResult& TestPartResultArray::GetTestPartResult(int index) const { + if (index < 0 || index >= size()) { + printf("\nInvalid index (%d) into TestPartResultArray.\n", index); + internal::posix::Abort(); + } + + return array_[index]; +} + +// Returns the number of TestPartResult objects in the array. +int TestPartResultArray::size() const { + return static_cast(array_.size()); +} + +namespace internal { + +HasNewFatalFailureHelper::HasNewFatalFailureHelper() + : has_new_fatal_failure_(false), + original_reporter_(GetUnitTestImpl()-> + GetTestPartResultReporterForCurrentThread()) { + GetUnitTestImpl()->SetTestPartResultReporterForCurrentThread(this); +} + +HasNewFatalFailureHelper::~HasNewFatalFailureHelper() { + GetUnitTestImpl()->SetTestPartResultReporterForCurrentThread( + original_reporter_); +} + +void HasNewFatalFailureHelper::ReportTestPartResult( + const TestPartResult& result) { + if (result.fatally_failed()) + has_new_fatal_failure_ = true; + original_reporter_->ReportTestPartResult(result); +} + +} // namespace internal + +} // namespace testing +// Copyright 2008 Google Inc. +// All Rights Reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Author: wan@google.com (Zhanyong Wan) + + +namespace testing { +namespace internal { + +#if GTEST_HAS_TYPED_TEST_P + +// Skips to the first non-space char in str. Returns an empty string if str +// contains only whitespace characters. +static const char* SkipSpaces(const char* str) { + while (IsSpace(*str)) + str++; + return str; +} + +// Verifies that registered_tests match the test names in +// defined_test_names_; returns registered_tests if successful, or +// aborts the program otherwise. +const char* TypedTestCasePState::VerifyRegisteredTestNames( + const char* file, int line, const char* registered_tests) { + typedef ::std::set::const_iterator DefinedTestIter; + registered_ = true; + + // Skip initial whitespace in registered_tests since some + // preprocessors prefix stringizied literals with whitespace. + registered_tests = SkipSpaces(registered_tests); + + Message errors; + ::std::set tests; + for (const char* names = registered_tests; names != NULL; + names = SkipComma(names)) { + const std::string name = GetPrefixUntilComma(names); + if (tests.count(name) != 0) { + errors << "Test " << name << " is listed more than once.\n"; + continue; + } + + bool found = false; + for (DefinedTestIter it = defined_test_names_.begin(); + it != defined_test_names_.end(); + ++it) { + if (name == *it) { + found = true; + break; + } + } + + if (found) { + tests.insert(name); + } else { + errors << "No test named " << name + << " can be found in this test case.\n"; + } + } + + for (DefinedTestIter it = defined_test_names_.begin(); + it != defined_test_names_.end(); + ++it) { + if (tests.count(*it) == 0) { + errors << "You forgot to list test " << *it << ".\n"; + } + } + + const std::string& errors_str = errors.GetString(); + if (errors_str != "") { + fprintf(stderr, "%s %s", FormatFileLocation(file, line).c_str(), + errors_str.c_str()); + fflush(stderr); + posix::Abort(); + } + + return registered_tests; +} + +#endif // GTEST_HAS_TYPED_TEST_P + +} // namespace internal +} // namespace testing diff --git a/cpp/thirdparty/protobuf-2.5.0/gtest/fused-src/gtest/gtest.h b/cpp/thirdparty/protobuf-2.5.0/gtest/fused-src/gtest/gtest.h new file mode 100644 index 000000000..1ad793565 --- /dev/null +++ b/cpp/thirdparty/protobuf-2.5.0/gtest/fused-src/gtest/gtest.h @@ -0,0 +1,20012 @@ +// Copyright 2005, Google Inc. +// All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Author: wan@google.com (Zhanyong Wan) +// +// The Google C++ Testing Framework (Google Test) +// +// This header file defines the public API for Google Test. It should be +// included by any test program that uses Google Test. +// +// IMPORTANT NOTE: Due to limitation of the C++ language, we have to +// leave some internal implementation details in this header file. +// They are clearly marked by comments like this: +// +// // INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM. +// +// Such code is NOT meant to be used by a user directly, and is subject +// to CHANGE WITHOUT NOTICE. Therefore DO NOT DEPEND ON IT in a user +// program! +// +// Acknowledgment: Google Test borrowed the idea of automatic test +// registration from Barthelemy Dagenais' (barthelemy@prologique.com) +// easyUnit framework. + +#ifndef GTEST_INCLUDE_GTEST_GTEST_H_ +#define GTEST_INCLUDE_GTEST_GTEST_H_ + +#include +#include +#include + +// Copyright 2005, Google Inc. +// All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Authors: wan@google.com (Zhanyong Wan), eefacm@gmail.com (Sean Mcafee) +// +// The Google C++ Testing Framework (Google Test) +// +// This header file declares functions and macros used internally by +// Google Test. They are subject to change without notice. + +#ifndef GTEST_INCLUDE_GTEST_INTERNAL_GTEST_INTERNAL_H_ +#define GTEST_INCLUDE_GTEST_INTERNAL_GTEST_INTERNAL_H_ + +// Copyright 2005, Google Inc. +// All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Authors: wan@google.com (Zhanyong Wan) +// +// Low-level types and utilities for porting Google Test to various +// platforms. They are subject to change without notice. DO NOT USE +// THEM IN USER CODE. + +#ifndef GTEST_INCLUDE_GTEST_INTERNAL_GTEST_PORT_H_ +#define GTEST_INCLUDE_GTEST_INTERNAL_GTEST_PORT_H_ + +// The user can define the following macros in the build script to +// control Google Test's behavior. If the user doesn't define a macro +// in this list, Google Test will define it. +// +// GTEST_HAS_CLONE - Define it to 1/0 to indicate that clone(2) +// is/isn't available. +// GTEST_HAS_EXCEPTIONS - Define it to 1/0 to indicate that exceptions +// are enabled. +// GTEST_HAS_GLOBAL_STRING - Define it to 1/0 to indicate that ::string +// is/isn't available (some systems define +// ::string, which is different to std::string). +// GTEST_HAS_GLOBAL_WSTRING - Define it to 1/0 to indicate that ::string +// is/isn't available (some systems define +// ::wstring, which is different to std::wstring). +// GTEST_HAS_POSIX_RE - Define it to 1/0 to indicate that POSIX regular +// expressions are/aren't available. +// GTEST_HAS_PTHREAD - Define it to 1/0 to indicate that +// is/isn't available. +// GTEST_HAS_RTTI - Define it to 1/0 to indicate that RTTI is/isn't +// enabled. +// GTEST_HAS_STD_WSTRING - Define it to 1/0 to indicate that +// std::wstring does/doesn't work (Google Test can +// be used where std::wstring is unavailable). +// GTEST_HAS_TR1_TUPLE - Define it to 1/0 to indicate tr1::tuple +// is/isn't available. +// GTEST_HAS_SEH - Define it to 1/0 to indicate whether the +// compiler supports Microsoft's "Structured +// Exception Handling". +// GTEST_HAS_STREAM_REDIRECTION +// - Define it to 1/0 to indicate whether the +// platform supports I/O stream redirection using +// dup() and dup2(). +// GTEST_USE_OWN_TR1_TUPLE - Define it to 1/0 to indicate whether Google +// Test's own tr1 tuple implementation should be +// used. Unused when the user sets +// GTEST_HAS_TR1_TUPLE to 0. +// GTEST_LANG_CXX11 - Define it to 1/0 to indicate that Google Test +// is building in C++11/C++98 mode. +// GTEST_LINKED_AS_SHARED_LIBRARY +// - Define to 1 when compiling tests that use +// Google Test as a shared library (known as +// DLL on Windows). +// GTEST_CREATE_SHARED_LIBRARY +// - Define to 1 when compiling Google Test itself +// as a shared library. + +// This header defines the following utilities: +// +// Macros indicating the current platform (defined to 1 if compiled on +// the given platform; otherwise undefined): +// GTEST_OS_AIX - IBM AIX +// GTEST_OS_CYGWIN - Cygwin +// GTEST_OS_HPUX - HP-UX +// GTEST_OS_LINUX - Linux +// GTEST_OS_LINUX_ANDROID - Google Android +// GTEST_OS_MAC - Mac OS X +// GTEST_OS_IOS - iOS +// GTEST_OS_IOS_SIMULATOR - iOS simulator +// GTEST_OS_NACL - Google Native Client (NaCl) +// GTEST_OS_OPENBSD - OpenBSD +// GTEST_OS_QNX - QNX +// GTEST_OS_SOLARIS - Sun Solaris +// GTEST_OS_SYMBIAN - Symbian +// GTEST_OS_WINDOWS - Windows (Desktop, MinGW, or Mobile) +// GTEST_OS_WINDOWS_DESKTOP - Windows Desktop +// GTEST_OS_WINDOWS_MINGW - MinGW +// GTEST_OS_WINDOWS_MOBILE - Windows Mobile +// GTEST_OS_ZOS - z/OS +// +// Among the platforms, Cygwin, Linux, Max OS X, and Windows have the +// most stable support. Since core members of the Google Test project +// don't have access to other platforms, support for them may be less +// stable. If you notice any problems on your platform, please notify +// googletestframework@googlegroups.com (patches for fixing them are +// even more welcome!). +// +// Note that it is possible that none of the GTEST_OS_* macros are defined. +// +// Macros indicating available Google Test features (defined to 1 if +// the corresponding feature is supported; otherwise undefined): +// GTEST_HAS_COMBINE - the Combine() function (for value-parameterized +// tests) +// GTEST_HAS_DEATH_TEST - death tests +// GTEST_HAS_PARAM_TEST - value-parameterized tests +// GTEST_HAS_TYPED_TEST - typed tests +// GTEST_HAS_TYPED_TEST_P - type-parameterized tests +// GTEST_USES_POSIX_RE - enhanced POSIX regex is used. Do not confuse with +// GTEST_HAS_POSIX_RE (see above) which users can +// define themselves. +// GTEST_USES_SIMPLE_RE - our own simple regex is used; +// the above two are mutually exclusive. +// GTEST_CAN_COMPARE_NULL - accepts untyped NULL in EXPECT_EQ(). +// +// Macros for basic C++ coding: +// GTEST_AMBIGUOUS_ELSE_BLOCKER_ - for disabling a gcc warning. +// GTEST_ATTRIBUTE_UNUSED_ - declares that a class' instances or a +// variable don't have to be used. +// GTEST_DISALLOW_ASSIGN_ - disables operator=. +// GTEST_DISALLOW_COPY_AND_ASSIGN_ - disables copy ctor and operator=. +// GTEST_MUST_USE_RESULT_ - declares that a function's result must be used. +// +// Synchronization: +// Mutex, MutexLock, ThreadLocal, GetThreadCount() +// - synchronization primitives. +// GTEST_IS_THREADSAFE - defined to 1 to indicate that the above +// synchronization primitives have real implementations +// and Google Test is thread-safe; or 0 otherwise. +// +// Template meta programming: +// is_pointer - as in TR1; needed on Symbian and IBM XL C/C++ only. +// IteratorTraits - partial implementation of std::iterator_traits, which +// is not available in libCstd when compiled with Sun C++. +// +// Smart pointers: +// scoped_ptr - as in TR2. +// +// Regular expressions: +// RE - a simple regular expression class using the POSIX +// Extended Regular Expression syntax on UNIX-like +// platforms, or a reduced regular exception syntax on +// other platforms, including Windows. +// +// Logging: +// GTEST_LOG_() - logs messages at the specified severity level. +// LogToStderr() - directs all log messages to stderr. +// FlushInfoLog() - flushes informational log messages. +// +// Stdout and stderr capturing: +// CaptureStdout() - starts capturing stdout. +// GetCapturedStdout() - stops capturing stdout and returns the captured +// string. +// CaptureStderr() - starts capturing stderr. +// GetCapturedStderr() - stops capturing stderr and returns the captured +// string. +// +// Integer types: +// TypeWithSize - maps an integer to a int type. +// Int32, UInt32, Int64, UInt64, TimeInMillis +// - integers of known sizes. +// BiggestInt - the biggest signed integer type. +// +// Command-line utilities: +// GTEST_FLAG() - references a flag. +// GTEST_DECLARE_*() - declares a flag. +// GTEST_DEFINE_*() - defines a flag. +// GetInjectableArgvs() - returns the command line as a vector of strings. +// +// Environment variable utilities: +// GetEnv() - gets the value of an environment variable. +// BoolFromGTestEnv() - parses a bool environment variable. +// Int32FromGTestEnv() - parses an Int32 environment variable. +// StringFromGTestEnv() - parses a string environment variable. + +#include // for isspace, etc +#include // for ptrdiff_t +#include +#include +#include +#ifndef _WIN32_WCE +# include +# include +#endif // !_WIN32_WCE + +#if defined __APPLE__ +# include +# include +#endif + +#include // NOLINT +#include // NOLINT +#include // NOLINT + +#define GTEST_DEV_EMAIL_ "googletestframework@@googlegroups.com" +#define GTEST_FLAG_PREFIX_ "gtest_" +#define GTEST_FLAG_PREFIX_DASH_ "gtest-" +#define GTEST_FLAG_PREFIX_UPPER_ "GTEST_" +#define GTEST_NAME_ "Google Test" +#define GTEST_PROJECT_URL_ "http://code.google.com/p/googletest/" + +// Determines the version of gcc that is used to compile this. +#ifdef __GNUC__ +// 40302 means version 4.3.2. +# define GTEST_GCC_VER_ \ + (__GNUC__*10000 + __GNUC_MINOR__*100 + __GNUC_PATCHLEVEL__) +#endif // __GNUC__ + +// Determines the platform on which Google Test is compiled. +#ifdef __CYGWIN__ +# define GTEST_OS_CYGWIN 1 +#elif defined __SYMBIAN32__ +# define GTEST_OS_SYMBIAN 1 +#elif defined _WIN32 +# define GTEST_OS_WINDOWS 1 +# ifdef _WIN32_WCE +# define GTEST_OS_WINDOWS_MOBILE 1 +# elif defined(__MINGW__) || defined(__MINGW32__) +# define GTEST_OS_WINDOWS_MINGW 1 +# else +# define GTEST_OS_WINDOWS_DESKTOP 1 +# endif // _WIN32_WCE +#elif defined __APPLE__ +# define GTEST_OS_MAC 1 +# if TARGET_OS_IPHONE +# define GTEST_OS_IOS 1 +# if TARGET_IPHONE_SIMULATOR +# define GTEST_OS_IOS_SIMULATOR 1 +# endif +# endif +#elif defined __linux__ +# define GTEST_OS_LINUX 1 +# if defined __ANDROID__ +# define GTEST_OS_LINUX_ANDROID 1 +# endif +#elif defined __MVS__ +# define GTEST_OS_ZOS 1 +#elif defined(__sun) && defined(__SVR4) +# define GTEST_OS_SOLARIS 1 +#elif defined(_AIX) +# define GTEST_OS_AIX 1 +#elif defined(__hpux) +# define GTEST_OS_HPUX 1 +#elif defined __native_client__ +# define GTEST_OS_NACL 1 +#elif defined __OpenBSD__ +# define GTEST_OS_OPENBSD 1 +#elif defined __QNX__ +# define GTEST_OS_QNX 1 +#endif // __CYGWIN__ + +#ifndef GTEST_LANG_CXX11 +// gcc and clang define __GXX_EXPERIMENTAL_CXX0X__ when +// -std={c,gnu}++{0x,11} is passed. The C++11 standard specifies a +// value for __cplusplus, and recent versions of clang, gcc, and +// probably other compilers set that too in C++11 mode. +# if __GXX_EXPERIMENTAL_CXX0X__ || __cplusplus >= 201103L +// Compiling in at least C++11 mode. +# define GTEST_LANG_CXX11 1 +# else +# define GTEST_LANG_CXX11 0 +# endif +#endif + +// Brings in definitions for functions used in the testing::internal::posix +// namespace (read, write, close, chdir, isatty, stat). We do not currently +// use them on Windows Mobile. +#if !GTEST_OS_WINDOWS +// This assumes that non-Windows OSes provide unistd.h. For OSes where this +// is not the case, we need to include headers that provide the functions +// mentioned above. +# include +# include +#elif !GTEST_OS_WINDOWS_MOBILE +# include +# include +#endif + +#if GTEST_OS_LINUX_ANDROID +// Used to define __ANDROID_API__ matching the target NDK API level. +# include // NOLINT +#endif + +// Defines this to true iff Google Test can use POSIX regular expressions. +#ifndef GTEST_HAS_POSIX_RE +# if GTEST_OS_LINUX_ANDROID +// On Android, is only available starting with Gingerbread. +# define GTEST_HAS_POSIX_RE (__ANDROID_API__ >= 9) +# else +# define GTEST_HAS_POSIX_RE (!GTEST_OS_WINDOWS) +# endif +#endif + +#if GTEST_HAS_POSIX_RE + +// On some platforms, needs someone to define size_t, and +// won't compile otherwise. We can #include it here as we already +// included , which is guaranteed to define size_t through +// . +# include // NOLINT + +# define GTEST_USES_POSIX_RE 1 + +#elif GTEST_OS_WINDOWS + +// is not available on Windows. Use our own simple regex +// implementation instead. +# define GTEST_USES_SIMPLE_RE 1 + +#else + +// may not be available on this platform. Use our own +// simple regex implementation instead. +# define GTEST_USES_SIMPLE_RE 1 + +#endif // GTEST_HAS_POSIX_RE + +#ifndef GTEST_HAS_EXCEPTIONS +// The user didn't tell us whether exceptions are enabled, so we need +// to figure it out. +# if defined(_MSC_VER) || defined(__BORLANDC__) +// MSVC's and C++Builder's implementations of the STL use the _HAS_EXCEPTIONS +// macro to enable exceptions, so we'll do the same. +// Assumes that exceptions are enabled by default. +# ifndef _HAS_EXCEPTIONS +# define _HAS_EXCEPTIONS 1 +# endif // _HAS_EXCEPTIONS +# define GTEST_HAS_EXCEPTIONS _HAS_EXCEPTIONS +# elif defined(__GNUC__) && __EXCEPTIONS +// gcc defines __EXCEPTIONS to 1 iff exceptions are enabled. +# define GTEST_HAS_EXCEPTIONS 1 +# elif defined(__SUNPRO_CC) +// Sun Pro CC supports exceptions. However, there is no compile-time way of +// detecting whether they are enabled or not. Therefore, we assume that +// they are enabled unless the user tells us otherwise. +# define GTEST_HAS_EXCEPTIONS 1 +# elif defined(__IBMCPP__) && __EXCEPTIONS +// xlC defines __EXCEPTIONS to 1 iff exceptions are enabled. +# define GTEST_HAS_EXCEPTIONS 1 +# elif defined(__HP_aCC) +// Exception handling is in effect by default in HP aCC compiler. It has to +// be turned of by +noeh compiler option if desired. +# define GTEST_HAS_EXCEPTIONS 1 +# else +// For other compilers, we assume exceptions are disabled to be +// conservative. +# define GTEST_HAS_EXCEPTIONS 0 +# endif // defined(_MSC_VER) || defined(__BORLANDC__) +#endif // GTEST_HAS_EXCEPTIONS + +#if !defined(GTEST_HAS_STD_STRING) +// Even though we don't use this macro any longer, we keep it in case +// some clients still depend on it. +# define GTEST_HAS_STD_STRING 1 +#elif !GTEST_HAS_STD_STRING +// The user told us that ::std::string isn't available. +# error "Google Test cannot be used where ::std::string isn't available." +#endif // !defined(GTEST_HAS_STD_STRING) + +#ifndef GTEST_HAS_GLOBAL_STRING +// The user didn't tell us whether ::string is available, so we need +// to figure it out. + +# define GTEST_HAS_GLOBAL_STRING 0 + +#endif // GTEST_HAS_GLOBAL_STRING + +#ifndef GTEST_HAS_STD_WSTRING +// The user didn't tell us whether ::std::wstring is available, so we need +// to figure it out. +// TODO(wan@google.com): uses autoconf to detect whether ::std::wstring +// is available. + +// Cygwin 1.7 and below doesn't support ::std::wstring. +// Solaris' libc++ doesn't support it either. Android has +// no support for it at least as recent as Froyo (2.2). +# define GTEST_HAS_STD_WSTRING \ + (!(GTEST_OS_LINUX_ANDROID || GTEST_OS_CYGWIN || GTEST_OS_SOLARIS)) + +#endif // GTEST_HAS_STD_WSTRING + +#ifndef GTEST_HAS_GLOBAL_WSTRING +// The user didn't tell us whether ::wstring is available, so we need +// to figure it out. +# define GTEST_HAS_GLOBAL_WSTRING \ + (GTEST_HAS_STD_WSTRING && GTEST_HAS_GLOBAL_STRING) +#endif // GTEST_HAS_GLOBAL_WSTRING + +// Determines whether RTTI is available. +#ifndef GTEST_HAS_RTTI +// The user didn't tell us whether RTTI is enabled, so we need to +// figure it out. + +# ifdef _MSC_VER + +# ifdef _CPPRTTI // MSVC defines this macro iff RTTI is enabled. +# define GTEST_HAS_RTTI 1 +# else +# define GTEST_HAS_RTTI 0 +# endif + +// Starting with version 4.3.2, gcc defines __GXX_RTTI iff RTTI is enabled. +# elif defined(__GNUC__) && (GTEST_GCC_VER_ >= 40302) + +# ifdef __GXX_RTTI +// When building against STLport with the Android NDK and with +// -frtti -fno-exceptions, the build fails at link time with undefined +// references to __cxa_bad_typeid. Note sure if STL or toolchain bug, +// so disable RTTI when detected. +# if GTEST_OS_LINUX_ANDROID && defined(_STLPORT_MAJOR) && \ + !defined(__EXCEPTIONS) +# define GTEST_HAS_RTTI 0 +# else +# define GTEST_HAS_RTTI 1 +# endif // GTEST_OS_LINUX_ANDROID && __STLPORT_MAJOR && !__EXCEPTIONS +# else +# define GTEST_HAS_RTTI 0 +# endif // __GXX_RTTI + +// Clang defines __GXX_RTTI starting with version 3.0, but its manual recommends +// using has_feature instead. has_feature(cxx_rtti) is supported since 2.7, the +// first version with C++ support. +# elif defined(__clang__) + +# define GTEST_HAS_RTTI __has_feature(cxx_rtti) + +// Starting with version 9.0 IBM Visual Age defines __RTTI_ALL__ to 1 if +// both the typeid and dynamic_cast features are present. +# elif defined(__IBMCPP__) && (__IBMCPP__ >= 900) + +# ifdef __RTTI_ALL__ +# define GTEST_HAS_RTTI 1 +# else +# define GTEST_HAS_RTTI 0 +# endif + +# else + +// For all other compilers, we assume RTTI is enabled. +# define GTEST_HAS_RTTI 1 + +# endif // _MSC_VER + +#endif // GTEST_HAS_RTTI + +// It's this header's responsibility to #include when RTTI +// is enabled. +#if GTEST_HAS_RTTI +# include +#endif + +// Determines whether Google Test can use the pthreads library. +#ifndef GTEST_HAS_PTHREAD +// The user didn't tell us explicitly, so we assume pthreads support is +// available on Linux and Mac. +// +// To disable threading support in Google Test, add -DGTEST_HAS_PTHREAD=0 +// to your compiler flags. +# define GTEST_HAS_PTHREAD (GTEST_OS_LINUX || GTEST_OS_MAC || GTEST_OS_HPUX \ + || GTEST_OS_QNX) +#endif // GTEST_HAS_PTHREAD + +#ifdef GTEST_OS_WINDOWS_MINGW +// Disable pthread support for MinGW for now. To enable it, we need to: +// 1) Implement ThreadLocal object under MinGW. The internal pthread calls are +// not available on MinGW. +// 2) Replace the nanosleep() with usleep() for MinGW. +#undef GTEST_HAS_PTHREAD +#define GTEST_HAS_PTHREAD 0 +#endif + +#if GTEST_HAS_PTHREAD +// gtest-port.h guarantees to #include when GTEST_HAS_PTHREAD is +// true. +# include // NOLINT + +// For timespec and nanosleep, used below. +# include // NOLINT +#endif + +// Determines whether Google Test can use tr1/tuple. You can define +// this macro to 0 to prevent Google Test from using tuple (any +// feature depending on tuple with be disabled in this mode). +#ifndef GTEST_HAS_TR1_TUPLE +# if GTEST_OS_LINUX_ANDROID && defined(_STLPORT_MAJOR) +// STLport, provided with the Android NDK, has neither or . +# define GTEST_HAS_TR1_TUPLE 0 +# else +// The user didn't tell us not to do it, so we assume it's OK. +# define GTEST_HAS_TR1_TUPLE 1 +# endif +#endif // GTEST_HAS_TR1_TUPLE + +// Determines whether Google Test's own tr1 tuple implementation +// should be used. +#ifndef GTEST_USE_OWN_TR1_TUPLE +// The user didn't tell us, so we need to figure it out. + +// We use our own TR1 tuple if we aren't sure the user has an +// implementation of it already. At this time, libstdc++ 4.0.0+ and +// MSVC 2010 are the only mainstream standard libraries that come +// with a TR1 tuple implementation. NVIDIA's CUDA NVCC compiler +// pretends to be GCC by defining __GNUC__ and friends, but cannot +// compile GCC's tuple implementation. MSVC 2008 (9.0) provides TR1 +// tuple in a 323 MB Feature Pack download, which we cannot assume the +// user has. QNX's QCC compiler is a modified GCC but it doesn't +// support TR1 tuple. libc++ only provides std::tuple, in C++11 mode, +// and it can be used with some compilers that define __GNUC__. +# if (defined(__GNUC__) && !defined(__CUDACC__) && (GTEST_GCC_VER_ >= 40000) \ + && !GTEST_OS_QNX && !defined(_LIBCPP_VERSION)) || _MSC_VER >= 1600 +# define GTEST_ENV_HAS_TR1_TUPLE_ 1 +# endif + +// C++11 specifies that provides std::tuple. Use that if gtest is used +// in C++11 mode and libstdc++ isn't very old (binaries targeting OS X 10.6 +// can build with clang but need to use gcc4.2's libstdc++). +# if GTEST_LANG_CXX11 && (!defined(__GLIBCXX__) || __GLIBCXX__ > 20110325) +# define GTEST_ENV_HAS_STD_TUPLE_ 1 +# endif + +# if GTEST_ENV_HAS_TR1_TUPLE_ || GTEST_ENV_HAS_STD_TUPLE_ +# define GTEST_USE_OWN_TR1_TUPLE 0 +# else +# define GTEST_USE_OWN_TR1_TUPLE 1 +# endif + +#endif // GTEST_USE_OWN_TR1_TUPLE + +// To avoid conditional compilation everywhere, we make it +// gtest-port.h's responsibility to #include the header implementing +// tr1/tuple. +#if GTEST_HAS_TR1_TUPLE + +# if GTEST_USE_OWN_TR1_TUPLE +// This file was GENERATED by command: +// pump.py gtest-tuple.h.pump +// DO NOT EDIT BY HAND!!! + +// Copyright 2009 Google Inc. +// All Rights Reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Author: wan@google.com (Zhanyong Wan) + +// Implements a subset of TR1 tuple needed by Google Test and Google Mock. + +#ifndef GTEST_INCLUDE_GTEST_INTERNAL_GTEST_TUPLE_H_ +#define GTEST_INCLUDE_GTEST_INTERNAL_GTEST_TUPLE_H_ + +#include // For ::std::pair. + +// The compiler used in Symbian has a bug that prevents us from declaring the +// tuple template as a friend (it complains that tuple is redefined). This +// hack bypasses the bug by declaring the members that should otherwise be +// private as public. +// Sun Studio versions < 12 also have the above bug. +#if defined(__SYMBIAN32__) || (defined(__SUNPRO_CC) && __SUNPRO_CC < 0x590) +# define GTEST_DECLARE_TUPLE_AS_FRIEND_ public: +#else +# define GTEST_DECLARE_TUPLE_AS_FRIEND_ \ + template friend class tuple; \ + private: +#endif + +// GTEST_n_TUPLE_(T) is the type of an n-tuple. +#define GTEST_0_TUPLE_(T) tuple<> +#define GTEST_1_TUPLE_(T) tuple +#define GTEST_2_TUPLE_(T) tuple +#define GTEST_3_TUPLE_(T) tuple +#define GTEST_4_TUPLE_(T) tuple +#define GTEST_5_TUPLE_(T) tuple +#define GTEST_6_TUPLE_(T) tuple +#define GTEST_7_TUPLE_(T) tuple +#define GTEST_8_TUPLE_(T) tuple +#define GTEST_9_TUPLE_(T) tuple +#define GTEST_10_TUPLE_(T) tuple + +// GTEST_n_TYPENAMES_(T) declares a list of n typenames. +#define GTEST_0_TYPENAMES_(T) +#define GTEST_1_TYPENAMES_(T) typename T##0 +#define GTEST_2_TYPENAMES_(T) typename T##0, typename T##1 +#define GTEST_3_TYPENAMES_(T) typename T##0, typename T##1, typename T##2 +#define GTEST_4_TYPENAMES_(T) typename T##0, typename T##1, typename T##2, \ + typename T##3 +#define GTEST_5_TYPENAMES_(T) typename T##0, typename T##1, typename T##2, \ + typename T##3, typename T##4 +#define GTEST_6_TYPENAMES_(T) typename T##0, typename T##1, typename T##2, \ + typename T##3, typename T##4, typename T##5 +#define GTEST_7_TYPENAMES_(T) typename T##0, typename T##1, typename T##2, \ + typename T##3, typename T##4, typename T##5, typename T##6 +#define GTEST_8_TYPENAMES_(T) typename T##0, typename T##1, typename T##2, \ + typename T##3, typename T##4, typename T##5, typename T##6, typename T##7 +#define GTEST_9_TYPENAMES_(T) typename T##0, typename T##1, typename T##2, \ + typename T##3, typename T##4, typename T##5, typename T##6, \ + typename T##7, typename T##8 +#define GTEST_10_TYPENAMES_(T) typename T##0, typename T##1, typename T##2, \ + typename T##3, typename T##4, typename T##5, typename T##6, \ + typename T##7, typename T##8, typename T##9 + +// In theory, defining stuff in the ::std namespace is undefined +// behavior. We can do this as we are playing the role of a standard +// library vendor. +namespace std { +namespace tr1 { + +template +class tuple; + +// Anything in namespace gtest_internal is Google Test's INTERNAL +// IMPLEMENTATION DETAIL and MUST NOT BE USED DIRECTLY in user code. +namespace gtest_internal { + +// ByRef::type is T if T is a reference; otherwise it's const T&. +template +struct ByRef { typedef const T& type; }; // NOLINT +template +struct ByRef { typedef T& type; }; // NOLINT + +// A handy wrapper for ByRef. +#define GTEST_BY_REF_(T) typename ::std::tr1::gtest_internal::ByRef::type + +// AddRef::type is T if T is a reference; otherwise it's T&. This +// is the same as tr1::add_reference::type. +template +struct AddRef { typedef T& type; }; // NOLINT +template +struct AddRef { typedef T& type; }; // NOLINT + +// A handy wrapper for AddRef. +#define GTEST_ADD_REF_(T) typename ::std::tr1::gtest_internal::AddRef::type + +// A helper for implementing get(). +template class Get; + +// A helper for implementing tuple_element. kIndexValid is true +// iff k < the number of fields in tuple type T. +template +struct TupleElement; + +template +struct TupleElement { + typedef T0 type; +}; + +template +struct TupleElement { + typedef T1 type; +}; + +template +struct TupleElement { + typedef T2 type; +}; + +template +struct TupleElement { + typedef T3 type; +}; + +template +struct TupleElement { + typedef T4 type; +}; + +template +struct TupleElement { + typedef T5 type; +}; + +template +struct TupleElement { + typedef T6 type; +}; + +template +struct TupleElement { + typedef T7 type; +}; + +template +struct TupleElement { + typedef T8 type; +}; + +template +struct TupleElement { + typedef T9 type; +}; + +} // namespace gtest_internal + +template <> +class tuple<> { + public: + tuple() {} + tuple(const tuple& /* t */) {} + tuple& operator=(const tuple& /* t */) { return *this; } +}; + +template +class GTEST_1_TUPLE_(T) { + public: + template friend class gtest_internal::Get; + + tuple() : f0_() {} + + explicit tuple(GTEST_BY_REF_(T0) f0) : f0_(f0) {} + + tuple(const tuple& t) : f0_(t.f0_) {} + + template + tuple(const GTEST_1_TUPLE_(U)& t) : f0_(t.f0_) {} + + tuple& operator=(const tuple& t) { return CopyFrom(t); } + + template + tuple& operator=(const GTEST_1_TUPLE_(U)& t) { + return CopyFrom(t); + } + + GTEST_DECLARE_TUPLE_AS_FRIEND_ + + template + tuple& CopyFrom(const GTEST_1_TUPLE_(U)& t) { + f0_ = t.f0_; + return *this; + } + + T0 f0_; +}; + +template +class GTEST_2_TUPLE_(T) { + public: + template friend class gtest_internal::Get; + + tuple() : f0_(), f1_() {} + + explicit tuple(GTEST_BY_REF_(T0) f0, GTEST_BY_REF_(T1) f1) : f0_(f0), + f1_(f1) {} + + tuple(const tuple& t) : f0_(t.f0_), f1_(t.f1_) {} + + template + tuple(const GTEST_2_TUPLE_(U)& t) : f0_(t.f0_), f1_(t.f1_) {} + template + tuple(const ::std::pair& p) : f0_(p.first), f1_(p.second) {} + + tuple& operator=(const tuple& t) { return CopyFrom(t); } + + template + tuple& operator=(const GTEST_2_TUPLE_(U)& t) { + return CopyFrom(t); + } + template + tuple& operator=(const ::std::pair& p) { + f0_ = p.first; + f1_ = p.second; + return *this; + } + + GTEST_DECLARE_TUPLE_AS_FRIEND_ + + template + tuple& CopyFrom(const GTEST_2_TUPLE_(U)& t) { + f0_ = t.f0_; + f1_ = t.f1_; + return *this; + } + + T0 f0_; + T1 f1_; +}; + +template +class GTEST_3_TUPLE_(T) { + public: + template friend class gtest_internal::Get; + + tuple() : f0_(), f1_(), f2_() {} + + explicit tuple(GTEST_BY_REF_(T0) f0, GTEST_BY_REF_(T1) f1, + GTEST_BY_REF_(T2) f2) : f0_(f0), f1_(f1), f2_(f2) {} + + tuple(const tuple& t) : f0_(t.f0_), f1_(t.f1_), f2_(t.f2_) {} + + template + tuple(const GTEST_3_TUPLE_(U)& t) : f0_(t.f0_), f1_(t.f1_), f2_(t.f2_) {} + + tuple& operator=(const tuple& t) { return CopyFrom(t); } + + template + tuple& operator=(const GTEST_3_TUPLE_(U)& t) { + return CopyFrom(t); + } + + GTEST_DECLARE_TUPLE_AS_FRIEND_ + + template + tuple& CopyFrom(const GTEST_3_TUPLE_(U)& t) { + f0_ = t.f0_; + f1_ = t.f1_; + f2_ = t.f2_; + return *this; + } + + T0 f0_; + T1 f1_; + T2 f2_; +}; + +template +class GTEST_4_TUPLE_(T) { + public: + template friend class gtest_internal::Get; + + tuple() : f0_(), f1_(), f2_(), f3_() {} + + explicit tuple(GTEST_BY_REF_(T0) f0, GTEST_BY_REF_(T1) f1, + GTEST_BY_REF_(T2) f2, GTEST_BY_REF_(T3) f3) : f0_(f0), f1_(f1), f2_(f2), + f3_(f3) {} + + tuple(const tuple& t) : f0_(t.f0_), f1_(t.f1_), f2_(t.f2_), f3_(t.f3_) {} + + template + tuple(const GTEST_4_TUPLE_(U)& t) : f0_(t.f0_), f1_(t.f1_), f2_(t.f2_), + f3_(t.f3_) {} + + tuple& operator=(const tuple& t) { return CopyFrom(t); } + + template + tuple& operator=(const GTEST_4_TUPLE_(U)& t) { + return CopyFrom(t); + } + + GTEST_DECLARE_TUPLE_AS_FRIEND_ + + template + tuple& CopyFrom(const GTEST_4_TUPLE_(U)& t) { + f0_ = t.f0_; + f1_ = t.f1_; + f2_ = t.f2_; + f3_ = t.f3_; + return *this; + } + + T0 f0_; + T1 f1_; + T2 f2_; + T3 f3_; +}; + +template +class GTEST_5_TUPLE_(T) { + public: + template friend class gtest_internal::Get; + + tuple() : f0_(), f1_(), f2_(), f3_(), f4_() {} + + explicit tuple(GTEST_BY_REF_(T0) f0, GTEST_BY_REF_(T1) f1, + GTEST_BY_REF_(T2) f2, GTEST_BY_REF_(T3) f3, + GTEST_BY_REF_(T4) f4) : f0_(f0), f1_(f1), f2_(f2), f3_(f3), f4_(f4) {} + + tuple(const tuple& t) : f0_(t.f0_), f1_(t.f1_), f2_(t.f2_), f3_(t.f3_), + f4_(t.f4_) {} + + template + tuple(const GTEST_5_TUPLE_(U)& t) : f0_(t.f0_), f1_(t.f1_), f2_(t.f2_), + f3_(t.f3_), f4_(t.f4_) {} + + tuple& operator=(const tuple& t) { return CopyFrom(t); } + + template + tuple& operator=(const GTEST_5_TUPLE_(U)& t) { + return CopyFrom(t); + } + + GTEST_DECLARE_TUPLE_AS_FRIEND_ + + template + tuple& CopyFrom(const GTEST_5_TUPLE_(U)& t) { + f0_ = t.f0_; + f1_ = t.f1_; + f2_ = t.f2_; + f3_ = t.f3_; + f4_ = t.f4_; + return *this; + } + + T0 f0_; + T1 f1_; + T2 f2_; + T3 f3_; + T4 f4_; +}; + +template +class GTEST_6_TUPLE_(T) { + public: + template friend class gtest_internal::Get; + + tuple() : f0_(), f1_(), f2_(), f3_(), f4_(), f5_() {} + + explicit tuple(GTEST_BY_REF_(T0) f0, GTEST_BY_REF_(T1) f1, + GTEST_BY_REF_(T2) f2, GTEST_BY_REF_(T3) f3, GTEST_BY_REF_(T4) f4, + GTEST_BY_REF_(T5) f5) : f0_(f0), f1_(f1), f2_(f2), f3_(f3), f4_(f4), + f5_(f5) {} + + tuple(const tuple& t) : f0_(t.f0_), f1_(t.f1_), f2_(t.f2_), f3_(t.f3_), + f4_(t.f4_), f5_(t.f5_) {} + + template + tuple(const GTEST_6_TUPLE_(U)& t) : f0_(t.f0_), f1_(t.f1_), f2_(t.f2_), + f3_(t.f3_), f4_(t.f4_), f5_(t.f5_) {} + + tuple& operator=(const tuple& t) { return CopyFrom(t); } + + template + tuple& operator=(const GTEST_6_TUPLE_(U)& t) { + return CopyFrom(t); + } + + GTEST_DECLARE_TUPLE_AS_FRIEND_ + + template + tuple& CopyFrom(const GTEST_6_TUPLE_(U)& t) { + f0_ = t.f0_; + f1_ = t.f1_; + f2_ = t.f2_; + f3_ = t.f3_; + f4_ = t.f4_; + f5_ = t.f5_; + return *this; + } + + T0 f0_; + T1 f1_; + T2 f2_; + T3 f3_; + T4 f4_; + T5 f5_; +}; + +template +class GTEST_7_TUPLE_(T) { + public: + template friend class gtest_internal::Get; + + tuple() : f0_(), f1_(), f2_(), f3_(), f4_(), f5_(), f6_() {} + + explicit tuple(GTEST_BY_REF_(T0) f0, GTEST_BY_REF_(T1) f1, + GTEST_BY_REF_(T2) f2, GTEST_BY_REF_(T3) f3, GTEST_BY_REF_(T4) f4, + GTEST_BY_REF_(T5) f5, GTEST_BY_REF_(T6) f6) : f0_(f0), f1_(f1), f2_(f2), + f3_(f3), f4_(f4), f5_(f5), f6_(f6) {} + + tuple(const tuple& t) : f0_(t.f0_), f1_(t.f1_), f2_(t.f2_), f3_(t.f3_), + f4_(t.f4_), f5_(t.f5_), f6_(t.f6_) {} + + template + tuple(const GTEST_7_TUPLE_(U)& t) : f0_(t.f0_), f1_(t.f1_), f2_(t.f2_), + f3_(t.f3_), f4_(t.f4_), f5_(t.f5_), f6_(t.f6_) {} + + tuple& operator=(const tuple& t) { return CopyFrom(t); } + + template + tuple& operator=(const GTEST_7_TUPLE_(U)& t) { + return CopyFrom(t); + } + + GTEST_DECLARE_TUPLE_AS_FRIEND_ + + template + tuple& CopyFrom(const GTEST_7_TUPLE_(U)& t) { + f0_ = t.f0_; + f1_ = t.f1_; + f2_ = t.f2_; + f3_ = t.f3_; + f4_ = t.f4_; + f5_ = t.f5_; + f6_ = t.f6_; + return *this; + } + + T0 f0_; + T1 f1_; + T2 f2_; + T3 f3_; + T4 f4_; + T5 f5_; + T6 f6_; +}; + +template +class GTEST_8_TUPLE_(T) { + public: + template friend class gtest_internal::Get; + + tuple() : f0_(), f1_(), f2_(), f3_(), f4_(), f5_(), f6_(), f7_() {} + + explicit tuple(GTEST_BY_REF_(T0) f0, GTEST_BY_REF_(T1) f1, + GTEST_BY_REF_(T2) f2, GTEST_BY_REF_(T3) f3, GTEST_BY_REF_(T4) f4, + GTEST_BY_REF_(T5) f5, GTEST_BY_REF_(T6) f6, + GTEST_BY_REF_(T7) f7) : f0_(f0), f1_(f1), f2_(f2), f3_(f3), f4_(f4), + f5_(f5), f6_(f6), f7_(f7) {} + + tuple(const tuple& t) : f0_(t.f0_), f1_(t.f1_), f2_(t.f2_), f3_(t.f3_), + f4_(t.f4_), f5_(t.f5_), f6_(t.f6_), f7_(t.f7_) {} + + template + tuple(const GTEST_8_TUPLE_(U)& t) : f0_(t.f0_), f1_(t.f1_), f2_(t.f2_), + f3_(t.f3_), f4_(t.f4_), f5_(t.f5_), f6_(t.f6_), f7_(t.f7_) {} + + tuple& operator=(const tuple& t) { return CopyFrom(t); } + + template + tuple& operator=(const GTEST_8_TUPLE_(U)& t) { + return CopyFrom(t); + } + + GTEST_DECLARE_TUPLE_AS_FRIEND_ + + template + tuple& CopyFrom(const GTEST_8_TUPLE_(U)& t) { + f0_ = t.f0_; + f1_ = t.f1_; + f2_ = t.f2_; + f3_ = t.f3_; + f4_ = t.f4_; + f5_ = t.f5_; + f6_ = t.f6_; + f7_ = t.f7_; + return *this; + } + + T0 f0_; + T1 f1_; + T2 f2_; + T3 f3_; + T4 f4_; + T5 f5_; + T6 f6_; + T7 f7_; +}; + +template +class GTEST_9_TUPLE_(T) { + public: + template friend class gtest_internal::Get; + + tuple() : f0_(), f1_(), f2_(), f3_(), f4_(), f5_(), f6_(), f7_(), f8_() {} + + explicit tuple(GTEST_BY_REF_(T0) f0, GTEST_BY_REF_(T1) f1, + GTEST_BY_REF_(T2) f2, GTEST_BY_REF_(T3) f3, GTEST_BY_REF_(T4) f4, + GTEST_BY_REF_(T5) f5, GTEST_BY_REF_(T6) f6, GTEST_BY_REF_(T7) f7, + GTEST_BY_REF_(T8) f8) : f0_(f0), f1_(f1), f2_(f2), f3_(f3), f4_(f4), + f5_(f5), f6_(f6), f7_(f7), f8_(f8) {} + + tuple(const tuple& t) : f0_(t.f0_), f1_(t.f1_), f2_(t.f2_), f3_(t.f3_), + f4_(t.f4_), f5_(t.f5_), f6_(t.f6_), f7_(t.f7_), f8_(t.f8_) {} + + template + tuple(const GTEST_9_TUPLE_(U)& t) : f0_(t.f0_), f1_(t.f1_), f2_(t.f2_), + f3_(t.f3_), f4_(t.f4_), f5_(t.f5_), f6_(t.f6_), f7_(t.f7_), f8_(t.f8_) {} + + tuple& operator=(const tuple& t) { return CopyFrom(t); } + + template + tuple& operator=(const GTEST_9_TUPLE_(U)& t) { + return CopyFrom(t); + } + + GTEST_DECLARE_TUPLE_AS_FRIEND_ + + template + tuple& CopyFrom(const GTEST_9_TUPLE_(U)& t) { + f0_ = t.f0_; + f1_ = t.f1_; + f2_ = t.f2_; + f3_ = t.f3_; + f4_ = t.f4_; + f5_ = t.f5_; + f6_ = t.f6_; + f7_ = t.f7_; + f8_ = t.f8_; + return *this; + } + + T0 f0_; + T1 f1_; + T2 f2_; + T3 f3_; + T4 f4_; + T5 f5_; + T6 f6_; + T7 f7_; + T8 f8_; +}; + +template +class tuple { + public: + template friend class gtest_internal::Get; + + tuple() : f0_(), f1_(), f2_(), f3_(), f4_(), f5_(), f6_(), f7_(), f8_(), + f9_() {} + + explicit tuple(GTEST_BY_REF_(T0) f0, GTEST_BY_REF_(T1) f1, + GTEST_BY_REF_(T2) f2, GTEST_BY_REF_(T3) f3, GTEST_BY_REF_(T4) f4, + GTEST_BY_REF_(T5) f5, GTEST_BY_REF_(T6) f6, GTEST_BY_REF_(T7) f7, + GTEST_BY_REF_(T8) f8, GTEST_BY_REF_(T9) f9) : f0_(f0), f1_(f1), f2_(f2), + f3_(f3), f4_(f4), f5_(f5), f6_(f6), f7_(f7), f8_(f8), f9_(f9) {} + + tuple(const tuple& t) : f0_(t.f0_), f1_(t.f1_), f2_(t.f2_), f3_(t.f3_), + f4_(t.f4_), f5_(t.f5_), f6_(t.f6_), f7_(t.f7_), f8_(t.f8_), f9_(t.f9_) {} + + template + tuple(const GTEST_10_TUPLE_(U)& t) : f0_(t.f0_), f1_(t.f1_), f2_(t.f2_), + f3_(t.f3_), f4_(t.f4_), f5_(t.f5_), f6_(t.f6_), f7_(t.f7_), f8_(t.f8_), + f9_(t.f9_) {} + + tuple& operator=(const tuple& t) { return CopyFrom(t); } + + template + tuple& operator=(const GTEST_10_TUPLE_(U)& t) { + return CopyFrom(t); + } + + GTEST_DECLARE_TUPLE_AS_FRIEND_ + + template + tuple& CopyFrom(const GTEST_10_TUPLE_(U)& t) { + f0_ = t.f0_; + f1_ = t.f1_; + f2_ = t.f2_; + f3_ = t.f3_; + f4_ = t.f4_; + f5_ = t.f5_; + f6_ = t.f6_; + f7_ = t.f7_; + f8_ = t.f8_; + f9_ = t.f9_; + return *this; + } + + T0 f0_; + T1 f1_; + T2 f2_; + T3 f3_; + T4 f4_; + T5 f5_; + T6 f6_; + T7 f7_; + T8 f8_; + T9 f9_; +}; + +// 6.1.3.2 Tuple creation functions. + +// Known limitations: we don't support passing an +// std::tr1::reference_wrapper to make_tuple(). And we don't +// implement tie(). + +inline tuple<> make_tuple() { return tuple<>(); } + +template +inline GTEST_1_TUPLE_(T) make_tuple(const T0& f0) { + return GTEST_1_TUPLE_(T)(f0); +} + +template +inline GTEST_2_TUPLE_(T) make_tuple(const T0& f0, const T1& f1) { + return GTEST_2_TUPLE_(T)(f0, f1); +} + +template +inline GTEST_3_TUPLE_(T) make_tuple(const T0& f0, const T1& f1, const T2& f2) { + return GTEST_3_TUPLE_(T)(f0, f1, f2); +} + +template +inline GTEST_4_TUPLE_(T) make_tuple(const T0& f0, const T1& f1, const T2& f2, + const T3& f3) { + return GTEST_4_TUPLE_(T)(f0, f1, f2, f3); +} + +template +inline GTEST_5_TUPLE_(T) make_tuple(const T0& f0, const T1& f1, const T2& f2, + const T3& f3, const T4& f4) { + return GTEST_5_TUPLE_(T)(f0, f1, f2, f3, f4); +} + +template +inline GTEST_6_TUPLE_(T) make_tuple(const T0& f0, const T1& f1, const T2& f2, + const T3& f3, const T4& f4, const T5& f5) { + return GTEST_6_TUPLE_(T)(f0, f1, f2, f3, f4, f5); +} + +template +inline GTEST_7_TUPLE_(T) make_tuple(const T0& f0, const T1& f1, const T2& f2, + const T3& f3, const T4& f4, const T5& f5, const T6& f6) { + return GTEST_7_TUPLE_(T)(f0, f1, f2, f3, f4, f5, f6); +} + +template +inline GTEST_8_TUPLE_(T) make_tuple(const T0& f0, const T1& f1, const T2& f2, + const T3& f3, const T4& f4, const T5& f5, const T6& f6, const T7& f7) { + return GTEST_8_TUPLE_(T)(f0, f1, f2, f3, f4, f5, f6, f7); +} + +template +inline GTEST_9_TUPLE_(T) make_tuple(const T0& f0, const T1& f1, const T2& f2, + const T3& f3, const T4& f4, const T5& f5, const T6& f6, const T7& f7, + const T8& f8) { + return GTEST_9_TUPLE_(T)(f0, f1, f2, f3, f4, f5, f6, f7, f8); +} + +template +inline GTEST_10_TUPLE_(T) make_tuple(const T0& f0, const T1& f1, const T2& f2, + const T3& f3, const T4& f4, const T5& f5, const T6& f6, const T7& f7, + const T8& f8, const T9& f9) { + return GTEST_10_TUPLE_(T)(f0, f1, f2, f3, f4, f5, f6, f7, f8, f9); +} + +// 6.1.3.3 Tuple helper classes. + +template struct tuple_size; + +template +struct tuple_size { + static const int value = 0; +}; + +template +struct tuple_size { + static const int value = 1; +}; + +template +struct tuple_size { + static const int value = 2; +}; + +template +struct tuple_size { + static const int value = 3; +}; + +template +struct tuple_size { + static const int value = 4; +}; + +template +struct tuple_size { + static const int value = 5; +}; + +template +struct tuple_size { + static const int value = 6; +}; + +template +struct tuple_size { + static const int value = 7; +}; + +template +struct tuple_size { + static const int value = 8; +}; + +template +struct tuple_size { + static const int value = 9; +}; + +template +struct tuple_size { + static const int value = 10; +}; + +template +struct tuple_element { + typedef typename gtest_internal::TupleElement< + k < (tuple_size::value), k, Tuple>::type type; +}; + +#define GTEST_TUPLE_ELEMENT_(k, Tuple) typename tuple_element::type + +// 6.1.3.4 Element access. + +namespace gtest_internal { + +template <> +class Get<0> { + public: + template + static GTEST_ADD_REF_(GTEST_TUPLE_ELEMENT_(0, Tuple)) + Field(Tuple& t) { return t.f0_; } // NOLINT + + template + static GTEST_BY_REF_(GTEST_TUPLE_ELEMENT_(0, Tuple)) + ConstField(const Tuple& t) { return t.f0_; } +}; + +template <> +class Get<1> { + public: + template + static GTEST_ADD_REF_(GTEST_TUPLE_ELEMENT_(1, Tuple)) + Field(Tuple& t) { return t.f1_; } // NOLINT + + template + static GTEST_BY_REF_(GTEST_TUPLE_ELEMENT_(1, Tuple)) + ConstField(const Tuple& t) { return t.f1_; } +}; + +template <> +class Get<2> { + public: + template + static GTEST_ADD_REF_(GTEST_TUPLE_ELEMENT_(2, Tuple)) + Field(Tuple& t) { return t.f2_; } // NOLINT + + template + static GTEST_BY_REF_(GTEST_TUPLE_ELEMENT_(2, Tuple)) + ConstField(const Tuple& t) { return t.f2_; } +}; + +template <> +class Get<3> { + public: + template + static GTEST_ADD_REF_(GTEST_TUPLE_ELEMENT_(3, Tuple)) + Field(Tuple& t) { return t.f3_; } // NOLINT + + template + static GTEST_BY_REF_(GTEST_TUPLE_ELEMENT_(3, Tuple)) + ConstField(const Tuple& t) { return t.f3_; } +}; + +template <> +class Get<4> { + public: + template + static GTEST_ADD_REF_(GTEST_TUPLE_ELEMENT_(4, Tuple)) + Field(Tuple& t) { return t.f4_; } // NOLINT + + template + static GTEST_BY_REF_(GTEST_TUPLE_ELEMENT_(4, Tuple)) + ConstField(const Tuple& t) { return t.f4_; } +}; + +template <> +class Get<5> { + public: + template + static GTEST_ADD_REF_(GTEST_TUPLE_ELEMENT_(5, Tuple)) + Field(Tuple& t) { return t.f5_; } // NOLINT + + template + static GTEST_BY_REF_(GTEST_TUPLE_ELEMENT_(5, Tuple)) + ConstField(const Tuple& t) { return t.f5_; } +}; + +template <> +class Get<6> { + public: + template + static GTEST_ADD_REF_(GTEST_TUPLE_ELEMENT_(6, Tuple)) + Field(Tuple& t) { return t.f6_; } // NOLINT + + template + static GTEST_BY_REF_(GTEST_TUPLE_ELEMENT_(6, Tuple)) + ConstField(const Tuple& t) { return t.f6_; } +}; + +template <> +class Get<7> { + public: + template + static GTEST_ADD_REF_(GTEST_TUPLE_ELEMENT_(7, Tuple)) + Field(Tuple& t) { return t.f7_; } // NOLINT + + template + static GTEST_BY_REF_(GTEST_TUPLE_ELEMENT_(7, Tuple)) + ConstField(const Tuple& t) { return t.f7_; } +}; + +template <> +class Get<8> { + public: + template + static GTEST_ADD_REF_(GTEST_TUPLE_ELEMENT_(8, Tuple)) + Field(Tuple& t) { return t.f8_; } // NOLINT + + template + static GTEST_BY_REF_(GTEST_TUPLE_ELEMENT_(8, Tuple)) + ConstField(const Tuple& t) { return t.f8_; } +}; + +template <> +class Get<9> { + public: + template + static GTEST_ADD_REF_(GTEST_TUPLE_ELEMENT_(9, Tuple)) + Field(Tuple& t) { return t.f9_; } // NOLINT + + template + static GTEST_BY_REF_(GTEST_TUPLE_ELEMENT_(9, Tuple)) + ConstField(const Tuple& t) { return t.f9_; } +}; + +} // namespace gtest_internal + +template +GTEST_ADD_REF_(GTEST_TUPLE_ELEMENT_(k, GTEST_10_TUPLE_(T))) +get(GTEST_10_TUPLE_(T)& t) { + return gtest_internal::Get::Field(t); +} + +template +GTEST_BY_REF_(GTEST_TUPLE_ELEMENT_(k, GTEST_10_TUPLE_(T))) +get(const GTEST_10_TUPLE_(T)& t) { + return gtest_internal::Get::ConstField(t); +} + +// 6.1.3.5 Relational operators + +// We only implement == and !=, as we don't have a need for the rest yet. + +namespace gtest_internal { + +// SameSizeTuplePrefixComparator::Eq(t1, t2) returns true if the +// first k fields of t1 equals the first k fields of t2. +// SameSizeTuplePrefixComparator(k1, k2) would be a compiler error if +// k1 != k2. +template +struct SameSizeTuplePrefixComparator; + +template <> +struct SameSizeTuplePrefixComparator<0, 0> { + template + static bool Eq(const Tuple1& /* t1 */, const Tuple2& /* t2 */) { + return true; + } +}; + +template +struct SameSizeTuplePrefixComparator { + template + static bool Eq(const Tuple1& t1, const Tuple2& t2) { + return SameSizeTuplePrefixComparator::Eq(t1, t2) && + ::std::tr1::get(t1) == ::std::tr1::get(t2); + } +}; + +} // namespace gtest_internal + +template +inline bool operator==(const GTEST_10_TUPLE_(T)& t, + const GTEST_10_TUPLE_(U)& u) { + return gtest_internal::SameSizeTuplePrefixComparator< + tuple_size::value, + tuple_size::value>::Eq(t, u); +} + +template +inline bool operator!=(const GTEST_10_TUPLE_(T)& t, + const GTEST_10_TUPLE_(U)& u) { return !(t == u); } + +// 6.1.4 Pairs. +// Unimplemented. + +} // namespace tr1 +} // namespace std + +#undef GTEST_0_TUPLE_ +#undef GTEST_1_TUPLE_ +#undef GTEST_2_TUPLE_ +#undef GTEST_3_TUPLE_ +#undef GTEST_4_TUPLE_ +#undef GTEST_5_TUPLE_ +#undef GTEST_6_TUPLE_ +#undef GTEST_7_TUPLE_ +#undef GTEST_8_TUPLE_ +#undef GTEST_9_TUPLE_ +#undef GTEST_10_TUPLE_ + +#undef GTEST_0_TYPENAMES_ +#undef GTEST_1_TYPENAMES_ +#undef GTEST_2_TYPENAMES_ +#undef GTEST_3_TYPENAMES_ +#undef GTEST_4_TYPENAMES_ +#undef GTEST_5_TYPENAMES_ +#undef GTEST_6_TYPENAMES_ +#undef GTEST_7_TYPENAMES_ +#undef GTEST_8_TYPENAMES_ +#undef GTEST_9_TYPENAMES_ +#undef GTEST_10_TYPENAMES_ + +#undef GTEST_DECLARE_TUPLE_AS_FRIEND_ +#undef GTEST_BY_REF_ +#undef GTEST_ADD_REF_ +#undef GTEST_TUPLE_ELEMENT_ + +#endif // GTEST_INCLUDE_GTEST_INTERNAL_GTEST_TUPLE_H_ +# elif GTEST_ENV_HAS_STD_TUPLE_ +# include +// C++11 puts its tuple into the ::std namespace rather than +// ::std::tr1. gtest expects tuple to live in ::std::tr1, so put it there. +// This causes undefined behavior, but supported compilers react in +// the way we intend. +namespace std { +namespace tr1 { +using ::std::get; +using ::std::make_tuple; +using ::std::tuple; +using ::std::tuple_element; +using ::std::tuple_size; +} +} + +# elif GTEST_OS_SYMBIAN + +// On Symbian, BOOST_HAS_TR1_TUPLE causes Boost's TR1 tuple library to +// use STLport's tuple implementation, which unfortunately doesn't +// work as the copy of STLport distributed with Symbian is incomplete. +// By making sure BOOST_HAS_TR1_TUPLE is undefined, we force Boost to +// use its own tuple implementation. +# ifdef BOOST_HAS_TR1_TUPLE +# undef BOOST_HAS_TR1_TUPLE +# endif // BOOST_HAS_TR1_TUPLE + +// This prevents , which defines +// BOOST_HAS_TR1_TUPLE, from being #included by Boost's . +# define BOOST_TR1_DETAIL_CONFIG_HPP_INCLUDED +# include + +# elif defined(__GNUC__) && (GTEST_GCC_VER_ >= 40000) +// GCC 4.0+ implements tr1/tuple in the header. This does +// not conform to the TR1 spec, which requires the header to be . + +# if !GTEST_HAS_RTTI && GTEST_GCC_VER_ < 40302 +// Until version 4.3.2, gcc has a bug that causes , +// which is #included by , to not compile when RTTI is +// disabled. _TR1_FUNCTIONAL is the header guard for +// . Hence the following #define is a hack to prevent +// from being included. +# define _TR1_FUNCTIONAL 1 +# include +# undef _TR1_FUNCTIONAL // Allows the user to #include + // if he chooses to. +# else +# include // NOLINT +# endif // !GTEST_HAS_RTTI && GTEST_GCC_VER_ < 40302 + +# else +// If the compiler is not GCC 4.0+, we assume the user is using a +// spec-conforming TR1 implementation. +# include // NOLINT +# endif // GTEST_USE_OWN_TR1_TUPLE + +#endif // GTEST_HAS_TR1_TUPLE + +// Determines whether clone(2) is supported. +// Usually it will only be available on Linux, excluding +// Linux on the Itanium architecture. +// Also see http://linux.die.net/man/2/clone. +#ifndef GTEST_HAS_CLONE +// The user didn't tell us, so we need to figure it out. + +# if GTEST_OS_LINUX && !defined(__ia64__) +# if GTEST_OS_LINUX_ANDROID +// On Android, clone() is only available on ARM starting with Gingerbread. +# if defined(__arm__) && __ANDROID_API__ >= 9 +# define GTEST_HAS_CLONE 1 +# else +# define GTEST_HAS_CLONE 0 +# endif +# else +# define GTEST_HAS_CLONE 1 +# endif +# else +# define GTEST_HAS_CLONE 0 +# endif // GTEST_OS_LINUX && !defined(__ia64__) + +#endif // GTEST_HAS_CLONE + +// Determines whether to support stream redirection. This is used to test +// output correctness and to implement death tests. +#ifndef GTEST_HAS_STREAM_REDIRECTION +// By default, we assume that stream redirection is supported on all +// platforms except known mobile ones. +# if GTEST_OS_WINDOWS_MOBILE || GTEST_OS_SYMBIAN +# define GTEST_HAS_STREAM_REDIRECTION 0 +# else +# define GTEST_HAS_STREAM_REDIRECTION 1 +# endif // !GTEST_OS_WINDOWS_MOBILE && !GTEST_OS_SYMBIAN +#endif // GTEST_HAS_STREAM_REDIRECTION + +// Determines whether to support death tests. +// Google Test does not support death tests for VC 7.1 and earlier as +// abort() in a VC 7.1 application compiled as GUI in debug config +// pops up a dialog window that cannot be suppressed programmatically. +#if (GTEST_OS_LINUX || GTEST_OS_CYGWIN || GTEST_OS_SOLARIS || \ + (GTEST_OS_MAC && !GTEST_OS_IOS) || GTEST_OS_IOS_SIMULATOR || \ + (GTEST_OS_WINDOWS_DESKTOP && _MSC_VER >= 1400) || \ + GTEST_OS_WINDOWS_MINGW || GTEST_OS_AIX || GTEST_OS_HPUX || \ + GTEST_OS_OPENBSD || GTEST_OS_QNX) +# define GTEST_HAS_DEATH_TEST 1 +# include // NOLINT +#endif + +// We don't support MSVC 7.1 with exceptions disabled now. Therefore +// all the compilers we care about are adequate for supporting +// value-parameterized tests. +#define GTEST_HAS_PARAM_TEST 1 + +// Determines whether to support type-driven tests. + +// Typed tests need and variadic macros, which GCC, VC++ 8.0, +// Sun Pro CC, IBM Visual Age, and HP aCC support. +#if defined(__GNUC__) || (_MSC_VER >= 1400) || defined(__SUNPRO_CC) || \ + defined(__IBMCPP__) || defined(__HP_aCC) +# define GTEST_HAS_TYPED_TEST 1 +# define GTEST_HAS_TYPED_TEST_P 1 +#endif + +// Determines whether to support Combine(). This only makes sense when +// value-parameterized tests are enabled. The implementation doesn't +// work on Sun Studio since it doesn't understand templated conversion +// operators. +#if GTEST_HAS_PARAM_TEST && GTEST_HAS_TR1_TUPLE && !defined(__SUNPRO_CC) +# define GTEST_HAS_COMBINE 1 +#endif + +// Determines whether the system compiler uses UTF-16 for encoding wide strings. +#define GTEST_WIDE_STRING_USES_UTF16_ \ + (GTEST_OS_WINDOWS || GTEST_OS_CYGWIN || GTEST_OS_SYMBIAN || GTEST_OS_AIX) + +// Determines whether test results can be streamed to a socket. +#if GTEST_OS_LINUX +# define GTEST_CAN_STREAM_RESULTS_ 1 +#endif + +// Defines some utility macros. + +// The GNU compiler emits a warning if nested "if" statements are followed by +// an "else" statement and braces are not used to explicitly disambiguate the +// "else" binding. This leads to problems with code like: +// +// if (gate) +// ASSERT_*(condition) << "Some message"; +// +// The "switch (0) case 0:" idiom is used to suppress this. +#ifdef __INTEL_COMPILER +# define GTEST_AMBIGUOUS_ELSE_BLOCKER_ +#else +# define GTEST_AMBIGUOUS_ELSE_BLOCKER_ switch (0) case 0: default: // NOLINT +#endif + +// Use this annotation at the end of a struct/class definition to +// prevent the compiler from optimizing away instances that are never +// used. This is useful when all interesting logic happens inside the +// c'tor and / or d'tor. Example: +// +// struct Foo { +// Foo() { ... } +// } GTEST_ATTRIBUTE_UNUSED_; +// +// Also use it after a variable or parameter declaration to tell the +// compiler the variable/parameter does not have to be used. +#if defined(__GNUC__) && !defined(COMPILER_ICC) +# define GTEST_ATTRIBUTE_UNUSED_ __attribute__ ((unused)) +#else +# define GTEST_ATTRIBUTE_UNUSED_ +#endif + +// A macro to disallow operator= +// This should be used in the private: declarations for a class. +#define GTEST_DISALLOW_ASSIGN_(type)\ + void operator=(type const &) + +// A macro to disallow copy constructor and operator= +// This should be used in the private: declarations for a class. +#define GTEST_DISALLOW_COPY_AND_ASSIGN_(type)\ + type(type const &);\ + GTEST_DISALLOW_ASSIGN_(type) + +// Tell the compiler to warn about unused return values for functions declared +// with this macro. The macro should be used on function declarations +// following the argument list: +// +// Sprocket* AllocateSprocket() GTEST_MUST_USE_RESULT_; +#if defined(__GNUC__) && (GTEST_GCC_VER_ >= 30400) && !defined(COMPILER_ICC) +# define GTEST_MUST_USE_RESULT_ __attribute__ ((warn_unused_result)) +#else +# define GTEST_MUST_USE_RESULT_ +#endif // __GNUC__ && (GTEST_GCC_VER_ >= 30400) && !COMPILER_ICC + +// Determine whether the compiler supports Microsoft's Structured Exception +// Handling. This is supported by several Windows compilers but generally +// does not exist on any other system. +#ifndef GTEST_HAS_SEH +// The user didn't tell us, so we need to figure it out. + +# if defined(_MSC_VER) || defined(__BORLANDC__) +// These two compilers are known to support SEH. +# define GTEST_HAS_SEH 1 +# else +// Assume no SEH. +# define GTEST_HAS_SEH 0 +# endif + +#endif // GTEST_HAS_SEH + +#ifdef _MSC_VER + +# if GTEST_LINKED_AS_SHARED_LIBRARY +# define GTEST_API_ __declspec(dllimport) +# elif GTEST_CREATE_SHARED_LIBRARY +# define GTEST_API_ __declspec(dllexport) +# endif + +#endif // _MSC_VER + +#ifndef GTEST_API_ +# define GTEST_API_ +#endif + +#ifdef __GNUC__ +// Ask the compiler to never inline a given function. +# define GTEST_NO_INLINE_ __attribute__((noinline)) +#else +# define GTEST_NO_INLINE_ +#endif + +// _LIBCPP_VERSION is defined by the libc++ library from the LLVM project. +#if defined(__GLIBCXX__) || defined(_LIBCPP_VERSION) +# define GTEST_HAS_CXXABI_H_ 1 +#else +# define GTEST_HAS_CXXABI_H_ 0 +#endif + +namespace testing { + +class Message; + +namespace internal { + +// The GTEST_COMPILE_ASSERT_ macro can be used to verify that a compile time +// expression is true. For example, you could use it to verify the +// size of a static array: +// +// GTEST_COMPILE_ASSERT_(ARRAYSIZE(content_type_names) == CONTENT_NUM_TYPES, +// content_type_names_incorrect_size); +// +// or to make sure a struct is smaller than a certain size: +// +// GTEST_COMPILE_ASSERT_(sizeof(foo) < 128, foo_too_large); +// +// The second argument to the macro is the name of the variable. If +// the expression is false, most compilers will issue a warning/error +// containing the name of the variable. + +template +struct CompileAssert { +}; + +#define GTEST_COMPILE_ASSERT_(expr, msg) \ + typedef ::testing::internal::CompileAssert<(bool(expr))> \ + msg[bool(expr) ? 1 : -1] + +// Implementation details of GTEST_COMPILE_ASSERT_: +// +// - GTEST_COMPILE_ASSERT_ works by defining an array type that has -1 +// elements (and thus is invalid) when the expression is false. +// +// - The simpler definition +// +// #define GTEST_COMPILE_ASSERT_(expr, msg) typedef char msg[(expr) ? 1 : -1] +// +// does not work, as gcc supports variable-length arrays whose sizes +// are determined at run-time (this is gcc's extension and not part +// of the C++ standard). As a result, gcc fails to reject the +// following code with the simple definition: +// +// int foo; +// GTEST_COMPILE_ASSERT_(foo, msg); // not supposed to compile as foo is +// // not a compile-time constant. +// +// - By using the type CompileAssert<(bool(expr))>, we ensures that +// expr is a compile-time constant. (Template arguments must be +// determined at compile-time.) +// +// - The outter parentheses in CompileAssert<(bool(expr))> are necessary +// to work around a bug in gcc 3.4.4 and 4.0.1. If we had written +// +// CompileAssert +// +// instead, these compilers will refuse to compile +// +// GTEST_COMPILE_ASSERT_(5 > 0, some_message); +// +// (They seem to think the ">" in "5 > 0" marks the end of the +// template argument list.) +// +// - The array size is (bool(expr) ? 1 : -1), instead of simply +// +// ((expr) ? 1 : -1). +// +// This is to avoid running into a bug in MS VC 7.1, which +// causes ((0.0) ? 1 : -1) to incorrectly evaluate to 1. + +// StaticAssertTypeEqHelper is used by StaticAssertTypeEq defined in gtest.h. +// +// This template is declared, but intentionally undefined. +template +struct StaticAssertTypeEqHelper; + +template +struct StaticAssertTypeEqHelper {}; + +#if GTEST_HAS_GLOBAL_STRING +typedef ::string string; +#else +typedef ::std::string string; +#endif // GTEST_HAS_GLOBAL_STRING + +#if GTEST_HAS_GLOBAL_WSTRING +typedef ::wstring wstring; +#elif GTEST_HAS_STD_WSTRING +typedef ::std::wstring wstring; +#endif // GTEST_HAS_GLOBAL_WSTRING + +// A helper for suppressing warnings on constant condition. It just +// returns 'condition'. +GTEST_API_ bool IsTrue(bool condition); + +// Defines scoped_ptr. + +// This implementation of scoped_ptr is PARTIAL - it only contains +// enough stuff to satisfy Google Test's need. +template +class scoped_ptr { + public: + typedef T element_type; + + explicit scoped_ptr(T* p = NULL) : ptr_(p) {} + ~scoped_ptr() { reset(); } + + T& operator*() const { return *ptr_; } + T* operator->() const { return ptr_; } + T* get() const { return ptr_; } + + T* release() { + T* const ptr = ptr_; + ptr_ = NULL; + return ptr; + } + + void reset(T* p = NULL) { + if (p != ptr_) { + if (IsTrue(sizeof(T) > 0)) { // Makes sure T is a complete type. + delete ptr_; + } + ptr_ = p; + } + } + + private: + T* ptr_; + + GTEST_DISALLOW_COPY_AND_ASSIGN_(scoped_ptr); +}; + +// Defines RE. + +// A simple C++ wrapper for . It uses the POSIX Extended +// Regular Expression syntax. +class GTEST_API_ RE { + public: + // A copy constructor is required by the Standard to initialize object + // references from r-values. + RE(const RE& other) { Init(other.pattern()); } + + // Constructs an RE from a string. + RE(const ::std::string& regex) { Init(regex.c_str()); } // NOLINT + +#if GTEST_HAS_GLOBAL_STRING + + RE(const ::string& regex) { Init(regex.c_str()); } // NOLINT + +#endif // GTEST_HAS_GLOBAL_STRING + + RE(const char* regex) { Init(regex); } // NOLINT + ~RE(); + + // Returns the string representation of the regex. + const char* pattern() const { return pattern_; } + + // FullMatch(str, re) returns true iff regular expression re matches + // the entire str. + // PartialMatch(str, re) returns true iff regular expression re + // matches a substring of str (including str itself). + // + // TODO(wan@google.com): make FullMatch() and PartialMatch() work + // when str contains NUL characters. + static bool FullMatch(const ::std::string& str, const RE& re) { + return FullMatch(str.c_str(), re); + } + static bool PartialMatch(const ::std::string& str, const RE& re) { + return PartialMatch(str.c_str(), re); + } + +#if GTEST_HAS_GLOBAL_STRING + + static bool FullMatch(const ::string& str, const RE& re) { + return FullMatch(str.c_str(), re); + } + static bool PartialMatch(const ::string& str, const RE& re) { + return PartialMatch(str.c_str(), re); + } + +#endif // GTEST_HAS_GLOBAL_STRING + + static bool FullMatch(const char* str, const RE& re); + static bool PartialMatch(const char* str, const RE& re); + + private: + void Init(const char* regex); + + // We use a const char* instead of an std::string, as Google Test used to be + // used where std::string is not available. TODO(wan@google.com): change to + // std::string. + const char* pattern_; + bool is_valid_; + +#if GTEST_USES_POSIX_RE + + regex_t full_regex_; // For FullMatch(). + regex_t partial_regex_; // For PartialMatch(). + +#else // GTEST_USES_SIMPLE_RE + + const char* full_pattern_; // For FullMatch(); + +#endif + + GTEST_DISALLOW_ASSIGN_(RE); +}; + +// Formats a source file path and a line number as they would appear +// in an error message from the compiler used to compile this code. +GTEST_API_ ::std::string FormatFileLocation(const char* file, int line); + +// Formats a file location for compiler-independent XML output. +// Although this function is not platform dependent, we put it next to +// FormatFileLocation in order to contrast the two functions. +GTEST_API_ ::std::string FormatCompilerIndependentFileLocation(const char* file, + int line); + +// Defines logging utilities: +// GTEST_LOG_(severity) - logs messages at the specified severity level. The +// message itself is streamed into the macro. +// LogToStderr() - directs all log messages to stderr. +// FlushInfoLog() - flushes informational log messages. + +enum GTestLogSeverity { + GTEST_INFO, + GTEST_WARNING, + GTEST_ERROR, + GTEST_FATAL +}; + +// Formats log entry severity, provides a stream object for streaming the +// log message, and terminates the message with a newline when going out of +// scope. +class GTEST_API_ GTestLog { + public: + GTestLog(GTestLogSeverity severity, const char* file, int line); + + // Flushes the buffers and, if severity is GTEST_FATAL, aborts the program. + ~GTestLog(); + + ::std::ostream& GetStream() { return ::std::cerr; } + + private: + const GTestLogSeverity severity_; + + GTEST_DISALLOW_COPY_AND_ASSIGN_(GTestLog); +}; + +#define GTEST_LOG_(severity) \ + ::testing::internal::GTestLog(::testing::internal::GTEST_##severity, \ + __FILE__, __LINE__).GetStream() + +inline void LogToStderr() {} +inline void FlushInfoLog() { fflush(NULL); } + +// INTERNAL IMPLEMENTATION - DO NOT USE. +// +// GTEST_CHECK_ is an all-mode assert. It aborts the program if the condition +// is not satisfied. +// Synopsys: +// GTEST_CHECK_(boolean_condition); +// or +// GTEST_CHECK_(boolean_condition) << "Additional message"; +// +// This checks the condition and if the condition is not satisfied +// it prints message about the condition violation, including the +// condition itself, plus additional message streamed into it, if any, +// and then it aborts the program. It aborts the program irrespective of +// whether it is built in the debug mode or not. +#define GTEST_CHECK_(condition) \ + GTEST_AMBIGUOUS_ELSE_BLOCKER_ \ + if (::testing::internal::IsTrue(condition)) \ + ; \ + else \ + GTEST_LOG_(FATAL) << "Condition " #condition " failed. " + +// An all-mode assert to verify that the given POSIX-style function +// call returns 0 (indicating success). Known limitation: this +// doesn't expand to a balanced 'if' statement, so enclose the macro +// in {} if you need to use it as the only statement in an 'if' +// branch. +#define GTEST_CHECK_POSIX_SUCCESS_(posix_call) \ + if (const int gtest_error = (posix_call)) \ + GTEST_LOG_(FATAL) << #posix_call << "failed with error " \ + << gtest_error + +// INTERNAL IMPLEMENTATION - DO NOT USE IN USER CODE. +// +// Use ImplicitCast_ as a safe version of static_cast for upcasting in +// the type hierarchy (e.g. casting a Foo* to a SuperclassOfFoo* or a +// const Foo*). When you use ImplicitCast_, the compiler checks that +// the cast is safe. Such explicit ImplicitCast_s are necessary in +// surprisingly many situations where C++ demands an exact type match +// instead of an argument type convertable to a target type. +// +// The syntax for using ImplicitCast_ is the same as for static_cast: +// +// ImplicitCast_(expr) +// +// ImplicitCast_ would have been part of the C++ standard library, +// but the proposal was submitted too late. It will probably make +// its way into the language in the future. +// +// This relatively ugly name is intentional. It prevents clashes with +// similar functions users may have (e.g., implicit_cast). The internal +// namespace alone is not enough because the function can be found by ADL. +template +inline To ImplicitCast_(To x) { return x; } + +// When you upcast (that is, cast a pointer from type Foo to type +// SuperclassOfFoo), it's fine to use ImplicitCast_<>, since upcasts +// always succeed. When you downcast (that is, cast a pointer from +// type Foo to type SubclassOfFoo), static_cast<> isn't safe, because +// how do you know the pointer is really of type SubclassOfFoo? It +// could be a bare Foo, or of type DifferentSubclassOfFoo. Thus, +// when you downcast, you should use this macro. In debug mode, we +// use dynamic_cast<> to double-check the downcast is legal (we die +// if it's not). In normal mode, we do the efficient static_cast<> +// instead. Thus, it's important to test in debug mode to make sure +// the cast is legal! +// This is the only place in the code we should use dynamic_cast<>. +// In particular, you SHOULDN'T be using dynamic_cast<> in order to +// do RTTI (eg code like this: +// if (dynamic_cast(foo)) HandleASubclass1Object(foo); +// if (dynamic_cast(foo)) HandleASubclass2Object(foo); +// You should design the code some other way not to need this. +// +// This relatively ugly name is intentional. It prevents clashes with +// similar functions users may have (e.g., down_cast). The internal +// namespace alone is not enough because the function can be found by ADL. +template // use like this: DownCast_(foo); +inline To DownCast_(From* f) { // so we only accept pointers + // Ensures that To is a sub-type of From *. This test is here only + // for compile-time type checking, and has no overhead in an + // optimized build at run-time, as it will be optimized away + // completely. + if (false) { + const To to = NULL; + ::testing::internal::ImplicitCast_(to); + } + +#if GTEST_HAS_RTTI + // RTTI: debug mode only! + GTEST_CHECK_(f == NULL || dynamic_cast(f) != NULL); +#endif + return static_cast(f); +} + +// Downcasts the pointer of type Base to Derived. +// Derived must be a subclass of Base. The parameter MUST +// point to a class of type Derived, not any subclass of it. +// When RTTI is available, the function performs a runtime +// check to enforce this. +template +Derived* CheckedDowncastToActualType(Base* base) { +#if GTEST_HAS_RTTI + GTEST_CHECK_(typeid(*base) == typeid(Derived)); + return dynamic_cast(base); // NOLINT +#else + return static_cast(base); // Poor man's downcast. +#endif +} + +#if GTEST_HAS_STREAM_REDIRECTION + +// Defines the stderr capturer: +// CaptureStdout - starts capturing stdout. +// GetCapturedStdout - stops capturing stdout and returns the captured string. +// CaptureStderr - starts capturing stderr. +// GetCapturedStderr - stops capturing stderr and returns the captured string. +// +GTEST_API_ void CaptureStdout(); +GTEST_API_ std::string GetCapturedStdout(); +GTEST_API_ void CaptureStderr(); +GTEST_API_ std::string GetCapturedStderr(); + +#endif // GTEST_HAS_STREAM_REDIRECTION + + +#if GTEST_HAS_DEATH_TEST + +const ::std::vector& GetInjectableArgvs(); +void SetInjectableArgvs(const ::std::vector* + new_argvs); + +// A copy of all command line arguments. Set by InitGoogleTest(). +extern ::std::vector g_argvs; + +#endif // GTEST_HAS_DEATH_TEST + +// Defines synchronization primitives. + +#if GTEST_HAS_PTHREAD + +// Sleeps for (roughly) n milli-seconds. This function is only for +// testing Google Test's own constructs. Don't use it in user tests, +// either directly or indirectly. +inline void SleepMilliseconds(int n) { + const timespec time = { + 0, // 0 seconds. + n * 1000L * 1000L, // And n ms. + }; + nanosleep(&time, NULL); +} + +// Allows a controller thread to pause execution of newly created +// threads until notified. Instances of this class must be created +// and destroyed in the controller thread. +// +// This class is only for testing Google Test's own constructs. Do not +// use it in user tests, either directly or indirectly. +class Notification { + public: + Notification() : notified_(false) { + GTEST_CHECK_POSIX_SUCCESS_(pthread_mutex_init(&mutex_, NULL)); + } + ~Notification() { + pthread_mutex_destroy(&mutex_); + } + + // Notifies all threads created with this notification to start. Must + // be called from the controller thread. + void Notify() { + pthread_mutex_lock(&mutex_); + notified_ = true; + pthread_mutex_unlock(&mutex_); + } + + // Blocks until the controller thread notifies. Must be called from a test + // thread. + void WaitForNotification() { + for (;;) { + pthread_mutex_lock(&mutex_); + const bool notified = notified_; + pthread_mutex_unlock(&mutex_); + if (notified) + break; + SleepMilliseconds(10); + } + } + + private: + pthread_mutex_t mutex_; + bool notified_; + + GTEST_DISALLOW_COPY_AND_ASSIGN_(Notification); +}; + +// As a C-function, ThreadFuncWithCLinkage cannot be templated itself. +// Consequently, it cannot select a correct instantiation of ThreadWithParam +// in order to call its Run(). Introducing ThreadWithParamBase as a +// non-templated base class for ThreadWithParam allows us to bypass this +// problem. +class ThreadWithParamBase { + public: + virtual ~ThreadWithParamBase() {} + virtual void Run() = 0; +}; + +// pthread_create() accepts a pointer to a function type with the C linkage. +// According to the Standard (7.5/1), function types with different linkages +// are different even if they are otherwise identical. Some compilers (for +// example, SunStudio) treat them as different types. Since class methods +// cannot be defined with C-linkage we need to define a free C-function to +// pass into pthread_create(). +extern "C" inline void* ThreadFuncWithCLinkage(void* thread) { + static_cast(thread)->Run(); + return NULL; +} + +// Helper class for testing Google Test's multi-threading constructs. +// To use it, write: +// +// void ThreadFunc(int param) { /* Do things with param */ } +// Notification thread_can_start; +// ... +// // The thread_can_start parameter is optional; you can supply NULL. +// ThreadWithParam thread(&ThreadFunc, 5, &thread_can_start); +// thread_can_start.Notify(); +// +// These classes are only for testing Google Test's own constructs. Do +// not use them in user tests, either directly or indirectly. +template +class ThreadWithParam : public ThreadWithParamBase { + public: + typedef void (*UserThreadFunc)(T); + + ThreadWithParam( + UserThreadFunc func, T param, Notification* thread_can_start) + : func_(func), + param_(param), + thread_can_start_(thread_can_start), + finished_(false) { + ThreadWithParamBase* const base = this; + // The thread can be created only after all fields except thread_ + // have been initialized. + GTEST_CHECK_POSIX_SUCCESS_( + pthread_create(&thread_, 0, &ThreadFuncWithCLinkage, base)); + } + ~ThreadWithParam() { Join(); } + + void Join() { + if (!finished_) { + GTEST_CHECK_POSIX_SUCCESS_(pthread_join(thread_, 0)); + finished_ = true; + } + } + + virtual void Run() { + if (thread_can_start_ != NULL) + thread_can_start_->WaitForNotification(); + func_(param_); + } + + private: + const UserThreadFunc func_; // User-supplied thread function. + const T param_; // User-supplied parameter to the thread function. + // When non-NULL, used to block execution until the controller thread + // notifies. + Notification* const thread_can_start_; + bool finished_; // true iff we know that the thread function has finished. + pthread_t thread_; // The native thread object. + + GTEST_DISALLOW_COPY_AND_ASSIGN_(ThreadWithParam); +}; + +// MutexBase and Mutex implement mutex on pthreads-based platforms. They +// are used in conjunction with class MutexLock: +// +// Mutex mutex; +// ... +// MutexLock lock(&mutex); // Acquires the mutex and releases it at the end +// // of the current scope. +// +// MutexBase implements behavior for both statically and dynamically +// allocated mutexes. Do not use MutexBase directly. Instead, write +// the following to define a static mutex: +// +// GTEST_DEFINE_STATIC_MUTEX_(g_some_mutex); +// +// You can forward declare a static mutex like this: +// +// GTEST_DECLARE_STATIC_MUTEX_(g_some_mutex); +// +// To create a dynamic mutex, just define an object of type Mutex. +class MutexBase { + public: + // Acquires this mutex. + void Lock() { + GTEST_CHECK_POSIX_SUCCESS_(pthread_mutex_lock(&mutex_)); + owner_ = pthread_self(); + has_owner_ = true; + } + + // Releases this mutex. + void Unlock() { + // Since the lock is being released the owner_ field should no longer be + // considered valid. We don't protect writing to has_owner_ here, as it's + // the caller's responsibility to ensure that the current thread holds the + // mutex when this is called. + has_owner_ = false; + GTEST_CHECK_POSIX_SUCCESS_(pthread_mutex_unlock(&mutex_)); + } + + // Does nothing if the current thread holds the mutex. Otherwise, crashes + // with high probability. + void AssertHeld() const { + GTEST_CHECK_(has_owner_ && pthread_equal(owner_, pthread_self())) + << "The current thread is not holding the mutex @" << this; + } + + // A static mutex may be used before main() is entered. It may even + // be used before the dynamic initialization stage. Therefore we + // must be able to initialize a static mutex object at link time. + // This means MutexBase has to be a POD and its member variables + // have to be public. + public: + pthread_mutex_t mutex_; // The underlying pthread mutex. + // has_owner_ indicates whether the owner_ field below contains a valid thread + // ID and is therefore safe to inspect (e.g., to use in pthread_equal()). All + // accesses to the owner_ field should be protected by a check of this field. + // An alternative might be to memset() owner_ to all zeros, but there's no + // guarantee that a zero'd pthread_t is necessarily invalid or even different + // from pthread_self(). + bool has_owner_; + pthread_t owner_; // The thread holding the mutex. +}; + +// Forward-declares a static mutex. +# define GTEST_DECLARE_STATIC_MUTEX_(mutex) \ + extern ::testing::internal::MutexBase mutex + +// Defines and statically (i.e. at link time) initializes a static mutex. +// The initialization list here does not explicitly initialize each field, +// instead relying on default initialization for the unspecified fields. In +// particular, the owner_ field (a pthread_t) is not explicitly initialized. +// This allows initialization to work whether pthread_t is a scalar or struct. +// The flag -Wmissing-field-initializers must not be specified for this to work. +# define GTEST_DEFINE_STATIC_MUTEX_(mutex) \ + ::testing::internal::MutexBase mutex = { PTHREAD_MUTEX_INITIALIZER, false } + +// The Mutex class can only be used for mutexes created at runtime. It +// shares its API with MutexBase otherwise. +class Mutex : public MutexBase { + public: + Mutex() { + GTEST_CHECK_POSIX_SUCCESS_(pthread_mutex_init(&mutex_, NULL)); + has_owner_ = false; + } + ~Mutex() { + GTEST_CHECK_POSIX_SUCCESS_(pthread_mutex_destroy(&mutex_)); + } + + private: + GTEST_DISALLOW_COPY_AND_ASSIGN_(Mutex); +}; + +// We cannot name this class MutexLock as the ctor declaration would +// conflict with a macro named MutexLock, which is defined on some +// platforms. Hence the typedef trick below. +class GTestMutexLock { + public: + explicit GTestMutexLock(MutexBase* mutex) + : mutex_(mutex) { mutex_->Lock(); } + + ~GTestMutexLock() { mutex_->Unlock(); } + + private: + MutexBase* const mutex_; + + GTEST_DISALLOW_COPY_AND_ASSIGN_(GTestMutexLock); +}; + +typedef GTestMutexLock MutexLock; + +// Helpers for ThreadLocal. + +// pthread_key_create() requires DeleteThreadLocalValue() to have +// C-linkage. Therefore it cannot be templatized to access +// ThreadLocal. Hence the need for class +// ThreadLocalValueHolderBase. +class ThreadLocalValueHolderBase { + public: + virtual ~ThreadLocalValueHolderBase() {} +}; + +// Called by pthread to delete thread-local data stored by +// pthread_setspecific(). +extern "C" inline void DeleteThreadLocalValue(void* value_holder) { + delete static_cast(value_holder); +} + +// Implements thread-local storage on pthreads-based systems. +// +// // Thread 1 +// ThreadLocal tl(100); // 100 is the default value for each thread. +// +// // Thread 2 +// tl.set(150); // Changes the value for thread 2 only. +// EXPECT_EQ(150, tl.get()); +// +// // Thread 1 +// EXPECT_EQ(100, tl.get()); // In thread 1, tl has the original value. +// tl.set(200); +// EXPECT_EQ(200, tl.get()); +// +// The template type argument T must have a public copy constructor. +// In addition, the default ThreadLocal constructor requires T to have +// a public default constructor. +// +// An object managed for a thread by a ThreadLocal instance is deleted +// when the thread exits. Or, if the ThreadLocal instance dies in +// that thread, when the ThreadLocal dies. It's the user's +// responsibility to ensure that all other threads using a ThreadLocal +// have exited when it dies, or the per-thread objects for those +// threads will not be deleted. +// +// Google Test only uses global ThreadLocal objects. That means they +// will die after main() has returned. Therefore, no per-thread +// object managed by Google Test will be leaked as long as all threads +// using Google Test have exited when main() returns. +template +class ThreadLocal { + public: + ThreadLocal() : key_(CreateKey()), + default_() {} + explicit ThreadLocal(const T& value) : key_(CreateKey()), + default_(value) {} + + ~ThreadLocal() { + // Destroys the managed object for the current thread, if any. + DeleteThreadLocalValue(pthread_getspecific(key_)); + + // Releases resources associated with the key. This will *not* + // delete managed objects for other threads. + GTEST_CHECK_POSIX_SUCCESS_(pthread_key_delete(key_)); + } + + T* pointer() { return GetOrCreateValue(); } + const T* pointer() const { return GetOrCreateValue(); } + const T& get() const { return *pointer(); } + void set(const T& value) { *pointer() = value; } + + private: + // Holds a value of type T. + class ValueHolder : public ThreadLocalValueHolderBase { + public: + explicit ValueHolder(const T& value) : value_(value) {} + + T* pointer() { return &value_; } + + private: + T value_; + GTEST_DISALLOW_COPY_AND_ASSIGN_(ValueHolder); + }; + + static pthread_key_t CreateKey() { + pthread_key_t key; + // When a thread exits, DeleteThreadLocalValue() will be called on + // the object managed for that thread. + GTEST_CHECK_POSIX_SUCCESS_( + pthread_key_create(&key, &DeleteThreadLocalValue)); + return key; + } + + T* GetOrCreateValue() const { + ThreadLocalValueHolderBase* const holder = + static_cast(pthread_getspecific(key_)); + if (holder != NULL) { + return CheckedDowncastToActualType(holder)->pointer(); + } + + ValueHolder* const new_holder = new ValueHolder(default_); + ThreadLocalValueHolderBase* const holder_base = new_holder; + GTEST_CHECK_POSIX_SUCCESS_(pthread_setspecific(key_, holder_base)); + return new_holder->pointer(); + } + + // A key pthreads uses for looking up per-thread values. + const pthread_key_t key_; + const T default_; // The default value for each thread. + + GTEST_DISALLOW_COPY_AND_ASSIGN_(ThreadLocal); +}; + +# define GTEST_IS_THREADSAFE 1 + +#else // GTEST_HAS_PTHREAD + +// A dummy implementation of synchronization primitives (mutex, lock, +// and thread-local variable). Necessary for compiling Google Test where +// mutex is not supported - using Google Test in multiple threads is not +// supported on such platforms. + +class Mutex { + public: + Mutex() {} + void Lock() {} + void Unlock() {} + void AssertHeld() const {} +}; + +# define GTEST_DECLARE_STATIC_MUTEX_(mutex) \ + extern ::testing::internal::Mutex mutex + +# define GTEST_DEFINE_STATIC_MUTEX_(mutex) ::testing::internal::Mutex mutex + +class GTestMutexLock { + public: + explicit GTestMutexLock(Mutex*) {} // NOLINT +}; + +typedef GTestMutexLock MutexLock; + +template +class ThreadLocal { + public: + ThreadLocal() : value_() {} + explicit ThreadLocal(const T& value) : value_(value) {} + T* pointer() { return &value_; } + const T* pointer() const { return &value_; } + const T& get() const { return value_; } + void set(const T& value) { value_ = value; } + private: + T value_; +}; + +// The above synchronization primitives have dummy implementations. +// Therefore Google Test is not thread-safe. +# define GTEST_IS_THREADSAFE 0 + +#endif // GTEST_HAS_PTHREAD + +// Returns the number of threads running in the process, or 0 to indicate that +// we cannot detect it. +GTEST_API_ size_t GetThreadCount(); + +// Passing non-POD classes through ellipsis (...) crashes the ARM +// compiler and generates a warning in Sun Studio. The Nokia Symbian +// and the IBM XL C/C++ compiler try to instantiate a copy constructor +// for objects passed through ellipsis (...), failing for uncopyable +// objects. We define this to ensure that only POD is passed through +// ellipsis on these systems. +#if defined(__SYMBIAN32__) || defined(__IBMCPP__) || defined(__SUNPRO_CC) +// We lose support for NULL detection where the compiler doesn't like +// passing non-POD classes through ellipsis (...). +# define GTEST_ELLIPSIS_NEEDS_POD_ 1 +#else +# define GTEST_CAN_COMPARE_NULL 1 +#endif + +// The Nokia Symbian and IBM XL C/C++ compilers cannot decide between +// const T& and const T* in a function template. These compilers +// _can_ decide between class template specializations for T and T*, +// so a tr1::type_traits-like is_pointer works. +#if defined(__SYMBIAN32__) || defined(__IBMCPP__) +# define GTEST_NEEDS_IS_POINTER_ 1 +#endif + +template +struct bool_constant { + typedef bool_constant type; + static const bool value = bool_value; +}; +template const bool bool_constant::value; + +typedef bool_constant false_type; +typedef bool_constant true_type; + +template +struct is_pointer : public false_type {}; + +template +struct is_pointer : public true_type {}; + +template +struct IteratorTraits { + typedef typename Iterator::value_type value_type; +}; + +template +struct IteratorTraits { + typedef T value_type; +}; + +template +struct IteratorTraits { + typedef T value_type; +}; + +#if GTEST_OS_WINDOWS +# define GTEST_PATH_SEP_ "\\" +# define GTEST_HAS_ALT_PATH_SEP_ 1 +// The biggest signed integer type the compiler supports. +typedef __int64 BiggestInt; +#else +# define GTEST_PATH_SEP_ "/" +# define GTEST_HAS_ALT_PATH_SEP_ 0 +typedef long long BiggestInt; // NOLINT +#endif // GTEST_OS_WINDOWS + +// Utilities for char. + +// isspace(int ch) and friends accept an unsigned char or EOF. char +// may be signed, depending on the compiler (or compiler flags). +// Therefore we need to cast a char to unsigned char before calling +// isspace(), etc. + +inline bool IsAlpha(char ch) { + return isalpha(static_cast(ch)) != 0; +} +inline bool IsAlNum(char ch) { + return isalnum(static_cast(ch)) != 0; +} +inline bool IsDigit(char ch) { + return isdigit(static_cast(ch)) != 0; +} +inline bool IsLower(char ch) { + return islower(static_cast(ch)) != 0; +} +inline bool IsSpace(char ch) { + return isspace(static_cast(ch)) != 0; +} +inline bool IsUpper(char ch) { + return isupper(static_cast(ch)) != 0; +} +inline bool IsXDigit(char ch) { + return isxdigit(static_cast(ch)) != 0; +} +inline bool IsXDigit(wchar_t ch) { + const unsigned char low_byte = static_cast(ch); + return ch == low_byte && isxdigit(low_byte) != 0; +} + +inline char ToLower(char ch) { + return static_cast(tolower(static_cast(ch))); +} +inline char ToUpper(char ch) { + return static_cast(toupper(static_cast(ch))); +} + +// The testing::internal::posix namespace holds wrappers for common +// POSIX functions. These wrappers hide the differences between +// Windows/MSVC and POSIX systems. Since some compilers define these +// standard functions as macros, the wrapper cannot have the same name +// as the wrapped function. + +namespace posix { + +// Functions with a different name on Windows. + +#if GTEST_OS_WINDOWS + +typedef struct _stat StatStruct; + +# ifdef __BORLANDC__ +inline int IsATTY(int fd) { return isatty(fd); } +inline int StrCaseCmp(const char* s1, const char* s2) { + return stricmp(s1, s2); +} +inline char* StrDup(const char* src) { return strdup(src); } +# else // !__BORLANDC__ +# if GTEST_OS_WINDOWS_MOBILE +inline int IsATTY(int /* fd */) { return 0; } +# else +inline int IsATTY(int fd) { return _isatty(fd); } +# endif // GTEST_OS_WINDOWS_MOBILE +inline int StrCaseCmp(const char* s1, const char* s2) { + return _stricmp(s1, s2); +} +inline char* StrDup(const char* src) { return _strdup(src); } +# endif // __BORLANDC__ + +# if GTEST_OS_WINDOWS_MOBILE +inline int FileNo(FILE* file) { return reinterpret_cast(_fileno(file)); } +// Stat(), RmDir(), and IsDir() are not needed on Windows CE at this +// time and thus not defined there. +# else +inline int FileNo(FILE* file) { return _fileno(file); } +inline int Stat(const char* path, StatStruct* buf) { return _stat(path, buf); } +inline int RmDir(const char* dir) { return _rmdir(dir); } +inline bool IsDir(const StatStruct& st) { + return (_S_IFDIR & st.st_mode) != 0; +} +# endif // GTEST_OS_WINDOWS_MOBILE + +#else + +typedef struct stat StatStruct; + +inline int FileNo(FILE* file) { return fileno(file); } +inline int IsATTY(int fd) { return isatty(fd); } +inline int Stat(const char* path, StatStruct* buf) { return stat(path, buf); } +inline int StrCaseCmp(const char* s1, const char* s2) { + return strcasecmp(s1, s2); +} +inline char* StrDup(const char* src) { return strdup(src); } +inline int RmDir(const char* dir) { return rmdir(dir); } +inline bool IsDir(const StatStruct& st) { return S_ISDIR(st.st_mode); } + +#endif // GTEST_OS_WINDOWS + +// Functions deprecated by MSVC 8.0. + +#ifdef _MSC_VER +// Temporarily disable warning 4996 (deprecated function). +# pragma warning(push) +# pragma warning(disable:4996) +#endif + +inline const char* StrNCpy(char* dest, const char* src, size_t n) { + return strncpy(dest, src, n); +} + +// ChDir(), FReopen(), FDOpen(), Read(), Write(), Close(), and +// StrError() aren't needed on Windows CE at this time and thus not +// defined there. + +#if !GTEST_OS_WINDOWS_MOBILE +inline int ChDir(const char* dir) { return chdir(dir); } +#endif +inline FILE* FOpen(const char* path, const char* mode) { + return fopen(path, mode); +} +#if !GTEST_OS_WINDOWS_MOBILE +inline FILE *FReopen(const char* path, const char* mode, FILE* stream) { + return freopen(path, mode, stream); +} +inline FILE* FDOpen(int fd, const char* mode) { return fdopen(fd, mode); } +#endif +inline int FClose(FILE* fp) { return fclose(fp); } +#if !GTEST_OS_WINDOWS_MOBILE +inline int Read(int fd, void* buf, unsigned int count) { + return static_cast(read(fd, buf, count)); +} +inline int Write(int fd, const void* buf, unsigned int count) { + return static_cast(write(fd, buf, count)); +} +inline int Close(int fd) { return close(fd); } +inline const char* StrError(int errnum) { return strerror(errnum); } +#endif +inline const char* GetEnv(const char* name) { +#if GTEST_OS_WINDOWS_MOBILE + // We are on Windows CE, which has no environment variables. + return NULL; +#elif defined(__BORLANDC__) || defined(__SunOS_5_8) || defined(__SunOS_5_9) + // Environment variables which we programmatically clear will be set to the + // empty string rather than unset (NULL). Handle that case. + const char* const env = getenv(name); + return (env != NULL && env[0] != '\0') ? env : NULL; +#else + return getenv(name); +#endif +} + +#ifdef _MSC_VER +# pragma warning(pop) // Restores the warning state. +#endif + +#if GTEST_OS_WINDOWS_MOBILE +// Windows CE has no C library. The abort() function is used in +// several places in Google Test. This implementation provides a reasonable +// imitation of standard behaviour. +void Abort(); +#else +inline void Abort() { abort(); } +#endif // GTEST_OS_WINDOWS_MOBILE + +} // namespace posix + +// MSVC "deprecates" snprintf and issues warnings wherever it is used. In +// order to avoid these warnings, we need to use _snprintf or _snprintf_s on +// MSVC-based platforms. We map the GTEST_SNPRINTF_ macro to the appropriate +// function in order to achieve that. We use macro definition here because +// snprintf is a variadic function. +#if _MSC_VER >= 1400 && !GTEST_OS_WINDOWS_MOBILE +// MSVC 2005 and above support variadic macros. +# define GTEST_SNPRINTF_(buffer, size, format, ...) \ + _snprintf_s(buffer, size, size, format, __VA_ARGS__) +#elif defined(_MSC_VER) +// Windows CE does not define _snprintf_s and MSVC prior to 2005 doesn't +// complain about _snprintf. +# define GTEST_SNPRINTF_ _snprintf +#else +# define GTEST_SNPRINTF_ snprintf +#endif + +// The maximum number a BiggestInt can represent. This definition +// works no matter BiggestInt is represented in one's complement or +// two's complement. +// +// We cannot rely on numeric_limits in STL, as __int64 and long long +// are not part of standard C++ and numeric_limits doesn't need to be +// defined for them. +const BiggestInt kMaxBiggestInt = + ~(static_cast(1) << (8*sizeof(BiggestInt) - 1)); + +// This template class serves as a compile-time function from size to +// type. It maps a size in bytes to a primitive type with that +// size. e.g. +// +// TypeWithSize<4>::UInt +// +// is typedef-ed to be unsigned int (unsigned integer made up of 4 +// bytes). +// +// Such functionality should belong to STL, but I cannot find it +// there. +// +// Google Test uses this class in the implementation of floating-point +// comparison. +// +// For now it only handles UInt (unsigned int) as that's all Google Test +// needs. Other types can be easily added in the future if need +// arises. +template +class TypeWithSize { + public: + // This prevents the user from using TypeWithSize with incorrect + // values of N. + typedef void UInt; +}; + +// The specialization for size 4. +template <> +class TypeWithSize<4> { + public: + // unsigned int has size 4 in both gcc and MSVC. + // + // As base/basictypes.h doesn't compile on Windows, we cannot use + // uint32, uint64, and etc here. + typedef int Int; + typedef unsigned int UInt; +}; + +// The specialization for size 8. +template <> +class TypeWithSize<8> { + public: +#if GTEST_OS_WINDOWS + typedef __int64 Int; + typedef unsigned __int64 UInt; +#else + typedef long long Int; // NOLINT + typedef unsigned long long UInt; // NOLINT +#endif // GTEST_OS_WINDOWS +}; + +// Integer types of known sizes. +typedef TypeWithSize<4>::Int Int32; +typedef TypeWithSize<4>::UInt UInt32; +typedef TypeWithSize<8>::Int Int64; +typedef TypeWithSize<8>::UInt UInt64; +typedef TypeWithSize<8>::Int TimeInMillis; // Represents time in milliseconds. + +// Utilities for command line flags and environment variables. + +// Macro for referencing flags. +#define GTEST_FLAG(name) FLAGS_gtest_##name + +// Macros for declaring flags. +#define GTEST_DECLARE_bool_(name) GTEST_API_ extern bool GTEST_FLAG(name) +#define GTEST_DECLARE_int32_(name) \ + GTEST_API_ extern ::testing::internal::Int32 GTEST_FLAG(name) +#define GTEST_DECLARE_string_(name) \ + GTEST_API_ extern ::std::string GTEST_FLAG(name) + +// Macros for defining flags. +#define GTEST_DEFINE_bool_(name, default_val, doc) \ + GTEST_API_ bool GTEST_FLAG(name) = (default_val) +#define GTEST_DEFINE_int32_(name, default_val, doc) \ + GTEST_API_ ::testing::internal::Int32 GTEST_FLAG(name) = (default_val) +#define GTEST_DEFINE_string_(name, default_val, doc) \ + GTEST_API_ ::std::string GTEST_FLAG(name) = (default_val) + +// Thread annotations +#define GTEST_EXCLUSIVE_LOCK_REQUIRED_(locks) +#define GTEST_LOCK_EXCLUDED_(locks) + +// Parses 'str' for a 32-bit signed integer. If successful, writes the result +// to *value and returns true; otherwise leaves *value unchanged and returns +// false. +// TODO(chandlerc): Find a better way to refactor flag and environment parsing +// out of both gtest-port.cc and gtest.cc to avoid exporting this utility +// function. +bool ParseInt32(const Message& src_text, const char* str, Int32* value); + +// Parses a bool/Int32/string from the environment variable +// corresponding to the given Google Test flag. +bool BoolFromGTestEnv(const char* flag, bool default_val); +GTEST_API_ Int32 Int32FromGTestEnv(const char* flag, Int32 default_val); +const char* StringFromGTestEnv(const char* flag, const char* default_val); + +} // namespace internal +} // namespace testing + +#endif // GTEST_INCLUDE_GTEST_INTERNAL_GTEST_PORT_H_ + +#if GTEST_OS_LINUX +# include +# include +# include +# include +#endif // GTEST_OS_LINUX + +#include +#include +#include +#include +#include + +// Copyright 2005, Google Inc. +// All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Authors: wan@google.com (Zhanyong Wan), eefacm@gmail.com (Sean Mcafee) +// +// The Google C++ Testing Framework (Google Test) +// +// This header file declares the String class and functions used internally by +// Google Test. They are subject to change without notice. They should not used +// by code external to Google Test. +// +// This header file is #included by . +// It should not be #included by other files. + +#ifndef GTEST_INCLUDE_GTEST_INTERNAL_GTEST_STRING_H_ +#define GTEST_INCLUDE_GTEST_INTERNAL_GTEST_STRING_H_ + +#ifdef __BORLANDC__ +// string.h is not guaranteed to provide strcpy on C++ Builder. +# include +#endif + +#include +#include + + +namespace testing { +namespace internal { + +// String - an abstract class holding static string utilities. +class GTEST_API_ String { + public: + // Static utility methods + + // Clones a 0-terminated C string, allocating memory using new. The + // caller is responsible for deleting the return value using + // delete[]. Returns the cloned string, or NULL if the input is + // NULL. + // + // This is different from strdup() in string.h, which allocates + // memory using malloc(). + static const char* CloneCString(const char* c_str); + +#if GTEST_OS_WINDOWS_MOBILE + // Windows CE does not have the 'ANSI' versions of Win32 APIs. To be + // able to pass strings to Win32 APIs on CE we need to convert them + // to 'Unicode', UTF-16. + + // Creates a UTF-16 wide string from the given ANSI string, allocating + // memory using new. The caller is responsible for deleting the return + // value using delete[]. Returns the wide string, or NULL if the + // input is NULL. + // + // The wide string is created using the ANSI codepage (CP_ACP) to + // match the behaviour of the ANSI versions of Win32 calls and the + // C runtime. + static LPCWSTR AnsiToUtf16(const char* c_str); + + // Creates an ANSI string from the given wide string, allocating + // memory using new. The caller is responsible for deleting the return + // value using delete[]. Returns the ANSI string, or NULL if the + // input is NULL. + // + // The returned string is created using the ANSI codepage (CP_ACP) to + // match the behaviour of the ANSI versions of Win32 calls and the + // C runtime. + static const char* Utf16ToAnsi(LPCWSTR utf16_str); +#endif + + // Compares two C strings. Returns true iff they have the same content. + // + // Unlike strcmp(), this function can handle NULL argument(s). A + // NULL C string is considered different to any non-NULL C string, + // including the empty string. + static bool CStringEquals(const char* lhs, const char* rhs); + + // Converts a wide C string to a String using the UTF-8 encoding. + // NULL will be converted to "(null)". If an error occurred during + // the conversion, "(failed to convert from wide string)" is + // returned. + static std::string ShowWideCString(const wchar_t* wide_c_str); + + // Compares two wide C strings. Returns true iff they have the same + // content. + // + // Unlike wcscmp(), this function can handle NULL argument(s). A + // NULL C string is considered different to any non-NULL C string, + // including the empty string. + static bool WideCStringEquals(const wchar_t* lhs, const wchar_t* rhs); + + // Compares two C strings, ignoring case. Returns true iff they + // have the same content. + // + // Unlike strcasecmp(), this function can handle NULL argument(s). + // A NULL C string is considered different to any non-NULL C string, + // including the empty string. + static bool CaseInsensitiveCStringEquals(const char* lhs, + const char* rhs); + + // Compares two wide C strings, ignoring case. Returns true iff they + // have the same content. + // + // Unlike wcscasecmp(), this function can handle NULL argument(s). + // A NULL C string is considered different to any non-NULL wide C string, + // including the empty string. + // NB: The implementations on different platforms slightly differ. + // On windows, this method uses _wcsicmp which compares according to LC_CTYPE + // environment variable. On GNU platform this method uses wcscasecmp + // which compares according to LC_CTYPE category of the current locale. + // On MacOS X, it uses towlower, which also uses LC_CTYPE category of the + // current locale. + static bool CaseInsensitiveWideCStringEquals(const wchar_t* lhs, + const wchar_t* rhs); + + // Returns true iff the given string ends with the given suffix, ignoring + // case. Any string is considered to end with an empty suffix. + static bool EndsWithCaseInsensitive( + const std::string& str, const std::string& suffix); + + // Formats a list of arguments to an std::string, using the same format + // spec string as for printf. + // + // We do not use the StringPrintf class as it is not universally + // available. + // + // The result is limited to 4096 characters (including the tailing + // 0). If 4096 characters are not enough to format the input, + // "" is returned. + static std::string Format(const char* format, ...); + + private: + String(); // Not meant to be instantiated. +}; // class String + +// Gets the content of the stringstream's buffer as an std::string. Each '\0' +// character in the buffer is replaced with "\\0". +GTEST_API_ std::string StringStreamToString(::std::stringstream* stream); + +// Converts a streamable value to an std::string. A NULL pointer is +// converted to "(null)". When the input value is a ::string, +// ::std::string, ::wstring, or ::std::wstring object, each NUL +// character in it is replaced with "\\0". + +// Declared here but defined in gtest.h, so that it has access +// to the definition of the Message class, required by the ARM +// compiler. +template +std::string StreamableToString(const T& streamable); + +} // namespace internal +} // namespace testing + +#endif // GTEST_INCLUDE_GTEST_INTERNAL_GTEST_STRING_H_ +// Copyright 2008, Google Inc. +// All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Author: keith.ray@gmail.com (Keith Ray) +// +// Google Test filepath utilities +// +// This header file declares classes and functions used internally by +// Google Test. They are subject to change without notice. +// +// This file is #included in . +// Do not include this header file separately! + +#ifndef GTEST_INCLUDE_GTEST_INTERNAL_GTEST_FILEPATH_H_ +#define GTEST_INCLUDE_GTEST_INTERNAL_GTEST_FILEPATH_H_ + + +namespace testing { +namespace internal { + +// FilePath - a class for file and directory pathname manipulation which +// handles platform-specific conventions (like the pathname separator). +// Used for helper functions for naming files in a directory for xml output. +// Except for Set methods, all methods are const or static, which provides an +// "immutable value object" -- useful for peace of mind. +// A FilePath with a value ending in a path separator ("like/this/") represents +// a directory, otherwise it is assumed to represent a file. In either case, +// it may or may not represent an actual file or directory in the file system. +// Names are NOT checked for syntax correctness -- no checking for illegal +// characters, malformed paths, etc. + +class GTEST_API_ FilePath { + public: + FilePath() : pathname_("") { } + FilePath(const FilePath& rhs) : pathname_(rhs.pathname_) { } + + explicit FilePath(const std::string& pathname) : pathname_(pathname) { + Normalize(); + } + + FilePath& operator=(const FilePath& rhs) { + Set(rhs); + return *this; + } + + void Set(const FilePath& rhs) { + pathname_ = rhs.pathname_; + } + + const std::string& string() const { return pathname_; } + const char* c_str() const { return pathname_.c_str(); } + + // Returns the current working directory, or "" if unsuccessful. + static FilePath GetCurrentDir(); + + // Given directory = "dir", base_name = "test", number = 0, + // extension = "xml", returns "dir/test.xml". If number is greater + // than zero (e.g., 12), returns "dir/test_12.xml". + // On Windows platform, uses \ as the separator rather than /. + static FilePath MakeFileName(const FilePath& directory, + const FilePath& base_name, + int number, + const char* extension); + + // Given directory = "dir", relative_path = "test.xml", + // returns "dir/test.xml". + // On Windows, uses \ as the separator rather than /. + static FilePath ConcatPaths(const FilePath& directory, + const FilePath& relative_path); + + // Returns a pathname for a file that does not currently exist. The pathname + // will be directory/base_name.extension or + // directory/base_name_.extension if directory/base_name.extension + // already exists. The number will be incremented until a pathname is found + // that does not already exist. + // Examples: 'dir/foo_test.xml' or 'dir/foo_test_1.xml'. + // There could be a race condition if two or more processes are calling this + // function at the same time -- they could both pick the same filename. + static FilePath GenerateUniqueFileName(const FilePath& directory, + const FilePath& base_name, + const char* extension); + + // Returns true iff the path is "". + bool IsEmpty() const { return pathname_.empty(); } + + // If input name has a trailing separator character, removes it and returns + // the name, otherwise return the name string unmodified. + // On Windows platform, uses \ as the separator, other platforms use /. + FilePath RemoveTrailingPathSeparator() const; + + // Returns a copy of the FilePath with the directory part removed. + // Example: FilePath("path/to/file").RemoveDirectoryName() returns + // FilePath("file"). If there is no directory part ("just_a_file"), it returns + // the FilePath unmodified. If there is no file part ("just_a_dir/") it + // returns an empty FilePath (""). + // On Windows platform, '\' is the path separator, otherwise it is '/'. + FilePath RemoveDirectoryName() const; + + // RemoveFileName returns the directory path with the filename removed. + // Example: FilePath("path/to/file").RemoveFileName() returns "path/to/". + // If the FilePath is "a_file" or "/a_file", RemoveFileName returns + // FilePath("./") or, on Windows, FilePath(".\\"). If the filepath does + // not have a file, like "just/a/dir/", it returns the FilePath unmodified. + // On Windows platform, '\' is the path separator, otherwise it is '/'. + FilePath RemoveFileName() const; + + // Returns a copy of the FilePath with the case-insensitive extension removed. + // Example: FilePath("dir/file.exe").RemoveExtension("EXE") returns + // FilePath("dir/file"). If a case-insensitive extension is not + // found, returns a copy of the original FilePath. + FilePath RemoveExtension(const char* extension) const; + + // Creates directories so that path exists. Returns true if successful or if + // the directories already exist; returns false if unable to create + // directories for any reason. Will also return false if the FilePath does + // not represent a directory (that is, it doesn't end with a path separator). + bool CreateDirectoriesRecursively() const; + + // Create the directory so that path exists. Returns true if successful or + // if the directory already exists; returns false if unable to create the + // directory for any reason, including if the parent directory does not + // exist. Not named "CreateDirectory" because that's a macro on Windows. + bool CreateFolder() const; + + // Returns true if FilePath describes something in the file-system, + // either a file, directory, or whatever, and that something exists. + bool FileOrDirectoryExists() const; + + // Returns true if pathname describes a directory in the file-system + // that exists. + bool DirectoryExists() const; + + // Returns true if FilePath ends with a path separator, which indicates that + // it is intended to represent a directory. Returns false otherwise. + // This does NOT check that a directory (or file) actually exists. + bool IsDirectory() const; + + // Returns true if pathname describes a root directory. (Windows has one + // root directory per disk drive.) + bool IsRootDirectory() const; + + // Returns true if pathname describes an absolute path. + bool IsAbsolutePath() const; + + private: + // Replaces multiple consecutive separators with a single separator. + // For example, "bar///foo" becomes "bar/foo". Does not eliminate other + // redundancies that might be in a pathname involving "." or "..". + // + // A pathname with multiple consecutive separators may occur either through + // user error or as a result of some scripts or APIs that generate a pathname + // with a trailing separator. On other platforms the same API or script + // may NOT generate a pathname with a trailing "/". Then elsewhere that + // pathname may have another "/" and pathname components added to it, + // without checking for the separator already being there. + // The script language and operating system may allow paths like "foo//bar" + // but some of the functions in FilePath will not handle that correctly. In + // particular, RemoveTrailingPathSeparator() only removes one separator, and + // it is called in CreateDirectoriesRecursively() assuming that it will change + // a pathname from directory syntax (trailing separator) to filename syntax. + // + // On Windows this method also replaces the alternate path separator '/' with + // the primary path separator '\\', so that for example "bar\\/\\foo" becomes + // "bar\\foo". + + void Normalize(); + + // Returns a pointer to the last occurence of a valid path separator in + // the FilePath. On Windows, for example, both '/' and '\' are valid path + // separators. Returns NULL if no path separator was found. + const char* FindLastPathSeparator() const; + + std::string pathname_; +}; // class FilePath + +} // namespace internal +} // namespace testing + +#endif // GTEST_INCLUDE_GTEST_INTERNAL_GTEST_FILEPATH_H_ +// This file was GENERATED by command: +// pump.py gtest-type-util.h.pump +// DO NOT EDIT BY HAND!!! + +// Copyright 2008 Google Inc. +// All Rights Reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Author: wan@google.com (Zhanyong Wan) + +// Type utilities needed for implementing typed and type-parameterized +// tests. This file is generated by a SCRIPT. DO NOT EDIT BY HAND! +// +// Currently we support at most 50 types in a list, and at most 50 +// type-parameterized tests in one type-parameterized test case. +// Please contact googletestframework@googlegroups.com if you need +// more. + +#ifndef GTEST_INCLUDE_GTEST_INTERNAL_GTEST_TYPE_UTIL_H_ +#define GTEST_INCLUDE_GTEST_INTERNAL_GTEST_TYPE_UTIL_H_ + + +// #ifdef __GNUC__ is too general here. It is possible to use gcc without using +// libstdc++ (which is where cxxabi.h comes from). +# if GTEST_HAS_CXXABI_H_ +# include +# elif defined(__HP_aCC) +# include +# endif // GTEST_HASH_CXXABI_H_ + +namespace testing { +namespace internal { + +// GetTypeName() returns a human-readable name of type T. +// NB: This function is also used in Google Mock, so don't move it inside of +// the typed-test-only section below. +template +std::string GetTypeName() { +# if GTEST_HAS_RTTI + + const char* const name = typeid(T).name(); +# if GTEST_HAS_CXXABI_H_ || defined(__HP_aCC) + int status = 0; + // gcc's implementation of typeid(T).name() mangles the type name, + // so we have to demangle it. +# if GTEST_HAS_CXXABI_H_ + using abi::__cxa_demangle; +# endif // GTEST_HAS_CXXABI_H_ + char* const readable_name = __cxa_demangle(name, 0, 0, &status); + const std::string name_str(status == 0 ? readable_name : name); + free(readable_name); + return name_str; +# else + return name; +# endif // GTEST_HAS_CXXABI_H_ || __HP_aCC + +# else + + return ""; + +# endif // GTEST_HAS_RTTI +} + +#if GTEST_HAS_TYPED_TEST || GTEST_HAS_TYPED_TEST_P + +// AssertyTypeEq::type is defined iff T1 and T2 are the same +// type. This can be used as a compile-time assertion to ensure that +// two types are equal. + +template +struct AssertTypeEq; + +template +struct AssertTypeEq { + typedef bool type; +}; + +// A unique type used as the default value for the arguments of class +// template Types. This allows us to simulate variadic templates +// (e.g. Types, Type, and etc), which C++ doesn't +// support directly. +struct None {}; + +// The following family of struct and struct templates are used to +// represent type lists. In particular, TypesN +// represents a type list with N types (T1, T2, ..., and TN) in it. +// Except for Types0, every struct in the family has two member types: +// Head for the first type in the list, and Tail for the rest of the +// list. + +// The empty type list. +struct Types0 {}; + +// Type lists of length 1, 2, 3, and so on. + +template +struct Types1 { + typedef T1 Head; + typedef Types0 Tail; +}; +template +struct Types2 { + typedef T1 Head; + typedef Types1 Tail; +}; + +template +struct Types3 { + typedef T1 Head; + typedef Types2 Tail; +}; + +template +struct Types4 { + typedef T1 Head; + typedef Types3 Tail; +}; + +template +struct Types5 { + typedef T1 Head; + typedef Types4 Tail; +}; + +template +struct Types6 { + typedef T1 Head; + typedef Types5 Tail; +}; + +template +struct Types7 { + typedef T1 Head; + typedef Types6 Tail; +}; + +template +struct Types8 { + typedef T1 Head; + typedef Types7 Tail; +}; + +template +struct Types9 { + typedef T1 Head; + typedef Types8 Tail; +}; + +template +struct Types10 { + typedef T1 Head; + typedef Types9 Tail; +}; + +template +struct Types11 { + typedef T1 Head; + typedef Types10 Tail; +}; + +template +struct Types12 { + typedef T1 Head; + typedef Types11 Tail; +}; + +template +struct Types13 { + typedef T1 Head; + typedef Types12 Tail; +}; + +template +struct Types14 { + typedef T1 Head; + typedef Types13 Tail; +}; + +template +struct Types15 { + typedef T1 Head; + typedef Types14 Tail; +}; + +template +struct Types16 { + typedef T1 Head; + typedef Types15 Tail; +}; + +template +struct Types17 { + typedef T1 Head; + typedef Types16 Tail; +}; + +template +struct Types18 { + typedef T1 Head; + typedef Types17 Tail; +}; + +template +struct Types19 { + typedef T1 Head; + typedef Types18 Tail; +}; + +template +struct Types20 { + typedef T1 Head; + typedef Types19 Tail; +}; + +template +struct Types21 { + typedef T1 Head; + typedef Types20 Tail; +}; + +template +struct Types22 { + typedef T1 Head; + typedef Types21 Tail; +}; + +template +struct Types23 { + typedef T1 Head; + typedef Types22 Tail; +}; + +template +struct Types24 { + typedef T1 Head; + typedef Types23 Tail; +}; + +template +struct Types25 { + typedef T1 Head; + typedef Types24 Tail; +}; + +template +struct Types26 { + typedef T1 Head; + typedef Types25 Tail; +}; + +template +struct Types27 { + typedef T1 Head; + typedef Types26 Tail; +}; + +template +struct Types28 { + typedef T1 Head; + typedef Types27 Tail; +}; + +template +struct Types29 { + typedef T1 Head; + typedef Types28 Tail; +}; + +template +struct Types30 { + typedef T1 Head; + typedef Types29 Tail; +}; + +template +struct Types31 { + typedef T1 Head; + typedef Types30 Tail; +}; + +template +struct Types32 { + typedef T1 Head; + typedef Types31 Tail; +}; + +template +struct Types33 { + typedef T1 Head; + typedef Types32 Tail; +}; + +template +struct Types34 { + typedef T1 Head; + typedef Types33 Tail; +}; + +template +struct Types35 { + typedef T1 Head; + typedef Types34 Tail; +}; + +template +struct Types36 { + typedef T1 Head; + typedef Types35 Tail; +}; + +template +struct Types37 { + typedef T1 Head; + typedef Types36 Tail; +}; + +template +struct Types38 { + typedef T1 Head; + typedef Types37 Tail; +}; + +template +struct Types39 { + typedef T1 Head; + typedef Types38 Tail; +}; + +template +struct Types40 { + typedef T1 Head; + typedef Types39 Tail; +}; + +template +struct Types41 { + typedef T1 Head; + typedef Types40 Tail; +}; + +template +struct Types42 { + typedef T1 Head; + typedef Types41 Tail; +}; + +template +struct Types43 { + typedef T1 Head; + typedef Types42 Tail; +}; + +template +struct Types44 { + typedef T1 Head; + typedef Types43 Tail; +}; + +template +struct Types45 { + typedef T1 Head; + typedef Types44 Tail; +}; + +template +struct Types46 { + typedef T1 Head; + typedef Types45 Tail; +}; + +template +struct Types47 { + typedef T1 Head; + typedef Types46 Tail; +}; + +template +struct Types48 { + typedef T1 Head; + typedef Types47 Tail; +}; + +template +struct Types49 { + typedef T1 Head; + typedef Types48 Tail; +}; + +template +struct Types50 { + typedef T1 Head; + typedef Types49 Tail; +}; + + +} // namespace internal + +// We don't want to require the users to write TypesN<...> directly, +// as that would require them to count the length. Types<...> is much +// easier to write, but generates horrible messages when there is a +// compiler error, as gcc insists on printing out each template +// argument, even if it has the default value (this means Types +// will appear as Types in the compiler +// errors). +// +// Our solution is to combine the best part of the two approaches: a +// user would write Types, and Google Test will translate +// that to TypesN internally to make error messages +// readable. The translation is done by the 'type' member of the +// Types template. +template +struct Types { + typedef internal::Types50 type; +}; + +template <> +struct Types { + typedef internal::Types0 type; +}; +template +struct Types { + typedef internal::Types1 type; +}; +template +struct Types { + typedef internal::Types2 type; +}; +template +struct Types { + typedef internal::Types3 type; +}; +template +struct Types { + typedef internal::Types4 type; +}; +template +struct Types { + typedef internal::Types5 type; +}; +template +struct Types { + typedef internal::Types6 type; +}; +template +struct Types { + typedef internal::Types7 type; +}; +template +struct Types { + typedef internal::Types8 type; +}; +template +struct Types { + typedef internal::Types9 type; +}; +template +struct Types { + typedef internal::Types10 type; +}; +template +struct Types { + typedef internal::Types11 type; +}; +template +struct Types { + typedef internal::Types12 type; +}; +template +struct Types { + typedef internal::Types13 type; +}; +template +struct Types { + typedef internal::Types14 type; +}; +template +struct Types { + typedef internal::Types15 type; +}; +template +struct Types { + typedef internal::Types16 type; +}; +template +struct Types { + typedef internal::Types17 type; +}; +template +struct Types { + typedef internal::Types18 type; +}; +template +struct Types { + typedef internal::Types19 type; +}; +template +struct Types { + typedef internal::Types20 type; +}; +template +struct Types { + typedef internal::Types21 type; +}; +template +struct Types { + typedef internal::Types22 type; +}; +template +struct Types { + typedef internal::Types23 type; +}; +template +struct Types { + typedef internal::Types24 type; +}; +template +struct Types { + typedef internal::Types25 type; +}; +template +struct Types { + typedef internal::Types26 type; +}; +template +struct Types { + typedef internal::Types27 type; +}; +template +struct Types { + typedef internal::Types28 type; +}; +template +struct Types { + typedef internal::Types29 type; +}; +template +struct Types { + typedef internal::Types30 type; +}; +template +struct Types { + typedef internal::Types31 type; +}; +template +struct Types { + typedef internal::Types32 type; +}; +template +struct Types { + typedef internal::Types33 type; +}; +template +struct Types { + typedef internal::Types34 type; +}; +template +struct Types { + typedef internal::Types35 type; +}; +template +struct Types { + typedef internal::Types36 type; +}; +template +struct Types { + typedef internal::Types37 type; +}; +template +struct Types { + typedef internal::Types38 type; +}; +template +struct Types { + typedef internal::Types39 type; +}; +template +struct Types { + typedef internal::Types40 type; +}; +template +struct Types { + typedef internal::Types41 type; +}; +template +struct Types { + typedef internal::Types42 type; +}; +template +struct Types { + typedef internal::Types43 type; +}; +template +struct Types { + typedef internal::Types44 type; +}; +template +struct Types { + typedef internal::Types45 type; +}; +template +struct Types { + typedef internal::Types46 type; +}; +template +struct Types { + typedef internal::Types47 type; +}; +template +struct Types { + typedef internal::Types48 type; +}; +template +struct Types { + typedef internal::Types49 type; +}; + +namespace internal { + +# define GTEST_TEMPLATE_ template class + +// The template "selector" struct TemplateSel is used to +// represent Tmpl, which must be a class template with one type +// parameter, as a type. TemplateSel::Bind::type is defined +// as the type Tmpl. This allows us to actually instantiate the +// template "selected" by TemplateSel. +// +// This trick is necessary for simulating typedef for class templates, +// which C++ doesn't support directly. +template +struct TemplateSel { + template + struct Bind { + typedef Tmpl type; + }; +}; + +# define GTEST_BIND_(TmplSel, T) \ + TmplSel::template Bind::type + +// A unique struct template used as the default value for the +// arguments of class template Templates. This allows us to simulate +// variadic templates (e.g. Templates, Templates, +// and etc), which C++ doesn't support directly. +template +struct NoneT {}; + +// The following family of struct and struct templates are used to +// represent template lists. In particular, TemplatesN represents a list of N templates (T1, T2, ..., and TN). Except +// for Templates0, every struct in the family has two member types: +// Head for the selector of the first template in the list, and Tail +// for the rest of the list. + +// The empty template list. +struct Templates0 {}; + +// Template lists of length 1, 2, 3, and so on. + +template +struct Templates1 { + typedef TemplateSel Head; + typedef Templates0 Tail; +}; +template +struct Templates2 { + typedef TemplateSel Head; + typedef Templates1 Tail; +}; + +template +struct Templates3 { + typedef TemplateSel Head; + typedef Templates2 Tail; +}; + +template +struct Templates4 { + typedef TemplateSel Head; + typedef Templates3 Tail; +}; + +template +struct Templates5 { + typedef TemplateSel Head; + typedef Templates4 Tail; +}; + +template +struct Templates6 { + typedef TemplateSel Head; + typedef Templates5 Tail; +}; + +template +struct Templates7 { + typedef TemplateSel Head; + typedef Templates6 Tail; +}; + +template +struct Templates8 { + typedef TemplateSel Head; + typedef Templates7 Tail; +}; + +template +struct Templates9 { + typedef TemplateSel Head; + typedef Templates8 Tail; +}; + +template +struct Templates10 { + typedef TemplateSel Head; + typedef Templates9 Tail; +}; + +template +struct Templates11 { + typedef TemplateSel Head; + typedef Templates10 Tail; +}; + +template +struct Templates12 { + typedef TemplateSel Head; + typedef Templates11 Tail; +}; + +template +struct Templates13 { + typedef TemplateSel Head; + typedef Templates12 Tail; +}; + +template +struct Templates14 { + typedef TemplateSel Head; + typedef Templates13 Tail; +}; + +template +struct Templates15 { + typedef TemplateSel Head; + typedef Templates14 Tail; +}; + +template +struct Templates16 { + typedef TemplateSel Head; + typedef Templates15 Tail; +}; + +template +struct Templates17 { + typedef TemplateSel Head; + typedef Templates16 Tail; +}; + +template +struct Templates18 { + typedef TemplateSel Head; + typedef Templates17 Tail; +}; + +template +struct Templates19 { + typedef TemplateSel Head; + typedef Templates18 Tail; +}; + +template +struct Templates20 { + typedef TemplateSel Head; + typedef Templates19 Tail; +}; + +template +struct Templates21 { + typedef TemplateSel Head; + typedef Templates20 Tail; +}; + +template +struct Templates22 { + typedef TemplateSel Head; + typedef Templates21 Tail; +}; + +template +struct Templates23 { + typedef TemplateSel Head; + typedef Templates22 Tail; +}; + +template +struct Templates24 { + typedef TemplateSel Head; + typedef Templates23 Tail; +}; + +template +struct Templates25 { + typedef TemplateSel Head; + typedef Templates24 Tail; +}; + +template +struct Templates26 { + typedef TemplateSel Head; + typedef Templates25 Tail; +}; + +template +struct Templates27 { + typedef TemplateSel Head; + typedef Templates26 Tail; +}; + +template +struct Templates28 { + typedef TemplateSel Head; + typedef Templates27 Tail; +}; + +template +struct Templates29 { + typedef TemplateSel Head; + typedef Templates28 Tail; +}; + +template +struct Templates30 { + typedef TemplateSel Head; + typedef Templates29 Tail; +}; + +template +struct Templates31 { + typedef TemplateSel Head; + typedef Templates30 Tail; +}; + +template +struct Templates32 { + typedef TemplateSel Head; + typedef Templates31 Tail; +}; + +template +struct Templates33 { + typedef TemplateSel Head; + typedef Templates32 Tail; +}; + +template +struct Templates34 { + typedef TemplateSel Head; + typedef Templates33 Tail; +}; + +template +struct Templates35 { + typedef TemplateSel Head; + typedef Templates34 Tail; +}; + +template +struct Templates36 { + typedef TemplateSel Head; + typedef Templates35 Tail; +}; + +template +struct Templates37 { + typedef TemplateSel Head; + typedef Templates36 Tail; +}; + +template +struct Templates38 { + typedef TemplateSel Head; + typedef Templates37 Tail; +}; + +template +struct Templates39 { + typedef TemplateSel Head; + typedef Templates38 Tail; +}; + +template +struct Templates40 { + typedef TemplateSel Head; + typedef Templates39 Tail; +}; + +template +struct Templates41 { + typedef TemplateSel Head; + typedef Templates40 Tail; +}; + +template +struct Templates42 { + typedef TemplateSel Head; + typedef Templates41 Tail; +}; + +template +struct Templates43 { + typedef TemplateSel Head; + typedef Templates42 Tail; +}; + +template +struct Templates44 { + typedef TemplateSel Head; + typedef Templates43 Tail; +}; + +template +struct Templates45 { + typedef TemplateSel Head; + typedef Templates44 Tail; +}; + +template +struct Templates46 { + typedef TemplateSel Head; + typedef Templates45 Tail; +}; + +template +struct Templates47 { + typedef TemplateSel Head; + typedef Templates46 Tail; +}; + +template +struct Templates48 { + typedef TemplateSel Head; + typedef Templates47 Tail; +}; + +template +struct Templates49 { + typedef TemplateSel Head; + typedef Templates48 Tail; +}; + +template +struct Templates50 { + typedef TemplateSel Head; + typedef Templates49 Tail; +}; + + +// We don't want to require the users to write TemplatesN<...> directly, +// as that would require them to count the length. Templates<...> is much +// easier to write, but generates horrible messages when there is a +// compiler error, as gcc insists on printing out each template +// argument, even if it has the default value (this means Templates +// will appear as Templates in the compiler +// errors). +// +// Our solution is to combine the best part of the two approaches: a +// user would write Templates, and Google Test will translate +// that to TemplatesN internally to make error messages +// readable. The translation is done by the 'type' member of the +// Templates template. +template +struct Templates { + typedef Templates50 type; +}; + +template <> +struct Templates { + typedef Templates0 type; +}; +template +struct Templates { + typedef Templates1 type; +}; +template +struct Templates { + typedef Templates2 type; +}; +template +struct Templates { + typedef Templates3 type; +}; +template +struct Templates { + typedef Templates4 type; +}; +template +struct Templates { + typedef Templates5 type; +}; +template +struct Templates { + typedef Templates6 type; +}; +template +struct Templates { + typedef Templates7 type; +}; +template +struct Templates { + typedef Templates8 type; +}; +template +struct Templates { + typedef Templates9 type; +}; +template +struct Templates { + typedef Templates10 type; +}; +template +struct Templates { + typedef Templates11 type; +}; +template +struct Templates { + typedef Templates12 type; +}; +template +struct Templates { + typedef Templates13 type; +}; +template +struct Templates { + typedef Templates14 type; +}; +template +struct Templates { + typedef Templates15 type; +}; +template +struct Templates { + typedef Templates16 type; +}; +template +struct Templates { + typedef Templates17 type; +}; +template +struct Templates { + typedef Templates18 type; +}; +template +struct Templates { + typedef Templates19 type; +}; +template +struct Templates { + typedef Templates20 type; +}; +template +struct Templates { + typedef Templates21 type; +}; +template +struct Templates { + typedef Templates22 type; +}; +template +struct Templates { + typedef Templates23 type; +}; +template +struct Templates { + typedef Templates24 type; +}; +template +struct Templates { + typedef Templates25 type; +}; +template +struct Templates { + typedef Templates26 type; +}; +template +struct Templates { + typedef Templates27 type; +}; +template +struct Templates { + typedef Templates28 type; +}; +template +struct Templates { + typedef Templates29 type; +}; +template +struct Templates { + typedef Templates30 type; +}; +template +struct Templates { + typedef Templates31 type; +}; +template +struct Templates { + typedef Templates32 type; +}; +template +struct Templates { + typedef Templates33 type; +}; +template +struct Templates { + typedef Templates34 type; +}; +template +struct Templates { + typedef Templates35 type; +}; +template +struct Templates { + typedef Templates36 type; +}; +template +struct Templates { + typedef Templates37 type; +}; +template +struct Templates { + typedef Templates38 type; +}; +template +struct Templates { + typedef Templates39 type; +}; +template +struct Templates { + typedef Templates40 type; +}; +template +struct Templates { + typedef Templates41 type; +}; +template +struct Templates { + typedef Templates42 type; +}; +template +struct Templates { + typedef Templates43 type; +}; +template +struct Templates { + typedef Templates44 type; +}; +template +struct Templates { + typedef Templates45 type; +}; +template +struct Templates { + typedef Templates46 type; +}; +template +struct Templates { + typedef Templates47 type; +}; +template +struct Templates { + typedef Templates48 type; +}; +template +struct Templates { + typedef Templates49 type; +}; + +// The TypeList template makes it possible to use either a single type +// or a Types<...> list in TYPED_TEST_CASE() and +// INSTANTIATE_TYPED_TEST_CASE_P(). + +template +struct TypeList { + typedef Types1 type; +}; + +template +struct TypeList > { + typedef typename Types::type type; +}; + +#endif // GTEST_HAS_TYPED_TEST || GTEST_HAS_TYPED_TEST_P + +} // namespace internal +} // namespace testing + +#endif // GTEST_INCLUDE_GTEST_INTERNAL_GTEST_TYPE_UTIL_H_ + +// Due to C++ preprocessor weirdness, we need double indirection to +// concatenate two tokens when one of them is __LINE__. Writing +// +// foo ## __LINE__ +// +// will result in the token foo__LINE__, instead of foo followed by +// the current line number. For more details, see +// http://www.parashift.com/c++-faq-lite/misc-technical-issues.html#faq-39.6 +#define GTEST_CONCAT_TOKEN_(foo, bar) GTEST_CONCAT_TOKEN_IMPL_(foo, bar) +#define GTEST_CONCAT_TOKEN_IMPL_(foo, bar) foo ## bar + +// Google Test defines the testing::Message class to allow construction of +// test messages via the << operator. The idea is that anything +// streamable to std::ostream can be streamed to a testing::Message. +// This allows a user to use his own types in Google Test assertions by +// overloading the << operator. +// +// util/gtl/stl_logging.h overloads << for STL containers. These +// overloads cannot be defined in the std namespace, as that will be +// undefined behavior. Therefore, they are defined in the global +// namespace instead. +// +// C++'s symbol lookup rule (i.e. Koenig lookup) says that these +// overloads are visible in either the std namespace or the global +// namespace, but not other namespaces, including the testing +// namespace which Google Test's Message class is in. +// +// To allow STL containers (and other types that has a << operator +// defined in the global namespace) to be used in Google Test assertions, +// testing::Message must access the custom << operator from the global +// namespace. Hence this helper function. +// +// Note: Jeffrey Yasskin suggested an alternative fix by "using +// ::operator<<;" in the definition of Message's operator<<. That fix +// doesn't require a helper function, but unfortunately doesn't +// compile with MSVC. +template +inline void GTestStreamToHelper(std::ostream* os, const T& val) { + *os << val; +} + +class ProtocolMessage; +namespace proto2 { class Message; } + +namespace testing { + +// Forward declarations. + +class AssertionResult; // Result of an assertion. +class Message; // Represents a failure message. +class Test; // Represents a test. +class TestInfo; // Information about a test. +class TestPartResult; // Result of a test part. +class UnitTest; // A collection of test cases. + +template +::std::string PrintToString(const T& value); + +namespace internal { + +struct TraceInfo; // Information about a trace point. +class ScopedTrace; // Implements scoped trace. +class TestInfoImpl; // Opaque implementation of TestInfo +class UnitTestImpl; // Opaque implementation of UnitTest + +// How many times InitGoogleTest() has been called. +GTEST_API_ extern int g_init_gtest_count; + +// The text used in failure messages to indicate the start of the +// stack trace. +GTEST_API_ extern const char kStackTraceMarker[]; + +// A secret type that Google Test users don't know about. It has no +// definition on purpose. Therefore it's impossible to create a +// Secret object, which is what we want. +class Secret; + +// Two overloaded helpers for checking at compile time whether an +// expression is a null pointer literal (i.e. NULL or any 0-valued +// compile-time integral constant). Their return values have +// different sizes, so we can use sizeof() to test which version is +// picked by the compiler. These helpers have no implementations, as +// we only need their signatures. +// +// Given IsNullLiteralHelper(x), the compiler will pick the first +// version if x can be implicitly converted to Secret*, and pick the +// second version otherwise. Since Secret is a secret and incomplete +// type, the only expression a user can write that has type Secret* is +// a null pointer literal. Therefore, we know that x is a null +// pointer literal if and only if the first version is picked by the +// compiler. +char IsNullLiteralHelper(Secret* p); +char (&IsNullLiteralHelper(...))[2]; // NOLINT + +// A compile-time bool constant that is true if and only if x is a +// null pointer literal (i.e. NULL or any 0-valued compile-time +// integral constant). +#ifdef GTEST_ELLIPSIS_NEEDS_POD_ +// We lose support for NULL detection where the compiler doesn't like +// passing non-POD classes through ellipsis (...). +# define GTEST_IS_NULL_LITERAL_(x) false +#else +# define GTEST_IS_NULL_LITERAL_(x) \ + (sizeof(::testing::internal::IsNullLiteralHelper(x)) == 1) +#endif // GTEST_ELLIPSIS_NEEDS_POD_ + +// Appends the user-supplied message to the Google-Test-generated message. +GTEST_API_ std::string AppendUserMessage( + const std::string& gtest_msg, const Message& user_msg); + +// A helper class for creating scoped traces in user programs. +class GTEST_API_ ScopedTrace { + public: + // The c'tor pushes the given source file location and message onto + // a trace stack maintained by Google Test. + ScopedTrace(const char* file, int line, const Message& message); + + // The d'tor pops the info pushed by the c'tor. + // + // Note that the d'tor is not virtual in order to be efficient. + // Don't inherit from ScopedTrace! + ~ScopedTrace(); + + private: + GTEST_DISALLOW_COPY_AND_ASSIGN_(ScopedTrace); +} GTEST_ATTRIBUTE_UNUSED_; // A ScopedTrace object does its job in its + // c'tor and d'tor. Therefore it doesn't + // need to be used otherwise. + +// Converts a streamable value to an std::string. A NULL pointer is +// converted to "(null)". When the input value is a ::string, +// ::std::string, ::wstring, or ::std::wstring object, each NUL +// character in it is replaced with "\\0". +// Declared here but defined in gtest.h, so that it has access +// to the definition of the Message class, required by the ARM +// compiler. +template +std::string StreamableToString(const T& streamable); + +// Constructs and returns the message for an equality assertion +// (e.g. ASSERT_EQ, EXPECT_STREQ, etc) failure. +// +// The first four parameters are the expressions used in the assertion +// and their values, as strings. For example, for ASSERT_EQ(foo, bar) +// where foo is 5 and bar is 6, we have: +// +// expected_expression: "foo" +// actual_expression: "bar" +// expected_value: "5" +// actual_value: "6" +// +// The ignoring_case parameter is true iff the assertion is a +// *_STRCASEEQ*. When it's true, the string " (ignoring case)" will +// be inserted into the message. +GTEST_API_ AssertionResult EqFailure(const char* expected_expression, + const char* actual_expression, + const std::string& expected_value, + const std::string& actual_value, + bool ignoring_case); + +// Constructs a failure message for Boolean assertions such as EXPECT_TRUE. +GTEST_API_ std::string GetBoolAssertionFailureMessage( + const AssertionResult& assertion_result, + const char* expression_text, + const char* actual_predicate_value, + const char* expected_predicate_value); + +// This template class represents an IEEE floating-point number +// (either single-precision or double-precision, depending on the +// template parameters). +// +// The purpose of this class is to do more sophisticated number +// comparison. (Due to round-off error, etc, it's very unlikely that +// two floating-points will be equal exactly. Hence a naive +// comparison by the == operation often doesn't work.) +// +// Format of IEEE floating-point: +// +// The most-significant bit being the leftmost, an IEEE +// floating-point looks like +// +// sign_bit exponent_bits fraction_bits +// +// Here, sign_bit is a single bit that designates the sign of the +// number. +// +// For float, there are 8 exponent bits and 23 fraction bits. +// +// For double, there are 11 exponent bits and 52 fraction bits. +// +// More details can be found at +// http://en.wikipedia.org/wiki/IEEE_floating-point_standard. +// +// Template parameter: +// +// RawType: the raw floating-point type (either float or double) +template +class FloatingPoint { + public: + // Defines the unsigned integer type that has the same size as the + // floating point number. + typedef typename TypeWithSize::UInt Bits; + + // Constants. + + // # of bits in a number. + static const size_t kBitCount = 8*sizeof(RawType); + + // # of fraction bits in a number. + static const size_t kFractionBitCount = + std::numeric_limits::digits - 1; + + // # of exponent bits in a number. + static const size_t kExponentBitCount = kBitCount - 1 - kFractionBitCount; + + // The mask for the sign bit. + static const Bits kSignBitMask = static_cast(1) << (kBitCount - 1); + + // The mask for the fraction bits. + static const Bits kFractionBitMask = + ~static_cast(0) >> (kExponentBitCount + 1); + + // The mask for the exponent bits. + static const Bits kExponentBitMask = ~(kSignBitMask | kFractionBitMask); + + // How many ULP's (Units in the Last Place) we want to tolerate when + // comparing two numbers. The larger the value, the more error we + // allow. A 0 value means that two numbers must be exactly the same + // to be considered equal. + // + // The maximum error of a single floating-point operation is 0.5 + // units in the last place. On Intel CPU's, all floating-point + // calculations are done with 80-bit precision, while double has 64 + // bits. Therefore, 4 should be enough for ordinary use. + // + // See the following article for more details on ULP: + // http://www.cygnus-software.com/papers/comparingfloats/comparingfloats.htm. + static const size_t kMaxUlps = 4; + + // Constructs a FloatingPoint from a raw floating-point number. + // + // On an Intel CPU, passing a non-normalized NAN (Not a Number) + // around may change its bits, although the new value is guaranteed + // to be also a NAN. Therefore, don't expect this constructor to + // preserve the bits in x when x is a NAN. + explicit FloatingPoint(const RawType& x) { u_.value_ = x; } + + // Static methods + + // Reinterprets a bit pattern as a floating-point number. + // + // This function is needed to test the AlmostEquals() method. + static RawType ReinterpretBits(const Bits bits) { + FloatingPoint fp(0); + fp.u_.bits_ = bits; + return fp.u_.value_; + } + + // Returns the floating-point number that represent positive infinity. + static RawType Infinity() { + return ReinterpretBits(kExponentBitMask); + } + + // Non-static methods + + // Returns the bits that represents this number. + const Bits &bits() const { return u_.bits_; } + + // Returns the exponent bits of this number. + Bits exponent_bits() const { return kExponentBitMask & u_.bits_; } + + // Returns the fraction bits of this number. + Bits fraction_bits() const { return kFractionBitMask & u_.bits_; } + + // Returns the sign bit of this number. + Bits sign_bit() const { return kSignBitMask & u_.bits_; } + + // Returns true iff this is NAN (not a number). + bool is_nan() const { + // It's a NAN if the exponent bits are all ones and the fraction + // bits are not entirely zeros. + return (exponent_bits() == kExponentBitMask) && (fraction_bits() != 0); + } + + // Returns true iff this number is at most kMaxUlps ULP's away from + // rhs. In particular, this function: + // + // - returns false if either number is (or both are) NAN. + // - treats really large numbers as almost equal to infinity. + // - thinks +0.0 and -0.0 are 0 DLP's apart. + bool AlmostEquals(const FloatingPoint& rhs) const { + // The IEEE standard says that any comparison operation involving + // a NAN must return false. + if (is_nan() || rhs.is_nan()) return false; + + return DistanceBetweenSignAndMagnitudeNumbers(u_.bits_, rhs.u_.bits_) + <= kMaxUlps; + } + + private: + // The data type used to store the actual floating-point number. + union FloatingPointUnion { + RawType value_; // The raw floating-point number. + Bits bits_; // The bits that represent the number. + }; + + // Converts an integer from the sign-and-magnitude representation to + // the biased representation. More precisely, let N be 2 to the + // power of (kBitCount - 1), an integer x is represented by the + // unsigned number x + N. + // + // For instance, + // + // -N + 1 (the most negative number representable using + // sign-and-magnitude) is represented by 1; + // 0 is represented by N; and + // N - 1 (the biggest number representable using + // sign-and-magnitude) is represented by 2N - 1. + // + // Read http://en.wikipedia.org/wiki/Signed_number_representations + // for more details on signed number representations. + static Bits SignAndMagnitudeToBiased(const Bits &sam) { + if (kSignBitMask & sam) { + // sam represents a negative number. + return ~sam + 1; + } else { + // sam represents a positive number. + return kSignBitMask | sam; + } + } + + // Given two numbers in the sign-and-magnitude representation, + // returns the distance between them as an unsigned number. + static Bits DistanceBetweenSignAndMagnitudeNumbers(const Bits &sam1, + const Bits &sam2) { + const Bits biased1 = SignAndMagnitudeToBiased(sam1); + const Bits biased2 = SignAndMagnitudeToBiased(sam2); + return (biased1 >= biased2) ? (biased1 - biased2) : (biased2 - biased1); + } + + FloatingPointUnion u_; +}; + +// Typedefs the instances of the FloatingPoint template class that we +// care to use. +typedef FloatingPoint Float; +typedef FloatingPoint Double; + +// In order to catch the mistake of putting tests that use different +// test fixture classes in the same test case, we need to assign +// unique IDs to fixture classes and compare them. The TypeId type is +// used to hold such IDs. The user should treat TypeId as an opaque +// type: the only operation allowed on TypeId values is to compare +// them for equality using the == operator. +typedef const void* TypeId; + +template +class TypeIdHelper { + public: + // dummy_ must not have a const type. Otherwise an overly eager + // compiler (e.g. MSVC 7.1 & 8.0) may try to merge + // TypeIdHelper::dummy_ for different Ts as an "optimization". + static bool dummy_; +}; + +template +bool TypeIdHelper::dummy_ = false; + +// GetTypeId() returns the ID of type T. Different values will be +// returned for different types. Calling the function twice with the +// same type argument is guaranteed to return the same ID. +template +TypeId GetTypeId() { + // The compiler is required to allocate a different + // TypeIdHelper::dummy_ variable for each T used to instantiate + // the template. Therefore, the address of dummy_ is guaranteed to + // be unique. + return &(TypeIdHelper::dummy_); +} + +// Returns the type ID of ::testing::Test. Always call this instead +// of GetTypeId< ::testing::Test>() to get the type ID of +// ::testing::Test, as the latter may give the wrong result due to a +// suspected linker bug when compiling Google Test as a Mac OS X +// framework. +GTEST_API_ TypeId GetTestTypeId(); + +// Defines the abstract factory interface that creates instances +// of a Test object. +class TestFactoryBase { + public: + virtual ~TestFactoryBase() {} + + // Creates a test instance to run. The instance is both created and destroyed + // within TestInfoImpl::Run() + virtual Test* CreateTest() = 0; + + protected: + TestFactoryBase() {} + + private: + GTEST_DISALLOW_COPY_AND_ASSIGN_(TestFactoryBase); +}; + +// This class provides implementation of TeastFactoryBase interface. +// It is used in TEST and TEST_F macros. +template +class TestFactoryImpl : public TestFactoryBase { + public: + virtual Test* CreateTest() { return new TestClass; } +}; + +#if GTEST_OS_WINDOWS + +// Predicate-formatters for implementing the HRESULT checking macros +// {ASSERT|EXPECT}_HRESULT_{SUCCEEDED|FAILED} +// We pass a long instead of HRESULT to avoid causing an +// include dependency for the HRESULT type. +GTEST_API_ AssertionResult IsHRESULTSuccess(const char* expr, + long hr); // NOLINT +GTEST_API_ AssertionResult IsHRESULTFailure(const char* expr, + long hr); // NOLINT + +#endif // GTEST_OS_WINDOWS + +// Types of SetUpTestCase() and TearDownTestCase() functions. +typedef void (*SetUpTestCaseFunc)(); +typedef void (*TearDownTestCaseFunc)(); + +// Creates a new TestInfo object and registers it with Google Test; +// returns the created object. +// +// Arguments: +// +// test_case_name: name of the test case +// name: name of the test +// type_param the name of the test's type parameter, or NULL if +// this is not a typed or a type-parameterized test. +// value_param text representation of the test's value parameter, +// or NULL if this is not a type-parameterized test. +// fixture_class_id: ID of the test fixture class +// set_up_tc: pointer to the function that sets up the test case +// tear_down_tc: pointer to the function that tears down the test case +// factory: pointer to the factory that creates a test object. +// The newly created TestInfo instance will assume +// ownership of the factory object. +GTEST_API_ TestInfo* MakeAndRegisterTestInfo( + const char* test_case_name, const char* name, + const char* type_param, + const char* value_param, + TypeId fixture_class_id, + SetUpTestCaseFunc set_up_tc, + TearDownTestCaseFunc tear_down_tc, + TestFactoryBase* factory); + +// If *pstr starts with the given prefix, modifies *pstr to be right +// past the prefix and returns true; otherwise leaves *pstr unchanged +// and returns false. None of pstr, *pstr, and prefix can be NULL. +GTEST_API_ bool SkipPrefix(const char* prefix, const char** pstr); + +#if GTEST_HAS_TYPED_TEST || GTEST_HAS_TYPED_TEST_P + +// State of the definition of a type-parameterized test case. +class GTEST_API_ TypedTestCasePState { + public: + TypedTestCasePState() : registered_(false) {} + + // Adds the given test name to defined_test_names_ and return true + // if the test case hasn't been registered; otherwise aborts the + // program. + bool AddTestName(const char* file, int line, const char* case_name, + const char* test_name) { + if (registered_) { + fprintf(stderr, "%s Test %s must be defined before " + "REGISTER_TYPED_TEST_CASE_P(%s, ...).\n", + FormatFileLocation(file, line).c_str(), test_name, case_name); + fflush(stderr); + posix::Abort(); + } + defined_test_names_.insert(test_name); + return true; + } + + // Verifies that registered_tests match the test names in + // defined_test_names_; returns registered_tests if successful, or + // aborts the program otherwise. + const char* VerifyRegisteredTestNames( + const char* file, int line, const char* registered_tests); + + private: + bool registered_; + ::std::set defined_test_names_; +}; + +// Skips to the first non-space char after the first comma in 'str'; +// returns NULL if no comma is found in 'str'. +inline const char* SkipComma(const char* str) { + const char* comma = strchr(str, ','); + if (comma == NULL) { + return NULL; + } + while (IsSpace(*(++comma))) {} + return comma; +} + +// Returns the prefix of 'str' before the first comma in it; returns +// the entire string if it contains no comma. +inline std::string GetPrefixUntilComma(const char* str) { + const char* comma = strchr(str, ','); + return comma == NULL ? str : std::string(str, comma); +} + +// TypeParameterizedTest::Register() +// registers a list of type-parameterized tests with Google Test. The +// return value is insignificant - we just need to return something +// such that we can call this function in a namespace scope. +// +// Implementation note: The GTEST_TEMPLATE_ macro declares a template +// template parameter. It's defined in gtest-type-util.h. +template +class TypeParameterizedTest { + public: + // 'index' is the index of the test in the type list 'Types' + // specified in INSTANTIATE_TYPED_TEST_CASE_P(Prefix, TestCase, + // Types). Valid values for 'index' are [0, N - 1] where N is the + // length of Types. + static bool Register(const char* prefix, const char* case_name, + const char* test_names, int index) { + typedef typename Types::Head Type; + typedef Fixture FixtureClass; + typedef typename GTEST_BIND_(TestSel, Type) TestClass; + + // First, registers the first type-parameterized test in the type + // list. + MakeAndRegisterTestInfo( + String::Format("%s%s%s/%d", prefix, prefix[0] == '\0' ? "" : "/", + case_name, index).c_str(), + GetPrefixUntilComma(test_names).c_str(), + GetTypeName().c_str(), + NULL, // No value parameter. + GetTypeId(), + TestClass::SetUpTestCase, + TestClass::TearDownTestCase, + new TestFactoryImpl); + + // Next, recurses (at compile time) with the tail of the type list. + return TypeParameterizedTest + ::Register(prefix, case_name, test_names, index + 1); + } +}; + +// The base case for the compile time recursion. +template +class TypeParameterizedTest { + public: + static bool Register(const char* /*prefix*/, const char* /*case_name*/, + const char* /*test_names*/, int /*index*/) { + return true; + } +}; + +// TypeParameterizedTestCase::Register() +// registers *all combinations* of 'Tests' and 'Types' with Google +// Test. The return value is insignificant - we just need to return +// something such that we can call this function in a namespace scope. +template +class TypeParameterizedTestCase { + public: + static bool Register(const char* prefix, const char* case_name, + const char* test_names) { + typedef typename Tests::Head Head; + + // First, register the first test in 'Test' for each type in 'Types'. + TypeParameterizedTest::Register( + prefix, case_name, test_names, 0); + + // Next, recurses (at compile time) with the tail of the test list. + return TypeParameterizedTestCase + ::Register(prefix, case_name, SkipComma(test_names)); + } +}; + +// The base case for the compile time recursion. +template +class TypeParameterizedTestCase { + public: + static bool Register(const char* /*prefix*/, const char* /*case_name*/, + const char* /*test_names*/) { + return true; + } +}; + +#endif // GTEST_HAS_TYPED_TEST || GTEST_HAS_TYPED_TEST_P + +// Returns the current OS stack trace as an std::string. +// +// The maximum number of stack frames to be included is specified by +// the gtest_stack_trace_depth flag. The skip_count parameter +// specifies the number of top frames to be skipped, which doesn't +// count against the number of frames to be included. +// +// For example, if Foo() calls Bar(), which in turn calls +// GetCurrentOsStackTraceExceptTop(..., 1), Foo() will be included in +// the trace but Bar() and GetCurrentOsStackTraceExceptTop() won't. +GTEST_API_ std::string GetCurrentOsStackTraceExceptTop( + UnitTest* unit_test, int skip_count); + +// Helpers for suppressing warnings on unreachable code or constant +// condition. + +// Always returns true. +GTEST_API_ bool AlwaysTrue(); + +// Always returns false. +inline bool AlwaysFalse() { return !AlwaysTrue(); } + +// Helper for suppressing false warning from Clang on a const char* +// variable declared in a conditional expression always being NULL in +// the else branch. +struct GTEST_API_ ConstCharPtr { + ConstCharPtr(const char* str) : value(str) {} + operator bool() const { return true; } + const char* value; +}; + +// A simple Linear Congruential Generator for generating random +// numbers with a uniform distribution. Unlike rand() and srand(), it +// doesn't use global state (and therefore can't interfere with user +// code). Unlike rand_r(), it's portable. An LCG isn't very random, +// but it's good enough for our purposes. +class GTEST_API_ Random { + public: + static const UInt32 kMaxRange = 1u << 31; + + explicit Random(UInt32 seed) : state_(seed) {} + + void Reseed(UInt32 seed) { state_ = seed; } + + // Generates a random number from [0, range). Crashes if 'range' is + // 0 or greater than kMaxRange. + UInt32 Generate(UInt32 range); + + private: + UInt32 state_; + GTEST_DISALLOW_COPY_AND_ASSIGN_(Random); +}; + +// Defining a variable of type CompileAssertTypesEqual will cause a +// compiler error iff T1 and T2 are different types. +template +struct CompileAssertTypesEqual; + +template +struct CompileAssertTypesEqual { +}; + +// Removes the reference from a type if it is a reference type, +// otherwise leaves it unchanged. This is the same as +// tr1::remove_reference, which is not widely available yet. +template +struct RemoveReference { typedef T type; }; // NOLINT +template +struct RemoveReference { typedef T type; }; // NOLINT + +// A handy wrapper around RemoveReference that works when the argument +// T depends on template parameters. +#define GTEST_REMOVE_REFERENCE_(T) \ + typename ::testing::internal::RemoveReference::type + +// Removes const from a type if it is a const type, otherwise leaves +// it unchanged. This is the same as tr1::remove_const, which is not +// widely available yet. +template +struct RemoveConst { typedef T type; }; // NOLINT +template +struct RemoveConst { typedef T type; }; // NOLINT + +// MSVC 8.0, Sun C++, and IBM XL C++ have a bug which causes the above +// definition to fail to remove the const in 'const int[3]' and 'const +// char[3][4]'. The following specialization works around the bug. +template +struct RemoveConst { + typedef typename RemoveConst::type type[N]; +}; + +#if defined(_MSC_VER) && _MSC_VER < 1400 +// This is the only specialization that allows VC++ 7.1 to remove const in +// 'const int[3] and 'const int[3][4]'. However, it causes trouble with GCC +// and thus needs to be conditionally compiled. +template +struct RemoveConst { + typedef typename RemoveConst::type type[N]; +}; +#endif + +// A handy wrapper around RemoveConst that works when the argument +// T depends on template parameters. +#define GTEST_REMOVE_CONST_(T) \ + typename ::testing::internal::RemoveConst::type + +// Turns const U&, U&, const U, and U all into U. +#define GTEST_REMOVE_REFERENCE_AND_CONST_(T) \ + GTEST_REMOVE_CONST_(GTEST_REMOVE_REFERENCE_(T)) + +// Adds reference to a type if it is not a reference type, +// otherwise leaves it unchanged. This is the same as +// tr1::add_reference, which is not widely available yet. +template +struct AddReference { typedef T& type; }; // NOLINT +template +struct AddReference { typedef T& type; }; // NOLINT + +// A handy wrapper around AddReference that works when the argument T +// depends on template parameters. +#define GTEST_ADD_REFERENCE_(T) \ + typename ::testing::internal::AddReference::type + +// Adds a reference to const on top of T as necessary. For example, +// it transforms +// +// char ==> const char& +// const char ==> const char& +// char& ==> const char& +// const char& ==> const char& +// +// The argument T must depend on some template parameters. +#define GTEST_REFERENCE_TO_CONST_(T) \ + GTEST_ADD_REFERENCE_(const GTEST_REMOVE_REFERENCE_(T)) + +// ImplicitlyConvertible::value is a compile-time bool +// constant that's true iff type From can be implicitly converted to +// type To. +template +class ImplicitlyConvertible { + private: + // We need the following helper functions only for their types. + // They have no implementations. + + // MakeFrom() is an expression whose type is From. We cannot simply + // use From(), as the type From may not have a public default + // constructor. + static From MakeFrom(); + + // These two functions are overloaded. Given an expression + // Helper(x), the compiler will pick the first version if x can be + // implicitly converted to type To; otherwise it will pick the + // second version. + // + // The first version returns a value of size 1, and the second + // version returns a value of size 2. Therefore, by checking the + // size of Helper(x), which can be done at compile time, we can tell + // which version of Helper() is used, and hence whether x can be + // implicitly converted to type To. + static char Helper(To); + static char (&Helper(...))[2]; // NOLINT + + // We have to put the 'public' section after the 'private' section, + // or MSVC refuses to compile the code. + public: + // MSVC warns about implicitly converting from double to int for + // possible loss of data, so we need to temporarily disable the + // warning. +#ifdef _MSC_VER +# pragma warning(push) // Saves the current warning state. +# pragma warning(disable:4244) // Temporarily disables warning 4244. + + static const bool value = + sizeof(Helper(ImplicitlyConvertible::MakeFrom())) == 1; +# pragma warning(pop) // Restores the warning state. +#elif defined(__BORLANDC__) + // C++Builder cannot use member overload resolution during template + // instantiation. The simplest workaround is to use its C++0x type traits + // functions (C++Builder 2009 and above only). + static const bool value = __is_convertible(From, To); +#else + static const bool value = + sizeof(Helper(ImplicitlyConvertible::MakeFrom())) == 1; +#endif // _MSV_VER +}; +template +const bool ImplicitlyConvertible::value; + +// IsAProtocolMessage::value is a compile-time bool constant that's +// true iff T is type ProtocolMessage, proto2::Message, or a subclass +// of those. +template +struct IsAProtocolMessage + : public bool_constant< + ImplicitlyConvertible::value || + ImplicitlyConvertible::value> { +}; + +// When the compiler sees expression IsContainerTest(0), if C is an +// STL-style container class, the first overload of IsContainerTest +// will be viable (since both C::iterator* and C::const_iterator* are +// valid types and NULL can be implicitly converted to them). It will +// be picked over the second overload as 'int' is a perfect match for +// the type of argument 0. If C::iterator or C::const_iterator is not +// a valid type, the first overload is not viable, and the second +// overload will be picked. Therefore, we can determine whether C is +// a container class by checking the type of IsContainerTest(0). +// The value of the expression is insignificant. +// +// Note that we look for both C::iterator and C::const_iterator. The +// reason is that C++ injects the name of a class as a member of the +// class itself (e.g. you can refer to class iterator as either +// 'iterator' or 'iterator::iterator'). If we look for C::iterator +// only, for example, we would mistakenly think that a class named +// iterator is an STL container. +// +// Also note that the simpler approach of overloading +// IsContainerTest(typename C::const_iterator*) and +// IsContainerTest(...) doesn't work with Visual Age C++ and Sun C++. +typedef int IsContainer; +template +IsContainer IsContainerTest(int /* dummy */, + typename C::iterator* /* it */ = NULL, + typename C::const_iterator* /* const_it */ = NULL) { + return 0; +} + +typedef char IsNotContainer; +template +IsNotContainer IsContainerTest(long /* dummy */) { return '\0'; } + +// EnableIf::type is void when 'Cond' is true, and +// undefined when 'Cond' is false. To use SFINAE to make a function +// overload only apply when a particular expression is true, add +// "typename EnableIf::type* = 0" as the last parameter. +template struct EnableIf; +template<> struct EnableIf { typedef void type; }; // NOLINT + +// Utilities for native arrays. + +// ArrayEq() compares two k-dimensional native arrays using the +// elements' operator==, where k can be any integer >= 0. When k is +// 0, ArrayEq() degenerates into comparing a single pair of values. + +template +bool ArrayEq(const T* lhs, size_t size, const U* rhs); + +// This generic version is used when k is 0. +template +inline bool ArrayEq(const T& lhs, const U& rhs) { return lhs == rhs; } + +// This overload is used when k >= 1. +template +inline bool ArrayEq(const T(&lhs)[N], const U(&rhs)[N]) { + return internal::ArrayEq(lhs, N, rhs); +} + +// This helper reduces code bloat. If we instead put its logic inside +// the previous ArrayEq() function, arrays with different sizes would +// lead to different copies of the template code. +template +bool ArrayEq(const T* lhs, size_t size, const U* rhs) { + for (size_t i = 0; i != size; i++) { + if (!internal::ArrayEq(lhs[i], rhs[i])) + return false; + } + return true; +} + +// Finds the first element in the iterator range [begin, end) that +// equals elem. Element may be a native array type itself. +template +Iter ArrayAwareFind(Iter begin, Iter end, const Element& elem) { + for (Iter it = begin; it != end; ++it) { + if (internal::ArrayEq(*it, elem)) + return it; + } + return end; +} + +// CopyArray() copies a k-dimensional native array using the elements' +// operator=, where k can be any integer >= 0. When k is 0, +// CopyArray() degenerates into copying a single value. + +template +void CopyArray(const T* from, size_t size, U* to); + +// This generic version is used when k is 0. +template +inline void CopyArray(const T& from, U* to) { *to = from; } + +// This overload is used when k >= 1. +template +inline void CopyArray(const T(&from)[N], U(*to)[N]) { + internal::CopyArray(from, N, *to); +} + +// This helper reduces code bloat. If we instead put its logic inside +// the previous CopyArray() function, arrays with different sizes +// would lead to different copies of the template code. +template +void CopyArray(const T* from, size_t size, U* to) { + for (size_t i = 0; i != size; i++) { + internal::CopyArray(from[i], to + i); + } +} + +// The relation between an NativeArray object (see below) and the +// native array it represents. +enum RelationToSource { + kReference, // The NativeArray references the native array. + kCopy // The NativeArray makes a copy of the native array and + // owns the copy. +}; + +// Adapts a native array to a read-only STL-style container. Instead +// of the complete STL container concept, this adaptor only implements +// members useful for Google Mock's container matchers. New members +// should be added as needed. To simplify the implementation, we only +// support Element being a raw type (i.e. having no top-level const or +// reference modifier). It's the client's responsibility to satisfy +// this requirement. Element can be an array type itself (hence +// multi-dimensional arrays are supported). +template +class NativeArray { + public: + // STL-style container typedefs. + typedef Element value_type; + typedef Element* iterator; + typedef const Element* const_iterator; + + // Constructs from a native array. + NativeArray(const Element* array, size_t count, RelationToSource relation) { + Init(array, count, relation); + } + + // Copy constructor. + NativeArray(const NativeArray& rhs) { + Init(rhs.array_, rhs.size_, rhs.relation_to_source_); + } + + ~NativeArray() { + // Ensures that the user doesn't instantiate NativeArray with a + // const or reference type. + static_cast(StaticAssertTypeEqHelper()); + if (relation_to_source_ == kCopy) + delete[] array_; + } + + // STL-style container methods. + size_t size() const { return size_; } + const_iterator begin() const { return array_; } + const_iterator end() const { return array_ + size_; } + bool operator==(const NativeArray& rhs) const { + return size() == rhs.size() && + ArrayEq(begin(), size(), rhs.begin()); + } + + private: + // Initializes this object; makes a copy of the input array if + // 'relation' is kCopy. + void Init(const Element* array, size_t a_size, RelationToSource relation) { + if (relation == kReference) { + array_ = array; + } else { + Element* const copy = new Element[a_size]; + CopyArray(array, a_size, copy); + array_ = copy; + } + size_ = a_size; + relation_to_source_ = relation; + } + + const Element* array_; + size_t size_; + RelationToSource relation_to_source_; + + GTEST_DISALLOW_ASSIGN_(NativeArray); +}; + +} // namespace internal +} // namespace testing + +#define GTEST_MESSAGE_AT_(file, line, message, result_type) \ + ::testing::internal::AssertHelper(result_type, file, line, message) \ + = ::testing::Message() + +#define GTEST_MESSAGE_(message, result_type) \ + GTEST_MESSAGE_AT_(__FILE__, __LINE__, message, result_type) + +#define GTEST_FATAL_FAILURE_(message) \ + return GTEST_MESSAGE_(message, ::testing::TestPartResult::kFatalFailure) + +#define GTEST_NONFATAL_FAILURE_(message) \ + GTEST_MESSAGE_(message, ::testing::TestPartResult::kNonFatalFailure) + +#define GTEST_SUCCESS_(message) \ + GTEST_MESSAGE_(message, ::testing::TestPartResult::kSuccess) + +// Suppresses MSVC warnings 4072 (unreachable code) for the code following +// statement if it returns or throws (or doesn't return or throw in some +// situations). +#define GTEST_SUPPRESS_UNREACHABLE_CODE_WARNING_BELOW_(statement) \ + if (::testing::internal::AlwaysTrue()) { statement; } + +#define GTEST_TEST_THROW_(statement, expected_exception, fail) \ + GTEST_AMBIGUOUS_ELSE_BLOCKER_ \ + if (::testing::internal::ConstCharPtr gtest_msg = "") { \ + bool gtest_caught_expected = false; \ + try { \ + GTEST_SUPPRESS_UNREACHABLE_CODE_WARNING_BELOW_(statement); \ + } \ + catch (expected_exception const&) { \ + gtest_caught_expected = true; \ + } \ + catch (...) { \ + gtest_msg.value = \ + "Expected: " #statement " throws an exception of type " \ + #expected_exception ".\n Actual: it throws a different type."; \ + goto GTEST_CONCAT_TOKEN_(gtest_label_testthrow_, __LINE__); \ + } \ + if (!gtest_caught_expected) { \ + gtest_msg.value = \ + "Expected: " #statement " throws an exception of type " \ + #expected_exception ".\n Actual: it throws nothing."; \ + goto GTEST_CONCAT_TOKEN_(gtest_label_testthrow_, __LINE__); \ + } \ + } else \ + GTEST_CONCAT_TOKEN_(gtest_label_testthrow_, __LINE__): \ + fail(gtest_msg.value) + +#define GTEST_TEST_NO_THROW_(statement, fail) \ + GTEST_AMBIGUOUS_ELSE_BLOCKER_ \ + if (::testing::internal::AlwaysTrue()) { \ + try { \ + GTEST_SUPPRESS_UNREACHABLE_CODE_WARNING_BELOW_(statement); \ + } \ + catch (...) { \ + goto GTEST_CONCAT_TOKEN_(gtest_label_testnothrow_, __LINE__); \ + } \ + } else \ + GTEST_CONCAT_TOKEN_(gtest_label_testnothrow_, __LINE__): \ + fail("Expected: " #statement " doesn't throw an exception.\n" \ + " Actual: it throws.") + +#define GTEST_TEST_ANY_THROW_(statement, fail) \ + GTEST_AMBIGUOUS_ELSE_BLOCKER_ \ + if (::testing::internal::AlwaysTrue()) { \ + bool gtest_caught_any = false; \ + try { \ + GTEST_SUPPRESS_UNREACHABLE_CODE_WARNING_BELOW_(statement); \ + } \ + catch (...) { \ + gtest_caught_any = true; \ + } \ + if (!gtest_caught_any) { \ + goto GTEST_CONCAT_TOKEN_(gtest_label_testanythrow_, __LINE__); \ + } \ + } else \ + GTEST_CONCAT_TOKEN_(gtest_label_testanythrow_, __LINE__): \ + fail("Expected: " #statement " throws an exception.\n" \ + " Actual: it doesn't.") + + +// Implements Boolean test assertions such as EXPECT_TRUE. expression can be +// either a boolean expression or an AssertionResult. text is a textual +// represenation of expression as it was passed into the EXPECT_TRUE. +#define GTEST_TEST_BOOLEAN_(expression, text, actual, expected, fail) \ + GTEST_AMBIGUOUS_ELSE_BLOCKER_ \ + if (const ::testing::AssertionResult gtest_ar_ = \ + ::testing::AssertionResult(expression)) \ + ; \ + else \ + fail(::testing::internal::GetBoolAssertionFailureMessage(\ + gtest_ar_, text, #actual, #expected).c_str()) + +#define GTEST_TEST_NO_FATAL_FAILURE_(statement, fail) \ + GTEST_AMBIGUOUS_ELSE_BLOCKER_ \ + if (::testing::internal::AlwaysTrue()) { \ + ::testing::internal::HasNewFatalFailureHelper gtest_fatal_failure_checker; \ + GTEST_SUPPRESS_UNREACHABLE_CODE_WARNING_BELOW_(statement); \ + if (gtest_fatal_failure_checker.has_new_fatal_failure()) { \ + goto GTEST_CONCAT_TOKEN_(gtest_label_testnofatal_, __LINE__); \ + } \ + } else \ + GTEST_CONCAT_TOKEN_(gtest_label_testnofatal_, __LINE__): \ + fail("Expected: " #statement " doesn't generate new fatal " \ + "failures in the current thread.\n" \ + " Actual: it does.") + +// Expands to the name of the class that implements the given test. +#define GTEST_TEST_CLASS_NAME_(test_case_name, test_name) \ + test_case_name##_##test_name##_Test + +// Helper macro for defining tests. +#define GTEST_TEST_(test_case_name, test_name, parent_class, parent_id)\ +class GTEST_TEST_CLASS_NAME_(test_case_name, test_name) : public parent_class {\ + public:\ + GTEST_TEST_CLASS_NAME_(test_case_name, test_name)() {}\ + private:\ + virtual void TestBody();\ + static ::testing::TestInfo* const test_info_ GTEST_ATTRIBUTE_UNUSED_;\ + GTEST_DISALLOW_COPY_AND_ASSIGN_(\ + GTEST_TEST_CLASS_NAME_(test_case_name, test_name));\ +};\ +\ +::testing::TestInfo* const GTEST_TEST_CLASS_NAME_(test_case_name, test_name)\ + ::test_info_ =\ + ::testing::internal::MakeAndRegisterTestInfo(\ + #test_case_name, #test_name, NULL, NULL, \ + (parent_id), \ + parent_class::SetUpTestCase, \ + parent_class::TearDownTestCase, \ + new ::testing::internal::TestFactoryImpl<\ + GTEST_TEST_CLASS_NAME_(test_case_name, test_name)>);\ +void GTEST_TEST_CLASS_NAME_(test_case_name, test_name)::TestBody() + +#endif // GTEST_INCLUDE_GTEST_INTERNAL_GTEST_INTERNAL_H_ +// Copyright 2005, Google Inc. +// All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Author: wan@google.com (Zhanyong Wan) +// +// The Google C++ Testing Framework (Google Test) +// +// This header file defines the public API for death tests. It is +// #included by gtest.h so a user doesn't need to include this +// directly. + +#ifndef GTEST_INCLUDE_GTEST_GTEST_DEATH_TEST_H_ +#define GTEST_INCLUDE_GTEST_GTEST_DEATH_TEST_H_ + +// Copyright 2005, Google Inc. +// All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Authors: wan@google.com (Zhanyong Wan), eefacm@gmail.com (Sean Mcafee) +// +// The Google C++ Testing Framework (Google Test) +// +// This header file defines internal utilities needed for implementing +// death tests. They are subject to change without notice. + +#ifndef GTEST_INCLUDE_GTEST_INTERNAL_GTEST_DEATH_TEST_INTERNAL_H_ +#define GTEST_INCLUDE_GTEST_INTERNAL_GTEST_DEATH_TEST_INTERNAL_H_ + + +#include + +namespace testing { +namespace internal { + +GTEST_DECLARE_string_(internal_run_death_test); + +// Names of the flags (needed for parsing Google Test flags). +const char kDeathTestStyleFlag[] = "death_test_style"; +const char kDeathTestUseFork[] = "death_test_use_fork"; +const char kInternalRunDeathTestFlag[] = "internal_run_death_test"; + +#if GTEST_HAS_DEATH_TEST + +// DeathTest is a class that hides much of the complexity of the +// GTEST_DEATH_TEST_ macro. It is abstract; its static Create method +// returns a concrete class that depends on the prevailing death test +// style, as defined by the --gtest_death_test_style and/or +// --gtest_internal_run_death_test flags. + +// In describing the results of death tests, these terms are used with +// the corresponding definitions: +// +// exit status: The integer exit information in the format specified +// by wait(2) +// exit code: The integer code passed to exit(3), _exit(2), or +// returned from main() +class GTEST_API_ DeathTest { + public: + // Create returns false if there was an error determining the + // appropriate action to take for the current death test; for example, + // if the gtest_death_test_style flag is set to an invalid value. + // The LastMessage method will return a more detailed message in that + // case. Otherwise, the DeathTest pointer pointed to by the "test" + // argument is set. If the death test should be skipped, the pointer + // is set to NULL; otherwise, it is set to the address of a new concrete + // DeathTest object that controls the execution of the current test. + static bool Create(const char* statement, const RE* regex, + const char* file, int line, DeathTest** test); + DeathTest(); + virtual ~DeathTest() { } + + // A helper class that aborts a death test when it's deleted. + class ReturnSentinel { + public: + explicit ReturnSentinel(DeathTest* test) : test_(test) { } + ~ReturnSentinel() { test_->Abort(TEST_ENCOUNTERED_RETURN_STATEMENT); } + private: + DeathTest* const test_; + GTEST_DISALLOW_COPY_AND_ASSIGN_(ReturnSentinel); + } GTEST_ATTRIBUTE_UNUSED_; + + // An enumeration of possible roles that may be taken when a death + // test is encountered. EXECUTE means that the death test logic should + // be executed immediately. OVERSEE means that the program should prepare + // the appropriate environment for a child process to execute the death + // test, then wait for it to complete. + enum TestRole { OVERSEE_TEST, EXECUTE_TEST }; + + // An enumeration of the three reasons that a test might be aborted. + enum AbortReason { + TEST_ENCOUNTERED_RETURN_STATEMENT, + TEST_THREW_EXCEPTION, + TEST_DID_NOT_DIE + }; + + // Assumes one of the above roles. + virtual TestRole AssumeRole() = 0; + + // Waits for the death test to finish and returns its status. + virtual int Wait() = 0; + + // Returns true if the death test passed; that is, the test process + // exited during the test, its exit status matches a user-supplied + // predicate, and its stderr output matches a user-supplied regular + // expression. + // The user-supplied predicate may be a macro expression rather + // than a function pointer or functor, or else Wait and Passed could + // be combined. + virtual bool Passed(bool exit_status_ok) = 0; + + // Signals that the death test did not die as expected. + virtual void Abort(AbortReason reason) = 0; + + // Returns a human-readable outcome message regarding the outcome of + // the last death test. + static const char* LastMessage(); + + static void set_last_death_test_message(const std::string& message); + + private: + // A string containing a description of the outcome of the last death test. + static std::string last_death_test_message_; + + GTEST_DISALLOW_COPY_AND_ASSIGN_(DeathTest); +}; + +// Factory interface for death tests. May be mocked out for testing. +class DeathTestFactory { + public: + virtual ~DeathTestFactory() { } + virtual bool Create(const char* statement, const RE* regex, + const char* file, int line, DeathTest** test) = 0; +}; + +// A concrete DeathTestFactory implementation for normal use. +class DefaultDeathTestFactory : public DeathTestFactory { + public: + virtual bool Create(const char* statement, const RE* regex, + const char* file, int line, DeathTest** test); +}; + +// Returns true if exit_status describes a process that was terminated +// by a signal, or exited normally with a nonzero exit code. +GTEST_API_ bool ExitedUnsuccessfully(int exit_status); + +// Traps C++ exceptions escaping statement and reports them as test +// failures. Note that trapping SEH exceptions is not implemented here. +# if GTEST_HAS_EXCEPTIONS +# define GTEST_EXECUTE_DEATH_TEST_STATEMENT_(statement, death_test) \ + try { \ + GTEST_SUPPRESS_UNREACHABLE_CODE_WARNING_BELOW_(statement); \ + } catch (const ::std::exception& gtest_exception) { \ + fprintf(\ + stderr, \ + "\n%s: Caught std::exception-derived exception escaping the " \ + "death test statement. Exception message: %s\n", \ + ::testing::internal::FormatFileLocation(__FILE__, __LINE__).c_str(), \ + gtest_exception.what()); \ + fflush(stderr); \ + death_test->Abort(::testing::internal::DeathTest::TEST_THREW_EXCEPTION); \ + } catch (...) { \ + death_test->Abort(::testing::internal::DeathTest::TEST_THREW_EXCEPTION); \ + } + +# else +# define GTEST_EXECUTE_DEATH_TEST_STATEMENT_(statement, death_test) \ + GTEST_SUPPRESS_UNREACHABLE_CODE_WARNING_BELOW_(statement) + +# endif + +// This macro is for implementing ASSERT_DEATH*, EXPECT_DEATH*, +// ASSERT_EXIT*, and EXPECT_EXIT*. +# define GTEST_DEATH_TEST_(statement, predicate, regex, fail) \ + GTEST_AMBIGUOUS_ELSE_BLOCKER_ \ + if (::testing::internal::AlwaysTrue()) { \ + const ::testing::internal::RE& gtest_regex = (regex); \ + ::testing::internal::DeathTest* gtest_dt; \ + if (!::testing::internal::DeathTest::Create(#statement, >est_regex, \ + __FILE__, __LINE__, >est_dt)) { \ + goto GTEST_CONCAT_TOKEN_(gtest_label_, __LINE__); \ + } \ + if (gtest_dt != NULL) { \ + ::testing::internal::scoped_ptr< ::testing::internal::DeathTest> \ + gtest_dt_ptr(gtest_dt); \ + switch (gtest_dt->AssumeRole()) { \ + case ::testing::internal::DeathTest::OVERSEE_TEST: \ + if (!gtest_dt->Passed(predicate(gtest_dt->Wait()))) { \ + goto GTEST_CONCAT_TOKEN_(gtest_label_, __LINE__); \ + } \ + break; \ + case ::testing::internal::DeathTest::EXECUTE_TEST: { \ + ::testing::internal::DeathTest::ReturnSentinel \ + gtest_sentinel(gtest_dt); \ + GTEST_EXECUTE_DEATH_TEST_STATEMENT_(statement, gtest_dt); \ + gtest_dt->Abort(::testing::internal::DeathTest::TEST_DID_NOT_DIE); \ + break; \ + } \ + default: \ + break; \ + } \ + } \ + } else \ + GTEST_CONCAT_TOKEN_(gtest_label_, __LINE__): \ + fail(::testing::internal::DeathTest::LastMessage()) +// The symbol "fail" here expands to something into which a message +// can be streamed. + +// This macro is for implementing ASSERT/EXPECT_DEBUG_DEATH when compiled in +// NDEBUG mode. In this case we need the statements to be executed, the regex is +// ignored, and the macro must accept a streamed message even though the message +// is never printed. +# define GTEST_EXECUTE_STATEMENT_(statement, regex) \ + GTEST_AMBIGUOUS_ELSE_BLOCKER_ \ + if (::testing::internal::AlwaysTrue()) { \ + GTEST_SUPPRESS_UNREACHABLE_CODE_WARNING_BELOW_(statement); \ + } else \ + ::testing::Message() + +// A class representing the parsed contents of the +// --gtest_internal_run_death_test flag, as it existed when +// RUN_ALL_TESTS was called. +class InternalRunDeathTestFlag { + public: + InternalRunDeathTestFlag(const std::string& a_file, + int a_line, + int an_index, + int a_write_fd) + : file_(a_file), line_(a_line), index_(an_index), + write_fd_(a_write_fd) {} + + ~InternalRunDeathTestFlag() { + if (write_fd_ >= 0) + posix::Close(write_fd_); + } + + const std::string& file() const { return file_; } + int line() const { return line_; } + int index() const { return index_; } + int write_fd() const { return write_fd_; } + + private: + std::string file_; + int line_; + int index_; + int write_fd_; + + GTEST_DISALLOW_COPY_AND_ASSIGN_(InternalRunDeathTestFlag); +}; + +// Returns a newly created InternalRunDeathTestFlag object with fields +// initialized from the GTEST_FLAG(internal_run_death_test) flag if +// the flag is specified; otherwise returns NULL. +InternalRunDeathTestFlag* ParseInternalRunDeathTestFlag(); + +#else // GTEST_HAS_DEATH_TEST + +// This macro is used for implementing macros such as +// EXPECT_DEATH_IF_SUPPORTED and ASSERT_DEATH_IF_SUPPORTED on systems where +// death tests are not supported. Those macros must compile on such systems +// iff EXPECT_DEATH and ASSERT_DEATH compile with the same parameters on +// systems that support death tests. This allows one to write such a macro +// on a system that does not support death tests and be sure that it will +// compile on a death-test supporting system. +// +// Parameters: +// statement - A statement that a macro such as EXPECT_DEATH would test +// for program termination. This macro has to make sure this +// statement is compiled but not executed, to ensure that +// EXPECT_DEATH_IF_SUPPORTED compiles with a certain +// parameter iff EXPECT_DEATH compiles with it. +// regex - A regex that a macro such as EXPECT_DEATH would use to test +// the output of statement. This parameter has to be +// compiled but not evaluated by this macro, to ensure that +// this macro only accepts expressions that a macro such as +// EXPECT_DEATH would accept. +// terminator - Must be an empty statement for EXPECT_DEATH_IF_SUPPORTED +// and a return statement for ASSERT_DEATH_IF_SUPPORTED. +// This ensures that ASSERT_DEATH_IF_SUPPORTED will not +// compile inside functions where ASSERT_DEATH doesn't +// compile. +// +// The branch that has an always false condition is used to ensure that +// statement and regex are compiled (and thus syntactically correct) but +// never executed. The unreachable code macro protects the terminator +// statement from generating an 'unreachable code' warning in case +// statement unconditionally returns or throws. The Message constructor at +// the end allows the syntax of streaming additional messages into the +// macro, for compilational compatibility with EXPECT_DEATH/ASSERT_DEATH. +# define GTEST_UNSUPPORTED_DEATH_TEST_(statement, regex, terminator) \ + GTEST_AMBIGUOUS_ELSE_BLOCKER_ \ + if (::testing::internal::AlwaysTrue()) { \ + GTEST_LOG_(WARNING) \ + << "Death tests are not supported on this platform.\n" \ + << "Statement '" #statement "' cannot be verified."; \ + } else if (::testing::internal::AlwaysFalse()) { \ + ::testing::internal::RE::PartialMatch(".*", (regex)); \ + GTEST_SUPPRESS_UNREACHABLE_CODE_WARNING_BELOW_(statement); \ + terminator; \ + } else \ + ::testing::Message() + +#endif // GTEST_HAS_DEATH_TEST + +} // namespace internal +} // namespace testing + +#endif // GTEST_INCLUDE_GTEST_INTERNAL_GTEST_DEATH_TEST_INTERNAL_H_ + +namespace testing { + +// This flag controls the style of death tests. Valid values are "threadsafe", +// meaning that the death test child process will re-execute the test binary +// from the start, running only a single death test, or "fast", +// meaning that the child process will execute the test logic immediately +// after forking. +GTEST_DECLARE_string_(death_test_style); + +#if GTEST_HAS_DEATH_TEST + +namespace internal { + +// Returns a Boolean value indicating whether the caller is currently +// executing in the context of the death test child process. Tools such as +// Valgrind heap checkers may need this to modify their behavior in death +// tests. IMPORTANT: This is an internal utility. Using it may break the +// implementation of death tests. User code MUST NOT use it. +GTEST_API_ bool InDeathTestChild(); + +} // namespace internal + +// The following macros are useful for writing death tests. + +// Here's what happens when an ASSERT_DEATH* or EXPECT_DEATH* is +// executed: +// +// 1. It generates a warning if there is more than one active +// thread. This is because it's safe to fork() or clone() only +// when there is a single thread. +// +// 2. The parent process clone()s a sub-process and runs the death +// test in it; the sub-process exits with code 0 at the end of the +// death test, if it hasn't exited already. +// +// 3. The parent process waits for the sub-process to terminate. +// +// 4. The parent process checks the exit code and error message of +// the sub-process. +// +// Examples: +// +// ASSERT_DEATH(server.SendMessage(56, "Hello"), "Invalid port number"); +// for (int i = 0; i < 5; i++) { +// EXPECT_DEATH(server.ProcessRequest(i), +// "Invalid request .* in ProcessRequest()") +// << "Failed to die on request " << i; +// } +// +// ASSERT_EXIT(server.ExitNow(), ::testing::ExitedWithCode(0), "Exiting"); +// +// bool KilledBySIGHUP(int exit_code) { +// return WIFSIGNALED(exit_code) && WTERMSIG(exit_code) == SIGHUP; +// } +// +// ASSERT_EXIT(client.HangUpServer(), KilledBySIGHUP, "Hanging up!"); +// +// On the regular expressions used in death tests: +// +// On POSIX-compliant systems (*nix), we use the library, +// which uses the POSIX extended regex syntax. +// +// On other platforms (e.g. Windows), we only support a simple regex +// syntax implemented as part of Google Test. This limited +// implementation should be enough most of the time when writing +// death tests; though it lacks many features you can find in PCRE +// or POSIX extended regex syntax. For example, we don't support +// union ("x|y"), grouping ("(xy)"), brackets ("[xy]"), and +// repetition count ("x{5,7}"), among others. +// +// Below is the syntax that we do support. We chose it to be a +// subset of both PCRE and POSIX extended regex, so it's easy to +// learn wherever you come from. In the following: 'A' denotes a +// literal character, period (.), or a single \\ escape sequence; +// 'x' and 'y' denote regular expressions; 'm' and 'n' are for +// natural numbers. +// +// c matches any literal character c +// \\d matches any decimal digit +// \\D matches any character that's not a decimal digit +// \\f matches \f +// \\n matches \n +// \\r matches \r +// \\s matches any ASCII whitespace, including \n +// \\S matches any character that's not a whitespace +// \\t matches \t +// \\v matches \v +// \\w matches any letter, _, or decimal digit +// \\W matches any character that \\w doesn't match +// \\c matches any literal character c, which must be a punctuation +// . matches any single character except \n +// A? matches 0 or 1 occurrences of A +// A* matches 0 or many occurrences of A +// A+ matches 1 or many occurrences of A +// ^ matches the beginning of a string (not that of each line) +// $ matches the end of a string (not that of each line) +// xy matches x followed by y +// +// If you accidentally use PCRE or POSIX extended regex features +// not implemented by us, you will get a run-time failure. In that +// case, please try to rewrite your regular expression within the +// above syntax. +// +// This implementation is *not* meant to be as highly tuned or robust +// as a compiled regex library, but should perform well enough for a +// death test, which already incurs significant overhead by launching +// a child process. +// +// Known caveats: +// +// A "threadsafe" style death test obtains the path to the test +// program from argv[0] and re-executes it in the sub-process. For +// simplicity, the current implementation doesn't search the PATH +// when launching the sub-process. This means that the user must +// invoke the test program via a path that contains at least one +// path separator (e.g. path/to/foo_test and +// /absolute/path/to/bar_test are fine, but foo_test is not). This +// is rarely a problem as people usually don't put the test binary +// directory in PATH. +// +// TODO(wan@google.com): make thread-safe death tests search the PATH. + +// Asserts that a given statement causes the program to exit, with an +// integer exit status that satisfies predicate, and emitting error output +// that matches regex. +# define ASSERT_EXIT(statement, predicate, regex) \ + GTEST_DEATH_TEST_(statement, predicate, regex, GTEST_FATAL_FAILURE_) + +// Like ASSERT_EXIT, but continues on to successive tests in the +// test case, if any: +# define EXPECT_EXIT(statement, predicate, regex) \ + GTEST_DEATH_TEST_(statement, predicate, regex, GTEST_NONFATAL_FAILURE_) + +// Asserts that a given statement causes the program to exit, either by +// explicitly exiting with a nonzero exit code or being killed by a +// signal, and emitting error output that matches regex. +# define ASSERT_DEATH(statement, regex) \ + ASSERT_EXIT(statement, ::testing::internal::ExitedUnsuccessfully, regex) + +// Like ASSERT_DEATH, but continues on to successive tests in the +// test case, if any: +# define EXPECT_DEATH(statement, regex) \ + EXPECT_EXIT(statement, ::testing::internal::ExitedUnsuccessfully, regex) + +// Two predicate classes that can be used in {ASSERT,EXPECT}_EXIT*: + +// Tests that an exit code describes a normal exit with a given exit code. +class GTEST_API_ ExitedWithCode { + public: + explicit ExitedWithCode(int exit_code); + bool operator()(int exit_status) const; + private: + // No implementation - assignment is unsupported. + void operator=(const ExitedWithCode& other); + + const int exit_code_; +}; + +# if !GTEST_OS_WINDOWS +// Tests that an exit code describes an exit due to termination by a +// given signal. +class GTEST_API_ KilledBySignal { + public: + explicit KilledBySignal(int signum); + bool operator()(int exit_status) const; + private: + const int signum_; +}; +# endif // !GTEST_OS_WINDOWS + +// EXPECT_DEBUG_DEATH asserts that the given statements die in debug mode. +// The death testing framework causes this to have interesting semantics, +// since the sideeffects of the call are only visible in opt mode, and not +// in debug mode. +// +// In practice, this can be used to test functions that utilize the +// LOG(DFATAL) macro using the following style: +// +// int DieInDebugOr12(int* sideeffect) { +// if (sideeffect) { +// *sideeffect = 12; +// } +// LOG(DFATAL) << "death"; +// return 12; +// } +// +// TEST(TestCase, TestDieOr12WorksInDgbAndOpt) { +// int sideeffect = 0; +// // Only asserts in dbg. +// EXPECT_DEBUG_DEATH(DieInDebugOr12(&sideeffect), "death"); +// +// #ifdef NDEBUG +// // opt-mode has sideeffect visible. +// EXPECT_EQ(12, sideeffect); +// #else +// // dbg-mode no visible sideeffect. +// EXPECT_EQ(0, sideeffect); +// #endif +// } +// +// This will assert that DieInDebugReturn12InOpt() crashes in debug +// mode, usually due to a DCHECK or LOG(DFATAL), but returns the +// appropriate fallback value (12 in this case) in opt mode. If you +// need to test that a function has appropriate side-effects in opt +// mode, include assertions against the side-effects. A general +// pattern for this is: +// +// EXPECT_DEBUG_DEATH({ +// // Side-effects here will have an effect after this statement in +// // opt mode, but none in debug mode. +// EXPECT_EQ(12, DieInDebugOr12(&sideeffect)); +// }, "death"); +// +# ifdef NDEBUG + +# define EXPECT_DEBUG_DEATH(statement, regex) \ + GTEST_EXECUTE_STATEMENT_(statement, regex) + +# define ASSERT_DEBUG_DEATH(statement, regex) \ + GTEST_EXECUTE_STATEMENT_(statement, regex) + +# else + +# define EXPECT_DEBUG_DEATH(statement, regex) \ + EXPECT_DEATH(statement, regex) + +# define ASSERT_DEBUG_DEATH(statement, regex) \ + ASSERT_DEATH(statement, regex) + +# endif // NDEBUG for EXPECT_DEBUG_DEATH +#endif // GTEST_HAS_DEATH_TEST + +// EXPECT_DEATH_IF_SUPPORTED(statement, regex) and +// ASSERT_DEATH_IF_SUPPORTED(statement, regex) expand to real death tests if +// death tests are supported; otherwise they just issue a warning. This is +// useful when you are combining death test assertions with normal test +// assertions in one test. +#if GTEST_HAS_DEATH_TEST +# define EXPECT_DEATH_IF_SUPPORTED(statement, regex) \ + EXPECT_DEATH(statement, regex) +# define ASSERT_DEATH_IF_SUPPORTED(statement, regex) \ + ASSERT_DEATH(statement, regex) +#else +# define EXPECT_DEATH_IF_SUPPORTED(statement, regex) \ + GTEST_UNSUPPORTED_DEATH_TEST_(statement, regex, ) +# define ASSERT_DEATH_IF_SUPPORTED(statement, regex) \ + GTEST_UNSUPPORTED_DEATH_TEST_(statement, regex, return) +#endif + +} // namespace testing + +#endif // GTEST_INCLUDE_GTEST_GTEST_DEATH_TEST_H_ +// Copyright 2005, Google Inc. +// All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Author: wan@google.com (Zhanyong Wan) +// +// The Google C++ Testing Framework (Google Test) +// +// This header file defines the Message class. +// +// IMPORTANT NOTE: Due to limitation of the C++ language, we have to +// leave some internal implementation details in this header file. +// They are clearly marked by comments like this: +// +// // INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM. +// +// Such code is NOT meant to be used by a user directly, and is subject +// to CHANGE WITHOUT NOTICE. Therefore DO NOT DEPEND ON IT in a user +// program! + +#ifndef GTEST_INCLUDE_GTEST_GTEST_MESSAGE_H_ +#define GTEST_INCLUDE_GTEST_GTEST_MESSAGE_H_ + +#include + + +namespace testing { + +// The Message class works like an ostream repeater. +// +// Typical usage: +// +// 1. You stream a bunch of values to a Message object. +// It will remember the text in a stringstream. +// 2. Then you stream the Message object to an ostream. +// This causes the text in the Message to be streamed +// to the ostream. +// +// For example; +// +// testing::Message foo; +// foo << 1 << " != " << 2; +// std::cout << foo; +// +// will print "1 != 2". +// +// Message is not intended to be inherited from. In particular, its +// destructor is not virtual. +// +// Note that stringstream behaves differently in gcc and in MSVC. You +// can stream a NULL char pointer to it in the former, but not in the +// latter (it causes an access violation if you do). The Message +// class hides this difference by treating a NULL char pointer as +// "(null)". +class GTEST_API_ Message { + private: + // The type of basic IO manipulators (endl, ends, and flush) for + // narrow streams. + typedef std::ostream& (*BasicNarrowIoManip)(std::ostream&); + + public: + // Constructs an empty Message. + // We allocate the stringstream separately because otherwise each use of + // ASSERT/EXPECT in a procedure adds over 200 bytes to the procedure's + // stack frame leading to huge stack frames in some cases; gcc does not reuse + // the stack space. + Message() : ss_(new ::std::stringstream) { + // By default, we want there to be enough precision when printing + // a double to a Message. + *ss_ << std::setprecision(std::numeric_limits::digits10 + 2); + } + + // Copy constructor. + Message(const Message& msg) : ss_(new ::std::stringstream) { // NOLINT + *ss_ << msg.GetString(); + } + + // Constructs a Message from a C-string. + explicit Message(const char* str) : ss_(new ::std::stringstream) { + *ss_ << str; + } + +#if GTEST_OS_SYMBIAN + // Streams a value (either a pointer or not) to this object. + template + inline Message& operator <<(const T& value) { + StreamHelper(typename internal::is_pointer::type(), value); + return *this; + } +#else + // Streams a non-pointer value to this object. + template + inline Message& operator <<(const T& val) { + ::GTestStreamToHelper(ss_.get(), val); + return *this; + } + + // Streams a pointer value to this object. + // + // This function is an overload of the previous one. When you + // stream a pointer to a Message, this definition will be used as it + // is more specialized. (The C++ Standard, section + // [temp.func.order].) If you stream a non-pointer, then the + // previous definition will be used. + // + // The reason for this overload is that streaming a NULL pointer to + // ostream is undefined behavior. Depending on the compiler, you + // may get "0", "(nil)", "(null)", or an access violation. To + // ensure consistent result across compilers, we always treat NULL + // as "(null)". + template + inline Message& operator <<(T* const& pointer) { // NOLINT + if (pointer == NULL) { + *ss_ << "(null)"; + } else { + ::GTestStreamToHelper(ss_.get(), pointer); + } + return *this; + } +#endif // GTEST_OS_SYMBIAN + + // Since the basic IO manipulators are overloaded for both narrow + // and wide streams, we have to provide this specialized definition + // of operator <<, even though its body is the same as the + // templatized version above. Without this definition, streaming + // endl or other basic IO manipulators to Message will confuse the + // compiler. + Message& operator <<(BasicNarrowIoManip val) { + *ss_ << val; + return *this; + } + + // Instead of 1/0, we want to see true/false for bool values. + Message& operator <<(bool b) { + return *this << (b ? "true" : "false"); + } + + // These two overloads allow streaming a wide C string to a Message + // using the UTF-8 encoding. + Message& operator <<(const wchar_t* wide_c_str) { + return *this << internal::String::ShowWideCString(wide_c_str); + } + Message& operator <<(wchar_t* wide_c_str) { + return *this << internal::String::ShowWideCString(wide_c_str); + } + +#if GTEST_HAS_STD_WSTRING + // Converts the given wide string to a narrow string using the UTF-8 + // encoding, and streams the result to this Message object. + Message& operator <<(const ::std::wstring& wstr); +#endif // GTEST_HAS_STD_WSTRING + +#if GTEST_HAS_GLOBAL_WSTRING + // Converts the given wide string to a narrow string using the UTF-8 + // encoding, and streams the result to this Message object. + Message& operator <<(const ::wstring& wstr); +#endif // GTEST_HAS_GLOBAL_WSTRING + + // Gets the text streamed to this object so far as an std::string. + // Each '\0' character in the buffer is replaced with "\\0". + // + // INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM. + std::string GetString() const { + return internal::StringStreamToString(ss_.get()); + } + + private: + +#if GTEST_OS_SYMBIAN + // These are needed as the Nokia Symbian Compiler cannot decide between + // const T& and const T* in a function template. The Nokia compiler _can_ + // decide between class template specializations for T and T*, so a + // tr1::type_traits-like is_pointer works, and we can overload on that. + template + inline void StreamHelper(internal::true_type /*dummy*/, T* pointer) { + if (pointer == NULL) { + *ss_ << "(null)"; + } else { + ::GTestStreamToHelper(ss_.get(), pointer); + } + } + template + inline void StreamHelper(internal::false_type /*dummy*/, const T& value) { + ::GTestStreamToHelper(ss_.get(), value); + } +#endif // GTEST_OS_SYMBIAN + + // We'll hold the text streamed to this object here. + const internal::scoped_ptr< ::std::stringstream> ss_; + + // We declare (but don't implement) this to prevent the compiler + // from implementing the assignment operator. + void operator=(const Message&); +}; + +// Streams a Message to an ostream. +inline std::ostream& operator <<(std::ostream& os, const Message& sb) { + return os << sb.GetString(); +} + +} // namespace testing + +#endif // GTEST_INCLUDE_GTEST_GTEST_MESSAGE_H_ +// This file was GENERATED by command: +// pump.py gtest-param-test.h.pump +// DO NOT EDIT BY HAND!!! + +// Copyright 2008, Google Inc. +// All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Authors: vladl@google.com (Vlad Losev) +// +// Macros and functions for implementing parameterized tests +// in Google C++ Testing Framework (Google Test) +// +// This file is generated by a SCRIPT. DO NOT EDIT BY HAND! +// +#ifndef GTEST_INCLUDE_GTEST_GTEST_PARAM_TEST_H_ +#define GTEST_INCLUDE_GTEST_GTEST_PARAM_TEST_H_ + + +// Value-parameterized tests allow you to test your code with different +// parameters without writing multiple copies of the same test. +// +// Here is how you use value-parameterized tests: + +#if 0 + +// To write value-parameterized tests, first you should define a fixture +// class. It is usually derived from testing::TestWithParam (see below for +// another inheritance scheme that's sometimes useful in more complicated +// class hierarchies), where the type of your parameter values. +// TestWithParam is itself derived from testing::Test. T can be any +// copyable type. If it's a raw pointer, you are responsible for managing the +// lifespan of the pointed values. + +class FooTest : public ::testing::TestWithParam { + // You can implement all the usual class fixture members here. +}; + +// Then, use the TEST_P macro to define as many parameterized tests +// for this fixture as you want. The _P suffix is for "parameterized" +// or "pattern", whichever you prefer to think. + +TEST_P(FooTest, DoesBlah) { + // Inside a test, access the test parameter with the GetParam() method + // of the TestWithParam class: + EXPECT_TRUE(foo.Blah(GetParam())); + ... +} + +TEST_P(FooTest, HasBlahBlah) { + ... +} + +// Finally, you can use INSTANTIATE_TEST_CASE_P to instantiate the test +// case with any set of parameters you want. Google Test defines a number +// of functions for generating test parameters. They return what we call +// (surprise!) parameter generators. Here is a summary of them, which +// are all in the testing namespace: +// +// +// Range(begin, end [, step]) - Yields values {begin, begin+step, +// begin+step+step, ...}. The values do not +// include end. step defaults to 1. +// Values(v1, v2, ..., vN) - Yields values {v1, v2, ..., vN}. +// ValuesIn(container) - Yields values from a C-style array, an STL +// ValuesIn(begin,end) container, or an iterator range [begin, end). +// Bool() - Yields sequence {false, true}. +// Combine(g1, g2, ..., gN) - Yields all combinations (the Cartesian product +// for the math savvy) of the values generated +// by the N generators. +// +// For more details, see comments at the definitions of these functions below +// in this file. +// +// The following statement will instantiate tests from the FooTest test case +// each with parameter values "meeny", "miny", and "moe". + +INSTANTIATE_TEST_CASE_P(InstantiationName, + FooTest, + Values("meeny", "miny", "moe")); + +// To distinguish different instances of the pattern, (yes, you +// can instantiate it more then once) the first argument to the +// INSTANTIATE_TEST_CASE_P macro is a prefix that will be added to the +// actual test case name. Remember to pick unique prefixes for different +// instantiations. The tests from the instantiation above will have +// these names: +// +// * InstantiationName/FooTest.DoesBlah/0 for "meeny" +// * InstantiationName/FooTest.DoesBlah/1 for "miny" +// * InstantiationName/FooTest.DoesBlah/2 for "moe" +// * InstantiationName/FooTest.HasBlahBlah/0 for "meeny" +// * InstantiationName/FooTest.HasBlahBlah/1 for "miny" +// * InstantiationName/FooTest.HasBlahBlah/2 for "moe" +// +// You can use these names in --gtest_filter. +// +// This statement will instantiate all tests from FooTest again, each +// with parameter values "cat" and "dog": + +const char* pets[] = {"cat", "dog"}; +INSTANTIATE_TEST_CASE_P(AnotherInstantiationName, FooTest, ValuesIn(pets)); + +// The tests from the instantiation above will have these names: +// +// * AnotherInstantiationName/FooTest.DoesBlah/0 for "cat" +// * AnotherInstantiationName/FooTest.DoesBlah/1 for "dog" +// * AnotherInstantiationName/FooTest.HasBlahBlah/0 for "cat" +// * AnotherInstantiationName/FooTest.HasBlahBlah/1 for "dog" +// +// Please note that INSTANTIATE_TEST_CASE_P will instantiate all tests +// in the given test case, whether their definitions come before or +// AFTER the INSTANTIATE_TEST_CASE_P statement. +// +// Please also note that generator expressions (including parameters to the +// generators) are evaluated in InitGoogleTest(), after main() has started. +// This allows the user on one hand, to adjust generator parameters in order +// to dynamically determine a set of tests to run and on the other hand, +// give the user a chance to inspect the generated tests with Google Test +// reflection API before RUN_ALL_TESTS() is executed. +// +// You can see samples/sample7_unittest.cc and samples/sample8_unittest.cc +// for more examples. +// +// In the future, we plan to publish the API for defining new parameter +// generators. But for now this interface remains part of the internal +// implementation and is subject to change. +// +// +// A parameterized test fixture must be derived from testing::Test and from +// testing::WithParamInterface, where T is the type of the parameter +// values. Inheriting from TestWithParam satisfies that requirement because +// TestWithParam inherits from both Test and WithParamInterface. In more +// complicated hierarchies, however, it is occasionally useful to inherit +// separately from Test and WithParamInterface. For example: + +class BaseTest : public ::testing::Test { + // You can inherit all the usual members for a non-parameterized test + // fixture here. +}; + +class DerivedTest : public BaseTest, public ::testing::WithParamInterface { + // The usual test fixture members go here too. +}; + +TEST_F(BaseTest, HasFoo) { + // This is an ordinary non-parameterized test. +} + +TEST_P(DerivedTest, DoesBlah) { + // GetParam works just the same here as if you inherit from TestWithParam. + EXPECT_TRUE(foo.Blah(GetParam())); +} + +#endif // 0 + + +#if !GTEST_OS_SYMBIAN +# include +#endif + +// scripts/fuse_gtest.py depends on gtest's own header being #included +// *unconditionally*. Therefore these #includes cannot be moved +// inside #if GTEST_HAS_PARAM_TEST. +// Copyright 2008 Google Inc. +// All Rights Reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Author: vladl@google.com (Vlad Losev) + +// Type and function utilities for implementing parameterized tests. + +#ifndef GTEST_INCLUDE_GTEST_INTERNAL_GTEST_PARAM_UTIL_H_ +#define GTEST_INCLUDE_GTEST_INTERNAL_GTEST_PARAM_UTIL_H_ + +#include +#include +#include + +// scripts/fuse_gtest.py depends on gtest's own header being #included +// *unconditionally*. Therefore these #includes cannot be moved +// inside #if GTEST_HAS_PARAM_TEST. +// Copyright 2003 Google Inc. +// All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Authors: Dan Egnor (egnor@google.com) +// +// A "smart" pointer type with reference tracking. Every pointer to a +// particular object is kept on a circular linked list. When the last pointer +// to an object is destroyed or reassigned, the object is deleted. +// +// Used properly, this deletes the object when the last reference goes away. +// There are several caveats: +// - Like all reference counting schemes, cycles lead to leaks. +// - Each smart pointer is actually two pointers (8 bytes instead of 4). +// - Every time a pointer is assigned, the entire list of pointers to that +// object is traversed. This class is therefore NOT SUITABLE when there +// will often be more than two or three pointers to a particular object. +// - References are only tracked as long as linked_ptr<> objects are copied. +// If a linked_ptr<> is converted to a raw pointer and back, BAD THINGS +// will happen (double deletion). +// +// A good use of this class is storing object references in STL containers. +// You can safely put linked_ptr<> in a vector<>. +// Other uses may not be as good. +// +// Note: If you use an incomplete type with linked_ptr<>, the class +// *containing* linked_ptr<> must have a constructor and destructor (even +// if they do nothing!). +// +// Bill Gibbons suggested we use something like this. +// +// Thread Safety: +// Unlike other linked_ptr implementations, in this implementation +// a linked_ptr object is thread-safe in the sense that: +// - it's safe to copy linked_ptr objects concurrently, +// - it's safe to copy *from* a linked_ptr and read its underlying +// raw pointer (e.g. via get()) concurrently, and +// - it's safe to write to two linked_ptrs that point to the same +// shared object concurrently. +// TODO(wan@google.com): rename this to safe_linked_ptr to avoid +// confusion with normal linked_ptr. + +#ifndef GTEST_INCLUDE_GTEST_INTERNAL_GTEST_LINKED_PTR_H_ +#define GTEST_INCLUDE_GTEST_INTERNAL_GTEST_LINKED_PTR_H_ + +#include +#include + + +namespace testing { +namespace internal { + +// Protects copying of all linked_ptr objects. +GTEST_API_ GTEST_DECLARE_STATIC_MUTEX_(g_linked_ptr_mutex); + +// This is used internally by all instances of linked_ptr<>. It needs to be +// a non-template class because different types of linked_ptr<> can refer to +// the same object (linked_ptr(obj) vs linked_ptr(obj)). +// So, it needs to be possible for different types of linked_ptr to participate +// in the same circular linked list, so we need a single class type here. +// +// DO NOT USE THIS CLASS DIRECTLY YOURSELF. Use linked_ptr. +class linked_ptr_internal { + public: + // Create a new circle that includes only this instance. + void join_new() { + next_ = this; + } + + // Many linked_ptr operations may change p.link_ for some linked_ptr + // variable p in the same circle as this object. Therefore we need + // to prevent two such operations from occurring concurrently. + // + // Note that different types of linked_ptr objects can coexist in a + // circle (e.g. linked_ptr, linked_ptr, and + // linked_ptr). Therefore we must use a single mutex to + // protect all linked_ptr objects. This can create serious + // contention in production code, but is acceptable in a testing + // framework. + + // Join an existing circle. + void join(linked_ptr_internal const* ptr) + GTEST_LOCK_EXCLUDED_(g_linked_ptr_mutex) { + MutexLock lock(&g_linked_ptr_mutex); + + linked_ptr_internal const* p = ptr; + while (p->next_ != ptr) p = p->next_; + p->next_ = this; + next_ = ptr; + } + + // Leave whatever circle we're part of. Returns true if we were the + // last member of the circle. Once this is done, you can join() another. + bool depart() + GTEST_LOCK_EXCLUDED_(g_linked_ptr_mutex) { + MutexLock lock(&g_linked_ptr_mutex); + + if (next_ == this) return true; + linked_ptr_internal const* p = next_; + while (p->next_ != this) p = p->next_; + p->next_ = next_; + return false; + } + + private: + mutable linked_ptr_internal const* next_; +}; + +template +class linked_ptr { + public: + typedef T element_type; + + // Take over ownership of a raw pointer. This should happen as soon as + // possible after the object is created. + explicit linked_ptr(T* ptr = NULL) { capture(ptr); } + ~linked_ptr() { depart(); } + + // Copy an existing linked_ptr<>, adding ourselves to the list of references. + template linked_ptr(linked_ptr const& ptr) { copy(&ptr); } + linked_ptr(linked_ptr const& ptr) { // NOLINT + assert(&ptr != this); + copy(&ptr); + } + + // Assignment releases the old value and acquires the new. + template linked_ptr& operator=(linked_ptr const& ptr) { + depart(); + copy(&ptr); + return *this; + } + + linked_ptr& operator=(linked_ptr const& ptr) { + if (&ptr != this) { + depart(); + copy(&ptr); + } + return *this; + } + + // Smart pointer members. + void reset(T* ptr = NULL) { + depart(); + capture(ptr); + } + T* get() const { return value_; } + T* operator->() const { return value_; } + T& operator*() const { return *value_; } + + bool operator==(T* p) const { return value_ == p; } + bool operator!=(T* p) const { return value_ != p; } + template + bool operator==(linked_ptr const& ptr) const { + return value_ == ptr.get(); + } + template + bool operator!=(linked_ptr const& ptr) const { + return value_ != ptr.get(); + } + + private: + template + friend class linked_ptr; + + T* value_; + linked_ptr_internal link_; + + void depart() { + if (link_.depart()) delete value_; + } + + void capture(T* ptr) { + value_ = ptr; + link_.join_new(); + } + + template void copy(linked_ptr const* ptr) { + value_ = ptr->get(); + if (value_) + link_.join(&ptr->link_); + else + link_.join_new(); + } +}; + +template inline +bool operator==(T* ptr, const linked_ptr& x) { + return ptr == x.get(); +} + +template inline +bool operator!=(T* ptr, const linked_ptr& x) { + return ptr != x.get(); +} + +// A function to convert T* into linked_ptr +// Doing e.g. make_linked_ptr(new FooBarBaz(arg)) is a shorter notation +// for linked_ptr >(new FooBarBaz(arg)) +template +linked_ptr make_linked_ptr(T* ptr) { + return linked_ptr(ptr); +} + +} // namespace internal +} // namespace testing + +#endif // GTEST_INCLUDE_GTEST_INTERNAL_GTEST_LINKED_PTR_H_ +// Copyright 2007, Google Inc. +// All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Author: wan@google.com (Zhanyong Wan) + +// Google Test - The Google C++ Testing Framework +// +// This file implements a universal value printer that can print a +// value of any type T: +// +// void ::testing::internal::UniversalPrinter::Print(value, ostream_ptr); +// +// A user can teach this function how to print a class type T by +// defining either operator<<() or PrintTo() in the namespace that +// defines T. More specifically, the FIRST defined function in the +// following list will be used (assuming T is defined in namespace +// foo): +// +// 1. foo::PrintTo(const T&, ostream*) +// 2. operator<<(ostream&, const T&) defined in either foo or the +// global namespace. +// +// If none of the above is defined, it will print the debug string of +// the value if it is a protocol buffer, or print the raw bytes in the +// value otherwise. +// +// To aid debugging: when T is a reference type, the address of the +// value is also printed; when T is a (const) char pointer, both the +// pointer value and the NUL-terminated string it points to are +// printed. +// +// We also provide some convenient wrappers: +// +// // Prints a value to a string. For a (const or not) char +// // pointer, the NUL-terminated string (but not the pointer) is +// // printed. +// std::string ::testing::PrintToString(const T& value); +// +// // Prints a value tersely: for a reference type, the referenced +// // value (but not the address) is printed; for a (const or not) char +// // pointer, the NUL-terminated string (but not the pointer) is +// // printed. +// void ::testing::internal::UniversalTersePrint(const T& value, ostream*); +// +// // Prints value using the type inferred by the compiler. The difference +// // from UniversalTersePrint() is that this function prints both the +// // pointer and the NUL-terminated string for a (const or not) char pointer. +// void ::testing::internal::UniversalPrint(const T& value, ostream*); +// +// // Prints the fields of a tuple tersely to a string vector, one +// // element for each field. Tuple support must be enabled in +// // gtest-port.h. +// std::vector UniversalTersePrintTupleFieldsToStrings( +// const Tuple& value); +// +// Known limitation: +// +// The print primitives print the elements of an STL-style container +// using the compiler-inferred type of *iter where iter is a +// const_iterator of the container. When const_iterator is an input +// iterator but not a forward iterator, this inferred type may not +// match value_type, and the print output may be incorrect. In +// practice, this is rarely a problem as for most containers +// const_iterator is a forward iterator. We'll fix this if there's an +// actual need for it. Note that this fix cannot rely on value_type +// being defined as many user-defined container types don't have +// value_type. + +#ifndef GTEST_INCLUDE_GTEST_GTEST_PRINTERS_H_ +#define GTEST_INCLUDE_GTEST_GTEST_PRINTERS_H_ + +#include // NOLINT +#include +#include +#include +#include + +namespace testing { + +// Definitions in the 'internal' and 'internal2' name spaces are +// subject to change without notice. DO NOT USE THEM IN USER CODE! +namespace internal2 { + +// Prints the given number of bytes in the given object to the given +// ostream. +GTEST_API_ void PrintBytesInObjectTo(const unsigned char* obj_bytes, + size_t count, + ::std::ostream* os); + +// For selecting which printer to use when a given type has neither << +// nor PrintTo(). +enum TypeKind { + kProtobuf, // a protobuf type + kConvertibleToInteger, // a type implicitly convertible to BiggestInt + // (e.g. a named or unnamed enum type) + kOtherType // anything else +}; + +// TypeWithoutFormatter::PrintValue(value, os) is called +// by the universal printer to print a value of type T when neither +// operator<< nor PrintTo() is defined for T, where kTypeKind is the +// "kind" of T as defined by enum TypeKind. +template +class TypeWithoutFormatter { + public: + // This default version is called when kTypeKind is kOtherType. + static void PrintValue(const T& value, ::std::ostream* os) { + PrintBytesInObjectTo(reinterpret_cast(&value), + sizeof(value), os); + } +}; + +// We print a protobuf using its ShortDebugString() when the string +// doesn't exceed this many characters; otherwise we print it using +// DebugString() for better readability. +const size_t kProtobufOneLinerMaxLength = 50; + +template +class TypeWithoutFormatter { + public: + static void PrintValue(const T& value, ::std::ostream* os) { + const ::testing::internal::string short_str = value.ShortDebugString(); + const ::testing::internal::string pretty_str = + short_str.length() <= kProtobufOneLinerMaxLength ? + short_str : ("\n" + value.DebugString()); + *os << ("<" + pretty_str + ">"); + } +}; + +template +class TypeWithoutFormatter { + public: + // Since T has no << operator or PrintTo() but can be implicitly + // converted to BiggestInt, we print it as a BiggestInt. + // + // Most likely T is an enum type (either named or unnamed), in which + // case printing it as an integer is the desired behavior. In case + // T is not an enum, printing it as an integer is the best we can do + // given that it has no user-defined printer. + static void PrintValue(const T& value, ::std::ostream* os) { + const internal::BiggestInt kBigInt = value; + *os << kBigInt; + } +}; + +// Prints the given value to the given ostream. If the value is a +// protocol message, its debug string is printed; if it's an enum or +// of a type implicitly convertible to BiggestInt, it's printed as an +// integer; otherwise the bytes in the value are printed. This is +// what UniversalPrinter::Print() does when it knows nothing about +// type T and T has neither << operator nor PrintTo(). +// +// A user can override this behavior for a class type Foo by defining +// a << operator in the namespace where Foo is defined. +// +// We put this operator in namespace 'internal2' instead of 'internal' +// to simplify the implementation, as much code in 'internal' needs to +// use << in STL, which would conflict with our own << were it defined +// in 'internal'. +// +// Note that this operator<< takes a generic std::basic_ostream type instead of the more restricted std::ostream. If +// we define it to take an std::ostream instead, we'll get an +// "ambiguous overloads" compiler error when trying to print a type +// Foo that supports streaming to std::basic_ostream, as the compiler cannot tell whether +// operator<<(std::ostream&, const T&) or +// operator<<(std::basic_stream, const Foo&) is more +// specific. +template +::std::basic_ostream& operator<<( + ::std::basic_ostream& os, const T& x) { + TypeWithoutFormatter::value ? kProtobuf : + internal::ImplicitlyConvertible::value ? + kConvertibleToInteger : kOtherType)>::PrintValue(x, &os); + return os; +} + +} // namespace internal2 +} // namespace testing + +// This namespace MUST NOT BE NESTED IN ::testing, or the name look-up +// magic needed for implementing UniversalPrinter won't work. +namespace testing_internal { + +// Used to print a value that is not an STL-style container when the +// user doesn't define PrintTo() for it. +template +void DefaultPrintNonContainerTo(const T& value, ::std::ostream* os) { + // With the following statement, during unqualified name lookup, + // testing::internal2::operator<< appears as if it was declared in + // the nearest enclosing namespace that contains both + // ::testing_internal and ::testing::internal2, i.e. the global + // namespace. For more details, refer to the C++ Standard section + // 7.3.4-1 [namespace.udir]. This allows us to fall back onto + // testing::internal2::operator<< in case T doesn't come with a << + // operator. + // + // We cannot write 'using ::testing::internal2::operator<<;', which + // gcc 3.3 fails to compile due to a compiler bug. + using namespace ::testing::internal2; // NOLINT + + // Assuming T is defined in namespace foo, in the next statement, + // the compiler will consider all of: + // + // 1. foo::operator<< (thanks to Koenig look-up), + // 2. ::operator<< (as the current namespace is enclosed in ::), + // 3. testing::internal2::operator<< (thanks to the using statement above). + // + // The operator<< whose type matches T best will be picked. + // + // We deliberately allow #2 to be a candidate, as sometimes it's + // impossible to define #1 (e.g. when foo is ::std, defining + // anything in it is undefined behavior unless you are a compiler + // vendor.). + *os << value; +} + +} // namespace testing_internal + +namespace testing { +namespace internal { + +// UniversalPrinter::Print(value, ostream_ptr) prints the given +// value to the given ostream. The caller must ensure that +// 'ostream_ptr' is not NULL, or the behavior is undefined. +// +// We define UniversalPrinter as a class template (as opposed to a +// function template), as we need to partially specialize it for +// reference types, which cannot be done with function templates. +template +class UniversalPrinter; + +template +void UniversalPrint(const T& value, ::std::ostream* os); + +// Used to print an STL-style container when the user doesn't define +// a PrintTo() for it. +template +void DefaultPrintTo(IsContainer /* dummy */, + false_type /* is not a pointer */, + const C& container, ::std::ostream* os) { + const size_t kMaxCount = 32; // The maximum number of elements to print. + *os << '{'; + size_t count = 0; + for (typename C::const_iterator it = container.begin(); + it != container.end(); ++it, ++count) { + if (count > 0) { + *os << ','; + if (count == kMaxCount) { // Enough has been printed. + *os << " ..."; + break; + } + } + *os << ' '; + // We cannot call PrintTo(*it, os) here as PrintTo() doesn't + // handle *it being a native array. + internal::UniversalPrint(*it, os); + } + + if (count > 0) { + *os << ' '; + } + *os << '}'; +} + +// Used to print a pointer that is neither a char pointer nor a member +// pointer, when the user doesn't define PrintTo() for it. (A member +// variable pointer or member function pointer doesn't really point to +// a location in the address space. Their representation is +// implementation-defined. Therefore they will be printed as raw +// bytes.) +template +void DefaultPrintTo(IsNotContainer /* dummy */, + true_type /* is a pointer */, + T* p, ::std::ostream* os) { + if (p == NULL) { + *os << "NULL"; + } else { + // C++ doesn't allow casting from a function pointer to any object + // pointer. + // + // IsTrue() silences warnings: "Condition is always true", + // "unreachable code". + if (IsTrue(ImplicitlyConvertible::value)) { + // T is not a function type. We just call << to print p, + // relying on ADL to pick up user-defined << for their pointer + // types, if any. + *os << p; + } else { + // T is a function type, so '*os << p' doesn't do what we want + // (it just prints p as bool). We want to print p as a const + // void*. However, we cannot cast it to const void* directly, + // even using reinterpret_cast, as earlier versions of gcc + // (e.g. 3.4.5) cannot compile the cast when p is a function + // pointer. Casting to UInt64 first solves the problem. + *os << reinterpret_cast( + reinterpret_cast(p)); + } + } +} + +// Used to print a non-container, non-pointer value when the user +// doesn't define PrintTo() for it. +template +void DefaultPrintTo(IsNotContainer /* dummy */, + false_type /* is not a pointer */, + const T& value, ::std::ostream* os) { + ::testing_internal::DefaultPrintNonContainerTo(value, os); +} + +// Prints the given value using the << operator if it has one; +// otherwise prints the bytes in it. This is what +// UniversalPrinter::Print() does when PrintTo() is not specialized +// or overloaded for type T. +// +// A user can override this behavior for a class type Foo by defining +// an overload of PrintTo() in the namespace where Foo is defined. We +// give the user this option as sometimes defining a << operator for +// Foo is not desirable (e.g. the coding style may prevent doing it, +// or there is already a << operator but it doesn't do what the user +// wants). +template +void PrintTo(const T& value, ::std::ostream* os) { + // DefaultPrintTo() is overloaded. The type of its first two + // arguments determine which version will be picked. If T is an + // STL-style container, the version for container will be called; if + // T is a pointer, the pointer version will be called; otherwise the + // generic version will be called. + // + // Note that we check for container types here, prior to we check + // for protocol message types in our operator<<. The rationale is: + // + // For protocol messages, we want to give people a chance to + // override Google Mock's format by defining a PrintTo() or + // operator<<. For STL containers, other formats can be + // incompatible with Google Mock's format for the container + // elements; therefore we check for container types here to ensure + // that our format is used. + // + // The second argument of DefaultPrintTo() is needed to bypass a bug + // in Symbian's C++ compiler that prevents it from picking the right + // overload between: + // + // PrintTo(const T& x, ...); + // PrintTo(T* x, ...); + DefaultPrintTo(IsContainerTest(0), is_pointer(), value, os); +} + +// The following list of PrintTo() overloads tells +// UniversalPrinter::Print() how to print standard types (built-in +// types, strings, plain arrays, and pointers). + +// Overloads for various char types. +GTEST_API_ void PrintTo(unsigned char c, ::std::ostream* os); +GTEST_API_ void PrintTo(signed char c, ::std::ostream* os); +inline void PrintTo(char c, ::std::ostream* os) { + // When printing a plain char, we always treat it as unsigned. This + // way, the output won't be affected by whether the compiler thinks + // char is signed or not. + PrintTo(static_cast(c), os); +} + +// Overloads for other simple built-in types. +inline void PrintTo(bool x, ::std::ostream* os) { + *os << (x ? "true" : "false"); +} + +// Overload for wchar_t type. +// Prints a wchar_t as a symbol if it is printable or as its internal +// code otherwise and also as its decimal code (except for L'\0'). +// The L'\0' char is printed as "L'\\0'". The decimal code is printed +// as signed integer when wchar_t is implemented by the compiler +// as a signed type and is printed as an unsigned integer when wchar_t +// is implemented as an unsigned type. +GTEST_API_ void PrintTo(wchar_t wc, ::std::ostream* os); + +// Overloads for C strings. +GTEST_API_ void PrintTo(const char* s, ::std::ostream* os); +inline void PrintTo(char* s, ::std::ostream* os) { + PrintTo(ImplicitCast_(s), os); +} + +// signed/unsigned char is often used for representing binary data, so +// we print pointers to it as void* to be safe. +inline void PrintTo(const signed char* s, ::std::ostream* os) { + PrintTo(ImplicitCast_(s), os); +} +inline void PrintTo(signed char* s, ::std::ostream* os) { + PrintTo(ImplicitCast_(s), os); +} +inline void PrintTo(const unsigned char* s, ::std::ostream* os) { + PrintTo(ImplicitCast_(s), os); +} +inline void PrintTo(unsigned char* s, ::std::ostream* os) { + PrintTo(ImplicitCast_(s), os); +} + +// MSVC can be configured to define wchar_t as a typedef of unsigned +// short. It defines _NATIVE_WCHAR_T_DEFINED when wchar_t is a native +// type. When wchar_t is a typedef, defining an overload for const +// wchar_t* would cause unsigned short* be printed as a wide string, +// possibly causing invalid memory accesses. +#if !defined(_MSC_VER) || defined(_NATIVE_WCHAR_T_DEFINED) +// Overloads for wide C strings +GTEST_API_ void PrintTo(const wchar_t* s, ::std::ostream* os); +inline void PrintTo(wchar_t* s, ::std::ostream* os) { + PrintTo(ImplicitCast_(s), os); +} +#endif + +// Overload for C arrays. Multi-dimensional arrays are printed +// properly. + +// Prints the given number of elements in an array, without printing +// the curly braces. +template +void PrintRawArrayTo(const T a[], size_t count, ::std::ostream* os) { + UniversalPrint(a[0], os); + for (size_t i = 1; i != count; i++) { + *os << ", "; + UniversalPrint(a[i], os); + } +} + +// Overloads for ::string and ::std::string. +#if GTEST_HAS_GLOBAL_STRING +GTEST_API_ void PrintStringTo(const ::string&s, ::std::ostream* os); +inline void PrintTo(const ::string& s, ::std::ostream* os) { + PrintStringTo(s, os); +} +#endif // GTEST_HAS_GLOBAL_STRING + +GTEST_API_ void PrintStringTo(const ::std::string&s, ::std::ostream* os); +inline void PrintTo(const ::std::string& s, ::std::ostream* os) { + PrintStringTo(s, os); +} + +// Overloads for ::wstring and ::std::wstring. +#if GTEST_HAS_GLOBAL_WSTRING +GTEST_API_ void PrintWideStringTo(const ::wstring&s, ::std::ostream* os); +inline void PrintTo(const ::wstring& s, ::std::ostream* os) { + PrintWideStringTo(s, os); +} +#endif // GTEST_HAS_GLOBAL_WSTRING + +#if GTEST_HAS_STD_WSTRING +GTEST_API_ void PrintWideStringTo(const ::std::wstring&s, ::std::ostream* os); +inline void PrintTo(const ::std::wstring& s, ::std::ostream* os) { + PrintWideStringTo(s, os); +} +#endif // GTEST_HAS_STD_WSTRING + +#if GTEST_HAS_TR1_TUPLE +// Overload for ::std::tr1::tuple. Needed for printing function arguments, +// which are packed as tuples. + +// Helper function for printing a tuple. T must be instantiated with +// a tuple type. +template +void PrintTupleTo(const T& t, ::std::ostream* os); + +// Overloaded PrintTo() for tuples of various arities. We support +// tuples of up-to 10 fields. The following implementation works +// regardless of whether tr1::tuple is implemented using the +// non-standard variadic template feature or not. + +inline void PrintTo(const ::std::tr1::tuple<>& t, ::std::ostream* os) { + PrintTupleTo(t, os); +} + +template +void PrintTo(const ::std::tr1::tuple& t, ::std::ostream* os) { + PrintTupleTo(t, os); +} + +template +void PrintTo(const ::std::tr1::tuple& t, ::std::ostream* os) { + PrintTupleTo(t, os); +} + +template +void PrintTo(const ::std::tr1::tuple& t, ::std::ostream* os) { + PrintTupleTo(t, os); +} + +template +void PrintTo(const ::std::tr1::tuple& t, ::std::ostream* os) { + PrintTupleTo(t, os); +} + +template +void PrintTo(const ::std::tr1::tuple& t, + ::std::ostream* os) { + PrintTupleTo(t, os); +} + +template +void PrintTo(const ::std::tr1::tuple& t, + ::std::ostream* os) { + PrintTupleTo(t, os); +} + +template +void PrintTo(const ::std::tr1::tuple& t, + ::std::ostream* os) { + PrintTupleTo(t, os); +} + +template +void PrintTo(const ::std::tr1::tuple& t, + ::std::ostream* os) { + PrintTupleTo(t, os); +} + +template +void PrintTo(const ::std::tr1::tuple& t, + ::std::ostream* os) { + PrintTupleTo(t, os); +} + +template +void PrintTo( + const ::std::tr1::tuple& t, + ::std::ostream* os) { + PrintTupleTo(t, os); +} +#endif // GTEST_HAS_TR1_TUPLE + +// Overload for std::pair. +template +void PrintTo(const ::std::pair& value, ::std::ostream* os) { + *os << '('; + // We cannot use UniversalPrint(value.first, os) here, as T1 may be + // a reference type. The same for printing value.second. + UniversalPrinter::Print(value.first, os); + *os << ", "; + UniversalPrinter::Print(value.second, os); + *os << ')'; +} + +// Implements printing a non-reference type T by letting the compiler +// pick the right overload of PrintTo() for T. +template +class UniversalPrinter { + public: + // MSVC warns about adding const to a function type, so we want to + // disable the warning. +#ifdef _MSC_VER +# pragma warning(push) // Saves the current warning state. +# pragma warning(disable:4180) // Temporarily disables warning 4180. +#endif // _MSC_VER + + // Note: we deliberately don't call this PrintTo(), as that name + // conflicts with ::testing::internal::PrintTo in the body of the + // function. + static void Print(const T& value, ::std::ostream* os) { + // By default, ::testing::internal::PrintTo() is used for printing + // the value. + // + // Thanks to Koenig look-up, if T is a class and has its own + // PrintTo() function defined in its namespace, that function will + // be visible here. Since it is more specific than the generic ones + // in ::testing::internal, it will be picked by the compiler in the + // following statement - exactly what we want. + PrintTo(value, os); + } + +#ifdef _MSC_VER +# pragma warning(pop) // Restores the warning state. +#endif // _MSC_VER +}; + +// UniversalPrintArray(begin, len, os) prints an array of 'len' +// elements, starting at address 'begin'. +template +void UniversalPrintArray(const T* begin, size_t len, ::std::ostream* os) { + if (len == 0) { + *os << "{}"; + } else { + *os << "{ "; + const size_t kThreshold = 18; + const size_t kChunkSize = 8; + // If the array has more than kThreshold elements, we'll have to + // omit some details by printing only the first and the last + // kChunkSize elements. + // TODO(wan@google.com): let the user control the threshold using a flag. + if (len <= kThreshold) { + PrintRawArrayTo(begin, len, os); + } else { + PrintRawArrayTo(begin, kChunkSize, os); + *os << ", ..., "; + PrintRawArrayTo(begin + len - kChunkSize, kChunkSize, os); + } + *os << " }"; + } +} +// This overload prints a (const) char array compactly. +GTEST_API_ void UniversalPrintArray( + const char* begin, size_t len, ::std::ostream* os); + +// This overload prints a (const) wchar_t array compactly. +GTEST_API_ void UniversalPrintArray( + const wchar_t* begin, size_t len, ::std::ostream* os); + +// Implements printing an array type T[N]. +template +class UniversalPrinter { + public: + // Prints the given array, omitting some elements when there are too + // many. + static void Print(const T (&a)[N], ::std::ostream* os) { + UniversalPrintArray(a, N, os); + } +}; + +// Implements printing a reference type T&. +template +class UniversalPrinter { + public: + // MSVC warns about adding const to a function type, so we want to + // disable the warning. +#ifdef _MSC_VER +# pragma warning(push) // Saves the current warning state. +# pragma warning(disable:4180) // Temporarily disables warning 4180. +#endif // _MSC_VER + + static void Print(const T& value, ::std::ostream* os) { + // Prints the address of the value. We use reinterpret_cast here + // as static_cast doesn't compile when T is a function type. + *os << "@" << reinterpret_cast(&value) << " "; + + // Then prints the value itself. + UniversalPrint(value, os); + } + +#ifdef _MSC_VER +# pragma warning(pop) // Restores the warning state. +#endif // _MSC_VER +}; + +// Prints a value tersely: for a reference type, the referenced value +// (but not the address) is printed; for a (const) char pointer, the +// NUL-terminated string (but not the pointer) is printed. + +template +class UniversalTersePrinter { + public: + static void Print(const T& value, ::std::ostream* os) { + UniversalPrint(value, os); + } +}; +template +class UniversalTersePrinter { + public: + static void Print(const T& value, ::std::ostream* os) { + UniversalPrint(value, os); + } +}; +template +class UniversalTersePrinter { + public: + static void Print(const T (&value)[N], ::std::ostream* os) { + UniversalPrinter::Print(value, os); + } +}; +template <> +class UniversalTersePrinter { + public: + static void Print(const char* str, ::std::ostream* os) { + if (str == NULL) { + *os << "NULL"; + } else { + UniversalPrint(string(str), os); + } + } +}; +template <> +class UniversalTersePrinter { + public: + static void Print(char* str, ::std::ostream* os) { + UniversalTersePrinter::Print(str, os); + } +}; + +#if GTEST_HAS_STD_WSTRING +template <> +class UniversalTersePrinter { + public: + static void Print(const wchar_t* str, ::std::ostream* os) { + if (str == NULL) { + *os << "NULL"; + } else { + UniversalPrint(::std::wstring(str), os); + } + } +}; +#endif + +template <> +class UniversalTersePrinter { + public: + static void Print(wchar_t* str, ::std::ostream* os) { + UniversalTersePrinter::Print(str, os); + } +}; + +template +void UniversalTersePrint(const T& value, ::std::ostream* os) { + UniversalTersePrinter::Print(value, os); +} + +// Prints a value using the type inferred by the compiler. The +// difference between this and UniversalTersePrint() is that for a +// (const) char pointer, this prints both the pointer and the +// NUL-terminated string. +template +void UniversalPrint(const T& value, ::std::ostream* os) { + // A workarond for the bug in VC++ 7.1 that prevents us from instantiating + // UniversalPrinter with T directly. + typedef T T1; + UniversalPrinter::Print(value, os); +} + +#if GTEST_HAS_TR1_TUPLE +typedef ::std::vector Strings; + +// This helper template allows PrintTo() for tuples and +// UniversalTersePrintTupleFieldsToStrings() to be defined by +// induction on the number of tuple fields. The idea is that +// TuplePrefixPrinter::PrintPrefixTo(t, os) prints the first N +// fields in tuple t, and can be defined in terms of +// TuplePrefixPrinter. + +// The inductive case. +template +struct TuplePrefixPrinter { + // Prints the first N fields of a tuple. + template + static void PrintPrefixTo(const Tuple& t, ::std::ostream* os) { + TuplePrefixPrinter::PrintPrefixTo(t, os); + *os << ", "; + UniversalPrinter::type> + ::Print(::std::tr1::get(t), os); + } + + // Tersely prints the first N fields of a tuple to a string vector, + // one element for each field. + template + static void TersePrintPrefixToStrings(const Tuple& t, Strings* strings) { + TuplePrefixPrinter::TersePrintPrefixToStrings(t, strings); + ::std::stringstream ss; + UniversalTersePrint(::std::tr1::get(t), &ss); + strings->push_back(ss.str()); + } +}; + +// Base cases. +template <> +struct TuplePrefixPrinter<0> { + template + static void PrintPrefixTo(const Tuple&, ::std::ostream*) {} + + template + static void TersePrintPrefixToStrings(const Tuple&, Strings*) {} +}; +// We have to specialize the entire TuplePrefixPrinter<> class +// template here, even though the definition of +// TersePrintPrefixToStrings() is the same as the generic version, as +// Embarcadero (formerly CodeGear, formerly Borland) C++ doesn't +// support specializing a method template of a class template. +template <> +struct TuplePrefixPrinter<1> { + template + static void PrintPrefixTo(const Tuple& t, ::std::ostream* os) { + UniversalPrinter::type>:: + Print(::std::tr1::get<0>(t), os); + } + + template + static void TersePrintPrefixToStrings(const Tuple& t, Strings* strings) { + ::std::stringstream ss; + UniversalTersePrint(::std::tr1::get<0>(t), &ss); + strings->push_back(ss.str()); + } +}; + +// Helper function for printing a tuple. T must be instantiated with +// a tuple type. +template +void PrintTupleTo(const T& t, ::std::ostream* os) { + *os << "("; + TuplePrefixPrinter< ::std::tr1::tuple_size::value>:: + PrintPrefixTo(t, os); + *os << ")"; +} + +// Prints the fields of a tuple tersely to a string vector, one +// element for each field. See the comment before +// UniversalTersePrint() for how we define "tersely". +template +Strings UniversalTersePrintTupleFieldsToStrings(const Tuple& value) { + Strings result; + TuplePrefixPrinter< ::std::tr1::tuple_size::value>:: + TersePrintPrefixToStrings(value, &result); + return result; +} +#endif // GTEST_HAS_TR1_TUPLE + +} // namespace internal + +template +::std::string PrintToString(const T& value) { + ::std::stringstream ss; + internal::UniversalTersePrinter::Print(value, &ss); + return ss.str(); +} + +} // namespace testing + +#endif // GTEST_INCLUDE_GTEST_GTEST_PRINTERS_H_ + +#if GTEST_HAS_PARAM_TEST + +namespace testing { +namespace internal { + +// INTERNAL IMPLEMENTATION - DO NOT USE IN USER CODE. +// +// Outputs a message explaining invalid registration of different +// fixture class for the same test case. This may happen when +// TEST_P macro is used to define two tests with the same name +// but in different namespaces. +GTEST_API_ void ReportInvalidTestCaseType(const char* test_case_name, + const char* file, int line); + +template class ParamGeneratorInterface; +template class ParamGenerator; + +// Interface for iterating over elements provided by an implementation +// of ParamGeneratorInterface. +template +class ParamIteratorInterface { + public: + virtual ~ParamIteratorInterface() {} + // A pointer to the base generator instance. + // Used only for the purposes of iterator comparison + // to make sure that two iterators belong to the same generator. + virtual const ParamGeneratorInterface* BaseGenerator() const = 0; + // Advances iterator to point to the next element + // provided by the generator. The caller is responsible + // for not calling Advance() on an iterator equal to + // BaseGenerator()->End(). + virtual void Advance() = 0; + // Clones the iterator object. Used for implementing copy semantics + // of ParamIterator. + virtual ParamIteratorInterface* Clone() const = 0; + // Dereferences the current iterator and provides (read-only) access + // to the pointed value. It is the caller's responsibility not to call + // Current() on an iterator equal to BaseGenerator()->End(). + // Used for implementing ParamGenerator::operator*(). + virtual const T* Current() const = 0; + // Determines whether the given iterator and other point to the same + // element in the sequence generated by the generator. + // Used for implementing ParamGenerator::operator==(). + virtual bool Equals(const ParamIteratorInterface& other) const = 0; +}; + +// Class iterating over elements provided by an implementation of +// ParamGeneratorInterface. It wraps ParamIteratorInterface +// and implements the const forward iterator concept. +template +class ParamIterator { + public: + typedef T value_type; + typedef const T& reference; + typedef ptrdiff_t difference_type; + + // ParamIterator assumes ownership of the impl_ pointer. + ParamIterator(const ParamIterator& other) : impl_(other.impl_->Clone()) {} + ParamIterator& operator=(const ParamIterator& other) { + if (this != &other) + impl_.reset(other.impl_->Clone()); + return *this; + } + + const T& operator*() const { return *impl_->Current(); } + const T* operator->() const { return impl_->Current(); } + // Prefix version of operator++. + ParamIterator& operator++() { + impl_->Advance(); + return *this; + } + // Postfix version of operator++. + ParamIterator operator++(int /*unused*/) { + ParamIteratorInterface* clone = impl_->Clone(); + impl_->Advance(); + return ParamIterator(clone); + } + bool operator==(const ParamIterator& other) const { + return impl_.get() == other.impl_.get() || impl_->Equals(*other.impl_); + } + bool operator!=(const ParamIterator& other) const { + return !(*this == other); + } + + private: + friend class ParamGenerator; + explicit ParamIterator(ParamIteratorInterface* impl) : impl_(impl) {} + scoped_ptr > impl_; +}; + +// ParamGeneratorInterface is the binary interface to access generators +// defined in other translation units. +template +class ParamGeneratorInterface { + public: + typedef T ParamType; + + virtual ~ParamGeneratorInterface() {} + + // Generator interface definition + virtual ParamIteratorInterface* Begin() const = 0; + virtual ParamIteratorInterface* End() const = 0; +}; + +// Wraps ParamGeneratorInterface and provides general generator syntax +// compatible with the STL Container concept. +// This class implements copy initialization semantics and the contained +// ParamGeneratorInterface instance is shared among all copies +// of the original object. This is possible because that instance is immutable. +template +class ParamGenerator { + public: + typedef ParamIterator iterator; + + explicit ParamGenerator(ParamGeneratorInterface* impl) : impl_(impl) {} + ParamGenerator(const ParamGenerator& other) : impl_(other.impl_) {} + + ParamGenerator& operator=(const ParamGenerator& other) { + impl_ = other.impl_; + return *this; + } + + iterator begin() const { return iterator(impl_->Begin()); } + iterator end() const { return iterator(impl_->End()); } + + private: + linked_ptr > impl_; +}; + +// Generates values from a range of two comparable values. Can be used to +// generate sequences of user-defined types that implement operator+() and +// operator<(). +// This class is used in the Range() function. +template +class RangeGenerator : public ParamGeneratorInterface { + public: + RangeGenerator(T begin, T end, IncrementT step) + : begin_(begin), end_(end), + step_(step), end_index_(CalculateEndIndex(begin, end, step)) {} + virtual ~RangeGenerator() {} + + virtual ParamIteratorInterface* Begin() const { + return new Iterator(this, begin_, 0, step_); + } + virtual ParamIteratorInterface* End() const { + return new Iterator(this, end_, end_index_, step_); + } + + private: + class Iterator : public ParamIteratorInterface { + public: + Iterator(const ParamGeneratorInterface* base, T value, int index, + IncrementT step) + : base_(base), value_(value), index_(index), step_(step) {} + virtual ~Iterator() {} + + virtual const ParamGeneratorInterface* BaseGenerator() const { + return base_; + } + virtual void Advance() { + value_ = value_ + step_; + index_++; + } + virtual ParamIteratorInterface* Clone() const { + return new Iterator(*this); + } + virtual const T* Current() const { return &value_; } + virtual bool Equals(const ParamIteratorInterface& other) const { + // Having the same base generator guarantees that the other + // iterator is of the same type and we can downcast. + GTEST_CHECK_(BaseGenerator() == other.BaseGenerator()) + << "The program attempted to compare iterators " + << "from different generators." << std::endl; + const int other_index = + CheckedDowncastToActualType(&other)->index_; + return index_ == other_index; + } + + private: + Iterator(const Iterator& other) + : ParamIteratorInterface(), + base_(other.base_), value_(other.value_), index_(other.index_), + step_(other.step_) {} + + // No implementation - assignment is unsupported. + void operator=(const Iterator& other); + + const ParamGeneratorInterface* const base_; + T value_; + int index_; + const IncrementT step_; + }; // class RangeGenerator::Iterator + + static int CalculateEndIndex(const T& begin, + const T& end, + const IncrementT& step) { + int end_index = 0; + for (T i = begin; i < end; i = i + step) + end_index++; + return end_index; + } + + // No implementation - assignment is unsupported. + void operator=(const RangeGenerator& other); + + const T begin_; + const T end_; + const IncrementT step_; + // The index for the end() iterator. All the elements in the generated + // sequence are indexed (0-based) to aid iterator comparison. + const int end_index_; +}; // class RangeGenerator + + +// Generates values from a pair of STL-style iterators. Used in the +// ValuesIn() function. The elements are copied from the source range +// since the source can be located on the stack, and the generator +// is likely to persist beyond that stack frame. +template +class ValuesInIteratorRangeGenerator : public ParamGeneratorInterface { + public: + template + ValuesInIteratorRangeGenerator(ForwardIterator begin, ForwardIterator end) + : container_(begin, end) {} + virtual ~ValuesInIteratorRangeGenerator() {} + + virtual ParamIteratorInterface* Begin() const { + return new Iterator(this, container_.begin()); + } + virtual ParamIteratorInterface* End() const { + return new Iterator(this, container_.end()); + } + + private: + typedef typename ::std::vector ContainerType; + + class Iterator : public ParamIteratorInterface { + public: + Iterator(const ParamGeneratorInterface* base, + typename ContainerType::const_iterator iterator) + : base_(base), iterator_(iterator) {} + virtual ~Iterator() {} + + virtual const ParamGeneratorInterface* BaseGenerator() const { + return base_; + } + virtual void Advance() { + ++iterator_; + value_.reset(); + } + virtual ParamIteratorInterface* Clone() const { + return new Iterator(*this); + } + // We need to use cached value referenced by iterator_ because *iterator_ + // can return a temporary object (and of type other then T), so just + // having "return &*iterator_;" doesn't work. + // value_ is updated here and not in Advance() because Advance() + // can advance iterator_ beyond the end of the range, and we cannot + // detect that fact. The client code, on the other hand, is + // responsible for not calling Current() on an out-of-range iterator. + virtual const T* Current() const { + if (value_.get() == NULL) + value_.reset(new T(*iterator_)); + return value_.get(); + } + virtual bool Equals(const ParamIteratorInterface& other) const { + // Having the same base generator guarantees that the other + // iterator is of the same type and we can downcast. + GTEST_CHECK_(BaseGenerator() == other.BaseGenerator()) + << "The program attempted to compare iterators " + << "from different generators." << std::endl; + return iterator_ == + CheckedDowncastToActualType(&other)->iterator_; + } + + private: + Iterator(const Iterator& other) + // The explicit constructor call suppresses a false warning + // emitted by gcc when supplied with the -Wextra option. + : ParamIteratorInterface(), + base_(other.base_), + iterator_(other.iterator_) {} + + const ParamGeneratorInterface* const base_; + typename ContainerType::const_iterator iterator_; + // A cached value of *iterator_. We keep it here to allow access by + // pointer in the wrapping iterator's operator->(). + // value_ needs to be mutable to be accessed in Current(). + // Use of scoped_ptr helps manage cached value's lifetime, + // which is bound by the lifespan of the iterator itself. + mutable scoped_ptr value_; + }; // class ValuesInIteratorRangeGenerator::Iterator + + // No implementation - assignment is unsupported. + void operator=(const ValuesInIteratorRangeGenerator& other); + + const ContainerType container_; +}; // class ValuesInIteratorRangeGenerator + +// INTERNAL IMPLEMENTATION - DO NOT USE IN USER CODE. +// +// Stores a parameter value and later creates tests parameterized with that +// value. +template +class ParameterizedTestFactory : public TestFactoryBase { + public: + typedef typename TestClass::ParamType ParamType; + explicit ParameterizedTestFactory(ParamType parameter) : + parameter_(parameter) {} + virtual Test* CreateTest() { + TestClass::SetParam(¶meter_); + return new TestClass(); + } + + private: + const ParamType parameter_; + + GTEST_DISALLOW_COPY_AND_ASSIGN_(ParameterizedTestFactory); +}; + +// INTERNAL IMPLEMENTATION - DO NOT USE IN USER CODE. +// +// TestMetaFactoryBase is a base class for meta-factories that create +// test factories for passing into MakeAndRegisterTestInfo function. +template +class TestMetaFactoryBase { + public: + virtual ~TestMetaFactoryBase() {} + + virtual TestFactoryBase* CreateTestFactory(ParamType parameter) = 0; +}; + +// INTERNAL IMPLEMENTATION - DO NOT USE IN USER CODE. +// +// TestMetaFactory creates test factories for passing into +// MakeAndRegisterTestInfo function. Since MakeAndRegisterTestInfo receives +// ownership of test factory pointer, same factory object cannot be passed +// into that method twice. But ParameterizedTestCaseInfo is going to call +// it for each Test/Parameter value combination. Thus it needs meta factory +// creator class. +template +class TestMetaFactory + : public TestMetaFactoryBase { + public: + typedef typename TestCase::ParamType ParamType; + + TestMetaFactory() {} + + virtual TestFactoryBase* CreateTestFactory(ParamType parameter) { + return new ParameterizedTestFactory(parameter); + } + + private: + GTEST_DISALLOW_COPY_AND_ASSIGN_(TestMetaFactory); +}; + +// INTERNAL IMPLEMENTATION - DO NOT USE IN USER CODE. +// +// ParameterizedTestCaseInfoBase is a generic interface +// to ParameterizedTestCaseInfo classes. ParameterizedTestCaseInfoBase +// accumulates test information provided by TEST_P macro invocations +// and generators provided by INSTANTIATE_TEST_CASE_P macro invocations +// and uses that information to register all resulting test instances +// in RegisterTests method. The ParameterizeTestCaseRegistry class holds +// a collection of pointers to the ParameterizedTestCaseInfo objects +// and calls RegisterTests() on each of them when asked. +class ParameterizedTestCaseInfoBase { + public: + virtual ~ParameterizedTestCaseInfoBase() {} + + // Base part of test case name for display purposes. + virtual const string& GetTestCaseName() const = 0; + // Test case id to verify identity. + virtual TypeId GetTestCaseTypeId() const = 0; + // UnitTest class invokes this method to register tests in this + // test case right before running them in RUN_ALL_TESTS macro. + // This method should not be called more then once on any single + // instance of a ParameterizedTestCaseInfoBase derived class. + virtual void RegisterTests() = 0; + + protected: + ParameterizedTestCaseInfoBase() {} + + private: + GTEST_DISALLOW_COPY_AND_ASSIGN_(ParameterizedTestCaseInfoBase); +}; + +// INTERNAL IMPLEMENTATION - DO NOT USE IN USER CODE. +// +// ParameterizedTestCaseInfo accumulates tests obtained from TEST_P +// macro invocations for a particular test case and generators +// obtained from INSTANTIATE_TEST_CASE_P macro invocations for that +// test case. It registers tests with all values generated by all +// generators when asked. +template +class ParameterizedTestCaseInfo : public ParameterizedTestCaseInfoBase { + public: + // ParamType and GeneratorCreationFunc are private types but are required + // for declarations of public methods AddTestPattern() and + // AddTestCaseInstantiation(). + typedef typename TestCase::ParamType ParamType; + // A function that returns an instance of appropriate generator type. + typedef ParamGenerator(GeneratorCreationFunc)(); + + explicit ParameterizedTestCaseInfo(const char* name) + : test_case_name_(name) {} + + // Test case base name for display purposes. + virtual const string& GetTestCaseName() const { return test_case_name_; } + // Test case id to verify identity. + virtual TypeId GetTestCaseTypeId() const { return GetTypeId(); } + // TEST_P macro uses AddTestPattern() to record information + // about a single test in a LocalTestInfo structure. + // test_case_name is the base name of the test case (without invocation + // prefix). test_base_name is the name of an individual test without + // parameter index. For the test SequenceA/FooTest.DoBar/1 FooTest is + // test case base name and DoBar is test base name. + void AddTestPattern(const char* test_case_name, + const char* test_base_name, + TestMetaFactoryBase* meta_factory) { + tests_.push_back(linked_ptr(new TestInfo(test_case_name, + test_base_name, + meta_factory))); + } + // INSTANTIATE_TEST_CASE_P macro uses AddGenerator() to record information + // about a generator. + int AddTestCaseInstantiation(const string& instantiation_name, + GeneratorCreationFunc* func, + const char* /* file */, + int /* line */) { + instantiations_.push_back(::std::make_pair(instantiation_name, func)); + return 0; // Return value used only to run this method in namespace scope. + } + // UnitTest class invokes this method to register tests in this test case + // test cases right before running tests in RUN_ALL_TESTS macro. + // This method should not be called more then once on any single + // instance of a ParameterizedTestCaseInfoBase derived class. + // UnitTest has a guard to prevent from calling this method more then once. + virtual void RegisterTests() { + for (typename TestInfoContainer::iterator test_it = tests_.begin(); + test_it != tests_.end(); ++test_it) { + linked_ptr test_info = *test_it; + for (typename InstantiationContainer::iterator gen_it = + instantiations_.begin(); gen_it != instantiations_.end(); + ++gen_it) { + const string& instantiation_name = gen_it->first; + ParamGenerator generator((*gen_it->second)()); + + Message test_case_name_stream; + if ( !instantiation_name.empty() ) + test_case_name_stream << instantiation_name << "/"; + test_case_name_stream << test_info->test_case_base_name; + + int i = 0; + for (typename ParamGenerator::iterator param_it = + generator.begin(); + param_it != generator.end(); ++param_it, ++i) { + Message test_name_stream; + test_name_stream << test_info->test_base_name << "/" << i; + MakeAndRegisterTestInfo( + test_case_name_stream.GetString().c_str(), + test_name_stream.GetString().c_str(), + NULL, // No type parameter. + PrintToString(*param_it).c_str(), + GetTestCaseTypeId(), + TestCase::SetUpTestCase, + TestCase::TearDownTestCase, + test_info->test_meta_factory->CreateTestFactory(*param_it)); + } // for param_it + } // for gen_it + } // for test_it + } // RegisterTests + + private: + // LocalTestInfo structure keeps information about a single test registered + // with TEST_P macro. + struct TestInfo { + TestInfo(const char* a_test_case_base_name, + const char* a_test_base_name, + TestMetaFactoryBase* a_test_meta_factory) : + test_case_base_name(a_test_case_base_name), + test_base_name(a_test_base_name), + test_meta_factory(a_test_meta_factory) {} + + const string test_case_base_name; + const string test_base_name; + const scoped_ptr > test_meta_factory; + }; + typedef ::std::vector > TestInfoContainer; + // Keeps pairs of + // received from INSTANTIATE_TEST_CASE_P macros. + typedef ::std::vector > + InstantiationContainer; + + const string test_case_name_; + TestInfoContainer tests_; + InstantiationContainer instantiations_; + + GTEST_DISALLOW_COPY_AND_ASSIGN_(ParameterizedTestCaseInfo); +}; // class ParameterizedTestCaseInfo + +// INTERNAL IMPLEMENTATION - DO NOT USE IN USER CODE. +// +// ParameterizedTestCaseRegistry contains a map of ParameterizedTestCaseInfoBase +// classes accessed by test case names. TEST_P and INSTANTIATE_TEST_CASE_P +// macros use it to locate their corresponding ParameterizedTestCaseInfo +// descriptors. +class ParameterizedTestCaseRegistry { + public: + ParameterizedTestCaseRegistry() {} + ~ParameterizedTestCaseRegistry() { + for (TestCaseInfoContainer::iterator it = test_case_infos_.begin(); + it != test_case_infos_.end(); ++it) { + delete *it; + } + } + + // Looks up or creates and returns a structure containing information about + // tests and instantiations of a particular test case. + template + ParameterizedTestCaseInfo* GetTestCasePatternHolder( + const char* test_case_name, + const char* file, + int line) { + ParameterizedTestCaseInfo* typed_test_info = NULL; + for (TestCaseInfoContainer::iterator it = test_case_infos_.begin(); + it != test_case_infos_.end(); ++it) { + if ((*it)->GetTestCaseName() == test_case_name) { + if ((*it)->GetTestCaseTypeId() != GetTypeId()) { + // Complain about incorrect usage of Google Test facilities + // and terminate the program since we cannot guaranty correct + // test case setup and tear-down in this case. + ReportInvalidTestCaseType(test_case_name, file, line); + posix::Abort(); + } else { + // At this point we are sure that the object we found is of the same + // type we are looking for, so we downcast it to that type + // without further checks. + typed_test_info = CheckedDowncastToActualType< + ParameterizedTestCaseInfo >(*it); + } + break; + } + } + if (typed_test_info == NULL) { + typed_test_info = new ParameterizedTestCaseInfo(test_case_name); + test_case_infos_.push_back(typed_test_info); + } + return typed_test_info; + } + void RegisterTests() { + for (TestCaseInfoContainer::iterator it = test_case_infos_.begin(); + it != test_case_infos_.end(); ++it) { + (*it)->RegisterTests(); + } + } + + private: + typedef ::std::vector TestCaseInfoContainer; + + TestCaseInfoContainer test_case_infos_; + + GTEST_DISALLOW_COPY_AND_ASSIGN_(ParameterizedTestCaseRegistry); +}; + +} // namespace internal +} // namespace testing + +#endif // GTEST_HAS_PARAM_TEST + +#endif // GTEST_INCLUDE_GTEST_INTERNAL_GTEST_PARAM_UTIL_H_ +// This file was GENERATED by command: +// pump.py gtest-param-util-generated.h.pump +// DO NOT EDIT BY HAND!!! + +// Copyright 2008 Google Inc. +// All Rights Reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Author: vladl@google.com (Vlad Losev) + +// Type and function utilities for implementing parameterized tests. +// This file is generated by a SCRIPT. DO NOT EDIT BY HAND! +// +// Currently Google Test supports at most 50 arguments in Values, +// and at most 10 arguments in Combine. Please contact +// googletestframework@googlegroups.com if you need more. +// Please note that the number of arguments to Combine is limited +// by the maximum arity of the implementation of tr1::tuple which is +// currently set at 10. + +#ifndef GTEST_INCLUDE_GTEST_INTERNAL_GTEST_PARAM_UTIL_GENERATED_H_ +#define GTEST_INCLUDE_GTEST_INTERNAL_GTEST_PARAM_UTIL_GENERATED_H_ + +// scripts/fuse_gtest.py depends on gtest's own header being #included +// *unconditionally*. Therefore these #includes cannot be moved +// inside #if GTEST_HAS_PARAM_TEST. + +#if GTEST_HAS_PARAM_TEST + +namespace testing { + +// Forward declarations of ValuesIn(), which is implemented in +// include/gtest/gtest-param-test.h. +template +internal::ParamGenerator< + typename ::testing::internal::IteratorTraits::value_type> +ValuesIn(ForwardIterator begin, ForwardIterator end); + +template +internal::ParamGenerator ValuesIn(const T (&array)[N]); + +template +internal::ParamGenerator ValuesIn( + const Container& container); + +namespace internal { + +// Used in the Values() function to provide polymorphic capabilities. +template +class ValueArray1 { + public: + explicit ValueArray1(T1 v1) : v1_(v1) {} + + template + operator ParamGenerator() const { return ValuesIn(&v1_, &v1_ + 1); } + + private: + // No implementation - assignment is unsupported. + void operator=(const ValueArray1& other); + + const T1 v1_; +}; + +template +class ValueArray2 { + public: + ValueArray2(T1 v1, T2 v2) : v1_(v1), v2_(v2) {} + + template + operator ParamGenerator() const { + const T array[] = {static_cast(v1_), static_cast(v2_)}; + return ValuesIn(array); + } + + private: + // No implementation - assignment is unsupported. + void operator=(const ValueArray2& other); + + const T1 v1_; + const T2 v2_; +}; + +template +class ValueArray3 { + public: + ValueArray3(T1 v1, T2 v2, T3 v3) : v1_(v1), v2_(v2), v3_(v3) {} + + template + operator ParamGenerator() const { + const T array[] = {static_cast(v1_), static_cast(v2_), + static_cast(v3_)}; + return ValuesIn(array); + } + + private: + // No implementation - assignment is unsupported. + void operator=(const ValueArray3& other); + + const T1 v1_; + const T2 v2_; + const T3 v3_; +}; + +template +class ValueArray4 { + public: + ValueArray4(T1 v1, T2 v2, T3 v3, T4 v4) : v1_(v1), v2_(v2), v3_(v3), + v4_(v4) {} + + template + operator ParamGenerator() const { + const T array[] = {static_cast(v1_), static_cast(v2_), + static_cast(v3_), static_cast(v4_)}; + return ValuesIn(array); + } + + private: + // No implementation - assignment is unsupported. + void operator=(const ValueArray4& other); + + const T1 v1_; + const T2 v2_; + const T3 v3_; + const T4 v4_; +}; + +template +class ValueArray5 { + public: + ValueArray5(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5) : v1_(v1), v2_(v2), v3_(v3), + v4_(v4), v5_(v5) {} + + template + operator ParamGenerator() const { + const T array[] = {static_cast(v1_), static_cast(v2_), + static_cast(v3_), static_cast(v4_), static_cast(v5_)}; + return ValuesIn(array); + } + + private: + // No implementation - assignment is unsupported. + void operator=(const ValueArray5& other); + + const T1 v1_; + const T2 v2_; + const T3 v3_; + const T4 v4_; + const T5 v5_; +}; + +template +class ValueArray6 { + public: + ValueArray6(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6) : v1_(v1), v2_(v2), + v3_(v3), v4_(v4), v5_(v5), v6_(v6) {} + + template + operator ParamGenerator() const { + const T array[] = {static_cast(v1_), static_cast(v2_), + static_cast(v3_), static_cast(v4_), static_cast(v5_), + static_cast(v6_)}; + return ValuesIn(array); + } + + private: + // No implementation - assignment is unsupported. + void operator=(const ValueArray6& other); + + const T1 v1_; + const T2 v2_; + const T3 v3_; + const T4 v4_; + const T5 v5_; + const T6 v6_; +}; + +template +class ValueArray7 { + public: + ValueArray7(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7) : v1_(v1), + v2_(v2), v3_(v3), v4_(v4), v5_(v5), v6_(v6), v7_(v7) {} + + template + operator ParamGenerator() const { + const T array[] = {static_cast(v1_), static_cast(v2_), + static_cast(v3_), static_cast(v4_), static_cast(v5_), + static_cast(v6_), static_cast(v7_)}; + return ValuesIn(array); + } + + private: + // No implementation - assignment is unsupported. + void operator=(const ValueArray7& other); + + const T1 v1_; + const T2 v2_; + const T3 v3_; + const T4 v4_; + const T5 v5_; + const T6 v6_; + const T7 v7_; +}; + +template +class ValueArray8 { + public: + ValueArray8(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, + T8 v8) : v1_(v1), v2_(v2), v3_(v3), v4_(v4), v5_(v5), v6_(v6), v7_(v7), + v8_(v8) {} + + template + operator ParamGenerator() const { + const T array[] = {static_cast(v1_), static_cast(v2_), + static_cast(v3_), static_cast(v4_), static_cast(v5_), + static_cast(v6_), static_cast(v7_), static_cast(v8_)}; + return ValuesIn(array); + } + + private: + // No implementation - assignment is unsupported. + void operator=(const ValueArray8& other); + + const T1 v1_; + const T2 v2_; + const T3 v3_; + const T4 v4_; + const T5 v5_; + const T6 v6_; + const T7 v7_; + const T8 v8_; +}; + +template +class ValueArray9 { + public: + ValueArray9(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, + T9 v9) : v1_(v1), v2_(v2), v3_(v3), v4_(v4), v5_(v5), v6_(v6), v7_(v7), + v8_(v8), v9_(v9) {} + + template + operator ParamGenerator() const { + const T array[] = {static_cast(v1_), static_cast(v2_), + static_cast(v3_), static_cast(v4_), static_cast(v5_), + static_cast(v6_), static_cast(v7_), static_cast(v8_), + static_cast(v9_)}; + return ValuesIn(array); + } + + private: + // No implementation - assignment is unsupported. + void operator=(const ValueArray9& other); + + const T1 v1_; + const T2 v2_; + const T3 v3_; + const T4 v4_; + const T5 v5_; + const T6 v6_; + const T7 v7_; + const T8 v8_; + const T9 v9_; +}; + +template +class ValueArray10 { + public: + ValueArray10(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, + T10 v10) : v1_(v1), v2_(v2), v3_(v3), v4_(v4), v5_(v5), v6_(v6), v7_(v7), + v8_(v8), v9_(v9), v10_(v10) {} + + template + operator ParamGenerator() const { + const T array[] = {static_cast(v1_), static_cast(v2_), + static_cast(v3_), static_cast(v4_), static_cast(v5_), + static_cast(v6_), static_cast(v7_), static_cast(v8_), + static_cast(v9_), static_cast(v10_)}; + return ValuesIn(array); + } + + private: + // No implementation - assignment is unsupported. + void operator=(const ValueArray10& other); + + const T1 v1_; + const T2 v2_; + const T3 v3_; + const T4 v4_; + const T5 v5_; + const T6 v6_; + const T7 v7_; + const T8 v8_; + const T9 v9_; + const T10 v10_; +}; + +template +class ValueArray11 { + public: + ValueArray11(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, + T10 v10, T11 v11) : v1_(v1), v2_(v2), v3_(v3), v4_(v4), v5_(v5), v6_(v6), + v7_(v7), v8_(v8), v9_(v9), v10_(v10), v11_(v11) {} + + template + operator ParamGenerator() const { + const T array[] = {static_cast(v1_), static_cast(v2_), + static_cast(v3_), static_cast(v4_), static_cast(v5_), + static_cast(v6_), static_cast(v7_), static_cast(v8_), + static_cast(v9_), static_cast(v10_), static_cast(v11_)}; + return ValuesIn(array); + } + + private: + // No implementation - assignment is unsupported. + void operator=(const ValueArray11& other); + + const T1 v1_; + const T2 v2_; + const T3 v3_; + const T4 v4_; + const T5 v5_; + const T6 v6_; + const T7 v7_; + const T8 v8_; + const T9 v9_; + const T10 v10_; + const T11 v11_; +}; + +template +class ValueArray12 { + public: + ValueArray12(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, + T10 v10, T11 v11, T12 v12) : v1_(v1), v2_(v2), v3_(v3), v4_(v4), v5_(v5), + v6_(v6), v7_(v7), v8_(v8), v9_(v9), v10_(v10), v11_(v11), v12_(v12) {} + + template + operator ParamGenerator() const { + const T array[] = {static_cast(v1_), static_cast(v2_), + static_cast(v3_), static_cast(v4_), static_cast(v5_), + static_cast(v6_), static_cast(v7_), static_cast(v8_), + static_cast(v9_), static_cast(v10_), static_cast(v11_), + static_cast(v12_)}; + return ValuesIn(array); + } + + private: + // No implementation - assignment is unsupported. + void operator=(const ValueArray12& other); + + const T1 v1_; + const T2 v2_; + const T3 v3_; + const T4 v4_; + const T5 v5_; + const T6 v6_; + const T7 v7_; + const T8 v8_; + const T9 v9_; + const T10 v10_; + const T11 v11_; + const T12 v12_; +}; + +template +class ValueArray13 { + public: + ValueArray13(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, + T10 v10, T11 v11, T12 v12, T13 v13) : v1_(v1), v2_(v2), v3_(v3), v4_(v4), + v5_(v5), v6_(v6), v7_(v7), v8_(v8), v9_(v9), v10_(v10), v11_(v11), + v12_(v12), v13_(v13) {} + + template + operator ParamGenerator() const { + const T array[] = {static_cast(v1_), static_cast(v2_), + static_cast(v3_), static_cast(v4_), static_cast(v5_), + static_cast(v6_), static_cast(v7_), static_cast(v8_), + static_cast(v9_), static_cast(v10_), static_cast(v11_), + static_cast(v12_), static_cast(v13_)}; + return ValuesIn(array); + } + + private: + // No implementation - assignment is unsupported. + void operator=(const ValueArray13& other); + + const T1 v1_; + const T2 v2_; + const T3 v3_; + const T4 v4_; + const T5 v5_; + const T6 v6_; + const T7 v7_; + const T8 v8_; + const T9 v9_; + const T10 v10_; + const T11 v11_; + const T12 v12_; + const T13 v13_; +}; + +template +class ValueArray14 { + public: + ValueArray14(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, + T10 v10, T11 v11, T12 v12, T13 v13, T14 v14) : v1_(v1), v2_(v2), v3_(v3), + v4_(v4), v5_(v5), v6_(v6), v7_(v7), v8_(v8), v9_(v9), v10_(v10), + v11_(v11), v12_(v12), v13_(v13), v14_(v14) {} + + template + operator ParamGenerator() const { + const T array[] = {static_cast(v1_), static_cast(v2_), + static_cast(v3_), static_cast(v4_), static_cast(v5_), + static_cast(v6_), static_cast(v7_), static_cast(v8_), + static_cast(v9_), static_cast(v10_), static_cast(v11_), + static_cast(v12_), static_cast(v13_), static_cast(v14_)}; + return ValuesIn(array); + } + + private: + // No implementation - assignment is unsupported. + void operator=(const ValueArray14& other); + + const T1 v1_; + const T2 v2_; + const T3 v3_; + const T4 v4_; + const T5 v5_; + const T6 v6_; + const T7 v7_; + const T8 v8_; + const T9 v9_; + const T10 v10_; + const T11 v11_; + const T12 v12_; + const T13 v13_; + const T14 v14_; +}; + +template +class ValueArray15 { + public: + ValueArray15(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, + T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15) : v1_(v1), v2_(v2), + v3_(v3), v4_(v4), v5_(v5), v6_(v6), v7_(v7), v8_(v8), v9_(v9), v10_(v10), + v11_(v11), v12_(v12), v13_(v13), v14_(v14), v15_(v15) {} + + template + operator ParamGenerator() const { + const T array[] = {static_cast(v1_), static_cast(v2_), + static_cast(v3_), static_cast(v4_), static_cast(v5_), + static_cast(v6_), static_cast(v7_), static_cast(v8_), + static_cast(v9_), static_cast(v10_), static_cast(v11_), + static_cast(v12_), static_cast(v13_), static_cast(v14_), + static_cast(v15_)}; + return ValuesIn(array); + } + + private: + // No implementation - assignment is unsupported. + void operator=(const ValueArray15& other); + + const T1 v1_; + const T2 v2_; + const T3 v3_; + const T4 v4_; + const T5 v5_; + const T6 v6_; + const T7 v7_; + const T8 v8_; + const T9 v9_; + const T10 v10_; + const T11 v11_; + const T12 v12_; + const T13 v13_; + const T14 v14_; + const T15 v15_; +}; + +template +class ValueArray16 { + public: + ValueArray16(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, + T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16) : v1_(v1), + v2_(v2), v3_(v3), v4_(v4), v5_(v5), v6_(v6), v7_(v7), v8_(v8), v9_(v9), + v10_(v10), v11_(v11), v12_(v12), v13_(v13), v14_(v14), v15_(v15), + v16_(v16) {} + + template + operator ParamGenerator() const { + const T array[] = {static_cast(v1_), static_cast(v2_), + static_cast(v3_), static_cast(v4_), static_cast(v5_), + static_cast(v6_), static_cast(v7_), static_cast(v8_), + static_cast(v9_), static_cast(v10_), static_cast(v11_), + static_cast(v12_), static_cast(v13_), static_cast(v14_), + static_cast(v15_), static_cast(v16_)}; + return ValuesIn(array); + } + + private: + // No implementation - assignment is unsupported. + void operator=(const ValueArray16& other); + + const T1 v1_; + const T2 v2_; + const T3 v3_; + const T4 v4_; + const T5 v5_; + const T6 v6_; + const T7 v7_; + const T8 v8_; + const T9 v9_; + const T10 v10_; + const T11 v11_; + const T12 v12_; + const T13 v13_; + const T14 v14_; + const T15 v15_; + const T16 v16_; +}; + +template +class ValueArray17 { + public: + ValueArray17(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, + T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, + T17 v17) : v1_(v1), v2_(v2), v3_(v3), v4_(v4), v5_(v5), v6_(v6), v7_(v7), + v8_(v8), v9_(v9), v10_(v10), v11_(v11), v12_(v12), v13_(v13), v14_(v14), + v15_(v15), v16_(v16), v17_(v17) {} + + template + operator ParamGenerator() const { + const T array[] = {static_cast(v1_), static_cast(v2_), + static_cast(v3_), static_cast(v4_), static_cast(v5_), + static_cast(v6_), static_cast(v7_), static_cast(v8_), + static_cast(v9_), static_cast(v10_), static_cast(v11_), + static_cast(v12_), static_cast(v13_), static_cast(v14_), + static_cast(v15_), static_cast(v16_), static_cast(v17_)}; + return ValuesIn(array); + } + + private: + // No implementation - assignment is unsupported. + void operator=(const ValueArray17& other); + + const T1 v1_; + const T2 v2_; + const T3 v3_; + const T4 v4_; + const T5 v5_; + const T6 v6_; + const T7 v7_; + const T8 v8_; + const T9 v9_; + const T10 v10_; + const T11 v11_; + const T12 v12_; + const T13 v13_; + const T14 v14_; + const T15 v15_; + const T16 v16_; + const T17 v17_; +}; + +template +class ValueArray18 { + public: + ValueArray18(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, + T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, + T18 v18) : v1_(v1), v2_(v2), v3_(v3), v4_(v4), v5_(v5), v6_(v6), v7_(v7), + v8_(v8), v9_(v9), v10_(v10), v11_(v11), v12_(v12), v13_(v13), v14_(v14), + v15_(v15), v16_(v16), v17_(v17), v18_(v18) {} + + template + operator ParamGenerator() const { + const T array[] = {static_cast(v1_), static_cast(v2_), + static_cast(v3_), static_cast(v4_), static_cast(v5_), + static_cast(v6_), static_cast(v7_), static_cast(v8_), + static_cast(v9_), static_cast(v10_), static_cast(v11_), + static_cast(v12_), static_cast(v13_), static_cast(v14_), + static_cast(v15_), static_cast(v16_), static_cast(v17_), + static_cast(v18_)}; + return ValuesIn(array); + } + + private: + // No implementation - assignment is unsupported. + void operator=(const ValueArray18& other); + + const T1 v1_; + const T2 v2_; + const T3 v3_; + const T4 v4_; + const T5 v5_; + const T6 v6_; + const T7 v7_; + const T8 v8_; + const T9 v9_; + const T10 v10_; + const T11 v11_; + const T12 v12_; + const T13 v13_; + const T14 v14_; + const T15 v15_; + const T16 v16_; + const T17 v17_; + const T18 v18_; +}; + +template +class ValueArray19 { + public: + ValueArray19(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, + T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, + T18 v18, T19 v19) : v1_(v1), v2_(v2), v3_(v3), v4_(v4), v5_(v5), v6_(v6), + v7_(v7), v8_(v8), v9_(v9), v10_(v10), v11_(v11), v12_(v12), v13_(v13), + v14_(v14), v15_(v15), v16_(v16), v17_(v17), v18_(v18), v19_(v19) {} + + template + operator ParamGenerator() const { + const T array[] = {static_cast(v1_), static_cast(v2_), + static_cast(v3_), static_cast(v4_), static_cast(v5_), + static_cast(v6_), static_cast(v7_), static_cast(v8_), + static_cast(v9_), static_cast(v10_), static_cast(v11_), + static_cast(v12_), static_cast(v13_), static_cast(v14_), + static_cast(v15_), static_cast(v16_), static_cast(v17_), + static_cast(v18_), static_cast(v19_)}; + return ValuesIn(array); + } + + private: + // No implementation - assignment is unsupported. + void operator=(const ValueArray19& other); + + const T1 v1_; + const T2 v2_; + const T3 v3_; + const T4 v4_; + const T5 v5_; + const T6 v6_; + const T7 v7_; + const T8 v8_; + const T9 v9_; + const T10 v10_; + const T11 v11_; + const T12 v12_; + const T13 v13_; + const T14 v14_; + const T15 v15_; + const T16 v16_; + const T17 v17_; + const T18 v18_; + const T19 v19_; +}; + +template +class ValueArray20 { + public: + ValueArray20(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, + T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, + T18 v18, T19 v19, T20 v20) : v1_(v1), v2_(v2), v3_(v3), v4_(v4), v5_(v5), + v6_(v6), v7_(v7), v8_(v8), v9_(v9), v10_(v10), v11_(v11), v12_(v12), + v13_(v13), v14_(v14), v15_(v15), v16_(v16), v17_(v17), v18_(v18), + v19_(v19), v20_(v20) {} + + template + operator ParamGenerator() const { + const T array[] = {static_cast(v1_), static_cast(v2_), + static_cast(v3_), static_cast(v4_), static_cast(v5_), + static_cast(v6_), static_cast(v7_), static_cast(v8_), + static_cast(v9_), static_cast(v10_), static_cast(v11_), + static_cast(v12_), static_cast(v13_), static_cast(v14_), + static_cast(v15_), static_cast(v16_), static_cast(v17_), + static_cast(v18_), static_cast(v19_), static_cast(v20_)}; + return ValuesIn(array); + } + + private: + // No implementation - assignment is unsupported. + void operator=(const ValueArray20& other); + + const T1 v1_; + const T2 v2_; + const T3 v3_; + const T4 v4_; + const T5 v5_; + const T6 v6_; + const T7 v7_; + const T8 v8_; + const T9 v9_; + const T10 v10_; + const T11 v11_; + const T12 v12_; + const T13 v13_; + const T14 v14_; + const T15 v15_; + const T16 v16_; + const T17 v17_; + const T18 v18_; + const T19 v19_; + const T20 v20_; +}; + +template +class ValueArray21 { + public: + ValueArray21(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, + T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, + T18 v18, T19 v19, T20 v20, T21 v21) : v1_(v1), v2_(v2), v3_(v3), v4_(v4), + v5_(v5), v6_(v6), v7_(v7), v8_(v8), v9_(v9), v10_(v10), v11_(v11), + v12_(v12), v13_(v13), v14_(v14), v15_(v15), v16_(v16), v17_(v17), + v18_(v18), v19_(v19), v20_(v20), v21_(v21) {} + + template + operator ParamGenerator() const { + const T array[] = {static_cast(v1_), static_cast(v2_), + static_cast(v3_), static_cast(v4_), static_cast(v5_), + static_cast(v6_), static_cast(v7_), static_cast(v8_), + static_cast(v9_), static_cast(v10_), static_cast(v11_), + static_cast(v12_), static_cast(v13_), static_cast(v14_), + static_cast(v15_), static_cast(v16_), static_cast(v17_), + static_cast(v18_), static_cast(v19_), static_cast(v20_), + static_cast(v21_)}; + return ValuesIn(array); + } + + private: + // No implementation - assignment is unsupported. + void operator=(const ValueArray21& other); + + const T1 v1_; + const T2 v2_; + const T3 v3_; + const T4 v4_; + const T5 v5_; + const T6 v6_; + const T7 v7_; + const T8 v8_; + const T9 v9_; + const T10 v10_; + const T11 v11_; + const T12 v12_; + const T13 v13_; + const T14 v14_; + const T15 v15_; + const T16 v16_; + const T17 v17_; + const T18 v18_; + const T19 v19_; + const T20 v20_; + const T21 v21_; +}; + +template +class ValueArray22 { + public: + ValueArray22(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, + T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, + T18 v18, T19 v19, T20 v20, T21 v21, T22 v22) : v1_(v1), v2_(v2), v3_(v3), + v4_(v4), v5_(v5), v6_(v6), v7_(v7), v8_(v8), v9_(v9), v10_(v10), + v11_(v11), v12_(v12), v13_(v13), v14_(v14), v15_(v15), v16_(v16), + v17_(v17), v18_(v18), v19_(v19), v20_(v20), v21_(v21), v22_(v22) {} + + template + operator ParamGenerator() const { + const T array[] = {static_cast(v1_), static_cast(v2_), + static_cast(v3_), static_cast(v4_), static_cast(v5_), + static_cast(v6_), static_cast(v7_), static_cast(v8_), + static_cast(v9_), static_cast(v10_), static_cast(v11_), + static_cast(v12_), static_cast(v13_), static_cast(v14_), + static_cast(v15_), static_cast(v16_), static_cast(v17_), + static_cast(v18_), static_cast(v19_), static_cast(v20_), + static_cast(v21_), static_cast(v22_)}; + return ValuesIn(array); + } + + private: + // No implementation - assignment is unsupported. + void operator=(const ValueArray22& other); + + const T1 v1_; + const T2 v2_; + const T3 v3_; + const T4 v4_; + const T5 v5_; + const T6 v6_; + const T7 v7_; + const T8 v8_; + const T9 v9_; + const T10 v10_; + const T11 v11_; + const T12 v12_; + const T13 v13_; + const T14 v14_; + const T15 v15_; + const T16 v16_; + const T17 v17_; + const T18 v18_; + const T19 v19_; + const T20 v20_; + const T21 v21_; + const T22 v22_; +}; + +template +class ValueArray23 { + public: + ValueArray23(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, + T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, + T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23) : v1_(v1), v2_(v2), + v3_(v3), v4_(v4), v5_(v5), v6_(v6), v7_(v7), v8_(v8), v9_(v9), v10_(v10), + v11_(v11), v12_(v12), v13_(v13), v14_(v14), v15_(v15), v16_(v16), + v17_(v17), v18_(v18), v19_(v19), v20_(v20), v21_(v21), v22_(v22), + v23_(v23) {} + + template + operator ParamGenerator() const { + const T array[] = {static_cast(v1_), static_cast(v2_), + static_cast(v3_), static_cast(v4_), static_cast(v5_), + static_cast(v6_), static_cast(v7_), static_cast(v8_), + static_cast(v9_), static_cast(v10_), static_cast(v11_), + static_cast(v12_), static_cast(v13_), static_cast(v14_), + static_cast(v15_), static_cast(v16_), static_cast(v17_), + static_cast(v18_), static_cast(v19_), static_cast(v20_), + static_cast(v21_), static_cast(v22_), static_cast(v23_)}; + return ValuesIn(array); + } + + private: + // No implementation - assignment is unsupported. + void operator=(const ValueArray23& other); + + const T1 v1_; + const T2 v2_; + const T3 v3_; + const T4 v4_; + const T5 v5_; + const T6 v6_; + const T7 v7_; + const T8 v8_; + const T9 v9_; + const T10 v10_; + const T11 v11_; + const T12 v12_; + const T13 v13_; + const T14 v14_; + const T15 v15_; + const T16 v16_; + const T17 v17_; + const T18 v18_; + const T19 v19_; + const T20 v20_; + const T21 v21_; + const T22 v22_; + const T23 v23_; +}; + +template +class ValueArray24 { + public: + ValueArray24(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, + T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, + T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24) : v1_(v1), + v2_(v2), v3_(v3), v4_(v4), v5_(v5), v6_(v6), v7_(v7), v8_(v8), v9_(v9), + v10_(v10), v11_(v11), v12_(v12), v13_(v13), v14_(v14), v15_(v15), + v16_(v16), v17_(v17), v18_(v18), v19_(v19), v20_(v20), v21_(v21), + v22_(v22), v23_(v23), v24_(v24) {} + + template + operator ParamGenerator() const { + const T array[] = {static_cast(v1_), static_cast(v2_), + static_cast(v3_), static_cast(v4_), static_cast(v5_), + static_cast(v6_), static_cast(v7_), static_cast(v8_), + static_cast(v9_), static_cast(v10_), static_cast(v11_), + static_cast(v12_), static_cast(v13_), static_cast(v14_), + static_cast(v15_), static_cast(v16_), static_cast(v17_), + static_cast(v18_), static_cast(v19_), static_cast(v20_), + static_cast(v21_), static_cast(v22_), static_cast(v23_), + static_cast(v24_)}; + return ValuesIn(array); + } + + private: + // No implementation - assignment is unsupported. + void operator=(const ValueArray24& other); + + const T1 v1_; + const T2 v2_; + const T3 v3_; + const T4 v4_; + const T5 v5_; + const T6 v6_; + const T7 v7_; + const T8 v8_; + const T9 v9_; + const T10 v10_; + const T11 v11_; + const T12 v12_; + const T13 v13_; + const T14 v14_; + const T15 v15_; + const T16 v16_; + const T17 v17_; + const T18 v18_; + const T19 v19_; + const T20 v20_; + const T21 v21_; + const T22 v22_; + const T23 v23_; + const T24 v24_; +}; + +template +class ValueArray25 { + public: + ValueArray25(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, + T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, + T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, + T25 v25) : v1_(v1), v2_(v2), v3_(v3), v4_(v4), v5_(v5), v6_(v6), v7_(v7), + v8_(v8), v9_(v9), v10_(v10), v11_(v11), v12_(v12), v13_(v13), v14_(v14), + v15_(v15), v16_(v16), v17_(v17), v18_(v18), v19_(v19), v20_(v20), + v21_(v21), v22_(v22), v23_(v23), v24_(v24), v25_(v25) {} + + template + operator ParamGenerator() const { + const T array[] = {static_cast(v1_), static_cast(v2_), + static_cast(v3_), static_cast(v4_), static_cast(v5_), + static_cast(v6_), static_cast(v7_), static_cast(v8_), + static_cast(v9_), static_cast(v10_), static_cast(v11_), + static_cast(v12_), static_cast(v13_), static_cast(v14_), + static_cast(v15_), static_cast(v16_), static_cast(v17_), + static_cast(v18_), static_cast(v19_), static_cast(v20_), + static_cast(v21_), static_cast(v22_), static_cast(v23_), + static_cast(v24_), static_cast(v25_)}; + return ValuesIn(array); + } + + private: + // No implementation - assignment is unsupported. + void operator=(const ValueArray25& other); + + const T1 v1_; + const T2 v2_; + const T3 v3_; + const T4 v4_; + const T5 v5_; + const T6 v6_; + const T7 v7_; + const T8 v8_; + const T9 v9_; + const T10 v10_; + const T11 v11_; + const T12 v12_; + const T13 v13_; + const T14 v14_; + const T15 v15_; + const T16 v16_; + const T17 v17_; + const T18 v18_; + const T19 v19_; + const T20 v20_; + const T21 v21_; + const T22 v22_; + const T23 v23_; + const T24 v24_; + const T25 v25_; +}; + +template +class ValueArray26 { + public: + ValueArray26(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, + T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, + T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, + T26 v26) : v1_(v1), v2_(v2), v3_(v3), v4_(v4), v5_(v5), v6_(v6), v7_(v7), + v8_(v8), v9_(v9), v10_(v10), v11_(v11), v12_(v12), v13_(v13), v14_(v14), + v15_(v15), v16_(v16), v17_(v17), v18_(v18), v19_(v19), v20_(v20), + v21_(v21), v22_(v22), v23_(v23), v24_(v24), v25_(v25), v26_(v26) {} + + template + operator ParamGenerator() const { + const T array[] = {static_cast(v1_), static_cast(v2_), + static_cast(v3_), static_cast(v4_), static_cast(v5_), + static_cast(v6_), static_cast(v7_), static_cast(v8_), + static_cast(v9_), static_cast(v10_), static_cast(v11_), + static_cast(v12_), static_cast(v13_), static_cast(v14_), + static_cast(v15_), static_cast(v16_), static_cast(v17_), + static_cast(v18_), static_cast(v19_), static_cast(v20_), + static_cast(v21_), static_cast(v22_), static_cast(v23_), + static_cast(v24_), static_cast(v25_), static_cast(v26_)}; + return ValuesIn(array); + } + + private: + // No implementation - assignment is unsupported. + void operator=(const ValueArray26& other); + + const T1 v1_; + const T2 v2_; + const T3 v3_; + const T4 v4_; + const T5 v5_; + const T6 v6_; + const T7 v7_; + const T8 v8_; + const T9 v9_; + const T10 v10_; + const T11 v11_; + const T12 v12_; + const T13 v13_; + const T14 v14_; + const T15 v15_; + const T16 v16_; + const T17 v17_; + const T18 v18_; + const T19 v19_; + const T20 v20_; + const T21 v21_; + const T22 v22_; + const T23 v23_; + const T24 v24_; + const T25 v25_; + const T26 v26_; +}; + +template +class ValueArray27 { + public: + ValueArray27(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, + T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, + T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, + T26 v26, T27 v27) : v1_(v1), v2_(v2), v3_(v3), v4_(v4), v5_(v5), v6_(v6), + v7_(v7), v8_(v8), v9_(v9), v10_(v10), v11_(v11), v12_(v12), v13_(v13), + v14_(v14), v15_(v15), v16_(v16), v17_(v17), v18_(v18), v19_(v19), + v20_(v20), v21_(v21), v22_(v22), v23_(v23), v24_(v24), v25_(v25), + v26_(v26), v27_(v27) {} + + template + operator ParamGenerator() const { + const T array[] = {static_cast(v1_), static_cast(v2_), + static_cast(v3_), static_cast(v4_), static_cast(v5_), + static_cast(v6_), static_cast(v7_), static_cast(v8_), + static_cast(v9_), static_cast(v10_), static_cast(v11_), + static_cast(v12_), static_cast(v13_), static_cast(v14_), + static_cast(v15_), static_cast(v16_), static_cast(v17_), + static_cast(v18_), static_cast(v19_), static_cast(v20_), + static_cast(v21_), static_cast(v22_), static_cast(v23_), + static_cast(v24_), static_cast(v25_), static_cast(v26_), + static_cast(v27_)}; + return ValuesIn(array); + } + + private: + // No implementation - assignment is unsupported. + void operator=(const ValueArray27& other); + + const T1 v1_; + const T2 v2_; + const T3 v3_; + const T4 v4_; + const T5 v5_; + const T6 v6_; + const T7 v7_; + const T8 v8_; + const T9 v9_; + const T10 v10_; + const T11 v11_; + const T12 v12_; + const T13 v13_; + const T14 v14_; + const T15 v15_; + const T16 v16_; + const T17 v17_; + const T18 v18_; + const T19 v19_; + const T20 v20_; + const T21 v21_; + const T22 v22_; + const T23 v23_; + const T24 v24_; + const T25 v25_; + const T26 v26_; + const T27 v27_; +}; + +template +class ValueArray28 { + public: + ValueArray28(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, + T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, + T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, + T26 v26, T27 v27, T28 v28) : v1_(v1), v2_(v2), v3_(v3), v4_(v4), v5_(v5), + v6_(v6), v7_(v7), v8_(v8), v9_(v9), v10_(v10), v11_(v11), v12_(v12), + v13_(v13), v14_(v14), v15_(v15), v16_(v16), v17_(v17), v18_(v18), + v19_(v19), v20_(v20), v21_(v21), v22_(v22), v23_(v23), v24_(v24), + v25_(v25), v26_(v26), v27_(v27), v28_(v28) {} + + template + operator ParamGenerator() const { + const T array[] = {static_cast(v1_), static_cast(v2_), + static_cast(v3_), static_cast(v4_), static_cast(v5_), + static_cast(v6_), static_cast(v7_), static_cast(v8_), + static_cast(v9_), static_cast(v10_), static_cast(v11_), + static_cast(v12_), static_cast(v13_), static_cast(v14_), + static_cast(v15_), static_cast(v16_), static_cast(v17_), + static_cast(v18_), static_cast(v19_), static_cast(v20_), + static_cast(v21_), static_cast(v22_), static_cast(v23_), + static_cast(v24_), static_cast(v25_), static_cast(v26_), + static_cast(v27_), static_cast(v28_)}; + return ValuesIn(array); + } + + private: + // No implementation - assignment is unsupported. + void operator=(const ValueArray28& other); + + const T1 v1_; + const T2 v2_; + const T3 v3_; + const T4 v4_; + const T5 v5_; + const T6 v6_; + const T7 v7_; + const T8 v8_; + const T9 v9_; + const T10 v10_; + const T11 v11_; + const T12 v12_; + const T13 v13_; + const T14 v14_; + const T15 v15_; + const T16 v16_; + const T17 v17_; + const T18 v18_; + const T19 v19_; + const T20 v20_; + const T21 v21_; + const T22 v22_; + const T23 v23_; + const T24 v24_; + const T25 v25_; + const T26 v26_; + const T27 v27_; + const T28 v28_; +}; + +template +class ValueArray29 { + public: + ValueArray29(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, + T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, + T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, + T26 v26, T27 v27, T28 v28, T29 v29) : v1_(v1), v2_(v2), v3_(v3), v4_(v4), + v5_(v5), v6_(v6), v7_(v7), v8_(v8), v9_(v9), v10_(v10), v11_(v11), + v12_(v12), v13_(v13), v14_(v14), v15_(v15), v16_(v16), v17_(v17), + v18_(v18), v19_(v19), v20_(v20), v21_(v21), v22_(v22), v23_(v23), + v24_(v24), v25_(v25), v26_(v26), v27_(v27), v28_(v28), v29_(v29) {} + + template + operator ParamGenerator() const { + const T array[] = {static_cast(v1_), static_cast(v2_), + static_cast(v3_), static_cast(v4_), static_cast(v5_), + static_cast(v6_), static_cast(v7_), static_cast(v8_), + static_cast(v9_), static_cast(v10_), static_cast(v11_), + static_cast(v12_), static_cast(v13_), static_cast(v14_), + static_cast(v15_), static_cast(v16_), static_cast(v17_), + static_cast(v18_), static_cast(v19_), static_cast(v20_), + static_cast(v21_), static_cast(v22_), static_cast(v23_), + static_cast(v24_), static_cast(v25_), static_cast(v26_), + static_cast(v27_), static_cast(v28_), static_cast(v29_)}; + return ValuesIn(array); + } + + private: + // No implementation - assignment is unsupported. + void operator=(const ValueArray29& other); + + const T1 v1_; + const T2 v2_; + const T3 v3_; + const T4 v4_; + const T5 v5_; + const T6 v6_; + const T7 v7_; + const T8 v8_; + const T9 v9_; + const T10 v10_; + const T11 v11_; + const T12 v12_; + const T13 v13_; + const T14 v14_; + const T15 v15_; + const T16 v16_; + const T17 v17_; + const T18 v18_; + const T19 v19_; + const T20 v20_; + const T21 v21_; + const T22 v22_; + const T23 v23_; + const T24 v24_; + const T25 v25_; + const T26 v26_; + const T27 v27_; + const T28 v28_; + const T29 v29_; +}; + +template +class ValueArray30 { + public: + ValueArray30(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, + T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, + T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, + T26 v26, T27 v27, T28 v28, T29 v29, T30 v30) : v1_(v1), v2_(v2), v3_(v3), + v4_(v4), v5_(v5), v6_(v6), v7_(v7), v8_(v8), v9_(v9), v10_(v10), + v11_(v11), v12_(v12), v13_(v13), v14_(v14), v15_(v15), v16_(v16), + v17_(v17), v18_(v18), v19_(v19), v20_(v20), v21_(v21), v22_(v22), + v23_(v23), v24_(v24), v25_(v25), v26_(v26), v27_(v27), v28_(v28), + v29_(v29), v30_(v30) {} + + template + operator ParamGenerator() const { + const T array[] = {static_cast(v1_), static_cast(v2_), + static_cast(v3_), static_cast(v4_), static_cast(v5_), + static_cast(v6_), static_cast(v7_), static_cast(v8_), + static_cast(v9_), static_cast(v10_), static_cast(v11_), + static_cast(v12_), static_cast(v13_), static_cast(v14_), + static_cast(v15_), static_cast(v16_), static_cast(v17_), + static_cast(v18_), static_cast(v19_), static_cast(v20_), + static_cast(v21_), static_cast(v22_), static_cast(v23_), + static_cast(v24_), static_cast(v25_), static_cast(v26_), + static_cast(v27_), static_cast(v28_), static_cast(v29_), + static_cast(v30_)}; + return ValuesIn(array); + } + + private: + // No implementation - assignment is unsupported. + void operator=(const ValueArray30& other); + + const T1 v1_; + const T2 v2_; + const T3 v3_; + const T4 v4_; + const T5 v5_; + const T6 v6_; + const T7 v7_; + const T8 v8_; + const T9 v9_; + const T10 v10_; + const T11 v11_; + const T12 v12_; + const T13 v13_; + const T14 v14_; + const T15 v15_; + const T16 v16_; + const T17 v17_; + const T18 v18_; + const T19 v19_; + const T20 v20_; + const T21 v21_; + const T22 v22_; + const T23 v23_; + const T24 v24_; + const T25 v25_; + const T26 v26_; + const T27 v27_; + const T28 v28_; + const T29 v29_; + const T30 v30_; +}; + +template +class ValueArray31 { + public: + ValueArray31(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, + T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, + T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, + T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31) : v1_(v1), v2_(v2), + v3_(v3), v4_(v4), v5_(v5), v6_(v6), v7_(v7), v8_(v8), v9_(v9), v10_(v10), + v11_(v11), v12_(v12), v13_(v13), v14_(v14), v15_(v15), v16_(v16), + v17_(v17), v18_(v18), v19_(v19), v20_(v20), v21_(v21), v22_(v22), + v23_(v23), v24_(v24), v25_(v25), v26_(v26), v27_(v27), v28_(v28), + v29_(v29), v30_(v30), v31_(v31) {} + + template + operator ParamGenerator() const { + const T array[] = {static_cast(v1_), static_cast(v2_), + static_cast(v3_), static_cast(v4_), static_cast(v5_), + static_cast(v6_), static_cast(v7_), static_cast(v8_), + static_cast(v9_), static_cast(v10_), static_cast(v11_), + static_cast(v12_), static_cast(v13_), static_cast(v14_), + static_cast(v15_), static_cast(v16_), static_cast(v17_), + static_cast(v18_), static_cast(v19_), static_cast(v20_), + static_cast(v21_), static_cast(v22_), static_cast(v23_), + static_cast(v24_), static_cast(v25_), static_cast(v26_), + static_cast(v27_), static_cast(v28_), static_cast(v29_), + static_cast(v30_), static_cast(v31_)}; + return ValuesIn(array); + } + + private: + // No implementation - assignment is unsupported. + void operator=(const ValueArray31& other); + + const T1 v1_; + const T2 v2_; + const T3 v3_; + const T4 v4_; + const T5 v5_; + const T6 v6_; + const T7 v7_; + const T8 v8_; + const T9 v9_; + const T10 v10_; + const T11 v11_; + const T12 v12_; + const T13 v13_; + const T14 v14_; + const T15 v15_; + const T16 v16_; + const T17 v17_; + const T18 v18_; + const T19 v19_; + const T20 v20_; + const T21 v21_; + const T22 v22_; + const T23 v23_; + const T24 v24_; + const T25 v25_; + const T26 v26_; + const T27 v27_; + const T28 v28_; + const T29 v29_; + const T30 v30_; + const T31 v31_; +}; + +template +class ValueArray32 { + public: + ValueArray32(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, + T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, + T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, + T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32) : v1_(v1), + v2_(v2), v3_(v3), v4_(v4), v5_(v5), v6_(v6), v7_(v7), v8_(v8), v9_(v9), + v10_(v10), v11_(v11), v12_(v12), v13_(v13), v14_(v14), v15_(v15), + v16_(v16), v17_(v17), v18_(v18), v19_(v19), v20_(v20), v21_(v21), + v22_(v22), v23_(v23), v24_(v24), v25_(v25), v26_(v26), v27_(v27), + v28_(v28), v29_(v29), v30_(v30), v31_(v31), v32_(v32) {} + + template + operator ParamGenerator() const { + const T array[] = {static_cast(v1_), static_cast(v2_), + static_cast(v3_), static_cast(v4_), static_cast(v5_), + static_cast(v6_), static_cast(v7_), static_cast(v8_), + static_cast(v9_), static_cast(v10_), static_cast(v11_), + static_cast(v12_), static_cast(v13_), static_cast(v14_), + static_cast(v15_), static_cast(v16_), static_cast(v17_), + static_cast(v18_), static_cast(v19_), static_cast(v20_), + static_cast(v21_), static_cast(v22_), static_cast(v23_), + static_cast(v24_), static_cast(v25_), static_cast(v26_), + static_cast(v27_), static_cast(v28_), static_cast(v29_), + static_cast(v30_), static_cast(v31_), static_cast(v32_)}; + return ValuesIn(array); + } + + private: + // No implementation - assignment is unsupported. + void operator=(const ValueArray32& other); + + const T1 v1_; + const T2 v2_; + const T3 v3_; + const T4 v4_; + const T5 v5_; + const T6 v6_; + const T7 v7_; + const T8 v8_; + const T9 v9_; + const T10 v10_; + const T11 v11_; + const T12 v12_; + const T13 v13_; + const T14 v14_; + const T15 v15_; + const T16 v16_; + const T17 v17_; + const T18 v18_; + const T19 v19_; + const T20 v20_; + const T21 v21_; + const T22 v22_; + const T23 v23_; + const T24 v24_; + const T25 v25_; + const T26 v26_; + const T27 v27_; + const T28 v28_; + const T29 v29_; + const T30 v30_; + const T31 v31_; + const T32 v32_; +}; + +template +class ValueArray33 { + public: + ValueArray33(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, + T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, + T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, + T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, + T33 v33) : v1_(v1), v2_(v2), v3_(v3), v4_(v4), v5_(v5), v6_(v6), v7_(v7), + v8_(v8), v9_(v9), v10_(v10), v11_(v11), v12_(v12), v13_(v13), v14_(v14), + v15_(v15), v16_(v16), v17_(v17), v18_(v18), v19_(v19), v20_(v20), + v21_(v21), v22_(v22), v23_(v23), v24_(v24), v25_(v25), v26_(v26), + v27_(v27), v28_(v28), v29_(v29), v30_(v30), v31_(v31), v32_(v32), + v33_(v33) {} + + template + operator ParamGenerator() const { + const T array[] = {static_cast(v1_), static_cast(v2_), + static_cast(v3_), static_cast(v4_), static_cast(v5_), + static_cast(v6_), static_cast(v7_), static_cast(v8_), + static_cast(v9_), static_cast(v10_), static_cast(v11_), + static_cast(v12_), static_cast(v13_), static_cast(v14_), + static_cast(v15_), static_cast(v16_), static_cast(v17_), + static_cast(v18_), static_cast(v19_), static_cast(v20_), + static_cast(v21_), static_cast(v22_), static_cast(v23_), + static_cast(v24_), static_cast(v25_), static_cast(v26_), + static_cast(v27_), static_cast(v28_), static_cast(v29_), + static_cast(v30_), static_cast(v31_), static_cast(v32_), + static_cast(v33_)}; + return ValuesIn(array); + } + + private: + // No implementation - assignment is unsupported. + void operator=(const ValueArray33& other); + + const T1 v1_; + const T2 v2_; + const T3 v3_; + const T4 v4_; + const T5 v5_; + const T6 v6_; + const T7 v7_; + const T8 v8_; + const T9 v9_; + const T10 v10_; + const T11 v11_; + const T12 v12_; + const T13 v13_; + const T14 v14_; + const T15 v15_; + const T16 v16_; + const T17 v17_; + const T18 v18_; + const T19 v19_; + const T20 v20_; + const T21 v21_; + const T22 v22_; + const T23 v23_; + const T24 v24_; + const T25 v25_; + const T26 v26_; + const T27 v27_; + const T28 v28_; + const T29 v29_; + const T30 v30_; + const T31 v31_; + const T32 v32_; + const T33 v33_; +}; + +template +class ValueArray34 { + public: + ValueArray34(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, + T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, + T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, + T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33, + T34 v34) : v1_(v1), v2_(v2), v3_(v3), v4_(v4), v5_(v5), v6_(v6), v7_(v7), + v8_(v8), v9_(v9), v10_(v10), v11_(v11), v12_(v12), v13_(v13), v14_(v14), + v15_(v15), v16_(v16), v17_(v17), v18_(v18), v19_(v19), v20_(v20), + v21_(v21), v22_(v22), v23_(v23), v24_(v24), v25_(v25), v26_(v26), + v27_(v27), v28_(v28), v29_(v29), v30_(v30), v31_(v31), v32_(v32), + v33_(v33), v34_(v34) {} + + template + operator ParamGenerator() const { + const T array[] = {static_cast(v1_), static_cast(v2_), + static_cast(v3_), static_cast(v4_), static_cast(v5_), + static_cast(v6_), static_cast(v7_), static_cast(v8_), + static_cast(v9_), static_cast(v10_), static_cast(v11_), + static_cast(v12_), static_cast(v13_), static_cast(v14_), + static_cast(v15_), static_cast(v16_), static_cast(v17_), + static_cast(v18_), static_cast(v19_), static_cast(v20_), + static_cast(v21_), static_cast(v22_), static_cast(v23_), + static_cast(v24_), static_cast(v25_), static_cast(v26_), + static_cast(v27_), static_cast(v28_), static_cast(v29_), + static_cast(v30_), static_cast(v31_), static_cast(v32_), + static_cast(v33_), static_cast(v34_)}; + return ValuesIn(array); + } + + private: + // No implementation - assignment is unsupported. + void operator=(const ValueArray34& other); + + const T1 v1_; + const T2 v2_; + const T3 v3_; + const T4 v4_; + const T5 v5_; + const T6 v6_; + const T7 v7_; + const T8 v8_; + const T9 v9_; + const T10 v10_; + const T11 v11_; + const T12 v12_; + const T13 v13_; + const T14 v14_; + const T15 v15_; + const T16 v16_; + const T17 v17_; + const T18 v18_; + const T19 v19_; + const T20 v20_; + const T21 v21_; + const T22 v22_; + const T23 v23_; + const T24 v24_; + const T25 v25_; + const T26 v26_; + const T27 v27_; + const T28 v28_; + const T29 v29_; + const T30 v30_; + const T31 v31_; + const T32 v32_; + const T33 v33_; + const T34 v34_; +}; + +template +class ValueArray35 { + public: + ValueArray35(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, + T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, + T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, + T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33, + T34 v34, T35 v35) : v1_(v1), v2_(v2), v3_(v3), v4_(v4), v5_(v5), v6_(v6), + v7_(v7), v8_(v8), v9_(v9), v10_(v10), v11_(v11), v12_(v12), v13_(v13), + v14_(v14), v15_(v15), v16_(v16), v17_(v17), v18_(v18), v19_(v19), + v20_(v20), v21_(v21), v22_(v22), v23_(v23), v24_(v24), v25_(v25), + v26_(v26), v27_(v27), v28_(v28), v29_(v29), v30_(v30), v31_(v31), + v32_(v32), v33_(v33), v34_(v34), v35_(v35) {} + + template + operator ParamGenerator() const { + const T array[] = {static_cast(v1_), static_cast(v2_), + static_cast(v3_), static_cast(v4_), static_cast(v5_), + static_cast(v6_), static_cast(v7_), static_cast(v8_), + static_cast(v9_), static_cast(v10_), static_cast(v11_), + static_cast(v12_), static_cast(v13_), static_cast(v14_), + static_cast(v15_), static_cast(v16_), static_cast(v17_), + static_cast(v18_), static_cast(v19_), static_cast(v20_), + static_cast(v21_), static_cast(v22_), static_cast(v23_), + static_cast(v24_), static_cast(v25_), static_cast(v26_), + static_cast(v27_), static_cast(v28_), static_cast(v29_), + static_cast(v30_), static_cast(v31_), static_cast(v32_), + static_cast(v33_), static_cast(v34_), static_cast(v35_)}; + return ValuesIn(array); + } + + private: + // No implementation - assignment is unsupported. + void operator=(const ValueArray35& other); + + const T1 v1_; + const T2 v2_; + const T3 v3_; + const T4 v4_; + const T5 v5_; + const T6 v6_; + const T7 v7_; + const T8 v8_; + const T9 v9_; + const T10 v10_; + const T11 v11_; + const T12 v12_; + const T13 v13_; + const T14 v14_; + const T15 v15_; + const T16 v16_; + const T17 v17_; + const T18 v18_; + const T19 v19_; + const T20 v20_; + const T21 v21_; + const T22 v22_; + const T23 v23_; + const T24 v24_; + const T25 v25_; + const T26 v26_; + const T27 v27_; + const T28 v28_; + const T29 v29_; + const T30 v30_; + const T31 v31_; + const T32 v32_; + const T33 v33_; + const T34 v34_; + const T35 v35_; +}; + +template +class ValueArray36 { + public: + ValueArray36(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, + T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, + T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, + T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33, + T34 v34, T35 v35, T36 v36) : v1_(v1), v2_(v2), v3_(v3), v4_(v4), v5_(v5), + v6_(v6), v7_(v7), v8_(v8), v9_(v9), v10_(v10), v11_(v11), v12_(v12), + v13_(v13), v14_(v14), v15_(v15), v16_(v16), v17_(v17), v18_(v18), + v19_(v19), v20_(v20), v21_(v21), v22_(v22), v23_(v23), v24_(v24), + v25_(v25), v26_(v26), v27_(v27), v28_(v28), v29_(v29), v30_(v30), + v31_(v31), v32_(v32), v33_(v33), v34_(v34), v35_(v35), v36_(v36) {} + + template + operator ParamGenerator() const { + const T array[] = {static_cast(v1_), static_cast(v2_), + static_cast(v3_), static_cast(v4_), static_cast(v5_), + static_cast(v6_), static_cast(v7_), static_cast(v8_), + static_cast(v9_), static_cast(v10_), static_cast(v11_), + static_cast(v12_), static_cast(v13_), static_cast(v14_), + static_cast(v15_), static_cast(v16_), static_cast(v17_), + static_cast(v18_), static_cast(v19_), static_cast(v20_), + static_cast(v21_), static_cast(v22_), static_cast(v23_), + static_cast(v24_), static_cast(v25_), static_cast(v26_), + static_cast(v27_), static_cast(v28_), static_cast(v29_), + static_cast(v30_), static_cast(v31_), static_cast(v32_), + static_cast(v33_), static_cast(v34_), static_cast(v35_), + static_cast(v36_)}; + return ValuesIn(array); + } + + private: + // No implementation - assignment is unsupported. + void operator=(const ValueArray36& other); + + const T1 v1_; + const T2 v2_; + const T3 v3_; + const T4 v4_; + const T5 v5_; + const T6 v6_; + const T7 v7_; + const T8 v8_; + const T9 v9_; + const T10 v10_; + const T11 v11_; + const T12 v12_; + const T13 v13_; + const T14 v14_; + const T15 v15_; + const T16 v16_; + const T17 v17_; + const T18 v18_; + const T19 v19_; + const T20 v20_; + const T21 v21_; + const T22 v22_; + const T23 v23_; + const T24 v24_; + const T25 v25_; + const T26 v26_; + const T27 v27_; + const T28 v28_; + const T29 v29_; + const T30 v30_; + const T31 v31_; + const T32 v32_; + const T33 v33_; + const T34 v34_; + const T35 v35_; + const T36 v36_; +}; + +template +class ValueArray37 { + public: + ValueArray37(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, + T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, + T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, + T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33, + T34 v34, T35 v35, T36 v36, T37 v37) : v1_(v1), v2_(v2), v3_(v3), v4_(v4), + v5_(v5), v6_(v6), v7_(v7), v8_(v8), v9_(v9), v10_(v10), v11_(v11), + v12_(v12), v13_(v13), v14_(v14), v15_(v15), v16_(v16), v17_(v17), + v18_(v18), v19_(v19), v20_(v20), v21_(v21), v22_(v22), v23_(v23), + v24_(v24), v25_(v25), v26_(v26), v27_(v27), v28_(v28), v29_(v29), + v30_(v30), v31_(v31), v32_(v32), v33_(v33), v34_(v34), v35_(v35), + v36_(v36), v37_(v37) {} + + template + operator ParamGenerator() const { + const T array[] = {static_cast(v1_), static_cast(v2_), + static_cast(v3_), static_cast(v4_), static_cast(v5_), + static_cast(v6_), static_cast(v7_), static_cast(v8_), + static_cast(v9_), static_cast(v10_), static_cast(v11_), + static_cast(v12_), static_cast(v13_), static_cast(v14_), + static_cast(v15_), static_cast(v16_), static_cast(v17_), + static_cast(v18_), static_cast(v19_), static_cast(v20_), + static_cast(v21_), static_cast(v22_), static_cast(v23_), + static_cast(v24_), static_cast(v25_), static_cast(v26_), + static_cast(v27_), static_cast(v28_), static_cast(v29_), + static_cast(v30_), static_cast(v31_), static_cast(v32_), + static_cast(v33_), static_cast(v34_), static_cast(v35_), + static_cast(v36_), static_cast(v37_)}; + return ValuesIn(array); + } + + private: + // No implementation - assignment is unsupported. + void operator=(const ValueArray37& other); + + const T1 v1_; + const T2 v2_; + const T3 v3_; + const T4 v4_; + const T5 v5_; + const T6 v6_; + const T7 v7_; + const T8 v8_; + const T9 v9_; + const T10 v10_; + const T11 v11_; + const T12 v12_; + const T13 v13_; + const T14 v14_; + const T15 v15_; + const T16 v16_; + const T17 v17_; + const T18 v18_; + const T19 v19_; + const T20 v20_; + const T21 v21_; + const T22 v22_; + const T23 v23_; + const T24 v24_; + const T25 v25_; + const T26 v26_; + const T27 v27_; + const T28 v28_; + const T29 v29_; + const T30 v30_; + const T31 v31_; + const T32 v32_; + const T33 v33_; + const T34 v34_; + const T35 v35_; + const T36 v36_; + const T37 v37_; +}; + +template +class ValueArray38 { + public: + ValueArray38(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, + T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, + T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, + T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33, + T34 v34, T35 v35, T36 v36, T37 v37, T38 v38) : v1_(v1), v2_(v2), v3_(v3), + v4_(v4), v5_(v5), v6_(v6), v7_(v7), v8_(v8), v9_(v9), v10_(v10), + v11_(v11), v12_(v12), v13_(v13), v14_(v14), v15_(v15), v16_(v16), + v17_(v17), v18_(v18), v19_(v19), v20_(v20), v21_(v21), v22_(v22), + v23_(v23), v24_(v24), v25_(v25), v26_(v26), v27_(v27), v28_(v28), + v29_(v29), v30_(v30), v31_(v31), v32_(v32), v33_(v33), v34_(v34), + v35_(v35), v36_(v36), v37_(v37), v38_(v38) {} + + template + operator ParamGenerator() const { + const T array[] = {static_cast(v1_), static_cast(v2_), + static_cast(v3_), static_cast(v4_), static_cast(v5_), + static_cast(v6_), static_cast(v7_), static_cast(v8_), + static_cast(v9_), static_cast(v10_), static_cast(v11_), + static_cast(v12_), static_cast(v13_), static_cast(v14_), + static_cast(v15_), static_cast(v16_), static_cast(v17_), + static_cast(v18_), static_cast(v19_), static_cast(v20_), + static_cast(v21_), static_cast(v22_), static_cast(v23_), + static_cast(v24_), static_cast(v25_), static_cast(v26_), + static_cast(v27_), static_cast(v28_), static_cast(v29_), + static_cast(v30_), static_cast(v31_), static_cast(v32_), + static_cast(v33_), static_cast(v34_), static_cast(v35_), + static_cast(v36_), static_cast(v37_), static_cast(v38_)}; + return ValuesIn(array); + } + + private: + // No implementation - assignment is unsupported. + void operator=(const ValueArray38& other); + + const T1 v1_; + const T2 v2_; + const T3 v3_; + const T4 v4_; + const T5 v5_; + const T6 v6_; + const T7 v7_; + const T8 v8_; + const T9 v9_; + const T10 v10_; + const T11 v11_; + const T12 v12_; + const T13 v13_; + const T14 v14_; + const T15 v15_; + const T16 v16_; + const T17 v17_; + const T18 v18_; + const T19 v19_; + const T20 v20_; + const T21 v21_; + const T22 v22_; + const T23 v23_; + const T24 v24_; + const T25 v25_; + const T26 v26_; + const T27 v27_; + const T28 v28_; + const T29 v29_; + const T30 v30_; + const T31 v31_; + const T32 v32_; + const T33 v33_; + const T34 v34_; + const T35 v35_; + const T36 v36_; + const T37 v37_; + const T38 v38_; +}; + +template +class ValueArray39 { + public: + ValueArray39(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, + T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, + T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, + T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33, + T34 v34, T35 v35, T36 v36, T37 v37, T38 v38, T39 v39) : v1_(v1), v2_(v2), + v3_(v3), v4_(v4), v5_(v5), v6_(v6), v7_(v7), v8_(v8), v9_(v9), v10_(v10), + v11_(v11), v12_(v12), v13_(v13), v14_(v14), v15_(v15), v16_(v16), + v17_(v17), v18_(v18), v19_(v19), v20_(v20), v21_(v21), v22_(v22), + v23_(v23), v24_(v24), v25_(v25), v26_(v26), v27_(v27), v28_(v28), + v29_(v29), v30_(v30), v31_(v31), v32_(v32), v33_(v33), v34_(v34), + v35_(v35), v36_(v36), v37_(v37), v38_(v38), v39_(v39) {} + + template + operator ParamGenerator() const { + const T array[] = {static_cast(v1_), static_cast(v2_), + static_cast(v3_), static_cast(v4_), static_cast(v5_), + static_cast(v6_), static_cast(v7_), static_cast(v8_), + static_cast(v9_), static_cast(v10_), static_cast(v11_), + static_cast(v12_), static_cast(v13_), static_cast(v14_), + static_cast(v15_), static_cast(v16_), static_cast(v17_), + static_cast(v18_), static_cast(v19_), static_cast(v20_), + static_cast(v21_), static_cast(v22_), static_cast(v23_), + static_cast(v24_), static_cast(v25_), static_cast(v26_), + static_cast(v27_), static_cast(v28_), static_cast(v29_), + static_cast(v30_), static_cast(v31_), static_cast(v32_), + static_cast(v33_), static_cast(v34_), static_cast(v35_), + static_cast(v36_), static_cast(v37_), static_cast(v38_), + static_cast(v39_)}; + return ValuesIn(array); + } + + private: + // No implementation - assignment is unsupported. + void operator=(const ValueArray39& other); + + const T1 v1_; + const T2 v2_; + const T3 v3_; + const T4 v4_; + const T5 v5_; + const T6 v6_; + const T7 v7_; + const T8 v8_; + const T9 v9_; + const T10 v10_; + const T11 v11_; + const T12 v12_; + const T13 v13_; + const T14 v14_; + const T15 v15_; + const T16 v16_; + const T17 v17_; + const T18 v18_; + const T19 v19_; + const T20 v20_; + const T21 v21_; + const T22 v22_; + const T23 v23_; + const T24 v24_; + const T25 v25_; + const T26 v26_; + const T27 v27_; + const T28 v28_; + const T29 v29_; + const T30 v30_; + const T31 v31_; + const T32 v32_; + const T33 v33_; + const T34 v34_; + const T35 v35_; + const T36 v36_; + const T37 v37_; + const T38 v38_; + const T39 v39_; +}; + +template +class ValueArray40 { + public: + ValueArray40(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, + T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, + T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, + T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33, + T34 v34, T35 v35, T36 v36, T37 v37, T38 v38, T39 v39, T40 v40) : v1_(v1), + v2_(v2), v3_(v3), v4_(v4), v5_(v5), v6_(v6), v7_(v7), v8_(v8), v9_(v9), + v10_(v10), v11_(v11), v12_(v12), v13_(v13), v14_(v14), v15_(v15), + v16_(v16), v17_(v17), v18_(v18), v19_(v19), v20_(v20), v21_(v21), + v22_(v22), v23_(v23), v24_(v24), v25_(v25), v26_(v26), v27_(v27), + v28_(v28), v29_(v29), v30_(v30), v31_(v31), v32_(v32), v33_(v33), + v34_(v34), v35_(v35), v36_(v36), v37_(v37), v38_(v38), v39_(v39), + v40_(v40) {} + + template + operator ParamGenerator() const { + const T array[] = {static_cast(v1_), static_cast(v2_), + static_cast(v3_), static_cast(v4_), static_cast(v5_), + static_cast(v6_), static_cast(v7_), static_cast(v8_), + static_cast(v9_), static_cast(v10_), static_cast(v11_), + static_cast(v12_), static_cast(v13_), static_cast(v14_), + static_cast(v15_), static_cast(v16_), static_cast(v17_), + static_cast(v18_), static_cast(v19_), static_cast(v20_), + static_cast(v21_), static_cast(v22_), static_cast(v23_), + static_cast(v24_), static_cast(v25_), static_cast(v26_), + static_cast(v27_), static_cast(v28_), static_cast(v29_), + static_cast(v30_), static_cast(v31_), static_cast(v32_), + static_cast(v33_), static_cast(v34_), static_cast(v35_), + static_cast(v36_), static_cast(v37_), static_cast(v38_), + static_cast(v39_), static_cast(v40_)}; + return ValuesIn(array); + } + + private: + // No implementation - assignment is unsupported. + void operator=(const ValueArray40& other); + + const T1 v1_; + const T2 v2_; + const T3 v3_; + const T4 v4_; + const T5 v5_; + const T6 v6_; + const T7 v7_; + const T8 v8_; + const T9 v9_; + const T10 v10_; + const T11 v11_; + const T12 v12_; + const T13 v13_; + const T14 v14_; + const T15 v15_; + const T16 v16_; + const T17 v17_; + const T18 v18_; + const T19 v19_; + const T20 v20_; + const T21 v21_; + const T22 v22_; + const T23 v23_; + const T24 v24_; + const T25 v25_; + const T26 v26_; + const T27 v27_; + const T28 v28_; + const T29 v29_; + const T30 v30_; + const T31 v31_; + const T32 v32_; + const T33 v33_; + const T34 v34_; + const T35 v35_; + const T36 v36_; + const T37 v37_; + const T38 v38_; + const T39 v39_; + const T40 v40_; +}; + +template +class ValueArray41 { + public: + ValueArray41(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, + T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, + T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, + T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33, + T34 v34, T35 v35, T36 v36, T37 v37, T38 v38, T39 v39, T40 v40, + T41 v41) : v1_(v1), v2_(v2), v3_(v3), v4_(v4), v5_(v5), v6_(v6), v7_(v7), + v8_(v8), v9_(v9), v10_(v10), v11_(v11), v12_(v12), v13_(v13), v14_(v14), + v15_(v15), v16_(v16), v17_(v17), v18_(v18), v19_(v19), v20_(v20), + v21_(v21), v22_(v22), v23_(v23), v24_(v24), v25_(v25), v26_(v26), + v27_(v27), v28_(v28), v29_(v29), v30_(v30), v31_(v31), v32_(v32), + v33_(v33), v34_(v34), v35_(v35), v36_(v36), v37_(v37), v38_(v38), + v39_(v39), v40_(v40), v41_(v41) {} + + template + operator ParamGenerator() const { + const T array[] = {static_cast(v1_), static_cast(v2_), + static_cast(v3_), static_cast(v4_), static_cast(v5_), + static_cast(v6_), static_cast(v7_), static_cast(v8_), + static_cast(v9_), static_cast(v10_), static_cast(v11_), + static_cast(v12_), static_cast(v13_), static_cast(v14_), + static_cast(v15_), static_cast(v16_), static_cast(v17_), + static_cast(v18_), static_cast(v19_), static_cast(v20_), + static_cast(v21_), static_cast(v22_), static_cast(v23_), + static_cast(v24_), static_cast(v25_), static_cast(v26_), + static_cast(v27_), static_cast(v28_), static_cast(v29_), + static_cast(v30_), static_cast(v31_), static_cast(v32_), + static_cast(v33_), static_cast(v34_), static_cast(v35_), + static_cast(v36_), static_cast(v37_), static_cast(v38_), + static_cast(v39_), static_cast(v40_), static_cast(v41_)}; + return ValuesIn(array); + } + + private: + // No implementation - assignment is unsupported. + void operator=(const ValueArray41& other); + + const T1 v1_; + const T2 v2_; + const T3 v3_; + const T4 v4_; + const T5 v5_; + const T6 v6_; + const T7 v7_; + const T8 v8_; + const T9 v9_; + const T10 v10_; + const T11 v11_; + const T12 v12_; + const T13 v13_; + const T14 v14_; + const T15 v15_; + const T16 v16_; + const T17 v17_; + const T18 v18_; + const T19 v19_; + const T20 v20_; + const T21 v21_; + const T22 v22_; + const T23 v23_; + const T24 v24_; + const T25 v25_; + const T26 v26_; + const T27 v27_; + const T28 v28_; + const T29 v29_; + const T30 v30_; + const T31 v31_; + const T32 v32_; + const T33 v33_; + const T34 v34_; + const T35 v35_; + const T36 v36_; + const T37 v37_; + const T38 v38_; + const T39 v39_; + const T40 v40_; + const T41 v41_; +}; + +template +class ValueArray42 { + public: + ValueArray42(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, + T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, + T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, + T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33, + T34 v34, T35 v35, T36 v36, T37 v37, T38 v38, T39 v39, T40 v40, T41 v41, + T42 v42) : v1_(v1), v2_(v2), v3_(v3), v4_(v4), v5_(v5), v6_(v6), v7_(v7), + v8_(v8), v9_(v9), v10_(v10), v11_(v11), v12_(v12), v13_(v13), v14_(v14), + v15_(v15), v16_(v16), v17_(v17), v18_(v18), v19_(v19), v20_(v20), + v21_(v21), v22_(v22), v23_(v23), v24_(v24), v25_(v25), v26_(v26), + v27_(v27), v28_(v28), v29_(v29), v30_(v30), v31_(v31), v32_(v32), + v33_(v33), v34_(v34), v35_(v35), v36_(v36), v37_(v37), v38_(v38), + v39_(v39), v40_(v40), v41_(v41), v42_(v42) {} + + template + operator ParamGenerator() const { + const T array[] = {static_cast(v1_), static_cast(v2_), + static_cast(v3_), static_cast(v4_), static_cast(v5_), + static_cast(v6_), static_cast(v7_), static_cast(v8_), + static_cast(v9_), static_cast(v10_), static_cast(v11_), + static_cast(v12_), static_cast(v13_), static_cast(v14_), + static_cast(v15_), static_cast(v16_), static_cast(v17_), + static_cast(v18_), static_cast(v19_), static_cast(v20_), + static_cast(v21_), static_cast(v22_), static_cast(v23_), + static_cast(v24_), static_cast(v25_), static_cast(v26_), + static_cast(v27_), static_cast(v28_), static_cast(v29_), + static_cast(v30_), static_cast(v31_), static_cast(v32_), + static_cast(v33_), static_cast(v34_), static_cast(v35_), + static_cast(v36_), static_cast(v37_), static_cast(v38_), + static_cast(v39_), static_cast(v40_), static_cast(v41_), + static_cast(v42_)}; + return ValuesIn(array); + } + + private: + // No implementation - assignment is unsupported. + void operator=(const ValueArray42& other); + + const T1 v1_; + const T2 v2_; + const T3 v3_; + const T4 v4_; + const T5 v5_; + const T6 v6_; + const T7 v7_; + const T8 v8_; + const T9 v9_; + const T10 v10_; + const T11 v11_; + const T12 v12_; + const T13 v13_; + const T14 v14_; + const T15 v15_; + const T16 v16_; + const T17 v17_; + const T18 v18_; + const T19 v19_; + const T20 v20_; + const T21 v21_; + const T22 v22_; + const T23 v23_; + const T24 v24_; + const T25 v25_; + const T26 v26_; + const T27 v27_; + const T28 v28_; + const T29 v29_; + const T30 v30_; + const T31 v31_; + const T32 v32_; + const T33 v33_; + const T34 v34_; + const T35 v35_; + const T36 v36_; + const T37 v37_; + const T38 v38_; + const T39 v39_; + const T40 v40_; + const T41 v41_; + const T42 v42_; +}; + +template +class ValueArray43 { + public: + ValueArray43(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, + T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, + T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, + T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33, + T34 v34, T35 v35, T36 v36, T37 v37, T38 v38, T39 v39, T40 v40, T41 v41, + T42 v42, T43 v43) : v1_(v1), v2_(v2), v3_(v3), v4_(v4), v5_(v5), v6_(v6), + v7_(v7), v8_(v8), v9_(v9), v10_(v10), v11_(v11), v12_(v12), v13_(v13), + v14_(v14), v15_(v15), v16_(v16), v17_(v17), v18_(v18), v19_(v19), + v20_(v20), v21_(v21), v22_(v22), v23_(v23), v24_(v24), v25_(v25), + v26_(v26), v27_(v27), v28_(v28), v29_(v29), v30_(v30), v31_(v31), + v32_(v32), v33_(v33), v34_(v34), v35_(v35), v36_(v36), v37_(v37), + v38_(v38), v39_(v39), v40_(v40), v41_(v41), v42_(v42), v43_(v43) {} + + template + operator ParamGenerator() const { + const T array[] = {static_cast(v1_), static_cast(v2_), + static_cast(v3_), static_cast(v4_), static_cast(v5_), + static_cast(v6_), static_cast(v7_), static_cast(v8_), + static_cast(v9_), static_cast(v10_), static_cast(v11_), + static_cast(v12_), static_cast(v13_), static_cast(v14_), + static_cast(v15_), static_cast(v16_), static_cast(v17_), + static_cast(v18_), static_cast(v19_), static_cast(v20_), + static_cast(v21_), static_cast(v22_), static_cast(v23_), + static_cast(v24_), static_cast(v25_), static_cast(v26_), + static_cast(v27_), static_cast(v28_), static_cast(v29_), + static_cast(v30_), static_cast(v31_), static_cast(v32_), + static_cast(v33_), static_cast(v34_), static_cast(v35_), + static_cast(v36_), static_cast(v37_), static_cast(v38_), + static_cast(v39_), static_cast(v40_), static_cast(v41_), + static_cast(v42_), static_cast(v43_)}; + return ValuesIn(array); + } + + private: + // No implementation - assignment is unsupported. + void operator=(const ValueArray43& other); + + const T1 v1_; + const T2 v2_; + const T3 v3_; + const T4 v4_; + const T5 v5_; + const T6 v6_; + const T7 v7_; + const T8 v8_; + const T9 v9_; + const T10 v10_; + const T11 v11_; + const T12 v12_; + const T13 v13_; + const T14 v14_; + const T15 v15_; + const T16 v16_; + const T17 v17_; + const T18 v18_; + const T19 v19_; + const T20 v20_; + const T21 v21_; + const T22 v22_; + const T23 v23_; + const T24 v24_; + const T25 v25_; + const T26 v26_; + const T27 v27_; + const T28 v28_; + const T29 v29_; + const T30 v30_; + const T31 v31_; + const T32 v32_; + const T33 v33_; + const T34 v34_; + const T35 v35_; + const T36 v36_; + const T37 v37_; + const T38 v38_; + const T39 v39_; + const T40 v40_; + const T41 v41_; + const T42 v42_; + const T43 v43_; +}; + +template +class ValueArray44 { + public: + ValueArray44(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, + T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, + T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, + T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33, + T34 v34, T35 v35, T36 v36, T37 v37, T38 v38, T39 v39, T40 v40, T41 v41, + T42 v42, T43 v43, T44 v44) : v1_(v1), v2_(v2), v3_(v3), v4_(v4), v5_(v5), + v6_(v6), v7_(v7), v8_(v8), v9_(v9), v10_(v10), v11_(v11), v12_(v12), + v13_(v13), v14_(v14), v15_(v15), v16_(v16), v17_(v17), v18_(v18), + v19_(v19), v20_(v20), v21_(v21), v22_(v22), v23_(v23), v24_(v24), + v25_(v25), v26_(v26), v27_(v27), v28_(v28), v29_(v29), v30_(v30), + v31_(v31), v32_(v32), v33_(v33), v34_(v34), v35_(v35), v36_(v36), + v37_(v37), v38_(v38), v39_(v39), v40_(v40), v41_(v41), v42_(v42), + v43_(v43), v44_(v44) {} + + template + operator ParamGenerator() const { + const T array[] = {static_cast(v1_), static_cast(v2_), + static_cast(v3_), static_cast(v4_), static_cast(v5_), + static_cast(v6_), static_cast(v7_), static_cast(v8_), + static_cast(v9_), static_cast(v10_), static_cast(v11_), + static_cast(v12_), static_cast(v13_), static_cast(v14_), + static_cast(v15_), static_cast(v16_), static_cast(v17_), + static_cast(v18_), static_cast(v19_), static_cast(v20_), + static_cast(v21_), static_cast(v22_), static_cast(v23_), + static_cast(v24_), static_cast(v25_), static_cast(v26_), + static_cast(v27_), static_cast(v28_), static_cast(v29_), + static_cast(v30_), static_cast(v31_), static_cast(v32_), + static_cast(v33_), static_cast(v34_), static_cast(v35_), + static_cast(v36_), static_cast(v37_), static_cast(v38_), + static_cast(v39_), static_cast(v40_), static_cast(v41_), + static_cast(v42_), static_cast(v43_), static_cast(v44_)}; + return ValuesIn(array); + } + + private: + // No implementation - assignment is unsupported. + void operator=(const ValueArray44& other); + + const T1 v1_; + const T2 v2_; + const T3 v3_; + const T4 v4_; + const T5 v5_; + const T6 v6_; + const T7 v7_; + const T8 v8_; + const T9 v9_; + const T10 v10_; + const T11 v11_; + const T12 v12_; + const T13 v13_; + const T14 v14_; + const T15 v15_; + const T16 v16_; + const T17 v17_; + const T18 v18_; + const T19 v19_; + const T20 v20_; + const T21 v21_; + const T22 v22_; + const T23 v23_; + const T24 v24_; + const T25 v25_; + const T26 v26_; + const T27 v27_; + const T28 v28_; + const T29 v29_; + const T30 v30_; + const T31 v31_; + const T32 v32_; + const T33 v33_; + const T34 v34_; + const T35 v35_; + const T36 v36_; + const T37 v37_; + const T38 v38_; + const T39 v39_; + const T40 v40_; + const T41 v41_; + const T42 v42_; + const T43 v43_; + const T44 v44_; +}; + +template +class ValueArray45 { + public: + ValueArray45(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, + T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, + T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, + T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33, + T34 v34, T35 v35, T36 v36, T37 v37, T38 v38, T39 v39, T40 v40, T41 v41, + T42 v42, T43 v43, T44 v44, T45 v45) : v1_(v1), v2_(v2), v3_(v3), v4_(v4), + v5_(v5), v6_(v6), v7_(v7), v8_(v8), v9_(v9), v10_(v10), v11_(v11), + v12_(v12), v13_(v13), v14_(v14), v15_(v15), v16_(v16), v17_(v17), + v18_(v18), v19_(v19), v20_(v20), v21_(v21), v22_(v22), v23_(v23), + v24_(v24), v25_(v25), v26_(v26), v27_(v27), v28_(v28), v29_(v29), + v30_(v30), v31_(v31), v32_(v32), v33_(v33), v34_(v34), v35_(v35), + v36_(v36), v37_(v37), v38_(v38), v39_(v39), v40_(v40), v41_(v41), + v42_(v42), v43_(v43), v44_(v44), v45_(v45) {} + + template + operator ParamGenerator() const { + const T array[] = {static_cast(v1_), static_cast(v2_), + static_cast(v3_), static_cast(v4_), static_cast(v5_), + static_cast(v6_), static_cast(v7_), static_cast(v8_), + static_cast(v9_), static_cast(v10_), static_cast(v11_), + static_cast(v12_), static_cast(v13_), static_cast(v14_), + static_cast(v15_), static_cast(v16_), static_cast(v17_), + static_cast(v18_), static_cast(v19_), static_cast(v20_), + static_cast(v21_), static_cast(v22_), static_cast(v23_), + static_cast(v24_), static_cast(v25_), static_cast(v26_), + static_cast(v27_), static_cast(v28_), static_cast(v29_), + static_cast(v30_), static_cast(v31_), static_cast(v32_), + static_cast(v33_), static_cast(v34_), static_cast(v35_), + static_cast(v36_), static_cast(v37_), static_cast(v38_), + static_cast(v39_), static_cast(v40_), static_cast(v41_), + static_cast(v42_), static_cast(v43_), static_cast(v44_), + static_cast(v45_)}; + return ValuesIn(array); + } + + private: + // No implementation - assignment is unsupported. + void operator=(const ValueArray45& other); + + const T1 v1_; + const T2 v2_; + const T3 v3_; + const T4 v4_; + const T5 v5_; + const T6 v6_; + const T7 v7_; + const T8 v8_; + const T9 v9_; + const T10 v10_; + const T11 v11_; + const T12 v12_; + const T13 v13_; + const T14 v14_; + const T15 v15_; + const T16 v16_; + const T17 v17_; + const T18 v18_; + const T19 v19_; + const T20 v20_; + const T21 v21_; + const T22 v22_; + const T23 v23_; + const T24 v24_; + const T25 v25_; + const T26 v26_; + const T27 v27_; + const T28 v28_; + const T29 v29_; + const T30 v30_; + const T31 v31_; + const T32 v32_; + const T33 v33_; + const T34 v34_; + const T35 v35_; + const T36 v36_; + const T37 v37_; + const T38 v38_; + const T39 v39_; + const T40 v40_; + const T41 v41_; + const T42 v42_; + const T43 v43_; + const T44 v44_; + const T45 v45_; +}; + +template +class ValueArray46 { + public: + ValueArray46(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, + T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, + T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, + T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33, + T34 v34, T35 v35, T36 v36, T37 v37, T38 v38, T39 v39, T40 v40, T41 v41, + T42 v42, T43 v43, T44 v44, T45 v45, T46 v46) : v1_(v1), v2_(v2), v3_(v3), + v4_(v4), v5_(v5), v6_(v6), v7_(v7), v8_(v8), v9_(v9), v10_(v10), + v11_(v11), v12_(v12), v13_(v13), v14_(v14), v15_(v15), v16_(v16), + v17_(v17), v18_(v18), v19_(v19), v20_(v20), v21_(v21), v22_(v22), + v23_(v23), v24_(v24), v25_(v25), v26_(v26), v27_(v27), v28_(v28), + v29_(v29), v30_(v30), v31_(v31), v32_(v32), v33_(v33), v34_(v34), + v35_(v35), v36_(v36), v37_(v37), v38_(v38), v39_(v39), v40_(v40), + v41_(v41), v42_(v42), v43_(v43), v44_(v44), v45_(v45), v46_(v46) {} + + template + operator ParamGenerator() const { + const T array[] = {static_cast(v1_), static_cast(v2_), + static_cast(v3_), static_cast(v4_), static_cast(v5_), + static_cast(v6_), static_cast(v7_), static_cast(v8_), + static_cast(v9_), static_cast(v10_), static_cast(v11_), + static_cast(v12_), static_cast(v13_), static_cast(v14_), + static_cast(v15_), static_cast(v16_), static_cast(v17_), + static_cast(v18_), static_cast(v19_), static_cast(v20_), + static_cast(v21_), static_cast(v22_), static_cast(v23_), + static_cast(v24_), static_cast(v25_), static_cast(v26_), + static_cast(v27_), static_cast(v28_), static_cast(v29_), + static_cast(v30_), static_cast(v31_), static_cast(v32_), + static_cast(v33_), static_cast(v34_), static_cast(v35_), + static_cast(v36_), static_cast(v37_), static_cast(v38_), + static_cast(v39_), static_cast(v40_), static_cast(v41_), + static_cast(v42_), static_cast(v43_), static_cast(v44_), + static_cast(v45_), static_cast(v46_)}; + return ValuesIn(array); + } + + private: + // No implementation - assignment is unsupported. + void operator=(const ValueArray46& other); + + const T1 v1_; + const T2 v2_; + const T3 v3_; + const T4 v4_; + const T5 v5_; + const T6 v6_; + const T7 v7_; + const T8 v8_; + const T9 v9_; + const T10 v10_; + const T11 v11_; + const T12 v12_; + const T13 v13_; + const T14 v14_; + const T15 v15_; + const T16 v16_; + const T17 v17_; + const T18 v18_; + const T19 v19_; + const T20 v20_; + const T21 v21_; + const T22 v22_; + const T23 v23_; + const T24 v24_; + const T25 v25_; + const T26 v26_; + const T27 v27_; + const T28 v28_; + const T29 v29_; + const T30 v30_; + const T31 v31_; + const T32 v32_; + const T33 v33_; + const T34 v34_; + const T35 v35_; + const T36 v36_; + const T37 v37_; + const T38 v38_; + const T39 v39_; + const T40 v40_; + const T41 v41_; + const T42 v42_; + const T43 v43_; + const T44 v44_; + const T45 v45_; + const T46 v46_; +}; + +template +class ValueArray47 { + public: + ValueArray47(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, + T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, + T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, + T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33, + T34 v34, T35 v35, T36 v36, T37 v37, T38 v38, T39 v39, T40 v40, T41 v41, + T42 v42, T43 v43, T44 v44, T45 v45, T46 v46, T47 v47) : v1_(v1), v2_(v2), + v3_(v3), v4_(v4), v5_(v5), v6_(v6), v7_(v7), v8_(v8), v9_(v9), v10_(v10), + v11_(v11), v12_(v12), v13_(v13), v14_(v14), v15_(v15), v16_(v16), + v17_(v17), v18_(v18), v19_(v19), v20_(v20), v21_(v21), v22_(v22), + v23_(v23), v24_(v24), v25_(v25), v26_(v26), v27_(v27), v28_(v28), + v29_(v29), v30_(v30), v31_(v31), v32_(v32), v33_(v33), v34_(v34), + v35_(v35), v36_(v36), v37_(v37), v38_(v38), v39_(v39), v40_(v40), + v41_(v41), v42_(v42), v43_(v43), v44_(v44), v45_(v45), v46_(v46), + v47_(v47) {} + + template + operator ParamGenerator() const { + const T array[] = {static_cast(v1_), static_cast(v2_), + static_cast(v3_), static_cast(v4_), static_cast(v5_), + static_cast(v6_), static_cast(v7_), static_cast(v8_), + static_cast(v9_), static_cast(v10_), static_cast(v11_), + static_cast(v12_), static_cast(v13_), static_cast(v14_), + static_cast(v15_), static_cast(v16_), static_cast(v17_), + static_cast(v18_), static_cast(v19_), static_cast(v20_), + static_cast(v21_), static_cast(v22_), static_cast(v23_), + static_cast(v24_), static_cast(v25_), static_cast(v26_), + static_cast(v27_), static_cast(v28_), static_cast(v29_), + static_cast(v30_), static_cast(v31_), static_cast(v32_), + static_cast(v33_), static_cast(v34_), static_cast(v35_), + static_cast(v36_), static_cast(v37_), static_cast(v38_), + static_cast(v39_), static_cast(v40_), static_cast(v41_), + static_cast(v42_), static_cast(v43_), static_cast(v44_), + static_cast(v45_), static_cast(v46_), static_cast(v47_)}; + return ValuesIn(array); + } + + private: + // No implementation - assignment is unsupported. + void operator=(const ValueArray47& other); + + const T1 v1_; + const T2 v2_; + const T3 v3_; + const T4 v4_; + const T5 v5_; + const T6 v6_; + const T7 v7_; + const T8 v8_; + const T9 v9_; + const T10 v10_; + const T11 v11_; + const T12 v12_; + const T13 v13_; + const T14 v14_; + const T15 v15_; + const T16 v16_; + const T17 v17_; + const T18 v18_; + const T19 v19_; + const T20 v20_; + const T21 v21_; + const T22 v22_; + const T23 v23_; + const T24 v24_; + const T25 v25_; + const T26 v26_; + const T27 v27_; + const T28 v28_; + const T29 v29_; + const T30 v30_; + const T31 v31_; + const T32 v32_; + const T33 v33_; + const T34 v34_; + const T35 v35_; + const T36 v36_; + const T37 v37_; + const T38 v38_; + const T39 v39_; + const T40 v40_; + const T41 v41_; + const T42 v42_; + const T43 v43_; + const T44 v44_; + const T45 v45_; + const T46 v46_; + const T47 v47_; +}; + +template +class ValueArray48 { + public: + ValueArray48(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, + T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, + T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, + T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33, + T34 v34, T35 v35, T36 v36, T37 v37, T38 v38, T39 v39, T40 v40, T41 v41, + T42 v42, T43 v43, T44 v44, T45 v45, T46 v46, T47 v47, T48 v48) : v1_(v1), + v2_(v2), v3_(v3), v4_(v4), v5_(v5), v6_(v6), v7_(v7), v8_(v8), v9_(v9), + v10_(v10), v11_(v11), v12_(v12), v13_(v13), v14_(v14), v15_(v15), + v16_(v16), v17_(v17), v18_(v18), v19_(v19), v20_(v20), v21_(v21), + v22_(v22), v23_(v23), v24_(v24), v25_(v25), v26_(v26), v27_(v27), + v28_(v28), v29_(v29), v30_(v30), v31_(v31), v32_(v32), v33_(v33), + v34_(v34), v35_(v35), v36_(v36), v37_(v37), v38_(v38), v39_(v39), + v40_(v40), v41_(v41), v42_(v42), v43_(v43), v44_(v44), v45_(v45), + v46_(v46), v47_(v47), v48_(v48) {} + + template + operator ParamGenerator() const { + const T array[] = {static_cast(v1_), static_cast(v2_), + static_cast(v3_), static_cast(v4_), static_cast(v5_), + static_cast(v6_), static_cast(v7_), static_cast(v8_), + static_cast(v9_), static_cast(v10_), static_cast(v11_), + static_cast(v12_), static_cast(v13_), static_cast(v14_), + static_cast(v15_), static_cast(v16_), static_cast(v17_), + static_cast(v18_), static_cast(v19_), static_cast(v20_), + static_cast(v21_), static_cast(v22_), static_cast(v23_), + static_cast(v24_), static_cast(v25_), static_cast(v26_), + static_cast(v27_), static_cast(v28_), static_cast(v29_), + static_cast(v30_), static_cast(v31_), static_cast(v32_), + static_cast(v33_), static_cast(v34_), static_cast(v35_), + static_cast(v36_), static_cast(v37_), static_cast(v38_), + static_cast(v39_), static_cast(v40_), static_cast(v41_), + static_cast(v42_), static_cast(v43_), static_cast(v44_), + static_cast(v45_), static_cast(v46_), static_cast(v47_), + static_cast(v48_)}; + return ValuesIn(array); + } + + private: + // No implementation - assignment is unsupported. + void operator=(const ValueArray48& other); + + const T1 v1_; + const T2 v2_; + const T3 v3_; + const T4 v4_; + const T5 v5_; + const T6 v6_; + const T7 v7_; + const T8 v8_; + const T9 v9_; + const T10 v10_; + const T11 v11_; + const T12 v12_; + const T13 v13_; + const T14 v14_; + const T15 v15_; + const T16 v16_; + const T17 v17_; + const T18 v18_; + const T19 v19_; + const T20 v20_; + const T21 v21_; + const T22 v22_; + const T23 v23_; + const T24 v24_; + const T25 v25_; + const T26 v26_; + const T27 v27_; + const T28 v28_; + const T29 v29_; + const T30 v30_; + const T31 v31_; + const T32 v32_; + const T33 v33_; + const T34 v34_; + const T35 v35_; + const T36 v36_; + const T37 v37_; + const T38 v38_; + const T39 v39_; + const T40 v40_; + const T41 v41_; + const T42 v42_; + const T43 v43_; + const T44 v44_; + const T45 v45_; + const T46 v46_; + const T47 v47_; + const T48 v48_; +}; + +template +class ValueArray49 { + public: + ValueArray49(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, + T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, + T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, + T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33, + T34 v34, T35 v35, T36 v36, T37 v37, T38 v38, T39 v39, T40 v40, T41 v41, + T42 v42, T43 v43, T44 v44, T45 v45, T46 v46, T47 v47, T48 v48, + T49 v49) : v1_(v1), v2_(v2), v3_(v3), v4_(v4), v5_(v5), v6_(v6), v7_(v7), + v8_(v8), v9_(v9), v10_(v10), v11_(v11), v12_(v12), v13_(v13), v14_(v14), + v15_(v15), v16_(v16), v17_(v17), v18_(v18), v19_(v19), v20_(v20), + v21_(v21), v22_(v22), v23_(v23), v24_(v24), v25_(v25), v26_(v26), + v27_(v27), v28_(v28), v29_(v29), v30_(v30), v31_(v31), v32_(v32), + v33_(v33), v34_(v34), v35_(v35), v36_(v36), v37_(v37), v38_(v38), + v39_(v39), v40_(v40), v41_(v41), v42_(v42), v43_(v43), v44_(v44), + v45_(v45), v46_(v46), v47_(v47), v48_(v48), v49_(v49) {} + + template + operator ParamGenerator() const { + const T array[] = {static_cast(v1_), static_cast(v2_), + static_cast(v3_), static_cast(v4_), static_cast(v5_), + static_cast(v6_), static_cast(v7_), static_cast(v8_), + static_cast(v9_), static_cast(v10_), static_cast(v11_), + static_cast(v12_), static_cast(v13_), static_cast(v14_), + static_cast(v15_), static_cast(v16_), static_cast(v17_), + static_cast(v18_), static_cast(v19_), static_cast(v20_), + static_cast(v21_), static_cast(v22_), static_cast(v23_), + static_cast(v24_), static_cast(v25_), static_cast(v26_), + static_cast(v27_), static_cast(v28_), static_cast(v29_), + static_cast(v30_), static_cast(v31_), static_cast(v32_), + static_cast(v33_), static_cast(v34_), static_cast(v35_), + static_cast(v36_), static_cast(v37_), static_cast(v38_), + static_cast(v39_), static_cast(v40_), static_cast(v41_), + static_cast(v42_), static_cast(v43_), static_cast(v44_), + static_cast(v45_), static_cast(v46_), static_cast(v47_), + static_cast(v48_), static_cast(v49_)}; + return ValuesIn(array); + } + + private: + // No implementation - assignment is unsupported. + void operator=(const ValueArray49& other); + + const T1 v1_; + const T2 v2_; + const T3 v3_; + const T4 v4_; + const T5 v5_; + const T6 v6_; + const T7 v7_; + const T8 v8_; + const T9 v9_; + const T10 v10_; + const T11 v11_; + const T12 v12_; + const T13 v13_; + const T14 v14_; + const T15 v15_; + const T16 v16_; + const T17 v17_; + const T18 v18_; + const T19 v19_; + const T20 v20_; + const T21 v21_; + const T22 v22_; + const T23 v23_; + const T24 v24_; + const T25 v25_; + const T26 v26_; + const T27 v27_; + const T28 v28_; + const T29 v29_; + const T30 v30_; + const T31 v31_; + const T32 v32_; + const T33 v33_; + const T34 v34_; + const T35 v35_; + const T36 v36_; + const T37 v37_; + const T38 v38_; + const T39 v39_; + const T40 v40_; + const T41 v41_; + const T42 v42_; + const T43 v43_; + const T44 v44_; + const T45 v45_; + const T46 v46_; + const T47 v47_; + const T48 v48_; + const T49 v49_; +}; + +template +class ValueArray50 { + public: + ValueArray50(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, + T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, + T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, + T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33, + T34 v34, T35 v35, T36 v36, T37 v37, T38 v38, T39 v39, T40 v40, T41 v41, + T42 v42, T43 v43, T44 v44, T45 v45, T46 v46, T47 v47, T48 v48, T49 v49, + T50 v50) : v1_(v1), v2_(v2), v3_(v3), v4_(v4), v5_(v5), v6_(v6), v7_(v7), + v8_(v8), v9_(v9), v10_(v10), v11_(v11), v12_(v12), v13_(v13), v14_(v14), + v15_(v15), v16_(v16), v17_(v17), v18_(v18), v19_(v19), v20_(v20), + v21_(v21), v22_(v22), v23_(v23), v24_(v24), v25_(v25), v26_(v26), + v27_(v27), v28_(v28), v29_(v29), v30_(v30), v31_(v31), v32_(v32), + v33_(v33), v34_(v34), v35_(v35), v36_(v36), v37_(v37), v38_(v38), + v39_(v39), v40_(v40), v41_(v41), v42_(v42), v43_(v43), v44_(v44), + v45_(v45), v46_(v46), v47_(v47), v48_(v48), v49_(v49), v50_(v50) {} + + template + operator ParamGenerator() const { + const T array[] = {static_cast(v1_), static_cast(v2_), + static_cast(v3_), static_cast(v4_), static_cast(v5_), + static_cast(v6_), static_cast(v7_), static_cast(v8_), + static_cast(v9_), static_cast(v10_), static_cast(v11_), + static_cast(v12_), static_cast(v13_), static_cast(v14_), + static_cast(v15_), static_cast(v16_), static_cast(v17_), + static_cast(v18_), static_cast(v19_), static_cast(v20_), + static_cast(v21_), static_cast(v22_), static_cast(v23_), + static_cast(v24_), static_cast(v25_), static_cast(v26_), + static_cast(v27_), static_cast(v28_), static_cast(v29_), + static_cast(v30_), static_cast(v31_), static_cast(v32_), + static_cast(v33_), static_cast(v34_), static_cast(v35_), + static_cast(v36_), static_cast(v37_), static_cast(v38_), + static_cast(v39_), static_cast(v40_), static_cast(v41_), + static_cast(v42_), static_cast(v43_), static_cast(v44_), + static_cast(v45_), static_cast(v46_), static_cast(v47_), + static_cast(v48_), static_cast(v49_), static_cast(v50_)}; + return ValuesIn(array); + } + + private: + // No implementation - assignment is unsupported. + void operator=(const ValueArray50& other); + + const T1 v1_; + const T2 v2_; + const T3 v3_; + const T4 v4_; + const T5 v5_; + const T6 v6_; + const T7 v7_; + const T8 v8_; + const T9 v9_; + const T10 v10_; + const T11 v11_; + const T12 v12_; + const T13 v13_; + const T14 v14_; + const T15 v15_; + const T16 v16_; + const T17 v17_; + const T18 v18_; + const T19 v19_; + const T20 v20_; + const T21 v21_; + const T22 v22_; + const T23 v23_; + const T24 v24_; + const T25 v25_; + const T26 v26_; + const T27 v27_; + const T28 v28_; + const T29 v29_; + const T30 v30_; + const T31 v31_; + const T32 v32_; + const T33 v33_; + const T34 v34_; + const T35 v35_; + const T36 v36_; + const T37 v37_; + const T38 v38_; + const T39 v39_; + const T40 v40_; + const T41 v41_; + const T42 v42_; + const T43 v43_; + const T44 v44_; + const T45 v45_; + const T46 v46_; + const T47 v47_; + const T48 v48_; + const T49 v49_; + const T50 v50_; +}; + +# if GTEST_HAS_COMBINE +// INTERNAL IMPLEMENTATION - DO NOT USE IN USER CODE. +// +// Generates values from the Cartesian product of values produced +// by the argument generators. +// +template +class CartesianProductGenerator2 + : public ParamGeneratorInterface< ::std::tr1::tuple > { + public: + typedef ::std::tr1::tuple ParamType; + + CartesianProductGenerator2(const ParamGenerator& g1, + const ParamGenerator& g2) + : g1_(g1), g2_(g2) {} + virtual ~CartesianProductGenerator2() {} + + virtual ParamIteratorInterface* Begin() const { + return new Iterator(this, g1_, g1_.begin(), g2_, g2_.begin()); + } + virtual ParamIteratorInterface* End() const { + return new Iterator(this, g1_, g1_.end(), g2_, g2_.end()); + } + + private: + class Iterator : public ParamIteratorInterface { + public: + Iterator(const ParamGeneratorInterface* base, + const ParamGenerator& g1, + const typename ParamGenerator::iterator& current1, + const ParamGenerator& g2, + const typename ParamGenerator::iterator& current2) + : base_(base), + begin1_(g1.begin()), end1_(g1.end()), current1_(current1), + begin2_(g2.begin()), end2_(g2.end()), current2_(current2) { + ComputeCurrentValue(); + } + virtual ~Iterator() {} + + virtual const ParamGeneratorInterface* BaseGenerator() const { + return base_; + } + // Advance should not be called on beyond-of-range iterators + // so no component iterators must be beyond end of range, either. + virtual void Advance() { + assert(!AtEnd()); + ++current2_; + if (current2_ == end2_) { + current2_ = begin2_; + ++current1_; + } + ComputeCurrentValue(); + } + virtual ParamIteratorInterface* Clone() const { + return new Iterator(*this); + } + virtual const ParamType* Current() const { return ¤t_value_; } + virtual bool Equals(const ParamIteratorInterface& other) const { + // Having the same base generator guarantees that the other + // iterator is of the same type and we can downcast. + GTEST_CHECK_(BaseGenerator() == other.BaseGenerator()) + << "The program attempted to compare iterators " + << "from different generators." << std::endl; + const Iterator* typed_other = + CheckedDowncastToActualType(&other); + // We must report iterators equal if they both point beyond their + // respective ranges. That can happen in a variety of fashions, + // so we have to consult AtEnd(). + return (AtEnd() && typed_other->AtEnd()) || + ( + current1_ == typed_other->current1_ && + current2_ == typed_other->current2_); + } + + private: + Iterator(const Iterator& other) + : base_(other.base_), + begin1_(other.begin1_), + end1_(other.end1_), + current1_(other.current1_), + begin2_(other.begin2_), + end2_(other.end2_), + current2_(other.current2_) { + ComputeCurrentValue(); + } + + void ComputeCurrentValue() { + if (!AtEnd()) + current_value_ = ParamType(*current1_, *current2_); + } + bool AtEnd() const { + // We must report iterator past the end of the range when either of the + // component iterators has reached the end of its range. + return + current1_ == end1_ || + current2_ == end2_; + } + + // No implementation - assignment is unsupported. + void operator=(const Iterator& other); + + const ParamGeneratorInterface* const base_; + // begin[i]_ and end[i]_ define the i-th range that Iterator traverses. + // current[i]_ is the actual traversing iterator. + const typename ParamGenerator::iterator begin1_; + const typename ParamGenerator::iterator end1_; + typename ParamGenerator::iterator current1_; + const typename ParamGenerator::iterator begin2_; + const typename ParamGenerator::iterator end2_; + typename ParamGenerator::iterator current2_; + ParamType current_value_; + }; // class CartesianProductGenerator2::Iterator + + // No implementation - assignment is unsupported. + void operator=(const CartesianProductGenerator2& other); + + const ParamGenerator g1_; + const ParamGenerator g2_; +}; // class CartesianProductGenerator2 + + +template +class CartesianProductGenerator3 + : public ParamGeneratorInterface< ::std::tr1::tuple > { + public: + typedef ::std::tr1::tuple ParamType; + + CartesianProductGenerator3(const ParamGenerator& g1, + const ParamGenerator& g2, const ParamGenerator& g3) + : g1_(g1), g2_(g2), g3_(g3) {} + virtual ~CartesianProductGenerator3() {} + + virtual ParamIteratorInterface* Begin() const { + return new Iterator(this, g1_, g1_.begin(), g2_, g2_.begin(), g3_, + g3_.begin()); + } + virtual ParamIteratorInterface* End() const { + return new Iterator(this, g1_, g1_.end(), g2_, g2_.end(), g3_, g3_.end()); + } + + private: + class Iterator : public ParamIteratorInterface { + public: + Iterator(const ParamGeneratorInterface* base, + const ParamGenerator& g1, + const typename ParamGenerator::iterator& current1, + const ParamGenerator& g2, + const typename ParamGenerator::iterator& current2, + const ParamGenerator& g3, + const typename ParamGenerator::iterator& current3) + : base_(base), + begin1_(g1.begin()), end1_(g1.end()), current1_(current1), + begin2_(g2.begin()), end2_(g2.end()), current2_(current2), + begin3_(g3.begin()), end3_(g3.end()), current3_(current3) { + ComputeCurrentValue(); + } + virtual ~Iterator() {} + + virtual const ParamGeneratorInterface* BaseGenerator() const { + return base_; + } + // Advance should not be called on beyond-of-range iterators + // so no component iterators must be beyond end of range, either. + virtual void Advance() { + assert(!AtEnd()); + ++current3_; + if (current3_ == end3_) { + current3_ = begin3_; + ++current2_; + } + if (current2_ == end2_) { + current2_ = begin2_; + ++current1_; + } + ComputeCurrentValue(); + } + virtual ParamIteratorInterface* Clone() const { + return new Iterator(*this); + } + virtual const ParamType* Current() const { return ¤t_value_; } + virtual bool Equals(const ParamIteratorInterface& other) const { + // Having the same base generator guarantees that the other + // iterator is of the same type and we can downcast. + GTEST_CHECK_(BaseGenerator() == other.BaseGenerator()) + << "The program attempted to compare iterators " + << "from different generators." << std::endl; + const Iterator* typed_other = + CheckedDowncastToActualType(&other); + // We must report iterators equal if they both point beyond their + // respective ranges. That can happen in a variety of fashions, + // so we have to consult AtEnd(). + return (AtEnd() && typed_other->AtEnd()) || + ( + current1_ == typed_other->current1_ && + current2_ == typed_other->current2_ && + current3_ == typed_other->current3_); + } + + private: + Iterator(const Iterator& other) + : base_(other.base_), + begin1_(other.begin1_), + end1_(other.end1_), + current1_(other.current1_), + begin2_(other.begin2_), + end2_(other.end2_), + current2_(other.current2_), + begin3_(other.begin3_), + end3_(other.end3_), + current3_(other.current3_) { + ComputeCurrentValue(); + } + + void ComputeCurrentValue() { + if (!AtEnd()) + current_value_ = ParamType(*current1_, *current2_, *current3_); + } + bool AtEnd() const { + // We must report iterator past the end of the range when either of the + // component iterators has reached the end of its range. + return + current1_ == end1_ || + current2_ == end2_ || + current3_ == end3_; + } + + // No implementation - assignment is unsupported. + void operator=(const Iterator& other); + + const ParamGeneratorInterface* const base_; + // begin[i]_ and end[i]_ define the i-th range that Iterator traverses. + // current[i]_ is the actual traversing iterator. + const typename ParamGenerator::iterator begin1_; + const typename ParamGenerator::iterator end1_; + typename ParamGenerator::iterator current1_; + const typename ParamGenerator::iterator begin2_; + const typename ParamGenerator::iterator end2_; + typename ParamGenerator::iterator current2_; + const typename ParamGenerator::iterator begin3_; + const typename ParamGenerator::iterator end3_; + typename ParamGenerator::iterator current3_; + ParamType current_value_; + }; // class CartesianProductGenerator3::Iterator + + // No implementation - assignment is unsupported. + void operator=(const CartesianProductGenerator3& other); + + const ParamGenerator g1_; + const ParamGenerator g2_; + const ParamGenerator g3_; +}; // class CartesianProductGenerator3 + + +template +class CartesianProductGenerator4 + : public ParamGeneratorInterface< ::std::tr1::tuple > { + public: + typedef ::std::tr1::tuple ParamType; + + CartesianProductGenerator4(const ParamGenerator& g1, + const ParamGenerator& g2, const ParamGenerator& g3, + const ParamGenerator& g4) + : g1_(g1), g2_(g2), g3_(g3), g4_(g4) {} + virtual ~CartesianProductGenerator4() {} + + virtual ParamIteratorInterface* Begin() const { + return new Iterator(this, g1_, g1_.begin(), g2_, g2_.begin(), g3_, + g3_.begin(), g4_, g4_.begin()); + } + virtual ParamIteratorInterface* End() const { + return new Iterator(this, g1_, g1_.end(), g2_, g2_.end(), g3_, g3_.end(), + g4_, g4_.end()); + } + + private: + class Iterator : public ParamIteratorInterface { + public: + Iterator(const ParamGeneratorInterface* base, + const ParamGenerator& g1, + const typename ParamGenerator::iterator& current1, + const ParamGenerator& g2, + const typename ParamGenerator::iterator& current2, + const ParamGenerator& g3, + const typename ParamGenerator::iterator& current3, + const ParamGenerator& g4, + const typename ParamGenerator::iterator& current4) + : base_(base), + begin1_(g1.begin()), end1_(g1.end()), current1_(current1), + begin2_(g2.begin()), end2_(g2.end()), current2_(current2), + begin3_(g3.begin()), end3_(g3.end()), current3_(current3), + begin4_(g4.begin()), end4_(g4.end()), current4_(current4) { + ComputeCurrentValue(); + } + virtual ~Iterator() {} + + virtual const ParamGeneratorInterface* BaseGenerator() const { + return base_; + } + // Advance should not be called on beyond-of-range iterators + // so no component iterators must be beyond end of range, either. + virtual void Advance() { + assert(!AtEnd()); + ++current4_; + if (current4_ == end4_) { + current4_ = begin4_; + ++current3_; + } + if (current3_ == end3_) { + current3_ = begin3_; + ++current2_; + } + if (current2_ == end2_) { + current2_ = begin2_; + ++current1_; + } + ComputeCurrentValue(); + } + virtual ParamIteratorInterface* Clone() const { + return new Iterator(*this); + } + virtual const ParamType* Current() const { return ¤t_value_; } + virtual bool Equals(const ParamIteratorInterface& other) const { + // Having the same base generator guarantees that the other + // iterator is of the same type and we can downcast. + GTEST_CHECK_(BaseGenerator() == other.BaseGenerator()) + << "The program attempted to compare iterators " + << "from different generators." << std::endl; + const Iterator* typed_other = + CheckedDowncastToActualType(&other); + // We must report iterators equal if they both point beyond their + // respective ranges. That can happen in a variety of fashions, + // so we have to consult AtEnd(). + return (AtEnd() && typed_other->AtEnd()) || + ( + current1_ == typed_other->current1_ && + current2_ == typed_other->current2_ && + current3_ == typed_other->current3_ && + current4_ == typed_other->current4_); + } + + private: + Iterator(const Iterator& other) + : base_(other.base_), + begin1_(other.begin1_), + end1_(other.end1_), + current1_(other.current1_), + begin2_(other.begin2_), + end2_(other.end2_), + current2_(other.current2_), + begin3_(other.begin3_), + end3_(other.end3_), + current3_(other.current3_), + begin4_(other.begin4_), + end4_(other.end4_), + current4_(other.current4_) { + ComputeCurrentValue(); + } + + void ComputeCurrentValue() { + if (!AtEnd()) + current_value_ = ParamType(*current1_, *current2_, *current3_, + *current4_); + } + bool AtEnd() const { + // We must report iterator past the end of the range when either of the + // component iterators has reached the end of its range. + return + current1_ == end1_ || + current2_ == end2_ || + current3_ == end3_ || + current4_ == end4_; + } + + // No implementation - assignment is unsupported. + void operator=(const Iterator& other); + + const ParamGeneratorInterface* const base_; + // begin[i]_ and end[i]_ define the i-th range that Iterator traverses. + // current[i]_ is the actual traversing iterator. + const typename ParamGenerator::iterator begin1_; + const typename ParamGenerator::iterator end1_; + typename ParamGenerator::iterator current1_; + const typename ParamGenerator::iterator begin2_; + const typename ParamGenerator::iterator end2_; + typename ParamGenerator::iterator current2_; + const typename ParamGenerator::iterator begin3_; + const typename ParamGenerator::iterator end3_; + typename ParamGenerator::iterator current3_; + const typename ParamGenerator::iterator begin4_; + const typename ParamGenerator::iterator end4_; + typename ParamGenerator::iterator current4_; + ParamType current_value_; + }; // class CartesianProductGenerator4::Iterator + + // No implementation - assignment is unsupported. + void operator=(const CartesianProductGenerator4& other); + + const ParamGenerator g1_; + const ParamGenerator g2_; + const ParamGenerator g3_; + const ParamGenerator g4_; +}; // class CartesianProductGenerator4 + + +template +class CartesianProductGenerator5 + : public ParamGeneratorInterface< ::std::tr1::tuple > { + public: + typedef ::std::tr1::tuple ParamType; + + CartesianProductGenerator5(const ParamGenerator& g1, + const ParamGenerator& g2, const ParamGenerator& g3, + const ParamGenerator& g4, const ParamGenerator& g5) + : g1_(g1), g2_(g2), g3_(g3), g4_(g4), g5_(g5) {} + virtual ~CartesianProductGenerator5() {} + + virtual ParamIteratorInterface* Begin() const { + return new Iterator(this, g1_, g1_.begin(), g2_, g2_.begin(), g3_, + g3_.begin(), g4_, g4_.begin(), g5_, g5_.begin()); + } + virtual ParamIteratorInterface* End() const { + return new Iterator(this, g1_, g1_.end(), g2_, g2_.end(), g3_, g3_.end(), + g4_, g4_.end(), g5_, g5_.end()); + } + + private: + class Iterator : public ParamIteratorInterface { + public: + Iterator(const ParamGeneratorInterface* base, + const ParamGenerator& g1, + const typename ParamGenerator::iterator& current1, + const ParamGenerator& g2, + const typename ParamGenerator::iterator& current2, + const ParamGenerator& g3, + const typename ParamGenerator::iterator& current3, + const ParamGenerator& g4, + const typename ParamGenerator::iterator& current4, + const ParamGenerator& g5, + const typename ParamGenerator::iterator& current5) + : base_(base), + begin1_(g1.begin()), end1_(g1.end()), current1_(current1), + begin2_(g2.begin()), end2_(g2.end()), current2_(current2), + begin3_(g3.begin()), end3_(g3.end()), current3_(current3), + begin4_(g4.begin()), end4_(g4.end()), current4_(current4), + begin5_(g5.begin()), end5_(g5.end()), current5_(current5) { + ComputeCurrentValue(); + } + virtual ~Iterator() {} + + virtual const ParamGeneratorInterface* BaseGenerator() const { + return base_; + } + // Advance should not be called on beyond-of-range iterators + // so no component iterators must be beyond end of range, either. + virtual void Advance() { + assert(!AtEnd()); + ++current5_; + if (current5_ == end5_) { + current5_ = begin5_; + ++current4_; + } + if (current4_ == end4_) { + current4_ = begin4_; + ++current3_; + } + if (current3_ == end3_) { + current3_ = begin3_; + ++current2_; + } + if (current2_ == end2_) { + current2_ = begin2_; + ++current1_; + } + ComputeCurrentValue(); + } + virtual ParamIteratorInterface* Clone() const { + return new Iterator(*this); + } + virtual const ParamType* Current() const { return ¤t_value_; } + virtual bool Equals(const ParamIteratorInterface& other) const { + // Having the same base generator guarantees that the other + // iterator is of the same type and we can downcast. + GTEST_CHECK_(BaseGenerator() == other.BaseGenerator()) + << "The program attempted to compare iterators " + << "from different generators." << std::endl; + const Iterator* typed_other = + CheckedDowncastToActualType(&other); + // We must report iterators equal if they both point beyond their + // respective ranges. That can happen in a variety of fashions, + // so we have to consult AtEnd(). + return (AtEnd() && typed_other->AtEnd()) || + ( + current1_ == typed_other->current1_ && + current2_ == typed_other->current2_ && + current3_ == typed_other->current3_ && + current4_ == typed_other->current4_ && + current5_ == typed_other->current5_); + } + + private: + Iterator(const Iterator& other) + : base_(other.base_), + begin1_(other.begin1_), + end1_(other.end1_), + current1_(other.current1_), + begin2_(other.begin2_), + end2_(other.end2_), + current2_(other.current2_), + begin3_(other.begin3_), + end3_(other.end3_), + current3_(other.current3_), + begin4_(other.begin4_), + end4_(other.end4_), + current4_(other.current4_), + begin5_(other.begin5_), + end5_(other.end5_), + current5_(other.current5_) { + ComputeCurrentValue(); + } + + void ComputeCurrentValue() { + if (!AtEnd()) + current_value_ = ParamType(*current1_, *current2_, *current3_, + *current4_, *current5_); + } + bool AtEnd() const { + // We must report iterator past the end of the range when either of the + // component iterators has reached the end of its range. + return + current1_ == end1_ || + current2_ == end2_ || + current3_ == end3_ || + current4_ == end4_ || + current5_ == end5_; + } + + // No implementation - assignment is unsupported. + void operator=(const Iterator& other); + + const ParamGeneratorInterface* const base_; + // begin[i]_ and end[i]_ define the i-th range that Iterator traverses. + // current[i]_ is the actual traversing iterator. + const typename ParamGenerator::iterator begin1_; + const typename ParamGenerator::iterator end1_; + typename ParamGenerator::iterator current1_; + const typename ParamGenerator::iterator begin2_; + const typename ParamGenerator::iterator end2_; + typename ParamGenerator::iterator current2_; + const typename ParamGenerator::iterator begin3_; + const typename ParamGenerator::iterator end3_; + typename ParamGenerator::iterator current3_; + const typename ParamGenerator::iterator begin4_; + const typename ParamGenerator::iterator end4_; + typename ParamGenerator::iterator current4_; + const typename ParamGenerator::iterator begin5_; + const typename ParamGenerator::iterator end5_; + typename ParamGenerator::iterator current5_; + ParamType current_value_; + }; // class CartesianProductGenerator5::Iterator + + // No implementation - assignment is unsupported. + void operator=(const CartesianProductGenerator5& other); + + const ParamGenerator g1_; + const ParamGenerator g2_; + const ParamGenerator g3_; + const ParamGenerator g4_; + const ParamGenerator g5_; +}; // class CartesianProductGenerator5 + + +template +class CartesianProductGenerator6 + : public ParamGeneratorInterface< ::std::tr1::tuple > { + public: + typedef ::std::tr1::tuple ParamType; + + CartesianProductGenerator6(const ParamGenerator& g1, + const ParamGenerator& g2, const ParamGenerator& g3, + const ParamGenerator& g4, const ParamGenerator& g5, + const ParamGenerator& g6) + : g1_(g1), g2_(g2), g3_(g3), g4_(g4), g5_(g5), g6_(g6) {} + virtual ~CartesianProductGenerator6() {} + + virtual ParamIteratorInterface* Begin() const { + return new Iterator(this, g1_, g1_.begin(), g2_, g2_.begin(), g3_, + g3_.begin(), g4_, g4_.begin(), g5_, g5_.begin(), g6_, g6_.begin()); + } + virtual ParamIteratorInterface* End() const { + return new Iterator(this, g1_, g1_.end(), g2_, g2_.end(), g3_, g3_.end(), + g4_, g4_.end(), g5_, g5_.end(), g6_, g6_.end()); + } + + private: + class Iterator : public ParamIteratorInterface { + public: + Iterator(const ParamGeneratorInterface* base, + const ParamGenerator& g1, + const typename ParamGenerator::iterator& current1, + const ParamGenerator& g2, + const typename ParamGenerator::iterator& current2, + const ParamGenerator& g3, + const typename ParamGenerator::iterator& current3, + const ParamGenerator& g4, + const typename ParamGenerator::iterator& current4, + const ParamGenerator& g5, + const typename ParamGenerator::iterator& current5, + const ParamGenerator& g6, + const typename ParamGenerator::iterator& current6) + : base_(base), + begin1_(g1.begin()), end1_(g1.end()), current1_(current1), + begin2_(g2.begin()), end2_(g2.end()), current2_(current2), + begin3_(g3.begin()), end3_(g3.end()), current3_(current3), + begin4_(g4.begin()), end4_(g4.end()), current4_(current4), + begin5_(g5.begin()), end5_(g5.end()), current5_(current5), + begin6_(g6.begin()), end6_(g6.end()), current6_(current6) { + ComputeCurrentValue(); + } + virtual ~Iterator() {} + + virtual const ParamGeneratorInterface* BaseGenerator() const { + return base_; + } + // Advance should not be called on beyond-of-range iterators + // so no component iterators must be beyond end of range, either. + virtual void Advance() { + assert(!AtEnd()); + ++current6_; + if (current6_ == end6_) { + current6_ = begin6_; + ++current5_; + } + if (current5_ == end5_) { + current5_ = begin5_; + ++current4_; + } + if (current4_ == end4_) { + current4_ = begin4_; + ++current3_; + } + if (current3_ == end3_) { + current3_ = begin3_; + ++current2_; + } + if (current2_ == end2_) { + current2_ = begin2_; + ++current1_; + } + ComputeCurrentValue(); + } + virtual ParamIteratorInterface* Clone() const { + return new Iterator(*this); + } + virtual const ParamType* Current() const { return ¤t_value_; } + virtual bool Equals(const ParamIteratorInterface& other) const { + // Having the same base generator guarantees that the other + // iterator is of the same type and we can downcast. + GTEST_CHECK_(BaseGenerator() == other.BaseGenerator()) + << "The program attempted to compare iterators " + << "from different generators." << std::endl; + const Iterator* typed_other = + CheckedDowncastToActualType(&other); + // We must report iterators equal if they both point beyond their + // respective ranges. That can happen in a variety of fashions, + // so we have to consult AtEnd(). + return (AtEnd() && typed_other->AtEnd()) || + ( + current1_ == typed_other->current1_ && + current2_ == typed_other->current2_ && + current3_ == typed_other->current3_ && + current4_ == typed_other->current4_ && + current5_ == typed_other->current5_ && + current6_ == typed_other->current6_); + } + + private: + Iterator(const Iterator& other) + : base_(other.base_), + begin1_(other.begin1_), + end1_(other.end1_), + current1_(other.current1_), + begin2_(other.begin2_), + end2_(other.end2_), + current2_(other.current2_), + begin3_(other.begin3_), + end3_(other.end3_), + current3_(other.current3_), + begin4_(other.begin4_), + end4_(other.end4_), + current4_(other.current4_), + begin5_(other.begin5_), + end5_(other.end5_), + current5_(other.current5_), + begin6_(other.begin6_), + end6_(other.end6_), + current6_(other.current6_) { + ComputeCurrentValue(); + } + + void ComputeCurrentValue() { + if (!AtEnd()) + current_value_ = ParamType(*current1_, *current2_, *current3_, + *current4_, *current5_, *current6_); + } + bool AtEnd() const { + // We must report iterator past the end of the range when either of the + // component iterators has reached the end of its range. + return + current1_ == end1_ || + current2_ == end2_ || + current3_ == end3_ || + current4_ == end4_ || + current5_ == end5_ || + current6_ == end6_; + } + + // No implementation - assignment is unsupported. + void operator=(const Iterator& other); + + const ParamGeneratorInterface* const base_; + // begin[i]_ and end[i]_ define the i-th range that Iterator traverses. + // current[i]_ is the actual traversing iterator. + const typename ParamGenerator::iterator begin1_; + const typename ParamGenerator::iterator end1_; + typename ParamGenerator::iterator current1_; + const typename ParamGenerator::iterator begin2_; + const typename ParamGenerator::iterator end2_; + typename ParamGenerator::iterator current2_; + const typename ParamGenerator::iterator begin3_; + const typename ParamGenerator::iterator end3_; + typename ParamGenerator::iterator current3_; + const typename ParamGenerator::iterator begin4_; + const typename ParamGenerator::iterator end4_; + typename ParamGenerator::iterator current4_; + const typename ParamGenerator::iterator begin5_; + const typename ParamGenerator::iterator end5_; + typename ParamGenerator::iterator current5_; + const typename ParamGenerator::iterator begin6_; + const typename ParamGenerator::iterator end6_; + typename ParamGenerator::iterator current6_; + ParamType current_value_; + }; // class CartesianProductGenerator6::Iterator + + // No implementation - assignment is unsupported. + void operator=(const CartesianProductGenerator6& other); + + const ParamGenerator g1_; + const ParamGenerator g2_; + const ParamGenerator g3_; + const ParamGenerator g4_; + const ParamGenerator g5_; + const ParamGenerator g6_; +}; // class CartesianProductGenerator6 + + +template +class CartesianProductGenerator7 + : public ParamGeneratorInterface< ::std::tr1::tuple > { + public: + typedef ::std::tr1::tuple ParamType; + + CartesianProductGenerator7(const ParamGenerator& g1, + const ParamGenerator& g2, const ParamGenerator& g3, + const ParamGenerator& g4, const ParamGenerator& g5, + const ParamGenerator& g6, const ParamGenerator& g7) + : g1_(g1), g2_(g2), g3_(g3), g4_(g4), g5_(g5), g6_(g6), g7_(g7) {} + virtual ~CartesianProductGenerator7() {} + + virtual ParamIteratorInterface* Begin() const { + return new Iterator(this, g1_, g1_.begin(), g2_, g2_.begin(), g3_, + g3_.begin(), g4_, g4_.begin(), g5_, g5_.begin(), g6_, g6_.begin(), g7_, + g7_.begin()); + } + virtual ParamIteratorInterface* End() const { + return new Iterator(this, g1_, g1_.end(), g2_, g2_.end(), g3_, g3_.end(), + g4_, g4_.end(), g5_, g5_.end(), g6_, g6_.end(), g7_, g7_.end()); + } + + private: + class Iterator : public ParamIteratorInterface { + public: + Iterator(const ParamGeneratorInterface* base, + const ParamGenerator& g1, + const typename ParamGenerator::iterator& current1, + const ParamGenerator& g2, + const typename ParamGenerator::iterator& current2, + const ParamGenerator& g3, + const typename ParamGenerator::iterator& current3, + const ParamGenerator& g4, + const typename ParamGenerator::iterator& current4, + const ParamGenerator& g5, + const typename ParamGenerator::iterator& current5, + const ParamGenerator& g6, + const typename ParamGenerator::iterator& current6, + const ParamGenerator& g7, + const typename ParamGenerator::iterator& current7) + : base_(base), + begin1_(g1.begin()), end1_(g1.end()), current1_(current1), + begin2_(g2.begin()), end2_(g2.end()), current2_(current2), + begin3_(g3.begin()), end3_(g3.end()), current3_(current3), + begin4_(g4.begin()), end4_(g4.end()), current4_(current4), + begin5_(g5.begin()), end5_(g5.end()), current5_(current5), + begin6_(g6.begin()), end6_(g6.end()), current6_(current6), + begin7_(g7.begin()), end7_(g7.end()), current7_(current7) { + ComputeCurrentValue(); + } + virtual ~Iterator() {} + + virtual const ParamGeneratorInterface* BaseGenerator() const { + return base_; + } + // Advance should not be called on beyond-of-range iterators + // so no component iterators must be beyond end of range, either. + virtual void Advance() { + assert(!AtEnd()); + ++current7_; + if (current7_ == end7_) { + current7_ = begin7_; + ++current6_; + } + if (current6_ == end6_) { + current6_ = begin6_; + ++current5_; + } + if (current5_ == end5_) { + current5_ = begin5_; + ++current4_; + } + if (current4_ == end4_) { + current4_ = begin4_; + ++current3_; + } + if (current3_ == end3_) { + current3_ = begin3_; + ++current2_; + } + if (current2_ == end2_) { + current2_ = begin2_; + ++current1_; + } + ComputeCurrentValue(); + } + virtual ParamIteratorInterface* Clone() const { + return new Iterator(*this); + } + virtual const ParamType* Current() const { return ¤t_value_; } + virtual bool Equals(const ParamIteratorInterface& other) const { + // Having the same base generator guarantees that the other + // iterator is of the same type and we can downcast. + GTEST_CHECK_(BaseGenerator() == other.BaseGenerator()) + << "The program attempted to compare iterators " + << "from different generators." << std::endl; + const Iterator* typed_other = + CheckedDowncastToActualType(&other); + // We must report iterators equal if they both point beyond their + // respective ranges. That can happen in a variety of fashions, + // so we have to consult AtEnd(). + return (AtEnd() && typed_other->AtEnd()) || + ( + current1_ == typed_other->current1_ && + current2_ == typed_other->current2_ && + current3_ == typed_other->current3_ && + current4_ == typed_other->current4_ && + current5_ == typed_other->current5_ && + current6_ == typed_other->current6_ && + current7_ == typed_other->current7_); + } + + private: + Iterator(const Iterator& other) + : base_(other.base_), + begin1_(other.begin1_), + end1_(other.end1_), + current1_(other.current1_), + begin2_(other.begin2_), + end2_(other.end2_), + current2_(other.current2_), + begin3_(other.begin3_), + end3_(other.end3_), + current3_(other.current3_), + begin4_(other.begin4_), + end4_(other.end4_), + current4_(other.current4_), + begin5_(other.begin5_), + end5_(other.end5_), + current5_(other.current5_), + begin6_(other.begin6_), + end6_(other.end6_), + current6_(other.current6_), + begin7_(other.begin7_), + end7_(other.end7_), + current7_(other.current7_) { + ComputeCurrentValue(); + } + + void ComputeCurrentValue() { + if (!AtEnd()) + current_value_ = ParamType(*current1_, *current2_, *current3_, + *current4_, *current5_, *current6_, *current7_); + } + bool AtEnd() const { + // We must report iterator past the end of the range when either of the + // component iterators has reached the end of its range. + return + current1_ == end1_ || + current2_ == end2_ || + current3_ == end3_ || + current4_ == end4_ || + current5_ == end5_ || + current6_ == end6_ || + current7_ == end7_; + } + + // No implementation - assignment is unsupported. + void operator=(const Iterator& other); + + const ParamGeneratorInterface* const base_; + // begin[i]_ and end[i]_ define the i-th range that Iterator traverses. + // current[i]_ is the actual traversing iterator. + const typename ParamGenerator::iterator begin1_; + const typename ParamGenerator::iterator end1_; + typename ParamGenerator::iterator current1_; + const typename ParamGenerator::iterator begin2_; + const typename ParamGenerator::iterator end2_; + typename ParamGenerator::iterator current2_; + const typename ParamGenerator::iterator begin3_; + const typename ParamGenerator::iterator end3_; + typename ParamGenerator::iterator current3_; + const typename ParamGenerator::iterator begin4_; + const typename ParamGenerator::iterator end4_; + typename ParamGenerator::iterator current4_; + const typename ParamGenerator::iterator begin5_; + const typename ParamGenerator::iterator end5_; + typename ParamGenerator::iterator current5_; + const typename ParamGenerator::iterator begin6_; + const typename ParamGenerator::iterator end6_; + typename ParamGenerator::iterator current6_; + const typename ParamGenerator::iterator begin7_; + const typename ParamGenerator::iterator end7_; + typename ParamGenerator::iterator current7_; + ParamType current_value_; + }; // class CartesianProductGenerator7::Iterator + + // No implementation - assignment is unsupported. + void operator=(const CartesianProductGenerator7& other); + + const ParamGenerator g1_; + const ParamGenerator g2_; + const ParamGenerator g3_; + const ParamGenerator g4_; + const ParamGenerator g5_; + const ParamGenerator g6_; + const ParamGenerator g7_; +}; // class CartesianProductGenerator7 + + +template +class CartesianProductGenerator8 + : public ParamGeneratorInterface< ::std::tr1::tuple > { + public: + typedef ::std::tr1::tuple ParamType; + + CartesianProductGenerator8(const ParamGenerator& g1, + const ParamGenerator& g2, const ParamGenerator& g3, + const ParamGenerator& g4, const ParamGenerator& g5, + const ParamGenerator& g6, const ParamGenerator& g7, + const ParamGenerator& g8) + : g1_(g1), g2_(g2), g3_(g3), g4_(g4), g5_(g5), g6_(g6), g7_(g7), + g8_(g8) {} + virtual ~CartesianProductGenerator8() {} + + virtual ParamIteratorInterface* Begin() const { + return new Iterator(this, g1_, g1_.begin(), g2_, g2_.begin(), g3_, + g3_.begin(), g4_, g4_.begin(), g5_, g5_.begin(), g6_, g6_.begin(), g7_, + g7_.begin(), g8_, g8_.begin()); + } + virtual ParamIteratorInterface* End() const { + return new Iterator(this, g1_, g1_.end(), g2_, g2_.end(), g3_, g3_.end(), + g4_, g4_.end(), g5_, g5_.end(), g6_, g6_.end(), g7_, g7_.end(), g8_, + g8_.end()); + } + + private: + class Iterator : public ParamIteratorInterface { + public: + Iterator(const ParamGeneratorInterface* base, + const ParamGenerator& g1, + const typename ParamGenerator::iterator& current1, + const ParamGenerator& g2, + const typename ParamGenerator::iterator& current2, + const ParamGenerator& g3, + const typename ParamGenerator::iterator& current3, + const ParamGenerator& g4, + const typename ParamGenerator::iterator& current4, + const ParamGenerator& g5, + const typename ParamGenerator::iterator& current5, + const ParamGenerator& g6, + const typename ParamGenerator::iterator& current6, + const ParamGenerator& g7, + const typename ParamGenerator::iterator& current7, + const ParamGenerator& g8, + const typename ParamGenerator::iterator& current8) + : base_(base), + begin1_(g1.begin()), end1_(g1.end()), current1_(current1), + begin2_(g2.begin()), end2_(g2.end()), current2_(current2), + begin3_(g3.begin()), end3_(g3.end()), current3_(current3), + begin4_(g4.begin()), end4_(g4.end()), current4_(current4), + begin5_(g5.begin()), end5_(g5.end()), current5_(current5), + begin6_(g6.begin()), end6_(g6.end()), current6_(current6), + begin7_(g7.begin()), end7_(g7.end()), current7_(current7), + begin8_(g8.begin()), end8_(g8.end()), current8_(current8) { + ComputeCurrentValue(); + } + virtual ~Iterator() {} + + virtual const ParamGeneratorInterface* BaseGenerator() const { + return base_; + } + // Advance should not be called on beyond-of-range iterators + // so no component iterators must be beyond end of range, either. + virtual void Advance() { + assert(!AtEnd()); + ++current8_; + if (current8_ == end8_) { + current8_ = begin8_; + ++current7_; + } + if (current7_ == end7_) { + current7_ = begin7_; + ++current6_; + } + if (current6_ == end6_) { + current6_ = begin6_; + ++current5_; + } + if (current5_ == end5_) { + current5_ = begin5_; + ++current4_; + } + if (current4_ == end4_) { + current4_ = begin4_; + ++current3_; + } + if (current3_ == end3_) { + current3_ = begin3_; + ++current2_; + } + if (current2_ == end2_) { + current2_ = begin2_; + ++current1_; + } + ComputeCurrentValue(); + } + virtual ParamIteratorInterface* Clone() const { + return new Iterator(*this); + } + virtual const ParamType* Current() const { return ¤t_value_; } + virtual bool Equals(const ParamIteratorInterface& other) const { + // Having the same base generator guarantees that the other + // iterator is of the same type and we can downcast. + GTEST_CHECK_(BaseGenerator() == other.BaseGenerator()) + << "The program attempted to compare iterators " + << "from different generators." << std::endl; + const Iterator* typed_other = + CheckedDowncastToActualType(&other); + // We must report iterators equal if they both point beyond their + // respective ranges. That can happen in a variety of fashions, + // so we have to consult AtEnd(). + return (AtEnd() && typed_other->AtEnd()) || + ( + current1_ == typed_other->current1_ && + current2_ == typed_other->current2_ && + current3_ == typed_other->current3_ && + current4_ == typed_other->current4_ && + current5_ == typed_other->current5_ && + current6_ == typed_other->current6_ && + current7_ == typed_other->current7_ && + current8_ == typed_other->current8_); + } + + private: + Iterator(const Iterator& other) + : base_(other.base_), + begin1_(other.begin1_), + end1_(other.end1_), + current1_(other.current1_), + begin2_(other.begin2_), + end2_(other.end2_), + current2_(other.current2_), + begin3_(other.begin3_), + end3_(other.end3_), + current3_(other.current3_), + begin4_(other.begin4_), + end4_(other.end4_), + current4_(other.current4_), + begin5_(other.begin5_), + end5_(other.end5_), + current5_(other.current5_), + begin6_(other.begin6_), + end6_(other.end6_), + current6_(other.current6_), + begin7_(other.begin7_), + end7_(other.end7_), + current7_(other.current7_), + begin8_(other.begin8_), + end8_(other.end8_), + current8_(other.current8_) { + ComputeCurrentValue(); + } + + void ComputeCurrentValue() { + if (!AtEnd()) + current_value_ = ParamType(*current1_, *current2_, *current3_, + *current4_, *current5_, *current6_, *current7_, *current8_); + } + bool AtEnd() const { + // We must report iterator past the end of the range when either of the + // component iterators has reached the end of its range. + return + current1_ == end1_ || + current2_ == end2_ || + current3_ == end3_ || + current4_ == end4_ || + current5_ == end5_ || + current6_ == end6_ || + current7_ == end7_ || + current8_ == end8_; + } + + // No implementation - assignment is unsupported. + void operator=(const Iterator& other); + + const ParamGeneratorInterface* const base_; + // begin[i]_ and end[i]_ define the i-th range that Iterator traverses. + // current[i]_ is the actual traversing iterator. + const typename ParamGenerator::iterator begin1_; + const typename ParamGenerator::iterator end1_; + typename ParamGenerator::iterator current1_; + const typename ParamGenerator::iterator begin2_; + const typename ParamGenerator::iterator end2_; + typename ParamGenerator::iterator current2_; + const typename ParamGenerator::iterator begin3_; + const typename ParamGenerator::iterator end3_; + typename ParamGenerator::iterator current3_; + const typename ParamGenerator::iterator begin4_; + const typename ParamGenerator::iterator end4_; + typename ParamGenerator::iterator current4_; + const typename ParamGenerator::iterator begin5_; + const typename ParamGenerator::iterator end5_; + typename ParamGenerator::iterator current5_; + const typename ParamGenerator::iterator begin6_; + const typename ParamGenerator::iterator end6_; + typename ParamGenerator::iterator current6_; + const typename ParamGenerator::iterator begin7_; + const typename ParamGenerator::iterator end7_; + typename ParamGenerator::iterator current7_; + const typename ParamGenerator::iterator begin8_; + const typename ParamGenerator::iterator end8_; + typename ParamGenerator::iterator current8_; + ParamType current_value_; + }; // class CartesianProductGenerator8::Iterator + + // No implementation - assignment is unsupported. + void operator=(const CartesianProductGenerator8& other); + + const ParamGenerator g1_; + const ParamGenerator g2_; + const ParamGenerator g3_; + const ParamGenerator g4_; + const ParamGenerator g5_; + const ParamGenerator g6_; + const ParamGenerator g7_; + const ParamGenerator g8_; +}; // class CartesianProductGenerator8 + + +template +class CartesianProductGenerator9 + : public ParamGeneratorInterface< ::std::tr1::tuple > { + public: + typedef ::std::tr1::tuple ParamType; + + CartesianProductGenerator9(const ParamGenerator& g1, + const ParamGenerator& g2, const ParamGenerator& g3, + const ParamGenerator& g4, const ParamGenerator& g5, + const ParamGenerator& g6, const ParamGenerator& g7, + const ParamGenerator& g8, const ParamGenerator& g9) + : g1_(g1), g2_(g2), g3_(g3), g4_(g4), g5_(g5), g6_(g6), g7_(g7), g8_(g8), + g9_(g9) {} + virtual ~CartesianProductGenerator9() {} + + virtual ParamIteratorInterface* Begin() const { + return new Iterator(this, g1_, g1_.begin(), g2_, g2_.begin(), g3_, + g3_.begin(), g4_, g4_.begin(), g5_, g5_.begin(), g6_, g6_.begin(), g7_, + g7_.begin(), g8_, g8_.begin(), g9_, g9_.begin()); + } + virtual ParamIteratorInterface* End() const { + return new Iterator(this, g1_, g1_.end(), g2_, g2_.end(), g3_, g3_.end(), + g4_, g4_.end(), g5_, g5_.end(), g6_, g6_.end(), g7_, g7_.end(), g8_, + g8_.end(), g9_, g9_.end()); + } + + private: + class Iterator : public ParamIteratorInterface { + public: + Iterator(const ParamGeneratorInterface* base, + const ParamGenerator& g1, + const typename ParamGenerator::iterator& current1, + const ParamGenerator& g2, + const typename ParamGenerator::iterator& current2, + const ParamGenerator& g3, + const typename ParamGenerator::iterator& current3, + const ParamGenerator& g4, + const typename ParamGenerator::iterator& current4, + const ParamGenerator& g5, + const typename ParamGenerator::iterator& current5, + const ParamGenerator& g6, + const typename ParamGenerator::iterator& current6, + const ParamGenerator& g7, + const typename ParamGenerator::iterator& current7, + const ParamGenerator& g8, + const typename ParamGenerator::iterator& current8, + const ParamGenerator& g9, + const typename ParamGenerator::iterator& current9) + : base_(base), + begin1_(g1.begin()), end1_(g1.end()), current1_(current1), + begin2_(g2.begin()), end2_(g2.end()), current2_(current2), + begin3_(g3.begin()), end3_(g3.end()), current3_(current3), + begin4_(g4.begin()), end4_(g4.end()), current4_(current4), + begin5_(g5.begin()), end5_(g5.end()), current5_(current5), + begin6_(g6.begin()), end6_(g6.end()), current6_(current6), + begin7_(g7.begin()), end7_(g7.end()), current7_(current7), + begin8_(g8.begin()), end8_(g8.end()), current8_(current8), + begin9_(g9.begin()), end9_(g9.end()), current9_(current9) { + ComputeCurrentValue(); + } + virtual ~Iterator() {} + + virtual const ParamGeneratorInterface* BaseGenerator() const { + return base_; + } + // Advance should not be called on beyond-of-range iterators + // so no component iterators must be beyond end of range, either. + virtual void Advance() { + assert(!AtEnd()); + ++current9_; + if (current9_ == end9_) { + current9_ = begin9_; + ++current8_; + } + if (current8_ == end8_) { + current8_ = begin8_; + ++current7_; + } + if (current7_ == end7_) { + current7_ = begin7_; + ++current6_; + } + if (current6_ == end6_) { + current6_ = begin6_; + ++current5_; + } + if (current5_ == end5_) { + current5_ = begin5_; + ++current4_; + } + if (current4_ == end4_) { + current4_ = begin4_; + ++current3_; + } + if (current3_ == end3_) { + current3_ = begin3_; + ++current2_; + } + if (current2_ == end2_) { + current2_ = begin2_; + ++current1_; + } + ComputeCurrentValue(); + } + virtual ParamIteratorInterface* Clone() const { + return new Iterator(*this); + } + virtual const ParamType* Current() const { return ¤t_value_; } + virtual bool Equals(const ParamIteratorInterface& other) const { + // Having the same base generator guarantees that the other + // iterator is of the same type and we can downcast. + GTEST_CHECK_(BaseGenerator() == other.BaseGenerator()) + << "The program attempted to compare iterators " + << "from different generators." << std::endl; + const Iterator* typed_other = + CheckedDowncastToActualType(&other); + // We must report iterators equal if they both point beyond their + // respective ranges. That can happen in a variety of fashions, + // so we have to consult AtEnd(). + return (AtEnd() && typed_other->AtEnd()) || + ( + current1_ == typed_other->current1_ && + current2_ == typed_other->current2_ && + current3_ == typed_other->current3_ && + current4_ == typed_other->current4_ && + current5_ == typed_other->current5_ && + current6_ == typed_other->current6_ && + current7_ == typed_other->current7_ && + current8_ == typed_other->current8_ && + current9_ == typed_other->current9_); + } + + private: + Iterator(const Iterator& other) + : base_(other.base_), + begin1_(other.begin1_), + end1_(other.end1_), + current1_(other.current1_), + begin2_(other.begin2_), + end2_(other.end2_), + current2_(other.current2_), + begin3_(other.begin3_), + end3_(other.end3_), + current3_(other.current3_), + begin4_(other.begin4_), + end4_(other.end4_), + current4_(other.current4_), + begin5_(other.begin5_), + end5_(other.end5_), + current5_(other.current5_), + begin6_(other.begin6_), + end6_(other.end6_), + current6_(other.current6_), + begin7_(other.begin7_), + end7_(other.end7_), + current7_(other.current7_), + begin8_(other.begin8_), + end8_(other.end8_), + current8_(other.current8_), + begin9_(other.begin9_), + end9_(other.end9_), + current9_(other.current9_) { + ComputeCurrentValue(); + } + + void ComputeCurrentValue() { + if (!AtEnd()) + current_value_ = ParamType(*current1_, *current2_, *current3_, + *current4_, *current5_, *current6_, *current7_, *current8_, + *current9_); + } + bool AtEnd() const { + // We must report iterator past the end of the range when either of the + // component iterators has reached the end of its range. + return + current1_ == end1_ || + current2_ == end2_ || + current3_ == end3_ || + current4_ == end4_ || + current5_ == end5_ || + current6_ == end6_ || + current7_ == end7_ || + current8_ == end8_ || + current9_ == end9_; + } + + // No implementation - assignment is unsupported. + void operator=(const Iterator& other); + + const ParamGeneratorInterface* const base_; + // begin[i]_ and end[i]_ define the i-th range that Iterator traverses. + // current[i]_ is the actual traversing iterator. + const typename ParamGenerator::iterator begin1_; + const typename ParamGenerator::iterator end1_; + typename ParamGenerator::iterator current1_; + const typename ParamGenerator::iterator begin2_; + const typename ParamGenerator::iterator end2_; + typename ParamGenerator::iterator current2_; + const typename ParamGenerator::iterator begin3_; + const typename ParamGenerator::iterator end3_; + typename ParamGenerator::iterator current3_; + const typename ParamGenerator::iterator begin4_; + const typename ParamGenerator::iterator end4_; + typename ParamGenerator::iterator current4_; + const typename ParamGenerator::iterator begin5_; + const typename ParamGenerator::iterator end5_; + typename ParamGenerator::iterator current5_; + const typename ParamGenerator::iterator begin6_; + const typename ParamGenerator::iterator end6_; + typename ParamGenerator::iterator current6_; + const typename ParamGenerator::iterator begin7_; + const typename ParamGenerator::iterator end7_; + typename ParamGenerator::iterator current7_; + const typename ParamGenerator::iterator begin8_; + const typename ParamGenerator::iterator end8_; + typename ParamGenerator::iterator current8_; + const typename ParamGenerator::iterator begin9_; + const typename ParamGenerator::iterator end9_; + typename ParamGenerator::iterator current9_; + ParamType current_value_; + }; // class CartesianProductGenerator9::Iterator + + // No implementation - assignment is unsupported. + void operator=(const CartesianProductGenerator9& other); + + const ParamGenerator g1_; + const ParamGenerator g2_; + const ParamGenerator g3_; + const ParamGenerator g4_; + const ParamGenerator g5_; + const ParamGenerator g6_; + const ParamGenerator g7_; + const ParamGenerator g8_; + const ParamGenerator g9_; +}; // class CartesianProductGenerator9 + + +template +class CartesianProductGenerator10 + : public ParamGeneratorInterface< ::std::tr1::tuple > { + public: + typedef ::std::tr1::tuple ParamType; + + CartesianProductGenerator10(const ParamGenerator& g1, + const ParamGenerator& g2, const ParamGenerator& g3, + const ParamGenerator& g4, const ParamGenerator& g5, + const ParamGenerator& g6, const ParamGenerator& g7, + const ParamGenerator& g8, const ParamGenerator& g9, + const ParamGenerator& g10) + : g1_(g1), g2_(g2), g3_(g3), g4_(g4), g5_(g5), g6_(g6), g7_(g7), g8_(g8), + g9_(g9), g10_(g10) {} + virtual ~CartesianProductGenerator10() {} + + virtual ParamIteratorInterface* Begin() const { + return new Iterator(this, g1_, g1_.begin(), g2_, g2_.begin(), g3_, + g3_.begin(), g4_, g4_.begin(), g5_, g5_.begin(), g6_, g6_.begin(), g7_, + g7_.begin(), g8_, g8_.begin(), g9_, g9_.begin(), g10_, g10_.begin()); + } + virtual ParamIteratorInterface* End() const { + return new Iterator(this, g1_, g1_.end(), g2_, g2_.end(), g3_, g3_.end(), + g4_, g4_.end(), g5_, g5_.end(), g6_, g6_.end(), g7_, g7_.end(), g8_, + g8_.end(), g9_, g9_.end(), g10_, g10_.end()); + } + + private: + class Iterator : public ParamIteratorInterface { + public: + Iterator(const ParamGeneratorInterface* base, + const ParamGenerator& g1, + const typename ParamGenerator::iterator& current1, + const ParamGenerator& g2, + const typename ParamGenerator::iterator& current2, + const ParamGenerator& g3, + const typename ParamGenerator::iterator& current3, + const ParamGenerator& g4, + const typename ParamGenerator::iterator& current4, + const ParamGenerator& g5, + const typename ParamGenerator::iterator& current5, + const ParamGenerator& g6, + const typename ParamGenerator::iterator& current6, + const ParamGenerator& g7, + const typename ParamGenerator::iterator& current7, + const ParamGenerator& g8, + const typename ParamGenerator::iterator& current8, + const ParamGenerator& g9, + const typename ParamGenerator::iterator& current9, + const ParamGenerator& g10, + const typename ParamGenerator::iterator& current10) + : base_(base), + begin1_(g1.begin()), end1_(g1.end()), current1_(current1), + begin2_(g2.begin()), end2_(g2.end()), current2_(current2), + begin3_(g3.begin()), end3_(g3.end()), current3_(current3), + begin4_(g4.begin()), end4_(g4.end()), current4_(current4), + begin5_(g5.begin()), end5_(g5.end()), current5_(current5), + begin6_(g6.begin()), end6_(g6.end()), current6_(current6), + begin7_(g7.begin()), end7_(g7.end()), current7_(current7), + begin8_(g8.begin()), end8_(g8.end()), current8_(current8), + begin9_(g9.begin()), end9_(g9.end()), current9_(current9), + begin10_(g10.begin()), end10_(g10.end()), current10_(current10) { + ComputeCurrentValue(); + } + virtual ~Iterator() {} + + virtual const ParamGeneratorInterface* BaseGenerator() const { + return base_; + } + // Advance should not be called on beyond-of-range iterators + // so no component iterators must be beyond end of range, either. + virtual void Advance() { + assert(!AtEnd()); + ++current10_; + if (current10_ == end10_) { + current10_ = begin10_; + ++current9_; + } + if (current9_ == end9_) { + current9_ = begin9_; + ++current8_; + } + if (current8_ == end8_) { + current8_ = begin8_; + ++current7_; + } + if (current7_ == end7_) { + current7_ = begin7_; + ++current6_; + } + if (current6_ == end6_) { + current6_ = begin6_; + ++current5_; + } + if (current5_ == end5_) { + current5_ = begin5_; + ++current4_; + } + if (current4_ == end4_) { + current4_ = begin4_; + ++current3_; + } + if (current3_ == end3_) { + current3_ = begin3_; + ++current2_; + } + if (current2_ == end2_) { + current2_ = begin2_; + ++current1_; + } + ComputeCurrentValue(); + } + virtual ParamIteratorInterface* Clone() const { + return new Iterator(*this); + } + virtual const ParamType* Current() const { return ¤t_value_; } + virtual bool Equals(const ParamIteratorInterface& other) const { + // Having the same base generator guarantees that the other + // iterator is of the same type and we can downcast. + GTEST_CHECK_(BaseGenerator() == other.BaseGenerator()) + << "The program attempted to compare iterators " + << "from different generators." << std::endl; + const Iterator* typed_other = + CheckedDowncastToActualType(&other); + // We must report iterators equal if they both point beyond their + // respective ranges. That can happen in a variety of fashions, + // so we have to consult AtEnd(). + return (AtEnd() && typed_other->AtEnd()) || + ( + current1_ == typed_other->current1_ && + current2_ == typed_other->current2_ && + current3_ == typed_other->current3_ && + current4_ == typed_other->current4_ && + current5_ == typed_other->current5_ && + current6_ == typed_other->current6_ && + current7_ == typed_other->current7_ && + current8_ == typed_other->current8_ && + current9_ == typed_other->current9_ && + current10_ == typed_other->current10_); + } + + private: + Iterator(const Iterator& other) + : base_(other.base_), + begin1_(other.begin1_), + end1_(other.end1_), + current1_(other.current1_), + begin2_(other.begin2_), + end2_(other.end2_), + current2_(other.current2_), + begin3_(other.begin3_), + end3_(other.end3_), + current3_(other.current3_), + begin4_(other.begin4_), + end4_(other.end4_), + current4_(other.current4_), + begin5_(other.begin5_), + end5_(other.end5_), + current5_(other.current5_), + begin6_(other.begin6_), + end6_(other.end6_), + current6_(other.current6_), + begin7_(other.begin7_), + end7_(other.end7_), + current7_(other.current7_), + begin8_(other.begin8_), + end8_(other.end8_), + current8_(other.current8_), + begin9_(other.begin9_), + end9_(other.end9_), + current9_(other.current9_), + begin10_(other.begin10_), + end10_(other.end10_), + current10_(other.current10_) { + ComputeCurrentValue(); + } + + void ComputeCurrentValue() { + if (!AtEnd()) + current_value_ = ParamType(*current1_, *current2_, *current3_, + *current4_, *current5_, *current6_, *current7_, *current8_, + *current9_, *current10_); + } + bool AtEnd() const { + // We must report iterator past the end of the range when either of the + // component iterators has reached the end of its range. + return + current1_ == end1_ || + current2_ == end2_ || + current3_ == end3_ || + current4_ == end4_ || + current5_ == end5_ || + current6_ == end6_ || + current7_ == end7_ || + current8_ == end8_ || + current9_ == end9_ || + current10_ == end10_; + } + + // No implementation - assignment is unsupported. + void operator=(const Iterator& other); + + const ParamGeneratorInterface* const base_; + // begin[i]_ and end[i]_ define the i-th range that Iterator traverses. + // current[i]_ is the actual traversing iterator. + const typename ParamGenerator::iterator begin1_; + const typename ParamGenerator::iterator end1_; + typename ParamGenerator::iterator current1_; + const typename ParamGenerator::iterator begin2_; + const typename ParamGenerator::iterator end2_; + typename ParamGenerator::iterator current2_; + const typename ParamGenerator::iterator begin3_; + const typename ParamGenerator::iterator end3_; + typename ParamGenerator::iterator current3_; + const typename ParamGenerator::iterator begin4_; + const typename ParamGenerator::iterator end4_; + typename ParamGenerator::iterator current4_; + const typename ParamGenerator::iterator begin5_; + const typename ParamGenerator::iterator end5_; + typename ParamGenerator::iterator current5_; + const typename ParamGenerator::iterator begin6_; + const typename ParamGenerator::iterator end6_; + typename ParamGenerator::iterator current6_; + const typename ParamGenerator::iterator begin7_; + const typename ParamGenerator::iterator end7_; + typename ParamGenerator::iterator current7_; + const typename ParamGenerator::iterator begin8_; + const typename ParamGenerator::iterator end8_; + typename ParamGenerator::iterator current8_; + const typename ParamGenerator::iterator begin9_; + const typename ParamGenerator::iterator end9_; + typename ParamGenerator::iterator current9_; + const typename ParamGenerator::iterator begin10_; + const typename ParamGenerator::iterator end10_; + typename ParamGenerator::iterator current10_; + ParamType current_value_; + }; // class CartesianProductGenerator10::Iterator + + // No implementation - assignment is unsupported. + void operator=(const CartesianProductGenerator10& other); + + const ParamGenerator g1_; + const ParamGenerator g2_; + const ParamGenerator g3_; + const ParamGenerator g4_; + const ParamGenerator g5_; + const ParamGenerator g6_; + const ParamGenerator g7_; + const ParamGenerator g8_; + const ParamGenerator g9_; + const ParamGenerator g10_; +}; // class CartesianProductGenerator10 + + +// INTERNAL IMPLEMENTATION - DO NOT USE IN USER CODE. +// +// Helper classes providing Combine() with polymorphic features. They allow +// casting CartesianProductGeneratorN to ParamGenerator if T is +// convertible to U. +// +template +class CartesianProductHolder2 { + public: +CartesianProductHolder2(const Generator1& g1, const Generator2& g2) + : g1_(g1), g2_(g2) {} + template + operator ParamGenerator< ::std::tr1::tuple >() const { + return ParamGenerator< ::std::tr1::tuple >( + new CartesianProductGenerator2( + static_cast >(g1_), + static_cast >(g2_))); + } + + private: + // No implementation - assignment is unsupported. + void operator=(const CartesianProductHolder2& other); + + const Generator1 g1_; + const Generator2 g2_; +}; // class CartesianProductHolder2 + +template +class CartesianProductHolder3 { + public: +CartesianProductHolder3(const Generator1& g1, const Generator2& g2, + const Generator3& g3) + : g1_(g1), g2_(g2), g3_(g3) {} + template + operator ParamGenerator< ::std::tr1::tuple >() const { + return ParamGenerator< ::std::tr1::tuple >( + new CartesianProductGenerator3( + static_cast >(g1_), + static_cast >(g2_), + static_cast >(g3_))); + } + + private: + // No implementation - assignment is unsupported. + void operator=(const CartesianProductHolder3& other); + + const Generator1 g1_; + const Generator2 g2_; + const Generator3 g3_; +}; // class CartesianProductHolder3 + +template +class CartesianProductHolder4 { + public: +CartesianProductHolder4(const Generator1& g1, const Generator2& g2, + const Generator3& g3, const Generator4& g4) + : g1_(g1), g2_(g2), g3_(g3), g4_(g4) {} + template + operator ParamGenerator< ::std::tr1::tuple >() const { + return ParamGenerator< ::std::tr1::tuple >( + new CartesianProductGenerator4( + static_cast >(g1_), + static_cast >(g2_), + static_cast >(g3_), + static_cast >(g4_))); + } + + private: + // No implementation - assignment is unsupported. + void operator=(const CartesianProductHolder4& other); + + const Generator1 g1_; + const Generator2 g2_; + const Generator3 g3_; + const Generator4 g4_; +}; // class CartesianProductHolder4 + +template +class CartesianProductHolder5 { + public: +CartesianProductHolder5(const Generator1& g1, const Generator2& g2, + const Generator3& g3, const Generator4& g4, const Generator5& g5) + : g1_(g1), g2_(g2), g3_(g3), g4_(g4), g5_(g5) {} + template + operator ParamGenerator< ::std::tr1::tuple >() const { + return ParamGenerator< ::std::tr1::tuple >( + new CartesianProductGenerator5( + static_cast >(g1_), + static_cast >(g2_), + static_cast >(g3_), + static_cast >(g4_), + static_cast >(g5_))); + } + + private: + // No implementation - assignment is unsupported. + void operator=(const CartesianProductHolder5& other); + + const Generator1 g1_; + const Generator2 g2_; + const Generator3 g3_; + const Generator4 g4_; + const Generator5 g5_; +}; // class CartesianProductHolder5 + +template +class CartesianProductHolder6 { + public: +CartesianProductHolder6(const Generator1& g1, const Generator2& g2, + const Generator3& g3, const Generator4& g4, const Generator5& g5, + const Generator6& g6) + : g1_(g1), g2_(g2), g3_(g3), g4_(g4), g5_(g5), g6_(g6) {} + template + operator ParamGenerator< ::std::tr1::tuple >() const { + return ParamGenerator< ::std::tr1::tuple >( + new CartesianProductGenerator6( + static_cast >(g1_), + static_cast >(g2_), + static_cast >(g3_), + static_cast >(g4_), + static_cast >(g5_), + static_cast >(g6_))); + } + + private: + // No implementation - assignment is unsupported. + void operator=(const CartesianProductHolder6& other); + + const Generator1 g1_; + const Generator2 g2_; + const Generator3 g3_; + const Generator4 g4_; + const Generator5 g5_; + const Generator6 g6_; +}; // class CartesianProductHolder6 + +template +class CartesianProductHolder7 { + public: +CartesianProductHolder7(const Generator1& g1, const Generator2& g2, + const Generator3& g3, const Generator4& g4, const Generator5& g5, + const Generator6& g6, const Generator7& g7) + : g1_(g1), g2_(g2), g3_(g3), g4_(g4), g5_(g5), g6_(g6), g7_(g7) {} + template + operator ParamGenerator< ::std::tr1::tuple >() const { + return ParamGenerator< ::std::tr1::tuple >( + new CartesianProductGenerator7( + static_cast >(g1_), + static_cast >(g2_), + static_cast >(g3_), + static_cast >(g4_), + static_cast >(g5_), + static_cast >(g6_), + static_cast >(g7_))); + } + + private: + // No implementation - assignment is unsupported. + void operator=(const CartesianProductHolder7& other); + + const Generator1 g1_; + const Generator2 g2_; + const Generator3 g3_; + const Generator4 g4_; + const Generator5 g5_; + const Generator6 g6_; + const Generator7 g7_; +}; // class CartesianProductHolder7 + +template +class CartesianProductHolder8 { + public: +CartesianProductHolder8(const Generator1& g1, const Generator2& g2, + const Generator3& g3, const Generator4& g4, const Generator5& g5, + const Generator6& g6, const Generator7& g7, const Generator8& g8) + : g1_(g1), g2_(g2), g3_(g3), g4_(g4), g5_(g5), g6_(g6), g7_(g7), + g8_(g8) {} + template + operator ParamGenerator< ::std::tr1::tuple >() const { + return ParamGenerator< ::std::tr1::tuple >( + new CartesianProductGenerator8( + static_cast >(g1_), + static_cast >(g2_), + static_cast >(g3_), + static_cast >(g4_), + static_cast >(g5_), + static_cast >(g6_), + static_cast >(g7_), + static_cast >(g8_))); + } + + private: + // No implementation - assignment is unsupported. + void operator=(const CartesianProductHolder8& other); + + const Generator1 g1_; + const Generator2 g2_; + const Generator3 g3_; + const Generator4 g4_; + const Generator5 g5_; + const Generator6 g6_; + const Generator7 g7_; + const Generator8 g8_; +}; // class CartesianProductHolder8 + +template +class CartesianProductHolder9 { + public: +CartesianProductHolder9(const Generator1& g1, const Generator2& g2, + const Generator3& g3, const Generator4& g4, const Generator5& g5, + const Generator6& g6, const Generator7& g7, const Generator8& g8, + const Generator9& g9) + : g1_(g1), g2_(g2), g3_(g3), g4_(g4), g5_(g5), g6_(g6), g7_(g7), g8_(g8), + g9_(g9) {} + template + operator ParamGenerator< ::std::tr1::tuple >() const { + return ParamGenerator< ::std::tr1::tuple >( + new CartesianProductGenerator9( + static_cast >(g1_), + static_cast >(g2_), + static_cast >(g3_), + static_cast >(g4_), + static_cast >(g5_), + static_cast >(g6_), + static_cast >(g7_), + static_cast >(g8_), + static_cast >(g9_))); + } + + private: + // No implementation - assignment is unsupported. + void operator=(const CartesianProductHolder9& other); + + const Generator1 g1_; + const Generator2 g2_; + const Generator3 g3_; + const Generator4 g4_; + const Generator5 g5_; + const Generator6 g6_; + const Generator7 g7_; + const Generator8 g8_; + const Generator9 g9_; +}; // class CartesianProductHolder9 + +template +class CartesianProductHolder10 { + public: +CartesianProductHolder10(const Generator1& g1, const Generator2& g2, + const Generator3& g3, const Generator4& g4, const Generator5& g5, + const Generator6& g6, const Generator7& g7, const Generator8& g8, + const Generator9& g9, const Generator10& g10) + : g1_(g1), g2_(g2), g3_(g3), g4_(g4), g5_(g5), g6_(g6), g7_(g7), g8_(g8), + g9_(g9), g10_(g10) {} + template + operator ParamGenerator< ::std::tr1::tuple >() const { + return ParamGenerator< ::std::tr1::tuple >( + new CartesianProductGenerator10( + static_cast >(g1_), + static_cast >(g2_), + static_cast >(g3_), + static_cast >(g4_), + static_cast >(g5_), + static_cast >(g6_), + static_cast >(g7_), + static_cast >(g8_), + static_cast >(g9_), + static_cast >(g10_))); + } + + private: + // No implementation - assignment is unsupported. + void operator=(const CartesianProductHolder10& other); + + const Generator1 g1_; + const Generator2 g2_; + const Generator3 g3_; + const Generator4 g4_; + const Generator5 g5_; + const Generator6 g6_; + const Generator7 g7_; + const Generator8 g8_; + const Generator9 g9_; + const Generator10 g10_; +}; // class CartesianProductHolder10 + +# endif // GTEST_HAS_COMBINE + +} // namespace internal +} // namespace testing + +#endif // GTEST_HAS_PARAM_TEST + +#endif // GTEST_INCLUDE_GTEST_INTERNAL_GTEST_PARAM_UTIL_GENERATED_H_ + +#if GTEST_HAS_PARAM_TEST + +namespace testing { + +// Functions producing parameter generators. +// +// Google Test uses these generators to produce parameters for value- +// parameterized tests. When a parameterized test case is instantiated +// with a particular generator, Google Test creates and runs tests +// for each element in the sequence produced by the generator. +// +// In the following sample, tests from test case FooTest are instantiated +// each three times with parameter values 3, 5, and 8: +// +// class FooTest : public TestWithParam { ... }; +// +// TEST_P(FooTest, TestThis) { +// } +// TEST_P(FooTest, TestThat) { +// } +// INSTANTIATE_TEST_CASE_P(TestSequence, FooTest, Values(3, 5, 8)); +// + +// Range() returns generators providing sequences of values in a range. +// +// Synopsis: +// Range(start, end) +// - returns a generator producing a sequence of values {start, start+1, +// start+2, ..., }. +// Range(start, end, step) +// - returns a generator producing a sequence of values {start, start+step, +// start+step+step, ..., }. +// Notes: +// * The generated sequences never include end. For example, Range(1, 5) +// returns a generator producing a sequence {1, 2, 3, 4}. Range(1, 9, 2) +// returns a generator producing {1, 3, 5, 7}. +// * start and end must have the same type. That type may be any integral or +// floating-point type or a user defined type satisfying these conditions: +// * It must be assignable (have operator=() defined). +// * It must have operator+() (operator+(int-compatible type) for +// two-operand version). +// * It must have operator<() defined. +// Elements in the resulting sequences will also have that type. +// * Condition start < end must be satisfied in order for resulting sequences +// to contain any elements. +// +template +internal::ParamGenerator Range(T start, T end, IncrementT step) { + return internal::ParamGenerator( + new internal::RangeGenerator(start, end, step)); +} + +template +internal::ParamGenerator Range(T start, T end) { + return Range(start, end, 1); +} + +// ValuesIn() function allows generation of tests with parameters coming from +// a container. +// +// Synopsis: +// ValuesIn(const T (&array)[N]) +// - returns a generator producing sequences with elements from +// a C-style array. +// ValuesIn(const Container& container) +// - returns a generator producing sequences with elements from +// an STL-style container. +// ValuesIn(Iterator begin, Iterator end) +// - returns a generator producing sequences with elements from +// a range [begin, end) defined by a pair of STL-style iterators. These +// iterators can also be plain C pointers. +// +// Please note that ValuesIn copies the values from the containers +// passed in and keeps them to generate tests in RUN_ALL_TESTS(). +// +// Examples: +// +// This instantiates tests from test case StringTest +// each with C-string values of "foo", "bar", and "baz": +// +// const char* strings[] = {"foo", "bar", "baz"}; +// INSTANTIATE_TEST_CASE_P(StringSequence, SrtingTest, ValuesIn(strings)); +// +// This instantiates tests from test case StlStringTest +// each with STL strings with values "a" and "b": +// +// ::std::vector< ::std::string> GetParameterStrings() { +// ::std::vector< ::std::string> v; +// v.push_back("a"); +// v.push_back("b"); +// return v; +// } +// +// INSTANTIATE_TEST_CASE_P(CharSequence, +// StlStringTest, +// ValuesIn(GetParameterStrings())); +// +// +// This will also instantiate tests from CharTest +// each with parameter values 'a' and 'b': +// +// ::std::list GetParameterChars() { +// ::std::list list; +// list.push_back('a'); +// list.push_back('b'); +// return list; +// } +// ::std::list l = GetParameterChars(); +// INSTANTIATE_TEST_CASE_P(CharSequence2, +// CharTest, +// ValuesIn(l.begin(), l.end())); +// +template +internal::ParamGenerator< + typename ::testing::internal::IteratorTraits::value_type> +ValuesIn(ForwardIterator begin, ForwardIterator end) { + typedef typename ::testing::internal::IteratorTraits + ::value_type ParamType; + return internal::ParamGenerator( + new internal::ValuesInIteratorRangeGenerator(begin, end)); +} + +template +internal::ParamGenerator ValuesIn(const T (&array)[N]) { + return ValuesIn(array, array + N); +} + +template +internal::ParamGenerator ValuesIn( + const Container& container) { + return ValuesIn(container.begin(), container.end()); +} + +// Values() allows generating tests from explicitly specified list of +// parameters. +// +// Synopsis: +// Values(T v1, T v2, ..., T vN) +// - returns a generator producing sequences with elements v1, v2, ..., vN. +// +// For example, this instantiates tests from test case BarTest each +// with values "one", "two", and "three": +// +// INSTANTIATE_TEST_CASE_P(NumSequence, BarTest, Values("one", "two", "three")); +// +// This instantiates tests from test case BazTest each with values 1, 2, 3.5. +// The exact type of values will depend on the type of parameter in BazTest. +// +// INSTANTIATE_TEST_CASE_P(FloatingNumbers, BazTest, Values(1, 2, 3.5)); +// +// Currently, Values() supports from 1 to 50 parameters. +// +template +internal::ValueArray1 Values(T1 v1) { + return internal::ValueArray1(v1); +} + +template +internal::ValueArray2 Values(T1 v1, T2 v2) { + return internal::ValueArray2(v1, v2); +} + +template +internal::ValueArray3 Values(T1 v1, T2 v2, T3 v3) { + return internal::ValueArray3(v1, v2, v3); +} + +template +internal::ValueArray4 Values(T1 v1, T2 v2, T3 v3, T4 v4) { + return internal::ValueArray4(v1, v2, v3, v4); +} + +template +internal::ValueArray5 Values(T1 v1, T2 v2, T3 v3, T4 v4, + T5 v5) { + return internal::ValueArray5(v1, v2, v3, v4, v5); +} + +template +internal::ValueArray6 Values(T1 v1, T2 v2, T3 v3, + T4 v4, T5 v5, T6 v6) { + return internal::ValueArray6(v1, v2, v3, v4, v5, v6); +} + +template +internal::ValueArray7 Values(T1 v1, T2 v2, T3 v3, + T4 v4, T5 v5, T6 v6, T7 v7) { + return internal::ValueArray7(v1, v2, v3, v4, v5, + v6, v7); +} + +template +internal::ValueArray8 Values(T1 v1, T2 v2, + T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8) { + return internal::ValueArray8(v1, v2, v3, v4, + v5, v6, v7, v8); +} + +template +internal::ValueArray9 Values(T1 v1, T2 v2, + T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9) { + return internal::ValueArray9(v1, v2, v3, + v4, v5, v6, v7, v8, v9); +} + +template +internal::ValueArray10 Values(T1 v1, + T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10) { + return internal::ValueArray10(v1, + v2, v3, v4, v5, v6, v7, v8, v9, v10); +} + +template +internal::ValueArray11 Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, + T10 v10, T11 v11) { + return internal::ValueArray11(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11); +} + +template +internal::ValueArray12 Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, + T10 v10, T11 v11, T12 v12) { + return internal::ValueArray12(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12); +} + +template +internal::ValueArray13 Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, + T10 v10, T11 v11, T12 v12, T13 v13) { + return internal::ValueArray13(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13); +} + +template +internal::ValueArray14 Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, + T10 v10, T11 v11, T12 v12, T13 v13, T14 v14) { + return internal::ValueArray14(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, + v14); +} + +template +internal::ValueArray15 Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, + T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15) { + return internal::ValueArray15(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, + v13, v14, v15); +} + +template +internal::ValueArray16 Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, + T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, + T16 v16) { + return internal::ValueArray16(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, + v12, v13, v14, v15, v16); +} + +template +internal::ValueArray17 Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, + T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, + T16 v16, T17 v17) { + return internal::ValueArray17(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, + v11, v12, v13, v14, v15, v16, v17); +} + +template +internal::ValueArray18 Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, + T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, + T16 v16, T17 v17, T18 v18) { + return internal::ValueArray18(v1, v2, v3, v4, v5, v6, v7, v8, v9, + v10, v11, v12, v13, v14, v15, v16, v17, v18); +} + +template +internal::ValueArray19 Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, + T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, + T15 v15, T16 v16, T17 v17, T18 v18, T19 v19) { + return internal::ValueArray19(v1, v2, v3, v4, v5, v6, v7, v8, + v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19); +} + +template +internal::ValueArray20 Values(T1 v1, T2 v2, T3 v3, T4 v4, + T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, + T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20) { + return internal::ValueArray20(v1, v2, v3, v4, v5, v6, v7, + v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20); +} + +template +internal::ValueArray21 Values(T1 v1, T2 v2, T3 v3, T4 v4, + T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, + T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, T21 v21) { + return internal::ValueArray21(v1, v2, v3, v4, v5, v6, + v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21); +} + +template +internal::ValueArray22 Values(T1 v1, T2 v2, T3 v3, + T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, + T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, + T21 v21, T22 v22) { + return internal::ValueArray22(v1, v2, v3, v4, + v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, + v20, v21, v22); +} + +template +internal::ValueArray23 Values(T1 v1, T2 v2, + T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, + T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, + T21 v21, T22 v22, T23 v23) { + return internal::ValueArray23(v1, v2, v3, + v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, + v20, v21, v22, v23); +} + +template +internal::ValueArray24 Values(T1 v1, T2 v2, + T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, + T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, + T21 v21, T22 v22, T23 v23, T24 v24) { + return internal::ValueArray24(v1, v2, + v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, + v19, v20, v21, v22, v23, v24); +} + +template +internal::ValueArray25 Values(T1 v1, + T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, + T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, + T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25) { + return internal::ValueArray25(v1, + v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, + v18, v19, v20, v21, v22, v23, v24, v25); +} + +template +internal::ValueArray26 Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, + T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, + T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, + T26 v26) { + return internal::ValueArray26(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, + v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26); +} + +template +internal::ValueArray27 Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, + T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, + T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, + T26 v26, T27 v27) { + return internal::ValueArray27(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, + v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27); +} + +template +internal::ValueArray28 Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, + T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, + T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, + T26 v26, T27 v27, T28 v28) { + return internal::ValueArray28(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, + v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, + v28); +} + +template +internal::ValueArray29 Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, + T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, + T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, + T26 v26, T27 v27, T28 v28, T29 v29) { + return internal::ValueArray29(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, + v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, + v27, v28, v29); +} + +template +internal::ValueArray30 Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, + T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, + T17 v17, T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, + T25 v25, T26 v26, T27 v27, T28 v28, T29 v29, T30 v30) { + return internal::ValueArray30(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, + v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, + v26, v27, v28, v29, v30); +} + +template +internal::ValueArray31 Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, + T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, + T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, + T24 v24, T25 v25, T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31) { + return internal::ValueArray31(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, + v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, + v25, v26, v27, v28, v29, v30, v31); +} + +template +internal::ValueArray32 Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, + T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, + T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, + T24 v24, T25 v25, T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, + T32 v32) { + return internal::ValueArray32(v1, v2, v3, v4, v5, v6, v7, v8, v9, + v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, + v24, v25, v26, v27, v28, v29, v30, v31, v32); +} + +template +internal::ValueArray33 Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, + T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, + T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, + T24 v24, T25 v25, T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, + T32 v32, T33 v33) { + return internal::ValueArray33(v1, v2, v3, v4, v5, v6, v7, v8, + v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, + v24, v25, v26, v27, v28, v29, v30, v31, v32, v33); +} + +template +internal::ValueArray34 Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, + T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, + T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, + T23 v23, T24 v24, T25 v25, T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, + T31 v31, T32 v32, T33 v33, T34 v34) { + return internal::ValueArray34(v1, v2, v3, v4, v5, v6, v7, + v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, + v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34); +} + +template +internal::ValueArray35 Values(T1 v1, T2 v2, T3 v3, T4 v4, + T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, + T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, T21 v21, + T22 v22, T23 v23, T24 v24, T25 v25, T26 v26, T27 v27, T28 v28, T29 v29, + T30 v30, T31 v31, T32 v32, T33 v33, T34 v34, T35 v35) { + return internal::ValueArray35(v1, v2, v3, v4, v5, v6, + v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, + v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35); +} + +template +internal::ValueArray36 Values(T1 v1, T2 v2, T3 v3, T4 v4, + T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, + T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, T21 v21, + T22 v22, T23 v23, T24 v24, T25 v25, T26 v26, T27 v27, T28 v28, T29 v29, + T30 v30, T31 v31, T32 v32, T33 v33, T34 v34, T35 v35, T36 v36) { + return internal::ValueArray36(v1, v2, v3, v4, + v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, + v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, + v34, v35, v36); +} + +template +internal::ValueArray37 Values(T1 v1, T2 v2, T3 v3, + T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, + T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, + T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, T26 v26, T27 v27, T28 v28, + T29 v29, T30 v30, T31 v31, T32 v32, T33 v33, T34 v34, T35 v35, T36 v36, + T37 v37) { + return internal::ValueArray37(v1, v2, v3, + v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, + v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, + v34, v35, v36, v37); +} + +template +internal::ValueArray38 Values(T1 v1, T2 v2, + T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, + T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, + T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, T26 v26, T27 v27, T28 v28, + T29 v29, T30 v30, T31 v31, T32 v32, T33 v33, T34 v34, T35 v35, T36 v36, + T37 v37, T38 v38) { + return internal::ValueArray38(v1, v2, + v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, + v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, + v33, v34, v35, v36, v37, v38); +} + +template +internal::ValueArray39 Values(T1 v1, T2 v2, + T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, + T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, + T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, T26 v26, T27 v27, T28 v28, + T29 v29, T30 v30, T31 v31, T32 v32, T33 v33, T34 v34, T35 v35, T36 v36, + T37 v37, T38 v38, T39 v39) { + return internal::ValueArray39(v1, + v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, + v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, + v32, v33, v34, v35, v36, v37, v38, v39); +} + +template +internal::ValueArray40 Values(T1 v1, + T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, + T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, + T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, T26 v26, T27 v27, + T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33, T34 v34, T35 v35, + T36 v36, T37 v37, T38 v38, T39 v39, T40 v40) { + return internal::ValueArray40(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, + v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, + v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40); +} + +template +internal::ValueArray41 Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, + T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, + T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, + T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33, + T34 v34, T35 v35, T36 v36, T37 v37, T38 v38, T39 v39, T40 v40, T41 v41) { + return internal::ValueArray41(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, + v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, + v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41); +} + +template +internal::ValueArray42 Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, + T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, + T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, + T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33, + T34 v34, T35 v35, T36 v36, T37 v37, T38 v38, T39 v39, T40 v40, T41 v41, + T42 v42) { + return internal::ValueArray42(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, + v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, + v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, + v42); +} + +template +internal::ValueArray43 Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, + T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, + T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, + T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33, + T34 v34, T35 v35, T36 v36, T37 v37, T38 v38, T39 v39, T40 v40, T41 v41, + T42 v42, T43 v43) { + return internal::ValueArray43(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, + v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, + v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, + v41, v42, v43); +} + +template +internal::ValueArray44 Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, + T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, + T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, + T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33, + T34 v34, T35 v35, T36 v36, T37 v37, T38 v38, T39 v39, T40 v40, T41 v41, + T42 v42, T43 v43, T44 v44) { + return internal::ValueArray44(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, + v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, + v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, + v40, v41, v42, v43, v44); +} + +template +internal::ValueArray45 Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, + T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, + T17 v17, T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, + T25 v25, T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, + T33 v33, T34 v34, T35 v35, T36 v36, T37 v37, T38 v38, T39 v39, T40 v40, + T41 v41, T42 v42, T43 v43, T44 v44, T45 v45) { + return internal::ValueArray45(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, + v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, + v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, + v39, v40, v41, v42, v43, v44, v45); +} + +template +internal::ValueArray46 Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, + T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, + T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, + T24 v24, T25 v25, T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, + T32 v32, T33 v33, T34 v34, T35 v35, T36 v36, T37 v37, T38 v38, T39 v39, + T40 v40, T41 v41, T42 v42, T43 v43, T44 v44, T45 v45, T46 v46) { + return internal::ValueArray46(v1, v2, v3, v4, v5, v6, v7, v8, v9, + v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, + v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, + v38, v39, v40, v41, v42, v43, v44, v45, v46); +} + +template +internal::ValueArray47 Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, + T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, + T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, + T24 v24, T25 v25, T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, + T32 v32, T33 v33, T34 v34, T35 v35, T36 v36, T37 v37, T38 v38, T39 v39, + T40 v40, T41 v41, T42 v42, T43 v43, T44 v44, T45 v45, T46 v46, T47 v47) { + return internal::ValueArray47(v1, v2, v3, v4, v5, v6, v7, v8, + v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, + v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, + v38, v39, v40, v41, v42, v43, v44, v45, v46, v47); +} + +template +internal::ValueArray48 Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, + T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, + T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, + T24 v24, T25 v25, T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, + T32 v32, T33 v33, T34 v34, T35 v35, T36 v36, T37 v37, T38 v38, T39 v39, + T40 v40, T41 v41, T42 v42, T43 v43, T44 v44, T45 v45, T46 v46, T47 v47, + T48 v48) { + return internal::ValueArray48(v1, v2, v3, v4, v5, v6, v7, + v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, + v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, + v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48); +} + +template +internal::ValueArray49 Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, + T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, + T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, + T23 v23, T24 v24, T25 v25, T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, + T31 v31, T32 v32, T33 v33, T34 v34, T35 v35, T36 v36, T37 v37, T38 v38, + T39 v39, T40 v40, T41 v41, T42 v42, T43 v43, T44 v44, T45 v45, T46 v46, + T47 v47, T48 v48, T49 v49) { + return internal::ValueArray49(v1, v2, v3, v4, v5, v6, + v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, + v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, + v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49); +} + +template +internal::ValueArray50 Values(T1 v1, T2 v2, T3 v3, T4 v4, + T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, + T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, T21 v21, + T22 v22, T23 v23, T24 v24, T25 v25, T26 v26, T27 v27, T28 v28, T29 v29, + T30 v30, T31 v31, T32 v32, T33 v33, T34 v34, T35 v35, T36 v36, T37 v37, + T38 v38, T39 v39, T40 v40, T41 v41, T42 v42, T43 v43, T44 v44, T45 v45, + T46 v46, T47 v47, T48 v48, T49 v49, T50 v50) { + return internal::ValueArray50(v1, v2, v3, v4, + v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, + v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, + v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, + v48, v49, v50); +} + +// Bool() allows generating tests with parameters in a set of (false, true). +// +// Synopsis: +// Bool() +// - returns a generator producing sequences with elements {false, true}. +// +// It is useful when testing code that depends on Boolean flags. Combinations +// of multiple flags can be tested when several Bool()'s are combined using +// Combine() function. +// +// In the following example all tests in the test case FlagDependentTest +// will be instantiated twice with parameters false and true. +// +// class FlagDependentTest : public testing::TestWithParam { +// virtual void SetUp() { +// external_flag = GetParam(); +// } +// } +// INSTANTIATE_TEST_CASE_P(BoolSequence, FlagDependentTest, Bool()); +// +inline internal::ParamGenerator Bool() { + return Values(false, true); +} + +# if GTEST_HAS_COMBINE +// Combine() allows the user to combine two or more sequences to produce +// values of a Cartesian product of those sequences' elements. +// +// Synopsis: +// Combine(gen1, gen2, ..., genN) +// - returns a generator producing sequences with elements coming from +// the Cartesian product of elements from the sequences generated by +// gen1, gen2, ..., genN. The sequence elements will have a type of +// tuple where T1, T2, ..., TN are the types +// of elements from sequences produces by gen1, gen2, ..., genN. +// +// Combine can have up to 10 arguments. This number is currently limited +// by the maximum number of elements in the tuple implementation used by Google +// Test. +// +// Example: +// +// This will instantiate tests in test case AnimalTest each one with +// the parameter values tuple("cat", BLACK), tuple("cat", WHITE), +// tuple("dog", BLACK), and tuple("dog", WHITE): +// +// enum Color { BLACK, GRAY, WHITE }; +// class AnimalTest +// : public testing::TestWithParam > {...}; +// +// TEST_P(AnimalTest, AnimalLooksNice) {...} +// +// INSTANTIATE_TEST_CASE_P(AnimalVariations, AnimalTest, +// Combine(Values("cat", "dog"), +// Values(BLACK, WHITE))); +// +// This will instantiate tests in FlagDependentTest with all variations of two +// Boolean flags: +// +// class FlagDependentTest +// : public testing::TestWithParam > { +// virtual void SetUp() { +// // Assigns external_flag_1 and external_flag_2 values from the tuple. +// tie(external_flag_1, external_flag_2) = GetParam(); +// } +// }; +// +// TEST_P(FlagDependentTest, TestFeature1) { +// // Test your code using external_flag_1 and external_flag_2 here. +// } +// INSTANTIATE_TEST_CASE_P(TwoBoolSequence, FlagDependentTest, +// Combine(Bool(), Bool())); +// +template +internal::CartesianProductHolder2 Combine( + const Generator1& g1, const Generator2& g2) { + return internal::CartesianProductHolder2( + g1, g2); +} + +template +internal::CartesianProductHolder3 Combine( + const Generator1& g1, const Generator2& g2, const Generator3& g3) { + return internal::CartesianProductHolder3( + g1, g2, g3); +} + +template +internal::CartesianProductHolder4 Combine( + const Generator1& g1, const Generator2& g2, const Generator3& g3, + const Generator4& g4) { + return internal::CartesianProductHolder4( + g1, g2, g3, g4); +} + +template +internal::CartesianProductHolder5 Combine( + const Generator1& g1, const Generator2& g2, const Generator3& g3, + const Generator4& g4, const Generator5& g5) { + return internal::CartesianProductHolder5( + g1, g2, g3, g4, g5); +} + +template +internal::CartesianProductHolder6 Combine( + const Generator1& g1, const Generator2& g2, const Generator3& g3, + const Generator4& g4, const Generator5& g5, const Generator6& g6) { + return internal::CartesianProductHolder6( + g1, g2, g3, g4, g5, g6); +} + +template +internal::CartesianProductHolder7 Combine( + const Generator1& g1, const Generator2& g2, const Generator3& g3, + const Generator4& g4, const Generator5& g5, const Generator6& g6, + const Generator7& g7) { + return internal::CartesianProductHolder7( + g1, g2, g3, g4, g5, g6, g7); +} + +template +internal::CartesianProductHolder8 Combine( + const Generator1& g1, const Generator2& g2, const Generator3& g3, + const Generator4& g4, const Generator5& g5, const Generator6& g6, + const Generator7& g7, const Generator8& g8) { + return internal::CartesianProductHolder8( + g1, g2, g3, g4, g5, g6, g7, g8); +} + +template +internal::CartesianProductHolder9 Combine( + const Generator1& g1, const Generator2& g2, const Generator3& g3, + const Generator4& g4, const Generator5& g5, const Generator6& g6, + const Generator7& g7, const Generator8& g8, const Generator9& g9) { + return internal::CartesianProductHolder9( + g1, g2, g3, g4, g5, g6, g7, g8, g9); +} + +template +internal::CartesianProductHolder10 Combine( + const Generator1& g1, const Generator2& g2, const Generator3& g3, + const Generator4& g4, const Generator5& g5, const Generator6& g6, + const Generator7& g7, const Generator8& g8, const Generator9& g9, + const Generator10& g10) { + return internal::CartesianProductHolder10( + g1, g2, g3, g4, g5, g6, g7, g8, g9, g10); +} +# endif // GTEST_HAS_COMBINE + + + +# define TEST_P(test_case_name, test_name) \ + class GTEST_TEST_CLASS_NAME_(test_case_name, test_name) \ + : public test_case_name { \ + public: \ + GTEST_TEST_CLASS_NAME_(test_case_name, test_name)() {} \ + virtual void TestBody(); \ + private: \ + static int AddToRegistry() { \ + ::testing::UnitTest::GetInstance()->parameterized_test_registry(). \ + GetTestCasePatternHolder(\ + #test_case_name, __FILE__, __LINE__)->AddTestPattern(\ + #test_case_name, \ + #test_name, \ + new ::testing::internal::TestMetaFactory< \ + GTEST_TEST_CLASS_NAME_(test_case_name, test_name)>()); \ + return 0; \ + } \ + static int gtest_registering_dummy_; \ + GTEST_DISALLOW_COPY_AND_ASSIGN_(\ + GTEST_TEST_CLASS_NAME_(test_case_name, test_name)); \ + }; \ + int GTEST_TEST_CLASS_NAME_(test_case_name, \ + test_name)::gtest_registering_dummy_ = \ + GTEST_TEST_CLASS_NAME_(test_case_name, test_name)::AddToRegistry(); \ + void GTEST_TEST_CLASS_NAME_(test_case_name, test_name)::TestBody() + +# define INSTANTIATE_TEST_CASE_P(prefix, test_case_name, generator) \ + ::testing::internal::ParamGenerator \ + gtest_##prefix##test_case_name##_EvalGenerator_() { return generator; } \ + int gtest_##prefix##test_case_name##_dummy_ = \ + ::testing::UnitTest::GetInstance()->parameterized_test_registry(). \ + GetTestCasePatternHolder(\ + #test_case_name, __FILE__, __LINE__)->AddTestCaseInstantiation(\ + #prefix, \ + >est_##prefix##test_case_name##_EvalGenerator_, \ + __FILE__, __LINE__) + +} // namespace testing + +#endif // GTEST_HAS_PARAM_TEST + +#endif // GTEST_INCLUDE_GTEST_GTEST_PARAM_TEST_H_ +// Copyright 2006, Google Inc. +// All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Author: wan@google.com (Zhanyong Wan) +// +// Google C++ Testing Framework definitions useful in production code. + +#ifndef GTEST_INCLUDE_GTEST_GTEST_PROD_H_ +#define GTEST_INCLUDE_GTEST_GTEST_PROD_H_ + +// When you need to test the private or protected members of a class, +// use the FRIEND_TEST macro to declare your tests as friends of the +// class. For example: +// +// class MyClass { +// private: +// void MyMethod(); +// FRIEND_TEST(MyClassTest, MyMethod); +// }; +// +// class MyClassTest : public testing::Test { +// // ... +// }; +// +// TEST_F(MyClassTest, MyMethod) { +// // Can call MyClass::MyMethod() here. +// } + +#define FRIEND_TEST(test_case_name, test_name)\ +friend class test_case_name##_##test_name##_Test + +#endif // GTEST_INCLUDE_GTEST_GTEST_PROD_H_ +// Copyright 2008, Google Inc. +// All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Author: mheule@google.com (Markus Heule) +// + +#ifndef GTEST_INCLUDE_GTEST_GTEST_TEST_PART_H_ +#define GTEST_INCLUDE_GTEST_GTEST_TEST_PART_H_ + +#include +#include + +namespace testing { + +// A copyable object representing the result of a test part (i.e. an +// assertion or an explicit FAIL(), ADD_FAILURE(), or SUCCESS()). +// +// Don't inherit from TestPartResult as its destructor is not virtual. +class GTEST_API_ TestPartResult { + public: + // The possible outcomes of a test part (i.e. an assertion or an + // explicit SUCCEED(), FAIL(), or ADD_FAILURE()). + enum Type { + kSuccess, // Succeeded. + kNonFatalFailure, // Failed but the test can continue. + kFatalFailure // Failed and the test should be terminated. + }; + + // C'tor. TestPartResult does NOT have a default constructor. + // Always use this constructor (with parameters) to create a + // TestPartResult object. + TestPartResult(Type a_type, + const char* a_file_name, + int a_line_number, + const char* a_message) + : type_(a_type), + file_name_(a_file_name == NULL ? "" : a_file_name), + line_number_(a_line_number), + summary_(ExtractSummary(a_message)), + message_(a_message) { + } + + // Gets the outcome of the test part. + Type type() const { return type_; } + + // Gets the name of the source file where the test part took place, or + // NULL if it's unknown. + const char* file_name() const { + return file_name_.empty() ? NULL : file_name_.c_str(); + } + + // Gets the line in the source file where the test part took place, + // or -1 if it's unknown. + int line_number() const { return line_number_; } + + // Gets the summary of the failure message. + const char* summary() const { return summary_.c_str(); } + + // Gets the message associated with the test part. + const char* message() const { return message_.c_str(); } + + // Returns true iff the test part passed. + bool passed() const { return type_ == kSuccess; } + + // Returns true iff the test part failed. + bool failed() const { return type_ != kSuccess; } + + // Returns true iff the test part non-fatally failed. + bool nonfatally_failed() const { return type_ == kNonFatalFailure; } + + // Returns true iff the test part fatally failed. + bool fatally_failed() const { return type_ == kFatalFailure; } + + private: + Type type_; + + // Gets the summary of the failure message by omitting the stack + // trace in it. + static std::string ExtractSummary(const char* message); + + // The name of the source file where the test part took place, or + // "" if the source file is unknown. + std::string file_name_; + // The line in the source file where the test part took place, or -1 + // if the line number is unknown. + int line_number_; + std::string summary_; // The test failure summary. + std::string message_; // The test failure message. +}; + +// Prints a TestPartResult object. +std::ostream& operator<<(std::ostream& os, const TestPartResult& result); + +// An array of TestPartResult objects. +// +// Don't inherit from TestPartResultArray as its destructor is not +// virtual. +class GTEST_API_ TestPartResultArray { + public: + TestPartResultArray() {} + + // Appends the given TestPartResult to the array. + void Append(const TestPartResult& result); + + // Returns the TestPartResult at the given index (0-based). + const TestPartResult& GetTestPartResult(int index) const; + + // Returns the number of TestPartResult objects in the array. + int size() const; + + private: + std::vector array_; + + GTEST_DISALLOW_COPY_AND_ASSIGN_(TestPartResultArray); +}; + +// This interface knows how to report a test part result. +class TestPartResultReporterInterface { + public: + virtual ~TestPartResultReporterInterface() {} + + virtual void ReportTestPartResult(const TestPartResult& result) = 0; +}; + +namespace internal { + +// This helper class is used by {ASSERT|EXPECT}_NO_FATAL_FAILURE to check if a +// statement generates new fatal failures. To do so it registers itself as the +// current test part result reporter. Besides checking if fatal failures were +// reported, it only delegates the reporting to the former result reporter. +// The original result reporter is restored in the destructor. +// INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM. +class GTEST_API_ HasNewFatalFailureHelper + : public TestPartResultReporterInterface { + public: + HasNewFatalFailureHelper(); + virtual ~HasNewFatalFailureHelper(); + virtual void ReportTestPartResult(const TestPartResult& result); + bool has_new_fatal_failure() const { return has_new_fatal_failure_; } + private: + bool has_new_fatal_failure_; + TestPartResultReporterInterface* original_reporter_; + + GTEST_DISALLOW_COPY_AND_ASSIGN_(HasNewFatalFailureHelper); +}; + +} // namespace internal + +} // namespace testing + +#endif // GTEST_INCLUDE_GTEST_GTEST_TEST_PART_H_ +// Copyright 2008 Google Inc. +// All Rights Reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Author: wan@google.com (Zhanyong Wan) + +#ifndef GTEST_INCLUDE_GTEST_GTEST_TYPED_TEST_H_ +#define GTEST_INCLUDE_GTEST_GTEST_TYPED_TEST_H_ + +// This header implements typed tests and type-parameterized tests. + +// Typed (aka type-driven) tests repeat the same test for types in a +// list. You must know which types you want to test with when writing +// typed tests. Here's how you do it: + +#if 0 + +// First, define a fixture class template. It should be parameterized +// by a type. Remember to derive it from testing::Test. +template +class FooTest : public testing::Test { + public: + ... + typedef std::list List; + static T shared_; + T value_; +}; + +// Next, associate a list of types with the test case, which will be +// repeated for each type in the list. The typedef is necessary for +// the macro to parse correctly. +typedef testing::Types MyTypes; +TYPED_TEST_CASE(FooTest, MyTypes); + +// If the type list contains only one type, you can write that type +// directly without Types<...>: +// TYPED_TEST_CASE(FooTest, int); + +// Then, use TYPED_TEST() instead of TEST_F() to define as many typed +// tests for this test case as you want. +TYPED_TEST(FooTest, DoesBlah) { + // Inside a test, refer to TypeParam to get the type parameter. + // Since we are inside a derived class template, C++ requires use to + // visit the members of FooTest via 'this'. + TypeParam n = this->value_; + + // To visit static members of the fixture, add the TestFixture:: + // prefix. + n += TestFixture::shared_; + + // To refer to typedefs in the fixture, add the "typename + // TestFixture::" prefix. + typename TestFixture::List values; + values.push_back(n); + ... +} + +TYPED_TEST(FooTest, HasPropertyA) { ... } + +#endif // 0 + +// Type-parameterized tests are abstract test patterns parameterized +// by a type. Compared with typed tests, type-parameterized tests +// allow you to define the test pattern without knowing what the type +// parameters are. The defined pattern can be instantiated with +// different types any number of times, in any number of translation +// units. +// +// If you are designing an interface or concept, you can define a +// suite of type-parameterized tests to verify properties that any +// valid implementation of the interface/concept should have. Then, +// each implementation can easily instantiate the test suite to verify +// that it conforms to the requirements, without having to write +// similar tests repeatedly. Here's an example: + +#if 0 + +// First, define a fixture class template. It should be parameterized +// by a type. Remember to derive it from testing::Test. +template +class FooTest : public testing::Test { + ... +}; + +// Next, declare that you will define a type-parameterized test case +// (the _P suffix is for "parameterized" or "pattern", whichever you +// prefer): +TYPED_TEST_CASE_P(FooTest); + +// Then, use TYPED_TEST_P() to define as many type-parameterized tests +// for this type-parameterized test case as you want. +TYPED_TEST_P(FooTest, DoesBlah) { + // Inside a test, refer to TypeParam to get the type parameter. + TypeParam n = 0; + ... +} + +TYPED_TEST_P(FooTest, HasPropertyA) { ... } + +// Now the tricky part: you need to register all test patterns before +// you can instantiate them. The first argument of the macro is the +// test case name; the rest are the names of the tests in this test +// case. +REGISTER_TYPED_TEST_CASE_P(FooTest, + DoesBlah, HasPropertyA); + +// Finally, you are free to instantiate the pattern with the types you +// want. If you put the above code in a header file, you can #include +// it in multiple C++ source files and instantiate it multiple times. +// +// To distinguish different instances of the pattern, the first +// argument to the INSTANTIATE_* macro is a prefix that will be added +// to the actual test case name. Remember to pick unique prefixes for +// different instances. +typedef testing::Types MyTypes; +INSTANTIATE_TYPED_TEST_CASE_P(My, FooTest, MyTypes); + +// If the type list contains only one type, you can write that type +// directly without Types<...>: +// INSTANTIATE_TYPED_TEST_CASE_P(My, FooTest, int); + +#endif // 0 + + +// Implements typed tests. + +#if GTEST_HAS_TYPED_TEST + +// INTERNAL IMPLEMENTATION - DO NOT USE IN USER CODE. +// +// Expands to the name of the typedef for the type parameters of the +// given test case. +# define GTEST_TYPE_PARAMS_(TestCaseName) gtest_type_params_##TestCaseName##_ + +// The 'Types' template argument below must have spaces around it +// since some compilers may choke on '>>' when passing a template +// instance (e.g. Types) +# define TYPED_TEST_CASE(CaseName, Types) \ + typedef ::testing::internal::TypeList< Types >::type \ + GTEST_TYPE_PARAMS_(CaseName) + +# define TYPED_TEST(CaseName, TestName) \ + template \ + class GTEST_TEST_CLASS_NAME_(CaseName, TestName) \ + : public CaseName { \ + private: \ + typedef CaseName TestFixture; \ + typedef gtest_TypeParam_ TypeParam; \ + virtual void TestBody(); \ + }; \ + bool gtest_##CaseName##_##TestName##_registered_ GTEST_ATTRIBUTE_UNUSED_ = \ + ::testing::internal::TypeParameterizedTest< \ + CaseName, \ + ::testing::internal::TemplateSel< \ + GTEST_TEST_CLASS_NAME_(CaseName, TestName)>, \ + GTEST_TYPE_PARAMS_(CaseName)>::Register(\ + "", #CaseName, #TestName, 0); \ + template \ + void GTEST_TEST_CLASS_NAME_(CaseName, TestName)::TestBody() + +#endif // GTEST_HAS_TYPED_TEST + +// Implements type-parameterized tests. + +#if GTEST_HAS_TYPED_TEST_P + +// INTERNAL IMPLEMENTATION - DO NOT USE IN USER CODE. +// +// Expands to the namespace name that the type-parameterized tests for +// the given type-parameterized test case are defined in. The exact +// name of the namespace is subject to change without notice. +# define GTEST_CASE_NAMESPACE_(TestCaseName) \ + gtest_case_##TestCaseName##_ + +// INTERNAL IMPLEMENTATION - DO NOT USE IN USER CODE. +// +// Expands to the name of the variable used to remember the names of +// the defined tests in the given test case. +# define GTEST_TYPED_TEST_CASE_P_STATE_(TestCaseName) \ + gtest_typed_test_case_p_state_##TestCaseName##_ + +// INTERNAL IMPLEMENTATION - DO NOT USE IN USER CODE DIRECTLY. +// +// Expands to the name of the variable used to remember the names of +// the registered tests in the given test case. +# define GTEST_REGISTERED_TEST_NAMES_(TestCaseName) \ + gtest_registered_test_names_##TestCaseName##_ + +// The variables defined in the type-parameterized test macros are +// static as typically these macros are used in a .h file that can be +// #included in multiple translation units linked together. +# define TYPED_TEST_CASE_P(CaseName) \ + static ::testing::internal::TypedTestCasePState \ + GTEST_TYPED_TEST_CASE_P_STATE_(CaseName) + +# define TYPED_TEST_P(CaseName, TestName) \ + namespace GTEST_CASE_NAMESPACE_(CaseName) { \ + template \ + class TestName : public CaseName { \ + private: \ + typedef CaseName TestFixture; \ + typedef gtest_TypeParam_ TypeParam; \ + virtual void TestBody(); \ + }; \ + static bool gtest_##TestName##_defined_ GTEST_ATTRIBUTE_UNUSED_ = \ + GTEST_TYPED_TEST_CASE_P_STATE_(CaseName).AddTestName(\ + __FILE__, __LINE__, #CaseName, #TestName); \ + } \ + template \ + void GTEST_CASE_NAMESPACE_(CaseName)::TestName::TestBody() + +# define REGISTER_TYPED_TEST_CASE_P(CaseName, ...) \ + namespace GTEST_CASE_NAMESPACE_(CaseName) { \ + typedef ::testing::internal::Templates<__VA_ARGS__>::type gtest_AllTests_; \ + } \ + static const char* const GTEST_REGISTERED_TEST_NAMES_(CaseName) = \ + GTEST_TYPED_TEST_CASE_P_STATE_(CaseName).VerifyRegisteredTestNames(\ + __FILE__, __LINE__, #__VA_ARGS__) + +// The 'Types' template argument below must have spaces around it +// since some compilers may choke on '>>' when passing a template +// instance (e.g. Types) +# define INSTANTIATE_TYPED_TEST_CASE_P(Prefix, CaseName, Types) \ + bool gtest_##Prefix##_##CaseName GTEST_ATTRIBUTE_UNUSED_ = \ + ::testing::internal::TypeParameterizedTestCase::type>::Register(\ + #Prefix, #CaseName, GTEST_REGISTERED_TEST_NAMES_(CaseName)) + +#endif // GTEST_HAS_TYPED_TEST_P + +#endif // GTEST_INCLUDE_GTEST_GTEST_TYPED_TEST_H_ + +// Depending on the platform, different string classes are available. +// On Linux, in addition to ::std::string, Google also makes use of +// class ::string, which has the same interface as ::std::string, but +// has a different implementation. +// +// The user can define GTEST_HAS_GLOBAL_STRING to 1 to indicate that +// ::string is available AND is a distinct type to ::std::string, or +// define it to 0 to indicate otherwise. +// +// If the user's ::std::string and ::string are the same class due to +// aliasing, he should define GTEST_HAS_GLOBAL_STRING to 0. +// +// If the user doesn't define GTEST_HAS_GLOBAL_STRING, it is defined +// heuristically. + +namespace testing { + +// Declares the flags. + +// This flag temporary enables the disabled tests. +GTEST_DECLARE_bool_(also_run_disabled_tests); + +// This flag brings the debugger on an assertion failure. +GTEST_DECLARE_bool_(break_on_failure); + +// This flag controls whether Google Test catches all test-thrown exceptions +// and logs them as failures. +GTEST_DECLARE_bool_(catch_exceptions); + +// This flag enables using colors in terminal output. Available values are +// "yes" to enable colors, "no" (disable colors), or "auto" (the default) +// to let Google Test decide. +GTEST_DECLARE_string_(color); + +// This flag sets up the filter to select by name using a glob pattern +// the tests to run. If the filter is not given all tests are executed. +GTEST_DECLARE_string_(filter); + +// This flag causes the Google Test to list tests. None of the tests listed +// are actually run if the flag is provided. +GTEST_DECLARE_bool_(list_tests); + +// This flag controls whether Google Test emits a detailed XML report to a file +// in addition to its normal textual output. +GTEST_DECLARE_string_(output); + +// This flags control whether Google Test prints the elapsed time for each +// test. +GTEST_DECLARE_bool_(print_time); + +// This flag specifies the random number seed. +GTEST_DECLARE_int32_(random_seed); + +// This flag sets how many times the tests are repeated. The default value +// is 1. If the value is -1 the tests are repeating forever. +GTEST_DECLARE_int32_(repeat); + +// This flag controls whether Google Test includes Google Test internal +// stack frames in failure stack traces. +GTEST_DECLARE_bool_(show_internal_stack_frames); + +// When this flag is specified, tests' order is randomized on every iteration. +GTEST_DECLARE_bool_(shuffle); + +// This flag specifies the maximum number of stack frames to be +// printed in a failure message. +GTEST_DECLARE_int32_(stack_trace_depth); + +// When this flag is specified, a failed assertion will throw an +// exception if exceptions are enabled, or exit the program with a +// non-zero code otherwise. +GTEST_DECLARE_bool_(throw_on_failure); + +// When this flag is set with a "host:port" string, on supported +// platforms test results are streamed to the specified port on +// the specified host machine. +GTEST_DECLARE_string_(stream_result_to); + +// The upper limit for valid stack trace depths. +const int kMaxStackTraceDepth = 100; + +namespace internal { + +class AssertHelper; +class DefaultGlobalTestPartResultReporter; +class ExecDeathTest; +class NoExecDeathTest; +class FinalSuccessChecker; +class GTestFlagSaver; +class TestResultAccessor; +class TestEventListenersAccessor; +class TestEventRepeater; +class WindowsDeathTest; +class UnitTestImpl* GetUnitTestImpl(); +void ReportFailureInUnknownLocation(TestPartResult::Type result_type, + const std::string& message); + +// Converts a streamable value to an std::string. A NULL pointer is +// converted to "(null)". When the input value is a ::string, +// ::std::string, ::wstring, or ::std::wstring object, each NUL +// character in it is replaced with "\\0". +// Declared in gtest-internal.h but defined here, so that it has access +// to the definition of the Message class, required by the ARM +// compiler. +template +std::string StreamableToString(const T& streamable) { + return (Message() << streamable).GetString(); +} + +} // namespace internal + +// The friend relationship of some of these classes is cyclic. +// If we don't forward declare them the compiler might confuse the classes +// in friendship clauses with same named classes on the scope. +class Test; +class TestCase; +class TestInfo; +class UnitTest; + +// A class for indicating whether an assertion was successful. When +// the assertion wasn't successful, the AssertionResult object +// remembers a non-empty message that describes how it failed. +// +// To create an instance of this class, use one of the factory functions +// (AssertionSuccess() and AssertionFailure()). +// +// This class is useful for two purposes: +// 1. Defining predicate functions to be used with Boolean test assertions +// EXPECT_TRUE/EXPECT_FALSE and their ASSERT_ counterparts +// 2. Defining predicate-format functions to be +// used with predicate assertions (ASSERT_PRED_FORMAT*, etc). +// +// For example, if you define IsEven predicate: +// +// testing::AssertionResult IsEven(int n) { +// if ((n % 2) == 0) +// return testing::AssertionSuccess(); +// else +// return testing::AssertionFailure() << n << " is odd"; +// } +// +// Then the failed expectation EXPECT_TRUE(IsEven(Fib(5))) +// will print the message +// +// Value of: IsEven(Fib(5)) +// Actual: false (5 is odd) +// Expected: true +// +// instead of a more opaque +// +// Value of: IsEven(Fib(5)) +// Actual: false +// Expected: true +// +// in case IsEven is a simple Boolean predicate. +// +// If you expect your predicate to be reused and want to support informative +// messages in EXPECT_FALSE and ASSERT_FALSE (negative assertions show up +// about half as often as positive ones in our tests), supply messages for +// both success and failure cases: +// +// testing::AssertionResult IsEven(int n) { +// if ((n % 2) == 0) +// return testing::AssertionSuccess() << n << " is even"; +// else +// return testing::AssertionFailure() << n << " is odd"; +// } +// +// Then a statement EXPECT_FALSE(IsEven(Fib(6))) will print +// +// Value of: IsEven(Fib(6)) +// Actual: true (8 is even) +// Expected: false +// +// NB: Predicates that support negative Boolean assertions have reduced +// performance in positive ones so be careful not to use them in tests +// that have lots (tens of thousands) of positive Boolean assertions. +// +// To use this class with EXPECT_PRED_FORMAT assertions such as: +// +// // Verifies that Foo() returns an even number. +// EXPECT_PRED_FORMAT1(IsEven, Foo()); +// +// you need to define: +// +// testing::AssertionResult IsEven(const char* expr, int n) { +// if ((n % 2) == 0) +// return testing::AssertionSuccess(); +// else +// return testing::AssertionFailure() +// << "Expected: " << expr << " is even\n Actual: it's " << n; +// } +// +// If Foo() returns 5, you will see the following message: +// +// Expected: Foo() is even +// Actual: it's 5 +// +class GTEST_API_ AssertionResult { + public: + // Copy constructor. + // Used in EXPECT_TRUE/FALSE(assertion_result). + AssertionResult(const AssertionResult& other); + // Used in the EXPECT_TRUE/FALSE(bool_expression). + explicit AssertionResult(bool success) : success_(success) {} + + // Returns true iff the assertion succeeded. + operator bool() const { return success_; } // NOLINT + + // Returns the assertion's negation. Used with EXPECT/ASSERT_FALSE. + AssertionResult operator!() const; + + // Returns the text streamed into this AssertionResult. Test assertions + // use it when they fail (i.e., the predicate's outcome doesn't match the + // assertion's expectation). When nothing has been streamed into the + // object, returns an empty string. + const char* message() const { + return message_.get() != NULL ? message_->c_str() : ""; + } + // TODO(vladl@google.com): Remove this after making sure no clients use it. + // Deprecated; please use message() instead. + const char* failure_message() const { return message(); } + + // Streams a custom failure message into this object. + template AssertionResult& operator<<(const T& value) { + AppendMessage(Message() << value); + return *this; + } + + // Allows streaming basic output manipulators such as endl or flush into + // this object. + AssertionResult& operator<<( + ::std::ostream& (*basic_manipulator)(::std::ostream& stream)) { + AppendMessage(Message() << basic_manipulator); + return *this; + } + + private: + // Appends the contents of message to message_. + void AppendMessage(const Message& a_message) { + if (message_.get() == NULL) + message_.reset(new ::std::string); + message_->append(a_message.GetString().c_str()); + } + + // Stores result of the assertion predicate. + bool success_; + // Stores the message describing the condition in case the expectation + // construct is not satisfied with the predicate's outcome. + // Referenced via a pointer to avoid taking too much stack frame space + // with test assertions. + internal::scoped_ptr< ::std::string> message_; + + GTEST_DISALLOW_ASSIGN_(AssertionResult); +}; + +// Makes a successful assertion result. +GTEST_API_ AssertionResult AssertionSuccess(); + +// Makes a failed assertion result. +GTEST_API_ AssertionResult AssertionFailure(); + +// Makes a failed assertion result with the given failure message. +// Deprecated; use AssertionFailure() << msg. +GTEST_API_ AssertionResult AssertionFailure(const Message& msg); + +// The abstract class that all tests inherit from. +// +// In Google Test, a unit test program contains one or many TestCases, and +// each TestCase contains one or many Tests. +// +// When you define a test using the TEST macro, you don't need to +// explicitly derive from Test - the TEST macro automatically does +// this for you. +// +// The only time you derive from Test is when defining a test fixture +// to be used a TEST_F. For example: +// +// class FooTest : public testing::Test { +// protected: +// virtual void SetUp() { ... } +// virtual void TearDown() { ... } +// ... +// }; +// +// TEST_F(FooTest, Bar) { ... } +// TEST_F(FooTest, Baz) { ... } +// +// Test is not copyable. +class GTEST_API_ Test { + public: + friend class TestInfo; + + // Defines types for pointers to functions that set up and tear down + // a test case. + typedef internal::SetUpTestCaseFunc SetUpTestCaseFunc; + typedef internal::TearDownTestCaseFunc TearDownTestCaseFunc; + + // The d'tor is virtual as we intend to inherit from Test. + virtual ~Test(); + + // Sets up the stuff shared by all tests in this test case. + // + // Google Test will call Foo::SetUpTestCase() before running the first + // test in test case Foo. Hence a sub-class can define its own + // SetUpTestCase() method to shadow the one defined in the super + // class. + static void SetUpTestCase() {} + + // Tears down the stuff shared by all tests in this test case. + // + // Google Test will call Foo::TearDownTestCase() after running the last + // test in test case Foo. Hence a sub-class can define its own + // TearDownTestCase() method to shadow the one defined in the super + // class. + static void TearDownTestCase() {} + + // Returns true iff the current test has a fatal failure. + static bool HasFatalFailure(); + + // Returns true iff the current test has a non-fatal failure. + static bool HasNonfatalFailure(); + + // Returns true iff the current test has a (either fatal or + // non-fatal) failure. + static bool HasFailure() { return HasFatalFailure() || HasNonfatalFailure(); } + + // Logs a property for the current test. Only the last value for a given + // key is remembered. + // These are public static so they can be called from utility functions + // that are not members of the test fixture. + // The arguments are const char* instead strings, as Google Test is used + // on platforms where string doesn't compile. + // + // Note that a driving consideration for these RecordProperty methods + // was to produce xml output suited to the Greenspan charting utility, + // which at present will only chart values that fit in a 32-bit int. It + // is the user's responsibility to restrict their values to 32-bit ints + // if they intend them to be used with Greenspan. + static void RecordProperty(const char* key, const char* value); + static void RecordProperty(const char* key, int value); + + protected: + // Creates a Test object. + Test(); + + // Sets up the test fixture. + virtual void SetUp(); + + // Tears down the test fixture. + virtual void TearDown(); + + private: + // Returns true iff the current test has the same fixture class as + // the first test in the current test case. + static bool HasSameFixtureClass(); + + // Runs the test after the test fixture has been set up. + // + // A sub-class must implement this to define the test logic. + // + // DO NOT OVERRIDE THIS FUNCTION DIRECTLY IN A USER PROGRAM. + // Instead, use the TEST or TEST_F macro. + virtual void TestBody() = 0; + + // Sets up, executes, and tears down the test. + void Run(); + + // Deletes self. We deliberately pick an unusual name for this + // internal method to avoid clashing with names used in user TESTs. + void DeleteSelf_() { delete this; } + + // Uses a GTestFlagSaver to save and restore all Google Test flags. + const internal::GTestFlagSaver* const gtest_flag_saver_; + + // Often a user mis-spells SetUp() as Setup() and spends a long time + // wondering why it is never called by Google Test. The declaration of + // the following method is solely for catching such an error at + // compile time: + // + // - The return type is deliberately chosen to be not void, so it + // will be a conflict if a user declares void Setup() in his test + // fixture. + // + // - This method is private, so it will be another compiler error + // if a user calls it from his test fixture. + // + // DO NOT OVERRIDE THIS FUNCTION. + // + // If you see an error about overriding the following function or + // about it being private, you have mis-spelled SetUp() as Setup(). + struct Setup_should_be_spelled_SetUp {}; + virtual Setup_should_be_spelled_SetUp* Setup() { return NULL; } + + // We disallow copying Tests. + GTEST_DISALLOW_COPY_AND_ASSIGN_(Test); +}; + +typedef internal::TimeInMillis TimeInMillis; + +// A copyable object representing a user specified test property which can be +// output as a key/value string pair. +// +// Don't inherit from TestProperty as its destructor is not virtual. +class TestProperty { + public: + // C'tor. TestProperty does NOT have a default constructor. + // Always use this constructor (with parameters) to create a + // TestProperty object. + TestProperty(const char* a_key, const char* a_value) : + key_(a_key), value_(a_value) { + } + + // Gets the user supplied key. + const char* key() const { + return key_.c_str(); + } + + // Gets the user supplied value. + const char* value() const { + return value_.c_str(); + } + + // Sets a new value, overriding the one supplied in the constructor. + void SetValue(const char* new_value) { + value_ = new_value; + } + + private: + // The key supplied by the user. + std::string key_; + // The value supplied by the user. + std::string value_; +}; + +// The result of a single Test. This includes a list of +// TestPartResults, a list of TestProperties, a count of how many +// death tests there are in the Test, and how much time it took to run +// the Test. +// +// TestResult is not copyable. +class GTEST_API_ TestResult { + public: + // Creates an empty TestResult. + TestResult(); + + // D'tor. Do not inherit from TestResult. + ~TestResult(); + + // Gets the number of all test parts. This is the sum of the number + // of successful test parts and the number of failed test parts. + int total_part_count() const; + + // Returns the number of the test properties. + int test_property_count() const; + + // Returns true iff the test passed (i.e. no test part failed). + bool Passed() const { return !Failed(); } + + // Returns true iff the test failed. + bool Failed() const; + + // Returns true iff the test fatally failed. + bool HasFatalFailure() const; + + // Returns true iff the test has a non-fatal failure. + bool HasNonfatalFailure() const; + + // Returns the elapsed time, in milliseconds. + TimeInMillis elapsed_time() const { return elapsed_time_; } + + // Returns the i-th test part result among all the results. i can range + // from 0 to test_property_count() - 1. If i is not in that range, aborts + // the program. + const TestPartResult& GetTestPartResult(int i) const; + + // Returns the i-th test property. i can range from 0 to + // test_property_count() - 1. If i is not in that range, aborts the + // program. + const TestProperty& GetTestProperty(int i) const; + + private: + friend class TestInfo; + friend class UnitTest; + friend class internal::DefaultGlobalTestPartResultReporter; + friend class internal::ExecDeathTest; + friend class internal::TestResultAccessor; + friend class internal::UnitTestImpl; + friend class internal::WindowsDeathTest; + + // Gets the vector of TestPartResults. + const std::vector& test_part_results() const { + return test_part_results_; + } + + // Gets the vector of TestProperties. + const std::vector& test_properties() const { + return test_properties_; + } + + // Sets the elapsed time. + void set_elapsed_time(TimeInMillis elapsed) { elapsed_time_ = elapsed; } + + // Adds a test property to the list. The property is validated and may add + // a non-fatal failure if invalid (e.g., if it conflicts with reserved + // key names). If a property is already recorded for the same key, the + // value will be updated, rather than storing multiple values for the same + // key. + void RecordProperty(const TestProperty& test_property); + + // Adds a failure if the key is a reserved attribute of Google Test + // testcase tags. Returns true if the property is valid. + // TODO(russr): Validate attribute names are legal and human readable. + static bool ValidateTestProperty(const TestProperty& test_property); + + // Adds a test part result to the list. + void AddTestPartResult(const TestPartResult& test_part_result); + + // Returns the death test count. + int death_test_count() const { return death_test_count_; } + + // Increments the death test count, returning the new count. + int increment_death_test_count() { return ++death_test_count_; } + + // Clears the test part results. + void ClearTestPartResults(); + + // Clears the object. + void Clear(); + + // Protects mutable state of the property vector and of owned + // properties, whose values may be updated. + internal::Mutex test_properites_mutex_; + + // The vector of TestPartResults + std::vector test_part_results_; + // The vector of TestProperties + std::vector test_properties_; + // Running count of death tests. + int death_test_count_; + // The elapsed time, in milliseconds. + TimeInMillis elapsed_time_; + + // We disallow copying TestResult. + GTEST_DISALLOW_COPY_AND_ASSIGN_(TestResult); +}; // class TestResult + +// A TestInfo object stores the following information about a test: +// +// Test case name +// Test name +// Whether the test should be run +// A function pointer that creates the test object when invoked +// Test result +// +// The constructor of TestInfo registers itself with the UnitTest +// singleton such that the RUN_ALL_TESTS() macro knows which tests to +// run. +class GTEST_API_ TestInfo { + public: + // Destructs a TestInfo object. This function is not virtual, so + // don't inherit from TestInfo. + ~TestInfo(); + + // Returns the test case name. + const char* test_case_name() const { return test_case_name_.c_str(); } + + // Returns the test name. + const char* name() const { return name_.c_str(); } + + // Returns the name of the parameter type, or NULL if this is not a typed + // or a type-parameterized test. + const char* type_param() const { + if (type_param_.get() != NULL) + return type_param_->c_str(); + return NULL; + } + + // Returns the text representation of the value parameter, or NULL if this + // is not a value-parameterized test. + const char* value_param() const { + if (value_param_.get() != NULL) + return value_param_->c_str(); + return NULL; + } + + // Returns true if this test should run, that is if the test is not disabled + // (or it is disabled but the also_run_disabled_tests flag has been specified) + // and its full name matches the user-specified filter. + // + // Google Test allows the user to filter the tests by their full names. + // The full name of a test Bar in test case Foo is defined as + // "Foo.Bar". Only the tests that match the filter will run. + // + // A filter is a colon-separated list of glob (not regex) patterns, + // optionally followed by a '-' and a colon-separated list of + // negative patterns (tests to exclude). A test is run if it + // matches one of the positive patterns and does not match any of + // the negative patterns. + // + // For example, *A*:Foo.* is a filter that matches any string that + // contains the character 'A' or starts with "Foo.". + bool should_run() const { return should_run_; } + + // Returns the result of the test. + const TestResult* result() const { return &result_; } + + private: +#if GTEST_HAS_DEATH_TEST + friend class internal::DefaultDeathTestFactory; +#endif // GTEST_HAS_DEATH_TEST + friend class Test; + friend class TestCase; + friend class internal::UnitTestImpl; + friend TestInfo* internal::MakeAndRegisterTestInfo( + const char* test_case_name, const char* name, + const char* type_param, + const char* value_param, + internal::TypeId fixture_class_id, + Test::SetUpTestCaseFunc set_up_tc, + Test::TearDownTestCaseFunc tear_down_tc, + internal::TestFactoryBase* factory); + + // Constructs a TestInfo object. The newly constructed instance assumes + // ownership of the factory object. + TestInfo(const char* test_case_name, const char* name, + const char* a_type_param, + const char* a_value_param, + internal::TypeId fixture_class_id, + internal::TestFactoryBase* factory); + + // Increments the number of death tests encountered in this test so + // far. + int increment_death_test_count() { + return result_.increment_death_test_count(); + } + + // Creates the test object, runs it, records its result, and then + // deletes it. + void Run(); + + static void ClearTestResult(TestInfo* test_info) { + test_info->result_.Clear(); + } + + // These fields are immutable properties of the test. + const std::string test_case_name_; // Test case name + const std::string name_; // Test name + // Name of the parameter type, or NULL if this is not a typed or a + // type-parameterized test. + const internal::scoped_ptr type_param_; + // Text representation of the value parameter, or NULL if this is not a + // value-parameterized test. + const internal::scoped_ptr value_param_; + const internal::TypeId fixture_class_id_; // ID of the test fixture class + bool should_run_; // True iff this test should run + bool is_disabled_; // True iff this test is disabled + bool matches_filter_; // True if this test matches the + // user-specified filter. + internal::TestFactoryBase* const factory_; // The factory that creates + // the test object + + // This field is mutable and needs to be reset before running the + // test for the second time. + TestResult result_; + + GTEST_DISALLOW_COPY_AND_ASSIGN_(TestInfo); +}; + +// A test case, which consists of a vector of TestInfos. +// +// TestCase is not copyable. +class GTEST_API_ TestCase { + public: + // Creates a TestCase with the given name. + // + // TestCase does NOT have a default constructor. Always use this + // constructor to create a TestCase object. + // + // Arguments: + // + // name: name of the test case + // a_type_param: the name of the test's type parameter, or NULL if + // this is not a type-parameterized test. + // set_up_tc: pointer to the function that sets up the test case + // tear_down_tc: pointer to the function that tears down the test case + TestCase(const char* name, const char* a_type_param, + Test::SetUpTestCaseFunc set_up_tc, + Test::TearDownTestCaseFunc tear_down_tc); + + // Destructor of TestCase. + virtual ~TestCase(); + + // Gets the name of the TestCase. + const char* name() const { return name_.c_str(); } + + // Returns the name of the parameter type, or NULL if this is not a + // type-parameterized test case. + const char* type_param() const { + if (type_param_.get() != NULL) + return type_param_->c_str(); + return NULL; + } + + // Returns true if any test in this test case should run. + bool should_run() const { return should_run_; } + + // Gets the number of successful tests in this test case. + int successful_test_count() const; + + // Gets the number of failed tests in this test case. + int failed_test_count() const; + + // Gets the number of disabled tests in this test case. + int disabled_test_count() const; + + // Get the number of tests in this test case that should run. + int test_to_run_count() const; + + // Gets the number of all tests in this test case. + int total_test_count() const; + + // Returns true iff the test case passed. + bool Passed() const { return !Failed(); } + + // Returns true iff the test case failed. + bool Failed() const { return failed_test_count() > 0; } + + // Returns the elapsed time, in milliseconds. + TimeInMillis elapsed_time() const { return elapsed_time_; } + + // Returns the i-th test among all the tests. i can range from 0 to + // total_test_count() - 1. If i is not in that range, returns NULL. + const TestInfo* GetTestInfo(int i) const; + + private: + friend class Test; + friend class internal::UnitTestImpl; + + // Gets the (mutable) vector of TestInfos in this TestCase. + std::vector& test_info_list() { return test_info_list_; } + + // Gets the (immutable) vector of TestInfos in this TestCase. + const std::vector& test_info_list() const { + return test_info_list_; + } + + // Returns the i-th test among all the tests. i can range from 0 to + // total_test_count() - 1. If i is not in that range, returns NULL. + TestInfo* GetMutableTestInfo(int i); + + // Sets the should_run member. + void set_should_run(bool should) { should_run_ = should; } + + // Adds a TestInfo to this test case. Will delete the TestInfo upon + // destruction of the TestCase object. + void AddTestInfo(TestInfo * test_info); + + // Clears the results of all tests in this test case. + void ClearResult(); + + // Clears the results of all tests in the given test case. + static void ClearTestCaseResult(TestCase* test_case) { + test_case->ClearResult(); + } + + // Runs every test in this TestCase. + void Run(); + + // Runs SetUpTestCase() for this TestCase. This wrapper is needed + // for catching exceptions thrown from SetUpTestCase(). + void RunSetUpTestCase() { (*set_up_tc_)(); } + + // Runs TearDownTestCase() for this TestCase. This wrapper is + // needed for catching exceptions thrown from TearDownTestCase(). + void RunTearDownTestCase() { (*tear_down_tc_)(); } + + // Returns true iff test passed. + static bool TestPassed(const TestInfo* test_info) { + return test_info->should_run() && test_info->result()->Passed(); + } + + // Returns true iff test failed. + static bool TestFailed(const TestInfo* test_info) { + return test_info->should_run() && test_info->result()->Failed(); + } + + // Returns true iff test is disabled. + static bool TestDisabled(const TestInfo* test_info) { + return test_info->is_disabled_; + } + + // Returns true if the given test should run. + static bool ShouldRunTest(const TestInfo* test_info) { + return test_info->should_run(); + } + + // Shuffles the tests in this test case. + void ShuffleTests(internal::Random* random); + + // Restores the test order to before the first shuffle. + void UnshuffleTests(); + + // Name of the test case. + std::string name_; + // Name of the parameter type, or NULL if this is not a typed or a + // type-parameterized test. + const internal::scoped_ptr type_param_; + // The vector of TestInfos in their original order. It owns the + // elements in the vector. + std::vector test_info_list_; + // Provides a level of indirection for the test list to allow easy + // shuffling and restoring the test order. The i-th element in this + // vector is the index of the i-th test in the shuffled test list. + std::vector test_indices_; + // Pointer to the function that sets up the test case. + Test::SetUpTestCaseFunc set_up_tc_; + // Pointer to the function that tears down the test case. + Test::TearDownTestCaseFunc tear_down_tc_; + // True iff any test in this test case should run. + bool should_run_; + // Elapsed time, in milliseconds. + TimeInMillis elapsed_time_; + + // We disallow copying TestCases. + GTEST_DISALLOW_COPY_AND_ASSIGN_(TestCase); +}; + +// An Environment object is capable of setting up and tearing down an +// environment. The user should subclass this to define his own +// environment(s). +// +// An Environment object does the set-up and tear-down in virtual +// methods SetUp() and TearDown() instead of the constructor and the +// destructor, as: +// +// 1. You cannot safely throw from a destructor. This is a problem +// as in some cases Google Test is used where exceptions are enabled, and +// we may want to implement ASSERT_* using exceptions where they are +// available. +// 2. You cannot use ASSERT_* directly in a constructor or +// destructor. +class Environment { + public: + // The d'tor is virtual as we need to subclass Environment. + virtual ~Environment() {} + + // Override this to define how to set up the environment. + virtual void SetUp() {} + + // Override this to define how to tear down the environment. + virtual void TearDown() {} + private: + // If you see an error about overriding the following function or + // about it being private, you have mis-spelled SetUp() as Setup(). + struct Setup_should_be_spelled_SetUp {}; + virtual Setup_should_be_spelled_SetUp* Setup() { return NULL; } +}; + +// The interface for tracing execution of tests. The methods are organized in +// the order the corresponding events are fired. +class TestEventListener { + public: + virtual ~TestEventListener() {} + + // Fired before any test activity starts. + virtual void OnTestProgramStart(const UnitTest& unit_test) = 0; + + // Fired before each iteration of tests starts. There may be more than + // one iteration if GTEST_FLAG(repeat) is set. iteration is the iteration + // index, starting from 0. + virtual void OnTestIterationStart(const UnitTest& unit_test, + int iteration) = 0; + + // Fired before environment set-up for each iteration of tests starts. + virtual void OnEnvironmentsSetUpStart(const UnitTest& unit_test) = 0; + + // Fired after environment set-up for each iteration of tests ends. + virtual void OnEnvironmentsSetUpEnd(const UnitTest& unit_test) = 0; + + // Fired before the test case starts. + virtual void OnTestCaseStart(const TestCase& test_case) = 0; + + // Fired before the test starts. + virtual void OnTestStart(const TestInfo& test_info) = 0; + + // Fired after a failed assertion or a SUCCEED() invocation. + virtual void OnTestPartResult(const TestPartResult& test_part_result) = 0; + + // Fired after the test ends. + virtual void OnTestEnd(const TestInfo& test_info) = 0; + + // Fired after the test case ends. + virtual void OnTestCaseEnd(const TestCase& test_case) = 0; + + // Fired before environment tear-down for each iteration of tests starts. + virtual void OnEnvironmentsTearDownStart(const UnitTest& unit_test) = 0; + + // Fired after environment tear-down for each iteration of tests ends. + virtual void OnEnvironmentsTearDownEnd(const UnitTest& unit_test) = 0; + + // Fired after each iteration of tests finishes. + virtual void OnTestIterationEnd(const UnitTest& unit_test, + int iteration) = 0; + + // Fired after all test activities have ended. + virtual void OnTestProgramEnd(const UnitTest& unit_test) = 0; +}; + +// The convenience class for users who need to override just one or two +// methods and are not concerned that a possible change to a signature of +// the methods they override will not be caught during the build. For +// comments about each method please see the definition of TestEventListener +// above. +class EmptyTestEventListener : public TestEventListener { + public: + virtual void OnTestProgramStart(const UnitTest& /*unit_test*/) {} + virtual void OnTestIterationStart(const UnitTest& /*unit_test*/, + int /*iteration*/) {} + virtual void OnEnvironmentsSetUpStart(const UnitTest& /*unit_test*/) {} + virtual void OnEnvironmentsSetUpEnd(const UnitTest& /*unit_test*/) {} + virtual void OnTestCaseStart(const TestCase& /*test_case*/) {} + virtual void OnTestStart(const TestInfo& /*test_info*/) {} + virtual void OnTestPartResult(const TestPartResult& /*test_part_result*/) {} + virtual void OnTestEnd(const TestInfo& /*test_info*/) {} + virtual void OnTestCaseEnd(const TestCase& /*test_case*/) {} + virtual void OnEnvironmentsTearDownStart(const UnitTest& /*unit_test*/) {} + virtual void OnEnvironmentsTearDownEnd(const UnitTest& /*unit_test*/) {} + virtual void OnTestIterationEnd(const UnitTest& /*unit_test*/, + int /*iteration*/) {} + virtual void OnTestProgramEnd(const UnitTest& /*unit_test*/) {} +}; + +// TestEventListeners lets users add listeners to track events in Google Test. +class GTEST_API_ TestEventListeners { + public: + TestEventListeners(); + ~TestEventListeners(); + + // Appends an event listener to the end of the list. Google Test assumes + // the ownership of the listener (i.e. it will delete the listener when + // the test program finishes). + void Append(TestEventListener* listener); + + // Removes the given event listener from the list and returns it. It then + // becomes the caller's responsibility to delete the listener. Returns + // NULL if the listener is not found in the list. + TestEventListener* Release(TestEventListener* listener); + + // Returns the standard listener responsible for the default console + // output. Can be removed from the listeners list to shut down default + // console output. Note that removing this object from the listener list + // with Release transfers its ownership to the caller and makes this + // function return NULL the next time. + TestEventListener* default_result_printer() const { + return default_result_printer_; + } + + // Returns the standard listener responsible for the default XML output + // controlled by the --gtest_output=xml flag. Can be removed from the + // listeners list by users who want to shut down the default XML output + // controlled by this flag and substitute it with custom one. Note that + // removing this object from the listener list with Release transfers its + // ownership to the caller and makes this function return NULL the next + // time. + TestEventListener* default_xml_generator() const { + return default_xml_generator_; + } + + private: + friend class TestCase; + friend class TestInfo; + friend class internal::DefaultGlobalTestPartResultReporter; + friend class internal::NoExecDeathTest; + friend class internal::TestEventListenersAccessor; + friend class internal::UnitTestImpl; + + // Returns repeater that broadcasts the TestEventListener events to all + // subscribers. + TestEventListener* repeater(); + + // Sets the default_result_printer attribute to the provided listener. + // The listener is also added to the listener list and previous + // default_result_printer is removed from it and deleted. The listener can + // also be NULL in which case it will not be added to the list. Does + // nothing if the previous and the current listener objects are the same. + void SetDefaultResultPrinter(TestEventListener* listener); + + // Sets the default_xml_generator attribute to the provided listener. The + // listener is also added to the listener list and previous + // default_xml_generator is removed from it and deleted. The listener can + // also be NULL in which case it will not be added to the list. Does + // nothing if the previous and the current listener objects are the same. + void SetDefaultXmlGenerator(TestEventListener* listener); + + // Controls whether events will be forwarded by the repeater to the + // listeners in the list. + bool EventForwardingEnabled() const; + void SuppressEventForwarding(); + + // The actual list of listeners. + internal::TestEventRepeater* repeater_; + // Listener responsible for the standard result output. + TestEventListener* default_result_printer_; + // Listener responsible for the creation of the XML output file. + TestEventListener* default_xml_generator_; + + // We disallow copying TestEventListeners. + GTEST_DISALLOW_COPY_AND_ASSIGN_(TestEventListeners); +}; + +// A UnitTest consists of a vector of TestCases. +// +// This is a singleton class. The only instance of UnitTest is +// created when UnitTest::GetInstance() is first called. This +// instance is never deleted. +// +// UnitTest is not copyable. +// +// This class is thread-safe as long as the methods are called +// according to their specification. +class GTEST_API_ UnitTest { + public: + // Gets the singleton UnitTest object. The first time this method + // is called, a UnitTest object is constructed and returned. + // Consecutive calls will return the same object. + static UnitTest* GetInstance(); + + // Runs all tests in this UnitTest object and prints the result. + // Returns 0 if successful, or 1 otherwise. + // + // This method can only be called from the main thread. + // + // INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM. + int Run() GTEST_MUST_USE_RESULT_; + + // Returns the working directory when the first TEST() or TEST_F() + // was executed. The UnitTest object owns the string. + const char* original_working_dir() const; + + // Returns the TestCase object for the test that's currently running, + // or NULL if no test is running. + const TestCase* current_test_case() const + GTEST_LOCK_EXCLUDED_(mutex_); + + // Returns the TestInfo object for the test that's currently running, + // or NULL if no test is running. + const TestInfo* current_test_info() const + GTEST_LOCK_EXCLUDED_(mutex_); + + // Returns the random seed used at the start of the current test run. + int random_seed() const; + +#if GTEST_HAS_PARAM_TEST + // Returns the ParameterizedTestCaseRegistry object used to keep track of + // value-parameterized tests and instantiate and register them. + // + // INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM. + internal::ParameterizedTestCaseRegistry& parameterized_test_registry() + GTEST_LOCK_EXCLUDED_(mutex_); +#endif // GTEST_HAS_PARAM_TEST + + // Gets the number of successful test cases. + int successful_test_case_count() const; + + // Gets the number of failed test cases. + int failed_test_case_count() const; + + // Gets the number of all test cases. + int total_test_case_count() const; + + // Gets the number of all test cases that contain at least one test + // that should run. + int test_case_to_run_count() const; + + // Gets the number of successful tests. + int successful_test_count() const; + + // Gets the number of failed tests. + int failed_test_count() const; + + // Gets the number of disabled tests. + int disabled_test_count() const; + + // Gets the number of all tests. + int total_test_count() const; + + // Gets the number of tests that should run. + int test_to_run_count() const; + + // Gets the time of the test program start, in ms from the start of the + // UNIX epoch. + TimeInMillis start_timestamp() const; + + // Gets the elapsed time, in milliseconds. + TimeInMillis elapsed_time() const; + + // Returns true iff the unit test passed (i.e. all test cases passed). + bool Passed() const; + + // Returns true iff the unit test failed (i.e. some test case failed + // or something outside of all tests failed). + bool Failed() const; + + // Gets the i-th test case among all the test cases. i can range from 0 to + // total_test_case_count() - 1. If i is not in that range, returns NULL. + const TestCase* GetTestCase(int i) const; + + // Returns the list of event listeners that can be used to track events + // inside Google Test. + TestEventListeners& listeners(); + + private: + // Registers and returns a global test environment. When a test + // program is run, all global test environments will be set-up in + // the order they were registered. After all tests in the program + // have finished, all global test environments will be torn-down in + // the *reverse* order they were registered. + // + // The UnitTest object takes ownership of the given environment. + // + // This method can only be called from the main thread. + Environment* AddEnvironment(Environment* env); + + // Adds a TestPartResult to the current TestResult object. All + // Google Test assertion macros (e.g. ASSERT_TRUE, EXPECT_EQ, etc) + // eventually call this to report their results. The user code + // should use the assertion macros instead of calling this directly. + void AddTestPartResult(TestPartResult::Type result_type, + const char* file_name, + int line_number, + const std::string& message, + const std::string& os_stack_trace) + GTEST_LOCK_EXCLUDED_(mutex_); + + // Adds a TestProperty to the current TestResult object. If the result already + // contains a property with the same key, the value will be updated. + void RecordPropertyForCurrentTest(const char* key, const char* value); + + // Gets the i-th test case among all the test cases. i can range from 0 to + // total_test_case_count() - 1. If i is not in that range, returns NULL. + TestCase* GetMutableTestCase(int i); + + // Accessors for the implementation object. + internal::UnitTestImpl* impl() { return impl_; } + const internal::UnitTestImpl* impl() const { return impl_; } + + // These classes and funcions are friends as they need to access private + // members of UnitTest. + friend class Test; + friend class internal::AssertHelper; + friend class internal::ScopedTrace; + friend Environment* AddGlobalTestEnvironment(Environment* env); + friend internal::UnitTestImpl* internal::GetUnitTestImpl(); + friend void internal::ReportFailureInUnknownLocation( + TestPartResult::Type result_type, + const std::string& message); + + // Creates an empty UnitTest. + UnitTest(); + + // D'tor + virtual ~UnitTest(); + + // Pushes a trace defined by SCOPED_TRACE() on to the per-thread + // Google Test trace stack. + void PushGTestTrace(const internal::TraceInfo& trace) + GTEST_LOCK_EXCLUDED_(mutex_); + + // Pops a trace from the per-thread Google Test trace stack. + void PopGTestTrace() + GTEST_LOCK_EXCLUDED_(mutex_); + + // Protects mutable state in *impl_. This is mutable as some const + // methods need to lock it too. + mutable internal::Mutex mutex_; + + // Opaque implementation object. This field is never changed once + // the object is constructed. We don't mark it as const here, as + // doing so will cause a warning in the constructor of UnitTest. + // Mutable state in *impl_ is protected by mutex_. + internal::UnitTestImpl* impl_; + + // We disallow copying UnitTest. + GTEST_DISALLOW_COPY_AND_ASSIGN_(UnitTest); +}; + +// A convenient wrapper for adding an environment for the test +// program. +// +// You should call this before RUN_ALL_TESTS() is called, probably in +// main(). If you use gtest_main, you need to call this before main() +// starts for it to take effect. For example, you can define a global +// variable like this: +// +// testing::Environment* const foo_env = +// testing::AddGlobalTestEnvironment(new FooEnvironment); +// +// However, we strongly recommend you to write your own main() and +// call AddGlobalTestEnvironment() there, as relying on initialization +// of global variables makes the code harder to read and may cause +// problems when you register multiple environments from different +// translation units and the environments have dependencies among them +// (remember that the compiler doesn't guarantee the order in which +// global variables from different translation units are initialized). +inline Environment* AddGlobalTestEnvironment(Environment* env) { + return UnitTest::GetInstance()->AddEnvironment(env); +} + +// Initializes Google Test. This must be called before calling +// RUN_ALL_TESTS(). In particular, it parses a command line for the +// flags that Google Test recognizes. Whenever a Google Test flag is +// seen, it is removed from argv, and *argc is decremented. +// +// No value is returned. Instead, the Google Test flag variables are +// updated. +// +// Calling the function for the second time has no user-visible effect. +GTEST_API_ void InitGoogleTest(int* argc, char** argv); + +// This overloaded version can be used in Windows programs compiled in +// UNICODE mode. +GTEST_API_ void InitGoogleTest(int* argc, wchar_t** argv); + +namespace internal { + +// FormatForComparison::Format(value) formats a +// value of type ToPrint that is an operand of a comparison assertion +// (e.g. ASSERT_EQ). OtherOperand is the type of the other operand in +// the comparison, and is used to help determine the best way to +// format the value. In particular, when the value is a C string +// (char pointer) and the other operand is an STL string object, we +// want to format the C string as a string, since we know it is +// compared by value with the string object. If the value is a char +// pointer but the other operand is not an STL string object, we don't +// know whether the pointer is supposed to point to a NUL-terminated +// string, and thus want to print it as a pointer to be safe. +// +// INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM. + +// The default case. +template +class FormatForComparison { + public: + static ::std::string Format(const ToPrint& value) { + return ::testing::PrintToString(value); + } +}; + +// Array. +template +class FormatForComparison { + public: + static ::std::string Format(const ToPrint* value) { + return FormatForComparison::Format(value); + } +}; + +// By default, print C string as pointers to be safe, as we don't know +// whether they actually point to a NUL-terminated string. + +#define GTEST_IMPL_FORMAT_C_STRING_AS_POINTER_(CharType) \ + template \ + class FormatForComparison { \ + public: \ + static ::std::string Format(CharType* value) { \ + return ::testing::PrintToString(static_cast(value)); \ + } \ + } + +GTEST_IMPL_FORMAT_C_STRING_AS_POINTER_(char); +GTEST_IMPL_FORMAT_C_STRING_AS_POINTER_(const char); +GTEST_IMPL_FORMAT_C_STRING_AS_POINTER_(wchar_t); +GTEST_IMPL_FORMAT_C_STRING_AS_POINTER_(const wchar_t); + +#undef GTEST_IMPL_FORMAT_C_STRING_AS_POINTER_ + +// If a C string is compared with an STL string object, we know it's meant +// to point to a NUL-terminated string, and thus can print it as a string. + +#define GTEST_IMPL_FORMAT_C_STRING_AS_STRING_(CharType, OtherStringType) \ + template <> \ + class FormatForComparison { \ + public: \ + static ::std::string Format(CharType* value) { \ + return ::testing::PrintToString(value); \ + } \ + } + +GTEST_IMPL_FORMAT_C_STRING_AS_STRING_(char, ::std::string); +GTEST_IMPL_FORMAT_C_STRING_AS_STRING_(const char, ::std::string); + +#if GTEST_HAS_GLOBAL_STRING +GTEST_IMPL_FORMAT_C_STRING_AS_STRING_(char, ::string); +GTEST_IMPL_FORMAT_C_STRING_AS_STRING_(const char, ::string); +#endif + +#if GTEST_HAS_GLOBAL_WSTRING +GTEST_IMPL_FORMAT_C_STRING_AS_STRING_(wchar_t, ::wstring); +GTEST_IMPL_FORMAT_C_STRING_AS_STRING_(const wchar_t, ::wstring); +#endif + +#if GTEST_HAS_STD_WSTRING +GTEST_IMPL_FORMAT_C_STRING_AS_STRING_(wchar_t, ::std::wstring); +GTEST_IMPL_FORMAT_C_STRING_AS_STRING_(const wchar_t, ::std::wstring); +#endif + +#undef GTEST_IMPL_FORMAT_C_STRING_AS_STRING_ + +// Formats a comparison assertion (e.g. ASSERT_EQ, EXPECT_LT, and etc) +// operand to be used in a failure message. The type (but not value) +// of the other operand may affect the format. This allows us to +// print a char* as a raw pointer when it is compared against another +// char* or void*, and print it as a C string when it is compared +// against an std::string object, for example. +// +// INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM. +template +std::string FormatForComparisonFailureMessage( + const T1& value, const T2& /* other_operand */) { + return FormatForComparison::Format(value); +} + +// The helper function for {ASSERT|EXPECT}_EQ. +template +AssertionResult CmpHelperEQ(const char* expected_expression, + const char* actual_expression, + const T1& expected, + const T2& actual) { +#ifdef _MSC_VER +# pragma warning(push) // Saves the current warning state. +# pragma warning(disable:4389) // Temporarily disables warning on + // signed/unsigned mismatch. +#endif + + if (expected == actual) { + return AssertionSuccess(); + } + +#ifdef _MSC_VER +# pragma warning(pop) // Restores the warning state. +#endif + + return EqFailure(expected_expression, + actual_expression, + FormatForComparisonFailureMessage(expected, actual), + FormatForComparisonFailureMessage(actual, expected), + false); +} + +// With this overloaded version, we allow anonymous enums to be used +// in {ASSERT|EXPECT}_EQ when compiled with gcc 4, as anonymous enums +// can be implicitly cast to BiggestInt. +GTEST_API_ AssertionResult CmpHelperEQ(const char* expected_expression, + const char* actual_expression, + BiggestInt expected, + BiggestInt actual); + +// The helper class for {ASSERT|EXPECT}_EQ. The template argument +// lhs_is_null_literal is true iff the first argument to ASSERT_EQ() +// is a null pointer literal. The following default implementation is +// for lhs_is_null_literal being false. +template +class EqHelper { + public: + // This templatized version is for the general case. + template + static AssertionResult Compare(const char* expected_expression, + const char* actual_expression, + const T1& expected, + const T2& actual) { + return CmpHelperEQ(expected_expression, actual_expression, expected, + actual); + } + + // With this overloaded version, we allow anonymous enums to be used + // in {ASSERT|EXPECT}_EQ when compiled with gcc 4, as anonymous + // enums can be implicitly cast to BiggestInt. + // + // Even though its body looks the same as the above version, we + // cannot merge the two, as it will make anonymous enums unhappy. + static AssertionResult Compare(const char* expected_expression, + const char* actual_expression, + BiggestInt expected, + BiggestInt actual) { + return CmpHelperEQ(expected_expression, actual_expression, expected, + actual); + } +}; + +// This specialization is used when the first argument to ASSERT_EQ() +// is a null pointer literal, like NULL, false, or 0. +template <> +class EqHelper { + public: + // We define two overloaded versions of Compare(). The first + // version will be picked when the second argument to ASSERT_EQ() is + // NOT a pointer, e.g. ASSERT_EQ(0, AnIntFunction()) or + // EXPECT_EQ(false, a_bool). + template + static AssertionResult Compare( + const char* expected_expression, + const char* actual_expression, + const T1& expected, + const T2& actual, + // The following line prevents this overload from being considered if T2 + // is not a pointer type. We need this because ASSERT_EQ(NULL, my_ptr) + // expands to Compare("", "", NULL, my_ptr), which requires a conversion + // to match the Secret* in the other overload, which would otherwise make + // this template match better. + typename EnableIf::value>::type* = 0) { + return CmpHelperEQ(expected_expression, actual_expression, expected, + actual); + } + + // This version will be picked when the second argument to ASSERT_EQ() is a + // pointer, e.g. ASSERT_EQ(NULL, a_pointer). + template + static AssertionResult Compare( + const char* expected_expression, + const char* actual_expression, + // We used to have a second template parameter instead of Secret*. That + // template parameter would deduce to 'long', making this a better match + // than the first overload even without the first overload's EnableIf. + // Unfortunately, gcc with -Wconversion-null warns when "passing NULL to + // non-pointer argument" (even a deduced integral argument), so the old + // implementation caused warnings in user code. + Secret* /* expected (NULL) */, + T* actual) { + // We already know that 'expected' is a null pointer. + return CmpHelperEQ(expected_expression, actual_expression, + static_cast(NULL), actual); + } +}; + +// A macro for implementing the helper functions needed to implement +// ASSERT_?? and EXPECT_??. It is here just to avoid copy-and-paste +// of similar code. +// +// For each templatized helper function, we also define an overloaded +// version for BiggestInt in order to reduce code bloat and allow +// anonymous enums to be used with {ASSERT|EXPECT}_?? when compiled +// with gcc 4. +// +// INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM. +#define GTEST_IMPL_CMP_HELPER_(op_name, op)\ +template \ +AssertionResult CmpHelper##op_name(const char* expr1, const char* expr2, \ + const T1& val1, const T2& val2) {\ + if (val1 op val2) {\ + return AssertionSuccess();\ + } else {\ + return AssertionFailure() \ + << "Expected: (" << expr1 << ") " #op " (" << expr2\ + << "), actual: " << FormatForComparisonFailureMessage(val1, val2)\ + << " vs " << FormatForComparisonFailureMessage(val2, val1);\ + }\ +}\ +GTEST_API_ AssertionResult CmpHelper##op_name(\ + const char* expr1, const char* expr2, BiggestInt val1, BiggestInt val2) + +// INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM. + +// Implements the helper function for {ASSERT|EXPECT}_NE +GTEST_IMPL_CMP_HELPER_(NE, !=); +// Implements the helper function for {ASSERT|EXPECT}_LE +GTEST_IMPL_CMP_HELPER_(LE, <=); +// Implements the helper function for {ASSERT|EXPECT}_LT +GTEST_IMPL_CMP_HELPER_(LT, <); +// Implements the helper function for {ASSERT|EXPECT}_GE +GTEST_IMPL_CMP_HELPER_(GE, >=); +// Implements the helper function for {ASSERT|EXPECT}_GT +GTEST_IMPL_CMP_HELPER_(GT, >); + +#undef GTEST_IMPL_CMP_HELPER_ + +// The helper function for {ASSERT|EXPECT}_STREQ. +// +// INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM. +GTEST_API_ AssertionResult CmpHelperSTREQ(const char* expected_expression, + const char* actual_expression, + const char* expected, + const char* actual); + +// The helper function for {ASSERT|EXPECT}_STRCASEEQ. +// +// INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM. +GTEST_API_ AssertionResult CmpHelperSTRCASEEQ(const char* expected_expression, + const char* actual_expression, + const char* expected, + const char* actual); + +// The helper function for {ASSERT|EXPECT}_STRNE. +// +// INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM. +GTEST_API_ AssertionResult CmpHelperSTRNE(const char* s1_expression, + const char* s2_expression, + const char* s1, + const char* s2); + +// The helper function for {ASSERT|EXPECT}_STRCASENE. +// +// INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM. +GTEST_API_ AssertionResult CmpHelperSTRCASENE(const char* s1_expression, + const char* s2_expression, + const char* s1, + const char* s2); + + +// Helper function for *_STREQ on wide strings. +// +// INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM. +GTEST_API_ AssertionResult CmpHelperSTREQ(const char* expected_expression, + const char* actual_expression, + const wchar_t* expected, + const wchar_t* actual); + +// Helper function for *_STRNE on wide strings. +// +// INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM. +GTEST_API_ AssertionResult CmpHelperSTRNE(const char* s1_expression, + const char* s2_expression, + const wchar_t* s1, + const wchar_t* s2); + +} // namespace internal + +// IsSubstring() and IsNotSubstring() are intended to be used as the +// first argument to {EXPECT,ASSERT}_PRED_FORMAT2(), not by +// themselves. They check whether needle is a substring of haystack +// (NULL is considered a substring of itself only), and return an +// appropriate error message when they fail. +// +// The {needle,haystack}_expr arguments are the stringified +// expressions that generated the two real arguments. +GTEST_API_ AssertionResult IsSubstring( + const char* needle_expr, const char* haystack_expr, + const char* needle, const char* haystack); +GTEST_API_ AssertionResult IsSubstring( + const char* needle_expr, const char* haystack_expr, + const wchar_t* needle, const wchar_t* haystack); +GTEST_API_ AssertionResult IsNotSubstring( + const char* needle_expr, const char* haystack_expr, + const char* needle, const char* haystack); +GTEST_API_ AssertionResult IsNotSubstring( + const char* needle_expr, const char* haystack_expr, + const wchar_t* needle, const wchar_t* haystack); +GTEST_API_ AssertionResult IsSubstring( + const char* needle_expr, const char* haystack_expr, + const ::std::string& needle, const ::std::string& haystack); +GTEST_API_ AssertionResult IsNotSubstring( + const char* needle_expr, const char* haystack_expr, + const ::std::string& needle, const ::std::string& haystack); + +#if GTEST_HAS_STD_WSTRING +GTEST_API_ AssertionResult IsSubstring( + const char* needle_expr, const char* haystack_expr, + const ::std::wstring& needle, const ::std::wstring& haystack); +GTEST_API_ AssertionResult IsNotSubstring( + const char* needle_expr, const char* haystack_expr, + const ::std::wstring& needle, const ::std::wstring& haystack); +#endif // GTEST_HAS_STD_WSTRING + +namespace internal { + +// Helper template function for comparing floating-points. +// +// Template parameter: +// +// RawType: the raw floating-point type (either float or double) +// +// INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM. +template +AssertionResult CmpHelperFloatingPointEQ(const char* expected_expression, + const char* actual_expression, + RawType expected, + RawType actual) { + const FloatingPoint lhs(expected), rhs(actual); + + if (lhs.AlmostEquals(rhs)) { + return AssertionSuccess(); + } + + ::std::stringstream expected_ss; + expected_ss << std::setprecision(std::numeric_limits::digits10 + 2) + << expected; + + ::std::stringstream actual_ss; + actual_ss << std::setprecision(std::numeric_limits::digits10 + 2) + << actual; + + return EqFailure(expected_expression, + actual_expression, + StringStreamToString(&expected_ss), + StringStreamToString(&actual_ss), + false); +} + +// Helper function for implementing ASSERT_NEAR. +// +// INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM. +GTEST_API_ AssertionResult DoubleNearPredFormat(const char* expr1, + const char* expr2, + const char* abs_error_expr, + double val1, + double val2, + double abs_error); + +// INTERNAL IMPLEMENTATION - DO NOT USE IN USER CODE. +// A class that enables one to stream messages to assertion macros +class GTEST_API_ AssertHelper { + public: + // Constructor. + AssertHelper(TestPartResult::Type type, + const char* file, + int line, + const char* message); + ~AssertHelper(); + + // Message assignment is a semantic trick to enable assertion + // streaming; see the GTEST_MESSAGE_ macro below. + void operator=(const Message& message) const; + + private: + // We put our data in a struct so that the size of the AssertHelper class can + // be as small as possible. This is important because gcc is incapable of + // re-using stack space even for temporary variables, so every EXPECT_EQ + // reserves stack space for another AssertHelper. + struct AssertHelperData { + AssertHelperData(TestPartResult::Type t, + const char* srcfile, + int line_num, + const char* msg) + : type(t), file(srcfile), line(line_num), message(msg) { } + + TestPartResult::Type const type; + const char* const file; + int const line; + std::string const message; + + private: + GTEST_DISALLOW_COPY_AND_ASSIGN_(AssertHelperData); + }; + + AssertHelperData* const data_; + + GTEST_DISALLOW_COPY_AND_ASSIGN_(AssertHelper); +}; + +} // namespace internal + +#if GTEST_HAS_PARAM_TEST +// The pure interface class that all value-parameterized tests inherit from. +// A value-parameterized class must inherit from both ::testing::Test and +// ::testing::WithParamInterface. In most cases that just means inheriting +// from ::testing::TestWithParam, but more complicated test hierarchies +// may need to inherit from Test and WithParamInterface at different levels. +// +// This interface has support for accessing the test parameter value via +// the GetParam() method. +// +// Use it with one of the parameter generator defining functions, like Range(), +// Values(), ValuesIn(), Bool(), and Combine(). +// +// class FooTest : public ::testing::TestWithParam { +// protected: +// FooTest() { +// // Can use GetParam() here. +// } +// virtual ~FooTest() { +// // Can use GetParam() here. +// } +// virtual void SetUp() { +// // Can use GetParam() here. +// } +// virtual void TearDown { +// // Can use GetParam() here. +// } +// }; +// TEST_P(FooTest, DoesBar) { +// // Can use GetParam() method here. +// Foo foo; +// ASSERT_TRUE(foo.DoesBar(GetParam())); +// } +// INSTANTIATE_TEST_CASE_P(OneToTenRange, FooTest, ::testing::Range(1, 10)); + +template +class WithParamInterface { + public: + typedef T ParamType; + virtual ~WithParamInterface() {} + + // The current parameter value. Is also available in the test fixture's + // constructor. This member function is non-static, even though it only + // references static data, to reduce the opportunity for incorrect uses + // like writing 'WithParamInterface::GetParam()' for a test that + // uses a fixture whose parameter type is int. + const ParamType& GetParam() const { return *parameter_; } + + private: + // Sets parameter value. The caller is responsible for making sure the value + // remains alive and unchanged throughout the current test. + static void SetParam(const ParamType* parameter) { + parameter_ = parameter; + } + + // Static value used for accessing parameter during a test lifetime. + static const ParamType* parameter_; + + // TestClass must be a subclass of WithParamInterface and Test. + template friend class internal::ParameterizedTestFactory; +}; + +template +const T* WithParamInterface::parameter_ = NULL; + +// Most value-parameterized classes can ignore the existence of +// WithParamInterface, and can just inherit from ::testing::TestWithParam. + +template +class TestWithParam : public Test, public WithParamInterface { +}; + +#endif // GTEST_HAS_PARAM_TEST + +// Macros for indicating success/failure in test code. + +// ADD_FAILURE unconditionally adds a failure to the current test. +// SUCCEED generates a success - it doesn't automatically make the +// current test successful, as a test is only successful when it has +// no failure. +// +// EXPECT_* verifies that a certain condition is satisfied. If not, +// it behaves like ADD_FAILURE. In particular: +// +// EXPECT_TRUE verifies that a Boolean condition is true. +// EXPECT_FALSE verifies that a Boolean condition is false. +// +// FAIL and ASSERT_* are similar to ADD_FAILURE and EXPECT_*, except +// that they will also abort the current function on failure. People +// usually want the fail-fast behavior of FAIL and ASSERT_*, but those +// writing data-driven tests often find themselves using ADD_FAILURE +// and EXPECT_* more. + +// Generates a nonfatal failure with a generic message. +#define ADD_FAILURE() GTEST_NONFATAL_FAILURE_("Failed") + +// Generates a nonfatal failure at the given source file location with +// a generic message. +#define ADD_FAILURE_AT(file, line) \ + GTEST_MESSAGE_AT_(file, line, "Failed", \ + ::testing::TestPartResult::kNonFatalFailure) + +// Generates a fatal failure with a generic message. +#define GTEST_FAIL() GTEST_FATAL_FAILURE_("Failed") + +// Define this macro to 1 to omit the definition of FAIL(), which is a +// generic name and clashes with some other libraries. +#if !GTEST_DONT_DEFINE_FAIL +# define FAIL() GTEST_FAIL() +#endif + +// Generates a success with a generic message. +#define GTEST_SUCCEED() GTEST_SUCCESS_("Succeeded") + +// Define this macro to 1 to omit the definition of SUCCEED(), which +// is a generic name and clashes with some other libraries. +#if !GTEST_DONT_DEFINE_SUCCEED +# define SUCCEED() GTEST_SUCCEED() +#endif + +// Macros for testing exceptions. +// +// * {ASSERT|EXPECT}_THROW(statement, expected_exception): +// Tests that the statement throws the expected exception. +// * {ASSERT|EXPECT}_NO_THROW(statement): +// Tests that the statement doesn't throw any exception. +// * {ASSERT|EXPECT}_ANY_THROW(statement): +// Tests that the statement throws an exception. + +#define EXPECT_THROW(statement, expected_exception) \ + GTEST_TEST_THROW_(statement, expected_exception, GTEST_NONFATAL_FAILURE_) +#define EXPECT_NO_THROW(statement) \ + GTEST_TEST_NO_THROW_(statement, GTEST_NONFATAL_FAILURE_) +#define EXPECT_ANY_THROW(statement) \ + GTEST_TEST_ANY_THROW_(statement, GTEST_NONFATAL_FAILURE_) +#define ASSERT_THROW(statement, expected_exception) \ + GTEST_TEST_THROW_(statement, expected_exception, GTEST_FATAL_FAILURE_) +#define ASSERT_NO_THROW(statement) \ + GTEST_TEST_NO_THROW_(statement, GTEST_FATAL_FAILURE_) +#define ASSERT_ANY_THROW(statement) \ + GTEST_TEST_ANY_THROW_(statement, GTEST_FATAL_FAILURE_) + +// Boolean assertions. Condition can be either a Boolean expression or an +// AssertionResult. For more information on how to use AssertionResult with +// these macros see comments on that class. +#define EXPECT_TRUE(condition) \ + GTEST_TEST_BOOLEAN_(condition, #condition, false, true, \ + GTEST_NONFATAL_FAILURE_) +#define EXPECT_FALSE(condition) \ + GTEST_TEST_BOOLEAN_(!(condition), #condition, true, false, \ + GTEST_NONFATAL_FAILURE_) +#define ASSERT_TRUE(condition) \ + GTEST_TEST_BOOLEAN_(condition, #condition, false, true, \ + GTEST_FATAL_FAILURE_) +#define ASSERT_FALSE(condition) \ + GTEST_TEST_BOOLEAN_(!(condition), #condition, true, false, \ + GTEST_FATAL_FAILURE_) + +// Includes the auto-generated header that implements a family of +// generic predicate assertion macros. +// Copyright 2006, Google Inc. +// All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +// This file is AUTOMATICALLY GENERATED on 10/31/2011 by command +// 'gen_gtest_pred_impl.py 5'. DO NOT EDIT BY HAND! +// +// Implements a family of generic predicate assertion macros. + +#ifndef GTEST_INCLUDE_GTEST_GTEST_PRED_IMPL_H_ +#define GTEST_INCLUDE_GTEST_GTEST_PRED_IMPL_H_ + +// Makes sure this header is not included before gtest.h. +#ifndef GTEST_INCLUDE_GTEST_GTEST_H_ +# error Do not include gtest_pred_impl.h directly. Include gtest.h instead. +#endif // GTEST_INCLUDE_GTEST_GTEST_H_ + +// This header implements a family of generic predicate assertion +// macros: +// +// ASSERT_PRED_FORMAT1(pred_format, v1) +// ASSERT_PRED_FORMAT2(pred_format, v1, v2) +// ... +// +// where pred_format is a function or functor that takes n (in the +// case of ASSERT_PRED_FORMATn) values and their source expression +// text, and returns a testing::AssertionResult. See the definition +// of ASSERT_EQ in gtest.h for an example. +// +// If you don't care about formatting, you can use the more +// restrictive version: +// +// ASSERT_PRED1(pred, v1) +// ASSERT_PRED2(pred, v1, v2) +// ... +// +// where pred is an n-ary function or functor that returns bool, +// and the values v1, v2, ..., must support the << operator for +// streaming to std::ostream. +// +// We also define the EXPECT_* variations. +// +// For now we only support predicates whose arity is at most 5. +// Please email googletestframework@googlegroups.com if you need +// support for higher arities. + +// GTEST_ASSERT_ is the basic statement to which all of the assertions +// in this file reduce. Don't use this in your code. + +#define GTEST_ASSERT_(expression, on_failure) \ + GTEST_AMBIGUOUS_ELSE_BLOCKER_ \ + if (const ::testing::AssertionResult gtest_ar = (expression)) \ + ; \ + else \ + on_failure(gtest_ar.failure_message()) + + +// Helper function for implementing {EXPECT|ASSERT}_PRED1. Don't use +// this in your code. +template +AssertionResult AssertPred1Helper(const char* pred_text, + const char* e1, + Pred pred, + const T1& v1) { + if (pred(v1)) return AssertionSuccess(); + + return AssertionFailure() << pred_text << "(" + << e1 << ") evaluates to false, where" + << "\n" << e1 << " evaluates to " << v1; +} + +// Internal macro for implementing {EXPECT|ASSERT}_PRED_FORMAT1. +// Don't use this in your code. +#define GTEST_PRED_FORMAT1_(pred_format, v1, on_failure)\ + GTEST_ASSERT_(pred_format(#v1, v1), \ + on_failure) + +// Internal macro for implementing {EXPECT|ASSERT}_PRED1. Don't use +// this in your code. +#define GTEST_PRED1_(pred, v1, on_failure)\ + GTEST_ASSERT_(::testing::AssertPred1Helper(#pred, \ + #v1, \ + pred, \ + v1), on_failure) + +// Unary predicate assertion macros. +#define EXPECT_PRED_FORMAT1(pred_format, v1) \ + GTEST_PRED_FORMAT1_(pred_format, v1, GTEST_NONFATAL_FAILURE_) +#define EXPECT_PRED1(pred, v1) \ + GTEST_PRED1_(pred, v1, GTEST_NONFATAL_FAILURE_) +#define ASSERT_PRED_FORMAT1(pred_format, v1) \ + GTEST_PRED_FORMAT1_(pred_format, v1, GTEST_FATAL_FAILURE_) +#define ASSERT_PRED1(pred, v1) \ + GTEST_PRED1_(pred, v1, GTEST_FATAL_FAILURE_) + + + +// Helper function for implementing {EXPECT|ASSERT}_PRED2. Don't use +// this in your code. +template +AssertionResult AssertPred2Helper(const char* pred_text, + const char* e1, + const char* e2, + Pred pred, + const T1& v1, + const T2& v2) { + if (pred(v1, v2)) return AssertionSuccess(); + + return AssertionFailure() << pred_text << "(" + << e1 << ", " + << e2 << ") evaluates to false, where" + << "\n" << e1 << " evaluates to " << v1 + << "\n" << e2 << " evaluates to " << v2; +} + +// Internal macro for implementing {EXPECT|ASSERT}_PRED_FORMAT2. +// Don't use this in your code. +#define GTEST_PRED_FORMAT2_(pred_format, v1, v2, on_failure)\ + GTEST_ASSERT_(pred_format(#v1, #v2, v1, v2), \ + on_failure) + +// Internal macro for implementing {EXPECT|ASSERT}_PRED2. Don't use +// this in your code. +#define GTEST_PRED2_(pred, v1, v2, on_failure)\ + GTEST_ASSERT_(::testing::AssertPred2Helper(#pred, \ + #v1, \ + #v2, \ + pred, \ + v1, \ + v2), on_failure) + +// Binary predicate assertion macros. +#define EXPECT_PRED_FORMAT2(pred_format, v1, v2) \ + GTEST_PRED_FORMAT2_(pred_format, v1, v2, GTEST_NONFATAL_FAILURE_) +#define EXPECT_PRED2(pred, v1, v2) \ + GTEST_PRED2_(pred, v1, v2, GTEST_NONFATAL_FAILURE_) +#define ASSERT_PRED_FORMAT2(pred_format, v1, v2) \ + GTEST_PRED_FORMAT2_(pred_format, v1, v2, GTEST_FATAL_FAILURE_) +#define ASSERT_PRED2(pred, v1, v2) \ + GTEST_PRED2_(pred, v1, v2, GTEST_FATAL_FAILURE_) + + + +// Helper function for implementing {EXPECT|ASSERT}_PRED3. Don't use +// this in your code. +template +AssertionResult AssertPred3Helper(const char* pred_text, + const char* e1, + const char* e2, + const char* e3, + Pred pred, + const T1& v1, + const T2& v2, + const T3& v3) { + if (pred(v1, v2, v3)) return AssertionSuccess(); + + return AssertionFailure() << pred_text << "(" + << e1 << ", " + << e2 << ", " + << e3 << ") evaluates to false, where" + << "\n" << e1 << " evaluates to " << v1 + << "\n" << e2 << " evaluates to " << v2 + << "\n" << e3 << " evaluates to " << v3; +} + +// Internal macro for implementing {EXPECT|ASSERT}_PRED_FORMAT3. +// Don't use this in your code. +#define GTEST_PRED_FORMAT3_(pred_format, v1, v2, v3, on_failure)\ + GTEST_ASSERT_(pred_format(#v1, #v2, #v3, v1, v2, v3), \ + on_failure) + +// Internal macro for implementing {EXPECT|ASSERT}_PRED3. Don't use +// this in your code. +#define GTEST_PRED3_(pred, v1, v2, v3, on_failure)\ + GTEST_ASSERT_(::testing::AssertPred3Helper(#pred, \ + #v1, \ + #v2, \ + #v3, \ + pred, \ + v1, \ + v2, \ + v3), on_failure) + +// Ternary predicate assertion macros. +#define EXPECT_PRED_FORMAT3(pred_format, v1, v2, v3) \ + GTEST_PRED_FORMAT3_(pred_format, v1, v2, v3, GTEST_NONFATAL_FAILURE_) +#define EXPECT_PRED3(pred, v1, v2, v3) \ + GTEST_PRED3_(pred, v1, v2, v3, GTEST_NONFATAL_FAILURE_) +#define ASSERT_PRED_FORMAT3(pred_format, v1, v2, v3) \ + GTEST_PRED_FORMAT3_(pred_format, v1, v2, v3, GTEST_FATAL_FAILURE_) +#define ASSERT_PRED3(pred, v1, v2, v3) \ + GTEST_PRED3_(pred, v1, v2, v3, GTEST_FATAL_FAILURE_) + + + +// Helper function for implementing {EXPECT|ASSERT}_PRED4. Don't use +// this in your code. +template +AssertionResult AssertPred4Helper(const char* pred_text, + const char* e1, + const char* e2, + const char* e3, + const char* e4, + Pred pred, + const T1& v1, + const T2& v2, + const T3& v3, + const T4& v4) { + if (pred(v1, v2, v3, v4)) return AssertionSuccess(); + + return AssertionFailure() << pred_text << "(" + << e1 << ", " + << e2 << ", " + << e3 << ", " + << e4 << ") evaluates to false, where" + << "\n" << e1 << " evaluates to " << v1 + << "\n" << e2 << " evaluates to " << v2 + << "\n" << e3 << " evaluates to " << v3 + << "\n" << e4 << " evaluates to " << v4; +} + +// Internal macro for implementing {EXPECT|ASSERT}_PRED_FORMAT4. +// Don't use this in your code. +#define GTEST_PRED_FORMAT4_(pred_format, v1, v2, v3, v4, on_failure)\ + GTEST_ASSERT_(pred_format(#v1, #v2, #v3, #v4, v1, v2, v3, v4), \ + on_failure) + +// Internal macro for implementing {EXPECT|ASSERT}_PRED4. Don't use +// this in your code. +#define GTEST_PRED4_(pred, v1, v2, v3, v4, on_failure)\ + GTEST_ASSERT_(::testing::AssertPred4Helper(#pred, \ + #v1, \ + #v2, \ + #v3, \ + #v4, \ + pred, \ + v1, \ + v2, \ + v3, \ + v4), on_failure) + +// 4-ary predicate assertion macros. +#define EXPECT_PRED_FORMAT4(pred_format, v1, v2, v3, v4) \ + GTEST_PRED_FORMAT4_(pred_format, v1, v2, v3, v4, GTEST_NONFATAL_FAILURE_) +#define EXPECT_PRED4(pred, v1, v2, v3, v4) \ + GTEST_PRED4_(pred, v1, v2, v3, v4, GTEST_NONFATAL_FAILURE_) +#define ASSERT_PRED_FORMAT4(pred_format, v1, v2, v3, v4) \ + GTEST_PRED_FORMAT4_(pred_format, v1, v2, v3, v4, GTEST_FATAL_FAILURE_) +#define ASSERT_PRED4(pred, v1, v2, v3, v4) \ + GTEST_PRED4_(pred, v1, v2, v3, v4, GTEST_FATAL_FAILURE_) + + + +// Helper function for implementing {EXPECT|ASSERT}_PRED5. Don't use +// this in your code. +template +AssertionResult AssertPred5Helper(const char* pred_text, + const char* e1, + const char* e2, + const char* e3, + const char* e4, + const char* e5, + Pred pred, + const T1& v1, + const T2& v2, + const T3& v3, + const T4& v4, + const T5& v5) { + if (pred(v1, v2, v3, v4, v5)) return AssertionSuccess(); + + return AssertionFailure() << pred_text << "(" + << e1 << ", " + << e2 << ", " + << e3 << ", " + << e4 << ", " + << e5 << ") evaluates to false, where" + << "\n" << e1 << " evaluates to " << v1 + << "\n" << e2 << " evaluates to " << v2 + << "\n" << e3 << " evaluates to " << v3 + << "\n" << e4 << " evaluates to " << v4 + << "\n" << e5 << " evaluates to " << v5; +} + +// Internal macro for implementing {EXPECT|ASSERT}_PRED_FORMAT5. +// Don't use this in your code. +#define GTEST_PRED_FORMAT5_(pred_format, v1, v2, v3, v4, v5, on_failure)\ + GTEST_ASSERT_(pred_format(#v1, #v2, #v3, #v4, #v5, v1, v2, v3, v4, v5), \ + on_failure) + +// Internal macro for implementing {EXPECT|ASSERT}_PRED5. Don't use +// this in your code. +#define GTEST_PRED5_(pred, v1, v2, v3, v4, v5, on_failure)\ + GTEST_ASSERT_(::testing::AssertPred5Helper(#pred, \ + #v1, \ + #v2, \ + #v3, \ + #v4, \ + #v5, \ + pred, \ + v1, \ + v2, \ + v3, \ + v4, \ + v5), on_failure) + +// 5-ary predicate assertion macros. +#define EXPECT_PRED_FORMAT5(pred_format, v1, v2, v3, v4, v5) \ + GTEST_PRED_FORMAT5_(pred_format, v1, v2, v3, v4, v5, GTEST_NONFATAL_FAILURE_) +#define EXPECT_PRED5(pred, v1, v2, v3, v4, v5) \ + GTEST_PRED5_(pred, v1, v2, v3, v4, v5, GTEST_NONFATAL_FAILURE_) +#define ASSERT_PRED_FORMAT5(pred_format, v1, v2, v3, v4, v5) \ + GTEST_PRED_FORMAT5_(pred_format, v1, v2, v3, v4, v5, GTEST_FATAL_FAILURE_) +#define ASSERT_PRED5(pred, v1, v2, v3, v4, v5) \ + GTEST_PRED5_(pred, v1, v2, v3, v4, v5, GTEST_FATAL_FAILURE_) + + + +#endif // GTEST_INCLUDE_GTEST_GTEST_PRED_IMPL_H_ + +// Macros for testing equalities and inequalities. +// +// * {ASSERT|EXPECT}_EQ(expected, actual): Tests that expected == actual +// * {ASSERT|EXPECT}_NE(v1, v2): Tests that v1 != v2 +// * {ASSERT|EXPECT}_LT(v1, v2): Tests that v1 < v2 +// * {ASSERT|EXPECT}_LE(v1, v2): Tests that v1 <= v2 +// * {ASSERT|EXPECT}_GT(v1, v2): Tests that v1 > v2 +// * {ASSERT|EXPECT}_GE(v1, v2): Tests that v1 >= v2 +// +// When they are not, Google Test prints both the tested expressions and +// their actual values. The values must be compatible built-in types, +// or you will get a compiler error. By "compatible" we mean that the +// values can be compared by the respective operator. +// +// Note: +// +// 1. It is possible to make a user-defined type work with +// {ASSERT|EXPECT}_??(), but that requires overloading the +// comparison operators and is thus discouraged by the Google C++ +// Usage Guide. Therefore, you are advised to use the +// {ASSERT|EXPECT}_TRUE() macro to assert that two objects are +// equal. +// +// 2. The {ASSERT|EXPECT}_??() macros do pointer comparisons on +// pointers (in particular, C strings). Therefore, if you use it +// with two C strings, you are testing how their locations in memory +// are related, not how their content is related. To compare two C +// strings by content, use {ASSERT|EXPECT}_STR*(). +// +// 3. {ASSERT|EXPECT}_EQ(expected, actual) is preferred to +// {ASSERT|EXPECT}_TRUE(expected == actual), as the former tells you +// what the actual value is when it fails, and similarly for the +// other comparisons. +// +// 4. Do not depend on the order in which {ASSERT|EXPECT}_??() +// evaluate their arguments, which is undefined. +// +// 5. These macros evaluate their arguments exactly once. +// +// Examples: +// +// EXPECT_NE(5, Foo()); +// EXPECT_EQ(NULL, a_pointer); +// ASSERT_LT(i, array_size); +// ASSERT_GT(records.size(), 0) << "There is no record left."; + +#define EXPECT_EQ(expected, actual) \ + EXPECT_PRED_FORMAT2(::testing::internal:: \ + EqHelper::Compare, \ + expected, actual) +#define EXPECT_NE(expected, actual) \ + EXPECT_PRED_FORMAT2(::testing::internal::CmpHelperNE, expected, actual) +#define EXPECT_LE(val1, val2) \ + EXPECT_PRED_FORMAT2(::testing::internal::CmpHelperLE, val1, val2) +#define EXPECT_LT(val1, val2) \ + EXPECT_PRED_FORMAT2(::testing::internal::CmpHelperLT, val1, val2) +#define EXPECT_GE(val1, val2) \ + EXPECT_PRED_FORMAT2(::testing::internal::CmpHelperGE, val1, val2) +#define EXPECT_GT(val1, val2) \ + EXPECT_PRED_FORMAT2(::testing::internal::CmpHelperGT, val1, val2) + +#define GTEST_ASSERT_EQ(expected, actual) \ + ASSERT_PRED_FORMAT2(::testing::internal:: \ + EqHelper::Compare, \ + expected, actual) +#define GTEST_ASSERT_NE(val1, val2) \ + ASSERT_PRED_FORMAT2(::testing::internal::CmpHelperNE, val1, val2) +#define GTEST_ASSERT_LE(val1, val2) \ + ASSERT_PRED_FORMAT2(::testing::internal::CmpHelperLE, val1, val2) +#define GTEST_ASSERT_LT(val1, val2) \ + ASSERT_PRED_FORMAT2(::testing::internal::CmpHelperLT, val1, val2) +#define GTEST_ASSERT_GE(val1, val2) \ + ASSERT_PRED_FORMAT2(::testing::internal::CmpHelperGE, val1, val2) +#define GTEST_ASSERT_GT(val1, val2) \ + ASSERT_PRED_FORMAT2(::testing::internal::CmpHelperGT, val1, val2) + +// Define macro GTEST_DONT_DEFINE_ASSERT_XY to 1 to omit the definition of +// ASSERT_XY(), which clashes with some users' own code. + +#if !GTEST_DONT_DEFINE_ASSERT_EQ +# define ASSERT_EQ(val1, val2) GTEST_ASSERT_EQ(val1, val2) +#endif + +#if !GTEST_DONT_DEFINE_ASSERT_NE +# define ASSERT_NE(val1, val2) GTEST_ASSERT_NE(val1, val2) +#endif + +#if !GTEST_DONT_DEFINE_ASSERT_LE +# define ASSERT_LE(val1, val2) GTEST_ASSERT_LE(val1, val2) +#endif + +#if !GTEST_DONT_DEFINE_ASSERT_LT +# define ASSERT_LT(val1, val2) GTEST_ASSERT_LT(val1, val2) +#endif + +#if !GTEST_DONT_DEFINE_ASSERT_GE +# define ASSERT_GE(val1, val2) GTEST_ASSERT_GE(val1, val2) +#endif + +#if !GTEST_DONT_DEFINE_ASSERT_GT +# define ASSERT_GT(val1, val2) GTEST_ASSERT_GT(val1, val2) +#endif + +// C-string Comparisons. All tests treat NULL and any non-NULL string +// as different. Two NULLs are equal. +// +// * {ASSERT|EXPECT}_STREQ(s1, s2): Tests that s1 == s2 +// * {ASSERT|EXPECT}_STRNE(s1, s2): Tests that s1 != s2 +// * {ASSERT|EXPECT}_STRCASEEQ(s1, s2): Tests that s1 == s2, ignoring case +// * {ASSERT|EXPECT}_STRCASENE(s1, s2): Tests that s1 != s2, ignoring case +// +// For wide or narrow string objects, you can use the +// {ASSERT|EXPECT}_??() macros. +// +// Don't depend on the order in which the arguments are evaluated, +// which is undefined. +// +// These macros evaluate their arguments exactly once. + +#define EXPECT_STREQ(expected, actual) \ + EXPECT_PRED_FORMAT2(::testing::internal::CmpHelperSTREQ, expected, actual) +#define EXPECT_STRNE(s1, s2) \ + EXPECT_PRED_FORMAT2(::testing::internal::CmpHelperSTRNE, s1, s2) +#define EXPECT_STRCASEEQ(expected, actual) \ + EXPECT_PRED_FORMAT2(::testing::internal::CmpHelperSTRCASEEQ, expected, actual) +#define EXPECT_STRCASENE(s1, s2)\ + EXPECT_PRED_FORMAT2(::testing::internal::CmpHelperSTRCASENE, s1, s2) + +#define ASSERT_STREQ(expected, actual) \ + ASSERT_PRED_FORMAT2(::testing::internal::CmpHelperSTREQ, expected, actual) +#define ASSERT_STRNE(s1, s2) \ + ASSERT_PRED_FORMAT2(::testing::internal::CmpHelperSTRNE, s1, s2) +#define ASSERT_STRCASEEQ(expected, actual) \ + ASSERT_PRED_FORMAT2(::testing::internal::CmpHelperSTRCASEEQ, expected, actual) +#define ASSERT_STRCASENE(s1, s2)\ + ASSERT_PRED_FORMAT2(::testing::internal::CmpHelperSTRCASENE, s1, s2) + +// Macros for comparing floating-point numbers. +// +// * {ASSERT|EXPECT}_FLOAT_EQ(expected, actual): +// Tests that two float values are almost equal. +// * {ASSERT|EXPECT}_DOUBLE_EQ(expected, actual): +// Tests that two double values are almost equal. +// * {ASSERT|EXPECT}_NEAR(v1, v2, abs_error): +// Tests that v1 and v2 are within the given distance to each other. +// +// Google Test uses ULP-based comparison to automatically pick a default +// error bound that is appropriate for the operands. See the +// FloatingPoint template class in gtest-internal.h if you are +// interested in the implementation details. + +#define EXPECT_FLOAT_EQ(expected, actual)\ + EXPECT_PRED_FORMAT2(::testing::internal::CmpHelperFloatingPointEQ, \ + expected, actual) + +#define EXPECT_DOUBLE_EQ(expected, actual)\ + EXPECT_PRED_FORMAT2(::testing::internal::CmpHelperFloatingPointEQ, \ + expected, actual) + +#define ASSERT_FLOAT_EQ(expected, actual)\ + ASSERT_PRED_FORMAT2(::testing::internal::CmpHelperFloatingPointEQ, \ + expected, actual) + +#define ASSERT_DOUBLE_EQ(expected, actual)\ + ASSERT_PRED_FORMAT2(::testing::internal::CmpHelperFloatingPointEQ, \ + expected, actual) + +#define EXPECT_NEAR(val1, val2, abs_error)\ + EXPECT_PRED_FORMAT3(::testing::internal::DoubleNearPredFormat, \ + val1, val2, abs_error) + +#define ASSERT_NEAR(val1, val2, abs_error)\ + ASSERT_PRED_FORMAT3(::testing::internal::DoubleNearPredFormat, \ + val1, val2, abs_error) + +// These predicate format functions work on floating-point values, and +// can be used in {ASSERT|EXPECT}_PRED_FORMAT2*(), e.g. +// +// EXPECT_PRED_FORMAT2(testing::DoubleLE, Foo(), 5.0); + +// Asserts that val1 is less than, or almost equal to, val2. Fails +// otherwise. In particular, it fails if either val1 or val2 is NaN. +GTEST_API_ AssertionResult FloatLE(const char* expr1, const char* expr2, + float val1, float val2); +GTEST_API_ AssertionResult DoubleLE(const char* expr1, const char* expr2, + double val1, double val2); + + +#if GTEST_OS_WINDOWS + +// Macros that test for HRESULT failure and success, these are only useful +// on Windows, and rely on Windows SDK macros and APIs to compile. +// +// * {ASSERT|EXPECT}_HRESULT_{SUCCEEDED|FAILED}(expr) +// +// When expr unexpectedly fails or succeeds, Google Test prints the +// expected result and the actual result with both a human-readable +// string representation of the error, if available, as well as the +// hex result code. +# define EXPECT_HRESULT_SUCCEEDED(expr) \ + EXPECT_PRED_FORMAT1(::testing::internal::IsHRESULTSuccess, (expr)) + +# define ASSERT_HRESULT_SUCCEEDED(expr) \ + ASSERT_PRED_FORMAT1(::testing::internal::IsHRESULTSuccess, (expr)) + +# define EXPECT_HRESULT_FAILED(expr) \ + EXPECT_PRED_FORMAT1(::testing::internal::IsHRESULTFailure, (expr)) + +# define ASSERT_HRESULT_FAILED(expr) \ + ASSERT_PRED_FORMAT1(::testing::internal::IsHRESULTFailure, (expr)) + +#endif // GTEST_OS_WINDOWS + +// Macros that execute statement and check that it doesn't generate new fatal +// failures in the current thread. +// +// * {ASSERT|EXPECT}_NO_FATAL_FAILURE(statement); +// +// Examples: +// +// EXPECT_NO_FATAL_FAILURE(Process()); +// ASSERT_NO_FATAL_FAILURE(Process()) << "Process() failed"; +// +#define ASSERT_NO_FATAL_FAILURE(statement) \ + GTEST_TEST_NO_FATAL_FAILURE_(statement, GTEST_FATAL_FAILURE_) +#define EXPECT_NO_FATAL_FAILURE(statement) \ + GTEST_TEST_NO_FATAL_FAILURE_(statement, GTEST_NONFATAL_FAILURE_) + +// Causes a trace (including the source file path, the current line +// number, and the given message) to be included in every test failure +// message generated by code in the current scope. The effect is +// undone when the control leaves the current scope. +// +// The message argument can be anything streamable to std::ostream. +// +// In the implementation, we include the current line number as part +// of the dummy variable name, thus allowing multiple SCOPED_TRACE()s +// to appear in the same block - as long as they are on different +// lines. +#define SCOPED_TRACE(message) \ + ::testing::internal::ScopedTrace GTEST_CONCAT_TOKEN_(gtest_trace_, __LINE__)(\ + __FILE__, __LINE__, ::testing::Message() << (message)) + +// Compile-time assertion for type equality. +// StaticAssertTypeEq() compiles iff type1 and type2 are +// the same type. The value it returns is not interesting. +// +// Instead of making StaticAssertTypeEq a class template, we make it a +// function template that invokes a helper class template. This +// prevents a user from misusing StaticAssertTypeEq by +// defining objects of that type. +// +// CAVEAT: +// +// When used inside a method of a class template, +// StaticAssertTypeEq() is effective ONLY IF the method is +// instantiated. For example, given: +// +// template class Foo { +// public: +// void Bar() { testing::StaticAssertTypeEq(); } +// }; +// +// the code: +// +// void Test1() { Foo foo; } +// +// will NOT generate a compiler error, as Foo::Bar() is never +// actually instantiated. Instead, you need: +// +// void Test2() { Foo foo; foo.Bar(); } +// +// to cause a compiler error. +template +bool StaticAssertTypeEq() { + (void)internal::StaticAssertTypeEqHelper(); + return true; +} + +// Defines a test. +// +// The first parameter is the name of the test case, and the second +// parameter is the name of the test within the test case. +// +// The convention is to end the test case name with "Test". For +// example, a test case for the Foo class can be named FooTest. +// +// The user should put his test code between braces after using this +// macro. Example: +// +// TEST(FooTest, InitializesCorrectly) { +// Foo foo; +// EXPECT_TRUE(foo.StatusIsOK()); +// } + +// Note that we call GetTestTypeId() instead of GetTypeId< +// ::testing::Test>() here to get the type ID of testing::Test. This +// is to work around a suspected linker bug when using Google Test as +// a framework on Mac OS X. The bug causes GetTypeId< +// ::testing::Test>() to return different values depending on whether +// the call is from the Google Test framework itself or from user test +// code. GetTestTypeId() is guaranteed to always return the same +// value, as it always calls GetTypeId<>() from the Google Test +// framework. +#define GTEST_TEST(test_case_name, test_name)\ + GTEST_TEST_(test_case_name, test_name, \ + ::testing::Test, ::testing::internal::GetTestTypeId()) + +// Define this macro to 1 to omit the definition of TEST(), which +// is a generic name and clashes with some other libraries. +#if !GTEST_DONT_DEFINE_TEST +# define TEST(test_case_name, test_name) GTEST_TEST(test_case_name, test_name) +#endif + +// Defines a test that uses a test fixture. +// +// The first parameter is the name of the test fixture class, which +// also doubles as the test case name. The second parameter is the +// name of the test within the test case. +// +// A test fixture class must be declared earlier. The user should put +// his test code between braces after using this macro. Example: +// +// class FooTest : public testing::Test { +// protected: +// virtual void SetUp() { b_.AddElement(3); } +// +// Foo a_; +// Foo b_; +// }; +// +// TEST_F(FooTest, InitializesCorrectly) { +// EXPECT_TRUE(a_.StatusIsOK()); +// } +// +// TEST_F(FooTest, ReturnsElementCountCorrectly) { +// EXPECT_EQ(0, a_.size()); +// EXPECT_EQ(1, b_.size()); +// } + +#define TEST_F(test_fixture, test_name)\ + GTEST_TEST_(test_fixture, test_name, test_fixture, \ + ::testing::internal::GetTypeId()) + +// Use this macro in main() to run all tests. It returns 0 if all +// tests are successful, or 1 otherwise. +// +// RUN_ALL_TESTS() should be invoked after the command line has been +// parsed by InitGoogleTest(). + +#define RUN_ALL_TESTS()\ + (::testing::UnitTest::GetInstance()->Run()) + +} // namespace testing + +#endif // GTEST_INCLUDE_GTEST_GTEST_H_ diff --git a/cpp/thirdparty/protobuf-2.3.0/gtest/src/gtest_main.cc b/cpp/thirdparty/protobuf-2.5.0/gtest/fused-src/gtest/gtest_main.cc similarity index 92% rename from cpp/thirdparty/protobuf-2.3.0/gtest/src/gtest_main.cc rename to cpp/thirdparty/protobuf-2.5.0/gtest/fused-src/gtest/gtest_main.cc index d20c02fdf..f30282255 100644 --- a/cpp/thirdparty/protobuf-2.3.0/gtest/src/gtest_main.cc +++ b/cpp/thirdparty/protobuf-2.5.0/gtest/fused-src/gtest/gtest_main.cc @@ -27,13 +27,12 @@ // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -#include +#include -#include - -int main(int argc, char **argv) { - std::cout << "Running main() from gtest_main.cc\n"; +#include "gtest/gtest.h" +GTEST_API_ int main(int argc, char **argv) { + printf("Running main() from gtest_main.cc\n"); testing::InitGoogleTest(&argc, argv); return RUN_ALL_TESTS(); } diff --git a/cpp/thirdparty/protobuf-2.3.0/gtest/include/gtest/gtest-death-test.h b/cpp/thirdparty/protobuf-2.5.0/gtest/include/gtest/gtest-death-test.h similarity index 84% rename from cpp/thirdparty/protobuf-2.3.0/gtest/include/gtest/gtest-death-test.h rename to cpp/thirdparty/protobuf-2.5.0/gtest/include/gtest/gtest-death-test.h index fdb497f4b..957a69c6a 100644 --- a/cpp/thirdparty/protobuf-2.3.0/gtest/include/gtest/gtest-death-test.h +++ b/cpp/thirdparty/protobuf-2.5.0/gtest/include/gtest/gtest-death-test.h @@ -38,7 +38,7 @@ #ifndef GTEST_INCLUDE_GTEST_GTEST_DEATH_TEST_H_ #define GTEST_INCLUDE_GTEST_GTEST_DEATH_TEST_H_ -#include +#include "gtest/internal/gtest-death-test-internal.h" namespace testing { @@ -51,6 +51,17 @@ GTEST_DECLARE_string_(death_test_style); #if GTEST_HAS_DEATH_TEST +namespace internal { + +// Returns a Boolean value indicating whether the caller is currently +// executing in the context of the death test child process. Tools such as +// Valgrind heap checkers may need this to modify their behavior in death +// tests. IMPORTANT: This is an internal utility. Using it may break the +// implementation of death tests. User code MUST NOT use it. +GTEST_API_ bool InDeathTestChild(); + +} // namespace internal + // The following macros are useful for writing death tests. // Here's what happens when an ASSERT_DEATH* or EXPECT_DEATH* is @@ -75,7 +86,7 @@ GTEST_DECLARE_string_(death_test_style); // for (int i = 0; i < 5; i++) { // EXPECT_DEATH(server.ProcessRequest(i), // "Invalid request .* in ProcessRequest()") -// << "Failed to die on request " << i); +// << "Failed to die on request " << i; // } // // ASSERT_EXIT(server.ExitNow(), ::testing::ExitedWithCode(0), "Exiting"); @@ -154,29 +165,29 @@ GTEST_DECLARE_string_(death_test_style); // Asserts that a given statement causes the program to exit, with an // integer exit status that satisfies predicate, and emitting error output // that matches regex. -#define ASSERT_EXIT(statement, predicate, regex) \ - GTEST_DEATH_TEST_(statement, predicate, regex, GTEST_FATAL_FAILURE_) +# define ASSERT_EXIT(statement, predicate, regex) \ + GTEST_DEATH_TEST_(statement, predicate, regex, GTEST_FATAL_FAILURE_) // Like ASSERT_EXIT, but continues on to successive tests in the // test case, if any: -#define EXPECT_EXIT(statement, predicate, regex) \ - GTEST_DEATH_TEST_(statement, predicate, regex, GTEST_NONFATAL_FAILURE_) +# define EXPECT_EXIT(statement, predicate, regex) \ + GTEST_DEATH_TEST_(statement, predicate, regex, GTEST_NONFATAL_FAILURE_) // Asserts that a given statement causes the program to exit, either by // explicitly exiting with a nonzero exit code or being killed by a // signal, and emitting error output that matches regex. -#define ASSERT_DEATH(statement, regex) \ - ASSERT_EXIT(statement, ::testing::internal::ExitedUnsuccessfully, regex) +# define ASSERT_DEATH(statement, regex) \ + ASSERT_EXIT(statement, ::testing::internal::ExitedUnsuccessfully, regex) // Like ASSERT_DEATH, but continues on to successive tests in the // test case, if any: -#define EXPECT_DEATH(statement, regex) \ - EXPECT_EXIT(statement, ::testing::internal::ExitedUnsuccessfully, regex) +# define EXPECT_DEATH(statement, regex) \ + EXPECT_EXIT(statement, ::testing::internal::ExitedUnsuccessfully, regex) // Two predicate classes that can be used in {ASSERT,EXPECT}_EXIT*: // Tests that an exit code describes a normal exit with a given exit code. -class ExitedWithCode { +class GTEST_API_ ExitedWithCode { public: explicit ExitedWithCode(int exit_code); bool operator()(int exit_status) const; @@ -187,17 +198,17 @@ class ExitedWithCode { const int exit_code_; }; -#if !GTEST_OS_WINDOWS +# if !GTEST_OS_WINDOWS // Tests that an exit code describes an exit due to termination by a // given signal. -class KilledBySignal { +class GTEST_API_ KilledBySignal { public: explicit KilledBySignal(int signum); bool operator()(int exit_status) const; private: const int signum_; }; -#endif // !GTEST_OS_WINDOWS +# endif // !GTEST_OS_WINDOWS // EXPECT_DEBUG_DEATH asserts that the given statements die in debug mode. // The death testing framework causes this to have interesting semantics, @@ -242,23 +253,23 @@ class KilledBySignal { // EXPECT_EQ(12, DieInDebugOr12(&sideeffect)); // }, "death"); // -#ifdef NDEBUG +# ifdef NDEBUG -#define EXPECT_DEBUG_DEATH(statement, regex) \ - do { statement; } while (::testing::internal::AlwaysFalse()) +# define EXPECT_DEBUG_DEATH(statement, regex) \ + GTEST_EXECUTE_STATEMENT_(statement, regex) -#define ASSERT_DEBUG_DEATH(statement, regex) \ - do { statement; } while (::testing::internal::AlwaysFalse()) +# define ASSERT_DEBUG_DEATH(statement, regex) \ + GTEST_EXECUTE_STATEMENT_(statement, regex) -#else +# else -#define EXPECT_DEBUG_DEATH(statement, regex) \ +# define EXPECT_DEBUG_DEATH(statement, regex) \ EXPECT_DEATH(statement, regex) -#define ASSERT_DEBUG_DEATH(statement, regex) \ +# define ASSERT_DEBUG_DEATH(statement, regex) \ ASSERT_DEATH(statement, regex) -#endif // NDEBUG for EXPECT_DEBUG_DEATH +# endif // NDEBUG for EXPECT_DEBUG_DEATH #endif // GTEST_HAS_DEATH_TEST // EXPECT_DEATH_IF_SUPPORTED(statement, regex) and @@ -267,14 +278,14 @@ class KilledBySignal { // useful when you are combining death test assertions with normal test // assertions in one test. #if GTEST_HAS_DEATH_TEST -#define EXPECT_DEATH_IF_SUPPORTED(statement, regex) \ +# define EXPECT_DEATH_IF_SUPPORTED(statement, regex) \ EXPECT_DEATH(statement, regex) -#define ASSERT_DEATH_IF_SUPPORTED(statement, regex) \ +# define ASSERT_DEATH_IF_SUPPORTED(statement, regex) \ ASSERT_DEATH(statement, regex) #else -#define EXPECT_DEATH_IF_SUPPORTED(statement, regex) \ +# define EXPECT_DEATH_IF_SUPPORTED(statement, regex) \ GTEST_UNSUPPORTED_DEATH_TEST_(statement, regex, ) -#define ASSERT_DEATH_IF_SUPPORTED(statement, regex) \ +# define ASSERT_DEATH_IF_SUPPORTED(statement, regex) \ GTEST_UNSUPPORTED_DEATH_TEST_(statement, regex, return) #endif diff --git a/cpp/thirdparty/protobuf-2.3.0/gtest/include/gtest/gtest-message.h b/cpp/thirdparty/protobuf-2.5.0/gtest/include/gtest/gtest-message.h similarity index 87% rename from cpp/thirdparty/protobuf-2.3.0/gtest/include/gtest/gtest-message.h rename to cpp/thirdparty/protobuf-2.5.0/gtest/include/gtest/gtest-message.h index 6398712e2..6336b4a93 100644 --- a/cpp/thirdparty/protobuf-2.3.0/gtest/include/gtest/gtest-message.h +++ b/cpp/thirdparty/protobuf-2.5.0/gtest/include/gtest/gtest-message.h @@ -46,8 +46,10 @@ #ifndef GTEST_INCLUDE_GTEST_GTEST_MESSAGE_H_ #define GTEST_INCLUDE_GTEST_GTEST_MESSAGE_H_ -#include -#include +#include + +#include "gtest/internal/gtest-string.h" +#include "gtest/internal/gtest-internal.h" namespace testing { @@ -56,7 +58,7 @@ namespace testing { // Typical usage: // // 1. You stream a bunch of values to a Message object. -// It will remember the text in a StrStream. +// It will remember the text in a stringstream. // 2. Then you stream the Message object to an ostream. // This causes the text in the Message to be streamed // to the ostream. @@ -72,12 +74,12 @@ namespace testing { // Message is not intended to be inherited from. In particular, its // destructor is not virtual. // -// Note that StrStream behaves differently in gcc and in MSVC. You +// Note that stringstream behaves differently in gcc and in MSVC. You // can stream a NULL char pointer to it in the former, but not in the // latter (it causes an access violation if you do). The Message // class hides this difference by treating a NULL char pointer as // "(null)". -class Message { +class GTEST_API_ Message { private: // The type of basic IO manipulators (endl, ends, and flush) for // narrow streams. @@ -85,23 +87,26 @@ class Message { public: // Constructs an empty Message. - // We allocate the StrStream separately because it otherwise each use of + // We allocate the stringstream separately because otherwise each use of // ASSERT/EXPECT in a procedure adds over 200 bytes to the procedure's // stack frame leading to huge stack frames in some cases; gcc does not reuse // the stack space. - Message() : ss_(new internal::StrStream) {} + Message() : ss_(new ::std::stringstream) { + // By default, we want there to be enough precision when printing + // a double to a Message. + *ss_ << std::setprecision(std::numeric_limits::digits10 + 2); + } // Copy constructor. - Message(const Message& msg) : ss_(new internal::StrStream) { // NOLINT + Message(const Message& msg) : ss_(new ::std::stringstream) { // NOLINT *ss_ << msg.GetString(); } // Constructs a Message from a C-string. - explicit Message(const char* str) : ss_(new internal::StrStream) { + explicit Message(const char* str) : ss_(new ::std::stringstream) { *ss_ << str; } - ~Message() { delete ss_; } #if GTEST_OS_SYMBIAN // Streams a value (either a pointer or not) to this object. template @@ -113,7 +118,7 @@ class Message { // Streams a non-pointer value to this object. template inline Message& operator <<(const T& val) { - ::GTestStreamToHelper(ss_, val); + ::GTestStreamToHelper(ss_.get(), val); return *this; } @@ -135,7 +140,7 @@ class Message { if (pointer == NULL) { *ss_ << "(null)"; } else { - ::GTestStreamToHelper(ss_, pointer); + ::GTestStreamToHelper(ss_.get(), pointer); } return *this; } @@ -178,15 +183,16 @@ class Message { Message& operator <<(const ::wstring& wstr); #endif // GTEST_HAS_GLOBAL_WSTRING - // Gets the text streamed to this object so far as a String. + // Gets the text streamed to this object so far as an std::string. // Each '\0' character in the buffer is replaced with "\\0". // // INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM. - internal::String GetString() const { - return internal::StrStreamToString(ss_); + std::string GetString() const { + return internal::StringStreamToString(ss_.get()); } private: + #if GTEST_OS_SYMBIAN // These are needed as the Nokia Symbian Compiler cannot decide between // const T& and const T* in a function template. The Nokia compiler _can_ @@ -197,17 +203,17 @@ class Message { if (pointer == NULL) { *ss_ << "(null)"; } else { - ::GTestStreamToHelper(ss_, pointer); + ::GTestStreamToHelper(ss_.get(), pointer); } } template inline void StreamHelper(internal::false_type /*dummy*/, const T& value) { - ::GTestStreamToHelper(ss_, value); + ::GTestStreamToHelper(ss_.get(), value); } #endif // GTEST_OS_SYMBIAN // We'll hold the text streamed to this object here. - internal::StrStream* const ss_; + const internal::scoped_ptr< ::std::stringstream> ss_; // We declare (but don't implement) this to prevent the compiler // from implementing the assignment operator. diff --git a/cpp/thirdparty/protobuf-2.3.0/gtest/include/gtest/gtest-param-test.h b/cpp/thirdparty/protobuf-2.5.0/gtest/include/gtest/gtest-param-test.h similarity index 96% rename from cpp/thirdparty/protobuf-2.3.0/gtest/include/gtest/gtest-param-test.h rename to cpp/thirdparty/protobuf-2.5.0/gtest/include/gtest/gtest-param-test.h index 6c8622a62..d6702c8f1 100644 --- a/cpp/thirdparty/protobuf-2.3.0/gtest/include/gtest/gtest-param-test.h +++ b/cpp/thirdparty/protobuf-2.5.0/gtest/include/gtest/gtest-param-test.h @@ -1,4 +1,6 @@ -// This file was GENERATED by a script. DO NOT EDIT BY HAND!!! +// This file was GENERATED by command: +// pump.py gtest-param-test.h.pump +// DO NOT EDIT BY HAND!!! // Copyright 2008, Google Inc. // All rights reserved. @@ -48,10 +50,12 @@ #if 0 // To write value-parameterized tests, first you should define a fixture -// class. It must be derived from testing::TestWithParam, where T is -// the type of your parameter values. TestWithParam is itself derived -// from testing::Test. T can be any copyable type. If it's a raw pointer, -// you are responsible for managing the lifespan of the pointed values. +// class. It is usually derived from testing::TestWithParam (see below for +// another inheritance scheme that's sometimes useful in more complicated +// class hierarchies), where the type of your parameter values. +// TestWithParam is itself derived from testing::Test. T can be any +// copyable type. If it's a raw pointer, you are responsible for managing the +// lifespan of the pointed values. class FooTest : public ::testing::TestWithParam { // You can implement all the usual class fixture members here. @@ -133,9 +137,12 @@ INSTANTIATE_TEST_CASE_P(AnotherInstantiationName, FooTest, ValuesIn(pets)); // in the given test case, whether their definitions come before or // AFTER the INSTANTIATE_TEST_CASE_P statement. // -// Please also note that generator expressions are evaluated in -// RUN_ALL_TESTS(), after main() has started. This allows evaluation of -// parameter list based on command line parameters. +// Please also note that generator expressions (including parameters to the +// generators) are evaluated in InitGoogleTest(), after main() has started. +// This allows the user on one hand, to adjust generator parameters in order +// to dynamically determine a set of tests to run and on the other hand, +// give the user a chance to inspect the generated tests with Google Test +// reflection API before RUN_ALL_TESTS() is executed. // // You can see samples/sample7_unittest.cc and samples/sample8_unittest.cc // for more examples. @@ -143,20 +150,49 @@ INSTANTIATE_TEST_CASE_P(AnotherInstantiationName, FooTest, ValuesIn(pets)); // In the future, we plan to publish the API for defining new parameter // generators. But for now this interface remains part of the internal // implementation and is subject to change. +// +// +// A parameterized test fixture must be derived from testing::Test and from +// testing::WithParamInterface, where T is the type of the parameter +// values. Inheriting from TestWithParam satisfies that requirement because +// TestWithParam inherits from both Test and WithParamInterface. In more +// complicated hierarchies, however, it is occasionally useful to inherit +// separately from Test and WithParamInterface. For example: + +class BaseTest : public ::testing::Test { + // You can inherit all the usual members for a non-parameterized test + // fixture here. +}; + +class DerivedTest : public BaseTest, public ::testing::WithParamInterface { + // The usual test fixture members go here too. +}; + +TEST_F(BaseTest, HasFoo) { + // This is an ordinary non-parameterized test. +} + +TEST_P(DerivedTest, DoesBlah) { + // GetParam works just the same here as if you inherit from TestWithParam. + EXPECT_TRUE(foo.Blah(GetParam())); +} #endif // 0 -#include +#include "gtest/internal/gtest-port.h" #if !GTEST_OS_SYMBIAN -#include +# include #endif -#if GTEST_HAS_PARAM_TEST +// scripts/fuse_gtest.py depends on gtest's own header being #included +// *unconditionally*. Therefore these #includes cannot be moved +// inside #if GTEST_HAS_PARAM_TEST. +#include "gtest/internal/gtest-internal.h" +#include "gtest/internal/gtest-param-util.h" +#include "gtest/internal/gtest-param-util-generated.h" -#include -#include -#include +#if GTEST_HAS_PARAM_TEST namespace testing { @@ -270,11 +306,10 @@ internal::ParamGenerator Range(T start, T end) { // template internal::ParamGenerator< - typename ::std::iterator_traits::value_type> ValuesIn( - ForwardIterator begin, - ForwardIterator end) { - typedef typename ::std::iterator_traits::value_type - ParamType; + typename ::testing::internal::IteratorTraits::value_type> +ValuesIn(ForwardIterator begin, ForwardIterator end) { + typedef typename ::testing::internal::IteratorTraits + ::value_type ParamType; return internal::ParamGenerator( new internal::ValuesInIteratorRangeGenerator(begin, end)); } @@ -1186,7 +1221,7 @@ inline internal::ParamGenerator Bool() { return Values(false, true); } -#if GTEST_HAS_COMBINE +# if GTEST_HAS_COMBINE // Combine() allows the user to combine two or more sequences to produce // values of a Cartesian product of those sequences' elements. // @@ -1222,7 +1257,7 @@ inline internal::ParamGenerator Bool() { // Boolean flags: // // class FlagDependentTest -// : public testing::TestWithParam > { +// : public testing::TestWithParam > { // virtual void SetUp() { // // Assigns external_flag_1 and external_flag_2 values from the tuple. // tie(external_flag_1, external_flag_2) = GetParam(); @@ -1338,11 +1373,11 @@ internal::CartesianProductHolder10( g1, g2, g3, g4, g5, g6, g7, g8, g9, g10); } -#endif // GTEST_HAS_COMBINE +# endif // GTEST_HAS_COMBINE -#define TEST_P(test_case_name, test_name) \ +# define TEST_P(test_case_name, test_name) \ class GTEST_TEST_CLASS_NAME_(test_case_name, test_name) \ : public test_case_name { \ public: \ @@ -1368,7 +1403,7 @@ internal::CartesianProductHolder10 \ gtest_##prefix##test_case_name##_EvalGenerator_() { return generator; } \ int gtest_##prefix##test_case_name##_dummy_ = \ diff --git a/cpp/thirdparty/protobuf-2.3.0/gtest/include/gtest/gtest-param-test.h.pump b/cpp/thirdparty/protobuf-2.5.0/gtest/include/gtest/gtest-param-test.h.pump similarity index 85% rename from cpp/thirdparty/protobuf-2.3.0/gtest/include/gtest/gtest-param-test.h.pump rename to cpp/thirdparty/protobuf-2.5.0/gtest/include/gtest/gtest-param-test.h.pump index c761f125b..2dc9303b5 100644 --- a/cpp/thirdparty/protobuf-2.3.0/gtest/include/gtest/gtest-param-test.h.pump +++ b/cpp/thirdparty/protobuf-2.5.0/gtest/include/gtest/gtest-param-test.h.pump @@ -49,10 +49,12 @@ $var maxtuple = 10 $$ Maximum number of Combine arguments we want to support. #if 0 // To write value-parameterized tests, first you should define a fixture -// class. It must be derived from testing::TestWithParam, where T is -// the type of your parameter values. TestWithParam is itself derived -// from testing::Test. T can be any copyable type. If it's a raw pointer, -// you are responsible for managing the lifespan of the pointed values. +// class. It is usually derived from testing::TestWithParam (see below for +// another inheritance scheme that's sometimes useful in more complicated +// class hierarchies), where the type of your parameter values. +// TestWithParam is itself derived from testing::Test. T can be any +// copyable type. If it's a raw pointer, you are responsible for managing the +// lifespan of the pointed values. class FooTest : public ::testing::TestWithParam { // You can implement all the usual class fixture members here. @@ -60,7 +62,7 @@ class FooTest : public ::testing::TestWithParam { // Then, use the TEST_P macro to define as many parameterized tests // for this fixture as you want. The _P suffix is for "parameterized" -// or "pattern", whichever you prefer to think. +// or "pattern", whichever you prefer to think. TEST_P(FooTest, DoesBlah) { // Inside a test, access the test parameter with the GetParam() method @@ -124,7 +126,7 @@ const char* pets[] = {"cat", "dog"}; INSTANTIATE_TEST_CASE_P(AnotherInstantiationName, FooTest, ValuesIn(pets)); // The tests from the instantiation above will have these names: -// +// // * AnotherInstantiationName/FooTest.DoesBlah/0 for "cat" // * AnotherInstantiationName/FooTest.DoesBlah/1 for "dog" // * AnotherInstantiationName/FooTest.HasBlahBlah/0 for "cat" @@ -134,9 +136,12 @@ INSTANTIATE_TEST_CASE_P(AnotherInstantiationName, FooTest, ValuesIn(pets)); // in the given test case, whether their definitions come before or // AFTER the INSTANTIATE_TEST_CASE_P statement. // -// Please also note that generator expressions are evaluated in -// RUN_ALL_TESTS(), after main() has started. This allows evaluation of -// parameter list based on command line parameters. +// Please also note that generator expressions (including parameters to the +// generators) are evaluated in InitGoogleTest(), after main() has started. +// This allows the user on one hand, to adjust generator parameters in order +// to dynamically determine a set of tests to run and on the other hand, +// give the user a chance to inspect the generated tests with Google Test +// reflection API before RUN_ALL_TESTS() is executed. // // You can see samples/sample7_unittest.cc and samples/sample8_unittest.cc // for more examples. @@ -144,20 +149,50 @@ INSTANTIATE_TEST_CASE_P(AnotherInstantiationName, FooTest, ValuesIn(pets)); // In the future, we plan to publish the API for defining new parameter // generators. But for now this interface remains part of the internal // implementation and is subject to change. +// +// +// A parameterized test fixture must be derived from testing::Test and from +// testing::WithParamInterface, where T is the type of the parameter +// values. Inheriting from TestWithParam satisfies that requirement because +// TestWithParam inherits from both Test and WithParamInterface. In more +// complicated hierarchies, however, it is occasionally useful to inherit +// separately from Test and WithParamInterface. For example: + +class BaseTest : public ::testing::Test { + // You can inherit all the usual members for a non-parameterized test + // fixture here. +}; + +class DerivedTest : public BaseTest, public ::testing::WithParamInterface { + // The usual test fixture members go here too. +}; + +TEST_F(BaseTest, HasFoo) { + // This is an ordinary non-parameterized test. +} + +TEST_P(DerivedTest, DoesBlah) { + // GetParam works just the same here as if you inherit from TestWithParam. + EXPECT_TRUE(foo.Blah(GetParam())); +} #endif // 0 +#include "gtest/internal/gtest-port.h" -#include +#if !GTEST_OS_SYMBIAN +# include +#endif -#include +// scripts/fuse_gtest.py depends on gtest's own header being #included +// *unconditionally*. Therefore these #includes cannot be moved +// inside #if GTEST_HAS_PARAM_TEST. +#include "gtest/internal/gtest-internal.h" +#include "gtest/internal/gtest-param-util.h" +#include "gtest/internal/gtest-param-util-generated.h" #if GTEST_HAS_PARAM_TEST -#include -#include -#include - namespace testing { // Functions producing parameter generators. @@ -270,11 +305,10 @@ internal::ParamGenerator Range(T start, T end) { // template internal::ParamGenerator< - typename ::std::iterator_traits::value_type> ValuesIn( - ForwardIterator begin, - ForwardIterator end) { - typedef typename ::std::iterator_traits::value_type - ParamType; + typename ::testing::internal::IteratorTraits::value_type> +ValuesIn(ForwardIterator begin, ForwardIterator end) { + typedef typename ::testing::internal::IteratorTraits + ::value_type ParamType; return internal::ParamGenerator( new internal::ValuesInIteratorRangeGenerator(begin, end)); } @@ -344,7 +378,7 @@ inline internal::ParamGenerator Bool() { return Values(false, true); } -#if GTEST_HAS_COMBINE +# if GTEST_HAS_COMBINE // Combine() allows the user to combine two or more sequences to produce // values of a Cartesian product of those sequences' elements. // @@ -380,7 +414,7 @@ inline internal::ParamGenerator Bool() { // Boolean flags: // // class FlagDependentTest -// : public testing::TestWithParam > { +// : public testing::TestWithParam > { // virtual void SetUp() { // // Assigns external_flag_1 and external_flag_2 values from the tuple. // tie(external_flag_1, external_flag_2) = GetParam(); @@ -405,11 +439,11 @@ internal::CartesianProductHolder$i<$for j, [[Generator$j]]> Combine( } ]] -#endif // GTEST_HAS_COMBINE +# endif // GTEST_HAS_COMBINE -#define TEST_P(test_case_name, test_name) \ +# define TEST_P(test_case_name, test_name) \ class GTEST_TEST_CLASS_NAME_(test_case_name, test_name) \ : public test_case_name { \ public: \ @@ -435,7 +469,7 @@ internal::CartesianProductHolder$i<$for j, [[Generator$j]]> Combine( GTEST_TEST_CLASS_NAME_(test_case_name, test_name)::AddToRegistry(); \ void GTEST_TEST_CLASS_NAME_(test_case_name, test_name)::TestBody() -#define INSTANTIATE_TEST_CASE_P(prefix, test_case_name, generator) \ +# define INSTANTIATE_TEST_CASE_P(prefix, test_case_name, generator) \ ::testing::internal::ParamGenerator \ gtest_##prefix##test_case_name##_EvalGenerator_() { return generator; } \ int gtest_##prefix##test_case_name##_dummy_ = \ diff --git a/cpp/thirdparty/protobuf-2.5.0/gtest/include/gtest/gtest-printers.h b/cpp/thirdparty/protobuf-2.5.0/gtest/include/gtest/gtest-printers.h new file mode 100644 index 000000000..0639d9f58 --- /dev/null +++ b/cpp/thirdparty/protobuf-2.5.0/gtest/include/gtest/gtest-printers.h @@ -0,0 +1,855 @@ +// Copyright 2007, Google Inc. +// All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Author: wan@google.com (Zhanyong Wan) + +// Google Test - The Google C++ Testing Framework +// +// This file implements a universal value printer that can print a +// value of any type T: +// +// void ::testing::internal::UniversalPrinter::Print(value, ostream_ptr); +// +// A user can teach this function how to print a class type T by +// defining either operator<<() or PrintTo() in the namespace that +// defines T. More specifically, the FIRST defined function in the +// following list will be used (assuming T is defined in namespace +// foo): +// +// 1. foo::PrintTo(const T&, ostream*) +// 2. operator<<(ostream&, const T&) defined in either foo or the +// global namespace. +// +// If none of the above is defined, it will print the debug string of +// the value if it is a protocol buffer, or print the raw bytes in the +// value otherwise. +// +// To aid debugging: when T is a reference type, the address of the +// value is also printed; when T is a (const) char pointer, both the +// pointer value and the NUL-terminated string it points to are +// printed. +// +// We also provide some convenient wrappers: +// +// // Prints a value to a string. For a (const or not) char +// // pointer, the NUL-terminated string (but not the pointer) is +// // printed. +// std::string ::testing::PrintToString(const T& value); +// +// // Prints a value tersely: for a reference type, the referenced +// // value (but not the address) is printed; for a (const or not) char +// // pointer, the NUL-terminated string (but not the pointer) is +// // printed. +// void ::testing::internal::UniversalTersePrint(const T& value, ostream*); +// +// // Prints value using the type inferred by the compiler. The difference +// // from UniversalTersePrint() is that this function prints both the +// // pointer and the NUL-terminated string for a (const or not) char pointer. +// void ::testing::internal::UniversalPrint(const T& value, ostream*); +// +// // Prints the fields of a tuple tersely to a string vector, one +// // element for each field. Tuple support must be enabled in +// // gtest-port.h. +// std::vector UniversalTersePrintTupleFieldsToStrings( +// const Tuple& value); +// +// Known limitation: +// +// The print primitives print the elements of an STL-style container +// using the compiler-inferred type of *iter where iter is a +// const_iterator of the container. When const_iterator is an input +// iterator but not a forward iterator, this inferred type may not +// match value_type, and the print output may be incorrect. In +// practice, this is rarely a problem as for most containers +// const_iterator is a forward iterator. We'll fix this if there's an +// actual need for it. Note that this fix cannot rely on value_type +// being defined as many user-defined container types don't have +// value_type. + +#ifndef GTEST_INCLUDE_GTEST_GTEST_PRINTERS_H_ +#define GTEST_INCLUDE_GTEST_GTEST_PRINTERS_H_ + +#include // NOLINT +#include +#include +#include +#include +#include "gtest/internal/gtest-port.h" +#include "gtest/internal/gtest-internal.h" + +namespace testing { + +// Definitions in the 'internal' and 'internal2' name spaces are +// subject to change without notice. DO NOT USE THEM IN USER CODE! +namespace internal2 { + +// Prints the given number of bytes in the given object to the given +// ostream. +GTEST_API_ void PrintBytesInObjectTo(const unsigned char* obj_bytes, + size_t count, + ::std::ostream* os); + +// For selecting which printer to use when a given type has neither << +// nor PrintTo(). +enum TypeKind { + kProtobuf, // a protobuf type + kConvertibleToInteger, // a type implicitly convertible to BiggestInt + // (e.g. a named or unnamed enum type) + kOtherType // anything else +}; + +// TypeWithoutFormatter::PrintValue(value, os) is called +// by the universal printer to print a value of type T when neither +// operator<< nor PrintTo() is defined for T, where kTypeKind is the +// "kind" of T as defined by enum TypeKind. +template +class TypeWithoutFormatter { + public: + // This default version is called when kTypeKind is kOtherType. + static void PrintValue(const T& value, ::std::ostream* os) { + PrintBytesInObjectTo(reinterpret_cast(&value), + sizeof(value), os); + } +}; + +// We print a protobuf using its ShortDebugString() when the string +// doesn't exceed this many characters; otherwise we print it using +// DebugString() for better readability. +const size_t kProtobufOneLinerMaxLength = 50; + +template +class TypeWithoutFormatter { + public: + static void PrintValue(const T& value, ::std::ostream* os) { + const ::testing::internal::string short_str = value.ShortDebugString(); + const ::testing::internal::string pretty_str = + short_str.length() <= kProtobufOneLinerMaxLength ? + short_str : ("\n" + value.DebugString()); + *os << ("<" + pretty_str + ">"); + } +}; + +template +class TypeWithoutFormatter { + public: + // Since T has no << operator or PrintTo() but can be implicitly + // converted to BiggestInt, we print it as a BiggestInt. + // + // Most likely T is an enum type (either named or unnamed), in which + // case printing it as an integer is the desired behavior. In case + // T is not an enum, printing it as an integer is the best we can do + // given that it has no user-defined printer. + static void PrintValue(const T& value, ::std::ostream* os) { + const internal::BiggestInt kBigInt = value; + *os << kBigInt; + } +}; + +// Prints the given value to the given ostream. If the value is a +// protocol message, its debug string is printed; if it's an enum or +// of a type implicitly convertible to BiggestInt, it's printed as an +// integer; otherwise the bytes in the value are printed. This is +// what UniversalPrinter::Print() does when it knows nothing about +// type T and T has neither << operator nor PrintTo(). +// +// A user can override this behavior for a class type Foo by defining +// a << operator in the namespace where Foo is defined. +// +// We put this operator in namespace 'internal2' instead of 'internal' +// to simplify the implementation, as much code in 'internal' needs to +// use << in STL, which would conflict with our own << were it defined +// in 'internal'. +// +// Note that this operator<< takes a generic std::basic_ostream type instead of the more restricted std::ostream. If +// we define it to take an std::ostream instead, we'll get an +// "ambiguous overloads" compiler error when trying to print a type +// Foo that supports streaming to std::basic_ostream, as the compiler cannot tell whether +// operator<<(std::ostream&, const T&) or +// operator<<(std::basic_stream, const Foo&) is more +// specific. +template +::std::basic_ostream& operator<<( + ::std::basic_ostream& os, const T& x) { + TypeWithoutFormatter::value ? kProtobuf : + internal::ImplicitlyConvertible::value ? + kConvertibleToInteger : kOtherType)>::PrintValue(x, &os); + return os; +} + +} // namespace internal2 +} // namespace testing + +// This namespace MUST NOT BE NESTED IN ::testing, or the name look-up +// magic needed for implementing UniversalPrinter won't work. +namespace testing_internal { + +// Used to print a value that is not an STL-style container when the +// user doesn't define PrintTo() for it. +template +void DefaultPrintNonContainerTo(const T& value, ::std::ostream* os) { + // With the following statement, during unqualified name lookup, + // testing::internal2::operator<< appears as if it was declared in + // the nearest enclosing namespace that contains both + // ::testing_internal and ::testing::internal2, i.e. the global + // namespace. For more details, refer to the C++ Standard section + // 7.3.4-1 [namespace.udir]. This allows us to fall back onto + // testing::internal2::operator<< in case T doesn't come with a << + // operator. + // + // We cannot write 'using ::testing::internal2::operator<<;', which + // gcc 3.3 fails to compile due to a compiler bug. + using namespace ::testing::internal2; // NOLINT + + // Assuming T is defined in namespace foo, in the next statement, + // the compiler will consider all of: + // + // 1. foo::operator<< (thanks to Koenig look-up), + // 2. ::operator<< (as the current namespace is enclosed in ::), + // 3. testing::internal2::operator<< (thanks to the using statement above). + // + // The operator<< whose type matches T best will be picked. + // + // We deliberately allow #2 to be a candidate, as sometimes it's + // impossible to define #1 (e.g. when foo is ::std, defining + // anything in it is undefined behavior unless you are a compiler + // vendor.). + *os << value; +} + +} // namespace testing_internal + +namespace testing { +namespace internal { + +// UniversalPrinter::Print(value, ostream_ptr) prints the given +// value to the given ostream. The caller must ensure that +// 'ostream_ptr' is not NULL, or the behavior is undefined. +// +// We define UniversalPrinter as a class template (as opposed to a +// function template), as we need to partially specialize it for +// reference types, which cannot be done with function templates. +template +class UniversalPrinter; + +template +void UniversalPrint(const T& value, ::std::ostream* os); + +// Used to print an STL-style container when the user doesn't define +// a PrintTo() for it. +template +void DefaultPrintTo(IsContainer /* dummy */, + false_type /* is not a pointer */, + const C& container, ::std::ostream* os) { + const size_t kMaxCount = 32; // The maximum number of elements to print. + *os << '{'; + size_t count = 0; + for (typename C::const_iterator it = container.begin(); + it != container.end(); ++it, ++count) { + if (count > 0) { + *os << ','; + if (count == kMaxCount) { // Enough has been printed. + *os << " ..."; + break; + } + } + *os << ' '; + // We cannot call PrintTo(*it, os) here as PrintTo() doesn't + // handle *it being a native array. + internal::UniversalPrint(*it, os); + } + + if (count > 0) { + *os << ' '; + } + *os << '}'; +} + +// Used to print a pointer that is neither a char pointer nor a member +// pointer, when the user doesn't define PrintTo() for it. (A member +// variable pointer or member function pointer doesn't really point to +// a location in the address space. Their representation is +// implementation-defined. Therefore they will be printed as raw +// bytes.) +template +void DefaultPrintTo(IsNotContainer /* dummy */, + true_type /* is a pointer */, + T* p, ::std::ostream* os) { + if (p == NULL) { + *os << "NULL"; + } else { + // C++ doesn't allow casting from a function pointer to any object + // pointer. + // + // IsTrue() silences warnings: "Condition is always true", + // "unreachable code". + if (IsTrue(ImplicitlyConvertible::value)) { + // T is not a function type. We just call << to print p, + // relying on ADL to pick up user-defined << for their pointer + // types, if any. + *os << p; + } else { + // T is a function type, so '*os << p' doesn't do what we want + // (it just prints p as bool). We want to print p as a const + // void*. However, we cannot cast it to const void* directly, + // even using reinterpret_cast, as earlier versions of gcc + // (e.g. 3.4.5) cannot compile the cast when p is a function + // pointer. Casting to UInt64 first solves the problem. + *os << reinterpret_cast( + reinterpret_cast(p)); + } + } +} + +// Used to print a non-container, non-pointer value when the user +// doesn't define PrintTo() for it. +template +void DefaultPrintTo(IsNotContainer /* dummy */, + false_type /* is not a pointer */, + const T& value, ::std::ostream* os) { + ::testing_internal::DefaultPrintNonContainerTo(value, os); +} + +// Prints the given value using the << operator if it has one; +// otherwise prints the bytes in it. This is what +// UniversalPrinter::Print() does when PrintTo() is not specialized +// or overloaded for type T. +// +// A user can override this behavior for a class type Foo by defining +// an overload of PrintTo() in the namespace where Foo is defined. We +// give the user this option as sometimes defining a << operator for +// Foo is not desirable (e.g. the coding style may prevent doing it, +// or there is already a << operator but it doesn't do what the user +// wants). +template +void PrintTo(const T& value, ::std::ostream* os) { + // DefaultPrintTo() is overloaded. The type of its first two + // arguments determine which version will be picked. If T is an + // STL-style container, the version for container will be called; if + // T is a pointer, the pointer version will be called; otherwise the + // generic version will be called. + // + // Note that we check for container types here, prior to we check + // for protocol message types in our operator<<. The rationale is: + // + // For protocol messages, we want to give people a chance to + // override Google Mock's format by defining a PrintTo() or + // operator<<. For STL containers, other formats can be + // incompatible with Google Mock's format for the container + // elements; therefore we check for container types here to ensure + // that our format is used. + // + // The second argument of DefaultPrintTo() is needed to bypass a bug + // in Symbian's C++ compiler that prevents it from picking the right + // overload between: + // + // PrintTo(const T& x, ...); + // PrintTo(T* x, ...); + DefaultPrintTo(IsContainerTest(0), is_pointer(), value, os); +} + +// The following list of PrintTo() overloads tells +// UniversalPrinter::Print() how to print standard types (built-in +// types, strings, plain arrays, and pointers). + +// Overloads for various char types. +GTEST_API_ void PrintTo(unsigned char c, ::std::ostream* os); +GTEST_API_ void PrintTo(signed char c, ::std::ostream* os); +inline void PrintTo(char c, ::std::ostream* os) { + // When printing a plain char, we always treat it as unsigned. This + // way, the output won't be affected by whether the compiler thinks + // char is signed or not. + PrintTo(static_cast(c), os); +} + +// Overloads for other simple built-in types. +inline void PrintTo(bool x, ::std::ostream* os) { + *os << (x ? "true" : "false"); +} + +// Overload for wchar_t type. +// Prints a wchar_t as a symbol if it is printable or as its internal +// code otherwise and also as its decimal code (except for L'\0'). +// The L'\0' char is printed as "L'\\0'". The decimal code is printed +// as signed integer when wchar_t is implemented by the compiler +// as a signed type and is printed as an unsigned integer when wchar_t +// is implemented as an unsigned type. +GTEST_API_ void PrintTo(wchar_t wc, ::std::ostream* os); + +// Overloads for C strings. +GTEST_API_ void PrintTo(const char* s, ::std::ostream* os); +inline void PrintTo(char* s, ::std::ostream* os) { + PrintTo(ImplicitCast_(s), os); +} + +// signed/unsigned char is often used for representing binary data, so +// we print pointers to it as void* to be safe. +inline void PrintTo(const signed char* s, ::std::ostream* os) { + PrintTo(ImplicitCast_(s), os); +} +inline void PrintTo(signed char* s, ::std::ostream* os) { + PrintTo(ImplicitCast_(s), os); +} +inline void PrintTo(const unsigned char* s, ::std::ostream* os) { + PrintTo(ImplicitCast_(s), os); +} +inline void PrintTo(unsigned char* s, ::std::ostream* os) { + PrintTo(ImplicitCast_(s), os); +} + +// MSVC can be configured to define wchar_t as a typedef of unsigned +// short. It defines _NATIVE_WCHAR_T_DEFINED when wchar_t is a native +// type. When wchar_t is a typedef, defining an overload for const +// wchar_t* would cause unsigned short* be printed as a wide string, +// possibly causing invalid memory accesses. +#if !defined(_MSC_VER) || defined(_NATIVE_WCHAR_T_DEFINED) +// Overloads for wide C strings +GTEST_API_ void PrintTo(const wchar_t* s, ::std::ostream* os); +inline void PrintTo(wchar_t* s, ::std::ostream* os) { + PrintTo(ImplicitCast_(s), os); +} +#endif + +// Overload for C arrays. Multi-dimensional arrays are printed +// properly. + +// Prints the given number of elements in an array, without printing +// the curly braces. +template +void PrintRawArrayTo(const T a[], size_t count, ::std::ostream* os) { + UniversalPrint(a[0], os); + for (size_t i = 1; i != count; i++) { + *os << ", "; + UniversalPrint(a[i], os); + } +} + +// Overloads for ::string and ::std::string. +#if GTEST_HAS_GLOBAL_STRING +GTEST_API_ void PrintStringTo(const ::string&s, ::std::ostream* os); +inline void PrintTo(const ::string& s, ::std::ostream* os) { + PrintStringTo(s, os); +} +#endif // GTEST_HAS_GLOBAL_STRING + +GTEST_API_ void PrintStringTo(const ::std::string&s, ::std::ostream* os); +inline void PrintTo(const ::std::string& s, ::std::ostream* os) { + PrintStringTo(s, os); +} + +// Overloads for ::wstring and ::std::wstring. +#if GTEST_HAS_GLOBAL_WSTRING +GTEST_API_ void PrintWideStringTo(const ::wstring&s, ::std::ostream* os); +inline void PrintTo(const ::wstring& s, ::std::ostream* os) { + PrintWideStringTo(s, os); +} +#endif // GTEST_HAS_GLOBAL_WSTRING + +#if GTEST_HAS_STD_WSTRING +GTEST_API_ void PrintWideStringTo(const ::std::wstring&s, ::std::ostream* os); +inline void PrintTo(const ::std::wstring& s, ::std::ostream* os) { + PrintWideStringTo(s, os); +} +#endif // GTEST_HAS_STD_WSTRING + +#if GTEST_HAS_TR1_TUPLE +// Overload for ::std::tr1::tuple. Needed for printing function arguments, +// which are packed as tuples. + +// Helper function for printing a tuple. T must be instantiated with +// a tuple type. +template +void PrintTupleTo(const T& t, ::std::ostream* os); + +// Overloaded PrintTo() for tuples of various arities. We support +// tuples of up-to 10 fields. The following implementation works +// regardless of whether tr1::tuple is implemented using the +// non-standard variadic template feature or not. + +inline void PrintTo(const ::std::tr1::tuple<>& t, ::std::ostream* os) { + PrintTupleTo(t, os); +} + +template +void PrintTo(const ::std::tr1::tuple& t, ::std::ostream* os) { + PrintTupleTo(t, os); +} + +template +void PrintTo(const ::std::tr1::tuple& t, ::std::ostream* os) { + PrintTupleTo(t, os); +} + +template +void PrintTo(const ::std::tr1::tuple& t, ::std::ostream* os) { + PrintTupleTo(t, os); +} + +template +void PrintTo(const ::std::tr1::tuple& t, ::std::ostream* os) { + PrintTupleTo(t, os); +} + +template +void PrintTo(const ::std::tr1::tuple& t, + ::std::ostream* os) { + PrintTupleTo(t, os); +} + +template +void PrintTo(const ::std::tr1::tuple& t, + ::std::ostream* os) { + PrintTupleTo(t, os); +} + +template +void PrintTo(const ::std::tr1::tuple& t, + ::std::ostream* os) { + PrintTupleTo(t, os); +} + +template +void PrintTo(const ::std::tr1::tuple& t, + ::std::ostream* os) { + PrintTupleTo(t, os); +} + +template +void PrintTo(const ::std::tr1::tuple& t, + ::std::ostream* os) { + PrintTupleTo(t, os); +} + +template +void PrintTo( + const ::std::tr1::tuple& t, + ::std::ostream* os) { + PrintTupleTo(t, os); +} +#endif // GTEST_HAS_TR1_TUPLE + +// Overload for std::pair. +template +void PrintTo(const ::std::pair& value, ::std::ostream* os) { + *os << '('; + // We cannot use UniversalPrint(value.first, os) here, as T1 may be + // a reference type. The same for printing value.second. + UniversalPrinter::Print(value.first, os); + *os << ", "; + UniversalPrinter::Print(value.second, os); + *os << ')'; +} + +// Implements printing a non-reference type T by letting the compiler +// pick the right overload of PrintTo() for T. +template +class UniversalPrinter { + public: + // MSVC warns about adding const to a function type, so we want to + // disable the warning. +#ifdef _MSC_VER +# pragma warning(push) // Saves the current warning state. +# pragma warning(disable:4180) // Temporarily disables warning 4180. +#endif // _MSC_VER + + // Note: we deliberately don't call this PrintTo(), as that name + // conflicts with ::testing::internal::PrintTo in the body of the + // function. + static void Print(const T& value, ::std::ostream* os) { + // By default, ::testing::internal::PrintTo() is used for printing + // the value. + // + // Thanks to Koenig look-up, if T is a class and has its own + // PrintTo() function defined in its namespace, that function will + // be visible here. Since it is more specific than the generic ones + // in ::testing::internal, it will be picked by the compiler in the + // following statement - exactly what we want. + PrintTo(value, os); + } + +#ifdef _MSC_VER +# pragma warning(pop) // Restores the warning state. +#endif // _MSC_VER +}; + +// UniversalPrintArray(begin, len, os) prints an array of 'len' +// elements, starting at address 'begin'. +template +void UniversalPrintArray(const T* begin, size_t len, ::std::ostream* os) { + if (len == 0) { + *os << "{}"; + } else { + *os << "{ "; + const size_t kThreshold = 18; + const size_t kChunkSize = 8; + // If the array has more than kThreshold elements, we'll have to + // omit some details by printing only the first and the last + // kChunkSize elements. + // TODO(wan@google.com): let the user control the threshold using a flag. + if (len <= kThreshold) { + PrintRawArrayTo(begin, len, os); + } else { + PrintRawArrayTo(begin, kChunkSize, os); + *os << ", ..., "; + PrintRawArrayTo(begin + len - kChunkSize, kChunkSize, os); + } + *os << " }"; + } +} +// This overload prints a (const) char array compactly. +GTEST_API_ void UniversalPrintArray( + const char* begin, size_t len, ::std::ostream* os); + +// This overload prints a (const) wchar_t array compactly. +GTEST_API_ void UniversalPrintArray( + const wchar_t* begin, size_t len, ::std::ostream* os); + +// Implements printing an array type T[N]. +template +class UniversalPrinter { + public: + // Prints the given array, omitting some elements when there are too + // many. + static void Print(const T (&a)[N], ::std::ostream* os) { + UniversalPrintArray(a, N, os); + } +}; + +// Implements printing a reference type T&. +template +class UniversalPrinter { + public: + // MSVC warns about adding const to a function type, so we want to + // disable the warning. +#ifdef _MSC_VER +# pragma warning(push) // Saves the current warning state. +# pragma warning(disable:4180) // Temporarily disables warning 4180. +#endif // _MSC_VER + + static void Print(const T& value, ::std::ostream* os) { + // Prints the address of the value. We use reinterpret_cast here + // as static_cast doesn't compile when T is a function type. + *os << "@" << reinterpret_cast(&value) << " "; + + // Then prints the value itself. + UniversalPrint(value, os); + } + +#ifdef _MSC_VER +# pragma warning(pop) // Restores the warning state. +#endif // _MSC_VER +}; + +// Prints a value tersely: for a reference type, the referenced value +// (but not the address) is printed; for a (const) char pointer, the +// NUL-terminated string (but not the pointer) is printed. + +template +class UniversalTersePrinter { + public: + static void Print(const T& value, ::std::ostream* os) { + UniversalPrint(value, os); + } +}; +template +class UniversalTersePrinter { + public: + static void Print(const T& value, ::std::ostream* os) { + UniversalPrint(value, os); + } +}; +template +class UniversalTersePrinter { + public: + static void Print(const T (&value)[N], ::std::ostream* os) { + UniversalPrinter::Print(value, os); + } +}; +template <> +class UniversalTersePrinter { + public: + static void Print(const char* str, ::std::ostream* os) { + if (str == NULL) { + *os << "NULL"; + } else { + UniversalPrint(string(str), os); + } + } +}; +template <> +class UniversalTersePrinter { + public: + static void Print(char* str, ::std::ostream* os) { + UniversalTersePrinter::Print(str, os); + } +}; + +#if GTEST_HAS_STD_WSTRING +template <> +class UniversalTersePrinter { + public: + static void Print(const wchar_t* str, ::std::ostream* os) { + if (str == NULL) { + *os << "NULL"; + } else { + UniversalPrint(::std::wstring(str), os); + } + } +}; +#endif + +template <> +class UniversalTersePrinter { + public: + static void Print(wchar_t* str, ::std::ostream* os) { + UniversalTersePrinter::Print(str, os); + } +}; + +template +void UniversalTersePrint(const T& value, ::std::ostream* os) { + UniversalTersePrinter::Print(value, os); +} + +// Prints a value using the type inferred by the compiler. The +// difference between this and UniversalTersePrint() is that for a +// (const) char pointer, this prints both the pointer and the +// NUL-terminated string. +template +void UniversalPrint(const T& value, ::std::ostream* os) { + // A workarond for the bug in VC++ 7.1 that prevents us from instantiating + // UniversalPrinter with T directly. + typedef T T1; + UniversalPrinter::Print(value, os); +} + +#if GTEST_HAS_TR1_TUPLE +typedef ::std::vector Strings; + +// This helper template allows PrintTo() for tuples and +// UniversalTersePrintTupleFieldsToStrings() to be defined by +// induction on the number of tuple fields. The idea is that +// TuplePrefixPrinter::PrintPrefixTo(t, os) prints the first N +// fields in tuple t, and can be defined in terms of +// TuplePrefixPrinter. + +// The inductive case. +template +struct TuplePrefixPrinter { + // Prints the first N fields of a tuple. + template + static void PrintPrefixTo(const Tuple& t, ::std::ostream* os) { + TuplePrefixPrinter::PrintPrefixTo(t, os); + *os << ", "; + UniversalPrinter::type> + ::Print(::std::tr1::get(t), os); + } + + // Tersely prints the first N fields of a tuple to a string vector, + // one element for each field. + template + static void TersePrintPrefixToStrings(const Tuple& t, Strings* strings) { + TuplePrefixPrinter::TersePrintPrefixToStrings(t, strings); + ::std::stringstream ss; + UniversalTersePrint(::std::tr1::get(t), &ss); + strings->push_back(ss.str()); + } +}; + +// Base cases. +template <> +struct TuplePrefixPrinter<0> { + template + static void PrintPrefixTo(const Tuple&, ::std::ostream*) {} + + template + static void TersePrintPrefixToStrings(const Tuple&, Strings*) {} +}; +// We have to specialize the entire TuplePrefixPrinter<> class +// template here, even though the definition of +// TersePrintPrefixToStrings() is the same as the generic version, as +// Embarcadero (formerly CodeGear, formerly Borland) C++ doesn't +// support specializing a method template of a class template. +template <> +struct TuplePrefixPrinter<1> { + template + static void PrintPrefixTo(const Tuple& t, ::std::ostream* os) { + UniversalPrinter::type>:: + Print(::std::tr1::get<0>(t), os); + } + + template + static void TersePrintPrefixToStrings(const Tuple& t, Strings* strings) { + ::std::stringstream ss; + UniversalTersePrint(::std::tr1::get<0>(t), &ss); + strings->push_back(ss.str()); + } +}; + +// Helper function for printing a tuple. T must be instantiated with +// a tuple type. +template +void PrintTupleTo(const T& t, ::std::ostream* os) { + *os << "("; + TuplePrefixPrinter< ::std::tr1::tuple_size::value>:: + PrintPrefixTo(t, os); + *os << ")"; +} + +// Prints the fields of a tuple tersely to a string vector, one +// element for each field. See the comment before +// UniversalTersePrint() for how we define "tersely". +template +Strings UniversalTersePrintTupleFieldsToStrings(const Tuple& value) { + Strings result; + TuplePrefixPrinter< ::std::tr1::tuple_size::value>:: + TersePrintPrefixToStrings(value, &result); + return result; +} +#endif // GTEST_HAS_TR1_TUPLE + +} // namespace internal + +template +::std::string PrintToString(const T& value) { + ::std::stringstream ss; + internal::UniversalTersePrinter::Print(value, &ss); + return ss.str(); +} + +} // namespace testing + +#endif // GTEST_INCLUDE_GTEST_GTEST_PRINTERS_H_ diff --git a/cpp/thirdparty/protobuf-2.3.0/gtest/include/gtest/gtest-spi.h b/cpp/thirdparty/protobuf-2.5.0/gtest/include/gtest/gtest-spi.h similarity index 97% rename from cpp/thirdparty/protobuf-2.3.0/gtest/include/gtest/gtest-spi.h rename to cpp/thirdparty/protobuf-2.5.0/gtest/include/gtest/gtest-spi.h index 2953411ba..f63fa9a1b 100644 --- a/cpp/thirdparty/protobuf-2.3.0/gtest/include/gtest/gtest-spi.h +++ b/cpp/thirdparty/protobuf-2.5.0/gtest/include/gtest/gtest-spi.h @@ -35,7 +35,7 @@ #ifndef GTEST_INCLUDE_GTEST_GTEST_SPI_H_ #define GTEST_INCLUDE_GTEST_GTEST_SPI_H_ -#include +#include "gtest/gtest.h" namespace testing { @@ -48,7 +48,7 @@ namespace testing { // generated in the same thread that created this object or it can intercept // all generated failures. The scope of this mock object can be controlled with // the second argument to the two arguments constructor. -class ScopedFakeTestPartResultReporter +class GTEST_API_ ScopedFakeTestPartResultReporter : public TestPartResultReporterInterface { public: // The two possible mocking modes of this object. @@ -93,17 +93,17 @@ namespace internal { // TestPartResultArray contains exactly one failure that has the given // type and contains the given substring. If that's not the case, a // non-fatal failure will be generated. -class SingleFailureChecker { +class GTEST_API_ SingleFailureChecker { public: // The constructor remembers the arguments. SingleFailureChecker(const TestPartResultArray* results, TestPartResult::Type type, - const char* substr); + const string& substr); ~SingleFailureChecker(); private: const TestPartResultArray* const results_; const TestPartResult::Type type_; - const String substr_; + const string substr_; GTEST_DISALLOW_COPY_AND_ASSIGN_(SingleFailureChecker); }; @@ -223,7 +223,7 @@ class SingleFailureChecker { (substr));\ {\ ::testing::ScopedFakeTestPartResultReporter gtest_reporter(\ - ::testing::ScopedFakeTestPartResultReporter::INTERCEPT_ALL_THREADS,\ + ::testing::ScopedFakeTestPartResultReporter::INTERCEPT_ALL_THREADS, \ >est_failures);\ if (::testing::internal::AlwaysTrue()) { statement; }\ }\ diff --git a/cpp/thirdparty/protobuf-2.3.0/gtest/include/gtest/gtest-test-part.h b/cpp/thirdparty/protobuf-2.5.0/gtest/include/gtest/gtest-test-part.h similarity index 83% rename from cpp/thirdparty/protobuf-2.3.0/gtest/include/gtest/gtest-test-part.h rename to cpp/thirdparty/protobuf-2.5.0/gtest/include/gtest/gtest-test-part.h index 58e7df9eb..77eb84483 100644 --- a/cpp/thirdparty/protobuf-2.3.0/gtest/include/gtest/gtest-test-part.h +++ b/cpp/thirdparty/protobuf-2.5.0/gtest/include/gtest/gtest-test-part.h @@ -34,8 +34,9 @@ #define GTEST_INCLUDE_GTEST_GTEST_TEST_PART_H_ #include -#include -#include +#include +#include "gtest/internal/gtest-internal.h" +#include "gtest/internal/gtest-string.h" namespace testing { @@ -43,7 +44,7 @@ namespace testing { // assertion or an explicit FAIL(), ADD_FAILURE(), or SUCCESS()). // // Don't inherit from TestPartResult as its destructor is not virtual. -class TestPartResult { +class GTEST_API_ TestPartResult { public: // The possible outcomes of a test part (i.e. an assertion or an // explicit SUCCEED(), FAIL(), or ADD_FAILURE()). @@ -56,15 +57,15 @@ class TestPartResult { // C'tor. TestPartResult does NOT have a default constructor. // Always use this constructor (with parameters) to create a // TestPartResult object. - TestPartResult(Type type, - const char* file_name, - int line_number, - const char* message) - : type_(type), - file_name_(file_name), - line_number_(line_number), - summary_(ExtractSummary(message)), - message_(message) { + TestPartResult(Type a_type, + const char* a_file_name, + int a_line_number, + const char* a_message) + : type_(a_type), + file_name_(a_file_name == NULL ? "" : a_file_name), + line_number_(a_line_number), + summary_(ExtractSummary(a_message)), + message_(a_message) { } // Gets the outcome of the test part. @@ -72,7 +73,9 @@ class TestPartResult { // Gets the name of the source file where the test part took place, or // NULL if it's unknown. - const char* file_name() const { return file_name_.c_str(); } + const char* file_name() const { + return file_name_.empty() ? NULL : file_name_.c_str(); + } // Gets the line in the source file where the test part took place, // or -1 if it's unknown. @@ -95,21 +98,22 @@ class TestPartResult { // Returns true iff the test part fatally failed. bool fatally_failed() const { return type_ == kFatalFailure; } + private: Type type_; // Gets the summary of the failure message by omitting the stack // trace in it. - static internal::String ExtractSummary(const char* message); + static std::string ExtractSummary(const char* message); // The name of the source file where the test part took place, or - // NULL if the source file is unknown. - internal::String file_name_; + // "" if the source file is unknown. + std::string file_name_; // The line in the source file where the test part took place, or -1 // if the line number is unknown. int line_number_; - internal::String summary_; // The test failure summary. - internal::String message_; // The test failure message. + std::string summary_; // The test failure summary. + std::string message_; // The test failure message. }; // Prints a TestPartResult object. @@ -117,15 +121,11 @@ std::ostream& operator<<(std::ostream& os, const TestPartResult& result); // An array of TestPartResult objects. // -// We define this class as we cannot use STL containers when compiling -// Google Test with MSVC 7.1 and exceptions disabled. -// // Don't inherit from TestPartResultArray as its destructor is not // virtual. -class TestPartResultArray { +class GTEST_API_ TestPartResultArray { public: - TestPartResultArray(); - ~TestPartResultArray(); + TestPartResultArray() {} // Appends the given TestPartResult to the array. void Append(const TestPartResult& result); @@ -135,9 +135,9 @@ class TestPartResultArray { // Returns the number of TestPartResult objects in the array. int size() const; + private: - // Internally we use a Vector to implement the array. - internal::Vector* const array_; + std::vector array_; GTEST_DISALLOW_COPY_AND_ASSIGN_(TestPartResultArray); }; @@ -158,7 +158,8 @@ namespace internal { // reported, it only delegates the reporting to the former result reporter. // The original result reporter is restored in the destructor. // INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM. -class HasNewFatalFailureHelper : public TestPartResultReporterInterface { +class GTEST_API_ HasNewFatalFailureHelper + : public TestPartResultReporterInterface { public: HasNewFatalFailureHelper(); virtual ~HasNewFatalFailureHelper(); diff --git a/cpp/thirdparty/protobuf-2.3.0/gtest/include/gtest/gtest-typed-test.h b/cpp/thirdparty/protobuf-2.5.0/gtest/include/gtest/gtest-typed-test.h similarity index 87% rename from cpp/thirdparty/protobuf-2.3.0/gtest/include/gtest/gtest-typed-test.h rename to cpp/thirdparty/protobuf-2.5.0/gtest/include/gtest/gtest-typed-test.h index 519edfe92..fe1e83b27 100644 --- a/cpp/thirdparty/protobuf-2.3.0/gtest/include/gtest/gtest-typed-test.h +++ b/cpp/thirdparty/protobuf-2.5.0/gtest/include/gtest/gtest-typed-test.h @@ -146,8 +146,8 @@ INSTANTIATE_TYPED_TEST_CASE_P(My, FooTest, MyTypes); #endif // 0 -#include -#include +#include "gtest/internal/gtest-port.h" +#include "gtest/internal/gtest-type-util.h" // Implements typed tests. @@ -157,13 +157,16 @@ INSTANTIATE_TYPED_TEST_CASE_P(My, FooTest, MyTypes); // // Expands to the name of the typedef for the type parameters of the // given test case. -#define GTEST_TYPE_PARAMS_(TestCaseName) gtest_type_params_##TestCaseName##_ +# define GTEST_TYPE_PARAMS_(TestCaseName) gtest_type_params_##TestCaseName##_ -#define TYPED_TEST_CASE(CaseName, Types) \ - typedef ::testing::internal::TypeList::type \ +// The 'Types' template argument below must have spaces around it +// since some compilers may choke on '>>' when passing a template +// instance (e.g. Types) +# define TYPED_TEST_CASE(CaseName, Types) \ + typedef ::testing::internal::TypeList< Types >::type \ GTEST_TYPE_PARAMS_(CaseName) -#define TYPED_TEST(CaseName, TestName) \ +# define TYPED_TEST(CaseName, TestName) \ template \ class GTEST_TEST_CLASS_NAME_(CaseName, TestName) \ : public CaseName { \ @@ -172,7 +175,7 @@ INSTANTIATE_TYPED_TEST_CASE_P(My, FooTest, MyTypes); typedef gtest_TypeParam_ TypeParam; \ virtual void TestBody(); \ }; \ - bool gtest_##CaseName##_##TestName##_registered_ = \ + bool gtest_##CaseName##_##TestName##_registered_ GTEST_ATTRIBUTE_UNUSED_ = \ ::testing::internal::TypeParameterizedTest< \ CaseName, \ ::testing::internal::TemplateSel< \ @@ -193,31 +196,31 @@ INSTANTIATE_TYPED_TEST_CASE_P(My, FooTest, MyTypes); // Expands to the namespace name that the type-parameterized tests for // the given type-parameterized test case are defined in. The exact // name of the namespace is subject to change without notice. -#define GTEST_CASE_NAMESPACE_(TestCaseName) \ +# define GTEST_CASE_NAMESPACE_(TestCaseName) \ gtest_case_##TestCaseName##_ // INTERNAL IMPLEMENTATION - DO NOT USE IN USER CODE. // // Expands to the name of the variable used to remember the names of // the defined tests in the given test case. -#define GTEST_TYPED_TEST_CASE_P_STATE_(TestCaseName) \ +# define GTEST_TYPED_TEST_CASE_P_STATE_(TestCaseName) \ gtest_typed_test_case_p_state_##TestCaseName##_ // INTERNAL IMPLEMENTATION - DO NOT USE IN USER CODE DIRECTLY. // // Expands to the name of the variable used to remember the names of // the registered tests in the given test case. -#define GTEST_REGISTERED_TEST_NAMES_(TestCaseName) \ +# define GTEST_REGISTERED_TEST_NAMES_(TestCaseName) \ gtest_registered_test_names_##TestCaseName##_ // The variables defined in the type-parameterized test macros are // static as typically these macros are used in a .h file that can be // #included in multiple translation units linked together. -#define TYPED_TEST_CASE_P(CaseName) \ +# define TYPED_TEST_CASE_P(CaseName) \ static ::testing::internal::TypedTestCasePState \ GTEST_TYPED_TEST_CASE_P_STATE_(CaseName) -#define TYPED_TEST_P(CaseName, TestName) \ +# define TYPED_TEST_P(CaseName, TestName) \ namespace GTEST_CASE_NAMESPACE_(CaseName) { \ template \ class TestName : public CaseName { \ @@ -226,14 +229,14 @@ INSTANTIATE_TYPED_TEST_CASE_P(My, FooTest, MyTypes); typedef gtest_TypeParam_ TypeParam; \ virtual void TestBody(); \ }; \ - static bool gtest_##TestName##_defined_ = \ + static bool gtest_##TestName##_defined_ GTEST_ATTRIBUTE_UNUSED_ = \ GTEST_TYPED_TEST_CASE_P_STATE_(CaseName).AddTestName(\ __FILE__, __LINE__, #CaseName, #TestName); \ } \ template \ void GTEST_CASE_NAMESPACE_(CaseName)::TestName::TestBody() -#define REGISTER_TYPED_TEST_CASE_P(CaseName, ...) \ +# define REGISTER_TYPED_TEST_CASE_P(CaseName, ...) \ namespace GTEST_CASE_NAMESPACE_(CaseName) { \ typedef ::testing::internal::Templates<__VA_ARGS__>::type gtest_AllTests_; \ } \ @@ -241,11 +244,14 @@ INSTANTIATE_TYPED_TEST_CASE_P(My, FooTest, MyTypes); GTEST_TYPED_TEST_CASE_P_STATE_(CaseName).VerifyRegisteredTestNames(\ __FILE__, __LINE__, #__VA_ARGS__) -#define INSTANTIATE_TYPED_TEST_CASE_P(Prefix, CaseName, Types) \ - bool gtest_##Prefix##_##CaseName = \ +// The 'Types' template argument below must have spaces around it +// since some compilers may choke on '>>' when passing a template +// instance (e.g. Types) +# define INSTANTIATE_TYPED_TEST_CASE_P(Prefix, CaseName, Types) \ + bool gtest_##Prefix##_##CaseName GTEST_ATTRIBUTE_UNUSED_ = \ ::testing::internal::TypeParameterizedTestCase::type>::Register(\ + ::testing::internal::TypeList< Types >::type>::Register(\ #Prefix, #CaseName, GTEST_REGISTERED_TEST_NAMES_(CaseName)) #endif // GTEST_HAS_TYPED_TEST_P diff --git a/cpp/thirdparty/protobuf-2.3.0/gtest/include/gtest/gtest.h b/cpp/thirdparty/protobuf-2.5.0/gtest/include/gtest/gtest.h similarity index 72% rename from cpp/thirdparty/protobuf-2.3.0/gtest/include/gtest/gtest.h rename to cpp/thirdparty/protobuf-2.5.0/gtest/include/gtest/gtest.h index 9be15fbea..9ecb14566 100644 --- a/cpp/thirdparty/protobuf-2.3.0/gtest/include/gtest/gtest.h +++ b/cpp/thirdparty/protobuf-2.5.0/gtest/include/gtest/gtest.h @@ -52,34 +52,33 @@ #define GTEST_INCLUDE_GTEST_GTEST_H_ #include -#include -#include -#include -#include -#include -#include -#include -#include +#include +#include + +#include "gtest/internal/gtest-internal.h" +#include "gtest/internal/gtest-string.h" +#include "gtest/gtest-death-test.h" +#include "gtest/gtest-message.h" +#include "gtest/gtest-param-test.h" +#include "gtest/gtest-printers.h" +#include "gtest/gtest_prod.h" +#include "gtest/gtest-test-part.h" +#include "gtest/gtest-typed-test.h" // Depending on the platform, different string classes are available. -// On Windows, ::std::string compiles only when exceptions are -// enabled. On Linux, in addition to ::std::string, Google also makes -// use of class ::string, which has the same interface as -// ::std::string, but has a different implementation. -// -// The user can tell us whether ::std::string is available in his -// environment by defining the macro GTEST_HAS_STD_STRING to either 1 -// or 0 on the compiler command line. He can also define -// GTEST_HAS_GLOBAL_STRING to 1 to indicate that ::string is available -// AND is a distinct type to ::std::string, or define it to 0 to -// indicate otherwise. +// On Linux, in addition to ::std::string, Google also makes use of +// class ::string, which has the same interface as ::std::string, but +// has a different implementation. +// +// The user can define GTEST_HAS_GLOBAL_STRING to 1 to indicate that +// ::string is available AND is a distinct type to ::std::string, or +// define it to 0 to indicate otherwise. // // If the user's ::std::string and ::string are the same class due to -// aliasing, he should define GTEST_HAS_STD_STRING to 1 and -// GTEST_HAS_GLOBAL_STRING to 0. +// aliasing, he should define GTEST_HAS_GLOBAL_STRING to 0. // -// If the user doesn't define GTEST_HAS_STD_STRING and/or -// GTEST_HAS_GLOBAL_STRING, they are defined heuristically. +// If the user doesn't define GTEST_HAS_GLOBAL_STRING, it is defined +// heuristically. namespace testing { @@ -139,6 +138,11 @@ GTEST_DECLARE_int32_(stack_trace_depth); // non-zero code otherwise. GTEST_DECLARE_bool_(throw_on_failure); +// When this flag is set with a "host:port" string, on supported +// platforms test results are streamed to the specified port on +// the specified host machine. +GTEST_DECLARE_string_(stream_result_to); + // The upper limit for valid stack trace depths. const int kMaxStackTraceDepth = 100; @@ -150,18 +154,15 @@ class ExecDeathTest; class NoExecDeathTest; class FinalSuccessChecker; class GTestFlagSaver; -class TestInfoImpl; class TestResultAccessor; class TestEventListenersAccessor; class TestEventRepeater; class WindowsDeathTest; class UnitTestImpl* GetUnitTestImpl(); void ReportFailureInUnknownLocation(TestPartResult::Type result_type, - const String& message); -class PrettyUnitTestResultPrinter; -class XmlUnitTestResultPrinter; + const std::string& message); -// Converts a streamable value to a String. A NULL pointer is +// Converts a streamable value to an std::string. A NULL pointer is // converted to "(null)". When the input value is a ::string, // ::std::string, ::wstring, or ::std::wstring object, each NUL // character in it is replaced with "\\0". @@ -169,72 +170,166 @@ class XmlUnitTestResultPrinter; // to the definition of the Message class, required by the ARM // compiler. template -String StreamableToString(const T& streamable) { +std::string StreamableToString(const T& streamable) { return (Message() << streamable).GetString(); } } // namespace internal +// The friend relationship of some of these classes is cyclic. +// If we don't forward declare them the compiler might confuse the classes +// in friendship clauses with same named classes on the scope. +class Test; +class TestCase; +class TestInfo; +class UnitTest; + // A class for indicating whether an assertion was successful. When // the assertion wasn't successful, the AssertionResult object -// remembers a non-empty message that described how it failed. +// remembers a non-empty message that describes how it failed. // -// This class is useful for defining predicate-format functions to be -// used with predicate assertions (ASSERT_PRED_FORMAT*, etc). -// -// The constructor of AssertionResult is private. To create an -// instance of this class, use one of the factory functions +// To create an instance of this class, use one of the factory functions // (AssertionSuccess() and AssertionFailure()). // -// For example, in order to be able to write: +// This class is useful for two purposes: +// 1. Defining predicate functions to be used with Boolean test assertions +// EXPECT_TRUE/EXPECT_FALSE and their ASSERT_ counterparts +// 2. Defining predicate-format functions to be +// used with predicate assertions (ASSERT_PRED_FORMAT*, etc). +// +// For example, if you define IsEven predicate: +// +// testing::AssertionResult IsEven(int n) { +// if ((n % 2) == 0) +// return testing::AssertionSuccess(); +// else +// return testing::AssertionFailure() << n << " is odd"; +// } +// +// Then the failed expectation EXPECT_TRUE(IsEven(Fib(5))) +// will print the message +// +// Value of: IsEven(Fib(5)) +// Actual: false (5 is odd) +// Expected: true +// +// instead of a more opaque +// +// Value of: IsEven(Fib(5)) +// Actual: false +// Expected: true +// +// in case IsEven is a simple Boolean predicate. +// +// If you expect your predicate to be reused and want to support informative +// messages in EXPECT_FALSE and ASSERT_FALSE (negative assertions show up +// about half as often as positive ones in our tests), supply messages for +// both success and failure cases: +// +// testing::AssertionResult IsEven(int n) { +// if ((n % 2) == 0) +// return testing::AssertionSuccess() << n << " is even"; +// else +// return testing::AssertionFailure() << n << " is odd"; +// } +// +// Then a statement EXPECT_FALSE(IsEven(Fib(6))) will print +// +// Value of: IsEven(Fib(6)) +// Actual: true (8 is even) +// Expected: false +// +// NB: Predicates that support negative Boolean assertions have reduced +// performance in positive ones so be careful not to use them in tests +// that have lots (tens of thousands) of positive Boolean assertions. +// +// To use this class with EXPECT_PRED_FORMAT assertions such as: // // // Verifies that Foo() returns an even number. // EXPECT_PRED_FORMAT1(IsEven, Foo()); // -// you just need to define: +// you need to define: // // testing::AssertionResult IsEven(const char* expr, int n) { -// if ((n % 2) == 0) return testing::AssertionSuccess(); -// -// Message msg; -// msg << "Expected: " << expr << " is even\n" -// << " Actual: it's " << n; -// return testing::AssertionFailure(msg); +// if ((n % 2) == 0) +// return testing::AssertionSuccess(); +// else +// return testing::AssertionFailure() +// << "Expected: " << expr << " is even\n Actual: it's " << n; // } // // If Foo() returns 5, you will see the following message: // // Expected: Foo() is even // Actual: it's 5 -class AssertionResult { +// +class GTEST_API_ AssertionResult { public: - // Declares factory functions for making successful and failed - // assertion results as friends. - friend AssertionResult AssertionSuccess(); - friend AssertionResult AssertionFailure(const Message&); + // Copy constructor. + // Used in EXPECT_TRUE/FALSE(assertion_result). + AssertionResult(const AssertionResult& other); + // Used in the EXPECT_TRUE/FALSE(bool_expression). + explicit AssertionResult(bool success) : success_(success) {} // Returns true iff the assertion succeeded. - operator bool() const { return failure_message_.c_str() == NULL; } // NOLINT + operator bool() const { return success_; } // NOLINT + + // Returns the assertion's negation. Used with EXPECT/ASSERT_FALSE. + AssertionResult operator!() const; + + // Returns the text streamed into this AssertionResult. Test assertions + // use it when they fail (i.e., the predicate's outcome doesn't match the + // assertion's expectation). When nothing has been streamed into the + // object, returns an empty string. + const char* message() const { + return message_.get() != NULL ? message_->c_str() : ""; + } + // TODO(vladl@google.com): Remove this after making sure no clients use it. + // Deprecated; please use message() instead. + const char* failure_message() const { return message(); } + + // Streams a custom failure message into this object. + template AssertionResult& operator<<(const T& value) { + AppendMessage(Message() << value); + return *this; + } - // Returns the assertion's failure message. - const char* failure_message() const { return failure_message_.c_str(); } + // Allows streaming basic output manipulators such as endl or flush into + // this object. + AssertionResult& operator<<( + ::std::ostream& (*basic_manipulator)(::std::ostream& stream)) { + AppendMessage(Message() << basic_manipulator); + return *this; + } private: - // The default constructor. It is used when the assertion succeeded. - AssertionResult() {} + // Appends the contents of message to message_. + void AppendMessage(const Message& a_message) { + if (message_.get() == NULL) + message_.reset(new ::std::string); + message_->append(a_message.GetString().c_str()); + } - // The constructor used when the assertion failed. - explicit AssertionResult(const internal::String& failure_message); + // Stores result of the assertion predicate. + bool success_; + // Stores the message describing the condition in case the expectation + // construct is not satisfied with the predicate's outcome. + // Referenced via a pointer to avoid taking too much stack frame space + // with test assertions. + internal::scoped_ptr< ::std::string> message_; - // Stores the assertion's failure message. - internal::String failure_message_; + GTEST_DISALLOW_ASSIGN_(AssertionResult); }; // Makes a successful assertion result. -AssertionResult AssertionSuccess(); +GTEST_API_ AssertionResult AssertionSuccess(); + +// Makes a failed assertion result. +GTEST_API_ AssertionResult AssertionFailure(); // Makes a failed assertion result with the given failure message. -AssertionResult AssertionFailure(const Message& msg); +// Deprecated; use AssertionFailure() << msg. +GTEST_API_ AssertionResult AssertionFailure(const Message& msg); // The abstract class that all tests inherit from. // @@ -259,9 +354,9 @@ AssertionResult AssertionFailure(const Message& msg); // TEST_F(FooTest, Baz) { ... } // // Test is not copyable. -class Test { +class GTEST_API_ Test { public: - friend class internal::TestInfoImpl; + friend class TestInfo; // Defines types for pointers to functions that set up and tear down // a test case. @@ -338,6 +433,10 @@ class Test { // Sets up, executes, and tears down the test. void Run(); + // Deletes self. We deliberately pick an unusual name for this + // internal method to avoid clashing with names used in user TESTs. + void DeleteSelf_() { delete this; } + // Uses a GTestFlagSaver to save and restore all Google Test flags. const internal::GTestFlagSaver* const gtest_flag_saver_; @@ -375,8 +474,8 @@ class TestProperty { // C'tor. TestProperty does NOT have a default constructor. // Always use this constructor (with parameters) to create a // TestProperty object. - TestProperty(const char* key, const char* value) : - key_(key), value_(value) { + TestProperty(const char* a_key, const char* a_value) : + key_(a_key), value_(a_value) { } // Gets the user supplied key. @@ -396,9 +495,9 @@ class TestProperty { private: // The key supplied by the user. - internal::String key_; + std::string key_; // The value supplied by the user. - internal::String value_; + std::string value_; }; // The result of a single Test. This includes a list of @@ -407,7 +506,7 @@ class TestProperty { // the Test. // // TestResult is not copyable. -class TestResult { +class GTEST_API_ TestResult { public: // Creates an empty TestResult. TestResult(); @@ -452,19 +551,18 @@ class TestResult { friend class UnitTest; friend class internal::DefaultGlobalTestPartResultReporter; friend class internal::ExecDeathTest; - friend class internal::TestInfoImpl; friend class internal::TestResultAccessor; friend class internal::UnitTestImpl; friend class internal::WindowsDeathTest; // Gets the vector of TestPartResults. - const internal::Vector& test_part_results() const { - return *test_part_results_; + const std::vector& test_part_results() const { + return test_part_results_; } // Gets the vector of TestProperties. - const internal::Vector& test_properties() const { - return *test_properties_; + const std::vector& test_properties() const { + return test_properties_; } // Sets the elapsed time. @@ -502,9 +600,9 @@ class TestResult { internal::Mutex test_properites_mutex_; // The vector of TestPartResults - internal::scoped_ptr > test_part_results_; + std::vector test_part_results_; // The vector of TestProperties - internal::scoped_ptr > test_properties_; + std::vector test_properties_; // Running count of death tests. int death_test_count_; // The elapsed time, in milliseconds. @@ -525,23 +623,33 @@ class TestResult { // The constructor of TestInfo registers itself with the UnitTest // singleton such that the RUN_ALL_TESTS() macro knows which tests to // run. -class TestInfo { +class GTEST_API_ TestInfo { public: // Destructs a TestInfo object. This function is not virtual, so // don't inherit from TestInfo. ~TestInfo(); // Returns the test case name. - const char* test_case_name() const; + const char* test_case_name() const { return test_case_name_.c_str(); } // Returns the test name. - const char* name() const; + const char* name() const { return name_.c_str(); } - // Returns the test case comment. - const char* test_case_comment() const; + // Returns the name of the parameter type, or NULL if this is not a typed + // or a type-parameterized test. + const char* type_param() const { + if (type_param_.get() != NULL) + return type_param_->c_str(); + return NULL; + } - // Returns the test comment. - const char* comment() const; + // Returns the text representation of the value parameter, or NULL if this + // is not a value-parameterized test. + const char* value_param() const { + if (value_param_.get() != NULL) + return value_param_->c_str(); + return NULL; + } // Returns true if this test should run, that is if the test is not disabled // (or it is disabled but the also_run_disabled_tests flag has been specified) @@ -559,10 +667,10 @@ class TestInfo { // // For example, *A*:Foo.* is a filter that matches any string that // contains the character 'A' or starts with "Foo.". - bool should_run() const; + bool should_run() const { return should_run_; } // Returns the result of the test. - const TestResult* result() const; + const TestResult* result() const { return &result_; } private: #if GTEST_HAS_DEATH_TEST @@ -570,36 +678,58 @@ class TestInfo { #endif // GTEST_HAS_DEATH_TEST friend class Test; friend class TestCase; - friend class internal::TestInfoImpl; friend class internal::UnitTestImpl; friend TestInfo* internal::MakeAndRegisterTestInfo( const char* test_case_name, const char* name, - const char* test_case_comment, const char* comment, + const char* type_param, + const char* value_param, internal::TypeId fixture_class_id, Test::SetUpTestCaseFunc set_up_tc, Test::TearDownTestCaseFunc tear_down_tc, internal::TestFactoryBase* factory); - // Returns true if this test matches the user-specified filter. - bool matches_filter() const; - - // Increments the number of death tests encountered in this test so - // far. - int increment_death_test_count(); - - // Accessors for the implementation object. - internal::TestInfoImpl* impl() { return impl_; } - const internal::TestInfoImpl* impl() const { return impl_; } - // Constructs a TestInfo object. The newly constructed instance assumes // ownership of the factory object. TestInfo(const char* test_case_name, const char* name, - const char* test_case_comment, const char* comment, + const char* a_type_param, + const char* a_value_param, internal::TypeId fixture_class_id, internal::TestFactoryBase* factory); - // An opaque implementation object. - internal::TestInfoImpl* impl_; + // Increments the number of death tests encountered in this test so + // far. + int increment_death_test_count() { + return result_.increment_death_test_count(); + } + + // Creates the test object, runs it, records its result, and then + // deletes it. + void Run(); + + static void ClearTestResult(TestInfo* test_info) { + test_info->result_.Clear(); + } + + // These fields are immutable properties of the test. + const std::string test_case_name_; // Test case name + const std::string name_; // Test name + // Name of the parameter type, or NULL if this is not a typed or a + // type-parameterized test. + const internal::scoped_ptr type_param_; + // Text representation of the value parameter, or NULL if this is not a + // value-parameterized test. + const internal::scoped_ptr value_param_; + const internal::TypeId fixture_class_id_; // ID of the test fixture class + bool should_run_; // True iff this test should run + bool is_disabled_; // True iff this test is disabled + bool matches_filter_; // True if this test matches the + // user-specified filter. + internal::TestFactoryBase* const factory_; // The factory that creates + // the test object + + // This field is mutable and needs to be reset before running the + // test for the second time. + TestResult result_; GTEST_DISALLOW_COPY_AND_ASSIGN_(TestInfo); }; @@ -607,7 +737,7 @@ class TestInfo { // A test case, which consists of a vector of TestInfos. // // TestCase is not copyable. -class TestCase { +class GTEST_API_ TestCase { public: // Creates a TestCase with the given name. // @@ -617,9 +747,11 @@ class TestCase { // Arguments: // // name: name of the test case + // a_type_param: the name of the test's type parameter, or NULL if + // this is not a type-parameterized test. // set_up_tc: pointer to the function that sets up the test case // tear_down_tc: pointer to the function that tears down the test case - TestCase(const char* name, const char* comment, + TestCase(const char* name, const char* a_type_param, Test::SetUpTestCaseFunc set_up_tc, Test::TearDownTestCaseFunc tear_down_tc); @@ -629,8 +761,13 @@ class TestCase { // Gets the name of the TestCase. const char* name() const { return name_.c_str(); } - // Returns the test case comment. - const char* comment() const { return comment_.c_str(); } + // Returns the name of the parameter type, or NULL if this is not a + // type-parameterized test case. + const char* type_param() const { + if (type_param_.get() != NULL) + return type_param_->c_str(); + return NULL; + } // Returns true if any test in this test case should run. bool should_run() const { return should_run_; } @@ -668,11 +805,11 @@ class TestCase { friend class internal::UnitTestImpl; // Gets the (mutable) vector of TestInfos in this TestCase. - internal::Vector& test_info_list() { return *test_info_list_; } + std::vector& test_info_list() { return test_info_list_; } // Gets the (immutable) vector of TestInfos in this TestCase. - const internal::Vector & test_info_list() const { - return *test_info_list_; + const std::vector& test_info_list() const { + return test_info_list_; } // Returns the i-th test among all the tests. i can range from 0 to @@ -697,17 +834,33 @@ class TestCase { // Runs every test in this TestCase. void Run(); + // Runs SetUpTestCase() for this TestCase. This wrapper is needed + // for catching exceptions thrown from SetUpTestCase(). + void RunSetUpTestCase() { (*set_up_tc_)(); } + + // Runs TearDownTestCase() for this TestCase. This wrapper is + // needed for catching exceptions thrown from TearDownTestCase(). + void RunTearDownTestCase() { (*tear_down_tc_)(); } + // Returns true iff test passed. - static bool TestPassed(const TestInfo * test_info); + static bool TestPassed(const TestInfo* test_info) { + return test_info->should_run() && test_info->result()->Passed(); + } // Returns true iff test failed. - static bool TestFailed(const TestInfo * test_info); + static bool TestFailed(const TestInfo* test_info) { + return test_info->should_run() && test_info->result()->Failed(); + } // Returns true iff test is disabled. - static bool TestDisabled(const TestInfo * test_info); + static bool TestDisabled(const TestInfo* test_info) { + return test_info->is_disabled_; + } // Returns true if the given test should run. - static bool ShouldRunTest(const TestInfo *test_info); + static bool ShouldRunTest(const TestInfo* test_info) { + return test_info->should_run(); + } // Shuffles the tests in this test case. void ShuffleTests(internal::Random* random); @@ -716,16 +869,17 @@ class TestCase { void UnshuffleTests(); // Name of the test case. - internal::String name_; - // Comment on the test case. - internal::String comment_; + std::string name_; + // Name of the parameter type, or NULL if this is not a typed or a + // type-parameterized test. + const internal::scoped_ptr type_param_; // The vector of TestInfos in their original order. It owns the // elements in the vector. - const internal::scoped_ptr > test_info_list_; + std::vector test_info_list_; // Provides a level of indirection for the test list to allow easy // shuffling and restoring the test order. The i-th element in this // vector is the index of the i-th test in the shuffled test list. - const internal::scoped_ptr > test_indices_; + std::vector test_indices_; // Pointer to the function that sets up the test case. Test::SetUpTestCaseFunc set_up_tc_; // Pointer to the function that tears down the test case. @@ -797,7 +951,7 @@ class TestEventListener { // Fired before the test starts. virtual void OnTestStart(const TestInfo& test_info) = 0; - // Fired after a failed assertion or a SUCCESS(). + // Fired after a failed assertion or a SUCCEED() invocation. virtual void OnTestPartResult(const TestPartResult& test_part_result) = 0; // Fired after the test ends. @@ -845,7 +999,7 @@ class EmptyTestEventListener : public TestEventListener { }; // TestEventListeners lets users add listeners to track events in Google Test. -class TestEventListeners { +class GTEST_API_ TestEventListeners { public: TestEventListeners(); ~TestEventListeners(); @@ -882,10 +1036,10 @@ class TestEventListeners { private: friend class TestCase; + friend class TestInfo; friend class internal::DefaultGlobalTestPartResultReporter; friend class internal::NoExecDeathTest; friend class internal::TestEventListenersAccessor; - friend class internal::TestInfoImpl; friend class internal::UnitTestImpl; // Returns repeater that broadcasts the TestEventListener events to all @@ -932,7 +1086,7 @@ class TestEventListeners { // // This class is thread-safe as long as the methods are called // according to their specification. -class UnitTest { +class GTEST_API_ UnitTest { public: // Gets the singleton UnitTest object. The first time this method // is called, a UnitTest object is constructed and returned. @@ -953,11 +1107,13 @@ class UnitTest { // Returns the TestCase object for the test that's currently running, // or NULL if no test is running. - const TestCase* current_test_case() const; + const TestCase* current_test_case() const + GTEST_LOCK_EXCLUDED_(mutex_); // Returns the TestInfo object for the test that's currently running, // or NULL if no test is running. - const TestInfo* current_test_info() const; + const TestInfo* current_test_info() const + GTEST_LOCK_EXCLUDED_(mutex_); // Returns the random seed used at the start of the current test run. int random_seed() const; @@ -967,7 +1123,8 @@ class UnitTest { // value-parameterized tests and instantiate and register them. // // INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM. - internal::ParameterizedTestCaseRegistry& parameterized_test_registry(); + internal::ParameterizedTestCaseRegistry& parameterized_test_registry() + GTEST_LOCK_EXCLUDED_(mutex_); #endif // GTEST_HAS_PARAM_TEST // Gets the number of successful test cases. @@ -998,6 +1155,10 @@ class UnitTest { // Gets the number of tests that should run. int test_to_run_count() const; + // Gets the time of the test program start, in ms from the start of the + // UNIX epoch. + TimeInMillis start_timestamp() const; + // Gets the elapsed time, in milliseconds. TimeInMillis elapsed_time() const; @@ -1035,8 +1196,9 @@ class UnitTest { void AddTestPartResult(TestPartResult::Type result_type, const char* file_name, int line_number, - const internal::String& message, - const internal::String& os_stack_trace); + const std::string& message, + const std::string& os_stack_trace) + GTEST_LOCK_EXCLUDED_(mutex_); // Adds a TestProperty to the current TestResult object. If the result already // contains a property with the same key, the value will be updated. @@ -1059,7 +1221,7 @@ class UnitTest { friend internal::UnitTestImpl* internal::GetUnitTestImpl(); friend void internal::ReportFailureInUnknownLocation( TestPartResult::Type result_type, - const internal::String& message); + const std::string& message); // Creates an empty UnitTest. UnitTest(); @@ -1069,10 +1231,12 @@ class UnitTest { // Pushes a trace defined by SCOPED_TRACE() on to the per-thread // Google Test trace stack. - void PushGTestTrace(const internal::TraceInfo& trace); + void PushGTestTrace(const internal::TraceInfo& trace) + GTEST_LOCK_EXCLUDED_(mutex_); // Pops a trace from the per-thread Google Test trace stack. - void PopGTestTrace(); + void PopGTestTrace() + GTEST_LOCK_EXCLUDED_(mutex_); // Protects mutable state in *impl_. This is mutable as some const // methods need to lock it too. @@ -1119,56 +1283,109 @@ inline Environment* AddGlobalTestEnvironment(Environment* env) { // updated. // // Calling the function for the second time has no user-visible effect. -void InitGoogleTest(int* argc, char** argv); +GTEST_API_ void InitGoogleTest(int* argc, char** argv); // This overloaded version can be used in Windows programs compiled in // UNICODE mode. -void InitGoogleTest(int* argc, wchar_t** argv); +GTEST_API_ void InitGoogleTest(int* argc, wchar_t** argv); namespace internal { -// These overloaded versions handle ::std::string and ::std::wstring. -#if GTEST_HAS_STD_STRING -inline String FormatForFailureMessage(const ::std::string& str) { - return (Message() << '"' << str << '"').GetString(); -} -#endif // GTEST_HAS_STD_STRING +// FormatForComparison::Format(value) formats a +// value of type ToPrint that is an operand of a comparison assertion +// (e.g. ASSERT_EQ). OtherOperand is the type of the other operand in +// the comparison, and is used to help determine the best way to +// format the value. In particular, when the value is a C string +// (char pointer) and the other operand is an STL string object, we +// want to format the C string as a string, since we know it is +// compared by value with the string object. If the value is a char +// pointer but the other operand is not an STL string object, we don't +// know whether the pointer is supposed to point to a NUL-terminated +// string, and thus want to print it as a pointer to be safe. +// +// INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM. -#if GTEST_HAS_STD_WSTRING -inline String FormatForFailureMessage(const ::std::wstring& wstr) { - return (Message() << "L\"" << wstr << '"').GetString(); -} -#endif // GTEST_HAS_STD_WSTRING +// The default case. +template +class FormatForComparison { + public: + static ::std::string Format(const ToPrint& value) { + return ::testing::PrintToString(value); + } +}; + +// Array. +template +class FormatForComparison { + public: + static ::std::string Format(const ToPrint* value) { + return FormatForComparison::Format(value); + } +}; + +// By default, print C string as pointers to be safe, as we don't know +// whether they actually point to a NUL-terminated string. + +#define GTEST_IMPL_FORMAT_C_STRING_AS_POINTER_(CharType) \ + template \ + class FormatForComparison { \ + public: \ + static ::std::string Format(CharType* value) { \ + return ::testing::PrintToString(static_cast(value)); \ + } \ + } + +GTEST_IMPL_FORMAT_C_STRING_AS_POINTER_(char); +GTEST_IMPL_FORMAT_C_STRING_AS_POINTER_(const char); +GTEST_IMPL_FORMAT_C_STRING_AS_POINTER_(wchar_t); +GTEST_IMPL_FORMAT_C_STRING_AS_POINTER_(const wchar_t); + +#undef GTEST_IMPL_FORMAT_C_STRING_AS_POINTER_ + +// If a C string is compared with an STL string object, we know it's meant +// to point to a NUL-terminated string, and thus can print it as a string. + +#define GTEST_IMPL_FORMAT_C_STRING_AS_STRING_(CharType, OtherStringType) \ + template <> \ + class FormatForComparison { \ + public: \ + static ::std::string Format(CharType* value) { \ + return ::testing::PrintToString(value); \ + } \ + } + +GTEST_IMPL_FORMAT_C_STRING_AS_STRING_(char, ::std::string); +GTEST_IMPL_FORMAT_C_STRING_AS_STRING_(const char, ::std::string); -// These overloaded versions handle ::string and ::wstring. #if GTEST_HAS_GLOBAL_STRING -inline String FormatForFailureMessage(const ::string& str) { - return (Message() << '"' << str << '"').GetString(); -} -#endif // GTEST_HAS_GLOBAL_STRING +GTEST_IMPL_FORMAT_C_STRING_AS_STRING_(char, ::string); +GTEST_IMPL_FORMAT_C_STRING_AS_STRING_(const char, ::string); +#endif #if GTEST_HAS_GLOBAL_WSTRING -inline String FormatForFailureMessage(const ::wstring& wstr) { - return (Message() << "L\"" << wstr << '"').GetString(); -} -#endif // GTEST_HAS_GLOBAL_WSTRING +GTEST_IMPL_FORMAT_C_STRING_AS_STRING_(wchar_t, ::wstring); +GTEST_IMPL_FORMAT_C_STRING_AS_STRING_(const wchar_t, ::wstring); +#endif + +#if GTEST_HAS_STD_WSTRING +GTEST_IMPL_FORMAT_C_STRING_AS_STRING_(wchar_t, ::std::wstring); +GTEST_IMPL_FORMAT_C_STRING_AS_STRING_(const wchar_t, ::std::wstring); +#endif + +#undef GTEST_IMPL_FORMAT_C_STRING_AS_STRING_ // Formats a comparison assertion (e.g. ASSERT_EQ, EXPECT_LT, and etc) // operand to be used in a failure message. The type (but not value) // of the other operand may affect the format. This allows us to // print a char* as a raw pointer when it is compared against another -// char*, and print it as a C string when it is compared against an -// std::string object, for example. -// -// The default implementation ignores the type of the other operand. -// Some specialized versions are used to handle formatting wide or -// narrow C strings. +// char* or void*, and print it as a C string when it is compared +// against an std::string object, for example. // // INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM. template -String FormatForComparisonFailureMessage(const T1& value, - const T2& /* other_operand */) { - return FormatForFailureMessage(value); +std::string FormatForComparisonFailureMessage( + const T1& value, const T2& /* other_operand */) { + return FormatForComparison::Format(value); } // The helper function for {ASSERT|EXPECT}_EQ. @@ -1178,9 +1395,9 @@ AssertionResult CmpHelperEQ(const char* expected_expression, const T1& expected, const T2& actual) { #ifdef _MSC_VER -#pragma warning(push) // Saves the current warning state. -#pragma warning(disable:4389) // Temporarily disables warning on - // signed/unsigned mismatch. +# pragma warning(push) // Saves the current warning state. +# pragma warning(disable:4389) // Temporarily disables warning on + // signed/unsigned mismatch. #endif if (expected == actual) { @@ -1188,7 +1405,7 @@ AssertionResult CmpHelperEQ(const char* expected_expression, } #ifdef _MSC_VER -#pragma warning(pop) // Restores the warning state. +# pragma warning(pop) // Restores the warning state. #endif return EqFailure(expected_expression, @@ -1201,10 +1418,10 @@ AssertionResult CmpHelperEQ(const char* expected_expression, // With this overloaded version, we allow anonymous enums to be used // in {ASSERT|EXPECT}_EQ when compiled with gcc 4, as anonymous enums // can be implicitly cast to BiggestInt. -AssertionResult CmpHelperEQ(const char* expected_expression, - const char* actual_expression, - BiggestInt expected, - BiggestInt actual); +GTEST_API_ AssertionResult CmpHelperEQ(const char* expected_expression, + const char* actual_expression, + BiggestInt expected, + BiggestInt actual); // The helper class for {ASSERT|EXPECT}_EQ. The template argument // lhs_is_null_literal is true iff the first argument to ASSERT_EQ() @@ -1239,7 +1456,7 @@ class EqHelper { }; // This specialization is used when the first argument to ASSERT_EQ() -// is a null pointer literal. +// is a null pointer literal, like NULL, false, or 0. template <> class EqHelper { public: @@ -1248,24 +1465,38 @@ class EqHelper { // NOT a pointer, e.g. ASSERT_EQ(0, AnIntFunction()) or // EXPECT_EQ(false, a_bool). template - static AssertionResult Compare(const char* expected_expression, - const char* actual_expression, - const T1& expected, - const T2& actual) { + static AssertionResult Compare( + const char* expected_expression, + const char* actual_expression, + const T1& expected, + const T2& actual, + // The following line prevents this overload from being considered if T2 + // is not a pointer type. We need this because ASSERT_EQ(NULL, my_ptr) + // expands to Compare("", "", NULL, my_ptr), which requires a conversion + // to match the Secret* in the other overload, which would otherwise make + // this template match better. + typename EnableIf::value>::type* = 0) { return CmpHelperEQ(expected_expression, actual_expression, expected, actual); } - // This version will be picked when the second argument to - // ASSERT_EQ() is a pointer, e.g. ASSERT_EQ(NULL, a_pointer). - template - static AssertionResult Compare(const char* expected_expression, - const char* actual_expression, - const T1& /* expected */, - T2* actual) { + // This version will be picked when the second argument to ASSERT_EQ() is a + // pointer, e.g. ASSERT_EQ(NULL, a_pointer). + template + static AssertionResult Compare( + const char* expected_expression, + const char* actual_expression, + // We used to have a second template parameter instead of Secret*. That + // template parameter would deduce to 'long', making this a better match + // than the first overload even without the first overload's EnableIf. + // Unfortunately, gcc with -Wconversion-null warns when "passing NULL to + // non-pointer argument" (even a deduced integral argument), so the old + // implementation caused warnings in user code. + Secret* /* expected (NULL) */, + T* actual) { // We already know that 'expected' is a null pointer. return CmpHelperEQ(expected_expression, actual_expression, - static_cast(NULL), actual); + static_cast(NULL), actual); } }; @@ -1286,79 +1517,78 @@ AssertionResult CmpHelper##op_name(const char* expr1, const char* expr2, \ if (val1 op val2) {\ return AssertionSuccess();\ } else {\ - Message msg;\ - msg << "Expected: (" << expr1 << ") " #op " (" << expr2\ + return AssertionFailure() \ + << "Expected: (" << expr1 << ") " #op " (" << expr2\ << "), actual: " << FormatForComparisonFailureMessage(val1, val2)\ << " vs " << FormatForComparisonFailureMessage(val2, val1);\ - return AssertionFailure(msg);\ }\ }\ -AssertionResult CmpHelper##op_name(const char* expr1, const char* expr2, \ - BiggestInt val1, BiggestInt val2); +GTEST_API_ AssertionResult CmpHelper##op_name(\ + const char* expr1, const char* expr2, BiggestInt val1, BiggestInt val2) // INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM. // Implements the helper function for {ASSERT|EXPECT}_NE -GTEST_IMPL_CMP_HELPER_(NE, !=) +GTEST_IMPL_CMP_HELPER_(NE, !=); // Implements the helper function for {ASSERT|EXPECT}_LE -GTEST_IMPL_CMP_HELPER_(LE, <=) +GTEST_IMPL_CMP_HELPER_(LE, <=); // Implements the helper function for {ASSERT|EXPECT}_LT -GTEST_IMPL_CMP_HELPER_(LT, < ) +GTEST_IMPL_CMP_HELPER_(LT, <); // Implements the helper function for {ASSERT|EXPECT}_GE -GTEST_IMPL_CMP_HELPER_(GE, >=) +GTEST_IMPL_CMP_HELPER_(GE, >=); // Implements the helper function for {ASSERT|EXPECT}_GT -GTEST_IMPL_CMP_HELPER_(GT, > ) +GTEST_IMPL_CMP_HELPER_(GT, >); #undef GTEST_IMPL_CMP_HELPER_ // The helper function for {ASSERT|EXPECT}_STREQ. // // INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM. -AssertionResult CmpHelperSTREQ(const char* expected_expression, - const char* actual_expression, - const char* expected, - const char* actual); +GTEST_API_ AssertionResult CmpHelperSTREQ(const char* expected_expression, + const char* actual_expression, + const char* expected, + const char* actual); // The helper function for {ASSERT|EXPECT}_STRCASEEQ. // // INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM. -AssertionResult CmpHelperSTRCASEEQ(const char* expected_expression, - const char* actual_expression, - const char* expected, - const char* actual); +GTEST_API_ AssertionResult CmpHelperSTRCASEEQ(const char* expected_expression, + const char* actual_expression, + const char* expected, + const char* actual); // The helper function for {ASSERT|EXPECT}_STRNE. // // INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM. -AssertionResult CmpHelperSTRNE(const char* s1_expression, - const char* s2_expression, - const char* s1, - const char* s2); +GTEST_API_ AssertionResult CmpHelperSTRNE(const char* s1_expression, + const char* s2_expression, + const char* s1, + const char* s2); // The helper function for {ASSERT|EXPECT}_STRCASENE. // // INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM. -AssertionResult CmpHelperSTRCASENE(const char* s1_expression, - const char* s2_expression, - const char* s1, - const char* s2); +GTEST_API_ AssertionResult CmpHelperSTRCASENE(const char* s1_expression, + const char* s2_expression, + const char* s1, + const char* s2); // Helper function for *_STREQ on wide strings. // // INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM. -AssertionResult CmpHelperSTREQ(const char* expected_expression, - const char* actual_expression, - const wchar_t* expected, - const wchar_t* actual); +GTEST_API_ AssertionResult CmpHelperSTREQ(const char* expected_expression, + const char* actual_expression, + const wchar_t* expected, + const wchar_t* actual); // Helper function for *_STRNE on wide strings. // // INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM. -AssertionResult CmpHelperSTRNE(const char* s1_expression, - const char* s2_expression, - const wchar_t* s1, - const wchar_t* s2); +GTEST_API_ AssertionResult CmpHelperSTRNE(const char* s1_expression, + const char* s2_expression, + const wchar_t* s1, + const wchar_t* s2); } // namespace internal @@ -1370,32 +1600,30 @@ AssertionResult CmpHelperSTRNE(const char* s1_expression, // // The {needle,haystack}_expr arguments are the stringified // expressions that generated the two real arguments. -AssertionResult IsSubstring( +GTEST_API_ AssertionResult IsSubstring( const char* needle_expr, const char* haystack_expr, const char* needle, const char* haystack); -AssertionResult IsSubstring( +GTEST_API_ AssertionResult IsSubstring( const char* needle_expr, const char* haystack_expr, const wchar_t* needle, const wchar_t* haystack); -AssertionResult IsNotSubstring( +GTEST_API_ AssertionResult IsNotSubstring( const char* needle_expr, const char* haystack_expr, const char* needle, const char* haystack); -AssertionResult IsNotSubstring( +GTEST_API_ AssertionResult IsNotSubstring( const char* needle_expr, const char* haystack_expr, const wchar_t* needle, const wchar_t* haystack); -#if GTEST_HAS_STD_STRING -AssertionResult IsSubstring( +GTEST_API_ AssertionResult IsSubstring( const char* needle_expr, const char* haystack_expr, const ::std::string& needle, const ::std::string& haystack); -AssertionResult IsNotSubstring( +GTEST_API_ AssertionResult IsNotSubstring( const char* needle_expr, const char* haystack_expr, const ::std::string& needle, const ::std::string& haystack); -#endif // GTEST_HAS_STD_STRING #if GTEST_HAS_STD_WSTRING -AssertionResult IsSubstring( +GTEST_API_ AssertionResult IsSubstring( const char* needle_expr, const char* haystack_expr, const ::std::wstring& needle, const ::std::wstring& haystack); -AssertionResult IsNotSubstring( +GTEST_API_ AssertionResult IsNotSubstring( const char* needle_expr, const char* haystack_expr, const ::std::wstring& needle, const ::std::wstring& haystack); #endif // GTEST_HAS_STD_WSTRING @@ -1420,34 +1648,34 @@ AssertionResult CmpHelperFloatingPointEQ(const char* expected_expression, return AssertionSuccess(); } - StrStream expected_ss; + ::std::stringstream expected_ss; expected_ss << std::setprecision(std::numeric_limits::digits10 + 2) << expected; - StrStream actual_ss; + ::std::stringstream actual_ss; actual_ss << std::setprecision(std::numeric_limits::digits10 + 2) << actual; return EqFailure(expected_expression, actual_expression, - StrStreamToString(&expected_ss), - StrStreamToString(&actual_ss), + StringStreamToString(&expected_ss), + StringStreamToString(&actual_ss), false); } // Helper function for implementing ASSERT_NEAR. // // INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM. -AssertionResult DoubleNearPredFormat(const char* expr1, - const char* expr2, - const char* abs_error_expr, - double val1, - double val2, - double abs_error); +GTEST_API_ AssertionResult DoubleNearPredFormat(const char* expr1, + const char* expr2, + const char* abs_error_expr, + double val1, + double val2, + double abs_error); // INTERNAL IMPLEMENTATION - DO NOT USE IN USER CODE. // A class that enables one to stream messages to assertion macros -class AssertHelper { +class GTEST_API_ AssertHelper { public: // Constructor. AssertHelper(TestPartResult::Type type, @@ -1473,9 +1701,9 @@ class AssertHelper { : type(t), file(srcfile), line(line_num), message(msg) { } TestPartResult::Type const type; - const char* const file; - int const line; - String const message; + const char* const file; + int const line; + std::string const message; private: GTEST_DISALLOW_COPY_AND_ASSIGN_(AssertHelperData); @@ -1489,9 +1717,13 @@ class AssertHelper { } // namespace internal #if GTEST_HAS_PARAM_TEST -// The abstract base class that all value-parameterized tests inherit from. +// The pure interface class that all value-parameterized tests inherit from. +// A value-parameterized class must inherit from both ::testing::Test and +// ::testing::WithParamInterface. In most cases that just means inheriting +// from ::testing::TestWithParam, but more complicated test hierarchies +// may need to inherit from Test and WithParamInterface at different levels. // -// This class adds support for accessing the test parameter value via +// This interface has support for accessing the test parameter value via // the GetParam() method. // // Use it with one of the parameter generator defining functions, like Range(), @@ -1520,12 +1752,16 @@ class AssertHelper { // INSTANTIATE_TEST_CASE_P(OneToTenRange, FooTest, ::testing::Range(1, 10)); template -class TestWithParam : public Test { +class WithParamInterface { public: typedef T ParamType; + virtual ~WithParamInterface() {} // The current parameter value. Is also available in the test fixture's - // constructor. + // constructor. This member function is non-static, even though it only + // references static data, to reduce the opportunity for incorrect uses + // like writing 'WithParamInterface::GetParam()' for a test that + // uses a fixture whose parameter type is int. const ParamType& GetParam() const { return *parameter_; } private: @@ -1538,12 +1774,19 @@ class TestWithParam : public Test { // Static value used for accessing parameter during a test lifetime. static const ParamType* parameter_; - // TestClass must be a subclass of TestWithParam. + // TestClass must be a subclass of WithParamInterface and Test. template friend class internal::ParameterizedTestFactory; }; template -const T* TestWithParam::parameter_ = NULL; +const T* WithParamInterface::parameter_ = NULL; + +// Most value-parameterized classes can ignore the existence of +// WithParamInterface, and can just inherit from ::testing::TestWithParam. + +template +class TestWithParam : public Test, public WithParamInterface { +}; #endif // GTEST_HAS_PARAM_TEST @@ -1565,21 +1808,33 @@ const T* TestWithParam::parameter_ = NULL; // usually want the fail-fast behavior of FAIL and ASSERT_*, but those // writing data-driven tests often find themselves using ADD_FAILURE // and EXPECT_* more. -// -// Examples: -// -// EXPECT_TRUE(server.StatusIsOK()); -// ASSERT_FALSE(server.HasPendingRequest(port)) -// << "There are still pending requests " << "on port " << port; // Generates a nonfatal failure with a generic message. #define ADD_FAILURE() GTEST_NONFATAL_FAILURE_("Failed") +// Generates a nonfatal failure at the given source file location with +// a generic message. +#define ADD_FAILURE_AT(file, line) \ + GTEST_MESSAGE_AT_(file, line, "Failed", \ + ::testing::TestPartResult::kNonFatalFailure) + // Generates a fatal failure with a generic message. -#define FAIL() GTEST_FATAL_FAILURE_("Failed") +#define GTEST_FAIL() GTEST_FATAL_FAILURE_("Failed") + +// Define this macro to 1 to omit the definition of FAIL(), which is a +// generic name and clashes with some other libraries. +#if !GTEST_DONT_DEFINE_FAIL +# define FAIL() GTEST_FAIL() +#endif // Generates a success with a generic message. -#define SUCCEED() GTEST_SUCCESS_("Succeeded") +#define GTEST_SUCCEED() GTEST_SUCCESS_("Succeeded") + +// Define this macro to 1 to omit the definition of SUCCEED(), which +// is a generic name and clashes with some other libraries. +#if !GTEST_DONT_DEFINE_SUCCEED +# define SUCCEED() GTEST_SUCCEED() +#endif // Macros for testing exceptions. // @@ -1603,7 +1858,9 @@ const T* TestWithParam::parameter_ = NULL; #define ASSERT_ANY_THROW(statement) \ GTEST_TEST_ANY_THROW_(statement, GTEST_FATAL_FAILURE_) -// Boolean assertions. +// Boolean assertions. Condition can be either a Boolean expression or an +// AssertionResult. For more information on how to use AssertionResult with +// these macros see comments on that class. #define EXPECT_TRUE(condition) \ GTEST_TEST_BOOLEAN_(condition, #condition, false, true, \ GTEST_NONFATAL_FAILURE_) @@ -1619,7 +1876,7 @@ const T* TestWithParam::parameter_ = NULL; // Includes the auto-generated header that implements a family of // generic predicate assertion macros. -#include +#include "gtest/gtest_pred_impl.h" // Macros for testing equalities and inequalities. // @@ -1682,22 +1939,49 @@ const T* TestWithParam::parameter_ = NULL; #define EXPECT_GT(val1, val2) \ EXPECT_PRED_FORMAT2(::testing::internal::CmpHelperGT, val1, val2) -#define ASSERT_EQ(expected, actual) \ +#define GTEST_ASSERT_EQ(expected, actual) \ ASSERT_PRED_FORMAT2(::testing::internal:: \ EqHelper::Compare, \ expected, actual) -#define ASSERT_NE(val1, val2) \ +#define GTEST_ASSERT_NE(val1, val2) \ ASSERT_PRED_FORMAT2(::testing::internal::CmpHelperNE, val1, val2) -#define ASSERT_LE(val1, val2) \ +#define GTEST_ASSERT_LE(val1, val2) \ ASSERT_PRED_FORMAT2(::testing::internal::CmpHelperLE, val1, val2) -#define ASSERT_LT(val1, val2) \ +#define GTEST_ASSERT_LT(val1, val2) \ ASSERT_PRED_FORMAT2(::testing::internal::CmpHelperLT, val1, val2) -#define ASSERT_GE(val1, val2) \ +#define GTEST_ASSERT_GE(val1, val2) \ ASSERT_PRED_FORMAT2(::testing::internal::CmpHelperGE, val1, val2) -#define ASSERT_GT(val1, val2) \ +#define GTEST_ASSERT_GT(val1, val2) \ ASSERT_PRED_FORMAT2(::testing::internal::CmpHelperGT, val1, val2) -// C String Comparisons. All tests treat NULL and any non-NULL string +// Define macro GTEST_DONT_DEFINE_ASSERT_XY to 1 to omit the definition of +// ASSERT_XY(), which clashes with some users' own code. + +#if !GTEST_DONT_DEFINE_ASSERT_EQ +# define ASSERT_EQ(val1, val2) GTEST_ASSERT_EQ(val1, val2) +#endif + +#if !GTEST_DONT_DEFINE_ASSERT_NE +# define ASSERT_NE(val1, val2) GTEST_ASSERT_NE(val1, val2) +#endif + +#if !GTEST_DONT_DEFINE_ASSERT_LE +# define ASSERT_LE(val1, val2) GTEST_ASSERT_LE(val1, val2) +#endif + +#if !GTEST_DONT_DEFINE_ASSERT_LT +# define ASSERT_LT(val1, val2) GTEST_ASSERT_LT(val1, val2) +#endif + +#if !GTEST_DONT_DEFINE_ASSERT_GE +# define ASSERT_GE(val1, val2) GTEST_ASSERT_GE(val1, val2) +#endif + +#if !GTEST_DONT_DEFINE_ASSERT_GT +# define ASSERT_GT(val1, val2) GTEST_ASSERT_GT(val1, val2) +#endif + +// C-string Comparisons. All tests treat NULL and any non-NULL string // as different. Two NULLs are equal. // // * {ASSERT|EXPECT}_STREQ(s1, s2): Tests that s1 == s2 @@ -1776,10 +2060,10 @@ const T* TestWithParam::parameter_ = NULL; // Asserts that val1 is less than, or almost equal to, val2. Fails // otherwise. In particular, it fails if either val1 or val2 is NaN. -AssertionResult FloatLE(const char* expr1, const char* expr2, - float val1, float val2); -AssertionResult DoubleLE(const char* expr1, const char* expr2, - double val1, double val2); +GTEST_API_ AssertionResult FloatLE(const char* expr1, const char* expr2, + float val1, float val2); +GTEST_API_ AssertionResult DoubleLE(const char* expr1, const char* expr2, + double val1, double val2); #if GTEST_OS_WINDOWS @@ -1793,16 +2077,16 @@ AssertionResult DoubleLE(const char* expr1, const char* expr2, // expected result and the actual result with both a human-readable // string representation of the error, if available, as well as the // hex result code. -#define EXPECT_HRESULT_SUCCEEDED(expr) \ +# define EXPECT_HRESULT_SUCCEEDED(expr) \ EXPECT_PRED_FORMAT1(::testing::internal::IsHRESULTSuccess, (expr)) -#define ASSERT_HRESULT_SUCCEEDED(expr) \ +# define ASSERT_HRESULT_SUCCEEDED(expr) \ ASSERT_PRED_FORMAT1(::testing::internal::IsHRESULTSuccess, (expr)) -#define EXPECT_HRESULT_FAILED(expr) \ +# define EXPECT_HRESULT_FAILED(expr) \ EXPECT_PRED_FORMAT1(::testing::internal::IsHRESULTFailure, (expr)) -#define ASSERT_HRESULT_FAILED(expr) \ +# define ASSERT_HRESULT_FAILED(expr) \ ASSERT_PRED_FORMAT1(::testing::internal::IsHRESULTFailure, (expr)) #endif // GTEST_OS_WINDOWS @@ -1837,17 +2121,6 @@ AssertionResult DoubleLE(const char* expr1, const char* expr2, ::testing::internal::ScopedTrace GTEST_CONCAT_TOKEN_(gtest_trace_, __LINE__)(\ __FILE__, __LINE__, ::testing::Message() << (message)) -namespace internal { - -// This template is declared, but intentionally undefined. -template -struct StaticAssertTypeEqHelper; - -template -struct StaticAssertTypeEqHelper {}; - -} // namespace internal - // Compile-time assertion for type equality. // StaticAssertTypeEq() compiles iff type1 and type2 are // the same type. The value it returns is not interesting. @@ -1880,7 +2153,7 @@ struct StaticAssertTypeEqHelper {}; // to cause a compiler error. template bool StaticAssertTypeEq() { - internal::StaticAssertTypeEqHelper(); + (void)internal::StaticAssertTypeEqHelper(); return true; } @@ -1909,10 +2182,15 @@ bool StaticAssertTypeEq() { // code. GetTestTypeId() is guaranteed to always return the same // value, as it always calls GetTypeId<>() from the Google Test // framework. -#define TEST(test_case_name, test_name)\ +#define GTEST_TEST(test_case_name, test_name)\ GTEST_TEST_(test_case_name, test_name, \ ::testing::Test, ::testing::internal::GetTestTypeId()) +// Define this macro to 1 to omit the definition of TEST(), which +// is a generic name and clashes with some other libraries. +#if !GTEST_DONT_DEFINE_TEST +# define TEST(test_case_name, test_name) GTEST_TEST(test_case_name, test_name) +#endif // Defines a test that uses a test fixture. // diff --git a/cpp/thirdparty/protobuf-2.3.0/gtest/include/gtest/gtest_pred_impl.h b/cpp/thirdparty/protobuf-2.5.0/gtest/include/gtest/gtest_pred_impl.h similarity index 84% rename from cpp/thirdparty/protobuf-2.3.0/gtest/include/gtest/gtest_pred_impl.h rename to cpp/thirdparty/protobuf-2.5.0/gtest/include/gtest/gtest_pred_impl.h index e1e2f8c4c..30ae712f5 100644 --- a/cpp/thirdparty/protobuf-2.3.0/gtest/include/gtest/gtest_pred_impl.h +++ b/cpp/thirdparty/protobuf-2.5.0/gtest/include/gtest/gtest_pred_impl.h @@ -27,7 +27,7 @@ // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -// This file is AUTOMATICALLY GENERATED on 10/02/2008 by command +// This file is AUTOMATICALLY GENERATED on 10/31/2011 by command // 'gen_gtest_pred_impl.py 5'. DO NOT EDIT BY HAND! // // Implements a family of generic predicate assertion macros. @@ -37,7 +37,7 @@ // Makes sure this header is not included before gtest.h. #ifndef GTEST_INCLUDE_GTEST_GTEST_H_ -#error Do not include gtest_pred_impl.h directly. Include gtest.h instead. +# error Do not include gtest_pred_impl.h directly. Include gtest.h instead. #endif // GTEST_INCLUDE_GTEST_GTEST_H_ // This header implements a family of generic predicate assertion @@ -90,17 +90,15 @@ AssertionResult AssertPred1Helper(const char* pred_text, const T1& v1) { if (pred(v1)) return AssertionSuccess(); - Message msg; - msg << pred_text << "(" - << e1 << ") evaluates to false, where" - << "\n" << e1 << " evaluates to " << v1; - return AssertionFailure(msg); + return AssertionFailure() << pred_text << "(" + << e1 << ") evaluates to false, where" + << "\n" << e1 << " evaluates to " << v1; } // Internal macro for implementing {EXPECT|ASSERT}_PRED_FORMAT1. // Don't use this in your code. #define GTEST_PRED_FORMAT1_(pred_format, v1, on_failure)\ - GTEST_ASSERT_(pred_format(#v1, v1),\ + GTEST_ASSERT_(pred_format(#v1, v1), \ on_failure) // Internal macro for implementing {EXPECT|ASSERT}_PRED1. Don't use @@ -136,19 +134,17 @@ AssertionResult AssertPred2Helper(const char* pred_text, const T2& v2) { if (pred(v1, v2)) return AssertionSuccess(); - Message msg; - msg << pred_text << "(" - << e1 << ", " - << e2 << ") evaluates to false, where" - << "\n" << e1 << " evaluates to " << v1 - << "\n" << e2 << " evaluates to " << v2; - return AssertionFailure(msg); + return AssertionFailure() << pred_text << "(" + << e1 << ", " + << e2 << ") evaluates to false, where" + << "\n" << e1 << " evaluates to " << v1 + << "\n" << e2 << " evaluates to " << v2; } // Internal macro for implementing {EXPECT|ASSERT}_PRED_FORMAT2. // Don't use this in your code. #define GTEST_PRED_FORMAT2_(pred_format, v1, v2, on_failure)\ - GTEST_ASSERT_(pred_format(#v1, #v2, v1, v2),\ + GTEST_ASSERT_(pred_format(#v1, #v2, v1, v2), \ on_failure) // Internal macro for implementing {EXPECT|ASSERT}_PRED2. Don't use @@ -189,21 +185,19 @@ AssertionResult AssertPred3Helper(const char* pred_text, const T3& v3) { if (pred(v1, v2, v3)) return AssertionSuccess(); - Message msg; - msg << pred_text << "(" - << e1 << ", " - << e2 << ", " - << e3 << ") evaluates to false, where" - << "\n" << e1 << " evaluates to " << v1 - << "\n" << e2 << " evaluates to " << v2 - << "\n" << e3 << " evaluates to " << v3; - return AssertionFailure(msg); + return AssertionFailure() << pred_text << "(" + << e1 << ", " + << e2 << ", " + << e3 << ") evaluates to false, where" + << "\n" << e1 << " evaluates to " << v1 + << "\n" << e2 << " evaluates to " << v2 + << "\n" << e3 << " evaluates to " << v3; } // Internal macro for implementing {EXPECT|ASSERT}_PRED_FORMAT3. // Don't use this in your code. #define GTEST_PRED_FORMAT3_(pred_format, v1, v2, v3, on_failure)\ - GTEST_ASSERT_(pred_format(#v1, #v2, #v3, v1, v2, v3),\ + GTEST_ASSERT_(pred_format(#v1, #v2, #v3, v1, v2, v3), \ on_failure) // Internal macro for implementing {EXPECT|ASSERT}_PRED3. Don't use @@ -249,23 +243,21 @@ AssertionResult AssertPred4Helper(const char* pred_text, const T4& v4) { if (pred(v1, v2, v3, v4)) return AssertionSuccess(); - Message msg; - msg << pred_text << "(" - << e1 << ", " - << e2 << ", " - << e3 << ", " - << e4 << ") evaluates to false, where" - << "\n" << e1 << " evaluates to " << v1 - << "\n" << e2 << " evaluates to " << v2 - << "\n" << e3 << " evaluates to " << v3 - << "\n" << e4 << " evaluates to " << v4; - return AssertionFailure(msg); + return AssertionFailure() << pred_text << "(" + << e1 << ", " + << e2 << ", " + << e3 << ", " + << e4 << ") evaluates to false, where" + << "\n" << e1 << " evaluates to " << v1 + << "\n" << e2 << " evaluates to " << v2 + << "\n" << e3 << " evaluates to " << v3 + << "\n" << e4 << " evaluates to " << v4; } // Internal macro for implementing {EXPECT|ASSERT}_PRED_FORMAT4. // Don't use this in your code. #define GTEST_PRED_FORMAT4_(pred_format, v1, v2, v3, v4, on_failure)\ - GTEST_ASSERT_(pred_format(#v1, #v2, #v3, #v4, v1, v2, v3, v4),\ + GTEST_ASSERT_(pred_format(#v1, #v2, #v3, #v4, v1, v2, v3, v4), \ on_failure) // Internal macro for implementing {EXPECT|ASSERT}_PRED4. Don't use @@ -316,25 +308,23 @@ AssertionResult AssertPred5Helper(const char* pred_text, const T5& v5) { if (pred(v1, v2, v3, v4, v5)) return AssertionSuccess(); - Message msg; - msg << pred_text << "(" - << e1 << ", " - << e2 << ", " - << e3 << ", " - << e4 << ", " - << e5 << ") evaluates to false, where" - << "\n" << e1 << " evaluates to " << v1 - << "\n" << e2 << " evaluates to " << v2 - << "\n" << e3 << " evaluates to " << v3 - << "\n" << e4 << " evaluates to " << v4 - << "\n" << e5 << " evaluates to " << v5; - return AssertionFailure(msg); + return AssertionFailure() << pred_text << "(" + << e1 << ", " + << e2 << ", " + << e3 << ", " + << e4 << ", " + << e5 << ") evaluates to false, where" + << "\n" << e1 << " evaluates to " << v1 + << "\n" << e2 << " evaluates to " << v2 + << "\n" << e3 << " evaluates to " << v3 + << "\n" << e4 << " evaluates to " << v4 + << "\n" << e5 << " evaluates to " << v5; } // Internal macro for implementing {EXPECT|ASSERT}_PRED_FORMAT5. // Don't use this in your code. #define GTEST_PRED_FORMAT5_(pred_format, v1, v2, v3, v4, v5, on_failure)\ - GTEST_ASSERT_(pred_format(#v1, #v2, #v3, #v4, #v5, v1, v2, v3, v4, v5),\ + GTEST_ASSERT_(pred_format(#v1, #v2, #v3, #v4, #v5, v1, v2, v3, v4, v5), \ on_failure) // Internal macro for implementing {EXPECT|ASSERT}_PRED5. Don't use diff --git a/cpp/thirdparty/protobuf-2.3.0/gtest/include/gtest/gtest_prod.h b/cpp/thirdparty/protobuf-2.5.0/gtest/include/gtest/gtest_prod.h similarity index 100% rename from cpp/thirdparty/protobuf-2.3.0/gtest/include/gtest/gtest_prod.h rename to cpp/thirdparty/protobuf-2.5.0/gtest/include/gtest/gtest_prod.h diff --git a/cpp/thirdparty/protobuf-2.3.0/gtest/include/gtest/internal/gtest-death-test-internal.h b/cpp/thirdparty/protobuf-2.5.0/gtest/include/gtest/internal/gtest-death-test-internal.h similarity index 81% rename from cpp/thirdparty/protobuf-2.3.0/gtest/include/gtest/internal/gtest-death-test-internal.h rename to cpp/thirdparty/protobuf-2.5.0/gtest/include/gtest/internal/gtest-death-test-internal.h index 5aba1a0d6..2b3a78f5b 100644 --- a/cpp/thirdparty/protobuf-2.3.0/gtest/include/gtest/internal/gtest-death-test-internal.h +++ b/cpp/thirdparty/protobuf-2.5.0/gtest/include/gtest/internal/gtest-death-test-internal.h @@ -37,7 +37,9 @@ #ifndef GTEST_INCLUDE_GTEST_INTERNAL_GTEST_DEATH_TEST_INTERNAL_H_ #define GTEST_INCLUDE_GTEST_INTERNAL_GTEST_DEATH_TEST_INTERNAL_H_ -#include +#include "gtest/internal/gtest-internal.h" + +#include namespace testing { namespace internal { @@ -64,7 +66,7 @@ const char kInternalRunDeathTestFlag[] = "internal_run_death_test"; // by wait(2) // exit code: The integer code passed to exit(3), _exit(2), or // returned from main() -class DeathTest { +class GTEST_API_ DeathTest { public: // Create returns false if there was an error determining the // appropriate action to take for the current death test; for example, @@ -96,8 +98,12 @@ class DeathTest { // test, then wait for it to complete. enum TestRole { OVERSEE_TEST, EXECUTE_TEST }; - // An enumeration of the two reasons that a test might be aborted. - enum AbortReason { TEST_ENCOUNTERED_RETURN_STATEMENT, TEST_DID_NOT_DIE }; + // An enumeration of the three reasons that a test might be aborted. + enum AbortReason { + TEST_ENCOUNTERED_RETURN_STATEMENT, + TEST_THREW_EXCEPTION, + TEST_DID_NOT_DIE + }; // Assumes one of the above roles. virtual TestRole AssumeRole() = 0; @@ -121,11 +127,11 @@ class DeathTest { // the last death test. static const char* LastMessage(); - static void set_last_death_test_message(const String& message); + static void set_last_death_test_message(const std::string& message); private: // A string containing a description of the outcome of the last death test. - static String last_death_test_message_; + static std::string last_death_test_message_; GTEST_DISALLOW_COPY_AND_ASSIGN_(DeathTest); }; @@ -147,11 +153,36 @@ class DefaultDeathTestFactory : public DeathTestFactory { // Returns true if exit_status describes a process that was terminated // by a signal, or exited normally with a nonzero exit code. -bool ExitedUnsuccessfully(int exit_status); +GTEST_API_ bool ExitedUnsuccessfully(int exit_status); + +// Traps C++ exceptions escaping statement and reports them as test +// failures. Note that trapping SEH exceptions is not implemented here. +# if GTEST_HAS_EXCEPTIONS +# define GTEST_EXECUTE_DEATH_TEST_STATEMENT_(statement, death_test) \ + try { \ + GTEST_SUPPRESS_UNREACHABLE_CODE_WARNING_BELOW_(statement); \ + } catch (const ::std::exception& gtest_exception) { \ + fprintf(\ + stderr, \ + "\n%s: Caught std::exception-derived exception escaping the " \ + "death test statement. Exception message: %s\n", \ + ::testing::internal::FormatFileLocation(__FILE__, __LINE__).c_str(), \ + gtest_exception.what()); \ + fflush(stderr); \ + death_test->Abort(::testing::internal::DeathTest::TEST_THREW_EXCEPTION); \ + } catch (...) { \ + death_test->Abort(::testing::internal::DeathTest::TEST_THREW_EXCEPTION); \ + } + +# else +# define GTEST_EXECUTE_DEATH_TEST_STATEMENT_(statement, death_test) \ + GTEST_SUPPRESS_UNREACHABLE_CODE_WARNING_BELOW_(statement) + +# endif // This macro is for implementing ASSERT_DEATH*, EXPECT_DEATH*, // ASSERT_EXIT*, and EXPECT_EXIT*. -#define GTEST_DEATH_TEST_(statement, predicate, regex, fail) \ +# define GTEST_DEATH_TEST_(statement, predicate, regex, fail) \ GTEST_AMBIGUOUS_ELSE_BLOCKER_ \ if (::testing::internal::AlwaysTrue()) { \ const ::testing::internal::RE& gtest_regex = (regex); \ @@ -172,10 +203,12 @@ bool ExitedUnsuccessfully(int exit_status); case ::testing::internal::DeathTest::EXECUTE_TEST: { \ ::testing::internal::DeathTest::ReturnSentinel \ gtest_sentinel(gtest_dt); \ - GTEST_SUPPRESS_UNREACHABLE_CODE_WARNING_BELOW_(statement); \ + GTEST_EXECUTE_DEATH_TEST_STATEMENT_(statement, gtest_dt); \ gtest_dt->Abort(::testing::internal::DeathTest::TEST_DID_NOT_DIE); \ break; \ } \ + default: \ + break; \ } \ } \ } else \ @@ -184,29 +217,41 @@ bool ExitedUnsuccessfully(int exit_status); // The symbol "fail" here expands to something into which a message // can be streamed. +// This macro is for implementing ASSERT/EXPECT_DEBUG_DEATH when compiled in +// NDEBUG mode. In this case we need the statements to be executed, the regex is +// ignored, and the macro must accept a streamed message even though the message +// is never printed. +# define GTEST_EXECUTE_STATEMENT_(statement, regex) \ + GTEST_AMBIGUOUS_ELSE_BLOCKER_ \ + if (::testing::internal::AlwaysTrue()) { \ + GTEST_SUPPRESS_UNREACHABLE_CODE_WARNING_BELOW_(statement); \ + } else \ + ::testing::Message() + // A class representing the parsed contents of the // --gtest_internal_run_death_test flag, as it existed when // RUN_ALL_TESTS was called. class InternalRunDeathTestFlag { public: - InternalRunDeathTestFlag(const String& file, - int line, - int index, - int write_fd) - : file_(file), line_(line), index_(index), write_fd_(write_fd) {} + InternalRunDeathTestFlag(const std::string& a_file, + int a_line, + int an_index, + int a_write_fd) + : file_(a_file), line_(a_line), index_(an_index), + write_fd_(a_write_fd) {} ~InternalRunDeathTestFlag() { if (write_fd_ >= 0) posix::Close(write_fd_); } - String file() const { return file_; } + const std::string& file() const { return file_; } int line() const { return line_; } int index() const { return index_; } int write_fd() const { return write_fd_; } private: - String file_; + std::string file_; int line_; int index_; int write_fd_; @@ -253,7 +298,7 @@ InternalRunDeathTestFlag* ParseInternalRunDeathTestFlag(); // statement unconditionally returns or throws. The Message constructor at // the end allows the syntax of streaming additional messages into the // macro, for compilational compatibility with EXPECT_DEATH/ASSERT_DEATH. -#define GTEST_UNSUPPORTED_DEATH_TEST_(statement, regex, terminator) \ +# define GTEST_UNSUPPORTED_DEATH_TEST_(statement, regex, terminator) \ GTEST_AMBIGUOUS_ELSE_BLOCKER_ \ if (::testing::internal::AlwaysTrue()) { \ GTEST_LOG_(WARNING) \ diff --git a/cpp/thirdparty/protobuf-2.3.0/gtest/include/gtest/internal/gtest-filepath.h b/cpp/thirdparty/protobuf-2.5.0/gtest/include/gtest/internal/gtest-filepath.h similarity index 92% rename from cpp/thirdparty/protobuf-2.3.0/gtest/include/gtest/internal/gtest-filepath.h rename to cpp/thirdparty/protobuf-2.5.0/gtest/include/gtest/internal/gtest-filepath.h index 1b2f58693..7a13b4b0d 100644 --- a/cpp/thirdparty/protobuf-2.3.0/gtest/include/gtest/internal/gtest-filepath.h +++ b/cpp/thirdparty/protobuf-2.5.0/gtest/include/gtest/internal/gtest-filepath.h @@ -40,7 +40,7 @@ #ifndef GTEST_INCLUDE_GTEST_INTERNAL_GTEST_FILEPATH_H_ #define GTEST_INCLUDE_GTEST_INTERNAL_GTEST_FILEPATH_H_ -#include +#include "gtest/internal/gtest-string.h" namespace testing { namespace internal { @@ -56,16 +56,12 @@ namespace internal { // Names are NOT checked for syntax correctness -- no checking for illegal // characters, malformed paths, etc. -class FilePath { +class GTEST_API_ FilePath { public: FilePath() : pathname_("") { } FilePath(const FilePath& rhs) : pathname_(rhs.pathname_) { } - explicit FilePath(const char* pathname) : pathname_(pathname) { - Normalize(); - } - - explicit FilePath(const String& pathname) : pathname_(pathname) { + explicit FilePath(const std::string& pathname) : pathname_(pathname) { Normalize(); } @@ -78,7 +74,7 @@ class FilePath { pathname_ = rhs.pathname_; } - String ToString() const { return pathname_; } + const std::string& string() const { return pathname_; } const char* c_str() const { return pathname_.c_str(); } // Returns the current working directory, or "" if unsuccessful. @@ -111,8 +107,8 @@ class FilePath { const FilePath& base_name, const char* extension); - // Returns true iff the path is NULL or "". - bool IsEmpty() const { return c_str() == NULL || *c_str() == '\0'; } + // Returns true iff the path is "". + bool IsEmpty() const { return pathname_.empty(); } // If input name has a trailing separator character, removes it and returns // the name, otherwise return the name string unmodified. @@ -189,10 +185,19 @@ class FilePath { // particular, RemoveTrailingPathSeparator() only removes one separator, and // it is called in CreateDirectoriesRecursively() assuming that it will change // a pathname from directory syntax (trailing separator) to filename syntax. + // + // On Windows this method also replaces the alternate path separator '/' with + // the primary path separator '\\', so that for example "bar\\/\\foo" becomes + // "bar\\foo". void Normalize(); - String pathname_; + // Returns a pointer to the last occurence of a valid path separator in + // the FilePath. On Windows, for example, both '/' and '\' are valid path + // separators. Returns NULL if no path separator was found. + const char* FindLastPathSeparator() const; + + std::string pathname_; }; // class FilePath } // namespace internal diff --git a/cpp/thirdparty/protobuf-2.3.0/gtest/include/gtest/internal/gtest-internal.h b/cpp/thirdparty/protobuf-2.5.0/gtest/include/gtest/internal/gtest-internal.h similarity index 61% rename from cpp/thirdparty/protobuf-2.3.0/gtest/include/gtest/internal/gtest-internal.h rename to cpp/thirdparty/protobuf-2.5.0/gtest/include/gtest/internal/gtest-internal.h index 7033b0ca9..6e3dd66b7 100644 --- a/cpp/thirdparty/protobuf-2.3.0/gtest/include/gtest/internal/gtest-internal.h +++ b/cpp/thirdparty/protobuf-2.5.0/gtest/include/gtest/internal/gtest-internal.h @@ -37,13 +37,13 @@ #ifndef GTEST_INCLUDE_GTEST_INTERNAL_GTEST_INTERNAL_H_ #define GTEST_INCLUDE_GTEST_INTERNAL_GTEST_INTERNAL_H_ -#include +#include "gtest/internal/gtest-port.h" #if GTEST_OS_LINUX -#include -#include -#include -#include +# include +# include +# include +# include #endif // GTEST_OS_LINUX #include @@ -52,9 +52,9 @@ #include #include -#include -#include -#include +#include "gtest/internal/gtest-string.h" +#include "gtest/internal/gtest-filepath.h" +#include "gtest/internal/gtest-type-util.h" // Due to C++ preprocessor weirdness, we need double indirection to // concatenate two tokens when one of them is __LINE__. Writing @@ -73,7 +73,7 @@ // This allows a user to use his own types in Google Test assertions by // overloading the << operator. // -// util/gtl/stl_logging-inl.h overloads << for STL containers. These +// util/gtl/stl_logging.h overloads << for STL containers. These // overloads cannot be defined in the std namespace, as that will be // undefined behavior. Therefore, they are defined in the global // namespace instead. @@ -97,9 +97,12 @@ inline void GTestStreamToHelper(std::ostream* os, const T& val) { *os << val; } +class ProtocolMessage; +namespace proto2 { class Message; } + namespace testing { -// Forward declaration of classes. +// Forward declarations. class AssertionResult; // Result of an assertion. class Message; // Represents a failure message. @@ -108,20 +111,22 @@ class TestInfo; // Information about a test. class TestPartResult; // Result of a test part. class UnitTest; // A collection of test cases. +template +::std::string PrintToString(const T& value); + namespace internal { struct TraceInfo; // Information about a trace point. class ScopedTrace; // Implements scoped trace. class TestInfoImpl; // Opaque implementation of TestInfo class UnitTestImpl; // Opaque implementation of UnitTest -template class Vector; // A generic vector. // How many times InitGoogleTest() has been called. -extern int g_init_gtest_count; +GTEST_API_ extern int g_init_gtest_count; // The text used in failure messages to indicate the start of the // stack trace. -extern const char kStackTraceMarker[]; +GTEST_API_ extern const char kStackTraceMarker[]; // A secret type that Google Test users don't know about. It has no // definition on purpose. Therefore it's impossible to create a @@ -148,24 +153,21 @@ char (&IsNullLiteralHelper(...))[2]; // NOLINT // A compile-time bool constant that is true if and only if x is a // null pointer literal (i.e. NULL or any 0-valued compile-time // integral constant). -#ifdef GTEST_ELLIPSIS_NEEDS_COPY_ -// Passing non-POD classes through ellipsis (...) crashes the ARM -// compiler. The Nokia Symbian and the IBM XL C/C++ compiler try to -// instantiate a copy constructor for objects passed through ellipsis -// (...), failing for uncopyable objects. Hence we define this to -// false (and lose support for NULL detection). -#define GTEST_IS_NULL_LITERAL_(x) false +#ifdef GTEST_ELLIPSIS_NEEDS_POD_ +// We lose support for NULL detection where the compiler doesn't like +// passing non-POD classes through ellipsis (...). +# define GTEST_IS_NULL_LITERAL_(x) false #else -#define GTEST_IS_NULL_LITERAL_(x) \ +# define GTEST_IS_NULL_LITERAL_(x) \ (sizeof(::testing::internal::IsNullLiteralHelper(x)) == 1) -#endif // GTEST_ELLIPSIS_NEEDS_COPY_ +#endif // GTEST_ELLIPSIS_NEEDS_POD_ // Appends the user-supplied message to the Google-Test-generated message. -String AppendUserMessage(const String& gtest_msg, - const Message& user_msg); +GTEST_API_ std::string AppendUserMessage( + const std::string& gtest_msg, const Message& user_msg); // A helper class for creating scoped traces in user programs. -class ScopedTrace { +class GTEST_API_ ScopedTrace { public: // The c'tor pushes the given source file location and message onto // a trace stack maintained by Google Test. @@ -183,7 +185,7 @@ class ScopedTrace { // c'tor and d'tor. Therefore it doesn't // need to be used otherwise. -// Converts a streamable value to a String. A NULL pointer is +// Converts a streamable value to an std::string. A NULL pointer is // converted to "(null)". When the input value is a ::string, // ::std::string, ::wstring, or ::std::wstring object, each NUL // character in it is replaced with "\\0". @@ -191,92 +193,7 @@ class ScopedTrace { // to the definition of the Message class, required by the ARM // compiler. template -String StreamableToString(const T& streamable); - -// Formats a value to be used in a failure message. - -#ifdef GTEST_NEEDS_IS_POINTER_ - -// These are needed as the Nokia Symbian and IBM XL C/C++ compilers -// cannot decide between const T& and const T* in a function template. -// These compilers _can_ decide between class template specializations -// for T and T*, so a tr1::type_traits-like is_pointer works, and we -// can overload on that. - -// This overload makes sure that all pointers (including -// those to char or wchar_t) are printed as raw pointers. -template -inline String FormatValueForFailureMessage(internal::true_type /*dummy*/, - T* pointer) { - return StreamableToString(static_cast(pointer)); -} - -template -inline String FormatValueForFailureMessage(internal::false_type /*dummy*/, - const T& value) { - return StreamableToString(value); -} - -template -inline String FormatForFailureMessage(const T& value) { - return FormatValueForFailureMessage( - typename internal::is_pointer::type(), value); -} - -#else - -// These are needed as the above solution using is_pointer has the -// limitation that T cannot be a type without external linkage, when -// compiled using MSVC. - -template -inline String FormatForFailureMessage(const T& value) { - return StreamableToString(value); -} - -// This overload makes sure that all pointers (including -// those to char or wchar_t) are printed as raw pointers. -template -inline String FormatForFailureMessage(T* pointer) { - return StreamableToString(static_cast(pointer)); -} - -#endif // GTEST_NEEDS_IS_POINTER_ - -// These overloaded versions handle narrow and wide characters. -String FormatForFailureMessage(char ch); -String FormatForFailureMessage(wchar_t wchar); - -// When this operand is a const char* or char*, and the other operand -// is a ::std::string or ::string, we print this operand as a C string -// rather than a pointer. We do the same for wide strings. - -// This internal macro is used to avoid duplicated code. -#define GTEST_FORMAT_IMPL_(operand2_type, operand1_printer)\ -inline String FormatForComparisonFailureMessage(\ - operand2_type::value_type* str, const operand2_type& /*operand2*/) {\ - return operand1_printer(str);\ -}\ -inline String FormatForComparisonFailureMessage(\ - const operand2_type::value_type* str, const operand2_type& /*operand2*/) {\ - return operand1_printer(str);\ -} - -#if GTEST_HAS_STD_STRING -GTEST_FORMAT_IMPL_(::std::string, String::ShowCStringQuoted) -#endif // GTEST_HAS_STD_STRING -#if GTEST_HAS_STD_WSTRING -GTEST_FORMAT_IMPL_(::std::wstring, String::ShowWideCStringQuoted) -#endif // GTEST_HAS_STD_WSTRING - -#if GTEST_HAS_GLOBAL_STRING -GTEST_FORMAT_IMPL_(::string, String::ShowCStringQuoted) -#endif // GTEST_HAS_GLOBAL_STRING -#if GTEST_HAS_GLOBAL_WSTRING -GTEST_FORMAT_IMPL_(::wstring, String::ShowWideCStringQuoted) -#endif // GTEST_HAS_GLOBAL_WSTRING - -#undef GTEST_FORMAT_IMPL_ +std::string StreamableToString(const T& streamable); // Constructs and returns the message for an equality assertion // (e.g. ASSERT_EQ, EXPECT_STREQ, etc) failure. @@ -293,12 +210,18 @@ GTEST_FORMAT_IMPL_(::wstring, String::ShowWideCStringQuoted) // The ignoring_case parameter is true iff the assertion is a // *_STRCASEEQ*. When it's true, the string " (ignoring case)" will // be inserted into the message. -AssertionResult EqFailure(const char* expected_expression, - const char* actual_expression, - const String& expected_value, - const String& actual_value, - bool ignoring_case); - +GTEST_API_ AssertionResult EqFailure(const char* expected_expression, + const char* actual_expression, + const std::string& expected_value, + const std::string& actual_value, + bool ignoring_case); + +// Constructs a failure message for Boolean assertions such as EXPECT_TRUE. +GTEST_API_ std::string GetBoolAssertionFailureMessage( + const AssertionResult& assertion_result, + const char* expression_text, + const char* actual_predicate_value, + const char* expected_predicate_value); // This template class represents an IEEE floating-point number // (either single-precision or double-precision, depending on the @@ -518,7 +441,7 @@ TypeId GetTypeId() { // ::testing::Test, as the latter may give the wrong result due to a // suspected linker bug when compiling Google Test as a Mac OS X // framework. -TypeId GetTestTypeId(); +GTEST_API_ TypeId GetTestTypeId(); // Defines the abstract factory interface that creates instances // of a Test object. @@ -551,25 +474,13 @@ class TestFactoryImpl : public TestFactoryBase { // {ASSERT|EXPECT}_HRESULT_{SUCCEEDED|FAILED} // We pass a long instead of HRESULT to avoid causing an // include dependency for the HRESULT type. -AssertionResult IsHRESULTSuccess(const char* expr, long hr); // NOLINT -AssertionResult IsHRESULTFailure(const char* expr, long hr); // NOLINT +GTEST_API_ AssertionResult IsHRESULTSuccess(const char* expr, + long hr); // NOLINT +GTEST_API_ AssertionResult IsHRESULTFailure(const char* expr, + long hr); // NOLINT #endif // GTEST_OS_WINDOWS -// Formats a source file path and a line number as they would appear -// in a compiler error message. -inline String FormatFileLocation(const char* file, int line) { - const char* const file_name = file == NULL ? "unknown file" : file; - if (line < 0) { - return String::Format("%s:", file_name); - } -#ifdef _MSC_VER - return String::Format("%s(%d):", file_name, line); -#else - return String::Format("%s:%d:", file_name, line); -#endif // _MSC_VER -} - // Types of SetUpTestCase() and TearDownTestCase() functions. typedef void (*SetUpTestCaseFunc)(); typedef void (*TearDownTestCaseFunc)(); @@ -581,28 +492,34 @@ typedef void (*TearDownTestCaseFunc)(); // // test_case_name: name of the test case // name: name of the test -// test_case_comment: a comment on the test case that will be included in -// the test output -// comment: a comment on the test that will be included in the -// test output +// type_param the name of the test's type parameter, or NULL if +// this is not a typed or a type-parameterized test. +// value_param text representation of the test's value parameter, +// or NULL if this is not a type-parameterized test. // fixture_class_id: ID of the test fixture class // set_up_tc: pointer to the function that sets up the test case // tear_down_tc: pointer to the function that tears down the test case // factory: pointer to the factory that creates a test object. // The newly created TestInfo instance will assume // ownership of the factory object. -TestInfo* MakeAndRegisterTestInfo( +GTEST_API_ TestInfo* MakeAndRegisterTestInfo( const char* test_case_name, const char* name, - const char* test_case_comment, const char* comment, + const char* type_param, + const char* value_param, TypeId fixture_class_id, SetUpTestCaseFunc set_up_tc, TearDownTestCaseFunc tear_down_tc, TestFactoryBase* factory); +// If *pstr starts with the given prefix, modifies *pstr to be right +// past the prefix and returns true; otherwise leaves *pstr unchanged +// and returns false. None of pstr, *pstr, and prefix can be NULL. +GTEST_API_ bool SkipPrefix(const char* prefix, const char** pstr); + #if GTEST_HAS_TYPED_TEST || GTEST_HAS_TYPED_TEST_P // State of the definition of a type-parameterized test case. -class TypedTestCasePState { +class GTEST_API_ TypedTestCasePState { public: TypedTestCasePState() : registered_(false) {} @@ -640,15 +557,15 @@ inline const char* SkipComma(const char* str) { if (comma == NULL) { return NULL; } - while (isspace(*(++comma))) {} + while (IsSpace(*(++comma))) {} return comma; } // Returns the prefix of 'str' before the first comma in it; returns // the entire string if it contains no comma. -inline String GetPrefixUntilComma(const char* str) { +inline std::string GetPrefixUntilComma(const char* str) { const char* comma = strchr(str, ','); - return comma == NULL ? String(str) : String(str, comma - str); + return comma == NULL ? str : std::string(str, comma); } // TypeParameterizedTest::Register() @@ -677,8 +594,8 @@ class TypeParameterizedTest { String::Format("%s%s%s/%d", prefix, prefix[0] == '\0' ? "" : "/", case_name, index).c_str(), GetPrefixUntilComma(test_names).c_str(), - String::Format("TypeParam = %s", GetTypeName().c_str()).c_str(), - "", + GetTypeName().c_str(), + NULL, // No value parameter. GetTypeId(), TestClass::SetUpTestCase, TestClass::TearDownTestCase, @@ -733,7 +650,7 @@ class TypeParameterizedTestCase { #endif // GTEST_HAS_TYPED_TEST || GTEST_HAS_TYPED_TEST_P -// Returns the current OS stack trace as a String. +// Returns the current OS stack trace as an std::string. // // The maximum number of stack frames to be included is specified by // the gtest_stack_trace_depth flag. The skip_count parameter @@ -743,23 +660,33 @@ class TypeParameterizedTestCase { // For example, if Foo() calls Bar(), which in turn calls // GetCurrentOsStackTraceExceptTop(..., 1), Foo() will be included in // the trace but Bar() and GetCurrentOsStackTraceExceptTop() won't. -String GetCurrentOsStackTraceExceptTop(UnitTest* unit_test, int skip_count); +GTEST_API_ std::string GetCurrentOsStackTraceExceptTop( + UnitTest* unit_test, int skip_count); // Helpers for suppressing warnings on unreachable code or constant // condition. // Always returns true. -bool AlwaysTrue(); +GTEST_API_ bool AlwaysTrue(); // Always returns false. inline bool AlwaysFalse() { return !AlwaysTrue(); } +// Helper for suppressing false warning from Clang on a const char* +// variable declared in a conditional expression always being NULL in +// the else branch. +struct GTEST_API_ ConstCharPtr { + ConstCharPtr(const char* str) : value(str) {} + operator bool() const { return true; } + const char* value; +}; + // A simple Linear Congruential Generator for generating random // numbers with a uniform distribution. Unlike rand() and srand(), it // doesn't use global state (and therefore can't interfere with user // code). Unlike rand_r(), it's portable. An LCG isn't very random, // but it's good enough for our purposes. -class Random { +class GTEST_API_ Random { public: static const UInt32 kMaxRange = 1u << 31; @@ -776,13 +703,344 @@ class Random { GTEST_DISALLOW_COPY_AND_ASSIGN_(Random); }; +// Defining a variable of type CompileAssertTypesEqual will cause a +// compiler error iff T1 and T2 are different types. +template +struct CompileAssertTypesEqual; + +template +struct CompileAssertTypesEqual { +}; + +// Removes the reference from a type if it is a reference type, +// otherwise leaves it unchanged. This is the same as +// tr1::remove_reference, which is not widely available yet. +template +struct RemoveReference { typedef T type; }; // NOLINT +template +struct RemoveReference { typedef T type; }; // NOLINT + +// A handy wrapper around RemoveReference that works when the argument +// T depends on template parameters. +#define GTEST_REMOVE_REFERENCE_(T) \ + typename ::testing::internal::RemoveReference::type + +// Removes const from a type if it is a const type, otherwise leaves +// it unchanged. This is the same as tr1::remove_const, which is not +// widely available yet. +template +struct RemoveConst { typedef T type; }; // NOLINT +template +struct RemoveConst { typedef T type; }; // NOLINT + +// MSVC 8.0, Sun C++, and IBM XL C++ have a bug which causes the above +// definition to fail to remove the const in 'const int[3]' and 'const +// char[3][4]'. The following specialization works around the bug. +template +struct RemoveConst { + typedef typename RemoveConst::type type[N]; +}; + +#if defined(_MSC_VER) && _MSC_VER < 1400 +// This is the only specialization that allows VC++ 7.1 to remove const in +// 'const int[3] and 'const int[3][4]'. However, it causes trouble with GCC +// and thus needs to be conditionally compiled. +template +struct RemoveConst { + typedef typename RemoveConst::type type[N]; +}; +#endif + +// A handy wrapper around RemoveConst that works when the argument +// T depends on template parameters. +#define GTEST_REMOVE_CONST_(T) \ + typename ::testing::internal::RemoveConst::type + +// Turns const U&, U&, const U, and U all into U. +#define GTEST_REMOVE_REFERENCE_AND_CONST_(T) \ + GTEST_REMOVE_CONST_(GTEST_REMOVE_REFERENCE_(T)) + +// Adds reference to a type if it is not a reference type, +// otherwise leaves it unchanged. This is the same as +// tr1::add_reference, which is not widely available yet. +template +struct AddReference { typedef T& type; }; // NOLINT +template +struct AddReference { typedef T& type; }; // NOLINT + +// A handy wrapper around AddReference that works when the argument T +// depends on template parameters. +#define GTEST_ADD_REFERENCE_(T) \ + typename ::testing::internal::AddReference::type + +// Adds a reference to const on top of T as necessary. For example, +// it transforms +// +// char ==> const char& +// const char ==> const char& +// char& ==> const char& +// const char& ==> const char& +// +// The argument T must depend on some template parameters. +#define GTEST_REFERENCE_TO_CONST_(T) \ + GTEST_ADD_REFERENCE_(const GTEST_REMOVE_REFERENCE_(T)) + +// ImplicitlyConvertible::value is a compile-time bool +// constant that's true iff type From can be implicitly converted to +// type To. +template +class ImplicitlyConvertible { + private: + // We need the following helper functions only for their types. + // They have no implementations. + + // MakeFrom() is an expression whose type is From. We cannot simply + // use From(), as the type From may not have a public default + // constructor. + static From MakeFrom(); + + // These two functions are overloaded. Given an expression + // Helper(x), the compiler will pick the first version if x can be + // implicitly converted to type To; otherwise it will pick the + // second version. + // + // The first version returns a value of size 1, and the second + // version returns a value of size 2. Therefore, by checking the + // size of Helper(x), which can be done at compile time, we can tell + // which version of Helper() is used, and hence whether x can be + // implicitly converted to type To. + static char Helper(To); + static char (&Helper(...))[2]; // NOLINT + + // We have to put the 'public' section after the 'private' section, + // or MSVC refuses to compile the code. + public: + // MSVC warns about implicitly converting from double to int for + // possible loss of data, so we need to temporarily disable the + // warning. +#ifdef _MSC_VER +# pragma warning(push) // Saves the current warning state. +# pragma warning(disable:4244) // Temporarily disables warning 4244. + + static const bool value = + sizeof(Helper(ImplicitlyConvertible::MakeFrom())) == 1; +# pragma warning(pop) // Restores the warning state. +#elif defined(__BORLANDC__) + // C++Builder cannot use member overload resolution during template + // instantiation. The simplest workaround is to use its C++0x type traits + // functions (C++Builder 2009 and above only). + static const bool value = __is_convertible(From, To); +#else + static const bool value = + sizeof(Helper(ImplicitlyConvertible::MakeFrom())) == 1; +#endif // _MSV_VER +}; +template +const bool ImplicitlyConvertible::value; + +// IsAProtocolMessage::value is a compile-time bool constant that's +// true iff T is type ProtocolMessage, proto2::Message, or a subclass +// of those. +template +struct IsAProtocolMessage + : public bool_constant< + ImplicitlyConvertible::value || + ImplicitlyConvertible::value> { +}; + +// When the compiler sees expression IsContainerTest(0), if C is an +// STL-style container class, the first overload of IsContainerTest +// will be viable (since both C::iterator* and C::const_iterator* are +// valid types and NULL can be implicitly converted to them). It will +// be picked over the second overload as 'int' is a perfect match for +// the type of argument 0. If C::iterator or C::const_iterator is not +// a valid type, the first overload is not viable, and the second +// overload will be picked. Therefore, we can determine whether C is +// a container class by checking the type of IsContainerTest(0). +// The value of the expression is insignificant. +// +// Note that we look for both C::iterator and C::const_iterator. The +// reason is that C++ injects the name of a class as a member of the +// class itself (e.g. you can refer to class iterator as either +// 'iterator' or 'iterator::iterator'). If we look for C::iterator +// only, for example, we would mistakenly think that a class named +// iterator is an STL container. +// +// Also note that the simpler approach of overloading +// IsContainerTest(typename C::const_iterator*) and +// IsContainerTest(...) doesn't work with Visual Age C++ and Sun C++. +typedef int IsContainer; +template +IsContainer IsContainerTest(int /* dummy */, + typename C::iterator* /* it */ = NULL, + typename C::const_iterator* /* const_it */ = NULL) { + return 0; +} + +typedef char IsNotContainer; +template +IsNotContainer IsContainerTest(long /* dummy */) { return '\0'; } + +// EnableIf::type is void when 'Cond' is true, and +// undefined when 'Cond' is false. To use SFINAE to make a function +// overload only apply when a particular expression is true, add +// "typename EnableIf::type* = 0" as the last parameter. +template struct EnableIf; +template<> struct EnableIf { typedef void type; }; // NOLINT + +// Utilities for native arrays. + +// ArrayEq() compares two k-dimensional native arrays using the +// elements' operator==, where k can be any integer >= 0. When k is +// 0, ArrayEq() degenerates into comparing a single pair of values. + +template +bool ArrayEq(const T* lhs, size_t size, const U* rhs); + +// This generic version is used when k is 0. +template +inline bool ArrayEq(const T& lhs, const U& rhs) { return lhs == rhs; } + +// This overload is used when k >= 1. +template +inline bool ArrayEq(const T(&lhs)[N], const U(&rhs)[N]) { + return internal::ArrayEq(lhs, N, rhs); +} + +// This helper reduces code bloat. If we instead put its logic inside +// the previous ArrayEq() function, arrays with different sizes would +// lead to different copies of the template code. +template +bool ArrayEq(const T* lhs, size_t size, const U* rhs) { + for (size_t i = 0; i != size; i++) { + if (!internal::ArrayEq(lhs[i], rhs[i])) + return false; + } + return true; +} + +// Finds the first element in the iterator range [begin, end) that +// equals elem. Element may be a native array type itself. +template +Iter ArrayAwareFind(Iter begin, Iter end, const Element& elem) { + for (Iter it = begin; it != end; ++it) { + if (internal::ArrayEq(*it, elem)) + return it; + } + return end; +} + +// CopyArray() copies a k-dimensional native array using the elements' +// operator=, where k can be any integer >= 0. When k is 0, +// CopyArray() degenerates into copying a single value. + +template +void CopyArray(const T* from, size_t size, U* to); + +// This generic version is used when k is 0. +template +inline void CopyArray(const T& from, U* to) { *to = from; } + +// This overload is used when k >= 1. +template +inline void CopyArray(const T(&from)[N], U(*to)[N]) { + internal::CopyArray(from, N, *to); +} + +// This helper reduces code bloat. If we instead put its logic inside +// the previous CopyArray() function, arrays with different sizes +// would lead to different copies of the template code. +template +void CopyArray(const T* from, size_t size, U* to) { + for (size_t i = 0; i != size; i++) { + internal::CopyArray(from[i], to + i); + } +} + +// The relation between an NativeArray object (see below) and the +// native array it represents. +enum RelationToSource { + kReference, // The NativeArray references the native array. + kCopy // The NativeArray makes a copy of the native array and + // owns the copy. +}; + +// Adapts a native array to a read-only STL-style container. Instead +// of the complete STL container concept, this adaptor only implements +// members useful for Google Mock's container matchers. New members +// should be added as needed. To simplify the implementation, we only +// support Element being a raw type (i.e. having no top-level const or +// reference modifier). It's the client's responsibility to satisfy +// this requirement. Element can be an array type itself (hence +// multi-dimensional arrays are supported). +template +class NativeArray { + public: + // STL-style container typedefs. + typedef Element value_type; + typedef Element* iterator; + typedef const Element* const_iterator; + + // Constructs from a native array. + NativeArray(const Element* array, size_t count, RelationToSource relation) { + Init(array, count, relation); + } + + // Copy constructor. + NativeArray(const NativeArray& rhs) { + Init(rhs.array_, rhs.size_, rhs.relation_to_source_); + } + + ~NativeArray() { + // Ensures that the user doesn't instantiate NativeArray with a + // const or reference type. + static_cast(StaticAssertTypeEqHelper()); + if (relation_to_source_ == kCopy) + delete[] array_; + } + + // STL-style container methods. + size_t size() const { return size_; } + const_iterator begin() const { return array_; } + const_iterator end() const { return array_ + size_; } + bool operator==(const NativeArray& rhs) const { + return size() == rhs.size() && + ArrayEq(begin(), size(), rhs.begin()); + } + + private: + // Initializes this object; makes a copy of the input array if + // 'relation' is kCopy. + void Init(const Element* array, size_t a_size, RelationToSource relation) { + if (relation == kReference) { + array_ = array; + } else { + Element* const copy = new Element[a_size]; + CopyArray(array, a_size, copy); + array_ = copy; + } + size_ = a_size; + relation_to_source_ = relation; + } + + const Element* array_; + size_t size_; + RelationToSource relation_to_source_; + + GTEST_DISALLOW_ASSIGN_(NativeArray); +}; + } // namespace internal } // namespace testing -#define GTEST_MESSAGE_(message, result_type) \ - ::testing::internal::AssertHelper(result_type, __FILE__, __LINE__, message) \ +#define GTEST_MESSAGE_AT_(file, line, message, result_type) \ + ::testing::internal::AssertHelper(result_type, file, line, message) \ = ::testing::Message() +#define GTEST_MESSAGE_(message, result_type) \ + GTEST_MESSAGE_AT_(__FILE__, __LINE__, message, result_type) + #define GTEST_FATAL_FAILURE_(message) \ return GTEST_MESSAGE_(message, ::testing::TestPartResult::kFatalFailure) @@ -800,7 +1058,7 @@ class Random { #define GTEST_TEST_THROW_(statement, expected_exception, fail) \ GTEST_AMBIGUOUS_ELSE_BLOCKER_ \ - if (const char* gtest_msg = "") { \ + if (::testing::internal::ConstCharPtr gtest_msg = "") { \ bool gtest_caught_expected = false; \ try { \ GTEST_SUPPRESS_UNREACHABLE_CODE_WARNING_BELOW_(statement); \ @@ -809,38 +1067,38 @@ class Random { gtest_caught_expected = true; \ } \ catch (...) { \ - gtest_msg = "Expected: " #statement " throws an exception of type " \ - #expected_exception ".\n Actual: it throws a different " \ - "type."; \ + gtest_msg.value = \ + "Expected: " #statement " throws an exception of type " \ + #expected_exception ".\n Actual: it throws a different type."; \ goto GTEST_CONCAT_TOKEN_(gtest_label_testthrow_, __LINE__); \ } \ if (!gtest_caught_expected) { \ - gtest_msg = "Expected: " #statement " throws an exception of type " \ - #expected_exception ".\n Actual: it throws nothing."; \ + gtest_msg.value = \ + "Expected: " #statement " throws an exception of type " \ + #expected_exception ".\n Actual: it throws nothing."; \ goto GTEST_CONCAT_TOKEN_(gtest_label_testthrow_, __LINE__); \ } \ } else \ GTEST_CONCAT_TOKEN_(gtest_label_testthrow_, __LINE__): \ - fail(gtest_msg) + fail(gtest_msg.value) #define GTEST_TEST_NO_THROW_(statement, fail) \ GTEST_AMBIGUOUS_ELSE_BLOCKER_ \ - if (const char* gtest_msg = "") { \ + if (::testing::internal::AlwaysTrue()) { \ try { \ GTEST_SUPPRESS_UNREACHABLE_CODE_WARNING_BELOW_(statement); \ } \ catch (...) { \ - gtest_msg = "Expected: " #statement " doesn't throw an exception.\n" \ - " Actual: it throws."; \ goto GTEST_CONCAT_TOKEN_(gtest_label_testnothrow_, __LINE__); \ } \ } else \ GTEST_CONCAT_TOKEN_(gtest_label_testnothrow_, __LINE__): \ - fail(gtest_msg) + fail("Expected: " #statement " doesn't throw an exception.\n" \ + " Actual: it throws.") #define GTEST_TEST_ANY_THROW_(statement, fail) \ GTEST_AMBIGUOUS_ELSE_BLOCKER_ \ - if (const char* gtest_msg = "") { \ + if (::testing::internal::AlwaysTrue()) { \ bool gtest_caught_any = false; \ try { \ GTEST_SUPPRESS_UNREACHABLE_CODE_WARNING_BELOW_(statement); \ @@ -849,36 +1107,39 @@ class Random { gtest_caught_any = true; \ } \ if (!gtest_caught_any) { \ - gtest_msg = "Expected: " #statement " throws an exception.\n" \ - " Actual: it doesn't."; \ goto GTEST_CONCAT_TOKEN_(gtest_label_testanythrow_, __LINE__); \ } \ } else \ GTEST_CONCAT_TOKEN_(gtest_label_testanythrow_, __LINE__): \ - fail(gtest_msg) + fail("Expected: " #statement " throws an exception.\n" \ + " Actual: it doesn't.") -#define GTEST_TEST_BOOLEAN_(boolexpr, booltext, actual, expected, fail) \ +// Implements Boolean test assertions such as EXPECT_TRUE. expression can be +// either a boolean expression or an AssertionResult. text is a textual +// represenation of expression as it was passed into the EXPECT_TRUE. +#define GTEST_TEST_BOOLEAN_(expression, text, actual, expected, fail) \ GTEST_AMBIGUOUS_ELSE_BLOCKER_ \ - if (::testing::internal::IsTrue(boolexpr)) \ + if (const ::testing::AssertionResult gtest_ar_ = \ + ::testing::AssertionResult(expression)) \ ; \ else \ - fail("Value of: " booltext "\n Actual: " #actual "\nExpected: " #expected) + fail(::testing::internal::GetBoolAssertionFailureMessage(\ + gtest_ar_, text, #actual, #expected).c_str()) #define GTEST_TEST_NO_FATAL_FAILURE_(statement, fail) \ GTEST_AMBIGUOUS_ELSE_BLOCKER_ \ - if (const char* gtest_msg = "") { \ + if (::testing::internal::AlwaysTrue()) { \ ::testing::internal::HasNewFatalFailureHelper gtest_fatal_failure_checker; \ GTEST_SUPPRESS_UNREACHABLE_CODE_WARNING_BELOW_(statement); \ if (gtest_fatal_failure_checker.has_new_fatal_failure()) { \ - gtest_msg = "Expected: " #statement " doesn't generate new fatal " \ - "failures in the current thread.\n" \ - " Actual: it does."; \ goto GTEST_CONCAT_TOKEN_(gtest_label_testnofatal_, __LINE__); \ } \ } else \ GTEST_CONCAT_TOKEN_(gtest_label_testnofatal_, __LINE__): \ - fail(gtest_msg) + fail("Expected: " #statement " doesn't generate new fatal " \ + "failures in the current thread.\n" \ + " Actual: it does.") // Expands to the name of the class that implements the given test. #define GTEST_TEST_CLASS_NAME_(test_case_name, test_name) \ @@ -891,7 +1152,7 @@ class GTEST_TEST_CLASS_NAME_(test_case_name, test_name) : public parent_class {\ GTEST_TEST_CLASS_NAME_(test_case_name, test_name)() {}\ private:\ virtual void TestBody();\ - static ::testing::TestInfo* const test_info_;\ + static ::testing::TestInfo* const test_info_ GTEST_ATTRIBUTE_UNUSED_;\ GTEST_DISALLOW_COPY_AND_ASSIGN_(\ GTEST_TEST_CLASS_NAME_(test_case_name, test_name));\ };\ @@ -899,7 +1160,7 @@ class GTEST_TEST_CLASS_NAME_(test_case_name, test_name) : public parent_class {\ ::testing::TestInfo* const GTEST_TEST_CLASS_NAME_(test_case_name, test_name)\ ::test_info_ =\ ::testing::internal::MakeAndRegisterTestInfo(\ - #test_case_name, #test_name, "", "", \ + #test_case_name, #test_name, NULL, NULL, \ (parent_id), \ parent_class::SetUpTestCase, \ parent_class::TearDownTestCase, \ diff --git a/cpp/thirdparty/protobuf-2.3.0/gtest/include/gtest/internal/gtest-linked_ptr.h b/cpp/thirdparty/protobuf-2.5.0/gtest/include/gtest/internal/gtest-linked_ptr.h similarity index 94% rename from cpp/thirdparty/protobuf-2.3.0/gtest/include/gtest/internal/gtest-linked_ptr.h rename to cpp/thirdparty/protobuf-2.5.0/gtest/include/gtest/internal/gtest-linked_ptr.h index f98af0b12..b1362cd00 100644 --- a/cpp/thirdparty/protobuf-2.3.0/gtest/include/gtest/internal/gtest-linked_ptr.h +++ b/cpp/thirdparty/protobuf-2.5.0/gtest/include/gtest/internal/gtest-linked_ptr.h @@ -71,13 +71,13 @@ #include #include -#include +#include "gtest/internal/gtest-port.h" namespace testing { namespace internal { // Protects copying of all linked_ptr objects. -extern Mutex g_linked_ptr_mutex; +GTEST_API_ GTEST_DECLARE_STATIC_MUTEX_(g_linked_ptr_mutex); // This is used internally by all instances of linked_ptr<>. It needs to be // a non-template class because different types of linked_ptr<> can refer to @@ -105,8 +105,8 @@ class linked_ptr_internal { // framework. // Join an existing circle. - // L < g_linked_ptr_mutex - void join(linked_ptr_internal const* ptr) { + void join(linked_ptr_internal const* ptr) + GTEST_LOCK_EXCLUDED_(g_linked_ptr_mutex) { MutexLock lock(&g_linked_ptr_mutex); linked_ptr_internal const* p = ptr; @@ -117,8 +117,8 @@ class linked_ptr_internal { // Leave whatever circle we're part of. Returns true if we were the // last member of the circle. Once this is done, you can join() another. - // L < g_linked_ptr_mutex - bool depart() { + bool depart() + GTEST_LOCK_EXCLUDED_(g_linked_ptr_mutex) { MutexLock lock(&g_linked_ptr_mutex); if (next_ == this) return true; @@ -172,15 +172,6 @@ class linked_ptr { T* get() const { return value_; } T* operator->() const { return value_; } T& operator*() const { return *value_; } - // Release ownership of the pointed object and returns it. - // Sole ownership by this linked_ptr object is required. - T* release() { - bool last = link_.depart(); - assert(last); - T* v = value_; - value_ = NULL; - return v; - } bool operator==(T* p) const { return value_ == p; } bool operator!=(T* p) const { return value_ != p; } diff --git a/cpp/thirdparty/protobuf-2.3.0/gtest/include/gtest/internal/gtest-param-util-generated.h b/cpp/thirdparty/protobuf-2.5.0/gtest/include/gtest/internal/gtest-param-util-generated.h similarity index 82% rename from cpp/thirdparty/protobuf-2.3.0/gtest/include/gtest/internal/gtest-param-util-generated.h rename to cpp/thirdparty/protobuf-2.5.0/gtest/include/gtest/internal/gtest-param-util-generated.h index 1358c329f..e80548592 100644 --- a/cpp/thirdparty/protobuf-2.3.0/gtest/include/gtest/internal/gtest-param-util-generated.h +++ b/cpp/thirdparty/protobuf-2.5.0/gtest/include/gtest/internal/gtest-param-util-generated.h @@ -1,4 +1,6 @@ -// This file was GENERATED by a script. DO NOT EDIT BY HAND!!! +// This file was GENERATED by command: +// pump.py gtest-param-util-generated.h.pump +// DO NOT EDIT BY HAND!!! // Copyright 2008 Google Inc. // All Rights Reserved. @@ -44,13 +46,30 @@ #ifndef GTEST_INCLUDE_GTEST_INTERNAL_GTEST_PARAM_UTIL_GENERATED_H_ #define GTEST_INCLUDE_GTEST_INTERNAL_GTEST_PARAM_UTIL_GENERATED_H_ -#include +// scripts/fuse_gtest.py depends on gtest's own header being #included +// *unconditionally*. Therefore these #includes cannot be moved +// inside #if GTEST_HAS_PARAM_TEST. +#include "gtest/internal/gtest-param-util.h" +#include "gtest/internal/gtest-port.h" #if GTEST_HAS_PARAM_TEST -#include - namespace testing { + +// Forward declarations of ValuesIn(), which is implemented in +// include/gtest/gtest-param-test.h. +template +internal::ParamGenerator< + typename ::testing::internal::IteratorTraits::value_type> +ValuesIn(ForwardIterator begin, ForwardIterator end); + +template +internal::ParamGenerator ValuesIn(const T (&array)[N]); + +template +internal::ParamGenerator ValuesIn( + const Container& container); + namespace internal { // Used in the Values() function to provide polymorphic capabilities. @@ -76,7 +95,7 @@ class ValueArray2 { template operator ParamGenerator() const { - const T array[] = {v1_, v2_}; + const T array[] = {static_cast(v1_), static_cast(v2_)}; return ValuesIn(array); } @@ -95,7 +114,8 @@ class ValueArray3 { template operator ParamGenerator() const { - const T array[] = {v1_, v2_, v3_}; + const T array[] = {static_cast(v1_), static_cast(v2_), + static_cast(v3_)}; return ValuesIn(array); } @@ -116,7 +136,8 @@ class ValueArray4 { template operator ParamGenerator() const { - const T array[] = {v1_, v2_, v3_, v4_}; + const T array[] = {static_cast(v1_), static_cast(v2_), + static_cast(v3_), static_cast(v4_)}; return ValuesIn(array); } @@ -138,7 +159,8 @@ class ValueArray5 { template operator ParamGenerator() const { - const T array[] = {v1_, v2_, v3_, v4_, v5_}; + const T array[] = {static_cast(v1_), static_cast(v2_), + static_cast(v3_), static_cast(v4_), static_cast(v5_)}; return ValuesIn(array); } @@ -162,7 +184,9 @@ class ValueArray6 { template operator ParamGenerator() const { - const T array[] = {v1_, v2_, v3_, v4_, v5_, v6_}; + const T array[] = {static_cast(v1_), static_cast(v2_), + static_cast(v3_), static_cast(v4_), static_cast(v5_), + static_cast(v6_)}; return ValuesIn(array); } @@ -187,7 +211,9 @@ class ValueArray7 { template operator ParamGenerator() const { - const T array[] = {v1_, v2_, v3_, v4_, v5_, v6_, v7_}; + const T array[] = {static_cast(v1_), static_cast(v2_), + static_cast(v3_), static_cast(v4_), static_cast(v5_), + static_cast(v6_), static_cast(v7_)}; return ValuesIn(array); } @@ -214,7 +240,9 @@ class ValueArray8 { template operator ParamGenerator() const { - const T array[] = {v1_, v2_, v3_, v4_, v5_, v6_, v7_, v8_}; + const T array[] = {static_cast(v1_), static_cast(v2_), + static_cast(v3_), static_cast(v4_), static_cast(v5_), + static_cast(v6_), static_cast(v7_), static_cast(v8_)}; return ValuesIn(array); } @@ -242,7 +270,10 @@ class ValueArray9 { template operator ParamGenerator() const { - const T array[] = {v1_, v2_, v3_, v4_, v5_, v6_, v7_, v8_, v9_}; + const T array[] = {static_cast(v1_), static_cast(v2_), + static_cast(v3_), static_cast(v4_), static_cast(v5_), + static_cast(v6_), static_cast(v7_), static_cast(v8_), + static_cast(v9_)}; return ValuesIn(array); } @@ -271,7 +302,10 @@ class ValueArray10 { template operator ParamGenerator() const { - const T array[] = {v1_, v2_, v3_, v4_, v5_, v6_, v7_, v8_, v9_, v10_}; + const T array[] = {static_cast(v1_), static_cast(v2_), + static_cast(v3_), static_cast(v4_), static_cast(v5_), + static_cast(v6_), static_cast(v7_), static_cast(v8_), + static_cast(v9_), static_cast(v10_)}; return ValuesIn(array); } @@ -302,7 +336,10 @@ class ValueArray11 { template operator ParamGenerator() const { - const T array[] = {v1_, v2_, v3_, v4_, v5_, v6_, v7_, v8_, v9_, v10_, v11_}; + const T array[] = {static_cast(v1_), static_cast(v2_), + static_cast(v3_), static_cast(v4_), static_cast(v5_), + static_cast(v6_), static_cast(v7_), static_cast(v8_), + static_cast(v9_), static_cast(v10_), static_cast(v11_)}; return ValuesIn(array); } @@ -334,8 +371,11 @@ class ValueArray12 { template operator ParamGenerator() const { - const T array[] = {v1_, v2_, v3_, v4_, v5_, v6_, v7_, v8_, v9_, v10_, v11_, - v12_}; + const T array[] = {static_cast(v1_), static_cast(v2_), + static_cast(v3_), static_cast(v4_), static_cast(v5_), + static_cast(v6_), static_cast(v7_), static_cast(v8_), + static_cast(v9_), static_cast(v10_), static_cast(v11_), + static_cast(v12_)}; return ValuesIn(array); } @@ -369,8 +409,11 @@ class ValueArray13 { template operator ParamGenerator() const { - const T array[] = {v1_, v2_, v3_, v4_, v5_, v6_, v7_, v8_, v9_, v10_, v11_, - v12_, v13_}; + const T array[] = {static_cast(v1_), static_cast(v2_), + static_cast(v3_), static_cast(v4_), static_cast(v5_), + static_cast(v6_), static_cast(v7_), static_cast(v8_), + static_cast(v9_), static_cast(v10_), static_cast(v11_), + static_cast(v12_), static_cast(v13_)}; return ValuesIn(array); } @@ -405,8 +448,11 @@ class ValueArray14 { template operator ParamGenerator() const { - const T array[] = {v1_, v2_, v3_, v4_, v5_, v6_, v7_, v8_, v9_, v10_, v11_, - v12_, v13_, v14_}; + const T array[] = {static_cast(v1_), static_cast(v2_), + static_cast(v3_), static_cast(v4_), static_cast(v5_), + static_cast(v6_), static_cast(v7_), static_cast(v8_), + static_cast(v9_), static_cast(v10_), static_cast(v11_), + static_cast(v12_), static_cast(v13_), static_cast(v14_)}; return ValuesIn(array); } @@ -442,8 +488,12 @@ class ValueArray15 { template operator ParamGenerator() const { - const T array[] = {v1_, v2_, v3_, v4_, v5_, v6_, v7_, v8_, v9_, v10_, v11_, - v12_, v13_, v14_, v15_}; + const T array[] = {static_cast(v1_), static_cast(v2_), + static_cast(v3_), static_cast(v4_), static_cast(v5_), + static_cast(v6_), static_cast(v7_), static_cast(v8_), + static_cast(v9_), static_cast(v10_), static_cast(v11_), + static_cast(v12_), static_cast(v13_), static_cast(v14_), + static_cast(v15_)}; return ValuesIn(array); } @@ -482,8 +532,12 @@ class ValueArray16 { template operator ParamGenerator() const { - const T array[] = {v1_, v2_, v3_, v4_, v5_, v6_, v7_, v8_, v9_, v10_, v11_, - v12_, v13_, v14_, v15_, v16_}; + const T array[] = {static_cast(v1_), static_cast(v2_), + static_cast(v3_), static_cast(v4_), static_cast(v5_), + static_cast(v6_), static_cast(v7_), static_cast(v8_), + static_cast(v9_), static_cast(v10_), static_cast(v11_), + static_cast(v12_), static_cast(v13_), static_cast(v14_), + static_cast(v15_), static_cast(v16_)}; return ValuesIn(array); } @@ -523,8 +577,12 @@ class ValueArray17 { template operator ParamGenerator() const { - const T array[] = {v1_, v2_, v3_, v4_, v5_, v6_, v7_, v8_, v9_, v10_, v11_, - v12_, v13_, v14_, v15_, v16_, v17_}; + const T array[] = {static_cast(v1_), static_cast(v2_), + static_cast(v3_), static_cast(v4_), static_cast(v5_), + static_cast(v6_), static_cast(v7_), static_cast(v8_), + static_cast(v9_), static_cast(v10_), static_cast(v11_), + static_cast(v12_), static_cast(v13_), static_cast(v14_), + static_cast(v15_), static_cast(v16_), static_cast(v17_)}; return ValuesIn(array); } @@ -565,8 +623,13 @@ class ValueArray18 { template operator ParamGenerator() const { - const T array[] = {v1_, v2_, v3_, v4_, v5_, v6_, v7_, v8_, v9_, v10_, v11_, - v12_, v13_, v14_, v15_, v16_, v17_, v18_}; + const T array[] = {static_cast(v1_), static_cast(v2_), + static_cast(v3_), static_cast(v4_), static_cast(v5_), + static_cast(v6_), static_cast(v7_), static_cast(v8_), + static_cast(v9_), static_cast(v10_), static_cast(v11_), + static_cast(v12_), static_cast(v13_), static_cast(v14_), + static_cast(v15_), static_cast(v16_), static_cast(v17_), + static_cast(v18_)}; return ValuesIn(array); } @@ -608,8 +671,13 @@ class ValueArray19 { template operator ParamGenerator() const { - const T array[] = {v1_, v2_, v3_, v4_, v5_, v6_, v7_, v8_, v9_, v10_, v11_, - v12_, v13_, v14_, v15_, v16_, v17_, v18_, v19_}; + const T array[] = {static_cast(v1_), static_cast(v2_), + static_cast(v3_), static_cast(v4_), static_cast(v5_), + static_cast(v6_), static_cast(v7_), static_cast(v8_), + static_cast(v9_), static_cast(v10_), static_cast(v11_), + static_cast(v12_), static_cast(v13_), static_cast(v14_), + static_cast(v15_), static_cast(v16_), static_cast(v17_), + static_cast(v18_), static_cast(v19_)}; return ValuesIn(array); } @@ -653,8 +721,13 @@ class ValueArray20 { template operator ParamGenerator() const { - const T array[] = {v1_, v2_, v3_, v4_, v5_, v6_, v7_, v8_, v9_, v10_, v11_, - v12_, v13_, v14_, v15_, v16_, v17_, v18_, v19_, v20_}; + const T array[] = {static_cast(v1_), static_cast(v2_), + static_cast(v3_), static_cast(v4_), static_cast(v5_), + static_cast(v6_), static_cast(v7_), static_cast(v8_), + static_cast(v9_), static_cast(v10_), static_cast(v11_), + static_cast(v12_), static_cast(v13_), static_cast(v14_), + static_cast(v15_), static_cast(v16_), static_cast(v17_), + static_cast(v18_), static_cast(v19_), static_cast(v20_)}; return ValuesIn(array); } @@ -700,8 +773,14 @@ class ValueArray21 { template operator ParamGenerator() const { - const T array[] = {v1_, v2_, v3_, v4_, v5_, v6_, v7_, v8_, v9_, v10_, v11_, - v12_, v13_, v14_, v15_, v16_, v17_, v18_, v19_, v20_, v21_}; + const T array[] = {static_cast(v1_), static_cast(v2_), + static_cast(v3_), static_cast(v4_), static_cast(v5_), + static_cast(v6_), static_cast(v7_), static_cast(v8_), + static_cast(v9_), static_cast(v10_), static_cast(v11_), + static_cast(v12_), static_cast(v13_), static_cast(v14_), + static_cast(v15_), static_cast(v16_), static_cast(v17_), + static_cast(v18_), static_cast(v19_), static_cast(v20_), + static_cast(v21_)}; return ValuesIn(array); } @@ -748,8 +827,14 @@ class ValueArray22 { template operator ParamGenerator() const { - const T array[] = {v1_, v2_, v3_, v4_, v5_, v6_, v7_, v8_, v9_, v10_, v11_, - v12_, v13_, v14_, v15_, v16_, v17_, v18_, v19_, v20_, v21_, v22_}; + const T array[] = {static_cast(v1_), static_cast(v2_), + static_cast(v3_), static_cast(v4_), static_cast(v5_), + static_cast(v6_), static_cast(v7_), static_cast(v8_), + static_cast(v9_), static_cast(v10_), static_cast(v11_), + static_cast(v12_), static_cast(v13_), static_cast(v14_), + static_cast(v15_), static_cast(v16_), static_cast(v17_), + static_cast(v18_), static_cast(v19_), static_cast(v20_), + static_cast(v21_), static_cast(v22_)}; return ValuesIn(array); } @@ -798,9 +883,14 @@ class ValueArray23 { template operator ParamGenerator() const { - const T array[] = {v1_, v2_, v3_, v4_, v5_, v6_, v7_, v8_, v9_, v10_, v11_, - v12_, v13_, v14_, v15_, v16_, v17_, v18_, v19_, v20_, v21_, v22_, - v23_}; + const T array[] = {static_cast(v1_), static_cast(v2_), + static_cast(v3_), static_cast(v4_), static_cast(v5_), + static_cast(v6_), static_cast(v7_), static_cast(v8_), + static_cast(v9_), static_cast(v10_), static_cast(v11_), + static_cast(v12_), static_cast(v13_), static_cast(v14_), + static_cast(v15_), static_cast(v16_), static_cast(v17_), + static_cast(v18_), static_cast(v19_), static_cast(v20_), + static_cast(v21_), static_cast(v22_), static_cast(v23_)}; return ValuesIn(array); } @@ -850,9 +940,15 @@ class ValueArray24 { template operator ParamGenerator() const { - const T array[] = {v1_, v2_, v3_, v4_, v5_, v6_, v7_, v8_, v9_, v10_, v11_, - v12_, v13_, v14_, v15_, v16_, v17_, v18_, v19_, v20_, v21_, v22_, v23_, - v24_}; + const T array[] = {static_cast(v1_), static_cast(v2_), + static_cast(v3_), static_cast(v4_), static_cast(v5_), + static_cast(v6_), static_cast(v7_), static_cast(v8_), + static_cast(v9_), static_cast(v10_), static_cast(v11_), + static_cast(v12_), static_cast(v13_), static_cast(v14_), + static_cast(v15_), static_cast(v16_), static_cast(v17_), + static_cast(v18_), static_cast(v19_), static_cast(v20_), + static_cast(v21_), static_cast(v22_), static_cast(v23_), + static_cast(v24_)}; return ValuesIn(array); } @@ -903,9 +999,15 @@ class ValueArray25 { template operator ParamGenerator() const { - const T array[] = {v1_, v2_, v3_, v4_, v5_, v6_, v7_, v8_, v9_, v10_, v11_, - v12_, v13_, v14_, v15_, v16_, v17_, v18_, v19_, v20_, v21_, v22_, v23_, - v24_, v25_}; + const T array[] = {static_cast(v1_), static_cast(v2_), + static_cast(v3_), static_cast(v4_), static_cast(v5_), + static_cast(v6_), static_cast(v7_), static_cast(v8_), + static_cast(v9_), static_cast(v10_), static_cast(v11_), + static_cast(v12_), static_cast(v13_), static_cast(v14_), + static_cast(v15_), static_cast(v16_), static_cast(v17_), + static_cast(v18_), static_cast(v19_), static_cast(v20_), + static_cast(v21_), static_cast(v22_), static_cast(v23_), + static_cast(v24_), static_cast(v25_)}; return ValuesIn(array); } @@ -958,9 +1060,15 @@ class ValueArray26 { template operator ParamGenerator() const { - const T array[] = {v1_, v2_, v3_, v4_, v5_, v6_, v7_, v8_, v9_, v10_, v11_, - v12_, v13_, v14_, v15_, v16_, v17_, v18_, v19_, v20_, v21_, v22_, v23_, - v24_, v25_, v26_}; + const T array[] = {static_cast(v1_), static_cast(v2_), + static_cast(v3_), static_cast(v4_), static_cast(v5_), + static_cast(v6_), static_cast(v7_), static_cast(v8_), + static_cast(v9_), static_cast(v10_), static_cast(v11_), + static_cast(v12_), static_cast(v13_), static_cast(v14_), + static_cast(v15_), static_cast(v16_), static_cast(v17_), + static_cast(v18_), static_cast(v19_), static_cast(v20_), + static_cast(v21_), static_cast(v22_), static_cast(v23_), + static_cast(v24_), static_cast(v25_), static_cast(v26_)}; return ValuesIn(array); } @@ -1015,9 +1123,16 @@ class ValueArray27 { template operator ParamGenerator() const { - const T array[] = {v1_, v2_, v3_, v4_, v5_, v6_, v7_, v8_, v9_, v10_, v11_, - v12_, v13_, v14_, v15_, v16_, v17_, v18_, v19_, v20_, v21_, v22_, v23_, - v24_, v25_, v26_, v27_}; + const T array[] = {static_cast(v1_), static_cast(v2_), + static_cast(v3_), static_cast(v4_), static_cast(v5_), + static_cast(v6_), static_cast(v7_), static_cast(v8_), + static_cast(v9_), static_cast(v10_), static_cast(v11_), + static_cast(v12_), static_cast(v13_), static_cast(v14_), + static_cast(v15_), static_cast(v16_), static_cast(v17_), + static_cast(v18_), static_cast(v19_), static_cast(v20_), + static_cast(v21_), static_cast(v22_), static_cast(v23_), + static_cast(v24_), static_cast(v25_), static_cast(v26_), + static_cast(v27_)}; return ValuesIn(array); } @@ -1073,9 +1188,16 @@ class ValueArray28 { template operator ParamGenerator() const { - const T array[] = {v1_, v2_, v3_, v4_, v5_, v6_, v7_, v8_, v9_, v10_, v11_, - v12_, v13_, v14_, v15_, v16_, v17_, v18_, v19_, v20_, v21_, v22_, v23_, - v24_, v25_, v26_, v27_, v28_}; + const T array[] = {static_cast(v1_), static_cast(v2_), + static_cast(v3_), static_cast(v4_), static_cast(v5_), + static_cast(v6_), static_cast(v7_), static_cast(v8_), + static_cast(v9_), static_cast(v10_), static_cast(v11_), + static_cast(v12_), static_cast(v13_), static_cast(v14_), + static_cast(v15_), static_cast(v16_), static_cast(v17_), + static_cast(v18_), static_cast(v19_), static_cast(v20_), + static_cast(v21_), static_cast(v22_), static_cast(v23_), + static_cast(v24_), static_cast(v25_), static_cast(v26_), + static_cast(v27_), static_cast(v28_)}; return ValuesIn(array); } @@ -1132,9 +1254,16 @@ class ValueArray29 { template operator ParamGenerator() const { - const T array[] = {v1_, v2_, v3_, v4_, v5_, v6_, v7_, v8_, v9_, v10_, v11_, - v12_, v13_, v14_, v15_, v16_, v17_, v18_, v19_, v20_, v21_, v22_, v23_, - v24_, v25_, v26_, v27_, v28_, v29_}; + const T array[] = {static_cast(v1_), static_cast(v2_), + static_cast(v3_), static_cast(v4_), static_cast(v5_), + static_cast(v6_), static_cast(v7_), static_cast(v8_), + static_cast(v9_), static_cast(v10_), static_cast(v11_), + static_cast(v12_), static_cast(v13_), static_cast(v14_), + static_cast(v15_), static_cast(v16_), static_cast(v17_), + static_cast(v18_), static_cast(v19_), static_cast(v20_), + static_cast(v21_), static_cast(v22_), static_cast(v23_), + static_cast(v24_), static_cast(v25_), static_cast(v26_), + static_cast(v27_), static_cast(v28_), static_cast(v29_)}; return ValuesIn(array); } @@ -1193,9 +1322,17 @@ class ValueArray30 { template operator ParamGenerator() const { - const T array[] = {v1_, v2_, v3_, v4_, v5_, v6_, v7_, v8_, v9_, v10_, v11_, - v12_, v13_, v14_, v15_, v16_, v17_, v18_, v19_, v20_, v21_, v22_, v23_, - v24_, v25_, v26_, v27_, v28_, v29_, v30_}; + const T array[] = {static_cast(v1_), static_cast(v2_), + static_cast(v3_), static_cast(v4_), static_cast(v5_), + static_cast(v6_), static_cast(v7_), static_cast(v8_), + static_cast(v9_), static_cast(v10_), static_cast(v11_), + static_cast(v12_), static_cast(v13_), static_cast(v14_), + static_cast(v15_), static_cast(v16_), static_cast(v17_), + static_cast(v18_), static_cast(v19_), static_cast(v20_), + static_cast(v21_), static_cast(v22_), static_cast(v23_), + static_cast(v24_), static_cast(v25_), static_cast(v26_), + static_cast(v27_), static_cast(v28_), static_cast(v29_), + static_cast(v30_)}; return ValuesIn(array); } @@ -1256,9 +1393,17 @@ class ValueArray31 { template operator ParamGenerator() const { - const T array[] = {v1_, v2_, v3_, v4_, v5_, v6_, v7_, v8_, v9_, v10_, v11_, - v12_, v13_, v14_, v15_, v16_, v17_, v18_, v19_, v20_, v21_, v22_, v23_, - v24_, v25_, v26_, v27_, v28_, v29_, v30_, v31_}; + const T array[] = {static_cast(v1_), static_cast(v2_), + static_cast(v3_), static_cast(v4_), static_cast(v5_), + static_cast(v6_), static_cast(v7_), static_cast(v8_), + static_cast(v9_), static_cast(v10_), static_cast(v11_), + static_cast(v12_), static_cast(v13_), static_cast(v14_), + static_cast(v15_), static_cast(v16_), static_cast(v17_), + static_cast(v18_), static_cast(v19_), static_cast(v20_), + static_cast(v21_), static_cast(v22_), static_cast(v23_), + static_cast(v24_), static_cast(v25_), static_cast(v26_), + static_cast(v27_), static_cast(v28_), static_cast(v29_), + static_cast(v30_), static_cast(v31_)}; return ValuesIn(array); } @@ -1320,9 +1465,17 @@ class ValueArray32 { template operator ParamGenerator() const { - const T array[] = {v1_, v2_, v3_, v4_, v5_, v6_, v7_, v8_, v9_, v10_, v11_, - v12_, v13_, v14_, v15_, v16_, v17_, v18_, v19_, v20_, v21_, v22_, v23_, - v24_, v25_, v26_, v27_, v28_, v29_, v30_, v31_, v32_}; + const T array[] = {static_cast(v1_), static_cast(v2_), + static_cast(v3_), static_cast(v4_), static_cast(v5_), + static_cast(v6_), static_cast(v7_), static_cast(v8_), + static_cast(v9_), static_cast(v10_), static_cast(v11_), + static_cast(v12_), static_cast(v13_), static_cast(v14_), + static_cast(v15_), static_cast(v16_), static_cast(v17_), + static_cast(v18_), static_cast(v19_), static_cast(v20_), + static_cast(v21_), static_cast(v22_), static_cast(v23_), + static_cast(v24_), static_cast(v25_), static_cast(v26_), + static_cast(v27_), static_cast(v28_), static_cast(v29_), + static_cast(v30_), static_cast(v31_), static_cast(v32_)}; return ValuesIn(array); } @@ -1386,9 +1539,18 @@ class ValueArray33 { template operator ParamGenerator() const { - const T array[] = {v1_, v2_, v3_, v4_, v5_, v6_, v7_, v8_, v9_, v10_, v11_, - v12_, v13_, v14_, v15_, v16_, v17_, v18_, v19_, v20_, v21_, v22_, v23_, - v24_, v25_, v26_, v27_, v28_, v29_, v30_, v31_, v32_, v33_}; + const T array[] = {static_cast(v1_), static_cast(v2_), + static_cast(v3_), static_cast(v4_), static_cast(v5_), + static_cast(v6_), static_cast(v7_), static_cast(v8_), + static_cast(v9_), static_cast(v10_), static_cast(v11_), + static_cast(v12_), static_cast(v13_), static_cast(v14_), + static_cast(v15_), static_cast(v16_), static_cast(v17_), + static_cast(v18_), static_cast(v19_), static_cast(v20_), + static_cast(v21_), static_cast(v22_), static_cast(v23_), + static_cast(v24_), static_cast(v25_), static_cast(v26_), + static_cast(v27_), static_cast(v28_), static_cast(v29_), + static_cast(v30_), static_cast(v31_), static_cast(v32_), + static_cast(v33_)}; return ValuesIn(array); } @@ -1453,9 +1615,18 @@ class ValueArray34 { template operator ParamGenerator() const { - const T array[] = {v1_, v2_, v3_, v4_, v5_, v6_, v7_, v8_, v9_, v10_, v11_, - v12_, v13_, v14_, v15_, v16_, v17_, v18_, v19_, v20_, v21_, v22_, v23_, - v24_, v25_, v26_, v27_, v28_, v29_, v30_, v31_, v32_, v33_, v34_}; + const T array[] = {static_cast(v1_), static_cast(v2_), + static_cast(v3_), static_cast(v4_), static_cast(v5_), + static_cast(v6_), static_cast(v7_), static_cast(v8_), + static_cast(v9_), static_cast(v10_), static_cast(v11_), + static_cast(v12_), static_cast(v13_), static_cast(v14_), + static_cast(v15_), static_cast(v16_), static_cast(v17_), + static_cast(v18_), static_cast(v19_), static_cast(v20_), + static_cast(v21_), static_cast(v22_), static_cast(v23_), + static_cast(v24_), static_cast(v25_), static_cast(v26_), + static_cast(v27_), static_cast(v28_), static_cast(v29_), + static_cast(v30_), static_cast(v31_), static_cast(v32_), + static_cast(v33_), static_cast(v34_)}; return ValuesIn(array); } @@ -1521,10 +1692,18 @@ class ValueArray35 { template operator ParamGenerator() const { - const T array[] = {v1_, v2_, v3_, v4_, v5_, v6_, v7_, v8_, v9_, v10_, v11_, - v12_, v13_, v14_, v15_, v16_, v17_, v18_, v19_, v20_, v21_, v22_, v23_, - v24_, v25_, v26_, v27_, v28_, v29_, v30_, v31_, v32_, v33_, v34_, - v35_}; + const T array[] = {static_cast(v1_), static_cast(v2_), + static_cast(v3_), static_cast(v4_), static_cast(v5_), + static_cast(v6_), static_cast(v7_), static_cast(v8_), + static_cast(v9_), static_cast(v10_), static_cast(v11_), + static_cast(v12_), static_cast(v13_), static_cast(v14_), + static_cast(v15_), static_cast(v16_), static_cast(v17_), + static_cast(v18_), static_cast(v19_), static_cast(v20_), + static_cast(v21_), static_cast(v22_), static_cast(v23_), + static_cast(v24_), static_cast(v25_), static_cast(v26_), + static_cast(v27_), static_cast(v28_), static_cast(v29_), + static_cast(v30_), static_cast(v31_), static_cast(v32_), + static_cast(v33_), static_cast(v34_), static_cast(v35_)}; return ValuesIn(array); } @@ -1592,10 +1771,19 @@ class ValueArray36 { template operator ParamGenerator() const { - const T array[] = {v1_, v2_, v3_, v4_, v5_, v6_, v7_, v8_, v9_, v10_, v11_, - v12_, v13_, v14_, v15_, v16_, v17_, v18_, v19_, v20_, v21_, v22_, v23_, - v24_, v25_, v26_, v27_, v28_, v29_, v30_, v31_, v32_, v33_, v34_, v35_, - v36_}; + const T array[] = {static_cast(v1_), static_cast(v2_), + static_cast(v3_), static_cast(v4_), static_cast(v5_), + static_cast(v6_), static_cast(v7_), static_cast(v8_), + static_cast(v9_), static_cast(v10_), static_cast(v11_), + static_cast(v12_), static_cast(v13_), static_cast(v14_), + static_cast(v15_), static_cast(v16_), static_cast(v17_), + static_cast(v18_), static_cast(v19_), static_cast(v20_), + static_cast(v21_), static_cast(v22_), static_cast(v23_), + static_cast(v24_), static_cast(v25_), static_cast(v26_), + static_cast(v27_), static_cast(v28_), static_cast(v29_), + static_cast(v30_), static_cast(v31_), static_cast(v32_), + static_cast(v33_), static_cast(v34_), static_cast(v35_), + static_cast(v36_)}; return ValuesIn(array); } @@ -1665,10 +1853,19 @@ class ValueArray37 { template operator ParamGenerator() const { - const T array[] = {v1_, v2_, v3_, v4_, v5_, v6_, v7_, v8_, v9_, v10_, v11_, - v12_, v13_, v14_, v15_, v16_, v17_, v18_, v19_, v20_, v21_, v22_, v23_, - v24_, v25_, v26_, v27_, v28_, v29_, v30_, v31_, v32_, v33_, v34_, v35_, - v36_, v37_}; + const T array[] = {static_cast(v1_), static_cast(v2_), + static_cast(v3_), static_cast(v4_), static_cast(v5_), + static_cast(v6_), static_cast(v7_), static_cast(v8_), + static_cast(v9_), static_cast(v10_), static_cast(v11_), + static_cast(v12_), static_cast(v13_), static_cast(v14_), + static_cast(v15_), static_cast(v16_), static_cast(v17_), + static_cast(v18_), static_cast(v19_), static_cast(v20_), + static_cast(v21_), static_cast(v22_), static_cast(v23_), + static_cast(v24_), static_cast(v25_), static_cast(v26_), + static_cast(v27_), static_cast(v28_), static_cast(v29_), + static_cast(v30_), static_cast(v31_), static_cast(v32_), + static_cast(v33_), static_cast(v34_), static_cast(v35_), + static_cast(v36_), static_cast(v37_)}; return ValuesIn(array); } @@ -1739,10 +1936,19 @@ class ValueArray38 { template operator ParamGenerator() const { - const T array[] = {v1_, v2_, v3_, v4_, v5_, v6_, v7_, v8_, v9_, v10_, v11_, - v12_, v13_, v14_, v15_, v16_, v17_, v18_, v19_, v20_, v21_, v22_, v23_, - v24_, v25_, v26_, v27_, v28_, v29_, v30_, v31_, v32_, v33_, v34_, v35_, - v36_, v37_, v38_}; + const T array[] = {static_cast(v1_), static_cast(v2_), + static_cast(v3_), static_cast(v4_), static_cast(v5_), + static_cast(v6_), static_cast(v7_), static_cast(v8_), + static_cast(v9_), static_cast(v10_), static_cast(v11_), + static_cast(v12_), static_cast(v13_), static_cast(v14_), + static_cast(v15_), static_cast(v16_), static_cast(v17_), + static_cast(v18_), static_cast(v19_), static_cast(v20_), + static_cast(v21_), static_cast(v22_), static_cast(v23_), + static_cast(v24_), static_cast(v25_), static_cast(v26_), + static_cast(v27_), static_cast(v28_), static_cast(v29_), + static_cast(v30_), static_cast(v31_), static_cast(v32_), + static_cast(v33_), static_cast(v34_), static_cast(v35_), + static_cast(v36_), static_cast(v37_), static_cast(v38_)}; return ValuesIn(array); } @@ -1814,10 +2020,20 @@ class ValueArray39 { template operator ParamGenerator() const { - const T array[] = {v1_, v2_, v3_, v4_, v5_, v6_, v7_, v8_, v9_, v10_, v11_, - v12_, v13_, v14_, v15_, v16_, v17_, v18_, v19_, v20_, v21_, v22_, v23_, - v24_, v25_, v26_, v27_, v28_, v29_, v30_, v31_, v32_, v33_, v34_, v35_, - v36_, v37_, v38_, v39_}; + const T array[] = {static_cast(v1_), static_cast(v2_), + static_cast(v3_), static_cast(v4_), static_cast(v5_), + static_cast(v6_), static_cast(v7_), static_cast(v8_), + static_cast(v9_), static_cast(v10_), static_cast(v11_), + static_cast(v12_), static_cast(v13_), static_cast(v14_), + static_cast(v15_), static_cast(v16_), static_cast(v17_), + static_cast(v18_), static_cast(v19_), static_cast(v20_), + static_cast(v21_), static_cast(v22_), static_cast(v23_), + static_cast(v24_), static_cast(v25_), static_cast(v26_), + static_cast(v27_), static_cast(v28_), static_cast(v29_), + static_cast(v30_), static_cast(v31_), static_cast(v32_), + static_cast(v33_), static_cast(v34_), static_cast(v35_), + static_cast(v36_), static_cast(v37_), static_cast(v38_), + static_cast(v39_)}; return ValuesIn(array); } @@ -1891,10 +2107,20 @@ class ValueArray40 { template operator ParamGenerator() const { - const T array[] = {v1_, v2_, v3_, v4_, v5_, v6_, v7_, v8_, v9_, v10_, v11_, - v12_, v13_, v14_, v15_, v16_, v17_, v18_, v19_, v20_, v21_, v22_, v23_, - v24_, v25_, v26_, v27_, v28_, v29_, v30_, v31_, v32_, v33_, v34_, v35_, - v36_, v37_, v38_, v39_, v40_}; + const T array[] = {static_cast(v1_), static_cast(v2_), + static_cast(v3_), static_cast(v4_), static_cast(v5_), + static_cast(v6_), static_cast(v7_), static_cast(v8_), + static_cast(v9_), static_cast(v10_), static_cast(v11_), + static_cast(v12_), static_cast(v13_), static_cast(v14_), + static_cast(v15_), static_cast(v16_), static_cast(v17_), + static_cast(v18_), static_cast(v19_), static_cast(v20_), + static_cast(v21_), static_cast(v22_), static_cast(v23_), + static_cast(v24_), static_cast(v25_), static_cast(v26_), + static_cast(v27_), static_cast(v28_), static_cast(v29_), + static_cast(v30_), static_cast(v31_), static_cast(v32_), + static_cast(v33_), static_cast(v34_), static_cast(v35_), + static_cast(v36_), static_cast(v37_), static_cast(v38_), + static_cast(v39_), static_cast(v40_)}; return ValuesIn(array); } @@ -1970,10 +2196,20 @@ class ValueArray41 { template operator ParamGenerator() const { - const T array[] = {v1_, v2_, v3_, v4_, v5_, v6_, v7_, v8_, v9_, v10_, v11_, - v12_, v13_, v14_, v15_, v16_, v17_, v18_, v19_, v20_, v21_, v22_, v23_, - v24_, v25_, v26_, v27_, v28_, v29_, v30_, v31_, v32_, v33_, v34_, v35_, - v36_, v37_, v38_, v39_, v40_, v41_}; + const T array[] = {static_cast(v1_), static_cast(v2_), + static_cast(v3_), static_cast(v4_), static_cast(v5_), + static_cast(v6_), static_cast(v7_), static_cast(v8_), + static_cast(v9_), static_cast(v10_), static_cast(v11_), + static_cast(v12_), static_cast(v13_), static_cast(v14_), + static_cast(v15_), static_cast(v16_), static_cast(v17_), + static_cast(v18_), static_cast(v19_), static_cast(v20_), + static_cast(v21_), static_cast(v22_), static_cast(v23_), + static_cast(v24_), static_cast(v25_), static_cast(v26_), + static_cast(v27_), static_cast(v28_), static_cast(v29_), + static_cast(v30_), static_cast(v31_), static_cast(v32_), + static_cast(v33_), static_cast(v34_), static_cast(v35_), + static_cast(v36_), static_cast(v37_), static_cast(v38_), + static_cast(v39_), static_cast(v40_), static_cast(v41_)}; return ValuesIn(array); } @@ -2050,10 +2286,21 @@ class ValueArray42 { template operator ParamGenerator() const { - const T array[] = {v1_, v2_, v3_, v4_, v5_, v6_, v7_, v8_, v9_, v10_, v11_, - v12_, v13_, v14_, v15_, v16_, v17_, v18_, v19_, v20_, v21_, v22_, v23_, - v24_, v25_, v26_, v27_, v28_, v29_, v30_, v31_, v32_, v33_, v34_, v35_, - v36_, v37_, v38_, v39_, v40_, v41_, v42_}; + const T array[] = {static_cast(v1_), static_cast(v2_), + static_cast(v3_), static_cast(v4_), static_cast(v5_), + static_cast(v6_), static_cast(v7_), static_cast(v8_), + static_cast(v9_), static_cast(v10_), static_cast(v11_), + static_cast(v12_), static_cast(v13_), static_cast(v14_), + static_cast(v15_), static_cast(v16_), static_cast(v17_), + static_cast(v18_), static_cast(v19_), static_cast(v20_), + static_cast(v21_), static_cast(v22_), static_cast(v23_), + static_cast(v24_), static_cast(v25_), static_cast(v26_), + static_cast(v27_), static_cast(v28_), static_cast(v29_), + static_cast(v30_), static_cast(v31_), static_cast(v32_), + static_cast(v33_), static_cast(v34_), static_cast(v35_), + static_cast(v36_), static_cast(v37_), static_cast(v38_), + static_cast(v39_), static_cast(v40_), static_cast(v41_), + static_cast(v42_)}; return ValuesIn(array); } @@ -2131,10 +2378,21 @@ class ValueArray43 { template operator ParamGenerator() const { - const T array[] = {v1_, v2_, v3_, v4_, v5_, v6_, v7_, v8_, v9_, v10_, v11_, - v12_, v13_, v14_, v15_, v16_, v17_, v18_, v19_, v20_, v21_, v22_, v23_, - v24_, v25_, v26_, v27_, v28_, v29_, v30_, v31_, v32_, v33_, v34_, v35_, - v36_, v37_, v38_, v39_, v40_, v41_, v42_, v43_}; + const T array[] = {static_cast(v1_), static_cast(v2_), + static_cast(v3_), static_cast(v4_), static_cast(v5_), + static_cast(v6_), static_cast(v7_), static_cast(v8_), + static_cast(v9_), static_cast(v10_), static_cast(v11_), + static_cast(v12_), static_cast(v13_), static_cast(v14_), + static_cast(v15_), static_cast(v16_), static_cast(v17_), + static_cast(v18_), static_cast(v19_), static_cast(v20_), + static_cast(v21_), static_cast(v22_), static_cast(v23_), + static_cast(v24_), static_cast(v25_), static_cast(v26_), + static_cast(v27_), static_cast(v28_), static_cast(v29_), + static_cast(v30_), static_cast(v31_), static_cast(v32_), + static_cast(v33_), static_cast(v34_), static_cast(v35_), + static_cast(v36_), static_cast(v37_), static_cast(v38_), + static_cast(v39_), static_cast(v40_), static_cast(v41_), + static_cast(v42_), static_cast(v43_)}; return ValuesIn(array); } @@ -2214,10 +2472,21 @@ class ValueArray44 { template operator ParamGenerator() const { - const T array[] = {v1_, v2_, v3_, v4_, v5_, v6_, v7_, v8_, v9_, v10_, v11_, - v12_, v13_, v14_, v15_, v16_, v17_, v18_, v19_, v20_, v21_, v22_, v23_, - v24_, v25_, v26_, v27_, v28_, v29_, v30_, v31_, v32_, v33_, v34_, v35_, - v36_, v37_, v38_, v39_, v40_, v41_, v42_, v43_, v44_}; + const T array[] = {static_cast(v1_), static_cast(v2_), + static_cast(v3_), static_cast(v4_), static_cast(v5_), + static_cast(v6_), static_cast(v7_), static_cast(v8_), + static_cast(v9_), static_cast(v10_), static_cast(v11_), + static_cast(v12_), static_cast(v13_), static_cast(v14_), + static_cast(v15_), static_cast(v16_), static_cast(v17_), + static_cast(v18_), static_cast(v19_), static_cast(v20_), + static_cast(v21_), static_cast(v22_), static_cast(v23_), + static_cast(v24_), static_cast(v25_), static_cast(v26_), + static_cast(v27_), static_cast(v28_), static_cast(v29_), + static_cast(v30_), static_cast(v31_), static_cast(v32_), + static_cast(v33_), static_cast(v34_), static_cast(v35_), + static_cast(v36_), static_cast(v37_), static_cast(v38_), + static_cast(v39_), static_cast(v40_), static_cast(v41_), + static_cast(v42_), static_cast(v43_), static_cast(v44_)}; return ValuesIn(array); } @@ -2298,10 +2567,22 @@ class ValueArray45 { template operator ParamGenerator() const { - const T array[] = {v1_, v2_, v3_, v4_, v5_, v6_, v7_, v8_, v9_, v10_, v11_, - v12_, v13_, v14_, v15_, v16_, v17_, v18_, v19_, v20_, v21_, v22_, v23_, - v24_, v25_, v26_, v27_, v28_, v29_, v30_, v31_, v32_, v33_, v34_, v35_, - v36_, v37_, v38_, v39_, v40_, v41_, v42_, v43_, v44_, v45_}; + const T array[] = {static_cast(v1_), static_cast(v2_), + static_cast(v3_), static_cast(v4_), static_cast(v5_), + static_cast(v6_), static_cast(v7_), static_cast(v8_), + static_cast(v9_), static_cast(v10_), static_cast(v11_), + static_cast(v12_), static_cast(v13_), static_cast(v14_), + static_cast(v15_), static_cast(v16_), static_cast(v17_), + static_cast(v18_), static_cast(v19_), static_cast(v20_), + static_cast(v21_), static_cast(v22_), static_cast(v23_), + static_cast(v24_), static_cast(v25_), static_cast(v26_), + static_cast(v27_), static_cast(v28_), static_cast(v29_), + static_cast(v30_), static_cast(v31_), static_cast(v32_), + static_cast(v33_), static_cast(v34_), static_cast(v35_), + static_cast(v36_), static_cast(v37_), static_cast(v38_), + static_cast(v39_), static_cast(v40_), static_cast(v41_), + static_cast(v42_), static_cast(v43_), static_cast(v44_), + static_cast(v45_)}; return ValuesIn(array); } @@ -2384,10 +2665,22 @@ class ValueArray46 { template operator ParamGenerator() const { - const T array[] = {v1_, v2_, v3_, v4_, v5_, v6_, v7_, v8_, v9_, v10_, v11_, - v12_, v13_, v14_, v15_, v16_, v17_, v18_, v19_, v20_, v21_, v22_, v23_, - v24_, v25_, v26_, v27_, v28_, v29_, v30_, v31_, v32_, v33_, v34_, v35_, - v36_, v37_, v38_, v39_, v40_, v41_, v42_, v43_, v44_, v45_, v46_}; + const T array[] = {static_cast(v1_), static_cast(v2_), + static_cast(v3_), static_cast(v4_), static_cast(v5_), + static_cast(v6_), static_cast(v7_), static_cast(v8_), + static_cast(v9_), static_cast(v10_), static_cast(v11_), + static_cast(v12_), static_cast(v13_), static_cast(v14_), + static_cast(v15_), static_cast(v16_), static_cast(v17_), + static_cast(v18_), static_cast(v19_), static_cast(v20_), + static_cast(v21_), static_cast(v22_), static_cast(v23_), + static_cast(v24_), static_cast(v25_), static_cast(v26_), + static_cast(v27_), static_cast(v28_), static_cast(v29_), + static_cast(v30_), static_cast(v31_), static_cast(v32_), + static_cast(v33_), static_cast(v34_), static_cast(v35_), + static_cast(v36_), static_cast(v37_), static_cast(v38_), + static_cast(v39_), static_cast(v40_), static_cast(v41_), + static_cast(v42_), static_cast(v43_), static_cast(v44_), + static_cast(v45_), static_cast(v46_)}; return ValuesIn(array); } @@ -2472,11 +2765,22 @@ class ValueArray47 { template operator ParamGenerator() const { - const T array[] = {v1_, v2_, v3_, v4_, v5_, v6_, v7_, v8_, v9_, v10_, v11_, - v12_, v13_, v14_, v15_, v16_, v17_, v18_, v19_, v20_, v21_, v22_, v23_, - v24_, v25_, v26_, v27_, v28_, v29_, v30_, v31_, v32_, v33_, v34_, v35_, - v36_, v37_, v38_, v39_, v40_, v41_, v42_, v43_, v44_, v45_, v46_, - v47_}; + const T array[] = {static_cast(v1_), static_cast(v2_), + static_cast(v3_), static_cast(v4_), static_cast(v5_), + static_cast(v6_), static_cast(v7_), static_cast(v8_), + static_cast(v9_), static_cast(v10_), static_cast(v11_), + static_cast(v12_), static_cast(v13_), static_cast(v14_), + static_cast(v15_), static_cast(v16_), static_cast(v17_), + static_cast(v18_), static_cast(v19_), static_cast(v20_), + static_cast(v21_), static_cast(v22_), static_cast(v23_), + static_cast(v24_), static_cast(v25_), static_cast(v26_), + static_cast(v27_), static_cast(v28_), static_cast(v29_), + static_cast(v30_), static_cast(v31_), static_cast(v32_), + static_cast(v33_), static_cast(v34_), static_cast(v35_), + static_cast(v36_), static_cast(v37_), static_cast(v38_), + static_cast(v39_), static_cast(v40_), static_cast(v41_), + static_cast(v42_), static_cast(v43_), static_cast(v44_), + static_cast(v45_), static_cast(v46_), static_cast(v47_)}; return ValuesIn(array); } @@ -2562,11 +2866,23 @@ class ValueArray48 { template operator ParamGenerator() const { - const T array[] = {v1_, v2_, v3_, v4_, v5_, v6_, v7_, v8_, v9_, v10_, v11_, - v12_, v13_, v14_, v15_, v16_, v17_, v18_, v19_, v20_, v21_, v22_, v23_, - v24_, v25_, v26_, v27_, v28_, v29_, v30_, v31_, v32_, v33_, v34_, v35_, - v36_, v37_, v38_, v39_, v40_, v41_, v42_, v43_, v44_, v45_, v46_, v47_, - v48_}; + const T array[] = {static_cast(v1_), static_cast(v2_), + static_cast(v3_), static_cast(v4_), static_cast(v5_), + static_cast(v6_), static_cast(v7_), static_cast(v8_), + static_cast(v9_), static_cast(v10_), static_cast(v11_), + static_cast(v12_), static_cast(v13_), static_cast(v14_), + static_cast(v15_), static_cast(v16_), static_cast(v17_), + static_cast(v18_), static_cast(v19_), static_cast(v20_), + static_cast(v21_), static_cast(v22_), static_cast(v23_), + static_cast(v24_), static_cast(v25_), static_cast(v26_), + static_cast(v27_), static_cast(v28_), static_cast(v29_), + static_cast(v30_), static_cast(v31_), static_cast(v32_), + static_cast(v33_), static_cast(v34_), static_cast(v35_), + static_cast(v36_), static_cast(v37_), static_cast(v38_), + static_cast(v39_), static_cast(v40_), static_cast(v41_), + static_cast(v42_), static_cast(v43_), static_cast(v44_), + static_cast(v45_), static_cast(v46_), static_cast(v47_), + static_cast(v48_)}; return ValuesIn(array); } @@ -2653,11 +2969,23 @@ class ValueArray49 { template operator ParamGenerator() const { - const T array[] = {v1_, v2_, v3_, v4_, v5_, v6_, v7_, v8_, v9_, v10_, v11_, - v12_, v13_, v14_, v15_, v16_, v17_, v18_, v19_, v20_, v21_, v22_, v23_, - v24_, v25_, v26_, v27_, v28_, v29_, v30_, v31_, v32_, v33_, v34_, v35_, - v36_, v37_, v38_, v39_, v40_, v41_, v42_, v43_, v44_, v45_, v46_, v47_, - v48_, v49_}; + const T array[] = {static_cast(v1_), static_cast(v2_), + static_cast(v3_), static_cast(v4_), static_cast(v5_), + static_cast(v6_), static_cast(v7_), static_cast(v8_), + static_cast(v9_), static_cast(v10_), static_cast(v11_), + static_cast(v12_), static_cast(v13_), static_cast(v14_), + static_cast(v15_), static_cast(v16_), static_cast(v17_), + static_cast(v18_), static_cast(v19_), static_cast(v20_), + static_cast(v21_), static_cast(v22_), static_cast(v23_), + static_cast(v24_), static_cast(v25_), static_cast(v26_), + static_cast(v27_), static_cast(v28_), static_cast(v29_), + static_cast(v30_), static_cast(v31_), static_cast(v32_), + static_cast(v33_), static_cast(v34_), static_cast(v35_), + static_cast(v36_), static_cast(v37_), static_cast(v38_), + static_cast(v39_), static_cast(v40_), static_cast(v41_), + static_cast(v42_), static_cast(v43_), static_cast(v44_), + static_cast(v45_), static_cast(v46_), static_cast(v47_), + static_cast(v48_), static_cast(v49_)}; return ValuesIn(array); } @@ -2745,11 +3073,23 @@ class ValueArray50 { template operator ParamGenerator() const { - const T array[] = {v1_, v2_, v3_, v4_, v5_, v6_, v7_, v8_, v9_, v10_, v11_, - v12_, v13_, v14_, v15_, v16_, v17_, v18_, v19_, v20_, v21_, v22_, v23_, - v24_, v25_, v26_, v27_, v28_, v29_, v30_, v31_, v32_, v33_, v34_, v35_, - v36_, v37_, v38_, v39_, v40_, v41_, v42_, v43_, v44_, v45_, v46_, v47_, - v48_, v49_, v50_}; + const T array[] = {static_cast(v1_), static_cast(v2_), + static_cast(v3_), static_cast(v4_), static_cast(v5_), + static_cast(v6_), static_cast(v7_), static_cast(v8_), + static_cast(v9_), static_cast(v10_), static_cast(v11_), + static_cast(v12_), static_cast(v13_), static_cast(v14_), + static_cast(v15_), static_cast(v16_), static_cast(v17_), + static_cast(v18_), static_cast(v19_), static_cast(v20_), + static_cast(v21_), static_cast(v22_), static_cast(v23_), + static_cast(v24_), static_cast(v25_), static_cast(v26_), + static_cast(v27_), static_cast(v28_), static_cast(v29_), + static_cast(v30_), static_cast(v31_), static_cast(v32_), + static_cast(v33_), static_cast(v34_), static_cast(v35_), + static_cast(v36_), static_cast(v37_), static_cast(v38_), + static_cast(v39_), static_cast(v40_), static_cast(v41_), + static_cast(v42_), static_cast(v43_), static_cast(v44_), + static_cast(v45_), static_cast(v46_), static_cast(v47_), + static_cast(v48_), static_cast(v49_), static_cast(v50_)}; return ValuesIn(array); } @@ -2809,7 +3149,7 @@ class ValueArray50 { const T50 v50_; }; -#if GTEST_HAS_COMBINE +# if GTEST_HAS_COMBINE // INTERNAL IMPLEMENTATION - DO NOT USE IN USER CODE. // // Generates values from the Cartesian product of values produced @@ -4793,7 +5133,7 @@ CartesianProductHolder10(const Generator1& g1, const Generator2& g2, const Generator10 g10_; }; // class CartesianProductHolder10 -#endif // GTEST_HAS_COMBINE +# endif // GTEST_HAS_COMBINE } // namespace internal } // namespace testing diff --git a/cpp/thirdparty/protobuf-2.3.0/gtest/include/gtest/internal/gtest-param-util-generated.h.pump b/cpp/thirdparty/protobuf-2.5.0/gtest/include/gtest/internal/gtest-param-util-generated.h.pump similarity index 90% rename from cpp/thirdparty/protobuf-2.3.0/gtest/include/gtest/internal/gtest-param-util-generated.h.pump rename to cpp/thirdparty/protobuf-2.5.0/gtest/include/gtest/internal/gtest-param-util-generated.h.pump index 2da2872a3..009206fd3 100644 --- a/cpp/thirdparty/protobuf-2.3.0/gtest/include/gtest/internal/gtest-param-util-generated.h.pump +++ b/cpp/thirdparty/protobuf-2.5.0/gtest/include/gtest/internal/gtest-param-util-generated.h.pump @@ -45,13 +45,30 @@ $var maxtuple = 10 $$ Maximum number of Combine arguments we want to support. #ifndef GTEST_INCLUDE_GTEST_INTERNAL_GTEST_PARAM_UTIL_GENERATED_H_ #define GTEST_INCLUDE_GTEST_INTERNAL_GTEST_PARAM_UTIL_GENERATED_H_ -#include +// scripts/fuse_gtest.py depends on gtest's own header being #included +// *unconditionally*. Therefore these #includes cannot be moved +// inside #if GTEST_HAS_PARAM_TEST. +#include "gtest/internal/gtest-param-util.h" +#include "gtest/internal/gtest-port.h" #if GTEST_HAS_PARAM_TEST -#include - namespace testing { + +// Forward declarations of ValuesIn(), which is implemented in +// include/gtest/gtest-param-test.h. +template +internal::ParamGenerator< + typename ::testing::internal::IteratorTraits::value_type> +ValuesIn(ForwardIterator begin, ForwardIterator end); + +template +internal::ParamGenerator ValuesIn(const T (&array)[N]); + +template +internal::ParamGenerator ValuesIn( + const Container& container); + namespace internal { // Used in the Values() function to provide polymorphic capabilities. @@ -81,7 +98,7 @@ class ValueArray$i { template operator ParamGenerator() const { - const T array[] = {$for j, [[v$(j)_]]}; + const T array[] = {$for j, [[static_cast(v$(j)_)]]}; return ValuesIn(array); } @@ -98,7 +115,7 @@ $for j [[ ]] -#if GTEST_HAS_COMBINE +# if GTEST_HAS_COMBINE // INTERNAL IMPLEMENTATION - DO NOT USE IN USER CODE. // // Generates values from the Cartesian product of values produced @@ -274,7 +291,7 @@ $for j [[ ]] -#endif // GTEST_HAS_COMBINE +# endif // GTEST_HAS_COMBINE } // namespace internal } // namespace testing diff --git a/cpp/thirdparty/protobuf-2.3.0/gtest/include/gtest/internal/gtest-param-util.h b/cpp/thirdparty/protobuf-2.5.0/gtest/include/gtest/internal/gtest-param-util.h similarity index 90% rename from cpp/thirdparty/protobuf-2.3.0/gtest/include/gtest/internal/gtest-param-util.h rename to cpp/thirdparty/protobuf-2.5.0/gtest/include/gtest/internal/gtest-param-util.h index dcc549474..0ef9718cf 100644 --- a/cpp/thirdparty/protobuf-2.3.0/gtest/include/gtest/internal/gtest-param-util.h +++ b/cpp/thirdparty/protobuf-2.5.0/gtest/include/gtest/internal/gtest-param-util.h @@ -38,17 +38,16 @@ #include #include -#include +// scripts/fuse_gtest.py depends on gtest's own header being #included +// *unconditionally*. Therefore these #includes cannot be moved +// inside #if GTEST_HAS_PARAM_TEST. +#include "gtest/internal/gtest-internal.h" +#include "gtest/internal/gtest-linked_ptr.h" +#include "gtest/internal/gtest-port.h" +#include "gtest/gtest-printers.h" #if GTEST_HAS_PARAM_TEST -#if GTEST_HAS_RTTI -#include -#endif // GTEST_HAS_RTTI - -#include -#include - namespace testing { namespace internal { @@ -58,26 +57,8 @@ namespace internal { // fixture class for the same test case. This may happen when // TEST_P macro is used to define two tests with the same name // but in different namespaces. -void ReportInvalidTestCaseType(const char* test_case_name, - const char* file, int line); - -// INTERNAL IMPLEMENTATION - DO NOT USE IN USER CODE. -// -// Downcasts the pointer of type Base to Derived. -// Derived must be a subclass of Base. The parameter MUST -// point to a class of type Derived, not any subclass of it. -// When RTTI is available, the function performs a runtime -// check to enforce this. -template -Derived* CheckedDowncastToActualType(Base* base) { -#if GTEST_HAS_RTTI - GTEST_CHECK_(typeid(*base) == typeid(Derived)); - Derived* derived = dynamic_cast(base); // NOLINT -#else - Derived* derived = static_cast(base); // Poor man's downcast. -#endif // GTEST_HAS_RTTI - return derived; -} +GTEST_API_ void ReportInvalidTestCaseType(const char* test_case_name, + const char* file, int line); template class ParamGeneratorInterface; template class ParamGenerator; @@ -169,7 +150,7 @@ class ParamGeneratorInterface { virtual ParamIteratorInterface* End() const = 0; }; -// Wraps ParamGeneratorInetrface and provides general generator syntax +// Wraps ParamGeneratorInterface and provides general generator syntax // compatible with the STL Container concept. // This class implements copy initialization semantics and the contained // ParamGeneratorInterface instance is shared among all copies @@ -191,7 +172,7 @@ class ParamGenerator { iterator end() const { return iterator(impl_->End()); } private: - ::testing::internal::linked_ptr > impl_; + linked_ptr > impl_; }; // Generates values from a range of two comparable values. Can be used to @@ -245,7 +226,8 @@ class RangeGenerator : public ParamGeneratorInterface { private: Iterator(const Iterator& other) - : base_(other.base_), value_(other.value_), index_(other.index_), + : ParamIteratorInterface(), + base_(other.base_), value_(other.value_), index_(other.index_), step_(other.step_) {} // No implementation - assignment is unsupported. @@ -304,7 +286,7 @@ class ValuesInIteratorRangeGenerator : public ParamGeneratorInterface { public: Iterator(const ParamGeneratorInterface* base, typename ContainerType::const_iterator iterator) - : base_(base), iterator_(iterator) {} + : base_(base), iterator_(iterator) {} virtual ~Iterator() {} virtual const ParamGeneratorInterface* BaseGenerator() const { @@ -435,7 +417,7 @@ class ParameterizedTestCaseInfoBase { virtual ~ParameterizedTestCaseInfoBase() {} // Base part of test case name for display purposes. - virtual const String& GetTestCaseName() const = 0; + virtual const string& GetTestCaseName() const = 0; // Test case id to verify identity. virtual TypeId GetTestCaseTypeId() const = 0; // UnitTest class invokes this method to register tests in this @@ -472,7 +454,7 @@ class ParameterizedTestCaseInfo : public ParameterizedTestCaseInfoBase { : test_case_name_(name) {} // Test case base name for display purposes. - virtual const String& GetTestCaseName() const { return test_case_name_; } + virtual const string& GetTestCaseName() const { return test_case_name_; } // Test case id to verify identity. virtual TypeId GetTestCaseTypeId() const { return GetTypeId(); } // TEST_P macro uses AddTestPattern() to record information @@ -490,7 +472,7 @@ class ParameterizedTestCaseInfo : public ParameterizedTestCaseInfoBase { } // INSTANTIATE_TEST_CASE_P macro uses AddGenerator() to record information // about a generator. - int AddTestCaseInstantiation(const char* instantiation_name, + int AddTestCaseInstantiation(const string& instantiation_name, GeneratorCreationFunc* func, const char* /* file */, int /* line */) { @@ -509,26 +491,25 @@ class ParameterizedTestCaseInfo : public ParameterizedTestCaseInfoBase { for (typename InstantiationContainer::iterator gen_it = instantiations_.begin(); gen_it != instantiations_.end(); ++gen_it) { - const String& instantiation_name = gen_it->first; + const string& instantiation_name = gen_it->first; ParamGenerator generator((*gen_it->second)()); Message test_case_name_stream; if ( !instantiation_name.empty() ) - test_case_name_stream << instantiation_name.c_str() << "/"; - test_case_name_stream << test_info->test_case_base_name.c_str(); + test_case_name_stream << instantiation_name << "/"; + test_case_name_stream << test_info->test_case_base_name; int i = 0; for (typename ParamGenerator::iterator param_it = generator.begin(); param_it != generator.end(); ++param_it, ++i) { Message test_name_stream; - test_name_stream << test_info->test_base_name.c_str() << "/" << i; - ::testing::internal::MakeAndRegisterTestInfo( + test_name_stream << test_info->test_base_name << "/" << i; + MakeAndRegisterTestInfo( test_case_name_stream.GetString().c_str(), test_name_stream.GetString().c_str(), - "", // test_case_comment - "", // comment; TODO(vladl@google.com): provide parameter value - // representation. + NULL, // No type parameter. + PrintToString(*param_it).c_str(), GetTestCaseTypeId(), TestCase::SetUpTestCase, TestCase::TearDownTestCase, @@ -542,24 +523,24 @@ class ParameterizedTestCaseInfo : public ParameterizedTestCaseInfoBase { // LocalTestInfo structure keeps information about a single test registered // with TEST_P macro. struct TestInfo { - TestInfo(const char* test_case_base_name, - const char* test_base_name, - TestMetaFactoryBase* test_meta_factory) : - test_case_base_name(test_case_base_name), - test_base_name(test_base_name), - test_meta_factory(test_meta_factory) {} - - const String test_case_base_name; - const String test_base_name; + TestInfo(const char* a_test_case_base_name, + const char* a_test_base_name, + TestMetaFactoryBase* a_test_meta_factory) : + test_case_base_name(a_test_case_base_name), + test_base_name(a_test_base_name), + test_meta_factory(a_test_meta_factory) {} + + const string test_case_base_name; + const string test_base_name; const scoped_ptr > test_meta_factory; }; typedef ::std::vector > TestInfoContainer; // Keeps pairs of // received from INSTANTIATE_TEST_CASE_P macros. - typedef ::std::vector > + typedef ::std::vector > InstantiationContainer; - const String test_case_name_; + const string test_case_name_; TestInfoContainer tests_; InstantiationContainer instantiations_; @@ -598,7 +579,7 @@ class ParameterizedTestCaseRegistry { // and terminate the program since we cannot guaranty correct // test case setup and tear-down in this case. ReportInvalidTestCaseType(test_case_name, file, line); - abort(); + posix::Abort(); } else { // At this point we are sure that the object we found is of the same // type we are looking for, so we downcast it to that type diff --git a/cpp/thirdparty/protobuf-2.5.0/gtest/include/gtest/internal/gtest-port.h b/cpp/thirdparty/protobuf-2.5.0/gtest/include/gtest/internal/gtest-port.h new file mode 100644 index 000000000..e9050ce5d --- /dev/null +++ b/cpp/thirdparty/protobuf-2.5.0/gtest/include/gtest/internal/gtest-port.h @@ -0,0 +1,1947 @@ +// Copyright 2005, Google Inc. +// All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Authors: wan@google.com (Zhanyong Wan) +// +// Low-level types and utilities for porting Google Test to various +// platforms. They are subject to change without notice. DO NOT USE +// THEM IN USER CODE. + +#ifndef GTEST_INCLUDE_GTEST_INTERNAL_GTEST_PORT_H_ +#define GTEST_INCLUDE_GTEST_INTERNAL_GTEST_PORT_H_ + +// The user can define the following macros in the build script to +// control Google Test's behavior. If the user doesn't define a macro +// in this list, Google Test will define it. +// +// GTEST_HAS_CLONE - Define it to 1/0 to indicate that clone(2) +// is/isn't available. +// GTEST_HAS_EXCEPTIONS - Define it to 1/0 to indicate that exceptions +// are enabled. +// GTEST_HAS_GLOBAL_STRING - Define it to 1/0 to indicate that ::string +// is/isn't available (some systems define +// ::string, which is different to std::string). +// GTEST_HAS_GLOBAL_WSTRING - Define it to 1/0 to indicate that ::string +// is/isn't available (some systems define +// ::wstring, which is different to std::wstring). +// GTEST_HAS_POSIX_RE - Define it to 1/0 to indicate that POSIX regular +// expressions are/aren't available. +// GTEST_HAS_PTHREAD - Define it to 1/0 to indicate that +// is/isn't available. +// GTEST_HAS_RTTI - Define it to 1/0 to indicate that RTTI is/isn't +// enabled. +// GTEST_HAS_STD_WSTRING - Define it to 1/0 to indicate that +// std::wstring does/doesn't work (Google Test can +// be used where std::wstring is unavailable). +// GTEST_HAS_TR1_TUPLE - Define it to 1/0 to indicate tr1::tuple +// is/isn't available. +// GTEST_HAS_SEH - Define it to 1/0 to indicate whether the +// compiler supports Microsoft's "Structured +// Exception Handling". +// GTEST_HAS_STREAM_REDIRECTION +// - Define it to 1/0 to indicate whether the +// platform supports I/O stream redirection using +// dup() and dup2(). +// GTEST_USE_OWN_TR1_TUPLE - Define it to 1/0 to indicate whether Google +// Test's own tr1 tuple implementation should be +// used. Unused when the user sets +// GTEST_HAS_TR1_TUPLE to 0. +// GTEST_LANG_CXX11 - Define it to 1/0 to indicate that Google Test +// is building in C++11/C++98 mode. +// GTEST_LINKED_AS_SHARED_LIBRARY +// - Define to 1 when compiling tests that use +// Google Test as a shared library (known as +// DLL on Windows). +// GTEST_CREATE_SHARED_LIBRARY +// - Define to 1 when compiling Google Test itself +// as a shared library. + +// This header defines the following utilities: +// +// Macros indicating the current platform (defined to 1 if compiled on +// the given platform; otherwise undefined): +// GTEST_OS_AIX - IBM AIX +// GTEST_OS_CYGWIN - Cygwin +// GTEST_OS_HPUX - HP-UX +// GTEST_OS_LINUX - Linux +// GTEST_OS_LINUX_ANDROID - Google Android +// GTEST_OS_MAC - Mac OS X +// GTEST_OS_IOS - iOS +// GTEST_OS_IOS_SIMULATOR - iOS simulator +// GTEST_OS_NACL - Google Native Client (NaCl) +// GTEST_OS_OPENBSD - OpenBSD +// GTEST_OS_QNX - QNX +// GTEST_OS_SOLARIS - Sun Solaris +// GTEST_OS_SYMBIAN - Symbian +// GTEST_OS_WINDOWS - Windows (Desktop, MinGW, or Mobile) +// GTEST_OS_WINDOWS_DESKTOP - Windows Desktop +// GTEST_OS_WINDOWS_MINGW - MinGW +// GTEST_OS_WINDOWS_MOBILE - Windows Mobile +// GTEST_OS_ZOS - z/OS +// +// Among the platforms, Cygwin, Linux, Max OS X, and Windows have the +// most stable support. Since core members of the Google Test project +// don't have access to other platforms, support for them may be less +// stable. If you notice any problems on your platform, please notify +// googletestframework@googlegroups.com (patches for fixing them are +// even more welcome!). +// +// Note that it is possible that none of the GTEST_OS_* macros are defined. +// +// Macros indicating available Google Test features (defined to 1 if +// the corresponding feature is supported; otherwise undefined): +// GTEST_HAS_COMBINE - the Combine() function (for value-parameterized +// tests) +// GTEST_HAS_DEATH_TEST - death tests +// GTEST_HAS_PARAM_TEST - value-parameterized tests +// GTEST_HAS_TYPED_TEST - typed tests +// GTEST_HAS_TYPED_TEST_P - type-parameterized tests +// GTEST_USES_POSIX_RE - enhanced POSIX regex is used. Do not confuse with +// GTEST_HAS_POSIX_RE (see above) which users can +// define themselves. +// GTEST_USES_SIMPLE_RE - our own simple regex is used; +// the above two are mutually exclusive. +// GTEST_CAN_COMPARE_NULL - accepts untyped NULL in EXPECT_EQ(). +// +// Macros for basic C++ coding: +// GTEST_AMBIGUOUS_ELSE_BLOCKER_ - for disabling a gcc warning. +// GTEST_ATTRIBUTE_UNUSED_ - declares that a class' instances or a +// variable don't have to be used. +// GTEST_DISALLOW_ASSIGN_ - disables operator=. +// GTEST_DISALLOW_COPY_AND_ASSIGN_ - disables copy ctor and operator=. +// GTEST_MUST_USE_RESULT_ - declares that a function's result must be used. +// +// Synchronization: +// Mutex, MutexLock, ThreadLocal, GetThreadCount() +// - synchronization primitives. +// GTEST_IS_THREADSAFE - defined to 1 to indicate that the above +// synchronization primitives have real implementations +// and Google Test is thread-safe; or 0 otherwise. +// +// Template meta programming: +// is_pointer - as in TR1; needed on Symbian and IBM XL C/C++ only. +// IteratorTraits - partial implementation of std::iterator_traits, which +// is not available in libCstd when compiled with Sun C++. +// +// Smart pointers: +// scoped_ptr - as in TR2. +// +// Regular expressions: +// RE - a simple regular expression class using the POSIX +// Extended Regular Expression syntax on UNIX-like +// platforms, or a reduced regular exception syntax on +// other platforms, including Windows. +// +// Logging: +// GTEST_LOG_() - logs messages at the specified severity level. +// LogToStderr() - directs all log messages to stderr. +// FlushInfoLog() - flushes informational log messages. +// +// Stdout and stderr capturing: +// CaptureStdout() - starts capturing stdout. +// GetCapturedStdout() - stops capturing stdout and returns the captured +// string. +// CaptureStderr() - starts capturing stderr. +// GetCapturedStderr() - stops capturing stderr and returns the captured +// string. +// +// Integer types: +// TypeWithSize - maps an integer to a int type. +// Int32, UInt32, Int64, UInt64, TimeInMillis +// - integers of known sizes. +// BiggestInt - the biggest signed integer type. +// +// Command-line utilities: +// GTEST_FLAG() - references a flag. +// GTEST_DECLARE_*() - declares a flag. +// GTEST_DEFINE_*() - defines a flag. +// GetInjectableArgvs() - returns the command line as a vector of strings. +// +// Environment variable utilities: +// GetEnv() - gets the value of an environment variable. +// BoolFromGTestEnv() - parses a bool environment variable. +// Int32FromGTestEnv() - parses an Int32 environment variable. +// StringFromGTestEnv() - parses a string environment variable. + +#include // for isspace, etc +#include // for ptrdiff_t +#include +#include +#include +#ifndef _WIN32_WCE +# include +# include +#endif // !_WIN32_WCE + +#if defined __APPLE__ +# include +# include +#endif + +#include // NOLINT +#include // NOLINT +#include // NOLINT + +#define GTEST_DEV_EMAIL_ "googletestframework@@googlegroups.com" +#define GTEST_FLAG_PREFIX_ "gtest_" +#define GTEST_FLAG_PREFIX_DASH_ "gtest-" +#define GTEST_FLAG_PREFIX_UPPER_ "GTEST_" +#define GTEST_NAME_ "Google Test" +#define GTEST_PROJECT_URL_ "http://code.google.com/p/googletest/" + +// Determines the version of gcc that is used to compile this. +#ifdef __GNUC__ +// 40302 means version 4.3.2. +# define GTEST_GCC_VER_ \ + (__GNUC__*10000 + __GNUC_MINOR__*100 + __GNUC_PATCHLEVEL__) +#endif // __GNUC__ + +// Determines the platform on which Google Test is compiled. +#ifdef __CYGWIN__ +# define GTEST_OS_CYGWIN 1 +#elif defined __SYMBIAN32__ +# define GTEST_OS_SYMBIAN 1 +#elif defined _WIN32 +# define GTEST_OS_WINDOWS 1 +# ifdef _WIN32_WCE +# define GTEST_OS_WINDOWS_MOBILE 1 +# elif defined(__MINGW__) || defined(__MINGW32__) +# define GTEST_OS_WINDOWS_MINGW 1 +# else +# define GTEST_OS_WINDOWS_DESKTOP 1 +# endif // _WIN32_WCE +#elif defined __APPLE__ +# define GTEST_OS_MAC 1 +# if TARGET_OS_IPHONE +# define GTEST_OS_IOS 1 +# if TARGET_IPHONE_SIMULATOR +# define GTEST_OS_IOS_SIMULATOR 1 +# endif +# endif +#elif defined __linux__ +# define GTEST_OS_LINUX 1 +# if defined __ANDROID__ +# define GTEST_OS_LINUX_ANDROID 1 +# endif +#elif defined __MVS__ +# define GTEST_OS_ZOS 1 +#elif defined(__sun) && defined(__SVR4) +# define GTEST_OS_SOLARIS 1 +#elif defined(_AIX) +# define GTEST_OS_AIX 1 +#elif defined(__hpux) +# define GTEST_OS_HPUX 1 +#elif defined __native_client__ +# define GTEST_OS_NACL 1 +#elif defined __OpenBSD__ +# define GTEST_OS_OPENBSD 1 +#elif defined __QNX__ +# define GTEST_OS_QNX 1 +#endif // __CYGWIN__ + +#ifndef GTEST_LANG_CXX11 +// gcc and clang define __GXX_EXPERIMENTAL_CXX0X__ when +// -std={c,gnu}++{0x,11} is passed. The C++11 standard specifies a +// value for __cplusplus, and recent versions of clang, gcc, and +// probably other compilers set that too in C++11 mode. +# if __GXX_EXPERIMENTAL_CXX0X__ || __cplusplus >= 201103L +// Compiling in at least C++11 mode. +# define GTEST_LANG_CXX11 1 +# else +# define GTEST_LANG_CXX11 0 +# endif +#endif + +// Brings in definitions for functions used in the testing::internal::posix +// namespace (read, write, close, chdir, isatty, stat). We do not currently +// use them on Windows Mobile. +#if !GTEST_OS_WINDOWS +// This assumes that non-Windows OSes provide unistd.h. For OSes where this +// is not the case, we need to include headers that provide the functions +// mentioned above. +# include +# include +#elif !GTEST_OS_WINDOWS_MOBILE +# include +# include +#endif + +#if GTEST_OS_LINUX_ANDROID +// Used to define __ANDROID_API__ matching the target NDK API level. +# include // NOLINT +#endif + +// Defines this to true iff Google Test can use POSIX regular expressions. +#ifndef GTEST_HAS_POSIX_RE +# if GTEST_OS_LINUX_ANDROID +// On Android, is only available starting with Gingerbread. +# define GTEST_HAS_POSIX_RE (__ANDROID_API__ >= 9) +# else +# define GTEST_HAS_POSIX_RE (!GTEST_OS_WINDOWS) +# endif +#endif + +#if GTEST_HAS_POSIX_RE + +// On some platforms, needs someone to define size_t, and +// won't compile otherwise. We can #include it here as we already +// included , which is guaranteed to define size_t through +// . +# include // NOLINT + +# define GTEST_USES_POSIX_RE 1 + +#elif GTEST_OS_WINDOWS + +// is not available on Windows. Use our own simple regex +// implementation instead. +# define GTEST_USES_SIMPLE_RE 1 + +#else + +// may not be available on this platform. Use our own +// simple regex implementation instead. +# define GTEST_USES_SIMPLE_RE 1 + +#endif // GTEST_HAS_POSIX_RE + +#ifndef GTEST_HAS_EXCEPTIONS +// The user didn't tell us whether exceptions are enabled, so we need +// to figure it out. +# if defined(_MSC_VER) || defined(__BORLANDC__) +// MSVC's and C++Builder's implementations of the STL use the _HAS_EXCEPTIONS +// macro to enable exceptions, so we'll do the same. +// Assumes that exceptions are enabled by default. +# ifndef _HAS_EXCEPTIONS +# define _HAS_EXCEPTIONS 1 +# endif // _HAS_EXCEPTIONS +# define GTEST_HAS_EXCEPTIONS _HAS_EXCEPTIONS +# elif defined(__GNUC__) && __EXCEPTIONS +// gcc defines __EXCEPTIONS to 1 iff exceptions are enabled. +# define GTEST_HAS_EXCEPTIONS 1 +# elif defined(__SUNPRO_CC) +// Sun Pro CC supports exceptions. However, there is no compile-time way of +// detecting whether they are enabled or not. Therefore, we assume that +// they are enabled unless the user tells us otherwise. +# define GTEST_HAS_EXCEPTIONS 1 +# elif defined(__IBMCPP__) && __EXCEPTIONS +// xlC defines __EXCEPTIONS to 1 iff exceptions are enabled. +# define GTEST_HAS_EXCEPTIONS 1 +# elif defined(__HP_aCC) +// Exception handling is in effect by default in HP aCC compiler. It has to +// be turned of by +noeh compiler option if desired. +# define GTEST_HAS_EXCEPTIONS 1 +# else +// For other compilers, we assume exceptions are disabled to be +// conservative. +# define GTEST_HAS_EXCEPTIONS 0 +# endif // defined(_MSC_VER) || defined(__BORLANDC__) +#endif // GTEST_HAS_EXCEPTIONS + +#if !defined(GTEST_HAS_STD_STRING) +// Even though we don't use this macro any longer, we keep it in case +// some clients still depend on it. +# define GTEST_HAS_STD_STRING 1 +#elif !GTEST_HAS_STD_STRING +// The user told us that ::std::string isn't available. +# error "Google Test cannot be used where ::std::string isn't available." +#endif // !defined(GTEST_HAS_STD_STRING) + +#ifndef GTEST_HAS_GLOBAL_STRING +// The user didn't tell us whether ::string is available, so we need +// to figure it out. + +# define GTEST_HAS_GLOBAL_STRING 0 + +#endif // GTEST_HAS_GLOBAL_STRING + +#ifndef GTEST_HAS_STD_WSTRING +// The user didn't tell us whether ::std::wstring is available, so we need +// to figure it out. +// TODO(wan@google.com): uses autoconf to detect whether ::std::wstring +// is available. + +// Cygwin 1.7 and below doesn't support ::std::wstring. +// Solaris' libc++ doesn't support it either. Android has +// no support for it at least as recent as Froyo (2.2). +# define GTEST_HAS_STD_WSTRING \ + (!(GTEST_OS_LINUX_ANDROID || GTEST_OS_CYGWIN || GTEST_OS_SOLARIS)) + +#endif // GTEST_HAS_STD_WSTRING + +#ifndef GTEST_HAS_GLOBAL_WSTRING +// The user didn't tell us whether ::wstring is available, so we need +// to figure it out. +# define GTEST_HAS_GLOBAL_WSTRING \ + (GTEST_HAS_STD_WSTRING && GTEST_HAS_GLOBAL_STRING) +#endif // GTEST_HAS_GLOBAL_WSTRING + +// Determines whether RTTI is available. +#ifndef GTEST_HAS_RTTI +// The user didn't tell us whether RTTI is enabled, so we need to +// figure it out. + +# ifdef _MSC_VER + +# ifdef _CPPRTTI // MSVC defines this macro iff RTTI is enabled. +# define GTEST_HAS_RTTI 1 +# else +# define GTEST_HAS_RTTI 0 +# endif + +// Starting with version 4.3.2, gcc defines __GXX_RTTI iff RTTI is enabled. +# elif defined(__GNUC__) && (GTEST_GCC_VER_ >= 40302) + +# ifdef __GXX_RTTI +// When building against STLport with the Android NDK and with +// -frtti -fno-exceptions, the build fails at link time with undefined +// references to __cxa_bad_typeid. Note sure if STL or toolchain bug, +// so disable RTTI when detected. +# if GTEST_OS_LINUX_ANDROID && defined(_STLPORT_MAJOR) && \ + !defined(__EXCEPTIONS) +# define GTEST_HAS_RTTI 0 +# else +# define GTEST_HAS_RTTI 1 +# endif // GTEST_OS_LINUX_ANDROID && __STLPORT_MAJOR && !__EXCEPTIONS +# else +# define GTEST_HAS_RTTI 0 +# endif // __GXX_RTTI + +// Clang defines __GXX_RTTI starting with version 3.0, but its manual recommends +// using has_feature instead. has_feature(cxx_rtti) is supported since 2.7, the +// first version with C++ support. +# elif defined(__clang__) + +# define GTEST_HAS_RTTI __has_feature(cxx_rtti) + +// Starting with version 9.0 IBM Visual Age defines __RTTI_ALL__ to 1 if +// both the typeid and dynamic_cast features are present. +# elif defined(__IBMCPP__) && (__IBMCPP__ >= 900) + +# ifdef __RTTI_ALL__ +# define GTEST_HAS_RTTI 1 +# else +# define GTEST_HAS_RTTI 0 +# endif + +# else + +// For all other compilers, we assume RTTI is enabled. +# define GTEST_HAS_RTTI 1 + +# endif // _MSC_VER + +#endif // GTEST_HAS_RTTI + +// It's this header's responsibility to #include when RTTI +// is enabled. +#if GTEST_HAS_RTTI +# include +#endif + +// Determines whether Google Test can use the pthreads library. +#ifndef GTEST_HAS_PTHREAD +// The user didn't tell us explicitly, so we assume pthreads support is +// available on Linux and Mac. +// +// To disable threading support in Google Test, add -DGTEST_HAS_PTHREAD=0 +// to your compiler flags. +# define GTEST_HAS_PTHREAD (GTEST_OS_LINUX || GTEST_OS_MAC || GTEST_OS_HPUX \ + || GTEST_OS_QNX) +#endif // GTEST_HAS_PTHREAD + +#ifdef GTEST_OS_WINDOWS_MINGW +// Disable pthread support for MinGW for now. To enable it, we need to: +// 1) Implement ThreadLocal object under MinGW. The internal pthread calls are +// not available on MinGW. +// 2) Replace the nanosleep() with usleep() for MinGW. +#undef GTEST_HAS_PTHREAD +#define GTEST_HAS_PTHREAD 0 +#endif + +#if GTEST_HAS_PTHREAD +// gtest-port.h guarantees to #include when GTEST_HAS_PTHREAD is +// true. +# include // NOLINT + +// For timespec and nanosleep, used below. +# include // NOLINT +#endif + +// Determines whether Google Test can use tr1/tuple. You can define +// this macro to 0 to prevent Google Test from using tuple (any +// feature depending on tuple with be disabled in this mode). +#ifndef GTEST_HAS_TR1_TUPLE +# if GTEST_OS_LINUX_ANDROID && defined(_STLPORT_MAJOR) +// STLport, provided with the Android NDK, has neither or . +# define GTEST_HAS_TR1_TUPLE 0 +# else +// The user didn't tell us not to do it, so we assume it's OK. +# define GTEST_HAS_TR1_TUPLE 1 +# endif +#endif // GTEST_HAS_TR1_TUPLE + +// Determines whether Google Test's own tr1 tuple implementation +// should be used. +#ifndef GTEST_USE_OWN_TR1_TUPLE +// The user didn't tell us, so we need to figure it out. + +// We use our own TR1 tuple if we aren't sure the user has an +// implementation of it already. At this time, libstdc++ 4.0.0+ and +// MSVC 2010 are the only mainstream standard libraries that come +// with a TR1 tuple implementation. NVIDIA's CUDA NVCC compiler +// pretends to be GCC by defining __GNUC__ and friends, but cannot +// compile GCC's tuple implementation. MSVC 2008 (9.0) provides TR1 +// tuple in a 323 MB Feature Pack download, which we cannot assume the +// user has. QNX's QCC compiler is a modified GCC but it doesn't +// support TR1 tuple. libc++ only provides std::tuple, in C++11 mode, +// and it can be used with some compilers that define __GNUC__. +# if (defined(__GNUC__) && !defined(__CUDACC__) && (GTEST_GCC_VER_ >= 40000) \ + && !GTEST_OS_QNX && !defined(_LIBCPP_VERSION)) || _MSC_VER >= 1600 +# define GTEST_ENV_HAS_TR1_TUPLE_ 1 +# endif + +// C++11 specifies that provides std::tuple. Use that if gtest is used +// in C++11 mode and libstdc++ isn't very old (binaries targeting OS X 10.6 +// can build with clang but need to use gcc4.2's libstdc++). +# if GTEST_LANG_CXX11 && (!defined(__GLIBCXX__) || __GLIBCXX__ > 20110325) +# define GTEST_ENV_HAS_STD_TUPLE_ 1 +# endif + +# if GTEST_ENV_HAS_TR1_TUPLE_ || GTEST_ENV_HAS_STD_TUPLE_ +# define GTEST_USE_OWN_TR1_TUPLE 0 +# else +# define GTEST_USE_OWN_TR1_TUPLE 1 +# endif + +#endif // GTEST_USE_OWN_TR1_TUPLE + +// To avoid conditional compilation everywhere, we make it +// gtest-port.h's responsibility to #include the header implementing +// tr1/tuple. +#if GTEST_HAS_TR1_TUPLE + +# if GTEST_USE_OWN_TR1_TUPLE +# include "gtest/internal/gtest-tuple.h" +# elif GTEST_ENV_HAS_STD_TUPLE_ +# include +// C++11 puts its tuple into the ::std namespace rather than +// ::std::tr1. gtest expects tuple to live in ::std::tr1, so put it there. +// This causes undefined behavior, but supported compilers react in +// the way we intend. +namespace std { +namespace tr1 { +using ::std::get; +using ::std::make_tuple; +using ::std::tuple; +using ::std::tuple_element; +using ::std::tuple_size; +} +} + +# elif GTEST_OS_SYMBIAN + +// On Symbian, BOOST_HAS_TR1_TUPLE causes Boost's TR1 tuple library to +// use STLport's tuple implementation, which unfortunately doesn't +// work as the copy of STLport distributed with Symbian is incomplete. +// By making sure BOOST_HAS_TR1_TUPLE is undefined, we force Boost to +// use its own tuple implementation. +# ifdef BOOST_HAS_TR1_TUPLE +# undef BOOST_HAS_TR1_TUPLE +# endif // BOOST_HAS_TR1_TUPLE + +// This prevents , which defines +// BOOST_HAS_TR1_TUPLE, from being #included by Boost's . +# define BOOST_TR1_DETAIL_CONFIG_HPP_INCLUDED +# include + +# elif defined(__GNUC__) && (GTEST_GCC_VER_ >= 40000) +// GCC 4.0+ implements tr1/tuple in the header. This does +// not conform to the TR1 spec, which requires the header to be . + +# if !GTEST_HAS_RTTI && GTEST_GCC_VER_ < 40302 +// Until version 4.3.2, gcc has a bug that causes , +// which is #included by , to not compile when RTTI is +// disabled. _TR1_FUNCTIONAL is the header guard for +// . Hence the following #define is a hack to prevent +// from being included. +# define _TR1_FUNCTIONAL 1 +# include +# undef _TR1_FUNCTIONAL // Allows the user to #include + // if he chooses to. +# else +# include // NOLINT +# endif // !GTEST_HAS_RTTI && GTEST_GCC_VER_ < 40302 + +# else +// If the compiler is not GCC 4.0+, we assume the user is using a +// spec-conforming TR1 implementation. +# include // NOLINT +# endif // GTEST_USE_OWN_TR1_TUPLE + +#endif // GTEST_HAS_TR1_TUPLE + +// Determines whether clone(2) is supported. +// Usually it will only be available on Linux, excluding +// Linux on the Itanium architecture. +// Also see http://linux.die.net/man/2/clone. +#ifndef GTEST_HAS_CLONE +// The user didn't tell us, so we need to figure it out. + +# if GTEST_OS_LINUX && !defined(__ia64__) +# if GTEST_OS_LINUX_ANDROID +// On Android, clone() is only available on ARM starting with Gingerbread. +# if defined(__arm__) && __ANDROID_API__ >= 9 +# define GTEST_HAS_CLONE 1 +# else +# define GTEST_HAS_CLONE 0 +# endif +# else +# define GTEST_HAS_CLONE 1 +# endif +# else +# define GTEST_HAS_CLONE 0 +# endif // GTEST_OS_LINUX && !defined(__ia64__) + +#endif // GTEST_HAS_CLONE + +// Determines whether to support stream redirection. This is used to test +// output correctness and to implement death tests. +#ifndef GTEST_HAS_STREAM_REDIRECTION +// By default, we assume that stream redirection is supported on all +// platforms except known mobile ones. +# if GTEST_OS_WINDOWS_MOBILE || GTEST_OS_SYMBIAN +# define GTEST_HAS_STREAM_REDIRECTION 0 +# else +# define GTEST_HAS_STREAM_REDIRECTION 1 +# endif // !GTEST_OS_WINDOWS_MOBILE && !GTEST_OS_SYMBIAN +#endif // GTEST_HAS_STREAM_REDIRECTION + +// Determines whether to support death tests. +// Google Test does not support death tests for VC 7.1 and earlier as +// abort() in a VC 7.1 application compiled as GUI in debug config +// pops up a dialog window that cannot be suppressed programmatically. +#if (GTEST_OS_LINUX || GTEST_OS_CYGWIN || GTEST_OS_SOLARIS || \ + (GTEST_OS_MAC && !GTEST_OS_IOS) || GTEST_OS_IOS_SIMULATOR || \ + (GTEST_OS_WINDOWS_DESKTOP && _MSC_VER >= 1400) || \ + GTEST_OS_WINDOWS_MINGW || GTEST_OS_AIX || GTEST_OS_HPUX || \ + GTEST_OS_OPENBSD || GTEST_OS_QNX) +# define GTEST_HAS_DEATH_TEST 1 +# include // NOLINT +#endif + +// We don't support MSVC 7.1 with exceptions disabled now. Therefore +// all the compilers we care about are adequate for supporting +// value-parameterized tests. +#define GTEST_HAS_PARAM_TEST 1 + +// Determines whether to support type-driven tests. + +// Typed tests need and variadic macros, which GCC, VC++ 8.0, +// Sun Pro CC, IBM Visual Age, and HP aCC support. +#if defined(__GNUC__) || (_MSC_VER >= 1400) || defined(__SUNPRO_CC) || \ + defined(__IBMCPP__) || defined(__HP_aCC) +# define GTEST_HAS_TYPED_TEST 1 +# define GTEST_HAS_TYPED_TEST_P 1 +#endif + +// Determines whether to support Combine(). This only makes sense when +// value-parameterized tests are enabled. The implementation doesn't +// work on Sun Studio since it doesn't understand templated conversion +// operators. +#if GTEST_HAS_PARAM_TEST && GTEST_HAS_TR1_TUPLE && !defined(__SUNPRO_CC) +# define GTEST_HAS_COMBINE 1 +#endif + +// Determines whether the system compiler uses UTF-16 for encoding wide strings. +#define GTEST_WIDE_STRING_USES_UTF16_ \ + (GTEST_OS_WINDOWS || GTEST_OS_CYGWIN || GTEST_OS_SYMBIAN || GTEST_OS_AIX) + +// Determines whether test results can be streamed to a socket. +#if GTEST_OS_LINUX +# define GTEST_CAN_STREAM_RESULTS_ 1 +#endif + +// Defines some utility macros. + +// The GNU compiler emits a warning if nested "if" statements are followed by +// an "else" statement and braces are not used to explicitly disambiguate the +// "else" binding. This leads to problems with code like: +// +// if (gate) +// ASSERT_*(condition) << "Some message"; +// +// The "switch (0) case 0:" idiom is used to suppress this. +#ifdef __INTEL_COMPILER +# define GTEST_AMBIGUOUS_ELSE_BLOCKER_ +#else +# define GTEST_AMBIGUOUS_ELSE_BLOCKER_ switch (0) case 0: default: // NOLINT +#endif + +// Use this annotation at the end of a struct/class definition to +// prevent the compiler from optimizing away instances that are never +// used. This is useful when all interesting logic happens inside the +// c'tor and / or d'tor. Example: +// +// struct Foo { +// Foo() { ... } +// } GTEST_ATTRIBUTE_UNUSED_; +// +// Also use it after a variable or parameter declaration to tell the +// compiler the variable/parameter does not have to be used. +#if defined(__GNUC__) && !defined(COMPILER_ICC) +# define GTEST_ATTRIBUTE_UNUSED_ __attribute__ ((unused)) +#else +# define GTEST_ATTRIBUTE_UNUSED_ +#endif + +// A macro to disallow operator= +// This should be used in the private: declarations for a class. +#define GTEST_DISALLOW_ASSIGN_(type)\ + void operator=(type const &) + +// A macro to disallow copy constructor and operator= +// This should be used in the private: declarations for a class. +#define GTEST_DISALLOW_COPY_AND_ASSIGN_(type)\ + type(type const &);\ + GTEST_DISALLOW_ASSIGN_(type) + +// Tell the compiler to warn about unused return values for functions declared +// with this macro. The macro should be used on function declarations +// following the argument list: +// +// Sprocket* AllocateSprocket() GTEST_MUST_USE_RESULT_; +#if defined(__GNUC__) && (GTEST_GCC_VER_ >= 30400) && !defined(COMPILER_ICC) +# define GTEST_MUST_USE_RESULT_ __attribute__ ((warn_unused_result)) +#else +# define GTEST_MUST_USE_RESULT_ +#endif // __GNUC__ && (GTEST_GCC_VER_ >= 30400) && !COMPILER_ICC + +// Determine whether the compiler supports Microsoft's Structured Exception +// Handling. This is supported by several Windows compilers but generally +// does not exist on any other system. +#ifndef GTEST_HAS_SEH +// The user didn't tell us, so we need to figure it out. + +# if defined(_MSC_VER) || defined(__BORLANDC__) +// These two compilers are known to support SEH. +# define GTEST_HAS_SEH 1 +# else +// Assume no SEH. +# define GTEST_HAS_SEH 0 +# endif + +#endif // GTEST_HAS_SEH + +#ifdef _MSC_VER + +# if GTEST_LINKED_AS_SHARED_LIBRARY +# define GTEST_API_ __declspec(dllimport) +# elif GTEST_CREATE_SHARED_LIBRARY +# define GTEST_API_ __declspec(dllexport) +# endif + +#endif // _MSC_VER + +#ifndef GTEST_API_ +# define GTEST_API_ +#endif + +#ifdef __GNUC__ +// Ask the compiler to never inline a given function. +# define GTEST_NO_INLINE_ __attribute__((noinline)) +#else +# define GTEST_NO_INLINE_ +#endif + +// _LIBCPP_VERSION is defined by the libc++ library from the LLVM project. +#if defined(__GLIBCXX__) || defined(_LIBCPP_VERSION) +# define GTEST_HAS_CXXABI_H_ 1 +#else +# define GTEST_HAS_CXXABI_H_ 0 +#endif + +namespace testing { + +class Message; + +namespace internal { + +// The GTEST_COMPILE_ASSERT_ macro can be used to verify that a compile time +// expression is true. For example, you could use it to verify the +// size of a static array: +// +// GTEST_COMPILE_ASSERT_(ARRAYSIZE(content_type_names) == CONTENT_NUM_TYPES, +// content_type_names_incorrect_size); +// +// or to make sure a struct is smaller than a certain size: +// +// GTEST_COMPILE_ASSERT_(sizeof(foo) < 128, foo_too_large); +// +// The second argument to the macro is the name of the variable. If +// the expression is false, most compilers will issue a warning/error +// containing the name of the variable. + +template +struct CompileAssert { +}; + +#define GTEST_COMPILE_ASSERT_(expr, msg) \ + typedef ::testing::internal::CompileAssert<(bool(expr))> \ + msg[bool(expr) ? 1 : -1] + +// Implementation details of GTEST_COMPILE_ASSERT_: +// +// - GTEST_COMPILE_ASSERT_ works by defining an array type that has -1 +// elements (and thus is invalid) when the expression is false. +// +// - The simpler definition +// +// #define GTEST_COMPILE_ASSERT_(expr, msg) typedef char msg[(expr) ? 1 : -1] +// +// does not work, as gcc supports variable-length arrays whose sizes +// are determined at run-time (this is gcc's extension and not part +// of the C++ standard). As a result, gcc fails to reject the +// following code with the simple definition: +// +// int foo; +// GTEST_COMPILE_ASSERT_(foo, msg); // not supposed to compile as foo is +// // not a compile-time constant. +// +// - By using the type CompileAssert<(bool(expr))>, we ensures that +// expr is a compile-time constant. (Template arguments must be +// determined at compile-time.) +// +// - The outter parentheses in CompileAssert<(bool(expr))> are necessary +// to work around a bug in gcc 3.4.4 and 4.0.1. If we had written +// +// CompileAssert +// +// instead, these compilers will refuse to compile +// +// GTEST_COMPILE_ASSERT_(5 > 0, some_message); +// +// (They seem to think the ">" in "5 > 0" marks the end of the +// template argument list.) +// +// - The array size is (bool(expr) ? 1 : -1), instead of simply +// +// ((expr) ? 1 : -1). +// +// This is to avoid running into a bug in MS VC 7.1, which +// causes ((0.0) ? 1 : -1) to incorrectly evaluate to 1. + +// StaticAssertTypeEqHelper is used by StaticAssertTypeEq defined in gtest.h. +// +// This template is declared, but intentionally undefined. +template +struct StaticAssertTypeEqHelper; + +template +struct StaticAssertTypeEqHelper {}; + +#if GTEST_HAS_GLOBAL_STRING +typedef ::string string; +#else +typedef ::std::string string; +#endif // GTEST_HAS_GLOBAL_STRING + +#if GTEST_HAS_GLOBAL_WSTRING +typedef ::wstring wstring; +#elif GTEST_HAS_STD_WSTRING +typedef ::std::wstring wstring; +#endif // GTEST_HAS_GLOBAL_WSTRING + +// A helper for suppressing warnings on constant condition. It just +// returns 'condition'. +GTEST_API_ bool IsTrue(bool condition); + +// Defines scoped_ptr. + +// This implementation of scoped_ptr is PARTIAL - it only contains +// enough stuff to satisfy Google Test's need. +template +class scoped_ptr { + public: + typedef T element_type; + + explicit scoped_ptr(T* p = NULL) : ptr_(p) {} + ~scoped_ptr() { reset(); } + + T& operator*() const { return *ptr_; } + T* operator->() const { return ptr_; } + T* get() const { return ptr_; } + + T* release() { + T* const ptr = ptr_; + ptr_ = NULL; + return ptr; + } + + void reset(T* p = NULL) { + if (p != ptr_) { + if (IsTrue(sizeof(T) > 0)) { // Makes sure T is a complete type. + delete ptr_; + } + ptr_ = p; + } + } + + private: + T* ptr_; + + GTEST_DISALLOW_COPY_AND_ASSIGN_(scoped_ptr); +}; + +// Defines RE. + +// A simple C++ wrapper for . It uses the POSIX Extended +// Regular Expression syntax. +class GTEST_API_ RE { + public: + // A copy constructor is required by the Standard to initialize object + // references from r-values. + RE(const RE& other) { Init(other.pattern()); } + + // Constructs an RE from a string. + RE(const ::std::string& regex) { Init(regex.c_str()); } // NOLINT + +#if GTEST_HAS_GLOBAL_STRING + + RE(const ::string& regex) { Init(regex.c_str()); } // NOLINT + +#endif // GTEST_HAS_GLOBAL_STRING + + RE(const char* regex) { Init(regex); } // NOLINT + ~RE(); + + // Returns the string representation of the regex. + const char* pattern() const { return pattern_; } + + // FullMatch(str, re) returns true iff regular expression re matches + // the entire str. + // PartialMatch(str, re) returns true iff regular expression re + // matches a substring of str (including str itself). + // + // TODO(wan@google.com): make FullMatch() and PartialMatch() work + // when str contains NUL characters. + static bool FullMatch(const ::std::string& str, const RE& re) { + return FullMatch(str.c_str(), re); + } + static bool PartialMatch(const ::std::string& str, const RE& re) { + return PartialMatch(str.c_str(), re); + } + +#if GTEST_HAS_GLOBAL_STRING + + static bool FullMatch(const ::string& str, const RE& re) { + return FullMatch(str.c_str(), re); + } + static bool PartialMatch(const ::string& str, const RE& re) { + return PartialMatch(str.c_str(), re); + } + +#endif // GTEST_HAS_GLOBAL_STRING + + static bool FullMatch(const char* str, const RE& re); + static bool PartialMatch(const char* str, const RE& re); + + private: + void Init(const char* regex); + + // We use a const char* instead of an std::string, as Google Test used to be + // used where std::string is not available. TODO(wan@google.com): change to + // std::string. + const char* pattern_; + bool is_valid_; + +#if GTEST_USES_POSIX_RE + + regex_t full_regex_; // For FullMatch(). + regex_t partial_regex_; // For PartialMatch(). + +#else // GTEST_USES_SIMPLE_RE + + const char* full_pattern_; // For FullMatch(); + +#endif + + GTEST_DISALLOW_ASSIGN_(RE); +}; + +// Formats a source file path and a line number as they would appear +// in an error message from the compiler used to compile this code. +GTEST_API_ ::std::string FormatFileLocation(const char* file, int line); + +// Formats a file location for compiler-independent XML output. +// Although this function is not platform dependent, we put it next to +// FormatFileLocation in order to contrast the two functions. +GTEST_API_ ::std::string FormatCompilerIndependentFileLocation(const char* file, + int line); + +// Defines logging utilities: +// GTEST_LOG_(severity) - logs messages at the specified severity level. The +// message itself is streamed into the macro. +// LogToStderr() - directs all log messages to stderr. +// FlushInfoLog() - flushes informational log messages. + +enum GTestLogSeverity { + GTEST_INFO, + GTEST_WARNING, + GTEST_ERROR, + GTEST_FATAL +}; + +// Formats log entry severity, provides a stream object for streaming the +// log message, and terminates the message with a newline when going out of +// scope. +class GTEST_API_ GTestLog { + public: + GTestLog(GTestLogSeverity severity, const char* file, int line); + + // Flushes the buffers and, if severity is GTEST_FATAL, aborts the program. + ~GTestLog(); + + ::std::ostream& GetStream() { return ::std::cerr; } + + private: + const GTestLogSeverity severity_; + + GTEST_DISALLOW_COPY_AND_ASSIGN_(GTestLog); +}; + +#define GTEST_LOG_(severity) \ + ::testing::internal::GTestLog(::testing::internal::GTEST_##severity, \ + __FILE__, __LINE__).GetStream() + +inline void LogToStderr() {} +inline void FlushInfoLog() { fflush(NULL); } + +// INTERNAL IMPLEMENTATION - DO NOT USE. +// +// GTEST_CHECK_ is an all-mode assert. It aborts the program if the condition +// is not satisfied. +// Synopsys: +// GTEST_CHECK_(boolean_condition); +// or +// GTEST_CHECK_(boolean_condition) << "Additional message"; +// +// This checks the condition and if the condition is not satisfied +// it prints message about the condition violation, including the +// condition itself, plus additional message streamed into it, if any, +// and then it aborts the program. It aborts the program irrespective of +// whether it is built in the debug mode or not. +#define GTEST_CHECK_(condition) \ + GTEST_AMBIGUOUS_ELSE_BLOCKER_ \ + if (::testing::internal::IsTrue(condition)) \ + ; \ + else \ + GTEST_LOG_(FATAL) << "Condition " #condition " failed. " + +// An all-mode assert to verify that the given POSIX-style function +// call returns 0 (indicating success). Known limitation: this +// doesn't expand to a balanced 'if' statement, so enclose the macro +// in {} if you need to use it as the only statement in an 'if' +// branch. +#define GTEST_CHECK_POSIX_SUCCESS_(posix_call) \ + if (const int gtest_error = (posix_call)) \ + GTEST_LOG_(FATAL) << #posix_call << "failed with error " \ + << gtest_error + +// INTERNAL IMPLEMENTATION - DO NOT USE IN USER CODE. +// +// Use ImplicitCast_ as a safe version of static_cast for upcasting in +// the type hierarchy (e.g. casting a Foo* to a SuperclassOfFoo* or a +// const Foo*). When you use ImplicitCast_, the compiler checks that +// the cast is safe. Such explicit ImplicitCast_s are necessary in +// surprisingly many situations where C++ demands an exact type match +// instead of an argument type convertable to a target type. +// +// The syntax for using ImplicitCast_ is the same as for static_cast: +// +// ImplicitCast_(expr) +// +// ImplicitCast_ would have been part of the C++ standard library, +// but the proposal was submitted too late. It will probably make +// its way into the language in the future. +// +// This relatively ugly name is intentional. It prevents clashes with +// similar functions users may have (e.g., implicit_cast). The internal +// namespace alone is not enough because the function can be found by ADL. +template +inline To ImplicitCast_(To x) { return x; } + +// When you upcast (that is, cast a pointer from type Foo to type +// SuperclassOfFoo), it's fine to use ImplicitCast_<>, since upcasts +// always succeed. When you downcast (that is, cast a pointer from +// type Foo to type SubclassOfFoo), static_cast<> isn't safe, because +// how do you know the pointer is really of type SubclassOfFoo? It +// could be a bare Foo, or of type DifferentSubclassOfFoo. Thus, +// when you downcast, you should use this macro. In debug mode, we +// use dynamic_cast<> to double-check the downcast is legal (we die +// if it's not). In normal mode, we do the efficient static_cast<> +// instead. Thus, it's important to test in debug mode to make sure +// the cast is legal! +// This is the only place in the code we should use dynamic_cast<>. +// In particular, you SHOULDN'T be using dynamic_cast<> in order to +// do RTTI (eg code like this: +// if (dynamic_cast(foo)) HandleASubclass1Object(foo); +// if (dynamic_cast(foo)) HandleASubclass2Object(foo); +// You should design the code some other way not to need this. +// +// This relatively ugly name is intentional. It prevents clashes with +// similar functions users may have (e.g., down_cast). The internal +// namespace alone is not enough because the function can be found by ADL. +template // use like this: DownCast_(foo); +inline To DownCast_(From* f) { // so we only accept pointers + // Ensures that To is a sub-type of From *. This test is here only + // for compile-time type checking, and has no overhead in an + // optimized build at run-time, as it will be optimized away + // completely. + if (false) { + const To to = NULL; + ::testing::internal::ImplicitCast_(to); + } + +#if GTEST_HAS_RTTI + // RTTI: debug mode only! + GTEST_CHECK_(f == NULL || dynamic_cast(f) != NULL); +#endif + return static_cast(f); +} + +// Downcasts the pointer of type Base to Derived. +// Derived must be a subclass of Base. The parameter MUST +// point to a class of type Derived, not any subclass of it. +// When RTTI is available, the function performs a runtime +// check to enforce this. +template +Derived* CheckedDowncastToActualType(Base* base) { +#if GTEST_HAS_RTTI + GTEST_CHECK_(typeid(*base) == typeid(Derived)); + return dynamic_cast(base); // NOLINT +#else + return static_cast(base); // Poor man's downcast. +#endif +} + +#if GTEST_HAS_STREAM_REDIRECTION + +// Defines the stderr capturer: +// CaptureStdout - starts capturing stdout. +// GetCapturedStdout - stops capturing stdout and returns the captured string. +// CaptureStderr - starts capturing stderr. +// GetCapturedStderr - stops capturing stderr and returns the captured string. +// +GTEST_API_ void CaptureStdout(); +GTEST_API_ std::string GetCapturedStdout(); +GTEST_API_ void CaptureStderr(); +GTEST_API_ std::string GetCapturedStderr(); + +#endif // GTEST_HAS_STREAM_REDIRECTION + + +#if GTEST_HAS_DEATH_TEST + +const ::std::vector& GetInjectableArgvs(); +void SetInjectableArgvs(const ::std::vector* + new_argvs); + +// A copy of all command line arguments. Set by InitGoogleTest(). +extern ::std::vector g_argvs; + +#endif // GTEST_HAS_DEATH_TEST + +// Defines synchronization primitives. + +#if GTEST_HAS_PTHREAD + +// Sleeps for (roughly) n milli-seconds. This function is only for +// testing Google Test's own constructs. Don't use it in user tests, +// either directly or indirectly. +inline void SleepMilliseconds(int n) { + const timespec time = { + 0, // 0 seconds. + n * 1000L * 1000L, // And n ms. + }; + nanosleep(&time, NULL); +} + +// Allows a controller thread to pause execution of newly created +// threads until notified. Instances of this class must be created +// and destroyed in the controller thread. +// +// This class is only for testing Google Test's own constructs. Do not +// use it in user tests, either directly or indirectly. +class Notification { + public: + Notification() : notified_(false) { + GTEST_CHECK_POSIX_SUCCESS_(pthread_mutex_init(&mutex_, NULL)); + } + ~Notification() { + pthread_mutex_destroy(&mutex_); + } + + // Notifies all threads created with this notification to start. Must + // be called from the controller thread. + void Notify() { + pthread_mutex_lock(&mutex_); + notified_ = true; + pthread_mutex_unlock(&mutex_); + } + + // Blocks until the controller thread notifies. Must be called from a test + // thread. + void WaitForNotification() { + for (;;) { + pthread_mutex_lock(&mutex_); + const bool notified = notified_; + pthread_mutex_unlock(&mutex_); + if (notified) + break; + SleepMilliseconds(10); + } + } + + private: + pthread_mutex_t mutex_; + bool notified_; + + GTEST_DISALLOW_COPY_AND_ASSIGN_(Notification); +}; + +// As a C-function, ThreadFuncWithCLinkage cannot be templated itself. +// Consequently, it cannot select a correct instantiation of ThreadWithParam +// in order to call its Run(). Introducing ThreadWithParamBase as a +// non-templated base class for ThreadWithParam allows us to bypass this +// problem. +class ThreadWithParamBase { + public: + virtual ~ThreadWithParamBase() {} + virtual void Run() = 0; +}; + +// pthread_create() accepts a pointer to a function type with the C linkage. +// According to the Standard (7.5/1), function types with different linkages +// are different even if they are otherwise identical. Some compilers (for +// example, SunStudio) treat them as different types. Since class methods +// cannot be defined with C-linkage we need to define a free C-function to +// pass into pthread_create(). +extern "C" inline void* ThreadFuncWithCLinkage(void* thread) { + static_cast(thread)->Run(); + return NULL; +} + +// Helper class for testing Google Test's multi-threading constructs. +// To use it, write: +// +// void ThreadFunc(int param) { /* Do things with param */ } +// Notification thread_can_start; +// ... +// // The thread_can_start parameter is optional; you can supply NULL. +// ThreadWithParam thread(&ThreadFunc, 5, &thread_can_start); +// thread_can_start.Notify(); +// +// These classes are only for testing Google Test's own constructs. Do +// not use them in user tests, either directly or indirectly. +template +class ThreadWithParam : public ThreadWithParamBase { + public: + typedef void (*UserThreadFunc)(T); + + ThreadWithParam( + UserThreadFunc func, T param, Notification* thread_can_start) + : func_(func), + param_(param), + thread_can_start_(thread_can_start), + finished_(false) { + ThreadWithParamBase* const base = this; + // The thread can be created only after all fields except thread_ + // have been initialized. + GTEST_CHECK_POSIX_SUCCESS_( + pthread_create(&thread_, 0, &ThreadFuncWithCLinkage, base)); + } + ~ThreadWithParam() { Join(); } + + void Join() { + if (!finished_) { + GTEST_CHECK_POSIX_SUCCESS_(pthread_join(thread_, 0)); + finished_ = true; + } + } + + virtual void Run() { + if (thread_can_start_ != NULL) + thread_can_start_->WaitForNotification(); + func_(param_); + } + + private: + const UserThreadFunc func_; // User-supplied thread function. + const T param_; // User-supplied parameter to the thread function. + // When non-NULL, used to block execution until the controller thread + // notifies. + Notification* const thread_can_start_; + bool finished_; // true iff we know that the thread function has finished. + pthread_t thread_; // The native thread object. + + GTEST_DISALLOW_COPY_AND_ASSIGN_(ThreadWithParam); +}; + +// MutexBase and Mutex implement mutex on pthreads-based platforms. They +// are used in conjunction with class MutexLock: +// +// Mutex mutex; +// ... +// MutexLock lock(&mutex); // Acquires the mutex and releases it at the end +// // of the current scope. +// +// MutexBase implements behavior for both statically and dynamically +// allocated mutexes. Do not use MutexBase directly. Instead, write +// the following to define a static mutex: +// +// GTEST_DEFINE_STATIC_MUTEX_(g_some_mutex); +// +// You can forward declare a static mutex like this: +// +// GTEST_DECLARE_STATIC_MUTEX_(g_some_mutex); +// +// To create a dynamic mutex, just define an object of type Mutex. +class MutexBase { + public: + // Acquires this mutex. + void Lock() { + GTEST_CHECK_POSIX_SUCCESS_(pthread_mutex_lock(&mutex_)); + owner_ = pthread_self(); + has_owner_ = true; + } + + // Releases this mutex. + void Unlock() { + // Since the lock is being released the owner_ field should no longer be + // considered valid. We don't protect writing to has_owner_ here, as it's + // the caller's responsibility to ensure that the current thread holds the + // mutex when this is called. + has_owner_ = false; + GTEST_CHECK_POSIX_SUCCESS_(pthread_mutex_unlock(&mutex_)); + } + + // Does nothing if the current thread holds the mutex. Otherwise, crashes + // with high probability. + void AssertHeld() const { + GTEST_CHECK_(has_owner_ && pthread_equal(owner_, pthread_self())) + << "The current thread is not holding the mutex @" << this; + } + + // A static mutex may be used before main() is entered. It may even + // be used before the dynamic initialization stage. Therefore we + // must be able to initialize a static mutex object at link time. + // This means MutexBase has to be a POD and its member variables + // have to be public. + public: + pthread_mutex_t mutex_; // The underlying pthread mutex. + // has_owner_ indicates whether the owner_ field below contains a valid thread + // ID and is therefore safe to inspect (e.g., to use in pthread_equal()). All + // accesses to the owner_ field should be protected by a check of this field. + // An alternative might be to memset() owner_ to all zeros, but there's no + // guarantee that a zero'd pthread_t is necessarily invalid or even different + // from pthread_self(). + bool has_owner_; + pthread_t owner_; // The thread holding the mutex. +}; + +// Forward-declares a static mutex. +# define GTEST_DECLARE_STATIC_MUTEX_(mutex) \ + extern ::testing::internal::MutexBase mutex + +// Defines and statically (i.e. at link time) initializes a static mutex. +// The initialization list here does not explicitly initialize each field, +// instead relying on default initialization for the unspecified fields. In +// particular, the owner_ field (a pthread_t) is not explicitly initialized. +// This allows initialization to work whether pthread_t is a scalar or struct. +// The flag -Wmissing-field-initializers must not be specified for this to work. +# define GTEST_DEFINE_STATIC_MUTEX_(mutex) \ + ::testing::internal::MutexBase mutex = { PTHREAD_MUTEX_INITIALIZER, false } + +// The Mutex class can only be used for mutexes created at runtime. It +// shares its API with MutexBase otherwise. +class Mutex : public MutexBase { + public: + Mutex() { + GTEST_CHECK_POSIX_SUCCESS_(pthread_mutex_init(&mutex_, NULL)); + has_owner_ = false; + } + ~Mutex() { + GTEST_CHECK_POSIX_SUCCESS_(pthread_mutex_destroy(&mutex_)); + } + + private: + GTEST_DISALLOW_COPY_AND_ASSIGN_(Mutex); +}; + +// We cannot name this class MutexLock as the ctor declaration would +// conflict with a macro named MutexLock, which is defined on some +// platforms. Hence the typedef trick below. +class GTestMutexLock { + public: + explicit GTestMutexLock(MutexBase* mutex) + : mutex_(mutex) { mutex_->Lock(); } + + ~GTestMutexLock() { mutex_->Unlock(); } + + private: + MutexBase* const mutex_; + + GTEST_DISALLOW_COPY_AND_ASSIGN_(GTestMutexLock); +}; + +typedef GTestMutexLock MutexLock; + +// Helpers for ThreadLocal. + +// pthread_key_create() requires DeleteThreadLocalValue() to have +// C-linkage. Therefore it cannot be templatized to access +// ThreadLocal. Hence the need for class +// ThreadLocalValueHolderBase. +class ThreadLocalValueHolderBase { + public: + virtual ~ThreadLocalValueHolderBase() {} +}; + +// Called by pthread to delete thread-local data stored by +// pthread_setspecific(). +extern "C" inline void DeleteThreadLocalValue(void* value_holder) { + delete static_cast(value_holder); +} + +// Implements thread-local storage on pthreads-based systems. +// +// // Thread 1 +// ThreadLocal tl(100); // 100 is the default value for each thread. +// +// // Thread 2 +// tl.set(150); // Changes the value for thread 2 only. +// EXPECT_EQ(150, tl.get()); +// +// // Thread 1 +// EXPECT_EQ(100, tl.get()); // In thread 1, tl has the original value. +// tl.set(200); +// EXPECT_EQ(200, tl.get()); +// +// The template type argument T must have a public copy constructor. +// In addition, the default ThreadLocal constructor requires T to have +// a public default constructor. +// +// An object managed for a thread by a ThreadLocal instance is deleted +// when the thread exits. Or, if the ThreadLocal instance dies in +// that thread, when the ThreadLocal dies. It's the user's +// responsibility to ensure that all other threads using a ThreadLocal +// have exited when it dies, or the per-thread objects for those +// threads will not be deleted. +// +// Google Test only uses global ThreadLocal objects. That means they +// will die after main() has returned. Therefore, no per-thread +// object managed by Google Test will be leaked as long as all threads +// using Google Test have exited when main() returns. +template +class ThreadLocal { + public: + ThreadLocal() : key_(CreateKey()), + default_() {} + explicit ThreadLocal(const T& value) : key_(CreateKey()), + default_(value) {} + + ~ThreadLocal() { + // Destroys the managed object for the current thread, if any. + DeleteThreadLocalValue(pthread_getspecific(key_)); + + // Releases resources associated with the key. This will *not* + // delete managed objects for other threads. + GTEST_CHECK_POSIX_SUCCESS_(pthread_key_delete(key_)); + } + + T* pointer() { return GetOrCreateValue(); } + const T* pointer() const { return GetOrCreateValue(); } + const T& get() const { return *pointer(); } + void set(const T& value) { *pointer() = value; } + + private: + // Holds a value of type T. + class ValueHolder : public ThreadLocalValueHolderBase { + public: + explicit ValueHolder(const T& value) : value_(value) {} + + T* pointer() { return &value_; } + + private: + T value_; + GTEST_DISALLOW_COPY_AND_ASSIGN_(ValueHolder); + }; + + static pthread_key_t CreateKey() { + pthread_key_t key; + // When a thread exits, DeleteThreadLocalValue() will be called on + // the object managed for that thread. + GTEST_CHECK_POSIX_SUCCESS_( + pthread_key_create(&key, &DeleteThreadLocalValue)); + return key; + } + + T* GetOrCreateValue() const { + ThreadLocalValueHolderBase* const holder = + static_cast(pthread_getspecific(key_)); + if (holder != NULL) { + return CheckedDowncastToActualType(holder)->pointer(); + } + + ValueHolder* const new_holder = new ValueHolder(default_); + ThreadLocalValueHolderBase* const holder_base = new_holder; + GTEST_CHECK_POSIX_SUCCESS_(pthread_setspecific(key_, holder_base)); + return new_holder->pointer(); + } + + // A key pthreads uses for looking up per-thread values. + const pthread_key_t key_; + const T default_; // The default value for each thread. + + GTEST_DISALLOW_COPY_AND_ASSIGN_(ThreadLocal); +}; + +# define GTEST_IS_THREADSAFE 1 + +#else // GTEST_HAS_PTHREAD + +// A dummy implementation of synchronization primitives (mutex, lock, +// and thread-local variable). Necessary for compiling Google Test where +// mutex is not supported - using Google Test in multiple threads is not +// supported on such platforms. + +class Mutex { + public: + Mutex() {} + void Lock() {} + void Unlock() {} + void AssertHeld() const {} +}; + +# define GTEST_DECLARE_STATIC_MUTEX_(mutex) \ + extern ::testing::internal::Mutex mutex + +# define GTEST_DEFINE_STATIC_MUTEX_(mutex) ::testing::internal::Mutex mutex + +class GTestMutexLock { + public: + explicit GTestMutexLock(Mutex*) {} // NOLINT +}; + +typedef GTestMutexLock MutexLock; + +template +class ThreadLocal { + public: + ThreadLocal() : value_() {} + explicit ThreadLocal(const T& value) : value_(value) {} + T* pointer() { return &value_; } + const T* pointer() const { return &value_; } + const T& get() const { return value_; } + void set(const T& value) { value_ = value; } + private: + T value_; +}; + +// The above synchronization primitives have dummy implementations. +// Therefore Google Test is not thread-safe. +# define GTEST_IS_THREADSAFE 0 + +#endif // GTEST_HAS_PTHREAD + +// Returns the number of threads running in the process, or 0 to indicate that +// we cannot detect it. +GTEST_API_ size_t GetThreadCount(); + +// Passing non-POD classes through ellipsis (...) crashes the ARM +// compiler and generates a warning in Sun Studio. The Nokia Symbian +// and the IBM XL C/C++ compiler try to instantiate a copy constructor +// for objects passed through ellipsis (...), failing for uncopyable +// objects. We define this to ensure that only POD is passed through +// ellipsis on these systems. +#if defined(__SYMBIAN32__) || defined(__IBMCPP__) || defined(__SUNPRO_CC) +// We lose support for NULL detection where the compiler doesn't like +// passing non-POD classes through ellipsis (...). +# define GTEST_ELLIPSIS_NEEDS_POD_ 1 +#else +# define GTEST_CAN_COMPARE_NULL 1 +#endif + +// The Nokia Symbian and IBM XL C/C++ compilers cannot decide between +// const T& and const T* in a function template. These compilers +// _can_ decide between class template specializations for T and T*, +// so a tr1::type_traits-like is_pointer works. +#if defined(__SYMBIAN32__) || defined(__IBMCPP__) +# define GTEST_NEEDS_IS_POINTER_ 1 +#endif + +template +struct bool_constant { + typedef bool_constant type; + static const bool value = bool_value; +}; +template const bool bool_constant::value; + +typedef bool_constant false_type; +typedef bool_constant true_type; + +template +struct is_pointer : public false_type {}; + +template +struct is_pointer : public true_type {}; + +template +struct IteratorTraits { + typedef typename Iterator::value_type value_type; +}; + +template +struct IteratorTraits { + typedef T value_type; +}; + +template +struct IteratorTraits { + typedef T value_type; +}; + +#if GTEST_OS_WINDOWS +# define GTEST_PATH_SEP_ "\\" +# define GTEST_HAS_ALT_PATH_SEP_ 1 +// The biggest signed integer type the compiler supports. +typedef __int64 BiggestInt; +#else +# define GTEST_PATH_SEP_ "/" +# define GTEST_HAS_ALT_PATH_SEP_ 0 +typedef long long BiggestInt; // NOLINT +#endif // GTEST_OS_WINDOWS + +// Utilities for char. + +// isspace(int ch) and friends accept an unsigned char or EOF. char +// may be signed, depending on the compiler (or compiler flags). +// Therefore we need to cast a char to unsigned char before calling +// isspace(), etc. + +inline bool IsAlpha(char ch) { + return isalpha(static_cast(ch)) != 0; +} +inline bool IsAlNum(char ch) { + return isalnum(static_cast(ch)) != 0; +} +inline bool IsDigit(char ch) { + return isdigit(static_cast(ch)) != 0; +} +inline bool IsLower(char ch) { + return islower(static_cast(ch)) != 0; +} +inline bool IsSpace(char ch) { + return isspace(static_cast(ch)) != 0; +} +inline bool IsUpper(char ch) { + return isupper(static_cast(ch)) != 0; +} +inline bool IsXDigit(char ch) { + return isxdigit(static_cast(ch)) != 0; +} +inline bool IsXDigit(wchar_t ch) { + const unsigned char low_byte = static_cast(ch); + return ch == low_byte && isxdigit(low_byte) != 0; +} + +inline char ToLower(char ch) { + return static_cast(tolower(static_cast(ch))); +} +inline char ToUpper(char ch) { + return static_cast(toupper(static_cast(ch))); +} + +// The testing::internal::posix namespace holds wrappers for common +// POSIX functions. These wrappers hide the differences between +// Windows/MSVC and POSIX systems. Since some compilers define these +// standard functions as macros, the wrapper cannot have the same name +// as the wrapped function. + +namespace posix { + +// Functions with a different name on Windows. + +#if GTEST_OS_WINDOWS + +typedef struct _stat StatStruct; + +# ifdef __BORLANDC__ +inline int IsATTY(int fd) { return isatty(fd); } +inline int StrCaseCmp(const char* s1, const char* s2) { + return stricmp(s1, s2); +} +inline char* StrDup(const char* src) { return strdup(src); } +# else // !__BORLANDC__ +# if GTEST_OS_WINDOWS_MOBILE +inline int IsATTY(int /* fd */) { return 0; } +# else +inline int IsATTY(int fd) { return _isatty(fd); } +# endif // GTEST_OS_WINDOWS_MOBILE +inline int StrCaseCmp(const char* s1, const char* s2) { + return _stricmp(s1, s2); +} +inline char* StrDup(const char* src) { return _strdup(src); } +# endif // __BORLANDC__ + +# if GTEST_OS_WINDOWS_MOBILE +inline int FileNo(FILE* file) { return reinterpret_cast(_fileno(file)); } +// Stat(), RmDir(), and IsDir() are not needed on Windows CE at this +// time and thus not defined there. +# else +inline int FileNo(FILE* file) { return _fileno(file); } +inline int Stat(const char* path, StatStruct* buf) { return _stat(path, buf); } +inline int RmDir(const char* dir) { return _rmdir(dir); } +inline bool IsDir(const StatStruct& st) { + return (_S_IFDIR & st.st_mode) != 0; +} +# endif // GTEST_OS_WINDOWS_MOBILE + +#else + +typedef struct stat StatStruct; + +inline int FileNo(FILE* file) { return fileno(file); } +inline int IsATTY(int fd) { return isatty(fd); } +inline int Stat(const char* path, StatStruct* buf) { return stat(path, buf); } +inline int StrCaseCmp(const char* s1, const char* s2) { + return strcasecmp(s1, s2); +} +inline char* StrDup(const char* src) { return strdup(src); } +inline int RmDir(const char* dir) { return rmdir(dir); } +inline bool IsDir(const StatStruct& st) { return S_ISDIR(st.st_mode); } + +#endif // GTEST_OS_WINDOWS + +// Functions deprecated by MSVC 8.0. + +#ifdef _MSC_VER +// Temporarily disable warning 4996 (deprecated function). +# pragma warning(push) +# pragma warning(disable:4996) +#endif + +inline const char* StrNCpy(char* dest, const char* src, size_t n) { + return strncpy(dest, src, n); +} + +// ChDir(), FReopen(), FDOpen(), Read(), Write(), Close(), and +// StrError() aren't needed on Windows CE at this time and thus not +// defined there. + +#if !GTEST_OS_WINDOWS_MOBILE +inline int ChDir(const char* dir) { return chdir(dir); } +#endif +inline FILE* FOpen(const char* path, const char* mode) { + return fopen(path, mode); +} +#if !GTEST_OS_WINDOWS_MOBILE +inline FILE *FReopen(const char* path, const char* mode, FILE* stream) { + return freopen(path, mode, stream); +} +inline FILE* FDOpen(int fd, const char* mode) { return fdopen(fd, mode); } +#endif +inline int FClose(FILE* fp) { return fclose(fp); } +#if !GTEST_OS_WINDOWS_MOBILE +inline int Read(int fd, void* buf, unsigned int count) { + return static_cast(read(fd, buf, count)); +} +inline int Write(int fd, const void* buf, unsigned int count) { + return static_cast(write(fd, buf, count)); +} +inline int Close(int fd) { return close(fd); } +inline const char* StrError(int errnum) { return strerror(errnum); } +#endif +inline const char* GetEnv(const char* name) { +#if GTEST_OS_WINDOWS_MOBILE + // We are on Windows CE, which has no environment variables. + return NULL; +#elif defined(__BORLANDC__) || defined(__SunOS_5_8) || defined(__SunOS_5_9) + // Environment variables which we programmatically clear will be set to the + // empty string rather than unset (NULL). Handle that case. + const char* const env = getenv(name); + return (env != NULL && env[0] != '\0') ? env : NULL; +#else + return getenv(name); +#endif +} + +#ifdef _MSC_VER +# pragma warning(pop) // Restores the warning state. +#endif + +#if GTEST_OS_WINDOWS_MOBILE +// Windows CE has no C library. The abort() function is used in +// several places in Google Test. This implementation provides a reasonable +// imitation of standard behaviour. +void Abort(); +#else +inline void Abort() { abort(); } +#endif // GTEST_OS_WINDOWS_MOBILE + +} // namespace posix + +// MSVC "deprecates" snprintf and issues warnings wherever it is used. In +// order to avoid these warnings, we need to use _snprintf or _snprintf_s on +// MSVC-based platforms. We map the GTEST_SNPRINTF_ macro to the appropriate +// function in order to achieve that. We use macro definition here because +// snprintf is a variadic function. +#if _MSC_VER >= 1400 && !GTEST_OS_WINDOWS_MOBILE +// MSVC 2005 and above support variadic macros. +# define GTEST_SNPRINTF_(buffer, size, format, ...) \ + _snprintf_s(buffer, size, size, format, __VA_ARGS__) +#elif defined(_MSC_VER) +// Windows CE does not define _snprintf_s and MSVC prior to 2005 doesn't +// complain about _snprintf. +# define GTEST_SNPRINTF_ _snprintf +#else +# define GTEST_SNPRINTF_ snprintf +#endif + +// The maximum number a BiggestInt can represent. This definition +// works no matter BiggestInt is represented in one's complement or +// two's complement. +// +// We cannot rely on numeric_limits in STL, as __int64 and long long +// are not part of standard C++ and numeric_limits doesn't need to be +// defined for them. +const BiggestInt kMaxBiggestInt = + ~(static_cast(1) << (8*sizeof(BiggestInt) - 1)); + +// This template class serves as a compile-time function from size to +// type. It maps a size in bytes to a primitive type with that +// size. e.g. +// +// TypeWithSize<4>::UInt +// +// is typedef-ed to be unsigned int (unsigned integer made up of 4 +// bytes). +// +// Such functionality should belong to STL, but I cannot find it +// there. +// +// Google Test uses this class in the implementation of floating-point +// comparison. +// +// For now it only handles UInt (unsigned int) as that's all Google Test +// needs. Other types can be easily added in the future if need +// arises. +template +class TypeWithSize { + public: + // This prevents the user from using TypeWithSize with incorrect + // values of N. + typedef void UInt; +}; + +// The specialization for size 4. +template <> +class TypeWithSize<4> { + public: + // unsigned int has size 4 in both gcc and MSVC. + // + // As base/basictypes.h doesn't compile on Windows, we cannot use + // uint32, uint64, and etc here. + typedef int Int; + typedef unsigned int UInt; +}; + +// The specialization for size 8. +template <> +class TypeWithSize<8> { + public: +#if GTEST_OS_WINDOWS + typedef __int64 Int; + typedef unsigned __int64 UInt; +#else + typedef long long Int; // NOLINT + typedef unsigned long long UInt; // NOLINT +#endif // GTEST_OS_WINDOWS +}; + +// Integer types of known sizes. +typedef TypeWithSize<4>::Int Int32; +typedef TypeWithSize<4>::UInt UInt32; +typedef TypeWithSize<8>::Int Int64; +typedef TypeWithSize<8>::UInt UInt64; +typedef TypeWithSize<8>::Int TimeInMillis; // Represents time in milliseconds. + +// Utilities for command line flags and environment variables. + +// Macro for referencing flags. +#define GTEST_FLAG(name) FLAGS_gtest_##name + +// Macros for declaring flags. +#define GTEST_DECLARE_bool_(name) GTEST_API_ extern bool GTEST_FLAG(name) +#define GTEST_DECLARE_int32_(name) \ + GTEST_API_ extern ::testing::internal::Int32 GTEST_FLAG(name) +#define GTEST_DECLARE_string_(name) \ + GTEST_API_ extern ::std::string GTEST_FLAG(name) + +// Macros for defining flags. +#define GTEST_DEFINE_bool_(name, default_val, doc) \ + GTEST_API_ bool GTEST_FLAG(name) = (default_val) +#define GTEST_DEFINE_int32_(name, default_val, doc) \ + GTEST_API_ ::testing::internal::Int32 GTEST_FLAG(name) = (default_val) +#define GTEST_DEFINE_string_(name, default_val, doc) \ + GTEST_API_ ::std::string GTEST_FLAG(name) = (default_val) + +// Thread annotations +#define GTEST_EXCLUSIVE_LOCK_REQUIRED_(locks) +#define GTEST_LOCK_EXCLUDED_(locks) + +// Parses 'str' for a 32-bit signed integer. If successful, writes the result +// to *value and returns true; otherwise leaves *value unchanged and returns +// false. +// TODO(chandlerc): Find a better way to refactor flag and environment parsing +// out of both gtest-port.cc and gtest.cc to avoid exporting this utility +// function. +bool ParseInt32(const Message& src_text, const char* str, Int32* value); + +// Parses a bool/Int32/string from the environment variable +// corresponding to the given Google Test flag. +bool BoolFromGTestEnv(const char* flag, bool default_val); +GTEST_API_ Int32 Int32FromGTestEnv(const char* flag, Int32 default_val); +const char* StringFromGTestEnv(const char* flag, const char* default_val); + +} // namespace internal +} // namespace testing + +#endif // GTEST_INCLUDE_GTEST_INTERNAL_GTEST_PORT_H_ diff --git a/cpp/thirdparty/protobuf-2.5.0/gtest/include/gtest/internal/gtest-string.h b/cpp/thirdparty/protobuf-2.5.0/gtest/include/gtest/internal/gtest-string.h new file mode 100644 index 000000000..472dd0583 --- /dev/null +++ b/cpp/thirdparty/protobuf-2.5.0/gtest/include/gtest/internal/gtest-string.h @@ -0,0 +1,180 @@ +// Copyright 2005, Google Inc. +// All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Authors: wan@google.com (Zhanyong Wan), eefacm@gmail.com (Sean Mcafee) +// +// The Google C++ Testing Framework (Google Test) +// +// This header file declares the String class and functions used internally by +// Google Test. They are subject to change without notice. They should not used +// by code external to Google Test. +// +// This header file is #included by . +// It should not be #included by other files. + +#ifndef GTEST_INCLUDE_GTEST_INTERNAL_GTEST_STRING_H_ +#define GTEST_INCLUDE_GTEST_INTERNAL_GTEST_STRING_H_ + +#ifdef __BORLANDC__ +// string.h is not guaranteed to provide strcpy on C++ Builder. +# include +#endif + +#include +#include + +#include "gtest/internal/gtest-port.h" + +namespace testing { +namespace internal { + +// String - an abstract class holding static string utilities. +class GTEST_API_ String { + public: + // Static utility methods + + // Clones a 0-terminated C string, allocating memory using new. The + // caller is responsible for deleting the return value using + // delete[]. Returns the cloned string, or NULL if the input is + // NULL. + // + // This is different from strdup() in string.h, which allocates + // memory using malloc(). + static const char* CloneCString(const char* c_str); + +#if GTEST_OS_WINDOWS_MOBILE + // Windows CE does not have the 'ANSI' versions of Win32 APIs. To be + // able to pass strings to Win32 APIs on CE we need to convert them + // to 'Unicode', UTF-16. + + // Creates a UTF-16 wide string from the given ANSI string, allocating + // memory using new. The caller is responsible for deleting the return + // value using delete[]. Returns the wide string, or NULL if the + // input is NULL. + // + // The wide string is created using the ANSI codepage (CP_ACP) to + // match the behaviour of the ANSI versions of Win32 calls and the + // C runtime. + static LPCWSTR AnsiToUtf16(const char* c_str); + + // Creates an ANSI string from the given wide string, allocating + // memory using new. The caller is responsible for deleting the return + // value using delete[]. Returns the ANSI string, or NULL if the + // input is NULL. + // + // The returned string is created using the ANSI codepage (CP_ACP) to + // match the behaviour of the ANSI versions of Win32 calls and the + // C runtime. + static const char* Utf16ToAnsi(LPCWSTR utf16_str); +#endif + + // Compares two C strings. Returns true iff they have the same content. + // + // Unlike strcmp(), this function can handle NULL argument(s). A + // NULL C string is considered different to any non-NULL C string, + // including the empty string. + static bool CStringEquals(const char* lhs, const char* rhs); + + // Converts a wide C string to a String using the UTF-8 encoding. + // NULL will be converted to "(null)". If an error occurred during + // the conversion, "(failed to convert from wide string)" is + // returned. + static std::string ShowWideCString(const wchar_t* wide_c_str); + + // Compares two wide C strings. Returns true iff they have the same + // content. + // + // Unlike wcscmp(), this function can handle NULL argument(s). A + // NULL C string is considered different to any non-NULL C string, + // including the empty string. + static bool WideCStringEquals(const wchar_t* lhs, const wchar_t* rhs); + + // Compares two C strings, ignoring case. Returns true iff they + // have the same content. + // + // Unlike strcasecmp(), this function can handle NULL argument(s). + // A NULL C string is considered different to any non-NULL C string, + // including the empty string. + static bool CaseInsensitiveCStringEquals(const char* lhs, + const char* rhs); + + // Compares two wide C strings, ignoring case. Returns true iff they + // have the same content. + // + // Unlike wcscasecmp(), this function can handle NULL argument(s). + // A NULL C string is considered different to any non-NULL wide C string, + // including the empty string. + // NB: The implementations on different platforms slightly differ. + // On windows, this method uses _wcsicmp which compares according to LC_CTYPE + // environment variable. On GNU platform this method uses wcscasecmp + // which compares according to LC_CTYPE category of the current locale. + // On MacOS X, it uses towlower, which also uses LC_CTYPE category of the + // current locale. + static bool CaseInsensitiveWideCStringEquals(const wchar_t* lhs, + const wchar_t* rhs); + + // Returns true iff the given string ends with the given suffix, ignoring + // case. Any string is considered to end with an empty suffix. + static bool EndsWithCaseInsensitive( + const std::string& str, const std::string& suffix); + + // Formats a list of arguments to an std::string, using the same format + // spec string as for printf. + // + // We do not use the StringPrintf class as it is not universally + // available. + // + // The result is limited to 4096 characters (including the tailing + // 0). If 4096 characters are not enough to format the input, + // "" is returned. + static std::string Format(const char* format, ...); + + private: + String(); // Not meant to be instantiated. +}; // class String + +// Gets the content of the stringstream's buffer as an std::string. Each '\0' +// character in the buffer is replaced with "\\0". +GTEST_API_ std::string StringStreamToString(::std::stringstream* stream); + +// Converts a streamable value to an std::string. A NULL pointer is +// converted to "(null)". When the input value is a ::string, +// ::std::string, ::wstring, or ::std::wstring object, each NUL +// character in it is replaced with "\\0". + +// Declared here but defined in gtest.h, so that it has access +// to the definition of the Message class, required by the ARM +// compiler. +template +std::string StreamableToString(const T& streamable); + +} // namespace internal +} // namespace testing + +#endif // GTEST_INCLUDE_GTEST_INTERNAL_GTEST_STRING_H_ diff --git a/cpp/thirdparty/protobuf-2.3.0/gtest/include/gtest/internal/gtest-tuple.h b/cpp/thirdparty/protobuf-2.5.0/gtest/include/gtest/internal/gtest-tuple.h similarity index 91% rename from cpp/thirdparty/protobuf-2.3.0/gtest/include/gtest/internal/gtest-tuple.h rename to cpp/thirdparty/protobuf-2.5.0/gtest/include/gtest/internal/gtest-tuple.h index 86b200be0..7b3dfc312 100644 --- a/cpp/thirdparty/protobuf-2.3.0/gtest/include/gtest/internal/gtest-tuple.h +++ b/cpp/thirdparty/protobuf-2.5.0/gtest/include/gtest/internal/gtest-tuple.h @@ -1,4 +1,6 @@ -// This file was GENERATED by a script. DO NOT EDIT BY HAND!!! +// This file was GENERATED by command: +// pump.py gtest-tuple.h.pump +// DO NOT EDIT BY HAND!!! // Copyright 2009 Google Inc. // All Rights Reserved. @@ -42,10 +44,11 @@ // tuple template as a friend (it complains that tuple is redefined). This // hack bypasses the bug by declaring the members that should otherwise be // private as public. -#if defined(__SYMBIAN32__) -#define GTEST_DECLARE_TUPLE_AS_FRIEND_ public: +// Sun Studio versions < 12 also have the above bug. +#if defined(__SYMBIAN32__) || (defined(__SUNPRO_CC) && __SUNPRO_CC < 0x590) +# define GTEST_DECLARE_TUPLE_AS_FRIEND_ public: #else -#define GTEST_DECLARE_TUPLE_AS_FRIEND_ \ +# define GTEST_DECLARE_TUPLE_AS_FRIEND_ \ template friend class tuple; \ private: #endif @@ -139,34 +142,54 @@ template struct TupleElement; template -struct TupleElement { typedef T0 type; }; +struct TupleElement { + typedef T0 type; +}; template -struct TupleElement { typedef T1 type; }; +struct TupleElement { + typedef T1 type; +}; template -struct TupleElement { typedef T2 type; }; +struct TupleElement { + typedef T2 type; +}; template -struct TupleElement { typedef T3 type; }; +struct TupleElement { + typedef T3 type; +}; template -struct TupleElement { typedef T4 type; }; +struct TupleElement { + typedef T4 type; +}; template -struct TupleElement { typedef T5 type; }; +struct TupleElement { + typedef T5 type; +}; template -struct TupleElement { typedef T6 type; }; +struct TupleElement { + typedef T6 type; +}; template -struct TupleElement { typedef T7 type; }; +struct TupleElement { + typedef T7 type; +}; template -struct TupleElement { typedef T8 type; }; +struct TupleElement { + typedef T8 type; +}; template -struct TupleElement { typedef T9 type; }; +struct TupleElement { + typedef T9 type; +}; } // namespace gtest_internal @@ -183,7 +206,7 @@ class GTEST_1_TUPLE_(T) { public: template friend class gtest_internal::Get; - tuple() {} + tuple() : f0_() {} explicit tuple(GTEST_BY_REF_(T0) f0) : f0_(f0) {} @@ -215,7 +238,7 @@ class GTEST_2_TUPLE_(T) { public: template friend class gtest_internal::Get; - tuple() {} + tuple() : f0_(), f1_() {} explicit tuple(GTEST_BY_REF_(T0) f0, GTEST_BY_REF_(T1) f1) : f0_(f0), f1_(f1) {} @@ -258,7 +281,7 @@ class GTEST_3_TUPLE_(T) { public: template friend class gtest_internal::Get; - tuple() {} + tuple() : f0_(), f1_(), f2_() {} explicit tuple(GTEST_BY_REF_(T0) f0, GTEST_BY_REF_(T1) f1, GTEST_BY_REF_(T2) f2) : f0_(f0), f1_(f1), f2_(f2) {} @@ -295,7 +318,7 @@ class GTEST_4_TUPLE_(T) { public: template friend class gtest_internal::Get; - tuple() {} + tuple() : f0_(), f1_(), f2_(), f3_() {} explicit tuple(GTEST_BY_REF_(T0) f0, GTEST_BY_REF_(T1) f1, GTEST_BY_REF_(T2) f2, GTEST_BY_REF_(T3) f3) : f0_(f0), f1_(f1), f2_(f2), @@ -336,7 +359,7 @@ class GTEST_5_TUPLE_(T) { public: template friend class gtest_internal::Get; - tuple() {} + tuple() : f0_(), f1_(), f2_(), f3_(), f4_() {} explicit tuple(GTEST_BY_REF_(T0) f0, GTEST_BY_REF_(T1) f1, GTEST_BY_REF_(T2) f2, GTEST_BY_REF_(T3) f3, @@ -380,7 +403,7 @@ class GTEST_6_TUPLE_(T) { public: template friend class gtest_internal::Get; - tuple() {} + tuple() : f0_(), f1_(), f2_(), f3_(), f4_(), f5_() {} explicit tuple(GTEST_BY_REF_(T0) f0, GTEST_BY_REF_(T1) f1, GTEST_BY_REF_(T2) f2, GTEST_BY_REF_(T3) f3, GTEST_BY_REF_(T4) f4, @@ -427,7 +450,7 @@ class GTEST_7_TUPLE_(T) { public: template friend class gtest_internal::Get; - tuple() {} + tuple() : f0_(), f1_(), f2_(), f3_(), f4_(), f5_(), f6_() {} explicit tuple(GTEST_BY_REF_(T0) f0, GTEST_BY_REF_(T1) f1, GTEST_BY_REF_(T2) f2, GTEST_BY_REF_(T3) f3, GTEST_BY_REF_(T4) f4, @@ -476,7 +499,7 @@ class GTEST_8_TUPLE_(T) { public: template friend class gtest_internal::Get; - tuple() {} + tuple() : f0_(), f1_(), f2_(), f3_(), f4_(), f5_(), f6_(), f7_() {} explicit tuple(GTEST_BY_REF_(T0) f0, GTEST_BY_REF_(T1) f1, GTEST_BY_REF_(T2) f2, GTEST_BY_REF_(T3) f3, GTEST_BY_REF_(T4) f4, @@ -528,7 +551,7 @@ class GTEST_9_TUPLE_(T) { public: template friend class gtest_internal::Get; - tuple() {} + tuple() : f0_(), f1_(), f2_(), f3_(), f4_(), f5_(), f6_(), f7_(), f8_() {} explicit tuple(GTEST_BY_REF_(T0) f0, GTEST_BY_REF_(T1) f1, GTEST_BY_REF_(T2) f2, GTEST_BY_REF_(T3) f3, GTEST_BY_REF_(T4) f4, @@ -582,7 +605,8 @@ class tuple { public: template friend class gtest_internal::Get; - tuple() {} + tuple() : f0_(), f1_(), f2_(), f3_(), f4_(), f5_(), f6_(), f7_(), f8_(), + f9_() {} explicit tuple(GTEST_BY_REF_(T0) f0, GTEST_BY_REF_(T1) f1, GTEST_BY_REF_(T2) f2, GTEST_BY_REF_(T3) f3, GTEST_BY_REF_(T4) f4, @@ -706,37 +730,59 @@ inline GTEST_10_TUPLE_(T) make_tuple(const T0& f0, const T1& f1, const T2& f2, template struct tuple_size; template -struct tuple_size { static const int value = 0; }; +struct tuple_size { + static const int value = 0; +}; template -struct tuple_size { static const int value = 1; }; +struct tuple_size { + static const int value = 1; +}; template -struct tuple_size { static const int value = 2; }; +struct tuple_size { + static const int value = 2; +}; template -struct tuple_size { static const int value = 3; }; +struct tuple_size { + static const int value = 3; +}; template -struct tuple_size { static const int value = 4; }; +struct tuple_size { + static const int value = 4; +}; template -struct tuple_size { static const int value = 5; }; +struct tuple_size { + static const int value = 5; +}; template -struct tuple_size { static const int value = 6; }; +struct tuple_size { + static const int value = 6; +}; template -struct tuple_size { static const int value = 7; }; +struct tuple_size { + static const int value = 7; +}; template -struct tuple_size { static const int value = 8; }; +struct tuple_size { + static const int value = 8; +}; template -struct tuple_size { static const int value = 9; }; +struct tuple_size { + static const int value = 9; +}; template -struct tuple_size { static const int value = 10; }; +struct tuple_size { + static const int value = 10; +}; template struct tuple_element { @@ -920,8 +966,8 @@ template inline bool operator==(const GTEST_10_TUPLE_(T)& t, const GTEST_10_TUPLE_(U)& u) { return gtest_internal::SameSizeTuplePrefixComparator< - tuple_size::value, - tuple_size::value>::Eq(t, u); + tuple_size::value, + tuple_size::value>::Eq(t, u); } template diff --git a/cpp/thirdparty/protobuf-2.3.0/gtest/include/gtest/internal/gtest-tuple.h.pump b/cpp/thirdparty/protobuf-2.5.0/gtest/include/gtest/internal/gtest-tuple.h.pump similarity index 91% rename from cpp/thirdparty/protobuf-2.3.0/gtest/include/gtest/internal/gtest-tuple.h.pump rename to cpp/thirdparty/protobuf-2.5.0/gtest/include/gtest/internal/gtest-tuple.h.pump index 12821d8bd..c7d9e039b 100644 --- a/cpp/thirdparty/protobuf-2.3.0/gtest/include/gtest/internal/gtest-tuple.h.pump +++ b/cpp/thirdparty/protobuf-2.5.0/gtest/include/gtest/internal/gtest-tuple.h.pump @@ -39,14 +39,15 @@ $$ This meta comment fixes auto-indentation in Emacs. }} #include // For ::std::pair. -// The compiler used in Symbian 5th Edition (__S60_50__) has a bug -// that prevents us from declaring the tuple template as a friend (it -// complains that tuple is redefined). This hack bypasses the bug by -// declaring the members that should otherwise be private as public. -#if defined(__SYMBIAN32__) && __S60_50__ -#define GTEST_DECLARE_TUPLE_AS_FRIEND_ public: +// The compiler used in Symbian has a bug that prevents us from declaring the +// tuple template as a friend (it complains that tuple is redefined). This +// hack bypasses the bug by declaring the members that should otherwise be +// private as public. +// Sun Studio versions < 12 also have the above bug. +#if defined(__SYMBIAN32__) || (defined(__SUNPRO_CC) && __SUNPRO_CC < 0x590) +# define GTEST_DECLARE_TUPLE_AS_FRIEND_ public: #else -#define GTEST_DECLARE_TUPLE_AS_FRIEND_ \ +# define GTEST_DECLARE_TUPLE_AS_FRIEND_ \ template friend class tuple; \ private: #endif @@ -117,8 +118,9 @@ struct TupleElement; $for i [[ template -struct TupleElement [[]] -{ typedef T$i type; }; +struct TupleElement { + typedef T$i type; +}; ]] @@ -140,7 +142,7 @@ class $if k < n [[GTEST_$(k)_TUPLE_(T)]] $else [[tuple]] { public: template friend class gtest_internal::Get; - tuple() {} + tuple() : $for m, [[f$(m)_()]] {} explicit tuple($for m, [[GTEST_BY_REF_(T$m) f$m]]) : [[]] $for m, [[f$(m)_(f$m)]] {} @@ -219,7 +221,9 @@ template struct tuple_size; $for j [[ template -struct tuple_size { static const int value = $j; }; +struct tuple_size { + static const int value = $j; +}; ]] @@ -301,8 +305,8 @@ template inline bool operator==(const GTEST_$(n)_TUPLE_(T)& t, const GTEST_$(n)_TUPLE_(U)& u) { return gtest_internal::SameSizeTuplePrefixComparator< - tuple_size::value, - tuple_size::value>::Eq(t, u); + tuple_size::value, + tuple_size::value>::Eq(t, u); } template diff --git a/cpp/thirdparty/protobuf-2.3.0/gtest/include/gtest/internal/gtest-type-util.h b/cpp/thirdparty/protobuf-2.5.0/gtest/include/gtest/internal/gtest-type-util.h similarity index 99% rename from cpp/thirdparty/protobuf-2.3.0/gtest/include/gtest/internal/gtest-type-util.h rename to cpp/thirdparty/protobuf-2.5.0/gtest/include/gtest/internal/gtest-type-util.h index f1b1bedd8..4a7d946fd 100644 --- a/cpp/thirdparty/protobuf-2.3.0/gtest/include/gtest/internal/gtest-type-util.h +++ b/cpp/thirdparty/protobuf-2.5.0/gtest/include/gtest/internal/gtest-type-util.h @@ -1,4 +1,6 @@ -// This file was GENERATED by a script. DO NOT EDIT BY HAND!!! +// This file was GENERATED by command: +// pump.py gtest-type-util.h.pump +// DO NOT EDIT BY HAND!!! // Copyright 2008 Google Inc. // All Rights Reserved. @@ -42,57 +44,64 @@ #ifndef GTEST_INCLUDE_GTEST_INTERNAL_GTEST_TYPE_UTIL_H_ #define GTEST_INCLUDE_GTEST_INTERNAL_GTEST_TYPE_UTIL_H_ -#include -#include - -#if GTEST_HAS_TYPED_TEST || GTEST_HAS_TYPED_TEST_P +#include "gtest/internal/gtest-port.h" +#include "gtest/internal/gtest-string.h" // #ifdef __GNUC__ is too general here. It is possible to use gcc without using // libstdc++ (which is where cxxabi.h comes from). -#ifdef __GLIBCXX__ -#include -#endif // __GLIBCXX__ - -#include +# if GTEST_HAS_CXXABI_H_ +# include +# elif defined(__HP_aCC) +# include +# endif // GTEST_HASH_CXXABI_H_ namespace testing { namespace internal { -// AssertyTypeEq::type is defined iff T1 and T2 are the same -// type. This can be used as a compile-time assertion to ensure that -// two types are equal. - -template -struct AssertTypeEq; - -template -struct AssertTypeEq { - typedef bool type; -}; - // GetTypeName() returns a human-readable name of type T. +// NB: This function is also used in Google Mock, so don't move it inside of +// the typed-test-only section below. template -String GetTypeName() { -#if GTEST_HAS_RTTI +std::string GetTypeName() { +# if GTEST_HAS_RTTI const char* const name = typeid(T).name(); -#ifdef __GLIBCXX__ +# if GTEST_HAS_CXXABI_H_ || defined(__HP_aCC) int status = 0; // gcc's implementation of typeid(T).name() mangles the type name, // so we have to demangle it. - char* const readable_name = abi::__cxa_demangle(name, 0, 0, &status); - const String name_str(status == 0 ? readable_name : name); +# if GTEST_HAS_CXXABI_H_ + using abi::__cxa_demangle; +# endif // GTEST_HAS_CXXABI_H_ + char* const readable_name = __cxa_demangle(name, 0, 0, &status); + const std::string name_str(status == 0 ? readable_name : name); free(readable_name); return name_str; -#else +# else return name; -#endif // __GLIBCXX__ +# endif // GTEST_HAS_CXXABI_H_ || __HP_aCC + +# else -#else return ""; -#endif // GTEST_HAS_RTTI + +# endif // GTEST_HAS_RTTI } +#if GTEST_HAS_TYPED_TEST || GTEST_HAS_TYPED_TEST_P + +// AssertyTypeEq::type is defined iff T1 and T2 are the same +// type. This can be used as a compile-time assertion to ensure that +// two types are equal. + +template +struct AssertTypeEq; + +template +struct AssertTypeEq { + typedef bool type; +}; + // A unique type used as the default value for the arguments of class // template Types. This allows us to simulate variadic templates // (e.g. Types, Type, and etc), which C++ doesn't @@ -1611,7 +1620,7 @@ struct Types class +# define GTEST_TEMPLATE_ template class // The template "selector" struct TemplateSel is used to // represent Tmpl, which must be a class template with one type @@ -1629,7 +1638,7 @@ struct TemplateSel { }; }; -#define GTEST_BIND_(TmplSel, T) \ +# define GTEST_BIND_(TmplSel, T) \ TmplSel::template Bind::type // A unique struct template used as the default value for the @@ -3291,7 +3300,9 @@ struct Templates -struct TypeList { typedef Types1 type; }; +struct TypeList { + typedef Types1 type; +}; template ::type type; }; +#endif // GTEST_HAS_TYPED_TEST || GTEST_HAS_TYPED_TEST_P + } // namespace internal } // namespace testing -#endif // GTEST_HAS_TYPED_TEST || GTEST_HAS_TYPED_TEST_P - #endif // GTEST_INCLUDE_GTEST_INTERNAL_GTEST_TYPE_UTIL_H_ diff --git a/cpp/thirdparty/protobuf-2.3.0/gtest/include/gtest/internal/gtest-type-util.h.pump b/cpp/thirdparty/protobuf-2.5.0/gtest/include/gtest/internal/gtest-type-util.h.pump similarity index 90% rename from cpp/thirdparty/protobuf-2.3.0/gtest/include/gtest/internal/gtest-type-util.h.pump rename to cpp/thirdparty/protobuf-2.5.0/gtest/include/gtest/internal/gtest-type-util.h.pump index 3eb5dcee3..3638d5165 100644 --- a/cpp/thirdparty/protobuf-2.3.0/gtest/include/gtest/internal/gtest-type-util.h.pump +++ b/cpp/thirdparty/protobuf-2.5.0/gtest/include/gtest/internal/gtest-type-util.h.pump @@ -42,57 +42,64 @@ $var n = 50 $$ Maximum length of type lists we want to support. #ifndef GTEST_INCLUDE_GTEST_INTERNAL_GTEST_TYPE_UTIL_H_ #define GTEST_INCLUDE_GTEST_INTERNAL_GTEST_TYPE_UTIL_H_ -#include -#include - -#if GTEST_HAS_TYPED_TEST || GTEST_HAS_TYPED_TEST_P +#include "gtest/internal/gtest-port.h" +#include "gtest/internal/gtest-string.h" // #ifdef __GNUC__ is too general here. It is possible to use gcc without using // libstdc++ (which is where cxxabi.h comes from). -#ifdef __GLIBCXX__ -#include -#endif // __GLIBCXX__ - -#include +# if GTEST_HAS_CXXABI_H_ +# include +# elif defined(__HP_aCC) +# include +# endif // GTEST_HASH_CXXABI_H_ namespace testing { namespace internal { -// AssertyTypeEq::type is defined iff T1 and T2 are the same -// type. This can be used as a compile-time assertion to ensure that -// two types are equal. - -template -struct AssertTypeEq; - -template -struct AssertTypeEq { - typedef bool type; -}; - // GetTypeName() returns a human-readable name of type T. +// NB: This function is also used in Google Mock, so don't move it inside of +// the typed-test-only section below. template -String GetTypeName() { -#if GTEST_HAS_RTTI +std::string GetTypeName() { +# if GTEST_HAS_RTTI const char* const name = typeid(T).name(); -#ifdef __GLIBCXX__ +# if GTEST_HAS_CXXABI_H_ || defined(__HP_aCC) int status = 0; // gcc's implementation of typeid(T).name() mangles the type name, // so we have to demangle it. - char* const readable_name = abi::__cxa_demangle(name, 0, 0, &status); - const String name_str(status == 0 ? readable_name : name); +# if GTEST_HAS_CXXABI_H_ + using abi::__cxa_demangle; +# endif // GTEST_HAS_CXXABI_H_ + char* const readable_name = __cxa_demangle(name, 0, 0, &status); + const std::string name_str(status == 0 ? readable_name : name); free(readable_name); return name_str; -#else +# else return name; -#endif // __GLIBCXX__ +# endif // GTEST_HAS_CXXABI_H_ || __HP_aCC + +# else -#else return ""; -#endif // GTEST_HAS_RTTI + +# endif // GTEST_HAS_RTTI } +#if GTEST_HAS_TYPED_TEST || GTEST_HAS_TYPED_TEST_P + +// AssertyTypeEq::type is defined iff T1 and T2 are the same +// type. This can be used as a compile-time assertion to ensure that +// two types are equal. + +template +struct AssertTypeEq; + +template +struct AssertTypeEq { + typedef bool type; +}; + // A unique type used as the default value for the arguments of class // template Types. This allows us to simulate variadic templates // (e.g. Types, Type, and etc), which C++ doesn't @@ -171,7 +178,7 @@ struct Types<$for j, [[T$j]]$for k[[, internal::None]]> { namespace internal { -#define GTEST_TEMPLATE_ template class +# define GTEST_TEMPLATE_ template class // The template "selector" struct TemplateSel is used to // represent Tmpl, which must be a class template with one type @@ -189,7 +196,7 @@ struct TemplateSel { }; }; -#define GTEST_BIND_(TmplSel, T) \ +# define GTEST_BIND_(TmplSel, T) \ TmplSel::template Bind::type // A unique struct template used as the default value for the @@ -272,7 +279,9 @@ struct Templates<$for j, [[T$j]]$for k[[, NoneT]]> { // INSTANTIATE_TYPED_TEST_CASE_P(). template -struct TypeList { typedef Types1 type; }; +struct TypeList { + typedef Types1 type; +}; $range i 1..n @@ -281,9 +290,9 @@ struct TypeList > { typedef typename Types<$for i, [[T$i]]>::type type; }; +#endif // GTEST_HAS_TYPED_TEST || GTEST_HAS_TYPED_TEST_P + } // namespace internal } // namespace testing -#endif // GTEST_HAS_TYPED_TEST || GTEST_HAS_TYPED_TEST_P - #endif // GTEST_INCLUDE_GTEST_INTERNAL_GTEST_TYPE_UTIL_H_ diff --git a/cpp/thirdparty/protobuf-2.3.0/gtest/m4/acx_pthread.m4 b/cpp/thirdparty/protobuf-2.5.0/gtest/m4/acx_pthread.m4 similarity index 100% rename from cpp/thirdparty/protobuf-2.3.0/gtest/m4/acx_pthread.m4 rename to cpp/thirdparty/protobuf-2.5.0/gtest/m4/acx_pthread.m4 diff --git a/cpp/thirdparty/protobuf-2.3.0/gtest/m4/gtest.m4 b/cpp/thirdparty/protobuf-2.5.0/gtest/m4/gtest.m4 similarity index 100% rename from cpp/thirdparty/protobuf-2.3.0/gtest/m4/gtest.m4 rename to cpp/thirdparty/protobuf-2.5.0/gtest/m4/gtest.m4 diff --git a/cpp/thirdparty/protobuf-2.3.0/m4/libtool.m4 b/cpp/thirdparty/protobuf-2.5.0/gtest/m4/libtool.m4 similarity index 77% rename from cpp/thirdparty/protobuf-2.3.0/m4/libtool.m4 rename to cpp/thirdparty/protobuf-2.5.0/gtest/m4/libtool.m4 index 4ceb7f128..828104cfd 100644 --- a/cpp/thirdparty/protobuf-2.3.0/m4/libtool.m4 +++ b/cpp/thirdparty/protobuf-2.5.0/gtest/m4/libtool.m4 @@ -1,7 +1,8 @@ # libtool.m4 - Configure libtool for the host system. -*-Autoconf-*- # # Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005, -# 2006, 2007, 2008 Free Software Foundation, Inc. +# 2006, 2007, 2008, 2009, 2010, 2011 Free Software +# Foundation, Inc. # Written by Gordon Matzigkeit, 1996 # # This file is free software; the Free Software Foundation gives @@ -10,7 +11,8 @@ m4_define([_LT_COPYING], [dnl # Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005, -# 2006, 2007, 2008 Free Software Foundation, Inc. +# 2006, 2007, 2008, 2009, 2010, 2011 Free Software +# Foundation, Inc. # Written by Gordon Matzigkeit, 1996 # # This file is part of GNU Libtool. @@ -37,7 +39,7 @@ m4_define([_LT_COPYING], [dnl # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. ]) -# serial 56 LT_INIT +# serial 57 LT_INIT # LT_PREREQ(VERSION) @@ -66,6 +68,7 @@ esac # ------------------ AC_DEFUN([LT_INIT], [AC_PREREQ([2.58])dnl We use AC_INCLUDES_DEFAULT +AC_REQUIRE([AC_CONFIG_AUX_DIR_DEFAULT])dnl AC_BEFORE([$0], [LT_LANG])dnl AC_BEFORE([$0], [LT_OUTPUT])dnl AC_BEFORE([$0], [LTDL_INIT])dnl @@ -82,6 +85,8 @@ AC_REQUIRE([LTVERSION_VERSION])dnl AC_REQUIRE([LTOBSOLETE_VERSION])dnl m4_require([_LT_PROG_LTMAIN])dnl +_LT_SHELL_INIT([SHELL=${CONFIG_SHELL-/bin/sh}]) + dnl Parse OPTIONS _LT_SET_OPTIONS([$0], [$1]) @@ -118,7 +123,7 @@ m4_defun([_LT_CC_BASENAME], *) break;; esac done -cc_basename=`$ECHO "X$cc_temp" | $Xsed -e 's%.*/%%' -e "s%^$host_alias-%%"` +cc_basename=`$ECHO "$cc_temp" | $SED "s%.*/%%; s%^$host_alias-%%"` ]) @@ -138,6 +143,11 @@ m4_defun([_LT_FILEUTILS_DEFAULTS], m4_defun([_LT_SETUP], [AC_REQUIRE([AC_CANONICAL_HOST])dnl AC_REQUIRE([AC_CANONICAL_BUILD])dnl +AC_REQUIRE([_LT_PREPARE_SED_QUOTE_VARS])dnl +AC_REQUIRE([_LT_PROG_ECHO_BACKSLASH])dnl + +_LT_DECL([], [PATH_SEPARATOR], [1], [The PATH separator for the build system])dnl +dnl _LT_DECL([], [host_alias], [0], [The host system])dnl _LT_DECL([], [host], [0])dnl _LT_DECL([], [host_os], [0])dnl @@ -160,10 +170,13 @@ _LT_DECL([], [exeext], [0], [Executable file suffix (normally "")])dnl dnl m4_require([_LT_FILEUTILS_DEFAULTS])dnl m4_require([_LT_CHECK_SHELL_FEATURES])dnl +m4_require([_LT_PATH_CONVERSION_FUNCTIONS])dnl m4_require([_LT_CMD_RELOAD])dnl m4_require([_LT_CHECK_MAGIC_METHOD])dnl +m4_require([_LT_CHECK_SHAREDLIB_FROM_LINKLIB])dnl m4_require([_LT_CMD_OLD_ARCHIVE])dnl m4_require([_LT_CMD_GLOBAL_SYMBOLS])dnl +m4_require([_LT_WITH_SYSROOT])dnl _LT_CONFIG_LIBTOOL_INIT([ # See if we are running on zsh, and set the options which allow our @@ -179,7 +192,6 @@ fi _LT_CHECK_OBJDIR m4_require([_LT_TAG_COMPILER])dnl -_LT_PROG_ECHO_BACKSLASH case $host_os in aix3*) @@ -193,23 +205,6 @@ aix3*) ;; esac -# Sed substitution that helps us do robust quoting. It backslashifies -# metacharacters that are still active within double-quoted strings. -sed_quote_subst='s/\([["`$\\]]\)/\\\1/g' - -# Same as above, but do not quote variable references. -double_quote_subst='s/\([["`\\]]\)/\\\1/g' - -# Sed substitution to delay expansion of an escaped shell variable in a -# double_quote_subst'ed string. -delay_variable_subst='s/\\\\\\\\\\\$/\\\\\\$/g' - -# Sed substitution to delay expansion of an escaped single quote. -delay_single_quote_subst='s/'\''/'\'\\\\\\\'\''/g' - -# Sed substitution to avoid accidental globbing in evaled expressions -no_glob_subst='s/\*/\\\*/g' - # Global variables: ofile=libtool can_build_shared=yes @@ -250,6 +245,28 @@ _LT_CONFIG_COMMANDS ])# _LT_SETUP +# _LT_PREPARE_SED_QUOTE_VARS +# -------------------------- +# Define a few sed substitution that help us do robust quoting. +m4_defun([_LT_PREPARE_SED_QUOTE_VARS], +[# Backslashify metacharacters that are still active within +# double-quoted strings. +sed_quote_subst='s/\([["`$\\]]\)/\\\1/g' + +# Same as above, but do not quote variable references. +double_quote_subst='s/\([["`\\]]\)/\\\1/g' + +# Sed substitution to delay expansion of an escaped shell variable in a +# double_quote_subst'ed string. +delay_variable_subst='s/\\\\\\\\\\\$/\\\\\\$/g' + +# Sed substitution to delay expansion of an escaped single quote. +delay_single_quote_subst='s/'\''/'\'\\\\\\\'\''/g' + +# Sed substitution to avoid accidental globbing in evaled expressions +no_glob_subst='s/\*/\\\*/g' +]) + # _LT_PROG_LTMAIN # --------------- # Note that this code is called both from `configure', and `config.status' @@ -380,12 +397,12 @@ m4_define([lt_decl_dquote_varnames], # lt_decl_varnames_tagged([SEPARATOR], [VARNAME1...]) # --------------------------------------------------- m4_define([lt_decl_varnames_tagged], -[_$0(m4_quote(m4_default([$1], [[, ]])), - m4_quote(m4_if([$2], [], - m4_quote(lt_decl_tag_varnames), - m4_quote(m4_shift($@)))), - m4_split(m4_normalize(m4_quote(_LT_TAGS))))]) -m4_define([_lt_decl_varnames_tagged], [lt_combine([$1], [$2], [_], $3)]) +[m4_assert([$# <= 2])dnl +_$0(m4_quote(m4_default([$1], [[, ]])), + m4_ifval([$2], [[$2]], [m4_dquote(lt_decl_tag_varnames)]), + m4_split(m4_normalize(m4_quote(_LT_TAGS)), [ ]))]) +m4_define([_lt_decl_varnames_tagged], +[m4_ifval([$3], [lt_combine([$1], [$2], [_], $3)])]) # lt_decl_all_varnames([SEPARATOR], [VARNAME1...]) @@ -408,7 +425,7 @@ m4_define([_lt_decl_all_varnames], # declaration there will have the same value as in `configure'. VARNAME # must have a single quote delimited value for this to work. m4_define([_LT_CONFIG_STATUS_DECLARE], -[$1='`$ECHO "X$][$1" | $Xsed -e "$delay_single_quote_subst"`']) +[$1='`$ECHO "$][$1" | $SED "$delay_single_quote_subst"`']) # _LT_CONFIG_STATUS_DECLARATIONS @@ -418,7 +435,7 @@ m4_define([_LT_CONFIG_STATUS_DECLARE], # embedded single quotes properly. In configure, this macro expands # each variable declared with _LT_DECL (and _LT_TAGDECL) into: # -# ='`$ECHO "X$" | $Xsed -e "$delay_single_quote_subst"`' +# ='`$ECHO "$" | $SED "$delay_single_quote_subst"`' m4_defun([_LT_CONFIG_STATUS_DECLARATIONS], [m4_foreach([_lt_var], m4_quote(lt_decl_all_varnames), [m4_n([_LT_CONFIG_STATUS_DECLARE(_lt_var)])])]) @@ -517,12 +534,20 @@ LTCC='$LTCC' LTCFLAGS='$LTCFLAGS' compiler='$compiler_DEFAULT' +# A function that is used when there is no print builtin or printf. +func_fallback_echo () +{ + eval 'cat <<_LTECHO_EOF +\$[]1 +_LTECHO_EOF' +} + # Quote evaled strings. for var in lt_decl_all_varnames([[ \ ]], lt_decl_quote_varnames); do - case \`eval \\\\\$ECHO "X\\\\\$\$var"\` in + case \`eval \\\\\$ECHO \\\\""\\\\\$\$var"\\\\"\` in *[[\\\\\\\`\\"\\\$]]*) - eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"X\\\$\$var\\" | \\\$Xsed -e \\"\\\$sed_quote_subst\\"\\\`\\\\\\"" + eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED \\"\\\$sed_quote_subst\\"\\\`\\\\\\"" ;; *) eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\"" @@ -533,9 +558,9 @@ done # Double-quote double-evaled strings. for var in lt_decl_all_varnames([[ \ ]], lt_decl_dquote_varnames); do - case \`eval \\\\\$ECHO "X\\\\\$\$var"\` in + case \`eval \\\\\$ECHO \\\\""\\\\\$\$var"\\\\"\` in *[[\\\\\\\`\\"\\\$]]*) - eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"X\\\$\$var\\" | \\\$Xsed -e \\"\\\$double_quote_subst\\" -e \\"\\\$sed_quote_subst\\" -e \\"\\\$delay_variable_subst\\"\\\`\\\\\\"" + eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED -e \\"\\\$double_quote_subst\\" -e \\"\\\$sed_quote_subst\\" -e \\"\\\$delay_variable_subst\\"\\\`\\\\\\"" ;; *) eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\"" @@ -543,16 +568,38 @@ for var in lt_decl_all_varnames([[ \ esac done -# Fix-up fallback echo if it was mangled by the above quoting rules. -case \$lt_ECHO in -*'\\\[$]0 --fallback-echo"')dnl " - lt_ECHO=\`\$ECHO "X\$lt_ECHO" | \$Xsed -e 's/\\\\\\\\\\\\\\\[$]0 --fallback-echo"\[$]/\[$]0 --fallback-echo"/'\` - ;; -esac - _LT_OUTPUT_LIBTOOL_INIT ]) +# _LT_GENERATED_FILE_INIT(FILE, [COMMENT]) +# ------------------------------------ +# Generate a child script FILE with all initialization necessary to +# reuse the environment learned by the parent script, and make the +# file executable. If COMMENT is supplied, it is inserted after the +# `#!' sequence but before initialization text begins. After this +# macro, additional text can be appended to FILE to form the body of +# the child script. The macro ends with non-zero status if the +# file could not be fully written (such as if the disk is full). +m4_ifdef([AS_INIT_GENERATED], +[m4_defun([_LT_GENERATED_FILE_INIT],[AS_INIT_GENERATED($@)])], +[m4_defun([_LT_GENERATED_FILE_INIT], +[m4_require([AS_PREPARE])]dnl +[m4_pushdef([AS_MESSAGE_LOG_FD])]dnl +[lt_write_fail=0 +cat >$1 <<_ASEOF || lt_write_fail=1 +#! $SHELL +# Generated by $as_me. +$2 +SHELL=\${CONFIG_SHELL-$SHELL} +export SHELL +_ASEOF +cat >>$1 <<\_ASEOF || lt_write_fail=1 +AS_SHELL_SANITIZE +_AS_PREPARE +exec AS_MESSAGE_FD>&1 +_ASEOF +test $lt_write_fail = 0 && chmod +x $1[]dnl +m4_popdef([AS_MESSAGE_LOG_FD])])])# _LT_GENERATED_FILE_INIT # LT_OUTPUT # --------- @@ -562,20 +609,11 @@ _LT_OUTPUT_LIBTOOL_INIT AC_DEFUN([LT_OUTPUT], [: ${CONFIG_LT=./config.lt} AC_MSG_NOTICE([creating $CONFIG_LT]) -cat >"$CONFIG_LT" <<_LTEOF -#! $SHELL -# Generated by $as_me. -# Run this file to recreate a libtool stub with the current configuration. - -lt_cl_silent=false -SHELL=\${CONFIG_SHELL-$SHELL} -_LTEOF +_LT_GENERATED_FILE_INIT(["$CONFIG_LT"], +[# Run this file to recreate a libtool stub with the current configuration.]) cat >>"$CONFIG_LT" <<\_LTEOF -AS_SHELL_SANITIZE -_AS_PREPARE - -exec AS_MESSAGE_FD>&1 +lt_cl_silent=false exec AS_MESSAGE_LOG_FD>>config.log { echo @@ -601,7 +639,7 @@ m4_ifset([AC_PACKAGE_NAME], [AC_PACKAGE_NAME ])config.lt[]dnl m4_ifset([AC_PACKAGE_VERSION], [ AC_PACKAGE_VERSION]) configured by $[0], generated by m4_PACKAGE_STRING. -Copyright (C) 2008 Free Software Foundation, Inc. +Copyright (C) 2011 Free Software Foundation, Inc. This config.lt script is free software; the Free Software Foundation gives unlimited permision to copy, distribute and modify it." @@ -646,15 +684,13 @@ chmod +x "$CONFIG_LT" # appending to config.log, which fails on DOS, as config.log is still kept # open by configure. Here we exec the FD to /dev/null, effectively closing # config.log, so it can be properly (re)opened and appended to by config.lt. -if test "$no_create" != yes; then - lt_cl_success=: - test "$silent" = yes && - lt_config_lt_args="$lt_config_lt_args --quiet" - exec AS_MESSAGE_LOG_FD>/dev/null - $SHELL "$CONFIG_LT" $lt_config_lt_args || lt_cl_success=false - exec AS_MESSAGE_LOG_FD>>config.log - $lt_cl_success || AS_EXIT(1) -fi +lt_cl_success=: +test "$silent" = yes && + lt_config_lt_args="$lt_config_lt_args --quiet" +exec AS_MESSAGE_LOG_FD>/dev/null +$SHELL "$CONFIG_LT" $lt_config_lt_args || lt_cl_success=false +exec AS_MESSAGE_LOG_FD>>config.log +$lt_cl_success || AS_EXIT(1) ])# LT_OUTPUT @@ -717,15 +753,12 @@ _LT_EOF # if finds mixed CR/LF and LF-only lines. Since sed operates in # text mode, it properly converts lines to CR/LF. This bash problem # is reportedly fixed, but why not run on old versions too? - sed '/^# Generated shell functions inserted here/q' "$ltmain" >> "$cfgfile" \ - || (rm -f "$cfgfile"; exit 1) + sed '$q' "$ltmain" >> "$cfgfile" \ + || (rm -f "$cfgfile"; exit 1) - _LT_PROG_XSI_SHELLFNS + _LT_PROG_REPLACE_SHELLFNS - sed -n '/^# Generated shell functions inserted here/,$p' "$ltmain" >> "$cfgfile" \ - || (rm -f "$cfgfile"; exit 1) - - mv -f "$cfgfile" "$ofile" || + mv -f "$cfgfile" "$ofile" || (rm -f "$ofile" && cp "$cfgfile" "$ofile" && rm -f "$cfgfile") chmod +x "$ofile" ], @@ -770,6 +803,7 @@ AC_DEFUN([LT_LANG], m4_case([$1], [C], [_LT_LANG(C)], [C++], [_LT_LANG(CXX)], + [Go], [_LT_LANG(GO)], [Java], [_LT_LANG(GCJ)], [Fortran 77], [_LT_LANG(F77)], [Fortran], [_LT_LANG(FC)], @@ -791,6 +825,31 @@ m4_defun([_LT_LANG], ])# _LT_LANG +m4_ifndef([AC_PROG_GO], [ +############################################################ +# NOTE: This macro has been submitted for inclusion into # +# GNU Autoconf as AC_PROG_GO. When it is available in # +# a released version of Autoconf we should remove this # +# macro and use it instead. # +############################################################ +m4_defun([AC_PROG_GO], +[AC_LANG_PUSH(Go)dnl +AC_ARG_VAR([GOC], [Go compiler command])dnl +AC_ARG_VAR([GOFLAGS], [Go compiler flags])dnl +_AC_ARG_VAR_LDFLAGS()dnl +AC_CHECK_TOOL(GOC, gccgo) +if test -z "$GOC"; then + if test -n "$ac_tool_prefix"; then + AC_CHECK_PROG(GOC, [${ac_tool_prefix}gccgo], [${ac_tool_prefix}gccgo]) + fi +fi +if test -z "$GOC"; then + AC_CHECK_PROG(GOC, gccgo, gccgo, false) +fi +])#m4_defun +])#m4_ifndef + + # _LT_LANG_DEFAULT_CONFIG # ----------------------- m4_defun([_LT_LANG_DEFAULT_CONFIG], @@ -821,6 +880,10 @@ AC_PROVIDE_IFELSE([AC_PROG_GCJ], m4_ifdef([LT_PROG_GCJ], [m4_define([LT_PROG_GCJ], defn([LT_PROG_GCJ])[LT_LANG(GCJ)])])])])]) +AC_PROVIDE_IFELSE([AC_PROG_GO], + [LT_LANG(GO)], + [m4_define([AC_PROG_GO], defn([AC_PROG_GO])[LT_LANG(GO)])]) + AC_PROVIDE_IFELSE([LT_PROG_RC], [LT_LANG(RC)], [m4_define([LT_PROG_RC], defn([LT_PROG_RC])[LT_LANG(RC)])]) @@ -831,11 +894,13 @@ AU_DEFUN([AC_LIBTOOL_CXX], [LT_LANG(C++)]) AU_DEFUN([AC_LIBTOOL_F77], [LT_LANG(Fortran 77)]) AU_DEFUN([AC_LIBTOOL_FC], [LT_LANG(Fortran)]) AU_DEFUN([AC_LIBTOOL_GCJ], [LT_LANG(Java)]) +AU_DEFUN([AC_LIBTOOL_RC], [LT_LANG(Windows Resource)]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AC_LIBTOOL_CXX], []) dnl AC_DEFUN([AC_LIBTOOL_F77], []) dnl AC_DEFUN([AC_LIBTOOL_FC], []) dnl AC_DEFUN([AC_LIBTOOL_GCJ], []) +dnl AC_DEFUN([AC_LIBTOOL_RC], []) # _LT_TAG_COMPILER @@ -921,7 +986,13 @@ m4_defun_once([_LT_REQUIRED_DARWIN_CHECKS],[ $LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \ -dynamiclib -Wl,-single_module conftest.c 2>conftest.err _lt_result=$? - if test -f libconftest.dylib && test ! -s conftest.err && test $_lt_result = 0; then + # If there is a non-empty error log, and "single_module" + # appears in it, assume the flag caused a linker warning + if test -s conftest.err && $GREP single_module conftest.err; then + cat conftest.err >&AS_MESSAGE_LOG_FD + # Otherwise, if the output was created with a 0 exit code from + # the compiler, it worked. + elif test -f libconftest.dylib && test $_lt_result -eq 0; then lt_cv_apple_cc_single_mod=yes else cat conftest.err >&AS_MESSAGE_LOG_FD @@ -929,6 +1000,7 @@ m4_defun_once([_LT_REQUIRED_DARWIN_CHECKS],[ rm -rf libconftest.dylib* rm -f conftest.* fi]) + AC_CACHE_CHECK([for -exported_symbols_list linker flag], [lt_cv_ld_exported_symbols_list], [lt_cv_ld_exported_symbols_list=no @@ -940,15 +1012,43 @@ m4_defun_once([_LT_REQUIRED_DARWIN_CHECKS],[ [lt_cv_ld_exported_symbols_list=no]) LDFLAGS="$save_LDFLAGS" ]) + + AC_CACHE_CHECK([for -force_load linker flag],[lt_cv_ld_force_load], + [lt_cv_ld_force_load=no + cat > conftest.c << _LT_EOF +int forced_loaded() { return 2;} +_LT_EOF + echo "$LTCC $LTCFLAGS -c -o conftest.o conftest.c" >&AS_MESSAGE_LOG_FD + $LTCC $LTCFLAGS -c -o conftest.o conftest.c 2>&AS_MESSAGE_LOG_FD + echo "$AR cru libconftest.a conftest.o" >&AS_MESSAGE_LOG_FD + $AR cru libconftest.a conftest.o 2>&AS_MESSAGE_LOG_FD + echo "$RANLIB libconftest.a" >&AS_MESSAGE_LOG_FD + $RANLIB libconftest.a 2>&AS_MESSAGE_LOG_FD + cat > conftest.c << _LT_EOF +int main() { return 0;} +_LT_EOF + echo "$LTCC $LTCFLAGS $LDFLAGS -o conftest conftest.c -Wl,-force_load,./libconftest.a" >&AS_MESSAGE_LOG_FD + $LTCC $LTCFLAGS $LDFLAGS -o conftest conftest.c -Wl,-force_load,./libconftest.a 2>conftest.err + _lt_result=$? + if test -s conftest.err && $GREP force_load conftest.err; then + cat conftest.err >&AS_MESSAGE_LOG_FD + elif test -f conftest && test $_lt_result -eq 0 && $GREP forced_load conftest >/dev/null 2>&1 ; then + lt_cv_ld_force_load=yes + else + cat conftest.err >&AS_MESSAGE_LOG_FD + fi + rm -f conftest.err libconftest.a conftest conftest.c + rm -rf conftest.dSYM + ]) case $host_os in rhapsody* | darwin1.[[012]]) _lt_dar_allow_undefined='${wl}-undefined ${wl}suppress' ;; darwin1.*) _lt_dar_allow_undefined='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' ;; - darwin*) # darwin 5.x on + darwin*) # darwin 5.x on # if running on 10.5 or later, the deployment target defaults # to the OS version, if on x86, and 10.4, the deployment - # target defaults to 10.4. Don't you love it? + # target defaults to 10.4. Don't you love it? case ${MACOSX_DEPLOYMENT_TARGET-10.0},$host in 10.0,*86*-darwin8*|10.0,*-darwin[[91]]*) _lt_dar_allow_undefined='${wl}-undefined ${wl}dynamic_lookup' ;; @@ -967,7 +1067,7 @@ m4_defun_once([_LT_REQUIRED_DARWIN_CHECKS],[ else _lt_dar_export_syms='~$NMEDIT -s $output_objdir/${libname}-symbols.expsym ${lib}' fi - if test "$DSYMUTIL" != ":"; then + if test "$DSYMUTIL" != ":" && test "$lt_cv_ld_force_load" = "no"; then _lt_dsymutil='~$DSYMUTIL $lib || :' else _lt_dsymutil= @@ -977,8 +1077,8 @@ m4_defun_once([_LT_REQUIRED_DARWIN_CHECKS],[ ]) -# _LT_DARWIN_LINKER_FEATURES -# -------------------------- +# _LT_DARWIN_LINKER_FEATURES([TAG]) +# --------------------------------- # Checks for linker and compiler features on darwin m4_defun([_LT_DARWIN_LINKER_FEATURES], [ @@ -987,11 +1087,21 @@ m4_defun([_LT_DARWIN_LINKER_FEATURES], _LT_TAGVAR(hardcode_direct, $1)=no _LT_TAGVAR(hardcode_automatic, $1)=yes _LT_TAGVAR(hardcode_shlibpath_var, $1)=unsupported - _LT_TAGVAR(whole_archive_flag_spec, $1)='' + if test "$lt_cv_ld_force_load" = "yes"; then + _LT_TAGVAR(whole_archive_flag_spec, $1)='`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience ${wl}-force_load,$conv\"; done; func_echo_all \"$new_convenience\"`' + m4_case([$1], [F77], [_LT_TAGVAR(compiler_needs_object, $1)=yes], + [FC], [_LT_TAGVAR(compiler_needs_object, $1)=yes]) + else + _LT_TAGVAR(whole_archive_flag_spec, $1)='' + fi _LT_TAGVAR(link_all_deplibs, $1)=yes _LT_TAGVAR(allow_undefined_flag, $1)="$_lt_dar_allow_undefined" - if test "$GCC" = "yes"; then - output_verbose_link_cmd=echo + case $cc_basename in + ifort*) _lt_dar_can_shared=yes ;; + *) _lt_dar_can_shared=$GCC ;; + esac + if test "$_lt_dar_can_shared" = "yes"; then + output_verbose_link_cmd=func_echo_all _LT_TAGVAR(archive_cmds, $1)="\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod${_lt_dsymutil}" _LT_TAGVAR(module_cmds, $1)="\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dsymutil}" _LT_TAGVAR(archive_expsym_cmds, $1)="sed 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring ${_lt_dar_single_mod}${_lt_dar_export_syms}${_lt_dsymutil}" @@ -1007,203 +1117,142 @@ m4_defun([_LT_DARWIN_LINKER_FEATURES], fi ]) -# _LT_SYS_MODULE_PATH_AIX -# ----------------------- +# _LT_SYS_MODULE_PATH_AIX([TAGNAME]) +# ---------------------------------- # Links a minimal program and checks the executable # for the system default hardcoded library path. In most cases, # this is /usr/lib:/lib, but when the MPI compilers are used # the location of the communication and MPI libs are included too. # If we don't find anything, use the default library path according # to the aix ld manual. +# Store the results from the different compilers for each TAGNAME. +# Allow to override them for all tags through lt_cv_aix_libpath. m4_defun([_LT_SYS_MODULE_PATH_AIX], [m4_require([_LT_DECL_SED])dnl -AC_LINK_IFELSE(AC_LANG_PROGRAM,[ -lt_aix_libpath_sed=' - /Import File Strings/,/^$/ { - /^0/ { - s/^0 *\(.*\)$/\1/ - p - } - }' -aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` -# Check for a 64-bit object if we didn't find anything. -if test -z "$aix_libpath"; then - aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` -fi],[]) -if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi +if test "${lt_cv_aix_libpath+set}" = set; then + aix_libpath=$lt_cv_aix_libpath +else + AC_CACHE_VAL([_LT_TAGVAR([lt_cv_aix_libpath_], [$1])], + [AC_LINK_IFELSE([AC_LANG_PROGRAM],[ + lt_aix_libpath_sed='[ + /Import File Strings/,/^$/ { + /^0/ { + s/^0 *\([^ ]*\) *$/\1/ + p + } + }]' + _LT_TAGVAR([lt_cv_aix_libpath_], [$1])=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` + # Check for a 64-bit object if we didn't find anything. + if test -z "$_LT_TAGVAR([lt_cv_aix_libpath_], [$1])"; then + _LT_TAGVAR([lt_cv_aix_libpath_], [$1])=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` + fi],[]) + if test -z "$_LT_TAGVAR([lt_cv_aix_libpath_], [$1])"; then + _LT_TAGVAR([lt_cv_aix_libpath_], [$1])="/usr/lib:/lib" + fi + ]) + aix_libpath=$_LT_TAGVAR([lt_cv_aix_libpath_], [$1]) +fi ])# _LT_SYS_MODULE_PATH_AIX # _LT_SHELL_INIT(ARG) # ------------------- m4_define([_LT_SHELL_INIT], -[ifdef([AC_DIVERSION_NOTICE], - [AC_DIVERT_PUSH(AC_DIVERSION_NOTICE)], - [AC_DIVERT_PUSH(NOTICE)]) -$1 -AC_DIVERT_POP -])# _LT_SHELL_INIT +[m4_divert_text([M4SH-INIT], [$1 +])])# _LT_SHELL_INIT + # _LT_PROG_ECHO_BACKSLASH # ----------------------- -# Add some code to the start of the generated configure script which -# will find an echo command which doesn't interpret backslashes. +# Find how we can fake an echo command that does not interpret backslash. +# In particular, with Autoconf 2.60 or later we add some code to the start +# of the generated configure script which will find a shell with a builtin +# printf (which we can use as an echo command). m4_defun([_LT_PROG_ECHO_BACKSLASH], -[_LT_SHELL_INIT([ -# Check that we are running under the correct shell. -SHELL=${CONFIG_SHELL-/bin/sh} - -case X$lt_ECHO in -X*--fallback-echo) - # Remove one level of quotation (which was required for Make). - ECHO=`echo "$lt_ECHO" | sed 's,\\\\\[$]\\[$]0,'[$]0','` - ;; -esac - -ECHO=${lt_ECHO-echo} -if test "X[$]1" = X--no-reexec; then - # Discard the --no-reexec flag, and continue. - shift -elif test "X[$]1" = X--fallback-echo; then - # Avoid inline document here, it may be left over - : -elif test "X`{ $ECHO '\t'; } 2>/dev/null`" = 'X\t' ; then - # Yippee, $ECHO works! - : +[ECHO='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' +ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO +ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO$ECHO + +AC_MSG_CHECKING([how to print strings]) +# Test print first, because it will be a builtin if present. +if test "X`( print -r -- -n ) 2>/dev/null`" = X-n && \ + test "X`print -r -- $ECHO 2>/dev/null`" = "X$ECHO"; then + ECHO='print -r --' +elif test "X`printf %s $ECHO 2>/dev/null`" = "X$ECHO"; then + ECHO='printf %s\n' else - # Restart under the correct shell. - exec $SHELL "[$]0" --no-reexec ${1+"[$]@"} -fi - -if test "X[$]1" = X--fallback-echo; then - # used as fallback echo - shift - cat <<_LT_EOF -[$]* -_LT_EOF - exit 0 + # Use this function as a fallback that always works. + func_fallback_echo () + { + eval 'cat <<_LTECHO_EOF +$[]1 +_LTECHO_EOF' + } + ECHO='func_fallback_echo' fi -# The HP-UX ksh and POSIX shell print the target directory to stdout -# if CDPATH is set. -(unset CDPATH) >/dev/null 2>&1 && unset CDPATH - -if test -z "$lt_ECHO"; then - if test "X${echo_test_string+set}" != Xset; then - # find a string as large as possible, as long as the shell can cope with it - for cmd in 'sed 50q "[$]0"' 'sed 20q "[$]0"' 'sed 10q "[$]0"' 'sed 2q "[$]0"' 'echo test'; do - # expected sizes: less than 2Kb, 1Kb, 512 bytes, 16 bytes, ... - if { echo_test_string=`eval $cmd`; } 2>/dev/null && - { test "X$echo_test_string" = "X$echo_test_string"; } 2>/dev/null - then - break - fi - done - fi - - if test "X`{ $ECHO '\t'; } 2>/dev/null`" = 'X\t' && - echo_testing_string=`{ $ECHO "$echo_test_string"; } 2>/dev/null` && - test "X$echo_testing_string" = "X$echo_test_string"; then - : - else - # The Solaris, AIX, and Digital Unix default echo programs unquote - # backslashes. This makes it impossible to quote backslashes using - # echo "$something" | sed 's/\\/\\\\/g' - # - # So, first we look for a working echo in the user's PATH. - - lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR - for dir in $PATH /usr/ucb; do - IFS="$lt_save_ifs" - if (test -f $dir/echo || test -f $dir/echo$ac_exeext) && - test "X`($dir/echo '\t') 2>/dev/null`" = 'X\t' && - echo_testing_string=`($dir/echo "$echo_test_string") 2>/dev/null` && - test "X$echo_testing_string" = "X$echo_test_string"; then - ECHO="$dir/echo" - break - fi - done - IFS="$lt_save_ifs" - - if test "X$ECHO" = Xecho; then - # We didn't find a better echo, so look for alternatives. - if test "X`{ print -r '\t'; } 2>/dev/null`" = 'X\t' && - echo_testing_string=`{ print -r "$echo_test_string"; } 2>/dev/null` && - test "X$echo_testing_string" = "X$echo_test_string"; then - # This shell has a builtin print -r that does the trick. - ECHO='print -r' - elif { test -f /bin/ksh || test -f /bin/ksh$ac_exeext; } && - test "X$CONFIG_SHELL" != X/bin/ksh; then - # If we have ksh, try running configure again with it. - ORIGINAL_CONFIG_SHELL=${CONFIG_SHELL-/bin/sh} - export ORIGINAL_CONFIG_SHELL - CONFIG_SHELL=/bin/ksh - export CONFIG_SHELL - exec $CONFIG_SHELL "[$]0" --no-reexec ${1+"[$]@"} - else - # Try using printf. - ECHO='printf %s\n' - if test "X`{ $ECHO '\t'; } 2>/dev/null`" = 'X\t' && - echo_testing_string=`{ $ECHO "$echo_test_string"; } 2>/dev/null` && - test "X$echo_testing_string" = "X$echo_test_string"; then - # Cool, printf works - : - elif echo_testing_string=`($ORIGINAL_CONFIG_SHELL "[$]0" --fallback-echo '\t') 2>/dev/null` && - test "X$echo_testing_string" = 'X\t' && - echo_testing_string=`($ORIGINAL_CONFIG_SHELL "[$]0" --fallback-echo "$echo_test_string") 2>/dev/null` && - test "X$echo_testing_string" = "X$echo_test_string"; then - CONFIG_SHELL=$ORIGINAL_CONFIG_SHELL - export CONFIG_SHELL - SHELL="$CONFIG_SHELL" - export SHELL - ECHO="$CONFIG_SHELL [$]0 --fallback-echo" - elif echo_testing_string=`($CONFIG_SHELL "[$]0" --fallback-echo '\t') 2>/dev/null` && - test "X$echo_testing_string" = 'X\t' && - echo_testing_string=`($CONFIG_SHELL "[$]0" --fallback-echo "$echo_test_string") 2>/dev/null` && - test "X$echo_testing_string" = "X$echo_test_string"; then - ECHO="$CONFIG_SHELL [$]0 --fallback-echo" - else - # maybe with a smaller string... - prev=: - - for cmd in 'echo test' 'sed 2q "[$]0"' 'sed 10q "[$]0"' 'sed 20q "[$]0"' 'sed 50q "[$]0"'; do - if { test "X$echo_test_string" = "X`eval $cmd`"; } 2>/dev/null - then - break - fi - prev="$cmd" - done +# func_echo_all arg... +# Invoke $ECHO with all args, space-separated. +func_echo_all () +{ + $ECHO "$*" +} - if test "$prev" != 'sed 50q "[$]0"'; then - echo_test_string=`eval $prev` - export echo_test_string - exec ${ORIGINAL_CONFIG_SHELL-${CONFIG_SHELL-/bin/sh}} "[$]0" ${1+"[$]@"} - else - # Oops. We lost completely, so just stick with echo. - ECHO=echo - fi - fi - fi - fi - fi -fi +case "$ECHO" in + printf*) AC_MSG_RESULT([printf]) ;; + print*) AC_MSG_RESULT([print -r]) ;; + *) AC_MSG_RESULT([cat]) ;; +esac -# Copy echo and quote the copy suitably for passing to libtool from -# the Makefile, instead of quoting the original, which is used later. -lt_ECHO=$ECHO -if test "X$lt_ECHO" = "X$CONFIG_SHELL [$]0 --fallback-echo"; then - lt_ECHO="$CONFIG_SHELL \\\$\[$]0 --fallback-echo" -fi +m4_ifdef([_AS_DETECT_SUGGESTED], +[_AS_DETECT_SUGGESTED([ + test -n "${ZSH_VERSION+set}${BASH_VERSION+set}" || ( + ECHO='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' + ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO + ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO$ECHO + PATH=/empty FPATH=/empty; export PATH FPATH + test "X`printf %s $ECHO`" = "X$ECHO" \ + || test "X`print -r -- $ECHO`" = "X$ECHO" )])]) -AC_SUBST(lt_ECHO) -]) _LT_DECL([], [SHELL], [1], [Shell to use when invoking shell scripts]) -_LT_DECL([], [ECHO], [1], - [An echo program that does not interpret backslashes]) +_LT_DECL([], [ECHO], [1], [An echo program that protects backslashes]) ])# _LT_PROG_ECHO_BACKSLASH +# _LT_WITH_SYSROOT +# ---------------- +AC_DEFUN([_LT_WITH_SYSROOT], +[AC_MSG_CHECKING([for sysroot]) +AC_ARG_WITH([sysroot], +[ --with-sysroot[=DIR] Search for dependent libraries within DIR + (or the compiler's sysroot if not specified).], +[], [with_sysroot=no]) + +dnl lt_sysroot will always be passed unquoted. We quote it here +dnl in case the user passed a directory name. +lt_sysroot= +case ${with_sysroot} in #( + yes) + if test "$GCC" = yes; then + lt_sysroot=`$CC --print-sysroot 2>/dev/null` + fi + ;; #( + /*) + lt_sysroot=`echo "$with_sysroot" | sed -e "$sed_quote_subst"` + ;; #( + no|'') + ;; #( + *) + AC_MSG_RESULT([${with_sysroot}]) + AC_MSG_ERROR([The sysroot must be an absolute path.]) + ;; +esac + + AC_MSG_RESULT([${lt_sysroot:-no}]) +_LT_DECL([], [lt_sysroot], [0], [The root where to search for ]dnl +[dependent libraries, and in which our libraries should be installed.])]) + # _LT_ENABLE_LOCK # --------------- m4_defun([_LT_ENABLE_LOCK], @@ -1232,7 +1281,7 @@ ia64-*-hpux*) ;; *-*-irix6*) # Find out which ABI we are using. - echo '[#]line __oline__ "configure"' > conftest.$ac_ext + echo '[#]line '$LINENO' "configure"' > conftest.$ac_ext if AC_TRY_EVAL(ac_compile); then if test "$lt_cv_prog_gnu_ld" = yes; then case `/usr/bin/file conftest.$ac_objext` in @@ -1325,14 +1374,27 @@ s390*-*linux*|s390*-*tpf*|sparc*-*linux*) CFLAGS="$SAVE_CFLAGS" fi ;; -sparc*-*solaris*) +*-*solaris*) # Find out which ABI we are using. echo 'int i;' > conftest.$ac_ext if AC_TRY_EVAL(ac_compile); then case `/usr/bin/file conftest.o` in *64-bit*) case $lt_cv_prog_gnu_ld in - yes*) LD="${LD-ld} -m elf64_sparc" ;; + yes*) + case $host in + i?86-*-solaris*) + LD="${LD-ld} -m elf_x86_64" + ;; + sparc*-*-solaris*) + LD="${LD-ld} -m elf64_sparc" + ;; + esac + # GNU ld 2.21 introduced _sol2 emulations. Use them if available. + if ${LD-ld} -V | grep _sol2 >/dev/null 2>&1; then + LD="${LD-ld}_sol2" + fi + ;; *) if ${LD-ld} -64 -r -o conftest2.o conftest.o >/dev/null 2>&1; then LD="${LD-ld} -64" @@ -1350,14 +1412,47 @@ need_locks="$enable_libtool_lock" ])# _LT_ENABLE_LOCK +# _LT_PROG_AR +# ----------- +m4_defun([_LT_PROG_AR], +[AC_CHECK_TOOLS(AR, [ar], false) +: ${AR=ar} +: ${AR_FLAGS=cru} +_LT_DECL([], [AR], [1], [The archiver]) +_LT_DECL([], [AR_FLAGS], [1], [Flags to create an archive]) + +AC_CACHE_CHECK([for archiver @FILE support], [lt_cv_ar_at_file], + [lt_cv_ar_at_file=no + AC_COMPILE_IFELSE([AC_LANG_PROGRAM], + [echo conftest.$ac_objext > conftest.lst + lt_ar_try='$AR $AR_FLAGS libconftest.a @conftest.lst >&AS_MESSAGE_LOG_FD' + AC_TRY_EVAL([lt_ar_try]) + if test "$ac_status" -eq 0; then + # Ensure the archiver fails upon bogus file names. + rm -f conftest.$ac_objext libconftest.a + AC_TRY_EVAL([lt_ar_try]) + if test "$ac_status" -ne 0; then + lt_cv_ar_at_file=@ + fi + fi + rm -f conftest.* libconftest.a + ]) + ]) + +if test "x$lt_cv_ar_at_file" = xno; then + archiver_list_spec= +else + archiver_list_spec=$lt_cv_ar_at_file +fi +_LT_DECL([], [archiver_list_spec], [1], + [How to feed a file listing to the archiver]) +])# _LT_PROG_AR + + # _LT_CMD_OLD_ARCHIVE # ------------------- m4_defun([_LT_CMD_OLD_ARCHIVE], -[AC_CHECK_TOOL(AR, ar, false) -test -z "$AR" && AR=ar -test -z "$AR_FLAGS" && AR_FLAGS=cru -_LT_DECL([], [AR], [1], [The archiver]) -_LT_DECL([], [AR_FLAGS], [1]) +[_LT_PROG_AR AC_CHECK_TOOL(STRIP, strip, :) test -z "$STRIP" && STRIP=: @@ -1376,18 +1471,27 @@ old_postuninstall_cmds= if test -n "$RANLIB"; then case $host_os in openbsd*) - old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB -t \$oldlib" + old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB -t \$tool_oldlib" ;; *) - old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB \$oldlib" + old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB \$tool_oldlib" ;; esac - old_archive_cmds="$old_archive_cmds~\$RANLIB \$oldlib" + old_archive_cmds="$old_archive_cmds~\$RANLIB \$tool_oldlib" fi + +case $host_os in + darwin*) + lock_old_archive_extraction=yes ;; + *) + lock_old_archive_extraction=no ;; +esac _LT_DECL([], [old_postinstall_cmds], [2]) _LT_DECL([], [old_postuninstall_cmds], [2]) _LT_TAGDECL([], [old_archive_cmds], [2], [Commands used to build an old-style archive]) +_LT_DECL([], [lock_old_archive_extraction], [0], + [Whether to use a lock for old archive extraction]) ])# _LT_CMD_OLD_ARCHIVE @@ -1412,15 +1516,15 @@ AC_CACHE_CHECK([$1], [$2], -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [[^ ]]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` - (eval echo "\"\$as_me:__oline__: $lt_compile\"" >&AS_MESSAGE_LOG_FD) + (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&AS_MESSAGE_LOG_FD) (eval "$lt_compile" 2>conftest.err) ac_status=$? cat conftest.err >&AS_MESSAGE_LOG_FD - echo "$as_me:__oline__: \$? = $ac_status" >&AS_MESSAGE_LOG_FD + echo "$as_me:$LINENO: \$? = $ac_status" >&AS_MESSAGE_LOG_FD if (exit $ac_status) && test -s "$ac_outfile"; then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings other than the usual output. - $ECHO "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' >conftest.exp + $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' >conftest.exp $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then $2=yes @@ -1460,7 +1564,7 @@ AC_CACHE_CHECK([$1], [$2], if test -s conftest.err; then # Append any errors to the config.log. cat conftest.err 1>&AS_MESSAGE_LOG_FD - $ECHO "X$_lt_linker_boilerplate" | $Xsed -e '/^$/d' > conftest.exp + $ECHO "$_lt_linker_boilerplate" | $SED '/^$/d' > conftest.exp $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 if diff conftest.exp conftest.er2 >/dev/null; then $2=yes @@ -1512,7 +1616,7 @@ AC_CACHE_VAL([lt_cv_sys_max_cmd_len], [dnl lt_cv_sys_max_cmd_len=-1; ;; - cygwin* | mingw*) + cygwin* | mingw* | cegcc*) # On Win9x/ME, this test blows up -- it succeeds, but takes # about 5 minutes as the teststring grows exponentially. # Worse, since 9x/ME are not pre-emptively multitasking, @@ -1523,6 +1627,11 @@ AC_CACHE_VAL([lt_cv_sys_max_cmd_len], [dnl lt_cv_sys_max_cmd_len=8192; ;; + mint*) + # On MiNT this can take a long time and run out of memory. + lt_cv_sys_max_cmd_len=8192; + ;; + amigaos*) # On AmigaOS with pdksh, this test takes hours, literally. # So we just punt and use a minimum line length of 8192. @@ -1548,6 +1657,11 @@ AC_CACHE_VAL([lt_cv_sys_max_cmd_len], [dnl lt_cv_sys_max_cmd_len=196608 ;; + os2*) + # The test takes a long time on OS/2. + lt_cv_sys_max_cmd_len=8192 + ;; + osf*) # Dr. Hans Ekkehard Plesser reports seeing a kernel panic running configure # due to this test when exec_disable_arg_limit is 1 on Tru64. It is not @@ -1587,8 +1701,8 @@ AC_CACHE_VAL([lt_cv_sys_max_cmd_len], [dnl # If test is not a shell built-in, we'll probably end up computing a # maximum length that is only half of the actual maximum length, but # we can't tell. - while { test "X"`$SHELL [$]0 --fallback-echo "X$teststring$teststring" 2>/dev/null` \ - = "XX$teststring$teststring"; } >/dev/null 2>&1 && + while { test "X"`env echo "$teststring$teststring" 2>/dev/null` \ + = "X$teststring$teststring"; } >/dev/null 2>&1 && test $i != 17 # 1/2 MB should be enough do i=`expr $i + 1` @@ -1639,7 +1753,7 @@ else lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 lt_status=$lt_dlunknown cat > conftest.$ac_ext <<_LT_EOF -[#line __oline__ "configure" +[#line $LINENO "configure" #include "confdefs.h" #if HAVE_DLFCN_H @@ -1680,11 +1794,13 @@ else # endif #endif -#ifdef __cplusplus -extern "C" void exit (int); +/* When -fvisbility=hidden is used, assume the code has been annotated + correspondingly for the symbols needed. */ +#if defined(__GNUC__) && (((__GNUC__ == 3) && (__GNUC_MINOR__ >= 3)) || (__GNUC__ > 3)) +int fnord () __attribute__((visibility("default"))); #endif -void fnord() { int i=42;} +int fnord () { return 42; } int main () { void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW); @@ -1693,13 +1809,17 @@ int main () if (self) { if (dlsym (self,"fnord")) status = $lt_dlno_uscore; - else if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore; + else + { + if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore; + else puts (dlerror ()); + } /* dlclose (self); */ } else puts (dlerror ()); - exit (status); + return status; }] _LT_EOF if AC_TRY_EVAL(ac_link) && test -s conftest${ac_exeext} 2>/dev/null; then @@ -1738,7 +1858,7 @@ else lt_cv_dlopen_self=yes ;; - mingw* | pw32*) + mingw* | pw32* | cegcc*) lt_cv_dlopen="LoadLibrary" lt_cv_dlopen_libs= ;; @@ -1869,16 +1989,16 @@ AC_CACHE_CHECK([if $compiler supports -c -o file.$ac_objext], -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [[^ ]]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` - (eval echo "\"\$as_me:__oline__: $lt_compile\"" >&AS_MESSAGE_LOG_FD) + (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&AS_MESSAGE_LOG_FD) (eval "$lt_compile" 2>out/conftest.err) ac_status=$? cat out/conftest.err >&AS_MESSAGE_LOG_FD - echo "$as_me:__oline__: \$? = $ac_status" >&AS_MESSAGE_LOG_FD + echo "$as_me:$LINENO: \$? = $ac_status" >&AS_MESSAGE_LOG_FD if (exit $ac_status) && test -s out/conftest2.$ac_objext then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings - $ECHO "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' > out/conftest.exp + $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' > out/conftest.exp $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2 if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then _LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)=yes @@ -2035,7 +2155,9 @@ m4_defun([_LT_SYS_DYNAMIC_LINKER], [AC_REQUIRE([AC_CANONICAL_HOST])dnl m4_require([_LT_DECL_EGREP])dnl m4_require([_LT_FILEUTILS_DEFAULTS])dnl +m4_require([_LT_DECL_OBJDUMP])dnl m4_require([_LT_DECL_SED])dnl +m4_require([_LT_CHECK_SHELL_FEATURES])dnl AC_MSG_CHECKING([dynamic linker characteristics]) m4_if([$1], [], [ @@ -2044,16 +2166,23 @@ if test "$GCC" = yes; then darwin*) lt_awk_arg="/^libraries:/,/LR/" ;; *) lt_awk_arg="/^libraries:/" ;; esac - lt_search_path_spec=`$CC -print-search-dirs | awk $lt_awk_arg | $SED -e "s/^libraries://" -e "s,=/,/,g"` - if $ECHO "$lt_search_path_spec" | $GREP ';' >/dev/null ; then + case $host_os in + mingw* | cegcc*) lt_sed_strip_eq="s,=\([[A-Za-z]]:\),\1,g" ;; + *) lt_sed_strip_eq="s,=/,/,g" ;; + esac + lt_search_path_spec=`$CC -print-search-dirs | awk $lt_awk_arg | $SED -e "s/^libraries://" -e $lt_sed_strip_eq` + case $lt_search_path_spec in + *\;*) # if the path contains ";" then we assume it to be the separator # otherwise default to the standard path separator (i.e. ":") - it is # assumed that no part of a normal pathname contains ";" but that should # okay in the real world where ";" in dirpaths is itself problematic. - lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED -e 's/;/ /g'` - else - lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` - fi + lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED 's/;/ /g'` + ;; + *) + lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED "s/$PATH_SEPARATOR/ /g"` + ;; + esac # Ok, now we have the path, separated by spaces, we can step through it # and add multilib dir if necessary. lt_tmp_lt_search_path_spec= @@ -2066,7 +2195,7 @@ if test "$GCC" = yes; then lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path" fi done - lt_search_path_spec=`$ECHO $lt_tmp_lt_search_path_spec | awk ' + lt_search_path_spec=`$ECHO "$lt_tmp_lt_search_path_spec" | awk ' BEGIN {RS=" "; FS="/|\n";} { lt_foo=""; lt_count=0; @@ -2086,7 +2215,13 @@ BEGIN {RS=" "; FS="/|\n";} { if (lt_foo != "") { lt_freq[[lt_foo]]++; } if (lt_freq[[lt_foo]] == 1) { print lt_foo; } }'` - sys_lib_search_path_spec=`$ECHO $lt_search_path_spec` + # AWK program above erroneously prepends '/' to C:/dos/paths + # for these hosts. + case $host_os in + mingw* | cegcc*) lt_search_path_spec=`$ECHO "$lt_search_path_spec" |\ + $SED 's,/\([[A-Za-z]]:\),\1,g'` ;; + esac + sys_lib_search_path_spec=`$ECHO "$lt_search_path_spec" | $lt_NL2SP` else sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib" fi]) @@ -2112,7 +2247,7 @@ need_version=unknown case $host_os in aix3*) - version_type=linux + version_type=linux # correct to gnu/linux during the next big refactor library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a' shlibpath_var=LIBPATH @@ -2121,7 +2256,7 @@ aix3*) ;; aix[[4-9]]*) - version_type=linux + version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no hardcode_into_libs=yes @@ -2174,7 +2309,7 @@ amigaos*) m68k) library_names_spec='$libname.ixlibrary $libname.a' # Create ${libname}_ixlibrary.a entries in /sys/libs. - finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`$ECHO "X$lib" | $Xsed -e '\''s%^.*/\([[^/]]*\)\.ixlibrary$%\1%'\''`; test $RM /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done' + finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`func_echo_all "$lib" | $SED '\''s%^.*/\([[^/]]*\)\.ixlibrary$%\1%'\''`; test $RM /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done' ;; esac ;; @@ -2186,7 +2321,7 @@ beos*) ;; bsdi[[45]]*) - version_type=linux + version_type=linux # correct to gnu/linux during the next big refactor need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' @@ -2199,14 +2334,15 @@ bsdi[[45]]*) # libtool to hard-code these into programs ;; -cygwin* | mingw* | pw32*) +cygwin* | mingw* | pw32* | cegcc*) version_type=windows shrext_cmds=".dll" need_version=no need_lib_prefix=no - case $GCC,$host_os in - yes,cygwin* | yes,mingw* | yes,pw32*) + case $GCC,$cc_basename in + yes,*) + # gcc library_names_spec='$libname.dll.a' # DLL is installed to $(libdir)/../bin by postinstall_cmds postinstall_cmds='base_file=`basename \${file}`~ @@ -2227,36 +2363,83 @@ cygwin* | mingw* | pw32*) cygwin*) # Cygwin DLLs use 'cyg' prefix rather than 'lib' soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}' - sys_lib_search_path_spec="/usr/lib /lib/w32api /lib /usr/local/lib" +m4_if([$1], [],[ + sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/lib/w32api"]) ;; - mingw*) + mingw* | cegcc*) # MinGW DLLs use traditional 'lib' prefix soname_spec='${libname}`echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}' - sys_lib_search_path_spec=`$CC -print-search-dirs | $GREP "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"` - if $ECHO "$sys_lib_search_path_spec" | [$GREP ';[c-zC-Z]:/' >/dev/null]; then - # It is most probably a Windows format PATH printed by - # mingw gcc, but we are running on Cygwin. Gcc prints its search - # path with ; separators, and with drive letters. We can handle the - # drive letters (cygwin fileutils understands them), so leave them, - # especially as we might pass files found there to a mingw objdump, - # which wouldn't understand a cygwinified path. Ahh. - sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'` - else - sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` - fi ;; pw32*) # pw32 DLLs use 'pw' prefix rather than 'lib' library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}' ;; esac + dynamic_linker='Win32 ld.exe' + ;; + + *,cl*) + # Native MSVC + libname_spec='$name' + soname_spec='${libname}`echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}' + library_names_spec='${libname}.dll.lib' + + case $build_os in + mingw*) + sys_lib_search_path_spec= + lt_save_ifs=$IFS + IFS=';' + for lt_path in $LIB + do + IFS=$lt_save_ifs + # Let DOS variable expansion print the short 8.3 style file name. + lt_path=`cd "$lt_path" 2>/dev/null && cmd //C "for %i in (".") do @echo %~si"` + sys_lib_search_path_spec="$sys_lib_search_path_spec $lt_path" + done + IFS=$lt_save_ifs + # Convert to MSYS style. + sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | sed -e 's|\\\\|/|g' -e 's| \\([[a-zA-Z]]\\):| /\\1|g' -e 's|^ ||'` + ;; + cygwin*) + # Convert to unix form, then to dos form, then back to unix form + # but this time dos style (no spaces!) so that the unix form looks + # like /cygdrive/c/PROGRA~1:/cygdr... + sys_lib_search_path_spec=`cygpath --path --unix "$LIB"` + sys_lib_search_path_spec=`cygpath --path --dos "$sys_lib_search_path_spec" 2>/dev/null` + sys_lib_search_path_spec=`cygpath --path --unix "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` + ;; + *) + sys_lib_search_path_spec="$LIB" + if $ECHO "$sys_lib_search_path_spec" | [$GREP ';[c-zC-Z]:/' >/dev/null]; then + # It is most probably a Windows format PATH. + sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'` + else + sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` + fi + # FIXME: find the short name or the path components, as spaces are + # common. (e.g. "Program Files" -> "PROGRA~1") + ;; + esac + + # DLL is installed to $(libdir)/../bin by postinstall_cmds + postinstall_cmds='base_file=`basename \${file}`~ + dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i; echo \$dlname'\''`~ + dldir=$destdir/`dirname \$dlpath`~ + test -d \$dldir || mkdir -p \$dldir~ + $install_prog $dir/$dlname \$dldir/$dlname' + postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ + dlpath=$dir/\$dldll~ + $RM \$dlpath' + shlibpath_overrides_runpath=yes + dynamic_linker='Win32 link.exe' ;; *) + # Assume MSVC wrapper library_names_spec='${libname}`echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext} $libname.lib' + dynamic_linker='Win32 ld.exe' ;; esac - dynamic_linker='Win32 ld.exe' # FIXME: first we should search . and the directory the executable is in shlibpath_var=PATH ;; @@ -2277,7 +2460,7 @@ m4_if([$1], [],[ ;; dgux*) - version_type=linux + version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname$shared_ext' @@ -2285,10 +2468,6 @@ dgux*) shlibpath_var=LD_LIBRARY_PATH ;; -freebsd1*) - dynamic_linker=no - ;; - freebsd* | dragonfly*) # DragonFly does not have aout. When/if they implement a new # versioning mechanism, adjust this. @@ -2296,7 +2475,7 @@ freebsd* | dragonfly*) objformat=`/usr/bin/objformat` else case $host_os in - freebsd[[123]]*) objformat=aout ;; + freebsd[[23]].*) objformat=aout ;; *) objformat=elf ;; esac fi @@ -2314,7 +2493,7 @@ freebsd* | dragonfly*) esac shlibpath_var=LD_LIBRARY_PATH case $host_os in - freebsd2*) + freebsd2.*) shlibpath_overrides_runpath=yes ;; freebsd3.[[01]]* | freebsdelf3.[[01]]*) @@ -2334,12 +2513,26 @@ freebsd* | dragonfly*) ;; gnu*) - version_type=linux + version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + ;; + +haiku*) + version_type=linux # correct to gnu/linux during the next big refactor + need_lib_prefix=no + need_version=no + dynamic_linker="$host_os runtime_loader" + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LIBRARY_PATH + shlibpath_overrides_runpath=yes + sys_lib_dlsearch_path_spec='/boot/home/config/lib /boot/common/lib /boot/system/lib' hardcode_into_libs=yes ;; @@ -2385,12 +2578,14 @@ hpux9* | hpux10* | hpux11*) soname_spec='${libname}${release}${shared_ext}$major' ;; esac - # HP-UX runs *really* slowly unless shared libraries are mode 555. + # HP-UX runs *really* slowly unless shared libraries are mode 555, ... postinstall_cmds='chmod 555 $lib' + # or fails outright, so override atomically: + install_override_mode=555 ;; interix[[3-9]]*) - version_type=linux + version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' @@ -2406,7 +2601,7 @@ irix5* | irix6* | nonstopux*) nonstopux*) version_type=nonstopux ;; *) if test "$lt_cv_prog_gnu_ld" = yes; then - version_type=linux + version_type=linux # correct to gnu/linux during the next big refactor else version_type=irix fi ;; @@ -2443,9 +2638,9 @@ linux*oldld* | linux*aout* | linux*coff*) dynamic_linker=no ;; -# This must be Linux ELF. -linux* | k*bsd*-gnu) - version_type=linux +# This must be glibc/ELF. +linux* | k*bsd*-gnu | kopensolaris*-gnu) + version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' @@ -2453,16 +2648,21 @@ linux* | k*bsd*-gnu) finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no + # Some binutils ld are patched to set DT_RUNPATH - save_LDFLAGS=$LDFLAGS - save_libdir=$libdir - eval "libdir=/foo; wl=\"$_LT_TAGVAR(lt_prog_compiler_wl, $1)\"; \ - LDFLAGS=\"\$LDFLAGS $_LT_TAGVAR(hardcode_libdir_flag_spec, $1)\"" - AC_LINK_IFELSE([AC_LANG_PROGRAM([],[])], - [AS_IF([ ($OBJDUMP -p conftest$ac_exeext) 2>/dev/null | grep "RUNPATH.*$libdir" >/dev/null], - [shlibpath_overrides_runpath=yes])]) - LDFLAGS=$save_LDFLAGS - libdir=$save_libdir + AC_CACHE_VAL([lt_cv_shlibpath_overrides_runpath], + [lt_cv_shlibpath_overrides_runpath=no + save_LDFLAGS=$LDFLAGS + save_libdir=$libdir + eval "libdir=/foo; wl=\"$_LT_TAGVAR(lt_prog_compiler_wl, $1)\"; \ + LDFLAGS=\"\$LDFLAGS $_LT_TAGVAR(hardcode_libdir_flag_spec, $1)\"" + AC_LINK_IFELSE([AC_LANG_PROGRAM([],[])], + [AS_IF([ ($OBJDUMP -p conftest$ac_exeext) 2>/dev/null | grep "RUNPATH.*$libdir" >/dev/null], + [lt_cv_shlibpath_overrides_runpath=yes])]) + LDFLAGS=$save_LDFLAGS + libdir=$save_libdir + ]) + shlibpath_overrides_runpath=$lt_cv_shlibpath_overrides_runpath # This implies no fast_install, which is unacceptable. # Some rework will be needed to allow for fast_install @@ -2471,7 +2671,7 @@ linux* | k*bsd*-gnu) # Append ld.so.conf contents to the search path if test -f /etc/ld.so.conf; then - lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \[$]2)); skip = 1; } { if (!skip) print \[$]0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;/^[ ]*hwcap[ ]/d;s/[:, ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;/^$/d' | tr '\n' ' '` + lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \[$]2)); skip = 1; } { if (!skip) print \[$]0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;/^[ ]*hwcap[ ]/d;s/[:, ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;s/"//g;/^$/d' | tr '\n' ' '` sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra" fi @@ -2484,6 +2684,18 @@ linux* | k*bsd*-gnu) dynamic_linker='GNU/Linux ld.so' ;; +netbsdelf*-gnu) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + dynamic_linker='NetBSD ld.elf_so' + ;; + netbsd*) version_type=sunos need_lib_prefix=no @@ -2503,7 +2715,7 @@ netbsd*) ;; newsos6) - version_type=linux + version_type=linux # correct to gnu/linux during the next big refactor library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes @@ -2572,7 +2784,7 @@ rdos*) ;; solaris*) - version_type=linux + version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' @@ -2597,7 +2809,7 @@ sunos4*) ;; sysv4 | sysv4.3*) - version_type=linux + version_type=linux # correct to gnu/linux during the next big refactor library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH @@ -2621,7 +2833,7 @@ sysv4 | sysv4.3*) sysv4*MP*) if test -d /usr/nec ;then - version_type=linux + version_type=linux # correct to gnu/linux during the next big refactor library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}' soname_spec='$libname${shared_ext}.$major' shlibpath_var=LD_LIBRARY_PATH @@ -2652,17 +2864,17 @@ sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) tpf*) # TPF is a cross-target only. Preferred cross-host = GNU/Linux. - version_type=linux + version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no - library_name_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no hardcode_into_libs=yes ;; uts4*) - version_type=linux + version_type=linux # correct to gnu/linux during the next big refactor library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH @@ -2679,7 +2891,7 @@ variables_saved_for_relink="PATH $shlibpath_var $runpath_var" if test "$GCC" = yes; then variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH" fi - + if test "${lt_cv_sys_lib_search_path_spec+set}" = set; then sys_lib_search_path_spec="$lt_cv_sys_lib_search_path_spec" fi @@ -2704,6 +2916,8 @@ _LT_DECL([], [library_names_spec], [1], The last name is the one that the linker finds with -lNAME]]) _LT_DECL([], [soname_spec], [1], [[The coded name of the library, if different from the real name]]) +_LT_DECL([], [install_override_mode], [1], + [Permission mode override for installation of shared libraries]) _LT_DECL([], [postinstall_cmds], [2], [Command to use after installation of a shared archive]) _LT_DECL([], [postuninstall_cmds], [2], @@ -2816,6 +3030,7 @@ AC_REQUIRE([AC_CANONICAL_HOST])dnl AC_REQUIRE([AC_CANONICAL_BUILD])dnl m4_require([_LT_DECL_SED])dnl m4_require([_LT_DECL_EGREP])dnl +m4_require([_LT_PROG_ECHO_BACKSLASH])dnl AC_ARG_WITH([gnu-ld], [AS_HELP_STRING([--with-gnu-ld], @@ -2937,6 +3152,11 @@ case $reload_flag in esac reload_cmds='$LD$reload_flag -o $output$reload_objs' case $host_os in + cygwin* | mingw* | pw32* | cegcc*) + if test "$GCC" != yes; then + reload_cmds=false + fi + ;; darwin*) if test "$GCC" = yes; then reload_cmds='$LTCC $LTCFLAGS -nostdlib ${wl}-r -o $output$reload_objs' @@ -2945,8 +3165,8 @@ case $host_os in fi ;; esac -_LT_DECL([], [reload_flag], [1], [How to create reloadable object files])dnl -_LT_DECL([], [reload_cmds], [2])dnl +_LT_TAGDECL([], [reload_flag], [1], [How to create reloadable object files])dnl +_LT_TAGDECL([], [reload_cmds], [2])dnl ])# _LT_CMD_RELOAD @@ -2956,6 +3176,7 @@ _LT_DECL([], [reload_cmds], [2])dnl # -- PORTME fill in with the dynamic library characteristics m4_defun([_LT_CHECK_MAGIC_METHOD], [m4_require([_LT_DECL_EGREP]) +m4_require([_LT_DECL_OBJDUMP]) AC_CACHE_CHECK([how to recognize dependent libraries], lt_cv_deplibs_check_method, [lt_cv_file_magic_cmd='$MAGIC_CMD' @@ -2997,15 +3218,23 @@ mingw* | pw32*) # Base MSYS/MinGW do not provide the 'file' command needed by # func_win32_libid shell function, so use a weaker test based on 'objdump', # unless we find 'file', for example because we are cross-compiling. - if ( file / ) >/dev/null 2>&1; then + # func_win32_libid assumes BSD nm, so disallow it if using MS dumpbin. + if ( test "$lt_cv_nm_interface" = "BSD nm" && file / ) >/dev/null 2>&1; then lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL' lt_cv_file_magic_cmd='func_win32_libid' else - lt_cv_deplibs_check_method='file_magic file format pei*-i386(.*architecture: i386)?' + # Keep this pattern in sync with the one in func_win32_libid. + lt_cv_deplibs_check_method='file_magic file format (pei*-i386(.*architecture: i386)?|pe-arm-wince|pe-x86-64)' lt_cv_file_magic_cmd='$OBJDUMP -f' fi ;; +cegcc*) + # use the weaker test based on 'objdump'. See mingw*. + lt_cv_deplibs_check_method='file_magic file format pe-arm-.*little(.*architecture: arm)?' + lt_cv_file_magic_cmd='$OBJDUMP -f' + ;; + darwin* | rhapsody*) lt_cv_deplibs_check_method=pass_all ;; @@ -3030,6 +3259,10 @@ gnu*) lt_cv_deplibs_check_method=pass_all ;; +haiku*) + lt_cv_deplibs_check_method=pass_all + ;; + hpux10.20* | hpux11*) lt_cv_file_magic_cmd=/usr/bin/file case $host_cpu in @@ -3038,11 +3271,11 @@ hpux10.20* | hpux11*) lt_cv_file_magic_test_file=/usr/lib/hpux32/libc.so ;; hppa*64*) - [lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF-[0-9][0-9]) shared object file - PA-RISC [0-9].[0-9]'] + [lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF[ -][0-9][0-9])(-bit)?( [LM]SB)? shared object( file)?[, -]* PA-RISC [0-9]\.[0-9]'] lt_cv_file_magic_test_file=/usr/lib/pa20_64/libc.sl ;; *) - lt_cv_deplibs_check_method='file_magic (s[[0-9]][[0-9]][[0-9]]|PA-RISC[[0-9]].[[0-9]]) shared library' + lt_cv_deplibs_check_method='file_magic (s[[0-9]][[0-9]][[0-9]]|PA-RISC[[0-9]]\.[[0-9]]) shared library' lt_cv_file_magic_test_file=/usr/lib/libc.sl ;; esac @@ -3063,12 +3296,12 @@ irix5* | irix6* | nonstopux*) lt_cv_deplibs_check_method=pass_all ;; -# This must be Linux ELF. -linux* | k*bsd*-gnu) +# This must be glibc/ELF. +linux* | k*bsd*-gnu | kopensolaris*-gnu) lt_cv_deplibs_check_method=pass_all ;; -netbsd*) +netbsd* | netbsdelf*-gnu) if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|_pic\.a)$' else @@ -3142,6 +3375,21 @@ tpf*) ;; esac ]) + +file_magic_glob= +want_nocaseglob=no +if test "$build" = "$host"; then + case $host_os in + mingw* | pw32*) + if ( shopt | grep nocaseglob ) >/dev/null 2>&1; then + want_nocaseglob=yes + else + file_magic_glob=`echo aAbBcCdDeEfFgGhHiIjJkKlLmMnNoOpPqQrRsStTuUvVwWxXyYzZ | $SED -e "s/\(..\)/s\/[[\1]]\/[[\1]]\/g;/g"` + fi + ;; + esac +fi + file_magic_cmd=$lt_cv_file_magic_cmd deplibs_check_method=$lt_cv_deplibs_check_method test -z "$deplibs_check_method" && deplibs_check_method=unknown @@ -3149,7 +3397,11 @@ test -z "$deplibs_check_method" && deplibs_check_method=unknown _LT_DECL([], [deplibs_check_method], [1], [Method to check whether dependent libraries are shared objects]) _LT_DECL([], [file_magic_cmd], [1], - [Command to use when deplibs_check_method == "file_magic"]) + [Command to use when deplibs_check_method = "file_magic"]) +_LT_DECL([], [file_magic_glob], [1], + [How to find potential files when deplibs_check_method = "file_magic"]) +_LT_DECL([], [want_nocaseglob], [1], + [Find potential files using nocaseglob when deplibs_check_method = "file_magic"]) ])# _LT_CHECK_MAGIC_METHOD @@ -3206,7 +3458,19 @@ if test "$lt_cv_path_NM" != "no"; then NM="$lt_cv_path_NM" else # Didn't find any BSD compatible name lister, look for dumpbin. - AC_CHECK_TOOLS(DUMPBIN, ["dumpbin -symbols" "link -dump -symbols"], :) + if test -n "$DUMPBIN"; then : + # Let the user override the test. + else + AC_CHECK_TOOLS(DUMPBIN, [dumpbin "link -dump"], :) + case `$DUMPBIN -symbols /dev/null 2>&1 | sed '1q'` in + *COFF*) + DUMPBIN="$DUMPBIN -symbols" + ;; + *) + DUMPBIN=: + ;; + esac + fi AC_SUBST([DUMPBIN]) if test "$DUMPBIN" != ":"; then NM="$DUMPBIN" @@ -3219,13 +3483,13 @@ _LT_DECL([], [NM], [1], [A BSD- or MS-compatible name lister])dnl AC_CACHE_CHECK([the name lister ($NM) interface], [lt_cv_nm_interface], [lt_cv_nm_interface="BSD nm" echo "int some_variable = 0;" > conftest.$ac_ext - (eval echo "\"\$as_me:__oline__: $ac_compile\"" >&AS_MESSAGE_LOG_FD) + (eval echo "\"\$as_me:$LINENO: $ac_compile\"" >&AS_MESSAGE_LOG_FD) (eval "$ac_compile" 2>conftest.err) cat conftest.err >&AS_MESSAGE_LOG_FD - (eval echo "\"\$as_me:__oline__: $NM \\\"conftest.$ac_objext\\\"\"" >&AS_MESSAGE_LOG_FD) + (eval echo "\"\$as_me:$LINENO: $NM \\\"conftest.$ac_objext\\\"\"" >&AS_MESSAGE_LOG_FD) (eval "$NM \"conftest.$ac_objext\"" 2>conftest.err > conftest.out) cat conftest.err >&AS_MESSAGE_LOG_FD - (eval echo "\"\$as_me:__oline__: output\"" >&AS_MESSAGE_LOG_FD) + (eval echo "\"\$as_me:$LINENO: output\"" >&AS_MESSAGE_LOG_FD) cat conftest.out >&AS_MESSAGE_LOG_FD if $GREP 'External.*some_variable' conftest.out > /dev/null; then lt_cv_nm_interface="MS dumpbin" @@ -3240,6 +3504,67 @@ dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AM_PROG_NM], []) dnl AC_DEFUN([AC_PROG_NM], []) +# _LT_CHECK_SHAREDLIB_FROM_LINKLIB +# -------------------------------- +# how to determine the name of the shared library +# associated with a specific link library. +# -- PORTME fill in with the dynamic library characteristics +m4_defun([_LT_CHECK_SHAREDLIB_FROM_LINKLIB], +[m4_require([_LT_DECL_EGREP]) +m4_require([_LT_DECL_OBJDUMP]) +m4_require([_LT_DECL_DLLTOOL]) +AC_CACHE_CHECK([how to associate runtime and link libraries], +lt_cv_sharedlib_from_linklib_cmd, +[lt_cv_sharedlib_from_linklib_cmd='unknown' + +case $host_os in +cygwin* | mingw* | pw32* | cegcc*) + # two different shell functions defined in ltmain.sh + # decide which to use based on capabilities of $DLLTOOL + case `$DLLTOOL --help 2>&1` in + *--identify-strict*) + lt_cv_sharedlib_from_linklib_cmd=func_cygming_dll_for_implib + ;; + *) + lt_cv_sharedlib_from_linklib_cmd=func_cygming_dll_for_implib_fallback + ;; + esac + ;; +*) + # fallback: assume linklib IS sharedlib + lt_cv_sharedlib_from_linklib_cmd="$ECHO" + ;; +esac +]) +sharedlib_from_linklib_cmd=$lt_cv_sharedlib_from_linklib_cmd +test -z "$sharedlib_from_linklib_cmd" && sharedlib_from_linklib_cmd=$ECHO + +_LT_DECL([], [sharedlib_from_linklib_cmd], [1], + [Command to associate shared and link libraries]) +])# _LT_CHECK_SHAREDLIB_FROM_LINKLIB + + +# _LT_PATH_MANIFEST_TOOL +# ---------------------- +# locate the manifest tool +m4_defun([_LT_PATH_MANIFEST_TOOL], +[AC_CHECK_TOOL(MANIFEST_TOOL, mt, :) +test -z "$MANIFEST_TOOL" && MANIFEST_TOOL=mt +AC_CACHE_CHECK([if $MANIFEST_TOOL is a manifest tool], [lt_cv_path_mainfest_tool], + [lt_cv_path_mainfest_tool=no + echo "$as_me:$LINENO: $MANIFEST_TOOL '-?'" >&AS_MESSAGE_LOG_FD + $MANIFEST_TOOL '-?' 2>conftest.err > conftest.out + cat conftest.err >&AS_MESSAGE_LOG_FD + if $GREP 'Manifest Tool' conftest.out > /dev/null; then + lt_cv_path_mainfest_tool=yes + fi + rm -f conftest*]) +if test "x$lt_cv_path_mainfest_tool" != xyes; then + MANIFEST_TOOL=: +fi +_LT_DECL([], [MANIFEST_TOOL], [1], [Manifest tool])dnl +])# _LT_PATH_MANIFEST_TOOL + # LT_LIB_M # -------- @@ -3248,7 +3573,7 @@ AC_DEFUN([LT_LIB_M], [AC_REQUIRE([AC_CANONICAL_HOST])dnl LIBM= case $host in -*-*-beos* | *-*-cygwin* | *-*-pw32* | *-*-darwin*) +*-*-beos* | *-*-cegcc* | *-*-cygwin* | *-*-haiku* | *-*-pw32* | *-*-darwin*) # These system don't have libm, or don't need it ;; *-ncr-sysv4.3*) @@ -3276,7 +3601,12 @@ m4_defun([_LT_COMPILER_NO_RTTI], _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)= if test "$GCC" = yes; then - _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=' -fno-builtin' + case $cc_basename in + nvcc*) + _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=' -Xcompiler -fno-builtin' ;; + *) + _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=' -fno-builtin' ;; + esac _LT_COMPILER_OPTION([if $compiler supports -fno-rtti -fno-exceptions], lt_cv_prog_compiler_rtti_exceptions, @@ -3293,6 +3623,7 @@ _LT_TAGDECL([no_builtin_flag], [lt_prog_compiler_no_builtin_flag], [1], m4_defun([_LT_CMD_GLOBAL_SYMBOLS], [AC_REQUIRE([AC_CANONICAL_HOST])dnl AC_REQUIRE([AC_PROG_CC])dnl +AC_REQUIRE([AC_PROG_AWK])dnl AC_REQUIRE([LT_PATH_NM])dnl AC_REQUIRE([LT_PATH_LD])dnl m4_require([_LT_DECL_SED])dnl @@ -3317,7 +3648,7 @@ case $host_os in aix*) symcode='[[BCDT]]' ;; -cygwin* | mingw* | pw32*) +cygwin* | mingw* | pw32* | cegcc*) symcode='[[ABCDGISTW]]' ;; hpux*) @@ -3360,8 +3691,8 @@ esac lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^T .* \(.*\)$/extern int \1();/p' -e 's/^$symcode* .* \(.*\)$/extern char \1;/p'" # Transform an extracted symbol line into symbol name and symbol address -lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([[^ ]]*\) $/ {\\\"\1\\\", (void *) 0},/p' -e 's/^$symcode* \([[^ ]]*\) \([[^ ]]*\)$/ {\"\2\", (void *) \&\2},/p'" -lt_cv_sys_global_symbol_to_c_name_address_lib_prefix="sed -n -e 's/^: \([[^ ]]*\) $/ {\\\"\1\\\", (void *) 0},/p' -e 's/^$symcode* \([[^ ]]*\) \(lib[[^ ]]*\)$/ {\"\2\", (void *) \&\2},/p' -e 's/^$symcode* \([[^ ]]*\) \([[^ ]]*\)$/ {\"lib\2\", (void *) \&\2},/p'" +lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([[^ ]]*\)[[ ]]*$/ {\\\"\1\\\", (void *) 0},/p' -e 's/^$symcode* \([[^ ]]*\) \([[^ ]]*\)$/ {\"\2\", (void *) \&\2},/p'" +lt_cv_sys_global_symbol_to_c_name_address_lib_prefix="sed -n -e 's/^: \([[^ ]]*\)[[ ]]*$/ {\\\"\1\\\", (void *) 0},/p' -e 's/^$symcode* \([[^ ]]*\) \(lib[[^ ]]*\)$/ {\"\2\", (void *) \&\2},/p' -e 's/^$symcode* \([[^ ]]*\) \([[^ ]]*\)$/ {\"lib\2\", (void *) \&\2},/p'" # Handle CRLF in mingw tool chain opt_cr= @@ -3385,6 +3716,7 @@ for ac_symprfx in "" "_"; do # which start with @ or ?. lt_cv_sys_global_symbol_pipe="$AWK ['"\ " {last_section=section; section=\$ 3};"\ +" /^COFF SYMBOL TABLE/{for(i in hide) delete hide[i]};"\ " /Section length .*#relocs.*(pick any)/{hide[last_section]=1};"\ " \$ 0!~/External *\|/{next};"\ " / 0+ UNDEF /{next}; / UNDEF \([^|]\)*()/{next};"\ @@ -3397,6 +3729,7 @@ for ac_symprfx in "" "_"; do else lt_cv_sys_global_symbol_pipe="sed -n -e 's/^.*[[ ]]\($symcode$symcode*\)[[ ]][[ ]]*$ac_symprfx$sympat$opt_cr$/$symxfrm/p'" fi + lt_cv_sys_global_symbol_pipe="$lt_cv_sys_global_symbol_pipe | sed '/ __gnu_lto/d'" # Check to see that the pipe works correctly. pipe_works=no @@ -3418,7 +3751,7 @@ _LT_EOF if AC_TRY_EVAL(ac_compile); then # Now try to grab the symbols. nlist=conftest.nm - if AC_TRY_EVAL(NM conftest.$ac_objext \| $lt_cv_sys_global_symbol_pipe \> $nlist) && test -s "$nlist"; then + if AC_TRY_EVAL(NM conftest.$ac_objext \| "$lt_cv_sys_global_symbol_pipe" \> $nlist) && test -s "$nlist"; then # Try sorting and uniquifying the output. if sort "$nlist" | uniq > "$nlist"T; then mv -f "$nlist"T "$nlist" @@ -3430,6 +3763,18 @@ _LT_EOF if $GREP ' nm_test_var$' "$nlist" >/dev/null; then if $GREP ' nm_test_func$' "$nlist" >/dev/null; then cat <<_LT_EOF > conftest.$ac_ext +/* Keep this code in sync between libtool.m4, ltmain, lt_system.h, and tests. */ +#if defined(_WIN32) || defined(__CYGWIN__) || defined(_WIN32_WCE) +/* DATA imports from DLLs on WIN32 con't be const, because runtime + relocations are performed -- see ld's documentation on pseudo-relocs. */ +# define LT@&t@_DLSYM_CONST +#elif defined(__osf__) +/* This system does not cope well with relocations in const data. */ +# define LT@&t@_DLSYM_CONST +#else +# define LT@&t@_DLSYM_CONST const +#endif + #ifdef __cplusplus extern "C" { #endif @@ -3441,7 +3786,7 @@ _LT_EOF cat <<_LT_EOF >> conftest.$ac_ext /* The mapping between symbol names and symbols. */ -const struct { +LT@&t@_DLSYM_CONST struct { const char *name; void *address; } @@ -3467,15 +3812,15 @@ static const void *lt_preloaded_setup() { _LT_EOF # Now try linking the two files. mv conftest.$ac_objext conftstm.$ac_objext - lt_save_LIBS="$LIBS" - lt_save_CFLAGS="$CFLAGS" + lt_globsym_save_LIBS=$LIBS + lt_globsym_save_CFLAGS=$CFLAGS LIBS="conftstm.$ac_objext" CFLAGS="$CFLAGS$_LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)" if AC_TRY_EVAL(ac_link) && test -s conftest${ac_exeext}; then pipe_works=yes fi - LIBS="$lt_save_LIBS" - CFLAGS="$lt_save_CFLAGS" + LIBS=$lt_globsym_save_LIBS + CFLAGS=$lt_globsym_save_CFLAGS else echo "cannot find nm_test_func in $nlist" >&AS_MESSAGE_LOG_FD fi @@ -3508,6 +3853,13 @@ else AC_MSG_RESULT(ok) fi +# Response file support. +if test "$lt_cv_nm_interface" = "MS dumpbin"; then + nm_file_list_spec='@' +elif $NM --help 2>/dev/null | grep '[[@]]FILE' >/dev/null; then + nm_file_list_spec='@' +fi + _LT_DECL([global_symbol_pipe], [lt_cv_sys_global_symbol_pipe], [1], [Take the output of nm and produce a listing of raw symbols and C names]) _LT_DECL([global_symbol_to_cdecl], [lt_cv_sys_global_symbol_to_cdecl], [1], @@ -3518,6 +3870,8 @@ _LT_DECL([global_symbol_to_c_name_address], _LT_DECL([global_symbol_to_c_name_address_lib_prefix], [lt_cv_sys_global_symbol_to_c_name_address_lib_prefix], [1], [Transform the output of nm in a C name address pair when lib prefix is needed]) +_LT_DECL([], [nm_file_list_spec], [1], + [Specify filename containing input files for $NM]) ]) # _LT_CMD_GLOBAL_SYMBOLS @@ -3529,7 +3883,6 @@ _LT_TAGVAR(lt_prog_compiler_wl, $1)= _LT_TAGVAR(lt_prog_compiler_pic, $1)= _LT_TAGVAR(lt_prog_compiler_static, $1)= -AC_MSG_CHECKING([for $compiler option to produce PIC]) m4_if([$1], [CXX], [ # C++ specific cases for pic, static, wl, etc. if test "$GXX" = yes; then @@ -3563,7 +3916,7 @@ m4_if([$1], [CXX], [ beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) # PIC is the default for these OSes. ;; - mingw* | cygwin* | os2* | pw32*) + mingw* | cygwin* | os2* | pw32* | cegcc*) # This hack is so that the source file can tell whether it is being # built for inclusion in a dll (and should export symbols for example). # Although the cygwin gcc ignores -fPIC, still need this for old-style @@ -3580,6 +3933,11 @@ m4_if([$1], [CXX], [ # DJGPP does not support shared libraries at all _LT_TAGVAR(lt_prog_compiler_pic, $1)= ;; + haiku*) + # PIC is the default for Haiku. + # The "-static" flag exists, but is broken. + _LT_TAGVAR(lt_prog_compiler_static, $1)= + ;; interix[[3-9]]*) # Interix 3.x gcc -fpic/-fPIC options generate broken code. # Instead, we relocate shared libraries at runtime. @@ -3590,10 +3948,11 @@ m4_if([$1], [CXX], [ fi ;; hpux*) - # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but - # not for PA HP-UX. + # PIC is the default for 64-bit PA HP-UX, but not for 32-bit + # PA HP-UX. On IA64 HP-UX, PIC is the default but the pic flag + # sets the default TLS model and affects inlining. case $host_cpu in - hppa*64*|ia64*) + hppa*64*) ;; *) _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' @@ -3628,6 +3987,12 @@ m4_if([$1], [CXX], [ ;; esac ;; + mingw* | cygwin* | os2* | pw32* | cegcc*) + # This hack is so that the source file can tell whether it is being + # built for inclusion in a dll (and should export symbols for example). + m4_if([$1], [GCJ], [], + [_LT_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT']) + ;; dgux*) case $cc_basename in ec++*) @@ -3684,19 +4049,26 @@ m4_if([$1], [CXX], [ ;; esac ;; - linux* | k*bsd*-gnu) + linux* | k*bsd*-gnu | kopensolaris*-gnu) case $cc_basename in KCC*) # KAI C++ Compiler _LT_TAGVAR(lt_prog_compiler_wl, $1)='--backend -Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' ;; - icpc* | ecpc* ) - # Intel C++ + ecpc* ) + # old Intel C++ for x86_64 which still supported -KPIC. _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' ;; + icpc* ) + # Intel C++, used to be incompatible with GCC. + # ICC 10 doesn't accept -KPIC any more. + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' + ;; pgCC* | pgcpp*) # Portland Group C++ compiler _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' @@ -3710,8 +4082,8 @@ m4_if([$1], [CXX], [ _LT_TAGVAR(lt_prog_compiler_pic, $1)= _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' ;; - xlc* | xlC*) - # IBM XL 8.0 on PPC + xlc* | xlC* | bgxl[[cC]]* | mpixl[[cC]]*) + # IBM XL 8.0, 9.0 on PPC and BlueGene _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-qpic' _LT_TAGVAR(lt_prog_compiler_static, $1)='-qstaticlink' @@ -3741,7 +4113,7 @@ m4_if([$1], [CXX], [ ;; esac ;; - netbsd*) + netbsd* | netbsdelf*-gnu) ;; *qnx* | *nto*) # QNX uses GNU C++, but need to define -shared option too, otherwise @@ -3773,7 +4145,7 @@ m4_if([$1], [CXX], [ ;; solaris*) case $cc_basename in - CC*) + CC* | sunCC*) # Sun C++ 4.2, 5.x and Centerline C++ _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' @@ -3862,7 +4234,7 @@ m4_if([$1], [CXX], [ # PIC is the default for these OSes. ;; - mingw* | cygwin* | pw32* | os2*) + mingw* | cygwin* | pw32* | os2* | cegcc*) # This hack is so that the source file can tell whether it is being # built for inclusion in a dll (and should export symbols for example). # Although the cygwin gcc ignores -fPIC, still need this for old-style @@ -3877,11 +4249,18 @@ m4_if([$1], [CXX], [ _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fno-common' ;; + haiku*) + # PIC is the default for Haiku. + # The "-static" flag exists, but is broken. + _LT_TAGVAR(lt_prog_compiler_static, $1)= + ;; + hpux*) - # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but - # not for PA HP-UX. + # PIC is the default for 64-bit PA HP-UX, but not for 32-bit + # PA HP-UX. On IA64 HP-UX, PIC is the default but the pic flag + # sets the default TLS model and affects inlining. case $host_cpu in - hppa*64*|ia64*) + hppa*64*) # +Z the default ;; *) @@ -3918,6 +4297,15 @@ m4_if([$1], [CXX], [ _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' ;; esac + + case $cc_basename in + nvcc*) # Cuda Compiler Driver 2.2 + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Xlinker ' + if test -n "$_LT_TAGVAR(lt_prog_compiler_pic, $1)"; then + _LT_TAGVAR(lt_prog_compiler_pic, $1)="-Xcompiler $_LT_TAGVAR(lt_prog_compiler_pic, $1)" + fi + ;; + esac else # PORTME Check for flag to pass linker flags through the system compiler. case $host_os in @@ -3931,7 +4319,7 @@ m4_if([$1], [CXX], [ fi ;; - mingw* | cygwin* | pw32* | os2*) + mingw* | cygwin* | pw32* | os2* | cegcc*) # This hack is so that the source file can tell whether it is being # built for inclusion in a dll (and should export symbols for example). m4_if([$1], [GCJ], [], @@ -3960,14 +4348,34 @@ m4_if([$1], [CXX], [ _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' ;; - linux* | k*bsd*-gnu) + linux* | k*bsd*-gnu | kopensolaris*-gnu) case $cc_basename in - icc* | ecc* | ifort*) + # old Intel for x86_64 which still supported -KPIC. + ecc*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' ;; - pgcc* | pgf77* | pgf90* | pgf95*) + # icc used to be incompatible with GCC. + # ICC 10 doesn't accept -KPIC any more. + icc* | ifort*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' + ;; + # Lahey Fortran 8.1. + lf95*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_pic, $1)='--shared' + _LT_TAGVAR(lt_prog_compiler_static, $1)='--static' + ;; + nagfor*) + # NAG Fortran compiler + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,-Wl,,' + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-PIC' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + ;; + pgcc* | pgf77* | pgf90* | pgf95* | pgfortran*) # Portland Group compilers (*not* the Pentium gcc compiler, # which looks to be a dead project) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' @@ -3979,25 +4387,40 @@ m4_if([$1], [CXX], [ # All Alpha code is PIC. _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' ;; - xl*) - # IBM XL C 8.0/Fortran 10.1 on PPC + xl* | bgxl* | bgf* | mpixl*) + # IBM XL C 8.0/Fortran 10.1, 11.1 on PPC and BlueGene _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-qpic' _LT_TAGVAR(lt_prog_compiler_static, $1)='-qstaticlink' ;; *) case `$CC -V 2>&1 | sed 5q` in + *Sun\ Ceres\ Fortran* | *Sun*Fortran*\ [[1-7]].* | *Sun*Fortran*\ 8.[[0-3]]*) + # Sun Fortran 8.3 passes all unrecognized flags to the linker + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + _LT_TAGVAR(lt_prog_compiler_wl, $1)='' + ;; + *Sun\ F* | *Sun*Fortran*) + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ' + ;; *Sun\ C*) # Sun C 5.9 _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' ;; - *Sun\ F*) - # Sun Fortran 8.3 passes all unrecognized flags to the linker - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + *Intel*\ [[CF]]*Compiler*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' + ;; + *Portland\ Group*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fpic' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' - _LT_TAGVAR(lt_prog_compiler_wl, $1)='' ;; esac ;; @@ -4029,7 +4452,7 @@ m4_if([$1], [CXX], [ _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' case $cc_basename in - f77* | f90* | f95*) + f77* | f90* | f95* | sunf77* | sunf90* | sunf95*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ';; *) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,';; @@ -4086,9 +4509,11 @@ case $host_os in _LT_TAGVAR(lt_prog_compiler_pic, $1)="$_LT_TAGVAR(lt_prog_compiler_pic, $1)@&t@m4_if([$1],[],[ -DPIC],[m4_if([$1],[CXX],[ -DPIC],[])])" ;; esac -AC_MSG_RESULT([$_LT_TAGVAR(lt_prog_compiler_pic, $1)]) -_LT_TAGDECL([wl], [lt_prog_compiler_wl], [1], - [How to pass a linker flag through the compiler]) + +AC_CACHE_CHECK([for $compiler option to produce PIC], + [_LT_TAGVAR(lt_cv_prog_compiler_pic, $1)], + [_LT_TAGVAR(lt_cv_prog_compiler_pic, $1)=$_LT_TAGVAR(lt_prog_compiler_pic, $1)]) +_LT_TAGVAR(lt_prog_compiler_pic, $1)=$_LT_TAGVAR(lt_cv_prog_compiler_pic, $1) # # Check to make sure the PIC flag actually works. @@ -4107,6 +4532,8 @@ fi _LT_TAGDECL([pic_flag], [lt_prog_compiler_pic], [1], [Additional compiler flags for building library objects]) +_LT_TAGDECL([wl], [lt_prog_compiler_wl], [1], + [How to pass a linker flag through the compiler]) # # Check to make sure the static flag actually works. # @@ -4127,6 +4554,7 @@ _LT_TAGDECL([link_static_flag], [lt_prog_compiler_static], [1], m4_defun([_LT_LINKER_SHLIBS], [AC_REQUIRE([LT_PATH_LD])dnl AC_REQUIRE([LT_PATH_NM])dnl +m4_require([_LT_PATH_MANIFEST_TOOL])dnl m4_require([_LT_FILEUTILS_DEFAULTS])dnl m4_require([_LT_DECL_EGREP])dnl m4_require([_LT_DECL_SED])dnl @@ -4135,27 +4563,40 @@ m4_require([_LT_TAG_COMPILER])dnl AC_MSG_CHECKING([whether the $compiler linker ($LD) supports shared libraries]) m4_if([$1], [CXX], [ _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' + _LT_TAGVAR(exclude_expsyms, $1)=['_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*'] case $host_os in aix[[4-9]]*) # If we're using GNU nm, then we don't want the "-C" option. # -C means demangle to AIX nm, but means don't demangle with GNU nm + # Also, AIX nm treats weak defined symbols like other global defined + # symbols, whereas GNU nm marks them as "W". if $NM -V 2>&1 | $GREP 'GNU' > /dev/null; then - _LT_TAGVAR(export_symbols_cmds, $1)='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B")) && ([substr](\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols' + _LT_TAGVAR(export_symbols_cmds, $1)='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W")) && ([substr](\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols' else _LT_TAGVAR(export_symbols_cmds, $1)='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B")) && ([substr](\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols' fi ;; pw32*) _LT_TAGVAR(export_symbols_cmds, $1)="$ltdll_cmds" - ;; - cygwin* | mingw*) - _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGRS]][[ ]]/s/.*[[ ]]\([[^ ]]*\)/\1 DATA/;/^.*[[ ]]__nm__/s/^.*[[ ]]__nm__\([[^ ]]*\)[[ ]][[^ ]]*/\1 DATA/;/^I[[ ]]/d;/^[[AITW]][[ ]]/s/.* //'\'' | sort | uniq > $export_symbols' - ;; + ;; + cygwin* | mingw* | cegcc*) + case $cc_basename in + cl*) + _LT_TAGVAR(exclude_expsyms, $1)='_NULL_IMPORT_DESCRIPTOR|_IMPORT_DESCRIPTOR_.*' + ;; + *) + _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGRS]][[ ]]/s/.*[[ ]]\([[^ ]]*\)/\1 DATA/;s/^.*[[ ]]__nm__\([[^ ]]*\)[[ ]][[^ ]]*/\1 DATA/;/^I[[ ]]/d;/^[[AITW]][[ ]]/s/.* //'\'' | sort | uniq > $export_symbols' + _LT_TAGVAR(exclude_expsyms, $1)=['[_]+GLOBAL_OFFSET_TABLE_|[_]+GLOBAL__[FID]_.*|[_]+head_[A-Za-z0-9_]+_dll|[A-Za-z0-9_]+_dll_iname'] + ;; + esac + ;; + linux* | k*bsd*-gnu | gnu*) + _LT_TAGVAR(link_all_deplibs, $1)=no + ;; *) _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' - ;; + ;; esac - _LT_TAGVAR(exclude_expsyms, $1)=['_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*'] ], [ runpath_var= _LT_TAGVAR(allow_undefined_flag, $1)= @@ -4170,7 +4611,6 @@ m4_if([$1], [CXX], [ _LT_TAGVAR(hardcode_direct, $1)=no _LT_TAGVAR(hardcode_direct_absolute, $1)=no _LT_TAGVAR(hardcode_libdir_flag_spec, $1)= - _LT_TAGVAR(hardcode_libdir_flag_spec_ld, $1)= _LT_TAGVAR(hardcode_libdir_separator, $1)= _LT_TAGVAR(hardcode_minus_L, $1)=no _LT_TAGVAR(hardcode_shlibpath_var, $1)=unsupported @@ -4200,7 +4640,7 @@ dnl Note also adjust exclude_expsyms for C++ above. extract_expsyms_cmds= case $host_os in - cygwin* | mingw* | pw32*) + cygwin* | mingw* | pw32* | cegcc*) # FIXME: the MSVC++ port hasn't been tested in a loooong time # When not using gcc, we currently assume that we are using # Microsoft Visual C++. @@ -4215,10 +4655,39 @@ dnl Note also adjust exclude_expsyms for C++ above. openbsd*) with_gnu_ld=no ;; + linux* | k*bsd*-gnu | gnu*) + _LT_TAGVAR(link_all_deplibs, $1)=no + ;; esac _LT_TAGVAR(ld_shlibs, $1)=yes + + # On some targets, GNU ld is compatible enough with the native linker + # that we're better off using the native interface for both. + lt_use_gnu_ld_interface=no if test "$with_gnu_ld" = yes; then + case $host_os in + aix*) + # The AIX port of GNU ld has always aspired to compatibility + # with the native linker. However, as the warning in the GNU ld + # block says, versions before 2.19.5* couldn't really create working + # shared libraries, regardless of the interface used. + case `$LD -v 2>&1` in + *\ \(GNU\ Binutils\)\ 2.19.5*) ;; + *\ \(GNU\ Binutils\)\ 2.[[2-9]]*) ;; + *\ \(GNU\ Binutils\)\ [[3-9]]*) ;; + *) + lt_use_gnu_ld_interface=yes + ;; + esac + ;; + *) + lt_use_gnu_ld_interface=yes + ;; + esac + fi + + if test "$lt_use_gnu_ld_interface" = yes; then # If archive_cmds runs LD, not CC, wlarc should be empty wlarc='${wl}' @@ -4236,6 +4705,7 @@ dnl Note also adjust exclude_expsyms for C++ above. fi supports_anon_versioning=no case `$LD -v 2>&1` in + *GNU\ gold*) supports_anon_versioning=yes ;; *\ [[01]].* | *\ 2.[[0-9]].* | *\ 2.10.*) ;; # catch versions < 2.11 *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ... *\ 2.11.92.0.12\ *) supports_anon_versioning=yes ;; # Mandrake 8.2 ... @@ -4251,11 +4721,12 @@ dnl Note also adjust exclude_expsyms for C++ above. _LT_TAGVAR(ld_shlibs, $1)=no cat <<_LT_EOF 1>&2 -*** Warning: the GNU linker, at least up to release 2.9.1, is reported +*** Warning: the GNU linker, at least up to release 2.19, is reported *** to be unable to reliably create shared libraries on AIX. *** Therefore, libtool is disabling shared libraries support. If you -*** really care for shared libraries, you may want to modify your PATH -*** so that a non-GNU linker is found, and then restart. +*** really care for shared libraries, you may want to install binutils +*** 2.20 or above, or modify your PATH so that a non-GNU linker is found. +*** You will then need to restart the configuration process. _LT_EOF fi @@ -4287,14 +4758,16 @@ _LT_EOF fi ;; - cygwin* | mingw* | pw32*) + cygwin* | mingw* | pw32* | cegcc*) # _LT_TAGVAR(hardcode_libdir_flag_spec, $1) is actually meaningless, # as there is no search path for DLLs. _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' + _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-all-symbols' _LT_TAGVAR(allow_undefined_flag, $1)=unsupported _LT_TAGVAR(always_export_symbols, $1)=no _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes - _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGRS]][[ ]]/s/.*[[ ]]\([[^ ]]*\)/\1 DATA/'\'' | $SED -e '\''/^[[AITW]][[ ]]/s/.*[[ ]]//'\'' | sort | uniq > $export_symbols' + _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGRS]][[ ]]/s/.*[[ ]]\([[^ ]]*\)/\1 DATA/;s/^.*[[ ]]__nm__\([[^ ]]*\)[[ ]][[^ ]]*/\1 DATA/;/^I[[ ]]/d;/^[[AITW]][[ ]]/s/.* //'\'' | sort | uniq > $export_symbols' + _LT_TAGVAR(exclude_expsyms, $1)=['[_]+GLOBAL_OFFSET_TABLE_|[_]+GLOBAL__[FID]_.*|[_]+head_[A-Za-z0-9_]+_dll|[A-Za-z0-9_]+_dll_iname'] if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' @@ -4312,6 +4785,11 @@ _LT_EOF fi ;; + haiku*) + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + _LT_TAGVAR(link_all_deplibs, $1)=yes + ;; + interix[[3-9]]*) _LT_TAGVAR(hardcode_direct, $1)=no _LT_TAGVAR(hardcode_shlibpath_var, $1)=no @@ -4327,7 +4805,7 @@ _LT_EOF _LT_TAGVAR(archive_expsym_cmds, $1)='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' ;; - gnu* | linux* | tpf* | k*bsd*-gnu) + gnu* | linux* | tpf* | k*bsd*-gnu | kopensolaris*-gnu) tmp_diet=no if test "$host_os" = linux-dietlibc; then case $cc_basename in @@ -4337,15 +4815,16 @@ _LT_EOF if $LD --help 2>&1 | $EGREP ': supported targets:.* elf' > /dev/null \ && test "$tmp_diet" = no then - tmp_addflag= + tmp_addflag=' $pic_flag' tmp_sharedflag='-shared' case $cc_basename,$host_cpu in pgcc*) # Portland Group C compiler - _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $ECHO \"$new_convenience\"` ${wl}--no-whole-archive' + _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' tmp_addflag=' $pic_flag' ;; - pgf77* | pgf90* | pgf95*) # Portland Group f77 and f90 compilers - _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $ECHO \"$new_convenience\"` ${wl}--no-whole-archive' + pgf77* | pgf90* | pgf95* | pgfortran*) + # Portland Group f77 and f90 compilers + _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' tmp_addflag=' $pic_flag -Mnomain' ;; ecc*,ia64* | icc*,ia64*) # Intel C compiler on ia64 tmp_addflag=' -i_dynamic' ;; @@ -4353,13 +4832,20 @@ _LT_EOF tmp_addflag=' -i_dynamic -nofor_main' ;; ifc* | ifort*) # Intel Fortran compiler tmp_addflag=' -nofor_main' ;; - xl[[cC]]*) # IBM XL C 8.0 on PPC (deal with xlf below) + lf95*) # Lahey Fortran 8.1 + _LT_TAGVAR(whole_archive_flag_spec, $1)= + tmp_sharedflag='--shared' ;; + xl[[cC]]* | bgxl[[cC]]* | mpixl[[cC]]*) # IBM XL C 8.0 on PPC (deal with xlf below) tmp_sharedflag='-qmkshrobj' tmp_addflag= ;; + nvcc*) # Cuda Compiler Driver 2.2 + _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' + _LT_TAGVAR(compiler_needs_object, $1)=yes + ;; esac case `$CC -V 2>&1 | sed 5q` in *Sun\ C*) # Sun C 5.9 - _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; $ECHO \"$new_convenience\"` ${wl}--no-whole-archive' + _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' _LT_TAGVAR(compiler_needs_object, $1)=yes tmp_sharedflag='-G' ;; *Sun\ F*) # Sun Fortran 8.3 @@ -4375,17 +4861,16 @@ _LT_EOF fi case $cc_basename in - xlf*) + xlf* | bgf* | bgxlf* | mpixlf*) # IBM XL Fortran 10.1 on PPC cannot create shared libs itself _LT_TAGVAR(whole_archive_flag_spec, $1)='--whole-archive$convenience --no-whole-archive' - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)= - _LT_TAGVAR(hardcode_libdir_flag_spec_ld, $1)='-rpath $libdir' - _LT_TAGVAR(archive_cmds, $1)='$LD -shared $libobjs $deplibs $compiler_flags -soname $soname -o $lib' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' + _LT_TAGVAR(archive_cmds, $1)='$LD -shared $libobjs $deplibs $linker_flags -soname $soname -o $lib' if test "x$supports_anon_versioning" = xyes; then _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $output_objdir/$libname.ver~ cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ echo "local: *; };" >> $output_objdir/$libname.ver~ - $LD -shared $libobjs $deplibs $compiler_flags -soname $soname -version-script $output_objdir/$libname.ver -o $lib' + $LD -shared $libobjs $deplibs $linker_flags -soname $soname -version-script $output_objdir/$libname.ver -o $lib' fi ;; esac @@ -4394,13 +4879,13 @@ _LT_EOF fi ;; - netbsd*) + netbsd* | netbsdelf*-gnu) if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib' wlarc= else - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' fi ;; @@ -4418,8 +4903,8 @@ _LT_EOF _LT_EOF elif $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' else _LT_TAGVAR(ld_shlibs, $1)=no fi @@ -4465,8 +4950,8 @@ _LT_EOF *) if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' else _LT_TAGVAR(ld_shlibs, $1)=no fi @@ -4506,8 +4991,10 @@ _LT_EOF else # If we're using GNU nm, then we don't want the "-C" option. # -C means demangle to AIX nm, but means don't demangle with GNU nm + # Also, AIX nm treats weak defined symbols like other global + # defined symbols, whereas GNU nm marks them as "W". if $NM -V 2>&1 | $GREP 'GNU' > /dev/null; then - _LT_TAGVAR(export_symbols_cmds, $1)='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B")) && ([substr](\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols' + _LT_TAGVAR(export_symbols_cmds, $1)='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W")) && ([substr](\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols' else _LT_TAGVAR(export_symbols_cmds, $1)='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B")) && ([substr](\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols' fi @@ -4569,6 +5056,7 @@ _LT_EOF if test "$aix_use_runtimelinking" = yes; then shared_flag="$shared_flag "'${wl}-G' fi + _LT_TAGVAR(link_all_deplibs, $1)=no else # not using gcc if test "$host_cpu" = ia64; then @@ -4584,6 +5072,7 @@ _LT_EOF fi fi + _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-bexpall' # It seems that -bexpall does not export symbols beginning with # underscore (_), so it is better to generate a list of symbols to export. _LT_TAGVAR(always_export_symbols, $1)=yes @@ -4593,9 +5082,9 @@ _LT_EOF _LT_TAGVAR(allow_undefined_flag, $1)='-berok' # Determine the default libpath from the value encoded in an # empty executable. - _LT_SYS_MODULE_PATH_AIX + _LT_SYS_MODULE_PATH_AIX([$1]) _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath" - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then $ECHO "X${wl}${allow_undefined_flag}" | $Xsed; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag" + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then func_echo_all "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag" else if test "$host_cpu" = ia64; then _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R $libdir:/usr/lib:/lib' @@ -4604,14 +5093,19 @@ _LT_EOF else # Determine the default libpath from the value encoded in an # empty executable. - _LT_SYS_MODULE_PATH_AIX + _LT_SYS_MODULE_PATH_AIX([$1]) _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath" # Warning - without using the other run time loading flags, # -berok will link without error, but may produce a broken library. _LT_TAGVAR(no_undefined_flag, $1)=' ${wl}-bernotok' _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-berok' - # Exported symbols can be pulled into shared objects from archives - _LT_TAGVAR(whole_archive_flag_spec, $1)='$convenience' + if test "$with_gnu_ld" = yes; then + # We only use this code for GNU lds that support --whole-archive. + _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive$convenience ${wl}--no-whole-archive' + else + # Exported symbols can be pulled into shared objects from archives + _LT_TAGVAR(whole_archive_flag_spec, $1)='$convenience' + fi _LT_TAGVAR(archive_cmds_need_lc, $1)=yes # This is similar to how AIX traditionally builds its shared libraries. _LT_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname' @@ -4638,25 +5132,69 @@ _LT_EOF _LT_TAGVAR(export_dynamic_flag_spec, $1)=-rdynamic ;; - cygwin* | mingw* | pw32*) + cygwin* | mingw* | pw32* | cegcc*) # When not using gcc, we currently assume that we are using # Microsoft Visual C++. # hardcode_libdir_flag_spec is actually meaningless, as there is # no search path for DLLs. - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)=' ' - _LT_TAGVAR(allow_undefined_flag, $1)=unsupported - # Tell ltmain to make .lib files, not .a files. - libext=lib - # Tell ltmain to make .dll files, not .so files. - shrext_cmds=".dll" - # FIXME: Setting linknames here is a bad hack. - _LT_TAGVAR(archive_cmds, $1)='$CC -o $lib $libobjs $compiler_flags `$ECHO "X$deplibs" | $Xsed -e '\''s/ -lc$//'\''` -link -dll~linknames=' - # The linker will automatically build a .lib file if we build a DLL. - _LT_TAGVAR(old_archive_from_new_cmds, $1)='true' - # FIXME: Should let the user specify the lib program. - _LT_TAGVAR(old_archive_cmds, $1)='lib -OUT:$oldlib$oldobjs$old_deplibs' - _LT_TAGVAR(fix_srcfile_path, $1)='`cygpath -w "$srcfile"`' - _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes + case $cc_basename in + cl*) + # Native MSVC + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)=' ' + _LT_TAGVAR(allow_undefined_flag, $1)=unsupported + _LT_TAGVAR(always_export_symbols, $1)=yes + _LT_TAGVAR(file_list_spec, $1)='@' + # Tell ltmain to make .lib files, not .a files. + libext=lib + # Tell ltmain to make .dll files, not .so files. + shrext_cmds=".dll" + # FIXME: Setting linknames here is a bad hack. + _LT_TAGVAR(archive_cmds, $1)='$CC -o $output_objdir/$soname $libobjs $compiler_flags $deplibs -Wl,-dll~linknames=' + _LT_TAGVAR(archive_expsym_cmds, $1)='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then + sed -n -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' -e '1\\\!p' < $export_symbols > $output_objdir/$soname.exp; + else + sed -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' < $export_symbols > $output_objdir/$soname.exp; + fi~ + $CC -o $tool_output_objdir$soname $libobjs $compiler_flags $deplibs "@$tool_output_objdir$soname.exp" -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~ + linknames=' + # The linker will not automatically build a static lib if we build a DLL. + # _LT_TAGVAR(old_archive_from_new_cmds, $1)='true' + _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes + _LT_TAGVAR(exclude_expsyms, $1)='_NULL_IMPORT_DESCRIPTOR|_IMPORT_DESCRIPTOR_.*' + _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGRS]][[ ]]/s/.*[[ ]]\([[^ ]]*\)/\1,DATA/'\'' | $SED -e '\''/^[[AITW]][[ ]]/s/.*[[ ]]//'\'' | sort | uniq > $export_symbols' + # Don't use ranlib + _LT_TAGVAR(old_postinstall_cmds, $1)='chmod 644 $oldlib' + _LT_TAGVAR(postlink_cmds, $1)='lt_outputfile="@OUTPUT@"~ + lt_tool_outputfile="@TOOL_OUTPUT@"~ + case $lt_outputfile in + *.exe|*.EXE) ;; + *) + lt_outputfile="$lt_outputfile.exe" + lt_tool_outputfile="$lt_tool_outputfile.exe" + ;; + esac~ + if test "$MANIFEST_TOOL" != ":" && test -f "$lt_outputfile.manifest"; then + $MANIFEST_TOOL -manifest "$lt_tool_outputfile.manifest" -outputresource:"$lt_tool_outputfile" || exit 1; + $RM "$lt_outputfile.manifest"; + fi' + ;; + *) + # Assume MSVC wrapper + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)=' ' + _LT_TAGVAR(allow_undefined_flag, $1)=unsupported + # Tell ltmain to make .lib files, not .a files. + libext=lib + # Tell ltmain to make .dll files, not .so files. + shrext_cmds=".dll" + # FIXME: Setting linknames here is a bad hack. + _LT_TAGVAR(archive_cmds, $1)='$CC -o $lib $libobjs $compiler_flags `func_echo_all "$deplibs" | $SED '\''s/ -lc$//'\''` -link -dll~linknames=' + # The linker will automatically build a .lib file if we build a DLL. + _LT_TAGVAR(old_archive_from_new_cmds, $1)='true' + # FIXME: Should let the user specify the lib program. + _LT_TAGVAR(old_archive_cmds, $1)='lib -OUT:$oldlib$oldobjs$old_deplibs' + _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes + ;; + esac ;; darwin* | rhapsody*) @@ -4669,10 +5207,6 @@ _LT_EOF _LT_TAGVAR(hardcode_shlibpath_var, $1)=no ;; - freebsd1*) - _LT_TAGVAR(ld_shlibs, $1)=no - ;; - # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor # support. Future versions do this automatically, but an explicit c++rt0.o # does not break anything, and helps significantly (at the cost of a little @@ -4685,7 +5219,7 @@ _LT_EOF ;; # Unfortunately, older versions of FreeBSD 2 do not have this feature. - freebsd2*) + freebsd2.*) _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_minus_L, $1)=yes @@ -4694,7 +5228,7 @@ _LT_EOF # FreeBSD 3 and greater uses gcc -shared to do shared libraries. freebsd* | dragonfly*) - _LT_TAGVAR(archive_cmds, $1)='$CC -shared -o $lib $libobjs $deplibs $compiler_flags' + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_shlibpath_var, $1)=no @@ -4702,7 +5236,7 @@ _LT_EOF hpux9*) if test "$GCC" = yes; then - _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$CC -shared -fPIC ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' + _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$CC -shared $pic_flag ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' else _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' fi @@ -4717,14 +5251,13 @@ _LT_EOF ;; hpux10*) - if test "$GCC" = yes -a "$with_gnu_ld" = no; then - _LT_TAGVAR(archive_cmds, $1)='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' + if test "$GCC" = yes && test "$with_gnu_ld" = no; then + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' else _LT_TAGVAR(archive_cmds, $1)='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags' fi if test "$with_gnu_ld" = no; then _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' - _LT_TAGVAR(hardcode_libdir_flag_spec_ld, $1)='+b $libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)=: _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_direct_absolute, $1)=yes @@ -4736,16 +5269,16 @@ _LT_EOF ;; hpux11*) - if test "$GCC" = yes -a "$with_gnu_ld" = no; then + if test "$GCC" = yes && test "$with_gnu_ld" = no; then case $host_cpu in hppa*64*) _LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' ;; ia64*) - _LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' ;; *) - _LT_TAGVAR(archive_cmds, $1)='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' ;; esac else @@ -4757,7 +5290,14 @@ _LT_EOF _LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' ;; *) - _LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' + m4_if($1, [], [ + # Older versions of the 11.00 compiler do not understand -b yet + # (HP92453-01 A.11.01.20 doesn't, HP92453-01 B.11.X.35175-35176.GP does) + _LT_LINKER_OPTION([if $CC understands -b], + _LT_TAGVAR(lt_cv_prog_compiler__b, $1), [-b], + [_LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'], + [_LT_TAGVAR(archive_cmds, $1)='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags'])], + [_LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags']) ;; esac fi @@ -4785,19 +5325,34 @@ _LT_EOF irix5* | irix6* | nonstopux*) if test "$GCC" = yes; then - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && $ECHO "X${wl}-set_version ${wl}$verstring" | $Xsed` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' # Try to use the -exported_symbol ld option, if it does not # work, assume that -exports_file does not work either and # implicitly export all symbols. - save_LDFLAGS="$LDFLAGS" - LDFLAGS="$LDFLAGS -shared ${wl}-exported_symbol ${wl}foo ${wl}-update_registry ${wl}/dev/null" - AC_LINK_IFELSE(int foo(void) {}, - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && $ECHO "X${wl}-set_version ${wl}$verstring" | $Xsed` ${wl}-update_registry ${wl}${output_objdir}/so_locations ${wl}-exports_file ${wl}$export_symbols -o $lib' - ) - LDFLAGS="$save_LDFLAGS" + # This should be the same for all languages, so no per-tag cache variable. + AC_CACHE_CHECK([whether the $host_os linker accepts -exported_symbol], + [lt_cv_irix_exported_symbol], + [save_LDFLAGS="$LDFLAGS" + LDFLAGS="$LDFLAGS -shared ${wl}-exported_symbol ${wl}foo ${wl}-update_registry ${wl}/dev/null" + AC_LINK_IFELSE( + [AC_LANG_SOURCE( + [AC_LANG_CASE([C], [[int foo (void) { return 0; }]], + [C++], [[int foo (void) { return 0; }]], + [Fortran 77], [[ + subroutine foo + end]], + [Fortran], [[ + subroutine foo + end]])])], + [lt_cv_irix_exported_symbol=yes], + [lt_cv_irix_exported_symbol=no]) + LDFLAGS="$save_LDFLAGS"]) + if test "$lt_cv_irix_exported_symbol" = yes; then + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations ${wl}-exports_file ${wl}$export_symbols -o $lib' + fi else - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && $ECHO "X-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -o $lib' - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && $ECHO "X-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -exports_file $export_symbols -o $lib' + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -exports_file $export_symbols -o $lib' fi _LT_TAGVAR(archive_cmds_need_lc, $1)='no' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' @@ -4806,7 +5361,7 @@ _LT_EOF _LT_TAGVAR(link_all_deplibs, $1)=yes ;; - netbsd*) + netbsd* | netbsdelf*-gnu) if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' # a.out else @@ -4859,17 +5414,17 @@ _LT_EOF _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' _LT_TAGVAR(hardcode_minus_L, $1)=yes _LT_TAGVAR(allow_undefined_flag, $1)=unsupported - _LT_TAGVAR(archive_cmds, $1)='$ECHO "LIBRARY $libname INITINSTANCE" > $output_objdir/$libname.def~$ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~$ECHO DATA >> $output_objdir/$libname.def~$ECHO " SINGLE NONSHARED" >> $output_objdir/$libname.def~$ECHO EXPORTS >> $output_objdir/$libname.def~emxexp $libobjs >> $output_objdir/$libname.def~$CC -Zdll -Zcrtdll -o $lib $libobjs $deplibs $compiler_flags $output_objdir/$libname.def' + _LT_TAGVAR(archive_cmds, $1)='$ECHO "LIBRARY $libname INITINSTANCE" > $output_objdir/$libname.def~$ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~echo DATA >> $output_objdir/$libname.def~echo " SINGLE NONSHARED" >> $output_objdir/$libname.def~echo EXPORTS >> $output_objdir/$libname.def~emxexp $libobjs >> $output_objdir/$libname.def~$CC -Zdll -Zcrtdll -o $lib $libobjs $deplibs $compiler_flags $output_objdir/$libname.def' _LT_TAGVAR(old_archive_from_new_cmds, $1)='emximp -o $output_objdir/$libname.a $output_objdir/$libname.def' ;; osf3*) if test "$GCC" = yes; then _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*' - _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && $ECHO "X${wl}-set_version ${wl}$verstring" | $Xsed` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' + _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' else _LT_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*' - _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && $ECHO "X-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -o $lib' + _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib' fi _LT_TAGVAR(archive_cmds_need_lc, $1)='no' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' @@ -4879,13 +5434,13 @@ _LT_EOF osf4* | osf5*) # as osf3* with the addition of -msym flag if test "$GCC" = yes; then _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*' - _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && $ECHO "X${wl}-set_version ${wl}$verstring" | $Xsed` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' + _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $pic_flag $libobjs $deplibs $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' else _LT_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*' - _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags -msym -soname $soname `test -n "$verstring" && $ECHO "X-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -o $lib' + _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags -msym -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done; printf "%s\\n" "-hidden">> $lib.exp~ - $CC -shared${allow_undefined_flag} ${wl}-input ${wl}$lib.exp $compiler_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && $ECHO "X-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -o $lib~$RM $lib.exp' + $CC -shared${allow_undefined_flag} ${wl}-input ${wl}$lib.exp $compiler_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && $ECHO "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib~$RM $lib.exp' # Both c and cxx compiler support -rpath directly _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir' @@ -4898,9 +5453,9 @@ _LT_EOF _LT_TAGVAR(no_undefined_flag, $1)=' -z defs' if test "$GCC" = yes; then wlarc='${wl}' - _LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-z ${wl}text ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag ${wl}-z ${wl}text ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ - $CC -shared ${wl}-z ${wl}text ${wl}-M ${wl}$lib.exp ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp' + $CC -shared $pic_flag ${wl}-z ${wl}text ${wl}-M ${wl}$lib.exp ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp' else case `$CC -V 2>&1` in *"Compilers 5.0"*) @@ -5076,36 +5631,38 @@ x|xyes) # Test whether the compiler implicitly links with -lc since on some # systems, -lgcc has to come before -lc. If gcc already passes -lc # to ld, don't add -lc before -lgcc. - AC_MSG_CHECKING([whether -lc should be explicitly linked in]) - $RM conftest* - echo "$lt_simple_compile_test_code" > conftest.$ac_ext - - if AC_TRY_EVAL(ac_compile) 2>conftest.err; then - soname=conftest - lib=conftest - libobjs=conftest.$ac_objext - deplibs= - wl=$_LT_TAGVAR(lt_prog_compiler_wl, $1) - pic_flag=$_LT_TAGVAR(lt_prog_compiler_pic, $1) - compiler_flags=-v - linker_flags=-v - verstring= - output_objdir=. - libname=conftest - lt_save_allow_undefined_flag=$_LT_TAGVAR(allow_undefined_flag, $1) - _LT_TAGVAR(allow_undefined_flag, $1)= - if AC_TRY_EVAL(_LT_TAGVAR(archive_cmds, $1) 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1) - then - _LT_TAGVAR(archive_cmds_need_lc, $1)=no - else - _LT_TAGVAR(archive_cmds_need_lc, $1)=yes - fi - _LT_TAGVAR(allow_undefined_flag, $1)=$lt_save_allow_undefined_flag - else - cat conftest.err 1>&5 - fi - $RM conftest* - AC_MSG_RESULT([$_LT_TAGVAR(archive_cmds_need_lc, $1)]) + AC_CACHE_CHECK([whether -lc should be explicitly linked in], + [lt_cv_]_LT_TAGVAR(archive_cmds_need_lc, $1), + [$RM conftest* + echo "$lt_simple_compile_test_code" > conftest.$ac_ext + + if AC_TRY_EVAL(ac_compile) 2>conftest.err; then + soname=conftest + lib=conftest + libobjs=conftest.$ac_objext + deplibs= + wl=$_LT_TAGVAR(lt_prog_compiler_wl, $1) + pic_flag=$_LT_TAGVAR(lt_prog_compiler_pic, $1) + compiler_flags=-v + linker_flags=-v + verstring= + output_objdir=. + libname=conftest + lt_save_allow_undefined_flag=$_LT_TAGVAR(allow_undefined_flag, $1) + _LT_TAGVAR(allow_undefined_flag, $1)= + if AC_TRY_EVAL(_LT_TAGVAR(archive_cmds, $1) 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1) + then + lt_cv_[]_LT_TAGVAR(archive_cmds_need_lc, $1)=no + else + lt_cv_[]_LT_TAGVAR(archive_cmds_need_lc, $1)=yes + fi + _LT_TAGVAR(allow_undefined_flag, $1)=$lt_save_allow_undefined_flag + else + cat conftest.err 1>&5 + fi + $RM conftest* + ]) + _LT_TAGVAR(archive_cmds_need_lc, $1)=$lt_cv_[]_LT_TAGVAR(archive_cmds_need_lc, $1) ;; esac fi @@ -5142,9 +5699,6 @@ _LT_TAGDECL([], [no_undefined_flag], [1], _LT_TAGDECL([], [hardcode_libdir_flag_spec], [1], [Flag to hardcode $libdir into a binary during linking. This must work even if $libdir does not exist]) -_LT_TAGDECL([], [hardcode_libdir_flag_spec_ld], [1], - [[If ld is used when linking, flag to hardcode $libdir into a binary - during linking. This must work even if $libdir does not exist]]) _LT_TAGDECL([], [hardcode_libdir_separator], [1], [Whether we need a single "-rpath" flag with a separated argument]) _LT_TAGDECL([], [hardcode_direct], [0], @@ -5170,8 +5724,6 @@ _LT_TAGDECL([], [inherit_rpath], [0], to runtime path list]) _LT_TAGDECL([], [link_all_deplibs], [0], [Whether libtool must link a program against all its dependency libraries]) -_LT_TAGDECL([], [fix_srcfile_path], [1], - [Fix the shell variable $srcfile for the compiler]) _LT_TAGDECL([], [always_export_symbols], [0], [Set to "yes" if exported symbols are required]) _LT_TAGDECL([], [export_symbols_cmds], [2], @@ -5182,6 +5734,8 @@ _LT_TAGDECL([], [include_expsyms], [1], [Symbols that must always be exported]) _LT_TAGDECL([], [prelink_cmds], [2], [Commands necessary for linking programs (against libraries) with templates]) +_LT_TAGDECL([], [postlink_cmds], [2], + [Commands necessary for finishing linking programs]) _LT_TAGDECL([], [file_list_spec], [1], [Specify filename containing input files]) dnl FIXME: Not yet implemented @@ -5275,37 +5829,22 @@ CC="$lt_save_CC" ])# _LT_LANG_C_CONFIG -# _LT_PROG_CXX -# ------------ -# Since AC_PROG_CXX is broken, in that it returns g++ if there is no c++ -# compiler, we have our own version here. -m4_defun([_LT_PROG_CXX], -[ -pushdef([AC_MSG_ERROR], [_lt_caught_CXX_error=yes]) -AC_PROG_CXX -if test -n "$CXX" && ( test "X$CXX" != "Xno" && - ( (test "X$CXX" = "Xg++" && `g++ -v >/dev/null 2>&1` ) || - (test "X$CXX" != "Xg++"))) ; then - AC_PROG_CXXCPP -else - _lt_caught_CXX_error=yes -fi -popdef([AC_MSG_ERROR]) -])# _LT_PROG_CXX - -dnl aclocal-1.4 backwards compatibility: -dnl AC_DEFUN([_LT_PROG_CXX], []) - - # _LT_LANG_CXX_CONFIG([TAG]) # -------------------------- # Ensure that the configuration variables for a C++ compiler are suitably # defined. These variables are subsequently used by _LT_CONFIG to write # the compiler configuration to `libtool'. m4_defun([_LT_LANG_CXX_CONFIG], -[AC_REQUIRE([_LT_PROG_CXX])dnl -m4_require([_LT_FILEUTILS_DEFAULTS])dnl +[m4_require([_LT_FILEUTILS_DEFAULTS])dnl m4_require([_LT_DECL_EGREP])dnl +m4_require([_LT_PATH_MANIFEST_TOOL])dnl +if test -n "$CXX" && ( test "X$CXX" != "Xno" && + ( (test "X$CXX" = "Xg++" && `g++ -v >/dev/null 2>&1` ) || + (test "X$CXX" != "Xg++"))) ; then + AC_PROG_CXXCPP +else + _lt_caught_CXX_error=yes +fi AC_LANG_PUSH(C++) _LT_TAGVAR(archive_cmds_need_lc, $1)=no @@ -5317,7 +5856,6 @@ _LT_TAGVAR(export_dynamic_flag_spec, $1)= _LT_TAGVAR(hardcode_direct, $1)=no _LT_TAGVAR(hardcode_direct_absolute, $1)=no _LT_TAGVAR(hardcode_libdir_flag_spec, $1)= -_LT_TAGVAR(hardcode_libdir_flag_spec_ld, $1)= _LT_TAGVAR(hardcode_libdir_separator, $1)= _LT_TAGVAR(hardcode_minus_L, $1)=no _LT_TAGVAR(hardcode_shlibpath_var, $1)=unsupported @@ -5327,6 +5865,8 @@ _LT_TAGVAR(module_cmds, $1)= _LT_TAGVAR(module_expsym_cmds, $1)= _LT_TAGVAR(link_all_deplibs, $1)=unknown _LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds +_LT_TAGVAR(reload_flag, $1)=$reload_flag +_LT_TAGVAR(reload_cmds, $1)=$reload_cmds _LT_TAGVAR(no_undefined_flag, $1)= _LT_TAGVAR(whole_archive_flag_spec, $1)= _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=no @@ -5358,6 +5898,7 @@ if test "$_lt_caught_CXX_error" != yes; then # Allow CC to be a program name with arguments. lt_save_CC=$CC + lt_save_CFLAGS=$CFLAGS lt_save_LD=$LD lt_save_GCC=$GCC GCC=$GXX @@ -5375,6 +5916,7 @@ if test "$_lt_caught_CXX_error" != yes; then fi test -z "${LDCXX+set}" || LD=$LDCXX CC=${CXX-"c++"} + CFLAGS=$CXXFLAGS compiler=$CC _LT_TAGVAR(compiler, $1)=$CC _LT_CC_BASENAME([$compiler]) @@ -5396,8 +5938,8 @@ if test "$_lt_caught_CXX_error" != yes; then # Check if GNU C++ uses GNU ld as the underlying linker, since the # archiving commands below assume that GNU ld is being used. if test "$with_gnu_ld" = yes; then - _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib' - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + _LT_TAGVAR(archive_cmds, $1)='$CC $pic_flag -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC $pic_flag -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' @@ -5429,7 +5971,7 @@ if test "$_lt_caught_CXX_error" != yes; then # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. - output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "\-L"' + output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"' else GXX=no @@ -5527,6 +6069,7 @@ if test "$_lt_caught_CXX_error" != yes; then fi fi + _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-bexpall' # It seems that -bexpall does not export symbols beginning with # underscore (_), so it is better to generate a list of symbols to # export. @@ -5537,10 +6080,10 @@ if test "$_lt_caught_CXX_error" != yes; then _LT_TAGVAR(allow_undefined_flag, $1)='-berok' # Determine the default libpath from the value encoded in an empty # executable. - _LT_SYS_MODULE_PATH_AIX + _LT_SYS_MODULE_PATH_AIX([$1]) _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath" - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then $ECHO "X${wl}${allow_undefined_flag}" | $Xsed; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag" + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then func_echo_all "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag" else if test "$host_cpu" = ia64; then _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R $libdir:/usr/lib:/lib' @@ -5549,14 +6092,19 @@ if test "$_lt_caught_CXX_error" != yes; then else # Determine the default libpath from the value encoded in an # empty executable. - _LT_SYS_MODULE_PATH_AIX + _LT_SYS_MODULE_PATH_AIX([$1]) _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath" # Warning - without using the other run time loading flags, # -berok will link without error, but may produce a broken library. _LT_TAGVAR(no_undefined_flag, $1)=' ${wl}-bernotok' _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-berok' - # Exported symbols can be pulled into shared objects from archives - _LT_TAGVAR(whole_archive_flag_spec, $1)='$convenience' + if test "$with_gnu_ld" = yes; then + # We only use this code for GNU lds that support --whole-archive. + _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive$convenience ${wl}--no-whole-archive' + else + # Exported symbols can be pulled into shared objects from archives + _LT_TAGVAR(whole_archive_flag_spec, $1)='$convenience' + fi _LT_TAGVAR(archive_cmds_need_lc, $1)=yes # This is similar to how AIX traditionally builds its shared # libraries. @@ -5585,29 +6133,76 @@ if test "$_lt_caught_CXX_error" != yes; then esac ;; - cygwin* | mingw* | pw32*) - # _LT_TAGVAR(hardcode_libdir_flag_spec, $1) is actually meaningless, - # as there is no search path for DLLs. - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' - _LT_TAGVAR(allow_undefined_flag, $1)=unsupported - _LT_TAGVAR(always_export_symbols, $1)=no - _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes - - if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then - _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' - # If the export-symbols file already is a .def file (1st line - # is EXPORTS), use it as is; otherwise, prepend... - _LT_TAGVAR(archive_expsym_cmds, $1)='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then - cp $export_symbols $output_objdir/$soname.def; - else - echo EXPORTS > $output_objdir/$soname.def; - cat $export_symbols >> $output_objdir/$soname.def; - fi~ - $CC -shared -nostdlib $output_objdir/$soname.def $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' - else - _LT_TAGVAR(ld_shlibs, $1)=no - fi - ;; + cygwin* | mingw* | pw32* | cegcc*) + case $GXX,$cc_basename in + ,cl* | no,cl*) + # Native MSVC + # hardcode_libdir_flag_spec is actually meaningless, as there is + # no search path for DLLs. + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)=' ' + _LT_TAGVAR(allow_undefined_flag, $1)=unsupported + _LT_TAGVAR(always_export_symbols, $1)=yes + _LT_TAGVAR(file_list_spec, $1)='@' + # Tell ltmain to make .lib files, not .a files. + libext=lib + # Tell ltmain to make .dll files, not .so files. + shrext_cmds=".dll" + # FIXME: Setting linknames here is a bad hack. + _LT_TAGVAR(archive_cmds, $1)='$CC -o $output_objdir/$soname $libobjs $compiler_flags $deplibs -Wl,-dll~linknames=' + _LT_TAGVAR(archive_expsym_cmds, $1)='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then + $SED -n -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' -e '1\\\!p' < $export_symbols > $output_objdir/$soname.exp; + else + $SED -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' < $export_symbols > $output_objdir/$soname.exp; + fi~ + $CC -o $tool_output_objdir$soname $libobjs $compiler_flags $deplibs "@$tool_output_objdir$soname.exp" -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~ + linknames=' + # The linker will not automatically build a static lib if we build a DLL. + # _LT_TAGVAR(old_archive_from_new_cmds, $1)='true' + _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes + # Don't use ranlib + _LT_TAGVAR(old_postinstall_cmds, $1)='chmod 644 $oldlib' + _LT_TAGVAR(postlink_cmds, $1)='lt_outputfile="@OUTPUT@"~ + lt_tool_outputfile="@TOOL_OUTPUT@"~ + case $lt_outputfile in + *.exe|*.EXE) ;; + *) + lt_outputfile="$lt_outputfile.exe" + lt_tool_outputfile="$lt_tool_outputfile.exe" + ;; + esac~ + func_to_tool_file "$lt_outputfile"~ + if test "$MANIFEST_TOOL" != ":" && test -f "$lt_outputfile.manifest"; then + $MANIFEST_TOOL -manifest "$lt_tool_outputfile.manifest" -outputresource:"$lt_tool_outputfile" || exit 1; + $RM "$lt_outputfile.manifest"; + fi' + ;; + *) + # g++ + # _LT_TAGVAR(hardcode_libdir_flag_spec, $1) is actually meaningless, + # as there is no search path for DLLs. + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' + _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-all-symbols' + _LT_TAGVAR(allow_undefined_flag, $1)=unsupported + _LT_TAGVAR(always_export_symbols, $1)=no + _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes + + if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then + _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' + # If the export-symbols file already is a .def file (1st line + # is EXPORTS), use it as is; otherwise, prepend... + _LT_TAGVAR(archive_expsym_cmds, $1)='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then + cp $export_symbols $output_objdir/$soname.def; + else + echo EXPORTS > $output_objdir/$soname.def; + cat $export_symbols >> $output_objdir/$soname.def; + fi~ + $CC -shared -nostdlib $output_objdir/$soname.def $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' + else + _LT_TAGVAR(ld_shlibs, $1)=no + fi + ;; + esac + ;; darwin* | rhapsody*) _LT_DARWIN_LINKER_FEATURES($1) ;; @@ -5630,7 +6225,7 @@ if test "$_lt_caught_CXX_error" != yes; then esac ;; - freebsd[[12]]*) + freebsd2.*) # C++ shared libraries reported to be fairly broken before # switch to ELF _LT_TAGVAR(ld_shlibs, $1)=no @@ -5649,6 +6244,11 @@ if test "$_lt_caught_CXX_error" != yes; then gnu*) ;; + haiku*) + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + _LT_TAGVAR(link_all_deplibs, $1)=yes + ;; + hpux9*) _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)=: @@ -5673,11 +6273,11 @@ if test "$_lt_caught_CXX_error" != yes; then # explicitly linking system object files so we need to strip them # from the output so that they don't get included in the library # dependencies. - output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | $EGREP "\-L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; $ECHO "X$list" | $Xsed' + output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | $EGREP "\-L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' ;; *) if test "$GXX" = yes; then - _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$CC -shared -nostdlib -fPIC ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' + _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$CC -shared -nostdlib $pic_flag ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' else # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no @@ -5738,7 +6338,7 @@ if test "$_lt_caught_CXX_error" != yes; then # explicitly linking system object files so we need to strip them # from the output so that they don't get included in the library # dependencies. - output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | $GREP "\-L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; $ECHO "X$list" | $Xsed' + output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | $GREP "\-L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' ;; *) if test "$GXX" = yes; then @@ -5748,10 +6348,10 @@ if test "$_lt_caught_CXX_error" != yes; then _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' ;; ia64*) - _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $pic_flag ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' ;; *) - _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $pic_flag ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' ;; esac fi @@ -5781,7 +6381,7 @@ if test "$_lt_caught_CXX_error" != yes; then case $cc_basename in CC*) # SGI C++ - _LT_TAGVAR(archive_cmds, $1)='$CC -shared -all -multigot $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -soname $soname `test -n "$verstring" && $ECHO "X-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -o $lib' + _LT_TAGVAR(archive_cmds, $1)='$CC -shared -all -multigot $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib' # Archives containing C++ object files must be created using # "CC -ar", where "CC" is the IRIX C++ compiler. This is @@ -5792,9 +6392,9 @@ if test "$_lt_caught_CXX_error" != yes; then *) if test "$GXX" = yes; then if test "$with_gnu_ld" = no; then - _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && $ECHO "X${wl}-set_version ${wl}$verstring" | $Xsed` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' else - _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && $ECHO "X${wl}-set_version ${wl}$verstring" | $Xsed` -o $lib' + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` -o $lib' fi fi _LT_TAGVAR(link_all_deplibs, $1)=yes @@ -5805,7 +6405,7 @@ if test "$_lt_caught_CXX_error" != yes; then _LT_TAGVAR(inherit_rpath, $1)=yes ;; - linux* | k*bsd*-gnu) + linux* | k*bsd*-gnu | kopensolaris*-gnu) case $cc_basename in KCC*) # Kuck and Associates, Inc. (KAI) C++ Compiler @@ -5823,7 +6423,7 @@ if test "$_lt_caught_CXX_error" != yes; then # explicitly linking system object files so we need to strip them # from the output so that they don't get included in the library # dependencies. - output_verbose_link_cmd='templist=`$CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1 | $GREP "ld"`; rm -f libconftest$shared_ext; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; $ECHO "X$list" | $Xsed' + output_verbose_link_cmd='templist=`$CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1 | $GREP "ld"`; rm -f libconftest$shared_ext; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' @@ -5860,26 +6460,26 @@ if test "$_lt_caught_CXX_error" != yes; then pgCC* | pgcpp*) # Portland Group C++ compiler case `$CC -V` in - *pgCC\ [[1-5]]* | *pgcpp\ [[1-5]]*) + *pgCC\ [[1-5]].* | *pgcpp\ [[1-5]].*) _LT_TAGVAR(prelink_cmds, $1)='tpldir=Template.dir~ rm -rf $tpldir~ $CC --prelink_objects --instantiation_dir $tpldir $objs $libobjs $compile_deplibs~ - compile_command="$compile_command `find $tpldir -name \*.o | $NL2SP`"' + compile_command="$compile_command `find $tpldir -name \*.o | sort | $NL2SP`"' _LT_TAGVAR(old_archive_cmds, $1)='tpldir=Template.dir~ rm -rf $tpldir~ $CC --prelink_objects --instantiation_dir $tpldir $oldobjs$old_deplibs~ - $AR $AR_FLAGS $oldlib$oldobjs$old_deplibs `find $tpldir -name \*.o | $NL2SP`~ + $AR $AR_FLAGS $oldlib$oldobjs$old_deplibs `find $tpldir -name \*.o | sort | $NL2SP`~ $RANLIB $oldlib' _LT_TAGVAR(archive_cmds, $1)='tpldir=Template.dir~ rm -rf $tpldir~ $CC --prelink_objects --instantiation_dir $tpldir $predep_objects $libobjs $deplibs $convenience $postdep_objects~ - $CC -shared $pic_flag $predep_objects $libobjs $deplibs `find $tpldir -name \*.o | $NL2SP` $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname -o $lib' + $CC -shared $pic_flag $predep_objects $libobjs $deplibs `find $tpldir -name \*.o | sort | $NL2SP` $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='tpldir=Template.dir~ rm -rf $tpldir~ $CC --prelink_objects --instantiation_dir $tpldir $predep_objects $libobjs $deplibs $convenience $postdep_objects~ - $CC -shared $pic_flag $predep_objects $libobjs $deplibs `find $tpldir -name \*.o | $NL2SP` $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname ${wl}-retain-symbols-file ${wl}$export_symbols -o $lib' + $CC -shared $pic_flag $predep_objects $libobjs $deplibs `find $tpldir -name \*.o | sort | $NL2SP` $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname ${wl}-retain-symbols-file ${wl}$export_symbols -o $lib' ;; - *) # Version 6 will use weak symbols + *) # Version 6 and above use weak symbols _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname ${wl}-retain-symbols-file ${wl}$export_symbols -o $lib' ;; @@ -5887,7 +6487,7 @@ if test "$_lt_caught_CXX_error" != yes; then _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}--rpath ${wl}$libdir' _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' - _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $ECHO \"$new_convenience\"` ${wl}--no-whole-archive' + _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' ;; cxx*) # Compaq C++ @@ -5906,9 +6506,9 @@ if test "$_lt_caught_CXX_error" != yes; then # explicitly linking system object files so we need to strip them # from the output so that they don't get included in the library # dependencies. - output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "ld"`; templist=`$ECHO "X$templist" | $Xsed -e "s/\(^.*ld.*\)\( .*ld .*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; $ECHO "X$list" | $Xsed' + output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "ld"`; templist=`func_echo_all "$templist" | $SED "s/\(^.*ld.*\)\( .*ld .*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "X$list" | $Xsed' ;; - xl*) + xl* | mpixl* | bgxl*) # IBM XL 8.0 on PPC, with GNU ld _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' @@ -5928,13 +6528,13 @@ if test "$_lt_caught_CXX_error" != yes; then _LT_TAGVAR(archive_cmds, $1)='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-retain-symbols-file ${wl}$export_symbols' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' - _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; $ECHO \"$new_convenience\"` ${wl}--no-whole-archive' + _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' _LT_TAGVAR(compiler_needs_object, $1)=yes # Not sure whether something based on # $CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1 # would be better. - output_verbose_link_cmd='echo' + output_verbose_link_cmd='func_echo_all' # Archives containing C++ object files must be created using # "CC -xar", where "CC" is the Sun C++ compiler. This is @@ -6003,7 +6603,7 @@ if test "$_lt_caught_CXX_error" != yes; then _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' _LT_TAGVAR(whole_archive_flag_spec, $1)="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' fi - output_verbose_link_cmd=echo + output_verbose_link_cmd=func_echo_all else _LT_TAGVAR(ld_shlibs, $1)=no fi @@ -6038,15 +6638,15 @@ if test "$_lt_caught_CXX_error" != yes; then case $host in osf3*) _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*' - _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $soname `test -n "$verstring" && $ECHO "X${wl}-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -o $lib' + _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $soname `test -n "$verstring" && func_echo_all "${wl}-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' ;; *) _LT_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*' - _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname `test -n "$verstring" && $ECHO "X-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -o $lib' + _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done~ echo "-hidden">> $lib.exp~ - $CC -shared$allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname ${wl}-input ${wl}$lib.exp `test -n "$verstring" && $ECHO "X-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -o $lib~ + $CC -shared$allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname ${wl}-input ${wl}$lib.exp `test -n "$verstring" && $ECHO "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib~ $RM $lib.exp' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir' ;; @@ -6062,17 +6662,17 @@ if test "$_lt_caught_CXX_error" != yes; then # explicitly linking system object files so we need to strip them # from the output so that they don't get included in the library # dependencies. - output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "ld" | $GREP -v "ld:"`; templist=`$ECHO "X$templist" | $Xsed -e "s/\(^.*ld.*\)\( .*ld.*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; $ECHO "X$list" | $Xsed' + output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "ld" | $GREP -v "ld:"`; templist=`func_echo_all "$templist" | $SED "s/\(^.*ld.*\)\( .*ld.*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' ;; *) if test "$GXX" = yes && test "$with_gnu_ld" = no; then _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*' case $host in osf3*) - _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && $ECHO "X${wl}-set_version ${wl}$verstring" | $Xsed` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' + _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' ;; *) - _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && $ECHO "${wl}-set_version ${wl}$verstring" | $Xsed` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' ;; esac @@ -6082,7 +6682,7 @@ if test "$_lt_caught_CXX_error" != yes; then # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. - output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "\-L"' + output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"' else # FIXME: insert proper C++ library support @@ -6118,7 +6718,7 @@ if test "$_lt_caught_CXX_error" != yes; then solaris*) case $cc_basename in - CC*) + CC* | sunCC*) # Sun C++ 4.2, 5.x and Centerline C++ _LT_TAGVAR(archive_cmds_need_lc,$1)=yes _LT_TAGVAR(no_undefined_flag, $1)=' -zdefs' @@ -6139,7 +6739,7 @@ if test "$_lt_caught_CXX_error" != yes; then esac _LT_TAGVAR(link_all_deplibs, $1)=yes - output_verbose_link_cmd='echo' + output_verbose_link_cmd='func_echo_all' # Archives containing C++ object files must be created using # "CC -xar", where "CC" is the Sun C++ compiler. This is @@ -6159,14 +6759,14 @@ if test "$_lt_caught_CXX_error" != yes; then if test "$GXX" = yes && test "$with_gnu_ld" = no; then _LT_TAGVAR(no_undefined_flag, $1)=' ${wl}-z ${wl}defs' if $CC --version | $GREP -v '^2\.7' > /dev/null; then - _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib' + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ - $CC -shared -nostdlib ${wl}-M $wl$lib.exp -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp' + $CC -shared $pic_flag -nostdlib ${wl}-M $wl$lib.exp -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp' # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. - output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "\-L"' + output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"' else # g++ 2.7 appears to require `-G' NOT `-shared' on this # platform. @@ -6177,7 +6777,7 @@ if test "$_lt_caught_CXX_error" != yes; then # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. - output_verbose_link_cmd='$CC -G $CFLAGS -v conftest.$objext 2>&1 | $GREP "\-L"' + output_verbose_link_cmd='$CC -G $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"' fi _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R $wl$libdir' @@ -6231,6 +6831,10 @@ if test "$_lt_caught_CXX_error" != yes; then CC*) _LT_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + _LT_TAGVAR(old_archive_cmds, $1)='$CC -Tprelink_objects $oldobjs~ + '"$_LT_TAGVAR(old_archive_cmds, $1)" + _LT_TAGVAR(reload_cmds, $1)='$CC -Tprelink_objects $reload_objs~ + '"$_LT_TAGVAR(reload_cmds, $1)" ;; *) _LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' @@ -6286,6 +6890,7 @@ if test "$_lt_caught_CXX_error" != yes; then fi # test -n "$compiler" CC=$lt_save_CC + CFLAGS=$lt_save_CFLAGS LDCXX=$LD LD=$lt_save_LD GCC=$lt_save_GCC @@ -6300,6 +6905,29 @@ AC_LANG_POP ])# _LT_LANG_CXX_CONFIG +# _LT_FUNC_STRIPNAME_CNF +# ---------------------- +# func_stripname_cnf prefix suffix name +# strip PREFIX and SUFFIX off of NAME. +# PREFIX and SUFFIX must not contain globbing or regex special +# characters, hashes, percent signs, but SUFFIX may contain a leading +# dot (in which case that matches only a dot). +# +# This function is identical to the (non-XSI) version of func_stripname, +# except this one can be used by m4 code that may be executed by configure, +# rather than the libtool script. +m4_defun([_LT_FUNC_STRIPNAME_CNF],[dnl +AC_REQUIRE([_LT_DECL_SED]) +AC_REQUIRE([_LT_PROG_ECHO_BACKSLASH]) +func_stripname_cnf () +{ + case ${2} in + .*) func_stripname_result=`$ECHO "${3}" | $SED "s%^${1}%%; s%\\\\${2}\$%%"`;; + *) func_stripname_result=`$ECHO "${3}" | $SED "s%^${1}%%; s%${2}\$%%"`;; + esac +} # func_stripname_cnf +])# _LT_FUNC_STRIPNAME_CNF + # _LT_SYS_HIDDEN_LIBDEPS([TAGNAME]) # --------------------------------- # Figure out "hidden" library dependencies from verbose @@ -6308,6 +6936,7 @@ AC_LANG_POP # objects, libraries and library flags. m4_defun([_LT_SYS_HIDDEN_LIBDEPS], [m4_require([_LT_FILEUTILS_DEFAULTS])dnl +AC_REQUIRE([_LT_FUNC_STRIPNAME_CNF])dnl # Dependencies to place before and after the object being linked: _LT_TAGVAR(predep_objects, $1)= _LT_TAGVAR(postdep_objects, $1)= @@ -6357,7 +6986,20 @@ public class foo { } }; _LT_EOF +], [$1], [GO], [cat > conftest.$ac_ext <<_LT_EOF +package foo +func foo() { +} +_LT_EOF ]) + +_lt_libdeps_save_CFLAGS=$CFLAGS +case "$CC $CFLAGS " in #( +*\ -flto*\ *) CFLAGS="$CFLAGS -fno-lto" ;; +*\ -fwhopr*\ *) CFLAGS="$CFLAGS -fno-whopr" ;; +*\ -fuse-linker-plugin*\ *) CFLAGS="$CFLAGS -fno-use-linker-plugin" ;; +esac + dnl Parse the compiler output and extract the necessary dnl objects, libraries and library flags. if AC_TRY_EVAL(ac_compile); then @@ -6369,7 +7011,7 @@ if AC_TRY_EVAL(ac_compile); then pre_test_object_deps_done=no for p in `eval "$output_verbose_link_cmd"`; do - case $p in + case ${prev}${p} in -L* | -R* | -l*) # Some compilers place space between "-{L,R}" and the path. @@ -6378,13 +7020,22 @@ if AC_TRY_EVAL(ac_compile); then test $p = "-R"; then prev=$p continue - else - prev= fi + # Expand the sysroot to ease extracting the directories later. + if test -z "$prev"; then + case $p in + -L*) func_stripname_cnf '-L' '' "$p"; prev=-L; p=$func_stripname_result ;; + -R*) func_stripname_cnf '-R' '' "$p"; prev=-R; p=$func_stripname_result ;; + -l*) func_stripname_cnf '-l' '' "$p"; prev=-l; p=$func_stripname_result ;; + esac + fi + case $p in + =*) func_stripname_cnf '=' '' "$p"; p=$lt_sysroot$func_stripname_result ;; + esac if test "$pre_test_object_deps_done" = no; then - case $p in - -L* | -R*) + case ${prev} in + -L | -R) # Internal compiler library paths should come after those # provided the user. The postdeps already come after the # user supplied libs so there is no need to process them. @@ -6404,8 +7055,10 @@ if AC_TRY_EVAL(ac_compile); then _LT_TAGVAR(postdeps, $1)="${_LT_TAGVAR(postdeps, $1)} ${prev}${p}" fi fi + prev= ;; + *.lto.$objext) ;; # Ignore GCC LTO objects *.$objext) # This assumes that the test object file only shows up # once in the compiler output. @@ -6441,6 +7094,7 @@ else fi $RM -f confest.$objext +CFLAGS=$_lt_libdeps_save_CFLAGS # PORTME: override above test on systems where it is broken m4_if([$1], [CXX], @@ -6477,7 +7131,7 @@ linux*) solaris*) case $cc_basename in - CC*) + CC* | sunCC*) # The more standards-conforming stlport4 library is # incompatible with the Cstd library. Avoid specifying # it if it's in CXXFLAGS. Ignore libCrun as @@ -6521,32 +7175,16 @@ _LT_TAGDECL([], [compiler_lib_search_path], [1], ])# _LT_SYS_HIDDEN_LIBDEPS -# _LT_PROG_F77 -# ------------ -# Since AC_PROG_F77 is broken, in that it returns the empty string -# if there is no fortran compiler, we have our own version here. -m4_defun([_LT_PROG_F77], -[ -pushdef([AC_MSG_ERROR], [_lt_disable_F77=yes]) -AC_PROG_F77 -if test -z "$F77" || test "X$F77" = "Xno"; then - _lt_disable_F77=yes -fi -popdef([AC_MSG_ERROR]) -])# _LT_PROG_F77 - -dnl aclocal-1.4 backwards compatibility: -dnl AC_DEFUN([_LT_PROG_F77], []) - - # _LT_LANG_F77_CONFIG([TAG]) # -------------------------- # Ensure that the configuration variables for a Fortran 77 compiler are # suitably defined. These variables are subsequently used by _LT_CONFIG # to write the compiler configuration to `libtool'. m4_defun([_LT_LANG_F77_CONFIG], -[AC_REQUIRE([_LT_PROG_F77])dnl -AC_LANG_PUSH(Fortran 77) +[AC_LANG_PUSH(Fortran 77) +if test -z "$F77" || test "X$F77" = "Xno"; then + _lt_disable_F77=yes +fi _LT_TAGVAR(archive_cmds_need_lc, $1)=no _LT_TAGVAR(allow_undefined_flag, $1)= @@ -6556,7 +7194,6 @@ _LT_TAGVAR(export_dynamic_flag_spec, $1)= _LT_TAGVAR(hardcode_direct, $1)=no _LT_TAGVAR(hardcode_direct_absolute, $1)=no _LT_TAGVAR(hardcode_libdir_flag_spec, $1)= -_LT_TAGVAR(hardcode_libdir_flag_spec_ld, $1)= _LT_TAGVAR(hardcode_libdir_separator, $1)= _LT_TAGVAR(hardcode_minus_L, $1)=no _LT_TAGVAR(hardcode_automatic, $1)=no @@ -6565,6 +7202,8 @@ _LT_TAGVAR(module_cmds, $1)= _LT_TAGVAR(module_expsym_cmds, $1)= _LT_TAGVAR(link_all_deplibs, $1)=unknown _LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds +_LT_TAGVAR(reload_flag, $1)=$reload_flag +_LT_TAGVAR(reload_cmds, $1)=$reload_cmds _LT_TAGVAR(no_undefined_flag, $1)= _LT_TAGVAR(whole_archive_flag_spec, $1)= _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=no @@ -6604,7 +7243,9 @@ if test "$_lt_disable_F77" != yes; then # Allow CC to be a program name with arguments. lt_save_CC="$CC" lt_save_GCC=$GCC + lt_save_CFLAGS=$CFLAGS CC=${F77-"f77"} + CFLAGS=$FFLAGS compiler=$CC _LT_TAGVAR(compiler, $1)=$CC _LT_CC_BASENAME([$compiler]) @@ -6658,38 +7299,24 @@ if test "$_lt_disable_F77" != yes; then GCC=$lt_save_GCC CC="$lt_save_CC" + CFLAGS="$lt_save_CFLAGS" fi # test "$_lt_disable_F77" != yes AC_LANG_POP ])# _LT_LANG_F77_CONFIG -# _LT_PROG_FC -# ----------- -# Since AC_PROG_FC is broken, in that it returns the empty string -# if there is no fortran compiler, we have our own version here. -m4_defun([_LT_PROG_FC], -[ -pushdef([AC_MSG_ERROR], [_lt_disable_FC=yes]) -AC_PROG_FC -if test -z "$FC" || test "X$FC" = "Xno"; then - _lt_disable_FC=yes -fi -popdef([AC_MSG_ERROR]) -])# _LT_PROG_FC - -dnl aclocal-1.4 backwards compatibility: -dnl AC_DEFUN([_LT_PROG_FC], []) - - # _LT_LANG_FC_CONFIG([TAG]) # ------------------------- # Ensure that the configuration variables for a Fortran compiler are # suitably defined. These variables are subsequently used by _LT_CONFIG # to write the compiler configuration to `libtool'. m4_defun([_LT_LANG_FC_CONFIG], -[AC_REQUIRE([_LT_PROG_FC])dnl -AC_LANG_PUSH(Fortran) +[AC_LANG_PUSH(Fortran) + +if test -z "$FC" || test "X$FC" = "Xno"; then + _lt_disable_FC=yes +fi _LT_TAGVAR(archive_cmds_need_lc, $1)=no _LT_TAGVAR(allow_undefined_flag, $1)= @@ -6699,7 +7326,6 @@ _LT_TAGVAR(export_dynamic_flag_spec, $1)= _LT_TAGVAR(hardcode_direct, $1)=no _LT_TAGVAR(hardcode_direct_absolute, $1)=no _LT_TAGVAR(hardcode_libdir_flag_spec, $1)= -_LT_TAGVAR(hardcode_libdir_flag_spec_ld, $1)= _LT_TAGVAR(hardcode_libdir_separator, $1)= _LT_TAGVAR(hardcode_minus_L, $1)=no _LT_TAGVAR(hardcode_automatic, $1)=no @@ -6708,6 +7334,8 @@ _LT_TAGVAR(module_cmds, $1)= _LT_TAGVAR(module_expsym_cmds, $1)= _LT_TAGVAR(link_all_deplibs, $1)=unknown _LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds +_LT_TAGVAR(reload_flag, $1)=$reload_flag +_LT_TAGVAR(reload_cmds, $1)=$reload_cmds _LT_TAGVAR(no_undefined_flag, $1)= _LT_TAGVAR(whole_archive_flag_spec, $1)= _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=no @@ -6747,7 +7375,9 @@ if test "$_lt_disable_FC" != yes; then # Allow CC to be a program name with arguments. lt_save_CC="$CC" lt_save_GCC=$GCC + lt_save_CFLAGS=$CFLAGS CC=${FC-"f95"} + CFLAGS=$FCFLAGS compiler=$CC GCC=$ac_cv_fc_compiler_gnu @@ -6803,7 +7433,8 @@ if test "$_lt_disable_FC" != yes; then fi # test -n "$compiler" GCC=$lt_save_GCC - CC="$lt_save_CC" + CC=$lt_save_CC + CFLAGS=$lt_save_CFLAGS fi # test "$_lt_disable_FC" != yes AC_LANG_POP @@ -6840,10 +7471,12 @@ _LT_COMPILER_BOILERPLATE _LT_LINKER_BOILERPLATE # Allow CC to be a program name with arguments. -lt_save_CC="$CC" +lt_save_CC=$CC +lt_save_CFLAGS=$CFLAGS lt_save_GCC=$GCC GCC=yes CC=${GCJ-"gcj"} +CFLAGS=$GCJFLAGS compiler=$CC _LT_TAGVAR(compiler, $1)=$CC _LT_TAGVAR(LD, $1)="$LD" @@ -6853,6 +7486,8 @@ _LT_CC_BASENAME([$compiler]) _LT_TAGVAR(archive_cmds_need_lc, $1)=no _LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds +_LT_TAGVAR(reload_flag, $1)=$reload_flag +_LT_TAGVAR(reload_cmds, $1)=$reload_cmds ## CAVEAT EMPTOR: ## There is no encapsulation within the following macros, do not change @@ -6872,10 +7507,82 @@ fi AC_LANG_RESTORE GCC=$lt_save_GCC -CC="$lt_save_CC" +CC=$lt_save_CC +CFLAGS=$lt_save_CFLAGS ])# _LT_LANG_GCJ_CONFIG +# _LT_LANG_GO_CONFIG([TAG]) +# -------------------------- +# Ensure that the configuration variables for the GNU Go compiler +# are suitably defined. These variables are subsequently used by _LT_CONFIG +# to write the compiler configuration to `libtool'. +m4_defun([_LT_LANG_GO_CONFIG], +[AC_REQUIRE([LT_PROG_GO])dnl +AC_LANG_SAVE + +# Source file extension for Go test sources. +ac_ext=go + +# Object file extension for compiled Go test sources. +objext=o +_LT_TAGVAR(objext, $1)=$objext + +# Code to be used in simple compile tests +lt_simple_compile_test_code="package main; func main() { }" + +# Code to be used in simple link tests +lt_simple_link_test_code='package main; func main() { }' + +# ltmain only uses $CC for tagged configurations so make sure $CC is set. +_LT_TAG_COMPILER + +# save warnings/boilerplate of simple test code +_LT_COMPILER_BOILERPLATE +_LT_LINKER_BOILERPLATE + +# Allow CC to be a program name with arguments. +lt_save_CC=$CC +lt_save_CFLAGS=$CFLAGS +lt_save_GCC=$GCC +GCC=yes +CC=${GOC-"gccgo"} +CFLAGS=$GOFLAGS +compiler=$CC +_LT_TAGVAR(compiler, $1)=$CC +_LT_TAGVAR(LD, $1)="$LD" +_LT_CC_BASENAME([$compiler]) + +# Go did not exist at the time GCC didn't implicitly link libc in. +_LT_TAGVAR(archive_cmds_need_lc, $1)=no + +_LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds +_LT_TAGVAR(reload_flag, $1)=$reload_flag +_LT_TAGVAR(reload_cmds, $1)=$reload_cmds + +## CAVEAT EMPTOR: +## There is no encapsulation within the following macros, do not change +## the running order or otherwise move them around unless you know exactly +## what you are doing... +if test -n "$compiler"; then + _LT_COMPILER_NO_RTTI($1) + _LT_COMPILER_PIC($1) + _LT_COMPILER_C_O($1) + _LT_COMPILER_FILE_LOCKS($1) + _LT_LINKER_SHLIBS($1) + _LT_LINKER_HARDCODE_LIBPATH($1) + + _LT_CONFIG($1) +fi + +AC_LANG_RESTORE + +GCC=$lt_save_GCC +CC=$lt_save_CC +CFLAGS=$lt_save_CFLAGS +])# _LT_LANG_GO_CONFIG + + # _LT_LANG_RC_CONFIG([TAG]) # ------------------------- # Ensure that the configuration variables for the Windows resource compiler @@ -6907,9 +7614,11 @@ _LT_LINKER_BOILERPLATE # Allow CC to be a program name with arguments. lt_save_CC="$CC" +lt_save_CFLAGS=$CFLAGS lt_save_GCC=$GCC GCC= CC=${RC-"windres"} +CFLAGS= compiler=$CC _LT_TAGVAR(compiler, $1)=$CC _LT_CC_BASENAME([$compiler]) @@ -6922,7 +7631,8 @@ fi GCC=$lt_save_GCC AC_LANG_RESTORE -CC="$lt_save_CC" +CC=$lt_save_CC +CFLAGS=$lt_save_CFLAGS ])# _LT_LANG_RC_CONFIG @@ -6942,6 +7652,13 @@ dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([LT_AC_PROG_GCJ], []) +# LT_PROG_GO +# ---------- +AC_DEFUN([LT_PROG_GO], +[AC_CHECK_TOOL(GOC, gccgo,) +]) + + # LT_PROG_RC # ---------- AC_DEFUN([LT_PROG_RC], @@ -6970,6 +7687,27 @@ AC_SUBST([GREP]) ]) +# _LT_DECL_OBJDUMP +# -------------- +# If we don't have a new enough Autoconf to choose the best objdump +# available, choose the one first in the user's PATH. +m4_defun([_LT_DECL_OBJDUMP], +[AC_CHECK_TOOL(OBJDUMP, objdump, false) +test -z "$OBJDUMP" && OBJDUMP=objdump +_LT_DECL([], [OBJDUMP], [1], [An object symbol dumper]) +AC_SUBST([OBJDUMP]) +]) + +# _LT_DECL_DLLTOOL +# ---------------- +# Ensure DLLTOOL variable is set. +m4_defun([_LT_DECL_DLLTOOL], +[AC_CHECK_TOOL(DLLTOOL, dlltool, false) +test -z "$DLLTOOL" && DLLTOOL=dlltool +_LT_DECL([], [DLLTOOL], [1], [DLL creation program]) +AC_SUBST([DLLTOOL]) +]) + # _LT_DECL_SED # ------------ # Check for a fully-functional sed program, that truncates @@ -7062,8 +7800,8 @@ m4_defun([_LT_CHECK_SHELL_FEATURES], # Try some XSI features xsi_shell=no ( _lt_dummy="a/b/c" - test "${_lt_dummy##*/},${_lt_dummy%/*},"${_lt_dummy%"$_lt_dummy"}, \ - = c,a/b,, \ + test "${_lt_dummy##*/},${_lt_dummy%/*},${_lt_dummy#??}"${_lt_dummy%"$_lt_dummy"}, \ + = c,a/b,b/c, \ && eval 'test $(( 1 + 1 )) -eq 2 \ && test "${#_lt_dummy}" -eq 5' ) >/dev/null 2>&1 \ && xsi_shell=yes @@ -7102,208 +7840,162 @@ _LT_DECL([NL2SP], [lt_NL2SP], [1], [turn newlines into spaces])dnl ])# _LT_CHECK_SHELL_FEATURES -# _LT_PROG_XSI_SHELLFNS -# --------------------- -# Bourne and XSI compatible variants of some useful shell functions. -m4_defun([_LT_PROG_XSI_SHELLFNS], -[case $xsi_shell in - yes) - cat << \_LT_EOF >> "$cfgfile" - -# func_dirname file append nondir_replacement -# Compute the dirname of FILE. If nonempty, add APPEND to the result, -# otherwise set result to NONDIR_REPLACEMENT. -func_dirname () -{ - case ${1} in - */*) func_dirname_result="${1%/*}${2}" ;; - * ) func_dirname_result="${3}" ;; - esac -} - -# func_basename file -func_basename () -{ - func_basename_result="${1##*/}" -} - -# func_dirname_and_basename file append nondir_replacement -# perform func_basename and func_dirname in a single function -# call: -# dirname: Compute the dirname of FILE. If nonempty, -# add APPEND to the result, otherwise set result -# to NONDIR_REPLACEMENT. -# value returned in "$func_dirname_result" -# basename: Compute filename of FILE. -# value retuned in "$func_basename_result" -# Implementation must be kept synchronized with func_dirname -# and func_basename. For efficiency, we do not delegate to -# those functions but instead duplicate the functionality here. -func_dirname_and_basename () -{ - case ${1} in - */*) func_dirname_result="${1%/*}${2}" ;; - * ) func_dirname_result="${3}" ;; - esac - func_basename_result="${1##*/}" -} - -# func_stripname prefix suffix name -# strip PREFIX and SUFFIX off of NAME. -# PREFIX and SUFFIX must not contain globbing or regex special -# characters, hashes, percent signs, but SUFFIX may contain a leading -# dot (in which case that matches only a dot). -func_stripname () -{ - # pdksh 5.2.14 does not do ${X%$Y} correctly if both X and Y are - # positional parameters, so assign one to ordinary parameter first. - func_stripname_result=${3} - func_stripname_result=${func_stripname_result#"${1}"} - func_stripname_result=${func_stripname_result%"${2}"} -} - -# func_opt_split -func_opt_split () -{ - func_opt_split_opt=${1%%=*} - func_opt_split_arg=${1#*=} -} +# _LT_PROG_FUNCTION_REPLACE (FUNCNAME, REPLACEMENT-BODY) +# ------------------------------------------------------ +# In `$cfgfile', look for function FUNCNAME delimited by `^FUNCNAME ()$' and +# '^} FUNCNAME ', and replace its body with REPLACEMENT-BODY. +m4_defun([_LT_PROG_FUNCTION_REPLACE], +[dnl { +sed -e '/^$1 ()$/,/^} # $1 /c\ +$1 ()\ +{\ +m4_bpatsubsts([$2], [$], [\\], [^\([ ]\)], [\\\1]) +} # Extended-shell $1 implementation' "$cfgfile" > $cfgfile.tmp \ + && mv -f "$cfgfile.tmp" "$cfgfile" \ + || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") +test 0 -eq $? || _lt_function_replace_fail=: +]) -# func_lo2o object -func_lo2o () -{ - case ${1} in - *.lo) func_lo2o_result=${1%.lo}.${objext} ;; - *) func_lo2o_result=${1} ;; - esac -} -# func_xform libobj-or-source -func_xform () -{ - func_xform_result=${1%.*}.lo -} +# _LT_PROG_REPLACE_SHELLFNS +# ------------------------- +# Replace existing portable implementations of several shell functions with +# equivalent extended shell implementations where those features are available.. +m4_defun([_LT_PROG_REPLACE_SHELLFNS], +[if test x"$xsi_shell" = xyes; then + _LT_PROG_FUNCTION_REPLACE([func_dirname], [dnl + case ${1} in + */*) func_dirname_result="${1%/*}${2}" ;; + * ) func_dirname_result="${3}" ;; + esac]) + + _LT_PROG_FUNCTION_REPLACE([func_basename], [dnl + func_basename_result="${1##*/}"]) + + _LT_PROG_FUNCTION_REPLACE([func_dirname_and_basename], [dnl + case ${1} in + */*) func_dirname_result="${1%/*}${2}" ;; + * ) func_dirname_result="${3}" ;; + esac + func_basename_result="${1##*/}"]) -# func_arith arithmetic-term... -func_arith () -{ - func_arith_result=$(( $[*] )) -} + _LT_PROG_FUNCTION_REPLACE([func_stripname], [dnl + # pdksh 5.2.14 does not do ${X%$Y} correctly if both X and Y are + # positional parameters, so assign one to ordinary parameter first. + func_stripname_result=${3} + func_stripname_result=${func_stripname_result#"${1}"} + func_stripname_result=${func_stripname_result%"${2}"}]) -# func_len string -# STRING may not start with a hyphen. -func_len () -{ - func_len_result=${#1} -} + _LT_PROG_FUNCTION_REPLACE([func_split_long_opt], [dnl + func_split_long_opt_name=${1%%=*} + func_split_long_opt_arg=${1#*=}]) -_LT_EOF - ;; - *) # Bourne compatible functions. - cat << \_LT_EOF >> "$cfgfile" + _LT_PROG_FUNCTION_REPLACE([func_split_short_opt], [dnl + func_split_short_opt_arg=${1#??} + func_split_short_opt_name=${1%"$func_split_short_opt_arg"}]) -# func_dirname file append nondir_replacement -# Compute the dirname of FILE. If nonempty, add APPEND to the result, -# otherwise set result to NONDIR_REPLACEMENT. -func_dirname () -{ - # Extract subdirectory from the argument. - func_dirname_result=`$ECHO "X${1}" | $Xsed -e "$dirname"` - if test "X$func_dirname_result" = "X${1}"; then - func_dirname_result="${3}" - else - func_dirname_result="$func_dirname_result${2}" - fi -} + _LT_PROG_FUNCTION_REPLACE([func_lo2o], [dnl + case ${1} in + *.lo) func_lo2o_result=${1%.lo}.${objext} ;; + *) func_lo2o_result=${1} ;; + esac]) -# func_basename file -func_basename () -{ - func_basename_result=`$ECHO "X${1}" | $Xsed -e "$basename"` -} + _LT_PROG_FUNCTION_REPLACE([func_xform], [ func_xform_result=${1%.*}.lo]) -dnl func_dirname_and_basename -dnl A portable version of this function is already defined in general.m4sh -dnl so there is no need for it here. + _LT_PROG_FUNCTION_REPLACE([func_arith], [ func_arith_result=$(( $[*] ))]) -# func_stripname prefix suffix name -# strip PREFIX and SUFFIX off of NAME. -# PREFIX and SUFFIX must not contain globbing or regex special -# characters, hashes, percent signs, but SUFFIX may contain a leading -# dot (in which case that matches only a dot). -# func_strip_suffix prefix name -func_stripname () -{ - case ${2} in - .*) func_stripname_result=`$ECHO "X${3}" \ - | $Xsed -e "s%^${1}%%" -e "s%\\\\${2}\$%%"`;; - *) func_stripname_result=`$ECHO "X${3}" \ - | $Xsed -e "s%^${1}%%" -e "s%${2}\$%%"`;; - esac -} - -# sed scripts: -my_sed_long_opt='1s/^\(-[[^=]]*\)=.*/\1/;q' -my_sed_long_arg='1s/^-[[^=]]*=//' - -# func_opt_split -func_opt_split () -{ - func_opt_split_opt=`$ECHO "X${1}" | $Xsed -e "$my_sed_long_opt"` - func_opt_split_arg=`$ECHO "X${1}" | $Xsed -e "$my_sed_long_arg"` -} + _LT_PROG_FUNCTION_REPLACE([func_len], [ func_len_result=${#1}]) +fi -# func_lo2o object -func_lo2o () -{ - func_lo2o_result=`$ECHO "X${1}" | $Xsed -e "$lo2o"` -} +if test x"$lt_shell_append" = xyes; then + _LT_PROG_FUNCTION_REPLACE([func_append], [ eval "${1}+=\\${2}"]) -# func_xform libobj-or-source -func_xform () -{ - func_xform_result=`$ECHO "X${1}" | $Xsed -e 's/\.[[^.]]*$/.lo/'` -} + _LT_PROG_FUNCTION_REPLACE([func_append_quoted], [dnl + func_quote_for_eval "${2}" +dnl m4 expansion turns \\\\ into \\, and then the shell eval turns that into \ + eval "${1}+=\\\\ \\$func_quote_for_eval_result"]) -# func_arith arithmetic-term... -func_arith () -{ - func_arith_result=`expr "$[@]"` -} - -# func_len string -# STRING may not start with a hyphen. -func_len () -{ - func_len_result=`expr "$[1]" : ".*" 2>/dev/null || echo $max_cmd_len` -} - -_LT_EOF -esac + # Save a `func_append' function call where possible by direct use of '+=' + sed -e 's%func_append \([[a-zA-Z_]]\{1,\}\) "%\1+="%g' $cfgfile > $cfgfile.tmp \ + && mv -f "$cfgfile.tmp" "$cfgfile" \ + || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") + test 0 -eq $? || _lt_function_replace_fail=: +else + # Save a `func_append' function call even when '+=' is not available + sed -e 's%func_append \([[a-zA-Z_]]\{1,\}\) "%\1="$\1%g' $cfgfile > $cfgfile.tmp \ + && mv -f "$cfgfile.tmp" "$cfgfile" \ + || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") + test 0 -eq $? || _lt_function_replace_fail=: +fi -case $lt_shell_append in - yes) - cat << \_LT_EOF >> "$cfgfile" +if test x"$_lt_function_replace_fail" = x":"; then + AC_MSG_WARN([Unable to substitute extended shell functions in $ofile]) +fi +]) -# func_append var value -# Append VALUE to the end of shell variable VAR. -func_append () -{ - eval "$[1]+=\$[2]" -} -_LT_EOF +# _LT_PATH_CONVERSION_FUNCTIONS +# ----------------------------- +# Determine which file name conversion functions should be used by +# func_to_host_file (and, implicitly, by func_to_host_path). These are needed +# for certain cross-compile configurations and native mingw. +m4_defun([_LT_PATH_CONVERSION_FUNCTIONS], +[AC_REQUIRE([AC_CANONICAL_HOST])dnl +AC_REQUIRE([AC_CANONICAL_BUILD])dnl +AC_MSG_CHECKING([how to convert $build file names to $host format]) +AC_CACHE_VAL(lt_cv_to_host_file_cmd, +[case $host in + *-*-mingw* ) + case $build in + *-*-mingw* ) # actually msys + lt_cv_to_host_file_cmd=func_convert_file_msys_to_w32 + ;; + *-*-cygwin* ) + lt_cv_to_host_file_cmd=func_convert_file_cygwin_to_w32 + ;; + * ) # otherwise, assume *nix + lt_cv_to_host_file_cmd=func_convert_file_nix_to_w32 + ;; + esac ;; - *) - cat << \_LT_EOF >> "$cfgfile" - -# func_append var value -# Append VALUE to the end of shell variable VAR. -func_append () -{ - eval "$[1]=\$$[1]\$[2]" -} - -_LT_EOF + *-*-cygwin* ) + case $build in + *-*-mingw* ) # actually msys + lt_cv_to_host_file_cmd=func_convert_file_msys_to_cygwin + ;; + *-*-cygwin* ) + lt_cv_to_host_file_cmd=func_convert_file_noop + ;; + * ) # otherwise, assume *nix + lt_cv_to_host_file_cmd=func_convert_file_nix_to_cygwin + ;; + esac ;; - esac + * ) # unhandled hosts (and "normal" native builds) + lt_cv_to_host_file_cmd=func_convert_file_noop + ;; +esac +]) +to_host_file_cmd=$lt_cv_to_host_file_cmd +AC_MSG_RESULT([$lt_cv_to_host_file_cmd]) +_LT_DECL([to_host_file_cmd], [lt_cv_to_host_file_cmd], + [0], [convert $build file names to $host format])dnl + +AC_MSG_CHECKING([how to convert $build file names to toolchain format]) +AC_CACHE_VAL(lt_cv_to_tool_file_cmd, +[#assume ordinary cross tools, or native build. +lt_cv_to_tool_file_cmd=func_convert_file_noop +case $host in + *-*-mingw* ) + case $build in + *-*-mingw* ) # actually msys + lt_cv_to_tool_file_cmd=func_convert_file_msys_to_w32 + ;; + esac + ;; +esac ]) +to_tool_file_cmd=$lt_cv_to_tool_file_cmd +AC_MSG_RESULT([$lt_cv_to_tool_file_cmd]) +_LT_DECL([to_tool_file_cmd], [lt_cv_to_tool_file_cmd], + [0], [convert $build files to toolchain format])dnl +])# _LT_PATH_CONVERSION_FUNCTIONS diff --git a/cpp/thirdparty/protobuf-2.3.0/m4/ltoptions.m4 b/cpp/thirdparty/protobuf-2.5.0/gtest/m4/ltoptions.m4 similarity index 93% rename from cpp/thirdparty/protobuf-2.3.0/m4/ltoptions.m4 rename to cpp/thirdparty/protobuf-2.5.0/gtest/m4/ltoptions.m4 index e97011948..5d9acd8e2 100644 --- a/cpp/thirdparty/protobuf-2.3.0/m4/ltoptions.m4 +++ b/cpp/thirdparty/protobuf-2.5.0/gtest/m4/ltoptions.m4 @@ -1,13 +1,14 @@ # Helper functions for option handling. -*- Autoconf -*- # -# Copyright (C) 2004, 2005, 2007, 2008 Free Software Foundation, Inc. +# Copyright (C) 2004, 2005, 2007, 2008, 2009 Free Software Foundation, +# Inc. # Written by Gary V. Vaughan, 2004 # # This file is free software; the Free Software Foundation gives # unlimited permission to copy and/or distribute it, with or without # modifications, as long as this notice is preserved. -# serial 6 ltoptions.m4 +# serial 7 ltoptions.m4 # This is to help aclocal find these macros, as it can't see m4_define. AC_DEFUN([LTOPTIONS_VERSION], [m4_if([1])]) @@ -125,7 +126,7 @@ LT_OPTION_DEFINE([LT_INIT], [win32-dll], [enable_win32_dll=yes case $host in -*-*-cygwin* | *-*-mingw* | *-*-pw32*) +*-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-cegcc*) AC_CHECK_TOOL(AS, as, false) AC_CHECK_TOOL(DLLTOOL, dlltool, false) AC_CHECK_TOOL(OBJDUMP, objdump, false) @@ -133,13 +134,13 @@ case $host in esac test -z "$AS" && AS=as -_LT_DECL([], [AS], [0], [Assembler program])dnl +_LT_DECL([], [AS], [1], [Assembler program])dnl test -z "$DLLTOOL" && DLLTOOL=dlltool -_LT_DECL([], [DLLTOOL], [0], [DLL creation program])dnl +_LT_DECL([], [DLLTOOL], [1], [DLL creation program])dnl test -z "$OBJDUMP" && OBJDUMP=objdump -_LT_DECL([], [OBJDUMP], [0], [Object dumper program])dnl +_LT_DECL([], [OBJDUMP], [1], [Object dumper program])dnl ])# win32-dll AU_DEFUN([AC_LIBTOOL_WIN32_DLL], @@ -325,9 +326,24 @@ dnl AC_DEFUN([AM_DISABLE_FAST_INSTALL], []) # MODE is either `yes' or `no'. If omitted, it defaults to `both'. m4_define([_LT_WITH_PIC], [AC_ARG_WITH([pic], - [AS_HELP_STRING([--with-pic], + [AS_HELP_STRING([--with-pic@<:@=PKGS@:>@], [try to use only PIC/non-PIC objects @<:@default=use both@:>@])], - [pic_mode="$withval"], + [lt_p=${PACKAGE-default} + case $withval in + yes|no) pic_mode=$withval ;; + *) + pic_mode=default + # Look at the argument we got. We use all the common list separators. + lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," + for lt_pkg in $withval; do + IFS="$lt_save_ifs" + if test "X$lt_pkg" = "X$lt_p"; then + pic_mode=yes + fi + done + IFS="$lt_save_ifs" + ;; + esac], [pic_mode=default]) test -z "$pic_mode" && pic_mode=m4_default([$1], [default]) diff --git a/cpp/thirdparty/protobuf-2.3.0/m4/ltsugar.m4 b/cpp/thirdparty/protobuf-2.5.0/gtest/m4/ltsugar.m4 similarity index 88% rename from cpp/thirdparty/protobuf-2.3.0/m4/ltsugar.m4 rename to cpp/thirdparty/protobuf-2.5.0/gtest/m4/ltsugar.m4 index 0d258e070..9000a057d 100644 --- a/cpp/thirdparty/protobuf-2.3.0/m4/ltsugar.m4 +++ b/cpp/thirdparty/protobuf-2.5.0/gtest/m4/ltsugar.m4 @@ -1,13 +1,13 @@ # ltsugar.m4 -- libtool m4 base layer. -*-Autoconf-*- # -# Copyright (C) 2004, 2005, 2007 Free Software Foundation, Inc. -# Written by Gary V. Vaughan, 2004 +# Copyright (C) 2004, 2005, 2007, 2008 Free Software Foundation, Inc. +# Written by Gary V. Vaughan, 2004 # # This file is free software; the Free Software Foundation gives # unlimited permission to copy and/or distribute it, with or without # modifications, as long as this notice is preserved. -# serial 5 ltsugar.m4 +# serial 6 ltsugar.m4 # This is to help aclocal find these macros, as it can't see m4_define. AC_DEFUN([LTSUGAR_VERSION], [m4_if([0.1])]) @@ -63,14 +63,14 @@ m4_define([lt_append], # Produce a SEP delimited list of all paired combinations of elements of # PREFIX-LIST with SUFFIX1 through SUFFIXn. Each element of the list # has the form PREFIXmINFIXSUFFIXn. +# Needed until we can rely on m4_combine added in Autoconf 2.62. m4_define([lt_combine], -[m4_if([$2], [], [], - [m4_if([$4], [], [], - [lt_join(m4_quote(m4_default([$1], [[, ]])), - lt_unquote(m4_split(m4_normalize(m4_foreach(_Lt_prefix, [$2], - [m4_foreach(_Lt_suffix, lt_car([m4_shiftn(3, $@)]), - [_Lt_prefix[]$3[]_Lt_suffix ])])))))])])dnl -]) +[m4_if(m4_eval([$# > 3]), [1], + [m4_pushdef([_Lt_sep], [m4_define([_Lt_sep], m4_defn([lt_car]))])]]dnl +[[m4_foreach([_Lt_prefix], [$2], + [m4_foreach([_Lt_suffix], + ]m4_dquote(m4_dquote(m4_shift(m4_shift(m4_shift($@)))))[, + [_Lt_sep([$1])[]m4_defn([_Lt_prefix])[$3]m4_defn([_Lt_suffix])])])])]) # lt_if_append_uniq(MACRO-NAME, VARNAME, [SEPARATOR], [UNIQ], [NOT-UNIQ]) diff --git a/cpp/thirdparty/protobuf-2.3.0/m4/ltversion.m4 b/cpp/thirdparty/protobuf-2.5.0/gtest/m4/ltversion.m4 similarity index 73% rename from cpp/thirdparty/protobuf-2.3.0/m4/ltversion.m4 rename to cpp/thirdparty/protobuf-2.5.0/gtest/m4/ltversion.m4 index 45cb1557c..07a8602d4 100644 --- a/cpp/thirdparty/protobuf-2.3.0/m4/ltversion.m4 +++ b/cpp/thirdparty/protobuf-2.5.0/gtest/m4/ltversion.m4 @@ -7,17 +7,17 @@ # unlimited permission to copy and/or distribute it, with or without # modifications, as long as this notice is preserved. -# Generated from ltversion.in. +# @configure_input@ -# serial 2976 ltversion.m4 +# serial 3337 ltversion.m4 # This file is part of GNU Libtool -m4_define([LT_PACKAGE_VERSION], [2.2.4]) -m4_define([LT_PACKAGE_REVISION], [1.2976]) +m4_define([LT_PACKAGE_VERSION], [2.4.2]) +m4_define([LT_PACKAGE_REVISION], [1.3337]) AC_DEFUN([LTVERSION_VERSION], -[macro_version='2.2.4' -macro_revision='1.2976' +[macro_version='2.4.2' +macro_revision='1.3337' _LT_DECL(, macro_version, 0, [Which release of libtool.m4 was used?]) _LT_DECL(, macro_revision, 0) ]) diff --git a/cpp/thirdparty/protobuf-2.3.0/m4/lt~obsolete.m4 b/cpp/thirdparty/protobuf-2.5.0/gtest/m4/lt~obsolete.m4 similarity index 90% rename from cpp/thirdparty/protobuf-2.3.0/m4/lt~obsolete.m4 rename to cpp/thirdparty/protobuf-2.5.0/gtest/m4/lt~obsolete.m4 index 637bb2066..c573da90c 100644 --- a/cpp/thirdparty/protobuf-2.3.0/m4/lt~obsolete.m4 +++ b/cpp/thirdparty/protobuf-2.5.0/gtest/m4/lt~obsolete.m4 @@ -1,13 +1,13 @@ # lt~obsolete.m4 -- aclocal satisfying obsolete definitions. -*-Autoconf-*- # -# Copyright (C) 2004, 2005, 2007 Free Software Foundation, Inc. +# Copyright (C) 2004, 2005, 2007, 2009 Free Software Foundation, Inc. # Written by Scott James Remnant, 2004. # # This file is free software; the Free Software Foundation gives # unlimited permission to copy and/or distribute it, with or without # modifications, as long as this notice is preserved. -# serial 4 lt~obsolete.m4 +# serial 5 lt~obsolete.m4 # These exist entirely to fool aclocal when bootstrapping libtool. # @@ -77,7 +77,6 @@ m4_ifndef([AC_DISABLE_FAST_INSTALL], [AC_DEFUN([AC_DISABLE_FAST_INSTALL])]) m4_ifndef([_LT_AC_LANG_CXX], [AC_DEFUN([_LT_AC_LANG_CXX])]) m4_ifndef([_LT_AC_LANG_F77], [AC_DEFUN([_LT_AC_LANG_F77])]) m4_ifndef([_LT_AC_LANG_GCJ], [AC_DEFUN([_LT_AC_LANG_GCJ])]) -m4_ifndef([AC_LIBTOOL_RC], [AC_DEFUN([AC_LIBTOOL_RC])]) m4_ifndef([AC_LIBTOOL_LANG_C_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_C_CONFIG])]) m4_ifndef([_LT_AC_LANG_C_CONFIG], [AC_DEFUN([_LT_AC_LANG_C_CONFIG])]) m4_ifndef([AC_LIBTOOL_LANG_CXX_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_CXX_CONFIG])]) @@ -90,3 +89,10 @@ m4_ifndef([AC_LIBTOOL_LANG_RC_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_RC_CONFIG])]) m4_ifndef([_LT_AC_LANG_RC_CONFIG], [AC_DEFUN([_LT_AC_LANG_RC_CONFIG])]) m4_ifndef([AC_LIBTOOL_CONFIG], [AC_DEFUN([AC_LIBTOOL_CONFIG])]) m4_ifndef([_LT_AC_FILE_LTDLL_C], [AC_DEFUN([_LT_AC_FILE_LTDLL_C])]) +m4_ifndef([_LT_REQUIRED_DARWIN_CHECKS], [AC_DEFUN([_LT_REQUIRED_DARWIN_CHECKS])]) +m4_ifndef([_LT_AC_PROG_CXXCPP], [AC_DEFUN([_LT_AC_PROG_CXXCPP])]) +m4_ifndef([_LT_PREPARE_SED_QUOTE_VARS], [AC_DEFUN([_LT_PREPARE_SED_QUOTE_VARS])]) +m4_ifndef([_LT_PROG_ECHO_BACKSLASH], [AC_DEFUN([_LT_PROG_ECHO_BACKSLASH])]) +m4_ifndef([_LT_PROG_F77], [AC_DEFUN([_LT_PROG_F77])]) +m4_ifndef([_LT_PROG_FC], [AC_DEFUN([_LT_PROG_FC])]) +m4_ifndef([_LT_PROG_CXX], [AC_DEFUN([_LT_PROG_CXX])]) diff --git a/cpp/thirdparty/protobuf-2.3.0/gtest/make/Makefile b/cpp/thirdparty/protobuf-2.5.0/gtest/make/Makefile similarity index 89% rename from cpp/thirdparty/protobuf-2.3.0/gtest/make/Makefile rename to cpp/thirdparty/protobuf-2.5.0/gtest/make/Makefile index 2d8806eb4..5b27b6a2c 100644 --- a/cpp/thirdparty/protobuf-2.3.0/gtest/make/Makefile +++ b/cpp/thirdparty/protobuf-2.5.0/gtest/make/Makefile @@ -20,7 +20,7 @@ GTEST_DIR = .. USER_DIR = ../samples # Flags passed to the preprocessor. -CPPFLAGS += -I$(GTEST_DIR) -I$(GTEST_DIR)/include +CPPFLAGS += -I$(GTEST_DIR)/include # Flags passed to the C++ compiler. CXXFLAGS += -g -Wall -Wextra @@ -52,10 +52,12 @@ GTEST_SRCS_ = $(GTEST_DIR)/src/*.cc $(GTEST_DIR)/src/*.h $(GTEST_HEADERS) # conservative and not optimized. This is fine as Google Test # compiles fast and for ordinary users its source rarely changes. gtest-all.o : $(GTEST_SRCS_) - $(CXX) $(CPPFLAGS) $(CXXFLAGS) -c $(GTEST_DIR)/src/gtest-all.cc + $(CXX) $(CPPFLAGS) -I$(GTEST_DIR) $(CXXFLAGS) -c \ + $(GTEST_DIR)/src/gtest-all.cc gtest_main.o : $(GTEST_SRCS_) - $(CXX) $(CPPFLAGS) $(CXXFLAGS) -c $(GTEST_DIR)/src/gtest_main.cc + $(CXX) $(CPPFLAGS) -I$(GTEST_DIR) $(CXXFLAGS) -c \ + $(GTEST_DIR)/src/gtest_main.cc gtest.a : gtest-all.o $(AR) $(ARFLAGS) $@ $^ @@ -75,4 +77,4 @@ sample1_unittest.o : $(USER_DIR)/sample1_unittest.cc \ $(CXX) $(CPPFLAGS) $(CXXFLAGS) -c $(USER_DIR)/sample1_unittest.cc sample1_unittest : sample1.o sample1_unittest.o gtest_main.a - $(CXX) $(CPPFLAGS) $(CXXFLAGS) $^ -o $@ + $(CXX) $(CPPFLAGS) $(CXXFLAGS) -lpthread $^ -o $@ diff --git a/cpp/thirdparty/protobuf-2.3.0/gtest/msvc/gtest-md.sln b/cpp/thirdparty/protobuf-2.5.0/gtest/msvc/gtest-md.sln similarity index 100% rename from cpp/thirdparty/protobuf-2.3.0/gtest/msvc/gtest-md.sln rename to cpp/thirdparty/protobuf-2.5.0/gtest/msvc/gtest-md.sln diff --git a/cpp/thirdparty/protobuf-2.5.0/gtest/msvc/gtest-md.vcproj b/cpp/thirdparty/protobuf-2.5.0/gtest/msvc/gtest-md.vcproj new file mode 100644 index 000000000..464d36e7d --- /dev/null +++ b/cpp/thirdparty/protobuf-2.5.0/gtest/msvc/gtest-md.vcproj @@ -0,0 +1,126 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/cpp/thirdparty/protobuf-2.3.0/gtest/msvc/gtest.sln b/cpp/thirdparty/protobuf-2.5.0/gtest/msvc/gtest.sln similarity index 100% rename from cpp/thirdparty/protobuf-2.3.0/gtest/msvc/gtest.sln rename to cpp/thirdparty/protobuf-2.5.0/gtest/msvc/gtest.sln diff --git a/cpp/thirdparty/protobuf-2.5.0/gtest/msvc/gtest.vcproj b/cpp/thirdparty/protobuf-2.5.0/gtest/msvc/gtest.vcproj new file mode 100644 index 000000000..04ad10aef --- /dev/null +++ b/cpp/thirdparty/protobuf-2.5.0/gtest/msvc/gtest.vcproj @@ -0,0 +1,126 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/cpp/thirdparty/protobuf-2.3.0/gtest/msvc/gtest_main-md.vcproj b/cpp/thirdparty/protobuf-2.5.0/gtest/msvc/gtest_main-md.vcproj similarity index 73% rename from cpp/thirdparty/protobuf-2.3.0/gtest/msvc/gtest_main-md.vcproj rename to cpp/thirdparty/protobuf-2.5.0/gtest/msvc/gtest_main-md.vcproj index 321667f1b..5142f68a8 100644 --- a/cpp/thirdparty/protobuf-2.3.0/gtest/msvc/gtest_main-md.vcproj +++ b/cpp/thirdparty/protobuf-2.5.0/gtest/msvc/gtest_main-md.vcproj @@ -20,7 +20,7 @@ - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/cpp/thirdparty/protobuf-2.3.0/gtest/msvc/gtest_main.vcproj b/cpp/thirdparty/protobuf-2.5.0/gtest/msvc/gtest_main.vcproj similarity index 73% rename from cpp/thirdparty/protobuf-2.3.0/gtest/msvc/gtest_main.vcproj rename to cpp/thirdparty/protobuf-2.5.0/gtest/msvc/gtest_main.vcproj index 1c8c58e13..bdc49dd75 100644 --- a/cpp/thirdparty/protobuf-2.3.0/gtest/msvc/gtest_main.vcproj +++ b/cpp/thirdparty/protobuf-2.5.0/gtest/msvc/gtest_main.vcproj @@ -20,7 +20,7 @@ - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/cpp/thirdparty/protobuf-2.3.0/gtest/msvc/gtest_prod_test-md.vcproj b/cpp/thirdparty/protobuf-2.5.0/gtest/msvc/gtest_prod_test-md.vcproj similarity index 93% rename from cpp/thirdparty/protobuf-2.3.0/gtest/msvc/gtest_prod_test-md.vcproj rename to cpp/thirdparty/protobuf-2.5.0/gtest/msvc/gtest_prod_test-md.vcproj index 05b05d9ed..f4080b483 100644 --- a/cpp/thirdparty/protobuf-2.3.0/gtest/msvc/gtest_prod_test-md.vcproj +++ b/cpp/thirdparty/protobuf-2.5.0/gtest/msvc/gtest_prod_test-md.vcproj @@ -19,7 +19,7 @@ #include -#include +#include "gtest/gtest.h" using ::testing::EmptyTestEventListener; using ::testing::InitGoogleTest; @@ -58,7 +58,7 @@ class Water { return malloc(allocation_size); } - void operator delete(void* block, size_t allocation_size) { + void operator delete(void* block, size_t /* allocation_size */) { allocated_--; free(block); } @@ -78,19 +78,18 @@ int Water::allocated_ = 0; class LeakChecker : public EmptyTestEventListener { private: // Called before a test starts. - virtual void OnTestStart(const TestInfo& test_info) { + virtual void OnTestStart(const TestInfo& /* test_info */) { initially_allocated_ = Water::allocated(); } // Called after a test ends. - virtual void OnTestEnd(const TestInfo& test_info) { + virtual void OnTestEnd(const TestInfo& /* test_info */) { int difference = Water::allocated() - initially_allocated_; // You can generate a failure in any event handler except // OnTestPartResult. Just use an appropriate Google Test assertion to do // it. - EXPECT_TRUE(difference <= 0) - << "Leaked " << difference << " unit(s) of Water!"; + EXPECT_LE(difference, 0) << "Leaked " << difference << " unit(s) of Water!"; } int initially_allocated_; diff --git a/cpp/thirdparty/protobuf-2.3.0/gtest/samples/sample1_unittest.cc b/cpp/thirdparty/protobuf-2.5.0/gtest/samples/sample1_unittest.cc similarity index 98% rename from cpp/thirdparty/protobuf-2.3.0/gtest/samples/sample1_unittest.cc rename to cpp/thirdparty/protobuf-2.5.0/gtest/samples/sample1_unittest.cc index 01eb5462f..aefc4f1d8 100644 --- a/cpp/thirdparty/protobuf-2.3.0/gtest/samples/sample1_unittest.cc +++ b/cpp/thirdparty/protobuf-2.5.0/gtest/samples/sample1_unittest.cc @@ -45,7 +45,7 @@ #include #include "sample1.h" -#include +#include "gtest/gtest.h" // Step 2. Use the TEST macro to define your tests. @@ -81,7 +81,7 @@ TEST(FactorialTest, Negative) { // test case. EXPECT_EQ(1, Factorial(-5)); EXPECT_EQ(1, Factorial(-1)); - EXPECT_TRUE(Factorial(-10) > 0); + EXPECT_GT(Factorial(-10), 0); // // diff --git a/cpp/thirdparty/protobuf-2.3.0/gtest/samples/sample2.cc b/cpp/thirdparty/protobuf-2.5.0/gtest/samples/sample2.cc similarity index 85% rename from cpp/thirdparty/protobuf-2.3.0/gtest/samples/sample2.cc rename to cpp/thirdparty/protobuf-2.5.0/gtest/samples/sample2.cc index 53857c0e8..5f763b9bd 100644 --- a/cpp/thirdparty/protobuf-2.3.0/gtest/samples/sample2.cc +++ b/cpp/thirdparty/protobuf-2.5.0/gtest/samples/sample2.cc @@ -36,21 +36,21 @@ #include // Clones a 0-terminated C string, allocating memory using new. -const char * MyString::CloneCString(const char * c_string) { - if (c_string == NULL) return NULL; +const char* MyString::CloneCString(const char* a_c_string) { + if (a_c_string == NULL) return NULL; - const size_t len = strlen(c_string); - char * const clone = new char[ len + 1 ]; - memcpy(clone, c_string, len + 1); + const size_t len = strlen(a_c_string); + char* const clone = new char[ len + 1 ]; + memcpy(clone, a_c_string, len + 1); return clone; } // Sets the 0-terminated C string this MyString object // represents. -void MyString::Set(const char * c_string) { +void MyString::Set(const char* a_c_string) { // Makes sure this works when c_string == c_string_ - const char * const temp = MyString::CloneCString(c_string); + const char* const temp = MyString::CloneCString(a_c_string); delete[] c_string_; c_string_ = temp; } diff --git a/cpp/thirdparty/protobuf-2.3.0/gtest/samples/sample2.h b/cpp/thirdparty/protobuf-2.5.0/gtest/samples/sample2.h similarity index 91% rename from cpp/thirdparty/protobuf-2.3.0/gtest/samples/sample2.h rename to cpp/thirdparty/protobuf-2.5.0/gtest/samples/sample2.h index c5f3b8c52..cb485c70f 100644 --- a/cpp/thirdparty/protobuf-2.3.0/gtest/samples/sample2.h +++ b/cpp/thirdparty/protobuf-2.5.0/gtest/samples/sample2.h @@ -40,13 +40,12 @@ // A simple string class. class MyString { private: - const char * c_string_; + const char* c_string_; const MyString& operator=(const MyString& rhs); public: - // Clones a 0-terminated C string, allocating memory using new. - static const char * CloneCString(const char * c_string); + static const char* CloneCString(const char* a_c_string); //////////////////////////////////////////////////////////// // @@ -56,8 +55,8 @@ class MyString { MyString() : c_string_(NULL) {} // Constructs a MyString by cloning a 0-terminated C string. - explicit MyString(const char * c_string) : c_string_(NULL) { - Set(c_string); + explicit MyString(const char* a_c_string) : c_string_(NULL) { + Set(a_c_string); } // Copy c'tor @@ -72,14 +71,14 @@ class MyString { ~MyString() { delete[] c_string_; } // Gets the 0-terminated C string this MyString object represents. - const char * c_string() const { return c_string_; } + const char* c_string() const { return c_string_; } size_t Length() const { return c_string_ == NULL ? 0 : strlen(c_string_); } // Sets the 0-terminated C string this MyString object represents. - void Set(const char * c_string); + void Set(const char* c_string); }; diff --git a/cpp/thirdparty/protobuf-2.3.0/gtest/samples/sample2_unittest.cc b/cpp/thirdparty/protobuf-2.5.0/gtest/samples/sample2_unittest.cc similarity index 92% rename from cpp/thirdparty/protobuf-2.3.0/gtest/samples/sample2_unittest.cc rename to cpp/thirdparty/protobuf-2.5.0/gtest/samples/sample2_unittest.cc index e1d79108e..4fa19b71c 100644 --- a/cpp/thirdparty/protobuf-2.3.0/gtest/samples/sample2_unittest.cc +++ b/cpp/thirdparty/protobuf-2.5.0/gtest/samples/sample2_unittest.cc @@ -41,7 +41,7 @@ // needed. #include "sample2.h" -#include +#include "gtest/gtest.h" // In this example, we test the MyString class (a simple string). @@ -71,7 +71,7 @@ TEST(MyString, DefaultConstructor) { // EXPECT_STREQ(NULL, s.c_string()); - EXPECT_EQ(0, s.Length()); + EXPECT_EQ(0u, s.Length()); } const char kHelloString[] = "Hello, world!"; @@ -79,7 +79,7 @@ const char kHelloString[] = "Hello, world!"; // Tests the c'tor that accepts a C string. TEST(MyString, ConstructorFromCString) { const MyString s(kHelloString); - EXPECT_TRUE(strcmp(s.c_string(), kHelloString) == 0); + EXPECT_EQ(0, strcmp(s.c_string(), kHelloString)); EXPECT_EQ(sizeof(kHelloString)/sizeof(kHelloString[0]) - 1, s.Length()); } @@ -88,7 +88,7 @@ TEST(MyString, ConstructorFromCString) { TEST(MyString, CopyConstructor) { const MyString s1(kHelloString); const MyString s2 = s1; - EXPECT_TRUE(strcmp(s2.c_string(), kHelloString) == 0); + EXPECT_EQ(0, strcmp(s2.c_string(), kHelloString)); } // Tests the Set method. @@ -96,12 +96,12 @@ TEST(MyString, Set) { MyString s; s.Set(kHelloString); - EXPECT_TRUE(strcmp(s.c_string(), kHelloString) == 0); + EXPECT_EQ(0, strcmp(s.c_string(), kHelloString)); // Set should work when the input pointer is the same as the one // already in the MyString object. s.Set(s.c_string()); - EXPECT_TRUE(strcmp(s.c_string(), kHelloString) == 0); + EXPECT_EQ(0, strcmp(s.c_string(), kHelloString)); // Can we set the MyString to NULL? s.Set(NULL); diff --git a/cpp/thirdparty/protobuf-2.3.0/gtest/samples/sample3-inl.h b/cpp/thirdparty/protobuf-2.5.0/gtest/samples/sample3-inl.h similarity index 78% rename from cpp/thirdparty/protobuf-2.3.0/gtest/samples/sample3-inl.h rename to cpp/thirdparty/protobuf-2.5.0/gtest/samples/sample3-inl.h index 630e950c1..7e3084d63 100644 --- a/cpp/thirdparty/protobuf-2.3.0/gtest/samples/sample3-inl.h +++ b/cpp/thirdparty/protobuf-2.5.0/gtest/samples/sample3-inl.h @@ -51,29 +51,28 @@ class QueueNode { public: // Gets the element in this node. - const E & element() const { return element_; } + const E& element() const { return element_; } // Gets the next node in the queue. - QueueNode * next() { return next_; } - const QueueNode * next() const { return next_; } + QueueNode* next() { return next_; } + const QueueNode* next() const { return next_; } private: // Creates a node with a given element value. The next pointer is // set to NULL. - QueueNode(const E & element) : element_(element), next_(NULL) {} + explicit QueueNode(const E& an_element) : element_(an_element), next_(NULL) {} // We disable the default assignment operator and copy c'tor. - const QueueNode & operator = (const QueueNode &); - QueueNode(const QueueNode &); + const QueueNode& operator = (const QueueNode&); + QueueNode(const QueueNode&); E element_; - QueueNode * next_; + QueueNode* next_; }; template // E is the element type. class Queue { -public: - + public: // Creates an empty queue. Queue() : head_(NULL), last_(NULL), size_(0) {} @@ -84,8 +83,8 @@ public: void Clear() { if (size_ > 0) { // 1. Deletes every node. - QueueNode * node = head_; - QueueNode * next = node->next(); + QueueNode* node = head_; + QueueNode* next = node->next(); for (; ;) { delete node; node = next; @@ -103,19 +102,19 @@ public: size_t Size() const { return size_; } // Gets the first element of the queue, or NULL if the queue is empty. - QueueNode * Head() { return head_; } - const QueueNode * Head() const { return head_; } + QueueNode* Head() { return head_; } + const QueueNode* Head() const { return head_; } // Gets the last element of the queue, or NULL if the queue is empty. - QueueNode * Last() { return last_; } - const QueueNode * Last() const { return last_; } + QueueNode* Last() { return last_; } + const QueueNode* Last() const { return last_; } // Adds an element to the end of the queue. A copy of the element is // created using the copy constructor, and then stored in the queue. // Changes made to the element in the queue doesn't affect the source // object, and vice versa. - void Enqueue(const E & element) { - QueueNode * new_node = new QueueNode(element); + void Enqueue(const E& element) { + QueueNode* new_node = new QueueNode(element); if (size_ == 0) { head_ = last_ = new_node; @@ -129,19 +128,19 @@ public: // Removes the head of the queue and returns it. Returns NULL if // the queue is empty. - E * Dequeue() { + E* Dequeue() { if (size_ == 0) { return NULL; } - const QueueNode * const old_head = head_; + const QueueNode* const old_head = head_; head_ = head_->next_; size_--; if (size_ == 0) { last_ = NULL; } - E * element = new E(old_head->element()); + E* element = new E(old_head->element()); delete old_head; return element; @@ -151,9 +150,9 @@ public: // returns the result in a new queue. The original queue is not // affected. template - Queue * Map(F function) const { - Queue * new_queue = new Queue(); - for (const QueueNode * node = head_; node != NULL; node = node->next_) { + Queue* Map(F function) const { + Queue* new_queue = new Queue(); + for (const QueueNode* node = head_; node != NULL; node = node->next_) { new_queue->Enqueue(function(node->element())); } @@ -161,13 +160,13 @@ public: } private: - QueueNode * head_; // The first node of the queue. - QueueNode * last_; // The last node of the queue. + QueueNode* head_; // The first node of the queue. + QueueNode* last_; // The last node of the queue. size_t size_; // The number of elements in the queue. // We disallow copying a queue. - Queue(const Queue &); - const Queue & operator = (const Queue &); - }; + Queue(const Queue&); + const Queue& operator = (const Queue&); +}; #endif // GTEST_SAMPLES_SAMPLE3_INL_H_ diff --git a/cpp/thirdparty/protobuf-2.3.0/gtest/samples/sample3_unittest.cc b/cpp/thirdparty/protobuf-2.5.0/gtest/samples/sample3_unittest.cc similarity index 97% rename from cpp/thirdparty/protobuf-2.3.0/gtest/samples/sample3_unittest.cc rename to cpp/thirdparty/protobuf-2.5.0/gtest/samples/sample3_unittest.cc index a3d26da28..bf3877d01 100644 --- a/cpp/thirdparty/protobuf-2.3.0/gtest/samples/sample3_unittest.cc +++ b/cpp/thirdparty/protobuf-2.5.0/gtest/samples/sample3_unittest.cc @@ -64,7 +64,7 @@ // #include "sample3-inl.h" -#include +#include "gtest/gtest.h" // To use a test fixture, derive a class from testing::Test. class QueueTest : public testing::Test { @@ -122,7 +122,7 @@ class QueueTest : public testing::Test { // Tests the default c'tor. TEST_F(QueueTest, DefaultConstructor) { // You can access data in the test fixture here. - EXPECT_EQ(0, q0_.Size()); + EXPECT_EQ(0u, q0_.Size()); } // Tests Dequeue(). @@ -133,13 +133,13 @@ TEST_F(QueueTest, Dequeue) { n = q1_.Dequeue(); ASSERT_TRUE(n != NULL); EXPECT_EQ(1, *n); - EXPECT_EQ(0, q1_.Size()); + EXPECT_EQ(0u, q1_.Size()); delete n; n = q2_.Dequeue(); ASSERT_TRUE(n != NULL); EXPECT_EQ(2, *n); - EXPECT_EQ(1, q2_.Size()); + EXPECT_EQ(1u, q2_.Size()); delete n; } diff --git a/cpp/thirdparty/protobuf-2.3.0/gtest/samples/sample4.cc b/cpp/thirdparty/protobuf-2.5.0/gtest/samples/sample4.cc similarity index 100% rename from cpp/thirdparty/protobuf-2.3.0/gtest/samples/sample4.cc rename to cpp/thirdparty/protobuf-2.5.0/gtest/samples/sample4.cc diff --git a/cpp/thirdparty/protobuf-2.3.0/gtest/samples/sample4.h b/cpp/thirdparty/protobuf-2.5.0/gtest/samples/sample4.h similarity index 100% rename from cpp/thirdparty/protobuf-2.3.0/gtest/samples/sample4.h rename to cpp/thirdparty/protobuf-2.5.0/gtest/samples/sample4.h diff --git a/cpp/thirdparty/protobuf-2.3.0/gtest/samples/sample4_unittest.cc b/cpp/thirdparty/protobuf-2.5.0/gtest/samples/sample4_unittest.cc similarity index 98% rename from cpp/thirdparty/protobuf-2.3.0/gtest/samples/sample4_unittest.cc rename to cpp/thirdparty/protobuf-2.5.0/gtest/samples/sample4_unittest.cc index b4fb3736a..fa5afc7d5 100644 --- a/cpp/thirdparty/protobuf-2.3.0/gtest/samples/sample4_unittest.cc +++ b/cpp/thirdparty/protobuf-2.5.0/gtest/samples/sample4_unittest.cc @@ -29,7 +29,7 @@ // // Author: wan@google.com (Zhanyong Wan) -#include +#include "gtest/gtest.h" #include "sample4.h" // Tests the Increment() method. diff --git a/cpp/thirdparty/protobuf-2.3.0/gtest/samples/sample5_unittest.cc b/cpp/thirdparty/protobuf-2.5.0/gtest/samples/sample5_unittest.cc similarity index 94% rename from cpp/thirdparty/protobuf-2.3.0/gtest/samples/sample5_unittest.cc rename to cpp/thirdparty/protobuf-2.5.0/gtest/samples/sample5_unittest.cc index be5df90d4..43d8e5777 100644 --- a/cpp/thirdparty/protobuf-2.3.0/gtest/samples/sample5_unittest.cc +++ b/cpp/thirdparty/protobuf-2.5.0/gtest/samples/sample5_unittest.cc @@ -47,7 +47,7 @@ #include #include #include "sample3-inl.h" -#include +#include "gtest/gtest.h" #include "sample1.h" // In this sample, we want to ensure that every test finishes within @@ -101,7 +101,7 @@ TEST_F(IntegerFunctionTest, Factorial) { // Tests factorial of negative numbers. EXPECT_EQ(1, Factorial(-5)); EXPECT_EQ(1, Factorial(-1)); - EXPECT_TRUE(Factorial(-10) > 0); + EXPECT_GT(Factorial(-10), 0); // Tests factorial of 0. EXPECT_EQ(1, Factorial(0)); @@ -117,20 +117,20 @@ TEST_F(IntegerFunctionTest, Factorial) { // Tests IsPrime() TEST_F(IntegerFunctionTest, IsPrime) { // Tests negative input. - EXPECT_TRUE(!IsPrime(-1)); - EXPECT_TRUE(!IsPrime(-2)); - EXPECT_TRUE(!IsPrime(INT_MIN)); + EXPECT_FALSE(IsPrime(-1)); + EXPECT_FALSE(IsPrime(-2)); + EXPECT_FALSE(IsPrime(INT_MIN)); // Tests some trivial cases. - EXPECT_TRUE(!IsPrime(0)); - EXPECT_TRUE(!IsPrime(1)); + EXPECT_FALSE(IsPrime(0)); + EXPECT_FALSE(IsPrime(1)); EXPECT_TRUE(IsPrime(2)); EXPECT_TRUE(IsPrime(3)); // Tests positive input. - EXPECT_TRUE(!IsPrime(4)); + EXPECT_FALSE(IsPrime(4)); EXPECT_TRUE(IsPrime(5)); - EXPECT_TRUE(!IsPrime(6)); + EXPECT_FALSE(IsPrime(6)); EXPECT_TRUE(IsPrime(23)); } @@ -171,24 +171,24 @@ class QueueTest : public QuickTest { // Tests the default constructor. TEST_F(QueueTest, DefaultConstructor) { - EXPECT_EQ(0, q0_.Size()); + EXPECT_EQ(0u, q0_.Size()); } // Tests Dequeue(). TEST_F(QueueTest, Dequeue) { - int * n = q0_.Dequeue(); + int* n = q0_.Dequeue(); EXPECT_TRUE(n == NULL); n = q1_.Dequeue(); EXPECT_TRUE(n != NULL); EXPECT_EQ(1, *n); - EXPECT_EQ(0, q1_.Size()); + EXPECT_EQ(0u, q1_.Size()); delete n; n = q2_.Dequeue(); EXPECT_TRUE(n != NULL); EXPECT_EQ(2, *n); - EXPECT_EQ(1, q2_.Size()); + EXPECT_EQ(1u, q2_.Size()); delete n; } diff --git a/cpp/thirdparty/protobuf-2.3.0/gtest/samples/sample6_unittest.cc b/cpp/thirdparty/protobuf-2.5.0/gtest/samples/sample6_unittest.cc similarity index 99% rename from cpp/thirdparty/protobuf-2.3.0/gtest/samples/sample6_unittest.cc rename to cpp/thirdparty/protobuf-2.5.0/gtest/samples/sample6_unittest.cc index dd0df31f0..8f2036a51 100644 --- a/cpp/thirdparty/protobuf-2.3.0/gtest/samples/sample6_unittest.cc +++ b/cpp/thirdparty/protobuf-2.5.0/gtest/samples/sample6_unittest.cc @@ -35,7 +35,7 @@ // The interface and its implementations are in this header. #include "prime_tables.h" -#include +#include "gtest/gtest.h" // First, we define some factory functions for creating instances of // the implementations. You may be able to skip this step if all your diff --git a/cpp/thirdparty/protobuf-2.3.0/gtest/samples/sample7_unittest.cc b/cpp/thirdparty/protobuf-2.5.0/gtest/samples/sample7_unittest.cc similarity index 79% rename from cpp/thirdparty/protobuf-2.3.0/gtest/samples/sample7_unittest.cc rename to cpp/thirdparty/protobuf-2.5.0/gtest/samples/sample7_unittest.cc index b5d507a93..1b651a21d 100644 --- a/cpp/thirdparty/protobuf-2.3.0/gtest/samples/sample7_unittest.cc +++ b/cpp/thirdparty/protobuf-2.5.0/gtest/samples/sample7_unittest.cc @@ -38,19 +38,18 @@ // The interface and its implementations are in this header. #include "prime_tables.h" -#include +#include "gtest/gtest.h" #if GTEST_HAS_PARAM_TEST using ::testing::TestWithParam; using ::testing::Values; -// As a general rule, tested objects should not be reused between tests. -// Also, their constructors and destructors of tested objects can have -// side effects. Thus you should create and destroy them for each test. -// In this sample we will define a simple factory function for PrimeTable -// objects. We will instantiate objects in test's SetUp() method and -// delete them in TearDown() method. +// As a general rule, to prevent a test from affecting the tests that come +// after it, you should create and destroy the tested objects for each test +// instead of reusing them. In this sample we will define a simple factory +// function for PrimeTable objects. We will instantiate objects in test's +// SetUp() method and delete them in TearDown() method. typedef PrimeTable* CreatePrimeTableFunc(); PrimeTable* CreateOnTheFlyPrimeTable() { @@ -62,11 +61,10 @@ PrimeTable* CreatePreCalculatedPrimeTable() { return new PreCalculatedPrimeTable(max_precalculated); } -// Inside the test body, fixture constructor, SetUp(), and TearDown() -// you can refer to the test parameter by GetParam(). -// In this case, the test parameter is a PrimeTableFactory interface pointer -// which we use in fixture's SetUp() to create and store an instance of -// PrimeTable. +// Inside the test body, fixture constructor, SetUp(), and TearDown() you +// can refer to the test parameter by GetParam(). In this case, the test +// parameter is a factory function which we call in fixture's SetUp() to +// create and store an instance of PrimeTable. class PrimeTableTest : public TestWithParam { public: virtual ~PrimeTableTest() { delete table_; } @@ -121,12 +119,12 @@ INSTANTIATE_TEST_CASE_P( #else -// Google Test doesn't support value-parameterized tests on some platforms -// and compilers, such as MSVC 7.1. If we use conditional compilation to -// compile out all code referring to the gtest_main library, MSVC linker -// will not link that library at all and consequently complain about -// missing entry point defined in that library (fatal error LNK1561: -// entry point must be defined). This dummy test keeps gtest_main linked in. +// Google Test may not support value-parameterized tests with some +// compilers. If we use conditional compilation to compile out all +// code referring to the gtest_main library, MSVC linker will not link +// that library at all and consequently complain about missing entry +// point defined in that library (fatal error LNK1561: entry point +// must be defined). This dummy test keeps gtest_main linked in. TEST(DummyTest, ValueParameterizedTestsAreNotSupportedOnThisPlatform) {} #endif // GTEST_HAS_PARAM_TEST diff --git a/cpp/thirdparty/protobuf-2.3.0/gtest/samples/sample8_unittest.cc b/cpp/thirdparty/protobuf-2.5.0/gtest/samples/sample8_unittest.cc similarity index 93% rename from cpp/thirdparty/protobuf-2.3.0/gtest/samples/sample8_unittest.cc rename to cpp/thirdparty/protobuf-2.5.0/gtest/samples/sample8_unittest.cc index d76136a74..5ad2e2c9f 100644 --- a/cpp/thirdparty/protobuf-2.3.0/gtest/samples/sample8_unittest.cc +++ b/cpp/thirdparty/protobuf-2.5.0/gtest/samples/sample8_unittest.cc @@ -36,7 +36,7 @@ // Use class definitions to test from this header. #include "prime_tables.h" -#include +#include "gtest/gtest.h" #if GTEST_HAS_COMBINE @@ -162,12 +162,12 @@ INSTANTIATE_TEST_CASE_P(MeaningfulTestParameters, #else -// Google Test doesn't support Combine() on some platforms and compilers, -// such as MSVC 7.1. If we use conditional compilation to compile out -// all code referring to the gtest_main library, MSVC linker will not -// link that library at all and consequently complain about missing entry -// point defined in that library (fatal error LNK1561: entry point must -// be defined). This dummy test keeps gtest_main linked in. +// Google Test may not support Combine() with some compilers. If we +// use conditional compilation to compile out all code referring to +// the gtest_main library, MSVC linker will not link that library at +// all and consequently complain about missing entry point defined in +// that library (fatal error LNK1561: entry point must be +// defined). This dummy test keeps gtest_main linked in. TEST(DummyTest, CombineIsNotSupportedOnThisPlatform) {} #endif // GTEST_HAS_COMBINE diff --git a/cpp/thirdparty/protobuf-2.3.0/gtest/samples/sample9_unittest.cc b/cpp/thirdparty/protobuf-2.5.0/gtest/samples/sample9_unittest.cc similarity index 97% rename from cpp/thirdparty/protobuf-2.3.0/gtest/samples/sample9_unittest.cc rename to cpp/thirdparty/protobuf-2.5.0/gtest/samples/sample9_unittest.cc index 8944c47b7..b2e2079bf 100644 --- a/cpp/thirdparty/protobuf-2.3.0/gtest/samples/sample9_unittest.cc +++ b/cpp/thirdparty/protobuf-2.5.0/gtest/samples/sample9_unittest.cc @@ -34,7 +34,7 @@ #include -#include +#include "gtest/gtest.h" using ::testing::EmptyTestEventListener; using ::testing::InitGoogleTest; @@ -52,7 +52,7 @@ namespace { class TersePrinter : public EmptyTestEventListener { private: // Called before any test activity starts. - virtual void OnTestProgramStart(const UnitTest& unit_test) {} + virtual void OnTestProgramStart(const UnitTest& /* unit_test */) {} // Called after all test activities have ended. virtual void OnTestProgramEnd(const UnitTest& unit_test) { @@ -69,7 +69,7 @@ class TersePrinter : public EmptyTestEventListener { fflush(stdout); } - // Called after a failed assertion or a SUCCESS(). + // Called after a failed assertion or a SUCCEED() invocation. virtual void OnTestPartResult(const TestPartResult& test_part_result) { fprintf(stdout, "%s in %s:%d\n%s\n", diff --git a/cpp/thirdparty/protobuf-2.3.0/gtest/scripts/fuse_gtest_files.py b/cpp/thirdparty/protobuf-2.5.0/gtest/scripts/fuse_gtest_files.py similarity index 93% rename from cpp/thirdparty/protobuf-2.3.0/gtest/scripts/fuse_gtest_files.py rename to cpp/thirdparty/protobuf-2.5.0/gtest/scripts/fuse_gtest_files.py index 148444ca7..57ef72f0e 100755 --- a/cpp/thirdparty/protobuf-2.3.0/gtest/scripts/fuse_gtest_files.py +++ b/cpp/thirdparty/protobuf-2.5.0/gtest/scripts/fuse_gtest_files.py @@ -67,8 +67,8 @@ import sys # Test root directory. DEFAULT_GTEST_ROOT_DIR = os.path.join(os.path.dirname(__file__), '..') -# Regex for matching '#include '. -INCLUDE_GTEST_FILE_REGEX = re.compile(r'^\s*#\s*include\s*<(gtest/.+)>') +# Regex for matching '#include "gtest/..."'. +INCLUDE_GTEST_FILE_REGEX = re.compile(r'^\s*#\s*include\s*"(gtest/.+)"') # Regex for matching '#include "src/..."'. INCLUDE_SRC_FILE_REGEX = re.compile(r'^\s*#\s*include\s*"(src/.+)"') @@ -162,7 +162,7 @@ def FuseGTestH(gtest_root, output_dir): for line in file(os.path.join(gtest_root, gtest_header_path), 'r'): m = INCLUDE_GTEST_FILE_REGEX.match(line) if m: - # It's '#include ' - let's process it recursively. + # It's '#include "gtest/..."' - let's process it recursively. ProcessFile('include/' + m.group(1)) else: # Otherwise we copy the line unchanged to the output file. @@ -191,19 +191,19 @@ def FuseGTestAllCcToFile(gtest_root, output_file): m = INCLUDE_GTEST_FILE_REGEX.match(line) if m: if 'include/' + m.group(1) == GTEST_SPI_H_SEED: - # It's '#include '. This file is not - # #included by , so we need to process it. + # It's '#include "gtest/gtest-spi.h"'. This file is not + # #included by "gtest/gtest.h", so we need to process it. ProcessFile(GTEST_SPI_H_SEED) else: - # It's '#include ' where foo is not gtest-spi. - # We treat it as '#include ', as all other + # It's '#include "gtest/foo.h"' where foo is not gtest-spi. + # We treat it as '#include "gtest/gtest.h"', as all other # gtest headers are being fused into gtest.h and cannot be # #included directly. - # There is no need to #include more than once. + # There is no need to #include "gtest/gtest.h" more than once. if not GTEST_H_SEED in processed_files: processed_files.add(GTEST_H_SEED) - output_file.write('#include <%s>\n' % (GTEST_H_OUTPUT,)) + output_file.write('#include "%s"\n' % (GTEST_H_OUTPUT,)) else: m = INCLUDE_SRC_FILE_REGEX.match(line) if m: diff --git a/cpp/thirdparty/protobuf-2.3.0/gtest/scripts/gen_gtest_pred_impl.py b/cpp/thirdparty/protobuf-2.5.0/gtest/scripts/gen_gtest_pred_impl.py similarity index 98% rename from cpp/thirdparty/protobuf-2.3.0/gtest/scripts/gen_gtest_pred_impl.py rename to cpp/thirdparty/protobuf-2.5.0/gtest/scripts/gen_gtest_pred_impl.py index 8307134ad..3e7ab042e 100755 --- a/cpp/thirdparty/protobuf-2.3.0/gtest/scripts/gen_gtest_pred_impl.py +++ b/cpp/thirdparty/protobuf-2.5.0/gtest/scripts/gen_gtest_pred_impl.py @@ -117,7 +117,7 @@ def HeaderPreamble(n): // Makes sure this header is not included before gtest.h. #ifndef GTEST_INCLUDE_GTEST_GTEST_H_ -#error Do not include gtest_pred_impl.h directly. Include gtest.h instead. +# error Do not include gtest_pred_impl.h directly. Include gtest.h instead. #endif // GTEST_INCLUDE_GTEST_GTEST_H_ // This header implements a family of generic predicate assertion @@ -238,27 +238,25 @@ AssertionResult AssertPred%(n)sHelper(const char* pred_text""" % DEFS impl += """) { if (pred(%(vs)s)) return AssertionSuccess(); - Message msg; """ % DEFS - impl += ' msg << pred_text << "("' + impl += ' return AssertionFailure() << pred_text << "("' impl += Iter(n, """ - << e%s""", sep=' << ", "') + << e%s""", sep=' << ", "') impl += ' << ") evaluates to false, where"' impl += Iter(n, """ - << "\\n" << e%s << " evaluates to " << v%s""") + << "\\n" << e%s << " evaluates to " << v%s""") impl += """; - return AssertionFailure(msg); } // Internal macro for implementing {EXPECT|ASSERT}_PRED_FORMAT%(n)s. // Don't use this in your code. #define GTEST_PRED_FORMAT%(n)s_(pred_format, %(vs)s, on_failure)\\ - GTEST_ASSERT_(pred_format(%(vts)s, %(vs)s),\\ + GTEST_ASSERT_(pred_format(%(vts)s, %(vs)s), \\ on_failure) // Internal macro for implementing {EXPECT|ASSERT}_PRED%(n)s. Don't use @@ -386,8 +384,8 @@ def UnitTestPreamble(): #include -#include -#include +#include "gtest/gtest.h" +#include "gtest/gtest-spi.h" // A user-defined data type. struct Bool { @@ -478,15 +476,14 @@ testing::AssertionResult PredFormatFunction%(n)s(""" % DEFS if (PredFunction%(n)s(%(vs)s)) return testing::AssertionSuccess(); - testing::Message msg; - msg << """ % DEFS + return testing::AssertionFailure() + << """ % DEFS tests += Iter(n, 'e%s', sep=' << " + " << ') tests += """ << " is expected to be positive, but evaluates to " << %(v_sum)s << "."; - return testing::AssertionFailure(msg); } """ % DEFS diff --git a/cpp/thirdparty/protobuf-2.3.0/gtest/scripts/gtest-config.in b/cpp/thirdparty/protobuf-2.5.0/gtest/scripts/gtest-config.in similarity index 97% rename from cpp/thirdparty/protobuf-2.3.0/gtest/scripts/gtest-config.in rename to cpp/thirdparty/protobuf-2.5.0/gtest/scripts/gtest-config.in index b82d5a174..9c7263854 100755 --- a/cpp/thirdparty/protobuf-2.3.0/gtest/scripts/gtest-config.in +++ b/cpp/thirdparty/protobuf-2.5.0/gtest/scripts/gtest-config.in @@ -214,7 +214,7 @@ if test "${this_bindir}" = "${this_bindir%${bindir}}"; then # TODO(chandlerc@google.com): This is a dangerous dependency on libtool, we # should work to remove it, and/or remove libtool altogether, replacing it # with direct references to the library and a link path. - gtest_libs="${build_dir}/lib/libgtest.la" + gtest_libs="${build_dir}/lib/libgtest.la @PTHREAD_CFLAGS@ @PTHREAD_LIBS@" gtest_ldflags="" # We provide hooks to include from either the source or build dir, where the @@ -222,15 +222,15 @@ if test "${this_bindir}" = "${this_bindir%${bindir}}"; then # build rules for generated headers and have them automatically be preferred # over provided versions. gtest_cppflags="-I${build_dir}/include -I${src_dir}/include" - gtest_cxxflags="" + gtest_cxxflags="@PTHREAD_CFLAGS@" else # We're using an installed gtest, although it may be staged under some # prefix. Assume (as our own libraries do) that we can resolve the prefix, # and are present in the dynamic link paths. gtest_ldflags="-L${libdir}" - gtest_libs="-l${name}" + gtest_libs="-l${name} @PTHREAD_CFLAGS@ @PTHREAD_LIBS@" gtest_cppflags="-I${includedir}" - gtest_cxxflags="" + gtest_cxxflags="@PTHREAD_CFLAGS@" fi # Do an installation query if requested. diff --git a/cpp/thirdparty/protobuf-2.5.0/gtest/scripts/pump.py b/cpp/thirdparty/protobuf-2.5.0/gtest/scripts/pump.py new file mode 100755 index 000000000..5efb653c2 --- /dev/null +++ b/cpp/thirdparty/protobuf-2.5.0/gtest/scripts/pump.py @@ -0,0 +1,855 @@ +#!/usr/bin/env python +# +# Copyright 2008, Google Inc. +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions are +# met: +# +# * Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# * Redistributions in binary form must reproduce the above +# copyright notice, this list of conditions and the following disclaimer +# in the documentation and/or other materials provided with the +# distribution. +# * Neither the name of Google Inc. nor the names of its +# contributors may be used to endorse or promote products derived from +# this software without specific prior written permission. +# +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +"""pump v0.2.0 - Pretty Useful for Meta Programming. + +A tool for preprocessor meta programming. Useful for generating +repetitive boilerplate code. Especially useful for writing C++ +classes, functions, macros, and templates that need to work with +various number of arguments. + +USAGE: + pump.py SOURCE_FILE + +EXAMPLES: + pump.py foo.cc.pump + Converts foo.cc.pump to foo.cc. + +GRAMMAR: + CODE ::= ATOMIC_CODE* + ATOMIC_CODE ::= $var ID = EXPRESSION + | $var ID = [[ CODE ]] + | $range ID EXPRESSION..EXPRESSION + | $for ID SEPARATOR [[ CODE ]] + | $($) + | $ID + | $(EXPRESSION) + | $if EXPRESSION [[ CODE ]] ELSE_BRANCH + | [[ CODE ]] + | RAW_CODE + SEPARATOR ::= RAW_CODE | EMPTY + ELSE_BRANCH ::= $else [[ CODE ]] + | $elif EXPRESSION [[ CODE ]] ELSE_BRANCH + | EMPTY + EXPRESSION has Python syntax. +""" + +__author__ = 'wan@google.com (Zhanyong Wan)' + +import os +import re +import sys + + +TOKEN_TABLE = [ + (re.compile(r'\$var\s+'), '$var'), + (re.compile(r'\$elif\s+'), '$elif'), + (re.compile(r'\$else\s+'), '$else'), + (re.compile(r'\$for\s+'), '$for'), + (re.compile(r'\$if\s+'), '$if'), + (re.compile(r'\$range\s+'), '$range'), + (re.compile(r'\$[_A-Za-z]\w*'), '$id'), + (re.compile(r'\$\(\$\)'), '$($)'), + (re.compile(r'\$'), '$'), + (re.compile(r'\[\[\n?'), '[['), + (re.compile(r'\]\]\n?'), ']]'), + ] + + +class Cursor: + """Represents a position (line and column) in a text file.""" + + def __init__(self, line=-1, column=-1): + self.line = line + self.column = column + + def __eq__(self, rhs): + return self.line == rhs.line and self.column == rhs.column + + def __ne__(self, rhs): + return not self == rhs + + def __lt__(self, rhs): + return self.line < rhs.line or ( + self.line == rhs.line and self.column < rhs.column) + + def __le__(self, rhs): + return self < rhs or self == rhs + + def __gt__(self, rhs): + return rhs < self + + def __ge__(self, rhs): + return rhs <= self + + def __str__(self): + if self == Eof(): + return 'EOF' + else: + return '%s(%s)' % (self.line + 1, self.column) + + def __add__(self, offset): + return Cursor(self.line, self.column + offset) + + def __sub__(self, offset): + return Cursor(self.line, self.column - offset) + + def Clone(self): + """Returns a copy of self.""" + + return Cursor(self.line, self.column) + + +# Special cursor to indicate the end-of-file. +def Eof(): + """Returns the special cursor to denote the end-of-file.""" + return Cursor(-1, -1) + + +class Token: + """Represents a token in a Pump source file.""" + + def __init__(self, start=None, end=None, value=None, token_type=None): + if start is None: + self.start = Eof() + else: + self.start = start + if end is None: + self.end = Eof() + else: + self.end = end + self.value = value + self.token_type = token_type + + def __str__(self): + return 'Token @%s: \'%s\' type=%s' % ( + self.start, self.value, self.token_type) + + def Clone(self): + """Returns a copy of self.""" + + return Token(self.start.Clone(), self.end.Clone(), self.value, + self.token_type) + + +def StartsWith(lines, pos, string): + """Returns True iff the given position in lines starts with 'string'.""" + + return lines[pos.line][pos.column:].startswith(string) + + +def FindFirstInLine(line, token_table): + best_match_start = -1 + for (regex, token_type) in token_table: + m = regex.search(line) + if m: + # We found regex in lines + if best_match_start < 0 or m.start() < best_match_start: + best_match_start = m.start() + best_match_length = m.end() - m.start() + best_match_token_type = token_type + + if best_match_start < 0: + return None + + return (best_match_start, best_match_length, best_match_token_type) + + +def FindFirst(lines, token_table, cursor): + """Finds the first occurrence of any string in strings in lines.""" + + start = cursor.Clone() + cur_line_number = cursor.line + for line in lines[start.line:]: + if cur_line_number == start.line: + line = line[start.column:] + m = FindFirstInLine(line, token_table) + if m: + # We found a regex in line. + (start_column, length, token_type) = m + if cur_line_number == start.line: + start_column += start.column + found_start = Cursor(cur_line_number, start_column) + found_end = found_start + length + return MakeToken(lines, found_start, found_end, token_type) + cur_line_number += 1 + # We failed to find str in lines + return None + + +def SubString(lines, start, end): + """Returns a substring in lines.""" + + if end == Eof(): + end = Cursor(len(lines) - 1, len(lines[-1])) + + if start >= end: + return '' + + if start.line == end.line: + return lines[start.line][start.column:end.column] + + result_lines = ([lines[start.line][start.column:]] + + lines[start.line + 1:end.line] + + [lines[end.line][:end.column]]) + return ''.join(result_lines) + + +def StripMetaComments(str): + """Strip meta comments from each line in the given string.""" + + # First, completely remove lines containing nothing but a meta + # comment, including the trailing \n. + str = re.sub(r'^\s*\$\$.*\n', '', str) + + # Then, remove meta comments from contentful lines. + return re.sub(r'\s*\$\$.*', '', str) + + +def MakeToken(lines, start, end, token_type): + """Creates a new instance of Token.""" + + return Token(start, end, SubString(lines, start, end), token_type) + + +def ParseToken(lines, pos, regex, token_type): + line = lines[pos.line][pos.column:] + m = regex.search(line) + if m and not m.start(): + return MakeToken(lines, pos, pos + m.end(), token_type) + else: + print 'ERROR: %s expected at %s.' % (token_type, pos) + sys.exit(1) + + +ID_REGEX = re.compile(r'[_A-Za-z]\w*') +EQ_REGEX = re.compile(r'=') +REST_OF_LINE_REGEX = re.compile(r'.*?(?=$|\$\$)') +OPTIONAL_WHITE_SPACES_REGEX = re.compile(r'\s*') +WHITE_SPACE_REGEX = re.compile(r'\s') +DOT_DOT_REGEX = re.compile(r'\.\.') + + +def Skip(lines, pos, regex): + line = lines[pos.line][pos.column:] + m = re.search(regex, line) + if m and not m.start(): + return pos + m.end() + else: + return pos + + +def SkipUntil(lines, pos, regex, token_type): + line = lines[pos.line][pos.column:] + m = re.search(regex, line) + if m: + return pos + m.start() + else: + print ('ERROR: %s expected on line %s after column %s.' % + (token_type, pos.line + 1, pos.column)) + sys.exit(1) + + +def ParseExpTokenInParens(lines, pos): + def ParseInParens(pos): + pos = Skip(lines, pos, OPTIONAL_WHITE_SPACES_REGEX) + pos = Skip(lines, pos, r'\(') + pos = Parse(pos) + pos = Skip(lines, pos, r'\)') + return pos + + def Parse(pos): + pos = SkipUntil(lines, pos, r'\(|\)', ')') + if SubString(lines, pos, pos + 1) == '(': + pos = Parse(pos + 1) + pos = Skip(lines, pos, r'\)') + return Parse(pos) + else: + return pos + + start = pos.Clone() + pos = ParseInParens(pos) + return MakeToken(lines, start, pos, 'exp') + + +def RStripNewLineFromToken(token): + if token.value.endswith('\n'): + return Token(token.start, token.end, token.value[:-1], token.token_type) + else: + return token + + +def TokenizeLines(lines, pos): + while True: + found = FindFirst(lines, TOKEN_TABLE, pos) + if not found: + yield MakeToken(lines, pos, Eof(), 'code') + return + + if found.start == pos: + prev_token = None + prev_token_rstripped = None + else: + prev_token = MakeToken(lines, pos, found.start, 'code') + prev_token_rstripped = RStripNewLineFromToken(prev_token) + + if found.token_type == '$var': + if prev_token_rstripped: + yield prev_token_rstripped + yield found + id_token = ParseToken(lines, found.end, ID_REGEX, 'id') + yield id_token + pos = Skip(lines, id_token.end, OPTIONAL_WHITE_SPACES_REGEX) + + eq_token = ParseToken(lines, pos, EQ_REGEX, '=') + yield eq_token + pos = Skip(lines, eq_token.end, r'\s*') + + if SubString(lines, pos, pos + 2) != '[[': + exp_token = ParseToken(lines, pos, REST_OF_LINE_REGEX, 'exp') + yield exp_token + pos = Cursor(exp_token.end.line + 1, 0) + elif found.token_type == '$for': + if prev_token_rstripped: + yield prev_token_rstripped + yield found + id_token = ParseToken(lines, found.end, ID_REGEX, 'id') + yield id_token + pos = Skip(lines, id_token.end, WHITE_SPACE_REGEX) + elif found.token_type == '$range': + if prev_token_rstripped: + yield prev_token_rstripped + yield found + id_token = ParseToken(lines, found.end, ID_REGEX, 'id') + yield id_token + pos = Skip(lines, id_token.end, OPTIONAL_WHITE_SPACES_REGEX) + + dots_pos = SkipUntil(lines, pos, DOT_DOT_REGEX, '..') + yield MakeToken(lines, pos, dots_pos, 'exp') + yield MakeToken(lines, dots_pos, dots_pos + 2, '..') + pos = dots_pos + 2 + new_pos = Cursor(pos.line + 1, 0) + yield MakeToken(lines, pos, new_pos, 'exp') + pos = new_pos + elif found.token_type == '$': + if prev_token: + yield prev_token + yield found + exp_token = ParseExpTokenInParens(lines, found.end) + yield exp_token + pos = exp_token.end + elif (found.token_type == ']]' or found.token_type == '$if' or + found.token_type == '$elif' or found.token_type == '$else'): + if prev_token_rstripped: + yield prev_token_rstripped + yield found + pos = found.end + else: + if prev_token: + yield prev_token + yield found + pos = found.end + + +def Tokenize(s): + """A generator that yields the tokens in the given string.""" + if s != '': + lines = s.splitlines(True) + for token in TokenizeLines(lines, Cursor(0, 0)): + yield token + + +class CodeNode: + def __init__(self, atomic_code_list=None): + self.atomic_code = atomic_code_list + + +class VarNode: + def __init__(self, identifier=None, atomic_code=None): + self.identifier = identifier + self.atomic_code = atomic_code + + +class RangeNode: + def __init__(self, identifier=None, exp1=None, exp2=None): + self.identifier = identifier + self.exp1 = exp1 + self.exp2 = exp2 + + +class ForNode: + def __init__(self, identifier=None, sep=None, code=None): + self.identifier = identifier + self.sep = sep + self.code = code + + +class ElseNode: + def __init__(self, else_branch=None): + self.else_branch = else_branch + + +class IfNode: + def __init__(self, exp=None, then_branch=None, else_branch=None): + self.exp = exp + self.then_branch = then_branch + self.else_branch = else_branch + + +class RawCodeNode: + def __init__(self, token=None): + self.raw_code = token + + +class LiteralDollarNode: + def __init__(self, token): + self.token = token + + +class ExpNode: + def __init__(self, token, python_exp): + self.token = token + self.python_exp = python_exp + + +def PopFront(a_list): + head = a_list[0] + a_list[:1] = [] + return head + + +def PushFront(a_list, elem): + a_list[:0] = [elem] + + +def PopToken(a_list, token_type=None): + token = PopFront(a_list) + if token_type is not None and token.token_type != token_type: + print 'ERROR: %s expected at %s' % (token_type, token.start) + print 'ERROR: %s found instead' % (token,) + sys.exit(1) + + return token + + +def PeekToken(a_list): + if not a_list: + return None + + return a_list[0] + + +def ParseExpNode(token): + python_exp = re.sub(r'([_A-Za-z]\w*)', r'self.GetValue("\1")', token.value) + return ExpNode(token, python_exp) + + +def ParseElseNode(tokens): + def Pop(token_type=None): + return PopToken(tokens, token_type) + + next = PeekToken(tokens) + if not next: + return None + if next.token_type == '$else': + Pop('$else') + Pop('[[') + code_node = ParseCodeNode(tokens) + Pop(']]') + return code_node + elif next.token_type == '$elif': + Pop('$elif') + exp = Pop('code') + Pop('[[') + code_node = ParseCodeNode(tokens) + Pop(']]') + inner_else_node = ParseElseNode(tokens) + return CodeNode([IfNode(ParseExpNode(exp), code_node, inner_else_node)]) + elif not next.value.strip(): + Pop('code') + return ParseElseNode(tokens) + else: + return None + + +def ParseAtomicCodeNode(tokens): + def Pop(token_type=None): + return PopToken(tokens, token_type) + + head = PopFront(tokens) + t = head.token_type + if t == 'code': + return RawCodeNode(head) + elif t == '$var': + id_token = Pop('id') + Pop('=') + next = PeekToken(tokens) + if next.token_type == 'exp': + exp_token = Pop() + return VarNode(id_token, ParseExpNode(exp_token)) + Pop('[[') + code_node = ParseCodeNode(tokens) + Pop(']]') + return VarNode(id_token, code_node) + elif t == '$for': + id_token = Pop('id') + next_token = PeekToken(tokens) + if next_token.token_type == 'code': + sep_token = next_token + Pop('code') + else: + sep_token = None + Pop('[[') + code_node = ParseCodeNode(tokens) + Pop(']]') + return ForNode(id_token, sep_token, code_node) + elif t == '$if': + exp_token = Pop('code') + Pop('[[') + code_node = ParseCodeNode(tokens) + Pop(']]') + else_node = ParseElseNode(tokens) + return IfNode(ParseExpNode(exp_token), code_node, else_node) + elif t == '$range': + id_token = Pop('id') + exp1_token = Pop('exp') + Pop('..') + exp2_token = Pop('exp') + return RangeNode(id_token, ParseExpNode(exp1_token), + ParseExpNode(exp2_token)) + elif t == '$id': + return ParseExpNode(Token(head.start + 1, head.end, head.value[1:], 'id')) + elif t == '$($)': + return LiteralDollarNode(head) + elif t == '$': + exp_token = Pop('exp') + return ParseExpNode(exp_token) + elif t == '[[': + code_node = ParseCodeNode(tokens) + Pop(']]') + return code_node + else: + PushFront(tokens, head) + return None + + +def ParseCodeNode(tokens): + atomic_code_list = [] + while True: + if not tokens: + break + atomic_code_node = ParseAtomicCodeNode(tokens) + if atomic_code_node: + atomic_code_list.append(atomic_code_node) + else: + break + return CodeNode(atomic_code_list) + + +def ParseToAST(pump_src_text): + """Convert the given Pump source text into an AST.""" + tokens = list(Tokenize(pump_src_text)) + code_node = ParseCodeNode(tokens) + return code_node + + +class Env: + def __init__(self): + self.variables = [] + self.ranges = [] + + def Clone(self): + clone = Env() + clone.variables = self.variables[:] + clone.ranges = self.ranges[:] + return clone + + def PushVariable(self, var, value): + # If value looks like an int, store it as an int. + try: + int_value = int(value) + if ('%s' % int_value) == value: + value = int_value + except Exception: + pass + self.variables[:0] = [(var, value)] + + def PopVariable(self): + self.variables[:1] = [] + + def PushRange(self, var, lower, upper): + self.ranges[:0] = [(var, lower, upper)] + + def PopRange(self): + self.ranges[:1] = [] + + def GetValue(self, identifier): + for (var, value) in self.variables: + if identifier == var: + return value + + print 'ERROR: meta variable %s is undefined.' % (identifier,) + sys.exit(1) + + def EvalExp(self, exp): + try: + result = eval(exp.python_exp) + except Exception, e: + print 'ERROR: caught exception %s: %s' % (e.__class__.__name__, e) + print ('ERROR: failed to evaluate meta expression %s at %s' % + (exp.python_exp, exp.token.start)) + sys.exit(1) + return result + + def GetRange(self, identifier): + for (var, lower, upper) in self.ranges: + if identifier == var: + return (lower, upper) + + print 'ERROR: range %s is undefined.' % (identifier,) + sys.exit(1) + + +class Output: + def __init__(self): + self.string = '' + + def GetLastLine(self): + index = self.string.rfind('\n') + if index < 0: + return '' + + return self.string[index + 1:] + + def Append(self, s): + self.string += s + + +def RunAtomicCode(env, node, output): + if isinstance(node, VarNode): + identifier = node.identifier.value.strip() + result = Output() + RunAtomicCode(env.Clone(), node.atomic_code, result) + value = result.string + env.PushVariable(identifier, value) + elif isinstance(node, RangeNode): + identifier = node.identifier.value.strip() + lower = int(env.EvalExp(node.exp1)) + upper = int(env.EvalExp(node.exp2)) + env.PushRange(identifier, lower, upper) + elif isinstance(node, ForNode): + identifier = node.identifier.value.strip() + if node.sep is None: + sep = '' + else: + sep = node.sep.value + (lower, upper) = env.GetRange(identifier) + for i in range(lower, upper + 1): + new_env = env.Clone() + new_env.PushVariable(identifier, i) + RunCode(new_env, node.code, output) + if i != upper: + output.Append(sep) + elif isinstance(node, RawCodeNode): + output.Append(node.raw_code.value) + elif isinstance(node, IfNode): + cond = env.EvalExp(node.exp) + if cond: + RunCode(env.Clone(), node.then_branch, output) + elif node.else_branch is not None: + RunCode(env.Clone(), node.else_branch, output) + elif isinstance(node, ExpNode): + value = env.EvalExp(node) + output.Append('%s' % (value,)) + elif isinstance(node, LiteralDollarNode): + output.Append('$') + elif isinstance(node, CodeNode): + RunCode(env.Clone(), node, output) + else: + print 'BAD' + print node + sys.exit(1) + + +def RunCode(env, code_node, output): + for atomic_code in code_node.atomic_code: + RunAtomicCode(env, atomic_code, output) + + +def IsSingleLineComment(cur_line): + return '//' in cur_line + + +def IsInPreprocessorDirective(prev_lines, cur_line): + if cur_line.lstrip().startswith('#'): + return True + return prev_lines and prev_lines[-1].endswith('\\') + + +def WrapComment(line, output): + loc = line.find('//') + before_comment = line[:loc].rstrip() + if before_comment == '': + indent = loc + else: + output.append(before_comment) + indent = len(before_comment) - len(before_comment.lstrip()) + prefix = indent*' ' + '// ' + max_len = 80 - len(prefix) + comment = line[loc + 2:].strip() + segs = [seg for seg in re.split(r'(\w+\W*)', comment) if seg != ''] + cur_line = '' + for seg in segs: + if len((cur_line + seg).rstrip()) < max_len: + cur_line += seg + else: + if cur_line.strip() != '': + output.append(prefix + cur_line.rstrip()) + cur_line = seg.lstrip() + if cur_line.strip() != '': + output.append(prefix + cur_line.strip()) + + +def WrapCode(line, line_concat, output): + indent = len(line) - len(line.lstrip()) + prefix = indent*' ' # Prefix of the current line + max_len = 80 - indent - len(line_concat) # Maximum length of the current line + new_prefix = prefix + 4*' ' # Prefix of a continuation line + new_max_len = max_len - 4 # Maximum length of a continuation line + # Prefers to wrap a line after a ',' or ';'. + segs = [seg for seg in re.split(r'([^,;]+[,;]?)', line.strip()) if seg != ''] + cur_line = '' # The current line without leading spaces. + for seg in segs: + # If the line is still too long, wrap at a space. + while cur_line == '' and len(seg.strip()) > max_len: + seg = seg.lstrip() + split_at = seg.rfind(' ', 0, max_len) + output.append(prefix + seg[:split_at].strip() + line_concat) + seg = seg[split_at + 1:] + prefix = new_prefix + max_len = new_max_len + + if len((cur_line + seg).rstrip()) < max_len: + cur_line = (cur_line + seg).lstrip() + else: + output.append(prefix + cur_line.rstrip() + line_concat) + prefix = new_prefix + max_len = new_max_len + cur_line = seg.lstrip() + if cur_line.strip() != '': + output.append(prefix + cur_line.strip()) + + +def WrapPreprocessorDirective(line, output): + WrapCode(line, ' \\', output) + + +def WrapPlainCode(line, output): + WrapCode(line, '', output) + + +def IsMultiLineIWYUPragma(line): + return re.search(r'/\* IWYU pragma: ', line) + + +def IsHeaderGuardIncludeOrOneLineIWYUPragma(line): + return (re.match(r'^#(ifndef|define|endif\s*//)\s*[\w_]+\s*$', line) or + re.match(r'^#include\s', line) or + # Don't break IWYU pragmas, either; that causes iwyu.py problems. + re.search(r'// IWYU pragma: ', line)) + + +def WrapLongLine(line, output): + line = line.rstrip() + if len(line) <= 80: + output.append(line) + elif IsSingleLineComment(line): + if IsHeaderGuardIncludeOrOneLineIWYUPragma(line): + # The style guide made an exception to allow long header guard lines, + # includes and IWYU pragmas. + output.append(line) + else: + WrapComment(line, output) + elif IsInPreprocessorDirective(output, line): + if IsHeaderGuardIncludeOrOneLineIWYUPragma(line): + # The style guide made an exception to allow long header guard lines, + # includes and IWYU pragmas. + output.append(line) + else: + WrapPreprocessorDirective(line, output) + elif IsMultiLineIWYUPragma(line): + output.append(line) + else: + WrapPlainCode(line, output) + + +def BeautifyCode(string): + lines = string.splitlines() + output = [] + for line in lines: + WrapLongLine(line, output) + output2 = [line.rstrip() for line in output] + return '\n'.join(output2) + '\n' + + +def ConvertFromPumpSource(src_text): + """Return the text generated from the given Pump source text.""" + ast = ParseToAST(StripMetaComments(src_text)) + output = Output() + RunCode(Env(), ast, output) + return BeautifyCode(output.string) + + +def main(argv): + if len(argv) == 1: + print __doc__ + sys.exit(1) + + file_path = argv[-1] + output_str = ConvertFromPumpSource(file(file_path, 'r').read()) + if file_path.endswith('.pump'): + output_file_path = file_path[:-5] + else: + output_file_path = '-' + if output_file_path == '-': + print output_str, + else: + output_file = file(output_file_path, 'w') + output_file.write('// This file was GENERATED by command:\n') + output_file.write('// %s %s\n' % + (os.path.basename(__file__), os.path.basename(file_path))) + output_file.write('// DO NOT EDIT BY HAND!!!\n\n') + output_file.write(output_str) + output_file.close() + + +if __name__ == '__main__': + main(sys.argv) diff --git a/cpp/thirdparty/protobuf-2.3.0/gtest/scripts/test/Makefile b/cpp/thirdparty/protobuf-2.5.0/gtest/scripts/test/Makefile similarity index 91% rename from cpp/thirdparty/protobuf-2.3.0/gtest/scripts/test/Makefile rename to cpp/thirdparty/protobuf-2.5.0/gtest/scripts/test/Makefile index ffc0c90ad..cdff58463 100644 --- a/cpp/thirdparty/protobuf-2.3.0/gtest/scripts/test/Makefile +++ b/cpp/thirdparty/protobuf-2.5.0/gtest/scripts/test/Makefile @@ -21,7 +21,9 @@ SAMPLE_DIR = ../../samples GTEST_MAIN_CC = ../../src/gtest_main.cc # Flags passed to the preprocessor. -CPPFLAGS += -I$(FUSED_GTEST_DIR) +# We have no idea here whether pthreads is available in the system, so +# disable its use. +CPPFLAGS += -I$(FUSED_GTEST_DIR) -DGTEST_HAS_PTHREAD=0 # Flags passed to the C++ compiler. CXXFLAGS += -g diff --git a/cpp/thirdparty/protobuf-2.3.0/gtest/src/gtest-all.cc b/cpp/thirdparty/protobuf-2.5.0/gtest/src/gtest-all.cc similarity index 90% rename from cpp/thirdparty/protobuf-2.3.0/gtest/src/gtest-all.cc rename to cpp/thirdparty/protobuf-2.5.0/gtest/src/gtest-all.cc index a67ea0fa0..0a9cee522 100644 --- a/cpp/thirdparty/protobuf-2.3.0/gtest/src/gtest-all.cc +++ b/cpp/thirdparty/protobuf-2.5.0/gtest/src/gtest-all.cc @@ -33,9 +33,16 @@ // // Sometimes it's desirable to build Google Test by compiling a single file. // This file serves this purpose. + +// This line ensures that gtest.h can be compiled on its own, even +// when it's fused. +#include "gtest/gtest.h" + +// The following lines pull in the real gtest *.cc files. #include "src/gtest.cc" #include "src/gtest-death-test.cc" #include "src/gtest-filepath.cc" #include "src/gtest-port.cc" +#include "src/gtest-printers.cc" #include "src/gtest-test-part.cc" #include "src/gtest-typed-test.cc" diff --git a/cpp/thirdparty/protobuf-2.3.0/gtest/src/gtest-death-test.cc b/cpp/thirdparty/protobuf-2.5.0/gtest/src/gtest-death-test.cc similarity index 77% rename from cpp/thirdparty/protobuf-2.3.0/gtest/src/gtest-death-test.cc rename to cpp/thirdparty/protobuf-2.5.0/gtest/src/gtest-death-test.cc index 106b01c76..8b52431fc 100644 --- a/cpp/thirdparty/protobuf-2.3.0/gtest/src/gtest-death-test.cc +++ b/cpp/thirdparty/protobuf-2.5.0/gtest/src/gtest-death-test.cc @@ -31,31 +31,40 @@ // // This file implements death tests. -#include -#include +#include "gtest/gtest-death-test.h" +#include "gtest/internal/gtest-port.h" #if GTEST_HAS_DEATH_TEST -#if GTEST_OS_MAC -#include -#endif // GTEST_OS_MAC +# if GTEST_OS_MAC +# include +# endif // GTEST_OS_MAC -#include -#include -#include -#include +# include +# include +# include -#if GTEST_OS_WINDOWS -#include -#else -#include -#include -#endif // GTEST_OS_WINDOWS +# if GTEST_OS_LINUX +# include +# endif // GTEST_OS_LINUX + +# include + +# if GTEST_OS_WINDOWS +# include +# else +# include +# include +# endif // GTEST_OS_WINDOWS + +# if GTEST_OS_QNX +# include +# endif // GTEST_OS_QNX #endif // GTEST_HAS_DEATH_TEST -#include -#include +#include "gtest/gtest-message.h" +#include "gtest/internal/gtest-string.h" // Indicates that this translation unit is part of Google Test's // implementation. It must come before gtest-internal-inl.h is @@ -100,27 +109,60 @@ GTEST_DEFINE_string_( "Indicates the file, line number, temporal index of " "the single death test to run, and a file descriptor to " "which a success code may be sent, all separated by " - "colons. This flag is specified if and only if the current " + "the '|' characters. This flag is specified if and only if the current " "process is a sub-process launched for running a thread-safe " "death test. FOR INTERNAL USE ONLY."); } // namespace internal #if GTEST_HAS_DEATH_TEST +namespace internal { + +// Valid only for fast death tests. Indicates the code is running in the +// child process of a fast style death test. +static bool g_in_fast_death_test_child = false; + +// Returns a Boolean value indicating whether the caller is currently +// executing in the context of the death test child process. Tools such as +// Valgrind heap checkers may need this to modify their behavior in death +// tests. IMPORTANT: This is an internal utility. Using it may break the +// implementation of death tests. User code MUST NOT use it. +bool InDeathTestChild() { +# if GTEST_OS_WINDOWS + + // On Windows, death tests are thread-safe regardless of the value of the + // death_test_style flag. + return !GTEST_FLAG(internal_run_death_test).empty(); + +# else + + if (GTEST_FLAG(death_test_style) == "threadsafe") + return !GTEST_FLAG(internal_run_death_test).empty(); + else + return g_in_fast_death_test_child; +#endif +} + +} // namespace internal + // ExitedWithCode constructor. ExitedWithCode::ExitedWithCode(int exit_code) : exit_code_(exit_code) { } // ExitedWithCode function-call operator. bool ExitedWithCode::operator()(int exit_status) const { -#if GTEST_OS_WINDOWS +# if GTEST_OS_WINDOWS + return exit_status == exit_code_; -#else + +# else + return WIFEXITED(exit_status) && WEXITSTATUS(exit_status) == exit_code_; -#endif // GTEST_OS_WINDOWS + +# endif // GTEST_OS_WINDOWS } -#if !GTEST_OS_WINDOWS +# if !GTEST_OS_WINDOWS // KilledBySignal constructor. KilledBySignal::KilledBySignal(int signum) : signum_(signum) { } @@ -129,7 +171,7 @@ KilledBySignal::KilledBySignal(int signum) : signum_(signum) { bool KilledBySignal::operator()(int exit_status) const { return WIFSIGNALED(exit_status) && WTERMSIG(exit_status) == signum_; } -#endif // !GTEST_OS_WINDOWS +# endif // !GTEST_OS_WINDOWS namespace internal { @@ -137,22 +179,27 @@ namespace internal { // Generates a textual description of a given exit code, in the format // specified by wait(2). -static String ExitSummary(int exit_code) { +static std::string ExitSummary(int exit_code) { Message m; -#if GTEST_OS_WINDOWS + +# if GTEST_OS_WINDOWS + m << "Exited with exit status " << exit_code; -#else + +# else + if (WIFEXITED(exit_code)) { m << "Exited with exit status " << WEXITSTATUS(exit_code); } else if (WIFSIGNALED(exit_code)) { m << "Terminated by signal " << WTERMSIG(exit_code); } -#ifdef WCOREDUMP +# ifdef WCOREDUMP if (WCOREDUMP(exit_code)) { m << " (core dumped)"; } -#endif -#endif // GTEST_OS_WINDOWS +# endif +# endif // GTEST_OS_WINDOWS + return m.GetString(); } @@ -162,12 +209,12 @@ bool ExitedUnsuccessfully(int exit_status) { return !ExitedWithCode(0)(exit_status); } -#if !GTEST_OS_WINDOWS +# if !GTEST_OS_WINDOWS // Generates a textual failure message when a death test finds more than // one thread running, or cannot determine the number of threads, prior // to executing the given statement. It is the responsibility of the // caller not to pass a thread_count of 1. -static String DeathTestThreadWarning(size_t thread_count) { +static std::string DeathTestThreadWarning(size_t thread_count) { Message msg; msg << "Death tests use fork(), which is unsafe particularly" << " in a threaded context. For this test, " << GTEST_NAME_ << " "; @@ -177,27 +224,31 @@ static String DeathTestThreadWarning(size_t thread_count) { msg << "detected " << thread_count << " threads."; return msg.GetString(); } -#endif // !GTEST_OS_WINDOWS +# endif // !GTEST_OS_WINDOWS // Flag characters for reporting a death test that did not die. static const char kDeathTestLived = 'L'; static const char kDeathTestReturned = 'R'; +static const char kDeathTestThrew = 'T'; static const char kDeathTestInternalError = 'I'; -// An enumeration describing all of the possible ways that a death test -// can conclude. DIED means that the process died while executing the -// test code; LIVED means that process lived beyond the end of the test -// code; and RETURNED means that the test statement attempted a "return," -// which is not allowed. IN_PROGRESS means the test has not yet -// concluded. -enum DeathTestOutcome { IN_PROGRESS, DIED, LIVED, RETURNED }; +// An enumeration describing all of the possible ways that a death test can +// conclude. DIED means that the process died while executing the test +// code; LIVED means that process lived beyond the end of the test code; +// RETURNED means that the test statement attempted to execute a return +// statement, which is not allowed; THREW means that the test statement +// returned control by throwing an exception. IN_PROGRESS means the test +// has not yet concluded. +// TODO(vladl@google.com): Unify names and possibly values for +// AbortReason, DeathTestOutcome, and flag characters above. +enum DeathTestOutcome { IN_PROGRESS, DIED, LIVED, RETURNED, THREW }; // Routine for aborting the program which is safe to call from an // exec-style death test child process, in which case the error // message is propagated back to the parent process. Otherwise, the // message is simply printed to stderr. In either case, the program // then exits with status 1. -void DeathTestAbort(const String& message) { +void DeathTestAbort(const std::string& message) { // On a POSIX system, this function may be called from a threadsafe-style // death test child process, which operates on a very small stack. Use // the heap for any additional non-minuscule memory requirements. @@ -212,16 +263,16 @@ void DeathTestAbort(const String& message) { } else { fprintf(stderr, "%s", message.c_str()); fflush(stderr); - abort(); + posix::Abort(); } } // A replacement for CHECK that calls DeathTestAbort if the assertion // fails. -#define GTEST_DEATH_TEST_CHECK_(expression) \ +# define GTEST_DEATH_TEST_CHECK_(expression) \ do { \ if (!::testing::internal::IsTrue(expression)) { \ - DeathTestAbort(::testing::internal::String::Format( \ + DeathTestAbort(::testing::internal::String::Format( \ "CHECK failed: File %s, line %d: %s", \ __FILE__, __LINE__, #expression)); \ } \ @@ -234,22 +285,22 @@ void DeathTestAbort(const String& message) { // evaluates the expression as long as it evaluates to -1 and sets // errno to EINTR. If the expression evaluates to -1 but errno is // something other than EINTR, DeathTestAbort is called. -#define GTEST_DEATH_TEST_CHECK_SYSCALL_(expression) \ +# define GTEST_DEATH_TEST_CHECK_SYSCALL_(expression) \ do { \ int gtest_retval; \ do { \ gtest_retval = (expression); \ } while (gtest_retval == -1 && errno == EINTR); \ if (gtest_retval == -1) { \ - DeathTestAbort(::testing::internal::String::Format( \ + DeathTestAbort(::testing::internal::String::Format( \ "CHECK failed: File %s, line %d: %s != -1", \ __FILE__, __LINE__, #expression)); \ } \ } while (::testing::internal::AlwaysFalse()) // Returns the message describing the last system error in errno. -String GetLastErrnoDescription() { - return String(errno == 0 ? "" : posix::StrError(errno)); +std::string GetLastErrnoDescription() { + return errno == 0 ? "" : posix::StrError(errno); } // This is called from a death test parent process to read a failure @@ -299,18 +350,18 @@ const char* DeathTest::LastMessage() { return last_death_test_message_.c_str(); } -void DeathTest::set_last_death_test_message(const String& message) { +void DeathTest::set_last_death_test_message(const std::string& message) { last_death_test_message_ = message; } -String DeathTest::last_death_test_message_; +std::string DeathTest::last_death_test_message_; // Provides cross platform implementation for some death functionality. class DeathTestImpl : public DeathTest { protected: - DeathTestImpl(const char* statement, const RE* regex) - : statement_(statement), - regex_(regex), + DeathTestImpl(const char* a_statement, const RE* a_regex) + : statement_(a_statement), + regex_(a_regex), spawned_(false), status_(-1), outcome_(IN_PROGRESS), @@ -326,11 +377,11 @@ class DeathTestImpl : public DeathTest { const char* statement() const { return statement_; } const RE* regex() const { return regex_; } bool spawned() const { return spawned_; } - void set_spawned(bool spawned) { spawned_ = spawned; } + void set_spawned(bool is_spawned) { spawned_ = is_spawned; } int status() const { return status_; } - void set_status(int status) { status_ = status; } + void set_status(int a_status) { status_ = a_status; } DeathTestOutcome outcome() const { return outcome_; } - void set_outcome(DeathTestOutcome outcome) { outcome_ = outcome; } + void set_outcome(DeathTestOutcome an_outcome) { outcome_ = an_outcome; } int read_fd() const { return read_fd_; } void set_read_fd(int fd) { read_fd_ = fd; } int write_fd() const { return write_fd_; } @@ -388,6 +439,9 @@ void DeathTestImpl::ReadAndInterpretStatusByte() { case kDeathTestReturned: set_outcome(RETURNED); break; + case kDeathTestThrew: + set_outcome(THREW); + break; case kDeathTestLived: set_outcome(LIVED); break; @@ -416,19 +470,46 @@ void DeathTestImpl::Abort(AbortReason reason) { // it finds any data in our pipe. So, here we write a single flag byte // to the pipe, then exit. const char status_ch = - reason == TEST_DID_NOT_DIE ? kDeathTestLived : kDeathTestReturned; + reason == TEST_DID_NOT_DIE ? kDeathTestLived : + reason == TEST_THREW_EXCEPTION ? kDeathTestThrew : kDeathTestReturned; + GTEST_DEATH_TEST_CHECK_SYSCALL_(posix::Write(write_fd(), &status_ch, 1)); - GTEST_DEATH_TEST_CHECK_SYSCALL_(posix::Close(write_fd())); + // We are leaking the descriptor here because on some platforms (i.e., + // when built as Windows DLL), destructors of global objects will still + // run after calling _exit(). On such systems, write_fd_ will be + // indirectly closed from the destructor of UnitTestImpl, causing double + // close if it is also closed here. On debug configurations, double close + // may assert. As there are no in-process buffers to flush here, we are + // relying on the OS to close the descriptor after the process terminates + // when the destructors are not run. _exit(1); // Exits w/o any normal exit hooks (we were supposed to crash) } +// Returns an indented copy of stderr output for a death test. +// This makes distinguishing death test output lines from regular log lines +// much easier. +static ::std::string FormatDeathTestOutput(const ::std::string& output) { + ::std::string ret; + for (size_t at = 0; ; ) { + const size_t line_end = output.find('\n', at); + ret += "[ DEATH ] "; + if (line_end == ::std::string::npos) { + ret += output.substr(at); + break; + } + ret += output.substr(at, line_end + 1 - at); + at = line_end + 1; + } + return ret; +} + // Assesses the success or failure of a death test, using both private // members which have previously been set, and one argument: // // Private data members: // outcome: An enumeration describing how the death test -// concluded: DIED, LIVED, or RETURNED. The death test fails -// in the latter two cases. +// concluded: DIED, LIVED, THREW, or RETURNED. The death test +// fails in the latter three cases. // status: The exit status of the child process. On *nix, it is in the // in the format specified by wait(2). On Windows, this is the // value supplied to the ExitProcess() API or a numeric code @@ -448,7 +529,7 @@ bool DeathTestImpl::Passed(bool status_ok) { if (!spawned()) return false; - const String error_message = GetCapturedStderr(); + const std::string error_message = GetCapturedStderr(); bool success = false; Message buffer; @@ -457,11 +538,15 @@ bool DeathTestImpl::Passed(bool status_ok) { switch (outcome()) { case LIVED: buffer << " Result: failed to die.\n" - << " Error msg: " << error_message; + << " Error msg:\n" << FormatDeathTestOutput(error_message); + break; + case THREW: + buffer << " Result: threw an exception.\n" + << " Error msg:\n" << FormatDeathTestOutput(error_message); break; case RETURNED: buffer << " Result: illegal return in test statement.\n" - << " Error msg: " << error_message; + << " Error msg:\n" << FormatDeathTestOutput(error_message); break; case DIED: if (status_ok) { @@ -471,11 +556,12 @@ bool DeathTestImpl::Passed(bool status_ok) { } else { buffer << " Result: died but not with expected error.\n" << " Expected: " << regex()->pattern() << "\n" - << "Actual msg: " << error_message; + << "Actual msg:\n" << FormatDeathTestOutput(error_message); } } else { buffer << " Result: died but not with expected exit code:\n" - << " " << ExitSummary(status()) << "\n"; + << " " << ExitSummary(status()) << "\n" + << "Actual msg:\n" << FormatDeathTestOutput(error_message); } break; case IN_PROGRESS: @@ -488,7 +574,7 @@ bool DeathTestImpl::Passed(bool status_ok) { return success; } -#if GTEST_OS_WINDOWS +# if GTEST_OS_WINDOWS // WindowsDeathTest implements death tests on Windows. Due to the // specifics of starting new processes on Windows, death tests there are // always threadsafe, and Google Test considers the @@ -519,11 +605,11 @@ bool DeathTestImpl::Passed(bool status_ok) { // class WindowsDeathTest : public DeathTestImpl { public: - WindowsDeathTest(const char* statement, - const RE* regex, + WindowsDeathTest(const char* a_statement, + const RE* a_regex, const char* file, int line) - : DeathTestImpl(statement, regex), file_(file), line_(line) {} + : DeathTestImpl(a_statement, a_regex), file_(file), line_(line) {} // All of these virtual functions are inherited from DeathTest. virtual int Wait(); @@ -580,12 +666,12 @@ int WindowsDeathTest::Wait() { GTEST_DEATH_TEST_CHECK_( WAIT_OBJECT_0 == ::WaitForSingleObject(child_handle_.Get(), INFINITE)); - DWORD status; - GTEST_DEATH_TEST_CHECK_(::GetExitCodeProcess(child_handle_.Get(), &status) - != FALSE); + DWORD status_code; + GTEST_DEATH_TEST_CHECK_( + ::GetExitCodeProcess(child_handle_.Get(), &status_code) != FALSE); child_handle_.Reset(); - set_status(static_cast(status)); - return this->status(); + set_status(static_cast(status_code)); + return status(); } // The AssumeRole process for a Windows death test. It creates a child @@ -625,15 +711,12 @@ DeathTest::TestRole WindowsDeathTest::AssumeRole() { FALSE, // The initial state is non-signalled. NULL)); // The even is unnamed. GTEST_DEATH_TEST_CHECK_(event_handle_.Get() != NULL); - const String filter_flag = String::Format("--%s%s=%s.%s", - GTEST_FLAG_PREFIX_, kFilterFlag, - info->test_case_name(), - info->name()); - const String internal_flag = String::Format( - "--%s%s=%s|%d|%d|%u|%Iu|%Iu", - GTEST_FLAG_PREFIX_, - kInternalRunDeathTestFlag, - file_, line_, + const std::string filter_flag = + std::string("--") + GTEST_FLAG_PREFIX_ + kFilterFlag + "=" + + info->test_case_name() + "." + info->name(); + const std::string internal_flag = + std::string("--") + GTEST_FLAG_PREFIX_ + kInternalRunDeathTestFlag + + "=" + file_ + "|" + String::Format("%d|%d|%u|%Iu|%Iu", line_, death_test_index, static_cast(::GetCurrentProcessId()), // size_t has the same with as pointers on both 32-bit and 64-bit @@ -648,10 +731,9 @@ DeathTest::TestRole WindowsDeathTest::AssumeRole() { executable_path, _MAX_PATH)); - String command_line = String::Format("%s %s \"%s\"", - ::GetCommandLineA(), - filter_flag.c_str(), - internal_flag.c_str()); + std::string command_line = + std::string(::GetCommandLineA()) + " " + filter_flag + " \"" + + internal_flag + "\""; DeathTest::set_last_death_test_message(""); @@ -684,7 +766,7 @@ DeathTest::TestRole WindowsDeathTest::AssumeRole() { set_spawned(true); return OVERSEE_TEST; } -#else // We are not on Windows. +# else // We are not on Windows. // ForkingDeathTest provides implementations for most of the abstract // methods of the DeathTest interface. Only the AssumeRole method is @@ -705,8 +787,8 @@ class ForkingDeathTest : public DeathTestImpl { }; // Constructs a ForkingDeathTest. -ForkingDeathTest::ForkingDeathTest(const char* statement, const RE* regex) - : DeathTestImpl(statement, regex), +ForkingDeathTest::ForkingDeathTest(const char* a_statement, const RE* a_regex) + : DeathTestImpl(a_statement, a_regex), child_pid_(-1) {} // Waits for the child in a death test to exit, returning its exit @@ -718,18 +800,18 @@ int ForkingDeathTest::Wait() { ReadAndInterpretStatusByte(); - int status; - GTEST_DEATH_TEST_CHECK_SYSCALL_(waitpid(child_pid_, &status, 0)); - set_status(status); - return status; + int status_value; + GTEST_DEATH_TEST_CHECK_SYSCALL_(waitpid(child_pid_, &status_value, 0)); + set_status(status_value); + return status_value; } // A concrete death test class that forks, then immediately runs the test // in the child process. class NoExecDeathTest : public ForkingDeathTest { public: - NoExecDeathTest(const char* statement, const RE* regex) : - ForkingDeathTest(statement, regex) { } + NoExecDeathTest(const char* a_statement, const RE* a_regex) : + ForkingDeathTest(a_statement, a_regex) { } virtual TestRole AssumeRole(); }; @@ -768,6 +850,7 @@ DeathTest::TestRole NoExecDeathTest::AssumeRole() { // Event forwarding to the listeners of event listener API mush be shut // down in death test subprocesses. GetUnitTestImpl()->listeners()->SuppressEventForwarding(); + g_in_fast_death_test_child = true; return EXECUTE_TEST; } else { GTEST_DEATH_TEST_CHECK_SYSCALL_(close(pipe_fd[1])); @@ -782,11 +865,16 @@ DeathTest::TestRole NoExecDeathTest::AssumeRole() { // only this specific death test to be run. class ExecDeathTest : public ForkingDeathTest { public: - ExecDeathTest(const char* statement, const RE* regex, + ExecDeathTest(const char* a_statement, const RE* a_regex, const char* file, int line) : - ForkingDeathTest(statement, regex), file_(file), line_(line) { } + ForkingDeathTest(a_statement, a_regex), file_(file), line_(line) { } virtual TestRole AssumeRole(); private: + static ::std::vector + GetArgvsForDeathTestChildProcess() { + ::std::vector args = GetInjectableArgvs(); + return args; + } // The name of the file in which the death test is located. const char* const file_; // The line number on which the death test is located. @@ -821,6 +909,7 @@ class Arguments { char* const* Argv() { return &args_[0]; } + private: std::vector args_; }; @@ -832,20 +921,21 @@ struct ExecDeathTestArgs { int close_fd; // File descriptor to close; the read end of a pipe }; -#if GTEST_OS_MAC +# if GTEST_OS_MAC inline char** GetEnviron() { // When Google Test is built as a framework on MacOS X, the environ variable // is unavailable. Apple's documentation (man environ) recommends using // _NSGetEnviron() instead. return *_NSGetEnviron(); } -#else +# else // Some POSIX platforms expect you to declare environ. extern "C" makes // it reside in the global namespace. extern "C" char** environ; inline char** GetEnviron() { return environ; } -#endif // GTEST_OS_MAC +# endif // GTEST_OS_MAC +# if !GTEST_OS_QNX // The main function for a threadsafe-style death test child process. // This function is called in a clone()-ed process and thus must avoid // any potentially unsafe operations like malloc or libc functions. @@ -860,9 +950,8 @@ static int ExecDeathTestChildMain(void* child_arg) { UnitTest::GetInstance()->original_working_dir(); // We can safely call chdir() as it's a direct system call. if (chdir(original_dir) != 0) { - DeathTestAbort(String::Format("chdir(\"%s\") failed: %s", - original_dir, - GetLastErrnoDescription().c_str())); + DeathTestAbort(std::string("chdir(\"") + original_dir + "\") failed: " + + GetLastErrnoDescription()); return EXIT_FAILURE; } @@ -872,36 +961,91 @@ static int ExecDeathTestChildMain(void* child_arg) { // invoke the test program via a valid path that contains at least // one path separator. execve(args->argv[0], args->argv, GetEnviron()); - DeathTestAbort(String::Format("execve(%s, ...) in %s failed: %s", - args->argv[0], - original_dir, - GetLastErrnoDescription().c_str())); + DeathTestAbort(std::string("execve(") + args->argv[0] + ", ...) in " + + original_dir + " failed: " + + GetLastErrnoDescription()); return EXIT_FAILURE; } +# endif // !GTEST_OS_QNX // Two utility routines that together determine the direction the stack // grows. // This could be accomplished more elegantly by a single recursive // function, but we want to guard against the unlikely possibility of // a smart compiler optimizing the recursion away. -bool StackLowerThanAddress(const void* ptr) { +// +// GTEST_NO_INLINE_ is required to prevent GCC 4.6 from inlining +// StackLowerThanAddress into StackGrowsDown, which then doesn't give +// correct answer. +void StackLowerThanAddress(const void* ptr, bool* result) GTEST_NO_INLINE_; +void StackLowerThanAddress(const void* ptr, bool* result) { int dummy; - return &dummy < ptr; + *result = (&dummy < ptr); } bool StackGrowsDown() { int dummy; - return StackLowerThanAddress(&dummy); + bool result; + StackLowerThanAddress(&dummy, &result); + return result; } -// A threadsafe implementation of fork(2) for threadsafe-style death tests -// that uses clone(2). It dies with an error message if anything goes -// wrong. -static pid_t ExecDeathTestFork(char* const* argv, int close_fd) { +// Spawns a child process with the same executable as the current process in +// a thread-safe manner and instructs it to run the death test. The +// implementation uses fork(2) + exec. On systems where clone(2) is +// available, it is used instead, being slightly more thread-safe. On QNX, +// fork supports only single-threaded environments, so this function uses +// spawn(2) there instead. The function dies with an error message if +// anything goes wrong. +static pid_t ExecDeathTestSpawnChild(char* const* argv, int close_fd) { ExecDeathTestArgs args = { argv, close_fd }; pid_t child_pid = -1; -#if GTEST_HAS_CLONE +# if GTEST_OS_QNX + // Obtains the current directory and sets it to be closed in the child + // process. + const int cwd_fd = open(".", O_RDONLY); + GTEST_DEATH_TEST_CHECK_(cwd_fd != -1); + GTEST_DEATH_TEST_CHECK_SYSCALL_(fcntl(cwd_fd, F_SETFD, FD_CLOEXEC)); + // We need to execute the test program in the same environment where + // it was originally invoked. Therefore we change to the original + // working directory first. + const char* const original_dir = + UnitTest::GetInstance()->original_working_dir(); + // We can safely call chdir() as it's a direct system call. + if (chdir(original_dir) != 0) { + DeathTestAbort(std::string("chdir(\"") + original_dir + "\") failed: " + + GetLastErrnoDescription()); + return EXIT_FAILURE; + } + + int fd_flags; + // Set close_fd to be closed after spawn. + GTEST_DEATH_TEST_CHECK_SYSCALL_(fd_flags = fcntl(close_fd, F_GETFD)); + GTEST_DEATH_TEST_CHECK_SYSCALL_(fcntl(close_fd, F_SETFD, + fd_flags | FD_CLOEXEC)); + struct inheritance inherit = {0}; + // spawn is a system call. + child_pid = spawn(args.argv[0], 0, NULL, &inherit, args.argv, GetEnviron()); + // Restores the current working directory. + GTEST_DEATH_TEST_CHECK_(fchdir(cwd_fd) != -1); + GTEST_DEATH_TEST_CHECK_SYSCALL_(close(cwd_fd)); + +# else // GTEST_OS_QNX +# if GTEST_OS_LINUX + // When a SIGPROF signal is received while fork() or clone() are executing, + // the process may hang. To avoid this, we ignore SIGPROF here and re-enable + // it after the call to fork()/clone() is complete. + struct sigaction saved_sigprof_action; + struct sigaction ignore_sigprof_action; + memset(&ignore_sigprof_action, 0, sizeof(ignore_sigprof_action)); + sigemptyset(&ignore_sigprof_action.sa_mask); + ignore_sigprof_action.sa_handler = SIG_IGN; + GTEST_DEATH_TEST_CHECK_SYSCALL_(sigaction( + SIGPROF, &ignore_sigprof_action, &saved_sigprof_action)); +# endif // GTEST_OS_LINUX + +# if GTEST_HAS_CLONE const bool use_fork = GTEST_FLAG(death_test_use_fork); if (!use_fork) { @@ -911,21 +1055,37 @@ static pid_t ExecDeathTestFork(char* const* argv, int close_fd) { void* const stack = mmap(NULL, stack_size, PROT_READ | PROT_WRITE, MAP_ANON | MAP_PRIVATE, -1, 0); GTEST_DEATH_TEST_CHECK_(stack != MAP_FAILED); + + // Maximum stack alignment in bytes: For a downward-growing stack, this + // amount is subtracted from size of the stack space to get an address + // that is within the stack space and is aligned on all systems we care + // about. As far as I know there is no ABI with stack alignment greater + // than 64. We assume stack and stack_size already have alignment of + // kMaxStackAlignment. + const size_t kMaxStackAlignment = 64; void* const stack_top = - static_cast(stack) + (stack_grows_down ? stack_size : 0); + static_cast(stack) + + (stack_grows_down ? stack_size - kMaxStackAlignment : 0); + GTEST_DEATH_TEST_CHECK_(stack_size > kMaxStackAlignment && + reinterpret_cast(stack_top) % kMaxStackAlignment == 0); child_pid = clone(&ExecDeathTestChildMain, stack_top, SIGCHLD, &args); GTEST_DEATH_TEST_CHECK_(munmap(stack, stack_size) != -1); } -#else +# else const bool use_fork = true; -#endif // GTEST_HAS_CLONE +# endif // GTEST_HAS_CLONE if (use_fork && (child_pid = fork()) == 0) { ExecDeathTestChildMain(&args); _exit(0); } +# endif // GTEST_OS_QNX +# if GTEST_OS_LINUX + GTEST_DEATH_TEST_CHECK_SYSCALL_( + sigaction(SIGPROF, &saved_sigprof_action, NULL)); +# endif // GTEST_OS_LINUX GTEST_DEATH_TEST_CHECK_(child_pid != -1); return child_pid; @@ -953,16 +1113,16 @@ DeathTest::TestRole ExecDeathTest::AssumeRole() { // it be closed when the child process does an exec: GTEST_DEATH_TEST_CHECK_(fcntl(pipe_fd[1], F_SETFD, 0) != -1); - const String filter_flag = + const std::string filter_flag = String::Format("--%s%s=%s.%s", GTEST_FLAG_PREFIX_, kFilterFlag, info->test_case_name(), info->name()); - const String internal_flag = + const std::string internal_flag = String::Format("--%s%s=%s|%d|%d|%d", GTEST_FLAG_PREFIX_, kInternalRunDeathTestFlag, file_, line_, death_test_index, pipe_fd[1]); Arguments args; - args.AddArguments(GetArgvs()); + args.AddArguments(GetArgvsForDeathTestChildProcess()); args.AddArgument(filter_flag.c_str()); args.AddArgument(internal_flag.c_str()); @@ -973,7 +1133,7 @@ DeathTest::TestRole ExecDeathTest::AssumeRole() { // is necessary. FlushInfoLog(); - const pid_t child_pid = ExecDeathTestFork(args.Argv(), pipe_fd[0]); + const pid_t child_pid = ExecDeathTestSpawnChild(args.Argv(), pipe_fd[0]); GTEST_DEATH_TEST_CHECK_SYSCALL_(close(pipe_fd[1])); set_child_pid(child_pid); set_read_fd(pipe_fd[0]); @@ -981,7 +1141,7 @@ DeathTest::TestRole ExecDeathTest::AssumeRole() { return OVERSEE_TEST; } -#endif // !GTEST_OS_WINDOWS +# endif // !GTEST_OS_WINDOWS // Creates a concrete DeathTest-derived class that depends on the // --gtest_death_test_style flag, and sets the pointer pointed to @@ -1012,18 +1172,23 @@ bool DefaultDeathTestFactory::Create(const char* statement, const RE* regex, } } -#if GTEST_OS_WINDOWS +# if GTEST_OS_WINDOWS + if (GTEST_FLAG(death_test_style) == "threadsafe" || GTEST_FLAG(death_test_style) == "fast") { *test = new WindowsDeathTest(statement, regex, file, line); } -#else + +# else + if (GTEST_FLAG(death_test_style) == "threadsafe") { *test = new ExecDeathTest(statement, regex, file, line); } else if (GTEST_FLAG(death_test_style) == "fast") { *test = new NoExecDeathTest(statement, regex); } -#endif // GTEST_OS_WINDOWS + +# endif // GTEST_OS_WINDOWS + else { // NOLINT - this is more readable than unbalanced brackets inside #if. DeathTest::set_last_death_test_message(String::Format( "Unknown death test style \"%s\" encountered", @@ -1037,8 +1202,6 @@ bool DefaultDeathTestFactory::Create(const char* statement, const RE* regex, // Splits a given string on a given delimiter, populating a given // vector with the fields. GTEST_HAS_DEATH_TEST implies that we have // ::std::string, so we can use it here. -// TODO(vladl@google.com): Get rid of std::vector to be able to build on -// Visual C++ 7.1 with exceptions disabled. static void SplitString(const ::std::string& str, char delimiter, ::std::vector< ::std::string>* dest) { ::std::vector< ::std::string> parsed; @@ -1056,7 +1219,7 @@ static void SplitString(const ::std::string& str, char delimiter, dest->swap(parsed); } -#if GTEST_OS_WINDOWS +# if GTEST_OS_WINDOWS // Recreates the pipe and event handles from the provided parameters, // signals the event, and returns a file descriptor wrapped around the pipe // handle. This function is called in the child process only. @@ -1120,7 +1283,7 @@ int GetStatusFileDescriptor(unsigned int parent_process_id, return write_fd; } -#endif // GTEST_OS_WINDOWS +# endif // GTEST_OS_WINDOWS // Returns a newly created InternalRunDeathTestFlag object with fields // initialized from the GTEST_FLAG(internal_run_death_test) flag if @@ -1136,7 +1299,8 @@ InternalRunDeathTestFlag* ParseInternalRunDeathTestFlag() { SplitString(GTEST_FLAG(internal_run_death_test).c_str(), '|', &fields); int write_fd = -1; -#if GTEST_OS_WINDOWS +# if GTEST_OS_WINDOWS + unsigned int parent_process_id = 0; size_t write_handle_as_size_t = 0; size_t event_handle_as_size_t = 0; @@ -1154,7 +1318,8 @@ InternalRunDeathTestFlag* ParseInternalRunDeathTestFlag() { write_fd = GetStatusFileDescriptor(parent_process_id, write_handle_as_size_t, event_handle_as_size_t); -#else +# else + if (fields.size() != 4 || !ParseNaturalNumber(fields[1], &line) || !ParseNaturalNumber(fields[2], &index) @@ -1163,7 +1328,9 @@ InternalRunDeathTestFlag* ParseInternalRunDeathTestFlag() { "Bad --gtest_internal_run_death_test flag: %s", GTEST_FLAG(internal_run_death_test).c_str())); } -#endif // GTEST_OS_WINDOWS + +# endif // GTEST_OS_WINDOWS + return new InternalRunDeathTestFlag(fields[0], line, index, write_fd); } diff --git a/cpp/thirdparty/protobuf-2.3.0/gtest/src/gtest-filepath.cc b/cpp/thirdparty/protobuf-2.5.0/gtest/src/gtest-filepath.cc similarity index 78% rename from cpp/thirdparty/protobuf-2.3.0/gtest/src/gtest-filepath.cc rename to cpp/thirdparty/protobuf-2.5.0/gtest/src/gtest-filepath.cc index 515d61c78..4d40cb966 100644 --- a/cpp/thirdparty/protobuf-2.3.0/gtest/src/gtest-filepath.cc +++ b/cpp/thirdparty/protobuf-2.5.0/gtest/src/gtest-filepath.cc @@ -29,58 +29,73 @@ // // Authors: keith.ray@gmail.com (Keith Ray) -#include -#include +#include "gtest/internal/gtest-filepath.h" +#include "gtest/internal/gtest-port.h" #include #if GTEST_OS_WINDOWS_MOBILE -#include +# include #elif GTEST_OS_WINDOWS -#include -#include +# include +# include #elif GTEST_OS_SYMBIAN // Symbian OpenC has PATH_MAX in sys/syslimits.h -#include +# include #else -#include -#include // Some Linux distributions define PATH_MAX here. +# include +# include // Some Linux distributions define PATH_MAX here. #endif // GTEST_OS_WINDOWS_MOBILE #if GTEST_OS_WINDOWS -#define GTEST_PATH_MAX_ _MAX_PATH +# define GTEST_PATH_MAX_ _MAX_PATH #elif defined(PATH_MAX) -#define GTEST_PATH_MAX_ PATH_MAX +# define GTEST_PATH_MAX_ PATH_MAX #elif defined(_XOPEN_PATH_MAX) -#define GTEST_PATH_MAX_ _XOPEN_PATH_MAX +# define GTEST_PATH_MAX_ _XOPEN_PATH_MAX #else -#define GTEST_PATH_MAX_ _POSIX_PATH_MAX +# define GTEST_PATH_MAX_ _POSIX_PATH_MAX #endif // GTEST_OS_WINDOWS -#include +#include "gtest/internal/gtest-string.h" namespace testing { namespace internal { #if GTEST_OS_WINDOWS +// On Windows, '\\' is the standard path separator, but many tools and the +// Windows API also accept '/' as an alternate path separator. Unless otherwise +// noted, a file path can contain either kind of path separators, or a mixture +// of them. const char kPathSeparator = '\\'; +const char kAlternatePathSeparator = '/'; const char kPathSeparatorString[] = "\\"; -#if GTEST_OS_WINDOWS_MOBILE +const char kAlternatePathSeparatorString[] = "/"; +# if GTEST_OS_WINDOWS_MOBILE // Windows CE doesn't have a current directory. You should not use // the current directory in tests on Windows CE, but this at least // provides a reasonable fallback. const char kCurrentDirectoryString[] = "\\"; // Windows CE doesn't define INVALID_FILE_ATTRIBUTES const DWORD kInvalidFileAttributes = 0xffffffff; -#else +# else const char kCurrentDirectoryString[] = ".\\"; -#endif // GTEST_OS_WINDOWS_MOBILE +# endif // GTEST_OS_WINDOWS_MOBILE #else const char kPathSeparator = '/'; const char kPathSeparatorString[] = "/"; const char kCurrentDirectoryString[] = "./"; #endif // GTEST_OS_WINDOWS +// Returns whether the given character is a valid path separator. +static bool IsPathSeparator(char c) { +#if GTEST_HAS_ALT_PATH_SEP_ + return (c == kPathSeparator) || (c == kAlternatePathSeparator); +#else + return c == kPathSeparator; +#endif +} + // Returns the current working directory, or "" if unsuccessful. FilePath FilePath::GetCurrentDir() { #if GTEST_OS_WINDOWS_MOBILE @@ -101,13 +116,30 @@ FilePath FilePath::GetCurrentDir() { // FilePath("dir/file"). If a case-insensitive extension is not // found, returns a copy of the original FilePath. FilePath FilePath::RemoveExtension(const char* extension) const { - String dot_extension(String::Format(".%s", extension)); - if (pathname_.EndsWithCaseInsensitive(dot_extension.c_str())) { - return FilePath(String(pathname_.c_str(), pathname_.length() - 4)); + const std::string dot_extension = std::string(".") + extension; + if (String::EndsWithCaseInsensitive(pathname_, dot_extension)) { + return FilePath(pathname_.substr( + 0, pathname_.length() - dot_extension.length())); } return *this; } +// Returns a pointer to the last occurence of a valid path separator in +// the FilePath. On Windows, for example, both '/' and '\' are valid path +// separators. Returns NULL if no path separator was found. +const char* FilePath::FindLastPathSeparator() const { + const char* const last_sep = strrchr(c_str(), kPathSeparator); +#if GTEST_HAS_ALT_PATH_SEP_ + const char* const last_alt_sep = strrchr(c_str(), kAlternatePathSeparator); + // Comparing two pointers of which only one is NULL is undefined. + if (last_alt_sep != NULL && + (last_sep == NULL || last_alt_sep > last_sep)) { + return last_alt_sep; + } +#endif + return last_sep; +} + // Returns a copy of the FilePath with the directory part removed. // Example: FilePath("path/to/file").RemoveDirectoryName() returns // FilePath("file"). If there is no directory part ("just_a_file"), it returns @@ -115,8 +147,8 @@ FilePath FilePath::RemoveExtension(const char* extension) const { // returns an empty FilePath (""). // On Windows platform, '\' is the path separator, otherwise it is '/'. FilePath FilePath::RemoveDirectoryName() const { - const char* const last_sep = strrchr(c_str(), kPathSeparator); - return last_sep ? FilePath(String(last_sep + 1)) : *this; + const char* const last_sep = FindLastPathSeparator(); + return last_sep ? FilePath(last_sep + 1) : *this; } // RemoveFileName returns the directory path with the filename removed. @@ -126,10 +158,10 @@ FilePath FilePath::RemoveDirectoryName() const { // not have a file, like "just/a/dir/", it returns the FilePath unmodified. // On Windows platform, '\' is the path separator, otherwise it is '/'. FilePath FilePath::RemoveFileName() const { - const char* const last_sep = strrchr(c_str(), kPathSeparator); - String dir; + const char* const last_sep = FindLastPathSeparator(); + std::string dir; if (last_sep) { - dir = String(c_str(), last_sep + 1 - c_str()); + dir = std::string(c_str(), last_sep + 1 - c_str()); } else { dir = kCurrentDirectoryString; } @@ -146,11 +178,12 @@ FilePath FilePath::MakeFileName(const FilePath& directory, const FilePath& base_name, int number, const char* extension) { - String file; + std::string file; if (number == 0) { - file = String::Format("%s.%s", base_name.c_str(), extension); + file = base_name.string() + "." + extension; } else { - file = String::Format("%s_%d.%s", base_name.c_str(), number, extension); + file = base_name.string() + "_" + String::Format("%d", number).c_str() + + "." + extension; } return ConcatPaths(directory, FilePath(file)); } @@ -162,8 +195,7 @@ FilePath FilePath::ConcatPaths(const FilePath& directory, if (directory.IsEmpty()) return relative_path; const FilePath dir(directory.RemoveTrailingPathSeparator()); - return FilePath(String::Format("%s%c%s", dir.c_str(), kPathSeparator, - relative_path.c_str())); + return FilePath(dir.string() + kPathSeparator + relative_path.string()); } // Returns true if pathname describes something findable in the file-system, @@ -219,7 +251,7 @@ bool FilePath::IsRootDirectory() const { // current directory. Handle this properly. return pathname_.length() == 3 && IsAbsolutePath(); #else - return pathname_ == kPathSeparatorString; + return pathname_.length() == 1 && IsPathSeparator(pathname_.c_str()[0]); #endif } @@ -231,9 +263,9 @@ bool FilePath::IsAbsolutePath() const { ((name[0] >= 'a' && name[0] <= 'z') || (name[0] >= 'A' && name[0] <= 'Z')) && name[1] == ':' && - name[2] == kPathSeparator; + IsPathSeparator(name[2]); #else - return name[0] == kPathSeparator; + return IsPathSeparator(name[0]); #endif } @@ -260,7 +292,8 @@ FilePath FilePath::GenerateUniqueFileName(const FilePath& directory, // it is intended to represent a directory. Returns false otherwise. // This does NOT check that a directory (or file) actually exists. bool FilePath::IsDirectory() const { - return pathname_.EndsWith(kPathSeparatorString); + return !pathname_.empty() && + IsPathSeparator(pathname_.c_str()[pathname_.length() - 1]); } // Create directories so that path exists. Returns true if successful or if @@ -305,14 +338,15 @@ bool FilePath::CreateFolder() const { // name, otherwise return the name string unmodified. // On Windows platform, uses \ as the separator, other platforms use /. FilePath FilePath::RemoveTrailingPathSeparator() const { - return pathname_.EndsWith(kPathSeparatorString) - ? FilePath(String(pathname_.c_str(), pathname_.length() - 1)) + return IsDirectory() + ? FilePath(pathname_.substr(0, pathname_.length() - 1)) : *this; } -// Normalize removes any redundant separators that might be in the pathname. +// Removes any redundant separators that might be in the pathname. // For example, "bar///foo" becomes "bar/foo". Does not eliminate other // redundancies that might be in a pathname involving "." or "..". +// TODO(wan@google.com): handle Windows network shares (e.g. \\server\share). void FilePath::Normalize() { if (pathname_.c_str() == NULL) { pathname_ = ""; @@ -324,12 +358,19 @@ void FilePath::Normalize() { memset(dest_ptr, 0, pathname_.length() + 1); while (*src != '\0') { - *dest_ptr++ = *src; - if (*src != kPathSeparator) + *dest_ptr = *src; + if (!IsPathSeparator(*src)) { src++; - else - while (*src == kPathSeparator) + } else { +#if GTEST_HAS_ALT_PATH_SEP_ + if (*dest_ptr == kAlternatePathSeparator) { + *dest_ptr = kPathSeparator; + } +#endif + while (IsPathSeparator(*src)) src++; + } + dest_ptr++; } *dest_ptr = '\0'; pathname_ = dest; diff --git a/cpp/thirdparty/protobuf-2.3.0/gtest/src/gtest-internal-inl.h b/cpp/thirdparty/protobuf-2.5.0/gtest/src/gtest-internal-inl.h similarity index 66% rename from cpp/thirdparty/protobuf-2.3.0/gtest/src/gtest-internal-inl.h rename to cpp/thirdparty/protobuf-2.5.0/gtest/src/gtest-internal-inl.h index 47aec22d1..54717c95e 100644 --- a/cpp/thirdparty/protobuf-2.3.0/gtest/src/gtest-internal-inl.h +++ b/cpp/thirdparty/protobuf-2.5.0/gtest/src/gtest-internal-inl.h @@ -41,27 +41,29 @@ // part of Google Test's implementation; otherwise it's undefined. #if !GTEST_IMPLEMENTATION_ // A user is trying to include this from his code - just say no. -#error "gtest-internal-inl.h is part of Google Test's internal implementation." -#error "It must not be included except by Google Test itself." +# error "gtest-internal-inl.h is part of Google Test's internal implementation." +# error "It must not be included except by Google Test itself." #endif // GTEST_IMPLEMENTATION_ #ifndef _WIN32_WCE -#include +# include #endif // !_WIN32_WCE #include #include // For strtoll/_strtoul64/malloc/free. #include // For memmove. +#include #include +#include -#include +#include "gtest/internal/gtest-port.h" #if GTEST_OS_WINDOWS -#include // For DWORD. +# include // NOLINT #endif // GTEST_OS_WINDOWS -#include -#include +#include "gtest/gtest.h" // NOLINT +#include "gtest/gtest-spi.h" namespace testing { @@ -76,7 +78,7 @@ namespace internal { // The value of GetTestTypeId() as seen from within the Google Test // library. This is solely for testing GetTestTypeId(). -extern const TypeId kTestTypeIdInGoogleTest; +GTEST_API_ extern const TypeId kTestTypeIdInGoogleTest; // Names of the flags (needed for parsing Google Test flags). const char kAlsoRunDisabledTestsFlag[] = "also_run_disabled_tests"; @@ -90,13 +92,38 @@ const char kPrintTimeFlag[] = "print_time"; const char kRandomSeedFlag[] = "random_seed"; const char kRepeatFlag[] = "repeat"; const char kShuffleFlag[] = "shuffle"; +const char kStackTraceDepthFlag[] = "stack_trace_depth"; +const char kStreamResultToFlag[] = "stream_result_to"; const char kThrowOnFailureFlag[] = "throw_on_failure"; // A valid random seed must be in [1, kMaxRandomSeed]. const int kMaxRandomSeed = 99999; +// g_help_flag is true iff the --help flag or an equivalent form is +// specified on the command line. +GTEST_API_ extern bool g_help_flag; + // Returns the current time in milliseconds. -TimeInMillis GetTimeInMillis(); +GTEST_API_ TimeInMillis GetTimeInMillis(); + +// Returns true iff Google Test should use colors in the output. +GTEST_API_ bool ShouldUseColor(bool stdout_is_tty); + +// Formats the given time in milliseconds as seconds. +GTEST_API_ std::string FormatTimeInMillisAsSeconds(TimeInMillis ms); + +// Converts the given time in milliseconds to a date string in the ISO 8601 +// format, without the timezone information. N.B.: due to the use the +// non-reentrant localtime() function, this function is not thread safe. Do +// not use it in any code that can be called from multiple threads. +GTEST_API_ std::string FormatEpochTimeInMillisAsIso8601(TimeInMillis ms); + +// Parses a string for an Int32 flag, in the form of "--flag=value". +// +// On success, stores the value of the flag in *value, and returns +// true. On failure, returns false without changing *value. +GTEST_API_ bool ParseInt32Flag( + const char* str, const char* flag, Int32* value); // Returns a random seed in range [1, kMaxRandomSeed] based on the // given --gtest_random_seed flag value. @@ -144,6 +171,8 @@ class GTestFlagSaver { random_seed_ = GTEST_FLAG(random_seed); repeat_ = GTEST_FLAG(repeat); shuffle_ = GTEST_FLAG(shuffle); + stack_trace_depth_ = GTEST_FLAG(stack_trace_depth); + stream_result_to_ = GTEST_FLAG(stream_result_to); throw_on_failure_ = GTEST_FLAG(throw_on_failure); } @@ -163,25 +192,30 @@ class GTestFlagSaver { GTEST_FLAG(random_seed) = random_seed_; GTEST_FLAG(repeat) = repeat_; GTEST_FLAG(shuffle) = shuffle_; + GTEST_FLAG(stack_trace_depth) = stack_trace_depth_; + GTEST_FLAG(stream_result_to) = stream_result_to_; GTEST_FLAG(throw_on_failure) = throw_on_failure_; } + private: // Fields for saving the original values of flags. bool also_run_disabled_tests_; bool break_on_failure_; bool catch_exceptions_; - String color_; - String death_test_style_; + std::string color_; + std::string death_test_style_; bool death_test_use_fork_; - String filter_; - String internal_run_death_test_; + std::string filter_; + std::string internal_run_death_test_; bool list_tests_; - String output_; + std::string output_; bool print_time_; bool pretty_; internal::Int32 random_seed_; internal::Int32 repeat_; bool shuffle_; + internal::Int32 stack_trace_depth_; + std::string stream_result_to_; bool throw_on_failure_; } GTEST_ATTRIBUTE_UNUSED_; @@ -193,7 +227,7 @@ class GTestFlagSaver { // If the code_point is not a valid Unicode code point // (i.e. outside of Unicode range U+0 to U+10FFFF) it will be output // as '(Invalid Unicode 0xXXXXXXXX)'. -char* CodePointToUtf8(UInt32 code_point, char* str); +GTEST_API_ char* CodePointToUtf8(UInt32 code_point, char* str); // Converts a wide string to a narrow string in UTF-8 encoding. // The wide string is assumed to have the following encoding: @@ -208,10 +242,7 @@ char* CodePointToUtf8(UInt32 code_point, char* str); // as '(Invalid Unicode 0xXXXXXXXX)'. If the string is in UTF16 encoding // and contains invalid UTF-16 surrogate pairs, values in those pairs // will be encoded as individual Unicode characters from Basic Normal Plane. -String WideStringToUtf8(const wchar_t* str, int num_chars); - -// Returns the number of active threads, or 0 when there is an error. -size_t GetThreadCount(); +GTEST_API_ std::string WideStringToUtf8(const wchar_t* str, int num_chars); // Reads the GTEST_SHARD_STATUS_FILE environment variable, and creates the file // if the variable is present. If a file already exists at this location, this @@ -225,269 +256,85 @@ void WriteToShardStatusFileIfNeeded(); // an error and exits. If in_subprocess_for_death_test, sharding is // disabled because it must only be applied to the original test // process. Otherwise, we could filter out death tests we intended to execute. -bool ShouldShard(const char* total_shards_str, const char* shard_index_str, - bool in_subprocess_for_death_test); +GTEST_API_ bool ShouldShard(const char* total_shards_str, + const char* shard_index_str, + bool in_subprocess_for_death_test); // Parses the environment variable var as an Int32. If it is unset, // returns default_val. If it is not an Int32, prints an error and // and aborts. -Int32 Int32FromEnvOrDie(const char* env_var, Int32 default_val); +GTEST_API_ Int32 Int32FromEnvOrDie(const char* env_var, Int32 default_val); // Given the total number of shards, the shard index, and the test id, // returns true iff the test should be run on this shard. The test id is // some arbitrary but unique non-negative integer assigned to each test // method. Assumes that 0 <= shard_index < total_shards. -bool ShouldRunTestOnShard(int total_shards, int shard_index, int test_id); - -// Vector is an ordered container that supports random access to the -// elements. -// -// We cannot use std::vector, as Visual C++ 7.1's implementation of -// STL has problems compiling when exceptions are disabled. There is -// a hack to work around the problems, but we've seen cases where the -// hack fails to work. -// -// The element type must support copy constructor and operator=. -template // E is the element type. -class Vector { - public: - // Creates an empty Vector. - Vector() : elements_(NULL), capacity_(0), size_(0) {} - - // D'tor. - virtual ~Vector() { Clear(); } - - // Clears the Vector. - void Clear() { - if (elements_ != NULL) { - for (int i = 0; i < size_; i++) { - delete elements_[i]; - } - - free(elements_); - elements_ = NULL; - capacity_ = size_ = 0; - } - } - - // Gets the number of elements. - int size() const { return size_; } - - // Adds an element to the end of the Vector. A copy of the element - // is created using the copy constructor, and then stored in the - // Vector. Changes made to the element in the Vector doesn't affect - // the source object, and vice versa. - void PushBack(const E& element) { Insert(element, size_); } - - // Adds an element to the beginning of this Vector. - void PushFront(const E& element) { Insert(element, 0); } - - // Removes an element from the beginning of this Vector. If the - // result argument is not NULL, the removed element is stored in the - // memory it points to. Otherwise the element is thrown away. - // Returns true iff the vector wasn't empty before the operation. - bool PopFront(E* result) { - if (size_ == 0) - return false; - - if (result != NULL) - *result = GetElement(0); - - Erase(0); - return true; - } - - // Inserts an element at the given index. It's the caller's - // responsibility to ensure that the given index is in the range [0, - // size()]. - void Insert(const E& element, int index) { - GrowIfNeeded(); - MoveElements(index, size_ - index, index + 1); - elements_[index] = new E(element); - size_++; - } - - // Erases the element at the specified index, or aborts the program if the - // index is not in range [0, size()). - void Erase(int index) { - GTEST_CHECK_(0 <= index && index < size_) - << "Invalid Vector index " << index << ": must be in range [0, " - << (size_ - 1) << "]."; - - delete elements_[index]; - MoveElements(index + 1, size_ - index - 1, index); - size_--; - } - - // Returns the number of elements that satisfy a given predicate. - // The parameter 'predicate' is a Boolean function or functor that - // accepts a 'const E &', where E is the element type. - template // P is the type of the predicate function/functor - int CountIf(P predicate) const { - int count = 0; - for (int i = 0; i < size_; i++) { - if (predicate(*(elements_[i]))) { - count++; - } - } - - return count; - } - - // Applies a function/functor to each element in the Vector. The - // parameter 'functor' is a function/functor that accepts a 'const - // E &', where E is the element type. This method does not change - // the elements. - template // F is the type of the function/functor - void ForEach(F functor) const { - for (int i = 0; i < size_; i++) { - functor(*(elements_[i])); - } - } - - // Returns the first node whose element satisfies a given predicate, - // or NULL if none is found. The parameter 'predicate' is a - // function/functor that accepts a 'const E &', where E is the - // element type. This method does not change the elements. - template // P is the type of the predicate function/functor. - const E* FindIf(P predicate) const { - for (int i = 0; i < size_; i++) { - if (predicate(*elements_[i])) { - return elements_[i]; - } - } - return NULL; - } - - template - E* FindIf(P predicate) { - for (int i = 0; i < size_; i++) { - if (predicate(*elements_[i])) { - return elements_[i]; - } - } - return NULL; - } - - // Returns the i-th element of the Vector, or aborts the program if i - // is not in range [0, size()). - const E& GetElement(int i) const { - GTEST_CHECK_(0 <= i && i < size_) - << "Invalid Vector index " << i << ": must be in range [0, " - << (size_ - 1) << "]."; - - return *(elements_[i]); - } - - // Returns a mutable reference to the i-th element of the Vector, or - // aborts the program if i is not in range [0, size()). - E& GetMutableElement(int i) { - GTEST_CHECK_(0 <= i && i < size_) - << "Invalid Vector index " << i << ": must be in range [0, " - << (size_ - 1) << "]."; - - return *(elements_[i]); - } - - // Returns the i-th element of the Vector, or default_value if i is not - // in range [0, size()). - E GetElementOr(int i, E default_value) const { - return (i < 0 || i >= size_) ? default_value : *(elements_[i]); - } - - // Swaps the i-th and j-th elements of the Vector. Crashes if i or - // j is invalid. - void Swap(int i, int j) { - GTEST_CHECK_(0 <= i && i < size_) - << "Invalid first swap element " << i << ": must be in range [0, " - << (size_ - 1) << "]."; - GTEST_CHECK_(0 <= j && j < size_) - << "Invalid second swap element " << j << ": must be in range [0, " - << (size_ - 1) << "]."; - - E* const temp = elements_[i]; - elements_[i] = elements_[j]; - elements_[j] = temp; - } - - // Performs an in-place shuffle of a range of this Vector's nodes. - // 'begin' and 'end' are element indices as an STL-style range; - // i.e. [begin, end) are shuffled, where 'end' == size() means to - // shuffle to the end of the Vector. - void ShuffleRange(internal::Random* random, int begin, int end) { - GTEST_CHECK_(0 <= begin && begin <= size_) - << "Invalid shuffle range start " << begin << ": must be in range [0, " - << size_ << "]."; - GTEST_CHECK_(begin <= end && end <= size_) - << "Invalid shuffle range finish " << end << ": must be in range [" - << begin << ", " << size_ << "]."; - - // Fisher-Yates shuffle, from - // http://en.wikipedia.org/wiki/Fisher-Yates_shuffle - for (int range_width = end - begin; range_width >= 2; range_width--) { - const int last_in_range = begin + range_width - 1; - const int selected = begin + random->Generate(range_width); - Swap(selected, last_in_range); - } - } - - // Performs an in-place shuffle of this Vector's nodes. - void Shuffle(internal::Random* random) { - ShuffleRange(random, 0, size()); - } - - // Returns a copy of this Vector. - Vector* Clone() const { - Vector* const clone = new Vector; - clone->Reserve(size_); - for (int i = 0; i < size_; i++) { - clone->PushBack(GetElement(i)); - } - return clone; +GTEST_API_ bool ShouldRunTestOnShard( + int total_shards, int shard_index, int test_id); + +// STL container utilities. + +// Returns the number of elements in the given container that satisfy +// the given predicate. +template +inline int CountIf(const Container& c, Predicate predicate) { + // Implemented as an explicit loop since std::count_if() in libCstd on + // Solaris has a non-standard signature. + int count = 0; + for (typename Container::const_iterator it = c.begin(); it != c.end(); ++it) { + if (predicate(*it)) + ++count; } + return count; +} - private: - // Makes sure this Vector's capacity is at least the given value. - void Reserve(int new_capacity) { - if (new_capacity <= capacity_) - return; - - capacity_ = new_capacity; - elements_ = static_cast( - realloc(elements_, capacity_*sizeof(elements_[0]))); - } +// Applies a function/functor to each element in the container. +template +void ForEach(const Container& c, Functor functor) { + std::for_each(c.begin(), c.end(), functor); +} - // Grows the buffer if it is not big enough to hold one more element. - void GrowIfNeeded() { - if (size_ < capacity_) - return; - - // Exponential bump-up is necessary to ensure that inserting N - // elements is O(N) instead of O(N^2). The factor 3/2 means that - // no more than 1/3 of the slots are wasted. - const int new_capacity = 3*(capacity_/2 + 1); - GTEST_CHECK_(new_capacity > capacity_) // Does the new capacity overflow? - << "Cannot grow a Vector with " << capacity_ << " elements already."; - Reserve(new_capacity); - } +// Returns the i-th element of the vector, or default_value if i is not +// in range [0, v.size()). +template +inline E GetElementOr(const std::vector& v, int i, E default_value) { + return (i < 0 || i >= static_cast(v.size())) ? default_value : v[i]; +} - // Moves the give consecutive elements to a new index in the Vector. - void MoveElements(int source, int count, int dest) { - memmove(elements_ + dest, elements_ + source, count*sizeof(elements_[0])); +// Performs an in-place shuffle of a range of the vector's elements. +// 'begin' and 'end' are element indices as an STL-style range; +// i.e. [begin, end) are shuffled, where 'end' == size() means to +// shuffle to the end of the vector. +template +void ShuffleRange(internal::Random* random, int begin, int end, + std::vector* v) { + const int size = static_cast(v->size()); + GTEST_CHECK_(0 <= begin && begin <= size) + << "Invalid shuffle range start " << begin << ": must be in range [0, " + << size << "]."; + GTEST_CHECK_(begin <= end && end <= size) + << "Invalid shuffle range finish " << end << ": must be in range [" + << begin << ", " << size << "]."; + + // Fisher-Yates shuffle, from + // http://en.wikipedia.org/wiki/Fisher-Yates_shuffle + for (int range_width = end - begin; range_width >= 2; range_width--) { + const int last_in_range = begin + range_width - 1; + const int selected = begin + random->Generate(range_width); + std::swap((*v)[selected], (*v)[last_in_range]); } +} - E** elements_; - int capacity_; // The number of elements allocated for elements_. - int size_; // The number of elements; in the range [0, capacity_]. - - // We disallow copying Vector. - GTEST_DISALLOW_COPY_AND_ASSIGN_(Vector); -}; // class Vector +// Performs an in-place shuffle of the vector's elements. +template +inline void Shuffle(internal::Random* random, std::vector* v) { + ShuffleRange(random, 0, static_cast(v->size()), v); +} // A function for deleting an object. Handy for being used as a // functor. template -static void Delete(T * x) { +static void Delete(T* x) { delete x; } @@ -504,90 +351,11 @@ class TestPropertyKeyIs { // Returns true iff the test name of test property matches on key_. bool operator()(const TestProperty& test_property) const { - return String(test_property.key()).Compare(key_) == 0; + return test_property.key() == key_; } private: - String key_; -}; - -class TestInfoImpl { - public: - TestInfoImpl(TestInfo* parent, const char* test_case_name, - const char* name, const char* test_case_comment, - const char* comment, TypeId fixture_class_id, - internal::TestFactoryBase* factory); - ~TestInfoImpl(); - - // Returns true if this test should run. - bool should_run() const { return should_run_; } - - // Sets the should_run member. - void set_should_run(bool should) { should_run_ = should; } - - // Returns true if this test is disabled. Disabled tests are not run. - bool is_disabled() const { return is_disabled_; } - - // Sets the is_disabled member. - void set_is_disabled(bool is) { is_disabled_ = is; } - - // Returns true if this test matches the filter specified by the user. - bool matches_filter() const { return matches_filter_; } - - // Sets the matches_filter member. - void set_matches_filter(bool matches) { matches_filter_ = matches; } - - // Returns the test case name. - const char* test_case_name() const { return test_case_name_.c_str(); } - - // Returns the test name. - const char* name() const { return name_.c_str(); } - - // Returns the test case comment. - const char* test_case_comment() const { return test_case_comment_.c_str(); } - - // Returns the test comment. - const char* comment() const { return comment_.c_str(); } - - // Returns the ID of the test fixture class. - TypeId fixture_class_id() const { return fixture_class_id_; } - - // Returns the test result. - TestResult* result() { return &result_; } - const TestResult* result() const { return &result_; } - - // Creates the test object, runs it, records its result, and then - // deletes it. - void Run(); - - // Clears the test result. - void ClearResult() { result_.Clear(); } - - // Clears the test result in the given TestInfo object. - static void ClearTestResult(TestInfo * test_info) { - test_info->impl()->ClearResult(); - } - - private: - // These fields are immutable properties of the test. - TestInfo* const parent_; // The owner of this object - const String test_case_name_; // Test case name - const String name_; // Test name - const String test_case_comment_; // Test case comment - const String comment_; // Test comment - const TypeId fixture_class_id_; // ID of the test fixture class - bool should_run_; // True iff this test should run - bool is_disabled_; // True iff this test is disabled - bool matches_filter_; // True if this test matches the - // user-specified filter. - internal::TestFactoryBase* const factory_; // The factory that creates - // the test object - - // This field is mutable and needs to be reset before running the - // test for the second time. - TestResult result_; - - GTEST_DISALLOW_COPY_AND_ASSIGN_(TestInfoImpl); + std::string key_; }; // Class UnitTestOptions. @@ -600,17 +368,17 @@ class TestInfoImpl { // test filter using either GTEST_FILTER or --gtest_filter. If both // the variable and the flag are present, the latter overrides the // former. -class UnitTestOptions { +class GTEST_API_ UnitTestOptions { public: // Functions for processing the gtest_output flag. // Returns the output format, or "" for normal printed output. - static String GetOutputFormat(); + static std::string GetOutputFormat(); // Returns the absolute path of the requested output file, or the // default (test_detail.xml in the original working directory) if // none was explicitly specified. - static String GetAbsolutePathToOutputFile(); + static std::string GetAbsolutePathToOutputFile(); // Functions for processing the gtest_filter flag. @@ -623,8 +391,8 @@ class UnitTestOptions { // Returns true iff the user-specified filter matches the test case // name and the test name. - static bool FilterMatchesTest(const String &test_case_name, - const String &test_name); + static bool FilterMatchesTest(const std::string &test_case_name, + const std::string &test_name); #if GTEST_OS_WINDOWS // Function for supporting the gtest_catch_exception flag. @@ -637,12 +405,12 @@ class UnitTestOptions { // Returns true if "name" matches the ':' separated list of glob-style // filters in "filter". - static bool MatchesFilter(const String& name, const char* filter); + static bool MatchesFilter(const std::string& name, const char* filter); }; // Returns the current application's name, removing directory path if that // is present. Used by UnitTestOptions::GetOutputFile. -FilePath GetCurrentExecutableName(); +GTEST_API_ FilePath GetCurrentExecutableName(); // The role interface for getting the OS stack trace as a string. class OsStackTraceGetterInterface { @@ -650,13 +418,13 @@ class OsStackTraceGetterInterface { OsStackTraceGetterInterface() {} virtual ~OsStackTraceGetterInterface() {} - // Returns the current OS stack trace as a String. Parameters: + // Returns the current OS stack trace as an std::string. Parameters: // // max_depth - the maximum number of stack frames to be included // in the trace. // skip_count - the number of top frames to be skipped; doesn't count // against max_depth. - virtual String CurrentStackTrace(int max_depth, int skip_count) = 0; + virtual string CurrentStackTrace(int max_depth, int skip_count) = 0; // UponLeavingGTest() should be called immediately before Google Test calls // user code. It saves some information about the current stack that @@ -671,8 +439,11 @@ class OsStackTraceGetterInterface { class OsStackTraceGetter : public OsStackTraceGetterInterface { public: OsStackTraceGetter() : caller_frame_(NULL) {} - virtual String CurrentStackTrace(int max_depth, int skip_count); - virtual void UponLeavingGTest(); + + virtual string CurrentStackTrace(int max_depth, int skip_count) + GTEST_LOCK_EXCLUDED_(mutex_); + + virtual void UponLeavingGTest() GTEST_LOCK_EXCLUDED_(mutex_); // This string is inserted in place of stack frames that are part of // Google Test's implementation. @@ -694,7 +465,7 @@ class OsStackTraceGetter : public OsStackTraceGetterInterface { struct TraceInfo { const char* file; int line; - String message; + std::string message; }; // This is the default global test part result reporter used in UnitTestImpl. @@ -733,7 +504,7 @@ class DefaultPerThreadTestPartResultReporter // the methods under a mutex, as this class is not accessible by a // user and the UnitTest class that delegates work to this class does // proper locking. -class UnitTestImpl { +class GTEST_API_ UnitTestImpl { public: explicit UnitTestImpl(UnitTest* parent); virtual ~UnitTestImpl(); @@ -787,6 +558,10 @@ class UnitTestImpl { // Gets the number of tests that should run. int test_to_run_count() const; + // Gets the time of the test program start, in ms from the start of the + // UNIX epoch. + TimeInMillis start_timestamp() const { return start_timestamp_; } + // Gets the elapsed time, in milliseconds. TimeInMillis elapsed_time() const { return elapsed_time_; } @@ -802,15 +577,15 @@ class UnitTestImpl { // Gets the i-th test case among all the test cases. i can range from 0 to // total_test_case_count() - 1. If i is not in that range, returns NULL. const TestCase* GetTestCase(int i) const { - const int index = test_case_indices_.GetElementOr(i, -1); - return index < 0 ? NULL : test_cases_.GetElement(i); + const int index = GetElementOr(test_case_indices_, i, -1); + return index < 0 ? NULL : test_cases_[i]; } // Gets the i-th test case among all the test cases. i can range from 0 to // total_test_case_count() - 1. If i is not in that range, returns NULL. TestCase* GetMutableTestCase(int i) { - const int index = test_case_indices_.GetElementOr(i, -1); - return index < 0 ? NULL : test_cases_.GetElement(index); + const int index = GetElementOr(test_case_indices_, i, -1); + return index < 0 ? NULL : test_cases_[index]; } // Provides access to the event listener list. @@ -835,7 +610,7 @@ class UnitTestImpl { // getter, and returns it. OsStackTraceGetterInterface* os_stack_trace_getter(); - // Returns the current OS stack trace as a String. + // Returns the current OS stack trace as an std::string. // // The maximum number of stack frames to be included is specified by // the gtest_stack_trace_depth flag. The skip_count parameter @@ -845,7 +620,7 @@ class UnitTestImpl { // For example, if Foo() calls Bar(), which in turn calls // CurrentOsStackTraceExceptTop(1), Foo() will be included in the // trace but Bar() and CurrentOsStackTraceExceptTop() won't. - String CurrentOsStackTraceExceptTop(int skip_count); + std::string CurrentOsStackTraceExceptTop(int skip_count) GTEST_NO_INLINE_; // Finds and returns a TestCase with the given name. If one doesn't // exist, creates one and returns it. @@ -853,10 +628,12 @@ class UnitTestImpl { // Arguments: // // test_case_name: name of the test case + // type_param: the name of the test's type parameter, or NULL if + // this is not a typed or a type-parameterized test. // set_up_tc: pointer to the function that sets up the test case // tear_down_tc: pointer to the function that tears down the test case TestCase* GetTestCase(const char* test_case_name, - const char* comment, + const char* type_param, Test::SetUpTestCaseFunc set_up_tc, Test::TearDownTestCaseFunc tear_down_tc); @@ -869,7 +646,7 @@ class UnitTestImpl { // test_info: the TestInfo object void AddTestInfo(Test::SetUpTestCaseFunc set_up_tc, Test::TearDownTestCaseFunc tear_down_tc, - TestInfo * test_info) { + TestInfo* test_info) { // In order to support thread-safe death tests, we need to // remember the original working directory when the test program // was first invoked. We cannot do this in RUN_ALL_TESTS(), as @@ -884,7 +661,7 @@ class UnitTestImpl { } GetTestCase(test_info->test_case_name(), - test_info->test_case_comment(), + test_info->type_param(), set_up_tc, tear_down_tc)->AddTestInfo(test_info); } @@ -898,36 +675,38 @@ class UnitTestImpl { #endif // GTEST_HAS_PARAM_TEST // Sets the TestCase object for the test that's currently running. - void set_current_test_case(TestCase* current_test_case) { - current_test_case_ = current_test_case; + void set_current_test_case(TestCase* a_current_test_case) { + current_test_case_ = a_current_test_case; } // Sets the TestInfo object for the test that's currently running. If // current_test_info is NULL, the assertion results will be stored in // ad_hoc_test_result_. - void set_current_test_info(TestInfo* current_test_info) { - current_test_info_ = current_test_info; + void set_current_test_info(TestInfo* a_current_test_info) { + current_test_info_ = a_current_test_info; } // Registers all parameterized tests defined using TEST_P and - // INSTANTIATE_TEST_P, creating regular tests for each test/parameter - // combination. This method can be called more then once; it has - // guards protecting from registering the tests more then once. - // If value-parameterized tests are disabled, RegisterParameterizedTests - // is present but does nothing. + // INSTANTIATE_TEST_CASE_P, creating regular tests for each test/parameter + // combination. This method can be called more then once; it has guards + // protecting from registering the tests more then once. If + // value-parameterized tests are disabled, RegisterParameterizedTests is + // present but does nothing. void RegisterParameterizedTests(); // Runs all tests in this UnitTest object, prints the result, and - // returns 0 if all tests are successful, or 1 otherwise. If any - // exception is thrown during a test on Windows, this test is - // considered to be failed, but the rest of the tests will still be - // run. (We disable exceptions on Linux and Mac OS X, so the issue - // doesn't apply there.) - int RunAllTests(); - - // Clears the results of all tests, including the ad hoc test. - void ClearResult() { - test_cases_.ForEach(TestCase::ClearTestCaseResult); + // returns true if all tests are successful. If any exception is + // thrown during a test, this test is considered to be failed, but + // the rest of the tests will still be run. + bool RunAllTests(); + + // Clears the results of all tests, except the ad hoc tests. + void ClearNonAdHocTestResult() { + ForEach(test_cases_, TestCase::ClearTestCaseResult); + } + + // Clears the results of ad-hoc test assertions. + void ClearAdHocTestResult() { ad_hoc_test_result_.Clear(); } @@ -953,17 +732,14 @@ class UnitTestImpl { // Returns the vector of environments that need to be set-up/torn-down // before/after the tests are run. - internal::Vector* environments() { return &environments_; } - internal::Vector* environments_in_reverse_order() { - return &environments_in_reverse_order_; - } + std::vector& environments() { return environments_; } // Getters for the per-thread Google Test trace stack. - internal::Vector* gtest_trace_stack() { - return gtest_trace_stack_.pointer(); + std::vector& gtest_trace_stack() { + return *(gtest_trace_stack_.pointer()); } - const internal::Vector* gtest_trace_stack() const { - return gtest_trace_stack_.pointer(); + const std::vector& gtest_trace_stack() const { + return gtest_trace_stack_.get(); } #if GTEST_HAS_DEATH_TEST @@ -992,6 +768,12 @@ class UnitTestImpl { // UnitTestOptions. Must not be called before InitGoogleTest. void ConfigureXmlOutput(); +#if GTEST_CAN_STREAM_RESULTS_ + // Initializes the event listener for streaming test results to a socket. + // Must not be called before InitGoogleTest. + void ConfigureStreamingOutput(); +#endif + // Performs initialization dependent upon flag values obtained in // ParseGoogleTestFlagsOnly. Is called from InitGoogleTest after the call to // ParseGoogleTestFlagsOnly. In case a user neglects to call InitGoogleTest @@ -1012,9 +794,17 @@ class UnitTestImpl { // Restores the test cases and tests to their order before the first shuffle. void UnshuffleTests(); + // Returns the value of GTEST_FLAG(catch_exceptions) at the moment + // UnitTest::Run() starts. + bool catch_exceptions() const { return catch_exceptions_; } + private: friend class ::testing::UnitTest; + // Used by UnitTest::Run() to capture the state of + // GTEST_FLAG(catch_exceptions) at the moment it starts. + void set_catch_exceptions(bool value) { catch_exceptions_ = value; } + // The UnitTest object that owns this implementation object. UnitTest* const parent_; @@ -1038,20 +828,18 @@ class UnitTestImpl { per_thread_test_part_result_reporter_; // The vector of environments that need to be set-up/torn-down - // before/after the tests are run. environments_in_reverse_order_ - // simply mirrors environments_ in reverse order. - internal::Vector environments_; - internal::Vector environments_in_reverse_order_; + // before/after the tests are run. + std::vector environments_; // The vector of TestCases in their original order. It owns the // elements in the vector. - internal::Vector test_cases_; + std::vector test_cases_; // Provides a level of indirection for the test case list to allow // easy shuffling and restoring the test case order. The i-th // element of this vector is the index of the i-th test case in the // shuffled order. - internal::Vector test_case_indices_; + std::vector test_case_indices_; #if GTEST_HAS_PARAM_TEST // ParameterizedTestRegistry object used to register value-parameterized @@ -1106,6 +894,10 @@ class UnitTestImpl { // Our random number generator. internal::Random random_; + // The time of the test program start, in ms from the start of the + // UNIX epoch. + TimeInMillis start_timestamp_; + // How long the test took to run, in milliseconds. TimeInMillis elapsed_time_; @@ -1117,7 +909,11 @@ class UnitTestImpl { #endif // GTEST_HAS_DEATH_TEST // A per-thread stack of traces created by the SCOPED_TRACE() macro. - internal::ThreadLocal > gtest_trace_stack_; + internal::ThreadLocal > gtest_trace_stack_; + + // The value of GTEST_FLAG(catch_exceptions) at the moment RunAllTests() + // starts. + bool catch_exceptions_; GTEST_DISALLOW_COPY_AND_ASSIGN_(UnitTestImpl); }; // class UnitTestImpl @@ -1128,34 +924,38 @@ inline UnitTestImpl* GetUnitTestImpl() { return UnitTest::GetInstance()->impl(); } +#if GTEST_USES_SIMPLE_RE + // Internal helper functions for implementing the simple regular // expression matcher. -bool IsInSet(char ch, const char* str); -bool IsDigit(char ch); -bool IsPunct(char ch); -bool IsRepeat(char ch); -bool IsWhiteSpace(char ch); -bool IsWordChar(char ch); -bool IsValidEscape(char ch); -bool AtomMatchesChar(bool escaped, char pattern, char ch); -bool ValidateRegex(const char* regex); -bool MatchRegexAtHead(const char* regex, const char* str); -bool MatchRepetitionAndRegexAtHead( +GTEST_API_ bool IsInSet(char ch, const char* str); +GTEST_API_ bool IsAsciiDigit(char ch); +GTEST_API_ bool IsAsciiPunct(char ch); +GTEST_API_ bool IsRepeat(char ch); +GTEST_API_ bool IsAsciiWhiteSpace(char ch); +GTEST_API_ bool IsAsciiWordChar(char ch); +GTEST_API_ bool IsValidEscape(char ch); +GTEST_API_ bool AtomMatchesChar(bool escaped, char pattern, char ch); +GTEST_API_ bool ValidateRegex(const char* regex); +GTEST_API_ bool MatchRegexAtHead(const char* regex, const char* str); +GTEST_API_ bool MatchRepetitionAndRegexAtHead( bool escaped, char ch, char repeat, const char* regex, const char* str); -bool MatchRegexAnywhere(const char* regex, const char* str); +GTEST_API_ bool MatchRegexAnywhere(const char* regex, const char* str); + +#endif // GTEST_USES_SIMPLE_RE // Parses the command line for Google Test flags, without initializing // other parts of Google Test. -void ParseGoogleTestFlagsOnly(int* argc, char** argv); -void ParseGoogleTestFlagsOnly(int* argc, wchar_t** argv); +GTEST_API_ void ParseGoogleTestFlagsOnly(int* argc, char** argv); +GTEST_API_ void ParseGoogleTestFlagsOnly(int* argc, wchar_t** argv); #if GTEST_HAS_DEATH_TEST // Returns the message describing the last system error, regardless of the // platform. -String GetLastErrnoDescription(); +GTEST_API_ std::string GetLastErrnoDescription(); -#if GTEST_OS_WINDOWS +# if GTEST_OS_WINDOWS // Provides leak-safe Windows kernel handle ownership. class AutoHandle { public: @@ -1179,7 +979,7 @@ class AutoHandle { GTEST_DISALLOW_COPY_AND_ASSIGN_(AutoHandle); }; -#endif // GTEST_OS_WINDOWS +# endif // GTEST_OS_WINDOWS // Attempts to parse a string into a positive integer pointed to by the // number parameter. Returns true if that is possible. @@ -1190,7 +990,7 @@ bool ParseNaturalNumber(const ::std::string& str, Integer* number) { // Fail fast if the given string does not begin with a digit; // this bypasses strtoXXX's "optional leading whitespace and plus // or minus sign" semantics, which are undesirable here. - if (str.empty() || !isdigit(str[0])) { + if (str.empty() || !IsDigit(str[0])) { return false; } errno = 0; @@ -1198,14 +998,20 @@ bool ParseNaturalNumber(const ::std::string& str, Integer* number) { char* end; // BiggestConvertible is the largest integer type that system-provided // string-to-number conversion routines can return. -#if GTEST_OS_WINDOWS && !defined(__GNUC__) + +# if GTEST_OS_WINDOWS && !defined(__GNUC__) + // MSVC and C++ Builder define __int64 instead of the standard long long. typedef unsigned __int64 BiggestConvertible; const BiggestConvertible parsed = _strtoui64(str.c_str(), &end, 10); -#else + +# else + typedef unsigned long long BiggestConvertible; // NOLINT const BiggestConvertible parsed = strtoull(str.c_str(), &end, 10); -#endif // GTEST_OS_WINDOWS && !defined(__GNUC__) + +# endif // GTEST_OS_WINDOWS && !defined(__GNUC__) + const bool parse_success = *end == '\0' && errno == 0; // TODO(vladl@google.com): Convert this to compile time assertion when it is @@ -1224,6 +1030,9 @@ bool ParseNaturalNumber(const ::std::string& str, Integer* number) { // TestResult contains some private methods that should be hidden from // Google Test user but are required for testing. This class allow our tests // to access them. +// +// This class is supplied only for the purpose of testing Google Test's own +// constructs. Do not use it in user tests, either directly or indirectly. class TestResultAccessor { public: static void RecordProperty(TestResult* test_result, @@ -1235,7 +1044,7 @@ class TestResultAccessor { test_result->ClearTestPartResults(); } - static const Vector& test_part_results( + static const std::vector& test_part_results( const TestResult& test_result) { return test_result.test_part_results(); } diff --git a/cpp/thirdparty/protobuf-2.3.0/gtest/src/gtest-port.cc b/cpp/thirdparty/protobuf-2.5.0/gtest/src/gtest-port.cc similarity index 69% rename from cpp/thirdparty/protobuf-2.3.0/gtest/src/gtest-port.cc rename to cpp/thirdparty/protobuf-2.5.0/gtest/src/gtest-port.cc index de169e2a0..fa8f29cf3 100644 --- a/cpp/thirdparty/protobuf-2.3.0/gtest/src/gtest-port.cc +++ b/cpp/thirdparty/protobuf-2.5.0/gtest/src/gtest-port.cc @@ -29,30 +29,37 @@ // // Author: wan@google.com (Zhanyong Wan) -#include +#include "gtest/internal/gtest-port.h" #include #include #include +#include #if GTEST_OS_WINDOWS_MOBILE -#include // For TerminateProcess() +# include // For TerminateProcess() #elif GTEST_OS_WINDOWS -#include -#include +# include +# include #else -#include +# include #endif // GTEST_OS_WINDOWS_MOBILE #if GTEST_OS_MAC -#include -#include -#include +# include +# include +# include #endif // GTEST_OS_MAC -#include -#include -#include +#if GTEST_OS_QNX +# include +# include +#endif // GTEST_OS_QNX + +#include "gtest/gtest-spi.h" +#include "gtest/gtest-message.h" +#include "gtest/internal/gtest-internal.h" +#include "gtest/internal/gtest-string.h" // Indicates that this translation unit is part of Google Test's // implementation. It must come before gtest-internal-inl.h is @@ -68,8 +75,10 @@ namespace internal { #if defined(_MSC_VER) || defined(__BORLANDC__) // MSVC and C++Builder do not provide a definition of STDERR_FILENO. +const int kStdOutFileno = 1; const int kStdErrFileno = 2; #else +const int kStdOutFileno = STDOUT_FILENO; const int kStdErrFileno = STDERR_FILENO; #endif // _MSC_VER @@ -94,6 +103,26 @@ size_t GetThreadCount() { } } +#elif GTEST_OS_QNX + +// Returns the number of threads running in the process, or 0 to indicate that +// we cannot detect it. +size_t GetThreadCount() { + const int fd = open("/proc/self/as", O_RDONLY); + if (fd < 0) { + return 0; + } + procfs_info process_info; + const int status = + devctl(fd, DCMD_PROC_INFO, &process_info, sizeof(process_info), NULL); + close(fd); + if (status == EOK) { + return static_cast(process_info.num_threads); + } else { + return 0; + } +} + #else size_t GetThreadCount() { @@ -109,8 +138,14 @@ size_t GetThreadCount() { // Implements RE. Currently only needed for death tests. RE::~RE() { - regfree(&partial_regex_); - regfree(&full_regex_); + if (is_valid_) { + // regfree'ing an invalid regex might crash because the content + // of the regex is undefined. Since the regex's are essentially + // the same, one cannot be valid (or invalid) without the other + // being so too. + regfree(&partial_regex_); + regfree(&full_regex_); + } free(const_cast(pattern_)); } @@ -150,9 +185,10 @@ void RE::Init(const char* regex) { // Some implementation of POSIX regex (e.g. on at least some // versions of Cygwin) doesn't accept the empty string as a valid // regex. We change it to an equivalent form "()" to be safe. - const char* const partial_regex = (*regex == '\0') ? "()" : regex; - is_valid_ = (regcomp(&partial_regex_, partial_regex, REG_EXTENDED) == 0) - && is_valid_; + if (is_valid_) { + const char* const partial_regex = (*regex == '\0') ? "()" : regex; + is_valid_ = regcomp(&partial_regex_, partial_regex, REG_EXTENDED) == 0; + } EXPECT_TRUE(is_valid_) << "Regular expression \"" << regex << "\" is not a valid POSIX Extended regular expression."; @@ -171,20 +207,20 @@ bool IsInSet(char ch, const char* str) { // Returns true iff ch belongs to the given classification. Unlike // similar functions in , these aren't affected by the // current locale. -bool IsDigit(char ch) { return '0' <= ch && ch <= '9'; } -bool IsPunct(char ch) { +bool IsAsciiDigit(char ch) { return '0' <= ch && ch <= '9'; } +bool IsAsciiPunct(char ch) { return IsInSet(ch, "^-!\"#$%&'()*+,./:;<=>?@[\\]_`{|}~"); } bool IsRepeat(char ch) { return IsInSet(ch, "?*+"); } -bool IsWhiteSpace(char ch) { return IsInSet(ch, " \f\n\r\t\v"); } -bool IsWordChar(char ch) { +bool IsAsciiWhiteSpace(char ch) { return IsInSet(ch, " \f\n\r\t\v"); } +bool IsAsciiWordChar(char ch) { return ('a' <= ch && ch <= 'z') || ('A' <= ch && ch <= 'Z') || ('0' <= ch && ch <= '9') || ch == '_'; } // Returns true iff "\\c" is a supported escape sequence. bool IsValidEscape(char c) { - return (IsPunct(c) || IsInSet(c, "dDfnrsStvwW")); + return (IsAsciiPunct(c) || IsInSet(c, "dDfnrsStvwW")); } // Returns true iff the given atom (specified by escaped and pattern) @@ -192,26 +228,26 @@ bool IsValidEscape(char c) { bool AtomMatchesChar(bool escaped, char pattern_char, char ch) { if (escaped) { // "\\p" where p is pattern_char. switch (pattern_char) { - case 'd': return IsDigit(ch); - case 'D': return !IsDigit(ch); + case 'd': return IsAsciiDigit(ch); + case 'D': return !IsAsciiDigit(ch); case 'f': return ch == '\f'; case 'n': return ch == '\n'; case 'r': return ch == '\r'; - case 's': return IsWhiteSpace(ch); - case 'S': return !IsWhiteSpace(ch); + case 's': return IsAsciiWhiteSpace(ch); + case 'S': return !IsAsciiWhiteSpace(ch); case 't': return ch == '\t'; case 'v': return ch == '\v'; - case 'w': return IsWordChar(ch); - case 'W': return !IsWordChar(ch); + case 'w': return IsAsciiWordChar(ch); + case 'W': return !IsAsciiWordChar(ch); } - return IsPunct(pattern_char) && pattern_char == ch; + return IsAsciiPunct(pattern_char) && pattern_char == ch; } return (pattern_char == '.' && ch != '\n') || pattern_char == ch; } // Helper function used by ValidateRegex() to format error messages. -String FormatRegexSyntaxError(const char* regex, int index) { +std::string FormatRegexSyntaxError(const char* regex, int index) { return (Message() << "Syntax error at index " << index << " in simple regular expression \"" << regex << "\": ").GetString(); } @@ -413,6 +449,38 @@ void RE::Init(const char* regex) { #endif // GTEST_USES_POSIX_RE +const char kUnknownFile[] = "unknown file"; + +// Formats a source file path and a line number as they would appear +// in an error message from the compiler used to compile this code. +GTEST_API_ ::std::string FormatFileLocation(const char* file, int line) { + const char* const file_name = file == NULL ? kUnknownFile : file; + + if (line < 0) { + return String::Format("%s:", file_name).c_str(); + } +#ifdef _MSC_VER + return String::Format("%s(%d):", file_name, line).c_str(); +#else + return String::Format("%s:%d:", file_name, line).c_str(); +#endif // _MSC_VER +} + +// Formats a file location for compiler-independent XML output. +// Although this function is not platform dependent, we put it next to +// FormatFileLocation in order to contrast the two functions. +// Note that FormatCompilerIndependentFileLocation() does NOT append colon +// to the file location it produces, unlike FormatFileLocation(). +GTEST_API_ ::std::string FormatCompilerIndependentFileLocation( + const char* file, int line) { + const char* const file_name = file == NULL ? kUnknownFile : file; + + if (line < 0) + return file_name; + else + return String::Format("%s:%d", file_name, line).c_str(); +} + GTestLog::GTestLog(GTestLogSeverity severity, const char* file, int line) : severity_(severity) { @@ -435,85 +503,106 @@ GTestLog::~GTestLog() { // Disable Microsoft deprecation warnings for POSIX functions called from // this class (creat, dup, dup2, and close) #ifdef _MSC_VER -#pragma warning(push) -#pragma warning(disable: 4996) +# pragma warning(push) +# pragma warning(disable: 4996) #endif // _MSC_VER -// Defines the stderr capturer. +#if GTEST_HAS_STREAM_REDIRECTION -class CapturedStderr { +// Object that captures an output stream (stdout/stderr). +class CapturedStream { public: - // The ctor redirects stderr to a temporary file. - CapturedStderr() { -#if GTEST_OS_WINDOWS_MOBILE - // Not supported on Windows CE. - posix::Abort(); -#else - uncaptured_fd_ = dup(kStdErrFileno); - -#if GTEST_OS_WINDOWS + // The ctor redirects the stream to a temporary file. + explicit CapturedStream(int fd) : fd_(fd), uncaptured_fd_(dup(fd)) { +# if GTEST_OS_WINDOWS char temp_dir_path[MAX_PATH + 1] = { '\0' }; // NOLINT char temp_file_path[MAX_PATH + 1] = { '\0' }; // NOLINT ::GetTempPathA(sizeof(temp_dir_path), temp_dir_path); - ::GetTempFileNameA(temp_dir_path, "gtest_redir", 0, temp_file_path); + const UINT success = ::GetTempFileNameA(temp_dir_path, + "gtest_redir", + 0, // Generate unique file name. + temp_file_path); + GTEST_CHECK_(success != 0) + << "Unable to create a temporary file in " << temp_dir_path; const int captured_fd = creat(temp_file_path, _S_IREAD | _S_IWRITE); + GTEST_CHECK_(captured_fd != -1) << "Unable to open temporary file " + << temp_file_path; filename_ = temp_file_path; -#else - // There's no guarantee that a test has write access to the - // current directory, so we create the temporary file in the /tmp - // directory instead. - char name_template[] = "/tmp/captured_stderr.XXXXXX"; +# else + // There's no guarantee that a test has write access to the current + // directory, so we create the temporary file in the /tmp directory + // instead. We use /tmp on most systems, and /sdcard on Android. + // That's because Android doesn't have /tmp. +# if GTEST_OS_LINUX_ANDROID + // Note: Android applications are expected to call the framework's + // Context.getExternalStorageDirectory() method through JNI to get + // the location of the world-writable SD Card directory. However, + // this requires a Context handle, which cannot be retrieved + // globally from native code. Doing so also precludes running the + // code as part of a regular standalone executable, which doesn't + // run in a Dalvik process (e.g. when running it through 'adb shell'). + // + // The location /sdcard is directly accessible from native code + // and is the only location (unofficially) supported by the Android + // team. It's generally a symlink to the real SD Card mount point + // which can be /mnt/sdcard, /mnt/sdcard0, /system/media/sdcard, or + // other OEM-customized locations. Never rely on these, and always + // use /sdcard. + char name_template[] = "/sdcard/gtest_captured_stream.XXXXXX"; +# else + char name_template[] = "/tmp/captured_stream.XXXXXX"; +# endif // GTEST_OS_LINUX_ANDROID const int captured_fd = mkstemp(name_template); filename_ = name_template; -#endif // GTEST_OS_WINDOWS +# endif // GTEST_OS_WINDOWS fflush(NULL); - dup2(captured_fd, kStdErrFileno); + dup2(captured_fd, fd_); close(captured_fd); -#endif // GTEST_OS_WINDOWS_MOBILE } - ~CapturedStderr() { -#if !GTEST_OS_WINDOWS_MOBILE + ~CapturedStream() { remove(filename_.c_str()); -#endif // !GTEST_OS_WINDOWS_MOBILE } - // Stops redirecting stderr. - void StopCapture() { -#if !GTEST_OS_WINDOWS_MOBILE - // Restores the original stream. - fflush(NULL); - dup2(uncaptured_fd_, kStdErrFileno); - close(uncaptured_fd_); - uncaptured_fd_ = -1; -#endif // !GTEST_OS_WINDOWS_MOBILE - } + std::string GetCapturedString() { + if (uncaptured_fd_ != -1) { + // Restores the original stream. + fflush(NULL); + dup2(uncaptured_fd_, fd_); + close(uncaptured_fd_); + uncaptured_fd_ = -1; + } - // Returns the name of the temporary file holding the stderr output. - // GTEST_HAS_DEATH_TEST implies that we have ::std::string, so we - // can use it here. - ::std::string filename() const { return filename_; } + FILE* const file = posix::FOpen(filename_.c_str(), "r"); + const std::string content = ReadEntireFile(file); + posix::FClose(file); + return content; + } private: + // Reads the entire content of a file as an std::string. + static std::string ReadEntireFile(FILE* file); + + // Returns the size (in bytes) of a file. + static size_t GetFileSize(FILE* file); + + const int fd_; // A stream to capture. int uncaptured_fd_; + // Name of the temporary file holding the stderr output. ::std::string filename_; -}; - -#ifdef _MSC_VER -#pragma warning(pop) -#endif // _MSC_VER -static CapturedStderr* g_captured_stderr = NULL; + GTEST_DISALLOW_COPY_AND_ASSIGN_(CapturedStream); +}; // Returns the size (in bytes) of a file. -static size_t GetFileSize(FILE * file) { +size_t CapturedStream::GetFileSize(FILE* file) { fseek(file, 0, SEEK_END); return static_cast(ftell(file)); } // Reads the entire content of a file as a string. -static String ReadEntireFile(FILE * file) { +std::string CapturedStream::ReadEntireFile(FILE* file) { const size_t file_size = GetFileSize(file); char* const buffer = new char[file_size]; @@ -529,44 +618,80 @@ static String ReadEntireFile(FILE * file) { bytes_read += bytes_last_read; } while (bytes_last_read > 0 && bytes_read < file_size); - const String content(buffer, bytes_read); + const std::string content(buffer, bytes_read); delete[] buffer; return content; } -// Starts capturing stderr. -void CaptureStderr() { - if (g_captured_stderr != NULL) { - GTEST_LOG_(FATAL) << "Only one stderr capturer can exist at one time."; +# ifdef _MSC_VER +# pragma warning(pop) +# endif // _MSC_VER + +static CapturedStream* g_captured_stderr = NULL; +static CapturedStream* g_captured_stdout = NULL; + +// Starts capturing an output stream (stdout/stderr). +void CaptureStream(int fd, const char* stream_name, CapturedStream** stream) { + if (*stream != NULL) { + GTEST_LOG_(FATAL) << "Only one " << stream_name + << " capturer can exist at a time."; } - g_captured_stderr = new CapturedStderr; + *stream = new CapturedStream(fd); } -// Stops capturing stderr and returns the captured string. -// GTEST_HAS_DEATH_TEST implies that we have ::std::string, so we can -// use it here. -String GetCapturedStderr() { - g_captured_stderr->StopCapture(); - - FILE* const file = posix::FOpen(g_captured_stderr->filename().c_str(), "r"); - const String content = ReadEntireFile(file); - posix::FClose(file); +// Stops capturing the output stream and returns the captured string. +std::string GetCapturedStream(CapturedStream** captured_stream) { + const std::string content = (*captured_stream)->GetCapturedString(); - delete g_captured_stderr; - g_captured_stderr = NULL; + delete *captured_stream; + *captured_stream = NULL; return content; } +// Starts capturing stdout. +void CaptureStdout() { + CaptureStream(kStdOutFileno, "stdout", &g_captured_stdout); +} + +// Starts capturing stderr. +void CaptureStderr() { + CaptureStream(kStdErrFileno, "stderr", &g_captured_stderr); +} + +// Stops capturing stdout and returns the captured string. +std::string GetCapturedStdout() { + return GetCapturedStream(&g_captured_stdout); +} + +// Stops capturing stderr and returns the captured string. +std::string GetCapturedStderr() { + return GetCapturedStream(&g_captured_stderr); +} + +#endif // GTEST_HAS_STREAM_REDIRECTION + #if GTEST_HAS_DEATH_TEST // A copy of all command line arguments. Set by InitGoogleTest(). -::std::vector g_argvs; +::std::vector g_argvs; -// Returns the command line as a vector of strings. -const ::std::vector& GetArgvs() { return g_argvs; } +static const ::std::vector* g_injected_test_argvs = + NULL; // Owned. +void SetInjectableArgvs(const ::std::vector* argvs) { + if (g_injected_test_argvs != argvs) + delete g_injected_test_argvs; + g_injected_test_argvs = argvs; +} + +const ::std::vector& GetInjectableArgvs() { + if (g_injected_test_argvs != NULL) { + return *g_injected_test_argvs; + } + return g_argvs; +} #endif // GTEST_HAS_DEATH_TEST #if GTEST_OS_WINDOWS_MOBILE @@ -581,13 +706,13 @@ void Abort() { // Returns the name of the environment variable corresponding to the // given flag. For example, FlagToEnvVar("foo") will return // "GTEST_FOO" in the open-source version. -static String FlagToEnvVar(const char* flag) { - const String full_flag = +static std::string FlagToEnvVar(const char* flag) { + const std::string full_flag = (Message() << GTEST_FLAG_PREFIX_ << flag).GetString(); Message env_var; for (size_t i = 0; i != full_flag.length(); i++) { - env_var << static_cast(toupper(full_flag.c_str()[i])); + env_var << ToUpper(full_flag.c_str()[i]); } return env_var.GetString(); @@ -639,7 +764,7 @@ bool ParseInt32(const Message& src_text, const char* str, Int32* value) { // // The value is considered true iff it's not "0". bool BoolFromGTestEnv(const char* flag, bool default_value) { - const String env_var = FlagToEnvVar(flag); + const std::string env_var = FlagToEnvVar(flag); const char* const string_value = posix::GetEnv(env_var.c_str()); return string_value == NULL ? default_value : strcmp(string_value, "0") != 0; @@ -649,7 +774,7 @@ bool BoolFromGTestEnv(const char* flag, bool default_value) { // variable corresponding to the given flag; if it isn't set or // doesn't represent a valid 32-bit integer, returns default_value. Int32 Int32FromGTestEnv(const char* flag, Int32 default_value) { - const String env_var = FlagToEnvVar(flag); + const std::string env_var = FlagToEnvVar(flag); const char* const string_value = posix::GetEnv(env_var.c_str()); if (string_value == NULL) { // The environment variable is not set. @@ -671,7 +796,7 @@ Int32 Int32FromGTestEnv(const char* flag, Int32 default_value) { // Reads and returns the string environment variable corresponding to // the given flag; if it's not set, returns default_value. const char* StringFromGTestEnv(const char* flag, const char* default_value) { - const String env_var = FlagToEnvVar(flag); + const std::string env_var = FlagToEnvVar(flag); const char* const value = posix::GetEnv(env_var.c_str()); return value == NULL ? default_value : value; } diff --git a/cpp/thirdparty/protobuf-2.5.0/gtest/src/gtest-printers.cc b/cpp/thirdparty/protobuf-2.5.0/gtest/src/gtest-printers.cc new file mode 100644 index 000000000..898d61d81 --- /dev/null +++ b/cpp/thirdparty/protobuf-2.5.0/gtest/src/gtest-printers.cc @@ -0,0 +1,364 @@ +// Copyright 2007, Google Inc. +// All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Author: wan@google.com (Zhanyong Wan) + +// Google Test - The Google C++ Testing Framework +// +// This file implements a universal value printer that can print a +// value of any type T: +// +// void ::testing::internal::UniversalPrinter::Print(value, ostream_ptr); +// +// It uses the << operator when possible, and prints the bytes in the +// object otherwise. A user can override its behavior for a class +// type Foo by defining either operator<<(::std::ostream&, const Foo&) +// or void PrintTo(const Foo&, ::std::ostream*) in the namespace that +// defines Foo. + +#include "gtest/gtest-printers.h" +#include +#include +#include // NOLINT +#include +#include "gtest/internal/gtest-port.h" + +namespace testing { + +namespace { + +using ::std::ostream; + +// Prints a segment of bytes in the given object. +void PrintByteSegmentInObjectTo(const unsigned char* obj_bytes, size_t start, + size_t count, ostream* os) { + char text[5] = ""; + for (size_t i = 0; i != count; i++) { + const size_t j = start + i; + if (i != 0) { + // Organizes the bytes into groups of 2 for easy parsing by + // human. + if ((j % 2) == 0) + *os << ' '; + else + *os << '-'; + } + GTEST_SNPRINTF_(text, sizeof(text), "%02X", obj_bytes[j]); + *os << text; + } +} + +// Prints the bytes in the given value to the given ostream. +void PrintBytesInObjectToImpl(const unsigned char* obj_bytes, size_t count, + ostream* os) { + // Tells the user how big the object is. + *os << count << "-byte object <"; + + const size_t kThreshold = 132; + const size_t kChunkSize = 64; + // If the object size is bigger than kThreshold, we'll have to omit + // some details by printing only the first and the last kChunkSize + // bytes. + // TODO(wan): let the user control the threshold using a flag. + if (count < kThreshold) { + PrintByteSegmentInObjectTo(obj_bytes, 0, count, os); + } else { + PrintByteSegmentInObjectTo(obj_bytes, 0, kChunkSize, os); + *os << " ... "; + // Rounds up to 2-byte boundary. + const size_t resume_pos = (count - kChunkSize + 1)/2*2; + PrintByteSegmentInObjectTo(obj_bytes, resume_pos, count - resume_pos, os); + } + *os << ">"; +} + +} // namespace + +namespace internal2 { + +// Delegates to PrintBytesInObjectToImpl() to print the bytes in the +// given object. The delegation simplifies the implementation, which +// uses the << operator and thus is easier done outside of the +// ::testing::internal namespace, which contains a << operator that +// sometimes conflicts with the one in STL. +void PrintBytesInObjectTo(const unsigned char* obj_bytes, size_t count, + ostream* os) { + PrintBytesInObjectToImpl(obj_bytes, count, os); +} + +} // namespace internal2 + +namespace internal { + +// Depending on the value of a char (or wchar_t), we print it in one +// of three formats: +// - as is if it's a printable ASCII (e.g. 'a', '2', ' '), +// - as a hexidecimal escape sequence (e.g. '\x7F'), or +// - as a special escape sequence (e.g. '\r', '\n'). +enum CharFormat { + kAsIs, + kHexEscape, + kSpecialEscape +}; + +// Returns true if c is a printable ASCII character. We test the +// value of c directly instead of calling isprint(), which is buggy on +// Windows Mobile. +inline bool IsPrintableAscii(wchar_t c) { + return 0x20 <= c && c <= 0x7E; +} + +// Prints a wide or narrow char c as a character literal without the +// quotes, escaping it when necessary; returns how c was formatted. +// The template argument UnsignedChar is the unsigned version of Char, +// which is the type of c. +template +static CharFormat PrintAsCharLiteralTo(Char c, ostream* os) { + switch (static_cast(c)) { + case L'\0': + *os << "\\0"; + break; + case L'\'': + *os << "\\'"; + break; + case L'\\': + *os << "\\\\"; + break; + case L'\a': + *os << "\\a"; + break; + case L'\b': + *os << "\\b"; + break; + case L'\f': + *os << "\\f"; + break; + case L'\n': + *os << "\\n"; + break; + case L'\r': + *os << "\\r"; + break; + case L'\t': + *os << "\\t"; + break; + case L'\v': + *os << "\\v"; + break; + default: + if (IsPrintableAscii(c)) { + *os << static_cast(c); + return kAsIs; + } else { + *os << String::Format("\\x%X", static_cast(c)); + return kHexEscape; + } + } + return kSpecialEscape; +} + +// Prints a wchar_t c as if it's part of a string literal, escaping it when +// necessary; returns how c was formatted. +static CharFormat PrintAsStringLiteralTo(wchar_t c, ostream* os) { + switch (c) { + case L'\'': + *os << "'"; + return kAsIs; + case L'"': + *os << "\\\""; + return kSpecialEscape; + default: + return PrintAsCharLiteralTo(c, os); + } +} + +// Prints a char c as if it's part of a string literal, escaping it when +// necessary; returns how c was formatted. +static CharFormat PrintAsStringLiteralTo(char c, ostream* os) { + return PrintAsStringLiteralTo( + static_cast(static_cast(c)), os); +} + +// Prints a wide or narrow character c and its code. '\0' is printed +// as "'\\0'", other unprintable characters are also properly escaped +// using the standard C++ escape sequence. The template argument +// UnsignedChar is the unsigned version of Char, which is the type of c. +template +void PrintCharAndCodeTo(Char c, ostream* os) { + // First, print c as a literal in the most readable form we can find. + *os << ((sizeof(c) > 1) ? "L'" : "'"); + const CharFormat format = PrintAsCharLiteralTo(c, os); + *os << "'"; + + // To aid user debugging, we also print c's code in decimal, unless + // it's 0 (in which case c was printed as '\\0', making the code + // obvious). + if (c == 0) + return; + *os << " (" << String::Format("%d", c).c_str(); + + // For more convenience, we print c's code again in hexidecimal, + // unless c was already printed in the form '\x##' or the code is in + // [1, 9]. + if (format == kHexEscape || (1 <= c && c <= 9)) { + // Do nothing. + } else { + *os << String::Format(", 0x%X", + static_cast(c)).c_str(); + } + *os << ")"; +} + +void PrintTo(unsigned char c, ::std::ostream* os) { + PrintCharAndCodeTo(c, os); +} +void PrintTo(signed char c, ::std::ostream* os) { + PrintCharAndCodeTo(c, os); +} + +// Prints a wchar_t as a symbol if it is printable or as its internal +// code otherwise and also as its code. L'\0' is printed as "L'\\0'". +void PrintTo(wchar_t wc, ostream* os) { + PrintCharAndCodeTo(wc, os); +} + +// Prints the given array of characters to the ostream. CharType must be either +// char or wchar_t. +// The array starts at begin, the length is len, it may include '\0' characters +// and may not be NUL-terminated. +template +static void PrintCharsAsStringTo( + const CharType* begin, size_t len, ostream* os) { + const char* const kQuoteBegin = sizeof(CharType) == 1 ? "\"" : "L\""; + *os << kQuoteBegin; + bool is_previous_hex = false; + for (size_t index = 0; index < len; ++index) { + const CharType cur = begin[index]; + if (is_previous_hex && IsXDigit(cur)) { + // Previous character is of '\x..' form and this character can be + // interpreted as another hexadecimal digit in its number. Break string to + // disambiguate. + *os << "\" " << kQuoteBegin; + } + is_previous_hex = PrintAsStringLiteralTo(cur, os) == kHexEscape; + } + *os << "\""; +} + +// Prints a (const) char/wchar_t array of 'len' elements, starting at address +// 'begin'. CharType must be either char or wchar_t. +template +static void UniversalPrintCharArray( + const CharType* begin, size_t len, ostream* os) { + // The code + // const char kFoo[] = "foo"; + // generates an array of 4, not 3, elements, with the last one being '\0'. + // + // Therefore when printing a char array, we don't print the last element if + // it's '\0', such that the output matches the string literal as it's + // written in the source code. + if (len > 0 && begin[len - 1] == '\0') { + PrintCharsAsStringTo(begin, len - 1, os); + return; + } + + // If, however, the last element in the array is not '\0', e.g. + // const char kFoo[] = { 'f', 'o', 'o' }; + // we must print the entire array. We also print a message to indicate + // that the array is not NUL-terminated. + PrintCharsAsStringTo(begin, len, os); + *os << " (no terminating NUL)"; +} + +// Prints a (const) char array of 'len' elements, starting at address 'begin'. +void UniversalPrintArray(const char* begin, size_t len, ostream* os) { + UniversalPrintCharArray(begin, len, os); +} + +// Prints a (const) wchar_t array of 'len' elements, starting at address +// 'begin'. +void UniversalPrintArray(const wchar_t* begin, size_t len, ostream* os) { + UniversalPrintCharArray(begin, len, os); +} + +// Prints the given C string to the ostream. +void PrintTo(const char* s, ostream* os) { + if (s == NULL) { + *os << "NULL"; + } else { + *os << ImplicitCast_(s) << " pointing to "; + PrintCharsAsStringTo(s, strlen(s), os); + } +} + +// MSVC compiler can be configured to define whar_t as a typedef +// of unsigned short. Defining an overload for const wchar_t* in that case +// would cause pointers to unsigned shorts be printed as wide strings, +// possibly accessing more memory than intended and causing invalid +// memory accesses. MSVC defines _NATIVE_WCHAR_T_DEFINED symbol when +// wchar_t is implemented as a native type. +#if !defined(_MSC_VER) || defined(_NATIVE_WCHAR_T_DEFINED) +// Prints the given wide C string to the ostream. +void PrintTo(const wchar_t* s, ostream* os) { + if (s == NULL) { + *os << "NULL"; + } else { + *os << ImplicitCast_(s) << " pointing to "; + PrintCharsAsStringTo(s, wcslen(s), os); + } +} +#endif // wchar_t is native + +// Prints a ::string object. +#if GTEST_HAS_GLOBAL_STRING +void PrintStringTo(const ::string& s, ostream* os) { + PrintCharsAsStringTo(s.data(), s.size(), os); +} +#endif // GTEST_HAS_GLOBAL_STRING + +void PrintStringTo(const ::std::string& s, ostream* os) { + PrintCharsAsStringTo(s.data(), s.size(), os); +} + +// Prints a ::wstring object. +#if GTEST_HAS_GLOBAL_WSTRING +void PrintWideStringTo(const ::wstring& s, ostream* os) { + PrintCharsAsStringTo(s.data(), s.size(), os); +} +#endif // GTEST_HAS_GLOBAL_WSTRING + +#if GTEST_HAS_STD_WSTRING +void PrintWideStringTo(const ::std::wstring& s, ostream* os) { + PrintCharsAsStringTo(s.data(), s.size(), os); +} +#endif // GTEST_HAS_STD_WSTRING + +} // namespace internal + +} // namespace testing diff --git a/cpp/thirdparty/protobuf-2.3.0/gtest/src/gtest-test-part.cc b/cpp/thirdparty/protobuf-2.5.0/gtest/src/gtest-test-part.cc similarity index 87% rename from cpp/thirdparty/protobuf-2.3.0/gtest/src/gtest-test-part.cc rename to cpp/thirdparty/protobuf-2.5.0/gtest/src/gtest-test-part.cc index 4f36df66c..c60eef3ab 100644 --- a/cpp/thirdparty/protobuf-2.3.0/gtest/src/gtest-test-part.cc +++ b/cpp/thirdparty/protobuf-2.5.0/gtest/src/gtest-test-part.cc @@ -31,7 +31,7 @@ // // The Google C++ Testing Framework (Google Test) -#include +#include "gtest/gtest-test-part.h" // Indicates that this translation unit is part of Google Test's // implementation. It must come before gtest-internal-inl.h is @@ -48,10 +48,10 @@ using internal::GetUnitTestImpl; // Gets the summary of the failure message by omitting the stack trace // in it. -internal::String TestPartResult::ExtractSummary(const char* message) { +std::string TestPartResult::ExtractSummary(const char* message) { const char* const stack_trace = strstr(message, internal::kStackTraceMarker); - return stack_trace == NULL ? internal::String(message) : - internal::String(message, stack_trace - message); + return stack_trace == NULL ? message : + std::string(message, stack_trace); } // Prints a TestPartResult object. @@ -64,19 +64,9 @@ std::ostream& operator<<(std::ostream& os, const TestPartResult& result) { << result.message() << std::endl; } -// Constructs an empty TestPartResultArray. -TestPartResultArray::TestPartResultArray() - : array_(new internal::Vector) { -} - -// Destructs a TestPartResultArray. -TestPartResultArray::~TestPartResultArray() { - delete array_; -} - // Appends a TestPartResult to the array. void TestPartResultArray::Append(const TestPartResult& result) { - array_->PushBack(result); + array_.push_back(result); } // Returns the TestPartResult at the given index (0-based). @@ -86,12 +76,12 @@ const TestPartResult& TestPartResultArray::GetTestPartResult(int index) const { internal::posix::Abort(); } - return array_->GetElement(index); + return array_[index]; } // Returns the number of TestPartResult objects in the array. int TestPartResultArray::size() const { - return array_->size(); + return static_cast(array_.size()); } namespace internal { diff --git a/cpp/thirdparty/protobuf-2.3.0/gtest/src/gtest-typed-test.cc b/cpp/thirdparty/protobuf-2.5.0/gtest/src/gtest-typed-test.cc similarity index 84% rename from cpp/thirdparty/protobuf-2.3.0/gtest/src/gtest-typed-test.cc rename to cpp/thirdparty/protobuf-2.5.0/gtest/src/gtest-typed-test.cc index 4a0f657d7..f0079f407 100644 --- a/cpp/thirdparty/protobuf-2.3.0/gtest/src/gtest-typed-test.cc +++ b/cpp/thirdparty/protobuf-2.5.0/gtest/src/gtest-typed-test.cc @@ -29,14 +29,22 @@ // // Author: wan@google.com (Zhanyong Wan) -#include -#include +#include "gtest/gtest-typed-test.h" +#include "gtest/gtest.h" namespace testing { namespace internal { #if GTEST_HAS_TYPED_TEST_P +// Skips to the first non-space char in str. Returns an empty string if str +// contains only whitespace characters. +static const char* SkipSpaces(const char* str) { + while (IsSpace(*str)) + str++; + return str; +} + // Verifies that registered_tests match the test names in // defined_test_names_; returns registered_tests if successful, or // aborts the program otherwise. @@ -45,11 +53,15 @@ const char* TypedTestCasePState::VerifyRegisteredTestNames( typedef ::std::set::const_iterator DefinedTestIter; registered_ = true; + // Skip initial whitespace in registered_tests since some + // preprocessors prefix stringizied literals with whitespace. + registered_tests = SkipSpaces(registered_tests); + Message errors; - ::std::set tests; + ::std::set tests; for (const char* names = registered_tests; names != NULL; names = SkipComma(names)) { - const String name = GetPrefixUntilComma(names); + const std::string name = GetPrefixUntilComma(names); if (tests.count(name) != 0) { errors << "Test " << name << " is listed more than once.\n"; continue; @@ -81,7 +93,7 @@ const char* TypedTestCasePState::VerifyRegisteredTestNames( } } - const String& errors_str = errors.GetString(); + const std::string& errors_str = errors.GetString(); if (errors_str != "") { fprintf(stderr, "%s %s", FormatFileLocation(file, line).c_str(), errors_str.c_str()); diff --git a/cpp/thirdparty/protobuf-2.3.0/gtest/src/gtest.cc b/cpp/thirdparty/protobuf-2.5.0/gtest/src/gtest.cc similarity index 76% rename from cpp/thirdparty/protobuf-2.3.0/gtest/src/gtest.cc rename to cpp/thirdparty/protobuf-2.5.0/gtest/src/gtest.cc index 934072455..0567e83cb 100644 --- a/cpp/thirdparty/protobuf-2.3.0/gtest/src/gtest.cc +++ b/cpp/thirdparty/protobuf-2.5.0/gtest/src/gtest.cc @@ -31,89 +31,97 @@ // // The Google C++ Testing Framework (Google Test) -#include -#include +#include "gtest/gtest.h" +#include "gtest/gtest-spi.h" #include #include #include #include #include +#include #include #include -#include +#include +#include // NOLINT +#include +#include #if GTEST_OS_LINUX // TODO(kenton@google.com): Use autoconf to detect availability of // gettimeofday(). -#define GTEST_HAS_GETTIMEOFDAY_ 1 +# define GTEST_HAS_GETTIMEOFDAY_ 1 -#include -#include -#include +# include // NOLINT +# include // NOLINT +# include // NOLINT // Declares vsnprintf(). This header is not available on Windows. -#include -#include -#include -#include -#include -#include +# include // NOLINT +# include // NOLINT +# include // NOLINT +# include // NOLINT +# include #elif GTEST_OS_SYMBIAN -#define GTEST_HAS_GETTIMEOFDAY_ 1 -#include // NOLINT +# define GTEST_HAS_GETTIMEOFDAY_ 1 +# include // NOLINT #elif GTEST_OS_ZOS -#define GTEST_HAS_GETTIMEOFDAY_ 1 -#include // NOLINT +# define GTEST_HAS_GETTIMEOFDAY_ 1 +# include // NOLINT // On z/OS we additionally need strings.h for strcasecmp. -#include // NOLINT +# include // NOLINT #elif GTEST_OS_WINDOWS_MOBILE // We are on Windows CE. -#include // NOLINT +# include // NOLINT #elif GTEST_OS_WINDOWS // We are on Windows proper. -#include // NOLINT -#include // NOLINT -#include // NOLINT -#include // NOLINT +# include // NOLINT +# include // NOLINT +# include // NOLINT +# include // NOLINT -#if GTEST_OS_WINDOWS_MINGW +# if GTEST_OS_WINDOWS_MINGW // MinGW has gettimeofday() but not _ftime64(). // TODO(kenton@google.com): Use autoconf to detect availability of // gettimeofday(). // TODO(kenton@google.com): There are other ways to get the time on // Windows, like GetTickCount() or GetSystemTimeAsFileTime(). MinGW // supports these. consider using them instead. -#define GTEST_HAS_GETTIMEOFDAY_ 1 -#include // NOLINT -#endif // GTEST_OS_WINDOWS_MINGW +# define GTEST_HAS_GETTIMEOFDAY_ 1 +# include // NOLINT +# endif // GTEST_OS_WINDOWS_MINGW // cpplint thinks that the header is already included, so we want to // silence it. -#include // NOLINT +# include // NOLINT #else // Assume other platforms have gettimeofday(). // TODO(kenton@google.com): Use autoconf to detect availability of // gettimeofday(). -#define GTEST_HAS_GETTIMEOFDAY_ 1 +# define GTEST_HAS_GETTIMEOFDAY_ 1 // cpplint thinks that the header is already included, so we want to // silence it. -#include // NOLINT -#include // NOLINT +# include // NOLINT +# include // NOLINT #endif // GTEST_OS_LINUX #if GTEST_HAS_EXCEPTIONS -#include +# include +#endif + +#if GTEST_CAN_STREAM_RESULTS_ +# include // NOLINT +# include // NOLINT #endif // Indicates that this translation unit is part of Google Test's @@ -126,11 +134,16 @@ #undef GTEST_IMPLEMENTATION_ #if GTEST_OS_WINDOWS -#define vsnprintf _vsnprintf +# define vsnprintf _vsnprintf #endif // GTEST_OS_WINDOWS namespace testing { +using internal::CountIf; +using internal::ForEach; +using internal::GetElementOr; +using internal::Shuffle; + // Constants. // A test whose test case name or test name matches this filter is @@ -161,6 +174,10 @@ namespace internal { // stack trace. const char kStackTraceMarker[] = "\nStack trace:\n"; +// g_help_flag is true iff the --help flag or an equivalent form is +// specified on the command line. +bool g_help_flag = false; + } // namespace internal GTEST_DEFINE_bool_( @@ -175,7 +192,7 @@ GTEST_DEFINE_bool_( GTEST_DEFINE_bool_( catch_exceptions, - internal::BoolFromGTestEnv("catch_exceptions", false), + internal::BoolFromGTestEnv("catch_exceptions", true), "True iff " GTEST_NAME_ " should catch exceptions and treat them as test failures."); @@ -242,10 +259,17 @@ GTEST_DEFINE_bool_( GTEST_DEFINE_int32_( stack_trace_depth, - internal::Int32FromGTestEnv("stack_trace_depth", kMaxStackTraceDepth), + internal::Int32FromGTestEnv("stack_trace_depth", kMaxStackTraceDepth), "The maximum number of stack frames to print when an " "assertion fails. The valid range is 0 through 100, inclusive."); +GTEST_DEFINE_string_( + stream_result_to, + internal::StringFromGTestEnv("stream_result_to", ""), + "This flag specifies the host name and the port number on which to stream " + "test results. Example: \"localhost:555\". The flag is effective only on " + "Linux."); + GTEST_DEFINE_bool_( throw_on_failure, internal::BoolFromGTestEnv("throw_on_failure", false), @@ -274,10 +298,6 @@ UInt32 Random::Generate(UInt32 range) { return state_ % range; } -// g_help_flag is true iff the --help flag or an equivalent form is -// specified on the command line. -static bool g_help_flag = false; - // GTestIsInitialized() returns true iff the user has initialized // Google Test. Useful for catching the user mistake of not initializing // Google Test before calling RUN_ALL_TESTS(). @@ -286,17 +306,17 @@ static bool g_help_flag = false; // Test. g_init_gtest_count is set to the number of times // InitGoogleTest() has been called. We don't protect this variable // under a mutex as it is only accessed in the main thread. -int g_init_gtest_count = 0; +GTEST_API_ int g_init_gtest_count = 0; static bool GTestIsInitialized() { return g_init_gtest_count != 0; } // Iterates over a vector of TestCases, keeping a running sum of the // results of calling a given int-returning method on each. // Returns the sum. -static int SumOverTestCaseList(const internal::Vector& case_list, +static int SumOverTestCaseList(const std::vector& case_list, int (TestCase::*method)() const) { int sum = 0; - for (int i = 0; i < case_list.size(); i++) { - sum += (case_list.GetElement(i)->*method)(); + for (size_t i = 0; i < case_list.size(); i++) { + sum += (case_list[i]->*method)(); } return sum; } @@ -341,10 +361,10 @@ void AssertHelper::operator=(const Message& message) const { } // Mutex for linked pointers. -Mutex g_linked_ptr_mutex(Mutex::NO_CONSTRUCTOR_NEEDED_FOR_STATIC_MUTEX); +GTEST_API_ GTEST_DEFINE_STATIC_MUTEX_(g_linked_ptr_mutex); // Application pathname gotten in InitGoogleTest. -String g_executable_path; +std::string g_executable_path; // Returns the current application's name, removing directory path if that // is present. @@ -363,29 +383,29 @@ FilePath GetCurrentExecutableName() { // Functions for processing the gtest_output flag. // Returns the output format, or "" for normal printed output. -String UnitTestOptions::GetOutputFormat() { +std::string UnitTestOptions::GetOutputFormat() { const char* const gtest_output_flag = GTEST_FLAG(output).c_str(); - if (gtest_output_flag == NULL) return String(""); + if (gtest_output_flag == NULL) return std::string(""); const char* const colon = strchr(gtest_output_flag, ':'); return (colon == NULL) ? - String(gtest_output_flag) : - String(gtest_output_flag, colon - gtest_output_flag); + std::string(gtest_output_flag) : + std::string(gtest_output_flag, colon - gtest_output_flag); } // Returns the name of the requested output file, or the default if none // was explicitly specified. -String UnitTestOptions::GetAbsolutePathToOutputFile() { +std::string UnitTestOptions::GetAbsolutePathToOutputFile() { const char* const gtest_output_flag = GTEST_FLAG(output).c_str(); if (gtest_output_flag == NULL) - return String(""); + return ""; const char* const colon = strchr(gtest_output_flag, ':'); if (colon == NULL) - return String(internal::FilePath::ConcatPaths( - internal::FilePath( - UnitTest::GetInstance()->original_working_dir()), - internal::FilePath(kDefaultOutputFile)).ToString() ); + return internal::FilePath::ConcatPaths( + internal::FilePath( + UnitTest::GetInstance()->original_working_dir()), + internal::FilePath(kDefaultOutputFile)).string(); internal::FilePath output_name(colon + 1); if (!output_name.IsAbsolutePath()) @@ -398,12 +418,12 @@ String UnitTestOptions::GetAbsolutePathToOutputFile() { internal::FilePath(colon + 1)); if (!output_name.IsDirectory()) - return output_name.ToString(); + return output_name.string(); internal::FilePath result(internal::FilePath::GenerateUniqueFileName( output_name, internal::GetCurrentExecutableName(), GetOutputFormat().c_str())); - return result.ToString(); + return result.string(); } // Returns true iff the wildcard pattern matches the string. The @@ -428,7 +448,8 @@ bool UnitTestOptions::PatternMatchesString(const char *pattern, } } -bool UnitTestOptions::MatchesFilter(const String& name, const char* filter) { +bool UnitTestOptions::MatchesFilter( + const std::string& name, const char* filter) { const char *cur_pattern = filter; for (;;) { if (PatternMatchesString(cur_pattern, name.c_str())) { @@ -448,28 +469,24 @@ bool UnitTestOptions::MatchesFilter(const String& name, const char* filter) { } } -// TODO(keithray): move String function implementations to gtest-string.cc. - // Returns true iff the user-specified filter matches the test case // name and the test name. -bool UnitTestOptions::FilterMatchesTest(const String &test_case_name, - const String &test_name) { - const String& full_name = String::Format("%s.%s", - test_case_name.c_str(), - test_name.c_str()); +bool UnitTestOptions::FilterMatchesTest(const std::string &test_case_name, + const std::string &test_name) { + const std::string& full_name = test_case_name + "." + test_name.c_str(); // Split --gtest_filter at '-', if there is one, to separate into // positive filter and negative filter portions const char* const p = GTEST_FLAG(filter).c_str(); const char* const dash = strchr(p, '-'); - String positive; - String negative; + std::string positive; + std::string negative; if (dash == NULL) { positive = GTEST_FLAG(filter).c_str(); // Whole string is a positive filter - negative = String(""); + negative = ""; } else { - positive = String(p, dash - p); // Everything up to the dash - negative = String(dash+1); // Everything after the dash + positive = std::string(p, dash); // Everything up to the dash + negative = std::string(dash + 1); // Everything after the dash if (positive.empty()) { // Treat '-test1' as the same as '*-test1' positive = kUniversalFilter; @@ -482,20 +499,33 @@ bool UnitTestOptions::FilterMatchesTest(const String &test_case_name, !MatchesFilter(full_name, negative.c_str())); } -#if GTEST_OS_WINDOWS +#if GTEST_HAS_SEH // Returns EXCEPTION_EXECUTE_HANDLER if Google Test should handle the // given SEH exception, or EXCEPTION_CONTINUE_SEARCH otherwise. // This function is useful as an __except condition. int UnitTestOptions::GTestShouldProcessSEH(DWORD exception_code) { - // Google Test should handle an exception if: + // Google Test should handle a SEH exception if: // 1. the user wants it to, AND - // 2. this is not a breakpoint exception. - return (GTEST_FLAG(catch_exceptions) && - exception_code != EXCEPTION_BREAKPOINT) ? - EXCEPTION_EXECUTE_HANDLER : - EXCEPTION_CONTINUE_SEARCH; + // 2. this is not a breakpoint exception, AND + // 3. this is not a C++ exception (VC++ implements them via SEH, + // apparently). + // + // SEH exception code for C++ exceptions. + // (see http://support.microsoft.com/kb/185294 for more information). + const DWORD kCxxExceptionCode = 0xe06d7363; + + bool should_handle = true; + + if (!GTEST_FLAG(catch_exceptions)) + should_handle = false; + else if (exception_code == EXCEPTION_BREAKPOINT) + should_handle = false; + else if (exception_code == kCxxExceptionCode) + should_handle = false; + + return should_handle ? EXCEPTION_EXECUTE_HANDLER : EXCEPTION_CONTINUE_SEARCH; } -#endif // GTEST_OS_WINDOWS +#endif // GTEST_HAS_SEH } // namespace internal @@ -575,8 +605,8 @@ AssertionResult HasOneFailure(const char* /* results_expr */, const char* /* substr_expr */, const TestPartResultArray& results, TestPartResult::Type type, - const char* substr) { - const String expected(type == TestPartResult::kFatalFailure ? + const string& substr) { + const std::string expected(type == TestPartResult::kFatalFailure ? "1 fatal failure" : "1 non-fatal failure"); Message msg; @@ -586,23 +616,21 @@ AssertionResult HasOneFailure(const char* /* results_expr */, for (int i = 0; i < results.size(); i++) { msg << "\n" << results.GetTestPartResult(i); } - return AssertionFailure(msg); + return AssertionFailure() << msg; } const TestPartResult& r = results.GetTestPartResult(0); if (r.type() != type) { - msg << "Expected: " << expected << "\n" - << " Actual:\n" - << r; - return AssertionFailure(msg); + return AssertionFailure() << "Expected: " << expected << "\n" + << " Actual:\n" + << r; } - if (strstr(r.message(), substr) == NULL) { - msg << "Expected: " << expected << " containing \"" - << substr << "\"\n" - << " Actual:\n" - << r; - return AssertionFailure(msg); + if (strstr(r.message(), substr.c_str()) == NULL) { + return AssertionFailure() << "Expected: " << expected << " containing \"" + << substr << "\"\n" + << " Actual:\n" + << r; } return AssertionSuccess(); @@ -614,7 +642,7 @@ AssertionResult HasOneFailure(const char* /* results_expr */, SingleFailureChecker:: SingleFailureChecker( const TestPartResultArray* results, TestPartResult::Type type, - const char* substr) + const string& substr) : results_(results), type_(type), substr_(substr) {} @@ -624,7 +652,7 @@ SingleFailureChecker:: SingleFailureChecker( // type and contains the given substring. If that's not the case, a // non-fatal failure will be generated. SingleFailureChecker::~SingleFailureChecker() { - EXPECT_PRED_FORMAT3(HasOneFailure, *results_, type_, substr_.c_str()); + EXPECT_PRED_FORMAT3(HasOneFailure, *results_, type_, substr_); } DefaultGlobalTestPartResultReporter::DefaultGlobalTestPartResultReporter( @@ -672,23 +700,23 @@ void UnitTestImpl::SetTestPartResultReporterForCurrentThread( // Gets the number of successful test cases. int UnitTestImpl::successful_test_case_count() const { - return test_cases_.CountIf(TestCasePassed); + return CountIf(test_cases_, TestCasePassed); } // Gets the number of failed test cases. int UnitTestImpl::failed_test_case_count() const { - return test_cases_.CountIf(TestCaseFailed); + return CountIf(test_cases_, TestCaseFailed); } // Gets the number of all test cases. int UnitTestImpl::total_test_case_count() const { - return test_cases_.size(); + return static_cast(test_cases_.size()); } // Gets the number of all test cases that contain at least one test // that should run. int UnitTestImpl::test_case_to_run_count() const { - return test_cases_.CountIf(ShouldRunTestCase); + return CountIf(test_cases_, ShouldRunTestCase); } // Gets the number of successful tests. @@ -716,7 +744,7 @@ int UnitTestImpl::test_to_run_count() const { return SumOverTestCaseList(test_cases_, &TestCase::test_to_run_count); } -// Returns the current OS stack trace as a String. +// Returns the current OS stack trace as an std::string. // // The maximum number of stack frames to be included is specified by // the gtest_stack_trace_depth flag. The skip_count parameter @@ -726,9 +754,9 @@ int UnitTestImpl::test_to_run_count() const { // For example, if Foo() calls Bar(), which in turn calls // CurrentOsStackTraceExceptTop(1), Foo() will be included in the // trace but Bar() and CurrentOsStackTraceExceptTop() won't. -String UnitTestImpl::CurrentOsStackTraceExceptTop(int skip_count) { +std::string UnitTestImpl::CurrentOsStackTraceExceptTop(int skip_count) { (void)skip_count; - return String(""); + return ""; } // Returns the current time in milliseconds. @@ -756,65 +784,36 @@ TimeInMillis GetTimeInMillis() { return 0; #elif GTEST_OS_WINDOWS && !GTEST_HAS_GETTIMEOFDAY_ __timeb64 now; -#ifdef _MSC_VER + +# ifdef _MSC_VER + // MSVC 8 deprecates _ftime64(), so we want to suppress warning 4996 // (deprecated function) there. // TODO(kenton@google.com): Use GetTickCount()? Or use // SystemTimeToFileTime() -#pragma warning(push) // Saves the current warning state. -#pragma warning(disable:4996) // Temporarily disables warning 4996. +# pragma warning(push) // Saves the current warning state. +# pragma warning(disable:4996) // Temporarily disables warning 4996. _ftime64(&now); -#pragma warning(pop) // Restores the warning state. -#else +# pragma warning(pop) // Restores the warning state. +# else + _ftime64(&now); -#endif // _MSC_VER + +# endif // _MSC_VER + return static_cast(now.time) * 1000 + now.millitm; #elif GTEST_HAS_GETTIMEOFDAY_ struct timeval now; gettimeofday(&now, NULL); return static_cast(now.tv_sec) * 1000 + now.tv_usec / 1000; #else -#error "Don't know how to get the current time on your system." +# error "Don't know how to get the current time on your system." #endif } // Utilities -// class String - -// Returns the input enclosed in double quotes if it's not NULL; -// otherwise returns "(null)". For example, "\"Hello\"" is returned -// for input "Hello". -// -// This is useful for printing a C string in the syntax of a literal. -// -// Known issue: escape sequences are not handled yet. -String String::ShowCStringQuoted(const char* c_str) { - return c_str ? String::Format("\"%s\"", c_str) : String("(null)"); -} - -// Copies at most length characters from str into a newly-allocated -// piece of memory of size length+1. The memory is allocated with new[]. -// A terminating null byte is written to the memory, and a pointer to it -// is returned. If str is NULL, NULL is returned. -static char* CloneString(const char* str, size_t length) { - if (str == NULL) { - return NULL; - } else { - char* const clone = new char[length + 1]; - posix::StrNCpy(clone, str, length); - clone[length] = '\0'; - return clone; - } -} - -// Clones a 0-terminated C string, allocating memory using new. The -// caller is responsible for deleting[] the return value. Returns the -// cloned string, or NULL if the input is NULL. -const char * String::CloneCString(const char* c_str) { - return (c_str == NULL) ? - NULL : CloneString(c_str, strlen(c_str)); -} +// class String. #if GTEST_OS_WINDOWS_MOBILE // Creates a UTF-16 wide string from the given ANSI string, allocating @@ -871,11 +870,6 @@ bool String::CStringEquals(const char * lhs, const char * rhs) { // encoding, and streams the result to the given Message object. static void StreamWideCharsToMessage(const wchar_t* wstr, size_t length, Message* msg) { - // TODO(wan): consider allowing a testing::String object to - // contain '\0'. This will make it behave more like std::string, - // and will allow ToUtf8String() to return the correct encoding - // for '\0' s.t. we can get rid of the conditional here (and in - // several other places). for (size_t i = 0; i != length; ) { // NOLINT if (wstr[i] != L'\0') { *msg << WideStringToUtf8(wstr + i, static_cast(length - i)); @@ -910,63 +904,37 @@ Message& Message::operator <<(const ::wstring& wstr) { } #endif // GTEST_HAS_GLOBAL_WSTRING -namespace internal { - -// Formats a value to be used in a failure message. - -// For a char value, we print it as a C++ char literal and as an -// unsigned integer (both in decimal and in hexadecimal). -String FormatForFailureMessage(char ch) { - const unsigned int ch_as_uint = ch; - // A String object cannot contain '\0', so we print "\\0" when ch is - // '\0'. - return String::Format("'%s' (%u, 0x%X)", - ch ? String::Format("%c", ch).c_str() : "\\0", - ch_as_uint, ch_as_uint); -} - -// For a wchar_t value, we print it as a C++ wchar_t literal and as an -// unsigned integer (both in decimal and in hexidecimal). -String FormatForFailureMessage(wchar_t wchar) { - // The C++ standard doesn't specify the exact size of the wchar_t - // type. It just says that it shall have the same size as another - // integral type, called its underlying type. - // - // Therefore, in order to print a wchar_t value in the numeric form, - // we first convert it to the largest integral type (UInt64) and - // then print the converted value. - // - // We use streaming to print the value as "%llu" doesn't work - // correctly with MSVC 7.1. - const UInt64 wchar_as_uint64 = wchar; - Message msg; - // A String object cannot contain '\0', so we print "\\0" when wchar is - // L'\0'. - char buffer[32]; // CodePointToUtf8 requires a buffer that big. - msg << "L'" - << (wchar ? CodePointToUtf8(static_cast(wchar), buffer) : "\\0") - << "' (" << wchar_as_uint64 << ", 0x" << ::std::setbase(16) - << wchar_as_uint64 << ")"; - return msg.GetString(); +// AssertionResult constructors. +// Used in EXPECT_TRUE/FALSE(assertion_result). +AssertionResult::AssertionResult(const AssertionResult& other) + : success_(other.success_), + message_(other.message_.get() != NULL ? + new ::std::string(*other.message_) : + static_cast< ::std::string*>(NULL)) { } -} // namespace internal - -// AssertionResult constructor. -AssertionResult::AssertionResult(const internal::String& failure_message) - : failure_message_(failure_message) { +// Returns the assertion's negation. Used with EXPECT/ASSERT_FALSE. +AssertionResult AssertionResult::operator!() const { + AssertionResult negation(!success_); + if (message_.get() != NULL) + negation << *message_; + return negation; } - // Makes a successful assertion result. AssertionResult AssertionSuccess() { - return AssertionResult(); + return AssertionResult(true); } +// Makes a failed assertion result. +AssertionResult AssertionFailure() { + return AssertionResult(false); +} // Makes a failed assertion result with the given failure message. +// Deprecated; use AssertionFailure() << message. AssertionResult AssertionFailure(const Message& message) { - return AssertionResult(message.GetString()); + return AssertionFailure() << message; } namespace internal { @@ -988,8 +956,8 @@ namespace internal { // be inserted into the message. AssertionResult EqFailure(const char* expected_expression, const char* actual_expression, - const String& expected_value, - const String& actual_value, + const std::string& expected_value, + const std::string& actual_value, bool ignoring_case) { Message msg; msg << "Value of: " << actual_expression; @@ -1005,9 +973,24 @@ AssertionResult EqFailure(const char* expected_expression, msg << "\nWhich is: " << expected_value; } - return AssertionFailure(msg); + return AssertionFailure() << msg; } +// Constructs a failure message for Boolean assertions such as EXPECT_TRUE. +std::string GetBoolAssertionFailureMessage( + const AssertionResult& assertion_result, + const char* expression_text, + const char* actual_predicate_value, + const char* expected_predicate_value) { + const char* actual_message = assertion_result.message(); + Message msg; + msg << "Value of: " << expression_text + << "\n Actual: " << actual_predicate_value; + if (actual_message[0] != '\0') + msg << " (" << actual_message << ")"; + msg << "\nExpected: " << expected_predicate_value; + return msg.GetString(); +} // Helper function for implementing ASSERT_NEAR. AssertionResult DoubleNearPredFormat(const char* expr1, @@ -1021,13 +1004,12 @@ AssertionResult DoubleNearPredFormat(const char* expr1, // TODO(wan): do not print the value of an expression if it's // already a literal. - Message msg; - msg << "The difference between " << expr1 << " and " << expr2 + return AssertionFailure() + << "The difference between " << expr1 << " and " << expr2 << " is " << diff << ", which exceeds " << abs_error_expr << ", where\n" << expr1 << " evaluates to " << val1 << ",\n" << expr2 << " evaluates to " << val2 << ", and\n" << abs_error_expr << " evaluates to " << abs_error << "."; - return AssertionFailure(msg); } @@ -1052,20 +1034,18 @@ AssertionResult FloatingPointLE(const char* expr1, // val2 is NaN, as the IEEE floating-point standard requires that // any predicate involving a NaN must return false. - StrStream val1_ss; + ::std::stringstream val1_ss; val1_ss << std::setprecision(std::numeric_limits::digits10 + 2) << val1; - StrStream val2_ss; + ::std::stringstream val2_ss; val2_ss << std::setprecision(std::numeric_limits::digits10 + 2) << val2; - Message msg; - msg << "Expected: (" << expr1 << ") <= (" << expr2 << ")\n" - << " Actual: " << StrStreamToString(&val1_ss) << " vs " - << StrStreamToString(&val2_ss); - - return AssertionFailure(msg); + return AssertionFailure() + << "Expected: (" << expr1 << ") <= (" << expr2 << ")\n" + << " Actual: " << StringStreamToString(&val1_ss) << " vs " + << StringStreamToString(&val2_ss); } } // namespace internal @@ -1112,11 +1092,10 @@ AssertionResult CmpHelper##op_name(const char* expr1, const char* expr2, \ if (val1 op val2) {\ return AssertionSuccess();\ } else {\ - Message msg;\ - msg << "Expected: (" << expr1 << ") " #op " (" << expr2\ + return AssertionFailure() \ + << "Expected: (" << expr1 << ") " #op " (" << expr2\ << "), actual: " << FormatForComparisonFailureMessage(val1, val2)\ << " vs " << FormatForComparisonFailureMessage(val2, val1);\ - return AssertionFailure(msg);\ }\ } @@ -1149,8 +1128,8 @@ AssertionResult CmpHelperSTREQ(const char* expected_expression, return EqFailure(expected_expression, actual_expression, - String::ShowCStringQuoted(expected), - String::ShowCStringQuoted(actual), + PrintToString(expected), + PrintToString(actual), false); } @@ -1165,8 +1144,8 @@ AssertionResult CmpHelperSTRCASEEQ(const char* expected_expression, return EqFailure(expected_expression, actual_expression, - String::ShowCStringQuoted(expected), - String::ShowCStringQuoted(actual), + PrintToString(expected), + PrintToString(actual), true); } @@ -1178,11 +1157,9 @@ AssertionResult CmpHelperSTRNE(const char* s1_expression, if (!String::CStringEquals(s1, s2)) { return AssertionSuccess(); } else { - Message msg; - msg << "Expected: (" << s1_expression << ") != (" - << s2_expression << "), actual: \"" - << s1 << "\" vs \"" << s2 << "\""; - return AssertionFailure(msg); + return AssertionFailure() << "Expected: (" << s1_expression << ") != (" + << s2_expression << "), actual: \"" + << s1 << "\" vs \"" << s2 << "\""; } } @@ -1194,11 +1171,10 @@ AssertionResult CmpHelperSTRCASENE(const char* s1_expression, if (!String::CaseInsensitiveCStringEquals(s1, s2)) { return AssertionSuccess(); } else { - Message msg; - msg << "Expected: (" << s1_expression << ") != (" + return AssertionFailure() + << "Expected: (" << s1_expression << ") != (" << s2_expression << ") (ignoring case), actual: \"" << s1 << "\" vs \"" << s2 << "\""; - return AssertionFailure(msg); } } @@ -1247,13 +1223,12 @@ AssertionResult IsSubstringImpl( const bool is_wide_string = sizeof(needle[0]) > 1; const char* const begin_string_quote = is_wide_string ? "L\"" : "\""; - return AssertionFailure( - Message() + return AssertionFailure() << "Value of: " << needle_expr << "\n" << " Actual: " << begin_string_quote << needle << "\"\n" << "Expected: " << (expected_to_be_substring ? "" : "not ") << "a substring of " << haystack_expr << "\n" - << "Which is: " << begin_string_quote << haystack << "\""); + << "Which is: " << begin_string_quote << haystack << "\""; } } // namespace @@ -1286,7 +1261,6 @@ AssertionResult IsNotSubstring( return IsSubstringImpl(false, needle_expr, haystack_expr, needle, haystack); } -#if GTEST_HAS_STD_STRING AssertionResult IsSubstring( const char* needle_expr, const char* haystack_expr, const ::std::string& needle, const ::std::string& haystack) { @@ -1298,7 +1272,6 @@ AssertionResult IsNotSubstring( const ::std::string& needle, const ::std::string& haystack) { return IsSubstringImpl(false, needle_expr, haystack_expr, needle, haystack); } -#endif // GTEST_HAS_STD_STRING #if GTEST_HAS_STD_WSTRING AssertionResult IsSubstring( @@ -1324,10 +1297,13 @@ namespace { AssertionResult HRESULTFailureHelper(const char* expr, const char* expected, long hr) { // NOLINT -#if GTEST_OS_WINDOWS_MOBILE +# if GTEST_OS_WINDOWS_MOBILE + // Windows CE doesn't support FormatMessage. const char error_text[] = ""; -#else + +# else + // Looks up the human-readable system message for the HRESULT code // and since we're not passing any params to FormatMessage, we don't // want inserts expanded. @@ -1344,18 +1320,17 @@ AssertionResult HRESULTFailureHelper(const char* expr, kBufSize, // buf size NULL); // no arguments for inserts // Trims tailing white space (FormatMessage leaves a trailing cr-lf) - for (; message_length && isspace(error_text[message_length - 1]); + for (; message_length && IsSpace(error_text[message_length - 1]); --message_length) { error_text[message_length - 1] = '\0'; } -#endif // GTEST_OS_WINDOWS_MOBILE - const String error_hex(String::Format("0x%08X ", hr)); - Message msg; - msg << "Expected: " << expr << " " << expected << ".\n" - << " Actual: " << error_hex << error_text << "\n"; +# endif // GTEST_OS_WINDOWS_MOBILE - return ::testing::AssertionFailure(msg); + const std::string error_hex(String::Format("0x%08X ", hr)); + return ::testing::AssertionFailure() + << "Expected: " << expr << " " << expected << ".\n" + << " Actual: " << error_hex << error_text << "\n"; } } // namespace @@ -1486,11 +1461,11 @@ inline UInt32 CreateCodePointFromUtf16SurrogatePair(wchar_t first, // as '(Invalid Unicode 0xXXXXXXXX)'. If the string is in UTF16 encoding // and contains invalid UTF-16 surrogate pairs, values in those pairs // will be encoded as individual Unicode characters from Basic Normal Plane. -String WideStringToUtf8(const wchar_t* str, int num_chars) { +std::string WideStringToUtf8(const wchar_t* str, int num_chars) { if (num_chars == -1) num_chars = static_cast(wcslen(str)); - StrStream stream; + ::std::stringstream stream; for (int i = 0; i < num_chars; ++i) { UInt32 unicode_code_point; @@ -1507,24 +1482,15 @@ String WideStringToUtf8(const wchar_t* str, int num_chars) { char buffer[32]; // CodePointToUtf8 requires a buffer this big. stream << CodePointToUtf8(unicode_code_point, buffer); } - return StrStreamToString(&stream); + return StringStreamToString(&stream); } -// Converts a wide C string to a String using the UTF-8 encoding. +// Converts a wide C string to an std::string using the UTF-8 encoding. // NULL will be converted to "(null)". -String String::ShowWideCString(const wchar_t * wide_c_str) { - if (wide_c_str == NULL) return String("(null)"); +std::string String::ShowWideCString(const wchar_t * wide_c_str) { + if (wide_c_str == NULL) return "(null)"; - return String(internal::WideStringToUtf8(wide_c_str, -1).c_str()); -} - -// Similar to ShowWideCString(), except that this function encloses -// the converted string in double quotes. -String String::ShowWideCStringQuoted(const wchar_t* wide_c_str) { - if (wide_c_str == NULL) return String("(null)"); - - return String::Format("L\"%s\"", - String::ShowWideCString(wide_c_str).c_str()); + return internal::WideStringToUtf8(wide_c_str, -1); } // Compares two wide C strings. Returns true iff they have the same @@ -1552,8 +1518,8 @@ AssertionResult CmpHelperSTREQ(const char* expected_expression, return EqFailure(expected_expression, actual_expression, - String::ShowWideCStringQuoted(expected), - String::ShowWideCStringQuoted(actual), + PrintToString(expected), + PrintToString(actual), false); } @@ -1566,12 +1532,10 @@ AssertionResult CmpHelperSTRNE(const char* s1_expression, return AssertionSuccess(); } - Message msg; - msg << "Expected: (" << s1_expression << ") != (" - << s2_expression << "), actual: " - << String::ShowWideCStringQuoted(s1) - << " vs " << String::ShowWideCStringQuoted(s2); - return AssertionFailure(msg); + return AssertionFailure() << "Expected: (" << s1_expression << ") != (" + << s2_expression << "), actual: " + << PrintToString(s1) + << " vs " << PrintToString(s2); } // Compares two C strings, ignoring case. Returns true iff they have @@ -1602,17 +1566,17 @@ bool String::CaseInsensitiveCStringEquals(const char * lhs, const char * rhs) { // current locale. bool String::CaseInsensitiveWideCStringEquals(const wchar_t* lhs, const wchar_t* rhs) { - if ( lhs == NULL ) return rhs == NULL; + if (lhs == NULL) return rhs == NULL; - if ( rhs == NULL ) return false; + if (rhs == NULL) return false; #if GTEST_OS_WINDOWS return _wcsicmp(lhs, rhs) == 0; -#elif GTEST_OS_LINUX +#elif GTEST_OS_LINUX && !GTEST_OS_LINUX_ANDROID return wcscasecmp(lhs, rhs) == 0; #else - // Mac OS X and Cygwin don't define wcscasecmp. Other unknown OSes - // may not define it either. + // Android, Mac OS X and Cygwin don't define wcscasecmp. + // Other unknown OSes may not define it either. wint_t left, right; do { left = towlower(*lhs++); @@ -1622,59 +1586,18 @@ bool String::CaseInsensitiveWideCStringEquals(const wchar_t* lhs, #endif // OS selector } -// Compares this with another String. -// Returns < 0 if this is less than rhs, 0 if this is equal to rhs, or > 0 -// if this is greater than rhs. -int String::Compare(const String & rhs) const { - const char* const lhs_c_str = c_str(); - const char* const rhs_c_str = rhs.c_str(); - - if (lhs_c_str == NULL) { - return rhs_c_str == NULL ? 0 : -1; // NULL < anything except NULL - } else if (rhs_c_str == NULL) { - return 1; - } - - const size_t shorter_str_len = - length() <= rhs.length() ? length() : rhs.length(); - for (size_t i = 0; i != shorter_str_len; i++) { - if (lhs_c_str[i] < rhs_c_str[i]) { - return -1; - } else if (lhs_c_str[i] > rhs_c_str[i]) { - return 1; - } - } - return (length() < rhs.length()) ? -1 : - (length() > rhs.length()) ? 1 : 0; -} - -// Returns true iff this String ends with the given suffix. *Any* -// String is considered to end with a NULL or empty suffix. -bool String::EndsWith(const char* suffix) const { - if (suffix == NULL || CStringEquals(suffix, "")) return true; - - if (c_str() == NULL) return false; - - const size_t this_len = strlen(c_str()); - const size_t suffix_len = strlen(suffix); - return (this_len >= suffix_len) && - CStringEquals(c_str() + this_len - suffix_len, suffix); -} - -// Returns true iff this String ends with the given suffix, ignoring case. -// Any String is considered to end with a NULL or empty suffix. -bool String::EndsWithCaseInsensitive(const char* suffix) const { - if (suffix == NULL || CStringEquals(suffix, "")) return true; - - if (c_str() == NULL) return false; - - const size_t this_len = strlen(c_str()); - const size_t suffix_len = strlen(suffix); - return (this_len >= suffix_len) && - CaseInsensitiveCStringEquals(c_str() + this_len - suffix_len, suffix); +// Returns true iff str ends with the given suffix, ignoring case. +// Any string is considered to end with an empty suffix. +bool String::EndsWithCaseInsensitive( + const std::string& str, const std::string& suffix) { + const size_t str_len = str.length(); + const size_t suffix_len = suffix.length(); + return (str_len >= suffix_len) && + CaseInsensitiveCStringEquals(str.c_str() + str_len - suffix_len, + suffix.c_str()); } -// Formats a list of arguments to a String, using the same format +// Formats a list of arguments to an std::string, using the same format // spec string as for printf. // // We do not use the StringPrintf class as it is not universally @@ -1684,7 +1607,7 @@ bool String::EndsWithCaseInsensitive(const char* suffix) const { // If 4096 characters are not enough to format the input, or if // there's an error, "" is // returned. -String String::Format(const char * format, ...) { +std::string String::Format(const char * format, ...) { va_list args; va_start(args, format); @@ -1694,10 +1617,12 @@ String String::Format(const char * format, ...) { // MSVC 8 deprecates vsnprintf(), so we want to suppress warning // 4996 (deprecated function) there. #ifdef _MSC_VER // We are using MSVC. -#pragma warning(push) // Saves the current warning state. -#pragma warning(disable:4996) // Temporarily disables warning 4996. +# pragma warning(push) // Saves the current warning state. +# pragma warning(disable:4996) // Temporarily disables warning 4996. + const int size = vsnprintf(buffer, kBufferSize, format, args); -#pragma warning(pop) // Restores the warning state. + +# pragma warning(pop) // Restores the warning state. #else // We are not using MSVC. const int size = vsnprintf(buffer, kBufferSize, format, args); #endif // _MSC_VER @@ -1709,58 +1634,42 @@ String String::Format(const char * format, ...) { // always returns a negative value. For simplicity, we lump the two // error cases together. if (size < 0 || size >= kBufferSize) { - return String(""); + return ""; } else { - return String(buffer, size); + return std::string(buffer, size); } } -// Converts the buffer in a StrStream to a String, converting NUL +// Converts the buffer in a stringstream to an std::string, converting NUL // bytes to "\\0" along the way. -String StrStreamToString(StrStream* ss) { -#if GTEST_HAS_STD_STRING +std::string StringStreamToString(::std::stringstream* ss) { const ::std::string& str = ss->str(); const char* const start = str.c_str(); const char* const end = start + str.length(); -#else - const char* const start = ss->str(); - const char* const end = start + ss->pcount(); -#endif // GTEST_HAS_STD_STRING - // We need to use a helper StrStream to do this transformation - // because String doesn't support push_back(). - StrStream helper; + std::string result; + result.reserve(2 * (end - start)); for (const char* ch = start; ch != end; ++ch) { if (*ch == '\0') { - helper << "\\0"; // Replaces NUL with "\\0"; + result += "\\0"; // Replaces NUL with "\\0"; } else { - helper.put(*ch); + result += *ch; } } -#if GTEST_HAS_STD_STRING - return String(helper.str().c_str()); -#else - const String str(helper.str(), helper.pcount()); - helper.freeze(false); - ss->freeze(false); - return str; -#endif // GTEST_HAS_STD_STRING + return result; } // Appends the user-supplied message to the Google-Test-generated message. -String AppendUserMessage(const String& gtest_msg, - const Message& user_msg) { +std::string AppendUserMessage(const std::string& gtest_msg, + const Message& user_msg) { // Appends the user message if it's non-empty. - const String user_msg_string = user_msg.GetString(); + const std::string user_msg_string = user_msg.GetString(); if (user_msg_string.empty()) { return gtest_msg; } - Message msg; - msg << gtest_msg << "\n" << user_msg_string; - - return msg.GetString(); + return gtest_msg + "\n" + user_msg_string; } } // namespace internal @@ -1769,9 +1678,7 @@ String AppendUserMessage(const String& gtest_msg, // Creates an empty TestResult. TestResult::TestResult() - : test_part_results_(new internal::Vector), - test_properties_(new internal::Vector), - death_test_count_(0), + : death_test_count_(0), elapsed_time_(0) { } @@ -1783,24 +1690,28 @@ TestResult::~TestResult() { // range from 0 to total_part_count() - 1. If i is not in that range, // aborts the program. const TestPartResult& TestResult::GetTestPartResult(int i) const { - return test_part_results_->GetElement(i); + if (i < 0 || i >= total_part_count()) + internal::posix::Abort(); + return test_part_results_.at(i); } // Returns the i-th test property. i can range from 0 to // test_property_count() - 1. If i is not in that range, aborts the // program. const TestProperty& TestResult::GetTestProperty(int i) const { - return test_properties_->GetElement(i); + if (i < 0 || i >= test_property_count()) + internal::posix::Abort(); + return test_properties_.at(i); } // Clears the test part results. void TestResult::ClearTestPartResults() { - test_part_results_->Clear(); + test_part_results_.clear(); } // Adds a test part result to the list. void TestResult::AddTestPartResult(const TestPartResult& test_part_result) { - test_part_results_->PushBack(test_part_result); + test_part_results_.push_back(test_part_result); } // Adds a test property to the list. If a property with the same key as the @@ -1811,11 +1722,11 @@ void TestResult::RecordProperty(const TestProperty& test_property) { return; } internal::MutexLock lock(&test_properites_mutex_); - TestProperty* const property_with_matching_key = - test_properties_->FindIf( - internal::TestPropertyKeyIs(test_property.key())); - if (property_with_matching_key == NULL) { - test_properties_->PushBack(test_property); + const std::vector::iterator property_with_matching_key = + std::find_if(test_properties_.begin(), test_properties_.end(), + internal::TestPropertyKeyIs(test_property.key())); + if (property_with_matching_key == test_properties_.end()) { + test_properties_.push_back(test_property); return; } property_with_matching_key->SetValue(test_property.value()); @@ -1824,7 +1735,7 @@ void TestResult::RecordProperty(const TestProperty& test_property) { // Adds a failure if the key is a reserved attribute of Google Test // testcase tags. Returns true if the property is valid. bool TestResult::ValidateTestProperty(const TestProperty& test_property) { - internal::String key(test_property.key()); + const std::string& key = test_property.key(); if (key == "name" || key == "status" || key == "time" || key == "classname") { ADD_FAILURE() << "Reserved key used in RecordProperty(): " @@ -1838,8 +1749,8 @@ bool TestResult::ValidateTestProperty(const TestProperty& test_property) { // Clears the object. void TestResult::Clear() { - test_part_results_->Clear(); - test_properties_->Clear(); + test_part_results_.clear(); + test_properties_.clear(); death_test_count_ = 0; elapsed_time_ = 0; } @@ -1860,7 +1771,7 @@ static bool TestPartFatallyFailed(const TestPartResult& result) { // Returns true iff the test fatally failed. bool TestResult::HasFatalFailure() const { - return test_part_results_->CountIf(TestPartFatallyFailed) > 0; + return CountIf(test_part_results_, TestPartFatallyFailed) > 0; } // Returns true iff the test part non-fatally failed. @@ -1870,18 +1781,18 @@ static bool TestPartNonfatallyFailed(const TestPartResult& result) { // Returns true iff the test has a non-fatal failure. bool TestResult::HasNonfatalFailure() const { - return test_part_results_->CountIf(TestPartNonfatallyFailed) > 0; + return CountIf(test_part_results_, TestPartNonfatallyFailed) > 0; } // Gets the number of all test parts. This is the sum of the number // of successful test parts and the number of failed test parts. int TestResult::total_part_count() const { - return test_part_results_->size(); + return static_cast(test_part_results_.size()); } // Returns the number of the test properties. int TestResult::test_property_count() const { - return test_properties_->size(); + return static_cast(test_properties_.size()); } // class Test @@ -1925,7 +1836,7 @@ void Test::RecordProperty(const char* key, int value) { namespace internal { void ReportFailureInUnknownLocation(TestPartResult::Type result_type, - const String& message) { + const std::string& message) { // This function is a friend of UnitTest and as such has access to // AddTestPartResult. UnitTest::GetInstance()->AddTestPartResult( @@ -1933,27 +1844,11 @@ void ReportFailureInUnknownLocation(TestPartResult::Type result_type, NULL, // No info about the source file where the exception occurred. -1, // We have no info on which line caused the exception. message, - String()); // No stack trace, either. + ""); // No stack trace, either. } } // namespace internal -#if GTEST_OS_WINDOWS -// We are on Windows. - -// Adds an "exception thrown" fatal failure to the current test. -static void AddExceptionThrownFailure(DWORD exception_code, - const char* location) { - Message message; - message << "Exception thrown with code 0x" << std::setbase(16) << - exception_code << std::setbase(10) << " in " << location << "."; - - internal::ReportFailureInUnknownLocation(TestPartResult::kFatalFailure, - message.GetString()); -} - -#endif // GTEST_OS_WINDOWS - // Google Test requires all tests in the same test case to use the same test // fixture class. This function checks if the current test has the // same fixture class as the first test in the current test case. If @@ -1964,15 +1859,13 @@ bool Test::HasSameFixtureClass() { const TestCase* const test_case = impl->current_test_case(); // Info about the first test in the current test case. - const internal::TestInfoImpl* const first_test_info = - test_case->test_info_list().GetElement(0)->impl(); - const internal::TypeId first_fixture_id = first_test_info->fixture_class_id(); + const TestInfo* const first_test_info = test_case->test_info_list()[0]; + const internal::TypeId first_fixture_id = first_test_info->fixture_class_id_; const char* const first_test_name = first_test_info->name(); // Info about the current test. - const internal::TestInfoImpl* const this_test_info = - impl->current_test_info()->impl(); - const internal::TypeId this_fixture_id = this_test_info->fixture_class_id(); + const TestInfo* const this_test_info = impl->current_test_info(); + const internal::TypeId this_fixture_id = this_test_info->fixture_class_id_; const char* const this_test_name = this_test_info->name(); if (this_fixture_id != first_fixture_id) { @@ -2022,62 +1915,167 @@ bool Test::HasSameFixtureClass() { return true; } -// Runs the test and updates the test result. -void Test::Run() { - if (!HasSameFixtureClass()) return; +#if GTEST_HAS_SEH - internal::UnitTestImpl* const impl = internal::GetUnitTestImpl(); +// Adds an "exception thrown" fatal failure to the current test. This +// function returns its result via an output parameter pointer because VC++ +// prohibits creation of objects with destructors on stack in functions +// using __try (see error C2712). +static std::string* FormatSehExceptionMessage(DWORD exception_code, + const char* location) { + Message message; + message << "SEH exception with code 0x" << std::setbase(16) << + exception_code << std::setbase(10) << " thrown in " << location << "."; + + return new std::string(message.GetString()); +} + +#endif // GTEST_HAS_SEH + +#if GTEST_HAS_EXCEPTIONS + +// Adds an "exception thrown" fatal failure to the current test. +static std::string FormatCxxExceptionMessage(const char* description, + const char* location) { + Message message; + if (description != NULL) { + message << "C++ exception with description \"" << description << "\""; + } else { + message << "Unknown C++ exception"; + } + message << " thrown in " << location << "."; + + return message.GetString(); +} + +static std::string PrintTestPartResultToString( + const TestPartResult& test_part_result); + +// A failed Google Test assertion will throw an exception of this type when +// GTEST_FLAG(throw_on_failure) is true (if exceptions are enabled). We +// derive it from std::runtime_error, which is for errors presumably +// detectable only at run time. Since std::runtime_error inherits from +// std::exception, many testing frameworks know how to extract and print the +// message inside it. +class GoogleTestFailureException : public ::std::runtime_error { + public: + explicit GoogleTestFailureException(const TestPartResult& failure) + : ::std::runtime_error(PrintTestPartResultToString(failure).c_str()) {} +}; +#endif // GTEST_HAS_EXCEPTIONS + +namespace internal { +// We put these helper functions in the internal namespace as IBM's xlC +// compiler rejects the code if they were declared static. + +// Runs the given method and handles SEH exceptions it throws, when +// SEH is supported; returns the 0-value for type Result in case of an +// SEH exception. (Microsoft compilers cannot handle SEH and C++ +// exceptions in the same function. Therefore, we provide a separate +// wrapper function for handling SEH exceptions.) +template +Result HandleSehExceptionsInMethodIfSupported( + T* object, Result (T::*method)(), const char* location) { #if GTEST_HAS_SEH - // Catch SEH-style exceptions. - impl->os_stack_trace_getter()->UponLeavingGTest(); __try { - SetUp(); - } __except(internal::UnitTestOptions::GTestShouldProcessSEH( + return (object->*method)(); + } __except (internal::UnitTestOptions::GTestShouldProcessSEH( // NOLINT GetExceptionCode())) { - AddExceptionThrownFailure(GetExceptionCode(), "SetUp()"); + // We create the exception message on the heap because VC++ prohibits + // creation of objects with destructors on stack in functions using __try + // (see error C2712). + std::string* exception_message = FormatSehExceptionMessage( + GetExceptionCode(), location); + internal::ReportFailureInUnknownLocation(TestPartResult::kFatalFailure, + *exception_message); + delete exception_message; + return static_cast(0); } +#else + (void)location; + return (object->*method)(); +#endif // GTEST_HAS_SEH +} - // We will run the test only if SetUp() had no fatal failure. - if (!HasFatalFailure()) { - impl->os_stack_trace_getter()->UponLeavingGTest(); - __try { - TestBody(); - } __except(internal::UnitTestOptions::GTestShouldProcessSEH( - GetExceptionCode())) { - AddExceptionThrownFailure(GetExceptionCode(), "the test body"); +// Runs the given method and catches and reports C++ and/or SEH-style +// exceptions, if they are supported; returns the 0-value for type +// Result in case of an SEH exception. +template +Result HandleExceptionsInMethodIfSupported( + T* object, Result (T::*method)(), const char* location) { + // NOTE: The user code can affect the way in which Google Test handles + // exceptions by setting GTEST_FLAG(catch_exceptions), but only before + // RUN_ALL_TESTS() starts. It is technically possible to check the flag + // after the exception is caught and either report or re-throw the + // exception based on the flag's value: + // + // try { + // // Perform the test method. + // } catch (...) { + // if (GTEST_FLAG(catch_exceptions)) + // // Report the exception as failure. + // else + // throw; // Re-throws the original exception. + // } + // + // However, the purpose of this flag is to allow the program to drop into + // the debugger when the exception is thrown. On most platforms, once the + // control enters the catch block, the exception origin information is + // lost and the debugger will stop the program at the point of the + // re-throw in this function -- instead of at the point of the original + // throw statement in the code under test. For this reason, we perform + // the check early, sacrificing the ability to affect Google Test's + // exception handling in the method where the exception is thrown. + if (internal::GetUnitTestImpl()->catch_exceptions()) { +#if GTEST_HAS_EXCEPTIONS + try { + return HandleSehExceptionsInMethodIfSupported(object, method, location); + } catch (const GoogleTestFailureException&) { // NOLINT + // This exception doesn't originate in code under test. It makes no + // sense to report it as a test failure. + throw; + } catch (const std::exception& e) { // NOLINT + internal::ReportFailureInUnknownLocation( + TestPartResult::kFatalFailure, + FormatCxxExceptionMessage(e.what(), location)); + } catch (...) { // NOLINT + internal::ReportFailureInUnknownLocation( + TestPartResult::kFatalFailure, + FormatCxxExceptionMessage(NULL, location)); } + return static_cast(0); +#else + return HandleSehExceptionsInMethodIfSupported(object, method, location); +#endif // GTEST_HAS_EXCEPTIONS + } else { + return (object->*method)(); } +} - // However, we want to clean up as much as possible. Hence we will - // always call TearDown(), even if SetUp() or the test body has - // failed. - impl->os_stack_trace_getter()->UponLeavingGTest(); - __try { - TearDown(); - } __except(internal::UnitTestOptions::GTestShouldProcessSEH( - GetExceptionCode())) { - AddExceptionThrownFailure(GetExceptionCode(), "TearDown()"); - } +} // namespace internal -#else // We are on a compiler or platform that doesn't support SEH. - impl->os_stack_trace_getter()->UponLeavingGTest(); - SetUp(); +// Runs the test and updates the test result. +void Test::Run() { + if (!HasSameFixtureClass()) return; + internal::UnitTestImpl* const impl = internal::GetUnitTestImpl(); + impl->os_stack_trace_getter()->UponLeavingGTest(); + internal::HandleExceptionsInMethodIfSupported(this, &Test::SetUp, "SetUp()"); // We will run the test only if SetUp() was successful. if (!HasFatalFailure()) { impl->os_stack_trace_getter()->UponLeavingGTest(); - TestBody(); + internal::HandleExceptionsInMethodIfSupported( + this, &Test::TestBody, "the test body"); } // However, we want to clean up as much as possible. Hence we will // always call TearDown(), even if SetUp() or the test body has // failed. impl->os_stack_trace_getter()->UponLeavingGTest(); - TearDown(); -#endif // GTEST_HAS_SEH + internal::HandleExceptionsInMethodIfSupported( + this, &Test::TearDown, "TearDown()"); } - // Returns true iff the current test has a fatal failure. bool Test::HasFatalFailure() { return internal::GetUnitTestImpl()->current_test_result()->HasFatalFailure(); @@ -2092,22 +2090,28 @@ bool Test::HasNonfatalFailure() { // class TestInfo // Constructs a TestInfo object. It assumes ownership of the test factory -// object via impl_. -TestInfo::TestInfo(const char* test_case_name, - const char* name, - const char* test_case_comment, - const char* comment, +// object. +// TODO(vladl@google.com): Make a_test_case_name and a_name const string&'s +// to signify they cannot be NULLs. +TestInfo::TestInfo(const char* a_test_case_name, + const char* a_name, + const char* a_type_param, + const char* a_value_param, internal::TypeId fixture_class_id, - internal::TestFactoryBase* factory) { - impl_ = new internal::TestInfoImpl(this, test_case_name, name, - test_case_comment, comment, - fixture_class_id, factory); -} + internal::TestFactoryBase* factory) + : test_case_name_(a_test_case_name), + name_(a_name), + type_param_(a_type_param ? new std::string(a_type_param) : NULL), + value_param_(a_value_param ? new std::string(a_value_param) : NULL), + fixture_class_id_(fixture_class_id), + should_run_(false), + is_disabled_(false), + matches_filter_(false), + factory_(factory), + result_() {} // Destructs a TestInfo object. -TestInfo::~TestInfo() { - delete impl_; -} +TestInfo::~TestInfo() { delete factory_; } namespace internal { @@ -2118,10 +2122,10 @@ namespace internal { // // test_case_name: name of the test case // name: name of the test -// test_case_comment: a comment on the test case that will be included in -// the test output -// comment: a comment on the test that will be included in the -// test output +// type_param: the name of the test's type parameter, or NULL if +// this is not a typed or a type-parameterized test. +// value_param: text representation of the test's value parameter, +// or NULL if this is not a value-parameterized test. // fixture_class_id: ID of the test fixture class // set_up_tc: pointer to the function that sets up the test case // tear_down_tc: pointer to the function that tears down the test case @@ -2130,13 +2134,14 @@ namespace internal { // ownership of the factory object. TestInfo* MakeAndRegisterTestInfo( const char* test_case_name, const char* name, - const char* test_case_comment, const char* comment, + const char* type_param, + const char* value_param, TypeId fixture_class_id, SetUpTestCaseFunc set_up_tc, TearDownTestCaseFunc tear_down_tc, TestFactoryBase* factory) { TestInfo* const test_info = - new TestInfo(test_case_name, name, test_case_comment, comment, + new TestInfo(test_case_name, name, type_param, value_param, fixture_class_id, factory); GetUnitTestImpl()->AddTestInfo(set_up_tc, tear_down_tc, test_info); return test_info; @@ -2163,41 +2168,6 @@ void ReportInvalidTestCaseType(const char* test_case_name, } // namespace internal -// Returns the test case name. -const char* TestInfo::test_case_name() const { - return impl_->test_case_name(); -} - -// Returns the test name. -const char* TestInfo::name() const { - return impl_->name(); -} - -// Returns the test case comment. -const char* TestInfo::test_case_comment() const { - return impl_->test_case_comment(); -} - -// Returns the test comment. -const char* TestInfo::comment() const { - return impl_->comment(); -} - -// Returns true if this test should run. -bool TestInfo::should_run() const { return impl_->should_run(); } - -// Returns true if this test matches the user-specified filter. -bool TestInfo::matches_filter() const { return impl_->matches_filter(); } - -// Returns the result of the test. -const TestResult* TestInfo::result() const { return impl_->result(); } - -// Increments the number of death tests encountered in this test so -// far. -int TestInfo::increment_death_test_count() { - return impl_->result()->increment_death_test_count(); -} - namespace { // A predicate that checks the test name of a TestInfo against a known @@ -2218,11 +2188,11 @@ class TestNameIs { // Returns true iff the test name of test_info matches name_. bool operator()(const TestInfo * test_info) const { - return test_info && internal::String(test_info->name()).Compare(name_) == 0; + return test_info && test_info->name() == name_; } private: - internal::String name_; + std::string name_; }; } // namespace @@ -2241,94 +2211,78 @@ void UnitTestImpl::RegisterParameterizedTests() { #endif } +} // namespace internal + // Creates the test object, runs it, records its result, and then // deletes it. -void TestInfoImpl::Run() { +void TestInfo::Run() { if (!should_run_) return; // Tells UnitTest where to store test result. - UnitTestImpl* const impl = internal::GetUnitTestImpl(); - impl->set_current_test_info(parent_); + internal::UnitTestImpl* const impl = internal::GetUnitTestImpl(); + impl->set_current_test_info(this); TestEventListener* repeater = UnitTest::GetInstance()->listeners().repeater(); // Notifies the unit test event listeners that a test is about to start. - repeater->OnTestStart(*parent_); + repeater->OnTestStart(*this); - const TimeInMillis start = GetTimeInMillis(); + const TimeInMillis start = internal::GetTimeInMillis(); impl->os_stack_trace_getter()->UponLeavingGTest(); -#if GTEST_HAS_SEH - // Catch SEH-style exceptions. - Test* test = NULL; - - __try { - // Creates the test object. - test = factory_->CreateTest(); - } __except(internal::UnitTestOptions::GTestShouldProcessSEH( - GetExceptionCode())) { - AddExceptionThrownFailure(GetExceptionCode(), - "the test fixture's constructor"); - return; - } -#else // We are on a compiler or platform that doesn't support SEH. - - // TODO(wan): If test->Run() throws, test won't be deleted. This is - // not a problem now as we don't use exceptions. If we were to - // enable exceptions, we should revise the following to be - // exception-safe. // Creates the test object. - Test* test = factory_->CreateTest(); -#endif // GTEST_HAS_SEH - - // Runs the test only if the constructor of the test fixture didn't - // generate a fatal failure. - if (!Test::HasFatalFailure()) { + Test* const test = internal::HandleExceptionsInMethodIfSupported( + factory_, &internal::TestFactoryBase::CreateTest, + "the test fixture's constructor"); + + // Runs the test only if the test object was created and its + // constructor didn't generate a fatal failure. + if ((test != NULL) && !Test::HasFatalFailure()) { + // This doesn't throw as all user code that can throw are wrapped into + // exception handling code. test->Run(); } // Deletes the test object. impl->os_stack_trace_getter()->UponLeavingGTest(); - delete test; - test = NULL; + internal::HandleExceptionsInMethodIfSupported( + test, &Test::DeleteSelf_, "the test fixture's destructor"); - result_.set_elapsed_time(GetTimeInMillis() - start); + result_.set_elapsed_time(internal::GetTimeInMillis() - start); // Notifies the unit test event listener that a test has just finished. - repeater->OnTestEnd(*parent_); + repeater->OnTestEnd(*this); // Tells UnitTest to stop associating assertion results to this // test. impl->set_current_test_info(NULL); } -} // namespace internal - // class TestCase // Gets the number of successful tests in this test case. int TestCase::successful_test_count() const { - return test_info_list_->CountIf(TestPassed); + return CountIf(test_info_list_, TestPassed); } // Gets the number of failed tests in this test case. int TestCase::failed_test_count() const { - return test_info_list_->CountIf(TestFailed); + return CountIf(test_info_list_, TestFailed); } int TestCase::disabled_test_count() const { - return test_info_list_->CountIf(TestDisabled); + return CountIf(test_info_list_, TestDisabled); } // Get the number of tests in this test case that should run. int TestCase::test_to_run_count() const { - return test_info_list_->CountIf(ShouldRunTest); + return CountIf(test_info_list_, ShouldRunTest); } // Gets the number of all tests. int TestCase::total_test_count() const { - return test_info_list_->size(); + return static_cast(test_info_list_.size()); } // Creates a TestCase with the given name. @@ -2336,15 +2290,15 @@ int TestCase::total_test_count() const { // Arguments: // // name: name of the test case +// a_type_param: the name of the test case's type parameter, or NULL if +// this is not a typed or a type-parameterized test case. // set_up_tc: pointer to the function that sets up the test case // tear_down_tc: pointer to the function that tears down the test case -TestCase::TestCase(const char* name, const char* comment, +TestCase::TestCase(const char* a_name, const char* a_type_param, Test::SetUpTestCaseFunc set_up_tc, Test::TearDownTestCaseFunc tear_down_tc) - : name_(name), - comment_(comment), - test_info_list_(new internal::Vector), - test_indices_(new internal::Vector), + : name_(a_name), + type_param_(a_type_param ? new std::string(a_type_param) : NULL), set_up_tc_(set_up_tc), tear_down_tc_(tear_down_tc), should_run_(false), @@ -2354,28 +2308,28 @@ TestCase::TestCase(const char* name, const char* comment, // Destructor of TestCase. TestCase::~TestCase() { // Deletes every Test in the collection. - test_info_list_->ForEach(internal::Delete); + ForEach(test_info_list_, internal::Delete); } // Returns the i-th test among all the tests. i can range from 0 to // total_test_count() - 1. If i is not in that range, returns NULL. const TestInfo* TestCase::GetTestInfo(int i) const { - const int index = test_indices_->GetElementOr(i, -1); - return index < 0 ? NULL : test_info_list_->GetElement(index); + const int index = GetElementOr(test_indices_, i, -1); + return index < 0 ? NULL : test_info_list_[index]; } // Returns the i-th test among all the tests. i can range from 0 to // total_test_count() - 1. If i is not in that range, returns NULL. TestInfo* TestCase::GetMutableTestInfo(int i) { - const int index = test_indices_->GetElementOr(i, -1); - return index < 0 ? NULL : test_info_list_->GetElement(index); + const int index = GetElementOr(test_indices_, i, -1); + return index < 0 ? NULL : test_info_list_[index]; } // Adds a test to this test case. Will delete the test upon // destruction of the TestCase object. void TestCase::AddTestInfo(TestInfo * test_info) { - test_info_list_->PushBack(test_info); - test_indices_->PushBack(test_indices_->size()); + test_info_list_.push_back(test_info); + test_indices_.push_back(static_cast(test_indices_.size())); } // Runs every test in this TestCase. @@ -2389,56 +2343,37 @@ void TestCase::Run() { repeater->OnTestCaseStart(*this); impl->os_stack_trace_getter()->UponLeavingGTest(); - set_up_tc_(); + internal::HandleExceptionsInMethodIfSupported( + this, &TestCase::RunSetUpTestCase, "SetUpTestCase()"); const internal::TimeInMillis start = internal::GetTimeInMillis(); for (int i = 0; i < total_test_count(); i++) { - GetMutableTestInfo(i)->impl()->Run(); + GetMutableTestInfo(i)->Run(); } elapsed_time_ = internal::GetTimeInMillis() - start; impl->os_stack_trace_getter()->UponLeavingGTest(); - tear_down_tc_(); + internal::HandleExceptionsInMethodIfSupported( + this, &TestCase::RunTearDownTestCase, "TearDownTestCase()"); + repeater->OnTestCaseEnd(*this); impl->set_current_test_case(NULL); } // Clears the results of all tests in this test case. void TestCase::ClearResult() { - test_info_list_->ForEach(internal::TestInfoImpl::ClearTestResult); -} - -// Returns true iff test passed. -bool TestCase::TestPassed(const TestInfo * test_info) { - const internal::TestInfoImpl* const impl = test_info->impl(); - return impl->should_run() && impl->result()->Passed(); -} - -// Returns true iff test failed. -bool TestCase::TestFailed(const TestInfo * test_info) { - const internal::TestInfoImpl* const impl = test_info->impl(); - return impl->should_run() && impl->result()->Failed(); -} - -// Returns true iff test is disabled. -bool TestCase::TestDisabled(const TestInfo * test_info) { - return test_info->impl()->is_disabled(); -} - -// Returns true if the given test should run. -bool TestCase::ShouldRunTest(const TestInfo *test_info) { - return test_info->impl()->should_run(); + ForEach(test_info_list_, TestInfo::ClearTestResult); } // Shuffles the tests in this test case. void TestCase::ShuffleTests(internal::Random* random) { - test_indices_->Shuffle(random); + Shuffle(random, &test_indices_); } // Restores the test order to before the first shuffle. void TestCase::UnshuffleTests() { - for (int i = 0; i < test_indices_->size(); i++) { - test_indices_->GetMutableElement(i) = i; + for (size_t i = 0; i < test_indices_.size(); i++) { + test_indices_[i] = static_cast(i); } } @@ -2447,20 +2382,20 @@ void TestCase::UnshuffleTests() { // // FormatCountableNoun(1, "formula", "formuli") returns "1 formula". // FormatCountableNoun(5, "book", "books") returns "5 books". -static internal::String FormatCountableNoun(int count, - const char * singular_form, - const char * plural_form) { +static std::string FormatCountableNoun(int count, + const char * singular_form, + const char * plural_form) { return internal::String::Format("%d %s", count, count == 1 ? singular_form : plural_form); } // Formats the count of tests. -static internal::String FormatTestCount(int test_count) { +static std::string FormatTestCount(int test_count) { return FormatCountableNoun(test_count, "test", "tests"); } // Formats the count of test cases. -static internal::String FormatTestCaseCount(int test_case_count) { +static std::string FormatTestCaseCount(int test_case_count) { return FormatCountableNoun(test_case_count, "test case", "test cases"); } @@ -2480,13 +2415,13 @@ static const char * TestPartResultTypeToString(TestPartResult::Type type) { #else return "Failure\n"; #endif + default: + return "Unknown result type"; } - - return "Unknown result type"; } -// Prints a TestPartResult to a String. -static internal::String PrintTestPartResultToString( +// Prints a TestPartResult to an std::string. +static std::string PrintTestPartResultToString( const TestPartResult& test_part_result) { return (Message() << internal::FormatFileLocation(test_part_result.file_name(), @@ -2497,7 +2432,7 @@ static internal::String PrintTestPartResultToString( // Prints a TestPartResult. static void PrintTestPartResult(const TestPartResult& test_part_result) { - const internal::String& result = + const std::string& result = PrintTestPartResultToString(test_part_result); printf("%s\n", result.c_str()); fflush(stdout); @@ -2568,6 +2503,7 @@ bool ShouldUseColor(bool stdout_is_tty) { String::CStringEquals(term, "xterm") || String::CStringEquals(term, "xterm-color") || String::CStringEquals(term, "xterm-256color") || + String::CStringEquals(term, "screen") || String::CStringEquals(term, "linux") || String::CStringEquals(term, "cygwin"); return stdout_is_tty && term_supports_color; @@ -2591,7 +2527,7 @@ void ColoredPrintf(GTestColor color, const char* fmt, ...) { va_list args; va_start(args, fmt); -#if GTEST_OS_WINDOWS_MOBILE || GTEST_OS_SYMBIAN || GTEST_OS_ZOS +#if GTEST_OS_WINDOWS_MOBILE || GTEST_OS_SYMBIAN || GTEST_OS_ZOS || GTEST_OS_IOS const bool use_color = false; #else static const bool in_color_mode = @@ -2614,10 +2550,15 @@ void ColoredPrintf(GTestColor color, const char* fmt, ...) { GetConsoleScreenBufferInfo(stdout_handle, &buffer_info); const WORD old_color_attrs = buffer_info.wAttributes; + // We need to flush the stream buffers into the console before each + // SetConsoleTextAttribute call lest it affect the text that is already + // printed but has not yet reached the console. + fflush(stdout); SetConsoleTextAttribute(stdout_handle, GetColorAttribute(color) | FOREGROUND_INTENSITY); vprintf(fmt, args); + fflush(stdout); // Restores the text color. SetConsoleTextAttribute(stdout_handle, old_color_attrs); #else @@ -2628,6 +2569,23 @@ void ColoredPrintf(GTestColor color, const char* fmt, ...) { va_end(args); } +void PrintFullTestCommentIfPresent(const TestInfo& test_info) { + const char* const type_param = test_info.type_param(); + const char* const value_param = test_info.value_param(); + + if (type_param != NULL || value_param != NULL) { + printf(", where "); + if (type_param != NULL) { + printf("TypeParam = %s", type_param); + if (value_param != NULL) + printf(" and "); + } + if (value_param != NULL) { + printf("GetParam() = %s", value_param); + } + } +} + // This class implements the TestEventListener interface. // // Class PrettyUnitTestResultPrinter is copyable. @@ -2655,8 +2613,6 @@ class PrettyUnitTestResultPrinter : public TestEventListener { private: static void PrintFailedTests(const UnitTest& unit_test); - - internal::String test_case_name_; }; // Fired before each iteration of tests starts. @@ -2669,15 +2625,16 @@ void PrettyUnitTestResultPrinter::OnTestIterationStart( // Prints the filter if it's not *. This reminds the user that some // tests may be skipped. - if (!internal::String::CStringEquals(filter, kUniversalFilter)) { + if (!String::CStringEquals(filter, kUniversalFilter)) { ColoredPrintf(COLOR_YELLOW, "Note: %s filter = %s\n", GTEST_NAME_, filter); } if (internal::ShouldShard(kTestTotalShards, kTestShardIndex, false)) { + const Int32 shard_index = Int32FromEnvOrDie(kTestShardIndex, -1); ColoredPrintf(COLOR_YELLOW, - "Note: This is test shard %s of %s.\n", - internal::posix::GetEnv(kTestShardIndex), + "Note: This is test shard %d of %s.\n", + static_cast(shard_index) + 1, internal::posix::GetEnv(kTestTotalShards)); } @@ -2702,27 +2659,22 @@ void PrettyUnitTestResultPrinter::OnEnvironmentsSetUpStart( } void PrettyUnitTestResultPrinter::OnTestCaseStart(const TestCase& test_case) { - test_case_name_ = test_case.name(); - const internal::String counts = + const std::string counts = FormatCountableNoun(test_case.test_to_run_count(), "test", "tests"); ColoredPrintf(COLOR_GREEN, "[----------] "); - printf("%s from %s", counts.c_str(), test_case_name_.c_str()); - if (test_case.comment()[0] == '\0') { + printf("%s from %s", counts.c_str(), test_case.name()); + if (test_case.type_param() == NULL) { printf("\n"); } else { - printf(", where %s\n", test_case.comment()); + printf(", where TypeParam = %s\n", test_case.type_param()); } fflush(stdout); } void PrettyUnitTestResultPrinter::OnTestStart(const TestInfo& test_info) { ColoredPrintf(COLOR_GREEN, "[ RUN ] "); - PrintTestName(test_case_name_.c_str(), test_info.name()); - if (test_info.comment()[0] == '\0') { - printf("\n"); - } else { - printf(", where %s\n", test_info.comment()); - } + PrintTestName(test_info.test_case_name(), test_info.name()); + printf("\n"); fflush(stdout); } @@ -2744,7 +2696,10 @@ void PrettyUnitTestResultPrinter::OnTestEnd(const TestInfo& test_info) { } else { ColoredPrintf(COLOR_RED, "[ FAILED ] "); } - PrintTestName(test_case_name_.c_str(), test_info.name()); + PrintTestName(test_info.test_case_name(), test_info.name()); + if (test_info.result()->Failed()) + PrintFullTestCommentIfPresent(test_info); + if (GTEST_FLAG(print_time)) { printf(" (%s ms)\n", internal::StreamableToString( test_info.result()->elapsed_time()).c_str()); @@ -2757,12 +2712,11 @@ void PrettyUnitTestResultPrinter::OnTestEnd(const TestInfo& test_info) { void PrettyUnitTestResultPrinter::OnTestCaseEnd(const TestCase& test_case) { if (!GTEST_FLAG(print_time)) return; - test_case_name_ = test_case.name(); - const internal::String counts = + const std::string counts = FormatCountableNoun(test_case.test_to_run_count(), "test", "tests"); ColoredPrintf(COLOR_GREEN, "[----------] "); printf("%s from %s (%s ms total)\n\n", - counts.c_str(), test_case_name_.c_str(), + counts.c_str(), test_case.name(), internal::StreamableToString(test_case.elapsed_time()).c_str()); fflush(stdout); } @@ -2793,21 +2747,14 @@ void PrettyUnitTestResultPrinter::PrintFailedTests(const UnitTest& unit_test) { } ColoredPrintf(COLOR_RED, "[ FAILED ] "); printf("%s.%s", test_case.name(), test_info.name()); - if (test_case.comment()[0] != '\0' || - test_info.comment()[0] != '\0') { - printf(", where %s", test_case.comment()); - if (test_case.comment()[0] != '\0' && - test_info.comment()[0] != '\0') { - printf(" and "); - } - } - printf("%s\n", test_info.comment()); + PrintFullTestCommentIfPresent(test_info); + printf("\n"); } } } - void PrettyUnitTestResultPrinter::OnTestIterationEnd(const UnitTest& unit_test, - int /*iteration*/) { +void PrettyUnitTestResultPrinter::OnTestIterationEnd(const UnitTest& unit_test, + int /*iteration*/) { ColoredPrintf(COLOR_GREEN, "[==========] "); printf("%s from %s ran.", FormatTestCount(unit_test.test_to_run_count()).c_str(), @@ -2880,26 +2827,24 @@ class TestEventRepeater : public TestEventListener { // in death test child processes. bool forwarding_enabled_; // The list of listeners that receive events. - Vector listeners_; + std::vector listeners_; GTEST_DISALLOW_COPY_AND_ASSIGN_(TestEventRepeater); }; TestEventRepeater::~TestEventRepeater() { - for (int i = 0; i < listeners_.size(); i++) { - delete listeners_.GetElement(i); - } + ForEach(listeners_, Delete); } void TestEventRepeater::Append(TestEventListener *listener) { - listeners_.PushBack(listener); + listeners_.push_back(listener); } // TODO(vladl@google.com): Factor the search functionality into Vector::Find. TestEventListener* TestEventRepeater::Release(TestEventListener *listener) { - for (int i = 0; i < listeners_.size(); ++i) { - if (listeners_.GetElement(i) == listener) { - listeners_.Erase(i); + for (size_t i = 0; i < listeners_.size(); ++i) { + if (listeners_[i] == listener) { + listeners_.erase(listeners_.begin() + i); return listener; } } @@ -2912,8 +2857,8 @@ TestEventListener* TestEventRepeater::Release(TestEventListener *listener) { #define GTEST_REPEATER_METHOD_(Name, Type) \ void TestEventRepeater::Name(const Type& parameter) { \ if (forwarding_enabled_) { \ - for (int i = 0; i < listeners_.size(); i++) { \ - listeners_.GetElement(i)->Name(parameter); \ + for (size_t i = 0; i < listeners_.size(); i++) { \ + listeners_[i]->Name(parameter); \ } \ } \ } @@ -2923,7 +2868,7 @@ void TestEventRepeater::Name(const Type& parameter) { \ void TestEventRepeater::Name(const Type& parameter) { \ if (forwarding_enabled_) { \ for (int i = static_cast(listeners_.size()) - 1; i >= 0; i--) { \ - listeners_.GetElement(i)->Name(parameter); \ + listeners_[i]->Name(parameter); \ } \ } \ } @@ -2946,8 +2891,8 @@ GTEST_REVERSE_REPEATER_METHOD_(OnTestProgramEnd, UnitTest) void TestEventRepeater::OnTestIterationStart(const UnitTest& unit_test, int iteration) { if (forwarding_enabled_) { - for (int i = 0; i < listeners_.size(); i++) { - listeners_.GetElement(i)->OnTestIterationStart(unit_test, iteration); + for (size_t i = 0; i < listeners_.size(); i++) { + listeners_[i]->OnTestIterationStart(unit_test, iteration); } } } @@ -2956,7 +2901,7 @@ void TestEventRepeater::OnTestIterationEnd(const UnitTest& unit_test, int iteration) { if (forwarding_enabled_) { for (int i = static_cast(listeners_.size()) - 1; i >= 0; i--) { - listeners_.GetElement(i)->OnTestIterationEnd(unit_test, iteration); + listeners_[i]->OnTestIterationEnd(unit_test, iteration); } } } @@ -2986,18 +2931,20 @@ class XmlUnitTestResultPrinter : public EmptyTestEventListener { // is_attribute is true, the text is meant to appear as an attribute // value, and normalizable whitespace is preserved by replacing it // with character references. - static String EscapeXml(const char* str, bool is_attribute); + static std::string EscapeXml(const char* str, bool is_attribute); // Returns the given string with all characters invalid in XML removed. - static String RemoveInvalidXmlCharacters(const char* str); + static string RemoveInvalidXmlCharacters(const string& str); // Convenience wrapper around EscapeXml when str is an attribute value. - static String EscapeXmlAttribute(const char* str) { + static std::string EscapeXmlAttribute(const char* str) { return EscapeXml(str, true); } // Convenience wrapper around EscapeXml when str is not an attribute value. - static String EscapeXmlText(const char* str) { return EscapeXml(str, false); } + static std::string EscapeXmlText(const char* str) { + return EscapeXml(str, false); + } // Streams an XML CDATA section, escaping invalid CDATA sequences as needed. static void OutputXmlCDataSection(::std::ostream* stream, const char* data); @@ -3015,12 +2962,12 @@ class XmlUnitTestResultPrinter : public EmptyTestEventListener { // Produces a string representing the test properties in a result as space // delimited XML attributes based on the property key="value" pairs. - // When the String is not empty, it includes a space at the beginning, + // When the std::string is not empty, it includes a space at the beginning, // to delimit this attribute from prior attributes. - static String TestPropertiesAsXmlAttributes(const TestResult& result); + static std::string TestPropertiesAsXmlAttributes(const TestResult& result); // The output file. - const String output_file_; + const std::string output_file_; GTEST_DISALLOW_COPY_AND_ASSIGN_(XmlUnitTestResultPrinter); }; @@ -3078,7 +3025,8 @@ void XmlUnitTestResultPrinter::OnTestIterationEnd(const UnitTest& unit_test, // most invalid characters can be retained using character references. // TODO(wan): It might be nice to have a minimally invasive, human-readable // escaping scheme for invalid characters, rather than dropping them. -String XmlUnitTestResultPrinter::EscapeXml(const char* str, bool is_attribute) { +std::string XmlUnitTestResultPrinter::EscapeXml( + const char* str, bool is_attribute) { Message m; if (str != NULL) { @@ -3123,17 +3071,14 @@ String XmlUnitTestResultPrinter::EscapeXml(const char* str, bool is_attribute) { // Returns the given string with all characters invalid in XML removed. // Currently invalid characters are dropped from the string. An // alternative is to replace them with certain characters such as . or ?. -String XmlUnitTestResultPrinter::RemoveInvalidXmlCharacters(const char* str) { - char* const output = new char[strlen(str) + 1]; - char* appender = output; - for (char ch = *str; ch != '\0'; ch = *++str) - if (IsValidXmlCharacter(ch)) - *appender++ = ch; - *appender = '\0'; +string XmlUnitTestResultPrinter::RemoveInvalidXmlCharacters(const string& str) { + string output; + output.reserve(str.size()); + for (string::const_iterator it = str.begin(); it != str.end(); ++it) + if (IsValidXmlCharacter(*it)) + output.push_back(*it); - String ret_value(output); - delete[] output; - return ret_value; + return output; } // The following routines generate an XML representation of a UnitTest @@ -3152,14 +3097,37 @@ String XmlUnitTestResultPrinter::RemoveInvalidXmlCharacters(const char* str) { // // -// Formats the given time in milliseconds as seconds. The returned -// C-string is owned by this function and cannot be released by the -// caller. Calling the function again invalidates the previous -// result. -const char* FormatTimeInMillisAsSeconds(TimeInMillis ms) { - static String str; - str = (Message() << (ms/1000.0)).GetString(); - return str.c_str(); +// Formats the given time in milliseconds as seconds. +std::string FormatTimeInMillisAsSeconds(TimeInMillis ms) { + ::std::stringstream ss; + ss << ms/1000.0; + return ss.str(); +} + +// Converts the given epoch time in milliseconds to a date string in the ISO +// 8601 format, without the timezone information. +std::string FormatEpochTimeInMillisAsIso8601(TimeInMillis ms) { + // Using non-reentrant version as localtime_r is not portable. + time_t seconds = static_cast(ms / 1000); +#ifdef _MSC_VER +# pragma warning(push) // Saves the current warning state. +# pragma warning(disable:4996) // Temporarily disables warning 4996 + // (function or variable may be unsafe). + const struct tm* const time_struct = localtime(&seconds); // NOLINT +# pragma warning(pop) // Restores the warning state again. +#else + const struct tm* const time_struct = localtime(&seconds); // NOLINT +#endif + if (time_struct == NULL) + return ""; // Invalid ms value + + return String::Format("%d-%02d-%02dT%02d:%02d:%02d", // YYYY-MM-DDThh:mm:ss + time_struct->tm_year + 1900, + time_struct->tm_mon + 1, + time_struct->tm_mday, + time_struct->tm_hour, + time_struct->tm_min, + time_struct->tm_sec); } // Streams an XML CDATA section, escaping invalid CDATA sequences as needed. @@ -3170,7 +3138,8 @@ void XmlUnitTestResultPrinter::OutputXmlCDataSection(::std::ostream* stream, for (;;) { const char* const next_segment = strstr(segment, "]]>"); if (next_segment != NULL) { - stream->write(segment, next_segment - segment); + stream->write( + segment, static_cast(next_segment - segment)); *stream << "]]>]]>"); } else { @@ -3188,8 +3157,18 @@ void XmlUnitTestResultPrinter::OutputXmlTestInfo(::std::ostream* stream, const TestInfo& test_info) { const TestResult& result = *test_info.result(); *stream << " \n"; + } + const string location = internal::FormatCompilerIndependentFileLocation( + part.file_name(), part.line_number()); + const string summary = location + "\n" + part.summary(); *stream << " "; - const String message = RemoveInvalidXmlCharacters(String::Format( - "%s:%d\n%s", - part.file_name(), part.line_number(), - part.message()).c_str()); - OutputXmlCDataSection(stream, message.c_str()); + const string detail = location + "\n" + part.message(); + OutputXmlCDataSection(stream, RemoveInvalidXmlCharacters(detail).c_str()); *stream << "\n"; } } @@ -3232,11 +3212,11 @@ void XmlUnitTestResultPrinter::PrintXmlTestCase(FILE* out, test_case.disabled_test_count()); fprintf(out, "errors=\"0\" time=\"%s\">\n", - FormatTimeInMillisAsSeconds(test_case.elapsed_time())); + FormatTimeInMillisAsSeconds(test_case.elapsed_time()).c_str()); for (int i = 0; i < test_case.total_test_count(); ++i) { - StrStream stream; + ::std::stringstream stream; OutputXmlTestInfo(&stream, test_case.name(), *test_case.GetTestInfo(i)); - fprintf(out, "%s", StrStreamToString(&stream).c_str()); + fprintf(out, "%s", StringStreamToString(&stream).c_str()); } fprintf(out, " \n"); } @@ -3247,11 +3227,12 @@ void XmlUnitTestResultPrinter::PrintXmlUnitTest(FILE* out, fprintf(out, "\n"); fprintf(out, "Passed(), + StreamableToString((test_info.result())->elapsed_time()).c_str())); + } + + void OnTestPartResult(const TestPartResult& test_part_result) { + const char* file_name = test_part_result.file_name(); + if (file_name == NULL) + file_name = ""; + Send(String::Format("event=TestPartResult&file=%s&line=%d&message=", + UrlEncode(file_name).c_str(), + test_part_result.line_number())); + Send(UrlEncode(test_part_result.message()) + "\n"); + } + + private: + // Creates a client socket and connects to the server. + void MakeConnection(); + + // Closes the socket. + void CloseConnection() { + GTEST_CHECK_(sockfd_ != -1) + << "CloseConnection() can be called only when there is a connection."; + + close(sockfd_); + sockfd_ = -1; + } + + // Sends a string to the socket. + void Send(const string& message) { + GTEST_CHECK_(sockfd_ != -1) + << "Send() can be called only when there is a connection."; + + const int len = static_cast(message.length()); + if (write(sockfd_, message.c_str(), len) != len) { + GTEST_LOG_(WARNING) + << "stream_result_to: failed to stream to " + << host_name_ << ":" << port_num_; + } + } + + int sockfd_; // socket file descriptor + const string host_name_; + const string port_num_; + + GTEST_DISALLOW_COPY_AND_ASSIGN_(StreamingListener); +}; // class StreamingListener + +// Checks if str contains '=', '&', '%' or '\n' characters. If yes, +// replaces them by "%xx" where xx is their hexadecimal value. For +// example, replaces "=" with "%3D". This algorithm is O(strlen(str)) +// in both time and space -- important as the input str may contain an +// arbitrarily long test failure message and stack trace. +string StreamingListener::UrlEncode(const char* str) { + string result; + result.reserve(strlen(str) + 1); + for (char ch = *str; ch != '\0'; ch = *++str) { + switch (ch) { + case '%': + case '=': + case '&': + case '\n': + result.append(String::Format("%%%02x", static_cast(ch))); + break; + default: + result.push_back(ch); + break; + } + } + return result; +} + +void StreamingListener::MakeConnection() { + GTEST_CHECK_(sockfd_ == -1) + << "MakeConnection() can't be called when there is already a connection."; + + addrinfo hints; + memset(&hints, 0, sizeof(hints)); + hints.ai_family = AF_UNSPEC; // To allow both IPv4 and IPv6 addresses. + hints.ai_socktype = SOCK_STREAM; + addrinfo* servinfo = NULL; + + // Use the getaddrinfo() to get a linked list of IP addresses for + // the given host name. + const int error_num = getaddrinfo( + host_name_.c_str(), port_num_.c_str(), &hints, &servinfo); + if (error_num != 0) { + GTEST_LOG_(WARNING) << "stream_result_to: getaddrinfo() failed: " + << gai_strerror(error_num); + } + + // Loop through all the results and connect to the first we can. + for (addrinfo* cur_addr = servinfo; sockfd_ == -1 && cur_addr != NULL; + cur_addr = cur_addr->ai_next) { + sockfd_ = socket( + cur_addr->ai_family, cur_addr->ai_socktype, cur_addr->ai_protocol); + if (sockfd_ != -1) { + // Connect the client socket to the server socket. + if (connect(sockfd_, cur_addr->ai_addr, cur_addr->ai_addrlen) == -1) { + close(sockfd_); + sockfd_ = -1; + } + } + } + + freeaddrinfo(servinfo); // all done with this structure + + if (sockfd_ == -1) { + GTEST_LOG_(WARNING) << "stream_result_to: failed to connect to " + << host_name_ << ":" << port_num_; + } +} + +// End of class Streaming Listener +#endif // GTEST_CAN_STREAM_RESULTS__ + // Class ScopedTrace // Pushes the given source file location and message onto a per-thread // trace stack maintained by Google Test. -// L < UnitTest::mutex_ -ScopedTrace::ScopedTrace(const char* file, int line, const Message& message) { +ScopedTrace::ScopedTrace(const char* file, int line, const Message& message) + GTEST_LOCK_EXCLUDED_(&UnitTest::mutex_) { TraceInfo trace; trace.file = file; trace.line = line; @@ -3291,29 +3448,29 @@ ScopedTrace::ScopedTrace(const char* file, int line, const Message& message) { } // Pops the info pushed by the c'tor. -// L < UnitTest::mutex_ -ScopedTrace::~ScopedTrace() { +ScopedTrace::~ScopedTrace() + GTEST_LOCK_EXCLUDED_(&UnitTest::mutex_) { UnitTest::GetInstance()->PopGTestTrace(); } // class OsStackTraceGetter -// Returns the current OS stack trace as a String. Parameters: +// Returns the current OS stack trace as an std::string. Parameters: // // max_depth - the maximum number of stack frames to be included // in the trace. // skip_count - the number of top frames to be skipped; doesn't count // against max_depth. // -// L < mutex_ -// We use "L < mutex_" to denote that the function may acquire mutex_. -String OsStackTraceGetter::CurrentStackTrace(int, int) { - return String(""); +string OsStackTraceGetter::CurrentStackTrace(int /* max_depth */, + int /* skip_count */) + GTEST_LOCK_EXCLUDED_(mutex_) { + return ""; } -// L < mutex_ -void OsStackTraceGetter::UponLeavingGTest() { +void OsStackTraceGetter::UponLeavingGTest() + GTEST_LOCK_EXCLUDED_(mutex_) { } const char* const @@ -3467,6 +3624,12 @@ int UnitTest::total_test_count() const { return impl()->total_test_count(); } // Gets the number of tests that should run. int UnitTest::test_to_run_count() const { return impl()->test_to_run_count(); } +// Gets the time of the test program start, in ms from the start of the +// UNIX epoch. +internal::TimeInMillis UnitTest::start_timestamp() const { + return impl()->start_timestamp(); +} + // Gets the elapsed time, in milliseconds. internal::TimeInMillis UnitTest::elapsed_time() const { return impl()->elapsed_time(); @@ -3512,44 +3675,31 @@ Environment* UnitTest::AddEnvironment(Environment* env) { return NULL; } - impl_->environments()->PushBack(env); - impl_->environments_in_reverse_order()->PushFront(env); + impl_->environments().push_back(env); return env; } -#if GTEST_HAS_EXCEPTIONS -// A failed Google Test assertion will throw an exception of this type -// when exceptions are enabled. We derive it from std::runtime_error, -// which is for errors presumably detectable only at run time. Since -// std::runtime_error inherits from std::exception, many testing -// frameworks know how to extract and print the message inside it. -class GoogleTestFailureException : public ::std::runtime_error { - public: - explicit GoogleTestFailureException(const TestPartResult& failure) - : ::std::runtime_error(PrintTestPartResultToString(failure).c_str()) {} -}; -#endif - // Adds a TestPartResult to the current TestResult object. All Google Test // assertion macros (e.g. ASSERT_TRUE, EXPECT_EQ, etc) eventually call // this to report their results. The user code should use the // assertion macros instead of calling this directly. -// L < mutex_ -void UnitTest::AddTestPartResult(TestPartResult::Type result_type, - const char* file_name, - int line_number, - const internal::String& message, - const internal::String& os_stack_trace) { +void UnitTest::AddTestPartResult( + TestPartResult::Type result_type, + const char* file_name, + int line_number, + const std::string& message, + const std::string& os_stack_trace) + GTEST_LOCK_EXCLUDED_(mutex_) { Message msg; msg << message; internal::MutexLock lock(&mutex_); - if (impl_->gtest_trace_stack()->size() > 0) { + if (impl_->gtest_trace_stack().size() > 0) { msg << "\n" << GTEST_NAME_ << " trace:"; - for (int i = 0; i < impl_->gtest_trace_stack()->size(); i++) { - const internal::TraceInfo& trace = - impl_->gtest_trace_stack()->GetElement(i); + for (int i = static_cast(impl_->gtest_trace_stack().size()); + i > 0; --i) { + const internal::TraceInfo& trace = impl_->gtest_trace_stack()[i - 1]; msg << "\n" << internal::FormatFileLocation(trace.file, trace.line) << " " << trace.message; } @@ -3578,7 +3728,11 @@ void UnitTest::AddTestPartResult(TestPartResult::Type result_type, // the --gtest_catch_exceptions flags are specified. DebugBreak(); #else - *static_cast(NULL) = 1; + // Dereference NULL through a volatile pointer to prevent the compiler + // from removing. We use this rather than abort() or __builtin_trap() for + // portability: Symbian doesn't implement abort() well, and some debuggers + // don't correctly trap abort(). + *static_cast(NULL) = 1; #endif // GTEST_OS_WINDOWS } else if (GTEST_FLAG(throw_on_failure)) { #if GTEST_HAS_EXCEPTIONS @@ -3606,31 +3760,33 @@ void UnitTest::RecordPropertyForCurrentTest(const char* key, // We don't protect this under mutex_, as we only support calling it // from the main thread. int UnitTest::Run() { -#if GTEST_HAS_SEH - // Catch SEH-style exceptions. + // Captures the value of GTEST_FLAG(catch_exceptions). This value will be + // used for the duration of the program. + impl()->set_catch_exceptions(GTEST_FLAG(catch_exceptions)); +#if GTEST_HAS_SEH const bool in_death_test_child_process = internal::GTEST_FLAG(internal_run_death_test).length() > 0; // Either the user wants Google Test to catch exceptions thrown by the // tests or this is executing in the context of death test child // process. In either case the user does not want to see pop-up dialogs - // about crashes - they are expected.. - if (GTEST_FLAG(catch_exceptions) || in_death_test_child_process) { -#if !GTEST_OS_WINDOWS_MOBILE + // about crashes - they are expected. + if (impl()->catch_exceptions() || in_death_test_child_process) { +# if !GTEST_OS_WINDOWS_MOBILE // SetErrorMode doesn't exist on CE. SetErrorMode(SEM_FAILCRITICALERRORS | SEM_NOALIGNMENTFAULTEXCEPT | SEM_NOGPFAULTERRORBOX | SEM_NOOPENFILEERRORBOX); -#endif // !GTEST_OS_WINDOWS_MOBILE +# endif // !GTEST_OS_WINDOWS_MOBILE -#if (defined(_MSC_VER) || GTEST_OS_WINDOWS_MINGW) && !GTEST_OS_WINDOWS_MOBILE +# if (defined(_MSC_VER) || GTEST_OS_WINDOWS_MINGW) && !GTEST_OS_WINDOWS_MOBILE // Death test children can be terminated with _abort(). On Windows, // _abort() can show a dialog with a warning message. This forces the // abort message to go to stderr instead. _set_error_mode(_OUT_TO_STDERR); -#endif +# endif -#if _MSC_VER >= 1400 && !GTEST_OS_WINDOWS_MOBILE +# if _MSC_VER >= 1400 && !GTEST_OS_WINDOWS_MOBILE // In the debug version, Visual Studio pops up a separate dialog // offering a choice to debug the aborted program. We need to suppress // this dialog or it will pop up for every EXPECT/ASSERT_DEATH statement @@ -3646,22 +3802,14 @@ int UnitTest::Run() { _set_abort_behavior( 0x0, // Clear the following flags: _WRITE_ABORT_MSG | _CALL_REPORTFAULT); // pop-up window, core dump. -#endif +# endif } - - __try { - return impl_->RunAllTests(); - } __except(internal::UnitTestOptions::GTestShouldProcessSEH( - GetExceptionCode())) { - printf("Exception thrown with code 0x%x.\nFAIL\n", GetExceptionCode()); - fflush(stdout); - return 1; - } - -#else // We are on a compiler or platform that doesn't support SEH. - - return impl_->RunAllTests(); #endif // GTEST_HAS_SEH + + return internal::HandleExceptionsInMethodIfSupported( + impl(), + &internal::UnitTestImpl::RunAllTests, + "auxiliary test code (environments or event listeners)") ? 0 : 1; } // Returns the working directory when the first TEST() or TEST_F() was @@ -3672,16 +3820,16 @@ const char* UnitTest::original_working_dir() const { // Returns the TestCase object for the test that's currently running, // or NULL if no test is running. -// L < mutex_ -const TestCase* UnitTest::current_test_case() const { +const TestCase* UnitTest::current_test_case() const + GTEST_LOCK_EXCLUDED_(mutex_) { internal::MutexLock lock(&mutex_); return impl_->current_test_case(); } // Returns the TestInfo object for the test that's currently running, // or NULL if no test is running. -// L < mutex_ -const TestInfo* UnitTest::current_test_info() const { +const TestInfo* UnitTest::current_test_info() const + GTEST_LOCK_EXCLUDED_(mutex_) { internal::MutexLock lock(&mutex_); return impl_->current_test_info(); } @@ -3692,9 +3840,9 @@ int UnitTest::random_seed() const { return impl_->random_seed(); } #if GTEST_HAS_PARAM_TEST // Returns ParameterizedTestCaseRegistry object used to keep track of // value-parameterized tests and instantiate and register them. -// L < mutex_ internal::ParameterizedTestCaseRegistry& - UnitTest::parameterized_test_registry() { + UnitTest::parameterized_test_registry() + GTEST_LOCK_EXCLUDED_(mutex_) { return impl_->parameterized_test_registry(); } #endif // GTEST_HAS_PARAM_TEST @@ -3711,17 +3859,17 @@ UnitTest::~UnitTest() { // Pushes a trace defined by SCOPED_TRACE() on to the per-thread // Google Test trace stack. -// L < mutex_ -void UnitTest::PushGTestTrace(const internal::TraceInfo& trace) { +void UnitTest::PushGTestTrace(const internal::TraceInfo& trace) + GTEST_LOCK_EXCLUDED_(mutex_) { internal::MutexLock lock(&mutex_); - impl_->gtest_trace_stack()->PushFront(trace); + impl_->gtest_trace_stack().push_back(trace); } // Pops a trace from the per-thread Google Test trace stack. -// L < mutex_ -void UnitTest::PopGTestTrace() { +void UnitTest::PopGTestTrace() + GTEST_LOCK_EXCLUDED_(mutex_) { internal::MutexLock lock(&mutex_); - impl_->gtest_trace_stack()->PopFront(NULL); + impl_->gtest_trace_stack().pop_back(); } namespace internal { @@ -3729,12 +3877,12 @@ namespace internal { UnitTestImpl::UnitTestImpl(UnitTest* parent) : parent_(parent), #ifdef _MSC_VER -#pragma warning(push) // Saves the current warning state. -#pragma warning(disable:4355) // Temporarily disables warning 4355 +# pragma warning(push) // Saves the current warning state. +# pragma warning(disable:4355) // Temporarily disables warning 4355 // (using this in initializer). default_global_test_part_result_reporter_(this), default_per_thread_test_part_result_reporter_(this), -#pragma warning(pop) // Restores the warning state again. +# pragma warning(pop) // Restores the warning state again. #else default_global_test_part_result_reporter_(this), default_per_thread_test_part_result_reporter_(this), @@ -3755,22 +3903,23 @@ UnitTestImpl::UnitTestImpl(UnitTest* parent) post_flag_parse_init_performed_(false), random_seed_(0), // Will be overridden by the flag before first use. random_(0), // Will be reseeded before first use. -#if GTEST_HAS_DEATH_TEST + start_timestamp_(0), elapsed_time_(0), +#if GTEST_HAS_DEATH_TEST internal_run_death_test_flag_(NULL), - death_test_factory_(new DefaultDeathTestFactory) { -#else - elapsed_time_(0) { -#endif // GTEST_HAS_DEATH_TEST + death_test_factory_(new DefaultDeathTestFactory), +#endif + // Will be overridden by the flag before first use. + catch_exceptions_(false) { listeners()->SetDefaultResultPrinter(new PrettyUnitTestResultPrinter); } UnitTestImpl::~UnitTestImpl() { // Deletes every TestCase. - test_cases_.ForEach(internal::Delete); + ForEach(test_cases_, internal::Delete); // Deletes every Environment. - environments_.ForEach(internal::Delete); + ForEach(environments_, internal::Delete); delete os_stack_trace_getter_; } @@ -3787,7 +3936,7 @@ void UnitTestImpl::SuppressTestEventsIfInSubprocess() { // Initializes event listeners performing XML output as specified by // UnitTestOptions. Must not be called before InitGoogleTest. void UnitTestImpl::ConfigureXmlOutput() { - const String& output_format = UnitTestOptions::GetOutputFormat(); + const std::string& output_format = UnitTestOptions::GetOutputFormat(); if (output_format == "xml") { listeners()->SetDefaultXmlGenerator(new XmlUnitTestResultPrinter( UnitTestOptions::GetAbsolutePathToOutputFile().c_str())); @@ -3798,6 +3947,25 @@ void UnitTestImpl::ConfigureXmlOutput() { } } +#if GTEST_CAN_STREAM_RESULTS_ +// Initializes event listeners for streaming test results in string form. +// Must not be called before InitGoogleTest. +void UnitTestImpl::ConfigureStreamingOutput() { + const std::string& target = GTEST_FLAG(stream_result_to); + if (!target.empty()) { + const size_t pos = target.find(':'); + if (pos != std::string::npos) { + listeners()->Append(new StreamingListener(target.substr(0, pos), + target.substr(pos+1))); + } else { + printf("WARNING: unrecognized streaming target \"%s\" ignored.\n", + target.c_str()); + fflush(stdout); + } + } +} +#endif // GTEST_CAN_STREAM_RESULTS_ + // Performs initialization dependent upon flag values obtained in // ParseGoogleTestFlagsOnly. Is called from InitGoogleTest after the call to // ParseGoogleTestFlagsOnly. In case a user neglects to call InitGoogleTest @@ -3821,6 +3989,11 @@ void UnitTestImpl::PostFlagParsingInit() { // Configures listeners for XML output. This makes it possible for users // to shut down the default XML output before invoking RUN_ALL_TESTS. ConfigureXmlOutput(); + +#if GTEST_CAN_STREAM_RESULTS_ + // Configures listeners for streaming test results to the specified server. + ConfigureStreamingOutput(); +#endif // GTEST_CAN_STREAM_RESULTS_ } } @@ -3835,7 +4008,7 @@ void UnitTestImpl::PostFlagParsingInit() { class TestCaseNameIs { public: // Constructor. - explicit TestCaseNameIs(const String& name) + explicit TestCaseNameIs(const std::string& name) : name_(name) {} // Returns true iff the name of test_case matches name_. @@ -3844,7 +4017,7 @@ class TestCaseNameIs { } private: - String name_; + std::string name_; }; // Finds and returns a TestCase with the given name. If one doesn't @@ -3855,66 +4028,71 @@ class TestCaseNameIs { // Arguments: // // test_case_name: name of the test case +// type_param: the name of the test case's type parameter, or NULL if +// this is not a typed or a type-parameterized test case. // set_up_tc: pointer to the function that sets up the test case // tear_down_tc: pointer to the function that tears down the test case TestCase* UnitTestImpl::GetTestCase(const char* test_case_name, - const char* comment, + const char* type_param, Test::SetUpTestCaseFunc set_up_tc, Test::TearDownTestCaseFunc tear_down_tc) { // Can we find a TestCase with the given name? - TestCase** test_case = test_cases_.FindIf(TestCaseNameIs(test_case_name)); + const std::vector::const_iterator test_case = + std::find_if(test_cases_.begin(), test_cases_.end(), + TestCaseNameIs(test_case_name)); - if (test_case != NULL) + if (test_case != test_cases_.end()) return *test_case; // No. Let's create one. TestCase* const new_test_case = - new TestCase(test_case_name, comment, set_up_tc, tear_down_tc); + new TestCase(test_case_name, type_param, set_up_tc, tear_down_tc); // Is this a death test case? - if (internal::UnitTestOptions::MatchesFilter(String(test_case_name), + if (internal::UnitTestOptions::MatchesFilter(test_case_name, kDeathTestCaseFilter)) { // Yes. Inserts the test case after the last death test case // defined so far. This only works when the test cases haven't // been shuffled. Otherwise we may end up running a death test // after a non-death test. - test_cases_.Insert(new_test_case, ++last_death_test_case_); + ++last_death_test_case_; + test_cases_.insert(test_cases_.begin() + last_death_test_case_, + new_test_case); } else { // No. Appends to the end of the list. - test_cases_.PushBack(new_test_case); + test_cases_.push_back(new_test_case); } - test_case_indices_.PushBack(test_case_indices_.size()); + test_case_indices_.push_back(static_cast(test_case_indices_.size())); return new_test_case; } // Helpers for setting up / tearing down the given environment. They -// are for use in the Vector::ForEach() method. +// are for use in the ForEach() function. static void SetUpEnvironment(Environment* env) { env->SetUp(); } static void TearDownEnvironment(Environment* env) { env->TearDown(); } // Runs all tests in this UnitTest object, prints the result, and -// returns 0 if all tests are successful, or 1 otherwise. If any -// exception is thrown during a test on Windows, this test is -// considered to be failed, but the rest of the tests will still be -// run. (We disable exceptions on Linux and Mac OS X, so the issue -// doesn't apply there.) +// returns true if all tests are successful. If any exception is +// thrown during a test, the test is considered to be failed, but the +// rest of the tests will still be run. +// // When parameterized tests are enabled, it expands and registers // parameterized tests first in RegisterParameterizedTests(). // All other functions called from RunAllTests() may safely assume that // parameterized tests are ready to be counted and run. -int UnitTestImpl::RunAllTests() { +bool UnitTestImpl::RunAllTests() { // Makes sure InitGoogleTest() was called. if (!GTestIsInitialized()) { printf("%s", "\nThis test program did NOT call ::testing::InitGoogleTest " "before calling RUN_ALL_TESTS(). Please fix it.\n"); - return 1; + return false; } // Do not run any test if the --help flag was specified. if (g_help_flag) - return 0; + return true; // Repeats the call to the post-flag parsing initialization in case the // user didn't call InitGoogleTest. @@ -3946,7 +4124,7 @@ int UnitTestImpl::RunAllTests() { if (GTEST_FLAG(list_tests)) { // This must be called *after* FilterTests() has been called. ListTestsMatchingFilter(); - return 0; + return true; } random_seed_ = GTEST_FLAG(shuffle) ? @@ -3957,6 +4135,7 @@ int UnitTestImpl::RunAllTests() { TestEventListener* repeater = listeners()->repeater(); + start_timestamp_ = GetTimeInMillis(); repeater->OnTestProgramStart(*parent_); // How many times to repeat the tests? We don't want to repeat them @@ -3965,7 +4144,9 @@ int UnitTestImpl::RunAllTests() { // Repeats forever if the repeat count is negative. const bool forever = repeat < 0; for (int i = 0; forever || i != repeat; i++) { - ClearResult(); + // We want to preserve failures generated by ad-hoc test + // assertions executed before RUN_ALL_TESTS(). + ClearNonAdHocTestResult(); const TimeInMillis start = GetTimeInMillis(); @@ -3985,20 +4166,22 @@ int UnitTestImpl::RunAllTests() { if (has_tests_to_run) { // Sets up all environments beforehand. repeater->OnEnvironmentsSetUpStart(*parent_); - environments_.ForEach(SetUpEnvironment); + ForEach(environments_, SetUpEnvironment); repeater->OnEnvironmentsSetUpEnd(*parent_); // Runs the tests only if there was no fatal failure during global // set-up. if (!Test::HasFatalFailure()) { - for (int i = 0; i < total_test_case_count(); i++) { - GetMutableTestCase(i)->Run(); + for (int test_index = 0; test_index < total_test_case_count(); + test_index++) { + GetMutableTestCase(test_index)->Run(); } } // Tears down all environments in reverse order afterwards. repeater->OnEnvironmentsTearDownStart(*parent_); - environments_in_reverse_order_.ForEach(TearDownEnvironment); + std::for_each(environments_.rbegin(), environments_.rend(), + TearDownEnvironment); repeater->OnEnvironmentsTearDownEnd(*parent_); } @@ -4028,8 +4211,7 @@ int UnitTestImpl::RunAllTests() { repeater->OnTestProgramEnd(*parent_); - // Returns 0 if all tests passed, or 1 other wise. - return failed ? 1 : 0; + return !failed; } // Reads the GTEST_SHARD_STATUS_FILE environment variable, and creates the file @@ -4103,7 +4285,7 @@ bool ShouldShard(const char* total_shards_env, // Parses the environment variable var as an Int32. If it is unset, // returns default_val. If it is not an Int32, prints an error // and aborts. -Int32 Int32FromEnvOrDie(const char* const var, Int32 default_val) { +Int32 Int32FromEnvOrDie(const char* var, Int32 default_val) { const char* str_val = posix::GetEnv(var); if (str_val == NULL) { return default_val; @@ -4144,14 +4326,14 @@ int UnitTestImpl::FilterTests(ReactionToSharding shard_tests) { // this shard. int num_runnable_tests = 0; int num_selected_tests = 0; - for (int i = 0; i < test_cases_.size(); i++) { - TestCase* const test_case = test_cases_.GetElement(i); - const String &test_case_name = test_case->name(); + for (size_t i = 0; i < test_cases_.size(); i++) { + TestCase* const test_case = test_cases_[i]; + const std::string &test_case_name = test_case->name(); test_case->set_should_run(false); - for (int j = 0; j < test_case->test_info_list().size(); j++) { - TestInfo* const test_info = test_case->test_info_list().GetElement(j); - const String test_name(test_info->name()); + for (size_t j = 0; j < test_case->test_info_list().size(); j++) { + TestInfo* const test_info = test_case->test_info_list()[j]; + const std::string test_name(test_info->name()); // A test is disabled if test case name or test name matches // kDisableTestFilter. const bool is_disabled = @@ -4159,12 +4341,12 @@ int UnitTestImpl::FilterTests(ReactionToSharding shard_tests) { kDisableTestFilter) || internal::UnitTestOptions::MatchesFilter(test_name, kDisableTestFilter); - test_info->impl()->set_is_disabled(is_disabled); + test_info->is_disabled_ = is_disabled; const bool matches_filter = internal::UnitTestOptions::FilterMatchesTest(test_case_name, test_name); - test_info->impl()->set_matches_filter(matches_filter); + test_info->matches_filter_ = matches_filter; const bool is_runnable = (GTEST_FLAG(also_run_disabled_tests) || !is_disabled) && @@ -4178,7 +4360,7 @@ int UnitTestImpl::FilterTests(ReactionToSharding shard_tests) { num_runnable_tests += is_runnable; num_selected_tests += is_selected; - test_info->impl()->set_should_run(is_selected); + test_info->should_run_ = is_selected; test_case->set_should_run(test_case->should_run() || is_selected); } } @@ -4187,14 +4369,14 @@ int UnitTestImpl::FilterTests(ReactionToSharding shard_tests) { // Prints the names of the tests matching the user-specified filter flag. void UnitTestImpl::ListTestsMatchingFilter() { - for (int i = 0; i < test_cases_.size(); i++) { - const TestCase* const test_case = test_cases_.GetElement(i); + for (size_t i = 0; i < test_cases_.size(); i++) { + const TestCase* const test_case = test_cases_[i]; bool printed_test_case_name = false; - for (int j = 0; j < test_case->test_info_list().size(); j++) { + for (size_t j = 0; j < test_case->test_info_list().size(); j++) { const TestInfo* const test_info = - test_case->test_info_list().GetElement(j); - if (test_info->matches_filter()) { + test_case->test_info_list()[j]; + if (test_info->matches_filter_) { if (!printed_test_case_name) { printed_test_case_name = true; printf("%s.\n", test_case->name()); @@ -4234,62 +4416,36 @@ OsStackTraceGetterInterface* UnitTestImpl::os_stack_trace_getter() { // the TestResult for the ad hoc test if no test is running. TestResult* UnitTestImpl::current_test_result() { return current_test_info_ ? - current_test_info_->impl()->result() : &ad_hoc_test_result_; + &(current_test_info_->result_) : &ad_hoc_test_result_; } // Shuffles all test cases, and the tests within each test case, // making sure that death tests are still run first. void UnitTestImpl::ShuffleTests() { // Shuffles the death test cases. - test_case_indices_.ShuffleRange(random(), 0, last_death_test_case_ + 1); + ShuffleRange(random(), 0, last_death_test_case_ + 1, &test_case_indices_); // Shuffles the non-death test cases. - test_case_indices_.ShuffleRange(random(), last_death_test_case_ + 1, - test_cases_.size()); + ShuffleRange(random(), last_death_test_case_ + 1, + static_cast(test_cases_.size()), &test_case_indices_); // Shuffles the tests inside each test case. - for (int i = 0; i < test_cases_.size(); i++) { - test_cases_.GetElement(i)->ShuffleTests(random()); + for (size_t i = 0; i < test_cases_.size(); i++) { + test_cases_[i]->ShuffleTests(random()); } } // Restores the test cases and tests to their order before the first shuffle. void UnitTestImpl::UnshuffleTests() { - for (int i = 0; i < test_cases_.size(); i++) { + for (size_t i = 0; i < test_cases_.size(); i++) { // Unshuffles the tests in each test case. - test_cases_.GetElement(i)->UnshuffleTests(); + test_cases_[i]->UnshuffleTests(); // Resets the index of each test case. - test_case_indices_.GetMutableElement(i) = i; + test_case_indices_[i] = static_cast(i); } } -// TestInfoImpl constructor. The new instance assumes ownership of the test -// factory object. -TestInfoImpl::TestInfoImpl(TestInfo* parent, - const char* test_case_name, - const char* name, - const char* test_case_comment, - const char* comment, - TypeId fixture_class_id, - internal::TestFactoryBase* factory) : - parent_(parent), - test_case_name_(String(test_case_name)), - name_(String(name)), - test_case_comment_(String(test_case_comment)), - comment_(String(comment)), - fixture_class_id_(fixture_class_id), - should_run_(false), - is_disabled_(false), - matches_filter_(false), - factory_(factory) { -} - -// TestInfoImpl destructor. -TestInfoImpl::~TestInfoImpl() { - delete factory_; -} - -// Returns the current OS stack trace as a String. +// Returns the current OS stack trace as an std::string. // // The maximum number of stack frames to be included is specified by // the gtest_stack_trace_depth flag. The skip_count parameter @@ -4299,15 +4455,15 @@ TestInfoImpl::~TestInfoImpl() { // For example, if Foo() calls Bar(), which in turn calls // GetCurrentOsStackTraceExceptTop(..., 1), Foo() will be included in // the trace but Bar() and GetCurrentOsStackTraceExceptTop() won't. -String GetCurrentOsStackTraceExceptTop(UnitTest* /*unit_test*/, - int skip_count) { +std::string GetCurrentOsStackTraceExceptTop(UnitTest* /*unit_test*/, + int skip_count) { // We pass skip_count + 1 to skip this wrapper function in addition // to what the user really wants to skip. return GetUnitTestImpl()->CurrentOsStackTraceExceptTop(skip_count + 1); } -// Used by the GTEST_HIDE_UNREACHABLE_CODE_ macro to suppress unreachable -// code warnings. +// Used by the GTEST_SUPPRESS_UNREACHABLE_CODE_WARNING_BELOW_ macro to +// suppress unreachable code warnings. namespace { class ClassUniqueToAlwaysTrue {}; } @@ -4324,6 +4480,18 @@ bool AlwaysTrue() { return true; } +// If *pstr starts with the given prefix, modifies *pstr to be right +// past the prefix and returns true; otherwise leaves *pstr unchanged +// and returns false. None of pstr, *pstr, and prefix can be NULL. +bool SkipPrefix(const char* prefix, const char** pstr) { + const size_t prefix_len = strlen(prefix); + if (strncmp(*pstr, prefix, prefix_len) == 0) { + *pstr += prefix_len; + return true; + } + return false; +} + // Parses a string as a command line flag. The string should have // the format "--flag=value". When def_optional is true, the "=value" // part can be omitted. @@ -4336,7 +4504,7 @@ const char* ParseFlagValue(const char* str, if (str == NULL || flag == NULL) return NULL; // The flag must start with "--" followed by GTEST_FLAG_PREFIX_. - const String flag_str = String::Format("--%s%s", GTEST_FLAG_PREFIX_, flag); + const std::string flag_str = std::string("--") + GTEST_FLAG_PREFIX_ + flag; const size_t flag_len = flag_str.length(); if (strncmp(str, flag_str.c_str(), flag_len) != 0) return NULL; @@ -4401,7 +4569,7 @@ bool ParseInt32Flag(const char* str, const char* flag, Int32* value) { // // On success, stores the value of the flag in *value, and returns // true. On failure, returns false without changing *value. -bool ParseStringFlag(const char* str, const char* flag, String* value) { +bool ParseStringFlag(const char* str, const char* flag, std::string* value) { // Gets the value of the flag as a string. const char* const value_str = ParseFlagValue(str, flag, false); @@ -4413,6 +4581,21 @@ bool ParseStringFlag(const char* str, const char* flag, String* value) { return true; } +// Determines whether a string has a prefix that Google Test uses for its +// flags, i.e., starts with GTEST_FLAG_PREFIX_ or GTEST_FLAG_PREFIX_DASH_. +// If Google Test detects that a command line flag has its prefix but is not +// recognized, it will print its help message. Flags starting with +// GTEST_INTERNAL_PREFIX_ followed by "internal_" are considered Google Test +// internal flags and do not trigger the help message. +static bool HasGoogleTestFlagPrefix(const char* str) { + return (SkipPrefix("--", &str) || + SkipPrefix("-", &str) || + SkipPrefix("/", &str)) && + !SkipPrefix(GTEST_FLAG_PREFIX_ "internal_", &str) && + (SkipPrefix(GTEST_FLAG_PREFIX_, &str) || + SkipPrefix(GTEST_FLAG_PREFIX_DASH_, &str)); +} + // Prints a string containing code-encoded text. The following escape // sequences can be used in the string to control the text color: // @@ -4438,7 +4621,7 @@ static void PrintColorEncoded(const char* str) { return; } - ColoredPrintf(color, "%s", String(str, p - str).c_str()); + ColoredPrintf(color, "%s", std::string(str, p).c_str()); const char ch = p[1]; str = p + 2; @@ -4492,6 +4675,10 @@ static const char kColorEncodedHelpMessage[] = GTEST_PATH_SEP_ "@Y|@G:@YFILE_PATH]@D\n" " Generate an XML report in the given directory or with the given file\n" " name. @YFILE_PATH@D defaults to @Gtest_details.xml@D.\n" +#if GTEST_CAN_STREAM_RESULTS_ +" @G--" GTEST_FLAG_PREFIX_ "stream_result_to=@YHOST@G:@YPORT@D\n" +" Stream test results to the given server.\n" +#endif // GTEST_CAN_STREAM_RESULTS_ "\n" "Assertion Behavior:\n" #if GTEST_HAS_DEATH_TEST && !GTEST_OS_WINDOWS @@ -4502,10 +4689,9 @@ static const char kColorEncodedHelpMessage[] = " Turn assertion failures into debugger break-points.\n" " @G--" GTEST_FLAG_PREFIX_ "throw_on_failure@D\n" " Turn assertion failures into C++ exceptions.\n" -#if GTEST_OS_WINDOWS -" @G--" GTEST_FLAG_PREFIX_ "catch_exceptions@D\n" -" Suppress pop-ups caused by exceptions.\n" -#endif // GTEST_OS_WINDOWS +" @G--" GTEST_FLAG_PREFIX_ "catch_exceptions=0@D\n" +" Do not report exceptions as test failures. Instead, allow them\n" +" to crash the program or throw a pop-up (on Windows).\n" "\n" "Except for @G--" GTEST_FLAG_PREFIX_ "list_tests@D, you can alternatively set " "the corresponding\n" @@ -4525,7 +4711,7 @@ static const char kColorEncodedHelpMessage[] = template void ParseGoogleTestFlagsOnlyImpl(int* argc, CharType** argv) { for (int i = 1; i < *argc; i++) { - const String arg_string = StreamableToString(argv[i]); + const std::string arg_string = StreamableToString(argv[i]); const char* const arg = arg_string.c_str(); using internal::ParseBoolFlag; @@ -4553,7 +4739,12 @@ void ParseGoogleTestFlagsOnlyImpl(int* argc, CharType** argv) { ParseInt32Flag(arg, kRandomSeedFlag, >EST_FLAG(random_seed)) || ParseInt32Flag(arg, kRepeatFlag, >EST_FLAG(repeat)) || ParseBoolFlag(arg, kShuffleFlag, >EST_FLAG(shuffle)) || - ParseBoolFlag(arg, kThrowOnFailureFlag, >EST_FLAG(throw_on_failure)) + ParseInt32Flag(arg, kStackTraceDepthFlag, + >EST_FLAG(stack_trace_depth)) || + ParseStringFlag(arg, kStreamResultToFlag, + >EST_FLAG(stream_result_to)) || + ParseBoolFlag(arg, kThrowOnFailureFlag, + >EST_FLAG(throw_on_failure)) ) { // Yes. Shift the remainder of the argv list left by one. Note // that argv has (*argc + 1) elements, the last one always being @@ -4570,7 +4761,10 @@ void ParseGoogleTestFlagsOnlyImpl(int* argc, CharType** argv) { // an element. i--; } else if (arg_string == "--help" || arg_string == "-h" || - arg_string == "-?" || arg_string == "/?") { + arg_string == "-?" || arg_string == "/?" || + HasGoogleTestFlagPrefix(arg)) { + // Both help flag and unrecognized Google Test flags (excluding + // internal ones) trigger help display. g_help_flag = true; } } @@ -4608,10 +4802,12 @@ void InitGoogleTestImpl(int* argc, CharType** argv) { internal::g_executable_path = internal::StreamableToString(argv[0]); #if GTEST_HAS_DEATH_TEST + g_argvs.clear(); for (int i = 0; i != *argc; i++) { g_argvs.push_back(StreamableToString(argv[i])); } + #endif // GTEST_HAS_DEATH_TEST ParseGoogleTestFlagsOnly(argc, argv); diff --git a/cpp/thirdparty/protobuf-2.5.0/gtest/src/gtest_main.cc b/cpp/thirdparty/protobuf-2.5.0/gtest/src/gtest_main.cc new file mode 100644 index 000000000..f30282255 --- /dev/null +++ b/cpp/thirdparty/protobuf-2.5.0/gtest/src/gtest_main.cc @@ -0,0 +1,38 @@ +// Copyright 2006, Google Inc. +// All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +#include + +#include "gtest/gtest.h" + +GTEST_API_ int main(int argc, char **argv) { + printf("Running main() from gtest_main.cc\n"); + testing::InitGoogleTest(&argc, argv); + return RUN_ALL_TESTS(); +} diff --git a/cpp/thirdparty/protobuf-2.5.0/gtest/test/gtest-death-test_ex_test.cc b/cpp/thirdparty/protobuf-2.5.0/gtest/test/gtest-death-test_ex_test.cc new file mode 100644 index 000000000..b50a13d5e --- /dev/null +++ b/cpp/thirdparty/protobuf-2.5.0/gtest/test/gtest-death-test_ex_test.cc @@ -0,0 +1,93 @@ +// Copyright 2010, Google Inc. +// All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Author: vladl@google.com (Vlad Losev) +// +// Tests that verify interaction of exceptions and death tests. + +#include "gtest/gtest-death-test.h" +#include "gtest/gtest.h" + +#if GTEST_HAS_DEATH_TEST + +# if GTEST_HAS_SEH +# include // For RaiseException(). +# endif + +# include "gtest/gtest-spi.h" + +# if GTEST_HAS_EXCEPTIONS + +# include // For std::exception. + +// Tests that death tests report thrown exceptions as failures and that the +// exceptions do not escape death test macros. +TEST(CxxExceptionDeathTest, ExceptionIsFailure) { + try { + EXPECT_NONFATAL_FAILURE(EXPECT_DEATH(throw 1, ""), "threw an exception"); + } catch (...) { // NOLINT + FAIL() << "An exception escaped a death test macro invocation " + << "with catch_exceptions " + << (testing::GTEST_FLAG(catch_exceptions) ? "enabled" : "disabled"); + } +} + +class TestException : public std::exception { + public: + virtual const char* what() const throw() { return "exceptional message"; } +}; + +TEST(CxxExceptionDeathTest, PrintsMessageForStdExceptions) { + // Verifies that the exception message is quoted in the failure text. + EXPECT_NONFATAL_FAILURE(EXPECT_DEATH(throw TestException(), ""), + "exceptional message"); + // Verifies that the location is mentioned in the failure text. + EXPECT_NONFATAL_FAILURE(EXPECT_DEATH(throw TestException(), ""), + "gtest-death-test_ex_test.cc"); +} +# endif // GTEST_HAS_EXCEPTIONS + +# if GTEST_HAS_SEH +// Tests that enabling interception of SEH exceptions with the +// catch_exceptions flag does not interfere with SEH exceptions being +// treated as death by death tests. +TEST(SehExceptionDeasTest, CatchExceptionsDoesNotInterfere) { + EXPECT_DEATH(RaiseException(42, 0x0, 0, NULL), "") + << "with catch_exceptions " + << (testing::GTEST_FLAG(catch_exceptions) ? "enabled" : "disabled"); +} +# endif + +#endif // GTEST_HAS_DEATH_TEST + +int main(int argc, char** argv) { + testing::InitGoogleTest(&argc, argv); + testing::GTEST_FLAG(catch_exceptions) = GTEST_ENABLE_CATCH_EXCEPTIONS_ != 0; + return RUN_ALL_TESTS(); +} diff --git a/cpp/thirdparty/protobuf-2.3.0/gtest/test/gtest-death-test_test.cc b/cpp/thirdparty/protobuf-2.5.0/gtest/test/gtest-death-test_test.cc similarity index 79% rename from cpp/thirdparty/protobuf-2.3.0/gtest/test/gtest-death-test_test.cc rename to cpp/thirdparty/protobuf-2.5.0/gtest/test/gtest-death-test_test.cc index 288c70a0f..e42c01362 100644 --- a/cpp/thirdparty/protobuf-2.3.0/gtest/test/gtest-death-test_test.cc +++ b/cpp/thirdparty/protobuf-2.5.0/gtest/test/gtest-death-test_test.cc @@ -31,37 +31,41 @@ // // Tests for death tests. -#include -#include -#include +#include "gtest/gtest-death-test.h" +#include "gtest/gtest.h" +#include "gtest/internal/gtest-filepath.h" using testing::internal::AlwaysFalse; using testing::internal::AlwaysTrue; #if GTEST_HAS_DEATH_TEST -#if GTEST_OS_WINDOWS -#include // For chdir(). -#else -#include -#include // For waitpid. -#include // For std::numeric_limits. -#endif // GTEST_OS_WINDOWS +# if GTEST_OS_WINDOWS +# include // For chdir(). +# else +# include +# include // For waitpid. +# include // For std::numeric_limits. +# endif // GTEST_OS_WINDOWS + +# include +# include +# include -#include -#include -#include +# if GTEST_OS_LINUX +# include +# endif // GTEST_OS_LINUX -#include +# include "gtest/gtest-spi.h" // Indicates that this translation unit is part of Google Test's // implementation. It must come before gtest-internal-inl.h is // included, or there will be a compiler error. This trick is to // prevent a user from accidentally including gtest-internal-inl.h in // his code. -#define GTEST_IMPLEMENTATION_ 1 -#include "src/gtest-internal-inl.h" -#undef GTEST_IMPLEMENTATION_ +# define GTEST_IMPLEMENTATION_ 1 +# include "src/gtest-internal-inl.h" +# undef GTEST_IMPLEMENTATION_ namespace posix = ::testing::internal::posix; @@ -71,8 +75,8 @@ using testing::internal::DeathTestFactory; using testing::internal::FilePath; using testing::internal::GetLastErrnoDescription; using testing::internal::GetUnitTestImpl; +using testing::internal::InDeathTestChild; using testing::internal::ParseNaturalNumber; -using testing::internal::String; namespace testing { namespace internal { @@ -103,6 +107,26 @@ class ReplaceDeathTestFactory { } // namespace internal } // namespace testing +void DieWithMessage(const ::std::string& message) { + fprintf(stderr, "%s", message.c_str()); + fflush(stderr); // Make sure the text is printed before the process exits. + + // We call _exit() instead of exit(), as the former is a direct + // system call and thus safer in the presence of threads. exit() + // will invoke user-defined exit-hooks, which may do dangerous + // things that conflict with death tests. + // + // Some compilers can recognize that _exit() never returns and issue the + // 'unreachable code' warning for code following this function, unless + // fooled by a fake condition. + if (AlwaysTrue()) + _exit(1); +} + +void DieInside(const ::std::string& function) { + DieWithMessage("death inside " + function + "()."); +} + // Tests that death tests work. class TestForDeathTest : public testing::Test { @@ -114,23 +138,12 @@ class TestForDeathTest : public testing::Test { } // A static member function that's expected to die. - static void StaticMemberFunction() { - fprintf(stderr, "%s", "death inside StaticMemberFunction()."); - fflush(stderr); - // We call _exit() instead of exit(), as the former is a direct - // system call and thus safer in the presence of threads. exit() - // will invoke user-defined exit-hooks, which may do dangerous - // things that conflict with death tests. - _exit(1); - } + static void StaticMemberFunction() { DieInside("StaticMemberFunction"); } // A method of the test fixture that may die. void MemberFunction() { - if (should_die_) { - fprintf(stderr, "%s", "death inside MemberFunction()."); - fflush(stderr); - _exit(1); - } + if (should_die_) + DieInside("MemberFunction"); } // True iff MemberFunction() should die. @@ -145,9 +158,8 @@ class MayDie { // A member function that may die. void MemberFunction() const { - if (should_die_) { - GTEST_LOG_(FATAL) << "death inside MayDie::MemberFunction()."; - } + if (should_die_) + DieInside("MayDie::MemberFunction"); } private: @@ -156,27 +168,24 @@ class MayDie { }; // A global function that's expected to die. -void GlobalFunction() { - GTEST_LOG_(FATAL) << "death inside GlobalFunction()."; -} +void GlobalFunction() { DieInside("GlobalFunction"); } // A non-void function that's expected to die. int NonVoidFunction() { - GTEST_LOG_(FATAL) << "death inside NonVoidFunction()."; + DieInside("NonVoidFunction"); return 1; } // A unary function that may die. void DieIf(bool should_die) { - if (should_die) { - GTEST_LOG_(FATAL) << "death inside DieIf()."; - } + if (should_die) + DieInside("DieIf"); } // A binary function that may die. bool DieIfLessThan(int x, int y) { if (x < y) { - GTEST_LOG_(FATAL) << "death inside DieIfLessThan()."; + DieInside("DieIfLessThan"); } return true; } @@ -190,13 +199,17 @@ void DeathTestSubroutine() { // Death in dbg, not opt. int DieInDebugElse12(int* sideeffect) { if (sideeffect) *sideeffect = 12; -#ifndef NDEBUG - GTEST_LOG_(FATAL) << "debug death inside DieInDebugElse12()"; -#endif // NDEBUG + +# ifndef NDEBUG + + DieInside("DieInDebugElse12"); + +# endif // NDEBUG + return 12; } -#if GTEST_OS_WINDOWS +# if GTEST_OS_WINDOWS // Tests the ExitedWithCode predicate. TEST(ExitStatusPredicateTest, ExitedWithCode) { @@ -209,7 +222,7 @@ TEST(ExitStatusPredicateTest, ExitedWithCode) { EXPECT_FALSE(testing::ExitedWithCode(1)(0)); } -#else +# else // Returns the exit status of a process that calls _exit(2) with a // given exit code. This is a helper function for the @@ -268,7 +281,7 @@ TEST(ExitStatusPredicateTest, KilledBySignal) { EXPECT_FALSE(pred_kill(status_segv)); } -#endif // GTEST_OS_WINDOWS +# endif // GTEST_OS_WINDOWS // Tests that the death test macros expand to code which may or may not // be followed by operator<<, and that in either case the complete text @@ -300,7 +313,7 @@ void DieWithEmbeddedNul() { _exit(1); } -#if GTEST_USES_PCRE +# if GTEST_USES_PCRE // Tests that EXPECT_DEATH and ASSERT_DEATH work when the error // message has a NUL character in it. TEST_F(TestForDeathTest, EmbeddedNulInMessage) { @@ -309,17 +322,17 @@ TEST_F(TestForDeathTest, EmbeddedNulInMessage) { EXPECT_DEATH(DieWithEmbeddedNul(), "my null world"); ASSERT_DEATH(DieWithEmbeddedNul(), "my null world"); } -#endif // GTEST_USES_PCRE +# endif // GTEST_USES_PCRE // Tests that death test macros expand to code which interacts well with switch // statements. TEST_F(TestForDeathTest, SwitchStatement) { // Microsoft compiler usually complains about switch statements without // case labels. We suppress that warning for this test. -#ifdef _MSC_VER -#pragma warning(push) -#pragma warning(disable: 4065) -#endif // _MSC_VER +# ifdef _MSC_VER +# pragma warning(push) +# pragma warning(disable: 4065) +# endif // _MSC_VER switch (0) default: @@ -329,9 +342,9 @@ TEST_F(TestForDeathTest, SwitchStatement) { case 0: EXPECT_DEATH(_exit(1), "") << "exit in switch case"; -#ifdef _MSC_VER -#pragma warning(pop) -#endif // _MSC_VER +# ifdef _MSC_VER +# pragma warning(pop) +# endif // _MSC_VER } // Tests that a static member function can be used in a "fast" style @@ -363,6 +376,58 @@ TEST_F(TestForDeathTest, FastDeathTestInChangedDir) { ASSERT_DEATH(_exit(1), ""); } +# if GTEST_OS_LINUX +void SigprofAction(int, siginfo_t*, void*) { /* no op */ } + +// Sets SIGPROF action and ITIMER_PROF timer (interval: 1ms). +void SetSigprofActionAndTimer() { + struct itimerval timer; + timer.it_interval.tv_sec = 0; + timer.it_interval.tv_usec = 1; + timer.it_value = timer.it_interval; + ASSERT_EQ(0, setitimer(ITIMER_PROF, &timer, NULL)); + struct sigaction signal_action; + memset(&signal_action, 0, sizeof(signal_action)); + sigemptyset(&signal_action.sa_mask); + signal_action.sa_sigaction = SigprofAction; + signal_action.sa_flags = SA_RESTART | SA_SIGINFO; + ASSERT_EQ(0, sigaction(SIGPROF, &signal_action, NULL)); +} + +// Disables ITIMER_PROF timer and ignores SIGPROF signal. +void DisableSigprofActionAndTimer(struct sigaction* old_signal_action) { + struct itimerval timer; + timer.it_interval.tv_sec = 0; + timer.it_interval.tv_usec = 0; + timer.it_value = timer.it_interval; + ASSERT_EQ(0, setitimer(ITIMER_PROF, &timer, NULL)); + struct sigaction signal_action; + memset(&signal_action, 0, sizeof(signal_action)); + sigemptyset(&signal_action.sa_mask); + signal_action.sa_handler = SIG_IGN; + ASSERT_EQ(0, sigaction(SIGPROF, &signal_action, old_signal_action)); +} + +// Tests that death tests work when SIGPROF handler and timer are set. +TEST_F(TestForDeathTest, FastSigprofActionSet) { + testing::GTEST_FLAG(death_test_style) = "fast"; + SetSigprofActionAndTimer(); + EXPECT_DEATH(_exit(1), ""); + struct sigaction old_signal_action; + DisableSigprofActionAndTimer(&old_signal_action); + EXPECT_TRUE(old_signal_action.sa_sigaction == SigprofAction); +} + +TEST_F(TestForDeathTest, ThreadSafeSigprofActionSet) { + testing::GTEST_FLAG(death_test_style) = "threadsafe"; + SetSigprofActionAndTimer(); + EXPECT_DEATH(_exit(1), ""); + struct sigaction old_signal_action; + DisableSigprofActionAndTimer(&old_signal_action); + EXPECT_TRUE(old_signal_action.sa_sigaction == SigprofAction); +} +# endif // GTEST_OS_LINUX + // Repeats a representative sample of death tests in the "threadsafe" style: TEST_F(TestForDeathTest, StaticMemberFunctionThreadsafeStyle) { @@ -410,7 +475,7 @@ void SetPthreadFlag() { } // namespace -#if GTEST_HAS_CLONE +# if GTEST_HAS_CLONE && GTEST_HAS_PTHREAD TEST_F(TestForDeathTest, DoesNotExecuteAtforkHooks) { if (!testing::GTEST_FLAG(death_test_use_fork)) { @@ -422,7 +487,7 @@ TEST_F(TestForDeathTest, DoesNotExecuteAtforkHooks) { } } -#endif // GTEST_HAS_CLONE +# endif // GTEST_HAS_CLONE && GTEST_HAS_PTHREAD // Tests that a method of another class can be used in a death test. TEST_F(TestForDeathTest, MethodOfAnotherClass) { @@ -444,15 +509,15 @@ TEST_F(TestForDeathTest, AcceptsAnythingConvertibleToRE) { const testing::internal::RE regex(regex_c_str); EXPECT_DEATH(GlobalFunction(), regex); -#if GTEST_HAS_GLOBAL_STRING +# if GTEST_HAS_GLOBAL_STRING + const string regex_str(regex_c_str); EXPECT_DEATH(GlobalFunction(), regex_str); -#endif // GTEST_HAS_GLOBAL_STRING -#if GTEST_HAS_STD_STRING +# endif // GTEST_HAS_GLOBAL_STRING + const ::std::string regex_std_str(regex_c_str); EXPECT_DEATH(GlobalFunction(), regex_std_str); -#endif // GTEST_HAS_STD_STRING } // Tests that a non-void function can be used in a death test. @@ -540,17 +605,20 @@ TEST_F(TestForDeathTest, SingleEvaluation) { } // Tests that run-away death tests are reported as failures. -TEST_F(TestForDeathTest, Runaway) { +TEST_F(TestForDeathTest, RunawayIsFailure) { EXPECT_NONFATAL_FAILURE(EXPECT_DEATH(static_cast(0), "Foo"), "failed to die."); +} +// Tests that death tests report executing 'return' in the statement as +// failure. +TEST_F(TestForDeathTest, ReturnIsFailure) { EXPECT_FATAL_FAILURE(ASSERT_DEATH(return, "Bar"), "illegal return in test statement."); } - -// Tests that EXPECT_DEBUG_DEATH works as expected, -// that is, in debug mode, it: +// Tests that EXPECT_DEBUG_DEATH works as expected, that is, you can stream a +// message to it, and in debug mode it: // 1. Asserts on death. // 2. Has no side effect. // @@ -559,45 +627,49 @@ TEST_F(TestForDeathTest, Runaway) { TEST_F(TestForDeathTest, TestExpectDebugDeath) { int sideeffect = 0; - EXPECT_DEBUG_DEATH(DieInDebugElse12(&sideeffect), - "death.*DieInDebugElse12"); + EXPECT_DEBUG_DEATH(DieInDebugElse12(&sideeffect), "death.*DieInDebugElse12") + << "Must accept a streamed message"; + +# ifdef NDEBUG -#ifdef NDEBUG // Checks that the assignment occurs in opt mode (sideeffect). EXPECT_EQ(12, sideeffect); -#else + +# else + // Checks that the assignment does not occur in dbg mode (no sideeffect). EXPECT_EQ(0, sideeffect); -#endif + +# endif } -// Tests that ASSERT_DEBUG_DEATH works as expected -// In debug mode: -// 1. Asserts on debug death. +// Tests that ASSERT_DEBUG_DEATH works as expected, that is, you can stream a +// message to it, and in debug mode it: +// 1. Asserts on death. // 2. Has no side effect. // -// In opt mode: -// 1. Has side effects and returns the expected value (12). +// And in opt mode, it: +// 1. Has side effects but does not assert. TEST_F(TestForDeathTest, TestAssertDebugDeath) { int sideeffect = 0; - ASSERT_DEBUG_DEATH({ // NOLINT - // Tests that the return value is 12 in opt mode. - EXPECT_EQ(12, DieInDebugElse12(&sideeffect)); - // Tests that the side effect occurred in opt mode. - EXPECT_EQ(12, sideeffect); - }, "death.*DieInDebugElse12"); + ASSERT_DEBUG_DEATH(DieInDebugElse12(&sideeffect), "death.*DieInDebugElse12") + << "Must accept a streamed message"; + +# ifdef NDEBUG -#ifdef NDEBUG // Checks that the assignment occurs in opt mode (sideeffect). EXPECT_EQ(12, sideeffect); -#else + +# else + // Checks that the assignment does not occur in dbg mode (no sideeffect). EXPECT_EQ(0, sideeffect); -#endif + +# endif } -#ifndef NDEBUG +# ifndef NDEBUG void ExpectDebugDeathHelper(bool* aborted) { *aborted = true; @@ -605,7 +677,7 @@ void ExpectDebugDeathHelper(bool* aborted) { *aborted = false; } -#if GTEST_OS_WINDOWS +# if GTEST_OS_WINDOWS TEST(PopUpDeathTest, DoesNotShowPopUpOnAbort) { printf("This test should be considered failing if it shows " "any pop-up dialogs.\n"); @@ -616,18 +688,7 @@ TEST(PopUpDeathTest, DoesNotShowPopUpOnAbort) { abort(); }, ""); } - -TEST(PopUpDeathTest, DoesNotShowPopUpOnThrow) { - printf("This test should be considered failing if it shows " - "any pop-up dialogs.\n"); - fflush(stdout); - - EXPECT_DEATH({ - testing::GTEST_FLAG(catch_exceptions) = false; - throw 1; - }, ""); -} -#endif // GTEST_OS_WINDOWS +# endif // GTEST_OS_WINDOWS // Tests that EXPECT_DEBUG_DEATH in debug mode does not abort // the function. @@ -652,49 +713,35 @@ TEST_F(TestForDeathTest, AssertDebugDeathAborts) { EXPECT_TRUE(aborted); } -#endif // _NDEBUG +# endif // _NDEBUG // Tests the *_EXIT family of macros, using a variety of predicates. static void TestExitMacros() { EXPECT_EXIT(_exit(1), testing::ExitedWithCode(1), ""); ASSERT_EXIT(_exit(42), testing::ExitedWithCode(42), ""); -#if GTEST_OS_WINDOWS && !GTEST_OS_WINDOWS_MINGW - // MinGW (as of MinGW 5.1.6 and MSYS 1.0.11) does not tag crashed - // processes with non-zero exit code and does not honor calls to - // SetErrorMode(SEM_NOGPFAULTERRORBOX) that are supposed to suppress - // error pop-ups. - EXPECT_EXIT({ - testing::GTEST_FLAG(catch_exceptions) = false; - *static_cast(NULL) = 1; - }, testing::ExitedWithCode(0xC0000005), "") << "foo"; +# if GTEST_OS_WINDOWS - EXPECT_NONFATAL_FAILURE({ // NOLINT - EXPECT_EXIT({ - testing::GTEST_FLAG(catch_exceptions) = false; - *static_cast(NULL) = 1; - }, testing::ExitedWithCode(0), "") << "This failure is expected."; - }, "This failure is expected."); -#endif // GTEST_OS_WINDOWS && !GTEST_OS_WINDOWS_MINGW - -#if GTEST_OS_WINDOWS // Of all signals effects on the process exit code, only those of SIGABRT // are documented on Windows. // See http://msdn.microsoft.com/en-us/library/dwwzkt4c(VS.71).aspx. - EXPECT_EXIT(raise(SIGABRT), testing::ExitedWithCode(3), ""); -#else + EXPECT_EXIT(raise(SIGABRT), testing::ExitedWithCode(3), "") << "b_ar"; + +# else + EXPECT_EXIT(raise(SIGKILL), testing::KilledBySignal(SIGKILL), "") << "foo"; ASSERT_EXIT(raise(SIGUSR2), testing::KilledBySignal(SIGUSR2), "") << "bar"; EXPECT_FATAL_FAILURE({ // NOLINT ASSERT_EXIT(_exit(0), testing::KilledBySignal(SIGSEGV), "") - << "This failure is expected, too."; + << "This failure is expected, too."; }, "This failure is expected, too."); -#endif // GTEST_OS_WINDOWS + +# endif // GTEST_OS_WINDOWS EXPECT_NONFATAL_FAILURE({ // NOLINT EXPECT_EXIT(raise(SIGSEGV), testing::ExitedWithCode(0), "") - << "This failure is expected."; + << "This failure is expected."; }, "This failure is expected."); } @@ -714,6 +761,57 @@ TEST_F(TestForDeathTest, InvalidStyle) { }, "This failure is expected."); } +TEST_F(TestForDeathTest, DeathTestFailedOutput) { + testing::GTEST_FLAG(death_test_style) = "fast"; + EXPECT_NONFATAL_FAILURE( + EXPECT_DEATH(DieWithMessage("death\n"), + "expected message"), + "Actual msg:\n" + "[ DEATH ] death\n"); +} + +TEST_F(TestForDeathTest, DeathTestUnexpectedReturnOutput) { + testing::GTEST_FLAG(death_test_style) = "fast"; + EXPECT_NONFATAL_FAILURE( + EXPECT_DEATH({ + fprintf(stderr, "returning\n"); + fflush(stderr); + return; + }, ""), + " Result: illegal return in test statement.\n" + " Error msg:\n" + "[ DEATH ] returning\n"); +} + +TEST_F(TestForDeathTest, DeathTestBadExitCodeOutput) { + testing::GTEST_FLAG(death_test_style) = "fast"; + EXPECT_NONFATAL_FAILURE( + EXPECT_EXIT(DieWithMessage("exiting with rc 1\n"), + testing::ExitedWithCode(3), + "expected message"), + " Result: died but not with expected exit code:\n" + " Exited with exit status 1\n" + "Actual msg:\n" + "[ DEATH ] exiting with rc 1\n"); +} + +TEST_F(TestForDeathTest, DeathTestMultiLineMatchFail) { + testing::GTEST_FLAG(death_test_style) = "fast"; + EXPECT_NONFATAL_FAILURE( + EXPECT_DEATH(DieWithMessage("line 1\nline 2\nline 3\n"), + "line 1\nxyz\nline 3\n"), + "Actual msg:\n" + "[ DEATH ] line 1\n" + "[ DEATH ] line 2\n" + "[ DEATH ] line 3\n"); +} + +TEST_F(TestForDeathTest, DeathTestMultiLineMatchPass) { + testing::GTEST_FLAG(death_test_style) = "fast"; + EXPECT_DEATH(DieWithMessage("line 1\nline 2\nline 3\n"), + "line 1\nline 2\nline 3\n"); +} + // A DeathTestFactory that returns MockDeathTests. class MockDeathTestFactory : public DeathTestFactory { public: @@ -793,6 +891,7 @@ class MockDeathTest : public DeathTest { virtual void Abort(AbortReason reason) { parent_->abort_args_.push_back(reason); } + private: MockDeathTestFactory* const parent_; const TestRole role_; @@ -994,7 +1093,7 @@ TEST(GetLastErrnoDescription, GetLastErrnoDescriptionWorks) { EXPECT_STREQ("", GetLastErrnoDescription().c_str()); } -#if GTEST_OS_WINDOWS +# if GTEST_OS_WINDOWS TEST(AutoHandleTest, AutoHandleWorks) { HANDLE handle = ::CreateEvent(NULL, FALSE, FALSE, NULL); ASSERT_NE(INVALID_HANDLE_VALUE, handle); @@ -1019,46 +1118,46 @@ TEST(AutoHandleTest, AutoHandleWorks) { testing::internal::AutoHandle auto_handle2; EXPECT_EQ(INVALID_HANDLE_VALUE, auto_handle2.Get()); } -#endif // GTEST_OS_WINDOWS +# endif // GTEST_OS_WINDOWS -#if GTEST_OS_WINDOWS +# if GTEST_OS_WINDOWS typedef unsigned __int64 BiggestParsable; typedef signed __int64 BiggestSignedParsable; const BiggestParsable kBiggestParsableMax = ULLONG_MAX; -const BiggestParsable kBiggestSignedParsableMax = LLONG_MAX; -#else +const BiggestSignedParsable kBiggestSignedParsableMax = LLONG_MAX; +# else typedef unsigned long long BiggestParsable; typedef signed long long BiggestSignedParsable; const BiggestParsable kBiggestParsableMax = ::std::numeric_limits::max(); const BiggestSignedParsable kBiggestSignedParsableMax = ::std::numeric_limits::max(); -#endif // GTEST_OS_WINDOWS +# endif // GTEST_OS_WINDOWS TEST(ParseNaturalNumberTest, RejectsInvalidFormat) { BiggestParsable result = 0; // Rejects non-numbers. - EXPECT_FALSE(ParseNaturalNumber(String("non-number string"), &result)); + EXPECT_FALSE(ParseNaturalNumber("non-number string", &result)); // Rejects numbers with whitespace prefix. - EXPECT_FALSE(ParseNaturalNumber(String(" 123"), &result)); + EXPECT_FALSE(ParseNaturalNumber(" 123", &result)); // Rejects negative numbers. - EXPECT_FALSE(ParseNaturalNumber(String("-123"), &result)); + EXPECT_FALSE(ParseNaturalNumber("-123", &result)); // Rejects numbers starting with a plus sign. - EXPECT_FALSE(ParseNaturalNumber(String("+123"), &result)); + EXPECT_FALSE(ParseNaturalNumber("+123", &result)); errno = 0; } TEST(ParseNaturalNumberTest, RejectsOverflownNumbers) { BiggestParsable result = 0; - EXPECT_FALSE(ParseNaturalNumber(String("99999999999999999999999"), &result)); + EXPECT_FALSE(ParseNaturalNumber("99999999999999999999999", &result)); signed char char_result = 0; - EXPECT_FALSE(ParseNaturalNumber(String("200"), &char_result)); + EXPECT_FALSE(ParseNaturalNumber("200", &char_result)); errno = 0; } @@ -1066,16 +1165,16 @@ TEST(ParseNaturalNumberTest, AcceptsValidNumbers) { BiggestParsable result = 0; result = 0; - ASSERT_TRUE(ParseNaturalNumber(String("123"), &result)); + ASSERT_TRUE(ParseNaturalNumber("123", &result)); EXPECT_EQ(123U, result); // Check 0 as an edge case. result = 1; - ASSERT_TRUE(ParseNaturalNumber(String("0"), &result)); + ASSERT_TRUE(ParseNaturalNumber("0", &result)); EXPECT_EQ(0U, result); result = 1; - ASSERT_TRUE(ParseNaturalNumber(String("00000"), &result)); + ASSERT_TRUE(ParseNaturalNumber("00000", &result)); EXPECT_EQ(0U, result); } @@ -1111,28 +1210,30 @@ TEST(ParseNaturalNumberTest, AcceptsTypeLimits) { TEST(ParseNaturalNumberTest, WorksForShorterIntegers) { short short_result = 0; - ASSERT_TRUE(ParseNaturalNumber(String("123"), &short_result)); + ASSERT_TRUE(ParseNaturalNumber("123", &short_result)); EXPECT_EQ(123, short_result); signed char char_result = 0; - ASSERT_TRUE(ParseNaturalNumber(String("123"), &char_result)); + ASSERT_TRUE(ParseNaturalNumber("123", &char_result)); EXPECT_EQ(123, char_result); } -#if GTEST_OS_WINDOWS +# if GTEST_OS_WINDOWS TEST(EnvironmentTest, HandleFitsIntoSizeT) { // TODO(vladl@google.com): Remove this test after this condition is verified // in a static assertion in gtest-death-test.cc in the function // GetStatusFileDescriptor. ASSERT_TRUE(sizeof(HANDLE) <= sizeof(size_t)); } -#endif // GTEST_OS_WINDOWS +# endif // GTEST_OS_WINDOWS // Tests that EXPECT_DEATH_IF_SUPPORTED/ASSERT_DEATH_IF_SUPPORTED trigger // failures when death tests are available on the system. TEST(ConditionalDeathMacrosDeathTest, ExpectsDeathWhenDeathTestsAvailable) { - EXPECT_DEATH_IF_SUPPORTED(GTEST_CHECK_(false) << "failure", "false.*failure"); - ASSERT_DEATH_IF_SUPPORTED(GTEST_CHECK_(false) << "failure", "false.*failure"); + EXPECT_DEATH_IF_SUPPORTED(DieInside("CondDeathTestExpectMacro"), + "death inside CondDeathTestExpectMacro"); + ASSERT_DEATH_IF_SUPPORTED(DieInside("CondDeathTestAssertMacro"), + "death inside CondDeathTestAssertMacro"); // Empty statement will not crash, which must trigger a failure. EXPECT_NONFATAL_FAILURE(EXPECT_DEATH_IF_SUPPORTED(;, ""), ""); @@ -1143,7 +1244,6 @@ TEST(ConditionalDeathMacrosDeathTest, ExpectsDeathWhenDeathTestsAvailable) { using testing::internal::CaptureStderr; using testing::internal::GetCapturedStderr; -using testing::internal::String; // Tests that EXPECT_DEATH_IF_SUPPORTED/ASSERT_DEATH_IF_SUPPORTED are still // defined but do not trigger failures when death tests are not available on @@ -1153,7 +1253,7 @@ TEST(ConditionalDeathMacrosTest, WarnsWhenDeathTestsNotAvailable) { // when death tests are not supported. CaptureStderr(); EXPECT_DEATH_IF_SUPPORTED(;, ""); - String output = GetCapturedStderr(); + std::string output = GetCapturedStderr(); ASSERT_TRUE(NULL != strstr(output.c_str(), "Death tests are not supported on this platform")); ASSERT_TRUE(NULL != strstr(output.c_str(), ";")); @@ -1223,8 +1323,8 @@ TEST(ConditionalDeathMacrosSyntaxDeathTest, SwitchStatement) { // Microsoft compiler usually complains about switch statements without // case labels. We suppress that warning for this test. #ifdef _MSC_VER -#pragma warning(push) -#pragma warning(disable: 4065) +# pragma warning(push) +# pragma warning(disable: 4065) #endif // _MSC_VER switch (0) @@ -1237,10 +1337,30 @@ TEST(ConditionalDeathMacrosSyntaxDeathTest, SwitchStatement) { EXPECT_DEATH_IF_SUPPORTED(_exit(1), "") << "exit in switch case"; #ifdef _MSC_VER -#pragma warning(pop) +# pragma warning(pop) #endif // _MSC_VER } +TEST(InDeathTestChildDeathTest, ReportsDeathTestCorrectlyInFastStyle) { + testing::GTEST_FLAG(death_test_style) = "fast"; + EXPECT_FALSE(InDeathTestChild()); + EXPECT_DEATH({ + fprintf(stderr, InDeathTestChild() ? "Inside" : "Outside"); + fflush(stderr); + _exit(1); + }, "Inside"); +} + +TEST(InDeathTestChildDeathTest, ReportsDeathTestCorrectlyInThreadSafeStyle) { + testing::GTEST_FLAG(death_test_style) = "threadsafe"; + EXPECT_FALSE(InDeathTestChild()); + EXPECT_DEATH({ + fprintf(stderr, InDeathTestChild() ? "Inside" : "Outside"); + fflush(stderr); + _exit(1); + }, "Inside"); +} + // Tests that a test case whose name ends with "DeathTest" works fine // on Windows. TEST(NotADeathTest, Test) { diff --git a/cpp/thirdparty/protobuf-2.3.0/gtest/test/gtest-filepath_test.cc b/cpp/thirdparty/protobuf-2.5.0/gtest/test/gtest-filepath_test.cc similarity index 64% rename from cpp/thirdparty/protobuf-2.3.0/gtest/test/gtest-filepath_test.cc rename to cpp/thirdparty/protobuf-2.5.0/gtest/test/gtest-filepath_test.cc index 5bc4daf28..ae9f55a0c 100644 --- a/cpp/thirdparty/protobuf-2.3.0/gtest/test/gtest-filepath_test.cc +++ b/cpp/thirdparty/protobuf-2.5.0/gtest/test/gtest-filepath_test.cc @@ -38,8 +38,8 @@ // build or make-files for some existing Google Test clients. Do not // #include this file anywhere else! -#include -#include +#include "gtest/internal/gtest-filepath.h" +#include "gtest/gtest.h" // Indicates that this translation unit is part of Google Test's // implementation. It must come before gtest-internal-inl.h is @@ -51,9 +51,9 @@ #undef GTEST_IMPLEMENTATION_ #if GTEST_OS_WINDOWS_MOBILE -#include // NOLINT +# include // NOLINT #elif GTEST_OS_WINDOWS -#include // NOLINT +# include // NOLINT #endif // GTEST_OS_WINDOWS_MOBILE namespace testing { @@ -91,21 +91,24 @@ TEST(GetCurrentDirTest, ReturnsCurrentDir) { const FilePath cwd = FilePath::GetCurrentDir(); posix::ChDir(original_dir.c_str()); -#if GTEST_OS_WINDOWS +# if GTEST_OS_WINDOWS + // Skips the ":". const char* const cwd_without_drive = strchr(cwd.c_str(), ':'); ASSERT_TRUE(cwd_without_drive != NULL); EXPECT_STREQ(GTEST_PATH_SEP_, cwd_without_drive + 1); -#else - EXPECT_STREQ(GTEST_PATH_SEP_, cwd.c_str()); -#endif + +# else + + EXPECT_EQ(GTEST_PATH_SEP_, cwd.string()); + +# endif } #endif // GTEST_OS_WINDOWS_MOBILE TEST(IsEmptyTest, ReturnsTrueForEmptyPath) { EXPECT_TRUE(FilePath("").IsEmpty()); - EXPECT_TRUE(FilePath(NULL).IsEmpty()); } TEST(IsEmptyTest, ReturnsFalseForNonEmptyPath) { @@ -117,198 +120,250 @@ TEST(IsEmptyTest, ReturnsFalseForNonEmptyPath) { // RemoveDirectoryName "" -> "" TEST(RemoveDirectoryNameTest, WhenEmptyName) { - EXPECT_STREQ("", FilePath("").RemoveDirectoryName().c_str()); + EXPECT_EQ("", FilePath("").RemoveDirectoryName().string()); } // RemoveDirectoryName "afile" -> "afile" TEST(RemoveDirectoryNameTest, ButNoDirectory) { - EXPECT_STREQ("afile", - FilePath("afile").RemoveDirectoryName().c_str()); + EXPECT_EQ("afile", + FilePath("afile").RemoveDirectoryName().string()); } // RemoveDirectoryName "/afile" -> "afile" TEST(RemoveDirectoryNameTest, RootFileShouldGiveFileName) { - EXPECT_STREQ("afile", - FilePath(GTEST_PATH_SEP_ "afile").RemoveDirectoryName().c_str()); + EXPECT_EQ("afile", + FilePath(GTEST_PATH_SEP_ "afile").RemoveDirectoryName().string()); } // RemoveDirectoryName "adir/" -> "" TEST(RemoveDirectoryNameTest, WhereThereIsNoFileName) { - EXPECT_STREQ("", - FilePath("adir" GTEST_PATH_SEP_).RemoveDirectoryName().c_str()); + EXPECT_EQ("", + FilePath("adir" GTEST_PATH_SEP_).RemoveDirectoryName().string()); } // RemoveDirectoryName "adir/afile" -> "afile" TEST(RemoveDirectoryNameTest, ShouldGiveFileName) { - EXPECT_STREQ("afile", - FilePath("adir" GTEST_PATH_SEP_ "afile").RemoveDirectoryName().c_str()); + EXPECT_EQ("afile", + FilePath("adir" GTEST_PATH_SEP_ "afile").RemoveDirectoryName().string()); } // RemoveDirectoryName "adir/subdir/afile" -> "afile" TEST(RemoveDirectoryNameTest, ShouldAlsoGiveFileName) { - EXPECT_STREQ("afile", + EXPECT_EQ("afile", FilePath("adir" GTEST_PATH_SEP_ "subdir" GTEST_PATH_SEP_ "afile") - .RemoveDirectoryName().c_str()); + .RemoveDirectoryName().string()); } +#if GTEST_HAS_ALT_PATH_SEP_ + +// Tests that RemoveDirectoryName() works with the alternate separator +// on Windows. + +// RemoveDirectoryName("/afile") -> "afile" +TEST(RemoveDirectoryNameTest, RootFileShouldGiveFileNameForAlternateSeparator) { + EXPECT_EQ("afile", FilePath("/afile").RemoveDirectoryName().string()); +} + +// RemoveDirectoryName("adir/") -> "" +TEST(RemoveDirectoryNameTest, WhereThereIsNoFileNameForAlternateSeparator) { + EXPECT_EQ("", FilePath("adir/").RemoveDirectoryName().string()); +} + +// RemoveDirectoryName("adir/afile") -> "afile" +TEST(RemoveDirectoryNameTest, ShouldGiveFileNameForAlternateSeparator) { + EXPECT_EQ("afile", FilePath("adir/afile").RemoveDirectoryName().string()); +} + +// RemoveDirectoryName("adir/subdir/afile") -> "afile" +TEST(RemoveDirectoryNameTest, ShouldAlsoGiveFileNameForAlternateSeparator) { + EXPECT_EQ("afile", + FilePath("adir/subdir/afile").RemoveDirectoryName().string()); +} + +#endif // RemoveFileName "" -> "./" TEST(RemoveFileNameTest, EmptyName) { #if GTEST_OS_WINDOWS_MOBILE // On Windows CE, we use the root as the current directory. - EXPECT_STREQ(GTEST_PATH_SEP_, - FilePath("").RemoveFileName().c_str()); + EXPECT_EQ(GTEST_PATH_SEP_, FilePath("").RemoveFileName().string()); #else - EXPECT_STREQ("." GTEST_PATH_SEP_, - FilePath("").RemoveFileName().c_str()); + EXPECT_EQ("." GTEST_PATH_SEP_, FilePath("").RemoveFileName().string()); #endif } // RemoveFileName "adir/" -> "adir/" TEST(RemoveFileNameTest, ButNoFile) { - EXPECT_STREQ("adir" GTEST_PATH_SEP_, - FilePath("adir" GTEST_PATH_SEP_).RemoveFileName().c_str()); + EXPECT_EQ("adir" GTEST_PATH_SEP_, + FilePath("adir" GTEST_PATH_SEP_).RemoveFileName().string()); } // RemoveFileName "adir/afile" -> "adir/" TEST(RemoveFileNameTest, GivesDirName) { - EXPECT_STREQ("adir" GTEST_PATH_SEP_, - FilePath("adir" GTEST_PATH_SEP_ "afile") - .RemoveFileName().c_str()); + EXPECT_EQ("adir" GTEST_PATH_SEP_, + FilePath("adir" GTEST_PATH_SEP_ "afile").RemoveFileName().string()); } // RemoveFileName "adir/subdir/afile" -> "adir/subdir/" TEST(RemoveFileNameTest, GivesDirAndSubDirName) { - EXPECT_STREQ("adir" GTEST_PATH_SEP_ "subdir" GTEST_PATH_SEP_, + EXPECT_EQ("adir" GTEST_PATH_SEP_ "subdir" GTEST_PATH_SEP_, FilePath("adir" GTEST_PATH_SEP_ "subdir" GTEST_PATH_SEP_ "afile") - .RemoveFileName().c_str()); + .RemoveFileName().string()); } // RemoveFileName "/afile" -> "/" TEST(RemoveFileNameTest, GivesRootDir) { - EXPECT_STREQ(GTEST_PATH_SEP_, - FilePath(GTEST_PATH_SEP_ "afile").RemoveFileName().c_str()); + EXPECT_EQ(GTEST_PATH_SEP_, + FilePath(GTEST_PATH_SEP_ "afile").RemoveFileName().string()); +} + +#if GTEST_HAS_ALT_PATH_SEP_ + +// Tests that RemoveFileName() works with the alternate separator on +// Windows. + +// RemoveFileName("adir/") -> "adir/" +TEST(RemoveFileNameTest, ButNoFileForAlternateSeparator) { + EXPECT_EQ("adir" GTEST_PATH_SEP_, + FilePath("adir/").RemoveFileName().string()); } +// RemoveFileName("adir/afile") -> "adir/" +TEST(RemoveFileNameTest, GivesDirNameForAlternateSeparator) { + EXPECT_EQ("adir" GTEST_PATH_SEP_, + FilePath("adir/afile").RemoveFileName().string()); +} + +// RemoveFileName("adir/subdir/afile") -> "adir/subdir/" +TEST(RemoveFileNameTest, GivesDirAndSubDirNameForAlternateSeparator) { + EXPECT_EQ("adir" GTEST_PATH_SEP_ "subdir" GTEST_PATH_SEP_, + FilePath("adir/subdir/afile").RemoveFileName().string()); +} + +// RemoveFileName("/afile") -> "\" +TEST(RemoveFileNameTest, GivesRootDirForAlternateSeparator) { + EXPECT_EQ(GTEST_PATH_SEP_, FilePath("/afile").RemoveFileName().string()); +} + +#endif TEST(MakeFileNameTest, GenerateWhenNumberIsZero) { FilePath actual = FilePath::MakeFileName(FilePath("foo"), FilePath("bar"), 0, "xml"); - EXPECT_STREQ("foo" GTEST_PATH_SEP_ "bar.xml", actual.c_str()); + EXPECT_EQ("foo" GTEST_PATH_SEP_ "bar.xml", actual.string()); } TEST(MakeFileNameTest, GenerateFileNameNumberGtZero) { FilePath actual = FilePath::MakeFileName(FilePath("foo"), FilePath("bar"), 12, "xml"); - EXPECT_STREQ("foo" GTEST_PATH_SEP_ "bar_12.xml", actual.c_str()); + EXPECT_EQ("foo" GTEST_PATH_SEP_ "bar_12.xml", actual.string()); } TEST(MakeFileNameTest, GenerateFileNameWithSlashNumberIsZero) { FilePath actual = FilePath::MakeFileName(FilePath("foo" GTEST_PATH_SEP_), FilePath("bar"), 0, "xml"); - EXPECT_STREQ("foo" GTEST_PATH_SEP_ "bar.xml", actual.c_str()); + EXPECT_EQ("foo" GTEST_PATH_SEP_ "bar.xml", actual.string()); } TEST(MakeFileNameTest, GenerateFileNameWithSlashNumberGtZero) { FilePath actual = FilePath::MakeFileName(FilePath("foo" GTEST_PATH_SEP_), FilePath("bar"), 12, "xml"); - EXPECT_STREQ("foo" GTEST_PATH_SEP_ "bar_12.xml", actual.c_str()); + EXPECT_EQ("foo" GTEST_PATH_SEP_ "bar_12.xml", actual.string()); } TEST(MakeFileNameTest, GenerateWhenNumberIsZeroAndDirIsEmpty) { FilePath actual = FilePath::MakeFileName(FilePath(""), FilePath("bar"), 0, "xml"); - EXPECT_STREQ("bar.xml", actual.c_str()); + EXPECT_EQ("bar.xml", actual.string()); } TEST(MakeFileNameTest, GenerateWhenNumberIsNotZeroAndDirIsEmpty) { FilePath actual = FilePath::MakeFileName(FilePath(""), FilePath("bar"), 14, "xml"); - EXPECT_STREQ("bar_14.xml", actual.c_str()); + EXPECT_EQ("bar_14.xml", actual.string()); } TEST(ConcatPathsTest, WorksWhenDirDoesNotEndWithPathSep) { FilePath actual = FilePath::ConcatPaths(FilePath("foo"), FilePath("bar.xml")); - EXPECT_STREQ("foo" GTEST_PATH_SEP_ "bar.xml", actual.c_str()); + EXPECT_EQ("foo" GTEST_PATH_SEP_ "bar.xml", actual.string()); } TEST(ConcatPathsTest, WorksWhenPath1EndsWithPathSep) { FilePath actual = FilePath::ConcatPaths(FilePath("foo" GTEST_PATH_SEP_), FilePath("bar.xml")); - EXPECT_STREQ("foo" GTEST_PATH_SEP_ "bar.xml", actual.c_str()); + EXPECT_EQ("foo" GTEST_PATH_SEP_ "bar.xml", actual.string()); } TEST(ConcatPathsTest, Path1BeingEmpty) { FilePath actual = FilePath::ConcatPaths(FilePath(""), FilePath("bar.xml")); - EXPECT_STREQ("bar.xml", actual.c_str()); + EXPECT_EQ("bar.xml", actual.string()); } TEST(ConcatPathsTest, Path2BeingEmpty) { - FilePath actual = FilePath::ConcatPaths(FilePath("foo"), - FilePath("")); - EXPECT_STREQ("foo" GTEST_PATH_SEP_, actual.c_str()); + FilePath actual = FilePath::ConcatPaths(FilePath("foo"), FilePath("")); + EXPECT_EQ("foo" GTEST_PATH_SEP_, actual.string()); } TEST(ConcatPathsTest, BothPathBeingEmpty) { FilePath actual = FilePath::ConcatPaths(FilePath(""), FilePath("")); - EXPECT_STREQ("", actual.c_str()); + EXPECT_EQ("", actual.string()); } TEST(ConcatPathsTest, Path1ContainsPathSep) { FilePath actual = FilePath::ConcatPaths(FilePath("foo" GTEST_PATH_SEP_ "bar"), FilePath("foobar.xml")); - EXPECT_STREQ("foo" GTEST_PATH_SEP_ "bar" GTEST_PATH_SEP_ "foobar.xml", - actual.c_str()); + EXPECT_EQ("foo" GTEST_PATH_SEP_ "bar" GTEST_PATH_SEP_ "foobar.xml", + actual.string()); } TEST(ConcatPathsTest, Path2ContainsPathSep) { FilePath actual = FilePath::ConcatPaths( FilePath("foo" GTEST_PATH_SEP_), FilePath("bar" GTEST_PATH_SEP_ "bar.xml")); - EXPECT_STREQ("foo" GTEST_PATH_SEP_ "bar" GTEST_PATH_SEP_ "bar.xml", - actual.c_str()); + EXPECT_EQ("foo" GTEST_PATH_SEP_ "bar" GTEST_PATH_SEP_ "bar.xml", + actual.string()); } TEST(ConcatPathsTest, Path2EndsWithPathSep) { FilePath actual = FilePath::ConcatPaths(FilePath("foo"), FilePath("bar" GTEST_PATH_SEP_)); - EXPECT_STREQ("foo" GTEST_PATH_SEP_ "bar" GTEST_PATH_SEP_, actual.c_str()); + EXPECT_EQ("foo" GTEST_PATH_SEP_ "bar" GTEST_PATH_SEP_, actual.string()); } // RemoveTrailingPathSeparator "" -> "" TEST(RemoveTrailingPathSeparatorTest, EmptyString) { - EXPECT_STREQ("", - FilePath("").RemoveTrailingPathSeparator().c_str()); + EXPECT_EQ("", FilePath("").RemoveTrailingPathSeparator().string()); } // RemoveTrailingPathSeparator "foo" -> "foo" TEST(RemoveTrailingPathSeparatorTest, FileNoSlashString) { - EXPECT_STREQ("foo", - FilePath("foo").RemoveTrailingPathSeparator().c_str()); + EXPECT_EQ("foo", FilePath("foo").RemoveTrailingPathSeparator().string()); } // RemoveTrailingPathSeparator "foo/" -> "foo" TEST(RemoveTrailingPathSeparatorTest, ShouldRemoveTrailingSeparator) { - EXPECT_STREQ( - "foo", - FilePath("foo" GTEST_PATH_SEP_).RemoveTrailingPathSeparator().c_str()); + EXPECT_EQ("foo", + FilePath("foo" GTEST_PATH_SEP_).RemoveTrailingPathSeparator().string()); +#if GTEST_HAS_ALT_PATH_SEP_ + EXPECT_EQ("foo", FilePath("foo/").RemoveTrailingPathSeparator().string()); +#endif } // RemoveTrailingPathSeparator "foo/bar/" -> "foo/bar/" TEST(RemoveTrailingPathSeparatorTest, ShouldRemoveLastSeparator) { - EXPECT_STREQ("foo" GTEST_PATH_SEP_ "bar", - FilePath("foo" GTEST_PATH_SEP_ "bar" GTEST_PATH_SEP_) - .RemoveTrailingPathSeparator().c_str()); + EXPECT_EQ("foo" GTEST_PATH_SEP_ "bar", + FilePath("foo" GTEST_PATH_SEP_ "bar" GTEST_PATH_SEP_) + .RemoveTrailingPathSeparator().string()); } // RemoveTrailingPathSeparator "foo/bar" -> "foo/bar" TEST(RemoveTrailingPathSeparatorTest, ShouldReturnUnmodified) { - EXPECT_STREQ("foo" GTEST_PATH_SEP_ "bar", - FilePath("foo" GTEST_PATH_SEP_ "bar") - .RemoveTrailingPathSeparator().c_str()); + EXPECT_EQ("foo" GTEST_PATH_SEP_ "bar", + FilePath("foo" GTEST_PATH_SEP_ "bar") + .RemoveTrailingPathSeparator().string()); } TEST(DirectoryTest, RootDirectoryExists) { @@ -351,81 +406,94 @@ TEST(DirectoryTest, EmptyPathDirectoryDoesNotExist) { TEST(DirectoryTest, CurrentDirectoryExists) { #if GTEST_OS_WINDOWS // We are on Windows. -#ifndef _WIN32_CE // Windows CE doesn't have a current directory. +# ifndef _WIN32_CE // Windows CE doesn't have a current directory. + EXPECT_TRUE(FilePath(".").DirectoryExists()); EXPECT_TRUE(FilePath(".\\").DirectoryExists()); -#endif // _WIN32_CE + +# endif // _WIN32_CE #else EXPECT_TRUE(FilePath(".").DirectoryExists()); EXPECT_TRUE(FilePath("./").DirectoryExists()); #endif // GTEST_OS_WINDOWS } -TEST(NormalizeTest, NullStringsEqualEmptyDirectory) { - EXPECT_STREQ("", FilePath(NULL).c_str()); - EXPECT_STREQ("", FilePath(String(NULL)).c_str()); -} - // "foo/bar" == foo//bar" == "foo///bar" TEST(NormalizeTest, MultipleConsecutiveSepaparatorsInMidstring) { - EXPECT_STREQ("foo" GTEST_PATH_SEP_ "bar", - FilePath("foo" GTEST_PATH_SEP_ "bar").c_str()); - EXPECT_STREQ("foo" GTEST_PATH_SEP_ "bar", - FilePath("foo" GTEST_PATH_SEP_ GTEST_PATH_SEP_ "bar").c_str()); - EXPECT_STREQ("foo" GTEST_PATH_SEP_ "bar", - FilePath("foo" GTEST_PATH_SEP_ GTEST_PATH_SEP_ - GTEST_PATH_SEP_ "bar").c_str()); + EXPECT_EQ("foo" GTEST_PATH_SEP_ "bar", + FilePath("foo" GTEST_PATH_SEP_ "bar").string()); + EXPECT_EQ("foo" GTEST_PATH_SEP_ "bar", + FilePath("foo" GTEST_PATH_SEP_ GTEST_PATH_SEP_ "bar").string()); + EXPECT_EQ("foo" GTEST_PATH_SEP_ "bar", + FilePath("foo" GTEST_PATH_SEP_ GTEST_PATH_SEP_ + GTEST_PATH_SEP_ "bar").string()); } // "/bar" == //bar" == "///bar" TEST(NormalizeTest, MultipleConsecutiveSepaparatorsAtStringStart) { - EXPECT_STREQ(GTEST_PATH_SEP_ "bar", - FilePath(GTEST_PATH_SEP_ "bar").c_str()); - EXPECT_STREQ(GTEST_PATH_SEP_ "bar", - FilePath(GTEST_PATH_SEP_ GTEST_PATH_SEP_ "bar").c_str()); - EXPECT_STREQ(GTEST_PATH_SEP_ "bar", - FilePath(GTEST_PATH_SEP_ GTEST_PATH_SEP_ GTEST_PATH_SEP_ "bar").c_str()); + EXPECT_EQ(GTEST_PATH_SEP_ "bar", + FilePath(GTEST_PATH_SEP_ "bar").string()); + EXPECT_EQ(GTEST_PATH_SEP_ "bar", + FilePath(GTEST_PATH_SEP_ GTEST_PATH_SEP_ "bar").string()); + EXPECT_EQ(GTEST_PATH_SEP_ "bar", + FilePath(GTEST_PATH_SEP_ GTEST_PATH_SEP_ GTEST_PATH_SEP_ "bar").string()); } // "foo/" == foo//" == "foo///" TEST(NormalizeTest, MultipleConsecutiveSepaparatorsAtStringEnd) { - EXPECT_STREQ("foo" GTEST_PATH_SEP_, - FilePath("foo" GTEST_PATH_SEP_).c_str()); - EXPECT_STREQ("foo" GTEST_PATH_SEP_, - FilePath("foo" GTEST_PATH_SEP_ GTEST_PATH_SEP_).c_str()); - EXPECT_STREQ("foo" GTEST_PATH_SEP_, - FilePath("foo" GTEST_PATH_SEP_ GTEST_PATH_SEP_ GTEST_PATH_SEP_).c_str()); + EXPECT_EQ("foo" GTEST_PATH_SEP_, + FilePath("foo" GTEST_PATH_SEP_).string()); + EXPECT_EQ("foo" GTEST_PATH_SEP_, + FilePath("foo" GTEST_PATH_SEP_ GTEST_PATH_SEP_).string()); + EXPECT_EQ("foo" GTEST_PATH_SEP_, + FilePath("foo" GTEST_PATH_SEP_ GTEST_PATH_SEP_ GTEST_PATH_SEP_).string()); +} + +#if GTEST_HAS_ALT_PATH_SEP_ + +// Tests that separators at the end of the string are normalized +// regardless of their combination (e.g. "foo\" =="foo/\" == +// "foo\\/"). +TEST(NormalizeTest, MixAlternateSeparatorAtStringEnd) { + EXPECT_EQ("foo" GTEST_PATH_SEP_, + FilePath("foo/").string()); + EXPECT_EQ("foo" GTEST_PATH_SEP_, + FilePath("foo" GTEST_PATH_SEP_ "/").string()); + EXPECT_EQ("foo" GTEST_PATH_SEP_, + FilePath("foo//" GTEST_PATH_SEP_).string()); } +#endif + TEST(AssignmentOperatorTest, DefaultAssignedToNonDefault) { FilePath default_path; FilePath non_default_path("path"); non_default_path = default_path; - EXPECT_STREQ("", non_default_path.c_str()); - EXPECT_STREQ("", default_path.c_str()); // RHS var is unchanged. + EXPECT_EQ("", non_default_path.string()); + EXPECT_EQ("", default_path.string()); // RHS var is unchanged. } TEST(AssignmentOperatorTest, NonDefaultAssignedToDefault) { FilePath non_default_path("path"); FilePath default_path; default_path = non_default_path; - EXPECT_STREQ("path", default_path.c_str()); - EXPECT_STREQ("path", non_default_path.c_str()); // RHS var is unchanged. + EXPECT_EQ("path", default_path.string()); + EXPECT_EQ("path", non_default_path.string()); // RHS var is unchanged. } TEST(AssignmentOperatorTest, ConstAssignedToNonConst) { const FilePath const_default_path("const_path"); FilePath non_default_path("path"); non_default_path = const_default_path; - EXPECT_STREQ("const_path", non_default_path.c_str()); + EXPECT_EQ("const_path", non_default_path.string()); } class DirectoryCreationTest : public Test { protected: virtual void SetUp() { - testdata_path_.Set(FilePath(String::Format("%s%s%s", - TempDir().c_str(), GetCurrentExecutableName().c_str(), - "_directory_creation" GTEST_PATH_SEP_ "test" GTEST_PATH_SEP_))); + testdata_path_.Set(FilePath( + TempDir() + GetCurrentExecutableName().string() + + "_directory_creation" GTEST_PATH_SEP_ "test" GTEST_PATH_SEP_)); testdata_file_.Set(testdata_path_.RemoveTrailingPathSeparator()); unique_file0_.Set(FilePath::MakeFileName(testdata_path_, FilePath("unique"), @@ -446,19 +514,21 @@ class DirectoryCreationTest : public Test { posix::RmDir(testdata_path_.c_str()); } - String TempDir() const { + std::string TempDir() const { #if GTEST_OS_WINDOWS_MOBILE - return String("\\temp\\"); + return "\\temp\\"; #elif GTEST_OS_WINDOWS const char* temp_dir = posix::GetEnv("TEMP"); if (temp_dir == NULL || temp_dir[0] == '\0') - return String("\\temp\\"); - else if (String(temp_dir).EndsWith("\\")) - return String(temp_dir); + return "\\temp\\"; + else if (temp_dir[strlen(temp_dir) - 1] == '\\') + return temp_dir; else - return String::Format("%s\\", temp_dir); + return std::string(temp_dir) + "\\"; +#elif GTEST_OS_LINUX_ANDROID + return "/sdcard/"; #else - return String("/tmp/"); + return "/tmp/"; #endif // GTEST_OS_WINDOWS_MOBILE } @@ -478,13 +548,13 @@ class DirectoryCreationTest : public Test { }; TEST_F(DirectoryCreationTest, CreateDirectoriesRecursively) { - EXPECT_FALSE(testdata_path_.DirectoryExists()) << testdata_path_.c_str(); + EXPECT_FALSE(testdata_path_.DirectoryExists()) << testdata_path_.string(); EXPECT_TRUE(testdata_path_.CreateDirectoriesRecursively()); EXPECT_TRUE(testdata_path_.DirectoryExists()); } TEST_F(DirectoryCreationTest, CreateDirectoriesForAlreadyExistingPath) { - EXPECT_FALSE(testdata_path_.DirectoryExists()) << testdata_path_.c_str(); + EXPECT_FALSE(testdata_path_.DirectoryExists()) << testdata_path_.string(); EXPECT_TRUE(testdata_path_.CreateDirectoriesRecursively()); // Call 'create' again... should still succeed. EXPECT_TRUE(testdata_path_.CreateDirectoriesRecursively()); @@ -493,7 +563,7 @@ TEST_F(DirectoryCreationTest, CreateDirectoriesForAlreadyExistingPath) { TEST_F(DirectoryCreationTest, CreateDirectoriesAndUniqueFilename) { FilePath file_path(FilePath::GenerateUniqueFileName(testdata_path_, FilePath("unique"), "txt")); - EXPECT_STREQ(unique_file0_.c_str(), file_path.c_str()); + EXPECT_EQ(unique_file0_.string(), file_path.string()); EXPECT_FALSE(file_path.FileOrDirectoryExists()); // file not there testdata_path_.CreateDirectoriesRecursively(); @@ -503,7 +573,7 @@ TEST_F(DirectoryCreationTest, CreateDirectoriesAndUniqueFilename) { FilePath file_path2(FilePath::GenerateUniqueFileName(testdata_path_, FilePath("unique"), "txt")); - EXPECT_STREQ(unique_file1_.c_str(), file_path2.c_str()); + EXPECT_EQ(unique_file1_.string(), file_path2.string()); EXPECT_FALSE(file_path2.FileOrDirectoryExists()); // file not there CreateTextFile(file_path2.c_str()); EXPECT_TRUE(file_path2.FileOrDirectoryExists()); @@ -524,48 +594,51 @@ TEST(NoDirectoryCreationTest, CreateNoDirectoriesForDefaultXmlFile) { TEST(FilePathTest, DefaultConstructor) { FilePath fp; - EXPECT_STREQ("", fp.c_str()); + EXPECT_EQ("", fp.string()); } TEST(FilePathTest, CharAndCopyConstructors) { const FilePath fp("spicy"); - EXPECT_STREQ("spicy", fp.c_str()); + EXPECT_EQ("spicy", fp.string()); const FilePath fp_copy(fp); - EXPECT_STREQ("spicy", fp_copy.c_str()); + EXPECT_EQ("spicy", fp_copy.string()); } TEST(FilePathTest, StringConstructor) { - const FilePath fp(String("cider")); - EXPECT_STREQ("cider", fp.c_str()); + const FilePath fp(std::string("cider")); + EXPECT_EQ("cider", fp.string()); } TEST(FilePathTest, Set) { const FilePath apple("apple"); FilePath mac("mac"); mac.Set(apple); // Implement Set() since overloading operator= is forbidden. - EXPECT_STREQ("apple", mac.c_str()); - EXPECT_STREQ("apple", apple.c_str()); + EXPECT_EQ("apple", mac.string()); + EXPECT_EQ("apple", apple.string()); } TEST(FilePathTest, ToString) { const FilePath file("drink"); - String str(file.ToString()); - EXPECT_STREQ("drink", str.c_str()); + EXPECT_EQ("drink", file.string()); } TEST(FilePathTest, RemoveExtension) { - EXPECT_STREQ("app", FilePath("app.exe").RemoveExtension("exe").c_str()); - EXPECT_STREQ("APP", FilePath("APP.EXE").RemoveExtension("exe").c_str()); + EXPECT_EQ("app", FilePath("app.cc").RemoveExtension("cc").string()); + EXPECT_EQ("app", FilePath("app.exe").RemoveExtension("exe").string()); + EXPECT_EQ("APP", FilePath("APP.EXE").RemoveExtension("exe").string()); } TEST(FilePathTest, RemoveExtensionWhenThereIsNoExtension) { - EXPECT_STREQ("app", FilePath("app").RemoveExtension("exe").c_str()); + EXPECT_EQ("app", FilePath("app").RemoveExtension("exe").string()); } TEST(FilePathTest, IsDirectory) { EXPECT_FALSE(FilePath("cola").IsDirectory()); EXPECT_TRUE(FilePath("koala" GTEST_PATH_SEP_).IsDirectory()); +#if GTEST_HAS_ALT_PATH_SEP_ + EXPECT_TRUE(FilePath("koala/").IsDirectory()); +#endif } TEST(FilePathTest, IsAbsolutePath) { @@ -575,14 +648,33 @@ TEST(FilePathTest, IsAbsolutePath) { EXPECT_TRUE(FilePath("c:\\" GTEST_PATH_SEP_ "is_not" GTEST_PATH_SEP_ "relative").IsAbsolutePath()); EXPECT_FALSE(FilePath("c:foo" GTEST_PATH_SEP_ "bar").IsAbsolutePath()); + EXPECT_TRUE(FilePath("c:/" GTEST_PATH_SEP_ "is_not" + GTEST_PATH_SEP_ "relative").IsAbsolutePath()); #else EXPECT_TRUE(FilePath(GTEST_PATH_SEP_ "is_not" GTEST_PATH_SEP_ "relative") .IsAbsolutePath()); #endif // GTEST_OS_WINDOWS } +TEST(FilePathTest, IsRootDirectory) { +#if GTEST_OS_WINDOWS + EXPECT_TRUE(FilePath("a:\\").IsRootDirectory()); + EXPECT_TRUE(FilePath("Z:/").IsRootDirectory()); + EXPECT_TRUE(FilePath("e://").IsRootDirectory()); + EXPECT_FALSE(FilePath("").IsRootDirectory()); + EXPECT_FALSE(FilePath("b:").IsRootDirectory()); + EXPECT_FALSE(FilePath("b:a").IsRootDirectory()); + EXPECT_FALSE(FilePath("8:/").IsRootDirectory()); + EXPECT_FALSE(FilePath("c|/").IsRootDirectory()); +#else + EXPECT_TRUE(FilePath("/").IsRootDirectory()); + EXPECT_TRUE(FilePath("//").IsRootDirectory()); + EXPECT_FALSE(FilePath("").IsRootDirectory()); + EXPECT_FALSE(FilePath("\\").IsRootDirectory()); + EXPECT_FALSE(FilePath("/x").IsRootDirectory()); +#endif +} + } // namespace } // namespace internal } // namespace testing - -#undef GTEST_PATH_SEP_ diff --git a/cpp/thirdparty/protobuf-2.3.0/gtest/test/gtest-linked_ptr_test.cc b/cpp/thirdparty/protobuf-2.5.0/gtest/test/gtest-linked_ptr_test.cc similarity index 94% rename from cpp/thirdparty/protobuf-2.3.0/gtest/test/gtest-linked_ptr_test.cc rename to cpp/thirdparty/protobuf-2.5.0/gtest/test/gtest-linked_ptr_test.cc index eae82296c..6fcf5124a 100644 --- a/cpp/thirdparty/protobuf-2.3.0/gtest/test/gtest-linked_ptr_test.cc +++ b/cpp/thirdparty/protobuf-2.5.0/gtest/test/gtest-linked_ptr_test.cc @@ -30,10 +30,10 @@ // Authors: Dan Egnor (egnor@google.com) // Ported to Windows: Vadim Berman (vadimb@google.com) -#include +#include "gtest/internal/gtest-linked_ptr.h" #include -#include +#include "gtest/gtest.h" namespace { @@ -77,7 +77,8 @@ class LinkedPtrTest : public testing::Test { TEST_F(LinkedPtrTest, GeneralTest) { { linked_ptr a0, a1, a2; - a0 = a0; + // Use explicit function call notation here to suppress self-assign warning. + a0.operator=(a0); a1 = a2; ASSERT_EQ(a0.get(), static_cast(NULL)); ASSERT_EQ(a1.get(), static_cast(NULL)); @@ -147,8 +148,7 @@ TEST_F(LinkedPtrTest, GeneralTest) { "A0 dtor\n" "A3 dtor\n" "A1 dtor\n", - history->GetString().c_str() - ); + history->GetString().c_str()); } } // Unnamed namespace diff --git a/cpp/thirdparty/protobuf-2.3.0/gtest/test/gtest-listener_test.cc b/cpp/thirdparty/protobuf-2.5.0/gtest/test/gtest-listener_test.cc similarity index 78% rename from cpp/thirdparty/protobuf-2.3.0/gtest/test/gtest-listener_test.cc rename to cpp/thirdparty/protobuf-2.5.0/gtest/test/gtest-listener_test.cc index f12f51883..99662cff3 100644 --- a/cpp/thirdparty/protobuf-2.3.0/gtest/test/gtest-listener_test.cc +++ b/cpp/thirdparty/protobuf-2.5.0/gtest/test/gtest-listener_test.cc @@ -33,16 +33,8 @@ // This file verifies Google Test event listeners receive events at the // right times. -#include - -// Indicates that this translation unit is part of Google Test's -// implementation. It must come before gtest-internal-inl.h is -// included, or there will be a compiler error. This trick is to -// prevent a user from accidentally including gtest-internal-inl.h in -// his code. -#define GTEST_IMPLEMENTATION_ 1 -#include "src/gtest-internal-inl.h" // For Vector. -#undef GTEST_IMPLEMENTATION_ +#include "gtest/gtest.h" +#include using ::testing::AddGlobalTestEnvironment; using ::testing::Environment; @@ -53,22 +45,20 @@ using ::testing::TestEventListener; using ::testing::TestInfo; using ::testing::TestPartResult; using ::testing::UnitTest; -using ::testing::internal::String; -using ::testing::internal::Vector; // Used by tests to register their events. -Vector* g_events = NULL; +std::vector* g_events = NULL; namespace testing { namespace internal { class EventRecordingListener : public TestEventListener { public: - EventRecordingListener(const char* name) : name_(name) {} + explicit EventRecordingListener(const char* name) : name_(name) {} protected: virtual void OnTestProgramStart(const UnitTest& /*unit_test*/) { - g_events->PushBack(GetFullMethodName("OnTestProgramStart")); + g_events->push_back(GetFullMethodName("OnTestProgramStart")); } virtual void OnTestIterationStart(const UnitTest& /*unit_test*/, @@ -76,43 +66,43 @@ class EventRecordingListener : public TestEventListener { Message message; message << GetFullMethodName("OnTestIterationStart") << "(" << iteration << ")"; - g_events->PushBack(message.GetString()); + g_events->push_back(message.GetString()); } virtual void OnEnvironmentsSetUpStart(const UnitTest& /*unit_test*/) { - g_events->PushBack(GetFullMethodName("OnEnvironmentsSetUpStart")); + g_events->push_back(GetFullMethodName("OnEnvironmentsSetUpStart")); } virtual void OnEnvironmentsSetUpEnd(const UnitTest& /*unit_test*/) { - g_events->PushBack(GetFullMethodName("OnEnvironmentsSetUpEnd")); + g_events->push_back(GetFullMethodName("OnEnvironmentsSetUpEnd")); } virtual void OnTestCaseStart(const TestCase& /*test_case*/) { - g_events->PushBack(GetFullMethodName("OnTestCaseStart")); + g_events->push_back(GetFullMethodName("OnTestCaseStart")); } virtual void OnTestStart(const TestInfo& /*test_info*/) { - g_events->PushBack(GetFullMethodName("OnTestStart")); + g_events->push_back(GetFullMethodName("OnTestStart")); } virtual void OnTestPartResult(const TestPartResult& /*test_part_result*/) { - g_events->PushBack(GetFullMethodName("OnTestPartResult")); + g_events->push_back(GetFullMethodName("OnTestPartResult")); } virtual void OnTestEnd(const TestInfo& /*test_info*/) { - g_events->PushBack(GetFullMethodName("OnTestEnd")); + g_events->push_back(GetFullMethodName("OnTestEnd")); } virtual void OnTestCaseEnd(const TestCase& /*test_case*/) { - g_events->PushBack(GetFullMethodName("OnTestCaseEnd")); + g_events->push_back(GetFullMethodName("OnTestCaseEnd")); } virtual void OnEnvironmentsTearDownStart(const UnitTest& /*unit_test*/) { - g_events->PushBack(GetFullMethodName("OnEnvironmentsTearDownStart")); + g_events->push_back(GetFullMethodName("OnEnvironmentsTearDownStart")); } virtual void OnEnvironmentsTearDownEnd(const UnitTest& /*unit_test*/) { - g_events->PushBack(GetFullMethodName("OnEnvironmentsTearDownEnd")); + g_events->push_back(GetFullMethodName("OnEnvironmentsTearDownEnd")); } virtual void OnTestIterationEnd(const UnitTest& /*unit_test*/, @@ -120,62 +110,60 @@ class EventRecordingListener : public TestEventListener { Message message; message << GetFullMethodName("OnTestIterationEnd") << "(" << iteration << ")"; - g_events->PushBack(message.GetString()); + g_events->push_back(message.GetString()); } virtual void OnTestProgramEnd(const UnitTest& /*unit_test*/) { - g_events->PushBack(GetFullMethodName("OnTestProgramEnd")); + g_events->push_back(GetFullMethodName("OnTestProgramEnd")); } private: - String GetFullMethodName(const char* name) { - Message message; - message << name_ << "." << name; - return message.GetString(); + std::string GetFullMethodName(const char* name) { + return name_ + "." + name; } - String name_; + std::string name_; }; class EnvironmentInvocationCatcher : public Environment { protected: virtual void SetUp() { - g_events->PushBack(String("Environment::SetUp")); + g_events->push_back("Environment::SetUp"); } virtual void TearDown() { - g_events->PushBack(String("Environment::TearDown")); + g_events->push_back("Environment::TearDown"); } }; class ListenerTest : public Test { protected: static void SetUpTestCase() { - g_events->PushBack(String("ListenerTest::SetUpTestCase")); + g_events->push_back("ListenerTest::SetUpTestCase"); } static void TearDownTestCase() { - g_events->PushBack(String("ListenerTest::TearDownTestCase")); + g_events->push_back("ListenerTest::TearDownTestCase"); } virtual void SetUp() { - g_events->PushBack(String("ListenerTest::SetUp")); + g_events->push_back("ListenerTest::SetUp"); } virtual void TearDown() { - g_events->PushBack(String("ListenerTest::TearDown")); + g_events->push_back("ListenerTest::TearDown"); } }; TEST_F(ListenerTest, DoesFoo) { // Test execution order within a test case is not guaranteed so we are not // recording the test name. - g_events->PushBack(String("ListenerTest::* Test Body")); + g_events->push_back("ListenerTest::* Test Body"); SUCCEED(); // Triggers OnTestPartResult. } TEST_F(ListenerTest, DoesBar) { - g_events->PushBack(String("ListenerTest::* Test Body")); + g_events->push_back("ListenerTest::* Test Body"); SUCCEED(); // Triggers OnTestPartResult. } @@ -186,7 +174,7 @@ TEST_F(ListenerTest, DoesBar) { using ::testing::internal::EnvironmentInvocationCatcher; using ::testing::internal::EventRecordingListener; -void VerifyResults(const Vector& data, +void VerifyResults(const std::vector& data, const char* const* expected_data, int expected_data_size) { const int actual_size = data.size(); @@ -199,18 +187,18 @@ void VerifyResults(const Vector& data, expected_data_size : actual_size; int i = 0; for (; i < shorter_size; ++i) { - ASSERT_STREQ(expected_data[i], data.GetElement(i).c_str()) + ASSERT_STREQ(expected_data[i], data[i].c_str()) << "at position " << i; } // Prints extra elements in the actual data. for (; i < actual_size; ++i) { - printf(" Actual event #%d: %s\n", i, data.GetElement(i).c_str()); + printf(" Actual event #%d: %s\n", i, data[i].c_str()); } } int main(int argc, char **argv) { - Vector events; + std::vector events; g_events = &events; InitGoogleTest(&argc, argv); diff --git a/cpp/thirdparty/protobuf-2.3.0/gtest/test/gtest-message_test.cc b/cpp/thirdparty/protobuf-2.5.0/gtest/test/gtest-message_test.cc similarity index 68% rename from cpp/thirdparty/protobuf-2.3.0/gtest/test/gtest-message_test.cc rename to cpp/thirdparty/protobuf-2.5.0/gtest/test/gtest-message_test.cc index 6c43c33d1..175238ef4 100644 --- a/cpp/thirdparty/protobuf-2.3.0/gtest/test/gtest-message_test.cc +++ b/cpp/thirdparty/protobuf-2.5.0/gtest/test/gtest-message_test.cc @@ -31,76 +31,80 @@ // // Tests for the Message class. -#include +#include "gtest/gtest-message.h" -#include +#include "gtest/gtest.h" namespace { using ::testing::Message; -using ::testing::internal::StrStream; - -// A helper function that turns a Message into a C string. -const char* ToCString(const Message& msg) { - static testing::internal::String result; - result = msg.GetString(); - return result.c_str(); -} // Tests the testing::Message class // Tests the default constructor. TEST(MessageTest, DefaultConstructor) { const Message msg; - EXPECT_STREQ("", ToCString(msg)); + EXPECT_EQ("", msg.GetString()); } // Tests the copy constructor. TEST(MessageTest, CopyConstructor) { const Message msg1("Hello"); const Message msg2(msg1); - EXPECT_STREQ("Hello", ToCString(msg2)); + EXPECT_EQ("Hello", msg2.GetString()); } // Tests constructing a Message from a C-string. TEST(MessageTest, ConstructsFromCString) { Message msg("Hello"); - EXPECT_STREQ("Hello", ToCString(msg)); + EXPECT_EQ("Hello", msg.GetString()); +} + +// Tests streaming a float. +TEST(MessageTest, StreamsFloat) { + const std::string s = (Message() << 1.23456F << " " << 2.34567F).GetString(); + // Both numbers should be printed with enough precision. + EXPECT_PRED_FORMAT2(testing::IsSubstring, "1.234560", s.c_str()); + EXPECT_PRED_FORMAT2(testing::IsSubstring, " 2.345669", s.c_str()); +} + +// Tests streaming a double. +TEST(MessageTest, StreamsDouble) { + const std::string s = (Message() << 1260570880.4555497 << " " + << 1260572265.1954534).GetString(); + // Both numbers should be printed with enough precision. + EXPECT_PRED_FORMAT2(testing::IsSubstring, "1260570880.45", s.c_str()); + EXPECT_PRED_FORMAT2(testing::IsSubstring, " 1260572265.19", s.c_str()); } // Tests streaming a non-char pointer. TEST(MessageTest, StreamsPointer) { int n = 0; int* p = &n; - EXPECT_STRNE("(null)", ToCString(Message() << p)); + EXPECT_NE("(null)", (Message() << p).GetString()); } // Tests streaming a NULL non-char pointer. TEST(MessageTest, StreamsNullPointer) { int* p = NULL; - EXPECT_STREQ("(null)", ToCString(Message() << p)); + EXPECT_EQ("(null)", (Message() << p).GetString()); } // Tests streaming a C string. TEST(MessageTest, StreamsCString) { - EXPECT_STREQ("Foo", ToCString(Message() << "Foo")); + EXPECT_EQ("Foo", (Message() << "Foo").GetString()); } // Tests streaming a NULL C string. TEST(MessageTest, StreamsNullCString) { char* p = NULL; - EXPECT_STREQ("(null)", ToCString(Message() << p)); + EXPECT_EQ("(null)", (Message() << p).GetString()); } -#if GTEST_HAS_STD_STRING - // Tests streaming std::string. -// -// As std::string has problem in MSVC when exception is disabled, we only -// test this where std::string can be used. TEST(MessageTest, StreamsString) { const ::std::string str("Hello"); - EXPECT_STREQ("Hello", ToCString(Message() << str)); + EXPECT_EQ("Hello", (Message() << str).GetString()); } // Tests that we can output strings containing embedded NULs. @@ -109,44 +113,42 @@ TEST(MessageTest, StreamsStringWithEmbeddedNUL) { "Here's a NUL\0 and some more string"; const ::std::string string_with_nul(char_array_with_nul, sizeof(char_array_with_nul) - 1); - EXPECT_STREQ("Here's a NUL\\0 and some more string", - ToCString(Message() << string_with_nul)); + EXPECT_EQ("Here's a NUL\\0 and some more string", + (Message() << string_with_nul).GetString()); } -#endif // GTEST_HAS_STD_STRING - // Tests streaming a NUL char. TEST(MessageTest, StreamsNULChar) { - EXPECT_STREQ("\\0", ToCString(Message() << '\0')); + EXPECT_EQ("\\0", (Message() << '\0').GetString()); } // Tests streaming int. TEST(MessageTest, StreamsInt) { - EXPECT_STREQ("123", ToCString(Message() << 123)); + EXPECT_EQ("123", (Message() << 123).GetString()); } // Tests that basic IO manipulators (endl, ends, and flush) can be // streamed to Message. TEST(MessageTest, StreamsBasicIoManip) { - EXPECT_STREQ("Line 1.\nA NUL char \\0 in line 2.", - ToCString(Message() << "Line 1." << std::endl + EXPECT_EQ("Line 1.\nA NUL char \\0 in line 2.", + (Message() << "Line 1." << std::endl << "A NUL char " << std::ends << std::flush - << " in line 2.")); + << " in line 2.").GetString()); } // Tests Message::GetString() TEST(MessageTest, GetString) { Message msg; msg << 1 << " lamb"; - EXPECT_STREQ("1 lamb", msg.GetString().c_str()); + EXPECT_EQ("1 lamb", msg.GetString()); } // Tests streaming a Message object to an ostream. TEST(MessageTest, StreamsToOStream) { Message msg("Hello"); - StrStream ss; + ::std::stringstream ss; ss << msg; - EXPECT_STREQ("Hello", testing::internal::StrStreamToString(&ss).c_str()); + EXPECT_EQ("Hello", testing::internal::StringStreamToString(&ss)); } // Tests that a Message object doesn't take up too much stack space. diff --git a/cpp/thirdparty/protobuf-2.5.0/gtest/test/gtest-options_test.cc b/cpp/thirdparty/protobuf-2.5.0/gtest/test/gtest-options_test.cc new file mode 100644 index 000000000..5586dc3b1 --- /dev/null +++ b/cpp/thirdparty/protobuf-2.5.0/gtest/test/gtest-options_test.cc @@ -0,0 +1,215 @@ +// Copyright 2008, Google Inc. +// All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Authors: keith.ray@gmail.com (Keith Ray) +// +// Google Test UnitTestOptions tests +// +// This file tests classes and functions used internally by +// Google Test. They are subject to change without notice. +// +// This file is #included from gtest.cc, to avoid changing build or +// make-files on Windows and other platforms. Do not #include this file +// anywhere else! + +#include "gtest/gtest.h" + +#if GTEST_OS_WINDOWS_MOBILE +# include +#elif GTEST_OS_WINDOWS +# include +#endif // GTEST_OS_WINDOWS_MOBILE + +// Indicates that this translation unit is part of Google Test's +// implementation. It must come before gtest-internal-inl.h is +// included, or there will be a compiler error. This trick is to +// prevent a user from accidentally including gtest-internal-inl.h in +// his code. +#define GTEST_IMPLEMENTATION_ 1 +#include "src/gtest-internal-inl.h" +#undef GTEST_IMPLEMENTATION_ + +namespace testing { +namespace internal { +namespace { + +// Turns the given relative path into an absolute path. +FilePath GetAbsolutePathOf(const FilePath& relative_path) { + return FilePath::ConcatPaths(FilePath::GetCurrentDir(), relative_path); +} + +// Testing UnitTestOptions::GetOutputFormat/GetOutputFile. + +TEST(XmlOutputTest, GetOutputFormatDefault) { + GTEST_FLAG(output) = ""; + EXPECT_STREQ("", UnitTestOptions::GetOutputFormat().c_str()); +} + +TEST(XmlOutputTest, GetOutputFormat) { + GTEST_FLAG(output) = "xml:filename"; + EXPECT_STREQ("xml", UnitTestOptions::GetOutputFormat().c_str()); +} + +TEST(XmlOutputTest, GetOutputFileDefault) { + GTEST_FLAG(output) = ""; + EXPECT_EQ(GetAbsolutePathOf(FilePath("test_detail.xml")).string(), + UnitTestOptions::GetAbsolutePathToOutputFile()); +} + +TEST(XmlOutputTest, GetOutputFileSingleFile) { + GTEST_FLAG(output) = "xml:filename.abc"; + EXPECT_EQ(GetAbsolutePathOf(FilePath("filename.abc")).string(), + UnitTestOptions::GetAbsolutePathToOutputFile()); +} + +TEST(XmlOutputTest, GetOutputFileFromDirectoryPath) { + GTEST_FLAG(output) = "xml:path" GTEST_PATH_SEP_; + const std::string expected_output_file = + GetAbsolutePathOf( + FilePath(std::string("path") + GTEST_PATH_SEP_ + + GetCurrentExecutableName().string() + ".xml")).string(); + const std::string& output_file = + UnitTestOptions::GetAbsolutePathToOutputFile(); +#if GTEST_OS_WINDOWS + EXPECT_STRCASEEQ(expected_output_file.c_str(), output_file.c_str()); +#else + EXPECT_EQ(expected_output_file, output_file.c_str()); +#endif +} + +TEST(OutputFileHelpersTest, GetCurrentExecutableName) { + const std::string exe_str = GetCurrentExecutableName().string(); +#if GTEST_OS_WINDOWS + const bool success = + _strcmpi("gtest-options_test", exe_str.c_str()) == 0 || + _strcmpi("gtest-options-ex_test", exe_str.c_str()) == 0 || + _strcmpi("gtest_all_test", exe_str.c_str()) == 0 || + _strcmpi("gtest_dll_test", exe_str.c_str()) == 0; +#else + // TODO(wan@google.com): remove the hard-coded "lt-" prefix when + // Chandler Carruth's libtool replacement is ready. + const bool success = + exe_str == "gtest-options_test" || + exe_str == "gtest_all_test" || + exe_str == "lt-gtest_all_test" || + exe_str == "gtest_dll_test"; +#endif // GTEST_OS_WINDOWS + if (!success) + FAIL() << "GetCurrentExecutableName() returns " << exe_str; +} + +class XmlOutputChangeDirTest : public Test { + protected: + virtual void SetUp() { + original_working_dir_ = FilePath::GetCurrentDir(); + posix::ChDir(".."); + // This will make the test fail if run from the root directory. + EXPECT_NE(original_working_dir_.string(), + FilePath::GetCurrentDir().string()); + } + + virtual void TearDown() { + posix::ChDir(original_working_dir_.string().c_str()); + } + + FilePath original_working_dir_; +}; + +TEST_F(XmlOutputChangeDirTest, PreserveOriginalWorkingDirWithDefault) { + GTEST_FLAG(output) = ""; + EXPECT_EQ(FilePath::ConcatPaths(original_working_dir_, + FilePath("test_detail.xml")).string(), + UnitTestOptions::GetAbsolutePathToOutputFile()); +} + +TEST_F(XmlOutputChangeDirTest, PreserveOriginalWorkingDirWithDefaultXML) { + GTEST_FLAG(output) = "xml"; + EXPECT_EQ(FilePath::ConcatPaths(original_working_dir_, + FilePath("test_detail.xml")).string(), + UnitTestOptions::GetAbsolutePathToOutputFile()); +} + +TEST_F(XmlOutputChangeDirTest, PreserveOriginalWorkingDirWithRelativeFile) { + GTEST_FLAG(output) = "xml:filename.abc"; + EXPECT_EQ(FilePath::ConcatPaths(original_working_dir_, + FilePath("filename.abc")).string(), + UnitTestOptions::GetAbsolutePathToOutputFile()); +} + +TEST_F(XmlOutputChangeDirTest, PreserveOriginalWorkingDirWithRelativePath) { + GTEST_FLAG(output) = "xml:path" GTEST_PATH_SEP_; + const std::string expected_output_file = + FilePath::ConcatPaths( + original_working_dir_, + FilePath(std::string("path") + GTEST_PATH_SEP_ + + GetCurrentExecutableName().string() + ".xml")).string(); + const std::string& output_file = + UnitTestOptions::GetAbsolutePathToOutputFile(); +#if GTEST_OS_WINDOWS + EXPECT_STRCASEEQ(expected_output_file.c_str(), output_file.c_str()); +#else + EXPECT_EQ(expected_output_file, output_file.c_str()); +#endif +} + +TEST_F(XmlOutputChangeDirTest, PreserveOriginalWorkingDirWithAbsoluteFile) { +#if GTEST_OS_WINDOWS + GTEST_FLAG(output) = "xml:c:\\tmp\\filename.abc"; + EXPECT_EQ(FilePath("c:\\tmp\\filename.abc").string(), + UnitTestOptions::GetAbsolutePathToOutputFile()); +#else + GTEST_FLAG(output) ="xml:/tmp/filename.abc"; + EXPECT_EQ(FilePath("/tmp/filename.abc").string(), + UnitTestOptions::GetAbsolutePathToOutputFile()); +#endif +} + +TEST_F(XmlOutputChangeDirTest, PreserveOriginalWorkingDirWithAbsolutePath) { +#if GTEST_OS_WINDOWS + const std::string path = "c:\\tmp\\"; +#else + const std::string path = "/tmp/"; +#endif + + GTEST_FLAG(output) = "xml:" + path; + const std::string expected_output_file = + path + GetCurrentExecutableName().string() + ".xml"; + const std::string& output_file = + UnitTestOptions::GetAbsolutePathToOutputFile(); + +#if GTEST_OS_WINDOWS + EXPECT_STRCASEEQ(expected_output_file.c_str(), output_file.c_str()); +#else + EXPECT_EQ(expected_output_file, output_file.c_str()); +#endif +} + +} // namespace +} // namespace internal +} // namespace testing diff --git a/cpp/thirdparty/protobuf-2.3.0/gtest/test/gtest-param-test2_test.cc b/cpp/thirdparty/protobuf-2.5.0/gtest/test/gtest-param-test2_test.cc similarity index 99% rename from cpp/thirdparty/protobuf-2.3.0/gtest/test/gtest-param-test2_test.cc rename to cpp/thirdparty/protobuf-2.5.0/gtest/test/gtest-param-test2_test.cc index ccb6cfac9..4a782fe70 100644 --- a/cpp/thirdparty/protobuf-2.3.0/gtest/test/gtest-param-test2_test.cc +++ b/cpp/thirdparty/protobuf-2.5.0/gtest/test/gtest-param-test2_test.cc @@ -32,7 +32,7 @@ // Tests for Google Test itself. This verifies that the basic constructs of // Google Test work. -#include +#include "gtest/gtest.h" #include "test/gtest-param-test_test.h" diff --git a/cpp/thirdparty/protobuf-2.3.0/gtest/test/gtest-param-test_test.cc b/cpp/thirdparty/protobuf-2.5.0/gtest/test/gtest-param-test_test.cc similarity index 82% rename from cpp/thirdparty/protobuf-2.3.0/gtest/test/gtest-param-test_test.cc rename to cpp/thirdparty/protobuf-2.5.0/gtest/test/gtest-param-test_test.cc index ecb5fdbba..7b6f7e244 100644 --- a/cpp/thirdparty/protobuf-2.3.0/gtest/test/gtest-param-test_test.cc +++ b/cpp/thirdparty/protobuf-2.5.0/gtest/test/gtest-param-test_test.cc @@ -33,21 +33,23 @@ // generators objects produce correct parameter sequences and that // Google Test runtime instantiates correct tests from those sequences. -#include +#include "gtest/gtest.h" #if GTEST_HAS_PARAM_TEST -#include -#include -#include -#include +# include +# include +# include +# include +# include +# include // To include gtest-internal-inl.h. -#define GTEST_IMPLEMENTATION_ 1 -#include "src/gtest-internal-inl.h" // for UnitTestOptions -#undef GTEST_IMPLEMENTATION_ +# define GTEST_IMPLEMENTATION_ 1 +# include "src/gtest-internal-inl.h" // for UnitTestOptions +# undef GTEST_IMPLEMENTATION_ -#include "test/gtest-param-test_test.h" +# include "test/gtest-param-test_test.h" using ::std::vector; using ::std::sort; @@ -60,16 +62,67 @@ using ::testing::TestWithParam; using ::testing::Values; using ::testing::ValuesIn; -#if GTEST_HAS_COMBINE +# if GTEST_HAS_COMBINE using ::testing::Combine; using ::std::tr1::get; using ::std::tr1::make_tuple; using ::std::tr1::tuple; -#endif // GTEST_HAS_COMBINE +# endif // GTEST_HAS_COMBINE using ::testing::internal::ParamGenerator; using ::testing::internal::UnitTestOptions; +// Prints a value to a string. +// +// TODO(wan@google.com): remove PrintValue() when we move matchers and +// EXPECT_THAT() from Google Mock to Google Test. At that time, we +// can write EXPECT_THAT(x, Eq(y)) to compare two tuples x and y, as +// EXPECT_THAT() and the matchers know how to print tuples. +template +::std::string PrintValue(const T& value) { + ::std::stringstream stream; + stream << value; + return stream.str(); +} + +# if GTEST_HAS_COMBINE + +// These overloads allow printing tuples in our tests. We cannot +// define an operator<< for tuples, as that definition needs to be in +// the std namespace in order to be picked up by Google Test via +// Argument-Dependent Lookup, yet defining anything in the std +// namespace in non-STL code is undefined behavior. + +template +::std::string PrintValue(const tuple& value) { + ::std::stringstream stream; + stream << "(" << get<0>(value) << ", " << get<1>(value) << ")"; + return stream.str(); +} + +template +::std::string PrintValue(const tuple& value) { + ::std::stringstream stream; + stream << "(" << get<0>(value) << ", " << get<1>(value) + << ", "<< get<2>(value) << ")"; + return stream.str(); +} + +template +::std::string PrintValue( + const tuple& value) { + ::std::stringstream stream; + stream << "(" << get<0>(value) << ", " << get<1>(value) + << ", "<< get<2>(value) << ", " << get<3>(value) + << ", "<< get<4>(value) << ", " << get<5>(value) + << ", "<< get<6>(value) << ", " << get<7>(value) + << ", "<< get<8>(value) << ", " << get<9>(value) << ")"; + return stream.str(); +} + +# endif // GTEST_HAS_COMBINE + // Verifies that a sequence generated by the generator and accessed // via the iterator object matches the expected one using Google Test // assertions. @@ -80,15 +133,19 @@ void VerifyGenerator(const ParamGenerator& generator, for (size_t i = 0; i < N; ++i) { ASSERT_FALSE(it == generator.end()) << "At element " << i << " when accessing via an iterator " - << "created with the copy constructor." << std::endl; - EXPECT_EQ(expected_values[i], *it) - << "At element " << i << " when accessing via an iterator " - << "created with the copy constructor." << std::endl; + << "created with the copy constructor.\n"; + // We cannot use EXPECT_EQ() here as the values may be tuples, + // which don't support <<. + EXPECT_TRUE(expected_values[i] == *it) + << "where i is " << i + << ", expected_values[i] is " << PrintValue(expected_values[i]) + << ", *it is " << PrintValue(*it) + << ", and 'it' is an iterator created with the copy constructor.\n"; it++; } EXPECT_TRUE(it == generator.end()) << "At the presumed end of sequence when accessing via an iterator " - << "created with the copy constructor." << std::endl; + << "created with the copy constructor.\n"; // Test the iterator assignment. The following lines verify that // the sequence accessed via an iterator initialized via the @@ -98,15 +155,17 @@ void VerifyGenerator(const ParamGenerator& generator, for (size_t i = 0; i < N; ++i) { ASSERT_FALSE(it == generator.end()) << "At element " << i << " when accessing via an iterator " - << "created with the assignment operator." << std::endl; - EXPECT_EQ(expected_values[i], *it) - << "At element " << i << " when accessing via an iterator " - << "created with the assignment operator." << std::endl; + << "created with the assignment operator.\n"; + EXPECT_TRUE(expected_values[i] == *it) + << "where i is " << i + << ", expected_values[i] is " << PrintValue(expected_values[i]) + << ", *it is " << PrintValue(*it) + << ", and 'it' is an iterator created with the copy constructor.\n"; it++; } EXPECT_TRUE(it == generator.end()) << "At the presumed end of sequence when accessing via an iterator " - << "created with the assignment operator." << std::endl; + << "created with the assignment operator.\n"; } template @@ -205,7 +264,7 @@ TEST(RangeTest, IntRangeWithCustomStepOverUpperBound) { // copy constructor, operator=(), operator+(), and operator<(). class DogAdder { public: - explicit DogAdder(const char* value) : value_(value) {} + explicit DogAdder(const char* a_value) : value_(a_value) {} DogAdder(const DogAdder& other) : value_(other.value_.c_str()) {} DogAdder operator=(const DogAdder& other) { @@ -221,10 +280,10 @@ class DogAdder { bool operator<(const DogAdder& other) const { return value_ < other.value_; } - const ::testing::internal::String& value() const { return value_; } + const std::string& value() const { return value_; } private: - ::testing::internal::String value_; + std::string value_; }; TEST(RangeTest, WorksWithACustomType) { @@ -243,7 +302,7 @@ TEST(RangeTest, WorksWithACustomType) { class IntWrapper { public: - explicit IntWrapper(int value) : value_(value) {} + explicit IntWrapper(int a_value) : value_(a_value) {} IntWrapper(const IntWrapper& other) : value_(other.value_) {} IntWrapper operator=(const IntWrapper& other) { @@ -398,34 +457,7 @@ TEST(BoolTest, BoolWorks) { VerifyGenerator(gen, expected_values); } -#if GTEST_HAS_COMBINE - -template -::std::ostream& operator<<(::std::ostream& stream, const tuple& value) { - stream << "(" << get<0>(value) << ", " << get<1>(value) << ")"; - return stream; -} - -template -::std::ostream& operator<<(::std::ostream& stream, - const tuple& value) { - stream << "(" << get<0>(value) << ", " << get<1>(value) - << ", "<< get<2>(value) << ")"; - return stream; -} - -template -::std::ostream& operator<<( - ::std::ostream& stream, - const tuple& value) { - stream << "(" << get<0>(value) << ", " << get<1>(value) - << ", "<< get<2>(value) << ", " << get<3>(value) - << ", "<< get<4>(value) << ", " << get<5>(value) - << ", "<< get<6>(value) << ", " << get<7>(value) - << ", "<< get<8>(value) << ", " << get<9>(value) << ")"; - return stream; -} +# if GTEST_HAS_COMBINE // Tests that Combine() with two parameters generates the expected sequence. TEST(CombineTest, CombineWithTwoParameters) { @@ -510,7 +542,7 @@ TEST(CombineTest, CombineWithMaxNumberOfParameters) { VerifyGenerator(gen, expected_values); } -#endif // GTEST_HAS_COMBINE +# endif // GTEST_HAS_COMBINE // Tests that an generator produces correct sequence after being // assigned from another generator. @@ -574,6 +606,7 @@ class TestGenerationEnvironment : public ::testing::Environment { << "has not been run as expected."; } } + private: TestGenerationEnvironment() : fixture_constructor_count_(0), set_up_count_(0), tear_down_count_(0), test_body_count_(0) {} @@ -642,6 +675,7 @@ class TestGenerationTest : public TestWithParam { EXPECT_TRUE(collected_parameters_ == expected_values); } + protected: int current_parameter_; static vector collected_parameters_; @@ -660,13 +694,15 @@ INSTANTIATE_TEST_CASE_P(TestExpansionModule, TestGenerationTest, ValuesIn(test_generation_params)); // This test verifies that the element sequence (third parameter of -// INSTANTIATE_TEST_CASE_P) is evaluated in RUN_ALL_TESTS and not at the call -// site of INSTANTIATE_TEST_CASE_P. -// For that, we declare param_value_ to be a static member of -// GeneratorEvaluationTest and initialize it to 0. We set it to 1 in main(), -// just before invocation of RUN_ALL_TESTS. If the sequence is evaluated -// before that moment, INSTANTIATE_TEST_CASE_P will create a test with -// parameter 0, and the test body will fail the assertion. +// INSTANTIATE_TEST_CASE_P) is evaluated in InitGoogleTest() and neither at +// the call site of INSTANTIATE_TEST_CASE_P nor in RUN_ALL_TESTS(). For +// that, we declare param_value_ to be a static member of +// GeneratorEvaluationTest and initialize it to 0. We set it to 1 in +// main(), just before invocation of InitGoogleTest(). After calling +// InitGoogleTest(), we set the value to 2. If the sequence is evaluated +// before or after InitGoogleTest, INSTANTIATE_TEST_CASE_P will create a +// test with parameter other than 1, and the test body will fail the +// assertion. class GeneratorEvaluationTest : public TestWithParam { public: static int param_value() { return param_value_; } @@ -758,19 +794,79 @@ INSTANTIATE_TEST_CASE_P(FourElemSequence, SeparateInstanceTest, Range(1, 4)); // sequence element used to instantiate the test. class NamingTest : public TestWithParam {}; -TEST_P(NamingTest, TestsAreNamedAppropriately) { +TEST_P(NamingTest, TestsReportCorrectNamesAndParameters) { const ::testing::TestInfo* const test_info = ::testing::UnitTest::GetInstance()->current_test_info(); EXPECT_STREQ("ZeroToFiveSequence/NamingTest", test_info->test_case_name()); - Message msg; - msg << "TestsAreNamedAppropriately/" << GetParam(); - EXPECT_STREQ(msg.GetString().c_str(), test_info->name()); + Message index_stream; + index_stream << "TestsReportCorrectNamesAndParameters/" << GetParam(); + EXPECT_STREQ(index_stream.GetString().c_str(), test_info->name()); + + EXPECT_EQ(::testing::PrintToString(GetParam()), test_info->value_param()); } INSTANTIATE_TEST_CASE_P(ZeroToFiveSequence, NamingTest, Range(0, 5)); +// Class that cannot be streamed into an ostream. It needs to be copyable +// (and, in case of MSVC, also assignable) in order to be a test parameter +// type. Its default copy constructor and assignment operator do exactly +// what we need. +class Unstreamable { + public: + explicit Unstreamable(int value) : value_(value) {} + + private: + int value_; +}; + +class CommentTest : public TestWithParam {}; + +TEST_P(CommentTest, TestsCorrectlyReportUnstreamableParams) { + const ::testing::TestInfo* const test_info = + ::testing::UnitTest::GetInstance()->current_test_info(); + + EXPECT_EQ(::testing::PrintToString(GetParam()), test_info->value_param()); +} + +INSTANTIATE_TEST_CASE_P(InstantiationWithComments, + CommentTest, + Values(Unstreamable(1))); + +// Verify that we can create a hierarchy of test fixtures, where the base +// class fixture is not parameterized and the derived class is. In this case +// ParameterizedDerivedTest inherits from NonParameterizedBaseTest. We +// perform simple tests on both. +class NonParameterizedBaseTest : public ::testing::Test { + public: + NonParameterizedBaseTest() : n_(17) { } + protected: + int n_; +}; + +class ParameterizedDerivedTest : public NonParameterizedBaseTest, + public ::testing::WithParamInterface { + protected: + ParameterizedDerivedTest() : count_(0) { } + int count_; + static int global_count_; +}; + +int ParameterizedDerivedTest::global_count_ = 0; + +TEST_F(NonParameterizedBaseTest, FixtureIsInitialized) { + EXPECT_EQ(17, n_); +} + +TEST_P(ParameterizedDerivedTest, SeesSequence) { + EXPECT_EQ(17, n_); + EXPECT_EQ(0, count_++); + EXPECT_EQ(GetParam(), global_count_++); +} + +INSTANTIATE_TEST_CASE_P(RangeZeroToFive, ParameterizedDerivedTest, Range(0, 5)); + #endif // GTEST_HAS_PARAM_TEST TEST(CompileTest, CombineIsDefinedOnlyWhenGtestHasParamTestIsDefined) { @@ -783,10 +879,19 @@ int main(int argc, char **argv) { #if GTEST_HAS_PARAM_TEST // Used in TestGenerationTest test case. AddGlobalTestEnvironment(TestGenerationTest::Environment::Instance()); - // Used in GeneratorEvaluationTest test case. + // Used in GeneratorEvaluationTest test case. Tests that the updated value + // will be picked up for instantiating tests in GeneratorEvaluationTest. GeneratorEvaluationTest::set_param_value(1); #endif // GTEST_HAS_PARAM_TEST ::testing::InitGoogleTest(&argc, argv); + +#if GTEST_HAS_PARAM_TEST + // Used in GeneratorEvaluationTest test case. Tests that value updated + // here will NOT be used for instantiating tests in + // GeneratorEvaluationTest. + GeneratorEvaluationTest::set_param_value(2); +#endif // GTEST_HAS_PARAM_TEST + return RUN_ALL_TESTS(); } diff --git a/cpp/thirdparty/protobuf-2.3.0/gtest/test/gtest-param-test_test.h b/cpp/thirdparty/protobuf-2.5.0/gtest/test/gtest-param-test_test.h similarity index 96% rename from cpp/thirdparty/protobuf-2.3.0/gtest/test/gtest-param-test_test.h rename to cpp/thirdparty/protobuf-2.5.0/gtest/test/gtest-param-test_test.h index b7f949361..26ea122b1 100644 --- a/cpp/thirdparty/protobuf-2.3.0/gtest/test/gtest-param-test_test.h +++ b/cpp/thirdparty/protobuf-2.5.0/gtest/test/gtest-param-test_test.h @@ -37,18 +37,20 @@ #ifndef GTEST_TEST_GTEST_PARAM_TEST_TEST_H_ #define GTEST_TEST_GTEST_PARAM_TEST_TEST_H_ -#include +#include "gtest/gtest.h" #if GTEST_HAS_PARAM_TEST // Test fixture for testing definition and instantiation of a test // in separate translation units. -class ExternalInstantiationTest : public ::testing::TestWithParam {}; +class ExternalInstantiationTest : public ::testing::TestWithParam { +}; // Test fixture for testing instantiation of a test in multiple // translation units. class InstantiationInMultipleTranslaionUnitsTest - : public ::testing::TestWithParam {}; + : public ::testing::TestWithParam { +}; #endif // GTEST_HAS_PARAM_TEST diff --git a/cpp/thirdparty/protobuf-2.3.0/gtest/test/gtest-port_test.cc b/cpp/thirdparty/protobuf-2.5.0/gtest/test/gtest-port_test.cc similarity index 51% rename from cpp/thirdparty/protobuf-2.3.0/gtest/test/gtest-port_test.cc rename to cpp/thirdparty/protobuf-2.5.0/gtest/test/gtest-port_test.cc index df59f9e8d..43f1f2010 100644 --- a/cpp/thirdparty/protobuf-2.3.0/gtest/test/gtest-port_test.cc +++ b/cpp/thirdparty/protobuf-2.5.0/gtest/test/gtest-port_test.cc @@ -31,15 +31,20 @@ // // This file tests the internal cross-platform support utilities. -#include +#include "gtest/internal/gtest-port.h" + +#include #if GTEST_OS_MAC -#include -#include +# include #endif // GTEST_OS_MAC -#include -#include +#include +#include // For std::pair and std::make_pair. +#include + +#include "gtest/gtest.h" +#include "gtest/gtest-spi.h" // Indicates that this translation unit is part of Google Test's // implementation. It must come before gtest-internal-inl.h is @@ -50,9 +55,188 @@ #include "src/gtest-internal-inl.h" #undef GTEST_IMPLEMENTATION_ +using std::make_pair; +using std::pair; + namespace testing { namespace internal { +TEST(IsXDigitTest, WorksForNarrowAscii) { + EXPECT_TRUE(IsXDigit('0')); + EXPECT_TRUE(IsXDigit('9')); + EXPECT_TRUE(IsXDigit('A')); + EXPECT_TRUE(IsXDigit('F')); + EXPECT_TRUE(IsXDigit('a')); + EXPECT_TRUE(IsXDigit('f')); + + EXPECT_FALSE(IsXDigit('-')); + EXPECT_FALSE(IsXDigit('g')); + EXPECT_FALSE(IsXDigit('G')); +} + +TEST(IsXDigitTest, ReturnsFalseForNarrowNonAscii) { + EXPECT_FALSE(IsXDigit(static_cast(0x80))); + EXPECT_FALSE(IsXDigit(static_cast('0' | 0x80))); +} + +TEST(IsXDigitTest, WorksForWideAscii) { + EXPECT_TRUE(IsXDigit(L'0')); + EXPECT_TRUE(IsXDigit(L'9')); + EXPECT_TRUE(IsXDigit(L'A')); + EXPECT_TRUE(IsXDigit(L'F')); + EXPECT_TRUE(IsXDigit(L'a')); + EXPECT_TRUE(IsXDigit(L'f')); + + EXPECT_FALSE(IsXDigit(L'-')); + EXPECT_FALSE(IsXDigit(L'g')); + EXPECT_FALSE(IsXDigit(L'G')); +} + +TEST(IsXDigitTest, ReturnsFalseForWideNonAscii) { + EXPECT_FALSE(IsXDigit(static_cast(0x80))); + EXPECT_FALSE(IsXDigit(static_cast(L'0' | 0x80))); + EXPECT_FALSE(IsXDigit(static_cast(L'0' | 0x100))); +} + +class Base { + public: + // Copy constructor and assignment operator do exactly what we need, so we + // use them. + Base() : member_(0) {} + explicit Base(int n) : member_(n) {} + virtual ~Base() {} + int member() { return member_; } + + private: + int member_; +}; + +class Derived : public Base { + public: + explicit Derived(int n) : Base(n) {} +}; + +TEST(ImplicitCastTest, ConvertsPointers) { + Derived derived(0); + EXPECT_TRUE(&derived == ::testing::internal::ImplicitCast_(&derived)); +} + +TEST(ImplicitCastTest, CanUseInheritance) { + Derived derived(1); + Base base = ::testing::internal::ImplicitCast_(derived); + EXPECT_EQ(derived.member(), base.member()); +} + +class Castable { + public: + explicit Castable(bool* converted) : converted_(converted) {} + operator Base() { + *converted_ = true; + return Base(); + } + + private: + bool* converted_; +}; + +TEST(ImplicitCastTest, CanUseNonConstCastOperator) { + bool converted = false; + Castable castable(&converted); + Base base = ::testing::internal::ImplicitCast_(castable); + EXPECT_TRUE(converted); +} + +class ConstCastable { + public: + explicit ConstCastable(bool* converted) : converted_(converted) {} + operator Base() const { + *converted_ = true; + return Base(); + } + + private: + bool* converted_; +}; + +TEST(ImplicitCastTest, CanUseConstCastOperatorOnConstValues) { + bool converted = false; + const ConstCastable const_castable(&converted); + Base base = ::testing::internal::ImplicitCast_(const_castable); + EXPECT_TRUE(converted); +} + +class ConstAndNonConstCastable { + public: + ConstAndNonConstCastable(bool* converted, bool* const_converted) + : converted_(converted), const_converted_(const_converted) {} + operator Base() { + *converted_ = true; + return Base(); + } + operator Base() const { + *const_converted_ = true; + return Base(); + } + + private: + bool* converted_; + bool* const_converted_; +}; + +TEST(ImplicitCastTest, CanSelectBetweenConstAndNonConstCasrAppropriately) { + bool converted = false; + bool const_converted = false; + ConstAndNonConstCastable castable(&converted, &const_converted); + Base base = ::testing::internal::ImplicitCast_(castable); + EXPECT_TRUE(converted); + EXPECT_FALSE(const_converted); + + converted = false; + const_converted = false; + const ConstAndNonConstCastable const_castable(&converted, &const_converted); + base = ::testing::internal::ImplicitCast_(const_castable); + EXPECT_FALSE(converted); + EXPECT_TRUE(const_converted); +} + +class To { + public: + To(bool* converted) { *converted = true; } // NOLINT +}; + +TEST(ImplicitCastTest, CanUseImplicitConstructor) { + bool converted = false; + To to = ::testing::internal::ImplicitCast_(&converted); + (void)to; + EXPECT_TRUE(converted); +} + +TEST(IteratorTraitsTest, WorksForSTLContainerIterators) { + StaticAssertTypeEq::const_iterator>::value_type>(); + StaticAssertTypeEq::iterator>::value_type>(); +} + +TEST(IteratorTraitsTest, WorksForPointerToNonConst) { + StaticAssertTypeEq::value_type>(); + StaticAssertTypeEq::value_type>(); +} + +TEST(IteratorTraitsTest, WorksForPointerToConst) { + StaticAssertTypeEq::value_type>(); + StaticAssertTypeEq::value_type>(); +} + +// Tests that the element_type typedef is available in scoped_ptr and refers +// to the parameter type. +TEST(ScopedPtrTest, DefinesElementType) { + StaticAssertTypeEq::element_type>(); +} + +// TODO(vladl@google.com): Implement THE REST of scoped_ptr tests. + TEST(GtestCheckSyntaxTest, BehavesLikeASingleStatement) { if (AlwaysFalse()) GTEST_CHECK_(false) << "This should never be executed; " @@ -77,14 +261,52 @@ TEST(GtestCheckSyntaxTest, WorksWithSwitch) { GTEST_CHECK_(true); } - switch(0) + switch (0) case 0: GTEST_CHECK_(true) << "Check failed in switch case"; } -#if GTEST_OS_MAC +// Verifies behavior of FormatFileLocation. +TEST(FormatFileLocationTest, FormatsFileLocation) { + EXPECT_PRED_FORMAT2(IsSubstring, "foo.cc", FormatFileLocation("foo.cc", 42)); + EXPECT_PRED_FORMAT2(IsSubstring, "42", FormatFileLocation("foo.cc", 42)); +} + +TEST(FormatFileLocationTest, FormatsUnknownFile) { + EXPECT_PRED_FORMAT2( + IsSubstring, "unknown file", FormatFileLocation(NULL, 42)); + EXPECT_PRED_FORMAT2(IsSubstring, "42", FormatFileLocation(NULL, 42)); +} + +TEST(FormatFileLocationTest, FormatsUknownLine) { + EXPECT_EQ("foo.cc:", FormatFileLocation("foo.cc", -1)); +} + +TEST(FormatFileLocationTest, FormatsUknownFileAndLine) { + EXPECT_EQ("unknown file:", FormatFileLocation(NULL, -1)); +} + +// Verifies behavior of FormatCompilerIndependentFileLocation. +TEST(FormatCompilerIndependentFileLocationTest, FormatsFileLocation) { + EXPECT_EQ("foo.cc:42", FormatCompilerIndependentFileLocation("foo.cc", 42)); +} + +TEST(FormatCompilerIndependentFileLocationTest, FormatsUknownFile) { + EXPECT_EQ("unknown file:42", + FormatCompilerIndependentFileLocation(NULL, 42)); +} + +TEST(FormatCompilerIndependentFileLocationTest, FormatsUknownLine) { + EXPECT_EQ("foo.cc", FormatCompilerIndependentFileLocation("foo.cc", -1)); +} + +TEST(FormatCompilerIndependentFileLocationTest, FormatsUknownFileAndLine) { + EXPECT_EQ("unknown file", FormatCompilerIndependentFileLocation(NULL, -1)); +} + +#if GTEST_OS_MAC || GTEST_OS_QNX void* ThreadFunc(void* data) { - pthread_mutex_t* mutex = reinterpret_cast(data); + pthread_mutex_t* mutex = static_cast(data); pthread_mutex_lock(mutex); pthread_mutex_unlock(mutex); return NULL; @@ -112,6 +334,8 @@ TEST(GetThreadCountTest, ReturnsCorrectValue) { void* dummy; ASSERT_EQ(0, pthread_join(thread_id, &dummy)); +# if GTEST_OS_MAC + // MacOS X may not immediately report the updated thread count after // joining a thread, causing flakiness in this test. To counter that, we // wait for up to .5 seconds for the OS to report the correct value. @@ -119,11 +343,11 @@ TEST(GetThreadCountTest, ReturnsCorrectValue) { if (GetThreadCount() == 1) break; - timespec time; - time.tv_sec = 0; - time.tv_nsec = 100L * 1000 * 1000; // .1 seconds. - nanosleep(&time, NULL); + SleepMilliseconds(100); } + +# endif // GTEST_OS_MAC + EXPECT_EQ(1U, GetThreadCount()); pthread_mutex_destroy(&mutex); } @@ -131,15 +355,17 @@ TEST(GetThreadCountTest, ReturnsCorrectValue) { TEST(GetThreadCountTest, ReturnsZeroWhenUnableToCountThreads) { EXPECT_EQ(0U, GetThreadCount()); } -#endif // GTEST_OS_MAC +#endif // GTEST_OS_MAC || GTEST_OS_QNX TEST(GtestCheckDeathTest, DiesWithCorrectOutputOnFailure) { const bool a_false_condition = false; const char regex[] = #ifdef _MSC_VER "gtest-port_test\\.cc\\(\\d+\\):" -#else +#elif GTEST_USES_POSIX_RE "gtest-port_test\\.cc:[0-9]+" +#else + "gtest-port_test\\.cc:\\d+" #endif // _MSC_VER ".*a_false_condition.*Extra info.*"; @@ -159,20 +385,35 @@ TEST(GtestCheckDeathTest, LivesSilentlyOnSuccess) { #endif // GTEST_HAS_DEATH_TEST +// Verifies that Google Test choose regular expression engine appropriate to +// the platform. The test will produce compiler errors in case of failure. +// For simplicity, we only cover the most important platforms here. +TEST(RegexEngineSelectionTest, SelectsCorrectRegexEngine) { +#if GTEST_HAS_POSIX_RE + + EXPECT_TRUE(GTEST_USES_POSIX_RE); + +#else + + EXPECT_TRUE(GTEST_USES_SIMPLE_RE); + +#endif +} + #if GTEST_USES_POSIX_RE +# if GTEST_HAS_TYPED_TEST + template class RETest : public ::testing::Test {}; // Defines StringTypes as the list of all string types that class RE // supports. typedef testing::Types< -#if GTEST_HAS_STD_STRING ::std::string, -#endif // GTEST_HAS_STD_STRING -#if GTEST_HAS_GLOBAL_STRING +# if GTEST_HAS_GLOBAL_STRING ::string, -#endif // GTEST_HAS_GLOBAL_STRING +# endif // GTEST_HAS_GLOBAL_STRING const char*> StringTypes; TYPED_TEST_CASE(RETest, StringTypes); @@ -223,6 +464,8 @@ TYPED_TEST(RETest, PartialMatchWorks) { EXPECT_FALSE(RE::PartialMatch(TypeParam("zza"), re)); } +# endif // GTEST_HAS_TYPED_TEST + #elif GTEST_USES_SIMPLE_RE TEST(IsInSetTest, NulCharIsNotInAnySet) { @@ -239,33 +482,33 @@ TEST(IsInSetTest, WorksForNonNulChars) { EXPECT_TRUE(IsInSet('b', "ab")); } -TEST(IsDigitTest, IsFalseForNonDigit) { - EXPECT_FALSE(IsDigit('\0')); - EXPECT_FALSE(IsDigit(' ')); - EXPECT_FALSE(IsDigit('+')); - EXPECT_FALSE(IsDigit('-')); - EXPECT_FALSE(IsDigit('.')); - EXPECT_FALSE(IsDigit('a')); +TEST(IsAsciiDigitTest, IsFalseForNonDigit) { + EXPECT_FALSE(IsAsciiDigit('\0')); + EXPECT_FALSE(IsAsciiDigit(' ')); + EXPECT_FALSE(IsAsciiDigit('+')); + EXPECT_FALSE(IsAsciiDigit('-')); + EXPECT_FALSE(IsAsciiDigit('.')); + EXPECT_FALSE(IsAsciiDigit('a')); } -TEST(IsDigitTest, IsTrueForDigit) { - EXPECT_TRUE(IsDigit('0')); - EXPECT_TRUE(IsDigit('1')); - EXPECT_TRUE(IsDigit('5')); - EXPECT_TRUE(IsDigit('9')); +TEST(IsAsciiDigitTest, IsTrueForDigit) { + EXPECT_TRUE(IsAsciiDigit('0')); + EXPECT_TRUE(IsAsciiDigit('1')); + EXPECT_TRUE(IsAsciiDigit('5')); + EXPECT_TRUE(IsAsciiDigit('9')); } -TEST(IsPunctTest, IsFalseForNonPunct) { - EXPECT_FALSE(IsPunct('\0')); - EXPECT_FALSE(IsPunct(' ')); - EXPECT_FALSE(IsPunct('\n')); - EXPECT_FALSE(IsPunct('a')); - EXPECT_FALSE(IsPunct('0')); +TEST(IsAsciiPunctTest, IsFalseForNonPunct) { + EXPECT_FALSE(IsAsciiPunct('\0')); + EXPECT_FALSE(IsAsciiPunct(' ')); + EXPECT_FALSE(IsAsciiPunct('\n')); + EXPECT_FALSE(IsAsciiPunct('a')); + EXPECT_FALSE(IsAsciiPunct('0')); } -TEST(IsPunctTest, IsTrueForPunct) { +TEST(IsAsciiPunctTest, IsTrueForPunct) { for (const char* p = "^-!\"#$%&'()*+,./:;<=>?@[\\]_`{|}~"; *p; p++) { - EXPECT_PRED1(IsPunct, *p); + EXPECT_PRED1(IsAsciiPunct, *p); } } @@ -283,47 +526,47 @@ TEST(IsRepeatTest, IsTrueForRepeatChar) { EXPECT_TRUE(IsRepeat('+')); } -TEST(IsWhiteSpaceTest, IsFalseForNonWhiteSpace) { - EXPECT_FALSE(IsWhiteSpace('\0')); - EXPECT_FALSE(IsWhiteSpace('a')); - EXPECT_FALSE(IsWhiteSpace('1')); - EXPECT_FALSE(IsWhiteSpace('+')); - EXPECT_FALSE(IsWhiteSpace('_')); +TEST(IsAsciiWhiteSpaceTest, IsFalseForNonWhiteSpace) { + EXPECT_FALSE(IsAsciiWhiteSpace('\0')); + EXPECT_FALSE(IsAsciiWhiteSpace('a')); + EXPECT_FALSE(IsAsciiWhiteSpace('1')); + EXPECT_FALSE(IsAsciiWhiteSpace('+')); + EXPECT_FALSE(IsAsciiWhiteSpace('_')); } -TEST(IsWhiteSpaceTest, IsTrueForWhiteSpace) { - EXPECT_TRUE(IsWhiteSpace(' ')); - EXPECT_TRUE(IsWhiteSpace('\n')); - EXPECT_TRUE(IsWhiteSpace('\r')); - EXPECT_TRUE(IsWhiteSpace('\t')); - EXPECT_TRUE(IsWhiteSpace('\v')); - EXPECT_TRUE(IsWhiteSpace('\f')); +TEST(IsAsciiWhiteSpaceTest, IsTrueForWhiteSpace) { + EXPECT_TRUE(IsAsciiWhiteSpace(' ')); + EXPECT_TRUE(IsAsciiWhiteSpace('\n')); + EXPECT_TRUE(IsAsciiWhiteSpace('\r')); + EXPECT_TRUE(IsAsciiWhiteSpace('\t')); + EXPECT_TRUE(IsAsciiWhiteSpace('\v')); + EXPECT_TRUE(IsAsciiWhiteSpace('\f')); } -TEST(IsWordCharTest, IsFalseForNonWordChar) { - EXPECT_FALSE(IsWordChar('\0')); - EXPECT_FALSE(IsWordChar('+')); - EXPECT_FALSE(IsWordChar('.')); - EXPECT_FALSE(IsWordChar(' ')); - EXPECT_FALSE(IsWordChar('\n')); +TEST(IsAsciiWordCharTest, IsFalseForNonWordChar) { + EXPECT_FALSE(IsAsciiWordChar('\0')); + EXPECT_FALSE(IsAsciiWordChar('+')); + EXPECT_FALSE(IsAsciiWordChar('.')); + EXPECT_FALSE(IsAsciiWordChar(' ')); + EXPECT_FALSE(IsAsciiWordChar('\n')); } -TEST(IsWordCharTest, IsTrueForLetter) { - EXPECT_TRUE(IsWordChar('a')); - EXPECT_TRUE(IsWordChar('b')); - EXPECT_TRUE(IsWordChar('A')); - EXPECT_TRUE(IsWordChar('Z')); +TEST(IsAsciiWordCharTest, IsTrueForLetter) { + EXPECT_TRUE(IsAsciiWordChar('a')); + EXPECT_TRUE(IsAsciiWordChar('b')); + EXPECT_TRUE(IsAsciiWordChar('A')); + EXPECT_TRUE(IsAsciiWordChar('Z')); } -TEST(IsWordCharTest, IsTrueForDigit) { - EXPECT_TRUE(IsWordChar('0')); - EXPECT_TRUE(IsWordChar('1')); - EXPECT_TRUE(IsWordChar('7')); - EXPECT_TRUE(IsWordChar('9')); +TEST(IsAsciiWordCharTest, IsTrueForDigit) { + EXPECT_TRUE(IsAsciiWordChar('0')); + EXPECT_TRUE(IsAsciiWordChar('1')); + EXPECT_TRUE(IsAsciiWordChar('7')); + EXPECT_TRUE(IsAsciiWordChar('9')); } -TEST(IsWordCharTest, IsTrueForUnderscore) { - EXPECT_TRUE(IsWordChar('_')); +TEST(IsAsciiWordCharTest, IsTrueForUnderscore) { + EXPECT_TRUE(IsAsciiWordChar('_')); } TEST(IsValidEscapeTest, IsFalseForNonPrintable) { @@ -689,11 +932,322 @@ TEST(RETest, PartialMatchWorks) { #endif // GTEST_USES_POSIX_RE -TEST(CaptureStderrTest, CapturesStdErr) { +#if !GTEST_OS_WINDOWS_MOBILE + +TEST(CaptureTest, CapturesStdout) { + CaptureStdout(); + fprintf(stdout, "abc"); + EXPECT_STREQ("abc", GetCapturedStdout().c_str()); + + CaptureStdout(); + fprintf(stdout, "def%cghi", '\0'); + EXPECT_EQ(::std::string("def\0ghi", 7), ::std::string(GetCapturedStdout())); +} + +TEST(CaptureTest, CapturesStderr) { + CaptureStderr(); + fprintf(stderr, "jkl"); + EXPECT_STREQ("jkl", GetCapturedStderr().c_str()); + CaptureStderr(); - fprintf(stderr, "abc"); - ASSERT_STREQ("abc", GetCapturedStderr().c_str()); + fprintf(stderr, "jkl%cmno", '\0'); + EXPECT_EQ(::std::string("jkl\0mno", 7), ::std::string(GetCapturedStderr())); +} + +// Tests that stdout and stderr capture don't interfere with each other. +TEST(CaptureTest, CapturesStdoutAndStderr) { + CaptureStdout(); + CaptureStderr(); + fprintf(stdout, "pqr"); + fprintf(stderr, "stu"); + EXPECT_STREQ("pqr", GetCapturedStdout().c_str()); + EXPECT_STREQ("stu", GetCapturedStderr().c_str()); +} + +TEST(CaptureDeathTest, CannotReenterStdoutCapture) { + CaptureStdout(); + EXPECT_DEATH_IF_SUPPORTED(CaptureStdout(), + "Only one stdout capturer can exist at a time"); + GetCapturedStdout(); + + // We cannot test stderr capturing using death tests as they use it + // themselves. +} + +#endif // !GTEST_OS_WINDOWS_MOBILE + +TEST(ThreadLocalTest, DefaultConstructorInitializesToDefaultValues) { + ThreadLocal t1; + EXPECT_EQ(0, t1.get()); + + ThreadLocal t2; + EXPECT_TRUE(t2.get() == NULL); +} + +TEST(ThreadLocalTest, SingleParamConstructorInitializesToParam) { + ThreadLocal t1(123); + EXPECT_EQ(123, t1.get()); + + int i = 0; + ThreadLocal t2(&i); + EXPECT_EQ(&i, t2.get()); +} + +class NoDefaultContructor { + public: + explicit NoDefaultContructor(const char*) {} + NoDefaultContructor(const NoDefaultContructor&) {} +}; + +TEST(ThreadLocalTest, ValueDefaultContructorIsNotRequiredForParamVersion) { + ThreadLocal bar(NoDefaultContructor("foo")); + bar.pointer(); +} + +TEST(ThreadLocalTest, GetAndPointerReturnSameValue) { + ThreadLocal thread_local_string; + + EXPECT_EQ(thread_local_string.pointer(), &(thread_local_string.get())); + + // Verifies the condition still holds after calling set. + thread_local_string.set("foo"); + EXPECT_EQ(thread_local_string.pointer(), &(thread_local_string.get())); +} + +TEST(ThreadLocalTest, PointerAndConstPointerReturnSameValue) { + ThreadLocal thread_local_string; + const ThreadLocal& const_thread_local_string = + thread_local_string; + + EXPECT_EQ(thread_local_string.pointer(), const_thread_local_string.pointer()); + + thread_local_string.set("foo"); + EXPECT_EQ(thread_local_string.pointer(), const_thread_local_string.pointer()); +} + +#if GTEST_IS_THREADSAFE + +void AddTwo(int* param) { *param += 2; } + +TEST(ThreadWithParamTest, ConstructorExecutesThreadFunc) { + int i = 40; + ThreadWithParam thread(&AddTwo, &i, NULL); + thread.Join(); + EXPECT_EQ(42, i); +} + +TEST(MutexDeathTest, AssertHeldShouldAssertWhenNotLocked) { + // AssertHeld() is flaky only in the presence of multiple threads accessing + // the lock. In this case, the test is robust. + EXPECT_DEATH_IF_SUPPORTED({ + Mutex m; + { MutexLock lock(&m); } + m.AssertHeld(); + }, + "thread .*hold"); +} + +TEST(MutexTest, AssertHeldShouldNotAssertWhenLocked) { + Mutex m; + MutexLock lock(&m); + m.AssertHeld(); } +class AtomicCounterWithMutex { + public: + explicit AtomicCounterWithMutex(Mutex* mutex) : + value_(0), mutex_(mutex), random_(42) {} + + void Increment() { + MutexLock lock(mutex_); + int temp = value_; + { + // Locking a mutex puts up a memory barrier, preventing reads and + // writes to value_ rearranged when observed from other threads. + // + // We cannot use Mutex and MutexLock here or rely on their memory + // barrier functionality as we are testing them here. + pthread_mutex_t memory_barrier_mutex; + GTEST_CHECK_POSIX_SUCCESS_( + pthread_mutex_init(&memory_barrier_mutex, NULL)); + GTEST_CHECK_POSIX_SUCCESS_(pthread_mutex_lock(&memory_barrier_mutex)); + + SleepMilliseconds(random_.Generate(30)); + + GTEST_CHECK_POSIX_SUCCESS_(pthread_mutex_unlock(&memory_barrier_mutex)); + GTEST_CHECK_POSIX_SUCCESS_(pthread_mutex_destroy(&memory_barrier_mutex)); + } + value_ = temp + 1; + } + int value() const { return value_; } + + private: + volatile int value_; + Mutex* const mutex_; // Protects value_. + Random random_; +}; + +void CountingThreadFunc(pair param) { + for (int i = 0; i < param.second; ++i) + param.first->Increment(); +} + +// Tests that the mutex only lets one thread at a time to lock it. +TEST(MutexTest, OnlyOneThreadCanLockAtATime) { + Mutex mutex; + AtomicCounterWithMutex locked_counter(&mutex); + + typedef ThreadWithParam > ThreadType; + const int kCycleCount = 20; + const int kThreadCount = 7; + scoped_ptr counting_threads[kThreadCount]; + Notification threads_can_start; + // Creates and runs kThreadCount threads that increment locked_counter + // kCycleCount times each. + for (int i = 0; i < kThreadCount; ++i) { + counting_threads[i].reset(new ThreadType(&CountingThreadFunc, + make_pair(&locked_counter, + kCycleCount), + &threads_can_start)); + } + threads_can_start.Notify(); + for (int i = 0; i < kThreadCount; ++i) + counting_threads[i]->Join(); + + // If the mutex lets more than one thread to increment the counter at a + // time, they are likely to encounter a race condition and have some + // increments overwritten, resulting in the lower then expected counter + // value. + EXPECT_EQ(kCycleCount * kThreadCount, locked_counter.value()); +} + +template +void RunFromThread(void (func)(T), T param) { + ThreadWithParam thread(func, param, NULL); + thread.Join(); +} + +void RetrieveThreadLocalValue( + pair*, std::string*> param) { + *param.second = param.first->get(); +} + +TEST(ThreadLocalTest, ParameterizedConstructorSetsDefault) { + ThreadLocal thread_local_string("foo"); + EXPECT_STREQ("foo", thread_local_string.get().c_str()); + + thread_local_string.set("bar"); + EXPECT_STREQ("bar", thread_local_string.get().c_str()); + + std::string result; + RunFromThread(&RetrieveThreadLocalValue, + make_pair(&thread_local_string, &result)); + EXPECT_STREQ("foo", result.c_str()); +} + +// DestructorTracker keeps track of whether its instances have been +// destroyed. +static std::vector g_destroyed; + +class DestructorTracker { + public: + DestructorTracker() : index_(GetNewIndex()) {} + DestructorTracker(const DestructorTracker& /* rhs */) + : index_(GetNewIndex()) {} + ~DestructorTracker() { + // We never access g_destroyed concurrently, so we don't need to + // protect the write operation under a mutex. + g_destroyed[index_] = true; + } + + private: + static int GetNewIndex() { + g_destroyed.push_back(false); + return g_destroyed.size() - 1; + } + const int index_; +}; + +typedef ThreadLocal* ThreadParam; + +void CallThreadLocalGet(ThreadParam thread_local_param) { + thread_local_param->get(); +} + +// Tests that when a ThreadLocal object dies in a thread, it destroys +// the managed object for that thread. +TEST(ThreadLocalTest, DestroysManagedObjectForOwnThreadWhenDying) { + g_destroyed.clear(); + + { + // The next line default constructs a DestructorTracker object as + // the default value of objects managed by thread_local_tracker. + ThreadLocal thread_local_tracker; + ASSERT_EQ(1U, g_destroyed.size()); + ASSERT_FALSE(g_destroyed[0]); + + // This creates another DestructorTracker object for the main thread. + thread_local_tracker.get(); + ASSERT_EQ(2U, g_destroyed.size()); + ASSERT_FALSE(g_destroyed[0]); + ASSERT_FALSE(g_destroyed[1]); + } + + // Now thread_local_tracker has died. It should have destroyed both the + // default value shared by all threads and the value for the main + // thread. + ASSERT_EQ(2U, g_destroyed.size()); + EXPECT_TRUE(g_destroyed[0]); + EXPECT_TRUE(g_destroyed[1]); + + g_destroyed.clear(); +} + +// Tests that when a thread exits, the thread-local object for that +// thread is destroyed. +TEST(ThreadLocalTest, DestroysManagedObjectAtThreadExit) { + g_destroyed.clear(); + + { + // The next line default constructs a DestructorTracker object as + // the default value of objects managed by thread_local_tracker. + ThreadLocal thread_local_tracker; + ASSERT_EQ(1U, g_destroyed.size()); + ASSERT_FALSE(g_destroyed[0]); + + // This creates another DestructorTracker object in the new thread. + ThreadWithParam thread( + &CallThreadLocalGet, &thread_local_tracker, NULL); + thread.Join(); + + // Now the new thread has exited. The per-thread object for it + // should have been destroyed. + ASSERT_EQ(2U, g_destroyed.size()); + ASSERT_FALSE(g_destroyed[0]); + ASSERT_TRUE(g_destroyed[1]); + } + + // Now thread_local_tracker has died. The default value should have been + // destroyed too. + ASSERT_EQ(2U, g_destroyed.size()); + EXPECT_TRUE(g_destroyed[0]); + EXPECT_TRUE(g_destroyed[1]); + + g_destroyed.clear(); +} + +TEST(ThreadLocalTest, ThreadLocalMutationsAffectOnlyCurrentThread) { + ThreadLocal thread_local_string; + thread_local_string.set("Foo"); + EXPECT_STREQ("Foo", thread_local_string.get().c_str()); + + std::string result; + RunFromThread(&RetrieveThreadLocalValue, + make_pair(&thread_local_string, &result)); + EXPECT_TRUE(result.empty()); +} + +#endif // GTEST_IS_THREADSAFE + } // namespace internal } // namespace testing diff --git a/cpp/thirdparty/protobuf-2.5.0/gtest/test/gtest-printers_test.cc b/cpp/thirdparty/protobuf-2.5.0/gtest/test/gtest-printers_test.cc new file mode 100644 index 000000000..45610f8fe --- /dev/null +++ b/cpp/thirdparty/protobuf-2.5.0/gtest/test/gtest-printers_test.cc @@ -0,0 +1,1561 @@ +// Copyright 2007, Google Inc. +// All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Author: wan@google.com (Zhanyong Wan) + +// Google Test - The Google C++ Testing Framework +// +// This file tests the universal value printer. + +#include "gtest/gtest-printers.h" + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include "gtest/gtest.h" + +// hash_map and hash_set are available under Visual C++. +#if _MSC_VER +# define GTEST_HAS_HASH_MAP_ 1 // Indicates that hash_map is available. +# include // NOLINT +# define GTEST_HAS_HASH_SET_ 1 // Indicates that hash_set is available. +# include // NOLINT +#endif // GTEST_OS_WINDOWS + +// Some user-defined types for testing the universal value printer. + +// An anonymous enum type. +enum AnonymousEnum { + kAE1 = -1, + kAE2 = 1 +}; + +// An enum without a user-defined printer. +enum EnumWithoutPrinter { + kEWP1 = -2, + kEWP2 = 42 +}; + +// An enum with a << operator. +enum EnumWithStreaming { + kEWS1 = 10 +}; + +std::ostream& operator<<(std::ostream& os, EnumWithStreaming e) { + return os << (e == kEWS1 ? "kEWS1" : "invalid"); +} + +// An enum with a PrintTo() function. +enum EnumWithPrintTo { + kEWPT1 = 1 +}; + +void PrintTo(EnumWithPrintTo e, std::ostream* os) { + *os << (e == kEWPT1 ? "kEWPT1" : "invalid"); +} + +// A class implicitly convertible to BiggestInt. +class BiggestIntConvertible { + public: + operator ::testing::internal::BiggestInt() const { return 42; } +}; + +// A user-defined unprintable class template in the global namespace. +template +class UnprintableTemplateInGlobal { + public: + UnprintableTemplateInGlobal() : value_() {} + private: + T value_; +}; + +// A user-defined streamable type in the global namespace. +class StreamableInGlobal { + public: + virtual ~StreamableInGlobal() {} +}; + +inline void operator<<(::std::ostream& os, const StreamableInGlobal& /* x */) { + os << "StreamableInGlobal"; +} + +void operator<<(::std::ostream& os, const StreamableInGlobal* /* x */) { + os << "StreamableInGlobal*"; +} + +namespace foo { + +// A user-defined unprintable type in a user namespace. +class UnprintableInFoo { + public: + UnprintableInFoo() : z_(0) { memcpy(xy_, "\xEF\x12\x0\x0\x34\xAB\x0\x0", 8); } + private: + char xy_[8]; + double z_; +}; + +// A user-defined printable type in a user-chosen namespace. +struct PrintableViaPrintTo { + PrintableViaPrintTo() : value() {} + int value; +}; + +void PrintTo(const PrintableViaPrintTo& x, ::std::ostream* os) { + *os << "PrintableViaPrintTo: " << x.value; +} + +// A type with a user-defined << for printing its pointer. +struct PointerPrintable { +}; + +::std::ostream& operator<<(::std::ostream& os, + const PointerPrintable* /* x */) { + return os << "PointerPrintable*"; +} + +// A user-defined printable class template in a user-chosen namespace. +template +class PrintableViaPrintToTemplate { + public: + explicit PrintableViaPrintToTemplate(const T& a_value) : value_(a_value) {} + + const T& value() const { return value_; } + private: + T value_; +}; + +template +void PrintTo(const PrintableViaPrintToTemplate& x, ::std::ostream* os) { + *os << "PrintableViaPrintToTemplate: " << x.value(); +} + +// A user-defined streamable class template in a user namespace. +template +class StreamableTemplateInFoo { + public: + StreamableTemplateInFoo() : value_() {} + + const T& value() const { return value_; } + private: + T value_; +}; + +template +inline ::std::ostream& operator<<(::std::ostream& os, + const StreamableTemplateInFoo& x) { + return os << "StreamableTemplateInFoo: " << x.value(); +} + +} // namespace foo + +namespace testing { +namespace gtest_printers_test { + +using ::std::deque; +using ::std::list; +using ::std::make_pair; +using ::std::map; +using ::std::multimap; +using ::std::multiset; +using ::std::pair; +using ::std::set; +using ::std::vector; +using ::testing::PrintToString; +using ::testing::internal::FormatForComparisonFailureMessage; +using ::testing::internal::ImplicitCast_; +using ::testing::internal::NativeArray; +using ::testing::internal::RE; +using ::testing::internal::Strings; +using ::testing::internal::UniversalPrint; +using ::testing::internal::UniversalPrinter; +using ::testing::internal::UniversalTersePrint; +using ::testing::internal::UniversalTersePrintTupleFieldsToStrings; +using ::testing::internal::kReference; +using ::testing::internal::string; + +#if GTEST_HAS_TR1_TUPLE +using ::std::tr1::make_tuple; +using ::std::tr1::tuple; +#endif + +#if _MSC_VER +// MSVC defines the following classes in the ::stdext namespace while +// gcc defines them in the :: namespace. Note that they are not part +// of the C++ standard. +using ::stdext::hash_map; +using ::stdext::hash_set; +using ::stdext::hash_multimap; +using ::stdext::hash_multiset; +#endif + +// Prints a value to a string using the universal value printer. This +// is a helper for testing UniversalPrinter::Print() for various types. +template +string Print(const T& value) { + ::std::stringstream ss; + UniversalPrinter::Print(value, &ss); + return ss.str(); +} + +// Prints a value passed by reference to a string, using the universal +// value printer. This is a helper for testing +// UniversalPrinter::Print() for various types. +template +string PrintByRef(const T& value) { + ::std::stringstream ss; + UniversalPrinter::Print(value, &ss); + return ss.str(); +} + +// Tests printing various enum types. + +TEST(PrintEnumTest, AnonymousEnum) { + EXPECT_EQ("-1", Print(kAE1)); + EXPECT_EQ("1", Print(kAE2)); +} + +TEST(PrintEnumTest, EnumWithoutPrinter) { + EXPECT_EQ("-2", Print(kEWP1)); + EXPECT_EQ("42", Print(kEWP2)); +} + +TEST(PrintEnumTest, EnumWithStreaming) { + EXPECT_EQ("kEWS1", Print(kEWS1)); + EXPECT_EQ("invalid", Print(static_cast(0))); +} + +TEST(PrintEnumTest, EnumWithPrintTo) { + EXPECT_EQ("kEWPT1", Print(kEWPT1)); + EXPECT_EQ("invalid", Print(static_cast(0))); +} + +// Tests printing a class implicitly convertible to BiggestInt. + +TEST(PrintClassTest, BiggestIntConvertible) { + EXPECT_EQ("42", Print(BiggestIntConvertible())); +} + +// Tests printing various char types. + +// char. +TEST(PrintCharTest, PlainChar) { + EXPECT_EQ("'\\0'", Print('\0')); + EXPECT_EQ("'\\'' (39, 0x27)", Print('\'')); + EXPECT_EQ("'\"' (34, 0x22)", Print('"')); + EXPECT_EQ("'?' (63, 0x3F)", Print('?')); + EXPECT_EQ("'\\\\' (92, 0x5C)", Print('\\')); + EXPECT_EQ("'\\a' (7)", Print('\a')); + EXPECT_EQ("'\\b' (8)", Print('\b')); + EXPECT_EQ("'\\f' (12, 0xC)", Print('\f')); + EXPECT_EQ("'\\n' (10, 0xA)", Print('\n')); + EXPECT_EQ("'\\r' (13, 0xD)", Print('\r')); + EXPECT_EQ("'\\t' (9)", Print('\t')); + EXPECT_EQ("'\\v' (11, 0xB)", Print('\v')); + EXPECT_EQ("'\\x7F' (127)", Print('\x7F')); + EXPECT_EQ("'\\xFF' (255)", Print('\xFF')); + EXPECT_EQ("' ' (32, 0x20)", Print(' ')); + EXPECT_EQ("'a' (97, 0x61)", Print('a')); +} + +// signed char. +TEST(PrintCharTest, SignedChar) { + EXPECT_EQ("'\\0'", Print(static_cast('\0'))); + EXPECT_EQ("'\\xCE' (-50)", + Print(static_cast(-50))); +} + +// unsigned char. +TEST(PrintCharTest, UnsignedChar) { + EXPECT_EQ("'\\0'", Print(static_cast('\0'))); + EXPECT_EQ("'b' (98, 0x62)", + Print(static_cast('b'))); +} + +// Tests printing other simple, built-in types. + +// bool. +TEST(PrintBuiltInTypeTest, Bool) { + EXPECT_EQ("false", Print(false)); + EXPECT_EQ("true", Print(true)); +} + +// wchar_t. +TEST(PrintBuiltInTypeTest, Wchar_t) { + EXPECT_EQ("L'\\0'", Print(L'\0')); + EXPECT_EQ("L'\\'' (39, 0x27)", Print(L'\'')); + EXPECT_EQ("L'\"' (34, 0x22)", Print(L'"')); + EXPECT_EQ("L'?' (63, 0x3F)", Print(L'?')); + EXPECT_EQ("L'\\\\' (92, 0x5C)", Print(L'\\')); + EXPECT_EQ("L'\\a' (7)", Print(L'\a')); + EXPECT_EQ("L'\\b' (8)", Print(L'\b')); + EXPECT_EQ("L'\\f' (12, 0xC)", Print(L'\f')); + EXPECT_EQ("L'\\n' (10, 0xA)", Print(L'\n')); + EXPECT_EQ("L'\\r' (13, 0xD)", Print(L'\r')); + EXPECT_EQ("L'\\t' (9)", Print(L'\t')); + EXPECT_EQ("L'\\v' (11, 0xB)", Print(L'\v')); + EXPECT_EQ("L'\\x7F' (127)", Print(L'\x7F')); + EXPECT_EQ("L'\\xFF' (255)", Print(L'\xFF')); + EXPECT_EQ("L' ' (32, 0x20)", Print(L' ')); + EXPECT_EQ("L'a' (97, 0x61)", Print(L'a')); + EXPECT_EQ("L'\\x576' (1398)", Print(static_cast(0x576))); + EXPECT_EQ("L'\\xC74D' (51021)", Print(static_cast(0xC74D))); +} + +// Test that Int64 provides more storage than wchar_t. +TEST(PrintTypeSizeTest, Wchar_t) { + EXPECT_LT(sizeof(wchar_t), sizeof(testing::internal::Int64)); +} + +// Various integer types. +TEST(PrintBuiltInTypeTest, Integer) { + EXPECT_EQ("'\\xFF' (255)", Print(static_cast(255))); // uint8 + EXPECT_EQ("'\\x80' (-128)", Print(static_cast(-128))); // int8 + EXPECT_EQ("65535", Print(USHRT_MAX)); // uint16 + EXPECT_EQ("-32768", Print(SHRT_MIN)); // int16 + EXPECT_EQ("4294967295", Print(UINT_MAX)); // uint32 + EXPECT_EQ("-2147483648", Print(INT_MIN)); // int32 + EXPECT_EQ("18446744073709551615", + Print(static_cast(-1))); // uint64 + EXPECT_EQ("-9223372036854775808", + Print(static_cast(1) << 63)); // int64 +} + +// Size types. +TEST(PrintBuiltInTypeTest, Size_t) { + EXPECT_EQ("1", Print(sizeof('a'))); // size_t. +#if !GTEST_OS_WINDOWS + // Windows has no ssize_t type. + EXPECT_EQ("-2", Print(static_cast(-2))); // ssize_t. +#endif // !GTEST_OS_WINDOWS +} + +// Floating-points. +TEST(PrintBuiltInTypeTest, FloatingPoints) { + EXPECT_EQ("1.5", Print(1.5f)); // float + EXPECT_EQ("-2.5", Print(-2.5)); // double +} + +// Since ::std::stringstream::operator<<(const void *) formats the pointer +// output differently with different compilers, we have to create the expected +// output first and use it as our expectation. +static string PrintPointer(const void *p) { + ::std::stringstream expected_result_stream; + expected_result_stream << p; + return expected_result_stream.str(); +} + +// Tests printing C strings. + +// const char*. +TEST(PrintCStringTest, Const) { + const char* p = "World"; + EXPECT_EQ(PrintPointer(p) + " pointing to \"World\"", Print(p)); +} + +// char*. +TEST(PrintCStringTest, NonConst) { + char p[] = "Hi"; + EXPECT_EQ(PrintPointer(p) + " pointing to \"Hi\"", + Print(static_cast(p))); +} + +// NULL C string. +TEST(PrintCStringTest, Null) { + const char* p = NULL; + EXPECT_EQ("NULL", Print(p)); +} + +// Tests that C strings are escaped properly. +TEST(PrintCStringTest, EscapesProperly) { + const char* p = "'\"?\\\a\b\f\n\r\t\v\x7F\xFF a"; + EXPECT_EQ(PrintPointer(p) + " pointing to \"'\\\"?\\\\\\a\\b\\f" + "\\n\\r\\t\\v\\x7F\\xFF a\"", + Print(p)); +} + + + +// MSVC compiler can be configured to define whar_t as a typedef +// of unsigned short. Defining an overload for const wchar_t* in that case +// would cause pointers to unsigned shorts be printed as wide strings, +// possibly accessing more memory than intended and causing invalid +// memory accesses. MSVC defines _NATIVE_WCHAR_T_DEFINED symbol when +// wchar_t is implemented as a native type. +#if !defined(_MSC_VER) || defined(_NATIVE_WCHAR_T_DEFINED) + +// const wchar_t*. +TEST(PrintWideCStringTest, Const) { + const wchar_t* p = L"World"; + EXPECT_EQ(PrintPointer(p) + " pointing to L\"World\"", Print(p)); +} + +// wchar_t*. +TEST(PrintWideCStringTest, NonConst) { + wchar_t p[] = L"Hi"; + EXPECT_EQ(PrintPointer(p) + " pointing to L\"Hi\"", + Print(static_cast(p))); +} + +// NULL wide C string. +TEST(PrintWideCStringTest, Null) { + const wchar_t* p = NULL; + EXPECT_EQ("NULL", Print(p)); +} + +// Tests that wide C strings are escaped properly. +TEST(PrintWideCStringTest, EscapesProperly) { + const wchar_t s[] = {'\'', '"', '?', '\\', '\a', '\b', '\f', '\n', '\r', + '\t', '\v', 0xD3, 0x576, 0x8D3, 0xC74D, ' ', 'a', '\0'}; + EXPECT_EQ(PrintPointer(s) + " pointing to L\"'\\\"?\\\\\\a\\b\\f" + "\\n\\r\\t\\v\\xD3\\x576\\x8D3\\xC74D a\"", + Print(static_cast(s))); +} +#endif // native wchar_t + +// Tests printing pointers to other char types. + +// signed char*. +TEST(PrintCharPointerTest, SignedChar) { + signed char* p = reinterpret_cast(0x1234); + EXPECT_EQ(PrintPointer(p), Print(p)); + p = NULL; + EXPECT_EQ("NULL", Print(p)); +} + +// const signed char*. +TEST(PrintCharPointerTest, ConstSignedChar) { + signed char* p = reinterpret_cast(0x1234); + EXPECT_EQ(PrintPointer(p), Print(p)); + p = NULL; + EXPECT_EQ("NULL", Print(p)); +} + +// unsigned char*. +TEST(PrintCharPointerTest, UnsignedChar) { + unsigned char* p = reinterpret_cast(0x1234); + EXPECT_EQ(PrintPointer(p), Print(p)); + p = NULL; + EXPECT_EQ("NULL", Print(p)); +} + +// const unsigned char*. +TEST(PrintCharPointerTest, ConstUnsignedChar) { + const unsigned char* p = reinterpret_cast(0x1234); + EXPECT_EQ(PrintPointer(p), Print(p)); + p = NULL; + EXPECT_EQ("NULL", Print(p)); +} + +// Tests printing pointers to simple, built-in types. + +// bool*. +TEST(PrintPointerToBuiltInTypeTest, Bool) { + bool* p = reinterpret_cast(0xABCD); + EXPECT_EQ(PrintPointer(p), Print(p)); + p = NULL; + EXPECT_EQ("NULL", Print(p)); +} + +// void*. +TEST(PrintPointerToBuiltInTypeTest, Void) { + void* p = reinterpret_cast(0xABCD); + EXPECT_EQ(PrintPointer(p), Print(p)); + p = NULL; + EXPECT_EQ("NULL", Print(p)); +} + +// const void*. +TEST(PrintPointerToBuiltInTypeTest, ConstVoid) { + const void* p = reinterpret_cast(0xABCD); + EXPECT_EQ(PrintPointer(p), Print(p)); + p = NULL; + EXPECT_EQ("NULL", Print(p)); +} + +// Tests printing pointers to pointers. +TEST(PrintPointerToPointerTest, IntPointerPointer) { + int** p = reinterpret_cast(0xABCD); + EXPECT_EQ(PrintPointer(p), Print(p)); + p = NULL; + EXPECT_EQ("NULL", Print(p)); +} + +// Tests printing (non-member) function pointers. + +void MyFunction(int /* n */) {} + +TEST(PrintPointerTest, NonMemberFunctionPointer) { + // We cannot directly cast &MyFunction to const void* because the + // standard disallows casting between pointers to functions and + // pointers to objects, and some compilers (e.g. GCC 3.4) enforce + // this limitation. + EXPECT_EQ( + PrintPointer(reinterpret_cast( + reinterpret_cast(&MyFunction))), + Print(&MyFunction)); + int (*p)(bool) = NULL; // NOLINT + EXPECT_EQ("NULL", Print(p)); +} + +// An assertion predicate determining whether a one string is a prefix for +// another. +template +AssertionResult HasPrefix(const StringType& str, const StringType& prefix) { + if (str.find(prefix, 0) == 0) + return AssertionSuccess(); + + const bool is_wide_string = sizeof(prefix[0]) > 1; + const char* const begin_string_quote = is_wide_string ? "L\"" : "\""; + return AssertionFailure() + << begin_string_quote << prefix << "\" is not a prefix of " + << begin_string_quote << str << "\"\n"; +} + +// Tests printing member variable pointers. Although they are called +// pointers, they don't point to a location in the address space. +// Their representation is implementation-defined. Thus they will be +// printed as raw bytes. + +struct Foo { + public: + virtual ~Foo() {} + int MyMethod(char x) { return x + 1; } + virtual char MyVirtualMethod(int /* n */) { return 'a'; } + + int value; +}; + +TEST(PrintPointerTest, MemberVariablePointer) { + EXPECT_TRUE(HasPrefix(Print(&Foo::value), + Print(sizeof(&Foo::value)) + "-byte object ")); + int (Foo::*p) = NULL; // NOLINT + EXPECT_TRUE(HasPrefix(Print(p), + Print(sizeof(p)) + "-byte object ")); +} + +// Tests printing member function pointers. Although they are called +// pointers, they don't point to a location in the address space. +// Their representation is implementation-defined. Thus they will be +// printed as raw bytes. +TEST(PrintPointerTest, MemberFunctionPointer) { + EXPECT_TRUE(HasPrefix(Print(&Foo::MyMethod), + Print(sizeof(&Foo::MyMethod)) + "-byte object ")); + EXPECT_TRUE( + HasPrefix(Print(&Foo::MyVirtualMethod), + Print(sizeof((&Foo::MyVirtualMethod))) + "-byte object ")); + int (Foo::*p)(char) = NULL; // NOLINT + EXPECT_TRUE(HasPrefix(Print(p), + Print(sizeof(p)) + "-byte object ")); +} + +// Tests printing C arrays. + +// The difference between this and Print() is that it ensures that the +// argument is a reference to an array. +template +string PrintArrayHelper(T (&a)[N]) { + return Print(a); +} + +// One-dimensional array. +TEST(PrintArrayTest, OneDimensionalArray) { + int a[5] = { 1, 2, 3, 4, 5 }; + EXPECT_EQ("{ 1, 2, 3, 4, 5 }", PrintArrayHelper(a)); +} + +// Two-dimensional array. +TEST(PrintArrayTest, TwoDimensionalArray) { + int a[2][5] = { + { 1, 2, 3, 4, 5 }, + { 6, 7, 8, 9, 0 } + }; + EXPECT_EQ("{ { 1, 2, 3, 4, 5 }, { 6, 7, 8, 9, 0 } }", PrintArrayHelper(a)); +} + +// Array of const elements. +TEST(PrintArrayTest, ConstArray) { + const bool a[1] = { false }; + EXPECT_EQ("{ false }", PrintArrayHelper(a)); +} + +// char array without terminating NUL. +TEST(PrintArrayTest, CharArrayWithNoTerminatingNul) { + // Array a contains '\0' in the middle and doesn't end with '\0'. + char a[] = { 'H', '\0', 'i' }; + EXPECT_EQ("\"H\\0i\" (no terminating NUL)", PrintArrayHelper(a)); +} + +// const char array with terminating NUL. +TEST(PrintArrayTest, ConstCharArrayWithTerminatingNul) { + const char a[] = "\0Hi"; + EXPECT_EQ("\"\\0Hi\"", PrintArrayHelper(a)); +} + +// const wchar_t array without terminating NUL. +TEST(PrintArrayTest, WCharArrayWithNoTerminatingNul) { + // Array a contains '\0' in the middle and doesn't end with '\0'. + const wchar_t a[] = { L'H', L'\0', L'i' }; + EXPECT_EQ("L\"H\\0i\" (no terminating NUL)", PrintArrayHelper(a)); +} + +// wchar_t array with terminating NUL. +TEST(PrintArrayTest, WConstCharArrayWithTerminatingNul) { + const wchar_t a[] = L"\0Hi"; + EXPECT_EQ("L\"\\0Hi\"", PrintArrayHelper(a)); +} + +// Array of objects. +TEST(PrintArrayTest, ObjectArray) { + string a[3] = { "Hi", "Hello", "Ni hao" }; + EXPECT_EQ("{ \"Hi\", \"Hello\", \"Ni hao\" }", PrintArrayHelper(a)); +} + +// Array with many elements. +TEST(PrintArrayTest, BigArray) { + int a[100] = { 1, 2, 3 }; + EXPECT_EQ("{ 1, 2, 3, 0, 0, 0, 0, 0, ..., 0, 0, 0, 0, 0, 0, 0, 0 }", + PrintArrayHelper(a)); +} + +// Tests printing ::string and ::std::string. + +#if GTEST_HAS_GLOBAL_STRING +// ::string. +TEST(PrintStringTest, StringInGlobalNamespace) { + const char s[] = "'\"?\\\a\b\f\n\0\r\t\v\x7F\xFF a"; + const ::string str(s, sizeof(s)); + EXPECT_EQ("\"'\\\"?\\\\\\a\\b\\f\\n\\0\\r\\t\\v\\x7F\\xFF a\\0\"", + Print(str)); +} +#endif // GTEST_HAS_GLOBAL_STRING + +// ::std::string. +TEST(PrintStringTest, StringInStdNamespace) { + const char s[] = "'\"?\\\a\b\f\n\0\r\t\v\x7F\xFF a"; + const ::std::string str(s, sizeof(s)); + EXPECT_EQ("\"'\\\"?\\\\\\a\\b\\f\\n\\0\\r\\t\\v\\x7F\\xFF a\\0\"", + Print(str)); +} + +TEST(PrintStringTest, StringAmbiguousHex) { + // "\x6BANANA" is ambiguous, it can be interpreted as starting with either of: + // '\x6', '\x6B', or '\x6BA'. + + // a hex escaping sequence following by a decimal digit + EXPECT_EQ("\"0\\x12\" \"3\"", Print(::std::string("0\x12" "3"))); + // a hex escaping sequence following by a hex digit (lower-case) + EXPECT_EQ("\"mm\\x6\" \"bananas\"", Print(::std::string("mm\x6" "bananas"))); + // a hex escaping sequence following by a hex digit (upper-case) + EXPECT_EQ("\"NOM\\x6\" \"BANANA\"", Print(::std::string("NOM\x6" "BANANA"))); + // a hex escaping sequence following by a non-xdigit + EXPECT_EQ("\"!\\x5-!\"", Print(::std::string("!\x5-!"))); +} + +// Tests printing ::wstring and ::std::wstring. + +#if GTEST_HAS_GLOBAL_WSTRING +// ::wstring. +TEST(PrintWideStringTest, StringInGlobalNamespace) { + const wchar_t s[] = L"'\"?\\\a\b\f\n\0\r\t\v\xD3\x576\x8D3\xC74D a"; + const ::wstring str(s, sizeof(s)/sizeof(wchar_t)); + EXPECT_EQ("L\"'\\\"?\\\\\\a\\b\\f\\n\\0\\r\\t\\v" + "\\xD3\\x576\\x8D3\\xC74D a\\0\"", + Print(str)); +} +#endif // GTEST_HAS_GLOBAL_WSTRING + +#if GTEST_HAS_STD_WSTRING +// ::std::wstring. +TEST(PrintWideStringTest, StringInStdNamespace) { + const wchar_t s[] = L"'\"?\\\a\b\f\n\0\r\t\v\xD3\x576\x8D3\xC74D a"; + const ::std::wstring str(s, sizeof(s)/sizeof(wchar_t)); + EXPECT_EQ("L\"'\\\"?\\\\\\a\\b\\f\\n\\0\\r\\t\\v" + "\\xD3\\x576\\x8D3\\xC74D a\\0\"", + Print(str)); +} + +TEST(PrintWideStringTest, StringAmbiguousHex) { + // same for wide strings. + EXPECT_EQ("L\"0\\x12\" L\"3\"", Print(::std::wstring(L"0\x12" L"3"))); + EXPECT_EQ("L\"mm\\x6\" L\"bananas\"", + Print(::std::wstring(L"mm\x6" L"bananas"))); + EXPECT_EQ("L\"NOM\\x6\" L\"BANANA\"", + Print(::std::wstring(L"NOM\x6" L"BANANA"))); + EXPECT_EQ("L\"!\\x5-!\"", Print(::std::wstring(L"!\x5-!"))); +} +#endif // GTEST_HAS_STD_WSTRING + +// Tests printing types that support generic streaming (i.e. streaming +// to std::basic_ostream for any valid Char and +// CharTraits types). + +// Tests printing a non-template type that supports generic streaming. + +class AllowsGenericStreaming {}; + +template +std::basic_ostream& operator<<( + std::basic_ostream& os, + const AllowsGenericStreaming& /* a */) { + return os << "AllowsGenericStreaming"; +} + +TEST(PrintTypeWithGenericStreamingTest, NonTemplateType) { + AllowsGenericStreaming a; + EXPECT_EQ("AllowsGenericStreaming", Print(a)); +} + +// Tests printing a template type that supports generic streaming. + +template +class AllowsGenericStreamingTemplate {}; + +template +std::basic_ostream& operator<<( + std::basic_ostream& os, + const AllowsGenericStreamingTemplate& /* a */) { + return os << "AllowsGenericStreamingTemplate"; +} + +TEST(PrintTypeWithGenericStreamingTest, TemplateType) { + AllowsGenericStreamingTemplate a; + EXPECT_EQ("AllowsGenericStreamingTemplate", Print(a)); +} + +// Tests printing a type that supports generic streaming and can be +// implicitly converted to another printable type. + +template +class AllowsGenericStreamingAndImplicitConversionTemplate { + public: + operator bool() const { return false; } +}; + +template +std::basic_ostream& operator<<( + std::basic_ostream& os, + const AllowsGenericStreamingAndImplicitConversionTemplate& /* a */) { + return os << "AllowsGenericStreamingAndImplicitConversionTemplate"; +} + +TEST(PrintTypeWithGenericStreamingTest, TypeImplicitlyConvertible) { + AllowsGenericStreamingAndImplicitConversionTemplate a; + EXPECT_EQ("AllowsGenericStreamingAndImplicitConversionTemplate", Print(a)); +} + +#if GTEST_HAS_STRING_PIECE_ + +// Tests printing StringPiece. + +TEST(PrintStringPieceTest, SimpleStringPiece) { + const StringPiece sp = "Hello"; + EXPECT_EQ("\"Hello\"", Print(sp)); +} + +TEST(PrintStringPieceTest, UnprintableCharacters) { + const char str[] = "NUL (\0) and \r\t"; + const StringPiece sp(str, sizeof(str) - 1); + EXPECT_EQ("\"NUL (\\0) and \\r\\t\"", Print(sp)); +} + +#endif // GTEST_HAS_STRING_PIECE_ + +// Tests printing STL containers. + +TEST(PrintStlContainerTest, EmptyDeque) { + deque empty; + EXPECT_EQ("{}", Print(empty)); +} + +TEST(PrintStlContainerTest, NonEmptyDeque) { + deque non_empty; + non_empty.push_back(1); + non_empty.push_back(3); + EXPECT_EQ("{ 1, 3 }", Print(non_empty)); +} + +#if GTEST_HAS_HASH_MAP_ + +TEST(PrintStlContainerTest, OneElementHashMap) { + hash_map map1; + map1[1] = 'a'; + EXPECT_EQ("{ (1, 'a' (97, 0x61)) }", Print(map1)); +} + +TEST(PrintStlContainerTest, HashMultiMap) { + hash_multimap map1; + map1.insert(make_pair(5, true)); + map1.insert(make_pair(5, false)); + + // Elements of hash_multimap can be printed in any order. + const string result = Print(map1); + EXPECT_TRUE(result == "{ (5, true), (5, false) }" || + result == "{ (5, false), (5, true) }") + << " where Print(map1) returns \"" << result << "\"."; +} + +#endif // GTEST_HAS_HASH_MAP_ + +#if GTEST_HAS_HASH_SET_ + +TEST(PrintStlContainerTest, HashSet) { + hash_set set1; + set1.insert("hello"); + EXPECT_EQ("{ \"hello\" }", Print(set1)); +} + +TEST(PrintStlContainerTest, HashMultiSet) { + const int kSize = 5; + int a[kSize] = { 1, 1, 2, 5, 1 }; + hash_multiset set1(a, a + kSize); + + // Elements of hash_multiset can be printed in any order. + const string result = Print(set1); + const string expected_pattern = "{ d, d, d, d, d }"; // d means a digit. + + // Verifies the result matches the expected pattern; also extracts + // the numbers in the result. + ASSERT_EQ(expected_pattern.length(), result.length()); + std::vector numbers; + for (size_t i = 0; i != result.length(); i++) { + if (expected_pattern[i] == 'd') { + ASSERT_NE(isdigit(static_cast(result[i])), 0); + numbers.push_back(result[i] - '0'); + } else { + EXPECT_EQ(expected_pattern[i], result[i]) << " where result is " + << result; + } + } + + // Makes sure the result contains the right numbers. + std::sort(numbers.begin(), numbers.end()); + std::sort(a, a + kSize); + EXPECT_TRUE(std::equal(a, a + kSize, numbers.begin())); +} + +#endif // GTEST_HAS_HASH_SET_ + +TEST(PrintStlContainerTest, List) { + const string a[] = { + "hello", + "world" + }; + const list strings(a, a + 2); + EXPECT_EQ("{ \"hello\", \"world\" }", Print(strings)); +} + +TEST(PrintStlContainerTest, Map) { + map map1; + map1[1] = true; + map1[5] = false; + map1[3] = true; + EXPECT_EQ("{ (1, true), (3, true), (5, false) }", Print(map1)); +} + +TEST(PrintStlContainerTest, MultiMap) { + multimap map1; + // The make_pair template function would deduce the type as + // pair here, and since the key part in a multimap has to + // be constant, without a templated ctor in the pair class (as in + // libCstd on Solaris), make_pair call would fail to compile as no + // implicit conversion is found. Thus explicit typename is used + // here instead. + map1.insert(pair(true, 0)); + map1.insert(pair(true, 1)); + map1.insert(pair(false, 2)); + EXPECT_EQ("{ (false, 2), (true, 0), (true, 1) }", Print(map1)); +} + +TEST(PrintStlContainerTest, Set) { + const unsigned int a[] = { 3, 0, 5 }; + set set1(a, a + 3); + EXPECT_EQ("{ 0, 3, 5 }", Print(set1)); +} + +TEST(PrintStlContainerTest, MultiSet) { + const int a[] = { 1, 1, 2, 5, 1 }; + multiset set1(a, a + 5); + EXPECT_EQ("{ 1, 1, 1, 2, 5 }", Print(set1)); +} + +TEST(PrintStlContainerTest, Pair) { + pair p(true, 5); + EXPECT_EQ("(true, 5)", Print(p)); +} + +TEST(PrintStlContainerTest, Vector) { + vector v; + v.push_back(1); + v.push_back(2); + EXPECT_EQ("{ 1, 2 }", Print(v)); +} + +TEST(PrintStlContainerTest, LongSequence) { + const int a[100] = { 1, 2, 3 }; + const vector v(a, a + 100); + EXPECT_EQ("{ 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, " + "0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... }", Print(v)); +} + +TEST(PrintStlContainerTest, NestedContainer) { + const int a1[] = { 1, 2 }; + const int a2[] = { 3, 4, 5 }; + const list l1(a1, a1 + 2); + const list l2(a2, a2 + 3); + + vector > v; + v.push_back(l1); + v.push_back(l2); + EXPECT_EQ("{ { 1, 2 }, { 3, 4, 5 } }", Print(v)); +} + +TEST(PrintStlContainerTest, OneDimensionalNativeArray) { + const int a[3] = { 1, 2, 3 }; + NativeArray b(a, 3, kReference); + EXPECT_EQ("{ 1, 2, 3 }", Print(b)); +} + +TEST(PrintStlContainerTest, TwoDimensionalNativeArray) { + const int a[2][3] = { { 1, 2, 3 }, { 4, 5, 6 } }; + NativeArray b(a, 2, kReference); + EXPECT_EQ("{ { 1, 2, 3 }, { 4, 5, 6 } }", Print(b)); +} + +// Tests that a class named iterator isn't treated as a container. + +struct iterator { + char x; +}; + +TEST(PrintStlContainerTest, Iterator) { + iterator it = {}; + EXPECT_EQ("1-byte object <00>", Print(it)); +} + +// Tests that a class named const_iterator isn't treated as a container. + +struct const_iterator { + char x; +}; + +TEST(PrintStlContainerTest, ConstIterator) { + const_iterator it = {}; + EXPECT_EQ("1-byte object <00>", Print(it)); +} + +#if GTEST_HAS_TR1_TUPLE +// Tests printing tuples. + +// Tuples of various arities. +TEST(PrintTupleTest, VariousSizes) { + tuple<> t0; + EXPECT_EQ("()", Print(t0)); + + tuple t1(5); + EXPECT_EQ("(5)", Print(t1)); + + tuple t2('a', true); + EXPECT_EQ("('a' (97, 0x61), true)", Print(t2)); + + tuple t3(false, 2, 3); + EXPECT_EQ("(false, 2, 3)", Print(t3)); + + tuple t4(false, 2, 3, 4); + EXPECT_EQ("(false, 2, 3, 4)", Print(t4)); + + tuple t5(false, 2, 3, 4, true); + EXPECT_EQ("(false, 2, 3, 4, true)", Print(t5)); + + tuple t6(false, 2, 3, 4, true, 6); + EXPECT_EQ("(false, 2, 3, 4, true, 6)", Print(t6)); + + tuple t7(false, 2, 3, 4, true, 6, 7); + EXPECT_EQ("(false, 2, 3, 4, true, 6, 7)", Print(t7)); + + tuple t8( + false, 2, 3, 4, true, 6, 7, true); + EXPECT_EQ("(false, 2, 3, 4, true, 6, 7, true)", Print(t8)); + + tuple t9( + false, 2, 3, 4, true, 6, 7, true, 9); + EXPECT_EQ("(false, 2, 3, 4, true, 6, 7, true, 9)", Print(t9)); + + const char* const str = "8"; + // VC++ 2010's implementation of tuple of C++0x is deficient, requiring + // an explicit type cast of NULL to be used. + tuple + t10(false, 'a', 3, 4, 5, 1.5F, -2.5, str, + ImplicitCast_(NULL), "10"); + EXPECT_EQ("(false, 'a' (97, 0x61), 3, 4, 5, 1.5, -2.5, " + PrintPointer(str) + + " pointing to \"8\", NULL, \"10\")", + Print(t10)); +} + +// Nested tuples. +TEST(PrintTupleTest, NestedTuple) { + tuple, char> nested(make_tuple(5, true), 'a'); + EXPECT_EQ("((5, true), 'a' (97, 0x61))", Print(nested)); +} + +#endif // GTEST_HAS_TR1_TUPLE + +// Tests printing user-defined unprintable types. + +// Unprintable types in the global namespace. +TEST(PrintUnprintableTypeTest, InGlobalNamespace) { + EXPECT_EQ("1-byte object <00>", + Print(UnprintableTemplateInGlobal())); +} + +// Unprintable types in a user namespace. +TEST(PrintUnprintableTypeTest, InUserNamespace) { + EXPECT_EQ("16-byte object ", + Print(::foo::UnprintableInFoo())); +} + +// Unprintable types are that too big to be printed completely. + +struct Big { + Big() { memset(array, 0, sizeof(array)); } + char array[257]; +}; + +TEST(PrintUnpritableTypeTest, BigObject) { + EXPECT_EQ("257-byte object <00-00 00-00 00-00 00-00 00-00 00-00 " + "00-00 00-00 00-00 00-00 00-00 00-00 00-00 00-00 00-00 00-00 " + "00-00 00-00 00-00 00-00 00-00 00-00 00-00 00-00 00-00 00-00 " + "00-00 00-00 00-00 00-00 00-00 00-00 ... 00-00 00-00 00-00 " + "00-00 00-00 00-00 00-00 00-00 00-00 00-00 00-00 00-00 00-00 " + "00-00 00-00 00-00 00-00 00-00 00-00 00-00 00-00 00-00 00-00 " + "00-00 00-00 00-00 00-00 00-00 00-00 00-00 00-00 00>", + Print(Big())); +} + +// Tests printing user-defined streamable types. + +// Streamable types in the global namespace. +TEST(PrintStreamableTypeTest, InGlobalNamespace) { + StreamableInGlobal x; + EXPECT_EQ("StreamableInGlobal", Print(x)); + EXPECT_EQ("StreamableInGlobal*", Print(&x)); +} + +// Printable template types in a user namespace. +TEST(PrintStreamableTypeTest, TemplateTypeInUserNamespace) { + EXPECT_EQ("StreamableTemplateInFoo: 0", + Print(::foo::StreamableTemplateInFoo())); +} + +// Tests printing user-defined types that have a PrintTo() function. +TEST(PrintPrintableTypeTest, InUserNamespace) { + EXPECT_EQ("PrintableViaPrintTo: 0", + Print(::foo::PrintableViaPrintTo())); +} + +// Tests printing a pointer to a user-defined type that has a << +// operator for its pointer. +TEST(PrintPrintableTypeTest, PointerInUserNamespace) { + ::foo::PointerPrintable x; + EXPECT_EQ("PointerPrintable*", Print(&x)); +} + +// Tests printing user-defined class template that have a PrintTo() function. +TEST(PrintPrintableTypeTest, TemplateInUserNamespace) { + EXPECT_EQ("PrintableViaPrintToTemplate: 5", + Print(::foo::PrintableViaPrintToTemplate(5))); +} + +#if GTEST_HAS_PROTOBUF_ + +// Tests printing a protocol message. +TEST(PrintProtocolMessageTest, PrintsShortDebugString) { + testing::internal::TestMessage msg; + msg.set_member("yes"); + EXPECT_EQ("", Print(msg)); +} + +// Tests printing a short proto2 message. +TEST(PrintProto2MessageTest, PrintsShortDebugStringWhenItIsShort) { + testing::internal::FooMessage msg; + msg.set_int_field(2); + msg.set_string_field("hello"); + EXPECT_PRED2(RE::FullMatch, Print(msg), + ""); +} + +// Tests printing a long proto2 message. +TEST(PrintProto2MessageTest, PrintsDebugStringWhenItIsLong) { + testing::internal::FooMessage msg; + msg.set_int_field(2); + msg.set_string_field("hello"); + msg.add_names("peter"); + msg.add_names("paul"); + msg.add_names("mary"); + EXPECT_PRED2(RE::FullMatch, Print(msg), + "<\n" + "int_field:\\s*2\n" + "string_field:\\s*\"hello\"\n" + "names:\\s*\"peter\"\n" + "names:\\s*\"paul\"\n" + "names:\\s*\"mary\"\n" + ">"); +} + +#endif // GTEST_HAS_PROTOBUF_ + +// Tests that the universal printer prints both the address and the +// value of a reference. +TEST(PrintReferenceTest, PrintsAddressAndValue) { + int n = 5; + EXPECT_EQ("@" + PrintPointer(&n) + " 5", PrintByRef(n)); + + int a[2][3] = { + { 0, 1, 2 }, + { 3, 4, 5 } + }; + EXPECT_EQ("@" + PrintPointer(a) + " { { 0, 1, 2 }, { 3, 4, 5 } }", + PrintByRef(a)); + + const ::foo::UnprintableInFoo x; + EXPECT_EQ("@" + PrintPointer(&x) + " 16-byte object " + "", + PrintByRef(x)); +} + +// Tests that the universal printer prints a function pointer passed by +// reference. +TEST(PrintReferenceTest, HandlesFunctionPointer) { + void (*fp)(int n) = &MyFunction; + const string fp_pointer_string = + PrintPointer(reinterpret_cast(&fp)); + // We cannot directly cast &MyFunction to const void* because the + // standard disallows casting between pointers to functions and + // pointers to objects, and some compilers (e.g. GCC 3.4) enforce + // this limitation. + const string fp_string = PrintPointer(reinterpret_cast( + reinterpret_cast(fp))); + EXPECT_EQ("@" + fp_pointer_string + " " + fp_string, + PrintByRef(fp)); +} + +// Tests that the universal printer prints a member function pointer +// passed by reference. +TEST(PrintReferenceTest, HandlesMemberFunctionPointer) { + int (Foo::*p)(char ch) = &Foo::MyMethod; + EXPECT_TRUE(HasPrefix( + PrintByRef(p), + "@" + PrintPointer(reinterpret_cast(&p)) + " " + + Print(sizeof(p)) + "-byte object ")); + + char (Foo::*p2)(int n) = &Foo::MyVirtualMethod; + EXPECT_TRUE(HasPrefix( + PrintByRef(p2), + "@" + PrintPointer(reinterpret_cast(&p2)) + " " + + Print(sizeof(p2)) + "-byte object ")); +} + +// Tests that the universal printer prints a member variable pointer +// passed by reference. +TEST(PrintReferenceTest, HandlesMemberVariablePointer) { + int (Foo::*p) = &Foo::value; // NOLINT + EXPECT_TRUE(HasPrefix( + PrintByRef(p), + "@" + PrintPointer(&p) + " " + Print(sizeof(p)) + "-byte object ")); +} + +// Tests that FormatForComparisonFailureMessage(), which is used to print +// an operand in a comparison assertion (e.g. ASSERT_EQ) when the assertion +// fails, formats the operand in the desired way. + +// scalar +TEST(FormatForComparisonFailureMessageTest, WorksForScalar) { + EXPECT_STREQ("123", + FormatForComparisonFailureMessage(123, 124).c_str()); +} + +// non-char pointer +TEST(FormatForComparisonFailureMessageTest, WorksForNonCharPointer) { + int n = 0; + EXPECT_EQ(PrintPointer(&n), + FormatForComparisonFailureMessage(&n, &n).c_str()); +} + +// non-char array +TEST(FormatForComparisonFailureMessageTest, FormatsNonCharArrayAsPointer) { + // In expression 'array == x', 'array' is compared by pointer. + // Therefore we want to print an array operand as a pointer. + int n[] = { 1, 2, 3 }; + EXPECT_EQ(PrintPointer(n), + FormatForComparisonFailureMessage(n, n).c_str()); +} + +// Tests formatting a char pointer when it's compared with another pointer. +// In this case we want to print it as a raw pointer, as the comparision is by +// pointer. + +// char pointer vs pointer +TEST(FormatForComparisonFailureMessageTest, WorksForCharPointerVsPointer) { + // In expression 'p == x', where 'p' and 'x' are (const or not) char + // pointers, the operands are compared by pointer. Therefore we + // want to print 'p' as a pointer instead of a C string (we don't + // even know if it's supposed to point to a valid C string). + + // const char* + const char* s = "hello"; + EXPECT_EQ(PrintPointer(s), + FormatForComparisonFailureMessage(s, s).c_str()); + + // char* + char ch = 'a'; + EXPECT_EQ(PrintPointer(&ch), + FormatForComparisonFailureMessage(&ch, &ch).c_str()); +} + +// wchar_t pointer vs pointer +TEST(FormatForComparisonFailureMessageTest, WorksForWCharPointerVsPointer) { + // In expression 'p == x', where 'p' and 'x' are (const or not) char + // pointers, the operands are compared by pointer. Therefore we + // want to print 'p' as a pointer instead of a wide C string (we don't + // even know if it's supposed to point to a valid wide C string). + + // const wchar_t* + const wchar_t* s = L"hello"; + EXPECT_EQ(PrintPointer(s), + FormatForComparisonFailureMessage(s, s).c_str()); + + // wchar_t* + wchar_t ch = L'a'; + EXPECT_EQ(PrintPointer(&ch), + FormatForComparisonFailureMessage(&ch, &ch).c_str()); +} + +// Tests formatting a char pointer when it's compared to a string object. +// In this case we want to print the char pointer as a C string. + +#if GTEST_HAS_GLOBAL_STRING +// char pointer vs ::string +TEST(FormatForComparisonFailureMessageTest, WorksForCharPointerVsString) { + const char* s = "hello \"world"; + EXPECT_STREQ("\"hello \\\"world\"", // The string content should be escaped. + FormatForComparisonFailureMessage(s, ::string()).c_str()); + + // char* + char str[] = "hi\1"; + char* p = str; + EXPECT_STREQ("\"hi\\x1\"", // The string content should be escaped. + FormatForComparisonFailureMessage(p, ::string()).c_str()); +} +#endif + +// char pointer vs std::string +TEST(FormatForComparisonFailureMessageTest, WorksForCharPointerVsStdString) { + const char* s = "hello \"world"; + EXPECT_STREQ("\"hello \\\"world\"", // The string content should be escaped. + FormatForComparisonFailureMessage(s, ::std::string()).c_str()); + + // char* + char str[] = "hi\1"; + char* p = str; + EXPECT_STREQ("\"hi\\x1\"", // The string content should be escaped. + FormatForComparisonFailureMessage(p, ::std::string()).c_str()); +} + +#if GTEST_HAS_GLOBAL_WSTRING +// wchar_t pointer vs ::wstring +TEST(FormatForComparisonFailureMessageTest, WorksForWCharPointerVsWString) { + const wchar_t* s = L"hi \"world"; + EXPECT_STREQ("L\"hi \\\"world\"", // The string content should be escaped. + FormatForComparisonFailureMessage(s, ::wstring()).c_str()); + + // wchar_t* + wchar_t str[] = L"hi\1"; + wchar_t* p = str; + EXPECT_STREQ("L\"hi\\x1\"", // The string content should be escaped. + FormatForComparisonFailureMessage(p, ::wstring()).c_str()); +} +#endif + +#if GTEST_HAS_STD_WSTRING +// wchar_t pointer vs std::wstring +TEST(FormatForComparisonFailureMessageTest, WorksForWCharPointerVsStdWString) { + const wchar_t* s = L"hi \"world"; + EXPECT_STREQ("L\"hi \\\"world\"", // The string content should be escaped. + FormatForComparisonFailureMessage(s, ::std::wstring()).c_str()); + + // wchar_t* + wchar_t str[] = L"hi\1"; + wchar_t* p = str; + EXPECT_STREQ("L\"hi\\x1\"", // The string content should be escaped. + FormatForComparisonFailureMessage(p, ::std::wstring()).c_str()); +} +#endif + +// Tests formatting a char array when it's compared with a pointer or array. +// In this case we want to print the array as a row pointer, as the comparison +// is by pointer. + +// char array vs pointer +TEST(FormatForComparisonFailureMessageTest, WorksForCharArrayVsPointer) { + char str[] = "hi \"world\""; + char* p = NULL; + EXPECT_EQ(PrintPointer(str), + FormatForComparisonFailureMessage(str, p).c_str()); +} + +// char array vs char array +TEST(FormatForComparisonFailureMessageTest, WorksForCharArrayVsCharArray) { + const char str[] = "hi \"world\""; + EXPECT_EQ(PrintPointer(str), + FormatForComparisonFailureMessage(str, str).c_str()); +} + +// wchar_t array vs pointer +TEST(FormatForComparisonFailureMessageTest, WorksForWCharArrayVsPointer) { + wchar_t str[] = L"hi \"world\""; + wchar_t* p = NULL; + EXPECT_EQ(PrintPointer(str), + FormatForComparisonFailureMessage(str, p).c_str()); +} + +// wchar_t array vs wchar_t array +TEST(FormatForComparisonFailureMessageTest, WorksForWCharArrayVsWCharArray) { + const wchar_t str[] = L"hi \"world\""; + EXPECT_EQ(PrintPointer(str), + FormatForComparisonFailureMessage(str, str).c_str()); +} + +// Tests formatting a char array when it's compared with a string object. +// In this case we want to print the array as a C string. + +#if GTEST_HAS_GLOBAL_STRING +// char array vs string +TEST(FormatForComparisonFailureMessageTest, WorksForCharArrayVsString) { + const char str[] = "hi \"w\0rld\""; + EXPECT_STREQ("\"hi \\\"w\"", // The content should be escaped. + // Embedded NUL terminates the string. + FormatForComparisonFailureMessage(str, ::string()).c_str()); +} +#endif + +// char array vs std::string +TEST(FormatForComparisonFailureMessageTest, WorksForCharArrayVsStdString) { + const char str[] = "hi \"world\""; + EXPECT_STREQ("\"hi \\\"world\\\"\"", // The content should be escaped. + FormatForComparisonFailureMessage(str, ::std::string()).c_str()); +} + +#if GTEST_HAS_GLOBAL_WSTRING +// wchar_t array vs wstring +TEST(FormatForComparisonFailureMessageTest, WorksForWCharArrayVsWString) { + const wchar_t str[] = L"hi \"world\""; + EXPECT_STREQ("L\"hi \\\"world\\\"\"", // The content should be escaped. + FormatForComparisonFailureMessage(str, ::wstring()).c_str()); +} +#endif + +#if GTEST_HAS_STD_WSTRING +// wchar_t array vs std::wstring +TEST(FormatForComparisonFailureMessageTest, WorksForWCharArrayVsStdWString) { + const wchar_t str[] = L"hi \"w\0rld\""; + EXPECT_STREQ( + "L\"hi \\\"w\"", // The content should be escaped. + // Embedded NUL terminates the string. + FormatForComparisonFailureMessage(str, ::std::wstring()).c_str()); +} +#endif + +// Useful for testing PrintToString(). We cannot use EXPECT_EQ() +// there as its implementation uses PrintToString(). The caller must +// ensure that 'value' has no side effect. +#define EXPECT_PRINT_TO_STRING_(value, expected_string) \ + EXPECT_TRUE(PrintToString(value) == (expected_string)) \ + << " where " #value " prints as " << (PrintToString(value)) + +TEST(PrintToStringTest, WorksForScalar) { + EXPECT_PRINT_TO_STRING_(123, "123"); +} + +TEST(PrintToStringTest, WorksForPointerToConstChar) { + const char* p = "hello"; + EXPECT_PRINT_TO_STRING_(p, "\"hello\""); +} + +TEST(PrintToStringTest, WorksForPointerToNonConstChar) { + char s[] = "hello"; + char* p = s; + EXPECT_PRINT_TO_STRING_(p, "\"hello\""); +} + +TEST(PrintToStringTest, EscapesForPointerToConstChar) { + const char* p = "hello\n"; + EXPECT_PRINT_TO_STRING_(p, "\"hello\\n\""); +} + +TEST(PrintToStringTest, EscapesForPointerToNonConstChar) { + char s[] = "hello\1"; + char* p = s; + EXPECT_PRINT_TO_STRING_(p, "\"hello\\x1\""); +} + +TEST(PrintToStringTest, WorksForArray) { + int n[3] = { 1, 2, 3 }; + EXPECT_PRINT_TO_STRING_(n, "{ 1, 2, 3 }"); +} + +TEST(PrintToStringTest, WorksForCharArray) { + char s[] = "hello"; + EXPECT_PRINT_TO_STRING_(s, "\"hello\""); +} + +TEST(PrintToStringTest, WorksForCharArrayWithEmbeddedNul) { + const char str_with_nul[] = "hello\0 world"; + EXPECT_PRINT_TO_STRING_(str_with_nul, "\"hello\\0 world\""); + + char mutable_str_with_nul[] = "hello\0 world"; + EXPECT_PRINT_TO_STRING_(mutable_str_with_nul, "\"hello\\0 world\""); +} + +#undef EXPECT_PRINT_TO_STRING_ + +TEST(UniversalTersePrintTest, WorksForNonReference) { + ::std::stringstream ss; + UniversalTersePrint(123, &ss); + EXPECT_EQ("123", ss.str()); +} + +TEST(UniversalTersePrintTest, WorksForReference) { + const int& n = 123; + ::std::stringstream ss; + UniversalTersePrint(n, &ss); + EXPECT_EQ("123", ss.str()); +} + +TEST(UniversalTersePrintTest, WorksForCString) { + const char* s1 = "abc"; + ::std::stringstream ss1; + UniversalTersePrint(s1, &ss1); + EXPECT_EQ("\"abc\"", ss1.str()); + + char* s2 = const_cast(s1); + ::std::stringstream ss2; + UniversalTersePrint(s2, &ss2); + EXPECT_EQ("\"abc\"", ss2.str()); + + const char* s3 = NULL; + ::std::stringstream ss3; + UniversalTersePrint(s3, &ss3); + EXPECT_EQ("NULL", ss3.str()); +} + +TEST(UniversalPrintTest, WorksForNonReference) { + ::std::stringstream ss; + UniversalPrint(123, &ss); + EXPECT_EQ("123", ss.str()); +} + +TEST(UniversalPrintTest, WorksForReference) { + const int& n = 123; + ::std::stringstream ss; + UniversalPrint(n, &ss); + EXPECT_EQ("123", ss.str()); +} + +TEST(UniversalPrintTest, WorksForCString) { + const char* s1 = "abc"; + ::std::stringstream ss1; + UniversalPrint(s1, &ss1); + EXPECT_EQ(PrintPointer(s1) + " pointing to \"abc\"", string(ss1.str())); + + char* s2 = const_cast(s1); + ::std::stringstream ss2; + UniversalPrint(s2, &ss2); + EXPECT_EQ(PrintPointer(s2) + " pointing to \"abc\"", string(ss2.str())); + + const char* s3 = NULL; + ::std::stringstream ss3; + UniversalPrint(s3, &ss3); + EXPECT_EQ("NULL", ss3.str()); +} + +TEST(UniversalPrintTest, WorksForCharArray) { + const char str[] = "\"Line\0 1\"\nLine 2"; + ::std::stringstream ss1; + UniversalPrint(str, &ss1); + EXPECT_EQ("\"\\\"Line\\0 1\\\"\\nLine 2\"", ss1.str()); + + const char mutable_str[] = "\"Line\0 1\"\nLine 2"; + ::std::stringstream ss2; + UniversalPrint(mutable_str, &ss2); + EXPECT_EQ("\"\\\"Line\\0 1\\\"\\nLine 2\"", ss2.str()); +} + +#if GTEST_HAS_TR1_TUPLE + +TEST(UniversalTersePrintTupleFieldsToStringsTest, PrintsEmptyTuple) { + Strings result = UniversalTersePrintTupleFieldsToStrings(make_tuple()); + EXPECT_EQ(0u, result.size()); +} + +TEST(UniversalTersePrintTupleFieldsToStringsTest, PrintsOneTuple) { + Strings result = UniversalTersePrintTupleFieldsToStrings(make_tuple(1)); + ASSERT_EQ(1u, result.size()); + EXPECT_EQ("1", result[0]); +} + +TEST(UniversalTersePrintTupleFieldsToStringsTest, PrintsTwoTuple) { + Strings result = UniversalTersePrintTupleFieldsToStrings(make_tuple(1, 'a')); + ASSERT_EQ(2u, result.size()); + EXPECT_EQ("1", result[0]); + EXPECT_EQ("'a' (97, 0x61)", result[1]); +} + +TEST(UniversalTersePrintTupleFieldsToStringsTest, PrintsTersely) { + const int n = 1; + Strings result = UniversalTersePrintTupleFieldsToStrings( + tuple(n, "a")); + ASSERT_EQ(2u, result.size()); + EXPECT_EQ("1", result[0]); + EXPECT_EQ("\"a\"", result[1]); +} + +#endif // GTEST_HAS_TR1_TUPLE + +} // namespace gtest_printers_test +} // namespace testing diff --git a/cpp/thirdparty/protobuf-2.3.0/gtest/test/gtest-test-part_test.cc b/cpp/thirdparty/protobuf-2.5.0/gtest/test/gtest-test-part_test.cc similarity index 72% rename from cpp/thirdparty/protobuf-2.3.0/gtest/test/gtest-test-part_test.cc rename to cpp/thirdparty/protobuf-2.5.0/gtest/test/gtest-test-part_test.cc index 403c18455..ca8ba933a 100644 --- a/cpp/thirdparty/protobuf-2.3.0/gtest/test/gtest-test-part_test.cc +++ b/cpp/thirdparty/protobuf-2.5.0/gtest/test/gtest-test-part_test.cc @@ -30,10 +30,11 @@ // Author: mheule@google.com (Markus Heule) // -#include +#include "gtest/gtest-test-part.h" -#include +#include "gtest/gtest.h" +using testing::Message; using testing::Test; using testing::TestPartResult; using testing::TestPartResultArray; @@ -53,6 +54,54 @@ class TestPartResultTest : public Test { TestPartResult r1_, r2_, r3_; }; + +TEST_F(TestPartResultTest, ConstructorWorks) { + Message message; + message << "something is terribly wrong"; + message << static_cast(testing::internal::kStackTraceMarker); + message << "some unimportant stack trace"; + + const TestPartResult result(TestPartResult::kNonFatalFailure, + "some_file.cc", + 42, + message.GetString().c_str()); + + EXPECT_EQ(TestPartResult::kNonFatalFailure, result.type()); + EXPECT_STREQ("some_file.cc", result.file_name()); + EXPECT_EQ(42, result.line_number()); + EXPECT_STREQ(message.GetString().c_str(), result.message()); + EXPECT_STREQ("something is terribly wrong", result.summary()); +} + +TEST_F(TestPartResultTest, ResultAccessorsWork) { + const TestPartResult success(TestPartResult::kSuccess, + "file.cc", + 42, + "message"); + EXPECT_TRUE(success.passed()); + EXPECT_FALSE(success.failed()); + EXPECT_FALSE(success.nonfatally_failed()); + EXPECT_FALSE(success.fatally_failed()); + + const TestPartResult nonfatal_failure(TestPartResult::kNonFatalFailure, + "file.cc", + 42, + "message"); + EXPECT_FALSE(nonfatal_failure.passed()); + EXPECT_TRUE(nonfatal_failure.failed()); + EXPECT_TRUE(nonfatal_failure.nonfatally_failed()); + EXPECT_FALSE(nonfatal_failure.fatally_failed()); + + const TestPartResult fatal_failure(TestPartResult::kFatalFailure, + "file.cc", + 42, + "message"); + EXPECT_FALSE(fatal_failure.passed()); + EXPECT_TRUE(fatal_failure.failed()); + EXPECT_FALSE(fatal_failure.nonfatally_failed()); + EXPECT_TRUE(fatal_failure.fatally_failed()); +} + // Tests TestPartResult::type(). TEST_F(TestPartResultTest, type) { EXPECT_EQ(TestPartResult::kSuccess, r1_.type()); diff --git a/cpp/thirdparty/protobuf-2.3.0/gtest/test/gtest-tuple_test.cc b/cpp/thirdparty/protobuf-2.5.0/gtest/test/gtest-tuple_test.cc similarity index 86% rename from cpp/thirdparty/protobuf-2.3.0/gtest/test/gtest-tuple_test.cc rename to cpp/thirdparty/protobuf-2.5.0/gtest/test/gtest-tuple_test.cc index 3829118ef..bfaa3e0ac 100644 --- a/cpp/thirdparty/protobuf-2.3.0/gtest/test/gtest-tuple_test.cc +++ b/cpp/thirdparty/protobuf-2.5.0/gtest/test/gtest-tuple_test.cc @@ -29,9 +29,9 @@ // // Author: wan@google.com (Zhanyong Wan) -#include +#include "gtest/internal/gtest-tuple.h" #include -#include +#include "gtest/gtest.h" namespace { @@ -135,12 +135,44 @@ TEST(ReferenceFieldTest, IsAliasOfReferencedVariable) { << "Changing a reference field should update the underlying variable."; } -// Tests tuple's default constructor. -TEST(TupleConstructorTest, DefaultConstructor) { - // We are just testing that the following compiles. +// Tests that tuple's default constructor default initializes each field. +// This test needs to compile without generating warnings. +TEST(TupleConstructorTest, DefaultConstructorDefaultInitializesEachField) { + // The TR1 report requires that tuple's default constructor default + // initializes each field, even if it's a primitive type. If the + // implementation forgets to do this, this test will catch it by + // generating warnings about using uninitialized variables (assuming + // a decent compiler). + tuple<> empty; - tuple one_field; - tuple three_fields; + + tuple a1, b1; + b1 = a1; + EXPECT_EQ(0, get<0>(b1)); + + tuple a2, b2; + b2 = a2; + EXPECT_EQ(0, get<0>(b2)); + EXPECT_EQ(0.0, get<1>(b2)); + + tuple a3, b3; + b3 = a3; + EXPECT_EQ(0.0, get<0>(b3)); + EXPECT_EQ('\0', get<1>(b3)); + EXPECT_TRUE(get<2>(b3) == NULL); + + tuple a10, b10; + b10 = a10; + EXPECT_EQ(0, get<0>(b10)); + EXPECT_EQ(0, get<1>(b10)); + EXPECT_EQ(0, get<2>(b10)); + EXPECT_EQ(0, get<3>(b10)); + EXPECT_EQ(0, get<4>(b10)); + EXPECT_EQ(0, get<5>(b10)); + EXPECT_EQ(0, get<6>(b10)); + EXPECT_EQ(0, get<7>(b10)); + EXPECT_EQ(0, get<8>(b10)); + EXPECT_EQ(0, get<9>(b10)); } // Tests constructing a tuple from its fields. diff --git a/cpp/thirdparty/protobuf-2.3.0/gtest/test/gtest-typed-test2_test.cc b/cpp/thirdparty/protobuf-2.5.0/gtest/test/gtest-typed-test2_test.cc similarity index 98% rename from cpp/thirdparty/protobuf-2.3.0/gtest/test/gtest-typed-test2_test.cc rename to cpp/thirdparty/protobuf-2.5.0/gtest/test/gtest-typed-test2_test.cc index 79a8a87dc..c284700b0 100644 --- a/cpp/thirdparty/protobuf-2.3.0/gtest/test/gtest-typed-test2_test.cc +++ b/cpp/thirdparty/protobuf-2.5.0/gtest/test/gtest-typed-test2_test.cc @@ -32,7 +32,7 @@ #include #include "test/gtest-typed-test_test.h" -#include +#include "gtest/gtest.h" #if GTEST_HAS_TYPED_TEST_P diff --git a/cpp/thirdparty/protobuf-2.3.0/gtest/test/gtest-typed-test_test.cc b/cpp/thirdparty/protobuf-2.5.0/gtest/test/gtest-typed-test_test.cc similarity index 95% rename from cpp/thirdparty/protobuf-2.3.0/gtest/test/gtest-typed-test_test.cc rename to cpp/thirdparty/protobuf-2.5.0/gtest/test/gtest-typed-test_test.cc index 4b6e971cb..dd4ba43bc 100644 --- a/cpp/thirdparty/protobuf-2.3.0/gtest/test/gtest-typed-test_test.cc +++ b/cpp/thirdparty/protobuf-2.5.0/gtest/test/gtest-typed-test_test.cc @@ -33,7 +33,7 @@ #include #include "test/gtest-typed-test_test.h" -#include +#include "gtest/gtest.h" using testing::Test; @@ -349,12 +349,12 @@ INSTANTIATE_TYPED_TEST_CASE_P(My, NumericTest, NumericTypes); #if !defined(GTEST_HAS_TYPED_TEST) && !defined(GTEST_HAS_TYPED_TEST_P) -// Google Test doesn't support type-parameterized tests on some platforms -// and compilers, such as MSVC 7.1. If we use conditional compilation to -// compile out all code referring to the gtest_main library, MSVC linker -// will not link that library at all and consequently complain about -// missing entry point defined in that library (fatal error LNK1561: -// entry point must be defined). This dummy test keeps gtest_main linked in. +// Google Test may not support type-parameterized tests with some +// compilers. If we use conditional compilation to compile out all +// code referring to the gtest_main library, MSVC linker will not link +// that library at all and consequently complain about missing entry +// point defined in that library (fatal error LNK1561: entry point +// must be defined). This dummy test keeps gtest_main linked in. TEST(DummyTest, TypedTestsAreNotSupportedOnThisPlatform) {} #endif // #if !defined(GTEST_HAS_TYPED_TEST) && !defined(GTEST_HAS_TYPED_TEST_P) diff --git a/cpp/thirdparty/protobuf-2.3.0/gtest/test/gtest-typed-test_test.h b/cpp/thirdparty/protobuf-2.5.0/gtest/test/gtest-typed-test_test.h similarity index 98% rename from cpp/thirdparty/protobuf-2.3.0/gtest/test/gtest-typed-test_test.h rename to cpp/thirdparty/protobuf-2.5.0/gtest/test/gtest-typed-test_test.h index 40dfeac6e..41d75704c 100644 --- a/cpp/thirdparty/protobuf-2.3.0/gtest/test/gtest-typed-test_test.h +++ b/cpp/thirdparty/protobuf-2.5.0/gtest/test/gtest-typed-test_test.h @@ -32,7 +32,7 @@ #ifndef GTEST_TEST_GTEST_TYPED_TEST_TEST_H_ #define GTEST_TEST_GTEST_TYPED_TEST_TEST_H_ -#include +#include "gtest/gtest.h" #if GTEST_HAS_TYPED_TEST_P diff --git a/cpp/thirdparty/protobuf-2.3.0/gtest/test/gtest-unittest-api_test.cc b/cpp/thirdparty/protobuf-2.5.0/gtest/test/gtest-unittest-api_test.cc similarity index 88% rename from cpp/thirdparty/protobuf-2.3.0/gtest/test/gtest-unittest-api_test.cc rename to cpp/thirdparty/protobuf-2.5.0/gtest/test/gtest-unittest-api_test.cc index 7e0f8f804..07083e51b 100644 --- a/cpp/thirdparty/protobuf-2.3.0/gtest/test/gtest-unittest-api_test.cc +++ b/cpp/thirdparty/protobuf-2.5.0/gtest/test/gtest-unittest-api_test.cc @@ -33,7 +33,7 @@ // This file contains tests verifying correctness of data provided via // UnitTest's public methods. -#include +#include "gtest/gtest.h" #include // For strcmp. #include @@ -103,12 +103,6 @@ TYPED_TEST(TestCaseWithCommentTest, Dummy) {} const int kTypedTestCases = 1; const int kTypedTests = 1; - -String GetExpectedTestCaseComment() { - Message comment; - comment << "TypeParam = " << GetTypeName().c_str(); - return comment.GetString(); -} #else const int kTypedTestCases = 0; const int kTypedTests = 0; @@ -143,12 +137,19 @@ TEST(ApiTest, UnitTestImmutableAccessorsWork) { RecordProperty("key", "value"); } +AssertionResult IsNull(const char* str) { + if (str != NULL) { + return testing::AssertionFailure() << "argument is " << str; + } + return AssertionSuccess(); +} + TEST(ApiTest, TestCaseImmutableAccessorsWork) { const TestCase* test_case = UnitTestHelper::FindTestCase("ApiTest"); ASSERT_TRUE(test_case != NULL); EXPECT_STREQ("ApiTest", test_case->name()); - EXPECT_STREQ("", test_case->comment()); + EXPECT_TRUE(IsNull(test_case->type_param())); EXPECT_TRUE(test_case->should_run()); EXPECT_EQ(1, test_case->disabled_test_count()); EXPECT_EQ(3, test_case->test_to_run_count()); @@ -158,26 +159,26 @@ TEST(ApiTest, TestCaseImmutableAccessorsWork) { EXPECT_STREQ("DISABLED_Dummy1", tests[0]->name()); EXPECT_STREQ("ApiTest", tests[0]->test_case_name()); - EXPECT_STREQ("", tests[0]->comment()); - EXPECT_STREQ("", tests[0]->test_case_comment()); + EXPECT_TRUE(IsNull(tests[0]->value_param())); + EXPECT_TRUE(IsNull(tests[0]->type_param())); EXPECT_FALSE(tests[0]->should_run()); EXPECT_STREQ("TestCaseDisabledAccessorsWork", tests[1]->name()); EXPECT_STREQ("ApiTest", tests[1]->test_case_name()); - EXPECT_STREQ("", tests[1]->comment()); - EXPECT_STREQ("", tests[1]->test_case_comment()); + EXPECT_TRUE(IsNull(tests[1]->value_param())); + EXPECT_TRUE(IsNull(tests[1]->type_param())); EXPECT_TRUE(tests[1]->should_run()); EXPECT_STREQ("TestCaseImmutableAccessorsWork", tests[2]->name()); EXPECT_STREQ("ApiTest", tests[2]->test_case_name()); - EXPECT_STREQ("", tests[2]->comment()); - EXPECT_STREQ("", tests[2]->test_case_comment()); + EXPECT_TRUE(IsNull(tests[2]->value_param())); + EXPECT_TRUE(IsNull(tests[2]->type_param())); EXPECT_TRUE(tests[2]->should_run()); EXPECT_STREQ("UnitTestImmutableAccessorsWork", tests[3]->name()); EXPECT_STREQ("ApiTest", tests[3]->test_case_name()); - EXPECT_STREQ("", tests[3]->comment()); - EXPECT_STREQ("", tests[3]->test_case_comment()); + EXPECT_TRUE(IsNull(tests[3]->value_param())); + EXPECT_TRUE(IsNull(tests[3]->type_param())); EXPECT_TRUE(tests[3]->should_run()); delete[] tests; @@ -188,7 +189,7 @@ TEST(ApiTest, TestCaseImmutableAccessorsWork) { ASSERT_TRUE(test_case != NULL); EXPECT_STREQ("TestCaseWithCommentTest/0", test_case->name()); - EXPECT_STREQ(GetExpectedTestCaseComment().c_str(), test_case->comment()); + EXPECT_STREQ(GetTypeName().c_str(), test_case->type_param()); EXPECT_TRUE(test_case->should_run()); EXPECT_EQ(0, test_case->disabled_test_count()); EXPECT_EQ(1, test_case->test_to_run_count()); @@ -198,9 +199,8 @@ TEST(ApiTest, TestCaseImmutableAccessorsWork) { EXPECT_STREQ("Dummy", tests[0]->name()); EXPECT_STREQ("TestCaseWithCommentTest/0", tests[0]->test_case_name()); - EXPECT_STREQ("", tests[0]->comment()); - EXPECT_STREQ(GetExpectedTestCaseComment().c_str(), - tests[0]->test_case_comment()); + EXPECT_TRUE(IsNull(tests[0]->value_param())); + EXPECT_STREQ(GetTypeName().c_str(), tests[0]->type_param()); EXPECT_TRUE(tests[0]->should_run()); delete[] tests; @@ -212,7 +212,7 @@ TEST(ApiTest, TestCaseDisabledAccessorsWork) { ASSERT_TRUE(test_case != NULL); EXPECT_STREQ("DISABLED_Test", test_case->name()); - EXPECT_STREQ("", test_case->comment()); + EXPECT_TRUE(IsNull(test_case->type_param())); EXPECT_FALSE(test_case->should_run()); EXPECT_EQ(1, test_case->disabled_test_count()); EXPECT_EQ(0, test_case->test_to_run_count()); @@ -221,8 +221,8 @@ TEST(ApiTest, TestCaseDisabledAccessorsWork) { const TestInfo* const test_info = test_case->GetTestInfo(0); EXPECT_STREQ("Dummy2", test_info->name()); EXPECT_STREQ("DISABLED_Test", test_info->test_case_name()); - EXPECT_STREQ("", test_info->comment()); - EXPECT_STREQ("", test_info->test_case_comment()); + EXPECT_TRUE(IsNull(test_info->value_param())); + EXPECT_TRUE(IsNull(test_info->type_param())); EXPECT_FALSE(test_info->should_run()); } @@ -247,7 +247,7 @@ class FinalSuccessChecker : public Environment { const TestCase** const test_cases = UnitTestHelper::GetSortedTestCases(); EXPECT_STREQ("ApiTest", test_cases[0]->name()); - EXPECT_STREQ("", test_cases[0]->comment()); + EXPECT_TRUE(IsNull(test_cases[0]->type_param())); EXPECT_TRUE(test_cases[0]->should_run()); EXPECT_EQ(1, test_cases[0]->disabled_test_count()); ASSERT_EQ(4, test_cases[0]->total_test_count()); @@ -257,7 +257,7 @@ class FinalSuccessChecker : public Environment { EXPECT_FALSE(test_cases[0]->Failed()); EXPECT_STREQ("DISABLED_Test", test_cases[1]->name()); - EXPECT_STREQ("", test_cases[1]->comment()); + EXPECT_TRUE(IsNull(test_cases[1]->type_param())); EXPECT_FALSE(test_cases[1]->should_run()); EXPECT_EQ(1, test_cases[1]->disabled_test_count()); ASSERT_EQ(1, test_cases[1]->total_test_count()); @@ -266,8 +266,7 @@ class FinalSuccessChecker : public Environment { #if GTEST_HAS_TYPED_TEST EXPECT_STREQ("TestCaseWithCommentTest/0", test_cases[2]->name()); - EXPECT_STREQ(GetExpectedTestCaseComment().c_str(), - test_cases[2]->comment()); + EXPECT_STREQ(GetTypeName().c_str(), test_cases[2]->type_param()); EXPECT_TRUE(test_cases[2]->should_run()); EXPECT_EQ(0, test_cases[2]->disabled_test_count()); ASSERT_EQ(1, test_cases[2]->total_test_count()); @@ -285,24 +284,24 @@ class FinalSuccessChecker : public Environment { EXPECT_STREQ("TestCaseDisabledAccessorsWork", tests[1]->name()); EXPECT_STREQ("ApiTest", tests[1]->test_case_name()); - EXPECT_STREQ("", tests[1]->comment()); - EXPECT_STREQ("", tests[1]->test_case_comment()); + EXPECT_TRUE(IsNull(tests[1]->value_param())); + EXPECT_TRUE(IsNull(tests[1]->type_param())); EXPECT_TRUE(tests[1]->should_run()); EXPECT_TRUE(tests[1]->result()->Passed()); EXPECT_EQ(0, tests[1]->result()->test_property_count()); EXPECT_STREQ("TestCaseImmutableAccessorsWork", tests[2]->name()); EXPECT_STREQ("ApiTest", tests[2]->test_case_name()); - EXPECT_STREQ("", tests[2]->comment()); - EXPECT_STREQ("", tests[2]->test_case_comment()); + EXPECT_TRUE(IsNull(tests[2]->value_param())); + EXPECT_TRUE(IsNull(tests[2]->type_param())); EXPECT_TRUE(tests[2]->should_run()); EXPECT_TRUE(tests[2]->result()->Passed()); EXPECT_EQ(0, tests[2]->result()->test_property_count()); EXPECT_STREQ("UnitTestImmutableAccessorsWork", tests[3]->name()); EXPECT_STREQ("ApiTest", tests[3]->test_case_name()); - EXPECT_STREQ("", tests[3]->comment()); - EXPECT_STREQ("", tests[3]->test_case_comment()); + EXPECT_TRUE(IsNull(tests[3]->value_param())); + EXPECT_TRUE(IsNull(tests[3]->type_param())); EXPECT_TRUE(tests[3]->should_run()); EXPECT_TRUE(tests[3]->result()->Passed()); EXPECT_EQ(1, tests[3]->result()->test_property_count()); @@ -318,9 +317,8 @@ class FinalSuccessChecker : public Environment { EXPECT_STREQ("Dummy", tests[0]->name()); EXPECT_STREQ("TestCaseWithCommentTest/0", tests[0]->test_case_name()); - EXPECT_STREQ("", tests[0]->comment()); - EXPECT_STREQ(GetExpectedTestCaseComment().c_str(), - tests[0]->test_case_comment()); + EXPECT_TRUE(IsNull(tests[0]->value_param())); + EXPECT_STREQ(GetTypeName().c_str(), tests[0]->type_param()); EXPECT_TRUE(tests[0]->should_run()); EXPECT_TRUE(tests[0]->result()->Passed()); EXPECT_EQ(0, tests[0]->result()->test_property_count()); diff --git a/cpp/thirdparty/protobuf-2.3.0/gtest/test/gtest_all_test.cc b/cpp/thirdparty/protobuf-2.5.0/gtest/test/gtest_all_test.cc similarity index 100% rename from cpp/thirdparty/protobuf-2.3.0/gtest/test/gtest_all_test.cc rename to cpp/thirdparty/protobuf-2.5.0/gtest/test/gtest_all_test.cc diff --git a/cpp/thirdparty/protobuf-2.3.0/gtest/test/gtest_break_on_failure_unittest.py b/cpp/thirdparty/protobuf-2.5.0/gtest/test/gtest_break_on_failure_unittest.py similarity index 97% rename from cpp/thirdparty/protobuf-2.3.0/gtest/test/gtest_break_on_failure_unittest.py rename to cpp/thirdparty/protobuf-2.5.0/gtest/test/gtest_break_on_failure_unittest.py index 218d3713f..c81918331 100755 --- a/cpp/thirdparty/protobuf-2.3.0/gtest/test/gtest_break_on_failure_unittest.py +++ b/cpp/thirdparty/protobuf-2.5.0/gtest/test/gtest_break_on_failure_unittest.py @@ -69,21 +69,24 @@ EXE_PATH = gtest_test_utils.GetTestExecutablePath( # Utilities. +environ = os.environ.copy() + + def SetEnvVar(env_var, value): """Sets an environment variable to a given value; unsets it when the given value is None. """ if value is not None: - os.environ[env_var] = value - elif env_var in os.environ: - del os.environ[env_var] + environ[env_var] = value + elif env_var in environ: + del environ[env_var] def Run(command): """Runs a command; returns 1 if it was killed by a signal, or 0 otherwise.""" - p = gtest_test_utils.Subprocess(command) + p = gtest_test_utils.Subprocess(command, env=environ) if p.terminated_by_signal: return 1 else: diff --git a/cpp/thirdparty/protobuf-2.3.0/gtest/test/gtest_break_on_failure_unittest_.cc b/cpp/thirdparty/protobuf-2.5.0/gtest/test/gtest_break_on_failure_unittest_.cc similarity index 75% rename from cpp/thirdparty/protobuf-2.3.0/gtest/test/gtest_break_on_failure_unittest_.cc rename to cpp/thirdparty/protobuf-2.5.0/gtest/test/gtest_break_on_failure_unittest_.cc index 10a1203b6..dd07478c0 100644 --- a/cpp/thirdparty/protobuf-2.3.0/gtest/test/gtest_break_on_failure_unittest_.cc +++ b/cpp/thirdparty/protobuf-2.5.0/gtest/test/gtest_break_on_failure_unittest_.cc @@ -39,10 +39,11 @@ // This program will be invoked from a Python unit test. It is // expected to fail. Don't run it directly. -#include +#include "gtest/gtest.h" #if GTEST_OS_WINDOWS -#include +# include +# include #endif namespace { @@ -52,6 +53,14 @@ TEST(Foo, Bar) { EXPECT_EQ(2, 3); } +#if GTEST_HAS_SEH && !GTEST_OS_WINDOWS_MOBILE +// On Windows Mobile global exception handlers are not supported. +LONG WINAPI ExitWithExceptionCode( + struct _EXCEPTION_POINTERS* exception_pointers) { + exit(exception_pointers->ExceptionRecord->ExceptionCode); +} +#endif + } // namespace int main(int argc, char **argv) { @@ -59,7 +68,20 @@ int main(int argc, char **argv) { // Suppresses display of the Windows error dialog upon encountering // a general protection fault (segment violation). SetErrorMode(SEM_NOGPFAULTERRORBOX | SEM_FAILCRITICALERRORS); + +# if GTEST_HAS_SEH && !GTEST_OS_WINDOWS_MOBILE + + // The default unhandled exception filter does not always exit + // with the exception code as exit code - for example it exits with + // 0 for EXCEPTION_ACCESS_VIOLATION and 1 for EXCEPTION_BREAKPOINT + // if the application is compiled in debug mode. Thus we use our own + // filter which always exits with the exception code for unhandled + // exceptions. + SetUnhandledExceptionFilter(ExitWithExceptionCode); + +# endif #endif + testing::InitGoogleTest(&argc, argv); return RUN_ALL_TESTS(); diff --git a/cpp/thirdparty/protobuf-2.5.0/gtest/test/gtest_catch_exceptions_test.py b/cpp/thirdparty/protobuf-2.5.0/gtest/test/gtest_catch_exceptions_test.py new file mode 100755 index 000000000..d7ef10eb0 --- /dev/null +++ b/cpp/thirdparty/protobuf-2.5.0/gtest/test/gtest_catch_exceptions_test.py @@ -0,0 +1,223 @@ +#!/usr/bin/env python +# +# Copyright 2010 Google Inc. All Rights Reserved. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions are +# met: +# +# * Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# * Redistributions in binary form must reproduce the above +# copyright notice, this list of conditions and the following disclaimer +# in the documentation and/or other materials provided with the +# distribution. +# * Neither the name of Google Inc. nor the names of its +# contributors may be used to endorse or promote products derived from +# this software without specific prior written permission. +# +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +"""Tests Google Test's exception catching behavior. + +This script invokes gtest_catch_exceptions_test_ and +gtest_catch_exceptions_ex_test_ (programs written with +Google Test) and verifies their output. +""" + +__author__ = 'vladl@google.com (Vlad Losev)' + +import os + +import gtest_test_utils + +# Constants. +FLAG_PREFIX = '--gtest_' +LIST_TESTS_FLAG = FLAG_PREFIX + 'list_tests' +NO_CATCH_EXCEPTIONS_FLAG = FLAG_PREFIX + 'catch_exceptions=0' +FILTER_FLAG = FLAG_PREFIX + 'filter' + +# Path to the gtest_catch_exceptions_ex_test_ binary, compiled with +# exceptions enabled. +EX_EXE_PATH = gtest_test_utils.GetTestExecutablePath( + 'gtest_catch_exceptions_ex_test_') + +# Path to the gtest_catch_exceptions_test_ binary, compiled with +# exceptions disabled. +EXE_PATH = gtest_test_utils.GetTestExecutablePath( + 'gtest_catch_exceptions_no_ex_test_') + +TEST_LIST = gtest_test_utils.Subprocess([EXE_PATH, LIST_TESTS_FLAG]).output + +SUPPORTS_SEH_EXCEPTIONS = 'ThrowsSehException' in TEST_LIST + +if SUPPORTS_SEH_EXCEPTIONS: + BINARY_OUTPUT = gtest_test_utils.Subprocess([EXE_PATH]).output + +EX_BINARY_OUTPUT = gtest_test_utils.Subprocess([EX_EXE_PATH]).output + +# The tests. +if SUPPORTS_SEH_EXCEPTIONS: + # pylint:disable-msg=C6302 + class CatchSehExceptionsTest(gtest_test_utils.TestCase): + """Tests exception-catching behavior.""" + + + def TestSehExceptions(self, test_output): + self.assert_('SEH exception with code 0x2a thrown ' + 'in the test fixture\'s constructor' + in test_output) + self.assert_('SEH exception with code 0x2a thrown ' + 'in the test fixture\'s destructor' + in test_output) + self.assert_('SEH exception with code 0x2a thrown in SetUpTestCase()' + in test_output) + self.assert_('SEH exception with code 0x2a thrown in TearDownTestCase()' + in test_output) + self.assert_('SEH exception with code 0x2a thrown in SetUp()' + in test_output) + self.assert_('SEH exception with code 0x2a thrown in TearDown()' + in test_output) + self.assert_('SEH exception with code 0x2a thrown in the test body' + in test_output) + + def testCatchesSehExceptionsWithCxxExceptionsEnabled(self): + self.TestSehExceptions(EX_BINARY_OUTPUT) + + def testCatchesSehExceptionsWithCxxExceptionsDisabled(self): + self.TestSehExceptions(BINARY_OUTPUT) + + +class CatchCxxExceptionsTest(gtest_test_utils.TestCase): + """Tests C++ exception-catching behavior. + + Tests in this test case verify that: + * C++ exceptions are caught and logged as C++ (not SEH) exceptions + * Exception thrown affect the remainder of the test work flow in the + expected manner. + """ + + def testCatchesCxxExceptionsInFixtureConstructor(self): + self.assert_('C++ exception with description ' + '"Standard C++ exception" thrown ' + 'in the test fixture\'s constructor' + in EX_BINARY_OUTPUT) + self.assert_('unexpected' not in EX_BINARY_OUTPUT, + 'This failure belongs in this test only if ' + '"CxxExceptionInConstructorTest" (no quotes) ' + 'appears on the same line as words "called unexpectedly"') + + if ('CxxExceptionInDestructorTest.ThrowsExceptionInDestructor' in + EX_BINARY_OUTPUT): + + def testCatchesCxxExceptionsInFixtureDestructor(self): + self.assert_('C++ exception with description ' + '"Standard C++ exception" thrown ' + 'in the test fixture\'s destructor' + in EX_BINARY_OUTPUT) + self.assert_('CxxExceptionInDestructorTest::TearDownTestCase() ' + 'called as expected.' + in EX_BINARY_OUTPUT) + + def testCatchesCxxExceptionsInSetUpTestCase(self): + self.assert_('C++ exception with description "Standard C++ exception"' + ' thrown in SetUpTestCase()' + in EX_BINARY_OUTPUT) + self.assert_('CxxExceptionInConstructorTest::TearDownTestCase() ' + 'called as expected.' + in EX_BINARY_OUTPUT) + self.assert_('CxxExceptionInSetUpTestCaseTest constructor ' + 'called as expected.' + in EX_BINARY_OUTPUT) + self.assert_('CxxExceptionInSetUpTestCaseTest destructor ' + 'called as expected.' + in EX_BINARY_OUTPUT) + self.assert_('CxxExceptionInSetUpTestCaseTest::SetUp() ' + 'called as expected.' + in EX_BINARY_OUTPUT) + self.assert_('CxxExceptionInSetUpTestCaseTest::TearDown() ' + 'called as expected.' + in EX_BINARY_OUTPUT) + self.assert_('CxxExceptionInSetUpTestCaseTest test body ' + 'called as expected.' + in EX_BINARY_OUTPUT) + + def testCatchesCxxExceptionsInTearDownTestCase(self): + self.assert_('C++ exception with description "Standard C++ exception"' + ' thrown in TearDownTestCase()' + in EX_BINARY_OUTPUT) + + def testCatchesCxxExceptionsInSetUp(self): + self.assert_('C++ exception with description "Standard C++ exception"' + ' thrown in SetUp()' + in EX_BINARY_OUTPUT) + self.assert_('CxxExceptionInSetUpTest::TearDownTestCase() ' + 'called as expected.' + in EX_BINARY_OUTPUT) + self.assert_('CxxExceptionInSetUpTest destructor ' + 'called as expected.' + in EX_BINARY_OUTPUT) + self.assert_('CxxExceptionInSetUpTest::TearDown() ' + 'called as expected.' + in EX_BINARY_OUTPUT) + self.assert_('unexpected' not in EX_BINARY_OUTPUT, + 'This failure belongs in this test only if ' + '"CxxExceptionInSetUpTest" (no quotes) ' + 'appears on the same line as words "called unexpectedly"') + + def testCatchesCxxExceptionsInTearDown(self): + self.assert_('C++ exception with description "Standard C++ exception"' + ' thrown in TearDown()' + in EX_BINARY_OUTPUT) + self.assert_('CxxExceptionInTearDownTest::TearDownTestCase() ' + 'called as expected.' + in EX_BINARY_OUTPUT) + self.assert_('CxxExceptionInTearDownTest destructor ' + 'called as expected.' + in EX_BINARY_OUTPUT) + + def testCatchesCxxExceptionsInTestBody(self): + self.assert_('C++ exception with description "Standard C++ exception"' + ' thrown in the test body' + in EX_BINARY_OUTPUT) + self.assert_('CxxExceptionInTestBodyTest::TearDownTestCase() ' + 'called as expected.' + in EX_BINARY_OUTPUT) + self.assert_('CxxExceptionInTestBodyTest destructor ' + 'called as expected.' + in EX_BINARY_OUTPUT) + self.assert_('CxxExceptionInTestBodyTest::TearDown() ' + 'called as expected.' + in EX_BINARY_OUTPUT) + + def testCatchesNonStdCxxExceptions(self): + self.assert_('Unknown C++ exception thrown in the test body' + in EX_BINARY_OUTPUT) + + def testUnhandledCxxExceptionsAbortTheProgram(self): + # Filters out SEH exception tests on Windows. Unhandled SEH exceptions + # cause tests to show pop-up windows there. + FITLER_OUT_SEH_TESTS_FLAG = FILTER_FLAG + '=-*Seh*' + # By default, Google Test doesn't catch the exceptions. + uncaught_exceptions_ex_binary_output = gtest_test_utils.Subprocess( + [EX_EXE_PATH, + NO_CATCH_EXCEPTIONS_FLAG, + FITLER_OUT_SEH_TESTS_FLAG]).output + + self.assert_('Unhandled C++ exception terminating the program' + in uncaught_exceptions_ex_binary_output) + self.assert_('unexpected' not in uncaught_exceptions_ex_binary_output) + + +if __name__ == '__main__': + gtest_test_utils.Main() diff --git a/cpp/thirdparty/protobuf-2.5.0/gtest/test/gtest_catch_exceptions_test_.cc b/cpp/thirdparty/protobuf-2.5.0/gtest/test/gtest_catch_exceptions_test_.cc new file mode 100644 index 000000000..d0fc82c99 --- /dev/null +++ b/cpp/thirdparty/protobuf-2.5.0/gtest/test/gtest_catch_exceptions_test_.cc @@ -0,0 +1,311 @@ +// Copyright 2010, Google Inc. +// All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Author: vladl@google.com (Vlad Losev) +// +// Tests for Google Test itself. Tests in this file throw C++ or SEH +// exceptions, and the output is verified by gtest_catch_exceptions_test.py. + +#include "gtest/gtest.h" + +#include // NOLINT +#include // For exit(). + +#if GTEST_HAS_SEH +# include +#endif + +#if GTEST_HAS_EXCEPTIONS +# include // For set_terminate(). +# include +#endif + +using testing::Test; + +#if GTEST_HAS_SEH + +class SehExceptionInConstructorTest : public Test { + public: + SehExceptionInConstructorTest() { RaiseException(42, 0, 0, NULL); } +}; + +TEST_F(SehExceptionInConstructorTest, ThrowsExceptionInConstructor) {} + +class SehExceptionInDestructorTest : public Test { + public: + ~SehExceptionInDestructorTest() { RaiseException(42, 0, 0, NULL); } +}; + +TEST_F(SehExceptionInDestructorTest, ThrowsExceptionInDestructor) {} + +class SehExceptionInSetUpTestCaseTest : public Test { + public: + static void SetUpTestCase() { RaiseException(42, 0, 0, NULL); } +}; + +TEST_F(SehExceptionInSetUpTestCaseTest, ThrowsExceptionInSetUpTestCase) {} + +class SehExceptionInTearDownTestCaseTest : public Test { + public: + static void TearDownTestCase() { RaiseException(42, 0, 0, NULL); } +}; + +TEST_F(SehExceptionInTearDownTestCaseTest, ThrowsExceptionInTearDownTestCase) {} + +class SehExceptionInSetUpTest : public Test { + protected: + virtual void SetUp() { RaiseException(42, 0, 0, NULL); } +}; + +TEST_F(SehExceptionInSetUpTest, ThrowsExceptionInSetUp) {} + +class SehExceptionInTearDownTest : public Test { + protected: + virtual void TearDown() { RaiseException(42, 0, 0, NULL); } +}; + +TEST_F(SehExceptionInTearDownTest, ThrowsExceptionInTearDown) {} + +TEST(SehExceptionTest, ThrowsSehException) { + RaiseException(42, 0, 0, NULL); +} + +#endif // GTEST_HAS_SEH + +#if GTEST_HAS_EXCEPTIONS + +class CxxExceptionInConstructorTest : public Test { + public: + CxxExceptionInConstructorTest() { + // Without this macro VC++ complains about unreachable code at the end of + // the constructor. + GTEST_SUPPRESS_UNREACHABLE_CODE_WARNING_BELOW_( + throw std::runtime_error("Standard C++ exception")); + } + + static void TearDownTestCase() { + printf("%s", + "CxxExceptionInConstructorTest::TearDownTestCase() " + "called as expected.\n"); + } + + protected: + ~CxxExceptionInConstructorTest() { + ADD_FAILURE() << "CxxExceptionInConstructorTest destructor " + << "called unexpectedly."; + } + + virtual void SetUp() { + ADD_FAILURE() << "CxxExceptionInConstructorTest::SetUp() " + << "called unexpectedly."; + } + + virtual void TearDown() { + ADD_FAILURE() << "CxxExceptionInConstructorTest::TearDown() " + << "called unexpectedly."; + } +}; + +TEST_F(CxxExceptionInConstructorTest, ThrowsExceptionInConstructor) { + ADD_FAILURE() << "CxxExceptionInConstructorTest test body " + << "called unexpectedly."; +} + +// Exceptions in destructors are not supported in C++11. +#if !defined(__GXX_EXPERIMENTAL_CXX0X__) && __cplusplus < 201103L +class CxxExceptionInDestructorTest : public Test { + public: + static void TearDownTestCase() { + printf("%s", + "CxxExceptionInDestructorTest::TearDownTestCase() " + "called as expected.\n"); + } + + protected: + ~CxxExceptionInDestructorTest() { + GTEST_SUPPRESS_UNREACHABLE_CODE_WARNING_BELOW_( + throw std::runtime_error("Standard C++ exception")); + } +}; + +TEST_F(CxxExceptionInDestructorTest, ThrowsExceptionInDestructor) {} +#endif // C++11 mode + +class CxxExceptionInSetUpTestCaseTest : public Test { + public: + CxxExceptionInSetUpTestCaseTest() { + printf("%s", + "CxxExceptionInSetUpTestCaseTest constructor " + "called as expected.\n"); + } + + static void SetUpTestCase() { + throw std::runtime_error("Standard C++ exception"); + } + + static void TearDownTestCase() { + printf("%s", + "CxxExceptionInSetUpTestCaseTest::TearDownTestCase() " + "called as expected.\n"); + } + + protected: + ~CxxExceptionInSetUpTestCaseTest() { + printf("%s", + "CxxExceptionInSetUpTestCaseTest destructor " + "called as expected.\n"); + } + + virtual void SetUp() { + printf("%s", + "CxxExceptionInSetUpTestCaseTest::SetUp() " + "called as expected.\n"); + } + + virtual void TearDown() { + printf("%s", + "CxxExceptionInSetUpTestCaseTest::TearDown() " + "called as expected.\n"); + } +}; + +TEST_F(CxxExceptionInSetUpTestCaseTest, ThrowsExceptionInSetUpTestCase) { + printf("%s", + "CxxExceptionInSetUpTestCaseTest test body " + "called as expected.\n"); +} + +class CxxExceptionInTearDownTestCaseTest : public Test { + public: + static void TearDownTestCase() { + throw std::runtime_error("Standard C++ exception"); + } +}; + +TEST_F(CxxExceptionInTearDownTestCaseTest, ThrowsExceptionInTearDownTestCase) {} + +class CxxExceptionInSetUpTest : public Test { + public: + static void TearDownTestCase() { + printf("%s", + "CxxExceptionInSetUpTest::TearDownTestCase() " + "called as expected.\n"); + } + + protected: + ~CxxExceptionInSetUpTest() { + printf("%s", + "CxxExceptionInSetUpTest destructor " + "called as expected.\n"); + } + + virtual void SetUp() { throw std::runtime_error("Standard C++ exception"); } + + virtual void TearDown() { + printf("%s", + "CxxExceptionInSetUpTest::TearDown() " + "called as expected.\n"); + } +}; + +TEST_F(CxxExceptionInSetUpTest, ThrowsExceptionInSetUp) { + ADD_FAILURE() << "CxxExceptionInSetUpTest test body " + << "called unexpectedly."; +} + +class CxxExceptionInTearDownTest : public Test { + public: + static void TearDownTestCase() { + printf("%s", + "CxxExceptionInTearDownTest::TearDownTestCase() " + "called as expected.\n"); + } + + protected: + ~CxxExceptionInTearDownTest() { + printf("%s", + "CxxExceptionInTearDownTest destructor " + "called as expected.\n"); + } + + virtual void TearDown() { + throw std::runtime_error("Standard C++ exception"); + } +}; + +TEST_F(CxxExceptionInTearDownTest, ThrowsExceptionInTearDown) {} + +class CxxExceptionInTestBodyTest : public Test { + public: + static void TearDownTestCase() { + printf("%s", + "CxxExceptionInTestBodyTest::TearDownTestCase() " + "called as expected.\n"); + } + + protected: + ~CxxExceptionInTestBodyTest() { + printf("%s", + "CxxExceptionInTestBodyTest destructor " + "called as expected.\n"); + } + + virtual void TearDown() { + printf("%s", + "CxxExceptionInTestBodyTest::TearDown() " + "called as expected.\n"); + } +}; + +TEST_F(CxxExceptionInTestBodyTest, ThrowsStdCxxException) { + throw std::runtime_error("Standard C++ exception"); +} + +TEST(CxxExceptionTest, ThrowsNonStdCxxException) { + throw "C-string"; +} + +// This terminate handler aborts the program using exit() rather than abort(). +// This avoids showing pop-ups on Windows systems and core dumps on Unix-like +// ones. +void TerminateHandler() { + fprintf(stderr, "%s\n", "Unhandled C++ exception terminating the program."); + fflush(NULL); + exit(3); +} + +#endif // GTEST_HAS_EXCEPTIONS + +int main(int argc, char** argv) { +#if GTEST_HAS_EXCEPTIONS + std::set_terminate(&TerminateHandler); +#endif + testing::InitGoogleTest(&argc, argv); + return RUN_ALL_TESTS(); +} diff --git a/cpp/thirdparty/protobuf-2.3.0/gtest/test/gtest_color_test.py b/cpp/thirdparty/protobuf-2.5.0/gtest/test/gtest_color_test.py similarity index 100% rename from cpp/thirdparty/protobuf-2.3.0/gtest/test/gtest_color_test.py rename to cpp/thirdparty/protobuf-2.5.0/gtest/test/gtest_color_test.py diff --git a/cpp/thirdparty/protobuf-2.3.0/gtest/test/gtest_color_test_.cc b/cpp/thirdparty/protobuf-2.5.0/gtest/test/gtest_color_test_.cc similarity index 86% rename from cpp/thirdparty/protobuf-2.3.0/gtest/test/gtest_color_test_.cc rename to cpp/thirdparty/protobuf-2.5.0/gtest/test/gtest_color_test_.cc index 305aeb961..f61ebb89b 100644 --- a/cpp/thirdparty/protobuf-2.3.0/gtest/test/gtest_color_test_.cc +++ b/cpp/thirdparty/protobuf-2.5.0/gtest/test/gtest_color_test_.cc @@ -35,13 +35,16 @@ #include -#include +#include "gtest/gtest.h" -namespace testing { -namespace internal { -bool ShouldUseColor(bool stdout_is_tty); -} // namespace internal -} // namespace testing +// Indicates that this translation unit is part of Google Test's +// implementation. It must come before gtest-internal-inl.h is +// included, or there will be a compiler error. This trick is to +// prevent a user from accidentally including gtest-internal-inl.h in +// his code. +#define GTEST_IMPLEMENTATION_ 1 +#include "src/gtest-internal-inl.h" +#undef GTEST_IMPLEMENTATION_ using testing::internal::ShouldUseColor; diff --git a/cpp/thirdparty/protobuf-2.3.0/gtest/test/gtest_env_var_test.py b/cpp/thirdparty/protobuf-2.5.0/gtest/test/gtest_env_var_test.py similarity index 93% rename from cpp/thirdparty/protobuf-2.3.0/gtest/test/gtest_env_var_test.py rename to cpp/thirdparty/protobuf-2.5.0/gtest/test/gtest_env_var_test.py index f8250d4c0..ac24337fa 100755 --- a/cpp/thirdparty/protobuf-2.3.0/gtest/test/gtest_env_var_test.py +++ b/cpp/thirdparty/protobuf-2.5.0/gtest/test/gtest_env_var_test.py @@ -42,6 +42,8 @@ IS_LINUX = os.name == 'posix' and os.uname()[0] == 'Linux' COMMAND = gtest_test_utils.GetTestExecutablePath('gtest_env_var_test_') +environ = os.environ.copy() + def AssertEq(expected, actual): if expected != actual: @@ -54,9 +56,9 @@ def SetEnvVar(env_var, value): """Sets the env variable to 'value'; unsets it when 'value' is None.""" if value is not None: - os.environ[env_var] = value - elif env_var in os.environ: - del os.environ[env_var] + environ[env_var] = value + elif env_var in environ: + del environ[env_var] def GetFlag(flag): @@ -65,7 +67,7 @@ def GetFlag(flag): args = [COMMAND] if flag is not None: args += [flag] - return gtest_test_utils.Subprocess(args).output + return gtest_test_utils.Subprocess(args, env=environ).output def TestFlag(flag, test_val, default_val): @@ -90,9 +92,7 @@ class GTestEnvVarTest(gtest_test_utils.TestCase): TestFlag('repeat', '999', '1') TestFlag('throw_on_failure', '1', '0') TestFlag('death_test_style', 'threadsafe', 'fast') - - if IS_WINDOWS: - TestFlag('catch_exceptions', '1', '0') + TestFlag('catch_exceptions', '0', '1') if IS_LINUX: TestFlag('death_test_use_fork', '1', '0') diff --git a/cpp/thirdparty/protobuf-2.3.0/gtest/test/gtest_env_var_test_.cc b/cpp/thirdparty/protobuf-2.5.0/gtest/test/gtest_env_var_test_.cc similarity index 99% rename from cpp/thirdparty/protobuf-2.3.0/gtest/test/gtest_env_var_test_.cc rename to cpp/thirdparty/protobuf-2.5.0/gtest/test/gtest_env_var_test_.cc index f7c78fcf3..539afc968 100644 --- a/cpp/thirdparty/protobuf-2.3.0/gtest/test/gtest_env_var_test_.cc +++ b/cpp/thirdparty/protobuf-2.5.0/gtest/test/gtest_env_var_test_.cc @@ -32,7 +32,7 @@ // A helper program for testing that Google Test parses the environment // variables correctly. -#include +#include "gtest/gtest.h" #include diff --git a/cpp/thirdparty/protobuf-2.3.0/gtest/test/gtest_environment_test.cc b/cpp/thirdparty/protobuf-2.5.0/gtest/test/gtest_environment_test.cc similarity index 96% rename from cpp/thirdparty/protobuf-2.3.0/gtest/test/gtest_environment_test.cc rename to cpp/thirdparty/protobuf-2.5.0/gtest/test/gtest_environment_test.cc index c9392614d..3cff19e70 100644 --- a/cpp/thirdparty/protobuf-2.3.0/gtest/test/gtest_environment_test.cc +++ b/cpp/thirdparty/protobuf-2.5.0/gtest/test/gtest_environment_test.cc @@ -33,7 +33,11 @@ #include #include -#include +#include "gtest/gtest.h" + +#define GTEST_IMPLEMENTATION_ 1 // Required for the next #include. +#include "src/gtest-internal-inl.h" +#undef GTEST_IMPLEMENTATION_ namespace testing { GTEST_DECLARE_string_(filter); @@ -92,6 +96,7 @@ class MyEnvironment : public testing::Environment { // Was TearDown() run? bool tear_down_was_run() const { return tear_down_was_run_; } + private: FailureType failure_in_set_up_; bool set_up_was_run_; @@ -111,7 +116,7 @@ TEST(FooTest, Bar) { void Check(bool condition, const char* msg) { if (!condition) { printf("FAILED: %s\n", msg); - abort(); + testing::internal::posix::Abort(); } } @@ -123,6 +128,7 @@ int RunAllTests(MyEnvironment* env, FailureType failure) { env->Reset(); env->set_failure_in_set_up(failure); test_was_run = false; + testing::internal::GetUnitTestImpl()->ClearAdHocTestResult(); return RUN_ALL_TESTS(); } diff --git a/cpp/thirdparty/protobuf-2.3.0/gtest/test/gtest_filter_unittest.py b/cpp/thirdparty/protobuf-2.5.0/gtest/test/gtest_filter_unittest.py similarity index 77% rename from cpp/thirdparty/protobuf-2.3.0/gtest/test/gtest_filter_unittest.py rename to cpp/thirdparty/protobuf-2.5.0/gtest/test/gtest_filter_unittest.py index a94a52105..0d1a77005 100755 --- a/cpp/thirdparty/protobuf-2.3.0/gtest/test/gtest_filter_unittest.py +++ b/cpp/thirdparty/protobuf-2.5.0/gtest/test/gtest_filter_unittest.py @@ -45,11 +45,42 @@ __author__ = 'wan@google.com (Zhanyong Wan)' import os import re import sets +import sys + import gtest_test_utils # Constants. -IS_WINDOWS = os.name == 'nt' +# Checks if this platform can pass empty environment variables to child +# processes. We set an env variable to an empty string and invoke a python +# script in a subprocess to print whether the variable is STILL in +# os.environ. We then use 'eval' to parse the child's output so that an +# exception is thrown if the input is anything other than 'True' nor 'False'. +os.environ['EMPTY_VAR'] = '' +child = gtest_test_utils.Subprocess( + [sys.executable, '-c', 'import os; print \'EMPTY_VAR\' in os.environ']) +CAN_PASS_EMPTY_ENV = eval(child.output) + + +# Check if this platform can unset environment variables in child processes. +# We set an env variable to a non-empty string, unset it, and invoke +# a python script in a subprocess to print whether the variable +# is NO LONGER in os.environ. +# We use 'eval' to parse the child's output so that an exception +# is thrown if the input is neither 'True' nor 'False'. +os.environ['UNSET_VAR'] = 'X' +del os.environ['UNSET_VAR'] +child = gtest_test_utils.Subprocess( + [sys.executable, '-c', 'import os; print \'UNSET_VAR\' not in os.environ']) +CAN_UNSET_ENV = eval(child.output) + + +# Checks if we should test with an empty filter. This doesn't +# make sense on platforms that cannot pass empty env variables (Win32) +# and on platforms that cannot unset variables (since we cannot tell +# the difference between "" and NULL -- Borland and Solaris < 5.10) +CAN_TEST_EMPTY_FILTER = (CAN_PASS_EMPTY_ENV and CAN_UNSET_ENV) + # The environment variable for specifying the test filters. FILTER_ENV_VAR = 'GTEST_FILTER' @@ -77,6 +108,14 @@ TEST_CASE_REGEX = re.compile(r'^\[\-+\] \d+ tests? from (\w+(/\w+)?)') # Regex for parsing test names from Google Test's output. TEST_REGEX = re.compile(r'^\[\s*RUN\s*\].*\.(\w+(/\w+)?)') +# The command line flag to tell Google Test to output the list of tests it +# will run. +LIST_TESTS_FLAG = '--gtest_list_tests' + +# Indicates whether Google Test supports death tests. +SUPPORTS_DEATH_TESTS = 'HasDeathTest' in gtest_test_utils.Subprocess( + [COMMAND, LIST_TESTS_FLAG]).output + # Full names of all tests in gtest_filter_unittests_. PARAM_TESTS = [ 'SeqP/ParamTest.TestX/0', @@ -98,6 +137,14 @@ DISABLED_TESTS = [ 'DISABLED_FoobarbazTest.TestA', ] +if SUPPORTS_DEATH_TESTS: + DEATH_TESTS = [ + 'HasDeathTest.Test1', + 'HasDeathTest.Test2', + ] +else: + DEATH_TESTS = [] + # All the non-disabled tests. ACTIVE_TESTS = [ 'FooTest.Abc', @@ -110,35 +157,35 @@ ACTIVE_TESTS = [ 'BazTest.TestOne', 'BazTest.TestA', 'BazTest.TestB', - - 'HasDeathTest.Test1', - 'HasDeathTest.Test2', - ] + PARAM_TESTS + ] + DEATH_TESTS + PARAM_TESTS param_tests_present = None # Utilities. +environ = os.environ.copy() + def SetEnvVar(env_var, value): """Sets the env variable to 'value'; unsets it when 'value' is None.""" if value is not None: - os.environ[env_var] = value - elif env_var in os.environ: - del os.environ[env_var] + environ[env_var] = value + elif env_var in environ: + del environ[env_var] def RunAndReturnOutput(args = None): """Runs the test program and returns its output.""" - return gtest_test_utils.Subprocess([COMMAND] + (args or [])).output + return gtest_test_utils.Subprocess([COMMAND] + (args or []), + env=environ).output def RunAndExtractTestList(args = None): """Runs the test program and returns its exit code and a list of tests run.""" - p = gtest_test_utils.Subprocess([COMMAND] + (args or [])) + p = gtest_test_utils.Subprocess([COMMAND] + (args or []), env=environ) tests_run = [] test_case = '' test = '' @@ -157,15 +204,12 @@ def RunAndExtractTestList(args = None): def InvokeWithModifiedEnv(extra_env, function, *args, **kwargs): """Runs the given function and arguments in a modified environment.""" try: - original_env = os.environ.copy() - os.environ.update(extra_env) + original_env = environ.copy() + environ.update(extra_env) return function(*args, **kwargs) finally: - for key in extra_env.iterkeys(): - if key in original_env: - os.environ[key] = original_env[key] - else: - del os.environ[key] + environ.clear() + environ.update(original_env) def RunWithSharding(total_shards, shard_index, command): @@ -179,7 +223,7 @@ def RunWithSharding(total_shards, shard_index, command): class GTestFilterUnitTest(gtest_test_utils.TestCase): - """Tests GTEST_FILTER env variable or --gtest_filter flag to filter tests.""" + """Tests the env variable or the command line flag to filter tests.""" # Utilities. @@ -211,26 +255,26 @@ class GTestFilterUnitTest(gtest_test_utils.TestCase): return tests_to_run def RunAndVerify(self, gtest_filter, tests_to_run): - """Checks that the binary runs correct set of tests for the given filter.""" + """Checks that the binary runs correct set of tests for a given filter.""" tests_to_run = self.AdjustForParameterizedTests(tests_to_run) - # First, tests using GTEST_FILTER. + # First, tests using the environment variable. # Windows removes empty variables from the environment when passing it - # to a new process. This means it is impossible to pass an empty filter - # into a process using the GTEST_FILTER environment variable. However, - # we can still test the case when the variable is not supplied (i.e., - # gtest_filter is None). + # to a new process. This means it is impossible to pass an empty filter + # into a process using the environment variable. However, we can still + # test the case when the variable is not supplied (i.e., gtest_filter is + # None). # pylint: disable-msg=C6403 - if not IS_WINDOWS or gtest_filter != '': + if CAN_TEST_EMPTY_FILTER or gtest_filter != '': SetEnvVar(FILTER_ENV_VAR, gtest_filter) tests_run = RunAndExtractTestList()[0] SetEnvVar(FILTER_ENV_VAR, None) self.AssertSetEqual(tests_run, tests_to_run) # pylint: enable-msg=C6403 - # Next, tests using --gtest_filter. + # Next, tests using the command line flag. if gtest_filter is None: args = [] @@ -260,12 +304,12 @@ class GTestFilterUnitTest(gtest_test_utils.TestCase): tests_to_run = self.AdjustForParameterizedTests(tests_to_run) # Windows removes empty variables from the environment when passing it - # to a new process. This means it is impossible to pass an empty filter - # into a process using the GTEST_FILTER environment variable. However, - # we can still test the case when the variable is not supplied (i.e., - # gtest_filter is None). + # to a new process. This means it is impossible to pass an empty filter + # into a process using the environment variable. However, we can still + # test the case when the variable is not supplied (i.e., gtest_filter is + # None). # pylint: disable-msg=C6403 - if not IS_WINDOWS or gtest_filter != '': + if CAN_TEST_EMPTY_FILTER or gtest_filter != '': SetEnvVar(FILTER_ENV_VAR, gtest_filter) partition = [] for i in range(0, total_shards): @@ -404,10 +448,7 @@ class GTestFilterUnitTest(gtest_test_utils.TestCase): 'BazTest.TestOne', 'BazTest.TestA', - 'BazTest.TestB', - - 'HasDeathTest.Test1', - 'HasDeathTest.Test2', ] + PARAM_TESTS) + 'BazTest.TestB', ] + DEATH_TESTS + PARAM_TESTS) def testWildcardInTestName(self): """Tests using wildcard in the test name.""" @@ -468,7 +509,7 @@ class GTestFilterUnitTest(gtest_test_utils.TestCase): ]) def testNegativeFilters(self): - self.RunAndVerify('*-HasDeathTest.Test1', [ + self.RunAndVerify('*-BazTest.TestOne', [ 'FooTest.Abc', 'FooTest.Xyz', @@ -476,24 +517,17 @@ class GTestFilterUnitTest(gtest_test_utils.TestCase): 'BarTest.TestTwo', 'BarTest.TestThree', - 'BazTest.TestOne', 'BazTest.TestA', 'BazTest.TestB', + ] + DEATH_TESTS + PARAM_TESTS) - 'HasDeathTest.Test2', - ] + PARAM_TESTS) - - self.RunAndVerify('*-FooTest.Abc:HasDeathTest.*', [ + self.RunAndVerify('*-FooTest.Abc:BazTest.*', [ 'FooTest.Xyz', 'BarTest.TestOne', 'BarTest.TestTwo', 'BarTest.TestThree', - - 'BazTest.TestOne', - 'BazTest.TestA', - 'BazTest.TestB', - ] + PARAM_TESTS) + ] + DEATH_TESTS + PARAM_TESTS) self.RunAndVerify('BarTest.*-BarTest.TestOne', [ 'BarTest.TestTwo', @@ -501,15 +535,11 @@ class GTestFilterUnitTest(gtest_test_utils.TestCase): ]) # Tests without leading '*'. - self.RunAndVerify('-FooTest.Abc:FooTest.Xyz:HasDeathTest.*', [ + self.RunAndVerify('-FooTest.Abc:FooTest.Xyz:BazTest.*', [ 'BarTest.TestOne', 'BarTest.TestTwo', 'BarTest.TestThree', - - 'BazTest.TestOne', - 'BazTest.TestA', - 'BazTest.TestB', - ] + PARAM_TESTS) + ] + DEATH_TESTS + PARAM_TESTS) # Value parameterized tests. self.RunAndVerify('*/*', PARAM_TESTS) @@ -555,7 +585,7 @@ class GTestFilterUnitTest(gtest_test_utils.TestCase): os.remove(shard_status_file) def testShardStatusFileIsCreatedWithListTests(self): - """Tests that the shard file is created with --gtest_list_tests.""" + """Tests that the shard file is created with the "list_tests" flag.""" shard_status_file = os.path.join(gtest_test_utils.GetTempDir(), 'shard_status_file2') @@ -563,32 +593,41 @@ class GTestFilterUnitTest(gtest_test_utils.TestCase): extra_env = {SHARD_STATUS_FILE_ENV_VAR: shard_status_file} try: - InvokeWithModifiedEnv(extra_env, - RunAndReturnOutput, - ['--gtest_list_tests']) + output = InvokeWithModifiedEnv(extra_env, + RunAndReturnOutput, + [LIST_TESTS_FLAG]) finally: + # This assertion ensures that Google Test enumerated the tests as + # opposed to running them. + self.assert_('[==========]' not in output, + 'Unexpected output during test enumeration.\n' + 'Please ensure that LIST_TESTS_FLAG is assigned the\n' + 'correct flag value for listing Google Test tests.') + self.assert_(os.path.exists(shard_status_file)) os.remove(shard_status_file) - def testShardingWorksWithDeathTests(self): - """Tests integration with death tests and sharding.""" - gtest_filter = 'HasDeathTest.*:SeqP/*' - expected_tests = [ - 'HasDeathTest.Test1', - 'HasDeathTest.Test2', - - 'SeqP/ParamTest.TestX/0', - 'SeqP/ParamTest.TestX/1', - 'SeqP/ParamTest.TestY/0', - 'SeqP/ParamTest.TestY/1', - ] - - for flag in ['--gtest_death_test_style=threadsafe', - '--gtest_death_test_style=fast']: - self.RunAndVerifyWithSharding(gtest_filter, 3, expected_tests, - check_exit_0=True, args=[flag]) - self.RunAndVerifyWithSharding(gtest_filter, 5, expected_tests, - check_exit_0=True, args=[flag]) + if SUPPORTS_DEATH_TESTS: + def testShardingWorksWithDeathTests(self): + """Tests integration with death tests and sharding.""" + + gtest_filter = 'HasDeathTest.*:SeqP/*' + expected_tests = [ + 'HasDeathTest.Test1', + 'HasDeathTest.Test2', + + 'SeqP/ParamTest.TestX/0', + 'SeqP/ParamTest.TestX/1', + 'SeqP/ParamTest.TestY/0', + 'SeqP/ParamTest.TestY/1', + ] + + for flag in ['--gtest_death_test_style=threadsafe', + '--gtest_death_test_style=fast']: + self.RunAndVerifyWithSharding(gtest_filter, 3, expected_tests, + check_exit_0=True, args=[flag]) + self.RunAndVerifyWithSharding(gtest_filter, 5, expected_tests, + check_exit_0=True, args=[flag]) if __name__ == '__main__': gtest_test_utils.Main() diff --git a/cpp/thirdparty/protobuf-2.3.0/gtest/test/gtest_filter_unittest_.cc b/cpp/thirdparty/protobuf-2.5.0/gtest/test/gtest_filter_unittest_.cc similarity index 99% rename from cpp/thirdparty/protobuf-2.3.0/gtest/test/gtest_filter_unittest_.cc rename to cpp/thirdparty/protobuf-2.5.0/gtest/test/gtest_filter_unittest_.cc index 325504fe9..77deffc38 100644 --- a/cpp/thirdparty/protobuf-2.3.0/gtest/test/gtest_filter_unittest_.cc +++ b/cpp/thirdparty/protobuf-2.5.0/gtest/test/gtest_filter_unittest_.cc @@ -38,7 +38,7 @@ // The program will be invoked from a Python unit test. Don't run it // directly. -#include +#include "gtest/gtest.h" namespace { diff --git a/cpp/thirdparty/protobuf-2.3.0/gtest/test/gtest_help_test.py b/cpp/thirdparty/protobuf-2.5.0/gtest/test/gtest_help_test.py similarity index 65% rename from cpp/thirdparty/protobuf-2.3.0/gtest/test/gtest_help_test.py rename to cpp/thirdparty/protobuf-2.5.0/gtest/test/gtest_help_test.py index 91081ad35..093c838d9 100755 --- a/cpp/thirdparty/protobuf-2.3.0/gtest/test/gtest_help_test.py +++ b/cpp/thirdparty/protobuf-2.5.0/gtest/test/gtest_help_test.py @@ -32,7 +32,7 @@ """Tests the --help flag of Google C++ Testing Framework. SYNOPSIS - gtest_help_test.py --gtest_build_dir=BUILD/DIR + gtest_help_test.py --build_dir=BUILD/DIR # where BUILD/DIR contains the built gtest_help_test_ file. gtest_help_test.py """ @@ -44,12 +44,22 @@ import re import gtest_test_utils +IS_LINUX = os.name == 'posix' and os.uname()[0] == 'Linux' IS_WINDOWS = os.name == 'nt' PROGRAM_PATH = gtest_test_utils.GetTestExecutablePath('gtest_help_test_') FLAG_PREFIX = '--gtest_' -CATCH_EXCEPTIONS_FLAG = FLAG_PREFIX + 'catch_exceptions' DEATH_TEST_STYLE_FLAG = FLAG_PREFIX + 'death_test_style' +STREAM_RESULT_TO_FLAG = FLAG_PREFIX + 'stream_result_to' +UNKNOWN_FLAG = FLAG_PREFIX + 'unknown_flag_for_testing' +LIST_TESTS_FLAG = FLAG_PREFIX + 'list_tests' +INCORRECT_FLAG_VARIANTS = [re.sub('^--', '-', LIST_TESTS_FLAG), + re.sub('^--', '/', LIST_TESTS_FLAG), + re.sub('_', '-', LIST_TESTS_FLAG)] +INTERNAL_FLAG_FOR_TESTING = FLAG_PREFIX + 'internal_flag_for_testing' + +SUPPORTS_DEATH_TESTS = "DeathTest" in gtest_test_utils.Subprocess( + [PROGRAM_PATH, LIST_TESTS_FLAG]).output # The help message must match this regex. HELP_REGEX = re.compile( @@ -63,7 +73,8 @@ HELP_REGEX = re.compile( FLAG_PREFIX + r'print_time.*' + FLAG_PREFIX + r'output=.*' + FLAG_PREFIX + r'break_on_failure.*' + - FLAG_PREFIX + r'throw_on_failure.*', + FLAG_PREFIX + r'throw_on_failure.*' + + FLAG_PREFIX + r'catch_exceptions=0.*', re.DOTALL) @@ -88,18 +99,42 @@ class GTestHelpTest(gtest_test_utils.TestCase): """Tests the --help flag and its equivalent forms.""" def TestHelpFlag(self, flag): - """Verifies that the right message is printed and the tests are - skipped when the given flag is specified.""" + """Verifies correct behavior when help flag is specified. + + The right message must be printed and the tests must + skipped when the given flag is specified. + + Args: + flag: A flag to pass to the binary or None. + """ exit_code, output = RunWithFlag(flag) self.assertEquals(0, exit_code) self.assert_(HELP_REGEX.search(output), output) - if IS_WINDOWS: - self.assert_(CATCH_EXCEPTIONS_FLAG in output, output) - self.assert_(DEATH_TEST_STYLE_FLAG not in output, output) + + if IS_LINUX: + self.assert_(STREAM_RESULT_TO_FLAG in output, output) else: - self.assert_(CATCH_EXCEPTIONS_FLAG not in output, output) + self.assert_(STREAM_RESULT_TO_FLAG not in output, output) + + if SUPPORTS_DEATH_TESTS and not IS_WINDOWS: self.assert_(DEATH_TEST_STYLE_FLAG in output, output) + else: + self.assert_(DEATH_TEST_STYLE_FLAG not in output, output) + + def TestNonHelpFlag(self, flag): + """Verifies correct behavior when no help flag is specified. + + Verifies that when no help flag is specified, the tests are run + and the help message is not printed. + + Args: + flag: A flag to pass to the binary or None. + """ + + exit_code, output = RunWithFlag(flag) + self.assert_(exit_code != 0) + self.assert_(not HELP_REGEX.search(output), output) def testPrintsHelpWithFullFlag(self): self.TestHelpFlag('--help') @@ -113,13 +148,24 @@ class GTestHelpTest(gtest_test_utils.TestCase): def testPrintsHelpWithWindowsStyleQuestionFlag(self): self.TestHelpFlag('/?') + def testPrintsHelpWithUnrecognizedGoogleTestFlag(self): + self.TestHelpFlag(UNKNOWN_FLAG) + + def testPrintsHelpWithIncorrectFlagStyle(self): + for incorrect_flag in INCORRECT_FLAG_VARIANTS: + self.TestHelpFlag(incorrect_flag) + def testRunsTestsWithoutHelpFlag(self): """Verifies that when no help flag is specified, the tests are run and the help message is not printed.""" - exit_code, output = RunWithFlag(None) - self.assert_(exit_code != 0) - self.assert_(not HELP_REGEX.search(output), output) + self.TestNonHelpFlag(None) + + def testRunsTestsWithGtestInternalFlag(self): + """Verifies that the tests are run and no help message is printed when + a flag starting with Google Test prefix and 'internal_' is supplied.""" + + self.TestNonHelpFlag(INTERNAL_FLAG_FOR_TESTING) if __name__ == '__main__': diff --git a/cpp/thirdparty/protobuf-2.3.0/gtest/test/gtest_help_test_.cc b/cpp/thirdparty/protobuf-2.5.0/gtest/test/gtest_help_test_.cc similarity index 93% rename from cpp/thirdparty/protobuf-2.3.0/gtest/test/gtest_help_test_.cc rename to cpp/thirdparty/protobuf-2.5.0/gtest/test/gtest_help_test_.cc index 0282bc889..31f78c244 100644 --- a/cpp/thirdparty/protobuf-2.3.0/gtest/test/gtest_help_test_.cc +++ b/cpp/thirdparty/protobuf-2.5.0/gtest/test/gtest_help_test_.cc @@ -32,7 +32,7 @@ // This program is meant to be run by gtest_help_test.py. Do not run // it directly. -#include +#include "gtest/gtest.h" // When a help flag is specified, this program should skip the tests // and exit with 0; otherwise the following test will be executed, @@ -40,3 +40,7 @@ TEST(HelpFlagTest, ShouldNotBeRun) { ASSERT_TRUE(false) << "Tests shouldn't be run when --help is specified."; } + +#if GTEST_HAS_DEATH_TEST +TEST(DeathTest, UsedByPythonScriptToDetectSupportForDeathTestsInThisBinary) {} +#endif diff --git a/cpp/thirdparty/protobuf-2.3.0/gtest/test/gtest_list_tests_unittest.py b/cpp/thirdparty/protobuf-2.5.0/gtest/test/gtest_list_tests_unittest.py similarity index 100% rename from cpp/thirdparty/protobuf-2.3.0/gtest/test/gtest_list_tests_unittest.py rename to cpp/thirdparty/protobuf-2.5.0/gtest/test/gtest_list_tests_unittest.py diff --git a/cpp/thirdparty/protobuf-2.3.0/gtest/test/gtest_list_tests_unittest_.cc b/cpp/thirdparty/protobuf-2.5.0/gtest/test/gtest_list_tests_unittest_.cc similarity index 98% rename from cpp/thirdparty/protobuf-2.3.0/gtest/test/gtest_list_tests_unittest_.cc rename to cpp/thirdparty/protobuf-2.5.0/gtest/test/gtest_list_tests_unittest_.cc index a0ed0825b..2b1d0780b 100644 --- a/cpp/thirdparty/protobuf-2.3.0/gtest/test/gtest_list_tests_unittest_.cc +++ b/cpp/thirdparty/protobuf-2.5.0/gtest/test/gtest_list_tests_unittest_.cc @@ -38,7 +38,7 @@ // This program will be invoked from a Python unit test. // Don't run it directly. -#include +#include "gtest/gtest.h" namespace { diff --git a/cpp/thirdparty/protobuf-2.3.0/gtest/test/gtest_main_unittest.cc b/cpp/thirdparty/protobuf-2.5.0/gtest/test/gtest_main_unittest.cc similarity index 98% rename from cpp/thirdparty/protobuf-2.3.0/gtest/test/gtest_main_unittest.cc rename to cpp/thirdparty/protobuf-2.5.0/gtest/test/gtest_main_unittest.cc index 7a3f0adfa..ecd9bb876 100644 --- a/cpp/thirdparty/protobuf-2.3.0/gtest/test/gtest_main_unittest.cc +++ b/cpp/thirdparty/protobuf-2.5.0/gtest/test/gtest_main_unittest.cc @@ -29,7 +29,7 @@ // // Author: wan@google.com (Zhanyong Wan) -#include +#include "gtest/gtest.h" // Tests that we don't have to define main() when we link to // gtest_main instead of gtest. diff --git a/cpp/thirdparty/protobuf-2.3.0/gtest/test/gtest_no_test_unittest.cc b/cpp/thirdparty/protobuf-2.5.0/gtest/test/gtest_no_test_unittest.cc similarity index 85% rename from cpp/thirdparty/protobuf-2.3.0/gtest/test/gtest_no_test_unittest.cc rename to cpp/thirdparty/protobuf-2.5.0/gtest/test/gtest_no_test_unittest.cc index afe2dc0c9..292599af8 100644 --- a/cpp/thirdparty/protobuf-2.3.0/gtest/test/gtest_no_test_unittest.cc +++ b/cpp/thirdparty/protobuf-2.5.0/gtest/test/gtest_no_test_unittest.cc @@ -32,23 +32,25 @@ // // Author: wan@google.com (Zhanyong Wan) -#include - +#include "gtest/gtest.h" int main(int argc, char **argv) { testing::InitGoogleTest(&argc, argv); // An ad-hoc assertion outside of all tests. // - // This serves two purposes: + // This serves three purposes: // // 1. It verifies that an ad-hoc assertion can be executed even if // no test is defined. - // 2. We had a bug where the XML output won't be generated if an + // 2. It verifies that a failed ad-hoc assertion causes the test + // program to fail. + // 3. We had a bug where the XML output won't be generated if an // assertion is executed before RUN_ALL_TESTS() is called, even // though --gtest_output=xml is specified. This makes sure the // bug is fixed and doesn't regress. - EXPECT_EQ(1, 1); + EXPECT_EQ(1, 2); - return RUN_ALL_TESTS(); + // The above EXPECT_EQ() should cause RUN_ALL_TESTS() to return non-zero. + return RUN_ALL_TESTS() ? 0 : 1; } diff --git a/cpp/thirdparty/protobuf-2.3.0/gtest/test/gtest_output_test.py b/cpp/thirdparty/protobuf-2.5.0/gtest/test/gtest_output_test.py similarity index 73% rename from cpp/thirdparty/protobuf-2.3.0/gtest/test/gtest_output_test.py rename to cpp/thirdparty/protobuf-2.5.0/gtest/test/gtest_output_test.py index c8a38f533..f409e2a78 100755 --- a/cpp/thirdparty/protobuf-2.3.0/gtest/test/gtest_output_test.py +++ b/cpp/thirdparty/protobuf-2.5.0/gtest/test/gtest_output_test.py @@ -32,7 +32,7 @@ """Tests the text output of Google C++ Testing Framework. SYNOPSIS - gtest_output_test.py --gtest_build_dir=BUILD/DIR --gengolden + gtest_output_test.py --build_dir=BUILD/DIR --gengolden # where BUILD/DIR contains the built gtest_output_test_ file. gtest_output_test.py --gengolden gtest_output_test.py @@ -48,13 +48,12 @@ import gtest_test_utils # The flag for generating the golden file GENGOLDEN_FLAG = '--gengolden' +CATCH_EXCEPTIONS_ENV_VAR_NAME = 'GTEST_CATCH_EXCEPTIONS' IS_WINDOWS = os.name == 'nt' -if IS_WINDOWS: - GOLDEN_NAME = 'gtest_output_test_golden_win.txt' -else: - GOLDEN_NAME = 'gtest_output_test_golden_lin.txt' +# TODO(vladl@google.com): remove the _lin suffix. +GOLDEN_NAME = 'gtest_output_test_golden_lin.txt' PROGRAM_PATH = gtest_test_utils.GetTestExecutablePath('gtest_output_test_') @@ -123,18 +122,46 @@ def RemoveTime(output): return re.sub(r'\(\d+ ms', '(? ms', output) +def RemoveTypeInfoDetails(test_output): + """Removes compiler-specific type info from Google Test program's output. + + Args: + test_output: the output of a Google Test program. + + Returns: + output with type information normalized to canonical form. + """ + + # some compilers output the name of type 'unsigned int' as 'unsigned' + return re.sub(r'unsigned int', 'unsigned', test_output) + + +def NormalizeToCurrentPlatform(test_output): + """Normalizes platform specific output details for easier comparison.""" + + if IS_WINDOWS: + # Removes the color information that is not present on Windows. + test_output = re.sub('\x1b\\[(0;3\d)?m', '', test_output) + # Changes failure message headers into the Windows format. + test_output = re.sub(r': Failure\n', r': error: ', test_output) + # Changes file(line_number) to file:line_number. + test_output = re.sub(r'((\w|\.)+)\((\d+)\):', r'\1:\3:', test_output) + + return test_output + + def RemoveTestCounts(output): """Removes test counts from a Google Test program's output.""" - output = re.sub(r'\d+ tests, listed below', + output = re.sub(r'\d+ tests?, listed below', '? tests, listed below', output) output = re.sub(r'\d+ FAILED TESTS', '? FAILED TESTS', output) - output = re.sub(r'\d+ tests from \d+ test cases', + output = re.sub(r'\d+ tests? from \d+ test cases?', '? tests from ? test cases', output) - output = re.sub(r'\d+ tests from ([a-zA-Z_])', + output = re.sub(r'\d+ tests? from ([a-zA-Z_])', r'? tests from \1', output) - return re.sub(r'\d+ tests\.', '? tests.', output) + return re.sub(r'\d+ tests?\.', '? tests.', output) def RemoveMatchingTests(test_output, pattern): @@ -184,16 +211,9 @@ def GetShellCommandOutput(env_cmd): # Spawns cmd in a sub-process, and gets its standard I/O file objects. # Set and save the environment properly. - old_env_vars = dict(os.environ) - os.environ.update(env_cmd[0]) - p = gtest_test_utils.Subprocess(env_cmd[1]) - - # Changes made by os.environ.clear are not inheritable by child processes - # until Python 2.6. To produce inheritable changes we have to delete - # environment items with the del statement. - for key in os.environ.keys(): - del os.environ[key] - os.environ.update(old_env_vars) + environ = os.environ.copy() + environ.update(env_cmd[0]) + p = gtest_test_utils.Subprocess(env_cmd[1], env=environ) return p.output @@ -209,8 +229,10 @@ def GetCommandOutput(env_cmd): """ # Disables exception pop-ups on Windows. - os.environ['GTEST_CATCH_EXCEPTIONS'] = '1' - return NormalizeOutput(GetShellCommandOutput(env_cmd)) + environ, cmdline = env_cmd + environ = dict(environ) # Ensures we are modifying a copy. + environ[CATCH_EXCEPTIONS_ENV_VAR_NAME] = '1' + return NormalizeOutput(GetShellCommandOutput((environ, cmdline))) def GetOutputOfAllCommands(): @@ -228,7 +250,9 @@ SUPPORTS_TYPED_TESTS = 'TypedTest' in test_list SUPPORTS_THREADS = 'ExpectFailureWithThreadsTest' in test_list SUPPORTS_STACK_TRACES = False -CAN_GENERATE_GOLDEN_FILE = SUPPORTS_DEATH_TESTS and SUPPORTS_TYPED_TESTS +CAN_GENERATE_GOLDEN_FILE = (SUPPORTS_DEATH_TESTS and + SUPPORTS_TYPED_TESTS and + SUPPORTS_THREADS) class GTestOutputTest(gtest_test_utils.TestCase): @@ -237,6 +261,8 @@ class GTestOutputTest(gtest_test_utils.TestCase): test_output = RemoveMatchingTests(test_output, 'DeathTest') if not SUPPORTS_TYPED_TESTS: test_output = RemoveMatchingTests(test_output, 'TypedTest') + test_output = RemoveMatchingTests(test_output, 'TypedDeathTest') + test_output = RemoveMatchingTests(test_output, 'TypeParamDeathTest') if not SUPPORTS_THREADS: test_output = RemoveMatchingTests(test_output, 'ExpectFailureWithThreadsTest') @@ -262,24 +288,31 @@ class GTestOutputTest(gtest_test_utils.TestCase): # We want the test to pass regardless of certain features being # supported or not. + + # We still have to remove type name specifics in all cases. + normalized_actual = RemoveTypeInfoDetails(output) + normalized_golden = RemoveTypeInfoDetails(golden) + if CAN_GENERATE_GOLDEN_FILE: - self.assert_(golden == output) + self.assertEqual(normalized_golden, normalized_actual) else: - normalized_actual = RemoveTestCounts(output) - normalized_golden = RemoveTestCounts(self.RemoveUnsupportedTests(golden)) + normalized_actual = NormalizeToCurrentPlatform( + RemoveTestCounts(normalized_actual)) + normalized_golden = NormalizeToCurrentPlatform( + RemoveTestCounts(self.RemoveUnsupportedTests(normalized_golden))) - # This code is very handy when debugging test differences so I left it - # here, commented. - # open(os.path.join( - # gtest_test_utils.GetSourceDir(), - # '_gtest_output_test_normalized_actual.txt'), 'wb').write( - # normalized_actual) - # open(os.path.join( - # gtest_test_utils.GetSourceDir(), - # '_gtest_output_test_normalized_golden.txt'), 'wb').write( - # normalized_golden) + # This code is very handy when debugging golden file differences: + if os.getenv('DEBUG_GTEST_OUTPUT_TEST'): + open(os.path.join( + gtest_test_utils.GetSourceDir(), + '_gtest_output_test_normalized_actual.txt'), 'wb').write( + normalized_actual) + open(os.path.join( + gtest_test_utils.GetSourceDir(), + '_gtest_output_test_normalized_golden.txt'), 'wb').write( + normalized_golden) - self.assert_(normalized_golden == normalized_actual) + self.assertEqual(normalized_golden, normalized_actual) if __name__ == '__main__': @@ -292,14 +325,9 @@ if __name__ == '__main__': else: message = ( """Unable to write a golden file when compiled in an environment -that does not support all the required features (death tests""") - if IS_WINDOWS: - message += ( - """\nand typed tests). Please check that you are using VC++ 8.0 SP1 -or higher as your compiler.""") - else: - message += """\nand typed tests). Please generate the golden file -using a binary built with those features enabled.""" +that does not support all the required features (death tests, typed tests, +and multiple threads). Please generate the golden file using a binary built +with those features enabled.""") sys.stderr.write(message) sys.exit(1) diff --git a/cpp/thirdparty/protobuf-2.3.0/gtest/test/gtest_output_test_.cc b/cpp/thirdparty/protobuf-2.5.0/gtest/test/gtest_output_test_.cc similarity index 79% rename from cpp/thirdparty/protobuf-2.3.0/gtest/test/gtest_output_test_.cc rename to cpp/thirdparty/protobuf-2.5.0/gtest/test/gtest_output_test_.cc index 6d7560277..07ab633d4 100644 --- a/cpp/thirdparty/protobuf-2.3.0/gtest/test/gtest_output_test_.cc +++ b/cpp/thirdparty/protobuf-2.5.0/gtest/test/gtest_output_test_.cc @@ -27,13 +27,16 @@ // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. // -// A unit test for Google Test itself. This verifies that the basic -// constructs of Google Test work. +// The purpose of this file is to generate Google Test output under +// various conditions. The output will then be verified by +// gtest_output_test.py to ensure that Google Test generates the +// desired messages. Therefore, most tests in this file are MEANT TO +// FAIL. // // Author: wan@google.com (Zhanyong Wan) -#include -#include +#include "gtest/gtest-spi.h" +#include "gtest/gtest.h" // Indicates that this translation unit is part of Google Test's // implementation. It must come before gtest-internal-inl.h is @@ -46,15 +49,16 @@ #include -#if GTEST_HAS_PTHREAD -#include -#endif // GTEST_HAS_PTHREAD - +#if GTEST_IS_THREADSAFE using testing::ScopedFakeTestPartResultReporter; using testing::TestPartResultArray; +using testing::internal::Notification; +using testing::internal::ThreadWithParam; +#endif + namespace posix = ::testing::internal::posix; -using testing::internal::String; +using testing::internal::scoped_ptr; // Tests catching fatal failures. @@ -85,6 +89,30 @@ TEST(PassingTest, PassingTest1) { TEST(PassingTest, PassingTest2) { } +// Tests that parameters of failing parameterized tests are printed in the +// failing test summary. +class FailingParamTest : public testing::TestWithParam {}; + +TEST_P(FailingParamTest, Fails) { + EXPECT_EQ(1, GetParam()); +} + +// This generates a test which will fail. Google Test is expected to print +// its parameter when it outputs the list of all failed tests. +INSTANTIATE_TEST_CASE_P(PrintingFailingParams, + FailingParamTest, + testing::Values(2)); + +static const char kGoldenString[] = "\"Line\0 1\"\nLine 2"; + +TEST(NonfatalFailureTest, EscapesStringOperands) { + std::string actual = "actual \"string\""; + EXPECT_EQ(kGoldenString, actual); + + const char* golden = kGoldenString; + EXPECT_EQ(golden, actual); +} + // Tests catching a fatal failure in a subroutine. TEST(FatalFailureTest, FatalFailureInSubroutine) { printf("(expecting a failure that x should be 1)\n"); @@ -205,14 +233,91 @@ TEST(SCOPED_TRACETest, CanBeRepeated) { { SCOPED_TRACE("C"); - ADD_FAILURE() << "This failure is expected, and should contain " - << "trace point A, B, and C."; + ADD_FAILURE() << "This failure is expected, and should " + << "contain trace point A, B, and C."; } SCOPED_TRACE("D"); - ADD_FAILURE() << "This failure is expected, and should contain " - << "trace point A, B, and D."; + ADD_FAILURE() << "This failure is expected, and should " + << "contain trace point A, B, and D."; +} + +#if GTEST_IS_THREADSAFE +// Tests that SCOPED_TRACE()s can be used concurrently from multiple +// threads. Namely, an assertion should be affected by +// SCOPED_TRACE()s in its own thread only. + +// Here's the sequence of actions that happen in the test: +// +// Thread A (main) | Thread B (spawned) +// ===============================|================================ +// spawns thread B | +// -------------------------------+-------------------------------- +// waits for n1 | SCOPED_TRACE("Trace B"); +// | generates failure #1 +// | notifies n1 +// -------------------------------+-------------------------------- +// SCOPED_TRACE("Trace A"); | waits for n2 +// generates failure #2 | +// notifies n2 | +// -------------------------------|-------------------------------- +// waits for n3 | generates failure #3 +// | trace B dies +// | generates failure #4 +// | notifies n3 +// -------------------------------|-------------------------------- +// generates failure #5 | finishes +// trace A dies | +// generates failure #6 | +// -------------------------------|-------------------------------- +// waits for thread B to finish | + +struct CheckPoints { + Notification n1; + Notification n2; + Notification n3; +}; + +static void ThreadWithScopedTrace(CheckPoints* check_points) { + { + SCOPED_TRACE("Trace B"); + ADD_FAILURE() + << "Expected failure #1 (in thread B, only trace B alive)."; + check_points->n1.Notify(); + check_points->n2.WaitForNotification(); + + ADD_FAILURE() + << "Expected failure #3 (in thread B, trace A & B both alive)."; + } // Trace B dies here. + ADD_FAILURE() + << "Expected failure #4 (in thread B, only trace A alive)."; + check_points->n3.Notify(); +} + +TEST(SCOPED_TRACETest, WorksConcurrently) { + printf("(expecting 6 failures)\n"); + + CheckPoints check_points; + ThreadWithParam thread(&ThreadWithScopedTrace, + &check_points, + NULL); + check_points.n1.WaitForNotification(); + + { + SCOPED_TRACE("Trace A"); + ADD_FAILURE() + << "Expected failure #2 (in thread A, trace A & B both alive)."; + check_points.n2.Notify(); + check_points.n3.WaitForNotification(); + + ADD_FAILURE() + << "Expected failure #5 (in thread A, only trace A alive)."; + } // Trace A dies here. + ADD_FAILURE() + << "Expected failure #6 (in thread A, no trace alive)."; + thread.Join(); } +#endif // GTEST_IS_THREADSAFE TEST(DisabledTestsWarningTest, DISABLED_AlsoRunDisabledTestsFlagSuppressesWarning) { @@ -285,6 +390,7 @@ class FatalFailureInFixtureConstructorTest : public testing::Test { << "We should never get here, as the test fixture c'tor " << "had a fatal failure."; } + private: void Init() { FAIL() << "Expected failure #1, in the test fixture c'tor."; @@ -348,136 +454,66 @@ TEST_F(FatalFailureInSetUpTest, FailureInSetUp) { << "We should never get here, as SetUp() failed."; } -#if GTEST_OS_WINDOWS - -// This group of tests verifies that Google Test handles SEH and C++ -// exceptions correctly. - -// A function that throws an SEH exception. -static void ThrowSEH() { - int* p = NULL; - *p = 0; // Raises an access violation. +TEST(AddFailureAtTest, MessageContainsSpecifiedFileAndLineNumber) { + ADD_FAILURE_AT("foo.cc", 42) << "Expected failure in foo.cc"; } -// Tests exceptions thrown in the test fixture constructor. -class ExceptionInFixtureCtorTest : public testing::Test { - protected: - ExceptionInFixtureCtorTest() { - printf("(expecting a failure on thrown exception " - "in the test fixture's constructor)\n"); - - ThrowSEH(); - } - - virtual ~ExceptionInFixtureCtorTest() { - Deinit(); - } - - virtual void SetUp() { - FAIL() << "UNEXPECTED failure in SetUp(). " - << "We should never get here, as the test fixture c'tor threw."; - } +#if GTEST_IS_THREADSAFE - virtual void TearDown() { - FAIL() << "UNEXPECTED failure in TearDown(). " - << "We should never get here, as the test fixture c'tor threw."; - } - private: - void Deinit() { - FAIL() << "UNEXPECTED failure in the d'tor. " - << "We should never get here, as the test fixture c'tor threw."; - } -}; - -TEST_F(ExceptionInFixtureCtorTest, ExceptionInFixtureCtor) { - FAIL() << "UNEXPECTED failure in the test function. " - << "We should never get here, as the test fixture c'tor threw."; +// A unary function that may die. +void DieIf(bool should_die) { + GTEST_CHECK_(!should_die) << " - death inside DieIf()."; } -// Tests exceptions thrown in SetUp(). -class ExceptionInSetUpTest : public testing::Test { - protected: - virtual ~ExceptionInSetUpTest() { - Deinit(); - } +// Tests running death tests in a multi-threaded context. - virtual void SetUp() { - printf("(expecting 3 failures)\n"); +// Used for coordination between the main and the spawn thread. +struct SpawnThreadNotifications { + SpawnThreadNotifications() {} - ThrowSEH(); - } + Notification spawn_thread_started; + Notification spawn_thread_ok_to_terminate; - virtual void TearDown() { - FAIL() << "Expected failure #2, in TearDown()."; - } private: - void Deinit() { - FAIL() << "Expected failure #3, in the test fixture d'tor."; - } -}; - -TEST_F(ExceptionInSetUpTest, ExceptionInSetUp) { - FAIL() << "UNEXPECTED failure in the test function. " - << "We should never get here, as SetUp() threw."; -} - -// Tests that TearDown() and the test fixture d'tor are always called, -// even when the test function throws an exception. -class ExceptionInTestFunctionTest : public testing::Test { - protected: - virtual ~ExceptionInTestFunctionTest() { - Deinit(); - } - - virtual void TearDown() { - FAIL() << "Expected failure #2, in TearDown()."; - } - private: - void Deinit() { - FAIL() << "Expected failure #3, in the test fixture d'tor."; - } + GTEST_DISALLOW_COPY_AND_ASSIGN_(SpawnThreadNotifications); }; -// Tests that the test fixture d'tor is always called, even when the -// test function throws an SEH exception. -TEST_F(ExceptionInTestFunctionTest, SEH) { - printf("(expecting 3 failures)\n"); - - ThrowSEH(); -} - -#if GTEST_HAS_EXCEPTIONS +// The function to be executed in the thread spawn by the +// MultipleThreads test (below). +static void ThreadRoutine(SpawnThreadNotifications* notifications) { + // Signals the main thread that this thread has started. + notifications->spawn_thread_started.Notify(); -// Tests that the test fixture d'tor is always called, even when the -// test function throws a C++ exception. We do this only when -// GTEST_HAS_EXCEPTIONS is non-zero, i.e. C++ exceptions are enabled. -TEST_F(ExceptionInTestFunctionTest, CppException) { - throw 1; + // Waits for permission to finish from the main thread. + notifications->spawn_thread_ok_to_terminate.WaitForNotification(); } -// Tests exceptions thrown in TearDown(). -class ExceptionInTearDownTest : public testing::Test { +// This is a death-test test, but it's not named with a DeathTest +// suffix. It starts threads which might interfere with later +// death tests, so it must run after all other death tests. +class DeathTestAndMultiThreadsTest : public testing::Test { protected: - virtual ~ExceptionInTearDownTest() { - Deinit(); + // Starts a thread and waits for it to begin. + virtual void SetUp() { + thread_.reset(new ThreadWithParam( + &ThreadRoutine, ¬ifications_, NULL)); + notifications_.spawn_thread_started.WaitForNotification(); } - + // Tells the thread to finish, and reaps it. + // Depending on the version of the thread library in use, + // a manager thread might still be left running that will interfere + // with later death tests. This is unfortunate, but this class + // cleans up after itself as best it can. virtual void TearDown() { - throw 1; + notifications_.spawn_thread_ok_to_terminate.Notify(); } + private: - void Deinit() { - FAIL() << "Expected failure #2, in the test fixture d'tor."; - } + SpawnThreadNotifications notifications_; + scoped_ptr > thread_; }; -TEST_F(ExceptionInTearDownTest, ExceptionInTearDown) { - printf("(expecting 2 failures)\n"); -} - -#endif // GTEST_HAS_EXCEPTIONS - -#endif // GTEST_OS_WINDOWS +#endif // GTEST_IS_THREADSAFE // The MixedUpTestCaseTest test case verifies that Google Test will fail a // test if it uses a different fixture class than what other tests in @@ -765,7 +801,7 @@ INSTANTIATE_TYPED_TEST_CASE_P(Unsigned, TypedTestP, UnsignedTypes); TEST(ADeathTest, ShouldRunFirst) { } -#if GTEST_HAS_TYPED_TEST +# if GTEST_HAS_TYPED_TEST // We rely on the golden file to verify that typed tests whose test // case name ends with DeathTest are run first. @@ -780,9 +816,9 @@ TYPED_TEST_CASE(ATypedDeathTest, NumericTypes); TYPED_TEST(ATypedDeathTest, ShouldRunFirst) { } -#endif // GTEST_HAS_TYPED_TEST +# endif // GTEST_HAS_TYPED_TEST -#if GTEST_HAS_TYPED_TEST_P +# if GTEST_HAS_TYPED_TEST_P // We rely on the golden file to verify that type-parameterized tests @@ -801,7 +837,7 @@ REGISTER_TYPED_TEST_CASE_P(ATypeParamDeathTest, ShouldRunFirst); INSTANTIATE_TYPED_TEST_CASE_P(My, ATypeParamDeathTest, NumericTypes); -#endif // GTEST_HAS_TYPED_TEST_P +# endif // GTEST_HAS_TYPED_TEST_P #endif // GTEST_HAS_DEATH_TEST @@ -849,23 +885,13 @@ TEST_F(ExpectFailureTest, ExpectNonFatalFailure) { "failure."); } -#if GTEST_IS_THREADSAFE && GTEST_HAS_PTHREAD +#if GTEST_IS_THREADSAFE class ExpectFailureWithThreadsTest : public ExpectFailureTest { protected: static void AddFailureInOtherThread(FailureMode failure) { - pthread_t tid; - pthread_create(&tid, - NULL, - ExpectFailureWithThreadsTest::FailureThread, - &failure); - pthread_join(tid, NULL); - } - private: - static void* FailureThread(void* attr) { - FailureMode* failure = static_cast(attr); - AddFailure(*failure); - return NULL; + ThreadWithParam thread(&AddFailure, failure, NULL); + thread.Join(); } }; @@ -901,7 +927,7 @@ TEST_F(ScopedFakeTestPartResultReporterTest, InterceptOnlyCurrentThread) { EXPECT_EQ(0, results.size()) << "This shouldn't fail."; } -#endif // GTEST_IS_THREADSAFE && GTEST_HAS_PTHREAD +#endif // GTEST_IS_THREADSAFE TEST_F(ExpectFailureTest, ExpectFatalFailureOnAllThreads) { // Expected fatal failure, but succeeds. @@ -959,9 +985,7 @@ class BarEnvironment : public testing::Environment { } }; -GTEST_DEFINE_bool_(internal_skip_environment_and_ad_hoc_tests, false, - "This flag causes the program to skip test environment " - "tests and ad hoc tests."); +bool GTEST_FLAG(internal_skip_environment_and_ad_hoc_tests) = false; // The main function. // @@ -980,18 +1004,19 @@ int main(int argc, char **argv) { // for it. testing::InitGoogleTest(&argc, argv); if (argc >= 2 && - String(argv[1]) == "--gtest_internal_skip_environment_and_ad_hoc_tests") + (std::string(argv[1]) == + "--gtest_internal_skip_environment_and_ad_hoc_tests")) GTEST_FLAG(internal_skip_environment_and_ad_hoc_tests) = true; #if GTEST_HAS_DEATH_TEST if (testing::internal::GTEST_FLAG(internal_run_death_test) != "") { // Skip the usual output capturing if we're running as the child // process of an threadsafe-style death test. -#if GTEST_OS_WINDOWS +# if GTEST_OS_WINDOWS posix::FReopen("nul:", "w", stdout); -#else +# else posix::FReopen("/dev/null", "w", stdout); -#endif // GTEST_OS_WINDOWS +# endif // GTEST_OS_WINDOWS return RUN_ALL_TESTS(); } #endif // GTEST_HAS_DEATH_TEST diff --git a/cpp/thirdparty/protobuf-2.3.0/gtest/test/gtest_output_test_golden_lin.txt b/cpp/thirdparty/protobuf-2.5.0/gtest/test/gtest_output_test_golden_lin.txt similarity index 85% rename from cpp/thirdparty/protobuf-2.3.0/gtest/test/gtest_output_test_golden_lin.txt rename to cpp/thirdparty/protobuf-2.5.0/gtest/test/gtest_output_test_golden_lin.txt index 51bae52d0..0e26d63d6 100644 --- a/cpp/thirdparty/protobuf-2.3.0/gtest/test/gtest_output_test_golden_lin.txt +++ b/cpp/thirdparty/protobuf-2.5.0/gtest/test/gtest_output_test_golden_lin.txt @@ -7,7 +7,7 @@ Expected: true gtest_output_test_.cc:#: Failure Value of: 3 Expected: 2 -[==========] Running 56 tests from 23 test cases. +[==========] Running 63 tests from 28 test cases. [----------] Global test environment set-up. FooEnvironment::SetUp() called. BarEnvironment::SetUp() called. @@ -31,6 +31,19 @@ BarEnvironment::SetUp() called. [ OK ] PassingTest.PassingTest1 [ RUN ] PassingTest.PassingTest2 [ OK ] PassingTest.PassingTest2 +[----------] 1 test from NonfatalFailureTest +[ RUN ] NonfatalFailureTest.EscapesStringOperands +gtest_output_test_.cc:#: Failure +Value of: actual + Actual: "actual \"string\"" +Expected: kGoldenString +Which is: "\"Line" +gtest_output_test_.cc:#: Failure +Value of: actual + Actual: "actual \"string\"" +Expected: golden +Which is: "\"Line" +[ FAILED ] NonfatalFailureTest.EscapesStringOperands [----------] 3 tests from FatalFailureTest [ RUN ] FatalFailureTest.FatalFailureInSubroutine (expecting a failure that x should be 1) @@ -65,7 +78,7 @@ i == 3 gtest_output_test_.cc:#: Failure Expected: (3) >= (a[i]), actual: 3 vs 6 [ FAILED ] LoggingTest.InterleavingLoggingAndAssertions -[----------] 5 tests from SCOPED_TRACETest +[----------] 6 tests from SCOPED_TRACETest [ RUN ] SCOPED_TRACETest.ObeysScopes (expected to fail) gtest_output_test_.cc:#: Failure @@ -148,6 +161,35 @@ gtest_output_test_.cc:#: D gtest_output_test_.cc:#: B gtest_output_test_.cc:#: A [ FAILED ] SCOPED_TRACETest.CanBeRepeated +[ RUN ] SCOPED_TRACETest.WorksConcurrently +(expecting 6 failures) +gtest_output_test_.cc:#: Failure +Failed +Expected failure #1 (in thread B, only trace B alive). +Google Test trace: +gtest_output_test_.cc:#: Trace B +gtest_output_test_.cc:#: Failure +Failed +Expected failure #2 (in thread A, trace A & B both alive). +Google Test trace: +gtest_output_test_.cc:#: Trace A +gtest_output_test_.cc:#: Failure +Failed +Expected failure #3 (in thread B, trace A & B both alive). +Google Test trace: +gtest_output_test_.cc:#: Trace B +gtest_output_test_.cc:#: Failure +Failed +Expected failure #4 (in thread B, only trace A alive). +gtest_output_test_.cc:#: Failure +Failed +Expected failure #5 (in thread A, only trace A alive). +Google Test trace: +gtest_output_test_.cc:#: Trace A +gtest_output_test_.cc:#: Failure +Failed +Expected failure #6 (in thread A, no trace alive). +[ FAILED ] SCOPED_TRACETest.WorksConcurrently [----------] 1 test from NonFatalFailureInFixtureConstructorTest [ RUN ] NonFatalFailureInFixtureConstructorTest.FailureInConstructor (expecting 5 failures) @@ -206,6 +248,12 @@ gtest_output_test_.cc:#: Failure Failed Expected failure #3, in the test fixture d'tor. [ FAILED ] FatalFailureInSetUpTest.FailureInSetUp +[----------] 1 test from AddFailureAtTest +[ RUN ] AddFailureAtTest.MessageContainsSpecifiedFileAndLineNumber +foo.cc:42: Failure +Failed +Expected failure in foo.cc +[ FAILED ] AddFailureAtTest.MessageContainsSpecifiedFileAndLineNumber [----------] 4 tests from MixedUpTestCaseTest [ RUN ] MixedUpTestCaseTest.FirstTestFromNamespaceFoo [ OK ] MixedUpTestCaseTest.FirstTestFromNamespaceFoo @@ -382,18 +430,18 @@ Value of: TypeParam() Actual: 0 Expected: 1 Expected failure -[ FAILED ] TypedTest/0.Failure +[ FAILED ] TypedTest/0.Failure, where TypeParam = int [----------] 2 tests from Unsigned/TypedTestP/0, where TypeParam = unsigned char [ RUN ] Unsigned/TypedTestP/0.Success [ OK ] Unsigned/TypedTestP/0.Success [ RUN ] Unsigned/TypedTestP/0.Failure gtest_output_test_.cc:#: Failure Value of: TypeParam() - Actual: \0 + Actual: '\0' Expected: 1U Which is: 1 Expected failure -[ FAILED ] Unsigned/TypedTestP/0.Failure +[ FAILED ] Unsigned/TypedTestP/0.Failure, where TypeParam = unsigned char [----------] 2 tests from Unsigned/TypedTestP/1, where TypeParam = unsigned int [ RUN ] Unsigned/TypedTestP/1.Success [ OK ] Unsigned/TypedTestP/1.Success @@ -404,7 +452,7 @@ Value of: TypeParam() Expected: 1U Which is: 1 Expected failure -[ FAILED ] Unsigned/TypedTestP/1.Failure +[ FAILED ] Unsigned/TypedTestP/1.Failure, where TypeParam = unsigned int [----------] 4 tests from ExpectFailureTest [ RUN ] ExpectFailureTest.ExpectFatalFailure (expecting 1 failure) @@ -506,6 +554,42 @@ Failed Expected non-fatal failure. [ FAILED ] ExpectFailureTest.ExpectNonFatalFailureOnAllThreads +[----------] 2 tests from ExpectFailureWithThreadsTest +[ RUN ] ExpectFailureWithThreadsTest.ExpectFatalFailure +(expecting 2 failures) +gtest_output_test_.cc:#: Failure +Failed +Expected fatal failure. +gtest.cc:#: Failure +Expected: 1 fatal failure + Actual: 0 failures +[ FAILED ] ExpectFailureWithThreadsTest.ExpectFatalFailure +[ RUN ] ExpectFailureWithThreadsTest.ExpectNonFatalFailure +(expecting 2 failures) +gtest_output_test_.cc:#: Failure +Failed +Expected non-fatal failure. +gtest.cc:#: Failure +Expected: 1 non-fatal failure + Actual: 0 failures +[ FAILED ] ExpectFailureWithThreadsTest.ExpectNonFatalFailure +[----------] 1 test from ScopedFakeTestPartResultReporterTest +[ RUN ] ScopedFakeTestPartResultReporterTest.InterceptOnlyCurrentThread +(expecting 2 failures) +gtest_output_test_.cc:#: Failure +Failed +Expected fatal failure. +gtest_output_test_.cc:#: Failure +Failed +Expected non-fatal failure. +[ FAILED ] ScopedFakeTestPartResultReporterTest.InterceptOnlyCurrentThread +[----------] 1 test from PrintingFailingParams/FailingParamTest +[ RUN ] PrintingFailingParams/FailingParamTest.Fails/0 +gtest_output_test_.cc:#: Failure +Value of: GetParam() + Actual: 2 +Expected: 1 +[ FAILED ] PrintingFailingParams/FailingParamTest.Fails/0, where GetParam() = 2 [----------] Global test environment tear-down BarEnvironment::TearDown() called. gtest_output_test_.cc:#: Failure @@ -515,9 +599,10 @@ FooEnvironment::TearDown() called. gtest_output_test_.cc:#: Failure Failed Expected fatal failure. -[==========] 56 tests from 23 test cases ran. +[==========] 63 tests from 28 test cases ran. [ PASSED ] 21 tests. -[ FAILED ] 35 tests, listed below: +[ FAILED ] 42 tests, listed below: +[ FAILED ] NonfatalFailureTest.EscapesStringOperands [ FAILED ] FatalFailureTest.FatalFailureInSubroutine [ FAILED ] FatalFailureTest.FatalFailureInNestedSubroutine [ FAILED ] FatalFailureTest.NonfatalFailureInSubroutine @@ -527,10 +612,12 @@ Expected fatal failure. [ FAILED ] SCOPED_TRACETest.WorksInSubroutine [ FAILED ] SCOPED_TRACETest.CanBeNested [ FAILED ] SCOPED_TRACETest.CanBeRepeated +[ FAILED ] SCOPED_TRACETest.WorksConcurrently [ FAILED ] NonFatalFailureInFixtureConstructorTest.FailureInConstructor [ FAILED ] FatalFailureInFixtureConstructorTest.FailureInConstructor [ FAILED ] NonFatalFailureInSetUpTest.FailureInSetUp [ FAILED ] FatalFailureInSetUpTest.FailureInSetUp +[ FAILED ] AddFailureAtTest.MessageContainsSpecifiedFileAndLineNumber [ FAILED ] MixedUpTestCaseTest.ThisShouldFail [ FAILED ] MixedUpTestCaseTest.ThisShouldFailToo [ FAILED ] MixedUpTestCaseWithSameTestNameTest.TheSecondTestWithThisNameShouldFail @@ -553,8 +640,12 @@ Expected fatal failure. [ FAILED ] ExpectFailureTest.ExpectNonFatalFailure [ FAILED ] ExpectFailureTest.ExpectFatalFailureOnAllThreads [ FAILED ] ExpectFailureTest.ExpectNonFatalFailureOnAllThreads +[ FAILED ] ExpectFailureWithThreadsTest.ExpectFatalFailure +[ FAILED ] ExpectFailureWithThreadsTest.ExpectNonFatalFailure +[ FAILED ] ScopedFakeTestPartResultReporterTest.InterceptOnlyCurrentThread +[ FAILED ] PrintingFailingParams/FailingParamTest.Fails/0, where GetParam() = 2 -35 FAILED TESTS +42 FAILED TESTS  YOU HAVE 1 DISABLED TEST Note: Google Test filter = FatalFailureTest.*:LoggingTest.* @@ -620,7 +711,7 @@ Note: Google Test filter = *DISABLED_* [==========] 1 test from 1 test case ran. [ PASSED ] 1 test. Note: Google Test filter = PassingTest.* -Note: This is test shard 1 of 2. +Note: This is test shard 2 of 2. [==========] Running 1 test from 1 test case. [----------] Global test environment set-up. [----------] 1 test from PassingTest diff --git a/cpp/thirdparty/protobuf-2.3.0/gtest/test/gtest_pred_impl_unittest.cc b/cpp/thirdparty/protobuf-2.5.0/gtest/test/gtest_pred_impl_unittest.cc similarity index 99% rename from cpp/thirdparty/protobuf-2.3.0/gtest/test/gtest_pred_impl_unittest.cc rename to cpp/thirdparty/protobuf-2.5.0/gtest/test/gtest_pred_impl_unittest.cc index e7ee54b56..a84eff860 100644 --- a/cpp/thirdparty/protobuf-2.3.0/gtest/test/gtest_pred_impl_unittest.cc +++ b/cpp/thirdparty/protobuf-2.5.0/gtest/test/gtest_pred_impl_unittest.cc @@ -27,7 +27,7 @@ // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -// This file is AUTOMATICALLY GENERATED on 10/02/2008 by command +// This file is AUTOMATICALLY GENERATED on 10/31/2011 by command // 'gen_gtest_pred_impl.py 5'. DO NOT EDIT BY HAND! // Regression test for gtest_pred_impl.h @@ -49,8 +49,8 @@ #include -#include -#include +#include "gtest/gtest.h" +#include "gtest/gtest-spi.h" // A user-defined data type. struct Bool { @@ -103,11 +103,10 @@ testing::AssertionResult PredFormatFunction1(const char* e1, if (PredFunction1(v1)) return testing::AssertionSuccess(); - testing::Message msg; - msg << e1 + return testing::AssertionFailure() + << e1 << " is expected to be positive, but evaluates to " << v1 << "."; - return testing::AssertionFailure(msg); } // A unary predicate-formatter functor. @@ -494,11 +493,10 @@ testing::AssertionResult PredFormatFunction2(const char* e1, if (PredFunction2(v1, v2)) return testing::AssertionSuccess(); - testing::Message msg; - msg << e1 << " + " << e2 + return testing::AssertionFailure() + << e1 << " + " << e2 << " is expected to be positive, but evaluates to " << v1 + v2 << "."; - return testing::AssertionFailure(msg); } // A binary predicate-formatter functor. @@ -927,11 +925,10 @@ testing::AssertionResult PredFormatFunction3(const char* e1, if (PredFunction3(v1, v2, v3)) return testing::AssertionSuccess(); - testing::Message msg; - msg << e1 << " + " << e2 << " + " << e3 + return testing::AssertionFailure() + << e1 << " + " << e2 << " + " << e3 << " is expected to be positive, but evaluates to " << v1 + v2 + v3 << "."; - return testing::AssertionFailure(msg); } // A ternary predicate-formatter functor. @@ -1402,11 +1399,10 @@ testing::AssertionResult PredFormatFunction4(const char* e1, if (PredFunction4(v1, v2, v3, v4)) return testing::AssertionSuccess(); - testing::Message msg; - msg << e1 << " + " << e2 << " + " << e3 << " + " << e4 + return testing::AssertionFailure() + << e1 << " + " << e2 << " + " << e3 << " + " << e4 << " is expected to be positive, but evaluates to " << v1 + v2 + v3 + v4 << "."; - return testing::AssertionFailure(msg); } // A 4-ary predicate-formatter functor. @@ -1919,11 +1915,10 @@ testing::AssertionResult PredFormatFunction5(const char* e1, if (PredFunction5(v1, v2, v3, v4, v5)) return testing::AssertionSuccess(); - testing::Message msg; - msg << e1 << " + " << e2 << " + " << e3 << " + " << e4 << " + " << e5 + return testing::AssertionFailure() + << e1 << " + " << e2 << " + " << e3 << " + " << e4 << " + " << e5 << " is expected to be positive, but evaluates to " << v1 + v2 + v3 + v4 + v5 << "."; - return testing::AssertionFailure(msg); } // A 5-ary predicate-formatter functor. diff --git a/cpp/thirdparty/protobuf-2.3.0/gtest/test/gtest_prod_test.cc b/cpp/thirdparty/protobuf-2.5.0/gtest/test/gtest_prod_test.cc similarity index 98% rename from cpp/thirdparty/protobuf-2.3.0/gtest/test/gtest_prod_test.cc rename to cpp/thirdparty/protobuf-2.5.0/gtest/test/gtest_prod_test.cc index bc3201d0f..060abce18 100644 --- a/cpp/thirdparty/protobuf-2.3.0/gtest/test/gtest_prod_test.cc +++ b/cpp/thirdparty/protobuf-2.5.0/gtest/test/gtest_prod_test.cc @@ -31,7 +31,7 @@ // // Unit test for include/gtest/gtest_prod.h. -#include +#include "gtest/gtest.h" #include "test/production.h" // Tests that private members can be accessed from a TEST declared as diff --git a/cpp/thirdparty/protobuf-2.3.0/gtest/test/gtest_repeat_test.cc b/cpp/thirdparty/protobuf-2.5.0/gtest/test/gtest_repeat_test.cc similarity index 96% rename from cpp/thirdparty/protobuf-2.3.0/gtest/test/gtest_repeat_test.cc rename to cpp/thirdparty/protobuf-2.5.0/gtest/test/gtest_repeat_test.cc index df6868b83..481012adc 100644 --- a/cpp/thirdparty/protobuf-2.3.0/gtest/test/gtest_repeat_test.cc +++ b/cpp/thirdparty/protobuf-2.5.0/gtest/test/gtest_repeat_test.cc @@ -33,7 +33,7 @@ #include #include -#include +#include "gtest/gtest.h" // Indicates that this translation unit is part of Google Test's // implementation. It must come before gtest-internal-inl.h is @@ -69,9 +69,9 @@ namespace { << " Actual: " << actual_val << "\n"\ << "Expected: " #expected "\n"\ << "Which is: " << expected_val << "\n";\ - abort();\ + ::testing::internal::posix::Abort();\ }\ - } while(::testing::internal::AlwaysFalse()) + } while (::testing::internal::AlwaysFalse()) // Used for verifying that global environment set-up and tear-down are @@ -113,10 +113,10 @@ TEST(BarDeathTest, ThreadSafeAndFast) { g_death_test_count++; GTEST_FLAG(death_test_style) = "threadsafe"; - EXPECT_DEATH_IF_SUPPORTED(abort(), ""); + EXPECT_DEATH_IF_SUPPORTED(::testing::internal::posix::Abort(), ""); GTEST_FLAG(death_test_style) = "fast"; - EXPECT_DEATH_IF_SUPPORTED(abort(), ""); + EXPECT_DEATH_IF_SUPPORTED(::testing::internal::posix::Abort(), ""); } #if GTEST_HAS_PARAM_TEST diff --git a/cpp/thirdparty/protobuf-2.3.0/gtest/test/gtest_shuffle_test.py b/cpp/thirdparty/protobuf-2.5.0/gtest/test/gtest_shuffle_test.py similarity index 97% rename from cpp/thirdparty/protobuf-2.3.0/gtest/test/gtest_shuffle_test.py rename to cpp/thirdparty/protobuf-2.5.0/gtest/test/gtest_shuffle_test.py index a870a01be..30d0303d1 100755 --- a/cpp/thirdparty/protobuf-2.3.0/gtest/test/gtest_shuffle_test.py +++ b/cpp/thirdparty/protobuf-2.5.0/gtest/test/gtest_shuffle_test.py @@ -78,16 +78,10 @@ def RandomSeedFlag(n): def RunAndReturnOutput(extra_env, args): """Runs the test program and returns its output.""" - try: - original_env = os.environ.copy() - os.environ.update(extra_env) - return gtest_test_utils.Subprocess([COMMAND] + args).output - finally: - for key in extra_env.iterkeys(): - if key in original_env: - os.environ[key] = original_env[key] - else: - del os.environ[key] + environ_copy = os.environ.copy() + environ_copy.update(extra_env) + + return gtest_test_utils.Subprocess([COMMAND] + args, env=environ_copy).output def GetTestsForAllIterations(extra_env, args): diff --git a/cpp/thirdparty/protobuf-2.3.0/gtest/test/gtest_shuffle_test_.cc b/cpp/thirdparty/protobuf-2.5.0/gtest/test/gtest_shuffle_test_.cc similarity index 98% rename from cpp/thirdparty/protobuf-2.3.0/gtest/test/gtest_shuffle_test_.cc rename to cpp/thirdparty/protobuf-2.5.0/gtest/test/gtest_shuffle_test_.cc index 53ecf7770..6fb441bd4 100644 --- a/cpp/thirdparty/protobuf-2.3.0/gtest/test/gtest_shuffle_test_.cc +++ b/cpp/thirdparty/protobuf-2.5.0/gtest/test/gtest_shuffle_test_.cc @@ -31,7 +31,7 @@ // Verifies that test shuffling works. -#include +#include "gtest/gtest.h" namespace { @@ -42,7 +42,6 @@ using ::testing::Test; using ::testing::TestEventListeners; using ::testing::TestInfo; using ::testing::UnitTest; -using ::testing::internal::String; using ::testing::internal::scoped_ptr; // The test methods are empty, as the sole purpose of this program is diff --git a/cpp/thirdparty/protobuf-2.3.0/gtest/test/gtest_sole_header_test.cc b/cpp/thirdparty/protobuf-2.5.0/gtest/test/gtest_sole_header_test.cc similarity index 98% rename from cpp/thirdparty/protobuf-2.3.0/gtest/test/gtest_sole_header_test.cc rename to cpp/thirdparty/protobuf-2.5.0/gtest/test/gtest_sole_header_test.cc index de91e800f..ccd091a28 100644 --- a/cpp/thirdparty/protobuf-2.3.0/gtest/test/gtest_sole_header_test.cc +++ b/cpp/thirdparty/protobuf-2.5.0/gtest/test/gtest_sole_header_test.cc @@ -32,7 +32,7 @@ // This test verifies that it's possible to use Google Test by including // the gtest.h header file alone. -#include +#include "gtest/gtest.h" namespace { diff --git a/cpp/thirdparty/protobuf-2.5.0/gtest/test/gtest_stress_test.cc b/cpp/thirdparty/protobuf-2.5.0/gtest/test/gtest_stress_test.cc new file mode 100644 index 000000000..e7daa430d --- /dev/null +++ b/cpp/thirdparty/protobuf-2.5.0/gtest/test/gtest_stress_test.cc @@ -0,0 +1,256 @@ +// Copyright 2007, Google Inc. +// All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Author: wan@google.com (Zhanyong Wan) + +// Tests that SCOPED_TRACE() and various Google Test assertions can be +// used in a large number of threads concurrently. + +#include "gtest/gtest.h" + +#include +#include + +// We must define this macro in order to #include +// gtest-internal-inl.h. This is how Google Test prevents a user from +// accidentally depending on its internal implementation. +#define GTEST_IMPLEMENTATION_ 1 +#include "src/gtest-internal-inl.h" +#undef GTEST_IMPLEMENTATION_ + +#if GTEST_IS_THREADSAFE + +namespace testing { +namespace { + +using internal::Notification; +using internal::TestPropertyKeyIs; +using internal::ThreadWithParam; +using internal::scoped_ptr; + +// In order to run tests in this file, for platforms where Google Test is +// thread safe, implement ThreadWithParam. See the description of its API +// in gtest-port.h, where it is defined for already supported platforms. + +// How many threads to create? +const int kThreadCount = 50; + +std::string IdToKey(int id, const char* suffix) { + Message key; + key << "key_" << id << "_" << suffix; + return key.GetString(); +} + +std::string IdToString(int id) { + Message id_message; + id_message << id; + return id_message.GetString(); +} + +void ExpectKeyAndValueWereRecordedForId( + const std::vector& properties, + int id, const char* suffix) { + TestPropertyKeyIs matches_key(IdToKey(id, suffix).c_str()); + const std::vector::const_iterator property = + std::find_if(properties.begin(), properties.end(), matches_key); + ASSERT_TRUE(property != properties.end()) + << "expecting " << suffix << " value for id " << id; + EXPECT_STREQ(IdToString(id).c_str(), property->value()); +} + +// Calls a large number of Google Test assertions, where exactly one of them +// will fail. +void ManyAsserts(int id) { + GTEST_LOG_(INFO) << "Thread #" << id << " running..."; + + SCOPED_TRACE(Message() << "Thread #" << id); + + for (int i = 0; i < kThreadCount; i++) { + SCOPED_TRACE(Message() << "Iteration #" << i); + + // A bunch of assertions that should succeed. + EXPECT_TRUE(true); + ASSERT_FALSE(false) << "This shouldn't fail."; + EXPECT_STREQ("a", "a"); + ASSERT_LE(5, 6); + EXPECT_EQ(i, i) << "This shouldn't fail."; + + // RecordProperty() should interact safely with other threads as well. + // The shared_key forces property updates. + Test::RecordProperty(IdToKey(id, "string").c_str(), IdToString(id).c_str()); + Test::RecordProperty(IdToKey(id, "int").c_str(), id); + Test::RecordProperty("shared_key", IdToString(id).c_str()); + + // This assertion should fail kThreadCount times per thread. It + // is for testing whether Google Test can handle failed assertions in a + // multi-threaded context. + EXPECT_LT(i, 0) << "This should always fail."; + } +} + +void CheckTestFailureCount(int expected_failures) { + const TestInfo* const info = UnitTest::GetInstance()->current_test_info(); + const TestResult* const result = info->result(); + GTEST_CHECK_(expected_failures == result->total_part_count()) + << "Logged " << result->total_part_count() << " failures " + << " vs. " << expected_failures << " expected"; +} + +// Tests using SCOPED_TRACE() and Google Test assertions in many threads +// concurrently. +TEST(StressTest, CanUseScopedTraceAndAssertionsInManyThreads) { + { + scoped_ptr > threads[kThreadCount]; + Notification threads_can_start; + for (int i = 0; i != kThreadCount; i++) + threads[i].reset(new ThreadWithParam(&ManyAsserts, + i, + &threads_can_start)); + + threads_can_start.Notify(); + + // Blocks until all the threads are done. + for (int i = 0; i != kThreadCount; i++) + threads[i]->Join(); + } + + // Ensures that kThreadCount*kThreadCount failures have been reported. + const TestInfo* const info = UnitTest::GetInstance()->current_test_info(); + const TestResult* const result = info->result(); + + std::vector properties; + // We have no access to the TestResult's list of properties but we can + // copy them one by one. + for (int i = 0; i < result->test_property_count(); ++i) + properties.push_back(result->GetTestProperty(i)); + + EXPECT_EQ(kThreadCount * 2 + 1, result->test_property_count()) + << "String and int values recorded on each thread, " + << "as well as one shared_key"; + for (int i = 0; i < kThreadCount; ++i) { + ExpectKeyAndValueWereRecordedForId(properties, i, "string"); + ExpectKeyAndValueWereRecordedForId(properties, i, "int"); + } + CheckTestFailureCount(kThreadCount*kThreadCount); +} + +void FailingThread(bool is_fatal) { + if (is_fatal) + FAIL() << "Fatal failure in some other thread. " + << "(This failure is expected.)"; + else + ADD_FAILURE() << "Non-fatal failure in some other thread. " + << "(This failure is expected.)"; +} + +void GenerateFatalFailureInAnotherThread(bool is_fatal) { + ThreadWithParam thread(&FailingThread, is_fatal, NULL); + thread.Join(); +} + +TEST(NoFatalFailureTest, ExpectNoFatalFailureIgnoresFailuresInOtherThreads) { + EXPECT_NO_FATAL_FAILURE(GenerateFatalFailureInAnotherThread(true)); + // We should only have one failure (the one from + // GenerateFatalFailureInAnotherThread()), since the EXPECT_NO_FATAL_FAILURE + // should succeed. + CheckTestFailureCount(1); +} + +void AssertNoFatalFailureIgnoresFailuresInOtherThreads() { + ASSERT_NO_FATAL_FAILURE(GenerateFatalFailureInAnotherThread(true)); +} +TEST(NoFatalFailureTest, AssertNoFatalFailureIgnoresFailuresInOtherThreads) { + // Using a subroutine, to make sure, that the test continues. + AssertNoFatalFailureIgnoresFailuresInOtherThreads(); + // We should only have one failure (the one from + // GenerateFatalFailureInAnotherThread()), since the EXPECT_NO_FATAL_FAILURE + // should succeed. + CheckTestFailureCount(1); +} + +TEST(FatalFailureTest, ExpectFatalFailureIgnoresFailuresInOtherThreads) { + // This statement should fail, since the current thread doesn't generate a + // fatal failure, only another one does. + EXPECT_FATAL_FAILURE(GenerateFatalFailureInAnotherThread(true), "expected"); + CheckTestFailureCount(2); +} + +TEST(FatalFailureOnAllThreadsTest, ExpectFatalFailureOnAllThreads) { + // This statement should succeed, because failures in all threads are + // considered. + EXPECT_FATAL_FAILURE_ON_ALL_THREADS( + GenerateFatalFailureInAnotherThread(true), "expected"); + CheckTestFailureCount(0); + // We need to add a failure, because main() checks that there are failures. + // But when only this test is run, we shouldn't have any failures. + ADD_FAILURE() << "This is an expected non-fatal failure."; +} + +TEST(NonFatalFailureTest, ExpectNonFatalFailureIgnoresFailuresInOtherThreads) { + // This statement should fail, since the current thread doesn't generate a + // fatal failure, only another one does. + EXPECT_NONFATAL_FAILURE(GenerateFatalFailureInAnotherThread(false), + "expected"); + CheckTestFailureCount(2); +} + +TEST(NonFatalFailureOnAllThreadsTest, ExpectNonFatalFailureOnAllThreads) { + // This statement should succeed, because failures in all threads are + // considered. + EXPECT_NONFATAL_FAILURE_ON_ALL_THREADS( + GenerateFatalFailureInAnotherThread(false), "expected"); + CheckTestFailureCount(0); + // We need to add a failure, because main() checks that there are failures, + // But when only this test is run, we shouldn't have any failures. + ADD_FAILURE() << "This is an expected non-fatal failure."; +} + +} // namespace +} // namespace testing + +int main(int argc, char **argv) { + testing::InitGoogleTest(&argc, argv); + + const int result = RUN_ALL_TESTS(); // Expected to fail. + GTEST_CHECK_(result == 1) << "RUN_ALL_TESTS() did not fail as expected"; + + printf("\nPASS\n"); + return 0; +} + +#else +TEST(StressTest, + DISABLED_ThreadSafetyTestsAreSkippedWhenGoogleTestIsNotThreadSafe) { +} + +int main(int argc, char **argv) { + testing::InitGoogleTest(&argc, argv); + return RUN_ALL_TESTS(); +} +#endif // GTEST_IS_THREADSAFE diff --git a/cpp/thirdparty/protobuf-2.3.0/gtest/test/gtest_test_utils.py b/cpp/thirdparty/protobuf-2.5.0/gtest/test/gtest_test_utils.py similarity index 75% rename from cpp/thirdparty/protobuf-2.3.0/gtest/test/gtest_test_utils.py rename to cpp/thirdparty/protobuf-2.5.0/gtest/test/gtest_test_utils.py index 385662adf..6dd8db4bf 100755 --- a/cpp/thirdparty/protobuf-2.3.0/gtest/test/gtest_test_utils.py +++ b/cpp/thirdparty/protobuf-2.5.0/gtest/test/gtest_test_utils.py @@ -51,6 +51,7 @@ except: _SUBPROCESS_MODULE_AVAILABLE = False # pylint: enable-msg=C6204 +GTEST_OUTPUT_VAR_NAME = 'GTEST_OUTPUT' IS_WINDOWS = os.name == 'nt' IS_CYGWIN = os.name == 'posix' and 'CYGWIN' in os.uname()[0] @@ -62,8 +63,8 @@ TestCase = _test_module.TestCase # pylint: disable-msg=C6409 # Initially maps a flag to its default value. After # _ParseAndStripGTestFlags() is called, maps a flag to its actual value. -_flag_map = {'gtest_source_dir': os.path.dirname(sys.argv[0]), - 'gtest_build_dir': os.path.dirname(sys.argv[0])} +_flag_map = {'source_dir': os.path.dirname(sys.argv[0]), + 'build_dir': os.path.dirname(sys.argv[0])} _gtest_flags_are_parsed = False @@ -110,13 +111,13 @@ def GetFlag(flag): def GetSourceDir(): """Returns the absolute path of the directory where the .py files are.""" - return os.path.abspath(GetFlag('gtest_source_dir')) + return os.path.abspath(GetFlag('source_dir')) def GetBuildDir(): """Returns the absolute path of the directory where the test binaries are.""" - return os.path.abspath(GetFlag('gtest_build_dir')) + return os.path.abspath(GetFlag('build_dir')) _temp_dir = None @@ -137,7 +138,7 @@ def GetTempDir(): return _temp_dir -def GetTestExecutablePath(executable_name): +def GetTestExecutablePath(executable_name, build_dir=None): """Returns the absolute path of the test binary given its name. The function will print a message and abort the program if the resulting file @@ -145,24 +146,23 @@ def GetTestExecutablePath(executable_name): Args: executable_name: name of the test binary that the test script runs. + build_dir: directory where to look for executables, by default + the result of GetBuildDir(). Returns: The absolute path of the test binary. """ - path = os.path.abspath(os.path.join(GetBuildDir(), executable_name)) + path = os.path.abspath(os.path.join(build_dir or GetBuildDir(), + executable_name)) if (IS_WINDOWS or IS_CYGWIN) and not path.endswith('.exe'): path += '.exe' if not os.path.exists(path): message = ( 'Unable to find the test binary. Please make sure to provide path\n' - 'to the binary via the --gtest_build_dir flag or the GTEST_BUILD_DIR\n' - 'environment variable. For convenient use, invoke this script via\n' - 'mk_test.py.\n' - # TODO(vladl@google.com): change mk_test.py to test.py after renaming - # the file. - 'Please run mk_test.py -h for help.') + 'to the binary via the --build_dir flag or the BUILD_DIR\n' + 'environment variable.') print >> sys.stderr, message sys.exit(1) @@ -190,23 +190,28 @@ def GetExitStatus(exit_code): class Subprocess: - def __init__(self, command, working_dir=None, capture_stderr=True): + def __init__(self, command, working_dir=None, capture_stderr=True, env=None): """Changes into a specified directory, if provided, and executes a command. - Restores the old directory afterwards. Execution results are returned - via the following attributes: - terminated_by_sygnal True iff the child process has been terminated - by a signal. - signal Sygnal that terminated the child process. - exited True iff the child process exited normally. - exit_code The code with which the child proces exited. - output Child process's stdout and stderr output - combined in a string. + + Restores the old directory afterwards. Args: command: The command to run, in the form of sys.argv. working_dir: The directory to change into. capture_stderr: Determines whether to capture stderr in the output member or to discard it. + env: Dictionary with environment to pass to the subprocess. + + Returns: + An object that represents outcome of the executed process. It has the + following attributes: + terminated_by_signal True iff the child process has been terminated + by a signal. + signal Sygnal that terminated the child process. + exited True iff the child process exited normally. + exit_code The code with which the child process exited. + output Child process's stdout and stderr output + combined in a string. """ # The subprocess module is the preferrable way of running programs @@ -224,13 +229,30 @@ class Subprocess: p = subprocess.Popen(command, stdout=subprocess.PIPE, stderr=stderr, - cwd=working_dir, universal_newlines=True) + cwd=working_dir, universal_newlines=True, env=env) # communicate returns a tuple with the file obect for the child's # output. self.output = p.communicate()[0] self._return_code = p.returncode else: old_dir = os.getcwd() + + def _ReplaceEnvDict(dest, src): + # Changes made by os.environ.clear are not inheritable by child + # processes until Python 2.6. To produce inheritable changes we have + # to delete environment items with the del statement. + for key in dest.keys(): + del dest[key] + dest.update(src) + + # When 'env' is not None, backup the environment variables and replace + # them with the passed 'env'. When 'env' is None, we simply use the + # current 'os.environ' for compatibility with the subprocess.Popen + # semantics used above. + if env is not None: + old_environ = os.environ.copy() + _ReplaceEnvDict(os.environ, env) + try: if working_dir is not None: os.chdir(working_dir) @@ -243,6 +265,12 @@ class Subprocess: ret_code = p.wait() finally: os.chdir(old_dir) + + # Restore the old environment variables + # if they were replaced. + if env is not None: + _ReplaceEnvDict(os.environ, old_environ) + # Converts ret_code to match the semantics of # subprocess.Popen.returncode. if os.WIFSIGNALED(ret_code): @@ -267,4 +295,11 @@ def Main(): # unittest.main(). Otherwise the latter will be confused by the # --gtest_* flags. _ParseAndStripGTestFlags(sys.argv) + # The tested binaries should not be writing XML output files unless the + # script explicitly instructs them to. + # TODO(vladl@google.com): Move this into Subprocess when we implement + # passing environment into it as a parameter. + if GTEST_OUTPUT_VAR_NAME in os.environ: + del os.environ[GTEST_OUTPUT_VAR_NAME] + _test_module.main() diff --git a/cpp/thirdparty/protobuf-2.3.0/gtest/test/gtest_throw_on_failure_ex_test.cc b/cpp/thirdparty/protobuf-2.5.0/gtest/test/gtest_throw_on_failure_ex_test.cc similarity index 99% rename from cpp/thirdparty/protobuf-2.3.0/gtest/test/gtest_throw_on_failure_ex_test.cc rename to cpp/thirdparty/protobuf-2.5.0/gtest/test/gtest_throw_on_failure_ex_test.cc index 8bf9dc905..8d46c76f1 100644 --- a/cpp/thirdparty/protobuf-2.3.0/gtest/test/gtest_throw_on_failure_ex_test.cc +++ b/cpp/thirdparty/protobuf-2.5.0/gtest/test/gtest_throw_on_failure_ex_test.cc @@ -31,7 +31,7 @@ // Tests Google Test's throw-on-failure mode with exceptions enabled. -#include +#include "gtest/gtest.h" #include #include diff --git a/cpp/thirdparty/protobuf-2.3.0/gtest/test/gtest_throw_on_failure_test.py b/cpp/thirdparty/protobuf-2.5.0/gtest/test/gtest_throw_on_failure_test.py similarity index 100% rename from cpp/thirdparty/protobuf-2.3.0/gtest/test/gtest_throw_on_failure_test.py rename to cpp/thirdparty/protobuf-2.5.0/gtest/test/gtest_throw_on_failure_test.py diff --git a/cpp/thirdparty/protobuf-2.3.0/gtest/test/gtest_throw_on_failure_test_.cc b/cpp/thirdparty/protobuf-2.5.0/gtest/test/gtest_throw_on_failure_test_.cc similarity index 78% rename from cpp/thirdparty/protobuf-2.3.0/gtest/test/gtest_throw_on_failure_test_.cc rename to cpp/thirdparty/protobuf-2.5.0/gtest/test/gtest_throw_on_failure_test_.cc index 88fbd5a76..2b88fe3d9 100644 --- a/cpp/thirdparty/protobuf-2.3.0/gtest/test/gtest_throw_on_failure_test_.cc +++ b/cpp/thirdparty/protobuf-2.5.0/gtest/test/gtest_throw_on_failure_test_.cc @@ -35,14 +35,30 @@ // invoked by gtest_throw_on_failure_test.py, and is expected to exit // with non-zero in the throw-on-failure mode or 0 otherwise. -#include +#include "gtest/gtest.h" + +#include // for fflush, fprintf, NULL, etc. +#include // for exit +#include // for set_terminate + +// This terminate handler aborts the program using exit() rather than abort(). +// This avoids showing pop-ups on Windows systems and core dumps on Unix-like +// ones. +void TerminateHandler() { + fprintf(stderr, "%s\n", "Unhandled C++ exception terminating the program."); + fflush(NULL); + exit(1); +} int main(int argc, char** argv) { +#if GTEST_HAS_EXCEPTIONS + std::set_terminate(&TerminateHandler); +#endif testing::InitGoogleTest(&argc, argv); // We want to ensure that people can use Google Test assertions in // other testing frameworks, as long as they initialize Google Test - // properly and set the thrown-on-failure mode. Therefore, we don't + // properly and set the throw-on-failure mode. Therefore, we don't // use Google Test's constructs for defining and running tests // (e.g. TEST and RUN_ALL_TESTS) here. diff --git a/cpp/thirdparty/protobuf-2.3.0/gtest/test/gtest_uninitialized_test.py b/cpp/thirdparty/protobuf-2.5.0/gtest/test/gtest_uninitialized_test.py similarity index 100% rename from cpp/thirdparty/protobuf-2.3.0/gtest/test/gtest_uninitialized_test.py rename to cpp/thirdparty/protobuf-2.5.0/gtest/test/gtest_uninitialized_test.py diff --git a/cpp/thirdparty/protobuf-2.3.0/gtest/test/gtest_uninitialized_test_.cc b/cpp/thirdparty/protobuf-2.5.0/gtest/test/gtest_uninitialized_test_.cc similarity index 98% rename from cpp/thirdparty/protobuf-2.3.0/gtest/test/gtest_uninitialized_test_.cc rename to cpp/thirdparty/protobuf-2.5.0/gtest/test/gtest_uninitialized_test_.cc index e8b2aa81d..44316987f 100644 --- a/cpp/thirdparty/protobuf-2.3.0/gtest/test/gtest_uninitialized_test_.cc +++ b/cpp/thirdparty/protobuf-2.5.0/gtest/test/gtest_uninitialized_test_.cc @@ -29,7 +29,7 @@ // // Author: wan@google.com (Zhanyong Wan) -#include +#include "gtest/gtest.h" TEST(DummyTest, Dummy) { // This test doesn't verify anything. We just need it to create a diff --git a/cpp/thirdparty/protobuf-2.3.0/gtest/test/gtest_unittest.cc b/cpp/thirdparty/protobuf-2.5.0/gtest/test/gtest_unittest.cc similarity index 78% rename from cpp/thirdparty/protobuf-2.3.0/gtest/test/gtest_unittest.cc rename to cpp/thirdparty/protobuf-2.5.0/gtest/test/gtest_unittest.cc index 5c69b4639..f4f304312 100644 --- a/cpp/thirdparty/protobuf-2.3.0/gtest/test/gtest_unittest.cc +++ b/cpp/thirdparty/protobuf-2.5.0/gtest/test/gtest_unittest.cc @@ -32,7 +32,7 @@ // Tests for Google Test itself. This verifies that the basic constructs of // Google Test work. -#include +#include "gtest/gtest.h" // Verifies that the command line flag variables can be accessed // in code once has been #included. @@ -51,11 +51,21 @@ TEST(CommandLineFlagsTest, CanBeAccessedInCodeOnceGTestHIsIncluded) { || testing::GTEST_FLAG(show_internal_stack_frames) || testing::GTEST_FLAG(shuffle) || testing::GTEST_FLAG(stack_trace_depth) > 0 + || testing::GTEST_FLAG(stream_result_to) != "unknown" || testing::GTEST_FLAG(throw_on_failure); EXPECT_TRUE(dummy || !dummy); // Suppresses warning that dummy is unused. } -#include +#include // For INT_MAX. +#include +#include +#include + +#include +#include +#include + +#include "gtest/gtest-spi.h" // Indicates that this translation unit is part of Google Test's // implementation. It must come before gtest-internal-inl.h is @@ -66,25 +76,9 @@ TEST(CommandLineFlagsTest, CanBeAccessedInCodeOnceGTestHIsIncluded) { #include "src/gtest-internal-inl.h" #undef GTEST_IMPLEMENTATION_ -#include // For INT_MAX. -#include -#include - -#if GTEST_HAS_PTHREAD -#include -#endif // GTEST_HAS_PTHREAD - -#ifdef __BORLANDC__ -#include -#endif - namespace testing { namespace internal { -bool ShouldUseColor(bool stdout_is_tty); -const char* FormatTimeInMillisAsSeconds(TimeInMillis ms); -bool ParseInt32Flag(const char* str, const char* flag, Int32* value); - // Provides access to otherwise private parts of the TestEventListeners class // that are needed to test it. class TestEventListenersAccessor { @@ -134,6 +128,7 @@ using testing::GTEST_FLAG(repeat); using testing::GTEST_FLAG(show_internal_stack_frames); using testing::GTEST_FLAG(shuffle); using testing::GTEST_FLAG(stack_trace_depth); +using testing::GTEST_FLAG(stream_result_to); using testing::GTEST_FLAG(throw_on_failure); using testing::IsNotSubstring; using testing::IsSubstring; @@ -141,53 +136,85 @@ using testing::Message; using testing::ScopedFakeTestPartResultReporter; using testing::StaticAssertTypeEq; using testing::Test; -using testing::TestEventListeners; using testing::TestCase; +using testing::TestEventListeners; using testing::TestPartResult; using testing::TestPartResultArray; using testing::TestProperty; using testing::TestResult; +using testing::TimeInMillis; using testing::UnitTest; +using testing::kMaxStackTraceDepth; +using testing::internal::AddReference; using testing::internal::AlwaysFalse; using testing::internal::AlwaysTrue; using testing::internal::AppendUserMessage; +using testing::internal::ArrayAwareFind; +using testing::internal::ArrayEq; using testing::internal::CodePointToUtf8; +using testing::internal::CompileAssertTypesEqual; +using testing::internal::CopyArray; +using testing::internal::CountIf; using testing::internal::EqFailure; using testing::internal::FloatingPoint; +using testing::internal::ForEach; +using testing::internal::FormatEpochTimeInMillisAsIso8601; using testing::internal::FormatTimeInMillisAsSeconds; using testing::internal::GTestFlagSaver; using testing::internal::GetCurrentOsStackTraceExceptTop; +using testing::internal::GetElementOr; using testing::internal::GetNextRandomSeed; using testing::internal::GetRandomSeedFromFlag; using testing::internal::GetTestTypeId; +using testing::internal::GetTimeInMillis; using testing::internal::GetTypeId; using testing::internal::GetUnitTestImpl; +using testing::internal::ImplicitlyConvertible; using testing::internal::Int32; using testing::internal::Int32FromEnvOrDie; +using testing::internal::IsAProtocolMessage; +using testing::internal::IsContainer; +using testing::internal::IsContainerTest; +using testing::internal::IsNotContainer; +using testing::internal::NativeArray; using testing::internal::ParseInt32Flag; +using testing::internal::RemoveConst; +using testing::internal::RemoveReference; using testing::internal::ShouldRunTestOnShard; using testing::internal::ShouldShard; using testing::internal::ShouldUseColor; +using testing::internal::Shuffle; +using testing::internal::ShuffleRange; +using testing::internal::SkipPrefix; using testing::internal::StreamableToString; using testing::internal::String; using testing::internal::TestEventListenersAccessor; using testing::internal::TestResultAccessor; -using testing::internal::ThreadLocal; using testing::internal::UInt32; -using testing::internal::Vector; using testing::internal::WideStringToUtf8; +using testing::internal::kCopy; using testing::internal::kMaxRandomSeed; +using testing::internal::kReference; using testing::internal::kTestTypeIdInGoogleTest; using testing::internal::scoped_ptr; -class TestingVector : public Vector { +#if GTEST_HAS_STREAM_REDIRECTION +using testing::internal::CaptureStdout; +using testing::internal::GetCapturedStdout; +#endif + +#if GTEST_IS_THREADSAFE +using testing::internal::ThreadWithParam; +#endif + +class TestingVector : public std::vector { }; ::std::ostream& operator<<(::std::ostream& os, const TestingVector& vector) { os << "{ "; - for (int i = 0; i < vector.size(); i++) { - os << vector.GetElement(i) << " "; + for (size_t i = 0; i < vector.size(); i++) { + os << vector[i] << " "; } os << "}"; return os; @@ -266,33 +293,129 @@ TEST(GetTestTypeIdTest, ReturnsTheSameValueInsideOrOutsideOfGoogleTest) { // Tests FormatTimeInMillisAsSeconds(). TEST(FormatTimeInMillisAsSecondsTest, FormatsZero) { - EXPECT_STREQ("0", FormatTimeInMillisAsSeconds(0)); + EXPECT_EQ("0", FormatTimeInMillisAsSeconds(0)); } TEST(FormatTimeInMillisAsSecondsTest, FormatsPositiveNumber) { - EXPECT_STREQ("0.003", FormatTimeInMillisAsSeconds(3)); - EXPECT_STREQ("0.01", FormatTimeInMillisAsSeconds(10)); - EXPECT_STREQ("0.2", FormatTimeInMillisAsSeconds(200)); - EXPECT_STREQ("1.2", FormatTimeInMillisAsSeconds(1200)); - EXPECT_STREQ("3", FormatTimeInMillisAsSeconds(3000)); + EXPECT_EQ("0.003", FormatTimeInMillisAsSeconds(3)); + EXPECT_EQ("0.01", FormatTimeInMillisAsSeconds(10)); + EXPECT_EQ("0.2", FormatTimeInMillisAsSeconds(200)); + EXPECT_EQ("1.2", FormatTimeInMillisAsSeconds(1200)); + EXPECT_EQ("3", FormatTimeInMillisAsSeconds(3000)); } TEST(FormatTimeInMillisAsSecondsTest, FormatsNegativeNumber) { - EXPECT_STREQ("-0.003", FormatTimeInMillisAsSeconds(-3)); - EXPECT_STREQ("-0.01", FormatTimeInMillisAsSeconds(-10)); - EXPECT_STREQ("-0.2", FormatTimeInMillisAsSeconds(-200)); - EXPECT_STREQ("-1.2", FormatTimeInMillisAsSeconds(-1200)); - EXPECT_STREQ("-3", FormatTimeInMillisAsSeconds(-3000)); + EXPECT_EQ("-0.003", FormatTimeInMillisAsSeconds(-3)); + EXPECT_EQ("-0.01", FormatTimeInMillisAsSeconds(-10)); + EXPECT_EQ("-0.2", FormatTimeInMillisAsSeconds(-200)); + EXPECT_EQ("-1.2", FormatTimeInMillisAsSeconds(-1200)); + EXPECT_EQ("-3", FormatTimeInMillisAsSeconds(-3000)); } -#if !GTEST_OS_SYMBIAN -// NULL testing does not work with Symbian compilers. +// Tests FormatEpochTimeInMillisAsIso8601(). The correctness of conversion +// for particular dates below was verified in Python using +// datetime.datetime.fromutctimestamp(/1000). -#ifdef __BORLANDC__ -// Silences warnings: "Condition is always true", "Unreachable code" -#pragma option push -w-ccc -w-rch +// FormatEpochTimeInMillisAsIso8601 depends on the current timezone, so we +// have to set up a particular timezone to obtain predictable results. +class FormatEpochTimeInMillisAsIso8601Test : public Test { + public: + // On Cygwin, GCC doesn't allow unqualified integer literals to exceed + // 32 bits, even when 64-bit integer types are available. We have to + // force the constants to have a 64-bit type here. + static const TimeInMillis kMillisPerSec = 1000; + + private: + virtual void SetUp() { + saved_tz_ = NULL; +#if _MSC_VER +# pragma warning(push) // Saves the current warning state. +# pragma warning(disable:4996) // Temporarily disables warning 4996 + // (function or variable may be unsafe + // for getenv, function is deprecated for + // strdup). + if (getenv("TZ")) + saved_tz_ = strdup(getenv("TZ")); +# pragma warning(pop) // Restores the warning state again. +#else + if (getenv("TZ")) + saved_tz_ = strdup(getenv("TZ")); #endif + // Set up the time zone for FormatEpochTimeInMillisAsIso8601 to use. We + // cannot use the local time zone because the function's output depends + // on the time zone. + SetTimeZone("UTC+00"); + } + + virtual void TearDown() { + SetTimeZone(saved_tz_); + free(const_cast(saved_tz_)); + saved_tz_ = NULL; + } + + static void SetTimeZone(const char* time_zone) { + // tzset() distinguishes between the TZ variable being present and empty + // and not being present, so we have to consider the case of time_zone + // being NULL. +#if _MSC_VER + // ...Unless it's MSVC, whose standard library's _putenv doesn't + // distinguish between an empty and a missing variable. + const std::string env_var = + std::string("TZ=") + (time_zone ? time_zone : ""); + _putenv(env_var.c_str()); +# pragma warning(push) // Saves the current warning state. +# pragma warning(disable:4996) // Temporarily disables warning 4996 + // (function is deprecated). + tzset(); +# pragma warning(pop) // Restores the warning state again. +#else + if (time_zone) { + setenv(("TZ"), time_zone, 1); + } else { + unsetenv("TZ"); + } + tzset(); +#endif + } + + const char* saved_tz_; +}; + +const TimeInMillis FormatEpochTimeInMillisAsIso8601Test::kMillisPerSec; + +TEST_F(FormatEpochTimeInMillisAsIso8601Test, PrintsTwoDigitSegments) { + EXPECT_EQ("2011-10-31T18:52:42", + FormatEpochTimeInMillisAsIso8601(1320087162 * kMillisPerSec)); +} + +TEST_F(FormatEpochTimeInMillisAsIso8601Test, MillisecondsDoNotAffectResult) { + EXPECT_EQ( + "2011-10-31T18:52:42", + FormatEpochTimeInMillisAsIso8601(1320087162 * kMillisPerSec + 234)); +} + +TEST_F(FormatEpochTimeInMillisAsIso8601Test, PrintsLeadingZeroes) { + EXPECT_EQ("2011-09-03T05:07:02", + FormatEpochTimeInMillisAsIso8601(1315026422 * kMillisPerSec)); +} + +TEST_F(FormatEpochTimeInMillisAsIso8601Test, Prints24HourTime) { + EXPECT_EQ("2011-09-28T17:08:22", + FormatEpochTimeInMillisAsIso8601(1317229702 * kMillisPerSec)); +} + +TEST_F(FormatEpochTimeInMillisAsIso8601Test, PrintsEpochStart) { + EXPECT_EQ("1970-01-01T00:00:00", FormatEpochTimeInMillisAsIso8601(0)); +} + +#if GTEST_CAN_COMPARE_NULL + +# ifdef __BORLANDC__ +// Silences warnings: "Condition is always true", "Unreachable code" +# pragma option push -w-ccc -w-rch +# endif + // Tests that GTEST_IS_NULL_LITERAL_(x) is true when x is a null // pointer literal. TEST(NullLiteralTest, IsTrueForNullLiterals) { @@ -300,14 +423,15 @@ TEST(NullLiteralTest, IsTrueForNullLiterals) { EXPECT_TRUE(GTEST_IS_NULL_LITERAL_(0)); EXPECT_TRUE(GTEST_IS_NULL_LITERAL_(0U)); EXPECT_TRUE(GTEST_IS_NULL_LITERAL_(0L)); - EXPECT_TRUE(GTEST_IS_NULL_LITERAL_(false)); -#ifndef __BORLANDC__ + +# ifndef __BORLANDC__ + // Some compilers may fail to detect some null pointer literals; // as long as users of the framework don't use such literals, this // is harmless. EXPECT_TRUE(GTEST_IS_NULL_LITERAL_(1 - 1)); - EXPECT_TRUE(GTEST_IS_NULL_LITERAL_(true && false)); -#endif + +# endif } // Tests that GTEST_IS_NULL_LITERAL_(x) is false when x is not a null @@ -319,12 +443,12 @@ TEST(NullLiteralTest, IsFalseForNonNullLiterals) { EXPECT_FALSE(GTEST_IS_NULL_LITERAL_(static_cast(NULL))); } -#ifdef __BORLANDC__ -// Restores warnings after previous "#pragma option push" supressed them -#pragma option pop -#endif +# ifdef __BORLANDC__ +// Restores warnings after previous "#pragma option push" suppressed them. +# pragma option pop +# endif -#endif // !GTEST_OS_SYMBIAN +#endif // GTEST_CAN_COMPARE_NULL // // Tests CodePointToUtf8(). @@ -351,7 +475,11 @@ TEST(CodePointToUtf8Test, CanEncode8To11Bits) { EXPECT_STREQ("\xC3\x93", CodePointToUtf8(L'\xD3', buffer)); // 101 0111 0110 => 110-10101 10-110110 - EXPECT_STREQ("\xD5\xB6", CodePointToUtf8(L'\x576', buffer)); + // Some compilers (e.g., GCC on MinGW) cannot handle non-ASCII codepoints + // in wide strings and wide chars. In order to accomodate them, we have to + // introduce such character constants as integers. + EXPECT_STREQ("\xD5\xB6", + CodePointToUtf8(static_cast(0x576), buffer)); } // Tests that Unicode code-points that have 12 to 16 bits are encoded @@ -359,10 +487,12 @@ TEST(CodePointToUtf8Test, CanEncode8To11Bits) { TEST(CodePointToUtf8Test, CanEncode12To16Bits) { char buffer[32]; // 0000 1000 1101 0011 => 1110-0000 10-100011 10-010011 - EXPECT_STREQ("\xE0\xA3\x93", CodePointToUtf8(L'\x8D3', buffer)); + EXPECT_STREQ("\xE0\xA3\x93", + CodePointToUtf8(static_cast(0x8D3), buffer)); // 1100 0111 0100 1101 => 1110-1100 10-011101 10-001101 - EXPECT_STREQ("\xEC\x9D\x8D", CodePointToUtf8(L'\xC74D', buffer)); + EXPECT_STREQ("\xEC\x9D\x8D", + CodePointToUtf8(static_cast(0xC74D), buffer)); } #if !GTEST_WIDE_STRING_USES_UTF16_ @@ -417,20 +547,23 @@ TEST(WideStringToUtf8Test, CanEncode8To11Bits) { EXPECT_STREQ("\xC3\x93", WideStringToUtf8(L"\xD3", -1).c_str()); // 101 0111 0110 => 110-10101 10-110110 - EXPECT_STREQ("\xD5\xB6", WideStringToUtf8(L"\x576", 1).c_str()); - EXPECT_STREQ("\xD5\xB6", WideStringToUtf8(L"\x576", -1).c_str()); + const wchar_t s[] = { 0x576, '\0' }; + EXPECT_STREQ("\xD5\xB6", WideStringToUtf8(s, 1).c_str()); + EXPECT_STREQ("\xD5\xB6", WideStringToUtf8(s, -1).c_str()); } // Tests that Unicode code-points that have 12 to 16 bits are encoded // as 1110xxxx 10xxxxxx 10xxxxxx. TEST(WideStringToUtf8Test, CanEncode12To16Bits) { // 0000 1000 1101 0011 => 1110-0000 10-100011 10-010011 - EXPECT_STREQ("\xE0\xA3\x93", WideStringToUtf8(L"\x8D3", 1).c_str()); - EXPECT_STREQ("\xE0\xA3\x93", WideStringToUtf8(L"\x8D3", -1).c_str()); + const wchar_t s1[] = { 0x8D3, '\0' }; + EXPECT_STREQ("\xE0\xA3\x93", WideStringToUtf8(s1, 1).c_str()); + EXPECT_STREQ("\xE0\xA3\x93", WideStringToUtf8(s1, -1).c_str()); // 1100 0111 0100 1101 => 1110-1100 10-011101 10-001101 - EXPECT_STREQ("\xEC\x9D\x8D", WideStringToUtf8(L"\xC74D", 1).c_str()); - EXPECT_STREQ("\xEC\x9D\x8D", WideStringToUtf8(L"\xC74D", -1).c_str()); + const wchar_t s2[] = { 0xC74D, '\0' }; + EXPECT_STREQ("\xEC\x9D\x8D", WideStringToUtf8(s2, 1).c_str()); + EXPECT_STREQ("\xEC\x9D\x8D", WideStringToUtf8(s2, -1).c_str()); } // Tests that the conversion stops when the function encounters \0 character. @@ -444,7 +577,6 @@ TEST(WideStringToUtf8Test, StopsWhenLengthLimitReached) { EXPECT_STREQ("ABC", WideStringToUtf8(L"ABCDEF", 3).c_str()); } - #if !GTEST_WIDE_STRING_USES_UTF16_ // Tests that Unicode code-points that have 17 to 21 bits are encoded // as 11110xxx 10xxxxxx 10xxxxxx 10xxxxxx. This code may not compile @@ -468,25 +600,29 @@ TEST(WideStringToUtf8Test, CanEncodeInvalidCodePoint) { // Tests that surrogate pairs are encoded correctly on the systems using // UTF-16 encoding in the wide strings. TEST(WideStringToUtf8Test, CanEncodeValidUtf16SUrrogatePairs) { - EXPECT_STREQ("\xF0\x90\x90\x80", - WideStringToUtf8(L"\xD801\xDC00", -1).c_str()); + const wchar_t s[] = { 0xD801, 0xDC00, '\0' }; + EXPECT_STREQ("\xF0\x90\x90\x80", WideStringToUtf8(s, -1).c_str()); } // Tests that encoding an invalid UTF-16 surrogate pair // generates the expected result. TEST(WideStringToUtf8Test, CanEncodeInvalidUtf16SurrogatePair) { // Leading surrogate is at the end of the string. - EXPECT_STREQ("\xED\xA0\x80", WideStringToUtf8(L"\xD800", -1).c_str()); + const wchar_t s1[] = { 0xD800, '\0' }; + EXPECT_STREQ("\xED\xA0\x80", WideStringToUtf8(s1, -1).c_str()); // Leading surrogate is not followed by the trailing surrogate. - EXPECT_STREQ("\xED\xA0\x80$", WideStringToUtf8(L"\xD800$", -1).c_str()); + const wchar_t s2[] = { 0xD800, 'M', '\0' }; + EXPECT_STREQ("\xED\xA0\x80M", WideStringToUtf8(s2, -1).c_str()); // Trailing surrogate appearas without a leading surrogate. - EXPECT_STREQ("\xED\xB0\x80PQR", WideStringToUtf8(L"\xDC00PQR", -1).c_str()); + const wchar_t s3[] = { 0xDC00, 'P', 'Q', 'R', '\0' }; + EXPECT_STREQ("\xED\xB0\x80PQR", WideStringToUtf8(s3, -1).c_str()); } #endif // !GTEST_WIDE_STRING_USES_UTF16_ // Tests that codepoint concatenation works correctly. #if !GTEST_WIDE_STRING_USES_UTF16_ TEST(WideStringToUtf8Test, ConcatenatesCodepointsCorrectly) { + const wchar_t s[] = { 0x108634, 0xC74D, '\n', 0x576, 0x8D3, 0x108634, '\0'}; EXPECT_STREQ( "\xF4\x88\x98\xB4" "\xEC\x9D\x8D" @@ -494,13 +630,14 @@ TEST(WideStringToUtf8Test, ConcatenatesCodepointsCorrectly) { "\xD5\xB6" "\xE0\xA3\x93" "\xF4\x88\x98\xB4", - WideStringToUtf8(L"\x108634\xC74D\n\x576\x8D3\x108634", -1).c_str()); + WideStringToUtf8(s, -1).c_str()); } #else TEST(WideStringToUtf8Test, ConcatenatesCodepointsCorrectly) { + const wchar_t s[] = { 0xC74D, '\n', 0x576, 0x8D3, '\0'}; EXPECT_STREQ( "\xEC\x9D\x8D" "\n" "\xD5\xB6" "\xE0\xA3\x93", - WideStringToUtf8(L"\xC74D\n\x576\x8D3", -1).c_str()); + WideStringToUtf8(s, -1).c_str()); } #endif // !GTEST_WIDE_STRING_USES_UTF16_ @@ -547,339 +684,80 @@ TEST(RandomTest, RepeatsWhenReseeded) { } } -// Tests the Vector class template. +// Tests STL container utilities. -// Tests Vector::Clear(). -TEST(VectorTest, Clear) { - Vector a; - a.PushBack(1); - a.Clear(); - EXPECT_EQ(0, a.size()); +// Tests CountIf(). - a.PushBack(2); - a.PushBack(3); - a.Clear(); - EXPECT_EQ(0, a.size()); -} - -// Tests Vector::PushBack(). -TEST(VectorTest, PushBack) { - Vector a; - a.PushBack('a'); - ASSERT_EQ(1, a.size()); - EXPECT_EQ('a', a.GetElement(0)); - - a.PushBack('b'); - ASSERT_EQ(2, a.size()); - EXPECT_EQ('a', a.GetElement(0)); - EXPECT_EQ('b', a.GetElement(1)); -} - -// Tests Vector::PushFront(). -TEST(VectorTest, PushFront) { - Vector a; - ASSERT_EQ(0, a.size()); - - // Calls PushFront() on an empty Vector. - a.PushFront(1); - ASSERT_EQ(1, a.size()); - EXPECT_EQ(1, a.GetElement(0)); - - // Calls PushFront() on a singleton Vector. - a.PushFront(2); - ASSERT_EQ(2, a.size()); - EXPECT_EQ(2, a.GetElement(0)); - EXPECT_EQ(1, a.GetElement(1)); - - // Calls PushFront() on a Vector with more than one elements. - a.PushFront(3); - ASSERT_EQ(3, a.size()); - EXPECT_EQ(3, a.GetElement(0)); - EXPECT_EQ(2, a.GetElement(1)); - EXPECT_EQ(1, a.GetElement(2)); -} - -// Tests Vector::PopFront(). -TEST(VectorTest, PopFront) { - Vector a; - - // Popping on an empty Vector should fail. - EXPECT_FALSE(a.PopFront(NULL)); - - // Popping again on an empty Vector should fail, and the result element - // shouldn't be overwritten. - int element = 1; - EXPECT_FALSE(a.PopFront(&element)); - EXPECT_EQ(1, element); - - a.PushFront(2); - a.PushFront(3); - - // PopFront() should pop the element in the front of the Vector. - EXPECT_TRUE(a.PopFront(&element)); - EXPECT_EQ(3, element); - - // After popping the last element, the Vector should be empty. - EXPECT_TRUE(a.PopFront(NULL)); - EXPECT_EQ(0, a.size()); -} - -// Tests inserting at the beginning using Vector::Insert(). -TEST(VectorTest, InsertAtBeginning) { - Vector a; - ASSERT_EQ(0, a.size()); - - // Inserts into an empty Vector. - a.Insert(1, 0); - ASSERT_EQ(1, a.size()); - EXPECT_EQ(1, a.GetElement(0)); - - // Inserts at the beginning of a singleton Vector. - a.Insert(2, 0); - ASSERT_EQ(2, a.size()); - EXPECT_EQ(2, a.GetElement(0)); - EXPECT_EQ(1, a.GetElement(1)); - - // Inserts at the beginning of a Vector with more than one elements. - a.Insert(3, 0); - ASSERT_EQ(3, a.size()); - EXPECT_EQ(3, a.GetElement(0)); - EXPECT_EQ(2, a.GetElement(1)); - EXPECT_EQ(1, a.GetElement(2)); -} - -// Tests inserting at a location other than the beginning using -// Vector::Insert(). -TEST(VectorTest, InsertNotAtBeginning) { - // Prepares a singleton Vector. - Vector a; - a.PushBack(1); - - // Inserts at the end of a singleton Vector. - a.Insert(2, a.size()); - ASSERT_EQ(2, a.size()); - EXPECT_EQ(1, a.GetElement(0)); - EXPECT_EQ(2, a.GetElement(1)); - - // Inserts at the end of a Vector with more than one elements. - a.Insert(3, a.size()); - ASSERT_EQ(3, a.size()); - EXPECT_EQ(1, a.GetElement(0)); - EXPECT_EQ(2, a.GetElement(1)); - EXPECT_EQ(3, a.GetElement(2)); - - // Inserts in the middle of a Vector. - a.Insert(4, 1); - ASSERT_EQ(4, a.size()); - EXPECT_EQ(1, a.GetElement(0)); - EXPECT_EQ(4, a.GetElement(1)); - EXPECT_EQ(2, a.GetElement(2)); - EXPECT_EQ(3, a.GetElement(3)); -} - -// Tests Vector::GetElementOr(). -TEST(VectorTest, GetElementOr) { - Vector a; - EXPECT_EQ('x', a.GetElementOr(0, 'x')); - - a.PushBack('a'); - a.PushBack('b'); - EXPECT_EQ('a', a.GetElementOr(0, 'x')); - EXPECT_EQ('b', a.GetElementOr(1, 'x')); - EXPECT_EQ('x', a.GetElementOr(-2, 'x')); - EXPECT_EQ('x', a.GetElementOr(2, 'x')); -} - -TEST(VectorTest, Swap) { - Vector a; - a.PushBack(0); - a.PushBack(1); - a.PushBack(2); - - // Swaps an element with itself. - a.Swap(0, 0); - ASSERT_EQ(0, a.GetElement(0)); - ASSERT_EQ(1, a.GetElement(1)); - ASSERT_EQ(2, a.GetElement(2)); - - // Swaps two different elements where the indices go up. - a.Swap(0, 1); - ASSERT_EQ(1, a.GetElement(0)); - ASSERT_EQ(0, a.GetElement(1)); - ASSERT_EQ(2, a.GetElement(2)); - - // Swaps two different elements where the indices go down. - a.Swap(2, 0); - ASSERT_EQ(2, a.GetElement(0)); - ASSERT_EQ(0, a.GetElement(1)); - ASSERT_EQ(1, a.GetElement(2)); -} - -TEST(VectorTest, Clone) { - // Clones an empty Vector. - Vector a; - scoped_ptr > empty(a.Clone()); - EXPECT_EQ(0, empty->size()); - - // Clones a singleton. - a.PushBack(42); - scoped_ptr > singleton(a.Clone()); - ASSERT_EQ(1, singleton->size()); - EXPECT_EQ(42, singleton->GetElement(0)); - - // Clones a Vector with more elements. - a.PushBack(43); - a.PushBack(44); - scoped_ptr > big(a.Clone()); - ASSERT_EQ(3, big->size()); - EXPECT_EQ(42, big->GetElement(0)); - EXPECT_EQ(43, big->GetElement(1)); - EXPECT_EQ(44, big->GetElement(2)); -} - -// Tests Vector::Erase(). -TEST(VectorDeathTest, Erase) { - Vector a; - - // Tests erasing from an empty vector. - EXPECT_DEATH_IF_SUPPORTED( - a.Erase(0), - "Invalid Vector index 0: must be in range \\[0, -1\\]\\."); - - // Tests erasing from a singleton vector. - a.PushBack(0); +static bool IsPositive(int n) { return n > 0; } - a.Erase(0); - EXPECT_EQ(0, a.size()); +TEST(ContainerUtilityTest, CountIf) { + std::vector v; + EXPECT_EQ(0, CountIf(v, IsPositive)); // Works for an empty container. - // Tests Erase parameters beyond the bounds of the vector. - Vector a1; - a1.PushBack(0); - a1.PushBack(1); - a1.PushBack(2); + v.push_back(-1); + v.push_back(0); + EXPECT_EQ(0, CountIf(v, IsPositive)); // Works when no value satisfies. - EXPECT_DEATH_IF_SUPPORTED( - a1.Erase(3), - "Invalid Vector index 3: must be in range \\[0, 2\\]\\."); - EXPECT_DEATH_IF_SUPPORTED( - a1.Erase(-1), - "Invalid Vector index -1: must be in range \\[0, 2\\]\\."); - - // Tests erasing at the end of the vector. - Vector a2; - a2.PushBack(0); - a2.PushBack(1); - a2.PushBack(2); - - a2.Erase(2); - ASSERT_EQ(2, a2.size()); - EXPECT_EQ(0, a2.GetElement(0)); - EXPECT_EQ(1, a2.GetElement(1)); - - // Tests erasing in the middle of the vector. - Vector a3; - a3.PushBack(0); - a3.PushBack(1); - a3.PushBack(2); - - a3.Erase(1); - ASSERT_EQ(2, a3.size()); - EXPECT_EQ(0, a3.GetElement(0)); - EXPECT_EQ(2, a3.GetElement(1)); - - // Tests erasing at the beginning of the vector. - Vector a4; - a4.PushBack(0); - a4.PushBack(1); - a4.PushBack(2); - - a4.Erase(0); - ASSERT_EQ(2, a4.size()); - EXPECT_EQ(1, a4.GetElement(0)); - EXPECT_EQ(2, a4.GetElement(1)); -} - -// Tests the GetElement accessor. -TEST(VectorDeathTest, GetElement) { - Vector a; - a.PushBack(0); - a.PushBack(1); - a.PushBack(2); - const Vector& b = a; - - EXPECT_EQ(0, b.GetElement(0)); - EXPECT_EQ(1, b.GetElement(1)); - EXPECT_EQ(2, b.GetElement(2)); - EXPECT_DEATH_IF_SUPPORTED( - b.GetElement(3), - "Invalid Vector index 3: must be in range \\[0, 2\\]\\."); - EXPECT_DEATH_IF_SUPPORTED( - b.GetElement(-1), - "Invalid Vector index -1: must be in range \\[0, 2\\]\\."); + v.push_back(2); + v.push_back(-10); + v.push_back(10); + EXPECT_EQ(2, CountIf(v, IsPositive)); } -// Tests the GetMutableElement accessor. -TEST(VectorDeathTest, GetMutableElement) { - Vector a; - a.PushBack(0); - a.PushBack(1); - a.PushBack(2); +// Tests ForEach(). - EXPECT_EQ(0, a.GetMutableElement(0)); - EXPECT_EQ(1, a.GetMutableElement(1)); - EXPECT_EQ(2, a.GetMutableElement(2)); +static int g_sum = 0; +static void Accumulate(int n) { g_sum += n; } - a.GetMutableElement(0) = 42; - EXPECT_EQ(42, a.GetMutableElement(0)); - EXPECT_EQ(1, a.GetMutableElement(1)); - EXPECT_EQ(2, a.GetMutableElement(2)); +TEST(ContainerUtilityTest, ForEach) { + std::vector v; + g_sum = 0; + ForEach(v, Accumulate); + EXPECT_EQ(0, g_sum); // Works for an empty container; - EXPECT_DEATH_IF_SUPPORTED( - a.GetMutableElement(3), - "Invalid Vector index 3: must be in range \\[0, 2\\]\\."); - EXPECT_DEATH_IF_SUPPORTED( - a.GetMutableElement(-1), - "Invalid Vector index -1: must be in range \\[0, 2\\]\\."); + g_sum = 0; + v.push_back(1); + ForEach(v, Accumulate); + EXPECT_EQ(1, g_sum); // Works for a container with one element. + + g_sum = 0; + v.push_back(20); + v.push_back(300); + ForEach(v, Accumulate); + EXPECT_EQ(321, g_sum); } -TEST(VectorDeathTest, Swap) { - Vector a; - a.PushBack(0); - a.PushBack(1); - a.PushBack(2); +// Tests GetElementOr(). +TEST(ContainerUtilityTest, GetElementOr) { + std::vector a; + EXPECT_EQ('x', GetElementOr(a, 0, 'x')); - EXPECT_DEATH_IF_SUPPORTED( - a.Swap(-1, 1), - "Invalid first swap element -1: must be in range \\[0, 2\\]"); - EXPECT_DEATH_IF_SUPPORTED( - a.Swap(3, 1), - "Invalid first swap element 3: must be in range \\[0, 2\\]"); - EXPECT_DEATH_IF_SUPPORTED( - a.Swap(1, -1), - "Invalid second swap element -1: must be in range \\[0, 2\\]"); - EXPECT_DEATH_IF_SUPPORTED( - a.Swap(1, 3), - "Invalid second swap element 3: must be in range \\[0, 2\\]"); + a.push_back('a'); + a.push_back('b'); + EXPECT_EQ('a', GetElementOr(a, 0, 'x')); + EXPECT_EQ('b', GetElementOr(a, 1, 'x')); + EXPECT_EQ('x', GetElementOr(a, -2, 'x')); + EXPECT_EQ('x', GetElementOr(a, 2, 'x')); } -TEST(VectorDeathTest, ShuffleRange) { - Vector a; - a.PushBack(0); - a.PushBack(1); - a.PushBack(2); +TEST(ContainerUtilityDeathTest, ShuffleRange) { + std::vector a; + a.push_back(0); + a.push_back(1); + a.push_back(2); testing::internal::Random random(1); EXPECT_DEATH_IF_SUPPORTED( - a.ShuffleRange(&random, -1, 1), + ShuffleRange(&random, -1, 1, &a), "Invalid shuffle range start -1: must be in range \\[0, 3\\]"); EXPECT_DEATH_IF_SUPPORTED( - a.ShuffleRange(&random, 4, 4), + ShuffleRange(&random, 4, 4, &a), "Invalid shuffle range start 4: must be in range \\[0, 3\\]"); EXPECT_DEATH_IF_SUPPORTED( - a.ShuffleRange(&random, 3, 2), + ShuffleRange(&random, 3, 2, &a), "Invalid shuffle range finish 2: must be in range \\[3, 3\\]"); EXPECT_DEATH_IF_SUPPORTED( - a.ShuffleRange(&random, 3, 4), + ShuffleRange(&random, 3, 4, &a), "Invalid shuffle range finish 4: must be in range \\[3, 3\\]"); } @@ -889,18 +767,18 @@ class VectorShuffleTest : public Test { VectorShuffleTest() : random_(1) { for (int i = 0; i < kVectorSize; i++) { - vector_.PushBack(i); + vector_.push_back(i); } } static bool VectorIsCorrupt(const TestingVector& vector) { - if (kVectorSize != vector.size()) { + if (kVectorSize != static_cast(vector.size())) { return true; } bool found_in_vector[kVectorSize] = { false }; - for (int i = 0; i < vector.size(); i++) { - const int e = vector.GetElement(i); + for (size_t i = 0; i < vector.size(); i++) { + const int e = vector[i]; if (e < 0 || e >= kVectorSize || found_in_vector[e]) { return true; } @@ -918,7 +796,7 @@ class VectorShuffleTest : public Test { static bool RangeIsShuffled(const TestingVector& vector, int begin, int end) { for (int i = begin; i < end; i++) { - if (i != vector.GetElement(i)) { + if (i != vector[i]) { return true; } } @@ -931,7 +809,7 @@ class VectorShuffleTest : public Test { } static bool VectorIsShuffled(const TestingVector& vector) { - return RangeIsShuffled(vector, 0, vector.size()); + return RangeIsShuffled(vector, 0, static_cast(vector.size())); } static bool VectorIsUnshuffled(const TestingVector& vector) { @@ -946,39 +824,39 @@ const int VectorShuffleTest::kVectorSize; TEST_F(VectorShuffleTest, HandlesEmptyRange) { // Tests an empty range at the beginning... - vector_.ShuffleRange(&random_, 0, 0); + ShuffleRange(&random_, 0, 0, &vector_); ASSERT_PRED1(VectorIsNotCorrupt, vector_); ASSERT_PRED1(VectorIsUnshuffled, vector_); // ...in the middle... - vector_.ShuffleRange(&random_, kVectorSize/2, kVectorSize/2); + ShuffleRange(&random_, kVectorSize/2, kVectorSize/2, &vector_); ASSERT_PRED1(VectorIsNotCorrupt, vector_); ASSERT_PRED1(VectorIsUnshuffled, vector_); // ...at the end... - vector_.ShuffleRange(&random_, kVectorSize - 1, kVectorSize - 1); + ShuffleRange(&random_, kVectorSize - 1, kVectorSize - 1, &vector_); ASSERT_PRED1(VectorIsNotCorrupt, vector_); ASSERT_PRED1(VectorIsUnshuffled, vector_); // ...and past the end. - vector_.ShuffleRange(&random_, kVectorSize, kVectorSize); + ShuffleRange(&random_, kVectorSize, kVectorSize, &vector_); ASSERT_PRED1(VectorIsNotCorrupt, vector_); ASSERT_PRED1(VectorIsUnshuffled, vector_); } TEST_F(VectorShuffleTest, HandlesRangeOfSizeOne) { // Tests a size one range at the beginning... - vector_.ShuffleRange(&random_, 0, 1); + ShuffleRange(&random_, 0, 1, &vector_); ASSERT_PRED1(VectorIsNotCorrupt, vector_); ASSERT_PRED1(VectorIsUnshuffled, vector_); // ...in the middle... - vector_.ShuffleRange(&random_, kVectorSize/2, kVectorSize/2 + 1); + ShuffleRange(&random_, kVectorSize/2, kVectorSize/2 + 1, &vector_); ASSERT_PRED1(VectorIsNotCorrupt, vector_); ASSERT_PRED1(VectorIsUnshuffled, vector_); // ...and at the end. - vector_.ShuffleRange(&random_, kVectorSize - 1, kVectorSize); + ShuffleRange(&random_, kVectorSize - 1, kVectorSize, &vector_); ASSERT_PRED1(VectorIsNotCorrupt, vector_); ASSERT_PRED1(VectorIsUnshuffled, vector_); } @@ -987,20 +865,20 @@ TEST_F(VectorShuffleTest, HandlesRangeOfSizeOne) { // we can guarantee that the following "random" tests will succeed. TEST_F(VectorShuffleTest, ShufflesEntireVector) { - vector_.Shuffle(&random_); + Shuffle(&random_, &vector_); ASSERT_PRED1(VectorIsNotCorrupt, vector_); EXPECT_FALSE(VectorIsUnshuffled(vector_)) << vector_; // Tests the first and last elements in particular to ensure that // there are no off-by-one problems in our shuffle algorithm. - EXPECT_NE(0, vector_.GetElement(0)); - EXPECT_NE(kVectorSize - 1, vector_.GetElement(kVectorSize - 1)); + EXPECT_NE(0, vector_[0]); + EXPECT_NE(kVectorSize - 1, vector_[kVectorSize - 1]); } TEST_F(VectorShuffleTest, ShufflesStartOfVector) { const int kRangeSize = kVectorSize/2; - vector_.ShuffleRange(&random_, 0, kRangeSize); + ShuffleRange(&random_, 0, kRangeSize, &vector_); ASSERT_PRED1(VectorIsNotCorrupt, vector_); EXPECT_PRED3(RangeIsShuffled, vector_, 0, kRangeSize); @@ -1009,7 +887,7 @@ TEST_F(VectorShuffleTest, ShufflesStartOfVector) { TEST_F(VectorShuffleTest, ShufflesEndOfVector) { const int kRangeSize = kVectorSize / 2; - vector_.ShuffleRange(&random_, kRangeSize, kVectorSize); + ShuffleRange(&random_, kRangeSize, kVectorSize, &vector_); ASSERT_PRED1(VectorIsNotCorrupt, vector_); EXPECT_PRED3(RangeIsUnshuffled, vector_, 0, kRangeSize); @@ -1018,7 +896,7 @@ TEST_F(VectorShuffleTest, ShufflesEndOfVector) { TEST_F(VectorShuffleTest, ShufflesMiddleOfVector) { int kRangeSize = kVectorSize/3; - vector_.ShuffleRange(&random_, kRangeSize, 2*kRangeSize); + ShuffleRange(&random_, kRangeSize, 2*kRangeSize, &vector_); ASSERT_PRED1(VectorIsNotCorrupt, vector_); EXPECT_PRED3(RangeIsUnshuffled, vector_, 0, kRangeSize); @@ -1029,20 +907,19 @@ TEST_F(VectorShuffleTest, ShufflesMiddleOfVector) { TEST_F(VectorShuffleTest, ShufflesRepeatably) { TestingVector vector2; for (int i = 0; i < kVectorSize; i++) { - vector2.PushBack(i); + vector2.push_back(i); } random_.Reseed(1234); - vector_.Shuffle(&random_); + Shuffle(&random_, &vector_); random_.Reseed(1234); - vector2.Shuffle(&random_); + Shuffle(&random_, &vector2); ASSERT_PRED1(VectorIsNotCorrupt, vector_); ASSERT_PRED1(VectorIsNotCorrupt, vector2); for (int i = 0; i < kVectorSize; i++) { - EXPECT_EQ(vector_.GetElement(i), vector2.GetElement(i)) - << " where i is " << i; + EXPECT_EQ(vector_[i], vector2[i]) << " where i is " << i; } } @@ -1054,273 +931,16 @@ TEST(AssertHelperTest, AssertHelperIsSmall) { EXPECT_LE(sizeof(testing::internal::AssertHelper), sizeof(void*)); } -// Tests the String class. - -// Tests String's constructors. -TEST(StringTest, Constructors) { - // Default ctor. - String s1; - // We aren't using EXPECT_EQ(NULL, s1.c_str()) because comparing - // pointers with NULL isn't supported on all platforms. - EXPECT_EQ(0U, s1.length()); - EXPECT_TRUE(NULL == s1.c_str()); - - // Implicitly constructs from a C-string. - String s2 = "Hi"; - EXPECT_EQ(2U, s2.length()); - EXPECT_STREQ("Hi", s2.c_str()); - - // Constructs from a C-string and a length. - String s3("hello", 3); - EXPECT_EQ(3U, s3.length()); - EXPECT_STREQ("hel", s3.c_str()); - - // The empty String should be created when String is constructed with - // a NULL pointer and length 0. - EXPECT_EQ(0U, String(NULL, 0).length()); - EXPECT_FALSE(String(NULL, 0).c_str() == NULL); - - // Constructs a String that contains '\0'. - String s4("a\0bcd", 4); - EXPECT_EQ(4U, s4.length()); - EXPECT_EQ('a', s4.c_str()[0]); - EXPECT_EQ('\0', s4.c_str()[1]); - EXPECT_EQ('b', s4.c_str()[2]); - EXPECT_EQ('c', s4.c_str()[3]); - - // Copy ctor where the source is NULL. - const String null_str; - String s5 = null_str; - EXPECT_TRUE(s5.c_str() == NULL); - - // Copy ctor where the source isn't NULL. - String s6 = s3; - EXPECT_EQ(3U, s6.length()); - EXPECT_STREQ("hel", s6.c_str()); - - // Copy ctor where the source contains '\0'. - String s7 = s4; - EXPECT_EQ(4U, s7.length()); - EXPECT_EQ('a', s7.c_str()[0]); - EXPECT_EQ('\0', s7.c_str()[1]); - EXPECT_EQ('b', s7.c_str()[2]); - EXPECT_EQ('c', s7.c_str()[3]); -} - -#if GTEST_HAS_STD_STRING - -TEST(StringTest, ConvertsFromStdString) { - // An empty std::string. - const std::string src1(""); - const String dest1 = src1; - EXPECT_EQ(0U, dest1.length()); - EXPECT_STREQ("", dest1.c_str()); - - // A normal std::string. - const std::string src2("Hi"); - const String dest2 = src2; - EXPECT_EQ(2U, dest2.length()); - EXPECT_STREQ("Hi", dest2.c_str()); - - // An std::string with an embedded NUL character. - const char src3[] = "a\0b"; - const String dest3 = std::string(src3, sizeof(src3)); - EXPECT_EQ(sizeof(src3), dest3.length()); - EXPECT_EQ('a', dest3.c_str()[0]); - EXPECT_EQ('\0', dest3.c_str()[1]); - EXPECT_EQ('b', dest3.c_str()[2]); -} - -TEST(StringTest, ConvertsToStdString) { - // An empty String. - const String src1(""); - const std::string dest1 = src1; - EXPECT_EQ("", dest1); - - // A normal String. - const String src2("Hi"); - const std::string dest2 = src2; - EXPECT_EQ("Hi", dest2); - - // A String containing a '\0'. - const String src3("x\0y", 3); - const std::string dest3 = src3; - EXPECT_EQ(std::string("x\0y", 3), dest3); -} - -#endif // GTEST_HAS_STD_STRING - -#if GTEST_HAS_GLOBAL_STRING - -TEST(StringTest, ConvertsFromGlobalString) { - // An empty ::string. - const ::string src1(""); - const String dest1 = src1; - EXPECT_EQ(0U, dest1.length()); - EXPECT_STREQ("", dest1.c_str()); - - // A normal ::string. - const ::string src2("Hi"); - const String dest2 = src2; - EXPECT_EQ(2U, dest2.length()); - EXPECT_STREQ("Hi", dest2.c_str()); - - // An ::string with an embedded NUL character. - const char src3[] = "x\0y"; - const String dest3 = ::string(src3, sizeof(src3)); - EXPECT_EQ(sizeof(src3), dest3.length()); - EXPECT_EQ('x', dest3.c_str()[0]); - EXPECT_EQ('\0', dest3.c_str()[1]); - EXPECT_EQ('y', dest3.c_str()[2]); -} - -TEST(StringTest, ConvertsToGlobalString) { - // An empty String. - const String src1(""); - const ::string dest1 = src1; - EXPECT_EQ("", dest1); - - // A normal String. - const String src2("Hi"); - const ::string dest2 = src2; - EXPECT_EQ("Hi", dest2); - - const String src3("x\0y", 3); - const ::string dest3 = src3; - EXPECT_EQ(::string("x\0y", 3), dest3); -} - -#endif // GTEST_HAS_GLOBAL_STRING - -// Tests String::ShowCStringQuoted(). -TEST(StringTest, ShowCStringQuoted) { - EXPECT_STREQ("(null)", - String::ShowCStringQuoted(NULL).c_str()); - EXPECT_STREQ("\"\"", - String::ShowCStringQuoted("").c_str()); - EXPECT_STREQ("\"foo\"", - String::ShowCStringQuoted("foo").c_str()); -} - -// Tests String::empty(). -TEST(StringTest, Empty) { - EXPECT_TRUE(String("").empty()); - EXPECT_FALSE(String().empty()); - EXPECT_FALSE(String(NULL).empty()); - EXPECT_FALSE(String("a").empty()); - EXPECT_FALSE(String("\0", 1).empty()); -} - -// Tests String::Compare(). -TEST(StringTest, Compare) { - // NULL vs NULL. - EXPECT_EQ(0, String().Compare(String())); - - // NULL vs non-NULL. - EXPECT_EQ(-1, String().Compare(String(""))); - - // Non-NULL vs NULL. - EXPECT_EQ(1, String("").Compare(String())); - - // The following covers non-NULL vs non-NULL. - - // "" vs "". - EXPECT_EQ(0, String("").Compare(String(""))); - - // "" vs non-"". - EXPECT_EQ(-1, String("").Compare(String("\0", 1))); - EXPECT_EQ(-1, String("").Compare(" ")); - - // Non-"" vs "". - EXPECT_EQ(1, String("a").Compare(String(""))); - - // The following covers non-"" vs non-"". - - // Same length and equal. - EXPECT_EQ(0, String("a").Compare(String("a"))); - - // Same length and different. - EXPECT_EQ(-1, String("a\0b", 3).Compare(String("a\0c", 3))); - EXPECT_EQ(1, String("b").Compare(String("a"))); - - // Different lengths. - EXPECT_EQ(-1, String("a").Compare(String("ab"))); - EXPECT_EQ(-1, String("a").Compare(String("a\0", 2))); - EXPECT_EQ(1, String("abc").Compare(String("aacd"))); -} - -// Tests String::operator==(). -TEST(StringTest, Equals) { - const String null(NULL); - EXPECT_TRUE(null == NULL); // NOLINT - EXPECT_FALSE(null == ""); // NOLINT - EXPECT_FALSE(null == "bar"); // NOLINT - - const String empty(""); - EXPECT_FALSE(empty == NULL); // NOLINT - EXPECT_TRUE(empty == ""); // NOLINT - EXPECT_FALSE(empty == "bar"); // NOLINT - - const String foo("foo"); - EXPECT_FALSE(foo == NULL); // NOLINT - EXPECT_FALSE(foo == ""); // NOLINT - EXPECT_FALSE(foo == "bar"); // NOLINT - EXPECT_TRUE(foo == "foo"); // NOLINT - - const String bar("x\0y", 3); - EXPECT_FALSE(bar == "x"); -} - -// Tests String::operator!=(). -TEST(StringTest, NotEquals) { - const String null(NULL); - EXPECT_FALSE(null != NULL); // NOLINT - EXPECT_TRUE(null != ""); // NOLINT - EXPECT_TRUE(null != "bar"); // NOLINT - - const String empty(""); - EXPECT_TRUE(empty != NULL); // NOLINT - EXPECT_FALSE(empty != ""); // NOLINT - EXPECT_TRUE(empty != "bar"); // NOLINT - - const String foo("foo"); - EXPECT_TRUE(foo != NULL); // NOLINT - EXPECT_TRUE(foo != ""); // NOLINT - EXPECT_TRUE(foo != "bar"); // NOLINT - EXPECT_FALSE(foo != "foo"); // NOLINT - - const String bar("x\0y", 3); - EXPECT_TRUE(bar != "x"); -} - -// Tests String::length(). -TEST(StringTest, Length) { - EXPECT_EQ(0U, String().length()); - EXPECT_EQ(0U, String("").length()); - EXPECT_EQ(2U, String("ab").length()); - EXPECT_EQ(3U, String("a\0b", 3).length()); -} - -// Tests String::EndsWith(). -TEST(StringTest, EndsWith) { - EXPECT_TRUE(String("foobar").EndsWith("bar")); - EXPECT_TRUE(String("foobar").EndsWith("")); - EXPECT_TRUE(String("").EndsWith("")); - - EXPECT_FALSE(String("foobar").EndsWith("foo")); - EXPECT_FALSE(String("").EndsWith("foo")); -} - // Tests String::EndsWithCaseInsensitive(). TEST(StringTest, EndsWithCaseInsensitive) { - EXPECT_TRUE(String("foobar").EndsWithCaseInsensitive("BAR")); - EXPECT_TRUE(String("foobaR").EndsWithCaseInsensitive("bar")); - EXPECT_TRUE(String("foobar").EndsWithCaseInsensitive("")); - EXPECT_TRUE(String("").EndsWithCaseInsensitive("")); + EXPECT_TRUE(String::EndsWithCaseInsensitive("foobar", "BAR")); + EXPECT_TRUE(String::EndsWithCaseInsensitive("foobaR", "bar")); + EXPECT_TRUE(String::EndsWithCaseInsensitive("foobar", "")); + EXPECT_TRUE(String::EndsWithCaseInsensitive("", "")); - EXPECT_FALSE(String("Foobar").EndsWithCaseInsensitive("foo")); - EXPECT_FALSE(String("foobar").EndsWithCaseInsensitive("Foo")); - EXPECT_FALSE(String("").EndsWithCaseInsensitive("foo")); + EXPECT_FALSE(String::EndsWithCaseInsensitive("Foobar", "foo")); + EXPECT_FALSE(String::EndsWithCaseInsensitive("foobar", "Foo")); + EXPECT_FALSE(String::EndsWithCaseInsensitive("", "foo")); } // C++Builder's preprocessor is buggy; it fails to expand macros that @@ -1340,56 +960,6 @@ TEST(StringTest, CaseInsensitiveWideCStringEquals) { EXPECT_TRUE(String::CaseInsensitiveWideCStringEquals(L"FOOBAR", L"foobar")); } -// Tests that NULL can be assigned to a String. -TEST(StringTest, CanBeAssignedNULL) { - const String src(NULL); - String dest; - - dest = src; - EXPECT_STREQ(NULL, dest.c_str()); -} - -// Tests that the empty string "" can be assigned to a String. -TEST(StringTest, CanBeAssignedEmpty) { - const String src(""); - String dest; - - dest = src; - EXPECT_STREQ("", dest.c_str()); -} - -// Tests that a non-empty string can be assigned to a String. -TEST(StringTest, CanBeAssignedNonEmpty) { - const String src("hello"); - String dest; - dest = src; - EXPECT_EQ(5U, dest.length()); - EXPECT_STREQ("hello", dest.c_str()); - - const String src2("x\0y", 3); - String dest2; - dest2 = src2; - EXPECT_EQ(3U, dest2.length()); - EXPECT_EQ('x', dest2.c_str()[0]); - EXPECT_EQ('\0', dest2.c_str()[1]); - EXPECT_EQ('y', dest2.c_str()[2]); -} - -// Tests that a String can be assigned to itself. -TEST(StringTest, CanBeAssignedSelf) { - String dest("hello"); - - dest = dest; - EXPECT_STREQ("hello", dest.c_str()); -} - -// Tests streaming a String. -TEST(StringTest, Streams) { - EXPECT_EQ(StreamableToString(String()), "(null)"); - EXPECT_EQ(StreamableToString(String("")), ""); - EXPECT_EQ(StreamableToString(String("a\0b", 3)), "a\\0b"); -} - // Tests that String::Format() works. TEST(StringTest, FormatWorks) { // Normal case: the format spec is valid, the arguments match the @@ -1401,19 +971,19 @@ TEST(StringTest, FormatWorks) { const size_t kSize = sizeof(buffer); memset(buffer, 'a', kSize - 1); buffer[kSize - 1] = '\0'; - EXPECT_STREQ(buffer, String::Format("%s", buffer).c_str()); + EXPECT_EQ(buffer, String::Format("%s", buffer)); // The result needs to be 4096 characters, exceeding Format()'s limit. - EXPECT_STREQ("", - String::Format("x%s", buffer).c_str()); + EXPECT_EQ("", + String::Format("x%s", buffer)); -#if GTEST_OS_LINUX +#if GTEST_OS_LINUX && !GTEST_OS_LINUX_ANDROID // On Linux, invalid format spec should lead to an error message. // In other environment (e.g. MSVC on Windows), String::Format() may // simply ignore a bad format spec, so this assertion is run on // Linux only. - EXPECT_STREQ("", - String::Format("%").c_str()); + EXPECT_EQ("", + String::Format("%")); #endif } @@ -1427,17 +997,7 @@ TEST(StringTest, ShowWideCString) { EXPECT_STREQ("foo", String::ShowWideCString(L"foo").c_str()); } -// Tests String::ShowWideCStringQuoted(). -TEST(StringTest, ShowWideCStringQuoted) { - EXPECT_STREQ("(null)", - String::ShowWideCStringQuoted(NULL).c_str()); - EXPECT_STREQ("L\"\"", - String::ShowWideCStringQuoted(L"").c_str()); - EXPECT_STREQ("L\"foo\"", - String::ShowWideCStringQuoted(L"foo").c_str()); -} - -#if GTEST_OS_WINDOWS_MOBILE +# if GTEST_OS_WINDOWS_MOBILE TEST(StringTest, AnsiAndUtf16Null) { EXPECT_EQ(NULL, String::AnsiToUtf16(NULL)); EXPECT_EQ(NULL, String::Utf16ToAnsi(NULL)); @@ -1460,7 +1020,7 @@ TEST(StringTest, AnsiAndUtf16ConvertPathChars) { EXPECT_EQ(0, wcsncmp(L".:\\ \"*?", utf16, 3)); delete [] utf16; } -#endif // GTEST_OS_WINDOWS_MOBILE +# endif // GTEST_OS_WINDOWS_MOBILE #endif // GTEST_OS_WINDOWS @@ -1532,25 +1092,14 @@ TEST_F(ScopedFakeTestPartResultReporterTest, DeprecatedConstructor) { EXPECT_EQ(1, results.size()); } -#if GTEST_IS_THREADSAFE && GTEST_HAS_PTHREAD +#if GTEST_IS_THREADSAFE class ScopedFakeTestPartResultReporterWithThreadsTest : public ScopedFakeTestPartResultReporterTest { protected: static void AddFailureInOtherThread(FailureMode failure) { - pthread_t tid; - pthread_create(&tid, - NULL, - ScopedFakeTestPartResultReporterWithThreadsTest:: - FailureThread, - &failure); - pthread_join(tid, NULL); - } - private: - static void* FailureThread(void* attr) { - FailureMode* failure = static_cast(attr); - AddFailure(*failure); - return NULL; + ThreadWithParam thread(&AddFailure, failure, NULL); + thread.Join(); } }; @@ -1573,7 +1122,7 @@ TEST_F(ScopedFakeTestPartResultReporterWithThreadsTest, EXPECT_TRUE(results.GetTestPartResult(3).fatally_failed()); } -#endif // GTEST_IS_THREADSAFE && GTEST_HAS_PTHREAD +#endif // GTEST_IS_THREADSAFE // Tests EXPECT_FATAL_FAILURE{,ON_ALL_THREADS}. Makes sure that they // work even if the failure is generated in a called function rather than @@ -1585,6 +1134,17 @@ TEST_F(ExpectFatalFailureTest, CatchesFatalFaliure) { EXPECT_FATAL_FAILURE(AddFatalFailure(), "Expected fatal failure."); } +#if GTEST_HAS_GLOBAL_STRING +TEST_F(ExpectFatalFailureTest, AcceptsStringObject) { + EXPECT_FATAL_FAILURE(AddFatalFailure(), ::string("Expected fatal failure.")); +} +#endif + +TEST_F(ExpectFatalFailureTest, AcceptsStdStringObject) { + EXPECT_FATAL_FAILURE(AddFatalFailure(), + ::std::string("Expected fatal failure.")); +} + TEST_F(ExpectFatalFailureTest, CatchesFatalFailureOnAllThreads) { // We have another test below to verify that the macro catches fatal // failures generated on another thread. @@ -1594,7 +1154,7 @@ TEST_F(ExpectFatalFailureTest, CatchesFatalFailureOnAllThreads) { #ifdef __BORLANDC__ // Silences warnings: "Condition is always true" -#pragma option push -w-ccc +# pragma option push -w-ccc #endif // Tests that EXPECT_FATAL_FAILURE() can be used in a non-void @@ -1621,8 +1181,8 @@ void DoesNotAbortHelper(bool* aborted) { } #ifdef __BORLANDC__ -// Restores warnings after previous "#pragma option push" supressed them -#pragma option pop +// Restores warnings after previous "#pragma option push" suppressed them. +# pragma option pop #endif TEST_F(ExpectFatalFailureTest, DoesNotAbort) { @@ -1640,7 +1200,7 @@ static int global_var = 0; TEST_F(ExpectFatalFailureTest, AcceptsMacroThatExpandsToUnprotectedComma) { #ifndef __BORLANDC__ - // ICE's in C++Builder 2007. + // ICE's in C++Builder. EXPECT_FATAL_FAILURE({ GTEST_USE_UNPROTECTED_COMMA_; AddFatalFailure(); @@ -1662,6 +1222,18 @@ TEST_F(ExpectNonfatalFailureTest, CatchesNonfatalFailure) { "Expected non-fatal failure."); } +#if GTEST_HAS_GLOBAL_STRING +TEST_F(ExpectNonfatalFailureTest, AcceptsStringObject) { + EXPECT_NONFATAL_FAILURE(AddNonfatalFailure(), + ::string("Expected non-fatal failure.")); +} +#endif + +TEST_F(ExpectNonfatalFailureTest, AcceptsStdStringObject) { + EXPECT_NONFATAL_FAILURE(AddNonfatalFailure(), + ::std::string("Expected non-fatal failure.")); +} + TEST_F(ExpectNonfatalFailureTest, CatchesNonfatalFailureOnAllThreads) { // We have another test below to verify that the macro catches // non-fatal failures generated on another thread. @@ -1684,7 +1256,7 @@ TEST_F(ExpectNonfatalFailureTest, AcceptsMacroThatExpandsToUnprotectedComma) { }, ""); } -#if GTEST_IS_THREADSAFE && GTEST_HAS_PTHREAD +#if GTEST_IS_THREADSAFE typedef ScopedFakeTestPartResultReporterWithThreadsTest ExpectFailureWithThreadsTest; @@ -1699,7 +1271,7 @@ TEST_F(ExpectFailureWithThreadsTest, ExpectNonFatalFailureOnAllThreads) { AddFailureInOtherThread(NONFATAL_FAILURE), "Expected non-fatal failure."); } -#endif // GTEST_IS_THREADSAFE && GTEST_HAS_PTHREAD +#endif // GTEST_IS_THREADSAFE // Tests the TestProperty class. @@ -1717,61 +1289,12 @@ TEST(TestPropertyTest, SetValue) { EXPECT_STREQ("value_2", property.value()); } -// Tests the TestPartResult class. - -TEST(TestPartResultTest, ConstructorWorks) { - Message message; - message << "something is terribly wrong"; - message << static_cast(testing::internal::kStackTraceMarker); - message << "some unimportant stack trace"; - - const TestPartResult result(TestPartResult::kNonFatalFailure, - "some_file.cc", - 42, - message.GetString().c_str()); - - EXPECT_EQ(TestPartResult::kNonFatalFailure, result.type()); - EXPECT_STREQ("some_file.cc", result.file_name()); - EXPECT_EQ(42, result.line_number()); - EXPECT_STREQ(message.GetString().c_str(), result.message()); - EXPECT_STREQ("something is terribly wrong", result.summary()); -} - -TEST(TestPartResultTest, ResultAccessorsWork) { - const TestPartResult success(TestPartResult::kSuccess, - "file.cc", - 42, - "message"); - EXPECT_TRUE(success.passed()); - EXPECT_FALSE(success.failed()); - EXPECT_FALSE(success.nonfatally_failed()); - EXPECT_FALSE(success.fatally_failed()); - - const TestPartResult nonfatal_failure(TestPartResult::kNonFatalFailure, - "file.cc", - 42, - "message"); - EXPECT_FALSE(nonfatal_failure.passed()); - EXPECT_TRUE(nonfatal_failure.failed()); - EXPECT_TRUE(nonfatal_failure.nonfatally_failed()); - EXPECT_FALSE(nonfatal_failure.fatally_failed()); - - const TestPartResult fatal_failure(TestPartResult::kFatalFailure, - "file.cc", - 42, - "message"); - EXPECT_FALSE(fatal_failure.passed()); - EXPECT_TRUE(fatal_failure.failed()); - EXPECT_FALSE(fatal_failure.nonfatally_failed()); - EXPECT_TRUE(fatal_failure.fatally_failed()); -} - // Tests the TestResult class // The test fixture for testing TestResult. class TestResultTest : public Test { protected: - typedef Vector TPRVector; + typedef std::vector TPRVector; // We make use of 2 TestPartResult objects, TestPartResult * pr1, * pr2; @@ -1798,23 +1321,23 @@ class TestResultTest : public Test { r2 = new TestResult(); // In order to test TestResult, we need to modify its internal - // state, in particular the TestPartResult Vector it holds. - // test_part_results() returns a const reference to this Vector. + // state, in particular the TestPartResult vector it holds. + // test_part_results() returns a const reference to this vector. // We cast it to a non-const object s.t. it can be modified (yes, // this is a hack). - TPRVector* results1 = const_cast *>( + TPRVector* results1 = const_cast( &TestResultAccessor::test_part_results(*r1)); - TPRVector* results2 = const_cast *>( + TPRVector* results2 = const_cast( &TestResultAccessor::test_part_results(*r2)); // r0 is an empty TestResult. // r1 contains a single SUCCESS TestPartResult. - results1->PushBack(*pr1); + results1->push_back(*pr1); // r2 contains a SUCCESS, and a FAILURE. - results2->PushBack(*pr1); - results2->PushBack(*pr2); + results2->push_back(*pr1); + results2->push_back(*pr2); } virtual void TearDown() { @@ -1869,12 +1392,8 @@ typedef TestResultTest TestResultDeathTest; TEST_F(TestResultDeathTest, GetTestPartResult) { CompareTestPartResult(*pr1, r2->GetTestPartResult(0)); CompareTestPartResult(*pr2, r2->GetTestPartResult(1)); - EXPECT_DEATH_IF_SUPPORTED( - r2->GetTestPartResult(2), - "Invalid Vector index 2: must be in range \\[0, 1\\]\\."); - EXPECT_DEATH_IF_SUPPORTED( - r2->GetTestPartResult(-1), - "Invalid Vector index -1: must be in range \\[0, 1\\]\\."); + EXPECT_DEATH_IF_SUPPORTED(r2->GetTestPartResult(2), ""); + EXPECT_DEATH_IF_SUPPORTED(r2->GetTestPartResult(-1), ""); } // Tests TestResult has no properties when none are added. @@ -1956,12 +1475,8 @@ TEST(TestResultPropertyDeathTest, GetTestProperty) { EXPECT_STREQ("key_3", fetched_property_3.key()); EXPECT_STREQ("3", fetched_property_3.value()); - EXPECT_DEATH_IF_SUPPORTED( - test_result.GetTestProperty(3), - "Invalid Vector index 3: must be in range \\[0, 2\\]\\."); - EXPECT_DEATH_IF_SUPPORTED( - test_result.GetTestProperty(-1), - "Invalid Vector index -1: must be in range \\[0, 2\\]\\."); + EXPECT_DEATH_IF_SUPPORTED(test_result.GetTestProperty(3), ""); + EXPECT_DEATH_IF_SUPPORTED(test_result.GetTestProperty(-1), ""); } // When a property using a reserved key is supplied to this function, it tests @@ -2022,6 +1537,8 @@ class GTestFlagSaverTest : public Test { GTEST_FLAG(random_seed) = 0; GTEST_FLAG(repeat) = 1; GTEST_FLAG(shuffle) = false; + GTEST_FLAG(stack_trace_depth) = kMaxStackTraceDepth; + GTEST_FLAG(stream_result_to) = ""; GTEST_FLAG(throw_on_failure) = false; } @@ -2047,6 +1564,8 @@ class GTestFlagSaverTest : public Test { EXPECT_EQ(0, GTEST_FLAG(random_seed)); EXPECT_EQ(1, GTEST_FLAG(repeat)); EXPECT_FALSE(GTEST_FLAG(shuffle)); + EXPECT_EQ(kMaxStackTraceDepth, GTEST_FLAG(stack_trace_depth)); + EXPECT_STREQ("", GTEST_FLAG(stream_result_to).c_str()); EXPECT_FALSE(GTEST_FLAG(throw_on_failure)); GTEST_FLAG(also_run_disabled_tests) = true; @@ -2061,8 +1580,11 @@ class GTestFlagSaverTest : public Test { GTEST_FLAG(random_seed) = 1; GTEST_FLAG(repeat) = 100; GTEST_FLAG(shuffle) = true; + GTEST_FLAG(stack_trace_depth) = 1; + GTEST_FLAG(stream_result_to) = "localhost:1234"; GTEST_FLAG(throw_on_failure) = true; } + private: // For saving Google Test flags during this test case. static GTestFlagSaver* saver_; @@ -2091,20 +1613,25 @@ static void SetEnv(const char* name, const char* value) { #if GTEST_OS_WINDOWS_MOBILE // Environment variables are not supported on Windows CE. return; -#elif defined(__BORLANDC__) +#elif defined(__BORLANDC__) || defined(__SunOS_5_8) || defined(__SunOS_5_9) // C++Builder's putenv only stores a pointer to its parameter; we have to // ensure that the string remains valid as long as it might be needed. // We use an std::map to do so. - static std::map added_env; + static std::map added_env; // Because putenv stores a pointer to the string buffer, we can't delete the // previous string (if present) until after it's replaced. - String *prev_env = NULL; + std::string *prev_env = NULL; if (added_env.find(name) != added_env.end()) { prev_env = added_env[name]; } - added_env[name] = new String((Message() << name << "=" << value).GetString()); - putenv(added_env[name]->c_str()); + added_env[name] = new std::string( + (Message() << name << "=" << value).GetString()); + + // The standard signature of putenv accepts a 'char*' argument. Other + // implementations, like C++Builder's, accept a 'const char*'. + // We cast away the 'const' since that would work for both variants. + putenv(const_cast(added_env[name]->c_str())); delete prev_env; #elif GTEST_OS_WINDOWS // If we are on Windows proper. _putenv((Message() << name << "=" << value).GetString().c_str()); @@ -2388,6 +1915,11 @@ TEST(UnitTestTest, CanGetOriginalWorkingDir) { EXPECT_STRNE(UnitTest::GetInstance()->original_working_dir(), ""); } +TEST(UnitTestTest, ReturnsPlausibleTimestamp) { + EXPECT_LT(0, UnitTest::GetInstance()->start_timestamp()); + EXPECT_LE(UnitTest::GetInstance()->start_timestamp(), GetTimeInMillis()); +} + // This group of tests is for predicate assertions (ASSERT_PRED*, etc) // of various arities. They do not attempt to be exhaustive. Rather, // view them as smoke tests that can be easily reviewed and verified. @@ -2418,6 +1950,25 @@ AssertionResult AssertIsEven(const char* expr, int n) { return AssertionFailure(msg); } +// A predicate function that returns AssertionResult for use in +// EXPECT/ASSERT_TRUE/FALSE. +AssertionResult ResultIsEven(int n) { + if (IsEven(n)) + return AssertionSuccess() << n << " is even"; + else + return AssertionFailure() << n << " is odd"; +} + +// A predicate function that returns AssertionResult but gives no +// explanation why it succeeds. Needed for testing that +// EXPECT/ASSERT_FALSE handles such functions correctly. +AssertionResult ResultIsEvenNoExplanation(int n) { + if (IsEven(n)) + return AssertionSuccess(); + else + return AssertionFailure() << n << " is odd"; +} + // A predicate-formatter functor that asserts the argument is an even // number. struct AssertIsEvenFunctor { @@ -2615,10 +2166,6 @@ TEST(PredTest, SingleEvaluationOnFailure) { // Some helper functions for testing using overloaded/template // functions with ASSERT_PREDn and EXPECT_PREDn. -bool IsPositive(int n) { - return n > 0; -} - bool IsPositive(double x) { return x > 0; } @@ -2778,6 +2325,11 @@ TEST(StringAssertionTest, STREQ_Wide) { // Strings containing wide characters. EXPECT_NONFATAL_FAILURE(EXPECT_STREQ(L"abc\x8119", L"abc\x8120"), "abc"); + + // The streaming variation. + EXPECT_NONFATAL_FAILURE({ // NOLINT + EXPECT_STREQ(L"abc\x8119", L"abc\x8121") << "Expected failure"; + }, "Expected failure"); } // Tests *_STRNE on wide strings. @@ -2804,6 +2356,9 @@ TEST(StringAssertionTest, STRNE_Wide) { // Strings containing wide characters. EXPECT_NONFATAL_FAILURE(EXPECT_STRNE(L"abc\x8119", L"abc\x8119"), "abc"); + + // The streaming variation. + ASSERT_STRNE(L"abc\x8119", L"abc\x8120") << "This shouldn't happen"; } // Tests for ::testing::IsSubstring(). @@ -2841,8 +2396,6 @@ TEST(IsSubstringTest, GeneratesCorrectMessageForCString) { "needle", "haystack").failure_message()); } -#if GTEST_HAS_STD_STRING - // Tests that IsSubstring returns the correct result when the input // argument type is ::std::string. TEST(IsSubstringTest, ReturnsCorrectResultsForStdString) { @@ -2850,8 +2403,6 @@ TEST(IsSubstringTest, ReturnsCorrectResultsForStdString) { EXPECT_FALSE(IsSubstring("", "", "hello", std::string("world"))); } -#endif // GTEST_HAS_STD_STRING - #if GTEST_HAS_STD_WSTRING // Tests that IsSubstring returns the correct result when the input // argument type is ::std::wstring. @@ -2902,8 +2453,6 @@ TEST(IsNotSubstringTest, GeneratesCorrectMessageForWideCString) { L"needle", L"two needles").failure_message()); } -#if GTEST_HAS_STD_STRING - // Tests that IsNotSubstring returns the correct result when the input // argument type is ::std::string. TEST(IsNotSubstringTest, ReturnsCorrectResultsForStdString) { @@ -2923,8 +2472,6 @@ TEST(IsNotSubstringTest, GeneratesCorrectMessageForStdString) { ::std::string("needle"), "two needles").failure_message()); } -#endif // GTEST_HAS_STD_STRING - #if GTEST_HAS_STD_WSTRING // Tests that IsNotSubstring returns the correct result when the input @@ -2942,7 +2489,6 @@ TEST(IsNotSubstringTest, ReturnsCorrectResultForStdWstring) { template class FloatingPointTest : public Test { protected: - // Pre-calculated numbers to be used by the tests. struct TestValues { RawType close_to_positive_zero; @@ -3043,7 +2589,10 @@ TEST_F(FloatTest, AlmostZeros) { // In C++Builder, names within local classes (such as used by // EXPECT_FATAL_FAILURE) cannot be resolved against static members of the // scoping class. Use a static local alias as a workaround. - static const FloatTest::TestValues& v(this->values_); + // We use the assignment syntax since some compilers, like Sun Studio, + // don't allow initializing references using construction syntax + // (parentheses). + static const FloatTest::TestValues& v = this->values_; EXPECT_FLOAT_EQ(0.0, v.close_to_positive_zero); EXPECT_FLOAT_EQ(-0.0, v.close_to_negative_zero); @@ -3095,7 +2644,10 @@ TEST_F(FloatTest, NaN) { // In C++Builder, names within local classes (such as used by // EXPECT_FATAL_FAILURE) cannot be resolved against static members of the // scoping class. Use a static local alias as a workaround. - static const FloatTest::TestValues& v(this->values_); + // We use the assignment syntax since some compilers, like Sun Studio, + // don't allow initializing references using construction syntax + // (parentheses). + static const FloatTest::TestValues& v = this->values_; EXPECT_NONFATAL_FAILURE(EXPECT_FLOAT_EQ(v.nan1, v.nan1), "v.nan1"); @@ -3130,9 +2682,9 @@ TEST_F(FloatTest, Commutative) { TEST_F(FloatTest, EXPECT_NEAR) { EXPECT_NEAR(-1.0f, -1.1f, 0.2f); EXPECT_NEAR(2.0f, 3.0f, 1.0f); - EXPECT_NONFATAL_FAILURE(EXPECT_NEAR(1.0f,1.2f, 0.1f), // NOLINT - "The difference between 1.0f and 1.2f is 0.2, " - "which exceeds 0.1f"); + EXPECT_NONFATAL_FAILURE(EXPECT_NEAR(1.0f,1.5f, 0.25f), // NOLINT + "The difference between 1.0f and 1.5f is 0.5, " + "which exceeds 0.25f"); // To work around a bug in gcc 2.95.0, there is intentionally no // space after the first comma in the previous line. } @@ -3141,9 +2693,9 @@ TEST_F(FloatTest, EXPECT_NEAR) { TEST_F(FloatTest, ASSERT_NEAR) { ASSERT_NEAR(-1.0f, -1.1f, 0.2f); ASSERT_NEAR(2.0f, 3.0f, 1.0f); - EXPECT_FATAL_FAILURE(ASSERT_NEAR(1.0f,1.2f, 0.1f), // NOLINT - "The difference between 1.0f and 1.2f is 0.2, " - "which exceeds 0.1f"); + EXPECT_FATAL_FAILURE(ASSERT_NEAR(1.0f,1.5f, 0.25f), // NOLINT + "The difference between 1.0f and 1.5f is 0.5, " + "which exceeds 0.25f"); // To work around a bug in gcc 2.95.0, there is intentionally no // space after the first comma in the previous line. } @@ -3210,7 +2762,10 @@ TEST_F(DoubleTest, AlmostZeros) { // In C++Builder, names within local classes (such as used by // EXPECT_FATAL_FAILURE) cannot be resolved against static members of the // scoping class. Use a static local alias as a workaround. - static const DoubleTest::TestValues& v(this->values_); + // We use the assignment syntax since some compilers, like Sun Studio, + // don't allow initializing references using construction syntax + // (parentheses). + static const DoubleTest::TestValues& v = this->values_; EXPECT_DOUBLE_EQ(0.0, v.close_to_positive_zero); EXPECT_DOUBLE_EQ(-0.0, v.close_to_negative_zero); @@ -3260,7 +2815,10 @@ TEST_F(DoubleTest, NaN) { // In C++Builder, names within local classes (such as used by // EXPECT_FATAL_FAILURE) cannot be resolved against static members of the // scoping class. Use a static local alias as a workaround. - static const DoubleTest::TestValues& v(this->values_); + // We use the assignment syntax since some compilers, like Sun Studio, + // don't allow initializing references using construction syntax + // (parentheses). + static const DoubleTest::TestValues& v = this->values_; // Nokia's STLport crashes if we try to output infinity or NaN. EXPECT_NONFATAL_FAILURE(EXPECT_DOUBLE_EQ(v.nan1, v.nan1), @@ -3296,9 +2854,9 @@ TEST_F(DoubleTest, Commutative) { TEST_F(DoubleTest, EXPECT_NEAR) { EXPECT_NEAR(-1.0, -1.1, 0.2); EXPECT_NEAR(2.0, 3.0, 1.0); - EXPECT_NONFATAL_FAILURE(EXPECT_NEAR(1.0, 1.2, 0.1), // NOLINT - "The difference between 1.0 and 1.2 is 0.2, " - "which exceeds 0.1"); + EXPECT_NONFATAL_FAILURE(EXPECT_NEAR(1.0, 1.5, 0.25), // NOLINT + "The difference between 1.0 and 1.5 is 0.5, " + "which exceeds 0.25"); // To work around a bug in gcc 2.95.0, there is intentionally no // space after the first comma in the previous statement. } @@ -3307,9 +2865,9 @@ TEST_F(DoubleTest, EXPECT_NEAR) { TEST_F(DoubleTest, ASSERT_NEAR) { ASSERT_NEAR(-1.0, -1.1, 0.2); ASSERT_NEAR(2.0, 3.0, 1.0); - EXPECT_FATAL_FAILURE(ASSERT_NEAR(1.0, 1.2, 0.1), // NOLINT - "The difference between 1.0 and 1.2 is 0.2, " - "which exceeds 0.1"); + EXPECT_FATAL_FAILURE(ASSERT_NEAR(1.0, 1.5, 0.25), // NOLINT + "The difference between 1.0 and 1.5 is 0.5, " + "which exceeds 0.25"); // To work around a bug in gcc 2.95.0, there is intentionally no // space after the first comma in the previous statement. } @@ -3713,8 +3271,8 @@ TEST_F(NoFatalFailureTest, MessageIsStreamable) { // Tests EqFailure(), used for implementing *EQ* assertions. TEST(AssertionTest, EqFailure) { - const String foo_val("5"), bar_val("6"); - const String msg1( + const std::string foo_val("5"), bar_val("6"); + const std::string msg1( EqFailure("foo", "bar", foo_val, bar_val, false) .failure_message()); EXPECT_STREQ( @@ -3724,7 +3282,7 @@ TEST(AssertionTest, EqFailure) { "Which is: 5", msg1.c_str()); - const String msg2( + const std::string msg2( EqFailure("foo", "6", foo_val, bar_val, false) .failure_message()); EXPECT_STREQ( @@ -3733,7 +3291,7 @@ TEST(AssertionTest, EqFailure) { "Which is: 5", msg2.c_str()); - const String msg3( + const std::string msg3( EqFailure("5", "bar", foo_val, bar_val, false) .failure_message()); EXPECT_STREQ( @@ -3742,16 +3300,16 @@ TEST(AssertionTest, EqFailure) { "Expected: 5", msg3.c_str()); - const String msg4( + const std::string msg4( EqFailure("5", "6", foo_val, bar_val, false).failure_message()); EXPECT_STREQ( "Value of: 6\n" "Expected: 5", msg4.c_str()); - const String msg5( + const std::string msg5( EqFailure("foo", "bar", - String("\"x\""), String("\"y\""), + std::string("\"x\""), std::string("\"y\""), true).failure_message()); EXPECT_STREQ( "Value of: bar\n" @@ -3763,7 +3321,7 @@ TEST(AssertionTest, EqFailure) { // Tests AppendUserMessage(), used for implementing the *EQ* macros. TEST(AssertionTest, AppendUserMessage) { - const String foo("foo"); + const std::string foo("foo"); Message msg; EXPECT_STREQ("foo", @@ -3776,7 +3334,7 @@ TEST(AssertionTest, AppendUserMessage) { #ifdef __BORLANDC__ // Silences warnings: "Condition is always true", "Unreachable code" -#pragma option push -w-ccc -w-rch +# pragma option push -w-ccc -w-rch #endif // Tests ASSERT_TRUE. @@ -3786,6 +3344,23 @@ TEST(AssertionTest, ASSERT_TRUE) { "2 < 1"); } +// Tests ASSERT_TRUE(predicate) for predicates returning AssertionResult. +TEST(AssertionTest, AssertTrueWithAssertionResult) { + ASSERT_TRUE(ResultIsEven(2)); +#ifndef __BORLANDC__ + // ICE's in C++Builder. + EXPECT_FATAL_FAILURE(ASSERT_TRUE(ResultIsEven(3)), + "Value of: ResultIsEven(3)\n" + " Actual: false (3 is odd)\n" + "Expected: true"); +#endif + ASSERT_TRUE(ResultIsEvenNoExplanation(2)); + EXPECT_FATAL_FAILURE(ASSERT_TRUE(ResultIsEvenNoExplanation(3)), + "Value of: ResultIsEvenNoExplanation(3)\n" + " Actual: false (3 is odd)\n" + "Expected: true"); +} + // Tests ASSERT_FALSE. TEST(AssertionTest, ASSERT_FALSE) { ASSERT_FALSE(2 < 1); // NOLINT @@ -3795,9 +3370,26 @@ TEST(AssertionTest, ASSERT_FALSE) { "Expected: false"); } +// Tests ASSERT_FALSE(predicate) for predicates returning AssertionResult. +TEST(AssertionTest, AssertFalseWithAssertionResult) { + ASSERT_FALSE(ResultIsEven(3)); +#ifndef __BORLANDC__ + // ICE's in C++Builder. + EXPECT_FATAL_FAILURE(ASSERT_FALSE(ResultIsEven(2)), + "Value of: ResultIsEven(2)\n" + " Actual: true (2 is even)\n" + "Expected: false"); +#endif + ASSERT_FALSE(ResultIsEvenNoExplanation(3)); + EXPECT_FATAL_FAILURE(ASSERT_FALSE(ResultIsEvenNoExplanation(2)), + "Value of: ResultIsEvenNoExplanation(2)\n" + " Actual: true\n" + "Expected: false"); +} + #ifdef __BORLANDC__ // Restores warnings after previous "#pragma option push" supressed them -#pragma option pop +# pragma option pop #endif // Tests using ASSERT_EQ on double values. The purpose is to make @@ -3822,10 +3414,7 @@ TEST(AssertionTest, ASSERT_EQ) { } // Tests ASSERT_EQ(NULL, pointer). -#if !GTEST_OS_SYMBIAN -// The NULL-detection template magic fails to compile with -// the Nokia compiler and crashes the ARM compiler, hence -// not testing on Symbian. +#if GTEST_CAN_COMPARE_NULL TEST(AssertionTest, ASSERT_EQ_NULL) { // A success. const char* p = NULL; @@ -3840,7 +3429,7 @@ TEST(AssertionTest, ASSERT_EQ_NULL) { EXPECT_FATAL_FAILURE(ASSERT_EQ(NULL, &n), "Value of: &n\n"); } -#endif // !GTEST_OS_SYMBIAN +#endif // GTEST_CAN_COMPARE_NULL // Tests ASSERT_EQ(0, non_pointer). Since the literal 0 can be // treated as a null pointer by the compiler, we need to make sure @@ -3902,13 +3491,16 @@ void ThrowNothing() {} // Tests ASSERT_THROW. TEST(AssertionTest, ASSERT_THROW) { ASSERT_THROW(ThrowAnInteger(), int); -#if !defined(__BORLANDC__) || __BORLANDC__ >= 0x600 || defined(_DEBUG) - // ICE's in C++Builder 2007 (Release build). + +# ifndef __BORLANDC__ + + // ICE's in C++Builder 2007 and 2009. EXPECT_FATAL_FAILURE( ASSERT_THROW(ThrowAnInteger(), bool), "Expected: ThrowAnInteger() throws an exception of type bool.\n" " Actual: it throws a different type."); -#endif +# endif + EXPECT_FATAL_FAILURE( ASSERT_THROW(ThrowNothing(), bool), "Expected: ThrowNothing() throws an exception of type bool.\n" @@ -3938,7 +3530,8 @@ TEST(AssertionTest, ASSERT_ANY_THROW) { // compile. TEST(AssertionTest, AssertPrecedence) { ASSERT_EQ(1 < 2, true); - ASSERT_EQ(true && false, false); + bool false_value = false; + ASSERT_EQ(true && false_value, false); } // A subroutine used by the following test. @@ -3955,7 +3548,7 @@ TEST(AssertionTest, NonFixtureSubroutine) { // An uncopyable class. class Uncopyable { public: - explicit Uncopyable(int value) : value_(value) {} + explicit Uncopyable(int a_value) : value_(a_value) {} int value() const { return value_; } bool operator==(const Uncopyable& rhs) const { @@ -4013,56 +3606,89 @@ TEST(AssertionTest, ExpectWorksWithUncopyableObject) { "Value of: y\n Actual: -1\nExpected: x\nWhich is: 5"); } +enum NamedEnum { + kE1 = 0, + kE2 = 1 +}; + +TEST(AssertionTest, NamedEnum) { + EXPECT_EQ(kE1, kE1); + EXPECT_LT(kE1, kE2); + EXPECT_NONFATAL_FAILURE(EXPECT_EQ(kE1, kE2), "Which is: 0"); + EXPECT_NONFATAL_FAILURE(EXPECT_EQ(kE1, kE2), "Actual: 1"); +} // The version of gcc used in XCode 2.2 has a bug and doesn't allow // anonymous enums in assertions. Therefore the following test is not // done on Mac. -#if !GTEST_OS_MAC +// Sun Studio and HP aCC also reject this code. +#if !GTEST_OS_MAC && !defined(__SUNPRO_CC) && !defined(__HP_aCC) // Tests using assertions with anonymous enums. enum { - CASE_A = -1, -#if GTEST_OS_LINUX + kCaseA = -1, + +# if GTEST_OS_LINUX + // We want to test the case where the size of the anonymous enum is // larger than sizeof(int), to make sure our implementation of the // assertions doesn't truncate the enums. However, MSVC // (incorrectly) doesn't allow an enum value to exceed the range of // an int, so this has to be conditionally compiled. // - // On Linux, CASE_B and CASE_A have the same value when truncated to + // On Linux, kCaseB and kCaseA have the same value when truncated to // int size. We want to test whether this will confuse the // assertions. - CASE_B = testing::internal::kMaxBiggestInt, -#else - CASE_B = INT_MAX, -#endif // GTEST_OS_LINUX + kCaseB = testing::internal::kMaxBiggestInt, + +# else + + kCaseB = INT_MAX, + +# endif // GTEST_OS_LINUX + + kCaseC = 42 }; TEST(AssertionTest, AnonymousEnum) { -#if GTEST_OS_LINUX - EXPECT_EQ(static_cast(CASE_A), static_cast(CASE_B)); -#endif // GTEST_OS_LINUX - - EXPECT_EQ(CASE_A, CASE_A); - EXPECT_NE(CASE_A, CASE_B); - EXPECT_LT(CASE_A, CASE_B); - EXPECT_LE(CASE_A, CASE_B); - EXPECT_GT(CASE_B, CASE_A); - EXPECT_GE(CASE_A, CASE_A); - EXPECT_NONFATAL_FAILURE(EXPECT_GE(CASE_A, CASE_B), - "(CASE_A) >= (CASE_B)"); - - ASSERT_EQ(CASE_A, CASE_A); - ASSERT_NE(CASE_A, CASE_B); - ASSERT_LT(CASE_A, CASE_B); - ASSERT_LE(CASE_A, CASE_B); - ASSERT_GT(CASE_B, CASE_A); - ASSERT_GE(CASE_A, CASE_A); - EXPECT_FATAL_FAILURE(ASSERT_EQ(CASE_A, CASE_B), - "Value of: CASE_B"); -} - -#endif // !GTEST_OS_MAC +# if GTEST_OS_LINUX + + EXPECT_EQ(static_cast(kCaseA), static_cast(kCaseB)); + +# endif // GTEST_OS_LINUX + + EXPECT_EQ(kCaseA, kCaseA); + EXPECT_NE(kCaseA, kCaseB); + EXPECT_LT(kCaseA, kCaseB); + EXPECT_LE(kCaseA, kCaseB); + EXPECT_GT(kCaseB, kCaseA); + EXPECT_GE(kCaseA, kCaseA); + EXPECT_NONFATAL_FAILURE(EXPECT_GE(kCaseA, kCaseB), + "(kCaseA) >= (kCaseB)"); + EXPECT_NONFATAL_FAILURE(EXPECT_GE(kCaseA, kCaseC), + "-1 vs 42"); + + ASSERT_EQ(kCaseA, kCaseA); + ASSERT_NE(kCaseA, kCaseB); + ASSERT_LT(kCaseA, kCaseB); + ASSERT_LE(kCaseA, kCaseB); + ASSERT_GT(kCaseB, kCaseA); + ASSERT_GE(kCaseA, kCaseA); + +# ifndef __BORLANDC__ + + // ICE's in C++Builder. + EXPECT_FATAL_FAILURE(ASSERT_EQ(kCaseA, kCaseB), + "Value of: kCaseB"); + EXPECT_FATAL_FAILURE(ASSERT_EQ(kCaseA, kCaseC), + "Actual: 42"); +# endif + + EXPECT_FATAL_FAILURE(ASSERT_EQ(kCaseA, kCaseC), + "Which is: -1"); +} + +#endif // !GTEST_OS_MAC && !defined(__SUNPRO_CC) #if GTEST_OS_WINDOWS @@ -4114,12 +3740,14 @@ TEST(HRESULTAssertionTest, EXPECT_HRESULT_FAILED) { TEST(HRESULTAssertionTest, ASSERT_HRESULT_FAILED) { ASSERT_HRESULT_FAILED(E_UNEXPECTED); -#ifndef __BORLANDC__ +# ifndef __BORLANDC__ + // ICE's in C++Builder 2007 and 2009. EXPECT_FATAL_FAILURE(ASSERT_HRESULT_FAILED(OkHRESULTSuccess()), "Expected: (OkHRESULTSuccess()) fails.\n" " Actual: 0x00000000"); -#endif +# endif + EXPECT_FATAL_FAILURE(ASSERT_HRESULT_FAILED(FalseHRESULTSuccess()), "Expected: (FalseHRESULTSuccess()) fails.\n" " Actual: 0x00000001"); @@ -4136,12 +3764,13 @@ TEST(HRESULTAssertionTest, Streaming) { EXPECT_HRESULT_SUCCEEDED(E_UNEXPECTED) << "expected failure", "expected failure"); -#ifndef __BORLANDC__ +# ifndef __BORLANDC__ + // ICE's in C++Builder 2007 and 2009. EXPECT_FATAL_FAILURE( ASSERT_HRESULT_SUCCEEDED(E_UNEXPECTED) << "expected failure", "expected failure"); -#endif +# endif EXPECT_NONFATAL_FAILURE( EXPECT_HRESULT_FAILED(S_OK) << "expected failure", @@ -4156,7 +3785,7 @@ TEST(HRESULTAssertionTest, Streaming) { #ifdef __BORLANDC__ // Silences warnings: "Condition is always true", "Unreachable code" -#pragma option push -w-ccc -w-rch +# pragma option push -w-ccc -w-rch #endif // Tests that the assertion macros behave like single statements. @@ -4273,7 +3902,7 @@ TEST(AssertionSyntaxTest, WorksWithSwitch) { #if GTEST_HAS_EXCEPTIONS void ThrowAString() { - throw "String"; + throw "std::string"; } // Test that the exception assertion macros compile and work with const @@ -4325,8 +3954,109 @@ TEST(SuccessfulAssertionTest, ASSERT_STR) { namespace { +// Tests the message streaming variation of assertions. + +TEST(AssertionWithMessageTest, EXPECT) { + EXPECT_EQ(1, 1) << "This should succeed."; + EXPECT_NONFATAL_FAILURE(EXPECT_NE(1, 1) << "Expected failure #1.", + "Expected failure #1"); + EXPECT_LE(1, 2) << "This should succeed."; + EXPECT_NONFATAL_FAILURE(EXPECT_LT(1, 0) << "Expected failure #2.", + "Expected failure #2."); + EXPECT_GE(1, 0) << "This should succeed."; + EXPECT_NONFATAL_FAILURE(EXPECT_GT(1, 2) << "Expected failure #3.", + "Expected failure #3."); + + EXPECT_STREQ("1", "1") << "This should succeed."; + EXPECT_NONFATAL_FAILURE(EXPECT_STRNE("1", "1") << "Expected failure #4.", + "Expected failure #4."); + EXPECT_STRCASEEQ("a", "A") << "This should succeed."; + EXPECT_NONFATAL_FAILURE(EXPECT_STRCASENE("a", "A") << "Expected failure #5.", + "Expected failure #5."); + + EXPECT_FLOAT_EQ(1, 1) << "This should succeed."; + EXPECT_NONFATAL_FAILURE(EXPECT_DOUBLE_EQ(1, 1.2) << "Expected failure #6.", + "Expected failure #6."); + EXPECT_NEAR(1, 1.1, 0.2) << "This should succeed."; +} + +TEST(AssertionWithMessageTest, ASSERT) { + ASSERT_EQ(1, 1) << "This should succeed."; + ASSERT_NE(1, 2) << "This should succeed."; + ASSERT_LE(1, 2) << "This should succeed."; + ASSERT_LT(1, 2) << "This should succeed."; + ASSERT_GE(1, 0) << "This should succeed."; + EXPECT_FATAL_FAILURE(ASSERT_GT(1, 2) << "Expected failure.", + "Expected failure."); +} + +TEST(AssertionWithMessageTest, ASSERT_STR) { + ASSERT_STREQ("1", "1") << "This should succeed."; + ASSERT_STRNE("1", "2") << "This should succeed."; + ASSERT_STRCASEEQ("a", "A") << "This should succeed."; + EXPECT_FATAL_FAILURE(ASSERT_STRCASENE("a", "A") << "Expected failure.", + "Expected failure."); +} + +TEST(AssertionWithMessageTest, ASSERT_FLOATING) { + ASSERT_FLOAT_EQ(1, 1) << "This should succeed."; + ASSERT_DOUBLE_EQ(1, 1) << "This should succeed."; + EXPECT_FATAL_FAILURE(ASSERT_NEAR(1,1.2, 0.1) << "Expect failure.", // NOLINT + "Expect failure."); + // To work around a bug in gcc 2.95.0, there is intentionally no + // space after the first comma in the previous statement. +} + +// Tests using ASSERT_FALSE with a streamed message. +TEST(AssertionWithMessageTest, ASSERT_FALSE) { + ASSERT_FALSE(false) << "This shouldn't fail."; + EXPECT_FATAL_FAILURE({ // NOLINT + ASSERT_FALSE(true) << "Expected failure: " << 2 << " > " << 1 + << " evaluates to " << true; + }, "Expected failure"); +} + +// Tests using FAIL with a streamed message. +TEST(AssertionWithMessageTest, FAIL) { + EXPECT_FATAL_FAILURE(FAIL() << 0, + "0"); +} + +// Tests using SUCCEED with a streamed message. +TEST(AssertionWithMessageTest, SUCCEED) { + SUCCEED() << "Success == " << 1; +} + +// Tests using ASSERT_TRUE with a streamed message. +TEST(AssertionWithMessageTest, ASSERT_TRUE) { + ASSERT_TRUE(true) << "This should succeed."; + ASSERT_TRUE(true) << true; + EXPECT_FATAL_FAILURE({ // NOLINT + ASSERT_TRUE(false) << static_cast(NULL) + << static_cast(NULL); + }, "(null)(null)"); +} + +#if GTEST_OS_WINDOWS +// Tests using wide strings in assertion messages. +TEST(AssertionWithMessageTest, WideStringMessage) { + EXPECT_NONFATAL_FAILURE({ // NOLINT + EXPECT_TRUE(false) << L"This failure is expected.\x8119"; + }, "This failure is expected."); + EXPECT_FATAL_FAILURE({ // NOLINT + ASSERT_EQ(1, 2) << "This failure is " + << L"expected too.\x8120"; + }, "This failure is expected too."); +} +#endif // GTEST_OS_WINDOWS + // Tests EXPECT_TRUE. TEST(ExpectTest, EXPECT_TRUE) { + EXPECT_TRUE(true) << "Intentional success"; + EXPECT_NONFATAL_FAILURE(EXPECT_TRUE(false) << "Intentional failure #1.", + "Intentional failure #1."); + EXPECT_NONFATAL_FAILURE(EXPECT_TRUE(false) << "Intentional failure #2.", + "Intentional failure #2."); EXPECT_TRUE(2 > 1); // NOLINT EXPECT_NONFATAL_FAILURE(EXPECT_TRUE(2 < 1), "Value of: 2 < 1\n" @@ -4336,9 +4066,28 @@ TEST(ExpectTest, EXPECT_TRUE) { "2 > 3"); } -// Tests EXPECT_FALSE. +// Tests EXPECT_TRUE(predicate) for predicates returning AssertionResult. +TEST(ExpectTest, ExpectTrueWithAssertionResult) { + EXPECT_TRUE(ResultIsEven(2)); + EXPECT_NONFATAL_FAILURE(EXPECT_TRUE(ResultIsEven(3)), + "Value of: ResultIsEven(3)\n" + " Actual: false (3 is odd)\n" + "Expected: true"); + EXPECT_TRUE(ResultIsEvenNoExplanation(2)); + EXPECT_NONFATAL_FAILURE(EXPECT_TRUE(ResultIsEvenNoExplanation(3)), + "Value of: ResultIsEvenNoExplanation(3)\n" + " Actual: false (3 is odd)\n" + "Expected: true"); +} + +// Tests EXPECT_FALSE with a streamed message. TEST(ExpectTest, EXPECT_FALSE) { EXPECT_FALSE(2 < 1); // NOLINT + EXPECT_FALSE(false) << "Intentional success"; + EXPECT_NONFATAL_FAILURE(EXPECT_FALSE(true) << "Intentional failure #1.", + "Intentional failure #1."); + EXPECT_NONFATAL_FAILURE(EXPECT_FALSE(true) << "Intentional failure #2.", + "Intentional failure #2."); EXPECT_NONFATAL_FAILURE(EXPECT_FALSE(2 > 1), "Value of: 2 > 1\n" " Actual: true\n" @@ -4347,9 +4096,23 @@ TEST(ExpectTest, EXPECT_FALSE) { "2 < 3"); } +// Tests EXPECT_FALSE(predicate) for predicates returning AssertionResult. +TEST(ExpectTest, ExpectFalseWithAssertionResult) { + EXPECT_FALSE(ResultIsEven(3)); + EXPECT_NONFATAL_FAILURE(EXPECT_FALSE(ResultIsEven(2)), + "Value of: ResultIsEven(2)\n" + " Actual: true (2 is even)\n" + "Expected: false"); + EXPECT_FALSE(ResultIsEvenNoExplanation(3)); + EXPECT_NONFATAL_FAILURE(EXPECT_FALSE(ResultIsEvenNoExplanation(2)), + "Value of: ResultIsEvenNoExplanation(2)\n" + " Actual: true\n" + "Expected: false"); +} + #ifdef __BORLANDC__ // Restores warnings after previous "#pragma option push" supressed them -#pragma option pop +# pragma option pop #endif // Tests EXPECT_EQ. @@ -4375,12 +4138,12 @@ TEST(ExpectTest, EXPECT_EQ_Double) { "5.1"); } -#if !GTEST_OS_SYMBIAN +#if GTEST_CAN_COMPARE_NULL // Tests EXPECT_EQ(NULL, pointer). TEST(ExpectTest, EXPECT_EQ_NULL) { // A success. const char* p = NULL; - // Some older GCC versions may issue a spurious waring in this or the next + // Some older GCC versions may issue a spurious warning in this or the next // assertion statement. This warning should not be suppressed with // static_cast since the test verifies the ability to use bare NULL as the // expected parameter to the macro. @@ -4391,7 +4154,7 @@ TEST(ExpectTest, EXPECT_EQ_NULL) { EXPECT_NONFATAL_FAILURE(EXPECT_EQ(NULL, &n), "Value of: &n\n"); } -#endif // !GTEST_OS_SYMBIAN +#endif // GTEST_CAN_COMPARE_NULL // Tests EXPECT_EQ(0, non_pointer). Since the literal 0 can be // treated as a null pointer by the compiler, we need to make sure @@ -4542,7 +4305,6 @@ TEST(StreamableToStringTest, NullCString) { // Tests using streamable values as assertion messages. -#if GTEST_HAS_STD_STRING // Tests using std::string as an assertion message. TEST(StreamableTest, string) { static const std::string str( @@ -4563,8 +4325,6 @@ TEST(StreamableTest, stringWithEmbeddedNUL) { "Here's a NUL\\0 and some more string"); } -#endif // GTEST_HAS_STD_STRING - // Tests that we can output a NUL char. TEST(StreamableTest, NULChar) { EXPECT_FATAL_FAILURE({ // NOLINT @@ -4601,7 +4361,7 @@ TEST(StreamableTest, BasicIoManip) { void AddFailureHelper(bool* aborted) { *aborted = true; - ADD_FAILURE() << "Failure"; + ADD_FAILURE() << "Intentional failure."; *aborted = false; } @@ -4609,10 +4369,25 @@ void AddFailureHelper(bool* aborted) { TEST(MacroTest, ADD_FAILURE) { bool aborted = true; EXPECT_NONFATAL_FAILURE(AddFailureHelper(&aborted), - "Failure"); + "Intentional failure."); EXPECT_FALSE(aborted); } +// Tests ADD_FAILURE_AT. +TEST(MacroTest, ADD_FAILURE_AT) { + // Verifies that ADD_FAILURE_AT does generate a nonfatal failure and + // the failure message contains the user-streamed part. + EXPECT_NONFATAL_FAILURE(ADD_FAILURE_AT("foo.cc", 42) << "Wrong!", "Wrong!"); + + // Verifies that the user-streamed part is optional. + EXPECT_NONFATAL_FAILURE(ADD_FAILURE_AT("foo.cc", 42), "Failed"); + + // Unfortunately, we cannot verify that the failure message contains + // the right file path and line number the same way, as + // EXPECT_NONFATAL_FAILURE() doesn't get to see the file path and + // line number. Instead, we do that in gtest_output_test_.cc. +} + // Tests FAIL. TEST(MacroTest, FAIL) { EXPECT_FATAL_FAILURE(FAIL(), @@ -4627,7 +4402,6 @@ TEST(MacroTest, SUCCEED) { SUCCEED() << "Explicit success."; } - // Tests for EXPECT_EQ() and ASSERT_EQ(). // // These tests fail *intentionally*, s.t. the failure messages can be @@ -4638,8 +4412,10 @@ TEST(MacroTest, SUCCEED) { // Tests using bool values in {EXPECT|ASSERT}_EQ. TEST(EqAssertionTest, Bool) { EXPECT_EQ(true, true); - EXPECT_FATAL_FAILURE(ASSERT_EQ(false, true), - "Value of: true"); + EXPECT_FATAL_FAILURE({ + bool false_value = false; + ASSERT_EQ(false_value, true); + }, "Value of: true"); } // Tests using int values in {EXPECT|ASSERT}_EQ. @@ -4682,12 +4458,11 @@ TEST(EqAssertionTest, WideChar) { wchar = L'b'; EXPECT_NONFATAL_FAILURE(EXPECT_EQ(L'a', wchar), "wchar"); - wchar = L'\x8119'; - EXPECT_FATAL_FAILURE(ASSERT_EQ(L'\x8120', wchar), + wchar = 0x8119; + EXPECT_FATAL_FAILURE(ASSERT_EQ(static_cast(0x8120), wchar), "Value of: wchar"); } -#if GTEST_HAS_STD_STRING // Tests using ::std::string values in {EXPECT|ASSERT}_EQ. TEST(EqAssertionTest, StdString) { // Compares a const char* to an std::string that has identical @@ -4718,26 +4493,26 @@ TEST(EqAssertionTest, StdString) { " Actual: \"A \\0 in the middle\""); } -#endif // GTEST_HAS_STD_STRING - #if GTEST_HAS_STD_WSTRING // Tests using ::std::wstring values in {EXPECT|ASSERT}_EQ. TEST(EqAssertionTest, StdWideString) { - // Compares an std::wstring to a const wchar_t* that has identical - // content. - EXPECT_EQ(::std::wstring(L"Test\x8119"), L"Test\x8119"); - // Compares two identical std::wstrings. const ::std::wstring wstr1(L"A * in the middle"); const ::std::wstring wstr2(wstr1); ASSERT_EQ(wstr1, wstr2); + // Compares an std::wstring to a const wchar_t* that has identical + // content. + const wchar_t kTestX8119[] = { 'T', 'e', 's', 't', 0x8119, '\0' }; + EXPECT_EQ(::std::wstring(kTestX8119), kTestX8119); + // Compares an std::wstring to a const wchar_t* that has different // content. + const wchar_t kTestX8120[] = { 'T', 'e', 's', 't', 0x8120, '\0' }; EXPECT_NONFATAL_FAILURE({ // NOLINT - EXPECT_EQ(::std::wstring(L"Test\x8119"), L"Test\x8120"); - }, "L\"Test\\x8120\""); + EXPECT_EQ(::std::wstring(kTestX8119), kTestX8120); + }, "kTestX8120"); // Compares two std::wstrings that have different contents, one of // which having a NUL character in the middle. @@ -4789,18 +4564,20 @@ TEST(EqAssertionTest, GlobalString) { // Tests using ::wstring values in {EXPECT|ASSERT}_EQ. TEST(EqAssertionTest, GlobalWideString) { - // Compares a const wchar_t* to a ::wstring that has identical content. - ASSERT_EQ(L"Test\x8119", ::wstring(L"Test\x8119")); - // Compares two identical ::wstrings. static const ::wstring wstr1(L"A * in the middle"); static const ::wstring wstr2(wstr1); EXPECT_EQ(wstr1, wstr2); + // Compares a const wchar_t* to a ::wstring that has identical content. + const wchar_t kTestX8119[] = { 'T', 'e', 's', 't', 0x8119, '\0' }; + ASSERT_EQ(kTestX8119, ::wstring(kTestX8119)); + // Compares a const wchar_t* to a ::wstring that has different // content. + const wchar_t kTestX8120[] = { 'T', 'e', 's', 't', 0x8120, '\0' }; EXPECT_NONFATAL_FAILURE({ // NOLINT - EXPECT_EQ(L"Test\x8120", ::wstring(L"Test\x8119")); + EXPECT_EQ(kTestX8120, ::wstring(kTestX8119)); }, "Test\\x8119"); // Compares a wchar_t* to a ::wstring that has different content. @@ -4875,6 +4652,68 @@ TEST(EqAssertionTest, OtherPointer) { "0x1234"); } +// A class that supports binary comparison operators but not streaming. +class UnprintableChar { + public: + explicit UnprintableChar(char ch) : char_(ch) {} + + bool operator==(const UnprintableChar& rhs) const { + return char_ == rhs.char_; + } + bool operator!=(const UnprintableChar& rhs) const { + return char_ != rhs.char_; + } + bool operator<(const UnprintableChar& rhs) const { + return char_ < rhs.char_; + } + bool operator<=(const UnprintableChar& rhs) const { + return char_ <= rhs.char_; + } + bool operator>(const UnprintableChar& rhs) const { + return char_ > rhs.char_; + } + bool operator>=(const UnprintableChar& rhs) const { + return char_ >= rhs.char_; + } + + private: + char char_; +}; + +// Tests that ASSERT_EQ() and friends don't require the arguments to +// be printable. +TEST(ComparisonAssertionTest, AcceptsUnprintableArgs) { + const UnprintableChar x('x'), y('y'); + ASSERT_EQ(x, x); + EXPECT_NE(x, y); + ASSERT_LT(x, y); + EXPECT_LE(x, y); + ASSERT_GT(y, x); + EXPECT_GE(x, x); + + EXPECT_NONFATAL_FAILURE(EXPECT_EQ(x, y), "1-byte object <78>"); + EXPECT_NONFATAL_FAILURE(EXPECT_EQ(x, y), "1-byte object <79>"); + EXPECT_NONFATAL_FAILURE(EXPECT_LT(y, y), "1-byte object <79>"); + EXPECT_NONFATAL_FAILURE(EXPECT_GT(x, y), "1-byte object <78>"); + EXPECT_NONFATAL_FAILURE(EXPECT_GT(x, y), "1-byte object <79>"); + + // Code tested by EXPECT_FATAL_FAILURE cannot reference local + // variables, so we have to write UnprintableChar('x') instead of x. +#ifndef __BORLANDC__ + // ICE's in C++Builder. + EXPECT_FATAL_FAILURE(ASSERT_NE(UnprintableChar('x'), UnprintableChar('x')), + "1-byte object <78>"); + EXPECT_FATAL_FAILURE(ASSERT_LE(UnprintableChar('y'), UnprintableChar('x')), + "1-byte object <78>"); +#endif + EXPECT_FATAL_FAILURE(ASSERT_LE(UnprintableChar('y'), UnprintableChar('x')), + "1-byte object <79>"); + EXPECT_FATAL_FAILURE(ASSERT_GE(UnprintableChar('x'), UnprintableChar('y')), + "1-byte object <78>"); + EXPECT_FATAL_FAILURE(ASSERT_GE(UnprintableChar('x'), UnprintableChar('y')), + "1-byte object <79>"); +} + // Tests the FRIEND_TEST macro. // This class has a private member we want to test. We will test it @@ -4952,11 +4791,74 @@ TEST_F(TestLifeCycleTest, Test2) { } // namespace +// Tests that the copy constructor works when it is NOT optimized away by +// the compiler. +TEST(AssertionResultTest, CopyConstructorWorksWhenNotOptimied) { + // Checks that the copy constructor doesn't try to dereference NULL pointers + // in the source object. + AssertionResult r1 = AssertionSuccess(); + AssertionResult r2 = r1; + // The following line is added to prevent the compiler from optimizing + // away the constructor call. + r1 << "abc"; + + AssertionResult r3 = r1; + EXPECT_EQ(static_cast(r3), static_cast(r1)); + EXPECT_STREQ("abc", r1.message()); +} + +// Tests that AssertionSuccess and AssertionFailure construct +// AssertionResult objects as expected. +TEST(AssertionResultTest, ConstructionWorks) { + AssertionResult r1 = AssertionSuccess(); + EXPECT_TRUE(r1); + EXPECT_STREQ("", r1.message()); + + AssertionResult r2 = AssertionSuccess() << "abc"; + EXPECT_TRUE(r2); + EXPECT_STREQ("abc", r2.message()); + + AssertionResult r3 = AssertionFailure(); + EXPECT_FALSE(r3); + EXPECT_STREQ("", r3.message()); + + AssertionResult r4 = AssertionFailure() << "def"; + EXPECT_FALSE(r4); + EXPECT_STREQ("def", r4.message()); + + AssertionResult r5 = AssertionFailure(Message() << "ghi"); + EXPECT_FALSE(r5); + EXPECT_STREQ("ghi", r5.message()); +} + +// Tests that the negation flips the predicate result but keeps the message. +TEST(AssertionResultTest, NegationWorks) { + AssertionResult r1 = AssertionSuccess() << "abc"; + EXPECT_FALSE(!r1); + EXPECT_STREQ("abc", (!r1).message()); + + AssertionResult r2 = AssertionFailure() << "def"; + EXPECT_TRUE(!r2); + EXPECT_STREQ("def", (!r2).message()); +} + +TEST(AssertionResultTest, StreamingWorks) { + AssertionResult r = AssertionSuccess(); + r << "abc" << 'd' << 0 << true; + EXPECT_STREQ("abcd0true", r.message()); +} + +TEST(AssertionResultTest, CanStreamOstreamManipulators) { + AssertionResult r = AssertionSuccess(); + r << "Data" << std::endl << std::flush << std::ends << "Will be visible"; + EXPECT_STREQ("Data\n\\0Will be visible", r.message()); +} + // Tests streaming a user type whose definition and operator << are // both in the global namespace. class Base { public: - explicit Base(int x) : x_(x) {} + explicit Base(int an_x) : x_(an_x) {} int x() const { return x_; } private: int x_; @@ -4983,7 +4885,7 @@ TEST(MessageTest, CanStreamUserTypeInGlobalNameSpace) { namespace { class MyTypeInUnnamedNameSpace : public Base { public: - explicit MyTypeInUnnamedNameSpace(int x): Base(x) {} + explicit MyTypeInUnnamedNameSpace(int an_x): Base(an_x) {} }; std::ostream& operator<<(std::ostream& os, const MyTypeInUnnamedNameSpace& val) { @@ -5008,7 +4910,7 @@ TEST(MessageTest, CanStreamUserTypeInUnnamedNameSpace) { namespace namespace1 { class MyTypeInNameSpace1 : public Base { public: - explicit MyTypeInNameSpace1(int x): Base(x) {} + explicit MyTypeInNameSpace1(int an_x): Base(an_x) {} }; std::ostream& operator<<(std::ostream& os, const MyTypeInNameSpace1& val) { @@ -5033,7 +4935,7 @@ TEST(MessageTest, CanStreamUserTypeInUserNameSpace) { namespace namespace2 { class MyTypeInNameSpace2 : public ::Base { public: - explicit MyTypeInNameSpace2(int x): Base(x) {} + explicit MyTypeInNameSpace2(int an_x): Base(an_x) {} }; } // namespace namespace2 std::ostream& operator<<(std::ostream& os, @@ -5215,6 +5117,8 @@ struct Flags { random_seed(0), repeat(1), shuffle(false), + stack_trace_depth(kMaxStackTraceDepth), + stream_result_to(""), throw_on_failure(false) {} // Factory methods. @@ -5307,6 +5211,22 @@ struct Flags { return flags; } + // Creates a Flags struct where the GTEST_FLAG(stack_trace_depth) flag has + // the given value. + static Flags StackTraceDepth(Int32 stack_trace_depth) { + Flags flags; + flags.stack_trace_depth = stack_trace_depth; + return flags; + } + + // Creates a Flags struct where the GTEST_FLAG(stream_result_to) flag has + // the given value. + static Flags StreamResultTo(const char* stream_result_to) { + Flags flags; + flags.stream_result_to = stream_result_to; + return flags; + } + // Creates a Flags struct where the gtest_throw_on_failure flag has // the given value. static Flags ThrowOnFailure(bool throw_on_failure) { @@ -5327,6 +5247,8 @@ struct Flags { Int32 random_seed; Int32 repeat; bool shuffle; + Int32 stack_trace_depth; + const char* stream_result_to; bool throw_on_failure; }; @@ -5346,6 +5268,8 @@ class InitGoogleTestTest : public Test { GTEST_FLAG(random_seed) = 0; GTEST_FLAG(repeat) = 1; GTEST_FLAG(shuffle) = false; + GTEST_FLAG(stack_trace_depth) = kMaxStackTraceDepth; + GTEST_FLAG(stream_result_to) = ""; GTEST_FLAG(throw_on_failure) = false; } @@ -5374,6 +5298,9 @@ class InitGoogleTestTest : public Test { EXPECT_EQ(expected.random_seed, GTEST_FLAG(random_seed)); EXPECT_EQ(expected.repeat, GTEST_FLAG(repeat)); EXPECT_EQ(expected.shuffle, GTEST_FLAG(shuffle)); + EXPECT_EQ(expected.stack_trace_depth, GTEST_FLAG(stack_trace_depth)); + EXPECT_STREQ(expected.stream_result_to, + GTEST_FLAG(stream_result_to).c_str()); EXPECT_EQ(expected.throw_on_failure, GTEST_FLAG(throw_on_failure)); } @@ -5383,23 +5310,53 @@ class InitGoogleTestTest : public Test { template static void TestParsingFlags(int argc1, const CharType** argv1, int argc2, const CharType** argv2, - const Flags& expected) { + const Flags& expected, bool should_print_help) { + const bool saved_help_flag = ::testing::internal::g_help_flag; + ::testing::internal::g_help_flag = false; + +#if GTEST_HAS_STREAM_REDIRECTION + CaptureStdout(); +#endif + // Parses the command line. internal::ParseGoogleTestFlagsOnly(&argc1, const_cast(argv1)); +#if GTEST_HAS_STREAM_REDIRECTION + const std::string captured_stdout = GetCapturedStdout(); +#endif + // Verifies the flag values. CheckFlags(expected); // Verifies that the recognized flags are removed from the command // line. AssertStringArrayEq(argc1 + 1, argv1, argc2 + 1, argv2); + + // ParseGoogleTestFlagsOnly should neither set g_help_flag nor print the + // help message for the flags it recognizes. + EXPECT_EQ(should_print_help, ::testing::internal::g_help_flag); + +#if GTEST_HAS_STREAM_REDIRECTION + const char* const expected_help_fragment = + "This program contains tests written using"; + if (should_print_help) { + EXPECT_PRED_FORMAT2(IsSubstring, expected_help_fragment, captured_stdout); + } else { + EXPECT_PRED_FORMAT2(IsNotSubstring, + expected_help_fragment, captured_stdout); + } +#endif // GTEST_HAS_STREAM_REDIRECTION + + ::testing::internal::g_help_flag = saved_help_flag; } // This macro wraps TestParsingFlags s.t. the user doesn't need // to specify the array sizes. -#define GTEST_TEST_PARSING_FLAGS_(argv1, argv2, expected) \ + +#define GTEST_TEST_PARSING_FLAGS_(argv1, argv2, expected, should_print_help) \ TestParsingFlags(sizeof(argv1)/sizeof(*argv1) - 1, argv1, \ - sizeof(argv2)/sizeof(*argv2) - 1, argv2, expected) + sizeof(argv2)/sizeof(*argv2) - 1, argv2, \ + expected, should_print_help) }; // Tests parsing an empty command line. @@ -5412,7 +5369,7 @@ TEST_F(InitGoogleTestTest, Empty) { NULL }; - GTEST_TEST_PARSING_FLAGS_(argv, argv2, Flags()); + GTEST_TEST_PARSING_FLAGS_(argv, argv2, Flags(), false); } // Tests parsing a command line that has no flag. @@ -5427,7 +5384,7 @@ TEST_F(InitGoogleTestTest, NoFlag) { NULL }; - GTEST_TEST_PARSING_FLAGS_(argv, argv2, Flags()); + GTEST_TEST_PARSING_FLAGS_(argv, argv2, Flags(), false); } // Tests parsing a bad --gtest_filter flag. @@ -5444,7 +5401,7 @@ TEST_F(InitGoogleTestTest, FilterBad) { NULL }; - GTEST_TEST_PARSING_FLAGS_(argv, argv2, Flags::Filter("")); + GTEST_TEST_PARSING_FLAGS_(argv, argv2, Flags::Filter(""), true); } // Tests parsing an empty --gtest_filter flag. @@ -5460,7 +5417,7 @@ TEST_F(InitGoogleTestTest, FilterEmpty) { NULL }; - GTEST_TEST_PARSING_FLAGS_(argv, argv2, Flags::Filter("")); + GTEST_TEST_PARSING_FLAGS_(argv, argv2, Flags::Filter(""), false); } // Tests parsing a non-empty --gtest_filter flag. @@ -5476,7 +5433,7 @@ TEST_F(InitGoogleTestTest, FilterNonEmpty) { NULL }; - GTEST_TEST_PARSING_FLAGS_(argv, argv2, Flags::Filter("abc")); + GTEST_TEST_PARSING_FLAGS_(argv, argv2, Flags::Filter("abc"), false); } // Tests parsing --gtest_break_on_failure. @@ -5492,7 +5449,7 @@ TEST_F(InitGoogleTestTest, BreakOnFailureWithoutValue) { NULL }; - GTEST_TEST_PARSING_FLAGS_(argv, argv2, Flags::BreakOnFailure(true)); + GTEST_TEST_PARSING_FLAGS_(argv, argv2, Flags::BreakOnFailure(true), false); } // Tests parsing --gtest_break_on_failure=0. @@ -5508,7 +5465,7 @@ TEST_F(InitGoogleTestTest, BreakOnFailureFalse_0) { NULL }; - GTEST_TEST_PARSING_FLAGS_(argv, argv2, Flags::BreakOnFailure(false)); + GTEST_TEST_PARSING_FLAGS_(argv, argv2, Flags::BreakOnFailure(false), false); } // Tests parsing --gtest_break_on_failure=f. @@ -5524,7 +5481,7 @@ TEST_F(InitGoogleTestTest, BreakOnFailureFalse_f) { NULL }; - GTEST_TEST_PARSING_FLAGS_(argv, argv2, Flags::BreakOnFailure(false)); + GTEST_TEST_PARSING_FLAGS_(argv, argv2, Flags::BreakOnFailure(false), false); } // Tests parsing --gtest_break_on_failure=F. @@ -5540,7 +5497,7 @@ TEST_F(InitGoogleTestTest, BreakOnFailureFalse_F) { NULL }; - GTEST_TEST_PARSING_FLAGS_(argv, argv2, Flags::BreakOnFailure(false)); + GTEST_TEST_PARSING_FLAGS_(argv, argv2, Flags::BreakOnFailure(false), false); } // Tests parsing a --gtest_break_on_failure flag that has a "true" @@ -5557,7 +5514,7 @@ TEST_F(InitGoogleTestTest, BreakOnFailureTrue) { NULL }; - GTEST_TEST_PARSING_FLAGS_(argv, argv2, Flags::BreakOnFailure(true)); + GTEST_TEST_PARSING_FLAGS_(argv, argv2, Flags::BreakOnFailure(true), false); } // Tests parsing --gtest_catch_exceptions. @@ -5573,7 +5530,7 @@ TEST_F(InitGoogleTestTest, CatchExceptions) { NULL }; - GTEST_TEST_PARSING_FLAGS_(argv, argv2, Flags::CatchExceptions(true)); + GTEST_TEST_PARSING_FLAGS_(argv, argv2, Flags::CatchExceptions(true), false); } // Tests parsing --gtest_death_test_use_fork. @@ -5589,7 +5546,7 @@ TEST_F(InitGoogleTestTest, DeathTestUseFork) { NULL }; - GTEST_TEST_PARSING_FLAGS_(argv, argv2, Flags::DeathTestUseFork(true)); + GTEST_TEST_PARSING_FLAGS_(argv, argv2, Flags::DeathTestUseFork(true), false); } // Tests having the same flag twice with different values. The @@ -5607,7 +5564,7 @@ TEST_F(InitGoogleTestTest, DuplicatedFlags) { NULL }; - GTEST_TEST_PARSING_FLAGS_(argv, argv2, Flags::Filter("b")); + GTEST_TEST_PARSING_FLAGS_(argv, argv2, Flags::Filter("b"), false); } // Tests having an unrecognized flag on the command line. @@ -5629,7 +5586,7 @@ TEST_F(InitGoogleTestTest, UnrecognizedFlag) { Flags flags; flags.break_on_failure = true; flags.filter = "b"; - GTEST_TEST_PARSING_FLAGS_(argv, argv2, flags); + GTEST_TEST_PARSING_FLAGS_(argv, argv2, flags, false); } // Tests having a --gtest_list_tests flag @@ -5645,7 +5602,7 @@ TEST_F(InitGoogleTestTest, ListTestsFlag) { NULL }; - GTEST_TEST_PARSING_FLAGS_(argv, argv2, Flags::ListTests(true)); + GTEST_TEST_PARSING_FLAGS_(argv, argv2, Flags::ListTests(true), false); } // Tests having a --gtest_list_tests flag with a "true" value @@ -5661,7 +5618,7 @@ TEST_F(InitGoogleTestTest, ListTestsTrue) { NULL }; - GTEST_TEST_PARSING_FLAGS_(argv, argv2, Flags::ListTests(true)); + GTEST_TEST_PARSING_FLAGS_(argv, argv2, Flags::ListTests(true), false); } // Tests having a --gtest_list_tests flag with a "false" value @@ -5677,7 +5634,7 @@ TEST_F(InitGoogleTestTest, ListTestsFalse) { NULL }; - GTEST_TEST_PARSING_FLAGS_(argv, argv2, Flags::ListTests(false)); + GTEST_TEST_PARSING_FLAGS_(argv, argv2, Flags::ListTests(false), false); } // Tests parsing --gtest_list_tests=f. @@ -5693,7 +5650,7 @@ TEST_F(InitGoogleTestTest, ListTestsFalse_f) { NULL }; - GTEST_TEST_PARSING_FLAGS_(argv, argv2, Flags::ListTests(false)); + GTEST_TEST_PARSING_FLAGS_(argv, argv2, Flags::ListTests(false), false); } // Tests parsing --gtest_list_tests=F. @@ -5709,7 +5666,7 @@ TEST_F(InitGoogleTestTest, ListTestsFalse_F) { NULL }; - GTEST_TEST_PARSING_FLAGS_(argv, argv2, Flags::ListTests(false)); + GTEST_TEST_PARSING_FLAGS_(argv, argv2, Flags::ListTests(false), false); } // Tests parsing --gtest_output (invalid). @@ -5726,7 +5683,7 @@ TEST_F(InitGoogleTestTest, OutputEmpty) { NULL }; - GTEST_TEST_PARSING_FLAGS_(argv, argv2, Flags()); + GTEST_TEST_PARSING_FLAGS_(argv, argv2, Flags(), true); } // Tests parsing --gtest_output=xml @@ -5742,7 +5699,7 @@ TEST_F(InitGoogleTestTest, OutputXml) { NULL }; - GTEST_TEST_PARSING_FLAGS_(argv, argv2, Flags::Output("xml")); + GTEST_TEST_PARSING_FLAGS_(argv, argv2, Flags::Output("xml"), false); } // Tests parsing --gtest_output=xml:file @@ -5758,7 +5715,7 @@ TEST_F(InitGoogleTestTest, OutputXmlFile) { NULL }; - GTEST_TEST_PARSING_FLAGS_(argv, argv2, Flags::Output("xml:file")); + GTEST_TEST_PARSING_FLAGS_(argv, argv2, Flags::Output("xml:file"), false); } // Tests parsing --gtest_output=xml:directory/path/ @@ -5774,7 +5731,8 @@ TEST_F(InitGoogleTestTest, OutputXmlDirectory) { NULL }; - GTEST_TEST_PARSING_FLAGS_(argv, argv2, Flags::Output("xml:directory/path/")); + GTEST_TEST_PARSING_FLAGS_(argv, argv2, + Flags::Output("xml:directory/path/"), false); } // Tests having a --gtest_print_time flag @@ -5790,7 +5748,7 @@ TEST_F(InitGoogleTestTest, PrintTimeFlag) { NULL }; - GTEST_TEST_PARSING_FLAGS_(argv, argv2, Flags::PrintTime(true)); + GTEST_TEST_PARSING_FLAGS_(argv, argv2, Flags::PrintTime(true), false); } // Tests having a --gtest_print_time flag with a "true" value @@ -5806,7 +5764,7 @@ TEST_F(InitGoogleTestTest, PrintTimeTrue) { NULL }; - GTEST_TEST_PARSING_FLAGS_(argv, argv2, Flags::PrintTime(true)); + GTEST_TEST_PARSING_FLAGS_(argv, argv2, Flags::PrintTime(true), false); } // Tests having a --gtest_print_time flag with a "false" value @@ -5822,7 +5780,7 @@ TEST_F(InitGoogleTestTest, PrintTimeFalse) { NULL }; - GTEST_TEST_PARSING_FLAGS_(argv, argv2, Flags::PrintTime(false)); + GTEST_TEST_PARSING_FLAGS_(argv, argv2, Flags::PrintTime(false), false); } // Tests parsing --gtest_print_time=f. @@ -5838,7 +5796,7 @@ TEST_F(InitGoogleTestTest, PrintTimeFalse_f) { NULL }; - GTEST_TEST_PARSING_FLAGS_(argv, argv2, Flags::PrintTime(false)); + GTEST_TEST_PARSING_FLAGS_(argv, argv2, Flags::PrintTime(false), false); } // Tests parsing --gtest_print_time=F. @@ -5854,7 +5812,7 @@ TEST_F(InitGoogleTestTest, PrintTimeFalse_F) { NULL }; - GTEST_TEST_PARSING_FLAGS_(argv, argv2, Flags::PrintTime(false)); + GTEST_TEST_PARSING_FLAGS_(argv, argv2, Flags::PrintTime(false), false); } // Tests parsing --gtest_random_seed=number @@ -5870,7 +5828,7 @@ TEST_F(InitGoogleTestTest, RandomSeed) { NULL }; - GTEST_TEST_PARSING_FLAGS_(argv, argv2, Flags::RandomSeed(1000)); + GTEST_TEST_PARSING_FLAGS_(argv, argv2, Flags::RandomSeed(1000), false); } // Tests parsing --gtest_repeat=number @@ -5886,7 +5844,7 @@ TEST_F(InitGoogleTestTest, Repeat) { NULL }; - GTEST_TEST_PARSING_FLAGS_(argv, argv2, Flags::Repeat(1000)); + GTEST_TEST_PARSING_FLAGS_(argv, argv2, Flags::Repeat(1000), false); } // Tests having a --gtest_also_run_disabled_tests flag @@ -5902,7 +5860,8 @@ TEST_F(InitGoogleTestTest, AlsoRunDisabledTestsFlag) { NULL }; - GTEST_TEST_PARSING_FLAGS_(argv, argv2, Flags::AlsoRunDisabledTests(true)); + GTEST_TEST_PARSING_FLAGS_(argv, argv2, + Flags::AlsoRunDisabledTests(true), false); } // Tests having a --gtest_also_run_disabled_tests flag with a "true" value @@ -5918,7 +5877,8 @@ TEST_F(InitGoogleTestTest, AlsoRunDisabledTestsTrue) { NULL }; - GTEST_TEST_PARSING_FLAGS_(argv, argv2, Flags::AlsoRunDisabledTests(true)); + GTEST_TEST_PARSING_FLAGS_(argv, argv2, + Flags::AlsoRunDisabledTests(true), false); } // Tests having a --gtest_also_run_disabled_tests flag with a "false" value @@ -5934,7 +5894,8 @@ TEST_F(InitGoogleTestTest, AlsoRunDisabledTestsFalse) { NULL }; - GTEST_TEST_PARSING_FLAGS_(argv, argv2, Flags::AlsoRunDisabledTests(false)); + GTEST_TEST_PARSING_FLAGS_(argv, argv2, + Flags::AlsoRunDisabledTests(false), false); } // Tests parsing --gtest_shuffle. @@ -5950,7 +5911,7 @@ TEST_F(InitGoogleTestTest, ShuffleWithoutValue) { NULL }; - GTEST_TEST_PARSING_FLAGS_(argv, argv2, Flags::Shuffle(true)); + GTEST_TEST_PARSING_FLAGS_(argv, argv2, Flags::Shuffle(true), false); } // Tests parsing --gtest_shuffle=0. @@ -5966,7 +5927,7 @@ TEST_F(InitGoogleTestTest, ShuffleFalse_0) { NULL }; - GTEST_TEST_PARSING_FLAGS_(argv, argv2, Flags::Shuffle(false)); + GTEST_TEST_PARSING_FLAGS_(argv, argv2, Flags::Shuffle(false), false); } // Tests parsing a --gtest_shuffle flag that has a "true" @@ -5983,7 +5944,39 @@ TEST_F(InitGoogleTestTest, ShuffleTrue) { NULL }; - GTEST_TEST_PARSING_FLAGS_(argv, argv2, Flags::Shuffle(true)); + GTEST_TEST_PARSING_FLAGS_(argv, argv2, Flags::Shuffle(true), false); +} + +// Tests parsing --gtest_stack_trace_depth=number. +TEST_F(InitGoogleTestTest, StackTraceDepth) { + const char* argv[] = { + "foo.exe", + "--gtest_stack_trace_depth=5", + NULL + }; + + const char* argv2[] = { + "foo.exe", + NULL + }; + + GTEST_TEST_PARSING_FLAGS_(argv, argv2, Flags::StackTraceDepth(5), false); +} + +TEST_F(InitGoogleTestTest, StreamResultTo) { + const char* argv[] = { + "foo.exe", + "--gtest_stream_result_to=localhost:1234", + NULL + }; + + const char* argv2[] = { + "foo.exe", + NULL + }; + + GTEST_TEST_PARSING_FLAGS_( + argv, argv2, Flags::StreamResultTo("localhost:1234"), false); } // Tests parsing --gtest_throw_on_failure. @@ -5999,7 +5992,7 @@ TEST_F(InitGoogleTestTest, ThrowOnFailureWithoutValue) { NULL }; - GTEST_TEST_PARSING_FLAGS_(argv, argv2, Flags::ThrowOnFailure(true)); + GTEST_TEST_PARSING_FLAGS_(argv, argv2, Flags::ThrowOnFailure(true), false); } // Tests parsing --gtest_throw_on_failure=0. @@ -6015,7 +6008,7 @@ TEST_F(InitGoogleTestTest, ThrowOnFailureFalse_0) { NULL }; - GTEST_TEST_PARSING_FLAGS_(argv, argv2, Flags::ThrowOnFailure(false)); + GTEST_TEST_PARSING_FLAGS_(argv, argv2, Flags::ThrowOnFailure(false), false); } // Tests parsing a --gtest_throw_on_failure flag that has a "true" @@ -6032,7 +6025,7 @@ TEST_F(InitGoogleTestTest, ThrowOnFailureTrue) { NULL }; - GTEST_TEST_PARSING_FLAGS_(argv, argv2, Flags::ThrowOnFailure(true)); + GTEST_TEST_PARSING_FLAGS_(argv, argv2, Flags::ThrowOnFailure(true), false); } #if GTEST_OS_WINDOWS @@ -6058,7 +6051,7 @@ TEST_F(InitGoogleTestTest, WideStrings) { expected_flags.filter = "Foo*"; expected_flags.list_tests = true; - GTEST_TEST_PARSING_FLAGS_(argv, argv2, expected_flags); + GTEST_TEST_PARSING_FLAGS_(argv, argv2, expected_flags, false); } #endif // GTEST_OS_WINDOWS @@ -6173,7 +6166,7 @@ TEST(StreamingAssertionsTest, Unconditional) { #ifdef __BORLANDC__ // Silences warnings: "Condition is always true", "Unreachable code" -#pragma option push -w-ccc -w-rch +# pragma option push -w-ccc -w-rch #endif TEST(StreamingAssertionsTest, Truth) { @@ -6196,7 +6189,7 @@ TEST(StreamingAssertionsTest, Truth2) { #ifdef __BORLANDC__ // Restores warnings after previous "#pragma option push" supressed them -#pragma option pop +# pragma option pop #endif TEST(StreamingAssertionsTest, IntegerEquals) { @@ -6389,15 +6382,25 @@ TEST(ColoredOutputTest, UsesColorsWhenTermSupportsColors) { SetEnv("TERM", "xterm-color"); // TERM supports colors. EXPECT_TRUE(ShouldUseColor(true)); // Stdout is a TTY. + SetEnv("TERM", "xterm-256color"); // TERM supports colors. + EXPECT_TRUE(ShouldUseColor(true)); // Stdout is a TTY. + + SetEnv("TERM", "screen"); // TERM supports colors. + EXPECT_TRUE(ShouldUseColor(true)); // Stdout is a TTY. + SetEnv("TERM", "linux"); // TERM supports colors. EXPECT_TRUE(ShouldUseColor(true)); // Stdout is a TTY. + + SetEnv("TERM", "cygwin"); // TERM supports colors. + EXPECT_TRUE(ShouldUseColor(true)); // Stdout is a TTY. #endif // GTEST_OS_WINDOWS } // Verifies that StaticAssertTypeEq works in a namespace scope. -static bool dummy1 = StaticAssertTypeEq(); -static bool dummy2 = StaticAssertTypeEq(); +static bool dummy1 GTEST_ATTRIBUTE_UNUSED_ = StaticAssertTypeEq(); +static bool dummy2 GTEST_ATTRIBUTE_UNUSED_ = + StaticAssertTypeEq(); // Verifies that StaticAssertTypeEq works in a class. @@ -6420,23 +6423,6 @@ TEST(StaticAssertTypeEqTest, CompilesForEqualTypes) { StaticAssertTypeEq(); } -TEST(ThreadLocalTest, DefaultConstructor) { - ThreadLocal t1; - EXPECT_EQ(0, t1.get()); - - ThreadLocal t2; - EXPECT_TRUE(t2.get() == NULL); -} - -TEST(ThreadLocalTest, Init) { - ThreadLocal t1(123); - EXPECT_EQ(123, t1.get()); - - int i = 0; - ThreadLocal t2(&i); - EXPECT_EQ(&i, t2.get()); -} - TEST(GetCurrentOsStackTraceExceptTopTest, ReturnsTheStackTrace) { testing::UnitTest* const unit_test = testing::UnitTest::GetInstance(); @@ -6608,43 +6594,43 @@ TEST(TestEventListenersTest, Append) { // order. class SequenceTestingListener : public EmptyTestEventListener { public: - SequenceTestingListener(Vector* vector, const char* id) + SequenceTestingListener(std::vector* vector, const char* id) : vector_(vector), id_(id) {} protected: virtual void OnTestProgramStart(const UnitTest& /*unit_test*/) { - vector_->PushBack(GetEventDescription("OnTestProgramStart")); + vector_->push_back(GetEventDescription("OnTestProgramStart")); } virtual void OnTestProgramEnd(const UnitTest& /*unit_test*/) { - vector_->PushBack(GetEventDescription("OnTestProgramEnd")); + vector_->push_back(GetEventDescription("OnTestProgramEnd")); } virtual void OnTestIterationStart(const UnitTest& /*unit_test*/, int /*iteration*/) { - vector_->PushBack(GetEventDescription("OnTestIterationStart")); + vector_->push_back(GetEventDescription("OnTestIterationStart")); } virtual void OnTestIterationEnd(const UnitTest& /*unit_test*/, int /*iteration*/) { - vector_->PushBack(GetEventDescription("OnTestIterationEnd")); + vector_->push_back(GetEventDescription("OnTestIterationEnd")); } private: - String GetEventDescription(const char* method) { + std::string GetEventDescription(const char* method) { Message message; message << id_ << "." << method; return message.GetString(); } - Vector* vector_; + std::vector* vector_; const char* const id_; GTEST_DISALLOW_COPY_AND_ASSIGN_(SequenceTestingListener); }; TEST(EventListenerTest, AppendKeepsOrder) { - Vector vec; + std::vector vec; TestEventListeners listeners; listeners.Append(new SequenceTestingListener(&vec, "1st")); listeners.Append(new SequenceTestingListener(&vec, "2nd")); @@ -6652,34 +6638,34 @@ TEST(EventListenerTest, AppendKeepsOrder) { TestEventListenersAccessor::GetRepeater(&listeners)->OnTestProgramStart( *UnitTest::GetInstance()); - ASSERT_EQ(3, vec.size()); - EXPECT_STREQ("1st.OnTestProgramStart", vec.GetElement(0).c_str()); - EXPECT_STREQ("2nd.OnTestProgramStart", vec.GetElement(1).c_str()); - EXPECT_STREQ("3rd.OnTestProgramStart", vec.GetElement(2).c_str()); + ASSERT_EQ(3U, vec.size()); + EXPECT_STREQ("1st.OnTestProgramStart", vec[0].c_str()); + EXPECT_STREQ("2nd.OnTestProgramStart", vec[1].c_str()); + EXPECT_STREQ("3rd.OnTestProgramStart", vec[2].c_str()); - vec.Clear(); + vec.clear(); TestEventListenersAccessor::GetRepeater(&listeners)->OnTestProgramEnd( *UnitTest::GetInstance()); - ASSERT_EQ(3, vec.size()); - EXPECT_STREQ("3rd.OnTestProgramEnd", vec.GetElement(0).c_str()); - EXPECT_STREQ("2nd.OnTestProgramEnd", vec.GetElement(1).c_str()); - EXPECT_STREQ("1st.OnTestProgramEnd", vec.GetElement(2).c_str()); + ASSERT_EQ(3U, vec.size()); + EXPECT_STREQ("3rd.OnTestProgramEnd", vec[0].c_str()); + EXPECT_STREQ("2nd.OnTestProgramEnd", vec[1].c_str()); + EXPECT_STREQ("1st.OnTestProgramEnd", vec[2].c_str()); - vec.Clear(); + vec.clear(); TestEventListenersAccessor::GetRepeater(&listeners)->OnTestIterationStart( *UnitTest::GetInstance(), 0); - ASSERT_EQ(3, vec.size()); - EXPECT_STREQ("1st.OnTestIterationStart", vec.GetElement(0).c_str()); - EXPECT_STREQ("2nd.OnTestIterationStart", vec.GetElement(1).c_str()); - EXPECT_STREQ("3rd.OnTestIterationStart", vec.GetElement(2).c_str()); + ASSERT_EQ(3U, vec.size()); + EXPECT_STREQ("1st.OnTestIterationStart", vec[0].c_str()); + EXPECT_STREQ("2nd.OnTestIterationStart", vec[1].c_str()); + EXPECT_STREQ("3rd.OnTestIterationStart", vec[2].c_str()); - vec.Clear(); + vec.clear(); TestEventListenersAccessor::GetRepeater(&listeners)->OnTestIterationEnd( *UnitTest::GetInstance(), 0); - ASSERT_EQ(3, vec.size()); - EXPECT_STREQ("3rd.OnTestIterationEnd", vec.GetElement(0).c_str()); - EXPECT_STREQ("2nd.OnTestIterationEnd", vec.GetElement(1).c_str()); - EXPECT_STREQ("1st.OnTestIterationEnd", vec.GetElement(2).c_str()); + ASSERT_EQ(3U, vec.size()); + EXPECT_STREQ("3rd.OnTestIterationEnd", vec[0].c_str()); + EXPECT_STREQ("2nd.OnTestIterationEnd", vec[1].c_str()); + EXPECT_STREQ("1st.OnTestIterationEnd", vec[2].c_str()); } // Tests that a listener removed from a TestEventListeners list stops receiving @@ -6845,3 +6831,410 @@ TEST(EventListenerTest, RemovingDefaultXmlGeneratorWorks) { EXPECT_FALSE(is_destroyed); delete listener; } + +// Sanity tests to ensure that the alternative, verbose spellings of +// some of the macros work. We don't test them thoroughly as that +// would be quite involved. Since their implementations are +// straightforward, and they are rarely used, we'll just rely on the +// users to tell us when they are broken. +GTEST_TEST(AlternativeNameTest, Works) { // GTEST_TEST is the same as TEST. + GTEST_SUCCEED() << "OK"; // GTEST_SUCCEED is the same as SUCCEED. + + // GTEST_FAIL is the same as FAIL. + EXPECT_FATAL_FAILURE(GTEST_FAIL() << "An expected failure", + "An expected failure"); + + // GTEST_ASSERT_XY is the same as ASSERT_XY. + + GTEST_ASSERT_EQ(0, 0); + EXPECT_FATAL_FAILURE(GTEST_ASSERT_EQ(0, 1) << "An expected failure", + "An expected failure"); + EXPECT_FATAL_FAILURE(GTEST_ASSERT_EQ(1, 0) << "An expected failure", + "An expected failure"); + + GTEST_ASSERT_NE(0, 1); + GTEST_ASSERT_NE(1, 0); + EXPECT_FATAL_FAILURE(GTEST_ASSERT_NE(0, 0) << "An expected failure", + "An expected failure"); + + GTEST_ASSERT_LE(0, 0); + GTEST_ASSERT_LE(0, 1); + EXPECT_FATAL_FAILURE(GTEST_ASSERT_LE(1, 0) << "An expected failure", + "An expected failure"); + + GTEST_ASSERT_LT(0, 1); + EXPECT_FATAL_FAILURE(GTEST_ASSERT_LT(0, 0) << "An expected failure", + "An expected failure"); + EXPECT_FATAL_FAILURE(GTEST_ASSERT_LT(1, 0) << "An expected failure", + "An expected failure"); + + GTEST_ASSERT_GE(0, 0); + GTEST_ASSERT_GE(1, 0); + EXPECT_FATAL_FAILURE(GTEST_ASSERT_GE(0, 1) << "An expected failure", + "An expected failure"); + + GTEST_ASSERT_GT(1, 0); + EXPECT_FATAL_FAILURE(GTEST_ASSERT_GT(0, 1) << "An expected failure", + "An expected failure"); + EXPECT_FATAL_FAILURE(GTEST_ASSERT_GT(1, 1) << "An expected failure", + "An expected failure"); +} + +// Tests for internal utilities necessary for implementation of the universal +// printing. +// TODO(vladl@google.com): Find a better home for them. + +class ConversionHelperBase {}; +class ConversionHelperDerived : public ConversionHelperBase {}; + +// Tests that IsAProtocolMessage::value is a compile-time constant. +TEST(IsAProtocolMessageTest, ValueIsCompileTimeConstant) { + GTEST_COMPILE_ASSERT_(IsAProtocolMessage::value, + const_true); + GTEST_COMPILE_ASSERT_(!IsAProtocolMessage::value, const_false); +} + +// Tests that IsAProtocolMessage::value is true when T is +// proto2::Message or a sub-class of it. +TEST(IsAProtocolMessageTest, ValueIsTrueWhenTypeIsAProtocolMessage) { + EXPECT_TRUE(IsAProtocolMessage< ::proto2::Message>::value); + EXPECT_TRUE(IsAProtocolMessage::value); +} + +// Tests that IsAProtocolMessage::value is false when T is neither +// ProtocolMessage nor a sub-class of it. +TEST(IsAProtocolMessageTest, ValueIsFalseWhenTypeIsNotAProtocolMessage) { + EXPECT_FALSE(IsAProtocolMessage::value); + EXPECT_FALSE(IsAProtocolMessage::value); +} + +// Tests that CompileAssertTypesEqual compiles when the type arguments are +// equal. +TEST(CompileAssertTypesEqual, CompilesWhenTypesAreEqual) { + CompileAssertTypesEqual(); + CompileAssertTypesEqual(); +} + +// Tests that RemoveReference does not affect non-reference types. +TEST(RemoveReferenceTest, DoesNotAffectNonReferenceType) { + CompileAssertTypesEqual::type>(); + CompileAssertTypesEqual::type>(); +} + +// Tests that RemoveReference removes reference from reference types. +TEST(RemoveReferenceTest, RemovesReference) { + CompileAssertTypesEqual::type>(); + CompileAssertTypesEqual::type>(); +} + +// Tests GTEST_REMOVE_REFERENCE_. + +template +void TestGTestRemoveReference() { + CompileAssertTypesEqual(); +} + +TEST(RemoveReferenceTest, MacroVersion) { + TestGTestRemoveReference(); + TestGTestRemoveReference(); +} + + +// Tests that RemoveConst does not affect non-const types. +TEST(RemoveConstTest, DoesNotAffectNonConstType) { + CompileAssertTypesEqual::type>(); + CompileAssertTypesEqual::type>(); +} + +// Tests that RemoveConst removes const from const types. +TEST(RemoveConstTest, RemovesConst) { + CompileAssertTypesEqual::type>(); + CompileAssertTypesEqual::type>(); + CompileAssertTypesEqual::type>(); +} + +// Tests GTEST_REMOVE_CONST_. + +template +void TestGTestRemoveConst() { + CompileAssertTypesEqual(); +} + +TEST(RemoveConstTest, MacroVersion) { + TestGTestRemoveConst(); + TestGTestRemoveConst(); + TestGTestRemoveConst(); +} + +// Tests GTEST_REMOVE_REFERENCE_AND_CONST_. + +template +void TestGTestRemoveReferenceAndConst() { + CompileAssertTypesEqual(); +} + +TEST(RemoveReferenceToConstTest, Works) { + TestGTestRemoveReferenceAndConst(); + TestGTestRemoveReferenceAndConst(); + TestGTestRemoveReferenceAndConst(); + TestGTestRemoveReferenceAndConst(); + TestGTestRemoveReferenceAndConst(); +} + +// Tests that AddReference does not affect reference types. +TEST(AddReferenceTest, DoesNotAffectReferenceType) { + CompileAssertTypesEqual::type>(); + CompileAssertTypesEqual::type>(); +} + +// Tests that AddReference adds reference to non-reference types. +TEST(AddReferenceTest, AddsReference) { + CompileAssertTypesEqual::type>(); + CompileAssertTypesEqual::type>(); +} + +// Tests GTEST_ADD_REFERENCE_. + +template +void TestGTestAddReference() { + CompileAssertTypesEqual(); +} + +TEST(AddReferenceTest, MacroVersion) { + TestGTestAddReference(); + TestGTestAddReference(); +} + +// Tests GTEST_REFERENCE_TO_CONST_. + +template +void TestGTestReferenceToConst() { + CompileAssertTypesEqual(); +} + +TEST(GTestReferenceToConstTest, Works) { + TestGTestReferenceToConst(); + TestGTestReferenceToConst(); + TestGTestReferenceToConst(); + TestGTestReferenceToConst(); +} + +// Tests that ImplicitlyConvertible::value is a compile-time constant. +TEST(ImplicitlyConvertibleTest, ValueIsCompileTimeConstant) { + GTEST_COMPILE_ASSERT_((ImplicitlyConvertible::value), const_true); + GTEST_COMPILE_ASSERT_((!ImplicitlyConvertible::value), + const_false); +} + +// Tests that ImplicitlyConvertible::value is true when T1 can +// be implicitly converted to T2. +TEST(ImplicitlyConvertibleTest, ValueIsTrueWhenConvertible) { + EXPECT_TRUE((ImplicitlyConvertible::value)); + EXPECT_TRUE((ImplicitlyConvertible::value)); + EXPECT_TRUE((ImplicitlyConvertible::value)); + EXPECT_TRUE((ImplicitlyConvertible::value)); + EXPECT_TRUE((ImplicitlyConvertible::value)); + EXPECT_TRUE((ImplicitlyConvertible::value)); +} + +// Tests that ImplicitlyConvertible::value is false when T1 +// cannot be implicitly converted to T2. +TEST(ImplicitlyConvertibleTest, ValueIsFalseWhenNotConvertible) { + EXPECT_FALSE((ImplicitlyConvertible::value)); + EXPECT_FALSE((ImplicitlyConvertible::value)); + EXPECT_FALSE((ImplicitlyConvertible::value)); + EXPECT_FALSE((ImplicitlyConvertible::value)); +} + +// Tests IsContainerTest. + +class NonContainer {}; + +TEST(IsContainerTestTest, WorksForNonContainer) { + EXPECT_EQ(sizeof(IsNotContainer), sizeof(IsContainerTest(0))); + EXPECT_EQ(sizeof(IsNotContainer), sizeof(IsContainerTest(0))); + EXPECT_EQ(sizeof(IsNotContainer), sizeof(IsContainerTest(0))); +} + +TEST(IsContainerTestTest, WorksForContainer) { + EXPECT_EQ(sizeof(IsContainer), + sizeof(IsContainerTest >(0))); + EXPECT_EQ(sizeof(IsContainer), + sizeof(IsContainerTest >(0))); +} + +// Tests ArrayEq(). + +TEST(ArrayEqTest, WorksForDegeneratedArrays) { + EXPECT_TRUE(ArrayEq(5, 5L)); + EXPECT_FALSE(ArrayEq('a', 0)); +} + +TEST(ArrayEqTest, WorksForOneDimensionalArrays) { + // Note that a and b are distinct but compatible types. + const int a[] = { 0, 1 }; + long b[] = { 0, 1 }; + EXPECT_TRUE(ArrayEq(a, b)); + EXPECT_TRUE(ArrayEq(a, 2, b)); + + b[0] = 2; + EXPECT_FALSE(ArrayEq(a, b)); + EXPECT_FALSE(ArrayEq(a, 1, b)); +} + +TEST(ArrayEqTest, WorksForTwoDimensionalArrays) { + const char a[][3] = { "hi", "lo" }; + const char b[][3] = { "hi", "lo" }; + const char c[][3] = { "hi", "li" }; + + EXPECT_TRUE(ArrayEq(a, b)); + EXPECT_TRUE(ArrayEq(a, 2, b)); + + EXPECT_FALSE(ArrayEq(a, c)); + EXPECT_FALSE(ArrayEq(a, 2, c)); +} + +// Tests ArrayAwareFind(). + +TEST(ArrayAwareFindTest, WorksForOneDimensionalArray) { + const char a[] = "hello"; + EXPECT_EQ(a + 4, ArrayAwareFind(a, a + 5, 'o')); + EXPECT_EQ(a + 5, ArrayAwareFind(a, a + 5, 'x')); +} + +TEST(ArrayAwareFindTest, WorksForTwoDimensionalArray) { + int a[][2] = { { 0, 1 }, { 2, 3 }, { 4, 5 } }; + const int b[2] = { 2, 3 }; + EXPECT_EQ(a + 1, ArrayAwareFind(a, a + 3, b)); + + const int c[2] = { 6, 7 }; + EXPECT_EQ(a + 3, ArrayAwareFind(a, a + 3, c)); +} + +// Tests CopyArray(). + +TEST(CopyArrayTest, WorksForDegeneratedArrays) { + int n = 0; + CopyArray('a', &n); + EXPECT_EQ('a', n); +} + +TEST(CopyArrayTest, WorksForOneDimensionalArrays) { + const char a[3] = "hi"; + int b[3]; +#ifndef __BORLANDC__ // C++Builder cannot compile some array size deductions. + CopyArray(a, &b); + EXPECT_TRUE(ArrayEq(a, b)); +#endif + + int c[3]; + CopyArray(a, 3, c); + EXPECT_TRUE(ArrayEq(a, c)); +} + +TEST(CopyArrayTest, WorksForTwoDimensionalArrays) { + const int a[2][3] = { { 0, 1, 2 }, { 3, 4, 5 } }; + int b[2][3]; +#ifndef __BORLANDC__ // C++Builder cannot compile some array size deductions. + CopyArray(a, &b); + EXPECT_TRUE(ArrayEq(a, b)); +#endif + + int c[2][3]; + CopyArray(a, 2, c); + EXPECT_TRUE(ArrayEq(a, c)); +} + +// Tests NativeArray. + +TEST(NativeArrayTest, ConstructorFromArrayWorks) { + const int a[3] = { 0, 1, 2 }; + NativeArray na(a, 3, kReference); + EXPECT_EQ(3U, na.size()); + EXPECT_EQ(a, na.begin()); +} + +TEST(NativeArrayTest, CreatesAndDeletesCopyOfArrayWhenAskedTo) { + typedef int Array[2]; + Array* a = new Array[1]; + (*a)[0] = 0; + (*a)[1] = 1; + NativeArray na(*a, 2, kCopy); + EXPECT_NE(*a, na.begin()); + delete[] a; + EXPECT_EQ(0, na.begin()[0]); + EXPECT_EQ(1, na.begin()[1]); + + // We rely on the heap checker to verify that na deletes the copy of + // array. +} + +TEST(NativeArrayTest, TypeMembersAreCorrect) { + StaticAssertTypeEq::value_type>(); + StaticAssertTypeEq::value_type>(); + + StaticAssertTypeEq::const_iterator>(); + StaticAssertTypeEq::const_iterator>(); +} + +TEST(NativeArrayTest, MethodsWork) { + const int a[3] = { 0, 1, 2 }; + NativeArray na(a, 3, kCopy); + ASSERT_EQ(3U, na.size()); + EXPECT_EQ(3, na.end() - na.begin()); + + NativeArray::const_iterator it = na.begin(); + EXPECT_EQ(0, *it); + ++it; + EXPECT_EQ(1, *it); + it++; + EXPECT_EQ(2, *it); + ++it; + EXPECT_EQ(na.end(), it); + + EXPECT_TRUE(na == na); + + NativeArray na2(a, 3, kReference); + EXPECT_TRUE(na == na2); + + const int b1[3] = { 0, 1, 1 }; + const int b2[4] = { 0, 1, 2, 3 }; + EXPECT_FALSE(na == NativeArray(b1, 3, kReference)); + EXPECT_FALSE(na == NativeArray(b2, 4, kCopy)); +} + +TEST(NativeArrayTest, WorksForTwoDimensionalArray) { + const char a[2][3] = { "hi", "lo" }; + NativeArray na(a, 2, kReference); + ASSERT_EQ(2U, na.size()); + EXPECT_EQ(a, na.begin()); +} + +// Tests SkipPrefix(). + +TEST(SkipPrefixTest, SkipsWhenPrefixMatches) { + const char* const str = "hello"; + + const char* p = str; + EXPECT_TRUE(SkipPrefix("", &p)); + EXPECT_EQ(str, p); + + p = str; + EXPECT_TRUE(SkipPrefix("hell", &p)); + EXPECT_EQ(str + 4, p); +} + +TEST(SkipPrefixTest, DoesNotSkipWhenPrefixDoesNotMatch) { + const char* const str = "world"; + + const char* p = str; + EXPECT_FALSE(SkipPrefix("W", &p)); + EXPECT_EQ(str, p); + + p = str; + EXPECT_FALSE(SkipPrefix("world!", &p)); + EXPECT_EQ(str, p); +} diff --git a/cpp/thirdparty/protobuf-2.3.0/gtest/test/gtest_xml_outfile1_test_.cc b/cpp/thirdparty/protobuf-2.5.0/gtest/test/gtest_xml_outfile1_test_.cc similarity index 98% rename from cpp/thirdparty/protobuf-2.3.0/gtest/test/gtest_xml_outfile1_test_.cc rename to cpp/thirdparty/protobuf-2.5.0/gtest/test/gtest_xml_outfile1_test_.cc index 664baad2a..531ced49d 100644 --- a/cpp/thirdparty/protobuf-2.3.0/gtest/test/gtest_xml_outfile1_test_.cc +++ b/cpp/thirdparty/protobuf-2.5.0/gtest/test/gtest_xml_outfile1_test_.cc @@ -32,7 +32,7 @@ // gtest_xml_outfile1_test_ writes some xml via TestProperty used by // gtest_xml_outfiles_test.py -#include +#include "gtest/gtest.h" class PropertyOne : public testing::Test { protected: diff --git a/cpp/thirdparty/protobuf-2.3.0/gtest/test/gtest_xml_outfile2_test_.cc b/cpp/thirdparty/protobuf-2.5.0/gtest/test/gtest_xml_outfile2_test_.cc similarity index 98% rename from cpp/thirdparty/protobuf-2.3.0/gtest/test/gtest_xml_outfile2_test_.cc rename to cpp/thirdparty/protobuf-2.5.0/gtest/test/gtest_xml_outfile2_test_.cc index 3411a3d38..7b400b276 100644 --- a/cpp/thirdparty/protobuf-2.3.0/gtest/test/gtest_xml_outfile2_test_.cc +++ b/cpp/thirdparty/protobuf-2.5.0/gtest/test/gtest_xml_outfile2_test_.cc @@ -32,7 +32,7 @@ // gtest_xml_outfile2_test_ writes some xml via TestProperty used by // gtest_xml_outfiles_test.py -#include +#include "gtest/gtest.h" class PropertyTwo : public testing::Test { protected: diff --git a/cpp/thirdparty/protobuf-2.3.0/gtest/test/gtest_xml_outfiles_test.py b/cpp/thirdparty/protobuf-2.5.0/gtest/test/gtest_xml_outfiles_test.py similarity index 98% rename from cpp/thirdparty/protobuf-2.3.0/gtest/test/gtest_xml_outfiles_test.py rename to cpp/thirdparty/protobuf-2.5.0/gtest/test/gtest_xml_outfiles_test.py index 0fe947f08..524e437e6 100755 --- a/cpp/thirdparty/protobuf-2.3.0/gtest/test/gtest_xml_outfiles_test.py +++ b/cpp/thirdparty/protobuf-2.5.0/gtest/test/gtest_xml_outfiles_test.py @@ -45,7 +45,7 @@ GTEST_OUTPUT_1_TEST = "gtest_xml_outfile1_test_" GTEST_OUTPUT_2_TEST = "gtest_xml_outfile2_test_" EXPECTED_XML_1 = """ - + @@ -53,7 +53,7 @@ EXPECTED_XML_1 = """ """ EXPECTED_XML_2 = """ - + diff --git a/cpp/thirdparty/protobuf-2.3.0/gtest/test/gtest_xml_output_unittest.py b/cpp/thirdparty/protobuf-2.5.0/gtest/test/gtest_xml_output_unittest.py similarity index 57% rename from cpp/thirdparty/protobuf-2.3.0/gtest/test/gtest_xml_output_unittest.py rename to cpp/thirdparty/protobuf-2.5.0/gtest/test/gtest_xml_output_unittest.py index 6d44929ca..1bcd4187e 100755 --- a/cpp/thirdparty/protobuf-2.3.0/gtest/test/gtest_xml_output_unittest.py +++ b/cpp/thirdparty/protobuf-2.5.0/gtest/test/gtest_xml_output_unittest.py @@ -33,8 +33,10 @@ __author__ = 'eefacm@gmail.com (Sean Mcafee)' +import datetime import errno import os +import re import sys from xml.dom import minidom, Node @@ -42,6 +44,7 @@ import gtest_test_utils import gtest_xml_test_utils +GTEST_LIST_TESTS_FLAG = '--gtest_list_tests' GTEST_OUTPUT_FLAG = "--gtest_output" GTEST_DEFAULT_OUTPUT_FILE = "test_detail.xml" GTEST_PROGRAM_NAME = "gtest_xml_output_unittest_" @@ -49,18 +52,18 @@ GTEST_PROGRAM_NAME = "gtest_xml_output_unittest_" SUPPORTS_STACK_TRACES = False if SUPPORTS_STACK_TRACES: - STACK_TRACE_TEMPLATE = "\nStack trace:\n*" + STACK_TRACE_TEMPLATE = '\nStack trace:\n*' else: - STACK_TRACE_TEMPLATE = "" + STACK_TRACE_TEMPLATE = '' EXPECTED_NON_EMPTY_XML = """ - + - @@ -68,10 +71,10 @@ Expected: 1%(stack)s]]> - - @@ -79,14 +82,14 @@ Expected: 2%(stack)s]]> - ]]>%(stack)s]]> - @@ -105,34 +108,85 @@ Invalid characters in brackets []%(stack)s]]> + + + + + + + + + + + + + + + + + + """ % {'stack': STACK_TRACE_TEMPLATE} EXPECTED_EMPTY_XML = """ - + """ +GTEST_PROGRAM_PATH = gtest_test_utils.GetTestExecutablePath(GTEST_PROGRAM_NAME) + +SUPPORTS_TYPED_TESTS = 'TypedTest' in gtest_test_utils.Subprocess( + [GTEST_PROGRAM_PATH, GTEST_LIST_TESTS_FLAG], capture_stderr=False).output + class GTestXMLOutputUnitTest(gtest_xml_test_utils.GTestXMLTestCase): """ Unit test for Google Test's XML output functionality. """ - def testNonEmptyXmlOutput(self): - """ - Runs a test program that generates a non-empty XML output, and - tests that the XML output is expected. - """ - self._TestXmlOutput(GTEST_PROGRAM_NAME, EXPECTED_NON_EMPTY_XML, 1) + # This test currently breaks on platforms that do not support typed and + # type-parameterized tests, so we don't run it under them. + if SUPPORTS_TYPED_TESTS: + def testNonEmptyXmlOutput(self): + """ + Runs a test program that generates a non-empty XML output, and + tests that the XML output is expected. + """ + self._TestXmlOutput(GTEST_PROGRAM_NAME, EXPECTED_NON_EMPTY_XML, 1) def testEmptyXmlOutput(self): - """ + """Verifies XML output for a Google Test binary without actual tests. + Runs a test program that generates an empty XML output, and tests that the XML output is expected. """ - self._TestXmlOutput("gtest_no_test_unittest", - EXPECTED_EMPTY_XML, 0) + self._TestXmlOutput('gtest_no_test_unittest', EXPECTED_EMPTY_XML, 0) + + def testTimestampValue(self): + """Checks whether the timestamp attribute in the XML output is valid. + + Runs a test program that generates an empty XML output, and checks if + the timestamp attribute in the testsuites tag is valid. + """ + actual = self._GetXmlOutput('gtest_no_test_unittest', 0) + date_time_str = actual.documentElement.getAttributeNode('timestamp').value + # datetime.strptime() is only available in Python 2.5+ so we have to + # parse the expected datetime manually. + match = re.match(r'(\d+)-(\d\d)-(\d\d)T(\d\d):(\d\d):(\d\d)', date_time_str) + self.assertTrue( + re.match, + 'XML datettime string %s has incorrect format' % date_time_str) + date_time_from_xml = datetime.datetime( + year=int(match.group(1)), month=int(match.group(2)), + day=int(match.group(3)), hour=int(match.group(4)), + minute=int(match.group(5)), second=int(match.group(6))) + + time_delta = abs(datetime.datetime.now() - date_time_from_xml) + # timestamp value should be near the current local time + self.assertTrue(time_delta < datetime.timedelta(seconds=600), + 'time_delta is %s' % time_delta) + actual.unlink() def testDefaultOutputFile(self): """ @@ -142,7 +196,7 @@ class GTestXMLOutputUnitTest(gtest_xml_test_utils.GTestXMLTestCase): output_file = os.path.join(gtest_test_utils.GetTempDir(), GTEST_DEFAULT_OUTPUT_FILE) gtest_prog_path = gtest_test_utils.GetTestExecutablePath( - "gtest_no_test_unittest") + 'gtest_no_test_unittest') try: os.remove(output_file) except OSError, e: @@ -150,7 +204,7 @@ class GTestXMLOutputUnitTest(gtest_xml_test_utils.GTestXMLTestCase): raise p = gtest_test_utils.Subprocess( - [gtest_prog_path, "%s=xml" % GTEST_OUTPUT_FLAG], + [gtest_prog_path, '%s=xml' % GTEST_OUTPUT_FLAG], working_dir=gtest_test_utils.GetTempDir()) self.assert_(p.exited) self.assertEquals(0, p.exit_code) @@ -163,60 +217,66 @@ class GTestXMLOutputUnitTest(gtest_xml_test_utils.GTestXMLTestCase): """ xml_path = os.path.join(gtest_test_utils.GetTempDir(), - GTEST_PROGRAM_NAME + "out.xml") + GTEST_PROGRAM_NAME + 'out.xml') if os.path.isfile(xml_path): os.remove(xml_path) - gtest_prog_path = gtest_test_utils.GetTestExecutablePath(GTEST_PROGRAM_NAME) - - command = [gtest_prog_path, - "%s=xml:%s" % (GTEST_OUTPUT_FLAG, xml_path), - "--shut_down_xml"] + command = [GTEST_PROGRAM_PATH, + '%s=xml:%s' % (GTEST_OUTPUT_FLAG, xml_path), + '--shut_down_xml'] p = gtest_test_utils.Subprocess(command) if p.terminated_by_signal: - self.assert_(False, - "%s was killed by signal %d" % (gtest_prog_name, p.signal)) + # p.signal is avalable only if p.terminated_by_signal is True. + self.assertFalse( + p.terminated_by_signal, + '%s was killed by signal %d' % (GTEST_PROGRAM_NAME, p.signal)) else: self.assert_(p.exited) self.assertEquals(1, p.exit_code, "'%s' exited with code %s, which doesn't match " - "the expected exit code %s." + 'the expected exit code %s.' % (command, p.exit_code, 1)) self.assert_(not os.path.isfile(xml_path)) - - def _TestXmlOutput(self, gtest_prog_name, expected_xml, expected_exit_code): + def _GetXmlOutput(self, gtest_prog_name, expected_exit_code): """ - Asserts that the XML document generated by running the program - gtest_prog_name matches expected_xml, a string containing another - XML document. Furthermore, the program's exit code must be - expected_exit_code. + Returns the xml output generated by running the program gtest_prog_name. + Furthermore, the program's exit code must be expected_exit_code. """ xml_path = os.path.join(gtest_test_utils.GetTempDir(), - gtest_prog_name + "out.xml") + gtest_prog_name + 'out.xml') gtest_prog_path = gtest_test_utils.GetTestExecutablePath(gtest_prog_name) - command = [gtest_prog_path, "%s=xml:%s" % (GTEST_OUTPUT_FLAG, xml_path)] + command = [gtest_prog_path, '%s=xml:%s' % (GTEST_OUTPUT_FLAG, xml_path)] p = gtest_test_utils.Subprocess(command) if p.terminated_by_signal: self.assert_(False, - "%s was killed by signal %d" % (gtest_prog_name, p.signal)) + '%s was killed by signal %d' % (gtest_prog_name, p.signal)) else: self.assert_(p.exited) self.assertEquals(expected_exit_code, p.exit_code, "'%s' exited with code %s, which doesn't match " - "the expected exit code %s." + 'the expected exit code %s.' % (command, p.exit_code, expected_exit_code)) + actual = minidom.parse(xml_path) + return actual + + def _TestXmlOutput(self, gtest_prog_name, expected_xml, expected_exit_code): + """ + Asserts that the XML document generated by running the program + gtest_prog_name matches expected_xml, a string containing another + XML document. Furthermore, the program's exit code must be + expected_exit_code. + """ + actual = self._GetXmlOutput(gtest_prog_name, expected_exit_code) expected = minidom.parseString(expected_xml) - actual = minidom.parse(xml_path) self.NormalizeXml(actual.documentElement) self.AssertEquivalentNodes(expected.documentElement, actual.documentElement) expected.unlink() - actual .unlink() - + actual.unlink() if __name__ == '__main__': diff --git a/cpp/thirdparty/protobuf-2.3.0/gtest/test/gtest_xml_output_unittest_.cc b/cpp/thirdparty/protobuf-2.5.0/gtest/test/gtest_xml_output_unittest_.cc similarity index 73% rename from cpp/thirdparty/protobuf-2.3.0/gtest/test/gtest_xml_output_unittest_.cc rename to cpp/thirdparty/protobuf-2.5.0/gtest/test/gtest_xml_output_unittest_.cc index fc07ef46b..bf0c871bb 100644 --- a/cpp/thirdparty/protobuf-2.3.0/gtest/test/gtest_xml_output_unittest_.cc +++ b/cpp/thirdparty/protobuf-2.5.0/gtest/test/gtest_xml_output_unittest_.cc @@ -38,13 +38,16 @@ // This program will be invoked from a Python unit test. Don't run it // directly. -#include +#include "gtest/gtest.h" using ::testing::InitGoogleTest; using ::testing::TestEventListeners; +using ::testing::TestWithParam; using ::testing::UnitTest; +using ::testing::Test; +using ::testing::Values; -class SuccessfulTest : public testing::Test { +class SuccessfulTest : public Test { }; TEST_F(SuccessfulTest, Succeeds) { @@ -52,14 +55,14 @@ TEST_F(SuccessfulTest, Succeeds) { ASSERT_EQ(1, 1); } -class FailedTest : public testing::Test { +class FailedTest : public Test { }; TEST_F(FailedTest, Fails) { ASSERT_EQ(1, 2); } -class DisabledTest : public testing::Test { +class DisabledTest : public Test { }; TEST_F(DisabledTest, DISABLED_test_not_run) { @@ -91,7 +94,7 @@ TEST(InvalidCharactersTest, InvalidCharactersInMessage) { FAIL() << "Invalid characters in brackets [\x1\x2]"; } -class PropertyRecordingTest : public testing::Test { +class PropertyRecordingTest : public Test { }; TEST_F(PropertyRecordingTest, OneProperty) { @@ -134,6 +137,35 @@ TEST(NoFixtureTest, ExternalUtilityThatCallsRecordStringValuedProperty) { ExternalUtilityThatCallsRecordProperty("key_for_utility_string", "1"); } +// Verifies that the test parameter value is output in the 'value_param' +// XML attribute for value-parameterized tests. +class ValueParamTest : public TestWithParam {}; +TEST_P(ValueParamTest, HasValueParamAttribute) {} +TEST_P(ValueParamTest, AnotherTestThatHasValueParamAttribute) {} +INSTANTIATE_TEST_CASE_P(Single, ValueParamTest, Values(33, 42)); + +#if GTEST_HAS_TYPED_TEST +// Verifies that the type parameter name is output in the 'type_param' +// XML attribute for typed tests. +template class TypedTest : public Test {}; +typedef testing::Types TypedTestTypes; +TYPED_TEST_CASE(TypedTest, TypedTestTypes); +TYPED_TEST(TypedTest, HasTypeParamAttribute) {} +#endif + +#if GTEST_HAS_TYPED_TEST_P +// Verifies that the type parameter name is output in the 'type_param' +// XML attribute for type-parameterized tests. +template class TypeParameterizedTestCase : public Test {}; +TYPED_TEST_CASE_P(TypeParameterizedTestCase); +TYPED_TEST_P(TypeParameterizedTestCase, HasTypeParamAttribute) {} +REGISTER_TYPED_TEST_CASE_P(TypeParameterizedTestCase, HasTypeParamAttribute); +typedef testing::Types TypeParameterizedTestCaseTypes; +INSTANTIATE_TYPED_TEST_CASE_P(Single, + TypeParameterizedTestCase, + TypeParameterizedTestCaseTypes); +#endif + int main(int argc, char** argv) { InitGoogleTest(&argc, argv); diff --git a/cpp/thirdparty/protobuf-2.3.0/gtest/test/gtest_xml_test_utils.py b/cpp/thirdparty/protobuf-2.5.0/gtest/test/gtest_xml_test_utils.py similarity index 70% rename from cpp/thirdparty/protobuf-2.3.0/gtest/test/gtest_xml_test_utils.py rename to cpp/thirdparty/protobuf-2.5.0/gtest/test/gtest_xml_test_utils.py index c83c3b7ea..0e5a1089d 100755 --- a/cpp/thirdparty/protobuf-2.3.0/gtest/test/gtest_xml_test_utils.py +++ b/cpp/thirdparty/protobuf-2.5.0/gtest/test/gtest_xml_test_utils.py @@ -39,8 +39,8 @@ from xml.dom import minidom, Node import gtest_test_utils -GTEST_OUTPUT_FLAG = "--gtest_output" -GTEST_DEFAULT_OUTPUT_FILE = "test_detail.xml" +GTEST_OUTPUT_FLAG = '--gtest_output' +GTEST_DEFAULT_OUTPUT_FILE = 'test_detail.xml' class GTestXMLTestCase(gtest_test_utils.TestCase): """ @@ -58,8 +58,9 @@ class GTestXMLTestCase(gtest_test_utils.TestCase): * It has the same tag name as expected_node. * It has the same set of attributes as expected_node, each with the same value as the corresponding attribute of expected_node. - An exception is any attribute named "time", which needs only be - convertible to a floating-point number. + Exceptions are any attribute named "time", which needs only be + convertible to a floating-point number and any attribute named + "type_param" which only has to be non-empty. * It has an equivalent set of child nodes (including elements and CDATA sections) as expected_node. Note that we ignore the order of the children as they are not guaranteed to be in any @@ -79,23 +80,23 @@ class GTestXMLTestCase(gtest_test_utils.TestCase): actual_attributes = actual_node .attributes self.assertEquals( expected_attributes.length, actual_attributes.length, - "attribute numbers differ in element " + actual_node.tagName) + 'attribute numbers differ in element ' + actual_node.tagName) for i in range(expected_attributes.length): expected_attr = expected_attributes.item(i) actual_attr = actual_attributes.get(expected_attr.name) self.assert_( actual_attr is not None, - "expected attribute %s not found in element %s" % + 'expected attribute %s not found in element %s' % (expected_attr.name, actual_node.tagName)) self.assertEquals(expected_attr.value, actual_attr.value, - " values of attribute %s in element %s differ" % + ' values of attribute %s in element %s differ' % (expected_attr.name, actual_node.tagName)) expected_children = self._GetChildren(expected_node) actual_children = self._GetChildren(actual_node) self.assertEquals( len(expected_children), len(actual_children), - "number of child elements differ in element " + actual_node.tagName) + 'number of child elements differ in element ' + actual_node.tagName) for child_id, child in expected_children.iteritems(): self.assert_(child_id in actual_children, '<%s> is not in <%s> (in element %s)' % @@ -103,10 +104,10 @@ class GTestXMLTestCase(gtest_test_utils.TestCase): self.AssertEquivalentNodes(child, actual_children[child_id]) identifying_attribute = { - "testsuites": "name", - "testsuite": "name", - "testcase": "name", - "failure": "message", + 'testsuites': 'name', + 'testsuite': 'name', + 'testcase': 'name', + 'failure': 'message', } def _GetChildren(self, element): @@ -126,20 +127,20 @@ class GTestXMLTestCase(gtest_test_utils.TestCase): for child in element.childNodes: if child.nodeType == Node.ELEMENT_NODE: self.assert_(child.tagName in self.identifying_attribute, - "Encountered unknown element <%s>" % child.tagName) + 'Encountered unknown element <%s>' % child.tagName) childID = child.getAttribute(self.identifying_attribute[child.tagName]) self.assert_(childID not in children) children[childID] = child elif child.nodeType in [Node.TEXT_NODE, Node.CDATA_SECTION_NODE]: - if "detail" not in children: + if 'detail' not in children: if (child.nodeType == Node.CDATA_SECTION_NODE or not child.nodeValue.isspace()): - children["detail"] = child.ownerDocument.createCDATASection( + children['detail'] = child.ownerDocument.createCDATASection( child.nodeValue) else: - children["detail"].nodeValue += child.nodeValue + children['detail'].nodeValue += child.nodeValue else: - self.fail("Encountered unexpected node type %d" % child.nodeType) + self.fail('Encountered unexpected node type %d' % child.nodeType) return children def NormalizeXml(self, element): @@ -150,23 +151,40 @@ class GTestXMLTestCase(gtest_test_utils.TestCase): * The "time" attribute of , and elements is replaced with a single asterisk, if it contains only digit characters. - * The line number reported in the first line of the "message" - attribute of elements is replaced with a single asterisk. + * The "timestamp" attribute of elements is replaced with a + single asterisk, if it contains a valid ISO8601 datetime value. + * The "type_param" attribute of elements is replaced with a + single asterisk (if it sn non-empty) as it is the type name returned + by the compiler and is platform dependent. + * The line info reported in the first line of the "message" + attribute and CDATA section of elements is replaced with the + file's basename and a single asterisk for the line number. * The directory names in file paths are removed. * The stack traces are removed. """ - if element.tagName in ("testsuites", "testsuite", "testcase"): - time = element.getAttributeNode("time") - time.value = re.sub(r"^\d+(\.\d+)?$", "*", time.value) - elif element.tagName == "failure": + if element.tagName == 'testsuites': + timestamp = element.getAttributeNode('timestamp') + timestamp.value = re.sub(r'^\d{4}-\d\d-\d\dT\d\d:\d\d:\d\d$', + '*', timestamp.value) + if element.tagName in ('testsuites', 'testsuite', 'testcase'): + time = element.getAttributeNode('time') + time.value = re.sub(r'^\d+(\.\d+)?$', '*', time.value) + type_param = element.getAttributeNode('type_param') + if type_param and type_param.value: + type_param.value = '*' + elif element.tagName == 'failure': + source_line_pat = r'^.*[/\\](.*:)\d+\n' + # Replaces the source line information with a normalized form. + message = element.getAttributeNode('message') + message.value = re.sub(source_line_pat, '\\1*\n', message.value) for child in element.childNodes: if child.nodeType == Node.CDATA_SECTION_NODE: - # Removes the source line number. - cdata = re.sub(r"^.*[/\\](.*:)\d+\n", "\\1*\n", child.nodeValue) + # Replaces the source line information with a normalized form. + cdata = re.sub(source_line_pat, '\\1*\n', child.nodeValue) # Removes the actual stack trace. - child.nodeValue = re.sub(r"\nStack trace:\n(.|\n)*", - "", cdata) + child.nodeValue = re.sub(r'\nStack trace:\n(.|\n)*', + '', cdata) for child in element.childNodes: if child.nodeType == Node.ELEMENT_NODE: self.NormalizeXml(child) diff --git a/cpp/thirdparty/protobuf-2.3.0/gtest/test/production.cc b/cpp/thirdparty/protobuf-2.5.0/gtest/test/production.cc similarity index 100% rename from cpp/thirdparty/protobuf-2.3.0/gtest/test/production.cc rename to cpp/thirdparty/protobuf-2.5.0/gtest/test/production.cc diff --git a/cpp/thirdparty/protobuf-2.3.0/gtest/test/production.h b/cpp/thirdparty/protobuf-2.5.0/gtest/test/production.h similarity index 96% rename from cpp/thirdparty/protobuf-2.3.0/gtest/test/production.h rename to cpp/thirdparty/protobuf-2.5.0/gtest/test/production.h index 59970da08..98fd5e476 100644 --- a/cpp/thirdparty/protobuf-2.3.0/gtest/test/production.h +++ b/cpp/thirdparty/protobuf-2.5.0/gtest/test/production.h @@ -34,7 +34,7 @@ #ifndef GTEST_TEST_PRODUCTION_H_ #define GTEST_TEST_PRODUCTION_H_ -#include +#include "gtest/gtest_prod.h" class PrivateCode { public: @@ -48,7 +48,7 @@ class PrivateCode { int x() const { return x_; } private: - void set_x(int x) { x_ = x; } + void set_x(int an_x) { x_ = an_x; } int x_; }; diff --git a/cpp/thirdparty/protobuf-2.3.0/gtest/xcode/Config/DebugProject.xcconfig b/cpp/thirdparty/protobuf-2.5.0/gtest/xcode/Config/DebugProject.xcconfig similarity index 100% rename from cpp/thirdparty/protobuf-2.3.0/gtest/xcode/Config/DebugProject.xcconfig rename to cpp/thirdparty/protobuf-2.5.0/gtest/xcode/Config/DebugProject.xcconfig diff --git a/cpp/thirdparty/protobuf-2.3.0/gtest/xcode/Config/FrameworkTarget.xcconfig b/cpp/thirdparty/protobuf-2.5.0/gtest/xcode/Config/FrameworkTarget.xcconfig similarity index 100% rename from cpp/thirdparty/protobuf-2.3.0/gtest/xcode/Config/FrameworkTarget.xcconfig rename to cpp/thirdparty/protobuf-2.5.0/gtest/xcode/Config/FrameworkTarget.xcconfig diff --git a/cpp/thirdparty/protobuf-2.3.0/gtest/xcode/Config/General.xcconfig b/cpp/thirdparty/protobuf-2.5.0/gtest/xcode/Config/General.xcconfig similarity index 98% rename from cpp/thirdparty/protobuf-2.3.0/gtest/xcode/Config/General.xcconfig rename to cpp/thirdparty/protobuf-2.5.0/gtest/xcode/Config/General.xcconfig index 9fcada16c..f23e32227 100644 --- a/cpp/thirdparty/protobuf-2.3.0/gtest/xcode/Config/General.xcconfig +++ b/cpp/thirdparty/protobuf-2.5.0/gtest/xcode/Config/General.xcconfig @@ -17,7 +17,7 @@ ZERO_LINK = NO PREBINDING = NO // Strictest warning policy -WARNING_CFLAGS = -Wall -Werror -Wendif-labels -Wnewline-eof -Wno-sign-compare +WARNING_CFLAGS = -Wall -Werror -Wendif-labels -Wnewline-eof -Wno-sign-compare -Wshadow // Work around Xcode bugs by using external strip. See: // http://lists.apple.com/archives/Xcode-users/2006/Feb/msg00050.html diff --git a/cpp/thirdparty/protobuf-2.3.0/gtest/xcode/Config/ReleaseProject.xcconfig b/cpp/thirdparty/protobuf-2.5.0/gtest/xcode/Config/ReleaseProject.xcconfig similarity index 100% rename from cpp/thirdparty/protobuf-2.3.0/gtest/xcode/Config/ReleaseProject.xcconfig rename to cpp/thirdparty/protobuf-2.5.0/gtest/xcode/Config/ReleaseProject.xcconfig diff --git a/cpp/thirdparty/protobuf-2.3.0/gtest/xcode/Config/StaticLibraryTarget.xcconfig b/cpp/thirdparty/protobuf-2.5.0/gtest/xcode/Config/StaticLibraryTarget.xcconfig similarity index 100% rename from cpp/thirdparty/protobuf-2.3.0/gtest/xcode/Config/StaticLibraryTarget.xcconfig rename to cpp/thirdparty/protobuf-2.5.0/gtest/xcode/Config/StaticLibraryTarget.xcconfig diff --git a/cpp/thirdparty/protobuf-2.3.0/gtest/xcode/Config/TestTarget.xcconfig b/cpp/thirdparty/protobuf-2.5.0/gtest/xcode/Config/TestTarget.xcconfig similarity index 100% rename from cpp/thirdparty/protobuf-2.3.0/gtest/xcode/Config/TestTarget.xcconfig rename to cpp/thirdparty/protobuf-2.5.0/gtest/xcode/Config/TestTarget.xcconfig diff --git a/cpp/thirdparty/protobuf-2.3.0/gtest/xcode/Resources/Info.plist b/cpp/thirdparty/protobuf-2.5.0/gtest/xcode/Resources/Info.plist similarity index 100% rename from cpp/thirdparty/protobuf-2.3.0/gtest/xcode/Resources/Info.plist rename to cpp/thirdparty/protobuf-2.5.0/gtest/xcode/Resources/Info.plist diff --git a/cpp/thirdparty/protobuf-2.3.0/gtest/xcode/Samples/FrameworkSample/Info.plist b/cpp/thirdparty/protobuf-2.5.0/gtest/xcode/Samples/FrameworkSample/Info.plist similarity index 100% rename from cpp/thirdparty/protobuf-2.3.0/gtest/xcode/Samples/FrameworkSample/Info.plist rename to cpp/thirdparty/protobuf-2.5.0/gtest/xcode/Samples/FrameworkSample/Info.plist diff --git a/cpp/thirdparty/protobuf-2.3.0/gtest/xcode/Samples/FrameworkSample/WidgetFramework.xcodeproj/project.pbxproj b/cpp/thirdparty/protobuf-2.5.0/gtest/xcode/Samples/FrameworkSample/WidgetFramework.xcodeproj/project.pbxproj similarity index 66% rename from cpp/thirdparty/protobuf-2.3.0/gtest/xcode/Samples/FrameworkSample/WidgetFramework.xcodeproj/project.pbxproj rename to cpp/thirdparty/protobuf-2.5.0/gtest/xcode/Samples/FrameworkSample/WidgetFramework.xcodeproj/project.pbxproj index 824491046..497617eb6 100644 --- a/cpp/thirdparty/protobuf-2.3.0/gtest/xcode/Samples/FrameworkSample/WidgetFramework.xcodeproj/project.pbxproj +++ b/cpp/thirdparty/protobuf-2.5.0/gtest/xcode/Samples/FrameworkSample/WidgetFramework.xcodeproj/project.pbxproj @@ -6,13 +6,40 @@ objectVersion = 42; objects = { +/* Begin PBXAggregateTarget section */ + 4024D162113D7D2400C7059E /* Test */ = { + isa = PBXAggregateTarget; + buildConfigurationList = 4024D169113D7D4600C7059E /* Build configuration list for PBXAggregateTarget "Test" */; + buildPhases = ( + 4024D161113D7D2400C7059E /* ShellScript */, + ); + dependencies = ( + 4024D166113D7D3100C7059E /* PBXTargetDependency */, + ); + name = Test; + productName = TestAndBuild; + }; + 4024D1E9113D83FF00C7059E /* TestAndBuild */ = { + isa = PBXAggregateTarget; + buildConfigurationList = 4024D1F0113D842B00C7059E /* Build configuration list for PBXAggregateTarget "TestAndBuild" */; + buildPhases = ( + ); + dependencies = ( + 4024D1ED113D840900C7059E /* PBXTargetDependency */, + 4024D1EF113D840D00C7059E /* PBXTargetDependency */, + ); + name = TestAndBuild; + productName = TestAndBuild; + }; +/* End PBXAggregateTarget section */ + /* Begin PBXBuildFile section */ 3B7EB1250E5AEE3500C7F239 /* widget.cc in Sources */ = {isa = PBXBuildFile; fileRef = 3B7EB1230E5AEE3500C7F239 /* widget.cc */; }; 3B7EB1260E5AEE3500C7F239 /* widget.h in Headers */ = {isa = PBXBuildFile; fileRef = 3B7EB1240E5AEE3500C7F239 /* widget.h */; settings = {ATTRIBUTES = (Public, ); }; }; 3B7EB1280E5AEE4600C7F239 /* widget_test.cc in Sources */ = {isa = PBXBuildFile; fileRef = 3B7EB1270E5AEE4600C7F239 /* widget_test.cc */; }; 3B7EB1480E5AF3B400C7F239 /* Widget.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 8D07F2C80486CC7A007CD1D0 /* Widget.framework */; }; - 408BEC281046D72200DEF522 /* gtest.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 408BEC271046D72200DEF522 /* gtest.framework */; }; - 408BEC431046D7B300DEF522 /* libgtest_main.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 408BEC421046D7B300DEF522 /* libgtest_main.a */; }; + 4024D188113D7D7800C7059E /* libgtest.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 4024D185113D7D5500C7059E /* libgtest.a */; }; + 4024D189113D7D7A00C7059E /* libgtest_main.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 4024D183113D7D5500C7059E /* libgtest_main.a */; }; /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ @@ -23,6 +50,27 @@ remoteGlobalIDString = 8D07F2BC0486CC7A007CD1D0; remoteInfo = gTestExample; }; + 4024D165113D7D3100C7059E /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 0867D690FE84028FC02AAC07 /* Project object */; + proxyType = 1; + remoteGlobalIDString = 3B07BDE90E3F3F9E00647869; + remoteInfo = WidgetFrameworkTest; + }; + 4024D1EC113D840900C7059E /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 0867D690FE84028FC02AAC07 /* Project object */; + proxyType = 1; + remoteGlobalIDString = 8D07F2BC0486CC7A007CD1D0; + remoteInfo = WidgetFramework; + }; + 4024D1EE113D840D00C7059E /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 0867D690FE84028FC02AAC07 /* Project object */; + proxyType = 1; + remoteGlobalIDString = 4024D162113D7D2400C7059E; + remoteInfo = Test; + }; /* End PBXContainerItemProxy section */ /* Begin PBXFileReference section */ @@ -30,8 +78,9 @@ 3B7EB1230E5AEE3500C7F239 /* widget.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = widget.cc; sourceTree = ""; }; 3B7EB1240E5AEE3500C7F239 /* widget.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = widget.h; sourceTree = ""; }; 3B7EB1270E5AEE4600C7F239 /* widget_test.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = widget_test.cc; sourceTree = ""; }; - 408BEC271046D72200DEF522 /* gtest.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = gtest.framework; path = /Library/Frameworks/gtest.framework; sourceTree = ""; }; - 408BEC421046D7B300DEF522 /* libgtest_main.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libgtest_main.a; path = /Library/Frameworks/gtest.framework/Versions/A/Resources/libgtest_main.a; sourceTree = ""; }; + 4024D183113D7D5500C7059E /* libgtest_main.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libgtest_main.a; path = /usr/local/lib/libgtest_main.a; sourceTree = ""; }; + 4024D185113D7D5500C7059E /* libgtest.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libgtest.a; path = /usr/local/lib/libgtest.a; sourceTree = ""; }; + 4024D1E2113D838200C7059E /* runtests.sh */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.script.sh; path = runtests.sh; sourceTree = ""; }; 8D07F2C70486CC7A007CD1D0 /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist; path = Info.plist; sourceTree = ""; }; 8D07F2C80486CC7A007CD1D0 /* Widget.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Widget.framework; sourceTree = BUILT_PRODUCTS_DIR; }; /* End PBXFileReference section */ @@ -41,9 +90,9 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( + 4024D189113D7D7A00C7059E /* libgtest_main.a in Frameworks */, + 4024D188113D7D7800C7059E /* libgtest.a in Frameworks */, 3B7EB1480E5AF3B400C7F239 /* Widget.framework in Frameworks */, - 408BEC281046D72200DEF522 /* gtest.framework in Frameworks */, - 408BEC431046D7B300DEF522 /* libgtest_main.a in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -69,6 +118,7 @@ 0867D691FE84028FC02AAC07 /* gTestExample */ = { isa = PBXGroup; children = ( + 4024D1E1113D836C00C7059E /* Scripts */, 08FB77ACFE841707C02AAC07 /* Source */, 089C1665FE841158C02AAC07 /* Resources */, 3B07BE350E4094E400647869 /* Test */, @@ -81,8 +131,8 @@ 0867D69AFE84028FC02AAC07 /* External Frameworks and Libraries */ = { isa = PBXGroup; children = ( - 408BEC421046D7B300DEF522 /* libgtest_main.a */, - 408BEC271046D72200DEF522 /* gtest.framework */, + 4024D183113D7D5500C7059E /* libgtest_main.a */, + 4024D185113D7D5500C7059E /* libgtest.a */, ); name = "External Frameworks and Libraries"; sourceTree = ""; @@ -112,6 +162,14 @@ name = Test; sourceTree = ""; }; + 4024D1E1113D836C00C7059E /* Scripts */ = { + isa = PBXGroup; + children = ( + 4024D1E2113D838200C7059E /* runtests.sh */, + ); + name = Scripts; + sourceTree = ""; + }; /* End PBXGroup section */ /* Begin PBXHeadersBuildPhase section */ @@ -178,6 +236,8 @@ targets = ( 8D07F2BC0486CC7A007CD1D0 /* WidgetFramework */, 3B07BDE90E3F3F9E00647869 /* WidgetFrameworkTest */, + 4024D162113D7D2400C7059E /* Test */, + 4024D1E9113D83FF00C7059E /* TestAndBuild */, ); }; /* End PBXProject section */ @@ -202,6 +262,22 @@ }; /* End PBXRezBuildPhase section */ +/* Begin PBXShellScriptBuildPhase section */ + 4024D161113D7D2400C7059E /* ShellScript */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputPaths = ( + ); + outputPaths = ( + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "/bin/bash $SRCROOT/runtests.sh $BUILT_PRODUCTS_DIR/WidgetFrameworkTest\n"; + }; +/* End PBXShellScriptBuildPhase section */ + /* Begin PBXSourcesBuildPhase section */ 3B07BDE70E3F3F9E00647869 /* Sources */ = { isa = PBXSourcesBuildPhase; @@ -227,6 +303,21 @@ target = 8D07F2BC0486CC7A007CD1D0 /* WidgetFramework */; targetProxy = 3B07BDF00E3F3FAE00647869 /* PBXContainerItemProxy */; }; + 4024D166113D7D3100C7059E /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = 3B07BDE90E3F3F9E00647869 /* WidgetFrameworkTest */; + targetProxy = 4024D165113D7D3100C7059E /* PBXContainerItemProxy */; + }; + 4024D1ED113D840900C7059E /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = 8D07F2BC0486CC7A007CD1D0 /* WidgetFramework */; + targetProxy = 4024D1EC113D840900C7059E /* PBXContainerItemProxy */; + }; + 4024D1EF113D840D00C7059E /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = 4024D162113D7D2400C7059E /* Test */; + targetProxy = 4024D1EE113D840D00C7059E /* PBXContainerItemProxy */; + }; /* End PBXTargetDependency section */ /* Begin XCBuildConfiguration section */ @@ -244,6 +335,34 @@ }; name = Release; }; + 4024D163113D7D2400C7059E /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + PRODUCT_NAME = TestAndBuild; + }; + name = Debug; + }; + 4024D164113D7D2400C7059E /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + PRODUCT_NAME = TestAndBuild; + }; + name = Release; + }; + 4024D1EA113D83FF00C7059E /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + PRODUCT_NAME = TestAndBuild; + }; + name = Debug; + }; + 4024D1EB113D83FF00C7059E /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + PRODUCT_NAME = TestAndBuild; + }; + name = Release; + }; 4FADC24308B4156D00ABE55E /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { @@ -296,6 +415,24 @@ defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; + 4024D169113D7D4600C7059E /* Build configuration list for PBXAggregateTarget "Test" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 4024D163113D7D2400C7059E /* Debug */, + 4024D164113D7D2400C7059E /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 4024D1F0113D842B00C7059E /* Build configuration list for PBXAggregateTarget "TestAndBuild" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 4024D1EA113D83FF00C7059E /* Debug */, + 4024D1EB113D83FF00C7059E /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; 4FADC24208B4156D00ABE55E /* Build configuration list for PBXNativeTarget "WidgetFramework" */ = { isa = XCConfigurationList; buildConfigurations = ( diff --git a/cpp/thirdparty/protobuf-2.5.0/gtest/xcode/Samples/FrameworkSample/runtests.sh b/cpp/thirdparty/protobuf-2.5.0/gtest/xcode/Samples/FrameworkSample/runtests.sh new file mode 100644 index 000000000..4a0d413e5 --- /dev/null +++ b/cpp/thirdparty/protobuf-2.5.0/gtest/xcode/Samples/FrameworkSample/runtests.sh @@ -0,0 +1,62 @@ +#!/bin/bash +# +# Copyright 2008, Google Inc. +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions are +# met: +# +# * Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# * Redistributions in binary form must reproduce the above +# copyright notice, this list of conditions and the following disclaimer +# in the documentation and/or other materials provided with the +# distribution. +# * Neither the name of Google Inc. nor the names of its +# contributors may be used to endorse or promote products derived from +# this software without specific prior written permission. +# +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +# Executes the samples and tests for the Google Test Framework. + +# Help the dynamic linker find the path to the libraries. +export DYLD_FRAMEWORK_PATH=$BUILT_PRODUCTS_DIR +export DYLD_LIBRARY_PATH=$BUILT_PRODUCTS_DIR + +# Create some executables. +test_executables=$@ + +# Now execute each one in turn keeping track of how many succeeded and failed. +succeeded=0 +failed=0 +failed_list=() +for test in ${test_executables[*]}; do + "$test" + result=$? + if [ $result -eq 0 ]; then + succeeded=$(( $succeeded + 1 )) + else + failed=$(( failed + 1 )) + failed_list="$failed_list $test" + fi +done + +# Report the successes and failures to the console. +echo "Tests complete with $succeeded successes and $failed failures." +if [ $failed -ne 0 ]; then + echo "The following tests failed:" + echo $failed_list +fi +exit $failed diff --git a/cpp/thirdparty/protobuf-2.3.0/gtest/xcode/Samples/FrameworkSample/widget.cc b/cpp/thirdparty/protobuf-2.5.0/gtest/xcode/Samples/FrameworkSample/widget.cc similarity index 97% rename from cpp/thirdparty/protobuf-2.3.0/gtest/xcode/Samples/FrameworkSample/widget.cc rename to cpp/thirdparty/protobuf-2.5.0/gtest/xcode/Samples/FrameworkSample/widget.cc index d03ca00c5..bfc4e7fcf 100644 --- a/cpp/thirdparty/protobuf-2.3.0/gtest/xcode/Samples/FrameworkSample/widget.cc +++ b/cpp/thirdparty/protobuf-2.5.0/gtest/xcode/Samples/FrameworkSample/widget.cc @@ -27,7 +27,7 @@ // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. // -// Author: preston.jackson@gmail.com (Preston Jackson) +// Author: preston.a.jackson@gmail.com (Preston Jackson) // // Google Test - FrameworkSample // widget.cc @@ -42,7 +42,7 @@ Widget::Widget(int number, const std::string& name) name_(name) {} Widget::~Widget() {} - + float Widget::GetFloatValue() const { return number_; } @@ -50,7 +50,7 @@ float Widget::GetFloatValue() const { int Widget::GetIntValue() const { return static_cast(number_); } - + std::string Widget::GetStringValue() const { return name_; } diff --git a/cpp/thirdparty/protobuf-2.3.0/gtest/xcode/Samples/FrameworkSample/widget.h b/cpp/thirdparty/protobuf-2.5.0/gtest/xcode/Samples/FrameworkSample/widget.h similarity index 97% rename from cpp/thirdparty/protobuf-2.3.0/gtest/xcode/Samples/FrameworkSample/widget.h rename to cpp/thirdparty/protobuf-2.5.0/gtest/xcode/Samples/FrameworkSample/widget.h index 59cc82cd5..0c55cdc8c 100644 --- a/cpp/thirdparty/protobuf-2.3.0/gtest/xcode/Samples/FrameworkSample/widget.h +++ b/cpp/thirdparty/protobuf-2.5.0/gtest/xcode/Samples/FrameworkSample/widget.h @@ -27,7 +27,7 @@ // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. // -// Author: preston.jackson@gmail.com (Preston Jackson) +// Author: preston.a.jackson@gmail.com (Preston Jackson) // // Google Test - FrameworkSample // widget.h @@ -43,15 +43,15 @@ class Widget { public: Widget(int number, const std::string& name); ~Widget(); - + // Public accessors to number data float GetFloatValue() const; int GetIntValue() const; - + // Public accessors to the string data std::string GetStringValue() const; void GetCharPtrValue(char* buffer, size_t max_size) const; - + private: // Data members float number_; diff --git a/cpp/thirdparty/protobuf-2.3.0/gtest/xcode/Samples/FrameworkSample/widget_test.cc b/cpp/thirdparty/protobuf-2.5.0/gtest/xcode/Samples/FrameworkSample/widget_test.cc similarity index 96% rename from cpp/thirdparty/protobuf-2.3.0/gtest/xcode/Samples/FrameworkSample/widget_test.cc rename to cpp/thirdparty/protobuf-2.5.0/gtest/xcode/Samples/FrameworkSample/widget_test.cc index 0a7c4f0cb..872599421 100644 --- a/cpp/thirdparty/protobuf-2.3.0/gtest/xcode/Samples/FrameworkSample/widget_test.cc +++ b/cpp/thirdparty/protobuf-2.5.0/gtest/xcode/Samples/FrameworkSample/widget_test.cc @@ -27,7 +27,7 @@ // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. // -// Author: preston.jackson@gmail.com (Preston Jackson) +// Author: preston.a.jackson@gmail.com (Preston Jackson) // // Google Test - FrameworkSample // widget_test.cc @@ -36,7 +36,7 @@ // This is a simple test file for the Widget class in the Widget.framework #include -#include +#include "gtest/gtest.h" #include @@ -58,7 +58,7 @@ TEST(WidgetInitializerTest, TestConversion) { char buffer[max_size]; widget.GetCharPtrValue(buffer, max_size); EXPECT_STREQ("name", buffer); -} +} // Use the Google Test main that is linked into the framework. It does something // like this: diff --git a/cpp/thirdparty/protobuf-2.5.0/gtest/xcode/Scripts/runtests.sh b/cpp/thirdparty/protobuf-2.5.0/gtest/xcode/Scripts/runtests.sh new file mode 100644 index 000000000..3fc229f1d --- /dev/null +++ b/cpp/thirdparty/protobuf-2.5.0/gtest/xcode/Scripts/runtests.sh @@ -0,0 +1,65 @@ +#!/bin/bash +# +# Copyright 2008, Google Inc. +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions are +# met: +# +# * Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# * Redistributions in binary form must reproduce the above +# copyright notice, this list of conditions and the following disclaimer +# in the documentation and/or other materials provided with the +# distribution. +# * Neither the name of Google Inc. nor the names of its +# contributors may be used to endorse or promote products derived from +# this software without specific prior written permission. +# +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +# Executes the samples and tests for the Google Test Framework. + +# Help the dynamic linker find the path to the libraries. +export DYLD_FRAMEWORK_PATH=$BUILT_PRODUCTS_DIR +export DYLD_LIBRARY_PATH=$BUILT_PRODUCTS_DIR + +# Create some executables. +test_executables=("$BUILT_PRODUCTS_DIR/gtest_unittest-framework" + "$BUILT_PRODUCTS_DIR/gtest_unittest" + "$BUILT_PRODUCTS_DIR/sample1_unittest-framework" + "$BUILT_PRODUCTS_DIR/sample1_unittest-static") + +# Now execute each one in turn keeping track of how many succeeded and failed. +succeeded=0 +failed=0 +failed_list=() +for test in ${test_executables[*]}; do + "$test" + result=$? + if [ $result -eq 0 ]; then + succeeded=$(( $succeeded + 1 )) + else + failed=$(( failed + 1 )) + failed_list="$failed_list $test" + fi +done + +# Report the successes and failures to the console. +echo "Tests complete with $succeeded successes and $failed failures." +if [ $failed -ne 0 ]; then + echo "The following tests failed:" + echo $failed_list +fi +exit $failed diff --git a/cpp/thirdparty/protobuf-2.3.0/gtest/xcode/Scripts/versiongenerate.py b/cpp/thirdparty/protobuf-2.5.0/gtest/xcode/Scripts/versiongenerate.py similarity index 64% rename from cpp/thirdparty/protobuf-2.3.0/gtest/xcode/Scripts/versiongenerate.py rename to cpp/thirdparty/protobuf-2.5.0/gtest/xcode/Scripts/versiongenerate.py index 3b19a96b8..81de8c96a 100644 --- a/cpp/thirdparty/protobuf-2.3.0/gtest/xcode/Scripts/versiongenerate.py +++ b/cpp/thirdparty/protobuf-2.5.0/gtest/xcode/Scripts/versiongenerate.py @@ -1,4 +1,33 @@ -#/usr/bin/python +#!/usr/bin/env python +# +# Copyright 2008, Google Inc. +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions are +# met: +# +# * Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# * Redistributions in binary form must reproduce the above +# copyright notice, this list of conditions and the following disclaimer +# in the documentation and/or other materials provided with the +# distribution. +# * Neither the name of Google Inc. nor the names of its +# contributors may be used to endorse or promote products derived from +# this software without specific prior written permission. +# +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. """A script to prepare version informtion for use the gtest Info.plist file. @@ -13,7 +42,7 @@ 1. The AC_INIT macro will be contained within the first 1024 characters of configure.ac 2. The version string will be 3 integers separated by periods and will be - surrounded by squre brackets, "[" and "]" (e.g. [1.0.1]). The first + surrounded by squre brackets, "[" and "]" (e.g. [1.0.1]). The first segment represents the major version, the second represents the minor version and the third represents the fix version. 3. No ")" character exists between the opening "(" and closing ")" of @@ -25,7 +54,7 @@ import re # Read the command line argument (the output directory for Version.h) if (len(sys.argv) < 3): - print "Usage: /usr/bin/python versiongenerate.py input_dir output_dir" + print "Usage: versiongenerate.py input_dir output_dir" sys.exit(1) else: input_dir = sys.argv[1] diff --git a/cpp/thirdparty/protobuf-2.3.0/gtest/xcode/gtest.xcodeproj/project.pbxproj b/cpp/thirdparty/protobuf-2.5.0/gtest/xcode/gtest.xcodeproj/project.pbxproj similarity index 98% rename from cpp/thirdparty/protobuf-2.3.0/gtest/xcode/gtest.xcodeproj/project.pbxproj rename to cpp/thirdparty/protobuf-2.5.0/gtest/xcode/gtest.xcodeproj/project.pbxproj index 4234e728c..da6455b5c 100644 --- a/cpp/thirdparty/protobuf-2.3.0/gtest/xcode/gtest.xcodeproj/project.pbxproj +++ b/cpp/thirdparty/protobuf-2.5.0/gtest/xcode/gtest.xcodeproj/project.pbxproj @@ -54,7 +54,7 @@ 404884A40E2F7BE600CF7658 /* gtest-string.h in Copy Headers Internal */ = {isa = PBXBuildFile; fileRef = 404883E60E2F799B00CF7658 /* gtest-string.h */; }; 404884AC0E2F7CD900CF7658 /* CHANGES in Resources */ = {isa = PBXBuildFile; fileRef = 404884A90E2F7CD900CF7658 /* CHANGES */; }; 404884AD0E2F7CD900CF7658 /* CONTRIBUTORS in Resources */ = {isa = PBXBuildFile; fileRef = 404884AA0E2F7CD900CF7658 /* CONTRIBUTORS */; }; - 404884AE0E2F7CD900CF7658 /* COPYING in Resources */ = {isa = PBXBuildFile; fileRef = 404884AB0E2F7CD900CF7658 /* COPYING */; }; + 404884AE0E2F7CD900CF7658 /* LICENSE in Resources */ = {isa = PBXBuildFile; fileRef = 404884AB0E2F7CD900CF7658 /* LICENSE */; }; 40899F3A0FFA70D4000B29AE /* gtest-all.cc in Sources */ = {isa = PBXBuildFile; fileRef = 224A12A10E9EADA700BD17FD /* gtest-all.cc */; }; 40899F500FFA7281000B29AE /* gtest-tuple.h in Copy Headers Internal */ = {isa = PBXBuildFile; fileRef = 40899F4D0FFA7271000B29AE /* gtest-tuple.h */; }; 40899F530FFA72A0000B29AE /* gtest_unittest.cc in Sources */ = {isa = PBXBuildFile; fileRef = 3B238C120E7FE13C00846E11 /* gtest_unittest.cc */; }; @@ -78,6 +78,7 @@ 4539C9380EC280E200A70F4C /* gtest-linked_ptr.h in Copy Headers Internal */ = {isa = PBXBuildFile; fileRef = 4539C9350EC280E200A70F4C /* gtest-linked_ptr.h */; }; 4539C9390EC280E200A70F4C /* gtest-param-util-generated.h in Copy Headers Internal */ = {isa = PBXBuildFile; fileRef = 4539C9360EC280E200A70F4C /* gtest-param-util-generated.h */; }; 4539C93A0EC280E200A70F4C /* gtest-param-util.h in Copy Headers Internal */ = {isa = PBXBuildFile; fileRef = 4539C9370EC280E200A70F4C /* gtest-param-util.h */; }; + 4567C8181264FF71007740BE /* gtest-printers.h in Headers */ = {isa = PBXBuildFile; fileRef = 4567C8171264FF71007740BE /* gtest-printers.h */; settings = {ATTRIBUTES = (Public, ); }; }; /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ @@ -220,7 +221,7 @@ 4048840D0E2F799B00CF7658 /* gtest_main.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = gtest_main.cc; sourceTree = ""; }; 404884A90E2F7CD900CF7658 /* CHANGES */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = CHANGES; path = ../CHANGES; sourceTree = SOURCE_ROOT; }; 404884AA0E2F7CD900CF7658 /* CONTRIBUTORS */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = CONTRIBUTORS; path = ../CONTRIBUTORS; sourceTree = SOURCE_ROOT; }; - 404884AB0E2F7CD900CF7658 /* COPYING */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = COPYING; path = ../COPYING; sourceTree = SOURCE_ROOT; }; + 404884AB0E2F7CD900CF7658 /* LICENSE */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = LICENSE; path = ../LICENSE; sourceTree = SOURCE_ROOT; }; 40899F430FFA7184000B29AE /* gtest_unittest-framework */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = "gtest_unittest-framework"; sourceTree = BUILT_PRODUCTS_DIR; }; 40899F4D0FFA7271000B29AE /* gtest-tuple.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "gtest-tuple.h"; sourceTree = ""; }; 40899FB30FFA7567000B29AE /* StaticLibraryTarget.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; path = StaticLibraryTarget.xcconfig; sourceTree = ""; }; @@ -242,6 +243,7 @@ 4539C9350EC280E200A70F4C /* gtest-linked_ptr.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "gtest-linked_ptr.h"; sourceTree = ""; }; 4539C9360EC280E200A70F4C /* gtest-param-util-generated.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "gtest-param-util-generated.h"; sourceTree = ""; }; 4539C9370EC280E200A70F4C /* gtest-param-util.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "gtest-param-util.h"; sourceTree = ""; }; + 4567C8171264FF71007740BE /* gtest-printers.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "gtest-printers.h"; sourceTree = ""; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ @@ -315,7 +317,7 @@ children = ( 404884A90E2F7CD900CF7658 /* CHANGES */, 404884AA0E2F7CD900CF7658 /* CONTRIBUTORS */, - 404884AB0E2F7CD900CF7658 /* COPYING */, + 404884AB0E2F7CD900CF7658 /* LICENSE */, 404883F60E2F799B00CF7658 /* README */, 404883D90E2F799B00CF7658 /* include */, 4089A02F0FFACF84000B29AE /* samples */, @@ -360,6 +362,7 @@ 404883DB0E2F799B00CF7658 /* gtest-death-test.h */, 404883DC0E2F799B00CF7658 /* gtest-message.h */, 4539C9330EC280AE00A70F4C /* gtest-param-test.h */, + 4567C8171264FF71007740BE /* gtest-printers.h */, 404883DD0E2F799B00CF7658 /* gtest-spi.h */, 404883DE0E2F799B00CF7658 /* gtest.h */, 404883DF0E2F799B00CF7658 /* gtest_pred_impl.h */, @@ -437,6 +440,7 @@ 404884380E2F799B00CF7658 /* gtest-death-test.h in Headers */, 404884390E2F799B00CF7658 /* gtest-message.h in Headers */, 4539C9340EC280AE00A70F4C /* gtest-param-test.h in Headers */, + 4567C8181264FF71007740BE /* gtest-printers.h in Headers */, 3BF6F2A50E79B616000F2EEE /* gtest-typed-test.h in Headers */, 4048843A0E2F799B00CF7658 /* gtest-spi.h in Headers */, 4048843B0E2F799B00CF7658 /* gtest.h in Headers */, @@ -612,7 +616,7 @@ 404884500E2F799B00CF7658 /* README in Resources */, 404884AC0E2F7CD900CF7658 /* CHANGES in Resources */, 404884AD0E2F7CD900CF7658 /* CONTRIBUTORS in Resources */, - 404884AE0E2F7CD900CF7658 /* COPYING in Resources */, + 404884AE0E2F7CD900CF7658 /* LICENSE in Resources */, 40C84978101A36540083642A /* libgtest_main.a in Resources */, ); runOnlyForDeploymentPostprocessing = 0; diff --git a/cpp/thirdparty/protobuf-2.3.0/gtest/build-aux/install-sh b/cpp/thirdparty/protobuf-2.5.0/install-sh similarity index 95% rename from cpp/thirdparty/protobuf-2.3.0/gtest/build-aux/install-sh rename to cpp/thirdparty/protobuf-2.5.0/install-sh index a5897de6e..a9244eb07 100755 --- a/cpp/thirdparty/protobuf-2.3.0/gtest/build-aux/install-sh +++ b/cpp/thirdparty/protobuf-2.5.0/install-sh @@ -1,7 +1,7 @@ #!/bin/sh # install - install a program, script, or datafile -scriptversion=2006-12-25.00 +scriptversion=2011-01-19.21; # UTC # This originates from X11R5 (mit/util/scripts/install.sh), which was # later released in X11R6 (xc/config/util/install.sh) with the @@ -156,6 +156,10 @@ while test $# -ne 0; do -s) stripcmd=$stripprog;; -t) dst_arg=$2 + # Protect names problematic for `test' and other utilities. + case $dst_arg in + -* | [=\(\)!]) dst_arg=./$dst_arg;; + esac shift;; -T) no_target_directory=true;; @@ -186,6 +190,10 @@ if test $# -ne 0 && test -z "$dir_arg$dst_arg"; then fi shift # arg dst_arg=$arg + # Protect names problematic for `test' and other utilities. + case $dst_arg in + -* | [=\(\)!]) dst_arg=./$dst_arg;; + esac done fi @@ -200,7 +208,11 @@ if test $# -eq 0; then fi if test -z "$dir_arg"; then - trap '(exit $?); exit' 1 2 13 15 + do_exit='(exit $ret); exit $ret' + trap "ret=129; $do_exit" 1 + trap "ret=130; $do_exit" 2 + trap "ret=141; $do_exit" 13 + trap "ret=143; $do_exit" 15 # Set umask so as not to create temps with too-generous modes. # However, 'strip' requires both read and write access to temps. @@ -228,9 +240,9 @@ fi for src do - # Protect names starting with `-'. + # Protect names problematic for `test' and other utilities. case $src in - -*) src=./$src;; + -* | [=\(\)!]) src=./$src;; esac if test -n "$dir_arg"; then @@ -252,12 +264,7 @@ do echo "$0: no destination specified." >&2 exit 1 fi - dst=$dst_arg - # Protect names starting with `-'. - case $dst in - -*) dst=./$dst;; - esac # If destination is a directory, append the input filename; won't work # if double slashes aren't ignored. @@ -385,7 +392,7 @@ do case $dstdir in /*) prefix='/';; - -*) prefix='./';; + [-=\(\)!]*) prefix='./';; *) prefix='';; esac @@ -403,7 +410,7 @@ do for d do - test -z "$d" && continue + test X"$d" = X && continue prefix=$prefix$d if test -d "$prefix"; then @@ -515,5 +522,6 @@ done # eval: (add-hook 'write-file-hooks 'time-stamp) # time-stamp-start: "scriptversion=" # time-stamp-format: "%:y-%02m-%02d.%02H" -# time-stamp-end: "$" +# time-stamp-time-zone: "UTC" +# time-stamp-end: "; # UTC" # End: diff --git a/cpp/thirdparty/protobuf-2.3.0/java/README.txt b/cpp/thirdparty/protobuf-2.5.0/java/README.txt similarity index 100% rename from cpp/thirdparty/protobuf-2.3.0/java/README.txt rename to cpp/thirdparty/protobuf-2.5.0/java/README.txt diff --git a/cpp/thirdparty/protobuf-2.3.0/java/pom.xml b/cpp/thirdparty/protobuf-2.5.0/java/pom.xml similarity index 77% rename from cpp/thirdparty/protobuf-2.3.0/java/pom.xml rename to cpp/thirdparty/protobuf-2.5.0/java/pom.xml index b07f29b06..a3746fad6 100644 --- a/cpp/thirdparty/protobuf-2.3.0/java/pom.xml +++ b/cpp/thirdparty/protobuf-2.5.0/java/pom.xml @@ -10,8 +10,8 @@ com.google.protobuf protobuf-java - 2.3.0 - jar + 2.5.0 + bundle Protocol Buffer Java API Protocol Buffers are a way of encoding structured data in an efficient yet @@ -102,15 +102,23 @@ + + + + + + + + @@ -124,6 +132,16 @@ + + org.apache.felix + maven-bundle-plugin + true + + + * + + + @@ -142,11 +160,23 @@ **/ExtensionRegistryLite.java **/FieldSet.java **/GeneratedMessageLite.java - **/InvalidProtocolBufferException.java **/Internal.java + **/InvalidProtocolBufferException.java + **/LazyStringArrayList.java + **/LazyStringList.java **/MessageLite.java + **/MessageLiteOrBuilder.java + **/SmallSortedMap.java **/UninitializedMessageException.java + **/UnmodifiableLazyStringList.java **/WireFormat.java + **/Parser.java + **/AbstractParser.java + **/BoundedByteString.java + **/LiteralByteString.java + **/RopeByteString.java + **/Utf8.java + **/LazyField.java **/LiteTest.java diff --git a/cpp/thirdparty/protobuf-2.3.0/java/src/main/java/com/google/protobuf/AbstractMessage.java b/cpp/thirdparty/protobuf-2.5.0/java/src/main/java/com/google/protobuf/AbstractMessage.java similarity index 65% rename from cpp/thirdparty/protobuf-2.3.0/java/src/main/java/com/google/protobuf/AbstractMessage.java rename to cpp/thirdparty/protobuf-2.5.0/java/src/main/java/com/google/protobuf/AbstractMessage.java index b059bc984..f4d115de2 100644 --- a/cpp/thirdparty/protobuf-2.3.0/java/src/main/java/com/google/protobuf/AbstractMessage.java +++ b/cpp/thirdparty/protobuf-2.5.0/java/src/main/java/com/google/protobuf/AbstractMessage.java @@ -32,9 +32,11 @@ package com.google.protobuf; import com.google.protobuf.Descriptors.Descriptor; import com.google.protobuf.Descriptors.FieldDescriptor; +import com.google.protobuf.GeneratedMessage.ExtendableBuilder; +import com.google.protobuf.Internal.EnumLite; -import java.io.InputStream; import java.io.IOException; +import java.io.InputStream; import java.util.ArrayList; import java.util.List; import java.util.Map; @@ -80,6 +82,25 @@ public abstract class AbstractMessage extends AbstractMessageLite return true; } + public List findInitializationErrors() { + return Builder.findMissingFields(this); + } + + public String getInitializationErrorString() { + return delimitWithCommas(findInitializationErrors()); + } + + private static String delimitWithCommas(List parts) { + StringBuilder result = new StringBuilder(); + for (String part : parts) { + if (result.length() > 0) { + result.append(", "); + } + result.append(part); + } + return result.toString(); + } + @Override public final String toString() { return TextFormat.printToString(this); @@ -167,11 +188,75 @@ public abstract class AbstractMessage extends AbstractMessageLite public int hashCode() { int hash = 41; hash = (19 * hash) + getDescriptorForType().hashCode(); - hash = (53 * hash) + getAllFields().hashCode(); + hash = hashFields(hash, getAllFields()); hash = (29 * hash) + getUnknownFields().hashCode(); return hash; } + /** Get a hash code for given fields and values, using the given seed. */ + @SuppressWarnings("unchecked") + protected int hashFields(int hash, Map map) { + for (Map.Entry entry : map.entrySet()) { + FieldDescriptor field = entry.getKey(); + Object value = entry.getValue(); + hash = (37 * hash) + field.getNumber(); + if (field.getType() != FieldDescriptor.Type.ENUM){ + hash = (53 * hash) + value.hashCode(); + } else if (field.isRepeated()) { + List list = (List) value; + hash = (53 * hash) + hashEnumList(list); + } else { + hash = (53 * hash) + hashEnum((EnumLite) value); + } + } + return hash; + } + + /** + * Helper method for implementing {@link Message#hashCode()}. + * @see Boolean#hashCode() + */ + protected static int hashLong(long n) { + return (int) (n ^ (n >>> 32)); + } + + /** + * Helper method for implementing {@link Message#hashCode()}. + * @see Boolean#hashCode() + */ + protected static int hashBoolean(boolean b) { + return b ? 1231 : 1237; + } + + /** + * Package private helper method for AbstractParser to create + * UninitializedMessageException with missing field information. + */ + @Override + UninitializedMessageException newUninitializedMessageException() { + return Builder.newUninitializedMessageException(this); + } + + /** + * Helper method for implementing {@link Message#hashCode()}. + *

+ * This is needed because {@link java.lang.Enum#hashCode()} is final, but we + * need to use the field number as the hash code to ensure compatibility + * between statically and dynamically generated enum objects. + */ + protected static int hashEnum(EnumLite e) { + return e.getNumber(); + } + + /** Helper method for implementing {@link Message#hashCode()}. */ + protected static int hashEnumList(List list) { + int hash = 1; + for (EnumLite e : list) { + hash = 31 * hash + hashEnum(e); + } + return hash; + } + // ================================================================= /** @@ -195,6 +280,14 @@ public abstract class AbstractMessage extends AbstractMessageLite return (BuilderType) this; } + public List findInitializationErrors() { + return findMissingFields(this); + } + + public String getInitializationErrorString() { + return delimitWithCommas(findInitializationErrors()); + } + public BuilderType mergeFrom(final Message other) { if (other.getDescriptorForType() != getDescriptorForType()) { throw new IllegalArgumentException( @@ -258,7 +351,7 @@ public abstract class AbstractMessage extends AbstractMessageLite } if (!mergeFieldFrom(input, unknownFields, extensionRegistry, - this, tag)) { + getDescriptorForType(), this, null, tag)) { // end group tag break; } @@ -267,26 +360,93 @@ public abstract class AbstractMessage extends AbstractMessageLite return (BuilderType) this; } + /** helper method to handle {@code builder} and {@code extensions}. */ + private static void addRepeatedField( + Message.Builder builder, + FieldSet extensions, + FieldDescriptor field, + Object value) { + if (builder != null) { + builder.addRepeatedField(field, value); + } else { + extensions.addRepeatedField(field, value); + } + } + + /** helper method to handle {@code builder} and {@code extensions}. */ + private static void setField( + Message.Builder builder, + FieldSet extensions, + FieldDescriptor field, + Object value) { + if (builder != null) { + builder.setField(field, value); + } else { + extensions.setField(field, value); + } + } + + /** helper method to handle {@code builder} and {@code extensions}. */ + private static boolean hasOriginalMessage( + Message.Builder builder, + FieldSet extensions, + FieldDescriptor field) { + if (builder != null) { + return builder.hasField(field); + } else { + return extensions.hasField(field); + } + } + + /** helper method to handle {@code builder} and {@code extensions}. */ + private static Message getOriginalMessage( + Message.Builder builder, + FieldSet extensions, + FieldDescriptor field) { + if (builder != null) { + return (Message) builder.getField(field); + } else { + return (Message) extensions.getField(field); + } + } + + /** helper method to handle {@code builder} and {@code extensions}. */ + private static void mergeOriginalMessage( + Message.Builder builder, + FieldSet extensions, + FieldDescriptor field, + Message.Builder subBuilder) { + Message originalMessage = getOriginalMessage(builder, extensions, field); + if (originalMessage != null) { + subBuilder.mergeFrom(originalMessage); + } + } + /** - * Like {@link #mergeFrom(CodedInputStream, UnknownFieldSet.Builder, - * ExtensionRegistryLite, Message.Builder)}, but parses a single field. + * Like {@link #mergeFrom(CodedInputStream, ExtensionRegistryLite)}, but + * parses a single field. + * + * When {@code builder} is not null, the method will parse and merge the + * field into {@code builder}. Otherwise, it will try to parse the field + * into {@code extensions}, when it's called by the parsing constructor in + * generated classes. + * * Package-private because it is used by GeneratedMessage.ExtendableMessage. * @param tag The tag, which should have already been read. * @return {@code true} unless the tag is an end-group tag. */ - @SuppressWarnings("unchecked") static boolean mergeFieldFrom( - final CodedInputStream input, - final UnknownFieldSet.Builder unknownFields, - final ExtensionRegistryLite extensionRegistry, - final Message.Builder builder, - final int tag) throws IOException { - final Descriptor type = builder.getDescriptorForType(); - + CodedInputStream input, + UnknownFieldSet.Builder unknownFields, + ExtensionRegistryLite extensionRegistry, + Descriptor type, + Message.Builder builder, + FieldSet extensions, + int tag) throws IOException { if (type.getOptions().getMessageSetWireFormat() && tag == WireFormat.MESSAGE_SET_ITEM_TAG) { mergeMessageSetExtensionFromCodedStream( - input, unknownFields, extensionRegistry, builder); + input, unknownFields, extensionRegistry, type, builder, extensions); return true; } @@ -321,8 +481,10 @@ public abstract class AbstractMessage extends AbstractMessageLite } else { field = null; } - } else { + } else if (builder != null) { field = type.findFieldByNumber(fieldNumber); + } else { + field = null; } boolean unknown = false; @@ -358,13 +520,13 @@ public abstract class AbstractMessage extends AbstractMessageLite // enum, drop it (don't even add it to unknownFields). return true; } - builder.addRepeatedField(field, value); + addRepeatedField(builder, extensions, field, value); } } else { while (input.getBytesUntilLimit() > 0) { final Object value = FieldSet.readPrimitiveField(input, field.getLiteType()); - builder.addRepeatedField(field, value); + addRepeatedField(builder, extensions, field, value); } } input.popLimit(limit); @@ -379,10 +541,10 @@ public abstract class AbstractMessage extends AbstractMessageLite subBuilder = builder.newBuilderForField(field); } if (!field.isRepeated()) { - subBuilder.mergeFrom((Message) builder.getField(field)); + mergeOriginalMessage(builder, extensions, field, subBuilder); } input.readGroup(field.getNumber(), subBuilder, extensionRegistry); - value = subBuilder.build(); + value = subBuilder.buildPartial(); break; } case MESSAGE: { @@ -393,10 +555,10 @@ public abstract class AbstractMessage extends AbstractMessageLite subBuilder = builder.newBuilderForField(field); } if (!field.isRepeated()) { - subBuilder.mergeFrom((Message) builder.getField(field)); + mergeOriginalMessage(builder, extensions, field, subBuilder); } input.readMessage(subBuilder, extensionRegistry); - value = subBuilder.build(); + value = subBuilder.buildPartial(); break; } case ENUM: @@ -415,22 +577,28 @@ public abstract class AbstractMessage extends AbstractMessageLite } if (field.isRepeated()) { - builder.addRepeatedField(field, value); + addRepeatedField(builder, extensions, field, value); } else { - builder.setField(field, value); + setField(builder, extensions, field, value); } } return true; } - /** Called by {@code #mergeFieldFrom()} to parse a MessageSet extension. */ + /** + * Called by {@code #mergeFieldFrom()} to parse a MessageSet extension. + * If {@code builder} is not null, this method will merge MessageSet into + * the builder. Otherwise, it will merge the MessageSet into {@code + * extensions}. + */ private static void mergeMessageSetExtensionFromCodedStream( - final CodedInputStream input, - final UnknownFieldSet.Builder unknownFields, - final ExtensionRegistryLite extensionRegistry, - final Message.Builder builder) throws IOException { - final Descriptor type = builder.getDescriptorForType(); + CodedInputStream input, + UnknownFieldSet.Builder unknownFields, + ExtensionRegistryLite extensionRegistry, + Descriptor type, + Message.Builder builder, + FieldSet extensions) throws IOException { // The wire format for MessageSet is: // message MessageSet { @@ -449,10 +617,11 @@ public abstract class AbstractMessage extends AbstractMessageLite // should be prepared to accept them. int typeId = 0; - ByteString rawBytes = null; // If we encounter "message" before "typeId" - Message.Builder subBuilder = null; - FieldDescriptor field = null; + ByteString rawBytes = null; // If we encounter "message" before "typeId" + ExtensionRegistry.ExtensionInfo extension = null; + // Read bytes from input, if we get it's type first then parse it eagerly, + // otherwise we store the raw bytes in a local variable. while (true) { final int tag = input.readTag(); if (tag == 0) { @@ -461,75 +630,121 @@ public abstract class AbstractMessage extends AbstractMessageLite if (tag == WireFormat.MESSAGE_SET_TYPE_ID_TAG) { typeId = input.readUInt32(); - // Zero is not a valid type ID. if (typeId != 0) { - final ExtensionRegistry.ExtensionInfo extension; - // extensionRegistry may be either ExtensionRegistry or - // ExtensionRegistryLite. Since the type we are parsing is a full + // ExtensionRegistryLite. Since the type we are parsing is a full // message, only a full ExtensionRegistry could possibly contain - // extensions of it. Otherwise we will treat the registry as if it + // extensions of it. Otherwise we will treat the registry as if it // were empty. if (extensionRegistry instanceof ExtensionRegistry) { extension = ((ExtensionRegistry) extensionRegistry) .findExtensionByNumber(type, typeId); - } else { - extension = null; - } - - if (extension != null) { - field = extension.descriptor; - subBuilder = extension.defaultInstance.newBuilderForType(); - final Message originalMessage = (Message)builder.getField(field); - if (originalMessage != null) { - subBuilder.mergeFrom(originalMessage); - } - if (rawBytes != null) { - // We already encountered the message. Parse it now. - subBuilder.mergeFrom( - CodedInputStream.newInstance(rawBytes.newInput())); - rawBytes = null; - } - } else { - // Unknown extension number. If we already saw data, put it - // in rawBytes. - if (rawBytes != null) { - unknownFields.mergeField(typeId, - UnknownFieldSet.Field.newBuilder() - .addLengthDelimited(rawBytes) - .build()); - rawBytes = null; - } } } + } else if (tag == WireFormat.MESSAGE_SET_MESSAGE_TAG) { - if (typeId == 0) { - // We haven't seen a type ID yet, so we have to store the raw bytes - // for now. - rawBytes = input.readBytes(); - } else if (subBuilder == null) { - // We don't know how to parse this. Ignore it. - unknownFields.mergeField(typeId, - UnknownFieldSet.Field.newBuilder() - .addLengthDelimited(input.readBytes()) - .build()); - } else { - // We already know the type, so we can parse directly from the input - // with no copying. Hooray! - input.readMessage(subBuilder, extensionRegistry); + if (typeId != 0) { + if (extension != null && ExtensionRegistryLite.isEagerlyParseMessageSets()) { + // We already know the type, so we can parse directly from the + // input with no copying. Hooray! + eagerlyMergeMessageSetExtension( + input, extension, extensionRegistry, builder, extensions); + rawBytes = null; + continue; + } } - } else { - // Unknown tag. Skip it. + // We haven't seen a type ID yet or we want parse message lazily. + rawBytes = input.readBytes(); + + } else { // Unknown tag. Skip it. if (!input.skipField(tag)) { - break; // end of group + break; // End of group } } } - input.checkLastTagWas(WireFormat.MESSAGE_SET_ITEM_END_TAG); - if (subBuilder != null) { - builder.setField(field, subBuilder.build()); + // Process the raw bytes. + if (rawBytes != null && typeId != 0) { // Zero is not a valid type ID. + if (extension != null) { // We known the type + mergeMessageSetExtensionFromBytes( + rawBytes, extension, extensionRegistry, builder, extensions); + } else { // We don't know how to parse this. Ignore it. + if (rawBytes != null) { + unknownFields.mergeField(typeId, UnknownFieldSet.Field.newBuilder() + .addLengthDelimited(rawBytes).build()); + } + } + } + } + + private static void eagerlyMergeMessageSetExtension( + CodedInputStream input, + ExtensionRegistry.ExtensionInfo extension, + ExtensionRegistryLite extensionRegistry, + Message.Builder builder, + FieldSet extensions) throws IOException { + + FieldDescriptor field = extension.descriptor; + Message value = null; + if (hasOriginalMessage(builder, extensions, field)) { + Message originalMessage = + getOriginalMessage(builder, extensions, field); + Message.Builder subBuilder = originalMessage.toBuilder(); + input.readMessage(subBuilder, extensionRegistry); + value = subBuilder.buildPartial(); + } else { + value = input.readMessage(extension.defaultInstance.getParserForType(), + extensionRegistry); + } + + if (builder != null) { + builder.setField(field, value); + } else { + extensions.setField(field, value); + } + } + + private static void mergeMessageSetExtensionFromBytes( + ByteString rawBytes, + ExtensionRegistry.ExtensionInfo extension, + ExtensionRegistryLite extensionRegistry, + Message.Builder builder, + FieldSet extensions) throws IOException { + + FieldDescriptor field = extension.descriptor; + boolean hasOriginalValue = hasOriginalMessage(builder, extensions, field); + + if (hasOriginalValue || ExtensionRegistryLite.isEagerlyParseMessageSets()) { + // If the field already exists, we just parse the field. + Message value = null; + if (hasOriginalValue) { + Message originalMessage = + getOriginalMessage(builder, extensions, field); + Message.Builder subBuilder= originalMessage.toBuilder(); + subBuilder.mergeFrom(rawBytes, extensionRegistry); + value = subBuilder.buildPartial(); + } else { + value = extension.defaultInstance.getParserForType() + .parsePartialFrom(rawBytes, extensionRegistry); + } + setField(builder, extensions, field, value); + } else { + // Use LazyField to load MessageSet lazily. + LazyField lazyField = new LazyField( + extension.defaultInstance, extensionRegistry, rawBytes); + if (builder != null) { + // TODO(xiangl): it looks like this method can only be invoked by + // ExtendableBuilder, but I'm not sure. So I double check the type of + // builder here. It may be useless and need more investigation. + if (builder instanceof ExtendableBuilder) { + builder.setField(field, lazyField); + } else { + builder.setField(field, lazyField.getValue()); + } + } else { + extensions.setField(field, lazyField); + } } } @@ -541,6 +756,11 @@ public abstract class AbstractMessage extends AbstractMessageLite return (BuilderType) this; } + public Message.Builder getFieldBuilder(final FieldDescriptor field) { + throw new UnsupportedOperationException( + "getFieldBuilder() called on an unsupported message type."); + } + /** * Construct an UninitializedMessageException reporting missing fields in * the given message. @@ -554,14 +774,15 @@ public abstract class AbstractMessage extends AbstractMessageLite * Populates {@code this.missingFields} with the full "path" of each * missing required field in the given message. */ - private static List findMissingFields(final Message message) { + private static List findMissingFields( + final MessageOrBuilder message) { final List results = new ArrayList(); findMissingFields(message, "", results); return results; } /** Recursive helper implementing {@link #findMissingFields(Message)}. */ - private static void findMissingFields(final Message message, + private static void findMissingFields(final MessageOrBuilder message, final String prefix, final List results) { for (final FieldDescriptor field : @@ -580,13 +801,13 @@ public abstract class AbstractMessage extends AbstractMessageLite if (field.isRepeated()) { int i = 0; for (final Object element : (List) value) { - findMissingFields((Message) element, + findMissingFields((MessageOrBuilder) element, subMessagePrefix(prefix, field, i++), results); } } else { if (message.hasField(field)) { - findMissingFields((Message) value, + findMissingFields((MessageOrBuilder) value, subMessagePrefix(prefix, field, -1), results); } diff --git a/cpp/thirdparty/protobuf-2.3.0/java/src/main/java/com/google/protobuf/AbstractMessageLite.java b/cpp/thirdparty/protobuf-2.5.0/java/src/main/java/com/google/protobuf/AbstractMessageLite.java similarity index 93% rename from cpp/thirdparty/protobuf-2.3.0/java/src/main/java/com/google/protobuf/AbstractMessageLite.java rename to cpp/thirdparty/protobuf-2.5.0/java/src/main/java/com/google/protobuf/AbstractMessageLite.java index 9210d853b..9926f3db8 100644 --- a/cpp/thirdparty/protobuf-2.3.0/java/src/main/java/com/google/protobuf/AbstractMessageLite.java +++ b/cpp/thirdparty/protobuf-2.5.0/java/src/main/java/com/google/protobuf/AbstractMessageLite.java @@ -91,6 +91,14 @@ public abstract class AbstractMessageLite implements MessageLite { codedOutput.flush(); } + /** + * Package private helper method for AbstractParser to create + * UninitializedMessageException. + */ + UninitializedMessageException newUninitializedMessageException() { + return new UninitializedMessageException(this); + } + /** * A partial implementation of the {@link Message.Builder} interface which * implements as many methods of that interface as possible in terms of @@ -307,14 +315,15 @@ public abstract class AbstractMessageLite implements MessageLite { */ protected static void addAll(final Iterable values, final Collection list) { - for (final T value : values) { - if (value == null) { - throw new NullPointerException(); - } + if (values instanceof LazyStringList) { + // For StringOrByteStringLists, check the underlying elements to avoid + // forcing conversions of ByteStrings to Strings. + checkForNullValues(((LazyStringList) values).getUnderlyingElements()); + } else { + checkForNullValues(values); } if (values instanceof Collection) { - @SuppressWarnings("unsafe") final - Collection collection = (Collection) values; + final Collection collection = (Collection) values; list.addAll(collection); } else { for (final T value : values) { @@ -322,5 +331,13 @@ public abstract class AbstractMessageLite implements MessageLite { } } } + + private static void checkForNullValues(final Iterable values) { + for (final Object value : values) { + if (value == null) { + throw new NullPointerException(); + } + } + } } } diff --git a/cpp/thirdparty/protobuf-2.5.0/java/src/main/java/com/google/protobuf/AbstractParser.java b/cpp/thirdparty/protobuf-2.5.0/java/src/main/java/com/google/protobuf/AbstractParser.java new file mode 100644 index 000000000..9bd9d3977 --- /dev/null +++ b/cpp/thirdparty/protobuf-2.5.0/java/src/main/java/com/google/protobuf/AbstractParser.java @@ -0,0 +1,261 @@ +// Protocol Buffers - Google's data interchange format +// Copyright 2008 Google Inc. All rights reserved. +// http://code.google.com/p/protobuf/ +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +package com.google.protobuf; + +import com.google.protobuf.AbstractMessageLite.Builder.LimitedInputStream; + +import java.io.IOException; +import java.io.InputStream; + +/** + * A partial implementation of the {@link Parser} interface which implements + * as many methods of that interface as possible in terms of other methods. + * + * Note: This class implements all the convenience methods in the + * {@link Parser} interface. See {@link Parser} for related javadocs. + * Subclasses need to implement + * {@link Parser#parsePartialFrom(CodedInputStream, ExtensionRegistryLite)} + * + * @author liujisi@google.com (Pherl Liu) + */ +public abstract class AbstractParser + implements Parser { + /** + * Creates an UninitializedMessageException for MessageType. + */ + private UninitializedMessageException + newUninitializedMessageException(MessageType message) { + if (message instanceof AbstractMessageLite) { + return ((AbstractMessageLite) message).newUninitializedMessageException(); + } + return new UninitializedMessageException(message); + } + + /** + * Helper method to check if message is initialized. + * + * @throws InvalidProtocolBufferException if it is not initialized. + * @return The message to check. + */ + private MessageType checkMessageInitialized(MessageType message) + throws InvalidProtocolBufferException { + if (message != null && !message.isInitialized()) { + throw newUninitializedMessageException(message) + .asInvalidProtocolBufferException() + .setUnfinishedMessage(message); + } + return message; + } + + private static final ExtensionRegistryLite EMPTY_REGISTRY + = ExtensionRegistryLite.getEmptyRegistry(); + + public MessageType parsePartialFrom(CodedInputStream input) + throws InvalidProtocolBufferException { + return parsePartialFrom(input, EMPTY_REGISTRY); + } + + public MessageType parseFrom(CodedInputStream input, + ExtensionRegistryLite extensionRegistry) + throws InvalidProtocolBufferException { + return checkMessageInitialized( + parsePartialFrom(input, extensionRegistry)); + } + + public MessageType parseFrom(CodedInputStream input) + throws InvalidProtocolBufferException { + return parseFrom(input, EMPTY_REGISTRY); + } + + public MessageType parsePartialFrom(ByteString data, + ExtensionRegistryLite extensionRegistry) + throws InvalidProtocolBufferException { + MessageType message; + try { + CodedInputStream input = data.newCodedInput(); + message = parsePartialFrom(input, extensionRegistry); + try { + input.checkLastTagWas(0); + } catch (InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(message); + } + return message; + } catch (InvalidProtocolBufferException e) { + throw e; + } catch (IOException e) { + throw new RuntimeException( + "Reading from a ByteString threw an IOException (should " + + "never happen).", e); + } + } + + public MessageType parsePartialFrom(ByteString data) + throws InvalidProtocolBufferException { + return parsePartialFrom(data, EMPTY_REGISTRY); + } + + public MessageType parseFrom(ByteString data, + ExtensionRegistryLite extensionRegistry) + throws InvalidProtocolBufferException { + return checkMessageInitialized(parsePartialFrom(data, extensionRegistry)); + } + + public MessageType parseFrom(ByteString data) + throws InvalidProtocolBufferException { + return parseFrom(data, EMPTY_REGISTRY); + } + + public MessageType parsePartialFrom(byte[] data, int off, int len, + ExtensionRegistryLite extensionRegistry) + throws InvalidProtocolBufferException { + try { + CodedInputStream input = CodedInputStream.newInstance(data, off, len); + MessageType message = parsePartialFrom(input, extensionRegistry); + try { + input.checkLastTagWas(0); + } catch (InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(message); + } + return message; + } catch (InvalidProtocolBufferException e) { + throw e; + } catch (IOException e) { + throw new RuntimeException( + "Reading from a byte array threw an IOException (should " + + "never happen).", e); + } + } + + public MessageType parsePartialFrom(byte[] data, int off, int len) + throws InvalidProtocolBufferException { + return parsePartialFrom(data, off, len, EMPTY_REGISTRY); + } + + public MessageType parsePartialFrom(byte[] data, + ExtensionRegistryLite extensionRegistry) + throws InvalidProtocolBufferException { + return parsePartialFrom(data, 0, data.length, extensionRegistry); + } + + public MessageType parsePartialFrom(byte[] data) + throws InvalidProtocolBufferException { + return parsePartialFrom(data, 0, data.length, EMPTY_REGISTRY); + } + + public MessageType parseFrom(byte[] data, int off, int len, + ExtensionRegistryLite extensionRegistry) + throws InvalidProtocolBufferException { + return checkMessageInitialized( + parsePartialFrom(data, off, len, extensionRegistry)); + } + + public MessageType parseFrom(byte[] data, int off, int len) + throws InvalidProtocolBufferException { + return parseFrom(data, off, len, EMPTY_REGISTRY); + } + + public MessageType parseFrom(byte[] data, + ExtensionRegistryLite extensionRegistry) + throws InvalidProtocolBufferException { + return parseFrom(data, 0, data.length, extensionRegistry); + } + + public MessageType parseFrom(byte[] data) + throws InvalidProtocolBufferException { + return parseFrom(data, EMPTY_REGISTRY); + } + + public MessageType parsePartialFrom(InputStream input, + ExtensionRegistryLite extensionRegistry) + throws InvalidProtocolBufferException { + CodedInputStream codedInput = CodedInputStream.newInstance(input); + MessageType message = parsePartialFrom(codedInput, extensionRegistry); + try { + codedInput.checkLastTagWas(0); + } catch (InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(message); + } + return message; + } + + public MessageType parsePartialFrom(InputStream input) + throws InvalidProtocolBufferException { + return parsePartialFrom(input, EMPTY_REGISTRY); + } + + public MessageType parseFrom(InputStream input, + ExtensionRegistryLite extensionRegistry) + throws InvalidProtocolBufferException { + return checkMessageInitialized( + parsePartialFrom(input, extensionRegistry)); + } + + public MessageType parseFrom(InputStream input) + throws InvalidProtocolBufferException { + return parseFrom(input, EMPTY_REGISTRY); + } + + public MessageType parsePartialDelimitedFrom( + InputStream input, + ExtensionRegistryLite extensionRegistry) + throws InvalidProtocolBufferException { + int size; + try { + int firstByte = input.read(); + if (firstByte == -1) { + return null; + } + size = CodedInputStream.readRawVarint32(firstByte, input); + } catch (IOException e) { + throw new InvalidProtocolBufferException(e.getMessage()); + } + InputStream limitedInput = new LimitedInputStream(input, size); + return parsePartialFrom(limitedInput, extensionRegistry); + } + + public MessageType parsePartialDelimitedFrom(InputStream input) + throws InvalidProtocolBufferException { + return parsePartialDelimitedFrom(input, EMPTY_REGISTRY); + } + + public MessageType parseDelimitedFrom( + InputStream input, + ExtensionRegistryLite extensionRegistry) + throws InvalidProtocolBufferException { + return checkMessageInitialized( + parsePartialDelimitedFrom(input, extensionRegistry)); + } + + public MessageType parseDelimitedFrom(InputStream input) + throws InvalidProtocolBufferException { + return parseDelimitedFrom(input, EMPTY_REGISTRY); + } +} diff --git a/cpp/thirdparty/protobuf-2.3.0/java/src/main/java/com/google/protobuf/BlockingRpcChannel.java b/cpp/thirdparty/protobuf-2.5.0/java/src/main/java/com/google/protobuf/BlockingRpcChannel.java similarity index 100% rename from cpp/thirdparty/protobuf-2.3.0/java/src/main/java/com/google/protobuf/BlockingRpcChannel.java rename to cpp/thirdparty/protobuf-2.5.0/java/src/main/java/com/google/protobuf/BlockingRpcChannel.java diff --git a/cpp/thirdparty/protobuf-2.3.0/java/src/main/java/com/google/protobuf/BlockingService.java b/cpp/thirdparty/protobuf-2.5.0/java/src/main/java/com/google/protobuf/BlockingService.java similarity index 100% rename from cpp/thirdparty/protobuf-2.3.0/java/src/main/java/com/google/protobuf/BlockingService.java rename to cpp/thirdparty/protobuf-2.5.0/java/src/main/java/com/google/protobuf/BlockingService.java diff --git a/cpp/thirdparty/protobuf-2.5.0/java/src/main/java/com/google/protobuf/BoundedByteString.java b/cpp/thirdparty/protobuf-2.5.0/java/src/main/java/com/google/protobuf/BoundedByteString.java new file mode 100644 index 000000000..cd4982c3a --- /dev/null +++ b/cpp/thirdparty/protobuf-2.5.0/java/src/main/java/com/google/protobuf/BoundedByteString.java @@ -0,0 +1,163 @@ +// Protocol Buffers - Google's data interchange format +// Copyright 2008 Google Inc. All rights reserved. +// http://code.google.com/p/protobuf/ +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +package com.google.protobuf; + +import java.util.NoSuchElementException; + +/** + * This class is used to represent the substring of a {@link ByteString} over a + * single byte array. In terms of the public API of {@link ByteString}, you end + * up here by calling {@link ByteString#copyFrom(byte[])} followed by {@link + * ByteString#substring(int, int)}. + * + *

This class contains most of the overhead involved in creating a substring + * from a {@link LiteralByteString}. The overhead involves some range-checking + * and two extra fields. + * + * @author carlanton@google.com (Carl Haverl) + */ +class BoundedByteString extends LiteralByteString { + + private final int bytesOffset; + private final int bytesLength; + + /** + * Creates a {@code BoundedByteString} backed by the sub-range of given array, + * without copying. + * + * @param bytes array to wrap + * @param offset index to first byte to use in bytes + * @param length number of bytes to use from bytes + * @throws IllegalArgumentException if {@code offset < 0}, {@code length < 0}, + * or if {@code offset + length > + * bytes.length}. + */ + BoundedByteString(byte[] bytes, int offset, int length) { + super(bytes); + if (offset < 0) { + throw new IllegalArgumentException("Offset too small: " + offset); + } + if (length < 0) { + throw new IllegalArgumentException("Length too small: " + offset); + } + if ((long) offset + length > bytes.length) { + throw new IllegalArgumentException( + "Offset+Length too large: " + offset + "+" + length); + } + + this.bytesOffset = offset; + this.bytesLength = length; + } + + /** + * Gets the byte at the given index. + * Throws {@link ArrayIndexOutOfBoundsException} + * for backwards-compatibility reasons although it would more properly be + * {@link IndexOutOfBoundsException}. + * + * @param index index of byte + * @return the value + * @throws ArrayIndexOutOfBoundsException {@code index} is < 0 or >= size + */ + @Override + public byte byteAt(int index) { + // We must check the index ourselves as we cannot rely on Java array index + // checking for substrings. + if (index < 0) { + throw new ArrayIndexOutOfBoundsException("Index too small: " + index); + } + if (index >= size()) { + throw new ArrayIndexOutOfBoundsException( + "Index too large: " + index + ", " + size()); + } + + return bytes[bytesOffset + index]; + } + + @Override + public int size() { + return bytesLength; + } + + @Override + protected int getOffsetIntoBytes() { + return bytesOffset; + } + + // ================================================================= + // ByteString -> byte[] + + @Override + protected void copyToInternal(byte[] target, int sourceOffset, + int targetOffset, int numberToCopy) { + System.arraycopy(bytes, getOffsetIntoBytes() + sourceOffset, target, + targetOffset, numberToCopy); + } + + // ================================================================= + // ByteIterator + + @Override + public ByteIterator iterator() { + return new BoundedByteIterator(); + } + + private class BoundedByteIterator implements ByteIterator { + + private int position; + private final int limit; + + private BoundedByteIterator() { + position = getOffsetIntoBytes(); + limit = position + size(); + } + + public boolean hasNext() { + return (position < limit); + } + + public Byte next() { + // Boxing calls Byte.valueOf(byte), which does not instantiate. + return nextByte(); + } + + public byte nextByte() { + if (position >= limit) { + throw new NoSuchElementException(); + } + return bytes[position++]; + } + + public void remove() { + throw new UnsupportedOperationException(); + } + } +} diff --git a/cpp/thirdparty/protobuf-2.5.0/java/src/main/java/com/google/protobuf/ByteString.java b/cpp/thirdparty/protobuf-2.5.0/java/src/main/java/com/google/protobuf/ByteString.java new file mode 100644 index 000000000..73d831f6e --- /dev/null +++ b/cpp/thirdparty/protobuf-2.5.0/java/src/main/java/com/google/protobuf/ByteString.java @@ -0,0 +1,970 @@ +// Protocol Buffers - Google's data interchange format +// Copyright 2008 Google Inc. All rights reserved. +// http://code.google.com/p/protobuf/ +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +package com.google.protobuf; + +import java.io.ByteArrayOutputStream; +import java.io.IOException; +import java.io.InputStream; +import java.io.OutputStream; +import java.io.UnsupportedEncodingException; +import java.nio.ByteBuffer; +import java.util.ArrayList; +import java.util.Collection; +import java.util.Iterator; +import java.util.List; +import java.util.NoSuchElementException; + +/** + * Immutable sequence of bytes. Substring is supported by sharing the reference + * to the immutable underlying bytes, as with {@link String}. Concatenation is + * likewise supported without copying (long strings) by building a tree of + * pieces in {@link RopeByteString}. + *

+ * Like {@link String}, the contents of a {@link ByteString} can never be + * observed to change, not even in the presence of a data race or incorrect + * API usage in the client code. + * + * @author crazybob@google.com Bob Lee + * @author kenton@google.com Kenton Varda + * @author carlanton@google.com Carl Haverl + * @author martinrb@google.com Martin Buchholz + */ +public abstract class ByteString implements Iterable { + + /** + * When two strings to be concatenated have a combined length shorter than + * this, we just copy their bytes on {@link #concat(ByteString)}. + * The trade-off is copy size versus the overhead of creating tree nodes + * in {@link RopeByteString}. + */ + static final int CONCATENATE_BY_COPY_SIZE = 128; + + /** + * When copying an InputStream into a ByteString with .readFrom(), + * the chunks in the underlying rope start at 256 bytes, but double + * each iteration up to 8192 bytes. + */ + static final int MIN_READ_FROM_CHUNK_SIZE = 0x100; // 256b + static final int MAX_READ_FROM_CHUNK_SIZE = 0x2000; // 8k + + /** + * Empty {@code ByteString}. + */ + public static final ByteString EMPTY = new LiteralByteString(new byte[0]); + + // This constructor is here to prevent subclassing outside of this package, + ByteString() {} + + /** + * Gets the byte at the given index. This method should be used only for + * random access to individual bytes. To access bytes sequentially, use the + * {@link ByteIterator} returned by {@link #iterator()}, and call {@link + * #substring(int, int)} first if necessary. + * + * @param index index of byte + * @return the value + * @throws ArrayIndexOutOfBoundsException {@code index} is < 0 or >= size + */ + public abstract byte byteAt(int index); + + /** + * Return a {@link ByteString.ByteIterator} over the bytes in the ByteString. + * To avoid auto-boxing, you may get the iterator manually and call + * {@link ByteIterator#nextByte()}. + * + * @return the iterator + */ + public abstract ByteIterator iterator(); + + /** + * This interface extends {@code Iterator}, so that we can return an + * unboxed {@code byte}. + */ + public interface ByteIterator extends Iterator { + /** + * An alternative to {@link Iterator#next()} that returns an + * unboxed primitive {@code byte}. + * + * @return the next {@code byte} in the iteration + * @throws NoSuchElementException if the iteration has no more elements + */ + byte nextByte(); + } + + /** + * Gets the number of bytes. + * + * @return size in bytes + */ + public abstract int size(); + + /** + * Returns {@code true} if the size is {@code 0}, {@code false} otherwise. + * + * @return true if this is zero bytes long + */ + public boolean isEmpty() { + return size() == 0; + } + + // ================================================================= + // ByteString -> substring + + /** + * Return the substring from {@code beginIndex}, inclusive, to the end of the + * string. + * + * @param beginIndex start at this index + * @return substring sharing underlying data + * @throws IndexOutOfBoundsException if {@code beginIndex < 0} or + * {@code beginIndex > size()}. + */ + public ByteString substring(int beginIndex) { + return substring(beginIndex, size()); + } + + /** + * Return the substring from {@code beginIndex}, inclusive, to {@code + * endIndex}, exclusive. + * + * @param beginIndex start at this index + * @param endIndex the last character is the one before this index + * @return substring sharing underlying data + * @throws IndexOutOfBoundsException if {@code beginIndex < 0}, + * {@code endIndex > size()}, or {@code beginIndex > endIndex}. + */ + public abstract ByteString substring(int beginIndex, int endIndex); + + /** + * Tests if this bytestring starts with the specified prefix. + * Similar to {@link String#startsWith(String)} + * + * @param prefix the prefix. + * @return true if the byte sequence represented by the + * argument is a prefix of the byte sequence represented by + * this string; false otherwise. + */ + public boolean startsWith(ByteString prefix) { + return size() >= prefix.size() && + substring(0, prefix.size()).equals(prefix); + } + + // ================================================================= + // byte[] -> ByteString + + /** + * Copies the given bytes into a {@code ByteString}. + * + * @param bytes source array + * @param offset offset in source array + * @param size number of bytes to copy + * @return new {@code ByteString} + */ + public static ByteString copyFrom(byte[] bytes, int offset, int size) { + byte[] copy = new byte[size]; + System.arraycopy(bytes, offset, copy, 0, size); + return new LiteralByteString(copy); + } + + /** + * Copies the given bytes into a {@code ByteString}. + * + * @param bytes to copy + * @return new {@code ByteString} + */ + public static ByteString copyFrom(byte[] bytes) { + return copyFrom(bytes, 0, bytes.length); + } + + /** + * Copies the next {@code size} bytes from a {@code java.nio.ByteBuffer} into + * a {@code ByteString}. + * + * @param bytes source buffer + * @param size number of bytes to copy + * @return new {@code ByteString} + */ + public static ByteString copyFrom(ByteBuffer bytes, int size) { + byte[] copy = new byte[size]; + bytes.get(copy); + return new LiteralByteString(copy); + } + + /** + * Copies the remaining bytes from a {@code java.nio.ByteBuffer} into + * a {@code ByteString}. + * + * @param bytes sourceBuffer + * @return new {@code ByteString} + */ + public static ByteString copyFrom(ByteBuffer bytes) { + return copyFrom(bytes, bytes.remaining()); + } + + /** + * Encodes {@code text} into a sequence of bytes using the named charset + * and returns the result as a {@code ByteString}. + * + * @param text source string + * @param charsetName encoding to use + * @return new {@code ByteString} + * @throws UnsupportedEncodingException if the encoding isn't found + */ + public static ByteString copyFrom(String text, String charsetName) + throws UnsupportedEncodingException { + return new LiteralByteString(text.getBytes(charsetName)); + } + + /** + * Encodes {@code text} into a sequence of UTF-8 bytes and returns the + * result as a {@code ByteString}. + * + * @param text source string + * @return new {@code ByteString} + */ + public static ByteString copyFromUtf8(String text) { + try { + return new LiteralByteString(text.getBytes("UTF-8")); + } catch (UnsupportedEncodingException e) { + throw new RuntimeException("UTF-8 not supported?", e); + } + } + + // ================================================================= + // InputStream -> ByteString + + /** + * Completely reads the given stream's bytes into a + * {@code ByteString}, blocking if necessary until all bytes are + * read through to the end of the stream. + * + * Performance notes: The returned {@code ByteString} is an + * immutable tree of byte arrays ("chunks") of the stream data. The + * first chunk is small, with subsequent chunks each being double + * the size, up to 8K. If the caller knows the precise length of + * the stream and wishes to avoid all unnecessary copies and + * allocations, consider using the two-argument version of this + * method, below. + * + * @param streamToDrain The source stream, which is read completely + * but not closed. + * @return A new {@code ByteString} which is made up of chunks of + * various sizes, depending on the behavior of the underlying + * stream. + * @throws IOException IOException is thrown if there is a problem + * reading the underlying stream. + */ + public static ByteString readFrom(InputStream streamToDrain) + throws IOException { + return readFrom( + streamToDrain, MIN_READ_FROM_CHUNK_SIZE, MAX_READ_FROM_CHUNK_SIZE); + } + + /** + * Completely reads the given stream's bytes into a + * {@code ByteString}, blocking if necessary until all bytes are + * read through to the end of the stream. + * + * Performance notes: The returned {@code ByteString} is an + * immutable tree of byte arrays ("chunks") of the stream data. The + * chunkSize parameter sets the size of these byte arrays. In + * particular, if the chunkSize is precisely the same as the length + * of the stream, unnecessary allocations and copies will be + * avoided. Otherwise, the chunks will be of the given size, except + * for the last chunk, which will be resized (via a reallocation and + * copy) to contain the remainder of the stream. + * + * @param streamToDrain The source stream, which is read completely + * but not closed. + * @param chunkSize The size of the chunks in which to read the + * stream. + * @return A new {@code ByteString} which is made up of chunks of + * the given size. + * @throws IOException IOException is thrown if there is a problem + * reading the underlying stream. + */ + public static ByteString readFrom(InputStream streamToDrain, int chunkSize) + throws IOException { + return readFrom(streamToDrain, chunkSize, chunkSize); + } + + // Helper method that takes the chunk size range as a parameter. + public static ByteString readFrom(InputStream streamToDrain, int minChunkSize, + int maxChunkSize) throws IOException { + Collection results = new ArrayList(); + + // copy the inbound bytes into a list of chunks; the chunk size + // grows exponentially to support both short and long streams. + int chunkSize = minChunkSize; + while (true) { + ByteString chunk = readChunk(streamToDrain, chunkSize); + if (chunk == null) { + break; + } + results.add(chunk); + chunkSize = Math.min(chunkSize * 2, maxChunkSize); + } + + return ByteString.copyFrom(results); + } + + /** + * Blocks until a chunk of the given size can be made from the + * stream, or EOF is reached. Calls read() repeatedly in case the + * given stream implementation doesn't completely fill the given + * buffer in one read() call. + * + * @return A chunk of the desired size, or else a chunk as large as + * was available when end of stream was reached. Returns null if the + * given stream had no more data in it. + */ + private static ByteString readChunk(InputStream in, final int chunkSize) + throws IOException { + final byte[] buf = new byte[chunkSize]; + int bytesRead = 0; + while (bytesRead < chunkSize) { + final int count = in.read(buf, bytesRead, chunkSize - bytesRead); + if (count == -1) { + break; + } + bytesRead += count; + } + + if (bytesRead == 0) { + return null; + } else { + return ByteString.copyFrom(buf, 0, bytesRead); + } + } + + // ================================================================= + // Multiple ByteStrings -> One ByteString + + /** + * Concatenate the given {@code ByteString} to this one. Short concatenations, + * of total size smaller than {@link ByteString#CONCATENATE_BY_COPY_SIZE}, are + * produced by copying the underlying bytes (as per Rope.java, + * BAP95 . In general, the concatenate involves no copying. + * + * @param other string to concatenate + * @return a new {@code ByteString} instance + */ + public ByteString concat(ByteString other) { + int thisSize = size(); + int otherSize = other.size(); + if ((long) thisSize + otherSize >= Integer.MAX_VALUE) { + throw new IllegalArgumentException("ByteString would be too long: " + + thisSize + "+" + otherSize); + } + + return RopeByteString.concatenate(this, other); + } + + /** + * Concatenates all byte strings in the iterable and returns the result. + * This is designed to run in O(list size), not O(total bytes). + * + *

The returned {@code ByteString} is not necessarily a unique object. + * If the list is empty, the returned object is the singleton empty + * {@code ByteString}. If the list has only one element, that + * {@code ByteString} will be returned without copying. + * + * @param byteStrings strings to be concatenated + * @return new {@code ByteString} + */ + public static ByteString copyFrom(Iterable byteStrings) { + Collection collection; + if (!(byteStrings instanceof Collection)) { + collection = new ArrayList(); + for (ByteString byteString : byteStrings) { + collection.add(byteString); + } + } else { + collection = (Collection) byteStrings; + } + ByteString result; + if (collection.isEmpty()) { + result = EMPTY; + } else { + result = balancedConcat(collection.iterator(), collection.size()); + } + return result; + } + + // Internal function used by copyFrom(Iterable). + // Create a balanced concatenation of the next "length" elements from the + // iterable. + private static ByteString balancedConcat(Iterator iterator, + int length) { + assert length >= 1; + ByteString result; + if (length == 1) { + result = iterator.next(); + } else { + int halfLength = length >>> 1; + ByteString left = balancedConcat(iterator, halfLength); + ByteString right = balancedConcat(iterator, length - halfLength); + result = left.concat(right); + } + return result; + } + + // ================================================================= + // ByteString -> byte[] + + /** + * Copies bytes into a buffer at the given offset. + * + * @param target buffer to copy into + * @param offset in the target buffer + * @throws IndexOutOfBoundsException if the offset is negative or too large + */ + public void copyTo(byte[] target, int offset) { + copyTo(target, 0, offset, size()); + } + + /** + * Copies bytes into a buffer. + * + * @param target buffer to copy into + * @param sourceOffset offset within these bytes + * @param targetOffset offset within the target buffer + * @param numberToCopy number of bytes to copy + * @throws IndexOutOfBoundsException if an offset or size is negative or too + * large + */ + public void copyTo(byte[] target, int sourceOffset, int targetOffset, + int numberToCopy) { + if (sourceOffset < 0) { + throw new IndexOutOfBoundsException("Source offset < 0: " + sourceOffset); + } + if (targetOffset < 0) { + throw new IndexOutOfBoundsException("Target offset < 0: " + targetOffset); + } + if (numberToCopy < 0) { + throw new IndexOutOfBoundsException("Length < 0: " + numberToCopy); + } + if (sourceOffset + numberToCopy > size()) { + throw new IndexOutOfBoundsException( + "Source end offset < 0: " + (sourceOffset + numberToCopy)); + } + if (targetOffset + numberToCopy > target.length) { + throw new IndexOutOfBoundsException( + "Target end offset < 0: " + (targetOffset + numberToCopy)); + } + if (numberToCopy > 0) { + copyToInternal(target, sourceOffset, targetOffset, numberToCopy); + } + } + + /** + * Internal (package private) implementation of + * @link{#copyTo(byte[],int,int,int}. + * It assumes that all error checking has already been performed and that + * @code{numberToCopy > 0}. + */ + protected abstract void copyToInternal(byte[] target, int sourceOffset, + int targetOffset, int numberToCopy); + + /** + * Copies bytes into a ByteBuffer. + * + * @param target ByteBuffer to copy into. + * @throws java.nio.ReadOnlyBufferException if the {@code target} is read-only + * @throws java.nio.BufferOverflowException if the {@code target}'s + * remaining() space is not large enough to hold the data. + */ + public abstract void copyTo(ByteBuffer target); + + /** + * Copies bytes to a {@code byte[]}. + * + * @return copied bytes + */ + public byte[] toByteArray() { + int size = size(); + byte[] result = new byte[size]; + copyToInternal(result, 0, 0, size); + return result; + } + + /** + * Writes the complete contents of this byte string to + * the specified output stream argument. + * + * @param out the output stream to which to write the data. + * @throws IOException if an I/O error occurs. + */ + public abstract void writeTo(OutputStream out) throws IOException; + + /** + * Constructs a read-only {@code java.nio.ByteBuffer} whose content + * is equal to the contents of this byte string. + * The result uses the same backing array as the byte string, if possible. + * + * @return wrapped bytes + */ + public abstract ByteBuffer asReadOnlyByteBuffer(); + + /** + * Constructs a list of read-only {@code java.nio.ByteBuffer} objects + * such that the concatenation of their contents is equal to the contents + * of this byte string. The result uses the same backing arrays as the + * byte string. + *

+ * By returning a list, implementations of this method may be able to avoid + * copying even when there are multiple backing arrays. + * + * @return a list of wrapped bytes + */ + public abstract List asReadOnlyByteBufferList(); + + /** + * Constructs a new {@code String} by decoding the bytes using the + * specified charset. + * + * @param charsetName encode using this charset + * @return new string + * @throws UnsupportedEncodingException if charset isn't recognized + */ + public abstract String toString(String charsetName) + throws UnsupportedEncodingException; + + // ================================================================= + // UTF-8 decoding + + /** + * Constructs a new {@code String} by decoding the bytes as UTF-8. + * + * @return new string using UTF-8 encoding + */ + public String toStringUtf8() { + try { + return toString("UTF-8"); + } catch (UnsupportedEncodingException e) { + throw new RuntimeException("UTF-8 not supported?", e); + } + } + + /** + * Tells whether this {@code ByteString} represents a well-formed UTF-8 + * byte sequence, such that the original bytes can be converted to a + * String object and then round tripped back to bytes without loss. + * + *

More precisely, returns {@code true} whenever:

 {@code
+   * Arrays.equals(byteString.toByteArray(),
+   *     new String(byteString.toByteArray(), "UTF-8").getBytes("UTF-8"))
+   * }
+ * + *

This method returns {@code false} for "overlong" byte sequences, + * as well as for 3-byte sequences that would map to a surrogate + * character, in accordance with the restricted definition of UTF-8 + * introduced in Unicode 3.1. Note that the UTF-8 decoder included in + * Oracle's JDK has been modified to also reject "overlong" byte + * sequences, but (as of 2011) still accepts 3-byte surrogate + * character byte sequences. + * + *

See the Unicode Standard,
+ * Table 3-6. UTF-8 Bit Distribution,
+ * Table 3-7. Well Formed UTF-8 Byte Sequences. + * + * @return whether the bytes in this {@code ByteString} are a + * well-formed UTF-8 byte sequence + */ + public abstract boolean isValidUtf8(); + + /** + * Tells whether the given byte sequence is a well-formed, malformed, or + * incomplete UTF-8 byte sequence. This method accepts and returns a partial + * state result, allowing the bytes for a complete UTF-8 byte sequence to be + * composed from multiple {@code ByteString} segments. + * + * @param state either {@code 0} (if this is the initial decoding operation) + * or the value returned from a call to a partial decoding method for the + * previous bytes + * @param offset offset of the first byte to check + * @param length number of bytes to check + * + * @return {@code -1} if the partial byte sequence is definitely malformed, + * {@code 0} if it is well-formed (no additional input needed), or, if the + * byte sequence is "incomplete", i.e. apparently terminated in the middle of + * a character, an opaque integer "state" value containing enough information + * to decode the character when passed to a subsequent invocation of a + * partial decoding method. + */ + protected abstract int partialIsValidUtf8(int state, int offset, int length); + + // ================================================================= + // equals() and hashCode() + + @Override + public abstract boolean equals(Object o); + + /** + * Return a non-zero hashCode depending only on the sequence of bytes + * in this ByteString. + * + * @return hashCode value for this object + */ + @Override + public abstract int hashCode(); + + // ================================================================= + // Input stream + + /** + * Creates an {@code InputStream} which can be used to read the bytes. + *

+ * The {@link InputStream} returned by this method is guaranteed to be + * completely non-blocking. The method {@link InputStream#available()} + * returns the number of bytes remaining in the stream. The methods + * {@link InputStream#read(byte[]), {@link InputStream#read(byte[],int,int)} + * and {@link InputStream#skip(long)} will read/skip as many bytes as are + * available. + *

+ * The methods in the returned {@link InputStream} might not be + * thread safe. + * + * @return an input stream that returns the bytes of this byte string. + */ + public abstract InputStream newInput(); + + /** + * Creates a {@link CodedInputStream} which can be used to read the bytes. + * Using this is often more efficient than creating a {@link CodedInputStream} + * that wraps the result of {@link #newInput()}. + * + * @return stream based on wrapped data + */ + public abstract CodedInputStream newCodedInput(); + + // ================================================================= + // Output stream + + /** + * Creates a new {@link Output} with the given initial capacity. Call {@link + * Output#toByteString()} to create the {@code ByteString} instance. + *

+ * A {@link ByteString.Output} offers the same functionality as a + * {@link ByteArrayOutputStream}, except that it returns a {@link ByteString} + * rather than a {@code byte} array. + * + * @param initialCapacity estimate of number of bytes to be written + * @return {@code OutputStream} for building a {@code ByteString} + */ + public static Output newOutput(int initialCapacity) { + return new Output(initialCapacity); + } + + /** + * Creates a new {@link Output}. Call {@link Output#toByteString()} to create + * the {@code ByteString} instance. + *

+ * A {@link ByteString.Output} offers the same functionality as a + * {@link ByteArrayOutputStream}, except that it returns a {@link ByteString} + * rather than a {@code byte array}. + * + * @return {@code OutputStream} for building a {@code ByteString} + */ + public static Output newOutput() { + return new Output(CONCATENATE_BY_COPY_SIZE); + } + + /** + * Outputs to a {@code ByteString} instance. Call {@link #toByteString()} to + * create the {@code ByteString} instance. + */ + public static final class Output extends OutputStream { + // Implementation note. + // The public methods of this class must be synchronized. ByteStrings + // are guaranteed to be immutable. Without some sort of locking, it could + // be possible for one thread to call toByteSring(), while another thread + // is still modifying the underlying byte array. + + private static final byte[] EMPTY_BYTE_ARRAY = new byte[0]; + // argument passed by user, indicating initial capacity. + private final int initialCapacity; + // ByteStrings to be concatenated to create the result + private final ArrayList flushedBuffers; + // Total number of bytes in the ByteStrings of flushedBuffers + private int flushedBuffersTotalBytes; + // Current buffer to which we are writing + private byte[] buffer; + // Location in buffer[] to which we write the next byte. + private int bufferPos; + + /** + * Creates a new ByteString output stream with the specified + * initial capacity. + * + * @param initialCapacity the initial capacity of the output stream. + */ + Output(int initialCapacity) { + if (initialCapacity < 0) { + throw new IllegalArgumentException("Buffer size < 0"); + } + this.initialCapacity = initialCapacity; + this.flushedBuffers = new ArrayList(); + this.buffer = new byte[initialCapacity]; + } + + @Override + public synchronized void write(int b) { + if (bufferPos == buffer.length) { + flushFullBuffer(1); + } + buffer[bufferPos++] = (byte)b; + } + + @Override + public synchronized void write(byte[] b, int offset, int length) { + if (length <= buffer.length - bufferPos) { + // The bytes can fit into the current buffer. + System.arraycopy(b, offset, buffer, bufferPos, length); + bufferPos += length; + } else { + // Use up the current buffer + int copySize = buffer.length - bufferPos; + System.arraycopy(b, offset, buffer, bufferPos, copySize); + offset += copySize; + length -= copySize; + // Flush the buffer, and get a new buffer at least big enough to cover + // what we still need to output + flushFullBuffer(length); + System.arraycopy(b, offset, buffer, 0 /* count */, length); + bufferPos = length; + } + } + + /** + * Creates a byte string. Its size is the current size of this output + * stream and its output has been copied to it. + * + * @return the current contents of this output stream, as a byte string. + */ + public synchronized ByteString toByteString() { + flushLastBuffer(); + return ByteString.copyFrom(flushedBuffers); + } + + /** + * Implement java.util.Arrays.copyOf() for jdk 1.5. + */ + private byte[] copyArray(byte[] buffer, int length) { + byte[] result = new byte[length]; + System.arraycopy(buffer, 0, result, 0, Math.min(buffer.length, length)); + return result; + } + + /** + * Writes the complete contents of this byte array output stream to + * the specified output stream argument. + * + * @param out the output stream to which to write the data. + * @throws IOException if an I/O error occurs. + */ + public void writeTo(OutputStream out) throws IOException { + ByteString[] cachedFlushBuffers; + byte[] cachedBuffer; + int cachedBufferPos; + synchronized (this) { + // Copy the information we need into local variables so as to hold + // the lock for as short a time as possible. + cachedFlushBuffers = + flushedBuffers.toArray(new ByteString[flushedBuffers.size()]); + cachedBuffer = buffer; + cachedBufferPos = bufferPos; + } + for (ByteString byteString : cachedFlushBuffers) { + byteString.writeTo(out); + } + + out.write(copyArray(cachedBuffer, cachedBufferPos)); + } + + /** + * Returns the current size of the output stream. + * + * @return the current size of the output stream + */ + public synchronized int size() { + return flushedBuffersTotalBytes + bufferPos; + } + + /** + * Resets this stream, so that all currently accumulated output in the + * output stream is discarded. The output stream can be used again, + * reusing the already allocated buffer space. + */ + public synchronized void reset() { + flushedBuffers.clear(); + flushedBuffersTotalBytes = 0; + bufferPos = 0; + } + + @Override + public String toString() { + return String.format("", + Integer.toHexString(System.identityHashCode(this)), size()); + } + + /** + * Internal function used by writers. The current buffer is full, and the + * writer needs a new buffer whose size is at least the specified minimum + * size. + */ + private void flushFullBuffer(int minSize) { + flushedBuffers.add(new LiteralByteString(buffer)); + flushedBuffersTotalBytes += buffer.length; + // We want to increase our total capacity by 50%, but as a minimum, + // the new buffer should also at least be >= minSize and + // >= initial Capacity. + int newSize = Math.max(initialCapacity, + Math.max(minSize, flushedBuffersTotalBytes >>> 1)); + buffer = new byte[newSize]; + bufferPos = 0; + } + + /** + * Internal function used by {@link #toByteString()}. The current buffer may + * or may not be full, but it needs to be flushed. + */ + private void flushLastBuffer() { + if (bufferPos < buffer.length) { + if (bufferPos > 0) { + byte[] bufferCopy = copyArray(buffer, bufferPos); + flushedBuffers.add(new LiteralByteString(bufferCopy)); + } + // We reuse this buffer for further writes. + } else { + // Buffer is completely full. Huzzah. + flushedBuffers.add(new LiteralByteString(buffer)); + // 99% of the time, we're not going to use this OutputStream again. + // We set buffer to an empty byte stream so that we're handling this + // case without wasting space. In the rare case that more writes + // *do* occur, this empty buffer will be flushed and an appropriately + // sized new buffer will be created. + buffer = EMPTY_BYTE_ARRAY; + } + flushedBuffersTotalBytes += bufferPos; + bufferPos = 0; + } + } + + /** + * Constructs a new {@code ByteString} builder, which allows you to + * efficiently construct a {@code ByteString} by writing to a {@link + * CodedOutputStream}. Using this is much more efficient than calling {@code + * newOutput()} and wrapping that in a {@code CodedOutputStream}. + * + *

This is package-private because it's a somewhat confusing interface. + * Users can call {@link Message#toByteString()} instead of calling this + * directly. + * + * @param size The target byte size of the {@code ByteString}. You must write + * exactly this many bytes before building the result. + * @return the builder + */ + static CodedBuilder newCodedBuilder(int size) { + return new CodedBuilder(size); + } + + /** See {@link ByteString#newCodedBuilder(int)}. */ + static final class CodedBuilder { + private final CodedOutputStream output; + private final byte[] buffer; + + private CodedBuilder(int size) { + buffer = new byte[size]; + output = CodedOutputStream.newInstance(buffer); + } + + public ByteString build() { + output.checkNoSpaceLeft(); + + // We can be confident that the CodedOutputStream will not modify the + // underlying bytes anymore because it already wrote all of them. So, + // no need to make a copy. + return new LiteralByteString(buffer); + } + + public CodedOutputStream getCodedOutput() { + return output; + } + } + + // ================================================================= + // Methods {@link RopeByteString} needs on instances, which aren't part of the + // public API. + + /** + * Return the depth of the tree representing this {@code ByteString}, if any, + * whose root is this node. If this is a leaf node, return 0. + * + * @return tree depth or zero + */ + protected abstract int getTreeDepth(); + + /** + * Return {@code true} if this ByteString is literal (a leaf node) or a + * flat-enough tree in the sense of {@link RopeByteString}. + * + * @return true if the tree is flat enough + */ + protected abstract boolean isBalanced(); + + /** + * Return the cached hash code if available. + * + * @return value of cached hash code or 0 if not computed yet + */ + protected abstract int peekCachedHashCode(); + + /** + * Compute the hash across the value bytes starting with the given hash, and + * return the result. This is used to compute the hash across strings + * represented as a set of pieces by allowing the hash computation to be + * continued from piece to piece. + * + * @param h starting hash value + * @param offset offset into this value to start looking at data values + * @param length number of data values to include in the hash computation + * @return ending hash value + */ + protected abstract int partialHash(int h, int offset, int length); + + @Override + public String toString() { + return String.format("", + Integer.toHexString(System.identityHashCode(this)), size()); + } +} diff --git a/cpp/thirdparty/protobuf-2.3.0/java/src/main/java/com/google/protobuf/CodedInputStream.java b/cpp/thirdparty/protobuf-2.5.0/java/src/main/java/com/google/protobuf/CodedInputStream.java similarity index 90% rename from cpp/thirdparty/protobuf-2.3.0/java/src/main/java/com/google/protobuf/CodedInputStream.java rename to cpp/thirdparty/protobuf-2.5.0/java/src/main/java/com/google/protobuf/CodedInputStream.java index ad43f96d4..33417a7ff 100644 --- a/cpp/thirdparty/protobuf-2.3.0/java/src/main/java/com/google/protobuf/CodedInputStream.java +++ b/cpp/thirdparty/protobuf-2.5.0/java/src/main/java/com/google/protobuf/CodedInputStream.java @@ -67,7 +67,25 @@ public final class CodedInputStream { */ public static CodedInputStream newInstance(final byte[] buf, final int off, final int len) { - return new CodedInputStream(buf, off, len); + CodedInputStream result = new CodedInputStream(buf, off, len); + try { + // Some uses of CodedInputStream can be more efficient if they know + // exactly how many bytes are available. By pushing the end point of the + // buffer as a limit, we allow them to get this information via + // getBytesUntilLimit(). Pushing a limit that we know is at the end of + // the stream can never hurt, since we can never past that point anyway. + result.pushLimit(len); + } catch (InvalidProtocolBufferException ex) { + // The only reason pushLimit() might throw an exception here is if len + // is negative. Normally pushLimit()'s parameter comes directly off the + // wire, so it's important to catch exceptions in case of corrupt or + // malicious data. However, in this case, we expect that len is not a + // user-supplied value, so we can assume that it being negative indicates + // a programming error. Therefore, throwing an unchecked exception is + // appropriate. + throw new IllegalArgumentException(ex); + } + return result; } // ----------------------------------------------------------------- @@ -225,6 +243,23 @@ public final class CodedInputStream { --recursionDepth; } + /** Read a {@code group} field value from the stream. */ + public T readGroup( + final int fieldNumber, + final Parser parser, + final ExtensionRegistryLite extensionRegistry) + throws IOException { + if (recursionDepth >= recursionLimit) { + throw InvalidProtocolBufferException.recursionLimitExceeded(); + } + ++recursionDepth; + T result = parser.parsePartialFrom(this, extensionRegistry); + checkLastTagWas( + WireFormat.makeTag(fieldNumber, WireFormat.WIRETYPE_END_GROUP)); + --recursionDepth; + return result; + } + /** * Reads a {@code group} field value from the stream and merges it into the * given {@link UnknownFieldSet}. @@ -260,10 +295,30 @@ public final class CodedInputStream { popLimit(oldLimit); } + /** Read an embedded message field value from the stream. */ + public T readMessage( + final Parser parser, + final ExtensionRegistryLite extensionRegistry) + throws IOException { + int length = readRawVarint32(); + if (recursionDepth >= recursionLimit) { + throw InvalidProtocolBufferException.recursionLimitExceeded(); + } + final int oldLimit = pushLimit(length); + ++recursionDepth; + T result = parser.parsePartialFrom(this, extensionRegistry); + checkLastTagWas(0); + --recursionDepth; + popLimit(oldLimit); + return result; + } + /** Read a {@code bytes} field value from the stream. */ public ByteString readBytes() throws IOException { final int size = readRawVarint32(); - if (size <= (bufferSize - bufferPos) && size > 0) { + if (size == 0) { + return ByteString.EMPTY; + } else if (size <= (bufferSize - bufferPos) && size > 0) { // Fast path: We already have the bytes in a contiguous buffer, so // just copy directly from it. final ByteString result = ByteString.copyFrom(buffer, bufferPos, size); @@ -368,8 +423,8 @@ public final class CodedInputStream { * has already read one byte. This allows the caller to determine if EOF * has been reached before attempting to read. */ - static int readRawVarint32(final int firstByte, - final InputStream input) throws IOException { + public static int readRawVarint32( + final int firstByte, final InputStream input) throws IOException { if ((firstByte & 0x80) == 0) { return firstByte; } @@ -581,7 +636,7 @@ public final class CodedInputStream { * refreshing its buffer. If you need to prevent reading past a certain * point in the underlying {@code InputStream} (e.g. because you expect it to * contain more data after the end of the message which you need to handle - * differently) then you must place a wrapper around you {@code InputStream} + * differently) then you must place a wrapper around your {@code InputStream} * which limits the amount of data that can be read from it. * * @return the old limit. @@ -656,7 +711,7 @@ public final class CodedInputStream { /** * Called with {@code this.buffer} is empty to read more bytes from the - * input. If {@code mustSucceed} is true, refillBuffer() gurantees that + * input. If {@code mustSucceed} is true, refillBuffer() guarantees that * either there will be at least one byte in the buffer when it returns * or it will throw an exception. If {@code mustSucceed} is false, * refillBuffer() returns false if no more bytes were available. @@ -847,19 +902,19 @@ public final class CodedInputStream { } else { // Skipping more bytes than are in the buffer. First skip what we have. int pos = bufferSize - bufferPos; - totalBytesRetired += pos; - bufferPos = 0; - bufferSize = 0; + bufferPos = bufferSize; - // Then skip directly from the InputStream for the rest. - while (pos < size) { - final int n = (input == null) ? -1 : (int) input.skip(size - pos); - if (n <= 0) { - throw InvalidProtocolBufferException.truncatedMessage(); - } - pos += n; - totalBytesRetired += n; + // Keep refilling the buffer until we get to the point we wanted to skip + // to. This has the side effect of ensuring the limits are updated + // correctly. + refillBuffer(true); + while (size - pos > bufferSize) { + pos += bufferSize; + bufferPos = bufferSize; + refillBuffer(true); } + + bufferPos = size - pos; } } } diff --git a/cpp/thirdparty/protobuf-2.3.0/java/src/main/java/com/google/protobuf/CodedOutputStream.java b/cpp/thirdparty/protobuf-2.5.0/java/src/main/java/com/google/protobuf/CodedOutputStream.java similarity index 91% rename from cpp/thirdparty/protobuf-2.3.0/java/src/main/java/com/google/protobuf/CodedOutputStream.java rename to cpp/thirdparty/protobuf-2.5.0/java/src/main/java/com/google/protobuf/CodedOutputStream.java index 58dd15067..ca24638dd 100644 --- a/cpp/thirdparty/protobuf-2.3.0/java/src/main/java/com/google/protobuf/CodedOutputStream.java +++ b/cpp/thirdparty/protobuf-2.5.0/java/src/main/java/com/google/protobuf/CodedOutputStream.java @@ -30,8 +30,9 @@ package com.google.protobuf; -import java.io.OutputStream; import java.io.IOException; +import java.io.InputStream; +import java.io.OutputStream; import java.io.UnsupportedEncodingException; /** @@ -381,9 +382,8 @@ public final class CodedOutputStream { /** Write a {@code bytes} field to the stream. */ public void writeBytesNoTag(final ByteString value) throws IOException { - final byte[] bytes = value.toByteArray(); - writeRawVarint32(bytes.length); - writeRawBytes(bytes); + writeRawVarint32(value.size()); + writeRawBytes(value); } /** Write a {@code uint32} field to the stream. */ @@ -396,7 +396,7 @@ public final class CodedOutputStream { * for converting the enum value to its numeric value. */ public void writeEnumNoTag(final int value) throws IOException { - writeRawVarint32(value); + writeInt32NoTag(value); } /** Write an {@code sfixed32} field to the stream. */ @@ -539,6 +539,15 @@ public final class CodedOutputStream { return computeTagSize(fieldNumber) + computeBytesSizeNoTag(value); } + /** + * Compute the number of bytes that would be needed to encode an + * embedded message in lazy field, including tag. + */ + public static int computeLazyFieldSize(final int fieldNumber, + final LazyField value) { + return computeTagSize(fieldNumber) + computeLazyFieldSizeNoTag(value); + } + /** * Compute the number of bytes that would be needed to encode a * {@code uint32} field, including tag. @@ -614,6 +623,18 @@ public final class CodedOutputStream { computeBytesSize(WireFormat.MESSAGE_SET_MESSAGE, value); } + /** + * Compute the number of bytes that would be needed to encode an + * lazily parsed MessageSet extension field to the stream. For + * historical reasons, the wire format differs from normal fields. + */ + public static int computeLazyFieldMessageSetExtensionSize( + final int fieldNumber, final LazyField value) { + return computeTagSize(WireFormat.MESSAGE_SET_ITEM) * 2 + + computeUInt32Size(WireFormat.MESSAGE_SET_TYPE_ID, fieldNumber) + + computeLazyFieldSize(WireFormat.MESSAGE_SET_MESSAGE, value); + } + // ----------------------------------------------------------------- /** @@ -729,6 +750,15 @@ public final class CodedOutputStream { return computeRawVarint32Size(size) + size; } + /** + * Compute the number of bytes that would be needed to encode an embedded + * message stored in lazy field. + */ + public static int computeLazyFieldSizeNoTag(final LazyField value) { + final int size = value.getSerializedSize(); + return computeRawVarint32Size(size) + size; + } + /** * Compute the number of bytes that would be needed to encode a * {@code bytes} field. @@ -751,7 +781,7 @@ public final class CodedOutputStream { * Caller is responsible for converting the enum value to its numeric value. */ public static int computeEnumSizeNoTag(final int value) { - return computeRawVarint32Size(value); + return computeInt32SizeNoTag(value); } /** @@ -870,6 +900,11 @@ public final class CodedOutputStream { writeRawByte((byte) value); } + /** Write a byte string. */ + public void writeRawBytes(final ByteString value) throws IOException { + writeRawBytes(value, 0, value.size()); + } + /** Write an array of bytes. */ public void writeRawBytes(final byte[] value) throws IOException { writeRawBytes(value, 0, value.length); @@ -906,6 +941,53 @@ public final class CodedOutputStream { } } + /** Write part of a byte string. */ + public void writeRawBytes(final ByteString value, int offset, int length) + throws IOException { + if (limit - position >= length) { + // We have room in the current buffer. + value.copyTo(buffer, offset, position, length); + position += length; + } else { + // Write extends past current buffer. Fill the rest of this buffer and + // flush. + final int bytesWritten = limit - position; + value.copyTo(buffer, offset, position, bytesWritten); + offset += bytesWritten; + length -= bytesWritten; + position = limit; + refreshBuffer(); + + // Now deal with the rest. + // Since we have an output stream, this is our buffer + // and buffer offset == 0 + if (length <= limit) { + // Fits in new buffer. + value.copyTo(buffer, offset, 0, length); + position = length; + } else { + // Write is very big, but we can't do it all at once without allocating + // an a copy of the byte array since ByteString does not give us access + // to the underlying bytes. Use the InputStream interface on the + // ByteString and our buffer to copy between the two. + InputStream inputStreamFrom = value.newInput(); + if (offset != inputStreamFrom.skip(offset)) { + throw new IllegalStateException("Skip failed? Should never happen."); + } + // Use the buffer as the temporary buffer to avoid allocating memory. + while (length > 0) { + int bytesToRead = Math.min(length, limit); + int bytesRead = inputStreamFrom.read(buffer, 0, bytesToRead); + if (bytesRead != bytesToRead) { + throw new IllegalStateException("Read failed? Should never happen"); + } + output.write(buffer, 0, bytesRead); + length -= bytesRead; + } + } + } + } + /** Encode and write a tag. */ public void writeTag(final int fieldNumber, final int wireType) throws IOException { diff --git a/cpp/thirdparty/protobuf-2.3.0/java/src/main/java/com/google/protobuf/Descriptors.java b/cpp/thirdparty/protobuf-2.5.0/java/src/main/java/com/google/protobuf/Descriptors.java similarity index 91% rename from cpp/thirdparty/protobuf-2.3.0/java/src/main/java/com/google/protobuf/Descriptors.java rename to cpp/thirdparty/protobuf-2.5.0/java/src/main/java/com/google/protobuf/Descriptors.java index c5e9a04be..a4913053b 100644 --- a/cpp/thirdparty/protobuf-2.3.0/java/src/main/java/com/google/protobuf/Descriptors.java +++ b/cpp/thirdparty/protobuf-2.5.0/java/src/main/java/com/google/protobuf/Descriptors.java @@ -35,8 +35,10 @@ import com.google.protobuf.DescriptorProtos.*; import java.util.Arrays; import java.util.Collections; import java.util.HashMap; +import java.util.HashSet; import java.util.List; import java.util.Map; +import java.util.Set; import java.io.UnsupportedEncodingException; /** @@ -46,6 +48,11 @@ import java.io.UnsupportedEncodingException; * its fields and other information about a type. You can get a message * type's descriptor by calling {@code MessageType.getDescriptor()}, or * (given a message object of the type) {@code message.getDescriptorForType()}. + * Furthermore, each message is associated with a {@link FileDescriptor} for + * a relevant {@code .proto} file. You can obtain it by calling + * {@code Descriptor.getFile()}. A {@link FileDescriptor} contains descriptors + * for all the messages defined in that file, and file descriptors for all the + * imported {@code .proto} files. * * Descriptors are built from DescriptorProtos, as defined in * {@code google/protobuf/descriptor.proto}. @@ -55,6 +62,9 @@ import java.io.UnsupportedEncodingException; public final class Descriptors { /** * Describes a {@code .proto} file, including everything defined within. + * That includes, in particular, descriptors for all the messages and + * file descriptors for all other imported {@code .proto} files + * (dependencies). */ public static final class FileDescriptor { /** Convert the descriptor to its protocol message representation. */ @@ -98,6 +108,11 @@ public final class Descriptors { return Collections.unmodifiableList(Arrays.asList(dependencies)); } + /** Get a list of this file's public dependencies (public imports). */ + public List getPublicDependencies() { + return Collections.unmodifiableList(Arrays.asList(publicDependencies)); + } + /** * Find a message type in the file by name. Does not find nested types. * @@ -208,7 +223,7 @@ public final class Descriptors { public static FileDescriptor buildFrom(final FileDescriptorProto proto, final FileDescriptor[] dependencies) throws DescriptorValidationException { - // Building decsriptors involves two steps: translating and linking. + // Building descriptors involves two steps: translating and linking. // In the translation step (implemented by FileDescriptor's // constructor), we build an object tree mirroring the // FileDescriptorProto's tree and put all of the descriptors into the @@ -309,12 +324,12 @@ public final class Descriptors { * {@link FileDescriptor#internalBuildGeneratedFileFrom}, the caller * provides a callback implementing this interface. The callback is called * after the FileDescriptor has been constructed, in order to assign all - * the global variales defined in the generated code which point at parts + * the global variables defined in the generated code which point at parts * of the FileDescriptor. The callback returns an ExtensionRegistry which * contains any extensions which might be used in the descriptor -- that * is, extensions of the various "Options" messages defined in * descriptor.proto. The callback may also return null to indicate that - * no extensions are used in the decsriptor. + * no extensions are used in the descriptor. */ public interface InternalDescriptorAssigner { ExtensionRegistry assignDescriptors(FileDescriptor root); @@ -326,6 +341,7 @@ public final class Descriptors { private final ServiceDescriptor[] services; private final FieldDescriptor[] extensions; private final FileDescriptor[] dependencies; + private final FileDescriptor[] publicDependencies; private final DescriptorPool pool; private FileDescriptor(final FileDescriptorProto proto, @@ -335,6 +351,17 @@ public final class Descriptors { this.pool = pool; this.proto = proto; this.dependencies = dependencies.clone(); + this.publicDependencies = + new FileDescriptor[proto.getPublicDependencyCount()]; + for (int i = 0; i < proto.getPublicDependencyCount(); i++) { + int index = proto.getPublicDependency(i); + if (index < 0 || index >= this.dependencies.length) { + throw new DescriptorValidationException(this, + "Invalid public dependency index."); + } + this.publicDependencies[i] = + this.dependencies[proto.getPublicDependency(i)]; + } pool.addPackage(getPackage(), this); @@ -382,7 +409,7 @@ public final class Descriptors { * in the original. This method is needed for bootstrapping when a file * defines custom options. The options may be defined in the file itself, * so we can't actually parse them until we've constructed the descriptors, - * but to construct the decsriptors we have to have parsed the descriptor + * but to construct the descriptors we have to have parsed the descriptor * protos. So, we have to parse the descriptor protos a second time after * constructing the descriptors. */ @@ -633,7 +660,7 @@ public final class Descriptors { FieldSet.FieldDescriptorLite { /** * Get the index of this descriptor within its parent. - * @see Descriptor#getIndex() + * @see Descriptors.Descriptor#getIndex() */ public int getIndex() { return index; } @@ -648,7 +675,7 @@ public final class Descriptors { /** * Get the field's fully-qualified name. - * @see Descriptor#getFullName() + * @see Descriptors.Descriptor#getFullName() */ public String getFullName() { return fullName; } @@ -935,7 +962,8 @@ public final class Descriptors { private void crossLink() throws DescriptorValidationException { if (proto.hasExtendee()) { final GenericDescriptor extendee = - file.pool.lookupSymbol(proto.getExtendee(), this); + file.pool.lookupSymbol(proto.getExtendee(), this, + DescriptorPool.SearchFilter.TYPES_ONLY); if (!(extendee instanceof Descriptor)) { throw new DescriptorValidationException(this, '\"' + proto.getExtendee() + "\" is not a message type."); @@ -952,7 +980,8 @@ public final class Descriptors { if (proto.hasTypeName()) { final GenericDescriptor typeDescriptor = - file.pool.lookupSymbol(proto.getTypeName(), this); + file.pool.lookupSymbol(proto.getTypeName(), this, + DescriptorPool.SearchFilter.TYPES_ONLY); if (!proto.hasType()) { // Choose field type based on symbol. @@ -1141,7 +1170,7 @@ public final class Descriptors { implements GenericDescriptor, Internal.EnumLiteMap { /** * Get the index of this descriptor within its parent. - * @see Descriptor#getIndex() + * @see Descriptors.Descriptor#getIndex() */ public int getIndex() { return index; } @@ -1153,7 +1182,7 @@ public final class Descriptors { /** * Get the type's fully-qualified name. - * @see Descriptor#getFullName() + * @see Descriptors.Descriptor#getFullName() */ public String getFullName() { return fullName; } @@ -1174,7 +1203,7 @@ public final class Descriptors { /** * Find an enum value by name. * @param name The unqualified name of the value (e.g. "FOO"). - * @return the value's decsriptor, or {@code null} if not found. + * @return the value's descriptor, or {@code null} if not found. */ public EnumValueDescriptor findValueByName(final String name) { final GenericDescriptor result = @@ -1190,7 +1219,7 @@ public final class Descriptors { * Find an enum value by number. If multiple enum values have the same * number, this returns the first defined value with that number. * @param number The value's number. - * @return the value's decsriptor, or {@code null} if not found. + * @return the value's descriptor, or {@code null} if not found. */ public EnumValueDescriptor findValueByNumber(final int number) { return file.pool.enumValuesByNumber.get( @@ -1253,7 +1282,7 @@ public final class Descriptors { implements GenericDescriptor, Internal.EnumLite { /** * Get the index of this descriptor within its parent. - * @see Descriptor#getIndex() + * @see Descriptors.Descriptor#getIndex() */ public int getIndex() { return index; } @@ -1268,7 +1297,7 @@ public final class Descriptors { /** * Get the value's fully-qualified name. - * @see Descriptor#getFullName() + * @see Descriptors.Descriptor#getFullName() */ public String getFullName() { return fullName; } @@ -1329,7 +1358,7 @@ public final class Descriptors { /** * Get the type's fully-qualified name. - * @see Descriptor#getFullName() + * @see Descriptors.Descriptor#getFullName() */ public String getFullName() { return fullName; } @@ -1347,7 +1376,7 @@ public final class Descriptors { /** * Find a method by name. * @param name The unqualified name of the method (e.g. "Foo"). - * @return the method's decsriptor, or {@code null} if not found. + * @return the method's descriptor, or {@code null} if not found. */ public MethodDescriptor findMethodByName(final String name) { final GenericDescriptor result = @@ -1419,7 +1448,7 @@ public final class Descriptors { /** * Get the method's fully-qualified name. - * @see Descriptor#getFullName() + * @see Descriptors.Descriptor#getFullName() */ public String getFullName() { return fullName; } @@ -1467,7 +1496,8 @@ public final class Descriptors { private void crossLink() throws DescriptorValidationException { final GenericDescriptor input = - file.pool.lookupSymbol(proto.getInputType(), this); + file.pool.lookupSymbol(proto.getInputType(), this, + DescriptorPool.SearchFilter.TYPES_ONLY); if (!(input instanceof Descriptor)) { throw new DescriptorValidationException(this, '\"' + proto.getInputType() + "\" is not a message type."); @@ -1475,7 +1505,8 @@ public final class Descriptors { inputType = (Descriptor)input; final GenericDescriptor output = - file.pool.lookupSymbol(proto.getOutputType(), this); + file.pool.lookupSymbol(proto.getOutputType(), this, + DescriptorPool.SearchFilter.TYPES_ONLY); if (!(output instanceof Descriptor)) { throw new DescriptorValidationException(this, '\"' + proto.getOutputType() + "\" is not a message type."); @@ -1527,7 +1558,7 @@ public final class Descriptors { public String getProblemSymbolName() { return name; } /** - * Gets the the protocol message representation of the invalid descriptor. + * Gets the protocol message representation of the invalid descriptor. */ public Message getProblemProto() { return proto; } @@ -1582,14 +1613,22 @@ public final class Descriptors { * descriptors defined in a particular file. */ private static final class DescriptorPool { + + /** Defines what subclass of descriptors to search in the descriptor pool. + */ + enum SearchFilter { + TYPES_ONLY, AGGREGATES_ONLY, ALL_SYMBOLS + } + DescriptorPool(final FileDescriptor[] dependencies) { - this.dependencies = new DescriptorPool[dependencies.length]; + this.dependencies = new HashSet(); - for (int i = 0; i < dependencies.length; i++) { - this.dependencies[i] = dependencies[i].pool; + for (int i = 0; i < dependencies.length; i++) { + this.dependencies.add(dependencies[i]); + importPublicDependencies(dependencies[i]); } - for (final FileDescriptor dependency : dependencies) { + for (final FileDescriptor dependency : this.dependencies) { try { addPackage(dependency.getPackage(), dependency); } catch (DescriptorValidationException e) { @@ -1601,7 +1640,16 @@ public final class Descriptors { } } - private final DescriptorPool[] dependencies; + /** Find and put public dependencies of the file into dependencies set.*/ + private void importPublicDependencies(final FileDescriptor file) { + for (FileDescriptor dependency : file.getPublicDependencies()) { + if (dependencies.add(dependency)) { + importPublicDependencies(dependency); + } + } + } + + private final Set dependencies; private final Map descriptorsByName = new HashMap(); @@ -1612,39 +1660,81 @@ public final class Descriptors { /** Find a generic descriptor by fully-qualified name. */ GenericDescriptor findSymbol(final String fullName) { + return findSymbol(fullName, SearchFilter.ALL_SYMBOLS); + } + + /** Find a descriptor by fully-qualified name and given option to only + * search valid field type descriptors. + */ + GenericDescriptor findSymbol(final String fullName, + final SearchFilter filter) { GenericDescriptor result = descriptorsByName.get(fullName); if (result != null) { - return result; + if ((filter==SearchFilter.ALL_SYMBOLS) || + ((filter==SearchFilter.TYPES_ONLY) && isType(result)) || + ((filter==SearchFilter.AGGREGATES_ONLY) && isAggregate(result))) { + return result; + } } - for (final DescriptorPool dependency : dependencies) { - result = dependency.descriptorsByName.get(fullName); + for (final FileDescriptor dependency : dependencies) { + result = dependency.pool.descriptorsByName.get(fullName); if (result != null) { - return result; + if ((filter==SearchFilter.ALL_SYMBOLS) || + ((filter==SearchFilter.TYPES_ONLY) && isType(result)) || + ((filter==SearchFilter.AGGREGATES_ONLY) && isAggregate(result))) { + return result; + } } } return null; } + /** Checks if the descriptor is a valid type for a message field. */ + boolean isType(GenericDescriptor descriptor) { + return (descriptor instanceof Descriptor) || + (descriptor instanceof EnumDescriptor); + } + + /** Checks if the descriptor is a valid namespace type. */ + boolean isAggregate(GenericDescriptor descriptor) { + return (descriptor instanceof Descriptor) || + (descriptor instanceof EnumDescriptor) || + (descriptor instanceof PackageDescriptor) || + (descriptor instanceof ServiceDescriptor); + } + /** - * Look up a descriptor by name, relative to some other descriptor. + * Look up a type descriptor by name, relative to some other descriptor. * The name may be fully-qualified (with a leading '.'), * partially-qualified, or unqualified. C++-like name lookup semantics * are used to search for the matching descriptor. */ GenericDescriptor lookupSymbol(final String name, - final GenericDescriptor relativeTo) + final GenericDescriptor relativeTo, + final DescriptorPool.SearchFilter filter) throws DescriptorValidationException { // TODO(kenton): This could be optimized in a number of ways. GenericDescriptor result; if (name.startsWith(".")) { // Fully-qualified name. - result = findSymbol(name.substring(1)); + result = findSymbol(name.substring(1), filter); } else { // If "name" is a compound identifier, we want to search for the // first component of it, then search within it for the rest. + // If name is something like "Foo.Bar.baz", and symbols named "Foo" are + // defined in multiple parent scopes, we only want to find "Bar.baz" in + // the innermost one. E.g., the following should produce an error: + // message Bar { message Baz {} } + // message Foo { + // message Bar { + // } + // optional Bar.Baz baz = 1; + // } + // So, we look for just "Foo" first, then look for "Bar.baz" within it + // if found. final int firstPartLength = name.indexOf('.'); final String firstPart; if (firstPartLength == -1) { @@ -1662,14 +1752,15 @@ public final class Descriptors { // Chop off the last component of the scope. final int dotpos = scopeToTry.lastIndexOf("."); if (dotpos == -1) { - result = findSymbol(name); + result = findSymbol(name, filter); break; } else { scopeToTry.setLength(dotpos + 1); - // Append firstPart and try to find. + // Append firstPart and try to find scopeToTry.append(firstPart); - result = findSymbol(scopeToTry.toString()); + result = findSymbol(scopeToTry.toString(), + DescriptorPool.SearchFilter.AGGREGATES_ONLY); if (result != null) { if (firstPartLength != -1) { @@ -1678,7 +1769,7 @@ public final class Descriptors { // searching parent scopes. scopeToTry.setLength(dotpos + 1); scopeToTry.append(name); - result = findSymbol(scopeToTry.toString()); + result = findSymbol(scopeToTry.toString(), filter); } break; } @@ -1809,7 +1900,7 @@ public final class Descriptors { /** * Adds a field to the fieldsByNumber table. Throws an exception if a - * field with hte same containing type and number already exists. + * field with the same containing type and number already exists. */ void addFieldByNumber(final FieldDescriptor field) throws DescriptorValidationException { diff --git a/cpp/thirdparty/protobuf-2.3.0/java/src/main/java/com/google/protobuf/DynamicMessage.java b/cpp/thirdparty/protobuf-2.5.0/java/src/main/java/com/google/protobuf/DynamicMessage.java similarity index 88% rename from cpp/thirdparty/protobuf-2.3.0/java/src/main/java/com/google/protobuf/DynamicMessage.java rename to cpp/thirdparty/protobuf-2.5.0/java/src/main/java/com/google/protobuf/DynamicMessage.java index c106b662b..c0c9fc94d 100644 --- a/cpp/thirdparty/protobuf-2.3.0/java/src/main/java/com/google/protobuf/DynamicMessage.java +++ b/cpp/thirdparty/protobuf-2.5.0/java/src/main/java/com/google/protobuf/DynamicMessage.java @@ -35,6 +35,7 @@ import com.google.protobuf.Descriptors.FieldDescriptor; import java.io.InputStream; import java.io.IOException; +import java.util.Collections; import java.util.Map; /** @@ -160,7 +161,9 @@ public final class DynamicMessage extends AbstractMessage { verifyContainingType(field); Object result = fields.getField(field); if (result == null) { - if (field.getJavaType() == FieldDescriptor.JavaType.MESSAGE) { + if (field.isRepeated()) { + result = Collections.emptyList(); + } else if (field.getJavaType() == FieldDescriptor.JavaType.MESSAGE) { result = getDefaultInstance(field.getMessageType()); } else { result = field.getDefaultValue(); @@ -198,10 +201,12 @@ public final class DynamicMessage extends AbstractMessage { return fields.isInitialized(); } + @Override public boolean isInitialized() { return isInitialized(type, fields); } + @Override public void writeTo(CodedOutputStream output) throws IOException { if (type.getOptions().getMessageSetWireFormat()) { fields.writeMessageSetTo(output); @@ -212,6 +217,7 @@ public final class DynamicMessage extends AbstractMessage { } } + @Override public int getSerializedSize() { int size = memoizedSize; if (size != -1) return size; @@ -236,6 +242,26 @@ public final class DynamicMessage extends AbstractMessage { return newBuilderForType().mergeFrom(this); } + public Parser getParserForType() { + return new AbstractParser() { + public DynamicMessage parsePartialFrom( + CodedInputStream input, + ExtensionRegistryLite extensionRegistry) + throws InvalidProtocolBufferException { + Builder builder = newBuilder(type); + try { + builder.mergeFrom(input, extensionRegistry); + } catch (InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(builder.buildPartial()); + } catch (IOException e) { + throw new InvalidProtocolBufferException(e.getMessage()) + .setUnfinishedMessage(builder.buildPartial()); + } + return builder.buildPartial(); + } + }; + } + /** Verifies that the field is a field of this message. */ private void verifyContainingType(FieldDescriptor field) { if (field.getContainingType() != type) { @@ -264,14 +290,18 @@ public final class DynamicMessage extends AbstractMessage { // --------------------------------------------------------------- // Implementation of Message.Builder interface. + @Override public Builder clear() { - if (fields == null) { - throw new IllegalStateException("Cannot call clear() after build()."); + if (fields.isImmutable()) { + fields = FieldSet.newFieldSet(); + } else { + fields.clear(); } - fields.clear(); + unknownFields = UnknownFieldSet.getDefaultInstance(); return this; } + @Override public Builder mergeFrom(Message other) { if (other instanceof DynamicMessage) { // This should be somewhat faster than calling super.mergeFrom(). @@ -280,6 +310,7 @@ public final class DynamicMessage extends AbstractMessage { throw new IllegalArgumentException( "mergeFrom(Message) can only merge messages of the same type."); } + ensureIsMutable(); fields.mergeFrom(otherDynamicMessage.fields); mergeUnknownFields(otherDynamicMessage.unknownFields); return this; @@ -289,8 +320,7 @@ public final class DynamicMessage extends AbstractMessage { } public DynamicMessage build() { - // If fields == null, we'll throw an appropriate exception later. - if (fields != null && !isInitialized()) { + if (!isInitialized()) { throw newUninitializedMessageException( new DynamicMessage(type, fields, unknownFields)); } @@ -312,21 +342,17 @@ public final class DynamicMessage extends AbstractMessage { } public DynamicMessage buildPartial() { - if (fields == null) { - throw new IllegalStateException( - "build() has already been called on this Builder."); - } fields.makeImmutable(); DynamicMessage result = new DynamicMessage(type, fields, unknownFields); - fields = null; - unknownFields = null; return result; } + @Override public Builder clone() { Builder result = new Builder(type); result.fields.mergeFrom(fields); + result.mergeUnknownFields(unknownFields); return result; } @@ -377,12 +403,14 @@ public final class DynamicMessage extends AbstractMessage { public Builder setField(FieldDescriptor field, Object value) { verifyContainingType(field); + ensureIsMutable(); fields.setField(field, value); return this; } public Builder clearField(FieldDescriptor field) { verifyContainingType(field); + ensureIsMutable(); fields.clearField(field); return this; } @@ -400,12 +428,14 @@ public final class DynamicMessage extends AbstractMessage { public Builder setRepeatedField(FieldDescriptor field, int index, Object value) { verifyContainingType(field); + ensureIsMutable(); fields.setRepeatedField(field, index, value); return this; } public Builder addRepeatedField(FieldDescriptor field, Object value) { verifyContainingType(field); + ensureIsMutable(); fields.addRepeatedField(field, value); return this; } @@ -419,6 +449,7 @@ public final class DynamicMessage extends AbstractMessage { return this; } + @Override public Builder mergeUnknownFields(UnknownFieldSet unknownFields) { this.unknownFields = UnknownFieldSet.newBuilder(this.unknownFields) @@ -434,5 +465,18 @@ public final class DynamicMessage extends AbstractMessage { "FieldDescriptor does not match message type."); } } + + private void ensureIsMutable() { + if (fields.isImmutable()) { + fields = fields.clone(); + } + } + + @Override + public com.google.protobuf.Message.Builder getFieldBuilder(FieldDescriptor field) { + // TODO(xiangl): need implementation for dynamic message + throw new UnsupportedOperationException( + "getFieldBuilder() called on a dynamic message type."); + } } } diff --git a/cpp/thirdparty/protobuf-2.3.0/java/src/main/java/com/google/protobuf/ExtensionRegistry.java b/cpp/thirdparty/protobuf-2.5.0/java/src/main/java/com/google/protobuf/ExtensionRegistry.java similarity index 100% rename from cpp/thirdparty/protobuf-2.3.0/java/src/main/java/com/google/protobuf/ExtensionRegistry.java rename to cpp/thirdparty/protobuf-2.5.0/java/src/main/java/com/google/protobuf/ExtensionRegistry.java diff --git a/cpp/thirdparty/protobuf-2.3.0/java/src/main/java/com/google/protobuf/ExtensionRegistryLite.java b/cpp/thirdparty/protobuf-2.5.0/java/src/main/java/com/google/protobuf/ExtensionRegistryLite.java similarity index 92% rename from cpp/thirdparty/protobuf-2.3.0/java/src/main/java/com/google/protobuf/ExtensionRegistryLite.java rename to cpp/thirdparty/protobuf-2.5.0/java/src/main/java/com/google/protobuf/ExtensionRegistryLite.java index d5288dd8e..1e1289d05 100644 --- a/cpp/thirdparty/protobuf-2.3.0/java/src/main/java/com/google/protobuf/ExtensionRegistryLite.java +++ b/cpp/thirdparty/protobuf-2.5.0/java/src/main/java/com/google/protobuf/ExtensionRegistryLite.java @@ -43,7 +43,7 @@ import java.util.Map; * make sense to mix the two, since if you have any regular types in your * program, you then require the full runtime and lose all the benefits of * the lite runtime, so you might as well make all your types be regular types. - * However, in some cases (e.g. when depending on multiple third-patry libraries + * However, in some cases (e.g. when depending on multiple third-party libraries * where one uses lite types and one uses regular), you may find yourself * wanting to mix the two. In this case things get more complicated. *

@@ -71,6 +71,22 @@ import java.util.Map; * @author kenton@google.com Kenton Varda */ public class ExtensionRegistryLite { + + // Set true to enable lazy parsing feature for MessageSet. + // + // TODO(xiangl): Now we use a global flag to control whether enable lazy + // parsing feature for MessageSet, which may be too crude for some + // applications. Need to support this feature on smaller granularity. + private static volatile boolean eagerlyParseMessageSets = false; + + public static boolean isEagerlyParseMessageSets() { + return eagerlyParseMessageSets; + } + + public static void setEagerlyParseMessageSets(boolean isEagerlyParse) { + eagerlyParseMessageSets = isEagerlyParse; + } + /** Construct a new, empty instance. */ public static ExtensionRegistryLite newInstance() { return new ExtensionRegistryLite(); diff --git a/cpp/thirdparty/protobuf-2.3.0/java/src/main/java/com/google/protobuf/FieldSet.java b/cpp/thirdparty/protobuf-2.5.0/java/src/main/java/com/google/protobuf/FieldSet.java similarity index 70% rename from cpp/thirdparty/protobuf-2.3.0/java/src/main/java/com/google/protobuf/FieldSet.java rename to cpp/thirdparty/protobuf-2.5.0/java/src/main/java/com/google/protobuf/FieldSet.java index 93e55f297..2663694fc 100644 --- a/cpp/thirdparty/protobuf-2.3.0/java/src/main/java/com/google/protobuf/FieldSet.java +++ b/cpp/thirdparty/protobuf-2.5.0/java/src/main/java/com/google/protobuf/FieldSet.java @@ -30,13 +30,14 @@ package com.google.protobuf; +import com.google.protobuf.LazyField.LazyIterator; + +import java.io.IOException; import java.util.ArrayList; import java.util.Collections; import java.util.Iterator; -import java.util.TreeMap; import java.util.List; import java.util.Map; -import java.io.IOException; /** * A class which represents an arbitrary set of fields of some message type. @@ -67,16 +68,13 @@ final class FieldSet fields; + private final SmallSortedMap fields; + private boolean isImmutable; + private boolean hasLazyField = false; /** Construct a new FieldSet. */ private FieldSet() { - // Use a TreeMap because fields need to be in canonical order when - // serializing. - // TODO(kenton): Maybe use some sort of sparse array instead? It would - // even make sense to store the first 16 or so tags in a flat array - // to make DynamicMessage faster. - fields = new TreeMap(); + this.fields = SmallSortedMap.newFieldMap(16); } /** @@ -84,7 +82,8 @@ final class FieldSet emptySet() { return DEFAULT_INSTANCE; } - @SuppressWarnings("unchecked") + @SuppressWarnings("rawtypes") private static final FieldSet DEFAULT_INSTANCE = new FieldSet(true); /** Make this FieldSet immutable from this point forward. */ @SuppressWarnings("unchecked") public void makeImmutable() { - for (final Map.Entry entry: - fields.entrySet()) { - if (entry.getKey().isRepeated()) { - final List value = (List)entry.getValue(); - fields.put(entry.getKey(), Collections.unmodifiableList(value)); - } + if (isImmutable) { + return; + } + fields.makeImmutable(); + isImmutable = true; + } + + /** + * Returns whether the FieldSet is immutable. This is true if it is the + * {@link #emptySet} or if {@link #makeImmutable} were called. + * + * @return whether the FieldSet is immutable. + */ + public boolean isImmutable() { + return isImmutable; + } + + /** + * Clones the FieldSet. The returned FieldSet will be mutable even if the + * original FieldSet was immutable. + * + * @return the newly cloned FieldSet + */ + @Override + public FieldSet clone() { + // We can't just call fields.clone because List objects in the map + // should not be shared. + FieldSet clone = FieldSet.newFieldSet(); + for (int i = 0; i < fields.getNumArrayEntries(); i++) { + Map.Entry entry = fields.getArrayEntryAt(i); + FieldDescriptorType descriptor = entry.getKey(); + clone.setField(descriptor, entry.getValue()); + } + for (Map.Entry entry : + fields.getOverflowEntries()) { + FieldDescriptorType descriptor = entry.getKey(); + clone.setField(descriptor, entry.getValue()); } - fields = Collections.unmodifiableMap(fields); + clone.hasLazyField = hasLazyField; + return clone; } // ================================================================= @@ -120,20 +151,52 @@ final class FieldSet getAllFields() { - return Collections.unmodifiableMap(fields); + if (hasLazyField) { + SmallSortedMap result = + SmallSortedMap.newFieldMap(16); + for (int i = 0; i < fields.getNumArrayEntries(); i++) { + cloneFieldEntry(result, fields.getArrayEntryAt(i)); + } + for (Map.Entry entry : + fields.getOverflowEntries()) { + cloneFieldEntry(result, entry); + } + if (fields.isImmutable()) { + result.makeImmutable(); + } + return result; + } + return fields.isImmutable() ? fields : Collections.unmodifiableMap(fields); + } + + private void cloneFieldEntry(Map map, + Map.Entry entry) { + FieldDescriptorType key = entry.getKey(); + Object value = entry.getValue(); + if (value instanceof LazyField) { + map.put(key, ((LazyField) value).getValue()); + } else { + map.put(key, value); + } } /** - * Get an iterator to the field map. This iterator should not be leaked - * out of the protobuf library as it is not protected from mutation. + * Get an iterator to the field map. This iterator should not be leaked out + * of the protobuf library as it is not protected from mutation when fields + * is not immutable. */ public Iterator> iterator() { + if (hasLazyField) { + return new LazyIterator( + fields.entrySet().iterator()); + } return fields.entrySet().iterator(); } @@ -157,14 +220,18 @@ final class FieldSet) value).size(); } } @@ -225,12 +298,12 @@ final class FieldSet) value).get(index); } } @@ -247,13 +320,13 @@ final class FieldSet) list).set(index, value); } /** @@ -270,13 +343,13 @@ final class FieldSet list; if (existingValue == null) { - list = new ArrayList(); + list = new ArrayList(); fields.put(descriptor, list); } else { - list = (List) existingValue; + list = (List) existingValue; } list.add(value); @@ -310,7 +383,8 @@ final class FieldSet entry: - fields.entrySet()) { - final FieldDescriptorType descriptor = entry.getKey(); - if (descriptor.getLiteJavaType() == WireFormat.JavaType.MESSAGE) { - if (descriptor.isRepeated()) { - for (final MessageLite element: - (List) entry.getValue()) { - if (!element.isInitialized()) { - return false; - } + for (int i = 0; i < fields.getNumArrayEntries(); i++) { + if (!isInitialized(fields.getArrayEntryAt(i))) { + return false; + } + } + for (final Map.Entry entry : + fields.getOverflowEntries()) { + if (!isInitialized(entry)) { + return false; + } + } + return true; + } + + @SuppressWarnings("unchecked") + private boolean isInitialized( + final Map.Entry entry) { + final FieldDescriptorType descriptor = entry.getKey(); + if (descriptor.getLiteJavaType() == WireFormat.JavaType.MESSAGE) { + if (descriptor.isRepeated()) { + for (final MessageLite element: + (List) entry.getValue()) { + if (!element.isInitialized()) { + return false; } - } else { - if (!((MessageLite) entry.getValue()).isInitialized()) { + } + } else { + Object value = entry.getValue(); + if (value instanceof MessageLite) { + if (!((MessageLite) value).isInitialized()) { return false; } + } else if (value instanceof LazyField) { + return true; + } else { + throw new IllegalArgumentException( + "Wrong object type used with protocol message reflection."); } } } - return true; } @@ -376,41 +470,53 @@ final class FieldSet other) { - for (final Map.Entry entry: - other.fields.entrySet()) { - final FieldDescriptorType descriptor = entry.getKey(); - final Object otherValue = entry.getValue(); + for (int i = 0; i < other.fields.getNumArrayEntries(); i++) { + mergeFromField(other.fields.getArrayEntryAt(i)); + } + for (final Map.Entry entry : + other.fields.getOverflowEntries()) { + mergeFromField(entry); + } + } - if (descriptor.isRepeated()) { - Object value = fields.get(descriptor); - if (value == null) { - // Our list is empty, but we still need to make a defensive copy of - // the other list since we don't know if the other FieldSet is still - // mutable. - fields.put(descriptor, new ArrayList((List) otherValue)); - } else { - // Concatenate the lists. - ((List) value).addAll((List) otherValue); - } - } else if (descriptor.getLiteJavaType() == WireFormat.JavaType.MESSAGE) { - Object value = fields.get(descriptor); - if (value == null) { - fields.put(descriptor, otherValue); - } else { - // Merge the messages. - fields.put(descriptor, - descriptor.internalMergeFrom( - ((MessageLite) value).toBuilder(), (MessageLite) otherValue) - .build()); - } + @SuppressWarnings({"unchecked", "rawtypes"}) + private void mergeFromField( + final Map.Entry entry) { + final FieldDescriptorType descriptor = entry.getKey(); + Object otherValue = entry.getValue(); + if (otherValue instanceof LazyField) { + otherValue = ((LazyField) otherValue).getValue(); + } + if (descriptor.isRepeated()) { + Object value = getField(descriptor); + if (value == null) { + // Our list is empty, but we still need to make a defensive copy of + // the other list since we don't know if the other FieldSet is still + // mutable. + fields.put(descriptor, new ArrayList((List) otherValue)); } else { + // Concatenate the lists. + ((List) value).addAll((List) otherValue); + } + } else if (descriptor.getLiteJavaType() == WireFormat.JavaType.MESSAGE) { + Object value = getField(descriptor); + if (value == null) { fields.put(descriptor, otherValue); + } else { + // Merge the messages. + fields.put( + descriptor, + descriptor.internalMergeFrom( + ((MessageLite) value).toBuilder(), (MessageLite) otherValue) + .build()); } + } else { + fields.put(descriptor, otherValue); } } @@ -468,8 +574,13 @@ final class FieldSet entry: - fields.entrySet()) { + for (int i = 0; i < fields.getNumArrayEntries(); i++) { + final Map.Entry entry = + fields.getArrayEntryAt(i); + writeField(entry.getKey(), entry.getValue(), output); + } + for (final Map.Entry entry : + fields.getOverflowEntries()) { writeField(entry.getKey(), entry.getValue(), output); } } @@ -479,16 +590,25 @@ final class FieldSet entry: - fields.entrySet()) { - final FieldDescriptorType descriptor = entry.getKey(); - if (descriptor.getLiteJavaType() == WireFormat.JavaType.MESSAGE && - !descriptor.isRepeated() && !descriptor.isPacked()) { - output.writeMessageSetExtension(entry.getKey().getNumber(), - (MessageLite) entry.getValue()); - } else { - writeField(descriptor, entry.getValue(), output); - } + for (int i = 0; i < fields.getNumArrayEntries(); i++) { + writeMessageSetTo(fields.getArrayEntryAt(i), output); + } + for (final Map.Entry entry : + fields.getOverflowEntries()) { + writeMessageSetTo(entry, output); + } + } + + private void writeMessageSetTo( + final Map.Entry entry, + final CodedOutputStream output) throws IOException { + final FieldDescriptorType descriptor = entry.getKey(); + if (descriptor.getLiteJavaType() == WireFormat.JavaType.MESSAGE && + !descriptor.isRepeated() && !descriptor.isPacked()) { + output.writeMessageSetExtension(entry.getKey().getNumber(), + (MessageLite) entry.getValue()); + } else { + writeField(descriptor, entry.getValue(), output); } } @@ -564,7 +684,7 @@ final class FieldSet valueList = (List)value; if (descriptor.isPacked()) { output.writeTag(number, WireFormat.WIRETYPE_LENGTH_DELIMITED); // Compute the total data size so the length can be written. @@ -583,7 +703,11 @@ final class FieldSet entry: - fields.entrySet()) { + for (int i = 0; i < fields.getNumArrayEntries(); i++) { + final Map.Entry entry = + fields.getArrayEntryAt(i); + size += computeFieldSize(entry.getKey(), entry.getValue()); + } + for (final Map.Entry entry : + fields.getOverflowEntries()) { size += computeFieldSize(entry.getKey(), entry.getValue()); } return size; @@ -605,18 +734,32 @@ final class FieldSet entry: - fields.entrySet()) { - final FieldDescriptorType descriptor = entry.getKey(); - if (descriptor.getLiteJavaType() == WireFormat.JavaType.MESSAGE && - !descriptor.isRepeated() && !descriptor.isPacked()) { - size += CodedOutputStream.computeMessageSetExtensionSize( - entry.getKey().getNumber(), (MessageLite) entry.getValue()); + for (int i = 0; i < fields.getNumArrayEntries(); i++) { + size += getMessageSetSerializedSize(fields.getArrayEntryAt(i)); + } + for (final Map.Entry entry : + fields.getOverflowEntries()) { + size += getMessageSetSerializedSize(entry); + } + return size; + } + + private int getMessageSetSerializedSize( + final Map.Entry entry) { + final FieldDescriptorType descriptor = entry.getKey(); + Object value = entry.getValue(); + if (descriptor.getLiteJavaType() == WireFormat.JavaType.MESSAGE + && !descriptor.isRepeated() && !descriptor.isPacked()) { + if (value instanceof LazyField) { + return CodedOutputStream.computeLazyFieldMessageSetExtensionSize( + entry.getKey().getNumber(), (LazyField) value); } else { - size += computeFieldSize(descriptor, entry.getValue()); + return CodedOutputStream.computeMessageSetExtensionSize( + entry.getKey().getNumber(), (MessageLite) value); } + } else { + return computeFieldSize(descriptor, value); } - return size; } /** @@ -665,7 +808,6 @@ final class FieldSet)value) { dataSize += computeElementSizeNoTag(type, element); } return dataSize + @@ -700,7 +849,7 @@ final class FieldSet)value) { size += computeElementSize(type, number, element); } return size; diff --git a/cpp/thirdparty/protobuf-2.3.0/java/src/main/java/com/google/protobuf/GeneratedMessage.java b/cpp/thirdparty/protobuf-2.5.0/java/src/main/java/com/google/protobuf/GeneratedMessage.java similarity index 57% rename from cpp/thirdparty/protobuf-2.3.0/java/src/main/java/com/google/protobuf/GeneratedMessage.java rename to cpp/thirdparty/protobuf-2.5.0/java/src/main/java/com/google/protobuf/GeneratedMessage.java index dba0ec83c..0c15ca840 100644 --- a/cpp/thirdparty/protobuf-2.3.0/java/src/main/java/com/google/protobuf/GeneratedMessage.java +++ b/cpp/thirdparty/protobuf-2.5.0/java/src/main/java/com/google/protobuf/GeneratedMessage.java @@ -35,8 +35,10 @@ import com.google.protobuf.Descriptors.EnumValueDescriptor; import com.google.protobuf.Descriptors.FieldDescriptor; import java.io.IOException; -import java.lang.reflect.Method; +import java.io.ObjectStreamException; +import java.io.Serializable; import java.lang.reflect.InvocationTargetException; +import java.lang.reflect.Method; import java.util.ArrayList; import java.util.Collections; import java.util.Iterator; @@ -52,10 +54,37 @@ import java.util.TreeMap; * * @author kenton@google.com Kenton Varda */ -public abstract class GeneratedMessage extends AbstractMessage { - protected GeneratedMessage() {} +public abstract class GeneratedMessage extends AbstractMessage + implements Serializable { + private static final long serialVersionUID = 1L; + + /** + * For testing. Allows a test to disable the optimization that avoids using + * field builders for nested messages until they are requested. By disabling + * this optimization, existing tests can be reused to test the field builders. + */ + protected static boolean alwaysUseFieldBuilders = false; + + protected GeneratedMessage() { + } + + protected GeneratedMessage(Builder builder) { + } - private UnknownFieldSet unknownFields = UnknownFieldSet.getDefaultInstance(); + public Parser getParserForType() { + throw new UnsupportedOperationException( + "This is supposed to be overridden by subclasses."); + } + + /** + * For testing. Allows a test to disable the optimization that avoids using + * field builders for nested messages until they are requested. By disabling + * this optimization, existing tests can be reused to test the field builders. + * See {@link RepeatedFieldBuilder} and {@link SingleFieldBuilder}. + */ + static void enableAlwaysUseFieldBuildersForTesting() { + alwaysUseFieldBuilders = true; + } /** * Get the FieldAccessorTable for this type. We can't have the message @@ -64,6 +93,7 @@ public abstract class GeneratedMessage extends AbstractMessage { */ protected abstract FieldAccessorTable internalGetFieldAccessorTable(); + //@Override (Java 1.6 override semantics, but we must support 1.5) public Descriptor getDescriptorForType() { return internalGetFieldAccessorTable().descriptor; } @@ -75,7 +105,7 @@ public abstract class GeneratedMessage extends AbstractMessage { final Descriptor descriptor = internalGetFieldAccessorTable().descriptor; for (final FieldDescriptor field : descriptor.getFields()) { if (field.isRepeated()) { - final List value = (List) getField(field); + final List value = (List) getField(field); if (!value.isEmpty()) { result.put(field, value); } @@ -118,36 +148,135 @@ public abstract class GeneratedMessage extends AbstractMessage { return true; } + //@Override (Java 1.6 override semantics, but we must support 1.5) public Map getAllFields() { return Collections.unmodifiableMap(getAllFieldsMutable()); } + //@Override (Java 1.6 override semantics, but we must support 1.5) public boolean hasField(final FieldDescriptor field) { return internalGetFieldAccessorTable().getField(field).has(this); } + //@Override (Java 1.6 override semantics, but we must support 1.5) public Object getField(final FieldDescriptor field) { return internalGetFieldAccessorTable().getField(field).get(this); } + //@Override (Java 1.6 override semantics, but we must support 1.5) public int getRepeatedFieldCount(final FieldDescriptor field) { return internalGetFieldAccessorTable().getField(field) .getRepeatedCount(this); } + //@Override (Java 1.6 override semantics, but we must support 1.5) public Object getRepeatedField(final FieldDescriptor field, final int index) { return internalGetFieldAccessorTable().getField(field) .getRepeated(this, index); } - public final UnknownFieldSet getUnknownFields() { - return unknownFields; + //@Override (Java 1.6 override semantics, but we must support 1.5) + public UnknownFieldSet getUnknownFields() { + throw new UnsupportedOperationException( + "This is supposed to be overridden by subclasses."); + } + + /** + * Called by subclasses to parse an unknown field. + * @return {@code true} unless the tag is an end-group tag. + */ + protected boolean parseUnknownField( + CodedInputStream input, + UnknownFieldSet.Builder unknownFields, + ExtensionRegistryLite extensionRegistry, + int tag) throws IOException { + return unknownFields.mergeFieldFrom(tag, input); + } + + /** + * Used by parsing constructors in generated classes. + */ + protected void makeExtensionsImmutable() { + // Noop for messages without extensions. + } + + protected abstract Message.Builder newBuilderForType(BuilderParent parent); + + /** + * Interface for the parent of a Builder that allows the builder to + * communicate invalidations back to the parent for use when using nested + * builders. + */ + protected interface BuilderParent { + + /** + * A builder becomes dirty whenever a field is modified -- including fields + * in nested builders -- and becomes clean when build() is called. Thus, + * when a builder becomes dirty, all its parents become dirty as well, and + * when it becomes clean, all its children become clean. The dirtiness + * state is used to invalidate certain cached values. + *
+ * To this end, a builder calls markAsDirty() on its parent whenever it + * transitions from clean to dirty. The parent must propagate this call to + * its own parent, unless it was already dirty, in which case the + * grandparent must necessarily already be dirty as well. The parent can + * only transition back to "clean" after calling build() on all children. + */ + void markDirty(); } @SuppressWarnings("unchecked") public abstract static class Builder extends AbstractMessage.Builder { - protected Builder() {} + + private BuilderParent builderParent; + + private BuilderParentImpl meAsParent; + + // Indicates that we've built a message and so we are now obligated + // to dispatch dirty invalidations. See GeneratedMessage.BuilderListener. + private boolean isClean; + + private UnknownFieldSet unknownFields = + UnknownFieldSet.getDefaultInstance(); + + protected Builder() { + this(null); + } + + protected Builder(BuilderParent builderParent) { + this.builderParent = builderParent; + } + + void dispose() { + builderParent = null; + } + + /** + * Called by the subclass when a message is built. + */ + protected void onBuilt() { + if (builderParent != null) { + markClean(); + } + } + + /** + * Called by the subclass or a builder to notify us that a message was + * built and may be cached and therefore invalidations are needed. + */ + protected void markClean() { + this.isClean = true; + } + + /** + * Gets whether invalidations are needed + * + * @return whether invalidations are needed + */ + protected boolean isClean() { + return isClean; + } // This is implemented here only to work around an apparent bug in the // Java compiler and/or build system. See bug #1898463. The mere presence @@ -159,26 +288,50 @@ public abstract class GeneratedMessage extends AbstractMessage { } /** - * Get the message being built. We don't just pass this to the - * constructor because it becomes null when build() is called. + * Called by the initialization and clear code paths to allow subclasses to + * reset any of their builtin fields back to the initial values. */ - protected abstract GeneratedMessage internalGetResult(); + public BuilderType clear() { + unknownFields = UnknownFieldSet.getDefaultInstance(); + onChanged(); + return (BuilderType) this; + } /** * Get the FieldAccessorTable for this type. We can't have the message * class pass this in to the constructor because of bootstrapping trouble * with DescriptorProtos. */ - private FieldAccessorTable internalGetFieldAccessorTable() { - return internalGetResult().internalGetFieldAccessorTable(); - } + protected abstract FieldAccessorTable internalGetFieldAccessorTable(); + //@Override (Java 1.6 override semantics, but we must support 1.5) public Descriptor getDescriptorForType() { return internalGetFieldAccessorTable().descriptor; } + //@Override (Java 1.6 override semantics, but we must support 1.5) public Map getAllFields() { - return internalGetResult().getAllFields(); + return Collections.unmodifiableMap(getAllFieldsMutable()); + } + + /** Internal helper which returns a mutable map. */ + private Map getAllFieldsMutable() { + final TreeMap result = + new TreeMap(); + final Descriptor descriptor = internalGetFieldAccessorTable().descriptor; + for (final FieldDescriptor field : descriptor.getFields()) { + if (field.isRepeated()) { + final List value = (List) getField(field); + if (!value.isEmpty()) { + result.put(field, value); + } + } else { + if (hasField(field)) { + result.put(field, getField(field)); + } + } + } + return result; } public Message.Builder newBuilderForField( @@ -186,18 +339,25 @@ public abstract class GeneratedMessage extends AbstractMessage { return internalGetFieldAccessorTable().getField(field).newBuilder(); } + //@Override (Java 1.6 override semantics, but we must support 1.5) + public Message.Builder getFieldBuilder(final FieldDescriptor field) { + return internalGetFieldAccessorTable().getField(field).getBuilder(this); + } + + //@Override (Java 1.6 override semantics, but we must support 1.5) public boolean hasField(final FieldDescriptor field) { - return internalGetResult().hasField(field); + return internalGetFieldAccessorTable().getField(field).has(this); } + //@Override (Java 1.6 override semantics, but we must support 1.5) public Object getField(final FieldDescriptor field) { + Object object = internalGetFieldAccessorTable().getField(field).get(this); if (field.isRepeated()) { // The underlying list object is still modifiable at this point. // Make sure not to expose the modifiable list to the caller. - return Collections.unmodifiableList( - (List) internalGetResult().getField(field)); + return Collections.unmodifiableList((List) object); } else { - return internalGetResult().getField(field); + return object; } } @@ -207,18 +367,23 @@ public abstract class GeneratedMessage extends AbstractMessage { return (BuilderType) this; } + //@Override (Java 1.6 override semantics, but we must support 1.5) public BuilderType clearField(final FieldDescriptor field) { internalGetFieldAccessorTable().getField(field).clear(this); return (BuilderType) this; } + //@Override (Java 1.6 override semantics, but we must support 1.5) public int getRepeatedFieldCount(final FieldDescriptor field) { - return internalGetResult().getRepeatedFieldCount(field); + return internalGetFieldAccessorTable().getField(field) + .getRepeatedCount(this); } + //@Override (Java 1.6 override semantics, but we must support 1.5) public Object getRepeatedField(final FieldDescriptor field, final int index) { - return internalGetResult().getRepeatedField(field, index); + return internalGetFieldAccessorTable().getField(field) + .getRepeated(this, index); } public BuilderType setRepeatedField(final FieldDescriptor field, @@ -234,29 +399,57 @@ public abstract class GeneratedMessage extends AbstractMessage { return (BuilderType) this; } - public final UnknownFieldSet getUnknownFields() { - return internalGetResult().unknownFields; - } - public final BuilderType setUnknownFields( final UnknownFieldSet unknownFields) { - internalGetResult().unknownFields = unknownFields; + this.unknownFields = unknownFields; + onChanged(); return (BuilderType) this; } @Override public final BuilderType mergeUnknownFields( final UnknownFieldSet unknownFields) { - final GeneratedMessage result = internalGetResult(); - result.unknownFields = - UnknownFieldSet.newBuilder(result.unknownFields) + this.unknownFields = + UnknownFieldSet.newBuilder(this.unknownFields) .mergeFrom(unknownFields) .build(); + onChanged(); return (BuilderType) this; } + //@Override (Java 1.6 override semantics, but we must support 1.5) public boolean isInitialized() { - return internalGetResult().isInitialized(); + for (final FieldDescriptor field : getDescriptorForType().getFields()) { + // Check that all required fields are present. + if (field.isRequired()) { + if (!hasField(field)) { + return false; + } + } + // Check that embedded messages are initialized. + if (field.getJavaType() == FieldDescriptor.JavaType.MESSAGE) { + if (field.isRepeated()) { + @SuppressWarnings("unchecked") final + List messageList = (List) getField(field); + for (final Message element : messageList) { + if (!element.isInitialized()) { + return false; + } + } + } else { + if (hasField(field) && + !((Message) getField(field)).isInitialized()) { + return false; + } + } + } + } + return true; + } + + //@Override (Java 1.6 override semantics, but we must support 1.5) + public final UnknownFieldSet getUnknownFields() { + return unknownFields; } /** @@ -270,11 +463,68 @@ public abstract class GeneratedMessage extends AbstractMessage { final int tag) throws IOException { return unknownFields.mergeFieldFrom(tag, input); } + + /** + * Implementation of {@link BuilderParent} for giving to our children. This + * small inner class makes it so we don't publicly expose the BuilderParent + * methods. + */ + private class BuilderParentImpl implements BuilderParent { + + //@Override (Java 1.6 override semantics, but we must support 1.5) + public void markDirty() { + onChanged(); + } + } + + /** + * Gets the {@link BuilderParent} for giving to our children. + * @return The builder parent for our children. + */ + protected BuilderParent getParentForChildren() { + if (meAsParent == null) { + meAsParent = new BuilderParentImpl(); + } + return meAsParent; + } + + /** + * Called when a the builder or one of its nested children has changed + * and any parent should be notified of its invalidation. + */ + protected final void onChanged() { + if (isClean && builderParent != null) { + builderParent.markDirty(); + + // Don't keep dispatching invalidations until build is called again. + isClean = false; + } + } } // ================================================================= // Extensions-related stuff + public interface ExtendableMessageOrBuilder< + MessageType extends ExtendableMessage> extends MessageOrBuilder { + + /** Check if a singular extension is present. */ + boolean hasExtension( + GeneratedExtension extension); + + /** Get the number of elements in a repeated extension. */ + int getExtensionCount( + GeneratedExtension> extension); + + /** Get the value of an extension. */ + Type getExtension(GeneratedExtension extension); + + /** Get one element of a repeated extension. */ + Type getExtension( + GeneratedExtension> extension, + int index); + } + /** * Generated message classes for message types that contain extension ranges * subclass this. @@ -312,9 +562,20 @@ public abstract class GeneratedMessage extends AbstractMessage { */ public abstract static class ExtendableMessage< MessageType extends ExtendableMessage> - extends GeneratedMessage { - protected ExtendableMessage() {} - private final FieldSet extensions = FieldSet.newFieldSet(); + extends GeneratedMessage + implements ExtendableMessageOrBuilder { + + private final FieldSet extensions; + + protected ExtendableMessage() { + this.extensions = FieldSet.newFieldSet(); + } + + protected ExtendableMessage( + ExtendableBuilder builder) { + super(builder); + this.extensions = builder.buildExtensions(); + } private void verifyExtensionContainingType( final GeneratedExtension extension) { @@ -330,13 +591,15 @@ public abstract class GeneratedMessage extends AbstractMessage { } /** Check if a singular extension is present. */ - public final boolean hasExtension( - final GeneratedExtension extension) { + //@Override (Java 1.6 override semantics, but we must support 1.5) + public final boolean hasExtension( + final GeneratedExtension extension) { verifyExtensionContainingType(extension); return extensions.hasField(extension.getDescriptor()); } /** Get the number of elements in a repeated extension. */ + //@Override (Java 1.6 override semantics, but we must support 1.5) public final int getExtensionCount( final GeneratedExtension> extension) { verifyExtensionContainingType(extension); @@ -345,6 +608,7 @@ public abstract class GeneratedMessage extends AbstractMessage { } /** Get the value of an extension. */ + //@Override (Java 1.6 override semantics, but we must support 1.5) @SuppressWarnings("unchecked") public final Type getExtension( final GeneratedExtension extension) { @@ -367,6 +631,7 @@ public abstract class GeneratedMessage extends AbstractMessage { } /** Get one element of a repeated extension. */ + //@Override (Java 1.6 override semantics, but we must support 1.5) @SuppressWarnings("unchecked") public final Type getExtension( final GeneratedExtension> extension, @@ -387,6 +652,25 @@ public abstract class GeneratedMessage extends AbstractMessage { return super.isInitialized() && extensionsAreInitialized(); } + @Override + protected boolean parseUnknownField( + CodedInputStream input, + UnknownFieldSet.Builder unknownFields, + ExtensionRegistryLite extensionRegistry, + int tag) throws IOException { + return AbstractMessage.Builder.mergeFieldFrom( + input, unknownFields, extensionRegistry, getDescriptorForType(), + null, extensions, tag); + } + + /** + * Used by parsing constructors in generated classes. + */ + @Override + protected void makeExtensionsImmutable() { + extensions.makeImmutable(); + } + /** * Used by subclasses to serialize extensions. Extension ranges may be * interleaved with field numbers, but we must write them in canonical @@ -416,9 +700,21 @@ public abstract class GeneratedMessage extends AbstractMessage { if (messageSetWireFormat && descriptor.getLiteJavaType() == WireFormat.JavaType.MESSAGE && !descriptor.isRepeated()) { - output.writeMessageSetExtension(descriptor.getNumber(), - (Message) next.getValue()); + if (next instanceof LazyField.LazyEntry) { + output.writeRawMessageSetExtension(descriptor.getNumber(), + ((LazyField.LazyEntry) next).getField().toByteString()); + } else { + output.writeMessageSetExtension(descriptor.getNumber(), + (Message) next.getValue()); + } } else { + // TODO(xiangl): Taken care of following code, it may cause + // problem when we use LazyField for normal fields/extensions. + // Due to the optional field can be duplicated at the end of + // serialized bytes, which will make the serialized size change + // after lazy field parsed. So when we use LazyField globally, + // we need to change the following write method to write cached + // bytes directly rather than write the parsed message. FieldSet.writeField(descriptor, next.getValue(), output); } if (iter.hasNext()) { @@ -448,10 +744,14 @@ public abstract class GeneratedMessage extends AbstractMessage { // --------------------------------------------------------------- // Reflection + protected Map getExtensionFields() { + return extensions.getAllFields(); + } + @Override public Map getAllFields() { final Map result = super.getAllFieldsMutable(); - result.putAll(extensions.getAllFields()); + result.putAll(getExtensionFields()); return Collections.unmodifiableMap(result); } @@ -556,9 +856,24 @@ public abstract class GeneratedMessage extends AbstractMessage { public abstract static class ExtendableBuilder< MessageType extends ExtendableMessage, BuilderType extends ExtendableBuilder> - extends Builder { + extends Builder + implements ExtendableMessageOrBuilder { + + private FieldSet extensions = FieldSet.emptySet(); + protected ExtendableBuilder() {} + protected ExtendableBuilder( + BuilderParent parent) { + super(parent); + } + + @Override + public BuilderType clear() { + extensions = FieldSet.emptySet(); + return super.clear(); + } + // This is implemented here only to work around an apparent bug in the // Java compiler and/or build system. See bug #1898463. The mere presence // of this dummy clone() implementation makes it go away. @@ -568,43 +883,84 @@ public abstract class GeneratedMessage extends AbstractMessage { "This is supposed to be overridden by subclasses."); } - @Override - protected abstract ExtendableMessage internalGetResult(); + private void ensureExtensionsIsMutable() { + if (extensions.isImmutable()) { + extensions = extensions.clone(); + } + } - /** Check if a singular extension is present. */ - public final boolean hasExtension( + private void verifyExtensionContainingType( final GeneratedExtension extension) { - return internalGetResult().hasExtension(extension); + if (extension.getDescriptor().getContainingType() != + getDescriptorForType()) { + // This can only happen if someone uses unchecked operations. + throw new IllegalArgumentException( + "Extension is for type \"" + + extension.getDescriptor().getContainingType().getFullName() + + "\" which does not match message type \"" + + getDescriptorForType().getFullName() + "\"."); + } + } + + /** Check if a singular extension is present. */ + //@Override (Java 1.6 override semantics, but we must support 1.5) + public final boolean hasExtension( + final GeneratedExtension extension) { + verifyExtensionContainingType(extension); + return extensions.hasField(extension.getDescriptor()); } /** Get the number of elements in a repeated extension. */ + //@Override (Java 1.6 override semantics, but we must support 1.5) public final int getExtensionCount( final GeneratedExtension> extension) { - return internalGetResult().getExtensionCount(extension); + verifyExtensionContainingType(extension); + final FieldDescriptor descriptor = extension.getDescriptor(); + return extensions.getRepeatedFieldCount(descriptor); } /** Get the value of an extension. */ + //@Override (Java 1.6 override semantics, but we must support 1.5) public final Type getExtension( final GeneratedExtension extension) { - return internalGetResult().getExtension(extension); + verifyExtensionContainingType(extension); + FieldDescriptor descriptor = extension.getDescriptor(); + final Object value = extensions.getField(descriptor); + if (value == null) { + if (descriptor.isRepeated()) { + return (Type) Collections.emptyList(); + } else if (descriptor.getJavaType() == + FieldDescriptor.JavaType.MESSAGE) { + return (Type) extension.getMessageDefaultInstance(); + } else { + return (Type) extension.fromReflectionType( + descriptor.getDefaultValue()); + } + } else { + return (Type) extension.fromReflectionType(value); + } } /** Get one element of a repeated extension. */ + //@Override (Java 1.6 override semantics, but we must support 1.5) public final Type getExtension( final GeneratedExtension> extension, final int index) { - return internalGetResult().getExtension(extension, index); + verifyExtensionContainingType(extension); + FieldDescriptor descriptor = extension.getDescriptor(); + return (Type) extension.singularFromReflectionType( + extensions.getRepeatedField(descriptor, index)); } /** Set the value of an extension. */ public final BuilderType setExtension( final GeneratedExtension extension, final Type value) { - final ExtendableMessage message = internalGetResult(); - message.verifyExtensionContainingType(extension); + verifyExtensionContainingType(extension); + ensureExtensionsIsMutable(); final FieldDescriptor descriptor = extension.getDescriptor(); - message.extensions.setField(descriptor, - extension.toReflectionType(value)); + extensions.setField(descriptor, extension.toReflectionType(value)); + onChanged(); return (BuilderType) this; } @@ -612,12 +968,13 @@ public abstract class GeneratedMessage extends AbstractMessage { public final BuilderType setExtension( final GeneratedExtension> extension, final int index, final Type value) { - final ExtendableMessage message = internalGetResult(); - message.verifyExtensionContainingType(extension); + verifyExtensionContainingType(extension); + ensureExtensionsIsMutable(); final FieldDescriptor descriptor = extension.getDescriptor(); - message.extensions.setRepeatedField( + extensions.setRepeatedField( descriptor, index, extension.singularToReflectionType(value)); + onChanged(); return (BuilderType) this; } @@ -625,23 +982,44 @@ public abstract class GeneratedMessage extends AbstractMessage { public final BuilderType addExtension( final GeneratedExtension> extension, final Type value) { - final ExtendableMessage message = internalGetResult(); - message.verifyExtensionContainingType(extension); + verifyExtensionContainingType(extension); + ensureExtensionsIsMutable(); final FieldDescriptor descriptor = extension.getDescriptor(); - message.extensions.addRepeatedField( + extensions.addRepeatedField( descriptor, extension.singularToReflectionType(value)); + onChanged(); return (BuilderType) this; } /** Clear an extension. */ public final BuilderType clearExtension( final GeneratedExtension extension) { - final ExtendableMessage message = internalGetResult(); - message.verifyExtensionContainingType(extension); - message.extensions.clearField(extension.getDescriptor()); + verifyExtensionContainingType(extension); + ensureExtensionsIsMutable(); + extensions.clearField(extension.getDescriptor()); + onChanged(); return (BuilderType) this; } + /** Called by subclasses to check if all extensions are initialized. */ + protected boolean extensionsAreInitialized() { + return extensions.isInitialized(); + } + + /** + * Called by the build code path to create a copy of the extensions for + * building the message. + */ + private FieldSet buildExtensions() { + extensions.makeImmutable(); + return extensions; + } + + @Override + public boolean isInitialized() { + return super.isInitialized() && extensionsAreInitialized(); + } + /** * Called by subclasses to parse an unknown field or an extension. * @return {@code true} unless the tag is an end-group tag. @@ -652,24 +1030,81 @@ public abstract class GeneratedMessage extends AbstractMessage { final UnknownFieldSet.Builder unknownFields, final ExtensionRegistryLite extensionRegistry, final int tag) throws IOException { - final ExtendableMessage message = internalGetResult(); return AbstractMessage.Builder.mergeFieldFrom( - input, unknownFields, extensionRegistry, this, tag); + input, unknownFields, extensionRegistry, getDescriptorForType(), + this, null, tag); } // --------------------------------------------------------------- // Reflection - // We don't have to override the get*() methods here because they already - // just forward to the underlying message. + @Override + public Map getAllFields() { + final Map result = super.getAllFieldsMutable(); + result.putAll(extensions.getAllFields()); + return Collections.unmodifiableMap(result); + } + + @Override + public Object getField(final FieldDescriptor field) { + if (field.isExtension()) { + verifyContainingType(field); + final Object value = extensions.getField(field); + if (value == null) { + if (field.getJavaType() == FieldDescriptor.JavaType.MESSAGE) { + // Lacking an ExtensionRegistry, we have no way to determine the + // extension's real type, so we return a DynamicMessage. + return DynamicMessage.getDefaultInstance(field.getMessageType()); + } else { + return field.getDefaultValue(); + } + } else { + return value; + } + } else { + return super.getField(field); + } + } + + @Override + public int getRepeatedFieldCount(final FieldDescriptor field) { + if (field.isExtension()) { + verifyContainingType(field); + return extensions.getRepeatedFieldCount(field); + } else { + return super.getRepeatedFieldCount(field); + } + } + + @Override + public Object getRepeatedField(final FieldDescriptor field, + final int index) { + if (field.isExtension()) { + verifyContainingType(field); + return extensions.getRepeatedField(field, index); + } else { + return super.getRepeatedField(field, index); + } + } + + @Override + public boolean hasField(final FieldDescriptor field) { + if (field.isExtension()) { + verifyContainingType(field); + return extensions.hasField(field); + } else { + return super.hasField(field); + } + } @Override public BuilderType setField(final FieldDescriptor field, final Object value) { if (field.isExtension()) { - final ExtendableMessage message = internalGetResult(); - message.verifyContainingType(field); - message.extensions.setField(field, value); + verifyContainingType(field); + ensureExtensionsIsMutable(); + extensions.setField(field, value); + onChanged(); return (BuilderType) this; } else { return super.setField(field, value); @@ -679,9 +1114,10 @@ public abstract class GeneratedMessage extends AbstractMessage { @Override public BuilderType clearField(final FieldDescriptor field) { if (field.isExtension()) { - final ExtendableMessage message = internalGetResult(); - message.verifyContainingType(field); - message.extensions.clearField(field); + verifyContainingType(field); + ensureExtensionsIsMutable(); + extensions.clearField(field); + onChanged(); return (BuilderType) this; } else { return super.clearField(field); @@ -692,9 +1128,10 @@ public abstract class GeneratedMessage extends AbstractMessage { public BuilderType setRepeatedField(final FieldDescriptor field, final int index, final Object value) { if (field.isExtension()) { - final ExtendableMessage message = internalGetResult(); - message.verifyContainingType(field); - message.extensions.setRepeatedField(field, index, value); + verifyContainingType(field); + ensureExtensionsIsMutable(); + extensions.setRepeatedField(field, index, value); + onChanged(); return (BuilderType) this; } else { return super.setRepeatedField(field, index, value); @@ -705,9 +1142,10 @@ public abstract class GeneratedMessage extends AbstractMessage { public BuilderType addRepeatedField(final FieldDescriptor field, final Object value) { if (field.isExtension()) { - final ExtendableMessage message = internalGetResult(); - message.verifyContainingType(field); - message.extensions.addRepeatedField(field, value); + verifyContainingType(field); + ensureExtensionsIsMutable(); + extensions.addRepeatedField(field, value); + onChanged(); return (BuilderType) this; } else { return super.addRepeatedField(field, value); @@ -715,17 +1153,63 @@ public abstract class GeneratedMessage extends AbstractMessage { } protected final void mergeExtensionFields(final ExtendableMessage other) { - internalGetResult().extensions.mergeFrom(other.extensions); + ensureExtensionsIsMutable(); + extensions.mergeFrom(other.extensions); + onChanged(); + } + + private void verifyContainingType(final FieldDescriptor field) { + if (field.getContainingType() != getDescriptorForType()) { + throw new IllegalArgumentException( + "FieldDescriptor does not match message type."); + } } } // ----------------------------------------------------------------- + /** + * Gets the descriptor for an extension. The implementation depends on whether + * the extension is scoped in the top level of a file or scoped in a Message. + */ + private static interface ExtensionDescriptorRetriever { + FieldDescriptor getDescriptor(); + } + /** For use by generated code only. */ public static GeneratedExtension - newGeneratedExtension() { - return new GeneratedExtension(); + newMessageScopedGeneratedExtension(final Message scope, + final int descriptorIndex, + final Class singularType, + final Message defaultInstance) { + // For extensions scoped within a Message, we use the Message to resolve + // the outer class's descriptor, from which the extension descriptor is + // obtained. + return new GeneratedExtension( + new ExtensionDescriptorRetriever() { + //@Override (Java 1.6 override semantics, but we must support 1.5) + public FieldDescriptor getDescriptor() { + return scope.getDescriptorForType().getExtensions() + .get(descriptorIndex); + } + }, + singularType, + defaultInstance); + } + + /** For use by generated code only. */ + public static + GeneratedExtension + newFileScopedGeneratedExtension(final Class singularType, + final Message defaultInstance) { + // For extensions scoped within a file, we rely on the outer class's + // static initializer to call internalInit() on the extension when the + // descriptor is available. + return new GeneratedExtension( + null, // ExtensionDescriptorRetriever is initialized in internalInit(); + singularType, + defaultInstance); } /** @@ -758,70 +1242,72 @@ public abstract class GeneratedMessage extends AbstractMessage { // TODO(kenton): Find ways to avoid using Java reflection within this // class. Also try to avoid suppressing unchecked warnings. - // We can't always initialize a GeneratedExtension when we first construct - // it due to initialization order difficulties (namely, the descriptor may - // not have been constructed yet, since it is often constructed by the - // initializer of a separate module). So, we construct an uninitialized - // GeneratedExtension once, then call internalInit() on it later. Generated - // code will always call internalInit() on all extensions as part of the - // static initialization code, and internalInit() throws an exception if - // called more than once, so this method is useless to users. - private GeneratedExtension() {} - - /** For use by generated code only. */ - public void internalInit(final FieldDescriptor descriptor, - final Class type) { - if (this.descriptor != null) { - throw new IllegalStateException("Already initialized."); - } - - if (!descriptor.isExtension()) { + // We can't always initialize the descriptor of a GeneratedExtension when + // we first construct it due to initialization order difficulties (namely, + // the descriptor may not have been constructed yet, since it is often + // constructed by the initializer of a separate module). + // + // In the case of nested extensions, we initialize the + // ExtensionDescriptorRetriever with an instance that uses the scoping + // Message's default instance to retrieve the extension's descriptor. + // + // In the case of non-nested extensions, we initialize the + // ExtensionDescriptorRetriever to null and rely on the outer class's static + // initializer to call internalInit() after the descriptor has been parsed. + private GeneratedExtension(ExtensionDescriptorRetriever descriptorRetriever, + Class singularType, + Message messageDefaultInstance) { + if (Message.class.isAssignableFrom(singularType) && + !singularType.isInstance(messageDefaultInstance)) { throw new IllegalArgumentException( - "GeneratedExtension given a regular (non-extension) field."); + "Bad messageDefaultInstance for " + singularType.getName()); } + this.descriptorRetriever = descriptorRetriever; + this.singularType = singularType; + this.messageDefaultInstance = messageDefaultInstance; - this.descriptor = descriptor; - this.type = type; + if (ProtocolMessageEnum.class.isAssignableFrom(singularType)) { + this.enumValueOf = getMethodOrDie(singularType, "valueOf", + EnumValueDescriptor.class); + this.enumGetValueDescriptor = + getMethodOrDie(singularType, "getValueDescriptor"); + } else { + this.enumValueOf = null; + this.enumGetValueDescriptor = null; + } + } - switch (descriptor.getJavaType()) { - case MESSAGE: - enumValueOf = null; - enumGetValueDescriptor = null; - messageDefaultInstance = - (Message) invokeOrDie(getMethodOrDie(type, "getDefaultInstance"), - null); - if (messageDefaultInstance == null) { - throw new IllegalStateException( - type.getName() + ".getDefaultInstance() returned null."); - } - break; - case ENUM: - enumValueOf = getMethodOrDie(type, "valueOf", - EnumValueDescriptor.class); - enumGetValueDescriptor = getMethodOrDie(type, "getValueDescriptor"); - messageDefaultInstance = null; - break; - default: - enumValueOf = null; - enumGetValueDescriptor = null; - messageDefaultInstance = null; - break; + /** For use by generated code only. */ + public void internalInit(final FieldDescriptor descriptor) { + if (descriptorRetriever != null) { + throw new IllegalStateException("Already initialized."); } + descriptorRetriever = new ExtensionDescriptorRetriever() { + //@Override (Java 1.6 override semantics, but we must support 1.5) + public FieldDescriptor getDescriptor() { + return descriptor; + } + }; } - private FieldDescriptor descriptor; - private Class type; - private Method enumValueOf; - private Method enumGetValueDescriptor; - private Message messageDefaultInstance; + private ExtensionDescriptorRetriever descriptorRetriever; + private final Class singularType; + private final Message messageDefaultInstance; + private final Method enumValueOf; + private final Method enumGetValueDescriptor; - public FieldDescriptor getDescriptor() { return descriptor; } + public FieldDescriptor getDescriptor() { + if (descriptorRetriever == null) { + throw new IllegalStateException( + "getDescriptor() called before internalInit()"); + } + return descriptorRetriever.getDescriptor(); + } /** * If the extension is an embedded message or group, returns the default * instance of the message. */ - @SuppressWarnings("unchecked") public Message getMessageDefaultInstance() { return messageDefaultInstance; } @@ -834,6 +1320,7 @@ public abstract class GeneratedMessage extends AbstractMessage { */ @SuppressWarnings("unchecked") private Object fromReflectionType(final Object value) { + FieldDescriptor descriptor = getDescriptor(); if (descriptor.isRepeated()) { if (descriptor.getJavaType() == FieldDescriptor.JavaType.MESSAGE || descriptor.getJavaType() == FieldDescriptor.JavaType.ENUM) { @@ -856,9 +1343,10 @@ public abstract class GeneratedMessage extends AbstractMessage { * type, this converts a single element. */ private Object singularFromReflectionType(final Object value) { + FieldDescriptor descriptor = getDescriptor(); switch (descriptor.getJavaType()) { case MESSAGE: - if (type.isInstance(value)) { + if (singularType.isInstance(value)) { return value; } else { // It seems the copy of the embedded message stored inside the @@ -885,6 +1373,7 @@ public abstract class GeneratedMessage extends AbstractMessage { */ @SuppressWarnings("unchecked") private Object toReflectionType(final Object value) { + FieldDescriptor descriptor = getDescriptor(); if (descriptor.isRepeated()) { if (descriptor.getJavaType() == FieldDescriptor.JavaType.ENUM) { // Must convert the whole list. @@ -906,6 +1395,7 @@ public abstract class GeneratedMessage extends AbstractMessage { * type, this converts a single element. */ private Object singularToReflectionType(final Object value) { + FieldDescriptor descriptor = getDescriptor(); switch (descriptor.getJavaType()) { case ENUM: return invokeOrDie(enumGetValueDescriptor, value); @@ -973,39 +1463,72 @@ public abstract class GeneratedMessage extends AbstractMessage { final String[] camelCaseNames, final Class messageClass, final Class builderClass) { + this(descriptor, camelCaseNames); + ensureFieldAccessorsInitialized(messageClass, builderClass); + } + + /** + * Construct a FieldAccessorTable for a particular message class without + * initializing FieldAccessors. + */ + public FieldAccessorTable( + final Descriptor descriptor, + final String[] camelCaseNames) { this.descriptor = descriptor; + this.camelCaseNames = camelCaseNames; fields = new FieldAccessor[descriptor.getFields().size()]; + initialized = false; + } - for (int i = 0; i < fields.length; i++) { - final FieldDescriptor field = descriptor.getFields().get(i); - if (field.isRepeated()) { - if (field.getJavaType() == FieldDescriptor.JavaType.MESSAGE) { - fields[i] = new RepeatedMessageFieldAccessor( - field, camelCaseNames[i], messageClass, builderClass); - } else if (field.getJavaType() == FieldDescriptor.JavaType.ENUM) { - fields[i] = new RepeatedEnumFieldAccessor( - field, camelCaseNames[i], messageClass, builderClass); - } else { - fields[i] = new RepeatedFieldAccessor( - field, camelCaseNames[i], messageClass, builderClass); - } - } else { - if (field.getJavaType() == FieldDescriptor.JavaType.MESSAGE) { - fields[i] = new SingularMessageFieldAccessor( - field, camelCaseNames[i], messageClass, builderClass); - } else if (field.getJavaType() == FieldDescriptor.JavaType.ENUM) { - fields[i] = new SingularEnumFieldAccessor( - field, camelCaseNames[i], messageClass, builderClass); + /** + * Ensures the field accessors are initialized. This method is thread-safe. + * + * @param messageClass The message type. + * @param builderClass The builder type. + * @return this + */ + public FieldAccessorTable ensureFieldAccessorsInitialized( + Class messageClass, + Class builderClass) { + if (initialized) { return this; } + synchronized (this) { + if (initialized) { return this; } + for (int i = 0; i < fields.length; i++) { + FieldDescriptor field = descriptor.getFields().get(i); + if (field.isRepeated()) { + if (field.getJavaType() == FieldDescriptor.JavaType.MESSAGE) { + fields[i] = new RepeatedMessageFieldAccessor( + field, camelCaseNames[i], messageClass, builderClass); + } else if (field.getJavaType() == FieldDescriptor.JavaType.ENUM) { + fields[i] = new RepeatedEnumFieldAccessor( + field, camelCaseNames[i], messageClass, builderClass); + } else { + fields[i] = new RepeatedFieldAccessor( + field, camelCaseNames[i], messageClass, builderClass); + } } else { - fields[i] = new SingularFieldAccessor( - field, camelCaseNames[i], messageClass, builderClass); + if (field.getJavaType() == FieldDescriptor.JavaType.MESSAGE) { + fields[i] = new SingularMessageFieldAccessor( + field, camelCaseNames[i], messageClass, builderClass); + } else if (field.getJavaType() == FieldDescriptor.JavaType.ENUM) { + fields[i] = new SingularEnumFieldAccessor( + field, camelCaseNames[i], messageClass, builderClass); + } else { + fields[i] = new SingularFieldAccessor( + field, camelCaseNames[i], messageClass, builderClass); + } } } + initialized = true; + camelCaseNames = null; + return this; } } private final Descriptor descriptor; private final FieldAccessor[] fields; + private String[] camelCaseNames; + private volatile boolean initialized; /** Get the FieldAccessor for a particular field. */ private FieldAccessor getField(final FieldDescriptor field) { @@ -1027,15 +1550,20 @@ public abstract class GeneratedMessage extends AbstractMessage { */ private interface FieldAccessor { Object get(GeneratedMessage message); + Object get(GeneratedMessage.Builder builder); void set(Builder builder, Object value); Object getRepeated(GeneratedMessage message, int index); + Object getRepeated(GeneratedMessage.Builder builder, int index); void setRepeated(Builder builder, int index, Object value); void addRepeated(Builder builder, Object value); boolean has(GeneratedMessage message); + boolean has(GeneratedMessage.Builder builder); int getRepeatedCount(GeneratedMessage message); + int getRepeatedCount(GeneratedMessage.Builder builder); void clear(Builder builder); Message.Builder newBuilder(); + Message.Builder getBuilder(GeneratedMessage.Builder builder); } // --------------------------------------------------------------- @@ -1046,25 +1574,33 @@ public abstract class GeneratedMessage extends AbstractMessage { final Class messageClass, final Class builderClass) { getMethod = getMethodOrDie(messageClass, "get" + camelCaseName); + getMethodBuilder = getMethodOrDie(builderClass, "get" + camelCaseName); type = getMethod.getReturnType(); setMethod = getMethodOrDie(builderClass, "set" + camelCaseName, type); hasMethod = - getMethodOrDie(messageClass, "has" + camelCaseName); + getMethodOrDie(messageClass, "has" + camelCaseName); + hasMethodBuilder = + getMethodOrDie(builderClass, "has" + camelCaseName); clearMethod = getMethodOrDie(builderClass, "clear" + camelCaseName); } // Note: We use Java reflection to call public methods rather than // access private fields directly as this avoids runtime security // checks. - protected final Class type; + protected final Class type; protected final Method getMethod; + protected final Method getMethodBuilder; protected final Method setMethod; protected final Method hasMethod; + protected final Method hasMethodBuilder; protected final Method clearMethod; public Object get(final GeneratedMessage message) { return invokeOrDie(getMethod, message); } + public Object get(GeneratedMessage.Builder builder) { + return invokeOrDie(getMethodBuilder, builder); + } public void set(final Builder builder, final Object value) { invokeOrDie(setMethod, builder, value); } @@ -1073,6 +1609,10 @@ public abstract class GeneratedMessage extends AbstractMessage { throw new UnsupportedOperationException( "getRepeatedField() called on a singular field."); } + public Object getRepeated(GeneratedMessage.Builder builder, int index) { + throw new UnsupportedOperationException( + "getRepeatedField() called on a singular field."); + } public void setRepeated(final Builder builder, final int index, final Object value) { throw new UnsupportedOperationException( @@ -1085,10 +1625,17 @@ public abstract class GeneratedMessage extends AbstractMessage { public boolean has(final GeneratedMessage message) { return (Boolean) invokeOrDie(hasMethod, message); } + public boolean has(GeneratedMessage.Builder builder) { + return (Boolean) invokeOrDie(hasMethodBuilder, builder); + } public int getRepeatedCount(final GeneratedMessage message) { throw new UnsupportedOperationException( "getRepeatedFieldSize() called on a singular field."); } + public int getRepeatedCount(GeneratedMessage.Builder builder) { + throw new UnsupportedOperationException( + "getRepeatedFieldSize() called on a singular field."); + } public void clear(final Builder builder) { invokeOrDie(clearMethod, builder); } @@ -1096,48 +1643,63 @@ public abstract class GeneratedMessage extends AbstractMessage { throw new UnsupportedOperationException( "newBuilderForField() called on a non-Message type."); } + public Message.Builder getBuilder(GeneratedMessage.Builder builder) { + throw new UnsupportedOperationException( + "getFieldBuilder() called on a non-Message type."); + } } private static class RepeatedFieldAccessor implements FieldAccessor { + protected final Class type; + protected final Method getMethod; + protected final Method getMethodBuilder; + protected final Method getRepeatedMethod; + protected final Method getRepeatedMethodBuilder; + protected final Method setRepeatedMethod; + protected final Method addRepeatedMethod; + protected final Method getCountMethod; + protected final Method getCountMethodBuilder; + protected final Method clearMethod; + RepeatedFieldAccessor( final FieldDescriptor descriptor, final String camelCaseName, final Class messageClass, final Class builderClass) { getMethod = getMethodOrDie(messageClass, "get" + camelCaseName + "List"); - + getMethodBuilder = getMethodOrDie(builderClass, + "get" + camelCaseName + "List"); getRepeatedMethod = - getMethodOrDie(messageClass, "get" + camelCaseName, Integer.TYPE); + getMethodOrDie(messageClass, "get" + camelCaseName, Integer.TYPE); + getRepeatedMethodBuilder = + getMethodOrDie(builderClass, "get" + camelCaseName, Integer.TYPE); type = getRepeatedMethod.getReturnType(); setRepeatedMethod = - getMethodOrDie(builderClass, "set" + camelCaseName, - Integer.TYPE, type); + getMethodOrDie(builderClass, "set" + camelCaseName, + Integer.TYPE, type); addRepeatedMethod = - getMethodOrDie(builderClass, "add" + camelCaseName, type); + getMethodOrDie(builderClass, "add" + camelCaseName, type); getCountMethod = - getMethodOrDie(messageClass, "get" + camelCaseName + "Count"); + getMethodOrDie(messageClass, "get" + camelCaseName + "Count"); + getCountMethodBuilder = + getMethodOrDie(builderClass, "get" + camelCaseName + "Count"); clearMethod = getMethodOrDie(builderClass, "clear" + camelCaseName); } - protected final Class type; - protected final Method getMethod; - protected final Method getRepeatedMethod; - protected final Method setRepeatedMethod; - protected final Method addRepeatedMethod; - protected final Method getCountMethod; - protected final Method clearMethod; - public Object get(final GeneratedMessage message) { return invokeOrDie(getMethod, message); } + public Object get(GeneratedMessage.Builder builder) { + return invokeOrDie(getMethodBuilder, builder); + } public void set(final Builder builder, final Object value) { // Add all the elements individually. This serves two purposes: // 1) Verifies that each element has the correct type. // 2) Insures that the caller cannot modify the list later on and // have the modifications be reflected in the message. clear(builder); - for (final Object element : (List) value) { + for (final Object element : (List) value) { addRepeated(builder, element); } } @@ -1145,6 +1707,9 @@ public abstract class GeneratedMessage extends AbstractMessage { final int index) { return invokeOrDie(getRepeatedMethod, message, index); } + public Object getRepeated(GeneratedMessage.Builder builder, int index) { + return invokeOrDie(getRepeatedMethodBuilder, builder, index); + } public void setRepeated(final Builder builder, final int index, final Object value) { invokeOrDie(setRepeatedMethod, builder, index, value); @@ -1154,11 +1719,18 @@ public abstract class GeneratedMessage extends AbstractMessage { } public boolean has(final GeneratedMessage message) { throw new UnsupportedOperationException( - "hasField() called on a singular field."); + "hasField() called on a repeated field."); + } + public boolean has(GeneratedMessage.Builder builder) { + throw new UnsupportedOperationException( + "hasField() called on a repeated field."); } public int getRepeatedCount(final GeneratedMessage message) { return (Integer) invokeOrDie(getCountMethod, message); } + public int getRepeatedCount(GeneratedMessage.Builder builder) { + return (Integer) invokeOrDie(getCountMethodBuilder, builder); + } public void clear(final Builder builder) { invokeOrDie(clearMethod, builder); } @@ -1166,6 +1738,10 @@ public abstract class GeneratedMessage extends AbstractMessage { throw new UnsupportedOperationException( "newBuilderForField() called on a non-Message type."); } + public Message.Builder getBuilder(GeneratedMessage.Builder builder) { + throw new UnsupportedOperationException( + "getFieldBuilder() called on a non-Message type."); + } } // --------------------------------------------------------------- @@ -1191,6 +1767,12 @@ public abstract class GeneratedMessage extends AbstractMessage { public Object get(final GeneratedMessage message) { return invokeOrDie(getValueDescriptorMethod, super.get(message)); } + + @Override + public Object get(final GeneratedMessage.Builder builder) { + return invokeOrDie(getValueDescriptorMethod, super.get(builder)); + } + @Override public void set(final Builder builder, final Object value) { super.set(builder, invokeOrDie(valueOfMethod, null, value)); @@ -1223,6 +1805,17 @@ public abstract class GeneratedMessage extends AbstractMessage { } return Collections.unmodifiableList(newList); } + + @Override + @SuppressWarnings("unchecked") + public Object get(final GeneratedMessage.Builder builder) { + final List newList = new ArrayList(); + for (final Object element : (List) super.get(builder)) { + newList.add(invokeOrDie(getValueDescriptorMethod, element)); + } + return Collections.unmodifiableList(newList); + } + @Override public Object getRepeated(final GeneratedMessage message, final int index) { @@ -1230,6 +1823,12 @@ public abstract class GeneratedMessage extends AbstractMessage { super.getRepeated(message, index)); } @Override + public Object getRepeated(final GeneratedMessage.Builder builder, + final int index) { + return invokeOrDie(getValueDescriptorMethod, + super.getRepeated(builder, index)); + } + @Override public void setRepeated(final Builder builder, final int index, final Object value) { super.setRepeated(builder, index, invokeOrDie(valueOfMethod, null, @@ -1252,9 +1851,12 @@ public abstract class GeneratedMessage extends AbstractMessage { super(descriptor, camelCaseName, messageClass, builderClass); newBuilderMethod = getMethodOrDie(type, "newBuilder"); + getBuilderMethodBuilder = + getMethodOrDie(builderClass, "get" + camelCaseName + "Builder"); } private final Method newBuilderMethod; + private final Method getBuilderMethodBuilder; private Object coerceType(final Object value) { if (type.isInstance(value)) { @@ -1265,7 +1867,7 @@ public abstract class GeneratedMessage extends AbstractMessage { // DynamicMessage -- we should accept it. In this case we can make // a copy of the message. return ((Message.Builder) invokeOrDie(newBuilderMethod, null)) - .mergeFrom((Message) value).build(); + .mergeFrom((Message) value).buildPartial(); } } @@ -1277,6 +1879,10 @@ public abstract class GeneratedMessage extends AbstractMessage { public Message.Builder newBuilder() { return (Message.Builder) invokeOrDie(newBuilderMethod, null); } + @Override + public Message.Builder getBuilder(GeneratedMessage.Builder builder) { + return (Message.Builder) invokeOrDie(getBuilderMethodBuilder, builder); + } } private static final class RepeatedMessageFieldAccessor @@ -1320,4 +1926,14 @@ public abstract class GeneratedMessage extends AbstractMessage { } } } + + /** + * Replaces this object in the output stream with a serialized form. + * Part of Java's serialization magic. Generated sub-classes must override + * this method by calling {@code return super.writeReplace();} + * @return a SerializedForm of this message + */ + protected Object writeReplace() throws ObjectStreamException { + return new GeneratedMessageLite.SerializedForm(this); + } } diff --git a/cpp/thirdparty/protobuf-2.5.0/java/src/main/java/com/google/protobuf/GeneratedMessageLite.java b/cpp/thirdparty/protobuf-2.5.0/java/src/main/java/com/google/protobuf/GeneratedMessageLite.java new file mode 100644 index 000000000..437e34122 --- /dev/null +++ b/cpp/thirdparty/protobuf-2.5.0/java/src/main/java/com/google/protobuf/GeneratedMessageLite.java @@ -0,0 +1,797 @@ +// Protocol Buffers - Google's data interchange format +// Copyright 2008 Google Inc. All rights reserved. +// http://code.google.com/p/protobuf/ +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +package com.google.protobuf; + +import java.io.IOException; +import java.io.ObjectStreamException; +import java.io.Serializable; +import java.lang.reflect.InvocationTargetException; +import java.lang.reflect.Method; +import java.util.Collections; +import java.util.Iterator; +import java.util.List; +import java.util.Map; + +/** + * Lite version of {@link GeneratedMessage}. + * + * @author kenton@google.com Kenton Varda + */ +public abstract class GeneratedMessageLite extends AbstractMessageLite + implements Serializable { + private static final long serialVersionUID = 1L; + + protected GeneratedMessageLite() { + } + + protected GeneratedMessageLite(Builder builder) { + } + + public Parser getParserForType() { + throw new UnsupportedOperationException( + "This is supposed to be overridden by subclasses."); + } + + /** + * Called by subclasses to parse an unknown field. + * @return {@code true} unless the tag is an end-group tag. + */ + protected boolean parseUnknownField( + CodedInputStream input, + ExtensionRegistryLite extensionRegistry, + int tag) throws IOException { + return input.skipField(tag); + } + + /** + * Used by parsing constructors in generated classes. + */ + protected void makeExtensionsImmutable() { + // Noop for messages without extensions. + } + + @SuppressWarnings("unchecked") + public abstract static class Builder + extends AbstractMessageLite.Builder { + protected Builder() {} + + //@Override (Java 1.6 override semantics, but we must support 1.5) + public BuilderType clear() { + return (BuilderType) this; + } + + // This is implemented here only to work around an apparent bug in the + // Java compiler and/or build system. See bug #1898463. The mere presence + // of this dummy clone() implementation makes it go away. + @Override + public BuilderType clone() { + throw new UnsupportedOperationException( + "This is supposed to be overridden by subclasses."); + } + + /** All subclasses implement this. */ + public abstract BuilderType mergeFrom(MessageType message); + + // Defined here for return type covariance. + public abstract MessageType getDefaultInstanceForType(); + + /** + * Called by subclasses to parse an unknown field. + * @return {@code true} unless the tag is an end-group tag. + */ + protected boolean parseUnknownField( + CodedInputStream input, + ExtensionRegistryLite extensionRegistry, + int tag) throws IOException { + return input.skipField(tag); + } + } + + // ================================================================= + // Extensions-related stuff + + /** + * Lite equivalent of {@link com.google.protobuf.GeneratedMessage.ExtendableMessageOrBuilder}. + */ + public interface ExtendableMessageOrBuilder< + MessageType extends ExtendableMessage> extends MessageLiteOrBuilder { + + /** Check if a singular extension is present. */ + boolean hasExtension( + GeneratedExtension extension); + + /** Get the number of elements in a repeated extension. */ + int getExtensionCount( + GeneratedExtension> extension); + + /** Get the value of an extension. */ + Type getExtension(GeneratedExtension extension); + + /** Get one element of a repeated extension. */ + Type getExtension( + GeneratedExtension> extension, + int index); + } + + /** + * Lite equivalent of {@link GeneratedMessage.ExtendableMessage}. + */ + public abstract static class ExtendableMessage< + MessageType extends ExtendableMessage> + extends GeneratedMessageLite + implements ExtendableMessageOrBuilder { + + private final FieldSet extensions; + + protected ExtendableMessage() { + this.extensions = FieldSet.newFieldSet(); + } + + protected ExtendableMessage(ExtendableBuilder builder) { + this.extensions = builder.buildExtensions(); + } + + private void verifyExtensionContainingType( + final GeneratedExtension extension) { + if (extension.getContainingTypeDefaultInstance() != + getDefaultInstanceForType()) { + // This can only happen if someone uses unchecked operations. + throw new IllegalArgumentException( + "This extension is for a different message type. Please make " + + "sure that you are not suppressing any generics type warnings."); + } + } + + /** Check if a singular extension is present. */ + //@Override (Java 1.6 override semantics, but we must support 1.5) + public final boolean hasExtension( + final GeneratedExtension extension) { + verifyExtensionContainingType(extension); + return extensions.hasField(extension.descriptor); + } + + /** Get the number of elements in a repeated extension. */ + //@Override (Java 1.6 override semantics, but we must support 1.5) + public final int getExtensionCount( + final GeneratedExtension> extension) { + verifyExtensionContainingType(extension); + return extensions.getRepeatedFieldCount(extension.descriptor); + } + + /** Get the value of an extension. */ + //@Override (Java 1.6 override semantics, but we must support 1.5) + @SuppressWarnings("unchecked") + public final Type getExtension( + final GeneratedExtension extension) { + verifyExtensionContainingType(extension); + final Object value = extensions.getField(extension.descriptor); + if (value == null) { + return extension.defaultValue; + } else { + return (Type) value; + } + } + + /** Get one element of a repeated extension. */ + //@Override (Java 1.6 override semantics, but we must support 1.5) + @SuppressWarnings("unchecked") + public final Type getExtension( + final GeneratedExtension> extension, + final int index) { + verifyExtensionContainingType(extension); + return (Type) extensions.getRepeatedField(extension.descriptor, index); + } + + /** Called by subclasses to check if all extensions are initialized. */ + protected boolean extensionsAreInitialized() { + return extensions.isInitialized(); + } + + /** + * Called by subclasses to parse an unknown field or an extension. + * @return {@code true} unless the tag is an end-group tag. + */ + @Override + protected boolean parseUnknownField( + CodedInputStream input, + ExtensionRegistryLite extensionRegistry, + int tag) throws IOException { + return GeneratedMessageLite.parseUnknownField( + extensions, + getDefaultInstanceForType(), + input, + extensionRegistry, + tag); + } + + /** + * Used by parsing constructors in generated classes. + */ + @Override + protected void makeExtensionsImmutable() { + extensions.makeImmutable(); + } + + /** + * Used by subclasses to serialize extensions. Extension ranges may be + * interleaved with field numbers, but we must write them in canonical + * (sorted by field number) order. ExtensionWriter helps us write + * individual ranges of extensions at once. + */ + protected class ExtensionWriter { + // Imagine how much simpler this code would be if Java iterators had + // a way to get the next element without advancing the iterator. + + private final Iterator> iter = + extensions.iterator(); + private Map.Entry next; + private final boolean messageSetWireFormat; + + private ExtensionWriter(boolean messageSetWireFormat) { + if (iter.hasNext()) { + next = iter.next(); + } + this.messageSetWireFormat = messageSetWireFormat; + } + + public void writeUntil(final int end, final CodedOutputStream output) + throws IOException { + while (next != null && next.getKey().getNumber() < end) { + ExtensionDescriptor extension = next.getKey(); + if (messageSetWireFormat && extension.getLiteJavaType() == + WireFormat.JavaType.MESSAGE && + !extension.isRepeated()) { + output.writeMessageSetExtension(extension.getNumber(), + (MessageLite) next.getValue()); + } else { + FieldSet.writeField(extension, next.getValue(), output); + } + if (iter.hasNext()) { + next = iter.next(); + } else { + next = null; + } + } + } + } + + protected ExtensionWriter newExtensionWriter() { + return new ExtensionWriter(false); + } + protected ExtensionWriter newMessageSetExtensionWriter() { + return new ExtensionWriter(true); + } + + /** Called by subclasses to compute the size of extensions. */ + protected int extensionsSerializedSize() { + return extensions.getSerializedSize(); + } + protected int extensionsSerializedSizeAsMessageSet() { + return extensions.getMessageSetSerializedSize(); + } + } + + /** + * Lite equivalent of {@link GeneratedMessage.ExtendableBuilder}. + */ + @SuppressWarnings("unchecked") + public abstract static class ExtendableBuilder< + MessageType extends ExtendableMessage, + BuilderType extends ExtendableBuilder> + extends Builder + implements ExtendableMessageOrBuilder { + protected ExtendableBuilder() {} + + private FieldSet extensions = FieldSet.emptySet(); + private boolean extensionsIsMutable; + + @Override + public BuilderType clear() { + extensions.clear(); + extensionsIsMutable = false; + return super.clear(); + } + + private void ensureExtensionsIsMutable() { + if (!extensionsIsMutable) { + extensions = extensions.clone(); + extensionsIsMutable = true; + } + } + + /** + * Called by the build code path to create a copy of the extensions for + * building the message. + */ + private FieldSet buildExtensions() { + extensions.makeImmutable(); + extensionsIsMutable = false; + return extensions; + } + + private void verifyExtensionContainingType( + final GeneratedExtension extension) { + if (extension.getContainingTypeDefaultInstance() != + getDefaultInstanceForType()) { + // This can only happen if someone uses unchecked operations. + throw new IllegalArgumentException( + "This extension is for a different message type. Please make " + + "sure that you are not suppressing any generics type warnings."); + } + } + + /** Check if a singular extension is present. */ + //@Override (Java 1.6 override semantics, but we must support 1.5) + public final boolean hasExtension( + final GeneratedExtension extension) { + verifyExtensionContainingType(extension); + return extensions.hasField(extension.descriptor); + } + + /** Get the number of elements in a repeated extension. */ + //@Override (Java 1.6 override semantics, but we must support 1.5) + public final int getExtensionCount( + final GeneratedExtension> extension) { + verifyExtensionContainingType(extension); + return extensions.getRepeatedFieldCount(extension.descriptor); + } + + /** Get the value of an extension. */ + //@Override (Java 1.6 override semantics, but we must support 1.5) + @SuppressWarnings("unchecked") + public final Type getExtension( + final GeneratedExtension extension) { + verifyExtensionContainingType(extension); + final Object value = extensions.getField(extension.descriptor); + if (value == null) { + return extension.defaultValue; + } else { + return (Type) value; + } + } + + /** Get one element of a repeated extension. */ + @SuppressWarnings("unchecked") + //@Override (Java 1.6 override semantics, but we must support 1.5) + public final Type getExtension( + final GeneratedExtension> extension, + final int index) { + verifyExtensionContainingType(extension); + return (Type) extensions.getRepeatedField(extension.descriptor, index); + } + + // This is implemented here only to work around an apparent bug in the + // Java compiler and/or build system. See bug #1898463. The mere presence + // of this dummy clone() implementation makes it go away. + @Override + public BuilderType clone() { + throw new UnsupportedOperationException( + "This is supposed to be overridden by subclasses."); + } + + /** Set the value of an extension. */ + public final BuilderType setExtension( + final GeneratedExtension extension, + final Type value) { + verifyExtensionContainingType(extension); + ensureExtensionsIsMutable(); + extensions.setField(extension.descriptor, value); + return (BuilderType) this; + } + + /** Set the value of one element of a repeated extension. */ + public final BuilderType setExtension( + final GeneratedExtension> extension, + final int index, final Type value) { + verifyExtensionContainingType(extension); + ensureExtensionsIsMutable(); + extensions.setRepeatedField(extension.descriptor, index, value); + return (BuilderType) this; + } + + /** Append a value to a repeated extension. */ + public final BuilderType addExtension( + final GeneratedExtension> extension, + final Type value) { + verifyExtensionContainingType(extension); + ensureExtensionsIsMutable(); + extensions.addRepeatedField(extension.descriptor, value); + return (BuilderType) this; + } + + /** Clear an extension. */ + public final BuilderType clearExtension( + final GeneratedExtension extension) { + verifyExtensionContainingType(extension); + ensureExtensionsIsMutable(); + extensions.clearField(extension.descriptor); + return (BuilderType) this; + } + + /** Called by subclasses to check if all extensions are initialized. */ + protected boolean extensionsAreInitialized() { + return extensions.isInitialized(); + } + + /** + * Called by subclasses to parse an unknown field or an extension. + * @return {@code true} unless the tag is an end-group tag. + */ + @Override + protected boolean parseUnknownField( + CodedInputStream input, + ExtensionRegistryLite extensionRegistry, + int tag) throws IOException { + ensureExtensionsIsMutable(); + return GeneratedMessageLite.parseUnknownField( + extensions, + getDefaultInstanceForType(), + input, + extensionRegistry, + tag); + } + + protected final void mergeExtensionFields(final MessageType other) { + ensureExtensionsIsMutable(); + extensions.mergeFrom(((ExtendableMessage) other).extensions); + } + } + + // ----------------------------------------------------------------- + + /** + * Parse an unknown field or an extension. + * @return {@code true} unless the tag is an end-group tag. + */ + private static + boolean parseUnknownField( + FieldSet extensions, + MessageType defaultInstance, + CodedInputStream input, + ExtensionRegistryLite extensionRegistry, + int tag) throws IOException { + int wireType = WireFormat.getTagWireType(tag); + int fieldNumber = WireFormat.getTagFieldNumber(tag); + + GeneratedExtension extension = + extensionRegistry.findLiteExtensionByNumber( + defaultInstance, fieldNumber); + + boolean unknown = false; + boolean packed = false; + if (extension == null) { + unknown = true; // Unknown field. + } else if (wireType == FieldSet.getWireFormatForFieldType( + extension.descriptor.getLiteType(), + false /* isPacked */)) { + packed = false; // Normal, unpacked value. + } else if (extension.descriptor.isRepeated && + extension.descriptor.type.isPackable() && + wireType == FieldSet.getWireFormatForFieldType( + extension.descriptor.getLiteType(), + true /* isPacked */)) { + packed = true; // Packed value. + } else { + unknown = true; // Wrong wire type. + } + + if (unknown) { // Unknown field or wrong wire type. Skip. + return input.skipField(tag); + } + + if (packed) { + int length = input.readRawVarint32(); + int limit = input.pushLimit(length); + if (extension.descriptor.getLiteType() == WireFormat.FieldType.ENUM) { + while (input.getBytesUntilLimit() > 0) { + int rawValue = input.readEnum(); + Object value = + extension.descriptor.getEnumType().findValueByNumber(rawValue); + if (value == null) { + // If the number isn't recognized as a valid value for this + // enum, drop it (don't even add it to unknownFields). + return true; + } + extensions.addRepeatedField(extension.descriptor, value); + } + } else { + while (input.getBytesUntilLimit() > 0) { + Object value = + FieldSet.readPrimitiveField(input, + extension.descriptor.getLiteType()); + extensions.addRepeatedField(extension.descriptor, value); + } + } + input.popLimit(limit); + } else { + Object value; + switch (extension.descriptor.getLiteJavaType()) { + case MESSAGE: { + MessageLite.Builder subBuilder = null; + if (!extension.descriptor.isRepeated()) { + MessageLite existingValue = + (MessageLite) extensions.getField(extension.descriptor); + if (existingValue != null) { + subBuilder = existingValue.toBuilder(); + } + } + if (subBuilder == null) { + subBuilder = extension.messageDefaultInstance.newBuilderForType(); + } + if (extension.descriptor.getLiteType() == + WireFormat.FieldType.GROUP) { + input.readGroup(extension.getNumber(), + subBuilder, extensionRegistry); + } else { + input.readMessage(subBuilder, extensionRegistry); + } + value = subBuilder.build(); + break; + } + case ENUM: + int rawValue = input.readEnum(); + value = extension.descriptor.getEnumType() + .findValueByNumber(rawValue); + // If the number isn't recognized as a valid value for this enum, + // drop it. + if (value == null) { + return true; + } + break; + default: + value = FieldSet.readPrimitiveField(input, + extension.descriptor.getLiteType()); + break; + } + + if (extension.descriptor.isRepeated()) { + extensions.addRepeatedField(extension.descriptor, value); + } else { + extensions.setField(extension.descriptor, value); + } + } + + return true; + } + + // ----------------------------------------------------------------- + + /** For use by generated code only. */ + public static + GeneratedExtension + newSingularGeneratedExtension( + final ContainingType containingTypeDefaultInstance, + final Type defaultValue, + final MessageLite messageDefaultInstance, + final Internal.EnumLiteMap enumTypeMap, + final int number, + final WireFormat.FieldType type) { + return new GeneratedExtension( + containingTypeDefaultInstance, + defaultValue, + messageDefaultInstance, + new ExtensionDescriptor(enumTypeMap, number, type, + false /* isRepeated */, + false /* isPacked */)); + } + + /** For use by generated code only. */ + public static + GeneratedExtension + newRepeatedGeneratedExtension( + final ContainingType containingTypeDefaultInstance, + final MessageLite messageDefaultInstance, + final Internal.EnumLiteMap enumTypeMap, + final int number, + final WireFormat.FieldType type, + final boolean isPacked) { + @SuppressWarnings("unchecked") // Subclasses ensure Type is a List + Type emptyList = (Type) Collections.emptyList(); + return new GeneratedExtension( + containingTypeDefaultInstance, + emptyList, + messageDefaultInstance, + new ExtensionDescriptor( + enumTypeMap, number, type, true /* isRepeated */, isPacked)); + } + + private static final class ExtensionDescriptor + implements FieldSet.FieldDescriptorLite< + ExtensionDescriptor> { + private ExtensionDescriptor( + final Internal.EnumLiteMap enumTypeMap, + final int number, + final WireFormat.FieldType type, + final boolean isRepeated, + final boolean isPacked) { + this.enumTypeMap = enumTypeMap; + this.number = number; + this.type = type; + this.isRepeated = isRepeated; + this.isPacked = isPacked; + } + + private final Internal.EnumLiteMap enumTypeMap; + private final int number; + private final WireFormat.FieldType type; + private final boolean isRepeated; + private final boolean isPacked; + + public int getNumber() { + return number; + } + + public WireFormat.FieldType getLiteType() { + return type; + } + + public WireFormat.JavaType getLiteJavaType() { + return type.getJavaType(); + } + + public boolean isRepeated() { + return isRepeated; + } + + public boolean isPacked() { + return isPacked; + } + + public Internal.EnumLiteMap getEnumType() { + return enumTypeMap; + } + + @SuppressWarnings("unchecked") + public MessageLite.Builder internalMergeFrom( + MessageLite.Builder to, MessageLite from) { + return ((Builder) to).mergeFrom((GeneratedMessageLite) from); + } + + public int compareTo(ExtensionDescriptor other) { + return number - other.number; + } + } + + /** + * Lite equivalent to {@link GeneratedMessage.GeneratedExtension}. + * + * Users should ignore the contents of this class and only use objects of + * this type as parameters to extension accessors and ExtensionRegistry.add(). + */ + public static final class GeneratedExtension< + ContainingType extends MessageLite, Type> { + + private GeneratedExtension( + final ContainingType containingTypeDefaultInstance, + final Type defaultValue, + final MessageLite messageDefaultInstance, + final ExtensionDescriptor descriptor) { + // Defensive checks to verify the correct initialization order of + // GeneratedExtensions and their related GeneratedMessages. + if (containingTypeDefaultInstance == null) { + throw new IllegalArgumentException( + "Null containingTypeDefaultInstance"); + } + if (descriptor.getLiteType() == WireFormat.FieldType.MESSAGE && + messageDefaultInstance == null) { + throw new IllegalArgumentException( + "Null messageDefaultInstance"); + } + this.containingTypeDefaultInstance = containingTypeDefaultInstance; + this.defaultValue = defaultValue; + this.messageDefaultInstance = messageDefaultInstance; + this.descriptor = descriptor; + } + + private final ContainingType containingTypeDefaultInstance; + private final Type defaultValue; + private final MessageLite messageDefaultInstance; + private final ExtensionDescriptor descriptor; + + /** + * Default instance of the type being extended, used to identify that type. + */ + public ContainingType getContainingTypeDefaultInstance() { + return containingTypeDefaultInstance; + } + + /** Get the field number. */ + public int getNumber() { + return descriptor.getNumber(); + } + + /** + * If the extension is an embedded message, this is the default instance of + * that type. + */ + public MessageLite getMessageDefaultInstance() { + return messageDefaultInstance; + } + } + + /** + * A serialized (serializable) form of the generated message. Stores the + * message as a class name and a byte array. + */ + static final class SerializedForm implements Serializable { + private static final long serialVersionUID = 0L; + + private String messageClassName; + private byte[] asBytes; + + /** + * Creates the serialized form by calling {@link com.google.protobuf.MessageLite#toByteArray}. + * @param regularForm the message to serialize + */ + SerializedForm(MessageLite regularForm) { + messageClassName = regularForm.getClass().getName(); + asBytes = regularForm.toByteArray(); + } + + /** + * When read from an ObjectInputStream, this method converts this object + * back to the regular form. Part of Java's serialization magic. + * @return a GeneratedMessage of the type that was serialized + */ + @SuppressWarnings("unchecked") + protected Object readResolve() throws ObjectStreamException { + try { + Class messageClass = Class.forName(messageClassName); + Method newBuilder = messageClass.getMethod("newBuilder"); + MessageLite.Builder builder = + (MessageLite.Builder) newBuilder.invoke(null); + builder.mergeFrom(asBytes); + return builder.buildPartial(); + } catch (ClassNotFoundException e) { + throw new RuntimeException("Unable to find proto buffer class", e); + } catch (NoSuchMethodException e) { + throw new RuntimeException("Unable to find newBuilder method", e); + } catch (IllegalAccessException e) { + throw new RuntimeException("Unable to call newBuilder method", e); + } catch (InvocationTargetException e) { + throw new RuntimeException("Error calling newBuilder", e.getCause()); + } catch (InvalidProtocolBufferException e) { + throw new RuntimeException("Unable to understand proto buffer", e); + } + } + } + + /** + * Replaces this object in the output stream with a serialized form. + * Part of Java's serialization magic. Generated sub-classes must override + * this method by calling {@code return super.writeReplace();} + * @return a SerializedForm of this message + */ + protected Object writeReplace() throws ObjectStreamException { + return new SerializedForm(this); + } +} diff --git a/cpp/thirdparty/protobuf-2.3.0/java/src/main/java/com/google/protobuf/Internal.java b/cpp/thirdparty/protobuf-2.5.0/java/src/main/java/com/google/protobuf/Internal.java similarity index 79% rename from cpp/thirdparty/protobuf-2.3.0/java/src/main/java/com/google/protobuf/Internal.java rename to cpp/thirdparty/protobuf-2.5.0/java/src/main/java/com/google/protobuf/Internal.java index 965465e14..81af25835 100644 --- a/cpp/thirdparty/protobuf-2.3.0/java/src/main/java/com/google/protobuf/Internal.java +++ b/cpp/thirdparty/protobuf-2.5.0/java/src/main/java/com/google/protobuf/Internal.java @@ -99,6 +99,38 @@ public class Internal { } } + /** + * Helper called by generated code to determine if a byte array is a valid + * UTF-8 encoded string such that the original bytes can be converted to + * a String object and then back to a byte array round tripping the bytes + * without loss. More precisely, returns {@code true} whenever: + *
   {@code
+   * Arrays.equals(byteString.toByteArray(),
+   *     new String(byteString.toByteArray(), "UTF-8").getBytes("UTF-8"))
+   * }
+ * + *

This method rejects "overlong" byte sequences, as well as + * 3-byte sequences that would map to a surrogate character, in + * accordance with the restricted definition of UTF-8 introduced in + * Unicode 3.1. Note that the UTF-8 decoder included in Oracle's + * JDK has been modified to also reject "overlong" byte sequences, + * but currently (2011) still accepts 3-byte surrogate character + * byte sequences. + * + *

See the Unicode Standard,
+ * Table 3-6. UTF-8 Bit Distribution,
+ * Table 3-7. Well Formed UTF-8 Byte Sequences. + * + *

As of 2011-02, this method simply returns the result of {@link + * ByteString#isValidUtf8()}. Calling that method directly is preferred. + * + * @param byteString the string to check + * @return whether the byte array is round trippable + */ + public static boolean isValidUtf8(ByteString byteString) { + return byteString.isValidUtf8(); + } + /** * Interface for an enum value or value descriptor, to be used in FieldSet. * The lite library stores enum values directly in FieldSets but the full diff --git a/cpp/thirdparty/protobuf-2.3.0/java/src/main/java/com/google/protobuf/InvalidProtocolBufferException.java b/cpp/thirdparty/protobuf-2.5.0/java/src/main/java/com/google/protobuf/InvalidProtocolBufferException.java similarity index 87% rename from cpp/thirdparty/protobuf-2.3.0/java/src/main/java/com/google/protobuf/InvalidProtocolBufferException.java rename to cpp/thirdparty/protobuf-2.5.0/java/src/main/java/com/google/protobuf/InvalidProtocolBufferException.java index 90f7ffbc2..72d7ff7d4 100644 --- a/cpp/thirdparty/protobuf-2.3.0/java/src/main/java/com/google/protobuf/InvalidProtocolBufferException.java +++ b/cpp/thirdparty/protobuf-2.5.0/java/src/main/java/com/google/protobuf/InvalidProtocolBufferException.java @@ -40,11 +40,32 @@ import java.io.IOException; */ public class InvalidProtocolBufferException extends IOException { private static final long serialVersionUID = -1616151763072450476L; + private MessageLite unfinishedMessage = null; public InvalidProtocolBufferException(final String description) { super(description); } + /** + * Attaches an unfinished message to the exception to support best-effort + * parsing in {@code Parser} interface. + * + * @return this + */ + public InvalidProtocolBufferException setUnfinishedMessage( + MessageLite unfinishedMessage) { + this.unfinishedMessage = unfinishedMessage; + return this; + } + + /** + * Returns the unfinished message attached to the exception, or null if + * no message is attached. + */ + public MessageLite getUnfinishedMessage() { + return unfinishedMessage; + } + static InvalidProtocolBufferException truncatedMessage() { return new InvalidProtocolBufferException( "While parsing a protocol message, the input ended unexpectedly " + diff --git a/cpp/thirdparty/protobuf-2.5.0/java/src/main/java/com/google/protobuf/LazyField.java b/cpp/thirdparty/protobuf-2.5.0/java/src/main/java/com/google/protobuf/LazyField.java new file mode 100644 index 000000000..c4f9201cd --- /dev/null +++ b/cpp/thirdparty/protobuf-2.5.0/java/src/main/java/com/google/protobuf/LazyField.java @@ -0,0 +1,210 @@ +// Protocol Buffers - Google's data interchange format +// Copyright 2008 Google Inc. All rights reserved. +// http://code.google.com/p/protobuf/ +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +package com.google.protobuf; + +import java.io.IOException; +import java.util.Iterator; +import java.util.Map.Entry; + +/** + * LazyField encapsulates the logic of lazily parsing message fields. It stores + * the message in a ByteString initially and then parse it on-demand. + * + * LazyField is thread-compatible e.g. concurrent read are safe, however, + * synchronizations are needed under read/write situations. + * + * Now LazyField is only used to lazily load MessageSet. + * TODO(xiangl): Use LazyField to lazily load all messages. + * + * @author xiangl@google.com (Xiang Li) + */ +class LazyField { + + final private MessageLite defaultInstance; + final private ExtensionRegistryLite extensionRegistry; + + // Mutable because it is initialized lazily. + private ByteString bytes; + private volatile MessageLite value; + private volatile boolean isDirty = false; + + public LazyField(MessageLite defaultInstance, + ExtensionRegistryLite extensionRegistry, ByteString bytes) { + this.defaultInstance = defaultInstance; + this.extensionRegistry = extensionRegistry; + this.bytes = bytes; + } + + public MessageLite getValue() { + ensureInitialized(); + return value; + } + + /** + * LazyField is not thread-safe for write access. Synchronizations are needed + * under read/write situations. + */ + public MessageLite setValue(MessageLite value) { + MessageLite originalValue = this.value; + this.value = value; + bytes = null; + isDirty = true; + return originalValue; + } + + /** + * Due to the optional field can be duplicated at the end of serialized + * bytes, which will make the serialized size changed after LazyField + * parsed. Be careful when using this method. + */ + public int getSerializedSize() { + if (isDirty) { + return value.getSerializedSize(); + } + return bytes.size(); + } + + public ByteString toByteString() { + if (!isDirty) { + return bytes; + } + synchronized (this) { + if (!isDirty) { + return bytes; + } + bytes = value.toByteString(); + isDirty = false; + return bytes; + } + } + + @Override + public int hashCode() { + ensureInitialized(); + return value.hashCode(); + } + + @Override + public boolean equals(Object obj) { + ensureInitialized(); + return value.equals(obj); + } + + @Override + public String toString() { + ensureInitialized(); + return value.toString(); + } + + private void ensureInitialized() { + if (value != null) { + return; + } + synchronized (this) { + if (value != null) { + return; + } + try { + if (bytes != null) { + value = defaultInstance.getParserForType() + .parseFrom(bytes, extensionRegistry); + } + } catch (IOException e) { + // TODO(xiangl): Refactory the API to support the exception thrown from + // lazily load messages. + } + } + } + + // ==================================================== + + /** + * LazyEntry and LazyIterator are used to encapsulate the LazyField, when + * users iterate all fields from FieldSet. + */ + static class LazyEntry implements Entry { + private Entry entry; + + private LazyEntry(Entry entry) { + this.entry = entry; + } + + public K getKey() { + return entry.getKey(); + } + + public Object getValue() { + LazyField field = entry.getValue(); + if (field == null) { + return null; + } + return field.getValue(); + } + + public LazyField getField() { + return entry.getValue(); + } + + public Object setValue(Object value) { + if (!(value instanceof MessageLite)) { + throw new IllegalArgumentException( + "LazyField now only used for MessageSet, " + + "and the value of MessageSet must be an instance of MessageLite"); + } + return entry.getValue().setValue((MessageLite) value); + } + } + + static class LazyIterator implements Iterator> { + private Iterator> iterator; + + public LazyIterator(Iterator> iterator) { + this.iterator = iterator; + } + + public boolean hasNext() { + return iterator.hasNext(); + } + + @SuppressWarnings("unchecked") + public Entry next() { + Entry entry = iterator.next(); + if (entry.getValue() instanceof LazyField) { + return new LazyEntry((Entry) entry); + } + return (Entry) entry; + } + + public void remove() { + iterator.remove(); + } + } +} diff --git a/cpp/thirdparty/protobuf-2.5.0/java/src/main/java/com/google/protobuf/LazyStringArrayList.java b/cpp/thirdparty/protobuf-2.5.0/java/src/main/java/com/google/protobuf/LazyStringArrayList.java new file mode 100644 index 000000000..a5f0bd901 --- /dev/null +++ b/cpp/thirdparty/protobuf-2.5.0/java/src/main/java/com/google/protobuf/LazyStringArrayList.java @@ -0,0 +1,178 @@ +// Protocol Buffers - Google's data interchange format +// Copyright 2008 Google Inc. All rights reserved. +// http://code.google.com/p/protobuf/ +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +package com.google.protobuf; + +import java.util.List; +import java.util.AbstractList; +import java.util.ArrayList; +import java.util.Collection; +import java.util.Collections; +import java.util.RandomAccess; + +/** + * An implementation of {@link LazyStringList} that wraps an ArrayList. Each + * element is either a ByteString or a String. It caches the last one requested + * which is most likely the one needed next. This minimizes memory usage while + * satisfying the most common use cases. + *

+ * Note that this implementation is not synchronized. + * If multiple threads access an ArrayList instance concurrently, + * and at least one of the threads modifies the list structurally, it + * must be synchronized externally. (A structural modification is + * any operation that adds or deletes one or more elements, or explicitly + * resizes the backing array; merely setting the value of an element is not + * a structural modification.) This is typically accomplished by + * synchronizing on some object that naturally encapsulates the list. + *

+ * If the implementation is accessed via concurrent reads, this is thread safe. + * Conversions are done in a thread safe manner. It's possible that the + * conversion may happen more than once if two threads attempt to access the + * same element and the modifications were not visible to each other, but this + * will not result in any corruption of the list or change in behavior other + * than performance. + * + * @author jonp@google.com (Jon Perlow) + */ +public class LazyStringArrayList extends AbstractList + implements LazyStringList, RandomAccess { + + public final static LazyStringList EMPTY = new UnmodifiableLazyStringList( + new LazyStringArrayList()); + + private final List list; + + public LazyStringArrayList() { + list = new ArrayList(); + } + + public LazyStringArrayList(LazyStringList from) { + list = new ArrayList(from.size()); + addAll(from); + } + + public LazyStringArrayList(List from) { + list = new ArrayList(from); + } + + @Override + public String get(int index) { + Object o = list.get(index); + if (o instanceof String) { + return (String) o; + } else { + ByteString bs = (ByteString) o; + String s = bs.toStringUtf8(); + if (bs.isValidUtf8()) { + list.set(index, s); + } + return s; + } + } + + @Override + public int size() { + return list.size(); + } + + @Override + public String set(int index, String s) { + Object o = list.set(index, s); + return asString(o); + } + + @Override + public void add(int index, String element) { + list.add(index, element); + modCount++; + } + + @Override + public boolean addAll(Collection c) { + // The default implementation of AbstractCollection.addAll(Collection) + // delegates to add(Object). This implementation instead delegates to + // addAll(int, Collection), which makes a special case for Collections + // which are instances of LazyStringList. + return addAll(size(), c); + } + + @Override + public boolean addAll(int index, Collection c) { + // When copying from another LazyStringList, directly copy the underlying + // elements rather than forcing each element to be decoded to a String. + Collection collection = c instanceof LazyStringList + ? ((LazyStringList) c).getUnderlyingElements() : c; + boolean ret = list.addAll(index, collection); + modCount++; + return ret; + } + + @Override + public String remove(int index) { + Object o = list.remove(index); + modCount++; + return asString(o); + } + + public void clear() { + list.clear(); + modCount++; + } + + // @Override + public void add(ByteString element) { + list.add(element); + modCount++; + } + + // @Override + public ByteString getByteString(int index) { + Object o = list.get(index); + if (o instanceof String) { + ByteString b = ByteString.copyFromUtf8((String) o); + list.set(index, b); + return b; + } else { + return (ByteString) o; + } + } + + private String asString(Object o) { + if (o instanceof String) { + return (String) o; + } else { + return ((ByteString) o).toStringUtf8(); + } + } + + public List getUnderlyingElements() { + return Collections.unmodifiableList(list); + } +} diff --git a/cpp/thirdparty/protobuf-2.5.0/java/src/main/java/com/google/protobuf/LazyStringList.java b/cpp/thirdparty/protobuf-2.5.0/java/src/main/java/com/google/protobuf/LazyStringList.java new file mode 100644 index 000000000..630932fe4 --- /dev/null +++ b/cpp/thirdparty/protobuf-2.5.0/java/src/main/java/com/google/protobuf/LazyStringList.java @@ -0,0 +1,81 @@ +// Protocol Buffers - Google's data interchange format +// Copyright 2008 Google Inc. All rights reserved. +// http://code.google.com/p/protobuf/ +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +package com.google.protobuf; + +import java.util.List; + +/** + * An interface extending {@code List} that also provides access to the + * items of the list as UTF8-encoded ByteString objects. This is used by the + * protocol buffer implementation to support lazily converting bytes parsed + * over the wire to String objects until needed and also increases the + * efficiency of serialization if the String was never requested as the + * ByteString is already cached. + *

+ * This only adds additional methods that are required for the use in the + * protocol buffer code in order to be able successfully round trip byte arrays + * through parsing and serialization without conversion to strings. It's not + * attempting to support the functionality of say {@code List}, hence + * why only these two very specific methods are added. + * + * @author jonp@google.com (Jon Perlow) + */ +public interface LazyStringList extends List { + + /** + * Returns the element at the specified position in this list as a ByteString. + * + * @param index index of the element to return + * @return the element at the specified position in this list + * @throws IndexOutOfBoundsException if the index is out of range + * ({@code index < 0 || index >= size()}) + */ + ByteString getByteString(int index); + + /** + * Appends the specified element to the end of this list (optional + * operation). + * + * @param element element to be appended to this list + * @throws UnsupportedOperationException if the add operation + * is not supported by this list + */ + void add(ByteString element); + + /** + * Returns an unmodifiable List of the underlying elements, each of + * which is either a {@code String} or its equivalent UTF-8 encoded + * {@code ByteString}. It is an error for the caller to modify the returned + * List, and attempting to do so will result in an + * {@link UnsupportedOperationException}. + */ + List getUnderlyingElements(); +} diff --git a/cpp/thirdparty/protobuf-2.5.0/java/src/main/java/com/google/protobuf/LiteralByteString.java b/cpp/thirdparty/protobuf-2.5.0/java/src/main/java/com/google/protobuf/LiteralByteString.java new file mode 100644 index 000000000..93c53dce3 --- /dev/null +++ b/cpp/thirdparty/protobuf-2.5.0/java/src/main/java/com/google/protobuf/LiteralByteString.java @@ -0,0 +1,349 @@ +// Protocol Buffers - Google's data interchange format +// Copyright 2008 Google Inc. All rights reserved. +// http://code.google.com/p/protobuf/ +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +package com.google.protobuf; + +import java.io.ByteArrayInputStream; +import java.io.IOException; +import java.io.InputStream; +import java.io.OutputStream; +import java.io.UnsupportedEncodingException; +import java.nio.ByteBuffer; +import java.util.ArrayList; +import java.util.List; +import java.util.NoSuchElementException; + +/** + * This class implements a {@link com.google.protobuf.ByteString} backed by a + * single array of bytes, contiguous in memory. It supports substring by + * pointing to only a sub-range of the underlying byte array, meaning that a + * substring will reference the full byte-array of the string it's made from, + * exactly as with {@link String}. + * + * @author carlanton@google.com (Carl Haverl) + */ +class LiteralByteString extends ByteString { + + protected final byte[] bytes; + + /** + * Creates a {@code LiteralByteString} backed by the given array, without + * copying. + * + * @param bytes array to wrap + */ + LiteralByteString(byte[] bytes) { + this.bytes = bytes; + } + + @Override + public byte byteAt(int index) { + // Unlike most methods in this class, this one is a direct implementation + // ignoring the potential offset because we need to do range-checking in the + // substring case anyway. + return bytes[index]; + } + + @Override + public int size() { + return bytes.length; + } + + // ================================================================= + // ByteString -> substring + + @Override + public ByteString substring(int beginIndex, int endIndex) { + if (beginIndex < 0) { + throw new IndexOutOfBoundsException( + "Beginning index: " + beginIndex + " < 0"); + } + if (endIndex > size()) { + throw new IndexOutOfBoundsException("End index: " + endIndex + " > " + + size()); + } + int substringLength = endIndex - beginIndex; + if (substringLength < 0) { + throw new IndexOutOfBoundsException( + "Beginning index larger than ending index: " + beginIndex + ", " + + endIndex); + } + + ByteString result; + if (substringLength == 0) { + result = ByteString.EMPTY; + } else { + result = new BoundedByteString(bytes, getOffsetIntoBytes() + beginIndex, + substringLength); + } + return result; + } + + // ================================================================= + // ByteString -> byte[] + + @Override + protected void copyToInternal(byte[] target, int sourceOffset, + int targetOffset, int numberToCopy) { + // Optimized form, not for subclasses, since we don't call + // getOffsetIntoBytes() or check the 'numberToCopy' parameter. + System.arraycopy(bytes, sourceOffset, target, targetOffset, numberToCopy); + } + + @Override + public void copyTo(ByteBuffer target) { + target.put(bytes, getOffsetIntoBytes(), size()); // Copies bytes + } + + @Override + public ByteBuffer asReadOnlyByteBuffer() { + ByteBuffer byteBuffer = + ByteBuffer.wrap(bytes, getOffsetIntoBytes(), size()); + return byteBuffer.asReadOnlyBuffer(); + } + + @Override + public List asReadOnlyByteBufferList() { + // Return the ByteBuffer generated by asReadOnlyByteBuffer() as a singleton + List result = new ArrayList(1); + result.add(asReadOnlyByteBuffer()); + return result; + } + + @Override + public void writeTo(OutputStream outputStream) throws IOException { + outputStream.write(toByteArray()); + } + + @Override + public String toString(String charsetName) + throws UnsupportedEncodingException { + return new String(bytes, getOffsetIntoBytes(), size(), charsetName); + } + + // ================================================================= + // UTF-8 decoding + + @Override + public boolean isValidUtf8() { + int offset = getOffsetIntoBytes(); + return Utf8.isValidUtf8(bytes, offset, offset + size()); + } + + @Override + protected int partialIsValidUtf8(int state, int offset, int length) { + int index = getOffsetIntoBytes() + offset; + return Utf8.partialIsValidUtf8(state, bytes, index, index + length); + } + + // ================================================================= + // equals() and hashCode() + + @Override + public boolean equals(Object other) { + if (other == this) { + return true; + } + if (!(other instanceof ByteString)) { + return false; + } + + if (size() != ((ByteString) other).size()) { + return false; + } + if (size() == 0) { + return true; + } + + if (other instanceof LiteralByteString) { + return equalsRange((LiteralByteString) other, 0, size()); + } else if (other instanceof RopeByteString) { + return other.equals(this); + } else { + throw new IllegalArgumentException( + "Has a new type of ByteString been created? Found " + + other.getClass()); + } + } + + /** + * Check equality of the substring of given length of this object starting at + * zero with another {@code LiteralByteString} substring starting at offset. + * + * @param other what to compare a substring in + * @param offset offset into other + * @param length number of bytes to compare + * @return true for equality of substrings, else false. + */ + boolean equalsRange(LiteralByteString other, int offset, int length) { + if (length > other.size()) { + throw new IllegalArgumentException( + "Length too large: " + length + size()); + } + if (offset + length > other.size()) { + throw new IllegalArgumentException( + "Ran off end of other: " + offset + ", " + length + ", " + + other.size()); + } + + byte[] thisBytes = bytes; + byte[] otherBytes = other.bytes; + int thisLimit = getOffsetIntoBytes() + length; + for (int thisIndex = getOffsetIntoBytes(), otherIndex = + other.getOffsetIntoBytes() + offset; + (thisIndex < thisLimit); ++thisIndex, ++otherIndex) { + if (thisBytes[thisIndex] != otherBytes[otherIndex]) { + return false; + } + } + return true; + } + + /** + * Cached hash value. Intentionally accessed via a data race, which + * is safe because of the Java Memory Model's "no out-of-thin-air values" + * guarantees for ints. + */ + private int hash = 0; + + /** + * Compute the hashCode using the traditional algorithm from {@link + * ByteString}. + * + * @return hashCode value + */ + @Override + public int hashCode() { + int h = hash; + + if (h == 0) { + int size = size(); + h = partialHash(size, 0, size); + if (h == 0) { + h = 1; + } + hash = h; + } + return h; + } + + @Override + protected int peekCachedHashCode() { + return hash; + } + + @Override + protected int partialHash(int h, int offset, int length) { + byte[] thisBytes = bytes; + for (int i = getOffsetIntoBytes() + offset, limit = i + length; i < limit; + i++) { + h = h * 31 + thisBytes[i]; + } + return h; + } + + // ================================================================= + // Input stream + + @Override + public InputStream newInput() { + return new ByteArrayInputStream(bytes, getOffsetIntoBytes(), + size()); // No copy + } + + @Override + public CodedInputStream newCodedInput() { + // We trust CodedInputStream not to modify the bytes, or to give anyone + // else access to them. + return CodedInputStream + .newInstance(bytes, getOffsetIntoBytes(), size()); // No copy + } + + // ================================================================= + // ByteIterator + + @Override + public ByteIterator iterator() { + return new LiteralByteIterator(); + } + + private class LiteralByteIterator implements ByteIterator { + private int position; + private final int limit; + + private LiteralByteIterator() { + position = 0; + limit = size(); + } + + public boolean hasNext() { + return (position < limit); + } + + public Byte next() { + // Boxing calls Byte.valueOf(byte), which does not instantiate. + return nextByte(); + } + + public byte nextByte() { + try { + return bytes[position++]; + } catch (ArrayIndexOutOfBoundsException e) { + throw new NoSuchElementException(e.getMessage()); + } + } + + public void remove() { + throw new UnsupportedOperationException(); + } + } + + // ================================================================= + // Internal methods + + @Override + protected int getTreeDepth() { + return 0; + } + + @Override + protected boolean isBalanced() { + return true; + } + + /** + * Offset into {@code bytes[]} to use, non-zero for substrings. + * + * @return always 0 for this class + */ + protected int getOffsetIntoBytes() { + return 0; + } +} diff --git a/cpp/thirdparty/protobuf-2.3.0/java/src/main/java/com/google/protobuf/Message.java b/cpp/thirdparty/protobuf-2.5.0/java/src/main/java/com/google/protobuf/Message.java similarity index 66% rename from cpp/thirdparty/protobuf-2.3.0/java/src/main/java/com/google/protobuf/Message.java rename to cpp/thirdparty/protobuf-2.5.0/java/src/main/java/com/google/protobuf/Message.java index 8c29e212c..2b881413c 100644 --- a/cpp/thirdparty/protobuf-2.3.0/java/src/main/java/com/google/protobuf/Message.java +++ b/cpp/thirdparty/protobuf-2.5.0/java/src/main/java/com/google/protobuf/Message.java @@ -48,89 +48,32 @@ import java.util.Map; * * @author kenton@google.com Kenton Varda */ -public interface Message extends MessageLite { - /** - * Get the message's type's descriptor. This differs from the - * {@code getDescriptor()} method of generated message classes in that - * this method is an abstract method of the {@code Message} interface - * whereas {@code getDescriptor()} is a static method of a specific class. - * They return the same thing. - */ - Descriptors.Descriptor getDescriptorForType(); +public interface Message extends MessageLite, MessageOrBuilder { // (From MessageLite, re-declared here only for return type covariance.) - Message getDefaultInstanceForType(); - - /** - * Returns a collection of all the fields in this message which are set - * and their corresponding values. A singular ("required" or "optional") - * field is set iff hasField() returns true for that field. A "repeated" - * field is set iff getRepeatedFieldSize() is greater than zero. The - * values are exactly what would be returned by calling - * {@link #getField(Descriptors.FieldDescriptor)} for each field. The map - * is guaranteed to be a sorted map, so iterating over it will return fields - * in order by field number. - */ - Map getAllFields(); - - /** - * Returns true if the given field is set. This is exactly equivalent to - * calling the generated "has" accessor method corresponding to the field. - * @throws IllegalArgumentException The field is a repeated field, or - * {@code field.getContainingType() != getDescriptorForType()}. - */ - boolean hasField(Descriptors.FieldDescriptor field); - - /** - * Obtains the value of the given field, or the default value if it is - * not set. For primitive fields, the boxed primitive value is returned. - * For enum fields, the EnumValueDescriptor for the value is returend. For - * embedded message fields, the sub-message is returned. For repeated - * fields, a java.util.List is returned. - */ - Object getField(Descriptors.FieldDescriptor field); - - /** - * Gets the number of elements of a repeated field. This is exactly - * equivalent to calling the generated "Count" accessor method corresponding - * to the field. - * @throws IllegalArgumentException The field is not a repeated field, or - * {@code field.getContainingType() != getDescriptorForType()}. - */ - int getRepeatedFieldCount(Descriptors.FieldDescriptor field); - - /** - * Gets an element of a repeated field. For primitive fields, the boxed - * primitive value is returned. For enum fields, the EnumValueDescriptor - * for the value is returend. For embedded message fields, the sub-message - * is returned. - * @throws IllegalArgumentException The field is not a repeated field, or - * {@code field.getContainingType() != getDescriptorForType()}. - */ - Object getRepeatedField(Descriptors.FieldDescriptor field, int index); - - /** Get the {@link UnknownFieldSet} for this message. */ - UnknownFieldSet getUnknownFields(); + Parser getParserForType(); // ----------------------------------------------------------------- // Comparison and hashing /** * Compares the specified object with this message for equality. Returns - * true if the given object is a message of the same type (as + * {@code true} if the given object is a message of the same type (as * defined by {@code getDescriptorForType()}) and has identical values for - * all of its fields. + * all of its fields. Subclasses must implement this; inheriting + * {@code Object.equals()} is incorrect. * * @param other object to be compared for equality with this message - * @return true if the specified object is equal to this message + * @return {@code true} if the specified object is equal to this message */ @Override boolean equals(Object other); /** * Returns the hash code value for this message. The hash code of a message - * is defined to be getDescriptor().hashCode() ^ map.hashCode(), - * where map is a map of field numbers to field values. + * should mix the message's type (object identity of the descriptor) with its + * contents (known and unknown field values). Subclasses must implement this; + * inheriting {@code Object.hashCode()} is incorrect. * * @return the hash code value for this message * @see Map#hashCode() @@ -143,7 +86,8 @@ public interface Message extends MessageLite { /** * Converts the message to a string in protocol buffer text format. This is - * just a trivial wrapper around {@link TextFormat#printToString(Message)}. + * just a trivial wrapper around {@link + * TextFormat#printToString(MessageOrBuilder)}. */ @Override String toString(); @@ -158,7 +102,7 @@ public interface Message extends MessageLite { /** * Abstract interface implemented by Protocol Message builders. */ - interface Builder extends MessageLite.Builder { + interface Builder extends MessageLite.Builder, MessageOrBuilder { // (From MessageLite.Builder, re-declared here only for return type // covariance.) Builder clear(); @@ -197,17 +141,6 @@ public interface Message extends MessageLite { */ Descriptors.Descriptor getDescriptorForType(); - // (From MessageLite.Builder, re-declared here only for return type - // covariance.) - Message getDefaultInstanceForType(); - - /** - * Like {@link Message#getAllFields()}. The returned map may or may not - * reflect future changes to the builder. Either way, the returned map is - * itself unmodifiable. - */ - Map getAllFields(); - /** * Create a Builder for messages of the appropriate type for the given * field. Messages built with this can then be passed to setField(), @@ -215,11 +148,23 @@ public interface Message extends MessageLite { */ Builder newBuilderForField(Descriptors.FieldDescriptor field); - /** Like {@link Message#hasField(Descriptors.FieldDescriptor)} */ - boolean hasField(Descriptors.FieldDescriptor field); - - /** Like {@link Message#getField(Descriptors.FieldDescriptor)} */ - Object getField(Descriptors.FieldDescriptor field); + /** + * Get a nested builder instance for the given field. + *

+ * Normally, we hold a reference to the immutable message object for the + * message type field. Some implementations(the generated message builders), + * however, can also hold a reference to the builder object (a nested + * builder) for the field. + *

+ * If the field is already backed up by a nested builder, the nested builder + * will be returned. Otherwise, a new field builder will be created and + * returned. The original message field (if exist) will be merged into the + * field builder, which will then be nested into its parent builder. + *

+ * NOTE: implementations that do not support nested builders will throw + * UnsupportedException. + */ + Builder getFieldBuilder(Descriptors.FieldDescriptor field); /** * Sets a field to the given value. The value must be of the correct type @@ -234,16 +179,6 @@ public interface Message extends MessageLite { */ Builder clearField(Descriptors.FieldDescriptor field); - /** - * Like {@link Message#getRepeatedFieldCount(Descriptors.FieldDescriptor)} - */ - int getRepeatedFieldCount(Descriptors.FieldDescriptor field); - - /** - * Like {@link Message#getRepeatedField(Descriptors.FieldDescriptor,int)} - */ - Object getRepeatedField(Descriptors.FieldDescriptor field, int index); - /** * Sets an element of a repeated field to the given value. The value must * be of the correct type for this field, i.e. the same type that @@ -262,9 +197,6 @@ public interface Message extends MessageLite { */ Builder addRepeatedField(Descriptors.FieldDescriptor field, Object value); - /** Get the {@link UnknownFieldSet} for this message. */ - UnknownFieldSet getUnknownFields(); - /** Set the {@link UnknownFieldSet} for this message. */ Builder setUnknownFields(UnknownFieldSet unknownFields); diff --git a/cpp/thirdparty/protobuf-2.3.0/java/src/main/java/com/google/protobuf/MessageLite.java b/cpp/thirdparty/protobuf-2.5.0/java/src/main/java/com/google/protobuf/MessageLite.java similarity index 82% rename from cpp/thirdparty/protobuf-2.3.0/java/src/main/java/com/google/protobuf/MessageLite.java rename to cpp/thirdparty/protobuf-2.5.0/java/src/main/java/com/google/protobuf/MessageLite.java index cf7f39e2f..e5b9a47be 100644 --- a/cpp/thirdparty/protobuf-2.3.0/java/src/main/java/com/google/protobuf/MessageLite.java +++ b/cpp/thirdparty/protobuf-2.5.0/java/src/main/java/com/google/protobuf/MessageLite.java @@ -64,22 +64,8 @@ import java.io.OutputStream; * * @author kenton@google.com Kenton Varda */ -public interface MessageLite { - /** - * Get an instance of the type with all fields set to their default values. - * This may or may not be a singleton. This differs from the - * {@code getDefaultInstance()} method of generated message classes in that - * this method is an abstract method of the {@code MessageLite} interface - * whereas {@code getDefaultInstance()} is a static method of a specific - * class. They return the same thing. - */ - MessageLite getDefaultInstanceForType(); +public interface MessageLite extends MessageLiteOrBuilder { - /** - * Returns true if all required fields in the message and all embedded - * messages are set, false otherwise. - */ - boolean isInitialized(); /** * Serializes the message and writes it to {@code output}. This does not @@ -93,6 +79,12 @@ public interface MessageLite { */ int getSerializedSize(); + + /** + * Gets the parser for a message of the same type as this message. + */ + Parser getParserForType(); + // ----------------------------------------------------------------- // Convenience methods. @@ -153,16 +145,13 @@ public interface MessageLite { /** * Abstract interface implemented by Protocol Message builders. */ - interface Builder extends Cloneable { + interface Builder extends MessageLiteOrBuilder, Cloneable { /** Resets all fields to their default values. */ Builder clear(); /** - * Construct the final message. Once this is called, the Builder is no - * longer valid, and calling any other method will result in undefined - * behavior and may throw a NullPointerException. If you need to continue - * working with the builder after calling {@code build()}, {@code clone()} - * it first. + * Constructs the message based on the state of the Builder. Subsequent + * changes to the Builder will not affect the returned message. * @throws UninitializedMessageException The message is missing one or more * required fields (i.e. {@link #isInitialized()} returns false). * Use {@link #buildPartial()} to bypass this check. @@ -172,11 +161,7 @@ public interface MessageLite { /** * Like {@link #build()}, but does not throw an exception if the message * is missing required fields. Instead, a partial message is returned. - * Once this is called, the Builder is no longer valid, and calling any - * will result in undefined behavior and may throw a NullPointerException. - * - * If you need to continue working with the builder after calling - * {@code buildPartial()}, {@code clone()} it first. + * Subsequent changes to the Builder will not affect the returned message. */ MessageLite buildPartial(); @@ -186,15 +171,9 @@ public interface MessageLite { */ Builder clone(); - /** - * Returns true if all required fields in the message and all embedded - * messages are set, false otherwise. - */ - boolean isInitialized(); - /** * Parses a message of this type from the input and merges it with this - * message, as if using {@link Builder#mergeFrom(MessageLite)}. + * message. * *

Warning: This does not verify that all required fields are present in * the input message. If you call {@link #build()} without setting all @@ -204,11 +183,6 @@ public interface MessageLite { *

    *
  • Call {@link #isInitialized()} to verify that all required fields * are set before building. - *
  • Parse the message separately using one of the static - * {@code parseFrom} methods, then use {@link #mergeFrom(MessageLite)} - * to merge it with this one. {@code parseFrom} will throw an - * {@link InvalidProtocolBufferException} (an {@code IOException}) - * if some required fields are missing. *
  • Use {@code buildPartial()} to build, which ignores missing * required fields. *
@@ -230,12 +204,6 @@ public interface MessageLite { ExtensionRegistryLite extensionRegistry) throws IOException; - /** - * Get the message's type's default instance. - * See {@link MessageLite#getDefaultInstanceForType()}. - */ - MessageLite getDefaultInstanceForType(); - // --------------------------------------------------------------- // Convenience methods. @@ -243,13 +211,17 @@ public interface MessageLite { * Parse {@code data} as a message of this type and merge it with the * message being built. This is just a small wrapper around * {@link #mergeFrom(CodedInputStream)}. + * + * @return this */ Builder mergeFrom(ByteString data) throws InvalidProtocolBufferException; /** * Parse {@code data} as a message of this type and merge it with the * message being built. This is just a small wrapper around - * {@link #mergeFrom(CodedInputStream,ExtensionRegistry)}. + * {@link #mergeFrom(CodedInputStream,ExtensionRegistryLite)}. + * + * @return this */ Builder mergeFrom(ByteString data, ExtensionRegistryLite extensionRegistry) @@ -259,6 +231,8 @@ public interface MessageLite { * Parse {@code data} as a message of this type and merge it with the * message being built. This is just a small wrapper around * {@link #mergeFrom(CodedInputStream)}. + * + * @return this */ Builder mergeFrom(byte[] data) throws InvalidProtocolBufferException; @@ -266,6 +240,8 @@ public interface MessageLite { * Parse {@code data} as a message of this type and merge it with the * message being built. This is just a small wrapper around * {@link #mergeFrom(CodedInputStream)}. + * + * @return this */ Builder mergeFrom(byte[] data, int off, int len) throws InvalidProtocolBufferException; @@ -273,7 +249,9 @@ public interface MessageLite { /** * Parse {@code data} as a message of this type and merge it with the * message being built. This is just a small wrapper around - * {@link #mergeFrom(CodedInputStream,ExtensionRegistry)}. + * {@link #mergeFrom(CodedInputStream,ExtensionRegistryLite)}. + * + * @return this */ Builder mergeFrom(byte[] data, ExtensionRegistryLite extensionRegistry) @@ -282,7 +260,9 @@ public interface MessageLite { /** * Parse {@code data} as a message of this type and merge it with the * message being built. This is just a small wrapper around - * {@link #mergeFrom(CodedInputStream,ExtensionRegistry)}. + * {@link #mergeFrom(CodedInputStream,ExtensionRegistryLite)}. + * + * @return this */ Builder mergeFrom(byte[] data, int off, int len, ExtensionRegistryLite extensionRegistry) @@ -299,13 +279,17 @@ public interface MessageLite { * and {@link #mergeDelimitedFrom(InputStream)} to read it. *

* Despite usually reading the entire input, this does not close the stream. + * + * @return this */ Builder mergeFrom(InputStream input) throws IOException; /** * Parse a message of this type from {@code input} and merge it with the * message being built. This is just a small wrapper around - * {@link #mergeFrom(CodedInputStream,ExtensionRegistry)}. + * {@link #mergeFrom(CodedInputStream,ExtensionRegistryLite)}. + * + * @return this */ Builder mergeFrom(InputStream input, ExtensionRegistryLite extensionRegistry) @@ -318,9 +302,9 @@ public interface MessageLite { * {@link MessageLite#writeDelimitedTo(OutputStream)} to write messages in * this format. * - * @returns True if successful, or false if the stream is at EOF when the - * method starts. Any other error (including reaching EOF during - * parsing) will cause an exception to be thrown. + * @return True if successful, or false if the stream is at EOF when the + * method starts. Any other error (including reaching EOF during + * parsing) will cause an exception to be thrown. */ boolean mergeDelimitedFrom(InputStream input) throws IOException; diff --git a/cpp/thirdparty/protobuf-2.5.0/java/src/main/java/com/google/protobuf/MessageLiteOrBuilder.java b/cpp/thirdparty/protobuf-2.5.0/java/src/main/java/com/google/protobuf/MessageLiteOrBuilder.java new file mode 100644 index 000000000..05b2b161a --- /dev/null +++ b/cpp/thirdparty/protobuf-2.5.0/java/src/main/java/com/google/protobuf/MessageLiteOrBuilder.java @@ -0,0 +1,60 @@ +// Protocol Buffers - Google's data interchange format +// Copyright 2008 Google Inc. All rights reserved. +// http://code.google.com/p/protobuf/ +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +package com.google.protobuf; + +/** + * Base interface for methods common to {@link MessageLite} + * and {@link MessageLite.Builder} to provide type equivalency. + * + * @author jonp@google.com (Jon Perlow) + */ +public interface MessageLiteOrBuilder { + /** + * Get an instance of the type with no fields set. Because no fields are set, + * all getters for singular fields will return default values and repeated + * fields will appear empty. + * This may or may not be a singleton. This differs from the + * {@code getDefaultInstance()} method of generated message classes in that + * this method is an abstract method of the {@code MessageLite} interface + * whereas {@code getDefaultInstance()} is a static method of a specific + * class. They return the same thing. + */ + MessageLite getDefaultInstanceForType(); + + /** + * Returns true if all required fields in the message and all embedded + * messages are set, false otherwise. + * + *

See also: {@link MessageOrBuilder#getInitializationErrorString()} + */ + boolean isInitialized(); + +} diff --git a/cpp/thirdparty/protobuf-2.5.0/java/src/main/java/com/google/protobuf/MessageOrBuilder.java b/cpp/thirdparty/protobuf-2.5.0/java/src/main/java/com/google/protobuf/MessageOrBuilder.java new file mode 100644 index 000000000..bf62d45ec --- /dev/null +++ b/cpp/thirdparty/protobuf-2.5.0/java/src/main/java/com/google/protobuf/MessageOrBuilder.java @@ -0,0 +1,129 @@ +// Protocol Buffers - Google's data interchange format +// Copyright 2008 Google Inc. All rights reserved. +// http://code.google.com/p/protobuf/ +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +package com.google.protobuf; + +import java.util.List; +import java.util.Map; + +/** + * Base interface for methods common to {@link Message} and + * {@link Message.Builder} to provide type equivalency. + * + * @author jonp@google.com (Jon Perlow) + */ +public interface MessageOrBuilder extends MessageLiteOrBuilder { + + // (From MessageLite, re-declared here only for return type covariance.) + //@Override (Java 1.6 override semantics, but we must support 1.5) + Message getDefaultInstanceForType(); + + /** + * Returns a list of field paths (e.g. "foo.bar.baz") of required fields + * which are not set in this message. You should call + * {@link MessageLiteOrBuilder#isInitialized()} first to check if there + * are any missing fields, as that method is likely to be much faster + * than this one even when the message is fully-initialized. + */ + List findInitializationErrors(); + + /** + * Returns a comma-delimited list of required fields which are not set + * in this message object. You should call + * {@link MessageLiteOrBuilder#isInitialized()} first to check if there + * are any missing fields, as that method is likely to be much faster + * than this one even when the message is fully-initialized. + */ + String getInitializationErrorString(); + + /** + * Get the message's type's descriptor. This differs from the + * {@code getDescriptor()} method of generated message classes in that + * this method is an abstract method of the {@code Message} interface + * whereas {@code getDescriptor()} is a static method of a specific class. + * They return the same thing. + */ + Descriptors.Descriptor getDescriptorForType(); + + /** + * Returns a collection of all the fields in this message which are set + * and their corresponding values. A singular ("required" or "optional") + * field is set iff hasField() returns true for that field. A "repeated" + * field is set iff getRepeatedFieldSize() is greater than zero. The + * values are exactly what would be returned by calling + * {@link #getField(Descriptors.FieldDescriptor)} for each field. The map + * is guaranteed to be a sorted map, so iterating over it will return fields + * in order by field number. + *
+ * If this is for a builder, the returned map may or may not reflect future + * changes to the builder. Either way, the returned map is itself + * unmodifiable. + */ + Map getAllFields(); + + /** + * Returns true if the given field is set. This is exactly equivalent to + * calling the generated "has" accessor method corresponding to the field. + * @throws IllegalArgumentException The field is a repeated field, or + * {@code field.getContainingType() != getDescriptorForType()}. + */ + boolean hasField(Descriptors.FieldDescriptor field); + + /** + * Obtains the value of the given field, or the default value if it is + * not set. For primitive fields, the boxed primitive value is returned. + * For enum fields, the EnumValueDescriptor for the value is returned. For + * embedded message fields, the sub-message is returned. For repeated + * fields, a java.util.List is returned. + */ + Object getField(Descriptors.FieldDescriptor field); + + /** + * Gets the number of elements of a repeated field. This is exactly + * equivalent to calling the generated "Count" accessor method corresponding + * to the field. + * @throws IllegalArgumentException The field is not a repeated field, or + * {@code field.getContainingType() != getDescriptorForType()}. + */ + int getRepeatedFieldCount(Descriptors.FieldDescriptor field); + + /** + * Gets an element of a repeated field. For primitive fields, the boxed + * primitive value is returned. For enum fields, the EnumValueDescriptor + * for the value is returned. For embedded message fields, the sub-message + * is returned. + * @throws IllegalArgumentException The field is not a repeated field, or + * {@code field.getContainingType() != getDescriptorForType()}. + */ + Object getRepeatedField(Descriptors.FieldDescriptor field, int index); + + /** Get the {@link UnknownFieldSet} for this message. */ + UnknownFieldSet getUnknownFields(); +} diff --git a/cpp/thirdparty/protobuf-2.5.0/java/src/main/java/com/google/protobuf/Parser.java b/cpp/thirdparty/protobuf-2.5.0/java/src/main/java/com/google/protobuf/Parser.java new file mode 100644 index 000000000..7d8e82170 --- /dev/null +++ b/cpp/thirdparty/protobuf-2.5.0/java/src/main/java/com/google/protobuf/Parser.java @@ -0,0 +1,259 @@ +// Protocol Buffers - Google's data interchange format +// Copyright 2008 Google Inc. All rights reserved. +// http://code.google.com/p/protobuf/ +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +package com.google.protobuf; + +import java.io.InputStream; + +/** + * Abstract interface for parsing Protocol Messages. + * + * @author liujisi@google.com (Pherl Liu) + */ +public interface Parser { + /** + * Parses a message of {@code MessageType} from the input. + * + *

Note: The caller should call + * {@link CodedInputStream#checkLastTagWas(int)} after calling this to + * verify that the last tag seen was the appropriate end-group tag, + * or zero for EOF. + */ + public MessageType parseFrom(CodedInputStream input) + throws InvalidProtocolBufferException; + + /** + * Like {@link #parseFrom(CodedInputStream)}, but also parses extensions. + * The extensions that you want to be able to parse must be registered in + * {@code extensionRegistry}. Extensions not in the registry will be treated + * as unknown fields. + */ + public MessageType parseFrom(CodedInputStream input, + ExtensionRegistryLite extensionRegistry) + throws InvalidProtocolBufferException; + + /** + * Like {@link #parseFrom(CodedInputStream)}, but does not throw an + * exception if the message is missing required fields. Instead, a partial + * message is returned. + */ + public MessageType parsePartialFrom(CodedInputStream input) + throws InvalidProtocolBufferException; + + /** + * Like {@link #parseFrom(CodedInputStream input, ExtensionRegistryLite)}, + * but does not throw an exception if the message is missing required fields. + * Instead, a partial message is returned. + */ + public MessageType parsePartialFrom(CodedInputStream input, + ExtensionRegistryLite extensionRegistry) + throws InvalidProtocolBufferException; + + // --------------------------------------------------------------- + // Convenience methods. + + /** + * Parses {@code data} as a message of {@code MessageType}. + * This is just a small wrapper around {@link #parseFrom(CodedInputStream)}. + */ + public MessageType parseFrom(ByteString data) + throws InvalidProtocolBufferException; + + /** + * Parses {@code data} as a message of {@code MessageType}. + * This is just a small wrapper around + * {@link #parseFrom(CodedInputStream, ExtensionRegistryLite)}. + */ + public MessageType parseFrom(ByteString data, + ExtensionRegistryLite extensionRegistry) + throws InvalidProtocolBufferException; + + /** + * Like {@link #parseFrom(ByteString)}, but does not throw an + * exception if the message is missing required fields. Instead, a partial + * message is returned. + */ + public MessageType parsePartialFrom(ByteString data) + throws InvalidProtocolBufferException; + + /** + * Like {@link #parseFrom(ByteString, ExtensionRegistryLite)}, + * but does not throw an exception if the message is missing required fields. + * Instead, a partial message is returned. + */ + public MessageType parsePartialFrom(ByteString data, + ExtensionRegistryLite extensionRegistry) + throws InvalidProtocolBufferException; + + /** + * Parses {@code data} as a message of {@code MessageType}. + * This is just a small wrapper around {@link #parseFrom(CodedInputStream)}. + */ + public MessageType parseFrom(byte[] data, int off, int len) + throws InvalidProtocolBufferException; + + /** + * Parses {@code data} as a message of {@code MessageType}. + * This is just a small wrapper around + * {@link #parseFrom(CodedInputStream, ExtensionRegistryLite)}. + */ + public MessageType parseFrom(byte[] data, int off, int len, + ExtensionRegistryLite extensionRegistry) + throws InvalidProtocolBufferException; + + /** + * Parses {@code data} as a message of {@code MessageType}. + * This is just a small wrapper around {@link #parseFrom(CodedInputStream)}. + */ + public MessageType parseFrom(byte[] data) + throws InvalidProtocolBufferException; + + /** + * Parses {@code data} as a message of {@code MessageType}. + * This is just a small wrapper around + * {@link #parseFrom(CodedInputStream, ExtensionRegistryLite)}. + */ + public MessageType parseFrom(byte[] data, + ExtensionRegistryLite extensionRegistry) + throws InvalidProtocolBufferException; + + /** + * Like {@link #parseFrom(byte[], int, int)}, but does not throw an + * exception if the message is missing required fields. Instead, a partial + * message is returned. + */ + public MessageType parsePartialFrom(byte[] data, int off, int len) + throws InvalidProtocolBufferException; + + /** + * Like {@link #parseFrom(ByteString, ExtensionRegistryLite)}, + * but does not throw an exception if the message is missing required fields. + * Instead, a partial message is returned. + */ + public MessageType parsePartialFrom(byte[] data, int off, int len, + ExtensionRegistryLite extensionRegistry) + throws InvalidProtocolBufferException; + + /** + * Like {@link #parseFrom(byte[])}, but does not throw an + * exception if the message is missing required fields. Instead, a partial + * message is returned. + */ + public MessageType parsePartialFrom(byte[] data) + throws InvalidProtocolBufferException; + + /** + * Like {@link #parseFrom(byte[], ExtensionRegistryLite)}, + * but does not throw an exception if the message is missing required fields. + * Instead, a partial message is returned. + */ + public MessageType parsePartialFrom(byte[] data, + ExtensionRegistryLite extensionRegistry) + throws InvalidProtocolBufferException; + + /** + * Parse a message of {@code MessageType} from {@code input}. + * This is just a small wrapper around {@link #parseFrom(CodedInputStream)}. + * Note that this method always reads the entire input (unless it + * throws an exception). If you want it to stop earlier, you will need to + * wrap your input in some wrapper stream that limits reading. Or, use + * {@link MessageLite#writeDelimitedTo(java.io.OutputStream)} to write your + * message and {@link #parseDelimitedFrom(InputStream)} to read it. + *

+ * Despite usually reading the entire input, this does not close the stream. + */ + public MessageType parseFrom(InputStream input) + throws InvalidProtocolBufferException; + + /** + * Parses a message of {@code MessageType} from {@code input}. + * This is just a small wrapper around + * {@link #parseFrom(CodedInputStream, ExtensionRegistryLite)}. + */ + public MessageType parseFrom(InputStream input, + ExtensionRegistryLite extensionRegistry) + throws InvalidProtocolBufferException; + + /** + * Like {@link #parseFrom(InputStream)}, but does not throw an + * exception if the message is missing required fields. Instead, a partial + * message is returned. + */ + public MessageType parsePartialFrom(InputStream input) + throws InvalidProtocolBufferException; + + /** + * Like {@link #parseFrom(InputStream, ExtensionRegistryLite)}, + * but does not throw an exception if the message is missing required fields. + * Instead, a partial message is returned. + */ + public MessageType parsePartialFrom(InputStream input, + ExtensionRegistryLite extensionRegistry) + throws InvalidProtocolBufferException; + + /** + * Like {@link #parseFrom(InputStream)}, but does not read util EOF. + * Instead, the size of message (encoded as a varint) is read first, + * then the message data. Use + * {@link MessageLite#writeDelimitedTo(java.io.OutputStream)} to write + * messages in this format. + * + * @return True if successful, or false if the stream is at EOF when the + * method starts. Any other error (including reaching EOF during + * parsing) will cause an exception to be thrown. + */ + public MessageType parseDelimitedFrom(InputStream input) + throws InvalidProtocolBufferException; + + /** + * Like {@link #parseDelimitedFrom(InputStream)} but supporting extensions. + */ + public MessageType parseDelimitedFrom(InputStream input, + ExtensionRegistryLite extensionRegistry) + throws InvalidProtocolBufferException; + + /** + * Like {@link #parseDelimitedFrom(InputStream)}, but does not throw an + * exception if the message is missing required fields. Instead, a partial + * message is returned. + */ + public MessageType parsePartialDelimitedFrom(InputStream input) + throws InvalidProtocolBufferException; + + /** + * Like {@link #parseDelimitedFrom(InputStream, ExtensionRegistryLite)}, + * but does not throw an exception if the message is missing required fields. + * Instead, a partial message is returned. + */ + public MessageType parsePartialDelimitedFrom( + InputStream input, + ExtensionRegistryLite extensionRegistry) + throws InvalidProtocolBufferException; +} diff --git a/cpp/thirdparty/protobuf-2.3.0/java/src/main/java/com/google/protobuf/ProtocolMessageEnum.java b/cpp/thirdparty/protobuf-2.5.0/java/src/main/java/com/google/protobuf/ProtocolMessageEnum.java similarity index 100% rename from cpp/thirdparty/protobuf-2.3.0/java/src/main/java/com/google/protobuf/ProtocolMessageEnum.java rename to cpp/thirdparty/protobuf-2.5.0/java/src/main/java/com/google/protobuf/ProtocolMessageEnum.java diff --git a/cpp/thirdparty/protobuf-2.5.0/java/src/main/java/com/google/protobuf/RepeatedFieldBuilder.java b/cpp/thirdparty/protobuf-2.5.0/java/src/main/java/com/google/protobuf/RepeatedFieldBuilder.java new file mode 100644 index 000000000..65d9270d8 --- /dev/null +++ b/cpp/thirdparty/protobuf-2.5.0/java/src/main/java/com/google/protobuf/RepeatedFieldBuilder.java @@ -0,0 +1,696 @@ +// Protocol Buffers - Google's data interchange format +// Copyright 2008 Google Inc. All rights reserved. +// http://code.google.com/p/protobuf/ +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +package com.google.protobuf; + +import java.util.AbstractList; +import java.util.ArrayList; +import java.util.Collection; +import java.util.Collections; +import java.util.List; + +/** + * {@code RepeatedFieldBuilder} implements a structure that a protocol + * message uses to hold a repeated field of other protocol messages. It supports + * the classical use case of adding immutable {@link Message}'s to the + * repeated field and is highly optimized around this (no extra memory + * allocations and sharing of immutable arrays). + *
+ * It also supports the additional use case of adding a {@link Message.Builder} + * to the repeated field and deferring conversion of that {@code Builder} + * to an immutable {@code Message}. In this way, it's possible to maintain + * a tree of {@code Builder}'s that acts as a fully read/write data + * structure. + *
+ * Logically, one can think of a tree of builders as converting the entire tree + * to messages when build is called on the root or when any method is called + * that desires a Message instead of a Builder. In terms of the implementation, + * the {@code SingleFieldBuilder} and {@code RepeatedFieldBuilder} + * classes cache messages that were created so that messages only need to be + * created when some change occured in its builder or a builder for one of its + * descendants. + * + * @param the type of message for the field + * @param the type of builder for the field + * @param the common interface for the message and the builder + * + * @author jonp@google.com (Jon Perlow) + */ +public class RepeatedFieldBuilder + + implements GeneratedMessage.BuilderParent { + + // Parent to send changes to. + private GeneratedMessage.BuilderParent parent; + + // List of messages. Never null. It may be immutable, in which case + // isMessagesListImmutable will be true. See note below. + private List messages; + + // Whether messages is an mutable array that can be modified. + private boolean isMessagesListMutable; + + // List of builders. May be null, in which case, no nested builders were + // created. If not null, entries represent the builder for that index. + private List> builders; + + // Here are the invariants for messages and builders: + // 1. messages is never null and its count corresponds to the number of items + // in the repeated field. + // 2. If builders is non-null, messages and builders MUST always + // contain the same number of items. + // 3. Entries in either array can be null, but for any index, there MUST be + // either a Message in messages or a builder in builders. + // 4. If the builder at an index is non-null, the builder is + // authoritative. This is the case where a Builder was set on the index. + // Any message in the messages array MUST be ignored. + // t. If the builder at an index is null, the message in the messages + // list is authoritative. This is the case where a Message (not a Builder) + // was set directly for an index. + + // Indicates that we've built a message and so we are now obligated + // to dispatch dirty invalidations. See GeneratedMessage.BuilderListener. + private boolean isClean; + + // A view of this builder that exposes a List interface of messages. This is + // initialized on demand. This is fully backed by this object and all changes + // are reflected in it. Access to any item converts it to a message if it + // was a builder. + private MessageExternalList externalMessageList; + + // A view of this builder that exposes a List interface of builders. This is + // initialized on demand. This is fully backed by this object and all changes + // are reflected in it. Access to any item converts it to a builder if it + // was a message. + private BuilderExternalList externalBuilderList; + + // A view of this builder that exposes a List interface of the interface + // implemented by messages and builders. This is initialized on demand. This + // is fully backed by this object and all changes are reflected in it. + // Access to any item returns either a builder or message depending on + // what is most efficient. + private MessageOrBuilderExternalList + externalMessageOrBuilderList; + + /** + * Constructs a new builder with an empty list of messages. + * + * @param messages the current list of messages + * @param isMessagesListMutable Whether the messages list is mutable + * @param parent a listener to notify of changes + * @param isClean whether the builder is initially marked clean + */ + public RepeatedFieldBuilder( + List messages, + boolean isMessagesListMutable, + GeneratedMessage.BuilderParent parent, + boolean isClean) { + this.messages = messages; + this.isMessagesListMutable = isMessagesListMutable; + this.parent = parent; + this.isClean = isClean; + } + + public void dispose() { + // Null out parent so we stop sending it invalidations. + parent = null; + } + + /** + * Ensures that the list of messages is mutable so it can be updated. If it's + * immutable, a copy is made. + */ + private void ensureMutableMessageList() { + if (!isMessagesListMutable) { + messages = new ArrayList(messages); + isMessagesListMutable = true; + } + } + + /** + * Ensures that the list of builders is not null. If it's null, the list is + * created and initialized to be the same size as the messages list with + * null entries. + */ + private void ensureBuilders() { + if (this.builders == null) { + this.builders = + new ArrayList>( + messages.size()); + for (int i = 0; i < messages.size(); i++) { + builders.add(null); + } + } + } + + /** + * Gets the count of items in the list. + * + * @return the count of items in the list. + */ + public int getCount() { + return messages.size(); + } + + /** + * Gets whether the list is empty. + * + * @return whether the list is empty + */ + public boolean isEmpty() { + return messages.isEmpty(); + } + + /** + * Get the message at the specified index. If the message is currently stored + * as a {@code Builder}, it is converted to a {@code Message} by + * calling {@link Message.Builder#buildPartial} on it. + * + * @param index the index of the message to get + * @return the message for the specified index + */ + public MType getMessage(int index) { + return getMessage(index, false); + } + + /** + * Get the message at the specified index. If the message is currently stored + * as a {@code Builder}, it is converted to a {@code Message} by + * calling {@link Message.Builder#buildPartial} on it. + * + * @param index the index of the message to get + * @param forBuild this is being called for build so we want to make sure + * we SingleFieldBuilder.build to send dirty invalidations + * @return the message for the specified index + */ + private MType getMessage(int index, boolean forBuild) { + if (this.builders == null) { + // We don't have any builders -- return the current Message. + // This is the case where no builder was created, so we MUST have a + // Message. + return messages.get(index); + } + + SingleFieldBuilder builder = builders.get(index); + if (builder == null) { + // We don't have a builder -- return the current message. + // This is the case where no builder was created for the entry at index, + // so we MUST have a message. + return messages.get(index); + + } else { + return forBuild ? builder.build() : builder.getMessage(); + } + } + + /** + * Gets a builder for the specified index. If no builder has been created for + * that index, a builder is created on demand by calling + * {@link Message#toBuilder}. + * + * @param index the index of the message to get + * @return The builder for that index + */ + public BType getBuilder(int index) { + ensureBuilders(); + SingleFieldBuilder builder = builders.get(index); + if (builder == null) { + MType message = messages.get(index); + builder = new SingleFieldBuilder( + message, this, isClean); + builders.set(index, builder); + } + return builder.getBuilder(); + } + + /** + * Gets the base class interface for the specified index. This may either be + * a builder or a message. It will return whatever is more efficient. + * + * @param index the index of the message to get + * @return the message or builder for the index as the base class interface + */ + @SuppressWarnings("unchecked") + public IType getMessageOrBuilder(int index) { + if (this.builders == null) { + // We don't have any builders -- return the current Message. + // This is the case where no builder was created, so we MUST have a + // Message. + return (IType) messages.get(index); + } + + SingleFieldBuilder builder = builders.get(index); + if (builder == null) { + // We don't have a builder -- return the current message. + // This is the case where no builder was created for the entry at index, + // so we MUST have a message. + return (IType) messages.get(index); + + } else { + return builder.getMessageOrBuilder(); + } + } + + /** + * Sets a message at the specified index replacing the existing item at + * that index. + * + * @param index the index to set. + * @param message the message to set + * @return the builder + */ + public RepeatedFieldBuilder setMessage( + int index, MType message) { + if (message == null) { + throw new NullPointerException(); + } + ensureMutableMessageList(); + messages.set(index, message); + if (builders != null) { + SingleFieldBuilder entry = + builders.set(index, null); + if (entry != null) { + entry.dispose(); + } + } + onChanged(); + incrementModCounts(); + return this; + } + + /** + * Appends the specified element to the end of this list. + * + * @param message the message to add + * @return the builder + */ + public RepeatedFieldBuilder addMessage( + MType message) { + if (message == null) { + throw new NullPointerException(); + } + ensureMutableMessageList(); + messages.add(message); + if (builders != null) { + builders.add(null); + } + onChanged(); + incrementModCounts(); + return this; + } + + /** + * Inserts the specified message at the specified position in this list. + * Shifts the element currently at that position (if any) and any subsequent + * elements to the right (adds one to their indices). + * + * @param index the index at which to insert the message + * @param message the message to add + * @return the builder + */ + public RepeatedFieldBuilder addMessage( + int index, MType message) { + if (message == null) { + throw new NullPointerException(); + } + ensureMutableMessageList(); + messages.add(index, message); + if (builders != null) { + builders.add(index, null); + } + onChanged(); + incrementModCounts(); + return this; + } + + /** + * Appends all of the messages in the specified collection to the end of + * this list, in the order that they are returned by the specified + * collection's iterator. + * + * @param values the messages to add + * @return the builder + */ + public RepeatedFieldBuilder addAllMessages( + Iterable values) { + for (final MType value : values) { + if (value == null) { + throw new NullPointerException(); + } + } + if (values instanceof Collection) { + @SuppressWarnings("unchecked") final + Collection collection = (Collection) values; + if (collection.size() == 0) { + return this; + } + ensureMutableMessageList(); + for (MType value : values) { + addMessage(value); + } + } else { + ensureMutableMessageList(); + for (MType value : values) { + addMessage(value); + } + } + onChanged(); + incrementModCounts(); + return this; + } + + /** + * Appends a new builder to the end of this list and returns the builder. + * + * @param message the message to add which is the basis of the builder + * @return the new builder + */ + public BType addBuilder(MType message) { + ensureMutableMessageList(); + ensureBuilders(); + SingleFieldBuilder builder = + new SingleFieldBuilder( + message, this, isClean); + messages.add(null); + builders.add(builder); + onChanged(); + incrementModCounts(); + return builder.getBuilder(); + } + + /** + * Inserts a new builder at the specified position in this list. + * Shifts the element currently at that position (if any) and any subsequent + * elements to the right (adds one to their indices). + * + * @param index the index at which to insert the builder + * @param message the message to add which is the basis of the builder + * @return the builder + */ + public BType addBuilder(int index, MType message) { + ensureMutableMessageList(); + ensureBuilders(); + SingleFieldBuilder builder = + new SingleFieldBuilder( + message, this, isClean); + messages.add(index, null); + builders.add(index, builder); + onChanged(); + incrementModCounts(); + return builder.getBuilder(); + } + + /** + * Removes the element at the specified position in this list. Shifts any + * subsequent elements to the left (subtracts one from their indices). + * Returns the element that was removed from the list. + * + * @param index the index at which to remove the message + */ + public void remove(int index) { + ensureMutableMessageList(); + messages.remove(index); + if (builders != null) { + SingleFieldBuilder entry = + builders.remove(index); + if (entry != null) { + entry.dispose(); + } + } + onChanged(); + incrementModCounts(); + } + + /** + * Removes all of the elements from this list. + * The list will be empty after this call returns. + */ + public void clear() { + messages = Collections.emptyList(); + isMessagesListMutable = false; + if (builders != null) { + for (SingleFieldBuilder entry : + builders) { + if (entry != null) { + entry.dispose(); + } + } + builders = null; + } + onChanged(); + incrementModCounts(); + } + + /** + * Builds the list of messages from the builder and returns them. + * + * @return an immutable list of messages + */ + public List build() { + // Now that build has been called, we are required to dispatch + // invalidations. + isClean = true; + + if (!isMessagesListMutable && builders == null) { + // We still have an immutable list and we never created a builder. + return messages; + } + + boolean allMessagesInSync = true; + if (!isMessagesListMutable) { + // We still have an immutable list. Let's see if any of them are out + // of sync with their builders. + for (int i = 0; i < messages.size(); i++) { + Message message = messages.get(i); + SingleFieldBuilder builder = builders.get(i); + if (builder != null) { + if (builder.build() != message) { + allMessagesInSync = false; + break; + } + } + } + if (allMessagesInSync) { + // Immutable list is still in sync. + return messages; + } + } + + // Need to make sure messages is up to date + ensureMutableMessageList(); + for (int i = 0; i < messages.size(); i++) { + messages.set(i, getMessage(i, true)); + } + + // We're going to return our list as immutable so we mark that we can + // no longer update it. + messages = Collections.unmodifiableList(messages); + isMessagesListMutable = false; + return messages; + } + + /** + * Gets a view of the builder as a list of messages. The returned list is live + * and will reflect any changes to the underlying builder. + * + * @return the messages in the list + */ + public List getMessageList() { + if (externalMessageList == null) { + externalMessageList = + new MessageExternalList(this); + } + return externalMessageList; + } + + /** + * Gets a view of the builder as a list of builders. This returned list is + * live and will reflect any changes to the underlying builder. + * + * @return the builders in the list + */ + public List getBuilderList() { + if (externalBuilderList == null) { + externalBuilderList = + new BuilderExternalList(this); + } + return externalBuilderList; + } + + /** + * Gets a view of the builder as a list of MessageOrBuilders. This returned + * list is live and will reflect any changes to the underlying builder. + * + * @return the builders in the list + */ + public List getMessageOrBuilderList() { + if (externalMessageOrBuilderList == null) { + externalMessageOrBuilderList = + new MessageOrBuilderExternalList(this); + } + return externalMessageOrBuilderList; + } + + /** + * Called when a the builder or one of its nested children has changed + * and any parent should be notified of its invalidation. + */ + private void onChanged() { + if (isClean && parent != null) { + parent.markDirty(); + + // Don't keep dispatching invalidations until build is called again. + isClean = false; + } + } + + //@Override (Java 1.6 override semantics, but we must support 1.5) + public void markDirty() { + onChanged(); + } + + /** + * Increments the mod counts so that an ConcurrentModificationException can + * be thrown if calling code tries to modify the builder while its iterating + * the list. + */ + private void incrementModCounts() { + if (externalMessageList != null) { + externalMessageList.incrementModCount(); + } + if (externalBuilderList != null) { + externalBuilderList.incrementModCount(); + } + if (externalMessageOrBuilderList != null) { + externalMessageOrBuilderList.incrementModCount(); + } + } + + /** + * Provides a live view of the builder as a list of messages. + * + * @param the type of message for the field + * @param the type of builder for the field + * @param the common interface for the message and the builder + */ + private static class MessageExternalList< + MType extends GeneratedMessage, + BType extends GeneratedMessage.Builder, + IType extends MessageOrBuilder> + extends AbstractList implements List { + + RepeatedFieldBuilder builder; + + MessageExternalList( + RepeatedFieldBuilder builder) { + this.builder = builder; + } + + public int size() { + return this.builder.getCount(); + } + + public MType get(int index) { + return builder.getMessage(index); + } + + void incrementModCount() { + modCount++; + } + } + + /** + * Provides a live view of the builder as a list of builders. + * + * @param the type of message for the field + * @param the type of builder for the field + * @param the common interface for the message and the builder + */ + private static class BuilderExternalList< + MType extends GeneratedMessage, + BType extends GeneratedMessage.Builder, + IType extends MessageOrBuilder> + extends AbstractList implements List { + + RepeatedFieldBuilder builder; + + BuilderExternalList( + RepeatedFieldBuilder builder) { + this.builder = builder; + } + + public int size() { + return this.builder.getCount(); + } + + public BType get(int index) { + return builder.getBuilder(index); + } + + void incrementModCount() { + modCount++; + } + } + + /** + * Provides a live view of the builder as a list of builders. + * + * @param the type of message for the field + * @param the type of builder for the field + * @param the common interface for the message and the builder + */ + private static class MessageOrBuilderExternalList< + MType extends GeneratedMessage, + BType extends GeneratedMessage.Builder, + IType extends MessageOrBuilder> + extends AbstractList implements List { + + RepeatedFieldBuilder builder; + + MessageOrBuilderExternalList( + RepeatedFieldBuilder builder) { + this.builder = builder; + } + + public int size() { + return this.builder.getCount(); + } + + public IType get(int index) { + return builder.getMessageOrBuilder(index); + } + + void incrementModCount() { + modCount++; + } + } +} diff --git a/cpp/thirdparty/protobuf-2.5.0/java/src/main/java/com/google/protobuf/RopeByteString.java b/cpp/thirdparty/protobuf-2.5.0/java/src/main/java/com/google/protobuf/RopeByteString.java new file mode 100644 index 000000000..469978234 --- /dev/null +++ b/cpp/thirdparty/protobuf-2.5.0/java/src/main/java/com/google/protobuf/RopeByteString.java @@ -0,0 +1,943 @@ +// Protocol Buffers - Google's data interchange format +// Copyright 2008 Google Inc. All rights reserved. +// http://code.google.com/p/protobuf/ +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +package com.google.protobuf; + +import java.io.IOException; +import java.io.InputStream; +import java.io.OutputStream; +import java.io.UnsupportedEncodingException; +import java.io.ByteArrayInputStream; +import java.nio.ByteBuffer; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.Iterator; +import java.util.List; +import java.util.NoSuchElementException; +import java.util.Stack; + +/** + * Class to represent {@code ByteStrings} formed by concatenation of other + * ByteStrings, without copying the data in the pieces. The concatenation is + * represented as a tree whose leaf nodes are each a {@link LiteralByteString}. + * + *

Most of the operation here is inspired by the now-famous paper + * BAP95 Ropes: an Alternative to Strings hans-j. boehm, russ atkinson and + * michael plass + * + *

The algorithms described in the paper have been implemented for character + * strings in {@link com.google.common.string.Rope} and in the c++ class {@code + * cord.cc}. + * + *

Fundamentally the Rope algorithm represents the collection of pieces as a + * binary tree. BAP95 uses a Fibonacci bound relating depth to a minimum + * sequence length, sequences that are too short relative to their depth cause a + * tree rebalance. More precisely, a tree of depth d is "balanced" in the + * terminology of BAP95 if its length is at least F(d+2), where F(n) is the + * n-the Fibonacci number. Thus for depths 0, 1, 2, 3, 4, 5,... we have minimum + * lengths 1, 2, 3, 5, 8, 13,... + * + * @author carlanton@google.com (Carl Haverl) + */ +class RopeByteString extends ByteString { + + /** + * BAP95. Let Fn be the nth Fibonacci number. A {@link RopeByteString} of + * depth n is "balanced", i.e flat enough, if its length is at least Fn+2, + * e.g. a "balanced" {@link RopeByteString} of depth 1 must have length at + * least 2, of depth 4 must have length >= 8, etc. + * + *

There's nothing special about using the Fibonacci numbers for this, but + * they are a reasonable sequence for encapsulating the idea that we are OK + * with longer strings being encoded in deeper binary trees. + * + *

For 32-bit integers, this array has length 46. + */ + private static final int[] minLengthByDepth; + + static { + // Dynamically generate the list of Fibonacci numbers the first time this + // class is accessed. + List numbers = new ArrayList(); + + // we skip the first Fibonacci number (1). So instead of: 1 1 2 3 5 8 ... + // we have: 1 2 3 5 8 ... + int f1 = 1; + int f2 = 1; + + // get all the values until we roll over. + while (f2 > 0) { + numbers.add(f2); + int temp = f1 + f2; + f1 = f2; + f2 = temp; + } + + // we include this here so that we can index this array to [x + 1] in the + // loops below. + numbers.add(Integer.MAX_VALUE); + minLengthByDepth = new int[numbers.size()]; + for (int i = 0; i < minLengthByDepth.length; i++) { + // unbox all the values + minLengthByDepth[i] = numbers.get(i); + } + } + + private final int totalLength; + private final ByteString left; + private final ByteString right; + private final int leftLength; + private final int treeDepth; + + /** + * Create a new RopeByteString, which can be thought of as a new tree node, by + * recording references to the two given strings. + * + * @param left string on the left of this node, should have {@code size() > + * 0} + * @param right string on the right of this node, should have {@code size() > + * 0} + */ + private RopeByteString(ByteString left, ByteString right) { + this.left = left; + this.right = right; + leftLength = left.size(); + totalLength = leftLength + right.size(); + treeDepth = Math.max(left.getTreeDepth(), right.getTreeDepth()) + 1; + } + + /** + * Concatenate the given strings while performing various optimizations to + * slow the growth rate of tree depth and tree node count. The result is + * either a {@link LiteralByteString} or a {@link RopeByteString} + * depending on which optimizations, if any, were applied. + * + *

Small pieces of length less than {@link + * ByteString#CONCATENATE_BY_COPY_SIZE} may be copied by value here, as in + * BAP95. Large pieces are referenced without copy. + * + * @param left string on the left + * @param right string on the right + * @return concatenation representing the same sequence as the given strings + */ + static ByteString concatenate(ByteString left, ByteString right) { + ByteString result; + RopeByteString leftRope = + (left instanceof RopeByteString) ? (RopeByteString) left : null; + if (right.size() == 0) { + result = left; + } else if (left.size() == 0) { + result = right; + } else { + int newLength = left.size() + right.size(); + if (newLength < ByteString.CONCATENATE_BY_COPY_SIZE) { + // Optimization from BAP95: For short (leaves in paper, but just short + // here) total length, do a copy of data to a new leaf. + result = concatenateBytes(left, right); + } else if (leftRope != null + && leftRope.right.size() + right.size() < CONCATENATE_BY_COPY_SIZE) { + // Optimization from BAP95: As an optimization of the case where the + // ByteString is constructed by repeated concatenate, recognize the case + // where a short string is concatenated to a left-hand node whose + // right-hand branch is short. In the paper this applies to leaves, but + // we just look at the length here. This has the advantage of shedding + // references to unneeded data when substrings have been taken. + // + // When we recognize this case, we do a copy of the data and create a + // new parent node so that the depth of the result is the same as the + // given left tree. + ByteString newRight = concatenateBytes(leftRope.right, right); + result = new RopeByteString(leftRope.left, newRight); + } else if (leftRope != null + && leftRope.left.getTreeDepth() > leftRope.right.getTreeDepth() + && leftRope.getTreeDepth() > right.getTreeDepth()) { + // Typically for concatenate-built strings the left-side is deeper than + // the right. This is our final attempt to concatenate without + // increasing the tree depth. We'll redo the the node on the RHS. This + // is yet another optimization for building the string by repeatedly + // concatenating on the right. + ByteString newRight = new RopeByteString(leftRope.right, right); + result = new RopeByteString(leftRope.left, newRight); + } else { + // Fine, we'll add a node and increase the tree depth--unless we + // rebalance ;^) + int newDepth = Math.max(left.getTreeDepth(), right.getTreeDepth()) + 1; + if (newLength >= minLengthByDepth[newDepth]) { + // The tree is shallow enough, so don't rebalance + result = new RopeByteString(left, right); + } else { + result = new Balancer().balance(left, right); + } + } + } + return result; + } + + /** + * Concatenates two strings by copying data values. This is called in a few + * cases in order to reduce the growth of the number of tree nodes. + * + * @param left string on the left + * @param right string on the right + * @return string formed by copying data bytes + */ + private static LiteralByteString concatenateBytes(ByteString left, + ByteString right) { + int leftSize = left.size(); + int rightSize = right.size(); + byte[] bytes = new byte[leftSize + rightSize]; + left.copyTo(bytes, 0, 0, leftSize); + right.copyTo(bytes, 0, leftSize, rightSize); + return new LiteralByteString(bytes); // Constructor wraps bytes + } + + /** + * Create a new RopeByteString for testing only while bypassing all the + * defenses of {@link #concatenate(ByteString, ByteString)}. This allows + * testing trees of specific structure. We are also able to insert empty + * leaves, though these are dis-allowed, so that we can make sure the + * implementation can withstand their presence. + * + * @param left string on the left of this node + * @param right string on the right of this node + * @return an unsafe instance for testing only + */ + static RopeByteString newInstanceForTest(ByteString left, ByteString right) { + return new RopeByteString(left, right); + } + + /** + * Gets the byte at the given index. + * Throws {@link ArrayIndexOutOfBoundsException} for backwards-compatibility + * reasons although it would more properly be {@link + * IndexOutOfBoundsException}. + * + * @param index index of byte + * @return the value + * @throws ArrayIndexOutOfBoundsException {@code index} is < 0 or >= size + */ + @Override + public byte byteAt(int index) { + if (index < 0) { + throw new ArrayIndexOutOfBoundsException("Index < 0: " + index); + } + if (index > totalLength) { + throw new ArrayIndexOutOfBoundsException( + "Index > length: " + index + ", " + totalLength); + } + + byte result; + // Find the relevant piece by recursive descent + if (index < leftLength) { + result = left.byteAt(index); + } else { + result = right.byteAt(index - leftLength); + } + return result; + } + + @Override + public int size() { + return totalLength; + } + + // ================================================================= + // Pieces + + @Override + protected int getTreeDepth() { + return treeDepth; + } + + /** + * Determines if the tree is balanced according to BAP95, which means the tree + * is flat-enough with respect to the bounds. Note that this definition of + * balanced is one where sub-trees of balanced trees are not necessarily + * balanced. + * + * @return true if the tree is balanced + */ + @Override + protected boolean isBalanced() { + return totalLength >= minLengthByDepth[treeDepth]; + } + + /** + * Takes a substring of this one. This involves recursive descent along the + * left and right edges of the substring, and referencing any wholly contained + * segments in between. Any leaf nodes entirely uninvolved in the substring + * will not be referenced by the substring. + * + *

Substrings of {@code length < 2} should result in at most a single + * recursive call chain, terminating at a leaf node. Thus the result will be a + * {@link LiteralByteString}. {@link #RopeByteString(ByteString, + * ByteString)}. + * + * @param beginIndex start at this index + * @param endIndex the last character is the one before this index + * @return substring leaf node or tree + */ + @Override + public ByteString substring(int beginIndex, int endIndex) { + if (beginIndex < 0) { + throw new IndexOutOfBoundsException( + "Beginning index: " + beginIndex + " < 0"); + } + if (endIndex > totalLength) { + throw new IndexOutOfBoundsException( + "End index: " + endIndex + " > " + totalLength); + } + int substringLength = endIndex - beginIndex; + if (substringLength < 0) { + throw new IndexOutOfBoundsException( + "Beginning index larger than ending index: " + beginIndex + ", " + + endIndex); + } + + ByteString result; + if (substringLength == 0) { + // Empty substring + result = ByteString.EMPTY; + } else if (substringLength == totalLength) { + // The whole string + result = this; + } else { + // Proper substring + if (endIndex <= leftLength) { + // Substring on the left + result = left.substring(beginIndex, endIndex); + } else if (beginIndex >= leftLength) { + // Substring on the right + result = right + .substring(beginIndex - leftLength, endIndex - leftLength); + } else { + // Split substring + ByteString leftSub = left.substring(beginIndex); + ByteString rightSub = right.substring(0, endIndex - leftLength); + // Intentionally not rebalancing, since in many cases these two + // substrings will already be less deep than the top-level + // RopeByteString we're taking a substring of. + result = new RopeByteString(leftSub, rightSub); + } + } + return result; + } + + // ================================================================= + // ByteString -> byte[] + + @Override + protected void copyToInternal(byte[] target, int sourceOffset, + int targetOffset, int numberToCopy) { + if (sourceOffset + numberToCopy <= leftLength) { + left.copyToInternal(target, sourceOffset, targetOffset, numberToCopy); + } else if (sourceOffset >= leftLength) { + right.copyToInternal(target, sourceOffset - leftLength, targetOffset, + numberToCopy); + } else { + int leftLength = this.leftLength - sourceOffset; + left.copyToInternal(target, sourceOffset, targetOffset, leftLength); + right.copyToInternal(target, 0, targetOffset + leftLength, + numberToCopy - leftLength); + } + } + + @Override + public void copyTo(ByteBuffer target) { + left.copyTo(target); + right.copyTo(target); + } + + @Override + public ByteBuffer asReadOnlyByteBuffer() { + ByteBuffer byteBuffer = ByteBuffer.wrap(toByteArray()); + return byteBuffer.asReadOnlyBuffer(); + } + + @Override + public List asReadOnlyByteBufferList() { + // Walk through the list of LiteralByteString's that make up this + // rope, and add each one as a read-only ByteBuffer. + List result = new ArrayList(); + PieceIterator pieces = new PieceIterator(this); + while (pieces.hasNext()) { + LiteralByteString byteString = pieces.next(); + result.add(byteString.asReadOnlyByteBuffer()); + } + return result; + } + + @Override + public void writeTo(OutputStream outputStream) throws IOException { + left.writeTo(outputStream); + right.writeTo(outputStream); + } + + @Override + public String toString(String charsetName) + throws UnsupportedEncodingException { + return new String(toByteArray(), charsetName); + } + + // ================================================================= + // UTF-8 decoding + + @Override + public boolean isValidUtf8() { + int leftPartial = left.partialIsValidUtf8(Utf8.COMPLETE, 0, leftLength); + int state = right.partialIsValidUtf8(leftPartial, 0, right.size()); + return state == Utf8.COMPLETE; + } + + @Override + protected int partialIsValidUtf8(int state, int offset, int length) { + int toIndex = offset + length; + if (toIndex <= leftLength) { + return left.partialIsValidUtf8(state, offset, length); + } else if (offset >= leftLength) { + return right.partialIsValidUtf8(state, offset - leftLength, length); + } else { + int leftLength = this.leftLength - offset; + int leftPartial = left.partialIsValidUtf8(state, offset, leftLength); + return right.partialIsValidUtf8(leftPartial, 0, length - leftLength); + } + } + + // ================================================================= + // equals() and hashCode() + + @Override + public boolean equals(Object other) { + if (other == this) { + return true; + } + if (!(other instanceof ByteString)) { + return false; + } + + ByteString otherByteString = (ByteString) other; + if (totalLength != otherByteString.size()) { + return false; + } + if (totalLength == 0) { + return true; + } + + // You don't really want to be calling equals on long strings, but since + // we cache the hashCode, we effectively cache inequality. We use the cached + // hashCode if it's already computed. It's arguable we should compute the + // hashCode here, and if we're going to be testing a bunch of byteStrings, + // it might even make sense. + if (hash != 0) { + int cachedOtherHash = otherByteString.peekCachedHashCode(); + if (cachedOtherHash != 0 && hash != cachedOtherHash) { + return false; + } + } + + return equalsFragments(otherByteString); + } + + /** + * Determines if this string is equal to another of the same length by + * iterating over the leaf nodes. On each step of the iteration, the + * overlapping segments of the leaves are compared. + * + * @param other string of the same length as this one + * @return true if the values of this string equals the value of the given + * one + */ + private boolean equalsFragments(ByteString other) { + int thisOffset = 0; + Iterator thisIter = new PieceIterator(this); + LiteralByteString thisString = thisIter.next(); + + int thatOffset = 0; + Iterator thatIter = new PieceIterator(other); + LiteralByteString thatString = thatIter.next(); + + int pos = 0; + while (true) { + int thisRemaining = thisString.size() - thisOffset; + int thatRemaining = thatString.size() - thatOffset; + int bytesToCompare = Math.min(thisRemaining, thatRemaining); + + // At least one of the offsets will be zero + boolean stillEqual = (thisOffset == 0) + ? thisString.equalsRange(thatString, thatOffset, bytesToCompare) + : thatString.equalsRange(thisString, thisOffset, bytesToCompare); + if (!stillEqual) { + return false; + } + + pos += bytesToCompare; + if (pos >= totalLength) { + if (pos == totalLength) { + return true; + } + throw new IllegalStateException(); + } + // We always get to the end of at least one of the pieces + if (bytesToCompare == thisRemaining) { // If reached end of this + thisOffset = 0; + thisString = thisIter.next(); + } else { + thisOffset += bytesToCompare; + } + if (bytesToCompare == thatRemaining) { // If reached end of that + thatOffset = 0; + thatString = thatIter.next(); + } else { + thatOffset += bytesToCompare; + } + } + } + + /** + * Cached hash value. Intentionally accessed via a data race, which is safe + * because of the Java Memory Model's "no out-of-thin-air values" guarantees + * for ints. + */ + private int hash = 0; + + @Override + public int hashCode() { + int h = hash; + + if (h == 0) { + h = totalLength; + h = partialHash(h, 0, totalLength); + if (h == 0) { + h = 1; + } + hash = h; + } + return h; + } + + @Override + protected int peekCachedHashCode() { + return hash; + } + + @Override + protected int partialHash(int h, int offset, int length) { + int toIndex = offset + length; + if (toIndex <= leftLength) { + return left.partialHash(h, offset, length); + } else if (offset >= leftLength) { + return right.partialHash(h, offset - leftLength, length); + } else { + int leftLength = this.leftLength - offset; + int leftPartial = left.partialHash(h, offset, leftLength); + return right.partialHash(leftPartial, 0, length - leftLength); + } + } + + // ================================================================= + // Input stream + + @Override + public CodedInputStream newCodedInput() { + return CodedInputStream.newInstance(new RopeInputStream()); + } + + @Override + public InputStream newInput() { + return new RopeInputStream(); + } + + /** + * This class implements the balancing algorithm of BAP95. In the paper the + * authors use an array to keep track of pieces, while here we use a stack. + * The tree is balanced by traversing subtrees in left to right order, and the + * stack always contains the part of the string we've traversed so far. + * + *

One surprising aspect of the algorithm is the result of balancing is not + * necessarily balanced, though it is nearly balanced. For details, see + * BAP95. + */ + private static class Balancer { + // Stack containing the part of the string, starting from the left, that + // we've already traversed. The final string should be the equivalent of + // concatenating the strings on the stack from bottom to top. + private final Stack prefixesStack = new Stack(); + + private ByteString balance(ByteString left, ByteString right) { + doBalance(left); + doBalance(right); + + // Sweep stack to gather the result + ByteString partialString = prefixesStack.pop(); + while (!prefixesStack.isEmpty()) { + ByteString newLeft = prefixesStack.pop(); + partialString = new RopeByteString(newLeft, partialString); + } + // We should end up with a RopeByteString since at a minimum we will + // create one from concatenating left and right + return partialString; + } + + private void doBalance(ByteString root) { + // BAP95: Insert balanced subtrees whole. This means the result might not + // be balanced, leading to repeated rebalancings on concatenate. However, + // these rebalancings are shallow due to ignoring balanced subtrees, and + // relatively few calls to insert() result. + if (root.isBalanced()) { + insert(root); + } else if (root instanceof RopeByteString) { + RopeByteString rbs = (RopeByteString) root; + doBalance(rbs.left); + doBalance(rbs.right); + } else { + throw new IllegalArgumentException( + "Has a new type of ByteString been created? Found " + + root.getClass()); + } + } + + /** + * Push a string on the balance stack (BAP95). BAP95 uses an array and + * calls the elements in the array 'bins'. We instead use a stack, so the + * 'bins' of lengths are represented by differences between the elements of + * minLengthByDepth. + * + *

If the length bin for our string, and all shorter length bins, are + * empty, we just push it on the stack. Otherwise, we need to start + * concatenating, putting the given string in the "middle" and continuing + * until we land in an empty length bin that matches the length of our + * concatenation. + * + * @param byteString string to place on the balance stack + */ + private void insert(ByteString byteString) { + int depthBin = getDepthBinForLength(byteString.size()); + int binEnd = minLengthByDepth[depthBin + 1]; + + // BAP95: Concatenate all trees occupying bins representing the length of + // our new piece or of shorter pieces, to the extent that is possible. + // The goal is to clear the bin which our piece belongs in, but that may + // not be entirely possible if there aren't enough longer bins occupied. + if (prefixesStack.isEmpty() || prefixesStack.peek().size() >= binEnd) { + prefixesStack.push(byteString); + } else { + int binStart = minLengthByDepth[depthBin]; + + // Concatenate the subtrees of shorter length + ByteString newTree = prefixesStack.pop(); + while (!prefixesStack.isEmpty() + && prefixesStack.peek().size() < binStart) { + ByteString left = prefixesStack.pop(); + newTree = new RopeByteString(left, newTree); + } + + // Concatenate the given string + newTree = new RopeByteString(newTree, byteString); + + // Continue concatenating until we land in an empty bin + while (!prefixesStack.isEmpty()) { + depthBin = getDepthBinForLength(newTree.size()); + binEnd = minLengthByDepth[depthBin + 1]; + if (prefixesStack.peek().size() < binEnd) { + ByteString left = prefixesStack.pop(); + newTree = new RopeByteString(left, newTree); + } else { + break; + } + } + prefixesStack.push(newTree); + } + } + + private int getDepthBinForLength(int length) { + int depth = Arrays.binarySearch(minLengthByDepth, length); + if (depth < 0) { + // It wasn't an exact match, so convert to the index of the containing + // fragment, which is one less even than the insertion point. + int insertionPoint = -(depth + 1); + depth = insertionPoint - 1; + } + + return depth; + } + } + + /** + * This class is a continuable tree traversal, which keeps the state + * information which would exist on the stack in a recursive traversal instead + * on a stack of "Bread Crumbs". The maximum depth of the stack in this + * iterator is the same as the depth of the tree being traversed. + * + *

This iterator is used to implement + * {@link RopeByteString#equalsFragments(ByteString)}. + */ + private static class PieceIterator implements Iterator { + + private final Stack breadCrumbs = + new Stack(); + private LiteralByteString next; + + private PieceIterator(ByteString root) { + next = getLeafByLeft(root); + } + + private LiteralByteString getLeafByLeft(ByteString root) { + ByteString pos = root; + while (pos instanceof RopeByteString) { + RopeByteString rbs = (RopeByteString) pos; + breadCrumbs.push(rbs); + pos = rbs.left; + } + return (LiteralByteString) pos; + } + + private LiteralByteString getNextNonEmptyLeaf() { + while (true) { + // Almost always, we go through this loop exactly once. However, if + // we discover an empty string in the rope, we toss it and try again. + if (breadCrumbs.isEmpty()) { + return null; + } else { + LiteralByteString result = getLeafByLeft(breadCrumbs.pop().right); + if (!result.isEmpty()) { + return result; + } + } + } + } + + public boolean hasNext() { + return next != null; + } + + /** + * Returns the next item and advances one {@code LiteralByteString}. + * + * @return next non-empty LiteralByteString or {@code null} + */ + public LiteralByteString next() { + if (next == null) { + throw new NoSuchElementException(); + } + LiteralByteString result = next; + next = getNextNonEmptyLeaf(); + return result; + } + + public void remove() { + throw new UnsupportedOperationException(); + } + } + + // ================================================================= + // ByteIterator + + @Override + public ByteIterator iterator() { + return new RopeByteIterator(); + } + + private class RopeByteIterator implements ByteString.ByteIterator { + + private final PieceIterator pieces; + private ByteIterator bytes; + int bytesRemaining; + + private RopeByteIterator() { + pieces = new PieceIterator(RopeByteString.this); + bytes = pieces.next().iterator(); + bytesRemaining = size(); + } + + public boolean hasNext() { + return (bytesRemaining > 0); + } + + public Byte next() { + return nextByte(); // Does not instantiate a Byte + } + + public byte nextByte() { + if (!bytes.hasNext()) { + bytes = pieces.next().iterator(); + } + --bytesRemaining; + return bytes.nextByte(); + } + + public void remove() { + throw new UnsupportedOperationException(); + } + } + + /** + * This class is the {@link RopeByteString} equivalent for + * {@link ByteArrayInputStream}. + */ + private class RopeInputStream extends InputStream { + // Iterates through the pieces of the rope + private PieceIterator pieceIterator; + // The current piece + private LiteralByteString currentPiece; + // The size of the current piece + private int currentPieceSize; + // The index of the next byte to read in the current piece + private int currentPieceIndex; + // The offset of the start of the current piece in the rope byte string + private int currentPieceOffsetInRope; + // Offset in the buffer at which user called mark(); + private int mark; + + public RopeInputStream() { + initialize(); + } + + @Override + public int read(byte b[], int offset, int length) { + if (b == null) { + throw new NullPointerException(); + } else if (offset < 0 || length < 0 || length > b.length - offset) { + throw new IndexOutOfBoundsException(); + } + return readSkipInternal(b, offset, length); + } + + @Override + public long skip(long length) { + if (length < 0) { + throw new IndexOutOfBoundsException(); + } else if (length > Integer.MAX_VALUE) { + length = Integer.MAX_VALUE; + } + return readSkipInternal(null, 0, (int) length); + } + + /** + * Internal implementation of read and skip. If b != null, then read the + * next {@code length} bytes into the buffer {@code b} at + * offset {@code offset}. If b == null, then skip the next {@code length) + * bytes. + *

+ * This method assumes that all error checking has already happened. + *

+ * Returns the actual number of bytes read or skipped. + */ + private int readSkipInternal(byte b[], int offset, int length) { + int bytesRemaining = length; + while (bytesRemaining > 0) { + advanceIfCurrentPieceFullyRead(); + if (currentPiece == null) { + if (bytesRemaining == length) { + // We didn't manage to read anything + return -1; + } + break; + } else { + // Copy the bytes from this piece. + int currentPieceRemaining = currentPieceSize - currentPieceIndex; + int count = Math.min(currentPieceRemaining, bytesRemaining); + if (b != null) { + currentPiece.copyTo(b, currentPieceIndex, offset, count); + offset += count; + } + currentPieceIndex += count; + bytesRemaining -= count; + } + } + // Return the number of bytes read. + return length - bytesRemaining; + } + + @Override + public int read() throws IOException { + advanceIfCurrentPieceFullyRead(); + if (currentPiece == null) { + return -1; + } else { + return currentPiece.byteAt(currentPieceIndex++) & 0xFF; + } + } + + @Override + public int available() throws IOException { + int bytesRead = currentPieceOffsetInRope + currentPieceIndex; + return RopeByteString.this.size() - bytesRead; + } + + @Override + public boolean markSupported() { + return true; + } + + @Override + public void mark(int readAheadLimit) { + // Set the mark to our position in the byte string + mark = currentPieceOffsetInRope + currentPieceIndex; + } + + @Override + public synchronized void reset() { + // Just reinitialize and skip the specified number of bytes. + initialize(); + readSkipInternal(null, 0, mark); + } + + /** Common initialization code used by both the constructor and reset() */ + private void initialize() { + pieceIterator = new PieceIterator(RopeByteString.this); + currentPiece = pieceIterator.next(); + currentPieceSize = currentPiece.size(); + currentPieceIndex = 0; + currentPieceOffsetInRope = 0; + } + + /** + * Skips to the next piece if we have read all the data in the current + * piece. Sets currentPiece to null if we have reached the end of the + * input. + */ + private void advanceIfCurrentPieceFullyRead() { + if (currentPiece != null && currentPieceIndex == currentPieceSize) { + // Generally, we can only go through this loop at most once, since + // empty strings can't end up in a rope. But better to test. + currentPieceOffsetInRope += currentPieceSize; + currentPieceIndex = 0; + if (pieceIterator.hasNext()) { + currentPiece = pieceIterator.next(); + currentPieceSize = currentPiece.size(); + } else { + currentPiece = null; + currentPieceSize = 0; + } + } + } + } +} diff --git a/cpp/thirdparty/protobuf-2.3.0/java/src/main/java/com/google/protobuf/RpcCallback.java b/cpp/thirdparty/protobuf-2.5.0/java/src/main/java/com/google/protobuf/RpcCallback.java similarity index 100% rename from cpp/thirdparty/protobuf-2.3.0/java/src/main/java/com/google/protobuf/RpcCallback.java rename to cpp/thirdparty/protobuf-2.5.0/java/src/main/java/com/google/protobuf/RpcCallback.java diff --git a/cpp/thirdparty/protobuf-2.3.0/java/src/main/java/com/google/protobuf/RpcChannel.java b/cpp/thirdparty/protobuf-2.5.0/java/src/main/java/com/google/protobuf/RpcChannel.java similarity index 100% rename from cpp/thirdparty/protobuf-2.3.0/java/src/main/java/com/google/protobuf/RpcChannel.java rename to cpp/thirdparty/protobuf-2.5.0/java/src/main/java/com/google/protobuf/RpcChannel.java diff --git a/cpp/thirdparty/protobuf-2.3.0/java/src/main/java/com/google/protobuf/RpcController.java b/cpp/thirdparty/protobuf-2.5.0/java/src/main/java/com/google/protobuf/RpcController.java similarity index 100% rename from cpp/thirdparty/protobuf-2.3.0/java/src/main/java/com/google/protobuf/RpcController.java rename to cpp/thirdparty/protobuf-2.5.0/java/src/main/java/com/google/protobuf/RpcController.java diff --git a/cpp/thirdparty/protobuf-2.3.0/java/src/main/java/com/google/protobuf/RpcUtil.java b/cpp/thirdparty/protobuf-2.5.0/java/src/main/java/com/google/protobuf/RpcUtil.java similarity index 100% rename from cpp/thirdparty/protobuf-2.3.0/java/src/main/java/com/google/protobuf/RpcUtil.java rename to cpp/thirdparty/protobuf-2.5.0/java/src/main/java/com/google/protobuf/RpcUtil.java diff --git a/cpp/thirdparty/protobuf-2.3.0/java/src/main/java/com/google/protobuf/Service.java b/cpp/thirdparty/protobuf-2.5.0/java/src/main/java/com/google/protobuf/Service.java similarity index 100% rename from cpp/thirdparty/protobuf-2.3.0/java/src/main/java/com/google/protobuf/Service.java rename to cpp/thirdparty/protobuf-2.5.0/java/src/main/java/com/google/protobuf/Service.java diff --git a/cpp/thirdparty/protobuf-2.3.0/java/src/main/java/com/google/protobuf/ServiceException.java b/cpp/thirdparty/protobuf-2.5.0/java/src/main/java/com/google/protobuf/ServiceException.java similarity index 89% rename from cpp/thirdparty/protobuf-2.3.0/java/src/main/java/com/google/protobuf/ServiceException.java rename to cpp/thirdparty/protobuf-2.5.0/java/src/main/java/com/google/protobuf/ServiceException.java index c043a7758..cde669d6a 100644 --- a/cpp/thirdparty/protobuf-2.3.0/java/src/main/java/com/google/protobuf/ServiceException.java +++ b/cpp/thirdparty/protobuf-2.5.0/java/src/main/java/com/google/protobuf/ServiceException.java @@ -35,10 +35,18 @@ package com.google.protobuf; * * @author cpovirk@google.com (Chris Povirk) */ -public final class ServiceException extends Exception { +public class ServiceException extends Exception { private static final long serialVersionUID = -1219262335729891920L; public ServiceException(final String message) { super(message); } + + public ServiceException(final Throwable cause) { + super(cause); + } + + public ServiceException(final String message, final Throwable cause) { + super(message, cause); + } } diff --git a/cpp/thirdparty/protobuf-2.5.0/java/src/main/java/com/google/protobuf/SingleFieldBuilder.java b/cpp/thirdparty/protobuf-2.5.0/java/src/main/java/com/google/protobuf/SingleFieldBuilder.java new file mode 100644 index 000000000..4bfc9f34d --- /dev/null +++ b/cpp/thirdparty/protobuf-2.5.0/java/src/main/java/com/google/protobuf/SingleFieldBuilder.java @@ -0,0 +1,241 @@ +// Protocol Buffers - Google's data interchange format +// Copyright 2008 Google Inc. All rights reserved. +// http://code.google.com/p/protobuf/ +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +package com.google.protobuf; + +/** + * {@code SingleFieldBuilder} implements a structure that a protocol + * message uses to hold a single field of another protocol message. It supports + * the classical use case of setting an immutable {@link Message} as the value + * of the field and is highly optimized around this. + *
+ * It also supports the additional use case of setting a {@link Message.Builder} + * as the field and deferring conversion of that {@code Builder} + * to an immutable {@code Message}. In this way, it's possible to maintain + * a tree of {@code Builder}'s that acts as a fully read/write data + * structure. + *
+ * Logically, one can think of a tree of builders as converting the entire tree + * to messages when build is called on the root or when any method is called + * that desires a Message instead of a Builder. In terms of the implementation, + * the {@code SingleFieldBuilder} and {@code RepeatedFieldBuilder} + * classes cache messages that were created so that messages only need to be + * created when some change occured in its builder or a builder for one of its + * descendants. + * + * @param the type of message for the field + * @param the type of builder for the field + * @param the common interface for the message and the builder + * + * @author jonp@google.com (Jon Perlow) + */ +public class SingleFieldBuilder + + implements GeneratedMessage.BuilderParent { + + // Parent to send changes to. + private GeneratedMessage.BuilderParent parent; + + // Invariant: one of builder or message fields must be non-null. + + // If set, this is the case where we are backed by a builder. In this case, + // message field represents a cached message for the builder (or null if + // there is no cached message). + private BType builder; + + // If builder is non-null, this represents a cached message from the builder. + // If builder is null, this is the authoritative message for the field. + private MType message; + + // Indicates that we've built a message and so we are now obligated + // to dispatch dirty invalidations. See GeneratedMessage.BuilderListener. + private boolean isClean; + + public SingleFieldBuilder( + MType message, + GeneratedMessage.BuilderParent parent, + boolean isClean) { + if (message == null) { + throw new NullPointerException(); + } + this.message = message; + this.parent = parent; + this.isClean = isClean; + } + + public void dispose() { + // Null out parent so we stop sending it invalidations. + parent = null; + } + + /** + * Get the message for the field. If the message is currently stored + * as a {@code Builder}, it is converted to a {@code Message} by + * calling {@link Message.Builder#buildPartial} on it. If no message has + * been set, returns the default instance of the message. + * + * @return the message for the field + */ + @SuppressWarnings("unchecked") + public MType getMessage() { + if (message == null) { + // If message is null, the invariant is that we must be have a builder. + message = (MType) builder.buildPartial(); + } + return message; + } + + /** + * Builds the message and returns it. + * + * @return the message + */ + public MType build() { + // Now that build has been called, we are required to dispatch + // invalidations. + isClean = true; + return getMessage(); + } + + /** + * Gets a builder for the field. If no builder has been created yet, a + * builder is created on demand by calling {@link Message#toBuilder}. + * + * @return The builder for the field + */ + @SuppressWarnings("unchecked") + public BType getBuilder() { + if (builder == null) { + // builder.mergeFrom() on a fresh builder + // does not create any sub-objects with independent clean/dirty states, + // therefore setting the builder itself to clean without actually calling + // build() cannot break any invariants. + builder = (BType) message.newBuilderForType(this); + builder.mergeFrom(message); // no-op if message is the default message + builder.markClean(); + } + return builder; + } + + /** + * Gets the base class interface for the field. This may either be a builder + * or a message. It will return whatever is more efficient. + * + * @return the message or builder for the field as the base class interface + */ + @SuppressWarnings("unchecked") + public IType getMessageOrBuilder() { + if (builder != null) { + return (IType) builder; + } else { + return (IType) message; + } + } + + /** + * Sets a message for the field replacing any existing value. + * + * @param message the message to set + * @return the builder + */ + public SingleFieldBuilder setMessage( + MType message) { + if (message == null) { + throw new NullPointerException(); + } + this.message = message; + if (builder != null) { + builder.dispose(); + builder = null; + } + onChanged(); + return this; + } + + /** + * Merges the field from another field. + * + * @param value the value to merge from + * @return the builder + */ + public SingleFieldBuilder mergeFrom( + MType value) { + if (builder == null && message == message.getDefaultInstanceForType()) { + message = value; + } else { + getBuilder().mergeFrom(value); + } + onChanged(); + return this; + } + + /** + * Clears the value of the field. + * + * @return the builder + */ + @SuppressWarnings("unchecked") + public SingleFieldBuilder clear() { + message = (MType) (message != null ? + message.getDefaultInstanceForType() : + builder.getDefaultInstanceForType()); + if (builder != null) { + builder.dispose(); + builder = null; + } + onChanged(); + return this; + } + + /** + * Called when a the builder or one of its nested children has changed + * and any parent should be notified of its invalidation. + */ + private void onChanged() { + // If builder is null, this is the case where onChanged is being called + // from setMessage or clear. + if (builder != null) { + message = null; + } + if (isClean && parent != null) { + parent.markDirty(); + + // Don't keep dispatching invalidations until build is called again. + isClean = false; + } + } + + //@Override (Java 1.6 override semantics, but we must support 1.5) + public void markDirty() { + onChanged(); + } +} diff --git a/cpp/thirdparty/protobuf-2.5.0/java/src/main/java/com/google/protobuf/SmallSortedMap.java b/cpp/thirdparty/protobuf-2.5.0/java/src/main/java/com/google/protobuf/SmallSortedMap.java new file mode 100644 index 000000000..c6cad6afb --- /dev/null +++ b/cpp/thirdparty/protobuf-2.5.0/java/src/main/java/com/google/protobuf/SmallSortedMap.java @@ -0,0 +1,618 @@ +// Protocol Buffers - Google's data interchange format +// Copyright 2008 Google Inc. All rights reserved. +// http://code.google.com/p/protobuf/ +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +package com.google.protobuf; + +import java.util.AbstractMap; +import java.util.AbstractSet; +import java.util.ArrayList; +import java.util.Collections; +import java.util.Iterator; +import java.util.TreeMap; +import java.util.List; +import java.util.Map; +import java.util.NoSuchElementException; +import java.util.Set; +import java.util.SortedMap; + +/** + * A custom map implementation from FieldDescriptor to Object optimized to + * minimize the number of memory allocations for instances with a small number + * of mappings. The implementation stores the first {@code k} mappings in an + * array for a configurable value of {@code k}, allowing direct access to the + * corresponding {@code Entry}s without the need to create an Iterator. The + * remaining entries are stored in an overflow map. Iteration over the entries + * in the map should be done as follows: + * + *

   {@code
+ * for (int i = 0; i < fieldMap.getNumArrayEntries(); i++) {
+ *   process(fieldMap.getArrayEntryAt(i));
+ * }
+ * for (Map.Entry entry : fieldMap.getOverflowEntries()) {
+ *   process(entry);
+ * }
+ * }
+ * + * The resulting iteration is in order of ascending field tag number. The + * object returned by {@link #entrySet()} adheres to the same contract but is + * less efficient as it necessarily involves creating an object for iteration. + *

+ * The tradeoff for this memory efficiency is that the worst case running time + * of the {@code put()} operation is {@code O(k + lg n)}, which happens when + * entries are added in descending order. {@code k} should be chosen such that + * it covers enough common cases without adversely affecting larger maps. In + * practice, the worst case scenario does not happen for extensions because + * extension fields are serialized and deserialized in order of ascending tag + * number, but the worst case scenario can happen for DynamicMessages. + *

+ * The running time for all other operations is similar to that of + * {@code TreeMap}. + *

+ * Instances are not thread-safe until {@link #makeImmutable()} is called, + * after which any modifying operation will result in an + * {@link UnsupportedOperationException}. + * + * @author darick@google.com Darick Tong + */ +// This class is final for all intents and purposes because the constructor is +// private. However, the FieldDescriptor-specific logic is encapsulated in +// a subclass to aid testability of the core logic. +class SmallSortedMap, V> extends AbstractMap { + + /** + * Creates a new instance for mapping FieldDescriptors to their values. + * The {@link #makeImmutable()} implementation will convert the List values + * of any repeated fields to unmodifiable lists. + * + * @param arraySize The size of the entry array containing the + * lexicographically smallest mappings. + */ + static > + SmallSortedMap newFieldMap(int arraySize) { + return new SmallSortedMap(arraySize) { + @Override + @SuppressWarnings("unchecked") + public void makeImmutable() { + if (!isImmutable()) { + for (int i = 0; i < getNumArrayEntries(); i++) { + final Map.Entry entry = + getArrayEntryAt(i); + if (entry.getKey().isRepeated()) { + final List value = (List) entry.getValue(); + entry.setValue(Collections.unmodifiableList(value)); + } + } + for (Map.Entry entry : + getOverflowEntries()) { + if (entry.getKey().isRepeated()) { + final List value = (List) entry.getValue(); + entry.setValue(Collections.unmodifiableList(value)); + } + } + } + super.makeImmutable(); + } + }; + } + + /** + * Creates a new instance for testing. + * + * @param arraySize The size of the entry array containing the + * lexicographically smallest mappings. + */ + static , V> SmallSortedMap newInstanceForTest( + int arraySize) { + return new SmallSortedMap(arraySize); + } + + private final int maxArraySize; + // The "entry array" is actually a List because generic arrays are not + // allowed. ArrayList also nicely handles the entry shifting on inserts and + // removes. + private List entryList; + private Map overflowEntries; + private boolean isImmutable; + // The EntrySet is a stateless view of the Map. It's initialized the first + // time it is requested and reused henceforth. + private volatile EntrySet lazyEntrySet; + + /** + * @code arraySize Size of the array in which the lexicographically smallest + * mappings are stored. (i.e. the {@code k} referred to in the class + * documentation). + */ + private SmallSortedMap(int arraySize) { + this.maxArraySize = arraySize; + this.entryList = Collections.emptyList(); + this.overflowEntries = Collections.emptyMap(); + } + + /** Make this map immutable from this point forward. */ + public void makeImmutable() { + if (!isImmutable) { + // Note: There's no need to wrap the entryList in an unmodifiableList + // because none of the list's accessors are exposed. The iterator() of + // overflowEntries, on the other hand, is exposed so it must be made + // unmodifiable. + overflowEntries = overflowEntries.isEmpty() ? + Collections.emptyMap() : + Collections.unmodifiableMap(overflowEntries); + isImmutable = true; + } + } + + /** @return Whether {@link #makeImmutable()} has been called. */ + public boolean isImmutable() { + return isImmutable; + } + + /** @return The number of entries in the entry array. */ + public int getNumArrayEntries() { + return entryList.size(); + } + + /** @return The array entry at the given {@code index}. */ + public Map.Entry getArrayEntryAt(int index) { + return entryList.get(index); + } + + /** @return There number of overflow entries. */ + public int getNumOverflowEntries() { + return overflowEntries.size(); + } + + /** @return An iterable over the overflow entries. */ + public Iterable> getOverflowEntries() { + return overflowEntries.isEmpty() ? + EmptySet.>iterable() : + overflowEntries.entrySet(); + } + + @Override + public int size() { + return entryList.size() + overflowEntries.size(); + } + + /** + * The implementation throws a {@code ClassCastException} if o is not an + * object of type {@code K}. + * + * {@inheritDoc} + */ + @Override + public boolean containsKey(Object o) { + @SuppressWarnings("unchecked") + final K key = (K) o; + return binarySearchInArray(key) >= 0 || overflowEntries.containsKey(key); + } + + /** + * The implementation throws a {@code ClassCastException} if o is not an + * object of type {@code K}. + * + * {@inheritDoc} + */ + @Override + public V get(Object o) { + @SuppressWarnings("unchecked") + final K key = (K) o; + final int index = binarySearchInArray(key); + if (index >= 0) { + return entryList.get(index).getValue(); + } + return overflowEntries.get(key); + } + + @Override + public V put(K key, V value) { + checkMutable(); + final int index = binarySearchInArray(key); + if (index >= 0) { + // Replace existing array entry. + return entryList.get(index).setValue(value); + } + ensureEntryArrayMutable(); + final int insertionPoint = -(index + 1); + if (insertionPoint >= maxArraySize) { + // Put directly in overflow. + return getOverflowEntriesMutable().put(key, value); + } + // Insert new Entry in array. + if (entryList.size() == maxArraySize) { + // Shift the last array entry into overflow. + final Entry lastEntryInArray = entryList.remove(maxArraySize - 1); + getOverflowEntriesMutable().put(lastEntryInArray.getKey(), + lastEntryInArray.getValue()); + } + entryList.add(insertionPoint, new Entry(key, value)); + return null; + } + + @Override + public void clear() { + checkMutable(); + if (!entryList.isEmpty()) { + entryList.clear(); + } + if (!overflowEntries.isEmpty()) { + overflowEntries.clear(); + } + } + + /** + * The implementation throws a {@code ClassCastException} if o is not an + * object of type {@code K}. + * + * {@inheritDoc} + */ + @Override + public V remove(Object o) { + checkMutable(); + @SuppressWarnings("unchecked") + final K key = (K) o; + final int index = binarySearchInArray(key); + if (index >= 0) { + return removeArrayEntryAt(index); + } + // overflowEntries might be Collections.unmodifiableMap(), so only + // call remove() if it is non-empty. + if (overflowEntries.isEmpty()) { + return null; + } else { + return overflowEntries.remove(key); + } + } + + private V removeArrayEntryAt(int index) { + checkMutable(); + final V removed = entryList.remove(index).getValue(); + if (!overflowEntries.isEmpty()) { + // Shift the first entry in the overflow to be the last entry in the + // array. + final Iterator> iterator = + getOverflowEntriesMutable().entrySet().iterator(); + entryList.add(new Entry(iterator.next())); + iterator.remove(); + } + return removed; + } + + /** + * @param key The key to find in the entry array. + * @return The returned integer position follows the same semantics as the + * value returned by {@link java.util.Arrays#binarySearch()}. + */ + private int binarySearchInArray(K key) { + int left = 0; + int right = entryList.size() - 1; + + // Optimization: For the common case in which entries are added in + // ascending tag order, check the largest element in the array before + // doing a full binary search. + if (right >= 0) { + int cmp = key.compareTo(entryList.get(right).getKey()); + if (cmp > 0) { + return -(right + 2); // Insert point is after "right". + } else if (cmp == 0) { + return right; + } + } + + while (left <= right) { + int mid = (left + right) / 2; + int cmp = key.compareTo(entryList.get(mid).getKey()); + if (cmp < 0) { + right = mid - 1; + } else if (cmp > 0) { + left = mid + 1; + } else { + return mid; + } + } + return -(left + 1); + } + + /** + * Similar to the AbstractMap implementation of {@code keySet()} and + * {@code values()}, the entry set is created the first time this method is + * called, and returned in response to all subsequent calls. + * + * {@inheritDoc} + */ + @Override + public Set> entrySet() { + if (lazyEntrySet == null) { + lazyEntrySet = new EntrySet(); + } + return lazyEntrySet; + } + + /** + * @throws UnsupportedOperationException if {@link #makeImmutable()} has + * has been called. + */ + private void checkMutable() { + if (isImmutable) { + throw new UnsupportedOperationException(); + } + } + + /** + * @return a {@link SortedMap} to which overflow entries mappings can be + * added or removed. + * @throws UnsupportedOperationException if {@link #makeImmutable()} has been + * called. + */ + @SuppressWarnings("unchecked") + private SortedMap getOverflowEntriesMutable() { + checkMutable(); + if (overflowEntries.isEmpty() && !(overflowEntries instanceof TreeMap)) { + overflowEntries = new TreeMap(); + } + return (SortedMap) overflowEntries; + } + + /** + * Lazily creates the entry list. Any code that adds to the list must first + * call this method. + */ + private void ensureEntryArrayMutable() { + checkMutable(); + if (entryList.isEmpty() && !(entryList instanceof ArrayList)) { + entryList = new ArrayList(maxArraySize); + } + } + + /** + * Entry implementation that implements Comparable in order to support + * binary search within the entry array. Also checks mutability in + * {@link #setValue()}. + */ + private class Entry implements Map.Entry, Comparable { + + private final K key; + private V value; + + Entry(Map.Entry copy) { + this(copy.getKey(), copy.getValue()); + } + + Entry(K key, V value) { + this.key = key; + this.value = value; + } + + //@Override (Java 1.6 override semantics, but we must support 1.5) + public K getKey() { + return key; + } + + //@Override (Java 1.6 override semantics, but we must support 1.5) + public V getValue() { + return value; + } + + //@Override (Java 1.6 override semantics, but we must support 1.5) + public int compareTo(Entry other) { + return getKey().compareTo(other.getKey()); + } + + //@Override (Java 1.6 override semantics, but we must support 1.5) + public V setValue(V newValue) { + checkMutable(); + final V oldValue = this.value; + this.value = newValue; + return oldValue; + } + + @Override + public boolean equals(Object o) { + if (o == this) { + return true; + } + if (!(o instanceof Map.Entry)) { + return false; + } + @SuppressWarnings("unchecked") + Map.Entry other = (Map.Entry) o; + return equals(key, other.getKey()) && equals(value, other.getValue()); + } + + @Override + public int hashCode() { + return (key == null ? 0 : key.hashCode()) ^ + (value == null ? 0 : value.hashCode()); + } + + @Override + public String toString() { + return key + "=" + value; + } + + /** equals() that handles null values. */ + private boolean equals(Object o1, Object o2) { + return o1 == null ? o2 == null : o1.equals(o2); + } + } + + /** + * Stateless view of the entries in the field map. + */ + private class EntrySet extends AbstractSet> { + + @Override + public Iterator> iterator() { + return new EntryIterator(); + } + + @Override + public int size() { + return SmallSortedMap.this.size(); + } + + /** + * Throws a {@link ClassCastException} if o is not of the expected type. + * + * {@inheritDoc} + */ + @Override + public boolean contains(Object o) { + @SuppressWarnings("unchecked") + final Map.Entry entry = (Map.Entry) o; + final V existing = get(entry.getKey()); + final V value = entry.getValue(); + return existing == value || + (existing != null && existing.equals(value)); + } + + @Override + public boolean add(Map.Entry entry) { + if (!contains(entry)) { + put(entry.getKey(), entry.getValue()); + return true; + } + return false; + } + + /** + * Throws a {@link ClassCastException} if o is not of the expected type. + * + * {@inheritDoc} + */ + @Override + public boolean remove(Object o) { + @SuppressWarnings("unchecked") + final Map.Entry entry = (Map.Entry) o; + if (contains(entry)) { + SmallSortedMap.this.remove(entry.getKey()); + return true; + } + return false; + } + + @Override + public void clear() { + SmallSortedMap.this.clear(); + } + } + + /** + * Iterator implementation that switches from the entry array to the overflow + * entries appropriately. + */ + private class EntryIterator implements Iterator> { + + private int pos = -1; + private boolean nextCalledBeforeRemove; + private Iterator> lazyOverflowIterator; + + //@Override (Java 1.6 override semantics, but we must support 1.5) + public boolean hasNext() { + return (pos + 1) < entryList.size() || + getOverflowIterator().hasNext(); + } + + //@Override (Java 1.6 override semantics, but we must support 1.5) + public Map.Entry next() { + nextCalledBeforeRemove = true; + // Always increment pos so that we know whether the last returned value + // was from the array or from overflow. + if (++pos < entryList.size()) { + return entryList.get(pos); + } + return getOverflowIterator().next(); + } + + //@Override (Java 1.6 override semantics, but we must support 1.5) + public void remove() { + if (!nextCalledBeforeRemove) { + throw new IllegalStateException("remove() was called before next()"); + } + nextCalledBeforeRemove = false; + checkMutable(); + + if (pos < entryList.size()) { + removeArrayEntryAt(pos--); + } else { + getOverflowIterator().remove(); + } + } + + /** + * It is important to create the overflow iterator only after the array + * entries have been iterated over because the overflow entry set changes + * when the client calls remove() on the array entries, which invalidates + * any existing iterators. + */ + private Iterator> getOverflowIterator() { + if (lazyOverflowIterator == null) { + lazyOverflowIterator = overflowEntries.entrySet().iterator(); + } + return lazyOverflowIterator; + } + } + + /** + * Helper class that holds immutable instances of an Iterable/Iterator that + * we return when the overflow entries is empty. This eliminates the creation + * of an Iterator object when there is nothing to iterate over. + */ + private static class EmptySet { + + private static final Iterator ITERATOR = new Iterator() { + //@Override (Java 1.6 override semantics, but we must support 1.5) + public boolean hasNext() { + return false; + } + //@Override (Java 1.6 override semantics, but we must support 1.5) + public Object next() { + throw new NoSuchElementException(); + } + //@Override (Java 1.6 override semantics, but we must support 1.5) + public void remove() { + throw new UnsupportedOperationException(); + } + }; + + private static final Iterable ITERABLE = new Iterable() { + //@Override (Java 1.6 override semantics, but we must support 1.5) + public Iterator iterator() { + return ITERATOR; + } + }; + + @SuppressWarnings("unchecked") + static Iterable iterable() { + return (Iterable) ITERABLE; + } + } +} diff --git a/cpp/thirdparty/protobuf-2.3.0/java/src/main/java/com/google/protobuf/TextFormat.java b/cpp/thirdparty/protobuf-2.5.0/java/src/main/java/com/google/protobuf/TextFormat.java similarity index 70% rename from cpp/thirdparty/protobuf-2.3.0/java/src/main/java/com/google/protobuf/TextFormat.java rename to cpp/thirdparty/protobuf-2.5.0/java/src/main/java/com/google/protobuf/TextFormat.java index cb23f0c36..ed4628994 100644 --- a/cpp/thirdparty/protobuf-2.3.0/java/src/main/java/com/google/protobuf/TextFormat.java +++ b/cpp/thirdparty/protobuf-2.5.0/java/src/main/java/com/google/protobuf/TextFormat.java @@ -46,48 +46,79 @@ import java.util.regex.Matcher; import java.util.regex.Pattern; /** - * Provide ascii text parsing and formatting support for proto2 instances. + * Provide text parsing and formatting support for proto2 instances. * The implementation largely follows google/protobuf/text_format.cc. * * @author wenboz@google.com Wenbo Zhu * @author kenton@google.com Kenton Varda */ public final class TextFormat { - private TextFormat() { - } + private TextFormat() {} + + private static final Printer DEFAULT_PRINTER = new Printer(); + private static final Printer SINGLE_LINE_PRINTER = + (new Printer()).setSingleLineMode(true); + private static final Printer UNICODE_PRINTER = + (new Printer()).setEscapeNonAscii(false); /** * Outputs a textual representation of the Protocol Message supplied into * the parameter output. (This representation is the new version of the * classic "ProtocolPrinter" output from the original Protocol Buffer system) */ - public static void print(final Message message, final Appendable output) + public static void print(final MessageOrBuilder message, final Appendable output) throws IOException { - final TextGenerator generator = new TextGenerator(output); - print(message, generator); + DEFAULT_PRINTER.print(message, new TextGenerator(output)); } /** Outputs a textual representation of {@code fields} to {@code output}. */ public static void print(final UnknownFieldSet fields, final Appendable output) throws IOException { - final TextGenerator generator = new TextGenerator(output); - printUnknownFields(fields, generator); + DEFAULT_PRINTER.printUnknownFields(fields, new TextGenerator(output)); + } + + /** + * Generates a human readable form of this message, useful for debugging and + * other purposes, with no newline characters. + */ + public static String shortDebugString(final MessageOrBuilder message) { + try { + final StringBuilder sb = new StringBuilder(); + SINGLE_LINE_PRINTER.print(message, new TextGenerator(sb)); + // Single line mode currently might have an extra space at the end. + return sb.toString().trim(); + } catch (IOException e) { + throw new IllegalStateException(e); + } + } + + /** + * Generates a human readable form of the unknown fields, useful for debugging + * and other purposes, with no newline characters. + */ + public static String shortDebugString(final UnknownFieldSet fields) { + try { + final StringBuilder sb = new StringBuilder(); + SINGLE_LINE_PRINTER.printUnknownFields(fields, new TextGenerator(sb)); + // Single line mode currently might have an extra space at the end. + return sb.toString().trim(); + } catch (IOException e) { + throw new IllegalStateException(e); + } } /** * Like {@code print()}, but writes directly to a {@code String} and * returns it. */ - public static String printToString(final Message message) { + public static String printToString(final MessageOrBuilder message) { try { final StringBuilder text = new StringBuilder(); print(message, text); return text.toString(); } catch (IOException e) { - throw new RuntimeException( - "Writing to a StringBuilder threw an IOException (should never " + - "happen).", e); + throw new IllegalStateException(e); } } @@ -101,28 +132,43 @@ public final class TextFormat { print(fields, text); return text.toString(); } catch (IOException e) { - throw new RuntimeException( - "Writing to a StringBuilder threw an IOException (should never " + - "happen).", e); + throw new IllegalStateException(e); } } - private static void print(final Message message, - final TextGenerator generator) - throws IOException { - for (final Map.Entry field : - message.getAllFields().entrySet()) { - printField(field.getKey(), field.getValue(), generator); + /** + * Same as {@code printToString()}, except that non-ASCII characters + * in string type fields are not escaped in backslash+octals. + */ + public static String printToUnicodeString(final MessageOrBuilder message) { + try { + final StringBuilder text = new StringBuilder(); + UNICODE_PRINTER.print(message, new TextGenerator(text)); + return text.toString(); + } catch (IOException e) { + throw new IllegalStateException(e); + } + } + + /** + * Same as {@code printToString()}, except that non-ASCII characters + * in string type fields are not escaped in backslash+octals. + */ + public static String printToUnicodeString(final UnknownFieldSet fields) { + try { + final StringBuilder text = new StringBuilder(); + UNICODE_PRINTER.printUnknownFields(fields, new TextGenerator(text)); + return text.toString(); + } catch (IOException e) { + throw new IllegalStateException(e); } - printUnknownFields(message.getUnknownFields(), generator); } public static void printField(final FieldDescriptor field, final Object value, final Appendable output) throws IOException { - final TextGenerator generator = new TextGenerator(output); - printField(field, value, generator); + DEFAULT_PRINTER.printField(field, value, new TextGenerator(output)); } public static String printFieldToString(final FieldDescriptor field, @@ -132,158 +178,278 @@ public final class TextFormat { printField(field, value, text); return text.toString(); } catch (IOException e) { - throw new RuntimeException( - "Writing to a StringBuilder threw an IOException (should never " + - "happen).", e); + throw new IllegalStateException(e); } } - private static void printField(final FieldDescriptor field, - final Object value, - final TextGenerator generator) - throws IOException { - if (field.isRepeated()) { - // Repeated field. Print each element. - for (final Object element : (List) value) { - printSingleField(field, element, generator); - } - } else { - printSingleField(field, value, generator); + /** + * Outputs a textual representation of the value of given field value. + * + * @param field the descriptor of the field + * @param value the value of the field + * @param output the output to which to append the formatted value + * @throws ClassCastException if the value is not appropriate for the + * given field descriptor + * @throws IOException if there is an exception writing to the output + */ + public static void printFieldValue(final FieldDescriptor field, + final Object value, + final Appendable output) + throws IOException { + DEFAULT_PRINTER.printFieldValue(field, value, new TextGenerator(output)); + } + + /** + * Outputs a textual representation of the value of an unknown field. + * + * @param tag the field's tag number + * @param value the value of the field + * @param output the output to which to append the formatted value + * @throws ClassCastException if the value is not appropriate for the + * given field descriptor + * @throws IOException if there is an exception writing to the output + */ + public static void printUnknownFieldValue(final int tag, + final Object value, + final Appendable output) + throws IOException { + printUnknownFieldValue(tag, value, new TextGenerator(output)); + } + + private static void printUnknownFieldValue(final int tag, + final Object value, + final TextGenerator generator) + throws IOException { + switch (WireFormat.getTagWireType(tag)) { + case WireFormat.WIRETYPE_VARINT: + generator.print(unsignedToString((Long) value)); + break; + case WireFormat.WIRETYPE_FIXED32: + generator.print( + String.format((Locale) null, "0x%08x", (Integer) value)); + break; + case WireFormat.WIRETYPE_FIXED64: + generator.print(String.format((Locale) null, "0x%016x", (Long) value)); + break; + case WireFormat.WIRETYPE_LENGTH_DELIMITED: + generator.print("\""); + generator.print(escapeBytes((ByteString) value)); + generator.print("\""); + break; + case WireFormat.WIRETYPE_START_GROUP: + DEFAULT_PRINTER.printUnknownFields((UnknownFieldSet) value, generator); + break; + default: + throw new IllegalArgumentException("Bad tag: " + tag); } } - private static void printSingleField(final FieldDescriptor field, - final Object value, - final TextGenerator generator) - throws IOException { - if (field.isExtension()) { - generator.print("["); - // We special-case MessageSet elements for compatibility with proto1. - if (field.getContainingType().getOptions().getMessageSetWireFormat() - && (field.getType() == FieldDescriptor.Type.MESSAGE) - && (field.isOptional()) - // object equality - && (field.getExtensionScope() == field.getMessageType())) { - generator.print(field.getMessageType().getFullName()); - } else { - generator.print(field.getFullName()); + /** Helper class for converting protobufs to text. */ + private static final class Printer { + /** Whether to omit newlines from the output. */ + boolean singleLineMode = false; + + /** Whether to escape non ASCII characters with backslash and octal. */ + boolean escapeNonAscii = true; + + private Printer() {} + + /** Setter of singleLineMode */ + private Printer setSingleLineMode(boolean singleLineMode) { + this.singleLineMode = singleLineMode; + return this; + } + + /** Setter of escapeNonAscii */ + private Printer setEscapeNonAscii(boolean escapeNonAscii) { + this.escapeNonAscii = escapeNonAscii; + return this; + } + + private void print(final MessageOrBuilder message, final TextGenerator generator) + throws IOException { + for (Map.Entry field + : message.getAllFields().entrySet()) { + printField(field.getKey(), field.getValue(), generator); } - generator.print("]"); - } else { - if (field.getType() == FieldDescriptor.Type.GROUP) { - // Groups must be serialized with their original capitalization. - generator.print(field.getMessageType().getName()); + printUnknownFields(message.getUnknownFields(), generator); + } + + private void printField(final FieldDescriptor field, final Object value, + final TextGenerator generator) throws IOException { + if (field.isRepeated()) { + // Repeated field. Print each element. + for (Object element : (List) value) { + printSingleField(field, element, generator); + } } else { - generator.print(field.getName()); + printSingleField(field, value, generator); } } - if (field.getJavaType() == FieldDescriptor.JavaType.MESSAGE) { - generator.print(" {\n"); - generator.indent(); - } else { - generator.print(": "); - } + private void printSingleField(final FieldDescriptor field, + final Object value, + final TextGenerator generator) + throws IOException { + if (field.isExtension()) { + generator.print("["); + // We special-case MessageSet elements for compatibility with proto1. + if (field.getContainingType().getOptions().getMessageSetWireFormat() + && (field.getType() == FieldDescriptor.Type.MESSAGE) + && (field.isOptional()) + // object equality + && (field.getExtensionScope() == field.getMessageType())) { + generator.print(field.getMessageType().getFullName()); + } else { + generator.print(field.getFullName()); + } + generator.print("]"); + } else { + if (field.getType() == FieldDescriptor.Type.GROUP) { + // Groups must be serialized with their original capitalization. + generator.print(field.getMessageType().getName()); + } else { + generator.print(field.getName()); + } + } + + if (field.getJavaType() == FieldDescriptor.JavaType.MESSAGE) { + if (singleLineMode) { + generator.print(" { "); + } else { + generator.print(" {\n"); + generator.indent(); + } + } else { + generator.print(": "); + } - printFieldValue(field, value, generator); + printFieldValue(field, value, generator); - if (field.getJavaType() == FieldDescriptor.JavaType.MESSAGE) { - generator.outdent(); - generator.print("}"); + if (field.getJavaType() == FieldDescriptor.JavaType.MESSAGE) { + if (singleLineMode) { + generator.print("} "); + } else { + generator.outdent(); + generator.print("}\n"); + } + } else { + if (singleLineMode) { + generator.print(" "); + } else { + generator.print("\n"); + } + } } - generator.print("\n"); - } - private static void printFieldValue(final FieldDescriptor field, - final Object value, - final TextGenerator generator) - throws IOException { - switch (field.getType()) { - case INT32: - case INT64: - case SINT32: - case SINT64: - case SFIXED32: - case SFIXED64: - case FLOAT: - case DOUBLE: - case BOOL: - // Good old toString() does what we want for these types. - generator.print(value.toString()); - break; + private void printFieldValue(final FieldDescriptor field, + final Object value, + final TextGenerator generator) + throws IOException { + switch (field.getType()) { + case INT32: + case SINT32: + case SFIXED32: + generator.print(((Integer) value).toString()); + break; - case UINT32: - case FIXED32: - generator.print(unsignedToString((Integer) value)); - break; + case INT64: + case SINT64: + case SFIXED64: + generator.print(((Long) value).toString()); + break; - case UINT64: - case FIXED64: - generator.print(unsignedToString((Long) value)); - break; + case BOOL: + generator.print(((Boolean) value).toString()); + break; - case STRING: - generator.print("\""); - generator.print(escapeText((String) value)); - generator.print("\""); - break; + case FLOAT: + generator.print(((Float) value).toString()); + break; - case BYTES: - generator.print("\""); - generator.print(escapeBytes((ByteString) value)); - generator.print("\""); - break; + case DOUBLE: + generator.print(((Double) value).toString()); + break; - case ENUM: - generator.print(((EnumValueDescriptor) value).getName()); - break; + case UINT32: + case FIXED32: + generator.print(unsignedToString((Integer) value)); + break; - case MESSAGE: - case GROUP: - print((Message) value, generator); - break; - } - } + case UINT64: + case FIXED64: + generator.print(unsignedToString((Long) value)); + break; - private static void printUnknownFields(final UnknownFieldSet unknownFields, - final TextGenerator generator) - throws IOException { - for (final Map.Entry entry : - unknownFields.asMap().entrySet()) { - final String prefix = entry.getKey().toString() + ": "; - final UnknownFieldSet.Field field = entry.getValue(); + case STRING: + generator.print("\""); + generator.print(escapeNonAscii ? + escapeText((String) value) : + (String) value); + generator.print("\""); + break; - for (final long value : field.getVarintList()) { - generator.print(entry.getKey().toString()); - generator.print(": "); - generator.print(unsignedToString(value)); - generator.print("\n"); + case BYTES: + generator.print("\""); + generator.print(escapeBytes((ByteString) value)); + generator.print("\""); + break; + + case ENUM: + generator.print(((EnumValueDescriptor) value).getName()); + break; + + case MESSAGE: + case GROUP: + print((Message) value, generator); + break; } - for (final int value : field.getFixed32List()) { - generator.print(entry.getKey().toString()); - generator.print(": "); - generator.print(String.format((Locale) null, "0x%08x", value)); - generator.print("\n"); + } + + private void printUnknownFields(final UnknownFieldSet unknownFields, + final TextGenerator generator) + throws IOException { + for (Map.Entry entry : + unknownFields.asMap().entrySet()) { + final int number = entry.getKey(); + final UnknownFieldSet.Field field = entry.getValue(); + printUnknownField(number, WireFormat.WIRETYPE_VARINT, + field.getVarintList(), generator); + printUnknownField(number, WireFormat.WIRETYPE_FIXED32, + field.getFixed32List(), generator); + printUnknownField(number, WireFormat.WIRETYPE_FIXED64, + field.getFixed64List(), generator); + printUnknownField(number, WireFormat.WIRETYPE_LENGTH_DELIMITED, + field.getLengthDelimitedList(), generator); + for (final UnknownFieldSet value : field.getGroupList()) { + generator.print(entry.getKey().toString()); + if (singleLineMode) { + generator.print(" { "); + } else { + generator.print(" {\n"); + generator.indent(); + } + printUnknownFields(value, generator); + if (singleLineMode) { + generator.print("} "); + } else { + generator.outdent(); + generator.print("}\n"); + } + } } - for (final long value : field.getFixed64List()) { - generator.print(entry.getKey().toString()); + } + + private void printUnknownField(final int number, + final int wireType, + final List values, + final TextGenerator generator) + throws IOException { + for (final Object value : values) { + generator.print(String.valueOf(number)); generator.print(": "); - generator.print(String.format((Locale) null, "0x%016x", value)); - generator.print("\n"); - } - for (final ByteString value : field.getLengthDelimitedList()) { - generator.print(entry.getKey().toString()); - generator.print(": \""); - generator.print(escapeBytes(value)); - generator.print("\"\n"); - } - for (final UnknownFieldSet value : field.getGroupList()) { - generator.print(entry.getKey().toString()); - generator.print(" {\n"); - generator.indent(); - printUnknownFields(value, generator); - generator.outdent(); - generator.print("}\n"); + printUnknownFieldValue(wireType, value, generator); + generator.print(singleLineMode ? " " : "\n"); } } } @@ -313,9 +479,9 @@ public final class TextFormat { * An inner class for writing text to the output stream. */ private static final class TextGenerator { - private Appendable output; - private boolean atStartOfLine = true; + private final Appendable output; private final StringBuilder indent = new StringBuilder(); + private boolean atStartOfLine = true; private TextGenerator(final Appendable output) { this.output = output; @@ -421,7 +587,7 @@ public final class TextFormat { private int previousLine = 0; private int previousColumn = 0; - // We use possesive quantifiers (*+ and ++) because otherwise the Java + // We use possessive quantifiers (*+ and ++) because otherwise the Java // regex matcher has stack overflows on large inputs. private static final Pattern WHITESPACE = Pattern.compile("(\\s|(#.*$))++", Pattern.MULTILINE); @@ -671,10 +837,14 @@ public final class TextFormat { * Otherwise, throw a {@link ParseException}. */ public boolean consumeBoolean() throws ParseException { - if (currentToken.equals("true")) { + if (currentToken.equals("true") || + currentToken.equals("t") || + currentToken.equals("1")) { nextToken(); return true; - } else if (currentToken.equals("false")) { + } else if (currentToken.equals("false") || + currentToken.equals("f") || + currentToken.equals("0")) { nextToken(); return false; } else { @@ -740,7 +910,7 @@ public final class TextFormat { public ParseException parseException(final String description) { // Note: People generally prefer one-based line and column numbers. return new ParseException( - (line + 1) + ":" + (column + 1) + ": " + description); + line + 1, column + 1, description); } /** @@ -751,7 +921,7 @@ public final class TextFormat { final String description) { // Note: People generally prefer one-based line and column numbers. return new ParseException( - (previousLine + 1) + ":" + (previousColumn + 1) + ": " + description); + previousLine + 1, previousColumn + 1, description); } /** @@ -776,8 +946,45 @@ public final class TextFormat { public static class ParseException extends IOException { private static final long serialVersionUID = 3196188060225107702L; + private final int line; + private final int column; + + /** Create a new instance, with -1 as the line and column numbers. */ public ParseException(final String message) { - super(message); + this(-1, -1, message); + } + + /** + * Create a new instance + * + * @param line the line number where the parse error occurred, + * using 1-offset. + * @param column the column number where the parser error occurred, + * using 1-offset. + */ + public ParseException(final int line, final int column, + final String message) { + super(Integer.toString(line) + ":" + column + ": " + message); + this.line = line; + this.column = column; + } + + /** + * Return the line where the parse exception occurred, or -1 when + * none is provided. The value is specified as 1-offset, so the first + * line is line 1. + */ + public int getLine() { + return line; + } + + /** + * Return the column where the parse exception occurred, or -1 when + * none is provided. The value is specified as 1-offset, so the first + * line is line 1. + */ + public int getColumn() { + return column; } } @@ -949,7 +1156,7 @@ public final class TextFormat { mergeField(tokenizer, extensionRegistry, subBuilder); } - value = subBuilder.build(); + value = subBuilder.buildPartial(); } else { tokenizer.consume(":"); @@ -1064,6 +1271,9 @@ public final class TextFormat { case '\'': builder.append("\\\'"); break; case '"' : builder.append("\\\""); break; default: + // Note: Bytes with the high-order bit set should be escaped. Since + // bytes are signed, such bytes will compare less than 0x20, hence + // the following line is correct. if (b >= 0x20) { builder.append((char) b); } else { @@ -1083,27 +1293,37 @@ public final class TextFormat { * {@link #escapeBytes(ByteString)}. Two-digit hex escapes (starting with * "\x") are also recognized. */ - static ByteString unescapeBytes(final CharSequence input) + static ByteString unescapeBytes(final CharSequence charString) throws InvalidEscapeSequenceException { - final byte[] result = new byte[input.length()]; + // First convert the Java character sequence to UTF-8 bytes. + ByteString input = ByteString.copyFromUtf8(charString.toString()); + // Then unescape certain byte sequences introduced by ASCII '\\'. The valid + // escapes can all be expressed with ASCII characters, so it is safe to + // operate on bytes here. + // + // Unescaping the input byte array will result in a byte sequence that's no + // longer than the input. That's because each escape sequence is between + // two and four bytes long and stands for a single byte. + final byte[] result = new byte[input.size()]; int pos = 0; - for (int i = 0; i < input.length(); i++) { - char c = input.charAt(i); + for (int i = 0; i < input.size(); i++) { + byte c = input.byteAt(i); if (c == '\\') { - if (i + 1 < input.length()) { + if (i + 1 < input.size()) { ++i; - c = input.charAt(i); + c = input.byteAt(i); if (isOctal(c)) { // Octal escape. int code = digitValue(c); - if (i + 1 < input.length() && isOctal(input.charAt(i + 1))) { + if (i + 1 < input.size() && isOctal(input.byteAt(i + 1))) { ++i; - code = code * 8 + digitValue(input.charAt(i)); + code = code * 8 + digitValue(input.byteAt(i)); } - if (i + 1 < input.length() && isOctal(input.charAt(i + 1))) { + if (i + 1 < input.size() && isOctal(input.byteAt(i + 1))) { ++i; - code = code * 8 + digitValue(input.charAt(i)); + code = code * 8 + digitValue(input.byteAt(i)); } + // TODO: Check that 0 <= code && code <= 0xFF. result[pos++] = (byte)code; } else { switch (c) { @@ -1121,31 +1341,31 @@ public final class TextFormat { case 'x': // hex escape int code = 0; - if (i + 1 < input.length() && isHex(input.charAt(i + 1))) { + if (i + 1 < input.size() && isHex(input.byteAt(i + 1))) { ++i; - code = digitValue(input.charAt(i)); + code = digitValue(input.byteAt(i)); } else { throw new InvalidEscapeSequenceException( - "Invalid escape sequence: '\\x' with no digits"); + "Invalid escape sequence: '\\x' with no digits"); } - if (i + 1 < input.length() && isHex(input.charAt(i + 1))) { + if (i + 1 < input.size() && isHex(input.byteAt(i + 1))) { ++i; - code = code * 16 + digitValue(input.charAt(i)); + code = code * 16 + digitValue(input.byteAt(i)); } result[pos++] = (byte)code; break; default: throw new InvalidEscapeSequenceException( - "Invalid escape sequence: '\\" + c + '\''); + "Invalid escape sequence: '\\" + (char)c + '\''); } } } else { throw new InvalidEscapeSequenceException( - "Invalid escape sequence: '\\' at end of string."); + "Invalid escape sequence: '\\' at end of string."); } } else { - result[pos++] = (byte)c; + result[pos++] = c; } } @@ -1183,12 +1403,12 @@ public final class TextFormat { } /** Is this an octal digit? */ - private static boolean isOctal(final char c) { + private static boolean isOctal(final byte c) { return '0' <= c && c <= '7'; } /** Is this a hex digit? */ - private static boolean isHex(final char c) { + private static boolean isHex(final byte c) { return ('0' <= c && c <= '9') || ('a' <= c && c <= 'f') || ('A' <= c && c <= 'F'); @@ -1199,7 +1419,7 @@ public final class TextFormat { * numeric value. This is like {@code Character.digit()} but we don't accept * non-ASCII digits. */ - private static int digitValue(final char c) { + private static int digitValue(final byte c) { if ('0' <= c && c <= '9') { return c - '0'; } else if ('a' <= c && c <= 'z') { @@ -1212,7 +1432,7 @@ public final class TextFormat { /** * Parse a 32-bit signed integer from the text. Unlike the Java standard * {@code Integer.parseInt()}, this function recognizes the prefixes "0x" - * and "0" to signify hexidecimal and octal numbers, respectively. + * and "0" to signify hexadecimal and octal numbers, respectively. */ static int parseInt32(final String text) throws NumberFormatException { return (int) parseInteger(text, true, false); @@ -1221,7 +1441,7 @@ public final class TextFormat { /** * Parse a 32-bit unsigned integer from the text. Unlike the Java standard * {@code Integer.parseInt()}, this function recognizes the prefixes "0x" - * and "0" to signify hexidecimal and octal numbers, respectively. The + * and "0" to signify hexadecimal and octal numbers, respectively. The * result is coerced to a (signed) {@code int} when returned since Java has * no unsigned integer type. */ @@ -1232,7 +1452,7 @@ public final class TextFormat { /** * Parse a 64-bit signed integer from the text. Unlike the Java standard * {@code Integer.parseInt()}, this function recognizes the prefixes "0x" - * and "0" to signify hexidecimal and octal numbers, respectively. + * and "0" to signify hexadecimal and octal numbers, respectively. */ static long parseInt64(final String text) throws NumberFormatException { return parseInteger(text, true, true); @@ -1241,7 +1461,7 @@ public final class TextFormat { /** * Parse a 64-bit unsigned integer from the text. Unlike the Java standard * {@code Integer.parseInt()}, this function recognizes the prefixes "0x" - * and "0" to signify hexidecimal and octal numbers, respectively. The + * and "0" to signify hexadecimal and octal numbers, respectively. The * result is coerced to a (signed) {@code long} when returned since Java has * no unsigned long type. */ diff --git a/cpp/thirdparty/protobuf-2.3.0/java/src/main/java/com/google/protobuf/UninitializedMessageException.java b/cpp/thirdparty/protobuf-2.5.0/java/src/main/java/com/google/protobuf/UninitializedMessageException.java similarity index 100% rename from cpp/thirdparty/protobuf-2.3.0/java/src/main/java/com/google/protobuf/UninitializedMessageException.java rename to cpp/thirdparty/protobuf-2.5.0/java/src/main/java/com/google/protobuf/UninitializedMessageException.java diff --git a/cpp/thirdparty/protobuf-2.3.0/java/src/main/java/com/google/protobuf/UnknownFieldSet.java b/cpp/thirdparty/protobuf-2.5.0/java/src/main/java/com/google/protobuf/UnknownFieldSet.java similarity index 97% rename from cpp/thirdparty/protobuf-2.3.0/java/src/main/java/com/google/protobuf/UnknownFieldSet.java rename to cpp/thirdparty/protobuf-2.5.0/java/src/main/java/com/google/protobuf/UnknownFieldSet.java index 26a15d008..45e2e6e40 100644 --- a/cpp/thirdparty/protobuf-2.3.0/java/src/main/java/com/google/protobuf/UnknownFieldSet.java +++ b/cpp/thirdparty/protobuf-2.5.0/java/src/main/java/com/google/protobuf/UnknownFieldSet.java @@ -46,7 +46,7 @@ import java.util.TreeMap; * {@code UnknownFieldSet} is used to keep track of fields which were seen when * parsing a protocol message but whose field numbers or types are unrecognized. * This most frequently occurs when new fields are added to a message type - * and then messages containing those feilds are read by old software that was + * and then messages containing those fields are read by old software that was * compiled before the new types were added. * *

Every {@link Message} contains an {@code UnknownFieldSet} (and every @@ -468,7 +468,7 @@ public final class UnknownFieldSet implements MessageLite { /** * Parse a single field from {@code input} and merge it into this set. * @param tag The field's tag number, which was already parsed. - * @return {@code false} if the tag is an engroup tag. + * @return {@code false} if the tag is an end group tag. */ public boolean mergeFieldFrom(final int tag, final CodedInputStream input) throws IOException { @@ -950,4 +950,29 @@ public final class UnknownFieldSet implements MessageLite { } } } + + /** + * Parser to implement MessageLite interface. + */ + public static final class Parser extends AbstractParser { + public UnknownFieldSet parsePartialFrom( + CodedInputStream input, ExtensionRegistryLite extensionRegistry) + throws InvalidProtocolBufferException { + Builder builder = newBuilder(); + try { + builder.mergeFrom(input); + } catch (InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(builder.buildPartial()); + } catch (IOException e) { + throw new InvalidProtocolBufferException(e.getMessage()) + .setUnfinishedMessage(builder.buildPartial()); + } + return builder.buildPartial(); + } + } + + private static final Parser PARSER = new Parser(); + public final Parser getParserForType() { + return PARSER; + } } diff --git a/cpp/thirdparty/protobuf-2.5.0/java/src/main/java/com/google/protobuf/UnmodifiableLazyStringList.java b/cpp/thirdparty/protobuf-2.5.0/java/src/main/java/com/google/protobuf/UnmodifiableLazyStringList.java new file mode 100644 index 000000000..591bca540 --- /dev/null +++ b/cpp/thirdparty/protobuf-2.5.0/java/src/main/java/com/google/protobuf/UnmodifiableLazyStringList.java @@ -0,0 +1,152 @@ +// Protocol Buffers - Google's data interchange format +// Copyright 2008 Google Inc. All rights reserved. +// http://code.google.com/p/protobuf/ +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +package com.google.protobuf; + +import java.util.AbstractList; +import java.util.RandomAccess; +import java.util.List; +import java.util.ListIterator; +import java.util.Iterator; + +/** + * An implementation of {@link LazyStringList} that wraps another + * {@link LazyStringList} such that it cannot be modified via the wrapper. + * + * @author jonp@google.com (Jon Perlow) + */ +public class UnmodifiableLazyStringList extends AbstractList + implements LazyStringList, RandomAccess { + + private final LazyStringList list; + + public UnmodifiableLazyStringList(LazyStringList list) { + this.list = list; + } + + @Override + public String get(int index) { + return list.get(index); + } + + @Override + public int size() { + return list.size(); + } + + //@Override (Java 1.6 override semantics, but we must support 1.5) + public ByteString getByteString(int index) { + return list.getByteString(index); + } + + //@Override (Java 1.6 override semantics, but we must support 1.5) + public void add(ByteString element) { + throw new UnsupportedOperationException(); + } + + //@Override (Java 1.6 override semantics, but we must support 1.5) + public ListIterator listIterator(final int index) { + return new ListIterator() { + ListIterator iter = list.listIterator(index); + + //@Override (Java 1.6 override semantics, but we must support 1.5) + public boolean hasNext() { + return iter.hasNext(); + } + + //@Override (Java 1.6 override semantics, but we must support 1.5) + public String next() { + return iter.next(); + } + + //@Override (Java 1.6 override semantics, but we must support 1.5) + public boolean hasPrevious() { + return iter.hasPrevious(); + } + + //@Override (Java 1.6 override semantics, but we must support 1.5) + public String previous() { + return iter.previous(); + } + + //@Override (Java 1.6 override semantics, but we must support 1.5) + public int nextIndex() { + return iter.nextIndex(); + } + + //@Override (Java 1.6 override semantics, but we must support 1.5) + public int previousIndex() { + return iter.previousIndex(); + } + + //@Override (Java 1.6 override semantics, but we must support 1.5) + public void remove() { + throw new UnsupportedOperationException(); + } + + //@Override (Java 1.6 override semantics, but we must support 1.5) + public void set(String o) { + throw new UnsupportedOperationException(); + } + + //@Override (Java 1.6 override semantics, but we must support 1.5) + public void add(String o) { + throw new UnsupportedOperationException(); + } + }; + } + + @Override + public Iterator iterator() { + return new Iterator() { + Iterator iter = list.iterator(); + + //@Override (Java 1.6 override semantics, but we must support 1.5) + public boolean hasNext() { + return iter.hasNext(); + } + + //@Override (Java 1.6 override semantics, but we must support 1.5) + public String next() { + return iter.next(); + } + + //@Override (Java 1.6 override semantics, but we must support 1.5) + public void remove() { + throw new UnsupportedOperationException(); + } + }; + } + + public List getUnderlyingElements() { + // The returned value is already unmodifiable. + return list.getUnderlyingElements(); + } +} diff --git a/cpp/thirdparty/protobuf-2.5.0/java/src/main/java/com/google/protobuf/Utf8.java b/cpp/thirdparty/protobuf-2.5.0/java/src/main/java/com/google/protobuf/Utf8.java new file mode 100644 index 000000000..388f7fc59 --- /dev/null +++ b/cpp/thirdparty/protobuf-2.5.0/java/src/main/java/com/google/protobuf/Utf8.java @@ -0,0 +1,349 @@ +// Protocol Buffers - Google's data interchange format +// Copyright 2008 Google Inc. All rights reserved. +// http://code.google.com/p/protobuf/ +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +package com.google.protobuf; + +/** + * A set of low-level, high-performance static utility methods related + * to the UTF-8 character encoding. This class has no dependencies + * outside of the core JDK libraries. + * + *

There are several variants of UTF-8. The one implemented by + * this class is the restricted definition of UTF-8 introduced in + * Unicode 3.1, which mandates the rejection of "overlong" byte + * sequences as well as rejection of 3-byte surrogate codepoint byte + * sequences. Note that the UTF-8 decoder included in Oracle's JDK + * has been modified to also reject "overlong" byte sequences, but (as + * of 2011) still accepts 3-byte surrogate codepoint byte sequences. + * + *

The byte sequences considered valid by this class are exactly + * those that can be roundtrip converted to Strings and back to bytes + * using the UTF-8 charset, without loss:

 {@code
+ * Arrays.equals(bytes, new String(bytes, "UTF-8").getBytes("UTF-8"))
+ * }
+ * + *

See the Unicode Standard,
+ * Table 3-6. UTF-8 Bit Distribution,
+ * Table 3-7. Well Formed UTF-8 Byte Sequences. + * + *

This class supports decoding of partial byte sequences, so that the + * bytes in a complete UTF-8 byte sequences can be stored in multiple + * segments. Methods typically return {@link #MALFORMED} if the partial + * byte sequence is definitely not well-formed, {@link #COMPLETE} if it is + * well-formed in the absence of additional input, or if the byte sequence + * apparently terminated in the middle of a character, an opaque integer + * "state" value containing enough information to decode the character when + * passed to a subsequent invocation of a partial decoding method. + * + * @author martinrb@google.com (Martin Buchholz) + */ +final class Utf8 { + private Utf8() {} + + /** + * State value indicating that the byte sequence is well-formed and + * complete (no further bytes are needed to complete a character). + */ + public static final int COMPLETE = 0; + + /** + * State value indicating that the byte sequence is definitely not + * well-formed. + */ + public static final int MALFORMED = -1; + + // Other state values include the partial bytes of the incomplete + // character to be decoded in the simplest way: we pack the bytes + // into the state int in little-endian order. For example: + // + // int state = byte1 ^ (byte2 << 8) ^ (byte3 << 16); + // + // Such a state is unpacked thus (note the ~ operation for byte2 to + // undo byte1's sign-extension bits): + // + // int byte1 = (byte) state; + // int byte2 = (byte) ~(state >> 8); + // int byte3 = (byte) (state >> 16); + // + // We cannot store a zero byte in the state because it would be + // indistinguishable from the absence of a byte. But we don't need + // to, because partial bytes must always be negative. When building + // a state, we ensure that byte1 is negative and subsequent bytes + // are valid trailing bytes. + + /** + * Returns {@code true} if the given byte array is a well-formed + * UTF-8 byte sequence. + * + *

This is a convenience method, equivalent to a call to {@code + * isValidUtf8(bytes, 0, bytes.length)}. + */ + public static boolean isValidUtf8(byte[] bytes) { + return isValidUtf8(bytes, 0, bytes.length); + } + + /** + * Returns {@code true} if the given byte array slice is a + * well-formed UTF-8 byte sequence. The range of bytes to be + * checked extends from index {@code index}, inclusive, to {@code + * limit}, exclusive. + * + *

This is a convenience method, equivalent to {@code + * partialIsValidUtf8(bytes, index, limit) == Utf8.COMPLETE}. + */ + public static boolean isValidUtf8(byte[] bytes, int index, int limit) { + return partialIsValidUtf8(bytes, index, limit) == COMPLETE; + } + + /** + * Tells whether the given byte array slice is a well-formed, + * malformed, or incomplete UTF-8 byte sequence. The range of bytes + * to be checked extends from index {@code index}, inclusive, to + * {@code limit}, exclusive. + * + * @param state either {@link Utf8#COMPLETE} (if this is the initial decoding + * operation) or the value returned from a call to a partial decoding method + * for the previous bytes + * + * @return {@link #MALFORMED} if the partial byte sequence is + * definitely not well-formed, {@link #COMPLETE} if it is well-formed + * (no additional input needed), or if the byte sequence is + * "incomplete", i.e. apparently terminated in the middle of a character, + * an opaque integer "state" value containing enough information to + * decode the character when passed to a subsequent invocation of a + * partial decoding method. + */ + public static int partialIsValidUtf8( + int state, byte[] bytes, int index, int limit) { + if (state != COMPLETE) { + // The previous decoding operation was incomplete (or malformed). + // We look for a well-formed sequence consisting of bytes from + // the previous decoding operation (stored in state) together + // with bytes from the array slice. + // + // We expect such "straddler characters" to be rare. + + if (index >= limit) { // No bytes? No progress. + return state; + } + int byte1 = (byte) state; + // byte1 is never ASCII. + if (byte1 < (byte) 0xE0) { + // two-byte form + + // Simultaneously checks for illegal trailing-byte in + // leading position and overlong 2-byte form. + if (byte1 < (byte) 0xC2 || + // byte2 trailing-byte test + bytes[index++] > (byte) 0xBF) { + return MALFORMED; + } + } else if (byte1 < (byte) 0xF0) { + // three-byte form + + // Get byte2 from saved state or array + int byte2 = (byte) ~(state >> 8); + if (byte2 == 0) { + byte2 = bytes[index++]; + if (index >= limit) { + return incompleteStateFor(byte1, byte2); + } + } + if (byte2 > (byte) 0xBF || + // overlong? 5 most significant bits must not all be zero + (byte1 == (byte) 0xE0 && byte2 < (byte) 0xA0) || + // illegal surrogate codepoint? + (byte1 == (byte) 0xED && byte2 >= (byte) 0xA0) || + // byte3 trailing-byte test + bytes[index++] > (byte) 0xBF) { + return MALFORMED; + } + } else { + // four-byte form + + // Get byte2 and byte3 from saved state or array + int byte2 = (byte) ~(state >> 8); + int byte3 = 0; + if (byte2 == 0) { + byte2 = bytes[index++]; + if (index >= limit) { + return incompleteStateFor(byte1, byte2); + } + } else { + byte3 = (byte) (state >> 16); + } + if (byte3 == 0) { + byte3 = bytes[index++]; + if (index >= limit) { + return incompleteStateFor(byte1, byte2, byte3); + } + } + + // If we were called with state == MALFORMED, then byte1 is 0xFF, + // which never occurs in well-formed UTF-8, and so we will return + // MALFORMED again below. + + if (byte2 > (byte) 0xBF || + // Check that 1 <= plane <= 16. Tricky optimized form of: + // if (byte1 > (byte) 0xF4 || + // byte1 == (byte) 0xF0 && byte2 < (byte) 0x90 || + // byte1 == (byte) 0xF4 && byte2 > (byte) 0x8F) + (((byte1 << 28) + (byte2 - (byte) 0x90)) >> 30) != 0 || + // byte3 trailing-byte test + byte3 > (byte) 0xBF || + // byte4 trailing-byte test + bytes[index++] > (byte) 0xBF) { + return MALFORMED; + } + } + } + + return partialIsValidUtf8(bytes, index, limit); + } + + /** + * Tells whether the given byte array slice is a well-formed, + * malformed, or incomplete UTF-8 byte sequence. The range of bytes + * to be checked extends from index {@code index}, inclusive, to + * {@code limit}, exclusive. + * + *

This is a convenience method, equivalent to a call to {@code + * partialIsValidUtf8(Utf8.COMPLETE, bytes, index, limit)}. + * + * @return {@link #MALFORMED} if the partial byte sequence is + * definitely not well-formed, {@link #COMPLETE} if it is well-formed + * (no additional input needed), or if the byte sequence is + * "incomplete", i.e. apparently terminated in the middle of a character, + * an opaque integer "state" value containing enough information to + * decode the character when passed to a subsequent invocation of a + * partial decoding method. + */ + public static int partialIsValidUtf8( + byte[] bytes, int index, int limit) { + // Optimize for 100% ASCII. + // Hotspot loves small simple top-level loops like this. + while (index < limit && bytes[index] >= 0) { + index++; + } + + return (index >= limit) ? COMPLETE : + partialIsValidUtf8NonAscii(bytes, index, limit); + } + + private static int partialIsValidUtf8NonAscii( + byte[] bytes, int index, int limit) { + for (;;) { + int byte1, byte2; + + // Optimize for interior runs of ASCII bytes. + do { + if (index >= limit) { + return COMPLETE; + } + } while ((byte1 = bytes[index++]) >= 0); + + if (byte1 < (byte) 0xE0) { + // two-byte form + + if (index >= limit) { + return byte1; + } + + // Simultaneously checks for illegal trailing-byte in + // leading position and overlong 2-byte form. + if (byte1 < (byte) 0xC2 || + bytes[index++] > (byte) 0xBF) { + return MALFORMED; + } + } else if (byte1 < (byte) 0xF0) { + // three-byte form + + if (index >= limit - 1) { // incomplete sequence + return incompleteStateFor(bytes, index, limit); + } + if ((byte2 = bytes[index++]) > (byte) 0xBF || + // overlong? 5 most significant bits must not all be zero + (byte1 == (byte) 0xE0 && byte2 < (byte) 0xA0) || + // check for illegal surrogate codepoints + (byte1 == (byte) 0xED && byte2 >= (byte) 0xA0) || + // byte3 trailing-byte test + bytes[index++] > (byte) 0xBF) { + return MALFORMED; + } + } else { + // four-byte form + + if (index >= limit - 2) { // incomplete sequence + return incompleteStateFor(bytes, index, limit); + } + if ((byte2 = bytes[index++]) > (byte) 0xBF || + // Check that 1 <= plane <= 16. Tricky optimized form of: + // if (byte1 > (byte) 0xF4 || + // byte1 == (byte) 0xF0 && byte2 < (byte) 0x90 || + // byte1 == (byte) 0xF4 && byte2 > (byte) 0x8F) + (((byte1 << 28) + (byte2 - (byte) 0x90)) >> 30) != 0 || + // byte3 trailing-byte test + bytes[index++] > (byte) 0xBF || + // byte4 trailing-byte test + bytes[index++] > (byte) 0xBF) { + return MALFORMED; + } + } + } + } + + private static int incompleteStateFor(int byte1) { + return (byte1 > (byte) 0xF4) ? + MALFORMED : byte1; + } + + private static int incompleteStateFor(int byte1, int byte2) { + return (byte1 > (byte) 0xF4 || + byte2 > (byte) 0xBF) ? + MALFORMED : byte1 ^ (byte2 << 8); + } + + private static int incompleteStateFor(int byte1, int byte2, int byte3) { + return (byte1 > (byte) 0xF4 || + byte2 > (byte) 0xBF || + byte3 > (byte) 0xBF) ? + MALFORMED : byte1 ^ (byte2 << 8) ^ (byte3 << 16); + } + + private static int incompleteStateFor(byte[] bytes, int index, int limit) { + int byte1 = bytes[index - 1]; + switch (limit - index) { + case 0: return incompleteStateFor(byte1); + case 1: return incompleteStateFor(byte1, bytes[index]); + case 2: return incompleteStateFor(byte1, bytes[index], bytes[index + 1]); + default: throw new AssertionError(); + } + } +} diff --git a/cpp/thirdparty/protobuf-2.3.0/java/src/main/java/com/google/protobuf/WireFormat.java b/cpp/thirdparty/protobuf-2.5.0/java/src/main/java/com/google/protobuf/WireFormat.java similarity index 93% rename from cpp/thirdparty/protobuf-2.3.0/java/src/main/java/com/google/protobuf/WireFormat.java rename to cpp/thirdparty/protobuf-2.5.0/java/src/main/java/com/google/protobuf/WireFormat.java index c46f7b0a6..dd2d63107 100644 --- a/cpp/thirdparty/protobuf-2.3.0/java/src/main/java/com/google/protobuf/WireFormat.java +++ b/cpp/thirdparty/protobuf-2.5.0/java/src/main/java/com/google/protobuf/WireFormat.java @@ -45,12 +45,12 @@ public final class WireFormat { // Do not allow instantiation. private WireFormat() {} - static final int WIRETYPE_VARINT = 0; - static final int WIRETYPE_FIXED64 = 1; - static final int WIRETYPE_LENGTH_DELIMITED = 2; - static final int WIRETYPE_START_GROUP = 3; - static final int WIRETYPE_END_GROUP = 4; - static final int WIRETYPE_FIXED32 = 5; + public static final int WIRETYPE_VARINT = 0; + public static final int WIRETYPE_FIXED64 = 1; + public static final int WIRETYPE_LENGTH_DELIMITED = 2; + public static final int WIRETYPE_START_GROUP = 3; + public static final int WIRETYPE_END_GROUP = 4; + public static final int WIRETYPE_FIXED32 = 5; static final int TAG_TYPE_BITS = 3; static final int TAG_TYPE_MASK = (1 << TAG_TYPE_BITS) - 1; @@ -146,7 +146,7 @@ public final class WireFormat { public boolean isPackable() { return true; } } - // Field numbers for feilds in MessageSet wire format. + // Field numbers for fields in MessageSet wire format. static final int MESSAGE_SET_ITEM = 1; static final int MESSAGE_SET_TYPE_ID = 2; static final int MESSAGE_SET_MESSAGE = 3; diff --git a/cpp/thirdparty/protobuf-2.3.0/java/src/test/java/com/google/protobuf/AbstractMessageTest.java b/cpp/thirdparty/protobuf-2.5.0/java/src/test/java/com/google/protobuf/AbstractMessageTest.java similarity index 88% rename from cpp/thirdparty/protobuf-2.3.0/java/src/test/java/com/google/protobuf/AbstractMessageTest.java rename to cpp/thirdparty/protobuf-2.5.0/java/src/test/java/com/google/protobuf/AbstractMessageTest.java index c44d66050..3d05cb7df 100644 --- a/cpp/thirdparty/protobuf-2.3.0/java/src/test/java/com/google/protobuf/AbstractMessageTest.java +++ b/cpp/thirdparty/protobuf-2.5.0/java/src/test/java/com/google/protobuf/AbstractMessageTest.java @@ -30,6 +30,7 @@ package com.google.protobuf; +import com.google.protobuf.Descriptors.FieldDescriptor; import protobuf_unittest.UnittestOptimizeFor.TestOptimizedForSize; import protobuf_unittest.UnittestProto; import protobuf_unittest.UnittestProto.ForeignMessage; @@ -167,6 +168,13 @@ public class AbstractMessageTest extends TestCase { wrappedBuilder.setUnknownFields(unknownFields); return this; } + @Override + public Message.Builder getFieldBuilder(FieldDescriptor field) { + return wrappedBuilder.getFieldBuilder(field); + } + } + public Parser getParserForType() { + return wrappedMessage.getParserForType(); } } @@ -220,6 +228,34 @@ public class AbstractMessageTest extends TestCase { TestUtil.assertAllFieldsSet((TestAllTypes) message.wrappedMessage); } + public void testParsingUninitialized() throws Exception { + TestRequiredForeign.Builder builder = TestRequiredForeign.newBuilder(); + builder.getOptionalMessageBuilder().setDummy2(10); + ByteString bytes = builder.buildPartial().toByteString(); + Message.Builder abstractMessageBuilder = + new AbstractMessageWrapper.Builder(TestRequiredForeign.newBuilder()); + // mergeFrom() should not throw initialization error. + abstractMessageBuilder.mergeFrom(bytes).buildPartial(); + try { + abstractMessageBuilder.mergeFrom(bytes).build(); + fail(); + } catch (UninitializedMessageException ex) { + // pass + } + + // test DynamicMessage directly. + Message.Builder dynamicMessageBuilder = DynamicMessage.newBuilder( + TestRequiredForeign.getDescriptor()); + // mergeFrom() should not throw initialization error. + dynamicMessageBuilder.mergeFrom(bytes).buildPartial(); + try { + dynamicMessageBuilder.mergeFrom(bytes).build(); + fail(); + } catch (UninitializedMessageException ex) { + // pass + } + } + public void testPackedSerialization() throws Exception { Message abstractMessage = new AbstractMessageWrapper(TestUtil.getPackedSet()); @@ -298,12 +334,16 @@ public class AbstractMessageTest extends TestCase { new AbstractMessageWrapper.Builder(builder); assertFalse(abstractBuilder.isInitialized()); + assertEquals("a, b, c", abstractBuilder.getInitializationErrorString()); builder.setA(1); assertFalse(abstractBuilder.isInitialized()); + assertEquals("b, c", abstractBuilder.getInitializationErrorString()); builder.setB(1); assertFalse(abstractBuilder.isInitialized()); + assertEquals("c", abstractBuilder.getInitializationErrorString()); builder.setC(1); assertTrue(abstractBuilder.isInitialized()); + assertEquals("", abstractBuilder.getInitializationErrorString()); } public void testForeignIsInitialized() throws Exception { @@ -312,18 +352,27 @@ public class AbstractMessageTest extends TestCase { new AbstractMessageWrapper.Builder(builder); assertTrue(abstractBuilder.isInitialized()); + assertEquals("", abstractBuilder.getInitializationErrorString()); builder.setOptionalMessage(TEST_REQUIRED_UNINITIALIZED); assertFalse(abstractBuilder.isInitialized()); + assertEquals( + "optional_message.a, optional_message.b, optional_message.c", + abstractBuilder.getInitializationErrorString()); builder.setOptionalMessage(TEST_REQUIRED_INITIALIZED); assertTrue(abstractBuilder.isInitialized()); + assertEquals("", abstractBuilder.getInitializationErrorString()); builder.addRepeatedMessage(TEST_REQUIRED_UNINITIALIZED); assertFalse(abstractBuilder.isInitialized()); + assertEquals( + "repeated_message[0].a, repeated_message[0].b, repeated_message[0].c", + abstractBuilder.getInitializationErrorString()); builder.setRepeatedMessage(0, TEST_REQUIRED_INITIALIZED); assertTrue(abstractBuilder.isInitialized()); + assertEquals("", abstractBuilder.getInitializationErrorString()); } // ----------------------------------------------------------------- @@ -366,7 +415,7 @@ public class AbstractMessageTest extends TestCase { // ----------------------------------------------------------------- // Tests for equals and hashCode - + public void testEqualsAndHashCode() throws Exception { TestAllTypes a = TestUtil.getAllSet(); TestAllTypes b = TestAllTypes.newBuilder().build(); @@ -382,7 +431,7 @@ public class AbstractMessageTest extends TestCase { checkEqualsIsConsistent(d); checkEqualsIsConsistent(e); checkEqualsIsConsistent(f); - + checkNotEqual(a, b); checkNotEqual(a, c); checkNotEqual(a, d); @@ -413,19 +462,20 @@ public class AbstractMessageTest extends TestCase { checkEqualsIsConsistent(eUnknownFields); checkEqualsIsConsistent(fUnknownFields); - // Subseqent reconstitutions should be identical + // Subsequent reconstitutions should be identical UnittestProto.TestEmptyMessage eUnknownFields2 = UnittestProto.TestEmptyMessage.parseFrom(e.toByteArray()); checkEqualsIsConsistent(eUnknownFields, eUnknownFields2); } - + + /** - * Asserts that the given proto has symetric equals and hashCode methods. + * Asserts that the given proto has symmetric equals and hashCode methods. */ private void checkEqualsIsConsistent(Message message) { // Object should be equal to itself. assertEquals(message, message); - + // Object should be equal to a dynamic copy of itself. DynamicMessage dynamic = DynamicMessage.newBuilder(message).build(); checkEqualsIsConsistent(message, dynamic); @@ -442,7 +492,7 @@ public class AbstractMessageTest extends TestCase { /** * Asserts that the given protos are not equal and have different hash codes. - * + * * @warning It's valid for non-equal objects to have the same hash code, so * this test is stricter than it needs to be. However, this should happen * relatively rarely. diff --git a/cpp/thirdparty/protobuf-2.5.0/java/src/test/java/com/google/protobuf/BoundedByteStringTest.java b/cpp/thirdparty/protobuf-2.5.0/java/src/test/java/com/google/protobuf/BoundedByteStringTest.java new file mode 100644 index 000000000..20fa2dffa --- /dev/null +++ b/cpp/thirdparty/protobuf-2.5.0/java/src/test/java/com/google/protobuf/BoundedByteStringTest.java @@ -0,0 +1,68 @@ +// Protocol Buffers - Google's data interchange format +// Copyright 2008 Google Inc. All rights reserved. +// http://code.google.com/p/protobuf/ +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +package com.google.protobuf; + +import java.io.UnsupportedEncodingException; + +/** + * This class tests {@link BoundedByteString}, which extends {@link LiteralByteString}, + * by inheriting the tests from {@link LiteralByteStringTest}. The only method which + * is strange enough that it needs to be overridden here is {@link #testToString()}. + * + * @author carlanton@google.com (Carl Haverl) + */ +public class BoundedByteStringTest extends LiteralByteStringTest { + + @Override + protected void setUp() throws Exception { + classUnderTest = "BoundedByteString"; + byte[] sourceBytes = ByteStringTest.getTestBytes(2341, 11337766L); + int from = 100; + int to = sourceBytes.length - 100; + stringUnderTest = ByteString.copyFrom(sourceBytes).substring(from, to); + referenceBytes = new byte[to - from]; + System.arraycopy(sourceBytes, from, referenceBytes, 0, to - from); + expectedHashCode = 727575887; + } + + @Override + public void testToString() throws UnsupportedEncodingException { + String testString = "I love unicode \u1234\u5678 characters"; + LiteralByteString unicode = new LiteralByteString(testString.getBytes(UTF_8)); + ByteString chopped = unicode.substring(2, unicode.size() - 6); + assertEquals(classUnderTest + ".substring() must have the expected type", + classUnderTest, getActualClassName(chopped)); + + String roundTripString = chopped.toString(UTF_8); + assertEquals(classUnderTest + " unicode bytes must match", + testString.substring(2, testString.length() - 6), roundTripString); + } +} diff --git a/cpp/thirdparty/protobuf-2.5.0/java/src/test/java/com/google/protobuf/ByteStringTest.java b/cpp/thirdparty/protobuf-2.5.0/java/src/test/java/com/google/protobuf/ByteStringTest.java new file mode 100644 index 000000000..7a1d68230 --- /dev/null +++ b/cpp/thirdparty/protobuf-2.5.0/java/src/test/java/com/google/protobuf/ByteStringTest.java @@ -0,0 +1,692 @@ +// Protocol Buffers - Google's data interchange format +// Copyright 2008 Google Inc. All rights reserved. +// http://code.google.com/p/protobuf/ +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +package com.google.protobuf; + +import com.google.protobuf.ByteString.Output; + +import junit.framework.TestCase; + +import java.io.ByteArrayInputStream; +import java.io.IOException; +import java.io.InputStream; +import java.io.OutputStream; +import java.io.UnsupportedEncodingException; +import java.nio.ByteBuffer; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.Iterator; +import java.util.List; +import java.util.NoSuchElementException; +import java.util.Random; + +/** + * Test methods with implementations in {@link ByteString}, plus do some top-level "integration" + * tests. + * + * @author carlanton@google.com (Carl Haverl) + */ +public class ByteStringTest extends TestCase { + + private static final String UTF_16 = "UTF-16"; + + static byte[] getTestBytes(int size, long seed) { + Random random = new Random(seed); + byte[] result = new byte[size]; + random.nextBytes(result); + return result; + } + + private byte[] getTestBytes(int size) { + return getTestBytes(size, 445566L); + } + + private byte[] getTestBytes() { + return getTestBytes(1000); + } + + // Compare the entire left array with a subset of the right array. + private boolean isArrayRange(byte[] left, byte[] right, int rightOffset, int length) { + boolean stillEqual = (left.length == length); + for (int i = 0; (stillEqual && i < length); ++i) { + stillEqual = (left[i] == right[rightOffset + i]); + } + return stillEqual; + } + + // Returns true only if the given two arrays have identical contents. + private boolean isArray(byte[] left, byte[] right) { + return left.length == right.length && isArrayRange(left, right, 0, left.length); + } + + public void testSubstring_BeginIndex() { + byte[] bytes = getTestBytes(); + ByteString substring = ByteString.copyFrom(bytes).substring(500); + assertTrue("substring must contain the tail of the string", + isArrayRange(substring.toByteArray(), bytes, 500, bytes.length - 500)); + } + + public void testCopyFrom_BytesOffsetSize() { + byte[] bytes = getTestBytes(); + ByteString byteString = ByteString.copyFrom(bytes, 500, 200); + assertTrue("copyFrom sub-range must contain the expected bytes", + isArrayRange(byteString.toByteArray(), bytes, 500, 200)); + } + + public void testCopyFrom_Bytes() { + byte[] bytes = getTestBytes(); + ByteString byteString = ByteString.copyFrom(bytes); + assertTrue("copyFrom must contain the expected bytes", + isArray(byteString.toByteArray(), bytes)); + } + + public void testCopyFrom_ByteBufferSize() { + byte[] bytes = getTestBytes(); + ByteBuffer byteBuffer = ByteBuffer.allocate(bytes.length); + byteBuffer.put(bytes); + byteBuffer.position(500); + ByteString byteString = ByteString.copyFrom(byteBuffer, 200); + assertTrue("copyFrom byteBuffer sub-range must contain the expected bytes", + isArrayRange(byteString.toByteArray(), bytes, 500, 200)); + } + + public void testCopyFrom_ByteBuffer() { + byte[] bytes = getTestBytes(); + ByteBuffer byteBuffer = ByteBuffer.allocate(bytes.length); + byteBuffer.put(bytes); + byteBuffer.position(500); + ByteString byteString = ByteString.copyFrom(byteBuffer); + assertTrue("copyFrom byteBuffer sub-range must contain the expected bytes", + isArrayRange(byteString.toByteArray(), bytes, 500, bytes.length - 500)); + } + + public void testCopyFrom_StringEncoding() throws UnsupportedEncodingException { + String testString = "I love unicode \u1234\u5678 characters"; + ByteString byteString = ByteString.copyFrom(testString, UTF_16); + byte[] testBytes = testString.getBytes(UTF_16); + assertTrue("copyFrom string must respect the charset", + isArrayRange(byteString.toByteArray(), testBytes, 0, testBytes.length)); + } + + public void testCopyFrom_Utf8() throws UnsupportedEncodingException { + String testString = "I love unicode \u1234\u5678 characters"; + ByteString byteString = ByteString.copyFromUtf8(testString); + byte[] testBytes = testString.getBytes("UTF-8"); + assertTrue("copyFromUtf8 string must respect the charset", + isArrayRange(byteString.toByteArray(), testBytes, 0, testBytes.length)); + } + + public void testCopyFrom_Iterable() { + byte[] testBytes = getTestBytes(77777, 113344L); + final List pieces = makeConcretePieces(testBytes); + // Call copyFrom() on a Collection + ByteString byteString = ByteString.copyFrom(pieces); + assertTrue("copyFrom a List must contain the expected bytes", + isArrayRange(byteString.toByteArray(), testBytes, 0, testBytes.length)); + // Call copyFrom on an iteration that's not a collection + ByteString byteStringAlt = ByteString.copyFrom(new Iterable() { + public Iterator iterator() { + return pieces.iterator(); + } + }); + assertEquals("copyFrom from an Iteration must contain the expected bytes", + byteString, byteStringAlt); + } + + public void testCopyTo_TargetOffset() { + byte[] bytes = getTestBytes(); + ByteString byteString = ByteString.copyFrom(bytes); + byte[] target = new byte[bytes.length + 1000]; + byteString.copyTo(target, 400); + assertTrue("copyFrom byteBuffer sub-range must contain the expected bytes", + isArrayRange(bytes, target, 400, bytes.length)); + } + + public void testReadFrom_emptyStream() throws IOException { + ByteString byteString = + ByteString.readFrom(new ByteArrayInputStream(new byte[0])); + assertSame("reading an empty stream must result in the EMPTY constant " + + "byte string", ByteString.EMPTY, byteString); + } + + public void testReadFrom_smallStream() throws IOException { + assertReadFrom(getTestBytes(10)); + } + + public void testReadFrom_mutating() throws IOException { + byte[] capturedArray = null; + EvilInputStream eis = new EvilInputStream(); + ByteString byteString = ByteString.readFrom(eis); + + capturedArray = eis.capturedArray; + byte[] originalValue = byteString.toByteArray(); + for (int x = 0; x < capturedArray.length; ++x) { + capturedArray[x] = (byte) 0; + } + + byte[] newValue = byteString.toByteArray(); + assertTrue("copyFrom byteBuffer must not grant access to underlying array", + Arrays.equals(originalValue, newValue)); + } + + // Tests sizes that are near the rope copy-out threshold. + public void testReadFrom_mediumStream() throws IOException { + assertReadFrom(getTestBytes(ByteString.CONCATENATE_BY_COPY_SIZE - 1)); + assertReadFrom(getTestBytes(ByteString.CONCATENATE_BY_COPY_SIZE)); + assertReadFrom(getTestBytes(ByteString.CONCATENATE_BY_COPY_SIZE + 1)); + assertReadFrom(getTestBytes(200)); + } + + // Tests sizes that are over multi-segment rope threshold. + public void testReadFrom_largeStream() throws IOException { + assertReadFrom(getTestBytes(0x100)); + assertReadFrom(getTestBytes(0x101)); + assertReadFrom(getTestBytes(0x110)); + assertReadFrom(getTestBytes(0x1000)); + assertReadFrom(getTestBytes(0x1001)); + assertReadFrom(getTestBytes(0x1010)); + assertReadFrom(getTestBytes(0x10000)); + assertReadFrom(getTestBytes(0x10001)); + assertReadFrom(getTestBytes(0x10010)); + } + + // Tests sizes that are near the read buffer size. + public void testReadFrom_byteBoundaries() throws IOException { + final int min = ByteString.MIN_READ_FROM_CHUNK_SIZE; + final int max = ByteString.MAX_READ_FROM_CHUNK_SIZE; + + assertReadFrom(getTestBytes(min - 1)); + assertReadFrom(getTestBytes(min)); + assertReadFrom(getTestBytes(min + 1)); + + assertReadFrom(getTestBytes(min * 2 - 1)); + assertReadFrom(getTestBytes(min * 2)); + assertReadFrom(getTestBytes(min * 2 + 1)); + + assertReadFrom(getTestBytes(min * 4 - 1)); + assertReadFrom(getTestBytes(min * 4)); + assertReadFrom(getTestBytes(min * 4 + 1)); + + assertReadFrom(getTestBytes(min * 8 - 1)); + assertReadFrom(getTestBytes(min * 8)); + assertReadFrom(getTestBytes(min * 8 + 1)); + + assertReadFrom(getTestBytes(max - 1)); + assertReadFrom(getTestBytes(max)); + assertReadFrom(getTestBytes(max + 1)); + + assertReadFrom(getTestBytes(max * 2 - 1)); + assertReadFrom(getTestBytes(max * 2)); + assertReadFrom(getTestBytes(max * 2 + 1)); + } + + // Tests that IOExceptions propagate through ByteString.readFrom(). + public void testReadFrom_IOExceptions() { + try { + ByteString.readFrom(new FailStream()); + fail("readFrom must throw the underlying IOException"); + + } catch (IOException e) { + assertEquals("readFrom must throw the expected exception", + "synthetic failure", e.getMessage()); + } + } + + // Tests that ByteString.readFrom works with streams that don't + // always fill their buffers. + public void testReadFrom_reluctantStream() throws IOException { + final byte[] data = getTestBytes(0x1000); + + ByteString byteString = ByteString.readFrom(new ReluctantStream(data)); + assertTrue("readFrom byte stream must contain the expected bytes", + isArray(byteString.toByteArray(), data)); + + // Same test as above, but with some specific chunk sizes. + assertReadFromReluctantStream(data, 100); + assertReadFromReluctantStream(data, 248); + assertReadFromReluctantStream(data, 249); + assertReadFromReluctantStream(data, 250); + assertReadFromReluctantStream(data, 251); + assertReadFromReluctantStream(data, 0x1000); + assertReadFromReluctantStream(data, 0x1001); + } + + // Fails unless ByteString.readFrom reads the bytes correctly from a + // reluctant stream with the given chunkSize parameter. + private void assertReadFromReluctantStream(byte[] bytes, int chunkSize) + throws IOException { + ByteString b = ByteString.readFrom(new ReluctantStream(bytes), chunkSize); + assertTrue("readFrom byte stream must contain the expected bytes", + isArray(b.toByteArray(), bytes)); + } + + // Tests that ByteString.readFrom works with streams that implement + // available(). + public void testReadFrom_available() throws IOException { + final byte[] data = getTestBytes(0x1001); + + ByteString byteString = ByteString.readFrom(new AvailableStream(data)); + assertTrue("readFrom byte stream must contain the expected bytes", + isArray(byteString.toByteArray(), data)); + } + + // Fails unless ByteString.readFrom reads the bytes correctly. + private void assertReadFrom(byte[] bytes) throws IOException { + ByteString byteString = + ByteString.readFrom(new ByteArrayInputStream(bytes)); + assertTrue("readFrom byte stream must contain the expected bytes", + isArray(byteString.toByteArray(), bytes)); + } + + // A stream that fails when read. + private static final class FailStream extends InputStream { + @Override public int read() throws IOException { + throw new IOException("synthetic failure"); + } + } + + // A stream that simulates blocking by only producing 250 characters + // per call to read(byte[]). + private static class ReluctantStream extends InputStream { + protected final byte[] data; + protected int pos = 0; + + public ReluctantStream(byte[] data) { + this.data = data; + } + + @Override public int read() { + if (pos == data.length) { + return -1; + } else { + return data[pos++]; + } + } + + @Override public int read(byte[] buf) { + return read(buf, 0, buf.length); + } + + @Override public int read(byte[] buf, int offset, int size) { + if (pos == data.length) { + return -1; + } + int count = Math.min(Math.min(size, data.length - pos), 250); + System.arraycopy(data, pos, buf, offset, count); + pos += count; + return count; + } + } + + // Same as above, but also implements available(). + private static final class AvailableStream extends ReluctantStream { + public AvailableStream(byte[] data) { + super(data); + } + + @Override public int available() { + return Math.min(250, data.length - pos); + } + } + + // A stream which exposes the byte array passed into read(byte[], int, int). + private static class EvilInputStream extends InputStream { + public byte[] capturedArray = null; + + @Override + public int read(byte[] buf, int off, int len) { + if (capturedArray != null) { + return -1; + } else { + capturedArray = buf; + for (int x = 0; x < len; ++x) { + buf[x] = (byte) x; + } + return len; + } + } + + @Override + public int read() { + // Purposefully do nothing. + return -1; + } + } + + // A stream which exposes the byte array passed into write(byte[], int, int). + private static class EvilOutputStream extends OutputStream { + public byte[] capturedArray = null; + + @Override + public void write(byte[] buf, int off, int len) { + if (capturedArray == null) { + capturedArray = buf; + } + } + + @Override + public void write(int ignored) { + // Purposefully do nothing. + } + } + + public void testToStringUtf8() throws UnsupportedEncodingException { + String testString = "I love unicode \u1234\u5678 characters"; + byte[] testBytes = testString.getBytes("UTF-8"); + ByteString byteString = ByteString.copyFrom(testBytes); + assertEquals("copyToStringUtf8 must respect the charset", + testString, byteString.toStringUtf8()); + } + + public void testNewOutput_InitialCapacity() throws IOException { + byte[] bytes = getTestBytes(); + ByteString.Output output = ByteString.newOutput(bytes.length + 100); + output.write(bytes); + ByteString byteString = output.toByteString(); + assertTrue( + "String built from newOutput(int) must contain the expected bytes", + isArrayRange(bytes, byteString.toByteArray(), 0, bytes.length)); + } + + // Test newOutput() using a variety of buffer sizes and a variety of (fixed) + // write sizes + public void testNewOutput_ArrayWrite() throws IOException { + byte[] bytes = getTestBytes(); + int length = bytes.length; + int[] bufferSizes = {128, 256, length / 2, length - 1, length, length + 1, + 2 * length, 3 * length}; + int[] writeSizes = {1, 4, 5, 7, 23, bytes.length}; + + for (int bufferSize : bufferSizes) { + for (int writeSize : writeSizes) { + // Test writing the entire output writeSize bytes at a time. + ByteString.Output output = ByteString.newOutput(bufferSize); + for (int i = 0; i < length; i += writeSize) { + output.write(bytes, i, Math.min(writeSize, length - i)); + } + ByteString byteString = output.toByteString(); + assertTrue("String built from newOutput() must contain the expected bytes", + isArrayRange(bytes, byteString.toByteArray(), 0, bytes.length)); + } + } + } + + // Test newOutput() using a variety of buffer sizes, but writing all the + // characters using write(byte); + public void testNewOutput_WriteChar() throws IOException { + byte[] bytes = getTestBytes(); + int length = bytes.length; + int[] bufferSizes = {0, 1, 128, 256, length / 2, + length - 1, length, length + 1, + 2 * length, 3 * length}; + for (int bufferSize : bufferSizes) { + ByteString.Output output = ByteString.newOutput(bufferSize); + for (byte byteValue : bytes) { + output.write(byteValue); + } + ByteString byteString = output.toByteString(); + assertTrue("String built from newOutput() must contain the expected bytes", + isArrayRange(bytes, byteString.toByteArray(), 0, bytes.length)); + } + } + + // Test newOutput() in which we write the bytes using a variety of methods + // and sizes, and in which we repeatedly call toByteString() in the middle. + public void testNewOutput_Mixed() throws IOException { + Random rng = new Random(1); + byte[] bytes = getTestBytes(); + int length = bytes.length; + int[] bufferSizes = {0, 1, 128, 256, length / 2, + length - 1, length, length + 1, + 2 * length, 3 * length}; + + for (int bufferSize : bufferSizes) { + // Test writing the entire output using a mixture of write sizes and + // methods; + ByteString.Output output = ByteString.newOutput(bufferSize); + int position = 0; + while (position < bytes.length) { + if (rng.nextBoolean()) { + int count = 1 + rng.nextInt(bytes.length - position); + output.write(bytes, position, count); + position += count; + } else { + output.write(bytes[position]); + position++; + } + assertEquals("size() returns the right value", position, output.size()); + assertTrue("newOutput() substring must have correct bytes", + isArrayRange(output.toByteString().toByteArray(), + bytes, 0, position)); + } + ByteString byteString = output.toByteString(); + assertTrue("String built from newOutput() must contain the expected bytes", + isArrayRange(bytes, byteString.toByteArray(), 0, bytes.length)); + } + } + + public void testNewOutputEmpty() throws IOException { + // Make sure newOutput() correctly builds empty byte strings + ByteString byteString = ByteString.newOutput().toByteString(); + assertEquals(ByteString.EMPTY, byteString); + } + + public void testNewOutput_Mutating() throws IOException { + Output os = ByteString.newOutput(5); + os.write(new byte[] {1, 2, 3, 4, 5}); + EvilOutputStream eos = new EvilOutputStream(); + os.writeTo(eos); + byte[] capturedArray = eos.capturedArray; + ByteString byteString = os.toByteString(); + byte[] oldValue = byteString.toByteArray(); + Arrays.fill(capturedArray, (byte) 0); + byte[] newValue = byteString.toByteArray(); + assertTrue("Output must not provide access to the underlying byte array", + Arrays.equals(oldValue, newValue)); + } + + public void testNewCodedBuilder() throws IOException { + byte[] bytes = getTestBytes(); + ByteString.CodedBuilder builder = ByteString.newCodedBuilder(bytes.length); + builder.getCodedOutput().writeRawBytes(bytes); + ByteString byteString = builder.build(); + assertTrue("String built from newCodedBuilder() must contain the expected bytes", + isArrayRange(bytes, byteString.toByteArray(), 0, bytes.length)); + } + + public void testSubstringParity() { + byte[] bigBytes = getTestBytes(2048 * 1024, 113344L); + int start = 512 * 1024 - 3333; + int end = 512 * 1024 + 7777; + ByteString concreteSubstring = ByteString.copyFrom(bigBytes).substring(start, end); + boolean ok = true; + for (int i = start; ok && i < end; ++i) { + ok = (bigBytes[i] == concreteSubstring.byteAt(i - start)); + } + assertTrue("Concrete substring didn't capture the right bytes", ok); + + ByteString literalString = ByteString.copyFrom(bigBytes, start, end - start); + assertTrue("Substring must be equal to literal string", + concreteSubstring.equals(literalString)); + assertEquals("Substring must have same hashcode as literal string", + literalString.hashCode(), concreteSubstring.hashCode()); + } + + public void testCompositeSubstring() { + byte[] referenceBytes = getTestBytes(77748, 113344L); + + List pieces = makeConcretePieces(referenceBytes); + ByteString listString = ByteString.copyFrom(pieces); + + int from = 1000; + int to = 40000; + ByteString compositeSubstring = listString.substring(from, to); + byte[] substringBytes = compositeSubstring.toByteArray(); + boolean stillEqual = true; + for (int i = 0; stillEqual && i < to - from; ++i) { + stillEqual = referenceBytes[from + i] == substringBytes[i]; + } + assertTrue("Substring must return correct bytes", stillEqual); + + stillEqual = true; + for (int i = 0; stillEqual && i < to - from; ++i) { + stillEqual = referenceBytes[from + i] == compositeSubstring.byteAt(i); + } + assertTrue("Substring must support byteAt() correctly", stillEqual); + + ByteString literalSubstring = ByteString.copyFrom(referenceBytes, from, to - from); + assertTrue("Composite substring must equal a literal substring over the same bytes", + compositeSubstring.equals(literalSubstring)); + assertTrue("Literal substring must equal a composite substring over the same bytes", + literalSubstring.equals(compositeSubstring)); + + assertEquals("We must get the same hashcodes for composite and literal substrings", + literalSubstring.hashCode(), compositeSubstring.hashCode()); + + assertFalse("We can't be equal to a proper substring", + compositeSubstring.equals(literalSubstring.substring(0, literalSubstring.size() - 1))); + } + + public void testCopyFromList() { + byte[] referenceBytes = getTestBytes(77748, 113344L); + ByteString literalString = ByteString.copyFrom(referenceBytes); + + List pieces = makeConcretePieces(referenceBytes); + ByteString listString = ByteString.copyFrom(pieces); + + assertTrue("Composite string must be equal to literal string", + listString.equals(literalString)); + assertEquals("Composite string must have same hashcode as literal string", + literalString.hashCode(), listString.hashCode()); + } + + public void testConcat() { + byte[] referenceBytes = getTestBytes(77748, 113344L); + ByteString literalString = ByteString.copyFrom(referenceBytes); + + List pieces = makeConcretePieces(referenceBytes); + + Iterator iter = pieces.iterator(); + ByteString concatenatedString = iter.next(); + while (iter.hasNext()) { + concatenatedString = concatenatedString.concat(iter.next()); + } + + assertTrue("Concatenated string must be equal to literal string", + concatenatedString.equals(literalString)); + assertEquals("Concatenated string must have same hashcode as literal string", + literalString.hashCode(), concatenatedString.hashCode()); + } + + /** + * Test the Rope implementation can deal with Empty nodes, even though we + * guard against them. See also {@link LiteralByteStringTest#testConcat_empty()}. + */ + public void testConcat_empty() { + byte[] referenceBytes = getTestBytes(7748, 113344L); + ByteString literalString = ByteString.copyFrom(referenceBytes); + + ByteString duo = RopeByteString.newInstanceForTest(literalString, literalString); + ByteString temp = RopeByteString.newInstanceForTest( + RopeByteString.newInstanceForTest(literalString, ByteString.EMPTY), + RopeByteString.newInstanceForTest(ByteString.EMPTY, literalString)); + ByteString quintet = RopeByteString.newInstanceForTest(temp, ByteString.EMPTY); + + assertTrue("String with concatenated nulls must equal simple concatenate", + duo.equals(quintet)); + assertEquals("String with concatenated nulls have same hashcode as simple concatenate", + duo.hashCode(), quintet.hashCode()); + + ByteString.ByteIterator duoIter = duo.iterator(); + ByteString.ByteIterator quintetIter = quintet.iterator(); + boolean stillEqual = true; + while (stillEqual && quintetIter.hasNext()) { + stillEqual = (duoIter.nextByte() == quintetIter.nextByte()); + } + assertTrue("We must get the same characters by iterating", stillEqual); + assertFalse("Iterator must be exhausted", duoIter.hasNext()); + try { + duoIter.nextByte(); + fail("Should have thrown an exception."); + } catch (NoSuchElementException e) { + // This is success + } + try { + quintetIter.nextByte(); + fail("Should have thrown an exception."); + } catch (NoSuchElementException e) { + // This is success + } + + // Test that even if we force empty strings in as rope leaves in this + // configuration, we always get a (possibly Bounded) LiteralByteString + // for a length 1 substring. + // + // It is possible, using the testing factory method to create deeply nested + // trees of empty leaves, to make a string that will fail this test. + for (int i = 1; i < duo.size(); ++i) { + assertTrue("Substrings of size() < 2 must not be RopeByteStrings", + duo.substring(i - 1, i) instanceof LiteralByteString); + } + for (int i = 1; i < quintet.size(); ++i) { + assertTrue("Substrings of size() < 2 must not be RopeByteStrings", + quintet.substring(i - 1, i) instanceof LiteralByteString); + } + } + + public void testStartsWith() { + byte[] bytes = getTestBytes(1000, 1234L); + ByteString string = ByteString.copyFrom(bytes); + ByteString prefix = ByteString.copyFrom(bytes, 0, 500); + ByteString suffix = ByteString.copyFrom(bytes, 400, 600); + assertTrue(string.startsWith(ByteString.EMPTY)); + assertTrue(string.startsWith(string)); + assertTrue(string.startsWith(prefix)); + assertFalse(string.startsWith(suffix)); + assertFalse(prefix.startsWith(suffix)); + assertFalse(suffix.startsWith(prefix)); + assertFalse(ByteString.EMPTY.startsWith(prefix)); + assertTrue(ByteString.EMPTY.startsWith(ByteString.EMPTY)); + } + + static List makeConcretePieces(byte[] referenceBytes) { + List pieces = new ArrayList(); + // Starting length should be small enough that we'll do some concatenating by + // copying if we just concatenate all these pieces together. + for (int start = 0, length = 16; start < referenceBytes.length; start += length) { + length = (length << 1) - 1; + if (start + length > referenceBytes.length) { + length = referenceBytes.length - start; + } + pieces.add(ByteString.copyFrom(referenceBytes, start, length)); + } + return pieces; + } +} diff --git a/cpp/thirdparty/protobuf-2.3.0/java/src/test/java/com/google/protobuf/CodedInputStreamTest.java b/cpp/thirdparty/protobuf-2.5.0/java/src/test/java/com/google/protobuf/CodedInputStreamTest.java similarity index 95% rename from cpp/thirdparty/protobuf-2.3.0/java/src/test/java/com/google/protobuf/CodedInputStreamTest.java rename to cpp/thirdparty/protobuf-2.5.0/java/src/test/java/com/google/protobuf/CodedInputStreamTest.java index 6acd32238..83f7f8da5 100644 --- a/cpp/thirdparty/protobuf-2.3.0/java/src/test/java/com/google/protobuf/CodedInputStreamTest.java +++ b/cpp/thirdparty/protobuf-2.5.0/java/src/test/java/com/google/protobuf/CodedInputStreamTest.java @@ -325,6 +325,27 @@ public class CodedInputStreamTest extends TestCase { assertEquals(2, input.readRawByte()); } + /** + * Test that a bug in skipRawBytes() has been fixed: if the skip skips + * past the end of a buffer with a limit that has been set past the end of + * that buffer, this should not break things. + */ + public void testSkipRawBytesPastEndOfBufferWithLimit() throws Exception { + byte[] rawBytes = new byte[] { 1, 2, 3, 4, 5 }; + CodedInputStream input = CodedInputStream.newInstance( + new SmallBlockInputStream(rawBytes, 3)); + + int limit = input.pushLimit(4); + // In order to expose the bug we need to read at least one byte to prime the + // buffer inside the CodedInputStream. + assertEquals(1, input.readRawByte()); + // Skip to the end of the limit. + input.skipRawBytes(3); + assertTrue(input.isAtEnd()); + input.popLimit(limit); + assertEquals(5, input.readRawByte()); + } + public void testReadHugeBlob() throws Exception { // Allocate and initialize a 1MB blob. byte[] blob = new byte[1 << 20]; diff --git a/cpp/thirdparty/protobuf-2.3.0/java/src/test/java/com/google/protobuf/CodedOutputStreamTest.java b/cpp/thirdparty/protobuf-2.5.0/java/src/test/java/com/google/protobuf/CodedOutputStreamTest.java similarity index 94% rename from cpp/thirdparty/protobuf-2.3.0/java/src/test/java/com/google/protobuf/CodedOutputStreamTest.java rename to cpp/thirdparty/protobuf-2.5.0/java/src/test/java/com/google/protobuf/CodedOutputStreamTest.java index c42b485cc..862550294 100644 --- a/cpp/thirdparty/protobuf-2.3.0/java/src/test/java/com/google/protobuf/CodedOutputStreamTest.java +++ b/cpp/thirdparty/protobuf-2.5.0/java/src/test/java/com/google/protobuf/CodedOutputStreamTest.java @@ -30,14 +30,15 @@ package com.google.protobuf; +import protobuf_unittest.UnittestProto.SparseEnumMessage; import protobuf_unittest.UnittestProto.TestAllTypes; import protobuf_unittest.UnittestProto.TestPackedTypes; +import protobuf_unittest.UnittestProto.TestSparseEnum; import junit.framework.TestCase; import java.io.ByteArrayOutputStream; import java.util.ArrayList; -import java.util.Arrays; import java.util.List; /** @@ -301,4 +302,16 @@ public class CodedOutputStreamTest extends TestCase { assertEqualBytes(TestUtil.getGoldenPackedFieldsMessage().toByteArray(), rawBytes); } + + /** Test writing a message containing a negative enum value. This used to + * fail because the size was not properly computed as a sign-extended varint. + */ + public void testWriteMessageWithNegativeEnumValue() throws Exception { + SparseEnumMessage message = SparseEnumMessage.newBuilder() + .setSparseEnum(TestSparseEnum.SPARSE_E) .build(); + assertTrue(message.getSparseEnum().getNumber() < 0); + byte[] rawBytes = message.toByteArray(); + SparseEnumMessage message2 = SparseEnumMessage.parseFrom(rawBytes); + assertEquals(TestSparseEnum.SPARSE_E, message2.getSparseEnum()); + } } diff --git a/cpp/thirdparty/protobuf-2.5.0/java/src/test/java/com/google/protobuf/DeprecatedFieldTest.java b/cpp/thirdparty/protobuf-2.5.0/java/src/test/java/com/google/protobuf/DeprecatedFieldTest.java new file mode 100644 index 000000000..1f8bb445b --- /dev/null +++ b/cpp/thirdparty/protobuf-2.5.0/java/src/test/java/com/google/protobuf/DeprecatedFieldTest.java @@ -0,0 +1,80 @@ +// Protocol Buffers - Google's data interchange format +// Copyright 2008 Google Inc. All rights reserved. +// http://code.google.com/p/protobuf/ +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +package com.google.protobuf; + +import protobuf_unittest.UnittestProto.TestDeprecatedFields; + +import junit.framework.TestCase; + +import java.lang.reflect.AnnotatedElement; +import java.lang.reflect.Method; +/** + * Test field deprecation + * + * @author birdo@google.com (Roberto Scaramuzzi) + */ +public class DeprecatedFieldTest extends TestCase { + private String[] deprecatedGetterNames = { + "hasDeprecatedInt32", + "getDeprecatedInt32"}; + + private String[] deprecatedBuilderGetterNames = { + "hasDeprecatedInt32", + "getDeprecatedInt32", + "clearDeprecatedInt32"}; + + private String[] deprecatedBuilderSetterNames = { + "setDeprecatedInt32"}; + + public void testDeprecatedField() throws Exception { + Class deprecatedFields = TestDeprecatedFields.class; + Class deprecatedFieldsBuilder = TestDeprecatedFields.Builder.class; + for (String name : deprecatedGetterNames) { + Method method = deprecatedFields.getMethod(name); + assertTrue("Method " + name + " should be deprecated", + isDeprecated(method)); + } + for (String name : deprecatedBuilderGetterNames) { + Method method = deprecatedFieldsBuilder.getMethod(name); + assertTrue("Method " + name + " should be deprecated", + isDeprecated(method)); + } + for (String name : deprecatedBuilderSetterNames) { + Method method = deprecatedFieldsBuilder.getMethod(name, int.class); + assertTrue("Method " + name + " should be deprecated", + isDeprecated(method)); + } + } + + private boolean isDeprecated(AnnotatedElement annotated) { + return annotated.isAnnotationPresent(Deprecated.class); + } +} diff --git a/cpp/thirdparty/protobuf-2.3.0/java/src/test/java/com/google/protobuf/DescriptorsTest.java b/cpp/thirdparty/protobuf-2.5.0/java/src/test/java/com/google/protobuf/DescriptorsTest.java similarity index 72% rename from cpp/thirdparty/protobuf-2.3.0/java/src/test/java/com/google/protobuf/DescriptorsTest.java rename to cpp/thirdparty/protobuf-2.5.0/java/src/test/java/com/google/protobuf/DescriptorsTest.java index f41d070e6..9c3109191 100644 --- a/cpp/thirdparty/protobuf-2.3.0/java/src/test/java/com/google/protobuf/DescriptorsTest.java +++ b/cpp/thirdparty/protobuf-2.5.0/java/src/test/java/com/google/protobuf/DescriptorsTest.java @@ -31,6 +31,8 @@ package com.google.protobuf; import com.google.protobuf.DescriptorProtos.DescriptorProto; +import com.google.protobuf.DescriptorProtos.EnumDescriptorProto; +import com.google.protobuf.DescriptorProtos.EnumValueDescriptorProto; import com.google.protobuf.DescriptorProtos.FieldDescriptorProto; import com.google.protobuf.DescriptorProtos.FileDescriptorProto; import com.google.protobuf.Descriptors.DescriptorValidationException; @@ -60,6 +62,7 @@ import junit.framework.TestCase; import java.util.Arrays; import java.util.Collections; +import java.util.List; /** * Unit test for {@link Descriptors}. @@ -71,6 +74,7 @@ public class DescriptorsTest extends TestCase { // Regression test for bug where referencing a FieldDescriptor.Type value // before a FieldDescriptorProto.Type value would yield a // ExceptionInInitializerError. + @SuppressWarnings("unused") private static final Object STATIC_INIT_TEST = FieldDescriptor.Type.BOOL; public void testFieldTypeEnumMapping() throws Exception { @@ -425,7 +429,7 @@ public class DescriptorsTest extends TestCase { UnittestEnormousDescriptor.getDescriptor() .toProto().getSerializedSize() > 65536); } - + /** * Tests that the DescriptorValidationException works as intended. */ @@ -444,7 +448,7 @@ public class DescriptorsTest extends TestCase { .build()) .build(); try { - Descriptors.FileDescriptor.buildFrom(fileDescriptorProto, + Descriptors.FileDescriptor.buildFrom(fileDescriptorProto, new FileDescriptor[0]); fail("DescriptorValidationException expected"); } catch (DescriptorValidationException e) { @@ -456,4 +460,189 @@ public class DescriptorsTest extends TestCase { assertTrue(e.getCause().getMessage().indexOf("invalid") != -1); } } + + /** + * Tests the translate/crosslink for an example where a message field's name + * and type name are the same. + */ + public void testDescriptorComplexCrosslink() throws Exception { + FileDescriptorProto fileDescriptorProto = FileDescriptorProto.newBuilder() + .setName("foo.proto") + .addMessageType(DescriptorProto.newBuilder() + .setName("Foo") + .addField(FieldDescriptorProto.newBuilder() + .setLabel(FieldDescriptorProto.Label.LABEL_OPTIONAL) + .setType(FieldDescriptorProto.Type.TYPE_INT32) + .setName("foo") + .setNumber(1) + .build()) + .build()) + .addMessageType(DescriptorProto.newBuilder() + .setName("Bar") + .addField(FieldDescriptorProto.newBuilder() + .setLabel(FieldDescriptorProto.Label.LABEL_OPTIONAL) + .setTypeName("Foo") + .setName("Foo") + .setNumber(1) + .build()) + .build()) + .build(); + // translate and crosslink + FileDescriptor file = + Descriptors.FileDescriptor.buildFrom(fileDescriptorProto, + new FileDescriptor[0]); + // verify resulting descriptors + assertNotNull(file); + List msglist = file.getMessageTypes(); + assertNotNull(msglist); + assertTrue(msglist.size() == 2); + boolean barFound = false; + for (Descriptor desc : msglist) { + if (desc.getName().equals("Bar")) { + barFound = true; + assertNotNull(desc.getFields()); + List fieldlist = desc.getFields(); + assertNotNull(fieldlist); + assertTrue(fieldlist.size() == 1); + assertTrue(fieldlist.get(0).getType() == FieldDescriptor.Type.MESSAGE); + assertTrue(fieldlist.get(0).getMessageType().getName().equals("Foo")); + } + } + assertTrue(barFound); + } + + public void testInvalidPublicDependency() throws Exception { + FileDescriptorProto fooProto = FileDescriptorProto.newBuilder() + .setName("foo.proto") .build(); + FileDescriptorProto barProto = FileDescriptorProto.newBuilder() + .setName("boo.proto") + .addDependency("foo.proto") + .addPublicDependency(1) // Error, should be 0. + .build(); + FileDescriptor fooFile = Descriptors.FileDescriptor.buildFrom(fooProto, + new FileDescriptor[0]); + try { + Descriptors.FileDescriptor.buildFrom(barProto, + new FileDescriptor[] {fooFile}); + fail("DescriptorValidationException expected"); + } catch (DescriptorValidationException e) { + assertTrue( + e.getMessage().indexOf("Invalid public dependency index.") != -1); + } + } + + public void testHiddenDependency() throws Exception { + FileDescriptorProto barProto = FileDescriptorProto.newBuilder() + .setName("bar.proto") + .addMessageType(DescriptorProto.newBuilder().setName("Bar")) + .build(); + FileDescriptorProto forwardProto = FileDescriptorProto.newBuilder() + .setName("forward.proto") + .addDependency("bar.proto") + .build(); + FileDescriptorProto fooProto = FileDescriptorProto.newBuilder() + .setName("foo.proto") + .addDependency("forward.proto") + .addMessageType(DescriptorProto.newBuilder() + .setName("Foo") + .addField(FieldDescriptorProto.newBuilder() + .setLabel(FieldDescriptorProto.Label.LABEL_OPTIONAL) + .setTypeName("Bar") + .setName("bar") + .setNumber(1))) + .build(); + FileDescriptor barFile = Descriptors.FileDescriptor.buildFrom( + barProto, new FileDescriptor[0]); + FileDescriptor forwardFile = Descriptors.FileDescriptor.buildFrom( + forwardProto, new FileDescriptor[] {barFile}); + + try { + Descriptors.FileDescriptor.buildFrom( + fooProto, new FileDescriptor[] {forwardFile}); + fail("DescriptorValidationException expected"); + } catch (DescriptorValidationException e) { + assertTrue(e.getMessage().indexOf("Bar") != -1); + assertTrue(e.getMessage().indexOf("is not defined") != -1); + } + } + + public void testPublicDependency() throws Exception { + FileDescriptorProto barProto = FileDescriptorProto.newBuilder() + .setName("bar.proto") + .addMessageType(DescriptorProto.newBuilder().setName("Bar")) + .build(); + FileDescriptorProto forwardProto = FileDescriptorProto.newBuilder() + .setName("forward.proto") + .addDependency("bar.proto") + .addPublicDependency(0) + .build(); + FileDescriptorProto fooProto = FileDescriptorProto.newBuilder() + .setName("foo.proto") + .addDependency("forward.proto") + .addMessageType(DescriptorProto.newBuilder() + .setName("Foo") + .addField(FieldDescriptorProto.newBuilder() + .setLabel(FieldDescriptorProto.Label.LABEL_OPTIONAL) + .setTypeName("Bar") + .setName("bar") + .setNumber(1))) + .build(); + FileDescriptor barFile = Descriptors.FileDescriptor.buildFrom( + barProto, new FileDescriptor[0]); + FileDescriptor forwardFile = Descriptors.FileDescriptor.buildFrom( + forwardProto, new FileDescriptor[]{barFile}); + Descriptors.FileDescriptor.buildFrom( + fooProto, new FileDescriptor[] {forwardFile}); + } + + /** + * Tests the translate/crosslink for an example with a more complex namespace + * referencing. + */ + public void testComplexNamespacePublicDependency() throws Exception { + FileDescriptorProto fooProto = FileDescriptorProto.newBuilder() + .setName("bar.proto") + .setPackage("a.b.c.d.bar.shared") + .addEnumType(EnumDescriptorProto.newBuilder() + .setName("MyEnum") + .addValue(EnumValueDescriptorProto.newBuilder() + .setName("BLAH") + .setNumber(1))) + .build(); + FileDescriptorProto barProto = FileDescriptorProto.newBuilder() + .setName("foo.proto") + .addDependency("bar.proto") + .setPackage("a.b.c.d.foo.shared") + .addMessageType(DescriptorProto.newBuilder() + .setName("MyMessage") + .addField(FieldDescriptorProto.newBuilder() + .setLabel(FieldDescriptorProto.Label.LABEL_REPEATED) + .setTypeName("bar.shared.MyEnum") + .setName("MyField") + .setNumber(1))) + .build(); + // translate and crosslink + FileDescriptor fooFile = Descriptors.FileDescriptor.buildFrom( + fooProto, new FileDescriptor[0]); + FileDescriptor barFile = Descriptors.FileDescriptor.buildFrom( + barProto, new FileDescriptor[]{fooFile}); + // verify resulting descriptors + assertNotNull(barFile); + List msglist = barFile.getMessageTypes(); + assertNotNull(msglist); + assertTrue(msglist.size() == 1); + Descriptor desc = msglist.get(0); + if (desc.getName().equals("MyMessage")) { + assertNotNull(desc.getFields()); + List fieldlist = desc.getFields(); + assertNotNull(fieldlist); + assertTrue(fieldlist.size() == 1); + FieldDescriptor field = fieldlist.get(0); + assertTrue(field.getType() == FieldDescriptor.Type.ENUM); + assertTrue(field.getEnumType().getName().equals("MyEnum")); + assertTrue(field.getEnumType().getFile().getName().equals("bar.proto")); + assertTrue(field.getEnumType().getFile().getPackage().equals( + "a.b.c.d.bar.shared")); + } + } } diff --git a/cpp/thirdparty/protobuf-2.3.0/java/src/test/java/com/google/protobuf/DynamicMessageTest.java b/cpp/thirdparty/protobuf-2.5.0/java/src/test/java/com/google/protobuf/DynamicMessageTest.java similarity index 77% rename from cpp/thirdparty/protobuf-2.3.0/java/src/test/java/com/google/protobuf/DynamicMessageTest.java rename to cpp/thirdparty/protobuf-2.5.0/java/src/test/java/com/google/protobuf/DynamicMessageTest.java index aabccda2b..990e8ca6f 100644 --- a/cpp/thirdparty/protobuf-2.3.0/java/src/test/java/com/google/protobuf/DynamicMessageTest.java +++ b/cpp/thirdparty/protobuf-2.5.0/java/src/test/java/com/google/protobuf/DynamicMessageTest.java @@ -30,8 +30,9 @@ package com.google.protobuf; -import protobuf_unittest.UnittestProto.TestAllTypes; import protobuf_unittest.UnittestProto.TestAllExtensions; +import protobuf_unittest.UnittestProto.TestAllTypes; +import protobuf_unittest.UnittestProto.TestEmptyMessage; import protobuf_unittest.UnittestProto.TestPackedTypes; import junit.framework.TestCase; @@ -61,28 +62,44 @@ public class DynamicMessageTest extends TestCase { reflectionTester.assertAllFieldsSetViaReflection(message); } - public void testDoubleBuildError() throws Exception { + public void testSettersAfterBuild() throws Exception { Message.Builder builder = DynamicMessage.newBuilder(TestAllTypes.getDescriptor()); + Message firstMessage = builder.build(); + // double build() builder.build(); - try { - builder.build(); - fail("Should have thrown exception."); - } catch (IllegalStateException e) { - // Success. - } + // clear() after build() + builder.clear(); + // setters after build() + reflectionTester.setAllFieldsViaReflection(builder); + Message message = builder.build(); + reflectionTester.assertAllFieldsSetViaReflection(message); + // repeated setters after build() + reflectionTester.modifyRepeatedFieldsViaReflection(builder); + message = builder.build(); + reflectionTester.assertRepeatedFieldsModifiedViaReflection(message); + // firstMessage shouldn't have been modified. + reflectionTester.assertClearViaReflection(firstMessage); } - public void testClearAfterBuildError() throws Exception { + public void testUnknownFields() throws Exception { Message.Builder builder = - DynamicMessage.newBuilder(TestAllTypes.getDescriptor()); - builder.build(); - try { - builder.clear(); - fail("Should have thrown exception."); - } catch (IllegalStateException e) { - // Success. - } + DynamicMessage.newBuilder(TestEmptyMessage.getDescriptor()); + builder.setUnknownFields(UnknownFieldSet.newBuilder() + .addField(1, UnknownFieldSet.Field.newBuilder().addVarint(1).build()) + .addField(2, UnknownFieldSet.Field.newBuilder().addFixed32(1).build()) + .build()); + Message message = builder.build(); + assertEquals(2, message.getUnknownFields().asMap().size()); + // clone() with unknown fields + Message.Builder newBuilder = builder.clone(); + assertEquals(2, newBuilder.getUnknownFields().asMap().size()); + // clear() with unknown fields + newBuilder.clear(); + assertTrue(newBuilder.getUnknownFields().asMap().isEmpty()); + // serialize/parse with unknown fields + newBuilder.mergeFrom(message.toByteString()); + assertEquals(2, newBuilder.getUnknownFields().asMap().size()); } public void testDynamicMessageSettersRejectNull() throws Exception { @@ -167,6 +184,23 @@ public class DynamicMessageTest extends TestCase { Message message2 = DynamicMessage.parseFrom(TestAllTypes.getDescriptor(), rawBytes); reflectionTester.assertAllFieldsSetViaReflection(message2); + + // Test Parser interface. + Message message3 = message2.getParserForType().parseFrom(rawBytes); + reflectionTester.assertAllFieldsSetViaReflection(message3); + } + + public void testDynamicMessageExtensionParsing() throws Exception { + ByteString rawBytes = TestUtil.getAllExtensionsSet().toByteString(); + Message message = DynamicMessage.parseFrom( + TestAllExtensions.getDescriptor(), rawBytes, + TestUtil.getExtensionRegistry()); + extensionsReflectionTester.assertAllFieldsSetViaReflection(message); + + // Test Parser interface. + Message message2 = message.getParserForType().parseFrom( + rawBytes, TestUtil.getExtensionRegistry()); + extensionsReflectionTester.assertAllFieldsSetViaReflection(message2); } public void testDynamicMessagePackedSerialization() throws Exception { @@ -194,6 +228,10 @@ public class DynamicMessageTest extends TestCase { Message message2 = DynamicMessage.parseFrom(TestPackedTypes.getDescriptor(), rawBytes); packedReflectionTester.assertPackedFieldsSetViaReflection(message2); + + // Test Parser interface. + Message message3 = message2.getParserForType().parseFrom(rawBytes); + packedReflectionTester.assertPackedFieldsSetViaReflection(message3); } public void testDynamicMessageCopy() throws Exception { diff --git a/cpp/thirdparty/protobuf-2.5.0/java/src/test/java/com/google/protobuf/ForceFieldBuildersPreRun.java b/cpp/thirdparty/protobuf-2.5.0/java/src/test/java/com/google/protobuf/ForceFieldBuildersPreRun.java new file mode 100644 index 000000000..8b78893dd --- /dev/null +++ b/cpp/thirdparty/protobuf-2.5.0/java/src/test/java/com/google/protobuf/ForceFieldBuildersPreRun.java @@ -0,0 +1,48 @@ +// Protocol Buffers - Google's data interchange format +// Copyright 2008 Google Inc. All rights reserved. +// http://code.google.com/p/protobuf/ +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +package com.google.protobuf; + +/** + * A prerun for a test suite that allows running the full protocol buffer + * tests in a mode that disables the optimization for not using + * {@link RepeatedFieldBuilder} and {@link SingleFieldBuilder} until they are + * requested. This allows us to run all the tests through both code paths + * and ensures that both code paths produce identical results. + * + * @author jonp@google.com (Jon Perlow) + */ +public class ForceFieldBuildersPreRun implements Runnable { + + //@Override (Java 1.6 override semantics, but we must support 1.5) + public void run() { + GeneratedMessage.enableAlwaysUseFieldBuildersForTesting(); + } +} diff --git a/cpp/thirdparty/protobuf-2.3.0/java/src/test/java/com/google/protobuf/GeneratedMessageTest.java b/cpp/thirdparty/protobuf-2.5.0/java/src/test/java/com/google/protobuf/GeneratedMessageTest.java similarity index 53% rename from cpp/thirdparty/protobuf-2.3.0/java/src/test/java/com/google/protobuf/GeneratedMessageTest.java rename to cpp/thirdparty/protobuf-2.5.0/java/src/test/java/com/google/protobuf/GeneratedMessageTest.java index 73c71f311..bf9db75b4 100644 --- a/cpp/thirdparty/protobuf-2.3.0/java/src/test/java/com/google/protobuf/GeneratedMessageTest.java +++ b/cpp/thirdparty/protobuf-2.5.0/java/src/test/java/com/google/protobuf/GeneratedMessageTest.java @@ -30,26 +30,46 @@ package com.google.protobuf; +import com.google.protobuf.Descriptors.Descriptor; +import com.google.protobuf.Descriptors.FieldDescriptor; +import com.google.protobuf.UnittestLite.TestAllExtensionsLite; +import com.google.protobuf.test.UnittestImport; +import protobuf_unittest.EnumWithNoOuter; +import protobuf_unittest.MessageWithNoOuter; +import protobuf_unittest.MultipleFilesTestProto; +import protobuf_unittest.NestedExtension.MyNestedExtension; +import protobuf_unittest.NestedExtensionLite.MyNestedExtensionLite; +import protobuf_unittest.NonNestedExtension; +import protobuf_unittest.NonNestedExtension.MessageToBeExtended; +import protobuf_unittest.NonNestedExtension.MyNonNestedExtension; +import protobuf_unittest.NonNestedExtensionLite; +import protobuf_unittest.NonNestedExtensionLite.MessageLiteToBeExtended; +import protobuf_unittest.NonNestedExtensionLite.MyNonNestedExtensionLite; +import protobuf_unittest.ServiceWithNoOuter; import protobuf_unittest.UnittestOptimizeFor.TestOptimizedForSize; import protobuf_unittest.UnittestOptimizeFor.TestOptionalOptimizedForSize; import protobuf_unittest.UnittestOptimizeFor.TestRequiredOptimizedForSize; import protobuf_unittest.UnittestProto; -import protobuf_unittest.UnittestProto.ForeignMessage; import protobuf_unittest.UnittestProto.ForeignEnum; -import protobuf_unittest.UnittestProto.TestAllTypes; +import protobuf_unittest.UnittestProto.ForeignMessage; +import protobuf_unittest.UnittestProto.ForeignMessageOrBuilder; import protobuf_unittest.UnittestProto.TestAllExtensions; +import protobuf_unittest.UnittestProto.TestAllTypes; +import protobuf_unittest.UnittestProto.TestAllTypes.NestedMessage; +import protobuf_unittest.UnittestProto.TestAllTypesOrBuilder; import protobuf_unittest.UnittestProto.TestExtremeDefaultValues; import protobuf_unittest.UnittestProto.TestPackedTypes; import protobuf_unittest.UnittestProto.TestUnpackedTypes; -import protobuf_unittest.MultipleFilesTestProto; -import protobuf_unittest.MessageWithNoOuter; -import protobuf_unittest.EnumWithNoOuter; -import protobuf_unittest.ServiceWithNoOuter; -import com.google.protobuf.UnittestLite; -import com.google.protobuf.UnittestLite.TestAllExtensionsLite; import junit.framework.TestCase; + +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; +import java.io.ObjectInputStream; +import java.io.ObjectOutputStream; import java.util.Arrays; +import java.util.Collections; +import java.util.List; /** * Unit test for generated messages and generated code. See also @@ -68,32 +88,138 @@ public class GeneratedMessageTest extends TestCase { TestAllTypes.newBuilder().getDefaultInstanceForType()); } - public void testAccessors() throws Exception { + public void testMessageOrBuilder() throws Exception { TestAllTypes.Builder builder = TestAllTypes.newBuilder(); TestUtil.setAllFields(builder); TestAllTypes message = builder.build(); TestUtil.assertAllFieldsSet(message); } - public void testDoubleBuildError() throws Exception { + public void testUsingBuilderMultipleTimes() throws Exception { TestAllTypes.Builder builder = TestAllTypes.newBuilder(); - builder.build(); - try { - builder.build(); - fail("Should have thrown exception."); - } catch (IllegalStateException e) { - // Success. - } + // primitive field scalar and repeated + builder.setOptionalSfixed64(100); + builder.addRepeatedInt32(100); + // enum field scalar and repeated + builder.setOptionalImportEnum(UnittestImport.ImportEnum.IMPORT_BAR); + builder.addRepeatedImportEnum(UnittestImport.ImportEnum.IMPORT_BAR); + // proto field scalar and repeated + builder.setOptionalForeignMessage(ForeignMessage.newBuilder().setC(1)); + builder.addRepeatedForeignMessage(ForeignMessage.newBuilder().setC(1)); + + TestAllTypes value1 = builder.build(); + + assertEquals(100, value1.getOptionalSfixed64()); + assertEquals(100, value1.getRepeatedInt32(0)); + assertEquals(UnittestImport.ImportEnum.IMPORT_BAR, + value1.getOptionalImportEnum()); + assertEquals(UnittestImport.ImportEnum.IMPORT_BAR, + value1.getRepeatedImportEnum(0)); + assertEquals(1, value1.getOptionalForeignMessage().getC()); + assertEquals(1, value1.getRepeatedForeignMessage(0).getC()); + + // Make sure that builder didn't update previously created values + builder.setOptionalSfixed64(200); + builder.setRepeatedInt32(0, 200); + builder.setOptionalImportEnum(UnittestImport.ImportEnum.IMPORT_FOO); + builder.setRepeatedImportEnum(0, UnittestImport.ImportEnum.IMPORT_FOO); + builder.setOptionalForeignMessage(ForeignMessage.newBuilder().setC(2)); + builder.setRepeatedForeignMessage(0, ForeignMessage.newBuilder().setC(2)); + + TestAllTypes value2 = builder.build(); + + // Make sure value1 didn't change. + assertEquals(100, value1.getOptionalSfixed64()); + assertEquals(100, value1.getRepeatedInt32(0)); + assertEquals(UnittestImport.ImportEnum.IMPORT_BAR, + value1.getOptionalImportEnum()); + assertEquals(UnittestImport.ImportEnum.IMPORT_BAR, + value1.getRepeatedImportEnum(0)); + assertEquals(1, value1.getOptionalForeignMessage().getC()); + assertEquals(1, value1.getRepeatedForeignMessage(0).getC()); + + // Make sure value2 is correct + assertEquals(200, value2.getOptionalSfixed64()); + assertEquals(200, value2.getRepeatedInt32(0)); + assertEquals(UnittestImport.ImportEnum.IMPORT_FOO, + value2.getOptionalImportEnum()); + assertEquals(UnittestImport.ImportEnum.IMPORT_FOO, + value2.getRepeatedImportEnum(0)); + assertEquals(2, value2.getOptionalForeignMessage().getC()); + assertEquals(2, value2.getRepeatedForeignMessage(0).getC()); } - public void testClearAfterBuildError() throws Exception { + public void testProtosShareRepeatedArraysIfDidntChange() throws Exception { TestAllTypes.Builder builder = TestAllTypes.newBuilder(); - builder.build(); - try { - builder.clear(); - fail("Should have thrown exception."); - } catch (IllegalStateException e) { - // Success. + builder.addRepeatedInt32(100); + builder.addRepeatedImportEnum(UnittestImport.ImportEnum.IMPORT_BAR); + builder.addRepeatedForeignMessage(ForeignMessage.getDefaultInstance()); + + TestAllTypes value1 = builder.build(); + TestAllTypes value2 = value1.toBuilder().build(); + + assertSame(value1.getRepeatedInt32List(), value2.getRepeatedInt32List()); + assertSame(value1.getRepeatedImportEnumList(), + value2.getRepeatedImportEnumList()); + assertSame(value1.getRepeatedForeignMessageList(), + value2.getRepeatedForeignMessageList()); + } + + public void testRepeatedArraysAreImmutable() throws Exception { + TestAllTypes.Builder builder = TestAllTypes.newBuilder(); + builder.addRepeatedInt32(100); + builder.addRepeatedImportEnum(UnittestImport.ImportEnum.IMPORT_BAR); + builder.addRepeatedForeignMessage(ForeignMessage.getDefaultInstance()); + assertIsUnmodifiable(builder.getRepeatedInt32List()); + assertIsUnmodifiable(builder.getRepeatedImportEnumList()); + assertIsUnmodifiable(builder.getRepeatedForeignMessageList()); + assertIsUnmodifiable(builder.getRepeatedFloatList()); + + + TestAllTypes value = builder.build(); + assertIsUnmodifiable(value.getRepeatedInt32List()); + assertIsUnmodifiable(value.getRepeatedImportEnumList()); + assertIsUnmodifiable(value.getRepeatedForeignMessageList()); + assertIsUnmodifiable(value.getRepeatedFloatList()); + } + + public void testParsedMessagesAreImmutable() throws Exception { + TestAllTypes value = TestAllTypes.PARSER.parseFrom( + TestUtil.getAllSet().toByteString()); + assertIsUnmodifiable(value.getRepeatedInt32List()); + assertIsUnmodifiable(value.getRepeatedInt64List()); + assertIsUnmodifiable(value.getRepeatedUint32List()); + assertIsUnmodifiable(value.getRepeatedUint64List()); + assertIsUnmodifiable(value.getRepeatedSint32List()); + assertIsUnmodifiable(value.getRepeatedSint64List()); + assertIsUnmodifiable(value.getRepeatedFixed32List()); + assertIsUnmodifiable(value.getRepeatedFixed64List()); + assertIsUnmodifiable(value.getRepeatedSfixed32List()); + assertIsUnmodifiable(value.getRepeatedSfixed64List()); + assertIsUnmodifiable(value.getRepeatedFloatList()); + assertIsUnmodifiable(value.getRepeatedDoubleList()); + assertIsUnmodifiable(value.getRepeatedBoolList()); + assertIsUnmodifiable(value.getRepeatedStringList()); + assertIsUnmodifiable(value.getRepeatedBytesList()); + assertIsUnmodifiable(value.getRepeatedGroupList()); + assertIsUnmodifiable(value.getRepeatedNestedMessageList()); + assertIsUnmodifiable(value.getRepeatedForeignMessageList()); + assertIsUnmodifiable(value.getRepeatedImportMessageList()); + assertIsUnmodifiable(value.getRepeatedNestedEnumList()); + assertIsUnmodifiable(value.getRepeatedForeignEnumList()); + assertIsUnmodifiable(value.getRepeatedImportEnumList()); + } + + private void assertIsUnmodifiable(List list) { + if (list == Collections.emptyList()) { + // OKAY -- Need to check this b/c EmptyList allows you to call clear. + } else { + try { + list.clear(); + fail("List wasn't immutable"); + } catch (UnsupportedOperationException e) { + // good + } } } @@ -314,11 +440,22 @@ public class GeneratedMessageTest extends TestCase { assertEquals(Float.POSITIVE_INFINITY, message.getInfFloat()); assertEquals(Float.NEGATIVE_INFINITY, message.getNegInfFloat()); assertTrue(Float.isNaN(message.getNanFloat())); + assertEquals("? ? ?? ?? ??? ??/ ??-", message.getCppTrigraph()); + } + + public void testClear() throws Exception { + TestAllTypes.Builder builder = TestAllTypes.newBuilder(); + TestUtil.assertClear(builder); + TestUtil.setAllFields(builder); + builder.clear(); + TestUtil.assertClear(builder); } public void testReflectionGetters() throws Exception { TestAllTypes.Builder builder = TestAllTypes.newBuilder(); TestUtil.setAllFields(builder); + reflectionTester.assertAllFieldsSetViaReflection(builder); + TestAllTypes message = builder.build(); reflectionTester.assertAllFieldsSetViaReflection(message); } @@ -326,6 +463,8 @@ public class GeneratedMessageTest extends TestCase { public void testReflectionSetters() throws Exception { TestAllTypes.Builder builder = TestAllTypes.newBuilder(); reflectionTester.setAllFieldsViaReflection(builder); + TestUtil.assertAllFieldsSet(builder); + TestAllTypes message = builder.build(); TestUtil.assertAllFieldsSet(message); } @@ -339,6 +478,8 @@ public class GeneratedMessageTest extends TestCase { TestAllTypes.Builder builder = TestAllTypes.newBuilder(); reflectionTester.setAllFieldsViaReflection(builder); reflectionTester.modifyRepeatedFieldsViaReflection(builder); + TestUtil.assertRepeatedFieldsModified(builder); + TestAllTypes message = builder.build(); TestUtil.assertRepeatedFieldsModified(message); } @@ -391,7 +532,7 @@ public class GeneratedMessageTest extends TestCase { new TestUtil.ReflectionTester(TestAllExtensions.getDescriptor(), TestUtil.getExtensionRegistry()); - public void testExtensionAccessors() throws Exception { + public void testExtensionMessageOrBuilder() throws Exception { TestAllExtensions.Builder builder = TestAllExtensions.newBuilder(); TestUtil.setAllExtensions(builder); TestAllExtensions message = builder.build(); @@ -414,6 +555,8 @@ public class GeneratedMessageTest extends TestCase { public void testExtensionReflectionGetters() throws Exception { TestAllExtensions.Builder builder = TestAllExtensions.newBuilder(); TestUtil.setAllExtensions(builder); + extensionsReflectionTester.assertAllFieldsSetViaReflection(builder); + TestAllExtensions message = builder.build(); extensionsReflectionTester.assertAllFieldsSetViaReflection(message); } @@ -421,6 +564,8 @@ public class GeneratedMessageTest extends TestCase { public void testExtensionReflectionSetters() throws Exception { TestAllExtensions.Builder builder = TestAllExtensions.newBuilder(); extensionsReflectionTester.setAllFieldsViaReflection(builder); + TestUtil.assertAllExtensionsSet(builder); + TestAllExtensions message = builder.build(); TestUtil.assertAllExtensionsSet(message); } @@ -434,6 +579,8 @@ public class GeneratedMessageTest extends TestCase { TestAllExtensions.Builder builder = TestAllExtensions.newBuilder(); extensionsReflectionTester.setAllFieldsViaReflection(builder); extensionsReflectionTester.modifyRepeatedFieldsViaReflection(builder); + TestUtil.assertRepeatedExtensionsModified(builder); + TestAllExtensions message = builder.build(); TestUtil.assertRepeatedExtensionsModified(message); } @@ -491,9 +638,11 @@ public class GeneratedMessageTest extends TestCase { // lite fields directly since they are implemented exactly the same as // regular fields. - public void testLiteExtensionAccessors() throws Exception { + public void testLiteExtensionMessageOrBuilder() throws Exception { TestAllExtensionsLite.Builder builder = TestAllExtensionsLite.newBuilder(); TestUtil.setAllExtensions(builder); + TestUtil.assertAllExtensionsSet(builder); + TestAllExtensionsLite message = builder.build(); TestUtil.assertAllExtensionsSet(message); } @@ -502,6 +651,8 @@ public class GeneratedMessageTest extends TestCase { TestAllExtensionsLite.Builder builder = TestAllExtensionsLite.newBuilder(); TestUtil.setAllExtensions(builder); TestUtil.modifyRepeatedExtensions(builder); + TestUtil.assertRepeatedExtensionsModified(builder); + TestAllExtensionsLite message = builder.build(); TestUtil.assertRepeatedExtensionsModified(message); } @@ -609,6 +760,7 @@ public class GeneratedMessageTest extends TestCase { TestAllTypes.Builder builder = TestAllTypes.newBuilder(); TestUtil.setAllFields(builder); TestAllTypes message = builder.build(); + TestUtil.assertAllFieldsSet(message); TestUtil.assertAllFieldsSet(message.toBuilder().build()); } @@ -646,4 +798,349 @@ public class GeneratedMessageTest extends TestCase { assertTrue(message.getA() != null); assertTrue(message.getA() == message); } + + public void testSerialize() throws Exception { + ByteArrayOutputStream baos = new ByteArrayOutputStream(); + TestAllTypes.Builder builder = TestAllTypes.newBuilder(); + TestUtil.setAllFields(builder); + TestAllTypes expected = builder.build(); + ObjectOutputStream out = new ObjectOutputStream(baos); + try { + out.writeObject(expected); + } finally { + out.close(); + } + ByteArrayInputStream bais = new ByteArrayInputStream(baos.toByteArray()); + ObjectInputStream in = new ObjectInputStream(bais); + TestAllTypes actual = (TestAllTypes) in.readObject(); + assertEquals(expected, actual); + } + + public void testSerializePartial() throws Exception { + ByteArrayOutputStream baos = new ByteArrayOutputStream(); + TestAllTypes.Builder builder = TestAllTypes.newBuilder(); + TestAllTypes expected = builder.buildPartial(); + ObjectOutputStream out = new ObjectOutputStream(baos); + try { + out.writeObject(expected); + } finally { + out.close(); + } + ByteArrayInputStream bais = new ByteArrayInputStream(baos.toByteArray()); + ObjectInputStream in = new ObjectInputStream(bais); + TestAllTypes actual = (TestAllTypes) in.readObject(); + assertEquals(expected, actual); + } + + public void testEnumValues() { + assertEquals( + TestAllTypes.NestedEnum.BAR.getNumber(), + TestAllTypes.NestedEnum.BAR_VALUE); + assertEquals( + TestAllTypes.NestedEnum.BAZ.getNumber(), + TestAllTypes.NestedEnum.BAZ_VALUE); + assertEquals( + TestAllTypes.NestedEnum.FOO.getNumber(), + TestAllTypes.NestedEnum.FOO_VALUE); + } + + public void testNonNestedExtensionInitialization() { + assertTrue(NonNestedExtension.nonNestedExtension + .getMessageDefaultInstance() instanceof MyNonNestedExtension); + assertEquals("nonNestedExtension", + NonNestedExtension.nonNestedExtension.getDescriptor().getName()); + } + + public void testNestedExtensionInitialization() { + assertTrue(MyNestedExtension.recursiveExtension.getMessageDefaultInstance() + instanceof MessageToBeExtended); + assertEquals("recursiveExtension", + MyNestedExtension.recursiveExtension.getDescriptor().getName()); + } + + public void testNonNestedExtensionLiteInitialization() { + assertTrue(NonNestedExtensionLite.nonNestedExtensionLite + .getMessageDefaultInstance() instanceof MyNonNestedExtensionLite); + } + + public void testNestedExtensionLiteInitialization() { + assertTrue(MyNestedExtensionLite.recursiveExtensionLite + .getMessageDefaultInstance() instanceof MessageLiteToBeExtended); + } + + public void testInvalidations() throws Exception { + GeneratedMessage.enableAlwaysUseFieldBuildersForTesting(); + TestAllTypes.NestedMessage nestedMessage1 = + TestAllTypes.NestedMessage.newBuilder().build(); + TestAllTypes.NestedMessage nestedMessage2 = + TestAllTypes.NestedMessage.newBuilder().build(); + + // Set all three flavors (enum, primitive, message and singular/repeated) + // and verify no invalidations fired + TestUtil.MockBuilderParent mockParent = new TestUtil.MockBuilderParent(); + + TestAllTypes.Builder builder = (TestAllTypes.Builder) + ((GeneratedMessage) TestAllTypes.getDefaultInstance()). + newBuilderForType(mockParent); + builder.setOptionalInt32(1); + builder.setOptionalNestedEnum(TestAllTypes.NestedEnum.BAR); + builder.setOptionalNestedMessage(nestedMessage1); + builder.addRepeatedInt32(1); + builder.addRepeatedNestedEnum(TestAllTypes.NestedEnum.BAR); + builder.addRepeatedNestedMessage(nestedMessage1); + assertEquals(0, mockParent.getInvalidationCount()); + + // Now tell it we want changes and make sure it's only fired once + // And do this for each flavor + + // primitive single + builder.buildPartial(); + builder.setOptionalInt32(2); + builder.setOptionalInt32(3); + assertEquals(1, mockParent.getInvalidationCount()); + + // enum single + builder.buildPartial(); + builder.setOptionalNestedEnum(TestAllTypes.NestedEnum.BAZ); + builder.setOptionalNestedEnum(TestAllTypes.NestedEnum.BAR); + assertEquals(2, mockParent.getInvalidationCount()); + + // message single + builder.buildPartial(); + builder.setOptionalNestedMessage(nestedMessage2); + builder.setOptionalNestedMessage(nestedMessage1); + assertEquals(3, mockParent.getInvalidationCount()); + + // primitive repeated + builder.buildPartial(); + builder.addRepeatedInt32(2); + builder.addRepeatedInt32(3); + assertEquals(4, mockParent.getInvalidationCount()); + + // enum repeated + builder.buildPartial(); + builder.addRepeatedNestedEnum(TestAllTypes.NestedEnum.BAZ); + builder.addRepeatedNestedEnum(TestAllTypes.NestedEnum.BAZ); + assertEquals(5, mockParent.getInvalidationCount()); + + // message repeated + builder.buildPartial(); + builder.addRepeatedNestedMessage(nestedMessage2); + builder.addRepeatedNestedMessage(nestedMessage1); + assertEquals(6, mockParent.getInvalidationCount()); + + } + + public void testInvalidations_Extensions() throws Exception { + TestUtil.MockBuilderParent mockParent = new TestUtil.MockBuilderParent(); + + TestAllExtensions.Builder builder = (TestAllExtensions.Builder) + ((GeneratedMessage) TestAllExtensions.getDefaultInstance()). + newBuilderForType(mockParent); + + builder.addExtension(UnittestProto.repeatedInt32Extension, 1); + builder.setExtension(UnittestProto.repeatedInt32Extension, 0, 2); + builder.clearExtension(UnittestProto.repeatedInt32Extension); + assertEquals(0, mockParent.getInvalidationCount()); + + // Now tell it we want changes and make sure it's only fired once + builder.buildPartial(); + builder.addExtension(UnittestProto.repeatedInt32Extension, 2); + builder.addExtension(UnittestProto.repeatedInt32Extension, 3); + assertEquals(1, mockParent.getInvalidationCount()); + + builder.buildPartial(); + builder.setExtension(UnittestProto.repeatedInt32Extension, 0, 4); + builder.setExtension(UnittestProto.repeatedInt32Extension, 1, 5); + assertEquals(2, mockParent.getInvalidationCount()); + + builder.buildPartial(); + builder.clearExtension(UnittestProto.repeatedInt32Extension); + builder.clearExtension(UnittestProto.repeatedInt32Extension); + assertEquals(3, mockParent.getInvalidationCount()); + } + + public void testBaseMessageOrBuilder() { + // Mostly just makes sure the base interface exists and has some methods. + TestAllTypes.Builder builder = TestAllTypes.newBuilder(); + TestAllTypes message = builder.buildPartial(); + TestAllTypesOrBuilder builderAsInterface = (TestAllTypesOrBuilder) builder; + TestAllTypesOrBuilder messageAsInterface = (TestAllTypesOrBuilder) message; + + assertEquals( + messageAsInterface.getDefaultBool(), + messageAsInterface.getDefaultBool()); + assertEquals( + messageAsInterface.getOptionalDouble(), + messageAsInterface.getOptionalDouble()); + } + + public void testMessageOrBuilderGetters() { + TestAllTypes.Builder builder = TestAllTypes.newBuilder(); + + // single fields + assertSame(ForeignMessage.getDefaultInstance(), + builder.getOptionalForeignMessageOrBuilder()); + ForeignMessage.Builder subBuilder = + builder.getOptionalForeignMessageBuilder(); + assertSame(subBuilder, builder.getOptionalForeignMessageOrBuilder()); + + // repeated fields + ForeignMessage m0 = ForeignMessage.newBuilder().buildPartial(); + ForeignMessage m1 = ForeignMessage.newBuilder().buildPartial(); + ForeignMessage m2 = ForeignMessage.newBuilder().buildPartial(); + builder.addRepeatedForeignMessage(m0); + builder.addRepeatedForeignMessage(m1); + builder.addRepeatedForeignMessage(m2); + assertSame(m0, builder.getRepeatedForeignMessageOrBuilder(0)); + assertSame(m1, builder.getRepeatedForeignMessageOrBuilder(1)); + assertSame(m2, builder.getRepeatedForeignMessageOrBuilder(2)); + ForeignMessage.Builder b0 = builder.getRepeatedForeignMessageBuilder(0); + ForeignMessage.Builder b1 = builder.getRepeatedForeignMessageBuilder(1); + assertSame(b0, builder.getRepeatedForeignMessageOrBuilder(0)); + assertSame(b1, builder.getRepeatedForeignMessageOrBuilder(1)); + assertSame(m2, builder.getRepeatedForeignMessageOrBuilder(2)); + + List messageOrBuilderList = + builder.getRepeatedForeignMessageOrBuilderList(); + assertSame(b0, messageOrBuilderList.get(0)); + assertSame(b1, messageOrBuilderList.get(1)); + assertSame(m2, messageOrBuilderList.get(2)); + } + + public void testGetFieldBuilder() { + Descriptor descriptor = TestAllTypes.getDescriptor(); + + FieldDescriptor fieldDescriptor = + descriptor.findFieldByName("optional_nested_message"); + FieldDescriptor foreignFieldDescriptor = + descriptor.findFieldByName("optional_foreign_message"); + FieldDescriptor importFieldDescriptor = + descriptor.findFieldByName("optional_import_message"); + + // Mutate the message with new field builder + // Mutate nested message + TestAllTypes.Builder builder1 = TestAllTypes.newBuilder(); + Message.Builder fieldBuilder1 = builder1.newBuilderForField(fieldDescriptor) + .mergeFrom((Message) builder1.getField(fieldDescriptor)); + FieldDescriptor subFieldDescriptor1 = + fieldBuilder1.getDescriptorForType().findFieldByName("bb"); + fieldBuilder1.setField(subFieldDescriptor1, 1); + builder1.setField(fieldDescriptor, fieldBuilder1.build()); + + // Mutate foreign message + Message.Builder foreignFieldBuilder1 = builder1.newBuilderForField( + foreignFieldDescriptor) + .mergeFrom((Message) builder1.getField(foreignFieldDescriptor)); + FieldDescriptor subForeignFieldDescriptor1 = + foreignFieldBuilder1.getDescriptorForType().findFieldByName("c"); + foreignFieldBuilder1.setField(subForeignFieldDescriptor1, 2); + builder1.setField(foreignFieldDescriptor, foreignFieldBuilder1.build()); + + // Mutate import message + Message.Builder importFieldBuilder1 = builder1.newBuilderForField( + importFieldDescriptor) + .mergeFrom((Message) builder1.getField(importFieldDescriptor)); + FieldDescriptor subImportFieldDescriptor1 = + importFieldBuilder1.getDescriptorForType().findFieldByName("d"); + importFieldBuilder1.setField(subImportFieldDescriptor1, 3); + builder1.setField(importFieldDescriptor, importFieldBuilder1.build()); + + Message newMessage1 = builder1.build(); + + // Mutate the message with existing field builder + // Mutate nested message + TestAllTypes.Builder builder2 = TestAllTypes.newBuilder(); + Message.Builder fieldBuilder2 = builder2.getFieldBuilder(fieldDescriptor); + FieldDescriptor subFieldDescriptor2 = + fieldBuilder2.getDescriptorForType().findFieldByName("bb"); + fieldBuilder2.setField(subFieldDescriptor2, 1); + builder2.setField(fieldDescriptor, fieldBuilder2.build()); + + // Mutate foreign message + Message.Builder foreignFieldBuilder2 = builder2.newBuilderForField( + foreignFieldDescriptor) + .mergeFrom((Message) builder2.getField(foreignFieldDescriptor)); + FieldDescriptor subForeignFieldDescriptor2 = + foreignFieldBuilder2.getDescriptorForType().findFieldByName("c"); + foreignFieldBuilder2.setField(subForeignFieldDescriptor2, 2); + builder2.setField(foreignFieldDescriptor, foreignFieldBuilder2.build()); + + // Mutate import message + Message.Builder importFieldBuilder2 = builder2.newBuilderForField( + importFieldDescriptor) + .mergeFrom((Message) builder2.getField(importFieldDescriptor)); + FieldDescriptor subImportFieldDescriptor2 = + importFieldBuilder2.getDescriptorForType().findFieldByName("d"); + importFieldBuilder2.setField(subImportFieldDescriptor2, 3); + builder2.setField(importFieldDescriptor, importFieldBuilder2.build()); + + Message newMessage2 = builder2.build(); + + // These two messages should be equal. + assertEquals(newMessage1, newMessage2); + } + + public void testGetFieldBuilderWithInitializedValue() { + Descriptor descriptor = TestAllTypes.getDescriptor(); + FieldDescriptor fieldDescriptor = + descriptor.findFieldByName("optional_nested_message"); + + // Before setting field, builder is initialized by default value. + TestAllTypes.Builder builder = TestAllTypes.newBuilder(); + NestedMessage.Builder fieldBuilder = + (NestedMessage.Builder) builder.getFieldBuilder(fieldDescriptor); + assertEquals(0, fieldBuilder.getBb()); + + // Setting field value with new field builder instance. + builder = TestAllTypes.newBuilder(); + NestedMessage.Builder newFieldBuilder = + builder.getOptionalNestedMessageBuilder(); + newFieldBuilder.setBb(2); + // Then get the field builder instance by getFieldBuilder(). + fieldBuilder = + (NestedMessage.Builder) builder.getFieldBuilder(fieldDescriptor); + // It should contain new value. + assertEquals(2, fieldBuilder.getBb()); + // These two builder should be equal. + assertSame(fieldBuilder, newFieldBuilder); + } + + public void testGetFieldBuilderNotSupportedException() { + Descriptor descriptor = TestAllTypes.getDescriptor(); + TestAllTypes.Builder builder = TestAllTypes.newBuilder(); + try { + builder.getFieldBuilder(descriptor.findFieldByName("optional_int32")); + fail("Exception was not thrown"); + } catch (UnsupportedOperationException e) { + // We expect this exception. + } + try { + builder.getFieldBuilder( + descriptor.findFieldByName("optional_nested_enum")); + fail("Exception was not thrown"); + } catch (UnsupportedOperationException e) { + // We expect this exception. + } + try { + builder.getFieldBuilder(descriptor.findFieldByName("repeated_int32")); + fail("Exception was not thrown"); + } catch (UnsupportedOperationException e) { + // We expect this exception. + } + try { + builder.getFieldBuilder( + descriptor.findFieldByName("repeated_nested_enum")); + fail("Exception was not thrown"); + } catch (UnsupportedOperationException e) { + // We expect this exception. + } + try { + builder.getFieldBuilder( + descriptor.findFieldByName("repeated_nested_message")); + fail("Exception was not thrown"); + } catch (UnsupportedOperationException e) { + // We expect this exception. + } + } } diff --git a/cpp/thirdparty/protobuf-2.5.0/java/src/test/java/com/google/protobuf/IsValidUtf8Test.java b/cpp/thirdparty/protobuf-2.5.0/java/src/test/java/com/google/protobuf/IsValidUtf8Test.java new file mode 100644 index 000000000..b204b6043 --- /dev/null +++ b/cpp/thirdparty/protobuf-2.5.0/java/src/test/java/com/google/protobuf/IsValidUtf8Test.java @@ -0,0 +1,180 @@ +// Protocol Buffers - Google's data interchange format +// Copyright 2008 Google Inc. All rights reserved. +// http://code.google.com/p/protobuf/ +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +package com.google.protobuf; + +import com.google.protobuf.IsValidUtf8TestUtil.Shard; + +import junit.framework.TestCase; + +import java.io.UnsupportedEncodingException; + +/** + * Tests cases for {@link ByteString#isValidUtf8()}. This includes three + * brute force tests that actually test every permutation of one byte, two byte, + * and three byte sequences to ensure that the method produces the right result + * for every possible byte encoding where "right" means it's consistent with + * java's UTF-8 string encoding/decoding such that the method returns true for + * any sequence that will round trip when converted to a String and then back to + * bytes and will return false for any sequence that will not round trip. + * See also {@link IsValidUtf8FourByteTest}. It also includes some + * other more targeted tests. + * + * @author jonp@google.com (Jon Perlow) + * @author martinrb@google.com (Martin Buchholz) + */ +public class IsValidUtf8Test extends TestCase { + + /** + * Tests that round tripping of all two byte permutations work. + */ + public void testIsValidUtf8_1Byte() throws UnsupportedEncodingException { + IsValidUtf8TestUtil.testBytes(1, + IsValidUtf8TestUtil.EXPECTED_ONE_BYTE_ROUNDTRIPPABLE_COUNT); + } + + /** + * Tests that round tripping of all two byte permutations work. + */ + public void testIsValidUtf8_2Bytes() throws UnsupportedEncodingException { + IsValidUtf8TestUtil.testBytes(2, + IsValidUtf8TestUtil.EXPECTED_TWO_BYTE_ROUNDTRIPPABLE_COUNT); + } + + /** + * Tests that round tripping of all three byte permutations work. + */ + public void testIsValidUtf8_3Bytes() throws UnsupportedEncodingException { + IsValidUtf8TestUtil.testBytes(3, + IsValidUtf8TestUtil.EXPECTED_THREE_BYTE_ROUNDTRIPPABLE_COUNT); + } + + /** + * Tests that round tripping of a sample of four byte permutations work. + * All permutations are prohibitively expensive to test for automated runs; + * {@link IsValidUtf8FourByteTest} is used for full coverage. This method + * tests specific four-byte cases. + */ + public void testIsValidUtf8_4BytesSamples() + throws UnsupportedEncodingException { + // Valid 4 byte. + assertValidUtf8(0xF0, 0xA4, 0xAD, 0xA2); + + // Bad trailing bytes + assertInvalidUtf8(0xF0, 0xA4, 0xAD, 0x7F); + assertInvalidUtf8(0xF0, 0xA4, 0xAD, 0xC0); + + // Special cases for byte2 + assertInvalidUtf8(0xF0, 0x8F, 0xAD, 0xA2); + assertInvalidUtf8(0xF4, 0x90, 0xAD, 0xA2); + } + + /** + * Tests some hard-coded test cases. + */ + public void testSomeSequences() { + // Empty + assertTrue(asBytes("").isValidUtf8()); + + // One-byte characters, including control characters + assertTrue(asBytes("\u0000abc\u007f").isValidUtf8()); + + // Two-byte characters + assertTrue(asBytes("\u00a2\u00a2").isValidUtf8()); + + // Three-byte characters + assertTrue(asBytes("\u020ac\u020ac").isValidUtf8()); + + // Four-byte characters + assertTrue(asBytes("\u024B62\u024B62").isValidUtf8()); + + // Mixed string + assertTrue( + asBytes("a\u020ac\u00a2b\\u024B62u020acc\u00a2de\u024B62") + .isValidUtf8()); + + // Not a valid string + assertInvalidUtf8(-1, 0, -1, 0); + } + + private byte[] toByteArray(int... bytes) { + byte[] realBytes = new byte[bytes.length]; + for (int i = 0; i < bytes.length; i++) { + realBytes[i] = (byte) bytes[i]; + } + return realBytes; + } + + private ByteString toByteString(int... bytes) { + return ByteString.copyFrom(toByteArray(bytes)); + } + + private void assertValidUtf8(int[] bytes, boolean not) { + byte[] realBytes = toByteArray(bytes); + assertTrue(not ^ Utf8.isValidUtf8(realBytes)); + assertTrue(not ^ Utf8.isValidUtf8(realBytes, 0, bytes.length)); + ByteString lit = ByteString.copyFrom(realBytes); + ByteString sub = lit.substring(0, bytes.length); + assertTrue(not ^ lit.isValidUtf8()); + assertTrue(not ^ sub.isValidUtf8()); + ByteString[] ropes = { + RopeByteString.newInstanceForTest(ByteString.EMPTY, lit), + RopeByteString.newInstanceForTest(ByteString.EMPTY, sub), + RopeByteString.newInstanceForTest(lit, ByteString.EMPTY), + RopeByteString.newInstanceForTest(sub, ByteString.EMPTY), + RopeByteString.newInstanceForTest(sub, lit) + }; + for (ByteString rope : ropes) { + assertTrue(not ^ rope.isValidUtf8()); + } + } + + private void assertValidUtf8(int... bytes) { + assertValidUtf8(bytes, false); + } + + private void assertInvalidUtf8(int... bytes) { + assertValidUtf8(bytes, true); + } + + private static ByteString asBytes(String s) { + return ByteString.copyFromUtf8(s); + } + + public void testShardsHaveExpectedRoundTrippables() { + // A sanity check. + int actual = 0; + for (Shard shard : IsValidUtf8TestUtil.FOUR_BYTE_SHARDS) { + actual += shard.expected; + } + assertEquals(IsValidUtf8TestUtil.EXPECTED_FOUR_BYTE_ROUNDTRIPPABLE_COUNT, + actual); + } +} diff --git a/cpp/thirdparty/protobuf-2.5.0/java/src/test/java/com/google/protobuf/IsValidUtf8TestUtil.java b/cpp/thirdparty/protobuf-2.5.0/java/src/test/java/com/google/protobuf/IsValidUtf8TestUtil.java new file mode 100644 index 000000000..4cb3d5b91 --- /dev/null +++ b/cpp/thirdparty/protobuf-2.5.0/java/src/test/java/com/google/protobuf/IsValidUtf8TestUtil.java @@ -0,0 +1,421 @@ +// Protocol Buffers - Google's data interchange format +// Copyright 2008 Google Inc. All rights reserved. +// http://code.google.com/p/protobuf/ +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +package com.google.protobuf; + +import static junit.framework.Assert.*; + +import java.io.UnsupportedEncodingException; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; +import java.util.Random; +import java.util.logging.Logger; +import java.nio.charset.CharsetDecoder; +import java.nio.charset.Charset; +import java.nio.charset.CodingErrorAction; +import java.nio.charset.CharsetEncoder; +import java.nio.charset.CoderResult; +import java.nio.ByteBuffer; +import java.nio.CharBuffer; + +/** + * Shared testing code for {@link IsValidUtf8Test} and + * {@link IsValidUtf8FourByteTest}. + * + * @author jonp@google.com (Jon Perlow) + * @author martinrb@google.com (Martin Buchholz) + */ +class IsValidUtf8TestUtil { + private static Logger logger = Logger.getLogger( + IsValidUtf8TestUtil.class.getName()); + + // 128 - [chars 0x0000 to 0x007f] + static long ONE_BYTE_ROUNDTRIPPABLE_CHARACTERS = 0x007f - 0x0000 + 1; + + // 128 + static long EXPECTED_ONE_BYTE_ROUNDTRIPPABLE_COUNT = + ONE_BYTE_ROUNDTRIPPABLE_CHARACTERS; + + // 1920 [chars 0x0080 to 0x07FF] + static long TWO_BYTE_ROUNDTRIPPABLE_CHARACTERS = 0x07FF - 0x0080 + 1; + + // 18,304 + static long EXPECTED_TWO_BYTE_ROUNDTRIPPABLE_COUNT = + // Both bytes are one byte characters + (long) Math.pow(EXPECTED_ONE_BYTE_ROUNDTRIPPABLE_COUNT, 2) + + // The possible number of two byte characters + TWO_BYTE_ROUNDTRIPPABLE_CHARACTERS; + + // 2048 + static long THREE_BYTE_SURROGATES = 2 * 1024; + + // 61,440 [chars 0x0800 to 0xFFFF, minus surrogates] + static long THREE_BYTE_ROUNDTRIPPABLE_CHARACTERS = + 0xFFFF - 0x0800 + 1 - THREE_BYTE_SURROGATES; + + // 2,650,112 + static long EXPECTED_THREE_BYTE_ROUNDTRIPPABLE_COUNT = + // All one byte characters + (long) Math.pow(EXPECTED_ONE_BYTE_ROUNDTRIPPABLE_COUNT, 3) + + // One two byte character and a one byte character + 2 * TWO_BYTE_ROUNDTRIPPABLE_CHARACTERS * + ONE_BYTE_ROUNDTRIPPABLE_CHARACTERS + + // Three byte characters + THREE_BYTE_ROUNDTRIPPABLE_CHARACTERS; + + // 1,048,576 [chars 0x10000L to 0x10FFFF] + static long FOUR_BYTE_ROUNDTRIPPABLE_CHARACTERS = 0x10FFFF - 0x10000L + 1; + + // 289,571,839 + static long EXPECTED_FOUR_BYTE_ROUNDTRIPPABLE_COUNT = + // All one byte characters + (long) Math.pow(EXPECTED_ONE_BYTE_ROUNDTRIPPABLE_COUNT, 4) + + // One and three byte characters + 2 * THREE_BYTE_ROUNDTRIPPABLE_CHARACTERS * + ONE_BYTE_ROUNDTRIPPABLE_CHARACTERS + + // Two two byte characters + TWO_BYTE_ROUNDTRIPPABLE_CHARACTERS * TWO_BYTE_ROUNDTRIPPABLE_CHARACTERS + + // Permutations of one and two byte characters + 3 * TWO_BYTE_ROUNDTRIPPABLE_CHARACTERS * + ONE_BYTE_ROUNDTRIPPABLE_CHARACTERS * + ONE_BYTE_ROUNDTRIPPABLE_CHARACTERS + + // Four byte characters + FOUR_BYTE_ROUNDTRIPPABLE_CHARACTERS; + + static class Shard { + final long index; + final long start; + final long lim; + final long expected; + + + public Shard(long index, long start, long lim, long expected) { + assertTrue(start < lim); + this.index = index; + this.start = start; + this.lim = lim; + this.expected = expected; + } + } + + static final long[] FOUR_BYTE_SHARDS_EXPECTED_ROUNTRIPPABLES = + generateFourByteShardsExpectedRunnables(); + + private static long[] generateFourByteShardsExpectedRunnables() { + long[] expected = new long[128]; + + // 0-63 are all 5300224 + for (int i = 0; i <= 63; i++) { + expected[i] = 5300224; + } + + // 97-111 are all 2342912 + for (int i = 97; i <= 111; i++) { + expected[i] = 2342912; + } + + // 113-117 are all 1048576 + for (int i = 113; i <= 117; i++) { + expected[i] = 1048576; + } + + // One offs + expected[112] = 786432; + expected[118] = 786432; + expected[119] = 1048576; + expected[120] = 458752; + expected[121] = 524288; + expected[122] = 65536; + + // Anything not assigned was the default 0. + return expected; + } + + static final List FOUR_BYTE_SHARDS = generateFourByteShards( + 128, FOUR_BYTE_SHARDS_EXPECTED_ROUNTRIPPABLES); + + + private static List generateFourByteShards( + int numShards, long[] expected) { + assertEquals(numShards, expected.length); + List shards = new ArrayList(numShards); + long LIM = 1L << 32; + long increment = LIM / numShards; + assertTrue(LIM % numShards == 0); + for (int i = 0; i < numShards; i++) { + shards.add(new Shard(i, + increment * i, + increment * (i + 1), + expected[i])); + } + return shards; + } + + /** + * Helper to run the loop to test all the permutations for the number of bytes + * specified. + * + * @param numBytes the number of bytes in the byte array + * @param expectedCount the expected number of roundtrippable permutations + */ + static void testBytes(int numBytes, long expectedCount) + throws UnsupportedEncodingException { + testBytes(numBytes, expectedCount, 0, -1); + } + + /** + * Helper to run the loop to test all the permutations for the number of bytes + * specified. This overload is useful for debugging to get the loop to start + * at a certain character. + * + * @param numBytes the number of bytes in the byte array + * @param expectedCount the expected number of roundtrippable permutations + * @param start the starting bytes encoded as a long as big-endian + * @param lim the limit of bytes to process encoded as a long as big-endian, + * or -1 to mean the max limit for numBytes + */ + static void testBytes(int numBytes, long expectedCount, long start, long lim) + throws UnsupportedEncodingException { + Random rnd = new Random(); + byte[] bytes = new byte[numBytes]; + + if (lim == -1) { + lim = 1L << (numBytes * 8); + } + long count = 0; + long countRoundTripped = 0; + for (long byteChar = start; byteChar < lim; byteChar++) { + long tmpByteChar = byteChar; + for (int i = 0; i < numBytes; i++) { + bytes[bytes.length - i - 1] = (byte) tmpByteChar; + tmpByteChar = tmpByteChar >> 8; + } + ByteString bs = ByteString.copyFrom(bytes); + boolean isRoundTrippable = bs.isValidUtf8(); + String s = new String(bytes, "UTF-8"); + byte[] bytesReencoded = s.getBytes("UTF-8"); + boolean bytesEqual = Arrays.equals(bytes, bytesReencoded); + + if (bytesEqual != isRoundTrippable) { + outputFailure(byteChar, bytes, bytesReencoded); + } + + // Check agreement with static Utf8 methods. + assertEquals(isRoundTrippable, Utf8.isValidUtf8(bytes)); + assertEquals(isRoundTrippable, Utf8.isValidUtf8(bytes, 0, numBytes)); + + // Test partial sequences. + // Partition numBytes into three segments (not necessarily non-empty). + int i = rnd.nextInt(numBytes); + int j = rnd.nextInt(numBytes); + if (j < i) { + int tmp = i; i = j; j = tmp; + } + int state1 = Utf8.partialIsValidUtf8(Utf8.COMPLETE, bytes, 0, i); + int state2 = Utf8.partialIsValidUtf8(state1, bytes, i, j); + int state3 = Utf8.partialIsValidUtf8(state2, bytes, j, numBytes); + if (isRoundTrippable != (state3 == Utf8.COMPLETE)) { + System.out.printf("state=%04x %04x %04x i=%d j=%d%n", + state1, state2, state3, i, j); + outputFailure(byteChar, bytes, bytesReencoded); + } + assertEquals(isRoundTrippable, (state3 == Utf8.COMPLETE)); + + // Test ropes built out of small partial sequences + ByteString rope = RopeByteString.newInstanceForTest( + bs.substring(0, i), + RopeByteString.newInstanceForTest( + bs.substring(i, j), + bs.substring(j, numBytes))); + assertSame(RopeByteString.class, rope.getClass()); + + ByteString[] byteStrings = { bs, bs.substring(0, numBytes), rope }; + for (ByteString x : byteStrings) { + assertEquals(isRoundTrippable, + x.isValidUtf8()); + assertEquals(state3, + x.partialIsValidUtf8(Utf8.COMPLETE, 0, numBytes)); + + assertEquals(state1, + x.partialIsValidUtf8(Utf8.COMPLETE, 0, i)); + assertEquals(state1, + x.substring(0, i).partialIsValidUtf8(Utf8.COMPLETE, 0, i)); + assertEquals(state2, + x.partialIsValidUtf8(state1, i, j - i)); + assertEquals(state2, + x.substring(i, j).partialIsValidUtf8(state1, 0, j - i)); + assertEquals(state3, + x.partialIsValidUtf8(state2, j, numBytes - j)); + assertEquals(state3, + x.substring(j, numBytes) + .partialIsValidUtf8(state2, 0, numBytes - j)); + } + + // ByteString reduplication should not affect its UTF-8 validity. + ByteString ropeADope = + RopeByteString.newInstanceForTest(bs, bs.substring(0, numBytes)); + assertEquals(isRoundTrippable, ropeADope.isValidUtf8()); + + if (isRoundTrippable) { + countRoundTripped++; + } + count++; + if (byteChar != 0 && byteChar % 1000000L == 0) { + logger.info("Processed " + (byteChar / 1000000L) + + " million characters"); + } + } + logger.info("Round tripped " + countRoundTripped + " of " + count); + assertEquals(expectedCount, countRoundTripped); + } + + /** + * Variation of {@link #testBytes} that does less allocation using the + * low-level encoders/decoders directly. Checked in because it's useful for + * debugging when trying to process bytes faster, but since it doesn't use the + * actual String class, it's possible for incompatibilities to develop + * (although unlikely). + * + * @param numBytes the number of bytes in the byte array + * @param expectedCount the expected number of roundtrippable permutations + * @param start the starting bytes encoded as a long as big-endian + * @param lim the limit of bytes to process encoded as a long as big-endian, + * or -1 to mean the max limit for numBytes + */ + void testBytesUsingByteBuffers( + int numBytes, long expectedCount, long start, long lim) + throws UnsupportedEncodingException { + CharsetDecoder decoder = Charset.forName("UTF-8").newDecoder() + .onMalformedInput(CodingErrorAction.REPLACE) + .onUnmappableCharacter(CodingErrorAction.REPLACE); + CharsetEncoder encoder = Charset.forName("UTF-8").newEncoder() + .onMalformedInput(CodingErrorAction.REPLACE) + .onUnmappableCharacter(CodingErrorAction.REPLACE); + byte[] bytes = new byte[numBytes]; + int maxChars = (int) (decoder.maxCharsPerByte() * numBytes) + 1; + char[] charsDecoded = + new char[(int) (decoder.maxCharsPerByte() * numBytes) + 1]; + int maxBytes = (int) (encoder.maxBytesPerChar() * maxChars) + 1; + byte[] bytesReencoded = new byte[maxBytes]; + + ByteBuffer bb = ByteBuffer.wrap(bytes); + CharBuffer cb = CharBuffer.wrap(charsDecoded); + ByteBuffer bbReencoded = ByteBuffer.wrap(bytesReencoded); + if (lim == -1) { + lim = 1L << (numBytes * 8); + } + long count = 0; + long countRoundTripped = 0; + for (long byteChar = start; byteChar < lim; byteChar++) { + bb.rewind(); + bb.limit(bytes.length); + cb.rewind(); + cb.limit(charsDecoded.length); + bbReencoded.rewind(); + bbReencoded.limit(bytesReencoded.length); + encoder.reset(); + decoder.reset(); + long tmpByteChar = byteChar; + for (int i = 0; i < bytes.length; i++) { + bytes[bytes.length - i - 1] = (byte) tmpByteChar; + tmpByteChar = tmpByteChar >> 8; + } + boolean isRoundTrippable = ByteString.copyFrom(bytes).isValidUtf8(); + CoderResult result = decoder.decode(bb, cb, true); + assertFalse(result.isError()); + result = decoder.flush(cb); + assertFalse(result.isError()); + + int charLen = cb.position(); + cb.rewind(); + cb.limit(charLen); + result = encoder.encode(cb, bbReencoded, true); + assertFalse(result.isError()); + result = encoder.flush(bbReencoded); + assertFalse(result.isError()); + + boolean bytesEqual = true; + int bytesLen = bbReencoded.position(); + if (bytesLen != numBytes) { + bytesEqual = false; + } else { + for (int i = 0; i < numBytes; i++) { + if (bytes[i] != bytesReencoded[i]) { + bytesEqual = false; + break; + } + } + } + if (bytesEqual != isRoundTrippable) { + outputFailure(byteChar, bytes, bytesReencoded, bytesLen); + } + + count++; + if (isRoundTrippable) { + countRoundTripped++; + } + if (byteChar != 0 && byteChar % 1000000 == 0) { + logger.info("Processed " + (byteChar / 1000000) + + " million characters"); + } + } + logger.info("Round tripped " + countRoundTripped + " of " + count); + assertEquals(expectedCount, countRoundTripped); + } + + private static void outputFailure(long byteChar, byte[] bytes, byte[] after) { + outputFailure(byteChar, bytes, after, after.length); + } + + private static void outputFailure(long byteChar, byte[] bytes, byte[] after, + int len) { + fail("Failure: (" + Long.toHexString(byteChar) + ") " + + toHexString(bytes) + " => " + toHexString(after, len)); + } + + private static String toHexString(byte[] b) { + return toHexString(b, b.length); + } + + private static String toHexString(byte[] b, int len) { + StringBuilder s = new StringBuilder(); + s.append("\""); + for (int i = 0; i < len; i++) { + if (i > 0) { + s.append(" "); + } + s.append(String.format("%02x", b[i] & 0xFF)); + } + s.append("\""); + return s.toString(); + } + +} diff --git a/cpp/thirdparty/protobuf-2.5.0/java/src/test/java/com/google/protobuf/LazyStringArrayListTest.java b/cpp/thirdparty/protobuf-2.5.0/java/src/test/java/com/google/protobuf/LazyStringArrayListTest.java new file mode 100644 index 000000000..d500595fd --- /dev/null +++ b/cpp/thirdparty/protobuf-2.5.0/java/src/test/java/com/google/protobuf/LazyStringArrayListTest.java @@ -0,0 +1,162 @@ +// Protocol Buffers - Google's data interchange format +// Copyright 2008 Google Inc. All rights reserved. +// http://code.google.com/p/protobuf/ +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +package com.google.protobuf; + +import junit.framework.TestCase; + +import java.util.ArrayList; +import java.util.List; + +/** + * Tests for {@link LazyStringArrayList}. + * + * @author jonp@google.com (Jon Perlow) + */ +public class LazyStringArrayListTest extends TestCase { + + private static String STRING_A = "A"; + private static String STRING_B = "B"; + private static String STRING_C = "C"; + + private static ByteString BYTE_STRING_A = ByteString.copyFromUtf8("A"); + private static ByteString BYTE_STRING_B = ByteString.copyFromUtf8("B"); + private static ByteString BYTE_STRING_C = ByteString.copyFromUtf8("C"); + + public void testJustStrings() { + LazyStringArrayList list = new LazyStringArrayList(); + list.add(STRING_A); + list.add(STRING_B); + list.add(STRING_C); + + assertEquals(3, list.size()); + assertSame(STRING_A, list.get(0)); + assertSame(STRING_B, list.get(1)); + assertSame(STRING_C, list.get(2)); + + list.set(1, STRING_C); + assertSame(STRING_C, list.get(1)); + + list.remove(1); + assertSame(STRING_A, list.get(0)); + assertSame(STRING_C, list.get(1)); + } + + public void testJustByteString() { + LazyStringArrayList list = new LazyStringArrayList(); + list.add(BYTE_STRING_A); + list.add(BYTE_STRING_B); + list.add(BYTE_STRING_C); + + assertEquals(3, list.size()); + assertSame(BYTE_STRING_A, list.getByteString(0)); + assertSame(BYTE_STRING_B, list.getByteString(1)); + assertSame(BYTE_STRING_C, list.getByteString(2)); + + list.remove(1); + assertSame(BYTE_STRING_A, list.getByteString(0)); + assertSame(BYTE_STRING_C, list.getByteString(1)); + } + + public void testConversionBackAndForth() { + LazyStringArrayList list = new LazyStringArrayList(); + list.add(STRING_A); + list.add(BYTE_STRING_B); + list.add(BYTE_STRING_C); + + // String a should be the same because it was originally a string + assertSame(STRING_A, list.get(0)); + + // String b and c should be different because the string has to be computed + // from the ByteString + String bPrime = list.get(1); + assertNotSame(STRING_B, bPrime); + assertEquals(STRING_B, bPrime); + String cPrime = list.get(2); + assertNotSame(STRING_C, cPrime); + assertEquals(STRING_C, cPrime); + + // String c and c should stay the same once cached. + assertSame(bPrime, list.get(1)); + assertSame(cPrime, list.get(2)); + + // ByteString needs to be computed from string for both a and b + ByteString aPrimeByteString = list.getByteString(0); + assertEquals(BYTE_STRING_A, aPrimeByteString); + ByteString bPrimeByteString = list.getByteString(1); + assertNotSame(BYTE_STRING_B, bPrimeByteString); + assertEquals(BYTE_STRING_B, list.getByteString(1)); + + // Once cached, ByteString should stay cached. + assertSame(aPrimeByteString, list.getByteString(0)); + assertSame(bPrimeByteString, list.getByteString(1)); + } + + public void testCopyConstructorCopiesByReference() { + LazyStringArrayList list1 = new LazyStringArrayList(); + list1.add(STRING_A); + list1.add(BYTE_STRING_B); + list1.add(BYTE_STRING_C); + + LazyStringArrayList list2 = new LazyStringArrayList(list1); + assertEquals(3, list2.size()); + assertSame(STRING_A, list2.get(0)); + assertSame(BYTE_STRING_B, list2.getByteString(1)); + assertSame(BYTE_STRING_C, list2.getByteString(2)); + } + + public void testListCopyConstructor() { + List list1 = new ArrayList(); + list1.add(STRING_A); + list1.add(STRING_B); + list1.add(STRING_C); + + LazyStringArrayList list2 = new LazyStringArrayList(list1); + assertEquals(3, list2.size()); + assertSame(STRING_A, list2.get(0)); + assertSame(STRING_B, list2.get(1)); + assertSame(STRING_C, list2.get(2)); + } + + public void testAddAllCopiesByReferenceIfPossible() { + LazyStringArrayList list1 = new LazyStringArrayList(); + list1.add(STRING_A); + list1.add(BYTE_STRING_B); + list1.add(BYTE_STRING_C); + + LazyStringArrayList list2 = new LazyStringArrayList(); + list2.addAll(list1); + + assertEquals(3, list2.size()); + assertSame(STRING_A, list2.get(0)); + assertSame(BYTE_STRING_B, list2.getByteString(1)); + assertSame(BYTE_STRING_C, list2.getByteString(2)); + } +} diff --git a/cpp/thirdparty/protobuf-2.5.0/java/src/test/java/com/google/protobuf/LazyStringEndToEndTest.java b/cpp/thirdparty/protobuf-2.5.0/java/src/test/java/com/google/protobuf/LazyStringEndToEndTest.java new file mode 100644 index 000000000..fe9599e3d --- /dev/null +++ b/cpp/thirdparty/protobuf-2.5.0/java/src/test/java/com/google/protobuf/LazyStringEndToEndTest.java @@ -0,0 +1,143 @@ +// Protocol Buffers - Google's data interchange format +// Copyright 2008 Google Inc. All rights reserved. +// http://code.google.com/p/protobuf/ +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +package com.google.protobuf; + + +import protobuf_unittest.UnittestProto; + +import junit.framework.TestCase; + +import java.io.IOException; + +/** + * Tests to make sure the lazy conversion of UTF8-encoded byte arrays to + * strings works correctly. + * + * @author jonp@google.com (Jon Perlow) + */ +public class LazyStringEndToEndTest extends TestCase { + + private static ByteString TEST_ALL_TYPES_SERIALIZED_WITH_ILLEGAL_UTF8 = + ByteString.copyFrom(new byte[] { + 114, 4, -1, 0, -1, 0, -30, 2, 4, -1, + 0, -1, 0, -30, 2, 4, -1, 0, -1, 0, }); + + private ByteString encodedTestAllTypes; + + @Override + protected void setUp() throws Exception { + super.setUp(); + this.encodedTestAllTypes = UnittestProto.TestAllTypes.newBuilder() + .setOptionalString("foo") + .addRepeatedString("bar") + .addRepeatedString("baz") + .build() + .toByteString(); + } + + /** + * Tests that an invalid UTF8 string will roundtrip through a parse + * and serialization. + */ + public void testParseAndSerialize() throws InvalidProtocolBufferException { + UnittestProto.TestAllTypes tV2 = UnittestProto.TestAllTypes.parseFrom( + TEST_ALL_TYPES_SERIALIZED_WITH_ILLEGAL_UTF8); + ByteString bytes = tV2.toByteString(); + assertEquals(TEST_ALL_TYPES_SERIALIZED_WITH_ILLEGAL_UTF8, bytes); + + tV2.getOptionalString(); + bytes = tV2.toByteString(); + assertEquals(TEST_ALL_TYPES_SERIALIZED_WITH_ILLEGAL_UTF8, bytes); + } + + public void testParseAndWrite() throws IOException { + UnittestProto.TestAllTypes tV2 = UnittestProto.TestAllTypes.parseFrom( + TEST_ALL_TYPES_SERIALIZED_WITH_ILLEGAL_UTF8); + byte[] sink = new byte[TEST_ALL_TYPES_SERIALIZED_WITH_ILLEGAL_UTF8.size()]; + CodedOutputStream outputStream = CodedOutputStream.newInstance(sink); + tV2.writeTo(outputStream); + outputStream.flush(); + assertEquals( + TEST_ALL_TYPES_SERIALIZED_WITH_ILLEGAL_UTF8, + ByteString.copyFrom(sink)); + } + + public void testCaching() { + String a = "a"; + String b = "b"; + String c = "c"; + UnittestProto.TestAllTypes proto = UnittestProto.TestAllTypes.newBuilder() + .setOptionalString(a) + .addRepeatedString(b) + .addRepeatedString(c) + .build(); + + // String should be the one we passed it. + assertSame(a, proto.getOptionalString()); + assertSame(b, proto.getRepeatedString(0)); + assertSame(c, proto.getRepeatedString(1)); + + + // There's no way to directly observe that the ByteString is cached + // correctly on serialization, but we can observe that it had to recompute + // the string after serialization. + proto.toByteString(); + String aPrime = proto.getOptionalString(); + assertNotSame(a, aPrime); + assertEquals(a, aPrime); + String bPrime = proto.getRepeatedString(0); + assertNotSame(b, bPrime); + assertEquals(b, bPrime); + String cPrime = proto.getRepeatedString(1); + assertNotSame(c, cPrime); + assertEquals(c, cPrime); + + // And now the string should stay cached. + assertSame(aPrime, proto.getOptionalString()); + assertSame(bPrime, proto.getRepeatedString(0)); + assertSame(cPrime, proto.getRepeatedString(1)); + } + + public void testNoStringCachingIfOnlyBytesAccessed() throws Exception { + UnittestProto.TestAllTypes proto = + UnittestProto.TestAllTypes.parseFrom(encodedTestAllTypes); + ByteString optional = proto.getOptionalStringBytes(); + assertSame(optional, proto.getOptionalStringBytes()); + assertSame(optional, proto.toBuilder().getOptionalStringBytes()); + + ByteString repeated0 = proto.getRepeatedStringBytes(0); + ByteString repeated1 = proto.getRepeatedStringBytes(1); + assertSame(repeated0, proto.getRepeatedStringBytes(0)); + assertSame(repeated1, proto.getRepeatedStringBytes(1)); + assertSame(repeated0, proto.toBuilder().getRepeatedStringBytes(0)); + assertSame(repeated1, proto.toBuilder().getRepeatedStringBytes(1)); + } +} diff --git a/cpp/thirdparty/protobuf-2.3.0/java/src/test/java/com/google/protobuf/LiteTest.java b/cpp/thirdparty/protobuf-2.5.0/java/src/test/java/com/google/protobuf/LiteTest.java similarity index 80% rename from cpp/thirdparty/protobuf-2.3.0/java/src/test/java/com/google/protobuf/LiteTest.java rename to cpp/thirdparty/protobuf-2.5.0/java/src/test/java/com/google/protobuf/LiteTest.java index 728bad9d0..839694d64 100644 --- a/cpp/thirdparty/protobuf-2.3.0/java/src/test/java/com/google/protobuf/LiteTest.java +++ b/cpp/thirdparty/protobuf-2.5.0/java/src/test/java/com/google/protobuf/LiteTest.java @@ -37,6 +37,11 @@ import com.google.protobuf.UnittestLite.TestNestedExtensionLite; import junit.framework.TestCase; +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; +import java.io.ObjectInputStream; +import java.io.ObjectOutputStream; + /** * Test lite runtime. * @@ -113,4 +118,31 @@ public class LiteTest extends TestCase { assertEquals(7, message2.getExtension( UnittestLite.optionalNestedMessageExtensionLite).getBb()); } + + public void testSerialize() throws Exception { + ByteArrayOutputStream baos = new ByteArrayOutputStream(); + TestAllTypesLite expected = + TestAllTypesLite.newBuilder() + .setOptionalInt32(123) + .addRepeatedString("hello") + .setOptionalNestedMessage( + TestAllTypesLite.NestedMessage.newBuilder().setBb(7)) + .build(); + ObjectOutputStream out = new ObjectOutputStream(baos); + try { + out.writeObject(expected); + } finally { + out.close(); + } + ByteArrayInputStream bais = new ByteArrayInputStream(baos.toByteArray()); + ObjectInputStream in = new ObjectInputStream(bais); + TestAllTypesLite actual = (TestAllTypesLite) in.readObject(); + assertEquals(expected.getOptionalInt32(), actual.getOptionalInt32()); + assertEquals(expected.getRepeatedStringCount(), + actual.getRepeatedStringCount()); + assertEquals(expected.getRepeatedString(0), + actual.getRepeatedString(0)); + assertEquals(expected.getOptionalNestedMessage().getBb(), + actual.getOptionalNestedMessage().getBb()); + } } diff --git a/cpp/thirdparty/protobuf-2.5.0/java/src/test/java/com/google/protobuf/LiteralByteStringTest.java b/cpp/thirdparty/protobuf-2.5.0/java/src/test/java/com/google/protobuf/LiteralByteStringTest.java new file mode 100644 index 000000000..deee1eeaa --- /dev/null +++ b/cpp/thirdparty/protobuf-2.5.0/java/src/test/java/com/google/protobuf/LiteralByteStringTest.java @@ -0,0 +1,396 @@ +// Protocol Buffers - Google's data interchange format +// Copyright 2008 Google Inc. All rights reserved. +// http://code.google.com/p/protobuf/ +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +package com.google.protobuf; + +import junit.framework.TestCase; + +import java.io.ByteArrayOutputStream; +import java.io.IOException; +import java.io.InputStream; +import java.io.OutputStream; +import java.io.UnsupportedEncodingException; +import java.nio.ByteBuffer; +import java.util.Arrays; +import java.util.List; +import java.util.NoSuchElementException; + +/** + * Test {@link LiteralByteString} by setting up a reference string in {@link #setUp()}. + * This class is designed to be extended for testing extensions of {@link LiteralByteString} + * such as {@link BoundedByteString}, see {@link BoundedByteStringTest}. + * + * @author carlanton@google.com (Carl Haverl) + */ +public class LiteralByteStringTest extends TestCase { + protected static final String UTF_8 = "UTF-8"; + + protected String classUnderTest; + protected byte[] referenceBytes; + protected ByteString stringUnderTest; + protected int expectedHashCode; + + @Override + protected void setUp() throws Exception { + classUnderTest = "LiteralByteString"; + referenceBytes = ByteStringTest.getTestBytes(1234, 11337766L); + stringUnderTest = ByteString.copyFrom(referenceBytes); + expectedHashCode = 331161852; + } + + public void testExpectedType() { + String actualClassName = getActualClassName(stringUnderTest); + assertEquals(classUnderTest + " should match type exactly", classUnderTest, actualClassName); + } + + protected String getActualClassName(Object object) { + String actualClassName = object.getClass().getName(); + actualClassName = actualClassName.substring(actualClassName.lastIndexOf('.') + 1); + return actualClassName; + } + + public void testByteAt() { + boolean stillEqual = true; + for (int i = 0; stillEqual && i < referenceBytes.length; ++i) { + stillEqual = (referenceBytes[i] == stringUnderTest.byteAt(i)); + } + assertTrue(classUnderTest + " must capture the right bytes", stillEqual); + } + + public void testByteIterator() { + boolean stillEqual = true; + ByteString.ByteIterator iter = stringUnderTest.iterator(); + for (int i = 0; stillEqual && i < referenceBytes.length; ++i) { + stillEqual = (iter.hasNext() && referenceBytes[i] == iter.nextByte()); + } + assertTrue(classUnderTest + " must capture the right bytes", stillEqual); + assertFalse(classUnderTest + " must have exhausted the itertor", iter.hasNext()); + + try { + iter.nextByte(); + fail("Should have thrown an exception."); + } catch (NoSuchElementException e) { + // This is success + } + } + + public void testByteIterable() { + boolean stillEqual = true; + int j = 0; + for (byte quantum : stringUnderTest) { + stillEqual = (referenceBytes[j] == quantum); + ++j; + } + assertTrue(classUnderTest + " must capture the right bytes as Bytes", stillEqual); + assertEquals(classUnderTest + " iterable character count", referenceBytes.length, j); + } + + public void testSize() { + assertEquals(classUnderTest + " must have the expected size", referenceBytes.length, + stringUnderTest.size()); + } + + public void testGetTreeDepth() { + assertEquals(classUnderTest + " must have depth 0", 0, stringUnderTest.getTreeDepth()); + } + + public void testIsBalanced() { + assertTrue(classUnderTest + " is technically balanced", stringUnderTest.isBalanced()); + } + + public void testCopyTo_ByteArrayOffsetLength() { + int destinationOffset = 50; + int length = 100; + byte[] destination = new byte[destinationOffset + length]; + int sourceOffset = 213; + stringUnderTest.copyTo(destination, sourceOffset, destinationOffset, length); + boolean stillEqual = true; + for (int i = 0; stillEqual && i < length; ++i) { + stillEqual = referenceBytes[i + sourceOffset] == destination[i + destinationOffset]; + } + assertTrue(classUnderTest + ".copyTo(4 arg) must give the expected bytes", stillEqual); + } + + public void testCopyTo_ByteArrayOffsetLengthErrors() { + int destinationOffset = 50; + int length = 100; + byte[] destination = new byte[destinationOffset + length]; + + try { + // Copy one too many bytes + stringUnderTest.copyTo(destination, stringUnderTest.size() + 1 - length, + destinationOffset, length); + fail("Should have thrown an exception when copying too many bytes of a " + + classUnderTest); + } catch (IndexOutOfBoundsException expected) { + // This is success + } + + try { + // Copy with illegal negative sourceOffset + stringUnderTest.copyTo(destination, -1, destinationOffset, length); + fail("Should have thrown an exception when given a negative sourceOffset in " + + classUnderTest); + } catch (IndexOutOfBoundsException expected) { + // This is success + } + + try { + // Copy with illegal negative destinationOffset + stringUnderTest.copyTo(destination, 0, -1, length); + fail("Should have thrown an exception when given a negative destinationOffset in " + + classUnderTest); + } catch (IndexOutOfBoundsException expected) { + // This is success + } + + try { + // Copy with illegal negative size + stringUnderTest.copyTo(destination, 0, 0, -1); + fail("Should have thrown an exception when given a negative size in " + + classUnderTest); + } catch (IndexOutOfBoundsException expected) { + // This is success + } + + try { + // Copy with illegal too-large sourceOffset + stringUnderTest.copyTo(destination, 2 * stringUnderTest.size(), 0, length); + fail("Should have thrown an exception when the destinationOffset is too large in " + + classUnderTest); + } catch (IndexOutOfBoundsException expected) { + // This is success + } + + try { + // Copy with illegal too-large destinationOffset + stringUnderTest.copyTo(destination, 0, 2 * destination.length, length); + fail("Should have thrown an exception when the destinationOffset is too large in " + + classUnderTest); + } catch (IndexOutOfBoundsException expected) { + // This is success + } + } + + public void testCopyTo_ByteBuffer() { + ByteBuffer myBuffer = ByteBuffer.allocate(referenceBytes.length); + stringUnderTest.copyTo(myBuffer); + assertTrue(classUnderTest + ".copyTo(ByteBuffer) must give back the same bytes", + Arrays.equals(referenceBytes, myBuffer.array())); + } + + public void testAsReadOnlyByteBuffer() { + ByteBuffer byteBuffer = stringUnderTest.asReadOnlyByteBuffer(); + byte[] roundTripBytes = new byte[referenceBytes.length]; + assertTrue(byteBuffer.remaining() == referenceBytes.length); + assertTrue(byteBuffer.isReadOnly()); + byteBuffer.get(roundTripBytes); + assertTrue(classUnderTest + ".asReadOnlyByteBuffer() must give back the same bytes", + Arrays.equals(referenceBytes, roundTripBytes)); + } + + public void testAsReadOnlyByteBufferList() { + List byteBuffers = stringUnderTest.asReadOnlyByteBufferList(); + int bytesSeen = 0; + byte[] roundTripBytes = new byte[referenceBytes.length]; + for (ByteBuffer byteBuffer : byteBuffers) { + int thisLength = byteBuffer.remaining(); + assertTrue(byteBuffer.isReadOnly()); + assertTrue(bytesSeen + thisLength <= referenceBytes.length); + byteBuffer.get(roundTripBytes, bytesSeen, thisLength); + bytesSeen += thisLength; + } + assertTrue(bytesSeen == referenceBytes.length); + assertTrue(classUnderTest + ".asReadOnlyByteBufferTest() must give back the same bytes", + Arrays.equals(referenceBytes, roundTripBytes)); + } + + public void testToByteArray() { + byte[] roundTripBytes = stringUnderTest.toByteArray(); + assertTrue(classUnderTest + ".toByteArray() must give back the same bytes", + Arrays.equals(referenceBytes, roundTripBytes)); + } + + public void testWriteTo() throws IOException { + ByteArrayOutputStream bos = new ByteArrayOutputStream(); + stringUnderTest.writeTo(bos); + byte[] roundTripBytes = bos.toByteArray(); + assertTrue(classUnderTest + ".writeTo() must give back the same bytes", + Arrays.equals(referenceBytes, roundTripBytes)); + } + + public void testWriteTo_mutating() throws IOException { + OutputStream os = new OutputStream() { + @Override + public void write(byte[] b, int off, int len) { + for (int x = 0; x < len; ++x) { + b[off + x] = (byte) 0; + } + } + + @Override + public void write(int b) { + // Purposefully left blank. + } + }; + + stringUnderTest.writeTo(os); + byte[] newBytes = stringUnderTest.toByteArray(); + assertTrue(classUnderTest + ".writeTo() must not grant access to underlying array", + Arrays.equals(referenceBytes, newBytes)); + } + + public void testNewOutput() throws IOException { + ByteArrayOutputStream bos = new ByteArrayOutputStream(); + ByteString.Output output = ByteString.newOutput(); + stringUnderTest.writeTo(output); + assertEquals("Output Size returns correct result", + output.size(), stringUnderTest.size()); + output.writeTo(bos); + assertTrue("Output.writeTo() must give back the same bytes", + Arrays.equals(referenceBytes, bos.toByteArray())); + + // write the output stream to itself! This should cause it to double + output.writeTo(output); + assertEquals("Writing an output stream to itself is successful", + stringUnderTest.concat(stringUnderTest), output.toByteString()); + + output.reset(); + assertEquals("Output.reset() resets the output", 0, output.size()); + assertEquals("Output.reset() resets the output", + ByteString.EMPTY, output.toByteString()); + + } + + public void testToString() throws UnsupportedEncodingException { + String testString = "I love unicode \u1234\u5678 characters"; + LiteralByteString unicode = new LiteralByteString(testString.getBytes(UTF_8)); + String roundTripString = unicode.toString(UTF_8); + assertEquals(classUnderTest + " unicode must match", testString, roundTripString); + } + + public void testEquals() { + assertEquals(classUnderTest + " must not equal null", false, stringUnderTest.equals(null)); + assertEquals(classUnderTest + " must equal self", stringUnderTest, stringUnderTest); + assertFalse(classUnderTest + " must not equal the empty string", + stringUnderTest.equals(ByteString.EMPTY)); + assertEquals(classUnderTest + " empty strings must be equal", + new LiteralByteString(new byte[]{}), stringUnderTest.substring(55, 55)); + assertEquals(classUnderTest + " must equal another string with the same value", + stringUnderTest, new LiteralByteString(referenceBytes)); + + byte[] mungedBytes = new byte[referenceBytes.length]; + System.arraycopy(referenceBytes, 0, mungedBytes, 0, referenceBytes.length); + mungedBytes[mungedBytes.length - 5] ^= 0xFF; + assertFalse(classUnderTest + " must not equal every string with the same length", + stringUnderTest.equals(new LiteralByteString(mungedBytes))); + } + + public void testHashCode() { + int hash = stringUnderTest.hashCode(); + assertEquals(classUnderTest + " must have expected hashCode", expectedHashCode, hash); + } + + public void testPeekCachedHashCode() { + assertEquals(classUnderTest + ".peekCachedHashCode() should return zero at first", 0, + stringUnderTest.peekCachedHashCode()); + stringUnderTest.hashCode(); + assertEquals(classUnderTest + ".peekCachedHashCode should return zero at first", + expectedHashCode, stringUnderTest.peekCachedHashCode()); + } + + public void testPartialHash() { + // partialHash() is more strenuously tested elsewhere by testing hashes of substrings. + // This test would fail if the expected hash were 1. It's not. + int hash = stringUnderTest.partialHash(stringUnderTest.size(), 0, stringUnderTest.size()); + assertEquals(classUnderTest + ".partialHash() must yield expected hashCode", + expectedHashCode, hash); + } + + public void testNewInput() throws IOException { + InputStream input = stringUnderTest.newInput(); + assertEquals("InputStream.available() returns correct value", + stringUnderTest.size(), input.available()); + boolean stillEqual = true; + for (byte referenceByte : referenceBytes) { + int expectedInt = (referenceByte & 0xFF); + stillEqual = (expectedInt == input.read()); + } + assertEquals("InputStream.available() returns correct value", + 0, input.available()); + assertTrue(classUnderTest + " must give the same bytes from the InputStream", stillEqual); + assertEquals(classUnderTest + " InputStream must now be exhausted", -1, input.read()); + } + + public void testNewInput_skip() throws IOException { + InputStream input = stringUnderTest.newInput(); + int stringSize = stringUnderTest.size(); + int nearEndIndex = stringSize * 2 / 3; + long skipped1 = input.skip(nearEndIndex); + assertEquals("InputStream.skip()", skipped1, nearEndIndex); + assertEquals("InputStream.available()", + stringSize - skipped1, input.available()); + assertTrue("InputStream.mark() is available", input.markSupported()); + input.mark(0); + assertEquals("InputStream.skip(), read()", + stringUnderTest.byteAt(nearEndIndex) & 0xFF, input.read()); + assertEquals("InputStream.available()", + stringSize - skipped1 - 1, input.available()); + long skipped2 = input.skip(stringSize); + assertEquals("InputStream.skip() incomplete", + skipped2, stringSize - skipped1 - 1); + assertEquals("InputStream.skip(), no more input", 0, input.available()); + assertEquals("InputStream.skip(), no more input", -1, input.read()); + input.reset(); + assertEquals("InputStream.reset() succeded", + stringSize - skipped1, input.available()); + assertEquals("InputStream.reset(), read()", + stringUnderTest.byteAt(nearEndIndex) & 0xFF, input.read()); + } + + public void testNewCodedInput() throws IOException { + CodedInputStream cis = stringUnderTest.newCodedInput(); + byte[] roundTripBytes = cis.readRawBytes(referenceBytes.length); + assertTrue(classUnderTest + " must give the same bytes back from the CodedInputStream", + Arrays.equals(referenceBytes, roundTripBytes)); + assertTrue(classUnderTest + " CodedInputStream must now be exhausted", cis.isAtEnd()); + } + + /** + * Make sure we keep things simple when concatenating with empty. See also + * {@link ByteStringTest#testConcat_empty()}. + */ + public void testConcat_empty() { + assertSame(classUnderTest + " concatenated with empty must give " + classUnderTest, + stringUnderTest.concat(ByteString.EMPTY), stringUnderTest); + assertSame("empty concatenated with " + classUnderTest + " must give " + classUnderTest, + ByteString.EMPTY.concat(stringUnderTest), stringUnderTest); + } +} diff --git a/cpp/thirdparty/protobuf-2.3.0/java/src/test/java/com/google/protobuf/MessageTest.java b/cpp/thirdparty/protobuf-2.5.0/java/src/test/java/com/google/protobuf/MessageTest.java similarity index 86% rename from cpp/thirdparty/protobuf-2.3.0/java/src/test/java/com/google/protobuf/MessageTest.java rename to cpp/thirdparty/protobuf-2.5.0/java/src/test/java/com/google/protobuf/MessageTest.java index c2f47eb2b..747fed751 100644 --- a/cpp/thirdparty/protobuf-2.3.0/java/src/test/java/com/google/protobuf/MessageTest.java +++ b/cpp/thirdparty/protobuf-2.5.0/java/src/test/java/com/google/protobuf/MessageTest.java @@ -38,6 +38,8 @@ import protobuf_unittest.UnittestProto.ForeignMessage; import junit.framework.TestCase; +import java.util.List; + /** * Misc. unit tests for message operations that apply to both generated * and dynamic messages. @@ -310,4 +312,42 @@ public class MessageTest extends TestCase { assertEquals("Message missing required fields: a, b, c", e.getMessage()); } } + + /** Test reading unset repeated message from DynamicMessage. */ + public void testDynamicRepeatedMessageNull() throws Exception { + Descriptors.Descriptor descriptor = TestRequired.getDescriptor(); + DynamicMessage result = + DynamicMessage.newBuilder(TestAllTypes.getDescriptor()) + .mergeFrom(DynamicMessage.newBuilder(MERGE_SOURCE).build()) + .build(); + + assertTrue(result.getField(result.getDescriptorForType() + .findFieldByName("repeated_foreign_message")) instanceof List); + assertEquals(result.getRepeatedFieldCount(result.getDescriptorForType() + .findFieldByName("repeated_foreign_message")), 0); + } + + /** Test reading repeated message from DynamicMessage. */ + public void testDynamicRepeatedMessageNotNull() throws Exception { + + TestAllTypes REPEATED_NESTED = + TestAllTypes.newBuilder() + .setOptionalInt32(1) + .setOptionalString("foo") + .setOptionalForeignMessage(ForeignMessage.getDefaultInstance()) + .addRepeatedString("bar") + .addRepeatedForeignMessage(ForeignMessage.getDefaultInstance()) + .addRepeatedForeignMessage(ForeignMessage.getDefaultInstance()) + .build(); + Descriptors.Descriptor descriptor = TestRequired.getDescriptor(); + DynamicMessage result = + DynamicMessage.newBuilder(TestAllTypes.getDescriptor()) + .mergeFrom(DynamicMessage.newBuilder(REPEATED_NESTED).build()) + .build(); + + assertTrue(result.getField(result.getDescriptorForType() + .findFieldByName("repeated_foreign_message")) instanceof List); + assertEquals(result.getRepeatedFieldCount(result.getDescriptorForType() + .findFieldByName("repeated_foreign_message")), 2); + } } diff --git a/cpp/thirdparty/protobuf-2.5.0/java/src/test/java/com/google/protobuf/NestedBuildersTest.java b/cpp/thirdparty/protobuf-2.5.0/java/src/test/java/com/google/protobuf/NestedBuildersTest.java new file mode 100644 index 000000000..f53758015 --- /dev/null +++ b/cpp/thirdparty/protobuf-2.5.0/java/src/test/java/com/google/protobuf/NestedBuildersTest.java @@ -0,0 +1,185 @@ +// Protocol Buffers - Google's data interchange format +// Copyright 2008 Google Inc. All rights reserved. +// http://code.google.com/p/protobuf/ +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +package com.google.protobuf; + +import protobuf_unittest.Vehicle; +import protobuf_unittest.Wheel; + +import junit.framework.TestCase; + +import java.util.List; +import java.util.ArrayList; + +/** + * Test cases that exercise end-to-end use cases involving + * {@link SingleFieldBuilder} and {@link RepeatedFieldBuilder}. + * + * @author jonp@google.com (Jon Perlow) + */ +public class NestedBuildersTest extends TestCase { + + public void testMessagesAndBuilders() { + Vehicle.Builder vehicleBuilder = Vehicle.newBuilder(); + vehicleBuilder.addWheelBuilder() + .setRadius(4) + .setWidth(1); + vehicleBuilder.addWheelBuilder() + .setRadius(4) + .setWidth(2); + vehicleBuilder.addWheelBuilder() + .setRadius(4) + .setWidth(3); + vehicleBuilder.addWheelBuilder() + .setRadius(4) + .setWidth(4); + vehicleBuilder.getEngineBuilder() + .setLiters(10); + + Vehicle vehicle = vehicleBuilder.build(); + assertEquals(4, vehicle.getWheelCount()); + for (int i = 0; i < 4; i++) { + Wheel wheel = vehicle.getWheel(i); + assertEquals(4, wheel.getRadius()); + assertEquals(i + 1, wheel.getWidth()); + } + assertEquals(10, vehicle.getEngine().getLiters()); + + for (int i = 0; i < 4; i++) { + vehicleBuilder.getWheelBuilder(i) + .setRadius(5) + .setWidth(i + 10); + } + vehicleBuilder.getEngineBuilder().setLiters(20); + + vehicle = vehicleBuilder.build(); + for (int i = 0; i < 4; i++) { + Wheel wheel = vehicle.getWheel(i); + assertEquals(5, wheel.getRadius()); + assertEquals(i + 10, wheel.getWidth()); + } + assertEquals(20, vehicle.getEngine().getLiters()); + assertTrue(vehicle.hasEngine()); + } + + public void testMessagesAreCached() { + Vehicle.Builder vehicleBuilder = Vehicle.newBuilder(); + vehicleBuilder.addWheelBuilder() + .setRadius(1) + .setWidth(2); + vehicleBuilder.addWheelBuilder() + .setRadius(3) + .setWidth(4); + vehicleBuilder.addWheelBuilder() + .setRadius(5) + .setWidth(6); + vehicleBuilder.addWheelBuilder() + .setRadius(7) + .setWidth(8); + + // Make sure messages are cached. + List wheels = new ArrayList(vehicleBuilder.getWheelList()); + for (int i = 0; i < wheels.size(); i++) { + assertSame(wheels.get(i), vehicleBuilder.getWheel(i)); + } + + // Now get builders and check they didn't change. + for (int i = 0; i < wheels.size(); i++) { + vehicleBuilder.getWheel(i); + } + for (int i = 0; i < wheels.size(); i++) { + assertSame(wheels.get(i), vehicleBuilder.getWheel(i)); + } + + // Change just one + vehicleBuilder.getWheelBuilder(3) + .setRadius(20).setWidth(20); + + // Now get wheels and check that only that one changed + for (int i = 0; i < wheels.size(); i++) { + if (i < 3) { + assertSame(wheels.get(i), vehicleBuilder.getWheel(i)); + } else { + assertNotSame(wheels.get(i), vehicleBuilder.getWheel(i)); + } + } + } + + public void testRemove_WithNestedBuilders() { + Vehicle.Builder vehicleBuilder = Vehicle.newBuilder(); + vehicleBuilder.addWheelBuilder() + .setRadius(1) + .setWidth(1); + vehicleBuilder.addWheelBuilder() + .setRadius(2) + .setWidth(2); + vehicleBuilder.removeWheel(0); + + assertEquals(1, vehicleBuilder.getWheelCount()); + assertEquals(2, vehicleBuilder.getWheel(0).getRadius()); + } + + public void testRemove_WithNestedMessages() { + Vehicle.Builder vehicleBuilder = Vehicle.newBuilder(); + vehicleBuilder.addWheel(Wheel.newBuilder() + .setRadius(1) + .setWidth(1)); + vehicleBuilder.addWheel(Wheel.newBuilder() + .setRadius(2) + .setWidth(2)); + vehicleBuilder.removeWheel(0); + + assertEquals(1, vehicleBuilder.getWheelCount()); + assertEquals(2, vehicleBuilder.getWheel(0).getRadius()); + } + + public void testMerge() { + Vehicle vehicle1 = Vehicle.newBuilder() + .addWheel(Wheel.newBuilder().setRadius(1).build()) + .addWheel(Wheel.newBuilder().setRadius(2).build()) + .build(); + + Vehicle vehicle2 = Vehicle.newBuilder() + .mergeFrom(vehicle1) + .build(); + // List should be the same -- no allocation + assertSame(vehicle1.getWheelList(), vehicle2.getWheelList()); + + Vehicle vehicle3 = vehicle1.toBuilder().build(); + assertSame(vehicle1.getWheelList(), vehicle3.getWheelList()); + } + + public void testGettingBuilderMarksFieldAsHaving() { + Vehicle.Builder vehicleBuilder = Vehicle.newBuilder(); + vehicleBuilder.getEngineBuilder(); + Vehicle vehicle = vehicleBuilder.buildPartial(); + assertTrue(vehicle.hasEngine()); + } +} diff --git a/cpp/thirdparty/protobuf-2.5.0/java/src/test/java/com/google/protobuf/ParserTest.java b/cpp/thirdparty/protobuf-2.5.0/java/src/test/java/com/google/protobuf/ParserTest.java new file mode 100644 index 000000000..396902cfc --- /dev/null +++ b/cpp/thirdparty/protobuf-2.5.0/java/src/test/java/com/google/protobuf/ParserTest.java @@ -0,0 +1,375 @@ +// Protocol Buffers - Google's data interchange format +// Copyright 2008 Google Inc. All rights reserved. +// http://code.google.com/p/protobuf/ +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +package com.google.protobuf; + +import com.google.protobuf.UnittestLite.TestAllTypesLite; +import com.google.protobuf.UnittestLite.TestPackedExtensionsLite; +import com.google.protobuf.UnittestLite.TestParsingMergeLite; +import com.google.protobuf.UnittestLite; +import protobuf_unittest.UnittestOptimizeFor.TestOptimizedForSize; +import protobuf_unittest.UnittestOptimizeFor.TestRequiredOptimizedForSize; +import protobuf_unittest.UnittestOptimizeFor; +import protobuf_unittest.UnittestProto.ForeignMessage; +import protobuf_unittest.UnittestProto.TestAllTypes; +import protobuf_unittest.UnittestProto.TestEmptyMessage; +import protobuf_unittest.UnittestProto.TestRequired; +import protobuf_unittest.UnittestProto.TestParsingMerge; +import protobuf_unittest.UnittestProto; + +import junit.framework.TestCase; + +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; +import java.io.IOException; +import java.io.InputStream; + +/** + * Unit test for {@link Parser}. + * + * @author liujisi@google.com (Pherl Liu) + */ +public class ParserTest extends TestCase { + public void testGeneratedMessageParserSingleton() throws Exception { + for (int i = 0; i < 10; i++) { + assertEquals(TestAllTypes.PARSER, + TestUtil.getAllSet().getParserForType()); + } + } + + private void assertRoundTripEquals(MessageLite message, + ExtensionRegistryLite registry) + throws Exception { + final byte[] data = message.toByteArray(); + final int offset = 20; + final int length = data.length; + final int padding = 30; + Parser parser = message.getParserForType(); + assertMessageEquals(message, parser.parseFrom(data, registry)); + assertMessageEquals(message, parser.parseFrom( + generatePaddingArray(data, offset, padding), + offset, length, registry)); + assertMessageEquals(message, parser.parseFrom( + message.toByteString(), registry)); + assertMessageEquals(message, parser.parseFrom( + new ByteArrayInputStream(data), registry)); + assertMessageEquals(message, parser.parseFrom( + CodedInputStream.newInstance(data), registry)); + } + + private void assertRoundTripEquals(MessageLite message) throws Exception { + final byte[] data = message.toByteArray(); + final int offset = 20; + final int length = data.length; + final int padding = 30; + Parser parser = message.getParserForType(); + assertMessageEquals(message, parser.parseFrom(data)); + assertMessageEquals(message, parser.parseFrom( + generatePaddingArray(data, offset, padding), + offset, length)); + assertMessageEquals(message, parser.parseFrom(message.toByteString())); + assertMessageEquals(message, parser.parseFrom( + new ByteArrayInputStream(data))); + assertMessageEquals(message, parser.parseFrom( + CodedInputStream.newInstance(data))); + } + + private void assertMessageEquals(MessageLite expected, MessageLite actual) + throws Exception { + if (expected instanceof Message) { + assertEquals(expected, actual); + } else { + assertEquals(expected.toByteString(), actual.toByteString()); + } + } + + private byte[] generatePaddingArray(byte[] data, int offset, int padding) { + byte[] result = new byte[offset + data.length + padding]; + System.arraycopy(data, 0, result, offset, data.length); + return result; + } + + public void testNormalMessage() throws Exception { + assertRoundTripEquals(TestUtil.getAllSet()); + } + + public void testParsePartial() throws Exception { + Parser parser = TestRequired.PARSER; + final String errorString = + "Should throw exceptions when the parsed message isn't initialized."; + + // TestRequired.b and TestRequired.c are not set. + TestRequired partialMessage = TestRequired.newBuilder() + .setA(1).buildPartial(); + + // parsePartialFrom should pass. + byte[] data = partialMessage.toByteArray(); + assertEquals(partialMessage, parser.parsePartialFrom(data)); + assertEquals(partialMessage, parser.parsePartialFrom( + partialMessage.toByteString())); + assertEquals(partialMessage, parser.parsePartialFrom( + new ByteArrayInputStream(data))); + assertEquals(partialMessage, parser.parsePartialFrom( + CodedInputStream.newInstance(data))); + + // parseFrom(ByteArray) + try { + parser.parseFrom(partialMessage.toByteArray()); + fail(errorString); + } catch (InvalidProtocolBufferException e) { + // pass. + } + + // parseFrom(ByteString) + try { + parser.parseFrom(partialMessage.toByteString()); + fail(errorString); + } catch (InvalidProtocolBufferException e) { + // pass. + } + + // parseFrom(InputStream) + try { + parser.parseFrom(new ByteArrayInputStream(partialMessage.toByteArray())); + fail(errorString); + } catch (IOException e) { + // pass. + } + + // parseFrom(CodedInputStream) + try { + parser.parseFrom(CodedInputStream.newInstance( + partialMessage.toByteArray())); + fail(errorString); + } catch (IOException e) { + // pass. + } + } + + public void testParseExtensions() throws Exception { + assertRoundTripEquals(TestUtil.getAllExtensionsSet(), + TestUtil.getExtensionRegistry()); + assertRoundTripEquals(TestUtil.getAllLiteExtensionsSet(), + TestUtil.getExtensionRegistryLite()); + } + + public void testParsePacked() throws Exception { + assertRoundTripEquals(TestUtil.getPackedSet()); + assertRoundTripEquals(TestUtil.getPackedExtensionsSet(), + TestUtil.getExtensionRegistry()); + assertRoundTripEquals(TestUtil.getLitePackedExtensionsSet(), + TestUtil.getExtensionRegistryLite()); + } + + public void testParseDelimitedTo() throws Exception { + // Write normal Message. + TestAllTypes normalMessage = TestUtil.getAllSet(); + ByteArrayOutputStream output = new ByteArrayOutputStream(); + normalMessage.writeDelimitedTo(output); + + // Write MessageLite with packed extension fields. + TestPackedExtensionsLite packedMessage = + TestUtil.getLitePackedExtensionsSet(); + packedMessage.writeDelimitedTo(output); + + InputStream input = new ByteArrayInputStream(output.toByteArray()); + assertMessageEquals( + normalMessage, + normalMessage.getParserForType().parseDelimitedFrom(input)); + assertMessageEquals( + packedMessage, + packedMessage.getParserForType().parseDelimitedFrom( + input, TestUtil.getExtensionRegistryLite())); + } + + public void testParseUnknownFields() throws Exception { + // All fields will be treated as unknown fields in emptyMessage. + TestEmptyMessage emptyMessage = TestEmptyMessage.PARSER.parseFrom( + TestUtil.getAllSet().toByteString()); + assertEquals( + TestUtil.getAllSet().toByteString(), + emptyMessage.toByteString()); + } + + public void testOptimizeForSize() throws Exception { + TestOptimizedForSize.Builder builder = TestOptimizedForSize.newBuilder(); + builder.setI(12).setMsg(ForeignMessage.newBuilder().setC(34).build()); + builder.setExtension(TestOptimizedForSize.testExtension, 56); + builder.setExtension(TestOptimizedForSize.testExtension2, + TestRequiredOptimizedForSize.newBuilder().setX(78).build()); + + TestOptimizedForSize message = builder.build(); + ExtensionRegistry registry = ExtensionRegistry.newInstance(); + UnittestOptimizeFor.registerAllExtensions(registry); + + assertRoundTripEquals(message, registry); + } + + /** Helper method for {@link #testParsingMerge()}.*/ + private void assertMessageMerged(TestAllTypes allTypes) + throws Exception { + assertEquals(3, allTypes.getOptionalInt32()); + assertEquals(2, allTypes.getOptionalInt64()); + assertEquals("hello", allTypes.getOptionalString()); + } + + /** Helper method for {@link #testParsingMergeLite()}.*/ + private void assertMessageMerged(TestAllTypesLite allTypes) + throws Exception { + assertEquals(3, allTypes.getOptionalInt32()); + assertEquals(2, allTypes.getOptionalInt64()); + assertEquals("hello", allTypes.getOptionalString()); + } + + public void testParsingMerge() throws Exception { + // Build messages. + TestAllTypes.Builder builder = TestAllTypes.newBuilder(); + TestAllTypes msg1 = builder.setOptionalInt32(1).build(); + builder.clear(); + TestAllTypes msg2 = builder.setOptionalInt64(2).build(); + builder.clear(); + TestAllTypes msg3 = builder.setOptionalInt32(3) + .setOptionalString("hello").build(); + + // Build groups. + TestParsingMerge.RepeatedFieldsGenerator.Group1 optionalG1 = + TestParsingMerge.RepeatedFieldsGenerator.Group1.newBuilder() + .setField1(msg1).build(); + TestParsingMerge.RepeatedFieldsGenerator.Group1 optionalG2 = + TestParsingMerge.RepeatedFieldsGenerator.Group1.newBuilder() + .setField1(msg2).build(); + TestParsingMerge.RepeatedFieldsGenerator.Group1 optionalG3 = + TestParsingMerge.RepeatedFieldsGenerator.Group1.newBuilder() + .setField1(msg3).build(); + TestParsingMerge.RepeatedFieldsGenerator.Group2 repeatedG1 = + TestParsingMerge.RepeatedFieldsGenerator.Group2.newBuilder() + .setField1(msg1).build(); + TestParsingMerge.RepeatedFieldsGenerator.Group2 repeatedG2 = + TestParsingMerge.RepeatedFieldsGenerator.Group2.newBuilder() + .setField1(msg2).build(); + TestParsingMerge.RepeatedFieldsGenerator.Group2 repeatedG3 = + TestParsingMerge.RepeatedFieldsGenerator.Group2.newBuilder() + .setField1(msg3).build(); + + // Assign and serialize RepeatedFieldsGenerator. + ByteString data = TestParsingMerge.RepeatedFieldsGenerator.newBuilder() + .addField1(msg1).addField1(msg2).addField1(msg3) + .addField2(msg1).addField2(msg2).addField2(msg3) + .addField3(msg1).addField3(msg2).addField3(msg3) + .addGroup1(optionalG1).addGroup1(optionalG2).addGroup1(optionalG3) + .addGroup2(repeatedG1).addGroup2(repeatedG2).addGroup2(repeatedG3) + .addExt1(msg1).addExt1(msg2).addExt1(msg3) + .addExt2(msg1).addExt2(msg2).addExt2(msg3) + .build().toByteString(); + + // Parse TestParsingMerge. + ExtensionRegistry registry = ExtensionRegistry.newInstance(); + UnittestProto.registerAllExtensions(registry); + TestParsingMerge parsingMerge = + TestParsingMerge.PARSER.parseFrom(data, registry); + + // Required and optional fields should be merged. + assertMessageMerged(parsingMerge.getRequiredAllTypes()); + assertMessageMerged(parsingMerge.getOptionalAllTypes()); + assertMessageMerged( + parsingMerge.getOptionalGroup().getOptionalGroupAllTypes()); + assertMessageMerged(parsingMerge.getExtension( + TestParsingMerge.optionalExt)); + + // Repeated fields should not be merged. + assertEquals(3, parsingMerge.getRepeatedAllTypesCount()); + assertEquals(3, parsingMerge.getRepeatedGroupCount()); + assertEquals(3, parsingMerge.getExtensionCount( + TestParsingMerge.repeatedExt)); + } + + public void testParsingMergeLite() throws Exception { + // Build messages. + TestAllTypesLite.Builder builder = + TestAllTypesLite.newBuilder(); + TestAllTypesLite msg1 = builder.setOptionalInt32(1).build(); + builder.clear(); + TestAllTypesLite msg2 = builder.setOptionalInt64(2).build(); + builder.clear(); + TestAllTypesLite msg3 = builder.setOptionalInt32(3) + .setOptionalString("hello").build(); + + // Build groups. + TestParsingMergeLite.RepeatedFieldsGenerator.Group1 optionalG1 = + TestParsingMergeLite.RepeatedFieldsGenerator.Group1.newBuilder() + .setField1(msg1).build(); + TestParsingMergeLite.RepeatedFieldsGenerator.Group1 optionalG2 = + TestParsingMergeLite.RepeatedFieldsGenerator.Group1.newBuilder() + .setField1(msg2).build(); + TestParsingMergeLite.RepeatedFieldsGenerator.Group1 optionalG3 = + TestParsingMergeLite.RepeatedFieldsGenerator.Group1.newBuilder() + .setField1(msg3).build(); + TestParsingMergeLite.RepeatedFieldsGenerator.Group2 repeatedG1 = + TestParsingMergeLite.RepeatedFieldsGenerator.Group2.newBuilder() + .setField1(msg1).build(); + TestParsingMergeLite.RepeatedFieldsGenerator.Group2 repeatedG2 = + TestParsingMergeLite.RepeatedFieldsGenerator.Group2.newBuilder() + .setField1(msg2).build(); + TestParsingMergeLite.RepeatedFieldsGenerator.Group2 repeatedG3 = + TestParsingMergeLite.RepeatedFieldsGenerator.Group2.newBuilder() + .setField1(msg3).build(); + + // Assign and serialize RepeatedFieldsGenerator. + ByteString data = TestParsingMergeLite.RepeatedFieldsGenerator.newBuilder() + .addField1(msg1).addField1(msg2).addField1(msg3) + .addField2(msg1).addField2(msg2).addField2(msg3) + .addField3(msg1).addField3(msg2).addField3(msg3) + .addGroup1(optionalG1).addGroup1(optionalG2).addGroup1(optionalG3) + .addGroup2(repeatedG1).addGroup2(repeatedG2).addGroup2(repeatedG3) + .addExt1(msg1).addExt1(msg2).addExt1(msg3) + .addExt2(msg1).addExt2(msg2).addExt2(msg3) + .build().toByteString(); + + // Parse TestParsingMergeLite. + ExtensionRegistry registry = ExtensionRegistry.newInstance(); + UnittestLite.registerAllExtensions(registry); + TestParsingMergeLite parsingMerge = + TestParsingMergeLite.PARSER.parseFrom(data, registry); + + // Required and optional fields should be merged. + assertMessageMerged(parsingMerge.getRequiredAllTypes()); + assertMessageMerged(parsingMerge.getOptionalAllTypes()); + assertMessageMerged( + parsingMerge.getOptionalGroup().getOptionalGroupAllTypes()); + assertMessageMerged(parsingMerge.getExtension( + TestParsingMergeLite.optionalExt)); + + // Repeated fields should not be merged. + assertEquals(3, parsingMerge.getRepeatedAllTypesCount()); + assertEquals(3, parsingMerge.getRepeatedGroupCount()); + assertEquals(3, parsingMerge.getExtensionCount( + TestParsingMergeLite.repeatedExt)); + } +} diff --git a/cpp/thirdparty/protobuf-2.5.0/java/src/test/java/com/google/protobuf/RepeatedFieldBuilderTest.java b/cpp/thirdparty/protobuf-2.5.0/java/src/test/java/com/google/protobuf/RepeatedFieldBuilderTest.java new file mode 100644 index 000000000..cdcdcb250 --- /dev/null +++ b/cpp/thirdparty/protobuf-2.5.0/java/src/test/java/com/google/protobuf/RepeatedFieldBuilderTest.java @@ -0,0 +1,190 @@ +// Protocol Buffers - Google's data interchange format +// Copyright 2008 Google Inc. All rights reserved. +// http://code.google.com/p/protobuf/ +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +package com.google.protobuf; + +import protobuf_unittest.UnittestProto.TestAllTypes; +import protobuf_unittest.UnittestProto.TestAllTypesOrBuilder; + +import junit.framework.TestCase; + +import java.util.Collections; +import java.util.List; + +/** + * Tests for {@link RepeatedFieldBuilder}. This tests basic functionality. + * More extensive testing is provided via other tests that exercise the + * builder. + * + * @author jonp@google.com (Jon Perlow) + */ +public class RepeatedFieldBuilderTest extends TestCase { + + public void testBasicUse() { + TestUtil.MockBuilderParent mockParent = new TestUtil.MockBuilderParent(); + RepeatedFieldBuilder builder = newRepeatedFieldBuilder(mockParent); + builder.addMessage(TestAllTypes.newBuilder().setOptionalInt32(0).build()); + builder.addMessage(TestAllTypes.newBuilder().setOptionalInt32(1).build()); + assertEquals(0, builder.getMessage(0).getOptionalInt32()); + assertEquals(1, builder.getMessage(1).getOptionalInt32()); + + List list = builder.build(); + assertEquals(2, list.size()); + assertEquals(0, list.get(0).getOptionalInt32()); + assertEquals(1, list.get(1).getOptionalInt32()); + assertIsUnmodifiable(list); + + // Make sure it doesn't change. + List list2 = builder.build(); + assertSame(list, list2); + assertEquals(0, mockParent.getInvalidationCount()); + } + + public void testGoingBackAndForth() { + TestUtil.MockBuilderParent mockParent = new TestUtil.MockBuilderParent(); + RepeatedFieldBuilder builder = newRepeatedFieldBuilder(mockParent); + builder.addMessage(TestAllTypes.newBuilder().setOptionalInt32(0).build()); + builder.addMessage(TestAllTypes.newBuilder().setOptionalInt32(1).build()); + assertEquals(0, builder.getMessage(0).getOptionalInt32()); + assertEquals(1, builder.getMessage(1).getOptionalInt32()); + + // Convert to list + List list = builder.build(); + assertEquals(2, list.size()); + assertEquals(0, list.get(0).getOptionalInt32()); + assertEquals(1, list.get(1).getOptionalInt32()); + assertIsUnmodifiable(list); + + // Update 0th item + assertEquals(0, mockParent.getInvalidationCount()); + builder.getBuilder(0).setOptionalString("foo"); + assertEquals(1, mockParent.getInvalidationCount()); + list = builder.build(); + assertEquals(2, list.size()); + assertEquals(0, list.get(0).getOptionalInt32()); + assertEquals("foo", list.get(0).getOptionalString()); + assertEquals(1, list.get(1).getOptionalInt32()); + assertIsUnmodifiable(list); + assertEquals(1, mockParent.getInvalidationCount()); + } + + public void testVariousMethods() { + TestUtil.MockBuilderParent mockParent = new TestUtil.MockBuilderParent(); + RepeatedFieldBuilder builder = newRepeatedFieldBuilder(mockParent); + builder.addMessage(TestAllTypes.newBuilder().setOptionalInt32(1).build()); + builder.addMessage(TestAllTypes.newBuilder().setOptionalInt32(2).build()); + builder.addBuilder(0, TestAllTypes.getDefaultInstance()) + .setOptionalInt32(0); + builder.addBuilder(TestAllTypes.getDefaultInstance()).setOptionalInt32(3); + + assertEquals(0, builder.getMessage(0).getOptionalInt32()); + assertEquals(1, builder.getMessage(1).getOptionalInt32()); + assertEquals(2, builder.getMessage(2).getOptionalInt32()); + assertEquals(3, builder.getMessage(3).getOptionalInt32()); + + assertEquals(0, mockParent.getInvalidationCount()); + List messages = builder.build(); + assertEquals(4, messages.size()); + assertSame(messages, builder.build()); // expect same list + + // Remove a message. + builder.remove(2); + assertEquals(1, mockParent.getInvalidationCount()); + assertEquals(3, builder.getCount()); + assertEquals(0, builder.getMessage(0).getOptionalInt32()); + assertEquals(1, builder.getMessage(1).getOptionalInt32()); + assertEquals(3, builder.getMessage(2).getOptionalInt32()); + + // Remove a builder. + builder.remove(0); + assertEquals(1, mockParent.getInvalidationCount()); + assertEquals(2, builder.getCount()); + assertEquals(1, builder.getMessage(0).getOptionalInt32()); + assertEquals(3, builder.getMessage(1).getOptionalInt32()); + + // Test clear. + builder.clear(); + assertEquals(1, mockParent.getInvalidationCount()); + assertEquals(0, builder.getCount()); + assertTrue(builder.isEmpty()); + } + + public void testLists() { + TestUtil.MockBuilderParent mockParent = new TestUtil.MockBuilderParent(); + RepeatedFieldBuilder builder = newRepeatedFieldBuilder(mockParent); + builder.addMessage(TestAllTypes.newBuilder().setOptionalInt32(1).build()); + builder.addMessage(0, + TestAllTypes.newBuilder().setOptionalInt32(0).build()); + assertEquals(0, builder.getMessage(0).getOptionalInt32()); + assertEquals(1, builder.getMessage(1).getOptionalInt32()); + + // Use list of builders. + List builders = builder.getBuilderList(); + assertEquals(0, builders.get(0).getOptionalInt32()); + assertEquals(1, builders.get(1).getOptionalInt32()); + builders.get(0).setOptionalInt32(10); + builders.get(1).setOptionalInt32(11); + + // Use list of protos + List protos = builder.getMessageList(); + assertEquals(10, protos.get(0).getOptionalInt32()); + assertEquals(11, protos.get(1).getOptionalInt32()); + + // Add an item to the builders and verify it's updated in both + builder.addMessage(TestAllTypes.newBuilder().setOptionalInt32(12).build()); + assertEquals(3, builders.size()); + assertEquals(3, protos.size()); + } + + private void assertIsUnmodifiable(List list) { + if (list == Collections.emptyList()) { + // OKAY -- Need to check this b/c EmptyList allows you to call clear. + } else { + try { + list.clear(); + fail("List wasn't immutable"); + } catch (UnsupportedOperationException e) { + // good + } + } + } + + private RepeatedFieldBuilder + newRepeatedFieldBuilder(GeneratedMessage.BuilderParent parent) { + return new RepeatedFieldBuilder(Collections.emptyList(), false, + parent, false); + } +} diff --git a/cpp/thirdparty/protobuf-2.5.0/java/src/test/java/com/google/protobuf/RopeByteStringSubstringTest.java b/cpp/thirdparty/protobuf-2.5.0/java/src/test/java/com/google/protobuf/RopeByteStringSubstringTest.java new file mode 100644 index 000000000..06707a2fc --- /dev/null +++ b/cpp/thirdparty/protobuf-2.5.0/java/src/test/java/com/google/protobuf/RopeByteStringSubstringTest.java @@ -0,0 +1,97 @@ +// Protocol Buffers - Google's data interchange format +// Copyright 2008 Google Inc. All rights reserved. +// http://code.google.com/p/protobuf/ +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +package com.google.protobuf; + +import java.io.UnsupportedEncodingException; +import java.util.Iterator; + +/** + * This class tests {@link RopeByteString#substring(int, int)} by inheriting the tests from + * {@link LiteralByteStringTest}. Only a couple of methods are overridden. + * + * @author carlanton@google.com (Carl Haverl) + */ +public class RopeByteStringSubstringTest extends LiteralByteStringTest { + + @Override + protected void setUp() throws Exception { + classUnderTest = "RopeByteString"; + byte[] sourceBytes = ByteStringTest.getTestBytes(22341, 22337766L); + Iterator iter = ByteStringTest.makeConcretePieces(sourceBytes).iterator(); + ByteString sourceString = iter.next(); + while (iter.hasNext()) { + sourceString = sourceString.concat(iter.next()); + } + + int from = 1130; + int to = sourceBytes.length - 5555; + stringUnderTest = sourceString.substring(from, to); + referenceBytes = new byte[to - from]; + System.arraycopy(sourceBytes, from, referenceBytes, 0, to - from); + expectedHashCode = -1259260680; + } + + @Override + public void testGetTreeDepth() { + assertEquals(classUnderTest + " must have the expected tree depth", + 3, stringUnderTest.getTreeDepth()); + } + + @Override + public void testToString() throws UnsupportedEncodingException { + String sourceString = "I love unicode \u1234\u5678 characters"; + ByteString sourceByteString = ByteString.copyFromUtf8(sourceString); + int copies = 250; + + // By building the RopeByteString by concatenating, this is actually a fairly strenuous test. + StringBuilder builder = new StringBuilder(copies * sourceString.length()); + ByteString unicode = ByteString.EMPTY; + for (int i = 0; i < copies; ++i) { + builder.append(sourceString); + unicode = RopeByteString.concatenate(unicode, sourceByteString); + } + String testString = builder.toString(); + + // Do the substring part + testString = testString.substring(2, testString.length() - 6); + unicode = unicode.substring(2, unicode.size() - 6); + + assertEquals(classUnderTest + " from string must have the expected type", + classUnderTest, getActualClassName(unicode)); + String roundTripString = unicode.toString(UTF_8); + assertEquals(classUnderTest + " unicode bytes must match", + testString, roundTripString); + ByteString flatString = ByteString.copyFromUtf8(testString); + assertEquals(classUnderTest + " string must equal the flat string", flatString, unicode); + assertEquals(classUnderTest + " string must must have same hashCode as the flat string", + flatString.hashCode(), unicode.hashCode()); + } +} diff --git a/cpp/thirdparty/protobuf-2.5.0/java/src/test/java/com/google/protobuf/RopeByteStringTest.java b/cpp/thirdparty/protobuf-2.5.0/java/src/test/java/com/google/protobuf/RopeByteStringTest.java new file mode 100644 index 000000000..15f660d96 --- /dev/null +++ b/cpp/thirdparty/protobuf-2.5.0/java/src/test/java/com/google/protobuf/RopeByteStringTest.java @@ -0,0 +1,115 @@ +// Protocol Buffers - Google's data interchange format +// Copyright 2008 Google Inc. All rights reserved. +// http://code.google.com/p/protobuf/ +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +package com.google.protobuf; + +import java.io.UnsupportedEncodingException; +import java.util.Arrays; +import java.util.Iterator; + +/** + * This class tests {@link RopeByteString} by inheriting the tests from + * {@link LiteralByteStringTest}. Only a couple of methods are overridden. + * + *

A full test of the result of {@link RopeByteString#substring(int, int)} is found in the + * separate class {@link RopeByteStringSubstringTest}. + * + * @author carlanton@google.com (Carl Haverl) + */ +public class RopeByteStringTest extends LiteralByteStringTest { + + @Override + protected void setUp() throws Exception { + classUnderTest = "RopeByteString"; + referenceBytes = ByteStringTest.getTestBytes(22341, 22337766L); + Iterator iter = ByteStringTest.makeConcretePieces(referenceBytes).iterator(); + stringUnderTest = iter.next(); + while (iter.hasNext()) { + stringUnderTest = stringUnderTest.concat(iter.next()); + } + expectedHashCode = -1214197238; + } + + @Override + public void testGetTreeDepth() { + assertEquals(classUnderTest + " must have the expected tree depth", + 4, stringUnderTest.getTreeDepth()); + } + + public void testBalance() { + int numberOfPieces = 10000; + int pieceSize = 64; + byte[] testBytes = ByteStringTest.getTestBytes(numberOfPieces * pieceSize, 113377L); + + // Build up a big ByteString from smaller pieces to force a rebalance + ByteString concatenated = ByteString.EMPTY; + for (int i = 0; i < numberOfPieces; ++i) { + concatenated = concatenated.concat(ByteString.copyFrom(testBytes, i * pieceSize, pieceSize)); + } + + assertEquals(classUnderTest + " from string must have the expected type", + classUnderTest, getActualClassName(concatenated)); + assertTrue(classUnderTest + " underlying bytes must match after balancing", + Arrays.equals(testBytes, concatenated.toByteArray())); + ByteString testString = ByteString.copyFrom(testBytes); + assertTrue(classUnderTest + " balanced string must equal flat string", + concatenated.equals(testString)); + assertTrue(classUnderTest + " flat string must equal balanced string", + testString.equals(concatenated)); + assertEquals(classUnderTest + " balanced string must have same hash code as flat string", + testString.hashCode(), concatenated.hashCode()); + } + + @Override + public void testToString() throws UnsupportedEncodingException { + String sourceString = "I love unicode \u1234\u5678 characters"; + ByteString sourceByteString = ByteString.copyFromUtf8(sourceString); + int copies = 250; + + // By building the RopeByteString by concatenating, this is actually a fairly strenuous test. + StringBuilder builder = new StringBuilder(copies * sourceString.length()); + ByteString unicode = ByteString.EMPTY; + for (int i = 0; i < copies; ++i) { + builder.append(sourceString); + unicode = RopeByteString.concatenate(unicode, sourceByteString); + } + String testString = builder.toString(); + + assertEquals(classUnderTest + " from string must have the expected type", + classUnderTest, getActualClassName(unicode)); + String roundTripString = unicode.toString(UTF_8); + assertEquals(classUnderTest + " unicode bytes must match", + testString, roundTripString); + ByteString flatString = ByteString.copyFromUtf8(testString); + assertEquals(classUnderTest + " string must equal the flat string", flatString, unicode); + assertEquals(classUnderTest + " string must must have same hashCode as the flat string", + flatString.hashCode(), unicode.hashCode()); + } +} diff --git a/cpp/thirdparty/protobuf-2.3.0/java/src/test/java/com/google/protobuf/ServiceTest.java b/cpp/thirdparty/protobuf-2.5.0/java/src/test/java/com/google/protobuf/ServiceTest.java similarity index 97% rename from cpp/thirdparty/protobuf-2.3.0/java/src/test/java/com/google/protobuf/ServiceTest.java rename to cpp/thirdparty/protobuf-2.5.0/java/src/test/java/com/google/protobuf/ServiceTest.java index e10322dc8..4be84f5b1 100644 --- a/cpp/thirdparty/protobuf-2.3.0/java/src/test/java/com/google/protobuf/ServiceTest.java +++ b/cpp/thirdparty/protobuf-2.5.0/java/src/test/java/com/google/protobuf/ServiceTest.java @@ -205,12 +205,6 @@ public class ServiceTest extends TestCase { MethodDescriptor fooMethod = ServiceWithNoOuter.getDescriptor().findMethodByName("Foo"); MessageWithNoOuter request = MessageWithNoOuter.getDefaultInstance(); - RpcCallback callback = new RpcCallback() { - public void run(Message parameter) { - // No reason this should be run. - fail(); - } - }; TestAllTypes expectedResponse = TestAllTypes.getDefaultInstance(); EasyMock.expect(impl.foo(EasyMock.same(controller), EasyMock.same(request))) @@ -250,6 +244,14 @@ public class ServiceTest extends TestCase { // make assumptions, so I'm just going to accept any character as the // separator. assertTrue(fullName.startsWith(outerName)); + + if (!Service.class.isAssignableFrom(innerClass) && + !Message.class.isAssignableFrom(innerClass) && + !ProtocolMessageEnum.class.isAssignableFrom(innerClass)) { + // Ignore any classes not generated by the base code generator. + continue; + } + innerClassNames.add(fullName.substring(outerName.length() + 1)); } diff --git a/cpp/thirdparty/protobuf-2.5.0/java/src/test/java/com/google/protobuf/SingleFieldBuilderTest.java b/cpp/thirdparty/protobuf-2.5.0/java/src/test/java/com/google/protobuf/SingleFieldBuilderTest.java new file mode 100644 index 000000000..5c2f7e752 --- /dev/null +++ b/cpp/thirdparty/protobuf-2.5.0/java/src/test/java/com/google/protobuf/SingleFieldBuilderTest.java @@ -0,0 +1,155 @@ +// Protocol Buffers - Google's data interchange format +// Copyright 2008 Google Inc. All rights reserved. +// http://code.google.com/p/protobuf/ +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +package com.google.protobuf; + +import protobuf_unittest.UnittestProto.TestAllTypes; +import protobuf_unittest.UnittestProto.TestAllTypesOrBuilder; + +import junit.framework.TestCase; + +/** + * Tests for {@link SingleFieldBuilder}. This tests basic functionality. + * More extensive testing is provided via other tests that exercise the + * builder. + * + * @author jonp@google.com (Jon Perlow) + */ +public class SingleFieldBuilderTest extends TestCase { + + public void testBasicUseAndInvalidations() { + TestUtil.MockBuilderParent mockParent = new TestUtil.MockBuilderParent(); + SingleFieldBuilder builder = + new SingleFieldBuilder( + TestAllTypes.getDefaultInstance(), + mockParent, + false); + assertSame(TestAllTypes.getDefaultInstance(), builder.getMessage()); + assertEquals(TestAllTypes.getDefaultInstance(), + builder.getBuilder().buildPartial()); + assertEquals(0, mockParent.getInvalidationCount()); + + builder.getBuilder().setOptionalInt32(10); + assertEquals(0, mockParent.getInvalidationCount()); + TestAllTypes message = builder.build(); + assertEquals(10, message.getOptionalInt32()); + + // Test that we receive invalidations now that build has been called. + assertEquals(0, mockParent.getInvalidationCount()); + builder.getBuilder().setOptionalInt32(20); + assertEquals(1, mockParent.getInvalidationCount()); + + // Test that we don't keep getting invalidations on every change + builder.getBuilder().setOptionalInt32(30); + assertEquals(1, mockParent.getInvalidationCount()); + + } + + public void testSetMessage() { + TestUtil.MockBuilderParent mockParent = new TestUtil.MockBuilderParent(); + SingleFieldBuilder builder = + new SingleFieldBuilder( + TestAllTypes.getDefaultInstance(), + mockParent, + false); + builder.setMessage(TestAllTypes.newBuilder().setOptionalInt32(0).build()); + assertEquals(0, builder.getMessage().getOptionalInt32()); + + // Update message using the builder + builder.getBuilder().setOptionalInt32(1); + assertEquals(0, mockParent.getInvalidationCount()); + assertEquals(1, builder.getBuilder().getOptionalInt32()); + assertEquals(1, builder.getMessage().getOptionalInt32()); + builder.build(); + builder.getBuilder().setOptionalInt32(2); + assertEquals(2, builder.getBuilder().getOptionalInt32()); + assertEquals(2, builder.getMessage().getOptionalInt32()); + + // Make sure message stays cached + assertSame(builder.getMessage(), builder.getMessage()); + } + + public void testClear() { + TestUtil.MockBuilderParent mockParent = new TestUtil.MockBuilderParent(); + SingleFieldBuilder builder = + new SingleFieldBuilder( + TestAllTypes.getDefaultInstance(), + mockParent, + false); + builder.setMessage(TestAllTypes.newBuilder().setOptionalInt32(0).build()); + assertNotSame(TestAllTypes.getDefaultInstance(), builder.getMessage()); + builder.clear(); + assertSame(TestAllTypes.getDefaultInstance(), builder.getMessage()); + + builder.getBuilder().setOptionalInt32(1); + assertNotSame(TestAllTypes.getDefaultInstance(), builder.getMessage()); + builder.clear(); + assertSame(TestAllTypes.getDefaultInstance(), builder.getMessage()); + } + + public void testMerge() { + TestUtil.MockBuilderParent mockParent = new TestUtil.MockBuilderParent(); + SingleFieldBuilder builder = + new SingleFieldBuilder( + TestAllTypes.getDefaultInstance(), + mockParent, + false); + + // Merge into default field. + builder.mergeFrom(TestAllTypes.getDefaultInstance()); + assertSame(TestAllTypes.getDefaultInstance(), builder.getMessage()); + + // Merge into non-default field on existing builder. + builder.getBuilder().setOptionalInt32(2); + builder.mergeFrom(TestAllTypes.newBuilder() + .setOptionalDouble(4.0) + .buildPartial()); + assertEquals(2, builder.getMessage().getOptionalInt32()); + assertEquals(4.0, builder.getMessage().getOptionalDouble()); + + // Merge into non-default field on existing message + builder.setMessage(TestAllTypes.newBuilder() + .setOptionalInt32(10) + .buildPartial()); + builder.mergeFrom(TestAllTypes.newBuilder() + .setOptionalDouble(5.0) + .buildPartial()); + assertEquals(10, builder.getMessage().getOptionalInt32()); + assertEquals(5.0, builder.getMessage().getOptionalDouble()); + } +} diff --git a/cpp/thirdparty/protobuf-2.5.0/java/src/test/java/com/google/protobuf/SmallSortedMapTest.java b/cpp/thirdparty/protobuf-2.5.0/java/src/test/java/com/google/protobuf/SmallSortedMapTest.java new file mode 100644 index 000000000..8f77a036c --- /dev/null +++ b/cpp/thirdparty/protobuf-2.5.0/java/src/test/java/com/google/protobuf/SmallSortedMapTest.java @@ -0,0 +1,420 @@ +// Protocol Buffers - Google's data interchange format +// Copyright 2008 Google Inc. All rights reserved. +// http://code.google.com/p/protobuf/ +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +package com.google.protobuf; + +import junit.framework.TestCase; + +import java.util.ArrayList; +import java.util.Arrays; +import java.util.HashMap; +import java.util.Iterator; +import java.util.List; +import java.util.Map; +import java.util.Set; +import java.util.TreeSet; + +/** + * @author darick@google.com Darick Tong + */ +public class SmallSortedMapTest extends TestCase { + // java.util.AbstractMap.SimpleEntry is private in JDK 1.5. We re-implement it + // here for JDK 1.5 users. + private static class SimpleEntry implements Map.Entry { + private final K key; + private V value; + + SimpleEntry(K key, V value) { + this.key = key; + this.value = value; + } + + public K getKey() { + return key; + } + + public V getValue() { + return value; + } + + public V setValue(V value) { + V oldValue = this.value; + this.value = value; + return oldValue; + } + + private static boolean eq(Object o1, Object o2) { + return o1 == null ? o2 == null : o1.equals(o2); + } + + @Override + public boolean equals(Object o) { + if (!(o instanceof Map.Entry)) + return false; + Map.Entry e = (Map.Entry) o; + return eq(key, e.getKey()) && eq(value, e.getValue()); + } + + @Override + public int hashCode() { + return ((key == null) ? 0 : key.hashCode()) ^ + ((value == null) ? 0 : value.hashCode()); + } + } + + public void testPutAndGetArrayEntriesOnly() { + runPutAndGetTest(3); + } + + public void testPutAndGetOverflowEntries() { + runPutAndGetTest(6); + } + + private void runPutAndGetTest(int numElements) { + // Test with even and odd arraySize + SmallSortedMap map1 = + SmallSortedMap.newInstanceForTest(3); + SmallSortedMap map2 = + SmallSortedMap.newInstanceForTest(4); + SmallSortedMap map3 = + SmallSortedMap.newInstanceForTest(3); + SmallSortedMap map4 = + SmallSortedMap.newInstanceForTest(4); + + // Test with puts in ascending order. + for (int i = 0; i < numElements; i++) { + assertNull(map1.put(i, i + 1)); + assertNull(map2.put(i, i + 1)); + } + // Test with puts in descending order. + for (int i = numElements - 1; i >= 0; i--) { + assertNull(map3.put(i, i + 1)); + assertNull(map4.put(i, i + 1)); + } + + assertEquals(Math.min(3, numElements), map1.getNumArrayEntries()); + assertEquals(Math.min(4, numElements), map2.getNumArrayEntries()); + assertEquals(Math.min(3, numElements), map3.getNumArrayEntries()); + assertEquals(Math.min(4, numElements), map4.getNumArrayEntries()); + + List> allMaps = + new ArrayList>(); + allMaps.add(map1); + allMaps.add(map2); + allMaps.add(map3); + allMaps.add(map4); + + for (SmallSortedMap map : allMaps) { + assertEquals(numElements, map.size()); + for (int i = 0; i < numElements; i++) { + assertEquals(new Integer(i + 1), map.get(i)); + } + } + + assertEquals(map1, map2); + assertEquals(map2, map3); + assertEquals(map3, map4); + } + + public void testReplacingPut() { + SmallSortedMap map = SmallSortedMap.newInstanceForTest(3); + for (int i = 0; i < 6; i++) { + assertNull(map.put(i, i + 1)); + assertNull(map.remove(i + 1)); + } + for (int i = 0; i < 6; i++) { + assertEquals(new Integer(i + 1), map.put(i, i + 2)); + } + } + + public void testRemove() { + SmallSortedMap map = SmallSortedMap.newInstanceForTest(3); + for (int i = 0; i < 6; i++) { + assertNull(map.put(i, i + 1)); + assertNull(map.remove(i + 1)); + } + + assertEquals(3, map.getNumArrayEntries()); + assertEquals(3, map.getNumOverflowEntries()); + assertEquals(6, map.size()); + assertEquals(makeSortedKeySet(0, 1, 2, 3, 4, 5), map.keySet()); + + assertEquals(new Integer(2), map.remove(1)); + assertEquals(3, map.getNumArrayEntries()); + assertEquals(2, map.getNumOverflowEntries()); + assertEquals(5, map.size()); + assertEquals(makeSortedKeySet(0, 2, 3, 4, 5), map.keySet()); + + assertEquals(new Integer(5), map.remove(4)); + assertEquals(3, map.getNumArrayEntries()); + assertEquals(1, map.getNumOverflowEntries()); + assertEquals(4, map.size()); + assertEquals(makeSortedKeySet(0, 2, 3, 5), map.keySet()); + + assertEquals(new Integer(4), map.remove(3)); + assertEquals(3, map.getNumArrayEntries()); + assertEquals(0, map.getNumOverflowEntries()); + assertEquals(3, map.size()); + assertEquals(makeSortedKeySet(0, 2, 5), map.keySet()); + + assertNull(map.remove(3)); + assertEquals(3, map.getNumArrayEntries()); + assertEquals(0, map.getNumOverflowEntries()); + assertEquals(3, map.size()); + + assertEquals(new Integer(1), map.remove(0)); + assertEquals(2, map.getNumArrayEntries()); + assertEquals(0, map.getNumOverflowEntries()); + assertEquals(2, map.size()); + } + + public void testClear() { + SmallSortedMap map = SmallSortedMap.newInstanceForTest(3); + for (int i = 0; i < 6; i++) { + assertNull(map.put(i, i + 1)); + } + map.clear(); + assertEquals(0, map.getNumArrayEntries()); + assertEquals(0, map.getNumOverflowEntries()); + assertEquals(0, map.size()); + } + + public void testGetArrayEntryAndOverflowEntries() { + SmallSortedMap map = SmallSortedMap.newInstanceForTest(3); + for (int i = 0; i < 6; i++) { + assertNull(map.put(i, i + 1)); + } + assertEquals(3, map.getNumArrayEntries()); + for (int i = 0; i < 3; i++) { + Map.Entry entry = map.getArrayEntryAt(i); + assertEquals(new Integer(i), entry.getKey()); + assertEquals(new Integer(i + 1), entry.getValue()); + } + Iterator> it = + map.getOverflowEntries().iterator(); + for (int i = 3; i < 6; i++) { + assertTrue(it.hasNext()); + Map.Entry entry = it.next(); + assertEquals(new Integer(i), entry.getKey()); + assertEquals(new Integer(i + 1), entry.getValue()); + } + assertFalse(it.hasNext()); + } + + public void testEntrySetContains() { + SmallSortedMap map = SmallSortedMap.newInstanceForTest(3); + for (int i = 0; i < 6; i++) { + assertNull(map.put(i, i + 1)); + } + Set> entrySet = map.entrySet(); + for (int i = 0; i < 6; i++) { + assertTrue( + entrySet.contains(new SimpleEntry(i, i + 1))); + assertFalse( + entrySet.contains(new SimpleEntry(i, i))); + } + } + + public void testEntrySetAdd() { + SmallSortedMap map = SmallSortedMap.newInstanceForTest(3); + Set> entrySet = map.entrySet(); + for (int i = 0; i < 6; i++) { + Map.Entry entry = + new SimpleEntry(i, i + 1); + assertTrue(entrySet.add(entry)); + assertFalse(entrySet.add(entry)); + } + for (int i = 0; i < 6; i++) { + assertEquals(new Integer(i + 1), map.get(i)); + } + assertEquals(3, map.getNumArrayEntries()); + assertEquals(3, map.getNumOverflowEntries()); + assertEquals(6, map.size()); + } + + public void testEntrySetRemove() { + SmallSortedMap map = SmallSortedMap.newInstanceForTest(3); + Set> entrySet = map.entrySet(); + for (int i = 0; i < 6; i++) { + assertNull(map.put(i, i + 1)); + } + for (int i = 0; i < 6; i++) { + Map.Entry entry = + new SimpleEntry(i, i + 1); + assertTrue(entrySet.remove(entry)); + assertFalse(entrySet.remove(entry)); + } + assertTrue(map.isEmpty()); + assertEquals(0, map.getNumArrayEntries()); + assertEquals(0, map.getNumOverflowEntries()); + assertEquals(0, map.size()); + } + + public void testEntrySetClear() { + SmallSortedMap map = SmallSortedMap.newInstanceForTest(3); + for (int i = 0; i < 6; i++) { + assertNull(map.put(i, i + 1)); + } + map.entrySet().clear(); + assertTrue(map.isEmpty()); + assertEquals(0, map.getNumArrayEntries()); + assertEquals(0, map.getNumOverflowEntries()); + assertEquals(0, map.size()); + } + + public void testEntrySetIteratorNext() { + SmallSortedMap map = SmallSortedMap.newInstanceForTest(3); + for (int i = 0; i < 6; i++) { + assertNull(map.put(i, i + 1)); + } + Iterator> it = map.entrySet().iterator(); + for (int i = 0; i < 6; i++) { + assertTrue(it.hasNext()); + Map.Entry entry = it.next(); + assertEquals(new Integer(i), entry.getKey()); + assertEquals(new Integer(i + 1), entry.getValue()); + } + assertFalse(it.hasNext()); + } + + public void testEntrySetIteratorRemove() { + SmallSortedMap map = SmallSortedMap.newInstanceForTest(3); + for (int i = 0; i < 6; i++) { + assertNull(map.put(i, i + 1)); + } + Iterator> it = map.entrySet().iterator(); + for (int i = 0; i < 6; i++) { + assertTrue(map.containsKey(i)); + it.next(); + it.remove(); + assertFalse(map.containsKey(i)); + assertEquals(6 - i - 1, map.size()); + } + } + + public void testMapEntryModification() { + SmallSortedMap map = SmallSortedMap.newInstanceForTest(3); + for (int i = 0; i < 6; i++) { + assertNull(map.put(i, i + 1)); + } + Iterator> it = map.entrySet().iterator(); + for (int i = 0; i < 6; i++) { + Map.Entry entry = it.next(); + entry.setValue(i + 23); + } + for (int i = 0; i < 6; i++) { + assertEquals(new Integer(i + 23), map.get(i)); + } + } + + public void testMakeImmutable() { + SmallSortedMap map = SmallSortedMap.newInstanceForTest(3); + for (int i = 0; i < 6; i++) { + assertNull(map.put(i, i + 1)); + } + map.makeImmutable(); + assertEquals(new Integer(1), map.get(0)); + assertEquals(6, map.size()); + + try { + map.put(23, 23); + fail("Expected UnsupportedOperationException"); + } catch (UnsupportedOperationException expected) { + } + + Map other = new HashMap(); + other.put(23, 23); + try { + map.putAll(other); + fail("Expected UnsupportedOperationException"); + } catch (UnsupportedOperationException expected) { + } + + try { + map.remove(0); + fail("Expected UnsupportedOperationException"); + } catch (UnsupportedOperationException expected) { + } + + try { + map.clear(); + fail("Expected UnsupportedOperationException"); + } catch (UnsupportedOperationException expected) { + } + + Set> entrySet = map.entrySet(); + try { + entrySet.clear(); + fail("Expected UnsupportedOperationException"); + } catch (UnsupportedOperationException expected) { + } + + Iterator> it = entrySet.iterator(); + while (it.hasNext()) { + Map.Entry entry = it.next(); + try { + entry.setValue(0); + fail("Expected UnsupportedOperationException"); + } catch (UnsupportedOperationException expected) { + } + try { + it.remove(); + fail("Expected UnsupportedOperationException"); + } catch (UnsupportedOperationException expected) { + } + } + + Set keySet = map.keySet(); + try { + keySet.clear(); + fail("Expected UnsupportedOperationException"); + } catch (UnsupportedOperationException expected) { + } + + Iterator keys = keySet.iterator(); + while (keys.hasNext()) { + Integer key = keys.next(); + try { + keySet.remove(key); + fail("Expected UnsupportedOperationException"); + } catch (UnsupportedOperationException expected) { + } + try { + keys.remove(); + fail("Expected UnsupportedOperationException"); + } catch (UnsupportedOperationException expected) { + } + } + } + + private Set makeSortedKeySet(Integer... keys) { + return new TreeSet(Arrays.asList(keys)); + } +} diff --git a/cpp/thirdparty/protobuf-2.5.0/java/src/test/java/com/google/protobuf/TestBadIdentifiers.java b/cpp/thirdparty/protobuf-2.5.0/java/src/test/java/com/google/protobuf/TestBadIdentifiers.java new file mode 100644 index 000000000..382acf0fa --- /dev/null +++ b/cpp/thirdparty/protobuf-2.5.0/java/src/test/java/com/google/protobuf/TestBadIdentifiers.java @@ -0,0 +1,63 @@ +// Protocol Buffers - Google's data interchange format +// Copyright 2008 Google Inc. All rights reserved. +// http://code.google.com/p/protobuf/ +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +package com.google.protobuf; + +import junit.framework.TestCase; + +/** + * Tests that proto2 api generation doesn't cause compile errors when + * compiling protocol buffers that have names that would otherwise conflict + * if not fully qualified (like @Deprecated and @Override). + * + * @author jonp@google.com (Jon Perlow) + */ +public class TestBadIdentifiers extends TestCase { + + public void testCompilation() { + // If this compiles, it means the generation was correct. + TestBadIdentifiersProto.Deprecated.newBuilder(); + TestBadIdentifiersProto.Override.newBuilder(); + } + + public void testGetDescriptor() { + Descriptors.FileDescriptor fileDescriptor = + TestBadIdentifiersProto.getDescriptor(); + String descriptorField = TestBadIdentifiersProto.Descriptor + .getDefaultInstance().getDescriptor(); + Descriptors.Descriptor protoDescriptor = TestBadIdentifiersProto.Descriptor + .getDefaultInstance().getDescriptorForType(); + String nestedDescriptorField = TestBadIdentifiersProto.Descriptor + .NestedDescriptor.getDefaultInstance().getDescriptor(); + Descriptors.Descriptor nestedProtoDescriptor = TestBadIdentifiersProto + .Descriptor.NestedDescriptor.getDefaultInstance() + .getDescriptorForType(); + } +} diff --git a/cpp/thirdparty/protobuf-2.3.0/java/src/test/java/com/google/protobuf/TestUtil.java b/cpp/thirdparty/protobuf-2.5.0/java/src/test/java/com/google/protobuf/TestUtil.java similarity index 94% rename from cpp/thirdparty/protobuf-2.3.0/java/src/test/java/com/google/protobuf/TestUtil.java rename to cpp/thirdparty/protobuf-2.5.0/java/src/test/java/com/google/protobuf/TestUtil.java index 2b8b2af80..76f5c602c 100644 --- a/cpp/thirdparty/protobuf-2.3.0/java/src/test/java/com/google/protobuf/TestUtil.java +++ b/cpp/thirdparty/protobuf-2.5.0/java/src/test/java/com/google/protobuf/TestUtil.java @@ -72,14 +72,16 @@ import static protobuf_unittest.UnittestProto.optionalBoolExtension; import static protobuf_unittest.UnittestProto.optionalStringExtension; import static protobuf_unittest.UnittestProto.optionalBytesExtension; import static protobuf_unittest.UnittestProto.optionalGroupExtension; -import static protobuf_unittest.UnittestProto.optionalNestedMessageExtension; +import static protobuf_unittest.UnittestProto.optionalCordExtension; +import static protobuf_unittest.UnittestProto.optionalForeignEnumExtension; import static protobuf_unittest.UnittestProto.optionalForeignMessageExtension; +import static protobuf_unittest.UnittestProto.optionalImportEnumExtension; import static protobuf_unittest.UnittestProto.optionalImportMessageExtension; import static protobuf_unittest.UnittestProto.optionalNestedEnumExtension; -import static protobuf_unittest.UnittestProto.optionalForeignEnumExtension; -import static protobuf_unittest.UnittestProto.optionalImportEnumExtension; +import static protobuf_unittest.UnittestProto.optionalNestedMessageExtension; +import static protobuf_unittest.UnittestProto.optionalPublicImportMessageExtension; +import static protobuf_unittest.UnittestProto.optionalLazyMessageExtension; import static protobuf_unittest.UnittestProto.optionalStringPieceExtension; -import static protobuf_unittest.UnittestProto.optionalCordExtension; import static protobuf_unittest.UnittestProto.repeatedInt32Extension; import static protobuf_unittest.UnittestProto.repeatedInt64Extension; @@ -100,6 +102,7 @@ import static protobuf_unittest.UnittestProto.repeatedGroupExtension; import static protobuf_unittest.UnittestProto.repeatedNestedMessageExtension; import static protobuf_unittest.UnittestProto.repeatedForeignMessageExtension; import static protobuf_unittest.UnittestProto.repeatedImportMessageExtension; +import static protobuf_unittest.UnittestProto.repeatedLazyMessageExtension; import static protobuf_unittest.UnittestProto.repeatedNestedEnumExtension; import static protobuf_unittest.UnittestProto.repeatedForeignEnumExtension; import static protobuf_unittest.UnittestProto.repeatedImportEnumExtension; @@ -162,11 +165,13 @@ import static com.google.protobuf.UnittestLite.optionalStringExtensionLite; import static com.google.protobuf.UnittestLite.optionalBytesExtensionLite; import static com.google.protobuf.UnittestLite.optionalGroupExtensionLite; import static com.google.protobuf.UnittestLite.optionalNestedMessageExtensionLite; +import static com.google.protobuf.UnittestLite.optionalForeignEnumExtensionLite; import static com.google.protobuf.UnittestLite.optionalForeignMessageExtensionLite; +import static com.google.protobuf.UnittestLite.optionalImportEnumExtensionLite; import static com.google.protobuf.UnittestLite.optionalImportMessageExtensionLite; import static com.google.protobuf.UnittestLite.optionalNestedEnumExtensionLite; -import static com.google.protobuf.UnittestLite.optionalForeignEnumExtensionLite; -import static com.google.protobuf.UnittestLite.optionalImportEnumExtensionLite; +import static com.google.protobuf.UnittestLite.optionalPublicImportMessageExtensionLite; +import static com.google.protobuf.UnittestLite.optionalLazyMessageExtensionLite; import static com.google.protobuf.UnittestLite.optionalStringPieceExtensionLite; import static com.google.protobuf.UnittestLite.optionalCordExtensionLite; @@ -189,6 +194,7 @@ import static com.google.protobuf.UnittestLite.repeatedGroupExtensionLite; import static com.google.protobuf.UnittestLite.repeatedNestedMessageExtensionLite; import static com.google.protobuf.UnittestLite.repeatedForeignMessageExtensionLite; import static com.google.protobuf.UnittestLite.repeatedImportMessageExtensionLite; +import static com.google.protobuf.UnittestLite.repeatedLazyMessageExtensionLite; import static com.google.protobuf.UnittestLite.repeatedNestedEnumExtensionLite; import static com.google.protobuf.UnittestLite.repeatedForeignEnumExtensionLite; import static com.google.protobuf.UnittestLite.repeatedImportEnumExtensionLite; @@ -214,22 +220,27 @@ import static com.google.protobuf.UnittestLite.packedBoolExtensionLite; import static com.google.protobuf.UnittestLite.packedEnumExtensionLite; import protobuf_unittest.UnittestProto.TestAllExtensions; +import protobuf_unittest.UnittestProto.TestAllExtensionsOrBuilder; import protobuf_unittest.UnittestProto.TestAllTypes; +import protobuf_unittest.UnittestProto.TestAllTypesOrBuilder; import protobuf_unittest.UnittestProto.TestPackedExtensions; import protobuf_unittest.UnittestProto.TestPackedTypes; import protobuf_unittest.UnittestProto.TestUnpackedTypes; import protobuf_unittest.UnittestProto.ForeignMessage; import protobuf_unittest.UnittestProto.ForeignEnum; -import com.google.protobuf.test.UnittestImport.ImportMessage; import com.google.protobuf.test.UnittestImport.ImportEnum; +import com.google.protobuf.test.UnittestImport.ImportMessage; +import com.google.protobuf.test.UnittestImportPublic.PublicImportMessage; import com.google.protobuf.UnittestLite.TestAllTypesLite; import com.google.protobuf.UnittestLite.TestAllExtensionsLite; +import com.google.protobuf.UnittestLite.TestAllExtensionsLiteOrBuilder; import com.google.protobuf.UnittestLite.TestPackedExtensionsLite; import com.google.protobuf.UnittestLite.ForeignMessageLite; import com.google.protobuf.UnittestLite.ForeignEnumLite; -import com.google.protobuf.UnittestImportLite.ImportMessageLite; import com.google.protobuf.UnittestImportLite.ImportEnumLite; +import com.google.protobuf.UnittestImportLite.ImportMessageLite; +import com.google.protobuf.UnittestImportPublicLite.PublicImportMessageLite; import junit.framework.Assert; @@ -239,14 +250,17 @@ import java.io.RandomAccessFile; /** * Contains methods for setting all fields of {@code TestAllTypes} to - * some vaules as well as checking that all the fields are set to those values. + * some values as well as checking that all the fields are set to those values. * These are useful for testing various protocol message features, e.g. * set all fields of a message, serialize it, parse it, and check that all * fields are set. * + *

This code is not to be used outside of {@code com.google.protobuf} and + * subpackages. + * * @author kenton@google.com Kenton Varda */ -class TestUtil { +public final class TestUtil { private TestUtil() {} /** Helper to convert a String to ByteString. */ @@ -268,6 +282,16 @@ class TestUtil { return builder.build(); } + /** + * Get a {@code TestAllTypes.Builder} with all fields set as they would be by + * {@link #setAllFields(TestAllTypes.Builder)}. + */ + public static TestAllTypes.Builder getAllSetBuilder() { + TestAllTypes.Builder builder = TestAllTypes.newBuilder(); + setAllFields(builder); + return builder; + } + /** * Get a {@code TestAllExtensions} with all fields set as they would be by * {@link #setAllExtensions(TestAllExtensions.Builder)}. @@ -338,6 +362,10 @@ class TestUtil { ForeignMessage.newBuilder().setC(119).build()); message.setOptionalImportMessage( ImportMessage.newBuilder().setD(120).build()); + message.setOptionalPublicImportMessage( + PublicImportMessage.newBuilder().setE(126).build()); + message.setOptionalLazyMessage( + TestAllTypes.NestedMessage.newBuilder().setBb(127).build()); message.setOptionalNestedEnum (TestAllTypes.NestedEnum.BAZ); message.setOptionalForeignEnum(ForeignEnum.FOREIGN_BAZ); @@ -372,6 +400,8 @@ class TestUtil { ForeignMessage.newBuilder().setC(219).build()); message.addRepeatedImportMessage( ImportMessage.newBuilder().setD(220).build()); + message.addRepeatedLazyMessage( + TestAllTypes.NestedMessage.newBuilder().setBb(227).build()); message.addRepeatedNestedEnum (TestAllTypes.NestedEnum.BAR); message.addRepeatedForeignEnum(ForeignEnum.FOREIGN_BAR); @@ -405,6 +435,8 @@ class TestUtil { ForeignMessage.newBuilder().setC(319).build()); message.addRepeatedImportMessage( ImportMessage.newBuilder().setD(320).build()); + message.addRepeatedLazyMessage( + TestAllTypes.NestedMessage.newBuilder().setBb(327).build()); message.addRepeatedNestedEnum (TestAllTypes.NestedEnum.BAZ); message.addRepeatedForeignEnum(ForeignEnum.FOREIGN_BAZ); @@ -470,6 +502,8 @@ class TestUtil { ForeignMessage.newBuilder().setC(519).build()); message.setRepeatedImportMessage(1, ImportMessage.newBuilder().setD(520).build()); + message.setRepeatedLazyMessage(1, + TestAllTypes.NestedMessage.newBuilder().setBb(527).build()); message.setRepeatedNestedEnum (1, TestAllTypes.NestedEnum.FOO); message.setRepeatedForeignEnum(1, ForeignEnum.FOREIGN_FOO); @@ -485,7 +519,7 @@ class TestUtil { * Assert (using {@code junit.framework.Assert}} that all fields of * {@code message} are set to the values assigned by {@code setAllFields}. */ - public static void assertAllFieldsSet(TestAllTypes message) { + public static void assertAllFieldsSet(TestAllTypesOrBuilder message) { Assert.assertTrue(message.hasOptionalInt32 ()); Assert.assertTrue(message.hasOptionalInt64 ()); Assert.assertTrue(message.hasOptionalUint32 ()); @@ -535,10 +569,12 @@ class TestUtil { Assert.assertEquals("115", message.getOptionalString ()); Assert.assertEquals(toBytes("116"), message.getOptionalBytes()); - Assert.assertEquals(117, message.getOptionalGroup ().getA()); - Assert.assertEquals(118, message.getOptionalNestedMessage ().getBb()); - Assert.assertEquals(119, message.getOptionalForeignMessage().getC()); - Assert.assertEquals(120, message.getOptionalImportMessage ().getD()); + Assert.assertEquals(117, message.getOptionalGroup ().getA()); + Assert.assertEquals(118, message.getOptionalNestedMessage ().getBb()); + Assert.assertEquals(119, message.getOptionalForeignMessage ().getC()); + Assert.assertEquals(120, message.getOptionalImportMessage ().getD()); + Assert.assertEquals(126, message.getOptionalPublicImportMessage().getE()); + Assert.assertEquals(127, message.getOptionalLazyMessage ().getBb()); Assert.assertEquals(TestAllTypes.NestedEnum.BAZ, message.getOptionalNestedEnum()); Assert.assertEquals(ForeignEnum.FOREIGN_BAZ, message.getOptionalForeignEnum()); @@ -569,6 +605,7 @@ class TestUtil { Assert.assertEquals(2, message.getRepeatedNestedMessageCount ()); Assert.assertEquals(2, message.getRepeatedForeignMessageCount()); Assert.assertEquals(2, message.getRepeatedImportMessageCount ()); + Assert.assertEquals(2, message.getRepeatedLazyMessageCount ()); Assert.assertEquals(2, message.getRepeatedNestedEnumCount ()); Assert.assertEquals(2, message.getRepeatedForeignEnumCount ()); Assert.assertEquals(2, message.getRepeatedImportEnumCount ()); @@ -596,6 +633,7 @@ class TestUtil { Assert.assertEquals(218, message.getRepeatedNestedMessage (0).getBb()); Assert.assertEquals(219, message.getRepeatedForeignMessage(0).getC()); Assert.assertEquals(220, message.getRepeatedImportMessage (0).getD()); + Assert.assertEquals(227, message.getRepeatedLazyMessage (0).getBb()); Assert.assertEquals(TestAllTypes.NestedEnum.BAR, message.getRepeatedNestedEnum (0)); Assert.assertEquals(ForeignEnum.FOREIGN_BAR, message.getRepeatedForeignEnum(0)); @@ -624,6 +662,7 @@ class TestUtil { Assert.assertEquals(318, message.getRepeatedNestedMessage (1).getBb()); Assert.assertEquals(319, message.getRepeatedForeignMessage(1).getC()); Assert.assertEquals(320, message.getRepeatedImportMessage (1).getD()); + Assert.assertEquals(327, message.getRepeatedLazyMessage (1).getBb()); Assert.assertEquals(TestAllTypes.NestedEnum.BAZ, message.getRepeatedNestedEnum (1)); Assert.assertEquals(ForeignEnum.FOREIGN_BAZ, message.getRepeatedForeignEnum(1)); @@ -682,13 +721,12 @@ class TestUtil { } // ------------------------------------------------------------------- - /** * Assert (using {@code junit.framework.Assert}} that all fields of * {@code message} are cleared, and that getting the fields returns their * default values. */ - public static void assertClear(TestAllTypes message) { + public static void assertClear(TestAllTypesOrBuilder message) { // hasBlah() should initially be false for all optional fields. Assert.assertFalse(message.hasOptionalInt32 ()); Assert.assertFalse(message.hasOptionalInt64 ()); @@ -736,15 +774,19 @@ class TestUtil { Assert.assertEquals(ByteString.EMPTY, message.getOptionalBytes()); // Embedded messages should also be clear. - Assert.assertFalse(message.getOptionalGroup ().hasA()); - Assert.assertFalse(message.getOptionalNestedMessage ().hasBb()); - Assert.assertFalse(message.getOptionalForeignMessage().hasC()); - Assert.assertFalse(message.getOptionalImportMessage ().hasD()); - - Assert.assertEquals(0, message.getOptionalGroup ().getA()); - Assert.assertEquals(0, message.getOptionalNestedMessage ().getBb()); - Assert.assertEquals(0, message.getOptionalForeignMessage().getC()); - Assert.assertEquals(0, message.getOptionalImportMessage ().getD()); + Assert.assertFalse(message.getOptionalGroup ().hasA()); + Assert.assertFalse(message.getOptionalNestedMessage ().hasBb()); + Assert.assertFalse(message.getOptionalForeignMessage ().hasC()); + Assert.assertFalse(message.getOptionalImportMessage ().hasD()); + Assert.assertFalse(message.getOptionalPublicImportMessage().hasE()); + Assert.assertFalse(message.getOptionalLazyMessage ().hasBb()); + + Assert.assertEquals(0, message.getOptionalGroup ().getA()); + Assert.assertEquals(0, message.getOptionalNestedMessage ().getBb()); + Assert.assertEquals(0, message.getOptionalForeignMessage ().getC()); + Assert.assertEquals(0, message.getOptionalImportMessage ().getD()); + Assert.assertEquals(0, message.getOptionalPublicImportMessage().getE()); + Assert.assertEquals(0, message.getOptionalLazyMessage ().getBb()); // Enums without defaults are set to the first value in the enum. Assert.assertEquals(TestAllTypes.NestedEnum.FOO, message.getOptionalNestedEnum ()); @@ -775,6 +817,7 @@ class TestUtil { Assert.assertEquals(0, message.getRepeatedNestedMessageCount ()); Assert.assertEquals(0, message.getRepeatedForeignMessageCount()); Assert.assertEquals(0, message.getRepeatedImportMessageCount ()); + Assert.assertEquals(0, message.getRepeatedLazyMessageCount ()); Assert.assertEquals(0, message.getRepeatedNestedEnumCount ()); Assert.assertEquals(0, message.getRepeatedForeignEnumCount ()); Assert.assertEquals(0, message.getRepeatedImportEnumCount ()); @@ -838,7 +881,8 @@ class TestUtil { * {@code message} are set to the values assigned by {@code setAllFields} * followed by {@code modifyRepeatedFields}. */ - public static void assertRepeatedFieldsModified(TestAllTypes message) { + public static void assertRepeatedFieldsModified( + TestAllTypesOrBuilder message) { // ModifyRepeatedFields only sets the second repeated element of each // field. In addition to verifying this, we also verify that the first // element and size were *not* modified. @@ -862,6 +906,7 @@ class TestUtil { Assert.assertEquals(2, message.getRepeatedNestedMessageCount ()); Assert.assertEquals(2, message.getRepeatedForeignMessageCount()); Assert.assertEquals(2, message.getRepeatedImportMessageCount ()); + Assert.assertEquals(2, message.getRepeatedLazyMessageCount ()); Assert.assertEquals(2, message.getRepeatedNestedEnumCount ()); Assert.assertEquals(2, message.getRepeatedForeignEnumCount ()); Assert.assertEquals(2, message.getRepeatedImportEnumCount ()); @@ -889,6 +934,7 @@ class TestUtil { Assert.assertEquals(218, message.getRepeatedNestedMessage (0).getBb()); Assert.assertEquals(219, message.getRepeatedForeignMessage(0).getC()); Assert.assertEquals(220, message.getRepeatedImportMessage (0).getD()); + Assert.assertEquals(227, message.getRepeatedLazyMessage (0).getBb()); Assert.assertEquals(TestAllTypes.NestedEnum.BAR, message.getRepeatedNestedEnum (0)); Assert.assertEquals(ForeignEnum.FOREIGN_BAR, message.getRepeatedForeignEnum(0)); @@ -918,6 +964,7 @@ class TestUtil { Assert.assertEquals(518, message.getRepeatedNestedMessage (1).getBb()); Assert.assertEquals(519, message.getRepeatedForeignMessage(1).getC()); Assert.assertEquals(520, message.getRepeatedImportMessage (1).getD()); + Assert.assertEquals(527, message.getRepeatedLazyMessage (1).getBb()); Assert.assertEquals(TestAllTypes.NestedEnum.FOO, message.getRepeatedNestedEnum (1)); Assert.assertEquals(ForeignEnum.FOREIGN_FOO, message.getRepeatedForeignEnum(1)); @@ -1204,6 +1251,10 @@ class TestUtil { ForeignMessage.newBuilder().setC(119).build()); message.setExtension(optionalImportMessageExtension, ImportMessage.newBuilder().setD(120).build()); + message.setExtension(optionalPublicImportMessageExtension, + PublicImportMessage.newBuilder().setE(126).build()); + message.setExtension(optionalLazyMessageExtension, + TestAllTypes.NestedMessage.newBuilder().setBb(127).build()); message.setExtension(optionalNestedEnumExtension, TestAllTypes.NestedEnum.BAZ); message.setExtension(optionalForeignEnumExtension, ForeignEnum.FOREIGN_BAZ); @@ -1238,6 +1289,8 @@ class TestUtil { ForeignMessage.newBuilder().setC(219).build()); message.addExtension(repeatedImportMessageExtension, ImportMessage.newBuilder().setD(220).build()); + message.addExtension(repeatedLazyMessageExtension, + TestAllTypes.NestedMessage.newBuilder().setBb(227).build()); message.addExtension(repeatedNestedEnumExtension, TestAllTypes.NestedEnum.BAR); message.addExtension(repeatedForeignEnumExtension, ForeignEnum.FOREIGN_BAR); @@ -1271,6 +1324,8 @@ class TestUtil { ForeignMessage.newBuilder().setC(319).build()); message.addExtension(repeatedImportMessageExtension, ImportMessage.newBuilder().setD(320).build()); + message.addExtension(repeatedLazyMessageExtension, + TestAllTypes.NestedMessage.newBuilder().setBb(327).build()); message.addExtension(repeatedNestedEnumExtension, TestAllTypes.NestedEnum.BAZ); message.addExtension(repeatedForeignEnumExtension, ForeignEnum.FOREIGN_BAZ); @@ -1337,6 +1392,8 @@ class TestUtil { ForeignMessage.newBuilder().setC(519).build()); message.setExtension(repeatedImportMessageExtension, 1, ImportMessage.newBuilder().setD(520).build()); + message.setExtension(repeatedLazyMessageExtension, 1, + TestAllTypes.NestedMessage.newBuilder().setBb(527).build()); message.setExtension(repeatedNestedEnumExtension , 1, TestAllTypes.NestedEnum.FOO); message.setExtension(repeatedForeignEnumExtension, 1, ForeignEnum.FOREIGN_FOO); @@ -1352,7 +1409,8 @@ class TestUtil { * Assert (using {@code junit.framework.Assert}} that all extensions of * {@code message} are set to the values assigned by {@code setAllExtensions}. */ - public static void assertAllExtensionsSet(TestAllExtensions message) { + public static void assertAllExtensionsSet( + TestAllExtensionsOrBuilder message) { Assert.assertTrue(message.hasExtension(optionalInt32Extension )); Assert.assertTrue(message.hasExtension(optionalInt64Extension )); Assert.assertTrue(message.hasExtension(optionalUint32Extension )); @@ -1402,10 +1460,12 @@ class TestUtil { assertEqualsExactType("115", message.getExtension(optionalStringExtension )); assertEqualsExactType(toBytes("116"), message.getExtension(optionalBytesExtension)); - assertEqualsExactType(117, message.getExtension(optionalGroupExtension ).getA()); - assertEqualsExactType(118, message.getExtension(optionalNestedMessageExtension ).getBb()); - assertEqualsExactType(119, message.getExtension(optionalForeignMessageExtension).getC()); - assertEqualsExactType(120, message.getExtension(optionalImportMessageExtension ).getD()); + assertEqualsExactType(117, message.getExtension(optionalGroupExtension ).getA()); + assertEqualsExactType(118, message.getExtension(optionalNestedMessageExtension ).getBb()); + assertEqualsExactType(119, message.getExtension(optionalForeignMessageExtension ).getC()); + assertEqualsExactType(120, message.getExtension(optionalImportMessageExtension ).getD()); + assertEqualsExactType(126, message.getExtension(optionalPublicImportMessageExtension).getE()); + assertEqualsExactType(127, message.getExtension(optionalLazyMessageExtension ).getBb()); assertEqualsExactType(TestAllTypes.NestedEnum.BAZ, message.getExtension(optionalNestedEnumExtension)); @@ -1439,6 +1499,7 @@ class TestUtil { Assert.assertEquals(2, message.getExtensionCount(repeatedNestedMessageExtension )); Assert.assertEquals(2, message.getExtensionCount(repeatedForeignMessageExtension)); Assert.assertEquals(2, message.getExtensionCount(repeatedImportMessageExtension )); + Assert.assertEquals(2, message.getExtensionCount(repeatedLazyMessageExtension )); Assert.assertEquals(2, message.getExtensionCount(repeatedNestedEnumExtension )); Assert.assertEquals(2, message.getExtensionCount(repeatedForeignEnumExtension )); Assert.assertEquals(2, message.getExtensionCount(repeatedImportEnumExtension )); @@ -1466,6 +1527,7 @@ class TestUtil { assertEqualsExactType(218, message.getExtension(repeatedNestedMessageExtension , 0).getBb()); assertEqualsExactType(219, message.getExtension(repeatedForeignMessageExtension, 0).getC()); assertEqualsExactType(220, message.getExtension(repeatedImportMessageExtension , 0).getD()); + assertEqualsExactType(227, message.getExtension(repeatedLazyMessageExtension , 0).getBb()); assertEqualsExactType(TestAllTypes.NestedEnum.BAR, message.getExtension(repeatedNestedEnumExtension, 0)); @@ -1497,6 +1559,7 @@ class TestUtil { assertEqualsExactType(318, message.getExtension(repeatedNestedMessageExtension , 1).getBb()); assertEqualsExactType(319, message.getExtension(repeatedForeignMessageExtension, 1).getC()); assertEqualsExactType(320, message.getExtension(repeatedImportMessageExtension , 1).getD()); + assertEqualsExactType(327, message.getExtension(repeatedLazyMessageExtension , 1).getBb()); assertEqualsExactType(TestAllTypes.NestedEnum.BAZ, message.getExtension(repeatedNestedEnumExtension, 1)); @@ -1567,7 +1630,7 @@ class TestUtil { * {@code message} are cleared, and that getting the extensions returns their * default values. */ - public static void assertExtensionsClear(TestAllExtensions message) { + public static void assertExtensionsClear(TestAllExtensionsOrBuilder message) { // hasBlah() should initially be false for all optional fields. Assert.assertFalse(message.hasExtension(optionalInt32Extension )); Assert.assertFalse(message.hasExtension(optionalInt64Extension )); @@ -1657,6 +1720,7 @@ class TestUtil { Assert.assertEquals(0, message.getExtensionCount(repeatedNestedMessageExtension )); Assert.assertEquals(0, message.getExtensionCount(repeatedForeignMessageExtension)); Assert.assertEquals(0, message.getExtensionCount(repeatedImportMessageExtension )); + Assert.assertEquals(0, message.getExtensionCount(repeatedLazyMessageExtension )); Assert.assertEquals(0, message.getExtensionCount(repeatedNestedEnumExtension )); Assert.assertEquals(0, message.getExtensionCount(repeatedForeignEnumExtension )); Assert.assertEquals(0, message.getExtensionCount(repeatedImportEnumExtension )); @@ -1685,6 +1749,7 @@ class TestUtil { Assert.assertEquals(0, message.getExtension(repeatedNestedMessageExtension ).size()); Assert.assertEquals(0, message.getExtension(repeatedForeignMessageExtension).size()); Assert.assertEquals(0, message.getExtension(repeatedImportMessageExtension ).size()); + Assert.assertEquals(0, message.getExtension(repeatedLazyMessageExtension ).size()); Assert.assertEquals(0, message.getExtension(repeatedNestedEnumExtension ).size()); Assert.assertEquals(0, message.getExtension(repeatedForeignEnumExtension ).size()); Assert.assertEquals(0, message.getExtension(repeatedImportEnumExtension ).size()); @@ -1752,7 +1817,7 @@ class TestUtil { * followed by {@code modifyRepeatedExtensions}. */ public static void assertRepeatedExtensionsModified( - TestAllExtensions message) { + TestAllExtensionsOrBuilder message) { // ModifyRepeatedFields only sets the second repeated element of each // field. In addition to verifying this, we also verify that the first // element and size were *not* modified. @@ -1776,6 +1841,7 @@ class TestUtil { Assert.assertEquals(2, message.getExtensionCount(repeatedNestedMessageExtension )); Assert.assertEquals(2, message.getExtensionCount(repeatedForeignMessageExtension)); Assert.assertEquals(2, message.getExtensionCount(repeatedImportMessageExtension )); + Assert.assertEquals(2, message.getExtensionCount(repeatedLazyMessageExtension )); Assert.assertEquals(2, message.getExtensionCount(repeatedNestedEnumExtension )); Assert.assertEquals(2, message.getExtensionCount(repeatedForeignEnumExtension )); Assert.assertEquals(2, message.getExtensionCount(repeatedImportEnumExtension )); @@ -1803,6 +1869,7 @@ class TestUtil { assertEqualsExactType(218, message.getExtension(repeatedNestedMessageExtension , 0).getBb()); assertEqualsExactType(219, message.getExtension(repeatedForeignMessageExtension, 0).getC()); assertEqualsExactType(220, message.getExtension(repeatedImportMessageExtension , 0).getD()); + assertEqualsExactType(227, message.getExtension(repeatedLazyMessageExtension , 0).getBb()); assertEqualsExactType(TestAllTypes.NestedEnum.BAR, message.getExtension(repeatedNestedEnumExtension, 0)); @@ -1835,6 +1902,7 @@ class TestUtil { assertEqualsExactType(518, message.getExtension(repeatedNestedMessageExtension , 1).getBb()); assertEqualsExactType(519, message.getExtension(repeatedForeignMessageExtension, 1).getC()); assertEqualsExactType(520, message.getExtension(repeatedImportMessageExtension , 1).getD()); + assertEqualsExactType(527, message.getExtension(repeatedLazyMessageExtension , 1).getBb()); assertEqualsExactType(TestAllTypes.NestedEnum.FOO, message.getExtension(repeatedNestedEnumExtension, 1)); @@ -1958,6 +2026,10 @@ class TestUtil { ForeignMessageLite.newBuilder().setC(119).build()); message.setExtension(optionalImportMessageExtensionLite, ImportMessageLite.newBuilder().setD(120).build()); + message.setExtension(optionalPublicImportMessageExtensionLite, + PublicImportMessageLite.newBuilder().setE(126).build()); + message.setExtension(optionalLazyMessageExtensionLite, + TestAllTypesLite.NestedMessage.newBuilder().setBb(127).build()); message.setExtension(optionalNestedEnumExtensionLite, TestAllTypesLite.NestedEnum.BAZ); message.setExtension(optionalForeignEnumExtensionLite, ForeignEnumLite.FOREIGN_LITE_BAZ); @@ -1992,6 +2064,8 @@ class TestUtil { ForeignMessageLite.newBuilder().setC(219).build()); message.addExtension(repeatedImportMessageExtensionLite, ImportMessageLite.newBuilder().setD(220).build()); + message.addExtension(repeatedLazyMessageExtensionLite, + TestAllTypesLite.NestedMessage.newBuilder().setBb(227).build()); message.addExtension(repeatedNestedEnumExtensionLite, TestAllTypesLite.NestedEnum.BAR); message.addExtension(repeatedForeignEnumExtensionLite, ForeignEnumLite.FOREIGN_LITE_BAR); @@ -2025,6 +2099,8 @@ class TestUtil { ForeignMessageLite.newBuilder().setC(319).build()); message.addExtension(repeatedImportMessageExtensionLite, ImportMessageLite.newBuilder().setD(320).build()); + message.addExtension(repeatedLazyMessageExtensionLite, + TestAllTypesLite.NestedMessage.newBuilder().setBb(327).build()); message.addExtension(repeatedNestedEnumExtensionLite, TestAllTypesLite.NestedEnum.BAZ); message.addExtension(repeatedForeignEnumExtensionLite, ForeignEnumLite.FOREIGN_LITE_BAZ); @@ -2091,6 +2167,8 @@ class TestUtil { ForeignMessageLite.newBuilder().setC(519).build()); message.setExtension(repeatedImportMessageExtensionLite, 1, ImportMessageLite.newBuilder().setD(520).build()); + message.setExtension(repeatedLazyMessageExtensionLite, 1, + TestAllTypesLite.NestedMessage.newBuilder().setBb(527).build()); message.setExtension(repeatedNestedEnumExtensionLite , 1, TestAllTypesLite.NestedEnum.FOO); message.setExtension(repeatedForeignEnumExtensionLite, 1, ForeignEnumLite.FOREIGN_LITE_FOO); @@ -2106,7 +2184,8 @@ class TestUtil { * Assert (using {@code junit.framework.Assert}} that all extensions of * {@code message} are set to the values assigned by {@code setAllExtensions}. */ - public static void assertAllExtensionsSet(TestAllExtensionsLite message) { + public static void assertAllExtensionsSet( + TestAllExtensionsLiteOrBuilder message) { Assert.assertTrue(message.hasExtension(optionalInt32ExtensionLite )); Assert.assertTrue(message.hasExtension(optionalInt64ExtensionLite )); Assert.assertTrue(message.hasExtension(optionalUint32ExtensionLite )); @@ -2160,6 +2239,9 @@ class TestUtil { assertEqualsExactType(118, message.getExtension(optionalNestedMessageExtensionLite ).getBb()); assertEqualsExactType(119, message.getExtension(optionalForeignMessageExtensionLite).getC()); assertEqualsExactType(120, message.getExtension(optionalImportMessageExtensionLite ).getD()); + assertEqualsExactType(126, message.getExtension( + optionalPublicImportMessageExtensionLite).getE()); + assertEqualsExactType(127, message.getExtension(optionalLazyMessageExtensionLite).getBb()); assertEqualsExactType(TestAllTypesLite.NestedEnum.BAZ, message.getExtension(optionalNestedEnumExtensionLite)); @@ -2193,6 +2275,7 @@ class TestUtil { Assert.assertEquals(2, message.getExtensionCount(repeatedNestedMessageExtensionLite )); Assert.assertEquals(2, message.getExtensionCount(repeatedForeignMessageExtensionLite)); Assert.assertEquals(2, message.getExtensionCount(repeatedImportMessageExtensionLite )); + Assert.assertEquals(2, message.getExtensionCount(repeatedLazyMessageExtensionLite )); Assert.assertEquals(2, message.getExtensionCount(repeatedNestedEnumExtensionLite )); Assert.assertEquals(2, message.getExtensionCount(repeatedForeignEnumExtensionLite )); Assert.assertEquals(2, message.getExtensionCount(repeatedImportEnumExtensionLite )); @@ -2220,6 +2303,7 @@ class TestUtil { assertEqualsExactType(218, message.getExtension(repeatedNestedMessageExtensionLite ,0).getBb()); assertEqualsExactType(219, message.getExtension(repeatedForeignMessageExtensionLite,0).getC()); assertEqualsExactType(220, message.getExtension(repeatedImportMessageExtensionLite ,0).getD()); + assertEqualsExactType(227, message.getExtension(repeatedLazyMessageExtensionLite ,0).getBb()); assertEqualsExactType(TestAllTypesLite.NestedEnum.BAR, message.getExtension(repeatedNestedEnumExtensionLite, 0)); @@ -2251,6 +2335,7 @@ class TestUtil { assertEqualsExactType(318, message.getExtension(repeatedNestedMessageExtensionLite ,1).getBb()); assertEqualsExactType(319, message.getExtension(repeatedForeignMessageExtensionLite,1).getC()); assertEqualsExactType(320, message.getExtension(repeatedImportMessageExtensionLite ,1).getD()); + assertEqualsExactType(327, message.getExtension(repeatedLazyMessageExtensionLite ,1).getBb()); assertEqualsExactType(TestAllTypesLite.NestedEnum.BAZ, message.getExtension(repeatedNestedEnumExtensionLite, 1)); @@ -2321,7 +2406,8 @@ class TestUtil { * {@code message} are cleared, and that getting the extensions returns their * default values. */ - public static void assertExtensionsClear(TestAllExtensionsLite message) { + public static void assertExtensionsClear( + TestAllExtensionsLiteOrBuilder message) { // hasBlah() should initially be false for all optional fields. Assert.assertFalse(message.hasExtension(optionalInt32ExtensionLite )); Assert.assertFalse(message.hasExtension(optionalInt64ExtensionLite )); @@ -2339,10 +2425,12 @@ class TestUtil { Assert.assertFalse(message.hasExtension(optionalStringExtensionLite )); Assert.assertFalse(message.hasExtension(optionalBytesExtensionLite )); - Assert.assertFalse(message.hasExtension(optionalGroupExtensionLite )); - Assert.assertFalse(message.hasExtension(optionalNestedMessageExtensionLite )); - Assert.assertFalse(message.hasExtension(optionalForeignMessageExtensionLite)); - Assert.assertFalse(message.hasExtension(optionalImportMessageExtensionLite )); + Assert.assertFalse(message.hasExtension(optionalGroupExtensionLite )); + Assert.assertFalse(message.hasExtension(optionalNestedMessageExtensionLite )); + Assert.assertFalse(message.hasExtension(optionalForeignMessageExtensionLite )); + Assert.assertFalse(message.hasExtension(optionalImportMessageExtensionLite )); + Assert.assertFalse(message.hasExtension(optionalPublicImportMessageExtensionLite)); + Assert.assertFalse(message.hasExtension(optionalLazyMessageExtensionLite )); Assert.assertFalse(message.hasExtension(optionalNestedEnumExtensionLite )); Assert.assertFalse(message.hasExtension(optionalForeignEnumExtensionLite)); @@ -2369,15 +2457,20 @@ class TestUtil { assertEqualsExactType(ByteString.EMPTY, message.getExtension(optionalBytesExtensionLite)); // Embedded messages should also be clear. - Assert.assertFalse(message.getExtension(optionalGroupExtensionLite ).hasA()); - Assert.assertFalse(message.getExtension(optionalNestedMessageExtensionLite ).hasBb()); - Assert.assertFalse(message.getExtension(optionalForeignMessageExtensionLite).hasC()); - Assert.assertFalse(message.getExtension(optionalImportMessageExtensionLite ).hasD()); + Assert.assertFalse(message.getExtension(optionalGroupExtensionLite ).hasA()); + Assert.assertFalse(message.getExtension(optionalNestedMessageExtensionLite ).hasBb()); + Assert.assertFalse(message.getExtension(optionalForeignMessageExtensionLite ).hasC()); + Assert.assertFalse(message.getExtension(optionalImportMessageExtensionLite ).hasD()); + Assert.assertFalse(message.getExtension(optionalPublicImportMessageExtensionLite).hasE()); + Assert.assertFalse(message.getExtension(optionalLazyMessageExtensionLite ).hasBb()); assertEqualsExactType(0, message.getExtension(optionalGroupExtensionLite ).getA()); assertEqualsExactType(0, message.getExtension(optionalNestedMessageExtensionLite ).getBb()); assertEqualsExactType(0, message.getExtension(optionalForeignMessageExtensionLite).getC()); assertEqualsExactType(0, message.getExtension(optionalImportMessageExtensionLite ).getD()); + assertEqualsExactType(0, message.getExtension( + optionalPublicImportMessageExtensionLite).getE()); + assertEqualsExactType(0, message.getExtension(optionalLazyMessageExtensionLite ).getBb()); // Enums without defaults are set to the first value in the enum. assertEqualsExactType(TestAllTypesLite.NestedEnum.FOO, @@ -2411,6 +2504,7 @@ class TestUtil { Assert.assertEquals(0, message.getExtensionCount(repeatedNestedMessageExtensionLite )); Assert.assertEquals(0, message.getExtensionCount(repeatedForeignMessageExtensionLite)); Assert.assertEquals(0, message.getExtensionCount(repeatedImportMessageExtensionLite )); + Assert.assertEquals(0, message.getExtensionCount(repeatedLazyMessageExtensionLite )); Assert.assertEquals(0, message.getExtensionCount(repeatedNestedEnumExtensionLite )); Assert.assertEquals(0, message.getExtensionCount(repeatedForeignEnumExtensionLite )); Assert.assertEquals(0, message.getExtensionCount(repeatedImportEnumExtensionLite )); @@ -2478,7 +2572,7 @@ class TestUtil { * followed by {@code modifyRepeatedExtensions}. */ public static void assertRepeatedExtensionsModified( - TestAllExtensionsLite message) { + TestAllExtensionsLiteOrBuilder message) { // ModifyRepeatedFields only sets the second repeated element of each // field. In addition to verifying this, we also verify that the first // element and size were *not* modified. @@ -2502,6 +2596,7 @@ class TestUtil { Assert.assertEquals(2, message.getExtensionCount(repeatedNestedMessageExtensionLite )); Assert.assertEquals(2, message.getExtensionCount(repeatedForeignMessageExtensionLite)); Assert.assertEquals(2, message.getExtensionCount(repeatedImportMessageExtensionLite )); + Assert.assertEquals(2, message.getExtensionCount(repeatedLazyMessageExtensionLite )); Assert.assertEquals(2, message.getExtensionCount(repeatedNestedEnumExtensionLite )); Assert.assertEquals(2, message.getExtensionCount(repeatedForeignEnumExtensionLite )); Assert.assertEquals(2, message.getExtensionCount(repeatedImportEnumExtensionLite )); @@ -2529,6 +2624,7 @@ class TestUtil { assertEqualsExactType(218, message.getExtension(repeatedNestedMessageExtensionLite ,0).getBb()); assertEqualsExactType(219, message.getExtension(repeatedForeignMessageExtensionLite,0).getC()); assertEqualsExactType(220, message.getExtension(repeatedImportMessageExtensionLite ,0).getD()); + assertEqualsExactType(227, message.getExtension(repeatedLazyMessageExtensionLite ,0).getBb()); assertEqualsExactType(TestAllTypesLite.NestedEnum.BAR, message.getExtension(repeatedNestedEnumExtensionLite, 0)); @@ -2561,6 +2657,7 @@ class TestUtil { assertEqualsExactType(518, message.getExtension(repeatedNestedMessageExtensionLite ,1).getBb()); assertEqualsExactType(519, message.getExtension(repeatedForeignMessageExtensionLite,1).getC()); assertEqualsExactType(520, message.getExtension(repeatedImportMessageExtensionLite ,1).getD()); + assertEqualsExactType(527, message.getExtension(repeatedLazyMessageExtensionLite ,1).getBb()); assertEqualsExactType(TestAllTypesLite.NestedEnum.FOO, message.getExtension(repeatedNestedEnumExtensionLite, 1)); @@ -2665,18 +2762,21 @@ class TestUtil { private final Descriptors.FileDescriptor file; private final Descriptors.FileDescriptor importFile; + private final Descriptors.FileDescriptor publicImportFile; private final Descriptors.Descriptor optionalGroup; private final Descriptors.Descriptor repeatedGroup; private final Descriptors.Descriptor nestedMessage; private final Descriptors.Descriptor foreignMessage; private final Descriptors.Descriptor importMessage; + private final Descriptors.Descriptor publicImportMessage; private final Descriptors.FieldDescriptor groupA; private final Descriptors.FieldDescriptor repeatedGroupA; private final Descriptors.FieldDescriptor nestedB; private final Descriptors.FieldDescriptor foreignC; private final Descriptors.FieldDescriptor importD; + private final Descriptors.FieldDescriptor importE; private final Descriptors.EnumDescriptor nestedEnum; private final Descriptors.EnumDescriptor foreignEnum; @@ -2713,6 +2813,7 @@ class TestUtil { this.file = baseDescriptor.getFile(); Assert.assertEquals(1, file.getDependencies().size()); this.importFile = file.getDependencies().get(0); + this.publicImportFile = importFile.getDependencies().get(0); Descriptors.Descriptor testAllTypes; if (baseDescriptor.getName() == "TestAllTypes") { @@ -2739,6 +2840,8 @@ class TestUtil { this.nestedMessage = testAllTypes.findNestedTypeByName("NestedMessage"); this.foreignMessage = file.findMessageTypeByName("ForeignMessage"); this.importMessage = importFile.findMessageTypeByName("ImportMessage"); + this.publicImportMessage = publicImportFile.findMessageTypeByName( + "PublicImportMessage"); this.nestedEnum = testAllTypes.findEnumTypeByName("NestedEnum"); this.foreignEnum = file.findEnumTypeByName("ForeignEnum"); @@ -2756,6 +2859,7 @@ class TestUtil { this.nestedB = nestedMessage .findFieldByName("bb"); this.foreignC = foreignMessage.findFieldByName("c"); this.importD = importMessage .findFieldByName("d"); + this.importE = publicImportMessage.findFieldByName("e"); this.nestedFoo = nestedEnum.findValueByName("FOO"); this.nestedBar = nestedEnum.findValueByName("BAR"); this.nestedBaz = nestedEnum.findValueByName("BAZ"); @@ -2774,6 +2878,7 @@ class TestUtil { Assert.assertNotNull(nestedB ); Assert.assertNotNull(foreignC ); Assert.assertNotNull(importD ); + Assert.assertNotNull(importE ); Assert.assertNotNull(nestedFoo ); Assert.assertNotNull(nestedBar ); Assert.assertNotNull(nestedBaz ); @@ -2854,6 +2959,12 @@ class TestUtil { message.setField(f("optional_import_message"), newBuilderForField(message, f("optional_import_message")) .setField(importD, 120).build()); + message.setField(f("optional_public_import_message"), + newBuilderForField(message, f("optional_public_import_message")) + .setField(importE, 126).build()); + message.setField(f("optional_lazy_message"), + newBuilderForField(message, f("optional_lazy_message")) + .setField(nestedB, 127).build()); message.setField(f("optional_nested_enum" ), nestedBaz); message.setField(f("optional_foreign_enum"), foreignBaz); @@ -2892,6 +3003,9 @@ class TestUtil { message.addRepeatedField(f("repeated_import_message"), newBuilderForField(message, f("repeated_import_message")) .setField(importD, 220).build()); + message.addRepeatedField(f("repeated_lazy_message"), + newBuilderForField(message, f("repeated_lazy_message")) + .setField(nestedB, 227).build()); message.addRepeatedField(f("repeated_nested_enum" ), nestedBar); message.addRepeatedField(f("repeated_foreign_enum"), foreignBar); @@ -2929,6 +3043,9 @@ class TestUtil { message.addRepeatedField(f("repeated_import_message"), newBuilderForField(message, f("repeated_import_message")) .setField(importD, 320).build()); + message.addRepeatedField(f("repeated_lazy_message"), + newBuilderForField(message, f("repeated_lazy_message")) + .setField(nestedB, 327).build()); message.addRepeatedField(f("repeated_nested_enum" ), nestedBaz); message.addRepeatedField(f("repeated_foreign_enum"), foreignBaz); @@ -2999,6 +3116,9 @@ class TestUtil { message.setRepeatedField(f("repeated_import_message"), 1, newBuilderForField(message, f("repeated_import_message")) .setField(importD, 520).build()); + message.setRepeatedField(f("repeated_lazy_message"), 1, + newBuilderForField(message, f("repeated_lazy_message")) + .setField(nestedB, 527).build()); message.setRepeatedField(f("repeated_nested_enum" ), 1, nestedFoo); message.setRepeatedField(f("repeated_foreign_enum"), 1, foreignFoo); @@ -3015,7 +3135,7 @@ class TestUtil { * {@code message} are set to the values assigned by {@code setAllFields}, * using the {@link Message} reflection interface. */ - public void assertAllFieldsSetViaReflection(Message message) { + public void assertAllFieldsSetViaReflection(MessageOrBuilder message) { Assert.assertTrue(message.hasField(f("optional_int32" ))); Assert.assertTrue(message.hasField(f("optional_int64" ))); Assert.assertTrue(message.hasField(f("optional_uint32" ))); @@ -3083,6 +3203,12 @@ class TestUtil { Assert.assertEquals(120, ((Message)message.getField(f("optional_import_message"))) .getField(importD)); + Assert.assertEquals(126, + ((Message)message.getField(f("optional_public_import_message"))) + .getField(importE)); + Assert.assertEquals(127, + ((Message)message.getField(f("optional_lazy_message"))) + .getField(nestedB)); Assert.assertEquals( nestedBaz, message.getField(f("optional_nested_enum" ))); Assert.assertEquals(foreignBaz, message.getField(f("optional_foreign_enum"))); @@ -3113,6 +3239,7 @@ class TestUtil { Assert.assertEquals(2, message.getRepeatedFieldCount(f("repeated_nested_message" ))); Assert.assertEquals(2, message.getRepeatedFieldCount(f("repeated_foreign_message"))); Assert.assertEquals(2, message.getRepeatedFieldCount(f("repeated_import_message" ))); + Assert.assertEquals(2, message.getRepeatedFieldCount(f("repeated_lazy_message" ))); Assert.assertEquals(2, message.getRepeatedFieldCount(f("repeated_nested_enum" ))); Assert.assertEquals(2, message.getRepeatedFieldCount(f("repeated_foreign_enum" ))); Assert.assertEquals(2, message.getRepeatedFieldCount(f("repeated_import_enum" ))); @@ -3148,6 +3275,9 @@ class TestUtil { Assert.assertEquals(220, ((Message)message.getRepeatedField(f("repeated_import_message"), 0)) .getField(importD)); + Assert.assertEquals(227, + ((Message)message.getRepeatedField(f("repeated_lazy_message"), 0)) + .getField(nestedB)); Assert.assertEquals( nestedBar, message.getRepeatedField(f("repeated_nested_enum" ),0)); Assert.assertEquals(foreignBar, message.getRepeatedField(f("repeated_foreign_enum"),0)); @@ -3184,6 +3314,9 @@ class TestUtil { Assert.assertEquals(320, ((Message)message.getRepeatedField(f("repeated_import_message"), 1)) .getField(importD)); + Assert.assertEquals(327, + ((Message)message.getRepeatedField(f("repeated_lazy_message"), 1)) + .getField(nestedB)); Assert.assertEquals( nestedBaz, message.getRepeatedField(f("repeated_nested_enum" ),1)); Assert.assertEquals(foreignBaz, message.getRepeatedField(f("repeated_foreign_enum"),1)); @@ -3248,7 +3381,7 @@ class TestUtil { * {@code message} are cleared, and that getting the fields returns their * default values, using the {@link Message} reflection interface. */ - public void assertClearViaReflection(Message message) { + public void assertClearViaReflection(MessageOrBuilder message) { // has_blah() should initially be false for all optional fields. Assert.assertFalse(message.hasField(f("optional_int32" ))); Assert.assertFalse(message.hasField(f("optional_int64" ))); @@ -3307,6 +3440,12 @@ class TestUtil { Assert.assertFalse( ((Message)message.getField(f("optional_import_message"))) .hasField(importD)); + Assert.assertFalse( + ((Message)message.getField(f("optional_public_import_message"))) + .hasField(importE)); + Assert.assertFalse( + ((Message)message.getField(f("optional_lazy_message"))) + .hasField(nestedB)); Assert.assertEquals(0, ((Message)message.getField(f("optionalgroup"))).getField(groupA)); @@ -3319,6 +3458,12 @@ class TestUtil { Assert.assertEquals(0, ((Message)message.getField(f("optional_import_message"))) .getField(importD)); + Assert.assertEquals(0, + ((Message)message.getField(f("optional_public_import_message"))) + .getField(importE)); + Assert.assertEquals(0, + ((Message)message.getField(f("optional_lazy_message"))) + .getField(nestedB)); // Enums without defaults are set to the first value in the enum. Assert.assertEquals( nestedFoo, message.getField(f("optional_nested_enum" ))); @@ -3349,6 +3494,7 @@ class TestUtil { Assert.assertEquals(0, message.getRepeatedFieldCount(f("repeated_nested_message" ))); Assert.assertEquals(0, message.getRepeatedFieldCount(f("repeated_foreign_message"))); Assert.assertEquals(0, message.getRepeatedFieldCount(f("repeated_import_message" ))); + Assert.assertEquals(0, message.getRepeatedFieldCount(f("repeated_lazy_message" ))); Assert.assertEquals(0, message.getRepeatedFieldCount(f("repeated_nested_enum" ))); Assert.assertEquals(0, message.getRepeatedFieldCount(f("repeated_foreign_enum" ))); Assert.assertEquals(0, message.getRepeatedFieldCount(f("repeated_import_enum" ))); @@ -3405,9 +3551,11 @@ class TestUtil { Assert.assertEquals("123", message.getField(f("default_cord"))); } + // --------------------------------------------------------------- - public void assertRepeatedFieldsModifiedViaReflection(Message message) { + public void assertRepeatedFieldsModifiedViaReflection( + MessageOrBuilder message) { // ModifyRepeatedFields only sets the second repeated element of each // field. In addition to verifying this, we also verify that the first // element and size were *not* modified. @@ -3431,6 +3579,7 @@ class TestUtil { Assert.assertEquals(2, message.getRepeatedFieldCount(f("repeated_nested_message" ))); Assert.assertEquals(2, message.getRepeatedFieldCount(f("repeated_foreign_message"))); Assert.assertEquals(2, message.getRepeatedFieldCount(f("repeated_import_message" ))); + Assert.assertEquals(2, message.getRepeatedFieldCount(f("repeated_lazy_message" ))); Assert.assertEquals(2, message.getRepeatedFieldCount(f("repeated_nested_enum" ))); Assert.assertEquals(2, message.getRepeatedFieldCount(f("repeated_foreign_enum" ))); Assert.assertEquals(2, message.getRepeatedFieldCount(f("repeated_import_enum" ))); @@ -3466,6 +3615,9 @@ class TestUtil { Assert.assertEquals(220, ((Message)message.getRepeatedField(f("repeated_import_message"), 0)) .getField(importD)); + Assert.assertEquals(227, + ((Message)message.getRepeatedField(f("repeated_lazy_message"), 0)) + .getField(nestedB)); Assert.assertEquals( nestedBar, message.getRepeatedField(f("repeated_nested_enum" ),0)); Assert.assertEquals(foreignBar, message.getRepeatedField(f("repeated_foreign_enum"),0)); @@ -3502,6 +3654,9 @@ class TestUtil { Assert.assertEquals(520, ((Message)message.getRepeatedField(f("repeated_import_message"), 1)) .getField(importD)); + Assert.assertEquals(527, + ((Message)message.getRepeatedField(f("repeated_lazy_message"), 1)) + .getField(nestedB)); Assert.assertEquals( nestedFoo, message.getRepeatedField(f("repeated_nested_enum" ),1)); Assert.assertEquals(foreignFoo, message.getRepeatedField(f("repeated_foreign_enum"),1)); @@ -3543,7 +3698,7 @@ class TestUtil { message.addRepeatedField(f("packed_enum" ), foreignBaz); } - public void assertPackedFieldsSetViaReflection(Message message) { + public void assertPackedFieldsSetViaReflection(MessageOrBuilder message) { Assert.assertEquals(2, message.getRepeatedFieldCount(f("packed_int32" ))); Assert.assertEquals(2, message.getRepeatedFieldCount(f("packed_int64" ))); Assert.assertEquals(2, message.getRepeatedFieldCount(f("packed_uint32" ))); @@ -3699,7 +3854,7 @@ class TestUtil { /** * @param filePath The path relative to - * {@link com.google.testing.util.TestUtil#getDefaultSrcDir}. + * {@link #getTestDataDir}. */ public static String readTextFromFile(String filePath) { return readBytesFromFile(filePath).toStringUtf8(); @@ -3728,8 +3883,8 @@ class TestUtil { } /** - * @param filePath The path relative to - * {@link com.google.testing.util.TestUtil#getDefaultSrcDir}. + * @param filename The path relative to + * {@link #getTestDataDir}. */ public static ByteString readBytesFromFile(String filename) { File fullPath = new File(getTestDataDir(), filename); @@ -3749,7 +3904,7 @@ class TestUtil { /** * Get the bytes of the "golden message". This is a serialized TestAllTypes * with all fields set as they would be by - * {@link setAllFields(TestAllTypes.Builder)}, but it is loaded from a file + * {@link #setAllFields(TestAllTypes.Builder)}, but it is loaded from a file * on disk rather than generated dynamically. The file is actually generated * by C++ code, so testing against it verifies compatibility with C++. */ @@ -3764,7 +3919,7 @@ class TestUtil { /** * Get the bytes of the "golden packed fields message". This is a serialized * TestPackedTypes with all fields set as they would be by - * {@link setPackedFields(TestPackedTypes.Builder)}, but it is loaded from a + * {@link #setPackedFields(TestPackedTypes.Builder)}, but it is loaded from a * file on disk rather than generated dynamically. The file is actually * generated by C++ code, so testing against it verifies compatibility with * C++. @@ -3777,4 +3932,24 @@ class TestUtil { return goldenPackedFieldsMessage; } private static ByteString goldenPackedFieldsMessage = null; + + /** + * Mock implementation of {@link GeneratedMessage.BuilderParent} for testing. + * + * @author jonp@google.com (Jon Perlow) + */ + public static class MockBuilderParent + implements GeneratedMessage.BuilderParent { + + private int invalidations; + + //@Override (Java 1.6 override semantics, but we must support 1.5) + public void markDirty() { + invalidations++; + } + + public int getInvalidationCount() { + return invalidations; + } + } } diff --git a/cpp/thirdparty/protobuf-2.3.0/java/src/test/java/com/google/protobuf/TextFormatTest.java b/cpp/thirdparty/protobuf-2.5.0/java/src/test/java/com/google/protobuf/TextFormatTest.java similarity index 80% rename from cpp/thirdparty/protobuf-2.3.0/java/src/test/java/com/google/protobuf/TextFormatTest.java rename to cpp/thirdparty/protobuf-2.5.0/java/src/test/java/com/google/protobuf/TextFormatTest.java index 60bd800ec..5323d70e1 100644 --- a/cpp/thirdparty/protobuf-2.3.0/java/src/test/java/com/google/protobuf/TextFormatTest.java +++ b/cpp/thirdparty/protobuf-2.5.0/java/src/test/java/com/google/protobuf/TextFormatTest.java @@ -31,14 +31,14 @@ package com.google.protobuf; import com.google.protobuf.Descriptors.FieldDescriptor; -import protobuf_unittest.UnittestProto.OneString; -import protobuf_unittest.UnittestProto.TestAllTypes; -import protobuf_unittest.UnittestProto.TestAllExtensions; -import protobuf_unittest.UnittestProto.TestEmptyMessage; -import protobuf_unittest.UnittestProto.TestAllTypes.NestedMessage; import protobuf_unittest.UnittestMset.TestMessageSet; import protobuf_unittest.UnittestMset.TestMessageSetExtension1; import protobuf_unittest.UnittestMset.TestMessageSetExtension2; +import protobuf_unittest.UnittestProto.OneString; +import protobuf_unittest.UnittestProto.TestAllExtensions; +import protobuf_unittest.UnittestProto.TestAllTypes; +import protobuf_unittest.UnittestProto.TestAllTypes.NestedMessage; +import protobuf_unittest.UnittestProto.TestEmptyMessage; import junit.framework.TestCase; @@ -60,8 +60,8 @@ public class TextFormatTest extends TestCase { // A representation of the above string with all the characters escaped. private final static String kEscapeTestStringEscaped = - "\"\\\"A string with \\' characters \\n and \\r newlines " - + "and \\t tabs and \\001 slashes \\\\\""; + "\\\"A string with \\' characters \\n and \\r newlines " + + "and \\t tabs and \\001 slashes \\\\"; private static String allFieldsSetText = TestUtil.readTextFromFile( "text_format_unittest_data.txt"); @@ -121,6 +121,18 @@ public class TextFormatTest extends TestCase { assertEquals(allFieldsSetText, javaText); } + /** Print TestAllTypes as Builder and compare with golden file. */ + public void testPrintMessageBuilder() throws Exception { + String javaText = TextFormat.printToString(TestUtil.getAllSetBuilder()); + + // Java likes to add a trailing ".0" to floats and doubles. C printf + // (with %g format) does not. Our golden files are used for both + // C++ and Java TextFormat classes, so we need to conform. + javaText = javaText.replace(".0\n", "\n"); + + assertEquals(allFieldsSetText, javaText); + } + /** Print TestAllExtensions and compare with golden file. */ public void testPrintExtensions() throws Exception { String javaText = TextFormat.printToString(TestUtil.getAllExtensionsSet()); @@ -133,40 +145,44 @@ public class TextFormatTest extends TestCase { assertEquals(allExtensionsSetText, javaText); } + // Creates an example unknown field set. + private UnknownFieldSet makeUnknownFieldSet() { + return UnknownFieldSet.newBuilder() + .addField(5, + UnknownFieldSet.Field.newBuilder() + .addVarint(1) + .addFixed32(2) + .addFixed64(3) + .addLengthDelimited(ByteString.copyFromUtf8("4")) + .addGroup( + UnknownFieldSet.newBuilder() + .addField(10, + UnknownFieldSet.Field.newBuilder() + .addVarint(5) + .build()) + .build()) + .build()) + .addField(8, + UnknownFieldSet.Field.newBuilder() + .addVarint(1) + .addVarint(2) + .addVarint(3) + .build()) + .addField(15, + UnknownFieldSet.Field.newBuilder() + .addVarint(0xABCDEF1234567890L) + .addFixed32(0xABCD1234) + .addFixed64(0xABCDEF1234567890L) + .build()) + .build(); + } + public void testPrintUnknownFields() throws Exception { // Test printing of unknown fields in a message. TestEmptyMessage message = TestEmptyMessage.newBuilder() - .setUnknownFields( - UnknownFieldSet.newBuilder() - .addField(5, - UnknownFieldSet.Field.newBuilder() - .addVarint(1) - .addFixed32(2) - .addFixed64(3) - .addLengthDelimited(ByteString.copyFromUtf8("4")) - .addGroup( - UnknownFieldSet.newBuilder() - .addField(10, - UnknownFieldSet.Field.newBuilder() - .addVarint(5) - .build()) - .build()) - .build()) - .addField(8, - UnknownFieldSet.Field.newBuilder() - .addVarint(1) - .addVarint(2) - .addVarint(3) - .build()) - .addField(15, - UnknownFieldSet.Field.newBuilder() - .addVarint(0xABCDEF1234567890L) - .addFixed32(0xABCD1234) - .addFixed64(0xABCDEF1234567890L) - .build()) - .build()) + .setUnknownFields(makeUnknownFieldSet()) .build(); assertEquals( @@ -408,6 +424,9 @@ public class TextFormatTest extends TestCase { assertParseError( "1:16: Expected \"true\" or \"false\".", "optional_bool: maybe"); + assertParseError( + "1:16: Expected \"true\" or \"false\".", + "optional_bool: 2"); assertParseError( "1:18: Expected string.", "optional_string: 123"); @@ -469,6 +488,10 @@ public class TextFormatTest extends TestCase { TextFormat.unescapeBytes("\\000\\001\\a\\b\\f\\n\\r\\t\\v\\\\\\'\\\"")); assertEquals("\0\001\007\b\f\n\r\t\013\\\'\"", TextFormat.unescapeText("\\000\\001\\a\\b\\f\\n\\r\\t\\v\\\\\\'\\\"")); + assertEquals(kEscapeTestStringEscaped, + TextFormat.escapeText(kEscapeTestString)); + assertEquals(kEscapeTestString, + TextFormat.unescapeText(kEscapeTestStringEscaped)); // Unicode handling. assertEquals("\\341\\210\\264", TextFormat.escapeText("\u1234")); @@ -481,6 +504,11 @@ public class TextFormatTest extends TestCase { assertEquals(bytes(0xe1, 0x88, 0xb4), TextFormat.unescapeBytes("\\xe1\\x88\\xb4")); + // Handling of strings with unescaped Unicode characters > 255. + final String zh = "\u9999\u6e2f\u4e0a\u6d77\ud84f\udf80\u8c50\u9280\u884c"; + ByteString zhByteString = ByteString.copyFromUtf8(zh); + assertEquals(zhByteString, TextFormat.unescapeBytes(zh)); + // Errors. try { TextFormat.unescapeText("\\x"); @@ -622,6 +650,13 @@ public class TextFormatTest extends TestCase { } } + public void testParseString() throws Exception { + final String zh = "\u9999\u6e2f\u4e0a\u6d77\ud84f\udf80\u8c50\u9280\u884c"; + TestAllTypes.Builder builder = TestAllTypes.newBuilder(); + TextFormat.merge("optional_string: \"" + zh + "\"", builder); + assertEquals(zh, builder.getOptionalString()); + } + public void testParseLongString() throws Exception { String longText = "123456789012345678901234567890123456789012345678901234567890" + @@ -650,9 +685,102 @@ public class TextFormatTest extends TestCase { assertEquals(longText, builder.getOptionalString()); } + public void testParseBoolean() throws Exception { + String goodText = + "repeated_bool: t repeated_bool : 0\n" + + "repeated_bool :f repeated_bool:1"; + String goodTextCanonical = + "repeated_bool: true\n" + + "repeated_bool: false\n" + + "repeated_bool: false\n" + + "repeated_bool: true\n"; + TestAllTypes.Builder builder = TestAllTypes.newBuilder(); + TextFormat.merge(goodText, builder); + assertEquals(goodTextCanonical, builder.build().toString()); + + try { + TestAllTypes.Builder badBuilder = TestAllTypes.newBuilder(); + TextFormat.merge("optional_bool:2", badBuilder); + fail("Should have thrown an exception."); + } catch (TextFormat.ParseException e) { + // success + } + try { + TestAllTypes.Builder badBuilder = TestAllTypes.newBuilder(); + TextFormat.merge("optional_bool: foo", badBuilder); + fail("Should have thrown an exception."); + } catch (TextFormat.ParseException e) { + // success + } + } + public void testParseAdjacentStringLiterals() throws Exception { TestAllTypes.Builder builder = TestAllTypes.newBuilder(); TextFormat.merge("optional_string: \"foo\" 'corge' \"grault\"", builder); assertEquals("foocorgegrault", builder.getOptionalString()); } + + public void testPrintFieldValue() throws Exception { + assertPrintFieldValue("\"Hello\"", "Hello", "repeated_string"); + assertPrintFieldValue("123.0", 123f, "repeated_float"); + assertPrintFieldValue("123.0", 123d, "repeated_double"); + assertPrintFieldValue("123", 123, "repeated_int32"); + assertPrintFieldValue("123", 123L, "repeated_int64"); + assertPrintFieldValue("true", true, "repeated_bool"); + assertPrintFieldValue("4294967295", 0xFFFFFFFF, "repeated_uint32"); + assertPrintFieldValue("18446744073709551615", 0xFFFFFFFFFFFFFFFFL, + "repeated_uint64"); + assertPrintFieldValue("\"\\001\\002\\003\"", + ByteString.copyFrom(new byte[] {1, 2, 3}), "repeated_bytes"); + } + + private void assertPrintFieldValue(String expect, Object value, + String fieldName) throws Exception { + TestAllTypes.Builder builder = TestAllTypes.newBuilder(); + StringBuilder sb = new StringBuilder(); + TextFormat.printFieldValue( + TestAllTypes.getDescriptor().findFieldByName(fieldName), + value, sb); + assertEquals(expect, sb.toString()); + } + + public void testShortDebugString() { + assertEquals("optional_nested_message { bb: 42 } repeated_int32: 1" + + " repeated_uint32: 2", + TextFormat.shortDebugString(TestAllTypes.newBuilder() + .addRepeatedInt32(1) + .addRepeatedUint32(2) + .setOptionalNestedMessage( + NestedMessage.newBuilder().setBb(42).build()) + .build())); + } + + public void testShortDebugString_unknown() { + assertEquals("5: 1 5: 0x00000002 5: 0x0000000000000003 5: \"4\" 5 { 10: 5 }" + + " 8: 1 8: 2 8: 3 15: 12379813812177893520 15: 0xabcd1234 15:" + + " 0xabcdef1234567890", + TextFormat.shortDebugString(makeUnknownFieldSet())); + } + + public void testPrintToUnicodeString() { + assertEquals( + "optional_string: \"abc\u3042efg\"\n" + + "optional_bytes: \"\\343\\201\\202\"\n" + + "repeated_string: \"\u3093XYZ\"\n", + TextFormat.printToUnicodeString(TestAllTypes.newBuilder() + .setOptionalString("abc\u3042efg") + .setOptionalBytes(bytes(0xe3, 0x81, 0x82)) + .addRepeatedString("\u3093XYZ") + .build())); + } + + public void testPrintToUnicodeString_unknown() { + assertEquals( + "1: \"\\343\\201\\202\"\n", + TextFormat.printToUnicodeString(UnknownFieldSet.newBuilder() + .addField(1, + UnknownFieldSet.Field.newBuilder() + .addLengthDelimited(bytes(0xe3, 0x81, 0x82)).build()) + .build())); + } } diff --git a/cpp/thirdparty/protobuf-2.3.0/java/src/test/java/com/google/protobuf/UnknownFieldSetTest.java b/cpp/thirdparty/protobuf-2.5.0/java/src/test/java/com/google/protobuf/UnknownFieldSetTest.java similarity index 100% rename from cpp/thirdparty/protobuf-2.3.0/java/src/test/java/com/google/protobuf/UnknownFieldSetTest.java rename to cpp/thirdparty/protobuf-2.5.0/java/src/test/java/com/google/protobuf/UnknownFieldSetTest.java diff --git a/cpp/thirdparty/protobuf-2.5.0/java/src/test/java/com/google/protobuf/UnmodifiableLazyStringListTest.java b/cpp/thirdparty/protobuf-2.5.0/java/src/test/java/com/google/protobuf/UnmodifiableLazyStringListTest.java new file mode 100644 index 000000000..ed5d069e4 --- /dev/null +++ b/cpp/thirdparty/protobuf-2.5.0/java/src/test/java/com/google/protobuf/UnmodifiableLazyStringListTest.java @@ -0,0 +1,152 @@ +// Protocol Buffers - Google's data interchange format +// Copyright 2008 Google Inc. All rights reserved. +// http://code.google.com/p/protobuf/ +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +package com.google.protobuf; + +import junit.framework.TestCase; + +import java.util.Iterator; +import java.util.ListIterator; + +/** + * Tests for {@link UnmodifiableLazyStringList}. + * + * @author jonp@google.com (Jon Perlow) + */ +public class UnmodifiableLazyStringListTest extends TestCase { + + private static String STRING_A = "A"; + private static String STRING_B = "B"; + private static String STRING_C = "C"; + + private static ByteString BYTE_STRING_A = ByteString.copyFromUtf8("A"); + private static ByteString BYTE_STRING_B = ByteString.copyFromUtf8("B"); + private static ByteString BYTE_STRING_C = ByteString.copyFromUtf8("C"); + + public void testReadOnlyMethods() { + LazyStringArrayList rawList = createSampleList(); + UnmodifiableLazyStringList list = new UnmodifiableLazyStringList(rawList); + assertEquals(3, list.size()); + assertSame(STRING_A, list.get(0)); + assertSame(STRING_B, list.get(1)); + assertSame(STRING_C, list.get(2)); + assertEquals(BYTE_STRING_A, list.getByteString(0)); + assertEquals(BYTE_STRING_B, list.getByteString(1)); + assertEquals(BYTE_STRING_C, list.getByteString(2)); + } + + public void testModifyMethods() { + LazyStringArrayList rawList = createSampleList(); + UnmodifiableLazyStringList list = new UnmodifiableLazyStringList(rawList); + + try { + list.remove(0); + fail(); + } catch (UnsupportedOperationException e) { + // expected + } + assertEquals(3, list.size()); + + try { + list.add(STRING_B); + fail(); + } catch (UnsupportedOperationException e) { + // expected + } + assertEquals(3, list.size()); + + try { + list.set(1, STRING_B); + fail(); + } catch (UnsupportedOperationException e) { + // expected + } + } + + public void testIterator() { + LazyStringArrayList rawList = createSampleList(); + UnmodifiableLazyStringList list = new UnmodifiableLazyStringList(rawList); + + Iterator iter = list.iterator(); + int count = 0; + while (iter.hasNext()) { + iter.next(); + count++; + try { + iter.remove(); + fail(); + } catch (UnsupportedOperationException e) { + // expected + } + } + assertEquals(3, count); + + } + + public void testListIterator() { + LazyStringArrayList rawList = createSampleList(); + UnmodifiableLazyStringList list = new UnmodifiableLazyStringList(rawList); + + ListIterator iter = list.listIterator(); + int count = 0; + while (iter.hasNext()) { + iter.next(); + count++; + try { + iter.remove(); + fail(); + } catch (UnsupportedOperationException e) { + // expected + } + try { + iter.set("bar"); + fail(); + } catch (UnsupportedOperationException e) { + // expected + } + try { + iter.add("bar"); + fail(); + } catch (UnsupportedOperationException e) { + // expected + } + } + assertEquals(3, count); + + } + + private LazyStringArrayList createSampleList() { + LazyStringArrayList rawList = new LazyStringArrayList(); + rawList.add(STRING_A); + rawList.add(STRING_B); + rawList.add(STRING_C); + return rawList; + } +} diff --git a/cpp/thirdparty/protobuf-2.3.0/java/src/test/java/com/google/protobuf/WireFormatTest.java b/cpp/thirdparty/protobuf-2.5.0/java/src/test/java/com/google/protobuf/WireFormatTest.java similarity index 74% rename from cpp/thirdparty/protobuf-2.3.0/java/src/test/java/com/google/protobuf/WireFormatTest.java rename to cpp/thirdparty/protobuf-2.5.0/java/src/test/java/com/google/protobuf/WireFormatTest.java index 5ea1dd6a6..94f62134f 100644 --- a/cpp/thirdparty/protobuf-2.3.0/java/src/test/java/com/google/protobuf/WireFormatTest.java +++ b/cpp/thirdparty/protobuf-2.5.0/java/src/test/java/com/google/protobuf/WireFormatTest.java @@ -34,6 +34,7 @@ import junit.framework.TestCase; import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; +import java.util.List; import protobuf_unittest.UnittestProto; import protobuf_unittest.UnittestProto.TestAllExtensions; @@ -328,7 +329,17 @@ public class WireFormatTest extends TestCase { private static final int TYPE_ID_2 = TestMessageSetExtension2.getDescriptor().getExtensions().get(0).getNumber(); - public void testSerializeMessageSet() throws Exception { + public void testSerializeMessageSetEagerly() throws Exception { + testSerializeMessageSetWithFlag(true); + } + + public void testSerializeMessageSetNotEagerly() throws Exception { + testSerializeMessageSetWithFlag(false); + } + + private void testSerializeMessageSetWithFlag(boolean eagerParsing) + throws Exception { + ExtensionRegistryLite.setEagerlyParseMessageSets(eagerParsing); // Set up a TestMessageSet with two known messages and an unknown one. TestMessageSet messageSet = TestMessageSet.newBuilder() @@ -372,7 +383,17 @@ public class WireFormatTest extends TestCase { assertEquals("bar", raw.getItem(2).getMessage().toStringUtf8()); } - public void testParseMessageSet() throws Exception { + public void testParseMessageSetEagerly() throws Exception { + testParseMessageSetWithFlag(true); + } + + public void testParseMessageSetNotEagerly()throws Exception { + testParseMessageSetWithFlag(false); + } + + private void testParseMessageSetWithFlag(boolean eagerParsing) + throws Exception { + ExtensionRegistryLite.setEagerlyParseMessageSets(eagerParsing); ExtensionRegistry extensionRegistry = ExtensionRegistry.newInstance(); extensionRegistry.add(TestMessageSetExtension1.messageSetExtension); extensionRegistry.add(TestMessageSetExtension2.messageSetExtension); @@ -424,4 +445,136 @@ public class WireFormatTest extends TestCase { assertEquals(1, field.getLengthDelimitedList().size()); assertEquals("bar", field.getLengthDelimitedList().get(0).toStringUtf8()); } + + public void testParseMessageSetExtensionEagerly() throws Exception { + testParseMessageSetExtensionWithFlag(true); + } + + public void testParseMessageSetExtensionNotEagerly() throws Exception { + testParseMessageSetExtensionWithFlag(false); + } + + private void testParseMessageSetExtensionWithFlag(boolean eagerParsing) + throws Exception { + ExtensionRegistryLite.setEagerlyParseMessageSets(eagerParsing); + ExtensionRegistry extensionRegistry = ExtensionRegistry.newInstance(); + extensionRegistry.add(TestMessageSetExtension1.messageSetExtension); + + // Set up a RawMessageSet with a known messages. + int TYPE_ID_1 = + TestMessageSetExtension1 + .getDescriptor().getExtensions().get(0).getNumber(); + RawMessageSet raw = + RawMessageSet.newBuilder() + .addItem( + RawMessageSet.Item.newBuilder() + .setTypeId(TYPE_ID_1) + .setMessage( + TestMessageSetExtension1.newBuilder() + .setI(123) + .build().toByteString()) + .build()) + .build(); + + ByteString data = raw.toByteString(); + + // Parse as a TestMessageSet and check the contents. + TestMessageSet messageSet = + TestMessageSet.parseFrom(data, extensionRegistry); + assertEquals(123, messageSet.getExtension( + TestMessageSetExtension1.messageSetExtension).getI()); + } + + public void testMergeLazyMessageSetExtensionEagerly() throws Exception { + testMergeLazyMessageSetExtensionWithFlag(true); + } + + public void testMergeLazyMessageSetExtensionNotEagerly() throws Exception { + testMergeLazyMessageSetExtensionWithFlag(false); + } + + private void testMergeLazyMessageSetExtensionWithFlag(boolean eagerParsing) + throws Exception { + ExtensionRegistryLite.setEagerlyParseMessageSets(eagerParsing); + ExtensionRegistry extensionRegistry = ExtensionRegistry.newInstance(); + extensionRegistry.add(TestMessageSetExtension1.messageSetExtension); + + // Set up a RawMessageSet with a known messages. + int TYPE_ID_1 = + TestMessageSetExtension1 + .getDescriptor().getExtensions().get(0).getNumber(); + RawMessageSet raw = + RawMessageSet.newBuilder() + .addItem( + RawMessageSet.Item.newBuilder() + .setTypeId(TYPE_ID_1) + .setMessage( + TestMessageSetExtension1.newBuilder() + .setI(123) + .build().toByteString()) + .build()) + .build(); + + ByteString data = raw.toByteString(); + + // Parse as a TestMessageSet and store value into lazy field + TestMessageSet messageSet = + TestMessageSet.parseFrom(data, extensionRegistry); + // Merge lazy field check the contents. + messageSet = + messageSet.toBuilder().mergeFrom(data, extensionRegistry).build(); + assertEquals(123, messageSet.getExtension( + TestMessageSetExtension1.messageSetExtension).getI()); + } + + public void testMergeMessageSetExtensionEagerly() throws Exception { + testMergeMessageSetExtensionWithFlag(true); + } + + public void testMergeMessageSetExtensionNotEagerly() throws Exception { + testMergeMessageSetExtensionWithFlag(false); + } + + private void testMergeMessageSetExtensionWithFlag(boolean eagerParsing) + throws Exception { + ExtensionRegistryLite.setEagerlyParseMessageSets(eagerParsing); + ExtensionRegistry extensionRegistry = ExtensionRegistry.newInstance(); + extensionRegistry.add(TestMessageSetExtension1.messageSetExtension); + + // Set up a RawMessageSet with a known messages. + int TYPE_ID_1 = + TestMessageSetExtension1 + .getDescriptor().getExtensions().get(0).getNumber(); + RawMessageSet raw = + RawMessageSet.newBuilder() + .addItem( + RawMessageSet.Item.newBuilder() + .setTypeId(TYPE_ID_1) + .setMessage( + TestMessageSetExtension1.newBuilder() + .setI(123) + .build().toByteString()) + .build()) + .build(); + + // Serialize RawMessageSet unnormally (message value before type id) + ByteString.CodedBuilder out = ByteString.newCodedBuilder( + raw.getSerializedSize()); + CodedOutputStream output = out.getCodedOutput(); + List items = raw.getItemList(); + for (int i = 0; i < items.size(); i++) { + RawMessageSet.Item item = items.get(i); + output.writeTag(1, WireFormat.WIRETYPE_START_GROUP); + output.writeBytes(3, item.getMessage()); + output.writeInt32(2, item.getTypeId()); + output.writeTag(1, WireFormat.WIRETYPE_END_GROUP); + } + ByteString data = out.build(); + + // Merge bytes into TestMessageSet and check the contents. + TestMessageSet messageSet = + TestMessageSet.newBuilder().mergeFrom(data, extensionRegistry).build(); + assertEquals(123, messageSet.getExtension( + TestMessageSetExtension1.messageSetExtension).getI()); + } } diff --git a/cpp/thirdparty/protobuf-2.3.0/java/src/test/java/com/google/protobuf/multiple_files_test.proto b/cpp/thirdparty/protobuf-2.5.0/java/src/test/java/com/google/protobuf/multiple_files_test.proto similarity index 93% rename from cpp/thirdparty/protobuf-2.3.0/java/src/test/java/com/google/protobuf/multiple_files_test.proto rename to cpp/thirdparty/protobuf-2.5.0/java/src/test/java/com/google/protobuf/multiple_files_test.proto index 060f159a0..9a040145a 100644 --- a/cpp/thirdparty/protobuf-2.3.0/java/src/test/java/com/google/protobuf/multiple_files_test.proto +++ b/cpp/thirdparty/protobuf-2.5.0/java/src/test/java/com/google/protobuf/multiple_files_test.proto @@ -33,6 +33,10 @@ // A proto file which tests the java_multiple_files option. +// Some generic_services option(s) added automatically. +// See: http://go/proto2-generic-services-default +option java_generic_services = true; // auto-added + import "google/protobuf/unittest.proto"; package protobuf_unittest; diff --git a/cpp/thirdparty/protobuf-2.5.0/java/src/test/java/com/google/protobuf/nested_builders_test.proto b/cpp/thirdparty/protobuf-2.5.0/java/src/test/java/com/google/protobuf/nested_builders_test.proto new file mode 100644 index 000000000..abffb9d2b --- /dev/null +++ b/cpp/thirdparty/protobuf-2.5.0/java/src/test/java/com/google/protobuf/nested_builders_test.proto @@ -0,0 +1,53 @@ +// Protocol Buffers - Google's data interchange format +// Copyright 2008 Google Inc. All rights reserved. +// http://code.google.com/p/protobuf/ +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +// Author: jonp@google.com (Jon Perlow) +// + +package protobuf_unittest; + +option java_multiple_files = true; +option java_outer_classname = "NestedBuilders"; + + +message Vehicle { + optional Engine engine = 1; + repeated Wheel wheel = 2; +} + +message Engine { + optional int32 cylinder = 1; + optional int32 liters = 2; +} + +message Wheel { + optional int32 radius = 1; + optional int32 width = 2; +} diff --git a/cpp/thirdparty/protobuf-2.5.0/java/src/test/java/com/google/protobuf/nested_extension.proto b/cpp/thirdparty/protobuf-2.5.0/java/src/test/java/com/google/protobuf/nested_extension.proto new file mode 100644 index 000000000..9fe5d560c --- /dev/null +++ b/cpp/thirdparty/protobuf-2.5.0/java/src/test/java/com/google/protobuf/nested_extension.proto @@ -0,0 +1,45 @@ +// Protocol Buffers - Google's data interchange format +// Copyright 2008 Google Inc. All rights reserved. +// http://code.google.com/p/protobuf/ +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +// Author: Darick Tong (darick@google.com) +// +// A proto file with nested extensions. Note that this must be defined in +// a separate file to properly test the initialization of the outer class. + + +import "com/google/protobuf/non_nested_extension.proto"; + +package protobuf_unittest; + +message MyNestedExtension { + extend MessageToBeExtended { + optional MessageToBeExtended recursiveExtension = 2; + } +} diff --git a/cpp/thirdparty/protobuf-2.5.0/java/src/test/java/com/google/protobuf/nested_extension_lite.proto b/cpp/thirdparty/protobuf-2.5.0/java/src/test/java/com/google/protobuf/nested_extension_lite.proto new file mode 100644 index 000000000..16ee46e57 --- /dev/null +++ b/cpp/thirdparty/protobuf-2.5.0/java/src/test/java/com/google/protobuf/nested_extension_lite.proto @@ -0,0 +1,48 @@ +// Protocol Buffers - Google's data interchange format +// Copyright 2008 Google Inc. All rights reserved. +// http://code.google.com/p/protobuf/ +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +// Author: Darick Tong (darick@google.com) +// +// A proto file with nested extensions for a MessageLite messages. Note that +// this must be defined in a separate file to properly test the initialization +// of the outer class. + + +package protobuf_unittest; + +option optimize_for = LITE_RUNTIME; + +import "com/google/protobuf/non_nested_extension_lite.proto"; + +message MyNestedExtensionLite { + extend MessageLiteToBeExtended { + optional MessageLiteToBeExtended recursiveExtensionLite = 3; + } +} diff --git a/cpp/thirdparty/protobuf-2.5.0/java/src/test/java/com/google/protobuf/non_nested_extension.proto b/cpp/thirdparty/protobuf-2.5.0/java/src/test/java/com/google/protobuf/non_nested_extension.proto new file mode 100644 index 000000000..f61b419bc --- /dev/null +++ b/cpp/thirdparty/protobuf-2.5.0/java/src/test/java/com/google/protobuf/non_nested_extension.proto @@ -0,0 +1,48 @@ +// Protocol Buffers - Google's data interchange format +// Copyright 2008 Google Inc. All rights reserved. +// http://code.google.com/p/protobuf/ +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +// Author: Darick Tong (darick@google.com) +// +// A proto file with extensions. + + +package protobuf_unittest; + +message MessageToBeExtended { + extensions 1 to max; +} + +message MyNonNestedExtension { +} + +extend MessageToBeExtended { + optional MyNonNestedExtension nonNestedExtension = 1; +} + diff --git a/cpp/thirdparty/protobuf-2.5.0/java/src/test/java/com/google/protobuf/non_nested_extension_lite.proto b/cpp/thirdparty/protobuf-2.5.0/java/src/test/java/com/google/protobuf/non_nested_extension_lite.proto new file mode 100644 index 000000000..3c82659b5 --- /dev/null +++ b/cpp/thirdparty/protobuf-2.5.0/java/src/test/java/com/google/protobuf/non_nested_extension_lite.proto @@ -0,0 +1,50 @@ +// Protocol Buffers - Google's data interchange format +// Copyright 2008 Google Inc. All rights reserved. +// http://code.google.com/p/protobuf/ +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +// Author: Darick Tong (darick@google.com) +// +// A proto file with extensions for a MessageLite messages. + + +package protobuf_unittest; + +option optimize_for = LITE_RUNTIME; + +message MessageLiteToBeExtended { + extensions 1 to max; +} + +message MyNonNestedExtensionLite { +} + +extend MessageLiteToBeExtended { + optional MyNonNestedExtensionLite nonNestedExtensionLite = 1; +} + diff --git a/cpp/thirdparty/protobuf-2.5.0/java/src/test/java/com/google/protobuf/test_bad_identifiers.proto b/cpp/thirdparty/protobuf-2.5.0/java/src/test/java/com/google/protobuf/test_bad_identifiers.proto new file mode 100644 index 000000000..6e67d97a6 --- /dev/null +++ b/cpp/thirdparty/protobuf-2.5.0/java/src/test/java/com/google/protobuf/test_bad_identifiers.proto @@ -0,0 +1,108 @@ +// Protocol Buffers - Google's data interchange format +// Copyright 2008 Google Inc. All rights reserved. +// http://code.google.com/p/protobuf/ +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +// Author: jonp@google.com (Jon Perlow) + +// This file tests that various identifiers work as field and type names even +// though the same identifiers are used internally by the java code generator. + + +// Some generic_services option(s) added automatically. +// See: http://go/proto2-generic-services-default +option java_generic_services = true; // auto-added + +package io_protocol_tests; + +option java_package = "com.google.protobuf"; +option java_outer_classname = "TestBadIdentifiersProto"; + +message TestMessage { +} + +message Descriptor { + option no_standard_descriptor_accessor = true; + optional string descriptor = 1; + message NestedDescriptor { + option no_standard_descriptor_accessor = true; + optional string descriptor = 1; + } + optional NestedDescriptor nested_descriptor = 2; +} + +message Parser { + enum ParserEnum { + PARSER = 1; + } + optional ParserEnum parser = 1; +} + +message Deprecated { + enum TestEnum { + FOO = 1; + } + + optional int32 field1 = 1 [deprecated=true]; + optional TestEnum field2 = 2 [deprecated=true]; + optional TestMessage field3 = 3 [deprecated=true]; +} + +message Override { + optional int32 override = 1; +} + +message Object { + optional int32 object = 1; + optional string string_object = 2; +} + +message String { + optional string string = 1; +} + +message Integer { + optional int32 integer = 1; +} + +message Long { + optional int32 long = 1; +} + +message Float { + optional float float = 1; +} + +message Double { + optional double double = 1; +} + +service TestConflictingMethodNames { + rpc Override(TestMessage) returns (TestMessage); +} + diff --git a/cpp/thirdparty/protobuf-2.3.0/ltmain.sh b/cpp/thirdparty/protobuf-2.5.0/ltmain.sh old mode 100755 new mode 100644 similarity index 64% rename from cpp/thirdparty/protobuf-2.3.0/ltmain.sh rename to cpp/thirdparty/protobuf-2.5.0/ltmain.sh index 174e49238..c2852d856 --- a/cpp/thirdparty/protobuf-2.3.0/ltmain.sh +++ b/cpp/thirdparty/protobuf-2.5.0/ltmain.sh @@ -1,9 +1,9 @@ -# Generated from ltmain.m4sh. -# ltmain.sh (GNU libtool) 2.2.4 +# libtool (GNU libtool) 2.4.2 # Written by Gordon Matzigkeit , 1996 -# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005, 2006, 2007 2008 Free Software Foundation, Inc. +# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005, 2006, +# 2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc. # This is free software; see the source for copying conditions. There is NO # warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. @@ -32,50 +32,57 @@ # # Provide generalized library-building support services. # -# --config show all configuration variables -# --debug enable verbose shell tracing -# -n, --dry-run display commands without modifying any files -# --features display basic configuration information and exit -# --mode=MODE use operation mode MODE -# --preserve-dup-deps don't remove duplicate dependency libraries -# --quiet, --silent don't print informational messages -# --tag=TAG use configuration variables from tag TAG -# -v, --verbose print informational messages (default) -# --version print version information -# -h, --help print short or long help message +# --config show all configuration variables +# --debug enable verbose shell tracing +# -n, --dry-run display commands without modifying any files +# --features display basic configuration information and exit +# --mode=MODE use operation mode MODE +# --preserve-dup-deps don't remove duplicate dependency libraries +# --quiet, --silent don't print informational messages +# --no-quiet, --no-silent +# print informational messages (default) +# --no-warn don't display warning messages +# --tag=TAG use configuration variables from tag TAG +# -v, --verbose print more informational messages than default +# --no-verbose don't print the extra informational messages +# --version print version information +# -h, --help, --help-all print short, long, or detailed help message # # MODE must be one of the following: # -# clean remove files from the build directory -# compile compile a source file into a libtool object -# execute automatically set library path, then run a program -# finish complete the installation of libtool libraries -# install install libraries or executables -# link create a library or an executable -# uninstall remove libraries from an installed directory +# clean remove files from the build directory +# compile compile a source file into a libtool object +# execute automatically set library path, then run a program +# finish complete the installation of libtool libraries +# install install libraries or executables +# link create a library or an executable +# uninstall remove libraries from an installed directory # -# MODE-ARGS vary depending on the MODE. +# MODE-ARGS vary depending on the MODE. When passed as first option, +# `--mode=MODE' may be abbreviated as `MODE' or a unique abbreviation of that. # Try `$progname --help --mode=MODE' for a more detailed description of MODE. # # When reporting a bug, please describe a test case to reproduce it and # include the following information: # -# host-triplet: $host -# shell: $SHELL -# compiler: $LTCC -# compiler flags: $LTCFLAGS -# linker: $LD (gnu? $with_gnu_ld) -# $progname: (GNU libtool) 2.2.4 -# automake: $automake_version -# autoconf: $autoconf_version +# host-triplet: $host +# shell: $SHELL +# compiler: $LTCC +# compiler flags: $LTCFLAGS +# linker: $LD (gnu? $with_gnu_ld) +# $progname: (GNU libtool) 2.4.2 Debian-2.4.2-1ubuntu1 +# automake: $automake_version +# autoconf: $autoconf_version # # Report bugs to . +# GNU libtool home page: . +# General help using GNU software: . -PROGRAM=ltmain.sh +PROGRAM=libtool PACKAGE=libtool -VERSION=2.2.4 +VERSION="2.4.2 Debian-2.4.2-1ubuntu1" TIMESTAMP="" -package_revision=1.2976 +package_revision=1.3337 # Be Bourne compatible if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then @@ -91,10 +98,15 @@ fi BIN_SH=xpg4; export BIN_SH # for Tru64 DUALCASE=1; export DUALCASE # for MKS sh +# A function that is used when there is no print builtin or printf. +func_fallback_echo () +{ + eval 'cat <<_LTECHO_EOF +$1 +_LTECHO_EOF' +} + # NLS nuisances: We save the old values to restore during execute mode. -# Only set LANG and LC_ALL to C if already set. -# These must not be set unconditionally because not all systems understand -# e.g. LANG=C (notably SCO). lt_user_locale= lt_safe_locale= for lt_var in LANG LANGUAGE LC_ALL LC_CTYPE LC_COLLATE LC_MESSAGES @@ -107,24 +119,28 @@ do lt_safe_locale=\"$lt_var=C; \$lt_safe_locale\" fi" done +LC_ALL=C +LANGUAGE=C +export LANGUAGE LC_ALL $lt_unset CDPATH +# Work around backward compatibility issue on IRIX 6.5. On IRIX 6.4+, sh +# is ksh but when the shell is invoked as "sh" and the current value of +# the _XPG environment variable is not equal to 1 (one), the special +# positional parameter $0, within a function call, is the name of the +# function. +progpath="$0" : ${CP="cp -f"} -: ${ECHO="echo"} -: ${EGREP="/usr/bin/grep -E"} -: ${FGREP="/usr/bin/grep -F"} -: ${GREP="/usr/bin/grep"} -: ${LN_S="ln -s"} +test "${ECHO+set}" = set || ECHO=${as_echo-'printf %s\n'} : ${MAKE="make"} : ${MKDIR="mkdir"} : ${MV="mv -f"} : ${RM="rm -f"} -: ${SED="/opt/local/bin/gsed"} : ${SHELL="${CONFIG_SHELL-/bin/sh}"} : ${Xsed="$SED -e 1s/^X//"} @@ -144,6 +160,27 @@ IFS=" $lt_nl" dirname="s,/[^/]*$,," basename="s,^.*/,," +# func_dirname file append nondir_replacement +# Compute the dirname of FILE. If nonempty, add APPEND to the result, +# otherwise set result to NONDIR_REPLACEMENT. +func_dirname () +{ + func_dirname_result=`$ECHO "${1}" | $SED "$dirname"` + if test "X$func_dirname_result" = "X${1}"; then + func_dirname_result="${3}" + else + func_dirname_result="$func_dirname_result${2}" + fi +} # func_dirname may be replaced by extended shell implementation + + +# func_basename file +func_basename () +{ + func_basename_result=`$ECHO "${1}" | $SED "$basename"` +} # func_basename may be replaced by extended shell implementation + + # func_dirname_and_basename file append nondir_replacement # perform func_basename and func_dirname in a single function # call: @@ -158,33 +195,183 @@ basename="s,^.*/,," # those functions but instead duplicate the functionality here. func_dirname_and_basename () { - # Extract subdirectory from the argument. - func_dirname_result=`$ECHO "X${1}" | $Xsed -e "$dirname"` - if test "X$func_dirname_result" = "X${1}"; then - func_dirname_result="${3}" - else - func_dirname_result="$func_dirname_result${2}" - fi - func_basename_result=`$ECHO "X${1}" | $Xsed -e "$basename"` + # Extract subdirectory from the argument. + func_dirname_result=`$ECHO "${1}" | $SED -e "$dirname"` + if test "X$func_dirname_result" = "X${1}"; then + func_dirname_result="${3}" + else + func_dirname_result="$func_dirname_result${2}" + fi + func_basename_result=`$ECHO "${1}" | $SED -e "$basename"` +} # func_dirname_and_basename may be replaced by extended shell implementation + + +# func_stripname prefix suffix name +# strip PREFIX and SUFFIX off of NAME. +# PREFIX and SUFFIX must not contain globbing or regex special +# characters, hashes, percent signs, but SUFFIX may contain a leading +# dot (in which case that matches only a dot). +# func_strip_suffix prefix name +func_stripname () +{ + case ${2} in + .*) func_stripname_result=`$ECHO "${3}" | $SED "s%^${1}%%; s%\\\\${2}\$%%"`;; + *) func_stripname_result=`$ECHO "${3}" | $SED "s%^${1}%%; s%${2}\$%%"`;; + esac +} # func_stripname may be replaced by extended shell implementation + + +# These SED scripts presuppose an absolute path with a trailing slash. +pathcar='s,^/\([^/]*\).*$,\1,' +pathcdr='s,^/[^/]*,,' +removedotparts=':dotsl + s@/\./@/@g + t dotsl + s,/\.$,/,' +collapseslashes='s@/\{1,\}@/@g' +finalslash='s,/*$,/,' + +# func_normal_abspath PATH +# Remove doubled-up and trailing slashes, "." path components, +# and cancel out any ".." path components in PATH after making +# it an absolute path. +# value returned in "$func_normal_abspath_result" +func_normal_abspath () +{ + # Start from root dir and reassemble the path. + func_normal_abspath_result= + func_normal_abspath_tpath=$1 + func_normal_abspath_altnamespace= + case $func_normal_abspath_tpath in + "") + # Empty path, that just means $cwd. + func_stripname '' '/' "`pwd`" + func_normal_abspath_result=$func_stripname_result + return + ;; + # The next three entries are used to spot a run of precisely + # two leading slashes without using negated character classes; + # we take advantage of case's first-match behaviour. + ///*) + # Unusual form of absolute path, do nothing. + ;; + //*) + # Not necessarily an ordinary path; POSIX reserves leading '//' + # and for example Cygwin uses it to access remote file shares + # over CIFS/SMB, so we conserve a leading double slash if found. + func_normal_abspath_altnamespace=/ + ;; + /*) + # Absolute path, do nothing. + ;; + *) + # Relative path, prepend $cwd. + func_normal_abspath_tpath=`pwd`/$func_normal_abspath_tpath + ;; + esac + # Cancel out all the simple stuff to save iterations. We also want + # the path to end with a slash for ease of parsing, so make sure + # there is one (and only one) here. + func_normal_abspath_tpath=`$ECHO "$func_normal_abspath_tpath" | $SED \ + -e "$removedotparts" -e "$collapseslashes" -e "$finalslash"` + while :; do + # Processed it all yet? + if test "$func_normal_abspath_tpath" = / ; then + # If we ascended to the root using ".." the result may be empty now. + if test -z "$func_normal_abspath_result" ; then + func_normal_abspath_result=/ + fi + break + fi + func_normal_abspath_tcomponent=`$ECHO "$func_normal_abspath_tpath" | $SED \ + -e "$pathcar"` + func_normal_abspath_tpath=`$ECHO "$func_normal_abspath_tpath" | $SED \ + -e "$pathcdr"` + # Figure out what to do with it + case $func_normal_abspath_tcomponent in + "") + # Trailing empty path component, ignore it. + ;; + ..) + # Parent dir; strip last assembled component from result. + func_dirname "$func_normal_abspath_result" + func_normal_abspath_result=$func_dirname_result + ;; + *) + # Actual path component, append it. + func_normal_abspath_result=$func_normal_abspath_result/$func_normal_abspath_tcomponent + ;; + esac + done + # Restore leading double-slash if one was found on entry. + func_normal_abspath_result=$func_normal_abspath_altnamespace$func_normal_abspath_result } -# Generated shell functions inserted here. +# func_relative_path SRCDIR DSTDIR +# generates a relative path from SRCDIR to DSTDIR, with a trailing +# slash if non-empty, suitable for immediately appending a filename +# without needing to append a separator. +# value returned in "$func_relative_path_result" +func_relative_path () +{ + func_relative_path_result= + func_normal_abspath "$1" + func_relative_path_tlibdir=$func_normal_abspath_result + func_normal_abspath "$2" + func_relative_path_tbindir=$func_normal_abspath_result + + # Ascend the tree starting from libdir + while :; do + # check if we have found a prefix of bindir + case $func_relative_path_tbindir in + $func_relative_path_tlibdir) + # found an exact match + func_relative_path_tcancelled= + break + ;; + $func_relative_path_tlibdir*) + # found a matching prefix + func_stripname "$func_relative_path_tlibdir" '' "$func_relative_path_tbindir" + func_relative_path_tcancelled=$func_stripname_result + if test -z "$func_relative_path_result"; then + func_relative_path_result=. + fi + break + ;; + *) + func_dirname $func_relative_path_tlibdir + func_relative_path_tlibdir=${func_dirname_result} + if test "x$func_relative_path_tlibdir" = x ; then + # Have to descend all the way to the root! + func_relative_path_result=../$func_relative_path_result + func_relative_path_tcancelled=$func_relative_path_tbindir + break + fi + func_relative_path_result=../$func_relative_path_result + ;; + esac + done -# Work around backward compatibility issue on IRIX 6.5. On IRIX 6.4+, sh -# is ksh but when the shell is invoked as "sh" and the current value of -# the _XPG environment variable is not equal to 1 (one), the special -# positional parameter $0, within a function call, is the name of the -# function. -progpath="$0" + # Now calculate path; take care to avoid doubling-up slashes. + func_stripname '' '/' "$func_relative_path_result" + func_relative_path_result=$func_stripname_result + func_stripname '/' '/' "$func_relative_path_tcancelled" + if test "x$func_stripname_result" != x ; then + func_relative_path_result=${func_relative_path_result}/${func_stripname_result} + fi + + # Normalisation. If bindir is libdir, return empty string, + # else relative path ending with a slash; either way, target + # file name can be directly appended. + if test ! -z "$func_relative_path_result"; then + func_stripname './' '' "$func_relative_path_result/" + func_relative_path_result=$func_stripname_result + fi +} # The name of this program: -# In the unlikely event $progname began with a '-', it would play havoc with -# func_echo (imagine progname=-n), so we prepend ./ in that case: func_dirname_and_basename "$progpath" progname=$func_basename_result -case $progname in - -*) progname=./$progname ;; -esac # Make sure we have an absolute path for reexecution: case $progpath in @@ -196,7 +383,7 @@ case $progpath in ;; *) save_IFS="$IFS" - IFS=: + IFS=${PATH_SEPARATOR-:} for progdir in $PATH; do IFS="$save_IFS" test -x "$progdir/$progname" && break @@ -215,6 +402,15 @@ sed_quote_subst='s/\([`"$\\]\)/\\\1/g' # Same as above, but do not quote variable references. double_quote_subst='s/\(["`\\]\)/\\\1/g' +# Sed substitution that turns a string into a regex matching for the +# string literally. +sed_make_literal_regex='s,[].[^$\\*\/],\\&,g' + +# Sed substitution that converts a w32 file name or path +# which contains forward slashes, into one that contains +# (escaped) backslashes. A very naive implementation. +lt_sed_naive_backslashify='s|\\\\*|\\|g;s|/|\\|g;s|\\|\\\\|g' + # Re-`\' parameter expansions in output of double_quote_subst that were # `\'-ed in input to the same. If an odd number of `\' preceded a '$' # in input to double_quote_subst, that '$' was protected from expansion. @@ -243,7 +439,7 @@ opt_warning=: # name if it has been set yet. func_echo () { - $ECHO "$progname${mode+: }$mode: $*" + $ECHO "$progname: ${opt_mode+$opt_mode: }$*" } # func_verbose arg... @@ -258,18 +454,25 @@ func_verbose () : } +# func_echo_all arg... +# Invoke $ECHO with all args, space-separated. +func_echo_all () +{ + $ECHO "$*" +} + # func_error arg... # Echo program name prefixed message to standard error. func_error () { - $ECHO "$progname${mode+: }$mode: "${1+"$@"} 1>&2 + $ECHO "$progname: ${opt_mode+$opt_mode: }"${1+"$@"} 1>&2 } # func_warning arg... # Echo program name prefixed warning message to standard error. func_warning () { - $opt_warning && $ECHO "$progname${mode+: }$mode: warning: "${1+"$@"} 1>&2 + $opt_warning && $ECHO "$progname: ${opt_mode+$opt_mode: }warning: "${1+"$@"} 1>&2 # bash bug again: : @@ -326,9 +529,9 @@ func_mkdir_p () case $my_directory_path in */*) ;; *) break ;; esac # ...otherwise throw away the child directory and loop - my_directory_path=`$ECHO "X$my_directory_path" | $Xsed -e "$dirname"` + my_directory_path=`$ECHO "$my_directory_path" | $SED -e "$dirname"` done - my_dir_list=`$ECHO "X$my_dir_list" | $Xsed -e 's,:*$,,'` + my_dir_list=`$ECHO "$my_dir_list" | $SED 's,:*$,,'` save_mkdir_p_IFS="$IFS"; IFS=':' for my_dir in $my_dir_list; do @@ -378,7 +581,7 @@ func_mktempdir () func_fatal_error "cannot create temporary directory \`$my_tmpdir'" fi - $ECHO "X$my_tmpdir" | $Xsed + $ECHO "$my_tmpdir" } @@ -392,7 +595,7 @@ func_quote_for_eval () { case $1 in *[\\\`\"\$]*) - func_quote_for_eval_unquoted_result=`$ECHO "X$1" | $Xsed -e "$sed_quote_subst"` ;; + func_quote_for_eval_unquoted_result=`$ECHO "$1" | $SED "$sed_quote_subst"` ;; *) func_quote_for_eval_unquoted_result="$1" ;; esac @@ -419,7 +622,7 @@ func_quote_for_expand () { case $1 in *[\\\`\"]*) - my_arg=`$ECHO "X$1" | $Xsed \ + my_arg=`$ECHO "$1" | $SED \ -e "$double_quote_subst" -e "$sed_double_backslash"` ;; *) my_arg="$1" ;; @@ -488,15 +691,39 @@ func_show_eval_locale () fi } - - +# func_tr_sh +# Turn $1 into a string suitable for a shell variable name. +# Result is stored in $func_tr_sh_result. All characters +# not in the set a-zA-Z0-9_ are replaced with '_'. Further, +# if $1 begins with a digit, a '_' is prepended as well. +func_tr_sh () +{ + case $1 in + [0-9]* | *[!a-zA-Z0-9_]*) + func_tr_sh_result=`$ECHO "$1" | $SED 's/^\([0-9]\)/_\1/; s/[^a-zA-Z0-9_]/_/g'` + ;; + * ) + func_tr_sh_result=$1 + ;; + esac +} # func_version # Echo version message to standard output and exit. func_version () { - $SED -n '/^# '$PROGRAM' (GNU /,/# warranty; / { + $opt_debug + + $SED -n '/(C)/!b go + :more + /\./!{ + N + s/\n# / / + b more + } + :go + /^# '$PROGRAM' (GNU /,/# warranty; / { s/^# // s/^# *$// s/\((C)\)[ 0-9,-]*\( [1-9][0-9]*\)/\1\2/ @@ -509,22 +736,28 @@ func_version () # Echo short help message to standard output and exit. func_usage () { - $SED -n '/^# Usage:/,/# -h/ { + $opt_debug + + $SED -n '/^# Usage:/,/^# *.*--help/ { s/^# // s/^# *$// s/\$progname/'$progname'/ p }' < "$progpath" - $ECHO + echo $ECHO "run \`$progname --help | more' for full usage" exit $? } -# func_help -# Echo long help message to standard output and exit. +# func_help [NOEXIT] +# Echo long help message to standard output and exit, +# unless 'noexit' is passed as argument. func_help () { + $opt_debug + $SED -n '/^# Usage:/,/# Report bugs to/ { + :print s/^# // s/^# *$// s*\$progname*'$progname'* @@ -534,11 +767,18 @@ func_help () s*\$LTCFLAGS*'"$LTCFLAGS"'* s*\$LD*'"$LD"'* s/\$with_gnu_ld/'"$with_gnu_ld"'/ - s/\$automake_version/'"`(automake --version) 2>/dev/null |$SED 1q`"'/ - s/\$autoconf_version/'"`(autoconf --version) 2>/dev/null |$SED 1q`"'/ + s/\$automake_version/'"`(${AUTOMAKE-automake} --version) 2>/dev/null |$SED 1q`"'/ + s/\$autoconf_version/'"`(${AUTOCONF-autoconf} --version) 2>/dev/null |$SED 1q`"'/ p - }' < "$progpath" - exit $? + d + } + /^# .* home page:/b print + /^# General help using/b print + ' < "$progpath" + ret=$? + if test -z "$1"; then + exit $ret + fi } # func_missing_arg argname @@ -546,63 +786,106 @@ func_help () # exit_cmd. func_missing_arg () { - func_error "missing argument for $1" + $opt_debug + + func_error "missing argument for $1." exit_cmd=exit } -exit_cmd=: +# func_split_short_opt shortopt +# Set func_split_short_opt_name and func_split_short_opt_arg shell +# variables after splitting SHORTOPT after the 2nd character. +func_split_short_opt () +{ + my_sed_short_opt='1s/^\(..\).*$/\1/;q' + my_sed_short_rest='1s/^..\(.*\)$/\1/;q' + func_split_short_opt_name=`$ECHO "$1" | $SED "$my_sed_short_opt"` + func_split_short_opt_arg=`$ECHO "$1" | $SED "$my_sed_short_rest"` +} # func_split_short_opt may be replaced by extended shell implementation + + +# func_split_long_opt longopt +# Set func_split_long_opt_name and func_split_long_opt_arg shell +# variables after splitting LONGOPT at the `=' sign. +func_split_long_opt () +{ + my_sed_long_opt='1s/^\(--[^=]*\)=.*/\1/;q' + my_sed_long_arg='1s/^--[^=]*=//' + + func_split_long_opt_name=`$ECHO "$1" | $SED "$my_sed_long_opt"` + func_split_long_opt_arg=`$ECHO "$1" | $SED "$my_sed_long_arg"` +} # func_split_long_opt may be replaced by extended shell implementation + +exit_cmd=: -# Check that we have a working $ECHO. -if test "X$1" = X--no-reexec; then - # Discard the --no-reexec flag, and continue. - shift -elif test "X$1" = X--fallback-echo; then - # Avoid inline document here, it may be left over - : -elif test "X`{ $ECHO '\t'; } 2>/dev/null`" = 'X\t'; then - # Yippee, $ECHO works! - : -else - # Restart under the correct shell, and then maybe $ECHO will work. - exec $SHELL "$progpath" --no-reexec ${1+"$@"} -fi -if test "X$1" = X--fallback-echo; then - # used as fallback echo - shift - cat </dev/null || echo $max_cmd_len` +} # func_len may be replaced by extended shell implementation + + +# func_lo2o object +func_lo2o () +{ + func_lo2o_result=`$ECHO "${1}" | $SED "$lo2o"` +} # func_lo2o may be replaced by extended shell implementation + + +# func_xform libobj-or-source +func_xform () +{ + func_xform_result=`$ECHO "${1}" | $SED 's/\.[^.]*$/.lo/'` +} # func_xform may be replaced by extended shell implementation + + # func_fatal_configuration arg... # Echo program name prefixed message to standard error, followed by # a configuration failure hint, and exit. @@ -636,16 +919,16 @@ func_config () # Display the features supported by this script. func_features () { - $ECHO "host: $host" + echo "host: $host" if test "$build_libtool_libs" = yes; then - $ECHO "enable shared libraries" + echo "enable shared libraries" else - $ECHO "disable shared libraries" + echo "disable shared libraries" fi if test "$build_old_libs" = yes; then - $ECHO "enable static libraries" + echo "enable static libraries" else - $ECHO "disable static libraries" + echo "disable static libraries" fi exit $? @@ -692,133 +975,6 @@ func_enable_tag () esac } -# Parse options once, thoroughly. This comes as soon as possible in -# the script to make things like `libtool --version' happen quickly. -{ - - # Shorthand for --mode=foo, only valid as the first argument - case $1 in - clean|clea|cle|cl) - shift; set dummy --mode clean ${1+"$@"}; shift - ;; - compile|compil|compi|comp|com|co|c) - shift; set dummy --mode compile ${1+"$@"}; shift - ;; - execute|execut|execu|exec|exe|ex|e) - shift; set dummy --mode execute ${1+"$@"}; shift - ;; - finish|finis|fini|fin|fi|f) - shift; set dummy --mode finish ${1+"$@"}; shift - ;; - install|instal|insta|inst|ins|in|i) - shift; set dummy --mode install ${1+"$@"}; shift - ;; - link|lin|li|l) - shift; set dummy --mode link ${1+"$@"}; shift - ;; - uninstall|uninstal|uninsta|uninst|unins|unin|uni|un|u) - shift; set dummy --mode uninstall ${1+"$@"}; shift - ;; - esac - - # Parse non-mode specific arguments: - while test "$#" -gt 0; do - opt="$1" - shift - - case $opt in - --config) func_config ;; - - --debug) preserve_args="$preserve_args $opt" - func_echo "enabling shell trace mode" - opt_debug='set -x' - $opt_debug - ;; - - -dlopen) test "$#" -eq 0 && func_missing_arg "$opt" && break - execute_dlfiles="$execute_dlfiles $1" - shift - ;; - - --dry-run | -n) opt_dry_run=: ;; - --features) func_features ;; - --finish) mode="finish" ;; - - --mode) test "$#" -eq 0 && func_missing_arg "$opt" && break - case $1 in - # Valid mode arguments: - clean) ;; - compile) ;; - execute) ;; - finish) ;; - install) ;; - link) ;; - relink) ;; - uninstall) ;; - - # Catch anything else as an error - *) func_error "invalid argument for $opt" - exit_cmd=exit - break - ;; - esac - - mode="$1" - shift - ;; - - --preserve-dup-deps) - opt_duplicate_deps=: ;; - - --quiet|--silent) preserve_args="$preserve_args $opt" - opt_silent=: - ;; - - --verbose| -v) preserve_args="$preserve_args $opt" - opt_silent=false - ;; - - --tag) test "$#" -eq 0 && func_missing_arg "$opt" && break - preserve_args="$preserve_args $opt $1" - func_enable_tag "$1" # tagname is set here - shift - ;; - - # Separate optargs to long options: - -dlopen=*|--mode=*|--tag=*) - func_opt_split "$opt" - set dummy "$func_opt_split_opt" "$func_opt_split_arg" ${1+"$@"} - shift - ;; - - -\?|-h) func_usage ;; - --help) opt_help=: ;; - --version) func_version ;; - - -*) func_fatal_help "unrecognized option \`$opt'" ;; - - *) nonopt="$opt" - break - ;; - esac - done - - - case $host in - *cygwin* | *mingw* | *pw32*) - # don't eliminate duplications in $postdeps and $predeps - opt_duplicate_compiler_generated_deps=: - ;; - *) - opt_duplicate_compiler_generated_deps=$opt_duplicate_deps - ;; - esac - - # Having warned about all mis-specified options, bail out if - # anything was wrong. - $exit_cmd $EXIT_FAILURE -} - # func_check_version_match # Ensure that we are using m4 macros, and libtool script from the same # release of libtool. @@ -855,46 +1011,228 @@ _LT_EOF } -## ----------- ## -## Main. ## -## ----------- ## +# Shorthand for --mode=foo, only valid as the first argument +case $1 in +clean|clea|cle|cl) + shift; set dummy --mode clean ${1+"$@"}; shift + ;; +compile|compil|compi|comp|com|co|c) + shift; set dummy --mode compile ${1+"$@"}; shift + ;; +execute|execut|execu|exec|exe|ex|e) + shift; set dummy --mode execute ${1+"$@"}; shift + ;; +finish|finis|fini|fin|fi|f) + shift; set dummy --mode finish ${1+"$@"}; shift + ;; +install|instal|insta|inst|ins|in|i) + shift; set dummy --mode install ${1+"$@"}; shift + ;; +link|lin|li|l) + shift; set dummy --mode link ${1+"$@"}; shift + ;; +uninstall|uninstal|uninsta|uninst|unins|unin|uni|un|u) + shift; set dummy --mode uninstall ${1+"$@"}; shift + ;; +esac -$opt_help || { - # Sanity checks first: - func_check_version_match - if test "$build_libtool_libs" != yes && test "$build_old_libs" != yes; then - func_fatal_configuration "not configured to build any kind of library" - fi - test -z "$mode" && func_fatal_error "error: you must specify a MODE." +# Option defaults: +opt_debug=: +opt_dry_run=false +opt_config=false +opt_preserve_dup_deps=false +opt_features=false +opt_finish=false +opt_help=false +opt_help_all=false +opt_silent=: +opt_warning=: +opt_verbose=: +opt_silent=false +opt_verbose=false + + +# Parse options once, thoroughly. This comes as soon as possible in the +# script to make things like `--version' happen as quickly as we can. +{ + # this just eases exit handling + while test $# -gt 0; do + opt="$1" + shift + case $opt in + --debug|-x) opt_debug='set -x' + func_echo "enabling shell trace mode" + $opt_debug + ;; + --dry-run|--dryrun|-n) + opt_dry_run=: + ;; + --config) + opt_config=: +func_config + ;; + --dlopen|-dlopen) + optarg="$1" + opt_dlopen="${opt_dlopen+$opt_dlopen +}$optarg" + shift + ;; + --preserve-dup-deps) + opt_preserve_dup_deps=: + ;; + --features) + opt_features=: +func_features + ;; + --finish) + opt_finish=: +set dummy --mode finish ${1+"$@"}; shift + ;; + --help) + opt_help=: + ;; + --help-all) + opt_help_all=: +opt_help=': help-all' + ;; + --mode) + test $# = 0 && func_missing_arg $opt && break + optarg="$1" + opt_mode="$optarg" +case $optarg in + # Valid mode arguments: + clean|compile|execute|finish|install|link|relink|uninstall) ;; + + # Catch anything else as an error + *) func_error "invalid argument for $opt" + exit_cmd=exit + break + ;; +esac + shift + ;; + --no-silent|--no-quiet) + opt_silent=false +func_append preserve_args " $opt" + ;; + --no-warning|--no-warn) + opt_warning=false +func_append preserve_args " $opt" + ;; + --no-verbose) + opt_verbose=false +func_append preserve_args " $opt" + ;; + --silent|--quiet) + opt_silent=: +func_append preserve_args " $opt" + opt_verbose=false + ;; + --verbose|-v) + opt_verbose=: +func_append preserve_args " $opt" +opt_silent=false + ;; + --tag) + test $# = 0 && func_missing_arg $opt && break + optarg="$1" + opt_tag="$optarg" +func_append preserve_args " $opt $optarg" +func_enable_tag "$optarg" + shift + ;; + + -\?|-h) func_usage ;; + --help) func_help ;; + --version) func_version ;; + # Separate optargs to long options: + --*=*) + func_split_long_opt "$opt" + set dummy "$func_split_long_opt_name" "$func_split_long_opt_arg" ${1+"$@"} + shift + ;; - # Darwin sucks - eval std_shrext=\"$shrext_cmds\" + # Separate non-argument short options: + -\?*|-h*|-n*|-v*) + func_split_short_opt "$opt" + set dummy "$func_split_short_opt_name" "-$func_split_short_opt_arg" ${1+"$@"} + shift + ;; + --) break ;; + -*) func_fatal_help "unrecognized option \`$opt'" ;; + *) set dummy "$opt" ${1+"$@"}; shift; break ;; + esac + done - # Only execute mode is allowed to have -dlopen flags. - if test -n "$execute_dlfiles" && test "$mode" != execute; then - func_error "unrecognized option \`-dlopen'" - $ECHO "$help" 1>&2 - exit $EXIT_FAILURE + # Validate options: + + # save first non-option argument + if test "$#" -gt 0; then + nonopt="$opt" + shift fi - # Change the help message to a mode-specific one. - generic_help="$help" - help="Try \`$progname --help --mode=$mode' for more information." + # preserve --debug + test "$opt_debug" = : || func_append preserve_args " --debug" + + case $host in + *cygwin* | *mingw* | *pw32* | *cegcc*) + # don't eliminate duplications in $postdeps and $predeps + opt_duplicate_compiler_generated_deps=: + ;; + *) + opt_duplicate_compiler_generated_deps=$opt_preserve_dup_deps + ;; + esac + + $opt_help || { + # Sanity checks first: + func_check_version_match + + if test "$build_libtool_libs" != yes && test "$build_old_libs" != yes; then + func_fatal_configuration "not configured to build any kind of library" + fi + + # Darwin sucks + eval std_shrext=\"$shrext_cmds\" + + # Only execute mode is allowed to have -dlopen flags. + if test -n "$opt_dlopen" && test "$opt_mode" != execute; then + func_error "unrecognized option \`-dlopen'" + $ECHO "$help" 1>&2 + exit $EXIT_FAILURE + fi + + # Change the help message to a mode-specific one. + generic_help="$help" + help="Try \`$progname --help --mode=$opt_mode' for more information." + } + + + # Bail if the options were screwed + $exit_cmd $EXIT_FAILURE } + + +## ----------- ## +## Main. ## +## ----------- ## + # func_lalib_p file # True iff FILE is a libtool `.la' library or `.lo' object file. # This function is only a basic sanity check; it will hardly flush out # determined imposters. func_lalib_p () { - $SED -e 4q "$1" 2>/dev/null \ - | $GREP "^# Generated by .*$PACKAGE" > /dev/null 2>&1 + test -f "$1" && + $SED -e 4q "$1" 2>/dev/null \ + | $GREP "^# Generated by .*$PACKAGE" > /dev/null 2>&1 } # func_lalib_unsafe_p file @@ -907,7 +1245,7 @@ func_lalib_p () func_lalib_unsafe_p () { lalib_p=no - if test -r "$1" && exec 5<&0 <"$1"; then + if test -f "$1" && test -r "$1" && exec 5<&0 <"$1"; then for lalib_p_l in 1 2 3 4 do read lalib_p_line @@ -949,12 +1287,9 @@ func_ltwrapper_executable_p () # temporary ltwrapper_script. func_ltwrapper_scriptname () { - func_ltwrapper_scriptname_result="" - if func_ltwrapper_executable_p "$1"; then - func_dirname_and_basename "$1" "" "." - func_stripname '' '.exe' "$func_basename_result" - func_ltwrapper_scriptname_result="$func_dirname_result/$objdir/${func_stripname_result}_ltshwrapper" - fi + func_dirname_and_basename "$1" "" "." + func_stripname '' '.exe' "$func_basename_result" + func_ltwrapper_scriptname_result="$func_dirname_result/$objdir/${func_stripname_result}_ltshwrapper" } # func_ltwrapper_p file @@ -1000,6 +1335,37 @@ func_source () } +# func_resolve_sysroot PATH +# Replace a leading = in PATH with a sysroot. Store the result into +# func_resolve_sysroot_result +func_resolve_sysroot () +{ + func_resolve_sysroot_result=$1 + case $func_resolve_sysroot_result in + =*) + func_stripname '=' '' "$func_resolve_sysroot_result" + func_resolve_sysroot_result=$lt_sysroot$func_stripname_result + ;; + esac +} + +# func_replace_sysroot PATH +# If PATH begins with the sysroot, replace it with = and +# store the result into func_replace_sysroot_result. +func_replace_sysroot () +{ + case "$lt_sysroot:$1" in + ?*:"$lt_sysroot"*) + func_stripname "$lt_sysroot" '' "$1" + func_replace_sysroot_result="=$func_stripname_result" + ;; + *) + # Including no sysroot. + func_replace_sysroot_result=$1 + ;; + esac +} + # func_infer_tag arg # Infer tagged configuration to use if any are available and # if one wasn't chosen via the "--tag" command line option. @@ -1012,13 +1378,15 @@ func_infer_tag () if test -n "$available_tags" && test -z "$tagname"; then CC_quoted= for arg in $CC; do - func_quote_for_eval "$arg" - CC_quoted="$CC_quoted $func_quote_for_eval_result" + func_append_quoted CC_quoted "$arg" done + CC_expanded=`func_echo_all $CC` + CC_quoted_expanded=`func_echo_all $CC_quoted` case $@ in # Blanks in the command may have been stripped by the calling shell, # but not from the CC environment variable when configure was run. - " $CC "* | "$CC "* | " `$ECHO $CC` "* | "`$ECHO $CC` "* | " $CC_quoted"* | "$CC_quoted "* | " `$ECHO $CC_quoted` "* | "`$ECHO $CC_quoted` "*) ;; + " $CC "* | "$CC "* | " $CC_expanded "* | "$CC_expanded "* | \ + " $CC_quoted"* | "$CC_quoted "* | " $CC_quoted_expanded "* | "$CC_quoted_expanded "*) ;; # Blanks at the start of $base_compile will cause this to fail # if we don't check for them as well. *) @@ -1029,11 +1397,13 @@ func_infer_tag () CC_quoted= for arg in $CC; do # Double-quote args containing other shell metacharacters. - func_quote_for_eval "$arg" - CC_quoted="$CC_quoted $func_quote_for_eval_result" + func_append_quoted CC_quoted "$arg" done + CC_expanded=`func_echo_all $CC` + CC_quoted_expanded=`func_echo_all $CC_quoted` case "$@ " in - " $CC "* | "$CC "* | " `$ECHO $CC` "* | "`$ECHO $CC` "* | " $CC_quoted"* | "$CC_quoted "* | " `$ECHO $CC_quoted` "* | "`$ECHO $CC_quoted` "*) + " $CC "* | "$CC "* | " $CC_expanded "* | "$CC_expanded "* | \ + " $CC_quoted"* | "$CC_quoted "* | " $CC_quoted_expanded "* | "$CC_quoted_expanded "*) # The compiler in the base compile command matches # the one in the tagged configuration. # Assume this is the tagged configuration we want. @@ -1058,43 +1428,523 @@ func_infer_tag () } - -# func_write_libtool_object output_name pic_name nonpic_name -# Create a libtool object file (analogous to a ".la" file), -# but don't create it if we're doing a dry run. -func_write_libtool_object () + +# func_write_libtool_object output_name pic_name nonpic_name +# Create a libtool object file (analogous to a ".la" file), +# but don't create it if we're doing a dry run. +func_write_libtool_object () +{ + write_libobj=${1} + if test "$build_libtool_libs" = yes; then + write_lobj=\'${2}\' + else + write_lobj=none + fi + + if test "$build_old_libs" = yes; then + write_oldobj=\'${3}\' + else + write_oldobj=none + fi + + $opt_dry_run || { + cat >${write_libobj}T </dev/null` + if test "$?" -eq 0 && test -n "${func_convert_core_file_wine_to_w32_tmp}"; then + func_convert_core_file_wine_to_w32_result=`$ECHO "$func_convert_core_file_wine_to_w32_tmp" | + $SED -e "$lt_sed_naive_backslashify"` + else + func_convert_core_file_wine_to_w32_result= + fi + fi +} +# end: func_convert_core_file_wine_to_w32 + + +# func_convert_core_path_wine_to_w32 ARG +# Helper function used by path conversion functions when $build is *nix, and +# $host is mingw, cygwin, or some other w32 environment. Relies on a correctly +# configured wine environment available, with the winepath program in $build's +# $PATH. Assumes ARG has no leading or trailing path separator characters. +# +# ARG is path to be converted from $build format to win32. +# Result is available in $func_convert_core_path_wine_to_w32_result. +# Unconvertible file (directory) names in ARG are skipped; if no directory names +# are convertible, then the result may be empty. +func_convert_core_path_wine_to_w32 () +{ + $opt_debug + # unfortunately, winepath doesn't convert paths, only file names + func_convert_core_path_wine_to_w32_result="" + if test -n "$1"; then + oldIFS=$IFS + IFS=: + for func_convert_core_path_wine_to_w32_f in $1; do + IFS=$oldIFS + func_convert_core_file_wine_to_w32 "$func_convert_core_path_wine_to_w32_f" + if test -n "$func_convert_core_file_wine_to_w32_result" ; then + if test -z "$func_convert_core_path_wine_to_w32_result"; then + func_convert_core_path_wine_to_w32_result="$func_convert_core_file_wine_to_w32_result" + else + func_append func_convert_core_path_wine_to_w32_result ";$func_convert_core_file_wine_to_w32_result" + fi + fi + done + IFS=$oldIFS + fi +} +# end: func_convert_core_path_wine_to_w32 + + +# func_cygpath ARGS... +# Wrapper around calling the cygpath program via LT_CYGPATH. This is used when +# when (1) $build is *nix and Cygwin is hosted via a wine environment; or (2) +# $build is MSYS and $host is Cygwin, or (3) $build is Cygwin. In case (1) or +# (2), returns the Cygwin file name or path in func_cygpath_result (input +# file name or path is assumed to be in w32 format, as previously converted +# from $build's *nix or MSYS format). In case (3), returns the w32 file name +# or path in func_cygpath_result (input file name or path is assumed to be in +# Cygwin format). Returns an empty string on error. +# +# ARGS are passed to cygpath, with the last one being the file name or path to +# be converted. +# +# Specify the absolute *nix (or w32) name to cygpath in the LT_CYGPATH +# environment variable; do not put it in $PATH. +func_cygpath () +{ + $opt_debug + if test -n "$LT_CYGPATH" && test -f "$LT_CYGPATH"; then + func_cygpath_result=`$LT_CYGPATH "$@" 2>/dev/null` + if test "$?" -ne 0; then + # on failure, ensure result is empty + func_cygpath_result= + fi + else + func_cygpath_result= + func_error "LT_CYGPATH is empty or specifies non-existent file: \`$LT_CYGPATH'" + fi +} +#end: func_cygpath + + +# func_convert_core_msys_to_w32 ARG +# Convert file name or path ARG from MSYS format to w32 format. Return +# result in func_convert_core_msys_to_w32_result. +func_convert_core_msys_to_w32 () +{ + $opt_debug + # awkward: cmd appends spaces to result + func_convert_core_msys_to_w32_result=`( cmd //c echo "$1" ) 2>/dev/null | + $SED -e 's/[ ]*$//' -e "$lt_sed_naive_backslashify"` +} +#end: func_convert_core_msys_to_w32 + + +# func_convert_file_check ARG1 ARG2 +# Verify that ARG1 (a file name in $build format) was converted to $host +# format in ARG2. Otherwise, emit an error message, but continue (resetting +# func_to_host_file_result to ARG1). +func_convert_file_check () +{ + $opt_debug + if test -z "$2" && test -n "$1" ; then + func_error "Could not determine host file name corresponding to" + func_error " \`$1'" + func_error "Continuing, but uninstalled executables may not work." + # Fallback: + func_to_host_file_result="$1" + fi +} +# end func_convert_file_check + + +# func_convert_path_check FROM_PATHSEP TO_PATHSEP FROM_PATH TO_PATH +# Verify that FROM_PATH (a path in $build format) was converted to $host +# format in TO_PATH. Otherwise, emit an error message, but continue, resetting +# func_to_host_file_result to a simplistic fallback value (see below). +func_convert_path_check () +{ + $opt_debug + if test -z "$4" && test -n "$3"; then + func_error "Could not determine the host path corresponding to" + func_error " \`$3'" + func_error "Continuing, but uninstalled executables may not work." + # Fallback. This is a deliberately simplistic "conversion" and + # should not be "improved". See libtool.info. + if test "x$1" != "x$2"; then + lt_replace_pathsep_chars="s|$1|$2|g" + func_to_host_path_result=`echo "$3" | + $SED -e "$lt_replace_pathsep_chars"` + else + func_to_host_path_result="$3" + fi + fi +} +# end func_convert_path_check + + +# func_convert_path_front_back_pathsep FRONTPAT BACKPAT REPL ORIG +# Modifies func_to_host_path_result by prepending REPL if ORIG matches FRONTPAT +# and appending REPL if ORIG matches BACKPAT. +func_convert_path_front_back_pathsep () +{ + $opt_debug + case $4 in + $1 ) func_to_host_path_result="$3$func_to_host_path_result" + ;; + esac + case $4 in + $2 ) func_append func_to_host_path_result "$3" + ;; + esac +} +# end func_convert_path_front_back_pathsep + + +################################################## +# $build to $host FILE NAME CONVERSION FUNCTIONS # +################################################## +# invoked via `$to_host_file_cmd ARG' +# +# In each case, ARG is the path to be converted from $build to $host format. +# Result will be available in $func_to_host_file_result. + + +# func_to_host_file ARG +# Converts the file name ARG from $build format to $host format. Return result +# in func_to_host_file_result. +func_to_host_file () +{ + $opt_debug + $to_host_file_cmd "$1" +} +# end func_to_host_file + + +# func_to_tool_file ARG LAZY +# converts the file name ARG from $build format to toolchain format. Return +# result in func_to_tool_file_result. If the conversion in use is listed +# in (the comma separated) LAZY, no conversion takes place. +func_to_tool_file () +{ + $opt_debug + case ,$2, in + *,"$to_tool_file_cmd",*) + func_to_tool_file_result=$1 + ;; + *) + $to_tool_file_cmd "$1" + func_to_tool_file_result=$func_to_host_file_result + ;; + esac +} +# end func_to_tool_file + + +# func_convert_file_noop ARG +# Copy ARG to func_to_host_file_result. +func_convert_file_noop () +{ + func_to_host_file_result="$1" +} +# end func_convert_file_noop + + +# func_convert_file_msys_to_w32 ARG +# Convert file name ARG from (mingw) MSYS to (mingw) w32 format; automatic +# conversion to w32 is not available inside the cwrapper. Returns result in +# func_to_host_file_result. +func_convert_file_msys_to_w32 () +{ + $opt_debug + func_to_host_file_result="$1" + if test -n "$1"; then + func_convert_core_msys_to_w32 "$1" + func_to_host_file_result="$func_convert_core_msys_to_w32_result" + fi + func_convert_file_check "$1" "$func_to_host_file_result" +} +# end func_convert_file_msys_to_w32 + + +# func_convert_file_cygwin_to_w32 ARG +# Convert file name ARG from Cygwin to w32 format. Returns result in +# func_to_host_file_result. +func_convert_file_cygwin_to_w32 () +{ + $opt_debug + func_to_host_file_result="$1" + if test -n "$1"; then + # because $build is cygwin, we call "the" cygpath in $PATH; no need to use + # LT_CYGPATH in this case. + func_to_host_file_result=`cygpath -m "$1"` + fi + func_convert_file_check "$1" "$func_to_host_file_result" +} +# end func_convert_file_cygwin_to_w32 + + +# func_convert_file_nix_to_w32 ARG +# Convert file name ARG from *nix to w32 format. Requires a wine environment +# and a working winepath. Returns result in func_to_host_file_result. +func_convert_file_nix_to_w32 () +{ + $opt_debug + func_to_host_file_result="$1" + if test -n "$1"; then + func_convert_core_file_wine_to_w32 "$1" + func_to_host_file_result="$func_convert_core_file_wine_to_w32_result" + fi + func_convert_file_check "$1" "$func_to_host_file_result" +} +# end func_convert_file_nix_to_w32 + + +# func_convert_file_msys_to_cygwin ARG +# Convert file name ARG from MSYS to Cygwin format. Requires LT_CYGPATH set. +# Returns result in func_to_host_file_result. +func_convert_file_msys_to_cygwin () +{ + $opt_debug + func_to_host_file_result="$1" + if test -n "$1"; then + func_convert_core_msys_to_w32 "$1" + func_cygpath -u "$func_convert_core_msys_to_w32_result" + func_to_host_file_result="$func_cygpath_result" + fi + func_convert_file_check "$1" "$func_to_host_file_result" +} +# end func_convert_file_msys_to_cygwin + + +# func_convert_file_nix_to_cygwin ARG +# Convert file name ARG from *nix to Cygwin format. Requires Cygwin installed +# in a wine environment, working winepath, and LT_CYGPATH set. Returns result +# in func_to_host_file_result. +func_convert_file_nix_to_cygwin () +{ + $opt_debug + func_to_host_file_result="$1" + if test -n "$1"; then + # convert from *nix to w32, then use cygpath to convert from w32 to cygwin. + func_convert_core_file_wine_to_w32 "$1" + func_cygpath -u "$func_convert_core_file_wine_to_w32_result" + func_to_host_file_result="$func_cygpath_result" + fi + func_convert_file_check "$1" "$func_to_host_file_result" +} +# end func_convert_file_nix_to_cygwin + + +############################################# +# $build to $host PATH CONVERSION FUNCTIONS # +############################################# +# invoked via `$to_host_path_cmd ARG' +# +# In each case, ARG is the path to be converted from $build to $host format. +# The result will be available in $func_to_host_path_result. +# +# Path separators are also converted from $build format to $host format. If +# ARG begins or ends with a path separator character, it is preserved (but +# converted to $host format) on output. +# +# All path conversion functions are named using the following convention: +# file name conversion function : func_convert_file_X_to_Y () +# path conversion function : func_convert_path_X_to_Y () +# where, for any given $build/$host combination the 'X_to_Y' value is the +# same. If conversion functions are added for new $build/$host combinations, +# the two new functions must follow this pattern, or func_init_to_host_path_cmd +# will break. + + +# func_init_to_host_path_cmd +# Ensures that function "pointer" variable $to_host_path_cmd is set to the +# appropriate value, based on the value of $to_host_file_cmd. +to_host_path_cmd= +func_init_to_host_path_cmd () +{ + $opt_debug + if test -z "$to_host_path_cmd"; then + func_stripname 'func_convert_file_' '' "$to_host_file_cmd" + to_host_path_cmd="func_convert_path_${func_stripname_result}" + fi +} + + +# func_to_host_path ARG +# Converts the path ARG from $build format to $host format. Return result +# in func_to_host_path_result. +func_to_host_path () +{ + $opt_debug + func_init_to_host_path_cmd + $to_host_path_cmd "$1" +} +# end func_to_host_path + + +# func_convert_path_noop ARG +# Copy ARG to func_to_host_path_result. +func_convert_path_noop () +{ + func_to_host_path_result="$1" +} +# end func_convert_path_noop + + +# func_convert_path_msys_to_w32 ARG +# Convert path ARG from (mingw) MSYS to (mingw) w32 format; automatic +# conversion to w32 is not available inside the cwrapper. Returns result in +# func_to_host_path_result. +func_convert_path_msys_to_w32 () +{ + $opt_debug + func_to_host_path_result="$1" + if test -n "$1"; then + # Remove leading and trailing path separator characters from ARG. MSYS + # behavior is inconsistent here; cygpath turns them into '.;' and ';.'; + # and winepath ignores them completely. + func_stripname : : "$1" + func_to_host_path_tmp1=$func_stripname_result + func_convert_core_msys_to_w32 "$func_to_host_path_tmp1" + func_to_host_path_result="$func_convert_core_msys_to_w32_result" + func_convert_path_check : ";" \ + "$func_to_host_path_tmp1" "$func_to_host_path_result" + func_convert_path_front_back_pathsep ":*" "*:" ";" "$1" + fi +} +# end func_convert_path_msys_to_w32 + + +# func_convert_path_cygwin_to_w32 ARG +# Convert path ARG from Cygwin to w32 format. Returns result in +# func_to_host_file_result. +func_convert_path_cygwin_to_w32 () +{ + $opt_debug + func_to_host_path_result="$1" + if test -n "$1"; then + # See func_convert_path_msys_to_w32: + func_stripname : : "$1" + func_to_host_path_tmp1=$func_stripname_result + func_to_host_path_result=`cygpath -m -p "$func_to_host_path_tmp1"` + func_convert_path_check : ";" \ + "$func_to_host_path_tmp1" "$func_to_host_path_result" + func_convert_path_front_back_pathsep ":*" "*:" ";" "$1" + fi +} +# end func_convert_path_cygwin_to_w32 + + +# func_convert_path_nix_to_w32 ARG +# Convert path ARG from *nix to w32 format. Requires a wine environment and +# a working winepath. Returns result in func_to_host_file_result. +func_convert_path_nix_to_w32 () { - write_libobj=${1} - if test "$build_libtool_libs" = yes; then - write_lobj=\'${2}\' - else - write_lobj=none - fi - - if test "$build_old_libs" = yes; then - write_oldobj=\'${3}\' - else - write_oldobj=none - fi + $opt_debug + func_to_host_path_result="$1" + if test -n "$1"; then + # See func_convert_path_msys_to_w32: + func_stripname : : "$1" + func_to_host_path_tmp1=$func_stripname_result + func_convert_core_path_wine_to_w32 "$func_to_host_path_tmp1" + func_to_host_path_result="$func_convert_core_path_wine_to_w32_result" + func_convert_path_check : ";" \ + "$func_to_host_path_tmp1" "$func_to_host_path_result" + func_convert_path_front_back_pathsep ":*" "*:" ";" "$1" + fi +} +# end func_convert_path_nix_to_w32 - $opt_dry_run || { - cat >${write_libobj}T < "$lockfile" fi $opt_dry_run || $RM $removelist - removelist="$removelist $lockfile" + func_append removelist " $lockfile" trap '$opt_dry_run || $RM $removelist; exit $EXIT_FAILURE' 1 2 15 - if test -n "$fix_srcfile_path"; then - eval srcfile=\"$fix_srcfile_path\" - fi + func_to_tool_file "$srcfile" func_convert_file_msys_to_w32 + srcfile=$func_to_tool_file_result func_quote_for_eval "$srcfile" qsrcfile=$func_quote_for_eval_result @@ -1348,7 +2195,7 @@ compiler." if test -z "$output_obj"; then # Place PIC objects in $objdir - command="$command -o $lobj" + func_append command " -o $lobj" fi func_show_eval_locale "$command" \ @@ -1395,11 +2242,11 @@ compiler." command="$base_compile $qsrcfile $pic_flag" fi if test "$compiler_c_o" = yes; then - command="$command -o $obj" + func_append command " -o $obj" fi # Suppress compiler output if we already did a PIC compilation. - command="$command$suppress_output" + func_append command "$suppress_output" func_show_eval_locale "$command" \ '$opt_dry_run || $RM $removelist; exit $EXIT_FAILURE' @@ -1444,13 +2291,13 @@ compiler." } $opt_help || { -test "$mode" = compile && func_mode_compile ${1+"$@"} + test "$opt_mode" = compile && func_mode_compile ${1+"$@"} } func_mode_help () { # We need to display help for each of the modes. - case $mode in + case $opt_mode in "") # Generic help is extracted from the usage comments # at the start of this file. @@ -1481,10 +2328,11 @@ This mode accepts the following additional options: -o OUTPUT-FILE set the output file name to OUTPUT-FILE -no-suppress do not suppress compiler output for multiple passes - -prefer-pic try to building PIC objects only - -prefer-non-pic try to building non-PIC objects only + -prefer-pic try to build PIC objects only + -prefer-non-pic try to build non-PIC objects only -shared do not build a \`.o' file suitable for static linking -static only build a \`.o' file suitable for static linking + -Wc,FLAG pass FLAG directly to the compiler COMPILE-COMMAND is a command to be used in creating a \`standard' object file from the given SOURCEFILE. @@ -1537,7 +2385,7 @@ either the \`install' or \`cp' program. The following components of INSTALL-COMMAND are treated specially: - -inst-prefix PREFIX-DIR Use PREFIX-DIR as a staging area for installation + -inst-prefix-dir PREFIX-DIR Use PREFIX-DIR as a staging area for installation The rest of the components are interpreted as arguments to that command (only BSD-compatible install options are recognized)." @@ -1557,6 +2405,8 @@ The following components of LINK-COMMAND are treated specially: -all-static do not do any dynamic linking at all -avoid-version do not add a version suffix if possible + -bindir BINDIR specify path to binaries directory (for systems where + libraries must be found in the PATH setting at runtime) -dlopen FILE \`-dlpreopen' FILE if it cannot be dlopened at runtime -dlpreopen FILE link in FILE and add its symbols to lt_preloaded_symbols -export-dynamic allow symbols from OUTPUT-FILE to be resolved with dlsym(3) @@ -1585,6 +2435,11 @@ The following components of LINK-COMMAND are treated specially: -version-info CURRENT[:REVISION[:AGE]] specify library version info [each variable defaults to 0] -weak LIBNAME declare that the target provides the LIBNAME interface + -Wc,FLAG + -Xcompiler FLAG pass linker-specific FLAG directly to the compiler + -Wl,FLAG + -Xlinker FLAG pass linker-specific FLAG directly to the linker + -XCClinker FLAG pass link-specific FLAG to the compiler driver (CC) All other options (arguments beginning with \`-') are ignored. @@ -1618,18 +2473,44 @@ Otherwise, only FILE itself is deleted using RM." ;; *) - func_fatal_help "invalid operation mode \`$mode'" + func_fatal_help "invalid operation mode \`$opt_mode'" ;; esac - $ECHO + echo $ECHO "Try \`$progname --help' for more information about other modes." - - exit $? } - # Now that we've collected a possible --mode arg, show help if necessary - $opt_help && func_mode_help +# Now that we've collected a possible --mode arg, show help if necessary +if $opt_help; then + if test "$opt_help" = :; then + func_mode_help + else + { + func_help noexit + for opt_mode in compile link execute install finish uninstall clean; do + func_mode_help + done + } | sed -n '1p; 2,$s/^Usage:/ or: /p' + { + func_help noexit + for opt_mode in compile link execute install finish uninstall clean; do + echo + func_mode_help + done + } | + sed '1d + /^When reporting/,/^Report/{ + H + d + } + $x + /information about other modes/d + /more detailed .*MODE/d + s/^Usage:.*--mode=\([^ ]*\) .*/Description of \1 mode:/' + fi + exit $? +fi # func_mode_execute arg... @@ -1642,13 +2523,16 @@ func_mode_execute () func_fatal_help "you must specify a COMMAND" # Handle -dlopen flags immediately. - for file in $execute_dlfiles; do + for file in $opt_dlopen; do test -f "$file" \ || func_fatal_help "\`$file' is not a file" dir= case $file in *.la) + func_resolve_sysroot "$file" + file=$func_resolve_sysroot_result + # Check to see that this really is a libtool archive. func_lalib_unsafe_p "$file" \ || func_fatal_help "\`$lib' is not a valid libtool archive" @@ -1670,7 +2554,7 @@ func_mode_execute () dir="$func_dirname_result" if test -f "$dir/$objdir/$dlname"; then - dir="$dir/$objdir" + func_append dir "/$objdir" else if test ! -f "$dir/$dlname"; then func_fatal_error "cannot find \`$dlname' in \`$dir' or \`$dir/$objdir'" @@ -1711,7 +2595,7 @@ func_mode_execute () for file do case $file in - -*) ;; + -* | *.la | *.lo ) ;; *) # Do a test to see if this is really a libtool program. if func_ltwrapper_script_p "$file"; then @@ -1727,8 +2611,7 @@ func_mode_execute () ;; esac # Quote arguments (to preserve shell metacharacters). - func_quote_for_eval "$file" - args="$args $func_quote_for_eval_result" + func_append_quoted args "$file" done if test "X$opt_dry_run" = Xfalse; then @@ -1753,29 +2636,66 @@ func_mode_execute () # Display what would be done. if test -n "$shlibpath_var"; then eval "\$ECHO \"\$shlibpath_var=\$$shlibpath_var\"" - $ECHO "export $shlibpath_var" + echo "export $shlibpath_var" fi $ECHO "$cmd$args" exit $EXIT_SUCCESS fi } -test "$mode" = execute && func_mode_execute ${1+"$@"} +test "$opt_mode" = execute && func_mode_execute ${1+"$@"} # func_mode_finish arg... func_mode_finish () { $opt_debug - libdirs="$nonopt" + libs= + libdirs= admincmds= - if test -n "$finish_cmds$finish_eval" && test -n "$libdirs"; then - for dir - do - libdirs="$libdirs $dir" - done + for opt in "$nonopt" ${1+"$@"} + do + if test -d "$opt"; then + func_append libdirs " $opt" + + elif test -f "$opt"; then + if func_lalib_unsafe_p "$opt"; then + func_append libs " $opt" + else + func_warning "\`$opt' is not a valid libtool archive" + fi + else + func_fatal_error "invalid argument \`$opt'" + fi + done + + if test -n "$libs"; then + if test -n "$lt_sysroot"; then + sysroot_regex=`$ECHO "$lt_sysroot" | $SED "$sed_make_literal_regex"` + sysroot_cmd="s/\([ ']\)$sysroot_regex/\1/g;" + else + sysroot_cmd= + fi + + # Remove sysroot references + if $opt_dry_run; then + for lib in $libs; do + echo "removing references to $lt_sysroot and \`=' prefixes from $lib" + done + else + tmpdir=`func_mktempdir` + for lib in $libs; do + sed -e "${sysroot_cmd} s/\([ ']-[LR]\)=/\1/g; s/\([ ']\)=/\1/g" $lib \ + > $tmpdir/tmp-la + mv -f $tmpdir/tmp-la $lib + done + ${RM}r "$tmpdir" + fi + fi + + if test -n "$finish_cmds$finish_eval" && test -n "$libdirs"; then for libdir in $libdirs; do if test -n "$finish_cmds"; then # Do each command in the finish commands. @@ -1785,7 +2705,7 @@ func_mode_finish () if test -n "$finish_eval"; then # Do the single finish_eval. eval cmds=\"$finish_eval\" - $opt_dry_run || eval "$cmds" || admincmds="$admincmds + $opt_dry_run || eval "$cmds" || func_append admincmds " $cmds" fi done @@ -1794,53 +2714,55 @@ func_mode_finish () # Exit here if they wanted silent mode. $opt_silent && exit $EXIT_SUCCESS - $ECHO "X----------------------------------------------------------------------" | $Xsed - $ECHO "Libraries have been installed in:" - for libdir in $libdirs; do - $ECHO " $libdir" - done - $ECHO - $ECHO "If you ever happen to want to link against installed libraries" - $ECHO "in a given directory, LIBDIR, you must either use libtool, and" - $ECHO "specify the full pathname of the library, or use the \`-LLIBDIR'" - $ECHO "flag during linking and do at least one of the following:" - if test -n "$shlibpath_var"; then - $ECHO " - add LIBDIR to the \`$shlibpath_var' environment variable" - $ECHO " during execution" - fi - if test -n "$runpath_var"; then - $ECHO " - add LIBDIR to the \`$runpath_var' environment variable" - $ECHO " during linking" - fi - if test -n "$hardcode_libdir_flag_spec"; then - libdir=LIBDIR - eval flag=\"$hardcode_libdir_flag_spec\" + if test -n "$finish_cmds$finish_eval" && test -n "$libdirs"; then + echo "----------------------------------------------------------------------" + echo "Libraries have been installed in:" + for libdir in $libdirs; do + $ECHO " $libdir" + done + echo + echo "If you ever happen to want to link against installed libraries" + echo "in a given directory, LIBDIR, you must either use libtool, and" + echo "specify the full pathname of the library, or use the \`-LLIBDIR'" + echo "flag during linking and do at least one of the following:" + if test -n "$shlibpath_var"; then + echo " - add LIBDIR to the \`$shlibpath_var' environment variable" + echo " during execution" + fi + if test -n "$runpath_var"; then + echo " - add LIBDIR to the \`$runpath_var' environment variable" + echo " during linking" + fi + if test -n "$hardcode_libdir_flag_spec"; then + libdir=LIBDIR + eval flag=\"$hardcode_libdir_flag_spec\" - $ECHO " - use the \`$flag' linker flag" - fi - if test -n "$admincmds"; then - $ECHO " - have your system administrator run these commands:$admincmds" - fi - if test -f /etc/ld.so.conf; then - $ECHO " - have your system administrator add LIBDIR to \`/etc/ld.so.conf'" - fi - $ECHO + $ECHO " - use the \`$flag' linker flag" + fi + if test -n "$admincmds"; then + $ECHO " - have your system administrator run these commands:$admincmds" + fi + if test -f /etc/ld.so.conf; then + echo " - have your system administrator add LIBDIR to \`/etc/ld.so.conf'" + fi + echo - $ECHO "See any operating system documentation about shared libraries for" - case $host in - solaris2.[6789]|solaris2.1[0-9]) - $ECHO "more information, such as the ld(1), crle(1) and ld.so(8) manual" - $ECHO "pages." - ;; - *) - $ECHO "more information, such as the ld(1) and ld.so(8) manual pages." - ;; - esac - $ECHO "X----------------------------------------------------------------------" | $Xsed + echo "See any operating system documentation about shared libraries for" + case $host in + solaris2.[6789]|solaris2.1[0-9]) + echo "more information, such as the ld(1), crle(1) and ld.so(8) manual" + echo "pages." + ;; + *) + echo "more information, such as the ld(1) and ld.so(8) manual pages." + ;; + esac + echo "----------------------------------------------------------------------" + fi exit $EXIT_SUCCESS } -test "$mode" = finish && func_mode_finish ${1+"$@"} +test "$opt_mode" = finish && func_mode_finish ${1+"$@"} # func_mode_install arg... @@ -1851,7 +2773,7 @@ func_mode_install () # install_prog (especially on Windows NT). if test "$nonopt" = "$SHELL" || test "$nonopt" = /bin/sh || # Allow the use of GNU shtool's install command. - $ECHO "X$nonopt" | $GREP shtool >/dev/null; then + case $nonopt in *shtool*) :;; *) false;; esac; then # Aesthetically quote it. func_quote_for_eval "$nonopt" install_prog="$func_quote_for_eval_result " @@ -1865,7 +2787,12 @@ func_mode_install () # The real first argument should be the name of the installation program. # Aesthetically quote it. func_quote_for_eval "$arg" - install_prog="$install_prog$func_quote_for_eval_result" + func_append install_prog "$func_quote_for_eval_result" + install_shared_prog=$install_prog + case " $install_prog " in + *[\\\ /]cp\ *) install_cp=: ;; + *) install_cp=false ;; + esac # We need to accept at least all the BSD install flags. dest= @@ -1875,10 +2802,12 @@ func_mode_install () install_type= isdir=no stripme= + no_mode=: for arg do + arg2= if test -n "$dest"; then - files="$files $dest" + func_append files " $dest" dest=$arg continue fi @@ -1886,10 +2815,9 @@ func_mode_install () case $arg in -d) isdir=yes ;; -f) - case " $install_prog " in - *[\\\ /]cp\ *) ;; - *) prev=$arg ;; - esac + if $install_cp; then :; else + prev=$arg + fi ;; -g | -m | -o) prev=$arg @@ -1903,6 +2831,10 @@ func_mode_install () *) # If the previous option needed an argument, then skip it. if test -n "$prev"; then + if test "x$prev" = x-m && test -n "$install_override_mode"; then + arg2=$install_override_mode + no_mode=false + fi prev= else dest=$arg @@ -1913,7 +2845,11 @@ func_mode_install () # Aesthetically quote the argument. func_quote_for_eval "$arg" - install_prog="$install_prog $func_quote_for_eval_result" + func_append install_prog " $func_quote_for_eval_result" + if test -n "$arg2"; then + func_quote_for_eval "$arg2" + fi + func_append install_shared_prog " $func_quote_for_eval_result" done test -z "$install_prog" && \ @@ -1922,6 +2858,13 @@ func_mode_install () test -n "$prev" && \ func_fatal_help "the \`$prev' option requires an argument" + if test -n "$install_override_mode" && $no_mode; then + if $install_cp; then :; else + func_quote_for_eval "$install_override_mode" + func_append install_shared_prog " -m $func_quote_for_eval_result" + fi + fi + if test -z "$files"; then if test -z "$dest"; then func_fatal_help "no file or destination specified" @@ -1976,10 +2919,13 @@ func_mode_install () case $file in *.$libext) # Do the static libraries later. - staticlibs="$staticlibs $file" + func_append staticlibs " $file" ;; *.la) + func_resolve_sysroot "$file" + file=$func_resolve_sysroot_result + # Check to see that this really is a libtool archive. func_lalib_unsafe_p "$file" \ || func_fatal_help "\`$file' is not a valid libtool archive" @@ -1993,23 +2939,23 @@ func_mode_install () if test "X$destdir" = "X$libdir"; then case "$current_libdirs " in *" $libdir "*) ;; - *) current_libdirs="$current_libdirs $libdir" ;; + *) func_append current_libdirs " $libdir" ;; esac else # Note the libdir as a future libdir. case "$future_libdirs " in *" $libdir "*) ;; - *) future_libdirs="$future_libdirs $libdir" ;; + *) func_append future_libdirs " $libdir" ;; esac fi func_dirname "$file" "/" "" dir="$func_dirname_result" - dir="$dir$objdir" + func_append dir "$objdir" if test -n "$relink_command"; then # Determine the prefix the user has applied to our future dir. - inst_prefix_dir=`$ECHO "X$destdir" | $Xsed -e "s%$libdir\$%%"` + inst_prefix_dir=`$ECHO "$destdir" | $SED -e "s%$libdir\$%%"` # Don't allow the user to place us outside of our expected # location b/c this prevents finding dependent libraries that @@ -2022,9 +2968,9 @@ func_mode_install () if test -n "$inst_prefix_dir"; then # Stick the inst_prefix_dir data into the link command. - relink_command=`$ECHO "X$relink_command" | $Xsed -e "s%@inst_prefix_dir@%-inst-prefix-dir $inst_prefix_dir%"` + relink_command=`$ECHO "$relink_command" | $SED "s%@inst_prefix_dir@%-inst-prefix-dir $inst_prefix_dir%"` else - relink_command=`$ECHO "X$relink_command" | $Xsed -e "s%@inst_prefix_dir@%%"` + relink_command=`$ECHO "$relink_command" | $SED "s%@inst_prefix_dir@%%"` fi func_warning "relinking \`$file'" @@ -2042,11 +2988,11 @@ func_mode_install () test -n "$relink_command" && srcname="$realname"T # Install the shared library and build the symlinks. - func_show_eval "$install_prog $dir/$srcname $destdir/$realname" \ + func_show_eval "$install_shared_prog $dir/$srcname $destdir/$realname" \ 'exit $?' tstripme="$stripme" case $host_os in - cygwin* | mingw* | pw32*) + cygwin* | mingw* | pw32* | cegcc*) case $realname in *.dll.a) tstripme="" @@ -2082,7 +3028,7 @@ func_mode_install () func_show_eval "$install_prog $instname $destdir/$name" 'exit $?' # Maybe install the static library, too. - test -n "$old_library" && staticlibs="$staticlibs $dir/$old_library" + test -n "$old_library" && func_append staticlibs " $dir/$old_library" ;; *.lo) @@ -2152,7 +3098,7 @@ func_mode_install () # Do a test to see if this is really a libtool program. case $host in - *cygwin*|*mingw*) + *cygwin* | *mingw*) if func_ltwrapper_executable_p "$file"; then func_ltwrapper_scriptname "$file" wrapper=$func_ltwrapper_scriptname_result @@ -2182,7 +3128,7 @@ func_mode_install () if test -f "$lib"; then func_source "$lib" fi - libfile="$libdir/"`$ECHO "X$lib" | $Xsed -e 's%^.*/%%g'` ### testsuite: skip nested quoting test + libfile="$libdir/"`$ECHO "$lib" | $SED 's%^.*/%%g'` ### testsuite: skip nested quoting test if test -n "$libdir" && test ! -f "$libfile"; then func_warning "\`$lib' has not been installed in \`$libdir'" finalize=no @@ -2201,7 +3147,7 @@ func_mode_install () file="$func_basename_result" outputname="$tmpdir/$file" # Replace the output file specification. - relink_command=`$ECHO "X$relink_command" | $Xsed -e 's%@OUTPUT@%'"$outputname"'%g'` + relink_command=`$ECHO "$relink_command" | $SED 's%@OUTPUT@%'"$outputname"'%g'` $opt_silent || { func_quote_for_expand "$relink_command" @@ -2220,7 +3166,7 @@ func_mode_install () } else # Install the binary that we compiled earlier. - file=`$ECHO "X$file$stripped_ext" | $Xsed -e "s%\([^/]*\)$%$objdir/\1%"` + file=`$ECHO "$file$stripped_ext" | $SED "s%\([^/]*\)$%$objdir/\1%"` fi fi @@ -2256,11 +3202,13 @@ func_mode_install () # Set up the ranlib parameters. oldlib="$destdir/$name" + func_to_tool_file "$oldlib" func_convert_file_msys_to_w32 + tool_oldlib=$func_to_tool_file_result func_show_eval "$install_prog \$file \$oldlib" 'exit $?' if test -n "$stripme" && test -n "$old_striplib"; then - func_show_eval "$old_striplib $oldlib" 'exit $?' + func_show_eval "$old_striplib $tool_oldlib" 'exit $?' fi # Do each command in the postinstall commands. @@ -2279,7 +3227,7 @@ func_mode_install () fi } -test "$mode" = install && func_mode_install ${1+"$@"} +test "$opt_mode" = install && func_mode_install ${1+"$@"} # func_generate_dlsyms outputname originator pic_p @@ -2322,6 +3270,22 @@ func_generate_dlsyms () extern \"C\" { #endif +#if defined(__GNUC__) && (((__GNUC__ == 4) && (__GNUC_MINOR__ >= 4)) || (__GNUC__ > 4)) +#pragma GCC diagnostic ignored \"-Wstrict-prototypes\" +#endif + +/* Keep this code in sync between libtool.m4, ltmain, lt_system.h, and tests. */ +#if defined(_WIN32) || defined(__CYGWIN__) || defined(_WIN32_WCE) +/* DATA imports from DLLs on WIN32 con't be const, because runtime + relocations are performed -- see ld's documentation on pseudo-relocs. */ +# define LT_DLSYM_CONST +#elif defined(__osf__) +/* This system does not cope well with relocations in const data. */ +# define LT_DLSYM_CONST +#else +# define LT_DLSYM_CONST const +#endif + /* External symbol declarations for the compiler. */\ " @@ -2331,10 +3295,11 @@ extern \"C\" { $opt_dry_run || echo ': @PROGRAM@ ' > "$nlist" # Add our own program objects to the symbol list. - progfiles=`$ECHO "X$objs$old_deplibs" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP` + progfiles=`$ECHO "$objs$old_deplibs" | $SP2NL | $SED "$lo2o" | $NL2SP` for progfile in $progfiles; do - func_verbose "extracting global C symbols from \`$progfile'" - $opt_dry_run || eval "$NM $progfile | $global_symbol_pipe >> '$nlist'" + func_to_tool_file "$progfile" func_convert_file_msys_to_w32 + func_verbose "extracting global C symbols from \`$func_to_tool_file_result'" + $opt_dry_run || eval "$NM $func_to_tool_file_result | $global_symbol_pipe >> '$nlist'" done if test -n "$exclude_expsyms"; then @@ -2358,7 +3323,7 @@ extern \"C\" { $RM $export_symbols eval "${SED} -n -e '/^: @PROGRAM@ $/d' -e 's/^.* \(.*\)$/\1/p' "'< "$nlist" > "$export_symbols"' case $host in - *cygwin* | *mingw* ) + *cygwin* | *mingw* | *cegcc* ) eval "echo EXPORTS "'> "$output_objdir/$outputname.def"' eval 'cat "$export_symbols" >> "$output_objdir/$outputname.def"' ;; @@ -2370,7 +3335,7 @@ extern \"C\" { eval '$GREP -f "$output_objdir/$outputname.exp" < "$nlist" > "$nlist"T' eval '$MV "$nlist"T "$nlist"' case $host in - *cygwin | *mingw* ) + *cygwin* | *mingw* | *cegcc* ) eval "echo EXPORTS "'> "$output_objdir/$outputname.def"' eval 'cat "$nlist" >> "$output_objdir/$outputname.def"' ;; @@ -2383,10 +3348,52 @@ extern \"C\" { func_verbose "extracting global C symbols from \`$dlprefile'" func_basename "$dlprefile" name="$func_basename_result" - $opt_dry_run || { - eval '$ECHO ": $name " >> "$nlist"' - eval "$NM $dlprefile 2>/dev/null | $global_symbol_pipe >> '$nlist'" - } + case $host in + *cygwin* | *mingw* | *cegcc* ) + # if an import library, we need to obtain dlname + if func_win32_import_lib_p "$dlprefile"; then + func_tr_sh "$dlprefile" + eval "curr_lafile=\$libfile_$func_tr_sh_result" + dlprefile_dlbasename="" + if test -n "$curr_lafile" && func_lalib_p "$curr_lafile"; then + # Use subshell, to avoid clobbering current variable values + dlprefile_dlname=`source "$curr_lafile" && echo "$dlname"` + if test -n "$dlprefile_dlname" ; then + func_basename "$dlprefile_dlname" + dlprefile_dlbasename="$func_basename_result" + else + # no lafile. user explicitly requested -dlpreopen . + $sharedlib_from_linklib_cmd "$dlprefile" + dlprefile_dlbasename=$sharedlib_from_linklib_result + fi + fi + $opt_dry_run || { + if test -n "$dlprefile_dlbasename" ; then + eval '$ECHO ": $dlprefile_dlbasename" >> "$nlist"' + else + func_warning "Could not compute DLL name from $name" + eval '$ECHO ": $name " >> "$nlist"' + fi + func_to_tool_file "$dlprefile" func_convert_file_msys_to_w32 + eval "$NM \"$func_to_tool_file_result\" 2>/dev/null | $global_symbol_pipe | + $SED -e '/I __imp/d' -e 's/I __nm_/D /;s/_nm__//' >> '$nlist'" + } + else # not an import lib + $opt_dry_run || { + eval '$ECHO ": $name " >> "$nlist"' + func_to_tool_file "$dlprefile" func_convert_file_msys_to_w32 + eval "$NM \"$func_to_tool_file_result\" 2>/dev/null | $global_symbol_pipe >> '$nlist'" + } + fi + ;; + *) + $opt_dry_run || { + eval '$ECHO ": $name " >> "$nlist"' + func_to_tool_file "$dlprefile" func_convert_file_msys_to_w32 + eval "$NM \"$func_to_tool_file_result\" 2>/dev/null | $global_symbol_pipe >> '$nlist'" + } + ;; + esac done $opt_dry_run || { @@ -2414,36 +3421,19 @@ extern \"C\" { if test -f "$nlist"S; then eval "$global_symbol_to_cdecl"' < "$nlist"S >> "$output_objdir/$my_dlsyms"' else - $ECHO '/* NONE */' >> "$output_objdir/$my_dlsyms" + echo '/* NONE */' >> "$output_objdir/$my_dlsyms" fi - $ECHO >> "$output_objdir/$my_dlsyms" "\ + echo >> "$output_objdir/$my_dlsyms" "\ /* The mapping between symbol names and symbols. */ typedef struct { const char *name; void *address; } lt_dlsymlist; -" - case $host in - *cygwin* | *mingw* ) - $ECHO >> "$output_objdir/$my_dlsyms" "\ -/* DATA imports from DLLs on WIN32 con't be const, because - runtime relocations are performed -- see ld's documentation - on pseudo-relocs. */" - lt_dlsym_const= ;; - *osf5*) - echo >> "$output_objdir/$my_dlsyms" "\ -/* This system does not cope well with relocations in const data */" - lt_dlsym_const= ;; - *) - lt_dlsym_const=const ;; - esac - - $ECHO >> "$output_objdir/$my_dlsyms" "\ -extern $lt_dlsym_const lt_dlsymlist +extern LT_DLSYM_CONST lt_dlsymlist lt_${my_prefix}_LTX_preloaded_symbols[]; -$lt_dlsym_const lt_dlsymlist +LT_DLSYM_CONST lt_dlsymlist lt_${my_prefix}_LTX_preloaded_symbols[] = {\ { \"$my_originator\", (void *) 0 }," @@ -2456,7 +3446,7 @@ lt_${my_prefix}_LTX_preloaded_symbols[] = eval "$global_symbol_to_c_name_address_lib_prefix" < "$nlist" >> "$output_objdir/$my_dlsyms" ;; esac - $ECHO >> "$output_objdir/$my_dlsyms" "\ + echo >> "$output_objdir/$my_dlsyms" "\ {0, (void *) 0} }; @@ -2483,7 +3473,7 @@ static const void *lt_preloaded_setup() { # linked before any other PIC object. But we must not use # pic_flag when linking with -static. The problem exists in # FreeBSD 2.2.6 and is fixed in FreeBSD 3.1. - *-*-freebsd2*|*-*-freebsd3.0*|*-*-freebsdelf3.0*) + *-*-freebsd2.*|*-*-freebsd3.0*|*-*-freebsdelf3.0*) pic_flag_for_symtable=" $pic_flag -DFREEBSD_WORKAROUND" ;; *-*-hpux*) pic_flag_for_symtable=" $pic_flag" ;; @@ -2499,7 +3489,7 @@ static const void *lt_preloaded_setup() { for arg in $LTCFLAGS; do case $arg in -pie | -fpie | -fPIE) ;; - *) symtab_cflags="$symtab_cflags $arg" ;; + *) func_append symtab_cflags " $arg" ;; esac done @@ -2512,18 +3502,18 @@ static const void *lt_preloaded_setup() { # Transform the symbol file into the correct name. symfileobj="$output_objdir/${my_outputname}S.$objext" case $host in - *cygwin* | *mingw* ) + *cygwin* | *mingw* | *cegcc* ) if test -f "$output_objdir/$my_outputname.def"; then - compile_command=`$ECHO "X$compile_command" | $Xsed -e "s%@SYMFILE@%$output_objdir/$my_outputname.def $symfileobj%"` - finalize_command=`$ECHO "X$finalize_command" | $Xsed -e "s%@SYMFILE@%$output_objdir/$my_outputname.def $symfileobj%"` + compile_command=`$ECHO "$compile_command" | $SED "s%@SYMFILE@%$output_objdir/$my_outputname.def $symfileobj%"` + finalize_command=`$ECHO "$finalize_command" | $SED "s%@SYMFILE@%$output_objdir/$my_outputname.def $symfileobj%"` else - compile_command=`$ECHO "X$compile_command" | $Xsed -e "s%@SYMFILE@%$symfileobj%"` - finalize_command=`$ECHO "X$finalize_command" | $Xsed -e "s%@SYMFILE@%$symfileobj%"` + compile_command=`$ECHO "$compile_command" | $SED "s%@SYMFILE@%$symfileobj%"` + finalize_command=`$ECHO "$finalize_command" | $SED "s%@SYMFILE@%$symfileobj%"` fi ;; *) - compile_command=`$ECHO "X$compile_command" | $Xsed -e "s%@SYMFILE@%$symfileobj%"` - finalize_command=`$ECHO "X$finalize_command" | $Xsed -e "s%@SYMFILE@%$symfileobj%"` + compile_command=`$ECHO "$compile_command" | $SED "s%@SYMFILE@%$symfileobj%"` + finalize_command=`$ECHO "$finalize_command" | $SED "s%@SYMFILE@%$symfileobj%"` ;; esac ;; @@ -2537,8 +3527,8 @@ static const void *lt_preloaded_setup() { # really was required. # Nullify the symbol file. - compile_command=`$ECHO "X$compile_command" | $Xsed -e "s% @SYMFILE@%%"` - finalize_command=`$ECHO "X$finalize_command" | $Xsed -e "s% @SYMFILE@%%"` + compile_command=`$ECHO "$compile_command" | $SED "s% @SYMFILE@%%"` + finalize_command=`$ECHO "$finalize_command" | $SED "s% @SYMFILE@%%"` fi } @@ -2548,6 +3538,7 @@ static const void *lt_preloaded_setup() { # Need a lot of goo to handle *both* DLLs and import libs # Has to be a shell function in order to 'eat' the argument # that is supplied when $file_magic_command is called. +# Despite the name, also deal with 64 bit binaries. func_win32_libid () { $opt_debug @@ -2558,9 +3549,11 @@ func_win32_libid () win32_libid_type="x86 archive import" ;; *ar\ archive*) # could be an import, or static + # Keep the egrep pattern in sync with the one in _LT_CHECK_MAGIC_METHOD. if eval $OBJDUMP -f $1 | $SED -e '10q' 2>/dev/null | - $EGREP 'file format pe-i386(.*architecture: i386)?' >/dev/null ; then - win32_nmres=`eval $NM -f posix -A $1 | + $EGREP 'file format (pei*-i386(.*architecture: i386)?|pe-arm-wince|pe-x86-64)' >/dev/null; then + func_to_tool_file "$1" func_convert_file_msys_to_w32 + win32_nmres=`eval $NM -f posix -A \"$func_to_tool_file_result\" | $SED -n -e ' 1,100{ / I /{ @@ -2589,6 +3582,131 @@ func_win32_libid () $ECHO "$win32_libid_type" } +# func_cygming_dll_for_implib ARG +# +# Platform-specific function to extract the +# name of the DLL associated with the specified +# import library ARG. +# Invoked by eval'ing the libtool variable +# $sharedlib_from_linklib_cmd +# Result is available in the variable +# $sharedlib_from_linklib_result +func_cygming_dll_for_implib () +{ + $opt_debug + sharedlib_from_linklib_result=`$DLLTOOL --identify-strict --identify "$1"` +} + +# func_cygming_dll_for_implib_fallback_core SECTION_NAME LIBNAMEs +# +# The is the core of a fallback implementation of a +# platform-specific function to extract the name of the +# DLL associated with the specified import library LIBNAME. +# +# SECTION_NAME is either .idata$6 or .idata$7, depending +# on the platform and compiler that created the implib. +# +# Echos the name of the DLL associated with the +# specified import library. +func_cygming_dll_for_implib_fallback_core () +{ + $opt_debug + match_literal=`$ECHO "$1" | $SED "$sed_make_literal_regex"` + $OBJDUMP -s --section "$1" "$2" 2>/dev/null | + $SED '/^Contents of section '"$match_literal"':/{ + # Place marker at beginning of archive member dllname section + s/.*/====MARK====/ + p + d + } + # These lines can sometimes be longer than 43 characters, but + # are always uninteresting + /:[ ]*file format pe[i]\{,1\}-/d + /^In archive [^:]*:/d + # Ensure marker is printed + /^====MARK====/p + # Remove all lines with less than 43 characters + /^.\{43\}/!d + # From remaining lines, remove first 43 characters + s/^.\{43\}//' | + $SED -n ' + # Join marker and all lines until next marker into a single line + /^====MARK====/ b para + H + $ b para + b + :para + x + s/\n//g + # Remove the marker + s/^====MARK====// + # Remove trailing dots and whitespace + s/[\. \t]*$// + # Print + /./p' | + # we now have a list, one entry per line, of the stringified + # contents of the appropriate section of all members of the + # archive which possess that section. Heuristic: eliminate + # all those which have a first or second character that is + # a '.' (that is, objdump's representation of an unprintable + # character.) This should work for all archives with less than + # 0x302f exports -- but will fail for DLLs whose name actually + # begins with a literal '.' or a single character followed by + # a '.'. + # + # Of those that remain, print the first one. + $SED -e '/^\./d;/^.\./d;q' +} + +# func_cygming_gnu_implib_p ARG +# This predicate returns with zero status (TRUE) if +# ARG is a GNU/binutils-style import library. Returns +# with nonzero status (FALSE) otherwise. +func_cygming_gnu_implib_p () +{ + $opt_debug + func_to_tool_file "$1" func_convert_file_msys_to_w32 + func_cygming_gnu_implib_tmp=`$NM "$func_to_tool_file_result" | eval "$global_symbol_pipe" | $EGREP ' (_head_[A-Za-z0-9_]+_[ad]l*|[A-Za-z0-9_]+_[ad]l*_iname)$'` + test -n "$func_cygming_gnu_implib_tmp" +} + +# func_cygming_ms_implib_p ARG +# This predicate returns with zero status (TRUE) if +# ARG is an MS-style import library. Returns +# with nonzero status (FALSE) otherwise. +func_cygming_ms_implib_p () +{ + $opt_debug + func_to_tool_file "$1" func_convert_file_msys_to_w32 + func_cygming_ms_implib_tmp=`$NM "$func_to_tool_file_result" | eval "$global_symbol_pipe" | $GREP '_NULL_IMPORT_DESCRIPTOR'` + test -n "$func_cygming_ms_implib_tmp" +} + +# func_cygming_dll_for_implib_fallback ARG +# Platform-specific function to extract the +# name of the DLL associated with the specified +# import library ARG. +# +# This fallback implementation is for use when $DLLTOOL +# does not support the --identify-strict option. +# Invoked by eval'ing the libtool variable +# $sharedlib_from_linklib_cmd +# Result is available in the variable +# $sharedlib_from_linklib_result +func_cygming_dll_for_implib_fallback () +{ + $opt_debug + if func_cygming_gnu_implib_p "$1" ; then + # binutils import library + sharedlib_from_linklib_result=`func_cygming_dll_for_implib_fallback_core '.idata$7' "$1"` + elif func_cygming_ms_implib_p "$1" ; then + # ms-generated import library + sharedlib_from_linklib_result=`func_cygming_dll_for_implib_fallback_core '.idata$6' "$1"` + else + # unknown + sharedlib_from_linklib_result="" + fi +} # func_extract_an_archive dir oldlib @@ -2597,7 +3715,18 @@ func_extract_an_archive () $opt_debug f_ex_an_ar_dir="$1"; shift f_ex_an_ar_oldlib="$1" - func_show_eval "(cd \$f_ex_an_ar_dir && $AR x \"\$f_ex_an_ar_oldlib\")" 'exit $?' + if test "$lock_old_archive_extraction" = yes; then + lockfile=$f_ex_an_ar_oldlib.lock + until $opt_dry_run || ln "$progpath" "$lockfile" 2>/dev/null; do + func_echo "Waiting for $lockfile to be removed" + sleep 2 + done + fi + func_show_eval "(cd \$f_ex_an_ar_dir && $AR x \"\$f_ex_an_ar_oldlib\")" \ + 'stat=$?; rm -f "$lockfile"; exit $stat' + if test "$lock_old_archive_extraction" = yes; then + $opt_dry_run || rm -f "$lockfile" + fi if ($AR t "$f_ex_an_ar_oldlib" | sort | sort -uc >/dev/null 2>&1); then : else @@ -2668,7 +3797,7 @@ func_extract_archives () darwin_file= darwin_files= for darwin_file in $darwin_filelist; do - darwin_files=`find unfat-$$ -name $darwin_file -print | $NL2SP` + darwin_files=`find unfat-$$ -name $darwin_file -print | sort | $NL2SP` $LIPO -create -output "$darwin_file" $darwin_files done # $darwin_filelist $RM -rf unfat-$$ @@ -2683,34 +3812,30 @@ func_extract_archives () func_extract_an_archive "$my_xdir" "$my_xabs" ;; esac - my_oldobjs="$my_oldobjs "`find $my_xdir -name \*.$objext -print -o -name \*.lo -print | $NL2SP` + my_oldobjs="$my_oldobjs "`find $my_xdir -name \*.$objext -print -o -name \*.lo -print | sort | $NL2SP` done func_extract_archives_result="$my_oldobjs" } - -# func_emit_wrapper arg +# func_emit_wrapper [arg=no] # -# emit a libtool wrapper script on stdout -# don't directly open a file because we may want to +# Emit a libtool wrapper script on stdout. +# Don't directly open a file because we may want to # incorporate the script contents within a cygwin/mingw # wrapper executable. Must ONLY be called from within -# func_mode_link because it depends on a number of variable +# func_mode_link because it depends on a number of variables # set therein. # -# arg is the value that the WRAPPER_SCRIPT_BELONGS_IN_OBJDIR +# ARG is the value that the WRAPPER_SCRIPT_BELONGS_IN_OBJDIR # variable will take. If 'yes', then the emitted script # will assume that the directory in which it is stored is -# the '.lib' directory. This is a cygwin/mingw-specific +# the $objdir directory. This is a cygwin/mingw-specific # behavior. func_emit_wrapper () { - func_emit_wrapper_arg1=no - if test -n "$1" ; then - func_emit_wrapper_arg1=$1 - fi + func_emit_wrapper_arg1=${1-no} $ECHO "\ #! $SHELL @@ -2726,7 +3851,6 @@ func_emit_wrapper () # Sed substitution that helps us do robust quoting. It backslashifies # metacharacters that are still active within double-quoted strings. -Xsed='${SED} -e 1s/^X//' sed_quote_subst='$sed_quote_subst' # Be Bourne compatible @@ -2757,31 +3881,135 @@ if test \"\$libtool_install_magic\" = \"$magic\"; then else # When we are sourced in execute mode, \$file and \$ECHO are already set. if test \"\$libtool_execute_magic\" != \"$magic\"; then - ECHO=\"$qecho\" - file=\"\$0\" - # Make sure echo works. - if test \"X\$1\" = X--no-reexec; then - # Discard the --no-reexec flag, and continue. - shift - elif test \"X\`{ \$ECHO '\t'; } 2>/dev/null\`\" = 'X\t'; then - # Yippee, \$ECHO works! - : - else - # Restart under the correct shell, and then maybe \$ECHO will work. - exec $SHELL \"\$0\" --no-reexec \${1+\"\$@\"} - fi - fi\ + file=\"\$0\"" + + qECHO=`$ECHO "$ECHO" | $SED "$sed_quote_subst"` + $ECHO "\ + +# A function that is used when there is no print builtin or printf. +func_fallback_echo () +{ + eval 'cat <<_LTECHO_EOF +\$1 +_LTECHO_EOF' +} + ECHO=\"$qECHO\" + fi + +# Very basic option parsing. These options are (a) specific to +# the libtool wrapper, (b) are identical between the wrapper +# /script/ and the wrapper /executable/ which is used only on +# windows platforms, and (c) all begin with the string "--lt-" +# (application programs are unlikely to have options which match +# this pattern). +# +# There are only two supported options: --lt-debug and +# --lt-dump-script. There is, deliberately, no --lt-help. +# +# The first argument to this parsing function should be the +# script's $0 value, followed by "$@". +lt_option_debug= +func_parse_lt_options () +{ + lt_script_arg0=\$0 + shift + for lt_opt + do + case \"\$lt_opt\" in + --lt-debug) lt_option_debug=1 ;; + --lt-dump-script) + lt_dump_D=\`\$ECHO \"X\$lt_script_arg0\" | $SED -e 's/^X//' -e 's%/[^/]*$%%'\` + test \"X\$lt_dump_D\" = \"X\$lt_script_arg0\" && lt_dump_D=. + lt_dump_F=\`\$ECHO \"X\$lt_script_arg0\" | $SED -e 's/^X//' -e 's%^.*/%%'\` + cat \"\$lt_dump_D/\$lt_dump_F\" + exit 0 + ;; + --lt-*) + \$ECHO \"Unrecognized --lt- option: '\$lt_opt'\" 1>&2 + exit 1 + ;; + esac + done + + # Print the debug banner immediately: + if test -n \"\$lt_option_debug\"; then + echo \"${outputname}:${output}:\${LINENO}: libtool wrapper (GNU $PACKAGE$TIMESTAMP) $VERSION\" 1>&2 + fi +} + +# Used when --lt-debug. Prints its arguments to stdout +# (redirection is the responsibility of the caller) +func_lt_dump_args () +{ + lt_dump_args_N=1; + for lt_arg + do + \$ECHO \"${outputname}:${output}:\${LINENO}: newargv[\$lt_dump_args_N]: \$lt_arg\" + lt_dump_args_N=\`expr \$lt_dump_args_N + 1\` + done +} + +# Core function for launching the target application +func_exec_program_core () +{ " - $ECHO "\ + case $host in + # Backslashes separate directories on plain windows + *-*-mingw | *-*-os2* | *-cegcc*) + $ECHO "\ + if test -n \"\$lt_option_debug\"; then + \$ECHO \"${outputname}:${output}:\${LINENO}: newargv[0]: \$progdir\\\\\$program\" 1>&2 + func_lt_dump_args \${1+\"\$@\"} 1>&2 + fi + exec \"\$progdir\\\\\$program\" \${1+\"\$@\"} +" + ;; + + *) + $ECHO "\ + if test -n \"\$lt_option_debug\"; then + \$ECHO \"${outputname}:${output}:\${LINENO}: newargv[0]: \$progdir/\$program\" 1>&2 + func_lt_dump_args \${1+\"\$@\"} 1>&2 + fi + exec \"\$progdir/\$program\" \${1+\"\$@\"} +" + ;; + esac + $ECHO "\ + \$ECHO \"\$0: cannot exec \$program \$*\" 1>&2 + exit 1 +} + +# A function to encapsulate launching the target application +# Strips options in the --lt-* namespace from \$@ and +# launches target application with the remaining arguments. +func_exec_program () +{ + case \" \$* \" in + *\\ --lt-*) + for lt_wr_arg + do + case \$lt_wr_arg in + --lt-*) ;; + *) set x \"\$@\" \"\$lt_wr_arg\"; shift;; + esac + shift + done ;; + esac + func_exec_program_core \${1+\"\$@\"} +} + + # Parse options + func_parse_lt_options \"\$0\" \${1+\"\$@\"} # Find the directory that this script lives in. - thisdir=\`\$ECHO \"X\$file\" | \$Xsed -e 's%/[^/]*$%%'\` + thisdir=\`\$ECHO \"\$file\" | $SED 's%/[^/]*$%%'\` test \"x\$thisdir\" = \"x\$file\" && thisdir=. # Follow symbolic links until we get to the real thisdir. - file=\`ls -ld \"\$file\" | ${SED} -n 's/.*-> //p'\` + file=\`ls -ld \"\$file\" | $SED -n 's/.*-> //p'\` while test -n \"\$file\"; do - destdir=\`\$ECHO \"X\$file\" | \$Xsed -e 's%/[^/]*\$%%'\` + destdir=\`\$ECHO \"\$file\" | $SED 's%/[^/]*\$%%'\` # If there was a directory component, then change thisdir. if test \"x\$destdir\" != \"x\$file\"; then @@ -2791,8 +4019,8 @@ else esac fi - file=\`\$ECHO \"X\$file\" | \$Xsed -e 's%^.*/%%'\` - file=\`ls -ld \"\$thisdir/\$file\" | ${SED} -n 's/.*-> //p'\` + file=\`\$ECHO \"\$file\" | $SED 's%^.*/%%'\` + file=\`ls -ld \"\$thisdir/\$file\" | $SED -n 's/.*-> //p'\` done # Usually 'no', except on cygwin/mingw when embedded into @@ -2805,7 +4033,7 @@ else fi # remove .libs from thisdir case \"\$thisdir\" in - *[\\\\/]$objdir ) thisdir=\`\$ECHO \"X\$thisdir\" | \$Xsed -e 's%[\\\\/][^\\\\/]*$%%'\` ;; + *[\\\\/]$objdir ) thisdir=\`\$ECHO \"\$thisdir\" | $SED 's%[\\\\/][^\\\\/]*$%%'\` ;; $objdir ) thisdir=. ;; esac fi @@ -2860,6 +4088,18 @@ else if test -f \"\$progdir/\$program\"; then" + # fixup the dll searchpath if we need to. + # + # Fix the DLL searchpath if we need to. Do this before prepending + # to shlibpath, because on Windows, both are PATH and uninstalled + # libraries must come first. + if test -n "$dllsearchpath"; then + $ECHO "\ + # Add the dll search path components to the executable PATH + PATH=$dllsearchpath:\$PATH +" + fi + # Export our shlibpath_var if we have one. if test "$shlibpath_overrides_runpath" = yes && test -n "$shlibpath_var" && test -n "$temp_rpath"; then $ECHO "\ @@ -2868,53 +4108,28 @@ else # Some systems cannot cope with colon-terminated $shlibpath_var # The second colon is a workaround for a bug in BeOS R4 sed - $shlibpath_var=\`\$ECHO \"X\$$shlibpath_var\" | \$Xsed -e 's/::*\$//'\` + $shlibpath_var=\`\$ECHO \"\$$shlibpath_var\" | $SED 's/::*\$//'\` export $shlibpath_var " fi - # fixup the dll searchpath if we need to. - if test -n "$dllsearchpath"; then - $ECHO "\ - # Add the dll search path components to the executable PATH - PATH=$dllsearchpath:\$PATH -" - fi - $ECHO "\ if test \"\$libtool_execute_magic\" != \"$magic\"; then # Run the actual program with our arguments. -" - case $host in - # Backslashes separate directories on plain windows - *-*-mingw | *-*-os2*) - $ECHO "\ - exec \"\$progdir\\\\\$program\" \${1+\"\$@\"} -" - ;; - - *) - $ECHO "\ - exec \"\$progdir/\$program\" \${1+\"\$@\"} -" - ;; - esac - $ECHO "\ - \$ECHO \"\$0: cannot exec \$program \$*\" 1>&2 - exit 1 + func_exec_program \${1+\"\$@\"} fi else # The program doesn't exist. \$ECHO \"\$0: error: \\\`\$progdir/\$program' does not exist\" 1>&2 \$ECHO \"This script is just a wrapper for \$program.\" 1>&2 - $ECHO \"See the $PACKAGE documentation for more information.\" 1>&2 + \$ECHO \"See the $PACKAGE documentation for more information.\" 1>&2 exit 1 fi fi\ " } -# end: func_emit_wrapper + # func_emit_cwrapperexe_src # emit the source code for a wrapper executable on stdout @@ -2932,20 +4147,18 @@ func_emit_cwrapperexe_src () This wrapper executable should never be moved out of the build directory. If it is, it will not operate correctly. - - Currently, it simply execs the wrapper *script* "$SHELL $output", - but could eventually absorb all of the scripts functionality and - exec $objdir/$outputname directly. */ EOF cat <<"EOF" +#ifdef _MSC_VER +# define _CRT_SECURE_NO_DEPRECATE 1 +#endif #include #include #ifdef _MSC_VER # include # include # include -# define setmode _setmode #else # include # include @@ -2962,6 +4175,44 @@ EOF #include #include +/* declarations of non-ANSI functions */ +#if defined(__MINGW32__) +# ifdef __STRICT_ANSI__ +int _putenv (const char *); +# endif +#elif defined(__CYGWIN__) +# ifdef __STRICT_ANSI__ +char *realpath (const char *, char *); +int putenv (char *); +int setenv (const char *, const char *, int); +# endif +/* #elif defined (other platforms) ... */ +#endif + +/* portability defines, excluding path handling macros */ +#if defined(_MSC_VER) +# define setmode _setmode +# define stat _stat +# define chmod _chmod +# define getcwd _getcwd +# define putenv _putenv +# define S_IXUSR _S_IEXEC +# ifndef _INTPTR_T_DEFINED +# define _INTPTR_T_DEFINED +# define intptr_t int +# endif +#elif defined(__MINGW32__) +# define setmode _setmode +# define stat _stat +# define chmod _chmod +# define getcwd _getcwd +# define putenv _putenv +#elif defined(__CYGWIN__) +# define HAVE_SETENV +# define FOPEN_WB "wb" +/* #elif defined (other platforms) ... */ +#endif + #if defined(PATH_MAX) # define LT_PATHMAX PATH_MAX #elif defined(MAXPATHLEN) @@ -2977,14 +4228,7 @@ EOF # define S_IXGRP 0 #endif -#ifdef _MSC_VER -# define S_IXUSR _S_IEXEC -# define stat _stat -# ifndef _INTPTR_T_DEFINED -# define intptr_t int -# endif -#endif - +/* path handling portability macros */ #ifndef DIR_SEPARATOR # define DIR_SEPARATOR '/' # define PATH_SEPARATOR ':' @@ -3015,10 +4259,6 @@ EOF # define IS_PATH_SEPARATOR(ch) ((ch) == PATH_SEPARATOR_2) #endif /* PATH_SEPARATOR_2 */ -#ifdef __CYGWIN__ -# define FOPEN_WB "wb" -#endif - #ifndef FOPEN_WB # define FOPEN_WB "w" #endif @@ -3031,22 +4271,13 @@ EOF if (stale) { free ((void *) stale); stale = 0; } \ } while (0) -#undef LTWRAPPER_DEBUGPRINTF -#if defined DEBUGWRAPPER -# define LTWRAPPER_DEBUGPRINTF(args) ltwrapper_debugprintf args -static void -ltwrapper_debugprintf (const char *fmt, ...) -{ - va_list args; - va_start (args, fmt); - (void) vfprintf (stderr, fmt, args); - va_end (args); -} +#if defined(LT_DEBUGWRAPPER) +static int lt_debug = 1; #else -# define LTWRAPPER_DEBUGPRINTF(args) +static int lt_debug = 0; #endif -const char *program_name = NULL; +const char *program_name = "libtool-wrapper"; /* in case xstrdup fails */ void *xmalloc (size_t num); char *xstrdup (const char *string); @@ -3056,37 +4287,88 @@ char *chase_symlinks (const char *pathspec); int make_executable (const char *path); int check_executable (const char *path); char *strendzap (char *str, const char *pat); -void lt_fatal (const char *message, ...); +void lt_debugprintf (const char *file, int line, const char *fmt, ...); +void lt_fatal (const char *file, int line, const char *message, ...); +static const char *nonnull (const char *s); +static const char *nonempty (const char *s); +void lt_setenv (const char *name, const char *value); +char *lt_extend_str (const char *orig_value, const char *add, int to_end); +void lt_update_exe_path (const char *name, const char *value); +void lt_update_lib_path (const char *name, const char *value); +char **prepare_spawn (char **argv); +void lt_dump_script (FILE *f); +EOF -static const char *script_text = + cat </dev/null || echo $SHELL` - case $lt_newargv0 in - *.exe | *.EXE) ;; - *) lt_newargv0=$lt_newargv0.exe ;; - esac - ;; - * ) lt_newargv0=$SHELL ;; - esac - fi - - cat < 0) && IS_PATH_SEPARATOR (new_value[len-1])) + { + new_value[len-1] = '\0'; + } + lt_setenv (name, new_value); + XFREE (new_value); + } +} + +void +lt_update_lib_path (const char *name, const char *value) +{ + lt_debugprintf (__FILE__, __LINE__, + "(lt_update_lib_path) modifying '%s' by prepending '%s'\n", + nonnull (name), nonnull (value)); + + if (name && *name && value && *value) + { + char *new_value = lt_extend_str (getenv (name), value, 0); + lt_setenv (name, new_value); + XFREE (new_value); + } +} + +EOF + case $host_os in + mingw*) + cat <<"EOF" + +/* Prepares an argument vector before calling spawn(). + Note that spawn() does not by itself call the command interpreter + (getenv ("COMSPEC") != NULL ? getenv ("COMSPEC") : + ({ OSVERSIONINFO v; v.dwOSVersionInfoSize = sizeof(OSVERSIONINFO); + GetVersionEx(&v); + v.dwPlatformId == VER_PLATFORM_WIN32_NT; + }) ? "cmd.exe" : "command.com"). + Instead it simply concatenates the arguments, separated by ' ', and calls + CreateProcess(). We must quote the arguments since Win32 CreateProcess() + interprets characters like ' ', '\t', '\\', '"' (but not '<' and '>') in a + special way: + - Space and tab are interpreted as delimiters. They are not treated as + delimiters if they are surrounded by double quotes: "...". + - Unescaped double quotes are removed from the input. Their only effect is + that within double quotes, space and tab are treated like normal + characters. + - Backslashes not followed by double quotes are not special. + - But 2*n+1 backslashes followed by a double quote become + n backslashes followed by a double quote (n >= 0): + \" -> " + \\\" -> \" + \\\\\" -> \\" + */ +#define SHELL_SPECIAL_CHARS "\"\\ \001\002\003\004\005\006\007\010\011\012\013\014\015\016\017\020\021\022\023\024\025\026\027\030\031\032\033\034\035\036\037" +#define SHELL_SPACE_CHARS " \001\002\003\004\005\006\007\010\011\012\013\014\015\016\017\020\021\022\023\024\025\026\027\030\031\032\033\034\035\036\037" +char ** +prepare_spawn (char **argv) +{ + size_t argc; + char **new_argv; + size_t i; + + /* Count number of arguments. */ + for (argc = 0; argv[argc] != NULL; argc++) + ; + + /* Allocate new argument vector. */ + new_argv = XMALLOC (char *, argc + 1); + + /* Put quoted arguments into the new argument vector. */ + for (i = 0; i < argc; i++) + { + const char *string = argv[i]; + + if (string[0] == '\0') + new_argv[i] = xstrdup ("\"\""); + else if (strpbrk (string, SHELL_SPECIAL_CHARS) != NULL) + { + int quote_around = (strpbrk (string, SHELL_SPACE_CHARS) != NULL); + size_t length; + unsigned int backslashes; + const char *s; + char *quoted_string; + char *p; + + length = 0; + backslashes = 0; + if (quote_around) + length++; + for (s = string; *s != '\0'; s++) + { + char c = *s; + if (c == '"') + length += backslashes + 1; + length++; + if (c == '\\') + backslashes++; + else + backslashes = 0; + } + if (quote_around) + length += backslashes + 1; + + quoted_string = XMALLOC (char, length + 1); + + p = quoted_string; + backslashes = 0; + if (quote_around) + *p++ = '"'; + for (s = string; *s != '\0'; s++) + { + char c = *s; + if (c == '"') + { + unsigned int j; + for (j = backslashes + 1; j > 0; j--) + *p++ = '\\'; + } + *p++ = c; + if (c == '\\') + backslashes++; + else + backslashes = 0; + } + if (quote_around) + { + unsigned int j; + for (j = backslashes; j > 0; j--) + *p++ = '\\'; + *p++ = '"'; + } + *p = '\0'; + + new_argv[i] = quoted_string; + } + else + new_argv[i] = (char *) string; + } + new_argv[argc] = NULL; + + return new_argv; +} +EOF + ;; + esac + + cat <<"EOF" +void lt_dump_script (FILE* f) +{ +EOF + func_emit_wrapper yes | + $SED -n -e ' +s/^\(.\{79\}\)\(..*\)/\1\ +\2/ +h +s/\([\\"]\)/\\\1/g +s/$/\\n/ +s/\([^\n]*\).*/ fputs ("\1", f);/p +g +D' + cat <<"EOF" +} EOF } # end: func_emit_cwrapperexe_src +# func_win32_import_lib_p ARG +# True if ARG is an import lib, as indicated by $file_magic_cmd +func_win32_import_lib_p () +{ + $opt_debug + case `eval $file_magic_cmd \"\$1\" 2>/dev/null | $SED -e 10q` in + *import*) : ;; + *) false ;; + esac +} + # func_mode_link arg... func_mode_link () { $opt_debug case $host in - *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2*) + *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*) # It is impossible to link a dll without this setting, and # we shouldn't force the makefile maintainer to figure out # which system we are compiling for in order to pass an extra @@ -3554,6 +5133,7 @@ func_mode_link () new_inherited_linker_flags= avoid_version=no + bindir= dlfiles= dlprefiles= dlself=no @@ -3646,6 +5226,11 @@ func_mode_link () esac case $prev in + bindir) + bindir="$arg" + prev= + continue + ;; dlfiles|dlprefiles) if test "$preload" = no; then # Add the symbol object into the linking commands. @@ -3677,9 +5262,9 @@ func_mode_link () ;; *) if test "$prev" = dlfiles; then - dlfiles="$dlfiles $arg" + func_append dlfiles " $arg" else - dlprefiles="$dlprefiles $arg" + func_append dlprefiles " $arg" fi prev= continue @@ -3703,7 +5288,7 @@ func_mode_link () *-*-darwin*) case "$deplibs " in *" $qarg.ltframework "*) ;; - *) deplibs="$deplibs $qarg.ltframework" # this is fixed later + *) func_append deplibs " $qarg.ltframework" # this is fixed later ;; esac ;; @@ -3722,7 +5307,7 @@ func_mode_link () moreargs= for fil in `cat "$save_arg"` do -# moreargs="$moreargs $fil" +# func_append moreargs " $fil" arg=$fil # A libtool-controlled object. @@ -3751,7 +5336,7 @@ func_mode_link () if test "$prev" = dlfiles; then if test "$build_libtool_libs" = yes && test "$dlopen_support" = yes; then - dlfiles="$dlfiles $pic_object" + func_append dlfiles " $pic_object" prev= continue else @@ -3763,7 +5348,7 @@ func_mode_link () # CHECK ME: I think I busted this. -Ossama if test "$prev" = dlprefiles; then # Preload the old-style object. - dlprefiles="$dlprefiles $pic_object" + func_append dlprefiles " $pic_object" prev= fi @@ -3833,12 +5418,12 @@ func_mode_link () if test "$prev" = rpath; then case "$rpath " in *" $arg "*) ;; - *) rpath="$rpath $arg" ;; + *) func_append rpath " $arg" ;; esac else case "$xrpath " in *" $arg "*) ;; - *) xrpath="$xrpath $arg" ;; + *) func_append xrpath " $arg" ;; esac fi prev= @@ -3850,28 +5435,28 @@ func_mode_link () continue ;; weak) - weak_libs="$weak_libs $arg" + func_append weak_libs " $arg" prev= continue ;; xcclinker) - linker_flags="$linker_flags $qarg" - compiler_flags="$compiler_flags $qarg" + func_append linker_flags " $qarg" + func_append compiler_flags " $qarg" prev= func_append compile_command " $qarg" func_append finalize_command " $qarg" continue ;; xcompiler) - compiler_flags="$compiler_flags $qarg" + func_append compiler_flags " $qarg" prev= func_append compile_command " $qarg" func_append finalize_command " $qarg" continue ;; xlinker) - linker_flags="$linker_flags $qarg" - compiler_flags="$compiler_flags $wl$qarg" + func_append linker_flags " $qarg" + func_append compiler_flags " $wl$qarg" prev= func_append compile_command " $wl$qarg" func_append finalize_command " $wl$qarg" @@ -3907,6 +5492,11 @@ func_mode_link () continue ;; + -bindir) + prev=bindir + continue + ;; + -dlopen) prev=dlfiles continue @@ -3957,8 +5547,16 @@ func_mode_link () ;; -L*) - func_stripname '-L' '' "$arg" - dir=$func_stripname_result + func_stripname "-L" '' "$arg" + if test -z "$func_stripname_result"; then + if test "$#" -gt 0; then + func_fatal_error "require no space between \`-L' and \`$1'" + else + func_fatal_error "need path for \`-L' option" + fi + fi + func_resolve_sysroot "$func_stripname_result" + dir=$func_resolve_sysroot_result # We need an absolute path. case $dir in [\\/]* | [A-Za-z]:[\\/]*) ;; @@ -3970,22 +5568,30 @@ func_mode_link () ;; esac case "$deplibs " in - *" -L$dir "*) ;; + *" -L$dir "* | *" $arg "*) + # Will only happen for absolute or sysroot arguments + ;; *) - deplibs="$deplibs -L$dir" - lib_search_path="$lib_search_path $dir" + # Preserve sysroot, but never include relative directories + case $dir in + [\\/]* | [A-Za-z]:[\\/]* | =*) func_append deplibs " $arg" ;; + *) func_append deplibs " -L$dir" ;; + esac + func_append lib_search_path " $dir" ;; esac case $host in - *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2*) - testbindir=`$ECHO "X$dir" | $Xsed -e 's*/lib$*/bin*'` + *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*) + testbindir=`$ECHO "$dir" | $SED 's*/lib$*/bin*'` case :$dllsearchpath: in *":$dir:"*) ;; - *) dllsearchpath="$dllsearchpath:$dir";; + ::) dllsearchpath=$dir;; + *) func_append dllsearchpath ":$dir";; esac case :$dllsearchpath: in *":$testbindir:"*) ;; - *) dllsearchpath="$dllsearchpath:$testbindir";; + ::) dllsearchpath=$testbindir;; + *) func_append dllsearchpath ":$testbindir";; esac ;; esac @@ -3995,7 +5601,7 @@ func_mode_link () -l*) if test "X$arg" = "X-lc" || test "X$arg" = "X-lm"; then case $host in - *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-beos*) + *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-beos* | *-cegcc* | *-*-haiku*) # These systems don't actually have a C or math library (as such) continue ;; @@ -4009,7 +5615,7 @@ func_mode_link () ;; *-*-rhapsody* | *-*-darwin1.[012]) # Rhapsody C and math libraries are in the System framework - deplibs="$deplibs System.ltframework" + func_append deplibs " System.ltframework" continue ;; *-*-sco3.2v5* | *-*-sco5v6*) @@ -4029,7 +5635,7 @@ func_mode_link () ;; esac fi - deplibs="$deplibs $arg" + func_append deplibs " $arg" continue ;; @@ -4041,21 +5647,22 @@ func_mode_link () # Tru64 UNIX uses -model [arg] to determine the layout of C++ # classes, name mangling, and exception handling. # Darwin uses the -arch flag to determine output architecture. - -model|-arch|-isysroot) - compiler_flags="$compiler_flags $arg" + -model|-arch|-isysroot|--sysroot) + func_append compiler_flags " $arg" func_append compile_command " $arg" func_append finalize_command " $arg" prev=xcompiler continue ;; - -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe|-threads) - compiler_flags="$compiler_flags $arg" + -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe \ + |-threads|-fopenmp|-openmp|-mp|-xopenmp|-omp|-qsmp=*) + func_append compiler_flags " $arg" func_append compile_command " $arg" func_append finalize_command " $arg" case "$new_inherited_linker_flags " in *" $arg "*) ;; - * ) new_inherited_linker_flags="$new_inherited_linker_flags $arg" ;; + * ) func_append new_inherited_linker_flags " $arg" ;; esac continue ;; @@ -4072,7 +5679,7 @@ func_mode_link () -no-install) case $host in - *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-darwin*) + *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-darwin* | *-cegcc*) # The PATH hackery in wrapper scripts is required on Windows # and Darwin in order for the loader to find any dlls it needs. func_warning "\`-no-install' is ignored for $host" @@ -4122,13 +5729,17 @@ func_mode_link () # We need an absolute path. case $dir in [\\/]* | [A-Za-z]:[\\/]*) ;; + =*) + func_stripname '=' '' "$dir" + dir=$lt_sysroot$func_stripname_result + ;; *) func_fatal_error "only absolute run-paths are allowed" ;; esac case "$xrpath " in *" $dir "*) ;; - *) xrpath="$xrpath $dir" ;; + *) func_append xrpath " $dir" ;; esac continue ;; @@ -4181,8 +5792,8 @@ func_mode_link () for flag in $args; do IFS="$save_ifs" func_quote_for_eval "$flag" - arg="$arg $wl$func_quote_for_eval_result" - compiler_flags="$compiler_flags $func_quote_for_eval_result" + func_append arg " $func_quote_for_eval_result" + func_append compiler_flags " $func_quote_for_eval_result" done IFS="$save_ifs" func_stripname ' ' '' "$arg" @@ -4197,9 +5808,9 @@ func_mode_link () for flag in $args; do IFS="$save_ifs" func_quote_for_eval "$flag" - arg="$arg $wl$func_quote_for_eval_result" - compiler_flags="$compiler_flags $wl$func_quote_for_eval_result" - linker_flags="$linker_flags $func_quote_for_eval_result" + func_append arg " $wl$func_quote_for_eval_result" + func_append compiler_flags " $wl$func_quote_for_eval_result" + func_append linker_flags " $func_quote_for_eval_result" done IFS="$save_ifs" func_stripname ' ' '' "$arg" @@ -4227,23 +5838,27 @@ func_mode_link () arg="$func_quote_for_eval_result" ;; - # -64, -mips[0-9] enable 64-bit mode on the SGI compiler - # -r[0-9][0-9]* specifies the processor on the SGI compiler - # -xarch=*, -xtarget=* enable 64-bit mode on the Sun compiler - # +DA*, +DD* enable 64-bit mode on the HP compiler - # -q* pass through compiler args for the IBM compiler - # -m*, -t[45]*, -txscale* pass through architecture-specific - # compiler args for GCC - # -F/path gives path to uninstalled frameworks, gcc on darwin - # -p, -pg, --coverage, -fprofile-* pass through profiling flag for GCC - # @file GCC response files + # Flags to be passed through unchanged, with rationale: + # -64, -mips[0-9] enable 64-bit mode for the SGI compiler + # -r[0-9][0-9]* specify processor for the SGI compiler + # -xarch=*, -xtarget=* enable 64-bit mode for the Sun compiler + # +DA*, +DD* enable 64-bit mode for the HP compiler + # -q* compiler args for the IBM compiler + # -m*, -t[45]*, -txscale* architecture-specific flags for GCC + # -F/path path to uninstalled frameworks, gcc on darwin + # -p, -pg, --coverage, -fprofile-* profiling flags for GCC + # @file GCC response files + # -tp=* Portland pgcc target processor selection + # --sysroot=* for sysroot support + # -O*, -flto*, -fwhopr*, -fuse-linker-plugin GCC link-time optimization -64|-mips[0-9]|-r[0-9][0-9]*|-xarch=*|-xtarget=*|+DA*|+DD*|-q*|-m*| \ - -t[45]*|-txscale*|-p|-pg|--coverage|-fprofile-*|-F*|@*) + -t[45]*|-txscale*|-p|-pg|--coverage|-fprofile-*|-F*|@*|-tp=*|--sysroot=*| \ + -O*|-flto*|-fwhopr*|-fuse-linker-plugin) func_quote_for_eval "$arg" arg="$func_quote_for_eval_result" func_append compile_command " $arg" func_append finalize_command " $arg" - compiler_flags="$compiler_flags $arg" + func_append compiler_flags " $arg" continue ;; @@ -4255,7 +5870,7 @@ func_mode_link () *.$objext) # A standard object. - objs="$objs $arg" + func_append objs " $arg" ;; *.lo) @@ -4286,7 +5901,7 @@ func_mode_link () if test "$prev" = dlfiles; then if test "$build_libtool_libs" = yes && test "$dlopen_support" = yes; then - dlfiles="$dlfiles $pic_object" + func_append dlfiles " $pic_object" prev= continue else @@ -4298,7 +5913,7 @@ func_mode_link () # CHECK ME: I think I busted this. -Ossama if test "$prev" = dlprefiles; then # Preload the old-style object. - dlprefiles="$dlprefiles $pic_object" + func_append dlprefiles " $pic_object" prev= fi @@ -4343,24 +5958,25 @@ func_mode_link () *.$libext) # An archive. - deplibs="$deplibs $arg" - old_deplibs="$old_deplibs $arg" + func_append deplibs " $arg" + func_append old_deplibs " $arg" continue ;; *.la) # A libtool-controlled library. + func_resolve_sysroot "$arg" if test "$prev" = dlfiles; then # This library was specified with -dlopen. - dlfiles="$dlfiles $arg" + func_append dlfiles " $func_resolve_sysroot_result" prev= elif test "$prev" = dlprefiles; then # The library was specified with -dlpreopen. - dlprefiles="$dlprefiles $arg" + func_append dlprefiles " $func_resolve_sysroot_result" prev= else - deplibs="$deplibs $arg" + func_append deplibs " $func_resolve_sysroot_result" fi continue ;; @@ -4398,7 +6014,7 @@ func_mode_link () if test -n "$shlibpath_var"; then # get the directories listed in $shlibpath_var - eval shlib_search_path=\`\$ECHO \"X\${$shlibpath_var}\" \| \$Xsed -e \'s/:/ /g\'\` + eval shlib_search_path=\`\$ECHO \"\${$shlibpath_var}\" \| \$SED \'s/:/ /g\'\` else shlib_search_path= fi @@ -4407,6 +6023,8 @@ func_mode_link () func_dirname "$output" "/" "" output_objdir="$func_dirname_result$objdir" + func_to_tool_file "$output_objdir/" + tool_output_objdir=$func_to_tool_file_result # Create the object directory. func_mkdir_p "$output_objdir" @@ -4427,12 +6045,12 @@ func_mode_link () # Find all interdependent deplibs by searching for libraries # that are linked more than once (e.g. -la -lb -la) for deplib in $deplibs; do - if $opt_duplicate_deps ; then + if $opt_preserve_dup_deps ; then case "$libs " in - *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;; + *" $deplib "*) func_append specialdeplibs " $deplib" ;; esac fi - libs="$libs $deplib" + func_append libs " $deplib" done if test "$linkmode" = lib; then @@ -4445,9 +6063,9 @@ func_mode_link () if $opt_duplicate_compiler_generated_deps; then for pre_post_dep in $predeps $postdeps; do case "$pre_post_deps " in - *" $pre_post_dep "*) specialdeplibs="$specialdeplibs $pre_post_deps" ;; + *" $pre_post_dep "*) func_append specialdeplibs " $pre_post_deps" ;; esac - pre_post_deps="$pre_post_deps $pre_post_dep" + func_append pre_post_deps " $pre_post_dep" done fi pre_post_deps= @@ -4506,7 +6124,10 @@ func_mode_link () case $pass in dlopen) libs="$dlfiles" ;; dlpreopen) libs="$dlprefiles" ;; - link) libs="$deplibs %DEPLIBS% $dependency_libs" ;; + link) + libs="$deplibs %DEPLIBS%" + test "X$link_all_deplibs" != Xno && libs="$libs $dependency_libs" + ;; esac fi if test "$linkmode,$pass" = "lib,dlpreopen"; then @@ -4514,17 +6135,19 @@ func_mode_link () for lib in $dlprefiles; do # Ignore non-libtool-libs dependency_libs= + func_resolve_sysroot "$lib" case $lib in - *.la) func_source "$lib" ;; + *.la) func_source "$func_resolve_sysroot_result" ;; esac # Collect preopened libtool deplibs, except any this library # has declared as weak libs for deplib in $dependency_libs; do - deplib_base=`$ECHO "X$deplib" | $Xsed -e "$basename"` + func_basename "$deplib" + deplib_base=$func_basename_result case " $weak_libs " in *" $deplib_base "*) ;; - *) deplibs="$deplibs $deplib" ;; + *) func_append deplibs " $deplib" ;; esac done done @@ -4540,16 +6163,17 @@ func_mode_link () lib= found=no case $deplib in - -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe|-threads) + -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe \ + |-threads|-fopenmp|-openmp|-mp|-xopenmp|-omp|-qsmp=*) if test "$linkmode,$pass" = "prog,link"; then compile_deplibs="$deplib $compile_deplibs" finalize_deplibs="$deplib $finalize_deplibs" else - compiler_flags="$compiler_flags $deplib" + func_append compiler_flags " $deplib" if test "$linkmode" = lib ; then case "$new_inherited_linker_flags " in *" $deplib "*) ;; - * ) new_inherited_linker_flags="$new_inherited_linker_flags $deplib" ;; + * ) func_append new_inherited_linker_flags " $deplib" ;; esac fi fi @@ -4634,7 +6258,7 @@ func_mode_link () if test "$linkmode" = lib ; then case "$new_inherited_linker_flags " in *" $deplib "*) ;; - * ) new_inherited_linker_flags="$new_inherited_linker_flags $deplib" ;; + * ) func_append new_inherited_linker_flags " $deplib" ;; esac fi fi @@ -4647,7 +6271,8 @@ func_mode_link () test "$pass" = conv && continue newdependency_libs="$deplib $newdependency_libs" func_stripname '-L' '' "$deplib" - newlib_search_path="$newlib_search_path $func_stripname_result" + func_resolve_sysroot "$func_stripname_result" + func_append newlib_search_path " $func_resolve_sysroot_result" ;; prog) if test "$pass" = conv; then @@ -4661,7 +6286,8 @@ func_mode_link () finalize_deplibs="$deplib $finalize_deplibs" fi func_stripname '-L' '' "$deplib" - newlib_search_path="$newlib_search_path $func_stripname_result" + func_resolve_sysroot "$func_stripname_result" + func_append newlib_search_path " $func_resolve_sysroot_result" ;; *) func_warning "\`-L' is ignored for archives/objects" @@ -4672,17 +6298,21 @@ func_mode_link () -R*) if test "$pass" = link; then func_stripname '-R' '' "$deplib" - dir=$func_stripname_result + func_resolve_sysroot "$func_stripname_result" + dir=$func_resolve_sysroot_result # Make sure the xrpath contains only unique directories. case "$xrpath " in *" $dir "*) ;; - *) xrpath="$xrpath $dir" ;; + *) func_append xrpath " $dir" ;; esac fi deplibs="$deplib $deplibs" continue ;; - *.la) lib="$deplib" ;; + *.la) + func_resolve_sysroot "$deplib" + lib=$func_resolve_sysroot_result + ;; *.$libext) if test "$pass" = conv; then deplibs="$deplib $deplibs" @@ -4700,7 +6330,7 @@ func_mode_link () match_pattern*) set dummy $deplibs_check_method; shift match_pattern_regex=`expr "$deplibs_check_method" : "$1 \(.*\)"` - if eval "\$ECHO \"X$deplib\"" 2>/dev/null | $Xsed -e 10q \ + if eval "\$ECHO \"$deplib\"" 2>/dev/null | $SED 10q \ | $EGREP "$match_pattern_regex" > /dev/null; then valid_a_lib=yes fi @@ -4710,15 +6340,15 @@ func_mode_link () ;; esac if test "$valid_a_lib" != yes; then - $ECHO + echo $ECHO "*** Warning: Trying to link with static lib archive $deplib." - $ECHO "*** I have the capability to make that library automatically link in when" - $ECHO "*** you link to this library. But I can only do this if you have a" - $ECHO "*** shared version of the library, which you do not appear to have" - $ECHO "*** because the file extensions .$libext of this argument makes me believe" - $ECHO "*** that it is just a static archive that I should not use here." + echo "*** I have the capability to make that library automatically link in when" + echo "*** you link to this library. But I can only do this if you have a" + echo "*** shared version of the library, which you do not appear to have" + echo "*** because the file extensions .$libext of this argument makes me believe" + echo "*** that it is just a static archive that I should not use here." else - $ECHO + echo $ECHO "*** Warning: Linking the shared library $output against the" $ECHO "*** static library $deplib is not portable!" deplibs="$deplib $deplibs" @@ -4745,11 +6375,11 @@ func_mode_link () if test "$pass" = dlpreopen || test "$dlopen_support" != yes || test "$build_libtool_libs" = no; then # If there is no dlopen support or we're linking statically, # we need to preload. - newdlprefiles="$newdlprefiles $deplib" + func_append newdlprefiles " $deplib" compile_deplibs="$deplib $compile_deplibs" finalize_deplibs="$deplib $finalize_deplibs" else - newdlfiles="$newdlfiles $deplib" + func_append newdlfiles " $deplib" fi fi continue @@ -4791,20 +6421,20 @@ func_mode_link () # Convert "-framework foo" to "foo.ltframework" if test -n "$inherited_linker_flags"; then - tmp_inherited_linker_flags=`$ECHO "X$inherited_linker_flags" | $Xsed -e 's/-framework \([^ $]*\)/\1.ltframework/g'` + tmp_inherited_linker_flags=`$ECHO "$inherited_linker_flags" | $SED 's/-framework \([^ $]*\)/\1.ltframework/g'` for tmp_inherited_linker_flag in $tmp_inherited_linker_flags; do case " $new_inherited_linker_flags " in *" $tmp_inherited_linker_flag "*) ;; - *) new_inherited_linker_flags="$new_inherited_linker_flags $tmp_inherited_linker_flag";; + *) func_append new_inherited_linker_flags " $tmp_inherited_linker_flag";; esac done fi - dependency_libs=`$ECHO "X $dependency_libs" | $Xsed -e 's% \([^ $]*\).ltframework% -framework \1%g'` + dependency_libs=`$ECHO " $dependency_libs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` if test "$linkmode,$pass" = "lib,link" || test "$linkmode,$pass" = "prog,scan" || { test "$linkmode" != prog && test "$linkmode" != lib; }; then - test -n "$dlopen" && dlfiles="$dlfiles $dlopen" - test -n "$dlpreopen" && dlprefiles="$dlprefiles $dlpreopen" + test -n "$dlopen" && func_append dlfiles " $dlopen" + test -n "$dlpreopen" && func_append dlprefiles " $dlpreopen" fi if test "$pass" = conv; then @@ -4815,30 +6445,36 @@ func_mode_link () func_fatal_error "cannot find name of link library for \`$lib'" fi # It is a libtool convenience library, so add in its objects. - convenience="$convenience $ladir/$objdir/$old_library" - old_convenience="$old_convenience $ladir/$objdir/$old_library" + func_append convenience " $ladir/$objdir/$old_library" + func_append old_convenience " $ladir/$objdir/$old_library" + tmp_libs= + for deplib in $dependency_libs; do + deplibs="$deplib $deplibs" + if $opt_preserve_dup_deps ; then + case "$tmp_libs " in + *" $deplib "*) func_append specialdeplibs " $deplib" ;; + esac + fi + func_append tmp_libs " $deplib" + done elif test "$linkmode" != prog && test "$linkmode" != lib; then func_fatal_error "\`$lib' is not a convenience library" fi - tmp_libs= - for deplib in $dependency_libs; do - deplibs="$deplib $deplibs" - if $opt_duplicate_deps ; then - case "$tmp_libs " in - *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;; - esac - fi - tmp_libs="$tmp_libs $deplib" - done continue fi # $pass = conv # Get the name of the library we link against. linklib= - for l in $old_library $library_names; do - linklib="$l" - done + if test -n "$old_library" && + { test "$prefer_static_libs" = yes || + test "$prefer_static_libs,$installed" = "built,no"; }; then + linklib=$old_library + else + for l in $old_library $library_names; do + linklib="$l" + done + fi if test -z "$linklib"; then func_fatal_error "cannot find name of link library for \`$lib'" fi @@ -4855,9 +6491,9 @@ func_mode_link () # statically, we need to preload. We also need to preload any # dependent libraries so libltdl's deplib preloader doesn't # bomb out in the load deplibs phase. - dlprefiles="$dlprefiles $lib $dependency_libs" + func_append dlprefiles " $lib $dependency_libs" else - newdlfiles="$newdlfiles $lib" + func_append newdlfiles " $lib" fi continue fi # $pass = dlopen @@ -4879,14 +6515,14 @@ func_mode_link () # Find the relevant object directory and library name. if test "X$installed" = Xyes; then - if test ! -f "$libdir/$linklib" && test -f "$abs_ladir/$linklib"; then + if test ! -f "$lt_sysroot$libdir/$linklib" && test -f "$abs_ladir/$linklib"; then func_warning "library \`$lib' was moved." dir="$ladir" absdir="$abs_ladir" libdir="$abs_ladir" else - dir="$libdir" - absdir="$libdir" + dir="$lt_sysroot$libdir" + absdir="$lt_sysroot$libdir" fi test "X$hardcode_automatic" = Xyes && avoidtemprpath=yes else @@ -4894,12 +6530,12 @@ func_mode_link () dir="$ladir" absdir="$abs_ladir" # Remove this search path later - notinst_path="$notinst_path $abs_ladir" + func_append notinst_path " $abs_ladir" else dir="$ladir/$objdir" absdir="$abs_ladir/$objdir" # Remove this search path later - notinst_path="$notinst_path $abs_ladir" + func_append notinst_path " $abs_ladir" fi fi # $installed = yes func_stripname 'lib' '.la' "$laname" @@ -4910,20 +6546,46 @@ func_mode_link () if test -z "$libdir" && test "$linkmode" = prog; then func_fatal_error "only libraries may -dlpreopen a convenience library: \`$lib'" fi - # Prefer using a static library (so that no silly _DYNAMIC symbols - # are required to link). - if test -n "$old_library"; then - newdlprefiles="$newdlprefiles $dir/$old_library" - # Keep a list of preopened convenience libraries to check - # that they are being used correctly in the link pass. - test -z "$libdir" && \ - dlpreconveniencelibs="$dlpreconveniencelibs $dir/$old_library" - # Otherwise, use the dlname, so that lt_dlopen finds it. - elif test -n "$dlname"; then - newdlprefiles="$newdlprefiles $dir/$dlname" - else - newdlprefiles="$newdlprefiles $dir/$linklib" - fi + case "$host" in + # special handling for platforms with PE-DLLs. + *cygwin* | *mingw* | *cegcc* ) + # Linker will automatically link against shared library if both + # static and shared are present. Therefore, ensure we extract + # symbols from the import library if a shared library is present + # (otherwise, the dlopen module name will be incorrect). We do + # this by putting the import library name into $newdlprefiles. + # We recover the dlopen module name by 'saving' the la file + # name in a special purpose variable, and (later) extracting the + # dlname from the la file. + if test -n "$dlname"; then + func_tr_sh "$dir/$linklib" + eval "libfile_$func_tr_sh_result=\$abs_ladir/\$laname" + func_append newdlprefiles " $dir/$linklib" + else + func_append newdlprefiles " $dir/$old_library" + # Keep a list of preopened convenience libraries to check + # that they are being used correctly in the link pass. + test -z "$libdir" && \ + func_append dlpreconveniencelibs " $dir/$old_library" + fi + ;; + * ) + # Prefer using a static library (so that no silly _DYNAMIC symbols + # are required to link). + if test -n "$old_library"; then + func_append newdlprefiles " $dir/$old_library" + # Keep a list of preopened convenience libraries to check + # that they are being used correctly in the link pass. + test -z "$libdir" && \ + func_append dlpreconveniencelibs " $dir/$old_library" + # Otherwise, use the dlname, so that lt_dlopen finds it. + elif test -n "$dlname"; then + func_append newdlprefiles " $dir/$dlname" + else + func_append newdlprefiles " $dir/$linklib" + fi + ;; + esac fi # $pass = dlpreopen if test -z "$libdir"; then @@ -4941,7 +6603,7 @@ func_mode_link () if test "$linkmode" = prog && test "$pass" != link; then - newlib_search_path="$newlib_search_path $ladir" + func_append newlib_search_path " $ladir" deplibs="$lib $deplibs" linkalldeplibs=no @@ -4954,7 +6616,8 @@ func_mode_link () for deplib in $dependency_libs; do case $deplib in -L*) func_stripname '-L' '' "$deplib" - newlib_search_path="$newlib_search_path $func_stripname_result" + func_resolve_sysroot "$func_stripname_result" + func_append newlib_search_path " $func_resolve_sysroot_result" ;; esac # Need to link against all dependency_libs? @@ -4965,12 +6628,12 @@ func_mode_link () # or/and link against static libraries newdependency_libs="$deplib $newdependency_libs" fi - if $opt_duplicate_deps ; then + if $opt_preserve_dup_deps ; then case "$tmp_libs " in - *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;; + *" $deplib "*) func_append specialdeplibs " $deplib" ;; esac fi - tmp_libs="$tmp_libs $deplib" + func_append tmp_libs " $deplib" done # for deplib continue fi # $linkmode = prog... @@ -4985,7 +6648,7 @@ func_mode_link () # Make sure the rpath contains only unique directories. case "$temp_rpath:" in *"$absdir:"*) ;; - *) temp_rpath="$temp_rpath$absdir:" ;; + *) func_append temp_rpath "$absdir:" ;; esac fi @@ -4997,7 +6660,7 @@ func_mode_link () *) case "$compile_rpath " in *" $absdir "*) ;; - *) compile_rpath="$compile_rpath $absdir" + *) func_append compile_rpath " $absdir" ;; esac ;; esac @@ -5006,7 +6669,7 @@ func_mode_link () *) case "$finalize_rpath " in *" $libdir "*) ;; - *) finalize_rpath="$finalize_rpath $libdir" + *) func_append finalize_rpath " $libdir" ;; esac ;; esac @@ -5029,14 +6692,14 @@ func_mode_link () if test -n "$library_names" && { test "$use_static_libs" = no || test -z "$old_library"; }; then case $host in - *cygwin* | *mingw*) + *cygwin* | *mingw* | *cegcc*) # No point in relinking DLLs because paths are not encoded - notinst_deplibs="$notinst_deplibs $lib" + func_append notinst_deplibs " $lib" need_relink=no ;; *) if test "$installed" = no; then - notinst_deplibs="$notinst_deplibs $lib" + func_append notinst_deplibs " $lib" need_relink=yes fi ;; @@ -5053,7 +6716,7 @@ func_mode_link () fi done if test -z "$dlopenmodule" && test "$shouldnotlink" = yes && test "$pass" = link; then - $ECHO + echo if test "$linkmode" = prog; then $ECHO "*** Warning: Linking the executable $output against the loadable module" else @@ -5071,7 +6734,7 @@ func_mode_link () *) case "$compile_rpath " in *" $absdir "*) ;; - *) compile_rpath="$compile_rpath $absdir" + *) func_append compile_rpath " $absdir" ;; esac ;; esac @@ -5080,7 +6743,7 @@ func_mode_link () *) case "$finalize_rpath " in *" $libdir "*) ;; - *) finalize_rpath="$finalize_rpath $libdir" + *) func_append finalize_rpath " $libdir" ;; esac ;; esac @@ -5099,7 +6762,7 @@ func_mode_link () elif test -n "$soname_spec"; then # bleh windows case $host in - *cygwin* | mingw*) + *cygwin* | mingw* | *cegcc*) func_arith $current - $age major=$func_arith_result versuffix="-$major" @@ -5134,7 +6797,7 @@ func_mode_link () linklib=$newlib fi # test -n "$old_archive_from_expsyms_cmds" - if test "$linkmode" = prog || test "$mode" != relink; then + if test "$linkmode" = prog || test "$opt_mode" != relink; then add_shlibpath= add_dir= add= @@ -5156,9 +6819,9 @@ func_mode_link () if test "X$dlopenmodule" != "X$lib"; then $ECHO "*** Warning: lib $linklib is a module, not a shared library" if test -z "$old_library" ; then - $ECHO - $ECHO "*** And there doesn't seem to be a static archive available" - $ECHO "*** The link will probably fail, sorry" + echo + echo "*** And there doesn't seem to be a static archive available" + echo "*** The link will probably fail, sorry" else add="$dir/$old_library" fi @@ -5185,12 +6848,12 @@ func_mode_link () test "$hardcode_direct_absolute" = no; then add="$dir/$linklib" elif test "$hardcode_minus_L" = yes; then - add_dir="-L$dir" + add_dir="-L$absdir" # Try looking first in the location we're being installed to. if test -n "$inst_prefix_dir"; then case $libdir in [\\/]*) - add_dir="$add_dir -L$inst_prefix_dir$libdir" + func_append add_dir " -L$inst_prefix_dir$libdir" ;; esac fi @@ -5212,7 +6875,7 @@ func_mode_link () if test -n "$add_shlibpath"; then case :$compile_shlibpath: in *":$add_shlibpath:"*) ;; - *) compile_shlibpath="$compile_shlibpath$add_shlibpath:" ;; + *) func_append compile_shlibpath "$add_shlibpath:" ;; esac fi if test "$linkmode" = prog; then @@ -5226,13 +6889,13 @@ func_mode_link () test "$hardcode_shlibpath_var" = yes; then case :$finalize_shlibpath: in *":$libdir:"*) ;; - *) finalize_shlibpath="$finalize_shlibpath$libdir:" ;; + *) func_append finalize_shlibpath "$libdir:" ;; esac fi fi fi - if test "$linkmode" = prog || test "$mode" = relink; then + if test "$linkmode" = prog || test "$opt_mode" = relink; then add_shlibpath= add_dir= add= @@ -5246,7 +6909,7 @@ func_mode_link () elif test "$hardcode_shlibpath_var" = yes; then case :$finalize_shlibpath: in *":$libdir:"*) ;; - *) finalize_shlibpath="$finalize_shlibpath$libdir:" ;; + *) func_append finalize_shlibpath "$libdir:" ;; esac add="-l$name" elif test "$hardcode_automatic" = yes; then @@ -5263,7 +6926,7 @@ func_mode_link () if test -n "$inst_prefix_dir"; then case $libdir in [\\/]*) - add_dir="$add_dir -L$inst_prefix_dir$libdir" + func_append add_dir " -L$inst_prefix_dir$libdir" ;; esac fi @@ -5298,21 +6961,21 @@ func_mode_link () # Just print a warning and add the library to dependency_libs so # that the program can be linked against the static library. - $ECHO + echo $ECHO "*** Warning: This system can not link to static lib archive $lib." - $ECHO "*** I have the capability to make that library automatically link in when" - $ECHO "*** you link to this library. But I can only do this if you have a" - $ECHO "*** shared version of the library, which you do not appear to have." + echo "*** I have the capability to make that library automatically link in when" + echo "*** you link to this library. But I can only do this if you have a" + echo "*** shared version of the library, which you do not appear to have." if test "$module" = yes; then - $ECHO "*** But as you try to build a module library, libtool will still create " - $ECHO "*** a static module, that should work as long as the dlopening application" - $ECHO "*** is linked with the -dlopen flag to resolve symbols at runtime." + echo "*** But as you try to build a module library, libtool will still create " + echo "*** a static module, that should work as long as the dlopening application" + echo "*** is linked with the -dlopen flag to resolve symbols at runtime." if test -z "$global_symbol_pipe"; then - $ECHO - $ECHO "*** However, this would only work if libtool was able to extract symbol" - $ECHO "*** lists from a program, using \`nm' or equivalent, but libtool could" - $ECHO "*** not find such a program. So, this module is probably useless." - $ECHO "*** \`nm' from GNU binutils and a full rebuild may help." + echo + echo "*** However, this would only work if libtool was able to extract symbol" + echo "*** lists from a program, using \`nm' or equivalent, but libtool could" + echo "*** not find such a program. So, this module is probably useless." + echo "*** \`nm' from GNU binutils and a full rebuild may help." fi if test "$build_old_libs" = no; then build_libtool_libs=module @@ -5340,37 +7003,46 @@ func_mode_link () temp_xrpath=$func_stripname_result case " $xrpath " in *" $temp_xrpath "*) ;; - *) xrpath="$xrpath $temp_xrpath";; + *) func_append xrpath " $temp_xrpath";; esac;; - *) temp_deplibs="$temp_deplibs $libdir";; + *) func_append temp_deplibs " $libdir";; esac done dependency_libs="$temp_deplibs" fi - newlib_search_path="$newlib_search_path $absdir" + func_append newlib_search_path " $absdir" # Link against this library test "$link_static" = no && newdependency_libs="$abs_ladir/$laname $newdependency_libs" # ... and its dependency_libs tmp_libs= for deplib in $dependency_libs; do newdependency_libs="$deplib $newdependency_libs" - if $opt_duplicate_deps ; then + case $deplib in + -L*) func_stripname '-L' '' "$deplib" + func_resolve_sysroot "$func_stripname_result";; + *) func_resolve_sysroot "$deplib" ;; + esac + if $opt_preserve_dup_deps ; then case "$tmp_libs " in - *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;; + *" $func_resolve_sysroot_result "*) + func_append specialdeplibs " $func_resolve_sysroot_result" ;; esac fi - tmp_libs="$tmp_libs $deplib" + func_append tmp_libs " $func_resolve_sysroot_result" done if test "$link_all_deplibs" != no; then # Add the search paths of all dependency libraries for deplib in $dependency_libs; do + path= case $deplib in -L*) path="$deplib" ;; *.la) + func_resolve_sysroot "$deplib" + deplib=$func_resolve_sysroot_result func_dirname "$deplib" "" "." - dir="$func_dirname_result" + dir=$func_dirname_result # We need an absolute path. case $dir in [\\/]* | [A-Za-z]:[\\/]*) absdir="$dir" ;; @@ -5397,8 +7069,8 @@ func_mode_link () if test -z "$darwin_install_name"; then darwin_install_name=`${OTOOL64} -L $depdepl | awk '{if (NR == 2) {print $1;exit}}'` fi - compiler_flags="$compiler_flags ${wl}-dylib_file ${wl}${darwin_install_name}:${depdepl}" - linker_flags="$linker_flags -dylib_file ${darwin_install_name}:${depdepl}" + func_append compiler_flags " ${wl}-dylib_file ${wl}${darwin_install_name}:${depdepl}" + func_append linker_flags " -dylib_file ${darwin_install_name}:${depdepl}" path= fi fi @@ -5431,7 +7103,7 @@ func_mode_link () compile_deplibs="$new_inherited_linker_flags $compile_deplibs" finalize_deplibs="$new_inherited_linker_flags $finalize_deplibs" else - compiler_flags="$compiler_flags "`$ECHO "X $new_inherited_linker_flags" | $Xsed -e 's% \([^ $]*\).ltframework% -framework \1%g'` + compiler_flags="$compiler_flags "`$ECHO " $new_inherited_linker_flags" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` fi fi dependency_libs="$newdependency_libs" @@ -5448,7 +7120,7 @@ func_mode_link () for dir in $newlib_search_path; do case "$lib_search_path " in *" $dir "*) ;; - *) lib_search_path="$lib_search_path $dir" ;; + *) func_append lib_search_path " $dir" ;; esac done newlib_search_path= @@ -5506,10 +7178,10 @@ func_mode_link () -L*) case " $tmp_libs " in *" $deplib "*) ;; - *) tmp_libs="$tmp_libs $deplib" ;; + *) func_append tmp_libs " $deplib" ;; esac ;; - *) tmp_libs="$tmp_libs $deplib" ;; + *) func_append tmp_libs " $deplib" ;; esac done eval $var=\"$tmp_libs\" @@ -5525,7 +7197,7 @@ func_mode_link () ;; esac if test -n "$i" ; then - tmp_libs="$tmp_libs $i" + func_append tmp_libs " $i" fi done dependency_libs=$tmp_libs @@ -5566,7 +7238,7 @@ func_mode_link () # Now set the variables for building old libraries. build_libtool_libs=no oldlibs="$output" - objs="$objs$old_deplibs" + func_append objs "$old_deplibs" ;; lib) @@ -5599,10 +7271,10 @@ func_mode_link () if test "$deplibs_check_method" != pass_all; then func_fatal_error "cannot build libtool library \`$output' from non-libtool objects on this host:$objs" else - $ECHO + echo $ECHO "*** Warning: Linking the shared library $output against the non-libtool" $ECHO "*** objects $objs is not portable!" - libobjs="$libobjs $objs" + func_append libobjs " $objs" fi fi @@ -5661,13 +7333,14 @@ func_mode_link () # which has an extra 1 added just for fun # case $version_type in + # correct linux to gnu/linux during the next big refactor darwin|linux|osf|windows|none) func_arith $number_major + $number_minor current=$func_arith_result age="$number_minor" revision="$number_revision" ;; - freebsd-aout|freebsd-elf|sunos) + freebsd-aout|freebsd-elf|qnx|sunos) current="$number_major" revision="$number_minor" age="0" @@ -5679,6 +7352,9 @@ func_mode_link () revision="$number_minor" lt_irix_increment=no ;; + *) + func_fatal_configuration "$modename: unknown library version type \`$version_type'" + ;; esac ;; no) @@ -5777,7 +7453,7 @@ func_mode_link () versuffix="$major.$revision" ;; - linux) + linux) # correct to gnu/linux during the next big refactor func_arith $current - $age major=.$func_arith_result versuffix="$major.$age.$revision" @@ -5800,7 +7476,7 @@ func_mode_link () done # Make executables depend on our current version. - verstring="$verstring:${current}.0" + func_append verstring ":${current}.0" ;; qnx) @@ -5868,17 +7544,17 @@ func_mode_link () fi func_generate_dlsyms "$libname" "$libname" "yes" - libobjs="$libobjs $symfileobj" + func_append libobjs " $symfileobj" test "X$libobjs" = "X " && libobjs= - if test "$mode" != relink; then + if test "$opt_mode" != relink; then # Remove our outputs, but don't remove object files since they # may have been created when compiling PIC objects. removelist= tempremovelist=`$ECHO "$output_objdir/*"` for p in $tempremovelist; do case $p in - *.$objext) + *.$objext | *.gcno) ;; $output_objdir/$outputname | $output_objdir/$libname.* | $output_objdir/${libname}${release}.*) if test "X$precious_files_regex" != "X"; then @@ -5887,7 +7563,7 @@ func_mode_link () continue fi fi - removelist="$removelist $p" + func_append removelist " $p" ;; *) ;; esac @@ -5898,27 +7574,28 @@ func_mode_link () # Now set the variables for building old libraries. if test "$build_old_libs" = yes && test "$build_libtool_libs" != convenience ; then - oldlibs="$oldlibs $output_objdir/$libname.$libext" + func_append oldlibs " $output_objdir/$libname.$libext" # Transform .lo files to .o files. - oldobjs="$objs "`$ECHO "X$libobjs" | $SP2NL | $Xsed -e '/\.'${libext}'$/d' -e "$lo2o" | $NL2SP` + oldobjs="$objs "`$ECHO "$libobjs" | $SP2NL | $SED "/\.${libext}$/d; $lo2o" | $NL2SP` fi # Eliminate all temporary directories. #for path in $notinst_path; do - # lib_search_path=`$ECHO "X$lib_search_path " | $Xsed -e "s% $path % %g"` - # deplibs=`$ECHO "X$deplibs " | $Xsed -e "s% -L$path % %g"` - # dependency_libs=`$ECHO "X$dependency_libs " | $Xsed -e "s% -L$path % %g"` + # lib_search_path=`$ECHO "$lib_search_path " | $SED "s% $path % %g"` + # deplibs=`$ECHO "$deplibs " | $SED "s% -L$path % %g"` + # dependency_libs=`$ECHO "$dependency_libs " | $SED "s% -L$path % %g"` #done if test -n "$xrpath"; then # If the user specified any rpath flags, then add them. temp_xrpath= for libdir in $xrpath; do - temp_xrpath="$temp_xrpath -R$libdir" + func_replace_sysroot "$libdir" + func_append temp_xrpath " -R$func_replace_sysroot_result" case "$finalize_rpath " in *" $libdir "*) ;; - *) finalize_rpath="$finalize_rpath $libdir" ;; + *) func_append finalize_rpath " $libdir" ;; esac done if test "$hardcode_into_libs" != yes || test "$build_old_libs" = yes; then @@ -5932,7 +7609,7 @@ func_mode_link () for lib in $old_dlfiles; do case " $dlprefiles $dlfiles " in *" $lib "*) ;; - *) dlfiles="$dlfiles $lib" ;; + *) func_append dlfiles " $lib" ;; esac done @@ -5942,19 +7619,19 @@ func_mode_link () for lib in $old_dlprefiles; do case "$dlprefiles " in *" $lib "*) ;; - *) dlprefiles="$dlprefiles $lib" ;; + *) func_append dlprefiles " $lib" ;; esac done if test "$build_libtool_libs" = yes; then if test -n "$rpath"; then case $host in - *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-beos*) + *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-beos* | *-cegcc* | *-*-haiku*) # these systems don't actually have a c library (as such)! ;; *-*-rhapsody* | *-*-darwin1.[012]) # Rhapsody C library is in the System framework - deplibs="$deplibs System.ltframework" + func_append deplibs " System.ltframework" ;; *-*-netbsd*) # Don't link with libc until the a.out ld.so is fixed. @@ -5971,7 +7648,7 @@ func_mode_link () *) # Add libc to deplibs on all other systems if necessary. if test "$build_libtool_need_lc" = "yes"; then - deplibs="$deplibs -lc" + func_append deplibs " -lc" fi ;; esac @@ -6020,7 +7697,7 @@ EOF if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then case " $predeps $postdeps " in *" $i "*) - newdeplibs="$newdeplibs $i" + func_append newdeplibs " $i" i="" ;; esac @@ -6031,21 +7708,21 @@ EOF set dummy $deplib_matches; shift deplib_match=$1 if test `expr "$ldd_output" : ".*$deplib_match"` -ne 0 ; then - newdeplibs="$newdeplibs $i" + func_append newdeplibs " $i" else droppeddeps=yes - $ECHO + echo $ECHO "*** Warning: dynamic linker does not accept needed library $i." - $ECHO "*** I have the capability to make that library automatically link in when" - $ECHO "*** you link to this library. But I can only do this if you have a" - $ECHO "*** shared version of the library, which I believe you do not have" - $ECHO "*** because a test_compile did reveal that the linker did not use it for" - $ECHO "*** its dynamic dependency list that programs get resolved with at runtime." + echo "*** I have the capability to make that library automatically link in when" + echo "*** you link to this library. But I can only do this if you have a" + echo "*** shared version of the library, which I believe you do not have" + echo "*** because a test_compile did reveal that the linker did not use it for" + echo "*** its dynamic dependency list that programs get resolved with at runtime." fi fi ;; *) - newdeplibs="$newdeplibs $i" + func_append newdeplibs " $i" ;; esac done @@ -6063,7 +7740,7 @@ EOF if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then case " $predeps $postdeps " in *" $i "*) - newdeplibs="$newdeplibs $i" + func_append newdeplibs " $i" i="" ;; esac @@ -6074,29 +7751,29 @@ EOF set dummy $deplib_matches; shift deplib_match=$1 if test `expr "$ldd_output" : ".*$deplib_match"` -ne 0 ; then - newdeplibs="$newdeplibs $i" + func_append newdeplibs " $i" else droppeddeps=yes - $ECHO + echo $ECHO "*** Warning: dynamic linker does not accept needed library $i." - $ECHO "*** I have the capability to make that library automatically link in when" - $ECHO "*** you link to this library. But I can only do this if you have a" - $ECHO "*** shared version of the library, which you do not appear to have" - $ECHO "*** because a test_compile did reveal that the linker did not use this one" - $ECHO "*** as a dynamic dependency that programs can get resolved with at runtime." + echo "*** I have the capability to make that library automatically link in when" + echo "*** you link to this library. But I can only do this if you have a" + echo "*** shared version of the library, which you do not appear to have" + echo "*** because a test_compile did reveal that the linker did not use this one" + echo "*** as a dynamic dependency that programs can get resolved with at runtime." fi fi else droppeddeps=yes - $ECHO + echo $ECHO "*** Warning! Library $i is needed by this library but I was not able to" - $ECHO "*** make it link in! You will probably need to install it or some" - $ECHO "*** library that it depends on before this library will be fully" - $ECHO "*** functional. Installing it before continuing would be even better." + echo "*** make it link in! You will probably need to install it or some" + echo "*** library that it depends on before this library will be fully" + echo "*** functional. Installing it before continuing would be even better." fi ;; *) - newdeplibs="$newdeplibs $i" + func_append newdeplibs " $i" ;; esac done @@ -6113,15 +7790,27 @@ EOF if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then case " $predeps $postdeps " in *" $a_deplib "*) - newdeplibs="$newdeplibs $a_deplib" + func_append newdeplibs " $a_deplib" a_deplib="" ;; esac fi if test -n "$a_deplib" ; then libname=`eval "\\$ECHO \"$libname_spec\""` + if test -n "$file_magic_glob"; then + libnameglob=`func_echo_all "$libname" | $SED -e $file_magic_glob` + else + libnameglob=$libname + fi + test "$want_nocaseglob" = yes && nocaseglob=`shopt -p nocaseglob` for i in $lib_search_path $sys_lib_search_path $shlib_search_path; do - potential_libs=`ls $i/$libname[.-]* 2>/dev/null` + if test "$want_nocaseglob" = yes; then + shopt -s nocaseglob + potential_libs=`ls $i/$libnameglob[.-]* 2>/dev/null` + $nocaseglob + else + potential_libs=`ls $i/$libnameglob[.-]* 2>/dev/null` + fi for potent_lib in $potential_libs; do # Follow soft links. if ls -lLd "$potent_lib" 2>/dev/null | @@ -6138,13 +7827,13 @@ EOF potliblink=`ls -ld $potlib | ${SED} 's/.* -> //'` case $potliblink in [\\/]* | [A-Za-z]:[\\/]*) potlib="$potliblink";; - *) potlib=`$ECHO "X$potlib" | $Xsed -e 's,[^/]*$,,'`"$potliblink";; + *) potlib=`$ECHO "$potlib" | $SED 's,[^/]*$,,'`"$potliblink";; esac done if eval $file_magic_cmd \"\$potlib\" 2>/dev/null | $SED -e 10q | $EGREP "$file_magic_regex" > /dev/null; then - newdeplibs="$newdeplibs $a_deplib" + func_append newdeplibs " $a_deplib" a_deplib="" break 2 fi @@ -6153,12 +7842,12 @@ EOF fi if test -n "$a_deplib" ; then droppeddeps=yes - $ECHO + echo $ECHO "*** Warning: linker path does not have real file for library $a_deplib." - $ECHO "*** I have the capability to make that library automatically link in when" - $ECHO "*** you link to this library. But I can only do this if you have a" - $ECHO "*** shared version of the library, which you do not appear to have" - $ECHO "*** because I did check the linker path looking for a file starting" + echo "*** I have the capability to make that library automatically link in when" + echo "*** you link to this library. But I can only do this if you have a" + echo "*** shared version of the library, which you do not appear to have" + echo "*** because I did check the linker path looking for a file starting" if test -z "$potlib" ; then $ECHO "*** with $libname but no candidates were found. (...for file magic test)" else @@ -6169,7 +7858,7 @@ EOF ;; *) # Add a -L argument. - newdeplibs="$newdeplibs $a_deplib" + func_append newdeplibs " $a_deplib" ;; esac done # Gone through all deplibs. @@ -6185,7 +7874,7 @@ EOF if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then case " $predeps $postdeps " in *" $a_deplib "*) - newdeplibs="$newdeplibs $a_deplib" + func_append newdeplibs " $a_deplib" a_deplib="" ;; esac @@ -6196,9 +7885,9 @@ EOF potential_libs=`ls $i/$libname[.-]* 2>/dev/null` for potent_lib in $potential_libs; do potlib="$potent_lib" # see symlink-check above in file_magic test - if eval "\$ECHO \"X$potent_lib\"" 2>/dev/null | $Xsed -e 10q | \ + if eval "\$ECHO \"$potent_lib\"" 2>/dev/null | $SED 10q | \ $EGREP "$match_pattern_regex" > /dev/null; then - newdeplibs="$newdeplibs $a_deplib" + func_append newdeplibs " $a_deplib" a_deplib="" break 2 fi @@ -6207,12 +7896,12 @@ EOF fi if test -n "$a_deplib" ; then droppeddeps=yes - $ECHO + echo $ECHO "*** Warning: linker path does not have real file for library $a_deplib." - $ECHO "*** I have the capability to make that library automatically link in when" - $ECHO "*** you link to this library. But I can only do this if you have a" - $ECHO "*** shared version of the library, which you do not appear to have" - $ECHO "*** because I did check the linker path looking for a file starting" + echo "*** I have the capability to make that library automatically link in when" + echo "*** you link to this library. But I can only do this if you have a" + echo "*** shared version of the library, which you do not appear to have" + echo "*** because I did check the linker path looking for a file starting" if test -z "$potlib" ; then $ECHO "*** with $libname but no candidates were found. (...for regex pattern test)" else @@ -6223,32 +7912,32 @@ EOF ;; *) # Add a -L argument. - newdeplibs="$newdeplibs $a_deplib" + func_append newdeplibs " $a_deplib" ;; esac done # Gone through all deplibs. ;; none | unknown | *) newdeplibs="" - tmp_deplibs=`$ECHO "X $deplibs" | $Xsed \ - -e 's/ -lc$//' -e 's/ -[LR][^ ]*//g'` + tmp_deplibs=`$ECHO " $deplibs" | $SED 's/ -lc$//; s/ -[LR][^ ]*//g'` if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then for i in $predeps $postdeps ; do # can't use Xsed below, because $i might contain '/' - tmp_deplibs=`$ECHO "X $tmp_deplibs" | $Xsed -e "s,$i,,"` + tmp_deplibs=`$ECHO " $tmp_deplibs" | $SED "s,$i,,"` done fi - if $ECHO "X $tmp_deplibs" | $Xsed -e 's/[ ]//g' | - $GREP . >/dev/null; then - $ECHO + case $tmp_deplibs in + *[!\ \ ]*) + echo if test "X$deplibs_check_method" = "Xnone"; then - $ECHO "*** Warning: inter-library dependencies are not supported in this platform." + echo "*** Warning: inter-library dependencies are not supported in this platform." else - $ECHO "*** Warning: inter-library dependencies are not known to be supported." + echo "*** Warning: inter-library dependencies are not known to be supported." fi - $ECHO "*** All declared inter-library dependencies are being dropped." + echo "*** All declared inter-library dependencies are being dropped." droppeddeps=yes - fi + ;; + esac ;; esac versuffix=$versuffix_save @@ -6260,23 +7949,23 @@ EOF case $host in *-*-rhapsody* | *-*-darwin1.[012]) # On Rhapsody replace the C library with the System framework - newdeplibs=`$ECHO "X $newdeplibs" | $Xsed -e 's/ -lc / System.ltframework /'` + newdeplibs=`$ECHO " $newdeplibs" | $SED 's/ -lc / System.ltframework /'` ;; esac if test "$droppeddeps" = yes; then if test "$module" = yes; then - $ECHO - $ECHO "*** Warning: libtool could not satisfy all declared inter-library" + echo + echo "*** Warning: libtool could not satisfy all declared inter-library" $ECHO "*** dependencies of module $libname. Therefore, libtool will create" - $ECHO "*** a static module, that should work as long as the dlopening" - $ECHO "*** application is linked with the -dlopen flag." + echo "*** a static module, that should work as long as the dlopening" + echo "*** application is linked with the -dlopen flag." if test -z "$global_symbol_pipe"; then - $ECHO - $ECHO "*** However, this would only work if libtool was able to extract symbol" - $ECHO "*** lists from a program, using \`nm' or equivalent, but libtool could" - $ECHO "*** not find such a program. So, this module is probably useless." - $ECHO "*** \`nm' from GNU binutils and a full rebuild may help." + echo + echo "*** However, this would only work if libtool was able to extract symbol" + echo "*** lists from a program, using \`nm' or equivalent, but libtool could" + echo "*** not find such a program. So, this module is probably useless." + echo "*** \`nm' from GNU binutils and a full rebuild may help." fi if test "$build_old_libs" = no; then oldlibs="$output_objdir/$libname.$libext" @@ -6286,16 +7975,16 @@ EOF build_libtool_libs=no fi else - $ECHO "*** The inter-library dependencies that have been dropped here will be" - $ECHO "*** automatically added whenever a program is linked with this library" - $ECHO "*** or is declared to -dlopen it." + echo "*** The inter-library dependencies that have been dropped here will be" + echo "*** automatically added whenever a program is linked with this library" + echo "*** or is declared to -dlopen it." if test "$allow_undefined" = no; then - $ECHO - $ECHO "*** Since this library must not contain undefined symbols," - $ECHO "*** because either the platform does not support them or" - $ECHO "*** it was explicitly requested with -no-undefined," - $ECHO "*** libtool will only create a static version of it." + echo + echo "*** Since this library must not contain undefined symbols," + echo "*** because either the platform does not support them or" + echo "*** it was explicitly requested with -no-undefined," + echo "*** libtool will only create a static version of it." if test "$build_old_libs" = no; then oldlibs="$output_objdir/$libname.$libext" build_libtool_libs=module @@ -6312,9 +8001,9 @@ EOF # Time to change all our "foo.ltframework" stuff back to "-framework foo" case $host in *-*-darwin*) - newdeplibs=`$ECHO "X $newdeplibs" | $Xsed -e 's% \([^ $]*\).ltframework% -framework \1%g'` - new_inherited_linker_flags=`$ECHO "X $new_inherited_linker_flags" | $Xsed -e 's% \([^ $]*\).ltframework% -framework \1%g'` - deplibs=`$ECHO "X $deplibs" | $Xsed -e 's% \([^ $]*\).ltframework% -framework \1%g'` + newdeplibs=`$ECHO " $newdeplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` + new_inherited_linker_flags=`$ECHO " $new_inherited_linker_flags" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` + deplibs=`$ECHO " $deplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` ;; esac @@ -6327,7 +8016,7 @@ EOF *) case " $deplibs " in *" -L$path/$objdir "*) - new_libs="$new_libs -L$path/$objdir" ;; + func_append new_libs " -L$path/$objdir" ;; esac ;; esac @@ -6337,10 +8026,10 @@ EOF -L*) case " $new_libs " in *" $deplib "*) ;; - *) new_libs="$new_libs $deplib" ;; + *) func_append new_libs " $deplib" ;; esac ;; - *) new_libs="$new_libs $deplib" ;; + *) func_append new_libs " $deplib" ;; esac done deplibs="$new_libs" @@ -6352,15 +8041,22 @@ EOF # Test again, we may have decided not to build it any more if test "$build_libtool_libs" = yes; then + # Remove ${wl} instances when linking with ld. + # FIXME: should test the right _cmds variable. + case $archive_cmds in + *\$LD\ *) wl= ;; + esac if test "$hardcode_into_libs" = yes; then # Hardcode the library paths hardcode_libdirs= dep_rpath= rpath="$finalize_rpath" - test "$mode" != relink && rpath="$compile_rpath$rpath" + test "$opt_mode" != relink && rpath="$compile_rpath$rpath" for libdir in $rpath; do if test -n "$hardcode_libdir_flag_spec"; then if test -n "$hardcode_libdir_separator"; then + func_replace_sysroot "$libdir" + libdir=$func_replace_sysroot_result if test -z "$hardcode_libdirs"; then hardcode_libdirs="$libdir" else @@ -6369,18 +8065,18 @@ EOF *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*) ;; *) - hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir" + func_append hardcode_libdirs "$hardcode_libdir_separator$libdir" ;; esac fi else eval flag=\"$hardcode_libdir_flag_spec\" - dep_rpath="$dep_rpath $flag" + func_append dep_rpath " $flag" fi elif test -n "$runpath_var"; then case "$perm_rpath " in *" $libdir "*) ;; - *) perm_rpath="$perm_rpath $libdir" ;; + *) func_append perm_rpath " $libdir" ;; esac fi done @@ -6388,17 +8084,13 @@ EOF if test -n "$hardcode_libdir_separator" && test -n "$hardcode_libdirs"; then libdir="$hardcode_libdirs" - if test -n "$hardcode_libdir_flag_spec_ld"; then - eval dep_rpath=\"$hardcode_libdir_flag_spec_ld\" - else - eval dep_rpath=\"$hardcode_libdir_flag_spec\" - fi + eval "dep_rpath=\"$hardcode_libdir_flag_spec\"" fi if test -n "$runpath_var" && test -n "$perm_rpath"; then # We should set the runpath_var. rpath= for dir in $perm_rpath; do - rpath="$rpath$dir:" + func_append rpath "$dir:" done eval "$runpath_var='$rpath\$$runpath_var'; export $runpath_var" fi @@ -6406,7 +8098,7 @@ EOF fi shlibpath="$finalize_shlibpath" - test "$mode" != relink && shlibpath="$compile_shlibpath$shlibpath" + test "$opt_mode" != relink && shlibpath="$compile_shlibpath$shlibpath" if test -n "$shlibpath"; then eval "$shlibpath_var='$shlibpath\$$shlibpath_var'; export $shlibpath_var" fi @@ -6432,23 +8124,23 @@ EOF linknames= for link do - linknames="$linknames $link" + func_append linknames " $link" done # Use standard objects if they are pic - test -z "$pic_flag" && libobjs=`$ECHO "X$libobjs" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP` + test -z "$pic_flag" && libobjs=`$ECHO "$libobjs" | $SP2NL | $SED "$lo2o" | $NL2SP` test "X$libobjs" = "X " && libobjs= delfiles= if test -n "$export_symbols" && test -n "$include_expsyms"; then $opt_dry_run || cp "$export_symbols" "$output_objdir/$libname.uexp" export_symbols="$output_objdir/$libname.uexp" - delfiles="$delfiles $export_symbols" + func_append delfiles " $export_symbols" fi orig_export_symbols= case $host_os in - cygwin* | mingw*) + cygwin* | mingw* | cegcc*) if test -n "$export_symbols" && test -z "$export_symbols_regex"; then # exporting using user supplied symfile if test "x`$SED 1q $export_symbols`" != xEXPORTS; then @@ -6474,13 +8166,45 @@ EOF $opt_dry_run || $RM $export_symbols cmds=$export_symbols_cmds save_ifs="$IFS"; IFS='~' - for cmd in $cmds; do + for cmd1 in $cmds; do IFS="$save_ifs" - eval cmd=\"$cmd\" - func_len " $cmd" - len=$func_len_result - if test "$len" -lt "$max_cmd_len" || test "$max_cmd_len" -le -1; then + # Take the normal branch if the nm_file_list_spec branch + # doesn't work or if tool conversion is not needed. + case $nm_file_list_spec~$to_tool_file_cmd in + *~func_convert_file_noop | *~func_convert_file_msys_to_w32 | ~*) + try_normal_branch=yes + eval cmd=\"$cmd1\" + func_len " $cmd" + len=$func_len_result + ;; + *) + try_normal_branch=no + ;; + esac + if test "$try_normal_branch" = yes \ + && { test "$len" -lt "$max_cmd_len" \ + || test "$max_cmd_len" -le -1; } + then + func_show_eval "$cmd" 'exit $?' + skipped_export=false + elif test -n "$nm_file_list_spec"; then + func_basename "$output" + output_la=$func_basename_result + save_libobjs=$libobjs + save_output=$output + output=${output_objdir}/${output_la}.nm + func_to_tool_file "$output" + libobjs=$nm_file_list_spec$func_to_tool_file_result + func_append delfiles " $output" + func_verbose "creating $NM input file list: $output" + for obj in $save_libobjs; do + func_to_tool_file "$obj" + $ECHO "$func_to_tool_file_result" + done > "$output" + eval cmd=\"$cmd1\" func_show_eval "$cmd" 'exit $?' + output=$save_output + libobjs=$save_libobjs skipped_export=false else # The command line is too long to execute in one step. @@ -6502,7 +8226,7 @@ EOF if test -n "$export_symbols" && test -n "$include_expsyms"; then tmp_export_symbols="$export_symbols" test -n "$orig_export_symbols" && tmp_export_symbols="$orig_export_symbols" - $opt_dry_run || eval '$ECHO "X$include_expsyms" | $Xsed | $SP2NL >> "$tmp_export_symbols"' + $opt_dry_run || eval '$ECHO "$include_expsyms" | $SP2NL >> "$tmp_export_symbols"' fi if test "X$skipped_export" != "X:" && test -n "$orig_export_symbols"; then @@ -6514,7 +8238,7 @@ EOF # global variables. join(1) would be nice here, but unfortunately # isn't a blessed tool. $opt_dry_run || $SED -e '/[ ,]DATA/!d;s,\(.*\)\([ \,].*\),s|^\1$|\1\2|,' < $export_symbols > $output_objdir/$libname.filter - delfiles="$delfiles $export_symbols $output_objdir/$libname.filter" + func_append delfiles " $export_symbols $output_objdir/$libname.filter" export_symbols=$output_objdir/$libname.def $opt_dry_run || $SED -f $output_objdir/$libname.filter < $orig_export_symbols > $export_symbols fi @@ -6524,7 +8248,7 @@ EOF case " $convenience " in *" $test_deplib "*) ;; *) - tmp_deplibs="$tmp_deplibs $test_deplib" + func_append tmp_deplibs " $test_deplib" ;; esac done @@ -6544,21 +8268,21 @@ EOF test "X$libobjs" = "X " && libobjs= else gentop="$output_objdir/${outputname}x" - generated="$generated $gentop" + func_append generated " $gentop" func_extract_archives $gentop $convenience - libobjs="$libobjs $func_extract_archives_result" + func_append libobjs " $func_extract_archives_result" test "X$libobjs" = "X " && libobjs= fi fi if test "$thread_safe" = yes && test -n "$thread_safe_flag_spec"; then eval flag=\"$thread_safe_flag_spec\" - linker_flags="$linker_flags $flag" + func_append linker_flags " $flag" fi # Make a backup of the uninstalled library when relinking - if test "$mode" = relink; then + if test "$opt_mode" = relink; then $opt_dry_run || eval '(cd $output_objdir && $RM ${realname}U && $MV $realname ${realname}U)' || exit $? fi @@ -6603,7 +8327,8 @@ EOF save_libobjs=$libobjs fi save_output=$output - output_la=`$ECHO "X$output" | $Xsed -e "$basename"` + func_basename "$output" + output_la=$func_basename_result # Clear the reloadable object creation command queue and # initialize k to one. @@ -6616,13 +8341,16 @@ EOF if test -n "$save_libobjs" && test "X$skipped_export" != "X:" && test "$with_gnu_ld" = yes; then output=${output_objdir}/${output_la}.lnkscript func_verbose "creating GNU ld script: $output" - $ECHO 'INPUT (' > $output + echo 'INPUT (' > $output for obj in $save_libobjs do - $ECHO "$obj" >> $output + func_to_tool_file "$obj" + $ECHO "$func_to_tool_file_result" >> $output done - $ECHO ')' >> $output - delfiles="$delfiles $output" + echo ')' >> $output + func_append delfiles " $output" + func_to_tool_file "$output" + output=$func_to_tool_file_result elif test -n "$save_libobjs" && test "X$skipped_export" != "X:" && test "X$file_list_spec" != X; then output=${output_objdir}/${output_la}.lnk func_verbose "creating linker input file list: $output" @@ -6636,10 +8364,12 @@ EOF fi for obj do - $ECHO "$obj" >> $output + func_to_tool_file "$obj" + $ECHO "$func_to_tool_file_result" >> $output done - delfiles="$delfiles $output" - output=$firstobj\"$file_list_spec$output\" + func_append delfiles " $output" + func_to_tool_file "$output" + output=$firstobj\"$file_list_spec$func_to_tool_file_result\" else if test -n "$save_libobjs"; then func_verbose "creating reloadable object files..." @@ -6663,17 +8393,19 @@ EOF # command to the queue. if test "$k" -eq 1 ; then # The first file doesn't have a previous command to add. - eval concat_cmds=\"$reload_cmds $objlist $last_robj\" + reload_objs=$objlist + eval concat_cmds=\"$reload_cmds\" else # All subsequent reloadable object files will link in # the last one created. - eval concat_cmds=\"\$concat_cmds~$reload_cmds $objlist $last_robj~\$RM $last_robj\" + reload_objs="$objlist $last_robj" + eval concat_cmds=\"\$concat_cmds~$reload_cmds~\$RM $last_robj\" fi last_robj=$output_objdir/$output_la-${k}.$objext func_arith $k + 1 k=$func_arith_result output=$output_objdir/$output_la-${k}.$objext - objlist=$obj + objlist=" $obj" func_len " $last_robj" func_arith $len0 + $func_len_result len=$func_arith_result @@ -6683,11 +8415,12 @@ EOF # reloadable object file. All subsequent reloadable object # files will link in the last one created. test -z "$concat_cmds" || concat_cmds=$concat_cmds~ - eval concat_cmds=\"\${concat_cmds}$reload_cmds $objlist $last_robj\" + reload_objs="$objlist $last_robj" + eval concat_cmds=\"\${concat_cmds}$reload_cmds\" if test -n "$last_robj"; then eval concat_cmds=\"\${concat_cmds}~\$RM $last_robj\" fi - delfiles="$delfiles $output" + func_append delfiles " $output" else output= @@ -6721,7 +8454,7 @@ EOF lt_exit=$? # Restore the uninstalled library and exit - if test "$mode" = relink; then + if test "$opt_mode" = relink; then ( cd "$output_objdir" && \ $RM "${realname}T" && \ $MV "${realname}U" "$realname" ) @@ -6742,7 +8475,7 @@ EOF if test -n "$export_symbols" && test -n "$include_expsyms"; then tmp_export_symbols="$export_symbols" test -n "$orig_export_symbols" && tmp_export_symbols="$orig_export_symbols" - $opt_dry_run || eval '$ECHO "X$include_expsyms" | $Xsed | $SP2NL >> "$tmp_export_symbols"' + $opt_dry_run || eval '$ECHO "$include_expsyms" | $SP2NL >> "$tmp_export_symbols"' fi if test -n "$orig_export_symbols"; then @@ -6754,7 +8487,7 @@ EOF # global variables. join(1) would be nice here, but unfortunately # isn't a blessed tool. $opt_dry_run || $SED -e '/[ ,]DATA/!d;s,\(.*\)\([ \,].*\),s|^\1$|\1\2|,' < $export_symbols > $output_objdir/$libname.filter - delfiles="$delfiles $export_symbols $output_objdir/$libname.filter" + func_append delfiles " $export_symbols $output_objdir/$libname.filter" export_symbols=$output_objdir/$libname.def $opt_dry_run || $SED -f $output_objdir/$libname.filter < $orig_export_symbols > $export_symbols fi @@ -6795,10 +8528,10 @@ EOF # Add any objects from preloaded convenience libraries if test -n "$dlprefiles"; then gentop="$output_objdir/${outputname}x" - generated="$generated $gentop" + func_append generated " $gentop" func_extract_archives $gentop $dlprefiles - libobjs="$libobjs $func_extract_archives_result" + func_append libobjs " $func_extract_archives_result" test "X$libobjs" = "X " && libobjs= fi @@ -6814,7 +8547,7 @@ EOF lt_exit=$? # Restore the uninstalled library and exit - if test "$mode" = relink; then + if test "$opt_mode" = relink; then ( cd "$output_objdir" && \ $RM "${realname}T" && \ $MV "${realname}U" "$realname" ) @@ -6826,7 +8559,7 @@ EOF IFS="$save_ifs" # Restore the uninstalled library and exit - if test "$mode" = relink; then + if test "$opt_mode" = relink; then $opt_dry_run || eval '(cd $output_objdir && $RM ${realname}T && $MV $realname ${realname}T && $MV ${realname}U $realname)' || exit $? if test -n "$convenience"; then @@ -6907,18 +8640,21 @@ EOF if test -n "$convenience"; then if test -n "$whole_archive_flag_spec"; then eval tmp_whole_archive_flags=\"$whole_archive_flag_spec\" - reload_conv_objs=$reload_objs\ `$ECHO "X$tmp_whole_archive_flags" | $Xsed -e 's|,| |g'` + reload_conv_objs=$reload_objs\ `$ECHO "$tmp_whole_archive_flags" | $SED 's|,| |g'` else gentop="$output_objdir/${obj}x" - generated="$generated $gentop" + func_append generated " $gentop" func_extract_archives $gentop $convenience reload_conv_objs="$reload_objs $func_extract_archives_result" fi fi + # If we're not building shared, we need to use non_pic_objs + test "$build_libtool_libs" != yes && libobjs="$non_pic_objects" + # Create the old-style object. - reload_objs="$objs$old_deplibs "`$ECHO "X$libobjs" | $SP2NL | $Xsed -e '/\.'${libext}$'/d' -e '/\.lib$/d' -e "$lo2o" | $NL2SP`" $reload_conv_objs" ### testsuite: skip nested quoting test + reload_objs="$objs$old_deplibs "`$ECHO "$libobjs" | $SP2NL | $SED "/\.${libext}$/d; /\.lib$/d; $lo2o" | $NL2SP`" $reload_conv_objs" ### testsuite: skip nested quoting test output="$obj" func_execute_cmds "$reload_cmds" 'exit $?' @@ -6978,8 +8714,8 @@ EOF case $host in *-*-rhapsody* | *-*-darwin1.[012]) # On Rhapsody replace the C library is the System framework - compile_deplibs=`$ECHO "X $compile_deplibs" | $Xsed -e 's/ -lc / System.ltframework /'` - finalize_deplibs=`$ECHO "X $finalize_deplibs" | $Xsed -e 's/ -lc / System.ltframework /'` + compile_deplibs=`$ECHO " $compile_deplibs" | $SED 's/ -lc / System.ltframework /'` + finalize_deplibs=`$ECHO " $finalize_deplibs" | $SED 's/ -lc / System.ltframework /'` ;; esac @@ -6990,14 +8726,14 @@ EOF if test "$tagname" = CXX ; then case ${MACOSX_DEPLOYMENT_TARGET-10.0} in 10.[0123]) - compile_command="$compile_command ${wl}-bind_at_load" - finalize_command="$finalize_command ${wl}-bind_at_load" + func_append compile_command " ${wl}-bind_at_load" + func_append finalize_command " ${wl}-bind_at_load" ;; esac fi # Time to change all our "foo.ltframework" stuff back to "-framework foo" - compile_deplibs=`$ECHO "X $compile_deplibs" | $Xsed -e 's% \([^ $]*\).ltframework% -framework \1%g'` - finalize_deplibs=`$ECHO "X $finalize_deplibs" | $Xsed -e 's% \([^ $]*\).ltframework% -framework \1%g'` + compile_deplibs=`$ECHO " $compile_deplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` + finalize_deplibs=`$ECHO " $finalize_deplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` ;; esac @@ -7011,7 +8747,7 @@ EOF *) case " $compile_deplibs " in *" -L$path/$objdir "*) - new_libs="$new_libs -L$path/$objdir" ;; + func_append new_libs " -L$path/$objdir" ;; esac ;; esac @@ -7021,17 +8757,17 @@ EOF -L*) case " $new_libs " in *" $deplib "*) ;; - *) new_libs="$new_libs $deplib" ;; + *) func_append new_libs " $deplib" ;; esac ;; - *) new_libs="$new_libs $deplib" ;; + *) func_append new_libs " $deplib" ;; esac done compile_deplibs="$new_libs" - compile_command="$compile_command $compile_deplibs" - finalize_command="$finalize_command $finalize_deplibs" + func_append compile_command " $compile_deplibs" + func_append finalize_command " $finalize_deplibs" if test -n "$rpath$xrpath"; then # If the user specified any rpath flags, then add them. @@ -7039,7 +8775,7 @@ EOF # This is the magic to use -rpath. case "$finalize_rpath " in *" $libdir "*) ;; - *) finalize_rpath="$finalize_rpath $libdir" ;; + *) func_append finalize_rpath " $libdir" ;; esac done fi @@ -7058,30 +8794,32 @@ EOF *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*) ;; *) - hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir" + func_append hardcode_libdirs "$hardcode_libdir_separator$libdir" ;; esac fi else eval flag=\"$hardcode_libdir_flag_spec\" - rpath="$rpath $flag" + func_append rpath " $flag" fi elif test -n "$runpath_var"; then case "$perm_rpath " in *" $libdir "*) ;; - *) perm_rpath="$perm_rpath $libdir" ;; + *) func_append perm_rpath " $libdir" ;; esac fi case $host in - *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2*) + *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*) testbindir=`${ECHO} "$libdir" | ${SED} -e 's*/lib$*/bin*'` case :$dllsearchpath: in *":$libdir:"*) ;; - *) dllsearchpath="$dllsearchpath:$libdir";; + ::) dllsearchpath=$libdir;; + *) func_append dllsearchpath ":$libdir";; esac case :$dllsearchpath: in *":$testbindir:"*) ;; - *) dllsearchpath="$dllsearchpath:$testbindir";; + ::) dllsearchpath=$testbindir;; + *) func_append dllsearchpath ":$testbindir";; esac ;; esac @@ -7107,18 +8845,18 @@ EOF *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*) ;; *) - hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir" + func_append hardcode_libdirs "$hardcode_libdir_separator$libdir" ;; esac fi else eval flag=\"$hardcode_libdir_flag_spec\" - rpath="$rpath $flag" + func_append rpath " $flag" fi elif test -n "$runpath_var"; then case "$finalize_perm_rpath " in *" $libdir "*) ;; - *) finalize_perm_rpath="$finalize_perm_rpath $libdir" ;; + *) func_append finalize_perm_rpath " $libdir" ;; esac fi done @@ -7132,8 +8870,8 @@ EOF if test -n "$libobjs" && test "$build_old_libs" = yes; then # Transform all the library objects into standard objects. - compile_command=`$ECHO "X$compile_command" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP` - finalize_command=`$ECHO "X$finalize_command" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP` + compile_command=`$ECHO "$compile_command" | $SP2NL | $SED "$lo2o" | $NL2SP` + finalize_command=`$ECHO "$finalize_command" | $SP2NL | $SED "$lo2o" | $NL2SP` fi func_generate_dlsyms "$outputname" "@PROGRAM@" "no" @@ -7145,6 +8883,10 @@ EOF wrappers_required=yes case $host in + *cegcc* | *mingw32ce*) + # Disable wrappers for cegcc and mingw32ce hosts, we are cross compiling anyway. + wrappers_required=no + ;; *cygwin* | *mingw* ) if test "$build_libtool_libs" != yes; then wrappers_required=no @@ -7158,13 +8900,19 @@ EOF esac if test "$wrappers_required" = no; then # Replace the output file specification. - compile_command=`$ECHO "X$compile_command" | $Xsed -e 's%@OUTPUT@%'"$output"'%g'` + compile_command=`$ECHO "$compile_command" | $SED 's%@OUTPUT@%'"$output"'%g'` link_command="$compile_command$compile_rpath" # We have no uninstalled library dependencies, so finalize right now. exit_status=0 func_show_eval "$link_command" 'exit_status=$?' + if test -n "$postlink_cmds"; then + func_to_tool_file "$output" + postlink_cmds=`func_echo_all "$postlink_cmds" | $SED -e 's%@OUTPUT@%'"$output"'%g' -e 's%@TOOL_OUTPUT@%'"$func_to_tool_file_result"'%g'` + func_execute_cmds "$postlink_cmds" 'exit $?' + fi + # Delete the generated files. if test -f "$output_objdir/${outputname}S.${objext}"; then func_show_eval '$RM "$output_objdir/${outputname}S.${objext}"' @@ -7187,7 +8935,7 @@ EOF # We should set the runpath_var. rpath= for dir in $perm_rpath; do - rpath="$rpath$dir:" + func_append rpath "$dir:" done compile_var="$runpath_var=\"$rpath\$$runpath_var\" " fi @@ -7195,7 +8943,7 @@ EOF # We should set the runpath_var. rpath= for dir in $finalize_perm_rpath; do - rpath="$rpath$dir:" + func_append rpath "$dir:" done finalize_var="$runpath_var=\"$rpath\$$runpath_var\" " fi @@ -7205,11 +8953,18 @@ EOF # We don't need to create a wrapper script. link_command="$compile_var$compile_command$compile_rpath" # Replace the output file specification. - link_command=`$ECHO "X$link_command" | $Xsed -e 's%@OUTPUT@%'"$output"'%g'` + link_command=`$ECHO "$link_command" | $SED 's%@OUTPUT@%'"$output"'%g'` # Delete the old output file. $opt_dry_run || $RM $output # Link the executable and exit func_show_eval "$link_command" 'exit $?' + + if test -n "$postlink_cmds"; then + func_to_tool_file "$output" + postlink_cmds=`func_echo_all "$postlink_cmds" | $SED -e 's%@OUTPUT@%'"$output"'%g' -e 's%@TOOL_OUTPUT@%'"$func_to_tool_file_result"'%g'` + func_execute_cmds "$postlink_cmds" 'exit $?' + fi + exit $EXIT_SUCCESS fi @@ -7224,7 +8979,7 @@ EOF if test "$fast_install" != no; then link_command="$finalize_var$compile_command$finalize_rpath" if test "$fast_install" = yes; then - relink_command=`$ECHO "X$compile_var$compile_command$compile_rpath" | $Xsed -e 's%@OUTPUT@%\$progdir/\$file%g'` + relink_command=`$ECHO "$compile_var$compile_command$compile_rpath" | $SED 's%@OUTPUT@%\$progdir/\$file%g'` else # fast_install is set to needless relink_command= @@ -7236,13 +8991,19 @@ EOF fi # Replace the output file specification. - link_command=`$ECHO "X$link_command" | $Xsed -e 's%@OUTPUT@%'"$output_objdir/$outputname"'%g'` + link_command=`$ECHO "$link_command" | $SED 's%@OUTPUT@%'"$output_objdir/$outputname"'%g'` # Delete the old output files. $opt_dry_run || $RM $output $output_objdir/$outputname $output_objdir/lt-$outputname func_show_eval "$link_command" 'exit $?' + if test -n "$postlink_cmds"; then + func_to_tool_file "$output_objdir/$outputname" + postlink_cmds=`func_echo_all "$postlink_cmds" | $SED -e 's%@OUTPUT@%'"$output_objdir/$outputname"'%g' -e 's%@TOOL_OUTPUT@%'"$func_to_tool_file_result"'%g'` + func_execute_cmds "$postlink_cmds" 'exit $?' + fi + # Now create the wrapper script. func_verbose "creating $output" @@ -7260,18 +9021,7 @@ EOF fi done relink_command="(cd `pwd`; $relink_command)" - relink_command=`$ECHO "X$relink_command" | $Xsed -e "$sed_quote_subst"` - fi - - # Quote $ECHO for shipping. - if test "X$ECHO" = "X$SHELL $progpath --fallback-echo"; then - case $progpath in - [\\/]* | [A-Za-z]:[\\/]*) qecho="$SHELL $progpath --fallback-echo";; - *) qecho="$SHELL `pwd`/$progpath --fallback-echo";; - esac - qecho=`$ECHO "X$qecho" | $Xsed -e "$sed_quote_subst"` - else - qecho=`$ECHO "X$ECHO" | $Xsed -e "$sed_quote_subst"` + relink_command=`$ECHO "$relink_command" | $SED "$sed_quote_subst"` fi # Only actually do things if not in dry run mode. @@ -7302,11 +9052,10 @@ EOF func_emit_cwrapperexe_src > $cwrappersource - # we should really use a build-platform specific compiler - # here, but OTOH, the wrappers (shell script and this C one) - # are only useful if you want to execute the "real" binary. - # Since the "real" binary is built for $host, then this - # wrapper might as well be built for $host, too. + # The wrapper executable is built using the $host compiler, + # because it contains $host paths and files. If cross- + # compiling, it, like the target executable, must be + # executed on the $host or under an emulation environment. $opt_dry_run || { $LTCC $LTCFLAGS -o $cwrapper $cwrappersource $STRIP $cwrapper @@ -7352,7 +9101,7 @@ EOF else oldobjs="$old_deplibs $non_pic_objects" if test "$preload" = yes && test -f "$symfileobj"; then - oldobjs="$oldobjs $symfileobj" + func_append oldobjs " $symfileobj" fi fi addlibs="$old_convenience" @@ -7360,10 +9109,10 @@ EOF if test -n "$addlibs"; then gentop="$output_objdir/${outputname}x" - generated="$generated $gentop" + func_append generated " $gentop" func_extract_archives $gentop $addlibs - oldobjs="$oldobjs $func_extract_archives_result" + func_append oldobjs " $func_extract_archives_result" fi # Do each command in the archive commands. @@ -7374,10 +9123,10 @@ EOF # Add any objects from preloaded convenience libraries if test -n "$dlprefiles"; then gentop="$output_objdir/${outputname}x" - generated="$generated $gentop" + func_append generated " $gentop" func_extract_archives $gentop $dlprefiles - oldobjs="$oldobjs $func_extract_archives_result" + func_append oldobjs " $func_extract_archives_result" fi # POSIX demands no paths to be encoded in archives. We have @@ -7393,9 +9142,9 @@ EOF done | sort | sort -uc >/dev/null 2>&1); then : else - $ECHO "copying selected object files to avoid basename conflicts..." + echo "copying selected object files to avoid basename conflicts..." gentop="$output_objdir/${outputname}x" - generated="$generated $gentop" + func_append generated " $gentop" func_mkdir_p "$gentop" save_oldobjs=$oldobjs oldobjs= @@ -7419,18 +9168,30 @@ EOF esac done func_show_eval "ln $obj $gentop/$newobj || cp $obj $gentop/$newobj" - oldobjs="$oldobjs $gentop/$newobj" + func_append oldobjs " $gentop/$newobj" ;; - *) oldobjs="$oldobjs $obj" ;; + *) func_append oldobjs " $obj" ;; esac done fi + func_to_tool_file "$oldlib" func_convert_file_msys_to_w32 + tool_oldlib=$func_to_tool_file_result eval cmds=\"$old_archive_cmds\" func_len " $cmds" len=$func_len_result if test "$len" -lt "$max_cmd_len" || test "$max_cmd_len" -le -1; then cmds=$old_archive_cmds + elif test -n "$archiver_list_spec"; then + func_verbose "using command file archive linking..." + for obj in $oldobjs + do + func_to_tool_file "$obj" + $ECHO "$func_to_tool_file_result" + done > $output_objdir/$libname.libcmd + func_to_tool_file "$output_objdir/$libname.libcmd" + oldobjs=" $archiver_list_spec$func_to_tool_file_result" + cmds=$old_archive_cmds else # the command line is too long to link in one step, link in parts func_verbose "using piecewise archive linking..." @@ -7504,7 +9265,7 @@ EOF done # Quote the link command for shipping. relink_command="(cd `pwd`; $SHELL $progpath $preserve_args --mode=relink $libtool_args @inst_prefix_dir@)" - relink_command=`$ECHO "X$relink_command" | $Xsed -e "$sed_quote_subst"` + relink_command=`$ECHO "$relink_command" | $SED "$sed_quote_subst"` if test "$hardcode_automatic" = yes ; then relink_command= fi @@ -7524,12 +9285,23 @@ EOF *.la) func_basename "$deplib" name="$func_basename_result" - eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $deplib` + func_resolve_sysroot "$deplib" + eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $func_resolve_sysroot_result` test -z "$libdir" && \ func_fatal_error "\`$deplib' is not a valid libtool archive" - newdependency_libs="$newdependency_libs $libdir/$name" + func_append newdependency_libs " ${lt_sysroot:+=}$libdir/$name" + ;; + -L*) + func_stripname -L '' "$deplib" + func_replace_sysroot "$func_stripname_result" + func_append newdependency_libs " -L$func_replace_sysroot_result" ;; - *) newdependency_libs="$newdependency_libs $deplib" ;; + -R*) + func_stripname -R '' "$deplib" + func_replace_sysroot "$func_stripname_result" + func_append newdependency_libs " -R$func_replace_sysroot_result" + ;; + *) func_append newdependency_libs " $deplib" ;; esac done dependency_libs="$newdependency_libs" @@ -7543,9 +9315,9 @@ EOF eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $lib` test -z "$libdir" && \ func_fatal_error "\`$lib' is not a valid libtool archive" - newdlfiles="$newdlfiles $libdir/$name" + func_append newdlfiles " ${lt_sysroot:+=}$libdir/$name" ;; - *) newdlfiles="$newdlfiles $lib" ;; + *) func_append newdlfiles " $lib" ;; esac done dlfiles="$newdlfiles" @@ -7562,7 +9334,7 @@ EOF eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $lib` test -z "$libdir" && \ func_fatal_error "\`$lib' is not a valid libtool archive" - newdlprefiles="$newdlprefiles $libdir/$name" + func_append newdlprefiles " ${lt_sysroot:+=}$libdir/$name" ;; esac done @@ -7574,7 +9346,7 @@ EOF [\\/]* | [A-Za-z]:[\\/]*) abs="$lib" ;; *) abs=`pwd`"/$lib" ;; esac - newdlfiles="$newdlfiles $abs" + func_append newdlfiles " $abs" done dlfiles="$newdlfiles" newdlprefiles= @@ -7583,15 +9355,33 @@ EOF [\\/]* | [A-Za-z]:[\\/]*) abs="$lib" ;; *) abs=`pwd`"/$lib" ;; esac - newdlprefiles="$newdlprefiles $abs" + func_append newdlprefiles " $abs" done dlprefiles="$newdlprefiles" fi $RM $output # place dlname in correct position for cygwin + # In fact, it would be nice if we could use this code for all target + # systems that can't hard-code library paths into their executables + # and that have no shared library path variable independent of PATH, + # but it turns out we can't easily determine that from inspecting + # libtool variables, so we have to hard-code the OSs to which it + # applies here; at the moment, that means platforms that use the PE + # object format with DLL files. See the long comment at the top of + # tests/bindir.at for full details. tdlname=$dlname case $host,$output,$installed,$module,$dlname in - *cygwin*,*lai,yes,no,*.dll | *mingw*,*lai,yes,no,*.dll) tdlname=../bin/$dlname ;; + *cygwin*,*lai,yes,no,*.dll | *mingw*,*lai,yes,no,*.dll | *cegcc*,*lai,yes,no,*.dll) + # If a -bindir argument was supplied, place the dll there. + if test "x$bindir" != x ; + then + func_relative_path "$install_libdir" "$bindir" + tdlname=$func_relative_path_result$dlname + else + # Otherwise fall back on heuristic. + tdlname=../bin/$dlname + fi + ;; esac $ECHO > $output "\ # $outputname - a libtool library file @@ -7650,7 +9440,7 @@ relink_command=\"$relink_command\"" exit $EXIT_SUCCESS } -{ test "$mode" = link || test "$mode" = relink; } && +{ test "$opt_mode" = link || test "$opt_mode" = relink; } && func_mode_link ${1+"$@"} @@ -7670,9 +9460,9 @@ func_mode_uninstall () for arg do case $arg in - -f) RM="$RM $arg"; rmforce=yes ;; - -*) RM="$RM $arg" ;; - *) files="$files $arg" ;; + -f) func_append RM " $arg"; rmforce=yes ;; + -*) func_append RM " $arg" ;; + *) func_append files " $arg" ;; esac done @@ -7681,24 +9471,23 @@ func_mode_uninstall () rmdirs= - origobjdir="$objdir" for file in $files; do func_dirname "$file" "" "." dir="$func_dirname_result" if test "X$dir" = X.; then - objdir="$origobjdir" + odir="$objdir" else - objdir="$dir/$origobjdir" + odir="$dir/$objdir" fi func_basename "$file" name="$func_basename_result" - test "$mode" = uninstall && objdir="$dir" + test "$opt_mode" = uninstall && odir="$dir" - # Remember objdir for removal later, being careful to avoid duplicates - if test "$mode" = clean; then + # Remember odir for removal later, being careful to avoid duplicates + if test "$opt_mode" = clean; then case " $rmdirs " in - *" $objdir "*) ;; - *) rmdirs="$rmdirs $objdir" ;; + *" $odir "*) ;; + *) func_append rmdirs " $odir" ;; esac fi @@ -7724,18 +9513,17 @@ func_mode_uninstall () # Delete the libtool libraries and symlinks. for n in $library_names; do - rmfiles="$rmfiles $objdir/$n" + func_append rmfiles " $odir/$n" done - test -n "$old_library" && rmfiles="$rmfiles $objdir/$old_library" + test -n "$old_library" && func_append rmfiles " $odir/$old_library" - case "$mode" in + case "$opt_mode" in clean) - case " $library_names " in - # " " in the beginning catches empty $dlname + case " $library_names " in *" $dlname "*) ;; - *) rmfiles="$rmfiles $objdir/$dlname" ;; + *) test -n "$dlname" && func_append rmfiles " $odir/$dlname" ;; esac - test -n "$libdir" && rmfiles="$rmfiles $objdir/$name $objdir/${name}i" + test -n "$libdir" && func_append rmfiles " $odir/$name $odir/${name}i" ;; uninstall) if test -n "$library_names"; then @@ -7763,19 +9551,19 @@ func_mode_uninstall () # Add PIC object to the list of files to remove. if test -n "$pic_object" && test "$pic_object" != none; then - rmfiles="$rmfiles $dir/$pic_object" + func_append rmfiles " $dir/$pic_object" fi # Add non-PIC object to the list of files to remove. if test -n "$non_pic_object" && test "$non_pic_object" != none; then - rmfiles="$rmfiles $dir/$non_pic_object" + func_append rmfiles " $dir/$non_pic_object" fi fi ;; *) - if test "$mode" = clean ; then + if test "$opt_mode" = clean ; then noexename=$name case $file in *.exe) @@ -7785,7 +9573,7 @@ func_mode_uninstall () noexename=$func_stripname_result # $file with .exe has already been added to rmfiles, # add $file without .exe - rmfiles="$rmfiles $file" + func_append rmfiles " $file" ;; esac # Do a test to see if this is a libtool program. @@ -7794,7 +9582,7 @@ func_mode_uninstall () func_ltwrapper_scriptname "$file" relink_command= func_source $func_ltwrapper_scriptname_result - rmfiles="$rmfiles $func_ltwrapper_scriptname_result" + func_append rmfiles " $func_ltwrapper_scriptname_result" else relink_command= func_source $dir/$noexename @@ -7802,12 +9590,12 @@ func_mode_uninstall () # note $name still contains .exe if it was in $file originally # as does the version of $file that was added into $rmfiles - rmfiles="$rmfiles $objdir/$name $objdir/${name}S.${objext}" + func_append rmfiles " $odir/$name $odir/${name}S.${objext}" if test "$fast_install" = yes && test -n "$relink_command"; then - rmfiles="$rmfiles $objdir/lt-$name" + func_append rmfiles " $odir/lt-$name" fi if test "X$noexename" != "X$name" ; then - rmfiles="$rmfiles $objdir/lt-${noexename}.c" + func_append rmfiles " $odir/lt-${noexename}.c" fi fi fi @@ -7815,7 +9603,6 @@ func_mode_uninstall () esac func_show_eval "$RM $rmfiles" 'exit_status=1' done - objdir="$origobjdir" # Try to remove the ${objdir}s in the directories where we deleted files for dir in $rmdirs; do @@ -7827,16 +9614,16 @@ func_mode_uninstall () exit $exit_status } -{ test "$mode" = uninstall || test "$mode" = clean; } && +{ test "$opt_mode" = uninstall || test "$opt_mode" = clean; } && func_mode_uninstall ${1+"$@"} -test -z "$mode" && { +test -z "$opt_mode" && { help="$generic_help" func_fatal_help "you must specify a MODE" } test -z "$exec_cmd" && \ - func_fatal_help "invalid operation mode \`$mode'" + func_fatal_help "invalid operation mode \`$opt_mode'" if test -n "$exec_cmd"; then eval exec "$exec_cmd" diff --git a/cpp/thirdparty/protobuf-2.3.0/m4/ac_system_extensions.m4 b/cpp/thirdparty/protobuf-2.5.0/m4/ac_system_extensions.m4 similarity index 100% rename from cpp/thirdparty/protobuf-2.3.0/m4/ac_system_extensions.m4 rename to cpp/thirdparty/protobuf-2.5.0/m4/ac_system_extensions.m4 diff --git a/cpp/thirdparty/protobuf-2.3.0/m4/acx_check_suncc.m4 b/cpp/thirdparty/protobuf-2.5.0/m4/acx_check_suncc.m4 similarity index 100% rename from cpp/thirdparty/protobuf-2.3.0/m4/acx_check_suncc.m4 rename to cpp/thirdparty/protobuf-2.5.0/m4/acx_check_suncc.m4 diff --git a/cpp/thirdparty/protobuf-2.3.0/m4/acx_pthread.m4 b/cpp/thirdparty/protobuf-2.5.0/m4/acx_pthread.m4 similarity index 92% rename from cpp/thirdparty/protobuf-2.3.0/m4/acx_pthread.m4 rename to cpp/thirdparty/protobuf-2.5.0/m4/acx_pthread.m4 index 2cf20de14..89d42c744 100644 --- a/cpp/thirdparty/protobuf-2.3.0/m4/acx_pthread.m4 +++ b/cpp/thirdparty/protobuf-2.5.0/m4/acx_pthread.m4 @@ -340,6 +340,40 @@ if test "x$acx_pthread_ok" = xyes; then acx_pthread_ok=no fi + AC_MSG_CHECKING([whether what we have so far is sufficient with -nostdlib]) + CFLAGS="-nostdlib $CFLAGS" + # we need c with nostdlib + LIBS="$LIBS -lc" + AC_TRY_LINK([#include ], + [pthread_t th; pthread_join(th, 0); + pthread_attr_init(0); pthread_cleanup_push(0, 0); + pthread_create(0,0,0,0); pthread_cleanup_pop(0); ], + [done=yes],[done=no]) + + if test "x$done" = xyes; then + AC_MSG_RESULT([yes]) + else + AC_MSG_RESULT([no]) + fi + + if test x"$done" = xno; then + AC_MSG_CHECKING([whether -lpthread saves the day]) + LIBS="-lpthread $LIBS" + AC_TRY_LINK([#include ], + [pthread_t th; pthread_join(th, 0); + pthread_attr_init(0); pthread_cleanup_push(0, 0); + pthread_create(0,0,0,0); pthread_cleanup_pop(0); ], + [done=yes],[done=no]) + + if test "x$done" = xyes; then + AC_MSG_RESULT([yes]) + PTHREAD_LIBS="$PTHREAD_LIBS -lpthread" + else + AC_MSG_RESULT([no]) + AC_MSG_WARN([Impossible to determine how to use pthreads with shared libraries and -nostdlib]) + fi + fi + CFLAGS="$save_CFLAGS" LIBS="$save_LIBS" CC="$save_CC" diff --git a/cpp/thirdparty/protobuf-2.3.0/gtest/aclocal.m4 b/cpp/thirdparty/protobuf-2.5.0/m4/libtool.m4 similarity index 70% rename from cpp/thirdparty/protobuf-2.3.0/gtest/aclocal.m4 rename to cpp/thirdparty/protobuf-2.5.0/m4/libtool.m4 index 43cf59cbc..828104cfd 100644 --- a/cpp/thirdparty/protobuf-2.3.0/gtest/aclocal.m4 +++ b/cpp/thirdparty/protobuf-2.5.0/m4/libtool.m4 @@ -1,28 +1,8 @@ -# generated automatically by aclocal 1.10.1 -*- Autoconf -*- - -# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, -# 2005, 2006, 2007, 2008 Free Software Foundation, Inc. -# This file is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY, to the extent permitted by law; without -# even the implied warranty of MERCHANTABILITY or FITNESS FOR A -# PARTICULAR PURPOSE. - -m4_ifndef([AC_AUTOCONF_VERSION], - [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl -m4_if(AC_AUTOCONF_VERSION, [2.61],, -[m4_warning([this file was generated for autoconf 2.61. -You have another version of autoconf. It may work, but is not guaranteed to. -If you have problems, you may need to regenerate the build system entirely. -To do so, use the procedure documented by the package, typically `autoreconf'.])]) - # libtool.m4 - Configure libtool for the host system. -*-Autoconf-*- # # Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005, -# 2006, 2007, 2008 Free Software Foundation, Inc. +# 2006, 2007, 2008, 2009, 2010, 2011 Free Software +# Foundation, Inc. # Written by Gordon Matzigkeit, 1996 # # This file is free software; the Free Software Foundation gives @@ -31,7 +11,8 @@ To do so, use the procedure documented by the package, typically `autoreconf'.]) m4_define([_LT_COPYING], [dnl # Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005, -# 2006, 2007, 2008 Free Software Foundation, Inc. +# 2006, 2007, 2008, 2009, 2010, 2011 Free Software +# Foundation, Inc. # Written by Gordon Matzigkeit, 1996 # # This file is part of GNU Libtool. @@ -58,7 +39,7 @@ m4_define([_LT_COPYING], [dnl # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. ]) -# serial 56 LT_INIT +# serial 57 LT_INIT # LT_PREREQ(VERSION) @@ -87,6 +68,7 @@ esac # ------------------ AC_DEFUN([LT_INIT], [AC_PREREQ([2.58])dnl We use AC_INCLUDES_DEFAULT +AC_REQUIRE([AC_CONFIG_AUX_DIR_DEFAULT])dnl AC_BEFORE([$0], [LT_LANG])dnl AC_BEFORE([$0], [LT_OUTPUT])dnl AC_BEFORE([$0], [LTDL_INIT])dnl @@ -103,6 +85,8 @@ AC_REQUIRE([LTVERSION_VERSION])dnl AC_REQUIRE([LTOBSOLETE_VERSION])dnl m4_require([_LT_PROG_LTMAIN])dnl +_LT_SHELL_INIT([SHELL=${CONFIG_SHELL-/bin/sh}]) + dnl Parse OPTIONS _LT_SET_OPTIONS([$0], [$1]) @@ -139,7 +123,7 @@ m4_defun([_LT_CC_BASENAME], *) break;; esac done -cc_basename=`$ECHO "X$cc_temp" | $Xsed -e 's%.*/%%' -e "s%^$host_alias-%%"` +cc_basename=`$ECHO "$cc_temp" | $SED "s%.*/%%; s%^$host_alias-%%"` ]) @@ -159,6 +143,11 @@ m4_defun([_LT_FILEUTILS_DEFAULTS], m4_defun([_LT_SETUP], [AC_REQUIRE([AC_CANONICAL_HOST])dnl AC_REQUIRE([AC_CANONICAL_BUILD])dnl +AC_REQUIRE([_LT_PREPARE_SED_QUOTE_VARS])dnl +AC_REQUIRE([_LT_PROG_ECHO_BACKSLASH])dnl + +_LT_DECL([], [PATH_SEPARATOR], [1], [The PATH separator for the build system])dnl +dnl _LT_DECL([], [host_alias], [0], [The host system])dnl _LT_DECL([], [host], [0])dnl _LT_DECL([], [host_os], [0])dnl @@ -181,10 +170,13 @@ _LT_DECL([], [exeext], [0], [Executable file suffix (normally "")])dnl dnl m4_require([_LT_FILEUTILS_DEFAULTS])dnl m4_require([_LT_CHECK_SHELL_FEATURES])dnl +m4_require([_LT_PATH_CONVERSION_FUNCTIONS])dnl m4_require([_LT_CMD_RELOAD])dnl m4_require([_LT_CHECK_MAGIC_METHOD])dnl +m4_require([_LT_CHECK_SHAREDLIB_FROM_LINKLIB])dnl m4_require([_LT_CMD_OLD_ARCHIVE])dnl m4_require([_LT_CMD_GLOBAL_SYMBOLS])dnl +m4_require([_LT_WITH_SYSROOT])dnl _LT_CONFIG_LIBTOOL_INIT([ # See if we are running on zsh, and set the options which allow our @@ -200,7 +192,6 @@ fi _LT_CHECK_OBJDIR m4_require([_LT_TAG_COMPILER])dnl -_LT_PROG_ECHO_BACKSLASH case $host_os in aix3*) @@ -214,23 +205,6 @@ aix3*) ;; esac -# Sed substitution that helps us do robust quoting. It backslashifies -# metacharacters that are still active within double-quoted strings. -sed_quote_subst='s/\([["`$\\]]\)/\\\1/g' - -# Same as above, but do not quote variable references. -double_quote_subst='s/\([["`\\]]\)/\\\1/g' - -# Sed substitution to delay expansion of an escaped shell variable in a -# double_quote_subst'ed string. -delay_variable_subst='s/\\\\\\\\\\\$/\\\\\\$/g' - -# Sed substitution to delay expansion of an escaped single quote. -delay_single_quote_subst='s/'\''/'\'\\\\\\\'\''/g' - -# Sed substitution to avoid accidental globbing in evaled expressions -no_glob_subst='s/\*/\\\*/g' - # Global variables: ofile=libtool can_build_shared=yes @@ -271,6 +245,28 @@ _LT_CONFIG_COMMANDS ])# _LT_SETUP +# _LT_PREPARE_SED_QUOTE_VARS +# -------------------------- +# Define a few sed substitution that help us do robust quoting. +m4_defun([_LT_PREPARE_SED_QUOTE_VARS], +[# Backslashify metacharacters that are still active within +# double-quoted strings. +sed_quote_subst='s/\([["`$\\]]\)/\\\1/g' + +# Same as above, but do not quote variable references. +double_quote_subst='s/\([["`\\]]\)/\\\1/g' + +# Sed substitution to delay expansion of an escaped shell variable in a +# double_quote_subst'ed string. +delay_variable_subst='s/\\\\\\\\\\\$/\\\\\\$/g' + +# Sed substitution to delay expansion of an escaped single quote. +delay_single_quote_subst='s/'\''/'\'\\\\\\\'\''/g' + +# Sed substitution to avoid accidental globbing in evaled expressions +no_glob_subst='s/\*/\\\*/g' +]) + # _LT_PROG_LTMAIN # --------------- # Note that this code is called both from `configure', and `config.status' @@ -284,6 +280,9 @@ ltmain="$ac_aux_dir/ltmain.sh" ])# _LT_PROG_LTMAIN +## ------------------------------------- ## +## Accumulate code for creating libtool. ## +## ------------------------------------- ## # So that we can recreate a full libtool script including additional # tags, we accumulate the chunks of code to send to AC_CONFIG_COMMANDS @@ -337,6 +336,9 @@ m4_bpatsubst([m4_bpatsubst([$1], [^ *], [# ])], +## ------------------------ ## +## FIXME: Eliminate VARNAME ## +## ------------------------ ## # _LT_DECL([CONFIGNAME], VARNAME, VALUE, [DESCRIPTION], [IS-TAGGED?]) @@ -395,12 +397,12 @@ m4_define([lt_decl_dquote_varnames], # lt_decl_varnames_tagged([SEPARATOR], [VARNAME1...]) # --------------------------------------------------- m4_define([lt_decl_varnames_tagged], -[_$0(m4_quote(m4_default([$1], [[, ]])), - m4_quote(m4_if([$2], [], - m4_quote(lt_decl_tag_varnames), - m4_quote(m4_shift($@)))), - m4_split(m4_normalize(m4_quote(_LT_TAGS))))]) -m4_define([_lt_decl_varnames_tagged], [lt_combine([$1], [$2], [_], $3)]) +[m4_assert([$# <= 2])dnl +_$0(m4_quote(m4_default([$1], [[, ]])), + m4_ifval([$2], [[$2]], [m4_dquote(lt_decl_tag_varnames)]), + m4_split(m4_normalize(m4_quote(_LT_TAGS)), [ ]))]) +m4_define([_lt_decl_varnames_tagged], +[m4_ifval([$3], [lt_combine([$1], [$2], [_], $3)])]) # lt_decl_all_varnames([SEPARATOR], [VARNAME1...]) @@ -423,7 +425,7 @@ m4_define([_lt_decl_all_varnames], # declaration there will have the same value as in `configure'. VARNAME # must have a single quote delimited value for this to work. m4_define([_LT_CONFIG_STATUS_DECLARE], -[$1='`$ECHO "X$][$1" | $Xsed -e "$delay_single_quote_subst"`']) +[$1='`$ECHO "$][$1" | $SED "$delay_single_quote_subst"`']) # _LT_CONFIG_STATUS_DECLARATIONS @@ -433,7 +435,7 @@ m4_define([_LT_CONFIG_STATUS_DECLARE], # embedded single quotes properly. In configure, this macro expands # each variable declared with _LT_DECL (and _LT_TAGDECL) into: # -# ='`$ECHO "X$" | $Xsed -e "$delay_single_quote_subst"`' +# ='`$ECHO "$" | $SED "$delay_single_quote_subst"`' m4_defun([_LT_CONFIG_STATUS_DECLARATIONS], [m4_foreach([_lt_var], m4_quote(lt_decl_all_varnames), [m4_n([_LT_CONFIG_STATUS_DECLARE(_lt_var)])])]) @@ -532,12 +534,20 @@ LTCC='$LTCC' LTCFLAGS='$LTCFLAGS' compiler='$compiler_DEFAULT' +# A function that is used when there is no print builtin or printf. +func_fallback_echo () +{ + eval 'cat <<_LTECHO_EOF +\$[]1 +_LTECHO_EOF' +} + # Quote evaled strings. for var in lt_decl_all_varnames([[ \ ]], lt_decl_quote_varnames); do - case \`eval \\\\\$ECHO "X\\\\\$\$var"\` in + case \`eval \\\\\$ECHO \\\\""\\\\\$\$var"\\\\"\` in *[[\\\\\\\`\\"\\\$]]*) - eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"X\\\$\$var\\" | \\\$Xsed -e \\"\\\$sed_quote_subst\\"\\\`\\\\\\"" + eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED \\"\\\$sed_quote_subst\\"\\\`\\\\\\"" ;; *) eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\"" @@ -548,9 +558,9 @@ done # Double-quote double-evaled strings. for var in lt_decl_all_varnames([[ \ ]], lt_decl_dquote_varnames); do - case \`eval \\\\\$ECHO "X\\\\\$\$var"\` in + case \`eval \\\\\$ECHO \\\\""\\\\\$\$var"\\\\"\` in *[[\\\\\\\`\\"\\\$]]*) - eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"X\\\$\$var\\" | \\\$Xsed -e \\"\\\$double_quote_subst\\" -e \\"\\\$sed_quote_subst\\" -e \\"\\\$delay_variable_subst\\"\\\`\\\\\\"" + eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED -e \\"\\\$double_quote_subst\\" -e \\"\\\$sed_quote_subst\\" -e \\"\\\$delay_variable_subst\\"\\\`\\\\\\"" ;; *) eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\"" @@ -558,16 +568,38 @@ for var in lt_decl_all_varnames([[ \ esac done -# Fix-up fallback echo if it was mangled by the above quoting rules. -case \$lt_ECHO in -*'\\\[$]0 --fallback-echo"')dnl " - lt_ECHO=\`\$ECHO "X\$lt_ECHO" | \$Xsed -e 's/\\\\\\\\\\\\\\\[$]0 --fallback-echo"\[$]/\[$]0 --fallback-echo"/'\` - ;; -esac - _LT_OUTPUT_LIBTOOL_INIT ]) +# _LT_GENERATED_FILE_INIT(FILE, [COMMENT]) +# ------------------------------------ +# Generate a child script FILE with all initialization necessary to +# reuse the environment learned by the parent script, and make the +# file executable. If COMMENT is supplied, it is inserted after the +# `#!' sequence but before initialization text begins. After this +# macro, additional text can be appended to FILE to form the body of +# the child script. The macro ends with non-zero status if the +# file could not be fully written (such as if the disk is full). +m4_ifdef([AS_INIT_GENERATED], +[m4_defun([_LT_GENERATED_FILE_INIT],[AS_INIT_GENERATED($@)])], +[m4_defun([_LT_GENERATED_FILE_INIT], +[m4_require([AS_PREPARE])]dnl +[m4_pushdef([AS_MESSAGE_LOG_FD])]dnl +[lt_write_fail=0 +cat >$1 <<_ASEOF || lt_write_fail=1 +#! $SHELL +# Generated by $as_me. +$2 +SHELL=\${CONFIG_SHELL-$SHELL} +export SHELL +_ASEOF +cat >>$1 <<\_ASEOF || lt_write_fail=1 +AS_SHELL_SANITIZE +_AS_PREPARE +exec AS_MESSAGE_FD>&1 +_ASEOF +test $lt_write_fail = 0 && chmod +x $1[]dnl +m4_popdef([AS_MESSAGE_LOG_FD])])])# _LT_GENERATED_FILE_INIT # LT_OUTPUT # --------- @@ -577,20 +609,11 @@ _LT_OUTPUT_LIBTOOL_INIT AC_DEFUN([LT_OUTPUT], [: ${CONFIG_LT=./config.lt} AC_MSG_NOTICE([creating $CONFIG_LT]) -cat >"$CONFIG_LT" <<_LTEOF -#! $SHELL -# Generated by $as_me. -# Run this file to recreate a libtool stub with the current configuration. - -lt_cl_silent=false -SHELL=\${CONFIG_SHELL-$SHELL} -_LTEOF +_LT_GENERATED_FILE_INIT(["$CONFIG_LT"], +[# Run this file to recreate a libtool stub with the current configuration.]) cat >>"$CONFIG_LT" <<\_LTEOF -AS_SHELL_SANITIZE -_AS_PREPARE - -exec AS_MESSAGE_FD>&1 +lt_cl_silent=false exec AS_MESSAGE_LOG_FD>>config.log { echo @@ -616,7 +639,7 @@ m4_ifset([AC_PACKAGE_NAME], [AC_PACKAGE_NAME ])config.lt[]dnl m4_ifset([AC_PACKAGE_VERSION], [ AC_PACKAGE_VERSION]) configured by $[0], generated by m4_PACKAGE_STRING. -Copyright (C) 2008 Free Software Foundation, Inc. +Copyright (C) 2011 Free Software Foundation, Inc. This config.lt script is free software; the Free Software Foundation gives unlimited permision to copy, distribute and modify it." @@ -661,15 +684,13 @@ chmod +x "$CONFIG_LT" # appending to config.log, which fails on DOS, as config.log is still kept # open by configure. Here we exec the FD to /dev/null, effectively closing # config.log, so it can be properly (re)opened and appended to by config.lt. -if test "$no_create" != yes; then - lt_cl_success=: - test "$silent" = yes && - lt_config_lt_args="$lt_config_lt_args --quiet" - exec AS_MESSAGE_LOG_FD>/dev/null - $SHELL "$CONFIG_LT" $lt_config_lt_args || lt_cl_success=false - exec AS_MESSAGE_LOG_FD>>config.log - $lt_cl_success || AS_EXIT(1) -fi +lt_cl_success=: +test "$silent" = yes && + lt_config_lt_args="$lt_config_lt_args --quiet" +exec AS_MESSAGE_LOG_FD>/dev/null +$SHELL "$CONFIG_LT" $lt_config_lt_args || lt_cl_success=false +exec AS_MESSAGE_LOG_FD>>config.log +$lt_cl_success || AS_EXIT(1) ])# LT_OUTPUT @@ -732,15 +753,12 @@ _LT_EOF # if finds mixed CR/LF and LF-only lines. Since sed operates in # text mode, it properly converts lines to CR/LF. This bash problem # is reportedly fixed, but why not run on old versions too? - sed '/^# Generated shell functions inserted here/q' "$ltmain" >> "$cfgfile" \ - || (rm -f "$cfgfile"; exit 1) - - _LT_PROG_XSI_SHELLFNS + sed '$q' "$ltmain" >> "$cfgfile" \ + || (rm -f "$cfgfile"; exit 1) - sed -n '/^# Generated shell functions inserted here/,$p' "$ltmain" >> "$cfgfile" \ - || (rm -f "$cfgfile"; exit 1) + _LT_PROG_REPLACE_SHELLFNS - mv -f "$cfgfile" "$ofile" || + mv -f "$cfgfile" "$ofile" || (rm -f "$ofile" && cp "$cfgfile" "$ofile" && rm -f "$cfgfile") chmod +x "$ofile" ], @@ -785,6 +803,7 @@ AC_DEFUN([LT_LANG], m4_case([$1], [C], [_LT_LANG(C)], [C++], [_LT_LANG(CXX)], + [Go], [_LT_LANG(GO)], [Java], [_LT_LANG(GCJ)], [Fortran 77], [_LT_LANG(F77)], [Fortran], [_LT_LANG(FC)], @@ -806,6 +825,31 @@ m4_defun([_LT_LANG], ])# _LT_LANG +m4_ifndef([AC_PROG_GO], [ +############################################################ +# NOTE: This macro has been submitted for inclusion into # +# GNU Autoconf as AC_PROG_GO. When it is available in # +# a released version of Autoconf we should remove this # +# macro and use it instead. # +############################################################ +m4_defun([AC_PROG_GO], +[AC_LANG_PUSH(Go)dnl +AC_ARG_VAR([GOC], [Go compiler command])dnl +AC_ARG_VAR([GOFLAGS], [Go compiler flags])dnl +_AC_ARG_VAR_LDFLAGS()dnl +AC_CHECK_TOOL(GOC, gccgo) +if test -z "$GOC"; then + if test -n "$ac_tool_prefix"; then + AC_CHECK_PROG(GOC, [${ac_tool_prefix}gccgo], [${ac_tool_prefix}gccgo]) + fi +fi +if test -z "$GOC"; then + AC_CHECK_PROG(GOC, gccgo, gccgo, false) +fi +])#m4_defun +])#m4_ifndef + + # _LT_LANG_DEFAULT_CONFIG # ----------------------- m4_defun([_LT_LANG_DEFAULT_CONFIG], @@ -836,6 +880,10 @@ AC_PROVIDE_IFELSE([AC_PROG_GCJ], m4_ifdef([LT_PROG_GCJ], [m4_define([LT_PROG_GCJ], defn([LT_PROG_GCJ])[LT_LANG(GCJ)])])])])]) +AC_PROVIDE_IFELSE([AC_PROG_GO], + [LT_LANG(GO)], + [m4_define([AC_PROG_GO], defn([AC_PROG_GO])[LT_LANG(GO)])]) + AC_PROVIDE_IFELSE([LT_PROG_RC], [LT_LANG(RC)], [m4_define([LT_PROG_RC], defn([LT_PROG_RC])[LT_LANG(RC)])]) @@ -846,11 +894,13 @@ AU_DEFUN([AC_LIBTOOL_CXX], [LT_LANG(C++)]) AU_DEFUN([AC_LIBTOOL_F77], [LT_LANG(Fortran 77)]) AU_DEFUN([AC_LIBTOOL_FC], [LT_LANG(Fortran)]) AU_DEFUN([AC_LIBTOOL_GCJ], [LT_LANG(Java)]) +AU_DEFUN([AC_LIBTOOL_RC], [LT_LANG(Windows Resource)]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AC_LIBTOOL_CXX], []) dnl AC_DEFUN([AC_LIBTOOL_F77], []) dnl AC_DEFUN([AC_LIBTOOL_FC], []) dnl AC_DEFUN([AC_LIBTOOL_GCJ], []) +dnl AC_DEFUN([AC_LIBTOOL_RC], []) # _LT_TAG_COMPILER @@ -936,7 +986,13 @@ m4_defun_once([_LT_REQUIRED_DARWIN_CHECKS],[ $LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \ -dynamiclib -Wl,-single_module conftest.c 2>conftest.err _lt_result=$? - if test -f libconftest.dylib && test ! -s conftest.err && test $_lt_result = 0; then + # If there is a non-empty error log, and "single_module" + # appears in it, assume the flag caused a linker warning + if test -s conftest.err && $GREP single_module conftest.err; then + cat conftest.err >&AS_MESSAGE_LOG_FD + # Otherwise, if the output was created with a 0 exit code from + # the compiler, it worked. + elif test -f libconftest.dylib && test $_lt_result -eq 0; then lt_cv_apple_cc_single_mod=yes else cat conftest.err >&AS_MESSAGE_LOG_FD @@ -944,6 +1000,7 @@ m4_defun_once([_LT_REQUIRED_DARWIN_CHECKS],[ rm -rf libconftest.dylib* rm -f conftest.* fi]) + AC_CACHE_CHECK([for -exported_symbols_list linker flag], [lt_cv_ld_exported_symbols_list], [lt_cv_ld_exported_symbols_list=no @@ -955,15 +1012,43 @@ m4_defun_once([_LT_REQUIRED_DARWIN_CHECKS],[ [lt_cv_ld_exported_symbols_list=no]) LDFLAGS="$save_LDFLAGS" ]) + + AC_CACHE_CHECK([for -force_load linker flag],[lt_cv_ld_force_load], + [lt_cv_ld_force_load=no + cat > conftest.c << _LT_EOF +int forced_loaded() { return 2;} +_LT_EOF + echo "$LTCC $LTCFLAGS -c -o conftest.o conftest.c" >&AS_MESSAGE_LOG_FD + $LTCC $LTCFLAGS -c -o conftest.o conftest.c 2>&AS_MESSAGE_LOG_FD + echo "$AR cru libconftest.a conftest.o" >&AS_MESSAGE_LOG_FD + $AR cru libconftest.a conftest.o 2>&AS_MESSAGE_LOG_FD + echo "$RANLIB libconftest.a" >&AS_MESSAGE_LOG_FD + $RANLIB libconftest.a 2>&AS_MESSAGE_LOG_FD + cat > conftest.c << _LT_EOF +int main() { return 0;} +_LT_EOF + echo "$LTCC $LTCFLAGS $LDFLAGS -o conftest conftest.c -Wl,-force_load,./libconftest.a" >&AS_MESSAGE_LOG_FD + $LTCC $LTCFLAGS $LDFLAGS -o conftest conftest.c -Wl,-force_load,./libconftest.a 2>conftest.err + _lt_result=$? + if test -s conftest.err && $GREP force_load conftest.err; then + cat conftest.err >&AS_MESSAGE_LOG_FD + elif test -f conftest && test $_lt_result -eq 0 && $GREP forced_load conftest >/dev/null 2>&1 ; then + lt_cv_ld_force_load=yes + else + cat conftest.err >&AS_MESSAGE_LOG_FD + fi + rm -f conftest.err libconftest.a conftest conftest.c + rm -rf conftest.dSYM + ]) case $host_os in rhapsody* | darwin1.[[012]]) _lt_dar_allow_undefined='${wl}-undefined ${wl}suppress' ;; darwin1.*) _lt_dar_allow_undefined='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' ;; - darwin*) # darwin 5.x on + darwin*) # darwin 5.x on # if running on 10.5 or later, the deployment target defaults # to the OS version, if on x86, and 10.4, the deployment - # target defaults to 10.4. Don't you love it? + # target defaults to 10.4. Don't you love it? case ${MACOSX_DEPLOYMENT_TARGET-10.0},$host in 10.0,*86*-darwin8*|10.0,*-darwin[[91]]*) _lt_dar_allow_undefined='${wl}-undefined ${wl}dynamic_lookup' ;; @@ -982,7 +1067,7 @@ m4_defun_once([_LT_REQUIRED_DARWIN_CHECKS],[ else _lt_dar_export_syms='~$NMEDIT -s $output_objdir/${libname}-symbols.expsym ${lib}' fi - if test "$DSYMUTIL" != ":"; then + if test "$DSYMUTIL" != ":" && test "$lt_cv_ld_force_load" = "no"; then _lt_dsymutil='~$DSYMUTIL $lib || :' else _lt_dsymutil= @@ -992,8 +1077,8 @@ m4_defun_once([_LT_REQUIRED_DARWIN_CHECKS],[ ]) -# _LT_DARWIN_LINKER_FEATURES -# -------------------------- +# _LT_DARWIN_LINKER_FEATURES([TAG]) +# --------------------------------- # Checks for linker and compiler features on darwin m4_defun([_LT_DARWIN_LINKER_FEATURES], [ @@ -1002,11 +1087,21 @@ m4_defun([_LT_DARWIN_LINKER_FEATURES], _LT_TAGVAR(hardcode_direct, $1)=no _LT_TAGVAR(hardcode_automatic, $1)=yes _LT_TAGVAR(hardcode_shlibpath_var, $1)=unsupported - _LT_TAGVAR(whole_archive_flag_spec, $1)='' + if test "$lt_cv_ld_force_load" = "yes"; then + _LT_TAGVAR(whole_archive_flag_spec, $1)='`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience ${wl}-force_load,$conv\"; done; func_echo_all \"$new_convenience\"`' + m4_case([$1], [F77], [_LT_TAGVAR(compiler_needs_object, $1)=yes], + [FC], [_LT_TAGVAR(compiler_needs_object, $1)=yes]) + else + _LT_TAGVAR(whole_archive_flag_spec, $1)='' + fi _LT_TAGVAR(link_all_deplibs, $1)=yes _LT_TAGVAR(allow_undefined_flag, $1)="$_lt_dar_allow_undefined" - if test "$GCC" = "yes"; then - output_verbose_link_cmd=echo + case $cc_basename in + ifort*) _lt_dar_can_shared=yes ;; + *) _lt_dar_can_shared=$GCC ;; + esac + if test "$_lt_dar_can_shared" = "yes"; then + output_verbose_link_cmd=func_echo_all _LT_TAGVAR(archive_cmds, $1)="\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod${_lt_dsymutil}" _LT_TAGVAR(module_cmds, $1)="\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dsymutil}" _LT_TAGVAR(archive_expsym_cmds, $1)="sed 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring ${_lt_dar_single_mod}${_lt_dar_export_syms}${_lt_dsymutil}" @@ -1022,203 +1117,142 @@ m4_defun([_LT_DARWIN_LINKER_FEATURES], fi ]) -# _LT_SYS_MODULE_PATH_AIX -# ----------------------- +# _LT_SYS_MODULE_PATH_AIX([TAGNAME]) +# ---------------------------------- # Links a minimal program and checks the executable # for the system default hardcoded library path. In most cases, # this is /usr/lib:/lib, but when the MPI compilers are used # the location of the communication and MPI libs are included too. # If we don't find anything, use the default library path according # to the aix ld manual. +# Store the results from the different compilers for each TAGNAME. +# Allow to override them for all tags through lt_cv_aix_libpath. m4_defun([_LT_SYS_MODULE_PATH_AIX], [m4_require([_LT_DECL_SED])dnl -AC_LINK_IFELSE(AC_LANG_PROGRAM,[ -lt_aix_libpath_sed=' - /Import File Strings/,/^$/ { - /^0/ { - s/^0 *\(.*\)$/\1/ - p - } - }' -aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` -# Check for a 64-bit object if we didn't find anything. -if test -z "$aix_libpath"; then - aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` -fi],[]) -if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi +if test "${lt_cv_aix_libpath+set}" = set; then + aix_libpath=$lt_cv_aix_libpath +else + AC_CACHE_VAL([_LT_TAGVAR([lt_cv_aix_libpath_], [$1])], + [AC_LINK_IFELSE([AC_LANG_PROGRAM],[ + lt_aix_libpath_sed='[ + /Import File Strings/,/^$/ { + /^0/ { + s/^0 *\([^ ]*\) *$/\1/ + p + } + }]' + _LT_TAGVAR([lt_cv_aix_libpath_], [$1])=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` + # Check for a 64-bit object if we didn't find anything. + if test -z "$_LT_TAGVAR([lt_cv_aix_libpath_], [$1])"; then + _LT_TAGVAR([lt_cv_aix_libpath_], [$1])=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` + fi],[]) + if test -z "$_LT_TAGVAR([lt_cv_aix_libpath_], [$1])"; then + _LT_TAGVAR([lt_cv_aix_libpath_], [$1])="/usr/lib:/lib" + fi + ]) + aix_libpath=$_LT_TAGVAR([lt_cv_aix_libpath_], [$1]) +fi ])# _LT_SYS_MODULE_PATH_AIX # _LT_SHELL_INIT(ARG) # ------------------- m4_define([_LT_SHELL_INIT], -[ifdef([AC_DIVERSION_NOTICE], - [AC_DIVERT_PUSH(AC_DIVERSION_NOTICE)], - [AC_DIVERT_PUSH(NOTICE)]) -$1 -AC_DIVERT_POP -])# _LT_SHELL_INIT +[m4_divert_text([M4SH-INIT], [$1 +])])# _LT_SHELL_INIT + # _LT_PROG_ECHO_BACKSLASH # ----------------------- -# Add some code to the start of the generated configure script which -# will find an echo command which doesn't interpret backslashes. +# Find how we can fake an echo command that does not interpret backslash. +# In particular, with Autoconf 2.60 or later we add some code to the start +# of the generated configure script which will find a shell with a builtin +# printf (which we can use as an echo command). m4_defun([_LT_PROG_ECHO_BACKSLASH], -[_LT_SHELL_INIT([ -# Check that we are running under the correct shell. -SHELL=${CONFIG_SHELL-/bin/sh} - -case X$lt_ECHO in -X*--fallback-echo) - # Remove one level of quotation (which was required for Make). - ECHO=`echo "$lt_ECHO" | sed 's,\\\\\[$]\\[$]0,'[$]0','` - ;; -esac - -ECHO=${lt_ECHO-echo} -if test "X[$]1" = X--no-reexec; then - # Discard the --no-reexec flag, and continue. - shift -elif test "X[$]1" = X--fallback-echo; then - # Avoid inline document here, it may be left over - : -elif test "X`{ $ECHO '\t'; } 2>/dev/null`" = 'X\t' ; then - # Yippee, $ECHO works! - : +[ECHO='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' +ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO +ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO$ECHO + +AC_MSG_CHECKING([how to print strings]) +# Test print first, because it will be a builtin if present. +if test "X`( print -r -- -n ) 2>/dev/null`" = X-n && \ + test "X`print -r -- $ECHO 2>/dev/null`" = "X$ECHO"; then + ECHO='print -r --' +elif test "X`printf %s $ECHO 2>/dev/null`" = "X$ECHO"; then + ECHO='printf %s\n' else - # Restart under the correct shell. - exec $SHELL "[$]0" --no-reexec ${1+"[$]@"} -fi - -if test "X[$]1" = X--fallback-echo; then - # used as fallback echo - shift - cat <<_LT_EOF -[$]* -_LT_EOF - exit 0 + # Use this function as a fallback that always works. + func_fallback_echo () + { + eval 'cat <<_LTECHO_EOF +$[]1 +_LTECHO_EOF' + } + ECHO='func_fallback_echo' fi -# The HP-UX ksh and POSIX shell print the target directory to stdout -# if CDPATH is set. -(unset CDPATH) >/dev/null 2>&1 && unset CDPATH - -if test -z "$lt_ECHO"; then - if test "X${echo_test_string+set}" != Xset; then - # find a string as large as possible, as long as the shell can cope with it - for cmd in 'sed 50q "[$]0"' 'sed 20q "[$]0"' 'sed 10q "[$]0"' 'sed 2q "[$]0"' 'echo test'; do - # expected sizes: less than 2Kb, 1Kb, 512 bytes, 16 bytes, ... - if { echo_test_string=`eval $cmd`; } 2>/dev/null && - { test "X$echo_test_string" = "X$echo_test_string"; } 2>/dev/null - then - break - fi - done - fi - - if test "X`{ $ECHO '\t'; } 2>/dev/null`" = 'X\t' && - echo_testing_string=`{ $ECHO "$echo_test_string"; } 2>/dev/null` && - test "X$echo_testing_string" = "X$echo_test_string"; then - : - else - # The Solaris, AIX, and Digital Unix default echo programs unquote - # backslashes. This makes it impossible to quote backslashes using - # echo "$something" | sed 's/\\/\\\\/g' - # - # So, first we look for a working echo in the user's PATH. - - lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR - for dir in $PATH /usr/ucb; do - IFS="$lt_save_ifs" - if (test -f $dir/echo || test -f $dir/echo$ac_exeext) && - test "X`($dir/echo '\t') 2>/dev/null`" = 'X\t' && - echo_testing_string=`($dir/echo "$echo_test_string") 2>/dev/null` && - test "X$echo_testing_string" = "X$echo_test_string"; then - ECHO="$dir/echo" - break - fi - done - IFS="$lt_save_ifs" - - if test "X$ECHO" = Xecho; then - # We didn't find a better echo, so look for alternatives. - if test "X`{ print -r '\t'; } 2>/dev/null`" = 'X\t' && - echo_testing_string=`{ print -r "$echo_test_string"; } 2>/dev/null` && - test "X$echo_testing_string" = "X$echo_test_string"; then - # This shell has a builtin print -r that does the trick. - ECHO='print -r' - elif { test -f /bin/ksh || test -f /bin/ksh$ac_exeext; } && - test "X$CONFIG_SHELL" != X/bin/ksh; then - # If we have ksh, try running configure again with it. - ORIGINAL_CONFIG_SHELL=${CONFIG_SHELL-/bin/sh} - export ORIGINAL_CONFIG_SHELL - CONFIG_SHELL=/bin/ksh - export CONFIG_SHELL - exec $CONFIG_SHELL "[$]0" --no-reexec ${1+"[$]@"} - else - # Try using printf. - ECHO='printf %s\n' - if test "X`{ $ECHO '\t'; } 2>/dev/null`" = 'X\t' && - echo_testing_string=`{ $ECHO "$echo_test_string"; } 2>/dev/null` && - test "X$echo_testing_string" = "X$echo_test_string"; then - # Cool, printf works - : - elif echo_testing_string=`($ORIGINAL_CONFIG_SHELL "[$]0" --fallback-echo '\t') 2>/dev/null` && - test "X$echo_testing_string" = 'X\t' && - echo_testing_string=`($ORIGINAL_CONFIG_SHELL "[$]0" --fallback-echo "$echo_test_string") 2>/dev/null` && - test "X$echo_testing_string" = "X$echo_test_string"; then - CONFIG_SHELL=$ORIGINAL_CONFIG_SHELL - export CONFIG_SHELL - SHELL="$CONFIG_SHELL" - export SHELL - ECHO="$CONFIG_SHELL [$]0 --fallback-echo" - elif echo_testing_string=`($CONFIG_SHELL "[$]0" --fallback-echo '\t') 2>/dev/null` && - test "X$echo_testing_string" = 'X\t' && - echo_testing_string=`($CONFIG_SHELL "[$]0" --fallback-echo "$echo_test_string") 2>/dev/null` && - test "X$echo_testing_string" = "X$echo_test_string"; then - ECHO="$CONFIG_SHELL [$]0 --fallback-echo" - else - # maybe with a smaller string... - prev=: - - for cmd in 'echo test' 'sed 2q "[$]0"' 'sed 10q "[$]0"' 'sed 20q "[$]0"' 'sed 50q "[$]0"'; do - if { test "X$echo_test_string" = "X`eval $cmd`"; } 2>/dev/null - then - break - fi - prev="$cmd" - done +# func_echo_all arg... +# Invoke $ECHO with all args, space-separated. +func_echo_all () +{ + $ECHO "$*" +} - if test "$prev" != 'sed 50q "[$]0"'; then - echo_test_string=`eval $prev` - export echo_test_string - exec ${ORIGINAL_CONFIG_SHELL-${CONFIG_SHELL-/bin/sh}} "[$]0" ${1+"[$]@"} - else - # Oops. We lost completely, so just stick with echo. - ECHO=echo - fi - fi - fi - fi - fi -fi +case "$ECHO" in + printf*) AC_MSG_RESULT([printf]) ;; + print*) AC_MSG_RESULT([print -r]) ;; + *) AC_MSG_RESULT([cat]) ;; +esac -# Copy echo and quote the copy suitably for passing to libtool from -# the Makefile, instead of quoting the original, which is used later. -lt_ECHO=$ECHO -if test "X$lt_ECHO" = "X$CONFIG_SHELL [$]0 --fallback-echo"; then - lt_ECHO="$CONFIG_SHELL \\\$\[$]0 --fallback-echo" -fi +m4_ifdef([_AS_DETECT_SUGGESTED], +[_AS_DETECT_SUGGESTED([ + test -n "${ZSH_VERSION+set}${BASH_VERSION+set}" || ( + ECHO='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' + ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO + ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO$ECHO + PATH=/empty FPATH=/empty; export PATH FPATH + test "X`printf %s $ECHO`" = "X$ECHO" \ + || test "X`print -r -- $ECHO`" = "X$ECHO" )])]) -AC_SUBST(lt_ECHO) -]) _LT_DECL([], [SHELL], [1], [Shell to use when invoking shell scripts]) -_LT_DECL([], [ECHO], [1], - [An echo program that does not interpret backslashes]) +_LT_DECL([], [ECHO], [1], [An echo program that protects backslashes]) ])# _LT_PROG_ECHO_BACKSLASH +# _LT_WITH_SYSROOT +# ---------------- +AC_DEFUN([_LT_WITH_SYSROOT], +[AC_MSG_CHECKING([for sysroot]) +AC_ARG_WITH([sysroot], +[ --with-sysroot[=DIR] Search for dependent libraries within DIR + (or the compiler's sysroot if not specified).], +[], [with_sysroot=no]) + +dnl lt_sysroot will always be passed unquoted. We quote it here +dnl in case the user passed a directory name. +lt_sysroot= +case ${with_sysroot} in #( + yes) + if test "$GCC" = yes; then + lt_sysroot=`$CC --print-sysroot 2>/dev/null` + fi + ;; #( + /*) + lt_sysroot=`echo "$with_sysroot" | sed -e "$sed_quote_subst"` + ;; #( + no|'') + ;; #( + *) + AC_MSG_RESULT([${with_sysroot}]) + AC_MSG_ERROR([The sysroot must be an absolute path.]) + ;; +esac + + AC_MSG_RESULT([${lt_sysroot:-no}]) +_LT_DECL([], [lt_sysroot], [0], [The root where to search for ]dnl +[dependent libraries, and in which our libraries should be installed.])]) + # _LT_ENABLE_LOCK # --------------- m4_defun([_LT_ENABLE_LOCK], @@ -1247,7 +1281,7 @@ ia64-*-hpux*) ;; *-*-irix6*) # Find out which ABI we are using. - echo '[#]line __oline__ "configure"' > conftest.$ac_ext + echo '[#]line '$LINENO' "configure"' > conftest.$ac_ext if AC_TRY_EVAL(ac_compile); then if test "$lt_cv_prog_gnu_ld" = yes; then case `/usr/bin/file conftest.$ac_objext` in @@ -1340,14 +1374,27 @@ s390*-*linux*|s390*-*tpf*|sparc*-*linux*) CFLAGS="$SAVE_CFLAGS" fi ;; -sparc*-*solaris*) +*-*solaris*) # Find out which ABI we are using. echo 'int i;' > conftest.$ac_ext if AC_TRY_EVAL(ac_compile); then case `/usr/bin/file conftest.o` in *64-bit*) case $lt_cv_prog_gnu_ld in - yes*) LD="${LD-ld} -m elf64_sparc" ;; + yes*) + case $host in + i?86-*-solaris*) + LD="${LD-ld} -m elf_x86_64" + ;; + sparc*-*-solaris*) + LD="${LD-ld} -m elf64_sparc" + ;; + esac + # GNU ld 2.21 introduced _sol2 emulations. Use them if available. + if ${LD-ld} -V | grep _sol2 >/dev/null 2>&1; then + LD="${LD-ld}_sol2" + fi + ;; *) if ${LD-ld} -64 -r -o conftest2.o conftest.o >/dev/null 2>&1; then LD="${LD-ld} -64" @@ -1365,14 +1412,47 @@ need_locks="$enable_libtool_lock" ])# _LT_ENABLE_LOCK +# _LT_PROG_AR +# ----------- +m4_defun([_LT_PROG_AR], +[AC_CHECK_TOOLS(AR, [ar], false) +: ${AR=ar} +: ${AR_FLAGS=cru} +_LT_DECL([], [AR], [1], [The archiver]) +_LT_DECL([], [AR_FLAGS], [1], [Flags to create an archive]) + +AC_CACHE_CHECK([for archiver @FILE support], [lt_cv_ar_at_file], + [lt_cv_ar_at_file=no + AC_COMPILE_IFELSE([AC_LANG_PROGRAM], + [echo conftest.$ac_objext > conftest.lst + lt_ar_try='$AR $AR_FLAGS libconftest.a @conftest.lst >&AS_MESSAGE_LOG_FD' + AC_TRY_EVAL([lt_ar_try]) + if test "$ac_status" -eq 0; then + # Ensure the archiver fails upon bogus file names. + rm -f conftest.$ac_objext libconftest.a + AC_TRY_EVAL([lt_ar_try]) + if test "$ac_status" -ne 0; then + lt_cv_ar_at_file=@ + fi + fi + rm -f conftest.* libconftest.a + ]) + ]) + +if test "x$lt_cv_ar_at_file" = xno; then + archiver_list_spec= +else + archiver_list_spec=$lt_cv_ar_at_file +fi +_LT_DECL([], [archiver_list_spec], [1], + [How to feed a file listing to the archiver]) +])# _LT_PROG_AR + + # _LT_CMD_OLD_ARCHIVE # ------------------- m4_defun([_LT_CMD_OLD_ARCHIVE], -[AC_CHECK_TOOL(AR, ar, false) -test -z "$AR" && AR=ar -test -z "$AR_FLAGS" && AR_FLAGS=cru -_LT_DECL([], [AR], [1], [The archiver]) -_LT_DECL([], [AR_FLAGS], [1]) +[_LT_PROG_AR AC_CHECK_TOOL(STRIP, strip, :) test -z "$STRIP" && STRIP=: @@ -1391,18 +1471,27 @@ old_postuninstall_cmds= if test -n "$RANLIB"; then case $host_os in openbsd*) - old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB -t \$oldlib" + old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB -t \$tool_oldlib" ;; *) - old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB \$oldlib" + old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB \$tool_oldlib" ;; esac - old_archive_cmds="$old_archive_cmds~\$RANLIB \$oldlib" + old_archive_cmds="$old_archive_cmds~\$RANLIB \$tool_oldlib" fi + +case $host_os in + darwin*) + lock_old_archive_extraction=yes ;; + *) + lock_old_archive_extraction=no ;; +esac _LT_DECL([], [old_postinstall_cmds], [2]) _LT_DECL([], [old_postuninstall_cmds], [2]) _LT_TAGDECL([], [old_archive_cmds], [2], [Commands used to build an old-style archive]) +_LT_DECL([], [lock_old_archive_extraction], [0], + [Whether to use a lock for old archive extraction]) ])# _LT_CMD_OLD_ARCHIVE @@ -1427,15 +1516,15 @@ AC_CACHE_CHECK([$1], [$2], -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [[^ ]]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` - (eval echo "\"\$as_me:__oline__: $lt_compile\"" >&AS_MESSAGE_LOG_FD) + (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&AS_MESSAGE_LOG_FD) (eval "$lt_compile" 2>conftest.err) ac_status=$? cat conftest.err >&AS_MESSAGE_LOG_FD - echo "$as_me:__oline__: \$? = $ac_status" >&AS_MESSAGE_LOG_FD + echo "$as_me:$LINENO: \$? = $ac_status" >&AS_MESSAGE_LOG_FD if (exit $ac_status) && test -s "$ac_outfile"; then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings other than the usual output. - $ECHO "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' >conftest.exp + $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' >conftest.exp $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then $2=yes @@ -1475,7 +1564,7 @@ AC_CACHE_CHECK([$1], [$2], if test -s conftest.err; then # Append any errors to the config.log. cat conftest.err 1>&AS_MESSAGE_LOG_FD - $ECHO "X$_lt_linker_boilerplate" | $Xsed -e '/^$/d' > conftest.exp + $ECHO "$_lt_linker_boilerplate" | $SED '/^$/d' > conftest.exp $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 if diff conftest.exp conftest.er2 >/dev/null; then $2=yes @@ -1527,7 +1616,7 @@ AC_CACHE_VAL([lt_cv_sys_max_cmd_len], [dnl lt_cv_sys_max_cmd_len=-1; ;; - cygwin* | mingw*) + cygwin* | mingw* | cegcc*) # On Win9x/ME, this test blows up -- it succeeds, but takes # about 5 minutes as the teststring grows exponentially. # Worse, since 9x/ME are not pre-emptively multitasking, @@ -1538,6 +1627,11 @@ AC_CACHE_VAL([lt_cv_sys_max_cmd_len], [dnl lt_cv_sys_max_cmd_len=8192; ;; + mint*) + # On MiNT this can take a long time and run out of memory. + lt_cv_sys_max_cmd_len=8192; + ;; + amigaos*) # On AmigaOS with pdksh, this test takes hours, literally. # So we just punt and use a minimum line length of 8192. @@ -1563,6 +1657,11 @@ AC_CACHE_VAL([lt_cv_sys_max_cmd_len], [dnl lt_cv_sys_max_cmd_len=196608 ;; + os2*) + # The test takes a long time on OS/2. + lt_cv_sys_max_cmd_len=8192 + ;; + osf*) # Dr. Hans Ekkehard Plesser reports seeing a kernel panic running configure # due to this test when exec_disable_arg_limit is 1 on Tru64. It is not @@ -1602,8 +1701,8 @@ AC_CACHE_VAL([lt_cv_sys_max_cmd_len], [dnl # If test is not a shell built-in, we'll probably end up computing a # maximum length that is only half of the actual maximum length, but # we can't tell. - while { test "X"`$SHELL [$]0 --fallback-echo "X$teststring$teststring" 2>/dev/null` \ - = "XX$teststring$teststring"; } >/dev/null 2>&1 && + while { test "X"`env echo "$teststring$teststring" 2>/dev/null` \ + = "X$teststring$teststring"; } >/dev/null 2>&1 && test $i != 17 # 1/2 MB should be enough do i=`expr $i + 1` @@ -1654,7 +1753,7 @@ else lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 lt_status=$lt_dlunknown cat > conftest.$ac_ext <<_LT_EOF -[#line __oline__ "configure" +[#line $LINENO "configure" #include "confdefs.h" #if HAVE_DLFCN_H @@ -1695,11 +1794,13 @@ else # endif #endif -#ifdef __cplusplus -extern "C" void exit (int); +/* When -fvisbility=hidden is used, assume the code has been annotated + correspondingly for the symbols needed. */ +#if defined(__GNUC__) && (((__GNUC__ == 3) && (__GNUC_MINOR__ >= 3)) || (__GNUC__ > 3)) +int fnord () __attribute__((visibility("default"))); #endif -void fnord() { int i=42;} +int fnord () { return 42; } int main () { void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW); @@ -1708,13 +1809,17 @@ int main () if (self) { if (dlsym (self,"fnord")) status = $lt_dlno_uscore; - else if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore; + else + { + if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore; + else puts (dlerror ()); + } /* dlclose (self); */ } else puts (dlerror ()); - exit (status); + return status; }] _LT_EOF if AC_TRY_EVAL(ac_link) && test -s conftest${ac_exeext} 2>/dev/null; then @@ -1753,7 +1858,7 @@ else lt_cv_dlopen_self=yes ;; - mingw* | pw32*) + mingw* | pw32* | cegcc*) lt_cv_dlopen="LoadLibrary" lt_cv_dlopen_libs= ;; @@ -1884,16 +1989,16 @@ AC_CACHE_CHECK([if $compiler supports -c -o file.$ac_objext], -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [[^ ]]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` - (eval echo "\"\$as_me:__oline__: $lt_compile\"" >&AS_MESSAGE_LOG_FD) + (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&AS_MESSAGE_LOG_FD) (eval "$lt_compile" 2>out/conftest.err) ac_status=$? cat out/conftest.err >&AS_MESSAGE_LOG_FD - echo "$as_me:__oline__: \$? = $ac_status" >&AS_MESSAGE_LOG_FD + echo "$as_me:$LINENO: \$? = $ac_status" >&AS_MESSAGE_LOG_FD if (exit $ac_status) && test -s out/conftest2.$ac_objext then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings - $ECHO "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' > out/conftest.exp + $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' > out/conftest.exp $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2 if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then _LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)=yes @@ -2050,7 +2155,9 @@ m4_defun([_LT_SYS_DYNAMIC_LINKER], [AC_REQUIRE([AC_CANONICAL_HOST])dnl m4_require([_LT_DECL_EGREP])dnl m4_require([_LT_FILEUTILS_DEFAULTS])dnl +m4_require([_LT_DECL_OBJDUMP])dnl m4_require([_LT_DECL_SED])dnl +m4_require([_LT_CHECK_SHELL_FEATURES])dnl AC_MSG_CHECKING([dynamic linker characteristics]) m4_if([$1], [], [ @@ -2059,16 +2166,23 @@ if test "$GCC" = yes; then darwin*) lt_awk_arg="/^libraries:/,/LR/" ;; *) lt_awk_arg="/^libraries:/" ;; esac - lt_search_path_spec=`$CC -print-search-dirs | awk $lt_awk_arg | $SED -e "s/^libraries://" -e "s,=/,/,g"` - if $ECHO "$lt_search_path_spec" | $GREP ';' >/dev/null ; then + case $host_os in + mingw* | cegcc*) lt_sed_strip_eq="s,=\([[A-Za-z]]:\),\1,g" ;; + *) lt_sed_strip_eq="s,=/,/,g" ;; + esac + lt_search_path_spec=`$CC -print-search-dirs | awk $lt_awk_arg | $SED -e "s/^libraries://" -e $lt_sed_strip_eq` + case $lt_search_path_spec in + *\;*) # if the path contains ";" then we assume it to be the separator # otherwise default to the standard path separator (i.e. ":") - it is # assumed that no part of a normal pathname contains ";" but that should # okay in the real world where ";" in dirpaths is itself problematic. - lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED -e 's/;/ /g'` - else - lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` - fi + lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED 's/;/ /g'` + ;; + *) + lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED "s/$PATH_SEPARATOR/ /g"` + ;; + esac # Ok, now we have the path, separated by spaces, we can step through it # and add multilib dir if necessary. lt_tmp_lt_search_path_spec= @@ -2081,7 +2195,7 @@ if test "$GCC" = yes; then lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path" fi done - lt_search_path_spec=`$ECHO $lt_tmp_lt_search_path_spec | awk ' + lt_search_path_spec=`$ECHO "$lt_tmp_lt_search_path_spec" | awk ' BEGIN {RS=" "; FS="/|\n";} { lt_foo=""; lt_count=0; @@ -2101,7 +2215,13 @@ BEGIN {RS=" "; FS="/|\n";} { if (lt_foo != "") { lt_freq[[lt_foo]]++; } if (lt_freq[[lt_foo]] == 1) { print lt_foo; } }'` - sys_lib_search_path_spec=`$ECHO $lt_search_path_spec` + # AWK program above erroneously prepends '/' to C:/dos/paths + # for these hosts. + case $host_os in + mingw* | cegcc*) lt_search_path_spec=`$ECHO "$lt_search_path_spec" |\ + $SED 's,/\([[A-Za-z]]:\),\1,g'` ;; + esac + sys_lib_search_path_spec=`$ECHO "$lt_search_path_spec" | $lt_NL2SP` else sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib" fi]) @@ -2127,7 +2247,7 @@ need_version=unknown case $host_os in aix3*) - version_type=linux + version_type=linux # correct to gnu/linux during the next big refactor library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a' shlibpath_var=LIBPATH @@ -2136,7 +2256,7 @@ aix3*) ;; aix[[4-9]]*) - version_type=linux + version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no hardcode_into_libs=yes @@ -2189,7 +2309,7 @@ amigaos*) m68k) library_names_spec='$libname.ixlibrary $libname.a' # Create ${libname}_ixlibrary.a entries in /sys/libs. - finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`$ECHO "X$lib" | $Xsed -e '\''s%^.*/\([[^/]]*\)\.ixlibrary$%\1%'\''`; test $RM /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done' + finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`func_echo_all "$lib" | $SED '\''s%^.*/\([[^/]]*\)\.ixlibrary$%\1%'\''`; test $RM /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done' ;; esac ;; @@ -2201,7 +2321,7 @@ beos*) ;; bsdi[[45]]*) - version_type=linux + version_type=linux # correct to gnu/linux during the next big refactor need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' @@ -2214,14 +2334,15 @@ bsdi[[45]]*) # libtool to hard-code these into programs ;; -cygwin* | mingw* | pw32*) +cygwin* | mingw* | pw32* | cegcc*) version_type=windows shrext_cmds=".dll" need_version=no need_lib_prefix=no - case $GCC,$host_os in - yes,cygwin* | yes,mingw* | yes,pw32*) + case $GCC,$cc_basename in + yes,*) + # gcc library_names_spec='$libname.dll.a' # DLL is installed to $(libdir)/../bin by postinstall_cmds postinstall_cmds='base_file=`basename \${file}`~ @@ -2242,36 +2363,83 @@ cygwin* | mingw* | pw32*) cygwin*) # Cygwin DLLs use 'cyg' prefix rather than 'lib' soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}' - sys_lib_search_path_spec="/usr/lib /lib/w32api /lib /usr/local/lib" +m4_if([$1], [],[ + sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/lib/w32api"]) ;; - mingw*) + mingw* | cegcc*) # MinGW DLLs use traditional 'lib' prefix soname_spec='${libname}`echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}' - sys_lib_search_path_spec=`$CC -print-search-dirs | $GREP "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"` - if $ECHO "$sys_lib_search_path_spec" | [$GREP ';[c-zC-Z]:/' >/dev/null]; then - # It is most probably a Windows format PATH printed by - # mingw gcc, but we are running on Cygwin. Gcc prints its search - # path with ; separators, and with drive letters. We can handle the - # drive letters (cygwin fileutils understands them), so leave them, - # especially as we might pass files found there to a mingw objdump, - # which wouldn't understand a cygwinified path. Ahh. - sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'` - else - sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` - fi ;; pw32*) # pw32 DLLs use 'pw' prefix rather than 'lib' library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}' ;; esac + dynamic_linker='Win32 ld.exe' + ;; + + *,cl*) + # Native MSVC + libname_spec='$name' + soname_spec='${libname}`echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}' + library_names_spec='${libname}.dll.lib' + + case $build_os in + mingw*) + sys_lib_search_path_spec= + lt_save_ifs=$IFS + IFS=';' + for lt_path in $LIB + do + IFS=$lt_save_ifs + # Let DOS variable expansion print the short 8.3 style file name. + lt_path=`cd "$lt_path" 2>/dev/null && cmd //C "for %i in (".") do @echo %~si"` + sys_lib_search_path_spec="$sys_lib_search_path_spec $lt_path" + done + IFS=$lt_save_ifs + # Convert to MSYS style. + sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | sed -e 's|\\\\|/|g' -e 's| \\([[a-zA-Z]]\\):| /\\1|g' -e 's|^ ||'` + ;; + cygwin*) + # Convert to unix form, then to dos form, then back to unix form + # but this time dos style (no spaces!) so that the unix form looks + # like /cygdrive/c/PROGRA~1:/cygdr... + sys_lib_search_path_spec=`cygpath --path --unix "$LIB"` + sys_lib_search_path_spec=`cygpath --path --dos "$sys_lib_search_path_spec" 2>/dev/null` + sys_lib_search_path_spec=`cygpath --path --unix "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` + ;; + *) + sys_lib_search_path_spec="$LIB" + if $ECHO "$sys_lib_search_path_spec" | [$GREP ';[c-zC-Z]:/' >/dev/null]; then + # It is most probably a Windows format PATH. + sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'` + else + sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` + fi + # FIXME: find the short name or the path components, as spaces are + # common. (e.g. "Program Files" -> "PROGRA~1") + ;; + esac + + # DLL is installed to $(libdir)/../bin by postinstall_cmds + postinstall_cmds='base_file=`basename \${file}`~ + dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i; echo \$dlname'\''`~ + dldir=$destdir/`dirname \$dlpath`~ + test -d \$dldir || mkdir -p \$dldir~ + $install_prog $dir/$dlname \$dldir/$dlname' + postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ + dlpath=$dir/\$dldll~ + $RM \$dlpath' + shlibpath_overrides_runpath=yes + dynamic_linker='Win32 link.exe' ;; *) + # Assume MSVC wrapper library_names_spec='${libname}`echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext} $libname.lib' + dynamic_linker='Win32 ld.exe' ;; esac - dynamic_linker='Win32 ld.exe' # FIXME: first we should search . and the directory the executable is in shlibpath_var=PATH ;; @@ -2292,7 +2460,7 @@ m4_if([$1], [],[ ;; dgux*) - version_type=linux + version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname$shared_ext' @@ -2300,10 +2468,6 @@ dgux*) shlibpath_var=LD_LIBRARY_PATH ;; -freebsd1*) - dynamic_linker=no - ;; - freebsd* | dragonfly*) # DragonFly does not have aout. When/if they implement a new # versioning mechanism, adjust this. @@ -2311,7 +2475,7 @@ freebsd* | dragonfly*) objformat=`/usr/bin/objformat` else case $host_os in - freebsd[[123]]*) objformat=aout ;; + freebsd[[23]].*) objformat=aout ;; *) objformat=elf ;; esac fi @@ -2329,7 +2493,7 @@ freebsd* | dragonfly*) esac shlibpath_var=LD_LIBRARY_PATH case $host_os in - freebsd2*) + freebsd2.*) shlibpath_overrides_runpath=yes ;; freebsd3.[[01]]* | freebsdelf3.[[01]]*) @@ -2349,12 +2513,26 @@ freebsd* | dragonfly*) ;; gnu*) - version_type=linux + version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + ;; + +haiku*) + version_type=linux # correct to gnu/linux during the next big refactor + need_lib_prefix=no + need_version=no + dynamic_linker="$host_os runtime_loader" + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LIBRARY_PATH + shlibpath_overrides_runpath=yes + sys_lib_dlsearch_path_spec='/boot/home/config/lib /boot/common/lib /boot/system/lib' hardcode_into_libs=yes ;; @@ -2400,12 +2578,14 @@ hpux9* | hpux10* | hpux11*) soname_spec='${libname}${release}${shared_ext}$major' ;; esac - # HP-UX runs *really* slowly unless shared libraries are mode 555. + # HP-UX runs *really* slowly unless shared libraries are mode 555, ... postinstall_cmds='chmod 555 $lib' + # or fails outright, so override atomically: + install_override_mode=555 ;; interix[[3-9]]*) - version_type=linux + version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' @@ -2421,7 +2601,7 @@ irix5* | irix6* | nonstopux*) nonstopux*) version_type=nonstopux ;; *) if test "$lt_cv_prog_gnu_ld" = yes; then - version_type=linux + version_type=linux # correct to gnu/linux during the next big refactor else version_type=irix fi ;; @@ -2458,9 +2638,9 @@ linux*oldld* | linux*aout* | linux*coff*) dynamic_linker=no ;; -# This must be Linux ELF. -linux* | k*bsd*-gnu) - version_type=linux +# This must be glibc/ELF. +linux* | k*bsd*-gnu | kopensolaris*-gnu) + version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' @@ -2468,16 +2648,21 @@ linux* | k*bsd*-gnu) finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no + # Some binutils ld are patched to set DT_RUNPATH - save_LDFLAGS=$LDFLAGS - save_libdir=$libdir - eval "libdir=/foo; wl=\"$_LT_TAGVAR(lt_prog_compiler_wl, $1)\"; \ - LDFLAGS=\"\$LDFLAGS $_LT_TAGVAR(hardcode_libdir_flag_spec, $1)\"" - AC_LINK_IFELSE([AC_LANG_PROGRAM([],[])], - [AS_IF([ ($OBJDUMP -p conftest$ac_exeext) 2>/dev/null | grep "RUNPATH.*$libdir" >/dev/null], - [shlibpath_overrides_runpath=yes])]) - LDFLAGS=$save_LDFLAGS - libdir=$save_libdir + AC_CACHE_VAL([lt_cv_shlibpath_overrides_runpath], + [lt_cv_shlibpath_overrides_runpath=no + save_LDFLAGS=$LDFLAGS + save_libdir=$libdir + eval "libdir=/foo; wl=\"$_LT_TAGVAR(lt_prog_compiler_wl, $1)\"; \ + LDFLAGS=\"\$LDFLAGS $_LT_TAGVAR(hardcode_libdir_flag_spec, $1)\"" + AC_LINK_IFELSE([AC_LANG_PROGRAM([],[])], + [AS_IF([ ($OBJDUMP -p conftest$ac_exeext) 2>/dev/null | grep "RUNPATH.*$libdir" >/dev/null], + [lt_cv_shlibpath_overrides_runpath=yes])]) + LDFLAGS=$save_LDFLAGS + libdir=$save_libdir + ]) + shlibpath_overrides_runpath=$lt_cv_shlibpath_overrides_runpath # This implies no fast_install, which is unacceptable. # Some rework will be needed to allow for fast_install @@ -2486,7 +2671,7 @@ linux* | k*bsd*-gnu) # Append ld.so.conf contents to the search path if test -f /etc/ld.so.conf; then - lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \[$]2)); skip = 1; } { if (!skip) print \[$]0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;/^[ ]*hwcap[ ]/d;s/[:, ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;/^$/d' | tr '\n' ' '` + lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \[$]2)); skip = 1; } { if (!skip) print \[$]0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;/^[ ]*hwcap[ ]/d;s/[:, ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;s/"//g;/^$/d' | tr '\n' ' '` sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra" fi @@ -2499,6 +2684,18 @@ linux* | k*bsd*-gnu) dynamic_linker='GNU/Linux ld.so' ;; +netbsdelf*-gnu) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + dynamic_linker='NetBSD ld.elf_so' + ;; + netbsd*) version_type=sunos need_lib_prefix=no @@ -2518,7 +2715,7 @@ netbsd*) ;; newsos6) - version_type=linux + version_type=linux # correct to gnu/linux during the next big refactor library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes @@ -2587,7 +2784,7 @@ rdos*) ;; solaris*) - version_type=linux + version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' @@ -2612,7 +2809,7 @@ sunos4*) ;; sysv4 | sysv4.3*) - version_type=linux + version_type=linux # correct to gnu/linux during the next big refactor library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH @@ -2636,7 +2833,7 @@ sysv4 | sysv4.3*) sysv4*MP*) if test -d /usr/nec ;then - version_type=linux + version_type=linux # correct to gnu/linux during the next big refactor library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}' soname_spec='$libname${shared_ext}.$major' shlibpath_var=LD_LIBRARY_PATH @@ -2667,17 +2864,17 @@ sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) tpf*) # TPF is a cross-target only. Preferred cross-host = GNU/Linux. - version_type=linux + version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no - library_name_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no hardcode_into_libs=yes ;; uts4*) - version_type=linux + version_type=linux # correct to gnu/linux during the next big refactor library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH @@ -2694,7 +2891,7 @@ variables_saved_for_relink="PATH $shlibpath_var $runpath_var" if test "$GCC" = yes; then variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH" fi - + if test "${lt_cv_sys_lib_search_path_spec+set}" = set; then sys_lib_search_path_spec="$lt_cv_sys_lib_search_path_spec" fi @@ -2719,6 +2916,8 @@ _LT_DECL([], [library_names_spec], [1], The last name is the one that the linker finds with -lNAME]]) _LT_DECL([], [soname_spec], [1], [[The coded name of the library, if different from the real name]]) +_LT_DECL([], [install_override_mode], [1], + [Permission mode override for installation of shared libraries]) _LT_DECL([], [postinstall_cmds], [2], [Command to use after installation of a shared archive]) _LT_DECL([], [postuninstall_cmds], [2], @@ -2831,6 +3030,7 @@ AC_REQUIRE([AC_CANONICAL_HOST])dnl AC_REQUIRE([AC_CANONICAL_BUILD])dnl m4_require([_LT_DECL_SED])dnl m4_require([_LT_DECL_EGREP])dnl +m4_require([_LT_PROG_ECHO_BACKSLASH])dnl AC_ARG_WITH([gnu-ld], [AS_HELP_STRING([--with-gnu-ld], @@ -2952,6 +3152,11 @@ case $reload_flag in esac reload_cmds='$LD$reload_flag -o $output$reload_objs' case $host_os in + cygwin* | mingw* | pw32* | cegcc*) + if test "$GCC" != yes; then + reload_cmds=false + fi + ;; darwin*) if test "$GCC" = yes; then reload_cmds='$LTCC $LTCFLAGS -nostdlib ${wl}-r -o $output$reload_objs' @@ -2960,8 +3165,8 @@ case $host_os in fi ;; esac -_LT_DECL([], [reload_flag], [1], [How to create reloadable object files])dnl -_LT_DECL([], [reload_cmds], [2])dnl +_LT_TAGDECL([], [reload_flag], [1], [How to create reloadable object files])dnl +_LT_TAGDECL([], [reload_cmds], [2])dnl ])# _LT_CMD_RELOAD @@ -2971,6 +3176,7 @@ _LT_DECL([], [reload_cmds], [2])dnl # -- PORTME fill in with the dynamic library characteristics m4_defun([_LT_CHECK_MAGIC_METHOD], [m4_require([_LT_DECL_EGREP]) +m4_require([_LT_DECL_OBJDUMP]) AC_CACHE_CHECK([how to recognize dependent libraries], lt_cv_deplibs_check_method, [lt_cv_file_magic_cmd='$MAGIC_CMD' @@ -3012,15 +3218,23 @@ mingw* | pw32*) # Base MSYS/MinGW do not provide the 'file' command needed by # func_win32_libid shell function, so use a weaker test based on 'objdump', # unless we find 'file', for example because we are cross-compiling. - if ( file / ) >/dev/null 2>&1; then + # func_win32_libid assumes BSD nm, so disallow it if using MS dumpbin. + if ( test "$lt_cv_nm_interface" = "BSD nm" && file / ) >/dev/null 2>&1; then lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL' lt_cv_file_magic_cmd='func_win32_libid' else - lt_cv_deplibs_check_method='file_magic file format pei*-i386(.*architecture: i386)?' + # Keep this pattern in sync with the one in func_win32_libid. + lt_cv_deplibs_check_method='file_magic file format (pei*-i386(.*architecture: i386)?|pe-arm-wince|pe-x86-64)' lt_cv_file_magic_cmd='$OBJDUMP -f' fi ;; +cegcc*) + # use the weaker test based on 'objdump'. See mingw*. + lt_cv_deplibs_check_method='file_magic file format pe-arm-.*little(.*architecture: arm)?' + lt_cv_file_magic_cmd='$OBJDUMP -f' + ;; + darwin* | rhapsody*) lt_cv_deplibs_check_method=pass_all ;; @@ -3045,6 +3259,10 @@ gnu*) lt_cv_deplibs_check_method=pass_all ;; +haiku*) + lt_cv_deplibs_check_method=pass_all + ;; + hpux10.20* | hpux11*) lt_cv_file_magic_cmd=/usr/bin/file case $host_cpu in @@ -3053,11 +3271,11 @@ hpux10.20* | hpux11*) lt_cv_file_magic_test_file=/usr/lib/hpux32/libc.so ;; hppa*64*) - [lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF-[0-9][0-9]) shared object file - PA-RISC [0-9].[0-9]'] + [lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF[ -][0-9][0-9])(-bit)?( [LM]SB)? shared object( file)?[, -]* PA-RISC [0-9]\.[0-9]'] lt_cv_file_magic_test_file=/usr/lib/pa20_64/libc.sl ;; *) - lt_cv_deplibs_check_method='file_magic (s[[0-9]][[0-9]][[0-9]]|PA-RISC[[0-9]].[[0-9]]) shared library' + lt_cv_deplibs_check_method='file_magic (s[[0-9]][[0-9]][[0-9]]|PA-RISC[[0-9]]\.[[0-9]]) shared library' lt_cv_file_magic_test_file=/usr/lib/libc.sl ;; esac @@ -3078,12 +3296,12 @@ irix5* | irix6* | nonstopux*) lt_cv_deplibs_check_method=pass_all ;; -# This must be Linux ELF. -linux* | k*bsd*-gnu) +# This must be glibc/ELF. +linux* | k*bsd*-gnu | kopensolaris*-gnu) lt_cv_deplibs_check_method=pass_all ;; -netbsd*) +netbsd* | netbsdelf*-gnu) if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|_pic\.a)$' else @@ -3157,6 +3375,21 @@ tpf*) ;; esac ]) + +file_magic_glob= +want_nocaseglob=no +if test "$build" = "$host"; then + case $host_os in + mingw* | pw32*) + if ( shopt | grep nocaseglob ) >/dev/null 2>&1; then + want_nocaseglob=yes + else + file_magic_glob=`echo aAbBcCdDeEfFgGhHiIjJkKlLmMnNoOpPqQrRsStTuUvVwWxXyYzZ | $SED -e "s/\(..\)/s\/[[\1]]\/[[\1]]\/g;/g"` + fi + ;; + esac +fi + file_magic_cmd=$lt_cv_file_magic_cmd deplibs_check_method=$lt_cv_deplibs_check_method test -z "$deplibs_check_method" && deplibs_check_method=unknown @@ -3164,7 +3397,11 @@ test -z "$deplibs_check_method" && deplibs_check_method=unknown _LT_DECL([], [deplibs_check_method], [1], [Method to check whether dependent libraries are shared objects]) _LT_DECL([], [file_magic_cmd], [1], - [Command to use when deplibs_check_method == "file_magic"]) + [Command to use when deplibs_check_method = "file_magic"]) +_LT_DECL([], [file_magic_glob], [1], + [How to find potential files when deplibs_check_method = "file_magic"]) +_LT_DECL([], [want_nocaseglob], [1], + [Find potential files using nocaseglob when deplibs_check_method = "file_magic"]) ])# _LT_CHECK_MAGIC_METHOD @@ -3221,7 +3458,19 @@ if test "$lt_cv_path_NM" != "no"; then NM="$lt_cv_path_NM" else # Didn't find any BSD compatible name lister, look for dumpbin. - AC_CHECK_TOOLS(DUMPBIN, ["dumpbin -symbols" "link -dump -symbols"], :) + if test -n "$DUMPBIN"; then : + # Let the user override the test. + else + AC_CHECK_TOOLS(DUMPBIN, [dumpbin "link -dump"], :) + case `$DUMPBIN -symbols /dev/null 2>&1 | sed '1q'` in + *COFF*) + DUMPBIN="$DUMPBIN -symbols" + ;; + *) + DUMPBIN=: + ;; + esac + fi AC_SUBST([DUMPBIN]) if test "$DUMPBIN" != ":"; then NM="$DUMPBIN" @@ -3234,13 +3483,13 @@ _LT_DECL([], [NM], [1], [A BSD- or MS-compatible name lister])dnl AC_CACHE_CHECK([the name lister ($NM) interface], [lt_cv_nm_interface], [lt_cv_nm_interface="BSD nm" echo "int some_variable = 0;" > conftest.$ac_ext - (eval echo "\"\$as_me:__oline__: $ac_compile\"" >&AS_MESSAGE_LOG_FD) + (eval echo "\"\$as_me:$LINENO: $ac_compile\"" >&AS_MESSAGE_LOG_FD) (eval "$ac_compile" 2>conftest.err) cat conftest.err >&AS_MESSAGE_LOG_FD - (eval echo "\"\$as_me:__oline__: $NM \\\"conftest.$ac_objext\\\"\"" >&AS_MESSAGE_LOG_FD) + (eval echo "\"\$as_me:$LINENO: $NM \\\"conftest.$ac_objext\\\"\"" >&AS_MESSAGE_LOG_FD) (eval "$NM \"conftest.$ac_objext\"" 2>conftest.err > conftest.out) cat conftest.err >&AS_MESSAGE_LOG_FD - (eval echo "\"\$as_me:__oline__: output\"" >&AS_MESSAGE_LOG_FD) + (eval echo "\"\$as_me:$LINENO: output\"" >&AS_MESSAGE_LOG_FD) cat conftest.out >&AS_MESSAGE_LOG_FD if $GREP 'External.*some_variable' conftest.out > /dev/null; then lt_cv_nm_interface="MS dumpbin" @@ -3255,6 +3504,67 @@ dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AM_PROG_NM], []) dnl AC_DEFUN([AC_PROG_NM], []) +# _LT_CHECK_SHAREDLIB_FROM_LINKLIB +# -------------------------------- +# how to determine the name of the shared library +# associated with a specific link library. +# -- PORTME fill in with the dynamic library characteristics +m4_defun([_LT_CHECK_SHAREDLIB_FROM_LINKLIB], +[m4_require([_LT_DECL_EGREP]) +m4_require([_LT_DECL_OBJDUMP]) +m4_require([_LT_DECL_DLLTOOL]) +AC_CACHE_CHECK([how to associate runtime and link libraries], +lt_cv_sharedlib_from_linklib_cmd, +[lt_cv_sharedlib_from_linklib_cmd='unknown' + +case $host_os in +cygwin* | mingw* | pw32* | cegcc*) + # two different shell functions defined in ltmain.sh + # decide which to use based on capabilities of $DLLTOOL + case `$DLLTOOL --help 2>&1` in + *--identify-strict*) + lt_cv_sharedlib_from_linklib_cmd=func_cygming_dll_for_implib + ;; + *) + lt_cv_sharedlib_from_linklib_cmd=func_cygming_dll_for_implib_fallback + ;; + esac + ;; +*) + # fallback: assume linklib IS sharedlib + lt_cv_sharedlib_from_linklib_cmd="$ECHO" + ;; +esac +]) +sharedlib_from_linklib_cmd=$lt_cv_sharedlib_from_linklib_cmd +test -z "$sharedlib_from_linklib_cmd" && sharedlib_from_linklib_cmd=$ECHO + +_LT_DECL([], [sharedlib_from_linklib_cmd], [1], + [Command to associate shared and link libraries]) +])# _LT_CHECK_SHAREDLIB_FROM_LINKLIB + + +# _LT_PATH_MANIFEST_TOOL +# ---------------------- +# locate the manifest tool +m4_defun([_LT_PATH_MANIFEST_TOOL], +[AC_CHECK_TOOL(MANIFEST_TOOL, mt, :) +test -z "$MANIFEST_TOOL" && MANIFEST_TOOL=mt +AC_CACHE_CHECK([if $MANIFEST_TOOL is a manifest tool], [lt_cv_path_mainfest_tool], + [lt_cv_path_mainfest_tool=no + echo "$as_me:$LINENO: $MANIFEST_TOOL '-?'" >&AS_MESSAGE_LOG_FD + $MANIFEST_TOOL '-?' 2>conftest.err > conftest.out + cat conftest.err >&AS_MESSAGE_LOG_FD + if $GREP 'Manifest Tool' conftest.out > /dev/null; then + lt_cv_path_mainfest_tool=yes + fi + rm -f conftest*]) +if test "x$lt_cv_path_mainfest_tool" != xyes; then + MANIFEST_TOOL=: +fi +_LT_DECL([], [MANIFEST_TOOL], [1], [Manifest tool])dnl +])# _LT_PATH_MANIFEST_TOOL + # LT_LIB_M # -------- @@ -3263,7 +3573,7 @@ AC_DEFUN([LT_LIB_M], [AC_REQUIRE([AC_CANONICAL_HOST])dnl LIBM= case $host in -*-*-beos* | *-*-cygwin* | *-*-pw32* | *-*-darwin*) +*-*-beos* | *-*-cegcc* | *-*-cygwin* | *-*-haiku* | *-*-pw32* | *-*-darwin*) # These system don't have libm, or don't need it ;; *-ncr-sysv4.3*) @@ -3291,7 +3601,12 @@ m4_defun([_LT_COMPILER_NO_RTTI], _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)= if test "$GCC" = yes; then - _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=' -fno-builtin' + case $cc_basename in + nvcc*) + _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=' -Xcompiler -fno-builtin' ;; + *) + _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=' -fno-builtin' ;; + esac _LT_COMPILER_OPTION([if $compiler supports -fno-rtti -fno-exceptions], lt_cv_prog_compiler_rtti_exceptions, @@ -3308,6 +3623,7 @@ _LT_TAGDECL([no_builtin_flag], [lt_prog_compiler_no_builtin_flag], [1], m4_defun([_LT_CMD_GLOBAL_SYMBOLS], [AC_REQUIRE([AC_CANONICAL_HOST])dnl AC_REQUIRE([AC_PROG_CC])dnl +AC_REQUIRE([AC_PROG_AWK])dnl AC_REQUIRE([LT_PATH_NM])dnl AC_REQUIRE([LT_PATH_LD])dnl m4_require([_LT_DECL_SED])dnl @@ -3332,7 +3648,7 @@ case $host_os in aix*) symcode='[[BCDT]]' ;; -cygwin* | mingw* | pw32*) +cygwin* | mingw* | pw32* | cegcc*) symcode='[[ABCDGISTW]]' ;; hpux*) @@ -3375,8 +3691,8 @@ esac lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^T .* \(.*\)$/extern int \1();/p' -e 's/^$symcode* .* \(.*\)$/extern char \1;/p'" # Transform an extracted symbol line into symbol name and symbol address -lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([[^ ]]*\) $/ {\\\"\1\\\", (void *) 0},/p' -e 's/^$symcode* \([[^ ]]*\) \([[^ ]]*\)$/ {\"\2\", (void *) \&\2},/p'" -lt_cv_sys_global_symbol_to_c_name_address_lib_prefix="sed -n -e 's/^: \([[^ ]]*\) $/ {\\\"\1\\\", (void *) 0},/p' -e 's/^$symcode* \([[^ ]]*\) \(lib[[^ ]]*\)$/ {\"\2\", (void *) \&\2},/p' -e 's/^$symcode* \([[^ ]]*\) \([[^ ]]*\)$/ {\"lib\2\", (void *) \&\2},/p'" +lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([[^ ]]*\)[[ ]]*$/ {\\\"\1\\\", (void *) 0},/p' -e 's/^$symcode* \([[^ ]]*\) \([[^ ]]*\)$/ {\"\2\", (void *) \&\2},/p'" +lt_cv_sys_global_symbol_to_c_name_address_lib_prefix="sed -n -e 's/^: \([[^ ]]*\)[[ ]]*$/ {\\\"\1\\\", (void *) 0},/p' -e 's/^$symcode* \([[^ ]]*\) \(lib[[^ ]]*\)$/ {\"\2\", (void *) \&\2},/p' -e 's/^$symcode* \([[^ ]]*\) \([[^ ]]*\)$/ {\"lib\2\", (void *) \&\2},/p'" # Handle CRLF in mingw tool chain opt_cr= @@ -3400,6 +3716,7 @@ for ac_symprfx in "" "_"; do # which start with @ or ?. lt_cv_sys_global_symbol_pipe="$AWK ['"\ " {last_section=section; section=\$ 3};"\ +" /^COFF SYMBOL TABLE/{for(i in hide) delete hide[i]};"\ " /Section length .*#relocs.*(pick any)/{hide[last_section]=1};"\ " \$ 0!~/External *\|/{next};"\ " / 0+ UNDEF /{next}; / UNDEF \([^|]\)*()/{next};"\ @@ -3412,6 +3729,7 @@ for ac_symprfx in "" "_"; do else lt_cv_sys_global_symbol_pipe="sed -n -e 's/^.*[[ ]]\($symcode$symcode*\)[[ ]][[ ]]*$ac_symprfx$sympat$opt_cr$/$symxfrm/p'" fi + lt_cv_sys_global_symbol_pipe="$lt_cv_sys_global_symbol_pipe | sed '/ __gnu_lto/d'" # Check to see that the pipe works correctly. pipe_works=no @@ -3433,7 +3751,7 @@ _LT_EOF if AC_TRY_EVAL(ac_compile); then # Now try to grab the symbols. nlist=conftest.nm - if AC_TRY_EVAL(NM conftest.$ac_objext \| $lt_cv_sys_global_symbol_pipe \> $nlist) && test -s "$nlist"; then + if AC_TRY_EVAL(NM conftest.$ac_objext \| "$lt_cv_sys_global_symbol_pipe" \> $nlist) && test -s "$nlist"; then # Try sorting and uniquifying the output. if sort "$nlist" | uniq > "$nlist"T; then mv -f "$nlist"T "$nlist" @@ -3445,6 +3763,18 @@ _LT_EOF if $GREP ' nm_test_var$' "$nlist" >/dev/null; then if $GREP ' nm_test_func$' "$nlist" >/dev/null; then cat <<_LT_EOF > conftest.$ac_ext +/* Keep this code in sync between libtool.m4, ltmain, lt_system.h, and tests. */ +#if defined(_WIN32) || defined(__CYGWIN__) || defined(_WIN32_WCE) +/* DATA imports from DLLs on WIN32 con't be const, because runtime + relocations are performed -- see ld's documentation on pseudo-relocs. */ +# define LT@&t@_DLSYM_CONST +#elif defined(__osf__) +/* This system does not cope well with relocations in const data. */ +# define LT@&t@_DLSYM_CONST +#else +# define LT@&t@_DLSYM_CONST const +#endif + #ifdef __cplusplus extern "C" { #endif @@ -3456,7 +3786,7 @@ _LT_EOF cat <<_LT_EOF >> conftest.$ac_ext /* The mapping between symbol names and symbols. */ -const struct { +LT@&t@_DLSYM_CONST struct { const char *name; void *address; } @@ -3482,15 +3812,15 @@ static const void *lt_preloaded_setup() { _LT_EOF # Now try linking the two files. mv conftest.$ac_objext conftstm.$ac_objext - lt_save_LIBS="$LIBS" - lt_save_CFLAGS="$CFLAGS" + lt_globsym_save_LIBS=$LIBS + lt_globsym_save_CFLAGS=$CFLAGS LIBS="conftstm.$ac_objext" CFLAGS="$CFLAGS$_LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)" if AC_TRY_EVAL(ac_link) && test -s conftest${ac_exeext}; then pipe_works=yes fi - LIBS="$lt_save_LIBS" - CFLAGS="$lt_save_CFLAGS" + LIBS=$lt_globsym_save_LIBS + CFLAGS=$lt_globsym_save_CFLAGS else echo "cannot find nm_test_func in $nlist" >&AS_MESSAGE_LOG_FD fi @@ -3523,6 +3853,13 @@ else AC_MSG_RESULT(ok) fi +# Response file support. +if test "$lt_cv_nm_interface" = "MS dumpbin"; then + nm_file_list_spec='@' +elif $NM --help 2>/dev/null | grep '[[@]]FILE' >/dev/null; then + nm_file_list_spec='@' +fi + _LT_DECL([global_symbol_pipe], [lt_cv_sys_global_symbol_pipe], [1], [Take the output of nm and produce a listing of raw symbols and C names]) _LT_DECL([global_symbol_to_cdecl], [lt_cv_sys_global_symbol_to_cdecl], [1], @@ -3533,6 +3870,8 @@ _LT_DECL([global_symbol_to_c_name_address], _LT_DECL([global_symbol_to_c_name_address_lib_prefix], [lt_cv_sys_global_symbol_to_c_name_address_lib_prefix], [1], [Transform the output of nm in a C name address pair when lib prefix is needed]) +_LT_DECL([], [nm_file_list_spec], [1], + [Specify filename containing input files for $NM]) ]) # _LT_CMD_GLOBAL_SYMBOLS @@ -3544,7 +3883,6 @@ _LT_TAGVAR(lt_prog_compiler_wl, $1)= _LT_TAGVAR(lt_prog_compiler_pic, $1)= _LT_TAGVAR(lt_prog_compiler_static, $1)= -AC_MSG_CHECKING([for $compiler option to produce PIC]) m4_if([$1], [CXX], [ # C++ specific cases for pic, static, wl, etc. if test "$GXX" = yes; then @@ -3578,7 +3916,7 @@ m4_if([$1], [CXX], [ beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) # PIC is the default for these OSes. ;; - mingw* | cygwin* | os2* | pw32*) + mingw* | cygwin* | os2* | pw32* | cegcc*) # This hack is so that the source file can tell whether it is being # built for inclusion in a dll (and should export symbols for example). # Although the cygwin gcc ignores -fPIC, still need this for old-style @@ -3595,6 +3933,11 @@ m4_if([$1], [CXX], [ # DJGPP does not support shared libraries at all _LT_TAGVAR(lt_prog_compiler_pic, $1)= ;; + haiku*) + # PIC is the default for Haiku. + # The "-static" flag exists, but is broken. + _LT_TAGVAR(lt_prog_compiler_static, $1)= + ;; interix[[3-9]]*) # Interix 3.x gcc -fpic/-fPIC options generate broken code. # Instead, we relocate shared libraries at runtime. @@ -3605,10 +3948,11 @@ m4_if([$1], [CXX], [ fi ;; hpux*) - # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but - # not for PA HP-UX. + # PIC is the default for 64-bit PA HP-UX, but not for 32-bit + # PA HP-UX. On IA64 HP-UX, PIC is the default but the pic flag + # sets the default TLS model and affects inlining. case $host_cpu in - hppa*64*|ia64*) + hppa*64*) ;; *) _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' @@ -3643,6 +3987,12 @@ m4_if([$1], [CXX], [ ;; esac ;; + mingw* | cygwin* | os2* | pw32* | cegcc*) + # This hack is so that the source file can tell whether it is being + # built for inclusion in a dll (and should export symbols for example). + m4_if([$1], [GCJ], [], + [_LT_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT']) + ;; dgux*) case $cc_basename in ec++*) @@ -3699,19 +4049,26 @@ m4_if([$1], [CXX], [ ;; esac ;; - linux* | k*bsd*-gnu) + linux* | k*bsd*-gnu | kopensolaris*-gnu) case $cc_basename in KCC*) # KAI C++ Compiler _LT_TAGVAR(lt_prog_compiler_wl, $1)='--backend -Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' ;; - icpc* | ecpc* ) - # Intel C++ + ecpc* ) + # old Intel C++ for x86_64 which still supported -KPIC. _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' ;; + icpc* ) + # Intel C++, used to be incompatible with GCC. + # ICC 10 doesn't accept -KPIC any more. + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' + ;; pgCC* | pgcpp*) # Portland Group C++ compiler _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' @@ -3725,8 +4082,8 @@ m4_if([$1], [CXX], [ _LT_TAGVAR(lt_prog_compiler_pic, $1)= _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' ;; - xlc* | xlC*) - # IBM XL 8.0 on PPC + xlc* | xlC* | bgxl[[cC]]* | mpixl[[cC]]*) + # IBM XL 8.0, 9.0 on PPC and BlueGene _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-qpic' _LT_TAGVAR(lt_prog_compiler_static, $1)='-qstaticlink' @@ -3756,7 +4113,7 @@ m4_if([$1], [CXX], [ ;; esac ;; - netbsd*) + netbsd* | netbsdelf*-gnu) ;; *qnx* | *nto*) # QNX uses GNU C++, but need to define -shared option too, otherwise @@ -3788,7 +4145,7 @@ m4_if([$1], [CXX], [ ;; solaris*) case $cc_basename in - CC*) + CC* | sunCC*) # Sun C++ 4.2, 5.x and Centerline C++ _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' @@ -3877,7 +4234,7 @@ m4_if([$1], [CXX], [ # PIC is the default for these OSes. ;; - mingw* | cygwin* | pw32* | os2*) + mingw* | cygwin* | pw32* | os2* | cegcc*) # This hack is so that the source file can tell whether it is being # built for inclusion in a dll (and should export symbols for example). # Although the cygwin gcc ignores -fPIC, still need this for old-style @@ -3892,11 +4249,18 @@ m4_if([$1], [CXX], [ _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fno-common' ;; + haiku*) + # PIC is the default for Haiku. + # The "-static" flag exists, but is broken. + _LT_TAGVAR(lt_prog_compiler_static, $1)= + ;; + hpux*) - # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but - # not for PA HP-UX. + # PIC is the default for 64-bit PA HP-UX, but not for 32-bit + # PA HP-UX. On IA64 HP-UX, PIC is the default but the pic flag + # sets the default TLS model and affects inlining. case $host_cpu in - hppa*64*|ia64*) + hppa*64*) # +Z the default ;; *) @@ -3933,6 +4297,15 @@ m4_if([$1], [CXX], [ _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' ;; esac + + case $cc_basename in + nvcc*) # Cuda Compiler Driver 2.2 + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Xlinker ' + if test -n "$_LT_TAGVAR(lt_prog_compiler_pic, $1)"; then + _LT_TAGVAR(lt_prog_compiler_pic, $1)="-Xcompiler $_LT_TAGVAR(lt_prog_compiler_pic, $1)" + fi + ;; + esac else # PORTME Check for flag to pass linker flags through the system compiler. case $host_os in @@ -3946,7 +4319,7 @@ m4_if([$1], [CXX], [ fi ;; - mingw* | cygwin* | pw32* | os2*) + mingw* | cygwin* | pw32* | os2* | cegcc*) # This hack is so that the source file can tell whether it is being # built for inclusion in a dll (and should export symbols for example). m4_if([$1], [GCJ], [], @@ -3975,14 +4348,34 @@ m4_if([$1], [CXX], [ _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' ;; - linux* | k*bsd*-gnu) + linux* | k*bsd*-gnu | kopensolaris*-gnu) case $cc_basename in - icc* | ecc* | ifort*) + # old Intel for x86_64 which still supported -KPIC. + ecc*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' ;; - pgcc* | pgf77* | pgf90* | pgf95*) + # icc used to be incompatible with GCC. + # ICC 10 doesn't accept -KPIC any more. + icc* | ifort*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' + ;; + # Lahey Fortran 8.1. + lf95*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_pic, $1)='--shared' + _LT_TAGVAR(lt_prog_compiler_static, $1)='--static' + ;; + nagfor*) + # NAG Fortran compiler + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,-Wl,,' + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-PIC' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + ;; + pgcc* | pgf77* | pgf90* | pgf95* | pgfortran*) # Portland Group compilers (*not* the Pentium gcc compiler, # which looks to be a dead project) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' @@ -3994,25 +4387,40 @@ m4_if([$1], [CXX], [ # All Alpha code is PIC. _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' ;; - xl*) - # IBM XL C 8.0/Fortran 10.1 on PPC + xl* | bgxl* | bgf* | mpixl*) + # IBM XL C 8.0/Fortran 10.1, 11.1 on PPC and BlueGene _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-qpic' _LT_TAGVAR(lt_prog_compiler_static, $1)='-qstaticlink' ;; *) case `$CC -V 2>&1 | sed 5q` in + *Sun\ Ceres\ Fortran* | *Sun*Fortran*\ [[1-7]].* | *Sun*Fortran*\ 8.[[0-3]]*) + # Sun Fortran 8.3 passes all unrecognized flags to the linker + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + _LT_TAGVAR(lt_prog_compiler_wl, $1)='' + ;; + *Sun\ F* | *Sun*Fortran*) + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ' + ;; *Sun\ C*) # Sun C 5.9 _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' ;; - *Sun\ F*) - # Sun Fortran 8.3 passes all unrecognized flags to the linker - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + *Intel*\ [[CF]]*Compiler*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' + ;; + *Portland\ Group*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fpic' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' - _LT_TAGVAR(lt_prog_compiler_wl, $1)='' ;; esac ;; @@ -4044,7 +4452,7 @@ m4_if([$1], [CXX], [ _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' case $cc_basename in - f77* | f90* | f95*) + f77* | f90* | f95* | sunf77* | sunf90* | sunf95*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ';; *) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,';; @@ -4101,9 +4509,11 @@ case $host_os in _LT_TAGVAR(lt_prog_compiler_pic, $1)="$_LT_TAGVAR(lt_prog_compiler_pic, $1)@&t@m4_if([$1],[],[ -DPIC],[m4_if([$1],[CXX],[ -DPIC],[])])" ;; esac -AC_MSG_RESULT([$_LT_TAGVAR(lt_prog_compiler_pic, $1)]) -_LT_TAGDECL([wl], [lt_prog_compiler_wl], [1], - [How to pass a linker flag through the compiler]) + +AC_CACHE_CHECK([for $compiler option to produce PIC], + [_LT_TAGVAR(lt_cv_prog_compiler_pic, $1)], + [_LT_TAGVAR(lt_cv_prog_compiler_pic, $1)=$_LT_TAGVAR(lt_prog_compiler_pic, $1)]) +_LT_TAGVAR(lt_prog_compiler_pic, $1)=$_LT_TAGVAR(lt_cv_prog_compiler_pic, $1) # # Check to make sure the PIC flag actually works. @@ -4122,6 +4532,8 @@ fi _LT_TAGDECL([pic_flag], [lt_prog_compiler_pic], [1], [Additional compiler flags for building library objects]) +_LT_TAGDECL([wl], [lt_prog_compiler_wl], [1], + [How to pass a linker flag through the compiler]) # # Check to make sure the static flag actually works. # @@ -4142,6 +4554,7 @@ _LT_TAGDECL([link_static_flag], [lt_prog_compiler_static], [1], m4_defun([_LT_LINKER_SHLIBS], [AC_REQUIRE([LT_PATH_LD])dnl AC_REQUIRE([LT_PATH_NM])dnl +m4_require([_LT_PATH_MANIFEST_TOOL])dnl m4_require([_LT_FILEUTILS_DEFAULTS])dnl m4_require([_LT_DECL_EGREP])dnl m4_require([_LT_DECL_SED])dnl @@ -4150,27 +4563,40 @@ m4_require([_LT_TAG_COMPILER])dnl AC_MSG_CHECKING([whether the $compiler linker ($LD) supports shared libraries]) m4_if([$1], [CXX], [ _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' + _LT_TAGVAR(exclude_expsyms, $1)=['_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*'] case $host_os in aix[[4-9]]*) # If we're using GNU nm, then we don't want the "-C" option. # -C means demangle to AIX nm, but means don't demangle with GNU nm + # Also, AIX nm treats weak defined symbols like other global defined + # symbols, whereas GNU nm marks them as "W". if $NM -V 2>&1 | $GREP 'GNU' > /dev/null; then - _LT_TAGVAR(export_symbols_cmds, $1)='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B")) && ([substr](\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols' + _LT_TAGVAR(export_symbols_cmds, $1)='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W")) && ([substr](\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols' else _LT_TAGVAR(export_symbols_cmds, $1)='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B")) && ([substr](\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols' fi ;; pw32*) _LT_TAGVAR(export_symbols_cmds, $1)="$ltdll_cmds" - ;; - cygwin* | mingw*) - _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGRS]][[ ]]/s/.*[[ ]]\([[^ ]]*\)/\1 DATA/;/^.*[[ ]]__nm__/s/^.*[[ ]]__nm__\([[^ ]]*\)[[ ]][[^ ]]*/\1 DATA/;/^I[[ ]]/d;/^[[AITW]][[ ]]/s/.* //'\'' | sort | uniq > $export_symbols' - ;; + ;; + cygwin* | mingw* | cegcc*) + case $cc_basename in + cl*) + _LT_TAGVAR(exclude_expsyms, $1)='_NULL_IMPORT_DESCRIPTOR|_IMPORT_DESCRIPTOR_.*' + ;; + *) + _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGRS]][[ ]]/s/.*[[ ]]\([[^ ]]*\)/\1 DATA/;s/^.*[[ ]]__nm__\([[^ ]]*\)[[ ]][[^ ]]*/\1 DATA/;/^I[[ ]]/d;/^[[AITW]][[ ]]/s/.* //'\'' | sort | uniq > $export_symbols' + _LT_TAGVAR(exclude_expsyms, $1)=['[_]+GLOBAL_OFFSET_TABLE_|[_]+GLOBAL__[FID]_.*|[_]+head_[A-Za-z0-9_]+_dll|[A-Za-z0-9_]+_dll_iname'] + ;; + esac + ;; + linux* | k*bsd*-gnu | gnu*) + _LT_TAGVAR(link_all_deplibs, $1)=no + ;; *) _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' - ;; + ;; esac - _LT_TAGVAR(exclude_expsyms, $1)=['_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*'] ], [ runpath_var= _LT_TAGVAR(allow_undefined_flag, $1)= @@ -4185,7 +4611,6 @@ m4_if([$1], [CXX], [ _LT_TAGVAR(hardcode_direct, $1)=no _LT_TAGVAR(hardcode_direct_absolute, $1)=no _LT_TAGVAR(hardcode_libdir_flag_spec, $1)= - _LT_TAGVAR(hardcode_libdir_flag_spec_ld, $1)= _LT_TAGVAR(hardcode_libdir_separator, $1)= _LT_TAGVAR(hardcode_minus_L, $1)=no _LT_TAGVAR(hardcode_shlibpath_var, $1)=unsupported @@ -4215,7 +4640,7 @@ dnl Note also adjust exclude_expsyms for C++ above. extract_expsyms_cmds= case $host_os in - cygwin* | mingw* | pw32*) + cygwin* | mingw* | pw32* | cegcc*) # FIXME: the MSVC++ port hasn't been tested in a loooong time # When not using gcc, we currently assume that we are using # Microsoft Visual C++. @@ -4230,10 +4655,39 @@ dnl Note also adjust exclude_expsyms for C++ above. openbsd*) with_gnu_ld=no ;; + linux* | k*bsd*-gnu | gnu*) + _LT_TAGVAR(link_all_deplibs, $1)=no + ;; esac _LT_TAGVAR(ld_shlibs, $1)=yes + + # On some targets, GNU ld is compatible enough with the native linker + # that we're better off using the native interface for both. + lt_use_gnu_ld_interface=no if test "$with_gnu_ld" = yes; then + case $host_os in + aix*) + # The AIX port of GNU ld has always aspired to compatibility + # with the native linker. However, as the warning in the GNU ld + # block says, versions before 2.19.5* couldn't really create working + # shared libraries, regardless of the interface used. + case `$LD -v 2>&1` in + *\ \(GNU\ Binutils\)\ 2.19.5*) ;; + *\ \(GNU\ Binutils\)\ 2.[[2-9]]*) ;; + *\ \(GNU\ Binutils\)\ [[3-9]]*) ;; + *) + lt_use_gnu_ld_interface=yes + ;; + esac + ;; + *) + lt_use_gnu_ld_interface=yes + ;; + esac + fi + + if test "$lt_use_gnu_ld_interface" = yes; then # If archive_cmds runs LD, not CC, wlarc should be empty wlarc='${wl}' @@ -4251,6 +4705,7 @@ dnl Note also adjust exclude_expsyms for C++ above. fi supports_anon_versioning=no case `$LD -v 2>&1` in + *GNU\ gold*) supports_anon_versioning=yes ;; *\ [[01]].* | *\ 2.[[0-9]].* | *\ 2.10.*) ;; # catch versions < 2.11 *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ... *\ 2.11.92.0.12\ *) supports_anon_versioning=yes ;; # Mandrake 8.2 ... @@ -4266,11 +4721,12 @@ dnl Note also adjust exclude_expsyms for C++ above. _LT_TAGVAR(ld_shlibs, $1)=no cat <<_LT_EOF 1>&2 -*** Warning: the GNU linker, at least up to release 2.9.1, is reported +*** Warning: the GNU linker, at least up to release 2.19, is reported *** to be unable to reliably create shared libraries on AIX. *** Therefore, libtool is disabling shared libraries support. If you -*** really care for shared libraries, you may want to modify your PATH -*** so that a non-GNU linker is found, and then restart. +*** really care for shared libraries, you may want to install binutils +*** 2.20 or above, or modify your PATH so that a non-GNU linker is found. +*** You will then need to restart the configuration process. _LT_EOF fi @@ -4302,14 +4758,16 @@ _LT_EOF fi ;; - cygwin* | mingw* | pw32*) + cygwin* | mingw* | pw32* | cegcc*) # _LT_TAGVAR(hardcode_libdir_flag_spec, $1) is actually meaningless, # as there is no search path for DLLs. _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' + _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-all-symbols' _LT_TAGVAR(allow_undefined_flag, $1)=unsupported _LT_TAGVAR(always_export_symbols, $1)=no _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes - _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGRS]][[ ]]/s/.*[[ ]]\([[^ ]]*\)/\1 DATA/'\'' | $SED -e '\''/^[[AITW]][[ ]]/s/.*[[ ]]//'\'' | sort | uniq > $export_symbols' + _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGRS]][[ ]]/s/.*[[ ]]\([[^ ]]*\)/\1 DATA/;s/^.*[[ ]]__nm__\([[^ ]]*\)[[ ]][[^ ]]*/\1 DATA/;/^I[[ ]]/d;/^[[AITW]][[ ]]/s/.* //'\'' | sort | uniq > $export_symbols' + _LT_TAGVAR(exclude_expsyms, $1)=['[_]+GLOBAL_OFFSET_TABLE_|[_]+GLOBAL__[FID]_.*|[_]+head_[A-Za-z0-9_]+_dll|[A-Za-z0-9_]+_dll_iname'] if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' @@ -4327,6 +4785,11 @@ _LT_EOF fi ;; + haiku*) + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + _LT_TAGVAR(link_all_deplibs, $1)=yes + ;; + interix[[3-9]]*) _LT_TAGVAR(hardcode_direct, $1)=no _LT_TAGVAR(hardcode_shlibpath_var, $1)=no @@ -4342,7 +4805,7 @@ _LT_EOF _LT_TAGVAR(archive_expsym_cmds, $1)='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' ;; - gnu* | linux* | tpf* | k*bsd*-gnu) + gnu* | linux* | tpf* | k*bsd*-gnu | kopensolaris*-gnu) tmp_diet=no if test "$host_os" = linux-dietlibc; then case $cc_basename in @@ -4352,15 +4815,16 @@ _LT_EOF if $LD --help 2>&1 | $EGREP ': supported targets:.* elf' > /dev/null \ && test "$tmp_diet" = no then - tmp_addflag= + tmp_addflag=' $pic_flag' tmp_sharedflag='-shared' case $cc_basename,$host_cpu in pgcc*) # Portland Group C compiler - _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $ECHO \"$new_convenience\"` ${wl}--no-whole-archive' + _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' tmp_addflag=' $pic_flag' ;; - pgf77* | pgf90* | pgf95*) # Portland Group f77 and f90 compilers - _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $ECHO \"$new_convenience\"` ${wl}--no-whole-archive' + pgf77* | pgf90* | pgf95* | pgfortran*) + # Portland Group f77 and f90 compilers + _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' tmp_addflag=' $pic_flag -Mnomain' ;; ecc*,ia64* | icc*,ia64*) # Intel C compiler on ia64 tmp_addflag=' -i_dynamic' ;; @@ -4368,13 +4832,20 @@ _LT_EOF tmp_addflag=' -i_dynamic -nofor_main' ;; ifc* | ifort*) # Intel Fortran compiler tmp_addflag=' -nofor_main' ;; - xl[[cC]]*) # IBM XL C 8.0 on PPC (deal with xlf below) + lf95*) # Lahey Fortran 8.1 + _LT_TAGVAR(whole_archive_flag_spec, $1)= + tmp_sharedflag='--shared' ;; + xl[[cC]]* | bgxl[[cC]]* | mpixl[[cC]]*) # IBM XL C 8.0 on PPC (deal with xlf below) tmp_sharedflag='-qmkshrobj' tmp_addflag= ;; + nvcc*) # Cuda Compiler Driver 2.2 + _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' + _LT_TAGVAR(compiler_needs_object, $1)=yes + ;; esac case `$CC -V 2>&1 | sed 5q` in *Sun\ C*) # Sun C 5.9 - _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; $ECHO \"$new_convenience\"` ${wl}--no-whole-archive' + _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' _LT_TAGVAR(compiler_needs_object, $1)=yes tmp_sharedflag='-G' ;; *Sun\ F*) # Sun Fortran 8.3 @@ -4390,17 +4861,16 @@ _LT_EOF fi case $cc_basename in - xlf*) + xlf* | bgf* | bgxlf* | mpixlf*) # IBM XL Fortran 10.1 on PPC cannot create shared libs itself _LT_TAGVAR(whole_archive_flag_spec, $1)='--whole-archive$convenience --no-whole-archive' - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)= - _LT_TAGVAR(hardcode_libdir_flag_spec_ld, $1)='-rpath $libdir' - _LT_TAGVAR(archive_cmds, $1)='$LD -shared $libobjs $deplibs $compiler_flags -soname $soname -o $lib' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' + _LT_TAGVAR(archive_cmds, $1)='$LD -shared $libobjs $deplibs $linker_flags -soname $soname -o $lib' if test "x$supports_anon_versioning" = xyes; then _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $output_objdir/$libname.ver~ cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ echo "local: *; };" >> $output_objdir/$libname.ver~ - $LD -shared $libobjs $deplibs $compiler_flags -soname $soname -version-script $output_objdir/$libname.ver -o $lib' + $LD -shared $libobjs $deplibs $linker_flags -soname $soname -version-script $output_objdir/$libname.ver -o $lib' fi ;; esac @@ -4409,13 +4879,13 @@ _LT_EOF fi ;; - netbsd*) + netbsd* | netbsdelf*-gnu) if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib' wlarc= else - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' fi ;; @@ -4433,8 +4903,8 @@ _LT_EOF _LT_EOF elif $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' else _LT_TAGVAR(ld_shlibs, $1)=no fi @@ -4480,8 +4950,8 @@ _LT_EOF *) if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' else _LT_TAGVAR(ld_shlibs, $1)=no fi @@ -4521,8 +4991,10 @@ _LT_EOF else # If we're using GNU nm, then we don't want the "-C" option. # -C means demangle to AIX nm, but means don't demangle with GNU nm + # Also, AIX nm treats weak defined symbols like other global + # defined symbols, whereas GNU nm marks them as "W". if $NM -V 2>&1 | $GREP 'GNU' > /dev/null; then - _LT_TAGVAR(export_symbols_cmds, $1)='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B")) && ([substr](\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols' + _LT_TAGVAR(export_symbols_cmds, $1)='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W")) && ([substr](\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols' else _LT_TAGVAR(export_symbols_cmds, $1)='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B")) && ([substr](\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols' fi @@ -4584,6 +5056,7 @@ _LT_EOF if test "$aix_use_runtimelinking" = yes; then shared_flag="$shared_flag "'${wl}-G' fi + _LT_TAGVAR(link_all_deplibs, $1)=no else # not using gcc if test "$host_cpu" = ia64; then @@ -4599,6 +5072,7 @@ _LT_EOF fi fi + _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-bexpall' # It seems that -bexpall does not export symbols beginning with # underscore (_), so it is better to generate a list of symbols to export. _LT_TAGVAR(always_export_symbols, $1)=yes @@ -4608,9 +5082,9 @@ _LT_EOF _LT_TAGVAR(allow_undefined_flag, $1)='-berok' # Determine the default libpath from the value encoded in an # empty executable. - _LT_SYS_MODULE_PATH_AIX + _LT_SYS_MODULE_PATH_AIX([$1]) _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath" - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then $ECHO "X${wl}${allow_undefined_flag}" | $Xsed; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag" + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then func_echo_all "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag" else if test "$host_cpu" = ia64; then _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R $libdir:/usr/lib:/lib' @@ -4619,14 +5093,19 @@ _LT_EOF else # Determine the default libpath from the value encoded in an # empty executable. - _LT_SYS_MODULE_PATH_AIX + _LT_SYS_MODULE_PATH_AIX([$1]) _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath" # Warning - without using the other run time loading flags, # -berok will link without error, but may produce a broken library. _LT_TAGVAR(no_undefined_flag, $1)=' ${wl}-bernotok' _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-berok' - # Exported symbols can be pulled into shared objects from archives - _LT_TAGVAR(whole_archive_flag_spec, $1)='$convenience' + if test "$with_gnu_ld" = yes; then + # We only use this code for GNU lds that support --whole-archive. + _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive$convenience ${wl}--no-whole-archive' + else + # Exported symbols can be pulled into shared objects from archives + _LT_TAGVAR(whole_archive_flag_spec, $1)='$convenience' + fi _LT_TAGVAR(archive_cmds_need_lc, $1)=yes # This is similar to how AIX traditionally builds its shared libraries. _LT_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname' @@ -4653,25 +5132,69 @@ _LT_EOF _LT_TAGVAR(export_dynamic_flag_spec, $1)=-rdynamic ;; - cygwin* | mingw* | pw32*) + cygwin* | mingw* | pw32* | cegcc*) # When not using gcc, we currently assume that we are using # Microsoft Visual C++. # hardcode_libdir_flag_spec is actually meaningless, as there is # no search path for DLLs. - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)=' ' - _LT_TAGVAR(allow_undefined_flag, $1)=unsupported - # Tell ltmain to make .lib files, not .a files. - libext=lib - # Tell ltmain to make .dll files, not .so files. - shrext_cmds=".dll" - # FIXME: Setting linknames here is a bad hack. - _LT_TAGVAR(archive_cmds, $1)='$CC -o $lib $libobjs $compiler_flags `$ECHO "X$deplibs" | $Xsed -e '\''s/ -lc$//'\''` -link -dll~linknames=' - # The linker will automatically build a .lib file if we build a DLL. - _LT_TAGVAR(old_archive_from_new_cmds, $1)='true' - # FIXME: Should let the user specify the lib program. - _LT_TAGVAR(old_archive_cmds, $1)='lib -OUT:$oldlib$oldobjs$old_deplibs' - _LT_TAGVAR(fix_srcfile_path, $1)='`cygpath -w "$srcfile"`' - _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes + case $cc_basename in + cl*) + # Native MSVC + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)=' ' + _LT_TAGVAR(allow_undefined_flag, $1)=unsupported + _LT_TAGVAR(always_export_symbols, $1)=yes + _LT_TAGVAR(file_list_spec, $1)='@' + # Tell ltmain to make .lib files, not .a files. + libext=lib + # Tell ltmain to make .dll files, not .so files. + shrext_cmds=".dll" + # FIXME: Setting linknames here is a bad hack. + _LT_TAGVAR(archive_cmds, $1)='$CC -o $output_objdir/$soname $libobjs $compiler_flags $deplibs -Wl,-dll~linknames=' + _LT_TAGVAR(archive_expsym_cmds, $1)='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then + sed -n -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' -e '1\\\!p' < $export_symbols > $output_objdir/$soname.exp; + else + sed -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' < $export_symbols > $output_objdir/$soname.exp; + fi~ + $CC -o $tool_output_objdir$soname $libobjs $compiler_flags $deplibs "@$tool_output_objdir$soname.exp" -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~ + linknames=' + # The linker will not automatically build a static lib if we build a DLL. + # _LT_TAGVAR(old_archive_from_new_cmds, $1)='true' + _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes + _LT_TAGVAR(exclude_expsyms, $1)='_NULL_IMPORT_DESCRIPTOR|_IMPORT_DESCRIPTOR_.*' + _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGRS]][[ ]]/s/.*[[ ]]\([[^ ]]*\)/\1,DATA/'\'' | $SED -e '\''/^[[AITW]][[ ]]/s/.*[[ ]]//'\'' | sort | uniq > $export_symbols' + # Don't use ranlib + _LT_TAGVAR(old_postinstall_cmds, $1)='chmod 644 $oldlib' + _LT_TAGVAR(postlink_cmds, $1)='lt_outputfile="@OUTPUT@"~ + lt_tool_outputfile="@TOOL_OUTPUT@"~ + case $lt_outputfile in + *.exe|*.EXE) ;; + *) + lt_outputfile="$lt_outputfile.exe" + lt_tool_outputfile="$lt_tool_outputfile.exe" + ;; + esac~ + if test "$MANIFEST_TOOL" != ":" && test -f "$lt_outputfile.manifest"; then + $MANIFEST_TOOL -manifest "$lt_tool_outputfile.manifest" -outputresource:"$lt_tool_outputfile" || exit 1; + $RM "$lt_outputfile.manifest"; + fi' + ;; + *) + # Assume MSVC wrapper + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)=' ' + _LT_TAGVAR(allow_undefined_flag, $1)=unsupported + # Tell ltmain to make .lib files, not .a files. + libext=lib + # Tell ltmain to make .dll files, not .so files. + shrext_cmds=".dll" + # FIXME: Setting linknames here is a bad hack. + _LT_TAGVAR(archive_cmds, $1)='$CC -o $lib $libobjs $compiler_flags `func_echo_all "$deplibs" | $SED '\''s/ -lc$//'\''` -link -dll~linknames=' + # The linker will automatically build a .lib file if we build a DLL. + _LT_TAGVAR(old_archive_from_new_cmds, $1)='true' + # FIXME: Should let the user specify the lib program. + _LT_TAGVAR(old_archive_cmds, $1)='lib -OUT:$oldlib$oldobjs$old_deplibs' + _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes + ;; + esac ;; darwin* | rhapsody*) @@ -4684,10 +5207,6 @@ _LT_EOF _LT_TAGVAR(hardcode_shlibpath_var, $1)=no ;; - freebsd1*) - _LT_TAGVAR(ld_shlibs, $1)=no - ;; - # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor # support. Future versions do this automatically, but an explicit c++rt0.o # does not break anything, and helps significantly (at the cost of a little @@ -4700,7 +5219,7 @@ _LT_EOF ;; # Unfortunately, older versions of FreeBSD 2 do not have this feature. - freebsd2*) + freebsd2.*) _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_minus_L, $1)=yes @@ -4709,7 +5228,7 @@ _LT_EOF # FreeBSD 3 and greater uses gcc -shared to do shared libraries. freebsd* | dragonfly*) - _LT_TAGVAR(archive_cmds, $1)='$CC -shared -o $lib $libobjs $deplibs $compiler_flags' + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_shlibpath_var, $1)=no @@ -4717,7 +5236,7 @@ _LT_EOF hpux9*) if test "$GCC" = yes; then - _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$CC -shared -fPIC ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' + _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$CC -shared $pic_flag ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' else _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' fi @@ -4732,14 +5251,13 @@ _LT_EOF ;; hpux10*) - if test "$GCC" = yes -a "$with_gnu_ld" = no; then - _LT_TAGVAR(archive_cmds, $1)='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' + if test "$GCC" = yes && test "$with_gnu_ld" = no; then + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' else _LT_TAGVAR(archive_cmds, $1)='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags' fi if test "$with_gnu_ld" = no; then _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' - _LT_TAGVAR(hardcode_libdir_flag_spec_ld, $1)='+b $libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)=: _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_direct_absolute, $1)=yes @@ -4751,16 +5269,16 @@ _LT_EOF ;; hpux11*) - if test "$GCC" = yes -a "$with_gnu_ld" = no; then + if test "$GCC" = yes && test "$with_gnu_ld" = no; then case $host_cpu in hppa*64*) _LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' ;; ia64*) - _LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' ;; *) - _LT_TAGVAR(archive_cmds, $1)='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' ;; esac else @@ -4772,7 +5290,14 @@ _LT_EOF _LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' ;; *) - _LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' + m4_if($1, [], [ + # Older versions of the 11.00 compiler do not understand -b yet + # (HP92453-01 A.11.01.20 doesn't, HP92453-01 B.11.X.35175-35176.GP does) + _LT_LINKER_OPTION([if $CC understands -b], + _LT_TAGVAR(lt_cv_prog_compiler__b, $1), [-b], + [_LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'], + [_LT_TAGVAR(archive_cmds, $1)='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags'])], + [_LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags']) ;; esac fi @@ -4800,19 +5325,34 @@ _LT_EOF irix5* | irix6* | nonstopux*) if test "$GCC" = yes; then - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && $ECHO "X${wl}-set_version ${wl}$verstring" | $Xsed` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' # Try to use the -exported_symbol ld option, if it does not # work, assume that -exports_file does not work either and # implicitly export all symbols. - save_LDFLAGS="$LDFLAGS" - LDFLAGS="$LDFLAGS -shared ${wl}-exported_symbol ${wl}foo ${wl}-update_registry ${wl}/dev/null" - AC_LINK_IFELSE(int foo(void) {}, - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && $ECHO "X${wl}-set_version ${wl}$verstring" | $Xsed` ${wl}-update_registry ${wl}${output_objdir}/so_locations ${wl}-exports_file ${wl}$export_symbols -o $lib' - ) - LDFLAGS="$save_LDFLAGS" + # This should be the same for all languages, so no per-tag cache variable. + AC_CACHE_CHECK([whether the $host_os linker accepts -exported_symbol], + [lt_cv_irix_exported_symbol], + [save_LDFLAGS="$LDFLAGS" + LDFLAGS="$LDFLAGS -shared ${wl}-exported_symbol ${wl}foo ${wl}-update_registry ${wl}/dev/null" + AC_LINK_IFELSE( + [AC_LANG_SOURCE( + [AC_LANG_CASE([C], [[int foo (void) { return 0; }]], + [C++], [[int foo (void) { return 0; }]], + [Fortran 77], [[ + subroutine foo + end]], + [Fortran], [[ + subroutine foo + end]])])], + [lt_cv_irix_exported_symbol=yes], + [lt_cv_irix_exported_symbol=no]) + LDFLAGS="$save_LDFLAGS"]) + if test "$lt_cv_irix_exported_symbol" = yes; then + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations ${wl}-exports_file ${wl}$export_symbols -o $lib' + fi else - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && $ECHO "X-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -o $lib' - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && $ECHO "X-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -exports_file $export_symbols -o $lib' + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -exports_file $export_symbols -o $lib' fi _LT_TAGVAR(archive_cmds_need_lc, $1)='no' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' @@ -4821,7 +5361,7 @@ _LT_EOF _LT_TAGVAR(link_all_deplibs, $1)=yes ;; - netbsd*) + netbsd* | netbsdelf*-gnu) if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' # a.out else @@ -4874,17 +5414,17 @@ _LT_EOF _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' _LT_TAGVAR(hardcode_minus_L, $1)=yes _LT_TAGVAR(allow_undefined_flag, $1)=unsupported - _LT_TAGVAR(archive_cmds, $1)='$ECHO "LIBRARY $libname INITINSTANCE" > $output_objdir/$libname.def~$ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~$ECHO DATA >> $output_objdir/$libname.def~$ECHO " SINGLE NONSHARED" >> $output_objdir/$libname.def~$ECHO EXPORTS >> $output_objdir/$libname.def~emxexp $libobjs >> $output_objdir/$libname.def~$CC -Zdll -Zcrtdll -o $lib $libobjs $deplibs $compiler_flags $output_objdir/$libname.def' + _LT_TAGVAR(archive_cmds, $1)='$ECHO "LIBRARY $libname INITINSTANCE" > $output_objdir/$libname.def~$ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~echo DATA >> $output_objdir/$libname.def~echo " SINGLE NONSHARED" >> $output_objdir/$libname.def~echo EXPORTS >> $output_objdir/$libname.def~emxexp $libobjs >> $output_objdir/$libname.def~$CC -Zdll -Zcrtdll -o $lib $libobjs $deplibs $compiler_flags $output_objdir/$libname.def' _LT_TAGVAR(old_archive_from_new_cmds, $1)='emximp -o $output_objdir/$libname.a $output_objdir/$libname.def' ;; osf3*) if test "$GCC" = yes; then _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*' - _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && $ECHO "X${wl}-set_version ${wl}$verstring" | $Xsed` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' + _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' else _LT_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*' - _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && $ECHO "X-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -o $lib' + _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib' fi _LT_TAGVAR(archive_cmds_need_lc, $1)='no' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' @@ -4894,13 +5434,13 @@ _LT_EOF osf4* | osf5*) # as osf3* with the addition of -msym flag if test "$GCC" = yes; then _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*' - _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && $ECHO "X${wl}-set_version ${wl}$verstring" | $Xsed` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' + _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $pic_flag $libobjs $deplibs $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' else _LT_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*' - _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags -msym -soname $soname `test -n "$verstring" && $ECHO "X-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -o $lib' + _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags -msym -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done; printf "%s\\n" "-hidden">> $lib.exp~ - $CC -shared${allow_undefined_flag} ${wl}-input ${wl}$lib.exp $compiler_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && $ECHO "X-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -o $lib~$RM $lib.exp' + $CC -shared${allow_undefined_flag} ${wl}-input ${wl}$lib.exp $compiler_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && $ECHO "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib~$RM $lib.exp' # Both c and cxx compiler support -rpath directly _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir' @@ -4913,9 +5453,9 @@ _LT_EOF _LT_TAGVAR(no_undefined_flag, $1)=' -z defs' if test "$GCC" = yes; then wlarc='${wl}' - _LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-z ${wl}text ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag ${wl}-z ${wl}text ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ - $CC -shared ${wl}-z ${wl}text ${wl}-M ${wl}$lib.exp ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp' + $CC -shared $pic_flag ${wl}-z ${wl}text ${wl}-M ${wl}$lib.exp ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp' else case `$CC -V 2>&1` in *"Compilers 5.0"*) @@ -5091,36 +5631,38 @@ x|xyes) # Test whether the compiler implicitly links with -lc since on some # systems, -lgcc has to come before -lc. If gcc already passes -lc # to ld, don't add -lc before -lgcc. - AC_MSG_CHECKING([whether -lc should be explicitly linked in]) - $RM conftest* - echo "$lt_simple_compile_test_code" > conftest.$ac_ext - - if AC_TRY_EVAL(ac_compile) 2>conftest.err; then - soname=conftest - lib=conftest - libobjs=conftest.$ac_objext - deplibs= - wl=$_LT_TAGVAR(lt_prog_compiler_wl, $1) - pic_flag=$_LT_TAGVAR(lt_prog_compiler_pic, $1) - compiler_flags=-v - linker_flags=-v - verstring= - output_objdir=. - libname=conftest - lt_save_allow_undefined_flag=$_LT_TAGVAR(allow_undefined_flag, $1) - _LT_TAGVAR(allow_undefined_flag, $1)= - if AC_TRY_EVAL(_LT_TAGVAR(archive_cmds, $1) 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1) - then - _LT_TAGVAR(archive_cmds_need_lc, $1)=no - else - _LT_TAGVAR(archive_cmds_need_lc, $1)=yes - fi - _LT_TAGVAR(allow_undefined_flag, $1)=$lt_save_allow_undefined_flag - else - cat conftest.err 1>&5 - fi - $RM conftest* - AC_MSG_RESULT([$_LT_TAGVAR(archive_cmds_need_lc, $1)]) + AC_CACHE_CHECK([whether -lc should be explicitly linked in], + [lt_cv_]_LT_TAGVAR(archive_cmds_need_lc, $1), + [$RM conftest* + echo "$lt_simple_compile_test_code" > conftest.$ac_ext + + if AC_TRY_EVAL(ac_compile) 2>conftest.err; then + soname=conftest + lib=conftest + libobjs=conftest.$ac_objext + deplibs= + wl=$_LT_TAGVAR(lt_prog_compiler_wl, $1) + pic_flag=$_LT_TAGVAR(lt_prog_compiler_pic, $1) + compiler_flags=-v + linker_flags=-v + verstring= + output_objdir=. + libname=conftest + lt_save_allow_undefined_flag=$_LT_TAGVAR(allow_undefined_flag, $1) + _LT_TAGVAR(allow_undefined_flag, $1)= + if AC_TRY_EVAL(_LT_TAGVAR(archive_cmds, $1) 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1) + then + lt_cv_[]_LT_TAGVAR(archive_cmds_need_lc, $1)=no + else + lt_cv_[]_LT_TAGVAR(archive_cmds_need_lc, $1)=yes + fi + _LT_TAGVAR(allow_undefined_flag, $1)=$lt_save_allow_undefined_flag + else + cat conftest.err 1>&5 + fi + $RM conftest* + ]) + _LT_TAGVAR(archive_cmds_need_lc, $1)=$lt_cv_[]_LT_TAGVAR(archive_cmds_need_lc, $1) ;; esac fi @@ -5157,9 +5699,6 @@ _LT_TAGDECL([], [no_undefined_flag], [1], _LT_TAGDECL([], [hardcode_libdir_flag_spec], [1], [Flag to hardcode $libdir into a binary during linking. This must work even if $libdir does not exist]) -_LT_TAGDECL([], [hardcode_libdir_flag_spec_ld], [1], - [[If ld is used when linking, flag to hardcode $libdir into a binary - during linking. This must work even if $libdir does not exist]]) _LT_TAGDECL([], [hardcode_libdir_separator], [1], [Whether we need a single "-rpath" flag with a separated argument]) _LT_TAGDECL([], [hardcode_direct], [0], @@ -5185,8 +5724,6 @@ _LT_TAGDECL([], [inherit_rpath], [0], to runtime path list]) _LT_TAGDECL([], [link_all_deplibs], [0], [Whether libtool must link a program against all its dependency libraries]) -_LT_TAGDECL([], [fix_srcfile_path], [1], - [Fix the shell variable $srcfile for the compiler]) _LT_TAGDECL([], [always_export_symbols], [0], [Set to "yes" if exported symbols are required]) _LT_TAGDECL([], [export_symbols_cmds], [2], @@ -5197,6 +5734,8 @@ _LT_TAGDECL([], [include_expsyms], [1], [Symbols that must always be exported]) _LT_TAGDECL([], [prelink_cmds], [2], [Commands necessary for linking programs (against libraries) with templates]) +_LT_TAGDECL([], [postlink_cmds], [2], + [Commands necessary for finishing linking programs]) _LT_TAGDECL([], [file_list_spec], [1], [Specify filename containing input files]) dnl FIXME: Not yet implemented @@ -5237,6 +5776,10 @@ compiler_DEFAULT=$CC _LT_COMPILER_BOILERPLATE _LT_LINKER_BOILERPLATE +## CAVEAT EMPTOR: +## There is no encapsulation within the following macros, do not change +## the running order or otherwise move them around unless you know exactly +## what you are doing... if test -n "$compiler"; then _LT_COMPILER_NO_RTTI($1) _LT_COMPILER_PIC($1) @@ -5286,37 +5829,22 @@ CC="$lt_save_CC" ])# _LT_LANG_C_CONFIG -# _LT_PROG_CXX -# ------------ -# Since AC_PROG_CXX is broken, in that it returns g++ if there is no c++ -# compiler, we have our own version here. -m4_defun([_LT_PROG_CXX], -[ -pushdef([AC_MSG_ERROR], [_lt_caught_CXX_error=yes]) -AC_PROG_CXX -if test -n "$CXX" && ( test "X$CXX" != "Xno" && - ( (test "X$CXX" = "Xg++" && `g++ -v >/dev/null 2>&1` ) || - (test "X$CXX" != "Xg++"))) ; then - AC_PROG_CXXCPP -else - _lt_caught_CXX_error=yes -fi -popdef([AC_MSG_ERROR]) -])# _LT_PROG_CXX - -dnl aclocal-1.4 backwards compatibility: -dnl AC_DEFUN([_LT_PROG_CXX], []) - - # _LT_LANG_CXX_CONFIG([TAG]) # -------------------------- # Ensure that the configuration variables for a C++ compiler are suitably # defined. These variables are subsequently used by _LT_CONFIG to write # the compiler configuration to `libtool'. m4_defun([_LT_LANG_CXX_CONFIG], -[AC_REQUIRE([_LT_PROG_CXX])dnl -m4_require([_LT_FILEUTILS_DEFAULTS])dnl +[m4_require([_LT_FILEUTILS_DEFAULTS])dnl m4_require([_LT_DECL_EGREP])dnl +m4_require([_LT_PATH_MANIFEST_TOOL])dnl +if test -n "$CXX" && ( test "X$CXX" != "Xno" && + ( (test "X$CXX" = "Xg++" && `g++ -v >/dev/null 2>&1` ) || + (test "X$CXX" != "Xg++"))) ; then + AC_PROG_CXXCPP +else + _lt_caught_CXX_error=yes +fi AC_LANG_PUSH(C++) _LT_TAGVAR(archive_cmds_need_lc, $1)=no @@ -5328,7 +5856,6 @@ _LT_TAGVAR(export_dynamic_flag_spec, $1)= _LT_TAGVAR(hardcode_direct, $1)=no _LT_TAGVAR(hardcode_direct_absolute, $1)=no _LT_TAGVAR(hardcode_libdir_flag_spec, $1)= -_LT_TAGVAR(hardcode_libdir_flag_spec_ld, $1)= _LT_TAGVAR(hardcode_libdir_separator, $1)= _LT_TAGVAR(hardcode_minus_L, $1)=no _LT_TAGVAR(hardcode_shlibpath_var, $1)=unsupported @@ -5338,6 +5865,8 @@ _LT_TAGVAR(module_cmds, $1)= _LT_TAGVAR(module_expsym_cmds, $1)= _LT_TAGVAR(link_all_deplibs, $1)=unknown _LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds +_LT_TAGVAR(reload_flag, $1)=$reload_flag +_LT_TAGVAR(reload_cmds, $1)=$reload_cmds _LT_TAGVAR(no_undefined_flag, $1)= _LT_TAGVAR(whole_archive_flag_spec, $1)= _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=no @@ -5369,6 +5898,7 @@ if test "$_lt_caught_CXX_error" != yes; then # Allow CC to be a program name with arguments. lt_save_CC=$CC + lt_save_CFLAGS=$CFLAGS lt_save_LD=$LD lt_save_GCC=$GCC GCC=$GXX @@ -5386,6 +5916,7 @@ if test "$_lt_caught_CXX_error" != yes; then fi test -z "${LDCXX+set}" || LD=$LDCXX CC=${CXX-"c++"} + CFLAGS=$CXXFLAGS compiler=$CC _LT_TAGVAR(compiler, $1)=$CC _LT_CC_BASENAME([$compiler]) @@ -5407,8 +5938,8 @@ if test "$_lt_caught_CXX_error" != yes; then # Check if GNU C++ uses GNU ld as the underlying linker, since the # archiving commands below assume that GNU ld is being used. if test "$with_gnu_ld" = yes; then - _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib' - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + _LT_TAGVAR(archive_cmds, $1)='$CC $pic_flag -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC $pic_flag -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' @@ -5440,7 +5971,7 @@ if test "$_lt_caught_CXX_error" != yes; then # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. - output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "\-L"' + output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"' else GXX=no @@ -5538,6 +6069,7 @@ if test "$_lt_caught_CXX_error" != yes; then fi fi + _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-bexpall' # It seems that -bexpall does not export symbols beginning with # underscore (_), so it is better to generate a list of symbols to # export. @@ -5548,10 +6080,10 @@ if test "$_lt_caught_CXX_error" != yes; then _LT_TAGVAR(allow_undefined_flag, $1)='-berok' # Determine the default libpath from the value encoded in an empty # executable. - _LT_SYS_MODULE_PATH_AIX + _LT_SYS_MODULE_PATH_AIX([$1]) _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath" - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then $ECHO "X${wl}${allow_undefined_flag}" | $Xsed; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag" + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then func_echo_all "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag" else if test "$host_cpu" = ia64; then _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R $libdir:/usr/lib:/lib' @@ -5560,14 +6092,19 @@ if test "$_lt_caught_CXX_error" != yes; then else # Determine the default libpath from the value encoded in an # empty executable. - _LT_SYS_MODULE_PATH_AIX + _LT_SYS_MODULE_PATH_AIX([$1]) _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath" # Warning - without using the other run time loading flags, # -berok will link without error, but may produce a broken library. _LT_TAGVAR(no_undefined_flag, $1)=' ${wl}-bernotok' _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-berok' - # Exported symbols can be pulled into shared objects from archives - _LT_TAGVAR(whole_archive_flag_spec, $1)='$convenience' + if test "$with_gnu_ld" = yes; then + # We only use this code for GNU lds that support --whole-archive. + _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive$convenience ${wl}--no-whole-archive' + else + # Exported symbols can be pulled into shared objects from archives + _LT_TAGVAR(whole_archive_flag_spec, $1)='$convenience' + fi _LT_TAGVAR(archive_cmds_need_lc, $1)=yes # This is similar to how AIX traditionally builds its shared # libraries. @@ -5596,29 +6133,76 @@ if test "$_lt_caught_CXX_error" != yes; then esac ;; - cygwin* | mingw* | pw32*) - # _LT_TAGVAR(hardcode_libdir_flag_spec, $1) is actually meaningless, - # as there is no search path for DLLs. - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' - _LT_TAGVAR(allow_undefined_flag, $1)=unsupported - _LT_TAGVAR(always_export_symbols, $1)=no - _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes - - if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then - _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' - # If the export-symbols file already is a .def file (1st line - # is EXPORTS), use it as is; otherwise, prepend... - _LT_TAGVAR(archive_expsym_cmds, $1)='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then - cp $export_symbols $output_objdir/$soname.def; - else - echo EXPORTS > $output_objdir/$soname.def; - cat $export_symbols >> $output_objdir/$soname.def; - fi~ - $CC -shared -nostdlib $output_objdir/$soname.def $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' - else - _LT_TAGVAR(ld_shlibs, $1)=no - fi - ;; + cygwin* | mingw* | pw32* | cegcc*) + case $GXX,$cc_basename in + ,cl* | no,cl*) + # Native MSVC + # hardcode_libdir_flag_spec is actually meaningless, as there is + # no search path for DLLs. + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)=' ' + _LT_TAGVAR(allow_undefined_flag, $1)=unsupported + _LT_TAGVAR(always_export_symbols, $1)=yes + _LT_TAGVAR(file_list_spec, $1)='@' + # Tell ltmain to make .lib files, not .a files. + libext=lib + # Tell ltmain to make .dll files, not .so files. + shrext_cmds=".dll" + # FIXME: Setting linknames here is a bad hack. + _LT_TAGVAR(archive_cmds, $1)='$CC -o $output_objdir/$soname $libobjs $compiler_flags $deplibs -Wl,-dll~linknames=' + _LT_TAGVAR(archive_expsym_cmds, $1)='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then + $SED -n -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' -e '1\\\!p' < $export_symbols > $output_objdir/$soname.exp; + else + $SED -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' < $export_symbols > $output_objdir/$soname.exp; + fi~ + $CC -o $tool_output_objdir$soname $libobjs $compiler_flags $deplibs "@$tool_output_objdir$soname.exp" -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~ + linknames=' + # The linker will not automatically build a static lib if we build a DLL. + # _LT_TAGVAR(old_archive_from_new_cmds, $1)='true' + _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes + # Don't use ranlib + _LT_TAGVAR(old_postinstall_cmds, $1)='chmod 644 $oldlib' + _LT_TAGVAR(postlink_cmds, $1)='lt_outputfile="@OUTPUT@"~ + lt_tool_outputfile="@TOOL_OUTPUT@"~ + case $lt_outputfile in + *.exe|*.EXE) ;; + *) + lt_outputfile="$lt_outputfile.exe" + lt_tool_outputfile="$lt_tool_outputfile.exe" + ;; + esac~ + func_to_tool_file "$lt_outputfile"~ + if test "$MANIFEST_TOOL" != ":" && test -f "$lt_outputfile.manifest"; then + $MANIFEST_TOOL -manifest "$lt_tool_outputfile.manifest" -outputresource:"$lt_tool_outputfile" || exit 1; + $RM "$lt_outputfile.manifest"; + fi' + ;; + *) + # g++ + # _LT_TAGVAR(hardcode_libdir_flag_spec, $1) is actually meaningless, + # as there is no search path for DLLs. + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' + _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-all-symbols' + _LT_TAGVAR(allow_undefined_flag, $1)=unsupported + _LT_TAGVAR(always_export_symbols, $1)=no + _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes + + if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then + _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' + # If the export-symbols file already is a .def file (1st line + # is EXPORTS), use it as is; otherwise, prepend... + _LT_TAGVAR(archive_expsym_cmds, $1)='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then + cp $export_symbols $output_objdir/$soname.def; + else + echo EXPORTS > $output_objdir/$soname.def; + cat $export_symbols >> $output_objdir/$soname.def; + fi~ + $CC -shared -nostdlib $output_objdir/$soname.def $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' + else + _LT_TAGVAR(ld_shlibs, $1)=no + fi + ;; + esac + ;; darwin* | rhapsody*) _LT_DARWIN_LINKER_FEATURES($1) ;; @@ -5641,7 +6225,7 @@ if test "$_lt_caught_CXX_error" != yes; then esac ;; - freebsd[[12]]*) + freebsd2.*) # C++ shared libraries reported to be fairly broken before # switch to ELF _LT_TAGVAR(ld_shlibs, $1)=no @@ -5660,6 +6244,11 @@ if test "$_lt_caught_CXX_error" != yes; then gnu*) ;; + haiku*) + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + _LT_TAGVAR(link_all_deplibs, $1)=yes + ;; + hpux9*) _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)=: @@ -5684,11 +6273,11 @@ if test "$_lt_caught_CXX_error" != yes; then # explicitly linking system object files so we need to strip them # from the output so that they don't get included in the library # dependencies. - output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | $EGREP "\-L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; $ECHO "X$list" | $Xsed' + output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | $EGREP "\-L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' ;; *) if test "$GXX" = yes; then - _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$CC -shared -nostdlib -fPIC ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' + _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$CC -shared -nostdlib $pic_flag ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' else # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no @@ -5749,7 +6338,7 @@ if test "$_lt_caught_CXX_error" != yes; then # explicitly linking system object files so we need to strip them # from the output so that they don't get included in the library # dependencies. - output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | $GREP "\-L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; $ECHO "X$list" | $Xsed' + output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | $GREP "\-L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' ;; *) if test "$GXX" = yes; then @@ -5759,10 +6348,10 @@ if test "$_lt_caught_CXX_error" != yes; then _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' ;; ia64*) - _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $pic_flag ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' ;; *) - _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $pic_flag ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' ;; esac fi @@ -5792,7 +6381,7 @@ if test "$_lt_caught_CXX_error" != yes; then case $cc_basename in CC*) # SGI C++ - _LT_TAGVAR(archive_cmds, $1)='$CC -shared -all -multigot $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -soname $soname `test -n "$verstring" && $ECHO "X-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -o $lib' + _LT_TAGVAR(archive_cmds, $1)='$CC -shared -all -multigot $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib' # Archives containing C++ object files must be created using # "CC -ar", where "CC" is the IRIX C++ compiler. This is @@ -5803,9 +6392,9 @@ if test "$_lt_caught_CXX_error" != yes; then *) if test "$GXX" = yes; then if test "$with_gnu_ld" = no; then - _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && $ECHO "X${wl}-set_version ${wl}$verstring" | $Xsed` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' else - _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && $ECHO "X${wl}-set_version ${wl}$verstring" | $Xsed` -o $lib' + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` -o $lib' fi fi _LT_TAGVAR(link_all_deplibs, $1)=yes @@ -5816,7 +6405,7 @@ if test "$_lt_caught_CXX_error" != yes; then _LT_TAGVAR(inherit_rpath, $1)=yes ;; - linux* | k*bsd*-gnu) + linux* | k*bsd*-gnu | kopensolaris*-gnu) case $cc_basename in KCC*) # Kuck and Associates, Inc. (KAI) C++ Compiler @@ -5834,7 +6423,7 @@ if test "$_lt_caught_CXX_error" != yes; then # explicitly linking system object files so we need to strip them # from the output so that they don't get included in the library # dependencies. - output_verbose_link_cmd='templist=`$CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1 | $GREP "ld"`; rm -f libconftest$shared_ext; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; $ECHO "X$list" | $Xsed' + output_verbose_link_cmd='templist=`$CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1 | $GREP "ld"`; rm -f libconftest$shared_ext; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' @@ -5871,26 +6460,26 @@ if test "$_lt_caught_CXX_error" != yes; then pgCC* | pgcpp*) # Portland Group C++ compiler case `$CC -V` in - *pgCC\ [[1-5]]* | *pgcpp\ [[1-5]]*) + *pgCC\ [[1-5]].* | *pgcpp\ [[1-5]].*) _LT_TAGVAR(prelink_cmds, $1)='tpldir=Template.dir~ rm -rf $tpldir~ $CC --prelink_objects --instantiation_dir $tpldir $objs $libobjs $compile_deplibs~ - compile_command="$compile_command `find $tpldir -name \*.o | $NL2SP`"' + compile_command="$compile_command `find $tpldir -name \*.o | sort | $NL2SP`"' _LT_TAGVAR(old_archive_cmds, $1)='tpldir=Template.dir~ rm -rf $tpldir~ $CC --prelink_objects --instantiation_dir $tpldir $oldobjs$old_deplibs~ - $AR $AR_FLAGS $oldlib$oldobjs$old_deplibs `find $tpldir -name \*.o | $NL2SP`~ + $AR $AR_FLAGS $oldlib$oldobjs$old_deplibs `find $tpldir -name \*.o | sort | $NL2SP`~ $RANLIB $oldlib' _LT_TAGVAR(archive_cmds, $1)='tpldir=Template.dir~ rm -rf $tpldir~ $CC --prelink_objects --instantiation_dir $tpldir $predep_objects $libobjs $deplibs $convenience $postdep_objects~ - $CC -shared $pic_flag $predep_objects $libobjs $deplibs `find $tpldir -name \*.o | $NL2SP` $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname -o $lib' + $CC -shared $pic_flag $predep_objects $libobjs $deplibs `find $tpldir -name \*.o | sort | $NL2SP` $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='tpldir=Template.dir~ rm -rf $tpldir~ $CC --prelink_objects --instantiation_dir $tpldir $predep_objects $libobjs $deplibs $convenience $postdep_objects~ - $CC -shared $pic_flag $predep_objects $libobjs $deplibs `find $tpldir -name \*.o | $NL2SP` $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname ${wl}-retain-symbols-file ${wl}$export_symbols -o $lib' + $CC -shared $pic_flag $predep_objects $libobjs $deplibs `find $tpldir -name \*.o | sort | $NL2SP` $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname ${wl}-retain-symbols-file ${wl}$export_symbols -o $lib' ;; - *) # Version 6 will use weak symbols + *) # Version 6 and above use weak symbols _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname ${wl}-retain-symbols-file ${wl}$export_symbols -o $lib' ;; @@ -5898,7 +6487,7 @@ if test "$_lt_caught_CXX_error" != yes; then _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}--rpath ${wl}$libdir' _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' - _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $ECHO \"$new_convenience\"` ${wl}--no-whole-archive' + _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' ;; cxx*) # Compaq C++ @@ -5917,9 +6506,9 @@ if test "$_lt_caught_CXX_error" != yes; then # explicitly linking system object files so we need to strip them # from the output so that they don't get included in the library # dependencies. - output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "ld"`; templist=`$ECHO "X$templist" | $Xsed -e "s/\(^.*ld.*\)\( .*ld .*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; $ECHO "X$list" | $Xsed' + output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "ld"`; templist=`func_echo_all "$templist" | $SED "s/\(^.*ld.*\)\( .*ld .*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "X$list" | $Xsed' ;; - xl*) + xl* | mpixl* | bgxl*) # IBM XL 8.0 on PPC, with GNU ld _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' @@ -5939,13 +6528,13 @@ if test "$_lt_caught_CXX_error" != yes; then _LT_TAGVAR(archive_cmds, $1)='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-retain-symbols-file ${wl}$export_symbols' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' - _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; $ECHO \"$new_convenience\"` ${wl}--no-whole-archive' + _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' _LT_TAGVAR(compiler_needs_object, $1)=yes # Not sure whether something based on # $CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1 # would be better. - output_verbose_link_cmd='echo' + output_verbose_link_cmd='func_echo_all' # Archives containing C++ object files must be created using # "CC -xar", where "CC" is the Sun C++ compiler. This is @@ -6014,7 +6603,7 @@ if test "$_lt_caught_CXX_error" != yes; then _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' _LT_TAGVAR(whole_archive_flag_spec, $1)="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' fi - output_verbose_link_cmd=echo + output_verbose_link_cmd=func_echo_all else _LT_TAGVAR(ld_shlibs, $1)=no fi @@ -6049,15 +6638,15 @@ if test "$_lt_caught_CXX_error" != yes; then case $host in osf3*) _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*' - _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $soname `test -n "$verstring" && $ECHO "X${wl}-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -o $lib' + _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $soname `test -n "$verstring" && func_echo_all "${wl}-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' ;; *) _LT_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*' - _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname `test -n "$verstring" && $ECHO "X-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -o $lib' + _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done~ echo "-hidden">> $lib.exp~ - $CC -shared$allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname ${wl}-input ${wl}$lib.exp `test -n "$verstring" && $ECHO "X-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -o $lib~ + $CC -shared$allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname ${wl}-input ${wl}$lib.exp `test -n "$verstring" && $ECHO "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib~ $RM $lib.exp' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir' ;; @@ -6073,17 +6662,17 @@ if test "$_lt_caught_CXX_error" != yes; then # explicitly linking system object files so we need to strip them # from the output so that they don't get included in the library # dependencies. - output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "ld" | $GREP -v "ld:"`; templist=`$ECHO "X$templist" | $Xsed -e "s/\(^.*ld.*\)\( .*ld.*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; $ECHO "X$list" | $Xsed' + output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "ld" | $GREP -v "ld:"`; templist=`func_echo_all "$templist" | $SED "s/\(^.*ld.*\)\( .*ld.*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' ;; *) if test "$GXX" = yes && test "$with_gnu_ld" = no; then _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*' case $host in osf3*) - _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && $ECHO "X${wl}-set_version ${wl}$verstring" | $Xsed` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' + _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' ;; *) - _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && $ECHO "${wl}-set_version ${wl}$verstring" | $Xsed` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' ;; esac @@ -6093,7 +6682,7 @@ if test "$_lt_caught_CXX_error" != yes; then # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. - output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "\-L"' + output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"' else # FIXME: insert proper C++ library support @@ -6129,7 +6718,7 @@ if test "$_lt_caught_CXX_error" != yes; then solaris*) case $cc_basename in - CC*) + CC* | sunCC*) # Sun C++ 4.2, 5.x and Centerline C++ _LT_TAGVAR(archive_cmds_need_lc,$1)=yes _LT_TAGVAR(no_undefined_flag, $1)=' -zdefs' @@ -6150,7 +6739,7 @@ if test "$_lt_caught_CXX_error" != yes; then esac _LT_TAGVAR(link_all_deplibs, $1)=yes - output_verbose_link_cmd='echo' + output_verbose_link_cmd='func_echo_all' # Archives containing C++ object files must be created using # "CC -xar", where "CC" is the Sun C++ compiler. This is @@ -6170,14 +6759,14 @@ if test "$_lt_caught_CXX_error" != yes; then if test "$GXX" = yes && test "$with_gnu_ld" = no; then _LT_TAGVAR(no_undefined_flag, $1)=' ${wl}-z ${wl}defs' if $CC --version | $GREP -v '^2\.7' > /dev/null; then - _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib' + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ - $CC -shared -nostdlib ${wl}-M $wl$lib.exp -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp' + $CC -shared $pic_flag -nostdlib ${wl}-M $wl$lib.exp -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp' # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. - output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "\-L"' + output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"' else # g++ 2.7 appears to require `-G' NOT `-shared' on this # platform. @@ -6188,7 +6777,7 @@ if test "$_lt_caught_CXX_error" != yes; then # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. - output_verbose_link_cmd='$CC -G $CFLAGS -v conftest.$objext 2>&1 | $GREP "\-L"' + output_verbose_link_cmd='$CC -G $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"' fi _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R $wl$libdir' @@ -6242,6 +6831,10 @@ if test "$_lt_caught_CXX_error" != yes; then CC*) _LT_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + _LT_TAGVAR(old_archive_cmds, $1)='$CC -Tprelink_objects $oldobjs~ + '"$_LT_TAGVAR(old_archive_cmds, $1)" + _LT_TAGVAR(reload_cmds, $1)='$CC -Tprelink_objects $reload_objs~ + '"$_LT_TAGVAR(reload_cmds, $1)" ;; *) _LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' @@ -6297,6 +6890,7 @@ if test "$_lt_caught_CXX_error" != yes; then fi # test -n "$compiler" CC=$lt_save_CC + CFLAGS=$lt_save_CFLAGS LDCXX=$LD LD=$lt_save_LD GCC=$lt_save_GCC @@ -6311,6 +6905,29 @@ AC_LANG_POP ])# _LT_LANG_CXX_CONFIG +# _LT_FUNC_STRIPNAME_CNF +# ---------------------- +# func_stripname_cnf prefix suffix name +# strip PREFIX and SUFFIX off of NAME. +# PREFIX and SUFFIX must not contain globbing or regex special +# characters, hashes, percent signs, but SUFFIX may contain a leading +# dot (in which case that matches only a dot). +# +# This function is identical to the (non-XSI) version of func_stripname, +# except this one can be used by m4 code that may be executed by configure, +# rather than the libtool script. +m4_defun([_LT_FUNC_STRIPNAME_CNF],[dnl +AC_REQUIRE([_LT_DECL_SED]) +AC_REQUIRE([_LT_PROG_ECHO_BACKSLASH]) +func_stripname_cnf () +{ + case ${2} in + .*) func_stripname_result=`$ECHO "${3}" | $SED "s%^${1}%%; s%\\\\${2}\$%%"`;; + *) func_stripname_result=`$ECHO "${3}" | $SED "s%^${1}%%; s%${2}\$%%"`;; + esac +} # func_stripname_cnf +])# _LT_FUNC_STRIPNAME_CNF + # _LT_SYS_HIDDEN_LIBDEPS([TAGNAME]) # --------------------------------- # Figure out "hidden" library dependencies from verbose @@ -6319,6 +6936,7 @@ AC_LANG_POP # objects, libraries and library flags. m4_defun([_LT_SYS_HIDDEN_LIBDEPS], [m4_require([_LT_FILEUTILS_DEFAULTS])dnl +AC_REQUIRE([_LT_FUNC_STRIPNAME_CNF])dnl # Dependencies to place before and after the object being linked: _LT_TAGVAR(predep_objects, $1)= _LT_TAGVAR(postdep_objects, $1)= @@ -6368,7 +6986,20 @@ public class foo { } }; _LT_EOF +], [$1], [GO], [cat > conftest.$ac_ext <<_LT_EOF +package foo +func foo() { +} +_LT_EOF ]) + +_lt_libdeps_save_CFLAGS=$CFLAGS +case "$CC $CFLAGS " in #( +*\ -flto*\ *) CFLAGS="$CFLAGS -fno-lto" ;; +*\ -fwhopr*\ *) CFLAGS="$CFLAGS -fno-whopr" ;; +*\ -fuse-linker-plugin*\ *) CFLAGS="$CFLAGS -fno-use-linker-plugin" ;; +esac + dnl Parse the compiler output and extract the necessary dnl objects, libraries and library flags. if AC_TRY_EVAL(ac_compile); then @@ -6380,7 +7011,7 @@ if AC_TRY_EVAL(ac_compile); then pre_test_object_deps_done=no for p in `eval "$output_verbose_link_cmd"`; do - case $p in + case ${prev}${p} in -L* | -R* | -l*) # Some compilers place space between "-{L,R}" and the path. @@ -6389,13 +7020,22 @@ if AC_TRY_EVAL(ac_compile); then test $p = "-R"; then prev=$p continue - else - prev= fi + # Expand the sysroot to ease extracting the directories later. + if test -z "$prev"; then + case $p in + -L*) func_stripname_cnf '-L' '' "$p"; prev=-L; p=$func_stripname_result ;; + -R*) func_stripname_cnf '-R' '' "$p"; prev=-R; p=$func_stripname_result ;; + -l*) func_stripname_cnf '-l' '' "$p"; prev=-l; p=$func_stripname_result ;; + esac + fi + case $p in + =*) func_stripname_cnf '=' '' "$p"; p=$lt_sysroot$func_stripname_result ;; + esac if test "$pre_test_object_deps_done" = no; then - case $p in - -L* | -R*) + case ${prev} in + -L | -R) # Internal compiler library paths should come after those # provided the user. The postdeps already come after the # user supplied libs so there is no need to process them. @@ -6415,8 +7055,10 @@ if AC_TRY_EVAL(ac_compile); then _LT_TAGVAR(postdeps, $1)="${_LT_TAGVAR(postdeps, $1)} ${prev}${p}" fi fi + prev= ;; + *.lto.$objext) ;; # Ignore GCC LTO objects *.$objext) # This assumes that the test object file only shows up # once in the compiler output. @@ -6452,6 +7094,7 @@ else fi $RM -f confest.$objext +CFLAGS=$_lt_libdeps_save_CFLAGS # PORTME: override above test on systems where it is broken m4_if([$1], [CXX], @@ -6488,7 +7131,7 @@ linux*) solaris*) case $cc_basename in - CC*) + CC* | sunCC*) # The more standards-conforming stlport4 library is # incompatible with the Cstd library. Avoid specifying # it if it's in CXXFLAGS. Ignore libCrun as @@ -6532,32 +7175,16 @@ _LT_TAGDECL([], [compiler_lib_search_path], [1], ])# _LT_SYS_HIDDEN_LIBDEPS -# _LT_PROG_F77 -# ------------ -# Since AC_PROG_F77 is broken, in that it returns the empty string -# if there is no fortran compiler, we have our own version here. -m4_defun([_LT_PROG_F77], -[ -pushdef([AC_MSG_ERROR], [_lt_disable_F77=yes]) -AC_PROG_F77 -if test -z "$F77" || test "X$F77" = "Xno"; then - _lt_disable_F77=yes -fi -popdef([AC_MSG_ERROR]) -])# _LT_PROG_F77 - -dnl aclocal-1.4 backwards compatibility: -dnl AC_DEFUN([_LT_PROG_F77], []) - - # _LT_LANG_F77_CONFIG([TAG]) # -------------------------- # Ensure that the configuration variables for a Fortran 77 compiler are # suitably defined. These variables are subsequently used by _LT_CONFIG # to write the compiler configuration to `libtool'. m4_defun([_LT_LANG_F77_CONFIG], -[AC_REQUIRE([_LT_PROG_F77])dnl -AC_LANG_PUSH(Fortran 77) +[AC_LANG_PUSH(Fortran 77) +if test -z "$F77" || test "X$F77" = "Xno"; then + _lt_disable_F77=yes +fi _LT_TAGVAR(archive_cmds_need_lc, $1)=no _LT_TAGVAR(allow_undefined_flag, $1)= @@ -6567,7 +7194,6 @@ _LT_TAGVAR(export_dynamic_flag_spec, $1)= _LT_TAGVAR(hardcode_direct, $1)=no _LT_TAGVAR(hardcode_direct_absolute, $1)=no _LT_TAGVAR(hardcode_libdir_flag_spec, $1)= -_LT_TAGVAR(hardcode_libdir_flag_spec_ld, $1)= _LT_TAGVAR(hardcode_libdir_separator, $1)= _LT_TAGVAR(hardcode_minus_L, $1)=no _LT_TAGVAR(hardcode_automatic, $1)=no @@ -6576,6 +7202,8 @@ _LT_TAGVAR(module_cmds, $1)= _LT_TAGVAR(module_expsym_cmds, $1)= _LT_TAGVAR(link_all_deplibs, $1)=unknown _LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds +_LT_TAGVAR(reload_flag, $1)=$reload_flag +_LT_TAGVAR(reload_cmds, $1)=$reload_cmds _LT_TAGVAR(no_undefined_flag, $1)= _LT_TAGVAR(whole_archive_flag_spec, $1)= _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=no @@ -6615,7 +7243,9 @@ if test "$_lt_disable_F77" != yes; then # Allow CC to be a program name with arguments. lt_save_CC="$CC" lt_save_GCC=$GCC + lt_save_CFLAGS=$CFLAGS CC=${F77-"f77"} + CFLAGS=$FFLAGS compiler=$CC _LT_TAGVAR(compiler, $1)=$CC _LT_CC_BASENAME([$compiler]) @@ -6669,38 +7299,24 @@ if test "$_lt_disable_F77" != yes; then GCC=$lt_save_GCC CC="$lt_save_CC" + CFLAGS="$lt_save_CFLAGS" fi # test "$_lt_disable_F77" != yes AC_LANG_POP ])# _LT_LANG_F77_CONFIG -# _LT_PROG_FC -# ----------- -# Since AC_PROG_FC is broken, in that it returns the empty string -# if there is no fortran compiler, we have our own version here. -m4_defun([_LT_PROG_FC], -[ -pushdef([AC_MSG_ERROR], [_lt_disable_FC=yes]) -AC_PROG_FC -if test -z "$FC" || test "X$FC" = "Xno"; then - _lt_disable_FC=yes -fi -popdef([AC_MSG_ERROR]) -])# _LT_PROG_FC - -dnl aclocal-1.4 backwards compatibility: -dnl AC_DEFUN([_LT_PROG_FC], []) - - # _LT_LANG_FC_CONFIG([TAG]) # ------------------------- # Ensure that the configuration variables for a Fortran compiler are # suitably defined. These variables are subsequently used by _LT_CONFIG # to write the compiler configuration to `libtool'. m4_defun([_LT_LANG_FC_CONFIG], -[AC_REQUIRE([_LT_PROG_FC])dnl -AC_LANG_PUSH(Fortran) +[AC_LANG_PUSH(Fortran) + +if test -z "$FC" || test "X$FC" = "Xno"; then + _lt_disable_FC=yes +fi _LT_TAGVAR(archive_cmds_need_lc, $1)=no _LT_TAGVAR(allow_undefined_flag, $1)= @@ -6710,7 +7326,6 @@ _LT_TAGVAR(export_dynamic_flag_spec, $1)= _LT_TAGVAR(hardcode_direct, $1)=no _LT_TAGVAR(hardcode_direct_absolute, $1)=no _LT_TAGVAR(hardcode_libdir_flag_spec, $1)= -_LT_TAGVAR(hardcode_libdir_flag_spec_ld, $1)= _LT_TAGVAR(hardcode_libdir_separator, $1)= _LT_TAGVAR(hardcode_minus_L, $1)=no _LT_TAGVAR(hardcode_automatic, $1)=no @@ -6719,6 +7334,8 @@ _LT_TAGVAR(module_cmds, $1)= _LT_TAGVAR(module_expsym_cmds, $1)= _LT_TAGVAR(link_all_deplibs, $1)=unknown _LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds +_LT_TAGVAR(reload_flag, $1)=$reload_flag +_LT_TAGVAR(reload_cmds, $1)=$reload_cmds _LT_TAGVAR(no_undefined_flag, $1)= _LT_TAGVAR(whole_archive_flag_spec, $1)= _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=no @@ -6758,7 +7375,9 @@ if test "$_lt_disable_FC" != yes; then # Allow CC to be a program name with arguments. lt_save_CC="$CC" lt_save_GCC=$GCC + lt_save_CFLAGS=$CFLAGS CC=${FC-"f95"} + CFLAGS=$FCFLAGS compiler=$CC GCC=$ac_cv_fc_compiler_gnu @@ -6814,7 +7433,8 @@ if test "$_lt_disable_FC" != yes; then fi # test -n "$compiler" GCC=$lt_save_GCC - CC="$lt_save_CC" + CC=$lt_save_CC + CFLAGS=$lt_save_CFLAGS fi # test "$_lt_disable_FC" != yes AC_LANG_POP @@ -6851,10 +7471,12 @@ _LT_COMPILER_BOILERPLATE _LT_LINKER_BOILERPLATE # Allow CC to be a program name with arguments. -lt_save_CC="$CC" +lt_save_CC=$CC +lt_save_CFLAGS=$CFLAGS lt_save_GCC=$GCC GCC=yes CC=${GCJ-"gcj"} +CFLAGS=$GCJFLAGS compiler=$CC _LT_TAGVAR(compiler, $1)=$CC _LT_TAGVAR(LD, $1)="$LD" @@ -6864,7 +7486,13 @@ _LT_CC_BASENAME([$compiler]) _LT_TAGVAR(archive_cmds_need_lc, $1)=no _LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds +_LT_TAGVAR(reload_flag, $1)=$reload_flag +_LT_TAGVAR(reload_cmds, $1)=$reload_cmds +## CAVEAT EMPTOR: +## There is no encapsulation within the following macros, do not change +## the running order or otherwise move them around unless you know exactly +## what you are doing... if test -n "$compiler"; then _LT_COMPILER_NO_RTTI($1) _LT_COMPILER_PIC($1) @@ -6879,10 +7507,82 @@ fi AC_LANG_RESTORE GCC=$lt_save_GCC -CC="$lt_save_CC" +CC=$lt_save_CC +CFLAGS=$lt_save_CFLAGS ])# _LT_LANG_GCJ_CONFIG +# _LT_LANG_GO_CONFIG([TAG]) +# -------------------------- +# Ensure that the configuration variables for the GNU Go compiler +# are suitably defined. These variables are subsequently used by _LT_CONFIG +# to write the compiler configuration to `libtool'. +m4_defun([_LT_LANG_GO_CONFIG], +[AC_REQUIRE([LT_PROG_GO])dnl +AC_LANG_SAVE + +# Source file extension for Go test sources. +ac_ext=go + +# Object file extension for compiled Go test sources. +objext=o +_LT_TAGVAR(objext, $1)=$objext + +# Code to be used in simple compile tests +lt_simple_compile_test_code="package main; func main() { }" + +# Code to be used in simple link tests +lt_simple_link_test_code='package main; func main() { }' + +# ltmain only uses $CC for tagged configurations so make sure $CC is set. +_LT_TAG_COMPILER + +# save warnings/boilerplate of simple test code +_LT_COMPILER_BOILERPLATE +_LT_LINKER_BOILERPLATE + +# Allow CC to be a program name with arguments. +lt_save_CC=$CC +lt_save_CFLAGS=$CFLAGS +lt_save_GCC=$GCC +GCC=yes +CC=${GOC-"gccgo"} +CFLAGS=$GOFLAGS +compiler=$CC +_LT_TAGVAR(compiler, $1)=$CC +_LT_TAGVAR(LD, $1)="$LD" +_LT_CC_BASENAME([$compiler]) + +# Go did not exist at the time GCC didn't implicitly link libc in. +_LT_TAGVAR(archive_cmds_need_lc, $1)=no + +_LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds +_LT_TAGVAR(reload_flag, $1)=$reload_flag +_LT_TAGVAR(reload_cmds, $1)=$reload_cmds + +## CAVEAT EMPTOR: +## There is no encapsulation within the following macros, do not change +## the running order or otherwise move them around unless you know exactly +## what you are doing... +if test -n "$compiler"; then + _LT_COMPILER_NO_RTTI($1) + _LT_COMPILER_PIC($1) + _LT_COMPILER_C_O($1) + _LT_COMPILER_FILE_LOCKS($1) + _LT_LINKER_SHLIBS($1) + _LT_LINKER_HARDCODE_LIBPATH($1) + + _LT_CONFIG($1) +fi + +AC_LANG_RESTORE + +GCC=$lt_save_GCC +CC=$lt_save_CC +CFLAGS=$lt_save_CFLAGS +])# _LT_LANG_GO_CONFIG + + # _LT_LANG_RC_CONFIG([TAG]) # ------------------------- # Ensure that the configuration variables for the Windows resource compiler @@ -6914,9 +7614,11 @@ _LT_LINKER_BOILERPLATE # Allow CC to be a program name with arguments. lt_save_CC="$CC" +lt_save_CFLAGS=$CFLAGS lt_save_GCC=$GCC GCC= CC=${RC-"windres"} +CFLAGS= compiler=$CC _LT_TAGVAR(compiler, $1)=$CC _LT_CC_BASENAME([$compiler]) @@ -6929,7 +7631,8 @@ fi GCC=$lt_save_GCC AC_LANG_RESTORE -CC="$lt_save_CC" +CC=$lt_save_CC +CFLAGS=$lt_save_CFLAGS ])# _LT_LANG_RC_CONFIG @@ -6949,6 +7652,13 @@ dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([LT_AC_PROG_GCJ], []) +# LT_PROG_GO +# ---------- +AC_DEFUN([LT_PROG_GO], +[AC_CHECK_TOOL(GOC, gccgo,) +]) + + # LT_PROG_RC # ---------- AC_DEFUN([LT_PROG_RC], @@ -6977,6 +7687,27 @@ AC_SUBST([GREP]) ]) +# _LT_DECL_OBJDUMP +# -------------- +# If we don't have a new enough Autoconf to choose the best objdump +# available, choose the one first in the user's PATH. +m4_defun([_LT_DECL_OBJDUMP], +[AC_CHECK_TOOL(OBJDUMP, objdump, false) +test -z "$OBJDUMP" && OBJDUMP=objdump +_LT_DECL([], [OBJDUMP], [1], [An object symbol dumper]) +AC_SUBST([OBJDUMP]) +]) + +# _LT_DECL_DLLTOOL +# ---------------- +# Ensure DLLTOOL variable is set. +m4_defun([_LT_DECL_DLLTOOL], +[AC_CHECK_TOOL(DLLTOOL, dlltool, false) +test -z "$DLLTOOL" && DLLTOOL=dlltool +_LT_DECL([], [DLLTOOL], [1], [DLL creation program]) +AC_SUBST([DLLTOOL]) +]) + # _LT_DECL_SED # ------------ # Check for a fully-functional sed program, that truncates @@ -6991,10 +7722,12 @@ _LT_DECL([], [Xsed], ["\$SED -e 1s/^X//"], ])# _LT_DECL_SED m4_ifndef([AC_PROG_SED], [ +############################################################ # NOTE: This macro has been submitted for inclusion into # # GNU Autoconf as AC_PROG_SED. When it is available in # # a released version of Autoconf we should remove this # # macro and use it instead. # +############################################################ m4_defun([AC_PROG_SED], [AC_MSG_CHECKING([for a sed that does not truncate output]) @@ -7067,8 +7800,8 @@ m4_defun([_LT_CHECK_SHELL_FEATURES], # Try some XSI features xsi_shell=no ( _lt_dummy="a/b/c" - test "${_lt_dummy##*/},${_lt_dummy%/*},"${_lt_dummy%"$_lt_dummy"}, \ - = c,a/b,, \ + test "${_lt_dummy##*/},${_lt_dummy%/*},${_lt_dummy#??}"${_lt_dummy%"$_lt_dummy"}, \ + = c,a/b,b/c, \ && eval 'test $(( 1 + 1 )) -eq 2 \ && test "${#_lt_dummy}" -eq 5' ) >/dev/null 2>&1 \ && xsi_shell=yes @@ -7107,1841 +7840,162 @@ _LT_DECL([NL2SP], [lt_NL2SP], [1], [turn newlines into spaces])dnl ])# _LT_CHECK_SHELL_FEATURES -# _LT_PROG_XSI_SHELLFNS -# --------------------- -# Bourne and XSI compatible variants of some useful shell functions. -m4_defun([_LT_PROG_XSI_SHELLFNS], -[case $xsi_shell in - yes) - cat << \_LT_EOF >> "$cfgfile" - -# func_dirname file append nondir_replacement -# Compute the dirname of FILE. If nonempty, add APPEND to the result, -# otherwise set result to NONDIR_REPLACEMENT. -func_dirname () -{ - case ${1} in - */*) func_dirname_result="${1%/*}${2}" ;; - * ) func_dirname_result="${3}" ;; - esac -} - -# func_basename file -func_basename () -{ - func_basename_result="${1##*/}" -} - -# func_dirname_and_basename file append nondir_replacement -# perform func_basename and func_dirname in a single function -# call: -# dirname: Compute the dirname of FILE. If nonempty, -# add APPEND to the result, otherwise set result -# to NONDIR_REPLACEMENT. -# value returned in "$func_dirname_result" -# basename: Compute filename of FILE. -# value retuned in "$func_basename_result" -# Implementation must be kept synchronized with func_dirname -# and func_basename. For efficiency, we do not delegate to -# those functions but instead duplicate the functionality here. -func_dirname_and_basename () -{ - case ${1} in - */*) func_dirname_result="${1%/*}${2}" ;; - * ) func_dirname_result="${3}" ;; - esac - func_basename_result="${1##*/}" -} - -# func_stripname prefix suffix name -# strip PREFIX and SUFFIX off of NAME. -# PREFIX and SUFFIX must not contain globbing or regex special -# characters, hashes, percent signs, but SUFFIX may contain a leading -# dot (in which case that matches only a dot). -func_stripname () -{ - # pdksh 5.2.14 does not do ${X%$Y} correctly if both X and Y are - # positional parameters, so assign one to ordinary parameter first. - func_stripname_result=${3} - func_stripname_result=${func_stripname_result#"${1}"} - func_stripname_result=${func_stripname_result%"${2}"} -} - -# func_opt_split -func_opt_split () -{ - func_opt_split_opt=${1%%=*} - func_opt_split_arg=${1#*=} -} - -# func_lo2o object -func_lo2o () -{ - case ${1} in - *.lo) func_lo2o_result=${1%.lo}.${objext} ;; - *) func_lo2o_result=${1} ;; - esac -} - -# func_xform libobj-or-source -func_xform () -{ - func_xform_result=${1%.*}.lo -} - -# func_arith arithmetic-term... -func_arith () -{ - func_arith_result=$(( $[*] )) -} - -# func_len string -# STRING may not start with a hyphen. -func_len () -{ - func_len_result=${#1} -} - -_LT_EOF - ;; - *) # Bourne compatible functions. - cat << \_LT_EOF >> "$cfgfile" - -# func_dirname file append nondir_replacement -# Compute the dirname of FILE. If nonempty, add APPEND to the result, -# otherwise set result to NONDIR_REPLACEMENT. -func_dirname () -{ - # Extract subdirectory from the argument. - func_dirname_result=`$ECHO "X${1}" | $Xsed -e "$dirname"` - if test "X$func_dirname_result" = "X${1}"; then - func_dirname_result="${3}" - else - func_dirname_result="$func_dirname_result${2}" - fi -} - -# func_basename file -func_basename () -{ - func_basename_result=`$ECHO "X${1}" | $Xsed -e "$basename"` -} - -dnl func_dirname_and_basename -dnl A portable version of this function is already defined in general.m4sh -dnl so there is no need for it here. - -# func_stripname prefix suffix name -# strip PREFIX and SUFFIX off of NAME. -# PREFIX and SUFFIX must not contain globbing or regex special -# characters, hashes, percent signs, but SUFFIX may contain a leading -# dot (in which case that matches only a dot). -# func_strip_suffix prefix name -func_stripname () -{ - case ${2} in - .*) func_stripname_result=`$ECHO "X${3}" \ - | $Xsed -e "s%^${1}%%" -e "s%\\\\${2}\$%%"`;; - *) func_stripname_result=`$ECHO "X${3}" \ - | $Xsed -e "s%^${1}%%" -e "s%${2}\$%%"`;; - esac -} - -# sed scripts: -my_sed_long_opt='1s/^\(-[[^=]]*\)=.*/\1/;q' -my_sed_long_arg='1s/^-[[^=]]*=//' - -# func_opt_split -func_opt_split () -{ - func_opt_split_opt=`$ECHO "X${1}" | $Xsed -e "$my_sed_long_opt"` - func_opt_split_arg=`$ECHO "X${1}" | $Xsed -e "$my_sed_long_arg"` -} - -# func_lo2o object -func_lo2o () -{ - func_lo2o_result=`$ECHO "X${1}" | $Xsed -e "$lo2o"` -} - -# func_xform libobj-or-source -func_xform () -{ - func_xform_result=`$ECHO "X${1}" | $Xsed -e 's/\.[[^.]]*$/.lo/'` -} - -# func_arith arithmetic-term... -func_arith () -{ - func_arith_result=`expr "$[@]"` -} - -# func_len string -# STRING may not start with a hyphen. -func_len () -{ - func_len_result=`expr "$[1]" : ".*" 2>/dev/null || echo $max_cmd_len` -} - -_LT_EOF -esac - -case $lt_shell_append in - yes) - cat << \_LT_EOF >> "$cfgfile" - -# func_append var value -# Append VALUE to the end of shell variable VAR. -func_append () -{ - eval "$[1]+=\$[2]" -} -_LT_EOF - ;; - *) - cat << \_LT_EOF >> "$cfgfile" - -# func_append var value -# Append VALUE to the end of shell variable VAR. -func_append () -{ - eval "$[1]=\$$[1]\$[2]" -} - -_LT_EOF - ;; - esac -]) - -# Helper functions for option handling. -*- Autoconf -*- -# -# Copyright (C) 2004, 2005, 2007, 2008 Free Software Foundation, Inc. -# Written by Gary V. Vaughan, 2004 -# -# This file is free software; the Free Software Foundation gives -# unlimited permission to copy and/or distribute it, with or without -# modifications, as long as this notice is preserved. - -# serial 6 ltoptions.m4 - -# This is to help aclocal find these macros, as it can't see m4_define. -AC_DEFUN([LTOPTIONS_VERSION], [m4_if([1])]) - - -# _LT_MANGLE_OPTION(MACRO-NAME, OPTION-NAME) -# ------------------------------------------ -m4_define([_LT_MANGLE_OPTION], -[[_LT_OPTION_]m4_bpatsubst($1__$2, [[^a-zA-Z0-9_]], [_])]) - - -# _LT_SET_OPTION(MACRO-NAME, OPTION-NAME) -# --------------------------------------- -# Set option OPTION-NAME for macro MACRO-NAME, and if there is a -# matching handler defined, dispatch to it. Other OPTION-NAMEs are -# saved as a flag. -m4_define([_LT_SET_OPTION], -[m4_define(_LT_MANGLE_OPTION([$1], [$2]))dnl -m4_ifdef(_LT_MANGLE_DEFUN([$1], [$2]), - _LT_MANGLE_DEFUN([$1], [$2]), - [m4_warning([Unknown $1 option `$2'])])[]dnl +# _LT_PROG_FUNCTION_REPLACE (FUNCNAME, REPLACEMENT-BODY) +# ------------------------------------------------------ +# In `$cfgfile', look for function FUNCNAME delimited by `^FUNCNAME ()$' and +# '^} FUNCNAME ', and replace its body with REPLACEMENT-BODY. +m4_defun([_LT_PROG_FUNCTION_REPLACE], +[dnl { +sed -e '/^$1 ()$/,/^} # $1 /c\ +$1 ()\ +{\ +m4_bpatsubsts([$2], [$], [\\], [^\([ ]\)], [\\\1]) +} # Extended-shell $1 implementation' "$cfgfile" > $cfgfile.tmp \ + && mv -f "$cfgfile.tmp" "$cfgfile" \ + || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") +test 0 -eq $? || _lt_function_replace_fail=: ]) -# _LT_IF_OPTION(MACRO-NAME, OPTION-NAME, IF-SET, [IF-NOT-SET]) -# ------------------------------------------------------------ -# Execute IF-SET if OPTION is set, IF-NOT-SET otherwise. -m4_define([_LT_IF_OPTION], -[m4_ifdef(_LT_MANGLE_OPTION([$1], [$2]), [$3], [$4])]) +# _LT_PROG_REPLACE_SHELLFNS +# ------------------------- +# Replace existing portable implementations of several shell functions with +# equivalent extended shell implementations where those features are available.. +m4_defun([_LT_PROG_REPLACE_SHELLFNS], +[if test x"$xsi_shell" = xyes; then + _LT_PROG_FUNCTION_REPLACE([func_dirname], [dnl + case ${1} in + */*) func_dirname_result="${1%/*}${2}" ;; + * ) func_dirname_result="${3}" ;; + esac]) + + _LT_PROG_FUNCTION_REPLACE([func_basename], [dnl + func_basename_result="${1##*/}"]) + + _LT_PROG_FUNCTION_REPLACE([func_dirname_and_basename], [dnl + case ${1} in + */*) func_dirname_result="${1%/*}${2}" ;; + * ) func_dirname_result="${3}" ;; + esac + func_basename_result="${1##*/}"]) + _LT_PROG_FUNCTION_REPLACE([func_stripname], [dnl + # pdksh 5.2.14 does not do ${X%$Y} correctly if both X and Y are + # positional parameters, so assign one to ordinary parameter first. + func_stripname_result=${3} + func_stripname_result=${func_stripname_result#"${1}"} + func_stripname_result=${func_stripname_result%"${2}"}]) -# _LT_UNLESS_OPTIONS(MACRO-NAME, OPTION-LIST, IF-NOT-SET) -# ------------------------------------------------------- -# Execute IF-NOT-SET unless all options in OPTION-LIST for MACRO-NAME -# are set. -m4_define([_LT_UNLESS_OPTIONS], -[m4_foreach([_LT_Option], m4_split(m4_normalize([$2])), - [m4_ifdef(_LT_MANGLE_OPTION([$1], _LT_Option), - [m4_define([$0_found])])])[]dnl -m4_ifdef([$0_found], [m4_undefine([$0_found])], [$3 -])[]dnl -]) + _LT_PROG_FUNCTION_REPLACE([func_split_long_opt], [dnl + func_split_long_opt_name=${1%%=*} + func_split_long_opt_arg=${1#*=}]) + _LT_PROG_FUNCTION_REPLACE([func_split_short_opt], [dnl + func_split_short_opt_arg=${1#??} + func_split_short_opt_name=${1%"$func_split_short_opt_arg"}]) -# _LT_SET_OPTIONS(MACRO-NAME, OPTION-LIST) -# ---------------------------------------- -# OPTION-LIST is a space-separated list of Libtool options associated -# with MACRO-NAME. If any OPTION has a matching handler declared with -# LT_OPTION_DEFINE, dispatch to that macro; otherwise complain about -# the unknown option and exit. -m4_defun([_LT_SET_OPTIONS], -[# Set options -m4_foreach([_LT_Option], m4_split(m4_normalize([$2])), - [_LT_SET_OPTION([$1], _LT_Option)]) - -m4_if([$1],[LT_INIT],[ - dnl - dnl Simply set some default values (i.e off) if boolean options were not - dnl specified: - _LT_UNLESS_OPTIONS([LT_INIT], [dlopen], [enable_dlopen=no - ]) - _LT_UNLESS_OPTIONS([LT_INIT], [win32-dll], [enable_win32_dll=no - ]) - dnl - dnl If no reference was made to various pairs of opposing options, then - dnl we run the default mode handler for the pair. For example, if neither - dnl `shared' nor `disable-shared' was passed, we enable building of shared - dnl archives by default: - _LT_UNLESS_OPTIONS([LT_INIT], [shared disable-shared], [_LT_ENABLE_SHARED]) - _LT_UNLESS_OPTIONS([LT_INIT], [static disable-static], [_LT_ENABLE_STATIC]) - _LT_UNLESS_OPTIONS([LT_INIT], [pic-only no-pic], [_LT_WITH_PIC]) - _LT_UNLESS_OPTIONS([LT_INIT], [fast-install disable-fast-install], - [_LT_ENABLE_FAST_INSTALL]) - ]) -])# _LT_SET_OPTIONS + _LT_PROG_FUNCTION_REPLACE([func_lo2o], [dnl + case ${1} in + *.lo) func_lo2o_result=${1%.lo}.${objext} ;; + *) func_lo2o_result=${1} ;; + esac]) + _LT_PROG_FUNCTION_REPLACE([func_xform], [ func_xform_result=${1%.*}.lo]) + _LT_PROG_FUNCTION_REPLACE([func_arith], [ func_arith_result=$(( $[*] ))]) -# _LT_MANGLE_DEFUN(MACRO-NAME, OPTION-NAME) -# ----------------------------------------- -m4_define([_LT_MANGLE_DEFUN], -[[_LT_OPTION_DEFUN_]m4_bpatsubst(m4_toupper([$1__$2]), [[^A-Z0-9_]], [_])]) + _LT_PROG_FUNCTION_REPLACE([func_len], [ func_len_result=${#1}]) +fi +if test x"$lt_shell_append" = xyes; then + _LT_PROG_FUNCTION_REPLACE([func_append], [ eval "${1}+=\\${2}"]) -# LT_OPTION_DEFINE(MACRO-NAME, OPTION-NAME, CODE) -# ----------------------------------------------- -m4_define([LT_OPTION_DEFINE], -[m4_define(_LT_MANGLE_DEFUN([$1], [$2]), [$3])[]dnl -])# LT_OPTION_DEFINE + _LT_PROG_FUNCTION_REPLACE([func_append_quoted], [dnl + func_quote_for_eval "${2}" +dnl m4 expansion turns \\\\ into \\, and then the shell eval turns that into \ + eval "${1}+=\\\\ \\$func_quote_for_eval_result"]) + # Save a `func_append' function call where possible by direct use of '+=' + sed -e 's%func_append \([[a-zA-Z_]]\{1,\}\) "%\1+="%g' $cfgfile > $cfgfile.tmp \ + && mv -f "$cfgfile.tmp" "$cfgfile" \ + || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") + test 0 -eq $? || _lt_function_replace_fail=: +else + # Save a `func_append' function call even when '+=' is not available + sed -e 's%func_append \([[a-zA-Z_]]\{1,\}\) "%\1="$\1%g' $cfgfile > $cfgfile.tmp \ + && mv -f "$cfgfile.tmp" "$cfgfile" \ + || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") + test 0 -eq $? || _lt_function_replace_fail=: +fi -# dlopen -# ------ -LT_OPTION_DEFINE([LT_INIT], [dlopen], [enable_dlopen=yes +if test x"$_lt_function_replace_fail" = x":"; then + AC_MSG_WARN([Unable to substitute extended shell functions in $ofile]) +fi ]) -AU_DEFUN([AC_LIBTOOL_DLOPEN], -[_LT_SET_OPTION([LT_INIT], [dlopen]) -AC_DIAGNOSE([obsolete], -[$0: Remove this warning and the call to _LT_SET_OPTION when you -put the `dlopen' option into LT_INIT's first parameter.]) +# _LT_PATH_CONVERSION_FUNCTIONS +# ----------------------------- +# Determine which file name conversion functions should be used by +# func_to_host_file (and, implicitly, by func_to_host_path). These are needed +# for certain cross-compile configurations and native mingw. +m4_defun([_LT_PATH_CONVERSION_FUNCTIONS], +[AC_REQUIRE([AC_CANONICAL_HOST])dnl +AC_REQUIRE([AC_CANONICAL_BUILD])dnl +AC_MSG_CHECKING([how to convert $build file names to $host format]) +AC_CACHE_VAL(lt_cv_to_host_file_cmd, +[case $host in + *-*-mingw* ) + case $build in + *-*-mingw* ) # actually msys + lt_cv_to_host_file_cmd=func_convert_file_msys_to_w32 + ;; + *-*-cygwin* ) + lt_cv_to_host_file_cmd=func_convert_file_cygwin_to_w32 + ;; + * ) # otherwise, assume *nix + lt_cv_to_host_file_cmd=func_convert_file_nix_to_w32 + ;; + esac + ;; + *-*-cygwin* ) + case $build in + *-*-mingw* ) # actually msys + lt_cv_to_host_file_cmd=func_convert_file_msys_to_cygwin + ;; + *-*-cygwin* ) + lt_cv_to_host_file_cmd=func_convert_file_noop + ;; + * ) # otherwise, assume *nix + lt_cv_to_host_file_cmd=func_convert_file_nix_to_cygwin + ;; + esac + ;; + * ) # unhandled hosts (and "normal" native builds) + lt_cv_to_host_file_cmd=func_convert_file_noop + ;; +esac ]) - -dnl aclocal-1.4 backwards compatibility: -dnl AC_DEFUN([AC_LIBTOOL_DLOPEN], []) - - -# win32-dll -# --------- -# Declare package support for building win32 dll's. -LT_OPTION_DEFINE([LT_INIT], [win32-dll], -[enable_win32_dll=yes - +to_host_file_cmd=$lt_cv_to_host_file_cmd +AC_MSG_RESULT([$lt_cv_to_host_file_cmd]) +_LT_DECL([to_host_file_cmd], [lt_cv_to_host_file_cmd], + [0], [convert $build file names to $host format])dnl + +AC_MSG_CHECKING([how to convert $build file names to toolchain format]) +AC_CACHE_VAL(lt_cv_to_tool_file_cmd, +[#assume ordinary cross tools, or native build. +lt_cv_to_tool_file_cmd=func_convert_file_noop case $host in -*-*-cygwin* | *-*-mingw* | *-*-pw32*) - AC_CHECK_TOOL(AS, as, false) - AC_CHECK_TOOL(DLLTOOL, dlltool, false) - AC_CHECK_TOOL(OBJDUMP, objdump, false) - ;; + *-*-mingw* ) + case $build in + *-*-mingw* ) # actually msys + lt_cv_to_tool_file_cmd=func_convert_file_msys_to_w32 + ;; + esac + ;; esac - -test -z "$AS" && AS=as -_LT_DECL([], [AS], [0], [Assembler program])dnl - -test -z "$DLLTOOL" && DLLTOOL=dlltool -_LT_DECL([], [DLLTOOL], [0], [DLL creation program])dnl - -test -z "$OBJDUMP" && OBJDUMP=objdump -_LT_DECL([], [OBJDUMP], [0], [Object dumper program])dnl -])# win32-dll - -AU_DEFUN([AC_LIBTOOL_WIN32_DLL], -[AC_REQUIRE([AC_CANONICAL_HOST])dnl -_LT_SET_OPTION([LT_INIT], [win32-dll]) -AC_DIAGNOSE([obsolete], -[$0: Remove this warning and the call to _LT_SET_OPTION when you -put the `win32-dll' option into LT_INIT's first parameter.]) -]) - -dnl aclocal-1.4 backwards compatibility: -dnl AC_DEFUN([AC_LIBTOOL_WIN32_DLL], []) - - -# _LT_ENABLE_SHARED([DEFAULT]) -# ---------------------------- -# implement the --enable-shared flag, and supports the `shared' and -# `disable-shared' LT_INIT options. -# DEFAULT is either `yes' or `no'. If omitted, it defaults to `yes'. -m4_define([_LT_ENABLE_SHARED], -[m4_define([_LT_ENABLE_SHARED_DEFAULT], [m4_if($1, no, no, yes)])dnl -AC_ARG_ENABLE([shared], - [AS_HELP_STRING([--enable-shared@<:@=PKGS@:>@], - [build shared libraries @<:@default=]_LT_ENABLE_SHARED_DEFAULT[@:>@])], - [p=${PACKAGE-default} - case $enableval in - yes) enable_shared=yes ;; - no) enable_shared=no ;; - *) - enable_shared=no - # Look at the argument we got. We use all the common list separators. - lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," - for pkg in $enableval; do - IFS="$lt_save_ifs" - if test "X$pkg" = "X$p"; then - enable_shared=yes - fi - done - IFS="$lt_save_ifs" - ;; - esac], - [enable_shared=]_LT_ENABLE_SHARED_DEFAULT) - - _LT_DECL([build_libtool_libs], [enable_shared], [0], - [Whether or not to build shared libraries]) -])# _LT_ENABLE_SHARED - -LT_OPTION_DEFINE([LT_INIT], [shared], [_LT_ENABLE_SHARED([yes])]) -LT_OPTION_DEFINE([LT_INIT], [disable-shared], [_LT_ENABLE_SHARED([no])]) - -# Old names: -AC_DEFUN([AC_ENABLE_SHARED], -[_LT_SET_OPTION([LT_INIT], m4_if([$1], [no], [disable-])[shared]) -]) - -AC_DEFUN([AC_DISABLE_SHARED], -[_LT_SET_OPTION([LT_INIT], [disable-shared]) -]) - -AU_DEFUN([AM_ENABLE_SHARED], [AC_ENABLE_SHARED($@)]) -AU_DEFUN([AM_DISABLE_SHARED], [AC_DISABLE_SHARED($@)]) - -dnl aclocal-1.4 backwards compatibility: -dnl AC_DEFUN([AM_ENABLE_SHARED], []) -dnl AC_DEFUN([AM_DISABLE_SHARED], []) - - - -# _LT_ENABLE_STATIC([DEFAULT]) -# ---------------------------- -# implement the --enable-static flag, and support the `static' and -# `disable-static' LT_INIT options. -# DEFAULT is either `yes' or `no'. If omitted, it defaults to `yes'. -m4_define([_LT_ENABLE_STATIC], -[m4_define([_LT_ENABLE_STATIC_DEFAULT], [m4_if($1, no, no, yes)])dnl -AC_ARG_ENABLE([static], - [AS_HELP_STRING([--enable-static@<:@=PKGS@:>@], - [build static libraries @<:@default=]_LT_ENABLE_STATIC_DEFAULT[@:>@])], - [p=${PACKAGE-default} - case $enableval in - yes) enable_static=yes ;; - no) enable_static=no ;; - *) - enable_static=no - # Look at the argument we got. We use all the common list separators. - lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," - for pkg in $enableval; do - IFS="$lt_save_ifs" - if test "X$pkg" = "X$p"; then - enable_static=yes - fi - done - IFS="$lt_save_ifs" - ;; - esac], - [enable_static=]_LT_ENABLE_STATIC_DEFAULT) - - _LT_DECL([build_old_libs], [enable_static], [0], - [Whether or not to build static libraries]) -])# _LT_ENABLE_STATIC - -LT_OPTION_DEFINE([LT_INIT], [static], [_LT_ENABLE_STATIC([yes])]) -LT_OPTION_DEFINE([LT_INIT], [disable-static], [_LT_ENABLE_STATIC([no])]) - -# Old names: -AC_DEFUN([AC_ENABLE_STATIC], -[_LT_SET_OPTION([LT_INIT], m4_if([$1], [no], [disable-])[static]) ]) - -AC_DEFUN([AC_DISABLE_STATIC], -[_LT_SET_OPTION([LT_INIT], [disable-static]) -]) - -AU_DEFUN([AM_ENABLE_STATIC], [AC_ENABLE_STATIC($@)]) -AU_DEFUN([AM_DISABLE_STATIC], [AC_DISABLE_STATIC($@)]) - -dnl aclocal-1.4 backwards compatibility: -dnl AC_DEFUN([AM_ENABLE_STATIC], []) -dnl AC_DEFUN([AM_DISABLE_STATIC], []) - - - -# _LT_ENABLE_FAST_INSTALL([DEFAULT]) -# ---------------------------------- -# implement the --enable-fast-install flag, and support the `fast-install' -# and `disable-fast-install' LT_INIT options. -# DEFAULT is either `yes' or `no'. If omitted, it defaults to `yes'. -m4_define([_LT_ENABLE_FAST_INSTALL], -[m4_define([_LT_ENABLE_FAST_INSTALL_DEFAULT], [m4_if($1, no, no, yes)])dnl -AC_ARG_ENABLE([fast-install], - [AS_HELP_STRING([--enable-fast-install@<:@=PKGS@:>@], - [optimize for fast installation @<:@default=]_LT_ENABLE_FAST_INSTALL_DEFAULT[@:>@])], - [p=${PACKAGE-default} - case $enableval in - yes) enable_fast_install=yes ;; - no) enable_fast_install=no ;; - *) - enable_fast_install=no - # Look at the argument we got. We use all the common list separators. - lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," - for pkg in $enableval; do - IFS="$lt_save_ifs" - if test "X$pkg" = "X$p"; then - enable_fast_install=yes - fi - done - IFS="$lt_save_ifs" - ;; - esac], - [enable_fast_install=]_LT_ENABLE_FAST_INSTALL_DEFAULT) - -_LT_DECL([fast_install], [enable_fast_install], [0], - [Whether or not to optimize for fast installation])dnl -])# _LT_ENABLE_FAST_INSTALL - -LT_OPTION_DEFINE([LT_INIT], [fast-install], [_LT_ENABLE_FAST_INSTALL([yes])]) -LT_OPTION_DEFINE([LT_INIT], [disable-fast-install], [_LT_ENABLE_FAST_INSTALL([no])]) - -# Old names: -AU_DEFUN([AC_ENABLE_FAST_INSTALL], -[_LT_SET_OPTION([LT_INIT], m4_if([$1], [no], [disable-])[fast-install]) -AC_DIAGNOSE([obsolete], -[$0: Remove this warning and the call to _LT_SET_OPTION when you put -the `fast-install' option into LT_INIT's first parameter.]) -]) - -AU_DEFUN([AC_DISABLE_FAST_INSTALL], -[_LT_SET_OPTION([LT_INIT], [disable-fast-install]) -AC_DIAGNOSE([obsolete], -[$0: Remove this warning and the call to _LT_SET_OPTION when you put -the `disable-fast-install' option into LT_INIT's first parameter.]) -]) - -dnl aclocal-1.4 backwards compatibility: -dnl AC_DEFUN([AC_ENABLE_FAST_INSTALL], []) -dnl AC_DEFUN([AM_DISABLE_FAST_INSTALL], []) - - -# _LT_WITH_PIC([MODE]) -# -------------------- -# implement the --with-pic flag, and support the `pic-only' and `no-pic' -# LT_INIT options. -# MODE is either `yes' or `no'. If omitted, it defaults to `both'. -m4_define([_LT_WITH_PIC], -[AC_ARG_WITH([pic], - [AS_HELP_STRING([--with-pic], - [try to use only PIC/non-PIC objects @<:@default=use both@:>@])], - [pic_mode="$withval"], - [pic_mode=default]) - -test -z "$pic_mode" && pic_mode=m4_default([$1], [default]) - -_LT_DECL([], [pic_mode], [0], [What type of objects to build])dnl -])# _LT_WITH_PIC - -LT_OPTION_DEFINE([LT_INIT], [pic-only], [_LT_WITH_PIC([yes])]) -LT_OPTION_DEFINE([LT_INIT], [no-pic], [_LT_WITH_PIC([no])]) - -# Old name: -AU_DEFUN([AC_LIBTOOL_PICMODE], -[_LT_SET_OPTION([LT_INIT], [pic-only]) -AC_DIAGNOSE([obsolete], -[$0: Remove this warning and the call to _LT_SET_OPTION when you -put the `pic-only' option into LT_INIT's first parameter.]) -]) - -dnl aclocal-1.4 backwards compatibility: -dnl AC_DEFUN([AC_LIBTOOL_PICMODE], []) - - -m4_define([_LTDL_MODE], []) -LT_OPTION_DEFINE([LTDL_INIT], [nonrecursive], - [m4_define([_LTDL_MODE], [nonrecursive])]) -LT_OPTION_DEFINE([LTDL_INIT], [recursive], - [m4_define([_LTDL_MODE], [recursive])]) -LT_OPTION_DEFINE([LTDL_INIT], [subproject], - [m4_define([_LTDL_MODE], [subproject])]) - -m4_define([_LTDL_TYPE], []) -LT_OPTION_DEFINE([LTDL_INIT], [installable], - [m4_define([_LTDL_TYPE], [installable])]) -LT_OPTION_DEFINE([LTDL_INIT], [convenience], - [m4_define([_LTDL_TYPE], [convenience])]) - -# ltsugar.m4 -- libtool m4 base layer. -*-Autoconf-*- -# -# Copyright (C) 2004, 2005, 2007 Free Software Foundation, Inc. -# Written by Gary V. Vaughan, 2004 -# -# This file is free software; the Free Software Foundation gives -# unlimited permission to copy and/or distribute it, with or without -# modifications, as long as this notice is preserved. - -# serial 5 ltsugar.m4 - -# This is to help aclocal find these macros, as it can't see m4_define. -AC_DEFUN([LTSUGAR_VERSION], [m4_if([0.1])]) - - -# lt_join(SEP, ARG1, [ARG2...]) -# ----------------------------- -# Produce ARG1SEPARG2...SEPARGn, omitting [] arguments and their -# associated separator. -# Needed until we can rely on m4_join from Autoconf 2.62, since all earlier -# versions in m4sugar had bugs. -m4_define([lt_join], -[m4_if([$#], [1], [], - [$#], [2], [[$2]], - [m4_if([$2], [], [], [[$2]_])$0([$1], m4_shift(m4_shift($@)))])]) -m4_define([_lt_join], -[m4_if([$#$2], [2], [], - [m4_if([$2], [], [], [[$1$2]])$0([$1], m4_shift(m4_shift($@)))])]) - - -# lt_car(LIST) -# lt_cdr(LIST) -# ------------ -# Manipulate m4 lists. -# These macros are necessary as long as will still need to support -# Autoconf-2.59 which quotes differently. -m4_define([lt_car], [[$1]]) -m4_define([lt_cdr], -[m4_if([$#], 0, [m4_fatal([$0: cannot be called without arguments])], - [$#], 1, [], - [m4_dquote(m4_shift($@))])]) -m4_define([lt_unquote], $1) - - -# lt_append(MACRO-NAME, STRING, [SEPARATOR]) -# ------------------------------------------ -# Redefine MACRO-NAME to hold its former content plus `SEPARATOR'`STRING'. -# Note that neither SEPARATOR nor STRING are expanded; they are appended -# to MACRO-NAME as is (leaving the expansion for when MACRO-NAME is invoked). -# No SEPARATOR is output if MACRO-NAME was previously undefined (different -# than defined and empty). -# -# This macro is needed until we can rely on Autoconf 2.62, since earlier -# versions of m4sugar mistakenly expanded SEPARATOR but not STRING. -m4_define([lt_append], -[m4_define([$1], - m4_ifdef([$1], [m4_defn([$1])[$3]])[$2])]) - - - -# lt_combine(SEP, PREFIX-LIST, INFIX, SUFFIX1, [SUFFIX2...]) -# ---------------------------------------------------------- -# Produce a SEP delimited list of all paired combinations of elements of -# PREFIX-LIST with SUFFIX1 through SUFFIXn. Each element of the list -# has the form PREFIXmINFIXSUFFIXn. -m4_define([lt_combine], -[m4_if([$2], [], [], - [m4_if([$4], [], [], - [lt_join(m4_quote(m4_default([$1], [[, ]])), - lt_unquote(m4_split(m4_normalize(m4_foreach(_Lt_prefix, [$2], - [m4_foreach(_Lt_suffix, lt_car([m4_shiftn(3, $@)]), - [_Lt_prefix[]$3[]_Lt_suffix ])])))))])])dnl -]) - - -# lt_if_append_uniq(MACRO-NAME, VARNAME, [SEPARATOR], [UNIQ], [NOT-UNIQ]) -# ----------------------------------------------------------------------- -# Iff MACRO-NAME does not yet contain VARNAME, then append it (delimited -# by SEPARATOR if supplied) and expand UNIQ, else NOT-UNIQ. -m4_define([lt_if_append_uniq], -[m4_ifdef([$1], - [m4_if(m4_index([$3]m4_defn([$1])[$3], [$3$2$3]), [-1], - [lt_append([$1], [$2], [$3])$4], - [$5])], - [lt_append([$1], [$2], [$3])$4])]) - - -# lt_dict_add(DICT, KEY, VALUE) -# ----------------------------- -m4_define([lt_dict_add], -[m4_define([$1($2)], [$3])]) - - -# lt_dict_add_subkey(DICT, KEY, SUBKEY, VALUE) -# -------------------------------------------- -m4_define([lt_dict_add_subkey], -[m4_define([$1($2:$3)], [$4])]) - - -# lt_dict_fetch(DICT, KEY, [SUBKEY]) -# ---------------------------------- -m4_define([lt_dict_fetch], -[m4_ifval([$3], - m4_ifdef([$1($2:$3)], [m4_defn([$1($2:$3)])]), - m4_ifdef([$1($2)], [m4_defn([$1($2)])]))]) - - -# lt_if_dict_fetch(DICT, KEY, [SUBKEY], VALUE, IF-TRUE, [IF-FALSE]) -# ----------------------------------------------------------------- -m4_define([lt_if_dict_fetch], -[m4_if(lt_dict_fetch([$1], [$2], [$3]), [$4], - [$5], - [$6])]) - - -# lt_dict_filter(DICT, [SUBKEY], VALUE, [SEPARATOR], KEY, [...]) -# -------------------------------------------------------------- -m4_define([lt_dict_filter], -[m4_if([$5], [], [], - [lt_join(m4_quote(m4_default([$4], [[, ]])), - lt_unquote(m4_split(m4_normalize(m4_foreach(_Lt_key, lt_car([m4_shiftn(4, $@)]), - [lt_if_dict_fetch([$1], _Lt_key, [$2], [$3], [_Lt_key ])])))))])[]dnl -]) - -# ltversion.m4 -- version numbers -*- Autoconf -*- -# -# Copyright (C) 2004 Free Software Foundation, Inc. -# Written by Scott James Remnant, 2004 -# -# This file is free software; the Free Software Foundation gives -# unlimited permission to copy and/or distribute it, with or without -# modifications, as long as this notice is preserved. - -# Generated from ltversion.in. - -# serial 2976 ltversion.m4 -# This file is part of GNU Libtool - -m4_define([LT_PACKAGE_VERSION], [2.2.4]) -m4_define([LT_PACKAGE_REVISION], [1.2976]) - -AC_DEFUN([LTVERSION_VERSION], -[macro_version='2.2.4' -macro_revision='1.2976' -_LT_DECL(, macro_version, 0, [Which release of libtool.m4 was used?]) -_LT_DECL(, macro_revision, 0) -]) - -# lt~obsolete.m4 -- aclocal satisfying obsolete definitions. -*-Autoconf-*- -# -# Copyright (C) 2004, 2005, 2007 Free Software Foundation, Inc. -# Written by Scott James Remnant, 2004. -# -# This file is free software; the Free Software Foundation gives -# unlimited permission to copy and/or distribute it, with or without -# modifications, as long as this notice is preserved. - -# serial 4 lt~obsolete.m4 - -# These exist entirely to fool aclocal when bootstrapping libtool. -# -# In the past libtool.m4 has provided macros via AC_DEFUN (or AU_DEFUN) -# which have later been changed to m4_define as they aren't part of the -# exported API, or moved to Autoconf or Automake where they belong. -# -# The trouble is, aclocal is a bit thick. It'll see the old AC_DEFUN -# in /usr/share/aclocal/libtool.m4 and remember it, then when it sees us -# using a macro with the same name in our local m4/libtool.m4 it'll -# pull the old libtool.m4 in (it doesn't see our shiny new m4_define -# and doesn't know about Autoconf macros at all.) -# -# So we provide this file, which has a silly filename so it's always -# included after everything else. This provides aclocal with the -# AC_DEFUNs it wants, but when m4 processes it, it doesn't do anything -# because those macros already exist, or will be overwritten later. -# We use AC_DEFUN over AU_DEFUN for compatibility with aclocal-1.6. -# -# Anytime we withdraw an AC_DEFUN or AU_DEFUN, remember to add it here. -# Yes, that means every name once taken will need to remain here until -# we give up compatibility with versions before 1.7, at which point -# we need to keep only those names which we still refer to. - -# This is to help aclocal find these macros, as it can't see m4_define. -AC_DEFUN([LTOBSOLETE_VERSION], [m4_if([1])]) - -m4_ifndef([AC_LIBTOOL_LINKER_OPTION], [AC_DEFUN([AC_LIBTOOL_LINKER_OPTION])]) -m4_ifndef([AC_PROG_EGREP], [AC_DEFUN([AC_PROG_EGREP])]) -m4_ifndef([_LT_AC_PROG_ECHO_BACKSLASH], [AC_DEFUN([_LT_AC_PROG_ECHO_BACKSLASH])]) -m4_ifndef([_LT_AC_SHELL_INIT], [AC_DEFUN([_LT_AC_SHELL_INIT])]) -m4_ifndef([_LT_AC_SYS_LIBPATH_AIX], [AC_DEFUN([_LT_AC_SYS_LIBPATH_AIX])]) -m4_ifndef([_LT_PROG_LTMAIN], [AC_DEFUN([_LT_PROG_LTMAIN])]) -m4_ifndef([_LT_AC_TAGVAR], [AC_DEFUN([_LT_AC_TAGVAR])]) -m4_ifndef([AC_LTDL_ENABLE_INSTALL], [AC_DEFUN([AC_LTDL_ENABLE_INSTALL])]) -m4_ifndef([AC_LTDL_PREOPEN], [AC_DEFUN([AC_LTDL_PREOPEN])]) -m4_ifndef([_LT_AC_SYS_COMPILER], [AC_DEFUN([_LT_AC_SYS_COMPILER])]) -m4_ifndef([_LT_AC_LOCK], [AC_DEFUN([_LT_AC_LOCK])]) -m4_ifndef([AC_LIBTOOL_SYS_OLD_ARCHIVE], [AC_DEFUN([AC_LIBTOOL_SYS_OLD_ARCHIVE])]) -m4_ifndef([_LT_AC_TRY_DLOPEN_SELF], [AC_DEFUN([_LT_AC_TRY_DLOPEN_SELF])]) -m4_ifndef([AC_LIBTOOL_PROG_CC_C_O], [AC_DEFUN([AC_LIBTOOL_PROG_CC_C_O])]) -m4_ifndef([AC_LIBTOOL_SYS_HARD_LINK_LOCKS], [AC_DEFUN([AC_LIBTOOL_SYS_HARD_LINK_LOCKS])]) -m4_ifndef([AC_LIBTOOL_OBJDIR], [AC_DEFUN([AC_LIBTOOL_OBJDIR])]) -m4_ifndef([AC_LTDL_OBJDIR], [AC_DEFUN([AC_LTDL_OBJDIR])]) -m4_ifndef([AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH], [AC_DEFUN([AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH])]) -m4_ifndef([AC_LIBTOOL_SYS_LIB_STRIP], [AC_DEFUN([AC_LIBTOOL_SYS_LIB_STRIP])]) -m4_ifndef([AC_PATH_MAGIC], [AC_DEFUN([AC_PATH_MAGIC])]) -m4_ifndef([AC_PROG_LD_GNU], [AC_DEFUN([AC_PROG_LD_GNU])]) -m4_ifndef([AC_PROG_LD_RELOAD_FLAG], [AC_DEFUN([AC_PROG_LD_RELOAD_FLAG])]) -m4_ifndef([AC_DEPLIBS_CHECK_METHOD], [AC_DEFUN([AC_DEPLIBS_CHECK_METHOD])]) -m4_ifndef([AC_LIBTOOL_PROG_COMPILER_NO_RTTI], [AC_DEFUN([AC_LIBTOOL_PROG_COMPILER_NO_RTTI])]) -m4_ifndef([AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE], [AC_DEFUN([AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE])]) -m4_ifndef([AC_LIBTOOL_PROG_COMPILER_PIC], [AC_DEFUN([AC_LIBTOOL_PROG_COMPILER_PIC])]) -m4_ifndef([AC_LIBTOOL_PROG_LD_SHLIBS], [AC_DEFUN([AC_LIBTOOL_PROG_LD_SHLIBS])]) -m4_ifndef([AC_LIBTOOL_POSTDEP_PREDEP], [AC_DEFUN([AC_LIBTOOL_POSTDEP_PREDEP])]) -m4_ifndef([LT_AC_PROG_EGREP], [AC_DEFUN([LT_AC_PROG_EGREP])]) -m4_ifndef([LT_AC_PROG_SED], [AC_DEFUN([LT_AC_PROG_SED])]) -m4_ifndef([_LT_CC_BASENAME], [AC_DEFUN([_LT_CC_BASENAME])]) -m4_ifndef([_LT_COMPILER_BOILERPLATE], [AC_DEFUN([_LT_COMPILER_BOILERPLATE])]) -m4_ifndef([_LT_LINKER_BOILERPLATE], [AC_DEFUN([_LT_LINKER_BOILERPLATE])]) -m4_ifndef([_AC_PROG_LIBTOOL], [AC_DEFUN([_AC_PROG_LIBTOOL])]) -m4_ifndef([AC_LIBTOOL_SETUP], [AC_DEFUN([AC_LIBTOOL_SETUP])]) -m4_ifndef([_LT_AC_CHECK_DLFCN], [AC_DEFUN([_LT_AC_CHECK_DLFCN])]) -m4_ifndef([AC_LIBTOOL_SYS_DYNAMIC_LINKER], [AC_DEFUN([AC_LIBTOOL_SYS_DYNAMIC_LINKER])]) -m4_ifndef([_LT_AC_TAGCONFIG], [AC_DEFUN([_LT_AC_TAGCONFIG])]) -m4_ifndef([AC_DISABLE_FAST_INSTALL], [AC_DEFUN([AC_DISABLE_FAST_INSTALL])]) -m4_ifndef([_LT_AC_LANG_CXX], [AC_DEFUN([_LT_AC_LANG_CXX])]) -m4_ifndef([_LT_AC_LANG_F77], [AC_DEFUN([_LT_AC_LANG_F77])]) -m4_ifndef([_LT_AC_LANG_GCJ], [AC_DEFUN([_LT_AC_LANG_GCJ])]) -m4_ifndef([AC_LIBTOOL_RC], [AC_DEFUN([AC_LIBTOOL_RC])]) -m4_ifndef([AC_LIBTOOL_LANG_C_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_C_CONFIG])]) -m4_ifndef([_LT_AC_LANG_C_CONFIG], [AC_DEFUN([_LT_AC_LANG_C_CONFIG])]) -m4_ifndef([AC_LIBTOOL_LANG_CXX_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_CXX_CONFIG])]) -m4_ifndef([_LT_AC_LANG_CXX_CONFIG], [AC_DEFUN([_LT_AC_LANG_CXX_CONFIG])]) -m4_ifndef([AC_LIBTOOL_LANG_F77_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_F77_CONFIG])]) -m4_ifndef([_LT_AC_LANG_F77_CONFIG], [AC_DEFUN([_LT_AC_LANG_F77_CONFIG])]) -m4_ifndef([AC_LIBTOOL_LANG_GCJ_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_GCJ_CONFIG])]) -m4_ifndef([_LT_AC_LANG_GCJ_CONFIG], [AC_DEFUN([_LT_AC_LANG_GCJ_CONFIG])]) -m4_ifndef([AC_LIBTOOL_LANG_RC_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_RC_CONFIG])]) -m4_ifndef([_LT_AC_LANG_RC_CONFIG], [AC_DEFUN([_LT_AC_LANG_RC_CONFIG])]) -m4_ifndef([AC_LIBTOOL_CONFIG], [AC_DEFUN([AC_LIBTOOL_CONFIG])]) -m4_ifndef([_LT_AC_FILE_LTDLL_C], [AC_DEFUN([_LT_AC_FILE_LTDLL_C])]) - -# Copyright (C) 2002, 2003, 2005, 2006, 2007 Free Software Foundation, Inc. -# -# This file is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# AM_AUTOMAKE_VERSION(VERSION) -# ---------------------------- -# Automake X.Y traces this macro to ensure aclocal.m4 has been -# generated from the m4 files accompanying Automake X.Y. -# (This private macro should not be called outside this file.) -AC_DEFUN([AM_AUTOMAKE_VERSION], -[am__api_version='1.10' -dnl Some users find AM_AUTOMAKE_VERSION and mistake it for a way to -dnl require some minimum version. Point them to the right macro. -m4_if([$1], [1.10.1], [], - [AC_FATAL([Do not call $0, use AM_INIT_AUTOMAKE([$1]).])])dnl -]) - -# _AM_AUTOCONF_VERSION(VERSION) -# ----------------------------- -# aclocal traces this macro to find the Autoconf version. -# This is a private macro too. Using m4_define simplifies -# the logic in aclocal, which can simply ignore this definition. -m4_define([_AM_AUTOCONF_VERSION], []) - -# AM_SET_CURRENT_AUTOMAKE_VERSION -# ------------------------------- -# Call AM_AUTOMAKE_VERSION and AM_AUTOMAKE_VERSION so they can be traced. -# This function is AC_REQUIREd by AC_INIT_AUTOMAKE. -AC_DEFUN([AM_SET_CURRENT_AUTOMAKE_VERSION], -[AM_AUTOMAKE_VERSION([1.10.1])dnl -m4_ifndef([AC_AUTOCONF_VERSION], - [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl -_AM_AUTOCONF_VERSION(AC_AUTOCONF_VERSION)]) - -# AM_AUX_DIR_EXPAND -*- Autoconf -*- - -# Copyright (C) 2001, 2003, 2005 Free Software Foundation, Inc. -# -# This file is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# For projects using AC_CONFIG_AUX_DIR([foo]), Autoconf sets -# $ac_aux_dir to `$srcdir/foo'. In other projects, it is set to -# `$srcdir', `$srcdir/..', or `$srcdir/../..'. -# -# Of course, Automake must honor this variable whenever it calls a -# tool from the auxiliary directory. The problem is that $srcdir (and -# therefore $ac_aux_dir as well) can be either absolute or relative, -# depending on how configure is run. This is pretty annoying, since -# it makes $ac_aux_dir quite unusable in subdirectories: in the top -# source directory, any form will work fine, but in subdirectories a -# relative path needs to be adjusted first. -# -# $ac_aux_dir/missing -# fails when called from a subdirectory if $ac_aux_dir is relative -# $top_srcdir/$ac_aux_dir/missing -# fails if $ac_aux_dir is absolute, -# fails when called from a subdirectory in a VPATH build with -# a relative $ac_aux_dir -# -# The reason of the latter failure is that $top_srcdir and $ac_aux_dir -# are both prefixed by $srcdir. In an in-source build this is usually -# harmless because $srcdir is `.', but things will broke when you -# start a VPATH build or use an absolute $srcdir. -# -# So we could use something similar to $top_srcdir/$ac_aux_dir/missing, -# iff we strip the leading $srcdir from $ac_aux_dir. That would be: -# am_aux_dir='\$(top_srcdir)/'`expr "$ac_aux_dir" : "$srcdir//*\(.*\)"` -# and then we would define $MISSING as -# MISSING="\${SHELL} $am_aux_dir/missing" -# This will work as long as MISSING is not called from configure, because -# unfortunately $(top_srcdir) has no meaning in configure. -# However there are other variables, like CC, which are often used in -# configure, and could therefore not use this "fixed" $ac_aux_dir. -# -# Another solution, used here, is to always expand $ac_aux_dir to an -# absolute PATH. The drawback is that using absolute paths prevent a -# configured tree to be moved without reconfiguration. - -AC_DEFUN([AM_AUX_DIR_EXPAND], -[dnl Rely on autoconf to set up CDPATH properly. -AC_PREREQ([2.50])dnl -# expand $ac_aux_dir to an absolute path -am_aux_dir=`cd $ac_aux_dir && pwd` -]) - -# AM_CONDITIONAL -*- Autoconf -*- - -# Copyright (C) 1997, 2000, 2001, 2003, 2004, 2005, 2006 -# Free Software Foundation, Inc. -# -# This file is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# serial 8 - -# AM_CONDITIONAL(NAME, SHELL-CONDITION) -# ------------------------------------- -# Define a conditional. -AC_DEFUN([AM_CONDITIONAL], -[AC_PREREQ(2.52)dnl - ifelse([$1], [TRUE], [AC_FATAL([$0: invalid condition: $1])], - [$1], [FALSE], [AC_FATAL([$0: invalid condition: $1])])dnl -AC_SUBST([$1_TRUE])dnl -AC_SUBST([$1_FALSE])dnl -_AM_SUBST_NOTMAKE([$1_TRUE])dnl -_AM_SUBST_NOTMAKE([$1_FALSE])dnl -if $2; then - $1_TRUE= - $1_FALSE='#' -else - $1_TRUE='#' - $1_FALSE= -fi -AC_CONFIG_COMMANDS_PRE( -[if test -z "${$1_TRUE}" && test -z "${$1_FALSE}"; then - AC_MSG_ERROR([[conditional "$1" was never defined. -Usually this means the macro was only invoked conditionally.]]) -fi])]) - -# Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006 -# Free Software Foundation, Inc. -# -# This file is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# serial 9 - -# There are a few dirty hacks below to avoid letting `AC_PROG_CC' be -# written in clear, in which case automake, when reading aclocal.m4, -# will think it sees a *use*, and therefore will trigger all it's -# C support machinery. Also note that it means that autoscan, seeing -# CC etc. in the Makefile, will ask for an AC_PROG_CC use... - - -# _AM_DEPENDENCIES(NAME) -# ---------------------- -# See how the compiler implements dependency checking. -# NAME is "CC", "CXX", "GCJ", or "OBJC". -# We try a few techniques and use that to set a single cache variable. -# -# We don't AC_REQUIRE the corresponding AC_PROG_CC since the latter was -# modified to invoke _AM_DEPENDENCIES(CC); we would have a circular -# dependency, and given that the user is not expected to run this macro, -# just rely on AC_PROG_CC. -AC_DEFUN([_AM_DEPENDENCIES], -[AC_REQUIRE([AM_SET_DEPDIR])dnl -AC_REQUIRE([AM_OUTPUT_DEPENDENCY_COMMANDS])dnl -AC_REQUIRE([AM_MAKE_INCLUDE])dnl -AC_REQUIRE([AM_DEP_TRACK])dnl - -ifelse([$1], CC, [depcc="$CC" am_compiler_list=], - [$1], CXX, [depcc="$CXX" am_compiler_list=], - [$1], OBJC, [depcc="$OBJC" am_compiler_list='gcc3 gcc'], - [$1], UPC, [depcc="$UPC" am_compiler_list=], - [$1], GCJ, [depcc="$GCJ" am_compiler_list='gcc3 gcc'], - [depcc="$$1" am_compiler_list=]) - -AC_CACHE_CHECK([dependency style of $depcc], - [am_cv_$1_dependencies_compiler_type], -[if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then - # We make a subdir and do the tests there. Otherwise we can end up - # making bogus files that we don't know about and never remove. For - # instance it was reported that on HP-UX the gcc test will end up - # making a dummy file named `D' -- because `-MD' means `put the output - # in D'. - mkdir conftest.dir - # Copy depcomp to subdir because otherwise we won't find it if we're - # using a relative directory. - cp "$am_depcomp" conftest.dir - cd conftest.dir - # We will build objects and dependencies in a subdirectory because - # it helps to detect inapplicable dependency modes. For instance - # both Tru64's cc and ICC support -MD to output dependencies as a - # side effect of compilation, but ICC will put the dependencies in - # the current directory while Tru64 will put them in the object - # directory. - mkdir sub - - am_cv_$1_dependencies_compiler_type=none - if test "$am_compiler_list" = ""; then - am_compiler_list=`sed -n ['s/^#*\([a-zA-Z0-9]*\))$/\1/p'] < ./depcomp` - fi - for depmode in $am_compiler_list; do - # Setup a source with many dependencies, because some compilers - # like to wrap large dependency lists on column 80 (with \), and - # we should not choose a depcomp mode which is confused by this. - # - # We need to recreate these files for each test, as the compiler may - # overwrite some of them when testing with obscure command lines. - # This happens at least with the AIX C compiler. - : > sub/conftest.c - for i in 1 2 3 4 5 6; do - echo '#include "conftst'$i'.h"' >> sub/conftest.c - # Using `: > sub/conftst$i.h' creates only sub/conftst1.h with - # Solaris 8's {/usr,}/bin/sh. - touch sub/conftst$i.h - done - echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf - - case $depmode in - nosideeffect) - # after this tag, mechanisms are not by side-effect, so they'll - # only be used when explicitly requested - if test "x$enable_dependency_tracking" = xyes; then - continue - else - break - fi - ;; - none) break ;; - esac - # We check with `-c' and `-o' for the sake of the "dashmstdout" - # mode. It turns out that the SunPro C++ compiler does not properly - # handle `-M -o', and we need to detect this. - if depmode=$depmode \ - source=sub/conftest.c object=sub/conftest.${OBJEXT-o} \ - depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ - $SHELL ./depcomp $depcc -c -o sub/conftest.${OBJEXT-o} sub/conftest.c \ - >/dev/null 2>conftest.err && - grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 && - grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && - grep sub/conftest.${OBJEXT-o} sub/conftest.Po > /dev/null 2>&1 && - ${MAKE-make} -s -f confmf > /dev/null 2>&1; then - # icc doesn't choke on unknown options, it will just issue warnings - # or remarks (even with -Werror). So we grep stderr for any message - # that says an option was ignored or not supported. - # When given -MP, icc 7.0 and 7.1 complain thusly: - # icc: Command line warning: ignoring option '-M'; no argument required - # The diagnosis changed in icc 8.0: - # icc: Command line remark: option '-MP' not supported - if (grep 'ignoring option' conftest.err || - grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else - am_cv_$1_dependencies_compiler_type=$depmode - break - fi - fi - done - - cd .. - rm -rf conftest.dir -else - am_cv_$1_dependencies_compiler_type=none -fi -]) -AC_SUBST([$1DEPMODE], [depmode=$am_cv_$1_dependencies_compiler_type]) -AM_CONDITIONAL([am__fastdep$1], [ - test "x$enable_dependency_tracking" != xno \ - && test "$am_cv_$1_dependencies_compiler_type" = gcc3]) -]) - - -# AM_SET_DEPDIR -# ------------- -# Choose a directory name for dependency files. -# This macro is AC_REQUIREd in _AM_DEPENDENCIES -AC_DEFUN([AM_SET_DEPDIR], -[AC_REQUIRE([AM_SET_LEADING_DOT])dnl -AC_SUBST([DEPDIR], ["${am__leading_dot}deps"])dnl -]) - - -# AM_DEP_TRACK -# ------------ -AC_DEFUN([AM_DEP_TRACK], -[AC_ARG_ENABLE(dependency-tracking, -[ --disable-dependency-tracking speeds up one-time build - --enable-dependency-tracking do not reject slow dependency extractors]) -if test "x$enable_dependency_tracking" != xno; then - am_depcomp="$ac_aux_dir/depcomp" - AMDEPBACKSLASH='\' -fi -AM_CONDITIONAL([AMDEP], [test "x$enable_dependency_tracking" != xno]) -AC_SUBST([AMDEPBACKSLASH])dnl -_AM_SUBST_NOTMAKE([AMDEPBACKSLASH])dnl -]) - -# Generate code to set up dependency tracking. -*- Autoconf -*- - -# Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005 -# Free Software Foundation, Inc. -# -# This file is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -#serial 3 - -# _AM_OUTPUT_DEPENDENCY_COMMANDS -# ------------------------------ -AC_DEFUN([_AM_OUTPUT_DEPENDENCY_COMMANDS], -[for mf in $CONFIG_FILES; do - # Strip MF so we end up with the name of the file. - mf=`echo "$mf" | sed -e 's/:.*$//'` - # Check whether this is an Automake generated Makefile or not. - # We used to match only the files named `Makefile.in', but - # some people rename them; so instead we look at the file content. - # Grep'ing the first line is not enough: some people post-process - # each Makefile.in and add a new line on top of each file to say so. - # Grep'ing the whole file is not good either: AIX grep has a line - # limit of 2048, but all sed's we know have understand at least 4000. - if sed -n 's,^#.*generated by automake.*,X,p' "$mf" | grep X >/dev/null 2>&1; then - dirpart=`AS_DIRNAME("$mf")` - else - continue - fi - # Extract the definition of DEPDIR, am__include, and am__quote - # from the Makefile without running `make'. - DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"` - test -z "$DEPDIR" && continue - am__include=`sed -n 's/^am__include = //p' < "$mf"` - test -z "am__include" && continue - am__quote=`sed -n 's/^am__quote = //p' < "$mf"` - # When using ansi2knr, U may be empty or an underscore; expand it - U=`sed -n 's/^U = //p' < "$mf"` - # Find all dependency output files, they are included files with - # $(DEPDIR) in their names. We invoke sed twice because it is the - # simplest approach to changing $(DEPDIR) to its actual value in the - # expansion. - for file in `sed -n " - s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \ - sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g' -e 's/\$U/'"$U"'/g'`; do - # Make sure the directory exists. - test -f "$dirpart/$file" && continue - fdir=`AS_DIRNAME(["$file"])` - AS_MKDIR_P([$dirpart/$fdir]) - # echo "creating $dirpart/$file" - echo '# dummy' > "$dirpart/$file" - done -done -])# _AM_OUTPUT_DEPENDENCY_COMMANDS - - -# AM_OUTPUT_DEPENDENCY_COMMANDS -# ----------------------------- -# This macro should only be invoked once -- use via AC_REQUIRE. -# -# This code is only required when automatic dependency tracking -# is enabled. FIXME. This creates each `.P' file that we will -# need in order to bootstrap the dependency handling code. -AC_DEFUN([AM_OUTPUT_DEPENDENCY_COMMANDS], -[AC_CONFIG_COMMANDS([depfiles], - [test x"$AMDEP_TRUE" != x"" || _AM_OUTPUT_DEPENDENCY_COMMANDS], - [AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir"]) -]) - -# Do all the work for Automake. -*- Autoconf -*- - -# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, -# 2005, 2006, 2008 Free Software Foundation, Inc. -# -# This file is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# serial 13 - -# This macro actually does too much. Some checks are only needed if -# your package does certain things. But this isn't really a big deal. - -# AM_INIT_AUTOMAKE(PACKAGE, VERSION, [NO-DEFINE]) -# AM_INIT_AUTOMAKE([OPTIONS]) -# ----------------------------------------------- -# The call with PACKAGE and VERSION arguments is the old style -# call (pre autoconf-2.50), which is being phased out. PACKAGE -# and VERSION should now be passed to AC_INIT and removed from -# the call to AM_INIT_AUTOMAKE. -# We support both call styles for the transition. After -# the next Automake release, Autoconf can make the AC_INIT -# arguments mandatory, and then we can depend on a new Autoconf -# release and drop the old call support. -AC_DEFUN([AM_INIT_AUTOMAKE], -[AC_PREREQ([2.60])dnl -dnl Autoconf wants to disallow AM_ names. We explicitly allow -dnl the ones we care about. -m4_pattern_allow([^AM_[A-Z]+FLAGS$])dnl -AC_REQUIRE([AM_SET_CURRENT_AUTOMAKE_VERSION])dnl -AC_REQUIRE([AC_PROG_INSTALL])dnl -if test "`cd $srcdir && pwd`" != "`pwd`"; then - # Use -I$(srcdir) only when $(srcdir) != ., so that make's output - # is not polluted with repeated "-I." - AC_SUBST([am__isrc], [' -I$(srcdir)'])_AM_SUBST_NOTMAKE([am__isrc])dnl - # test to see if srcdir already configured - if test -f $srcdir/config.status; then - AC_MSG_ERROR([source directory already configured; run "make distclean" there first]) - fi -fi - -# test whether we have cygpath -if test -z "$CYGPATH_W"; then - if (cygpath --version) >/dev/null 2>/dev/null; then - CYGPATH_W='cygpath -w' - else - CYGPATH_W=echo - fi -fi -AC_SUBST([CYGPATH_W]) - -# Define the identity of the package. -dnl Distinguish between old-style and new-style calls. -m4_ifval([$2], -[m4_ifval([$3], [_AM_SET_OPTION([no-define])])dnl - AC_SUBST([PACKAGE], [$1])dnl - AC_SUBST([VERSION], [$2])], -[_AM_SET_OPTIONS([$1])dnl -dnl Diagnose old-style AC_INIT with new-style AM_AUTOMAKE_INIT. -m4_if(m4_ifdef([AC_PACKAGE_NAME], 1)m4_ifdef([AC_PACKAGE_VERSION], 1), 11,, - [m4_fatal([AC_INIT should be called with package and version arguments])])dnl - AC_SUBST([PACKAGE], ['AC_PACKAGE_TARNAME'])dnl - AC_SUBST([VERSION], ['AC_PACKAGE_VERSION'])])dnl - -_AM_IF_OPTION([no-define],, -[AC_DEFINE_UNQUOTED(PACKAGE, "$PACKAGE", [Name of package]) - AC_DEFINE_UNQUOTED(VERSION, "$VERSION", [Version number of package])])dnl - -# Some tools Automake needs. -AC_REQUIRE([AM_SANITY_CHECK])dnl -AC_REQUIRE([AC_ARG_PROGRAM])dnl -AM_MISSING_PROG(ACLOCAL, aclocal-${am__api_version}) -AM_MISSING_PROG(AUTOCONF, autoconf) -AM_MISSING_PROG(AUTOMAKE, automake-${am__api_version}) -AM_MISSING_PROG(AUTOHEADER, autoheader) -AM_MISSING_PROG(MAKEINFO, makeinfo) -AM_PROG_INSTALL_SH -AM_PROG_INSTALL_STRIP -AC_REQUIRE([AM_PROG_MKDIR_P])dnl -# We need awk for the "check" target. The system "awk" is bad on -# some platforms. -AC_REQUIRE([AC_PROG_AWK])dnl -AC_REQUIRE([AC_PROG_MAKE_SET])dnl -AC_REQUIRE([AM_SET_LEADING_DOT])dnl -_AM_IF_OPTION([tar-ustar], [_AM_PROG_TAR([ustar])], - [_AM_IF_OPTION([tar-pax], [_AM_PROG_TAR([pax])], - [_AM_PROG_TAR([v7])])]) -_AM_IF_OPTION([no-dependencies],, -[AC_PROVIDE_IFELSE([AC_PROG_CC], - [_AM_DEPENDENCIES(CC)], - [define([AC_PROG_CC], - defn([AC_PROG_CC])[_AM_DEPENDENCIES(CC)])])dnl -AC_PROVIDE_IFELSE([AC_PROG_CXX], - [_AM_DEPENDENCIES(CXX)], - [define([AC_PROG_CXX], - defn([AC_PROG_CXX])[_AM_DEPENDENCIES(CXX)])])dnl -AC_PROVIDE_IFELSE([AC_PROG_OBJC], - [_AM_DEPENDENCIES(OBJC)], - [define([AC_PROG_OBJC], - defn([AC_PROG_OBJC])[_AM_DEPENDENCIES(OBJC)])])dnl -]) -]) - - -# When config.status generates a header, we must update the stamp-h file. -# This file resides in the same directory as the config header -# that is generated. The stamp files are numbered to have different names. - -# Autoconf calls _AC_AM_CONFIG_HEADER_HOOK (when defined) in the -# loop where config.status creates the headers, so we can generate -# our stamp files there. -AC_DEFUN([_AC_AM_CONFIG_HEADER_HOOK], -[# Compute $1's index in $config_headers. -_am_arg=$1 -_am_stamp_count=1 -for _am_header in $config_headers :; do - case $_am_header in - $_am_arg | $_am_arg:* ) - break ;; - * ) - _am_stamp_count=`expr $_am_stamp_count + 1` ;; - esac -done -echo "timestamp for $_am_arg" >`AS_DIRNAME(["$_am_arg"])`/stamp-h[]$_am_stamp_count]) - -# Copyright (C) 2001, 2003, 2005 Free Software Foundation, Inc. -# -# This file is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# AM_PROG_INSTALL_SH -# ------------------ -# Define $install_sh. -AC_DEFUN([AM_PROG_INSTALL_SH], -[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl -install_sh=${install_sh-"\$(SHELL) $am_aux_dir/install-sh"} -AC_SUBST(install_sh)]) - -# Copyright (C) 2003, 2005 Free Software Foundation, Inc. -# -# This file is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# serial 2 - -# Check whether the underlying file-system supports filenames -# with a leading dot. For instance MS-DOS doesn't. -AC_DEFUN([AM_SET_LEADING_DOT], -[rm -rf .tst 2>/dev/null -mkdir .tst 2>/dev/null -if test -d .tst; then - am__leading_dot=. -else - am__leading_dot=_ -fi -rmdir .tst 2>/dev/null -AC_SUBST([am__leading_dot])]) - -# Check to see how 'make' treats includes. -*- Autoconf -*- - -# Copyright (C) 2001, 2002, 2003, 2005 Free Software Foundation, Inc. -# -# This file is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# serial 3 - -# AM_MAKE_INCLUDE() -# ----------------- -# Check to see how make treats includes. -AC_DEFUN([AM_MAKE_INCLUDE], -[am_make=${MAKE-make} -cat > confinc << 'END' -am__doit: - @echo done -.PHONY: am__doit -END -# If we don't find an include directive, just comment out the code. -AC_MSG_CHECKING([for style of include used by $am_make]) -am__include="#" -am__quote= -_am_result=none -# First try GNU make style include. -echo "include confinc" > confmf -# We grep out `Entering directory' and `Leaving directory' -# messages which can occur if `w' ends up in MAKEFLAGS. -# In particular we don't look at `^make:' because GNU make might -# be invoked under some other name (usually "gmake"), in which -# case it prints its new name instead of `make'. -if test "`$am_make -s -f confmf 2> /dev/null | grep -v 'ing directory'`" = "done"; then - am__include=include - am__quote= - _am_result=GNU -fi -# Now try BSD make style include. -if test "$am__include" = "#"; then - echo '.include "confinc"' > confmf - if test "`$am_make -s -f confmf 2> /dev/null`" = "done"; then - am__include=.include - am__quote="\"" - _am_result=BSD - fi -fi -AC_SUBST([am__include]) -AC_SUBST([am__quote]) -AC_MSG_RESULT([$_am_result]) -rm -f confinc confmf -]) - -# Fake the existence of programs that GNU maintainers use. -*- Autoconf -*- - -# Copyright (C) 1997, 1999, 2000, 2001, 2003, 2004, 2005 -# Free Software Foundation, Inc. -# -# This file is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# serial 5 - -# AM_MISSING_PROG(NAME, PROGRAM) -# ------------------------------ -AC_DEFUN([AM_MISSING_PROG], -[AC_REQUIRE([AM_MISSING_HAS_RUN]) -$1=${$1-"${am_missing_run}$2"} -AC_SUBST($1)]) - - -# AM_MISSING_HAS_RUN -# ------------------ -# Define MISSING if not defined so far and test if it supports --run. -# If it does, set am_missing_run to use it, otherwise, to nothing. -AC_DEFUN([AM_MISSING_HAS_RUN], -[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl -AC_REQUIRE_AUX_FILE([missing])dnl -test x"${MISSING+set}" = xset || MISSING="\${SHELL} $am_aux_dir/missing" -# Use eval to expand $SHELL -if eval "$MISSING --run true"; then - am_missing_run="$MISSING --run " -else - am_missing_run= - AC_MSG_WARN([`missing' script is too old or missing]) -fi -]) - -# Copyright (C) 2003, 2004, 2005, 2006 Free Software Foundation, Inc. -# -# This file is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# AM_PROG_MKDIR_P -# --------------- -# Check for `mkdir -p'. -AC_DEFUN([AM_PROG_MKDIR_P], -[AC_PREREQ([2.60])dnl -AC_REQUIRE([AC_PROG_MKDIR_P])dnl -dnl Automake 1.8 to 1.9.6 used to define mkdir_p. We now use MKDIR_P, -dnl while keeping a definition of mkdir_p for backward compatibility. -dnl @MKDIR_P@ is magic: AC_OUTPUT adjusts its value for each Makefile. -dnl However we cannot define mkdir_p as $(MKDIR_P) for the sake of -dnl Makefile.ins that do not define MKDIR_P, so we do our own -dnl adjustment using top_builddir (which is defined more often than -dnl MKDIR_P). -AC_SUBST([mkdir_p], ["$MKDIR_P"])dnl -case $mkdir_p in - [[\\/$]]* | ?:[[\\/]]*) ;; - */*) mkdir_p="\$(top_builddir)/$mkdir_p" ;; -esac -]) - -# Helper functions for option handling. -*- Autoconf -*- - -# Copyright (C) 2001, 2002, 2003, 2005 Free Software Foundation, Inc. -# -# This file is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# serial 3 - -# _AM_MANGLE_OPTION(NAME) -# ----------------------- -AC_DEFUN([_AM_MANGLE_OPTION], -[[_AM_OPTION_]m4_bpatsubst($1, [[^a-zA-Z0-9_]], [_])]) - -# _AM_SET_OPTION(NAME) -# ------------------------------ -# Set option NAME. Presently that only means defining a flag for this option. -AC_DEFUN([_AM_SET_OPTION], -[m4_define(_AM_MANGLE_OPTION([$1]), 1)]) - -# _AM_SET_OPTIONS(OPTIONS) -# ---------------------------------- -# OPTIONS is a space-separated list of Automake options. -AC_DEFUN([_AM_SET_OPTIONS], -[AC_FOREACH([_AM_Option], [$1], [_AM_SET_OPTION(_AM_Option)])]) - -# _AM_IF_OPTION(OPTION, IF-SET, [IF-NOT-SET]) -# ------------------------------------------- -# Execute IF-SET if OPTION is set, IF-NOT-SET otherwise. -AC_DEFUN([_AM_IF_OPTION], -[m4_ifset(_AM_MANGLE_OPTION([$1]), [$2], [$3])]) - -# Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005 -# Free Software Foundation, Inc. -# -# This file is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# AM_PATH_PYTHON([MINIMUM-VERSION], [ACTION-IF-FOUND], [ACTION-IF-NOT-FOUND]) -# --------------------------------------------------------------------------- -# Adds support for distributing Python modules and packages. To -# install modules, copy them to $(pythondir), using the python_PYTHON -# automake variable. To install a package with the same name as the -# automake package, install to $(pkgpythondir), or use the -# pkgpython_PYTHON automake variable. -# -# The variables $(pyexecdir) and $(pkgpyexecdir) are provided as -# locations to install python extension modules (shared libraries). -# Another macro is required to find the appropriate flags to compile -# extension modules. -# -# If your package is configured with a different prefix to python, -# users will have to add the install directory to the PYTHONPATH -# environment variable, or create a .pth file (see the python -# documentation for details). -# -# If the MINIMUM-VERSION argument is passed, AM_PATH_PYTHON will -# cause an error if the version of python installed on the system -# doesn't meet the requirement. MINIMUM-VERSION should consist of -# numbers and dots only. -AC_DEFUN([AM_PATH_PYTHON], - [ - dnl Find a Python interpreter. Python versions prior to 1.5 are not - dnl supported because the default installation locations changed from - dnl $prefix/lib/site-python in 1.4 to $prefix/lib/python1.5/site-packages - dnl in 1.5. - m4_define_default([_AM_PYTHON_INTERPRETER_LIST], - [python python2 python2.5 python2.4 python2.3 python2.2 dnl -python2.1 python2.0 python1.6 python1.5]) - - m4_if([$1],[],[ - dnl No version check is needed. - # Find any Python interpreter. - if test -z "$PYTHON"; then - AC_PATH_PROGS([PYTHON], _AM_PYTHON_INTERPRETER_LIST, :) - fi - am_display_PYTHON=python - ], [ - dnl A version check is needed. - if test -n "$PYTHON"; then - # If the user set $PYTHON, use it and don't search something else. - AC_MSG_CHECKING([whether $PYTHON version >= $1]) - AM_PYTHON_CHECK_VERSION([$PYTHON], [$1], - [AC_MSG_RESULT(yes)], - [AC_MSG_ERROR(too old)]) - am_display_PYTHON=$PYTHON - else - # Otherwise, try each interpreter until we find one that satisfies - # VERSION. - AC_CACHE_CHECK([for a Python interpreter with version >= $1], - [am_cv_pathless_PYTHON],[ - for am_cv_pathless_PYTHON in _AM_PYTHON_INTERPRETER_LIST none; do - test "$am_cv_pathless_PYTHON" = none && break - AM_PYTHON_CHECK_VERSION([$am_cv_pathless_PYTHON], [$1], [break]) - done]) - # Set $PYTHON to the absolute path of $am_cv_pathless_PYTHON. - if test "$am_cv_pathless_PYTHON" = none; then - PYTHON=: - else - AC_PATH_PROG([PYTHON], [$am_cv_pathless_PYTHON]) - fi - am_display_PYTHON=$am_cv_pathless_PYTHON - fi - ]) - - if test "$PYTHON" = :; then - dnl Run any user-specified action, or abort. - m4_default([$3], [AC_MSG_ERROR([no suitable Python interpreter found])]) - else - - dnl Query Python for its version number. Getting [:3] seems to be - dnl the best way to do this; it's what "site.py" does in the standard - dnl library. - - AC_CACHE_CHECK([for $am_display_PYTHON version], [am_cv_python_version], - [am_cv_python_version=`$PYTHON -c "import sys; print sys.version[[:3]]"`]) - AC_SUBST([PYTHON_VERSION], [$am_cv_python_version]) - - dnl Use the values of $prefix and $exec_prefix for the corresponding - dnl values of PYTHON_PREFIX and PYTHON_EXEC_PREFIX. These are made - dnl distinct variables so they can be overridden if need be. However, - dnl general consensus is that you shouldn't need this ability. - - AC_SUBST([PYTHON_PREFIX], ['${prefix}']) - AC_SUBST([PYTHON_EXEC_PREFIX], ['${exec_prefix}']) - - dnl At times (like when building shared libraries) you may want - dnl to know which OS platform Python thinks this is. - - AC_CACHE_CHECK([for $am_display_PYTHON platform], [am_cv_python_platform], - [am_cv_python_platform=`$PYTHON -c "import sys; print sys.platform"`]) - AC_SUBST([PYTHON_PLATFORM], [$am_cv_python_platform]) - - - dnl Set up 4 directories: - - dnl pythondir -- where to install python scripts. This is the - dnl site-packages directory, not the python standard library - dnl directory like in previous automake betas. This behavior - dnl is more consistent with lispdir.m4 for example. - dnl Query distutils for this directory. distutils does not exist in - dnl Python 1.5, so we fall back to the hardcoded directory if it - dnl doesn't work. - AC_CACHE_CHECK([for $am_display_PYTHON script directory], - [am_cv_python_pythondir], - [am_cv_python_pythondir=`$PYTHON -c "from distutils import sysconfig; print sysconfig.get_python_lib(0,0,prefix='$PYTHON_PREFIX')" 2>/dev/null || - echo "$PYTHON_PREFIX/lib/python$PYTHON_VERSION/site-packages"`]) - AC_SUBST([pythondir], [$am_cv_python_pythondir]) - - dnl pkgpythondir -- $PACKAGE directory under pythondir. Was - dnl PYTHON_SITE_PACKAGE in previous betas, but this naming is - dnl more consistent with the rest of automake. - - AC_SUBST([pkgpythondir], [\${pythondir}/$PACKAGE]) - - dnl pyexecdir -- directory for installing python extension modules - dnl (shared libraries) - dnl Query distutils for this directory. distutils does not exist in - dnl Python 1.5, so we fall back to the hardcoded directory if it - dnl doesn't work. - AC_CACHE_CHECK([for $am_display_PYTHON extension module directory], - [am_cv_python_pyexecdir], - [am_cv_python_pyexecdir=`$PYTHON -c "from distutils import sysconfig; print sysconfig.get_python_lib(1,0,prefix='$PYTHON_EXEC_PREFIX')" 2>/dev/null || - echo "${PYTHON_EXEC_PREFIX}/lib/python${PYTHON_VERSION}/site-packages"`]) - AC_SUBST([pyexecdir], [$am_cv_python_pyexecdir]) - - dnl pkgpyexecdir -- $(pyexecdir)/$(PACKAGE) - - AC_SUBST([pkgpyexecdir], [\${pyexecdir}/$PACKAGE]) - - dnl Run any user-specified action. - $2 - fi - -]) - - -# AM_PYTHON_CHECK_VERSION(PROG, VERSION, [ACTION-IF-TRUE], [ACTION-IF-FALSE]) -# --------------------------------------------------------------------------- -# Run ACTION-IF-TRUE if the Python interpreter PROG has version >= VERSION. -# Run ACTION-IF-FALSE otherwise. -# This test uses sys.hexversion instead of the string equivalent (first -# word of sys.version), in order to cope with versions such as 2.2c1. -# hexversion has been introduced in Python 1.5.2; it's probably not -# worth to support older versions (1.5.1 was released on October 31, 1998). -AC_DEFUN([AM_PYTHON_CHECK_VERSION], - [prog="import sys, string -# split strings by '.' and convert to numeric. Append some zeros -# because we need at least 4 digits for the hex conversion. -minver = map(int, string.split('$2', '.')) + [[0, 0, 0]] -minverhex = 0 -for i in xrange(0, 4): minverhex = (minverhex << 8) + minver[[i]] -sys.exit(sys.hexversion < minverhex)" - AS_IF([AM_RUN_LOG([$1 -c "$prog"])], [$3], [$4])]) - -# Copyright (C) 2001, 2003, 2005 Free Software Foundation, Inc. -# -# This file is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# AM_RUN_LOG(COMMAND) -# ------------------- -# Run COMMAND, save the exit status in ac_status, and log it. -# (This has been adapted from Autoconf's _AC_RUN_LOG macro.) -AC_DEFUN([AM_RUN_LOG], -[{ echo "$as_me:$LINENO: $1" >&AS_MESSAGE_LOG_FD - ($1) >&AS_MESSAGE_LOG_FD 2>&AS_MESSAGE_LOG_FD - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&AS_MESSAGE_LOG_FD - (exit $ac_status); }]) - -# Check to make sure that the build environment is sane. -*- Autoconf -*- - -# Copyright (C) 1996, 1997, 2000, 2001, 2003, 2005 -# Free Software Foundation, Inc. -# -# This file is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# serial 4 - -# AM_SANITY_CHECK -# --------------- -AC_DEFUN([AM_SANITY_CHECK], -[AC_MSG_CHECKING([whether build environment is sane]) -# Just in case -sleep 1 -echo timestamp > conftest.file -# Do `set' in a subshell so we don't clobber the current shell's -# arguments. Must try -L first in case configure is actually a -# symlink; some systems play weird games with the mod time of symlinks -# (eg FreeBSD returns the mod time of the symlink's containing -# directory). -if ( - set X `ls -Lt $srcdir/configure conftest.file 2> /dev/null` - if test "$[*]" = "X"; then - # -L didn't work. - set X `ls -t $srcdir/configure conftest.file` - fi - rm -f conftest.file - if test "$[*]" != "X $srcdir/configure conftest.file" \ - && test "$[*]" != "X conftest.file $srcdir/configure"; then - - # If neither matched, then we have a broken ls. This can happen - # if, for instance, CONFIG_SHELL is bash and it inherits a - # broken ls alias from the environment. This has actually - # happened. Such a system could not be considered "sane". - AC_MSG_ERROR([ls -t appears to fail. Make sure there is not a broken -alias in your environment]) - fi - - test "$[2]" = conftest.file - ) -then - # Ok. - : -else - AC_MSG_ERROR([newly created file is older than distributed files! -Check your system clock]) -fi -AC_MSG_RESULT(yes)]) - -# Copyright (C) 2001, 2003, 2005 Free Software Foundation, Inc. -# -# This file is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# AM_PROG_INSTALL_STRIP -# --------------------- -# One issue with vendor `install' (even GNU) is that you can't -# specify the program used to strip binaries. This is especially -# annoying in cross-compiling environments, where the build's strip -# is unlikely to handle the host's binaries. -# Fortunately install-sh will honor a STRIPPROG variable, so we -# always use install-sh in `make install-strip', and initialize -# STRIPPROG with the value of the STRIP variable (set by the user). -AC_DEFUN([AM_PROG_INSTALL_STRIP], -[AC_REQUIRE([AM_PROG_INSTALL_SH])dnl -# Installed binaries are usually stripped using `strip' when the user -# run `make install-strip'. However `strip' might not be the right -# tool to use in cross-compilation environments, therefore Automake -# will honor the `STRIP' environment variable to overrule this program. -dnl Don't test for $cross_compiling = yes, because it might be `maybe'. -if test "$cross_compiling" != no; then - AC_CHECK_TOOL([STRIP], [strip], :) -fi -INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s" -AC_SUBST([INSTALL_STRIP_PROGRAM])]) - -# Copyright (C) 2006 Free Software Foundation, Inc. -# -# This file is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# _AM_SUBST_NOTMAKE(VARIABLE) -# --------------------------- -# Prevent Automake from outputting VARIABLE = @VARIABLE@ in Makefile.in. -# This macro is traced by Automake. -AC_DEFUN([_AM_SUBST_NOTMAKE]) - -# Check how to create a tarball. -*- Autoconf -*- - -# Copyright (C) 2004, 2005 Free Software Foundation, Inc. -# -# This file is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# serial 2 - -# _AM_PROG_TAR(FORMAT) -# -------------------- -# Check how to create a tarball in format FORMAT. -# FORMAT should be one of `v7', `ustar', or `pax'. -# -# Substitute a variable $(am__tar) that is a command -# writing to stdout a FORMAT-tarball containing the directory -# $tardir. -# tardir=directory && $(am__tar) > result.tar -# -# Substitute a variable $(am__untar) that extract such -# a tarball read from stdin. -# $(am__untar) < result.tar -AC_DEFUN([_AM_PROG_TAR], -[# Always define AMTAR for backward compatibility. -AM_MISSING_PROG([AMTAR], [tar]) -m4_if([$1], [v7], - [am__tar='${AMTAR} chof - "$$tardir"'; am__untar='${AMTAR} xf -'], - [m4_case([$1], [ustar],, [pax],, - [m4_fatal([Unknown tar format])]) -AC_MSG_CHECKING([how to create a $1 tar archive]) -# Loop over all known methods to create a tar archive until one works. -_am_tools='gnutar m4_if([$1], [ustar], [plaintar]) pax cpio none' -_am_tools=${am_cv_prog_tar_$1-$_am_tools} -# Do not fold the above two line into one, because Tru64 sh and -# Solaris sh will not grok spaces in the rhs of `-'. -for _am_tool in $_am_tools -do - case $_am_tool in - gnutar) - for _am_tar in tar gnutar gtar; - do - AM_RUN_LOG([$_am_tar --version]) && break - done - am__tar="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$$tardir"' - am__tar_="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$tardir"' - am__untar="$_am_tar -xf -" - ;; - plaintar) - # Must skip GNU tar: if it does not support --format= it doesn't create - # ustar tarball either. - (tar --version) >/dev/null 2>&1 && continue - am__tar='tar chf - "$$tardir"' - am__tar_='tar chf - "$tardir"' - am__untar='tar xf -' - ;; - pax) - am__tar='pax -L -x $1 -w "$$tardir"' - am__tar_='pax -L -x $1 -w "$tardir"' - am__untar='pax -r' - ;; - cpio) - am__tar='find "$$tardir" -print | cpio -o -H $1 -L' - am__tar_='find "$tardir" -print | cpio -o -H $1 -L' - am__untar='cpio -i -H $1 -d' - ;; - none) - am__tar=false - am__tar_=false - am__untar=false - ;; - esac - - # If the value was cached, stop now. We just wanted to have am__tar - # and am__untar set. - test -n "${am_cv_prog_tar_$1}" && break - - # tar/untar a dummy directory, and stop if the command works - rm -rf conftest.dir - mkdir conftest.dir - echo GrepMe > conftest.dir/file - AM_RUN_LOG([tardir=conftest.dir && eval $am__tar_ >conftest.tar]) - rm -rf conftest.dir - if test -s conftest.tar; then - AM_RUN_LOG([$am__untar /dev/null 2>&1 && break - fi -done -rm -rf conftest.dir - -AC_CACHE_VAL([am_cv_prog_tar_$1], [am_cv_prog_tar_$1=$_am_tool]) -AC_MSG_RESULT([$am_cv_prog_tar_$1])]) -AC_SUBST([am__tar]) -AC_SUBST([am__untar]) -]) # _AM_PROG_TAR - +to_tool_file_cmd=$lt_cv_to_tool_file_cmd +AC_MSG_RESULT([$lt_cv_to_tool_file_cmd]) +_LT_DECL([to_tool_file_cmd], [lt_cv_to_tool_file_cmd], + [0], [convert $build files to toolchain format])dnl +])# _LT_PATH_CONVERSION_FUNCTIONS diff --git a/cpp/thirdparty/protobuf-2.5.0/m4/ltoptions.m4 b/cpp/thirdparty/protobuf-2.5.0/m4/ltoptions.m4 new file mode 100644 index 000000000..5d9acd8e2 --- /dev/null +++ b/cpp/thirdparty/protobuf-2.5.0/m4/ltoptions.m4 @@ -0,0 +1,384 @@ +# Helper functions for option handling. -*- Autoconf -*- +# +# Copyright (C) 2004, 2005, 2007, 2008, 2009 Free Software Foundation, +# Inc. +# Written by Gary V. Vaughan, 2004 +# +# This file is free software; the Free Software Foundation gives +# unlimited permission to copy and/or distribute it, with or without +# modifications, as long as this notice is preserved. + +# serial 7 ltoptions.m4 + +# This is to help aclocal find these macros, as it can't see m4_define. +AC_DEFUN([LTOPTIONS_VERSION], [m4_if([1])]) + + +# _LT_MANGLE_OPTION(MACRO-NAME, OPTION-NAME) +# ------------------------------------------ +m4_define([_LT_MANGLE_OPTION], +[[_LT_OPTION_]m4_bpatsubst($1__$2, [[^a-zA-Z0-9_]], [_])]) + + +# _LT_SET_OPTION(MACRO-NAME, OPTION-NAME) +# --------------------------------------- +# Set option OPTION-NAME for macro MACRO-NAME, and if there is a +# matching handler defined, dispatch to it. Other OPTION-NAMEs are +# saved as a flag. +m4_define([_LT_SET_OPTION], +[m4_define(_LT_MANGLE_OPTION([$1], [$2]))dnl +m4_ifdef(_LT_MANGLE_DEFUN([$1], [$2]), + _LT_MANGLE_DEFUN([$1], [$2]), + [m4_warning([Unknown $1 option `$2'])])[]dnl +]) + + +# _LT_IF_OPTION(MACRO-NAME, OPTION-NAME, IF-SET, [IF-NOT-SET]) +# ------------------------------------------------------------ +# Execute IF-SET if OPTION is set, IF-NOT-SET otherwise. +m4_define([_LT_IF_OPTION], +[m4_ifdef(_LT_MANGLE_OPTION([$1], [$2]), [$3], [$4])]) + + +# _LT_UNLESS_OPTIONS(MACRO-NAME, OPTION-LIST, IF-NOT-SET) +# ------------------------------------------------------- +# Execute IF-NOT-SET unless all options in OPTION-LIST for MACRO-NAME +# are set. +m4_define([_LT_UNLESS_OPTIONS], +[m4_foreach([_LT_Option], m4_split(m4_normalize([$2])), + [m4_ifdef(_LT_MANGLE_OPTION([$1], _LT_Option), + [m4_define([$0_found])])])[]dnl +m4_ifdef([$0_found], [m4_undefine([$0_found])], [$3 +])[]dnl +]) + + +# _LT_SET_OPTIONS(MACRO-NAME, OPTION-LIST) +# ---------------------------------------- +# OPTION-LIST is a space-separated list of Libtool options associated +# with MACRO-NAME. If any OPTION has a matching handler declared with +# LT_OPTION_DEFINE, dispatch to that macro; otherwise complain about +# the unknown option and exit. +m4_defun([_LT_SET_OPTIONS], +[# Set options +m4_foreach([_LT_Option], m4_split(m4_normalize([$2])), + [_LT_SET_OPTION([$1], _LT_Option)]) + +m4_if([$1],[LT_INIT],[ + dnl + dnl Simply set some default values (i.e off) if boolean options were not + dnl specified: + _LT_UNLESS_OPTIONS([LT_INIT], [dlopen], [enable_dlopen=no + ]) + _LT_UNLESS_OPTIONS([LT_INIT], [win32-dll], [enable_win32_dll=no + ]) + dnl + dnl If no reference was made to various pairs of opposing options, then + dnl we run the default mode handler for the pair. For example, if neither + dnl `shared' nor `disable-shared' was passed, we enable building of shared + dnl archives by default: + _LT_UNLESS_OPTIONS([LT_INIT], [shared disable-shared], [_LT_ENABLE_SHARED]) + _LT_UNLESS_OPTIONS([LT_INIT], [static disable-static], [_LT_ENABLE_STATIC]) + _LT_UNLESS_OPTIONS([LT_INIT], [pic-only no-pic], [_LT_WITH_PIC]) + _LT_UNLESS_OPTIONS([LT_INIT], [fast-install disable-fast-install], + [_LT_ENABLE_FAST_INSTALL]) + ]) +])# _LT_SET_OPTIONS + + +## --------------------------------- ## +## Macros to handle LT_INIT options. ## +## --------------------------------- ## + +# _LT_MANGLE_DEFUN(MACRO-NAME, OPTION-NAME) +# ----------------------------------------- +m4_define([_LT_MANGLE_DEFUN], +[[_LT_OPTION_DEFUN_]m4_bpatsubst(m4_toupper([$1__$2]), [[^A-Z0-9_]], [_])]) + + +# LT_OPTION_DEFINE(MACRO-NAME, OPTION-NAME, CODE) +# ----------------------------------------------- +m4_define([LT_OPTION_DEFINE], +[m4_define(_LT_MANGLE_DEFUN([$1], [$2]), [$3])[]dnl +])# LT_OPTION_DEFINE + + +# dlopen +# ------ +LT_OPTION_DEFINE([LT_INIT], [dlopen], [enable_dlopen=yes +]) + +AU_DEFUN([AC_LIBTOOL_DLOPEN], +[_LT_SET_OPTION([LT_INIT], [dlopen]) +AC_DIAGNOSE([obsolete], +[$0: Remove this warning and the call to _LT_SET_OPTION when you +put the `dlopen' option into LT_INIT's first parameter.]) +]) + +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([AC_LIBTOOL_DLOPEN], []) + + +# win32-dll +# --------- +# Declare package support for building win32 dll's. +LT_OPTION_DEFINE([LT_INIT], [win32-dll], +[enable_win32_dll=yes + +case $host in +*-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-cegcc*) + AC_CHECK_TOOL(AS, as, false) + AC_CHECK_TOOL(DLLTOOL, dlltool, false) + AC_CHECK_TOOL(OBJDUMP, objdump, false) + ;; +esac + +test -z "$AS" && AS=as +_LT_DECL([], [AS], [1], [Assembler program])dnl + +test -z "$DLLTOOL" && DLLTOOL=dlltool +_LT_DECL([], [DLLTOOL], [1], [DLL creation program])dnl + +test -z "$OBJDUMP" && OBJDUMP=objdump +_LT_DECL([], [OBJDUMP], [1], [Object dumper program])dnl +])# win32-dll + +AU_DEFUN([AC_LIBTOOL_WIN32_DLL], +[AC_REQUIRE([AC_CANONICAL_HOST])dnl +_LT_SET_OPTION([LT_INIT], [win32-dll]) +AC_DIAGNOSE([obsolete], +[$0: Remove this warning and the call to _LT_SET_OPTION when you +put the `win32-dll' option into LT_INIT's first parameter.]) +]) + +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([AC_LIBTOOL_WIN32_DLL], []) + + +# _LT_ENABLE_SHARED([DEFAULT]) +# ---------------------------- +# implement the --enable-shared flag, and supports the `shared' and +# `disable-shared' LT_INIT options. +# DEFAULT is either `yes' or `no'. If omitted, it defaults to `yes'. +m4_define([_LT_ENABLE_SHARED], +[m4_define([_LT_ENABLE_SHARED_DEFAULT], [m4_if($1, no, no, yes)])dnl +AC_ARG_ENABLE([shared], + [AS_HELP_STRING([--enable-shared@<:@=PKGS@:>@], + [build shared libraries @<:@default=]_LT_ENABLE_SHARED_DEFAULT[@:>@])], + [p=${PACKAGE-default} + case $enableval in + yes) enable_shared=yes ;; + no) enable_shared=no ;; + *) + enable_shared=no + # Look at the argument we got. We use all the common list separators. + lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," + for pkg in $enableval; do + IFS="$lt_save_ifs" + if test "X$pkg" = "X$p"; then + enable_shared=yes + fi + done + IFS="$lt_save_ifs" + ;; + esac], + [enable_shared=]_LT_ENABLE_SHARED_DEFAULT) + + _LT_DECL([build_libtool_libs], [enable_shared], [0], + [Whether or not to build shared libraries]) +])# _LT_ENABLE_SHARED + +LT_OPTION_DEFINE([LT_INIT], [shared], [_LT_ENABLE_SHARED([yes])]) +LT_OPTION_DEFINE([LT_INIT], [disable-shared], [_LT_ENABLE_SHARED([no])]) + +# Old names: +AC_DEFUN([AC_ENABLE_SHARED], +[_LT_SET_OPTION([LT_INIT], m4_if([$1], [no], [disable-])[shared]) +]) + +AC_DEFUN([AC_DISABLE_SHARED], +[_LT_SET_OPTION([LT_INIT], [disable-shared]) +]) + +AU_DEFUN([AM_ENABLE_SHARED], [AC_ENABLE_SHARED($@)]) +AU_DEFUN([AM_DISABLE_SHARED], [AC_DISABLE_SHARED($@)]) + +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([AM_ENABLE_SHARED], []) +dnl AC_DEFUN([AM_DISABLE_SHARED], []) + + + +# _LT_ENABLE_STATIC([DEFAULT]) +# ---------------------------- +# implement the --enable-static flag, and support the `static' and +# `disable-static' LT_INIT options. +# DEFAULT is either `yes' or `no'. If omitted, it defaults to `yes'. +m4_define([_LT_ENABLE_STATIC], +[m4_define([_LT_ENABLE_STATIC_DEFAULT], [m4_if($1, no, no, yes)])dnl +AC_ARG_ENABLE([static], + [AS_HELP_STRING([--enable-static@<:@=PKGS@:>@], + [build static libraries @<:@default=]_LT_ENABLE_STATIC_DEFAULT[@:>@])], + [p=${PACKAGE-default} + case $enableval in + yes) enable_static=yes ;; + no) enable_static=no ;; + *) + enable_static=no + # Look at the argument we got. We use all the common list separators. + lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," + for pkg in $enableval; do + IFS="$lt_save_ifs" + if test "X$pkg" = "X$p"; then + enable_static=yes + fi + done + IFS="$lt_save_ifs" + ;; + esac], + [enable_static=]_LT_ENABLE_STATIC_DEFAULT) + + _LT_DECL([build_old_libs], [enable_static], [0], + [Whether or not to build static libraries]) +])# _LT_ENABLE_STATIC + +LT_OPTION_DEFINE([LT_INIT], [static], [_LT_ENABLE_STATIC([yes])]) +LT_OPTION_DEFINE([LT_INIT], [disable-static], [_LT_ENABLE_STATIC([no])]) + +# Old names: +AC_DEFUN([AC_ENABLE_STATIC], +[_LT_SET_OPTION([LT_INIT], m4_if([$1], [no], [disable-])[static]) +]) + +AC_DEFUN([AC_DISABLE_STATIC], +[_LT_SET_OPTION([LT_INIT], [disable-static]) +]) + +AU_DEFUN([AM_ENABLE_STATIC], [AC_ENABLE_STATIC($@)]) +AU_DEFUN([AM_DISABLE_STATIC], [AC_DISABLE_STATIC($@)]) + +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([AM_ENABLE_STATIC], []) +dnl AC_DEFUN([AM_DISABLE_STATIC], []) + + + +# _LT_ENABLE_FAST_INSTALL([DEFAULT]) +# ---------------------------------- +# implement the --enable-fast-install flag, and support the `fast-install' +# and `disable-fast-install' LT_INIT options. +# DEFAULT is either `yes' or `no'. If omitted, it defaults to `yes'. +m4_define([_LT_ENABLE_FAST_INSTALL], +[m4_define([_LT_ENABLE_FAST_INSTALL_DEFAULT], [m4_if($1, no, no, yes)])dnl +AC_ARG_ENABLE([fast-install], + [AS_HELP_STRING([--enable-fast-install@<:@=PKGS@:>@], + [optimize for fast installation @<:@default=]_LT_ENABLE_FAST_INSTALL_DEFAULT[@:>@])], + [p=${PACKAGE-default} + case $enableval in + yes) enable_fast_install=yes ;; + no) enable_fast_install=no ;; + *) + enable_fast_install=no + # Look at the argument we got. We use all the common list separators. + lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," + for pkg in $enableval; do + IFS="$lt_save_ifs" + if test "X$pkg" = "X$p"; then + enable_fast_install=yes + fi + done + IFS="$lt_save_ifs" + ;; + esac], + [enable_fast_install=]_LT_ENABLE_FAST_INSTALL_DEFAULT) + +_LT_DECL([fast_install], [enable_fast_install], [0], + [Whether or not to optimize for fast installation])dnl +])# _LT_ENABLE_FAST_INSTALL + +LT_OPTION_DEFINE([LT_INIT], [fast-install], [_LT_ENABLE_FAST_INSTALL([yes])]) +LT_OPTION_DEFINE([LT_INIT], [disable-fast-install], [_LT_ENABLE_FAST_INSTALL([no])]) + +# Old names: +AU_DEFUN([AC_ENABLE_FAST_INSTALL], +[_LT_SET_OPTION([LT_INIT], m4_if([$1], [no], [disable-])[fast-install]) +AC_DIAGNOSE([obsolete], +[$0: Remove this warning and the call to _LT_SET_OPTION when you put +the `fast-install' option into LT_INIT's first parameter.]) +]) + +AU_DEFUN([AC_DISABLE_FAST_INSTALL], +[_LT_SET_OPTION([LT_INIT], [disable-fast-install]) +AC_DIAGNOSE([obsolete], +[$0: Remove this warning and the call to _LT_SET_OPTION when you put +the `disable-fast-install' option into LT_INIT's first parameter.]) +]) + +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([AC_ENABLE_FAST_INSTALL], []) +dnl AC_DEFUN([AM_DISABLE_FAST_INSTALL], []) + + +# _LT_WITH_PIC([MODE]) +# -------------------- +# implement the --with-pic flag, and support the `pic-only' and `no-pic' +# LT_INIT options. +# MODE is either `yes' or `no'. If omitted, it defaults to `both'. +m4_define([_LT_WITH_PIC], +[AC_ARG_WITH([pic], + [AS_HELP_STRING([--with-pic@<:@=PKGS@:>@], + [try to use only PIC/non-PIC objects @<:@default=use both@:>@])], + [lt_p=${PACKAGE-default} + case $withval in + yes|no) pic_mode=$withval ;; + *) + pic_mode=default + # Look at the argument we got. We use all the common list separators. + lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," + for lt_pkg in $withval; do + IFS="$lt_save_ifs" + if test "X$lt_pkg" = "X$lt_p"; then + pic_mode=yes + fi + done + IFS="$lt_save_ifs" + ;; + esac], + [pic_mode=default]) + +test -z "$pic_mode" && pic_mode=m4_default([$1], [default]) + +_LT_DECL([], [pic_mode], [0], [What type of objects to build])dnl +])# _LT_WITH_PIC + +LT_OPTION_DEFINE([LT_INIT], [pic-only], [_LT_WITH_PIC([yes])]) +LT_OPTION_DEFINE([LT_INIT], [no-pic], [_LT_WITH_PIC([no])]) + +# Old name: +AU_DEFUN([AC_LIBTOOL_PICMODE], +[_LT_SET_OPTION([LT_INIT], [pic-only]) +AC_DIAGNOSE([obsolete], +[$0: Remove this warning and the call to _LT_SET_OPTION when you +put the `pic-only' option into LT_INIT's first parameter.]) +]) + +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([AC_LIBTOOL_PICMODE], []) + +## ----------------- ## +## LTDL_INIT Options ## +## ----------------- ## + +m4_define([_LTDL_MODE], []) +LT_OPTION_DEFINE([LTDL_INIT], [nonrecursive], + [m4_define([_LTDL_MODE], [nonrecursive])]) +LT_OPTION_DEFINE([LTDL_INIT], [recursive], + [m4_define([_LTDL_MODE], [recursive])]) +LT_OPTION_DEFINE([LTDL_INIT], [subproject], + [m4_define([_LTDL_MODE], [subproject])]) + +m4_define([_LTDL_TYPE], []) +LT_OPTION_DEFINE([LTDL_INIT], [installable], + [m4_define([_LTDL_TYPE], [installable])]) +LT_OPTION_DEFINE([LTDL_INIT], [convenience], + [m4_define([_LTDL_TYPE], [convenience])]) diff --git a/cpp/thirdparty/protobuf-2.5.0/m4/ltsugar.m4 b/cpp/thirdparty/protobuf-2.5.0/m4/ltsugar.m4 new file mode 100644 index 000000000..9000a057d --- /dev/null +++ b/cpp/thirdparty/protobuf-2.5.0/m4/ltsugar.m4 @@ -0,0 +1,123 @@ +# ltsugar.m4 -- libtool m4 base layer. -*-Autoconf-*- +# +# Copyright (C) 2004, 2005, 2007, 2008 Free Software Foundation, Inc. +# Written by Gary V. Vaughan, 2004 +# +# This file is free software; the Free Software Foundation gives +# unlimited permission to copy and/or distribute it, with or without +# modifications, as long as this notice is preserved. + +# serial 6 ltsugar.m4 + +# This is to help aclocal find these macros, as it can't see m4_define. +AC_DEFUN([LTSUGAR_VERSION], [m4_if([0.1])]) + + +# lt_join(SEP, ARG1, [ARG2...]) +# ----------------------------- +# Produce ARG1SEPARG2...SEPARGn, omitting [] arguments and their +# associated separator. +# Needed until we can rely on m4_join from Autoconf 2.62, since all earlier +# versions in m4sugar had bugs. +m4_define([lt_join], +[m4_if([$#], [1], [], + [$#], [2], [[$2]], + [m4_if([$2], [], [], [[$2]_])$0([$1], m4_shift(m4_shift($@)))])]) +m4_define([_lt_join], +[m4_if([$#$2], [2], [], + [m4_if([$2], [], [], [[$1$2]])$0([$1], m4_shift(m4_shift($@)))])]) + + +# lt_car(LIST) +# lt_cdr(LIST) +# ------------ +# Manipulate m4 lists. +# These macros are necessary as long as will still need to support +# Autoconf-2.59 which quotes differently. +m4_define([lt_car], [[$1]]) +m4_define([lt_cdr], +[m4_if([$#], 0, [m4_fatal([$0: cannot be called without arguments])], + [$#], 1, [], + [m4_dquote(m4_shift($@))])]) +m4_define([lt_unquote], $1) + + +# lt_append(MACRO-NAME, STRING, [SEPARATOR]) +# ------------------------------------------ +# Redefine MACRO-NAME to hold its former content plus `SEPARATOR'`STRING'. +# Note that neither SEPARATOR nor STRING are expanded; they are appended +# to MACRO-NAME as is (leaving the expansion for when MACRO-NAME is invoked). +# No SEPARATOR is output if MACRO-NAME was previously undefined (different +# than defined and empty). +# +# This macro is needed until we can rely on Autoconf 2.62, since earlier +# versions of m4sugar mistakenly expanded SEPARATOR but not STRING. +m4_define([lt_append], +[m4_define([$1], + m4_ifdef([$1], [m4_defn([$1])[$3]])[$2])]) + + + +# lt_combine(SEP, PREFIX-LIST, INFIX, SUFFIX1, [SUFFIX2...]) +# ---------------------------------------------------------- +# Produce a SEP delimited list of all paired combinations of elements of +# PREFIX-LIST with SUFFIX1 through SUFFIXn. Each element of the list +# has the form PREFIXmINFIXSUFFIXn. +# Needed until we can rely on m4_combine added in Autoconf 2.62. +m4_define([lt_combine], +[m4_if(m4_eval([$# > 3]), [1], + [m4_pushdef([_Lt_sep], [m4_define([_Lt_sep], m4_defn([lt_car]))])]]dnl +[[m4_foreach([_Lt_prefix], [$2], + [m4_foreach([_Lt_suffix], + ]m4_dquote(m4_dquote(m4_shift(m4_shift(m4_shift($@)))))[, + [_Lt_sep([$1])[]m4_defn([_Lt_prefix])[$3]m4_defn([_Lt_suffix])])])])]) + + +# lt_if_append_uniq(MACRO-NAME, VARNAME, [SEPARATOR], [UNIQ], [NOT-UNIQ]) +# ----------------------------------------------------------------------- +# Iff MACRO-NAME does not yet contain VARNAME, then append it (delimited +# by SEPARATOR if supplied) and expand UNIQ, else NOT-UNIQ. +m4_define([lt_if_append_uniq], +[m4_ifdef([$1], + [m4_if(m4_index([$3]m4_defn([$1])[$3], [$3$2$3]), [-1], + [lt_append([$1], [$2], [$3])$4], + [$5])], + [lt_append([$1], [$2], [$3])$4])]) + + +# lt_dict_add(DICT, KEY, VALUE) +# ----------------------------- +m4_define([lt_dict_add], +[m4_define([$1($2)], [$3])]) + + +# lt_dict_add_subkey(DICT, KEY, SUBKEY, VALUE) +# -------------------------------------------- +m4_define([lt_dict_add_subkey], +[m4_define([$1($2:$3)], [$4])]) + + +# lt_dict_fetch(DICT, KEY, [SUBKEY]) +# ---------------------------------- +m4_define([lt_dict_fetch], +[m4_ifval([$3], + m4_ifdef([$1($2:$3)], [m4_defn([$1($2:$3)])]), + m4_ifdef([$1($2)], [m4_defn([$1($2)])]))]) + + +# lt_if_dict_fetch(DICT, KEY, [SUBKEY], VALUE, IF-TRUE, [IF-FALSE]) +# ----------------------------------------------------------------- +m4_define([lt_if_dict_fetch], +[m4_if(lt_dict_fetch([$1], [$2], [$3]), [$4], + [$5], + [$6])]) + + +# lt_dict_filter(DICT, [SUBKEY], VALUE, [SEPARATOR], KEY, [...]) +# -------------------------------------------------------------- +m4_define([lt_dict_filter], +[m4_if([$5], [], [], + [lt_join(m4_quote(m4_default([$4], [[, ]])), + lt_unquote(m4_split(m4_normalize(m4_foreach(_Lt_key, lt_car([m4_shiftn(4, $@)]), + [lt_if_dict_fetch([$1], _Lt_key, [$2], [$3], [_Lt_key ])])))))])[]dnl +]) diff --git a/cpp/thirdparty/protobuf-2.5.0/m4/ltversion.m4 b/cpp/thirdparty/protobuf-2.5.0/m4/ltversion.m4 new file mode 100644 index 000000000..07a8602d4 --- /dev/null +++ b/cpp/thirdparty/protobuf-2.5.0/m4/ltversion.m4 @@ -0,0 +1,23 @@ +# ltversion.m4 -- version numbers -*- Autoconf -*- +# +# Copyright (C) 2004 Free Software Foundation, Inc. +# Written by Scott James Remnant, 2004 +# +# This file is free software; the Free Software Foundation gives +# unlimited permission to copy and/or distribute it, with or without +# modifications, as long as this notice is preserved. + +# @configure_input@ + +# serial 3337 ltversion.m4 +# This file is part of GNU Libtool + +m4_define([LT_PACKAGE_VERSION], [2.4.2]) +m4_define([LT_PACKAGE_REVISION], [1.3337]) + +AC_DEFUN([LTVERSION_VERSION], +[macro_version='2.4.2' +macro_revision='1.3337' +_LT_DECL(, macro_version, 0, [Which release of libtool.m4 was used?]) +_LT_DECL(, macro_revision, 0) +]) diff --git a/cpp/thirdparty/protobuf-2.5.0/m4/lt~obsolete.m4 b/cpp/thirdparty/protobuf-2.5.0/m4/lt~obsolete.m4 new file mode 100644 index 000000000..c573da90c --- /dev/null +++ b/cpp/thirdparty/protobuf-2.5.0/m4/lt~obsolete.m4 @@ -0,0 +1,98 @@ +# lt~obsolete.m4 -- aclocal satisfying obsolete definitions. -*-Autoconf-*- +# +# Copyright (C) 2004, 2005, 2007, 2009 Free Software Foundation, Inc. +# Written by Scott James Remnant, 2004. +# +# This file is free software; the Free Software Foundation gives +# unlimited permission to copy and/or distribute it, with or without +# modifications, as long as this notice is preserved. + +# serial 5 lt~obsolete.m4 + +# These exist entirely to fool aclocal when bootstrapping libtool. +# +# In the past libtool.m4 has provided macros via AC_DEFUN (or AU_DEFUN) +# which have later been changed to m4_define as they aren't part of the +# exported API, or moved to Autoconf or Automake where they belong. +# +# The trouble is, aclocal is a bit thick. It'll see the old AC_DEFUN +# in /usr/share/aclocal/libtool.m4 and remember it, then when it sees us +# using a macro with the same name in our local m4/libtool.m4 it'll +# pull the old libtool.m4 in (it doesn't see our shiny new m4_define +# and doesn't know about Autoconf macros at all.) +# +# So we provide this file, which has a silly filename so it's always +# included after everything else. This provides aclocal with the +# AC_DEFUNs it wants, but when m4 processes it, it doesn't do anything +# because those macros already exist, or will be overwritten later. +# We use AC_DEFUN over AU_DEFUN for compatibility with aclocal-1.6. +# +# Anytime we withdraw an AC_DEFUN or AU_DEFUN, remember to add it here. +# Yes, that means every name once taken will need to remain here until +# we give up compatibility with versions before 1.7, at which point +# we need to keep only those names which we still refer to. + +# This is to help aclocal find these macros, as it can't see m4_define. +AC_DEFUN([LTOBSOLETE_VERSION], [m4_if([1])]) + +m4_ifndef([AC_LIBTOOL_LINKER_OPTION], [AC_DEFUN([AC_LIBTOOL_LINKER_OPTION])]) +m4_ifndef([AC_PROG_EGREP], [AC_DEFUN([AC_PROG_EGREP])]) +m4_ifndef([_LT_AC_PROG_ECHO_BACKSLASH], [AC_DEFUN([_LT_AC_PROG_ECHO_BACKSLASH])]) +m4_ifndef([_LT_AC_SHELL_INIT], [AC_DEFUN([_LT_AC_SHELL_INIT])]) +m4_ifndef([_LT_AC_SYS_LIBPATH_AIX], [AC_DEFUN([_LT_AC_SYS_LIBPATH_AIX])]) +m4_ifndef([_LT_PROG_LTMAIN], [AC_DEFUN([_LT_PROG_LTMAIN])]) +m4_ifndef([_LT_AC_TAGVAR], [AC_DEFUN([_LT_AC_TAGVAR])]) +m4_ifndef([AC_LTDL_ENABLE_INSTALL], [AC_DEFUN([AC_LTDL_ENABLE_INSTALL])]) +m4_ifndef([AC_LTDL_PREOPEN], [AC_DEFUN([AC_LTDL_PREOPEN])]) +m4_ifndef([_LT_AC_SYS_COMPILER], [AC_DEFUN([_LT_AC_SYS_COMPILER])]) +m4_ifndef([_LT_AC_LOCK], [AC_DEFUN([_LT_AC_LOCK])]) +m4_ifndef([AC_LIBTOOL_SYS_OLD_ARCHIVE], [AC_DEFUN([AC_LIBTOOL_SYS_OLD_ARCHIVE])]) +m4_ifndef([_LT_AC_TRY_DLOPEN_SELF], [AC_DEFUN([_LT_AC_TRY_DLOPEN_SELF])]) +m4_ifndef([AC_LIBTOOL_PROG_CC_C_O], [AC_DEFUN([AC_LIBTOOL_PROG_CC_C_O])]) +m4_ifndef([AC_LIBTOOL_SYS_HARD_LINK_LOCKS], [AC_DEFUN([AC_LIBTOOL_SYS_HARD_LINK_LOCKS])]) +m4_ifndef([AC_LIBTOOL_OBJDIR], [AC_DEFUN([AC_LIBTOOL_OBJDIR])]) +m4_ifndef([AC_LTDL_OBJDIR], [AC_DEFUN([AC_LTDL_OBJDIR])]) +m4_ifndef([AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH], [AC_DEFUN([AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH])]) +m4_ifndef([AC_LIBTOOL_SYS_LIB_STRIP], [AC_DEFUN([AC_LIBTOOL_SYS_LIB_STRIP])]) +m4_ifndef([AC_PATH_MAGIC], [AC_DEFUN([AC_PATH_MAGIC])]) +m4_ifndef([AC_PROG_LD_GNU], [AC_DEFUN([AC_PROG_LD_GNU])]) +m4_ifndef([AC_PROG_LD_RELOAD_FLAG], [AC_DEFUN([AC_PROG_LD_RELOAD_FLAG])]) +m4_ifndef([AC_DEPLIBS_CHECK_METHOD], [AC_DEFUN([AC_DEPLIBS_CHECK_METHOD])]) +m4_ifndef([AC_LIBTOOL_PROG_COMPILER_NO_RTTI], [AC_DEFUN([AC_LIBTOOL_PROG_COMPILER_NO_RTTI])]) +m4_ifndef([AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE], [AC_DEFUN([AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE])]) +m4_ifndef([AC_LIBTOOL_PROG_COMPILER_PIC], [AC_DEFUN([AC_LIBTOOL_PROG_COMPILER_PIC])]) +m4_ifndef([AC_LIBTOOL_PROG_LD_SHLIBS], [AC_DEFUN([AC_LIBTOOL_PROG_LD_SHLIBS])]) +m4_ifndef([AC_LIBTOOL_POSTDEP_PREDEP], [AC_DEFUN([AC_LIBTOOL_POSTDEP_PREDEP])]) +m4_ifndef([LT_AC_PROG_EGREP], [AC_DEFUN([LT_AC_PROG_EGREP])]) +m4_ifndef([LT_AC_PROG_SED], [AC_DEFUN([LT_AC_PROG_SED])]) +m4_ifndef([_LT_CC_BASENAME], [AC_DEFUN([_LT_CC_BASENAME])]) +m4_ifndef([_LT_COMPILER_BOILERPLATE], [AC_DEFUN([_LT_COMPILER_BOILERPLATE])]) +m4_ifndef([_LT_LINKER_BOILERPLATE], [AC_DEFUN([_LT_LINKER_BOILERPLATE])]) +m4_ifndef([_AC_PROG_LIBTOOL], [AC_DEFUN([_AC_PROG_LIBTOOL])]) +m4_ifndef([AC_LIBTOOL_SETUP], [AC_DEFUN([AC_LIBTOOL_SETUP])]) +m4_ifndef([_LT_AC_CHECK_DLFCN], [AC_DEFUN([_LT_AC_CHECK_DLFCN])]) +m4_ifndef([AC_LIBTOOL_SYS_DYNAMIC_LINKER], [AC_DEFUN([AC_LIBTOOL_SYS_DYNAMIC_LINKER])]) +m4_ifndef([_LT_AC_TAGCONFIG], [AC_DEFUN([_LT_AC_TAGCONFIG])]) +m4_ifndef([AC_DISABLE_FAST_INSTALL], [AC_DEFUN([AC_DISABLE_FAST_INSTALL])]) +m4_ifndef([_LT_AC_LANG_CXX], [AC_DEFUN([_LT_AC_LANG_CXX])]) +m4_ifndef([_LT_AC_LANG_F77], [AC_DEFUN([_LT_AC_LANG_F77])]) +m4_ifndef([_LT_AC_LANG_GCJ], [AC_DEFUN([_LT_AC_LANG_GCJ])]) +m4_ifndef([AC_LIBTOOL_LANG_C_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_C_CONFIG])]) +m4_ifndef([_LT_AC_LANG_C_CONFIG], [AC_DEFUN([_LT_AC_LANG_C_CONFIG])]) +m4_ifndef([AC_LIBTOOL_LANG_CXX_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_CXX_CONFIG])]) +m4_ifndef([_LT_AC_LANG_CXX_CONFIG], [AC_DEFUN([_LT_AC_LANG_CXX_CONFIG])]) +m4_ifndef([AC_LIBTOOL_LANG_F77_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_F77_CONFIG])]) +m4_ifndef([_LT_AC_LANG_F77_CONFIG], [AC_DEFUN([_LT_AC_LANG_F77_CONFIG])]) +m4_ifndef([AC_LIBTOOL_LANG_GCJ_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_GCJ_CONFIG])]) +m4_ifndef([_LT_AC_LANG_GCJ_CONFIG], [AC_DEFUN([_LT_AC_LANG_GCJ_CONFIG])]) +m4_ifndef([AC_LIBTOOL_LANG_RC_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_RC_CONFIG])]) +m4_ifndef([_LT_AC_LANG_RC_CONFIG], [AC_DEFUN([_LT_AC_LANG_RC_CONFIG])]) +m4_ifndef([AC_LIBTOOL_CONFIG], [AC_DEFUN([AC_LIBTOOL_CONFIG])]) +m4_ifndef([_LT_AC_FILE_LTDLL_C], [AC_DEFUN([_LT_AC_FILE_LTDLL_C])]) +m4_ifndef([_LT_REQUIRED_DARWIN_CHECKS], [AC_DEFUN([_LT_REQUIRED_DARWIN_CHECKS])]) +m4_ifndef([_LT_AC_PROG_CXXCPP], [AC_DEFUN([_LT_AC_PROG_CXXCPP])]) +m4_ifndef([_LT_PREPARE_SED_QUOTE_VARS], [AC_DEFUN([_LT_PREPARE_SED_QUOTE_VARS])]) +m4_ifndef([_LT_PROG_ECHO_BACKSLASH], [AC_DEFUN([_LT_PROG_ECHO_BACKSLASH])]) +m4_ifndef([_LT_PROG_F77], [AC_DEFUN([_LT_PROG_F77])]) +m4_ifndef([_LT_PROG_FC], [AC_DEFUN([_LT_PROG_FC])]) +m4_ifndef([_LT_PROG_CXX], [AC_DEFUN([_LT_PROG_CXX])]) diff --git a/cpp/thirdparty/protobuf-2.5.0/m4/stl_hash.m4 b/cpp/thirdparty/protobuf-2.5.0/m4/stl_hash.m4 new file mode 100644 index 000000000..0722b14a7 --- /dev/null +++ b/cpp/thirdparty/protobuf-2.5.0/m4/stl_hash.m4 @@ -0,0 +1,72 @@ +# We check two things: where the include file is for +# unordered_map/hash_map (we prefer the first form), and what +# namespace unordered/hash_map lives in within that include file. We +# include AC_TRY_COMPILE for all the combinations we've seen in the +# wild. We define HASH_MAP_H to the location of the header file, and +# HASH_NAMESPACE to the namespace the class (unordered_map or +# hash_map) is in. We define HAVE_UNORDERED_MAP if the class we found +# is named unordered_map, or leave it undefined if not. + +# This also checks if unordered map exists. +AC_DEFUN([AC_CXX_STL_HASH], + [ + AC_MSG_CHECKING(the location of hash_map) + AC_LANG_SAVE + AC_LANG_CPLUSPLUS + ac_cv_cxx_hash_map="" + # First try unordered_map, but not on gcc's before 4.2 -- I've + # seen unexplainable unordered_map bugs with -O2 on older gcc's. + AC_TRY_COMPILE([#if defined(__GNUC__) && (__GNUC__ < 4 || (__GNUC__ == 4 && __GNUC_MINOR__ < 2)) + # error GCC too old for unordered_map + #endif + ], + [/* no program body necessary */], + [stl_hash_old_gcc=no], + [stl_hash_old_gcc=yes]) + for location in unordered_map tr1/unordered_map; do + for namespace in std std::tr1; do + if test -z "$ac_cv_cxx_hash_map" -a "$stl_hash_old_gcc" != yes; then + # Some older gcc's have a buggy tr1, so test a bit of code. + AC_TRY_COMPILE([#include <$location>], + [const ${namespace}::unordered_map t; + return t.find(5) == t.end();], + [ac_cv_cxx_hash_map="<$location>"; + ac_cv_cxx_hash_namespace="$namespace"; + ac_cv_cxx_hash_map_class="unordered_map";]) + fi + done + done + # Now try hash_map + for location in ext/hash_map hash_map; do + for namespace in __gnu_cxx "" std stdext; do + if test -z "$ac_cv_cxx_hash_map"; then + AC_TRY_COMPILE([#include <$location>], + [${namespace}::hash_map t], + [ac_cv_cxx_hash_map="<$location>"; + ac_cv_cxx_hash_namespace="$namespace"; + ac_cv_cxx_hash_map_class="hash_map";]) + fi + done + done + ac_cv_cxx_hash_set=`echo "$ac_cv_cxx_hash_map" | sed s/map/set/`; + ac_cv_cxx_hash_set_class=`echo "$ac_cv_cxx_hash_map_class" | sed s/map/set/`; + if test -n "$ac_cv_cxx_hash_map"; then + AC_DEFINE(HAVE_HASH_MAP, 1, [define if the compiler has hash_map]) + AC_DEFINE(HAVE_HASH_SET, 1, [define if the compiler has hash_set]) + AC_DEFINE_UNQUOTED(HASH_MAP_H,$ac_cv_cxx_hash_map, + [the location of or ]) + AC_DEFINE_UNQUOTED(HASH_SET_H,$ac_cv_cxx_hash_set, + [the location of or ]) + AC_DEFINE_UNQUOTED(HASH_NAMESPACE,$ac_cv_cxx_hash_namespace, + [the namespace of hash_map/hash_set]) + AC_DEFINE_UNQUOTED(HASH_MAP_CLASS,$ac_cv_cxx_hash_map_class, + [the name of ]) + AC_DEFINE_UNQUOTED(HASH_SET_CLASS,$ac_cv_cxx_hash_set_class, + [the name of ]) + AC_MSG_RESULT([$ac_cv_cxx_hash_map]) + else + AC_MSG_RESULT() + AC_MSG_WARN([could not find an STL hash_map]) + fi +]) + diff --git a/cpp/thirdparty/protobuf-2.3.0/gtest/build-aux/missing b/cpp/thirdparty/protobuf-2.5.0/missing similarity index 86% rename from cpp/thirdparty/protobuf-2.3.0/gtest/build-aux/missing rename to cpp/thirdparty/protobuf-2.5.0/missing index 1c8ff7049..86a8fc31e 100755 --- a/cpp/thirdparty/protobuf-2.3.0/gtest/build-aux/missing +++ b/cpp/thirdparty/protobuf-2.5.0/missing @@ -1,10 +1,10 @@ #! /bin/sh # Common stub for a few missing GNU programs while installing. -scriptversion=2006-05-10.23 +scriptversion=2012-01-06.13; # UTC -# Copyright (C) 1996, 1997, 1999, 2000, 2002, 2003, 2004, 2005, 2006 -# Free Software Foundation, Inc. +# Copyright (C) 1996, 1997, 1999, 2000, 2002, 2003, 2004, 2005, 2006, +# 2008, 2009, 2010, 2011, 2012 Free Software Foundation, Inc. # Originally by Fran,cois Pinard , 1996. # This program is free software; you can redistribute it and/or modify @@ -18,9 +18,7 @@ scriptversion=2006-05-10.23 # GNU General Public License for more details. # You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA -# 02110-1301, USA. +# along with this program. If not, see . # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a @@ -86,9 +84,11 @@ Supported PROGRAM values: help2man touch the output file lex create \`lex.yy.c', if possible, from existing .c makeinfo touch the output file - tar try tar, gnutar, gtar, then tar without non-portable flags yacc create \`y.tab.[ch]', if possible, from existing .[ch] +Version suffixes to PROGRAM as well as the prefixes \`gnu-', \`gnu', and +\`g' are ignored when checking the name. + Send bug reports to ." exit $? ;; @@ -106,23 +106,21 @@ Send bug reports to ." esac +# normalize program name to check for. +program=`echo "$1" | sed ' + s/^gnu-//; t + s/^gnu//; t + s/^g//; t'` + # Now exit if we have it, but it failed. Also exit now if we # don't have it and --version was passed (most likely to detect -# the program). +# the program). This is about non-GNU programs, so use $1 not +# $program. case $1 in - lex|yacc) + lex*|yacc*) # Not GNU programs, they don't have --version. ;; - tar) - if test -n "$run"; then - echo 1>&2 "ERROR: \`tar' requires --run" - exit 1 - elif test "x$2" = "x--version" || test "x$2" = "x--help"; then - exit 1 - fi - ;; - *) if test -z "$run" && ($1 --version) > /dev/null 2>&1; then # We have it, but it failed. @@ -138,7 +136,7 @@ esac # If it does not exist, or fails to run (possibly an outdated version), # try to emulate it. -case $1 in +case $program in aclocal*) echo 1>&2 "\ WARNING: \`$1' is $msg. You should only need it if @@ -148,7 +146,7 @@ WARNING: \`$1' is $msg. You should only need it if touch aclocal.m4 ;; - autoconf) + autoconf*) echo 1>&2 "\ WARNING: \`$1' is $msg. You should only need it if you modified \`${configure_ac}'. You might want to install the @@ -157,7 +155,7 @@ WARNING: \`$1' is $msg. You should only need it if touch configure ;; - autoheader) + autoheader*) echo 1>&2 "\ WARNING: \`$1' is $msg. You should only need it if you modified \`acconfig.h' or \`${configure_ac}'. You might want @@ -187,7 +185,7 @@ WARNING: \`$1' is $msg. You should only need it if while read f; do touch "$f"; done ;; - autom4te) + autom4te*) echo 1>&2 "\ WARNING: \`$1' is needed, but is $msg. You might have modified some files without having the @@ -210,7 +208,7 @@ WARNING: \`$1' is needed, but is $msg. fi ;; - bison|yacc) + bison*|yacc*) echo 1>&2 "\ WARNING: \`$1' $msg. You should only need it if you modified a \`.y' file. You may need the \`Bison' package @@ -218,7 +216,7 @@ WARNING: \`$1' $msg. You should only need it if \`Bison' from any GNU archive site." rm -f y.tab.c y.tab.h if test $# -ne 1; then - eval LASTARG="\${$#}" + eval LASTARG=\${$#} case $LASTARG in *.y) SRCFILE=`echo "$LASTARG" | sed 's/y$/c/'` @@ -240,7 +238,7 @@ WARNING: \`$1' $msg. You should only need it if fi ;; - lex|flex) + lex*|flex*) echo 1>&2 "\ WARNING: \`$1' is $msg. You should only need it if you modified a \`.l' file. You may need the \`Flex' package @@ -248,7 +246,7 @@ WARNING: \`$1' is $msg. You should only need it if \`Flex' from any GNU archive site." rm -f lex.yy.c if test $# -ne 1; then - eval LASTARG="\${$#}" + eval LASTARG=\${$#} case $LASTARG in *.l) SRCFILE=`echo "$LASTARG" | sed 's/l$/c/'` @@ -263,7 +261,7 @@ WARNING: \`$1' is $msg. You should only need it if fi ;; - help2man) + help2man*) echo 1>&2 "\ WARNING: \`$1' is $msg. You should only need it if you modified a dependency of a manual page. You may need the @@ -277,11 +275,11 @@ WARNING: \`$1' is $msg. You should only need it if else test -z "$file" || exec >$file echo ".ab help2man is required to generate this page" - exit 1 + exit $? fi ;; - makeinfo) + makeinfo*) echo 1>&2 "\ WARNING: \`$1' is $msg. You should only need it if you modified a \`.texi' or \`.texinfo' file, or any other file @@ -310,41 +308,6 @@ WARNING: \`$1' is $msg. You should only need it if touch $file ;; - tar) - shift - - # We have already tried tar in the generic part. - # Look for gnutar/gtar before invocation to avoid ugly error - # messages. - if (gnutar --version > /dev/null 2>&1); then - gnutar "$@" && exit 0 - fi - if (gtar --version > /dev/null 2>&1); then - gtar "$@" && exit 0 - fi - firstarg="$1" - if shift; then - case $firstarg in - *o*) - firstarg=`echo "$firstarg" | sed s/o//` - tar "$firstarg" "$@" && exit 0 - ;; - esac - case $firstarg in - *h*) - firstarg=`echo "$firstarg" | sed s/h//` - tar "$firstarg" "$@" && exit 0 - ;; - esac - fi - - echo 1>&2 "\ -WARNING: I can't seem to be able to run \`tar' with the given arguments. - You may want to install GNU tar or Free paxutils, or check the - command line arguments." - exit 1 - ;; - *) echo 1>&2 "\ WARNING: \`$1' is needed, and is $msg. @@ -363,5 +326,6 @@ exit 0 # eval: (add-hook 'write-file-hooks 'time-stamp) # time-stamp-start: "scriptversion=" # time-stamp-format: "%:y-%02m-%02d.%02H" -# time-stamp-end: "$" +# time-stamp-time-zone: "UTC" +# time-stamp-end: "; # UTC" # End: diff --git a/cpp/thirdparty/protobuf-2.3.0/protobuf-lite.pc.in b/cpp/thirdparty/protobuf-2.5.0/protobuf-lite.pc.in similarity index 100% rename from cpp/thirdparty/protobuf-2.3.0/protobuf-lite.pc.in rename to cpp/thirdparty/protobuf-2.5.0/protobuf-lite.pc.in diff --git a/cpp/thirdparty/protobuf-2.3.0/protobuf.pc.in b/cpp/thirdparty/protobuf-2.5.0/protobuf.pc.in similarity index 80% rename from cpp/thirdparty/protobuf-2.3.0/protobuf.pc.in rename to cpp/thirdparty/protobuf-2.5.0/protobuf.pc.in index 8a53a4311..29f248773 100644 --- a/cpp/thirdparty/protobuf-2.3.0/protobuf.pc.in +++ b/cpp/thirdparty/protobuf-2.5.0/protobuf.pc.in @@ -6,7 +6,8 @@ includedir=@includedir@ Name: Protocol Buffers Description: Google's Data Interchange Format Version: @VERSION@ -Libs: -L${libdir} -lprotobuf @LIBS@ @PTHREAD_CFLAGS@ @PTHREAD_LIBS@ +Libs: -L${libdir} -lprotobuf @PTHREAD_CFLAGS@ @PTHREAD_LIBS@ +Libs.private: @LIBS@ Cflags: -I${includedir} @PTHREAD_CFLAGS@ # Commented out because it crashes pkg-config *sigh*: # http://bugs.freedesktop.org/show_bug.cgi?id=13265 diff --git a/cpp/thirdparty/protobuf-2.3.0/python/README.txt b/cpp/thirdparty/protobuf-2.5.0/python/README.txt similarity index 66% rename from cpp/thirdparty/protobuf-2.3.0/python/README.txt rename to cpp/thirdparty/protobuf-2.5.0/python/README.txt index 96f1a734c..bb0032fe4 100644 --- a/cpp/thirdparty/protobuf-2.3.0/python/README.txt +++ b/cpp/thirdparty/protobuf-2.5.0/python/README.txt @@ -43,8 +43,9 @@ Installation $ protoc --version -4) Run the tests: +4) Build and run the tests: + $ python setup.py build $ python setup.py test If some tests fail, this library may not work correctly on your @@ -63,6 +64,9 @@ Installation $ python setup.py install This step may require superuser privileges. + NOTE: To use C++ implementation, you need to install C++ protobuf runtime + library of the same version and export the environment variable before this + step. See the "C++ Implementation" section below for more details. Usage ===== @@ -71,3 +75,27 @@ The complete documentation for Protocol Buffers is available via the web at: http://code.google.com/apis/protocolbuffers/ + +C++ Implementation +================== + +WARNING: This is EXPERIMENTAL and only available for CPython platforms. + +The C++ implementation for Python messages is built as a Python extension to +improve the overall protobuf Python performance. + +To use the C++ implementation, you need to: +1) Install the C++ protobuf runtime library, please see instructions in the + parent directory. +2) Export an environment variable: + + $ export PROTOCOL_BUFFERS_PYTHON_IMPLEMENTATION=cpp + +You need to export this variable before running setup.py script to build and +install the extension. You must also set the variable at runtime, otherwise +the pure-Python implementation will be used. In a future release, we will +change the default so that C++ implementation is used whenever it is available. +It is strongly recommended to run `python setup.py test` after setting the +variable to "cpp", so the tests will be against C++ implemented Python +messages. + diff --git a/cpp/thirdparty/protobuf-2.3.0/python/ez_setup.py b/cpp/thirdparty/protobuf-2.5.0/python/ez_setup.py similarity index 93% rename from cpp/thirdparty/protobuf-2.3.0/python/ez_setup.py rename to cpp/thirdparty/protobuf-2.5.0/python/ez_setup.py index b7a9849ea..a2cf777db 100755 --- a/cpp/thirdparty/protobuf-2.3.0/python/ez_setup.py +++ b/cpp/thirdparty/protobuf-2.5.0/python/ez_setup.py @@ -2,7 +2,7 @@ # This file was obtained from: # http://peak.telecommunity.com/dist/ez_setup.py -# on 2009/4/17. +# on 2011/1/21. """Bootstrap setuptools installation @@ -19,7 +19,7 @@ the appropriate options to ``use_setuptools()``. This file can also be run as a script to install or upgrade setuptools. """ import sys -DEFAULT_VERSION = "0.6c9" +DEFAULT_VERSION = "0.6c11" DEFAULT_URL = "http://pypi.python.org/packages/%s/s/setuptools/" % sys.version[:3] md5_data = { @@ -33,6 +33,14 @@ md5_data = { 'setuptools-0.6b4-py2.4.egg': '4cb2a185d228dacffb2d17f103b3b1c4', 'setuptools-0.6c1-py2.3.egg': 'b3f2b5539d65cb7f74ad79127f1a908c', 'setuptools-0.6c1-py2.4.egg': 'b45adeda0667d2d2ffe14009364f2a4b', + 'setuptools-0.6c10-py2.3.egg': 'ce1e2ab5d3a0256456d9fc13800a7090', + 'setuptools-0.6c10-py2.4.egg': '57d6d9d6e9b80772c59a53a8433a5dd4', + 'setuptools-0.6c10-py2.5.egg': 'de46ac8b1c97c895572e5e8596aeb8c7', + 'setuptools-0.6c10-py2.6.egg': '58ea40aef06da02ce641495523a0b7f5', + 'setuptools-0.6c11-py2.3.egg': '2baeac6e13d414a9d28e7ba5b5a596de', + 'setuptools-0.6c11-py2.4.egg': 'bd639f9b0eac4c42497034dec2ec0c2b', + 'setuptools-0.6c11-py2.5.egg': '64c94f3bf7a72a13ec83e0b24f2749b2', + 'setuptools-0.6c11-py2.6.egg': 'bfa92100bd772d5a213eedd356d64086', 'setuptools-0.6c2-py2.3.egg': 'f0064bf6aa2b7d0f3ba0b43f20817c27', 'setuptools-0.6c2-py2.4.egg': '616192eec35f47e8ea16cd6a122b7277', 'setuptools-0.6c3-py2.3.egg': 'f181fa125dfe85a259c9cd6f1d7b78fa', @@ -109,11 +117,11 @@ def use_setuptools( "\n\n(Currently using %r)" ) % (version, e.args[0]) sys.exit(2) - else: - del pkg_resources, sys.modules['pkg_resources'] # reload ok - return do_download() except pkg_resources.DistributionNotFound: - return do_download() + pass + + del pkg_resources, sys.modules['pkg_resources'] # reload ok + return do_download() def download_setuptools( version=DEFAULT_VERSION, download_base=DEFAULT_URL, to_dir=os.curdir, @@ -273,9 +281,3 @@ if __name__=='__main__': update_md5(sys.argv[2:]) else: main(sys.argv[1:]) - - - - - - diff --git a/cpp/thirdparty/protobuf-2.3.0/python/google/__init__.py b/cpp/thirdparty/protobuf-2.5.0/python/google/__init__.py similarity index 100% rename from cpp/thirdparty/protobuf-2.3.0/python/google/__init__.py rename to cpp/thirdparty/protobuf-2.5.0/python/google/__init__.py diff --git a/cpp/thirdparty/protobuf-2.3.0/python/google/protobuf/__init__.py b/cpp/thirdparty/protobuf-2.5.0/python/google/protobuf/__init__.py similarity index 100% rename from cpp/thirdparty/protobuf-2.3.0/python/google/protobuf/__init__.py rename to cpp/thirdparty/protobuf-2.5.0/python/google/protobuf/__init__.py diff --git a/cpp/thirdparty/protobuf-2.3.0/python/google/protobuf/descriptor.py b/cpp/thirdparty/protobuf-2.5.0/python/google/protobuf/descriptor.py similarity index 82% rename from cpp/thirdparty/protobuf-2.3.0/python/google/protobuf/descriptor.py rename to cpp/thirdparty/protobuf-2.5.0/python/google/protobuf/descriptor.py index aa4ab9695..eb13eda5a 100755 --- a/cpp/thirdparty/protobuf-2.3.0/python/google/protobuf/descriptor.py +++ b/cpp/thirdparty/protobuf-2.5.0/python/google/protobuf/descriptor.py @@ -28,16 +28,6 @@ # (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -# TODO(robinson): We probably need to provide deep-copy methods for -# descriptor types. When a FieldDescriptor is passed into -# Descriptor.__init__(), we should make a deep copy and then set -# containing_type on it. Alternatively, we could just get -# rid of containing_type (iit's not needed for reflection.py, at least). -# -# TODO(robinson): Print method? -# -# TODO(robinson): Useful __repr__? - """Descriptors essentially contain exactly the information found in a .proto file, in types that make this information accessible in Python. """ @@ -45,10 +35,24 @@ file, in types that make this information accessible in Python. __author__ = 'robinson@google.com (Will Robinson)' +from google.protobuf.internal import api_implementation + + +if api_implementation.Type() == 'cpp': + if api_implementation.Version() == 2: + from google.protobuf.internal.cpp import _message + else: + from google.protobuf.internal import cpp_message + + class Error(Exception): """Base error for this module.""" +class TypeTransformationError(Error): + """Error transforming between python proto type and corresponding C++ type.""" + + class DescriptorBase(object): """Descriptors base class. @@ -75,6 +79,18 @@ class DescriptorBase(object): # Does this descriptor have non-default options? self.has_options = options is not None + def _SetOptions(self, options, options_class_name): + """Sets the descriptor's options + + This function is used in generated proto2 files to update descriptor + options. It must not be used outside proto2. + """ + self._options = options + self._options_class_name = options_class_name + + # Does this descriptor have non-default options? + self.has_options = options is not None + def GetOptions(self): """Retrieves descriptor options. @@ -253,6 +269,24 @@ class Descriptor(_NestedDescriptorBase): self._serialized_start = serialized_start self._serialized_end = serialized_end + def EnumValueName(self, enum, value): + """Returns the string name of an enum value. + + This is just a small helper method to simplify a common operation. + + Args: + enum: string name of the Enum. + value: int, value of the enum. + + Returns: + string name of the enum value. + + Raises: + KeyError if either the Enum doesn't exist or the value is not a valid + value for the enum. + """ + return self.enum_types_by_name[enum].values_by_number[value].name + def CopyToProto(self, proto): """Copies this to a descriptor_pb2.DescriptorProto. @@ -278,7 +312,7 @@ class FieldDescriptor(DescriptorBase): """Descriptor for a single field in a .proto file. - A FieldDescriptor instance has the following attriubtes: + A FieldDescriptor instance has the following attributes: name: (str) Name of this field, exactly as it appears in .proto. full_name: (str) Name of this field, including containing scope. This is @@ -361,6 +395,27 @@ class FieldDescriptor(DescriptorBase): CPPTYPE_MESSAGE = 10 MAX_CPPTYPE = 10 + _PYTHON_TO_CPP_PROTO_TYPE_MAP = { + TYPE_DOUBLE: CPPTYPE_DOUBLE, + TYPE_FLOAT: CPPTYPE_FLOAT, + TYPE_ENUM: CPPTYPE_ENUM, + TYPE_INT64: CPPTYPE_INT64, + TYPE_SINT64: CPPTYPE_INT64, + TYPE_SFIXED64: CPPTYPE_INT64, + TYPE_UINT64: CPPTYPE_UINT64, + TYPE_FIXED64: CPPTYPE_UINT64, + TYPE_INT32: CPPTYPE_INT32, + TYPE_SFIXED32: CPPTYPE_INT32, + TYPE_SINT32: CPPTYPE_INT32, + TYPE_UINT32: CPPTYPE_UINT32, + TYPE_FIXED32: CPPTYPE_UINT32, + TYPE_BYTES: CPPTYPE_STRING, + TYPE_STRING: CPPTYPE_STRING, + TYPE_BOOL: CPPTYPE_BOOL, + TYPE_MESSAGE: CPPTYPE_MESSAGE, + TYPE_GROUP: CPPTYPE_MESSAGE + } + # Must be consistent with C++ FieldDescriptor::Label enum in # descriptor.h. # @@ -396,6 +451,39 @@ class FieldDescriptor(DescriptorBase): self.enum_type = enum_type self.is_extension = is_extension self.extension_scope = extension_scope + if api_implementation.Type() == 'cpp': + if is_extension: + if api_implementation.Version() == 2: + self._cdescriptor = _message.GetExtensionDescriptor(full_name) + else: + self._cdescriptor = cpp_message.GetExtensionDescriptor(full_name) + else: + if api_implementation.Version() == 2: + self._cdescriptor = _message.GetFieldDescriptor(full_name) + else: + self._cdescriptor = cpp_message.GetFieldDescriptor(full_name) + else: + self._cdescriptor = None + + @staticmethod + def ProtoTypeToCppProtoType(proto_type): + """Converts from a Python proto type to a C++ Proto Type. + + The Python ProtocolBuffer classes specify both the 'Python' datatype and the + 'C++' datatype - and they're not the same. This helper method should + translate from one to another. + + Args: + proto_type: the Python proto type (descriptor.FieldDescriptor.TYPE_*) + Returns: + descriptor.FieldDescriptor.CPPTYPE_*, the C++ type. + Raises: + TypeTransformationError: when the Python proto type isn't known. + """ + try: + return FieldDescriptor._PYTHON_TO_CPP_PROTO_TYPE_MAP[proto_type] + except KeyError: + raise TypeTransformationError('Unknown proto_type: %s' % proto_type) class EnumDescriptor(_NestedDescriptorBase): @@ -567,9 +655,16 @@ class FileDescriptor(DescriptorBase): """Constructor.""" super(FileDescriptor, self).__init__(options, 'FileOptions') + self.message_types_by_name = {} self.name = name self.package = package self.serialized_pb = serialized_pb + if (api_implementation.Type() == 'cpp' and + self.serialized_pb is not None): + if api_implementation.Version() == 2: + _message.BuildFile(self.serialized_pb) + else: + cpp_message.BuildFile(self.serialized_pb) def CopyToProto(self, proto): """Copies this to a descriptor_pb2.FileDescriptorProto. @@ -588,3 +683,31 @@ def _ParseOptions(message, string): """ message.ParseFromString(string) return message + + +def MakeDescriptor(desc_proto, package=''): + """Make a protobuf Descriptor given a DescriptorProto protobuf. + + Args: + desc_proto: The descriptor_pb2.DescriptorProto protobuf message. + package: Optional package name for the new message Descriptor (string). + + Returns: + A Descriptor for protobuf messages. + """ + full_message_name = [desc_proto.name] + if package: full_message_name.insert(0, package) + fields = [] + for field_proto in desc_proto.field: + full_name = '.'.join(full_message_name + [field_proto.name]) + field = FieldDescriptor( + field_proto.name, full_name, field_proto.number - 1, + field_proto.number, field_proto.type, + FieldDescriptor.ProtoTypeToCppProtoType(field_proto.type), + field_proto.label, None, None, None, None, False, None, + has_default_value=False) + fields.append(field) + + desc_name = '.'.join(full_message_name) + return Descriptor(desc_proto.name, desc_name, None, None, fields, + [], [], []) diff --git a/cpp/thirdparty/protobuf-2.5.0/python/google/protobuf/descriptor_database.py b/cpp/thirdparty/protobuf-2.5.0/python/google/protobuf/descriptor_database.py new file mode 100644 index 000000000..8665d3c59 --- /dev/null +++ b/cpp/thirdparty/protobuf-2.5.0/python/google/protobuf/descriptor_database.py @@ -0,0 +1,120 @@ +# Protocol Buffers - Google's data interchange format +# Copyright 2008 Google Inc. All rights reserved. +# http://code.google.com/p/protobuf/ +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions are +# met: +# +# * Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# * Redistributions in binary form must reproduce the above +# copyright notice, this list of conditions and the following disclaimer +# in the documentation and/or other materials provided with the +# distribution. +# * Neither the name of Google Inc. nor the names of its +# contributors may be used to endorse or promote products derived from +# this software without specific prior written permission. +# +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +"""Provides a container for DescriptorProtos.""" + +__author__ = 'matthewtoia@google.com (Matt Toia)' + + +class DescriptorDatabase(object): + """A container accepting FileDescriptorProtos and maps DescriptorProtos.""" + + def __init__(self): + self._file_desc_protos_by_file = {} + self._file_desc_protos_by_symbol = {} + + def Add(self, file_desc_proto): + """Adds the FileDescriptorProto and its types to this database. + + Args: + file_desc_proto: The FileDescriptorProto to add. + """ + + self._file_desc_protos_by_file[file_desc_proto.name] = file_desc_proto + package = file_desc_proto.package + for message in file_desc_proto.message_type: + self._file_desc_protos_by_symbol.update( + (name, file_desc_proto) for name in _ExtractSymbols(message, package)) + for enum in file_desc_proto.enum_type: + self._file_desc_protos_by_symbol[ + '.'.join((package, enum.name))] = file_desc_proto + + def FindFileByName(self, name): + """Finds the file descriptor proto by file name. + + Typically the file name is a relative path ending to a .proto file. The + proto with the given name will have to have been added to this database + using the Add method or else an error will be raised. + + Args: + name: The file name to find. + + Returns: + The file descriptor proto matching the name. + + Raises: + KeyError if no file by the given name was added. + """ + + return self._file_desc_protos_by_file[name] + + def FindFileContainingSymbol(self, symbol): + """Finds the file descriptor proto containing the specified symbol. + + The symbol should be a fully qualified name including the file descriptor's + package and any containing messages. Some examples: + + 'some.package.name.Message' + 'some.package.name.Message.NestedEnum' + + The file descriptor proto containing the specified symbol must be added to + this database using the Add method or else an error will be raised. + + Args: + symbol: The fully qualified symbol name. + + Returns: + The file descriptor proto containing the symbol. + + Raises: + KeyError if no file contains the specified symbol. + """ + + return self._file_desc_protos_by_symbol[symbol] + + +def _ExtractSymbols(desc_proto, package): + """Pulls out all the symbols from a descriptor proto. + + Args: + desc_proto: The proto to extract symbols from. + package: The package containing the descriptor type. + + Yields: + The fully qualified name found in the descriptor. + """ + + message_name = '.'.join((package, desc_proto.name)) + yield message_name + for nested_type in desc_proto.nested_type: + for symbol in _ExtractSymbols(nested_type, message_name): + yield symbol + for enum_type in desc_proto.enum_type: + yield '.'.join((message_name, enum_type.name)) diff --git a/cpp/thirdparty/protobuf-2.5.0/python/google/protobuf/descriptor_pool.py b/cpp/thirdparty/protobuf-2.5.0/python/google/protobuf/descriptor_pool.py new file mode 100644 index 000000000..8f1f4457e --- /dev/null +++ b/cpp/thirdparty/protobuf-2.5.0/python/google/protobuf/descriptor_pool.py @@ -0,0 +1,527 @@ +# Protocol Buffers - Google's data interchange format +# Copyright 2008 Google Inc. All rights reserved. +# http://code.google.com/p/protobuf/ +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions are +# met: +# +# * Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# * Redistributions in binary form must reproduce the above +# copyright notice, this list of conditions and the following disclaimer +# in the documentation and/or other materials provided with the +# distribution. +# * Neither the name of Google Inc. nor the names of its +# contributors may be used to endorse or promote products derived from +# this software without specific prior written permission. +# +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +"""Provides DescriptorPool to use as a container for proto2 descriptors. + +The DescriptorPool is used in conjection with a DescriptorDatabase to maintain +a collection of protocol buffer descriptors for use when dynamically creating +message types at runtime. + +For most applications protocol buffers should be used via modules generated by +the protocol buffer compiler tool. This should only be used when the type of +protocol buffers used in an application or library cannot be predetermined. + +Below is a straightforward example on how to use this class: + + pool = DescriptorPool() + file_descriptor_protos = [ ... ] + for file_descriptor_proto in file_descriptor_protos: + pool.Add(file_descriptor_proto) + my_message_descriptor = pool.FindMessageTypeByName('some.package.MessageType') + +The message descriptor can be used in conjunction with the message_factory +module in order to create a protocol buffer class that can be encoded and +decoded. +""" + +__author__ = 'matthewtoia@google.com (Matt Toia)' + +from google.protobuf import descriptor_pb2 +from google.protobuf import descriptor +from google.protobuf import descriptor_database + + +class DescriptorPool(object): + """A collection of protobufs dynamically constructed by descriptor protos.""" + + def __init__(self, descriptor_db=None): + """Initializes a Pool of proto buffs. + + The descriptor_db argument to the constructor is provided to allow + specialized file descriptor proto lookup code to be triggered on demand. An + example would be an implementation which will read and compile a file + specified in a call to FindFileByName() and not require the call to Add() + at all. Results from this database will be cached internally here as well. + + Args: + descriptor_db: A secondary source of file descriptors. + """ + + self._internal_db = descriptor_database.DescriptorDatabase() + self._descriptor_db = descriptor_db + self._descriptors = {} + self._enum_descriptors = {} + self._file_descriptors = {} + + def Add(self, file_desc_proto): + """Adds the FileDescriptorProto and its types to this pool. + + Args: + file_desc_proto: The FileDescriptorProto to add. + """ + + self._internal_db.Add(file_desc_proto) + + def FindFileByName(self, file_name): + """Gets a FileDescriptor by file name. + + Args: + file_name: The path to the file to get a descriptor for. + + Returns: + A FileDescriptor for the named file. + + Raises: + KeyError: if the file can not be found in the pool. + """ + + try: + file_proto = self._internal_db.FindFileByName(file_name) + except KeyError as error: + if self._descriptor_db: + file_proto = self._descriptor_db.FindFileByName(file_name) + else: + raise error + if not file_proto: + raise KeyError('Cannot find a file named %s' % file_name) + return self._ConvertFileProtoToFileDescriptor(file_proto) + + def FindFileContainingSymbol(self, symbol): + """Gets the FileDescriptor for the file containing the specified symbol. + + Args: + symbol: The name of the symbol to search for. + + Returns: + A FileDescriptor that contains the specified symbol. + + Raises: + KeyError: if the file can not be found in the pool. + """ + + try: + file_proto = self._internal_db.FindFileContainingSymbol(symbol) + except KeyError as error: + if self._descriptor_db: + file_proto = self._descriptor_db.FindFileContainingSymbol(symbol) + else: + raise error + if not file_proto: + raise KeyError('Cannot find a file containing %s' % symbol) + return self._ConvertFileProtoToFileDescriptor(file_proto) + + def FindMessageTypeByName(self, full_name): + """Loads the named descriptor from the pool. + + Args: + full_name: The full name of the descriptor to load. + + Returns: + The descriptor for the named type. + """ + + full_name = full_name.lstrip('.') # fix inconsistent qualified name formats + if full_name not in self._descriptors: + self.FindFileContainingSymbol(full_name) + return self._descriptors[full_name] + + def FindEnumTypeByName(self, full_name): + """Loads the named enum descriptor from the pool. + + Args: + full_name: The full name of the enum descriptor to load. + + Returns: + The enum descriptor for the named type. + """ + + full_name = full_name.lstrip('.') # fix inconsistent qualified name formats + if full_name not in self._enum_descriptors: + self.FindFileContainingSymbol(full_name) + return self._enum_descriptors[full_name] + + def _ConvertFileProtoToFileDescriptor(self, file_proto): + """Creates a FileDescriptor from a proto or returns a cached copy. + + This method also has the side effect of loading all the symbols found in + the file into the appropriate dictionaries in the pool. + + Args: + file_proto: The proto to convert. + + Returns: + A FileDescriptor matching the passed in proto. + """ + + if file_proto.name not in self._file_descriptors: + file_descriptor = descriptor.FileDescriptor( + name=file_proto.name, + package=file_proto.package, + options=file_proto.options, + serialized_pb=file_proto.SerializeToString()) + scope = {} + dependencies = list(self._GetDeps(file_proto)) + + for dependency in dependencies: + dep_desc = self.FindFileByName(dependency.name) + dep_proto = descriptor_pb2.FileDescriptorProto.FromString( + dep_desc.serialized_pb) + package = '.' + dep_proto.package + package_prefix = package + '.' + + def _strip_package(symbol): + if symbol.startswith(package_prefix): + return symbol[len(package_prefix):] + return symbol + + symbols = list(self._ExtractSymbols(dep_proto.message_type, package)) + scope.update(symbols) + scope.update((_strip_package(k), v) for k, v in symbols) + + symbols = list(self._ExtractEnums(dep_proto.enum_type, package)) + scope.update(symbols) + scope.update((_strip_package(k), v) for k, v in symbols) + + for message_type in file_proto.message_type: + message_desc = self._ConvertMessageDescriptor( + message_type, file_proto.package, file_descriptor, scope) + file_descriptor.message_types_by_name[message_desc.name] = message_desc + for enum_type in file_proto.enum_type: + self._ConvertEnumDescriptor(enum_type, file_proto.package, + file_descriptor, None, scope) + for desc_proto in self._ExtractMessages(file_proto.message_type): + self._SetFieldTypes(desc_proto, scope) + + for desc_proto in file_proto.message_type: + desc = scope[desc_proto.name] + file_descriptor.message_types_by_name[desc_proto.name] = desc + self.Add(file_proto) + self._file_descriptors[file_proto.name] = file_descriptor + + return self._file_descriptors[file_proto.name] + + def _ConvertMessageDescriptor(self, desc_proto, package=None, file_desc=None, + scope=None): + """Adds the proto to the pool in the specified package. + + Args: + desc_proto: The descriptor_pb2.DescriptorProto protobuf message. + package: The package the proto should be located in. + file_desc: The file containing this message. + scope: Dict mapping short and full symbols to message and enum types. + + Returns: + The added descriptor. + """ + + if package: + desc_name = '.'.join((package, desc_proto.name)) + else: + desc_name = desc_proto.name + + if file_desc is None: + file_name = None + else: + file_name = file_desc.name + + if scope is None: + scope = {} + + nested = [ + self._ConvertMessageDescriptor(nested, desc_name, file_desc, scope) + for nested in desc_proto.nested_type] + enums = [ + self._ConvertEnumDescriptor(enum, desc_name, file_desc, None, scope) + for enum in desc_proto.enum_type] + fields = [self._MakeFieldDescriptor(field, desc_name, index) + for index, field in enumerate(desc_proto.field)] + extensions = [self._MakeFieldDescriptor(extension, desc_name, True) + for index, extension in enumerate(desc_proto.extension)] + extension_ranges = [(r.start, r.end) for r in desc_proto.extension_range] + if extension_ranges: + is_extendable = True + else: + is_extendable = False + desc = descriptor.Descriptor( + name=desc_proto.name, + full_name=desc_name, + filename=file_name, + containing_type=None, + fields=fields, + nested_types=nested, + enum_types=enums, + extensions=extensions, + options=desc_proto.options, + is_extendable=is_extendable, + extension_ranges=extension_ranges, + file=file_desc, + serialized_start=None, + serialized_end=None) + for nested in desc.nested_types: + nested.containing_type = desc + for enum in desc.enum_types: + enum.containing_type = desc + scope[desc_proto.name] = desc + scope['.' + desc_name] = desc + self._descriptors[desc_name] = desc + return desc + + def _ConvertEnumDescriptor(self, enum_proto, package=None, file_desc=None, + containing_type=None, scope=None): + """Make a protobuf EnumDescriptor given an EnumDescriptorProto protobuf. + + Args: + enum_proto: The descriptor_pb2.EnumDescriptorProto protobuf message. + package: Optional package name for the new message EnumDescriptor. + file_desc: The file containing the enum descriptor. + containing_type: The type containing this enum. + scope: Scope containing available types. + + Returns: + The added descriptor + """ + + if package: + enum_name = '.'.join((package, enum_proto.name)) + else: + enum_name = enum_proto.name + + if file_desc is None: + file_name = None + else: + file_name = file_desc.name + + values = [self._MakeEnumValueDescriptor(value, index) + for index, value in enumerate(enum_proto.value)] + desc = descriptor.EnumDescriptor(name=enum_proto.name, + full_name=enum_name, + filename=file_name, + file=file_desc, + values=values, + containing_type=containing_type, + options=enum_proto.options) + scope[enum_proto.name] = desc + scope['.%s' % enum_name] = desc + self._enum_descriptors[enum_name] = desc + return desc + + def _MakeFieldDescriptor(self, field_proto, message_name, index, + is_extension=False): + """Creates a field descriptor from a FieldDescriptorProto. + + For message and enum type fields, this method will do a look up + in the pool for the appropriate descriptor for that type. If it + is unavailable, it will fall back to the _source function to + create it. If this type is still unavailable, construction will + fail. + + Args: + field_proto: The proto describing the field. + message_name: The name of the containing message. + index: Index of the field + is_extension: Indication that this field is for an extension. + + Returns: + An initialized FieldDescriptor object + """ + + if message_name: + full_name = '.'.join((message_name, field_proto.name)) + else: + full_name = field_proto.name + + return descriptor.FieldDescriptor( + name=field_proto.name, + full_name=full_name, + index=index, + number=field_proto.number, + type=field_proto.type, + cpp_type=None, + message_type=None, + enum_type=None, + containing_type=None, + label=field_proto.label, + has_default_value=False, + default_value=None, + is_extension=is_extension, + extension_scope=None, + options=field_proto.options) + + def _SetFieldTypes(self, desc_proto, scope): + """Sets the field's type, cpp_type, message_type and enum_type. + + Args: + desc_proto: The message descriptor to update. + scope: Enclosing scope of available types. + """ + + desc = scope[desc_proto.name] + for field_proto, field_desc in zip(desc_proto.field, desc.fields): + if field_proto.type_name: + type_name = field_proto.type_name + if type_name not in scope: + type_name = '.' + type_name + desc = scope[type_name] + else: + desc = None + + if not field_proto.HasField('type'): + if isinstance(desc, descriptor.Descriptor): + field_proto.type = descriptor.FieldDescriptor.TYPE_MESSAGE + else: + field_proto.type = descriptor.FieldDescriptor.TYPE_ENUM + + field_desc.cpp_type = descriptor.FieldDescriptor.ProtoTypeToCppProtoType( + field_proto.type) + + if (field_proto.type == descriptor.FieldDescriptor.TYPE_MESSAGE + or field_proto.type == descriptor.FieldDescriptor.TYPE_GROUP): + field_desc.message_type = desc + + if field_proto.type == descriptor.FieldDescriptor.TYPE_ENUM: + field_desc.enum_type = desc + + if field_proto.label == descriptor.FieldDescriptor.LABEL_REPEATED: + field_desc.has_default = False + field_desc.default_value = [] + elif field_proto.HasField('default_value'): + field_desc.has_default = True + if (field_proto.type == descriptor.FieldDescriptor.TYPE_DOUBLE or + field_proto.type == descriptor.FieldDescriptor.TYPE_FLOAT): + field_desc.default_value = float(field_proto.default_value) + elif field_proto.type == descriptor.FieldDescriptor.TYPE_STRING: + field_desc.default_value = field_proto.default_value + elif field_proto.type == descriptor.FieldDescriptor.TYPE_BOOL: + field_desc.default_value = field_proto.default_value.lower() == 'true' + elif field_proto.type == descriptor.FieldDescriptor.TYPE_ENUM: + field_desc.default_value = field_desc.enum_type.values_by_name[ + field_proto.default_value].index + else: + field_desc.default_value = int(field_proto.default_value) + else: + field_desc.has_default = False + field_desc.default_value = None + + field_desc.type = field_proto.type + + for nested_type in desc_proto.nested_type: + self._SetFieldTypes(nested_type, scope) + + def _MakeEnumValueDescriptor(self, value_proto, index): + """Creates a enum value descriptor object from a enum value proto. + + Args: + value_proto: The proto describing the enum value. + index: The index of the enum value. + + Returns: + An initialized EnumValueDescriptor object. + """ + + return descriptor.EnumValueDescriptor( + name=value_proto.name, + index=index, + number=value_proto.number, + options=value_proto.options, + type=None) + + def _ExtractSymbols(self, desc_protos, package): + """Pulls out all the symbols from descriptor protos. + + Args: + desc_protos: The protos to extract symbols from. + package: The package containing the descriptor type. + Yields: + A two element tuple of the type name and descriptor object. + """ + + for desc_proto in desc_protos: + if package: + message_name = '.'.join((package, desc_proto.name)) + else: + message_name = desc_proto.name + message_desc = self.FindMessageTypeByName(message_name) + yield (message_name, message_desc) + for symbol in self._ExtractSymbols(desc_proto.nested_type, message_name): + yield symbol + for symbol in self._ExtractEnums(desc_proto.enum_type, message_name): + yield symbol + + def _ExtractEnums(self, enum_protos, package): + """Pulls out all the symbols from enum protos. + + Args: + enum_protos: The protos to extract symbols from. + package: The package containing the enum type. + + Yields: + A two element tuple of the type name and enum descriptor object. + """ + + for enum_proto in enum_protos: + if package: + enum_name = '.'.join((package, enum_proto.name)) + else: + enum_name = enum_proto.name + enum_desc = self.FindEnumTypeByName(enum_name) + yield (enum_name, enum_desc) + + def _ExtractMessages(self, desc_protos): + """Pulls out all the message protos from descriptos. + + Args: + desc_protos: The protos to extract symbols from. + + Yields: + Descriptor protos. + """ + + for desc_proto in desc_protos: + yield desc_proto + for message in self._ExtractMessages(desc_proto.nested_type): + yield message + + def _GetDeps(self, file_proto): + """Recursively finds dependencies for file protos. + + Args: + file_proto: The proto to get dependencies from. + + Yields: + Each direct and indirect dependency. + """ + + for dependency in file_proto.dependency: + dep_desc = self.FindFileByName(dependency) + dep_proto = descriptor_pb2.FileDescriptorProto.FromString( + dep_desc.serialized_pb) + yield dep_proto + for parent_dep in self._GetDeps(dep_proto): + yield parent_dep diff --git a/cpp/thirdparty/protobuf-2.3.0/python/google/protobuf/internal/__init__.py b/cpp/thirdparty/protobuf-2.5.0/python/google/protobuf/internal/__init__.py similarity index 100% rename from cpp/thirdparty/protobuf-2.3.0/python/google/protobuf/internal/__init__.py rename to cpp/thirdparty/protobuf-2.5.0/python/google/protobuf/internal/__init__.py diff --git a/cpp/thirdparty/protobuf-2.5.0/python/google/protobuf/internal/api_implementation.py b/cpp/thirdparty/protobuf-2.5.0/python/google/protobuf/internal/api_implementation.py new file mode 100755 index 000000000..ce02a3292 --- /dev/null +++ b/cpp/thirdparty/protobuf-2.5.0/python/google/protobuf/internal/api_implementation.py @@ -0,0 +1,87 @@ +# Protocol Buffers - Google's data interchange format +# Copyright 2008 Google Inc. All rights reserved. +# http://code.google.com/p/protobuf/ +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions are +# met: +# +# * Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# * Redistributions in binary form must reproduce the above +# copyright notice, this list of conditions and the following disclaimer +# in the documentation and/or other materials provided with the +# distribution. +# * Neither the name of Google Inc. nor the names of its +# contributors may be used to endorse or promote products derived from +# this software without specific prior written permission. +# +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +""" +This module is the central entity that determines which implementation of the +API is used. +""" + +__author__ = 'petar@google.com (Petar Petrov)' + +import os +# This environment variable can be used to switch to a certain implementation +# of the Python API. Right now only 'python' and 'cpp' are valid values. Any +# other value will be ignored. +_implementation_type = os.getenv('PROTOCOL_BUFFERS_PYTHON_IMPLEMENTATION', + 'python') + + +if _implementation_type != 'python': + # For now, by default use the pure-Python implementation. + # The code below checks if the C extension is available and + # uses it if it is available. + _implementation_type = 'cpp' + ## Determine automatically which implementation to use. + #try: + # from google.protobuf.internal import cpp_message + # _implementation_type = 'cpp' + #except ImportError, e: + # _implementation_type = 'python' + + +# This environment variable can be used to switch between the two +# 'cpp' implementations. Right now only 1 and 2 are valid values. Any +# other value will be ignored. +_implementation_version_str = os.getenv( + 'PROTOCOL_BUFFERS_PYTHON_IMPLEMENTATION_VERSION', + '1') + + +if _implementation_version_str not in ('1', '2'): + raise ValueError( + "unsupported PROTOCOL_BUFFERS_PYTHON_IMPLEMENTATION_VERSION: '" + + _implementation_version_str + "' (supported versions: 1, 2)" + ) + + +_implementation_version = int(_implementation_version_str) + + + +# Usage of this function is discouraged. Clients shouldn't care which +# implementation of the API is in use. Note that there is no guarantee +# that differences between APIs will be maintained. +# Please don't use this function if possible. +def Type(): + return _implementation_type + +# See comment on 'Type' above. +def Version(): + return _implementation_version diff --git a/cpp/thirdparty/protobuf-2.3.0/python/google/protobuf/internal/containers.py b/cpp/thirdparty/protobuf-2.5.0/python/google/protobuf/internal/containers.py similarity index 89% rename from cpp/thirdparty/protobuf-2.3.0/python/google/protobuf/internal/containers.py rename to cpp/thirdparty/protobuf-2.5.0/python/google/protobuf/internal/containers.py index 5cc7d6d0c..34b35f8ab 100755 --- a/cpp/thirdparty/protobuf-2.3.0/python/google/protobuf/internal/containers.py +++ b/cpp/thirdparty/protobuf-2.5.0/python/google/protobuf/internal/containers.py @@ -72,9 +72,20 @@ class BaseContainer(object): # The concrete classes should define __eq__. return not self == other + def __hash__(self): + raise TypeError('unhashable object') + def __repr__(self): return repr(self._values) + def sort(self, *args, **kwargs): + # Continue to support the old sort_function keyword argument. + # This is expected to be a rare occurrence, so use LBYL to avoid + # the overhead of actually catching KeyError. + if 'sort_function' in kwargs: + kwargs['cmp'] = kwargs.pop('sort_function') + self._values.sort(*args, **kwargs) + class RepeatedScalarFieldContainer(BaseContainer): @@ -198,28 +209,42 @@ class RepeatedCompositeFieldContainer(BaseContainer): super(RepeatedCompositeFieldContainer, self).__init__(message_listener) self._message_descriptor = message_descriptor - def add(self): - new_element = self._message_descriptor._concrete_class() + def add(self, **kwargs): + """Adds a new element at the end of the list and returns it. Keyword + arguments may be used to initialize the element. + """ + new_element = self._message_descriptor._concrete_class(**kwargs) new_element._SetListener(self._message_listener) self._values.append(new_element) if not self._message_listener.dirty: self._message_listener.Modified() return new_element - def MergeFrom(self, other): - """Appends the contents of another repeated field of the same type to this - one, copying each individual message. + def extend(self, elem_seq): + """Extends by appending the given sequence of elements of the same type + as this one, copying each individual message. """ message_class = self._message_descriptor._concrete_class listener = self._message_listener values = self._values - for message in other._values: + for message in elem_seq: new_element = message_class() new_element._SetListener(listener) new_element.MergeFrom(message) values.append(new_element) listener.Modified() + def MergeFrom(self, other): + """Appends the contents of another repeated field of the same type to this + one, copying each individual message. + """ + self.extend(other._values) + + def remove(self, elem): + """Removes an item from the list. Similar to list.remove().""" + self._values.remove(elem) + self._message_listener.Modified() + def __getslice__(self, start, stop): """Retrieves the subset of items from between the specified indices.""" return self._values[start:stop] diff --git a/cpp/thirdparty/protobuf-2.5.0/python/google/protobuf/internal/cpp_message.py b/cpp/thirdparty/protobuf-2.5.0/python/google/protobuf/internal/cpp_message.py new file mode 100755 index 000000000..23ab9ba49 --- /dev/null +++ b/cpp/thirdparty/protobuf-2.5.0/python/google/protobuf/internal/cpp_message.py @@ -0,0 +1,663 @@ +# Protocol Buffers - Google's data interchange format +# Copyright 2008 Google Inc. All rights reserved. +# http://code.google.com/p/protobuf/ +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions are +# met: +# +# * Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# * Redistributions in binary form must reproduce the above +# copyright notice, this list of conditions and the following disclaimer +# in the documentation and/or other materials provided with the +# distribution. +# * Neither the name of Google Inc. nor the names of its +# contributors may be used to endorse or promote products derived from +# this software without specific prior written permission. +# +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +"""Contains helper functions used to create protocol message classes from +Descriptor objects at runtime backed by the protocol buffer C++ API. +""" + +__author__ = 'petar@google.com (Petar Petrov)' + +import copy_reg +import operator +from google.protobuf.internal import _net_proto2___python +from google.protobuf.internal import enum_type_wrapper +from google.protobuf import message + + +_LABEL_REPEATED = _net_proto2___python.LABEL_REPEATED +_LABEL_OPTIONAL = _net_proto2___python.LABEL_OPTIONAL +_CPPTYPE_MESSAGE = _net_proto2___python.CPPTYPE_MESSAGE +_TYPE_MESSAGE = _net_proto2___python.TYPE_MESSAGE + + +def GetDescriptorPool(): + """Creates a new DescriptorPool C++ object.""" + return _net_proto2___python.NewCDescriptorPool() + + +_pool = GetDescriptorPool() + + +def GetFieldDescriptor(full_field_name): + """Searches for a field descriptor given a full field name.""" + return _pool.FindFieldByName(full_field_name) + + +def BuildFile(content): + """Registers a new proto file in the underlying C++ descriptor pool.""" + _net_proto2___python.BuildFile(content) + + +def GetExtensionDescriptor(full_extension_name): + """Searches for extension descriptor given a full field name.""" + return _pool.FindExtensionByName(full_extension_name) + + +def NewCMessage(full_message_name): + """Creates a new C++ protocol message by its name.""" + return _net_proto2___python.NewCMessage(full_message_name) + + +def ScalarProperty(cdescriptor): + """Returns a scalar property for the given descriptor.""" + + def Getter(self): + return self._cmsg.GetScalar(cdescriptor) + + def Setter(self, value): + self._cmsg.SetScalar(cdescriptor, value) + + return property(Getter, Setter) + + +def CompositeProperty(cdescriptor, message_type): + """Returns a Python property the given composite field.""" + + def Getter(self): + sub_message = self._composite_fields.get(cdescriptor.name, None) + if sub_message is None: + cmessage = self._cmsg.NewSubMessage(cdescriptor) + sub_message = message_type._concrete_class(__cmessage=cmessage) + self._composite_fields[cdescriptor.name] = sub_message + return sub_message + + return property(Getter) + + +class RepeatedScalarContainer(object): + """Container for repeated scalar fields.""" + + __slots__ = ['_message', '_cfield_descriptor', '_cmsg'] + + def __init__(self, msg, cfield_descriptor): + self._message = msg + self._cmsg = msg._cmsg + self._cfield_descriptor = cfield_descriptor + + def append(self, value): + self._cmsg.AddRepeatedScalar( + self._cfield_descriptor, value) + + def extend(self, sequence): + for element in sequence: + self.append(element) + + def insert(self, key, value): + values = self[slice(None, None, None)] + values.insert(key, value) + self._cmsg.AssignRepeatedScalar(self._cfield_descriptor, values) + + def remove(self, value): + values = self[slice(None, None, None)] + values.remove(value) + self._cmsg.AssignRepeatedScalar(self._cfield_descriptor, values) + + def __setitem__(self, key, value): + values = self[slice(None, None, None)] + values[key] = value + self._cmsg.AssignRepeatedScalar(self._cfield_descriptor, values) + + def __getitem__(self, key): + return self._cmsg.GetRepeatedScalar(self._cfield_descriptor, key) + + def __delitem__(self, key): + self._cmsg.DeleteRepeatedField(self._cfield_descriptor, key) + + def __len__(self): + return len(self[slice(None, None, None)]) + + def __eq__(self, other): + if self is other: + return True + if not operator.isSequenceType(other): + raise TypeError( + 'Can only compare repeated scalar fields against sequences.') + # We are presumably comparing against some other sequence type. + return other == self[slice(None, None, None)] + + def __ne__(self, other): + return not self == other + + def __hash__(self): + raise TypeError('unhashable object') + + def sort(self, *args, **kwargs): + # Maintain compatibility with the previous interface. + if 'sort_function' in kwargs: + kwargs['cmp'] = kwargs.pop('sort_function') + self._cmsg.AssignRepeatedScalar(self._cfield_descriptor, + sorted(self, *args, **kwargs)) + + +def RepeatedScalarProperty(cdescriptor): + """Returns a Python property the given repeated scalar field.""" + + def Getter(self): + container = self._composite_fields.get(cdescriptor.name, None) + if container is None: + container = RepeatedScalarContainer(self, cdescriptor) + self._composite_fields[cdescriptor.name] = container + return container + + def Setter(self, new_value): + raise AttributeError('Assignment not allowed to repeated field ' + '"%s" in protocol message object.' % cdescriptor.name) + + doc = 'Magic attribute generated for "%s" proto field.' % cdescriptor.name + return property(Getter, Setter, doc=doc) + + +class RepeatedCompositeContainer(object): + """Container for repeated composite fields.""" + + __slots__ = ['_message', '_subclass', '_cfield_descriptor', '_cmsg'] + + def __init__(self, msg, cfield_descriptor, subclass): + self._message = msg + self._cmsg = msg._cmsg + self._subclass = subclass + self._cfield_descriptor = cfield_descriptor + + def add(self, **kwargs): + cmessage = self._cmsg.AddMessage(self._cfield_descriptor) + return self._subclass(__cmessage=cmessage, __owner=self._message, **kwargs) + + def extend(self, elem_seq): + """Extends by appending the given sequence of elements of the same type + as this one, copying each individual message. + """ + for message in elem_seq: + self.add().MergeFrom(message) + + def remove(self, value): + # TODO(protocol-devel): This is inefficient as it needs to generate a + # message pointer for each message only to do index(). Move this to a C++ + # extension function. + self.__delitem__(self[slice(None, None, None)].index(value)) + + def MergeFrom(self, other): + for message in other[:]: + self.add().MergeFrom(message) + + def __getitem__(self, key): + cmessages = self._cmsg.GetRepeatedMessage( + self._cfield_descriptor, key) + subclass = self._subclass + if not isinstance(cmessages, list): + return subclass(__cmessage=cmessages, __owner=self._message) + + return [subclass(__cmessage=m, __owner=self._message) for m in cmessages] + + def __delitem__(self, key): + self._cmsg.DeleteRepeatedField( + self._cfield_descriptor, key) + + def __len__(self): + return self._cmsg.FieldLength(self._cfield_descriptor) + + def __eq__(self, other): + """Compares the current instance with another one.""" + if self is other: + return True + if not isinstance(other, self.__class__): + raise TypeError('Can only compare repeated composite fields against ' + 'other repeated composite fields.') + messages = self[slice(None, None, None)] + other_messages = other[slice(None, None, None)] + return messages == other_messages + + def __hash__(self): + raise TypeError('unhashable object') + + def sort(self, cmp=None, key=None, reverse=False, **kwargs): + # Maintain compatibility with the old interface. + if cmp is None and 'sort_function' in kwargs: + cmp = kwargs.pop('sort_function') + + # The cmp function, if provided, is passed the results of the key function, + # so we only need to wrap one of them. + if key is None: + index_key = self.__getitem__ + else: + index_key = lambda i: key(self[i]) + + # Sort the list of current indexes by the underlying object. + indexes = range(len(self)) + indexes.sort(cmp=cmp, key=index_key, reverse=reverse) + + # Apply the transposition. + for dest, src in enumerate(indexes): + if dest == src: + continue + self._cmsg.SwapRepeatedFieldElements(self._cfield_descriptor, dest, src) + # Don't swap the same value twice. + indexes[src] = src + + +def RepeatedCompositeProperty(cdescriptor, message_type): + """Returns a Python property for the given repeated composite field.""" + + def Getter(self): + container = self._composite_fields.get(cdescriptor.name, None) + if container is None: + container = RepeatedCompositeContainer( + self, cdescriptor, message_type._concrete_class) + self._composite_fields[cdescriptor.name] = container + return container + + def Setter(self, new_value): + raise AttributeError('Assignment not allowed to repeated field ' + '"%s" in protocol message object.' % cdescriptor.name) + + doc = 'Magic attribute generated for "%s" proto field.' % cdescriptor.name + return property(Getter, Setter, doc=doc) + + +class ExtensionDict(object): + """Extension dictionary added to each protocol message.""" + + def __init__(self, msg): + self._message = msg + self._cmsg = msg._cmsg + self._values = {} + + def __setitem__(self, extension, value): + from google.protobuf import descriptor + if not isinstance(extension, descriptor.FieldDescriptor): + raise KeyError('Bad extension %r.' % (extension,)) + cdescriptor = extension._cdescriptor + if (cdescriptor.label != _LABEL_OPTIONAL or + cdescriptor.cpp_type == _CPPTYPE_MESSAGE): + raise TypeError('Extension %r is repeated and/or a composite type.' % ( + extension.full_name,)) + self._cmsg.SetScalar(cdescriptor, value) + self._values[extension] = value + + def __getitem__(self, extension): + from google.protobuf import descriptor + if not isinstance(extension, descriptor.FieldDescriptor): + raise KeyError('Bad extension %r.' % (extension,)) + + cdescriptor = extension._cdescriptor + if (cdescriptor.label != _LABEL_REPEATED and + cdescriptor.cpp_type != _CPPTYPE_MESSAGE): + return self._cmsg.GetScalar(cdescriptor) + + ext = self._values.get(extension, None) + if ext is not None: + return ext + + ext = self._CreateNewHandle(extension) + self._values[extension] = ext + return ext + + def ClearExtension(self, extension): + from google.protobuf import descriptor + if not isinstance(extension, descriptor.FieldDescriptor): + raise KeyError('Bad extension %r.' % (extension,)) + self._cmsg.ClearFieldByDescriptor(extension._cdescriptor) + if extension in self._values: + del self._values[extension] + + def HasExtension(self, extension): + from google.protobuf import descriptor + if not isinstance(extension, descriptor.FieldDescriptor): + raise KeyError('Bad extension %r.' % (extension,)) + return self._cmsg.HasFieldByDescriptor(extension._cdescriptor) + + def _FindExtensionByName(self, name): + """Tries to find a known extension with the specified name. + + Args: + name: Extension full name. + + Returns: + Extension field descriptor. + """ + return self._message._extensions_by_name.get(name, None) + + def _CreateNewHandle(self, extension): + cdescriptor = extension._cdescriptor + if (cdescriptor.label != _LABEL_REPEATED and + cdescriptor.cpp_type == _CPPTYPE_MESSAGE): + cmessage = self._cmsg.NewSubMessage(cdescriptor) + return extension.message_type._concrete_class(__cmessage=cmessage) + + if cdescriptor.label == _LABEL_REPEATED: + if cdescriptor.cpp_type == _CPPTYPE_MESSAGE: + return RepeatedCompositeContainer( + self._message, cdescriptor, extension.message_type._concrete_class) + else: + return RepeatedScalarContainer(self._message, cdescriptor) + # This shouldn't happen! + assert False + return None + + +def NewMessage(bases, message_descriptor, dictionary): + """Creates a new protocol message *class*.""" + _AddClassAttributesForNestedExtensions(message_descriptor, dictionary) + _AddEnumValues(message_descriptor, dictionary) + _AddDescriptors(message_descriptor, dictionary) + return bases + + +def InitMessage(message_descriptor, cls): + """Constructs a new message instance (called before instance's __init__).""" + cls._extensions_by_name = {} + _AddInitMethod(message_descriptor, cls) + _AddMessageMethods(message_descriptor, cls) + _AddPropertiesForExtensions(message_descriptor, cls) + copy_reg.pickle(cls, lambda obj: (cls, (), obj.__getstate__())) + + +def _AddDescriptors(message_descriptor, dictionary): + """Sets up a new protocol message class dictionary. + + Args: + message_descriptor: A Descriptor instance describing this message type. + dictionary: Class dictionary to which we'll add a '__slots__' entry. + """ + dictionary['__descriptors'] = {} + for field in message_descriptor.fields: + dictionary['__descriptors'][field.name] = GetFieldDescriptor( + field.full_name) + + dictionary['__slots__'] = list(dictionary['__descriptors'].iterkeys()) + [ + '_cmsg', '_owner', '_composite_fields', 'Extensions', '_HACK_REFCOUNTS'] + + +def _AddEnumValues(message_descriptor, dictionary): + """Sets class-level attributes for all enum fields defined in this message. + + Args: + message_descriptor: Descriptor object for this message type. + dictionary: Class dictionary that should be populated. + """ + for enum_type in message_descriptor.enum_types: + dictionary[enum_type.name] = enum_type_wrapper.EnumTypeWrapper(enum_type) + for enum_value in enum_type.values: + dictionary[enum_value.name] = enum_value.number + + +def _AddClassAttributesForNestedExtensions(message_descriptor, dictionary): + """Adds class attributes for the nested extensions.""" + extension_dict = message_descriptor.extensions_by_name + for extension_name, extension_field in extension_dict.iteritems(): + assert extension_name not in dictionary + dictionary[extension_name] = extension_field + + +def _AddInitMethod(message_descriptor, cls): + """Adds an __init__ method to cls.""" + + # Create and attach message field properties to the message class. + # This can be done just once per message class, since property setters and + # getters are passed the message instance. + # This makes message instantiation extremely fast, and at the same time it + # doesn't require the creation of property objects for each message instance, + # which saves a lot of memory. + for field in message_descriptor.fields: + field_cdescriptor = cls.__descriptors[field.name] + if field.label == _LABEL_REPEATED: + if field.cpp_type == _CPPTYPE_MESSAGE: + value = RepeatedCompositeProperty(field_cdescriptor, field.message_type) + else: + value = RepeatedScalarProperty(field_cdescriptor) + elif field.cpp_type == _CPPTYPE_MESSAGE: + value = CompositeProperty(field_cdescriptor, field.message_type) + else: + value = ScalarProperty(field_cdescriptor) + setattr(cls, field.name, value) + + # Attach a constant with the field number. + constant_name = field.name.upper() + '_FIELD_NUMBER' + setattr(cls, constant_name, field.number) + + def Init(self, **kwargs): + """Message constructor.""" + cmessage = kwargs.pop('__cmessage', None) + if cmessage: + self._cmsg = cmessage + else: + self._cmsg = NewCMessage(message_descriptor.full_name) + + # Keep a reference to the owner, as the owner keeps a reference to the + # underlying protocol buffer message. + owner = kwargs.pop('__owner', None) + if owner: + self._owner = owner + + if message_descriptor.is_extendable: + self.Extensions = ExtensionDict(self) + else: + # Reference counting in the C++ code is broken and depends on + # the Extensions reference to keep this object alive during unit + # tests (see b/4856052). Remove this once b/4945904 is fixed. + self._HACK_REFCOUNTS = self + self._composite_fields = {} + + for field_name, field_value in kwargs.iteritems(): + field_cdescriptor = self.__descriptors.get(field_name, None) + if not field_cdescriptor: + raise ValueError('Protocol message has no "%s" field.' % field_name) + if field_cdescriptor.label == _LABEL_REPEATED: + if field_cdescriptor.cpp_type == _CPPTYPE_MESSAGE: + field_name = getattr(self, field_name) + for val in field_value: + field_name.add().MergeFrom(val) + else: + getattr(self, field_name).extend(field_value) + elif field_cdescriptor.cpp_type == _CPPTYPE_MESSAGE: + getattr(self, field_name).MergeFrom(field_value) + else: + setattr(self, field_name, field_value) + + Init.__module__ = None + Init.__doc__ = None + cls.__init__ = Init + + +def _IsMessageSetExtension(field): + """Checks if a field is a message set extension.""" + return (field.is_extension and + field.containing_type.has_options and + field.containing_type.GetOptions().message_set_wire_format and + field.type == _TYPE_MESSAGE and + field.message_type == field.extension_scope and + field.label == _LABEL_OPTIONAL) + + +def _AddMessageMethods(message_descriptor, cls): + """Adds the methods to a protocol message class.""" + if message_descriptor.is_extendable: + + def ClearExtension(self, extension): + self.Extensions.ClearExtension(extension) + + def HasExtension(self, extension): + return self.Extensions.HasExtension(extension) + + def HasField(self, field_name): + return self._cmsg.HasField(field_name) + + def ClearField(self, field_name): + child_cmessage = None + if field_name in self._composite_fields: + child_field = self._composite_fields[field_name] + del self._composite_fields[field_name] + + child_cdescriptor = self.__descriptors[field_name] + # TODO(anuraag): Support clearing repeated message fields as well. + if (child_cdescriptor.label != _LABEL_REPEATED and + child_cdescriptor.cpp_type == _CPPTYPE_MESSAGE): + child_field._owner = None + child_cmessage = child_field._cmsg + + if child_cmessage is not None: + self._cmsg.ClearField(field_name, child_cmessage) + else: + self._cmsg.ClearField(field_name) + + def Clear(self): + cmessages_to_release = [] + for field_name, child_field in self._composite_fields.iteritems(): + child_cdescriptor = self.__descriptors[field_name] + # TODO(anuraag): Support clearing repeated message fields as well. + if (child_cdescriptor.label != _LABEL_REPEATED and + child_cdescriptor.cpp_type == _CPPTYPE_MESSAGE): + child_field._owner = None + cmessages_to_release.append((child_cdescriptor, child_field._cmsg)) + self._composite_fields.clear() + self._cmsg.Clear(cmessages_to_release) + + def IsInitialized(self, errors=None): + if self._cmsg.IsInitialized(): + return True + if errors is not None: + errors.extend(self.FindInitializationErrors()); + return False + + def SerializeToString(self): + if not self.IsInitialized(): + raise message.EncodeError( + 'Message %s is missing required fields: %s' % ( + self._cmsg.full_name, ','.join(self.FindInitializationErrors()))) + return self._cmsg.SerializeToString() + + def SerializePartialToString(self): + return self._cmsg.SerializePartialToString() + + def ParseFromString(self, serialized): + self.Clear() + self.MergeFromString(serialized) + + def MergeFromString(self, serialized): + byte_size = self._cmsg.MergeFromString(serialized) + if byte_size < 0: + raise message.DecodeError('Unable to merge from string.') + return byte_size + + def MergeFrom(self, msg): + if not isinstance(msg, cls): + raise TypeError( + "Parameter to MergeFrom() must be instance of same class: " + "expected %s got %s." % (cls.__name__, type(msg).__name__)) + self._cmsg.MergeFrom(msg._cmsg) + + def CopyFrom(self, msg): + self._cmsg.CopyFrom(msg._cmsg) + + def ByteSize(self): + return self._cmsg.ByteSize() + + def SetInParent(self): + return self._cmsg.SetInParent() + + def ListFields(self): + all_fields = [] + field_list = self._cmsg.ListFields() + fields_by_name = cls.DESCRIPTOR.fields_by_name + for is_extension, field_name in field_list: + if is_extension: + extension = cls._extensions_by_name[field_name] + all_fields.append((extension, self.Extensions[extension])) + else: + field_descriptor = fields_by_name[field_name] + all_fields.append( + (field_descriptor, getattr(self, field_name))) + all_fields.sort(key=lambda item: item[0].number) + return all_fields + + def FindInitializationErrors(self): + return self._cmsg.FindInitializationErrors() + + def __str__(self): + return self._cmsg.DebugString() + + def __eq__(self, other): + if self is other: + return True + if not isinstance(other, self.__class__): + return False + return self.ListFields() == other.ListFields() + + def __ne__(self, other): + return not self == other + + def __hash__(self): + raise TypeError('unhashable object') + + def __unicode__(self): + # Lazy import to prevent circular import when text_format imports this file. + from google.protobuf import text_format + return text_format.MessageToString(self, as_utf8=True).decode('utf-8') + + # Attach the local methods to the message class. + for key, value in locals().copy().iteritems(): + if key not in ('key', 'value', '__builtins__', '__name__', '__doc__'): + setattr(cls, key, value) + + # Static methods: + + def RegisterExtension(extension_handle): + extension_handle.containing_type = cls.DESCRIPTOR + cls._extensions_by_name[extension_handle.full_name] = extension_handle + + if _IsMessageSetExtension(extension_handle): + # MessageSet extension. Also register under type name. + cls._extensions_by_name[ + extension_handle.message_type.full_name] = extension_handle + cls.RegisterExtension = staticmethod(RegisterExtension) + + def FromString(string): + msg = cls() + msg.MergeFromString(string) + return msg + cls.FromString = staticmethod(FromString) + + + +def _AddPropertiesForExtensions(message_descriptor, cls): + """Adds properties for all fields in this protocol message type.""" + extension_dict = message_descriptor.extensions_by_name + for extension_name, extension_field in extension_dict.iteritems(): + constant_name = extension_name.upper() + '_FIELD_NUMBER' + setattr(cls, constant_name, extension_field.number) diff --git a/cpp/thirdparty/protobuf-2.3.0/python/google/protobuf/internal/decoder.py b/cpp/thirdparty/protobuf-2.5.0/python/google/protobuf/internal/decoder.py similarity index 88% rename from cpp/thirdparty/protobuf-2.3.0/python/google/protobuf/internal/decoder.py rename to cpp/thirdparty/protobuf-2.5.0/python/google/protobuf/internal/decoder.py index 461a30c0e..cb6f5729d 100755 --- a/cpp/thirdparty/protobuf-2.3.0/python/google/protobuf/internal/decoder.py +++ b/cpp/thirdparty/protobuf-2.5.0/python/google/protobuf/internal/decoder.py @@ -86,6 +86,13 @@ from google.protobuf.internal import wire_format from google.protobuf import message +# This will overflow and thus become IEEE-754 "infinity". We would use +# "float('inf')" but it doesn't work on Windows pre-Python-2.6. +_POS_INF = 1e10000 +_NEG_INF = -_POS_INF +_NAN = _POS_INF * 0 + + # This is not for optimization, but rather to avoid conflicts with local # variables named "message". _DecodeError = message.DecodeError @@ -269,6 +276,72 @@ def _StructPackDecoder(wire_type, format): return _SimpleDecoder(wire_type, InnerDecode) +def _FloatDecoder(): + """Returns a decoder for a float field. + + This code works around a bug in struct.unpack for non-finite 32-bit + floating-point values. + """ + + local_unpack = struct.unpack + + def InnerDecode(buffer, pos): + # We expect a 32-bit value in little-endian byte order. Bit 1 is the sign + # bit, bits 2-9 represent the exponent, and bits 10-32 are the significand. + new_pos = pos + 4 + float_bytes = buffer[pos:new_pos] + + # If this value has all its exponent bits set, then it's non-finite. + # In Python 2.4, struct.unpack will convert it to a finite 64-bit value. + # To avoid that, we parse it specially. + if ((float_bytes[3] in '\x7F\xFF') + and (float_bytes[2] >= '\x80')): + # If at least one significand bit is set... + if float_bytes[0:3] != '\x00\x00\x80': + return (_NAN, new_pos) + # If sign bit is set... + if float_bytes[3] == '\xFF': + return (_NEG_INF, new_pos) + return (_POS_INF, new_pos) + + # Note that we expect someone up-stack to catch struct.error and convert + # it to _DecodeError -- this way we don't have to set up exception- + # handling blocks every time we parse one value. + result = local_unpack('= '\xF0') + and (double_bytes[0:7] != '\x00\x00\x00\x00\x00\x00\xF0')): + return (_NAN, new_pos) + + # Note that we expect someone up-stack to catch struct.error and convert + # it to _DecodeError -- this way we don't have to set up exception- + # handling blocks every time we parse one value. + result = local_unpack(' + """ + + self._InternalTestCopyToProto( + unittest_pb2.TestAllTypes.NestedMessage.DESCRIPTOR, + descriptor_pb2.DescriptorProto, + TEST_NESTED_MESSAGE_ASCII) + + def testCopyToProto_ForeignNestedMessage(self): + TEST_FOREIGN_NESTED_ASCII = """ + name: 'TestForeignNested' + field: < + name: 'foreign_nested' + number: 1 + label: 1 # Optional + type: 11 # TYPE_MESSAGE + type_name: '.protobuf_unittest.TestAllTypes.NestedMessage' + > + """ + + self._InternalTestCopyToProto( + unittest_pb2.TestForeignNested.DESCRIPTOR, + descriptor_pb2.DescriptorProto, + TEST_FOREIGN_NESTED_ASCII) + + def testCopyToProto_ForeignEnum(self): + TEST_FOREIGN_ENUM_ASCII = """ + name: 'ForeignEnum' + value: < + name: 'FOREIGN_FOO' + number: 4 + > + value: < + name: 'FOREIGN_BAR' + number: 5 + > + value: < + name: 'FOREIGN_BAZ' + number: 6 + > + """ + + self._InternalTestCopyToProto( + unittest_pb2._FOREIGNENUM, + descriptor_pb2.EnumDescriptorProto, + TEST_FOREIGN_ENUM_ASCII) + + def testCopyToProto_Options(self): + TEST_DEPRECATED_FIELDS_ASCII = """ + name: 'TestDeprecatedFields' + field: < + name: 'deprecated_int32' + number: 1 + label: 1 # Optional + type: 5 # TYPE_INT32 + options: < + deprecated: true + > + > + """ + + self._InternalTestCopyToProto( + unittest_pb2.TestDeprecatedFields.DESCRIPTOR, + descriptor_pb2.DescriptorProto, + TEST_DEPRECATED_FIELDS_ASCII) + + def testCopyToProto_AllExtensions(self): + TEST_EMPTY_MESSAGE_WITH_EXTENSIONS_ASCII = """ + name: 'TestEmptyMessageWithExtensions' + extension_range: < + start: 1 + end: 536870912 + > + """ + + self._InternalTestCopyToProto( + unittest_pb2.TestEmptyMessageWithExtensions.DESCRIPTOR, + descriptor_pb2.DescriptorProto, + TEST_EMPTY_MESSAGE_WITH_EXTENSIONS_ASCII) + + def testCopyToProto_SeveralExtensions(self): + TEST_MESSAGE_WITH_SEVERAL_EXTENSIONS_ASCII = """ + name: 'TestMultipleExtensionRanges' + extension_range: < + start: 42 + end: 43 + > + extension_range: < + start: 4143 + end: 4244 + > + extension_range: < + start: 65536 + end: 536870912 + > + """ + + self._InternalTestCopyToProto( + unittest_pb2.TestMultipleExtensionRanges.DESCRIPTOR, + descriptor_pb2.DescriptorProto, + TEST_MESSAGE_WITH_SEVERAL_EXTENSIONS_ASCII) + + def testCopyToProto_FileDescriptor(self): + UNITTEST_IMPORT_FILE_DESCRIPTOR_ASCII = (""" + name: 'google/protobuf/unittest_import.proto' + package: 'protobuf_unittest_import' + dependency: 'google/protobuf/unittest_import_public.proto' + message_type: < + name: 'ImportMessage' + field: < + name: 'd' + number: 1 + label: 1 # Optional + type: 5 # TYPE_INT32 + > + > + """ + + """enum_type: < + name: 'ImportEnum' + value: < + name: 'IMPORT_FOO' + number: 7 + > + value: < + name: 'IMPORT_BAR' + number: 8 + > + value: < + name: 'IMPORT_BAZ' + number: 9 + > + > + options: < + java_package: 'com.google.protobuf.test' + optimize_for: 1 # SPEED + > + public_dependency: 0 + """) + + self._InternalTestCopyToProto( + unittest_import_pb2.DESCRIPTOR, + descriptor_pb2.FileDescriptorProto, + UNITTEST_IMPORT_FILE_DESCRIPTOR_ASCII) + + def testCopyToProto_ServiceDescriptor(self): + TEST_SERVICE_ASCII = """ + name: 'TestService' + method: < + name: 'Foo' + input_type: '.protobuf_unittest.FooRequest' + output_type: '.protobuf_unittest.FooResponse' + > + method: < + name: 'Bar' + input_type: '.protobuf_unittest.BarRequest' + output_type: '.protobuf_unittest.BarResponse' + > + """ + + self._InternalTestCopyToProto( + unittest_pb2.TestService.DESCRIPTOR, + descriptor_pb2.ServiceDescriptorProto, + TEST_SERVICE_ASCII) + + +class MakeDescriptorTest(unittest.TestCase): + def testMakeDescriptorWithUnsignedIntField(self): + file_descriptor_proto = descriptor_pb2.FileDescriptorProto() + file_descriptor_proto.name = 'Foo' + message_type = file_descriptor_proto.message_type.add() + message_type.name = file_descriptor_proto.name + field = message_type.field.add() + field.number = 1 + field.name = 'uint64_field' + field.label = descriptor.FieldDescriptor.LABEL_REQUIRED + field.type = descriptor.FieldDescriptor.TYPE_UINT64 + result = descriptor.MakeDescriptor(message_type) + self.assertEqual(result.fields[0].cpp_type, + descriptor.FieldDescriptor.CPPTYPE_UINT64) + + +if __name__ == '__main__': + unittest.main() diff --git a/cpp/thirdparty/protobuf-2.3.0/python/google/protobuf/internal/encoder.py b/cpp/thirdparty/protobuf-2.5.0/python/google/protobuf/internal/encoder.py similarity index 88% rename from cpp/thirdparty/protobuf-2.3.0/python/google/protobuf/internal/encoder.py rename to cpp/thirdparty/protobuf-2.5.0/python/google/protobuf/internal/encoder.py index aa05d5b33..777975e82 100755 --- a/cpp/thirdparty/protobuf-2.3.0/python/google/protobuf/internal/encoder.py +++ b/cpp/thirdparty/protobuf-2.5.0/python/google/protobuf/internal/encoder.py @@ -70,6 +70,12 @@ import struct from google.protobuf.internal import wire_format +# This will overflow and thus become IEEE-754 "infinity". We would use +# "float('inf')" but it doesn't work on Windows pre-Python-2.6. +_POS_INF = 1e10000 +_NEG_INF = -_POS_INF + + def _VarintSize(value): """Compute the size of a varint value.""" if value <= 0x7f: return 1 @@ -502,6 +508,83 @@ def _StructPackEncoder(wire_type, format): return SpecificEncoder +def _FloatingPointEncoder(wire_type, format): + """Return a constructor for an encoder for float fields. + + This is like StructPackEncoder, but catches errors that may be due to + passing non-finite floating-point values to struct.pack, and makes a + second attempt to encode those values. + + Args: + wire_type: The field's wire type, for encoding tags. + format: The format string to pass to struct.pack(). + """ + + value_size = struct.calcsize(format) + if value_size == 4: + def EncodeNonFiniteOrRaise(write, value): + # Remember that the serialized form uses little-endian byte order. + if value == _POS_INF: + write('\x00\x00\x80\x7F') + elif value == _NEG_INF: + write('\x00\x00\x80\xFF') + elif value != value: # NaN + write('\x00\x00\xC0\x7F') + else: + raise + elif value_size == 8: + def EncodeNonFiniteOrRaise(write, value): + if value == _POS_INF: + write('\x00\x00\x00\x00\x00\x00\xF0\x7F') + elif value == _NEG_INF: + write('\x00\x00\x00\x00\x00\x00\xF0\xFF') + elif value != value: # NaN + write('\x00\x00\x00\x00\x00\x00\xF8\x7F') + else: + raise + else: + raise ValueError('Can\'t encode floating-point values that are ' + '%d bytes long (only 4 or 8)' % value_size) + + def SpecificEncoder(field_number, is_repeated, is_packed): + local_struct_pack = struct.pack + if is_packed: + tag_bytes = TagBytes(field_number, wire_format.WIRETYPE_LENGTH_DELIMITED) + local_EncodeVarint = _EncodeVarint + def EncodePackedField(write, value): + write(tag_bytes) + local_EncodeVarint(write, len(value) * value_size) + for element in value: + # This try/except block is going to be faster than any code that + # we could write to check whether element is finite. + try: + write(local_struct_pack(format, element)) + except SystemError: + EncodeNonFiniteOrRaise(write, element) + return EncodePackedField + elif is_repeated: + tag_bytes = TagBytes(field_number, wire_type) + def EncodeRepeatedField(write, value): + for element in value: + write(tag_bytes) + try: + write(local_struct_pack(format, element)) + except SystemError: + EncodeNonFiniteOrRaise(write, element) + return EncodeRepeatedField + else: + tag_bytes = TagBytes(field_number, wire_type) + def EncodeField(write, value): + write(tag_bytes) + try: + write(local_struct_pack(format, value)) + except SystemError: + EncodeNonFiniteOrRaise(write, value) + return EncodeField + + return SpecificEncoder + + # ==================================================================== # Here we declare an encoder constructor for each field type. These work # very similarly to sizer constructors, described earlier. @@ -525,8 +608,8 @@ Fixed32Encoder = _StructPackEncoder(wire_format.WIRETYPE_FIXED32, ' 0) +def IsNegInf(val): + return isinf(val) and (val < 0) + +class MessageTest(unittest.TestCase): + + def testGoldenMessage(self): + golden_data = test_util.GoldenFile('golden_message').read() + golden_message = unittest_pb2.TestAllTypes() + golden_message.ParseFromString(golden_data) + test_util.ExpectAllFieldsSet(self, golden_message) + self.assertEqual(golden_data, golden_message.SerializeToString()) + golden_copy = copy.deepcopy(golden_message) + self.assertEqual(golden_data, golden_copy.SerializeToString()) + + def testGoldenExtensions(self): + golden_data = test_util.GoldenFile('golden_message').read() + golden_message = unittest_pb2.TestAllExtensions() + golden_message.ParseFromString(golden_data) + all_set = unittest_pb2.TestAllExtensions() + test_util.SetAllExtensions(all_set) + self.assertEquals(all_set, golden_message) + self.assertEqual(golden_data, golden_message.SerializeToString()) + golden_copy = copy.deepcopy(golden_message) + self.assertEqual(golden_data, golden_copy.SerializeToString()) + + def testGoldenPackedMessage(self): + golden_data = test_util.GoldenFile('golden_packed_fields_message').read() + golden_message = unittest_pb2.TestPackedTypes() + golden_message.ParseFromString(golden_data) + all_set = unittest_pb2.TestPackedTypes() + test_util.SetAllPackedFields(all_set) + self.assertEquals(all_set, golden_message) + self.assertEqual(golden_data, all_set.SerializeToString()) + golden_copy = copy.deepcopy(golden_message) + self.assertEqual(golden_data, golden_copy.SerializeToString()) + + def testGoldenPackedExtensions(self): + golden_data = test_util.GoldenFile('golden_packed_fields_message').read() + golden_message = unittest_pb2.TestPackedExtensions() + golden_message.ParseFromString(golden_data) + all_set = unittest_pb2.TestPackedExtensions() + test_util.SetAllPackedExtensions(all_set) + self.assertEquals(all_set, golden_message) + self.assertEqual(golden_data, all_set.SerializeToString()) + golden_copy = copy.deepcopy(golden_message) + self.assertEqual(golden_data, golden_copy.SerializeToString()) + + def testPickleSupport(self): + golden_data = test_util.GoldenFile('golden_message').read() + golden_message = unittest_pb2.TestAllTypes() + golden_message.ParseFromString(golden_data) + pickled_message = pickle.dumps(golden_message) + + unpickled_message = pickle.loads(pickled_message) + self.assertEquals(unpickled_message, golden_message) + + def testPickleIncompleteProto(self): + golden_message = unittest_pb2.TestRequired(a=1) + pickled_message = pickle.dumps(golden_message) + + unpickled_message = pickle.loads(pickled_message) + self.assertEquals(unpickled_message, golden_message) + self.assertEquals(unpickled_message.a, 1) + # This is still an incomplete proto - so serializing should fail + self.assertRaises(message.EncodeError, unpickled_message.SerializeToString) + + def testPositiveInfinity(self): + golden_data = ('\x5D\x00\x00\x80\x7F' + '\x61\x00\x00\x00\x00\x00\x00\xF0\x7F' + '\xCD\x02\x00\x00\x80\x7F' + '\xD1\x02\x00\x00\x00\x00\x00\x00\xF0\x7F') + golden_message = unittest_pb2.TestAllTypes() + golden_message.ParseFromString(golden_data) + self.assertTrue(IsPosInf(golden_message.optional_float)) + self.assertTrue(IsPosInf(golden_message.optional_double)) + self.assertTrue(IsPosInf(golden_message.repeated_float[0])) + self.assertTrue(IsPosInf(golden_message.repeated_double[0])) + self.assertEqual(golden_data, golden_message.SerializeToString()) + + def testNegativeInfinity(self): + golden_data = ('\x5D\x00\x00\x80\xFF' + '\x61\x00\x00\x00\x00\x00\x00\xF0\xFF' + '\xCD\x02\x00\x00\x80\xFF' + '\xD1\x02\x00\x00\x00\x00\x00\x00\xF0\xFF') + golden_message = unittest_pb2.TestAllTypes() + golden_message.ParseFromString(golden_data) + self.assertTrue(IsNegInf(golden_message.optional_float)) + self.assertTrue(IsNegInf(golden_message.optional_double)) + self.assertTrue(IsNegInf(golden_message.repeated_float[0])) + self.assertTrue(IsNegInf(golden_message.repeated_double[0])) + self.assertEqual(golden_data, golden_message.SerializeToString()) + + def testNotANumber(self): + golden_data = ('\x5D\x00\x00\xC0\x7F' + '\x61\x00\x00\x00\x00\x00\x00\xF8\x7F' + '\xCD\x02\x00\x00\xC0\x7F' + '\xD1\x02\x00\x00\x00\x00\x00\x00\xF8\x7F') + golden_message = unittest_pb2.TestAllTypes() + golden_message.ParseFromString(golden_data) + self.assertTrue(isnan(golden_message.optional_float)) + self.assertTrue(isnan(golden_message.optional_double)) + self.assertTrue(isnan(golden_message.repeated_float[0])) + self.assertTrue(isnan(golden_message.repeated_double[0])) + + # The protocol buffer may serialize to any one of multiple different + # representations of a NaN. Rather than verify a specific representation, + # verify the serialized string can be converted into a correctly + # behaving protocol buffer. + serialized = golden_message.SerializeToString() + message = unittest_pb2.TestAllTypes() + message.ParseFromString(serialized) + self.assertTrue(isnan(message.optional_float)) + self.assertTrue(isnan(message.optional_double)) + self.assertTrue(isnan(message.repeated_float[0])) + self.assertTrue(isnan(message.repeated_double[0])) + + def testPositiveInfinityPacked(self): + golden_data = ('\xA2\x06\x04\x00\x00\x80\x7F' + '\xAA\x06\x08\x00\x00\x00\x00\x00\x00\xF0\x7F') + golden_message = unittest_pb2.TestPackedTypes() + golden_message.ParseFromString(golden_data) + self.assertTrue(IsPosInf(golden_message.packed_float[0])) + self.assertTrue(IsPosInf(golden_message.packed_double[0])) + self.assertEqual(golden_data, golden_message.SerializeToString()) + + def testNegativeInfinityPacked(self): + golden_data = ('\xA2\x06\x04\x00\x00\x80\xFF' + '\xAA\x06\x08\x00\x00\x00\x00\x00\x00\xF0\xFF') + golden_message = unittest_pb2.TestPackedTypes() + golden_message.ParseFromString(golden_data) + self.assertTrue(IsNegInf(golden_message.packed_float[0])) + self.assertTrue(IsNegInf(golden_message.packed_double[0])) + self.assertEqual(golden_data, golden_message.SerializeToString()) + + def testNotANumberPacked(self): + golden_data = ('\xA2\x06\x04\x00\x00\xC0\x7F' + '\xAA\x06\x08\x00\x00\x00\x00\x00\x00\xF8\x7F') + golden_message = unittest_pb2.TestPackedTypes() + golden_message.ParseFromString(golden_data) + self.assertTrue(isnan(golden_message.packed_float[0])) + self.assertTrue(isnan(golden_message.packed_double[0])) + + serialized = golden_message.SerializeToString() + message = unittest_pb2.TestPackedTypes() + message.ParseFromString(serialized) + self.assertTrue(isnan(message.packed_float[0])) + self.assertTrue(isnan(message.packed_double[0])) + + def testExtremeFloatValues(self): + message = unittest_pb2.TestAllTypes() + + # Most positive exponent, no significand bits set. + kMostPosExponentNoSigBits = math.pow(2, 127) + message.optional_float = kMostPosExponentNoSigBits + message.ParseFromString(message.SerializeToString()) + self.assertTrue(message.optional_float == kMostPosExponentNoSigBits) + + # Most positive exponent, one significand bit set. + kMostPosExponentOneSigBit = 1.5 * math.pow(2, 127) + message.optional_float = kMostPosExponentOneSigBit + message.ParseFromString(message.SerializeToString()) + self.assertTrue(message.optional_float == kMostPosExponentOneSigBit) + + # Repeat last two cases with values of same magnitude, but negative. + message.optional_float = -kMostPosExponentNoSigBits + message.ParseFromString(message.SerializeToString()) + self.assertTrue(message.optional_float == -kMostPosExponentNoSigBits) + + message.optional_float = -kMostPosExponentOneSigBit + message.ParseFromString(message.SerializeToString()) + self.assertTrue(message.optional_float == -kMostPosExponentOneSigBit) + + # Most negative exponent, no significand bits set. + kMostNegExponentNoSigBits = math.pow(2, -127) + message.optional_float = kMostNegExponentNoSigBits + message.ParseFromString(message.SerializeToString()) + self.assertTrue(message.optional_float == kMostNegExponentNoSigBits) + + # Most negative exponent, one significand bit set. + kMostNegExponentOneSigBit = 1.5 * math.pow(2, -127) + message.optional_float = kMostNegExponentOneSigBit + message.ParseFromString(message.SerializeToString()) + self.assertTrue(message.optional_float == kMostNegExponentOneSigBit) + + # Repeat last two cases with values of the same magnitude, but negative. + message.optional_float = -kMostNegExponentNoSigBits + message.ParseFromString(message.SerializeToString()) + self.assertTrue(message.optional_float == -kMostNegExponentNoSigBits) + + message.optional_float = -kMostNegExponentOneSigBit + message.ParseFromString(message.SerializeToString()) + self.assertTrue(message.optional_float == -kMostNegExponentOneSigBit) + + def testExtremeDoubleValues(self): + message = unittest_pb2.TestAllTypes() + + # Most positive exponent, no significand bits set. + kMostPosExponentNoSigBits = math.pow(2, 1023) + message.optional_double = kMostPosExponentNoSigBits + message.ParseFromString(message.SerializeToString()) + self.assertTrue(message.optional_double == kMostPosExponentNoSigBits) + + # Most positive exponent, one significand bit set. + kMostPosExponentOneSigBit = 1.5 * math.pow(2, 1023) + message.optional_double = kMostPosExponentOneSigBit + message.ParseFromString(message.SerializeToString()) + self.assertTrue(message.optional_double == kMostPosExponentOneSigBit) + + # Repeat last two cases with values of same magnitude, but negative. + message.optional_double = -kMostPosExponentNoSigBits + message.ParseFromString(message.SerializeToString()) + self.assertTrue(message.optional_double == -kMostPosExponentNoSigBits) + + message.optional_double = -kMostPosExponentOneSigBit + message.ParseFromString(message.SerializeToString()) + self.assertTrue(message.optional_double == -kMostPosExponentOneSigBit) + + # Most negative exponent, no significand bits set. + kMostNegExponentNoSigBits = math.pow(2, -1023) + message.optional_double = kMostNegExponentNoSigBits + message.ParseFromString(message.SerializeToString()) + self.assertTrue(message.optional_double == kMostNegExponentNoSigBits) + + # Most negative exponent, one significand bit set. + kMostNegExponentOneSigBit = 1.5 * math.pow(2, -1023) + message.optional_double = kMostNegExponentOneSigBit + message.ParseFromString(message.SerializeToString()) + self.assertTrue(message.optional_double == kMostNegExponentOneSigBit) + + # Repeat last two cases with values of the same magnitude, but negative. + message.optional_double = -kMostNegExponentNoSigBits + message.ParseFromString(message.SerializeToString()) + self.assertTrue(message.optional_double == -kMostNegExponentNoSigBits) + + message.optional_double = -kMostNegExponentOneSigBit + message.ParseFromString(message.SerializeToString()) + self.assertTrue(message.optional_double == -kMostNegExponentOneSigBit) + + def testSortingRepeatedScalarFieldsDefaultComparator(self): + """Check some different types with the default comparator.""" + message = unittest_pb2.TestAllTypes() + + # TODO(mattp): would testing more scalar types strengthen test? + message.repeated_int32.append(1) + message.repeated_int32.append(3) + message.repeated_int32.append(2) + message.repeated_int32.sort() + self.assertEqual(message.repeated_int32[0], 1) + self.assertEqual(message.repeated_int32[1], 2) + self.assertEqual(message.repeated_int32[2], 3) + + message.repeated_float.append(1.1) + message.repeated_float.append(1.3) + message.repeated_float.append(1.2) + message.repeated_float.sort() + self.assertAlmostEqual(message.repeated_float[0], 1.1) + self.assertAlmostEqual(message.repeated_float[1], 1.2) + self.assertAlmostEqual(message.repeated_float[2], 1.3) + + message.repeated_string.append('a') + message.repeated_string.append('c') + message.repeated_string.append('b') + message.repeated_string.sort() + self.assertEqual(message.repeated_string[0], 'a') + self.assertEqual(message.repeated_string[1], 'b') + self.assertEqual(message.repeated_string[2], 'c') + + message.repeated_bytes.append('a') + message.repeated_bytes.append('c') + message.repeated_bytes.append('b') + message.repeated_bytes.sort() + self.assertEqual(message.repeated_bytes[0], 'a') + self.assertEqual(message.repeated_bytes[1], 'b') + self.assertEqual(message.repeated_bytes[2], 'c') + + def testSortingRepeatedScalarFieldsCustomComparator(self): + """Check some different types with custom comparator.""" + message = unittest_pb2.TestAllTypes() + + message.repeated_int32.append(-3) + message.repeated_int32.append(-2) + message.repeated_int32.append(-1) + message.repeated_int32.sort(lambda x,y: cmp(abs(x), abs(y))) + self.assertEqual(message.repeated_int32[0], -1) + self.assertEqual(message.repeated_int32[1], -2) + self.assertEqual(message.repeated_int32[2], -3) + + message.repeated_string.append('aaa') + message.repeated_string.append('bb') + message.repeated_string.append('c') + message.repeated_string.sort(lambda x,y: cmp(len(x), len(y))) + self.assertEqual(message.repeated_string[0], 'c') + self.assertEqual(message.repeated_string[1], 'bb') + self.assertEqual(message.repeated_string[2], 'aaa') + + def testSortingRepeatedCompositeFieldsCustomComparator(self): + """Check passing a custom comparator to sort a repeated composite field.""" + message = unittest_pb2.TestAllTypes() + + message.repeated_nested_message.add().bb = 1 + message.repeated_nested_message.add().bb = 3 + message.repeated_nested_message.add().bb = 2 + message.repeated_nested_message.add().bb = 6 + message.repeated_nested_message.add().bb = 5 + message.repeated_nested_message.add().bb = 4 + message.repeated_nested_message.sort(lambda x,y: cmp(x.bb, y.bb)) + self.assertEqual(message.repeated_nested_message[0].bb, 1) + self.assertEqual(message.repeated_nested_message[1].bb, 2) + self.assertEqual(message.repeated_nested_message[2].bb, 3) + self.assertEqual(message.repeated_nested_message[3].bb, 4) + self.assertEqual(message.repeated_nested_message[4].bb, 5) + self.assertEqual(message.repeated_nested_message[5].bb, 6) + + def testRepeatedCompositeFieldSortArguments(self): + """Check sorting a repeated composite field using list.sort() arguments.""" + message = unittest_pb2.TestAllTypes() + + get_bb = operator.attrgetter('bb') + cmp_bb = lambda a, b: cmp(a.bb, b.bb) + message.repeated_nested_message.add().bb = 1 + message.repeated_nested_message.add().bb = 3 + message.repeated_nested_message.add().bb = 2 + message.repeated_nested_message.add().bb = 6 + message.repeated_nested_message.add().bb = 5 + message.repeated_nested_message.add().bb = 4 + message.repeated_nested_message.sort(key=get_bb) + self.assertEqual([k.bb for k in message.repeated_nested_message], + [1, 2, 3, 4, 5, 6]) + message.repeated_nested_message.sort(key=get_bb, reverse=True) + self.assertEqual([k.bb for k in message.repeated_nested_message], + [6, 5, 4, 3, 2, 1]) + message.repeated_nested_message.sort(sort_function=cmp_bb) + self.assertEqual([k.bb for k in message.repeated_nested_message], + [1, 2, 3, 4, 5, 6]) + message.repeated_nested_message.sort(cmp=cmp_bb, reverse=True) + self.assertEqual([k.bb for k in message.repeated_nested_message], + [6, 5, 4, 3, 2, 1]) + + def testRepeatedScalarFieldSortArguments(self): + """Check sorting a scalar field using list.sort() arguments.""" + message = unittest_pb2.TestAllTypes() + + abs_cmp = lambda a, b: cmp(abs(a), abs(b)) + message.repeated_int32.append(-3) + message.repeated_int32.append(-2) + message.repeated_int32.append(-1) + message.repeated_int32.sort(key=abs) + self.assertEqual(list(message.repeated_int32), [-1, -2, -3]) + message.repeated_int32.sort(key=abs, reverse=True) + self.assertEqual(list(message.repeated_int32), [-3, -2, -1]) + message.repeated_int32.sort(sort_function=abs_cmp) + self.assertEqual(list(message.repeated_int32), [-1, -2, -3]) + message.repeated_int32.sort(cmp=abs_cmp, reverse=True) + self.assertEqual(list(message.repeated_int32), [-3, -2, -1]) + + len_cmp = lambda a, b: cmp(len(a), len(b)) + message.repeated_string.append('aaa') + message.repeated_string.append('bb') + message.repeated_string.append('c') + message.repeated_string.sort(key=len) + self.assertEqual(list(message.repeated_string), ['c', 'bb', 'aaa']) + message.repeated_string.sort(key=len, reverse=True) + self.assertEqual(list(message.repeated_string), ['aaa', 'bb', 'c']) + message.repeated_string.sort(sort_function=len_cmp) + self.assertEqual(list(message.repeated_string), ['c', 'bb', 'aaa']) + message.repeated_string.sort(cmp=len_cmp, reverse=True) + self.assertEqual(list(message.repeated_string), ['aaa', 'bb', 'c']) + + def testParsingMerge(self): + """Check the merge behavior when a required or optional field appears + multiple times in the input.""" + messages = [ + unittest_pb2.TestAllTypes(), + unittest_pb2.TestAllTypes(), + unittest_pb2.TestAllTypes() ] + messages[0].optional_int32 = 1 + messages[1].optional_int64 = 2 + messages[2].optional_int32 = 3 + messages[2].optional_string = 'hello' + + merged_message = unittest_pb2.TestAllTypes() + merged_message.optional_int32 = 3 + merged_message.optional_int64 = 2 + merged_message.optional_string = 'hello' + + generator = unittest_pb2.TestParsingMerge.RepeatedFieldsGenerator() + generator.field1.extend(messages) + generator.field2.extend(messages) + generator.field3.extend(messages) + generator.ext1.extend(messages) + generator.ext2.extend(messages) + generator.group1.add().field1.MergeFrom(messages[0]) + generator.group1.add().field1.MergeFrom(messages[1]) + generator.group1.add().field1.MergeFrom(messages[2]) + generator.group2.add().field1.MergeFrom(messages[0]) + generator.group2.add().field1.MergeFrom(messages[1]) + generator.group2.add().field1.MergeFrom(messages[2]) + + data = generator.SerializeToString() + parsing_merge = unittest_pb2.TestParsingMerge() + parsing_merge.ParseFromString(data) + + # Required and optional fields should be merged. + self.assertEqual(parsing_merge.required_all_types, merged_message) + self.assertEqual(parsing_merge.optional_all_types, merged_message) + self.assertEqual(parsing_merge.optionalgroup.optional_group_all_types, + merged_message) + self.assertEqual(parsing_merge.Extensions[ + unittest_pb2.TestParsingMerge.optional_ext], + merged_message) + + # Repeated fields should not be merged. + self.assertEqual(len(parsing_merge.repeated_all_types), 3) + self.assertEqual(len(parsing_merge.repeatedgroup), 3) + self.assertEqual(len(parsing_merge.Extensions[ + unittest_pb2.TestParsingMerge.repeated_ext]), 3) + + + def testSortEmptyRepeatedCompositeContainer(self): + """Exercise a scenario that has led to segfaults in the past. + """ + m = unittest_pb2.TestAllTypes() + m.repeated_nested_message.sort() + + +if __name__ == '__main__': + unittest.main() diff --git a/cpp/thirdparty/protobuf-2.3.0/python/google/protobuf/internal/more_extensions.proto b/cpp/thirdparty/protobuf-2.5.0/python/google/protobuf/internal/more_extensions.proto similarity index 100% rename from cpp/thirdparty/protobuf-2.3.0/python/google/protobuf/internal/more_extensions.proto rename to cpp/thirdparty/protobuf-2.5.0/python/google/protobuf/internal/more_extensions.proto diff --git a/cpp/thirdparty/protobuf-2.5.0/python/google/protobuf/internal/more_extensions_dynamic.proto b/cpp/thirdparty/protobuf-2.5.0/python/google/protobuf/internal/more_extensions_dynamic.proto new file mode 100644 index 000000000..df98ac4bd --- /dev/null +++ b/cpp/thirdparty/protobuf-2.5.0/python/google/protobuf/internal/more_extensions_dynamic.proto @@ -0,0 +1,49 @@ +// Protocol Buffers - Google's data interchange format +// Copyright 2008 Google Inc. All rights reserved. +// http://code.google.com/p/protobuf/ +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +// Author: jasonh@google.com (Jason Hsueh) +// +// This file is used to test a corner case in the CPP implementation where the +// generated C++ type is available for the extendee, but the extension is +// defined in a file whose C++ type is not in the binary. + + +import "google/protobuf/internal/more_extensions.proto"; + +package google.protobuf.internal; + +message DynamicMessageType { + optional int32 a = 1; +} + +extend ExtendedMessage { + optional int32 dynamic_int32_extension = 100; + optional DynamicMessageType dynamic_message_extension = 101; +} diff --git a/cpp/thirdparty/protobuf-2.3.0/python/google/protobuf/internal/more_messages.proto b/cpp/thirdparty/protobuf-2.5.0/python/google/protobuf/internal/more_messages.proto similarity index 100% rename from cpp/thirdparty/protobuf-2.3.0/python/google/protobuf/internal/more_messages.proto rename to cpp/thirdparty/protobuf-2.5.0/python/google/protobuf/internal/more_messages.proto diff --git a/cpp/thirdparty/protobuf-2.3.0/python/google/protobuf/reflection.py b/cpp/thirdparty/protobuf-2.5.0/python/google/protobuf/internal/python_message.py similarity index 89% rename from cpp/thirdparty/protobuf-2.3.0/python/google/protobuf/reflection.py rename to cpp/thirdparty/protobuf-2.5.0/python/google/protobuf/internal/python_message.py index 5b2380310..4bea57ac6 100755 --- a/cpp/thirdparty/protobuf-2.3.0/python/google/protobuf/reflection.py +++ b/cpp/thirdparty/protobuf-2.5.0/python/google/protobuf/internal/python_message.py @@ -54,6 +54,7 @@ try: from cStringIO import StringIO except ImportError: from StringIO import StringIO +import copy_reg import struct import weakref @@ -61,6 +62,7 @@ import weakref from google.protobuf.internal import containers from google.protobuf.internal import decoder from google.protobuf.internal import encoder +from google.protobuf.internal import enum_type_wrapper from google.protobuf.internal import message_listener as message_listener_mod from google.protobuf.internal import type_checkers from google.protobuf.internal import wire_format @@ -71,107 +73,33 @@ from google.protobuf import text_format _FieldDescriptor = descriptor_mod.FieldDescriptor -class GeneratedProtocolMessageType(type): +def NewMessage(bases, descriptor, dictionary): + _AddClassAttributesForNestedExtensions(descriptor, dictionary) + _AddSlots(descriptor, dictionary) + return bases - """Metaclass for protocol message classes created at runtime from Descriptors. - We add implementations for all methods described in the Message class. We - also create properties to allow getting/setting all fields in the protocol - message. Finally, we create slots to prevent users from accidentally - "setting" nonexistent fields in the protocol message, which then wouldn't get - serialized / deserialized properly. +def InitMessage(descriptor, cls): + cls._decoders_by_tag = {} + cls._extensions_by_name = {} + cls._extensions_by_number = {} + if (descriptor.has_options and + descriptor.GetOptions().message_set_wire_format): + cls._decoders_by_tag[decoder.MESSAGE_SET_ITEM_TAG] = ( + decoder.MessageSetItemDecoder(cls._extensions_by_number)) - The protocol compiler currently uses this metaclass to create protocol - message classes at runtime. Clients can also manually create their own - classes at runtime, as in this example: - - mydescriptor = Descriptor(.....) - class MyProtoClass(Message): - __metaclass__ = GeneratedProtocolMessageType - DESCRIPTOR = mydescriptor - myproto_instance = MyProtoClass() - myproto.foo_field = 23 - ... - """ - - # Must be consistent with the protocol-compiler code in - # proto2/compiler/internal/generator.*. - _DESCRIPTOR_KEY = 'DESCRIPTOR' - - def __new__(cls, name, bases, dictionary): - """Custom allocation for runtime-generated class types. - - We override __new__ because this is apparently the only place - where we can meaningfully set __slots__ on the class we're creating(?). - (The interplay between metaclasses and slots is not very well-documented). - - Args: - name: Name of the class (ignored, but required by the - metaclass protocol). - bases: Base classes of the class we're constructing. - (Should be message.Message). We ignore this field, but - it's required by the metaclass protocol - dictionary: The class dictionary of the class we're - constructing. dictionary[_DESCRIPTOR_KEY] must contain - a Descriptor object describing this protocol message - type. - - Returns: - Newly-allocated class. - """ - descriptor = dictionary[GeneratedProtocolMessageType._DESCRIPTOR_KEY] - _AddSlots(descriptor, dictionary) - _AddClassAttributesForNestedExtensions(descriptor, dictionary) - superclass = super(GeneratedProtocolMessageType, cls) - return superclass.__new__(cls, name, bases, dictionary) - - def __init__(cls, name, bases, dictionary): - """Here we perform the majority of our work on the class. - We add enum getters, an __init__ method, implementations - of all Message methods, and properties for all fields - in the protocol type. + # Attach stuff to each FieldDescriptor for quick lookup later on. + for field in descriptor.fields: + _AttachFieldHelpers(cls, field) - Args: - name: Name of the class (ignored, but required by the - metaclass protocol). - bases: Base classes of the class we're constructing. - (Should be message.Message). We ignore this field, but - it's required by the metaclass protocol - dictionary: The class dictionary of the class we're - constructing. dictionary[_DESCRIPTOR_KEY] must contain - a Descriptor object describing this protocol message - type. - """ - descriptor = dictionary[GeneratedProtocolMessageType._DESCRIPTOR_KEY] - - cls._decoders_by_tag = {} - cls._extensions_by_name = {} - cls._extensions_by_number = {} - if (descriptor.has_options and - descriptor.GetOptions().message_set_wire_format): - cls._decoders_by_tag[decoder.MESSAGE_SET_ITEM_TAG] = ( - decoder.MessageSetItemDecoder(cls._extensions_by_number)) - - # We act as a "friend" class of the descriptor, setting - # its _concrete_class attribute the first time we use a - # given descriptor to initialize a concrete protocol message - # class. We also attach stuff to each FieldDescriptor for quick - # lookup later on. - concrete_class_attr_name = '_concrete_class' - if not hasattr(descriptor, concrete_class_attr_name): - setattr(descriptor, concrete_class_attr_name, cls) - for field in descriptor.fields: - _AttachFieldHelpers(cls, field) - - _AddEnumValues(descriptor, cls) - _AddInitMethod(descriptor, cls) - _AddPropertiesForFields(descriptor, cls) - _AddPropertiesForExtensions(descriptor, cls) - _AddStaticMethods(cls) - _AddMessageMethods(descriptor, cls) - _AddPrivateHelperMethods(cls) - superclass = super(GeneratedProtocolMessageType, cls) - superclass.__init__(name, bases, dictionary) + _AddEnumValues(descriptor, cls) + _AddInitMethod(descriptor, cls) + _AddPropertiesForFields(descriptor, cls) + _AddPropertiesForExtensions(descriptor, cls) + _AddStaticMethods(cls) + _AddMessageMethods(descriptor, cls) + _AddPrivateHelperMethods(cls) + copy_reg.pickle(cls, lambda obj: (cls, (), obj.__getstate__())) # Stateless helpers for GeneratedProtocolMessageType below. @@ -221,6 +149,10 @@ def _VerifyExtensionHandle(message, extension_handle): if not extension_handle.is_extension: raise KeyError('"%s" is not an extension.' % extension_handle.full_name) + if not extension_handle.containing_type: + raise KeyError('"%s" is missing a containing_type.' + % extension_handle.full_name) + if extension_handle.containing_type is not message.DESCRIPTOR: raise KeyError('Extension "%s" extends message type "%s", but this ' 'message is of type "%s".' % @@ -240,6 +172,7 @@ def _AddSlots(message_descriptor, dictionary): dictionary['__slots__'] = ['_cached_byte_size', '_cached_byte_size_dirty', '_fields', + '_unknown_fields', '_is_present_in_parent', '_listener', '_listener_for_children', @@ -300,11 +233,14 @@ def _AddClassAttributesForNestedExtensions(descriptor, dictionary): def _AddEnumValues(descriptor, cls): """Sets class-level attributes for all enum fields defined in this message. + Also exporting a class-level object that can name enum values. + Args: descriptor: Descriptor object for this message type. cls: Class we're constructing for this message type. """ for enum_type in descriptor.enum_types: + setattr(cls, enum_type.name, enum_type_wrapper.EnumTypeWrapper(enum_type)) for enum_value in enum_type.values: setattr(cls, enum_value.name, enum_value.number) @@ -324,7 +260,7 @@ def _DefaultValueConstructorForField(field): """ if field.label == _FieldDescriptor.LABEL_REPEATED: - if field.default_value != []: + if field.has_default_value and field.default_value != []: raise ValueError('Repeated field default value not empty list: %s' % ( field.default_value)) if field.cpp_type == _FieldDescriptor.CPPTYPE_MESSAGE: @@ -352,6 +288,8 @@ def _DefaultValueConstructorForField(field): return MakeSubMessageDefault def MakeScalarDefault(message): + # TODO(protobuf-team): This may be broken since there may not be + # default_value. Combine with has_default_value somehow. return field.default_value return MakeScalarDefault @@ -361,8 +299,11 @@ def _AddInitMethod(message_descriptor, cls): fields = message_descriptor.fields def init(self, **kwargs): self._cached_byte_size = 0 - self._cached_byte_size_dirty = False + self._cached_byte_size_dirty = len(kwargs) > 0 self._fields = {} + # _unknown_fields is () when empty for efficiency, and will be turned into + # a list if fields are added. + self._unknown_fields = () self._is_present_in_parent = False self._listener = message_listener_mod.NullMessageListener() self._listener_for_children = _Listener(self) @@ -384,7 +325,7 @@ def _AddInitMethod(message_descriptor, cls): copy.MergeFrom(field_value) self._fields[field] = copy else: - self._fields[field] = field_value + setattr(self, field_name, field_value) init.__module__ = None init.__doc__ = None @@ -501,8 +442,11 @@ def _AddPropertiesForNonRepeatedScalarField(field, cls): property_name = _PropertyName(proto_field_name) type_checker = type_checkers.GetTypeChecker(field.cpp_type, field.type) default_value = field.default_value + valid_values = set() def getter(self): + # TODO(protobuf-team): This may be broken since there may not be + # default_value. Combine with has_default_value somehow. return self._fields.get(field, default_value) getter.__module__ = None getter.__doc__ = 'Getter for %s.' % proto_field_name @@ -513,6 +457,7 @@ def _AddPropertiesForNonRepeatedScalarField(field, cls): # setters are called frequently. if not self._cached_byte_size_dirty: self._Modified() + setter.__module__ = None setter.__doc__ = 'Setter for %s.' % proto_field_name @@ -536,13 +481,18 @@ def _AddPropertiesForNonRepeatedCompositeField(field, cls): # for non-repeated scalars. proto_field_name = field.name property_name = _PropertyName(proto_field_name) + + # TODO(komarek): Can anyone explain to me why we cache the message_type this + # way, instead of referring to field.message_type inside of getter(self)? + # What if someone sets message_type later on (which makes for simpler + # dyanmic proto descriptor and class creation code). message_type = field.message_type def getter(self): field_value = self._fields.get(field) if field_value is None: # Construct a new object to represent this field. - field_value = message_type._concrete_class() + field_value = message_type._concrete_class() # use field.message_type? field_value._SetListener(self._listener_for_children) # Atomically check if another thread has preempted us and, if not, swap @@ -694,6 +644,7 @@ def _AddClearMethod(message_descriptor, cls): def Clear(self): # Clear fields. self._fields = {} + self._unknown_fields = () self._Modified() cls.Clear = Clear @@ -723,7 +674,16 @@ def _AddEqualsMethod(message_descriptor, cls): if self is other: return True - return self.ListFields() == other.ListFields() + if not self.ListFields() == other.ListFields(): + return False + + # Sort unknown fields because their order shouldn't affect equality test. + unknown_fields = list(self._unknown_fields) + unknown_fields.sort() + other_unknown_fields = list(other._unknown_fields) + other_unknown_fields.sort() + + return unknown_fields == other_unknown_fields cls.__eq__ = __eq__ @@ -735,6 +695,14 @@ def _AddStrMethod(message_descriptor, cls): cls.__str__ = __str__ +def _AddUnicodeMethod(unused_message_descriptor, cls): + """Helper for _AddMessageMethods().""" + + def __unicode__(self): + return text_format.MessageToString(self, as_utf8=True).decode('utf-8') + cls.__unicode__ = __unicode__ + + def _AddSetListenerMethod(cls): """Helper for _AddMessageMethods().""" def SetListener(self, listener): @@ -776,6 +744,9 @@ def _AddByteSizeMethod(message_descriptor, cls): for field_descriptor, field_value in self.ListFields(): size += field_descriptor._sizer(field_value) + for tag_bytes, value_bytes in self._unknown_fields: + size += len(tag_bytes) + len(value_bytes) + self._cached_byte_size = size self._cached_byte_size_dirty = False self._listener_for_children.dirty = False @@ -792,8 +763,8 @@ def _AddSerializeToStringMethod(message_descriptor, cls): errors = [] if not self.IsInitialized(): raise message_mod.EncodeError( - 'Message is missing required fields: ' + - ','.join(self.FindInitializationErrors())) + 'Message %s is missing required fields: %s' % ( + self.DESCRIPTOR.full_name, ','.join(self.FindInitializationErrors()))) return self.SerializePartialToString() cls.SerializeToString = SerializeToString @@ -810,6 +781,9 @@ def _AddSerializePartialToStringMethod(message_descriptor, cls): def InternalSerialize(self, write_bytes): for field_descriptor, field_value in self.ListFields(): field_descriptor._encoder(write_bytes, field_value) + for tag_bytes, value_bytes in self._unknown_fields: + write_bytes(tag_bytes) + write_bytes(value_bytes) cls._InternalSerialize = InternalSerialize @@ -836,13 +810,18 @@ def _AddMergeFromStringMethod(message_descriptor, cls): def InternalParse(self, buffer, pos, end): self._Modified() field_dict = self._fields + unknown_field_list = self._unknown_fields while pos != end: (tag_bytes, new_pos) = local_ReadTag(buffer, pos) field_decoder = decoders_by_tag.get(tag_bytes) if field_decoder is None: + value_start_pos = new_pos new_pos = local_SkipField(buffer, new_pos, end, tag_bytes) if new_pos == -1: return pos + if not unknown_field_list: + unknown_field_list = self._unknown_fields = [] + unknown_field_list.append((tag_bytes, buffer[value_start_pos:new_pos])) pos = new_pos else: pos = field_decoder(buffer, new_pos, end, self, field_dict) @@ -937,21 +916,40 @@ def _AddMergeFromMethod(cls): CPPTYPE_MESSAGE = _FieldDescriptor.CPPTYPE_MESSAGE def MergeFrom(self, msg): + if not isinstance(msg, cls): + raise TypeError( + "Parameter to MergeFrom() must be instance of same class: " + "expected %s got %s." % (cls.__name__, type(msg).__name__)) + assert msg is not self self._Modified() fields = self._fields for field, value in msg._fields.iteritems(): - if field.label == LABEL_REPEATED or field.cpp_type == CPPTYPE_MESSAGE: + if field.label == LABEL_REPEATED: field_value = fields.get(field) if field_value is None: # Construct a new object to represent this field. field_value = field._default_constructor(self) fields[field] = field_value field_value.MergeFrom(value) + elif field.cpp_type == CPPTYPE_MESSAGE: + if value._is_present_in_parent: + field_value = fields.get(field) + if field_value is None: + # Construct a new object to represent this field. + field_value = field._default_constructor(self) + fields[field] = field_value + field_value.MergeFrom(value) else: self._fields[field] = value + + if msg._unknown_fields: + if not self._unknown_fields: + self._unknown_fields = [] + self._unknown_fields.extend(msg._unknown_fields) + cls.MergeFrom = MergeFrom @@ -966,6 +964,7 @@ def _AddMessageMethods(message_descriptor, cls): _AddClearMethod(message_descriptor, cls) _AddEqualsMethod(message_descriptor, cls) _AddStrMethod(message_descriptor, cls) + _AddUnicodeMethod(message_descriptor, cls) _AddSetListenerMethod(cls) _AddByteSizeMethod(message_descriptor, cls) _AddSerializeToStringMethod(message_descriptor, cls) @@ -1111,6 +1110,9 @@ class _ExtensionDict(object): def __ne__(self, other): return not self == other + def __hash__(self): + raise TypeError('unhashable object') + # Note that this is only meaningful for non-repeated, scalar extension # fields. Note also that we may have to call _Modified() when we do # successfully set a field this way, to set any necssary "has" bits in the diff --git a/cpp/thirdparty/protobuf-2.5.0/python/google/protobuf/internal/reflection_cpp_generated_test.py b/cpp/thirdparty/protobuf-2.5.0/python/google/protobuf/internal/reflection_cpp_generated_test.py new file mode 100755 index 000000000..2a0a51248 --- /dev/null +++ b/cpp/thirdparty/protobuf-2.5.0/python/google/protobuf/internal/reflection_cpp_generated_test.py @@ -0,0 +1,91 @@ +#! /usr/bin/python +# -*- coding: utf-8 -*- +# +# Protocol Buffers - Google's data interchange format +# Copyright 2008 Google Inc. All rights reserved. +# http://code.google.com/p/protobuf/ +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions are +# met: +# +# * Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# * Redistributions in binary form must reproduce the above +# copyright notice, this list of conditions and the following disclaimer +# in the documentation and/or other materials provided with the +# distribution. +# * Neither the name of Google Inc. nor the names of its +# contributors may be used to endorse or promote products derived from +# this software without specific prior written permission. +# +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +"""Unittest for reflection.py, which tests the generated C++ implementation.""" + +__author__ = 'jasonh@google.com (Jason Hsueh)' + +import os +os.environ['PROTOCOL_BUFFERS_PYTHON_IMPLEMENTATION'] = 'cpp' + +import unittest +from google.protobuf.internal import api_implementation +from google.protobuf.internal import more_extensions_dynamic_pb2 +from google.protobuf.internal import more_extensions_pb2 +from google.protobuf.internal.reflection_test import * + + +class ReflectionCppTest(unittest.TestCase): + def testImplementationSetting(self): + self.assertEqual('cpp', api_implementation.Type()) + + def testExtensionOfGeneratedTypeInDynamicFile(self): + """Tests that a file built dynamically can extend a generated C++ type. + + The C++ implementation uses a DescriptorPool that has the generated + DescriptorPool as an underlay. Typically, a type can only find + extensions in its own pool. With the python C-extension, the generated C++ + extendee may be available, but not the extension. This tests that the + C-extension implements the correct special handling to make such extensions + available. + """ + pb1 = more_extensions_pb2.ExtendedMessage() + # Test that basic accessors work. + self.assertFalse( + pb1.HasExtension(more_extensions_dynamic_pb2.dynamic_int32_extension)) + self.assertFalse( + pb1.HasExtension(more_extensions_dynamic_pb2.dynamic_message_extension)) + pb1.Extensions[more_extensions_dynamic_pb2.dynamic_int32_extension] = 17 + pb1.Extensions[more_extensions_dynamic_pb2.dynamic_message_extension].a = 24 + self.assertTrue( + pb1.HasExtension(more_extensions_dynamic_pb2.dynamic_int32_extension)) + self.assertTrue( + pb1.HasExtension(more_extensions_dynamic_pb2.dynamic_message_extension)) + + # Now serialize the data and parse to a new message. + pb2 = more_extensions_pb2.ExtendedMessage() + pb2.MergeFromString(pb1.SerializeToString()) + + self.assertTrue( + pb2.HasExtension(more_extensions_dynamic_pb2.dynamic_int32_extension)) + self.assertTrue( + pb2.HasExtension(more_extensions_dynamic_pb2.dynamic_message_extension)) + self.assertEqual( + 17, pb2.Extensions[more_extensions_dynamic_pb2.dynamic_int32_extension]) + self.assertEqual( + 24, + pb2.Extensions[more_extensions_dynamic_pb2.dynamic_message_extension].a) + + +if __name__ == '__main__': + unittest.main() diff --git a/cpp/thirdparty/protobuf-2.3.0/python/google/protobuf/internal/reflection_test.py b/cpp/thirdparty/protobuf-2.5.0/python/google/protobuf/internal/reflection_test.py similarity index 81% rename from cpp/thirdparty/protobuf-2.3.0/python/google/protobuf/internal/reflection_test.py rename to cpp/thirdparty/protobuf-2.5.0/python/google/protobuf/internal/reflection_test.py index 2c9fa30be..ed2864613 100755 --- a/cpp/thirdparty/protobuf-2.3.0/python/google/protobuf/internal/reflection_test.py +++ b/cpp/thirdparty/protobuf-2.5.0/python/google/protobuf/internal/reflection_test.py @@ -37,12 +37,11 @@ pure-Python protocol compiler. __author__ = 'robinson@google.com (Will Robinson)' +import gc import operator import struct import unittest -# TODO(robinson): When we split this test in two, only some of these imports -# will be necessary in each test. from google.protobuf import unittest_import_pb2 from google.protobuf import unittest_mset_pb2 from google.protobuf import unittest_pb2 @@ -50,6 +49,7 @@ from google.protobuf import descriptor_pb2 from google.protobuf import descriptor from google.protobuf import message from google.protobuf import reflection +from google.protobuf.internal import api_implementation from google.protobuf.internal import more_extensions_pb2 from google.protobuf.internal import more_messages_pb2 from google.protobuf.internal import wire_format @@ -104,10 +104,10 @@ class _MiniDecoder(object): class ReflectionTest(unittest.TestCase): - def assertIs(self, values, others): + def assertListsEqual(self, values, others): self.assertEqual(len(values), len(others)) for i in range(len(values)): - self.assertTrue(values[i] is others[i]) + self.assertEqual(values[i], others[i]) def testScalarConstructor(self): # Constructor with only scalar types should succeed. @@ -200,6 +200,41 @@ class ReflectionTest(unittest.TestCase): unittest_pb2.ForeignMessage(c=12)], list(proto.repeated_foreign_message)) + def testConstructorTypeError(self): + self.assertRaises( + TypeError, unittest_pb2.TestAllTypes, optional_int32="foo") + self.assertRaises( + TypeError, unittest_pb2.TestAllTypes, optional_string=1234) + self.assertRaises( + TypeError, unittest_pb2.TestAllTypes, optional_nested_message=1234) + self.assertRaises( + TypeError, unittest_pb2.TestAllTypes, repeated_int32=1234) + self.assertRaises( + TypeError, unittest_pb2.TestAllTypes, repeated_int32=["foo"]) + self.assertRaises( + TypeError, unittest_pb2.TestAllTypes, repeated_string=1234) + self.assertRaises( + TypeError, unittest_pb2.TestAllTypes, repeated_string=[1234]) + self.assertRaises( + TypeError, unittest_pb2.TestAllTypes, repeated_nested_message=1234) + self.assertRaises( + TypeError, unittest_pb2.TestAllTypes, repeated_nested_message=[1234]) + + def testConstructorInvalidatesCachedByteSize(self): + message = unittest_pb2.TestAllTypes(optional_int32 = 12) + self.assertEquals(2, message.ByteSize()) + + message = unittest_pb2.TestAllTypes( + optional_nested_message = unittest_pb2.TestAllTypes.NestedMessage()) + self.assertEquals(3, message.ByteSize()) + + message = unittest_pb2.TestAllTypes(repeated_int32 = [12]) + self.assertEquals(3, message.ByteSize()) + + message = unittest_pb2.TestAllTypes( + repeated_nested_message = [unittest_pb2.TestAllTypes.NestedMessage()]) + self.assertEquals(3, message.ByteSize()) + def testSimpleHasBits(self): # Test a scalar. proto = unittest_pb2.TestAllTypes() @@ -284,12 +319,6 @@ class ReflectionTest(unittest.TestCase): # ...and ensure that the scalar field has returned to its default. self.assertEqual(0, getattr(composite_field, scalar_field_name)) - # Finally, ensure that modifications to the old composite field object - # don't have any effect on the parent. - # - # (NOTE that when we clear the composite field in the parent, we actually - # don't recursively clear down the tree. Instead, we just disconnect the - # cleared composite from the tree.) self.assertTrue(old_composite_field is not composite_field) setattr(old_composite_field, scalar_field_name, new_val) self.assertTrue(not composite_field.HasField(scalar_field_name)) @@ -319,6 +348,64 @@ class ReflectionTest(unittest.TestCase): self.assertTrue(not proto.HasField('optional_nested_message')) self.assertEqual(0, proto.optional_nested_message.bb) + def testGetDefaultMessageAfterDisconnectingDefaultMessage(self): + proto = unittest_pb2.TestAllTypes() + nested = proto.optional_nested_message + proto.ClearField('optional_nested_message') + del proto + del nested + # Force a garbage collect so that the underlying CMessages are freed along + # with the Messages they point to. This is to make sure we're not deleting + # default message instances. + gc.collect() + proto = unittest_pb2.TestAllTypes() + nested = proto.optional_nested_message + + def testDisconnectingNestedMessageAfterSettingField(self): + proto = unittest_pb2.TestAllTypes() + nested = proto.optional_nested_message + nested.bb = 5 + self.assertTrue(proto.HasField('optional_nested_message')) + proto.ClearField('optional_nested_message') # Should disconnect from parent + self.assertEqual(5, nested.bb) + self.assertEqual(0, proto.optional_nested_message.bb) + self.assertTrue(nested is not proto.optional_nested_message) + nested.bb = 23 + self.assertTrue(not proto.HasField('optional_nested_message')) + self.assertEqual(0, proto.optional_nested_message.bb) + + def testDisconnectingNestedMessageBeforeGettingField(self): + proto = unittest_pb2.TestAllTypes() + self.assertTrue(not proto.HasField('optional_nested_message')) + proto.ClearField('optional_nested_message') + self.assertTrue(not proto.HasField('optional_nested_message')) + + def testDisconnectingNestedMessageAfterMerge(self): + # This test exercises the code path that does not use ReleaseMessage(). + # The underlying fear is that if we use ReleaseMessage() incorrectly, + # we will have memory leaks. It's hard to check that that doesn't happen, + # but at least we can exercise that code path to make sure it works. + proto1 = unittest_pb2.TestAllTypes() + proto2 = unittest_pb2.TestAllTypes() + proto2.optional_nested_message.bb = 5 + proto1.MergeFrom(proto2) + self.assertTrue(proto1.HasField('optional_nested_message')) + proto1.ClearField('optional_nested_message') + self.assertTrue(not proto1.HasField('optional_nested_message')) + + def testDisconnectingLazyNestedMessage(self): + # This test exercises releasing a nested message that is lazy. This test + # only exercises real code in the C++ implementation as Python does not + # support lazy parsing, but the current C++ implementation results in + # memory corruption and a crash. + if api_implementation.Type() != 'python': + return + proto = unittest_pb2.TestAllTypes() + proto.optional_lazy_message.bb = 5 + proto.ClearField('optional_lazy_message') + del proto + gc.collect() + def testHasBitsWhenModifyingRepeatedFields(self): # Test nesting when we add an element to a repeated field in a submessage. proto = unittest_pb2.TestNestedMessageHasBits() @@ -500,7 +587,6 @@ class ReflectionTest(unittest.TestCase): # proto.nonexistent_field = 23 should fail as well. self.assertRaises(AttributeError, setattr, proto, 'nonexistent_field', 23) - # TODO(robinson): Add type-safety check for enums. def testSingleScalarTypeSafety(self): proto = unittest_pb2.TestAllTypes() self.assertRaises(TypeError, setattr, proto, 'optional_int32', 1.1) @@ -512,7 +598,9 @@ class ReflectionTest(unittest.TestCase): def TestMinAndMaxIntegers(field_name, expected_min, expected_max): pb = unittest_pb2.TestAllTypes() setattr(pb, field_name, expected_min) + self.assertEqual(expected_min, getattr(pb, field_name)) setattr(pb, field_name, expected_max) + self.assertEqual(expected_max, getattr(pb, field_name)) self.assertRaises(ValueError, setattr, pb, field_name, expected_min - 1) self.assertRaises(ValueError, setattr, pb, field_name, expected_max + 1) @@ -520,7 +608,33 @@ class ReflectionTest(unittest.TestCase): TestMinAndMaxIntegers('optional_uint32', 0, 0xffffffff) TestMinAndMaxIntegers('optional_int64', -(1 << 63), (1 << 63) - 1) TestMinAndMaxIntegers('optional_uint64', 0, 0xffffffffffffffff) - TestMinAndMaxIntegers('optional_nested_enum', -(1 << 31), (1 << 31) - 1) + + pb = unittest_pb2.TestAllTypes() + pb.optional_nested_enum = 1 + self.assertEqual(1, pb.optional_nested_enum) + + # Invalid enum values. + pb.optional_nested_enum = 0 + self.assertEqual(0, pb.optional_nested_enum) + + bytes_size_before = pb.ByteSize() + + pb.optional_nested_enum = 4 + self.assertEqual(4, pb.optional_nested_enum) + + pb.optional_nested_enum = 0 + self.assertEqual(0, pb.optional_nested_enum) + + # Make sure that setting the same enum field doesn't just add unknown + # fields (but overwrites them). + self.assertEqual(bytes_size_before, pb.ByteSize()) + + # Is the invalid value preserved after serialization? + serialized = pb.SerializeToString() + pb2 = unittest_pb2.TestAllTypes() + pb2.ParseFromString(serialized) + self.assertEqual(0, pb2.optional_nested_enum) + self.assertEqual(pb, pb2) def testRepeatedScalarTypeSafety(self): proto = unittest_pb2.TestAllTypes() @@ -534,11 +648,19 @@ class ReflectionTest(unittest.TestCase): self.assertRaises(IndexError, proto.repeated_int32.__setitem__, 500, 23) self.assertRaises(TypeError, proto.repeated_int32.__setitem__, 0, 'abc') + # Repeated enums tests. + #proto.repeated_nested_enum.append(0) + def testSingleScalarGettersAndSetters(self): proto = unittest_pb2.TestAllTypes() self.assertEqual(0, proto.optional_int32) proto.optional_int32 = 1 self.assertEqual(1, proto.optional_int32) + + proto.optional_uint64 = 0xffffffffffff + self.assertEqual(0xffffffffffff, proto.optional_uint64) + proto.optional_uint64 = 0xffffffffffffffff + self.assertEqual(0xffffffffffffffff, proto.optional_uint64) # TODO(robinson): Test all other scalar field types. def testSingleScalarClearField(self): @@ -561,6 +683,77 @@ class ReflectionTest(unittest.TestCase): self.assertEqual(3, proto.BAZ) self.assertEqual(3, unittest_pb2.TestAllTypes.BAZ) + def testEnum_Name(self): + self.assertEqual('FOREIGN_FOO', + unittest_pb2.ForeignEnum.Name(unittest_pb2.FOREIGN_FOO)) + self.assertEqual('FOREIGN_BAR', + unittest_pb2.ForeignEnum.Name(unittest_pb2.FOREIGN_BAR)) + self.assertEqual('FOREIGN_BAZ', + unittest_pb2.ForeignEnum.Name(unittest_pb2.FOREIGN_BAZ)) + self.assertRaises(ValueError, + unittest_pb2.ForeignEnum.Name, 11312) + + proto = unittest_pb2.TestAllTypes() + self.assertEqual('FOO', + proto.NestedEnum.Name(proto.FOO)) + self.assertEqual('FOO', + unittest_pb2.TestAllTypes.NestedEnum.Name(proto.FOO)) + self.assertEqual('BAR', + proto.NestedEnum.Name(proto.BAR)) + self.assertEqual('BAR', + unittest_pb2.TestAllTypes.NestedEnum.Name(proto.BAR)) + self.assertEqual('BAZ', + proto.NestedEnum.Name(proto.BAZ)) + self.assertEqual('BAZ', + unittest_pb2.TestAllTypes.NestedEnum.Name(proto.BAZ)) + self.assertRaises(ValueError, + proto.NestedEnum.Name, 11312) + self.assertRaises(ValueError, + unittest_pb2.TestAllTypes.NestedEnum.Name, 11312) + + def testEnum_Value(self): + self.assertEqual(unittest_pb2.FOREIGN_FOO, + unittest_pb2.ForeignEnum.Value('FOREIGN_FOO')) + self.assertEqual(unittest_pb2.FOREIGN_BAR, + unittest_pb2.ForeignEnum.Value('FOREIGN_BAR')) + self.assertEqual(unittest_pb2.FOREIGN_BAZ, + unittest_pb2.ForeignEnum.Value('FOREIGN_BAZ')) + self.assertRaises(ValueError, + unittest_pb2.ForeignEnum.Value, 'FO') + + proto = unittest_pb2.TestAllTypes() + self.assertEqual(proto.FOO, + proto.NestedEnum.Value('FOO')) + self.assertEqual(proto.FOO, + unittest_pb2.TestAllTypes.NestedEnum.Value('FOO')) + self.assertEqual(proto.BAR, + proto.NestedEnum.Value('BAR')) + self.assertEqual(proto.BAR, + unittest_pb2.TestAllTypes.NestedEnum.Value('BAR')) + self.assertEqual(proto.BAZ, + proto.NestedEnum.Value('BAZ')) + self.assertEqual(proto.BAZ, + unittest_pb2.TestAllTypes.NestedEnum.Value('BAZ')) + self.assertRaises(ValueError, + proto.NestedEnum.Value, 'Foo') + self.assertRaises(ValueError, + unittest_pb2.TestAllTypes.NestedEnum.Value, 'Foo') + + def testEnum_KeysAndValues(self): + self.assertEqual(['FOREIGN_FOO', 'FOREIGN_BAR', 'FOREIGN_BAZ'], + unittest_pb2.ForeignEnum.keys()) + self.assertEqual([4, 5, 6], + unittest_pb2.ForeignEnum.values()) + self.assertEqual([('FOREIGN_FOO', 4), ('FOREIGN_BAR', 5), + ('FOREIGN_BAZ', 6)], + unittest_pb2.ForeignEnum.items()) + + proto = unittest_pb2.TestAllTypes() + self.assertEqual(['FOO', 'BAR', 'BAZ'], proto.NestedEnum.keys()) + self.assertEqual([1, 2, 3], proto.NestedEnum.values()) + self.assertEqual([('FOO', 1), ('BAR', 2), ('BAZ', 3)], + proto.NestedEnum.items()) + def testRepeatedScalars(self): proto = unittest_pb2.TestAllTypes() @@ -619,11 +812,38 @@ class ReflectionTest(unittest.TestCase): del proto.repeated_int32[2:] self.assertEqual([5, 35], proto.repeated_int32) + # Test extending. + proto.repeated_int32.extend([3, 13]) + self.assertEqual([5, 35, 3, 13], proto.repeated_int32) + # Test clearing. proto.ClearField('repeated_int32') self.assertTrue(not proto.repeated_int32) self.assertEqual(0, len(proto.repeated_int32)) + proto.repeated_int32.append(1) + self.assertEqual(1, proto.repeated_int32[-1]) + # Test assignment to a negative index. + proto.repeated_int32[-1] = 2 + self.assertEqual(2, proto.repeated_int32[-1]) + + # Test deletion at negative indices. + proto.repeated_int32[:] = [0, 1, 2, 3] + del proto.repeated_int32[-1] + self.assertEqual([0, 1, 2], proto.repeated_int32) + + del proto.repeated_int32[-2] + self.assertEqual([0, 2], proto.repeated_int32) + + self.assertRaises(IndexError, proto.repeated_int32.__delitem__, -3) + self.assertRaises(IndexError, proto.repeated_int32.__delitem__, 300) + + del proto.repeated_int32[-2:-1] + self.assertEqual([2], proto.repeated_int32) + + del proto.repeated_int32[100:10000] + self.assertEqual([2], proto.repeated_int32) + def testRepeatedScalarsRemove(self): proto = unittest_pb2.TestAllTypes() @@ -661,7 +881,7 @@ class ReflectionTest(unittest.TestCase): m1 = proto.repeated_nested_message.add() self.assertTrue(proto.repeated_nested_message) self.assertEqual(2, len(proto.repeated_nested_message)) - self.assertIs([m0, m1], proto.repeated_nested_message) + self.assertListsEqual([m0, m1], proto.repeated_nested_message) self.assertTrue(isinstance(m0, unittest_pb2.TestAllTypes.NestedMessage)) # Test out-of-bounds indices. @@ -680,32 +900,86 @@ class ReflectionTest(unittest.TestCase): m2 = proto.repeated_nested_message.add() m3 = proto.repeated_nested_message.add() m4 = proto.repeated_nested_message.add() - self.assertIs([m1, m2, m3], proto.repeated_nested_message[1:4]) - self.assertIs([m0, m1, m2, m3, m4], proto.repeated_nested_message[:]) + self.assertListsEqual( + [m1, m2, m3], proto.repeated_nested_message[1:4]) + self.assertListsEqual( + [m0, m1, m2, m3, m4], proto.repeated_nested_message[:]) + self.assertListsEqual( + [m0, m1], proto.repeated_nested_message[:2]) + self.assertListsEqual( + [m2, m3, m4], proto.repeated_nested_message[2:]) + self.assertEqual( + m0, proto.repeated_nested_message[0]) + self.assertListsEqual( + [m0], proto.repeated_nested_message[:1]) # Test that we can use the field as an iterator. result = [] for i in proto.repeated_nested_message: result.append(i) - self.assertIs([m0, m1, m2, m3, m4], result) + self.assertListsEqual([m0, m1, m2, m3, m4], result) # Test single deletion. del proto.repeated_nested_message[2] - self.assertIs([m0, m1, m3, m4], proto.repeated_nested_message) + self.assertListsEqual([m0, m1, m3, m4], proto.repeated_nested_message) # Test slice deletion. del proto.repeated_nested_message[2:] - self.assertIs([m0, m1], proto.repeated_nested_message) + self.assertListsEqual([m0, m1], proto.repeated_nested_message) + + # Test extending. + n1 = unittest_pb2.TestAllTypes.NestedMessage(bb=1) + n2 = unittest_pb2.TestAllTypes.NestedMessage(bb=2) + proto.repeated_nested_message.extend([n1,n2]) + self.assertEqual(4, len(proto.repeated_nested_message)) + self.assertEqual(n1, proto.repeated_nested_message[2]) + self.assertEqual(n2, proto.repeated_nested_message[3]) # Test clearing. proto.ClearField('repeated_nested_message') self.assertTrue(not proto.repeated_nested_message) self.assertEqual(0, len(proto.repeated_nested_message)) + # Test constructing an element while adding it. + proto.repeated_nested_message.add(bb=23) + self.assertEqual(1, len(proto.repeated_nested_message)) + self.assertEqual(23, proto.repeated_nested_message[0].bb) + + def testRepeatedCompositeRemove(self): + proto = unittest_pb2.TestAllTypes() + + self.assertEqual(0, len(proto.repeated_nested_message)) + m0 = proto.repeated_nested_message.add() + # Need to set some differentiating variable so m0 != m1 != m2: + m0.bb = len(proto.repeated_nested_message) + m1 = proto.repeated_nested_message.add() + m1.bb = len(proto.repeated_nested_message) + self.assertTrue(m0 != m1) + m2 = proto.repeated_nested_message.add() + m2.bb = len(proto.repeated_nested_message) + self.assertListsEqual([m0, m1, m2], proto.repeated_nested_message) + + self.assertEqual(3, len(proto.repeated_nested_message)) + proto.repeated_nested_message.remove(m0) + self.assertEqual(2, len(proto.repeated_nested_message)) + self.assertEqual(m1, proto.repeated_nested_message[0]) + self.assertEqual(m2, proto.repeated_nested_message[1]) + + # Removing m0 again or removing None should raise error + self.assertRaises(ValueError, proto.repeated_nested_message.remove, m0) + self.assertRaises(ValueError, proto.repeated_nested_message.remove, None) + self.assertEqual(2, len(proto.repeated_nested_message)) + + proto.repeated_nested_message.remove(m2) + self.assertEqual(1, len(proto.repeated_nested_message)) + self.assertEqual(m1, proto.repeated_nested_message[0]) + def testHandWrittenReflection(self): - # TODO(robinson): We probably need a better way to specify - # protocol types by hand. But then again, this isn't something - # we expect many people to do. Hmm. + # Hand written extensions are only supported by the pure-Python + # implementation of the API. + if api_implementation.Type() != 'python': + return + FieldDescriptor = descriptor.FieldDescriptor foo_field_descriptor = FieldDescriptor( name='foo_field', full_name='MyProto.foo_field', @@ -730,6 +1004,68 @@ class ReflectionTest(unittest.TestCase): self.assertEqual(23, myproto_instance.foo_field) self.assertTrue(myproto_instance.HasField('foo_field')) + def testDescriptorProtoSupport(self): + # Hand written descriptors/reflection are only supported by the pure-Python + # implementation of the API. + if api_implementation.Type() != 'python': + return + + def AddDescriptorField(proto, field_name, field_type): + AddDescriptorField.field_index += 1 + new_field = proto.field.add() + new_field.name = field_name + new_field.type = field_type + new_field.number = AddDescriptorField.field_index + new_field.label = descriptor_pb2.FieldDescriptorProto.LABEL_OPTIONAL + + AddDescriptorField.field_index = 0 + + desc_proto = descriptor_pb2.DescriptorProto() + desc_proto.name = 'Car' + fdp = descriptor_pb2.FieldDescriptorProto + AddDescriptorField(desc_proto, 'name', fdp.TYPE_STRING) + AddDescriptorField(desc_proto, 'year', fdp.TYPE_INT64) + AddDescriptorField(desc_proto, 'automatic', fdp.TYPE_BOOL) + AddDescriptorField(desc_proto, 'price', fdp.TYPE_DOUBLE) + # Add a repeated field + AddDescriptorField.field_index += 1 + new_field = desc_proto.field.add() + new_field.name = 'owners' + new_field.type = fdp.TYPE_STRING + new_field.number = AddDescriptorField.field_index + new_field.label = descriptor_pb2.FieldDescriptorProto.LABEL_REPEATED + + desc = descriptor.MakeDescriptor(desc_proto) + self.assertTrue(desc.fields_by_name.has_key('name')) + self.assertTrue(desc.fields_by_name.has_key('year')) + self.assertTrue(desc.fields_by_name.has_key('automatic')) + self.assertTrue(desc.fields_by_name.has_key('price')) + self.assertTrue(desc.fields_by_name.has_key('owners')) + + class CarMessage(message.Message): + __metaclass__ = reflection.GeneratedProtocolMessageType + DESCRIPTOR = desc + + prius = CarMessage() + prius.name = 'prius' + prius.year = 2010 + prius.automatic = True + prius.price = 25134.75 + prius.owners.extend(['bob', 'susan']) + + serialized_prius = prius.SerializeToString() + new_prius = reflection.ParseMessage(desc, serialized_prius) + self.assertTrue(new_prius is not prius) + self.assertEqual(prius, new_prius) + + # these are unnecessary assuming message equality works as advertised but + # explicitly check to be safe since we're mucking about in metaclass foo + self.assertEqual(prius.name, new_prius.name) + self.assertEqual(prius.year, new_prius.year) + self.assertEqual(prius.automatic, new_prius.automatic) + self.assertEqual(prius.price, new_prius.price) + self.assertEqual(prius.owners, new_prius.owners) + def testTopLevelExtensionsForOptionalScalar(self): extendee_proto = unittest_pb2.TestAllExtensions() extension = unittest_pb2.optional_int32_extension @@ -868,7 +1204,7 @@ class ReflectionTest(unittest.TestCase): self.assertTrue(not toplevel.HasField('submessage')) foreign = toplevel.submessage.Extensions[ more_extensions_pb2.repeated_message_extension].add() - self.assertTrue(foreign is toplevel.submessage.Extensions[ + self.assertEqual(foreign, toplevel.submessage.Extensions[ more_extensions_pb2.repeated_message_extension][0]) self.assertTrue(toplevel.HasField('submessage')) @@ -971,6 +1307,12 @@ class ReflectionTest(unittest.TestCase): self.assertEqual(123, proto2.repeated_nested_message[1].bb) self.assertEqual(321, proto2.repeated_nested_message[2].bb) + proto3 = unittest_pb2.TestAllTypes() + proto3.repeated_nested_message.MergeFrom(proto2.repeated_nested_message) + self.assertEqual(999, proto3.repeated_nested_message[0].bb) + self.assertEqual(123, proto3.repeated_nested_message[1].bb) + self.assertEqual(321, proto3.repeated_nested_message[2].bb) + def testMergeFromAllFields(self): # With all fields set. proto1 = unittest_pb2.TestAllTypes() @@ -1035,6 +1377,19 @@ class ReflectionTest(unittest.TestCase): self.assertEqual(222, ext2[1].bb) self.assertEqual(333, ext2[2].bb) + def testMergeFromBug(self): + message1 = unittest_pb2.TestAllTypes() + message2 = unittest_pb2.TestAllTypes() + + # Cause optional_nested_message to be instantiated within message1, even + # though it is not considered to be "present". + message1.optional_nested_message + self.assertFalse(message1.HasField('optional_nested_message')) + + # Merge into message2. This should not instantiate the field is message2. + message2.MergeFrom(message1) + self.assertFalse(message2.HasField('optional_nested_message')) + def testCopyFromSingularField(self): # Test copy with just a singular field. proto1 = unittest_pb2.TestAllTypes() @@ -1087,9 +1442,23 @@ class ReflectionTest(unittest.TestCase): self.assertEqual(2, proto1.optional_int32) self.assertEqual('important-text', proto1.optional_string) + def testCopyFromBadType(self): + # The python implementation doesn't raise an exception in this + # case. In theory it should. + if api_implementation.Type() == 'python': + return + proto1 = unittest_pb2.TestAllTypes() + proto2 = unittest_pb2.TestAllExtensions() + self.assertRaises(TypeError, proto1.CopyFrom, proto2) + def testClear(self): proto = unittest_pb2.TestAllTypes() - test_util.SetAllFields(proto) + # C++ implementation does not support lazy fields right now so leave it + # out for now. + if api_implementation.Type() == 'python': + test_util.SetAllFields(proto) + else: + test_util.SetAllNonLazyFields(proto) # Clear the message. proto.Clear() self.assertEquals(proto.ByteSize(), 0) @@ -1105,6 +1474,33 @@ class ReflectionTest(unittest.TestCase): empty_proto = unittest_pb2.TestAllExtensions() self.assertEquals(proto, empty_proto) + def testDisconnectingBeforeClear(self): + proto = unittest_pb2.TestAllTypes() + nested = proto.optional_nested_message + proto.Clear() + self.assertTrue(nested is not proto.optional_nested_message) + nested.bb = 23 + self.assertTrue(not proto.HasField('optional_nested_message')) + self.assertEqual(0, proto.optional_nested_message.bb) + + proto = unittest_pb2.TestAllTypes() + nested = proto.optional_nested_message + nested.bb = 5 + foreign = proto.optional_foreign_message + foreign.c = 6 + + proto.Clear() + self.assertTrue(nested is not proto.optional_nested_message) + self.assertTrue(foreign is not proto.optional_foreign_message) + self.assertEqual(5, nested.bb) + self.assertEqual(6, foreign.c) + nested.bb = 15 + foreign.c = 16 + self.assertTrue(not proto.HasField('optional_nested_message')) + self.assertEqual(0, proto.optional_nested_message.bb) + self.assertTrue(not proto.HasField('optional_foreign_message')) + self.assertEqual(0, proto.optional_foreign_message.c) + def assertInitialized(self, proto): self.assertTrue(proto.IsInitialized()) # Neither method should raise an exception. @@ -1192,9 +1588,10 @@ class ReflectionTest(unittest.TestCase): proto.optional_string = str('Testing') self.assertEqual(proto.optional_string, unicode('Testing')) - # Values of type 'str' are also accepted as long as they can be encoded in - # UTF-8. - self.assertEqual(type(proto.optional_string), str) + if api_implementation.Type() == 'python': + # Values of type 'str' are also accepted as long as they can be + # encoded in UTF-8. + self.assertEqual(type(proto.optional_string), str) # Try to assign a 'str' value which contains bytes that aren't 7-bit ASCII. self.assertRaises(ValueError, @@ -1232,7 +1629,7 @@ class ReflectionTest(unittest.TestCase): # Check that the type_id is the same as the tag ID in the .proto file. self.assertEqual(raw.item[0].type_id, 1547769) - # Check the actually bytes on the wire. + # Check the actual bytes on the wire. self.assertTrue( raw.item[0].message.endswith(test_utf8_bytes)) message2.MergeFromString(raw.item[0].message) @@ -1240,10 +1637,23 @@ class ReflectionTest(unittest.TestCase): self.assertEqual(type(message2.str), unicode) self.assertEqual(message2.str, test_utf8) - # How about if the bytes on the wire aren't a valid UTF-8 encoded string. + # The pure Python API throws an exception on MergeFromString(), + # if any of the string fields of the message can't be UTF-8 decoded. + # The C++ implementation of the API has no way to check that on + # MergeFromString and thus has no way to throw the exception. + # + # The pure Python API always returns objects of type 'unicode' (UTF-8 + # encoded), or 'str' (in 7 bit ASCII). bytes = raw.item[0].message.replace( test_utf8_bytes, len(test_utf8_bytes) * '\xff') - self.assertRaises(UnicodeDecodeError, message2.MergeFromString, bytes) + + unicode_decode_failed = False + try: + message2.MergeFromString(bytes) + except UnicodeDecodeError as e: + unicode_decode_failed = True + string_field = message2.str + self.assertTrue(unicode_decode_failed or type(string_field) == str) def testEmptyNestedMessage(self): proto = unittest_pb2.TestAllTypes() @@ -1286,6 +1696,9 @@ class TestAllTypesEqualityTest(unittest.TestCase): self.first_proto = unittest_pb2.TestAllTypes() self.second_proto = unittest_pb2.TestAllTypes() + def testNotHashable(self): + self.assertRaises(TypeError, hash, self.first_proto) + def testSelfEquality(self): self.assertEqual(self.first_proto, self.first_proto) @@ -1303,6 +1716,9 @@ class FullProtosEqualityTest(unittest.TestCase): test_util.SetAllFields(self.first_proto) test_util.SetAllFields(self.second_proto) + def testNotHashable(self): + self.assertRaises(TypeError, hash, self.first_proto) + def testNoneNotEqual(self): self.assertNotEqual(self.first_proto, None) self.assertNotEqual(None, self.second_proto) @@ -1371,9 +1787,6 @@ class FullProtosEqualityTest(unittest.TestCase): self.first_proto.ClearField('optional_nested_message') self.second_proto.optional_nested_message.ClearField('bb') self.assertNotEqual(self.first_proto, self.second_proto) - # TODO(robinson): Replace next two lines with method - # to set the "has" bit without changing the value, - # if/when such a method exists. self.first_proto.optional_nested_message.bb = 0 self.first_proto.optional_nested_message.ClearField('bb') self.assertEqual(self.first_proto, self.second_proto) @@ -1438,6 +1851,14 @@ class ByteSizeTest(unittest.TestCase): def testEmptyMessage(self): self.assertEqual(0, self.proto.ByteSize()) + def testSizedOnKwargs(self): + # Use a separate message to ensure testing right after creation. + proto = unittest_pb2.TestAllTypes() + self.assertEqual(0, proto.ByteSize()) + proto_kwargs = unittest_pb2.TestAllTypes(optional_int64 = 1) + # One byte for the tag, one to encode varint 1. + self.assertEqual(2, proto_kwargs.ByteSize()) + def testVarints(self): def Test(i, expected_varint_size): self.proto.Clear() @@ -1629,10 +2050,13 @@ class ByteSizeTest(unittest.TestCase): self.assertEqual(3, self.proto.ByteSize()) self.proto.ClearField('optional_foreign_message') self.assertEqual(0, self.proto.ByteSize()) - child = self.proto.optional_foreign_message - self.proto.ClearField('optional_foreign_message') - child.c = 128 - self.assertEqual(0, self.proto.ByteSize()) + + if api_implementation.Type() == 'python': + # This is only possible in pure-Python implementation of the API. + child = self.proto.optional_foreign_message + self.proto.ClearField('optional_foreign_message') + child.c = 128 + self.assertEqual(0, self.proto.ByteSize()) # Test within extension. extension = more_extensions_pb2.optional_message_extension @@ -1698,7 +2122,6 @@ class ByteSizeTest(unittest.TestCase): self.assertEqual(19, self.packed_extended_proto.ByteSize()) -# TODO(robinson): We need cross-language serialization consistency tests. # Issues to be sure to cover include: # * Handling of unrecognized tags ("uninterpreted_bytes"). # * Handling of MessageSets. @@ -1753,6 +2176,10 @@ class SerializationTest(unittest.TestCase): self.assertEqual(first_proto, second_proto) def testParseTruncated(self): + # This test is only applicable for the Python implementation of the API. + if api_implementation.Type() != 'python': + return + first_proto = unittest_pb2.TestAllTypes() test_util.SetAllFields(first_proto) serialized = first_proto.SerializeToString() @@ -1934,7 +2361,7 @@ class SerializationTest(unittest.TestCase): """This method checks if the excpetion type and message are as expected.""" try: callable_obj() - except exc_class, ex: + except exc_class as ex: # Check if the exception message is the right one. self.assertEqual(exception, str(ex)) return @@ -1946,15 +2373,22 @@ class SerializationTest(unittest.TestCase): self._CheckRaises( message.EncodeError, proto.SerializeToString, - 'Message is missing required fields: a,b,c') + 'Message protobuf_unittest.TestRequired is missing required fields: ' + 'a,b,c') # Shouldn't raise exceptions. partial = proto.SerializePartialToString() + proto2 = unittest_pb2.TestRequired() + self.assertFalse(proto2.HasField('a')) + # proto2 ParseFromString does not check that required fields are set. + proto2.ParseFromString(partial) + self.assertFalse(proto2.HasField('a')) + proto.a = 1 self._CheckRaises( message.EncodeError, proto.SerializeToString, - 'Message is missing required fields: b,c') + 'Message protobuf_unittest.TestRequired is missing required fields: b,c') # Shouldn't raise exceptions. partial = proto.SerializePartialToString() @@ -1962,7 +2396,7 @@ class SerializationTest(unittest.TestCase): self._CheckRaises( message.EncodeError, proto.SerializeToString, - 'Message is missing required fields: c') + 'Message protobuf_unittest.TestRequired is missing required fields: c') # Shouldn't raise exceptions. partial = proto.SerializePartialToString() @@ -1991,7 +2425,8 @@ class SerializationTest(unittest.TestCase): self._CheckRaises( message.EncodeError, proto.SerializeToString, - 'Message is missing required fields: ' + 'Message protobuf_unittest.TestRequiredForeign ' + 'is missing required fields: ' 'optional_message.b,optional_message.c') proto.optional_message.b = 2 @@ -2003,7 +2438,7 @@ class SerializationTest(unittest.TestCase): self._CheckRaises( message.EncodeError, proto.SerializeToString, - 'Message is missing required fields: ' + 'Message protobuf_unittest.TestRequiredForeign is missing required fields: ' 'repeated_message[0].b,repeated_message[0].c,' 'repeated_message[1].a,repeated_message[1].c') diff --git a/cpp/thirdparty/protobuf-2.3.0/python/google/protobuf/internal/service_reflection_test.py b/cpp/thirdparty/protobuf-2.5.0/python/google/protobuf/internal/service_reflection_test.py similarity index 100% rename from cpp/thirdparty/protobuf-2.3.0/python/google/protobuf/internal/service_reflection_test.py rename to cpp/thirdparty/protobuf-2.5.0/python/google/protobuf/internal/service_reflection_test.py diff --git a/cpp/thirdparty/protobuf-2.5.0/python/google/protobuf/internal/test_bad_identifiers.proto b/cpp/thirdparty/protobuf-2.5.0/python/google/protobuf/internal/test_bad_identifiers.proto new file mode 100644 index 000000000..6a82299a5 --- /dev/null +++ b/cpp/thirdparty/protobuf-2.5.0/python/google/protobuf/internal/test_bad_identifiers.proto @@ -0,0 +1,52 @@ +// Protocol Buffers - Google's data interchange format +// Copyright 2008 Google Inc. All rights reserved. +// http://code.google.com/p/protobuf/ +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +// Author: kenton@google.com (Kenton Varda) + + +package protobuf_unittest; + +option py_generic_services = true; + +message TestBadIdentifiers { + extensions 100 to max; +} + +// Make sure these reasonable extension names don't conflict with internal +// variables. +extend TestBadIdentifiers { + optional string message = 100 [default="foo"]; + optional string descriptor = 101 [default="bar"]; + optional string reflection = 102 [default="baz"]; + optional string service = 103 [default="qux"]; +} + +message AnotherMessage {} +service AnotherService {} diff --git a/cpp/thirdparty/protobuf-2.3.0/python/google/protobuf/internal/test_util.py b/cpp/thirdparty/protobuf-2.5.0/python/google/protobuf/internal/test_util.py similarity index 96% rename from cpp/thirdparty/protobuf-2.3.0/python/google/protobuf/internal/test_util.py rename to cpp/thirdparty/protobuf-2.5.0/python/google/protobuf/internal/test_util.py index 1df161946..be8ae7bef 100755 --- a/cpp/thirdparty/protobuf-2.3.0/python/google/protobuf/internal/test_util.py +++ b/cpp/thirdparty/protobuf-2.5.0/python/google/protobuf/internal/test_util.py @@ -42,8 +42,8 @@ from google.protobuf import unittest_import_pb2 from google.protobuf import unittest_pb2 -def SetAllFields(message): - """Sets every field in the message to a unique value. +def SetAllNonLazyFields(message): + """Sets every non-lazy field in the message to a unique value. Args: message: A unittest_pb2.TestAllTypes instance. @@ -79,6 +79,7 @@ def SetAllFields(message): message.optional_nested_message.bb = 118 message.optional_foreign_message.c = 119 message.optional_import_message.d = 120 + message.optional_public_import_message.e = 126 message.optional_nested_enum = unittest_pb2.TestAllTypes.BAZ message.optional_foreign_enum = unittest_pb2.FOREIGN_BAZ @@ -111,6 +112,7 @@ def SetAllFields(message): message.repeated_nested_message.add().bb = 218 message.repeated_foreign_message.add().c = 219 message.repeated_import_message.add().d = 220 + message.repeated_lazy_message.add().bb = 227 message.repeated_nested_enum.append(unittest_pb2.TestAllTypes.BAR) message.repeated_foreign_enum.append(unittest_pb2.FOREIGN_BAR) @@ -140,6 +142,7 @@ def SetAllFields(message): message.repeated_nested_message.add().bb = 318 message.repeated_foreign_message.add().c = 319 message.repeated_import_message.add().d = 320 + message.repeated_lazy_message.add().bb = 327 message.repeated_nested_enum.append(unittest_pb2.TestAllTypes.BAZ) message.repeated_foreign_enum.append(unittest_pb2.FOREIGN_BAZ) @@ -176,6 +179,11 @@ def SetAllFields(message): message.default_cord = '425' +def SetAllFields(message): + SetAllNonLazyFields(message) + message.optional_lazy_message.bb = 127 + + def SetAllExtensions(message): """Sets every extension in the message to a unique value. @@ -211,6 +219,8 @@ def SetAllExtensions(message): extensions[pb2.optional_nested_message_extension].bb = 118 extensions[pb2.optional_foreign_message_extension].c = 119 extensions[pb2.optional_import_message_extension].d = 120 + extensions[pb2.optional_public_import_message_extension].e = 126 + extensions[pb2.optional_lazy_message_extension].bb = 127 extensions[pb2.optional_nested_enum_extension] = pb2.TestAllTypes.BAZ extensions[pb2.optional_nested_enum_extension] = pb2.TestAllTypes.BAZ @@ -244,6 +254,7 @@ def SetAllExtensions(message): extensions[pb2.repeated_nested_message_extension].add().bb = 218 extensions[pb2.repeated_foreign_message_extension].add().c = 219 extensions[pb2.repeated_import_message_extension].add().d = 220 + extensions[pb2.repeated_lazy_message_extension].add().bb = 227 extensions[pb2.repeated_nested_enum_extension].append(pb2.TestAllTypes.BAR) extensions[pb2.repeated_foreign_enum_extension].append(pb2.FOREIGN_BAR) @@ -273,6 +284,7 @@ def SetAllExtensions(message): extensions[pb2.repeated_nested_message_extension].add().bb = 318 extensions[pb2.repeated_foreign_message_extension].add().c = 319 extensions[pb2.repeated_import_message_extension].add().d = 320 + extensions[pb2.repeated_lazy_message_extension].add().bb = 327 extensions[pb2.repeated_nested_enum_extension].append(pb2.TestAllTypes.BAZ) extensions[pb2.repeated_foreign_enum_extension].append(pb2.FOREIGN_BAZ) @@ -407,6 +419,8 @@ def ExpectAllFieldsSet(test_case, message): test_case.assertEqual(118, message.optional_nested_message.bb) test_case.assertEqual(119, message.optional_foreign_message.c) test_case.assertEqual(120, message.optional_import_message.d) + test_case.assertEqual(126, message.optional_public_import_message.e) + test_case.assertEqual(127, message.optional_lazy_message.bb) test_case.assertEqual(unittest_pb2.TestAllTypes.BAZ, message.optional_nested_enum) @@ -464,6 +478,7 @@ def ExpectAllFieldsSet(test_case, message): test_case.assertEqual(218, message.repeated_nested_message[0].bb) test_case.assertEqual(219, message.repeated_foreign_message[0].c) test_case.assertEqual(220, message.repeated_import_message[0].d) + test_case.assertEqual(227, message.repeated_lazy_message[0].bb) test_case.assertEqual(unittest_pb2.TestAllTypes.BAR, message.repeated_nested_enum[0]) @@ -492,6 +507,7 @@ def ExpectAllFieldsSet(test_case, message): test_case.assertEqual(318, message.repeated_nested_message[1].bb) test_case.assertEqual(319, message.repeated_foreign_message[1].c) test_case.assertEqual(320, message.repeated_import_message[1].d) + test_case.assertEqual(327, message.repeated_lazy_message[1].bb) test_case.assertEqual(unittest_pb2.TestAllTypes.BAZ, message.repeated_nested_enum[1]) diff --git a/cpp/thirdparty/protobuf-2.3.0/python/google/protobuf/internal/text_format_test.py b/cpp/thirdparty/protobuf-2.5.0/python/google/protobuf/internal/text_format_test.py similarity index 62% rename from cpp/thirdparty/protobuf-2.3.0/python/google/protobuf/internal/text_format_test.py rename to cpp/thirdparty/protobuf-2.5.0/python/google/protobuf/internal/text_format_test.py index e0991cb11..4b1b4f591 100755 --- a/cpp/thirdparty/protobuf-2.3.0/python/google/protobuf/internal/text_format_test.py +++ b/cpp/thirdparty/protobuf-2.5.0/python/google/protobuf/internal/text_format_test.py @@ -35,6 +35,7 @@ __author__ = 'kenton@google.com (Kenton Varda)' import difflib +import re import unittest from google.protobuf import text_format @@ -93,14 +94,37 @@ class TextFormatTest(unittest.TestCase): ' }\n' '}\n') + def testPrintBadEnumValue(self): + message = unittest_pb2.TestAllTypes() + message.optional_nested_enum = 100 + message.optional_foreign_enum = 101 + message.optional_import_enum = 102 + self.CompareToGoldenText( + text_format.MessageToString(message), + 'optional_nested_enum: 100\n' + 'optional_foreign_enum: 101\n' + 'optional_import_enum: 102\n') + + def testPrintBadEnumValueExtensions(self): + message = unittest_pb2.TestAllExtensions() + message.Extensions[unittest_pb2.optional_nested_enum_extension] = 100 + message.Extensions[unittest_pb2.optional_foreign_enum_extension] = 101 + message.Extensions[unittest_pb2.optional_import_enum_extension] = 102 + self.CompareToGoldenText( + text_format.MessageToString(message), + '[protobuf_unittest.optional_nested_enum_extension]: 100\n' + '[protobuf_unittest.optional_foreign_enum_extension]: 101\n' + '[protobuf_unittest.optional_import_enum_extension]: 102\n') + def testPrintExotic(self): message = unittest_pb2.TestAllTypes() - message.repeated_int64.append(-9223372036854775808); - message.repeated_uint64.append(18446744073709551615); - message.repeated_double.append(123.456); - message.repeated_double.append(1.23e22); - message.repeated_double.append(1.23e-18); - message.repeated_string.append('\000\001\a\b\f\n\r\t\v\\\'\"'); + message.repeated_int64.append(-9223372036854775808) + message.repeated_uint64.append(18446744073709551615) + message.repeated_double.append(123.456) + message.repeated_double.append(1.23e22) + message.repeated_double.append(1.23e-18) + message.repeated_string.append('\000\001\a\b\f\n\r\t\v\\\'"') + message.repeated_string.append(u'\u00fc\ua71f') self.CompareToGoldenText( self.RemoveRedundantZeros(text_format.MessageToString(message)), 'repeated_int64: -9223372036854775808\n' @@ -109,7 +133,106 @@ class TextFormatTest(unittest.TestCase): 'repeated_double: 1.23e+22\n' 'repeated_double: 1.23e-18\n' 'repeated_string: ' - '\"\\000\\001\\007\\010\\014\\n\\r\\t\\013\\\\\\\'\\\"\"\n') + '"\\000\\001\\007\\010\\014\\n\\r\\t\\013\\\\\\\'\\""\n' + 'repeated_string: "\\303\\274\\352\\234\\237"\n') + + def testPrintNestedMessageAsOneLine(self): + message = unittest_pb2.TestAllTypes() + msg = message.repeated_nested_message.add() + msg.bb = 42; + self.CompareToGoldenText( + text_format.MessageToString(message, as_one_line=True), + 'repeated_nested_message { bb: 42 }') + + def testPrintRepeatedFieldsAsOneLine(self): + message = unittest_pb2.TestAllTypes() + message.repeated_int32.append(1) + message.repeated_int32.append(1) + message.repeated_int32.append(3) + message.repeated_string.append("Google") + message.repeated_string.append("Zurich") + self.CompareToGoldenText( + text_format.MessageToString(message, as_one_line=True), + 'repeated_int32: 1 repeated_int32: 1 repeated_int32: 3 ' + 'repeated_string: "Google" repeated_string: "Zurich"') + + def testPrintNestedNewLineInStringAsOneLine(self): + message = unittest_pb2.TestAllTypes() + message.optional_string = "a\nnew\nline" + self.CompareToGoldenText( + text_format.MessageToString(message, as_one_line=True), + 'optional_string: "a\\nnew\\nline"') + + def testPrintMessageSetAsOneLine(self): + message = unittest_mset_pb2.TestMessageSetContainer() + ext1 = unittest_mset_pb2.TestMessageSetExtension1.message_set_extension + ext2 = unittest_mset_pb2.TestMessageSetExtension2.message_set_extension + message.message_set.Extensions[ext1].i = 23 + message.message_set.Extensions[ext2].str = 'foo' + self.CompareToGoldenText( + text_format.MessageToString(message, as_one_line=True), + 'message_set {' + ' [protobuf_unittest.TestMessageSetExtension1] {' + ' i: 23' + ' }' + ' [protobuf_unittest.TestMessageSetExtension2] {' + ' str: \"foo\"' + ' }' + ' }') + + def testPrintExoticAsOneLine(self): + message = unittest_pb2.TestAllTypes() + message.repeated_int64.append(-9223372036854775808) + message.repeated_uint64.append(18446744073709551615) + message.repeated_double.append(123.456) + message.repeated_double.append(1.23e22) + message.repeated_double.append(1.23e-18) + message.repeated_string.append('\000\001\a\b\f\n\r\t\v\\\'"') + message.repeated_string.append(u'\u00fc\ua71f') + self.CompareToGoldenText( + self.RemoveRedundantZeros( + text_format.MessageToString(message, as_one_line=True)), + 'repeated_int64: -9223372036854775808' + ' repeated_uint64: 18446744073709551615' + ' repeated_double: 123.456' + ' repeated_double: 1.23e+22' + ' repeated_double: 1.23e-18' + ' repeated_string: ' + '"\\000\\001\\007\\010\\014\\n\\r\\t\\013\\\\\\\'\\""' + ' repeated_string: "\\303\\274\\352\\234\\237"') + + def testRoundTripExoticAsOneLine(self): + message = unittest_pb2.TestAllTypes() + message.repeated_int64.append(-9223372036854775808) + message.repeated_uint64.append(18446744073709551615) + message.repeated_double.append(123.456) + message.repeated_double.append(1.23e22) + message.repeated_double.append(1.23e-18) + message.repeated_string.append('\000\001\a\b\f\n\r\t\v\\\'"') + message.repeated_string.append(u'\u00fc\ua71f') + + # Test as_utf8 = False. + wire_text = text_format.MessageToString( + message, as_one_line=True, as_utf8=False) + parsed_message = unittest_pb2.TestAllTypes() + text_format.Merge(wire_text, parsed_message) + self.assertEquals(message, parsed_message) + + # Test as_utf8 = True. + wire_text = text_format.MessageToString( + message, as_one_line=True, as_utf8=True) + parsed_message = unittest_pb2.TestAllTypes() + text_format.Merge(wire_text, parsed_message) + self.assertEquals(message, parsed_message) + + def testPrintRawUtf8String(self): + message = unittest_pb2.TestAllTypes() + message.repeated_string.append(u'\u00fc\ua71f') + text = text_format.MessageToString(message, as_utf8 = True) + self.CompareToGoldenText(text, 'repeated_string: "\303\274\352\234\237"\n') + parsed_message = unittest_pb2.TestAllTypes() + text_format.Merge(text, parsed_message) + self.assertEquals(message, parsed_message) def testMessageToString(self): message = unittest_pb2.ForeignMessage() @@ -119,8 +242,12 @@ class TextFormatTest(unittest.TestCase): def RemoveRedundantZeros(self, text): # Some platforms print 1e+5 as 1e+005. This is fine, but we need to remove # these zeros in order to match the golden file. - return text.replace('e+0','e+').replace('e+0','e+') \ + text = text.replace('e+0','e+').replace('e+0','e+') \ .replace('e-0','e-').replace('e-0','e-') + # Floating point fields are printed with .0 suffix even if they are + # actualy integer numbers. + text = re.compile('\.0$', re.MULTILINE).sub('', text) + return text def testMergeGolden(self): golden_text = '\n'.join(self.ReadGolden('text_format_unittest_data.txt')) @@ -191,8 +318,11 @@ class TextFormatTest(unittest.TestCase): 'repeated_double: 1.23e+22\n' 'repeated_double: 1.23e-18\n' 'repeated_string: \n' - '\"\\000\\001\\007\\010\\014\\n\\r\\t\\013\\\\\\\'\\\"\"\n' - 'repeated_string: "foo" \'corge\' "grault"') + '"\\000\\001\\007\\010\\014\\n\\r\\t\\013\\\\\\\'\\""\n' + 'repeated_string: "foo" \'corge\' "grault"\n' + 'repeated_string: "\\303\\274\\352\\234\\237"\n' + 'repeated_string: "\\xc3\\xbc"\n' + 'repeated_string: "\xc3\xbc"\n') text_format.Merge(text, message) self.assertEqual(-9223372036854775808, message.repeated_int64[0]) @@ -201,8 +331,30 @@ class TextFormatTest(unittest.TestCase): self.assertEqual(1.23e22, message.repeated_double[1]) self.assertEqual(1.23e-18, message.repeated_double[2]) self.assertEqual( - '\000\001\a\b\f\n\r\t\v\\\'\"', message.repeated_string[0]) + '\000\001\a\b\f\n\r\t\v\\\'"', message.repeated_string[0]) self.assertEqual('foocorgegrault', message.repeated_string[1]) + self.assertEqual(u'\u00fc\ua71f', message.repeated_string[2]) + self.assertEqual(u'\u00fc', message.repeated_string[3]) + + def testMergeEmptyText(self): + message = unittest_pb2.TestAllTypes() + text = '' + text_format.Merge(text, message) + self.assertEquals(unittest_pb2.TestAllTypes(), message) + + def testMergeInvalidUtf8(self): + message = unittest_pb2.TestAllTypes() + text = 'repeated_string: "\\xc3\\xc3"' + self.assertRaises(text_format.ParseError, text_format.Merge, text, message) + + def testMergeSingleWord(self): + message = unittest_pb2.TestAllTypes() + text = 'foo' + self.assertRaisesWithMessage( + text_format.ParseError, + ('1:1 : Message type "protobuf_unittest.TestAllTypes" has no field named ' + '"foo".'), + text_format.Merge, text, message) def testMergeUnknownField(self): message = unittest_pb2.TestAllTypes() @@ -269,6 +421,34 @@ class TextFormatTest(unittest.TestCase): 'has no value with number 100.'), text_format.Merge, text, message) + def testMergeBadIntValue(self): + message = unittest_pb2.TestAllTypes() + text = 'optional_int32: bork' + self.assertRaisesWithMessage( + text_format.ParseError, + ('1:17 : Couldn\'t parse integer: bork'), + text_format.Merge, text, message) + + def testMergeStringFieldUnescape(self): + message = unittest_pb2.TestAllTypes() + text = r'''repeated_string: "\xf\x62" + repeated_string: "\\xf\\x62" + repeated_string: "\\\xf\\\x62" + repeated_string: "\\\\xf\\\\x62" + repeated_string: "\\\\\xf\\\\\x62" + repeated_string: "\x5cx20"''' + text_format.Merge(text, message) + + SLASH = '\\' + self.assertEqual('\x0fb', message.repeated_string[0]) + self.assertEqual(SLASH + 'xf' + SLASH + 'x62', message.repeated_string[1]) + self.assertEqual(SLASH + '\x0f' + SLASH + 'b', message.repeated_string[2]) + self.assertEqual(SLASH + SLASH + 'xf' + SLASH + SLASH + 'x62', + message.repeated_string[3]) + self.assertEqual(SLASH + SLASH + '\x0f' + SLASH + SLASH + 'b', + message.repeated_string[4]) + self.assertEqual(SLASH + 'x20', message.repeated_string[5]) + def assertRaisesWithMessage(self, e_class, e, func, *args, **kwargs): """Same as assertRaises, but also compares the exception message.""" if hasattr(e_class, '__name__'): @@ -278,7 +458,7 @@ class TextFormatTest(unittest.TestCase): try: func(*args, **kwargs) - except e_class, expr: + except e_class as expr: if str(expr) != e: msg = '%s raised, but with wrong message: "%s" instead of "%s"' raise self.failureException(msg % (exc_name, @@ -297,7 +477,8 @@ class TokenizerTest(unittest.TestCase): 'identifiER_4 : 1.1e+2 ID5:-0.23 ID6:\'aaaa\\\'bbbb\'\n' 'ID7 : "aa\\"bb"\n\n\n\n ID8: {A:inf B:-inf C:true D:false}\n' 'ID9: 22 ID10: -111111111111111111 ID11: -22\n' - 'ID12: 2222222222222222222') + 'ID12: 2222222222222222222 ID13: 1.23456f ID14: 1.2e+2f ' + 'false_bool: 0 true_BOOL:t \n true_bool1: 1 false_BOOL1:f ' ) tokenizer = text_format._Tokenizer(text) methods = [(tokenizer.ConsumeIdentifier, 'identifier1'), ':', @@ -325,10 +506,10 @@ class TokenizerTest(unittest.TestCase): '{', (tokenizer.ConsumeIdentifier, 'A'), ':', - (tokenizer.ConsumeFloat, text_format._INFINITY), + (tokenizer.ConsumeFloat, float('inf')), (tokenizer.ConsumeIdentifier, 'B'), ':', - (tokenizer.ConsumeFloat, -text_format._INFINITY), + (tokenizer.ConsumeFloat, -float('inf')), (tokenizer.ConsumeIdentifier, 'C'), ':', (tokenizer.ConsumeBool, True), @@ -347,7 +528,25 @@ class TokenizerTest(unittest.TestCase): (tokenizer.ConsumeInt32, -22), (tokenizer.ConsumeIdentifier, 'ID12'), ':', - (tokenizer.ConsumeUint64, 2222222222222222222)] + (tokenizer.ConsumeUint64, 2222222222222222222), + (tokenizer.ConsumeIdentifier, 'ID13'), + ':', + (tokenizer.ConsumeFloat, 1.23456), + (tokenizer.ConsumeIdentifier, 'ID14'), + ':', + (tokenizer.ConsumeFloat, 1.2e+2), + (tokenizer.ConsumeIdentifier, 'false_bool'), + ':', + (tokenizer.ConsumeBool, False), + (tokenizer.ConsumeIdentifier, 'true_BOOL'), + ':', + (tokenizer.ConsumeBool, True), + (tokenizer.ConsumeIdentifier, 'true_bool1'), + ':', + (tokenizer.ConsumeBool, True), + (tokenizer.ConsumeIdentifier, 'false_BOOL1'), + ':', + (tokenizer.ConsumeBool, False)] i = 0 while not tokenizer.AtEnd(): @@ -413,16 +612,6 @@ class TokenizerTest(unittest.TestCase): tokenizer = text_format._Tokenizer(text) self.assertRaises(text_format.ParseError, tokenizer.ConsumeBool) - def testInfNan(self): - # Make sure our infinity and NaN definitions are sound. - self.assertEquals(float, type(text_format._INFINITY)) - self.assertEquals(float, type(text_format._NAN)) - self.assertTrue(text_format._NAN != text_format._NAN) - - inf_times_zero = text_format._INFINITY * 0 - self.assertTrue(inf_times_zero != inf_times_zero) - self.assertTrue(text_format._INFINITY > 0) - if __name__ == '__main__': unittest.main() diff --git a/cpp/thirdparty/protobuf-2.3.0/python/google/protobuf/internal/type_checkers.py b/cpp/thirdparty/protobuf-2.5.0/python/google/protobuf/internal/type_checkers.py similarity index 100% rename from cpp/thirdparty/protobuf-2.3.0/python/google/protobuf/internal/type_checkers.py rename to cpp/thirdparty/protobuf-2.5.0/python/google/protobuf/internal/type_checkers.py diff --git a/cpp/thirdparty/protobuf-2.5.0/python/google/protobuf/internal/unknown_fields_test.py b/cpp/thirdparty/protobuf-2.5.0/python/google/protobuf/internal/unknown_fields_test.py new file mode 100755 index 000000000..84984b40f --- /dev/null +++ b/cpp/thirdparty/protobuf-2.5.0/python/google/protobuf/internal/unknown_fields_test.py @@ -0,0 +1,170 @@ +#! /usr/bin/python +# -*- coding: utf-8 -*- +# +# Protocol Buffers - Google's data interchange format +# Copyright 2008 Google Inc. All rights reserved. +# http://code.google.com/p/protobuf/ +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions are +# met: +# +# * Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# * Redistributions in binary form must reproduce the above +# copyright notice, this list of conditions and the following disclaimer +# in the documentation and/or other materials provided with the +# distribution. +# * Neither the name of Google Inc. nor the names of its +# contributors may be used to endorse or promote products derived from +# this software without specific prior written permission. +# +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +"""Test for preservation of unknown fields in the pure Python implementation.""" + +__author__ = 'bohdank@google.com (Bohdan Koval)' + +import unittest +from google.protobuf import unittest_mset_pb2 +from google.protobuf import unittest_pb2 +from google.protobuf.internal import encoder +from google.protobuf.internal import test_util +from google.protobuf.internal import type_checkers + + +class UnknownFieldsTest(unittest.TestCase): + + def setUp(self): + self.descriptor = unittest_pb2.TestAllTypes.DESCRIPTOR + self.all_fields = unittest_pb2.TestAllTypes() + test_util.SetAllFields(self.all_fields) + self.all_fields_data = self.all_fields.SerializeToString() + self.empty_message = unittest_pb2.TestEmptyMessage() + self.empty_message.ParseFromString(self.all_fields_data) + self.unknown_fields = self.empty_message._unknown_fields + + def GetField(self, name): + field_descriptor = self.descriptor.fields_by_name[name] + wire_type = type_checkers.FIELD_TYPE_TO_WIRE_TYPE[field_descriptor.type] + field_tag = encoder.TagBytes(field_descriptor.number, wire_type) + for tag_bytes, value in self.unknown_fields: + if tag_bytes == field_tag: + decoder = unittest_pb2.TestAllTypes._decoders_by_tag[tag_bytes] + result_dict = {} + decoder(value, 0, len(value), self.all_fields, result_dict) + return result_dict[field_descriptor] + + def testVarint(self): + value = self.GetField('optional_int32') + self.assertEqual(self.all_fields.optional_int32, value) + + def testFixed32(self): + value = self.GetField('optional_fixed32') + self.assertEqual(self.all_fields.optional_fixed32, value) + + def testFixed64(self): + value = self.GetField('optional_fixed64') + self.assertEqual(self.all_fields.optional_fixed64, value) + + def testLengthDelimited(self): + value = self.GetField('optional_string') + self.assertEqual(self.all_fields.optional_string, value) + + def testGroup(self): + value = self.GetField('optionalgroup') + self.assertEqual(self.all_fields.optionalgroup, value) + + def testSerialize(self): + data = self.empty_message.SerializeToString() + + # Don't use assertEqual because we don't want to dump raw binary data to + # stdout. + self.assertTrue(data == self.all_fields_data) + + def testCopyFrom(self): + message = unittest_pb2.TestEmptyMessage() + message.CopyFrom(self.empty_message) + self.assertEqual(self.unknown_fields, message._unknown_fields) + + def testMergeFrom(self): + message = unittest_pb2.TestAllTypes() + message.optional_int32 = 1 + message.optional_uint32 = 2 + source = unittest_pb2.TestEmptyMessage() + source.ParseFromString(message.SerializeToString()) + + message.ClearField('optional_int32') + message.optional_int64 = 3 + message.optional_uint32 = 4 + destination = unittest_pb2.TestEmptyMessage() + destination.ParseFromString(message.SerializeToString()) + unknown_fields = destination._unknown_fields[:] + + destination.MergeFrom(source) + self.assertEqual(unknown_fields + source._unknown_fields, + destination._unknown_fields) + + def testClear(self): + self.empty_message.Clear() + self.assertEqual(0, len(self.empty_message._unknown_fields)) + + def testByteSize(self): + self.assertEqual(self.all_fields.ByteSize(), self.empty_message.ByteSize()) + + def testUnknownExtensions(self): + message = unittest_pb2.TestEmptyMessageWithExtensions() + message.ParseFromString(self.all_fields_data) + self.assertEqual(self.empty_message._unknown_fields, + message._unknown_fields) + + def testListFields(self): + # Make sure ListFields doesn't return unknown fields. + self.assertEqual(0, len(self.empty_message.ListFields())) + + def testSerializeMessageSetWireFormatUnknownExtension(self): + # Create a message using the message set wire format with an unknown + # message. + raw = unittest_mset_pb2.RawMessageSet() + + # Add an unknown extension. + item = raw.item.add() + item.type_id = 1545009 + message1 = unittest_mset_pb2.TestMessageSetExtension1() + message1.i = 12345 + item.message = message1.SerializeToString() + + serialized = raw.SerializeToString() + + # Parse message using the message set wire format. + proto = unittest_mset_pb2.TestMessageSet() + proto.MergeFromString(serialized) + + # Verify that the unknown extension is serialized unchanged + reserialized = proto.SerializeToString() + new_raw = unittest_mset_pb2.RawMessageSet() + new_raw.MergeFromString(reserialized) + self.assertEqual(raw, new_raw) + + def testEquals(self): + message = unittest_pb2.TestEmptyMessage() + message.ParseFromString(self.all_fields_data) + self.assertEqual(self.empty_message, message) + + self.all_fields.ClearField('optional_string') + message.ParseFromString(self.all_fields.SerializeToString()) + self.assertNotEqual(self.empty_message, message) + + +if __name__ == '__main__': + unittest.main() diff --git a/cpp/thirdparty/protobuf-2.3.0/python/google/protobuf/internal/wire_format.py b/cpp/thirdparty/protobuf-2.5.0/python/google/protobuf/internal/wire_format.py similarity index 100% rename from cpp/thirdparty/protobuf-2.3.0/python/google/protobuf/internal/wire_format.py rename to cpp/thirdparty/protobuf-2.5.0/python/google/protobuf/internal/wire_format.py diff --git a/cpp/thirdparty/protobuf-2.3.0/python/google/protobuf/internal/wire_format_test.py b/cpp/thirdparty/protobuf-2.5.0/python/google/protobuf/internal/wire_format_test.py similarity index 100% rename from cpp/thirdparty/protobuf-2.3.0/python/google/protobuf/internal/wire_format_test.py rename to cpp/thirdparty/protobuf-2.5.0/python/google/protobuf/internal/wire_format_test.py diff --git a/cpp/thirdparty/protobuf-2.3.0/python/google/protobuf/message.py b/cpp/thirdparty/protobuf-2.5.0/python/google/protobuf/message.py similarity index 91% rename from cpp/thirdparty/protobuf-2.3.0/python/google/protobuf/message.py rename to cpp/thirdparty/protobuf-2.5.0/python/google/protobuf/message.py index f8398474f..6ec2f8beb 100755 --- a/cpp/thirdparty/protobuf-2.3.0/python/google/protobuf/message.py +++ b/cpp/thirdparty/protobuf-2.5.0/python/google/protobuf/message.py @@ -67,14 +67,28 @@ class Message(object): DESCRIPTOR = None + def __deepcopy__(self, memo=None): + clone = type(self)() + clone.MergeFrom(self) + return clone + def __eq__(self, other_msg): + """Recursively compares two messages by value and structure.""" raise NotImplementedError def __ne__(self, other_msg): # Can't just say self != other_msg, since that would infinitely recurse. :) return not self == other_msg + def __hash__(self): + raise TypeError('unhashable object') + def __str__(self): + """Outputs a human-readable representation of the message.""" + raise NotImplementedError + + def __unicode__(self): + """Outputs a human-readable representation of the message.""" raise NotImplementedError def MergeFrom(self, other_msg): @@ -215,6 +229,9 @@ class Message(object): raise NotImplementedError def HasField(self, field_name): + """Checks if a certain field is set for the message. Note if the + field_name is not defined in the message descriptor, ValueError will be + raised.""" raise NotImplementedError def ClearField(self, field_name): @@ -252,3 +269,12 @@ class Message(object): via a previous _SetListener() call. """ raise NotImplementedError + + def __getstate__(self): + """Support the pickle protocol.""" + return dict(serialized=self.SerializePartialToString()) + + def __setstate__(self, state): + """Support the pickle protocol.""" + self.__init__() + self.ParseFromString(state['serialized']) diff --git a/cpp/thirdparty/protobuf-2.5.0/python/google/protobuf/message_factory.py b/cpp/thirdparty/protobuf-2.5.0/python/google/protobuf/message_factory.py new file mode 100644 index 000000000..36e2fef0e --- /dev/null +++ b/cpp/thirdparty/protobuf-2.5.0/python/google/protobuf/message_factory.py @@ -0,0 +1,113 @@ +# Protocol Buffers - Google's data interchange format +# Copyright 2008 Google Inc. All rights reserved. +# http://code.google.com/p/protobuf/ +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions are +# met: +# +# * Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# * Redistributions in binary form must reproduce the above +# copyright notice, this list of conditions and the following disclaimer +# in the documentation and/or other materials provided with the +# distribution. +# * Neither the name of Google Inc. nor the names of its +# contributors may be used to endorse or promote products derived from +# this software without specific prior written permission. +# +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +"""Provides a factory class for generating dynamic messages.""" + +__author__ = 'matthewtoia@google.com (Matt Toia)' + +from google.protobuf import descriptor_database +from google.protobuf import descriptor_pool +from google.protobuf import message +from google.protobuf import reflection + + +class MessageFactory(object): + """Factory for creating Proto2 messages from descriptors in a pool.""" + + def __init__(self): + """Initializes a new factory.""" + self._classes = {} + + def GetPrototype(self, descriptor): + """Builds a proto2 message class based on the passed in descriptor. + + Passing a descriptor with a fully qualified name matching a previous + invocation will cause the same class to be returned. + + Args: + descriptor: The descriptor to build from. + + Returns: + A class describing the passed in descriptor. + """ + + if descriptor.full_name not in self._classes: + result_class = reflection.GeneratedProtocolMessageType( + descriptor.name.encode('ascii', 'ignore'), + (message.Message,), + {'DESCRIPTOR': descriptor}) + self._classes[descriptor.full_name] = result_class + for field in descriptor.fields: + if field.message_type: + self.GetPrototype(field.message_type) + return self._classes[descriptor.full_name] + + +_DB = descriptor_database.DescriptorDatabase() +_POOL = descriptor_pool.DescriptorPool(_DB) +_FACTORY = MessageFactory() + + +def GetMessages(file_protos): + """Builds a dictionary of all the messages available in a set of files. + + Args: + file_protos: A sequence of file protos to build messages out of. + + Returns: + A dictionary containing all the message types in the files mapping the + fully qualified name to a Message subclass for the descriptor. + """ + + result = {} + for file_proto in file_protos: + _DB.Add(file_proto) + for file_proto in file_protos: + for desc in _GetAllDescriptors(file_proto.message_type, file_proto.package): + result[desc.full_name] = _FACTORY.GetPrototype(desc) + return result + + +def _GetAllDescriptors(desc_protos, package): + """Gets all levels of nested message types as a flattened list of descriptors. + + Args: + desc_protos: The descriptor protos to process. + package: The package where the protos are defined. + + Yields: + Each message descriptor for each nested type. + """ + + for desc_proto in desc_protos: + name = '.'.join((package, desc_proto.name)) + yield _POOL.FindMessageTypeByName(name) + for nested_desc in _GetAllDescriptors(desc_proto.nested_type, name): + yield nested_desc diff --git a/cpp/thirdparty/protobuf-2.5.0/python/google/protobuf/pyext/python-proto2.cc b/cpp/thirdparty/protobuf-2.5.0/python/google/protobuf/pyext/python-proto2.cc new file mode 100644 index 000000000..eebb752b7 --- /dev/null +++ b/cpp/thirdparty/protobuf-2.5.0/python/google/protobuf/pyext/python-proto2.cc @@ -0,0 +1,1717 @@ +// Protocol Buffers - Google's data interchange format +// Copyright 2008 Google Inc. All rights reserved. +// http://code.google.com/p/protobuf/ +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +// Author: petar@google.com (Petar Petrov) + +#include +#include +#include +#include + +#include +#include +#include +#include +#include +#include +#include +#include + +/* Is 64bit */ +#define IS_64BIT (SIZEOF_LONG == 8) + +#define FIELD_BELONGS_TO_MESSAGE(field_descriptor, message) \ + ((message)->GetDescriptor() == (field_descriptor)->containing_type()) + +#define FIELD_IS_REPEATED(field_descriptor) \ + ((field_descriptor)->label() == google::protobuf::FieldDescriptor::LABEL_REPEATED) + +#define GOOGLE_CHECK_GET_INT32(arg, value) \ + int32 value; \ + if (!CheckAndGetInteger(arg, &value, kint32min_py, kint32max_py)) { \ + return NULL; \ + } + +#define GOOGLE_CHECK_GET_INT64(arg, value) \ + int64 value; \ + if (!CheckAndGetInteger(arg, &value, kint64min_py, kint64max_py)) { \ + return NULL; \ + } + +#define GOOGLE_CHECK_GET_UINT32(arg, value) \ + uint32 value; \ + if (!CheckAndGetInteger(arg, &value, kPythonZero, kuint32max_py)) { \ + return NULL; \ + } + +#define GOOGLE_CHECK_GET_UINT64(arg, value) \ + uint64 value; \ + if (!CheckAndGetInteger(arg, &value, kPythonZero, kuint64max_py)) { \ + return NULL; \ + } + +#define GOOGLE_CHECK_GET_FLOAT(arg, value) \ + float value; \ + if (!CheckAndGetFloat(arg, &value)) { \ + return NULL; \ + } \ + +#define GOOGLE_CHECK_GET_DOUBLE(arg, value) \ + double value; \ + if (!CheckAndGetDouble(arg, &value)) { \ + return NULL; \ + } + +#define GOOGLE_CHECK_GET_BOOL(arg, value) \ + bool value; \ + if (!CheckAndGetBool(arg, &value)) { \ + return NULL; \ + } + +#define C(str) const_cast(str) + +// --- Globals: + +// Constants used for integer type range checking. +static PyObject* kPythonZero; +static PyObject* kint32min_py; +static PyObject* kint32max_py; +static PyObject* kuint32max_py; +static PyObject* kint64min_py; +static PyObject* kint64max_py; +static PyObject* kuint64max_py; + +namespace google { +namespace protobuf { +namespace python { + +// --- Support Routines: + +static void AddConstants(PyObject* module) { + struct NameValue { + char* name; + int32 value; + } constants[] = { + // Labels: + {"LABEL_OPTIONAL", google::protobuf::FieldDescriptor::LABEL_OPTIONAL}, + {"LABEL_REQUIRED", google::protobuf::FieldDescriptor::LABEL_REQUIRED}, + {"LABEL_REPEATED", google::protobuf::FieldDescriptor::LABEL_REPEATED}, + // CPP types: + {"CPPTYPE_MESSAGE", google::protobuf::FieldDescriptor::CPPTYPE_MESSAGE}, + // Field Types: + {"TYPE_MESSAGE", google::protobuf::FieldDescriptor::TYPE_MESSAGE}, + // End. + {NULL, 0} + }; + + for (NameValue* constant = constants; + constant->name != NULL; constant++) { + PyModule_AddIntConstant(module, constant->name, constant->value); + } +} + +// --- CMessage Custom Type: + +// ------ Type Forward Declaration: + +struct CMessage; +struct CMessage_Type; + +static void CMessageDealloc(CMessage* self); +static int CMessageInit(CMessage* self, PyObject *args, PyObject *kwds); +static PyObject* CMessageStr(CMessage* self); + +static PyObject* CMessage_AddMessage(CMessage* self, PyObject* args); +static PyObject* CMessage_AddRepeatedScalar(CMessage* self, PyObject* args); +static PyObject* CMessage_AssignRepeatedScalar(CMessage* self, PyObject* args); +static PyObject* CMessage_ByteSize(CMessage* self, PyObject* args); +static PyObject* CMessage_Clear(CMessage* self, PyObject* args); +static PyObject* CMessage_ClearField(CMessage* self, PyObject* args); +static PyObject* CMessage_ClearFieldByDescriptor( + CMessage* self, PyObject* args); +static PyObject* CMessage_CopyFrom(CMessage* self, PyObject* args); +static PyObject* CMessage_DebugString(CMessage* self, PyObject* args); +static PyObject* CMessage_DeleteRepeatedField(CMessage* self, PyObject* args); +static PyObject* CMessage_Equals(CMessage* self, PyObject* args); +static PyObject* CMessage_FieldLength(CMessage* self, PyObject* args); +static PyObject* CMessage_FindInitializationErrors(CMessage* self); +static PyObject* CMessage_GetRepeatedMessage(CMessage* self, PyObject* args); +static PyObject* CMessage_GetRepeatedScalar(CMessage* self, PyObject* args); +static PyObject* CMessage_GetScalar(CMessage* self, PyObject* args); +static PyObject* CMessage_HasField(CMessage* self, PyObject* args); +static PyObject* CMessage_HasFieldByDescriptor(CMessage* self, PyObject* args); +static PyObject* CMessage_IsInitialized(CMessage* self, PyObject* args); +static PyObject* CMessage_ListFields(CMessage* self, PyObject* args); +static PyObject* CMessage_MergeFrom(CMessage* self, PyObject* args); +static PyObject* CMessage_MergeFromString(CMessage* self, PyObject* args); +static PyObject* CMessage_MutableMessage(CMessage* self, PyObject* args); +static PyObject* CMessage_NewSubMessage(CMessage* self, PyObject* args); +static PyObject* CMessage_SetScalar(CMessage* self, PyObject* args); +static PyObject* CMessage_SerializePartialToString( + CMessage* self, PyObject* args); +static PyObject* CMessage_SerializeToString(CMessage* self, PyObject* args); +static PyObject* CMessage_SetInParent(CMessage* self, PyObject* args); +static PyObject* CMessage_SwapRepeatedFieldElements( + CMessage* self, PyObject* args); + +// ------ Object Definition: + +typedef struct CMessage { + PyObject_HEAD + + struct CMessage* parent; // NULL if wasn't created from another message. + CFieldDescriptor* parent_field; + const char* full_name; + google::protobuf::Message* message; + bool free_message; + bool read_only; +} CMessage; + +// ------ Method Table: + +#define CMETHOD(name, args, doc) \ + { C(#name), (PyCFunction)CMessage_##name, args, C(doc) } +static PyMethodDef CMessageMethods[] = { + CMETHOD(AddMessage, METH_O, + "Adds a new message to a repeated composite field."), + CMETHOD(AddRepeatedScalar, METH_VARARGS, + "Adds a scalar to a repeated scalar field."), + CMETHOD(AssignRepeatedScalar, METH_VARARGS, + "Clears and sets the values of a repeated scalar field."), + CMETHOD(ByteSize, METH_NOARGS, + "Returns the size of the message in bytes."), + CMETHOD(Clear, METH_O, + "Clears a protocol message."), + CMETHOD(ClearField, METH_VARARGS, + "Clears a protocol message field by name."), + CMETHOD(ClearFieldByDescriptor, METH_O, + "Clears a protocol message field by descriptor."), + CMETHOD(CopyFrom, METH_O, + "Copies a protocol message into the current message."), + CMETHOD(DebugString, METH_NOARGS, + "Returns the debug string of a protocol message."), + CMETHOD(DeleteRepeatedField, METH_VARARGS, + "Deletes a slice of values from a repeated field."), + CMETHOD(Equals, METH_O, + "Checks if two protocol messages are equal (by identity)."), + CMETHOD(FieldLength, METH_O, + "Returns the number of elements in a repeated field."), + CMETHOD(FindInitializationErrors, METH_NOARGS, + "Returns the initialization errors of a message."), + CMETHOD(GetRepeatedMessage, METH_VARARGS, + "Returns a message from a repeated composite field."), + CMETHOD(GetRepeatedScalar, METH_VARARGS, + "Returns a scalar value from a repeated scalar field."), + CMETHOD(GetScalar, METH_O, + "Returns the scalar value of a field."), + CMETHOD(HasField, METH_O, + "Checks if a message field is set."), + CMETHOD(HasFieldByDescriptor, METH_O, + "Checks if a message field is set by given its descriptor"), + CMETHOD(IsInitialized, METH_NOARGS, + "Checks if all required fields of a protocol message are set."), + CMETHOD(ListFields, METH_NOARGS, + "Lists all set fields of a message."), + CMETHOD(MergeFrom, METH_O, + "Merges a protocol message into the current message."), + CMETHOD(MergeFromString, METH_O, + "Merges a serialized message into the current message."), + CMETHOD(MutableMessage, METH_O, + "Returns a new instance of a nested protocol message."), + CMETHOD(NewSubMessage, METH_O, + "Creates and returns a python message given the descriptor of a " + "composite field of the current message."), + CMETHOD(SetScalar, METH_VARARGS, + "Sets the value of a singular scalar field."), + CMETHOD(SerializePartialToString, METH_VARARGS, + "Serializes the message to a string, even if it isn't initialized."), + CMETHOD(SerializeToString, METH_NOARGS, + "Serializes the message to a string, only for initialized messages."), + CMETHOD(SetInParent, METH_NOARGS, + "Sets the has bit of the given field in its parent message."), + CMETHOD(SwapRepeatedFieldElements, METH_VARARGS, + "Swaps the elements in two positions in a repeated field."), + { NULL, NULL } +}; +#undef CMETHOD + +static PyMemberDef CMessageMembers[] = { + { C("full_name"), T_STRING, offsetof(CMessage, full_name), 0, "Full name" }, + { NULL } +}; + +// ------ Type Definition: + +// The definition for the type object that captures the type of CMessage +// in Python. +PyTypeObject CMessage_Type = { + PyObject_HEAD_INIT(&PyType_Type) + 0, + C("google.protobuf.internal." + "_net_proto2___python." + "CMessage"), // tp_name + sizeof(CMessage), // tp_basicsize + 0, // tp_itemsize + (destructor)CMessageDealloc, // tp_dealloc + 0, // tp_print + 0, // tp_getattr + 0, // tp_setattr + 0, // tp_compare + 0, // tp_repr + 0, // tp_as_number + 0, // tp_as_sequence + 0, // tp_as_mapping + 0, // tp_hash + 0, // tp_call + (reprfunc)CMessageStr, // tp_str + 0, // tp_getattro + 0, // tp_setattro + 0, // tp_as_buffer + Py_TPFLAGS_DEFAULT, // tp_flags + C("A ProtocolMessage"), // tp_doc + 0, // tp_traverse + 0, // tp_clear + 0, // tp_richcompare + 0, // tp_weaklistoffset + 0, // tp_iter + 0, // tp_iternext + CMessageMethods, // tp_methods + CMessageMembers, // tp_members + 0, // tp_getset + 0, // tp_base + 0, // tp_dict + 0, // tp_descr_get + 0, // tp_descr_set + 0, // tp_dictoffset + (initproc)CMessageInit, // tp_init + PyType_GenericAlloc, // tp_alloc + PyType_GenericNew, // tp_new + PyObject_Del, // tp_free +}; + +// ------ Helper Functions: + +static void FormatTypeError(PyObject* arg, char* expected_types) { + PyObject* repr = PyObject_Repr(arg); + PyErr_Format(PyExc_TypeError, + "%.100s has type %.100s, but expected one of: %s", + PyString_AS_STRING(repr), + arg->ob_type->tp_name, + expected_types); + Py_DECREF(repr); +} + +template +static bool CheckAndGetInteger( + PyObject* arg, T* value, PyObject* min, PyObject* max) { + bool is_long = PyLong_Check(arg); + if (!PyInt_Check(arg) && !is_long) { + FormatTypeError(arg, "int, long"); + return false; + } + + if (PyObject_Compare(min, arg) > 0 || PyObject_Compare(max, arg) < 0) { + PyObject* s = PyObject_Str(arg); + PyErr_Format(PyExc_ValueError, + "Value out of range: %s", + PyString_AS_STRING(s)); + Py_DECREF(s); + return false; + } + if (is_long) { + if (min == kPythonZero) { + *value = static_cast(PyLong_AsUnsignedLongLong(arg)); + } else { + *value = static_cast(PyLong_AsLongLong(arg)); + } + } else { + *value = static_cast(PyInt_AsLong(arg)); + } + return true; +} + +static bool CheckAndGetDouble(PyObject* arg, double* value) { + if (!PyInt_Check(arg) && !PyLong_Check(arg) && + !PyFloat_Check(arg)) { + FormatTypeError(arg, "int, long, float"); + return false; + } + *value = PyFloat_AsDouble(arg); + return true; +} + +static bool CheckAndGetFloat(PyObject* arg, float* value) { + double double_value; + if (!CheckAndGetDouble(arg, &double_value)) { + return false; + } + *value = static_cast(double_value); + return true; +} + +static bool CheckAndGetBool(PyObject* arg, bool* value) { + if (!PyInt_Check(arg) && !PyBool_Check(arg) && !PyLong_Check(arg)) { + FormatTypeError(arg, "int, long, bool"); + return false; + } + *value = static_cast(PyInt_AsLong(arg)); + return true; +} + +google::protobuf::DynamicMessageFactory* global_message_factory = NULL; +static const google::protobuf::Message* CreateMessage(const char* message_type) { + string message_name(message_type); + const google::protobuf::Descriptor* descriptor = + GetDescriptorPool()->FindMessageTypeByName(message_name); + if (descriptor == NULL) { + return NULL; + } + return global_message_factory->GetPrototype(descriptor); +} + +static void ReleaseSubMessage(google::protobuf::Message* message, + const google::protobuf::FieldDescriptor* field_descriptor, + CMessage* child_cmessage) { + Message* released_message = message->GetReflection()->ReleaseMessage( + message, field_descriptor, global_message_factory); + GOOGLE_DCHECK(child_cmessage->message != NULL); + // ReleaseMessage will return NULL which differs from + // child_cmessage->message, if the field does not exist. In this case, + // the latter points to the default instance via a const_cast<>, so we + // have to reset it to a new mutable object since we are taking ownership. + if (released_message == NULL) { + const Message* prototype = global_message_factory->GetPrototype( + child_cmessage->message->GetDescriptor()); + GOOGLE_DCHECK(prototype != NULL); + child_cmessage->message = prototype->New(); + } + child_cmessage->parent = NULL; + child_cmessage->parent_field = NULL; + child_cmessage->free_message = true; + child_cmessage->read_only = false; +} + +static bool CheckAndSetString( + PyObject* arg, google::protobuf::Message* message, + const google::protobuf::FieldDescriptor* descriptor, + const google::protobuf::Reflection* reflection, + bool append, + int index) { + GOOGLE_DCHECK(descriptor->type() == google::protobuf::FieldDescriptor::TYPE_STRING || + descriptor->type() == google::protobuf::FieldDescriptor::TYPE_BYTES); + if (descriptor->type() == google::protobuf::FieldDescriptor::TYPE_STRING) { + if (!PyString_Check(arg) && !PyUnicode_Check(arg)) { + FormatTypeError(arg, "str, unicode"); + return false; + } + + if (PyString_Check(arg)) { + PyObject* unicode = PyUnicode_FromEncodedObject(arg, "ascii", NULL); + if (unicode == NULL) { + PyObject* repr = PyObject_Repr(arg); + PyErr_Format(PyExc_ValueError, + "%s has type str, but isn't in 7-bit ASCII " + "encoding. Non-ASCII strings must be converted to " + "unicode objects before being added.", + PyString_AS_STRING(repr)); + Py_DECREF(repr); + return false; + } else { + Py_DECREF(unicode); + } + } + } else if (!PyString_Check(arg)) { + FormatTypeError(arg, "str"); + return false; + } + + PyObject* encoded_string = NULL; + if (descriptor->type() == google::protobuf::FieldDescriptor::TYPE_STRING) { + if (PyString_Check(arg)) { + encoded_string = PyString_AsEncodedObject(arg, "utf-8", NULL); + } else { + encoded_string = PyUnicode_AsEncodedObject(arg, "utf-8", NULL); + } + } else { + // In this case field type is "bytes". + encoded_string = arg; + Py_INCREF(encoded_string); + } + + if (encoded_string == NULL) { + return false; + } + + char* value; + Py_ssize_t value_len; + if (PyString_AsStringAndSize(encoded_string, &value, &value_len) < 0) { + Py_DECREF(encoded_string); + return false; + } + + string value_string(value, value_len); + if (append) { + reflection->AddString(message, descriptor, value_string); + } else if (index < 0) { + reflection->SetString(message, descriptor, value_string); + } else { + reflection->SetRepeatedString(message, descriptor, index, value_string); + } + Py_DECREF(encoded_string); + return true; +} + +static PyObject* ToStringObject( + const google::protobuf::FieldDescriptor* descriptor, string value) { + if (descriptor->type() != google::protobuf::FieldDescriptor::TYPE_STRING) { + return PyString_FromStringAndSize(value.c_str(), value.length()); + } + + PyObject* result = PyUnicode_DecodeUTF8(value.c_str(), value.length(), NULL); + // If the string can't be decoded in UTF-8, just return a string object that + // contains the raw bytes. This can't happen if the value was assigned using + // the members of the Python message object, but can happen if the values were + // parsed from the wire (binary). + if (result == NULL) { + PyErr_Clear(); + result = PyString_FromStringAndSize(value.c_str(), value.length()); + } + return result; +} + +static void AssureWritable(CMessage* self) { + if (self == NULL || + self->parent == NULL || + self->parent_field == NULL) { + return; + } + + if (!self->read_only) { + return; + } + + AssureWritable(self->parent); + + google::protobuf::Message* message = self->parent->message; + const google::protobuf::Reflection* reflection = message->GetReflection(); + self->message = reflection->MutableMessage( + message, self->parent_field->descriptor, global_message_factory); + self->read_only = false; +} + +static PyObject* InternalGetScalar( + google::protobuf::Message* message, + const google::protobuf::FieldDescriptor* field_descriptor) { + const google::protobuf::Reflection* reflection = message->GetReflection(); + + if (!FIELD_BELONGS_TO_MESSAGE(field_descriptor, message)) { + PyErr_SetString( + PyExc_KeyError, "Field does not belong to message!"); + return NULL; + } + + PyObject* result = NULL; + switch (field_descriptor->cpp_type()) { + case google::protobuf::FieldDescriptor::CPPTYPE_INT32: { + int32 value = reflection->GetInt32(*message, field_descriptor); + result = PyInt_FromLong(value); + break; + } + case google::protobuf::FieldDescriptor::CPPTYPE_INT64: { + int64 value = reflection->GetInt64(*message, field_descriptor); +#if IS_64BIT + result = PyInt_FromLong(value); +#else + result = PyLong_FromLongLong(value); +#endif + break; + } + case google::protobuf::FieldDescriptor::CPPTYPE_UINT32: { + uint32 value = reflection->GetUInt32(*message, field_descriptor); +#if IS_64BIT + result = PyInt_FromLong(value); +#else + result = PyLong_FromLongLong(value); +#endif + break; + } + case google::protobuf::FieldDescriptor::CPPTYPE_UINT64: { + uint64 value = reflection->GetUInt64(*message, field_descriptor); +#if IS_64BIT + if (value <= static_cast(kint64max)) { + result = PyInt_FromLong(static_cast(value)); + } +#else + if (value <= static_cast(kint32max)) { + result = PyInt_FromLong(static_cast(value)); + } +#endif + else { // NOLINT + result = PyLong_FromUnsignedLongLong(value); + } + break; + } + case google::protobuf::FieldDescriptor::CPPTYPE_FLOAT: { + float value = reflection->GetFloat(*message, field_descriptor); + result = PyFloat_FromDouble(value); + break; + } + case google::protobuf::FieldDescriptor::CPPTYPE_DOUBLE: { + double value = reflection->GetDouble(*message, field_descriptor); + result = PyFloat_FromDouble(value); + break; + } + case google::protobuf::FieldDescriptor::CPPTYPE_BOOL: { + bool value = reflection->GetBool(*message, field_descriptor); + result = PyBool_FromLong(value); + break; + } + case google::protobuf::FieldDescriptor::CPPTYPE_STRING: { + string value = reflection->GetString(*message, field_descriptor); + result = ToStringObject(field_descriptor, value); + break; + } + case google::protobuf::FieldDescriptor::CPPTYPE_ENUM: { + if (!message->GetReflection()->HasField(*message, field_descriptor)) { + // Look for the value in the unknown fields. + google::protobuf::UnknownFieldSet* unknown_field_set = + message->GetReflection()->MutableUnknownFields(message); + for (int i = 0; i < unknown_field_set->field_count(); ++i) { + if (unknown_field_set->field(i).number() == + field_descriptor->number()) { + result = PyInt_FromLong(unknown_field_set->field(i).varint()); + break; + } + } + } + + if (result == NULL) { + const google::protobuf::EnumValueDescriptor* enum_value = + message->GetReflection()->GetEnum(*message, field_descriptor); + result = PyInt_FromLong(enum_value->number()); + } + break; + } + default: + PyErr_Format( + PyExc_SystemError, "Getting a value from a field of unknown type %d", + field_descriptor->cpp_type()); + } + + return result; +} + +static PyObject* InternalSetScalar( + google::protobuf::Message* message, const google::protobuf::FieldDescriptor* field_descriptor, + PyObject* arg) { + const google::protobuf::Reflection* reflection = message->GetReflection(); + + if (!FIELD_BELONGS_TO_MESSAGE(field_descriptor, message)) { + PyErr_SetString( + PyExc_KeyError, "Field does not belong to message!"); + return NULL; + } + + switch (field_descriptor->cpp_type()) { + case google::protobuf::FieldDescriptor::CPPTYPE_INT32: { + GOOGLE_CHECK_GET_INT32(arg, value); + reflection->SetInt32(message, field_descriptor, value); + break; + } + case google::protobuf::FieldDescriptor::CPPTYPE_INT64: { + GOOGLE_CHECK_GET_INT64(arg, value); + reflection->SetInt64(message, field_descriptor, value); + break; + } + case google::protobuf::FieldDescriptor::CPPTYPE_UINT32: { + GOOGLE_CHECK_GET_UINT32(arg, value); + reflection->SetUInt32(message, field_descriptor, value); + break; + } + case google::protobuf::FieldDescriptor::CPPTYPE_UINT64: { + GOOGLE_CHECK_GET_UINT64(arg, value); + reflection->SetUInt64(message, field_descriptor, value); + break; + } + case google::protobuf::FieldDescriptor::CPPTYPE_FLOAT: { + GOOGLE_CHECK_GET_FLOAT(arg, value); + reflection->SetFloat(message, field_descriptor, value); + break; + } + case google::protobuf::FieldDescriptor::CPPTYPE_DOUBLE: { + GOOGLE_CHECK_GET_DOUBLE(arg, value); + reflection->SetDouble(message, field_descriptor, value); + break; + } + case google::protobuf::FieldDescriptor::CPPTYPE_BOOL: { + GOOGLE_CHECK_GET_BOOL(arg, value); + reflection->SetBool(message, field_descriptor, value); + break; + } + case google::protobuf::FieldDescriptor::CPPTYPE_STRING: { + if (!CheckAndSetString( + arg, message, field_descriptor, reflection, false, -1)) { + return NULL; + } + break; + } + case google::protobuf::FieldDescriptor::CPPTYPE_ENUM: { + GOOGLE_CHECK_GET_INT32(arg, value); + const google::protobuf::EnumDescriptor* enum_descriptor = + field_descriptor->enum_type(); + const google::protobuf::EnumValueDescriptor* enum_value = + enum_descriptor->FindValueByNumber(value); + if (enum_value != NULL) { + reflection->SetEnum(message, field_descriptor, enum_value); + } else { + bool added = false; + // Add the value to the unknown fields. + google::protobuf::UnknownFieldSet* unknown_field_set = + message->GetReflection()->MutableUnknownFields(message); + for (int i = 0; i < unknown_field_set->field_count(); ++i) { + if (unknown_field_set->field(i).number() == + field_descriptor->number()) { + unknown_field_set->mutable_field(i)->set_varint(value); + added = true; + break; + } + } + + if (!added) { + unknown_field_set->AddVarint(field_descriptor->number(), value); + } + reflection->ClearField(message, field_descriptor); + } + break; + } + default: + PyErr_Format( + PyExc_SystemError, "Setting value to a field of unknown type %d", + field_descriptor->cpp_type()); + } + + Py_RETURN_NONE; +} + +static PyObject* InternalAddRepeatedScalar( + google::protobuf::Message* message, const google::protobuf::FieldDescriptor* field_descriptor, + PyObject* arg) { + + if (!FIELD_BELONGS_TO_MESSAGE(field_descriptor, message)) { + PyErr_SetString( + PyExc_KeyError, "Field does not belong to message!"); + return NULL; + } + + const google::protobuf::Reflection* reflection = message->GetReflection(); + switch (field_descriptor->cpp_type()) { + case google::protobuf::FieldDescriptor::CPPTYPE_INT32: { + GOOGLE_CHECK_GET_INT32(arg, value); + reflection->AddInt32(message, field_descriptor, value); + break; + } + case google::protobuf::FieldDescriptor::CPPTYPE_INT64: { + GOOGLE_CHECK_GET_INT64(arg, value); + reflection->AddInt64(message, field_descriptor, value); + break; + } + case google::protobuf::FieldDescriptor::CPPTYPE_UINT32: { + GOOGLE_CHECK_GET_UINT32(arg, value); + reflection->AddUInt32(message, field_descriptor, value); + break; + } + case google::protobuf::FieldDescriptor::CPPTYPE_UINT64: { + GOOGLE_CHECK_GET_UINT64(arg, value); + reflection->AddUInt64(message, field_descriptor, value); + break; + } + case google::protobuf::FieldDescriptor::CPPTYPE_FLOAT: { + GOOGLE_CHECK_GET_FLOAT(arg, value); + reflection->AddFloat(message, field_descriptor, value); + break; + } + case google::protobuf::FieldDescriptor::CPPTYPE_DOUBLE: { + GOOGLE_CHECK_GET_DOUBLE(arg, value); + reflection->AddDouble(message, field_descriptor, value); + break; + } + case google::protobuf::FieldDescriptor::CPPTYPE_BOOL: { + GOOGLE_CHECK_GET_BOOL(arg, value); + reflection->AddBool(message, field_descriptor, value); + break; + } + case google::protobuf::FieldDescriptor::CPPTYPE_STRING: { + if (!CheckAndSetString( + arg, message, field_descriptor, reflection, true, -1)) { + return NULL; + } + break; + } + case google::protobuf::FieldDescriptor::CPPTYPE_ENUM: { + GOOGLE_CHECK_GET_INT32(arg, value); + const google::protobuf::EnumDescriptor* enum_descriptor = + field_descriptor->enum_type(); + const google::protobuf::EnumValueDescriptor* enum_value = + enum_descriptor->FindValueByNumber(value); + if (enum_value != NULL) { + reflection->AddEnum(message, field_descriptor, enum_value); + } else { + PyObject* s = PyObject_Str(arg); + PyErr_Format(PyExc_ValueError, "Unknown enum value: %s", + PyString_AS_STRING(s)); + Py_DECREF(s); + return NULL; + } + break; + } + default: + PyErr_Format( + PyExc_SystemError, "Adding value to a field of unknown type %d", + field_descriptor->cpp_type()); + } + + Py_RETURN_NONE; +} + +static PyObject* InternalGetRepeatedScalar( + CMessage* cmessage, const google::protobuf::FieldDescriptor* field_descriptor, + int index) { + google::protobuf::Message* message = cmessage->message; + const google::protobuf::Reflection* reflection = message->GetReflection(); + + int field_size = reflection->FieldSize(*message, field_descriptor); + if (index < 0) { + index = field_size + index; + } + if (index < 0 || index >= field_size) { + PyErr_Format(PyExc_IndexError, + "list assignment index (%d) out of range", index); + return NULL; + } + + PyObject* result = NULL; + switch (field_descriptor->cpp_type()) { + case google::protobuf::FieldDescriptor::CPPTYPE_INT32: { + int32 value = reflection->GetRepeatedInt32( + *message, field_descriptor, index); + result = PyInt_FromLong(value); + break; + } + case google::protobuf::FieldDescriptor::CPPTYPE_INT64: { + int64 value = reflection->GetRepeatedInt64( + *message, field_descriptor, index); + result = PyLong_FromLongLong(value); + break; + } + case google::protobuf::FieldDescriptor::CPPTYPE_UINT32: { + uint32 value = reflection->GetRepeatedUInt32( + *message, field_descriptor, index); + result = PyLong_FromLongLong(value); + break; + } + case google::protobuf::FieldDescriptor::CPPTYPE_UINT64: { + uint64 value = reflection->GetRepeatedUInt64( + *message, field_descriptor, index); + result = PyLong_FromUnsignedLongLong(value); + break; + } + case google::protobuf::FieldDescriptor::CPPTYPE_FLOAT: { + float value = reflection->GetRepeatedFloat( + *message, field_descriptor, index); + result = PyFloat_FromDouble(value); + break; + } + case google::protobuf::FieldDescriptor::CPPTYPE_DOUBLE: { + double value = reflection->GetRepeatedDouble( + *message, field_descriptor, index); + result = PyFloat_FromDouble(value); + break; + } + case google::protobuf::FieldDescriptor::CPPTYPE_BOOL: { + bool value = reflection->GetRepeatedBool( + *message, field_descriptor, index); + result = PyBool_FromLong(value ? 1 : 0); + break; + } + case google::protobuf::FieldDescriptor::CPPTYPE_ENUM: { + const google::protobuf::EnumValueDescriptor* enum_value = + message->GetReflection()->GetRepeatedEnum( + *message, field_descriptor, index); + result = PyInt_FromLong(enum_value->number()); + break; + } + case google::protobuf::FieldDescriptor::CPPTYPE_STRING: { + string value = reflection->GetRepeatedString( + *message, field_descriptor, index); + result = ToStringObject(field_descriptor, value); + break; + } + case google::protobuf::FieldDescriptor::CPPTYPE_MESSAGE: { + CMessage* py_cmsg = PyObject_New(CMessage, &CMessage_Type); + if (py_cmsg == NULL) { + return NULL; + } + const google::protobuf::Message& msg = reflection->GetRepeatedMessage( + *message, field_descriptor, index); + py_cmsg->parent = cmessage; + py_cmsg->full_name = field_descriptor->full_name().c_str(); + py_cmsg->message = const_cast(&msg); + py_cmsg->free_message = false; + py_cmsg->read_only = false; + result = reinterpret_cast(py_cmsg); + break; + } + default: + PyErr_Format( + PyExc_SystemError, + "Getting value from a repeated field of unknown type %d", + field_descriptor->cpp_type()); + } + + return result; +} + +static PyObject* InternalGetRepeatedScalarSlice( + CMessage* cmessage, const google::protobuf::FieldDescriptor* field_descriptor, + PyObject* slice) { + Py_ssize_t from; + Py_ssize_t to; + Py_ssize_t step; + Py_ssize_t length; + bool return_list = false; + google::protobuf::Message* message = cmessage->message; + + if (PyInt_Check(slice)) { + from = to = PyInt_AsLong(slice); + } else if (PyLong_Check(slice)) { + from = to = PyLong_AsLong(slice); + } else if (PySlice_Check(slice)) { + const google::protobuf::Reflection* reflection = message->GetReflection(); + length = reflection->FieldSize(*message, field_descriptor); + PySlice_GetIndices( + reinterpret_cast(slice), length, &from, &to, &step); + return_list = true; + } else { + PyErr_SetString(PyExc_TypeError, "list indices must be integers"); + return NULL; + } + + if (!return_list) { + return InternalGetRepeatedScalar(cmessage, field_descriptor, from); + } + + PyObject* list = PyList_New(0); + if (list == NULL) { + return NULL; + } + + if (from <= to) { + if (step < 0) return list; + for (Py_ssize_t index = from; index < to; index += step) { + if (index < 0 || index >= length) break; + PyObject* s = InternalGetRepeatedScalar( + cmessage, field_descriptor, index); + PyList_Append(list, s); + Py_DECREF(s); + } + } else { + if (step > 0) return list; + for (Py_ssize_t index = from; index > to; index += step) { + if (index < 0 || index >= length) break; + PyObject* s = InternalGetRepeatedScalar( + cmessage, field_descriptor, index); + PyList_Append(list, s); + Py_DECREF(s); + } + } + return list; +} + +// ------ C Constructor/Destructor: + +static int CMessageInit(CMessage* self, PyObject *args, PyObject *kwds) { + self->message = NULL; + return 0; +} + +static void CMessageDealloc(CMessage* self) { + if (self->free_message) { + if (self->read_only) { + PyErr_WriteUnraisable(reinterpret_cast(self)); + } + delete self->message; + } + self->ob_type->tp_free(reinterpret_cast(self)); +} + +// ------ Methods: + +static PyObject* CMessage_Clear(CMessage* self, PyObject* arg) { + AssureWritable(self); + google::protobuf::Message* message = self->message; + + // This block of code is equivalent to the following: + // for cfield_descriptor, child_cmessage in arg: + // ReleaseSubMessage(cfield_descriptor, child_cmessage) + if (!PyList_Check(arg)) { + PyErr_SetString(PyExc_TypeError, "Must be a list"); + return NULL; + } + PyObject* messages_to_clear = arg; + Py_ssize_t num_messages_to_clear = PyList_GET_SIZE(messages_to_clear); + for(int i = 0; i < num_messages_to_clear; ++i) { + PyObject* message_tuple = PyList_GET_ITEM(messages_to_clear, i); + if (!PyTuple_Check(message_tuple) || PyTuple_GET_SIZE(message_tuple) != 2) { + PyErr_SetString(PyExc_TypeError, "Must be a tuple of size 2"); + return NULL; + } + + PyObject* py_cfield_descriptor = PyTuple_GET_ITEM(message_tuple, 0); + PyObject* py_child_cmessage = PyTuple_GET_ITEM(message_tuple, 1); + if (!PyObject_TypeCheck(py_cfield_descriptor, &CFieldDescriptor_Type) || + !PyObject_TypeCheck(py_child_cmessage, &CMessage_Type)) { + PyErr_SetString(PyExc_ValueError, "Invalid Tuple"); + return NULL; + } + + CFieldDescriptor* cfield_descriptor = reinterpret_cast( + py_cfield_descriptor); + CMessage* child_cmessage = reinterpret_cast(py_child_cmessage); + ReleaseSubMessage(message, cfield_descriptor->descriptor, child_cmessage); + } + + message->Clear(); + Py_RETURN_NONE; +} + +static PyObject* CMessage_IsInitialized(CMessage* self, PyObject* args) { + return PyBool_FromLong(self->message->IsInitialized() ? 1 : 0); +} + +static PyObject* CMessage_HasField(CMessage* self, PyObject* arg) { + char* field_name; + if (PyString_AsStringAndSize(arg, &field_name, NULL) < 0) { + return NULL; + } + + google::protobuf::Message* message = self->message; + const google::protobuf::Descriptor* descriptor = message->GetDescriptor(); + const google::protobuf::FieldDescriptor* field_descriptor = + descriptor->FindFieldByName(field_name); + if (field_descriptor == NULL) { + PyErr_Format(PyExc_ValueError, "Unknown field %s.", field_name); + return NULL; + } + + bool has_field = + message->GetReflection()->HasField(*message, field_descriptor); + return PyBool_FromLong(has_field ? 1 : 0); +} + +static PyObject* CMessage_HasFieldByDescriptor(CMessage* self, PyObject* arg) { + CFieldDescriptor* cfield_descriptor = NULL; + if (!PyObject_TypeCheck(reinterpret_cast(arg), + &CFieldDescriptor_Type)) { + PyErr_SetString(PyExc_TypeError, "Must be a field descriptor"); + return NULL; + } + cfield_descriptor = reinterpret_cast(arg); + + google::protobuf::Message* message = self->message; + const google::protobuf::FieldDescriptor* field_descriptor = + cfield_descriptor->descriptor; + + if (!FIELD_BELONGS_TO_MESSAGE(field_descriptor, message)) { + PyErr_SetString(PyExc_KeyError, + "Field does not belong to message!"); + return NULL; + } + + if (FIELD_IS_REPEATED(field_descriptor)) { + PyErr_SetString(PyExc_KeyError, + "Field is repeated. A singular method is required."); + return NULL; + } + + bool has_field = + message->GetReflection()->HasField(*message, field_descriptor); + return PyBool_FromLong(has_field ? 1 : 0); +} + +static PyObject* CMessage_ClearFieldByDescriptor( + CMessage* self, PyObject* arg) { + CFieldDescriptor* cfield_descriptor = NULL; + if (!PyObject_TypeCheck(reinterpret_cast(arg), + &CFieldDescriptor_Type)) { + PyErr_SetString(PyExc_TypeError, "Must be a field descriptor"); + return NULL; + } + cfield_descriptor = reinterpret_cast(arg); + + google::protobuf::Message* message = self->message; + const google::protobuf::FieldDescriptor* field_descriptor = + cfield_descriptor->descriptor; + + if (!FIELD_BELONGS_TO_MESSAGE(field_descriptor, message)) { + PyErr_SetString(PyExc_KeyError, + "Field does not belong to message!"); + return NULL; + } + + message->GetReflection()->ClearField(message, field_descriptor); + Py_RETURN_NONE; +} + +static PyObject* CMessage_ClearField(CMessage* self, PyObject* args) { + char* field_name; + CMessage* child_cmessage = NULL; + if (!PyArg_ParseTuple(args, C("s|O!:ClearField"), &field_name, + &CMessage_Type, &child_cmessage)) { + return NULL; + } + + google::protobuf::Message* message = self->message; + const google::protobuf::Descriptor* descriptor = message->GetDescriptor(); + const google::protobuf::FieldDescriptor* field_descriptor = + descriptor->FindFieldByName(field_name); + if (field_descriptor == NULL) { + PyErr_Format(PyExc_ValueError, "Unknown field %s.", field_name); + return NULL; + } + + if (child_cmessage != NULL && !FIELD_IS_REPEATED(field_descriptor)) { + ReleaseSubMessage(message, field_descriptor, child_cmessage); + } else { + message->GetReflection()->ClearField(message, field_descriptor); + } + Py_RETURN_NONE; +} + +static PyObject* CMessage_GetScalar(CMessage* self, PyObject* arg) { + CFieldDescriptor* cdescriptor = NULL; + if (!PyObject_TypeCheck(reinterpret_cast(arg), + &CFieldDescriptor_Type)) { + PyErr_SetString(PyExc_TypeError, "Must be a field descriptor"); + return NULL; + } + cdescriptor = reinterpret_cast(arg); + + google::protobuf::Message* message = self->message; + return InternalGetScalar(message, cdescriptor->descriptor); +} + +static PyObject* CMessage_GetRepeatedScalar(CMessage* self, PyObject* args) { + CFieldDescriptor* cfield_descriptor; + PyObject* slice; + if (!PyArg_ParseTuple(args, C("O!O:GetRepeatedScalar"), + &CFieldDescriptor_Type, &cfield_descriptor, &slice)) { + return NULL; + } + + return InternalGetRepeatedScalarSlice( + self, cfield_descriptor->descriptor, slice); +} + +static PyObject* CMessage_AssignRepeatedScalar(CMessage* self, PyObject* args) { + CFieldDescriptor* cfield_descriptor; + PyObject* slice; + if (!PyArg_ParseTuple(args, C("O!O:AssignRepeatedScalar"), + &CFieldDescriptor_Type, &cfield_descriptor, &slice)) { + return NULL; + } + + AssureWritable(self); + google::protobuf::Message* message = self->message; + message->GetReflection()->ClearField(message, cfield_descriptor->descriptor); + + PyObject* iter = PyObject_GetIter(slice); + PyObject* next; + while ((next = PyIter_Next(iter)) != NULL) { + if (InternalAddRepeatedScalar( + message, cfield_descriptor->descriptor, next) == NULL) { + Py_DECREF(next); + Py_DECREF(iter); + return NULL; + } + Py_DECREF(next); + } + Py_DECREF(iter); + Py_RETURN_NONE; +} + +static PyObject* CMessage_DeleteRepeatedField(CMessage* self, PyObject* args) { + CFieldDescriptor* cfield_descriptor; + PyObject* slice; + if (!PyArg_ParseTuple(args, C("O!O:DeleteRepeatedField"), + &CFieldDescriptor_Type, &cfield_descriptor, &slice)) { + return NULL; + } + AssureWritable(self); + + Py_ssize_t length, from, to, step, slice_length; + google::protobuf::Message* message = self->message; + const google::protobuf::FieldDescriptor* field_descriptor = + cfield_descriptor->descriptor; + const google::protobuf::Reflection* reflection = message->GetReflection(); + int min, max; + length = reflection->FieldSize(*message, field_descriptor); + + if (PyInt_Check(slice) || PyLong_Check(slice)) { + from = to = PyLong_AsLong(slice); + if (from < 0) { + from = to = length + from; + } + step = 1; + min = max = from; + + // Range check. + if (from < 0 || from >= length) { + PyErr_Format(PyExc_IndexError, "list assignment index out of range"); + return NULL; + } + } else if (PySlice_Check(slice)) { + from = to = step = slice_length = 0; + PySlice_GetIndicesEx( + reinterpret_cast(slice), + length, &from, &to, &step, &slice_length); + if (from < to) { + min = from; + max = to - 1; + } else { + min = to + 1; + max = from; + } + } else { + PyErr_SetString(PyExc_TypeError, "list indices must be integers"); + return NULL; + } + + Py_ssize_t i = from; + std::vector to_delete(length, false); + while (i >= min && i <= max) { + to_delete[i] = true; + i += step; + } + + to = 0; + for (i = 0; i < length; ++i) { + if (!to_delete[i]) { + if (i != to) { + reflection->SwapElements(message, field_descriptor, i, to); + } + ++to; + } + } + + while (i > to) { + reflection->RemoveLast(message, field_descriptor); + --i; + } + + Py_RETURN_NONE; +} + + +static PyObject* CMessage_SetScalar(CMessage* self, PyObject* args) { + CFieldDescriptor* cfield_descriptor; + PyObject* arg; + if (!PyArg_ParseTuple(args, C("O!O:SetScalar"), + &CFieldDescriptor_Type, &cfield_descriptor, &arg)) { + return NULL; + } + AssureWritable(self); + + return InternalSetScalar(self->message, cfield_descriptor->descriptor, arg); +} + +static PyObject* CMessage_AddRepeatedScalar(CMessage* self, PyObject* args) { + CFieldDescriptor* cfield_descriptor; + PyObject* value; + if (!PyArg_ParseTuple(args, C("O!O:AddRepeatedScalar"), + &CFieldDescriptor_Type, &cfield_descriptor, &value)) { + return NULL; + } + AssureWritable(self); + + return InternalAddRepeatedScalar( + self->message, cfield_descriptor->descriptor, value); +} + +static PyObject* CMessage_FieldLength(CMessage* self, PyObject* arg) { + CFieldDescriptor* cfield_descriptor; + if (!PyObject_TypeCheck(reinterpret_cast(arg), + &CFieldDescriptor_Type)) { + PyErr_SetString(PyExc_TypeError, "Must be a field descriptor"); + return NULL; + } + cfield_descriptor = reinterpret_cast(arg); + + google::protobuf::Message* message = self->message; + int length = message->GetReflection()->FieldSize( + *message, cfield_descriptor->descriptor); + return PyInt_FromLong(length); +} + +static PyObject* CMessage_DebugString(CMessage* self, PyObject* args) { + return PyString_FromString(self->message->DebugString().c_str()); +} + +static PyObject* CMessage_SerializeToString(CMessage* self, PyObject* args) { + int size = self->message->ByteSize(); + if (size <= 0) { + return PyString_FromString(""); + } + PyObject* result = PyString_FromStringAndSize(NULL, size); + if (result == NULL) { + return NULL; + } + char* buffer = PyString_AS_STRING(result); + self->message->SerializeWithCachedSizesToArray( + reinterpret_cast(buffer)); + return result; +} + +static PyObject* CMessage_SerializePartialToString( + CMessage* self, PyObject* args) { + string contents; + self->message->SerializePartialToString(&contents); + return PyString_FromStringAndSize(contents.c_str(), contents.size()); +} + +static PyObject* CMessageStr(CMessage* self) { + char str[1024]; + str[sizeof(str) - 1] = 0; + snprintf(str, sizeof(str) - 1, "CMessage: <%p>", self->message); + return PyString_FromString(str); +} + +static PyObject* CMessage_MergeFrom(CMessage* self, PyObject* arg) { + CMessage* other_message; + if (!PyObject_TypeCheck(reinterpret_cast(arg), &CMessage_Type)) { + PyErr_SetString(PyExc_TypeError, "Must be a message"); + return NULL; + } + + other_message = reinterpret_cast(arg); + if (other_message->message->GetDescriptor() != + self->message->GetDescriptor()) { + PyErr_Format(PyExc_TypeError, + "Tried to merge from a message with a different type. " + "to: %s, from: %s", + self->message->GetDescriptor()->full_name().c_str(), + other_message->message->GetDescriptor()->full_name().c_str()); + return NULL; + } + AssureWritable(self); + + self->message->MergeFrom(*other_message->message); + Py_RETURN_NONE; +} + +static PyObject* CMessage_CopyFrom(CMessage* self, PyObject* arg) { + CMessage* other_message; + if (!PyObject_TypeCheck(reinterpret_cast(arg), &CMessage_Type)) { + PyErr_SetString(PyExc_TypeError, "Must be a message"); + return NULL; + } + + other_message = reinterpret_cast(arg); + if (other_message->message->GetDescriptor() != + self->message->GetDescriptor()) { + PyErr_Format(PyExc_TypeError, + "Tried to copy from a message with a different type. " + "to: %s, from: %s", + self->message->GetDescriptor()->full_name().c_str(), + other_message->message->GetDescriptor()->full_name().c_str()); + return NULL; + } + + AssureWritable(self); + + self->message->CopyFrom(*other_message->message); + Py_RETURN_NONE; +} + +static PyObject* CMessage_MergeFromString(CMessage* self, PyObject* arg) { + const void* data; + Py_ssize_t data_length; + if (PyObject_AsReadBuffer(arg, &data, &data_length) < 0) { + return NULL; + } + + AssureWritable(self); + google::protobuf::io::CodedInputStream input( + reinterpret_cast(data), data_length); + input.SetExtensionRegistry(GetDescriptorPool(), global_message_factory); + bool success = self->message->MergePartialFromCodedStream(&input); + if (success) { + return PyInt_FromLong(self->message->ByteSize()); + } else { + return PyInt_FromLong(-1); + } +} + +static PyObject* CMessage_ByteSize(CMessage* self, PyObject* args) { + return PyLong_FromLong(self->message->ByteSize()); +} + +static PyObject* CMessage_SetInParent(CMessage* self, PyObject* args) { + AssureWritable(self); + Py_RETURN_NONE; +} + +static PyObject* CMessage_SwapRepeatedFieldElements( + CMessage* self, PyObject* args) { + CFieldDescriptor* cfield_descriptor; + int index1, index2; + if (!PyArg_ParseTuple(args, C("O!ii:SwapRepeatedFieldElements"), + &CFieldDescriptor_Type, &cfield_descriptor, + &index1, &index2)) { + return NULL; + } + + google::protobuf::Message* message = self->message; + const google::protobuf::Reflection* reflection = message->GetReflection(); + + reflection->SwapElements( + message, cfield_descriptor->descriptor, index1, index2); + Py_RETURN_NONE; +} + +static PyObject* CMessage_AddMessage(CMessage* self, PyObject* arg) { + CFieldDescriptor* cfield_descriptor; + if (!PyObject_TypeCheck(reinterpret_cast(arg), + &CFieldDescriptor_Type)) { + PyErr_SetString(PyExc_TypeError, "Must be a field descriptor"); + return NULL; + } + cfield_descriptor = reinterpret_cast(arg); + AssureWritable(self); + + CMessage* py_cmsg = PyObject_New(CMessage, &CMessage_Type); + if (py_cmsg == NULL) { + return NULL; + } + + google::protobuf::Message* message = self->message; + const google::protobuf::Reflection* reflection = message->GetReflection(); + google::protobuf::Message* sub_message = + reflection->AddMessage(message, cfield_descriptor->descriptor); + + py_cmsg->parent = NULL; + py_cmsg->full_name = sub_message->GetDescriptor()->full_name().c_str(); + py_cmsg->message = sub_message; + py_cmsg->free_message = false; + py_cmsg->read_only = false; + return reinterpret_cast(py_cmsg); +} + +static PyObject* CMessage_GetRepeatedMessage(CMessage* self, PyObject* args) { + CFieldDescriptor* cfield_descriptor; + PyObject* slice; + if (!PyArg_ParseTuple(args, C("O!O:GetRepeatedMessage"), + &CFieldDescriptor_Type, &cfield_descriptor, &slice)) { + return NULL; + } + + return InternalGetRepeatedScalarSlice( + self, cfield_descriptor->descriptor, slice); +} + +static PyObject* CMessage_NewSubMessage(CMessage* self, PyObject* arg) { + CFieldDescriptor* cfield_descriptor; + if (!PyObject_TypeCheck(reinterpret_cast(arg), + &CFieldDescriptor_Type)) { + PyErr_SetString(PyExc_TypeError, "Must be a field descriptor"); + return NULL; + } + cfield_descriptor = reinterpret_cast(arg); + + CMessage* py_cmsg = PyObject_New(CMessage, &CMessage_Type); + if (py_cmsg == NULL) { + return NULL; + } + + google::protobuf::Message* message = self->message; + const google::protobuf::Reflection* reflection = message->GetReflection(); + const google::protobuf::Message& sub_message = + reflection->GetMessage(*message, cfield_descriptor->descriptor, + global_message_factory); + + py_cmsg->full_name = sub_message.GetDescriptor()->full_name().c_str(); + py_cmsg->parent = self; + py_cmsg->parent_field = cfield_descriptor; + py_cmsg->message = const_cast(&sub_message); + py_cmsg->free_message = false; + py_cmsg->read_only = true; + return reinterpret_cast(py_cmsg); +} + +static PyObject* CMessage_MutableMessage(CMessage* self, PyObject* arg) { + CFieldDescriptor* cfield_descriptor; + if (!PyObject_TypeCheck(reinterpret_cast(arg), + &CFieldDescriptor_Type)) { + PyErr_SetString(PyExc_TypeError, "Must be a field descriptor"); + return NULL; + } + cfield_descriptor = reinterpret_cast(arg); + AssureWritable(self); + + CMessage* py_cmsg = PyObject_New(CMessage, &CMessage_Type); + if (py_cmsg == NULL) { + return NULL; + } + + google::protobuf::Message* message = self->message; + const google::protobuf::Reflection* reflection = message->GetReflection(); + google::protobuf::Message* mutable_message = + reflection->MutableMessage(message, cfield_descriptor->descriptor, + global_message_factory); + + py_cmsg->full_name = mutable_message->GetDescriptor()->full_name().c_str(); + py_cmsg->message = mutable_message; + py_cmsg->free_message = false; + py_cmsg->read_only = false; + return reinterpret_cast(py_cmsg); +} + +static PyObject* CMessage_Equals(CMessage* self, PyObject* arg) { + CMessage* other_message; + if (!PyObject_TypeCheck(reinterpret_cast(arg), &CMessage_Type)) { + PyErr_SetString(PyExc_TypeError, "Must be a message"); + return NULL; + } + other_message = reinterpret_cast(arg); + + if (other_message->message == self->message) { + return PyBool_FromLong(1); + } + + if (other_message->message->GetDescriptor() != + self->message->GetDescriptor()) { + return PyBool_FromLong(0); + } + + return PyBool_FromLong(1); +} + +static PyObject* CMessage_ListFields(CMessage* self, PyObject* args) { + google::protobuf::Message* message = self->message; + const google::protobuf::Reflection* reflection = message->GetReflection(); + vector fields; + reflection->ListFields(*message, &fields); + + PyObject* list = PyList_New(fields.size()); + if (list == NULL) { + return NULL; + } + + for (unsigned int i = 0; i < fields.size(); ++i) { + bool is_extension = fields[i]->is_extension(); + PyObject* t = PyTuple_New(2); + if (t == NULL) { + Py_DECREF(list); + return NULL; + } + + PyObject* is_extension_object = PyBool_FromLong(is_extension ? 1 : 0); + + PyObject* field_name; + const string* s; + if (is_extension) { + s = &fields[i]->full_name(); + } else { + s = &fields[i]->name(); + } + field_name = PyString_FromStringAndSize(s->c_str(), s->length()); + if (field_name == NULL) { + Py_DECREF(list); + Py_DECREF(t); + return NULL; + } + + PyTuple_SET_ITEM(t, 0, is_extension_object); + PyTuple_SET_ITEM(t, 1, field_name); + PyList_SET_ITEM(list, i, t); + } + + return list; +} + +static PyObject* CMessage_FindInitializationErrors(CMessage* self) { + google::protobuf::Message* message = self->message; + vector errors; + message->FindInitializationErrors(&errors); + + PyObject* error_list = PyList_New(errors.size()); + if (error_list == NULL) { + return NULL; + } + for (unsigned int i = 0; i < errors.size(); ++i) { + const string& error = errors[i]; + PyObject* error_string = PyString_FromStringAndSize( + error.c_str(), error.length()); + if (error_string == NULL) { + Py_DECREF(error_list); + return NULL; + } + PyList_SET_ITEM(error_list, i, error_string); + } + return error_list; +} + +// ------ Python Constructor: + +PyObject* Python_NewCMessage(PyObject* ignored, PyObject* arg) { + const char* message_type = PyString_AsString(arg); + if (message_type == NULL) { + return NULL; + } + + const google::protobuf::Message* message = CreateMessage(message_type); + if (message == NULL) { + PyErr_Format(PyExc_TypeError, "Couldn't create message of type %s!", + message_type); + return NULL; + } + + CMessage* py_cmsg = PyObject_New(CMessage, &CMessage_Type); + if (py_cmsg == NULL) { + return NULL; + } + py_cmsg->message = message->New(); + py_cmsg->free_message = true; + py_cmsg->full_name = message->GetDescriptor()->full_name().c_str(); + py_cmsg->read_only = false; + py_cmsg->parent = NULL; + py_cmsg->parent_field = NULL; + return reinterpret_cast(py_cmsg); +} + +// --- Module Functions (exposed to Python): + +PyMethodDef methods[] = { + { C("NewCMessage"), (PyCFunction)Python_NewCMessage, + METH_O, + C("Creates a new C++ protocol message, given its full name.") }, + { C("NewCDescriptorPool"), (PyCFunction)Python_NewCDescriptorPool, + METH_NOARGS, + C("Creates a new C++ descriptor pool.") }, + { C("BuildFile"), (PyCFunction)Python_BuildFile, + METH_O, + C("Registers a new protocol buffer file in the global C++ descriptor " + "pool.") }, + {NULL} +}; + +// --- Exposing the C proto living inside Python proto to C code: + +extern const Message* (*GetCProtoInsidePyProtoPtr)(PyObject* msg); +extern Message* (*MutableCProtoInsidePyProtoPtr)(PyObject* msg); + +static const google::protobuf::Message* GetCProtoInsidePyProtoImpl(PyObject* msg) { + PyObject* c_msg_obj = PyObject_GetAttrString(msg, "_cmsg"); + if (c_msg_obj == NULL) { + PyErr_Clear(); + return NULL; + } + Py_DECREF(c_msg_obj); + if (!PyObject_TypeCheck(c_msg_obj, &CMessage_Type)) { + return NULL; + } + CMessage* c_msg = reinterpret_cast(c_msg_obj); + return c_msg->message; +} + +static google::protobuf::Message* MutableCProtoInsidePyProtoImpl(PyObject* msg) { + PyObject* c_msg_obj = PyObject_GetAttrString(msg, "_cmsg"); + if (c_msg_obj == NULL) { + PyErr_Clear(); + return NULL; + } + Py_DECREF(c_msg_obj); + if (!PyObject_TypeCheck(c_msg_obj, &CMessage_Type)) { + return NULL; + } + CMessage* c_msg = reinterpret_cast(c_msg_obj); + AssureWritable(c_msg); + return c_msg->message; +} + +// --- Module Init Function: + +static const char module_docstring[] = +"python-proto2 is a module that can be used to enhance proto2 Python API\n" +"performance.\n" +"\n" +"It provides access to the protocol buffers C++ reflection API that\n" +"implements the basic protocol buffer functions."; + +extern "C" { + void init_net_proto2___python() { + // Initialize constants. + kPythonZero = PyInt_FromLong(0); + kint32min_py = PyInt_FromLong(kint32min); + kint32max_py = PyInt_FromLong(kint32max); + kuint32max_py = PyLong_FromLongLong(kuint32max); + kint64min_py = PyLong_FromLongLong(kint64min); + kint64max_py = PyLong_FromLongLong(kint64max); + kuint64max_py = PyLong_FromUnsignedLongLong(kuint64max); + + global_message_factory = new DynamicMessageFactory(GetDescriptorPool()); + global_message_factory->SetDelegateToGeneratedFactory(true); + + // Export our functions to Python. + PyObject *m; + m = Py_InitModule3(C("_net_proto2___python"), methods, C(module_docstring)); + if (m == NULL) { + return; + } + + AddConstants(m); + + CMessage_Type.tp_new = PyType_GenericNew; + if (PyType_Ready(&CMessage_Type) < 0) { + return; + } + + if (!InitDescriptor()) { + return; + } + + // Override {Get,Mutable}CProtoInsidePyProto. + GetCProtoInsidePyProtoPtr = GetCProtoInsidePyProtoImpl; + MutableCProtoInsidePyProtoPtr = MutableCProtoInsidePyProtoImpl; + } +} + +} // namespace python +} // namespace protobuf +} // namespace google diff --git a/cpp/thirdparty/protobuf-2.5.0/python/google/protobuf/pyext/python_descriptor.cc b/cpp/thirdparty/protobuf-2.5.0/python/google/protobuf/pyext/python_descriptor.cc new file mode 100644 index 000000000..5e3e9ea4e --- /dev/null +++ b/cpp/thirdparty/protobuf-2.5.0/python/google/protobuf/pyext/python_descriptor.cc @@ -0,0 +1,337 @@ +// Protocol Buffers - Google's data interchange format +// Copyright 2008 Google Inc. All rights reserved. +// http://code.google.com/p/protobuf/ +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +// Author: petar@google.com (Petar Petrov) + +#include +#include + +#include +#include + +#define C(str) const_cast(str) + +namespace google { +namespace protobuf { +namespace python { + + +static void CFieldDescriptorDealloc(CFieldDescriptor* self); + +static google::protobuf::DescriptorPool* g_descriptor_pool = NULL; + +static PyObject* CFieldDescriptor_GetFullName( + CFieldDescriptor* self, void *closure) { + Py_XINCREF(self->full_name); + return self->full_name; +} + +static PyObject* CFieldDescriptor_GetName( + CFieldDescriptor *self, void *closure) { + Py_XINCREF(self->name); + return self->name; +} + +static PyObject* CFieldDescriptor_GetCppType( + CFieldDescriptor *self, void *closure) { + Py_XINCREF(self->cpp_type); + return self->cpp_type; +} + +static PyObject* CFieldDescriptor_GetLabel( + CFieldDescriptor *self, void *closure) { + Py_XINCREF(self->label); + return self->label; +} + +static PyObject* CFieldDescriptor_GetID( + CFieldDescriptor *self, void *closure) { + Py_XINCREF(self->id); + return self->id; +} + + +static PyGetSetDef CFieldDescriptorGetters[] = { + { C("full_name"), + (getter)CFieldDescriptor_GetFullName, NULL, "Full name", NULL}, + { C("name"), + (getter)CFieldDescriptor_GetName, NULL, "last name", NULL}, + { C("cpp_type"), + (getter)CFieldDescriptor_GetCppType, NULL, "C++ Type", NULL}, + { C("label"), + (getter)CFieldDescriptor_GetLabel, NULL, "Label", NULL}, + { C("id"), + (getter)CFieldDescriptor_GetID, NULL, "ID", NULL}, + {NULL} +}; + +PyTypeObject CFieldDescriptor_Type = { + PyObject_HEAD_INIT(&PyType_Type) + 0, + C("google.protobuf.internal." + "_net_proto2___python." + "CFieldDescriptor"), // tp_name + sizeof(CFieldDescriptor), // tp_basicsize + 0, // tp_itemsize + (destructor)CFieldDescriptorDealloc, // tp_dealloc + 0, // tp_print + 0, // tp_getattr + 0, // tp_setattr + 0, // tp_compare + 0, // tp_repr + 0, // tp_as_number + 0, // tp_as_sequence + 0, // tp_as_mapping + 0, // tp_hash + 0, // tp_call + 0, // tp_str + 0, // tp_getattro + 0, // tp_setattro + 0, // tp_as_buffer + Py_TPFLAGS_DEFAULT, // tp_flags + C("A Field Descriptor"), // tp_doc + 0, // tp_traverse + 0, // tp_clear + 0, // tp_richcompare + 0, // tp_weaklistoffset + 0, // tp_iter + 0, // tp_iternext + 0, // tp_methods + 0, // tp_members + CFieldDescriptorGetters, // tp_getset + 0, // tp_base + 0, // tp_dict + 0, // tp_descr_get + 0, // tp_descr_set + 0, // tp_dictoffset + 0, // tp_init + PyType_GenericAlloc, // tp_alloc + PyType_GenericNew, // tp_new + PyObject_Del, // tp_free +}; + +static void CFieldDescriptorDealloc(CFieldDescriptor* self) { + Py_DECREF(self->full_name); + Py_DECREF(self->name); + Py_DECREF(self->cpp_type); + Py_DECREF(self->label); + Py_DECREF(self->id); + self->ob_type->tp_free(reinterpret_cast(self)); +} + +typedef struct { + PyObject_HEAD + + const google::protobuf::DescriptorPool* pool; +} CDescriptorPool; + +static void CDescriptorPoolDealloc(CDescriptorPool* self); + +static PyObject* CDescriptorPool_NewCDescriptor( + const google::protobuf::FieldDescriptor* field_descriptor) { + CFieldDescriptor* cfield_descriptor = PyObject_New( + CFieldDescriptor, &CFieldDescriptor_Type); + if (cfield_descriptor == NULL) { + return NULL; + } + cfield_descriptor->descriptor = field_descriptor; + + cfield_descriptor->full_name = PyString_FromString( + field_descriptor->full_name().c_str()); + cfield_descriptor->name = PyString_FromString( + field_descriptor->name().c_str()); + cfield_descriptor->cpp_type = PyLong_FromLong(field_descriptor->cpp_type()); + cfield_descriptor->label = PyLong_FromLong(field_descriptor->label()); + cfield_descriptor->id = PyLong_FromVoidPtr(cfield_descriptor); + return reinterpret_cast(cfield_descriptor); +} + +static PyObject* CDescriptorPool_FindFieldByName( + CDescriptorPool* self, PyObject* arg) { + const char* full_field_name = PyString_AsString(arg); + if (full_field_name == NULL) { + return NULL; + } + + const google::protobuf::FieldDescriptor* field_descriptor = NULL; + + field_descriptor = self->pool->FindFieldByName(full_field_name); + + + if (field_descriptor == NULL) { + PyErr_Format(PyExc_TypeError, "Couldn't find field %.200s", + full_field_name); + return NULL; + } + + return CDescriptorPool_NewCDescriptor(field_descriptor); +} + +static PyObject* CDescriptorPool_FindExtensionByName( + CDescriptorPool* self, PyObject* arg) { + const char* full_field_name = PyString_AsString(arg); + if (full_field_name == NULL) { + return NULL; + } + + const google::protobuf::FieldDescriptor* field_descriptor = + self->pool->FindExtensionByName(full_field_name); + if (field_descriptor == NULL) { + PyErr_Format(PyExc_TypeError, "Couldn't find field %.200s", + full_field_name); + return NULL; + } + + return CDescriptorPool_NewCDescriptor(field_descriptor); +} + +static PyMethodDef CDescriptorPoolMethods[] = { + { C("FindFieldByName"), + (PyCFunction)CDescriptorPool_FindFieldByName, + METH_O, + C("Searches for a field descriptor by full name.") }, + { C("FindExtensionByName"), + (PyCFunction)CDescriptorPool_FindExtensionByName, + METH_O, + C("Searches for extension descriptor by full name.") }, + {NULL} +}; + +PyTypeObject CDescriptorPool_Type = { + PyObject_HEAD_INIT(&PyType_Type) + 0, + C("google.protobuf.internal." + "_net_proto2___python." + "CFieldDescriptor"), // tp_name + sizeof(CDescriptorPool), // tp_basicsize + 0, // tp_itemsize + (destructor)CDescriptorPoolDealloc, // tp_dealloc + 0, // tp_print + 0, // tp_getattr + 0, // tp_setattr + 0, // tp_compare + 0, // tp_repr + 0, // tp_as_number + 0, // tp_as_sequence + 0, // tp_as_mapping + 0, // tp_hash + 0, // tp_call + 0, // tp_str + 0, // tp_getattro + 0, // tp_setattro + 0, // tp_as_buffer + Py_TPFLAGS_DEFAULT, // tp_flags + C("A Descriptor Pool"), // tp_doc + 0, // tp_traverse + 0, // tp_clear + 0, // tp_richcompare + 0, // tp_weaklistoffset + 0, // tp_iter + 0, // tp_iternext + CDescriptorPoolMethods, // tp_methods + 0, // tp_members + 0, // tp_getset + 0, // tp_base + 0, // tp_dict + 0, // tp_descr_get + 0, // tp_descr_set + 0, // tp_dictoffset + 0, // tp_init + PyType_GenericAlloc, // tp_alloc + PyType_GenericNew, // tp_new + PyObject_Del, // tp_free +}; + +static void CDescriptorPoolDealloc(CDescriptorPool* self) { + self->ob_type->tp_free(reinterpret_cast(self)); +} + +google::protobuf::DescriptorPool* GetDescriptorPool() { + if (g_descriptor_pool == NULL) { + g_descriptor_pool = new google::protobuf::DescriptorPool( + google::protobuf::DescriptorPool::generated_pool()); + } + return g_descriptor_pool; +} + +PyObject* Python_NewCDescriptorPool(PyObject* ignored, PyObject* args) { + CDescriptorPool* cdescriptor_pool = PyObject_New( + CDescriptorPool, &CDescriptorPool_Type); + if (cdescriptor_pool == NULL) { + return NULL; + } + cdescriptor_pool->pool = GetDescriptorPool(); + return reinterpret_cast(cdescriptor_pool); +} + +PyObject* Python_BuildFile(PyObject* ignored, PyObject* arg) { + char* message_type; + Py_ssize_t message_len; + + if (PyString_AsStringAndSize(arg, &message_type, &message_len) < 0) { + return NULL; + } + + google::protobuf::FileDescriptorProto file_proto; + if (!file_proto.ParseFromArray(message_type, message_len)) { + PyErr_SetString(PyExc_TypeError, "Couldn't parse file content!"); + return NULL; + } + + if (google::protobuf::DescriptorPool::generated_pool()->FindFileByName( + file_proto.name()) != NULL) { + Py_RETURN_NONE; + } + + const google::protobuf::FileDescriptor* descriptor = GetDescriptorPool()->BuildFile( + file_proto); + if (descriptor == NULL) { + PyErr_SetString(PyExc_TypeError, + "Couldn't build proto file into descriptor pool!"); + return NULL; + } + + Py_RETURN_NONE; +} + +bool InitDescriptor() { + CFieldDescriptor_Type.tp_new = PyType_GenericNew; + if (PyType_Ready(&CFieldDescriptor_Type) < 0) + return false; + + CDescriptorPool_Type.tp_new = PyType_GenericNew; + if (PyType_Ready(&CDescriptorPool_Type) < 0) + return false; + return true; +} + +} // namespace python +} // namespace protobuf +} // namespace google diff --git a/cpp/thirdparty/protobuf-2.5.0/python/google/protobuf/pyext/python_descriptor.h b/cpp/thirdparty/protobuf-2.5.0/python/google/protobuf/pyext/python_descriptor.h new file mode 100644 index 000000000..5232680f3 --- /dev/null +++ b/cpp/thirdparty/protobuf-2.5.0/python/google/protobuf/pyext/python_descriptor.h @@ -0,0 +1,87 @@ +// Protocol Buffers - Google's data interchange format +// Copyright 2008 Google Inc. All rights reserved. +// http://code.google.com/p/protobuf/ +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +// Author: petar@google.com (Petar Petrov) + +#ifndef GOOGLE_PROTOBUF_PYTHON_DESCRIPTOR_H__ +#define GOOGLE_PROTOBUF_PYTHON_DESCRIPTOR_H__ + +#include +#include + +#include + +#if PY_VERSION_HEX < 0x02050000 && !defined(PY_SSIZE_T_MIN) +typedef int Py_ssize_t; +#define PY_SSIZE_T_MAX INT_MAX +#define PY_SSIZE_T_MIN INT_MIN +#endif + +namespace google { +namespace protobuf { +namespace python { + +typedef struct { + PyObject_HEAD + + // The proto2 descriptor that this object represents. + const google::protobuf::FieldDescriptor* descriptor; + + // Full name of the field (PyString). + PyObject* full_name; + + // Name of the field (PyString). + PyObject* name; + + // C++ type of the field (PyLong). + PyObject* cpp_type; + + // Name of the field (PyLong). + PyObject* label; + + // Identity of the descriptor (PyLong used as a poiner). + PyObject* id; +} CFieldDescriptor; + +extern PyTypeObject CFieldDescriptor_Type; + +extern PyTypeObject CDescriptorPool_Type; + + +PyObject* Python_NewCDescriptorPool(PyObject* ignored, PyObject* args); +PyObject* Python_BuildFile(PyObject* ignored, PyObject* args); +bool InitDescriptor(); +google::protobuf::DescriptorPool* GetDescriptorPool(); + +} // namespace python +} // namespace protobuf + +} // namespace google +#endif // GOOGLE_PROTOBUF_PYTHON_DESCRIPTOR_H__ diff --git a/cpp/thirdparty/protobuf-2.5.0/python/google/protobuf/pyext/python_protobuf.cc b/cpp/thirdparty/protobuf-2.5.0/python/google/protobuf/pyext/python_protobuf.cc new file mode 100644 index 000000000..1b1ab5d1d --- /dev/null +++ b/cpp/thirdparty/protobuf-2.5.0/python/google/protobuf/pyext/python_protobuf.cc @@ -0,0 +1,63 @@ +// Protocol Buffers - Google's data interchange format +// Copyright 2008 Google Inc. All rights reserved. +// http://code.google.com/p/protobuf/ +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +// Author: qrczak@google.com (Marcin Kowalczyk) + +#include + +namespace google { +namespace protobuf { +namespace python { + +static const Message* GetCProtoInsidePyProtoStub(PyObject* msg) { + return NULL; +} +static Message* MutableCProtoInsidePyProtoStub(PyObject* msg) { + return NULL; +} + +// This is initialized with a default, stub implementation. +// If python-google.protobuf.cc is loaded, the function pointer is overridden +// with a full implementation. +const Message* (*GetCProtoInsidePyProtoPtr)(PyObject* msg) = + GetCProtoInsidePyProtoStub; +Message* (*MutableCProtoInsidePyProtoPtr)(PyObject* msg) = + MutableCProtoInsidePyProtoStub; + +const Message* GetCProtoInsidePyProto(PyObject* msg) { + return GetCProtoInsidePyProtoPtr(msg); +} +Message* MutableCProtoInsidePyProto(PyObject* msg) { + return MutableCProtoInsidePyProtoPtr(msg); +} + +} // namespace python +} // namespace protobuf +} // namespace google diff --git a/cpp/thirdparty/protobuf-2.5.0/python/google/protobuf/pyext/python_protobuf.h b/cpp/thirdparty/protobuf-2.5.0/python/google/protobuf/pyext/python_protobuf.h new file mode 100644 index 000000000..c5b0b1cdd --- /dev/null +++ b/cpp/thirdparty/protobuf-2.5.0/python/google/protobuf/pyext/python_protobuf.h @@ -0,0 +1,57 @@ +// Protocol Buffers - Google's data interchange format +// Copyright 2008 Google Inc. All rights reserved. +// http://code.google.com/p/protobuf/ +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +// Author: qrczak@google.com (Marcin Kowalczyk) +// +// This module exposes the C proto inside the given Python proto, in +// case the Python proto is implemented with a C proto. + +#ifndef GOOGLE_PROTOBUF_PYTHON_PYTHON_PROTOBUF_H__ +#define GOOGLE_PROTOBUF_PYTHON_PYTHON_PROTOBUF_H__ + +#include + +namespace google { +namespace protobuf { + +class Message; + +namespace python { + +// Return the pointer to the C proto inside the given Python proto, +// or NULL when this is not a Python proto implemented with a C proto. +const Message* GetCProtoInsidePyProto(PyObject* msg); +Message* MutableCProtoInsidePyProto(PyObject* msg); + +} // namespace python +} // namespace protobuf + +} // namespace google +#endif // GOOGLE_PROTOBUF_PYTHON_PYTHON_PROTOBUF_H__ diff --git a/cpp/thirdparty/protobuf-2.5.0/python/google/protobuf/reflection.py b/cpp/thirdparty/protobuf-2.5.0/python/google/protobuf/reflection.py new file mode 100755 index 000000000..9570fd508 --- /dev/null +++ b/cpp/thirdparty/protobuf-2.5.0/python/google/protobuf/reflection.py @@ -0,0 +1,169 @@ +# Protocol Buffers - Google's data interchange format +# Copyright 2008 Google Inc. All rights reserved. +# http://code.google.com/p/protobuf/ +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions are +# met: +# +# * Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# * Redistributions in binary form must reproduce the above +# copyright notice, this list of conditions and the following disclaimer +# in the documentation and/or other materials provided with the +# distribution. +# * Neither the name of Google Inc. nor the names of its +# contributors may be used to endorse or promote products derived from +# this software without specific prior written permission. +# +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +# This code is meant to work on Python 2.4 and above only. + +"""Contains a metaclass and helper functions used to create +protocol message classes from Descriptor objects at runtime. + +Recall that a metaclass is the "type" of a class. +(A class is to a metaclass what an instance is to a class.) + +In this case, we use the GeneratedProtocolMessageType metaclass +to inject all the useful functionality into the classes +output by the protocol compiler at compile-time. + +The upshot of all this is that the real implementation +details for ALL pure-Python protocol buffers are *here in +this file*. +""" + +__author__ = 'robinson@google.com (Will Robinson)' + + +from google.protobuf.internal import api_implementation +from google.protobuf import descriptor as descriptor_mod +from google.protobuf import message + +_FieldDescriptor = descriptor_mod.FieldDescriptor + + +if api_implementation.Type() == 'cpp': + if api_implementation.Version() == 2: + from google.protobuf.internal.cpp import cpp_message + _NewMessage = cpp_message.NewMessage + _InitMessage = cpp_message.InitMessage + else: + from google.protobuf.internal import cpp_message + _NewMessage = cpp_message.NewMessage + _InitMessage = cpp_message.InitMessage +else: + from google.protobuf.internal import python_message + _NewMessage = python_message.NewMessage + _InitMessage = python_message.InitMessage + + +class GeneratedProtocolMessageType(type): + + """Metaclass for protocol message classes created at runtime from Descriptors. + + We add implementations for all methods described in the Message class. We + also create properties to allow getting/setting all fields in the protocol + message. Finally, we create slots to prevent users from accidentally + "setting" nonexistent fields in the protocol message, which then wouldn't get + serialized / deserialized properly. + + The protocol compiler currently uses this metaclass to create protocol + message classes at runtime. Clients can also manually create their own + classes at runtime, as in this example: + + mydescriptor = Descriptor(.....) + class MyProtoClass(Message): + __metaclass__ = GeneratedProtocolMessageType + DESCRIPTOR = mydescriptor + myproto_instance = MyProtoClass() + myproto.foo_field = 23 + ... + """ + + # Must be consistent with the protocol-compiler code in + # proto2/compiler/internal/generator.*. + _DESCRIPTOR_KEY = 'DESCRIPTOR' + + def __new__(cls, name, bases, dictionary): + """Custom allocation for runtime-generated class types. + + We override __new__ because this is apparently the only place + where we can meaningfully set __slots__ on the class we're creating(?). + (The interplay between metaclasses and slots is not very well-documented). + + Args: + name: Name of the class (ignored, but required by the + metaclass protocol). + bases: Base classes of the class we're constructing. + (Should be message.Message). We ignore this field, but + it's required by the metaclass protocol + dictionary: The class dictionary of the class we're + constructing. dictionary[_DESCRIPTOR_KEY] must contain + a Descriptor object describing this protocol message + type. + + Returns: + Newly-allocated class. + """ + descriptor = dictionary[GeneratedProtocolMessageType._DESCRIPTOR_KEY] + bases = _NewMessage(bases, descriptor, dictionary) + superclass = super(GeneratedProtocolMessageType, cls) + + new_class = superclass.__new__(cls, name, bases, dictionary) + setattr(descriptor, '_concrete_class', new_class) + return new_class + + def __init__(cls, name, bases, dictionary): + """Here we perform the majority of our work on the class. + We add enum getters, an __init__ method, implementations + of all Message methods, and properties for all fields + in the protocol type. + + Args: + name: Name of the class (ignored, but required by the + metaclass protocol). + bases: Base classes of the class we're constructing. + (Should be message.Message). We ignore this field, but + it's required by the metaclass protocol + dictionary: The class dictionary of the class we're + constructing. dictionary[_DESCRIPTOR_KEY] must contain + a Descriptor object describing this protocol message + type. + """ + descriptor = dictionary[GeneratedProtocolMessageType._DESCRIPTOR_KEY] + _InitMessage(descriptor, cls) + superclass = super(GeneratedProtocolMessageType, cls) + superclass.__init__(name, bases, dictionary) + + +def ParseMessage(descriptor, byte_str): + """Generate a new Message instance from this Descriptor and a byte string. + + Args: + descriptor: Protobuf Descriptor object + byte_str: Serialized protocol buffer byte string + + Returns: + Newly created protobuf Message object. + """ + + class _ResultClass(message.Message): + __metaclass__ = GeneratedProtocolMessageType + DESCRIPTOR = descriptor + + new_msg = _ResultClass() + new_msg.ParseFromString(byte_str) + return new_msg diff --git a/cpp/thirdparty/protobuf-2.3.0/python/google/protobuf/service.py b/cpp/thirdparty/protobuf-2.5.0/python/google/protobuf/service.py similarity index 100% rename from cpp/thirdparty/protobuf-2.3.0/python/google/protobuf/service.py rename to cpp/thirdparty/protobuf-2.5.0/python/google/protobuf/service.py diff --git a/cpp/thirdparty/protobuf-2.3.0/python/google/protobuf/service_reflection.py b/cpp/thirdparty/protobuf-2.5.0/python/google/protobuf/service_reflection.py similarity index 100% rename from cpp/thirdparty/protobuf-2.3.0/python/google/protobuf/service_reflection.py rename to cpp/thirdparty/protobuf-2.5.0/python/google/protobuf/service_reflection.py diff --git a/cpp/thirdparty/protobuf-2.3.0/python/google/protobuf/text_format.py b/cpp/thirdparty/protobuf-2.5.0/python/google/protobuf/text_format.py similarity index 71% rename from cpp/thirdparty/protobuf-2.3.0/python/google/protobuf/text_format.py rename to cpp/thirdparty/protobuf-2.5.0/python/google/protobuf/text_format.py index cc6ac9026..24dd07f2f 100755 --- a/cpp/thirdparty/protobuf-2.3.0/python/google/protobuf/text_format.py +++ b/cpp/thirdparty/protobuf-2.5.0/python/google/protobuf/text_format.py @@ -43,34 +43,38 @@ __all__ = [ 'MessageToString', 'PrintMessage', 'PrintField', 'PrintFieldValue', 'Merge' ] -# Infinity and NaN are not explicitly supported by Python pre-2.6, and -# float('inf') does not work on Windows (pre-2.6). -_INFINITY = 1e10000 # overflows, thus will actually be infinity. -_NAN = _INFINITY * 0 +_INTEGER_CHECKERS = (type_checkers.Uint32ValueChecker(), + type_checkers.Int32ValueChecker(), + type_checkers.Uint64ValueChecker(), + type_checkers.Int64ValueChecker()) +_FLOAT_INFINITY = re.compile('-?inf(?:inity)?f?', re.IGNORECASE) +_FLOAT_NAN = re.compile('nanf?', re.IGNORECASE) class ParseError(Exception): """Thrown in case of ASCII parsing error.""" -def MessageToString(message): +def MessageToString(message, as_utf8=False, as_one_line=False): out = cStringIO.StringIO() - PrintMessage(message, out) + PrintMessage(message, out, as_utf8=as_utf8, as_one_line=as_one_line) result = out.getvalue() out.close() + if as_one_line: + return result.rstrip() return result -def PrintMessage(message, out, indent = 0): +def PrintMessage(message, out, indent=0, as_utf8=False, as_one_line=False): for field, value in message.ListFields(): if field.label == descriptor.FieldDescriptor.LABEL_REPEATED: for element in value: - PrintField(field, element, out, indent) + PrintField(field, element, out, indent, as_utf8, as_one_line) else: - PrintField(field, value, out, indent) + PrintField(field, value, out, indent, as_utf8, as_one_line) -def PrintField(field, value, out, indent = 0): +def PrintField(field, value, out, indent=0, as_utf8=False, as_one_line=False): """Print a single field name/value pair. For repeated fields, the value should be a single element.""" @@ -96,23 +100,39 @@ def PrintField(field, value, out, indent = 0): # don't include it. out.write(': ') - PrintFieldValue(field, value, out, indent) - out.write('\n') + PrintFieldValue(field, value, out, indent, as_utf8, as_one_line) + if as_one_line: + out.write(' ') + else: + out.write('\n') -def PrintFieldValue(field, value, out, indent = 0): +def PrintFieldValue(field, value, out, indent=0, + as_utf8=False, as_one_line=False): """Print a single field value (not including name). For repeated fields, the value should be a single element.""" if field.cpp_type == descriptor.FieldDescriptor.CPPTYPE_MESSAGE: - out.write(' {\n') - PrintMessage(value, out, indent + 2) - out.write(' ' * indent + '}') + if as_one_line: + out.write(' { ') + PrintMessage(value, out, indent, as_utf8, as_one_line) + out.write('}') + else: + out.write(' {\n') + PrintMessage(value, out, indent + 2, as_utf8, as_one_line) + out.write(' ' * indent + '}') elif field.cpp_type == descriptor.FieldDescriptor.CPPTYPE_ENUM: - out.write(field.enum_type.values_by_number[value].name) + enum_value = field.enum_type.values_by_number.get(value, None) + if enum_value is not None: + out.write(enum_value.name) + else: + out.write(str(value)) elif field.cpp_type == descriptor.FieldDescriptor.CPPTYPE_STRING: out.write('\"') - out.write(_CEscape(value)) + if type(value) is unicode: + out.write(_CEscape(value.encode('utf-8'), as_utf8)) + else: + out.write(_CEscape(value, as_utf8)) out.write('\"') elif field.cpp_type == descriptor.FieldDescriptor.CPPTYPE_BOOL: if value: @@ -208,7 +228,7 @@ def _MergeField(tokenizer, message): sub_message = message.Extensions[field] else: sub_message = getattr(message, field.name) - sub_message.SetInParent() + sub_message.SetInParent() while not tokenizer.TryConsume(end_token): if tokenizer.AtEnd(): @@ -257,24 +277,7 @@ def _MergeScalarField(tokenizer, message, field): elif field.type == descriptor.FieldDescriptor.TYPE_BYTES: value = tokenizer.ConsumeByteString() elif field.type == descriptor.FieldDescriptor.TYPE_ENUM: - # Enum can be specified by a number (the enum value), or by - # a string literal (the enum name). - enum_descriptor = field.enum_type - if tokenizer.LookingAtInteger(): - number = tokenizer.ConsumeInt32() - enum_value = enum_descriptor.values_by_number.get(number, None) - if enum_value is None: - raise tokenizer.ParseErrorPreviousToken( - 'Enum type "%s" has no value with number %d.' % ( - enum_descriptor.full_name, number)) - else: - identifier = tokenizer.ConsumeIdentifier() - enum_value = enum_descriptor.values_by_name.get(identifier, None) - if enum_value is None: - raise tokenizer.ParseErrorPreviousToken( - 'Enum type "%s" has no value named %s.' % ( - enum_descriptor.full_name, identifier)) - value = enum_value.number + value = tokenizer.ConsumeEnum(field) else: raise RuntimeError('Unknown field type %d' % field.type) @@ -306,12 +309,6 @@ class _Tokenizer(object): '\"([^\"\n\\\\]|\\\\.)*(\"|\\\\?$)|' # a double-quoted string '\'([^\'\n\\\\]|\\\\.)*(\'|\\\\?$)') # a single-quoted string _IDENTIFIER = re.compile('\w+') - _INTEGER_CHECKERS = [type_checkers.Uint32ValueChecker(), - type_checkers.Int32ValueChecker(), - type_checkers.Uint64ValueChecker(), - type_checkers.Int64ValueChecker()] - _FLOAT_INFINITY = re.compile('-?inf(inity)?f?', re.IGNORECASE) - _FLOAT_NAN = re.compile("nanf?", re.IGNORECASE) def __init__(self, text_message): self._text_message = text_message @@ -334,10 +331,10 @@ class _Tokenizer(object): Returns: True iff the end was reached. """ - return not self._lines and not self._current_line + return self.token == '' def _PopLine(self): - while not self._current_line: + while len(self._current_line) <= self._column: if not self._lines: self._current_line = '' return @@ -348,11 +345,10 @@ class _Tokenizer(object): def _SkipWhitespace(self): while True: self._PopLine() - match = re.match(self._WHITESPACE, self._current_line) + match = self._WHITESPACE.match(self._current_line, self._column) if not match: break length = len(match.group(0)) - self._current_line = self._current_line[length:] self._column += length def TryConsume(self, token): @@ -381,17 +377,6 @@ class _Tokenizer(object): if not self.TryConsume(token): raise self._ParseError('Expected "%s".' % token) - def LookingAtInteger(self): - """Checks if the current token is an integer. - - Returns: - True iff the current token is an integer. - """ - if not self.token: - return False - c = self.token[0] - return (c >= '0' and c <= '9') or c == '-' or c == '+' - def ConsumeIdentifier(self): """Consumes protocol message field identifier. @@ -402,7 +387,7 @@ class _Tokenizer(object): ParseError: If an identifier couldn't be consumed. """ result = self.token - if not re.match(self._IDENTIFIER, result): + if not self._IDENTIFIER.match(result): raise self._ParseError('Expected identifier.') self.NextToken() return result @@ -417,9 +402,9 @@ class _Tokenizer(object): ParseError: If a signed 32bit integer couldn't be consumed. """ try: - result = self._ParseInteger(self.token, is_signed=True, is_long=False) + result = ParseInteger(self.token, is_signed=True, is_long=False) except ValueError, e: - raise self._IntegerParseError(e) + raise self._ParseError(str(e)) self.NextToken() return result @@ -433,9 +418,9 @@ class _Tokenizer(object): ParseError: If an unsigned 32bit integer couldn't be consumed. """ try: - result = self._ParseInteger(self.token, is_signed=False, is_long=False) + result = ParseInteger(self.token, is_signed=False, is_long=False) except ValueError, e: - raise self._IntegerParseError(e) + raise self._ParseError(str(e)) self.NextToken() return result @@ -449,9 +434,9 @@ class _Tokenizer(object): ParseError: If a signed 64bit integer couldn't be consumed. """ try: - result = self._ParseInteger(self.token, is_signed=True, is_long=True) + result = ParseInteger(self.token, is_signed=True, is_long=True) except ValueError, e: - raise self._IntegerParseError(e) + raise self._ParseError(str(e)) self.NextToken() return result @@ -465,9 +450,9 @@ class _Tokenizer(object): ParseError: If an unsigned 64bit integer couldn't be consumed. """ try: - result = self._ParseInteger(self.token, is_signed=False, is_long=True) + result = ParseInteger(self.token, is_signed=False, is_long=True) except ValueError, e: - raise self._IntegerParseError(e) + raise self._ParseError(str(e)) self.NextToken() return result @@ -480,21 +465,10 @@ class _Tokenizer(object): Raises: ParseError: If a floating point number couldn't be consumed. """ - text = self.token - if re.match(self._FLOAT_INFINITY, text): - self.NextToken() - if text.startswith('-'): - return -_INFINITY - return _INFINITY - - if re.match(self._FLOAT_NAN, text): - self.NextToken() - return _NAN - try: - result = float(text) + result = ParseFloat(self.token) except ValueError, e: - raise self._FloatParseError(e) + raise self._ParseError(str(e)) self.NextToken() return result @@ -507,14 +481,12 @@ class _Tokenizer(object): Raises: ParseError: If a boolean value couldn't be consumed. """ - if self.token == 'true': - self.NextToken() - return True - elif self.token == 'false': - self.NextToken() - return False - else: - raise self._ParseError('Expected "true" or "false".') + try: + result = ParseBool(self.token) + except ValueError, e: + raise self._ParseError(str(e)) + self.NextToken() + return result def ConsumeString(self): """Consumes a string value. @@ -525,7 +497,11 @@ class _Tokenizer(object): Raises: ParseError: If a string value couldn't be consumed. """ - return unicode(self.ConsumeByteString(), 'utf-8') + bytes = self.ConsumeByteString() + try: + return unicode(bytes, 'utf-8') + except UnicodeDecodeError, e: + raise self._StringParseError(e) def ConsumeByteString(self): """Consumes a byte array value. @@ -550,7 +526,7 @@ class _Tokenizer(object): """ text = self.token if len(text) < 1 or text[0] not in ('\'', '"'): - raise self._ParseError('Exptected string.') + raise self._ParseError('Expected string.') if len(text) < 2 or text[-1] != text[0]: raise self._ParseError('String missing ending quote.') @@ -562,36 +538,12 @@ class _Tokenizer(object): self.NextToken() return result - def _ParseInteger(self, text, is_signed=False, is_long=False): - """Parses an integer. - - Args: - text: The text to parse. - is_signed: True if a signed integer must be parsed. - is_long: True if a long integer must be parsed. - - Returns: - The integer value. - - Raises: - ValueError: Thrown Iff the text is not a valid integer. - """ - pos = 0 - if text.startswith('-'): - pos += 1 - - base = 10 - if text.startswith('0x', pos) or text.startswith('0X', pos): - base = 16 - elif text.startswith('0', pos): - base = 8 - - # Do the actual parsing. Exception handling is propagated to caller. - result = int(text, base) - - # Check if the integer is sane. Exceptions handled by callers. - checker = self._INTEGER_CHECKERS[2 * int(is_long) + int(is_signed)] - checker.CheckValue(result) + def ConsumeEnum(self, field): + try: + result = ParseEnum(field, self.token) + except ValueError, e: + raise self._ParseError(str(e)) + self.NextToken() return result def ParseErrorPreviousToken(self, message): @@ -611,33 +563,27 @@ class _Tokenizer(object): return ParseError('%d:%d : %s' % ( self._line + 1, self._column + 1, message)) - def _IntegerParseError(self, e): - return self._ParseError('Couldn\'t parse integer: ' + str(e)) - - def _FloatParseError(self, e): - return self._ParseError('Couldn\'t parse number: ' + str(e)) + def _StringParseError(self, e): + return self._ParseError('Couldn\'t parse string: ' + str(e)) def NextToken(self): """Reads the next meaningful token.""" self._previous_line = self._line self._previous_column = self._column - if self.AtEnd(): - self.token = '' - return + self._column += len(self.token) + self._SkipWhitespace() - # Make sure there is data to work on. - self._PopLine() + if not self._lines and len(self._current_line) <= self._column: + self.token = '' + return - match = re.match(self._TOKEN, self._current_line) + match = self._TOKEN.match(self._current_line, self._column) if match: token = match.group(0) - self._current_line = self._current_line[len(token):] self.token = token else: - self.token = self._current_line[0] - self._current_line = self._current_line[1:] - self._SkipWhitespace() + self.token = self._current_line[self._column] # text.encode('string_escape') does not seem to satisfy our needs as it @@ -645,7 +591,7 @@ class _Tokenizer(object): # C++ unescaping function allows hex escapes to be any length. So, # "\0011".encode('string_escape') ends up being "\\x011", which will be # decoded in C++ as a single-character string with char code 0x11. -def _CEscape(text): +def _CEscape(text, as_utf8): def escape(c): o = ord(c) if o == 10: return r"\n" # optional escape @@ -656,18 +602,138 @@ def _CEscape(text): if o == 34: return r'\"' # necessary escape if o == 92: return r"\\" # necessary escape - if o >= 127 or o < 32: return "\\%03o" % o # necessary escapes + # necessary escapes + if not as_utf8 and (o >= 127 or o < 32): return "\\%03o" % o return c return "".join([escape(c) for c in text]) -_CUNESCAPE_HEX = re.compile('\\\\x([0-9a-fA-F]{2}|[0-9a-f-A-F])') +_CUNESCAPE_HEX = re.compile(r'(\\+)x([0-9a-fA-F])(?![0-9a-fA-F])') def _CUnescape(text): def ReplaceHex(m): - return chr(int(m.group(0)[2:], 16)) + # Only replace the match if the number of leading back slashes is odd. i.e. + # the slash itself is not escaped. + if len(m.group(1)) & 1: + return m.group(1) + 'x0' + m.group(2) + return m.group(0) + # This is required because the 'string_escape' encoding doesn't # allow single-digit hex escapes (like '\xf'). result = _CUNESCAPE_HEX.sub(ReplaceHex, text) return result.decode('string_escape') + + +def ParseInteger(text, is_signed=False, is_long=False): + """Parses an integer. + + Args: + text: The text to parse. + is_signed: True if a signed integer must be parsed. + is_long: True if a long integer must be parsed. + + Returns: + The integer value. + + Raises: + ValueError: Thrown Iff the text is not a valid integer. + """ + # Do the actual parsing. Exception handling is propagated to caller. + try: + result = int(text, 0) + except ValueError: + raise ValueError('Couldn\'t parse integer: %s' % text) + + # Check if the integer is sane. Exceptions handled by callers. + checker = _INTEGER_CHECKERS[2 * int(is_long) + int(is_signed)] + checker.CheckValue(result) + return result + + +def ParseFloat(text): + """Parse a floating point number. + + Args: + text: Text to parse. + + Returns: + The number parsed. + + Raises: + ValueError: If a floating point number couldn't be parsed. + """ + try: + # Assume Python compatible syntax. + return float(text) + except ValueError: + # Check alternative spellings. + if _FLOAT_INFINITY.match(text): + if text[0] == '-': + return float('-inf') + else: + return float('inf') + elif _FLOAT_NAN.match(text): + return float('nan') + else: + # assume '1.0f' format + try: + return float(text.rstrip('f')) + except ValueError: + raise ValueError('Couldn\'t parse float: %s' % text) + + +def ParseBool(text): + """Parse a boolean value. + + Args: + text: Text to parse. + + Returns: + Boolean values parsed + + Raises: + ValueError: If text is not a valid boolean. + """ + if text in ('true', 't', '1'): + return True + elif text in ('false', 'f', '0'): + return False + else: + raise ValueError('Expected "true" or "false".') + + +def ParseEnum(field, value): + """Parse an enum value. + + The value can be specified by a number (the enum value), or by + a string literal (the enum name). + + Args: + field: Enum field descriptor. + value: String value. + + Returns: + Enum value number. + + Raises: + ValueError: If the enum value could not be parsed. + """ + enum_descriptor = field.enum_type + try: + number = int(value, 0) + except ValueError: + # Identifier. + enum_value = enum_descriptor.values_by_name.get(value, None) + if enum_value is None: + raise ValueError( + 'Enum type "%s" has no value named %s.' % ( + enum_descriptor.full_name, value)) + else: + # Numeric value. + enum_value = enum_descriptor.values_by_number.get(number, None) + if enum_value is None: + raise ValueError( + 'Enum type "%s" has no value with number %d.' % ( + enum_descriptor.full_name, number)) + return enum_value.number diff --git a/cpp/thirdparty/protobuf-2.3.0/python/mox.py b/cpp/thirdparty/protobuf-2.5.0/python/mox.py similarity index 100% rename from cpp/thirdparty/protobuf-2.3.0/python/mox.py rename to cpp/thirdparty/protobuf-2.5.0/python/mox.py diff --git a/cpp/thirdparty/protobuf-2.3.0/python/setup.py b/cpp/thirdparty/protobuf-2.5.0/python/setup.py similarity index 53% rename from cpp/thirdparty/protobuf-2.3.0/python/setup.py rename to cpp/thirdparty/protobuf-2.5.0/python/setup.py index 7242dae24..777839a08 100755 --- a/cpp/thirdparty/protobuf-2.3.0/python/setup.py +++ b/cpp/thirdparty/protobuf-2.5.0/python/setup.py @@ -1,25 +1,41 @@ #! /usr/bin/python # # See README for usage instructions. +import sys +import os +import subprocess # We must use setuptools, not distutils, because we need to use the # namespace_packages option for the "google" package. -from ez_setup import use_setuptools -use_setuptools() - -from setuptools import setup +try: + from setuptools import setup, Extension +except ImportError: + try: + from ez_setup import use_setuptools + use_setuptools() + from setuptools import setup, Extension + except ImportError: + sys.stderr.write( + "Could not import setuptools; make sure you have setuptools or " + "ez_setup installed.\n") + raise +from distutils.command.clean import clean as _clean +from distutils.command.build_py import build_py as _build_py from distutils.spawn import find_executable -import sys -import os -import subprocess maintainer_email = "protobuf@googlegroups.com" # Find the Protocol Compiler. -if os.path.exists("../src/protoc"): +if 'PROTOC' in os.environ and os.path.exists(os.environ['PROTOC']): + protoc = os.environ['PROTOC'] +elif os.path.exists("../src/protoc"): protoc = "../src/protoc" elif os.path.exists("../src/protoc.exe"): protoc = "../src/protoc.exe" +elif os.path.exists("../vsprojects/Debug/protoc.exe"): + protoc = "../vsprojects/Debug/protoc.exe" +elif os.path.exists("../vsprojects/Release/protoc.exe"): + protoc = "../vsprojects/Release/protoc.exe" else: protoc = find_executable("protoc") @@ -30,15 +46,15 @@ def generate_proto(source): output = source.replace(".proto", "_pb2.py").replace("../src/", "") - if not os.path.exists(source): - print "Can't find required file: " + source - sys.exit(-1) - if (not os.path.exists(output) or (os.path.exists(source) and os.path.getmtime(source) > os.path.getmtime(output))): print "Generating %s..." % output + if not os.path.exists(source): + sys.stderr.write("Can't find required file: %s\n" % source) + sys.exit(-1) + if protoc == None: sys.stderr.write( "protoc is not installed nor found in ../src. Please compile it " @@ -49,18 +65,26 @@ def generate_proto(source): if subprocess.call(protoc_command) != 0: sys.exit(-1) -def MakeTestSuite(): - # This is apparently needed on some systems to make sure that the tests - # work even if a previous version is already installed. - if 'google' in sys.modules: - del sys.modules['google'] - +def GenerateUnittestProtos(): generate_proto("../src/google/protobuf/unittest.proto") + generate_proto("../src/google/protobuf/unittest_custom_options.proto") generate_proto("../src/google/protobuf/unittest_import.proto") + generate_proto("../src/google/protobuf/unittest_import_public.proto") generate_proto("../src/google/protobuf/unittest_mset.proto") generate_proto("../src/google/protobuf/unittest_no_generic_services.proto") + generate_proto("google/protobuf/internal/test_bad_identifiers.proto") generate_proto("google/protobuf/internal/more_extensions.proto") + generate_proto("google/protobuf/internal/more_extensions_dynamic.proto") generate_proto("google/protobuf/internal/more_messages.proto") + generate_proto("google/protobuf/internal/factory_test1.proto") + generate_proto("google/protobuf/internal/factory_test2.proto") + +def MakeTestSuite(): + # This is apparently needed on some systems to make sure that the tests + # work even if a previous version is already installed. + if 'google' in sys.modules: + del sys.modules['google'] + GenerateUnittestProtos() import unittest import google.protobuf.internal.generator_test as generator_test @@ -70,6 +94,14 @@ def MakeTestSuite(): as service_reflection_test import google.protobuf.internal.text_format_test as text_format_test import google.protobuf.internal.wire_format_test as wire_format_test + import google.protobuf.internal.unknown_fields_test as unknown_fields_test + import google.protobuf.internal.descriptor_database_test \ + as descriptor_database_test + import google.protobuf.internal.descriptor_pool_test as descriptor_pool_test + import google.protobuf.internal.message_factory_test as message_factory_test + import google.protobuf.internal.message_cpp_test as message_cpp_test + import google.protobuf.internal.reflection_cpp_generated_test \ + as reflection_cpp_generated_test loader = unittest.defaultTestLoader suite = unittest.TestSuite() @@ -83,40 +115,77 @@ def MakeTestSuite(): return suite -if __name__ == '__main__': - # TODO(kenton): Integrate this into setuptools somehow? - if len(sys.argv) >= 2 and sys.argv[1] == "clean": - # Delete generated _pb2.py files and .pyc files in the code tree. + +class clean(_clean): + def run(self): + # Delete generated files in the code tree. for (dirpath, dirnames, filenames) in os.walk("."): for filename in filenames: filepath = os.path.join(dirpath, filename) - if filepath.endswith("_pb2.py") or filepath.endswith(".pyc"): + if filepath.endswith("_pb2.py") or filepath.endswith(".pyc") or \ + filepath.endswith(".so") or filepath.endswith(".o") or \ + filepath.endswith('google/protobuf/compiler/__init__.py'): os.remove(filepath) - else: + # _clean is an old-style class, so super() doesn't work. + _clean.run(self) + +class build_py(_build_py): + def run(self): # Generate necessary .proto file if it doesn't exist. - # TODO(kenton): Maybe we should hook this into a distutils command? generate_proto("../src/google/protobuf/descriptor.proto") + generate_proto("../src/google/protobuf/compiler/plugin.proto") + + GenerateUnittestProtos() + # Make sure google.protobuf.compiler is a valid package. + open('google/protobuf/compiler/__init__.py', 'a').close() + # _build_py is an old-style class, so super() doesn't work. + _build_py.run(self) + +if __name__ == '__main__': + ext_module_list = [] + + # C++ implementation extension + if os.getenv("PROTOCOL_BUFFERS_PYTHON_IMPLEMENTATION", "python") == "cpp": + print "Using EXPERIMENTAL C++ Implmenetation." + ext_module_list.append(Extension( + "google.protobuf.internal._net_proto2___python", + [ "google/protobuf/pyext/python_descriptor.cc", + "google/protobuf/pyext/python_protobuf.cc", + "google/protobuf/pyext/python-proto2.cc" ], + include_dirs = [ "." ], + libraries = [ "protobuf" ])) setup(name = 'protobuf', - version = '2.3.0', + version = '2.5.0', packages = [ 'google' ], namespace_packages = [ 'google' ], test_suite = 'setup.MakeTestSuite', # Must list modules explicitly so that we don't install tests. py_modules = [ + 'google.protobuf.internal.api_implementation', 'google.protobuf.internal.containers', + 'google.protobuf.internal.cpp_message', 'google.protobuf.internal.decoder', 'google.protobuf.internal.encoder', + 'google.protobuf.internal.enum_type_wrapper', 'google.protobuf.internal.message_listener', + 'google.protobuf.internal.python_message', 'google.protobuf.internal.type_checkers', 'google.protobuf.internal.wire_format', 'google.protobuf.descriptor', 'google.protobuf.descriptor_pb2', + 'google.protobuf.compiler.plugin_pb2', 'google.protobuf.message', + 'google.protobuf.descriptor_database', + 'google.protobuf.descriptor_pool', + 'google.protobuf.message_factory', 'google.protobuf.reflection', 'google.protobuf.service', 'google.protobuf.service_reflection', 'google.protobuf.text_format' ], + cmdclass = { 'clean': clean, 'build_py': build_py }, + install_requires = ['setuptools'], + ext_modules = ext_module_list, url = 'http://code.google.com/p/protobuf/', maintainer = maintainer_email, maintainer_email = 'protobuf@googlegroups.com', diff --git a/cpp/thirdparty/protobuf-2.3.0/python/stubout.py b/cpp/thirdparty/protobuf-2.5.0/python/stubout.py similarity index 100% rename from cpp/thirdparty/protobuf-2.3.0/python/stubout.py rename to cpp/thirdparty/protobuf-2.5.0/python/stubout.py diff --git a/cpp/thirdparty/protobuf-2.3.0/src/Makefile.am b/cpp/thirdparty/protobuf-2.5.0/src/Makefile.am similarity index 77% rename from cpp/thirdparty/protobuf-2.3.0/src/Makefile.am rename to cpp/thirdparty/protobuf-2.5.0/src/Makefile.am index 35f5c0c52..df733d9b8 100644 --- a/cpp/thirdparty/protobuf-2.3.0/src/Makefile.am +++ b/cpp/thirdparty/protobuf-2.5.0/src/Makefile.am @@ -37,54 +37,70 @@ CLEANFILES = $(protoc_outputs) unittest_proto_middleman \ MAINTAINERCLEANFILES = \ Makefile.in -nobase_include_HEADERS = \ - google/protobuf/stubs/common.h \ - google/protobuf/stubs/once.h \ - google/protobuf/descriptor.h \ - google/protobuf/descriptor.pb.h \ - google/protobuf/descriptor_database.h \ - google/protobuf/dynamic_message.h \ - google/protobuf/extension_set.h \ - google/protobuf/generated_message_util.h \ - google/protobuf/generated_message_reflection.h \ - google/protobuf/message.h \ - google/protobuf/message_lite.h \ - google/protobuf/reflection_ops.h \ - google/protobuf/repeated_field.h \ - google/protobuf/service.h \ - google/protobuf/text_format.h \ - google/protobuf/unknown_field_set.h \ - google/protobuf/wire_format.h \ - google/protobuf/wire_format_lite.h \ - google/protobuf/wire_format_lite_inl.h \ - google/protobuf/io/coded_stream.h \ - $(GZHEADERS) \ - google/protobuf/io/printer.h \ - google/protobuf/io/tokenizer.h \ - google/protobuf/io/zero_copy_stream.h \ - google/protobuf/io/zero_copy_stream_impl.h \ - google/protobuf/io/zero_copy_stream_impl_lite.h \ - google/protobuf/compiler/code_generator.h \ - google/protobuf/compiler/command_line_interface.h \ - google/protobuf/compiler/importer.h \ - google/protobuf/compiler/parser.h \ - google/protobuf/compiler/plugin.h \ - google/protobuf/compiler/plugin.pb.h \ - google/protobuf/compiler/cpp/cpp_generator.h \ - google/protobuf/compiler/java/java_generator.h \ +nobase_include_HEADERS = \ + google/protobuf/stubs/atomicops.h \ + google/protobuf/stubs/atomicops_internals_arm_gcc.h \ + google/protobuf/stubs/atomicops_internals_arm_qnx.h \ + google/protobuf/stubs/atomicops_internals_atomicword_compat.h \ + google/protobuf/stubs/atomicops_internals_macosx.h \ + google/protobuf/stubs/atomicops_internals_mips_gcc.h \ + google/protobuf/stubs/atomicops_internals_pnacl.h \ + google/protobuf/stubs/atomicops_internals_x86_gcc.h \ + google/protobuf/stubs/atomicops_internals_x86_msvc.h \ + google/protobuf/stubs/common.h \ + google/protobuf/stubs/platform_macros.h \ + google/protobuf/stubs/once.h \ + google/protobuf/stubs/template_util.h \ + google/protobuf/stubs/type_traits.h \ + google/protobuf/descriptor.h \ + google/protobuf/descriptor.pb.h \ + google/protobuf/descriptor_database.h \ + google/protobuf/dynamic_message.h \ + google/protobuf/extension_set.h \ + google/protobuf/generated_enum_reflection.h \ + google/protobuf/generated_message_util.h \ + google/protobuf/generated_message_reflection.h \ + google/protobuf/message.h \ + google/protobuf/message_lite.h \ + google/protobuf/reflection_ops.h \ + google/protobuf/repeated_field.h \ + google/protobuf/service.h \ + google/protobuf/text_format.h \ + google/protobuf/unknown_field_set.h \ + google/protobuf/wire_format.h \ + google/protobuf/wire_format_lite.h \ + google/protobuf/wire_format_lite_inl.h \ + google/protobuf/io/coded_stream.h \ + $(GZHEADERS) \ + google/protobuf/io/printer.h \ + google/protobuf/io/tokenizer.h \ + google/protobuf/io/zero_copy_stream.h \ + google/protobuf/io/zero_copy_stream_impl.h \ + google/protobuf/io/zero_copy_stream_impl_lite.h \ + google/protobuf/compiler/code_generator.h \ + google/protobuf/compiler/command_line_interface.h \ + google/protobuf/compiler/importer.h \ + google/protobuf/compiler/parser.h \ + google/protobuf/compiler/plugin.h \ + google/protobuf/compiler/plugin.pb.h \ + google/protobuf/compiler/cpp/cpp_generator.h \ + google/protobuf/compiler/java/java_generator.h \ google/protobuf/compiler/python/python_generator.h lib_LTLIBRARIES = libprotobuf-lite.la libprotobuf.la libprotoc.la libprotobuf_lite_la_LIBADD = $(PTHREAD_LIBS) -libprotobuf_lite_la_LDFLAGS = -version-info 6:0:0 -export-dynamic -no-undefined +libprotobuf_lite_la_LDFLAGS = -version-info 8:0:0 -export-dynamic -no-undefined libprotobuf_lite_la_SOURCES = \ + google/protobuf/stubs/atomicops_internals_x86_gcc.cc \ + google/protobuf/stubs/atomicops_internals_x86_msvc.cc \ google/protobuf/stubs/common.cc \ google/protobuf/stubs/once.cc \ - google/protobuf/stubs/hash.cc \ google/protobuf/stubs/hash.h \ google/protobuf/stubs/map-util.h \ - google/protobuf/stubs/stl_util-inl.h \ + google/protobuf/stubs/stl_util.h \ + google/protobuf/stubs/stringprintf.cc \ + google/protobuf/stubs/stringprintf.h \ google/protobuf/extension_set.cc \ google/protobuf/generated_message_util.cc \ google/protobuf/message_lite.cc \ @@ -96,7 +112,7 @@ libprotobuf_lite_la_SOURCES = \ google/protobuf/io/zero_copy_stream_impl_lite.cc libprotobuf_la_LIBADD = $(PTHREAD_LIBS) -libprotobuf_la_LDFLAGS = -version-info 6:0:0 -export-dynamic -no-undefined +libprotobuf_la_LDFLAGS = -version-info 8:0:0 -export-dynamic -no-undefined libprotobuf_la_SOURCES = \ $(libprotobuf_lite_la_SOURCES) \ google/protobuf/stubs/strutil.cc \ @@ -124,7 +140,7 @@ libprotobuf_la_SOURCES = \ google/protobuf/compiler/parser.cc libprotoc_la_LIBADD = $(PTHREAD_LIBS) libprotobuf.la -libprotoc_la_LDFLAGS = -version-info 6:0:0 -export-dynamic -no-undefined +libprotoc_la_LDFLAGS = -version-info 8:0:0 -export-dynamic -no-undefined libprotoc_la_SOURCES = \ google/protobuf/compiler/code_generator.cc \ google/protobuf/compiler/command_line_interface.cc \ @@ -151,6 +167,7 @@ libprotoc_la_SOURCES = \ google/protobuf/compiler/cpp/cpp_message.h \ google/protobuf/compiler/cpp/cpp_message_field.cc \ google/protobuf/compiler/cpp/cpp_message_field.h \ + google/protobuf/compiler/cpp/cpp_options.h \ google/protobuf/compiler/cpp/cpp_primitive_field.cc \ google/protobuf/compiler/cpp/cpp_primitive_field.h \ google/protobuf/compiler/cpp/cpp_service.cc \ @@ -178,6 +195,10 @@ libprotoc_la_SOURCES = \ google/protobuf/compiler/java/java_primitive_field.h \ google/protobuf/compiler/java/java_service.cc \ google/protobuf/compiler/java/java_service.h \ + google/protobuf/compiler/java/java_string_field.cc \ + google/protobuf/compiler/java/java_string_field.h \ + google/protobuf/compiler/java/java_doc_comment.cc \ + google/protobuf/compiler/java/java_doc_comment.h \ google/protobuf/compiler/python/python_generator.cc bin_PROGRAMS = protoc @@ -190,12 +211,14 @@ protoc_inputs = \ google/protobuf/unittest.proto \ google/protobuf/unittest_empty.proto \ google/protobuf/unittest_import.proto \ + google/protobuf/unittest_import_public.proto \ google/protobuf/unittest_mset.proto \ google/protobuf/unittest_optimize_for.proto \ google/protobuf/unittest_embed_optimize_for.proto \ google/protobuf/unittest_custom_options.proto \ google/protobuf/unittest_lite.proto \ google/protobuf/unittest_import_lite.proto \ + google/protobuf/unittest_import_public_lite.proto \ google/protobuf/unittest_lite_imports_nonlite.proto \ google/protobuf/unittest_no_generic_services.proto \ google/protobuf/compiler/cpp/cpp_test_bad_identifiers.proto @@ -219,7 +242,9 @@ protoc_lite_outputs = \ google/protobuf/unittest_lite.pb.cc \ google/protobuf/unittest_lite.pb.h \ google/protobuf/unittest_import_lite.pb.cc \ - google/protobuf/unittest_import_lite.pb.h + google/protobuf/unittest_import_lite.pb.h \ + google/protobuf/unittest_import_public_lite.pb.cc \ + google/protobuf/unittest_import_public_lite.pb.h protoc_outputs = \ $(protoc_lite_outputs) \ @@ -229,6 +254,8 @@ protoc_outputs = \ google/protobuf/unittest_empty.pb.h \ google/protobuf/unittest_import.pb.cc \ google/protobuf/unittest_import.pb.h \ + google/protobuf/unittest_import_public.pb.cc \ + google/protobuf/unittest_import_public.pb.h \ google/protobuf/unittest_mset.pb.cc \ google/protobuf/unittest_mset.pb.h \ google/protobuf/unittest_optimize_for.pb.cc \ @@ -289,6 +316,9 @@ protobuf_test_SOURCES = \ google/protobuf/stubs/once_unittest.cc \ google/protobuf/stubs/strutil_unittest.cc \ google/protobuf/stubs/structurally_valid_unittest.cc \ + google/protobuf/stubs/stringprintf_unittest.cc \ + google/protobuf/stubs/template_util_unittest.cc \ + google/protobuf/stubs/type_traits_unittest.cc \ google/protobuf/descriptor_database_unittest.cc \ google/protobuf/descriptor_unittest.cc \ google/protobuf/dynamic_message_unittest.cc \ @@ -297,6 +327,7 @@ protobuf_test_SOURCES = \ google/protobuf/message_unittest.cc \ google/protobuf/reflection_ops_unittest.cc \ google/protobuf/repeated_field_unittest.cc \ + google/protobuf/repeated_field_reflection_unittest.cc \ google/protobuf/text_format_unittest.cc \ google/protobuf/unknown_field_set_unittest.cc \ google/protobuf/wire_format_unittest.cc \ @@ -310,9 +341,11 @@ protobuf_test_SOURCES = \ google/protobuf/compiler/mock_code_generator.h \ google/protobuf/compiler/parser_unittest.cc \ google/protobuf/compiler/cpp/cpp_bootstrap_unittest.cc \ + google/protobuf/compiler/cpp/cpp_unittest.h \ google/protobuf/compiler/cpp/cpp_unittest.cc \ google/protobuf/compiler/cpp/cpp_plugin_unittest.cc \ google/protobuf/compiler/java/java_plugin_unittest.cc \ + google/protobuf/compiler/java/java_doc_comment_unittest.cc \ google/protobuf/compiler/python/python_plugin_unittest.cc \ $(COMMON_TEST_SOURCES) nodist_protobuf_test_SOURCES = $(protoc_outputs) diff --git a/cpp/thirdparty/protobuf-2.3.0/src/Makefile.in b/cpp/thirdparty/protobuf-2.5.0/src/Makefile.in similarity index 68% rename from cpp/thirdparty/protobuf-2.3.0/src/Makefile.in rename to cpp/thirdparty/protobuf-2.5.0/src/Makefile.in index daf81af08..43d96ceae 100644 --- a/cpp/thirdparty/protobuf-2.3.0/src/Makefile.in +++ b/cpp/thirdparty/protobuf-2.5.0/src/Makefile.in @@ -1,8 +1,9 @@ -# Makefile.in generated by automake 1.10.1 from Makefile.am. +# Makefile.in generated by automake 1.11.3 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, -# 2003, 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc. +# 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software +# Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. @@ -19,8 +20,9 @@ VPATH = @srcdir@ pkgdatadir = $(datadir)/@PACKAGE@ -pkglibdir = $(libdir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c @@ -61,30 +63,55 @@ am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = +CONFIG_CLEAN_VPATH_FILES = am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ *) f=$$p;; \ esac; -am__strip_dir = `echo $$p | sed -e 's|^.*/||'`; +am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; +am__install_max = 40 +am__nobase_strip_setup = \ + srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` +am__nobase_strip = \ + for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" +am__nobase_list = $(am__nobase_strip_setup); \ + for p in $$list; do echo "$$p $$p"; done | \ + sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ + $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ + if (++n[$$2] == $(am__install_max)) \ + { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ + END { for (dir in files) print dir, files[dir] }' +am__base_list = \ + sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ + sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' +am__uninstall_files_from_dir = { \ + test -z "$$files" \ + || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ + || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ + $(am__cd) "$$dir" && rm -f $$files; }; \ + } am__installdirs = "$(DESTDIR)$(libdir)" "$(DESTDIR)$(bindir)" \ "$(DESTDIR)$(protodir)" "$(DESTDIR)$(includedir)" -libLTLIBRARIES_INSTALL = $(INSTALL) LTLIBRARIES = $(lib_LTLIBRARIES) am__DEPENDENCIES_1 = libprotobuf_lite_la_DEPENDENCIES = $(am__DEPENDENCIES_1) -am_libprotobuf_lite_la_OBJECTS = common.lo once.lo hash.lo \ - extension_set.lo generated_message_util.lo message_lite.lo \ - repeated_field.lo wire_format_lite.lo coded_stream.lo \ - zero_copy_stream.lo zero_copy_stream_impl_lite.lo +am_libprotobuf_lite_la_OBJECTS = atomicops_internals_x86_gcc.lo \ + atomicops_internals_x86_msvc.lo common.lo once.lo \ + stringprintf.lo extension_set.lo generated_message_util.lo \ + message_lite.lo repeated_field.lo wire_format_lite.lo \ + coded_stream.lo zero_copy_stream.lo \ + zero_copy_stream_impl_lite.lo libprotobuf_lite_la_OBJECTS = $(am_libprotobuf_lite_la_OBJECTS) libprotobuf_lite_la_LINK = $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CXXLD) $(AM_CXXFLAGS) \ $(CXXFLAGS) $(libprotobuf_lite_la_LDFLAGS) $(LDFLAGS) -o $@ libprotobuf_la_DEPENDENCIES = $(am__DEPENDENCIES_1) -am__objects_1 = common.lo once.lo hash.lo extension_set.lo \ - generated_message_util.lo message_lite.lo repeated_field.lo \ - wire_format_lite.lo coded_stream.lo zero_copy_stream.lo \ +am__objects_1 = atomicops_internals_x86_gcc.lo \ + atomicops_internals_x86_msvc.lo common.lo once.lo \ + stringprintf.lo extension_set.lo generated_message_util.lo \ + message_lite.lo repeated_field.lo wire_format_lite.lo \ + coded_stream.lo zero_copy_stream.lo \ zero_copy_stream_impl_lite.lo am_libprotobuf_la_OBJECTS = $(am__objects_1) strutil.lo substitute.lo \ structurally_valid.lo descriptor.lo descriptor.pb.lo \ @@ -106,12 +133,12 @@ am_libprotoc_la_OBJECTS = code_generator.lo command_line_interface.lo \ cpp_string_field.lo java_enum.lo java_enum_field.lo \ java_extension.lo java_field.lo java_file.lo java_generator.lo \ java_helpers.lo java_message.lo java_message_field.lo \ - java_primitive_field.lo java_service.lo python_generator.lo + java_primitive_field.lo java_service.lo java_string_field.lo \ + java_doc_comment.lo python_generator.lo libprotoc_la_OBJECTS = $(am_libprotoc_la_OBJECTS) libprotoc_la_LINK = $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CXXLD) $(AM_CXXFLAGS) \ $(CXXFLAGS) $(libprotoc_la_LDFLAGS) $(LDFLAGS) -o $@ -binPROGRAMS_INSTALL = $(INSTALL_PROGRAM) @HAVE_ZLIB_TRUE@am__EXEEXT_1 = zcgzip$(EXEEXT) zcgunzip$(EXEEXT) PROGRAMS = $(bin_PROGRAMS) am__objects_2 = protobuf_lazy_descriptor_test-test_util.$(OBJEXT) \ @@ -122,11 +149,13 @@ am_protobuf_lazy_descriptor_test_OBJECTS = \ $(am__objects_2) am__objects_3 = \ protobuf_lazy_descriptor_test-unittest_lite.pb.$(OBJEXT) \ - protobuf_lazy_descriptor_test-unittest_import_lite.pb.$(OBJEXT) + protobuf_lazy_descriptor_test-unittest_import_lite.pb.$(OBJEXT) \ + protobuf_lazy_descriptor_test-unittest_import_public_lite.pb.$(OBJEXT) am__objects_4 = $(am__objects_3) \ protobuf_lazy_descriptor_test-unittest.pb.$(OBJEXT) \ protobuf_lazy_descriptor_test-unittest_empty.pb.$(OBJEXT) \ protobuf_lazy_descriptor_test-unittest_import.pb.$(OBJEXT) \ + protobuf_lazy_descriptor_test-unittest_import_public.pb.$(OBJEXT) \ protobuf_lazy_descriptor_test-unittest_mset.pb.$(OBJEXT) \ protobuf_lazy_descriptor_test-unittest_optimize_for.pb.$(OBJEXT) \ protobuf_lazy_descriptor_test-unittest_embed_optimize_for.pb.$(OBJEXT) \ @@ -149,7 +178,8 @@ am_protobuf_lite_test_OBJECTS = \ protobuf_lite_test-lite_unittest.$(OBJEXT) \ protobuf_lite_test-test_util_lite.$(OBJEXT) am__objects_5 = protobuf_lite_test-unittest_lite.pb.$(OBJEXT) \ - protobuf_lite_test-unittest_import_lite.pb.$(OBJEXT) + protobuf_lite_test-unittest_import_lite.pb.$(OBJEXT) \ + protobuf_lite_test-unittest_import_public_lite.pb.$(OBJEXT) nodist_protobuf_lite_test_OBJECTS = $(am__objects_5) protobuf_lite_test_OBJECTS = $(am_protobuf_lite_test_OBJECTS) \ $(nodist_protobuf_lite_test_OBJECTS) @@ -166,6 +196,9 @@ am_protobuf_test_OBJECTS = protobuf_test-common_unittest.$(OBJEXT) \ protobuf_test-once_unittest.$(OBJEXT) \ protobuf_test-strutil_unittest.$(OBJEXT) \ protobuf_test-structurally_valid_unittest.$(OBJEXT) \ + protobuf_test-stringprintf_unittest.$(OBJEXT) \ + protobuf_test-template_util_unittest.$(OBJEXT) \ + protobuf_test-type_traits_unittest.$(OBJEXT) \ protobuf_test-descriptor_database_unittest.$(OBJEXT) \ protobuf_test-descriptor_unittest.$(OBJEXT) \ protobuf_test-dynamic_message_unittest.$(OBJEXT) \ @@ -174,6 +207,7 @@ am_protobuf_test_OBJECTS = protobuf_test-common_unittest.$(OBJEXT) \ protobuf_test-message_unittest.$(OBJEXT) \ protobuf_test-reflection_ops_unittest.$(OBJEXT) \ protobuf_test-repeated_field_unittest.$(OBJEXT) \ + protobuf_test-repeated_field_reflection_unittest.$(OBJEXT) \ protobuf_test-text_format_unittest.$(OBJEXT) \ protobuf_test-unknown_field_set_unittest.$(OBJEXT) \ protobuf_test-wire_format_unittest.$(OBJEXT) \ @@ -189,13 +223,16 @@ am_protobuf_test_OBJECTS = protobuf_test-common_unittest.$(OBJEXT) \ protobuf_test-cpp_unittest.$(OBJEXT) \ protobuf_test-cpp_plugin_unittest.$(OBJEXT) \ protobuf_test-java_plugin_unittest.$(OBJEXT) \ + protobuf_test-java_doc_comment_unittest.$(OBJEXT) \ protobuf_test-python_plugin_unittest.$(OBJEXT) \ $(am__objects_6) am__objects_7 = protobuf_test-unittest_lite.pb.$(OBJEXT) \ - protobuf_test-unittest_import_lite.pb.$(OBJEXT) + protobuf_test-unittest_import_lite.pb.$(OBJEXT) \ + protobuf_test-unittest_import_public_lite.pb.$(OBJEXT) am__objects_8 = $(am__objects_7) protobuf_test-unittest.pb.$(OBJEXT) \ protobuf_test-unittest_empty.pb.$(OBJEXT) \ protobuf_test-unittest_import.pb.$(OBJEXT) \ + protobuf_test-unittest_import_public.pb.$(OBJEXT) \ protobuf_test-unittest_mset.pb.$(OBJEXT) \ protobuf_test-unittest_optimize_for.pb.$(OBJEXT) \ protobuf_test-unittest_embed_optimize_for.pb.$(OBJEXT) \ @@ -234,6 +271,7 @@ zcgzip_OBJECTS = $(am_zcgzip_OBJECTS) DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) depcomp = $(SHELL) $(top_srcdir)/depcomp am__depfiles_maybe = depfiles +am__mv = mv -f CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) LTCXXCOMPILE = $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ @@ -266,14 +304,26 @@ DIST_SOURCES = $(libprotobuf_lite_la_SOURCES) \ $(protobuf_lite_test_SOURCES) $(protobuf_test_SOURCES) \ $(protoc_SOURCES) $(test_plugin_SOURCES) \ $(am__zcgunzip_SOURCES_DIST) $(am__zcgzip_SOURCES_DIST) -nobase_dist_protoDATA_INSTALL = $(install_sh_DATA) DATA = $(nobase_dist_proto_DATA) -am__nobase_include_HEADERS_DIST = google/protobuf/stubs/common.h \ - google/protobuf/stubs/once.h google/protobuf/descriptor.h \ - google/protobuf/descriptor.pb.h \ +am__nobase_include_HEADERS_DIST = google/protobuf/stubs/atomicops.h \ + google/protobuf/stubs/atomicops_internals_arm_gcc.h \ + google/protobuf/stubs/atomicops_internals_arm_qnx.h \ + google/protobuf/stubs/atomicops_internals_atomicword_compat.h \ + google/protobuf/stubs/atomicops_internals_macosx.h \ + google/protobuf/stubs/atomicops_internals_mips_gcc.h \ + google/protobuf/stubs/atomicops_internals_pnacl.h \ + google/protobuf/stubs/atomicops_internals_x86_gcc.h \ + google/protobuf/stubs/atomicops_internals_x86_msvc.h \ + google/protobuf/stubs/common.h \ + google/protobuf/stubs/platform_macros.h \ + google/protobuf/stubs/once.h \ + google/protobuf/stubs/template_util.h \ + google/protobuf/stubs/type_traits.h \ + google/protobuf/descriptor.h google/protobuf/descriptor.pb.h \ google/protobuf/descriptor_database.h \ google/protobuf/dynamic_message.h \ google/protobuf/extension_set.h \ + google/protobuf/generated_enum_reflection.h \ google/protobuf/generated_message_util.h \ google/protobuf/generated_message_reflection.h \ google/protobuf/message.h google/protobuf/message_lite.h \ @@ -299,10 +349,11 @@ am__nobase_include_HEADERS_DIST = google/protobuf/stubs/common.h \ google/protobuf/compiler/cpp/cpp_generator.h \ google/protobuf/compiler/java/java_generator.h \ google/protobuf/compiler/python/python_generator.h -nobase_includeHEADERS_INSTALL = $(install_sh_DATA) HEADERS = $(nobase_include_HEADERS) ETAGS = etags CTAGS = ctags +am__tty_colors = \ +red=; grn=; lgn=; blu=; std= @HAVE_ZLIB_TRUE@am__EXEEXT_2 = \ @HAVE_ZLIB_TRUE@ google/protobuf/io/gzip_stream_unittest.sh DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) @@ -324,6 +375,7 @@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ +DLLTOOL = @DLLTOOL@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ @@ -347,10 +399,13 @@ LIBTOOL = @LIBTOOL@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBOBJS = @LTLIBOBJS@ +MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ +MANIFEST_TOOL = @MANIFEST_TOOL@ MKDIR_P = @MKDIR_P@ NM = @NM@ NMEDIT = @NMEDIT@ +OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ @@ -359,6 +414,7 @@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ POW_LIB = @POW_LIB@ @@ -377,6 +433,7 @@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ +ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ @@ -411,7 +468,6 @@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ -lt_ECHO = @lt_ECHO@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ @@ -429,6 +485,7 @@ target_alias = @target_alias@ target_cpu = @target_cpu@ target_os = @target_os@ target_vendor = @target_vendor@ +top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ @HAVE_ZLIB_FALSE@GZCHECKPROGRAMS = @@ -457,52 +514,68 @@ MAINTAINERCLEANFILES = \ Makefile.in nobase_include_HEADERS = \ - google/protobuf/stubs/common.h \ - google/protobuf/stubs/once.h \ - google/protobuf/descriptor.h \ - google/protobuf/descriptor.pb.h \ - google/protobuf/descriptor_database.h \ - google/protobuf/dynamic_message.h \ - google/protobuf/extension_set.h \ - google/protobuf/generated_message_util.h \ - google/protobuf/generated_message_reflection.h \ - google/protobuf/message.h \ - google/protobuf/message_lite.h \ - google/protobuf/reflection_ops.h \ - google/protobuf/repeated_field.h \ - google/protobuf/service.h \ - google/protobuf/text_format.h \ - google/protobuf/unknown_field_set.h \ - google/protobuf/wire_format.h \ - google/protobuf/wire_format_lite.h \ - google/protobuf/wire_format_lite_inl.h \ - google/protobuf/io/coded_stream.h \ - $(GZHEADERS) \ - google/protobuf/io/printer.h \ - google/protobuf/io/tokenizer.h \ - google/protobuf/io/zero_copy_stream.h \ - google/protobuf/io/zero_copy_stream_impl.h \ - google/protobuf/io/zero_copy_stream_impl_lite.h \ - google/protobuf/compiler/code_generator.h \ - google/protobuf/compiler/command_line_interface.h \ - google/protobuf/compiler/importer.h \ - google/protobuf/compiler/parser.h \ - google/protobuf/compiler/plugin.h \ - google/protobuf/compiler/plugin.pb.h \ - google/protobuf/compiler/cpp/cpp_generator.h \ - google/protobuf/compiler/java/java_generator.h \ + google/protobuf/stubs/atomicops.h \ + google/protobuf/stubs/atomicops_internals_arm_gcc.h \ + google/protobuf/stubs/atomicops_internals_arm_qnx.h \ + google/protobuf/stubs/atomicops_internals_atomicword_compat.h \ + google/protobuf/stubs/atomicops_internals_macosx.h \ + google/protobuf/stubs/atomicops_internals_mips_gcc.h \ + google/protobuf/stubs/atomicops_internals_pnacl.h \ + google/protobuf/stubs/atomicops_internals_x86_gcc.h \ + google/protobuf/stubs/atomicops_internals_x86_msvc.h \ + google/protobuf/stubs/common.h \ + google/protobuf/stubs/platform_macros.h \ + google/protobuf/stubs/once.h \ + google/protobuf/stubs/template_util.h \ + google/protobuf/stubs/type_traits.h \ + google/protobuf/descriptor.h \ + google/protobuf/descriptor.pb.h \ + google/protobuf/descriptor_database.h \ + google/protobuf/dynamic_message.h \ + google/protobuf/extension_set.h \ + google/protobuf/generated_enum_reflection.h \ + google/protobuf/generated_message_util.h \ + google/protobuf/generated_message_reflection.h \ + google/protobuf/message.h \ + google/protobuf/message_lite.h \ + google/protobuf/reflection_ops.h \ + google/protobuf/repeated_field.h \ + google/protobuf/service.h \ + google/protobuf/text_format.h \ + google/protobuf/unknown_field_set.h \ + google/protobuf/wire_format.h \ + google/protobuf/wire_format_lite.h \ + google/protobuf/wire_format_lite_inl.h \ + google/protobuf/io/coded_stream.h \ + $(GZHEADERS) \ + google/protobuf/io/printer.h \ + google/protobuf/io/tokenizer.h \ + google/protobuf/io/zero_copy_stream.h \ + google/protobuf/io/zero_copy_stream_impl.h \ + google/protobuf/io/zero_copy_stream_impl_lite.h \ + google/protobuf/compiler/code_generator.h \ + google/protobuf/compiler/command_line_interface.h \ + google/protobuf/compiler/importer.h \ + google/protobuf/compiler/parser.h \ + google/protobuf/compiler/plugin.h \ + google/protobuf/compiler/plugin.pb.h \ + google/protobuf/compiler/cpp/cpp_generator.h \ + google/protobuf/compiler/java/java_generator.h \ google/protobuf/compiler/python/python_generator.h lib_LTLIBRARIES = libprotobuf-lite.la libprotobuf.la libprotoc.la libprotobuf_lite_la_LIBADD = $(PTHREAD_LIBS) -libprotobuf_lite_la_LDFLAGS = -version-info 6:0:0 -export-dynamic -no-undefined +libprotobuf_lite_la_LDFLAGS = -version-info 8:0:0 -export-dynamic -no-undefined libprotobuf_lite_la_SOURCES = \ + google/protobuf/stubs/atomicops_internals_x86_gcc.cc \ + google/protobuf/stubs/atomicops_internals_x86_msvc.cc \ google/protobuf/stubs/common.cc \ google/protobuf/stubs/once.cc \ - google/protobuf/stubs/hash.cc \ google/protobuf/stubs/hash.h \ google/protobuf/stubs/map-util.h \ - google/protobuf/stubs/stl_util-inl.h \ + google/protobuf/stubs/stl_util.h \ + google/protobuf/stubs/stringprintf.cc \ + google/protobuf/stubs/stringprintf.h \ google/protobuf/extension_set.cc \ google/protobuf/generated_message_util.cc \ google/protobuf/message_lite.cc \ @@ -514,7 +587,7 @@ libprotobuf_lite_la_SOURCES = \ google/protobuf/io/zero_copy_stream_impl_lite.cc libprotobuf_la_LIBADD = $(PTHREAD_LIBS) -libprotobuf_la_LDFLAGS = -version-info 6:0:0 -export-dynamic -no-undefined +libprotobuf_la_LDFLAGS = -version-info 8:0:0 -export-dynamic -no-undefined libprotobuf_la_SOURCES = \ $(libprotobuf_lite_la_SOURCES) \ google/protobuf/stubs/strutil.cc \ @@ -542,7 +615,7 @@ libprotobuf_la_SOURCES = \ google/protobuf/compiler/parser.cc libprotoc_la_LIBADD = $(PTHREAD_LIBS) libprotobuf.la -libprotoc_la_LDFLAGS = -version-info 6:0:0 -export-dynamic -no-undefined +libprotoc_la_LDFLAGS = -version-info 8:0:0 -export-dynamic -no-undefined libprotoc_la_SOURCES = \ google/protobuf/compiler/code_generator.cc \ google/protobuf/compiler/command_line_interface.cc \ @@ -569,6 +642,7 @@ libprotoc_la_SOURCES = \ google/protobuf/compiler/cpp/cpp_message.h \ google/protobuf/compiler/cpp/cpp_message_field.cc \ google/protobuf/compiler/cpp/cpp_message_field.h \ + google/protobuf/compiler/cpp/cpp_options.h \ google/protobuf/compiler/cpp/cpp_primitive_field.cc \ google/protobuf/compiler/cpp/cpp_primitive_field.h \ google/protobuf/compiler/cpp/cpp_service.cc \ @@ -596,6 +670,10 @@ libprotoc_la_SOURCES = \ google/protobuf/compiler/java/java_primitive_field.h \ google/protobuf/compiler/java/java_service.cc \ google/protobuf/compiler/java/java_service.h \ + google/protobuf/compiler/java/java_string_field.cc \ + google/protobuf/compiler/java/java_string_field.h \ + google/protobuf/compiler/java/java_doc_comment.cc \ + google/protobuf/compiler/java/java_doc_comment.h \ google/protobuf/compiler/python/python_generator.cc protoc_LDADD = $(PTHREAD_LIBS) libprotobuf.la libprotoc.la @@ -606,12 +684,14 @@ protoc_inputs = \ google/protobuf/unittest.proto \ google/protobuf/unittest_empty.proto \ google/protobuf/unittest_import.proto \ + google/protobuf/unittest_import_public.proto \ google/protobuf/unittest_mset.proto \ google/protobuf/unittest_optimize_for.proto \ google/protobuf/unittest_embed_optimize_for.proto \ google/protobuf/unittest_custom_options.proto \ google/protobuf/unittest_lite.proto \ google/protobuf/unittest_import_lite.proto \ + google/protobuf/unittest_import_public_lite.proto \ google/protobuf/unittest_lite_imports_nonlite.proto \ google/protobuf/unittest_no_generic_services.proto \ google/protobuf/compiler/cpp/cpp_test_bad_identifiers.proto @@ -635,7 +715,9 @@ protoc_lite_outputs = \ google/protobuf/unittest_lite.pb.cc \ google/protobuf/unittest_lite.pb.h \ google/protobuf/unittest_import_lite.pb.cc \ - google/protobuf/unittest_import_lite.pb.h + google/protobuf/unittest_import_lite.pb.h \ + google/protobuf/unittest_import_public_lite.pb.cc \ + google/protobuf/unittest_import_public_lite.pb.h protoc_outputs = \ $(protoc_lite_outputs) \ @@ -645,6 +727,8 @@ protoc_outputs = \ google/protobuf/unittest_empty.pb.h \ google/protobuf/unittest_import.pb.cc \ google/protobuf/unittest_import.pb.h \ + google/protobuf/unittest_import_public.pb.cc \ + google/protobuf/unittest_import_public.pb.h \ google/protobuf/unittest_mset.pb.cc \ google/protobuf/unittest_mset.pb.h \ google/protobuf/unittest_optimize_for.pb.cc \ @@ -685,6 +769,9 @@ protobuf_test_SOURCES = \ google/protobuf/stubs/once_unittest.cc \ google/protobuf/stubs/strutil_unittest.cc \ google/protobuf/stubs/structurally_valid_unittest.cc \ + google/protobuf/stubs/stringprintf_unittest.cc \ + google/protobuf/stubs/template_util_unittest.cc \ + google/protobuf/stubs/type_traits_unittest.cc \ google/protobuf/descriptor_database_unittest.cc \ google/protobuf/descriptor_unittest.cc \ google/protobuf/dynamic_message_unittest.cc \ @@ -693,6 +780,7 @@ protobuf_test_SOURCES = \ google/protobuf/message_unittest.cc \ google/protobuf/reflection_ops_unittest.cc \ google/protobuf/repeated_field_unittest.cc \ + google/protobuf/repeated_field_reflection_unittest.cc \ google/protobuf/text_format_unittest.cc \ google/protobuf/unknown_field_set_unittest.cc \ google/protobuf/wire_format_unittest.cc \ @@ -706,9 +794,11 @@ protobuf_test_SOURCES = \ google/protobuf/compiler/mock_code_generator.h \ google/protobuf/compiler/parser_unittest.cc \ google/protobuf/compiler/cpp/cpp_bootstrap_unittest.cc \ + google/protobuf/compiler/cpp/cpp_unittest.h \ google/protobuf/compiler/cpp/cpp_unittest.cc \ google/protobuf/compiler/cpp/cpp_plugin_unittest.cc \ google/protobuf/compiler/java/java_plugin_unittest.cc \ + google/protobuf/compiler/java/java_doc_comment_unittest.cc \ google/protobuf/compiler/python/python_plugin_unittest.cc \ $(COMMON_TEST_SOURCES) @@ -762,18 +852,18 @@ all: $(BUILT_SOURCES) .SUFFIXES: .SUFFIXES: .cc .lo .o .obj -$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) +$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ - && exit 0; \ + ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ + && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ - echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu src/Makefile'; \ - cd $(top_srcdir) && \ - $(AUTOMAKE) --gnu src/Makefile + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu src/Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --gnu src/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ @@ -787,27 +877,32 @@ Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh -$(top_srcdir)/configure: $(am__configure_deps) +$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh -$(ACLOCAL_M4): $(am__aclocal_m4_deps) +$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(am__aclocal_m4_deps): install-libLTLIBRARIES: $(lib_LTLIBRARIES) @$(NORMAL_INSTALL) test -z "$(libdir)" || $(MKDIR_P) "$(DESTDIR)$(libdir)" - @list='$(lib_LTLIBRARIES)'; for p in $$list; do \ + @list='$(lib_LTLIBRARIES)'; test -n "$(libdir)" || list=; \ + list2=; for p in $$list; do \ if test -f $$p; then \ - f=$(am__strip_dir) \ - echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(libLTLIBRARIES_INSTALL) $(INSTALL_STRIP_FLAG) '$$p' '$(DESTDIR)$(libdir)/$$f'"; \ - $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(libLTLIBRARIES_INSTALL) $(INSTALL_STRIP_FLAG) "$$p" "$(DESTDIR)$(libdir)/$$f"; \ + list2="$$list2 $$p"; \ else :; fi; \ - done + done; \ + test -z "$$list2" || { \ + echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(libdir)'"; \ + $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(libdir)"; \ + } uninstall-libLTLIBRARIES: @$(NORMAL_UNINSTALL) - @list='$(lib_LTLIBRARIES)'; for p in $$list; do \ - p=$(am__strip_dir) \ - echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f '$(DESTDIR)$(libdir)/$$p'"; \ - $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f "$(DESTDIR)$(libdir)/$$p"; \ + @list='$(lib_LTLIBRARIES)'; test -n "$(libdir)" || list=; \ + for p in $$list; do \ + $(am__strip_dir) \ + echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f '$(DESTDIR)$(libdir)/$$f'"; \ + $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f "$(DESTDIR)$(libdir)/$$f"; \ done clean-libLTLIBRARIES: @@ -818,66 +913,83 @@ clean-libLTLIBRARIES: echo "rm -f \"$${dir}/so_locations\""; \ rm -f "$${dir}/so_locations"; \ done -libprotobuf-lite.la: $(libprotobuf_lite_la_OBJECTS) $(libprotobuf_lite_la_DEPENDENCIES) +libprotobuf-lite.la: $(libprotobuf_lite_la_OBJECTS) $(libprotobuf_lite_la_DEPENDENCIES) $(EXTRA_libprotobuf_lite_la_DEPENDENCIES) $(libprotobuf_lite_la_LINK) -rpath $(libdir) $(libprotobuf_lite_la_OBJECTS) $(libprotobuf_lite_la_LIBADD) $(LIBS) -libprotobuf.la: $(libprotobuf_la_OBJECTS) $(libprotobuf_la_DEPENDENCIES) +libprotobuf.la: $(libprotobuf_la_OBJECTS) $(libprotobuf_la_DEPENDENCIES) $(EXTRA_libprotobuf_la_DEPENDENCIES) $(libprotobuf_la_LINK) -rpath $(libdir) $(libprotobuf_la_OBJECTS) $(libprotobuf_la_LIBADD) $(LIBS) -libprotoc.la: $(libprotoc_la_OBJECTS) $(libprotoc_la_DEPENDENCIES) +libprotoc.la: $(libprotoc_la_OBJECTS) $(libprotoc_la_DEPENDENCIES) $(EXTRA_libprotoc_la_DEPENDENCIES) $(libprotoc_la_LINK) -rpath $(libdir) $(libprotoc_la_OBJECTS) $(libprotoc_la_LIBADD) $(LIBS) install-binPROGRAMS: $(bin_PROGRAMS) @$(NORMAL_INSTALL) test -z "$(bindir)" || $(MKDIR_P) "$(DESTDIR)$(bindir)" - @list='$(bin_PROGRAMS)'; for p in $$list; do \ - p1=`echo $$p|sed 's/$(EXEEXT)$$//'`; \ - if test -f $$p \ - || test -f $$p1 \ - ; then \ - f=`echo "$$p1" | sed 's,^.*/,,;$(transform);s/$$/$(EXEEXT)/'`; \ - echo " $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(binPROGRAMS_INSTALL) '$$p' '$(DESTDIR)$(bindir)/$$f'"; \ - $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(binPROGRAMS_INSTALL) "$$p" "$(DESTDIR)$(bindir)/$$f" || exit 1; \ - else :; fi; \ - done + @list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \ + for p in $$list; do echo "$$p $$p"; done | \ + sed 's/$(EXEEXT)$$//' | \ + while read p p1; do if test -f $$p || test -f $$p1; \ + then echo "$$p"; echo "$$p"; else :; fi; \ + done | \ + sed -e 'p;s,.*/,,;n;h' -e 's|.*|.|' \ + -e 'p;x;s,.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/' | \ + sed 'N;N;N;s,\n, ,g' | \ + $(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1 } \ + { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \ + if ($$2 == $$4) files[d] = files[d] " " $$1; \ + else { print "f", $$3 "/" $$4, $$1; } } \ + END { for (d in files) print "f", d, files[d] }' | \ + while read type dir files; do \ + if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \ + test -z "$$files" || { \ + echo " $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL_PROGRAM) $$files '$(DESTDIR)$(bindir)$$dir'"; \ + $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL_PROGRAM) $$files "$(DESTDIR)$(bindir)$$dir" || exit $$?; \ + } \ + ; done uninstall-binPROGRAMS: @$(NORMAL_UNINSTALL) - @list='$(bin_PROGRAMS)'; for p in $$list; do \ - f=`echo "$$p" | sed 's,^.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/'`; \ - echo " rm -f '$(DESTDIR)$(bindir)/$$f'"; \ - rm -f "$(DESTDIR)$(bindir)/$$f"; \ - done + @list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \ + files=`for p in $$list; do echo "$$p"; done | \ + sed -e 'h;s,^.*/,,;s/$(EXEEXT)$$//;$(transform)' \ + -e 's/$$/$(EXEEXT)/' `; \ + test -n "$$list" || exit 0; \ + echo " ( cd '$(DESTDIR)$(bindir)' && rm -f" $$files ")"; \ + cd "$(DESTDIR)$(bindir)" && rm -f $$files clean-binPROGRAMS: - @list='$(bin_PROGRAMS)'; for p in $$list; do \ - f=`echo $$p|sed 's/$(EXEEXT)$$//'`; \ - echo " rm -f $$p $$f"; \ - rm -f $$p $$f ; \ - done + @list='$(bin_PROGRAMS)'; test -n "$$list" || exit 0; \ + echo " rm -f" $$list; \ + rm -f $$list || exit $$?; \ + test -n "$(EXEEXT)" || exit 0; \ + list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \ + echo " rm -f" $$list; \ + rm -f $$list clean-checkPROGRAMS: - @list='$(check_PROGRAMS)'; for p in $$list; do \ - f=`echo $$p|sed 's/$(EXEEXT)$$//'`; \ - echo " rm -f $$p $$f"; \ - rm -f $$p $$f ; \ - done -protobuf-lazy-descriptor-test$(EXEEXT): $(protobuf_lazy_descriptor_test_OBJECTS) $(protobuf_lazy_descriptor_test_DEPENDENCIES) + @list='$(check_PROGRAMS)'; test -n "$$list" || exit 0; \ + echo " rm -f" $$list; \ + rm -f $$list || exit $$?; \ + test -n "$(EXEEXT)" || exit 0; \ + list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \ + echo " rm -f" $$list; \ + rm -f $$list +protobuf-lazy-descriptor-test$(EXEEXT): $(protobuf_lazy_descriptor_test_OBJECTS) $(protobuf_lazy_descriptor_test_DEPENDENCIES) $(EXTRA_protobuf_lazy_descriptor_test_DEPENDENCIES) @rm -f protobuf-lazy-descriptor-test$(EXEEXT) $(protobuf_lazy_descriptor_test_LINK) $(protobuf_lazy_descriptor_test_OBJECTS) $(protobuf_lazy_descriptor_test_LDADD) $(LIBS) -protobuf-lite-test$(EXEEXT): $(protobuf_lite_test_OBJECTS) $(protobuf_lite_test_DEPENDENCIES) +protobuf-lite-test$(EXEEXT): $(protobuf_lite_test_OBJECTS) $(protobuf_lite_test_DEPENDENCIES) $(EXTRA_protobuf_lite_test_DEPENDENCIES) @rm -f protobuf-lite-test$(EXEEXT) $(protobuf_lite_test_LINK) $(protobuf_lite_test_OBJECTS) $(protobuf_lite_test_LDADD) $(LIBS) -protobuf-test$(EXEEXT): $(protobuf_test_OBJECTS) $(protobuf_test_DEPENDENCIES) +protobuf-test$(EXEEXT): $(protobuf_test_OBJECTS) $(protobuf_test_DEPENDENCIES) $(EXTRA_protobuf_test_DEPENDENCIES) @rm -f protobuf-test$(EXEEXT) $(protobuf_test_LINK) $(protobuf_test_OBJECTS) $(protobuf_test_LDADD) $(LIBS) -protoc$(EXEEXT): $(protoc_OBJECTS) $(protoc_DEPENDENCIES) +protoc$(EXEEXT): $(protoc_OBJECTS) $(protoc_DEPENDENCIES) $(EXTRA_protoc_DEPENDENCIES) @rm -f protoc$(EXEEXT) $(CXXLINK) $(protoc_OBJECTS) $(protoc_LDADD) $(LIBS) -test_plugin$(EXEEXT): $(test_plugin_OBJECTS) $(test_plugin_DEPENDENCIES) +test_plugin$(EXEEXT): $(test_plugin_OBJECTS) $(test_plugin_DEPENDENCIES) $(EXTRA_test_plugin_DEPENDENCIES) @rm -f test_plugin$(EXEEXT) $(CXXLINK) $(test_plugin_OBJECTS) $(test_plugin_LDADD) $(LIBS) -zcgunzip$(EXEEXT): $(zcgunzip_OBJECTS) $(zcgunzip_DEPENDENCIES) +zcgunzip$(EXEEXT): $(zcgunzip_OBJECTS) $(zcgunzip_DEPENDENCIES) $(EXTRA_zcgunzip_DEPENDENCIES) @rm -f zcgunzip$(EXEEXT) $(CXXLINK) $(zcgunzip_OBJECTS) $(zcgunzip_LDADD) $(LIBS) -zcgzip$(EXEEXT): $(zcgzip_OBJECTS) $(zcgzip_DEPENDENCIES) +zcgzip$(EXEEXT): $(zcgzip_OBJECTS) $(zcgzip_DEPENDENCIES) $(EXTRA_zcgzip_DEPENDENCIES) @rm -f zcgzip$(EXEEXT) $(CXXLINK) $(zcgzip_OBJECTS) $(zcgzip_LDADD) $(LIBS) @@ -887,6 +999,8 @@ mostlyclean-compile: distclean-compile: -rm -f *.tab.c +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/atomicops_internals_x86_gcc.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/atomicops_internals_x86_msvc.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/code_generator.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/coded_stream.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/command_line_interface.Plo@am__quote@ @@ -912,8 +1026,8 @@ distclean-compile: @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/generated_message_reflection.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/generated_message_util.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gzip_stream.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/hash.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/importer.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/java_doc_comment.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/java_enum.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/java_enum_field.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/java_extension.Plo@am__quote@ @@ -925,6 +1039,7 @@ distclean-compile: @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/java_message_field.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/java_primitive_field.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/java_service.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/java_string_field.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/main.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/message.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/message_lite.Plo@am__quote@ @@ -944,6 +1059,8 @@ distclean-compile: @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/protobuf_lazy_descriptor_test-unittest_empty.pb.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/protobuf_lazy_descriptor_test-unittest_import.pb.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/protobuf_lazy_descriptor_test-unittest_import_lite.pb.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/protobuf_lazy_descriptor_test-unittest_import_public.pb.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/protobuf_lazy_descriptor_test-unittest_import_public_lite.pb.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/protobuf_lazy_descriptor_test-unittest_lite.pb.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/protobuf_lazy_descriptor_test-unittest_lite_imports_nonlite.pb.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/protobuf_lazy_descriptor_test-unittest_mset.pb.Po@am__quote@ @@ -952,6 +1069,7 @@ distclean-compile: @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/protobuf_lite_test-lite_unittest.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/protobuf_lite_test-test_util_lite.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/protobuf_lite_test-unittest_import_lite.pb.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/protobuf_lite_test-unittest_import_public_lite.pb.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/protobuf_lite_test-unittest_lite.pb.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/protobuf_test-coded_stream_unittest.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/protobuf_test-command_line_interface_unittest.Po@am__quote@ @@ -968,6 +1086,7 @@ distclean-compile: @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/protobuf_test-generated_message_reflection_unittest.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/protobuf_test-googletest.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/protobuf_test-importer_unittest.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/protobuf_test-java_doc_comment_unittest.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/protobuf_test-java_plugin_unittest.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/protobuf_test-message_unittest.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/protobuf_test-mock_code_generator.Po@am__quote@ @@ -976,18 +1095,24 @@ distclean-compile: @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/protobuf_test-printer_unittest.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/protobuf_test-python_plugin_unittest.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/protobuf_test-reflection_ops_unittest.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/protobuf_test-repeated_field_reflection_unittest.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/protobuf_test-repeated_field_unittest.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/protobuf_test-stringprintf_unittest.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/protobuf_test-structurally_valid_unittest.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/protobuf_test-strutil_unittest.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/protobuf_test-template_util_unittest.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/protobuf_test-test_util.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/protobuf_test-text_format_unittest.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/protobuf_test-tokenizer_unittest.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/protobuf_test-type_traits_unittest.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/protobuf_test-unittest.pb.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/protobuf_test-unittest_custom_options.pb.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/protobuf_test-unittest_embed_optimize_for.pb.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/protobuf_test-unittest_empty.pb.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/protobuf_test-unittest_import.pb.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/protobuf_test-unittest_import_lite.pb.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/protobuf_test-unittest_import_public.pb.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/protobuf_test-unittest_import_public_lite.pb.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/protobuf_test-unittest_lite.pb.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/protobuf_test-unittest_lite_imports_nonlite.pb.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/protobuf_test-unittest_mset.pb.Po@am__quote@ @@ -1000,6 +1125,7 @@ distclean-compile: @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/reflection_ops.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/repeated_field.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/service.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/stringprintf.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/structurally_valid.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/strutil.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/subprocess.Plo@am__quote@ @@ -1021,1421 +1147,1589 @@ distclean-compile: .cc.o: @am__fastdepCXX_TRUE@ $(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< -@am__fastdepCXX_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(CXXCOMPILE) -c -o $@ $< .cc.obj: @am__fastdepCXX_TRUE@ $(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` -@am__fastdepCXX_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'` .cc.lo: @am__fastdepCXX_TRUE@ $(LTCXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< -@am__fastdepCXX_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo +@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(LTCXXCOMPILE) -c -o $@ $< +atomicops_internals_x86_gcc.lo: google/protobuf/stubs/atomicops_internals_x86_gcc.cc +@am__fastdepCXX_TRUE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT atomicops_internals_x86_gcc.lo -MD -MP -MF $(DEPDIR)/atomicops_internals_x86_gcc.Tpo -c -o atomicops_internals_x86_gcc.lo `test -f 'google/protobuf/stubs/atomicops_internals_x86_gcc.cc' || echo '$(srcdir)/'`google/protobuf/stubs/atomicops_internals_x86_gcc.cc +@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/atomicops_internals_x86_gcc.Tpo $(DEPDIR)/atomicops_internals_x86_gcc.Plo +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='google/protobuf/stubs/atomicops_internals_x86_gcc.cc' object='atomicops_internals_x86_gcc.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o atomicops_internals_x86_gcc.lo `test -f 'google/protobuf/stubs/atomicops_internals_x86_gcc.cc' || echo '$(srcdir)/'`google/protobuf/stubs/atomicops_internals_x86_gcc.cc + +atomicops_internals_x86_msvc.lo: google/protobuf/stubs/atomicops_internals_x86_msvc.cc +@am__fastdepCXX_TRUE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT atomicops_internals_x86_msvc.lo -MD -MP -MF $(DEPDIR)/atomicops_internals_x86_msvc.Tpo -c -o atomicops_internals_x86_msvc.lo `test -f 'google/protobuf/stubs/atomicops_internals_x86_msvc.cc' || echo '$(srcdir)/'`google/protobuf/stubs/atomicops_internals_x86_msvc.cc +@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/atomicops_internals_x86_msvc.Tpo $(DEPDIR)/atomicops_internals_x86_msvc.Plo +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='google/protobuf/stubs/atomicops_internals_x86_msvc.cc' object='atomicops_internals_x86_msvc.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o atomicops_internals_x86_msvc.lo `test -f 'google/protobuf/stubs/atomicops_internals_x86_msvc.cc' || echo '$(srcdir)/'`google/protobuf/stubs/atomicops_internals_x86_msvc.cc + common.lo: google/protobuf/stubs/common.cc -@am__fastdepCXX_TRUE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT common.lo -MD -MP -MF $(DEPDIR)/common.Tpo -c -o common.lo `test -f 'google/protobuf/stubs/common.cc' || echo '$(srcdir)/'`google/protobuf/stubs/common.cc -@am__fastdepCXX_TRUE@ mv -f $(DEPDIR)/common.Tpo $(DEPDIR)/common.Plo +@am__fastdepCXX_TRUE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT common.lo -MD -MP -MF $(DEPDIR)/common.Tpo -c -o common.lo `test -f 'google/protobuf/stubs/common.cc' || echo '$(srcdir)/'`google/protobuf/stubs/common.cc +@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/common.Tpo $(DEPDIR)/common.Plo @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='google/protobuf/stubs/common.cc' object='common.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o common.lo `test -f 'google/protobuf/stubs/common.cc' || echo '$(srcdir)/'`google/protobuf/stubs/common.cc +@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o common.lo `test -f 'google/protobuf/stubs/common.cc' || echo '$(srcdir)/'`google/protobuf/stubs/common.cc once.lo: google/protobuf/stubs/once.cc -@am__fastdepCXX_TRUE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT once.lo -MD -MP -MF $(DEPDIR)/once.Tpo -c -o once.lo `test -f 'google/protobuf/stubs/once.cc' || echo '$(srcdir)/'`google/protobuf/stubs/once.cc -@am__fastdepCXX_TRUE@ mv -f $(DEPDIR)/once.Tpo $(DEPDIR)/once.Plo +@am__fastdepCXX_TRUE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT once.lo -MD -MP -MF $(DEPDIR)/once.Tpo -c -o once.lo `test -f 'google/protobuf/stubs/once.cc' || echo '$(srcdir)/'`google/protobuf/stubs/once.cc +@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/once.Tpo $(DEPDIR)/once.Plo @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='google/protobuf/stubs/once.cc' object='once.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o once.lo `test -f 'google/protobuf/stubs/once.cc' || echo '$(srcdir)/'`google/protobuf/stubs/once.cc +@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o once.lo `test -f 'google/protobuf/stubs/once.cc' || echo '$(srcdir)/'`google/protobuf/stubs/once.cc -hash.lo: google/protobuf/stubs/hash.cc -@am__fastdepCXX_TRUE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT hash.lo -MD -MP -MF $(DEPDIR)/hash.Tpo -c -o hash.lo `test -f 'google/protobuf/stubs/hash.cc' || echo '$(srcdir)/'`google/protobuf/stubs/hash.cc -@am__fastdepCXX_TRUE@ mv -f $(DEPDIR)/hash.Tpo $(DEPDIR)/hash.Plo -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='google/protobuf/stubs/hash.cc' object='hash.lo' libtool=yes @AMDEPBACKSLASH@ +stringprintf.lo: google/protobuf/stubs/stringprintf.cc +@am__fastdepCXX_TRUE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT stringprintf.lo -MD -MP -MF $(DEPDIR)/stringprintf.Tpo -c -o stringprintf.lo `test -f 'google/protobuf/stubs/stringprintf.cc' || echo '$(srcdir)/'`google/protobuf/stubs/stringprintf.cc +@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/stringprintf.Tpo $(DEPDIR)/stringprintf.Plo +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='google/protobuf/stubs/stringprintf.cc' object='stringprintf.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o hash.lo `test -f 'google/protobuf/stubs/hash.cc' || echo '$(srcdir)/'`google/protobuf/stubs/hash.cc +@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o stringprintf.lo `test -f 'google/protobuf/stubs/stringprintf.cc' || echo '$(srcdir)/'`google/protobuf/stubs/stringprintf.cc extension_set.lo: google/protobuf/extension_set.cc -@am__fastdepCXX_TRUE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT extension_set.lo -MD -MP -MF $(DEPDIR)/extension_set.Tpo -c -o extension_set.lo `test -f 'google/protobuf/extension_set.cc' || echo '$(srcdir)/'`google/protobuf/extension_set.cc -@am__fastdepCXX_TRUE@ mv -f $(DEPDIR)/extension_set.Tpo $(DEPDIR)/extension_set.Plo +@am__fastdepCXX_TRUE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT extension_set.lo -MD -MP -MF $(DEPDIR)/extension_set.Tpo -c -o extension_set.lo `test -f 'google/protobuf/extension_set.cc' || echo '$(srcdir)/'`google/protobuf/extension_set.cc +@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/extension_set.Tpo $(DEPDIR)/extension_set.Plo @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='google/protobuf/extension_set.cc' object='extension_set.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o extension_set.lo `test -f 'google/protobuf/extension_set.cc' || echo '$(srcdir)/'`google/protobuf/extension_set.cc +@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o extension_set.lo `test -f 'google/protobuf/extension_set.cc' || echo '$(srcdir)/'`google/protobuf/extension_set.cc generated_message_util.lo: google/protobuf/generated_message_util.cc -@am__fastdepCXX_TRUE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT generated_message_util.lo -MD -MP -MF $(DEPDIR)/generated_message_util.Tpo -c -o generated_message_util.lo `test -f 'google/protobuf/generated_message_util.cc' || echo '$(srcdir)/'`google/protobuf/generated_message_util.cc -@am__fastdepCXX_TRUE@ mv -f $(DEPDIR)/generated_message_util.Tpo $(DEPDIR)/generated_message_util.Plo +@am__fastdepCXX_TRUE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT generated_message_util.lo -MD -MP -MF $(DEPDIR)/generated_message_util.Tpo -c -o generated_message_util.lo `test -f 'google/protobuf/generated_message_util.cc' || echo '$(srcdir)/'`google/protobuf/generated_message_util.cc +@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/generated_message_util.Tpo $(DEPDIR)/generated_message_util.Plo @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='google/protobuf/generated_message_util.cc' object='generated_message_util.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o generated_message_util.lo `test -f 'google/protobuf/generated_message_util.cc' || echo '$(srcdir)/'`google/protobuf/generated_message_util.cc +@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o generated_message_util.lo `test -f 'google/protobuf/generated_message_util.cc' || echo '$(srcdir)/'`google/protobuf/generated_message_util.cc message_lite.lo: google/protobuf/message_lite.cc -@am__fastdepCXX_TRUE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT message_lite.lo -MD -MP -MF $(DEPDIR)/message_lite.Tpo -c -o message_lite.lo `test -f 'google/protobuf/message_lite.cc' || echo '$(srcdir)/'`google/protobuf/message_lite.cc -@am__fastdepCXX_TRUE@ mv -f $(DEPDIR)/message_lite.Tpo $(DEPDIR)/message_lite.Plo +@am__fastdepCXX_TRUE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT message_lite.lo -MD -MP -MF $(DEPDIR)/message_lite.Tpo -c -o message_lite.lo `test -f 'google/protobuf/message_lite.cc' || echo '$(srcdir)/'`google/protobuf/message_lite.cc +@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/message_lite.Tpo $(DEPDIR)/message_lite.Plo @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='google/protobuf/message_lite.cc' object='message_lite.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o message_lite.lo `test -f 'google/protobuf/message_lite.cc' || echo '$(srcdir)/'`google/protobuf/message_lite.cc +@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o message_lite.lo `test -f 'google/protobuf/message_lite.cc' || echo '$(srcdir)/'`google/protobuf/message_lite.cc repeated_field.lo: google/protobuf/repeated_field.cc -@am__fastdepCXX_TRUE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT repeated_field.lo -MD -MP -MF $(DEPDIR)/repeated_field.Tpo -c -o repeated_field.lo `test -f 'google/protobuf/repeated_field.cc' || echo '$(srcdir)/'`google/protobuf/repeated_field.cc -@am__fastdepCXX_TRUE@ mv -f $(DEPDIR)/repeated_field.Tpo $(DEPDIR)/repeated_field.Plo +@am__fastdepCXX_TRUE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT repeated_field.lo -MD -MP -MF $(DEPDIR)/repeated_field.Tpo -c -o repeated_field.lo `test -f 'google/protobuf/repeated_field.cc' || echo '$(srcdir)/'`google/protobuf/repeated_field.cc +@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/repeated_field.Tpo $(DEPDIR)/repeated_field.Plo @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='google/protobuf/repeated_field.cc' object='repeated_field.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o repeated_field.lo `test -f 'google/protobuf/repeated_field.cc' || echo '$(srcdir)/'`google/protobuf/repeated_field.cc +@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o repeated_field.lo `test -f 'google/protobuf/repeated_field.cc' || echo '$(srcdir)/'`google/protobuf/repeated_field.cc wire_format_lite.lo: google/protobuf/wire_format_lite.cc -@am__fastdepCXX_TRUE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT wire_format_lite.lo -MD -MP -MF $(DEPDIR)/wire_format_lite.Tpo -c -o wire_format_lite.lo `test -f 'google/protobuf/wire_format_lite.cc' || echo '$(srcdir)/'`google/protobuf/wire_format_lite.cc -@am__fastdepCXX_TRUE@ mv -f $(DEPDIR)/wire_format_lite.Tpo $(DEPDIR)/wire_format_lite.Plo +@am__fastdepCXX_TRUE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT wire_format_lite.lo -MD -MP -MF $(DEPDIR)/wire_format_lite.Tpo -c -o wire_format_lite.lo `test -f 'google/protobuf/wire_format_lite.cc' || echo '$(srcdir)/'`google/protobuf/wire_format_lite.cc +@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/wire_format_lite.Tpo $(DEPDIR)/wire_format_lite.Plo @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='google/protobuf/wire_format_lite.cc' object='wire_format_lite.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o wire_format_lite.lo `test -f 'google/protobuf/wire_format_lite.cc' || echo '$(srcdir)/'`google/protobuf/wire_format_lite.cc +@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o wire_format_lite.lo `test -f 'google/protobuf/wire_format_lite.cc' || echo '$(srcdir)/'`google/protobuf/wire_format_lite.cc coded_stream.lo: google/protobuf/io/coded_stream.cc -@am__fastdepCXX_TRUE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT coded_stream.lo -MD -MP -MF $(DEPDIR)/coded_stream.Tpo -c -o coded_stream.lo `test -f 'google/protobuf/io/coded_stream.cc' || echo '$(srcdir)/'`google/protobuf/io/coded_stream.cc -@am__fastdepCXX_TRUE@ mv -f $(DEPDIR)/coded_stream.Tpo $(DEPDIR)/coded_stream.Plo +@am__fastdepCXX_TRUE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT coded_stream.lo -MD -MP -MF $(DEPDIR)/coded_stream.Tpo -c -o coded_stream.lo `test -f 'google/protobuf/io/coded_stream.cc' || echo '$(srcdir)/'`google/protobuf/io/coded_stream.cc +@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/coded_stream.Tpo $(DEPDIR)/coded_stream.Plo @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='google/protobuf/io/coded_stream.cc' object='coded_stream.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o coded_stream.lo `test -f 'google/protobuf/io/coded_stream.cc' || echo '$(srcdir)/'`google/protobuf/io/coded_stream.cc +@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o coded_stream.lo `test -f 'google/protobuf/io/coded_stream.cc' || echo '$(srcdir)/'`google/protobuf/io/coded_stream.cc zero_copy_stream.lo: google/protobuf/io/zero_copy_stream.cc -@am__fastdepCXX_TRUE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT zero_copy_stream.lo -MD -MP -MF $(DEPDIR)/zero_copy_stream.Tpo -c -o zero_copy_stream.lo `test -f 'google/protobuf/io/zero_copy_stream.cc' || echo '$(srcdir)/'`google/protobuf/io/zero_copy_stream.cc -@am__fastdepCXX_TRUE@ mv -f $(DEPDIR)/zero_copy_stream.Tpo $(DEPDIR)/zero_copy_stream.Plo +@am__fastdepCXX_TRUE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT zero_copy_stream.lo -MD -MP -MF $(DEPDIR)/zero_copy_stream.Tpo -c -o zero_copy_stream.lo `test -f 'google/protobuf/io/zero_copy_stream.cc' || echo '$(srcdir)/'`google/protobuf/io/zero_copy_stream.cc +@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/zero_copy_stream.Tpo $(DEPDIR)/zero_copy_stream.Plo @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='google/protobuf/io/zero_copy_stream.cc' object='zero_copy_stream.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o zero_copy_stream.lo `test -f 'google/protobuf/io/zero_copy_stream.cc' || echo '$(srcdir)/'`google/protobuf/io/zero_copy_stream.cc +@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o zero_copy_stream.lo `test -f 'google/protobuf/io/zero_copy_stream.cc' || echo '$(srcdir)/'`google/protobuf/io/zero_copy_stream.cc zero_copy_stream_impl_lite.lo: google/protobuf/io/zero_copy_stream_impl_lite.cc -@am__fastdepCXX_TRUE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT zero_copy_stream_impl_lite.lo -MD -MP -MF $(DEPDIR)/zero_copy_stream_impl_lite.Tpo -c -o zero_copy_stream_impl_lite.lo `test -f 'google/protobuf/io/zero_copy_stream_impl_lite.cc' || echo '$(srcdir)/'`google/protobuf/io/zero_copy_stream_impl_lite.cc -@am__fastdepCXX_TRUE@ mv -f $(DEPDIR)/zero_copy_stream_impl_lite.Tpo $(DEPDIR)/zero_copy_stream_impl_lite.Plo +@am__fastdepCXX_TRUE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT zero_copy_stream_impl_lite.lo -MD -MP -MF $(DEPDIR)/zero_copy_stream_impl_lite.Tpo -c -o zero_copy_stream_impl_lite.lo `test -f 'google/protobuf/io/zero_copy_stream_impl_lite.cc' || echo '$(srcdir)/'`google/protobuf/io/zero_copy_stream_impl_lite.cc +@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/zero_copy_stream_impl_lite.Tpo $(DEPDIR)/zero_copy_stream_impl_lite.Plo @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='google/protobuf/io/zero_copy_stream_impl_lite.cc' object='zero_copy_stream_impl_lite.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o zero_copy_stream_impl_lite.lo `test -f 'google/protobuf/io/zero_copy_stream_impl_lite.cc' || echo '$(srcdir)/'`google/protobuf/io/zero_copy_stream_impl_lite.cc +@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o zero_copy_stream_impl_lite.lo `test -f 'google/protobuf/io/zero_copy_stream_impl_lite.cc' || echo '$(srcdir)/'`google/protobuf/io/zero_copy_stream_impl_lite.cc strutil.lo: google/protobuf/stubs/strutil.cc -@am__fastdepCXX_TRUE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT strutil.lo -MD -MP -MF $(DEPDIR)/strutil.Tpo -c -o strutil.lo `test -f 'google/protobuf/stubs/strutil.cc' || echo '$(srcdir)/'`google/protobuf/stubs/strutil.cc -@am__fastdepCXX_TRUE@ mv -f $(DEPDIR)/strutil.Tpo $(DEPDIR)/strutil.Plo +@am__fastdepCXX_TRUE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT strutil.lo -MD -MP -MF $(DEPDIR)/strutil.Tpo -c -o strutil.lo `test -f 'google/protobuf/stubs/strutil.cc' || echo '$(srcdir)/'`google/protobuf/stubs/strutil.cc +@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/strutil.Tpo $(DEPDIR)/strutil.Plo @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='google/protobuf/stubs/strutil.cc' object='strutil.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o strutil.lo `test -f 'google/protobuf/stubs/strutil.cc' || echo '$(srcdir)/'`google/protobuf/stubs/strutil.cc +@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o strutil.lo `test -f 'google/protobuf/stubs/strutil.cc' || echo '$(srcdir)/'`google/protobuf/stubs/strutil.cc substitute.lo: google/protobuf/stubs/substitute.cc -@am__fastdepCXX_TRUE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT substitute.lo -MD -MP -MF $(DEPDIR)/substitute.Tpo -c -o substitute.lo `test -f 'google/protobuf/stubs/substitute.cc' || echo '$(srcdir)/'`google/protobuf/stubs/substitute.cc -@am__fastdepCXX_TRUE@ mv -f $(DEPDIR)/substitute.Tpo $(DEPDIR)/substitute.Plo +@am__fastdepCXX_TRUE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT substitute.lo -MD -MP -MF $(DEPDIR)/substitute.Tpo -c -o substitute.lo `test -f 'google/protobuf/stubs/substitute.cc' || echo '$(srcdir)/'`google/protobuf/stubs/substitute.cc +@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/substitute.Tpo $(DEPDIR)/substitute.Plo @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='google/protobuf/stubs/substitute.cc' object='substitute.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o substitute.lo `test -f 'google/protobuf/stubs/substitute.cc' || echo '$(srcdir)/'`google/protobuf/stubs/substitute.cc +@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o substitute.lo `test -f 'google/protobuf/stubs/substitute.cc' || echo '$(srcdir)/'`google/protobuf/stubs/substitute.cc structurally_valid.lo: google/protobuf/stubs/structurally_valid.cc -@am__fastdepCXX_TRUE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT structurally_valid.lo -MD -MP -MF $(DEPDIR)/structurally_valid.Tpo -c -o structurally_valid.lo `test -f 'google/protobuf/stubs/structurally_valid.cc' || echo '$(srcdir)/'`google/protobuf/stubs/structurally_valid.cc -@am__fastdepCXX_TRUE@ mv -f $(DEPDIR)/structurally_valid.Tpo $(DEPDIR)/structurally_valid.Plo +@am__fastdepCXX_TRUE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT structurally_valid.lo -MD -MP -MF $(DEPDIR)/structurally_valid.Tpo -c -o structurally_valid.lo `test -f 'google/protobuf/stubs/structurally_valid.cc' || echo '$(srcdir)/'`google/protobuf/stubs/structurally_valid.cc +@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/structurally_valid.Tpo $(DEPDIR)/structurally_valid.Plo @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='google/protobuf/stubs/structurally_valid.cc' object='structurally_valid.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o structurally_valid.lo `test -f 'google/protobuf/stubs/structurally_valid.cc' || echo '$(srcdir)/'`google/protobuf/stubs/structurally_valid.cc +@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o structurally_valid.lo `test -f 'google/protobuf/stubs/structurally_valid.cc' || echo '$(srcdir)/'`google/protobuf/stubs/structurally_valid.cc descriptor.lo: google/protobuf/descriptor.cc -@am__fastdepCXX_TRUE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT descriptor.lo -MD -MP -MF $(DEPDIR)/descriptor.Tpo -c -o descriptor.lo `test -f 'google/protobuf/descriptor.cc' || echo '$(srcdir)/'`google/protobuf/descriptor.cc -@am__fastdepCXX_TRUE@ mv -f $(DEPDIR)/descriptor.Tpo $(DEPDIR)/descriptor.Plo +@am__fastdepCXX_TRUE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT descriptor.lo -MD -MP -MF $(DEPDIR)/descriptor.Tpo -c -o descriptor.lo `test -f 'google/protobuf/descriptor.cc' || echo '$(srcdir)/'`google/protobuf/descriptor.cc +@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/descriptor.Tpo $(DEPDIR)/descriptor.Plo @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='google/protobuf/descriptor.cc' object='descriptor.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o descriptor.lo `test -f 'google/protobuf/descriptor.cc' || echo '$(srcdir)/'`google/protobuf/descriptor.cc +@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o descriptor.lo `test -f 'google/protobuf/descriptor.cc' || echo '$(srcdir)/'`google/protobuf/descriptor.cc descriptor.pb.lo: google/protobuf/descriptor.pb.cc -@am__fastdepCXX_TRUE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT descriptor.pb.lo -MD -MP -MF $(DEPDIR)/descriptor.pb.Tpo -c -o descriptor.pb.lo `test -f 'google/protobuf/descriptor.pb.cc' || echo '$(srcdir)/'`google/protobuf/descriptor.pb.cc -@am__fastdepCXX_TRUE@ mv -f $(DEPDIR)/descriptor.pb.Tpo $(DEPDIR)/descriptor.pb.Plo +@am__fastdepCXX_TRUE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT descriptor.pb.lo -MD -MP -MF $(DEPDIR)/descriptor.pb.Tpo -c -o descriptor.pb.lo `test -f 'google/protobuf/descriptor.pb.cc' || echo '$(srcdir)/'`google/protobuf/descriptor.pb.cc +@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/descriptor.pb.Tpo $(DEPDIR)/descriptor.pb.Plo @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='google/protobuf/descriptor.pb.cc' object='descriptor.pb.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o descriptor.pb.lo `test -f 'google/protobuf/descriptor.pb.cc' || echo '$(srcdir)/'`google/protobuf/descriptor.pb.cc +@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o descriptor.pb.lo `test -f 'google/protobuf/descriptor.pb.cc' || echo '$(srcdir)/'`google/protobuf/descriptor.pb.cc descriptor_database.lo: google/protobuf/descriptor_database.cc -@am__fastdepCXX_TRUE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT descriptor_database.lo -MD -MP -MF $(DEPDIR)/descriptor_database.Tpo -c -o descriptor_database.lo `test -f 'google/protobuf/descriptor_database.cc' || echo '$(srcdir)/'`google/protobuf/descriptor_database.cc -@am__fastdepCXX_TRUE@ mv -f $(DEPDIR)/descriptor_database.Tpo $(DEPDIR)/descriptor_database.Plo +@am__fastdepCXX_TRUE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT descriptor_database.lo -MD -MP -MF $(DEPDIR)/descriptor_database.Tpo -c -o descriptor_database.lo `test -f 'google/protobuf/descriptor_database.cc' || echo '$(srcdir)/'`google/protobuf/descriptor_database.cc +@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/descriptor_database.Tpo $(DEPDIR)/descriptor_database.Plo @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='google/protobuf/descriptor_database.cc' object='descriptor_database.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o descriptor_database.lo `test -f 'google/protobuf/descriptor_database.cc' || echo '$(srcdir)/'`google/protobuf/descriptor_database.cc +@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o descriptor_database.lo `test -f 'google/protobuf/descriptor_database.cc' || echo '$(srcdir)/'`google/protobuf/descriptor_database.cc dynamic_message.lo: google/protobuf/dynamic_message.cc -@am__fastdepCXX_TRUE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT dynamic_message.lo -MD -MP -MF $(DEPDIR)/dynamic_message.Tpo -c -o dynamic_message.lo `test -f 'google/protobuf/dynamic_message.cc' || echo '$(srcdir)/'`google/protobuf/dynamic_message.cc -@am__fastdepCXX_TRUE@ mv -f $(DEPDIR)/dynamic_message.Tpo $(DEPDIR)/dynamic_message.Plo +@am__fastdepCXX_TRUE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT dynamic_message.lo -MD -MP -MF $(DEPDIR)/dynamic_message.Tpo -c -o dynamic_message.lo `test -f 'google/protobuf/dynamic_message.cc' || echo '$(srcdir)/'`google/protobuf/dynamic_message.cc +@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/dynamic_message.Tpo $(DEPDIR)/dynamic_message.Plo @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='google/protobuf/dynamic_message.cc' object='dynamic_message.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o dynamic_message.lo `test -f 'google/protobuf/dynamic_message.cc' || echo '$(srcdir)/'`google/protobuf/dynamic_message.cc +@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o dynamic_message.lo `test -f 'google/protobuf/dynamic_message.cc' || echo '$(srcdir)/'`google/protobuf/dynamic_message.cc extension_set_heavy.lo: google/protobuf/extension_set_heavy.cc -@am__fastdepCXX_TRUE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT extension_set_heavy.lo -MD -MP -MF $(DEPDIR)/extension_set_heavy.Tpo -c -o extension_set_heavy.lo `test -f 'google/protobuf/extension_set_heavy.cc' || echo '$(srcdir)/'`google/protobuf/extension_set_heavy.cc -@am__fastdepCXX_TRUE@ mv -f $(DEPDIR)/extension_set_heavy.Tpo $(DEPDIR)/extension_set_heavy.Plo +@am__fastdepCXX_TRUE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT extension_set_heavy.lo -MD -MP -MF $(DEPDIR)/extension_set_heavy.Tpo -c -o extension_set_heavy.lo `test -f 'google/protobuf/extension_set_heavy.cc' || echo '$(srcdir)/'`google/protobuf/extension_set_heavy.cc +@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/extension_set_heavy.Tpo $(DEPDIR)/extension_set_heavy.Plo @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='google/protobuf/extension_set_heavy.cc' object='extension_set_heavy.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o extension_set_heavy.lo `test -f 'google/protobuf/extension_set_heavy.cc' || echo '$(srcdir)/'`google/protobuf/extension_set_heavy.cc +@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o extension_set_heavy.lo `test -f 'google/protobuf/extension_set_heavy.cc' || echo '$(srcdir)/'`google/protobuf/extension_set_heavy.cc generated_message_reflection.lo: google/protobuf/generated_message_reflection.cc -@am__fastdepCXX_TRUE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT generated_message_reflection.lo -MD -MP -MF $(DEPDIR)/generated_message_reflection.Tpo -c -o generated_message_reflection.lo `test -f 'google/protobuf/generated_message_reflection.cc' || echo '$(srcdir)/'`google/protobuf/generated_message_reflection.cc -@am__fastdepCXX_TRUE@ mv -f $(DEPDIR)/generated_message_reflection.Tpo $(DEPDIR)/generated_message_reflection.Plo +@am__fastdepCXX_TRUE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT generated_message_reflection.lo -MD -MP -MF $(DEPDIR)/generated_message_reflection.Tpo -c -o generated_message_reflection.lo `test -f 'google/protobuf/generated_message_reflection.cc' || echo '$(srcdir)/'`google/protobuf/generated_message_reflection.cc +@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/generated_message_reflection.Tpo $(DEPDIR)/generated_message_reflection.Plo @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='google/protobuf/generated_message_reflection.cc' object='generated_message_reflection.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o generated_message_reflection.lo `test -f 'google/protobuf/generated_message_reflection.cc' || echo '$(srcdir)/'`google/protobuf/generated_message_reflection.cc +@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o generated_message_reflection.lo `test -f 'google/protobuf/generated_message_reflection.cc' || echo '$(srcdir)/'`google/protobuf/generated_message_reflection.cc message.lo: google/protobuf/message.cc -@am__fastdepCXX_TRUE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT message.lo -MD -MP -MF $(DEPDIR)/message.Tpo -c -o message.lo `test -f 'google/protobuf/message.cc' || echo '$(srcdir)/'`google/protobuf/message.cc -@am__fastdepCXX_TRUE@ mv -f $(DEPDIR)/message.Tpo $(DEPDIR)/message.Plo +@am__fastdepCXX_TRUE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT message.lo -MD -MP -MF $(DEPDIR)/message.Tpo -c -o message.lo `test -f 'google/protobuf/message.cc' || echo '$(srcdir)/'`google/protobuf/message.cc +@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/message.Tpo $(DEPDIR)/message.Plo @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='google/protobuf/message.cc' object='message.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o message.lo `test -f 'google/protobuf/message.cc' || echo '$(srcdir)/'`google/protobuf/message.cc +@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o message.lo `test -f 'google/protobuf/message.cc' || echo '$(srcdir)/'`google/protobuf/message.cc reflection_ops.lo: google/protobuf/reflection_ops.cc -@am__fastdepCXX_TRUE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT reflection_ops.lo -MD -MP -MF $(DEPDIR)/reflection_ops.Tpo -c -o reflection_ops.lo `test -f 'google/protobuf/reflection_ops.cc' || echo '$(srcdir)/'`google/protobuf/reflection_ops.cc -@am__fastdepCXX_TRUE@ mv -f $(DEPDIR)/reflection_ops.Tpo $(DEPDIR)/reflection_ops.Plo +@am__fastdepCXX_TRUE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT reflection_ops.lo -MD -MP -MF $(DEPDIR)/reflection_ops.Tpo -c -o reflection_ops.lo `test -f 'google/protobuf/reflection_ops.cc' || echo '$(srcdir)/'`google/protobuf/reflection_ops.cc +@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/reflection_ops.Tpo $(DEPDIR)/reflection_ops.Plo @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='google/protobuf/reflection_ops.cc' object='reflection_ops.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o reflection_ops.lo `test -f 'google/protobuf/reflection_ops.cc' || echo '$(srcdir)/'`google/protobuf/reflection_ops.cc +@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o reflection_ops.lo `test -f 'google/protobuf/reflection_ops.cc' || echo '$(srcdir)/'`google/protobuf/reflection_ops.cc service.lo: google/protobuf/service.cc -@am__fastdepCXX_TRUE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT service.lo -MD -MP -MF $(DEPDIR)/service.Tpo -c -o service.lo `test -f 'google/protobuf/service.cc' || echo '$(srcdir)/'`google/protobuf/service.cc -@am__fastdepCXX_TRUE@ mv -f $(DEPDIR)/service.Tpo $(DEPDIR)/service.Plo +@am__fastdepCXX_TRUE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT service.lo -MD -MP -MF $(DEPDIR)/service.Tpo -c -o service.lo `test -f 'google/protobuf/service.cc' || echo '$(srcdir)/'`google/protobuf/service.cc +@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/service.Tpo $(DEPDIR)/service.Plo @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='google/protobuf/service.cc' object='service.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o service.lo `test -f 'google/protobuf/service.cc' || echo '$(srcdir)/'`google/protobuf/service.cc +@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o service.lo `test -f 'google/protobuf/service.cc' || echo '$(srcdir)/'`google/protobuf/service.cc text_format.lo: google/protobuf/text_format.cc -@am__fastdepCXX_TRUE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT text_format.lo -MD -MP -MF $(DEPDIR)/text_format.Tpo -c -o text_format.lo `test -f 'google/protobuf/text_format.cc' || echo '$(srcdir)/'`google/protobuf/text_format.cc -@am__fastdepCXX_TRUE@ mv -f $(DEPDIR)/text_format.Tpo $(DEPDIR)/text_format.Plo +@am__fastdepCXX_TRUE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT text_format.lo -MD -MP -MF $(DEPDIR)/text_format.Tpo -c -o text_format.lo `test -f 'google/protobuf/text_format.cc' || echo '$(srcdir)/'`google/protobuf/text_format.cc +@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/text_format.Tpo $(DEPDIR)/text_format.Plo @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='google/protobuf/text_format.cc' object='text_format.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o text_format.lo `test -f 'google/protobuf/text_format.cc' || echo '$(srcdir)/'`google/protobuf/text_format.cc +@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o text_format.lo `test -f 'google/protobuf/text_format.cc' || echo '$(srcdir)/'`google/protobuf/text_format.cc unknown_field_set.lo: google/protobuf/unknown_field_set.cc -@am__fastdepCXX_TRUE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT unknown_field_set.lo -MD -MP -MF $(DEPDIR)/unknown_field_set.Tpo -c -o unknown_field_set.lo `test -f 'google/protobuf/unknown_field_set.cc' || echo '$(srcdir)/'`google/protobuf/unknown_field_set.cc -@am__fastdepCXX_TRUE@ mv -f $(DEPDIR)/unknown_field_set.Tpo $(DEPDIR)/unknown_field_set.Plo +@am__fastdepCXX_TRUE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT unknown_field_set.lo -MD -MP -MF $(DEPDIR)/unknown_field_set.Tpo -c -o unknown_field_set.lo `test -f 'google/protobuf/unknown_field_set.cc' || echo '$(srcdir)/'`google/protobuf/unknown_field_set.cc +@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/unknown_field_set.Tpo $(DEPDIR)/unknown_field_set.Plo @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='google/protobuf/unknown_field_set.cc' object='unknown_field_set.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o unknown_field_set.lo `test -f 'google/protobuf/unknown_field_set.cc' || echo '$(srcdir)/'`google/protobuf/unknown_field_set.cc +@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o unknown_field_set.lo `test -f 'google/protobuf/unknown_field_set.cc' || echo '$(srcdir)/'`google/protobuf/unknown_field_set.cc wire_format.lo: google/protobuf/wire_format.cc -@am__fastdepCXX_TRUE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT wire_format.lo -MD -MP -MF $(DEPDIR)/wire_format.Tpo -c -o wire_format.lo `test -f 'google/protobuf/wire_format.cc' || echo '$(srcdir)/'`google/protobuf/wire_format.cc -@am__fastdepCXX_TRUE@ mv -f $(DEPDIR)/wire_format.Tpo $(DEPDIR)/wire_format.Plo +@am__fastdepCXX_TRUE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT wire_format.lo -MD -MP -MF $(DEPDIR)/wire_format.Tpo -c -o wire_format.lo `test -f 'google/protobuf/wire_format.cc' || echo '$(srcdir)/'`google/protobuf/wire_format.cc +@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/wire_format.Tpo $(DEPDIR)/wire_format.Plo @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='google/protobuf/wire_format.cc' object='wire_format.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o wire_format.lo `test -f 'google/protobuf/wire_format.cc' || echo '$(srcdir)/'`google/protobuf/wire_format.cc +@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o wire_format.lo `test -f 'google/protobuf/wire_format.cc' || echo '$(srcdir)/'`google/protobuf/wire_format.cc gzip_stream.lo: google/protobuf/io/gzip_stream.cc -@am__fastdepCXX_TRUE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT gzip_stream.lo -MD -MP -MF $(DEPDIR)/gzip_stream.Tpo -c -o gzip_stream.lo `test -f 'google/protobuf/io/gzip_stream.cc' || echo '$(srcdir)/'`google/protobuf/io/gzip_stream.cc -@am__fastdepCXX_TRUE@ mv -f $(DEPDIR)/gzip_stream.Tpo $(DEPDIR)/gzip_stream.Plo +@am__fastdepCXX_TRUE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT gzip_stream.lo -MD -MP -MF $(DEPDIR)/gzip_stream.Tpo -c -o gzip_stream.lo `test -f 'google/protobuf/io/gzip_stream.cc' || echo '$(srcdir)/'`google/protobuf/io/gzip_stream.cc +@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/gzip_stream.Tpo $(DEPDIR)/gzip_stream.Plo @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='google/protobuf/io/gzip_stream.cc' object='gzip_stream.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o gzip_stream.lo `test -f 'google/protobuf/io/gzip_stream.cc' || echo '$(srcdir)/'`google/protobuf/io/gzip_stream.cc +@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o gzip_stream.lo `test -f 'google/protobuf/io/gzip_stream.cc' || echo '$(srcdir)/'`google/protobuf/io/gzip_stream.cc printer.lo: google/protobuf/io/printer.cc -@am__fastdepCXX_TRUE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT printer.lo -MD -MP -MF $(DEPDIR)/printer.Tpo -c -o printer.lo `test -f 'google/protobuf/io/printer.cc' || echo '$(srcdir)/'`google/protobuf/io/printer.cc -@am__fastdepCXX_TRUE@ mv -f $(DEPDIR)/printer.Tpo $(DEPDIR)/printer.Plo +@am__fastdepCXX_TRUE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT printer.lo -MD -MP -MF $(DEPDIR)/printer.Tpo -c -o printer.lo `test -f 'google/protobuf/io/printer.cc' || echo '$(srcdir)/'`google/protobuf/io/printer.cc +@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/printer.Tpo $(DEPDIR)/printer.Plo @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='google/protobuf/io/printer.cc' object='printer.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o printer.lo `test -f 'google/protobuf/io/printer.cc' || echo '$(srcdir)/'`google/protobuf/io/printer.cc +@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o printer.lo `test -f 'google/protobuf/io/printer.cc' || echo '$(srcdir)/'`google/protobuf/io/printer.cc tokenizer.lo: google/protobuf/io/tokenizer.cc -@am__fastdepCXX_TRUE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT tokenizer.lo -MD -MP -MF $(DEPDIR)/tokenizer.Tpo -c -o tokenizer.lo `test -f 'google/protobuf/io/tokenizer.cc' || echo '$(srcdir)/'`google/protobuf/io/tokenizer.cc -@am__fastdepCXX_TRUE@ mv -f $(DEPDIR)/tokenizer.Tpo $(DEPDIR)/tokenizer.Plo +@am__fastdepCXX_TRUE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT tokenizer.lo -MD -MP -MF $(DEPDIR)/tokenizer.Tpo -c -o tokenizer.lo `test -f 'google/protobuf/io/tokenizer.cc' || echo '$(srcdir)/'`google/protobuf/io/tokenizer.cc +@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/tokenizer.Tpo $(DEPDIR)/tokenizer.Plo @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='google/protobuf/io/tokenizer.cc' object='tokenizer.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o tokenizer.lo `test -f 'google/protobuf/io/tokenizer.cc' || echo '$(srcdir)/'`google/protobuf/io/tokenizer.cc +@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o tokenizer.lo `test -f 'google/protobuf/io/tokenizer.cc' || echo '$(srcdir)/'`google/protobuf/io/tokenizer.cc zero_copy_stream_impl.lo: google/protobuf/io/zero_copy_stream_impl.cc -@am__fastdepCXX_TRUE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT zero_copy_stream_impl.lo -MD -MP -MF $(DEPDIR)/zero_copy_stream_impl.Tpo -c -o zero_copy_stream_impl.lo `test -f 'google/protobuf/io/zero_copy_stream_impl.cc' || echo '$(srcdir)/'`google/protobuf/io/zero_copy_stream_impl.cc -@am__fastdepCXX_TRUE@ mv -f $(DEPDIR)/zero_copy_stream_impl.Tpo $(DEPDIR)/zero_copy_stream_impl.Plo +@am__fastdepCXX_TRUE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT zero_copy_stream_impl.lo -MD -MP -MF $(DEPDIR)/zero_copy_stream_impl.Tpo -c -o zero_copy_stream_impl.lo `test -f 'google/protobuf/io/zero_copy_stream_impl.cc' || echo '$(srcdir)/'`google/protobuf/io/zero_copy_stream_impl.cc +@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/zero_copy_stream_impl.Tpo $(DEPDIR)/zero_copy_stream_impl.Plo @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='google/protobuf/io/zero_copy_stream_impl.cc' object='zero_copy_stream_impl.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o zero_copy_stream_impl.lo `test -f 'google/protobuf/io/zero_copy_stream_impl.cc' || echo '$(srcdir)/'`google/protobuf/io/zero_copy_stream_impl.cc +@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o zero_copy_stream_impl.lo `test -f 'google/protobuf/io/zero_copy_stream_impl.cc' || echo '$(srcdir)/'`google/protobuf/io/zero_copy_stream_impl.cc importer.lo: google/protobuf/compiler/importer.cc -@am__fastdepCXX_TRUE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT importer.lo -MD -MP -MF $(DEPDIR)/importer.Tpo -c -o importer.lo `test -f 'google/protobuf/compiler/importer.cc' || echo '$(srcdir)/'`google/protobuf/compiler/importer.cc -@am__fastdepCXX_TRUE@ mv -f $(DEPDIR)/importer.Tpo $(DEPDIR)/importer.Plo +@am__fastdepCXX_TRUE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT importer.lo -MD -MP -MF $(DEPDIR)/importer.Tpo -c -o importer.lo `test -f 'google/protobuf/compiler/importer.cc' || echo '$(srcdir)/'`google/protobuf/compiler/importer.cc +@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/importer.Tpo $(DEPDIR)/importer.Plo @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='google/protobuf/compiler/importer.cc' object='importer.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o importer.lo `test -f 'google/protobuf/compiler/importer.cc' || echo '$(srcdir)/'`google/protobuf/compiler/importer.cc +@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o importer.lo `test -f 'google/protobuf/compiler/importer.cc' || echo '$(srcdir)/'`google/protobuf/compiler/importer.cc parser.lo: google/protobuf/compiler/parser.cc -@am__fastdepCXX_TRUE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT parser.lo -MD -MP -MF $(DEPDIR)/parser.Tpo -c -o parser.lo `test -f 'google/protobuf/compiler/parser.cc' || echo '$(srcdir)/'`google/protobuf/compiler/parser.cc -@am__fastdepCXX_TRUE@ mv -f $(DEPDIR)/parser.Tpo $(DEPDIR)/parser.Plo +@am__fastdepCXX_TRUE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT parser.lo -MD -MP -MF $(DEPDIR)/parser.Tpo -c -o parser.lo `test -f 'google/protobuf/compiler/parser.cc' || echo '$(srcdir)/'`google/protobuf/compiler/parser.cc +@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/parser.Tpo $(DEPDIR)/parser.Plo @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='google/protobuf/compiler/parser.cc' object='parser.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o parser.lo `test -f 'google/protobuf/compiler/parser.cc' || echo '$(srcdir)/'`google/protobuf/compiler/parser.cc +@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o parser.lo `test -f 'google/protobuf/compiler/parser.cc' || echo '$(srcdir)/'`google/protobuf/compiler/parser.cc code_generator.lo: google/protobuf/compiler/code_generator.cc -@am__fastdepCXX_TRUE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT code_generator.lo -MD -MP -MF $(DEPDIR)/code_generator.Tpo -c -o code_generator.lo `test -f 'google/protobuf/compiler/code_generator.cc' || echo '$(srcdir)/'`google/protobuf/compiler/code_generator.cc -@am__fastdepCXX_TRUE@ mv -f $(DEPDIR)/code_generator.Tpo $(DEPDIR)/code_generator.Plo +@am__fastdepCXX_TRUE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT code_generator.lo -MD -MP -MF $(DEPDIR)/code_generator.Tpo -c -o code_generator.lo `test -f 'google/protobuf/compiler/code_generator.cc' || echo '$(srcdir)/'`google/protobuf/compiler/code_generator.cc +@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/code_generator.Tpo $(DEPDIR)/code_generator.Plo @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='google/protobuf/compiler/code_generator.cc' object='code_generator.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o code_generator.lo `test -f 'google/protobuf/compiler/code_generator.cc' || echo '$(srcdir)/'`google/protobuf/compiler/code_generator.cc +@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o code_generator.lo `test -f 'google/protobuf/compiler/code_generator.cc' || echo '$(srcdir)/'`google/protobuf/compiler/code_generator.cc command_line_interface.lo: google/protobuf/compiler/command_line_interface.cc -@am__fastdepCXX_TRUE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT command_line_interface.lo -MD -MP -MF $(DEPDIR)/command_line_interface.Tpo -c -o command_line_interface.lo `test -f 'google/protobuf/compiler/command_line_interface.cc' || echo '$(srcdir)/'`google/protobuf/compiler/command_line_interface.cc -@am__fastdepCXX_TRUE@ mv -f $(DEPDIR)/command_line_interface.Tpo $(DEPDIR)/command_line_interface.Plo +@am__fastdepCXX_TRUE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT command_line_interface.lo -MD -MP -MF $(DEPDIR)/command_line_interface.Tpo -c -o command_line_interface.lo `test -f 'google/protobuf/compiler/command_line_interface.cc' || echo '$(srcdir)/'`google/protobuf/compiler/command_line_interface.cc +@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/command_line_interface.Tpo $(DEPDIR)/command_line_interface.Plo @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='google/protobuf/compiler/command_line_interface.cc' object='command_line_interface.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o command_line_interface.lo `test -f 'google/protobuf/compiler/command_line_interface.cc' || echo '$(srcdir)/'`google/protobuf/compiler/command_line_interface.cc +@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o command_line_interface.lo `test -f 'google/protobuf/compiler/command_line_interface.cc' || echo '$(srcdir)/'`google/protobuf/compiler/command_line_interface.cc plugin.lo: google/protobuf/compiler/plugin.cc -@am__fastdepCXX_TRUE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT plugin.lo -MD -MP -MF $(DEPDIR)/plugin.Tpo -c -o plugin.lo `test -f 'google/protobuf/compiler/plugin.cc' || echo '$(srcdir)/'`google/protobuf/compiler/plugin.cc -@am__fastdepCXX_TRUE@ mv -f $(DEPDIR)/plugin.Tpo $(DEPDIR)/plugin.Plo +@am__fastdepCXX_TRUE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT plugin.lo -MD -MP -MF $(DEPDIR)/plugin.Tpo -c -o plugin.lo `test -f 'google/protobuf/compiler/plugin.cc' || echo '$(srcdir)/'`google/protobuf/compiler/plugin.cc +@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/plugin.Tpo $(DEPDIR)/plugin.Plo @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='google/protobuf/compiler/plugin.cc' object='plugin.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o plugin.lo `test -f 'google/protobuf/compiler/plugin.cc' || echo '$(srcdir)/'`google/protobuf/compiler/plugin.cc +@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o plugin.lo `test -f 'google/protobuf/compiler/plugin.cc' || echo '$(srcdir)/'`google/protobuf/compiler/plugin.cc plugin.pb.lo: google/protobuf/compiler/plugin.pb.cc -@am__fastdepCXX_TRUE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT plugin.pb.lo -MD -MP -MF $(DEPDIR)/plugin.pb.Tpo -c -o plugin.pb.lo `test -f 'google/protobuf/compiler/plugin.pb.cc' || echo '$(srcdir)/'`google/protobuf/compiler/plugin.pb.cc -@am__fastdepCXX_TRUE@ mv -f $(DEPDIR)/plugin.pb.Tpo $(DEPDIR)/plugin.pb.Plo +@am__fastdepCXX_TRUE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT plugin.pb.lo -MD -MP -MF $(DEPDIR)/plugin.pb.Tpo -c -o plugin.pb.lo `test -f 'google/protobuf/compiler/plugin.pb.cc' || echo '$(srcdir)/'`google/protobuf/compiler/plugin.pb.cc +@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/plugin.pb.Tpo $(DEPDIR)/plugin.pb.Plo @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='google/protobuf/compiler/plugin.pb.cc' object='plugin.pb.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o plugin.pb.lo `test -f 'google/protobuf/compiler/plugin.pb.cc' || echo '$(srcdir)/'`google/protobuf/compiler/plugin.pb.cc +@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o plugin.pb.lo `test -f 'google/protobuf/compiler/plugin.pb.cc' || echo '$(srcdir)/'`google/protobuf/compiler/plugin.pb.cc subprocess.lo: google/protobuf/compiler/subprocess.cc -@am__fastdepCXX_TRUE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT subprocess.lo -MD -MP -MF $(DEPDIR)/subprocess.Tpo -c -o subprocess.lo `test -f 'google/protobuf/compiler/subprocess.cc' || echo '$(srcdir)/'`google/protobuf/compiler/subprocess.cc -@am__fastdepCXX_TRUE@ mv -f $(DEPDIR)/subprocess.Tpo $(DEPDIR)/subprocess.Plo +@am__fastdepCXX_TRUE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT subprocess.lo -MD -MP -MF $(DEPDIR)/subprocess.Tpo -c -o subprocess.lo `test -f 'google/protobuf/compiler/subprocess.cc' || echo '$(srcdir)/'`google/protobuf/compiler/subprocess.cc +@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/subprocess.Tpo $(DEPDIR)/subprocess.Plo @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='google/protobuf/compiler/subprocess.cc' object='subprocess.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o subprocess.lo `test -f 'google/protobuf/compiler/subprocess.cc' || echo '$(srcdir)/'`google/protobuf/compiler/subprocess.cc +@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o subprocess.lo `test -f 'google/protobuf/compiler/subprocess.cc' || echo '$(srcdir)/'`google/protobuf/compiler/subprocess.cc zip_writer.lo: google/protobuf/compiler/zip_writer.cc -@am__fastdepCXX_TRUE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT zip_writer.lo -MD -MP -MF $(DEPDIR)/zip_writer.Tpo -c -o zip_writer.lo `test -f 'google/protobuf/compiler/zip_writer.cc' || echo '$(srcdir)/'`google/protobuf/compiler/zip_writer.cc -@am__fastdepCXX_TRUE@ mv -f $(DEPDIR)/zip_writer.Tpo $(DEPDIR)/zip_writer.Plo +@am__fastdepCXX_TRUE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT zip_writer.lo -MD -MP -MF $(DEPDIR)/zip_writer.Tpo -c -o zip_writer.lo `test -f 'google/protobuf/compiler/zip_writer.cc' || echo '$(srcdir)/'`google/protobuf/compiler/zip_writer.cc +@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/zip_writer.Tpo $(DEPDIR)/zip_writer.Plo @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='google/protobuf/compiler/zip_writer.cc' object='zip_writer.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o zip_writer.lo `test -f 'google/protobuf/compiler/zip_writer.cc' || echo '$(srcdir)/'`google/protobuf/compiler/zip_writer.cc +@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o zip_writer.lo `test -f 'google/protobuf/compiler/zip_writer.cc' || echo '$(srcdir)/'`google/protobuf/compiler/zip_writer.cc cpp_enum.lo: google/protobuf/compiler/cpp/cpp_enum.cc -@am__fastdepCXX_TRUE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT cpp_enum.lo -MD -MP -MF $(DEPDIR)/cpp_enum.Tpo -c -o cpp_enum.lo `test -f 'google/protobuf/compiler/cpp/cpp_enum.cc' || echo '$(srcdir)/'`google/protobuf/compiler/cpp/cpp_enum.cc -@am__fastdepCXX_TRUE@ mv -f $(DEPDIR)/cpp_enum.Tpo $(DEPDIR)/cpp_enum.Plo +@am__fastdepCXX_TRUE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT cpp_enum.lo -MD -MP -MF $(DEPDIR)/cpp_enum.Tpo -c -o cpp_enum.lo `test -f 'google/protobuf/compiler/cpp/cpp_enum.cc' || echo '$(srcdir)/'`google/protobuf/compiler/cpp/cpp_enum.cc +@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/cpp_enum.Tpo $(DEPDIR)/cpp_enum.Plo @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='google/protobuf/compiler/cpp/cpp_enum.cc' object='cpp_enum.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o cpp_enum.lo `test -f 'google/protobuf/compiler/cpp/cpp_enum.cc' || echo '$(srcdir)/'`google/protobuf/compiler/cpp/cpp_enum.cc +@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o cpp_enum.lo `test -f 'google/protobuf/compiler/cpp/cpp_enum.cc' || echo '$(srcdir)/'`google/protobuf/compiler/cpp/cpp_enum.cc cpp_enum_field.lo: google/protobuf/compiler/cpp/cpp_enum_field.cc -@am__fastdepCXX_TRUE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT cpp_enum_field.lo -MD -MP -MF $(DEPDIR)/cpp_enum_field.Tpo -c -o cpp_enum_field.lo `test -f 'google/protobuf/compiler/cpp/cpp_enum_field.cc' || echo '$(srcdir)/'`google/protobuf/compiler/cpp/cpp_enum_field.cc -@am__fastdepCXX_TRUE@ mv -f $(DEPDIR)/cpp_enum_field.Tpo $(DEPDIR)/cpp_enum_field.Plo +@am__fastdepCXX_TRUE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT cpp_enum_field.lo -MD -MP -MF $(DEPDIR)/cpp_enum_field.Tpo -c -o cpp_enum_field.lo `test -f 'google/protobuf/compiler/cpp/cpp_enum_field.cc' || echo '$(srcdir)/'`google/protobuf/compiler/cpp/cpp_enum_field.cc +@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/cpp_enum_field.Tpo $(DEPDIR)/cpp_enum_field.Plo @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='google/protobuf/compiler/cpp/cpp_enum_field.cc' object='cpp_enum_field.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o cpp_enum_field.lo `test -f 'google/protobuf/compiler/cpp/cpp_enum_field.cc' || echo '$(srcdir)/'`google/protobuf/compiler/cpp/cpp_enum_field.cc +@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o cpp_enum_field.lo `test -f 'google/protobuf/compiler/cpp/cpp_enum_field.cc' || echo '$(srcdir)/'`google/protobuf/compiler/cpp/cpp_enum_field.cc cpp_extension.lo: google/protobuf/compiler/cpp/cpp_extension.cc -@am__fastdepCXX_TRUE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT cpp_extension.lo -MD -MP -MF $(DEPDIR)/cpp_extension.Tpo -c -o cpp_extension.lo `test -f 'google/protobuf/compiler/cpp/cpp_extension.cc' || echo '$(srcdir)/'`google/protobuf/compiler/cpp/cpp_extension.cc -@am__fastdepCXX_TRUE@ mv -f $(DEPDIR)/cpp_extension.Tpo $(DEPDIR)/cpp_extension.Plo +@am__fastdepCXX_TRUE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT cpp_extension.lo -MD -MP -MF $(DEPDIR)/cpp_extension.Tpo -c -o cpp_extension.lo `test -f 'google/protobuf/compiler/cpp/cpp_extension.cc' || echo '$(srcdir)/'`google/protobuf/compiler/cpp/cpp_extension.cc +@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/cpp_extension.Tpo $(DEPDIR)/cpp_extension.Plo @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='google/protobuf/compiler/cpp/cpp_extension.cc' object='cpp_extension.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o cpp_extension.lo `test -f 'google/protobuf/compiler/cpp/cpp_extension.cc' || echo '$(srcdir)/'`google/protobuf/compiler/cpp/cpp_extension.cc +@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o cpp_extension.lo `test -f 'google/protobuf/compiler/cpp/cpp_extension.cc' || echo '$(srcdir)/'`google/protobuf/compiler/cpp/cpp_extension.cc cpp_field.lo: google/protobuf/compiler/cpp/cpp_field.cc -@am__fastdepCXX_TRUE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT cpp_field.lo -MD -MP -MF $(DEPDIR)/cpp_field.Tpo -c -o cpp_field.lo `test -f 'google/protobuf/compiler/cpp/cpp_field.cc' || echo '$(srcdir)/'`google/protobuf/compiler/cpp/cpp_field.cc -@am__fastdepCXX_TRUE@ mv -f $(DEPDIR)/cpp_field.Tpo $(DEPDIR)/cpp_field.Plo +@am__fastdepCXX_TRUE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT cpp_field.lo -MD -MP -MF $(DEPDIR)/cpp_field.Tpo -c -o cpp_field.lo `test -f 'google/protobuf/compiler/cpp/cpp_field.cc' || echo '$(srcdir)/'`google/protobuf/compiler/cpp/cpp_field.cc +@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/cpp_field.Tpo $(DEPDIR)/cpp_field.Plo @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='google/protobuf/compiler/cpp/cpp_field.cc' object='cpp_field.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o cpp_field.lo `test -f 'google/protobuf/compiler/cpp/cpp_field.cc' || echo '$(srcdir)/'`google/protobuf/compiler/cpp/cpp_field.cc +@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o cpp_field.lo `test -f 'google/protobuf/compiler/cpp/cpp_field.cc' || echo '$(srcdir)/'`google/protobuf/compiler/cpp/cpp_field.cc cpp_file.lo: google/protobuf/compiler/cpp/cpp_file.cc -@am__fastdepCXX_TRUE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT cpp_file.lo -MD -MP -MF $(DEPDIR)/cpp_file.Tpo -c -o cpp_file.lo `test -f 'google/protobuf/compiler/cpp/cpp_file.cc' || echo '$(srcdir)/'`google/protobuf/compiler/cpp/cpp_file.cc -@am__fastdepCXX_TRUE@ mv -f $(DEPDIR)/cpp_file.Tpo $(DEPDIR)/cpp_file.Plo +@am__fastdepCXX_TRUE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT cpp_file.lo -MD -MP -MF $(DEPDIR)/cpp_file.Tpo -c -o cpp_file.lo `test -f 'google/protobuf/compiler/cpp/cpp_file.cc' || echo '$(srcdir)/'`google/protobuf/compiler/cpp/cpp_file.cc +@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/cpp_file.Tpo $(DEPDIR)/cpp_file.Plo @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='google/protobuf/compiler/cpp/cpp_file.cc' object='cpp_file.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o cpp_file.lo `test -f 'google/protobuf/compiler/cpp/cpp_file.cc' || echo '$(srcdir)/'`google/protobuf/compiler/cpp/cpp_file.cc +@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o cpp_file.lo `test -f 'google/protobuf/compiler/cpp/cpp_file.cc' || echo '$(srcdir)/'`google/protobuf/compiler/cpp/cpp_file.cc cpp_generator.lo: google/protobuf/compiler/cpp/cpp_generator.cc -@am__fastdepCXX_TRUE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT cpp_generator.lo -MD -MP -MF $(DEPDIR)/cpp_generator.Tpo -c -o cpp_generator.lo `test -f 'google/protobuf/compiler/cpp/cpp_generator.cc' || echo '$(srcdir)/'`google/protobuf/compiler/cpp/cpp_generator.cc -@am__fastdepCXX_TRUE@ mv -f $(DEPDIR)/cpp_generator.Tpo $(DEPDIR)/cpp_generator.Plo +@am__fastdepCXX_TRUE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT cpp_generator.lo -MD -MP -MF $(DEPDIR)/cpp_generator.Tpo -c -o cpp_generator.lo `test -f 'google/protobuf/compiler/cpp/cpp_generator.cc' || echo '$(srcdir)/'`google/protobuf/compiler/cpp/cpp_generator.cc +@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/cpp_generator.Tpo $(DEPDIR)/cpp_generator.Plo @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='google/protobuf/compiler/cpp/cpp_generator.cc' object='cpp_generator.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o cpp_generator.lo `test -f 'google/protobuf/compiler/cpp/cpp_generator.cc' || echo '$(srcdir)/'`google/protobuf/compiler/cpp/cpp_generator.cc +@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o cpp_generator.lo `test -f 'google/protobuf/compiler/cpp/cpp_generator.cc' || echo '$(srcdir)/'`google/protobuf/compiler/cpp/cpp_generator.cc cpp_helpers.lo: google/protobuf/compiler/cpp/cpp_helpers.cc -@am__fastdepCXX_TRUE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT cpp_helpers.lo -MD -MP -MF $(DEPDIR)/cpp_helpers.Tpo -c -o cpp_helpers.lo `test -f 'google/protobuf/compiler/cpp/cpp_helpers.cc' || echo '$(srcdir)/'`google/protobuf/compiler/cpp/cpp_helpers.cc -@am__fastdepCXX_TRUE@ mv -f $(DEPDIR)/cpp_helpers.Tpo $(DEPDIR)/cpp_helpers.Plo +@am__fastdepCXX_TRUE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT cpp_helpers.lo -MD -MP -MF $(DEPDIR)/cpp_helpers.Tpo -c -o cpp_helpers.lo `test -f 'google/protobuf/compiler/cpp/cpp_helpers.cc' || echo '$(srcdir)/'`google/protobuf/compiler/cpp/cpp_helpers.cc +@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/cpp_helpers.Tpo $(DEPDIR)/cpp_helpers.Plo @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='google/protobuf/compiler/cpp/cpp_helpers.cc' object='cpp_helpers.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o cpp_helpers.lo `test -f 'google/protobuf/compiler/cpp/cpp_helpers.cc' || echo '$(srcdir)/'`google/protobuf/compiler/cpp/cpp_helpers.cc +@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o cpp_helpers.lo `test -f 'google/protobuf/compiler/cpp/cpp_helpers.cc' || echo '$(srcdir)/'`google/protobuf/compiler/cpp/cpp_helpers.cc cpp_message.lo: google/protobuf/compiler/cpp/cpp_message.cc -@am__fastdepCXX_TRUE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT cpp_message.lo -MD -MP -MF $(DEPDIR)/cpp_message.Tpo -c -o cpp_message.lo `test -f 'google/protobuf/compiler/cpp/cpp_message.cc' || echo '$(srcdir)/'`google/protobuf/compiler/cpp/cpp_message.cc -@am__fastdepCXX_TRUE@ mv -f $(DEPDIR)/cpp_message.Tpo $(DEPDIR)/cpp_message.Plo +@am__fastdepCXX_TRUE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT cpp_message.lo -MD -MP -MF $(DEPDIR)/cpp_message.Tpo -c -o cpp_message.lo `test -f 'google/protobuf/compiler/cpp/cpp_message.cc' || echo '$(srcdir)/'`google/protobuf/compiler/cpp/cpp_message.cc +@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/cpp_message.Tpo $(DEPDIR)/cpp_message.Plo @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='google/protobuf/compiler/cpp/cpp_message.cc' object='cpp_message.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o cpp_message.lo `test -f 'google/protobuf/compiler/cpp/cpp_message.cc' || echo '$(srcdir)/'`google/protobuf/compiler/cpp/cpp_message.cc +@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o cpp_message.lo `test -f 'google/protobuf/compiler/cpp/cpp_message.cc' || echo '$(srcdir)/'`google/protobuf/compiler/cpp/cpp_message.cc cpp_message_field.lo: google/protobuf/compiler/cpp/cpp_message_field.cc -@am__fastdepCXX_TRUE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT cpp_message_field.lo -MD -MP -MF $(DEPDIR)/cpp_message_field.Tpo -c -o cpp_message_field.lo `test -f 'google/protobuf/compiler/cpp/cpp_message_field.cc' || echo '$(srcdir)/'`google/protobuf/compiler/cpp/cpp_message_field.cc -@am__fastdepCXX_TRUE@ mv -f $(DEPDIR)/cpp_message_field.Tpo $(DEPDIR)/cpp_message_field.Plo +@am__fastdepCXX_TRUE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT cpp_message_field.lo -MD -MP -MF $(DEPDIR)/cpp_message_field.Tpo -c -o cpp_message_field.lo `test -f 'google/protobuf/compiler/cpp/cpp_message_field.cc' || echo '$(srcdir)/'`google/protobuf/compiler/cpp/cpp_message_field.cc +@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/cpp_message_field.Tpo $(DEPDIR)/cpp_message_field.Plo @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='google/protobuf/compiler/cpp/cpp_message_field.cc' object='cpp_message_field.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o cpp_message_field.lo `test -f 'google/protobuf/compiler/cpp/cpp_message_field.cc' || echo '$(srcdir)/'`google/protobuf/compiler/cpp/cpp_message_field.cc +@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o cpp_message_field.lo `test -f 'google/protobuf/compiler/cpp/cpp_message_field.cc' || echo '$(srcdir)/'`google/protobuf/compiler/cpp/cpp_message_field.cc cpp_primitive_field.lo: google/protobuf/compiler/cpp/cpp_primitive_field.cc -@am__fastdepCXX_TRUE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT cpp_primitive_field.lo -MD -MP -MF $(DEPDIR)/cpp_primitive_field.Tpo -c -o cpp_primitive_field.lo `test -f 'google/protobuf/compiler/cpp/cpp_primitive_field.cc' || echo '$(srcdir)/'`google/protobuf/compiler/cpp/cpp_primitive_field.cc -@am__fastdepCXX_TRUE@ mv -f $(DEPDIR)/cpp_primitive_field.Tpo $(DEPDIR)/cpp_primitive_field.Plo +@am__fastdepCXX_TRUE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT cpp_primitive_field.lo -MD -MP -MF $(DEPDIR)/cpp_primitive_field.Tpo -c -o cpp_primitive_field.lo `test -f 'google/protobuf/compiler/cpp/cpp_primitive_field.cc' || echo '$(srcdir)/'`google/protobuf/compiler/cpp/cpp_primitive_field.cc +@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/cpp_primitive_field.Tpo $(DEPDIR)/cpp_primitive_field.Plo @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='google/protobuf/compiler/cpp/cpp_primitive_field.cc' object='cpp_primitive_field.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o cpp_primitive_field.lo `test -f 'google/protobuf/compiler/cpp/cpp_primitive_field.cc' || echo '$(srcdir)/'`google/protobuf/compiler/cpp/cpp_primitive_field.cc +@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o cpp_primitive_field.lo `test -f 'google/protobuf/compiler/cpp/cpp_primitive_field.cc' || echo '$(srcdir)/'`google/protobuf/compiler/cpp/cpp_primitive_field.cc cpp_service.lo: google/protobuf/compiler/cpp/cpp_service.cc -@am__fastdepCXX_TRUE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT cpp_service.lo -MD -MP -MF $(DEPDIR)/cpp_service.Tpo -c -o cpp_service.lo `test -f 'google/protobuf/compiler/cpp/cpp_service.cc' || echo '$(srcdir)/'`google/protobuf/compiler/cpp/cpp_service.cc -@am__fastdepCXX_TRUE@ mv -f $(DEPDIR)/cpp_service.Tpo $(DEPDIR)/cpp_service.Plo +@am__fastdepCXX_TRUE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT cpp_service.lo -MD -MP -MF $(DEPDIR)/cpp_service.Tpo -c -o cpp_service.lo `test -f 'google/protobuf/compiler/cpp/cpp_service.cc' || echo '$(srcdir)/'`google/protobuf/compiler/cpp/cpp_service.cc +@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/cpp_service.Tpo $(DEPDIR)/cpp_service.Plo @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='google/protobuf/compiler/cpp/cpp_service.cc' object='cpp_service.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o cpp_service.lo `test -f 'google/protobuf/compiler/cpp/cpp_service.cc' || echo '$(srcdir)/'`google/protobuf/compiler/cpp/cpp_service.cc +@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o cpp_service.lo `test -f 'google/protobuf/compiler/cpp/cpp_service.cc' || echo '$(srcdir)/'`google/protobuf/compiler/cpp/cpp_service.cc cpp_string_field.lo: google/protobuf/compiler/cpp/cpp_string_field.cc -@am__fastdepCXX_TRUE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT cpp_string_field.lo -MD -MP -MF $(DEPDIR)/cpp_string_field.Tpo -c -o cpp_string_field.lo `test -f 'google/protobuf/compiler/cpp/cpp_string_field.cc' || echo '$(srcdir)/'`google/protobuf/compiler/cpp/cpp_string_field.cc -@am__fastdepCXX_TRUE@ mv -f $(DEPDIR)/cpp_string_field.Tpo $(DEPDIR)/cpp_string_field.Plo +@am__fastdepCXX_TRUE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT cpp_string_field.lo -MD -MP -MF $(DEPDIR)/cpp_string_field.Tpo -c -o cpp_string_field.lo `test -f 'google/protobuf/compiler/cpp/cpp_string_field.cc' || echo '$(srcdir)/'`google/protobuf/compiler/cpp/cpp_string_field.cc +@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/cpp_string_field.Tpo $(DEPDIR)/cpp_string_field.Plo @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='google/protobuf/compiler/cpp/cpp_string_field.cc' object='cpp_string_field.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o cpp_string_field.lo `test -f 'google/protobuf/compiler/cpp/cpp_string_field.cc' || echo '$(srcdir)/'`google/protobuf/compiler/cpp/cpp_string_field.cc +@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o cpp_string_field.lo `test -f 'google/protobuf/compiler/cpp/cpp_string_field.cc' || echo '$(srcdir)/'`google/protobuf/compiler/cpp/cpp_string_field.cc java_enum.lo: google/protobuf/compiler/java/java_enum.cc -@am__fastdepCXX_TRUE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT java_enum.lo -MD -MP -MF $(DEPDIR)/java_enum.Tpo -c -o java_enum.lo `test -f 'google/protobuf/compiler/java/java_enum.cc' || echo '$(srcdir)/'`google/protobuf/compiler/java/java_enum.cc -@am__fastdepCXX_TRUE@ mv -f $(DEPDIR)/java_enum.Tpo $(DEPDIR)/java_enum.Plo +@am__fastdepCXX_TRUE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT java_enum.lo -MD -MP -MF $(DEPDIR)/java_enum.Tpo -c -o java_enum.lo `test -f 'google/protobuf/compiler/java/java_enum.cc' || echo '$(srcdir)/'`google/protobuf/compiler/java/java_enum.cc +@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/java_enum.Tpo $(DEPDIR)/java_enum.Plo @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='google/protobuf/compiler/java/java_enum.cc' object='java_enum.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o java_enum.lo `test -f 'google/protobuf/compiler/java/java_enum.cc' || echo '$(srcdir)/'`google/protobuf/compiler/java/java_enum.cc +@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o java_enum.lo `test -f 'google/protobuf/compiler/java/java_enum.cc' || echo '$(srcdir)/'`google/protobuf/compiler/java/java_enum.cc java_enum_field.lo: google/protobuf/compiler/java/java_enum_field.cc -@am__fastdepCXX_TRUE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT java_enum_field.lo -MD -MP -MF $(DEPDIR)/java_enum_field.Tpo -c -o java_enum_field.lo `test -f 'google/protobuf/compiler/java/java_enum_field.cc' || echo '$(srcdir)/'`google/protobuf/compiler/java/java_enum_field.cc -@am__fastdepCXX_TRUE@ mv -f $(DEPDIR)/java_enum_field.Tpo $(DEPDIR)/java_enum_field.Plo +@am__fastdepCXX_TRUE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT java_enum_field.lo -MD -MP -MF $(DEPDIR)/java_enum_field.Tpo -c -o java_enum_field.lo `test -f 'google/protobuf/compiler/java/java_enum_field.cc' || echo '$(srcdir)/'`google/protobuf/compiler/java/java_enum_field.cc +@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/java_enum_field.Tpo $(DEPDIR)/java_enum_field.Plo @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='google/protobuf/compiler/java/java_enum_field.cc' object='java_enum_field.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o java_enum_field.lo `test -f 'google/protobuf/compiler/java/java_enum_field.cc' || echo '$(srcdir)/'`google/protobuf/compiler/java/java_enum_field.cc +@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o java_enum_field.lo `test -f 'google/protobuf/compiler/java/java_enum_field.cc' || echo '$(srcdir)/'`google/protobuf/compiler/java/java_enum_field.cc java_extension.lo: google/protobuf/compiler/java/java_extension.cc -@am__fastdepCXX_TRUE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT java_extension.lo -MD -MP -MF $(DEPDIR)/java_extension.Tpo -c -o java_extension.lo `test -f 'google/protobuf/compiler/java/java_extension.cc' || echo '$(srcdir)/'`google/protobuf/compiler/java/java_extension.cc -@am__fastdepCXX_TRUE@ mv -f $(DEPDIR)/java_extension.Tpo $(DEPDIR)/java_extension.Plo +@am__fastdepCXX_TRUE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT java_extension.lo -MD -MP -MF $(DEPDIR)/java_extension.Tpo -c -o java_extension.lo `test -f 'google/protobuf/compiler/java/java_extension.cc' || echo '$(srcdir)/'`google/protobuf/compiler/java/java_extension.cc +@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/java_extension.Tpo $(DEPDIR)/java_extension.Plo @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='google/protobuf/compiler/java/java_extension.cc' object='java_extension.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o java_extension.lo `test -f 'google/protobuf/compiler/java/java_extension.cc' || echo '$(srcdir)/'`google/protobuf/compiler/java/java_extension.cc +@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o java_extension.lo `test -f 'google/protobuf/compiler/java/java_extension.cc' || echo '$(srcdir)/'`google/protobuf/compiler/java/java_extension.cc java_field.lo: google/protobuf/compiler/java/java_field.cc -@am__fastdepCXX_TRUE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT java_field.lo -MD -MP -MF $(DEPDIR)/java_field.Tpo -c -o java_field.lo `test -f 'google/protobuf/compiler/java/java_field.cc' || echo '$(srcdir)/'`google/protobuf/compiler/java/java_field.cc -@am__fastdepCXX_TRUE@ mv -f $(DEPDIR)/java_field.Tpo $(DEPDIR)/java_field.Plo +@am__fastdepCXX_TRUE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT java_field.lo -MD -MP -MF $(DEPDIR)/java_field.Tpo -c -o java_field.lo `test -f 'google/protobuf/compiler/java/java_field.cc' || echo '$(srcdir)/'`google/protobuf/compiler/java/java_field.cc +@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/java_field.Tpo $(DEPDIR)/java_field.Plo @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='google/protobuf/compiler/java/java_field.cc' object='java_field.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o java_field.lo `test -f 'google/protobuf/compiler/java/java_field.cc' || echo '$(srcdir)/'`google/protobuf/compiler/java/java_field.cc +@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o java_field.lo `test -f 'google/protobuf/compiler/java/java_field.cc' || echo '$(srcdir)/'`google/protobuf/compiler/java/java_field.cc java_file.lo: google/protobuf/compiler/java/java_file.cc -@am__fastdepCXX_TRUE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT java_file.lo -MD -MP -MF $(DEPDIR)/java_file.Tpo -c -o java_file.lo `test -f 'google/protobuf/compiler/java/java_file.cc' || echo '$(srcdir)/'`google/protobuf/compiler/java/java_file.cc -@am__fastdepCXX_TRUE@ mv -f $(DEPDIR)/java_file.Tpo $(DEPDIR)/java_file.Plo +@am__fastdepCXX_TRUE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT java_file.lo -MD -MP -MF $(DEPDIR)/java_file.Tpo -c -o java_file.lo `test -f 'google/protobuf/compiler/java/java_file.cc' || echo '$(srcdir)/'`google/protobuf/compiler/java/java_file.cc +@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/java_file.Tpo $(DEPDIR)/java_file.Plo @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='google/protobuf/compiler/java/java_file.cc' object='java_file.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o java_file.lo `test -f 'google/protobuf/compiler/java/java_file.cc' || echo '$(srcdir)/'`google/protobuf/compiler/java/java_file.cc +@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o java_file.lo `test -f 'google/protobuf/compiler/java/java_file.cc' || echo '$(srcdir)/'`google/protobuf/compiler/java/java_file.cc java_generator.lo: google/protobuf/compiler/java/java_generator.cc -@am__fastdepCXX_TRUE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT java_generator.lo -MD -MP -MF $(DEPDIR)/java_generator.Tpo -c -o java_generator.lo `test -f 'google/protobuf/compiler/java/java_generator.cc' || echo '$(srcdir)/'`google/protobuf/compiler/java/java_generator.cc -@am__fastdepCXX_TRUE@ mv -f $(DEPDIR)/java_generator.Tpo $(DEPDIR)/java_generator.Plo +@am__fastdepCXX_TRUE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT java_generator.lo -MD -MP -MF $(DEPDIR)/java_generator.Tpo -c -o java_generator.lo `test -f 'google/protobuf/compiler/java/java_generator.cc' || echo '$(srcdir)/'`google/protobuf/compiler/java/java_generator.cc +@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/java_generator.Tpo $(DEPDIR)/java_generator.Plo @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='google/protobuf/compiler/java/java_generator.cc' object='java_generator.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o java_generator.lo `test -f 'google/protobuf/compiler/java/java_generator.cc' || echo '$(srcdir)/'`google/protobuf/compiler/java/java_generator.cc +@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o java_generator.lo `test -f 'google/protobuf/compiler/java/java_generator.cc' || echo '$(srcdir)/'`google/protobuf/compiler/java/java_generator.cc java_helpers.lo: google/protobuf/compiler/java/java_helpers.cc -@am__fastdepCXX_TRUE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT java_helpers.lo -MD -MP -MF $(DEPDIR)/java_helpers.Tpo -c -o java_helpers.lo `test -f 'google/protobuf/compiler/java/java_helpers.cc' || echo '$(srcdir)/'`google/protobuf/compiler/java/java_helpers.cc -@am__fastdepCXX_TRUE@ mv -f $(DEPDIR)/java_helpers.Tpo $(DEPDIR)/java_helpers.Plo +@am__fastdepCXX_TRUE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT java_helpers.lo -MD -MP -MF $(DEPDIR)/java_helpers.Tpo -c -o java_helpers.lo `test -f 'google/protobuf/compiler/java/java_helpers.cc' || echo '$(srcdir)/'`google/protobuf/compiler/java/java_helpers.cc +@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/java_helpers.Tpo $(DEPDIR)/java_helpers.Plo @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='google/protobuf/compiler/java/java_helpers.cc' object='java_helpers.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o java_helpers.lo `test -f 'google/protobuf/compiler/java/java_helpers.cc' || echo '$(srcdir)/'`google/protobuf/compiler/java/java_helpers.cc +@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o java_helpers.lo `test -f 'google/protobuf/compiler/java/java_helpers.cc' || echo '$(srcdir)/'`google/protobuf/compiler/java/java_helpers.cc java_message.lo: google/protobuf/compiler/java/java_message.cc -@am__fastdepCXX_TRUE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT java_message.lo -MD -MP -MF $(DEPDIR)/java_message.Tpo -c -o java_message.lo `test -f 'google/protobuf/compiler/java/java_message.cc' || echo '$(srcdir)/'`google/protobuf/compiler/java/java_message.cc -@am__fastdepCXX_TRUE@ mv -f $(DEPDIR)/java_message.Tpo $(DEPDIR)/java_message.Plo +@am__fastdepCXX_TRUE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT java_message.lo -MD -MP -MF $(DEPDIR)/java_message.Tpo -c -o java_message.lo `test -f 'google/protobuf/compiler/java/java_message.cc' || echo '$(srcdir)/'`google/protobuf/compiler/java/java_message.cc +@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/java_message.Tpo $(DEPDIR)/java_message.Plo @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='google/protobuf/compiler/java/java_message.cc' object='java_message.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o java_message.lo `test -f 'google/protobuf/compiler/java/java_message.cc' || echo '$(srcdir)/'`google/protobuf/compiler/java/java_message.cc +@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o java_message.lo `test -f 'google/protobuf/compiler/java/java_message.cc' || echo '$(srcdir)/'`google/protobuf/compiler/java/java_message.cc java_message_field.lo: google/protobuf/compiler/java/java_message_field.cc -@am__fastdepCXX_TRUE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT java_message_field.lo -MD -MP -MF $(DEPDIR)/java_message_field.Tpo -c -o java_message_field.lo `test -f 'google/protobuf/compiler/java/java_message_field.cc' || echo '$(srcdir)/'`google/protobuf/compiler/java/java_message_field.cc -@am__fastdepCXX_TRUE@ mv -f $(DEPDIR)/java_message_field.Tpo $(DEPDIR)/java_message_field.Plo +@am__fastdepCXX_TRUE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT java_message_field.lo -MD -MP -MF $(DEPDIR)/java_message_field.Tpo -c -o java_message_field.lo `test -f 'google/protobuf/compiler/java/java_message_field.cc' || echo '$(srcdir)/'`google/protobuf/compiler/java/java_message_field.cc +@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/java_message_field.Tpo $(DEPDIR)/java_message_field.Plo @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='google/protobuf/compiler/java/java_message_field.cc' object='java_message_field.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o java_message_field.lo `test -f 'google/protobuf/compiler/java/java_message_field.cc' || echo '$(srcdir)/'`google/protobuf/compiler/java/java_message_field.cc +@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o java_message_field.lo `test -f 'google/protobuf/compiler/java/java_message_field.cc' || echo '$(srcdir)/'`google/protobuf/compiler/java/java_message_field.cc java_primitive_field.lo: google/protobuf/compiler/java/java_primitive_field.cc -@am__fastdepCXX_TRUE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT java_primitive_field.lo -MD -MP -MF $(DEPDIR)/java_primitive_field.Tpo -c -o java_primitive_field.lo `test -f 'google/protobuf/compiler/java/java_primitive_field.cc' || echo '$(srcdir)/'`google/protobuf/compiler/java/java_primitive_field.cc -@am__fastdepCXX_TRUE@ mv -f $(DEPDIR)/java_primitive_field.Tpo $(DEPDIR)/java_primitive_field.Plo +@am__fastdepCXX_TRUE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT java_primitive_field.lo -MD -MP -MF $(DEPDIR)/java_primitive_field.Tpo -c -o java_primitive_field.lo `test -f 'google/protobuf/compiler/java/java_primitive_field.cc' || echo '$(srcdir)/'`google/protobuf/compiler/java/java_primitive_field.cc +@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/java_primitive_field.Tpo $(DEPDIR)/java_primitive_field.Plo @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='google/protobuf/compiler/java/java_primitive_field.cc' object='java_primitive_field.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o java_primitive_field.lo `test -f 'google/protobuf/compiler/java/java_primitive_field.cc' || echo '$(srcdir)/'`google/protobuf/compiler/java/java_primitive_field.cc +@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o java_primitive_field.lo `test -f 'google/protobuf/compiler/java/java_primitive_field.cc' || echo '$(srcdir)/'`google/protobuf/compiler/java/java_primitive_field.cc java_service.lo: google/protobuf/compiler/java/java_service.cc -@am__fastdepCXX_TRUE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT java_service.lo -MD -MP -MF $(DEPDIR)/java_service.Tpo -c -o java_service.lo `test -f 'google/protobuf/compiler/java/java_service.cc' || echo '$(srcdir)/'`google/protobuf/compiler/java/java_service.cc -@am__fastdepCXX_TRUE@ mv -f $(DEPDIR)/java_service.Tpo $(DEPDIR)/java_service.Plo +@am__fastdepCXX_TRUE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT java_service.lo -MD -MP -MF $(DEPDIR)/java_service.Tpo -c -o java_service.lo `test -f 'google/protobuf/compiler/java/java_service.cc' || echo '$(srcdir)/'`google/protobuf/compiler/java/java_service.cc +@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/java_service.Tpo $(DEPDIR)/java_service.Plo @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='google/protobuf/compiler/java/java_service.cc' object='java_service.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o java_service.lo `test -f 'google/protobuf/compiler/java/java_service.cc' || echo '$(srcdir)/'`google/protobuf/compiler/java/java_service.cc +@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o java_service.lo `test -f 'google/protobuf/compiler/java/java_service.cc' || echo '$(srcdir)/'`google/protobuf/compiler/java/java_service.cc + +java_string_field.lo: google/protobuf/compiler/java/java_string_field.cc +@am__fastdepCXX_TRUE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT java_string_field.lo -MD -MP -MF $(DEPDIR)/java_string_field.Tpo -c -o java_string_field.lo `test -f 'google/protobuf/compiler/java/java_string_field.cc' || echo '$(srcdir)/'`google/protobuf/compiler/java/java_string_field.cc +@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/java_string_field.Tpo $(DEPDIR)/java_string_field.Plo +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='google/protobuf/compiler/java/java_string_field.cc' object='java_string_field.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o java_string_field.lo `test -f 'google/protobuf/compiler/java/java_string_field.cc' || echo '$(srcdir)/'`google/protobuf/compiler/java/java_string_field.cc + +java_doc_comment.lo: google/protobuf/compiler/java/java_doc_comment.cc +@am__fastdepCXX_TRUE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT java_doc_comment.lo -MD -MP -MF $(DEPDIR)/java_doc_comment.Tpo -c -o java_doc_comment.lo `test -f 'google/protobuf/compiler/java/java_doc_comment.cc' || echo '$(srcdir)/'`google/protobuf/compiler/java/java_doc_comment.cc +@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/java_doc_comment.Tpo $(DEPDIR)/java_doc_comment.Plo +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='google/protobuf/compiler/java/java_doc_comment.cc' object='java_doc_comment.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o java_doc_comment.lo `test -f 'google/protobuf/compiler/java/java_doc_comment.cc' || echo '$(srcdir)/'`google/protobuf/compiler/java/java_doc_comment.cc python_generator.lo: google/protobuf/compiler/python/python_generator.cc -@am__fastdepCXX_TRUE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT python_generator.lo -MD -MP -MF $(DEPDIR)/python_generator.Tpo -c -o python_generator.lo `test -f 'google/protobuf/compiler/python/python_generator.cc' || echo '$(srcdir)/'`google/protobuf/compiler/python/python_generator.cc -@am__fastdepCXX_TRUE@ mv -f $(DEPDIR)/python_generator.Tpo $(DEPDIR)/python_generator.Plo +@am__fastdepCXX_TRUE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT python_generator.lo -MD -MP -MF $(DEPDIR)/python_generator.Tpo -c -o python_generator.lo `test -f 'google/protobuf/compiler/python/python_generator.cc' || echo '$(srcdir)/'`google/protobuf/compiler/python/python_generator.cc +@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/python_generator.Tpo $(DEPDIR)/python_generator.Plo @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='google/protobuf/compiler/python/python_generator.cc' object='python_generator.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o python_generator.lo `test -f 'google/protobuf/compiler/python/python_generator.cc' || echo '$(srcdir)/'`google/protobuf/compiler/python/python_generator.cc +@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o python_generator.lo `test -f 'google/protobuf/compiler/python/python_generator.cc' || echo '$(srcdir)/'`google/protobuf/compiler/python/python_generator.cc protobuf_lazy_descriptor_test-cpp_unittest.o: google/protobuf/compiler/cpp/cpp_unittest.cc @am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(protobuf_lazy_descriptor_test_CPPFLAGS) $(CPPFLAGS) $(protobuf_lazy_descriptor_test_CXXFLAGS) $(CXXFLAGS) -MT protobuf_lazy_descriptor_test-cpp_unittest.o -MD -MP -MF $(DEPDIR)/protobuf_lazy_descriptor_test-cpp_unittest.Tpo -c -o protobuf_lazy_descriptor_test-cpp_unittest.o `test -f 'google/protobuf/compiler/cpp/cpp_unittest.cc' || echo '$(srcdir)/'`google/protobuf/compiler/cpp/cpp_unittest.cc -@am__fastdepCXX_TRUE@ mv -f $(DEPDIR)/protobuf_lazy_descriptor_test-cpp_unittest.Tpo $(DEPDIR)/protobuf_lazy_descriptor_test-cpp_unittest.Po +@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/protobuf_lazy_descriptor_test-cpp_unittest.Tpo $(DEPDIR)/protobuf_lazy_descriptor_test-cpp_unittest.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='google/protobuf/compiler/cpp/cpp_unittest.cc' object='protobuf_lazy_descriptor_test-cpp_unittest.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(protobuf_lazy_descriptor_test_CPPFLAGS) $(CPPFLAGS) $(protobuf_lazy_descriptor_test_CXXFLAGS) $(CXXFLAGS) -c -o protobuf_lazy_descriptor_test-cpp_unittest.o `test -f 'google/protobuf/compiler/cpp/cpp_unittest.cc' || echo '$(srcdir)/'`google/protobuf/compiler/cpp/cpp_unittest.cc protobuf_lazy_descriptor_test-cpp_unittest.obj: google/protobuf/compiler/cpp/cpp_unittest.cc @am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(protobuf_lazy_descriptor_test_CPPFLAGS) $(CPPFLAGS) $(protobuf_lazy_descriptor_test_CXXFLAGS) $(CXXFLAGS) -MT protobuf_lazy_descriptor_test-cpp_unittest.obj -MD -MP -MF $(DEPDIR)/protobuf_lazy_descriptor_test-cpp_unittest.Tpo -c -o protobuf_lazy_descriptor_test-cpp_unittest.obj `if test -f 'google/protobuf/compiler/cpp/cpp_unittest.cc'; then $(CYGPATH_W) 'google/protobuf/compiler/cpp/cpp_unittest.cc'; else $(CYGPATH_W) '$(srcdir)/google/protobuf/compiler/cpp/cpp_unittest.cc'; fi` -@am__fastdepCXX_TRUE@ mv -f $(DEPDIR)/protobuf_lazy_descriptor_test-cpp_unittest.Tpo $(DEPDIR)/protobuf_lazy_descriptor_test-cpp_unittest.Po +@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/protobuf_lazy_descriptor_test-cpp_unittest.Tpo $(DEPDIR)/protobuf_lazy_descriptor_test-cpp_unittest.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='google/protobuf/compiler/cpp/cpp_unittest.cc' object='protobuf_lazy_descriptor_test-cpp_unittest.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(protobuf_lazy_descriptor_test_CPPFLAGS) $(CPPFLAGS) $(protobuf_lazy_descriptor_test_CXXFLAGS) $(CXXFLAGS) -c -o protobuf_lazy_descriptor_test-cpp_unittest.obj `if test -f 'google/protobuf/compiler/cpp/cpp_unittest.cc'; then $(CYGPATH_W) 'google/protobuf/compiler/cpp/cpp_unittest.cc'; else $(CYGPATH_W) '$(srcdir)/google/protobuf/compiler/cpp/cpp_unittest.cc'; fi` protobuf_lazy_descriptor_test-test_util.o: google/protobuf/test_util.cc @am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(protobuf_lazy_descriptor_test_CPPFLAGS) $(CPPFLAGS) $(protobuf_lazy_descriptor_test_CXXFLAGS) $(CXXFLAGS) -MT protobuf_lazy_descriptor_test-test_util.o -MD -MP -MF $(DEPDIR)/protobuf_lazy_descriptor_test-test_util.Tpo -c -o protobuf_lazy_descriptor_test-test_util.o `test -f 'google/protobuf/test_util.cc' || echo '$(srcdir)/'`google/protobuf/test_util.cc -@am__fastdepCXX_TRUE@ mv -f $(DEPDIR)/protobuf_lazy_descriptor_test-test_util.Tpo $(DEPDIR)/protobuf_lazy_descriptor_test-test_util.Po +@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/protobuf_lazy_descriptor_test-test_util.Tpo $(DEPDIR)/protobuf_lazy_descriptor_test-test_util.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='google/protobuf/test_util.cc' object='protobuf_lazy_descriptor_test-test_util.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(protobuf_lazy_descriptor_test_CPPFLAGS) $(CPPFLAGS) $(protobuf_lazy_descriptor_test_CXXFLAGS) $(CXXFLAGS) -c -o protobuf_lazy_descriptor_test-test_util.o `test -f 'google/protobuf/test_util.cc' || echo '$(srcdir)/'`google/protobuf/test_util.cc protobuf_lazy_descriptor_test-test_util.obj: google/protobuf/test_util.cc @am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(protobuf_lazy_descriptor_test_CPPFLAGS) $(CPPFLAGS) $(protobuf_lazy_descriptor_test_CXXFLAGS) $(CXXFLAGS) -MT protobuf_lazy_descriptor_test-test_util.obj -MD -MP -MF $(DEPDIR)/protobuf_lazy_descriptor_test-test_util.Tpo -c -o protobuf_lazy_descriptor_test-test_util.obj `if test -f 'google/protobuf/test_util.cc'; then $(CYGPATH_W) 'google/protobuf/test_util.cc'; else $(CYGPATH_W) '$(srcdir)/google/protobuf/test_util.cc'; fi` -@am__fastdepCXX_TRUE@ mv -f $(DEPDIR)/protobuf_lazy_descriptor_test-test_util.Tpo $(DEPDIR)/protobuf_lazy_descriptor_test-test_util.Po +@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/protobuf_lazy_descriptor_test-test_util.Tpo $(DEPDIR)/protobuf_lazy_descriptor_test-test_util.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='google/protobuf/test_util.cc' object='protobuf_lazy_descriptor_test-test_util.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(protobuf_lazy_descriptor_test_CPPFLAGS) $(CPPFLAGS) $(protobuf_lazy_descriptor_test_CXXFLAGS) $(CXXFLAGS) -c -o protobuf_lazy_descriptor_test-test_util.obj `if test -f 'google/protobuf/test_util.cc'; then $(CYGPATH_W) 'google/protobuf/test_util.cc'; else $(CYGPATH_W) '$(srcdir)/google/protobuf/test_util.cc'; fi` protobuf_lazy_descriptor_test-googletest.o: google/protobuf/testing/googletest.cc @am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(protobuf_lazy_descriptor_test_CPPFLAGS) $(CPPFLAGS) $(protobuf_lazy_descriptor_test_CXXFLAGS) $(CXXFLAGS) -MT protobuf_lazy_descriptor_test-googletest.o -MD -MP -MF $(DEPDIR)/protobuf_lazy_descriptor_test-googletest.Tpo -c -o protobuf_lazy_descriptor_test-googletest.o `test -f 'google/protobuf/testing/googletest.cc' || echo '$(srcdir)/'`google/protobuf/testing/googletest.cc -@am__fastdepCXX_TRUE@ mv -f $(DEPDIR)/protobuf_lazy_descriptor_test-googletest.Tpo $(DEPDIR)/protobuf_lazy_descriptor_test-googletest.Po +@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/protobuf_lazy_descriptor_test-googletest.Tpo $(DEPDIR)/protobuf_lazy_descriptor_test-googletest.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='google/protobuf/testing/googletest.cc' object='protobuf_lazy_descriptor_test-googletest.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(protobuf_lazy_descriptor_test_CPPFLAGS) $(CPPFLAGS) $(protobuf_lazy_descriptor_test_CXXFLAGS) $(CXXFLAGS) -c -o protobuf_lazy_descriptor_test-googletest.o `test -f 'google/protobuf/testing/googletest.cc' || echo '$(srcdir)/'`google/protobuf/testing/googletest.cc protobuf_lazy_descriptor_test-googletest.obj: google/protobuf/testing/googletest.cc @am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(protobuf_lazy_descriptor_test_CPPFLAGS) $(CPPFLAGS) $(protobuf_lazy_descriptor_test_CXXFLAGS) $(CXXFLAGS) -MT protobuf_lazy_descriptor_test-googletest.obj -MD -MP -MF $(DEPDIR)/protobuf_lazy_descriptor_test-googletest.Tpo -c -o protobuf_lazy_descriptor_test-googletest.obj `if test -f 'google/protobuf/testing/googletest.cc'; then $(CYGPATH_W) 'google/protobuf/testing/googletest.cc'; else $(CYGPATH_W) '$(srcdir)/google/protobuf/testing/googletest.cc'; fi` -@am__fastdepCXX_TRUE@ mv -f $(DEPDIR)/protobuf_lazy_descriptor_test-googletest.Tpo $(DEPDIR)/protobuf_lazy_descriptor_test-googletest.Po +@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/protobuf_lazy_descriptor_test-googletest.Tpo $(DEPDIR)/protobuf_lazy_descriptor_test-googletest.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='google/protobuf/testing/googletest.cc' object='protobuf_lazy_descriptor_test-googletest.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(protobuf_lazy_descriptor_test_CPPFLAGS) $(CPPFLAGS) $(protobuf_lazy_descriptor_test_CXXFLAGS) $(CXXFLAGS) -c -o protobuf_lazy_descriptor_test-googletest.obj `if test -f 'google/protobuf/testing/googletest.cc'; then $(CYGPATH_W) 'google/protobuf/testing/googletest.cc'; else $(CYGPATH_W) '$(srcdir)/google/protobuf/testing/googletest.cc'; fi` protobuf_lazy_descriptor_test-file.o: google/protobuf/testing/file.cc @am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(protobuf_lazy_descriptor_test_CPPFLAGS) $(CPPFLAGS) $(protobuf_lazy_descriptor_test_CXXFLAGS) $(CXXFLAGS) -MT protobuf_lazy_descriptor_test-file.o -MD -MP -MF $(DEPDIR)/protobuf_lazy_descriptor_test-file.Tpo -c -o protobuf_lazy_descriptor_test-file.o `test -f 'google/protobuf/testing/file.cc' || echo '$(srcdir)/'`google/protobuf/testing/file.cc -@am__fastdepCXX_TRUE@ mv -f $(DEPDIR)/protobuf_lazy_descriptor_test-file.Tpo $(DEPDIR)/protobuf_lazy_descriptor_test-file.Po +@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/protobuf_lazy_descriptor_test-file.Tpo $(DEPDIR)/protobuf_lazy_descriptor_test-file.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='google/protobuf/testing/file.cc' object='protobuf_lazy_descriptor_test-file.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(protobuf_lazy_descriptor_test_CPPFLAGS) $(CPPFLAGS) $(protobuf_lazy_descriptor_test_CXXFLAGS) $(CXXFLAGS) -c -o protobuf_lazy_descriptor_test-file.o `test -f 'google/protobuf/testing/file.cc' || echo '$(srcdir)/'`google/protobuf/testing/file.cc protobuf_lazy_descriptor_test-file.obj: google/protobuf/testing/file.cc @am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(protobuf_lazy_descriptor_test_CPPFLAGS) $(CPPFLAGS) $(protobuf_lazy_descriptor_test_CXXFLAGS) $(CXXFLAGS) -MT protobuf_lazy_descriptor_test-file.obj -MD -MP -MF $(DEPDIR)/protobuf_lazy_descriptor_test-file.Tpo -c -o protobuf_lazy_descriptor_test-file.obj `if test -f 'google/protobuf/testing/file.cc'; then $(CYGPATH_W) 'google/protobuf/testing/file.cc'; else $(CYGPATH_W) '$(srcdir)/google/protobuf/testing/file.cc'; fi` -@am__fastdepCXX_TRUE@ mv -f $(DEPDIR)/protobuf_lazy_descriptor_test-file.Tpo $(DEPDIR)/protobuf_lazy_descriptor_test-file.Po +@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/protobuf_lazy_descriptor_test-file.Tpo $(DEPDIR)/protobuf_lazy_descriptor_test-file.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='google/protobuf/testing/file.cc' object='protobuf_lazy_descriptor_test-file.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(protobuf_lazy_descriptor_test_CPPFLAGS) $(CPPFLAGS) $(protobuf_lazy_descriptor_test_CXXFLAGS) $(CXXFLAGS) -c -o protobuf_lazy_descriptor_test-file.obj `if test -f 'google/protobuf/testing/file.cc'; then $(CYGPATH_W) 'google/protobuf/testing/file.cc'; else $(CYGPATH_W) '$(srcdir)/google/protobuf/testing/file.cc'; fi` protobuf_lazy_descriptor_test-unittest_lite.pb.o: google/protobuf/unittest_lite.pb.cc @am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(protobuf_lazy_descriptor_test_CPPFLAGS) $(CPPFLAGS) $(protobuf_lazy_descriptor_test_CXXFLAGS) $(CXXFLAGS) -MT protobuf_lazy_descriptor_test-unittest_lite.pb.o -MD -MP -MF $(DEPDIR)/protobuf_lazy_descriptor_test-unittest_lite.pb.Tpo -c -o protobuf_lazy_descriptor_test-unittest_lite.pb.o `test -f 'google/protobuf/unittest_lite.pb.cc' || echo '$(srcdir)/'`google/protobuf/unittest_lite.pb.cc -@am__fastdepCXX_TRUE@ mv -f $(DEPDIR)/protobuf_lazy_descriptor_test-unittest_lite.pb.Tpo $(DEPDIR)/protobuf_lazy_descriptor_test-unittest_lite.pb.Po +@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/protobuf_lazy_descriptor_test-unittest_lite.pb.Tpo $(DEPDIR)/protobuf_lazy_descriptor_test-unittest_lite.pb.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='google/protobuf/unittest_lite.pb.cc' object='protobuf_lazy_descriptor_test-unittest_lite.pb.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(protobuf_lazy_descriptor_test_CPPFLAGS) $(CPPFLAGS) $(protobuf_lazy_descriptor_test_CXXFLAGS) $(CXXFLAGS) -c -o protobuf_lazy_descriptor_test-unittest_lite.pb.o `test -f 'google/protobuf/unittest_lite.pb.cc' || echo '$(srcdir)/'`google/protobuf/unittest_lite.pb.cc protobuf_lazy_descriptor_test-unittest_lite.pb.obj: google/protobuf/unittest_lite.pb.cc @am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(protobuf_lazy_descriptor_test_CPPFLAGS) $(CPPFLAGS) $(protobuf_lazy_descriptor_test_CXXFLAGS) $(CXXFLAGS) -MT protobuf_lazy_descriptor_test-unittest_lite.pb.obj -MD -MP -MF $(DEPDIR)/protobuf_lazy_descriptor_test-unittest_lite.pb.Tpo -c -o protobuf_lazy_descriptor_test-unittest_lite.pb.obj `if test -f 'google/protobuf/unittest_lite.pb.cc'; then $(CYGPATH_W) 'google/protobuf/unittest_lite.pb.cc'; else $(CYGPATH_W) '$(srcdir)/google/protobuf/unittest_lite.pb.cc'; fi` -@am__fastdepCXX_TRUE@ mv -f $(DEPDIR)/protobuf_lazy_descriptor_test-unittest_lite.pb.Tpo $(DEPDIR)/protobuf_lazy_descriptor_test-unittest_lite.pb.Po +@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/protobuf_lazy_descriptor_test-unittest_lite.pb.Tpo $(DEPDIR)/protobuf_lazy_descriptor_test-unittest_lite.pb.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='google/protobuf/unittest_lite.pb.cc' object='protobuf_lazy_descriptor_test-unittest_lite.pb.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(protobuf_lazy_descriptor_test_CPPFLAGS) $(CPPFLAGS) $(protobuf_lazy_descriptor_test_CXXFLAGS) $(CXXFLAGS) -c -o protobuf_lazy_descriptor_test-unittest_lite.pb.obj `if test -f 'google/protobuf/unittest_lite.pb.cc'; then $(CYGPATH_W) 'google/protobuf/unittest_lite.pb.cc'; else $(CYGPATH_W) '$(srcdir)/google/protobuf/unittest_lite.pb.cc'; fi` protobuf_lazy_descriptor_test-unittest_import_lite.pb.o: google/protobuf/unittest_import_lite.pb.cc @am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(protobuf_lazy_descriptor_test_CPPFLAGS) $(CPPFLAGS) $(protobuf_lazy_descriptor_test_CXXFLAGS) $(CXXFLAGS) -MT protobuf_lazy_descriptor_test-unittest_import_lite.pb.o -MD -MP -MF $(DEPDIR)/protobuf_lazy_descriptor_test-unittest_import_lite.pb.Tpo -c -o protobuf_lazy_descriptor_test-unittest_import_lite.pb.o `test -f 'google/protobuf/unittest_import_lite.pb.cc' || echo '$(srcdir)/'`google/protobuf/unittest_import_lite.pb.cc -@am__fastdepCXX_TRUE@ mv -f $(DEPDIR)/protobuf_lazy_descriptor_test-unittest_import_lite.pb.Tpo $(DEPDIR)/protobuf_lazy_descriptor_test-unittest_import_lite.pb.Po +@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/protobuf_lazy_descriptor_test-unittest_import_lite.pb.Tpo $(DEPDIR)/protobuf_lazy_descriptor_test-unittest_import_lite.pb.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='google/protobuf/unittest_import_lite.pb.cc' object='protobuf_lazy_descriptor_test-unittest_import_lite.pb.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(protobuf_lazy_descriptor_test_CPPFLAGS) $(CPPFLAGS) $(protobuf_lazy_descriptor_test_CXXFLAGS) $(CXXFLAGS) -c -o protobuf_lazy_descriptor_test-unittest_import_lite.pb.o `test -f 'google/protobuf/unittest_import_lite.pb.cc' || echo '$(srcdir)/'`google/protobuf/unittest_import_lite.pb.cc protobuf_lazy_descriptor_test-unittest_import_lite.pb.obj: google/protobuf/unittest_import_lite.pb.cc @am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(protobuf_lazy_descriptor_test_CPPFLAGS) $(CPPFLAGS) $(protobuf_lazy_descriptor_test_CXXFLAGS) $(CXXFLAGS) -MT protobuf_lazy_descriptor_test-unittest_import_lite.pb.obj -MD -MP -MF $(DEPDIR)/protobuf_lazy_descriptor_test-unittest_import_lite.pb.Tpo -c -o protobuf_lazy_descriptor_test-unittest_import_lite.pb.obj `if test -f 'google/protobuf/unittest_import_lite.pb.cc'; then $(CYGPATH_W) 'google/protobuf/unittest_import_lite.pb.cc'; else $(CYGPATH_W) '$(srcdir)/google/protobuf/unittest_import_lite.pb.cc'; fi` -@am__fastdepCXX_TRUE@ mv -f $(DEPDIR)/protobuf_lazy_descriptor_test-unittest_import_lite.pb.Tpo $(DEPDIR)/protobuf_lazy_descriptor_test-unittest_import_lite.pb.Po +@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/protobuf_lazy_descriptor_test-unittest_import_lite.pb.Tpo $(DEPDIR)/protobuf_lazy_descriptor_test-unittest_import_lite.pb.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='google/protobuf/unittest_import_lite.pb.cc' object='protobuf_lazy_descriptor_test-unittest_import_lite.pb.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(protobuf_lazy_descriptor_test_CPPFLAGS) $(CPPFLAGS) $(protobuf_lazy_descriptor_test_CXXFLAGS) $(CXXFLAGS) -c -o protobuf_lazy_descriptor_test-unittest_import_lite.pb.obj `if test -f 'google/protobuf/unittest_import_lite.pb.cc'; then $(CYGPATH_W) 'google/protobuf/unittest_import_lite.pb.cc'; else $(CYGPATH_W) '$(srcdir)/google/protobuf/unittest_import_lite.pb.cc'; fi` +protobuf_lazy_descriptor_test-unittest_import_public_lite.pb.o: google/protobuf/unittest_import_public_lite.pb.cc +@am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(protobuf_lazy_descriptor_test_CPPFLAGS) $(CPPFLAGS) $(protobuf_lazy_descriptor_test_CXXFLAGS) $(CXXFLAGS) -MT protobuf_lazy_descriptor_test-unittest_import_public_lite.pb.o -MD -MP -MF $(DEPDIR)/protobuf_lazy_descriptor_test-unittest_import_public_lite.pb.Tpo -c -o protobuf_lazy_descriptor_test-unittest_import_public_lite.pb.o `test -f 'google/protobuf/unittest_import_public_lite.pb.cc' || echo '$(srcdir)/'`google/protobuf/unittest_import_public_lite.pb.cc +@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/protobuf_lazy_descriptor_test-unittest_import_public_lite.pb.Tpo $(DEPDIR)/protobuf_lazy_descriptor_test-unittest_import_public_lite.pb.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='google/protobuf/unittest_import_public_lite.pb.cc' object='protobuf_lazy_descriptor_test-unittest_import_public_lite.pb.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(protobuf_lazy_descriptor_test_CPPFLAGS) $(CPPFLAGS) $(protobuf_lazy_descriptor_test_CXXFLAGS) $(CXXFLAGS) -c -o protobuf_lazy_descriptor_test-unittest_import_public_lite.pb.o `test -f 'google/protobuf/unittest_import_public_lite.pb.cc' || echo '$(srcdir)/'`google/protobuf/unittest_import_public_lite.pb.cc + +protobuf_lazy_descriptor_test-unittest_import_public_lite.pb.obj: google/protobuf/unittest_import_public_lite.pb.cc +@am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(protobuf_lazy_descriptor_test_CPPFLAGS) $(CPPFLAGS) $(protobuf_lazy_descriptor_test_CXXFLAGS) $(CXXFLAGS) -MT protobuf_lazy_descriptor_test-unittest_import_public_lite.pb.obj -MD -MP -MF $(DEPDIR)/protobuf_lazy_descriptor_test-unittest_import_public_lite.pb.Tpo -c -o protobuf_lazy_descriptor_test-unittest_import_public_lite.pb.obj `if test -f 'google/protobuf/unittest_import_public_lite.pb.cc'; then $(CYGPATH_W) 'google/protobuf/unittest_import_public_lite.pb.cc'; else $(CYGPATH_W) '$(srcdir)/google/protobuf/unittest_import_public_lite.pb.cc'; fi` +@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/protobuf_lazy_descriptor_test-unittest_import_public_lite.pb.Tpo $(DEPDIR)/protobuf_lazy_descriptor_test-unittest_import_public_lite.pb.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='google/protobuf/unittest_import_public_lite.pb.cc' object='protobuf_lazy_descriptor_test-unittest_import_public_lite.pb.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(protobuf_lazy_descriptor_test_CPPFLAGS) $(CPPFLAGS) $(protobuf_lazy_descriptor_test_CXXFLAGS) $(CXXFLAGS) -c -o protobuf_lazy_descriptor_test-unittest_import_public_lite.pb.obj `if test -f 'google/protobuf/unittest_import_public_lite.pb.cc'; then $(CYGPATH_W) 'google/protobuf/unittest_import_public_lite.pb.cc'; else $(CYGPATH_W) '$(srcdir)/google/protobuf/unittest_import_public_lite.pb.cc'; fi` + protobuf_lazy_descriptor_test-unittest.pb.o: google/protobuf/unittest.pb.cc @am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(protobuf_lazy_descriptor_test_CPPFLAGS) $(CPPFLAGS) $(protobuf_lazy_descriptor_test_CXXFLAGS) $(CXXFLAGS) -MT protobuf_lazy_descriptor_test-unittest.pb.o -MD -MP -MF $(DEPDIR)/protobuf_lazy_descriptor_test-unittest.pb.Tpo -c -o protobuf_lazy_descriptor_test-unittest.pb.o `test -f 'google/protobuf/unittest.pb.cc' || echo '$(srcdir)/'`google/protobuf/unittest.pb.cc -@am__fastdepCXX_TRUE@ mv -f $(DEPDIR)/protobuf_lazy_descriptor_test-unittest.pb.Tpo $(DEPDIR)/protobuf_lazy_descriptor_test-unittest.pb.Po +@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/protobuf_lazy_descriptor_test-unittest.pb.Tpo $(DEPDIR)/protobuf_lazy_descriptor_test-unittest.pb.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='google/protobuf/unittest.pb.cc' object='protobuf_lazy_descriptor_test-unittest.pb.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(protobuf_lazy_descriptor_test_CPPFLAGS) $(CPPFLAGS) $(protobuf_lazy_descriptor_test_CXXFLAGS) $(CXXFLAGS) -c -o protobuf_lazy_descriptor_test-unittest.pb.o `test -f 'google/protobuf/unittest.pb.cc' || echo '$(srcdir)/'`google/protobuf/unittest.pb.cc protobuf_lazy_descriptor_test-unittest.pb.obj: google/protobuf/unittest.pb.cc @am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(protobuf_lazy_descriptor_test_CPPFLAGS) $(CPPFLAGS) $(protobuf_lazy_descriptor_test_CXXFLAGS) $(CXXFLAGS) -MT protobuf_lazy_descriptor_test-unittest.pb.obj -MD -MP -MF $(DEPDIR)/protobuf_lazy_descriptor_test-unittest.pb.Tpo -c -o protobuf_lazy_descriptor_test-unittest.pb.obj `if test -f 'google/protobuf/unittest.pb.cc'; then $(CYGPATH_W) 'google/protobuf/unittest.pb.cc'; else $(CYGPATH_W) '$(srcdir)/google/protobuf/unittest.pb.cc'; fi` -@am__fastdepCXX_TRUE@ mv -f $(DEPDIR)/protobuf_lazy_descriptor_test-unittest.pb.Tpo $(DEPDIR)/protobuf_lazy_descriptor_test-unittest.pb.Po +@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/protobuf_lazy_descriptor_test-unittest.pb.Tpo $(DEPDIR)/protobuf_lazy_descriptor_test-unittest.pb.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='google/protobuf/unittest.pb.cc' object='protobuf_lazy_descriptor_test-unittest.pb.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(protobuf_lazy_descriptor_test_CPPFLAGS) $(CPPFLAGS) $(protobuf_lazy_descriptor_test_CXXFLAGS) $(CXXFLAGS) -c -o protobuf_lazy_descriptor_test-unittest.pb.obj `if test -f 'google/protobuf/unittest.pb.cc'; then $(CYGPATH_W) 'google/protobuf/unittest.pb.cc'; else $(CYGPATH_W) '$(srcdir)/google/protobuf/unittest.pb.cc'; fi` protobuf_lazy_descriptor_test-unittest_empty.pb.o: google/protobuf/unittest_empty.pb.cc @am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(protobuf_lazy_descriptor_test_CPPFLAGS) $(CPPFLAGS) $(protobuf_lazy_descriptor_test_CXXFLAGS) $(CXXFLAGS) -MT protobuf_lazy_descriptor_test-unittest_empty.pb.o -MD -MP -MF $(DEPDIR)/protobuf_lazy_descriptor_test-unittest_empty.pb.Tpo -c -o protobuf_lazy_descriptor_test-unittest_empty.pb.o `test -f 'google/protobuf/unittest_empty.pb.cc' || echo '$(srcdir)/'`google/protobuf/unittest_empty.pb.cc -@am__fastdepCXX_TRUE@ mv -f $(DEPDIR)/protobuf_lazy_descriptor_test-unittest_empty.pb.Tpo $(DEPDIR)/protobuf_lazy_descriptor_test-unittest_empty.pb.Po +@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/protobuf_lazy_descriptor_test-unittest_empty.pb.Tpo $(DEPDIR)/protobuf_lazy_descriptor_test-unittest_empty.pb.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='google/protobuf/unittest_empty.pb.cc' object='protobuf_lazy_descriptor_test-unittest_empty.pb.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(protobuf_lazy_descriptor_test_CPPFLAGS) $(CPPFLAGS) $(protobuf_lazy_descriptor_test_CXXFLAGS) $(CXXFLAGS) -c -o protobuf_lazy_descriptor_test-unittest_empty.pb.o `test -f 'google/protobuf/unittest_empty.pb.cc' || echo '$(srcdir)/'`google/protobuf/unittest_empty.pb.cc protobuf_lazy_descriptor_test-unittest_empty.pb.obj: google/protobuf/unittest_empty.pb.cc @am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(protobuf_lazy_descriptor_test_CPPFLAGS) $(CPPFLAGS) $(protobuf_lazy_descriptor_test_CXXFLAGS) $(CXXFLAGS) -MT protobuf_lazy_descriptor_test-unittest_empty.pb.obj -MD -MP -MF $(DEPDIR)/protobuf_lazy_descriptor_test-unittest_empty.pb.Tpo -c -o protobuf_lazy_descriptor_test-unittest_empty.pb.obj `if test -f 'google/protobuf/unittest_empty.pb.cc'; then $(CYGPATH_W) 'google/protobuf/unittest_empty.pb.cc'; else $(CYGPATH_W) '$(srcdir)/google/protobuf/unittest_empty.pb.cc'; fi` -@am__fastdepCXX_TRUE@ mv -f $(DEPDIR)/protobuf_lazy_descriptor_test-unittest_empty.pb.Tpo $(DEPDIR)/protobuf_lazy_descriptor_test-unittest_empty.pb.Po +@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/protobuf_lazy_descriptor_test-unittest_empty.pb.Tpo $(DEPDIR)/protobuf_lazy_descriptor_test-unittest_empty.pb.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='google/protobuf/unittest_empty.pb.cc' object='protobuf_lazy_descriptor_test-unittest_empty.pb.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(protobuf_lazy_descriptor_test_CPPFLAGS) $(CPPFLAGS) $(protobuf_lazy_descriptor_test_CXXFLAGS) $(CXXFLAGS) -c -o protobuf_lazy_descriptor_test-unittest_empty.pb.obj `if test -f 'google/protobuf/unittest_empty.pb.cc'; then $(CYGPATH_W) 'google/protobuf/unittest_empty.pb.cc'; else $(CYGPATH_W) '$(srcdir)/google/protobuf/unittest_empty.pb.cc'; fi` protobuf_lazy_descriptor_test-unittest_import.pb.o: google/protobuf/unittest_import.pb.cc @am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(protobuf_lazy_descriptor_test_CPPFLAGS) $(CPPFLAGS) $(protobuf_lazy_descriptor_test_CXXFLAGS) $(CXXFLAGS) -MT protobuf_lazy_descriptor_test-unittest_import.pb.o -MD -MP -MF $(DEPDIR)/protobuf_lazy_descriptor_test-unittest_import.pb.Tpo -c -o protobuf_lazy_descriptor_test-unittest_import.pb.o `test -f 'google/protobuf/unittest_import.pb.cc' || echo '$(srcdir)/'`google/protobuf/unittest_import.pb.cc -@am__fastdepCXX_TRUE@ mv -f $(DEPDIR)/protobuf_lazy_descriptor_test-unittest_import.pb.Tpo $(DEPDIR)/protobuf_lazy_descriptor_test-unittest_import.pb.Po +@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/protobuf_lazy_descriptor_test-unittest_import.pb.Tpo $(DEPDIR)/protobuf_lazy_descriptor_test-unittest_import.pb.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='google/protobuf/unittest_import.pb.cc' object='protobuf_lazy_descriptor_test-unittest_import.pb.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(protobuf_lazy_descriptor_test_CPPFLAGS) $(CPPFLAGS) $(protobuf_lazy_descriptor_test_CXXFLAGS) $(CXXFLAGS) -c -o protobuf_lazy_descriptor_test-unittest_import.pb.o `test -f 'google/protobuf/unittest_import.pb.cc' || echo '$(srcdir)/'`google/protobuf/unittest_import.pb.cc protobuf_lazy_descriptor_test-unittest_import.pb.obj: google/protobuf/unittest_import.pb.cc @am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(protobuf_lazy_descriptor_test_CPPFLAGS) $(CPPFLAGS) $(protobuf_lazy_descriptor_test_CXXFLAGS) $(CXXFLAGS) -MT protobuf_lazy_descriptor_test-unittest_import.pb.obj -MD -MP -MF $(DEPDIR)/protobuf_lazy_descriptor_test-unittest_import.pb.Tpo -c -o protobuf_lazy_descriptor_test-unittest_import.pb.obj `if test -f 'google/protobuf/unittest_import.pb.cc'; then $(CYGPATH_W) 'google/protobuf/unittest_import.pb.cc'; else $(CYGPATH_W) '$(srcdir)/google/protobuf/unittest_import.pb.cc'; fi` -@am__fastdepCXX_TRUE@ mv -f $(DEPDIR)/protobuf_lazy_descriptor_test-unittest_import.pb.Tpo $(DEPDIR)/protobuf_lazy_descriptor_test-unittest_import.pb.Po +@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/protobuf_lazy_descriptor_test-unittest_import.pb.Tpo $(DEPDIR)/protobuf_lazy_descriptor_test-unittest_import.pb.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='google/protobuf/unittest_import.pb.cc' object='protobuf_lazy_descriptor_test-unittest_import.pb.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(protobuf_lazy_descriptor_test_CPPFLAGS) $(CPPFLAGS) $(protobuf_lazy_descriptor_test_CXXFLAGS) $(CXXFLAGS) -c -o protobuf_lazy_descriptor_test-unittest_import.pb.obj `if test -f 'google/protobuf/unittest_import.pb.cc'; then $(CYGPATH_W) 'google/protobuf/unittest_import.pb.cc'; else $(CYGPATH_W) '$(srcdir)/google/protobuf/unittest_import.pb.cc'; fi` +protobuf_lazy_descriptor_test-unittest_import_public.pb.o: google/protobuf/unittest_import_public.pb.cc +@am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(protobuf_lazy_descriptor_test_CPPFLAGS) $(CPPFLAGS) $(protobuf_lazy_descriptor_test_CXXFLAGS) $(CXXFLAGS) -MT protobuf_lazy_descriptor_test-unittest_import_public.pb.o -MD -MP -MF $(DEPDIR)/protobuf_lazy_descriptor_test-unittest_import_public.pb.Tpo -c -o protobuf_lazy_descriptor_test-unittest_import_public.pb.o `test -f 'google/protobuf/unittest_import_public.pb.cc' || echo '$(srcdir)/'`google/protobuf/unittest_import_public.pb.cc +@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/protobuf_lazy_descriptor_test-unittest_import_public.pb.Tpo $(DEPDIR)/protobuf_lazy_descriptor_test-unittest_import_public.pb.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='google/protobuf/unittest_import_public.pb.cc' object='protobuf_lazy_descriptor_test-unittest_import_public.pb.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(protobuf_lazy_descriptor_test_CPPFLAGS) $(CPPFLAGS) $(protobuf_lazy_descriptor_test_CXXFLAGS) $(CXXFLAGS) -c -o protobuf_lazy_descriptor_test-unittest_import_public.pb.o `test -f 'google/protobuf/unittest_import_public.pb.cc' || echo '$(srcdir)/'`google/protobuf/unittest_import_public.pb.cc + +protobuf_lazy_descriptor_test-unittest_import_public.pb.obj: google/protobuf/unittest_import_public.pb.cc +@am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(protobuf_lazy_descriptor_test_CPPFLAGS) $(CPPFLAGS) $(protobuf_lazy_descriptor_test_CXXFLAGS) $(CXXFLAGS) -MT protobuf_lazy_descriptor_test-unittest_import_public.pb.obj -MD -MP -MF $(DEPDIR)/protobuf_lazy_descriptor_test-unittest_import_public.pb.Tpo -c -o protobuf_lazy_descriptor_test-unittest_import_public.pb.obj `if test -f 'google/protobuf/unittest_import_public.pb.cc'; then $(CYGPATH_W) 'google/protobuf/unittest_import_public.pb.cc'; else $(CYGPATH_W) '$(srcdir)/google/protobuf/unittest_import_public.pb.cc'; fi` +@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/protobuf_lazy_descriptor_test-unittest_import_public.pb.Tpo $(DEPDIR)/protobuf_lazy_descriptor_test-unittest_import_public.pb.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='google/protobuf/unittest_import_public.pb.cc' object='protobuf_lazy_descriptor_test-unittest_import_public.pb.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(protobuf_lazy_descriptor_test_CPPFLAGS) $(CPPFLAGS) $(protobuf_lazy_descriptor_test_CXXFLAGS) $(CXXFLAGS) -c -o protobuf_lazy_descriptor_test-unittest_import_public.pb.obj `if test -f 'google/protobuf/unittest_import_public.pb.cc'; then $(CYGPATH_W) 'google/protobuf/unittest_import_public.pb.cc'; else $(CYGPATH_W) '$(srcdir)/google/protobuf/unittest_import_public.pb.cc'; fi` + protobuf_lazy_descriptor_test-unittest_mset.pb.o: google/protobuf/unittest_mset.pb.cc @am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(protobuf_lazy_descriptor_test_CPPFLAGS) $(CPPFLAGS) $(protobuf_lazy_descriptor_test_CXXFLAGS) $(CXXFLAGS) -MT protobuf_lazy_descriptor_test-unittest_mset.pb.o -MD -MP -MF $(DEPDIR)/protobuf_lazy_descriptor_test-unittest_mset.pb.Tpo -c -o protobuf_lazy_descriptor_test-unittest_mset.pb.o `test -f 'google/protobuf/unittest_mset.pb.cc' || echo '$(srcdir)/'`google/protobuf/unittest_mset.pb.cc -@am__fastdepCXX_TRUE@ mv -f $(DEPDIR)/protobuf_lazy_descriptor_test-unittest_mset.pb.Tpo $(DEPDIR)/protobuf_lazy_descriptor_test-unittest_mset.pb.Po +@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/protobuf_lazy_descriptor_test-unittest_mset.pb.Tpo $(DEPDIR)/protobuf_lazy_descriptor_test-unittest_mset.pb.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='google/protobuf/unittest_mset.pb.cc' object='protobuf_lazy_descriptor_test-unittest_mset.pb.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(protobuf_lazy_descriptor_test_CPPFLAGS) $(CPPFLAGS) $(protobuf_lazy_descriptor_test_CXXFLAGS) $(CXXFLAGS) -c -o protobuf_lazy_descriptor_test-unittest_mset.pb.o `test -f 'google/protobuf/unittest_mset.pb.cc' || echo '$(srcdir)/'`google/protobuf/unittest_mset.pb.cc protobuf_lazy_descriptor_test-unittest_mset.pb.obj: google/protobuf/unittest_mset.pb.cc @am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(protobuf_lazy_descriptor_test_CPPFLAGS) $(CPPFLAGS) $(protobuf_lazy_descriptor_test_CXXFLAGS) $(CXXFLAGS) -MT protobuf_lazy_descriptor_test-unittest_mset.pb.obj -MD -MP -MF $(DEPDIR)/protobuf_lazy_descriptor_test-unittest_mset.pb.Tpo -c -o protobuf_lazy_descriptor_test-unittest_mset.pb.obj `if test -f 'google/protobuf/unittest_mset.pb.cc'; then $(CYGPATH_W) 'google/protobuf/unittest_mset.pb.cc'; else $(CYGPATH_W) '$(srcdir)/google/protobuf/unittest_mset.pb.cc'; fi` -@am__fastdepCXX_TRUE@ mv -f $(DEPDIR)/protobuf_lazy_descriptor_test-unittest_mset.pb.Tpo $(DEPDIR)/protobuf_lazy_descriptor_test-unittest_mset.pb.Po +@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/protobuf_lazy_descriptor_test-unittest_mset.pb.Tpo $(DEPDIR)/protobuf_lazy_descriptor_test-unittest_mset.pb.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='google/protobuf/unittest_mset.pb.cc' object='protobuf_lazy_descriptor_test-unittest_mset.pb.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(protobuf_lazy_descriptor_test_CPPFLAGS) $(CPPFLAGS) $(protobuf_lazy_descriptor_test_CXXFLAGS) $(CXXFLAGS) -c -o protobuf_lazy_descriptor_test-unittest_mset.pb.obj `if test -f 'google/protobuf/unittest_mset.pb.cc'; then $(CYGPATH_W) 'google/protobuf/unittest_mset.pb.cc'; else $(CYGPATH_W) '$(srcdir)/google/protobuf/unittest_mset.pb.cc'; fi` protobuf_lazy_descriptor_test-unittest_optimize_for.pb.o: google/protobuf/unittest_optimize_for.pb.cc @am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(protobuf_lazy_descriptor_test_CPPFLAGS) $(CPPFLAGS) $(protobuf_lazy_descriptor_test_CXXFLAGS) $(CXXFLAGS) -MT protobuf_lazy_descriptor_test-unittest_optimize_for.pb.o -MD -MP -MF $(DEPDIR)/protobuf_lazy_descriptor_test-unittest_optimize_for.pb.Tpo -c -o protobuf_lazy_descriptor_test-unittest_optimize_for.pb.o `test -f 'google/protobuf/unittest_optimize_for.pb.cc' || echo '$(srcdir)/'`google/protobuf/unittest_optimize_for.pb.cc -@am__fastdepCXX_TRUE@ mv -f $(DEPDIR)/protobuf_lazy_descriptor_test-unittest_optimize_for.pb.Tpo $(DEPDIR)/protobuf_lazy_descriptor_test-unittest_optimize_for.pb.Po +@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/protobuf_lazy_descriptor_test-unittest_optimize_for.pb.Tpo $(DEPDIR)/protobuf_lazy_descriptor_test-unittest_optimize_for.pb.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='google/protobuf/unittest_optimize_for.pb.cc' object='protobuf_lazy_descriptor_test-unittest_optimize_for.pb.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(protobuf_lazy_descriptor_test_CPPFLAGS) $(CPPFLAGS) $(protobuf_lazy_descriptor_test_CXXFLAGS) $(CXXFLAGS) -c -o protobuf_lazy_descriptor_test-unittest_optimize_for.pb.o `test -f 'google/protobuf/unittest_optimize_for.pb.cc' || echo '$(srcdir)/'`google/protobuf/unittest_optimize_for.pb.cc protobuf_lazy_descriptor_test-unittest_optimize_for.pb.obj: google/protobuf/unittest_optimize_for.pb.cc @am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(protobuf_lazy_descriptor_test_CPPFLAGS) $(CPPFLAGS) $(protobuf_lazy_descriptor_test_CXXFLAGS) $(CXXFLAGS) -MT protobuf_lazy_descriptor_test-unittest_optimize_for.pb.obj -MD -MP -MF $(DEPDIR)/protobuf_lazy_descriptor_test-unittest_optimize_for.pb.Tpo -c -o protobuf_lazy_descriptor_test-unittest_optimize_for.pb.obj `if test -f 'google/protobuf/unittest_optimize_for.pb.cc'; then $(CYGPATH_W) 'google/protobuf/unittest_optimize_for.pb.cc'; else $(CYGPATH_W) '$(srcdir)/google/protobuf/unittest_optimize_for.pb.cc'; fi` -@am__fastdepCXX_TRUE@ mv -f $(DEPDIR)/protobuf_lazy_descriptor_test-unittest_optimize_for.pb.Tpo $(DEPDIR)/protobuf_lazy_descriptor_test-unittest_optimize_for.pb.Po +@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/protobuf_lazy_descriptor_test-unittest_optimize_for.pb.Tpo $(DEPDIR)/protobuf_lazy_descriptor_test-unittest_optimize_for.pb.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='google/protobuf/unittest_optimize_for.pb.cc' object='protobuf_lazy_descriptor_test-unittest_optimize_for.pb.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(protobuf_lazy_descriptor_test_CPPFLAGS) $(CPPFLAGS) $(protobuf_lazy_descriptor_test_CXXFLAGS) $(CXXFLAGS) -c -o protobuf_lazy_descriptor_test-unittest_optimize_for.pb.obj `if test -f 'google/protobuf/unittest_optimize_for.pb.cc'; then $(CYGPATH_W) 'google/protobuf/unittest_optimize_for.pb.cc'; else $(CYGPATH_W) '$(srcdir)/google/protobuf/unittest_optimize_for.pb.cc'; fi` protobuf_lazy_descriptor_test-unittest_embed_optimize_for.pb.o: google/protobuf/unittest_embed_optimize_for.pb.cc @am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(protobuf_lazy_descriptor_test_CPPFLAGS) $(CPPFLAGS) $(protobuf_lazy_descriptor_test_CXXFLAGS) $(CXXFLAGS) -MT protobuf_lazy_descriptor_test-unittest_embed_optimize_for.pb.o -MD -MP -MF $(DEPDIR)/protobuf_lazy_descriptor_test-unittest_embed_optimize_for.pb.Tpo -c -o protobuf_lazy_descriptor_test-unittest_embed_optimize_for.pb.o `test -f 'google/protobuf/unittest_embed_optimize_for.pb.cc' || echo '$(srcdir)/'`google/protobuf/unittest_embed_optimize_for.pb.cc -@am__fastdepCXX_TRUE@ mv -f $(DEPDIR)/protobuf_lazy_descriptor_test-unittest_embed_optimize_for.pb.Tpo $(DEPDIR)/protobuf_lazy_descriptor_test-unittest_embed_optimize_for.pb.Po +@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/protobuf_lazy_descriptor_test-unittest_embed_optimize_for.pb.Tpo $(DEPDIR)/protobuf_lazy_descriptor_test-unittest_embed_optimize_for.pb.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='google/protobuf/unittest_embed_optimize_for.pb.cc' object='protobuf_lazy_descriptor_test-unittest_embed_optimize_for.pb.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(protobuf_lazy_descriptor_test_CPPFLAGS) $(CPPFLAGS) $(protobuf_lazy_descriptor_test_CXXFLAGS) $(CXXFLAGS) -c -o protobuf_lazy_descriptor_test-unittest_embed_optimize_for.pb.o `test -f 'google/protobuf/unittest_embed_optimize_for.pb.cc' || echo '$(srcdir)/'`google/protobuf/unittest_embed_optimize_for.pb.cc protobuf_lazy_descriptor_test-unittest_embed_optimize_for.pb.obj: google/protobuf/unittest_embed_optimize_for.pb.cc @am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(protobuf_lazy_descriptor_test_CPPFLAGS) $(CPPFLAGS) $(protobuf_lazy_descriptor_test_CXXFLAGS) $(CXXFLAGS) -MT protobuf_lazy_descriptor_test-unittest_embed_optimize_for.pb.obj -MD -MP -MF $(DEPDIR)/protobuf_lazy_descriptor_test-unittest_embed_optimize_for.pb.Tpo -c -o protobuf_lazy_descriptor_test-unittest_embed_optimize_for.pb.obj `if test -f 'google/protobuf/unittest_embed_optimize_for.pb.cc'; then $(CYGPATH_W) 'google/protobuf/unittest_embed_optimize_for.pb.cc'; else $(CYGPATH_W) '$(srcdir)/google/protobuf/unittest_embed_optimize_for.pb.cc'; fi` -@am__fastdepCXX_TRUE@ mv -f $(DEPDIR)/protobuf_lazy_descriptor_test-unittest_embed_optimize_for.pb.Tpo $(DEPDIR)/protobuf_lazy_descriptor_test-unittest_embed_optimize_for.pb.Po +@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/protobuf_lazy_descriptor_test-unittest_embed_optimize_for.pb.Tpo $(DEPDIR)/protobuf_lazy_descriptor_test-unittest_embed_optimize_for.pb.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='google/protobuf/unittest_embed_optimize_for.pb.cc' object='protobuf_lazy_descriptor_test-unittest_embed_optimize_for.pb.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(protobuf_lazy_descriptor_test_CPPFLAGS) $(CPPFLAGS) $(protobuf_lazy_descriptor_test_CXXFLAGS) $(CXXFLAGS) -c -o protobuf_lazy_descriptor_test-unittest_embed_optimize_for.pb.obj `if test -f 'google/protobuf/unittest_embed_optimize_for.pb.cc'; then $(CYGPATH_W) 'google/protobuf/unittest_embed_optimize_for.pb.cc'; else $(CYGPATH_W) '$(srcdir)/google/protobuf/unittest_embed_optimize_for.pb.cc'; fi` protobuf_lazy_descriptor_test-unittest_custom_options.pb.o: google/protobuf/unittest_custom_options.pb.cc @am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(protobuf_lazy_descriptor_test_CPPFLAGS) $(CPPFLAGS) $(protobuf_lazy_descriptor_test_CXXFLAGS) $(CXXFLAGS) -MT protobuf_lazy_descriptor_test-unittest_custom_options.pb.o -MD -MP -MF $(DEPDIR)/protobuf_lazy_descriptor_test-unittest_custom_options.pb.Tpo -c -o protobuf_lazy_descriptor_test-unittest_custom_options.pb.o `test -f 'google/protobuf/unittest_custom_options.pb.cc' || echo '$(srcdir)/'`google/protobuf/unittest_custom_options.pb.cc -@am__fastdepCXX_TRUE@ mv -f $(DEPDIR)/protobuf_lazy_descriptor_test-unittest_custom_options.pb.Tpo $(DEPDIR)/protobuf_lazy_descriptor_test-unittest_custom_options.pb.Po +@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/protobuf_lazy_descriptor_test-unittest_custom_options.pb.Tpo $(DEPDIR)/protobuf_lazy_descriptor_test-unittest_custom_options.pb.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='google/protobuf/unittest_custom_options.pb.cc' object='protobuf_lazy_descriptor_test-unittest_custom_options.pb.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(protobuf_lazy_descriptor_test_CPPFLAGS) $(CPPFLAGS) $(protobuf_lazy_descriptor_test_CXXFLAGS) $(CXXFLAGS) -c -o protobuf_lazy_descriptor_test-unittest_custom_options.pb.o `test -f 'google/protobuf/unittest_custom_options.pb.cc' || echo '$(srcdir)/'`google/protobuf/unittest_custom_options.pb.cc protobuf_lazy_descriptor_test-unittest_custom_options.pb.obj: google/protobuf/unittest_custom_options.pb.cc @am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(protobuf_lazy_descriptor_test_CPPFLAGS) $(CPPFLAGS) $(protobuf_lazy_descriptor_test_CXXFLAGS) $(CXXFLAGS) -MT protobuf_lazy_descriptor_test-unittest_custom_options.pb.obj -MD -MP -MF $(DEPDIR)/protobuf_lazy_descriptor_test-unittest_custom_options.pb.Tpo -c -o protobuf_lazy_descriptor_test-unittest_custom_options.pb.obj `if test -f 'google/protobuf/unittest_custom_options.pb.cc'; then $(CYGPATH_W) 'google/protobuf/unittest_custom_options.pb.cc'; else $(CYGPATH_W) '$(srcdir)/google/protobuf/unittest_custom_options.pb.cc'; fi` -@am__fastdepCXX_TRUE@ mv -f $(DEPDIR)/protobuf_lazy_descriptor_test-unittest_custom_options.pb.Tpo $(DEPDIR)/protobuf_lazy_descriptor_test-unittest_custom_options.pb.Po +@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/protobuf_lazy_descriptor_test-unittest_custom_options.pb.Tpo $(DEPDIR)/protobuf_lazy_descriptor_test-unittest_custom_options.pb.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='google/protobuf/unittest_custom_options.pb.cc' object='protobuf_lazy_descriptor_test-unittest_custom_options.pb.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(protobuf_lazy_descriptor_test_CPPFLAGS) $(CPPFLAGS) $(protobuf_lazy_descriptor_test_CXXFLAGS) $(CXXFLAGS) -c -o protobuf_lazy_descriptor_test-unittest_custom_options.pb.obj `if test -f 'google/protobuf/unittest_custom_options.pb.cc'; then $(CYGPATH_W) 'google/protobuf/unittest_custom_options.pb.cc'; else $(CYGPATH_W) '$(srcdir)/google/protobuf/unittest_custom_options.pb.cc'; fi` protobuf_lazy_descriptor_test-unittest_lite_imports_nonlite.pb.o: google/protobuf/unittest_lite_imports_nonlite.pb.cc @am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(protobuf_lazy_descriptor_test_CPPFLAGS) $(CPPFLAGS) $(protobuf_lazy_descriptor_test_CXXFLAGS) $(CXXFLAGS) -MT protobuf_lazy_descriptor_test-unittest_lite_imports_nonlite.pb.o -MD -MP -MF $(DEPDIR)/protobuf_lazy_descriptor_test-unittest_lite_imports_nonlite.pb.Tpo -c -o protobuf_lazy_descriptor_test-unittest_lite_imports_nonlite.pb.o `test -f 'google/protobuf/unittest_lite_imports_nonlite.pb.cc' || echo '$(srcdir)/'`google/protobuf/unittest_lite_imports_nonlite.pb.cc -@am__fastdepCXX_TRUE@ mv -f $(DEPDIR)/protobuf_lazy_descriptor_test-unittest_lite_imports_nonlite.pb.Tpo $(DEPDIR)/protobuf_lazy_descriptor_test-unittest_lite_imports_nonlite.pb.Po +@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/protobuf_lazy_descriptor_test-unittest_lite_imports_nonlite.pb.Tpo $(DEPDIR)/protobuf_lazy_descriptor_test-unittest_lite_imports_nonlite.pb.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='google/protobuf/unittest_lite_imports_nonlite.pb.cc' object='protobuf_lazy_descriptor_test-unittest_lite_imports_nonlite.pb.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(protobuf_lazy_descriptor_test_CPPFLAGS) $(CPPFLAGS) $(protobuf_lazy_descriptor_test_CXXFLAGS) $(CXXFLAGS) -c -o protobuf_lazy_descriptor_test-unittest_lite_imports_nonlite.pb.o `test -f 'google/protobuf/unittest_lite_imports_nonlite.pb.cc' || echo '$(srcdir)/'`google/protobuf/unittest_lite_imports_nonlite.pb.cc protobuf_lazy_descriptor_test-unittest_lite_imports_nonlite.pb.obj: google/protobuf/unittest_lite_imports_nonlite.pb.cc @am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(protobuf_lazy_descriptor_test_CPPFLAGS) $(CPPFLAGS) $(protobuf_lazy_descriptor_test_CXXFLAGS) $(CXXFLAGS) -MT protobuf_lazy_descriptor_test-unittest_lite_imports_nonlite.pb.obj -MD -MP -MF $(DEPDIR)/protobuf_lazy_descriptor_test-unittest_lite_imports_nonlite.pb.Tpo -c -o protobuf_lazy_descriptor_test-unittest_lite_imports_nonlite.pb.obj `if test -f 'google/protobuf/unittest_lite_imports_nonlite.pb.cc'; then $(CYGPATH_W) 'google/protobuf/unittest_lite_imports_nonlite.pb.cc'; else $(CYGPATH_W) '$(srcdir)/google/protobuf/unittest_lite_imports_nonlite.pb.cc'; fi` -@am__fastdepCXX_TRUE@ mv -f $(DEPDIR)/protobuf_lazy_descriptor_test-unittest_lite_imports_nonlite.pb.Tpo $(DEPDIR)/protobuf_lazy_descriptor_test-unittest_lite_imports_nonlite.pb.Po +@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/protobuf_lazy_descriptor_test-unittest_lite_imports_nonlite.pb.Tpo $(DEPDIR)/protobuf_lazy_descriptor_test-unittest_lite_imports_nonlite.pb.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='google/protobuf/unittest_lite_imports_nonlite.pb.cc' object='protobuf_lazy_descriptor_test-unittest_lite_imports_nonlite.pb.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(protobuf_lazy_descriptor_test_CPPFLAGS) $(CPPFLAGS) $(protobuf_lazy_descriptor_test_CXXFLAGS) $(CXXFLAGS) -c -o protobuf_lazy_descriptor_test-unittest_lite_imports_nonlite.pb.obj `if test -f 'google/protobuf/unittest_lite_imports_nonlite.pb.cc'; then $(CYGPATH_W) 'google/protobuf/unittest_lite_imports_nonlite.pb.cc'; else $(CYGPATH_W) '$(srcdir)/google/protobuf/unittest_lite_imports_nonlite.pb.cc'; fi` protobuf_lazy_descriptor_test-unittest_no_generic_services.pb.o: google/protobuf/unittest_no_generic_services.pb.cc @am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(protobuf_lazy_descriptor_test_CPPFLAGS) $(CPPFLAGS) $(protobuf_lazy_descriptor_test_CXXFLAGS) $(CXXFLAGS) -MT protobuf_lazy_descriptor_test-unittest_no_generic_services.pb.o -MD -MP -MF $(DEPDIR)/protobuf_lazy_descriptor_test-unittest_no_generic_services.pb.Tpo -c -o protobuf_lazy_descriptor_test-unittest_no_generic_services.pb.o `test -f 'google/protobuf/unittest_no_generic_services.pb.cc' || echo '$(srcdir)/'`google/protobuf/unittest_no_generic_services.pb.cc -@am__fastdepCXX_TRUE@ mv -f $(DEPDIR)/protobuf_lazy_descriptor_test-unittest_no_generic_services.pb.Tpo $(DEPDIR)/protobuf_lazy_descriptor_test-unittest_no_generic_services.pb.Po +@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/protobuf_lazy_descriptor_test-unittest_no_generic_services.pb.Tpo $(DEPDIR)/protobuf_lazy_descriptor_test-unittest_no_generic_services.pb.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='google/protobuf/unittest_no_generic_services.pb.cc' object='protobuf_lazy_descriptor_test-unittest_no_generic_services.pb.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(protobuf_lazy_descriptor_test_CPPFLAGS) $(CPPFLAGS) $(protobuf_lazy_descriptor_test_CXXFLAGS) $(CXXFLAGS) -c -o protobuf_lazy_descriptor_test-unittest_no_generic_services.pb.o `test -f 'google/protobuf/unittest_no_generic_services.pb.cc' || echo '$(srcdir)/'`google/protobuf/unittest_no_generic_services.pb.cc protobuf_lazy_descriptor_test-unittest_no_generic_services.pb.obj: google/protobuf/unittest_no_generic_services.pb.cc @am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(protobuf_lazy_descriptor_test_CPPFLAGS) $(CPPFLAGS) $(protobuf_lazy_descriptor_test_CXXFLAGS) $(CXXFLAGS) -MT protobuf_lazy_descriptor_test-unittest_no_generic_services.pb.obj -MD -MP -MF $(DEPDIR)/protobuf_lazy_descriptor_test-unittest_no_generic_services.pb.Tpo -c -o protobuf_lazy_descriptor_test-unittest_no_generic_services.pb.obj `if test -f 'google/protobuf/unittest_no_generic_services.pb.cc'; then $(CYGPATH_W) 'google/protobuf/unittest_no_generic_services.pb.cc'; else $(CYGPATH_W) '$(srcdir)/google/protobuf/unittest_no_generic_services.pb.cc'; fi` -@am__fastdepCXX_TRUE@ mv -f $(DEPDIR)/protobuf_lazy_descriptor_test-unittest_no_generic_services.pb.Tpo $(DEPDIR)/protobuf_lazy_descriptor_test-unittest_no_generic_services.pb.Po +@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/protobuf_lazy_descriptor_test-unittest_no_generic_services.pb.Tpo $(DEPDIR)/protobuf_lazy_descriptor_test-unittest_no_generic_services.pb.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='google/protobuf/unittest_no_generic_services.pb.cc' object='protobuf_lazy_descriptor_test-unittest_no_generic_services.pb.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(protobuf_lazy_descriptor_test_CPPFLAGS) $(CPPFLAGS) $(protobuf_lazy_descriptor_test_CXXFLAGS) $(CXXFLAGS) -c -o protobuf_lazy_descriptor_test-unittest_no_generic_services.pb.obj `if test -f 'google/protobuf/unittest_no_generic_services.pb.cc'; then $(CYGPATH_W) 'google/protobuf/unittest_no_generic_services.pb.cc'; else $(CYGPATH_W) '$(srcdir)/google/protobuf/unittest_no_generic_services.pb.cc'; fi` protobuf_lazy_descriptor_test-cpp_test_bad_identifiers.pb.o: google/protobuf/compiler/cpp/cpp_test_bad_identifiers.pb.cc @am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(protobuf_lazy_descriptor_test_CPPFLAGS) $(CPPFLAGS) $(protobuf_lazy_descriptor_test_CXXFLAGS) $(CXXFLAGS) -MT protobuf_lazy_descriptor_test-cpp_test_bad_identifiers.pb.o -MD -MP -MF $(DEPDIR)/protobuf_lazy_descriptor_test-cpp_test_bad_identifiers.pb.Tpo -c -o protobuf_lazy_descriptor_test-cpp_test_bad_identifiers.pb.o `test -f 'google/protobuf/compiler/cpp/cpp_test_bad_identifiers.pb.cc' || echo '$(srcdir)/'`google/protobuf/compiler/cpp/cpp_test_bad_identifiers.pb.cc -@am__fastdepCXX_TRUE@ mv -f $(DEPDIR)/protobuf_lazy_descriptor_test-cpp_test_bad_identifiers.pb.Tpo $(DEPDIR)/protobuf_lazy_descriptor_test-cpp_test_bad_identifiers.pb.Po +@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/protobuf_lazy_descriptor_test-cpp_test_bad_identifiers.pb.Tpo $(DEPDIR)/protobuf_lazy_descriptor_test-cpp_test_bad_identifiers.pb.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='google/protobuf/compiler/cpp/cpp_test_bad_identifiers.pb.cc' object='protobuf_lazy_descriptor_test-cpp_test_bad_identifiers.pb.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(protobuf_lazy_descriptor_test_CPPFLAGS) $(CPPFLAGS) $(protobuf_lazy_descriptor_test_CXXFLAGS) $(CXXFLAGS) -c -o protobuf_lazy_descriptor_test-cpp_test_bad_identifiers.pb.o `test -f 'google/protobuf/compiler/cpp/cpp_test_bad_identifiers.pb.cc' || echo '$(srcdir)/'`google/protobuf/compiler/cpp/cpp_test_bad_identifiers.pb.cc protobuf_lazy_descriptor_test-cpp_test_bad_identifiers.pb.obj: google/protobuf/compiler/cpp/cpp_test_bad_identifiers.pb.cc @am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(protobuf_lazy_descriptor_test_CPPFLAGS) $(CPPFLAGS) $(protobuf_lazy_descriptor_test_CXXFLAGS) $(CXXFLAGS) -MT protobuf_lazy_descriptor_test-cpp_test_bad_identifiers.pb.obj -MD -MP -MF $(DEPDIR)/protobuf_lazy_descriptor_test-cpp_test_bad_identifiers.pb.Tpo -c -o protobuf_lazy_descriptor_test-cpp_test_bad_identifiers.pb.obj `if test -f 'google/protobuf/compiler/cpp/cpp_test_bad_identifiers.pb.cc'; then $(CYGPATH_W) 'google/protobuf/compiler/cpp/cpp_test_bad_identifiers.pb.cc'; else $(CYGPATH_W) '$(srcdir)/google/protobuf/compiler/cpp/cpp_test_bad_identifiers.pb.cc'; fi` -@am__fastdepCXX_TRUE@ mv -f $(DEPDIR)/protobuf_lazy_descriptor_test-cpp_test_bad_identifiers.pb.Tpo $(DEPDIR)/protobuf_lazy_descriptor_test-cpp_test_bad_identifiers.pb.Po +@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/protobuf_lazy_descriptor_test-cpp_test_bad_identifiers.pb.Tpo $(DEPDIR)/protobuf_lazy_descriptor_test-cpp_test_bad_identifiers.pb.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='google/protobuf/compiler/cpp/cpp_test_bad_identifiers.pb.cc' object='protobuf_lazy_descriptor_test-cpp_test_bad_identifiers.pb.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(protobuf_lazy_descriptor_test_CPPFLAGS) $(CPPFLAGS) $(protobuf_lazy_descriptor_test_CXXFLAGS) $(CXXFLAGS) -c -o protobuf_lazy_descriptor_test-cpp_test_bad_identifiers.pb.obj `if test -f 'google/protobuf/compiler/cpp/cpp_test_bad_identifiers.pb.cc'; then $(CYGPATH_W) 'google/protobuf/compiler/cpp/cpp_test_bad_identifiers.pb.cc'; else $(CYGPATH_W) '$(srcdir)/google/protobuf/compiler/cpp/cpp_test_bad_identifiers.pb.cc'; fi` protobuf_lite_test-lite_unittest.o: google/protobuf/lite_unittest.cc @am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(protobuf_lite_test_CXXFLAGS) $(CXXFLAGS) -MT protobuf_lite_test-lite_unittest.o -MD -MP -MF $(DEPDIR)/protobuf_lite_test-lite_unittest.Tpo -c -o protobuf_lite_test-lite_unittest.o `test -f 'google/protobuf/lite_unittest.cc' || echo '$(srcdir)/'`google/protobuf/lite_unittest.cc -@am__fastdepCXX_TRUE@ mv -f $(DEPDIR)/protobuf_lite_test-lite_unittest.Tpo $(DEPDIR)/protobuf_lite_test-lite_unittest.Po +@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/protobuf_lite_test-lite_unittest.Tpo $(DEPDIR)/protobuf_lite_test-lite_unittest.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='google/protobuf/lite_unittest.cc' object='protobuf_lite_test-lite_unittest.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(protobuf_lite_test_CXXFLAGS) $(CXXFLAGS) -c -o protobuf_lite_test-lite_unittest.o `test -f 'google/protobuf/lite_unittest.cc' || echo '$(srcdir)/'`google/protobuf/lite_unittest.cc protobuf_lite_test-lite_unittest.obj: google/protobuf/lite_unittest.cc @am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(protobuf_lite_test_CXXFLAGS) $(CXXFLAGS) -MT protobuf_lite_test-lite_unittest.obj -MD -MP -MF $(DEPDIR)/protobuf_lite_test-lite_unittest.Tpo -c -o protobuf_lite_test-lite_unittest.obj `if test -f 'google/protobuf/lite_unittest.cc'; then $(CYGPATH_W) 'google/protobuf/lite_unittest.cc'; else $(CYGPATH_W) '$(srcdir)/google/protobuf/lite_unittest.cc'; fi` -@am__fastdepCXX_TRUE@ mv -f $(DEPDIR)/protobuf_lite_test-lite_unittest.Tpo $(DEPDIR)/protobuf_lite_test-lite_unittest.Po +@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/protobuf_lite_test-lite_unittest.Tpo $(DEPDIR)/protobuf_lite_test-lite_unittest.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='google/protobuf/lite_unittest.cc' object='protobuf_lite_test-lite_unittest.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(protobuf_lite_test_CXXFLAGS) $(CXXFLAGS) -c -o protobuf_lite_test-lite_unittest.obj `if test -f 'google/protobuf/lite_unittest.cc'; then $(CYGPATH_W) 'google/protobuf/lite_unittest.cc'; else $(CYGPATH_W) '$(srcdir)/google/protobuf/lite_unittest.cc'; fi` protobuf_lite_test-test_util_lite.o: google/protobuf/test_util_lite.cc @am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(protobuf_lite_test_CXXFLAGS) $(CXXFLAGS) -MT protobuf_lite_test-test_util_lite.o -MD -MP -MF $(DEPDIR)/protobuf_lite_test-test_util_lite.Tpo -c -o protobuf_lite_test-test_util_lite.o `test -f 'google/protobuf/test_util_lite.cc' || echo '$(srcdir)/'`google/protobuf/test_util_lite.cc -@am__fastdepCXX_TRUE@ mv -f $(DEPDIR)/protobuf_lite_test-test_util_lite.Tpo $(DEPDIR)/protobuf_lite_test-test_util_lite.Po +@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/protobuf_lite_test-test_util_lite.Tpo $(DEPDIR)/protobuf_lite_test-test_util_lite.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='google/protobuf/test_util_lite.cc' object='protobuf_lite_test-test_util_lite.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(protobuf_lite_test_CXXFLAGS) $(CXXFLAGS) -c -o protobuf_lite_test-test_util_lite.o `test -f 'google/protobuf/test_util_lite.cc' || echo '$(srcdir)/'`google/protobuf/test_util_lite.cc protobuf_lite_test-test_util_lite.obj: google/protobuf/test_util_lite.cc @am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(protobuf_lite_test_CXXFLAGS) $(CXXFLAGS) -MT protobuf_lite_test-test_util_lite.obj -MD -MP -MF $(DEPDIR)/protobuf_lite_test-test_util_lite.Tpo -c -o protobuf_lite_test-test_util_lite.obj `if test -f 'google/protobuf/test_util_lite.cc'; then $(CYGPATH_W) 'google/protobuf/test_util_lite.cc'; else $(CYGPATH_W) '$(srcdir)/google/protobuf/test_util_lite.cc'; fi` -@am__fastdepCXX_TRUE@ mv -f $(DEPDIR)/protobuf_lite_test-test_util_lite.Tpo $(DEPDIR)/protobuf_lite_test-test_util_lite.Po +@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/protobuf_lite_test-test_util_lite.Tpo $(DEPDIR)/protobuf_lite_test-test_util_lite.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='google/protobuf/test_util_lite.cc' object='protobuf_lite_test-test_util_lite.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(protobuf_lite_test_CXXFLAGS) $(CXXFLAGS) -c -o protobuf_lite_test-test_util_lite.obj `if test -f 'google/protobuf/test_util_lite.cc'; then $(CYGPATH_W) 'google/protobuf/test_util_lite.cc'; else $(CYGPATH_W) '$(srcdir)/google/protobuf/test_util_lite.cc'; fi` protobuf_lite_test-unittest_lite.pb.o: google/protobuf/unittest_lite.pb.cc @am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(protobuf_lite_test_CXXFLAGS) $(CXXFLAGS) -MT protobuf_lite_test-unittest_lite.pb.o -MD -MP -MF $(DEPDIR)/protobuf_lite_test-unittest_lite.pb.Tpo -c -o protobuf_lite_test-unittest_lite.pb.o `test -f 'google/protobuf/unittest_lite.pb.cc' || echo '$(srcdir)/'`google/protobuf/unittest_lite.pb.cc -@am__fastdepCXX_TRUE@ mv -f $(DEPDIR)/protobuf_lite_test-unittest_lite.pb.Tpo $(DEPDIR)/protobuf_lite_test-unittest_lite.pb.Po +@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/protobuf_lite_test-unittest_lite.pb.Tpo $(DEPDIR)/protobuf_lite_test-unittest_lite.pb.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='google/protobuf/unittest_lite.pb.cc' object='protobuf_lite_test-unittest_lite.pb.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(protobuf_lite_test_CXXFLAGS) $(CXXFLAGS) -c -o protobuf_lite_test-unittest_lite.pb.o `test -f 'google/protobuf/unittest_lite.pb.cc' || echo '$(srcdir)/'`google/protobuf/unittest_lite.pb.cc protobuf_lite_test-unittest_lite.pb.obj: google/protobuf/unittest_lite.pb.cc @am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(protobuf_lite_test_CXXFLAGS) $(CXXFLAGS) -MT protobuf_lite_test-unittest_lite.pb.obj -MD -MP -MF $(DEPDIR)/protobuf_lite_test-unittest_lite.pb.Tpo -c -o protobuf_lite_test-unittest_lite.pb.obj `if test -f 'google/protobuf/unittest_lite.pb.cc'; then $(CYGPATH_W) 'google/protobuf/unittest_lite.pb.cc'; else $(CYGPATH_W) '$(srcdir)/google/protobuf/unittest_lite.pb.cc'; fi` -@am__fastdepCXX_TRUE@ mv -f $(DEPDIR)/protobuf_lite_test-unittest_lite.pb.Tpo $(DEPDIR)/protobuf_lite_test-unittest_lite.pb.Po +@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/protobuf_lite_test-unittest_lite.pb.Tpo $(DEPDIR)/protobuf_lite_test-unittest_lite.pb.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='google/protobuf/unittest_lite.pb.cc' object='protobuf_lite_test-unittest_lite.pb.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(protobuf_lite_test_CXXFLAGS) $(CXXFLAGS) -c -o protobuf_lite_test-unittest_lite.pb.obj `if test -f 'google/protobuf/unittest_lite.pb.cc'; then $(CYGPATH_W) 'google/protobuf/unittest_lite.pb.cc'; else $(CYGPATH_W) '$(srcdir)/google/protobuf/unittest_lite.pb.cc'; fi` protobuf_lite_test-unittest_import_lite.pb.o: google/protobuf/unittest_import_lite.pb.cc @am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(protobuf_lite_test_CXXFLAGS) $(CXXFLAGS) -MT protobuf_lite_test-unittest_import_lite.pb.o -MD -MP -MF $(DEPDIR)/protobuf_lite_test-unittest_import_lite.pb.Tpo -c -o protobuf_lite_test-unittest_import_lite.pb.o `test -f 'google/protobuf/unittest_import_lite.pb.cc' || echo '$(srcdir)/'`google/protobuf/unittest_import_lite.pb.cc -@am__fastdepCXX_TRUE@ mv -f $(DEPDIR)/protobuf_lite_test-unittest_import_lite.pb.Tpo $(DEPDIR)/protobuf_lite_test-unittest_import_lite.pb.Po +@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/protobuf_lite_test-unittest_import_lite.pb.Tpo $(DEPDIR)/protobuf_lite_test-unittest_import_lite.pb.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='google/protobuf/unittest_import_lite.pb.cc' object='protobuf_lite_test-unittest_import_lite.pb.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(protobuf_lite_test_CXXFLAGS) $(CXXFLAGS) -c -o protobuf_lite_test-unittest_import_lite.pb.o `test -f 'google/protobuf/unittest_import_lite.pb.cc' || echo '$(srcdir)/'`google/protobuf/unittest_import_lite.pb.cc protobuf_lite_test-unittest_import_lite.pb.obj: google/protobuf/unittest_import_lite.pb.cc @am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(protobuf_lite_test_CXXFLAGS) $(CXXFLAGS) -MT protobuf_lite_test-unittest_import_lite.pb.obj -MD -MP -MF $(DEPDIR)/protobuf_lite_test-unittest_import_lite.pb.Tpo -c -o protobuf_lite_test-unittest_import_lite.pb.obj `if test -f 'google/protobuf/unittest_import_lite.pb.cc'; then $(CYGPATH_W) 'google/protobuf/unittest_import_lite.pb.cc'; else $(CYGPATH_W) '$(srcdir)/google/protobuf/unittest_import_lite.pb.cc'; fi` -@am__fastdepCXX_TRUE@ mv -f $(DEPDIR)/protobuf_lite_test-unittest_import_lite.pb.Tpo $(DEPDIR)/protobuf_lite_test-unittest_import_lite.pb.Po +@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/protobuf_lite_test-unittest_import_lite.pb.Tpo $(DEPDIR)/protobuf_lite_test-unittest_import_lite.pb.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='google/protobuf/unittest_import_lite.pb.cc' object='protobuf_lite_test-unittest_import_lite.pb.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(protobuf_lite_test_CXXFLAGS) $(CXXFLAGS) -c -o protobuf_lite_test-unittest_import_lite.pb.obj `if test -f 'google/protobuf/unittest_import_lite.pb.cc'; then $(CYGPATH_W) 'google/protobuf/unittest_import_lite.pb.cc'; else $(CYGPATH_W) '$(srcdir)/google/protobuf/unittest_import_lite.pb.cc'; fi` +protobuf_lite_test-unittest_import_public_lite.pb.o: google/protobuf/unittest_import_public_lite.pb.cc +@am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(protobuf_lite_test_CXXFLAGS) $(CXXFLAGS) -MT protobuf_lite_test-unittest_import_public_lite.pb.o -MD -MP -MF $(DEPDIR)/protobuf_lite_test-unittest_import_public_lite.pb.Tpo -c -o protobuf_lite_test-unittest_import_public_lite.pb.o `test -f 'google/protobuf/unittest_import_public_lite.pb.cc' || echo '$(srcdir)/'`google/protobuf/unittest_import_public_lite.pb.cc +@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/protobuf_lite_test-unittest_import_public_lite.pb.Tpo $(DEPDIR)/protobuf_lite_test-unittest_import_public_lite.pb.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='google/protobuf/unittest_import_public_lite.pb.cc' object='protobuf_lite_test-unittest_import_public_lite.pb.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(protobuf_lite_test_CXXFLAGS) $(CXXFLAGS) -c -o protobuf_lite_test-unittest_import_public_lite.pb.o `test -f 'google/protobuf/unittest_import_public_lite.pb.cc' || echo '$(srcdir)/'`google/protobuf/unittest_import_public_lite.pb.cc + +protobuf_lite_test-unittest_import_public_lite.pb.obj: google/protobuf/unittest_import_public_lite.pb.cc +@am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(protobuf_lite_test_CXXFLAGS) $(CXXFLAGS) -MT protobuf_lite_test-unittest_import_public_lite.pb.obj -MD -MP -MF $(DEPDIR)/protobuf_lite_test-unittest_import_public_lite.pb.Tpo -c -o protobuf_lite_test-unittest_import_public_lite.pb.obj `if test -f 'google/protobuf/unittest_import_public_lite.pb.cc'; then $(CYGPATH_W) 'google/protobuf/unittest_import_public_lite.pb.cc'; else $(CYGPATH_W) '$(srcdir)/google/protobuf/unittest_import_public_lite.pb.cc'; fi` +@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/protobuf_lite_test-unittest_import_public_lite.pb.Tpo $(DEPDIR)/protobuf_lite_test-unittest_import_public_lite.pb.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='google/protobuf/unittest_import_public_lite.pb.cc' object='protobuf_lite_test-unittest_import_public_lite.pb.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(protobuf_lite_test_CXXFLAGS) $(CXXFLAGS) -c -o protobuf_lite_test-unittest_import_public_lite.pb.obj `if test -f 'google/protobuf/unittest_import_public_lite.pb.cc'; then $(CYGPATH_W) 'google/protobuf/unittest_import_public_lite.pb.cc'; else $(CYGPATH_W) '$(srcdir)/google/protobuf/unittest_import_public_lite.pb.cc'; fi` + protobuf_test-common_unittest.o: google/protobuf/stubs/common_unittest.cc @am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(protobuf_test_CPPFLAGS) $(CPPFLAGS) $(protobuf_test_CXXFLAGS) $(CXXFLAGS) -MT protobuf_test-common_unittest.o -MD -MP -MF $(DEPDIR)/protobuf_test-common_unittest.Tpo -c -o protobuf_test-common_unittest.o `test -f 'google/protobuf/stubs/common_unittest.cc' || echo '$(srcdir)/'`google/protobuf/stubs/common_unittest.cc -@am__fastdepCXX_TRUE@ mv -f $(DEPDIR)/protobuf_test-common_unittest.Tpo $(DEPDIR)/protobuf_test-common_unittest.Po +@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/protobuf_test-common_unittest.Tpo $(DEPDIR)/protobuf_test-common_unittest.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='google/protobuf/stubs/common_unittest.cc' object='protobuf_test-common_unittest.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(protobuf_test_CPPFLAGS) $(CPPFLAGS) $(protobuf_test_CXXFLAGS) $(CXXFLAGS) -c -o protobuf_test-common_unittest.o `test -f 'google/protobuf/stubs/common_unittest.cc' || echo '$(srcdir)/'`google/protobuf/stubs/common_unittest.cc protobuf_test-common_unittest.obj: google/protobuf/stubs/common_unittest.cc @am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(protobuf_test_CPPFLAGS) $(CPPFLAGS) $(protobuf_test_CXXFLAGS) $(CXXFLAGS) -MT protobuf_test-common_unittest.obj -MD -MP -MF $(DEPDIR)/protobuf_test-common_unittest.Tpo -c -o protobuf_test-common_unittest.obj `if test -f 'google/protobuf/stubs/common_unittest.cc'; then $(CYGPATH_W) 'google/protobuf/stubs/common_unittest.cc'; else $(CYGPATH_W) '$(srcdir)/google/protobuf/stubs/common_unittest.cc'; fi` -@am__fastdepCXX_TRUE@ mv -f $(DEPDIR)/protobuf_test-common_unittest.Tpo $(DEPDIR)/protobuf_test-common_unittest.Po +@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/protobuf_test-common_unittest.Tpo $(DEPDIR)/protobuf_test-common_unittest.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='google/protobuf/stubs/common_unittest.cc' object='protobuf_test-common_unittest.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(protobuf_test_CPPFLAGS) $(CPPFLAGS) $(protobuf_test_CXXFLAGS) $(CXXFLAGS) -c -o protobuf_test-common_unittest.obj `if test -f 'google/protobuf/stubs/common_unittest.cc'; then $(CYGPATH_W) 'google/protobuf/stubs/common_unittest.cc'; else $(CYGPATH_W) '$(srcdir)/google/protobuf/stubs/common_unittest.cc'; fi` protobuf_test-once_unittest.o: google/protobuf/stubs/once_unittest.cc @am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(protobuf_test_CPPFLAGS) $(CPPFLAGS) $(protobuf_test_CXXFLAGS) $(CXXFLAGS) -MT protobuf_test-once_unittest.o -MD -MP -MF $(DEPDIR)/protobuf_test-once_unittest.Tpo -c -o protobuf_test-once_unittest.o `test -f 'google/protobuf/stubs/once_unittest.cc' || echo '$(srcdir)/'`google/protobuf/stubs/once_unittest.cc -@am__fastdepCXX_TRUE@ mv -f $(DEPDIR)/protobuf_test-once_unittest.Tpo $(DEPDIR)/protobuf_test-once_unittest.Po +@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/protobuf_test-once_unittest.Tpo $(DEPDIR)/protobuf_test-once_unittest.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='google/protobuf/stubs/once_unittest.cc' object='protobuf_test-once_unittest.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(protobuf_test_CPPFLAGS) $(CPPFLAGS) $(protobuf_test_CXXFLAGS) $(CXXFLAGS) -c -o protobuf_test-once_unittest.o `test -f 'google/protobuf/stubs/once_unittest.cc' || echo '$(srcdir)/'`google/protobuf/stubs/once_unittest.cc protobuf_test-once_unittest.obj: google/protobuf/stubs/once_unittest.cc @am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(protobuf_test_CPPFLAGS) $(CPPFLAGS) $(protobuf_test_CXXFLAGS) $(CXXFLAGS) -MT protobuf_test-once_unittest.obj -MD -MP -MF $(DEPDIR)/protobuf_test-once_unittest.Tpo -c -o protobuf_test-once_unittest.obj `if test -f 'google/protobuf/stubs/once_unittest.cc'; then $(CYGPATH_W) 'google/protobuf/stubs/once_unittest.cc'; else $(CYGPATH_W) '$(srcdir)/google/protobuf/stubs/once_unittest.cc'; fi` -@am__fastdepCXX_TRUE@ mv -f $(DEPDIR)/protobuf_test-once_unittest.Tpo $(DEPDIR)/protobuf_test-once_unittest.Po +@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/protobuf_test-once_unittest.Tpo $(DEPDIR)/protobuf_test-once_unittest.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='google/protobuf/stubs/once_unittest.cc' object='protobuf_test-once_unittest.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(protobuf_test_CPPFLAGS) $(CPPFLAGS) $(protobuf_test_CXXFLAGS) $(CXXFLAGS) -c -o protobuf_test-once_unittest.obj `if test -f 'google/protobuf/stubs/once_unittest.cc'; then $(CYGPATH_W) 'google/protobuf/stubs/once_unittest.cc'; else $(CYGPATH_W) '$(srcdir)/google/protobuf/stubs/once_unittest.cc'; fi` protobuf_test-strutil_unittest.o: google/protobuf/stubs/strutil_unittest.cc @am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(protobuf_test_CPPFLAGS) $(CPPFLAGS) $(protobuf_test_CXXFLAGS) $(CXXFLAGS) -MT protobuf_test-strutil_unittest.o -MD -MP -MF $(DEPDIR)/protobuf_test-strutil_unittest.Tpo -c -o protobuf_test-strutil_unittest.o `test -f 'google/protobuf/stubs/strutil_unittest.cc' || echo '$(srcdir)/'`google/protobuf/stubs/strutil_unittest.cc -@am__fastdepCXX_TRUE@ mv -f $(DEPDIR)/protobuf_test-strutil_unittest.Tpo $(DEPDIR)/protobuf_test-strutil_unittest.Po +@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/protobuf_test-strutil_unittest.Tpo $(DEPDIR)/protobuf_test-strutil_unittest.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='google/protobuf/stubs/strutil_unittest.cc' object='protobuf_test-strutil_unittest.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(protobuf_test_CPPFLAGS) $(CPPFLAGS) $(protobuf_test_CXXFLAGS) $(CXXFLAGS) -c -o protobuf_test-strutil_unittest.o `test -f 'google/protobuf/stubs/strutil_unittest.cc' || echo '$(srcdir)/'`google/protobuf/stubs/strutil_unittest.cc protobuf_test-strutil_unittest.obj: google/protobuf/stubs/strutil_unittest.cc @am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(protobuf_test_CPPFLAGS) $(CPPFLAGS) $(protobuf_test_CXXFLAGS) $(CXXFLAGS) -MT protobuf_test-strutil_unittest.obj -MD -MP -MF $(DEPDIR)/protobuf_test-strutil_unittest.Tpo -c -o protobuf_test-strutil_unittest.obj `if test -f 'google/protobuf/stubs/strutil_unittest.cc'; then $(CYGPATH_W) 'google/protobuf/stubs/strutil_unittest.cc'; else $(CYGPATH_W) '$(srcdir)/google/protobuf/stubs/strutil_unittest.cc'; fi` -@am__fastdepCXX_TRUE@ mv -f $(DEPDIR)/protobuf_test-strutil_unittest.Tpo $(DEPDIR)/protobuf_test-strutil_unittest.Po +@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/protobuf_test-strutil_unittest.Tpo $(DEPDIR)/protobuf_test-strutil_unittest.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='google/protobuf/stubs/strutil_unittest.cc' object='protobuf_test-strutil_unittest.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(protobuf_test_CPPFLAGS) $(CPPFLAGS) $(protobuf_test_CXXFLAGS) $(CXXFLAGS) -c -o protobuf_test-strutil_unittest.obj `if test -f 'google/protobuf/stubs/strutil_unittest.cc'; then $(CYGPATH_W) 'google/protobuf/stubs/strutil_unittest.cc'; else $(CYGPATH_W) '$(srcdir)/google/protobuf/stubs/strutil_unittest.cc'; fi` protobuf_test-structurally_valid_unittest.o: google/protobuf/stubs/structurally_valid_unittest.cc @am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(protobuf_test_CPPFLAGS) $(CPPFLAGS) $(protobuf_test_CXXFLAGS) $(CXXFLAGS) -MT protobuf_test-structurally_valid_unittest.o -MD -MP -MF $(DEPDIR)/protobuf_test-structurally_valid_unittest.Tpo -c -o protobuf_test-structurally_valid_unittest.o `test -f 'google/protobuf/stubs/structurally_valid_unittest.cc' || echo '$(srcdir)/'`google/protobuf/stubs/structurally_valid_unittest.cc -@am__fastdepCXX_TRUE@ mv -f $(DEPDIR)/protobuf_test-structurally_valid_unittest.Tpo $(DEPDIR)/protobuf_test-structurally_valid_unittest.Po +@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/protobuf_test-structurally_valid_unittest.Tpo $(DEPDIR)/protobuf_test-structurally_valid_unittest.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='google/protobuf/stubs/structurally_valid_unittest.cc' object='protobuf_test-structurally_valid_unittest.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(protobuf_test_CPPFLAGS) $(CPPFLAGS) $(protobuf_test_CXXFLAGS) $(CXXFLAGS) -c -o protobuf_test-structurally_valid_unittest.o `test -f 'google/protobuf/stubs/structurally_valid_unittest.cc' || echo '$(srcdir)/'`google/protobuf/stubs/structurally_valid_unittest.cc protobuf_test-structurally_valid_unittest.obj: google/protobuf/stubs/structurally_valid_unittest.cc @am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(protobuf_test_CPPFLAGS) $(CPPFLAGS) $(protobuf_test_CXXFLAGS) $(CXXFLAGS) -MT protobuf_test-structurally_valid_unittest.obj -MD -MP -MF $(DEPDIR)/protobuf_test-structurally_valid_unittest.Tpo -c -o protobuf_test-structurally_valid_unittest.obj `if test -f 'google/protobuf/stubs/structurally_valid_unittest.cc'; then $(CYGPATH_W) 'google/protobuf/stubs/structurally_valid_unittest.cc'; else $(CYGPATH_W) '$(srcdir)/google/protobuf/stubs/structurally_valid_unittest.cc'; fi` -@am__fastdepCXX_TRUE@ mv -f $(DEPDIR)/protobuf_test-structurally_valid_unittest.Tpo $(DEPDIR)/protobuf_test-structurally_valid_unittest.Po +@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/protobuf_test-structurally_valid_unittest.Tpo $(DEPDIR)/protobuf_test-structurally_valid_unittest.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='google/protobuf/stubs/structurally_valid_unittest.cc' object='protobuf_test-structurally_valid_unittest.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(protobuf_test_CPPFLAGS) $(CPPFLAGS) $(protobuf_test_CXXFLAGS) $(CXXFLAGS) -c -o protobuf_test-structurally_valid_unittest.obj `if test -f 'google/protobuf/stubs/structurally_valid_unittest.cc'; then $(CYGPATH_W) 'google/protobuf/stubs/structurally_valid_unittest.cc'; else $(CYGPATH_W) '$(srcdir)/google/protobuf/stubs/structurally_valid_unittest.cc'; fi` +protobuf_test-stringprintf_unittest.o: google/protobuf/stubs/stringprintf_unittest.cc +@am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(protobuf_test_CPPFLAGS) $(CPPFLAGS) $(protobuf_test_CXXFLAGS) $(CXXFLAGS) -MT protobuf_test-stringprintf_unittest.o -MD -MP -MF $(DEPDIR)/protobuf_test-stringprintf_unittest.Tpo -c -o protobuf_test-stringprintf_unittest.o `test -f 'google/protobuf/stubs/stringprintf_unittest.cc' || echo '$(srcdir)/'`google/protobuf/stubs/stringprintf_unittest.cc +@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/protobuf_test-stringprintf_unittest.Tpo $(DEPDIR)/protobuf_test-stringprintf_unittest.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='google/protobuf/stubs/stringprintf_unittest.cc' object='protobuf_test-stringprintf_unittest.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(protobuf_test_CPPFLAGS) $(CPPFLAGS) $(protobuf_test_CXXFLAGS) $(CXXFLAGS) -c -o protobuf_test-stringprintf_unittest.o `test -f 'google/protobuf/stubs/stringprintf_unittest.cc' || echo '$(srcdir)/'`google/protobuf/stubs/stringprintf_unittest.cc + +protobuf_test-stringprintf_unittest.obj: google/protobuf/stubs/stringprintf_unittest.cc +@am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(protobuf_test_CPPFLAGS) $(CPPFLAGS) $(protobuf_test_CXXFLAGS) $(CXXFLAGS) -MT protobuf_test-stringprintf_unittest.obj -MD -MP -MF $(DEPDIR)/protobuf_test-stringprintf_unittest.Tpo -c -o protobuf_test-stringprintf_unittest.obj `if test -f 'google/protobuf/stubs/stringprintf_unittest.cc'; then $(CYGPATH_W) 'google/protobuf/stubs/stringprintf_unittest.cc'; else $(CYGPATH_W) '$(srcdir)/google/protobuf/stubs/stringprintf_unittest.cc'; fi` +@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/protobuf_test-stringprintf_unittest.Tpo $(DEPDIR)/protobuf_test-stringprintf_unittest.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='google/protobuf/stubs/stringprintf_unittest.cc' object='protobuf_test-stringprintf_unittest.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(protobuf_test_CPPFLAGS) $(CPPFLAGS) $(protobuf_test_CXXFLAGS) $(CXXFLAGS) -c -o protobuf_test-stringprintf_unittest.obj `if test -f 'google/protobuf/stubs/stringprintf_unittest.cc'; then $(CYGPATH_W) 'google/protobuf/stubs/stringprintf_unittest.cc'; else $(CYGPATH_W) '$(srcdir)/google/protobuf/stubs/stringprintf_unittest.cc'; fi` + +protobuf_test-template_util_unittest.o: google/protobuf/stubs/template_util_unittest.cc +@am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(protobuf_test_CPPFLAGS) $(CPPFLAGS) $(protobuf_test_CXXFLAGS) $(CXXFLAGS) -MT protobuf_test-template_util_unittest.o -MD -MP -MF $(DEPDIR)/protobuf_test-template_util_unittest.Tpo -c -o protobuf_test-template_util_unittest.o `test -f 'google/protobuf/stubs/template_util_unittest.cc' || echo '$(srcdir)/'`google/protobuf/stubs/template_util_unittest.cc +@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/protobuf_test-template_util_unittest.Tpo $(DEPDIR)/protobuf_test-template_util_unittest.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='google/protobuf/stubs/template_util_unittest.cc' object='protobuf_test-template_util_unittest.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(protobuf_test_CPPFLAGS) $(CPPFLAGS) $(protobuf_test_CXXFLAGS) $(CXXFLAGS) -c -o protobuf_test-template_util_unittest.o `test -f 'google/protobuf/stubs/template_util_unittest.cc' || echo '$(srcdir)/'`google/protobuf/stubs/template_util_unittest.cc + +protobuf_test-template_util_unittest.obj: google/protobuf/stubs/template_util_unittest.cc +@am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(protobuf_test_CPPFLAGS) $(CPPFLAGS) $(protobuf_test_CXXFLAGS) $(CXXFLAGS) -MT protobuf_test-template_util_unittest.obj -MD -MP -MF $(DEPDIR)/protobuf_test-template_util_unittest.Tpo -c -o protobuf_test-template_util_unittest.obj `if test -f 'google/protobuf/stubs/template_util_unittest.cc'; then $(CYGPATH_W) 'google/protobuf/stubs/template_util_unittest.cc'; else $(CYGPATH_W) '$(srcdir)/google/protobuf/stubs/template_util_unittest.cc'; fi` +@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/protobuf_test-template_util_unittest.Tpo $(DEPDIR)/protobuf_test-template_util_unittest.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='google/protobuf/stubs/template_util_unittest.cc' object='protobuf_test-template_util_unittest.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(protobuf_test_CPPFLAGS) $(CPPFLAGS) $(protobuf_test_CXXFLAGS) $(CXXFLAGS) -c -o protobuf_test-template_util_unittest.obj `if test -f 'google/protobuf/stubs/template_util_unittest.cc'; then $(CYGPATH_W) 'google/protobuf/stubs/template_util_unittest.cc'; else $(CYGPATH_W) '$(srcdir)/google/protobuf/stubs/template_util_unittest.cc'; fi` + +protobuf_test-type_traits_unittest.o: google/protobuf/stubs/type_traits_unittest.cc +@am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(protobuf_test_CPPFLAGS) $(CPPFLAGS) $(protobuf_test_CXXFLAGS) $(CXXFLAGS) -MT protobuf_test-type_traits_unittest.o -MD -MP -MF $(DEPDIR)/protobuf_test-type_traits_unittest.Tpo -c -o protobuf_test-type_traits_unittest.o `test -f 'google/protobuf/stubs/type_traits_unittest.cc' || echo '$(srcdir)/'`google/protobuf/stubs/type_traits_unittest.cc +@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/protobuf_test-type_traits_unittest.Tpo $(DEPDIR)/protobuf_test-type_traits_unittest.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='google/protobuf/stubs/type_traits_unittest.cc' object='protobuf_test-type_traits_unittest.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(protobuf_test_CPPFLAGS) $(CPPFLAGS) $(protobuf_test_CXXFLAGS) $(CXXFLAGS) -c -o protobuf_test-type_traits_unittest.o `test -f 'google/protobuf/stubs/type_traits_unittest.cc' || echo '$(srcdir)/'`google/protobuf/stubs/type_traits_unittest.cc + +protobuf_test-type_traits_unittest.obj: google/protobuf/stubs/type_traits_unittest.cc +@am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(protobuf_test_CPPFLAGS) $(CPPFLAGS) $(protobuf_test_CXXFLAGS) $(CXXFLAGS) -MT protobuf_test-type_traits_unittest.obj -MD -MP -MF $(DEPDIR)/protobuf_test-type_traits_unittest.Tpo -c -o protobuf_test-type_traits_unittest.obj `if test -f 'google/protobuf/stubs/type_traits_unittest.cc'; then $(CYGPATH_W) 'google/protobuf/stubs/type_traits_unittest.cc'; else $(CYGPATH_W) '$(srcdir)/google/protobuf/stubs/type_traits_unittest.cc'; fi` +@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/protobuf_test-type_traits_unittest.Tpo $(DEPDIR)/protobuf_test-type_traits_unittest.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='google/protobuf/stubs/type_traits_unittest.cc' object='protobuf_test-type_traits_unittest.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(protobuf_test_CPPFLAGS) $(CPPFLAGS) $(protobuf_test_CXXFLAGS) $(CXXFLAGS) -c -o protobuf_test-type_traits_unittest.obj `if test -f 'google/protobuf/stubs/type_traits_unittest.cc'; then $(CYGPATH_W) 'google/protobuf/stubs/type_traits_unittest.cc'; else $(CYGPATH_W) '$(srcdir)/google/protobuf/stubs/type_traits_unittest.cc'; fi` + protobuf_test-descriptor_database_unittest.o: google/protobuf/descriptor_database_unittest.cc @am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(protobuf_test_CPPFLAGS) $(CPPFLAGS) $(protobuf_test_CXXFLAGS) $(CXXFLAGS) -MT protobuf_test-descriptor_database_unittest.o -MD -MP -MF $(DEPDIR)/protobuf_test-descriptor_database_unittest.Tpo -c -o protobuf_test-descriptor_database_unittest.o `test -f 'google/protobuf/descriptor_database_unittest.cc' || echo '$(srcdir)/'`google/protobuf/descriptor_database_unittest.cc -@am__fastdepCXX_TRUE@ mv -f $(DEPDIR)/protobuf_test-descriptor_database_unittest.Tpo $(DEPDIR)/protobuf_test-descriptor_database_unittest.Po +@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/protobuf_test-descriptor_database_unittest.Tpo $(DEPDIR)/protobuf_test-descriptor_database_unittest.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='google/protobuf/descriptor_database_unittest.cc' object='protobuf_test-descriptor_database_unittest.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(protobuf_test_CPPFLAGS) $(CPPFLAGS) $(protobuf_test_CXXFLAGS) $(CXXFLAGS) -c -o protobuf_test-descriptor_database_unittest.o `test -f 'google/protobuf/descriptor_database_unittest.cc' || echo '$(srcdir)/'`google/protobuf/descriptor_database_unittest.cc protobuf_test-descriptor_database_unittest.obj: google/protobuf/descriptor_database_unittest.cc @am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(protobuf_test_CPPFLAGS) $(CPPFLAGS) $(protobuf_test_CXXFLAGS) $(CXXFLAGS) -MT protobuf_test-descriptor_database_unittest.obj -MD -MP -MF $(DEPDIR)/protobuf_test-descriptor_database_unittest.Tpo -c -o protobuf_test-descriptor_database_unittest.obj `if test -f 'google/protobuf/descriptor_database_unittest.cc'; then $(CYGPATH_W) 'google/protobuf/descriptor_database_unittest.cc'; else $(CYGPATH_W) '$(srcdir)/google/protobuf/descriptor_database_unittest.cc'; fi` -@am__fastdepCXX_TRUE@ mv -f $(DEPDIR)/protobuf_test-descriptor_database_unittest.Tpo $(DEPDIR)/protobuf_test-descriptor_database_unittest.Po +@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/protobuf_test-descriptor_database_unittest.Tpo $(DEPDIR)/protobuf_test-descriptor_database_unittest.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='google/protobuf/descriptor_database_unittest.cc' object='protobuf_test-descriptor_database_unittest.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(protobuf_test_CPPFLAGS) $(CPPFLAGS) $(protobuf_test_CXXFLAGS) $(CXXFLAGS) -c -o protobuf_test-descriptor_database_unittest.obj `if test -f 'google/protobuf/descriptor_database_unittest.cc'; then $(CYGPATH_W) 'google/protobuf/descriptor_database_unittest.cc'; else $(CYGPATH_W) '$(srcdir)/google/protobuf/descriptor_database_unittest.cc'; fi` protobuf_test-descriptor_unittest.o: google/protobuf/descriptor_unittest.cc @am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(protobuf_test_CPPFLAGS) $(CPPFLAGS) $(protobuf_test_CXXFLAGS) $(CXXFLAGS) -MT protobuf_test-descriptor_unittest.o -MD -MP -MF $(DEPDIR)/protobuf_test-descriptor_unittest.Tpo -c -o protobuf_test-descriptor_unittest.o `test -f 'google/protobuf/descriptor_unittest.cc' || echo '$(srcdir)/'`google/protobuf/descriptor_unittest.cc -@am__fastdepCXX_TRUE@ mv -f $(DEPDIR)/protobuf_test-descriptor_unittest.Tpo $(DEPDIR)/protobuf_test-descriptor_unittest.Po +@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/protobuf_test-descriptor_unittest.Tpo $(DEPDIR)/protobuf_test-descriptor_unittest.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='google/protobuf/descriptor_unittest.cc' object='protobuf_test-descriptor_unittest.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(protobuf_test_CPPFLAGS) $(CPPFLAGS) $(protobuf_test_CXXFLAGS) $(CXXFLAGS) -c -o protobuf_test-descriptor_unittest.o `test -f 'google/protobuf/descriptor_unittest.cc' || echo '$(srcdir)/'`google/protobuf/descriptor_unittest.cc protobuf_test-descriptor_unittest.obj: google/protobuf/descriptor_unittest.cc @am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(protobuf_test_CPPFLAGS) $(CPPFLAGS) $(protobuf_test_CXXFLAGS) $(CXXFLAGS) -MT protobuf_test-descriptor_unittest.obj -MD -MP -MF $(DEPDIR)/protobuf_test-descriptor_unittest.Tpo -c -o protobuf_test-descriptor_unittest.obj `if test -f 'google/protobuf/descriptor_unittest.cc'; then $(CYGPATH_W) 'google/protobuf/descriptor_unittest.cc'; else $(CYGPATH_W) '$(srcdir)/google/protobuf/descriptor_unittest.cc'; fi` -@am__fastdepCXX_TRUE@ mv -f $(DEPDIR)/protobuf_test-descriptor_unittest.Tpo $(DEPDIR)/protobuf_test-descriptor_unittest.Po +@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/protobuf_test-descriptor_unittest.Tpo $(DEPDIR)/protobuf_test-descriptor_unittest.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='google/protobuf/descriptor_unittest.cc' object='protobuf_test-descriptor_unittest.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(protobuf_test_CPPFLAGS) $(CPPFLAGS) $(protobuf_test_CXXFLAGS) $(CXXFLAGS) -c -o protobuf_test-descriptor_unittest.obj `if test -f 'google/protobuf/descriptor_unittest.cc'; then $(CYGPATH_W) 'google/protobuf/descriptor_unittest.cc'; else $(CYGPATH_W) '$(srcdir)/google/protobuf/descriptor_unittest.cc'; fi` protobuf_test-dynamic_message_unittest.o: google/protobuf/dynamic_message_unittest.cc @am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(protobuf_test_CPPFLAGS) $(CPPFLAGS) $(protobuf_test_CXXFLAGS) $(CXXFLAGS) -MT protobuf_test-dynamic_message_unittest.o -MD -MP -MF $(DEPDIR)/protobuf_test-dynamic_message_unittest.Tpo -c -o protobuf_test-dynamic_message_unittest.o `test -f 'google/protobuf/dynamic_message_unittest.cc' || echo '$(srcdir)/'`google/protobuf/dynamic_message_unittest.cc -@am__fastdepCXX_TRUE@ mv -f $(DEPDIR)/protobuf_test-dynamic_message_unittest.Tpo $(DEPDIR)/protobuf_test-dynamic_message_unittest.Po +@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/protobuf_test-dynamic_message_unittest.Tpo $(DEPDIR)/protobuf_test-dynamic_message_unittest.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='google/protobuf/dynamic_message_unittest.cc' object='protobuf_test-dynamic_message_unittest.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(protobuf_test_CPPFLAGS) $(CPPFLAGS) $(protobuf_test_CXXFLAGS) $(CXXFLAGS) -c -o protobuf_test-dynamic_message_unittest.o `test -f 'google/protobuf/dynamic_message_unittest.cc' || echo '$(srcdir)/'`google/protobuf/dynamic_message_unittest.cc protobuf_test-dynamic_message_unittest.obj: google/protobuf/dynamic_message_unittest.cc @am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(protobuf_test_CPPFLAGS) $(CPPFLAGS) $(protobuf_test_CXXFLAGS) $(CXXFLAGS) -MT protobuf_test-dynamic_message_unittest.obj -MD -MP -MF $(DEPDIR)/protobuf_test-dynamic_message_unittest.Tpo -c -o protobuf_test-dynamic_message_unittest.obj `if test -f 'google/protobuf/dynamic_message_unittest.cc'; then $(CYGPATH_W) 'google/protobuf/dynamic_message_unittest.cc'; else $(CYGPATH_W) '$(srcdir)/google/protobuf/dynamic_message_unittest.cc'; fi` -@am__fastdepCXX_TRUE@ mv -f $(DEPDIR)/protobuf_test-dynamic_message_unittest.Tpo $(DEPDIR)/protobuf_test-dynamic_message_unittest.Po +@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/protobuf_test-dynamic_message_unittest.Tpo $(DEPDIR)/protobuf_test-dynamic_message_unittest.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='google/protobuf/dynamic_message_unittest.cc' object='protobuf_test-dynamic_message_unittest.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(protobuf_test_CPPFLAGS) $(CPPFLAGS) $(protobuf_test_CXXFLAGS) $(CXXFLAGS) -c -o protobuf_test-dynamic_message_unittest.obj `if test -f 'google/protobuf/dynamic_message_unittest.cc'; then $(CYGPATH_W) 'google/protobuf/dynamic_message_unittest.cc'; else $(CYGPATH_W) '$(srcdir)/google/protobuf/dynamic_message_unittest.cc'; fi` protobuf_test-extension_set_unittest.o: google/protobuf/extension_set_unittest.cc @am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(protobuf_test_CPPFLAGS) $(CPPFLAGS) $(protobuf_test_CXXFLAGS) $(CXXFLAGS) -MT protobuf_test-extension_set_unittest.o -MD -MP -MF $(DEPDIR)/protobuf_test-extension_set_unittest.Tpo -c -o protobuf_test-extension_set_unittest.o `test -f 'google/protobuf/extension_set_unittest.cc' || echo '$(srcdir)/'`google/protobuf/extension_set_unittest.cc -@am__fastdepCXX_TRUE@ mv -f $(DEPDIR)/protobuf_test-extension_set_unittest.Tpo $(DEPDIR)/protobuf_test-extension_set_unittest.Po +@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/protobuf_test-extension_set_unittest.Tpo $(DEPDIR)/protobuf_test-extension_set_unittest.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='google/protobuf/extension_set_unittest.cc' object='protobuf_test-extension_set_unittest.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(protobuf_test_CPPFLAGS) $(CPPFLAGS) $(protobuf_test_CXXFLAGS) $(CXXFLAGS) -c -o protobuf_test-extension_set_unittest.o `test -f 'google/protobuf/extension_set_unittest.cc' || echo '$(srcdir)/'`google/protobuf/extension_set_unittest.cc protobuf_test-extension_set_unittest.obj: google/protobuf/extension_set_unittest.cc @am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(protobuf_test_CPPFLAGS) $(CPPFLAGS) $(protobuf_test_CXXFLAGS) $(CXXFLAGS) -MT protobuf_test-extension_set_unittest.obj -MD -MP -MF $(DEPDIR)/protobuf_test-extension_set_unittest.Tpo -c -o protobuf_test-extension_set_unittest.obj `if test -f 'google/protobuf/extension_set_unittest.cc'; then $(CYGPATH_W) 'google/protobuf/extension_set_unittest.cc'; else $(CYGPATH_W) '$(srcdir)/google/protobuf/extension_set_unittest.cc'; fi` -@am__fastdepCXX_TRUE@ mv -f $(DEPDIR)/protobuf_test-extension_set_unittest.Tpo $(DEPDIR)/protobuf_test-extension_set_unittest.Po +@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/protobuf_test-extension_set_unittest.Tpo $(DEPDIR)/protobuf_test-extension_set_unittest.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='google/protobuf/extension_set_unittest.cc' object='protobuf_test-extension_set_unittest.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(protobuf_test_CPPFLAGS) $(CPPFLAGS) $(protobuf_test_CXXFLAGS) $(CXXFLAGS) -c -o protobuf_test-extension_set_unittest.obj `if test -f 'google/protobuf/extension_set_unittest.cc'; then $(CYGPATH_W) 'google/protobuf/extension_set_unittest.cc'; else $(CYGPATH_W) '$(srcdir)/google/protobuf/extension_set_unittest.cc'; fi` protobuf_test-generated_message_reflection_unittest.o: google/protobuf/generated_message_reflection_unittest.cc @am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(protobuf_test_CPPFLAGS) $(CPPFLAGS) $(protobuf_test_CXXFLAGS) $(CXXFLAGS) -MT protobuf_test-generated_message_reflection_unittest.o -MD -MP -MF $(DEPDIR)/protobuf_test-generated_message_reflection_unittest.Tpo -c -o protobuf_test-generated_message_reflection_unittest.o `test -f 'google/protobuf/generated_message_reflection_unittest.cc' || echo '$(srcdir)/'`google/protobuf/generated_message_reflection_unittest.cc -@am__fastdepCXX_TRUE@ mv -f $(DEPDIR)/protobuf_test-generated_message_reflection_unittest.Tpo $(DEPDIR)/protobuf_test-generated_message_reflection_unittest.Po +@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/protobuf_test-generated_message_reflection_unittest.Tpo $(DEPDIR)/protobuf_test-generated_message_reflection_unittest.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='google/protobuf/generated_message_reflection_unittest.cc' object='protobuf_test-generated_message_reflection_unittest.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(protobuf_test_CPPFLAGS) $(CPPFLAGS) $(protobuf_test_CXXFLAGS) $(CXXFLAGS) -c -o protobuf_test-generated_message_reflection_unittest.o `test -f 'google/protobuf/generated_message_reflection_unittest.cc' || echo '$(srcdir)/'`google/protobuf/generated_message_reflection_unittest.cc protobuf_test-generated_message_reflection_unittest.obj: google/protobuf/generated_message_reflection_unittest.cc @am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(protobuf_test_CPPFLAGS) $(CPPFLAGS) $(protobuf_test_CXXFLAGS) $(CXXFLAGS) -MT protobuf_test-generated_message_reflection_unittest.obj -MD -MP -MF $(DEPDIR)/protobuf_test-generated_message_reflection_unittest.Tpo -c -o protobuf_test-generated_message_reflection_unittest.obj `if test -f 'google/protobuf/generated_message_reflection_unittest.cc'; then $(CYGPATH_W) 'google/protobuf/generated_message_reflection_unittest.cc'; else $(CYGPATH_W) '$(srcdir)/google/protobuf/generated_message_reflection_unittest.cc'; fi` -@am__fastdepCXX_TRUE@ mv -f $(DEPDIR)/protobuf_test-generated_message_reflection_unittest.Tpo $(DEPDIR)/protobuf_test-generated_message_reflection_unittest.Po +@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/protobuf_test-generated_message_reflection_unittest.Tpo $(DEPDIR)/protobuf_test-generated_message_reflection_unittest.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='google/protobuf/generated_message_reflection_unittest.cc' object='protobuf_test-generated_message_reflection_unittest.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(protobuf_test_CPPFLAGS) $(CPPFLAGS) $(protobuf_test_CXXFLAGS) $(CXXFLAGS) -c -o protobuf_test-generated_message_reflection_unittest.obj `if test -f 'google/protobuf/generated_message_reflection_unittest.cc'; then $(CYGPATH_W) 'google/protobuf/generated_message_reflection_unittest.cc'; else $(CYGPATH_W) '$(srcdir)/google/protobuf/generated_message_reflection_unittest.cc'; fi` protobuf_test-message_unittest.o: google/protobuf/message_unittest.cc @am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(protobuf_test_CPPFLAGS) $(CPPFLAGS) $(protobuf_test_CXXFLAGS) $(CXXFLAGS) -MT protobuf_test-message_unittest.o -MD -MP -MF $(DEPDIR)/protobuf_test-message_unittest.Tpo -c -o protobuf_test-message_unittest.o `test -f 'google/protobuf/message_unittest.cc' || echo '$(srcdir)/'`google/protobuf/message_unittest.cc -@am__fastdepCXX_TRUE@ mv -f $(DEPDIR)/protobuf_test-message_unittest.Tpo $(DEPDIR)/protobuf_test-message_unittest.Po +@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/protobuf_test-message_unittest.Tpo $(DEPDIR)/protobuf_test-message_unittest.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='google/protobuf/message_unittest.cc' object='protobuf_test-message_unittest.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(protobuf_test_CPPFLAGS) $(CPPFLAGS) $(protobuf_test_CXXFLAGS) $(CXXFLAGS) -c -o protobuf_test-message_unittest.o `test -f 'google/protobuf/message_unittest.cc' || echo '$(srcdir)/'`google/protobuf/message_unittest.cc protobuf_test-message_unittest.obj: google/protobuf/message_unittest.cc @am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(protobuf_test_CPPFLAGS) $(CPPFLAGS) $(protobuf_test_CXXFLAGS) $(CXXFLAGS) -MT protobuf_test-message_unittest.obj -MD -MP -MF $(DEPDIR)/protobuf_test-message_unittest.Tpo -c -o protobuf_test-message_unittest.obj `if test -f 'google/protobuf/message_unittest.cc'; then $(CYGPATH_W) 'google/protobuf/message_unittest.cc'; else $(CYGPATH_W) '$(srcdir)/google/protobuf/message_unittest.cc'; fi` -@am__fastdepCXX_TRUE@ mv -f $(DEPDIR)/protobuf_test-message_unittest.Tpo $(DEPDIR)/protobuf_test-message_unittest.Po +@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/protobuf_test-message_unittest.Tpo $(DEPDIR)/protobuf_test-message_unittest.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='google/protobuf/message_unittest.cc' object='protobuf_test-message_unittest.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(protobuf_test_CPPFLAGS) $(CPPFLAGS) $(protobuf_test_CXXFLAGS) $(CXXFLAGS) -c -o protobuf_test-message_unittest.obj `if test -f 'google/protobuf/message_unittest.cc'; then $(CYGPATH_W) 'google/protobuf/message_unittest.cc'; else $(CYGPATH_W) '$(srcdir)/google/protobuf/message_unittest.cc'; fi` protobuf_test-reflection_ops_unittest.o: google/protobuf/reflection_ops_unittest.cc @am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(protobuf_test_CPPFLAGS) $(CPPFLAGS) $(protobuf_test_CXXFLAGS) $(CXXFLAGS) -MT protobuf_test-reflection_ops_unittest.o -MD -MP -MF $(DEPDIR)/protobuf_test-reflection_ops_unittest.Tpo -c -o protobuf_test-reflection_ops_unittest.o `test -f 'google/protobuf/reflection_ops_unittest.cc' || echo '$(srcdir)/'`google/protobuf/reflection_ops_unittest.cc -@am__fastdepCXX_TRUE@ mv -f $(DEPDIR)/protobuf_test-reflection_ops_unittest.Tpo $(DEPDIR)/protobuf_test-reflection_ops_unittest.Po +@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/protobuf_test-reflection_ops_unittest.Tpo $(DEPDIR)/protobuf_test-reflection_ops_unittest.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='google/protobuf/reflection_ops_unittest.cc' object='protobuf_test-reflection_ops_unittest.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(protobuf_test_CPPFLAGS) $(CPPFLAGS) $(protobuf_test_CXXFLAGS) $(CXXFLAGS) -c -o protobuf_test-reflection_ops_unittest.o `test -f 'google/protobuf/reflection_ops_unittest.cc' || echo '$(srcdir)/'`google/protobuf/reflection_ops_unittest.cc protobuf_test-reflection_ops_unittest.obj: google/protobuf/reflection_ops_unittest.cc @am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(protobuf_test_CPPFLAGS) $(CPPFLAGS) $(protobuf_test_CXXFLAGS) $(CXXFLAGS) -MT protobuf_test-reflection_ops_unittest.obj -MD -MP -MF $(DEPDIR)/protobuf_test-reflection_ops_unittest.Tpo -c -o protobuf_test-reflection_ops_unittest.obj `if test -f 'google/protobuf/reflection_ops_unittest.cc'; then $(CYGPATH_W) 'google/protobuf/reflection_ops_unittest.cc'; else $(CYGPATH_W) '$(srcdir)/google/protobuf/reflection_ops_unittest.cc'; fi` -@am__fastdepCXX_TRUE@ mv -f $(DEPDIR)/protobuf_test-reflection_ops_unittest.Tpo $(DEPDIR)/protobuf_test-reflection_ops_unittest.Po +@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/protobuf_test-reflection_ops_unittest.Tpo $(DEPDIR)/protobuf_test-reflection_ops_unittest.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='google/protobuf/reflection_ops_unittest.cc' object='protobuf_test-reflection_ops_unittest.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(protobuf_test_CPPFLAGS) $(CPPFLAGS) $(protobuf_test_CXXFLAGS) $(CXXFLAGS) -c -o protobuf_test-reflection_ops_unittest.obj `if test -f 'google/protobuf/reflection_ops_unittest.cc'; then $(CYGPATH_W) 'google/protobuf/reflection_ops_unittest.cc'; else $(CYGPATH_W) '$(srcdir)/google/protobuf/reflection_ops_unittest.cc'; fi` protobuf_test-repeated_field_unittest.o: google/protobuf/repeated_field_unittest.cc @am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(protobuf_test_CPPFLAGS) $(CPPFLAGS) $(protobuf_test_CXXFLAGS) $(CXXFLAGS) -MT protobuf_test-repeated_field_unittest.o -MD -MP -MF $(DEPDIR)/protobuf_test-repeated_field_unittest.Tpo -c -o protobuf_test-repeated_field_unittest.o `test -f 'google/protobuf/repeated_field_unittest.cc' || echo '$(srcdir)/'`google/protobuf/repeated_field_unittest.cc -@am__fastdepCXX_TRUE@ mv -f $(DEPDIR)/protobuf_test-repeated_field_unittest.Tpo $(DEPDIR)/protobuf_test-repeated_field_unittest.Po +@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/protobuf_test-repeated_field_unittest.Tpo $(DEPDIR)/protobuf_test-repeated_field_unittest.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='google/protobuf/repeated_field_unittest.cc' object='protobuf_test-repeated_field_unittest.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(protobuf_test_CPPFLAGS) $(CPPFLAGS) $(protobuf_test_CXXFLAGS) $(CXXFLAGS) -c -o protobuf_test-repeated_field_unittest.o `test -f 'google/protobuf/repeated_field_unittest.cc' || echo '$(srcdir)/'`google/protobuf/repeated_field_unittest.cc protobuf_test-repeated_field_unittest.obj: google/protobuf/repeated_field_unittest.cc @am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(protobuf_test_CPPFLAGS) $(CPPFLAGS) $(protobuf_test_CXXFLAGS) $(CXXFLAGS) -MT protobuf_test-repeated_field_unittest.obj -MD -MP -MF $(DEPDIR)/protobuf_test-repeated_field_unittest.Tpo -c -o protobuf_test-repeated_field_unittest.obj `if test -f 'google/protobuf/repeated_field_unittest.cc'; then $(CYGPATH_W) 'google/protobuf/repeated_field_unittest.cc'; else $(CYGPATH_W) '$(srcdir)/google/protobuf/repeated_field_unittest.cc'; fi` -@am__fastdepCXX_TRUE@ mv -f $(DEPDIR)/protobuf_test-repeated_field_unittest.Tpo $(DEPDIR)/protobuf_test-repeated_field_unittest.Po +@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/protobuf_test-repeated_field_unittest.Tpo $(DEPDIR)/protobuf_test-repeated_field_unittest.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='google/protobuf/repeated_field_unittest.cc' object='protobuf_test-repeated_field_unittest.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(protobuf_test_CPPFLAGS) $(CPPFLAGS) $(protobuf_test_CXXFLAGS) $(CXXFLAGS) -c -o protobuf_test-repeated_field_unittest.obj `if test -f 'google/protobuf/repeated_field_unittest.cc'; then $(CYGPATH_W) 'google/protobuf/repeated_field_unittest.cc'; else $(CYGPATH_W) '$(srcdir)/google/protobuf/repeated_field_unittest.cc'; fi` +protobuf_test-repeated_field_reflection_unittest.o: google/protobuf/repeated_field_reflection_unittest.cc +@am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(protobuf_test_CPPFLAGS) $(CPPFLAGS) $(protobuf_test_CXXFLAGS) $(CXXFLAGS) -MT protobuf_test-repeated_field_reflection_unittest.o -MD -MP -MF $(DEPDIR)/protobuf_test-repeated_field_reflection_unittest.Tpo -c -o protobuf_test-repeated_field_reflection_unittest.o `test -f 'google/protobuf/repeated_field_reflection_unittest.cc' || echo '$(srcdir)/'`google/protobuf/repeated_field_reflection_unittest.cc +@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/protobuf_test-repeated_field_reflection_unittest.Tpo $(DEPDIR)/protobuf_test-repeated_field_reflection_unittest.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='google/protobuf/repeated_field_reflection_unittest.cc' object='protobuf_test-repeated_field_reflection_unittest.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(protobuf_test_CPPFLAGS) $(CPPFLAGS) $(protobuf_test_CXXFLAGS) $(CXXFLAGS) -c -o protobuf_test-repeated_field_reflection_unittest.o `test -f 'google/protobuf/repeated_field_reflection_unittest.cc' || echo '$(srcdir)/'`google/protobuf/repeated_field_reflection_unittest.cc + +protobuf_test-repeated_field_reflection_unittest.obj: google/protobuf/repeated_field_reflection_unittest.cc +@am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(protobuf_test_CPPFLAGS) $(CPPFLAGS) $(protobuf_test_CXXFLAGS) $(CXXFLAGS) -MT protobuf_test-repeated_field_reflection_unittest.obj -MD -MP -MF $(DEPDIR)/protobuf_test-repeated_field_reflection_unittest.Tpo -c -o protobuf_test-repeated_field_reflection_unittest.obj `if test -f 'google/protobuf/repeated_field_reflection_unittest.cc'; then $(CYGPATH_W) 'google/protobuf/repeated_field_reflection_unittest.cc'; else $(CYGPATH_W) '$(srcdir)/google/protobuf/repeated_field_reflection_unittest.cc'; fi` +@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/protobuf_test-repeated_field_reflection_unittest.Tpo $(DEPDIR)/protobuf_test-repeated_field_reflection_unittest.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='google/protobuf/repeated_field_reflection_unittest.cc' object='protobuf_test-repeated_field_reflection_unittest.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(protobuf_test_CPPFLAGS) $(CPPFLAGS) $(protobuf_test_CXXFLAGS) $(CXXFLAGS) -c -o protobuf_test-repeated_field_reflection_unittest.obj `if test -f 'google/protobuf/repeated_field_reflection_unittest.cc'; then $(CYGPATH_W) 'google/protobuf/repeated_field_reflection_unittest.cc'; else $(CYGPATH_W) '$(srcdir)/google/protobuf/repeated_field_reflection_unittest.cc'; fi` + protobuf_test-text_format_unittest.o: google/protobuf/text_format_unittest.cc @am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(protobuf_test_CPPFLAGS) $(CPPFLAGS) $(protobuf_test_CXXFLAGS) $(CXXFLAGS) -MT protobuf_test-text_format_unittest.o -MD -MP -MF $(DEPDIR)/protobuf_test-text_format_unittest.Tpo -c -o protobuf_test-text_format_unittest.o `test -f 'google/protobuf/text_format_unittest.cc' || echo '$(srcdir)/'`google/protobuf/text_format_unittest.cc -@am__fastdepCXX_TRUE@ mv -f $(DEPDIR)/protobuf_test-text_format_unittest.Tpo $(DEPDIR)/protobuf_test-text_format_unittest.Po +@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/protobuf_test-text_format_unittest.Tpo $(DEPDIR)/protobuf_test-text_format_unittest.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='google/protobuf/text_format_unittest.cc' object='protobuf_test-text_format_unittest.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(protobuf_test_CPPFLAGS) $(CPPFLAGS) $(protobuf_test_CXXFLAGS) $(CXXFLAGS) -c -o protobuf_test-text_format_unittest.o `test -f 'google/protobuf/text_format_unittest.cc' || echo '$(srcdir)/'`google/protobuf/text_format_unittest.cc protobuf_test-text_format_unittest.obj: google/protobuf/text_format_unittest.cc @am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(protobuf_test_CPPFLAGS) $(CPPFLAGS) $(protobuf_test_CXXFLAGS) $(CXXFLAGS) -MT protobuf_test-text_format_unittest.obj -MD -MP -MF $(DEPDIR)/protobuf_test-text_format_unittest.Tpo -c -o protobuf_test-text_format_unittest.obj `if test -f 'google/protobuf/text_format_unittest.cc'; then $(CYGPATH_W) 'google/protobuf/text_format_unittest.cc'; else $(CYGPATH_W) '$(srcdir)/google/protobuf/text_format_unittest.cc'; fi` -@am__fastdepCXX_TRUE@ mv -f $(DEPDIR)/protobuf_test-text_format_unittest.Tpo $(DEPDIR)/protobuf_test-text_format_unittest.Po +@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/protobuf_test-text_format_unittest.Tpo $(DEPDIR)/protobuf_test-text_format_unittest.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='google/protobuf/text_format_unittest.cc' object='protobuf_test-text_format_unittest.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(protobuf_test_CPPFLAGS) $(CPPFLAGS) $(protobuf_test_CXXFLAGS) $(CXXFLAGS) -c -o protobuf_test-text_format_unittest.obj `if test -f 'google/protobuf/text_format_unittest.cc'; then $(CYGPATH_W) 'google/protobuf/text_format_unittest.cc'; else $(CYGPATH_W) '$(srcdir)/google/protobuf/text_format_unittest.cc'; fi` protobuf_test-unknown_field_set_unittest.o: google/protobuf/unknown_field_set_unittest.cc @am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(protobuf_test_CPPFLAGS) $(CPPFLAGS) $(protobuf_test_CXXFLAGS) $(CXXFLAGS) -MT protobuf_test-unknown_field_set_unittest.o -MD -MP -MF $(DEPDIR)/protobuf_test-unknown_field_set_unittest.Tpo -c -o protobuf_test-unknown_field_set_unittest.o `test -f 'google/protobuf/unknown_field_set_unittest.cc' || echo '$(srcdir)/'`google/protobuf/unknown_field_set_unittest.cc -@am__fastdepCXX_TRUE@ mv -f $(DEPDIR)/protobuf_test-unknown_field_set_unittest.Tpo $(DEPDIR)/protobuf_test-unknown_field_set_unittest.Po +@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/protobuf_test-unknown_field_set_unittest.Tpo $(DEPDIR)/protobuf_test-unknown_field_set_unittest.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='google/protobuf/unknown_field_set_unittest.cc' object='protobuf_test-unknown_field_set_unittest.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(protobuf_test_CPPFLAGS) $(CPPFLAGS) $(protobuf_test_CXXFLAGS) $(CXXFLAGS) -c -o protobuf_test-unknown_field_set_unittest.o `test -f 'google/protobuf/unknown_field_set_unittest.cc' || echo '$(srcdir)/'`google/protobuf/unknown_field_set_unittest.cc protobuf_test-unknown_field_set_unittest.obj: google/protobuf/unknown_field_set_unittest.cc @am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(protobuf_test_CPPFLAGS) $(CPPFLAGS) $(protobuf_test_CXXFLAGS) $(CXXFLAGS) -MT protobuf_test-unknown_field_set_unittest.obj -MD -MP -MF $(DEPDIR)/protobuf_test-unknown_field_set_unittest.Tpo -c -o protobuf_test-unknown_field_set_unittest.obj `if test -f 'google/protobuf/unknown_field_set_unittest.cc'; then $(CYGPATH_W) 'google/protobuf/unknown_field_set_unittest.cc'; else $(CYGPATH_W) '$(srcdir)/google/protobuf/unknown_field_set_unittest.cc'; fi` -@am__fastdepCXX_TRUE@ mv -f $(DEPDIR)/protobuf_test-unknown_field_set_unittest.Tpo $(DEPDIR)/protobuf_test-unknown_field_set_unittest.Po +@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/protobuf_test-unknown_field_set_unittest.Tpo $(DEPDIR)/protobuf_test-unknown_field_set_unittest.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='google/protobuf/unknown_field_set_unittest.cc' object='protobuf_test-unknown_field_set_unittest.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(protobuf_test_CPPFLAGS) $(CPPFLAGS) $(protobuf_test_CXXFLAGS) $(CXXFLAGS) -c -o protobuf_test-unknown_field_set_unittest.obj `if test -f 'google/protobuf/unknown_field_set_unittest.cc'; then $(CYGPATH_W) 'google/protobuf/unknown_field_set_unittest.cc'; else $(CYGPATH_W) '$(srcdir)/google/protobuf/unknown_field_set_unittest.cc'; fi` protobuf_test-wire_format_unittest.o: google/protobuf/wire_format_unittest.cc @am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(protobuf_test_CPPFLAGS) $(CPPFLAGS) $(protobuf_test_CXXFLAGS) $(CXXFLAGS) -MT protobuf_test-wire_format_unittest.o -MD -MP -MF $(DEPDIR)/protobuf_test-wire_format_unittest.Tpo -c -o protobuf_test-wire_format_unittest.o `test -f 'google/protobuf/wire_format_unittest.cc' || echo '$(srcdir)/'`google/protobuf/wire_format_unittest.cc -@am__fastdepCXX_TRUE@ mv -f $(DEPDIR)/protobuf_test-wire_format_unittest.Tpo $(DEPDIR)/protobuf_test-wire_format_unittest.Po +@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/protobuf_test-wire_format_unittest.Tpo $(DEPDIR)/protobuf_test-wire_format_unittest.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='google/protobuf/wire_format_unittest.cc' object='protobuf_test-wire_format_unittest.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(protobuf_test_CPPFLAGS) $(CPPFLAGS) $(protobuf_test_CXXFLAGS) $(CXXFLAGS) -c -o protobuf_test-wire_format_unittest.o `test -f 'google/protobuf/wire_format_unittest.cc' || echo '$(srcdir)/'`google/protobuf/wire_format_unittest.cc protobuf_test-wire_format_unittest.obj: google/protobuf/wire_format_unittest.cc @am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(protobuf_test_CPPFLAGS) $(CPPFLAGS) $(protobuf_test_CXXFLAGS) $(CXXFLAGS) -MT protobuf_test-wire_format_unittest.obj -MD -MP -MF $(DEPDIR)/protobuf_test-wire_format_unittest.Tpo -c -o protobuf_test-wire_format_unittest.obj `if test -f 'google/protobuf/wire_format_unittest.cc'; then $(CYGPATH_W) 'google/protobuf/wire_format_unittest.cc'; else $(CYGPATH_W) '$(srcdir)/google/protobuf/wire_format_unittest.cc'; fi` -@am__fastdepCXX_TRUE@ mv -f $(DEPDIR)/protobuf_test-wire_format_unittest.Tpo $(DEPDIR)/protobuf_test-wire_format_unittest.Po +@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/protobuf_test-wire_format_unittest.Tpo $(DEPDIR)/protobuf_test-wire_format_unittest.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='google/protobuf/wire_format_unittest.cc' object='protobuf_test-wire_format_unittest.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(protobuf_test_CPPFLAGS) $(CPPFLAGS) $(protobuf_test_CXXFLAGS) $(CXXFLAGS) -c -o protobuf_test-wire_format_unittest.obj `if test -f 'google/protobuf/wire_format_unittest.cc'; then $(CYGPATH_W) 'google/protobuf/wire_format_unittest.cc'; else $(CYGPATH_W) '$(srcdir)/google/protobuf/wire_format_unittest.cc'; fi` protobuf_test-coded_stream_unittest.o: google/protobuf/io/coded_stream_unittest.cc @am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(protobuf_test_CPPFLAGS) $(CPPFLAGS) $(protobuf_test_CXXFLAGS) $(CXXFLAGS) -MT protobuf_test-coded_stream_unittest.o -MD -MP -MF $(DEPDIR)/protobuf_test-coded_stream_unittest.Tpo -c -o protobuf_test-coded_stream_unittest.o `test -f 'google/protobuf/io/coded_stream_unittest.cc' || echo '$(srcdir)/'`google/protobuf/io/coded_stream_unittest.cc -@am__fastdepCXX_TRUE@ mv -f $(DEPDIR)/protobuf_test-coded_stream_unittest.Tpo $(DEPDIR)/protobuf_test-coded_stream_unittest.Po +@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/protobuf_test-coded_stream_unittest.Tpo $(DEPDIR)/protobuf_test-coded_stream_unittest.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='google/protobuf/io/coded_stream_unittest.cc' object='protobuf_test-coded_stream_unittest.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(protobuf_test_CPPFLAGS) $(CPPFLAGS) $(protobuf_test_CXXFLAGS) $(CXXFLAGS) -c -o protobuf_test-coded_stream_unittest.o `test -f 'google/protobuf/io/coded_stream_unittest.cc' || echo '$(srcdir)/'`google/protobuf/io/coded_stream_unittest.cc protobuf_test-coded_stream_unittest.obj: google/protobuf/io/coded_stream_unittest.cc @am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(protobuf_test_CPPFLAGS) $(CPPFLAGS) $(protobuf_test_CXXFLAGS) $(CXXFLAGS) -MT protobuf_test-coded_stream_unittest.obj -MD -MP -MF $(DEPDIR)/protobuf_test-coded_stream_unittest.Tpo -c -o protobuf_test-coded_stream_unittest.obj `if test -f 'google/protobuf/io/coded_stream_unittest.cc'; then $(CYGPATH_W) 'google/protobuf/io/coded_stream_unittest.cc'; else $(CYGPATH_W) '$(srcdir)/google/protobuf/io/coded_stream_unittest.cc'; fi` -@am__fastdepCXX_TRUE@ mv -f $(DEPDIR)/protobuf_test-coded_stream_unittest.Tpo $(DEPDIR)/protobuf_test-coded_stream_unittest.Po +@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/protobuf_test-coded_stream_unittest.Tpo $(DEPDIR)/protobuf_test-coded_stream_unittest.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='google/protobuf/io/coded_stream_unittest.cc' object='protobuf_test-coded_stream_unittest.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(protobuf_test_CPPFLAGS) $(CPPFLAGS) $(protobuf_test_CXXFLAGS) $(CXXFLAGS) -c -o protobuf_test-coded_stream_unittest.obj `if test -f 'google/protobuf/io/coded_stream_unittest.cc'; then $(CYGPATH_W) 'google/protobuf/io/coded_stream_unittest.cc'; else $(CYGPATH_W) '$(srcdir)/google/protobuf/io/coded_stream_unittest.cc'; fi` protobuf_test-printer_unittest.o: google/protobuf/io/printer_unittest.cc @am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(protobuf_test_CPPFLAGS) $(CPPFLAGS) $(protobuf_test_CXXFLAGS) $(CXXFLAGS) -MT protobuf_test-printer_unittest.o -MD -MP -MF $(DEPDIR)/protobuf_test-printer_unittest.Tpo -c -o protobuf_test-printer_unittest.o `test -f 'google/protobuf/io/printer_unittest.cc' || echo '$(srcdir)/'`google/protobuf/io/printer_unittest.cc -@am__fastdepCXX_TRUE@ mv -f $(DEPDIR)/protobuf_test-printer_unittest.Tpo $(DEPDIR)/protobuf_test-printer_unittest.Po +@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/protobuf_test-printer_unittest.Tpo $(DEPDIR)/protobuf_test-printer_unittest.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='google/protobuf/io/printer_unittest.cc' object='protobuf_test-printer_unittest.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(protobuf_test_CPPFLAGS) $(CPPFLAGS) $(protobuf_test_CXXFLAGS) $(CXXFLAGS) -c -o protobuf_test-printer_unittest.o `test -f 'google/protobuf/io/printer_unittest.cc' || echo '$(srcdir)/'`google/protobuf/io/printer_unittest.cc protobuf_test-printer_unittest.obj: google/protobuf/io/printer_unittest.cc @am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(protobuf_test_CPPFLAGS) $(CPPFLAGS) $(protobuf_test_CXXFLAGS) $(CXXFLAGS) -MT protobuf_test-printer_unittest.obj -MD -MP -MF $(DEPDIR)/protobuf_test-printer_unittest.Tpo -c -o protobuf_test-printer_unittest.obj `if test -f 'google/protobuf/io/printer_unittest.cc'; then $(CYGPATH_W) 'google/protobuf/io/printer_unittest.cc'; else $(CYGPATH_W) '$(srcdir)/google/protobuf/io/printer_unittest.cc'; fi` -@am__fastdepCXX_TRUE@ mv -f $(DEPDIR)/protobuf_test-printer_unittest.Tpo $(DEPDIR)/protobuf_test-printer_unittest.Po +@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/protobuf_test-printer_unittest.Tpo $(DEPDIR)/protobuf_test-printer_unittest.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='google/protobuf/io/printer_unittest.cc' object='protobuf_test-printer_unittest.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(protobuf_test_CPPFLAGS) $(CPPFLAGS) $(protobuf_test_CXXFLAGS) $(CXXFLAGS) -c -o protobuf_test-printer_unittest.obj `if test -f 'google/protobuf/io/printer_unittest.cc'; then $(CYGPATH_W) 'google/protobuf/io/printer_unittest.cc'; else $(CYGPATH_W) '$(srcdir)/google/protobuf/io/printer_unittest.cc'; fi` protobuf_test-tokenizer_unittest.o: google/protobuf/io/tokenizer_unittest.cc @am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(protobuf_test_CPPFLAGS) $(CPPFLAGS) $(protobuf_test_CXXFLAGS) $(CXXFLAGS) -MT protobuf_test-tokenizer_unittest.o -MD -MP -MF $(DEPDIR)/protobuf_test-tokenizer_unittest.Tpo -c -o protobuf_test-tokenizer_unittest.o `test -f 'google/protobuf/io/tokenizer_unittest.cc' || echo '$(srcdir)/'`google/protobuf/io/tokenizer_unittest.cc -@am__fastdepCXX_TRUE@ mv -f $(DEPDIR)/protobuf_test-tokenizer_unittest.Tpo $(DEPDIR)/protobuf_test-tokenizer_unittest.Po +@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/protobuf_test-tokenizer_unittest.Tpo $(DEPDIR)/protobuf_test-tokenizer_unittest.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='google/protobuf/io/tokenizer_unittest.cc' object='protobuf_test-tokenizer_unittest.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(protobuf_test_CPPFLAGS) $(CPPFLAGS) $(protobuf_test_CXXFLAGS) $(CXXFLAGS) -c -o protobuf_test-tokenizer_unittest.o `test -f 'google/protobuf/io/tokenizer_unittest.cc' || echo '$(srcdir)/'`google/protobuf/io/tokenizer_unittest.cc protobuf_test-tokenizer_unittest.obj: google/protobuf/io/tokenizer_unittest.cc @am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(protobuf_test_CPPFLAGS) $(CPPFLAGS) $(protobuf_test_CXXFLAGS) $(CXXFLAGS) -MT protobuf_test-tokenizer_unittest.obj -MD -MP -MF $(DEPDIR)/protobuf_test-tokenizer_unittest.Tpo -c -o protobuf_test-tokenizer_unittest.obj `if test -f 'google/protobuf/io/tokenizer_unittest.cc'; then $(CYGPATH_W) 'google/protobuf/io/tokenizer_unittest.cc'; else $(CYGPATH_W) '$(srcdir)/google/protobuf/io/tokenizer_unittest.cc'; fi` -@am__fastdepCXX_TRUE@ mv -f $(DEPDIR)/protobuf_test-tokenizer_unittest.Tpo $(DEPDIR)/protobuf_test-tokenizer_unittest.Po +@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/protobuf_test-tokenizer_unittest.Tpo $(DEPDIR)/protobuf_test-tokenizer_unittest.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='google/protobuf/io/tokenizer_unittest.cc' object='protobuf_test-tokenizer_unittest.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(protobuf_test_CPPFLAGS) $(CPPFLAGS) $(protobuf_test_CXXFLAGS) $(CXXFLAGS) -c -o protobuf_test-tokenizer_unittest.obj `if test -f 'google/protobuf/io/tokenizer_unittest.cc'; then $(CYGPATH_W) 'google/protobuf/io/tokenizer_unittest.cc'; else $(CYGPATH_W) '$(srcdir)/google/protobuf/io/tokenizer_unittest.cc'; fi` protobuf_test-zero_copy_stream_unittest.o: google/protobuf/io/zero_copy_stream_unittest.cc @am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(protobuf_test_CPPFLAGS) $(CPPFLAGS) $(protobuf_test_CXXFLAGS) $(CXXFLAGS) -MT protobuf_test-zero_copy_stream_unittest.o -MD -MP -MF $(DEPDIR)/protobuf_test-zero_copy_stream_unittest.Tpo -c -o protobuf_test-zero_copy_stream_unittest.o `test -f 'google/protobuf/io/zero_copy_stream_unittest.cc' || echo '$(srcdir)/'`google/protobuf/io/zero_copy_stream_unittest.cc -@am__fastdepCXX_TRUE@ mv -f $(DEPDIR)/protobuf_test-zero_copy_stream_unittest.Tpo $(DEPDIR)/protobuf_test-zero_copy_stream_unittest.Po +@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/protobuf_test-zero_copy_stream_unittest.Tpo $(DEPDIR)/protobuf_test-zero_copy_stream_unittest.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='google/protobuf/io/zero_copy_stream_unittest.cc' object='protobuf_test-zero_copy_stream_unittest.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(protobuf_test_CPPFLAGS) $(CPPFLAGS) $(protobuf_test_CXXFLAGS) $(CXXFLAGS) -c -o protobuf_test-zero_copy_stream_unittest.o `test -f 'google/protobuf/io/zero_copy_stream_unittest.cc' || echo '$(srcdir)/'`google/protobuf/io/zero_copy_stream_unittest.cc protobuf_test-zero_copy_stream_unittest.obj: google/protobuf/io/zero_copy_stream_unittest.cc @am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(protobuf_test_CPPFLAGS) $(CPPFLAGS) $(protobuf_test_CXXFLAGS) $(CXXFLAGS) -MT protobuf_test-zero_copy_stream_unittest.obj -MD -MP -MF $(DEPDIR)/protobuf_test-zero_copy_stream_unittest.Tpo -c -o protobuf_test-zero_copy_stream_unittest.obj `if test -f 'google/protobuf/io/zero_copy_stream_unittest.cc'; then $(CYGPATH_W) 'google/protobuf/io/zero_copy_stream_unittest.cc'; else $(CYGPATH_W) '$(srcdir)/google/protobuf/io/zero_copy_stream_unittest.cc'; fi` -@am__fastdepCXX_TRUE@ mv -f $(DEPDIR)/protobuf_test-zero_copy_stream_unittest.Tpo $(DEPDIR)/protobuf_test-zero_copy_stream_unittest.Po +@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/protobuf_test-zero_copy_stream_unittest.Tpo $(DEPDIR)/protobuf_test-zero_copy_stream_unittest.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='google/protobuf/io/zero_copy_stream_unittest.cc' object='protobuf_test-zero_copy_stream_unittest.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(protobuf_test_CPPFLAGS) $(CPPFLAGS) $(protobuf_test_CXXFLAGS) $(CXXFLAGS) -c -o protobuf_test-zero_copy_stream_unittest.obj `if test -f 'google/protobuf/io/zero_copy_stream_unittest.cc'; then $(CYGPATH_W) 'google/protobuf/io/zero_copy_stream_unittest.cc'; else $(CYGPATH_W) '$(srcdir)/google/protobuf/io/zero_copy_stream_unittest.cc'; fi` protobuf_test-command_line_interface_unittest.o: google/protobuf/compiler/command_line_interface_unittest.cc @am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(protobuf_test_CPPFLAGS) $(CPPFLAGS) $(protobuf_test_CXXFLAGS) $(CXXFLAGS) -MT protobuf_test-command_line_interface_unittest.o -MD -MP -MF $(DEPDIR)/protobuf_test-command_line_interface_unittest.Tpo -c -o protobuf_test-command_line_interface_unittest.o `test -f 'google/protobuf/compiler/command_line_interface_unittest.cc' || echo '$(srcdir)/'`google/protobuf/compiler/command_line_interface_unittest.cc -@am__fastdepCXX_TRUE@ mv -f $(DEPDIR)/protobuf_test-command_line_interface_unittest.Tpo $(DEPDIR)/protobuf_test-command_line_interface_unittest.Po +@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/protobuf_test-command_line_interface_unittest.Tpo $(DEPDIR)/protobuf_test-command_line_interface_unittest.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='google/protobuf/compiler/command_line_interface_unittest.cc' object='protobuf_test-command_line_interface_unittest.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(protobuf_test_CPPFLAGS) $(CPPFLAGS) $(protobuf_test_CXXFLAGS) $(CXXFLAGS) -c -o protobuf_test-command_line_interface_unittest.o `test -f 'google/protobuf/compiler/command_line_interface_unittest.cc' || echo '$(srcdir)/'`google/protobuf/compiler/command_line_interface_unittest.cc protobuf_test-command_line_interface_unittest.obj: google/protobuf/compiler/command_line_interface_unittest.cc @am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(protobuf_test_CPPFLAGS) $(CPPFLAGS) $(protobuf_test_CXXFLAGS) $(CXXFLAGS) -MT protobuf_test-command_line_interface_unittest.obj -MD -MP -MF $(DEPDIR)/protobuf_test-command_line_interface_unittest.Tpo -c -o protobuf_test-command_line_interface_unittest.obj `if test -f 'google/protobuf/compiler/command_line_interface_unittest.cc'; then $(CYGPATH_W) 'google/protobuf/compiler/command_line_interface_unittest.cc'; else $(CYGPATH_W) '$(srcdir)/google/protobuf/compiler/command_line_interface_unittest.cc'; fi` -@am__fastdepCXX_TRUE@ mv -f $(DEPDIR)/protobuf_test-command_line_interface_unittest.Tpo $(DEPDIR)/protobuf_test-command_line_interface_unittest.Po +@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/protobuf_test-command_line_interface_unittest.Tpo $(DEPDIR)/protobuf_test-command_line_interface_unittest.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='google/protobuf/compiler/command_line_interface_unittest.cc' object='protobuf_test-command_line_interface_unittest.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(protobuf_test_CPPFLAGS) $(CPPFLAGS) $(protobuf_test_CXXFLAGS) $(CXXFLAGS) -c -o protobuf_test-command_line_interface_unittest.obj `if test -f 'google/protobuf/compiler/command_line_interface_unittest.cc'; then $(CYGPATH_W) 'google/protobuf/compiler/command_line_interface_unittest.cc'; else $(CYGPATH_W) '$(srcdir)/google/protobuf/compiler/command_line_interface_unittest.cc'; fi` protobuf_test-importer_unittest.o: google/protobuf/compiler/importer_unittest.cc @am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(protobuf_test_CPPFLAGS) $(CPPFLAGS) $(protobuf_test_CXXFLAGS) $(CXXFLAGS) -MT protobuf_test-importer_unittest.o -MD -MP -MF $(DEPDIR)/protobuf_test-importer_unittest.Tpo -c -o protobuf_test-importer_unittest.o `test -f 'google/protobuf/compiler/importer_unittest.cc' || echo '$(srcdir)/'`google/protobuf/compiler/importer_unittest.cc -@am__fastdepCXX_TRUE@ mv -f $(DEPDIR)/protobuf_test-importer_unittest.Tpo $(DEPDIR)/protobuf_test-importer_unittest.Po +@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/protobuf_test-importer_unittest.Tpo $(DEPDIR)/protobuf_test-importer_unittest.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='google/protobuf/compiler/importer_unittest.cc' object='protobuf_test-importer_unittest.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(protobuf_test_CPPFLAGS) $(CPPFLAGS) $(protobuf_test_CXXFLAGS) $(CXXFLAGS) -c -o protobuf_test-importer_unittest.o `test -f 'google/protobuf/compiler/importer_unittest.cc' || echo '$(srcdir)/'`google/protobuf/compiler/importer_unittest.cc protobuf_test-importer_unittest.obj: google/protobuf/compiler/importer_unittest.cc @am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(protobuf_test_CPPFLAGS) $(CPPFLAGS) $(protobuf_test_CXXFLAGS) $(CXXFLAGS) -MT protobuf_test-importer_unittest.obj -MD -MP -MF $(DEPDIR)/protobuf_test-importer_unittest.Tpo -c -o protobuf_test-importer_unittest.obj `if test -f 'google/protobuf/compiler/importer_unittest.cc'; then $(CYGPATH_W) 'google/protobuf/compiler/importer_unittest.cc'; else $(CYGPATH_W) '$(srcdir)/google/protobuf/compiler/importer_unittest.cc'; fi` -@am__fastdepCXX_TRUE@ mv -f $(DEPDIR)/protobuf_test-importer_unittest.Tpo $(DEPDIR)/protobuf_test-importer_unittest.Po +@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/protobuf_test-importer_unittest.Tpo $(DEPDIR)/protobuf_test-importer_unittest.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='google/protobuf/compiler/importer_unittest.cc' object='protobuf_test-importer_unittest.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(protobuf_test_CPPFLAGS) $(CPPFLAGS) $(protobuf_test_CXXFLAGS) $(CXXFLAGS) -c -o protobuf_test-importer_unittest.obj `if test -f 'google/protobuf/compiler/importer_unittest.cc'; then $(CYGPATH_W) 'google/protobuf/compiler/importer_unittest.cc'; else $(CYGPATH_W) '$(srcdir)/google/protobuf/compiler/importer_unittest.cc'; fi` protobuf_test-mock_code_generator.o: google/protobuf/compiler/mock_code_generator.cc @am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(protobuf_test_CPPFLAGS) $(CPPFLAGS) $(protobuf_test_CXXFLAGS) $(CXXFLAGS) -MT protobuf_test-mock_code_generator.o -MD -MP -MF $(DEPDIR)/protobuf_test-mock_code_generator.Tpo -c -o protobuf_test-mock_code_generator.o `test -f 'google/protobuf/compiler/mock_code_generator.cc' || echo '$(srcdir)/'`google/protobuf/compiler/mock_code_generator.cc -@am__fastdepCXX_TRUE@ mv -f $(DEPDIR)/protobuf_test-mock_code_generator.Tpo $(DEPDIR)/protobuf_test-mock_code_generator.Po +@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/protobuf_test-mock_code_generator.Tpo $(DEPDIR)/protobuf_test-mock_code_generator.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='google/protobuf/compiler/mock_code_generator.cc' object='protobuf_test-mock_code_generator.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(protobuf_test_CPPFLAGS) $(CPPFLAGS) $(protobuf_test_CXXFLAGS) $(CXXFLAGS) -c -o protobuf_test-mock_code_generator.o `test -f 'google/protobuf/compiler/mock_code_generator.cc' || echo '$(srcdir)/'`google/protobuf/compiler/mock_code_generator.cc protobuf_test-mock_code_generator.obj: google/protobuf/compiler/mock_code_generator.cc @am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(protobuf_test_CPPFLAGS) $(CPPFLAGS) $(protobuf_test_CXXFLAGS) $(CXXFLAGS) -MT protobuf_test-mock_code_generator.obj -MD -MP -MF $(DEPDIR)/protobuf_test-mock_code_generator.Tpo -c -o protobuf_test-mock_code_generator.obj `if test -f 'google/protobuf/compiler/mock_code_generator.cc'; then $(CYGPATH_W) 'google/protobuf/compiler/mock_code_generator.cc'; else $(CYGPATH_W) '$(srcdir)/google/protobuf/compiler/mock_code_generator.cc'; fi` -@am__fastdepCXX_TRUE@ mv -f $(DEPDIR)/protobuf_test-mock_code_generator.Tpo $(DEPDIR)/protobuf_test-mock_code_generator.Po +@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/protobuf_test-mock_code_generator.Tpo $(DEPDIR)/protobuf_test-mock_code_generator.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='google/protobuf/compiler/mock_code_generator.cc' object='protobuf_test-mock_code_generator.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(protobuf_test_CPPFLAGS) $(CPPFLAGS) $(protobuf_test_CXXFLAGS) $(CXXFLAGS) -c -o protobuf_test-mock_code_generator.obj `if test -f 'google/protobuf/compiler/mock_code_generator.cc'; then $(CYGPATH_W) 'google/protobuf/compiler/mock_code_generator.cc'; else $(CYGPATH_W) '$(srcdir)/google/protobuf/compiler/mock_code_generator.cc'; fi` protobuf_test-parser_unittest.o: google/protobuf/compiler/parser_unittest.cc @am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(protobuf_test_CPPFLAGS) $(CPPFLAGS) $(protobuf_test_CXXFLAGS) $(CXXFLAGS) -MT protobuf_test-parser_unittest.o -MD -MP -MF $(DEPDIR)/protobuf_test-parser_unittest.Tpo -c -o protobuf_test-parser_unittest.o `test -f 'google/protobuf/compiler/parser_unittest.cc' || echo '$(srcdir)/'`google/protobuf/compiler/parser_unittest.cc -@am__fastdepCXX_TRUE@ mv -f $(DEPDIR)/protobuf_test-parser_unittest.Tpo $(DEPDIR)/protobuf_test-parser_unittest.Po +@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/protobuf_test-parser_unittest.Tpo $(DEPDIR)/protobuf_test-parser_unittest.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='google/protobuf/compiler/parser_unittest.cc' object='protobuf_test-parser_unittest.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(protobuf_test_CPPFLAGS) $(CPPFLAGS) $(protobuf_test_CXXFLAGS) $(CXXFLAGS) -c -o protobuf_test-parser_unittest.o `test -f 'google/protobuf/compiler/parser_unittest.cc' || echo '$(srcdir)/'`google/protobuf/compiler/parser_unittest.cc protobuf_test-parser_unittest.obj: google/protobuf/compiler/parser_unittest.cc @am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(protobuf_test_CPPFLAGS) $(CPPFLAGS) $(protobuf_test_CXXFLAGS) $(CXXFLAGS) -MT protobuf_test-parser_unittest.obj -MD -MP -MF $(DEPDIR)/protobuf_test-parser_unittest.Tpo -c -o protobuf_test-parser_unittest.obj `if test -f 'google/protobuf/compiler/parser_unittest.cc'; then $(CYGPATH_W) 'google/protobuf/compiler/parser_unittest.cc'; else $(CYGPATH_W) '$(srcdir)/google/protobuf/compiler/parser_unittest.cc'; fi` -@am__fastdepCXX_TRUE@ mv -f $(DEPDIR)/protobuf_test-parser_unittest.Tpo $(DEPDIR)/protobuf_test-parser_unittest.Po +@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/protobuf_test-parser_unittest.Tpo $(DEPDIR)/protobuf_test-parser_unittest.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='google/protobuf/compiler/parser_unittest.cc' object='protobuf_test-parser_unittest.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(protobuf_test_CPPFLAGS) $(CPPFLAGS) $(protobuf_test_CXXFLAGS) $(CXXFLAGS) -c -o protobuf_test-parser_unittest.obj `if test -f 'google/protobuf/compiler/parser_unittest.cc'; then $(CYGPATH_W) 'google/protobuf/compiler/parser_unittest.cc'; else $(CYGPATH_W) '$(srcdir)/google/protobuf/compiler/parser_unittest.cc'; fi` protobuf_test-cpp_bootstrap_unittest.o: google/protobuf/compiler/cpp/cpp_bootstrap_unittest.cc @am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(protobuf_test_CPPFLAGS) $(CPPFLAGS) $(protobuf_test_CXXFLAGS) $(CXXFLAGS) -MT protobuf_test-cpp_bootstrap_unittest.o -MD -MP -MF $(DEPDIR)/protobuf_test-cpp_bootstrap_unittest.Tpo -c -o protobuf_test-cpp_bootstrap_unittest.o `test -f 'google/protobuf/compiler/cpp/cpp_bootstrap_unittest.cc' || echo '$(srcdir)/'`google/protobuf/compiler/cpp/cpp_bootstrap_unittest.cc -@am__fastdepCXX_TRUE@ mv -f $(DEPDIR)/protobuf_test-cpp_bootstrap_unittest.Tpo $(DEPDIR)/protobuf_test-cpp_bootstrap_unittest.Po +@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/protobuf_test-cpp_bootstrap_unittest.Tpo $(DEPDIR)/protobuf_test-cpp_bootstrap_unittest.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='google/protobuf/compiler/cpp/cpp_bootstrap_unittest.cc' object='protobuf_test-cpp_bootstrap_unittest.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(protobuf_test_CPPFLAGS) $(CPPFLAGS) $(protobuf_test_CXXFLAGS) $(CXXFLAGS) -c -o protobuf_test-cpp_bootstrap_unittest.o `test -f 'google/protobuf/compiler/cpp/cpp_bootstrap_unittest.cc' || echo '$(srcdir)/'`google/protobuf/compiler/cpp/cpp_bootstrap_unittest.cc protobuf_test-cpp_bootstrap_unittest.obj: google/protobuf/compiler/cpp/cpp_bootstrap_unittest.cc @am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(protobuf_test_CPPFLAGS) $(CPPFLAGS) $(protobuf_test_CXXFLAGS) $(CXXFLAGS) -MT protobuf_test-cpp_bootstrap_unittest.obj -MD -MP -MF $(DEPDIR)/protobuf_test-cpp_bootstrap_unittest.Tpo -c -o protobuf_test-cpp_bootstrap_unittest.obj `if test -f 'google/protobuf/compiler/cpp/cpp_bootstrap_unittest.cc'; then $(CYGPATH_W) 'google/protobuf/compiler/cpp/cpp_bootstrap_unittest.cc'; else $(CYGPATH_W) '$(srcdir)/google/protobuf/compiler/cpp/cpp_bootstrap_unittest.cc'; fi` -@am__fastdepCXX_TRUE@ mv -f $(DEPDIR)/protobuf_test-cpp_bootstrap_unittest.Tpo $(DEPDIR)/protobuf_test-cpp_bootstrap_unittest.Po +@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/protobuf_test-cpp_bootstrap_unittest.Tpo $(DEPDIR)/protobuf_test-cpp_bootstrap_unittest.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='google/protobuf/compiler/cpp/cpp_bootstrap_unittest.cc' object='protobuf_test-cpp_bootstrap_unittest.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(protobuf_test_CPPFLAGS) $(CPPFLAGS) $(protobuf_test_CXXFLAGS) $(CXXFLAGS) -c -o protobuf_test-cpp_bootstrap_unittest.obj `if test -f 'google/protobuf/compiler/cpp/cpp_bootstrap_unittest.cc'; then $(CYGPATH_W) 'google/protobuf/compiler/cpp/cpp_bootstrap_unittest.cc'; else $(CYGPATH_W) '$(srcdir)/google/protobuf/compiler/cpp/cpp_bootstrap_unittest.cc'; fi` protobuf_test-cpp_unittest.o: google/protobuf/compiler/cpp/cpp_unittest.cc @am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(protobuf_test_CPPFLAGS) $(CPPFLAGS) $(protobuf_test_CXXFLAGS) $(CXXFLAGS) -MT protobuf_test-cpp_unittest.o -MD -MP -MF $(DEPDIR)/protobuf_test-cpp_unittest.Tpo -c -o protobuf_test-cpp_unittest.o `test -f 'google/protobuf/compiler/cpp/cpp_unittest.cc' || echo '$(srcdir)/'`google/protobuf/compiler/cpp/cpp_unittest.cc -@am__fastdepCXX_TRUE@ mv -f $(DEPDIR)/protobuf_test-cpp_unittest.Tpo $(DEPDIR)/protobuf_test-cpp_unittest.Po +@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/protobuf_test-cpp_unittest.Tpo $(DEPDIR)/protobuf_test-cpp_unittest.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='google/protobuf/compiler/cpp/cpp_unittest.cc' object='protobuf_test-cpp_unittest.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(protobuf_test_CPPFLAGS) $(CPPFLAGS) $(protobuf_test_CXXFLAGS) $(CXXFLAGS) -c -o protobuf_test-cpp_unittest.o `test -f 'google/protobuf/compiler/cpp/cpp_unittest.cc' || echo '$(srcdir)/'`google/protobuf/compiler/cpp/cpp_unittest.cc protobuf_test-cpp_unittest.obj: google/protobuf/compiler/cpp/cpp_unittest.cc @am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(protobuf_test_CPPFLAGS) $(CPPFLAGS) $(protobuf_test_CXXFLAGS) $(CXXFLAGS) -MT protobuf_test-cpp_unittest.obj -MD -MP -MF $(DEPDIR)/protobuf_test-cpp_unittest.Tpo -c -o protobuf_test-cpp_unittest.obj `if test -f 'google/protobuf/compiler/cpp/cpp_unittest.cc'; then $(CYGPATH_W) 'google/protobuf/compiler/cpp/cpp_unittest.cc'; else $(CYGPATH_W) '$(srcdir)/google/protobuf/compiler/cpp/cpp_unittest.cc'; fi` -@am__fastdepCXX_TRUE@ mv -f $(DEPDIR)/protobuf_test-cpp_unittest.Tpo $(DEPDIR)/protobuf_test-cpp_unittest.Po +@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/protobuf_test-cpp_unittest.Tpo $(DEPDIR)/protobuf_test-cpp_unittest.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='google/protobuf/compiler/cpp/cpp_unittest.cc' object='protobuf_test-cpp_unittest.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(protobuf_test_CPPFLAGS) $(CPPFLAGS) $(protobuf_test_CXXFLAGS) $(CXXFLAGS) -c -o protobuf_test-cpp_unittest.obj `if test -f 'google/protobuf/compiler/cpp/cpp_unittest.cc'; then $(CYGPATH_W) 'google/protobuf/compiler/cpp/cpp_unittest.cc'; else $(CYGPATH_W) '$(srcdir)/google/protobuf/compiler/cpp/cpp_unittest.cc'; fi` protobuf_test-cpp_plugin_unittest.o: google/protobuf/compiler/cpp/cpp_plugin_unittest.cc @am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(protobuf_test_CPPFLAGS) $(CPPFLAGS) $(protobuf_test_CXXFLAGS) $(CXXFLAGS) -MT protobuf_test-cpp_plugin_unittest.o -MD -MP -MF $(DEPDIR)/protobuf_test-cpp_plugin_unittest.Tpo -c -o protobuf_test-cpp_plugin_unittest.o `test -f 'google/protobuf/compiler/cpp/cpp_plugin_unittest.cc' || echo '$(srcdir)/'`google/protobuf/compiler/cpp/cpp_plugin_unittest.cc -@am__fastdepCXX_TRUE@ mv -f $(DEPDIR)/protobuf_test-cpp_plugin_unittest.Tpo $(DEPDIR)/protobuf_test-cpp_plugin_unittest.Po +@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/protobuf_test-cpp_plugin_unittest.Tpo $(DEPDIR)/protobuf_test-cpp_plugin_unittest.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='google/protobuf/compiler/cpp/cpp_plugin_unittest.cc' object='protobuf_test-cpp_plugin_unittest.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(protobuf_test_CPPFLAGS) $(CPPFLAGS) $(protobuf_test_CXXFLAGS) $(CXXFLAGS) -c -o protobuf_test-cpp_plugin_unittest.o `test -f 'google/protobuf/compiler/cpp/cpp_plugin_unittest.cc' || echo '$(srcdir)/'`google/protobuf/compiler/cpp/cpp_plugin_unittest.cc protobuf_test-cpp_plugin_unittest.obj: google/protobuf/compiler/cpp/cpp_plugin_unittest.cc @am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(protobuf_test_CPPFLAGS) $(CPPFLAGS) $(protobuf_test_CXXFLAGS) $(CXXFLAGS) -MT protobuf_test-cpp_plugin_unittest.obj -MD -MP -MF $(DEPDIR)/protobuf_test-cpp_plugin_unittest.Tpo -c -o protobuf_test-cpp_plugin_unittest.obj `if test -f 'google/protobuf/compiler/cpp/cpp_plugin_unittest.cc'; then $(CYGPATH_W) 'google/protobuf/compiler/cpp/cpp_plugin_unittest.cc'; else $(CYGPATH_W) '$(srcdir)/google/protobuf/compiler/cpp/cpp_plugin_unittest.cc'; fi` -@am__fastdepCXX_TRUE@ mv -f $(DEPDIR)/protobuf_test-cpp_plugin_unittest.Tpo $(DEPDIR)/protobuf_test-cpp_plugin_unittest.Po +@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/protobuf_test-cpp_plugin_unittest.Tpo $(DEPDIR)/protobuf_test-cpp_plugin_unittest.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='google/protobuf/compiler/cpp/cpp_plugin_unittest.cc' object='protobuf_test-cpp_plugin_unittest.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(protobuf_test_CPPFLAGS) $(CPPFLAGS) $(protobuf_test_CXXFLAGS) $(CXXFLAGS) -c -o protobuf_test-cpp_plugin_unittest.obj `if test -f 'google/protobuf/compiler/cpp/cpp_plugin_unittest.cc'; then $(CYGPATH_W) 'google/protobuf/compiler/cpp/cpp_plugin_unittest.cc'; else $(CYGPATH_W) '$(srcdir)/google/protobuf/compiler/cpp/cpp_plugin_unittest.cc'; fi` protobuf_test-java_plugin_unittest.o: google/protobuf/compiler/java/java_plugin_unittest.cc @am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(protobuf_test_CPPFLAGS) $(CPPFLAGS) $(protobuf_test_CXXFLAGS) $(CXXFLAGS) -MT protobuf_test-java_plugin_unittest.o -MD -MP -MF $(DEPDIR)/protobuf_test-java_plugin_unittest.Tpo -c -o protobuf_test-java_plugin_unittest.o `test -f 'google/protobuf/compiler/java/java_plugin_unittest.cc' || echo '$(srcdir)/'`google/protobuf/compiler/java/java_plugin_unittest.cc -@am__fastdepCXX_TRUE@ mv -f $(DEPDIR)/protobuf_test-java_plugin_unittest.Tpo $(DEPDIR)/protobuf_test-java_plugin_unittest.Po +@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/protobuf_test-java_plugin_unittest.Tpo $(DEPDIR)/protobuf_test-java_plugin_unittest.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='google/protobuf/compiler/java/java_plugin_unittest.cc' object='protobuf_test-java_plugin_unittest.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(protobuf_test_CPPFLAGS) $(CPPFLAGS) $(protobuf_test_CXXFLAGS) $(CXXFLAGS) -c -o protobuf_test-java_plugin_unittest.o `test -f 'google/protobuf/compiler/java/java_plugin_unittest.cc' || echo '$(srcdir)/'`google/protobuf/compiler/java/java_plugin_unittest.cc protobuf_test-java_plugin_unittest.obj: google/protobuf/compiler/java/java_plugin_unittest.cc @am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(protobuf_test_CPPFLAGS) $(CPPFLAGS) $(protobuf_test_CXXFLAGS) $(CXXFLAGS) -MT protobuf_test-java_plugin_unittest.obj -MD -MP -MF $(DEPDIR)/protobuf_test-java_plugin_unittest.Tpo -c -o protobuf_test-java_plugin_unittest.obj `if test -f 'google/protobuf/compiler/java/java_plugin_unittest.cc'; then $(CYGPATH_W) 'google/protobuf/compiler/java/java_plugin_unittest.cc'; else $(CYGPATH_W) '$(srcdir)/google/protobuf/compiler/java/java_plugin_unittest.cc'; fi` -@am__fastdepCXX_TRUE@ mv -f $(DEPDIR)/protobuf_test-java_plugin_unittest.Tpo $(DEPDIR)/protobuf_test-java_plugin_unittest.Po +@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/protobuf_test-java_plugin_unittest.Tpo $(DEPDIR)/protobuf_test-java_plugin_unittest.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='google/protobuf/compiler/java/java_plugin_unittest.cc' object='protobuf_test-java_plugin_unittest.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(protobuf_test_CPPFLAGS) $(CPPFLAGS) $(protobuf_test_CXXFLAGS) $(CXXFLAGS) -c -o protobuf_test-java_plugin_unittest.obj `if test -f 'google/protobuf/compiler/java/java_plugin_unittest.cc'; then $(CYGPATH_W) 'google/protobuf/compiler/java/java_plugin_unittest.cc'; else $(CYGPATH_W) '$(srcdir)/google/protobuf/compiler/java/java_plugin_unittest.cc'; fi` +protobuf_test-java_doc_comment_unittest.o: google/protobuf/compiler/java/java_doc_comment_unittest.cc +@am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(protobuf_test_CPPFLAGS) $(CPPFLAGS) $(protobuf_test_CXXFLAGS) $(CXXFLAGS) -MT protobuf_test-java_doc_comment_unittest.o -MD -MP -MF $(DEPDIR)/protobuf_test-java_doc_comment_unittest.Tpo -c -o protobuf_test-java_doc_comment_unittest.o `test -f 'google/protobuf/compiler/java/java_doc_comment_unittest.cc' || echo '$(srcdir)/'`google/protobuf/compiler/java/java_doc_comment_unittest.cc +@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/protobuf_test-java_doc_comment_unittest.Tpo $(DEPDIR)/protobuf_test-java_doc_comment_unittest.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='google/protobuf/compiler/java/java_doc_comment_unittest.cc' object='protobuf_test-java_doc_comment_unittest.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(protobuf_test_CPPFLAGS) $(CPPFLAGS) $(protobuf_test_CXXFLAGS) $(CXXFLAGS) -c -o protobuf_test-java_doc_comment_unittest.o `test -f 'google/protobuf/compiler/java/java_doc_comment_unittest.cc' || echo '$(srcdir)/'`google/protobuf/compiler/java/java_doc_comment_unittest.cc + +protobuf_test-java_doc_comment_unittest.obj: google/protobuf/compiler/java/java_doc_comment_unittest.cc +@am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(protobuf_test_CPPFLAGS) $(CPPFLAGS) $(protobuf_test_CXXFLAGS) $(CXXFLAGS) -MT protobuf_test-java_doc_comment_unittest.obj -MD -MP -MF $(DEPDIR)/protobuf_test-java_doc_comment_unittest.Tpo -c -o protobuf_test-java_doc_comment_unittest.obj `if test -f 'google/protobuf/compiler/java/java_doc_comment_unittest.cc'; then $(CYGPATH_W) 'google/protobuf/compiler/java/java_doc_comment_unittest.cc'; else $(CYGPATH_W) '$(srcdir)/google/protobuf/compiler/java/java_doc_comment_unittest.cc'; fi` +@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/protobuf_test-java_doc_comment_unittest.Tpo $(DEPDIR)/protobuf_test-java_doc_comment_unittest.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='google/protobuf/compiler/java/java_doc_comment_unittest.cc' object='protobuf_test-java_doc_comment_unittest.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(protobuf_test_CPPFLAGS) $(CPPFLAGS) $(protobuf_test_CXXFLAGS) $(CXXFLAGS) -c -o protobuf_test-java_doc_comment_unittest.obj `if test -f 'google/protobuf/compiler/java/java_doc_comment_unittest.cc'; then $(CYGPATH_W) 'google/protobuf/compiler/java/java_doc_comment_unittest.cc'; else $(CYGPATH_W) '$(srcdir)/google/protobuf/compiler/java/java_doc_comment_unittest.cc'; fi` + protobuf_test-python_plugin_unittest.o: google/protobuf/compiler/python/python_plugin_unittest.cc @am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(protobuf_test_CPPFLAGS) $(CPPFLAGS) $(protobuf_test_CXXFLAGS) $(CXXFLAGS) -MT protobuf_test-python_plugin_unittest.o -MD -MP -MF $(DEPDIR)/protobuf_test-python_plugin_unittest.Tpo -c -o protobuf_test-python_plugin_unittest.o `test -f 'google/protobuf/compiler/python/python_plugin_unittest.cc' || echo '$(srcdir)/'`google/protobuf/compiler/python/python_plugin_unittest.cc -@am__fastdepCXX_TRUE@ mv -f $(DEPDIR)/protobuf_test-python_plugin_unittest.Tpo $(DEPDIR)/protobuf_test-python_plugin_unittest.Po +@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/protobuf_test-python_plugin_unittest.Tpo $(DEPDIR)/protobuf_test-python_plugin_unittest.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='google/protobuf/compiler/python/python_plugin_unittest.cc' object='protobuf_test-python_plugin_unittest.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(protobuf_test_CPPFLAGS) $(CPPFLAGS) $(protobuf_test_CXXFLAGS) $(CXXFLAGS) -c -o protobuf_test-python_plugin_unittest.o `test -f 'google/protobuf/compiler/python/python_plugin_unittest.cc' || echo '$(srcdir)/'`google/protobuf/compiler/python/python_plugin_unittest.cc protobuf_test-python_plugin_unittest.obj: google/protobuf/compiler/python/python_plugin_unittest.cc @am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(protobuf_test_CPPFLAGS) $(CPPFLAGS) $(protobuf_test_CXXFLAGS) $(CXXFLAGS) -MT protobuf_test-python_plugin_unittest.obj -MD -MP -MF $(DEPDIR)/protobuf_test-python_plugin_unittest.Tpo -c -o protobuf_test-python_plugin_unittest.obj `if test -f 'google/protobuf/compiler/python/python_plugin_unittest.cc'; then $(CYGPATH_W) 'google/protobuf/compiler/python/python_plugin_unittest.cc'; else $(CYGPATH_W) '$(srcdir)/google/protobuf/compiler/python/python_plugin_unittest.cc'; fi` -@am__fastdepCXX_TRUE@ mv -f $(DEPDIR)/protobuf_test-python_plugin_unittest.Tpo $(DEPDIR)/protobuf_test-python_plugin_unittest.Po +@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/protobuf_test-python_plugin_unittest.Tpo $(DEPDIR)/protobuf_test-python_plugin_unittest.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='google/protobuf/compiler/python/python_plugin_unittest.cc' object='protobuf_test-python_plugin_unittest.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(protobuf_test_CPPFLAGS) $(CPPFLAGS) $(protobuf_test_CXXFLAGS) $(CXXFLAGS) -c -o protobuf_test-python_plugin_unittest.obj `if test -f 'google/protobuf/compiler/python/python_plugin_unittest.cc'; then $(CYGPATH_W) 'google/protobuf/compiler/python/python_plugin_unittest.cc'; else $(CYGPATH_W) '$(srcdir)/google/protobuf/compiler/python/python_plugin_unittest.cc'; fi` protobuf_test-test_util.o: google/protobuf/test_util.cc @am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(protobuf_test_CPPFLAGS) $(CPPFLAGS) $(protobuf_test_CXXFLAGS) $(CXXFLAGS) -MT protobuf_test-test_util.o -MD -MP -MF $(DEPDIR)/protobuf_test-test_util.Tpo -c -o protobuf_test-test_util.o `test -f 'google/protobuf/test_util.cc' || echo '$(srcdir)/'`google/protobuf/test_util.cc -@am__fastdepCXX_TRUE@ mv -f $(DEPDIR)/protobuf_test-test_util.Tpo $(DEPDIR)/protobuf_test-test_util.Po +@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/protobuf_test-test_util.Tpo $(DEPDIR)/protobuf_test-test_util.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='google/protobuf/test_util.cc' object='protobuf_test-test_util.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(protobuf_test_CPPFLAGS) $(CPPFLAGS) $(protobuf_test_CXXFLAGS) $(CXXFLAGS) -c -o protobuf_test-test_util.o `test -f 'google/protobuf/test_util.cc' || echo '$(srcdir)/'`google/protobuf/test_util.cc protobuf_test-test_util.obj: google/protobuf/test_util.cc @am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(protobuf_test_CPPFLAGS) $(CPPFLAGS) $(protobuf_test_CXXFLAGS) $(CXXFLAGS) -MT protobuf_test-test_util.obj -MD -MP -MF $(DEPDIR)/protobuf_test-test_util.Tpo -c -o protobuf_test-test_util.obj `if test -f 'google/protobuf/test_util.cc'; then $(CYGPATH_W) 'google/protobuf/test_util.cc'; else $(CYGPATH_W) '$(srcdir)/google/protobuf/test_util.cc'; fi` -@am__fastdepCXX_TRUE@ mv -f $(DEPDIR)/protobuf_test-test_util.Tpo $(DEPDIR)/protobuf_test-test_util.Po +@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/protobuf_test-test_util.Tpo $(DEPDIR)/protobuf_test-test_util.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='google/protobuf/test_util.cc' object='protobuf_test-test_util.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(protobuf_test_CPPFLAGS) $(CPPFLAGS) $(protobuf_test_CXXFLAGS) $(CXXFLAGS) -c -o protobuf_test-test_util.obj `if test -f 'google/protobuf/test_util.cc'; then $(CYGPATH_W) 'google/protobuf/test_util.cc'; else $(CYGPATH_W) '$(srcdir)/google/protobuf/test_util.cc'; fi` protobuf_test-googletest.o: google/protobuf/testing/googletest.cc @am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(protobuf_test_CPPFLAGS) $(CPPFLAGS) $(protobuf_test_CXXFLAGS) $(CXXFLAGS) -MT protobuf_test-googletest.o -MD -MP -MF $(DEPDIR)/protobuf_test-googletest.Tpo -c -o protobuf_test-googletest.o `test -f 'google/protobuf/testing/googletest.cc' || echo '$(srcdir)/'`google/protobuf/testing/googletest.cc -@am__fastdepCXX_TRUE@ mv -f $(DEPDIR)/protobuf_test-googletest.Tpo $(DEPDIR)/protobuf_test-googletest.Po +@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/protobuf_test-googletest.Tpo $(DEPDIR)/protobuf_test-googletest.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='google/protobuf/testing/googletest.cc' object='protobuf_test-googletest.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(protobuf_test_CPPFLAGS) $(CPPFLAGS) $(protobuf_test_CXXFLAGS) $(CXXFLAGS) -c -o protobuf_test-googletest.o `test -f 'google/protobuf/testing/googletest.cc' || echo '$(srcdir)/'`google/protobuf/testing/googletest.cc protobuf_test-googletest.obj: google/protobuf/testing/googletest.cc @am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(protobuf_test_CPPFLAGS) $(CPPFLAGS) $(protobuf_test_CXXFLAGS) $(CXXFLAGS) -MT protobuf_test-googletest.obj -MD -MP -MF $(DEPDIR)/protobuf_test-googletest.Tpo -c -o protobuf_test-googletest.obj `if test -f 'google/protobuf/testing/googletest.cc'; then $(CYGPATH_W) 'google/protobuf/testing/googletest.cc'; else $(CYGPATH_W) '$(srcdir)/google/protobuf/testing/googletest.cc'; fi` -@am__fastdepCXX_TRUE@ mv -f $(DEPDIR)/protobuf_test-googletest.Tpo $(DEPDIR)/protobuf_test-googletest.Po +@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/protobuf_test-googletest.Tpo $(DEPDIR)/protobuf_test-googletest.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='google/protobuf/testing/googletest.cc' object='protobuf_test-googletest.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(protobuf_test_CPPFLAGS) $(CPPFLAGS) $(protobuf_test_CXXFLAGS) $(CXXFLAGS) -c -o protobuf_test-googletest.obj `if test -f 'google/protobuf/testing/googletest.cc'; then $(CYGPATH_W) 'google/protobuf/testing/googletest.cc'; else $(CYGPATH_W) '$(srcdir)/google/protobuf/testing/googletest.cc'; fi` protobuf_test-file.o: google/protobuf/testing/file.cc @am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(protobuf_test_CPPFLAGS) $(CPPFLAGS) $(protobuf_test_CXXFLAGS) $(CXXFLAGS) -MT protobuf_test-file.o -MD -MP -MF $(DEPDIR)/protobuf_test-file.Tpo -c -o protobuf_test-file.o `test -f 'google/protobuf/testing/file.cc' || echo '$(srcdir)/'`google/protobuf/testing/file.cc -@am__fastdepCXX_TRUE@ mv -f $(DEPDIR)/protobuf_test-file.Tpo $(DEPDIR)/protobuf_test-file.Po +@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/protobuf_test-file.Tpo $(DEPDIR)/protobuf_test-file.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='google/protobuf/testing/file.cc' object='protobuf_test-file.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(protobuf_test_CPPFLAGS) $(CPPFLAGS) $(protobuf_test_CXXFLAGS) $(CXXFLAGS) -c -o protobuf_test-file.o `test -f 'google/protobuf/testing/file.cc' || echo '$(srcdir)/'`google/protobuf/testing/file.cc protobuf_test-file.obj: google/protobuf/testing/file.cc @am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(protobuf_test_CPPFLAGS) $(CPPFLAGS) $(protobuf_test_CXXFLAGS) $(CXXFLAGS) -MT protobuf_test-file.obj -MD -MP -MF $(DEPDIR)/protobuf_test-file.Tpo -c -o protobuf_test-file.obj `if test -f 'google/protobuf/testing/file.cc'; then $(CYGPATH_W) 'google/protobuf/testing/file.cc'; else $(CYGPATH_W) '$(srcdir)/google/protobuf/testing/file.cc'; fi` -@am__fastdepCXX_TRUE@ mv -f $(DEPDIR)/protobuf_test-file.Tpo $(DEPDIR)/protobuf_test-file.Po +@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/protobuf_test-file.Tpo $(DEPDIR)/protobuf_test-file.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='google/protobuf/testing/file.cc' object='protobuf_test-file.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(protobuf_test_CPPFLAGS) $(CPPFLAGS) $(protobuf_test_CXXFLAGS) $(CXXFLAGS) -c -o protobuf_test-file.obj `if test -f 'google/protobuf/testing/file.cc'; then $(CYGPATH_W) 'google/protobuf/testing/file.cc'; else $(CYGPATH_W) '$(srcdir)/google/protobuf/testing/file.cc'; fi` protobuf_test-unittest_lite.pb.o: google/protobuf/unittest_lite.pb.cc @am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(protobuf_test_CPPFLAGS) $(CPPFLAGS) $(protobuf_test_CXXFLAGS) $(CXXFLAGS) -MT protobuf_test-unittest_lite.pb.o -MD -MP -MF $(DEPDIR)/protobuf_test-unittest_lite.pb.Tpo -c -o protobuf_test-unittest_lite.pb.o `test -f 'google/protobuf/unittest_lite.pb.cc' || echo '$(srcdir)/'`google/protobuf/unittest_lite.pb.cc -@am__fastdepCXX_TRUE@ mv -f $(DEPDIR)/protobuf_test-unittest_lite.pb.Tpo $(DEPDIR)/protobuf_test-unittest_lite.pb.Po +@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/protobuf_test-unittest_lite.pb.Tpo $(DEPDIR)/protobuf_test-unittest_lite.pb.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='google/protobuf/unittest_lite.pb.cc' object='protobuf_test-unittest_lite.pb.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(protobuf_test_CPPFLAGS) $(CPPFLAGS) $(protobuf_test_CXXFLAGS) $(CXXFLAGS) -c -o protobuf_test-unittest_lite.pb.o `test -f 'google/protobuf/unittest_lite.pb.cc' || echo '$(srcdir)/'`google/protobuf/unittest_lite.pb.cc protobuf_test-unittest_lite.pb.obj: google/protobuf/unittest_lite.pb.cc @am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(protobuf_test_CPPFLAGS) $(CPPFLAGS) $(protobuf_test_CXXFLAGS) $(CXXFLAGS) -MT protobuf_test-unittest_lite.pb.obj -MD -MP -MF $(DEPDIR)/protobuf_test-unittest_lite.pb.Tpo -c -o protobuf_test-unittest_lite.pb.obj `if test -f 'google/protobuf/unittest_lite.pb.cc'; then $(CYGPATH_W) 'google/protobuf/unittest_lite.pb.cc'; else $(CYGPATH_W) '$(srcdir)/google/protobuf/unittest_lite.pb.cc'; fi` -@am__fastdepCXX_TRUE@ mv -f $(DEPDIR)/protobuf_test-unittest_lite.pb.Tpo $(DEPDIR)/protobuf_test-unittest_lite.pb.Po +@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/protobuf_test-unittest_lite.pb.Tpo $(DEPDIR)/protobuf_test-unittest_lite.pb.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='google/protobuf/unittest_lite.pb.cc' object='protobuf_test-unittest_lite.pb.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(protobuf_test_CPPFLAGS) $(CPPFLAGS) $(protobuf_test_CXXFLAGS) $(CXXFLAGS) -c -o protobuf_test-unittest_lite.pb.obj `if test -f 'google/protobuf/unittest_lite.pb.cc'; then $(CYGPATH_W) 'google/protobuf/unittest_lite.pb.cc'; else $(CYGPATH_W) '$(srcdir)/google/protobuf/unittest_lite.pb.cc'; fi` protobuf_test-unittest_import_lite.pb.o: google/protobuf/unittest_import_lite.pb.cc @am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(protobuf_test_CPPFLAGS) $(CPPFLAGS) $(protobuf_test_CXXFLAGS) $(CXXFLAGS) -MT protobuf_test-unittest_import_lite.pb.o -MD -MP -MF $(DEPDIR)/protobuf_test-unittest_import_lite.pb.Tpo -c -o protobuf_test-unittest_import_lite.pb.o `test -f 'google/protobuf/unittest_import_lite.pb.cc' || echo '$(srcdir)/'`google/protobuf/unittest_import_lite.pb.cc -@am__fastdepCXX_TRUE@ mv -f $(DEPDIR)/protobuf_test-unittest_import_lite.pb.Tpo $(DEPDIR)/protobuf_test-unittest_import_lite.pb.Po +@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/protobuf_test-unittest_import_lite.pb.Tpo $(DEPDIR)/protobuf_test-unittest_import_lite.pb.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='google/protobuf/unittest_import_lite.pb.cc' object='protobuf_test-unittest_import_lite.pb.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(protobuf_test_CPPFLAGS) $(CPPFLAGS) $(protobuf_test_CXXFLAGS) $(CXXFLAGS) -c -o protobuf_test-unittest_import_lite.pb.o `test -f 'google/protobuf/unittest_import_lite.pb.cc' || echo '$(srcdir)/'`google/protobuf/unittest_import_lite.pb.cc protobuf_test-unittest_import_lite.pb.obj: google/protobuf/unittest_import_lite.pb.cc @am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(protobuf_test_CPPFLAGS) $(CPPFLAGS) $(protobuf_test_CXXFLAGS) $(CXXFLAGS) -MT protobuf_test-unittest_import_lite.pb.obj -MD -MP -MF $(DEPDIR)/protobuf_test-unittest_import_lite.pb.Tpo -c -o protobuf_test-unittest_import_lite.pb.obj `if test -f 'google/protobuf/unittest_import_lite.pb.cc'; then $(CYGPATH_W) 'google/protobuf/unittest_import_lite.pb.cc'; else $(CYGPATH_W) '$(srcdir)/google/protobuf/unittest_import_lite.pb.cc'; fi` -@am__fastdepCXX_TRUE@ mv -f $(DEPDIR)/protobuf_test-unittest_import_lite.pb.Tpo $(DEPDIR)/protobuf_test-unittest_import_lite.pb.Po +@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/protobuf_test-unittest_import_lite.pb.Tpo $(DEPDIR)/protobuf_test-unittest_import_lite.pb.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='google/protobuf/unittest_import_lite.pb.cc' object='protobuf_test-unittest_import_lite.pb.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(protobuf_test_CPPFLAGS) $(CPPFLAGS) $(protobuf_test_CXXFLAGS) $(CXXFLAGS) -c -o protobuf_test-unittest_import_lite.pb.obj `if test -f 'google/protobuf/unittest_import_lite.pb.cc'; then $(CYGPATH_W) 'google/protobuf/unittest_import_lite.pb.cc'; else $(CYGPATH_W) '$(srcdir)/google/protobuf/unittest_import_lite.pb.cc'; fi` +protobuf_test-unittest_import_public_lite.pb.o: google/protobuf/unittest_import_public_lite.pb.cc +@am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(protobuf_test_CPPFLAGS) $(CPPFLAGS) $(protobuf_test_CXXFLAGS) $(CXXFLAGS) -MT protobuf_test-unittest_import_public_lite.pb.o -MD -MP -MF $(DEPDIR)/protobuf_test-unittest_import_public_lite.pb.Tpo -c -o protobuf_test-unittest_import_public_lite.pb.o `test -f 'google/protobuf/unittest_import_public_lite.pb.cc' || echo '$(srcdir)/'`google/protobuf/unittest_import_public_lite.pb.cc +@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/protobuf_test-unittest_import_public_lite.pb.Tpo $(DEPDIR)/protobuf_test-unittest_import_public_lite.pb.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='google/protobuf/unittest_import_public_lite.pb.cc' object='protobuf_test-unittest_import_public_lite.pb.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(protobuf_test_CPPFLAGS) $(CPPFLAGS) $(protobuf_test_CXXFLAGS) $(CXXFLAGS) -c -o protobuf_test-unittest_import_public_lite.pb.o `test -f 'google/protobuf/unittest_import_public_lite.pb.cc' || echo '$(srcdir)/'`google/protobuf/unittest_import_public_lite.pb.cc + +protobuf_test-unittest_import_public_lite.pb.obj: google/protobuf/unittest_import_public_lite.pb.cc +@am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(protobuf_test_CPPFLAGS) $(CPPFLAGS) $(protobuf_test_CXXFLAGS) $(CXXFLAGS) -MT protobuf_test-unittest_import_public_lite.pb.obj -MD -MP -MF $(DEPDIR)/protobuf_test-unittest_import_public_lite.pb.Tpo -c -o protobuf_test-unittest_import_public_lite.pb.obj `if test -f 'google/protobuf/unittest_import_public_lite.pb.cc'; then $(CYGPATH_W) 'google/protobuf/unittest_import_public_lite.pb.cc'; else $(CYGPATH_W) '$(srcdir)/google/protobuf/unittest_import_public_lite.pb.cc'; fi` +@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/protobuf_test-unittest_import_public_lite.pb.Tpo $(DEPDIR)/protobuf_test-unittest_import_public_lite.pb.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='google/protobuf/unittest_import_public_lite.pb.cc' object='protobuf_test-unittest_import_public_lite.pb.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(protobuf_test_CPPFLAGS) $(CPPFLAGS) $(protobuf_test_CXXFLAGS) $(CXXFLAGS) -c -o protobuf_test-unittest_import_public_lite.pb.obj `if test -f 'google/protobuf/unittest_import_public_lite.pb.cc'; then $(CYGPATH_W) 'google/protobuf/unittest_import_public_lite.pb.cc'; else $(CYGPATH_W) '$(srcdir)/google/protobuf/unittest_import_public_lite.pb.cc'; fi` + protobuf_test-unittest.pb.o: google/protobuf/unittest.pb.cc @am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(protobuf_test_CPPFLAGS) $(CPPFLAGS) $(protobuf_test_CXXFLAGS) $(CXXFLAGS) -MT protobuf_test-unittest.pb.o -MD -MP -MF $(DEPDIR)/protobuf_test-unittest.pb.Tpo -c -o protobuf_test-unittest.pb.o `test -f 'google/protobuf/unittest.pb.cc' || echo '$(srcdir)/'`google/protobuf/unittest.pb.cc -@am__fastdepCXX_TRUE@ mv -f $(DEPDIR)/protobuf_test-unittest.pb.Tpo $(DEPDIR)/protobuf_test-unittest.pb.Po +@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/protobuf_test-unittest.pb.Tpo $(DEPDIR)/protobuf_test-unittest.pb.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='google/protobuf/unittest.pb.cc' object='protobuf_test-unittest.pb.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(protobuf_test_CPPFLAGS) $(CPPFLAGS) $(protobuf_test_CXXFLAGS) $(CXXFLAGS) -c -o protobuf_test-unittest.pb.o `test -f 'google/protobuf/unittest.pb.cc' || echo '$(srcdir)/'`google/protobuf/unittest.pb.cc protobuf_test-unittest.pb.obj: google/protobuf/unittest.pb.cc @am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(protobuf_test_CPPFLAGS) $(CPPFLAGS) $(protobuf_test_CXXFLAGS) $(CXXFLAGS) -MT protobuf_test-unittest.pb.obj -MD -MP -MF $(DEPDIR)/protobuf_test-unittest.pb.Tpo -c -o protobuf_test-unittest.pb.obj `if test -f 'google/protobuf/unittest.pb.cc'; then $(CYGPATH_W) 'google/protobuf/unittest.pb.cc'; else $(CYGPATH_W) '$(srcdir)/google/protobuf/unittest.pb.cc'; fi` -@am__fastdepCXX_TRUE@ mv -f $(DEPDIR)/protobuf_test-unittest.pb.Tpo $(DEPDIR)/protobuf_test-unittest.pb.Po +@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/protobuf_test-unittest.pb.Tpo $(DEPDIR)/protobuf_test-unittest.pb.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='google/protobuf/unittest.pb.cc' object='protobuf_test-unittest.pb.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(protobuf_test_CPPFLAGS) $(CPPFLAGS) $(protobuf_test_CXXFLAGS) $(CXXFLAGS) -c -o protobuf_test-unittest.pb.obj `if test -f 'google/protobuf/unittest.pb.cc'; then $(CYGPATH_W) 'google/protobuf/unittest.pb.cc'; else $(CYGPATH_W) '$(srcdir)/google/protobuf/unittest.pb.cc'; fi` protobuf_test-unittest_empty.pb.o: google/protobuf/unittest_empty.pb.cc @am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(protobuf_test_CPPFLAGS) $(CPPFLAGS) $(protobuf_test_CXXFLAGS) $(CXXFLAGS) -MT protobuf_test-unittest_empty.pb.o -MD -MP -MF $(DEPDIR)/protobuf_test-unittest_empty.pb.Tpo -c -o protobuf_test-unittest_empty.pb.o `test -f 'google/protobuf/unittest_empty.pb.cc' || echo '$(srcdir)/'`google/protobuf/unittest_empty.pb.cc -@am__fastdepCXX_TRUE@ mv -f $(DEPDIR)/protobuf_test-unittest_empty.pb.Tpo $(DEPDIR)/protobuf_test-unittest_empty.pb.Po +@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/protobuf_test-unittest_empty.pb.Tpo $(DEPDIR)/protobuf_test-unittest_empty.pb.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='google/protobuf/unittest_empty.pb.cc' object='protobuf_test-unittest_empty.pb.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(protobuf_test_CPPFLAGS) $(CPPFLAGS) $(protobuf_test_CXXFLAGS) $(CXXFLAGS) -c -o protobuf_test-unittest_empty.pb.o `test -f 'google/protobuf/unittest_empty.pb.cc' || echo '$(srcdir)/'`google/protobuf/unittest_empty.pb.cc protobuf_test-unittest_empty.pb.obj: google/protobuf/unittest_empty.pb.cc @am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(protobuf_test_CPPFLAGS) $(CPPFLAGS) $(protobuf_test_CXXFLAGS) $(CXXFLAGS) -MT protobuf_test-unittest_empty.pb.obj -MD -MP -MF $(DEPDIR)/protobuf_test-unittest_empty.pb.Tpo -c -o protobuf_test-unittest_empty.pb.obj `if test -f 'google/protobuf/unittest_empty.pb.cc'; then $(CYGPATH_W) 'google/protobuf/unittest_empty.pb.cc'; else $(CYGPATH_W) '$(srcdir)/google/protobuf/unittest_empty.pb.cc'; fi` -@am__fastdepCXX_TRUE@ mv -f $(DEPDIR)/protobuf_test-unittest_empty.pb.Tpo $(DEPDIR)/protobuf_test-unittest_empty.pb.Po +@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/protobuf_test-unittest_empty.pb.Tpo $(DEPDIR)/protobuf_test-unittest_empty.pb.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='google/protobuf/unittest_empty.pb.cc' object='protobuf_test-unittest_empty.pb.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(protobuf_test_CPPFLAGS) $(CPPFLAGS) $(protobuf_test_CXXFLAGS) $(CXXFLAGS) -c -o protobuf_test-unittest_empty.pb.obj `if test -f 'google/protobuf/unittest_empty.pb.cc'; then $(CYGPATH_W) 'google/protobuf/unittest_empty.pb.cc'; else $(CYGPATH_W) '$(srcdir)/google/protobuf/unittest_empty.pb.cc'; fi` protobuf_test-unittest_import.pb.o: google/protobuf/unittest_import.pb.cc @am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(protobuf_test_CPPFLAGS) $(CPPFLAGS) $(protobuf_test_CXXFLAGS) $(CXXFLAGS) -MT protobuf_test-unittest_import.pb.o -MD -MP -MF $(DEPDIR)/protobuf_test-unittest_import.pb.Tpo -c -o protobuf_test-unittest_import.pb.o `test -f 'google/protobuf/unittest_import.pb.cc' || echo '$(srcdir)/'`google/protobuf/unittest_import.pb.cc -@am__fastdepCXX_TRUE@ mv -f $(DEPDIR)/protobuf_test-unittest_import.pb.Tpo $(DEPDIR)/protobuf_test-unittest_import.pb.Po +@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/protobuf_test-unittest_import.pb.Tpo $(DEPDIR)/protobuf_test-unittest_import.pb.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='google/protobuf/unittest_import.pb.cc' object='protobuf_test-unittest_import.pb.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(protobuf_test_CPPFLAGS) $(CPPFLAGS) $(protobuf_test_CXXFLAGS) $(CXXFLAGS) -c -o protobuf_test-unittest_import.pb.o `test -f 'google/protobuf/unittest_import.pb.cc' || echo '$(srcdir)/'`google/protobuf/unittest_import.pb.cc protobuf_test-unittest_import.pb.obj: google/protobuf/unittest_import.pb.cc @am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(protobuf_test_CPPFLAGS) $(CPPFLAGS) $(protobuf_test_CXXFLAGS) $(CXXFLAGS) -MT protobuf_test-unittest_import.pb.obj -MD -MP -MF $(DEPDIR)/protobuf_test-unittest_import.pb.Tpo -c -o protobuf_test-unittest_import.pb.obj `if test -f 'google/protobuf/unittest_import.pb.cc'; then $(CYGPATH_W) 'google/protobuf/unittest_import.pb.cc'; else $(CYGPATH_W) '$(srcdir)/google/protobuf/unittest_import.pb.cc'; fi` -@am__fastdepCXX_TRUE@ mv -f $(DEPDIR)/protobuf_test-unittest_import.pb.Tpo $(DEPDIR)/protobuf_test-unittest_import.pb.Po +@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/protobuf_test-unittest_import.pb.Tpo $(DEPDIR)/protobuf_test-unittest_import.pb.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='google/protobuf/unittest_import.pb.cc' object='protobuf_test-unittest_import.pb.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(protobuf_test_CPPFLAGS) $(CPPFLAGS) $(protobuf_test_CXXFLAGS) $(CXXFLAGS) -c -o protobuf_test-unittest_import.pb.obj `if test -f 'google/protobuf/unittest_import.pb.cc'; then $(CYGPATH_W) 'google/protobuf/unittest_import.pb.cc'; else $(CYGPATH_W) '$(srcdir)/google/protobuf/unittest_import.pb.cc'; fi` +protobuf_test-unittest_import_public.pb.o: google/protobuf/unittest_import_public.pb.cc +@am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(protobuf_test_CPPFLAGS) $(CPPFLAGS) $(protobuf_test_CXXFLAGS) $(CXXFLAGS) -MT protobuf_test-unittest_import_public.pb.o -MD -MP -MF $(DEPDIR)/protobuf_test-unittest_import_public.pb.Tpo -c -o protobuf_test-unittest_import_public.pb.o `test -f 'google/protobuf/unittest_import_public.pb.cc' || echo '$(srcdir)/'`google/protobuf/unittest_import_public.pb.cc +@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/protobuf_test-unittest_import_public.pb.Tpo $(DEPDIR)/protobuf_test-unittest_import_public.pb.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='google/protobuf/unittest_import_public.pb.cc' object='protobuf_test-unittest_import_public.pb.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(protobuf_test_CPPFLAGS) $(CPPFLAGS) $(protobuf_test_CXXFLAGS) $(CXXFLAGS) -c -o protobuf_test-unittest_import_public.pb.o `test -f 'google/protobuf/unittest_import_public.pb.cc' || echo '$(srcdir)/'`google/protobuf/unittest_import_public.pb.cc + +protobuf_test-unittest_import_public.pb.obj: google/protobuf/unittest_import_public.pb.cc +@am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(protobuf_test_CPPFLAGS) $(CPPFLAGS) $(protobuf_test_CXXFLAGS) $(CXXFLAGS) -MT protobuf_test-unittest_import_public.pb.obj -MD -MP -MF $(DEPDIR)/protobuf_test-unittest_import_public.pb.Tpo -c -o protobuf_test-unittest_import_public.pb.obj `if test -f 'google/protobuf/unittest_import_public.pb.cc'; then $(CYGPATH_W) 'google/protobuf/unittest_import_public.pb.cc'; else $(CYGPATH_W) '$(srcdir)/google/protobuf/unittest_import_public.pb.cc'; fi` +@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/protobuf_test-unittest_import_public.pb.Tpo $(DEPDIR)/protobuf_test-unittest_import_public.pb.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='google/protobuf/unittest_import_public.pb.cc' object='protobuf_test-unittest_import_public.pb.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(protobuf_test_CPPFLAGS) $(CPPFLAGS) $(protobuf_test_CXXFLAGS) $(CXXFLAGS) -c -o protobuf_test-unittest_import_public.pb.obj `if test -f 'google/protobuf/unittest_import_public.pb.cc'; then $(CYGPATH_W) 'google/protobuf/unittest_import_public.pb.cc'; else $(CYGPATH_W) '$(srcdir)/google/protobuf/unittest_import_public.pb.cc'; fi` + protobuf_test-unittest_mset.pb.o: google/protobuf/unittest_mset.pb.cc @am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(protobuf_test_CPPFLAGS) $(CPPFLAGS) $(protobuf_test_CXXFLAGS) $(CXXFLAGS) -MT protobuf_test-unittest_mset.pb.o -MD -MP -MF $(DEPDIR)/protobuf_test-unittest_mset.pb.Tpo -c -o protobuf_test-unittest_mset.pb.o `test -f 'google/protobuf/unittest_mset.pb.cc' || echo '$(srcdir)/'`google/protobuf/unittest_mset.pb.cc -@am__fastdepCXX_TRUE@ mv -f $(DEPDIR)/protobuf_test-unittest_mset.pb.Tpo $(DEPDIR)/protobuf_test-unittest_mset.pb.Po +@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/protobuf_test-unittest_mset.pb.Tpo $(DEPDIR)/protobuf_test-unittest_mset.pb.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='google/protobuf/unittest_mset.pb.cc' object='protobuf_test-unittest_mset.pb.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(protobuf_test_CPPFLAGS) $(CPPFLAGS) $(protobuf_test_CXXFLAGS) $(CXXFLAGS) -c -o protobuf_test-unittest_mset.pb.o `test -f 'google/protobuf/unittest_mset.pb.cc' || echo '$(srcdir)/'`google/protobuf/unittest_mset.pb.cc protobuf_test-unittest_mset.pb.obj: google/protobuf/unittest_mset.pb.cc @am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(protobuf_test_CPPFLAGS) $(CPPFLAGS) $(protobuf_test_CXXFLAGS) $(CXXFLAGS) -MT protobuf_test-unittest_mset.pb.obj -MD -MP -MF $(DEPDIR)/protobuf_test-unittest_mset.pb.Tpo -c -o protobuf_test-unittest_mset.pb.obj `if test -f 'google/protobuf/unittest_mset.pb.cc'; then $(CYGPATH_W) 'google/protobuf/unittest_mset.pb.cc'; else $(CYGPATH_W) '$(srcdir)/google/protobuf/unittest_mset.pb.cc'; fi` -@am__fastdepCXX_TRUE@ mv -f $(DEPDIR)/protobuf_test-unittest_mset.pb.Tpo $(DEPDIR)/protobuf_test-unittest_mset.pb.Po +@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/protobuf_test-unittest_mset.pb.Tpo $(DEPDIR)/protobuf_test-unittest_mset.pb.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='google/protobuf/unittest_mset.pb.cc' object='protobuf_test-unittest_mset.pb.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(protobuf_test_CPPFLAGS) $(CPPFLAGS) $(protobuf_test_CXXFLAGS) $(CXXFLAGS) -c -o protobuf_test-unittest_mset.pb.obj `if test -f 'google/protobuf/unittest_mset.pb.cc'; then $(CYGPATH_W) 'google/protobuf/unittest_mset.pb.cc'; else $(CYGPATH_W) '$(srcdir)/google/protobuf/unittest_mset.pb.cc'; fi` protobuf_test-unittest_optimize_for.pb.o: google/protobuf/unittest_optimize_for.pb.cc @am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(protobuf_test_CPPFLAGS) $(CPPFLAGS) $(protobuf_test_CXXFLAGS) $(CXXFLAGS) -MT protobuf_test-unittest_optimize_for.pb.o -MD -MP -MF $(DEPDIR)/protobuf_test-unittest_optimize_for.pb.Tpo -c -o protobuf_test-unittest_optimize_for.pb.o `test -f 'google/protobuf/unittest_optimize_for.pb.cc' || echo '$(srcdir)/'`google/protobuf/unittest_optimize_for.pb.cc -@am__fastdepCXX_TRUE@ mv -f $(DEPDIR)/protobuf_test-unittest_optimize_for.pb.Tpo $(DEPDIR)/protobuf_test-unittest_optimize_for.pb.Po +@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/protobuf_test-unittest_optimize_for.pb.Tpo $(DEPDIR)/protobuf_test-unittest_optimize_for.pb.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='google/protobuf/unittest_optimize_for.pb.cc' object='protobuf_test-unittest_optimize_for.pb.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(protobuf_test_CPPFLAGS) $(CPPFLAGS) $(protobuf_test_CXXFLAGS) $(CXXFLAGS) -c -o protobuf_test-unittest_optimize_for.pb.o `test -f 'google/protobuf/unittest_optimize_for.pb.cc' || echo '$(srcdir)/'`google/protobuf/unittest_optimize_for.pb.cc protobuf_test-unittest_optimize_for.pb.obj: google/protobuf/unittest_optimize_for.pb.cc @am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(protobuf_test_CPPFLAGS) $(CPPFLAGS) $(protobuf_test_CXXFLAGS) $(CXXFLAGS) -MT protobuf_test-unittest_optimize_for.pb.obj -MD -MP -MF $(DEPDIR)/protobuf_test-unittest_optimize_for.pb.Tpo -c -o protobuf_test-unittest_optimize_for.pb.obj `if test -f 'google/protobuf/unittest_optimize_for.pb.cc'; then $(CYGPATH_W) 'google/protobuf/unittest_optimize_for.pb.cc'; else $(CYGPATH_W) '$(srcdir)/google/protobuf/unittest_optimize_for.pb.cc'; fi` -@am__fastdepCXX_TRUE@ mv -f $(DEPDIR)/protobuf_test-unittest_optimize_for.pb.Tpo $(DEPDIR)/protobuf_test-unittest_optimize_for.pb.Po +@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/protobuf_test-unittest_optimize_for.pb.Tpo $(DEPDIR)/protobuf_test-unittest_optimize_for.pb.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='google/protobuf/unittest_optimize_for.pb.cc' object='protobuf_test-unittest_optimize_for.pb.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(protobuf_test_CPPFLAGS) $(CPPFLAGS) $(protobuf_test_CXXFLAGS) $(CXXFLAGS) -c -o protobuf_test-unittest_optimize_for.pb.obj `if test -f 'google/protobuf/unittest_optimize_for.pb.cc'; then $(CYGPATH_W) 'google/protobuf/unittest_optimize_for.pb.cc'; else $(CYGPATH_W) '$(srcdir)/google/protobuf/unittest_optimize_for.pb.cc'; fi` protobuf_test-unittest_embed_optimize_for.pb.o: google/protobuf/unittest_embed_optimize_for.pb.cc @am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(protobuf_test_CPPFLAGS) $(CPPFLAGS) $(protobuf_test_CXXFLAGS) $(CXXFLAGS) -MT protobuf_test-unittest_embed_optimize_for.pb.o -MD -MP -MF $(DEPDIR)/protobuf_test-unittest_embed_optimize_for.pb.Tpo -c -o protobuf_test-unittest_embed_optimize_for.pb.o `test -f 'google/protobuf/unittest_embed_optimize_for.pb.cc' || echo '$(srcdir)/'`google/protobuf/unittest_embed_optimize_for.pb.cc -@am__fastdepCXX_TRUE@ mv -f $(DEPDIR)/protobuf_test-unittest_embed_optimize_for.pb.Tpo $(DEPDIR)/protobuf_test-unittest_embed_optimize_for.pb.Po +@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/protobuf_test-unittest_embed_optimize_for.pb.Tpo $(DEPDIR)/protobuf_test-unittest_embed_optimize_for.pb.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='google/protobuf/unittest_embed_optimize_for.pb.cc' object='protobuf_test-unittest_embed_optimize_for.pb.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(protobuf_test_CPPFLAGS) $(CPPFLAGS) $(protobuf_test_CXXFLAGS) $(CXXFLAGS) -c -o protobuf_test-unittest_embed_optimize_for.pb.o `test -f 'google/protobuf/unittest_embed_optimize_for.pb.cc' || echo '$(srcdir)/'`google/protobuf/unittest_embed_optimize_for.pb.cc protobuf_test-unittest_embed_optimize_for.pb.obj: google/protobuf/unittest_embed_optimize_for.pb.cc @am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(protobuf_test_CPPFLAGS) $(CPPFLAGS) $(protobuf_test_CXXFLAGS) $(CXXFLAGS) -MT protobuf_test-unittest_embed_optimize_for.pb.obj -MD -MP -MF $(DEPDIR)/protobuf_test-unittest_embed_optimize_for.pb.Tpo -c -o protobuf_test-unittest_embed_optimize_for.pb.obj `if test -f 'google/protobuf/unittest_embed_optimize_for.pb.cc'; then $(CYGPATH_W) 'google/protobuf/unittest_embed_optimize_for.pb.cc'; else $(CYGPATH_W) '$(srcdir)/google/protobuf/unittest_embed_optimize_for.pb.cc'; fi` -@am__fastdepCXX_TRUE@ mv -f $(DEPDIR)/protobuf_test-unittest_embed_optimize_for.pb.Tpo $(DEPDIR)/protobuf_test-unittest_embed_optimize_for.pb.Po +@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/protobuf_test-unittest_embed_optimize_for.pb.Tpo $(DEPDIR)/protobuf_test-unittest_embed_optimize_for.pb.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='google/protobuf/unittest_embed_optimize_for.pb.cc' object='protobuf_test-unittest_embed_optimize_for.pb.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(protobuf_test_CPPFLAGS) $(CPPFLAGS) $(protobuf_test_CXXFLAGS) $(CXXFLAGS) -c -o protobuf_test-unittest_embed_optimize_for.pb.obj `if test -f 'google/protobuf/unittest_embed_optimize_for.pb.cc'; then $(CYGPATH_W) 'google/protobuf/unittest_embed_optimize_for.pb.cc'; else $(CYGPATH_W) '$(srcdir)/google/protobuf/unittest_embed_optimize_for.pb.cc'; fi` protobuf_test-unittest_custom_options.pb.o: google/protobuf/unittest_custom_options.pb.cc @am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(protobuf_test_CPPFLAGS) $(CPPFLAGS) $(protobuf_test_CXXFLAGS) $(CXXFLAGS) -MT protobuf_test-unittest_custom_options.pb.o -MD -MP -MF $(DEPDIR)/protobuf_test-unittest_custom_options.pb.Tpo -c -o protobuf_test-unittest_custom_options.pb.o `test -f 'google/protobuf/unittest_custom_options.pb.cc' || echo '$(srcdir)/'`google/protobuf/unittest_custom_options.pb.cc -@am__fastdepCXX_TRUE@ mv -f $(DEPDIR)/protobuf_test-unittest_custom_options.pb.Tpo $(DEPDIR)/protobuf_test-unittest_custom_options.pb.Po +@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/protobuf_test-unittest_custom_options.pb.Tpo $(DEPDIR)/protobuf_test-unittest_custom_options.pb.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='google/protobuf/unittest_custom_options.pb.cc' object='protobuf_test-unittest_custom_options.pb.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(protobuf_test_CPPFLAGS) $(CPPFLAGS) $(protobuf_test_CXXFLAGS) $(CXXFLAGS) -c -o protobuf_test-unittest_custom_options.pb.o `test -f 'google/protobuf/unittest_custom_options.pb.cc' || echo '$(srcdir)/'`google/protobuf/unittest_custom_options.pb.cc protobuf_test-unittest_custom_options.pb.obj: google/protobuf/unittest_custom_options.pb.cc @am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(protobuf_test_CPPFLAGS) $(CPPFLAGS) $(protobuf_test_CXXFLAGS) $(CXXFLAGS) -MT protobuf_test-unittest_custom_options.pb.obj -MD -MP -MF $(DEPDIR)/protobuf_test-unittest_custom_options.pb.Tpo -c -o protobuf_test-unittest_custom_options.pb.obj `if test -f 'google/protobuf/unittest_custom_options.pb.cc'; then $(CYGPATH_W) 'google/protobuf/unittest_custom_options.pb.cc'; else $(CYGPATH_W) '$(srcdir)/google/protobuf/unittest_custom_options.pb.cc'; fi` -@am__fastdepCXX_TRUE@ mv -f $(DEPDIR)/protobuf_test-unittest_custom_options.pb.Tpo $(DEPDIR)/protobuf_test-unittest_custom_options.pb.Po +@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/protobuf_test-unittest_custom_options.pb.Tpo $(DEPDIR)/protobuf_test-unittest_custom_options.pb.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='google/protobuf/unittest_custom_options.pb.cc' object='protobuf_test-unittest_custom_options.pb.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(protobuf_test_CPPFLAGS) $(CPPFLAGS) $(protobuf_test_CXXFLAGS) $(CXXFLAGS) -c -o protobuf_test-unittest_custom_options.pb.obj `if test -f 'google/protobuf/unittest_custom_options.pb.cc'; then $(CYGPATH_W) 'google/protobuf/unittest_custom_options.pb.cc'; else $(CYGPATH_W) '$(srcdir)/google/protobuf/unittest_custom_options.pb.cc'; fi` protobuf_test-unittest_lite_imports_nonlite.pb.o: google/protobuf/unittest_lite_imports_nonlite.pb.cc @am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(protobuf_test_CPPFLAGS) $(CPPFLAGS) $(protobuf_test_CXXFLAGS) $(CXXFLAGS) -MT protobuf_test-unittest_lite_imports_nonlite.pb.o -MD -MP -MF $(DEPDIR)/protobuf_test-unittest_lite_imports_nonlite.pb.Tpo -c -o protobuf_test-unittest_lite_imports_nonlite.pb.o `test -f 'google/protobuf/unittest_lite_imports_nonlite.pb.cc' || echo '$(srcdir)/'`google/protobuf/unittest_lite_imports_nonlite.pb.cc -@am__fastdepCXX_TRUE@ mv -f $(DEPDIR)/protobuf_test-unittest_lite_imports_nonlite.pb.Tpo $(DEPDIR)/protobuf_test-unittest_lite_imports_nonlite.pb.Po +@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/protobuf_test-unittest_lite_imports_nonlite.pb.Tpo $(DEPDIR)/protobuf_test-unittest_lite_imports_nonlite.pb.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='google/protobuf/unittest_lite_imports_nonlite.pb.cc' object='protobuf_test-unittest_lite_imports_nonlite.pb.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(protobuf_test_CPPFLAGS) $(CPPFLAGS) $(protobuf_test_CXXFLAGS) $(CXXFLAGS) -c -o protobuf_test-unittest_lite_imports_nonlite.pb.o `test -f 'google/protobuf/unittest_lite_imports_nonlite.pb.cc' || echo '$(srcdir)/'`google/protobuf/unittest_lite_imports_nonlite.pb.cc protobuf_test-unittest_lite_imports_nonlite.pb.obj: google/protobuf/unittest_lite_imports_nonlite.pb.cc @am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(protobuf_test_CPPFLAGS) $(CPPFLAGS) $(protobuf_test_CXXFLAGS) $(CXXFLAGS) -MT protobuf_test-unittest_lite_imports_nonlite.pb.obj -MD -MP -MF $(DEPDIR)/protobuf_test-unittest_lite_imports_nonlite.pb.Tpo -c -o protobuf_test-unittest_lite_imports_nonlite.pb.obj `if test -f 'google/protobuf/unittest_lite_imports_nonlite.pb.cc'; then $(CYGPATH_W) 'google/protobuf/unittest_lite_imports_nonlite.pb.cc'; else $(CYGPATH_W) '$(srcdir)/google/protobuf/unittest_lite_imports_nonlite.pb.cc'; fi` -@am__fastdepCXX_TRUE@ mv -f $(DEPDIR)/protobuf_test-unittest_lite_imports_nonlite.pb.Tpo $(DEPDIR)/protobuf_test-unittest_lite_imports_nonlite.pb.Po +@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/protobuf_test-unittest_lite_imports_nonlite.pb.Tpo $(DEPDIR)/protobuf_test-unittest_lite_imports_nonlite.pb.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='google/protobuf/unittest_lite_imports_nonlite.pb.cc' object='protobuf_test-unittest_lite_imports_nonlite.pb.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(protobuf_test_CPPFLAGS) $(CPPFLAGS) $(protobuf_test_CXXFLAGS) $(CXXFLAGS) -c -o protobuf_test-unittest_lite_imports_nonlite.pb.obj `if test -f 'google/protobuf/unittest_lite_imports_nonlite.pb.cc'; then $(CYGPATH_W) 'google/protobuf/unittest_lite_imports_nonlite.pb.cc'; else $(CYGPATH_W) '$(srcdir)/google/protobuf/unittest_lite_imports_nonlite.pb.cc'; fi` protobuf_test-unittest_no_generic_services.pb.o: google/protobuf/unittest_no_generic_services.pb.cc @am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(protobuf_test_CPPFLAGS) $(CPPFLAGS) $(protobuf_test_CXXFLAGS) $(CXXFLAGS) -MT protobuf_test-unittest_no_generic_services.pb.o -MD -MP -MF $(DEPDIR)/protobuf_test-unittest_no_generic_services.pb.Tpo -c -o protobuf_test-unittest_no_generic_services.pb.o `test -f 'google/protobuf/unittest_no_generic_services.pb.cc' || echo '$(srcdir)/'`google/protobuf/unittest_no_generic_services.pb.cc -@am__fastdepCXX_TRUE@ mv -f $(DEPDIR)/protobuf_test-unittest_no_generic_services.pb.Tpo $(DEPDIR)/protobuf_test-unittest_no_generic_services.pb.Po +@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/protobuf_test-unittest_no_generic_services.pb.Tpo $(DEPDIR)/protobuf_test-unittest_no_generic_services.pb.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='google/protobuf/unittest_no_generic_services.pb.cc' object='protobuf_test-unittest_no_generic_services.pb.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(protobuf_test_CPPFLAGS) $(CPPFLAGS) $(protobuf_test_CXXFLAGS) $(CXXFLAGS) -c -o protobuf_test-unittest_no_generic_services.pb.o `test -f 'google/protobuf/unittest_no_generic_services.pb.cc' || echo '$(srcdir)/'`google/protobuf/unittest_no_generic_services.pb.cc protobuf_test-unittest_no_generic_services.pb.obj: google/protobuf/unittest_no_generic_services.pb.cc @am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(protobuf_test_CPPFLAGS) $(CPPFLAGS) $(protobuf_test_CXXFLAGS) $(CXXFLAGS) -MT protobuf_test-unittest_no_generic_services.pb.obj -MD -MP -MF $(DEPDIR)/protobuf_test-unittest_no_generic_services.pb.Tpo -c -o protobuf_test-unittest_no_generic_services.pb.obj `if test -f 'google/protobuf/unittest_no_generic_services.pb.cc'; then $(CYGPATH_W) 'google/protobuf/unittest_no_generic_services.pb.cc'; else $(CYGPATH_W) '$(srcdir)/google/protobuf/unittest_no_generic_services.pb.cc'; fi` -@am__fastdepCXX_TRUE@ mv -f $(DEPDIR)/protobuf_test-unittest_no_generic_services.pb.Tpo $(DEPDIR)/protobuf_test-unittest_no_generic_services.pb.Po +@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/protobuf_test-unittest_no_generic_services.pb.Tpo $(DEPDIR)/protobuf_test-unittest_no_generic_services.pb.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='google/protobuf/unittest_no_generic_services.pb.cc' object='protobuf_test-unittest_no_generic_services.pb.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(protobuf_test_CPPFLAGS) $(CPPFLAGS) $(protobuf_test_CXXFLAGS) $(CXXFLAGS) -c -o protobuf_test-unittest_no_generic_services.pb.obj `if test -f 'google/protobuf/unittest_no_generic_services.pb.cc'; then $(CYGPATH_W) 'google/protobuf/unittest_no_generic_services.pb.cc'; else $(CYGPATH_W) '$(srcdir)/google/protobuf/unittest_no_generic_services.pb.cc'; fi` protobuf_test-cpp_test_bad_identifiers.pb.o: google/protobuf/compiler/cpp/cpp_test_bad_identifiers.pb.cc @am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(protobuf_test_CPPFLAGS) $(CPPFLAGS) $(protobuf_test_CXXFLAGS) $(CXXFLAGS) -MT protobuf_test-cpp_test_bad_identifiers.pb.o -MD -MP -MF $(DEPDIR)/protobuf_test-cpp_test_bad_identifiers.pb.Tpo -c -o protobuf_test-cpp_test_bad_identifiers.pb.o `test -f 'google/protobuf/compiler/cpp/cpp_test_bad_identifiers.pb.cc' || echo '$(srcdir)/'`google/protobuf/compiler/cpp/cpp_test_bad_identifiers.pb.cc -@am__fastdepCXX_TRUE@ mv -f $(DEPDIR)/protobuf_test-cpp_test_bad_identifiers.pb.Tpo $(DEPDIR)/protobuf_test-cpp_test_bad_identifiers.pb.Po +@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/protobuf_test-cpp_test_bad_identifiers.pb.Tpo $(DEPDIR)/protobuf_test-cpp_test_bad_identifiers.pb.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='google/protobuf/compiler/cpp/cpp_test_bad_identifiers.pb.cc' object='protobuf_test-cpp_test_bad_identifiers.pb.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(protobuf_test_CPPFLAGS) $(CPPFLAGS) $(protobuf_test_CXXFLAGS) $(CXXFLAGS) -c -o protobuf_test-cpp_test_bad_identifiers.pb.o `test -f 'google/protobuf/compiler/cpp/cpp_test_bad_identifiers.pb.cc' || echo '$(srcdir)/'`google/protobuf/compiler/cpp/cpp_test_bad_identifiers.pb.cc protobuf_test-cpp_test_bad_identifiers.pb.obj: google/protobuf/compiler/cpp/cpp_test_bad_identifiers.pb.cc @am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(protobuf_test_CPPFLAGS) $(CPPFLAGS) $(protobuf_test_CXXFLAGS) $(CXXFLAGS) -MT protobuf_test-cpp_test_bad_identifiers.pb.obj -MD -MP -MF $(DEPDIR)/protobuf_test-cpp_test_bad_identifiers.pb.Tpo -c -o protobuf_test-cpp_test_bad_identifiers.pb.obj `if test -f 'google/protobuf/compiler/cpp/cpp_test_bad_identifiers.pb.cc'; then $(CYGPATH_W) 'google/protobuf/compiler/cpp/cpp_test_bad_identifiers.pb.cc'; else $(CYGPATH_W) '$(srcdir)/google/protobuf/compiler/cpp/cpp_test_bad_identifiers.pb.cc'; fi` -@am__fastdepCXX_TRUE@ mv -f $(DEPDIR)/protobuf_test-cpp_test_bad_identifiers.pb.Tpo $(DEPDIR)/protobuf_test-cpp_test_bad_identifiers.pb.Po +@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/protobuf_test-cpp_test_bad_identifiers.pb.Tpo $(DEPDIR)/protobuf_test-cpp_test_bad_identifiers.pb.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='google/protobuf/compiler/cpp/cpp_test_bad_identifiers.pb.cc' object='protobuf_test-cpp_test_bad_identifiers.pb.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(protobuf_test_CPPFLAGS) $(CPPFLAGS) $(protobuf_test_CXXFLAGS) $(CXXFLAGS) -c -o protobuf_test-cpp_test_bad_identifiers.pb.obj `if test -f 'google/protobuf/compiler/cpp/cpp_test_bad_identifiers.pb.cc'; then $(CYGPATH_W) 'google/protobuf/compiler/cpp/cpp_test_bad_identifiers.pb.cc'; else $(CYGPATH_W) '$(srcdir)/google/protobuf/compiler/cpp/cpp_test_bad_identifiers.pb.cc'; fi` main.o: google/protobuf/compiler/main.cc @am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT main.o -MD -MP -MF $(DEPDIR)/main.Tpo -c -o main.o `test -f 'google/protobuf/compiler/main.cc' || echo '$(srcdir)/'`google/protobuf/compiler/main.cc -@am__fastdepCXX_TRUE@ mv -f $(DEPDIR)/main.Tpo $(DEPDIR)/main.Po +@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/main.Tpo $(DEPDIR)/main.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='google/protobuf/compiler/main.cc' object='main.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o main.o `test -f 'google/protobuf/compiler/main.cc' || echo '$(srcdir)/'`google/protobuf/compiler/main.cc main.obj: google/protobuf/compiler/main.cc @am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT main.obj -MD -MP -MF $(DEPDIR)/main.Tpo -c -o main.obj `if test -f 'google/protobuf/compiler/main.cc'; then $(CYGPATH_W) 'google/protobuf/compiler/main.cc'; else $(CYGPATH_W) '$(srcdir)/google/protobuf/compiler/main.cc'; fi` -@am__fastdepCXX_TRUE@ mv -f $(DEPDIR)/main.Tpo $(DEPDIR)/main.Po +@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/main.Tpo $(DEPDIR)/main.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='google/protobuf/compiler/main.cc' object='main.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o main.obj `if test -f 'google/protobuf/compiler/main.cc'; then $(CYGPATH_W) 'google/protobuf/compiler/main.cc'; else $(CYGPATH_W) '$(srcdir)/google/protobuf/compiler/main.cc'; fi` test_plugin-mock_code_generator.o: google/protobuf/compiler/mock_code_generator.cc @am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(test_plugin_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT test_plugin-mock_code_generator.o -MD -MP -MF $(DEPDIR)/test_plugin-mock_code_generator.Tpo -c -o test_plugin-mock_code_generator.o `test -f 'google/protobuf/compiler/mock_code_generator.cc' || echo '$(srcdir)/'`google/protobuf/compiler/mock_code_generator.cc -@am__fastdepCXX_TRUE@ mv -f $(DEPDIR)/test_plugin-mock_code_generator.Tpo $(DEPDIR)/test_plugin-mock_code_generator.Po +@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/test_plugin-mock_code_generator.Tpo $(DEPDIR)/test_plugin-mock_code_generator.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='google/protobuf/compiler/mock_code_generator.cc' object='test_plugin-mock_code_generator.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(test_plugin_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o test_plugin-mock_code_generator.o `test -f 'google/protobuf/compiler/mock_code_generator.cc' || echo '$(srcdir)/'`google/protobuf/compiler/mock_code_generator.cc test_plugin-mock_code_generator.obj: google/protobuf/compiler/mock_code_generator.cc @am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(test_plugin_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT test_plugin-mock_code_generator.obj -MD -MP -MF $(DEPDIR)/test_plugin-mock_code_generator.Tpo -c -o test_plugin-mock_code_generator.obj `if test -f 'google/protobuf/compiler/mock_code_generator.cc'; then $(CYGPATH_W) 'google/protobuf/compiler/mock_code_generator.cc'; else $(CYGPATH_W) '$(srcdir)/google/protobuf/compiler/mock_code_generator.cc'; fi` -@am__fastdepCXX_TRUE@ mv -f $(DEPDIR)/test_plugin-mock_code_generator.Tpo $(DEPDIR)/test_plugin-mock_code_generator.Po +@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/test_plugin-mock_code_generator.Tpo $(DEPDIR)/test_plugin-mock_code_generator.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='google/protobuf/compiler/mock_code_generator.cc' object='test_plugin-mock_code_generator.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(test_plugin_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o test_plugin-mock_code_generator.obj `if test -f 'google/protobuf/compiler/mock_code_generator.cc'; then $(CYGPATH_W) 'google/protobuf/compiler/mock_code_generator.cc'; else $(CYGPATH_W) '$(srcdir)/google/protobuf/compiler/mock_code_generator.cc'; fi` test_plugin-file.o: google/protobuf/testing/file.cc @am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(test_plugin_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT test_plugin-file.o -MD -MP -MF $(DEPDIR)/test_plugin-file.Tpo -c -o test_plugin-file.o `test -f 'google/protobuf/testing/file.cc' || echo '$(srcdir)/'`google/protobuf/testing/file.cc -@am__fastdepCXX_TRUE@ mv -f $(DEPDIR)/test_plugin-file.Tpo $(DEPDIR)/test_plugin-file.Po +@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/test_plugin-file.Tpo $(DEPDIR)/test_plugin-file.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='google/protobuf/testing/file.cc' object='test_plugin-file.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(test_plugin_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o test_plugin-file.o `test -f 'google/protobuf/testing/file.cc' || echo '$(srcdir)/'`google/protobuf/testing/file.cc test_plugin-file.obj: google/protobuf/testing/file.cc @am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(test_plugin_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT test_plugin-file.obj -MD -MP -MF $(DEPDIR)/test_plugin-file.Tpo -c -o test_plugin-file.obj `if test -f 'google/protobuf/testing/file.cc'; then $(CYGPATH_W) 'google/protobuf/testing/file.cc'; else $(CYGPATH_W) '$(srcdir)/google/protobuf/testing/file.cc'; fi` -@am__fastdepCXX_TRUE@ mv -f $(DEPDIR)/test_plugin-file.Tpo $(DEPDIR)/test_plugin-file.Po +@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/test_plugin-file.Tpo $(DEPDIR)/test_plugin-file.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='google/protobuf/testing/file.cc' object='test_plugin-file.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(test_plugin_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o test_plugin-file.obj `if test -f 'google/protobuf/testing/file.cc'; then $(CYGPATH_W) 'google/protobuf/testing/file.cc'; else $(CYGPATH_W) '$(srcdir)/google/protobuf/testing/file.cc'; fi` test_plugin-test_plugin.o: google/protobuf/compiler/test_plugin.cc @am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(test_plugin_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT test_plugin-test_plugin.o -MD -MP -MF $(DEPDIR)/test_plugin-test_plugin.Tpo -c -o test_plugin-test_plugin.o `test -f 'google/protobuf/compiler/test_plugin.cc' || echo '$(srcdir)/'`google/protobuf/compiler/test_plugin.cc -@am__fastdepCXX_TRUE@ mv -f $(DEPDIR)/test_plugin-test_plugin.Tpo $(DEPDIR)/test_plugin-test_plugin.Po +@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/test_plugin-test_plugin.Tpo $(DEPDIR)/test_plugin-test_plugin.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='google/protobuf/compiler/test_plugin.cc' object='test_plugin-test_plugin.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(test_plugin_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o test_plugin-test_plugin.o `test -f 'google/protobuf/compiler/test_plugin.cc' || echo '$(srcdir)/'`google/protobuf/compiler/test_plugin.cc test_plugin-test_plugin.obj: google/protobuf/compiler/test_plugin.cc @am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(test_plugin_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT test_plugin-test_plugin.obj -MD -MP -MF $(DEPDIR)/test_plugin-test_plugin.Tpo -c -o test_plugin-test_plugin.obj `if test -f 'google/protobuf/compiler/test_plugin.cc'; then $(CYGPATH_W) 'google/protobuf/compiler/test_plugin.cc'; else $(CYGPATH_W) '$(srcdir)/google/protobuf/compiler/test_plugin.cc'; fi` -@am__fastdepCXX_TRUE@ mv -f $(DEPDIR)/test_plugin-test_plugin.Tpo $(DEPDIR)/test_plugin-test_plugin.Po +@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/test_plugin-test_plugin.Tpo $(DEPDIR)/test_plugin-test_plugin.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='google/protobuf/compiler/test_plugin.cc' object='test_plugin-test_plugin.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(test_plugin_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o test_plugin-test_plugin.obj `if test -f 'google/protobuf/compiler/test_plugin.cc'; then $(CYGPATH_W) 'google/protobuf/compiler/test_plugin.cc'; else $(CYGPATH_W) '$(srcdir)/google/protobuf/compiler/test_plugin.cc'; fi` zcgunzip.o: google/protobuf/testing/zcgunzip.cc @am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT zcgunzip.o -MD -MP -MF $(DEPDIR)/zcgunzip.Tpo -c -o zcgunzip.o `test -f 'google/protobuf/testing/zcgunzip.cc' || echo '$(srcdir)/'`google/protobuf/testing/zcgunzip.cc -@am__fastdepCXX_TRUE@ mv -f $(DEPDIR)/zcgunzip.Tpo $(DEPDIR)/zcgunzip.Po +@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/zcgunzip.Tpo $(DEPDIR)/zcgunzip.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='google/protobuf/testing/zcgunzip.cc' object='zcgunzip.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o zcgunzip.o `test -f 'google/protobuf/testing/zcgunzip.cc' || echo '$(srcdir)/'`google/protobuf/testing/zcgunzip.cc zcgunzip.obj: google/protobuf/testing/zcgunzip.cc @am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT zcgunzip.obj -MD -MP -MF $(DEPDIR)/zcgunzip.Tpo -c -o zcgunzip.obj `if test -f 'google/protobuf/testing/zcgunzip.cc'; then $(CYGPATH_W) 'google/protobuf/testing/zcgunzip.cc'; else $(CYGPATH_W) '$(srcdir)/google/protobuf/testing/zcgunzip.cc'; fi` -@am__fastdepCXX_TRUE@ mv -f $(DEPDIR)/zcgunzip.Tpo $(DEPDIR)/zcgunzip.Po +@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/zcgunzip.Tpo $(DEPDIR)/zcgunzip.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='google/protobuf/testing/zcgunzip.cc' object='zcgunzip.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o zcgunzip.obj `if test -f 'google/protobuf/testing/zcgunzip.cc'; then $(CYGPATH_W) 'google/protobuf/testing/zcgunzip.cc'; else $(CYGPATH_W) '$(srcdir)/google/protobuf/testing/zcgunzip.cc'; fi` zcgzip.o: google/protobuf/testing/zcgzip.cc @am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT zcgzip.o -MD -MP -MF $(DEPDIR)/zcgzip.Tpo -c -o zcgzip.o `test -f 'google/protobuf/testing/zcgzip.cc' || echo '$(srcdir)/'`google/protobuf/testing/zcgzip.cc -@am__fastdepCXX_TRUE@ mv -f $(DEPDIR)/zcgzip.Tpo $(DEPDIR)/zcgzip.Po +@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/zcgzip.Tpo $(DEPDIR)/zcgzip.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='google/protobuf/testing/zcgzip.cc' object='zcgzip.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o zcgzip.o `test -f 'google/protobuf/testing/zcgzip.cc' || echo '$(srcdir)/'`google/protobuf/testing/zcgzip.cc zcgzip.obj: google/protobuf/testing/zcgzip.cc @am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT zcgzip.obj -MD -MP -MF $(DEPDIR)/zcgzip.Tpo -c -o zcgzip.obj `if test -f 'google/protobuf/testing/zcgzip.cc'; then $(CYGPATH_W) 'google/protobuf/testing/zcgzip.cc'; else $(CYGPATH_W) '$(srcdir)/google/protobuf/testing/zcgzip.cc'; fi` -@am__fastdepCXX_TRUE@ mv -f $(DEPDIR)/zcgzip.Tpo $(DEPDIR)/zcgzip.Po +@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/zcgzip.Tpo $(DEPDIR)/zcgzip.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='google/protobuf/testing/zcgzip.cc' object='zcgzip.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o zcgzip.obj `if test -f 'google/protobuf/testing/zcgzip.cc'; then $(CYGPATH_W) 'google/protobuf/testing/zcgzip.cc'; else $(CYGPATH_W) '$(srcdir)/google/protobuf/testing/zcgzip.cc'; fi` @@ -2448,55 +2742,59 @@ clean-libtool: install-nobase_dist_protoDATA: $(nobase_dist_proto_DATA) @$(NORMAL_INSTALL) test -z "$(protodir)" || $(MKDIR_P) "$(DESTDIR)$(protodir)" - @$(am__vpath_adj_setup) \ - list='$(nobase_dist_proto_DATA)'; for p in $$list; do \ - if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ - $(am__vpath_adj) \ - echo " $(nobase_dist_protoDATA_INSTALL) '$$d$$p' '$(DESTDIR)$(protodir)/$$f'"; \ - $(nobase_dist_protoDATA_INSTALL) "$$d$$p" "$(DESTDIR)$(protodir)/$$f"; \ + @list='$(nobase_dist_proto_DATA)'; test -n "$(protodir)" || list=; \ + $(am__nobase_list) | while read dir files; do \ + xfiles=; for file in $$files; do \ + if test -f "$$file"; then xfiles="$$xfiles $$file"; \ + else xfiles="$$xfiles $(srcdir)/$$file"; fi; done; \ + test -z "$$xfiles" || { \ + test "x$$dir" = x. || { \ + echo "$(MKDIR_P) '$(DESTDIR)$(protodir)/$$dir'"; \ + $(MKDIR_P) "$(DESTDIR)$(protodir)/$$dir"; }; \ + echo " $(INSTALL_DATA) $$xfiles '$(DESTDIR)$(protodir)/$$dir'"; \ + $(INSTALL_DATA) $$xfiles "$(DESTDIR)$(protodir)/$$dir" || exit $$?; }; \ done uninstall-nobase_dist_protoDATA: @$(NORMAL_UNINSTALL) - @$(am__vpath_adj_setup) \ - list='$(nobase_dist_proto_DATA)'; for p in $$list; do \ - $(am__vpath_adj) \ - echo " rm -f '$(DESTDIR)$(protodir)/$$f'"; \ - rm -f "$(DESTDIR)$(protodir)/$$f"; \ - done + @list='$(nobase_dist_proto_DATA)'; test -n "$(protodir)" || list=; \ + $(am__nobase_strip_setup); files=`$(am__nobase_strip)`; \ + dir='$(DESTDIR)$(protodir)'; $(am__uninstall_files_from_dir) install-nobase_includeHEADERS: $(nobase_include_HEADERS) @$(NORMAL_INSTALL) test -z "$(includedir)" || $(MKDIR_P) "$(DESTDIR)$(includedir)" - @$(am__vpath_adj_setup) \ - list='$(nobase_include_HEADERS)'; for p in $$list; do \ - if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ - $(am__vpath_adj) \ - echo " $(nobase_includeHEADERS_INSTALL) '$$d$$p' '$(DESTDIR)$(includedir)/$$f'"; \ - $(nobase_includeHEADERS_INSTALL) "$$d$$p" "$(DESTDIR)$(includedir)/$$f"; \ + @list='$(nobase_include_HEADERS)'; test -n "$(includedir)" || list=; \ + $(am__nobase_list) | while read dir files; do \ + xfiles=; for file in $$files; do \ + if test -f "$$file"; then xfiles="$$xfiles $$file"; \ + else xfiles="$$xfiles $(srcdir)/$$file"; fi; done; \ + test -z "$$xfiles" || { \ + test "x$$dir" = x. || { \ + echo "$(MKDIR_P) '$(DESTDIR)$(includedir)/$$dir'"; \ + $(MKDIR_P) "$(DESTDIR)$(includedir)/$$dir"; }; \ + echo " $(INSTALL_HEADER) $$xfiles '$(DESTDIR)$(includedir)/$$dir'"; \ + $(INSTALL_HEADER) $$xfiles "$(DESTDIR)$(includedir)/$$dir" || exit $$?; }; \ done uninstall-nobase_includeHEADERS: @$(NORMAL_UNINSTALL) - @$(am__vpath_adj_setup) \ - list='$(nobase_include_HEADERS)'; for p in $$list; do \ - $(am__vpath_adj) \ - echo " rm -f '$(DESTDIR)$(includedir)/$$f'"; \ - rm -f "$(DESTDIR)$(includedir)/$$f"; \ - done + @list='$(nobase_include_HEADERS)'; test -n "$(includedir)" || list=; \ + $(am__nobase_strip_setup); files=`$(am__nobase_strip)`; \ + dir='$(DESTDIR)$(includedir)'; $(am__uninstall_files_from_dir) ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ - $(AWK) '{ files[$$0] = 1; nonemtpy = 1; } \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ mkid -fID $$unique tags: TAGS TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) - tags=; \ + set x; \ here=`pwd`; \ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ @@ -2504,37 +2802,43 @@ TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ - if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \ + shift; \ + if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ - $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ - $$tags $$unique; \ + if test $$# -gt 0; then \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + "$$@" $$unique; \ + else \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$unique; \ + fi; \ fi ctags: CTAGS CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) - tags=; \ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ - test -z "$(CTAGS_ARGS)$$tags$$unique" \ + test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ - $$tags $$unique + $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ - && cd $(top_srcdir) \ - && gtags -i $(GTAGS_ARGS) $$here + && $(am__cd) $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) "$$here" distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags check-TESTS: $(TESTS) - @failed=0; all=0; xfail=0; xpass=0; skip=0; ws='[ ]'; \ + @failed=0; all=0; xfail=0; xpass=0; skip=0; \ srcdir=$(srcdir); export srcdir; \ list=' $(TESTS) '; \ + $(am__tty_colors); \ if test -n "$$list"; then \ for tst in $$list; do \ if test -f ./$$tst; then dir=./; \ @@ -2543,49 +2847,63 @@ check-TESTS: $(TESTS) if $(TESTS_ENVIRONMENT) $${dir}$$tst; then \ all=`expr $$all + 1`; \ case " $(XFAIL_TESTS) " in \ - *$$ws$$tst$$ws*) \ + *[\ \ ]$$tst[\ \ ]*) \ xpass=`expr $$xpass + 1`; \ failed=`expr $$failed + 1`; \ - echo "XPASS: $$tst"; \ + col=$$red; res=XPASS; \ ;; \ *) \ - echo "PASS: $$tst"; \ + col=$$grn; res=PASS; \ ;; \ esac; \ elif test $$? -ne 77; then \ all=`expr $$all + 1`; \ case " $(XFAIL_TESTS) " in \ - *$$ws$$tst$$ws*) \ + *[\ \ ]$$tst[\ \ ]*) \ xfail=`expr $$xfail + 1`; \ - echo "XFAIL: $$tst"; \ + col=$$lgn; res=XFAIL; \ ;; \ *) \ failed=`expr $$failed + 1`; \ - echo "FAIL: $$tst"; \ + col=$$red; res=FAIL; \ ;; \ esac; \ else \ skip=`expr $$skip + 1`; \ - echo "SKIP: $$tst"; \ + col=$$blu; res=SKIP; \ fi; \ + echo "$${col}$$res$${std}: $$tst"; \ done; \ + if test "$$all" -eq 1; then \ + tests="test"; \ + All=""; \ + else \ + tests="tests"; \ + All="All "; \ + fi; \ if test "$$failed" -eq 0; then \ if test "$$xfail" -eq 0; then \ - banner="All $$all tests passed"; \ + banner="$$All$$all $$tests passed"; \ else \ - banner="All $$all tests behaved as expected ($$xfail expected failures)"; \ + if test "$$xfail" -eq 1; then failures=failure; else failures=failures; fi; \ + banner="$$All$$all $$tests behaved as expected ($$xfail expected $$failures)"; \ fi; \ else \ if test "$$xpass" -eq 0; then \ - banner="$$failed of $$all tests failed"; \ + banner="$$failed of $$all $$tests failed"; \ else \ - banner="$$failed of $$all tests did not behave as expected ($$xpass unexpected passes)"; \ + if test "$$xpass" -eq 1; then passes=pass; else passes=passes; fi; \ + banner="$$failed of $$all $$tests did not behave as expected ($$xpass unexpected $$passes)"; \ fi; \ fi; \ dashes="$$banner"; \ skipped=""; \ if test "$$skip" -ne 0; then \ - skipped="($$skip tests were not run)"; \ + if test "$$skip" -eq 1; then \ + skipped="($$skip test was not run)"; \ + else \ + skipped="($$skip tests were not run)"; \ + fi; \ test `echo "$$skipped" | wc -c` -le `echo "$$banner" | wc -c` || \ dashes="$$skipped"; \ fi; \ @@ -2596,11 +2914,16 @@ check-TESTS: $(TESTS) dashes="$$report"; \ fi; \ dashes=`echo "$$dashes" | sed s/./=/g`; \ - echo "$$dashes"; \ - echo "$$banner"; \ - test -z "$$skipped" || echo "$$skipped"; \ - test -z "$$report" || echo "$$report"; \ - echo "$$dashes"; \ + if test "$$failed" -eq 0; then \ + col="$$grn"; \ + else \ + col="$$red"; \ + fi; \ + echo "$${col}$$dashes$${std}"; \ + echo "$${col}$$banner$${std}"; \ + test -z "$$skipped" || echo "$${col}$$skipped$${std}"; \ + test -z "$$report" || echo "$${col}$$report$${std}"; \ + echo "$${col}$$dashes$${std}"; \ test "$$failed" -eq 0; \ else :; fi @@ -2620,13 +2943,17 @@ distdir: $(DISTFILES) if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ - cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ - cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ + cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ - test -f $(distdir)/$$file \ - || cp -p $$d/$$file $(distdir)/$$file \ + test -f "$(distdir)/$$file" \ + || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done @@ -2653,10 +2980,15 @@ install-am: all-am installcheck: installcheck-am install-strip: - $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ - install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ - `test -z '$(STRIP)' || \ - echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install + if test -z '$(STRIP)'; then \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + install; \ + else \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ + fi mostlyclean-generic: clean-generic: @@ -2664,6 +2996,7 @@ clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @@ -2687,6 +3020,8 @@ dvi-am: html: html-am +html-am: + info: info-am info-am: @@ -2696,18 +3031,28 @@ install-data-am: install-nobase_dist_protoDATA \ install-dvi: install-dvi-am +install-dvi-am: + install-exec-am: install-binPROGRAMS install-libLTLIBRARIES install-html: install-html-am +install-html-am: + install-info: install-info-am +install-info-am: + install-man: install-pdf: install-pdf-am +install-pdf-am: + install-ps: install-ps-am +install-ps-am: + installcheck-am: maintainer-clean: maintainer-clean-am @@ -2732,7 +3077,7 @@ uninstall-am: uninstall-binPROGRAMS uninstall-libLTLIBRARIES \ uninstall-nobase_dist_protoDATA \ uninstall-nobase_includeHEADERS -.MAKE: install-am install-strip +.MAKE: all check check-am install install-am install-strip .PHONY: CTAGS GTAGS all all-am check check-TESTS check-am clean \ clean-binPROGRAMS clean-checkPROGRAMS clean-generic \ @@ -2770,6 +3115,7 @@ clean-local: @USE_EXTERNAL_PROTOC_FALSE@ touch unittest_proto_middleman $(protoc_outputs): unittest_proto_middleman + # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: diff --git a/cpp/thirdparty/protobuf-2.3.0/src/google/protobuf/compiler/code_generator.cc b/cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/compiler/code_generator.cc similarity index 89% rename from cpp/thirdparty/protobuf-2.3.0/src/google/protobuf/compiler/code_generator.cc rename to cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/compiler/code_generator.cc index 3413a36a3..455c239a9 100644 --- a/cpp/thirdparty/protobuf-2.3.0/src/google/protobuf/compiler/code_generator.cc +++ b/cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/compiler/code_generator.cc @@ -42,14 +42,19 @@ namespace protobuf { namespace compiler { CodeGenerator::~CodeGenerator() {} -OutputDirectory::~OutputDirectory() {} +GeneratorContext::~GeneratorContext() {} -io::ZeroCopyOutputStream* OutputDirectory::OpenForInsert( +io::ZeroCopyOutputStream* GeneratorContext::OpenForInsert( const string& filename, const string& insertion_point) { - GOOGLE_LOG(FATAL) << "This OutputDirectory does not support insertion."; + GOOGLE_LOG(FATAL) << "This GeneratorContext does not support insertion."; return NULL; // make compiler happy } +void GeneratorContext::ListParsedFiles( + vector* output) { + GOOGLE_LOG(FATAL) << "This GeneratorContext does not support ListParsedFiles"; +} + // Parses a set of comma-delimited name/value pairs. void ParseGeneratorParameter(const string& text, vector >* output) { diff --git a/cpp/thirdparty/protobuf-2.3.0/src/google/protobuf/compiler/code_generator.h b/cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/compiler/code_generator.h similarity index 87% rename from cpp/thirdparty/protobuf-2.3.0/src/google/protobuf/compiler/code_generator.h rename to cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/compiler/code_generator.h index ea094cdd6..252f68d1d 100644 --- a/cpp/thirdparty/protobuf-2.3.0/src/google/protobuf/compiler/code_generator.h +++ b/cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/compiler/code_generator.h @@ -53,7 +53,7 @@ namespace compiler { // Defined in this file. class CodeGenerator; -class OutputDirectory; +class GeneratorContext; // The abstract interface to a class which generates code implementing a // particular proto file in a particular language. A number of these may @@ -76,7 +76,7 @@ class LIBPROTOC_EXPORT CodeGenerator { // the problem (e.g. "invalid parameter") and returns false. virtual bool Generate(const FileDescriptor* file, const string& parameter, - OutputDirectory* output_directory, + GeneratorContext* generator_context, string* error) const = 0; private: @@ -85,11 +85,12 @@ class LIBPROTOC_EXPORT CodeGenerator { // CodeGenerators generate one or more files in a given directory. This // abstract interface represents the directory to which the CodeGenerator is -// to write. -class LIBPROTOC_EXPORT OutputDirectory { +// to write and other information about the context in which the Generator +// runs. +class LIBPROTOC_EXPORT GeneratorContext { public: - inline OutputDirectory() {} - virtual ~OutputDirectory(); + inline GeneratorContext() {} + virtual ~GeneratorContext(); // Opens the given file, truncating it if it exists, and returns a // ZeroCopyOutputStream that writes to the file. The caller takes ownership @@ -112,10 +113,19 @@ class LIBPROTOC_EXPORT OutputDirectory { virtual io::ZeroCopyOutputStream* OpenForInsert( const string& filename, const string& insertion_point); + // Returns a vector of FileDescriptors for all the files being compiled + // in this run. Useful for languages, such as Go, that treat files + // differently when compiled as a set rather than individually. + virtual void ListParsedFiles(vector* output); + private: - GOOGLE_DISALLOW_EVIL_CONSTRUCTORS(OutputDirectory); + GOOGLE_DISALLOW_EVIL_CONSTRUCTORS(GeneratorContext); }; +// The type GeneratorContext was once called OutputDirectory. This typedef +// provides backward compatibility. +typedef GeneratorContext OutputDirectory; + // Several code generators treat the parameter argument as holding a // list of options separated by commas. This helper function parses // a set of comma-delimited name/value pairs: e.g., diff --git a/cpp/thirdparty/protobuf-2.3.0/src/google/protobuf/compiler/command_line_interface.cc b/cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/compiler/command_line_interface.cc similarity index 80% rename from cpp/thirdparty/protobuf-2.3.0/src/google/protobuf/compiler/command_line_interface.cc rename to cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/compiler/command_line_interface.cc index d3495ca68..b9293c97d 100644 --- a/cpp/thirdparty/protobuf-2.3.0/src/google/protobuf/compiler/command_line_interface.cc +++ b/cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/compiler/command_line_interface.cc @@ -48,6 +48,9 @@ #include #include +#include + +#include #include #include #include @@ -56,14 +59,13 @@ #include #include #include +#include #include #include -#include #include #include #include -#include -#include +#include namespace google { @@ -144,7 +146,7 @@ void AddTrailingSlash(string* path) { bool VerifyDirectoryExists(const string& path) { if (path.empty()) return true; - if (access(path.c_str(), W_OK) == -1) { + if (access(path.c_str(), F_OK) == -1) { cerr << path << ": " << strerror(errno) << endl; return false; } else { @@ -182,14 +184,23 @@ bool TryCreateParentDirectory(const string& prefix, const string& filename) { class CommandLineInterface::ErrorPrinter : public MultiFileErrorCollector, public io::ErrorCollector { public: - ErrorPrinter(ErrorFormat format) : format_(format) {} + ErrorPrinter(ErrorFormat format, DiskSourceTree *tree = NULL) + : format_(format), tree_(tree) {} ~ErrorPrinter() {} // implements MultiFileErrorCollector ------------------------------ void AddError(const string& filename, int line, int column, const string& message) { - cerr << filename; + // Print full path when running under MSVS + string dfile; + if (format_ == CommandLineInterface::ERROR_FORMAT_MSVS && + tree_ != NULL && + tree_->VirtualFileToDiskFile(filename, &dfile)) { + cerr << dfile; + } else { + cerr << filename; + } // Users typically expect 1-based line/column numbers, so we add 1 // to each here. @@ -215,16 +226,17 @@ class CommandLineInterface::ErrorPrinter : public MultiFileErrorCollector, private: const ErrorFormat format_; + DiskSourceTree *tree_; }; // ------------------------------------------------------------------- -// An OutputDirectory implementation that buffers files in memory, then dumps +// A GeneratorContext implementation that buffers files in memory, then dumps // them all to disk on demand. -class CommandLineInterface::MemoryOutputDirectory : public OutputDirectory { +class CommandLineInterface::GeneratorContextImpl : public GeneratorContext { public: - MemoryOutputDirectory(); - ~MemoryOutputDirectory(); + GeneratorContextImpl(const vector& parsed_files); + ~GeneratorContextImpl(); // Write all files in the directory to disk at the given output location, // which must end in a '/'. @@ -238,10 +250,13 @@ class CommandLineInterface::MemoryOutputDirectory : public OutputDirectory { // format, unless one has already been written. void AddJarManifest(); - // implements OutputDirectory -------------------------------------- + // implements GeneratorContext -------------------------------------- io::ZeroCopyOutputStream* Open(const string& filename); io::ZeroCopyOutputStream* OpenForInsert( const string& filename, const string& insertion_point); + void ListParsedFiles(vector* output) { + *output = parsed_files_; + } private: friend class MemoryOutputStream; @@ -249,14 +264,15 @@ class CommandLineInterface::MemoryOutputDirectory : public OutputDirectory { // map instead of hash_map so that files are written in order (good when // writing zips). map files_; + const vector& parsed_files_; bool had_error_; }; class CommandLineInterface::MemoryOutputStream : public io::ZeroCopyOutputStream { public: - MemoryOutputStream(MemoryOutputDirectory* directory, const string& filename); - MemoryOutputStream(MemoryOutputDirectory* directory, const string& filename, + MemoryOutputStream(GeneratorContextImpl* directory, const string& filename); + MemoryOutputStream(GeneratorContextImpl* directory, const string& filename, const string& insertion_point); virtual ~MemoryOutputStream(); @@ -267,7 +283,7 @@ class CommandLineInterface::MemoryOutputStream private: // Where to insert the string when it's done. - MemoryOutputDirectory* directory_; + GeneratorContextImpl* directory_; string filename_; string insertion_point_; @@ -280,14 +296,17 @@ class CommandLineInterface::MemoryOutputStream // ------------------------------------------------------------------- -CommandLineInterface::MemoryOutputDirectory::MemoryOutputDirectory() - : had_error_(false) {} +CommandLineInterface::GeneratorContextImpl::GeneratorContextImpl( + const vector& parsed_files) + : parsed_files_(parsed_files), + had_error_(false) { +} -CommandLineInterface::MemoryOutputDirectory::~MemoryOutputDirectory() { +CommandLineInterface::GeneratorContextImpl::~GeneratorContextImpl() { STLDeleteValues(&files_); } -bool CommandLineInterface::MemoryOutputDirectory::WriteAllToDisk( +bool CommandLineInterface::GeneratorContextImpl::WriteAllToDisk( const string& prefix) { if (had_error_) { return false; @@ -362,7 +381,7 @@ bool CommandLineInterface::MemoryOutputDirectory::WriteAllToDisk( return true; } -bool CommandLineInterface::MemoryOutputDirectory::WriteAllToZip( +bool CommandLineInterface::GeneratorContextImpl::WriteAllToZip( const string& filename) { if (had_error_) { return false; @@ -403,7 +422,7 @@ bool CommandLineInterface::MemoryOutputDirectory::WriteAllToZip( return true; } -void CommandLineInterface::MemoryOutputDirectory::AddJarManifest() { +void CommandLineInterface::GeneratorContextImpl::AddJarManifest() { string** map_slot = &files_["META-INF/MANIFEST.MF"]; if (*map_slot == NULL) { *map_slot = new string( @@ -413,13 +432,13 @@ void CommandLineInterface::MemoryOutputDirectory::AddJarManifest() { } } -io::ZeroCopyOutputStream* CommandLineInterface::MemoryOutputDirectory::Open( +io::ZeroCopyOutputStream* CommandLineInterface::GeneratorContextImpl::Open( const string& filename) { return new MemoryOutputStream(this, filename); } io::ZeroCopyOutputStream* -CommandLineInterface::MemoryOutputDirectory::OpenForInsert( +CommandLineInterface::GeneratorContextImpl::OpenForInsert( const string& filename, const string& insertion_point) { return new MemoryOutputStream(this, filename, insertion_point); } @@ -427,14 +446,14 @@ CommandLineInterface::MemoryOutputDirectory::OpenForInsert( // ------------------------------------------------------------------- CommandLineInterface::MemoryOutputStream::MemoryOutputStream( - MemoryOutputDirectory* directory, const string& filename) + GeneratorContextImpl* directory, const string& filename) : directory_(directory), filename_(filename), inner_(new io::StringOutputStream(&data_)) { } CommandLineInterface::MemoryOutputStream::MemoryOutputStream( - MemoryOutputDirectory* directory, const string& filename, + GeneratorContextImpl* directory, const string& filename, const string& insertion_point) : directory_(directory), filename_(filename), @@ -548,6 +567,7 @@ CommandLineInterface::CommandLineInterface() : mode_(MODE_COMPILE), error_format_(ERROR_FORMAT_GCC), imports_in_descriptor_set_(false), + source_info_in_descriptor_set_(false), disallow_services_(false), inputs_are_proto_path_relative_(false) {} CommandLineInterface::~CommandLineInterface() {} @@ -556,9 +576,23 @@ void CommandLineInterface::RegisterGenerator(const string& flag_name, CodeGenerator* generator, const string& help_text) { GeneratorInfo info; + info.flag_name = flag_name; + info.generator = generator; + info.help_text = help_text; + generators_by_flag_name_[flag_name] = info; +} + +void CommandLineInterface::RegisterGenerator(const string& flag_name, + const string& option_flag_name, + CodeGenerator* generator, + const string& help_text) { + GeneratorInfo info; + info.flag_name = flag_name; + info.option_flag_name = option_flag_name; info.generator = generator; info.help_text = help_text; - generators_[flag_name] = info; + generators_by_flag_name_[flag_name] = info; + generators_by_option_name_[option_flag_name] = info; } void CommandLineInterface::AllowPlugins(const string& exe_name_prefix) { @@ -567,7 +601,14 @@ void CommandLineInterface::AllowPlugins(const string& exe_name_prefix) { int CommandLineInterface::Run(int argc, const char* const argv[]) { Clear(); - if (!ParseArguments(argc, argv)) return 1; + switch (ParseArguments(argc, argv)) { + case PARSE_ARGUMENT_DONE_AND_EXIT: + return 0; + case PARSE_ARGUMENT_FAIL: + return 1; + case PARSE_ARGUMENT_DONE_AND_CONTINUE: + break; + } // Set up the source tree. DiskSourceTree source_tree; @@ -583,7 +624,7 @@ int CommandLineInterface::Run(int argc, const char* const argv[]) { } // Allocate the Importer. - ErrorPrinter error_collector(error_format_); + ErrorPrinter error_collector(error_format_, &source_tree); Importer importer(&source_tree, &error_collector); vector parsed_files; @@ -603,11 +644,11 @@ int CommandLineInterface::Run(int argc, const char* const argv[]) { } } - // We construct a separate OutputDirectory for each output location. Note + // We construct a separate GeneratorContext for each output location. Note // that two code generators may output to the same location, in which case - // they should share a single OutputDirectory (so that OpenForInsert() works). - typedef hash_map OutputDirectoryMap; - OutputDirectoryMap output_directories; + // they should share a single GeneratorContext so that OpenForInsert() works. + typedef hash_map GeneratorContextMap; + GeneratorContextMap output_directories; // Generate output. if (mode_ == MODE_COMPILE) { @@ -617,11 +658,11 @@ int CommandLineInterface::Run(int argc, const char* const argv[]) { !HasSuffixString(output_location, ".jar")) { AddTrailingSlash(&output_location); } - MemoryOutputDirectory** map_slot = &output_directories[output_location]; + GeneratorContextImpl** map_slot = &output_directories[output_location]; if (*map_slot == NULL) { // First time we've seen this output location. - *map_slot = new MemoryOutputDirectory; + *map_slot = new GeneratorContextImpl(parsed_files); } if (!GenerateOutput(parsed_files, output_directives_[i], *map_slot)) { @@ -632,10 +673,10 @@ int CommandLineInterface::Run(int argc, const char* const argv[]) { } // Write all output to disk. - for (OutputDirectoryMap::iterator iter = output_directories.begin(); + for (GeneratorContextMap::iterator iter = output_directories.begin(); iter != output_directories.end(); ++iter) { const string& location = iter->first; - MemoryOutputDirectory* directory = iter->second; + GeneratorContextImpl* directory = iter->second; if (HasSuffixString(location, "/")) { if (!directory->WriteAllToDisk(location)) { STLDeleteValues(&output_directories); @@ -695,6 +736,7 @@ void CommandLineInterface::Clear() { mode_ = MODE_COMPILE; imports_in_descriptor_set_ = false; + source_info_in_descriptor_set_ = false; disallow_services_ = false; } @@ -737,7 +779,8 @@ bool CommandLineInterface::MakeInputsBeProtoPathRelative( return true; } -bool CommandLineInterface::ParseArguments(int argc, const char* const argv[]) { +CommandLineInterface::ParseArgumentStatus +CommandLineInterface::ParseArguments(int argc, const char* const argv[]) { executable_name_ = argv[0]; // Iterate through all arguments and parse them. @@ -751,41 +794,50 @@ bool CommandLineInterface::ParseArguments(int argc, const char* const argv[]) { if (name == "--decode") { cerr << "To decode an unknown message, use --decode_raw." << endl; } - return false; + return PARSE_ARGUMENT_FAIL; } else { ++i; value = argv[i]; } } - if (!InterpretArgument(name, value)) return false; + ParseArgumentStatus status = InterpretArgument(name, value); + if (status != PARSE_ARGUMENT_DONE_AND_CONTINUE) + return status; } // If no --proto_path was given, use the current working directory. if (proto_path_.empty()) { - proto_path_.push_back(make_pair("", ".")); + // Don't use make_pair as the old/default standard library on Solaris + // doesn't support it without explicit template parameters, which are + // incompatible with C++0x's make_pair. + proto_path_.push_back(pair("", ".")); } // Check some errror cases. bool decoding_raw = (mode_ == MODE_DECODE) && codec_type_.empty(); if (decoding_raw && !input_files_.empty()) { cerr << "When using --decode_raw, no input files should be given." << endl; - return false; + return PARSE_ARGUMENT_FAIL; } else if (!decoding_raw && input_files_.empty()) { cerr << "Missing input file." << endl; - return false; + return PARSE_ARGUMENT_FAIL; } if (mode_ == MODE_COMPILE && output_directives_.empty() && descriptor_set_name_.empty()) { cerr << "Missing output directives." << endl; - return false; + return PARSE_ARGUMENT_FAIL; } if (imports_in_descriptor_set_ && descriptor_set_name_.empty()) { cerr << "--include_imports only makes sense when combined with " "--descriptor_set_out." << endl; } + if (source_info_in_descriptor_set_ && descriptor_set_name_.empty()) { + cerr << "--include_source_info only makes sense when combined with " + "--descriptor_set_out." << endl; + } - return true; + return PARSE_ARGUMENT_DONE_AND_CONTINUE; } bool CommandLineInterface::ParseArgument(const char* arg, @@ -835,6 +887,7 @@ bool CommandLineInterface::ParseArgument(const char* arg, if (*name == "-h" || *name == "--help" || *name == "--disallow_services" || *name == "--include_imports" || + *name == "--include_source_info" || *name == "--version" || *name == "--decode_raw") { // HACK: These are the only flags that don't take a value. @@ -847,8 +900,9 @@ bool CommandLineInterface::ParseArgument(const char* arg, return true; } -bool CommandLineInterface::InterpretArgument(const string& name, - const string& value) { +CommandLineInterface::ParseArgumentStatus +CommandLineInterface::InterpretArgument(const string& name, + const string& value) { if (name.empty()) { // Not a flag. Just a filename. if (value.empty()) { @@ -856,7 +910,7 @@ bool CommandLineInterface::InterpretArgument(const string& name, "arguments to " << executable_name_ << ". This is actually " "sort of hard to do. Congrats. Unfortunately it is not valid " "input so the program is going to die now." << endl; - return false; + return PARSE_ARGUMENT_FAIL; } input_files_.push_back(value); @@ -872,7 +926,7 @@ bool CommandLineInterface::InterpretArgument(const string& name, string virtual_path; string disk_path; - int equals_pos = parts[i].find_first_of('='); + string::size_type equals_pos = parts[i].find_first_of('='); if (equals_pos == string::npos) { virtual_path = ""; disk_path = parts[i]; @@ -884,7 +938,7 @@ bool CommandLineInterface::InterpretArgument(const string& name, if (disk_path.empty()) { cerr << "--proto_path passed empty directory name. (Use \".\" for " "current directory.)" << endl; - return false; + return PARSE_ARGUMENT_FAIL; } // Make sure disk path exists, warn otherwise. @@ -892,35 +946,45 @@ bool CommandLineInterface::InterpretArgument(const string& name, cerr << disk_path << ": warning: directory does not exist." << endl; } - proto_path_.push_back(make_pair(virtual_path, disk_path)); + // Don't use make_pair as the old/default standard library on Solaris + // doesn't support it without explicit template parameters, which are + // incompatible with C++0x's make_pair. + proto_path_.push_back(pair(virtual_path, disk_path)); } } else if (name == "-o" || name == "--descriptor_set_out") { if (!descriptor_set_name_.empty()) { cerr << name << " may only be passed once." << endl; - return false; + return PARSE_ARGUMENT_FAIL; } if (value.empty()) { cerr << name << " requires a non-empty value." << endl; - return false; + return PARSE_ARGUMENT_FAIL; } if (mode_ != MODE_COMPILE) { cerr << "Cannot use --encode or --decode and generate descriptors at the " "same time." << endl; - return false; + return PARSE_ARGUMENT_FAIL; } descriptor_set_name_ = value; } else if (name == "--include_imports") { if (imports_in_descriptor_set_) { cerr << name << " may only be passed once." << endl; - return false; + return PARSE_ARGUMENT_FAIL; } imports_in_descriptor_set_ = true; + } else if (name == "--include_source_info") { + if (source_info_in_descriptor_set_) { + cerr << name << " may only be passed once." << endl; + return PARSE_ARGUMENT_FAIL; + } + source_info_in_descriptor_set_ = true; + } else if (name == "-h" || name == "--help") { PrintHelpText(); - return false; // Exit without running compiler. + return PARSE_ARGUMENT_DONE_AND_EXIT; // Exit without running compiler. } else if (name == "--version") { if (!version_info_.empty()) { @@ -929,7 +993,7 @@ bool CommandLineInterface::InterpretArgument(const string& name, cout << "libprotoc " << protobuf::internal::VersionString(GOOGLE_PROTOBUF_VERSION) << endl; - return false; // Exit without running compiler. + return PARSE_ARGUMENT_DONE_AND_EXIT; // Exit without running compiler. } else if (name == "--disallow_services") { disallow_services_ = true; @@ -938,12 +1002,12 @@ bool CommandLineInterface::InterpretArgument(const string& name, name == "--decode_raw") { if (mode_ != MODE_COMPILE) { cerr << "Only one of --encode and --decode can be specified." << endl; - return false; + return PARSE_ARGUMENT_FAIL; } if (!output_directives_.empty() || !descriptor_set_name_.empty()) { cerr << "Cannot use " << name << " and generate code or descriptors at the same time." << endl; - return false; + return PARSE_ARGUMENT_FAIL; } mode_ = (name == "--encode") ? MODE_ENCODE : MODE_DECODE; @@ -953,10 +1017,10 @@ bool CommandLineInterface::InterpretArgument(const string& name, if (name == "--decode") { cerr << "To decode an unknown message, use --decode_raw." << endl; } - return false; + return PARSE_ARGUMENT_FAIL; } else if (!value.empty() && name == "--decode_raw") { cerr << "--decode_raw does not take a parameter." << endl; - return false; + return PARSE_ARGUMENT_FAIL; } codec_type_ = value; @@ -968,16 +1032,16 @@ bool CommandLineInterface::InterpretArgument(const string& name, error_format_ = ERROR_FORMAT_MSVS; } else { cerr << "Unknown error format: " << value << endl; - return false; + return PARSE_ARGUMENT_FAIL; } } else if (name == "--plugin") { if (plugin_prefix_.empty()) { cerr << "This compiler does not support plugins." << endl; - return false; + return PARSE_ARGUMENT_FAIL; } - string name; + string plugin_name; string path; string::size_type equals_pos = value.find_first_of('='); @@ -985,57 +1049,68 @@ bool CommandLineInterface::InterpretArgument(const string& name, // Use the basename of the file. string::size_type slash_pos = value.find_last_of('/'); if (slash_pos == string::npos) { - name = value; + plugin_name = value; } else { - name = value.substr(slash_pos + 1); + plugin_name = value.substr(slash_pos + 1); } path = value; } else { - name = value.substr(0, equals_pos); + plugin_name = value.substr(0, equals_pos); path = value.substr(equals_pos + 1); } - plugins_[name] = path; + plugins_[plugin_name] = path; } else { // Some other flag. Look it up in the generators list. - const GeneratorInfo* generator_info = FindOrNull(generators_, name); + const GeneratorInfo* generator_info = + FindOrNull(generators_by_flag_name_, name); if (generator_info == NULL && (plugin_prefix_.empty() || !HasSuffixString(name, "_out"))) { - cerr << "Unknown flag: " << name << endl; - return false; - } + // Check if it's a generator option flag. + generator_info = FindOrNull(generators_by_option_name_, name); + if (generator_info == NULL) { + cerr << "Unknown flag: " << name << endl; + return PARSE_ARGUMENT_FAIL; + } else { + string* parameters = &generator_parameters_[generator_info->flag_name]; + if (!parameters->empty()) { + parameters->append(","); + } + parameters->append(value); + } + } else { + // It's an output flag. Add it to the output directives. + if (mode_ != MODE_COMPILE) { + cerr << "Cannot use --encode or --decode and generate code at the " + "same time." << endl; + return PARSE_ARGUMENT_FAIL; + } - // It's an output flag. Add it to the output directives. - if (mode_ != MODE_COMPILE) { - cerr << "Cannot use --encode or --decode and generate code at the " - "same time." << endl; - return false; - } + OutputDirective directive; + directive.name = name; + if (generator_info == NULL) { + directive.generator = NULL; + } else { + directive.generator = generator_info->generator; + } - OutputDirective directive; - directive.name = name; - if (generator_info == NULL) { - directive.generator = NULL; - } else { - directive.generator = generator_info->generator; - } + // Split value at ':' to separate the generator parameter from the + // filename. However, avoid doing this if the colon is part of a valid + // Windows-style absolute path. + string::size_type colon_pos = value.find_first_of(':'); + if (colon_pos == string::npos || IsWindowsAbsolutePath(value)) { + directive.output_location = value; + } else { + directive.parameter = value.substr(0, colon_pos); + directive.output_location = value.substr(colon_pos + 1); + } - // Split value at ':' to separate the generator parameter from the - // filename. However, avoid doing this if the colon is part of a valid - // Windows-style absolute path. - string::size_type colon_pos = value.find_first_of(':'); - if (colon_pos == string::npos || IsWindowsAbsolutePath(value)) { - directive.output_location = value; - } else { - directive.parameter = value.substr(0, colon_pos); - directive.output_location = value.substr(colon_pos + 1); + output_directives_.push_back(directive); } - - output_directives_.push_back(directive); } - return true; + return PARSE_ARGUMENT_DONE_AND_CONTINUE; } void CommandLineInterface::PrintHelpText() { @@ -1068,6 +1143,12 @@ void CommandLineInterface::PrintHelpText() { " --include_imports When using --descriptor_set_out, also include\n" " all dependencies of the input files in the\n" " set, so that the set is self-contained.\n" +" --include_source_info When using --descriptor_set_out, do not strip\n" +" SourceCodeInfo from the FileDescriptorProto.\n" +" This results in vastly larger descriptors that\n" +" include information about the original\n" +" location of each decl in the source file as\n" +" well as surrounding comments.\n" " --error_format=FORMAT Set the format in which to print errors.\n" " FORMAT may be 'gcc' (the default) or 'msvs'\n" " (Microsoft Visual Studio format)." << endl; @@ -1083,8 +1164,8 @@ void CommandLineInterface::PrintHelpText() { " the executable's own name differs." << endl; } - for (GeneratorMap::iterator iter = generators_.begin(); - iter != generators_.end(); ++iter) { + for (GeneratorMap::iterator iter = generators_by_flag_name_.begin(); + iter != generators_by_flag_name_.end(); ++iter) { // FIXME(kenton): If the text is long enough it will wrap, which is ugly, // but fixing this nicely (e.g. splitting on spaces) is probably more // trouble than it's worth. @@ -1097,7 +1178,7 @@ void CommandLineInterface::PrintHelpText() { bool CommandLineInterface::GenerateOutput( const vector& parsed_files, const OutputDirective& output_directive, - OutputDirectory* output_directory) { + GeneratorContext* generator_context) { // Call the generator. string error; if (output_directive.generator == NULL) { @@ -1112,16 +1193,22 @@ bool CommandLineInterface::GenerateOutput( if (!GeneratePluginOutput(parsed_files, plugin_name, output_directive.parameter, - output_directory, &error)) { + generator_context, &error)) { cerr << output_directive.name << ": " << error << endl; return false; } } else { // Regular generator. + string parameters = output_directive.parameter; + if (!generator_parameters_[output_directive.name].empty()) { + if (!parameters.empty()) { + parameters.append(","); + } + parameters.append(generator_parameters_[output_directive.name]); + } for (int i = 0; i < parsed_files.size(); i++) { - if (!output_directive.generator->Generate( - parsed_files[i], output_directive.parameter, - output_directory, &error)) { + if (!output_directive.generator->Generate(parsed_files[i], parameters, + generator_context, &error)) { // Generator returned an error. cerr << output_directive.name << ": " << parsed_files[i]->name() << ": " << error << endl; @@ -1137,7 +1224,7 @@ bool CommandLineInterface::GeneratePluginOutput( const vector& parsed_files, const string& plugin_name, const string& parameter, - OutputDirectory* output_directory, + GeneratorContext* generator_context, string* error) { CodeGeneratorRequest request; CodeGeneratorResponse response; @@ -1150,8 +1237,9 @@ bool CommandLineInterface::GeneratePluginOutput( set already_seen; for (int i = 0; i < parsed_files.size(); i++) { request.add_file_to_generate(parsed_files[i]->name()); - GetTransitiveDependencies(parsed_files[i], &already_seen, - request.mutable_proto_file()); + GetTransitiveDependencies(parsed_files[i], + true, // Include source code info. + &already_seen, request.mutable_proto_file()); } // Invoke the plugin. @@ -1180,14 +1268,14 @@ bool CommandLineInterface::GeneratePluginOutput( // We reset current_output to NULL first so that the old file is closed // before the new one is opened. current_output.reset(); - current_output.reset(output_directory->OpenForInsert( + current_output.reset(generator_context->OpenForInsert( output_file.name(), output_file.insertion_point())); } else if (!output_file.name().empty()) { // Starting a new file. Open it. // We reset current_output to NULL first so that the old file is closed // before the new one is opened. current_output.reset(); - current_output.reset(output_directory->Open(output_file.name())); + current_output.reset(generator_context->Open(output_file.name())); } else if (current_output == NULL) { *error = strings::Substitute( "$0: First file chunk returned by plugin did not specify a file name.", @@ -1281,12 +1369,17 @@ bool CommandLineInterface::WriteDescriptorSet( if (imports_in_descriptor_set_) { set already_seen; for (int i = 0; i < parsed_files.size(); i++) { - GetTransitiveDependencies( - parsed_files[i], &already_seen, file_set.mutable_file()); + GetTransitiveDependencies(parsed_files[i], + source_info_in_descriptor_set_, + &already_seen, file_set.mutable_file()); } } else { for (int i = 0; i < parsed_files.size(); i++) { - parsed_files[i]->CopyTo(file_set.add_file()); + FileDescriptorProto* file_proto = file_set.add_file(); + parsed_files[i]->CopyTo(file_proto); + if (source_info_in_descriptor_set_) { + parsed_files[i]->CopySourceCodeInfoTo(file_proto); + } } } @@ -1316,7 +1409,7 @@ bool CommandLineInterface::WriteDescriptorSet( } void CommandLineInterface::GetTransitiveDependencies( - const FileDescriptor* file, + const FileDescriptor* file, bool include_source_code_info, set* already_seen, RepeatedPtrField* output) { if (!already_seen->insert(file).second) { @@ -1326,11 +1419,16 @@ void CommandLineInterface::GetTransitiveDependencies( // Add all dependencies. for (int i = 0; i < file->dependency_count(); i++) { - GetTransitiveDependencies(file->dependency(i), already_seen, output); + GetTransitiveDependencies(file->dependency(i), include_source_code_info, + already_seen, output); } // Add this file. - file->CopyTo(output->Add()); + FileDescriptorProto* new_descriptor = output->Add(); + file->CopyTo(new_descriptor); + if (include_source_code_info) { + file->CopySourceCodeInfoTo(new_descriptor); + } } diff --git a/cpp/thirdparty/protobuf-2.3.0/src/google/protobuf/compiler/command_line_interface.h b/cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/compiler/command_line_interface.h similarity index 85% rename from cpp/thirdparty/protobuf-2.3.0/src/google/protobuf/compiler/command_line_interface.h rename to cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/compiler/command_line_interface.h index d25a50e66..86ea9bde2 100644 --- a/cpp/thirdparty/protobuf-2.3.0/src/google/protobuf/compiler/command_line_interface.h +++ b/cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/compiler/command_line_interface.h @@ -56,7 +56,7 @@ template class RepeatedPtrField; // repeated_field.h namespace compiler { class CodeGenerator; // code_generator.h -class OutputDirectory; // code_generator.h +class GeneratorContext; // code_generator.h class DiskSourceTree; // importer.h // This class implements the command-line interface to the protocol compiler. @@ -112,6 +112,19 @@ class LIBPROTOC_EXPORT CommandLineInterface { CodeGenerator* generator, const string& help_text); + // Register a code generator for a language. + // Besides flag_name you can specify another option_flag_name that could be + // used to pass extra parameters to the registered code generator. + // Suppose you have registered a generator by calling: + // command_line_interface.RegisterGenerator("--foo_out", "--foo_opt", ...) + // Then you could invoke the compiler with a command like: + // protoc --foo_out=enable_bar:outdir --foo_opt=enable_baz + // This will pass "enable_bar,enable_baz" as the parameter to the generator. + void RegisterGenerator(const string& flag_name, + const string& option_flag_name, + CodeGenerator* generator, + const string& help_text); + // Enables "plugins". In this mode, if a command-line flag ends with "_out" // but does not match any registered generator, the compiler will attempt to // find a "plugin" to implement the generator. Plugins are just executables. @@ -174,7 +187,7 @@ class LIBPROTOC_EXPORT CommandLineInterface { // ----------------------------------------------------------------- class ErrorPrinter; - class MemoryOutputDirectory; + class GeneratorContextImpl; class MemoryOutputStream; // Clear state from previous Run(). @@ -186,8 +199,15 @@ class LIBPROTOC_EXPORT CommandLineInterface { bool MakeInputsBeProtoPathRelative( DiskSourceTree* source_tree); + // Return status for ParseArguments() and InterpretArgument(). + enum ParseArgumentStatus { + PARSE_ARGUMENT_DONE_AND_CONTINUE, + PARSE_ARGUMENT_DONE_AND_EXIT, + PARSE_ARGUMENT_FAIL + }; + // Parse all command-line arguments. - bool ParseArguments(int argc, const char* const argv[]); + ParseArgumentStatus ParseArguments(int argc, const char* const argv[]); // Parses a command-line argument into a name/value pair. Returns // true if the next argument in the argv should be used as the value, @@ -203,7 +223,8 @@ class LIBPROTOC_EXPORT CommandLineInterface { bool ParseArgument(const char* arg, string* name, string* value); // Interprets arguments parsed with ParseArgument. - bool InterpretArgument(const string& name, const string& value); + ParseArgumentStatus InterpretArgument(const string& name, + const string& value); // Print the --help text to stderr. void PrintHelpText(); @@ -212,11 +233,11 @@ class LIBPROTOC_EXPORT CommandLineInterface { struct OutputDirective; // see below bool GenerateOutput(const vector& parsed_files, const OutputDirective& output_directive, - OutputDirectory* output_directory); + GeneratorContext* generator_context); bool GeneratePluginOutput(const vector& parsed_files, const string& plugin_name, const string& parameter, - OutputDirectory* output_directory, + GeneratorContext* generator_context, string* error); // Implements --encode and --decode. @@ -230,9 +251,11 @@ class LIBPROTOC_EXPORT CommandLineInterface { // protos will be ordered such that every file is listed before any file that // depends on it, so that you can call DescriptorPool::BuildFile() on them // in order. Any files in *already_seen will not be added, and each file - // added will be inserted into *already_seen. + // added will be inserted into *already_seen. If include_source_code_info is + // true then include the source code information in the FileDescriptorProtos. static void GetTransitiveDependencies( const FileDescriptor* file, + bool include_source_code_info, set* already_seen, RepeatedPtrField* output); @@ -244,13 +267,21 @@ class LIBPROTOC_EXPORT CommandLineInterface { // Version info set with SetVersionInfo(). string version_info_; - // Map from flag names to registered generators. + // Registered generators. struct GeneratorInfo { + string flag_name; + string option_flag_name; CodeGenerator* generator; string help_text; }; typedef map GeneratorMap; - GeneratorMap generators_; + GeneratorMap generators_by_flag_name_; + GeneratorMap generators_by_option_name_; + // A map from generator names to the parameters specified using the option + // flag. For example, if the user invokes the compiler with: + // protoc --foo_out=outputdir --foo_opt=enable_bar ... + // Then there will be an entry ("--foo_out", "enable_bar") in this map. + map generator_parameters_; // See AllowPlugins(). If this is empty, plugins aren't allowed. string plugin_prefix_; @@ -302,6 +333,10 @@ class LIBPROTOC_EXPORT CommandLineInterface { // the .proto files listed on the command-line are added. bool imports_in_descriptor_set_; + // True if --include_source_info was given, meaning that we should not strip + // SourceCodeInfo from the DescriptorSet. + bool source_info_in_descriptor_set_; + // Was the --disallow_services flag used? bool disallow_services_; diff --git a/cpp/thirdparty/protobuf-2.3.0/src/google/protobuf/compiler/command_line_interface_unittest.cc b/cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/compiler/command_line_interface_unittest.cc similarity index 86% rename from cpp/thirdparty/protobuf-2.3.0/src/google/protobuf/compiler/command_line_interface_unittest.cc rename to cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/compiler/command_line_interface_unittest.cc index 9129ebf06..165599231 100644 --- a/cpp/thirdparty/protobuf-2.3.0/src/google/protobuf/compiler/command_line_interface_unittest.cc +++ b/cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/compiler/command_line_interface_unittest.cc @@ -48,6 +48,7 @@ #include #include #include +#include #include #include #include @@ -121,6 +122,10 @@ class CommandLineInterfaceTest : public testing::Test { // substring. void ExpectErrorSubstring(const string& expected_substring); + // Like ExpectErrorSubstring, but checks that Run() returned zero. + void ExpectErrorSubstringWithZeroReturnCode( + const string& expected_substring); + // Returns true if ExpectErrorSubstring(expected_substring) would pass, but // does not fail otherwise. bool HasAlternateErrorSubstring(const string& expected_substring); @@ -143,6 +148,10 @@ class CommandLineInterfaceTest : public testing::Test { const string& proto_name, const string& message_name, const string& output_directory); + void ExpectGeneratedWithMultipleInputs(const string& generator_name, + const string& all_proto_names, + const string& proto_name, + const string& message_name); void ExpectGeneratedWithInsertions(const string& generator_name, const string& parameter, const string& insertions, @@ -190,7 +199,7 @@ class CommandLineInterfaceTest::NullCodeGenerator : public CodeGenerator { // implements CodeGenerator ---------------------------------------- bool Generate(const FileDescriptor* file, const string& parameter, - OutputDirectory* output_directory, + GeneratorContext* context, string* error) const { called_ = true; parameter_ = parameter; @@ -220,7 +229,7 @@ void CommandLineInterfaceTest::SetUp() { // Register generators. CodeGenerator* generator = new MockCodeGenerator("test_generator"); mock_generators_to_delete_.push_back(generator); - cli_.RegisterGenerator("--test_out", generator, "Test output."); + cli_.RegisterGenerator("--test_out", "--test_opt", generator, "Test output."); cli_.RegisterGenerator("-t", generator, "Test output."); generator = new MockCodeGenerator("alt_generator"); @@ -251,7 +260,6 @@ void CommandLineInterfaceTest::Run(const string& command) { if (!disallow_plugins_) { cli_.AllowPlugins("prefix-"); - const char* possible_paths[] = { // When building with shared libraries, libtool hides the real executable // in .libs and puts a fake wrapper in the current directory. @@ -341,6 +349,12 @@ void CommandLineInterfaceTest::ExpectErrorSubstring( EXPECT_PRED_FORMAT2(testing::IsSubstring, expected_substring, error_text_); } +void CommandLineInterfaceTest::ExpectErrorSubstringWithZeroReturnCode( + const string& expected_substring) { + EXPECT_EQ(0, return_code_); + EXPECT_PRED_FORMAT2(testing::IsSubstring, expected_substring, error_text_); +} + bool CommandLineInterfaceTest::HasAlternateErrorSubstring( const string& expected_substring) { EXPECT_NE(0, return_code_); @@ -353,7 +367,8 @@ void CommandLineInterfaceTest::ExpectGenerated( const string& proto_name, const string& message_name) { MockCodeGenerator::ExpectGenerated( - generator_name, parameter, "", proto_name, message_name, temp_directory_); + generator_name, parameter, "", proto_name, message_name, proto_name, + temp_directory_); } void CommandLineInterfaceTest::ExpectGenerated( @@ -363,10 +378,21 @@ void CommandLineInterfaceTest::ExpectGenerated( const string& message_name, const string& output_directory) { MockCodeGenerator::ExpectGenerated( - generator_name, parameter, "", proto_name, message_name, + generator_name, parameter, "", proto_name, message_name, proto_name, temp_directory_ + "/" + output_directory); } +void CommandLineInterfaceTest::ExpectGeneratedWithMultipleInputs( + const string& generator_name, + const string& all_proto_names, + const string& proto_name, + const string& message_name) { + MockCodeGenerator::ExpectGenerated( + generator_name, "", "", proto_name, message_name, + all_proto_names, + temp_directory_); +} + void CommandLineInterfaceTest::ExpectGeneratedWithInsertions( const string& generator_name, const string& parameter, @@ -375,7 +401,7 @@ void CommandLineInterfaceTest::ExpectGeneratedWithInsertions( const string& message_name) { MockCodeGenerator::ExpectGenerated( generator_name, parameter, insertions, proto_name, message_name, - temp_directory_); + proto_name, temp_directory_); } void CommandLineInterfaceTest::ExpectNullCodeGeneratorCalled( @@ -455,8 +481,44 @@ TEST_F(CommandLineInterfaceTest, MultipleInputs) { "--proto_path=$tmpdir foo.proto bar.proto"); ExpectNoErrors(); - ExpectGenerated("test_generator", "", "foo.proto", "Foo"); - ExpectGenerated("test_generator", "", "bar.proto", "Bar"); + ExpectGeneratedWithMultipleInputs("test_generator", "foo.proto,bar.proto", + "foo.proto", "Foo"); + ExpectGeneratedWithMultipleInputs("test_generator", "foo.proto,bar.proto", + "bar.proto", "Bar"); + ExpectGeneratedWithMultipleInputs("test_plugin", "foo.proto,bar.proto", + "foo.proto", "Foo"); + ExpectGeneratedWithMultipleInputs("test_plugin", "foo.proto,bar.proto", + "bar.proto", "Bar"); +} + +TEST_F(CommandLineInterfaceTest, MultipleInputsWithImport) { + // Test parsing multiple input files with an import of a separate file. + + CreateTempFile("foo.proto", + "syntax = \"proto2\";\n" + "message Foo {}\n"); + CreateTempFile("bar.proto", + "syntax = \"proto2\";\n" + "import \"baz.proto\";\n" + "message Bar {\n" + " optional Baz a = 1;\n" + "}\n"); + CreateTempFile("baz.proto", + "syntax = \"proto2\";\n" + "message Baz {}\n"); + + Run("protocol_compiler --test_out=$tmpdir --plug_out=$tmpdir " + "--proto_path=$tmpdir foo.proto bar.proto"); + + ExpectNoErrors(); + ExpectGeneratedWithMultipleInputs("test_generator", "foo.proto,bar.proto", + "foo.proto", "Foo"); + ExpectGeneratedWithMultipleInputs("test_generator", "foo.proto,bar.proto", + "bar.proto", "Bar"); + ExpectGeneratedWithMultipleInputs("test_plugin", "foo.proto,bar.proto", + "foo.proto", "Foo"); + ExpectGeneratedWithMultipleInputs("test_plugin", "foo.proto,bar.proto", + "bar.proto", "Bar"); } TEST_F(CommandLineInterfaceTest, CreateDirectory) { @@ -492,6 +554,32 @@ TEST_F(CommandLineInterfaceTest, GeneratorParameters) { ExpectGenerated("test_plugin", "TestPluginParameter", "foo.proto", "Foo"); } +TEST_F(CommandLineInterfaceTest, ExtraGeneratorParameters) { + // Test that generator parameters specified with the option flag are + // correctly passed to the code generator. + + CreateTempFile("foo.proto", + "syntax = \"proto2\";\n" + "message Foo {}\n"); + // Create the "a" and "b" sub-directories. + CreateTempDir("a"); + CreateTempDir("b"); + + Run("protocol_compiler " + "--test_opt=foo1 " + "--test_out=bar:$tmpdir/a " + "--test_opt=foo2 " + "--test_out=baz:$tmpdir/b " + "--test_opt=foo3 " + "--proto_path=$tmpdir foo.proto"); + + ExpectNoErrors(); + ExpectGenerated( + "test_generator", "bar,foo1,foo2,foo3", "foo.proto", "Foo", "a"); + ExpectGenerated( + "test_generator", "baz,foo1,foo2,foo3", "foo.proto", "Foo", "b"); +} + TEST_F(CommandLineInterfaceTest, Insert) { // Test running a generator that inserts code into another's output. @@ -515,7 +603,7 @@ TEST_F(CommandLineInterfaceTest, Insert) { "foo.proto", "Foo"); } -#if defined(_WIN32) || defined(__CYGWIN__) +#if defined(_WIN32) TEST_F(CommandLineInterfaceTest, WindowsOutputPath) { // Test that the output path can be a Windows-style path. @@ -727,6 +815,33 @@ TEST_F(CommandLineInterfaceTest, WriteDescriptorSet) { if (HasFatalFailure()) return; ASSERT_EQ(1, descriptor_set.file_size()); EXPECT_EQ("bar.proto", descriptor_set.file(0).name()); + // Descriptor set should not have source code info. + EXPECT_FALSE(descriptor_set.file(0).has_source_code_info()); +} + +TEST_F(CommandLineInterfaceTest, WriteDescriptorSetWithSourceInfo) { + CreateTempFile("foo.proto", + "syntax = \"proto2\";\n" + "message Foo {}\n"); + CreateTempFile("bar.proto", + "syntax = \"proto2\";\n" + "import \"foo.proto\";\n" + "message Bar {\n" + " optional Foo foo = 1;\n" + "}\n"); + + Run("protocol_compiler --descriptor_set_out=$tmpdir/descriptor_set " + "--include_source_info --proto_path=$tmpdir bar.proto"); + + ExpectNoErrors(); + + FileDescriptorSet descriptor_set; + ReadDescriptorSet("descriptor_set", &descriptor_set); + if (HasFatalFailure()) return; + ASSERT_EQ(1, descriptor_set.file_size()); + EXPECT_EQ("bar.proto", descriptor_set.file(0).name()); + // Source code info included. + EXPECT_TRUE(descriptor_set.file(0).has_source_code_info()); } TEST_F(CommandLineInterfaceTest, WriteTransitiveDescriptorSet) { @@ -755,6 +870,40 @@ TEST_F(CommandLineInterfaceTest, WriteTransitiveDescriptorSet) { } EXPECT_EQ("foo.proto", descriptor_set.file(0).name()); EXPECT_EQ("bar.proto", descriptor_set.file(1).name()); + // Descriptor set should not have source code info. + EXPECT_FALSE(descriptor_set.file(0).has_source_code_info()); + EXPECT_FALSE(descriptor_set.file(1).has_source_code_info()); +} + +TEST_F(CommandLineInterfaceTest, WriteTransitiveDescriptorSetWithSourceInfo) { + CreateTempFile("foo.proto", + "syntax = \"proto2\";\n" + "message Foo {}\n"); + CreateTempFile("bar.proto", + "syntax = \"proto2\";\n" + "import \"foo.proto\";\n" + "message Bar {\n" + " optional Foo foo = 1;\n" + "}\n"); + + Run("protocol_compiler --descriptor_set_out=$tmpdir/descriptor_set " + "--include_imports --include_source_info --proto_path=$tmpdir bar.proto"); + + ExpectNoErrors(); + + FileDescriptorSet descriptor_set; + ReadDescriptorSet("descriptor_set", &descriptor_set); + if (HasFatalFailure()) return; + ASSERT_EQ(2, descriptor_set.file_size()); + if (descriptor_set.file(0).name() == "bar.proto") { + std::swap(descriptor_set.mutable_file()->mutable_data()[0], + descriptor_set.mutable_file()->mutable_data()[1]); + } + EXPECT_EQ("foo.proto", descriptor_set.file(0).name()); + EXPECT_EQ("bar.proto", descriptor_set.file(1).name()); + // Source code info included. + EXPECT_TRUE(descriptor_set.file(0).has_source_code_info()); + EXPECT_TRUE(descriptor_set.file(1).has_source_code_info()); } // ------------------------------------------------------------------- @@ -1077,6 +1226,17 @@ TEST_F(CommandLineInterfaceTest, GeneratorPluginCrash) { #endif } +TEST_F(CommandLineInterfaceTest, PluginReceivesSourceCodeInfo) { + CreateTempFile("foo.proto", + "syntax = \"proto2\";\n" + "message MockCodeGenerator_HasSourceCodeInfo {}\n"); + + Run("protocol_compiler --plug_out=$tmpdir --proto_path=$tmpdir foo.proto"); + + ExpectErrorSubstring( + "Saw message type MockCodeGenerator_HasSourceCodeInfo: 1."); +} + TEST_F(CommandLineInterfaceTest, GeneratorPluginNotFound) { // Test what happens if the plugin isn't found. @@ -1089,9 +1249,8 @@ TEST_F(CommandLineInterfaceTest, GeneratorPluginNotFound) { "--proto_path=$tmpdir error.proto"); #ifdef _WIN32 - ExpectErrorSubstring( - "--badplug_out: prefix-gen-badplug: The system cannot find the file " - "specified."); + ExpectErrorSubstring("--badplug_out: prefix-gen-badplug: " + + Subprocess::Win32ErrorMessage(ERROR_FILE_NOT_FOUND)); #else // Error written to stdout by child process after exec() fails. ExpectErrorSubstring( @@ -1120,11 +1279,11 @@ TEST_F(CommandLineInterfaceTest, GeneratorPluginNotAllowed) { TEST_F(CommandLineInterfaceTest, HelpText) { Run("test_exec_name --help"); - ExpectErrorSubstring("Usage: test_exec_name "); - ExpectErrorSubstring("--test_out=OUT_DIR"); - ExpectErrorSubstring("Test output."); - ExpectErrorSubstring("--alt_out=OUT_DIR"); - ExpectErrorSubstring("Alt output."); + ExpectErrorSubstringWithZeroReturnCode("Usage: test_exec_name "); + ExpectErrorSubstringWithZeroReturnCode("--test_out=OUT_DIR"); + ExpectErrorSubstringWithZeroReturnCode("Test output."); + ExpectErrorSubstringWithZeroReturnCode("--alt_out=OUT_DIR"); + ExpectErrorSubstringWithZeroReturnCode("Alt output."); } TEST_F(CommandLineInterfaceTest, GccFormatErrors) { @@ -1153,7 +1312,7 @@ TEST_F(CommandLineInterfaceTest, MsvsFormatErrors) { "--proto_path=$tmpdir --error_format=msvs foo.proto"); ExpectErrorText( - "foo.proto(2) : error in column=1: Expected top-level statement " + "$tmpdir/foo.proto(2) : error in column=1: Expected top-level statement " "(e.g. \"message\").\n"); } diff --git a/cpp/thirdparty/protobuf-2.3.0/src/google/protobuf/compiler/cpp/cpp_bootstrap_unittest.cc b/cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/compiler/cpp/cpp_bootstrap_unittest.cc similarity index 83% rename from cpp/thirdparty/protobuf-2.3.0/src/google/protobuf/compiler/cpp/cpp_bootstrap_unittest.cc rename to cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/compiler/cpp/cpp_bootstrap_unittest.cc index 30b1d2bf3..b7c1766bf 100644 --- a/cpp/thirdparty/protobuf-2.3.0/src/google/protobuf/compiler/cpp/cpp_bootstrap_unittest.cc +++ b/cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/compiler/cpp/cpp_bootstrap_unittest.cc @@ -48,8 +48,8 @@ #include #include #include -#include #include +#include #include #include @@ -79,10 +79,10 @@ class MockErrorCollector : public MultiFileErrorCollector { } }; -class MockOutputDirectory : public OutputDirectory { +class MockGeneratorContext : public GeneratorContext { public: - MockOutputDirectory() {} - ~MockOutputDirectory() { + MockGeneratorContext() {} + ~MockGeneratorContext() { STLDeleteValues(&files_); } @@ -102,7 +102,7 @@ class MockOutputDirectory : public OutputDirectory { "to your CL."; } - // implements OutputDirectory -------------------------------------- + // implements GeneratorContext -------------------------------------- virtual io::ZeroCopyOutputStream* Open(const string& filename) { string** map_slot = &files_[filename]; @@ -130,24 +130,24 @@ TEST(BootstrapTest, GeneratedDescriptorMatches) { ASSERT_TRUE(plugin_proto_file != NULL); CppGenerator generator; - MockOutputDirectory output_directory; + MockGeneratorContext context; string error; string parameter; parameter = "dllexport_decl=LIBPROTOBUF_EXPORT"; ASSERT_TRUE(generator.Generate(proto_file, parameter, - &output_directory, &error)); + &context, &error)); parameter = "dllexport_decl=LIBPROTOC_EXPORT"; ASSERT_TRUE(generator.Generate(plugin_proto_file, parameter, - &output_directory, &error)); - - output_directory.ExpectFileMatches("google/protobuf/descriptor.pb.h", - "google/protobuf/descriptor.pb.h"); - output_directory.ExpectFileMatches("google/protobuf/descriptor.pb.cc", - "google/protobuf/descriptor.pb.cc"); - output_directory.ExpectFileMatches("google/protobuf/compiler/plugin.pb.h", - "google/protobuf/compiler/plugin.pb.h"); - output_directory.ExpectFileMatches("google/protobuf/compiler/plugin.pb.cc", - "google/protobuf/compiler/plugin.pb.cc"); + &context, &error)); + + context.ExpectFileMatches("google/protobuf/descriptor.pb.h", + "google/protobuf/descriptor.pb.h"); + context.ExpectFileMatches("google/protobuf/descriptor.pb.cc", + "google/protobuf/descriptor.pb.cc"); + context.ExpectFileMatches("google/protobuf/compiler/plugin.pb.h", + "google/protobuf/compiler/plugin.pb.h"); + context.ExpectFileMatches("google/protobuf/compiler/plugin.pb.cc", + "google/protobuf/compiler/plugin.pb.cc"); } } // namespace diff --git a/cpp/thirdparty/protobuf-2.3.0/src/google/protobuf/compiler/cpp/cpp_enum.cc b/cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/compiler/cpp/cpp_enum.cc similarity index 98% rename from cpp/thirdparty/protobuf-2.3.0/src/google/protobuf/compiler/cpp/cpp_enum.cc rename to cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/compiler/cpp/cpp_enum.cc index 76d2b7985..67c12d7ab 100644 --- a/cpp/thirdparty/protobuf-2.3.0/src/google/protobuf/compiler/cpp/cpp_enum.cc +++ b/cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/compiler/cpp/cpp_enum.cc @@ -46,10 +46,10 @@ namespace compiler { namespace cpp { EnumGenerator::EnumGenerator(const EnumDescriptor* descriptor, - const string& dllexport_decl) + const Options& options) : descriptor_(descriptor), classname_(ClassName(descriptor, false)), - dllexport_decl_(dllexport_decl) { + options_(options) { } EnumGenerator::~EnumGenerator() {} @@ -88,10 +88,10 @@ void EnumGenerator::GenerateDefinition(io::Printer* printer) { vars["min_name"] = min_value->name(); vars["max_name"] = max_value->name(); - if (dllexport_decl_.empty()) { + if (options_.dllexport_decl.empty()) { vars["dllexport"] = ""; } else { - vars["dllexport"] = dllexport_decl_ + " "; + vars["dllexport"] = options_.dllexport_decl + " "; } printer->Print(vars, diff --git a/cpp/thirdparty/protobuf-2.3.0/src/google/protobuf/compiler/cpp/cpp_enum.h b/cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/compiler/cpp/cpp_enum.h similarity index 96% rename from cpp/thirdparty/protobuf-2.3.0/src/google/protobuf/compiler/cpp/cpp_enum.h rename to cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/compiler/cpp/cpp_enum.h index 58f7721ec..2e85a0bd3 100644 --- a/cpp/thirdparty/protobuf-2.3.0/src/google/protobuf/compiler/cpp/cpp_enum.h +++ b/cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/compiler/cpp/cpp_enum.h @@ -36,8 +36,10 @@ #define GOOGLE_PROTOBUF_COMPILER_CPP_ENUM_H__ #include +#include #include + namespace google { namespace protobuf { namespace io { @@ -53,7 +55,7 @@ class EnumGenerator { public: // See generator.cc for the meaning of dllexport_decl. explicit EnumGenerator(const EnumDescriptor* descriptor, - const string& dllexport_decl); + const Options& options); ~EnumGenerator(); // Header stuff. @@ -86,7 +88,7 @@ class EnumGenerator { private: const EnumDescriptor* descriptor_; string classname_; - string dllexport_decl_; + Options options_; GOOGLE_DISALLOW_EVIL_CONSTRUCTORS(EnumGenerator); }; diff --git a/cpp/thirdparty/protobuf-2.3.0/src/google/protobuf/compiler/cpp/cpp_enum_field.cc b/cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/compiler/cpp/cpp_enum_field.cc similarity index 94% rename from cpp/thirdparty/protobuf-2.3.0/src/google/protobuf/compiler/cpp/cpp_enum_field.cc rename to cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/compiler/cpp/cpp_enum_field.cc index 91ce493ac..6e1620d4d 100644 --- a/cpp/thirdparty/protobuf-2.3.0/src/google/protobuf/compiler/cpp/cpp_enum_field.cc +++ b/cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/compiler/cpp/cpp_enum_field.cc @@ -46,8 +46,9 @@ namespace cpp { namespace { void SetEnumVariables(const FieldDescriptor* descriptor, - map* variables) { - SetCommonFieldVariables(descriptor, variables); + map* variables, + const Options& options) { + SetCommonFieldVariables(descriptor, variables, options); const EnumValueDescriptor* default_value = descriptor->default_value_enum(); (*variables)["type"] = ClassName(descriptor->enum_type(), true); (*variables)["default"] = SimpleItoa(default_value->number()); @@ -58,9 +59,10 @@ void SetEnumVariables(const FieldDescriptor* descriptor, // =================================================================== EnumFieldGenerator:: -EnumFieldGenerator(const FieldDescriptor* descriptor) +EnumFieldGenerator(const FieldDescriptor* descriptor, + const Options& options) : descriptor_(descriptor) { - SetEnumVariables(descriptor, &variables_); + SetEnumVariables(descriptor, &variables_, options); } EnumFieldGenerator::~EnumFieldGenerator() {} @@ -84,8 +86,8 @@ GenerateInlineAccessorDefinitions(io::Printer* printer) const { " return static_cast< $type$ >($name$_);\n" "}\n" "inline void $classname$::set_$name$($type$ value) {\n" - " GOOGLE_DCHECK($type$_IsValid(value));\n" - " _set_bit($index$);\n" + " assert($type$_IsValid(value));\n" + " set_has_$name$();\n" " $name$_ = value;\n" "}\n"); } @@ -152,9 +154,10 @@ GenerateByteSize(io::Printer* printer) const { // =================================================================== RepeatedEnumFieldGenerator:: -RepeatedEnumFieldGenerator(const FieldDescriptor* descriptor) +RepeatedEnumFieldGenerator(const FieldDescriptor* descriptor, + const Options& options) : descriptor_(descriptor) { - SetEnumVariables(descriptor, &variables_); + SetEnumVariables(descriptor, &variables_, options); } RepeatedEnumFieldGenerator::~RepeatedEnumFieldGenerator() {} @@ -187,11 +190,11 @@ GenerateInlineAccessorDefinitions(io::Printer* printer) const { " return static_cast< $type$ >($name$_.Get(index));\n" "}\n" "inline void $classname$::set_$name$(int index, $type$ value) {\n" - " GOOGLE_DCHECK($type$_IsValid(value));\n" + " assert($type$_IsValid(value));\n" " $name$_.Set(index, value);\n" "}\n" "inline void $classname$::add_$name$($type$ value) {\n" - " GOOGLE_DCHECK($type$_IsValid(value));\n" + " assert($type$_IsValid(value));\n" " $name$_.Add(value);\n" "}\n"); printer->Print(variables_, @@ -345,7 +348,9 @@ GenerateByteSize(io::Printer* printer) const { " total_size += $tag_size$ +\n" " ::google::protobuf::internal::WireFormatLite::Int32Size(data_size);\n" "}\n" + "GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();\n" "_$name$_cached_byte_size_ = data_size;\n" + "GOOGLE_SAFE_CONCURRENT_WRITES_END();\n" "total_size += data_size;\n"); } else { printer->Print(variables_, diff --git a/cpp/thirdparty/protobuf-2.3.0/src/google/protobuf/compiler/cpp/cpp_enum_field.h b/cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/compiler/cpp/cpp_enum_field.h similarity index 95% rename from cpp/thirdparty/protobuf-2.3.0/src/google/protobuf/compiler/cpp/cpp_enum_field.h rename to cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/compiler/cpp/cpp_enum_field.h index 0793430c1..65770083b 100644 --- a/cpp/thirdparty/protobuf-2.3.0/src/google/protobuf/compiler/cpp/cpp_enum_field.h +++ b/cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/compiler/cpp/cpp_enum_field.h @@ -46,7 +46,8 @@ namespace cpp { class EnumFieldGenerator : public FieldGenerator { public: - explicit EnumFieldGenerator(const FieldDescriptor* descriptor); + explicit EnumFieldGenerator(const FieldDescriptor* descriptor, + const Options& options); ~EnumFieldGenerator(); // implements FieldGenerator --------------------------------------- @@ -71,7 +72,8 @@ class EnumFieldGenerator : public FieldGenerator { class RepeatedEnumFieldGenerator : public FieldGenerator { public: - explicit RepeatedEnumFieldGenerator(const FieldDescriptor* descriptor); + explicit RepeatedEnumFieldGenerator(const FieldDescriptor* descriptor, + const Options& options); ~RepeatedEnumFieldGenerator(); // implements FieldGenerator --------------------------------------- diff --git a/cpp/thirdparty/protobuf-2.3.0/src/google/protobuf/compiler/cpp/cpp_extension.cc b/cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/compiler/cpp/cpp_extension.cc similarity index 97% rename from cpp/thirdparty/protobuf-2.3.0/src/google/protobuf/compiler/cpp/cpp_extension.cc rename to cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/compiler/cpp/cpp_extension.cc index 658a7077b..ef56b5e54 100644 --- a/cpp/thirdparty/protobuf-2.3.0/src/google/protobuf/compiler/cpp/cpp_extension.cc +++ b/cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/compiler/cpp/cpp_extension.cc @@ -57,9 +57,9 @@ string ExtendeeClassName(const FieldDescriptor* descriptor) { } // anonymous namespace ExtensionGenerator::ExtensionGenerator(const FieldDescriptor* descriptor, - const string& dllexport_decl) + const Options& options) : descriptor_(descriptor), - dllexport_decl_(dllexport_decl) { + options_(options) { // Construct type_traits_. if (descriptor_->is_repeated()) { type_traits_ = "Repeated"; @@ -106,8 +106,8 @@ void ExtensionGenerator::GenerateDeclaration(io::Printer* printer) { // export/import specifier. if (descriptor_->extension_scope() == NULL) { vars["qualifier"] = "extern"; - if (!dllexport_decl_.empty()) { - vars["qualifier"] = dllexport_decl_ + " " + vars["qualifier"]; + if (!options_.dllexport_decl.empty()) { + vars["qualifier"] = options_.dllexport_decl + " " + vars["qualifier"]; } } else { vars["qualifier"] = "static"; diff --git a/cpp/thirdparty/protobuf-2.3.0/src/google/protobuf/compiler/cpp/cpp_extension.h b/cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/compiler/cpp/cpp_extension.h similarity index 93% rename from cpp/thirdparty/protobuf-2.3.0/src/google/protobuf/compiler/cpp/cpp_extension.h rename to cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/compiler/cpp/cpp_extension.h index 3068b0914..50ad035ba 100644 --- a/cpp/thirdparty/protobuf-2.3.0/src/google/protobuf/compiler/cpp/cpp_extension.h +++ b/cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/compiler/cpp/cpp_extension.h @@ -37,6 +37,7 @@ #include #include +#include namespace google { namespace protobuf { @@ -56,8 +57,8 @@ namespace cpp { class ExtensionGenerator { public: // See generator.cc for the meaning of dllexport_decl. - explicit ExtensionGenerator(const FieldDescriptor* descriptor, - const string& dllexport_decl); + explicit ExtensionGenerator(const FieldDescriptor* desycriptor, + const Options& options); ~ExtensionGenerator(); // Header stuff. @@ -72,7 +73,7 @@ class ExtensionGenerator { private: const FieldDescriptor* descriptor_; string type_traits_; - string dllexport_decl_; + Options options_; GOOGLE_DISALLOW_EVIL_CONSTRUCTORS(ExtensionGenerator); }; diff --git a/cpp/thirdparty/protobuf-2.3.0/src/google/protobuf/compiler/cpp/cpp_field.cc b/cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/compiler/cpp/cpp_field.cc similarity index 84% rename from cpp/thirdparty/protobuf-2.3.0/src/google/protobuf/compiler/cpp/cpp_field.cc rename to cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/compiler/cpp/cpp_field.cc index 103cac4a9..0786176ba 100644 --- a/cpp/thirdparty/protobuf-2.3.0/src/google/protobuf/compiler/cpp/cpp_field.cc +++ b/cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/compiler/cpp/cpp_field.cc @@ -52,7 +52,8 @@ namespace cpp { using internal::WireFormat; void SetCommonFieldVariables(const FieldDescriptor* descriptor, - map* variables) { + map* variables, + const Options& options) { (*variables)["name"] = FieldName(descriptor); (*variables)["index"] = SimpleItoa(descriptor->index()); (*variables)["number"] = SimpleItoa(descriptor->number()); @@ -64,6 +65,7 @@ void SetCommonFieldVariables(const FieldDescriptor* descriptor, (*variables)["deprecation"] = descriptor->options().deprecated() ? " PROTOBUF_DEPRECATED" : ""; + (*variables)["cppget"] = "Get"; } FieldGenerator::~FieldGenerator() {} @@ -80,46 +82,47 @@ GenerateMergeFromCodedStreamWithPacking(io::Printer* printer) const { } -FieldGeneratorMap::FieldGeneratorMap(const Descriptor* descriptor) +FieldGeneratorMap::FieldGeneratorMap(const Descriptor* descriptor, + const Options& options) : descriptor_(descriptor), - field_generators_( - new scoped_ptr[descriptor->field_count()]) { + field_generators_(new scoped_ptr[descriptor->field_count()]) { // Construct all the FieldGenerators. for (int i = 0; i < descriptor->field_count(); i++) { - field_generators_[i].reset(MakeGenerator(descriptor->field(i))); + field_generators_[i].reset(MakeGenerator(descriptor->field(i), options)); } } -FieldGenerator* FieldGeneratorMap::MakeGenerator(const FieldDescriptor* field) { +FieldGenerator* FieldGeneratorMap::MakeGenerator(const FieldDescriptor* field, + const Options& options) { if (field->is_repeated()) { switch (field->cpp_type()) { case FieldDescriptor::CPPTYPE_MESSAGE: - return new RepeatedMessageFieldGenerator(field); + return new RepeatedMessageFieldGenerator(field, options); case FieldDescriptor::CPPTYPE_STRING: switch (field->options().ctype()) { default: // RepeatedStringFieldGenerator handles unknown ctypes. case FieldOptions::STRING: - return new RepeatedStringFieldGenerator(field); + return new RepeatedStringFieldGenerator(field, options); } case FieldDescriptor::CPPTYPE_ENUM: - return new RepeatedEnumFieldGenerator(field); + return new RepeatedEnumFieldGenerator(field, options); default: - return new RepeatedPrimitiveFieldGenerator(field); + return new RepeatedPrimitiveFieldGenerator(field, options); } } else { switch (field->cpp_type()) { case FieldDescriptor::CPPTYPE_MESSAGE: - return new MessageFieldGenerator(field); + return new MessageFieldGenerator(field, options); case FieldDescriptor::CPPTYPE_STRING: switch (field->options().ctype()) { default: // StringFieldGenerator handles unknown ctypes. case FieldOptions::STRING: - return new StringFieldGenerator(field); + return new StringFieldGenerator(field, options); } case FieldDescriptor::CPPTYPE_ENUM: - return new EnumFieldGenerator(field); + return new EnumFieldGenerator(field, options); default: - return new PrimitiveFieldGenerator(field); + return new PrimitiveFieldGenerator(field, options); } } } diff --git a/cpp/thirdparty/protobuf-2.3.0/src/google/protobuf/compiler/cpp/cpp_field.h b/cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/compiler/cpp/cpp_field.h similarity index 91% rename from cpp/thirdparty/protobuf-2.3.0/src/google/protobuf/compiler/cpp/cpp_field.h rename to cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/compiler/cpp/cpp_field.h index c303a3378..f7d99b154 100644 --- a/cpp/thirdparty/protobuf-2.3.0/src/google/protobuf/compiler/cpp/cpp_field.h +++ b/cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/compiler/cpp/cpp_field.h @@ -40,6 +40,7 @@ #include #include +#include namespace google { namespace protobuf { @@ -57,7 +58,8 @@ namespace cpp { // ['name', 'index', 'number', 'classname', 'declared_type', 'tag_size', // 'deprecation']. void SetCommonFieldVariables(const FieldDescriptor* descriptor, - map* variables); + map* variables, + const Options& options); class FieldGenerator { public: @@ -114,6 +116,13 @@ class FieldGenerator { // Most field types don't need this, so the default implementation is empty. virtual void GenerateDestructorCode(io::Printer* printer) const {} + // Generate code that allocates the fields's default instance. + virtual void GenerateDefaultInstanceAllocator(io::Printer* printer) const {} + + // Generate code that should be run when ShutdownProtobufLibrary() is called, + // to delete all dynamically-allocated objects. + virtual void GenerateShutdownCode(io::Printer* printer) const {} + // Generate lines to decode this field, which will be placed inside the // message's MergeFromCodedStream() method. virtual void GenerateMergeFromCodedStream(io::Printer* printer) const = 0; @@ -144,7 +153,7 @@ class FieldGenerator { // Convenience class which constructs FieldGenerators for a Descriptor. class FieldGeneratorMap { public: - explicit FieldGeneratorMap(const Descriptor* descriptor); + explicit FieldGeneratorMap(const Descriptor* descriptor, const Options& options); ~FieldGeneratorMap(); const FieldGenerator& get(const FieldDescriptor* field) const; @@ -153,7 +162,8 @@ class FieldGeneratorMap { const Descriptor* descriptor_; scoped_array > field_generators_; - static FieldGenerator* MakeGenerator(const FieldDescriptor* field); + static FieldGenerator* MakeGenerator(const FieldDescriptor* field, + const Options& options); GOOGLE_DISALLOW_EVIL_CONSTRUCTORS(FieldGeneratorMap); }; diff --git a/cpp/thirdparty/protobuf-2.3.0/src/google/protobuf/compiler/cpp/cpp_file.cc b/cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/compiler/cpp/cpp_file.cc similarity index 88% rename from cpp/thirdparty/protobuf-2.3.0/src/google/protobuf/compiler/cpp/cpp_file.cc rename to cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/compiler/cpp/cpp_file.cc index 80da7e407..cfe96c8a7 100644 --- a/cpp/thirdparty/protobuf-2.3.0/src/google/protobuf/compiler/cpp/cpp_file.cc +++ b/cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/compiler/cpp/cpp_file.cc @@ -51,7 +51,7 @@ namespace cpp { // =================================================================== FileGenerator::FileGenerator(const FileDescriptor* file, - const string& dllexport_decl) + const Options& options) : file_(file), message_generators_( new scoped_ptr[file->message_type_count()]), @@ -61,26 +61,26 @@ FileGenerator::FileGenerator(const FileDescriptor* file, new scoped_ptr[file->service_count()]), extension_generators_( new scoped_ptr[file->extension_count()]), - dllexport_decl_(dllexport_decl) { + options_(options) { for (int i = 0; i < file->message_type_count(); i++) { message_generators_[i].reset( - new MessageGenerator(file->message_type(i), dllexport_decl)); + new MessageGenerator(file->message_type(i), options)); } for (int i = 0; i < file->enum_type_count(); i++) { enum_generators_[i].reset( - new EnumGenerator(file->enum_type(i), dllexport_decl)); + new EnumGenerator(file->enum_type(i), options)); } for (int i = 0; i < file->service_count(); i++) { service_generators_[i].reset( - new ServiceGenerator(file->service(i), dllexport_decl)); + new ServiceGenerator(file->service(i), options)); } for (int i = 0; i < file->extension_count(); i++) { extension_generators_[i].reset( - new ExtensionGenerator(file->extension(i), dllexport_decl)); + new ExtensionGenerator(file->extension(i), options)); } SplitStringUsing(file_->package(), ".", &package_parts_); @@ -104,6 +104,7 @@ void FileGenerator::GenerateHeader(io::Printer* printer) { "filename", file_->name(), "filename_identifier", filename_identifier); + printer->Print( "#include \n" "\n"); @@ -128,13 +129,23 @@ void FileGenerator::GenerateHeader(io::Printer* printer) { // OK, it's now safe to #include other files. printer->Print( - "#include \n" + "#include \n"); + if (file_->message_type_count() > 0) { + if (HasDescriptorMethods(file_)) { + printer->Print( + "#include \n"); + } else { + printer->Print( + "#include \n"); + } + } + printer->Print( "#include \n" "#include \n"); - if (HasDescriptorMethods(file_)) { + if (HasDescriptorMethods(file_) && HasEnumDefinitions(file_)) { printer->Print( - "#include \n"); + "#include \n"); } if (HasGenericServices(file_)) { @@ -142,6 +153,11 @@ void FileGenerator::GenerateHeader(io::Printer* printer) { "#include \n"); } + if (HasUnknownFields(file_) && file_->message_type_count() > 0) { + printer->Print( + "#include \n"); + } + for (int i = 0; i < file_->dependency_count(); i++) { printer->Print( @@ -149,9 +165,11 @@ void FileGenerator::GenerateHeader(io::Printer* printer) { "dependency", StripProto(file_->dependency(i)->name())); } + printer->Print( "// @@protoc_insertion_point(includes)\n"); + // Open namespace. GenerateNamespaceOpeners(printer); @@ -162,7 +180,7 @@ void FileGenerator::GenerateHeader(io::Printer* printer) { "// Internal implementation detail -- do not call these.\n" "void $dllexport_decl$ $adddescriptorsname$();\n", "adddescriptorsname", GlobalAddDescriptorsName(file_->name()), - "dllexport_decl", dllexport_decl_); + "dllexport_decl", options_.dllexport_decl); printer->Print( // Note that we don't put dllexport_decl on these because they are only @@ -282,20 +300,27 @@ void FileGenerator::GenerateHeader(io::Printer* printer) { void FileGenerator::GenerateSource(io::Printer* printer) { printer->Print( "// Generated by the protocol buffer compiler. DO NOT EDIT!\n" + "// source: $filename$\n" "\n" + // The generated code calls accessors that might be deprecated. We don't // want the compiler to warn in generated code. "#define INTERNAL_SUPPRESS_PROTOBUF_FIELD_DEPRECATION\n" "#include \"$basename$.pb.h\"\n" - + "\n" + "#include \n" // for swap() + "\n" + "#include \n" "#include \n" "#include \n" "#include \n", + "filename", file_->name(), "basename", StripProto(file_->name())); if (HasDescriptorMethods(file_)) { printer->Print( "#include \n" + "#include \n" "#include \n" "#include \n"); } @@ -378,11 +403,12 @@ void FileGenerator::GenerateSource(io::Printer* printer) { void FileGenerator::GenerateBuildDescriptors(io::Printer* printer) { // AddDescriptors() is a file-level procedure which adds the encoded - // FileDescriptorProto for this .proto file to the global DescriptorPool - // for generated files (DescriptorPool::generated_pool()). It always runs - // at static initialization time, so all files will be registered before - // main() starts. This procedure also constructs default instances and - // registers extensions. + // FileDescriptorProto for this .proto file to the global DescriptorPool for + // generated files (DescriptorPool::generated_pool()). It either runs at + // static initialization time (by default) or when default_instance() is + // called for the first time (in LITE_RUNTIME mode with + // GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER flag enabled). This procedure also + // constructs default instances and registers extensions. // // Its sibling, AssignDescriptors(), actually pulls the compiled // FileDescriptor from the DescriptorPool and uses it to populate all of @@ -486,22 +512,29 @@ void FileGenerator::GenerateBuildDescriptors(io::Printer* printer) { printer->Outdent(); printer->Print( - "}\n"); + "}\n\n"); // ----------------------------------------------------------------- // Now generate the AddDescriptors() function. - printer->Print( - "\n" + PrintHandlingOptionalStaticInitializers( + file_, printer, + // With static initializers. + // Note that we don't need any special synchronization in the following code + // because it is called at static init time before any threads exist. "void $adddescriptorsname$() {\n" - // We don't need any special synchronization here because this code is - // called at static init time before any threads exist. " static bool already_here = false;\n" " if (already_here) return;\n" " already_here = true;\n" " GOOGLE_PROTOBUF_VERIFY_VERSION;\n" "\n", + // Without. + "void $adddescriptorsname$_impl() {\n" + " GOOGLE_PROTOBUF_VERIFY_VERSION;\n" + "\n", + // Vars. "adddescriptorsname", GlobalAddDescriptorsName(file_->name())); + printer->Indent(); // Call the AddDescriptors() methods for all of our dependencies, to make @@ -512,9 +545,9 @@ void FileGenerator::GenerateBuildDescriptors(io::Printer* printer) { vector dependency_package_parts; SplitStringUsing(dependency->package(), ".", &dependency_package_parts); printer->Print("::"); - for (int i = 0; i < dependency_package_parts.size(); i++) { + for (int j = 0; j < dependency_package_parts.size(); j++) { printer->Print("$name$::", - "name", dependency_package_parts[i]); + "name", dependency_package_parts[j]); } // Call its AddDescriptors function. printer->Print( @@ -538,10 +571,12 @@ void FileGenerator::GenerateBuildDescriptors(io::Printer* printer) { static const int kBytesPerLine = 40; for (int i = 0; i < file_data.size(); i += kBytesPerLine) { printer->Print("\n \"$data$\"", - "data", CEscape(file_data.substr(i, kBytesPerLine))); + "data", + EscapeTrigraphs( + CEscape(file_data.substr(i, kBytesPerLine)))); } printer->Print( - ", $size$);\n", + ", $size$);\n", "size", SimpleItoa(file_data.size())); // Call MessageFactory::InternalRegisterGeneratedFile(). @@ -569,17 +604,26 @@ void FileGenerator::GenerateBuildDescriptors(io::Printer* printer) { "shutdownfilename", GlobalShutdownFileName(file_->name())); printer->Outdent(); - printer->Print( "}\n" - "\n" + "\n"); + + PrintHandlingOptionalStaticInitializers( + file_, printer, + // With static initializers. "// Force AddDescriptors() to be called at static initialization time.\n" "struct StaticDescriptorInitializer_$filename$ {\n" " StaticDescriptorInitializer_$filename$() {\n" " $adddescriptorsname$();\n" " }\n" - "} static_descriptor_initializer_$filename$_;\n" - "\n", + "} static_descriptor_initializer_$filename$_;\n", + // Without. + "GOOGLE_PROTOBUF_DECLARE_ONCE($adddescriptorsname$_once_);\n" + "void $adddescriptorsname$() {\n" + " ::google::protobuf::::google::protobuf::GoogleOnceInit(&$adddescriptorsname$_once_,\n" + " &$adddescriptorsname$_impl);\n" + "}\n", + // Vars. "adddescriptorsname", GlobalAddDescriptorsName(file_->name()), "filename", FilenameIdentifier(file_->name())); } diff --git a/cpp/thirdparty/protobuf-2.3.0/src/google/protobuf/compiler/cpp/cpp_file.h b/cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/compiler/cpp/cpp_file.h similarity index 96% rename from cpp/thirdparty/protobuf-2.3.0/src/google/protobuf/compiler/cpp/cpp_file.h rename to cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/compiler/cpp/cpp_file.h index b4e012857..2deefaa86 100644 --- a/cpp/thirdparty/protobuf-2.3.0/src/google/protobuf/compiler/cpp/cpp_file.h +++ b/cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/compiler/cpp/cpp_file.h @@ -39,6 +39,7 @@ #include #include #include +#include namespace google { namespace protobuf { @@ -61,7 +62,7 @@ class FileGenerator { public: // See generator.cc for the meaning of dllexport_decl. explicit FileGenerator(const FileDescriptor* file, - const string& dllexport_decl); + const Options& options); ~FileGenerator(); void GenerateHeader(io::Printer* printer); @@ -85,7 +86,7 @@ class FileGenerator { // E.g. if the package is foo.bar, package_parts_ is {"foo", "bar"}. vector package_parts_; - string dllexport_decl_; + const Options options_; GOOGLE_DISALLOW_EVIL_CONSTRUCTORS(FileGenerator); }; diff --git a/cpp/thirdparty/protobuf-2.3.0/src/google/protobuf/compiler/cpp/cpp_generator.cc b/cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/compiler/cpp/cpp_generator.cc similarity index 91% rename from cpp/thirdparty/protobuf-2.3.0/src/google/protobuf/compiler/cpp/cpp_generator.cc rename to cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/compiler/cpp/cpp_generator.cc index d67d35047..1813510b6 100644 --- a/cpp/thirdparty/protobuf-2.3.0/src/google/protobuf/compiler/cpp/cpp_generator.cc +++ b/cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/compiler/cpp/cpp_generator.cc @@ -53,7 +53,7 @@ CppGenerator::~CppGenerator() {} bool CppGenerator::Generate(const FileDescriptor* file, const string& parameter, - OutputDirectory* output_directory, + GeneratorContext* generator_context, string* error) const { vector > options; ParseGeneratorParameter(parameter, &options); @@ -78,11 +78,13 @@ bool CppGenerator::Generate(const FileDescriptor* file, // } // FOO_EXPORT is a macro which should expand to __declspec(dllexport) or // __declspec(dllimport) depending on what is being compiled. - string dllexport_decl; + Options file_options; for (int i = 0; i < options.size(); i++) { if (options[i].first == "dllexport_decl") { - dllexport_decl = options[i].second; + file_options.dllexport_decl = options[i].second; + } else if (options[i].first == "safe_boundary_check") { + file_options.safe_boundary_check = true; } else { *error = "Unknown generator option: " + options[i].first; return false; @@ -95,12 +97,12 @@ bool CppGenerator::Generate(const FileDescriptor* file, string basename = StripProto(file->name()); basename.append(".pb"); - FileGenerator file_generator(file, dllexport_decl); + FileGenerator file_generator(file, file_options); // Generate header. { scoped_ptr output( - output_directory->Open(basename + ".h")); + generator_context->Open(basename + ".h")); io::Printer printer(output.get(), '$'); file_generator.GenerateHeader(&printer); } @@ -108,7 +110,7 @@ bool CppGenerator::Generate(const FileDescriptor* file, // Generate cc file. { scoped_ptr output( - output_directory->Open(basename + ".cc")); + generator_context->Open(basename + ".cc")); io::Printer printer(output.get(), '$'); file_generator.GenerateSource(&printer); } diff --git a/cpp/thirdparty/protobuf-2.3.0/src/google/protobuf/compiler/cpp/cpp_generator.h b/cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/compiler/cpp/cpp_generator.h similarity index 98% rename from cpp/thirdparty/protobuf-2.3.0/src/google/protobuf/compiler/cpp/cpp_generator.h rename to cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/compiler/cpp/cpp_generator.h index f52e886ae..a90e84d7b 100644 --- a/cpp/thirdparty/protobuf-2.3.0/src/google/protobuf/compiler/cpp/cpp_generator.h +++ b/cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/compiler/cpp/cpp_generator.h @@ -57,7 +57,7 @@ class LIBPROTOC_EXPORT CppGenerator : public CodeGenerator { // implements CodeGenerator ---------------------------------------- bool Generate(const FileDescriptor* file, const string& parameter, - OutputDirectory* output_directory, + GeneratorContext* generator_context, string* error) const; private: diff --git a/cpp/thirdparty/protobuf-2.3.0/src/google/protobuf/compiler/cpp/cpp_helpers.cc b/cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/compiler/cpp/cpp_helpers.cc similarity index 80% rename from cpp/thirdparty/protobuf-2.3.0/src/google/protobuf/compiler/cpp/cpp_helpers.cc rename to cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/compiler/cpp/cpp_helpers.cc index e3df88b00..28911ab00 100644 --- a/cpp/thirdparty/protobuf-2.3.0/src/google/protobuf/compiler/cpp/cpp_helpers.cc +++ b/cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/compiler/cpp/cpp_helpers.cc @@ -33,10 +33,12 @@ // Sanjay Ghemawat, Jeff Dean, and others. #include +#include #include #include #include +#include #include #include #include @@ -105,6 +107,20 @@ string UnderscoresToCamelCase(const string& input, bool cap_next_letter) { return result; } +// Returns whether the provided descriptor has an extension. This includes its +// nested types. +bool HasExtension(const Descriptor* descriptor) { + if (descriptor->extension_count() > 0) { + return true; + } + for (int i = 0; i < descriptor->nested_type_count(); ++i) { + if (HasExtension(descriptor->nested_type(i))) { + return true; + } + } + return false; +} + } // namespace const char kThickSeparator[] = @@ -132,7 +148,7 @@ string ClassName(const Descriptor* descriptor, bool qualified) { string ClassName(const EnumDescriptor* enum_descriptor, bool qualified) { if (enum_descriptor->containing_type() == NULL) { if (qualified) { - return DotsToColons(enum_descriptor->full_name()); + return "::" + DotsToColons(enum_descriptor->full_name()); } else { return enum_descriptor->name(); } @@ -243,10 +259,23 @@ const char* DeclaredTypeMethodName(FieldDescriptor::Type type) { string DefaultValue(const FieldDescriptor* field) { switch (field->cpp_type()) { case FieldDescriptor::CPPTYPE_INT32: + // gcc rejects the decimal form of kint32min and kint64min. + if (field->default_value_int32() == kint32min) { + // Make sure we are in a 2's complement system. + GOOGLE_COMPILE_ASSERT(kint32min == -0x80000000, kint32min_value_error); + return "-0x80000000"; + } return SimpleItoa(field->default_value_int32()); case FieldDescriptor::CPPTYPE_UINT32: return SimpleItoa(field->default_value_uint32()) + "u"; case FieldDescriptor::CPPTYPE_INT64: + // See the comments for CPPTYPE_INT32. + if (field->default_value_int64() == kint64min) { + // Make sure we are in a 2's complement system. + GOOGLE_COMPILE_ASSERT(kint64min == GOOGLE_LONGLONG(-0x8000000000000000), + kint64min_value_error); + return "GOOGLE_LONGLONG(-0x8000000000000000)"; + } return "GOOGLE_LONGLONG(" + SimpleItoa(field->default_value_int64()) + ")"; case FieldDescriptor::CPPTYPE_UINT64: return "GOOGLE_ULONGLONG(" + SimpleItoa(field->default_value_uint64())+ ")"; @@ -292,7 +321,9 @@ string DefaultValue(const FieldDescriptor* field) { ClassName(field->enum_type(), true), field->default_value_enum()->number()); case FieldDescriptor::CPPTYPE_STRING: - return "\"" + CEscape(field->default_value_string()) + "\""; + return "\"" + EscapeTrigraphs( + CEscape(field->default_value_string())) + + "\""; case FieldDescriptor::CPPTYPE_MESSAGE: return FieldMessageTypeName(field) + "::default_instance()"; } @@ -335,6 +366,72 @@ string GlobalShutdownFileName(const string& filename) { return "protobuf_ShutdownFile_" + FilenameIdentifier(filename); } +// Escape C++ trigraphs by escaping question marks to \? +string EscapeTrigraphs(const string& to_escape) { + return StringReplace(to_escape, "?", "\\?", true); +} + +bool StaticInitializersForced(const FileDescriptor* file) { + if (HasDescriptorMethods(file) || file->extension_count() > 0) { + return true; + } + for (int i = 0; i < file->message_type_count(); ++i) { + if (HasExtension(file->message_type(i))) { + return true; + } + } + return false; +} + +void PrintHandlingOptionalStaticInitializers( + const FileDescriptor* file, io::Printer* printer, + const char* with_static_init, const char* without_static_init, + const char* var1, const string& val1, + const char* var2, const string& val2) { + map vars; + if (var1) { + vars[var1] = val1; + } + if (var2) { + vars[var2] = val2; + } + PrintHandlingOptionalStaticInitializers( + vars, file, printer, with_static_init, without_static_init); +} + +void PrintHandlingOptionalStaticInitializers( + const map& vars, const FileDescriptor* file, + io::Printer* printer, const char* with_static_init, + const char* without_static_init) { + if (StaticInitializersForced(file)) { + printer->Print(vars, with_static_init); + } else { + printer->Print(vars, (string( + "#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER\n") + + without_static_init + + "#else\n" + + with_static_init + + "#endif\n").c_str()); + } +} + + +static bool HasEnumDefinitions(const Descriptor* message_type) { + if (message_type->enum_type_count() > 0) return true; + for (int i = 0; i < message_type->nested_type_count(); ++i) { + if (HasEnumDefinitions(message_type->nested_type(i))) return true; + } + return false; +} + +bool HasEnumDefinitions(const FileDescriptor* file) { + if (file->enum_type_count() > 0) return true; + for (int i = 0; i < file->message_type_count(); ++i) { + if (HasEnumDefinitions(file->message_type(i))) return true; + } + return false; +} + } // namespace cpp } // namespace compiler } // namespace protobuf diff --git a/cpp/thirdparty/protobuf-2.3.0/src/google/protobuf/compiler/cpp/cpp_helpers.h b/cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/compiler/cpp/cpp_helpers.h similarity index 82% rename from cpp/thirdparty/protobuf-2.3.0/src/google/protobuf/compiler/cpp/cpp_helpers.h rename to cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/compiler/cpp/cpp_helpers.h index f99b5fe87..526e19cc7 100644 --- a/cpp/thirdparty/protobuf-2.3.0/src/google/protobuf/compiler/cpp/cpp_helpers.h +++ b/cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/compiler/cpp/cpp_helpers.h @@ -35,12 +35,18 @@ #ifndef GOOGLE_PROTOBUF_COMPILER_CPP_HELPERS_H__ #define GOOGLE_PROTOBUF_COMPILER_CPP_HELPERS_H__ +#include #include #include #include namespace google { namespace protobuf { + +namespace io { +class Printer; +} + namespace compiler { namespace cpp { @@ -112,24 +118,31 @@ string GlobalAssignDescriptorsName(const string& filename); // Return the name of the ShutdownFile() function for a given file. string GlobalShutdownFileName(const string& filename); +// Escape C++ trigraphs by escaping question marks to \? +string EscapeTrigraphs(const string& to_escape); + // Do message classes in this file keep track of unknown fields? -inline bool HasUnknownFields(const FileDescriptor *file) { +inline bool HasUnknownFields(const FileDescriptor* file) { return file->options().optimize_for() != FileOptions::LITE_RUNTIME; } + +// Does this file have any enum type definitions? +bool HasEnumDefinitions(const FileDescriptor* file); + // Does this file have generated parsing, serialization, and other // standard methods for which reflection-based fallback implementations exist? -inline bool HasGeneratedMethods(const FileDescriptor *file) { +inline bool HasGeneratedMethods(const FileDescriptor* file) { return file->options().optimize_for() != FileOptions::CODE_SIZE; } -// Do message classes in this file have descriptor and refelction methods? -inline bool HasDescriptorMethods(const FileDescriptor *file) { +// Do message classes in this file have descriptor and reflection methods? +inline bool HasDescriptorMethods(const FileDescriptor* file) { return file->options().optimize_for() != FileOptions::LITE_RUNTIME; } // Should we generate generic services for this file? -inline bool HasGenericServices(const FileDescriptor *file) { +inline bool HasGenericServices(const FileDescriptor* file) { return file->service_count() > 0 && file->options().optimize_for() != FileOptions::LITE_RUNTIME && file->options().cc_generic_services(); @@ -147,6 +160,23 @@ inline bool HasFastArraySerialization(const FileDescriptor* file) { return file->options().optimize_for() == FileOptions::SPEED; } +// Returns whether we have to generate code with static initializers. +bool StaticInitializersForced(const FileDescriptor* file); + +// Prints 'with_static_init' if static initializers have to be used for the +// provided file. Otherwise emits both 'with_static_init' and +// 'without_static_init' using #ifdef. +void PrintHandlingOptionalStaticInitializers( + const FileDescriptor* file, io::Printer* printer, + const char* with_static_init, const char* without_static_init, + const char* var1 = NULL, const string& val1 = "", + const char* var2 = NULL, const string& val2 = ""); + +void PrintHandlingOptionalStaticInitializers( + const map& vars, const FileDescriptor* file, + io::Printer* printer, const char* with_static_init, + const char* without_static_init); + } // namespace cpp } // namespace compiler diff --git a/cpp/thirdparty/protobuf-2.3.0/src/google/protobuf/compiler/cpp/cpp_message.cc b/cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/compiler/cpp/cpp_message.cc similarity index 82% rename from cpp/thirdparty/protobuf-2.3.0/src/google/protobuf/compiler/cpp/cpp_message.cc rename to cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/compiler/cpp/cpp_message.cc index cbdcce8fd..1ea4f13d1 100644 --- a/cpp/thirdparty/protobuf-2.3.0/src/google/protobuf/compiler/cpp/cpp_message.cc +++ b/cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/compiler/cpp/cpp_message.cc @@ -35,6 +35,7 @@ #include #include #include +#include #include #include #include @@ -47,6 +48,7 @@ #include #include + namespace google { namespace protobuf { namespace compiler { @@ -102,6 +104,13 @@ struct ExtensionRangeSorter { } }; +// Returns true if the "required" restriction check should be ignored for the +// given field. +inline static bool ShouldIgnoreRequiredFieldCheck( + const FieldDescriptor* field) { + return false; +} + // Returns true if the message type has any required fields. If it doesn't, // we can optimize out calls to its IsInitialized() method. // @@ -128,7 +137,8 @@ static bool HasRequiredFields( if (field->is_required()) { return true; } - if (field->cpp_type() == FieldDescriptor::CPPTYPE_MESSAGE) { + if (field->cpp_type() == FieldDescriptor::CPPTYPE_MESSAGE && + !ShouldIgnoreRequiredFieldCheck(field)) { if (HasRequiredFields(field->message_type(), already_seen)) { return true; } @@ -143,16 +153,147 @@ static bool HasRequiredFields(const Descriptor* type) { return HasRequiredFields(type, &already_seen); } +// This returns an estimate of the compiler's alignment for the field. This +// can't guarantee to be correct because the generated code could be compiled on +// different systems with different alignment rules. The estimates below assume +// 64-bit pointers. +int EstimateAlignmentSize(const FieldDescriptor* field) { + if (field == NULL) return 0; + if (field->is_repeated()) return 8; + switch (field->cpp_type()) { + case FieldDescriptor::CPPTYPE_BOOL: + return 1; + + case FieldDescriptor::CPPTYPE_INT32: + case FieldDescriptor::CPPTYPE_UINT32: + case FieldDescriptor::CPPTYPE_ENUM: + case FieldDescriptor::CPPTYPE_FLOAT: + return 4; + + case FieldDescriptor::CPPTYPE_INT64: + case FieldDescriptor::CPPTYPE_UINT64: + case FieldDescriptor::CPPTYPE_DOUBLE: + case FieldDescriptor::CPPTYPE_STRING: + case FieldDescriptor::CPPTYPE_MESSAGE: + return 8; + } + GOOGLE_LOG(FATAL) << "Can't get here."; + return -1; // Make compiler happy. +} + +// FieldGroup is just a helper for OptimizePadding below. It holds a vector of +// fields that are grouped together because they have compatible alignment, and +// a preferred location in the final field ordering. +class FieldGroup { + public: + FieldGroup() + : preferred_location_(0) {} + + // A group with a single field. + FieldGroup(float preferred_location, const FieldDescriptor* field) + : preferred_location_(preferred_location), + fields_(1, field) {} + + // Append the fields in 'other' to this group. + void Append(const FieldGroup& other) { + if (other.fields_.empty()) { + return; + } + // Preferred location is the average among all the fields, so we weight by + // the number of fields on each FieldGroup object. + preferred_location_ = + (preferred_location_ * fields_.size() + + (other.preferred_location_ * other.fields_.size())) / + (fields_.size() + other.fields_.size()); + fields_.insert(fields_.end(), other.fields_.begin(), other.fields_.end()); + } + + void SetPreferredLocation(float location) { preferred_location_ = location; } + const vector& fields() const { return fields_; } + + // FieldGroup objects sort by their preferred location. + bool operator<(const FieldGroup& other) const { + return preferred_location_ < other.preferred_location_; + } + + private: + // "preferred_location_" is an estimate of where this group should go in the + // final list of fields. We compute this by taking the average index of each + // field in this group in the original ordering of fields. This is very + // approximate, but should put this group close to where its member fields + // originally went. + float preferred_location_; + vector fields_; + // We rely on the default copy constructor and operator= so this type can be + // used in a vector. +}; + +// Reorder 'fields' so that if the fields are output into a c++ class in the new +// order, the alignment padding is minimized. We try to do this while keeping +// each field as close as possible to its original position so that we don't +// reduce cache locality much for function that access each field in order. +void OptimizePadding(vector* fields) { + // First divide fields into those that align to 1 byte, 4 bytes or 8 bytes. + vector aligned_to_1, aligned_to_4, aligned_to_8; + for (int i = 0; i < fields->size(); ++i) { + switch (EstimateAlignmentSize((*fields)[i])) { + case 1: aligned_to_1.push_back(FieldGroup(i, (*fields)[i])); break; + case 4: aligned_to_4.push_back(FieldGroup(i, (*fields)[i])); break; + case 8: aligned_to_8.push_back(FieldGroup(i, (*fields)[i])); break; + default: + GOOGLE_LOG(FATAL) << "Unknown alignment size."; + } + } + + // Now group fields aligned to 1 byte into sets of 4, and treat those like a + // single field aligned to 4 bytes. + for (int i = 0; i < aligned_to_1.size(); i += 4) { + FieldGroup field_group; + for (int j = i; j < aligned_to_1.size() && j < i + 4; ++j) { + field_group.Append(aligned_to_1[j]); + } + aligned_to_4.push_back(field_group); + } + // Sort by preferred location to keep fields as close to their original + // location as possible. + sort(aligned_to_4.begin(), aligned_to_4.end()); + + // Now group fields aligned to 4 bytes (or the 4-field groups created above) + // into pairs, and treat those like a single field aligned to 8 bytes. + for (int i = 0; i < aligned_to_4.size(); i += 2) { + FieldGroup field_group; + for (int j = i; j < aligned_to_4.size() && j < i + 2; ++j) { + field_group.Append(aligned_to_4[j]); + } + if (i == aligned_to_4.size() - 1) { + // Move incomplete 4-byte block to the end. + field_group.SetPreferredLocation(fields->size() + 1); + } + aligned_to_8.push_back(field_group); + } + // Sort by preferred location to keep fields as close to their original + // location as possible. + sort(aligned_to_8.begin(), aligned_to_8.end()); + + // Now pull out all the FieldDescriptors in order. + fields->clear(); + for (int i = 0; i < aligned_to_8.size(); ++i) { + fields->insert(fields->end(), + aligned_to_8[i].fields().begin(), + aligned_to_8[i].fields().end()); + } +} + } // =================================================================== MessageGenerator::MessageGenerator(const Descriptor* descriptor, - const string& dllexport_decl) + const Options& options) : descriptor_(descriptor), classname_(ClassName(descriptor, false)), - dllexport_decl_(dllexport_decl), - field_generators_(descriptor), + options_(options), + field_generators_(descriptor, options), nested_generators_(new scoped_ptr[ descriptor->nested_type_count()]), enum_generators_(new scoped_ptr[ @@ -162,17 +303,17 @@ MessageGenerator::MessageGenerator(const Descriptor* descriptor, for (int i = 0; i < descriptor->nested_type_count(); i++) { nested_generators_[i].reset( - new MessageGenerator(descriptor->nested_type(i), dllexport_decl)); + new MessageGenerator(descriptor->nested_type(i), options)); } for (int i = 0; i < descriptor->enum_type_count(); i++) { enum_generators_[i].reset( - new EnumGenerator(descriptor->enum_type(i), dllexport_decl)); + new EnumGenerator(descriptor->enum_type(i), options)); } for (int i = 0; i < descriptor->extension_count(); i++) { extension_generators_[i].reset( - new ExtensionGenerator(descriptor->extension(i), dllexport_decl)); + new ExtensionGenerator(descriptor->extension(i), options)); } } @@ -217,7 +358,7 @@ GenerateFieldAccessorDeclarations(io::Printer* printer) { PrintFieldComment(printer, field); map vars; - SetCommonFieldVariables(field, &vars); + SetCommonFieldVariables(field, &vars, options_); vars["constant_name"] = FieldConstantName(field); if (field->is_repeated()) { @@ -254,7 +395,7 @@ GenerateFieldAccessorDefinitions(io::Printer* printer) { PrintFieldComment(printer, field); map vars; - SetCommonFieldVariables(field, &vars); + SetCommonFieldVariables(field, &vars, options_); // Generate has_$name$() or $name$_size(). if (field->is_repeated()) { @@ -264,10 +405,20 @@ GenerateFieldAccessorDefinitions(io::Printer* printer) { "}\n"); } else { // Singular field. + char buffer[kFastToBufferSize]; + vars["has_array_index"] = SimpleItoa(field->index() / 32); + vars["has_mask"] = FastHex32ToBuffer(1u << (field->index() % 32), buffer); printer->Print(vars, "inline bool $classname$::has_$name$() const {\n" - " return _has_bit($index$);\n" - "}\n"); + " return (_has_bits_[$has_array_index$] & 0x$has_mask$u) != 0;\n" + "}\n" + "inline void $classname$::set_has_$name$() {\n" + " _has_bits_[$has_array_index$] |= 0x$has_mask$u;\n" + "}\n" + "inline void $classname$::clear_has_$name$() {\n" + " _has_bits_[$has_array_index$] &= ~0x$has_mask$u;\n" + "}\n" + ); } // Generate clear_$name$() @@ -279,7 +430,8 @@ GenerateFieldAccessorDefinitions(io::Printer* printer) { printer->Outdent(); if (!field->is_repeated()) { - printer->Print(vars, " _clear_bit($index$);\n"); + printer->Print(vars, + " clear_has_$name$();\n"); } printer->Print("}\n"); @@ -303,10 +455,10 @@ GenerateClassDefinition(io::Printer* printer) { map vars; vars["classname"] = classname_; vars["field_count"] = SimpleItoa(descriptor_->field_count()); - if (dllexport_decl_.empty()) { + if (options_.dllexport_decl.empty()) { vars["dllexport"] = ""; } else { - vars["dllexport"] = dllexport_decl_ + " "; + vars["dllexport"] = options_.dllexport_decl + " "; } vars["superclass"] = SuperClassName(descriptor_); @@ -350,6 +502,20 @@ GenerateClassDefinition(io::Printer* printer) { "static const $classname$& default_instance();\n" "\n"); + if (!StaticInitializersForced(descriptor_->file())) { + printer->Print(vars, + "#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER\n" + "// Returns the internal default instance pointer. This function can\n" + "// return NULL thus should not be used by the user. This is intended\n" + "// for Protobuf internal code. Please use default_instance() declared\n" + "// above instead.\n" + "static inline const $classname$* internal_default_instance() {\n" + " return default_instance_;\n" + "}\n" + "#endif\n" + "\n"); + } + printer->Print(vars, "void Swap($classname$* other);\n" @@ -444,38 +610,91 @@ GenerateClassDefinition(io::Printer* printer) { "// @@protoc_insertion_point(class_scope:$full_name$)\n", "full_name", descriptor_->full_name()); - // Generate private members for fields. + // Generate private members. printer->Outdent(); printer->Print(" private:\n"); printer->Indent(); + + for (int i = 0; i < descriptor_->field_count(); i++) { + if (!descriptor_->field(i)->is_repeated()) { + printer->Print( + "inline void set_has_$name$();\n", + "name", FieldName(descriptor_->field(i))); + printer->Print( + "inline void clear_has_$name$();\n", + "name", FieldName(descriptor_->field(i))); + } + } + printer->Print("\n"); + + // To minimize padding, data members are divided into three sections: + // (1) members assumed to align to 8 bytes + // (2) members corresponding to message fields, re-ordered to optimize + // alignment. + // (3) members assumed to align to 4 bytes. + + // Members assumed to align to 8 bytes: + if (descriptor_->extension_range_count() > 0) { printer->Print( - "::google::protobuf::internal::ExtensionSet _extensions_;\n"); + "::google::protobuf::internal::ExtensionSet _extensions_;\n" + "\n"); } if (HasUnknownFields(descriptor_->file())) { printer->Print( - "::google::protobuf::UnknownFieldSet _unknown_fields_;\n"); + "::google::protobuf::UnknownFieldSet _unknown_fields_;\n" + "\n"); } + // Field members: + + vector fields; + for (int i = 0; i < descriptor_->field_count(); i++) { + fields.push_back(descriptor_->field(i)); + } + OptimizePadding(&fields); + for (int i = 0; i < fields.size(); ++i) { + field_generators_.get(fields[i]).GeneratePrivateMembers(printer); + } + + // Members assumed to align to 4 bytes: + // TODO(kenton): Make _cached_size_ an atomic when C++ supports it. printer->Print( - "mutable int _cached_size_;\n" - "\n"); - for (int i = 0; i < descriptor_->field_count(); i++) { - field_generators_.get(descriptor_->field(i)) - .GeneratePrivateMembers(printer); + "\n" + "mutable int _cached_size_;\n"); + + // Generate _has_bits_. + if (descriptor_->field_count() > 0) { + printer->Print(vars, + "::google::protobuf::uint32 _has_bits_[($field_count$ + 31) / 32];\n" + "\n"); + } else { + // Zero-size arrays aren't technically allowed, and MSVC in particular + // doesn't like them. We still need to declare these arrays to make + // other code compile. Since this is an uncommon case, we'll just declare + // them with size 1 and waste some space. Oh well. + printer->Print( + "::google::protobuf::uint32 _has_bits_[1];\n" + "\n"); } // Declare AddDescriptors(), BuildDescriptors(), and ShutdownFile() as // friends so that they can access private static variables like // default_instance_ and reflection_. - printer->Print( + PrintHandlingOptionalStaticInitializers( + descriptor_->file(), printer, + // With static initializers. "friend void $dllexport_decl$ $adddescriptorsname$();\n", - "dllexport_decl", dllexport_decl_, + // Without. + "friend void $dllexport_decl$ $adddescriptorsname$_impl();\n", + // Vars. + "dllexport_decl", options_.dllexport_decl, "adddescriptorsname", - GlobalAddDescriptorsName(descriptor_->file()->name())); + GlobalAddDescriptorsName(descriptor_->file()->name())); + printer->Print( "friend void $assigndescriptorsname$();\n" "friend void $shutdownfilename$();\n" @@ -484,32 +703,7 @@ GenerateClassDefinition(io::Printer* printer) { GlobalAssignDescriptorsName(descriptor_->file()->name()), "shutdownfilename", GlobalShutdownFileName(descriptor_->file()->name())); - // Generate offsets and _has_bits_ boilerplate. - if (descriptor_->field_count() > 0) { - printer->Print(vars, - "::google::protobuf::uint32 _has_bits_[($field_count$ + 31) / 32];\n"); - } else { - // Zero-size arrays aren't technically allowed, and MSVC in particular - // doesn't like them. We still need to declare these arrays to make - // other code compile. Since this is an uncommon case, we'll just declare - // them with size 1 and waste some space. Oh well. - printer->Print( - "::google::protobuf::uint32 _has_bits_[1];\n"); - } - printer->Print( - "\n" - "// WHY DOES & HAVE LOWER PRECEDENCE THAN != !?\n" - "inline bool _has_bit(int index) const {\n" - " return (_has_bits_[index / 32] & (1u << (index % 32))) != 0;\n" - "}\n" - "inline void _set_bit(int index) {\n" - " _has_bits_[index / 32] |= (1u << (index % 32));\n" - "}\n" - "inline void _clear_bit(int index) {\n" - " _has_bits_[index / 32] &= ~(1u << (index % 32));\n" - "}\n" - "\n" "void InitAsDefaultInstance();\n" "static $classname$* default_instance_;\n", "classname", classname_); @@ -589,9 +783,11 @@ GenerateDescriptorInitializer(io::Printer* printer, int index) { printer->Print(vars, " -1,\n"); } + printer->Print( + " ::google::protobuf::DescriptorPool::generated_pool(),\n"); + printer->Print(vars, + " ::google::protobuf::MessageFactory::generated_factory(),\n"); printer->Print(vars, - " ::google::protobuf::DescriptorPool::generated_pool(),\n" - " ::google::protobuf::MessageFactory::generated_factory(),\n" " sizeof($classname$));\n"); // Handle nested types. @@ -620,6 +816,13 @@ GenerateTypeRegistrations(io::Printer* printer) { void MessageGenerator:: GenerateDefaultInstanceAllocator(io::Printer* printer) { + // Construct the default instances of all fields, as they will be used + // when creating the default instance of the entire message. + for (int i = 0; i < descriptor_->field_count(); i++) { + field_generators_.get(descriptor_->field(i)) + .GenerateDefaultInstanceAllocator(printer); + } + // Construct the default instance. We can't call InitAsDefaultInstance() yet // because we need to make sure all default instances that this one might // depend on are constructed first. @@ -663,6 +866,12 @@ GenerateShutdownCode(io::Printer* printer) { "classname", classname_); } + // Handle default instances of fields. + for (int i = 0; i < descriptor_->field_count(); i++) { + field_generators_.get(descriptor_->field(i)) + .GenerateShutdownCode(printer); + } + // Handle nested types. for (int i = 0; i < descriptor_->nested_type_count(); i++) { nested_generators_[i]->GenerateShutdownCode(printer); @@ -817,8 +1026,12 @@ GenerateSharedDestructorCode(io::Printer* printer) { .GenerateDestructorCode(printer); } - printer->Print( - "if (this != default_instance_) {\n"); + PrintHandlingOptionalStaticInitializers( + descriptor_->file(), printer, + // With static initializers. + "if (this != default_instance_) {\n", + // Without. + "if (this != &default_instance()) {\n"); // We need to delete all embedded messages. // TODO(kenton): If we make unset messages point at default instances @@ -870,10 +1083,16 @@ GenerateStructors(io::Printer* printer) { if (!field->is_repeated() && field->cpp_type() == FieldDescriptor::CPPTYPE_MESSAGE) { - printer->Print( - " $name$_ = const_cast< $type$*>(&$type$::default_instance());\n", - "name", FieldName(field), - "type", FieldMessageTypeName(field)); + PrintHandlingOptionalStaticInitializers( + descriptor_->file(), printer, + // With static initializers. + " $name$_ = const_cast< $type$*>(&$type$::default_instance());\n", + // Without. + " $name$_ = const_cast< $type$*>(\n" + " $type$::internal_default_instance());\n", + // Vars. + "name", FieldName(field), + "type", FieldMessageTypeName(field)); } } printer->Print( @@ -929,8 +1148,20 @@ GenerateStructors(io::Printer* printer) { } printer->Print( - "const $classname$& $classname$::default_instance() {\n" - " if (default_instance_ == NULL) $adddescriptorsname$();" + "const $classname$& $classname$::default_instance() {\n", + "classname", classname_); + + PrintHandlingOptionalStaticInitializers( + descriptor_->file(), printer, + // With static initializers. + " if (default_instance_ == NULL) $adddescriptorsname$();\n", + // Without. + " $adddescriptorsname$();\n", + // Vars. + "adddescriptorsname", + GlobalAddDescriptorsName(descriptor_->file()->name())); + + printer->Print( " return *default_instance_;\n" "}\n" "\n" @@ -942,7 +1173,6 @@ GenerateStructors(io::Printer* printer) { "classname", classname_, "adddescriptorsname", GlobalAddDescriptorsName(descriptor_->file()->name())); - } void MessageGenerator:: @@ -961,9 +1191,6 @@ GenerateClear(io::Printer* printer) { const FieldDescriptor* field = descriptor_->field(i); if (!field->is_repeated()) { - map vars; - vars["index"] = SimpleItoa(field->index()); - // We can use the fact that _has_bits_ is a giant bitfield to our // advantage: We can check up to 32 bits at a time for equality to // zero, and skip the whole range if so. This can improve the speed @@ -975,8 +1202,9 @@ GenerateClear(io::Printer* printer) { printer->Outdent(); printer->Print("}\n"); } - printer->Print(vars, - "if (_has_bits_[$index$ / 32] & (0xffu << ($index$ % 32))) {\n"); + printer->Print( + "if (_has_bits_[$index$ / 32] & (0xffu << ($index$ % 32))) {\n", + "index", SimpleItoa(field->index())); printer->Indent(); } last_index = i; @@ -989,7 +1217,9 @@ GenerateClear(io::Printer* printer) { field->cpp_type() == FieldDescriptor::CPPTYPE_STRING; if (should_check_bit) { - printer->Print(vars, "if (_has_bit($index$)) {\n"); + printer->Print( + "if (has_$name$()) {\n", + "name", FieldName(field)); printer->Indent(); } @@ -1129,24 +1359,23 @@ GenerateMergeFrom(io::Printer* printer) { const FieldDescriptor* field = descriptor_->field(i); if (!field->is_repeated()) { - map vars; - vars["index"] = SimpleItoa(field->index()); - // See above in GenerateClear for an explanation of this. if (i / 8 != last_index / 8 || last_index < 0) { if (last_index >= 0) { printer->Outdent(); printer->Print("}\n"); } - printer->Print(vars, - "if (from._has_bits_[$index$ / 32] & (0xffu << ($index$ % 32))) {\n"); + printer->Print( + "if (from._has_bits_[$index$ / 32] & (0xffu << ($index$ % 32))) {\n", + "index", SimpleItoa(field->index())); printer->Indent(); } last_index = i; - printer->Print(vars, - "if (from._has_bit($index$)) {\n"); + printer->Print( + "if (from.has_$name$()) {\n", + "name", FieldName(field)); printer->Indent(); field_generators_.get(field).GenerateMergingCode(printer); @@ -1214,11 +1443,22 @@ GenerateMergeFromCodedStream(io::Printer* printer) { // Special-case MessageSet. printer->Print( "bool $classname$::MergePartialFromCodedStream(\n" - " ::google::protobuf::io::CodedInputStream* input) {\n" + " ::google::protobuf::io::CodedInputStream* input) {\n", + "classname", classname_); + + PrintHandlingOptionalStaticInitializers( + descriptor_->file(), printer, + // With static initializers. " return _extensions_.ParseMessageSet(input, default_instance_,\n" - " mutable_unknown_fields());\n" - "}\n", + " mutable_unknown_fields());\n", + // Without. + " return _extensions_.ParseMessageSet(input, &default_instance(),\n" + " mutable_unknown_fields());\n", + // Vars. "classname", classname_); + + printer->Print( + "}\n"); return; } @@ -1378,12 +1618,21 @@ GenerateMergeFromCodedStream(io::Printer* printer) { } printer->Print(") {\n"); if (HasUnknownFields(descriptor_->file())) { - printer->Print( + PrintHandlingOptionalStaticInitializers( + descriptor_->file(), printer, + // With static initializers. " DO_(_extensions_.ParseField(tag, input, default_instance_,\n" + " mutable_unknown_fields()));\n", + // Without. + " DO_(_extensions_.ParseField(tag, input, &default_instance(),\n" " mutable_unknown_fields()));\n"); } else { - printer->Print( - " DO_(_extensions_.ParseField(tag, input, default_instance_));\n"); + PrintHandlingOptionalStaticInitializers( + descriptor_->file(), printer, + // With static initializers. + " DO_(_extensions_.ParseField(tag, input, default_instance_));\n", + // Without. + " DO_(_extensions_.ParseField(tag, input, &default_instance()));\n"); } printer->Print( " continue;\n" @@ -1423,8 +1672,8 @@ void MessageGenerator::GenerateSerializeOneField( if (!field->is_repeated()) { printer->Print( - "if (_has_bit($index$)) {\n", - "index", SimpleItoa(field->index())); + "if (has_$name$()) {\n", + "name", FieldName(field)); printer->Indent(); } @@ -1734,6 +1983,7 @@ GenerateIsInitialized(io::Printer* printer) { for (int i = 0; i < descriptor_->field_count(); i++) { const FieldDescriptor* field = descriptor_->field(i); if (field->cpp_type() == FieldDescriptor::CPPTYPE_MESSAGE && + !ShouldIgnoreRequiredFieldCheck(field) && HasRequiredFields(field->message_type())) { if (field->is_repeated()) { printer->Print( diff --git a/cpp/thirdparty/protobuf-2.3.0/src/google/protobuf/compiler/cpp/cpp_message.h b/cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/compiler/cpp/cpp_message.h similarity index 98% rename from cpp/thirdparty/protobuf-2.3.0/src/google/protobuf/compiler/cpp/cpp_message.h rename to cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/compiler/cpp/cpp_message.h index 04778f6d1..a7e43d9c9 100644 --- a/cpp/thirdparty/protobuf-2.3.0/src/google/protobuf/compiler/cpp/cpp_message.h +++ b/cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/compiler/cpp/cpp_message.h @@ -38,6 +38,7 @@ #include #include #include +#include namespace google { namespace protobuf { @@ -57,7 +58,7 @@ class MessageGenerator { public: // See generator.cc for the meaning of dllexport_decl. explicit MessageGenerator(const Descriptor* descriptor, - const string& dllexport_decl); + const Options& options); ~MessageGenerator(); // Header stuff. @@ -153,7 +154,7 @@ class MessageGenerator { const Descriptor* descriptor_; string classname_; - string dllexport_decl_; + Options options_; FieldGeneratorMap field_generators_; scoped_array > nested_generators_; scoped_array > enum_generators_; diff --git a/cpp/thirdparty/protobuf-2.3.0/src/google/protobuf/compiler/cpp/cpp_message_field.cc b/cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/compiler/cpp/cpp_message_field.cc similarity index 85% rename from cpp/thirdparty/protobuf-2.3.0/src/google/protobuf/compiler/cpp/cpp_message_field.cc rename to cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/compiler/cpp/cpp_message_field.cc index c04bdc66b..447f975f8 100644 --- a/cpp/thirdparty/protobuf-2.3.0/src/google/protobuf/compiler/cpp/cpp_message_field.cc +++ b/cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/compiler/cpp/cpp_message_field.cc @@ -45,8 +45,9 @@ namespace cpp { namespace { void SetMessageVariables(const FieldDescriptor* descriptor, - map* variables) { - SetCommonFieldVariables(descriptor, variables); + map* variables, + const Options& options) { + SetCommonFieldVariables(descriptor, variables, options); (*variables)["type"] = FieldMessageTypeName(descriptor); (*variables)["stream_writer"] = (*variables)["declared_type"] + (HasFastArraySerialization(descriptor->message_type()->file()) ? @@ -59,9 +60,10 @@ void SetMessageVariables(const FieldDescriptor* descriptor, // =================================================================== MessageFieldGenerator:: -MessageFieldGenerator(const FieldDescriptor* descriptor) +MessageFieldGenerator(const FieldDescriptor* descriptor, + const Options& options) : descriptor_(descriptor) { - SetMessageVariables(descriptor, &variables_); + SetMessageVariables(descriptor, &variables_, options); } MessageFieldGenerator::~MessageFieldGenerator() {} @@ -75,19 +77,44 @@ void MessageFieldGenerator:: GenerateAccessorDeclarations(io::Printer* printer) const { printer->Print(variables_, "inline const $type$& $name$() const$deprecation$;\n" - "inline $type$* mutable_$name$()$deprecation$;\n"); + "inline $type$* mutable_$name$()$deprecation$;\n" + "inline $type$* release_$name$()$deprecation$;\n" + "inline void set_allocated_$name$($type$* $name$)$deprecation$;\n"); } void MessageFieldGenerator:: GenerateInlineAccessorDefinitions(io::Printer* printer) const { printer->Print(variables_, - "inline const $type$& $classname$::$name$() const {\n" - " return $name$_ != NULL ? *$name$_ : *default_instance_->$name$_;\n" + "inline const $type$& $classname$::$name$() const {\n"); + + PrintHandlingOptionalStaticInitializers( + variables_, descriptor_->file(), printer, + // With static initializers. + " return $name$_ != NULL ? *$name$_ : *default_instance_->$name$_;\n", + // Without. + " return $name$_ != NULL ? *$name$_ : *default_instance().$name$_;\n"); + + printer->Print(variables_, "}\n" "inline $type$* $classname$::mutable_$name$() {\n" - " _set_bit($index$);\n" + " set_has_$name$();\n" " if ($name$_ == NULL) $name$_ = new $type$;\n" " return $name$_;\n" + "}\n" + "inline $type$* $classname$::release_$name$() {\n" + " clear_has_$name$();\n" + " $type$* temp = $name$_;\n" + " $name$_ = NULL;\n" + " return temp;\n" + "}\n" + "inline void $classname$::set_allocated_$name$($type$* $name$) {\n" + " delete $name$_;\n" + " $name$_ = $name$;\n" + " if ($name$) {\n" + " set_has_$name$();\n" + " } else {\n" + " clear_has_$name$();\n" + " }\n" "}\n"); } @@ -152,9 +179,10 @@ GenerateByteSize(io::Printer* printer) const { // =================================================================== RepeatedMessageFieldGenerator:: -RepeatedMessageFieldGenerator(const FieldDescriptor* descriptor) +RepeatedMessageFieldGenerator(const FieldDescriptor* descriptor, + const Options& options) : descriptor_(descriptor) { - SetMessageVariables(descriptor, &variables_); + SetMessageVariables(descriptor, &variables_, options); } RepeatedMessageFieldGenerator::~RepeatedMessageFieldGenerator() {} @@ -182,7 +210,7 @@ void RepeatedMessageFieldGenerator:: GenerateInlineAccessorDefinitions(io::Printer* printer) const { printer->Print(variables_, "inline const $type$& $classname$::$name$(int index) const {\n" - " return $name$_.Get(index);\n" + " return $name$_.$cppget$(index);\n" "}\n" "inline $type$* $classname$::mutable_$name$(int index) {\n" " return $name$_.Mutable(index);\n" diff --git a/cpp/thirdparty/protobuf-2.3.0/src/google/protobuf/compiler/cpp/cpp_message_field.h b/cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/compiler/cpp/cpp_message_field.h similarity index 96% rename from cpp/thirdparty/protobuf-2.3.0/src/google/protobuf/compiler/cpp/cpp_message_field.h rename to cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/compiler/cpp/cpp_message_field.h index f5147278b..a5ed68a5c 100644 --- a/cpp/thirdparty/protobuf-2.3.0/src/google/protobuf/compiler/cpp/cpp_message_field.h +++ b/cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/compiler/cpp/cpp_message_field.h @@ -46,7 +46,8 @@ namespace cpp { class MessageFieldGenerator : public FieldGenerator { public: - explicit MessageFieldGenerator(const FieldDescriptor* descriptor); + explicit MessageFieldGenerator(const FieldDescriptor* descriptor, + const Options& options); ~MessageFieldGenerator(); // implements FieldGenerator --------------------------------------- @@ -71,7 +72,8 @@ class MessageFieldGenerator : public FieldGenerator { class RepeatedMessageFieldGenerator : public FieldGenerator { public: - explicit RepeatedMessageFieldGenerator(const FieldDescriptor* descriptor); + explicit RepeatedMessageFieldGenerator(const FieldDescriptor* descriptor, + const Options& options); ~RepeatedMessageFieldGenerator(); // implements FieldGenerator --------------------------------------- diff --git a/cpp/thirdparty/protobuf-2.3.0/src/google/protobuf/compiler/zip_writer.h b/cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/compiler/cpp/cpp_options.h similarity index 79% rename from cpp/thirdparty/protobuf-2.3.0/src/google/protobuf/compiler/zip_writer.h rename to cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/compiler/cpp/cpp_options.h index 428955306..787706629 100644 --- a/cpp/thirdparty/protobuf-2.3.0/src/google/protobuf/compiler/zip_writer.h +++ b/cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/compiler/cpp/cpp_options.h @@ -28,36 +28,31 @@ // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -// Author: kenton@google.com (Kenton Varda) +// Author: rennie@google.com (Jeffrey Rennie) -#include -#include -#include +#ifndef GOOGLE_PROTOBUF_COMPILER_CPP_OPTIONS_H__ +#define GOOGLE_PROTOBUF_COMPILER_CPP_OPTIONS_H__ + +#include +#include namespace google { namespace protobuf { namespace compiler { +namespace cpp { + +// Generator options: +struct Options { + Options() : safe_boundary_check(false) { + } + string dllexport_decl; + bool safe_boundary_check; +}; -class ZipWriter { - public: - ZipWriter(io::ZeroCopyOutputStream* raw_output); - ~ZipWriter(); - - bool Write(const string& filename, const string& contents); - bool WriteDirectory(); - - private: - struct FileInfo { - string name; - uint32 offset; - uint32 size; - uint32 crc32; - }; +} // namespace cpp +} // namespace compiler +} // namespace protobuf - io::ZeroCopyOutputStream* raw_output_; - vector files_; -}; } // namespace google -} // namespace protobuf -} // namespace compiler +#endif // GOOGLE_PROTOBUF_COMPILER_CPP_OPTIONS_H__ diff --git a/cpp/thirdparty/protobuf-2.3.0/src/google/protobuf/compiler/cpp/cpp_plugin_unittest.cc b/cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/compiler/cpp/cpp_plugin_unittest.cc similarity index 84% rename from cpp/thirdparty/protobuf-2.3.0/src/google/protobuf/compiler/cpp/cpp_plugin_unittest.cc rename to cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/compiler/cpp/cpp_plugin_unittest.cc index 440b7166a..5c4aa4fbc 100644 --- a/cpp/thirdparty/protobuf-2.3.0/src/google/protobuf/compiler/cpp/cpp_plugin_unittest.cc +++ b/cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/compiler/cpp/cpp_plugin_unittest.cc @@ -56,24 +56,24 @@ class TestGenerator : public CodeGenerator { virtual bool Generate(const FileDescriptor* file, const string& parameter, - OutputDirectory* output_directory, + GeneratorContext* context, string* error) const { - TryInsert("test.pb.h", "includes", output_directory); - TryInsert("test.pb.h", "namespace_scope", output_directory); - TryInsert("test.pb.h", "global_scope", output_directory); - TryInsert("test.pb.h", "class_scope:foo.Bar", output_directory); - TryInsert("test.pb.h", "class_scope:foo.Bar.Baz", output_directory); + TryInsert("test.pb.h", "includes", context); + TryInsert("test.pb.h", "namespace_scope", context); + TryInsert("test.pb.h", "global_scope", context); + TryInsert("test.pb.h", "class_scope:foo.Bar", context); + TryInsert("test.pb.h", "class_scope:foo.Bar.Baz", context); - TryInsert("test.pb.cc", "includes", output_directory); - TryInsert("test.pb.cc", "namespace_scope", output_directory); - TryInsert("test.pb.cc", "global_scope", output_directory); + TryInsert("test.pb.cc", "includes", context); + TryInsert("test.pb.cc", "namespace_scope", context); + TryInsert("test.pb.cc", "global_scope", context); return true; } void TryInsert(const string& filename, const string& insertion_point, - OutputDirectory* output_directory) const { + GeneratorContext* context) const { scoped_ptr output( - output_directory->OpenForInsert(filename, insertion_point)); + context->OpenForInsert(filename, insertion_point)); io::Printer printer(output.get(), '$'); printer.Print("// inserted $name$\n", "name", insertion_point); } diff --git a/cpp/thirdparty/protobuf-2.3.0/src/google/protobuf/compiler/cpp/cpp_primitive_field.cc b/cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/compiler/cpp/cpp_primitive_field.cc similarity index 95% rename from cpp/thirdparty/protobuf-2.3.0/src/google/protobuf/compiler/cpp/cpp_primitive_field.cc rename to cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/compiler/cpp/cpp_primitive_field.cc index a69c48b5f..1c35fefa1 100644 --- a/cpp/thirdparty/protobuf-2.3.0/src/google/protobuf/compiler/cpp/cpp_primitive_field.cc +++ b/cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/compiler/cpp/cpp_primitive_field.cc @@ -80,8 +80,9 @@ int FixedSize(FieldDescriptor::Type type) { } void SetPrimitiveVariables(const FieldDescriptor* descriptor, - map* variables) { - SetCommonFieldVariables(descriptor, variables); + map* variables, + const Options& options) { + SetCommonFieldVariables(descriptor, variables, options); (*variables)["type"] = PrimitiveTypeName(descriptor->cpp_type()); (*variables)["default"] = DefaultValue(descriptor); (*variables)["tag"] = SimpleItoa(internal::WireFormat::MakeTag(descriptor)); @@ -99,9 +100,10 @@ void SetPrimitiveVariables(const FieldDescriptor* descriptor, // =================================================================== PrimitiveFieldGenerator:: -PrimitiveFieldGenerator(const FieldDescriptor* descriptor) +PrimitiveFieldGenerator(const FieldDescriptor* descriptor, + const Options& options) : descriptor_(descriptor) { - SetPrimitiveVariables(descriptor, &variables_); + SetPrimitiveVariables(descriptor, &variables_, options); } PrimitiveFieldGenerator::~PrimitiveFieldGenerator() {} @@ -125,7 +127,7 @@ GenerateInlineAccessorDefinitions(io::Printer* printer) const { " return $name$_;\n" "}\n" "inline void $classname$::set_$name$($type$ value) {\n" - " _set_bit($index$);\n" + " set_has_$name$();\n" " $name$_ = value;\n" "}\n"); } @@ -156,7 +158,7 @@ GenerateMergeFromCodedStream(io::Printer* printer) const { "DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<\n" " $type$, $wire_format_field_type$>(\n" " input, &$name$_)));\n" - "_set_bit($index$);\n"); + "set_has_$name$();\n"); } void PrimitiveFieldGenerator:: @@ -190,9 +192,10 @@ GenerateByteSize(io::Printer* printer) const { // =================================================================== RepeatedPrimitiveFieldGenerator:: -RepeatedPrimitiveFieldGenerator(const FieldDescriptor* descriptor) +RepeatedPrimitiveFieldGenerator(const FieldDescriptor* descriptor, + const Options& options) : descriptor_(descriptor) { - SetPrimitiveVariables(descriptor, &variables_); + SetPrimitiveVariables(descriptor, &variables_, options); if (descriptor->options().packed()) { variables_["packed_reader"] = "ReadPackedPrimitive"; @@ -366,7 +369,9 @@ GenerateByteSize(io::Printer* printer) const { " total_size += $tag_size$ +\n" " ::google::protobuf::internal::WireFormatLite::Int32Size(data_size);\n" "}\n" + "GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();\n" "_$name$_cached_byte_size_ = data_size;\n" + "GOOGLE_SAFE_CONCURRENT_WRITES_END();\n" "total_size += data_size;\n"); } else { printer->Print(variables_, diff --git a/cpp/thirdparty/protobuf-2.3.0/src/google/protobuf/compiler/cpp/cpp_primitive_field.h b/cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/compiler/cpp/cpp_primitive_field.h similarity index 96% rename from cpp/thirdparty/protobuf-2.3.0/src/google/protobuf/compiler/cpp/cpp_primitive_field.h rename to cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/compiler/cpp/cpp_primitive_field.h index 8fcd74ae5..48249c407 100644 --- a/cpp/thirdparty/protobuf-2.3.0/src/google/protobuf/compiler/cpp/cpp_primitive_field.h +++ b/cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/compiler/cpp/cpp_primitive_field.h @@ -46,7 +46,8 @@ namespace cpp { class PrimitiveFieldGenerator : public FieldGenerator { public: - explicit PrimitiveFieldGenerator(const FieldDescriptor* descriptor); + explicit PrimitiveFieldGenerator(const FieldDescriptor* descriptor, + const Options& options); ~PrimitiveFieldGenerator(); // implements FieldGenerator --------------------------------------- @@ -71,7 +72,8 @@ class PrimitiveFieldGenerator : public FieldGenerator { class RepeatedPrimitiveFieldGenerator : public FieldGenerator { public: - explicit RepeatedPrimitiveFieldGenerator(const FieldDescriptor* descriptor); + explicit RepeatedPrimitiveFieldGenerator(const FieldDescriptor* descriptor, + const Options& options); ~RepeatedPrimitiveFieldGenerator(); // implements FieldGenerator --------------------------------------- diff --git a/cpp/thirdparty/protobuf-2.3.0/src/google/protobuf/compiler/cpp/cpp_service.cc b/cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/compiler/cpp/cpp_service.cc similarity index 98% rename from cpp/thirdparty/protobuf-2.3.0/src/google/protobuf/compiler/cpp/cpp_service.cc rename to cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/compiler/cpp/cpp_service.cc index c28256835..d20018ea2 100644 --- a/cpp/thirdparty/protobuf-2.3.0/src/google/protobuf/compiler/cpp/cpp_service.cc +++ b/cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/compiler/cpp/cpp_service.cc @@ -43,14 +43,14 @@ namespace compiler { namespace cpp { ServiceGenerator::ServiceGenerator(const ServiceDescriptor* descriptor, - const string& dllexport_decl) + const Options& options) : descriptor_(descriptor) { vars_["classname"] = descriptor_->name(); vars_["full_name"] = descriptor_->full_name(); - if (dllexport_decl.empty()) { + if (options.dllexport_decl.empty()) { vars_["dllexport"] = ""; } else { - vars_["dllexport"] = dllexport_decl + " "; + vars_["dllexport"] = options.dllexport_decl + " "; } } diff --git a/cpp/thirdparty/protobuf-2.3.0/src/google/protobuf/compiler/cpp/cpp_service.h b/cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/compiler/cpp/cpp_service.h similarity index 97% rename from cpp/thirdparty/protobuf-2.3.0/src/google/protobuf/compiler/cpp/cpp_service.h rename to cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/compiler/cpp/cpp_service.h index 10e9dd3cd..820f9f5f7 100644 --- a/cpp/thirdparty/protobuf-2.3.0/src/google/protobuf/compiler/cpp/cpp_service.h +++ b/cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/compiler/cpp/cpp_service.h @@ -38,6 +38,7 @@ #include #include #include +#include #include namespace google { @@ -55,7 +56,7 @@ class ServiceGenerator { public: // See generator.cc for the meaning of dllexport_decl. explicit ServiceGenerator(const ServiceDescriptor* descriptor, - const string& dllexport_decl); + const Options& options); ~ServiceGenerator(); // Header stuff. diff --git a/cpp/thirdparty/protobuf-2.3.0/src/google/protobuf/compiler/cpp/cpp_string_field.cc b/cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/compiler/cpp/cpp_string_field.cc similarity index 81% rename from cpp/thirdparty/protobuf-2.3.0/src/google/protobuf/compiler/cpp/cpp_string_field.cc rename to cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/compiler/cpp/cpp_string_field.cc index ea6809a99..9c0911ac9 100644 --- a/cpp/thirdparty/protobuf-2.3.0/src/google/protobuf/compiler/cpp/cpp_string_field.cc +++ b/cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/compiler/cpp/cpp_string_field.cc @@ -46,10 +46,15 @@ namespace cpp { namespace { void SetStringVariables(const FieldDescriptor* descriptor, - map* variables) { - SetCommonFieldVariables(descriptor, variables); - (*variables)["default"] = - "\"" + CEscape(descriptor->default_value_string()) + "\""; + map* variables, + const Options& options) { + SetCommonFieldVariables(descriptor, variables, options); + (*variables)["default"] = DefaultValue(descriptor); + (*variables)["default_length"] = + SimpleItoa(descriptor->default_value_string().length()); + (*variables)["default_variable"] = descriptor->default_value_string().empty() + ? "&::google::protobuf::internal::kEmptyString" + : "_default_" + FieldName(descriptor) + "_"; (*variables)["pointer_type"] = descriptor->type() == FieldDescriptor::TYPE_BYTES ? "void" : "char"; } @@ -59,18 +64,20 @@ void SetStringVariables(const FieldDescriptor* descriptor, // =================================================================== StringFieldGenerator:: -StringFieldGenerator(const FieldDescriptor* descriptor) +StringFieldGenerator(const FieldDescriptor* descriptor, + const Options& options) : descriptor_(descriptor) { - SetStringVariables(descriptor, &variables_); + SetStringVariables(descriptor, &variables_, options); } StringFieldGenerator::~StringFieldGenerator() {} void StringFieldGenerator:: GeneratePrivateMembers(io::Printer* printer) const { - printer->Print(variables_, - "::std::string* $name$_;\n" - "static const ::std::string _default_$name$_;\n"); + printer->Print(variables_, "::std::string* $name$_;\n"); + if (!descriptor_->default_value_string().empty()) { + printer->Print(variables_, "static ::std::string* $default_variable$;\n"); + } } void StringFieldGenerator:: @@ -105,7 +112,10 @@ GenerateAccessorDeclarations(io::Printer* printer) const { "inline void set_$name$(const char* value)$deprecation$;\n" "inline void set_$name$(const $pointer_type$* value, size_t size)" "$deprecation$;\n" - "inline ::std::string* mutable_$name$()$deprecation$;\n"); + "inline ::std::string* mutable_$name$()$deprecation$;\n" + "inline ::std::string* release_$name$()$deprecation$;\n" + "inline void set_allocated_$name$(::std::string* $name$)$deprecation$;\n"); + if (descriptor_->options().ctype() != FieldOptions::STRING) { printer->Outdent(); @@ -121,51 +131,71 @@ GenerateInlineAccessorDefinitions(io::Printer* printer) const { " return *$name$_;\n" "}\n" "inline void $classname$::set_$name$(const ::std::string& value) {\n" - " _set_bit($index$);\n" - " if ($name$_ == &_default_$name$_) {\n" + " set_has_$name$();\n" + " if ($name$_ == $default_variable$) {\n" " $name$_ = new ::std::string;\n" " }\n" " $name$_->assign(value);\n" "}\n" "inline void $classname$::set_$name$(const char* value) {\n" - " _set_bit($index$);\n" - " if ($name$_ == &_default_$name$_) {\n" + " set_has_$name$();\n" + " if ($name$_ == $default_variable$) {\n" " $name$_ = new ::std::string;\n" " }\n" " $name$_->assign(value);\n" "}\n" "inline " "void $classname$::set_$name$(const $pointer_type$* value, size_t size) {\n" - " _set_bit($index$);\n" - " if ($name$_ == &_default_$name$_) {\n" + " set_has_$name$();\n" + " if ($name$_ == $default_variable$) {\n" " $name$_ = new ::std::string;\n" " }\n" " $name$_->assign(reinterpret_cast(value), size);\n" "}\n" "inline ::std::string* $classname$::mutable_$name$() {\n" - " _set_bit($index$);\n" - " if ($name$_ == &_default_$name$_) {\n"); + " set_has_$name$();\n" + " if ($name$_ == $default_variable$) {\n"); if (descriptor_->default_value_string().empty()) { printer->Print(variables_, " $name$_ = new ::std::string;\n"); } else { printer->Print(variables_, - " $name$_ = new ::std::string(_default_$name$_);\n"); + " $name$_ = new ::std::string(*$default_variable$);\n"); } printer->Print(variables_, " }\n" " return $name$_;\n" + "}\n" + "inline ::std::string* $classname$::release_$name$() {\n" + " clear_has_$name$();\n" + " if ($name$_ == $default_variable$) {\n" + " return NULL;\n" + " } else {\n" + " ::std::string* temp = $name$_;\n" + " $name$_ = const_cast< ::std::string*>($default_variable$);\n" + " return temp;\n" + " }\n" + "}\n" + "inline void $classname$::set_allocated_$name$(::std::string* $name$) {\n" + " if ($name$_ != $default_variable$) {\n" + " delete $name$_;\n" + " }\n" + " if ($name$) {\n" + " set_has_$name$();\n" + " $name$_ = $name$;\n" + " } else {\n" + " clear_has_$name$();\n" + " $name$_ = const_cast< ::std::string*>($default_variable$);\n" + " }\n" "}\n"); } void StringFieldGenerator:: GenerateNonInlineAccessorDefinitions(io::Printer* printer) const { - if (descriptor_->default_value_string().empty()) { - printer->Print(variables_, - "const ::std::string $classname$::_default_$name$_;\n"); - } else { + if (!descriptor_->default_value_string().empty()) { + // Initialized in GenerateDefaultInstanceAllocator. printer->Print(variables_, - "const ::std::string $classname$::_default_$name$_($default$);\n"); + "::std::string* $classname$::$default_variable$ = NULL;\n"); } } @@ -173,13 +203,13 @@ void StringFieldGenerator:: GenerateClearingCode(io::Printer* printer) const { if (descriptor_->default_value_string().empty()) { printer->Print(variables_, - "if ($name$_ != &_default_$name$_) {\n" + "if ($name$_ != $default_variable$) {\n" " $name$_->clear();\n" "}\n"); } else { printer->Print(variables_, - "if ($name$_ != &_default_$name$_) {\n" - " $name$_->assign(_default_$name$_);\n" + "if ($name$_ != $default_variable$) {\n" + " $name$_->assign(*$default_variable$);\n" "}\n"); } } @@ -197,17 +227,34 @@ GenerateSwappingCode(io::Printer* printer) const { void StringFieldGenerator:: GenerateConstructorCode(io::Printer* printer) const { printer->Print(variables_, - "$name$_ = const_cast< ::std::string*>(&_default_$name$_);\n"); + "$name$_ = const_cast< ::std::string*>($default_variable$);\n"); } void StringFieldGenerator:: GenerateDestructorCode(io::Printer* printer) const { printer->Print(variables_, - "if ($name$_ != &_default_$name$_) {\n" + "if ($name$_ != $default_variable$) {\n" " delete $name$_;\n" "}\n"); } +void StringFieldGenerator:: +GenerateDefaultInstanceAllocator(io::Printer* printer) const { + if (!descriptor_->default_value_string().empty()) { + printer->Print(variables_, + "$classname$::$default_variable$ =\n" + " new ::std::string($default$, $default_length$);\n"); + } +} + +void StringFieldGenerator:: +GenerateShutdownCode(io::Printer* printer) const { + if (!descriptor_->default_value_string().empty()) { + printer->Print(variables_, + "delete $classname$::$default_variable$;\n"); + } +} + void StringFieldGenerator:: GenerateMergeFromCodedStream(io::Printer* printer) const { printer->Print(variables_, @@ -262,9 +309,10 @@ GenerateByteSize(io::Printer* printer) const { // =================================================================== RepeatedStringFieldGenerator:: -RepeatedStringFieldGenerator(const FieldDescriptor* descriptor) +RepeatedStringFieldGenerator(const FieldDescriptor* descriptor, + const Options& options) : descriptor_(descriptor) { - SetStringVariables(descriptor, &variables_); + SetStringVariables(descriptor, &variables_, options); } RepeatedStringFieldGenerator::~RepeatedStringFieldGenerator() {} @@ -317,7 +365,7 @@ void RepeatedStringFieldGenerator:: GenerateInlineAccessorDefinitions(io::Printer* printer) const { printer->Print(variables_, "inline const ::std::string& $classname$::$name$(int index) const {\n" - " return $name$_.Get(index);\n" + " return $name$_.$cppget$(index);\n" "}\n" "inline ::std::string* $classname$::mutable_$name$(int index) {\n" " return $name$_.Mutable(index);\n" @@ -387,7 +435,8 @@ GenerateMergeFromCodedStream(io::Printer* printer) const { descriptor_->type() == FieldDescriptor::TYPE_STRING) { printer->Print(variables_, "::google::protobuf::internal::WireFormat::VerifyUTF8String(\n" - " this->$name$(0).data(), this->$name$(0).length(),\n" + " this->$name$(this->$name$_size() - 1).data(),\n" + " this->$name$(this->$name$_size() - 1).length(),\n" " ::google::protobuf::internal::WireFormat::PARSE);\n"); } } diff --git a/cpp/thirdparty/protobuf-2.3.0/src/google/protobuf/compiler/cpp/cpp_string_field.h b/cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/compiler/cpp/cpp_string_field.h similarity index 94% rename from cpp/thirdparty/protobuf-2.3.0/src/google/protobuf/compiler/cpp/cpp_string_field.h rename to cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/compiler/cpp/cpp_string_field.h index 7f45107de..3264134aa 100644 --- a/cpp/thirdparty/protobuf-2.3.0/src/google/protobuf/compiler/cpp/cpp_string_field.h +++ b/cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/compiler/cpp/cpp_string_field.h @@ -46,7 +46,8 @@ namespace cpp { class StringFieldGenerator : public FieldGenerator { public: - explicit StringFieldGenerator(const FieldDescriptor* descriptor); + explicit StringFieldGenerator(const FieldDescriptor* descriptor, + const Options& options); ~StringFieldGenerator(); // implements FieldGenerator --------------------------------------- @@ -59,6 +60,8 @@ class StringFieldGenerator : public FieldGenerator { void GenerateSwappingCode(io::Printer* printer) const; void GenerateConstructorCode(io::Printer* printer) const; void GenerateDestructorCode(io::Printer* printer) const; + void GenerateDefaultInstanceAllocator(io::Printer* printer) const; + void GenerateShutdownCode(io::Printer* printer) const; void GenerateMergeFromCodedStream(io::Printer* printer) const; void GenerateSerializeWithCachedSizes(io::Printer* printer) const; void GenerateSerializeWithCachedSizesToArray(io::Printer* printer) const; @@ -73,7 +76,8 @@ class StringFieldGenerator : public FieldGenerator { class RepeatedStringFieldGenerator : public FieldGenerator { public: - explicit RepeatedStringFieldGenerator(const FieldDescriptor* descriptor); + explicit RepeatedStringFieldGenerator(const FieldDescriptor* descriptor, + const Options& options); ~RepeatedStringFieldGenerator(); // implements FieldGenerator --------------------------------------- diff --git a/cpp/thirdparty/protobuf-2.3.0/src/google/protobuf/compiler/cpp/cpp_test_bad_identifiers.proto b/cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/compiler/cpp/cpp_test_bad_identifiers.proto similarity index 90% rename from cpp/thirdparty/protobuf-2.3.0/src/google/protobuf/compiler/cpp/cpp_test_bad_identifiers.proto rename to cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/compiler/cpp/cpp_test_bad_identifiers.proto index 79971a95f..e14a818c9 100644 --- a/cpp/thirdparty/protobuf-2.3.0/src/google/protobuf/compiler/cpp/cpp_test_bad_identifiers.proto +++ b/cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/compiler/cpp/cpp_test_bad_identifiers.proto @@ -36,6 +36,10 @@ // though the same identifiers are used internally by the C++ code generator. +// Some generic_services option(s) added automatically. +// See: http://go/proto2-generic-services-default +option cc_generic_services = true; // auto-added + // We don't put this in a package within proto2 because we need to make sure // that the generated code doesn't depend on being in the proto2 namespace. package protobuf_unittest; @@ -99,9 +103,19 @@ message TestConflictingSymbolNames { message DO {} optional DO do = 32; + // Some template parameter names for extensions. + optional int32 field_type = 33; + optional bool is_packed = 34; + extensions 1000 to max; } +message TestConflictingSymbolNamesExtension { + extend TestConflictingSymbolNames { + repeated int32 repeated_int32_ext = 20423638 [packed=true]; + } +} + message DummyMessage {} service TestConflictingMethodNames { diff --git a/cpp/thirdparty/protobuf-2.3.0/src/google/protobuf/compiler/cpp/cpp_unittest.cc b/cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/compiler/cpp/cpp_unittest.cc similarity index 88% rename from cpp/thirdparty/protobuf-2.3.0/src/google/protobuf/compiler/cpp/cpp_unittest.cc rename to cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/compiler/cpp/cpp_unittest.cc index a7e852de2..1eae29b53 100644 --- a/cpp/thirdparty/protobuf-2.3.0/src/google/protobuf/compiler/cpp/cpp_unittest.cc +++ b/cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/compiler/cpp/cpp_unittest.cc @@ -44,6 +44,8 @@ // correctly and produces the interfaces we expect, which is why this test // is written this way. +#include + #include #include @@ -64,7 +66,7 @@ #include #include #include -#include +#include namespace google { namespace protobuf { @@ -74,6 +76,8 @@ namespace cpp { // Can't use an anonymous namespace here due to brokenness of Tru64 compiler. namespace cpp_unittest { +namespace protobuf_unittest = ::protobuf_unittest; + class MockErrorCollector : public MultiFileErrorCollector { public: @@ -167,6 +171,22 @@ TEST(GeneratedMessageTest, FloatingPointDefaults) { EXPECT_TRUE(extreme_default.nan_float() != extreme_default.nan_float()); } +TEST(GeneratedMessageTest, Trigraph) { + const unittest::TestExtremeDefaultValues& extreme_default = + unittest::TestExtremeDefaultValues::default_instance(); + + EXPECT_EQ("? ? ?? ?? ??? ?\?/ ?\?-", extreme_default.cpp_trigraph()); +} + +TEST(GeneratedMessageTest, ExtremeSmallIntegerDefault) { + const unittest::TestExtremeDefaultValues& extreme_default = + unittest::TestExtremeDefaultValues::default_instance(); + EXPECT_EQ(-0x80000000, kint32min); + EXPECT_EQ(GOOGLE_LONGLONG(-0x8000000000000000), kint64min); + EXPECT_EQ(kint32min, extreme_default.really_small_int32()); + EXPECT_EQ(kint64min, extreme_default.really_small_int64()); +} + TEST(GeneratedMessageTest, Accessors) { // Set every field to a unique value then go back and check all those // values. @@ -195,6 +215,98 @@ TEST(GeneratedMessageTest, MutableStringDefault) { EXPECT_EQ("hello", *message.mutable_default_string()); } +TEST(GeneratedMessageTest, StringDefaults) { + unittest::TestExtremeDefaultValues message; + // Check if '\000' can be used in default string value. + EXPECT_EQ(string("hel\000lo", 6), message.string_with_zero()); + EXPECT_EQ(string("wor\000ld", 6), message.bytes_with_zero()); +} + +TEST(GeneratedMessageTest, ReleaseString) { + // Check that release_foo() starts out NULL, and gives us a value + // that we can delete after it's been set. + unittest::TestAllTypes message; + + EXPECT_EQ(NULL, message.release_default_string()); + EXPECT_FALSE(message.has_default_string()); + EXPECT_EQ("hello", message.default_string()); + + message.set_default_string("blah"); + EXPECT_TRUE(message.has_default_string()); + string* str = message.release_default_string(); + EXPECT_FALSE(message.has_default_string()); + ASSERT_TRUE(str != NULL); + EXPECT_EQ("blah", *str); + delete str; + + EXPECT_EQ(NULL, message.release_default_string()); + EXPECT_FALSE(message.has_default_string()); + EXPECT_EQ("hello", message.default_string()); +} + +TEST(GeneratedMessageTest, ReleaseMessage) { + // Check that release_foo() starts out NULL, and gives us a value + // that we can delete after it's been set. + unittest::TestAllTypes message; + + EXPECT_EQ(NULL, message.release_optional_nested_message()); + EXPECT_FALSE(message.has_optional_nested_message()); + + message.mutable_optional_nested_message()->set_bb(1); + unittest::TestAllTypes::NestedMessage* nest = + message.release_optional_nested_message(); + EXPECT_FALSE(message.has_optional_nested_message()); + ASSERT_TRUE(nest != NULL); + EXPECT_EQ(1, nest->bb()); + delete nest; + + EXPECT_EQ(NULL, message.release_optional_nested_message()); + EXPECT_FALSE(message.has_optional_nested_message()); +} + +TEST(GeneratedMessageTest, SetAllocatedString) { + // Check that set_allocated_foo() works for strings. + unittest::TestAllTypes message; + + EXPECT_FALSE(message.has_optional_string()); + const string kHello("hello"); + message.set_optional_string(kHello); + EXPECT_TRUE(message.has_optional_string()); + + message.set_allocated_optional_string(NULL); + EXPECT_FALSE(message.has_optional_string()); + EXPECT_EQ("", message.optional_string()); + + message.set_allocated_optional_string(new string(kHello)); + EXPECT_TRUE(message.has_optional_string()); + EXPECT_EQ(kHello, message.optional_string()); +} + +TEST(GeneratedMessageTest, SetAllocatedMessage) { + // Check that set_allocated_foo() can be called in all cases. + unittest::TestAllTypes message; + + EXPECT_FALSE(message.has_optional_nested_message()); + + message.mutable_optional_nested_message()->set_bb(1); + EXPECT_TRUE(message.has_optional_nested_message()); + + message.set_allocated_optional_nested_message(NULL); + EXPECT_FALSE(message.has_optional_nested_message()); + EXPECT_EQ(&unittest::TestAllTypes::NestedMessage::default_instance(), + &message.optional_nested_message()); + + message.mutable_optional_nested_message()->set_bb(1); + unittest::TestAllTypes::NestedMessage* nest = + message.release_optional_nested_message(); + ASSERT_TRUE(nest != NULL); + EXPECT_FALSE(message.has_optional_nested_message()); + + message.set_allocated_optional_nested_message(nest); + EXPECT_TRUE(message.has_optional_nested_message()); + EXPECT_EQ(1, message.optional_nested_message().bb()); +} + TEST(GeneratedMessageTest, Clear) { // Set every field to a unique value, clear the message, then check that // it is cleared. @@ -269,7 +381,6 @@ TEST(GeneratedMessageTest, StringCharStarLength) { EXPECT_EQ("wx", message.repeated_string(0)); } - TEST(GeneratedMessageTest, CopyFrom) { unittest::TestAllTypes message1, message2; @@ -376,10 +487,12 @@ TEST(GeneratedMessageTest, CopyAssignmentOperator) { TestUtil::ExpectAllFieldsSet(message2); // Make sure that self-assignment does something sane. - message2 = message2; + message2.operator=(message2); TestUtil::ExpectAllFieldsSet(message2); } +#if !defined(PROTOBUF_TEST_NO_DESCRIPTORS) || \ + !defined(GOOGLE_PROTOBUF_NO_RTTI) TEST(GeneratedMessageTest, UpcastCopyFrom) { // Test the CopyFrom method that takes in the generic const Message& // parameter. @@ -392,6 +505,7 @@ TEST(GeneratedMessageTest, UpcastCopyFrom) { TestUtil::ExpectAllFieldsSet(message2); } +#endif #ifndef PROTOBUF_TEST_NO_DESCRIPTORS @@ -443,7 +557,9 @@ TEST(GeneratedMessageTest, NonEmptyMergeFrom) { TestUtil::ExpectAllFieldsSet(message1); } -#ifdef GTEST_HAS_DEATH_TEST +#if !defined(PROTOBUF_TEST_NO_DESCRIPTORS) || \ + !defined(GOOGLE_PROTOBUF_NO_RTTI) +#ifdef PROTOBUF_HAS_DEATH_TEST TEST(GeneratedMessageTest, MergeFromSelf) { unittest::TestAllTypes message; @@ -452,7 +568,8 @@ TEST(GeneratedMessageTest, MergeFromSelf) { "&from"); } -#endif // GTEST_HAS_DEATH_TEST +#endif // PROTOBUF_HAS_DEATH_TEST +#endif // !PROTOBUF_TEST_NO_DESCRIPTORS || !GOOGLE_PROTOBUF_NO_RTTI // Test the generated SerializeWithCachedSizesToArray(), TEST(GeneratedMessageTest, SerializationToArray) { @@ -645,6 +762,13 @@ TEST(GeneratedMessageTest, TestConflictingSymbolNames) { message.set_friend_(5); EXPECT_EQ(5, message.friend_()); + + // Instantiate extension template functions to test conflicting template + // parameter names. + typedef protobuf_unittest::TestConflictingSymbolNamesExtension ExtensionMessage; + message.AddExtension(ExtensionMessage::repeated_int32_ext, 123); + EXPECT_EQ(123, + message.GetExtension(ExtensionMessage::repeated_int32_ext, 0)); } #ifndef PROTOBUF_TEST_NO_DESCRIPTORS @@ -718,6 +842,7 @@ TEST(GeneratedMessageTest, TestSpaceUsed) { #endif // !PROTOBUF_TEST_NO_DESCRIPTORS + TEST(GeneratedMessageTest, FieldConstantValues) { unittest::TestRequired message; EXPECT_EQ(unittest::TestAllTypes_NestedMessage::kBbFieldNumber, 1); @@ -809,20 +934,19 @@ TEST(GeneratedEnumTest, MinAndMax) { EXPECT_EQ(12589235, unittest::TestSparseEnum_ARRAYSIZE); // Make sure we can take the address of _MIN, _MAX and _ARRAYSIZE. - void* nullptr = 0; // NULL may be integer-type, not pointer-type. - EXPECT_NE(nullptr, &unittest::TestAllTypes::NestedEnum_MIN); - EXPECT_NE(nullptr, &unittest::TestAllTypes::NestedEnum_MAX); - EXPECT_NE(nullptr, &unittest::TestAllTypes::NestedEnum_ARRAYSIZE); + void* null_pointer = 0; // NULL may be integer-type, not pointer-type. + EXPECT_NE(null_pointer, &unittest::TestAllTypes::NestedEnum_MIN); + EXPECT_NE(null_pointer, &unittest::TestAllTypes::NestedEnum_MAX); + EXPECT_NE(null_pointer, &unittest::TestAllTypes::NestedEnum_ARRAYSIZE); - EXPECT_NE(nullptr, &unittest::ForeignEnum_MIN); - EXPECT_NE(nullptr, &unittest::ForeignEnum_MAX); - EXPECT_NE(nullptr, &unittest::ForeignEnum_ARRAYSIZE); + EXPECT_NE(null_pointer, &unittest::ForeignEnum_MIN); + EXPECT_NE(null_pointer, &unittest::ForeignEnum_MAX); + EXPECT_NE(null_pointer, &unittest::ForeignEnum_ARRAYSIZE); - // Make sure we can use _MIN, _MAX and _ARRAYSIZE as switch cases. + // Make sure we can use _MIN and _MAX as switch cases. switch (unittest::SPARSE_A) { case unittest::TestSparseEnum_MIN: case unittest::TestSparseEnum_MAX: - case unittest::TestSparseEnum_ARRAYSIZE: break; default: break; @@ -1079,7 +1203,7 @@ TEST_F(GeneratedServiceTest, CallMethod) { TEST_F(GeneratedServiceTest, CallMethodTypeFailure) { // Verify death if we call Foo() with Bar's message types. -#ifdef GTEST_HAS_DEATH_TEST // death tests do not work on Windows yet +#ifdef PROTOBUF_HAS_DEATH_TEST // death tests do not work on Windows yet EXPECT_DEBUG_DEATH( mock_service_.CallMethod(foo_, &mock_controller_, &foo_request_, &bar_response_, done_.get()), @@ -1090,7 +1214,7 @@ TEST_F(GeneratedServiceTest, CallMethodTypeFailure) { mock_service_.CallMethod(foo_, &mock_controller_, &bar_request_, &foo_response_, done_.get()), "dynamic_cast"); -#endif // GTEST_HAS_DEATH_TEST +#endif // PROTOBUF_HAS_DEATH_TEST } TEST_F(GeneratedServiceTest, GetPrototypes) { diff --git a/cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/compiler/cpp/cpp_unittest.h b/cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/compiler/cpp/cpp_unittest.h new file mode 100644 index 000000000..a3a1d1baa --- /dev/null +++ b/cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/compiler/cpp/cpp_unittest.h @@ -0,0 +1,51 @@ +// Protocol Buffers - Google's data interchange format +// Copyright 2008 Google Inc. All rights reserved. +// http://code.google.com/p/protobuf/ +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +// This header declares the namespace google::protobuf::protobuf_unittest in order to expose +// any problems with the generated class names. We use this header to ensure +// unittest.cc will declare the namespace prior to other includes, while obeying +// normal include ordering. +// +// When generating a class name of "foo.Bar" we must ensure we prefix the class +// name with "::", in case the namespace google::protobuf::foo exists. We intentionally +// trigger that case here by declaring google::protobuf::protobuf_unittest. +// +// See ClassName in helpers.h for more details. + +#ifndef GOOGLE_PROTOBUF_COMPILER_CPP_UNITTEST_H__ +#define GOOGLE_PROTOBUF_COMPILER_CPP_UNITTEST_H__ + +namespace google { +namespace protobuf { +namespace protobuf_unittest {} +} // namespace protobuf + +} // namespace google +#endif // GOOGLE_PROTOBUF_COMPILER_CPP_UNITTEST_H__ diff --git a/cpp/thirdparty/protobuf-2.3.0/src/google/protobuf/compiler/importer.cc b/cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/compiler/importer.cc similarity index 98% rename from cpp/thirdparty/protobuf-2.3.0/src/google/protobuf/compiler/importer.cc rename to cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/compiler/importer.cc index 7689ce935..422f759f2 100644 --- a/cpp/thirdparty/protobuf-2.3.0/src/google/protobuf/compiler/importer.cc +++ b/cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/compiler/importer.cc @@ -231,7 +231,12 @@ static string CanonicalizePath(string path) { // The Win32 API accepts forward slashes as a path delimiter even though // backslashes are standard. Let's avoid confusion and use only forward // slashes. - path = StringReplace(path, "\\", "/", true); + if (HasPrefixString(path, "\\\\")) { + // Avoid converting two leading backslashes. + path = "\\\\" + StringReplace(path.substr(2), "\\", "/", true); + } else { + path = StringReplace(path, "\\", "/", true); + } #endif vector parts; diff --git a/cpp/thirdparty/protobuf-2.3.0/src/google/protobuf/compiler/importer.h b/cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/compiler/importer.h similarity index 98% rename from cpp/thirdparty/protobuf-2.3.0/src/google/protobuf/compiler/importer.h rename to cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/compiler/importer.h index 7a2efc297..7a62fa0e6 100644 --- a/cpp/thirdparty/protobuf-2.3.0/src/google/protobuf/compiler/importer.h +++ b/cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/compiler/importer.h @@ -280,8 +280,9 @@ class LIBPROTOBUF_EXPORT DiskSourceTree : public SourceTree { string virtual_path; string disk_path; - inline Mapping(const string& virtual_path, const string& disk_path) - : virtual_path(virtual_path), disk_path(disk_path) {} + inline Mapping(const string& virtual_path_param, + const string& disk_path_param) + : virtual_path(virtual_path_param), disk_path(disk_path_param) {} }; vector mappings_; diff --git a/cpp/thirdparty/protobuf-2.3.0/src/google/protobuf/compiler/importer_unittest.cc b/cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/compiler/importer_unittest.cc similarity index 100% rename from cpp/thirdparty/protobuf-2.3.0/src/google/protobuf/compiler/importer_unittest.cc rename to cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/compiler/importer_unittest.cc diff --git a/cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/compiler/java/java_doc_comment.cc b/cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/compiler/java/java_doc_comment.cc new file mode 100644 index 000000000..60b4f2ac6 --- /dev/null +++ b/cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/compiler/java/java_doc_comment.cc @@ -0,0 +1,236 @@ +// Protocol Buffers - Google's data interchange format +// Copyright 2008 Google Inc. All rights reserved. +// http://code.google.com/p/protobuf/ +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +// Author: kenton@google.com (Kenton Varda) +// Based on original Protocol Buffers design by +// Sanjay Ghemawat, Jeff Dean, and others. + +#include + +#include + +#include +#include + +namespace google { +namespace protobuf { +namespace compiler { +namespace java { + +string EscapeJavadoc(const string& input) { + string result; + result.reserve(input.size() * 2); + + char prev = '*'; + + for (string::size_type i = 0; i < input.size(); i++) { + char c = input[i]; + switch (c) { + case '*': + // Avoid "/*". + if (prev == '/') { + result.append("*"); + } else { + result.push_back(c); + } + break; + case '/': + // Avoid "*/". + if (prev == '*') { + result.append("/"); + } else { + result.push_back(c); + } + break; + case '@': + // "{@" starts Javadoc markup. + if (prev == '{') { + result.append("@"); + } else { + result.push_back(c); + } + break; + case '<': + // Avoid interpretation as HTML. + result.append("<"); + break; + case '>': + // Avoid interpretation as HTML. + result.append(">"); + break; + case '&': + // Avoid interpretation as HTML. + result.append("&"); + break; + case '\\': + // Java interprets Unicode escape sequences anywhere! + result.append("\"); + break; + default: + result.push_back(c); + break; + } + + prev = c; + } + + return result; +} + +static void WriteDocCommentBodyForLocation( + io::Printer* printer, const SourceLocation& location) { + string comments = location.leading_comments.empty() ? + location.trailing_comments : location.leading_comments; + if (!comments.empty()) { + // TODO(kenton): Ideally we should parse the comment text as Markdown and + // write it back as HTML, but this requires a Markdown parser. For now + // we just use

 to get fixed-width text formatting.
+
+    // If the comment itself contains block comment start or end markers,
+    // HTML-escape them so that they don't accidentally close the doc comment.
+    comments = EscapeJavadoc(comments);
+
+    vector lines;
+    SplitStringAllowEmpty(comments, "\n", &lines);
+    while (!lines.empty() && lines.back().empty()) {
+      lines.pop_back();
+    }
+
+    printer->Print(
+        " *\n"
+        " * 
\n");
+    for (int i = 0; i < lines.size(); i++) {
+      // Most lines should start with a space.  Watch out for lines that start
+      // with a /, since putting that right after the leading asterisk will
+      // close the comment.
+      if (!lines[i].empty() && lines[i][0] == '/') {
+        printer->Print(" * $line$\n", "line", lines[i]);
+      } else {
+        printer->Print(" *$line$\n", "line", lines[i]);
+      }
+    }
+    printer->Print(" * 
\n"); + } +} + +template +static void WriteDocCommentBody( + io::Printer* printer, const DescriptorType* descriptor) { + SourceLocation location; + if (descriptor->GetSourceLocation(&location)) { + WriteDocCommentBodyForLocation(printer, location); + } +} + +static string FirstLineOf(const string& value) { + string result = value; + + string::size_type pos = result.find_first_of('\n'); + if (pos != string::npos) { + result.erase(pos); + } + + // If line ends in an opening brace, make it "{ ... }" so it looks nice. + if (!result.empty() && result[result.size() - 1] == '{') { + result.append(" ... }"); + } + + return result; +} + +void WriteMessageDocComment(io::Printer* printer, const Descriptor* message) { + printer->Print( + "/**\n" + " * Protobuf type {@code $fullname$}\n", + "fullname", EscapeJavadoc(message->full_name())); + WriteDocCommentBody(printer, message); + printer->Print(" */\n"); +} + +void WriteFieldDocComment(io::Printer* printer, const FieldDescriptor* field) { + // In theory we should have slightly different comments for setters, getters, + // etc., but in practice everyone already knows the difference between these + // so it's redundant information. + + // We use the field declaration as the first line of the comment, e.g.: + // optional string foo = 5; + // This communicates a lot of information about the field in a small space. + // If the field is a group, the debug string might end with {. + printer->Print( + "/**\n" + " * $def$\n", + "def", EscapeJavadoc(FirstLineOf(field->DebugString()))); + WriteDocCommentBody(printer, field); + printer->Print(" */\n"); +} + +void WriteEnumDocComment(io::Printer* printer, const EnumDescriptor* enum_) { + printer->Print( + "/**\n" + " * Protobuf enum {@code $fullname$}\n", + "fullname", EscapeJavadoc(enum_->full_name())); + WriteDocCommentBody(printer, enum_); + printer->Print(" */\n"); +} + +void WriteEnumValueDocComment(io::Printer* printer, + const EnumValueDescriptor* value) { + printer->Print( + "/**\n" + " * $def$\n", + "def", EscapeJavadoc(FirstLineOf(value->DebugString()))); + WriteDocCommentBody(printer, value); + printer->Print(" */\n"); +} + +void WriteServiceDocComment(io::Printer* printer, + const ServiceDescriptor* service) { + printer->Print( + "/**\n" + " * Protobuf service {@code $fullname$}\n", + "fullname", EscapeJavadoc(service->full_name())); + WriteDocCommentBody(printer, service); + printer->Print(" */\n"); +} + +void WriteMethodDocComment(io::Printer* printer, + const MethodDescriptor* method) { + printer->Print( + "/**\n" + " * $def$\n", + "def", EscapeJavadoc(FirstLineOf(method->DebugString()))); + WriteDocCommentBody(printer, method); + printer->Print(" */\n"); +} + +} // namespace java +} // namespace compiler +} // namespace protobuf +} // namespace google diff --git a/cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/compiler/java/java_doc_comment.h b/cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/compiler/java/java_doc_comment.h new file mode 100644 index 000000000..7244d9bac --- /dev/null +++ b/cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/compiler/java/java_doc_comment.h @@ -0,0 +1,69 @@ +// Protocol Buffers - Google's data interchange format +// Copyright 2008 Google Inc. All rights reserved. +// http://code.google.com/p/protobuf/ +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +// Author: kenton@google.com (Kenton Varda) +// Based on original Protocol Buffers design by +// Sanjay Ghemawat, Jeff Dean, and others. + +#ifndef GOOGLE_PROTOBUF_COMPILER_JAVA_DOC_COMMENT_H__ +#define GOOGLE_PROTOBUF_COMPILER_JAVA_DOC_COMMENT_H__ + +#include + +namespace google { +namespace protobuf { + namespace io { + class Printer; // printer.h + } +} + +namespace protobuf { +namespace compiler { +namespace java { + +void WriteMessageDocComment(io::Printer* printer, const Descriptor* message); +void WriteFieldDocComment(io::Printer* printer, const FieldDescriptor* field); +void WriteEnumDocComment(io::Printer* printer, const EnumDescriptor* enum_); +void WriteEnumValueDocComment(io::Printer* printer, + const EnumValueDescriptor* value); +void WriteServiceDocComment(io::Printer* printer, + const ServiceDescriptor* service); +void WriteMethodDocComment(io::Printer* printer, + const MethodDescriptor* method); + +// Exposed for testing only. +LIBPROTOC_EXPORT string EscapeJavadoc(const string& input); + +} // namespace java +} // namespace compiler +} // namespace protobuf + +} // namespace google +#endif // GOOGLE_PROTOBUF_COMPILER_JAVA_DOC_COMMENT_H__ diff --git a/cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/compiler/java/java_doc_comment_unittest.cc b/cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/compiler/java/java_doc_comment_unittest.cc new file mode 100644 index 000000000..28b6d8b49 --- /dev/null +++ b/cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/compiler/java/java_doc_comment_unittest.cc @@ -0,0 +1,66 @@ +// Protocol Buffers - Google's data interchange format +// Copyright 2008 Google Inc. All rights reserved. +// http://code.google.com/p/protobuf/ +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +// Author: kenton@google.com (Kenton Varda) + +#include + +#include + +namespace google { +namespace protobuf { +namespace compiler { +namespace java { +namespace { + +TEST(JavaDocCommentTest, Escaping) { + EXPECT_EQ("foo /* bar */ baz", EscapeJavadoc("foo /* bar */ baz")); + EXPECT_EQ("foo /*/ baz", EscapeJavadoc("foo /*/ baz")); + EXPECT_EQ("{@foo}", EscapeJavadoc("{@foo}")); + EXPECT_EQ("<i>&</i>", EscapeJavadoc("&")); + EXPECT_EQ("foo\u1234bar", EscapeJavadoc("foo\\u1234bar")); +} + +// TODO(kenton): It's hard to write a robust test of the doc comments -- we +// can only really compare the output against a golden value, which is a +// fairly tedious and fragile testing strategy. If we want to go that route, +// it probably makes sense to bite the bullet and write a test that compares +// the whole generated output for unittest.proto against a golden value, with +// a very simple script that can be run to regenerate it with the latest code. +// This would mean that updates to the golden file would have to be included +// in any change to the code generator, which would actually be fairly useful +// as it allows the reviewer to see clearly how the generated code is +// changing. + +} // namespace +} // namespace java +} // namespace compiler +} // namespace protobuf +} // namespace google diff --git a/cpp/thirdparty/protobuf-2.3.0/src/google/protobuf/compiler/java/java_enum.cc b/cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/compiler/java/java_enum.cc similarity index 79% rename from cpp/thirdparty/protobuf-2.3.0/src/google/protobuf/compiler/java/java_enum.cc rename to cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/compiler/java/java_enum.cc index 85e39f531..cfed815f8 100644 --- a/cpp/thirdparty/protobuf-2.3.0/src/google/protobuf/compiler/java/java_enum.cc +++ b/cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/compiler/java/java_enum.cc @@ -36,6 +36,7 @@ #include #include +#include #include #include #include @@ -67,6 +68,7 @@ EnumGenerator::EnumGenerator(const EnumDescriptor* descriptor) EnumGenerator::~EnumGenerator() {} void EnumGenerator::Generate(io::Printer* printer) { + WriteEnumDocComment(printer, descriptor_); if (HasDescriptorMethods(descriptor_)) { printer->Print( "public enum $classname$\n" @@ -85,6 +87,7 @@ void EnumGenerator::Generate(io::Printer* printer) { vars["name"] = canonical_values_[i]->name(); vars["index"] = SimpleItoa(canonical_values_[i]->index()); vars["number"] = SimpleItoa(canonical_values_[i]->number()); + WriteEnumValueDocComment(printer, canonical_values_[i]); printer->Print(vars, "$name$($index$, $number$),\n"); } @@ -100,10 +103,21 @@ void EnumGenerator::Generate(io::Printer* printer) { vars["classname"] = descriptor_->name(); vars["name"] = aliases_[i].value->name(); vars["canonical_name"] = aliases_[i].canonical_value->name(); + WriteEnumValueDocComment(printer, aliases_[i].value); printer->Print(vars, "public static final $classname$ $name$ = $canonical_name$;\n"); } + for (int i = 0; i < descriptor_->value_count(); i++) { + map vars; + vars["name"] = descriptor_->value(i)->name(); + vars["number"] = SimpleItoa(descriptor_->value(i)->number()); + WriteEnumValueDocComment(printer, descriptor_->value(i)); + printer->Print(vars, + "public static final int $name$_VALUE = $number$;\n"); + } + printer->Print("\n"); + // ----------------------------------------------------------------- printer->Print( @@ -138,7 +152,7 @@ void EnumGenerator::Generate(io::Printer* printer) { " internalValueMap =\n" " new com.google.protobuf.Internal.EnumLiteMap<$classname$>() {\n" " public $classname$ findValueByNumber(int number) {\n" - " return $classname$.valueOf(number)\n;" + " return $classname$.valueOf(number);\n" " }\n" " };\n" "\n", @@ -178,18 +192,30 @@ void EnumGenerator::Generate(io::Printer* printer) { printer->Print( "}\n" "\n" - "private static final $classname$[] VALUES = {\n" - " ", + "private static final $classname$[] VALUES = ", "classname", descriptor_->name()); - for (int i = 0; i < descriptor_->value_count(); i++) { - printer->Print("$name$, ", - "name", descriptor_->value(i)->name()); + if (CanUseEnumValues()) { + // If the constants we are going to output are exactly the ones we + // have declared in the Java enum in the same order, then we can use + // the values() method that the Java compiler automatically generates + // for every enum. + printer->Print("values();\n"); + } else { + printer->Print( + "{\n" + " "); + for (int i = 0; i < descriptor_->value_count(); i++) { + printer->Print("$name$, ", + "name", descriptor_->value(i)->name()); + } + printer->Print( + "\n" + "};\n"); } printer->Print( "\n" - "};\n" "public static $classname$ valueOf(\n" " com.google.protobuf.Descriptors.EnumValueDescriptor desc) {\n" " if (desc.getType() != getDescriptor()) {\n" @@ -197,31 +223,26 @@ void EnumGenerator::Generate(io::Printer* printer) { " \"EnumValueDescriptor is not for this type.\");\n" " }\n" " return VALUES[desc.getIndex()];\n" - "}\n", + "}\n" + "\n", "classname", descriptor_->name()); + + // index is only used for reflection; lite implementation does not need it + printer->Print("private final int index;\n"); } // ----------------------------------------------------------------- printer->Print( - "private final int index;\n" - "private final int value;\n" - "private $classname$(int index, int value) {\n" - " this.index = index;\n" - " this.value = value;\n" - "}\n", + "private final int value;\n\n" + "private $classname$(int index, int value) {\n", "classname", descriptor_->name()); - if (HasDescriptorMethods(descriptor_)) { - // Force the static initialization code for the file to run, since it may - // initialize static variables declared in this class. - printer->Print( - "\n" - "static {\n" - " $file$.getDescriptor();\n" - "}\n", - "file", ClassName(descriptor_->file())); + printer->Print(" this.index = index;\n"); } + printer->Print( + " this.value = value;\n" + "}\n"); printer->Print( "\n" @@ -232,6 +253,18 @@ void EnumGenerator::Generate(io::Printer* printer) { printer->Print("}\n\n"); } +bool EnumGenerator::CanUseEnumValues() { + if (canonical_values_.size() != descriptor_->value_count()) { + return false; + } + for (int i = 0; i < descriptor_->value_count(); i++) { + if (descriptor_->value(i)->name() != canonical_values_[i]->name()) { + return false; + } + } + return true; +} + } // namespace java } // namespace compiler } // namespace protobuf diff --git a/cpp/thirdparty/protobuf-2.3.0/src/google/protobuf/compiler/java/java_enum.h b/cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/compiler/java/java_enum.h similarity index 99% rename from cpp/thirdparty/protobuf-2.3.0/src/google/protobuf/compiler/java/java_enum.h rename to cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/compiler/java/java_enum.h index 05ece1f13..9a9e5742a 100644 --- a/cpp/thirdparty/protobuf-2.3.0/src/google/protobuf/compiler/java/java_enum.h +++ b/cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/compiler/java/java_enum.h @@ -73,6 +73,8 @@ class EnumGenerator { }; vector aliases_; + bool CanUseEnumValues(); + GOOGLE_DISALLOW_EVIL_CONSTRUCTORS(EnumGenerator); }; diff --git a/cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/compiler/java/java_enum_field.cc b/cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/compiler/java/java_enum_field.cc new file mode 100644 index 000000000..ec0b067ee --- /dev/null +++ b/cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/compiler/java/java_enum_field.cc @@ -0,0 +1,603 @@ +// Protocol Buffers - Google's data interchange format +// Copyright 2008 Google Inc. All rights reserved. +// http://code.google.com/p/protobuf/ +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +// Author: kenton@google.com (Kenton Varda) +// Based on original Protocol Buffers design by +// Sanjay Ghemawat, Jeff Dean, and others. + +#include +#include + +#include +#include +#include +#include +#include +#include +#include + +namespace google { +namespace protobuf { +namespace compiler { +namespace java { + +namespace { + +// TODO(kenton): Factor out a "SetCommonFieldVariables()" to get rid of +// repeat code between this and the other field types. +void SetEnumVariables(const FieldDescriptor* descriptor, + int messageBitIndex, + int builderBitIndex, + map* variables) { + (*variables)["name"] = + UnderscoresToCamelCase(descriptor); + (*variables)["capitalized_name"] = + UnderscoresToCapitalizedCamelCase(descriptor); + (*variables)["constant_name"] = FieldConstantName(descriptor); + (*variables)["number"] = SimpleItoa(descriptor->number()); + (*variables)["type"] = ClassName(descriptor->enum_type()); + (*variables)["default"] = DefaultValue(descriptor); + (*variables)["tag"] = SimpleItoa(internal::WireFormat::MakeTag(descriptor)); + (*variables)["tag_size"] = SimpleItoa( + internal::WireFormat::TagSize(descriptor->number(), GetType(descriptor))); + // TODO(birdo): Add @deprecated javadoc when generating javadoc is supported + // by the proto compiler + (*variables)["deprecation"] = descriptor->options().deprecated() + ? "@java.lang.Deprecated " : ""; + (*variables)["on_changed"] = + HasDescriptorMethods(descriptor->containing_type()) ? "onChanged();" : ""; + + // For singular messages and builders, one bit is used for the hasField bit. + (*variables)["get_has_field_bit_message"] = GenerateGetBit(messageBitIndex); + (*variables)["set_has_field_bit_message"] = GenerateSetBit(messageBitIndex); + + (*variables)["get_has_field_bit_builder"] = GenerateGetBit(builderBitIndex); + (*variables)["set_has_field_bit_builder"] = GenerateSetBit(builderBitIndex); + (*variables)["clear_has_field_bit_builder"] = + GenerateClearBit(builderBitIndex); + + // For repated builders, one bit is used for whether the array is immutable. + (*variables)["get_mutable_bit_builder"] = GenerateGetBit(builderBitIndex); + (*variables)["set_mutable_bit_builder"] = GenerateSetBit(builderBitIndex); + (*variables)["clear_mutable_bit_builder"] = GenerateClearBit(builderBitIndex); + + // For repeated fields, one bit is used for whether the array is immutable + // in the parsing constructor. + (*variables)["get_mutable_bit_parser"] = + GenerateGetBitMutableLocal(builderBitIndex); + (*variables)["set_mutable_bit_parser"] = + GenerateSetBitMutableLocal(builderBitIndex); + + (*variables)["get_has_field_bit_from_local"] = + GenerateGetBitFromLocal(builderBitIndex); + (*variables)["set_has_field_bit_to_local"] = + GenerateSetBitToLocal(messageBitIndex); +} + +} // namespace + +// =================================================================== + +EnumFieldGenerator:: +EnumFieldGenerator(const FieldDescriptor* descriptor, + int messageBitIndex, + int builderBitIndex) + : descriptor_(descriptor), messageBitIndex_(messageBitIndex), + builderBitIndex_(builderBitIndex) { + SetEnumVariables(descriptor, messageBitIndex, builderBitIndex, &variables_); +} + +EnumFieldGenerator::~EnumFieldGenerator() {} + +int EnumFieldGenerator::GetNumBitsForMessage() const { + return 1; +} + +int EnumFieldGenerator::GetNumBitsForBuilder() const { + return 1; +} + +void EnumFieldGenerator:: +GenerateInterfaceMembers(io::Printer* printer) const { + WriteFieldDocComment(printer, descriptor_); + printer->Print(variables_, + "$deprecation$boolean has$capitalized_name$();\n"); + WriteFieldDocComment(printer, descriptor_); + printer->Print(variables_, + "$deprecation$$type$ get$capitalized_name$();\n"); +} + +void EnumFieldGenerator:: +GenerateMembers(io::Printer* printer) const { + printer->Print(variables_, + "private $type$ $name$_;\n"); + WriteFieldDocComment(printer, descriptor_); + printer->Print(variables_, + "$deprecation$public boolean has$capitalized_name$() {\n" + " return $get_has_field_bit_message$;\n" + "}\n"); + WriteFieldDocComment(printer, descriptor_); + printer->Print(variables_, + "$deprecation$public $type$ get$capitalized_name$() {\n" + " return $name$_;\n" + "}\n"); +} + +void EnumFieldGenerator:: +GenerateBuilderMembers(io::Printer* printer) const { + printer->Print(variables_, + "private $type$ $name$_ = $default$;\n"); + WriteFieldDocComment(printer, descriptor_); + printer->Print(variables_, + "$deprecation$public boolean has$capitalized_name$() {\n" + " return $get_has_field_bit_builder$;\n" + "}\n"); + WriteFieldDocComment(printer, descriptor_); + printer->Print(variables_, + "$deprecation$public $type$ get$capitalized_name$() {\n" + " return $name$_;\n" + "}\n"); + WriteFieldDocComment(printer, descriptor_); + printer->Print(variables_, + "$deprecation$public Builder set$capitalized_name$($type$ value) {\n" + " if (value == null) {\n" + " throw new NullPointerException();\n" + " }\n" + " $set_has_field_bit_builder$;\n" + " $name$_ = value;\n" + " $on_changed$\n" + " return this;\n" + "}\n"); + WriteFieldDocComment(printer, descriptor_); + printer->Print(variables_, + "$deprecation$public Builder clear$capitalized_name$() {\n" + " $clear_has_field_bit_builder$;\n" + " $name$_ = $default$;\n" + " $on_changed$\n" + " return this;\n" + "}\n"); +} + +void EnumFieldGenerator:: +GenerateFieldBuilderInitializationCode(io::Printer* printer) const { + // noop for enums +} + +void EnumFieldGenerator:: +GenerateInitializationCode(io::Printer* printer) const { + printer->Print(variables_, "$name$_ = $default$;\n"); +} + +void EnumFieldGenerator:: +GenerateBuilderClearCode(io::Printer* printer) const { + printer->Print(variables_, + "$name$_ = $default$;\n" + "$clear_has_field_bit_builder$;\n"); +} + +void EnumFieldGenerator:: +GenerateMergingCode(io::Printer* printer) const { + printer->Print(variables_, + "if (other.has$capitalized_name$()) {\n" + " set$capitalized_name$(other.get$capitalized_name$());\n" + "}\n"); +} + +void EnumFieldGenerator:: +GenerateBuildingCode(io::Printer* printer) const { + printer->Print(variables_, + "if ($get_has_field_bit_from_local$) {\n" + " $set_has_field_bit_to_local$;\n" + "}\n" + "result.$name$_ = $name$_;\n"); +} + +void EnumFieldGenerator:: +GenerateParsingCode(io::Printer* printer) const { + printer->Print(variables_, + "int rawValue = input.readEnum();\n" + "$type$ value = $type$.valueOf(rawValue);\n"); + if (HasUnknownFields(descriptor_->containing_type())) { + printer->Print(variables_, + "if (value == null) {\n" + " unknownFields.mergeVarintField($number$, rawValue);\n" + "} else {\n"); + } else { + printer->Print(variables_, + "if (value != null) {\n"); + } + printer->Print(variables_, + " $set_has_field_bit_message$;\n" + " $name$_ = value;\n" + "}\n"); +} + +void EnumFieldGenerator:: +GenerateParsingDoneCode(io::Printer* printer) const { + // noop for enums +} + +void EnumFieldGenerator:: +GenerateSerializationCode(io::Printer* printer) const { + printer->Print(variables_, + "if ($get_has_field_bit_message$) {\n" + " output.writeEnum($number$, $name$_.getNumber());\n" + "}\n"); +} + +void EnumFieldGenerator:: +GenerateSerializedSizeCode(io::Printer* printer) const { + printer->Print(variables_, + "if ($get_has_field_bit_message$) {\n" + " size += com.google.protobuf.CodedOutputStream\n" + " .computeEnumSize($number$, $name$_.getNumber());\n" + "}\n"); +} + +void EnumFieldGenerator:: +GenerateEqualsCode(io::Printer* printer) const { + printer->Print(variables_, + "result = result &&\n" + " (get$capitalized_name$() == other.get$capitalized_name$());\n"); +} + +void EnumFieldGenerator:: +GenerateHashCode(io::Printer* printer) const { + printer->Print(variables_, + "hash = (37 * hash) + $constant_name$;\n" + "hash = (53 * hash) + hashEnum(get$capitalized_name$());\n"); +} + +string EnumFieldGenerator::GetBoxedType() const { + return ClassName(descriptor_->enum_type()); +} + +// =================================================================== + +RepeatedEnumFieldGenerator:: +RepeatedEnumFieldGenerator(const FieldDescriptor* descriptor, + int messageBitIndex, + int builderBitIndex) + : descriptor_(descriptor), messageBitIndex_(messageBitIndex), + builderBitIndex_(builderBitIndex) { + SetEnumVariables(descriptor, messageBitIndex, builderBitIndex, &variables_); +} + +RepeatedEnumFieldGenerator::~RepeatedEnumFieldGenerator() {} + +int RepeatedEnumFieldGenerator::GetNumBitsForMessage() const { + return 0; +} + +int RepeatedEnumFieldGenerator::GetNumBitsForBuilder() const { + return 1; +} + +void RepeatedEnumFieldGenerator:: +GenerateInterfaceMembers(io::Printer* printer) const { + WriteFieldDocComment(printer, descriptor_); + printer->Print(variables_, + "$deprecation$java.util.List<$type$> get$capitalized_name$List();\n"); + WriteFieldDocComment(printer, descriptor_); + printer->Print(variables_, + "$deprecation$int get$capitalized_name$Count();\n"); + WriteFieldDocComment(printer, descriptor_); + printer->Print(variables_, + "$deprecation$$type$ get$capitalized_name$(int index);\n"); +} + +void RepeatedEnumFieldGenerator:: +GenerateMembers(io::Printer* printer) const { + printer->Print(variables_, + "private java.util.List<$type$> $name$_;\n"); + WriteFieldDocComment(printer, descriptor_); + printer->Print(variables_, + "$deprecation$public java.util.List<$type$> get$capitalized_name$List() {\n" + " return $name$_;\n" // note: unmodifiable list + "}\n"); + WriteFieldDocComment(printer, descriptor_); + printer->Print(variables_, + "$deprecation$public int get$capitalized_name$Count() {\n" + " return $name$_.size();\n" + "}\n"); + WriteFieldDocComment(printer, descriptor_); + printer->Print(variables_, + "$deprecation$public $type$ get$capitalized_name$(int index) {\n" + " return $name$_.get(index);\n" + "}\n"); + + if (descriptor_->options().packed() && + HasGeneratedMethods(descriptor_->containing_type())) { + printer->Print(variables_, + "private int $name$MemoizedSerializedSize;\n"); + } +} + +void RepeatedEnumFieldGenerator:: +GenerateBuilderMembers(io::Printer* printer) const { + printer->Print(variables_, + // One field is the list and the other field keeps track of whether the + // list is immutable. If it's immutable, the invariant is that it must + // either an instance of Collections.emptyList() or it's an ArrayList + // wrapped in a Collections.unmodifiableList() wrapper and nobody else has + // a refererence to the underlying ArrayList. This invariant allows us to + // share instances of lists between protocol buffers avoiding expensive + // memory allocations. Note, immutable is a strong guarantee here -- not + // just that the list cannot be modified via the reference but that the + // list can never be modified. + "private java.util.List<$type$> $name$_ =\n" + " java.util.Collections.emptyList();\n" + + "private void ensure$capitalized_name$IsMutable() {\n" + " if (!$get_mutable_bit_builder$) {\n" + " $name$_ = new java.util.ArrayList<$type$>($name$_);\n" + " $set_mutable_bit_builder$;\n" + " }\n" + "}\n"); + + WriteFieldDocComment(printer, descriptor_); + printer->Print(variables_, + // Note: We return an unmodifiable list because otherwise the caller + // could hold on to the returned list and modify it after the message + // has been built, thus mutating the message which is supposed to be + // immutable. + "$deprecation$public java.util.List<$type$> get$capitalized_name$List() {\n" + " return java.util.Collections.unmodifiableList($name$_);\n" + "}\n"); + WriteFieldDocComment(printer, descriptor_); + printer->Print(variables_, + "$deprecation$public int get$capitalized_name$Count() {\n" + " return $name$_.size();\n" + "}\n"); + WriteFieldDocComment(printer, descriptor_); + printer->Print(variables_, + "$deprecation$public $type$ get$capitalized_name$(int index) {\n" + " return $name$_.get(index);\n" + "}\n"); + WriteFieldDocComment(printer, descriptor_); + printer->Print(variables_, + "$deprecation$public Builder set$capitalized_name$(\n" + " int index, $type$ value) {\n" + " if (value == null) {\n" + " throw new NullPointerException();\n" + " }\n" + " ensure$capitalized_name$IsMutable();\n" + " $name$_.set(index, value);\n" + " $on_changed$\n" + " return this;\n" + "}\n"); + WriteFieldDocComment(printer, descriptor_); + printer->Print(variables_, + "$deprecation$public Builder add$capitalized_name$($type$ value) {\n" + " if (value == null) {\n" + " throw new NullPointerException();\n" + " }\n" + " ensure$capitalized_name$IsMutable();\n" + " $name$_.add(value);\n" + " $on_changed$\n" + " return this;\n" + "}\n"); + WriteFieldDocComment(printer, descriptor_); + printer->Print(variables_, + "$deprecation$public Builder addAll$capitalized_name$(\n" + " java.lang.Iterable values) {\n" + " ensure$capitalized_name$IsMutable();\n" + " super.addAll(values, $name$_);\n" + " $on_changed$\n" + " return this;\n" + "}\n"); + WriteFieldDocComment(printer, descriptor_); + printer->Print(variables_, + "$deprecation$public Builder clear$capitalized_name$() {\n" + " $name$_ = java.util.Collections.emptyList();\n" + " $clear_mutable_bit_builder$;\n" + " $on_changed$\n" + " return this;\n" + "}\n"); +} + +void RepeatedEnumFieldGenerator:: +GenerateFieldBuilderInitializationCode(io::Printer* printer) const { + // noop for enums +} + +void RepeatedEnumFieldGenerator:: +GenerateInitializationCode(io::Printer* printer) const { + printer->Print(variables_, "$name$_ = java.util.Collections.emptyList();\n"); +} + +void RepeatedEnumFieldGenerator:: +GenerateBuilderClearCode(io::Printer* printer) const { + printer->Print(variables_, + "$name$_ = java.util.Collections.emptyList();\n" + "$clear_mutable_bit_builder$;\n"); +} + +void RepeatedEnumFieldGenerator:: +GenerateMergingCode(io::Printer* printer) const { + // The code below does two optimizations: + // 1. If the other list is empty, there's nothing to do. This ensures we + // don't allocate a new array if we already have an immutable one. + // 2. If the other list is non-empty and our current list is empty, we can + // reuse the other list which is guaranteed to be immutable. + printer->Print(variables_, + "if (!other.$name$_.isEmpty()) {\n" + " if ($name$_.isEmpty()) {\n" + " $name$_ = other.$name$_;\n" + " $clear_mutable_bit_builder$;\n" + " } else {\n" + " ensure$capitalized_name$IsMutable();\n" + " $name$_.addAll(other.$name$_);\n" + " }\n" + " $on_changed$\n" + "}\n"); +} + +void RepeatedEnumFieldGenerator:: +GenerateBuildingCode(io::Printer* printer) const { + // The code below ensures that the result has an immutable list. If our + // list is immutable, we can just reuse it. If not, we make it immutable. + printer->Print(variables_, + "if ($get_mutable_bit_builder$) {\n" + " $name$_ = java.util.Collections.unmodifiableList($name$_);\n" + " $clear_mutable_bit_builder$;\n" + "}\n" + "result.$name$_ = $name$_;\n"); +} + +void RepeatedEnumFieldGenerator:: +GenerateParsingCode(io::Printer* printer) const { + // Read and store the enum + printer->Print(variables_, + "int rawValue = input.readEnum();\n" + "$type$ value = $type$.valueOf(rawValue);\n"); + if (HasUnknownFields(descriptor_->containing_type())) { + printer->Print(variables_, + "if (value == null) {\n" + " unknownFields.mergeVarintField($number$, rawValue);\n" + "} else {\n"); + } else { + printer->Print(variables_, + "if (value != null) {\n"); + } + printer->Print(variables_, + " if (!$get_mutable_bit_parser$) {\n" + " $name$_ = new java.util.ArrayList<$type$>();\n" + " $set_mutable_bit_parser$;\n" + " }\n" + " $name$_.add(value);\n" + "}\n"); +} + +void RepeatedEnumFieldGenerator:: +GenerateParsingCodeFromPacked(io::Printer* printer) const { + // Wrap GenerateParsingCode's contents with a while loop. + + printer->Print(variables_, + "int length = input.readRawVarint32();\n" + "int oldLimit = input.pushLimit(length);\n" + "while(input.getBytesUntilLimit() > 0) {\n"); + printer->Indent(); + + GenerateParsingCode(printer); + + printer->Outdent(); + printer->Print(variables_, + "}\n" + "input.popLimit(oldLimit);\n"); +} + +void RepeatedEnumFieldGenerator:: +GenerateParsingDoneCode(io::Printer* printer) const { + printer->Print(variables_, + "if ($get_mutable_bit_parser$) {\n" + " $name$_ = java.util.Collections.unmodifiableList($name$_);\n" + "}\n"); +} + +void RepeatedEnumFieldGenerator:: +GenerateSerializationCode(io::Printer* printer) const { + if (descriptor_->options().packed()) { + printer->Print(variables_, + "if (get$capitalized_name$List().size() > 0) {\n" + " output.writeRawVarint32($tag$);\n" + " output.writeRawVarint32($name$MemoizedSerializedSize);\n" + "}\n" + "for (int i = 0; i < $name$_.size(); i++) {\n" + " output.writeEnumNoTag($name$_.get(i).getNumber());\n" + "}\n"); + } else { + printer->Print(variables_, + "for (int i = 0; i < $name$_.size(); i++) {\n" + " output.writeEnum($number$, $name$_.get(i).getNumber());\n" + "}\n"); + } +} + +void RepeatedEnumFieldGenerator:: +GenerateSerializedSizeCode(io::Printer* printer) const { + printer->Print(variables_, + "{\n" + " int dataSize = 0;\n"); + printer->Indent(); + + printer->Print(variables_, + "for (int i = 0; i < $name$_.size(); i++) {\n" + " dataSize += com.google.protobuf.CodedOutputStream\n" + " .computeEnumSizeNoTag($name$_.get(i).getNumber());\n" + "}\n"); + printer->Print( + "size += dataSize;\n"); + if (descriptor_->options().packed()) { + printer->Print(variables_, + "if (!get$capitalized_name$List().isEmpty()) {" + " size += $tag_size$;\n" + " size += com.google.protobuf.CodedOutputStream\n" + " .computeRawVarint32Size(dataSize);\n" + "}"); + } else { + printer->Print(variables_, + "size += $tag_size$ * $name$_.size();\n"); + } + + // cache the data size for packed fields. + if (descriptor_->options().packed()) { + printer->Print(variables_, + "$name$MemoizedSerializedSize = dataSize;\n"); + } + + printer->Outdent(); + printer->Print("}\n"); +} + +void RepeatedEnumFieldGenerator:: +GenerateEqualsCode(io::Printer* printer) const { + printer->Print(variables_, + "result = result && get$capitalized_name$List()\n" + " .equals(other.get$capitalized_name$List());\n"); +} + +void RepeatedEnumFieldGenerator:: +GenerateHashCode(io::Printer* printer) const { + printer->Print(variables_, + "if (get$capitalized_name$Count() > 0) {\n" + " hash = (37 * hash) + $constant_name$;\n" + " hash = (53 * hash) + hashEnumList(get$capitalized_name$List());\n" + "}\n"); +} + +string RepeatedEnumFieldGenerator::GetBoxedType() const { + return ClassName(descriptor_->enum_type()); +} + +} // namespace java +} // namespace compiler +} // namespace protobuf +} // namespace google diff --git a/cpp/thirdparty/protobuf-2.3.0/src/google/protobuf/compiler/java/java_enum_field.h b/cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/compiler/java/java_enum_field.h similarity index 77% rename from cpp/thirdparty/protobuf-2.3.0/src/google/protobuf/compiler/java/java_enum_field.h rename to cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/compiler/java/java_enum_field.h index c54a0fafa..90fae6394 100644 --- a/cpp/thirdparty/protobuf-2.3.0/src/google/protobuf/compiler/java/java_enum_field.h +++ b/cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/compiler/java/java_enum_field.h @@ -46,49 +46,71 @@ namespace java { class EnumFieldGenerator : public FieldGenerator { public: - explicit EnumFieldGenerator(const FieldDescriptor* descriptor); + explicit EnumFieldGenerator(const FieldDescriptor* descriptor, + int messageBitIndex, int builderBitIndex); ~EnumFieldGenerator(); // implements FieldGenerator --------------------------------------- + int GetNumBitsForMessage() const; + int GetNumBitsForBuilder() const; + void GenerateInterfaceMembers(io::Printer* printer) const; void GenerateMembers(io::Printer* printer) const; void GenerateBuilderMembers(io::Printer* printer) const; void GenerateInitializationCode(io::Printer* printer) const; + void GenerateBuilderClearCode(io::Printer* printer) const; void GenerateMergingCode(io::Printer* printer) const; void GenerateBuildingCode(io::Printer* printer) const; void GenerateParsingCode(io::Printer* printer) const; + void GenerateParsingDoneCode(io::Printer* printer) const; void GenerateSerializationCode(io::Printer* printer) const; void GenerateSerializedSizeCode(io::Printer* printer) const; + void GenerateFieldBuilderInitializationCode(io::Printer* printer) const; + void GenerateEqualsCode(io::Printer* printer) const; + void GenerateHashCode(io::Printer* printer) const; string GetBoxedType() const; private: const FieldDescriptor* descriptor_; map variables_; + const int messageBitIndex_; + const int builderBitIndex_; GOOGLE_DISALLOW_EVIL_CONSTRUCTORS(EnumFieldGenerator); }; class RepeatedEnumFieldGenerator : public FieldGenerator { public: - explicit RepeatedEnumFieldGenerator(const FieldDescriptor* descriptor); + explicit RepeatedEnumFieldGenerator(const FieldDescriptor* descriptor, + int messageBitIndex, int builderBitIndex); ~RepeatedEnumFieldGenerator(); // implements FieldGenerator --------------------------------------- + int GetNumBitsForMessage() const; + int GetNumBitsForBuilder() const; + void GenerateInterfaceMembers(io::Printer* printer) const; void GenerateMembers(io::Printer* printer) const; void GenerateBuilderMembers(io::Printer* printer) const; void GenerateInitializationCode(io::Printer* printer) const; + void GenerateBuilderClearCode(io::Printer* printer) const; void GenerateMergingCode(io::Printer* printer) const; void GenerateBuildingCode(io::Printer* printer) const; void GenerateParsingCode(io::Printer* printer) const; void GenerateParsingCodeFromPacked(io::Printer* printer) const; + void GenerateParsingDoneCode(io::Printer* printer) const; void GenerateSerializationCode(io::Printer* printer) const; void GenerateSerializedSizeCode(io::Printer* printer) const; + void GenerateFieldBuilderInitializationCode(io::Printer* printer) const; + void GenerateEqualsCode(io::Printer* printer) const; + void GenerateHashCode(io::Printer* printer) const; string GetBoxedType() const; private: const FieldDescriptor* descriptor_; map variables_; + const int messageBitIndex_; + const int builderBitIndex_; GOOGLE_DISALLOW_EVIL_CONSTRUCTORS(RepeatedEnumFieldGenerator); }; diff --git a/cpp/thirdparty/protobuf-2.3.0/src/google/protobuf/compiler/java/java_extension.cc b/cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/compiler/java/java_extension.cc similarity index 51% rename from cpp/thirdparty/protobuf-2.3.0/src/google/protobuf/compiler/java/java_extension.cc rename to cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/compiler/java/java_extension.cc index 903b0a9bd..921fe6589 100644 --- a/cpp/thirdparty/protobuf-2.3.0/src/google/protobuf/compiler/java/java_extension.cc +++ b/cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/compiler/java/java_extension.cc @@ -33,6 +33,7 @@ // Sanjay Ghemawat, Jeff Dean, and others. #include +#include #include #include #include @@ -86,108 +87,124 @@ ExtensionGenerator::ExtensionGenerator(const FieldDescriptor* descriptor) ExtensionGenerator::~ExtensionGenerator() {} -void ExtensionGenerator::Generate(io::Printer* printer) { - map vars; - vars["name"] = UnderscoresToCamelCase(descriptor_); - vars["containing_type"] = ClassName(descriptor_->containing_type()); - vars["number"] = SimpleItoa(descriptor_->number()); - vars["constant_name"] = FieldConstantName(descriptor_); - vars["lite"] = HasDescriptorMethods(descriptor_->file()) ? "" : "Lite"; +// Initializes the vars referenced in the generated code templates. +void InitTemplateVars(const FieldDescriptor* descriptor, + const string& scope, + map* vars_pointer) { + map &vars = *vars_pointer; + vars["scope"] = scope; + vars["name"] = UnderscoresToCamelCase(descriptor); + vars["containing_type"] = ClassName(descriptor->containing_type()); + vars["number"] = SimpleItoa(descriptor->number()); + vars["constant_name"] = FieldConstantName(descriptor); + vars["index"] = SimpleItoa(descriptor->index()); + vars["default"] = + descriptor->is_repeated() ? "" : DefaultValue(descriptor); + vars["type_constant"] = TypeName(GetType(descriptor)); + vars["packed"] = descriptor->options().packed() ? "true" : "false"; + vars["enum_map"] = "null"; + vars["prototype"] = "null"; - JavaType java_type = GetJavaType(descriptor_); + JavaType java_type = GetJavaType(descriptor); string singular_type; switch (java_type) { case JAVATYPE_MESSAGE: - vars["type"] = ClassName(descriptor_->message_type()); + singular_type = ClassName(descriptor->message_type()); + vars["prototype"] = singular_type + ".getDefaultInstance()"; break; case JAVATYPE_ENUM: - vars["type"] = ClassName(descriptor_->enum_type()); + singular_type = ClassName(descriptor->enum_type()); + vars["enum_map"] = singular_type + ".internalGetValueMap()"; break; default: - vars["type"] = BoxedPrimitiveTypeName(java_type); + singular_type = BoxedPrimitiveTypeName(java_type); break; } - - printer->Print(vars, - "public static final int $constant_name$ = $number$;\n"); - if (descriptor_->is_repeated()) { - printer->Print(vars, - "public static final\n" - " com.google.protobuf.GeneratedMessage$lite$.GeneratedExtension<\n" - " $containing_type$,\n" - " java.util.List<$type$>> $name$ =\n" - " com.google.protobuf.GeneratedMessage$lite$\n" - " .newGeneratedExtension();\n"); - } else { - printer->Print(vars, - "public static final\n" - " com.google.protobuf.GeneratedMessage$lite$.GeneratedExtension<\n" - " $containing_type$,\n" - " $type$> $name$ =\n" - " com.google.protobuf.GeneratedMessage$lite$\n" - " .newGeneratedExtension();\n"); - } + vars["type"] = descriptor->is_repeated() ? + "java.util.List<" + singular_type + ">" : singular_type; + vars["singular_type"] = singular_type; } -void ExtensionGenerator::GenerateInitializationCode(io::Printer* printer) { +void ExtensionGenerator::Generate(io::Printer* printer) { map vars; - vars["name"] = UnderscoresToCamelCase(descriptor_); - vars["scope"] = scope_; - vars["index"] = SimpleItoa(descriptor_->index()); - vars["extendee"] = ClassName(descriptor_->containing_type()); - vars["default"] = descriptor_->is_repeated() ? "" : DefaultValue(descriptor_); - vars["number"] = SimpleItoa(descriptor_->number()); - vars["type_constant"] = TypeName(GetType(descriptor_)); - vars["packed"] = descriptor_->options().packed() ? "true" : "false"; - vars["enum_map"] = "null"; - vars["prototype"] = "null"; - - JavaType java_type = GetJavaType(descriptor_); - string singular_type; - switch (java_type) { - case JAVATYPE_MESSAGE: - vars["type"] = ClassName(descriptor_->message_type()); - vars["prototype"] = ClassName(descriptor_->message_type()) + - ".getDefaultInstance()"; - break; - case JAVATYPE_ENUM: - vars["type"] = ClassName(descriptor_->enum_type()); - vars["enum_map"] = ClassName(descriptor_->enum_type()) + - ".internalGetValueMap()"; - break; - default: - vars["type"] = BoxedPrimitiveTypeName(java_type); - break; - } + InitTemplateVars(descriptor_, scope_, &vars); + printer->Print(vars, + "public static final int $constant_name$ = $number$;\n"); + WriteFieldDocComment(printer, descriptor_); if (HasDescriptorMethods(descriptor_->file())) { - printer->Print(vars, - "$scope$.$name$.internalInit(\n" - " $scope$.getDescriptor().getExtensions().get($index$),\n" - " $type$.class);\n"); + // Non-lite extensions + if (descriptor_->extension_scope() == NULL) { + // Non-nested + printer->Print( + vars, + "public static final\n" + " com.google.protobuf.GeneratedMessage.GeneratedExtension<\n" + " $containing_type$,\n" + " $type$> $name$ = com.google.protobuf.GeneratedMessage\n" + " .newFileScopedGeneratedExtension(\n" + " $singular_type$.class,\n" + " $prototype$);\n"); + } else { + // Nested + printer->Print( + vars, + "public static final\n" + " com.google.protobuf.GeneratedMessage.GeneratedExtension<\n" + " $containing_type$,\n" + " $type$> $name$ = com.google.protobuf.GeneratedMessage\n" + " .newMessageScopedGeneratedExtension(\n" + " $scope$.getDefaultInstance(),\n" + " $index$,\n" + " $singular_type$.class,\n" + " $prototype$);\n"); + } } else { + // Lite extensions if (descriptor_->is_repeated()) { - printer->Print(vars, - "$scope$.$name$.internalInitRepeated(\n" - " $extendee$.getDefaultInstance(),\n" - " $prototype$,\n" - " $enum_map$,\n" - " $number$,\n" - " com.google.protobuf.WireFormat.FieldType.$type_constant$,\n" - " $packed$);\n"); + printer->Print( + vars, + "public static final\n" + " com.google.protobuf.GeneratedMessageLite.GeneratedExtension<\n" + " $containing_type$,\n" + " $type$> $name$ = com.google.protobuf.GeneratedMessageLite\n" + " .newRepeatedGeneratedExtension(\n" + " $containing_type$.getDefaultInstance(),\n" + " $prototype$,\n" + " $enum_map$,\n" + " $number$,\n" + " com.google.protobuf.WireFormat.FieldType.$type_constant$,\n" + " $packed$);\n"); } else { - printer->Print(vars, - "$scope$.$name$.internalInitSingular(\n" - " $extendee$.getDefaultInstance(),\n" - " $default$,\n" - " $prototype$,\n" - " $enum_map$,\n" - " $number$,\n" - " com.google.protobuf.WireFormat.FieldType.$type_constant$);\n"); + printer->Print( + vars, + "public static final\n" + " com.google.protobuf.GeneratedMessageLite.GeneratedExtension<\n" + " $containing_type$,\n" + " $type$> $name$ = com.google.protobuf.GeneratedMessageLite\n" + " .newSingularGeneratedExtension(\n" + " $containing_type$.getDefaultInstance(),\n" + " $default$,\n" + " $prototype$,\n" + " $enum_map$,\n" + " $number$,\n" + " com.google.protobuf.WireFormat.FieldType.$type_constant$);\n"); } } } +void ExtensionGenerator::GenerateNonNestedInitializationCode( + io::Printer* printer) { + if (descriptor_->extension_scope() == NULL && + HasDescriptorMethods(descriptor_->file())) { + // Only applies to non-nested, non-lite extensions. + printer->Print( + "$name$.internalInit(descriptor.getExtensions().get($index$));\n", + "name", UnderscoresToCamelCase(descriptor_), + "index", SimpleItoa(descriptor_->index())); + } +} + void ExtensionGenerator::GenerateRegistrationCode(io::Printer* printer) { printer->Print( "registry.add($scope$.$name$);\n", diff --git a/cpp/thirdparty/protobuf-2.3.0/src/google/protobuf/compiler/java/java_extension.h b/cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/compiler/java/java_extension.h similarity index 97% rename from cpp/thirdparty/protobuf-2.3.0/src/google/protobuf/compiler/java/java_extension.h rename to cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/compiler/java/java_extension.h index 1e4230486..009ed9ffa 100644 --- a/cpp/thirdparty/protobuf-2.3.0/src/google/protobuf/compiler/java/java_extension.h +++ b/cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/compiler/java/java_extension.h @@ -60,7 +60,7 @@ class ExtensionGenerator { ~ExtensionGenerator(); void Generate(io::Printer* printer); - void GenerateInitializationCode(io::Printer* printer); + void GenerateNonNestedInitializationCode(io::Printer* printer); void GenerateRegistrationCode(io::Printer* printer); private: diff --git a/cpp/thirdparty/protobuf-2.3.0/src/google/protobuf/compiler/java/java_field.cc b/cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/compiler/java/java_field.cc similarity index 68% rename from cpp/thirdparty/protobuf-2.3.0/src/google/protobuf/compiler/java/java_field.cc rename to cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/compiler/java/java_field.cc index 978c8f336..c7d433c8e 100644 --- a/cpp/thirdparty/protobuf-2.3.0/src/google/protobuf/compiler/java/java_field.cc +++ b/cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/compiler/java/java_field.cc @@ -37,6 +37,7 @@ #include #include #include +#include #include namespace google { @@ -63,33 +64,57 @@ FieldGeneratorMap::FieldGeneratorMap(const Descriptor* descriptor) extension_generators_( new scoped_ptr[descriptor->extension_count()]) { - // Construct all the FieldGenerators. + // Construct all the FieldGenerators and assign them bit indices for their + // bit fields. + int messageBitIndex = 0; + int builderBitIndex = 0; for (int i = 0; i < descriptor->field_count(); i++) { - field_generators_[i].reset(MakeGenerator(descriptor->field(i))); + FieldGenerator* generator = MakeGenerator(descriptor->field(i), + messageBitIndex, builderBitIndex); + field_generators_[i].reset(generator); + messageBitIndex += generator->GetNumBitsForMessage(); + builderBitIndex += generator->GetNumBitsForBuilder(); } for (int i = 0; i < descriptor->extension_count(); i++) { - extension_generators_[i].reset(MakeGenerator(descriptor->extension(i))); + FieldGenerator* generator = MakeGenerator(descriptor->extension(i), + messageBitIndex, builderBitIndex); + extension_generators_[i].reset(generator); + messageBitIndex += generator->GetNumBitsForMessage(); + builderBitIndex += generator->GetNumBitsForBuilder(); } } -FieldGenerator* FieldGeneratorMap::MakeGenerator(const FieldDescriptor* field) { +FieldGenerator* FieldGeneratorMap::MakeGenerator( + const FieldDescriptor* field, int messageBitIndex, int builderBitIndex) { if (field->is_repeated()) { switch (GetJavaType(field)) { case JAVATYPE_MESSAGE: - return new RepeatedMessageFieldGenerator(field); + return new RepeatedMessageFieldGenerator( + field, messageBitIndex, builderBitIndex); case JAVATYPE_ENUM: - return new RepeatedEnumFieldGenerator(field); + return new RepeatedEnumFieldGenerator( + field, messageBitIndex, builderBitIndex); + case JAVATYPE_STRING: + return new RepeatedStringFieldGenerator( + field, messageBitIndex, builderBitIndex); default: - return new RepeatedPrimitiveFieldGenerator(field); + return new RepeatedPrimitiveFieldGenerator( + field, messageBitIndex, builderBitIndex); } } else { switch (GetJavaType(field)) { case JAVATYPE_MESSAGE: - return new MessageFieldGenerator(field); + return new MessageFieldGenerator( + field, messageBitIndex, builderBitIndex); case JAVATYPE_ENUM: - return new EnumFieldGenerator(field); + return new EnumFieldGenerator( + field, messageBitIndex, builderBitIndex); + case JAVATYPE_STRING: + return new StringFieldGenerator( + field, messageBitIndex, builderBitIndex); default: - return new PrimitiveFieldGenerator(field); + return new PrimitiveFieldGenerator( + field, messageBitIndex, builderBitIndex); } } } diff --git a/cpp/thirdparty/protobuf-2.3.0/src/google/protobuf/compiler/java/java_field.h b/cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/compiler/java/java_field.h similarity index 86% rename from cpp/thirdparty/protobuf-2.3.0/src/google/protobuf/compiler/java/java_field.h rename to cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/compiler/java/java_field.h index f5bef7abc..4dd0efd60 100644 --- a/cpp/thirdparty/protobuf-2.3.0/src/google/protobuf/compiler/java/java_field.h +++ b/cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/compiler/java/java_field.h @@ -55,15 +55,25 @@ class FieldGenerator { FieldGenerator() {} virtual ~FieldGenerator(); + virtual int GetNumBitsForMessage() const = 0; + virtual int GetNumBitsForBuilder() const = 0; + virtual void GenerateInterfaceMembers(io::Printer* printer) const = 0; virtual void GenerateMembers(io::Printer* printer) const = 0; virtual void GenerateBuilderMembers(io::Printer* printer) const = 0; virtual void GenerateInitializationCode(io::Printer* printer) const = 0; + virtual void GenerateBuilderClearCode(io::Printer* printer) const = 0; virtual void GenerateMergingCode(io::Printer* printer) const = 0; virtual void GenerateBuildingCode(io::Printer* printer) const = 0; virtual void GenerateParsingCode(io::Printer* printer) const = 0; virtual void GenerateParsingCodeFromPacked(io::Printer* printer) const; + virtual void GenerateParsingDoneCode(io::Printer* printer) const = 0; virtual void GenerateSerializationCode(io::Printer* printer) const = 0; virtual void GenerateSerializedSizeCode(io::Printer* printer) const = 0; + virtual void GenerateFieldBuilderInitializationCode(io::Printer* printer) + const = 0; + + virtual void GenerateEqualsCode(io::Printer* printer) const = 0; + virtual void GenerateHashCode(io::Printer* printer) const = 0; virtual string GetBoxedType() const = 0; @@ -85,7 +95,8 @@ class FieldGeneratorMap { scoped_array > field_generators_; scoped_array > extension_generators_; - static FieldGenerator* MakeGenerator(const FieldDescriptor* field); + static FieldGenerator* MakeGenerator(const FieldDescriptor* field, + int messageBitIndex, int builderBitIndex); GOOGLE_DISALLOW_EVIL_CONSTRUCTORS(FieldGeneratorMap); }; diff --git a/cpp/thirdparty/protobuf-2.3.0/src/google/protobuf/compiler/java/java_file.cc b/cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/compiler/java/java_file.cc similarity index 69% rename from cpp/thirdparty/protobuf-2.3.0/src/google/protobuf/compiler/java/java_file.cc rename to cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/compiler/java/java_file.cc index 7ea127c0f..f43e55001 100644 --- a/cpp/thirdparty/protobuf-2.3.0/src/google/protobuf/compiler/java/java_file.cc +++ b/cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/compiler/java/java_file.cc @@ -42,6 +42,7 @@ #include #include #include +#include #include namespace google { @@ -51,18 +52,24 @@ namespace java { namespace { -// Recursively searches the given message to see if it contains any extensions. -bool UsesExtensions(const Message& message) { + +// Recursively searches the given message to collect extensions. +// Returns true if all the extensions can be recognized. The extensions will be +// appended in to the extensions parameter. +// Returns false when there are unknown fields, in which case the data in the +// extensions output parameter is not reliable and should be discarded. +bool CollectExtensions(const Message& message, + vector* extensions) { const Reflection* reflection = message.GetReflection(); - // We conservatively assume that unknown fields are extensions. - if (reflection->GetUnknownFields(message).field_count() > 0) return true; + // There are unknown fields that could be extensions, thus this call fails. + if (reflection->GetUnknownFields(message).field_count() > 0) return false; vector fields; reflection->ListFields(message, &fields); for (int i = 0; i < fields.size(); i++) { - if (fields[i]->is_extension()) return true; + if (fields[i]->is_extension()) extensions->push_back(fields[i]); if (GetJavaType(fields[i]) == JAVATYPE_MESSAGE) { if (fields[i]->is_repeated()) { @@ -70,16 +77,56 @@ bool UsesExtensions(const Message& message) { for (int j = 0; j < size; j++) { const Message& sub_message = reflection->GetRepeatedMessage(message, fields[i], j); - if (UsesExtensions(sub_message)) return true; + if (!CollectExtensions(sub_message, extensions)) return false; } } else { const Message& sub_message = reflection->GetMessage(message, fields[i]); - if (UsesExtensions(sub_message)) return true; + if (!CollectExtensions(sub_message, extensions)) return false; } } } - return false; + return true; +} + +// Finds all extensions in the given message and its sub-messages. If the +// message contains unknown fields (which could be extensions), then those +// extensions are defined in alternate_pool. +// The message will be converted to a DynamicMessage backed by alternate_pool +// in order to handle this case. +void CollectExtensions(const FileDescriptorProto& file_proto, + const DescriptorPool& alternate_pool, + vector* extensions, + const string& file_data) { + if (!CollectExtensions(file_proto, extensions)) { + // There are unknown fields in the file_proto, which are probably + // extensions. We need to parse the data into a dynamic message based on the + // builder-pool to find out all extensions. + const Descriptor* file_proto_desc = alternate_pool.FindMessageTypeByName( + file_proto.GetDescriptor()->full_name()); + GOOGLE_CHECK(file_proto_desc) + << "Find unknown fields in FileDescriptorProto when building " + << file_proto.name() + << ". It's likely that those fields are custom options, however, " + "descriptor.proto is not in the transitive dependencies. " + "This normally should not happen. Please report a bug."; + DynamicMessageFactory factory; + scoped_ptr dynamic_file_proto( + factory.GetPrototype(file_proto_desc)->New()); + GOOGLE_CHECK(dynamic_file_proto.get() != NULL); + GOOGLE_CHECK(dynamic_file_proto->ParseFromString(file_data)); + + // Collect the extensions again from the dynamic message. There should be no + // more unknown fields this time, i.e. all the custom options should be + // parsed as extensions now. + extensions->clear(); + GOOGLE_CHECK(CollectExtensions(*dynamic_file_proto, extensions)) + << "Find unknown fields in FileDescriptorProto when building " + << file_proto.name() + << ". It's likely that those fields are custom options, however, " + "those options cannot be recognized in the builder pool. " + "This normally should not happen. Please report a bug."; + } } @@ -88,7 +135,8 @@ bool UsesExtensions(const Message& message) { FileGenerator::FileGenerator(const FileDescriptor* file) : file_(file), java_package_(FileJavaPackage(file)), - classname_(FileClassName(file)) {} + classname_(FileClassName(file)) { +} FileGenerator::~FileGenerator() {} @@ -179,7 +227,9 @@ void FileGenerator::Generate(io::Printer* printer) { EnumGenerator(file_->enum_type(i)).Generate(printer); } for (int i = 0; i < file_->message_type_count(); i++) { - MessageGenerator(file_->message_type(i)).Generate(printer); + MessageGenerator messageGenerator(file_->message_type(i)); + messageGenerator.GenerateInterface(printer); + messageGenerator.Generate(printer); } if (HasGenericServices(file_)) { for (int i = 0; i < file_->service_count(); i++) { @@ -215,24 +265,11 @@ void FileGenerator::Generate(io::Printer* printer) { .GenerateStaticVariableInitializers(printer); } - for (int i = 0; i < file_->extension_count(); i++) { - // TODO(kenton): Reuse ExtensionGenerator objects? - ExtensionGenerator(file_->extension(i)) - .GenerateInitializationCode(printer); - } - printer->Outdent(); printer->Print( "}\n"); } - // Dummy function we can use to force the static initialization block to - // run. Needed by inner classes. Cannot be private due to - // java_multiple_files option. - printer->Print( - "\n" - "public static void internalForceInit() {}\n"); - printer->Print( "\n" "// @@protoc_insertion_point(outer_class_scope)\n"); @@ -310,24 +347,38 @@ void FileGenerator::GenerateEmbeddedDescriptor(io::Printer* printer) { MessageGenerator(file_->message_type(i)) .GenerateStaticVariableInitializers(printer); } - for (int i = 0; i < file_->extension_count(); i++) { // TODO(kenton): Reuse ExtensionGenerator objects? ExtensionGenerator(file_->extension(i)) - .GenerateInitializationCode(printer); + .GenerateNonNestedInitializationCode(printer); } - if (UsesExtensions(file_proto)) { - // Must construct an ExtensionRegistry containing all possible extensions + // Proto compiler builds a DescriptorPool, which holds all the descriptors to + // generate, when processing the ".proto" files. We call this DescriptorPool + // the parsed pool (a.k.a. file_->pool()). + // + // Note that when users try to extend the (.*)DescriptorProto in their + // ".proto" files, it does not affect the pre-built FileDescriptorProto class + // in proto compiler. When we put the descriptor data in the file_proto, those + // extensions become unknown fields. + // + // Now we need to find out all the extension value to the (.*)DescriptorProto + // in the file_proto message, and prepare an ExtensionRegistry to return. + // + // To find those extensions, we need to parse the data into a dynamic message + // of the FileDescriptor based on the builder-pool, then we can use + // reflections to find all extension fields + vector extensions; + CollectExtensions(file_proto, *file_->pool(), &extensions, file_data); + + if (extensions.size() > 0) { + // Must construct an ExtensionRegistry containing all existing extensions // and return it. printer->Print( "com.google.protobuf.ExtensionRegistry registry =\n" - " com.google.protobuf.ExtensionRegistry.newInstance();\n" - "registerAllExtensions(registry);\n"); - for (int i = 0; i < file_->dependency_count(); i++) { - printer->Print( - "$dependency$.registerAllExtensions(registry);\n", - "dependency", ClassName(file_->dependency(i))); + " com.google.protobuf.ExtensionRegistry.newInstance();\n"); + for (int i = 0; i < extensions.size(); i++) { + ExtensionGenerator(extensions[i]).GenerateRegistrationCode(printer); } printer->Print( "return registry;\n"); @@ -372,18 +423,21 @@ template static void GenerateSibling(const string& package_dir, const string& java_package, const DescriptorClass* descriptor, - OutputDirectory* output_directory, - vector* file_list) { - string filename = package_dir + descriptor->name() + ".java"; + GeneratorContext* context, + vector* file_list, + const string& name_suffix, + void (GeneratorClass::*pfn)(io::Printer* printer)) { + string filename = package_dir + descriptor->name() + name_suffix + ".java"; file_list->push_back(filename); - scoped_ptr output( - output_directory->Open(filename)); + scoped_ptr output(context->Open(filename)); io::Printer printer(output.get(), '$'); printer.Print( "// Generated by the protocol buffer compiler. DO NOT EDIT!\n" - "\n"); + "// source: $filename$\n" + "\n", + "filename", descriptor->file()->name()); if (!java_package.empty()) { printer.Print( "package $package$;\n" @@ -391,28 +445,36 @@ static void GenerateSibling(const string& package_dir, "package", java_package); } - GeneratorClass(descriptor).Generate(&printer); + GeneratorClass generator(descriptor); + (generator.*pfn)(&printer); } void FileGenerator::GenerateSiblings(const string& package_dir, - OutputDirectory* output_directory, + GeneratorContext* context, vector* file_list) { if (file_->options().java_multiple_files()) { for (int i = 0; i < file_->enum_type_count(); i++) { GenerateSibling(package_dir, java_package_, file_->enum_type(i), - output_directory, file_list); + context, file_list, "", + &EnumGenerator::Generate); } for (int i = 0; i < file_->message_type_count(); i++) { GenerateSibling(package_dir, java_package_, file_->message_type(i), - output_directory, file_list); + context, file_list, "OrBuilder", + &MessageGenerator::GenerateInterface); + GenerateSibling(package_dir, java_package_, + file_->message_type(i), + context, file_list, "", + &MessageGenerator::Generate); } if (HasGenericServices(file_)) { for (int i = 0; i < file_->service_count(); i++) { GenerateSibling(package_dir, java_package_, file_->service(i), - output_directory, file_list); + context, file_list, "", + &ServiceGenerator::Generate); } } } diff --git a/cpp/thirdparty/protobuf-2.3.0/src/google/protobuf/compiler/java/java_file.h b/cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/compiler/java/java_file.h similarity index 96% rename from cpp/thirdparty/protobuf-2.3.0/src/google/protobuf/compiler/java/java_file.h rename to cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/compiler/java/java_file.h index 9e35d3306..599114626 100644 --- a/cpp/thirdparty/protobuf-2.3.0/src/google/protobuf/compiler/java/java_file.h +++ b/cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/compiler/java/java_file.h @@ -46,7 +46,7 @@ namespace protobuf { class Printer; // printer.h } namespace compiler { - class OutputDirectory; // code_generator.h + class GeneratorContext; // code_generator.h } } @@ -70,12 +70,13 @@ class FileGenerator { // files other than the outer file (i.e. one for each message, enum, and // service type). void GenerateSiblings(const string& package_dir, - OutputDirectory* output_directory, + GeneratorContext* generator_context, vector* file_list); const string& java_package() { return java_package_; } const string& classname() { return classname_; } + private: // Returns whether the dependency should be included in the output file. // Always returns true for opensource, but used internally at Google to help @@ -86,6 +87,7 @@ class FileGenerator { string java_package_; string classname_; + void GenerateEmbeddedDescriptor(io::Printer* printer); GOOGLE_DISALLOW_EVIL_CONSTRUCTORS(FileGenerator); diff --git a/cpp/thirdparty/protobuf-2.3.0/src/google/protobuf/compiler/java/java_generator.cc b/cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/compiler/java/java_generator.cc similarity index 86% rename from cpp/thirdparty/protobuf-2.3.0/src/google/protobuf/compiler/java/java_generator.cc rename to cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/compiler/java/java_generator.cc index 745b55ae1..e6c79abcd 100644 --- a/cpp/thirdparty/protobuf-2.3.0/src/google/protobuf/compiler/java/java_generator.cc +++ b/cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/compiler/java/java_generator.cc @@ -51,11 +51,8 @@ JavaGenerator::~JavaGenerator() {} bool JavaGenerator::Generate(const FileDescriptor* file, const string& parameter, - OutputDirectory* output_directory, + GeneratorContext* context, string* error) const { - vector > options; - ParseGeneratorParameter(parameter, &options); - // ----------------------------------------------------------------- // parse generator options @@ -63,6 +60,10 @@ bool JavaGenerator::Generate(const FileDescriptor* file, // per line. string output_list_file; + + vector > options; + ParseGeneratorParameter(parameter, &options); + for (int i = 0; i < options.size(); i++) { if (options[i].first == "output_list_file") { output_list_file = options[i].second; @@ -72,18 +73,23 @@ bool JavaGenerator::Generate(const FileDescriptor* file, } } - // ----------------------------------------------------------------- + if (file->options().optimize_for() == FileOptions::LITE_RUNTIME && + file->options().java_generate_equals_and_hash()) { + *error = "The \"java_generate_equals_and_hash\" option is incompatible " + "with \"optimize_for = LITE_RUNTIME\". You must optimize for " + "SPEED or CODE_SIZE if you want to use this option."; + return false; + } + FileGenerator file_generator(file); if (!file_generator.Validate(error)) { return false; } - string package_dir = - StringReplace(file_generator.java_package(), ".", "/", true); - if (!package_dir.empty()) package_dir += "/"; + string package_dir = JavaPackageToDir(file_generator.java_package()); vector all_files; @@ -94,19 +100,19 @@ bool JavaGenerator::Generate(const FileDescriptor* file, // Generate main java file. scoped_ptr output( - output_directory->Open(java_filename)); + context->Open(java_filename)); io::Printer printer(output.get(), '$'); file_generator.Generate(&printer); // Generate sibling files. - file_generator.GenerateSiblings(package_dir, output_directory, &all_files); + file_generator.GenerateSiblings(package_dir, context, &all_files); // Generate output list if requested. if (!output_list_file.empty()) { // Generate output list. This is just a simple text file placed in a // deterministic location which lists the .java files being generated. scoped_ptr srclist_raw_output( - output_directory->Open(output_list_file)); + context->Open(output_list_file)); io::Printer srclist_printer(srclist_raw_output.get(), '$'); for (int i = 0; i < all_files.size(); i++) { srclist_printer.Print("$filename$\n", "filename", all_files[i]); diff --git a/cpp/thirdparty/protobuf-2.3.0/src/google/protobuf/compiler/java/java_generator.h b/cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/compiler/java/java_generator.h similarity index 98% rename from cpp/thirdparty/protobuf-2.3.0/src/google/protobuf/compiler/java/java_generator.h rename to cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/compiler/java/java_generator.h index c91c9053b..888b8d85e 100644 --- a/cpp/thirdparty/protobuf-2.3.0/src/google/protobuf/compiler/java/java_generator.h +++ b/cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/compiler/java/java_generator.h @@ -57,7 +57,7 @@ class LIBPROTOC_EXPORT JavaGenerator : public CodeGenerator { // implements CodeGenerator ---------------------------------------- bool Generate(const FileDescriptor* file, const string& parameter, - OutputDirectory* output_directory, + GeneratorContext* context, string* error) const; private: diff --git a/cpp/thirdparty/protobuf-2.3.0/src/google/protobuf/compiler/java/java_helpers.cc b/cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/compiler/java/java_helpers.cc similarity index 72% rename from cpp/thirdparty/protobuf-2.3.0/src/google/protobuf/compiler/java/java_helpers.cc rename to cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/compiler/java/java_helpers.cc index 7ed0c3cc1..cf241b8a5 100644 --- a/cpp/thirdparty/protobuf-2.3.0/src/google/protobuf/compiler/java/java_helpers.cc +++ b/cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/compiler/java/java_helpers.cc @@ -134,16 +134,27 @@ string FileClassName(const FileDescriptor* file) { } string FileJavaPackage(const FileDescriptor* file) { + string result; + if (file->options().has_java_package()) { - return file->options().java_package(); + result = file->options().java_package(); } else { - string result = kDefaultPackage; + result = kDefaultPackage; if (!file->package().empty()) { if (!result.empty()) result += '.'; result += file->package(); } - return result; } + + + return result; +} + +string JavaPackageToDir(string package_name) { + string package_dir = + StringReplace(package_name, ".", "/", true); + if (!package_dir.empty()) package_dir += "/"; + return package_dir; } string ToJavaName(const string& full_name, const FileDescriptor* file) { @@ -166,6 +177,18 @@ string ToJavaName(const string& full_name, const FileDescriptor* file) { return result; } +string ClassName(const Descriptor* descriptor) { + return ToJavaName(descriptor->full_name(), descriptor->file()); +} + +string ClassName(const EnumDescriptor* descriptor) { + return ToJavaName(descriptor->full_name(), descriptor->file()); +} + +string ClassName(const ServiceDescriptor* descriptor) { + return ToJavaName(descriptor->full_name(), descriptor->file()); +} + string ClassName(const FileDescriptor* descriptor) { string result = FileJavaPackage(descriptor); if (!result.empty()) result += '.'; @@ -315,14 +338,14 @@ string DefaultValue(const FieldDescriptor* field) { } else { // See comments in Internal.java for gory details. return strings::Substitute( - "com.google.protobuf.Internal.stringDefaultValue(\"$0\")", - CEscape(field->default_value_string())); + "com.google.protobuf.Internal.stringDefaultValue(\"$0\")", + CEscape(field->default_value_string())); } } case FieldDescriptor::CPPTYPE_ENUM: return ClassName(field->enum_type()) + "." + - field->default_value_enum()->name(); + field->default_value_enum()->name(); case FieldDescriptor::CPPTYPE_MESSAGE: return ClassName(field->message_type()) + ".getDefaultInstance()"; @@ -335,6 +358,142 @@ string DefaultValue(const FieldDescriptor* field) { return ""; } +bool IsDefaultValueJavaDefault(const FieldDescriptor* field) { + // Switch on CppType since we need to know which default_value_* method + // of FieldDescriptor to call. + switch (field->cpp_type()) { + case FieldDescriptor::CPPTYPE_INT32: + return field->default_value_int32() == 0; + case FieldDescriptor::CPPTYPE_UINT32: + return field->default_value_uint32() == 0; + case FieldDescriptor::CPPTYPE_INT64: + return field->default_value_int64() == 0L; + case FieldDescriptor::CPPTYPE_UINT64: + return field->default_value_uint64() == 0L; + case FieldDescriptor::CPPTYPE_DOUBLE: + return field->default_value_double() == 0.0; + case FieldDescriptor::CPPTYPE_FLOAT: + return field->default_value_float() == 0.0; + case FieldDescriptor::CPPTYPE_BOOL: + return field->default_value_bool() == false; + + case FieldDescriptor::CPPTYPE_STRING: + case FieldDescriptor::CPPTYPE_ENUM: + case FieldDescriptor::CPPTYPE_MESSAGE: + return false; + + // No default because we want the compiler to complain if any new + // types are added. + } + + GOOGLE_LOG(FATAL) << "Can't get here."; + return false; +} + +const char* bit_masks[] = { + "0x00000001", + "0x00000002", + "0x00000004", + "0x00000008", + "0x00000010", + "0x00000020", + "0x00000040", + "0x00000080", + + "0x00000100", + "0x00000200", + "0x00000400", + "0x00000800", + "0x00001000", + "0x00002000", + "0x00004000", + "0x00008000", + + "0x00010000", + "0x00020000", + "0x00040000", + "0x00080000", + "0x00100000", + "0x00200000", + "0x00400000", + "0x00800000", + + "0x01000000", + "0x02000000", + "0x04000000", + "0x08000000", + "0x10000000", + "0x20000000", + "0x40000000", + "0x80000000", +}; + +string GetBitFieldName(int index) { + string varName = "bitField"; + varName += SimpleItoa(index); + varName += "_"; + return varName; +} + +string GetBitFieldNameForBit(int bitIndex) { + return GetBitFieldName(bitIndex / 32); +} + +namespace { + +string GenerateGetBitInternal(const string& prefix, int bitIndex) { + string varName = prefix + GetBitFieldNameForBit(bitIndex); + int bitInVarIndex = bitIndex % 32; + + string mask = bit_masks[bitInVarIndex]; + string result = "((" + varName + " & " + mask + ") == " + mask + ")"; + return result; +} + +string GenerateSetBitInternal(const string& prefix, int bitIndex) { + string varName = prefix + GetBitFieldNameForBit(bitIndex); + int bitInVarIndex = bitIndex % 32; + + string mask = bit_masks[bitInVarIndex]; + string result = varName + " |= " + mask; + return result; +} + +} // namespace + +string GenerateGetBit(int bitIndex) { + return GenerateGetBitInternal("", bitIndex); +} + +string GenerateSetBit(int bitIndex) { + return GenerateSetBitInternal("", bitIndex); +} + +string GenerateClearBit(int bitIndex) { + string varName = GetBitFieldNameForBit(bitIndex); + int bitInVarIndex = bitIndex % 32; + + string mask = bit_masks[bitInVarIndex]; + string result = varName + " = (" + varName + " & ~" + mask + ")"; + return result; +} + +string GenerateGetBitFromLocal(int bitIndex) { + return GenerateGetBitInternal("from_", bitIndex); +} + +string GenerateSetBitToLocal(int bitIndex) { + return GenerateSetBitInternal("to_", bitIndex); +} + +string GenerateGetBitMutableLocal(int bitIndex) { + return GenerateGetBitInternal("mutable_", bitIndex); +} + +string GenerateSetBitMutableLocal(int bitIndex) { + return GenerateSetBitInternal("mutable_", bitIndex); +} + } // namespace java } // namespace compiler } // namespace protobuf diff --git a/cpp/thirdparty/protobuf-2.3.0/src/google/protobuf/compiler/java/java_helpers.h b/cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/compiler/java/java_helpers.h similarity index 68% rename from cpp/thirdparty/protobuf-2.3.0/src/google/protobuf/compiler/java/java_helpers.h rename to cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/compiler/java/java_helpers.h index 3c8974c9a..3937f069b 100644 --- a/cpp/thirdparty/protobuf-2.3.0/src/google/protobuf/compiler/java/java_helpers.h +++ b/cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/compiler/java/java_helpers.h @@ -68,6 +68,9 @@ string FileClassName(const FileDescriptor* file); // Returns the file's Java package name. string FileJavaPackage(const FileDescriptor* file); +// Returns output directory for the given package name. +string JavaPackageToDir(string package_name); + // Converts the given fully-qualified name in the proto namespace to its // fully-qualified name in the Java namespace, given that it is in the given // file. @@ -75,19 +78,14 @@ string ToJavaName(const string& full_name, const FileDescriptor* file); // These return the fully-qualified class name corresponding to the given // descriptor. -inline string ClassName(const Descriptor* descriptor) { - return ToJavaName(descriptor->full_name(), descriptor->file()); -} -inline string ClassName(const EnumDescriptor* descriptor) { - return ToJavaName(descriptor->full_name(), descriptor->file()); -} -inline string ClassName(const ServiceDescriptor* descriptor) { - return ToJavaName(descriptor->full_name(), descriptor->file()); -} +string ClassName(const Descriptor* descriptor); +string ClassName(const EnumDescriptor* descriptor); +string ClassName(const ServiceDescriptor* descriptor); +string ClassName(const FileDescriptor* descriptor); + inline string ExtensionIdentifierName(const FieldDescriptor* descriptor) { return ToJavaName(descriptor->full_name(), descriptor->file()); } -string ClassName(const FileDescriptor* descriptor); // Get the unqualified name that should be used for a field's field // number constant. @@ -118,6 +116,7 @@ JavaType GetJavaType(const FieldDescriptor* field); const char* BoxedPrimitiveTypeName(JavaType type); string DefaultValue(const FieldDescriptor* field); +bool IsDefaultValueJavaDefault(const FieldDescriptor* field); // Does this message class keep track of unknown fields? inline bool HasUnknownFields(const Descriptor* descriptor) { @@ -132,6 +131,11 @@ inline bool HasGeneratedMethods(const Descriptor* descriptor) { FileOptions::CODE_SIZE; } +// Does this message have specialized equals() and hashCode() methods? +inline bool HasEqualsAndHashCode(const Descriptor* descriptor) { + return descriptor->file()->options().java_generate_equals_and_hash(); +} + // Does this message class have descriptor and reflection methods? inline bool HasDescriptorMethods(const Descriptor* descriptor) { return descriptor->file()->options().optimize_for() != @@ -146,6 +150,12 @@ inline bool HasDescriptorMethods(const FileDescriptor* descriptor) { FileOptions::LITE_RUNTIME; } +inline bool HasNestedBuilders(const Descriptor* descriptor) { + // The proto-lite version doesn't support nested builders. + return descriptor->file()->options().optimize_for() != + FileOptions::LITE_RUNTIME; +} + // Should we generate generic services for this file? inline bool HasGenericServices(const FileDescriptor *file) { return file->service_count() > 0 && @@ -153,6 +163,55 @@ inline bool HasGenericServices(const FileDescriptor *file) { file->options().java_generic_services(); } + +// Methods for shared bitfields. + +// Gets the name of the shared bitfield for the given index. +string GetBitFieldName(int index); + +// Gets the name of the shared bitfield for the given bit index. +// Effectively, GetBitFieldName(bitIndex / 32) +string GetBitFieldNameForBit(int bitIndex); + +// Generates the java code for the expression that returns the boolean value +// of the bit of the shared bitfields for the given bit index. +// Example: "((bitField1_ & 0x04) == 0x04)" +string GenerateGetBit(int bitIndex); + +// Generates the java code for the expression that sets the bit of the shared +// bitfields for the given bit index. +// Example: "bitField1_ = (bitField1_ | 0x04)" +string GenerateSetBit(int bitIndex); + +// Generates the java code for the expression that clears the bit of the shared +// bitfields for the given bit index. +// Example: "bitField1_ = (bitField1_ & ~0x04)" +string GenerateClearBit(int bitIndex); + +// Does the same as GenerateGetBit but operates on the bit field on a local +// variable. This is used by the builder to copy the value in the builder to +// the message. +// Example: "((from_bitField1_ & 0x04) == 0x04)" +string GenerateGetBitFromLocal(int bitIndex); + +// Does the same as GenerateSetBit but operates on the bit field on a local +// variable. This is used by the builder to copy the value in the builder to +// the message. +// Example: "to_bitField1_ = (to_bitField1_ | 0x04)" +string GenerateSetBitToLocal(int bitIndex); + +// Does the same as GenerateGetBit but operates on the bit field on a local +// variable. This is used by the parsing constructor to record if a repeated +// field is mutable. +// Example: "((mutable_bitField1_ & 0x04) == 0x04)" +string GenerateGetBitMutableLocal(int bitIndex); + +// Does the same as GenerateSetBit but operates on the bit field on a local +// variable. This is used by the parsing constructor to record if a repeated +// field is mutable. +// Example: "mutable_bitField1_ = (mutable_bitField1_ | 0x04)" +string GenerateSetBitMutableLocal(int bitIndex); + } // namespace java } // namespace compiler } // namespace protobuf diff --git a/cpp/thirdparty/protobuf-2.3.0/src/google/protobuf/compiler/java/java_message.cc b/cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/compiler/java/java_message.cc similarity index 57% rename from cpp/thirdparty/protobuf-2.3.0/src/google/protobuf/compiler/java/java_message.cc rename to cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/compiler/java/java_message.cc index a32605717..9322e242b 100644 --- a/cpp/thirdparty/protobuf-2.3.0/src/google/protobuf/compiler/java/java_message.cc +++ b/cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/compiler/java/java_message.cc @@ -32,17 +32,23 @@ // Based on original Protocol Buffers design by // Sanjay Ghemawat, Jeff Dean, and others. +#include + #include #include -#include +#include +#include + +#include #include #include #include -#include -#include #include -#include +#include #include +#include +#include +#include namespace google { namespace protobuf { @@ -233,10 +239,8 @@ void MessageGenerator::GenerateStaticVariableInitializers( "field_name", UnderscoresToCapitalizedCamelCase(descriptor_->field(i))); } - printer->Print("},\n" - " $classname$.class,\n" - " $classname$.Builder.class);\n", - "classname", ClassName(descriptor_)); + printer->Print( + "});\n"); } // Generate static member initializers for all nested types. @@ -245,59 +249,122 @@ void MessageGenerator::GenerateStaticVariableInitializers( MessageGenerator(descriptor_->nested_type(i)) .GenerateStaticVariableInitializers(printer); } +} - for (int i = 0; i < descriptor_->extension_count(); i++) { - // TODO(kenton): Reuse ExtensionGenerator objects? - ExtensionGenerator(descriptor_->extension(i)) - .GenerateInitializationCode(printer); +// =================================================================== + +void MessageGenerator::GenerateInterface(io::Printer* printer) { + if (descriptor_->extension_range_count() > 0) { + if (HasDescriptorMethods(descriptor_)) { + printer->Print( + "public interface $classname$OrBuilder extends\n" + " com.google.protobuf.GeneratedMessage.\n" + " ExtendableMessageOrBuilder<$classname$> {\n", + "classname", descriptor_->name()); + } else { + printer->Print( + "public interface $classname$OrBuilder extends \n" + " com.google.protobuf.GeneratedMessageLite.\n" + " ExtendableMessageOrBuilder<$classname$> {\n", + "classname", descriptor_->name()); + } + } else { + if (HasDescriptorMethods(descriptor_)) { + printer->Print( + "public interface $classname$OrBuilder\n" + " extends com.google.protobuf.MessageOrBuilder {\n", + "classname", descriptor_->name()); + } else { + printer->Print( + "public interface $classname$OrBuilder\n" + " extends com.google.protobuf.MessageLiteOrBuilder {\n", + "classname", descriptor_->name()); + } } + + printer->Indent(); + for (int i = 0; i < descriptor_->field_count(); i++) { + printer->Print("\n"); + PrintFieldComment(printer, descriptor_->field(i)); + field_generators_.get(descriptor_->field(i)) + .GenerateInterfaceMembers(printer); + } + printer->Outdent(); + + printer->Print("}\n"); } +// =================================================================== + void MessageGenerator::Generate(io::Printer* printer) { bool is_own_file = descriptor_->containing_type() == NULL && descriptor_->file()->options().java_multiple_files(); + WriteMessageDocComment(printer, descriptor_); + + // The builder_type stores the super type name of the nested Builder class. + string builder_type; if (descriptor_->extension_range_count() > 0) { if (HasDescriptorMethods(descriptor_)) { printer->Print( "public $static$ final class $classname$ extends\n" " com.google.protobuf.GeneratedMessage.ExtendableMessage<\n" - " $classname$> {\n", + " $classname$> implements $classname$OrBuilder {\n", "static", is_own_file ? "" : "static", "classname", descriptor_->name()); + builder_type = strings::Substitute( + "com.google.protobuf.GeneratedMessage.ExtendableBuilder<$0, ?>", + ClassName(descriptor_)); } else { printer->Print( "public $static$ final class $classname$ extends\n" " com.google.protobuf.GeneratedMessageLite.ExtendableMessage<\n" - " $classname$> {\n", + " $classname$> implements $classname$OrBuilder {\n", "static", is_own_file ? "" : "static", "classname", descriptor_->name()); + builder_type = strings::Substitute( + "com.google.protobuf.GeneratedMessageLite.ExtendableBuilder<$0, ?>", + ClassName(descriptor_)); } } else { if (HasDescriptorMethods(descriptor_)) { printer->Print( "public $static$ final class $classname$ extends\n" - " com.google.protobuf.GeneratedMessage {\n", + " com.google.protobuf.GeneratedMessage\n" + " implements $classname$OrBuilder {\n", "static", is_own_file ? "" : "static", "classname", descriptor_->name()); + builder_type = "com.google.protobuf.GeneratedMessage.Builder"; } else { printer->Print( "public $static$ final class $classname$ extends\n" - " com.google.protobuf.GeneratedMessageLite {\n", + " com.google.protobuf.GeneratedMessageLite\n" + " implements $classname$OrBuilder {\n", "static", is_own_file ? "" : "static", "classname", descriptor_->name()); + builder_type = "com.google.protobuf.GeneratedMessageLite.Builder"; } } printer->Indent(); + // Using builder_type, instead of Builder, prevents the Builder class from + // being loaded into PermGen space when the default instance is created. + // This optimizes the PermGen space usage for clients that do not modify + // messages. printer->Print( "// Use $classname$.newBuilder() to construct.\n" - "private $classname$() {\n" - " initFields();\n" - "}\n" + "private $classname$($buildertype$ builder) {\n" + " super(builder);\n" + "$set_unknown_fields$\n" + "}\n", + "classname", descriptor_->name(), + "buildertype", builder_type, + "set_unknown_fields", HasUnknownFields(descriptor_) + ? " this.unknownFields = builder.getUnknownFields();" : ""); + printer->Print( // Used when constructing the default instance, which cannot be initialized // immediately because it may cyclically refer to other default instances. - "private $classname$(boolean noInit) {}\n" + "private $classname$(boolean noInit) {$set_default_unknown_fields$}\n" "\n" "private static final $classname$ defaultInstance;\n" "public static $classname$ getDefaultInstance() {\n" @@ -308,35 +375,50 @@ void MessageGenerator::Generate(io::Printer* printer) { " return defaultInstance;\n" "}\n" "\n", - "classname", descriptor_->name()); + "classname", descriptor_->name(), + "set_default_unknown_fields", HasUnknownFields(descriptor_) + ? " this.unknownFields =" + " com.google.protobuf.UnknownFieldSet.getDefaultInstance(); " : ""); - if (HasDescriptorMethods(descriptor_)) { + if (HasUnknownFields(descriptor_)) { printer->Print( - "public static final com.google.protobuf.Descriptors.Descriptor\n" - " getDescriptor() {\n" - " return $fileclass$.internal_$identifier$_descriptor;\n" - "}\n" - "\n" - "protected com.google.protobuf.GeneratedMessage.FieldAccessorTable\n" - " internalGetFieldAccessorTable() {\n" - " return $fileclass$.internal_$identifier$_fieldAccessorTable;\n" - "}\n" - "\n", - "fileclass", ClassName(descriptor_->file()), - "identifier", UniqueFileScopeIdentifier(descriptor_)); + "private final com.google.protobuf.UnknownFieldSet unknownFields;\n" + "" + "@java.lang.Override\n" + "public final com.google.protobuf.UnknownFieldSet\n" + " getUnknownFields() {\n" + " return this.unknownFields;\n" + "}\n"); } - // Nested types and extensions + if (HasGeneratedMethods(descriptor_)) { + GenerateParsingConstructor(printer); + } + + GenerateDescriptorMethods(printer); + GenerateParser(printer); + + // Nested types for (int i = 0; i < descriptor_->enum_type_count(); i++) { EnumGenerator(descriptor_->enum_type(i)).Generate(printer); } for (int i = 0; i < descriptor_->nested_type_count(); i++) { - MessageGenerator(descriptor_->nested_type(i)).Generate(printer); + MessageGenerator messageGenerator(descriptor_->nested_type(i)); + messageGenerator.GenerateInterface(printer); + messageGenerator.Generate(printer); } - for (int i = 0; i < descriptor_->extension_count(); i++) { - ExtensionGenerator(descriptor_->extension(i)).Generate(printer); + // Integers for bit fields. + int totalBits = 0; + for (int i = 0; i < descriptor_->field_count(); i++) { + totalBits += field_generators_.get(descriptor_->field(i)) + .GetNumBitsForMessage(); + } + int totalInts = (totalBits + 31) / 32; + for (int i = 0; i < totalInts; i++) { + printer->Print("private int $bit_field_name$;\n", + "bit_field_name", GetBitFieldName(i)); } // Fields @@ -361,35 +443,42 @@ void MessageGenerator::Generate(io::Printer* printer) { printer->Print("}\n"); if (HasGeneratedMethods(descriptor_)) { - GenerateIsInitialized(printer); + GenerateIsInitialized(printer, MEMOIZE); GenerateMessageSerializationMethods(printer); } + if (HasEqualsAndHashCode(descriptor_)) { + GenerateEqualsAndHashCode(printer); + } + GenerateParseFromMethods(printer); GenerateBuilder(printer); - // Force initialization of outer class. Otherwise, nested extensions may - // not be initialized. Also carefully initialize the default instance in - // such a way that it doesn't conflict with other initialization. + // Carefully initialize the default instance in such a way that it doesn't + // conflict with other initialization. printer->Print( "\n" "static {\n" " defaultInstance = new $classname$(true);\n" - " $file$.internalForceInit();\n" " defaultInstance.initFields();\n" - "}\n", - "file", ClassName(descriptor_->file()), - "classname", descriptor_->name()); - - printer->Print( + "}\n" "\n" "// @@protoc_insertion_point(class_scope:$full_name$)\n", + "classname", descriptor_->name(), "full_name", descriptor_->full_name()); + // Extensions must be declared after the defaultInstance is initialized + // because the defaultInstance is used by the extension to lazily retrieve + // the outer class's FileDescriptor. + for (int i = 0; i < descriptor_->extension_count(); i++) { + ExtensionGenerator(descriptor_->extension(i)).Generate(printer); + } + printer->Outdent(); printer->Print("}\n\n"); } + // =================================================================== void MessageGenerator:: @@ -420,15 +509,18 @@ GenerateMessageSerializationMethods(io::Printer* printer) { if (descriptor_->extension_range_count() > 0) { if (descriptor_->options().message_set_wire_format()) { printer->Print( - "com.google.protobuf.GeneratedMessage$lite$.ExtendableMessage\n" - " .ExtensionWriter extensionWriter =\n" + "com.google.protobuf.GeneratedMessage$lite$\n" + " .ExtendableMessage<$classname$>.ExtensionWriter extensionWriter =\n" " newMessageSetExtensionWriter();\n", - "lite", HasDescriptorMethods(descriptor_) ? "" : "Lite"); + "lite", HasDescriptorMethods(descriptor_) ? "" : "Lite", + "classname", ClassName(descriptor_)); } else { printer->Print( - "com.google.protobuf.GeneratedMessage$lite$.ExtendableMessage\n" - " .ExtensionWriter extensionWriter = newExtensionWriter();\n", - "lite", HasDescriptorMethods(descriptor_) ? "" : "Lite"); + "com.google.protobuf.GeneratedMessage$lite$\n" + " .ExtendableMessage<$classname$>.ExtensionWriter extensionWriter =\n" + " newExtensionWriter();\n", + "lite", HasDescriptorMethods(descriptor_) ? "" : "Lite", + "classname", ClassName(descriptor_)); } } @@ -499,6 +591,15 @@ GenerateMessageSerializationMethods(io::Printer* printer) { " return size;\n" "}\n" "\n"); + + printer->Print( + "private static final long serialVersionUID = 0L;\n" + "@java.lang.Override\n" + "protected java.lang.Object writeReplace()\n" + " throws java.io.ObjectStreamException {\n" + " return super.writeReplace();\n" + "}\n" + "\n"); } void MessageGenerator:: @@ -510,68 +611,54 @@ GenerateParseFromMethods(io::Printer* printer) { "public static $classname$ parseFrom(\n" " com.google.protobuf.ByteString data)\n" " throws com.google.protobuf.InvalidProtocolBufferException {\n" - " return newBuilder().mergeFrom(data).buildParsed();\n" + " return PARSER.parseFrom(data);\n" "}\n" "public static $classname$ parseFrom(\n" " com.google.protobuf.ByteString data,\n" " com.google.protobuf.ExtensionRegistryLite extensionRegistry)\n" " throws com.google.protobuf.InvalidProtocolBufferException {\n" - " return newBuilder().mergeFrom(data, extensionRegistry)\n" - " .buildParsed();\n" + " return PARSER.parseFrom(data, extensionRegistry);\n" "}\n" "public static $classname$ parseFrom(byte[] data)\n" " throws com.google.protobuf.InvalidProtocolBufferException {\n" - " return newBuilder().mergeFrom(data).buildParsed();\n" + " return PARSER.parseFrom(data);\n" "}\n" "public static $classname$ parseFrom(\n" " byte[] data,\n" " com.google.protobuf.ExtensionRegistryLite extensionRegistry)\n" " throws com.google.protobuf.InvalidProtocolBufferException {\n" - " return newBuilder().mergeFrom(data, extensionRegistry)\n" - " .buildParsed();\n" + " return PARSER.parseFrom(data, extensionRegistry);\n" "}\n" "public static $classname$ parseFrom(java.io.InputStream input)\n" " throws java.io.IOException {\n" - " return newBuilder().mergeFrom(input).buildParsed();\n" + " return PARSER.parseFrom(input);\n" "}\n" "public static $classname$ parseFrom(\n" " java.io.InputStream input,\n" " com.google.protobuf.ExtensionRegistryLite extensionRegistry)\n" " throws java.io.IOException {\n" - " return newBuilder().mergeFrom(input, extensionRegistry)\n" - " .buildParsed();\n" + " return PARSER.parseFrom(input, extensionRegistry);\n" "}\n" "public static $classname$ parseDelimitedFrom(java.io.InputStream input)\n" " throws java.io.IOException {\n" - " Builder builder = newBuilder();\n" - " if (builder.mergeDelimitedFrom(input)) {\n" - " return builder.buildParsed();\n" - " } else {\n" - " return null;\n" - " }\n" + " return PARSER.parseDelimitedFrom(input);\n" "}\n" "public static $classname$ parseDelimitedFrom(\n" " java.io.InputStream input,\n" " com.google.protobuf.ExtensionRegistryLite extensionRegistry)\n" " throws java.io.IOException {\n" - " Builder builder = newBuilder();\n" - " if (builder.mergeDelimitedFrom(input, extensionRegistry)) {\n" - " return builder.buildParsed();\n" - " } else {\n" - " return null;\n" - " }\n" + " return PARSER.parseDelimitedFrom(input, extensionRegistry);\n" "}\n" "public static $classname$ parseFrom(\n" " com.google.protobuf.CodedInputStream input)\n" " throws java.io.IOException {\n" - " return newBuilder().mergeFrom(input).buildParsed();\n" + " return PARSER.parseFrom(input);\n" "}\n" "public static $classname$ parseFrom(\n" " com.google.protobuf.CodedInputStream input,\n" " com.google.protobuf.ExtensionRegistryLite extensionRegistry)\n" " throws java.io.IOException {\n" - " return newBuilder().mergeFrom(input, extensionRegistry)\n" - " .buildParsed();\n" + " return PARSER.parseFrom(input, extensionRegistry);\n" "}\n" "\n", "classname", ClassName(descriptor_)); @@ -602,42 +689,70 @@ void MessageGenerator::GenerateBuilder(io::Printer* printer) { "\n", "classname", ClassName(descriptor_)); + if (HasNestedBuilders(descriptor_)) { + printer->Print( + "@java.lang.Override\n" + "protected Builder newBuilderForType(\n" + " com.google.protobuf.GeneratedMessage.BuilderParent parent) {\n" + " Builder builder = new Builder(parent);\n" + " return builder;\n" + "}\n"); + } + + WriteMessageDocComment(printer, descriptor_); + if (descriptor_->extension_range_count() > 0) { if (HasDescriptorMethods(descriptor_)) { printer->Print( "public static final class Builder extends\n" " com.google.protobuf.GeneratedMessage.ExtendableBuilder<\n" - " $classname$, Builder> {\n", + " $classname$, Builder> implements $classname$OrBuilder {\n", "classname", ClassName(descriptor_)); } else { printer->Print( "public static final class Builder extends\n" " com.google.protobuf.GeneratedMessageLite.ExtendableBuilder<\n" - " $classname$, Builder> {\n", + " $classname$, Builder> implements $classname$OrBuilder {\n", "classname", ClassName(descriptor_)); } } else { if (HasDescriptorMethods(descriptor_)) { printer->Print( "public static final class Builder extends\n" - " com.google.protobuf.GeneratedMessage.Builder {\n", + " com.google.protobuf.GeneratedMessage.Builder\n" + " implements $classname$OrBuilder {\n", "classname", ClassName(descriptor_)); } else { printer->Print( "public static final class Builder extends\n" " com.google.protobuf.GeneratedMessageLite.Builder<\n" - " $classname$, Builder> {\n", + " $classname$, Builder>\n" + " implements $classname$OrBuilder {\n", "classname", ClassName(descriptor_)); } } printer->Indent(); + GenerateDescriptorMethods(printer); GenerateCommonBuilderMethods(printer); if (HasGeneratedMethods(descriptor_)) { + GenerateIsInitialized(printer, DONT_MEMOIZE); GenerateBuilderParsingMethods(printer); } + // Integers for bit fields. + int totalBits = 0; + for (int i = 0; i < descriptor_->field_count(); i++) { + totalBits += field_generators_.get(descriptor_->field(i)) + .GetNumBitsForBuilder(); + } + int totalInts = (totalBits + 31) / 32; + for (int i = 0; i < totalInts; i++) { + printer->Print("private int $bit_field_name$;\n", + "bit_field_name", GetBitFieldName(i)); + } + for (int i = 0; i < descriptor_->field_count(); i++) { printer->Print("\n"); PrintFieldComment(printer, descriptor_->field(i)); @@ -654,36 +769,101 @@ void MessageGenerator::GenerateBuilder(io::Printer* printer) { printer->Print("}\n"); } +void MessageGenerator::GenerateDescriptorMethods(io::Printer* printer) { + if (HasDescriptorMethods(descriptor_)) { + if (!descriptor_->options().no_standard_descriptor_accessor()) { + printer->Print( + "public static final com.google.protobuf.Descriptors.Descriptor\n" + " getDescriptor() {\n" + " return $fileclass$.internal_$identifier$_descriptor;\n" + "}\n" + "\n", + "fileclass", ClassName(descriptor_->file()), + "identifier", UniqueFileScopeIdentifier(descriptor_)); + } + printer->Print( + "protected com.google.protobuf.GeneratedMessage.FieldAccessorTable\n" + " internalGetFieldAccessorTable() {\n" + " return $fileclass$.internal_$identifier$_fieldAccessorTable\n" + " .ensureFieldAccessorsInitialized(\n" + " $classname$.class, $classname$.Builder.class);\n" + "}\n" + "\n", + "classname", ClassName(descriptor_), + "fileclass", ClassName(descriptor_->file()), + "identifier", UniqueFileScopeIdentifier(descriptor_)); + } +} + // =================================================================== void MessageGenerator::GenerateCommonBuilderMethods(io::Printer* printer) { printer->Print( - "private $classname$ result;\n" - "\n" "// Construct using $classname$.newBuilder()\n" - "private Builder() {}\n" - "\n" - "private static Builder create() {\n" - " Builder builder = new Builder();\n" - " builder.result = new $classname$();\n" - " return builder;\n" + "private Builder() {\n" + " maybeForceBuilderInitialization();\n" "}\n" - "\n" - "protected $classname$ internalGetResult() {\n" - " return result;\n" + "\n", + "classname", ClassName(descriptor_)); + + if (HasDescriptorMethods(descriptor_)) { + printer->Print( + "private Builder(\n" + " com.google.protobuf.GeneratedMessage.BuilderParent parent) {\n" + " super(parent);\n" + " maybeForceBuilderInitialization();\n" + "}\n", + "classname", ClassName(descriptor_)); + } + + + if (HasNestedBuilders(descriptor_)) { + printer->Print( + "private void maybeForceBuilderInitialization() {\n" + " if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {\n"); + + printer->Indent(); + printer->Indent(); + for (int i = 0; i < descriptor_->field_count(); i++) { + field_generators_.get(descriptor_->field(i)) + .GenerateFieldBuilderInitializationCode(printer); + } + printer->Outdent(); + printer->Outdent(); + + printer->Print( + " }\n" + "}\n"); + } else { + printer->Print( + "private void maybeForceBuilderInitialization() {\n" + "}\n"); + } + + printer->Print( + "private static Builder create() {\n" + " return new Builder();\n" "}\n" "\n" "public Builder clear() {\n" - " if (result == null) {\n" - " throw new IllegalStateException(\n" - " \"Cannot call clear() after build().\");\n" - " }\n" - " result = new $classname$();\n" + " super.clear();\n", + "classname", ClassName(descriptor_)); + + printer->Indent(); + + for (int i = 0; i < descriptor_->field_count(); i++) { + field_generators_.get(descriptor_->field(i)) + .GenerateBuilderClearCode(printer); + } + + printer->Outdent(); + + printer->Print( " return this;\n" "}\n" "\n" "public Builder clone() {\n" - " return create().mergeFrom(result);\n" + " return create().mergeFrom(buildPartial());\n" "}\n" "\n", "classname", ClassName(descriptor_)); @@ -691,58 +871,78 @@ void MessageGenerator::GenerateCommonBuilderMethods(io::Printer* printer) { printer->Print( "public com.google.protobuf.Descriptors.Descriptor\n" " getDescriptorForType() {\n" - " return $classname$.getDescriptor();\n" + " return $fileclass$.internal_$identifier$_descriptor;\n" "}\n" "\n", - "classname", ClassName(descriptor_)); + "fileclass", ClassName(descriptor_->file()), + "identifier", UniqueFileScopeIdentifier(descriptor_)); } printer->Print( "public $classname$ getDefaultInstanceForType() {\n" " return $classname$.getDefaultInstance();\n" "}\n" - "\n" - "public boolean isInitialized() {\n" - " return result.isInitialized();\n" - "}\n", + "\n", "classname", ClassName(descriptor_)); // ----------------------------------------------------------------- printer->Print( "public $classname$ build() {\n" - // If result == null, we'll throw an appropriate exception later. - " if (result != null && !isInitialized()) {\n" + " $classname$ result = buildPartial();\n" + " if (!result.isInitialized()) {\n" " throw newUninitializedMessageException(result);\n" " }\n" - " return buildPartial();\n" - "}\n" - "\n" - "private $classname$ buildParsed()\n" - " throws com.google.protobuf.InvalidProtocolBufferException {\n" - " if (!isInitialized()) {\n" - " throw newUninitializedMessageException(\n" - " result).asInvalidProtocolBufferException();\n" - " }\n" - " return buildPartial();\n" + " return result;\n" "}\n" "\n" "public $classname$ buildPartial() {\n" - " if (result == null) {\n" - " throw new IllegalStateException(\n" - " \"build() has already been called on this Builder.\");\n" - " }\n", + " $classname$ result = new $classname$(this);\n", "classname", ClassName(descriptor_)); + printer->Indent(); + // Local vars for from and to bit fields to avoid accessing the builder and + // message over and over for these fields. Seems to provide a slight + // perforamance improvement in micro benchmark and this is also what proto1 + // code does. + int totalBuilderBits = 0; + int totalMessageBits = 0; + for (int i = 0; i < descriptor_->field_count(); i++) { + const FieldGenerator& field = field_generators_.get(descriptor_->field(i)); + totalBuilderBits += field.GetNumBitsForBuilder(); + totalMessageBits += field.GetNumBitsForMessage(); + } + int totalBuilderInts = (totalBuilderBits + 31) / 32; + int totalMessageInts = (totalMessageBits + 31) / 32; + for (int i = 0; i < totalBuilderInts; i++) { + printer->Print("int from_$bit_field_name$ = $bit_field_name$;\n", + "bit_field_name", GetBitFieldName(i)); + } + for (int i = 0; i < totalMessageInts; i++) { + printer->Print("int to_$bit_field_name$ = 0;\n", + "bit_field_name", GetBitFieldName(i)); + } + + // Output generation code for each field. for (int i = 0; i < descriptor_->field_count(); i++) { field_generators_.get(descriptor_->field(i)).GenerateBuildingCode(printer); } + // Copy the bit field results to the generated message + for (int i = 0; i < totalMessageInts; i++) { + printer->Print("result.$bit_field_name$ = to_$bit_field_name$;\n", + "bit_field_name", GetBitFieldName(i)); + } + printer->Outdent(); + + if (HasDescriptorMethods(descriptor_)) { + printer->Print( + " onBuilt();\n"); + } + printer->Print( - " $classname$ returnMe = result;\n" - " result = null;\n" - " return returnMe;\n" + " return result;\n" "}\n" "\n", "classname", ClassName(descriptor_)); @@ -801,25 +1001,287 @@ void MessageGenerator::GenerateCommonBuilderMethods(io::Printer* printer) { // =================================================================== void MessageGenerator::GenerateBuilderParsingMethods(io::Printer* printer) { - scoped_array sorted_fields( - SortFieldsByNumber(descriptor_)); - printer->Print( "public Builder mergeFrom(\n" " com.google.protobuf.CodedInputStream input,\n" " com.google.protobuf.ExtensionRegistryLite extensionRegistry)\n" - " throws java.io.IOException {\n"); + " throws java.io.IOException {\n" + " $classname$ parsedMessage = null;\n" + " try {\n" + " parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);\n" + " } catch (com.google.protobuf.InvalidProtocolBufferException e) {\n" + " parsedMessage = ($classname$) e.getUnfinishedMessage();\n" + " throw e;\n" + " } finally {\n" + " if (parsedMessage != null) {\n" + " mergeFrom(parsedMessage);\n" + " }\n" + " }\n" + " return this;\n" + "}\n", + "classname", ClassName(descriptor_)); +} + +// =================================================================== + +void MessageGenerator::GenerateIsInitialized( + io::Printer* printer, UseMemoization useMemoization) { + bool memoization = useMemoization == MEMOIZE; + if (memoization) { + // Memoizes whether the protocol buffer is fully initialized (has all + // required fields). -1 means not yet computed. 0 means false and 1 means + // true. + printer->Print( + "private byte memoizedIsInitialized = -1;\n"); + } + printer->Print( + "public final boolean isInitialized() {\n"); printer->Indent(); + if (memoization) { + printer->Print( + "byte isInitialized = memoizedIsInitialized;\n" + "if (isInitialized != -1) return isInitialized == 1;\n" + "\n"); + } + + // Check that all required fields in this message are set. + // TODO(kenton): We can optimize this when we switch to putting all the + // "has" fields into a single bitfield. + for (int i = 0; i < descriptor_->field_count(); i++) { + const FieldDescriptor* field = descriptor_->field(i); + + if (field->is_required()) { + printer->Print( + "if (!has$name$()) {\n" + " $memoize$\n" + " return false;\n" + "}\n", + "name", UnderscoresToCapitalizedCamelCase(field), + "memoize", memoization ? "memoizedIsInitialized = 0;" : ""); + } + } + + // Now check that all embedded messages are initialized. + for (int i = 0; i < descriptor_->field_count(); i++) { + const FieldDescriptor* field = descriptor_->field(i); + if (GetJavaType(field) == JAVATYPE_MESSAGE && + HasRequiredFields(field->message_type())) { + switch (field->label()) { + case FieldDescriptor::LABEL_REQUIRED: + printer->Print( + "if (!get$name$().isInitialized()) {\n" + " $memoize$\n" + " return false;\n" + "}\n", + "type", ClassName(field->message_type()), + "name", UnderscoresToCapitalizedCamelCase(field), + "memoize", memoization ? "memoizedIsInitialized = 0;" : ""); + break; + case FieldDescriptor::LABEL_OPTIONAL: + printer->Print( + "if (has$name$()) {\n" + " if (!get$name$().isInitialized()) {\n" + " $memoize$\n" + " return false;\n" + " }\n" + "}\n", + "type", ClassName(field->message_type()), + "name", UnderscoresToCapitalizedCamelCase(field), + "memoize", memoization ? "memoizedIsInitialized = 0;" : ""); + break; + case FieldDescriptor::LABEL_REPEATED: + printer->Print( + "for (int i = 0; i < get$name$Count(); i++) {\n" + " if (!get$name$(i).isInitialized()) {\n" + " $memoize$\n" + " return false;\n" + " }\n" + "}\n", + "type", ClassName(field->message_type()), + "name", UnderscoresToCapitalizedCamelCase(field), + "memoize", memoization ? "memoizedIsInitialized = 0;" : ""); + break; + } + } + } + + if (descriptor_->extension_range_count() > 0) { + printer->Print( + "if (!extensionsAreInitialized()) {\n" + " $memoize$\n" + " return false;\n" + "}\n", + "memoize", memoization ? "memoizedIsInitialized = 0;" : ""); + } + + printer->Outdent(); + + if (memoization) { + printer->Print( + " memoizedIsInitialized = 1;\n"); + } + + printer->Print( + " return true;\n" + "}\n" + "\n"); +} + +// =================================================================== + +void MessageGenerator::GenerateEqualsAndHashCode(io::Printer* printer) { + printer->Print( + "@java.lang.Override\n" + "public boolean equals(final java.lang.Object obj) {\n"); + printer->Indent(); + printer->Print( + "if (obj == this) {\n" + " return true;\n" + "}\n" + "if (!(obj instanceof $classname$)) {\n" + " return super.equals(obj);\n" + "}\n" + "$classname$ other = ($classname$) obj;\n" + "\n", + "classname", ClassName(descriptor_)); + + printer->Print("boolean result = true;\n"); + for (int i = 0; i < descriptor_->field_count(); i++) { + const FieldDescriptor* field = descriptor_->field(i); + if (!field->is_repeated()) { + printer->Print( + "result = result && (has$name$() == other.has$name$());\n" + "if (has$name$()) {\n", + "name", UnderscoresToCapitalizedCamelCase(field)); + printer->Indent(); + } + field_generators_.get(field).GenerateEqualsCode(printer); + if (!field->is_repeated()) { + printer->Outdent(); + printer->Print( + "}\n"); + } + } + if (HasDescriptorMethods(descriptor_)) { + printer->Print( + "result = result &&\n" + " getUnknownFields().equals(other.getUnknownFields());\n"); + if (descriptor_->extension_range_count() > 0) { + printer->Print( + "result = result &&\n" + " getExtensionFields().equals(other.getExtensionFields());\n"); + } + } + printer->Print( + "return result;\n"); + printer->Outdent(); + printer->Print( + "}\n" + "\n"); + + printer->Print( + "private int memoizedHashCode = 0;\n"); + printer->Print( + "@java.lang.Override\n" + "public int hashCode() {\n"); + printer->Indent(); + printer->Print( + "if (memoizedHashCode != 0) {\n"); + printer->Indent(); + printer->Print( + "return memoizedHashCode;\n"); + printer->Outdent(); + printer->Print( + "}\n" + "int hash = 41;\n" + "hash = (19 * hash) + getDescriptorForType().hashCode();\n"); + for (int i = 0; i < descriptor_->field_count(); i++) { + const FieldDescriptor* field = descriptor_->field(i); + if (!field->is_repeated()) { + printer->Print( + "if (has$name$()) {\n", + "name", UnderscoresToCapitalizedCamelCase(field)); + printer->Indent(); + } + field_generators_.get(field).GenerateHashCode(printer); + if (!field->is_repeated()) { + printer->Outdent(); + printer->Print("}\n"); + } + } + if (HasDescriptorMethods(descriptor_)) { + if (descriptor_->extension_range_count() > 0) { + printer->Print( + "hash = hashFields(hash, getExtensionFields());\n"); + } + } + printer->Print( + "hash = (29 * hash) + getUnknownFields().hashCode();\n" + "memoizedHashCode = hash;\n" + "return hash;\n"); + printer->Outdent(); + printer->Print( + "}\n" + "\n"); +} + +// =================================================================== + +void MessageGenerator::GenerateExtensionRegistrationCode(io::Printer* printer) { + for (int i = 0; i < descriptor_->extension_count(); i++) { + ExtensionGenerator(descriptor_->extension(i)) + .GenerateRegistrationCode(printer); + } + + for (int i = 0; i < descriptor_->nested_type_count(); i++) { + MessageGenerator(descriptor_->nested_type(i)) + .GenerateExtensionRegistrationCode(printer); + } +} + +// =================================================================== +void MessageGenerator::GenerateParsingConstructor(io::Printer* printer) { + scoped_array sorted_fields( + SortFieldsByNumber(descriptor_)); + + printer->Print( + "private $classname$(\n" + " com.google.protobuf.CodedInputStream input,\n" + " com.google.protobuf.ExtensionRegistryLite extensionRegistry)\n" + " throws com.google.protobuf.InvalidProtocolBufferException {\n", + "classname", descriptor_->name()); + printer->Indent(); + + // Initialize all fields to default. + printer->Print( + "initFields();\n"); + + // Use builder bits to track mutable repeated fields. + int totalBuilderBits = 0; + for (int i = 0; i < descriptor_->field_count(); i++) { + const FieldGenerator& field = field_generators_.get(descriptor_->field(i)); + totalBuilderBits += field.GetNumBitsForBuilder(); + } + int totalBuilderInts = (totalBuilderBits + 31) / 32; + for (int i = 0; i < totalBuilderInts; i++) { + printer->Print("int mutable_$bit_field_name$ = 0;\n", + "bit_field_name", GetBitFieldName(i)); + } + if (HasUnknownFields(descriptor_)) { printer->Print( "com.google.protobuf.UnknownFieldSet.Builder unknownFields =\n" - " com.google.protobuf.UnknownFieldSet.newBuilder(\n" - " this.getUnknownFields());\n"); + " com.google.protobuf.UnknownFieldSet.newBuilder();\n"); } printer->Print( - "while (true) {\n"); + "try {\n"); + printer->Indent(); + + printer->Print( + "boolean done = false;\n" + "while (!done) {\n"); printer->Indent(); printer->Print( @@ -827,30 +1289,19 @@ void MessageGenerator::GenerateBuilderParsingMethods(io::Printer* printer) { "switch (tag) {\n"); printer->Indent(); - if (HasUnknownFields(descriptor_)) { - printer->Print( - "case 0:\n" // zero signals EOF / limit reached - " this.setUnknownFields(unknownFields.build());\n" - " return this;\n" - "default: {\n" - " if (!parseUnknownField(input, unknownFields,\n" - " extensionRegistry, tag)) {\n" - " this.setUnknownFields(unknownFields.build());\n" - " return this;\n" // it's an endgroup tag - " }\n" - " break;\n" - "}\n"); - } else { - printer->Print( - "case 0:\n" // zero signals EOF / limit reached - " return this;\n" - "default: {\n" - " if (!parseUnknownField(input, extensionRegistry, tag)) {\n" - " return this;\n" // it's an endgroup tag - " }\n" - " break;\n" - "}\n"); - } + printer->Print( + "case 0:\n" // zero signals EOF / limit reached + " done = true;\n" + " break;\n" + "default: {\n" + " if (!parseUnknownField(input,$unknown_fields$\n" + " extensionRegistry, tag)) {\n" + " done = true;\n" // it's an endgroup tag + " }\n" + " break;\n" + "}\n", + "unknown_fields", HasUnknownFields(descriptor_) + ? " unknownFields," : ""); for (int i = 0; i < descriptor_->field_count(); i++) { const FieldDescriptor* field = sorted_fields[i]; @@ -888,92 +1339,94 @@ void MessageGenerator::GenerateBuilderParsingMethods(io::Printer* printer) { } } - printer->Outdent(); printer->Outdent(); printer->Outdent(); printer->Print( - " }\n" // switch (tag) - " }\n" // while (true) - "}\n" - "\n"); -} - -// =================================================================== + " }\n" // switch (tag) + "}\n"); // while (!done) -void MessageGenerator::GenerateIsInitialized(io::Printer* printer) { + printer->Outdent(); printer->Print( - "public final boolean isInitialized() {\n"); + "} catch (com.google.protobuf.InvalidProtocolBufferException e) {\n" + " throw e.setUnfinishedMessage(this);\n" + "} catch (java.io.IOException e) {\n" + " throw new com.google.protobuf.InvalidProtocolBufferException(\n" + " e.getMessage()).setUnfinishedMessage(this);\n" + "} finally {\n"); printer->Indent(); - // Check that all required fields in this message are set. - // TODO(kenton): We can optimize this when we switch to putting all the - // "has" fields into a single bitfield. + // Make repeated field list immutable. for (int i = 0; i < descriptor_->field_count(); i++) { - const FieldDescriptor* field = descriptor_->field(i); - - if (field->is_required()) { - printer->Print( - "if (!has$name$) return false;\n", - "name", UnderscoresToCapitalizedCamelCase(field)); - } - } - - // Now check that all embedded messages are initialized. - for (int i = 0; i < descriptor_->field_count(); i++) { - const FieldDescriptor* field = descriptor_->field(i); - if (GetJavaType(field) == JAVATYPE_MESSAGE && - HasRequiredFields(field->message_type())) { - switch (field->label()) { - case FieldDescriptor::LABEL_REQUIRED: - printer->Print( - "if (!get$name$().isInitialized()) return false;\n", - "type", ClassName(field->message_type()), - "name", UnderscoresToCapitalizedCamelCase(field)); - break; - case FieldDescriptor::LABEL_OPTIONAL: - printer->Print( - "if (has$name$()) {\n" - " if (!get$name$().isInitialized()) return false;\n" - "}\n", - "type", ClassName(field->message_type()), - "name", UnderscoresToCapitalizedCamelCase(field)); - break; - case FieldDescriptor::LABEL_REPEATED: - printer->Print( - "for ($type$ element : get$name$List()) {\n" - " if (!element.isInitialized()) return false;\n" - "}\n", - "type", ClassName(field->message_type()), - "name", UnderscoresToCapitalizedCamelCase(field)); - break; - } - } + const FieldDescriptor* field = sorted_fields[i]; + field_generators_.get(field).GenerateParsingDoneCode(printer); } - if (descriptor_->extension_range_count() > 0) { + // Make unknown fields immutable. + if (HasUnknownFields(descriptor_)) { printer->Print( - "if (!extensionsAreInitialized()) return false;\n"); + "this.unknownFields = unknownFields.build();\n"); } + // Make extensions immutable. + printer->Print( + "makeExtensionsImmutable();\n"); + + printer->Outdent(); printer->Outdent(); printer->Print( - " return true;\n" - "}\n" - "\n"); + " }\n" // finally + "}\n"); } // =================================================================== - -void MessageGenerator::GenerateExtensionRegistrationCode(io::Printer* printer) { - for (int i = 0; i < descriptor_->extension_count(); i++) { - ExtensionGenerator(descriptor_->extension(i)) - .GenerateRegistrationCode(printer); +void MessageGenerator::GenerateParser(io::Printer* printer) { + printer->Print( + "public static com.google.protobuf.Parser<$classname$> PARSER =\n" + " new com.google.protobuf.AbstractParser<$classname$>() {\n", + "classname", descriptor_->name()); + printer->Indent(); + printer->Print( + "public $classname$ parsePartialFrom(\n" + " com.google.protobuf.CodedInputStream input,\n" + " com.google.protobuf.ExtensionRegistryLite extensionRegistry)\n" + " throws com.google.protobuf.InvalidProtocolBufferException {\n", + "classname", descriptor_->name()); + if (HasGeneratedMethods(descriptor_)) { + printer->Print( + " return new $classname$(input, extensionRegistry);\n", + "classname", descriptor_->name()); + } else { + // When parsing constructor isn't generated, use builder to parse messages. + // Note, will fallback to use reflection based mergeFieldFrom() in + // AbstractMessage.Builder. + printer->Indent(); + printer->Print( + "Builder builder = newBuilder();\n" + "try {\n" + " builder.mergeFrom(input, extensionRegistry);\n" + "} catch (com.google.protobuf.InvalidProtocolBufferException e) {\n" + " throw e.setUnfinishedMessage(builder.buildPartial());\n" + "} catch (java.io.IOException e) {\n" + " throw new com.google.protobuf.InvalidProtocolBufferException(\n" + " e.getMessage()).setUnfinishedMessage(builder.buildPartial());\n" + "}\n" + "return builder.buildPartial();\n"); + printer->Outdent(); } + printer->Print( + "}\n"); + printer->Outdent(); + printer->Print( + "};\n" + "\n"); - for (int i = 0; i < descriptor_->nested_type_count(); i++) { - MessageGenerator(descriptor_->nested_type(i)) - .GenerateExtensionRegistrationCode(printer); - } + printer->Print( + "@java.lang.Override\n" + "public com.google.protobuf.Parser<$classname$> getParserForType() {\n" + " return PARSER;\n" + "}\n" + "\n", + "classname", descriptor_->name()); } } // namespace java diff --git a/cpp/thirdparty/protobuf-2.3.0/src/google/protobuf/compiler/java/java_message.h b/cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/compiler/java/java_message.h similarity index 88% rename from cpp/thirdparty/protobuf-2.3.0/src/google/protobuf/compiler/java/java_message.h rename to cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/compiler/java/java_message.h index 50ffae080..a30f02026 100644 --- a/cpp/thirdparty/protobuf-2.3.0/src/google/protobuf/compiler/java/java_message.h +++ b/cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/compiler/java/java_message.h @@ -67,11 +67,19 @@ class MessageGenerator { // Generate the class itself. void Generate(io::Printer* printer); + // Generates the base interface that both the class and its builder implement + void GenerateInterface(io::Printer* printer); + // Generate code to register all contained extensions with an // ExtensionRegistry. void GenerateExtensionRegistrationCode(io::Printer* printer); private: + enum UseMemoization { + MEMOIZE, + DONT_MEMOIZE + }; + void GenerateMessageSerializationMethods(io::Printer* printer); void GenerateParseFromMethods(io::Printer* printer); void GenerateSerializeOneField(io::Printer* printer, @@ -81,8 +89,14 @@ class MessageGenerator { void GenerateBuilder(io::Printer* printer); void GenerateCommonBuilderMethods(io::Printer* printer); + void GenerateDescriptorMethods(io::Printer* printer); void GenerateBuilderParsingMethods(io::Printer* printer); - void GenerateIsInitialized(io::Printer* printer); + void GenerateIsInitialized(io::Printer* printer, + UseMemoization useMemoization); + void GenerateEqualsAndHashCode(io::Printer* printer); + + void GenerateParser(io::Printer* printer); + void GenerateParsingConstructor(io::Printer* printer); const Descriptor* descriptor_; FieldGeneratorMap field_generators_; diff --git a/cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/compiler/java/java_message_field.cc b/cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/compiler/java/java_message_field.cc new file mode 100644 index 000000000..b0b284f76 --- /dev/null +++ b/cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/compiler/java/java_message_field.cc @@ -0,0 +1,974 @@ +// Protocol Buffers - Google's data interchange format +// Copyright 2008 Google Inc. All rights reserved. +// http://code.google.com/p/protobuf/ +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +// Author: kenton@google.com (Kenton Varda) +// Based on original Protocol Buffers design by +// Sanjay Ghemawat, Jeff Dean, and others. + +#include +#include + +#include +#include +#include +#include +#include +#include + +namespace google { +namespace protobuf { +namespace compiler { +namespace java { + +namespace { + +// TODO(kenton): Factor out a "SetCommonFieldVariables()" to get rid of +// repeat code between this and the other field types. +void SetMessageVariables(const FieldDescriptor* descriptor, + int messageBitIndex, + int builderBitIndex, + map* variables) { + (*variables)["name"] = + UnderscoresToCamelCase(descriptor); + (*variables)["capitalized_name"] = + UnderscoresToCapitalizedCamelCase(descriptor); + (*variables)["constant_name"] = FieldConstantName(descriptor); + (*variables)["number"] = SimpleItoa(descriptor->number()); + (*variables)["type"] = ClassName(descriptor->message_type()); + (*variables)["group_or_message"] = + (GetType(descriptor) == FieldDescriptor::TYPE_GROUP) ? + "Group" : "Message"; + // TODO(birdo): Add @deprecated javadoc when generating javadoc is supported + // by the proto compiler + (*variables)["deprecation"] = descriptor->options().deprecated() + ? "@java.lang.Deprecated " : ""; + (*variables)["on_changed"] = + HasDescriptorMethods(descriptor->containing_type()) ? "onChanged();" : ""; + + // For singular messages and builders, one bit is used for the hasField bit. + (*variables)["get_has_field_bit_message"] = GenerateGetBit(messageBitIndex); + (*variables)["set_has_field_bit_message"] = GenerateSetBit(messageBitIndex); + + (*variables)["get_has_field_bit_builder"] = GenerateGetBit(builderBitIndex); + (*variables)["set_has_field_bit_builder"] = GenerateSetBit(builderBitIndex); + (*variables)["clear_has_field_bit_builder"] = + GenerateClearBit(builderBitIndex); + + // For repated builders, one bit is used for whether the array is immutable. + (*variables)["get_mutable_bit_builder"] = GenerateGetBit(builderBitIndex); + (*variables)["set_mutable_bit_builder"] = GenerateSetBit(builderBitIndex); + (*variables)["clear_mutable_bit_builder"] = GenerateClearBit(builderBitIndex); + + // For repeated fields, one bit is used for whether the array is immutable + // in the parsing constructor. + (*variables)["get_mutable_bit_parser"] = + GenerateGetBitMutableLocal(builderBitIndex); + (*variables)["set_mutable_bit_parser"] = + GenerateSetBitMutableLocal(builderBitIndex); + + (*variables)["get_has_field_bit_from_local"] = + GenerateGetBitFromLocal(builderBitIndex); + (*variables)["set_has_field_bit_to_local"] = + GenerateSetBitToLocal(messageBitIndex); +} + +} // namespace + +// =================================================================== + +MessageFieldGenerator:: +MessageFieldGenerator(const FieldDescriptor* descriptor, + int messageBitIndex, + int builderBitIndex) + : descriptor_(descriptor), messageBitIndex_(messageBitIndex), + builderBitIndex_(builderBitIndex) { + SetMessageVariables(descriptor, messageBitIndex, builderBitIndex, + &variables_); +} + +MessageFieldGenerator::~MessageFieldGenerator() {} + +int MessageFieldGenerator::GetNumBitsForMessage() const { + return 1; +} + +int MessageFieldGenerator::GetNumBitsForBuilder() const { + return 1; +} + +void MessageFieldGenerator:: +GenerateInterfaceMembers(io::Printer* printer) const { + // TODO(jonp): In the future, consider having a method specific to the + // interface so that builders can choose dynamically to either return a + // message or a nested builder, so that asking for the interface doesn't + // cause a message to ever be built. + WriteFieldDocComment(printer, descriptor_); + printer->Print(variables_, + "$deprecation$boolean has$capitalized_name$();\n"); + WriteFieldDocComment(printer, descriptor_); + printer->Print(variables_, + "$deprecation$$type$ get$capitalized_name$();\n"); + + if (HasNestedBuilders(descriptor_->containing_type())) { + WriteFieldDocComment(printer, descriptor_); + printer->Print(variables_, + "$deprecation$$type$OrBuilder get$capitalized_name$OrBuilder();\n"); + } +} + +void MessageFieldGenerator:: +GenerateMembers(io::Printer* printer) const { + printer->Print(variables_, + "private $type$ $name$_;\n"); + WriteFieldDocComment(printer, descriptor_); + printer->Print(variables_, + "$deprecation$public boolean has$capitalized_name$() {\n" + " return $get_has_field_bit_message$;\n" + "}\n"); + WriteFieldDocComment(printer, descriptor_); + printer->Print(variables_, + "$deprecation$public $type$ get$capitalized_name$() {\n" + " return $name$_;\n" + "}\n"); + + if (HasNestedBuilders(descriptor_->containing_type())) { + WriteFieldDocComment(printer, descriptor_); + printer->Print(variables_, + "$deprecation$public $type$OrBuilder get$capitalized_name$OrBuilder() {\n" + " return $name$_;\n" + "}\n"); + } +} + +void MessageFieldGenerator::PrintNestedBuilderCondition( + io::Printer* printer, + const char* regular_case, + const char* nested_builder_case) const { + if (HasNestedBuilders(descriptor_->containing_type())) { + printer->Print(variables_, "if ($name$Builder_ == null) {\n"); + printer->Indent(); + printer->Print(variables_, regular_case); + printer->Outdent(); + printer->Print("} else {\n"); + printer->Indent(); + printer->Print(variables_, nested_builder_case); + printer->Outdent(); + printer->Print("}\n"); + } else { + printer->Print(variables_, regular_case); + } +} + +void MessageFieldGenerator::PrintNestedBuilderFunction( + io::Printer* printer, + const char* method_prototype, + const char* regular_case, + const char* nested_builder_case, + const char* trailing_code) const { + printer->Print(variables_, method_prototype); + printer->Print(" {\n"); + printer->Indent(); + PrintNestedBuilderCondition(printer, regular_case, nested_builder_case); + if (trailing_code != NULL) { + printer->Print(variables_, trailing_code); + } + printer->Outdent(); + printer->Print("}\n"); +} + +void MessageFieldGenerator:: +GenerateBuilderMembers(io::Printer* printer) const { + // When using nested-builders, the code initially works just like the + // non-nested builder case. It only creates a nested builder lazily on + // demand and then forever delegates to it after creation. + + printer->Print(variables_, + // Used when the builder is null. + "private $type$ $name$_ = $type$.getDefaultInstance();\n"); + + if (HasNestedBuilders(descriptor_->containing_type())) { + printer->Print(variables_, + // If this builder is non-null, it is used and the other fields are + // ignored. + "private com.google.protobuf.SingleFieldBuilder<\n" + " $type$, $type$.Builder, $type$OrBuilder> $name$Builder_;" + "\n"); + } + + // The comments above the methods below are based on a hypothetical + // field of type "Field" called "Field". + + // boolean hasField() + WriteFieldDocComment(printer, descriptor_); + printer->Print(variables_, + "$deprecation$public boolean has$capitalized_name$() {\n" + " return $get_has_field_bit_builder$;\n" + "}\n"); + + // Field getField() + WriteFieldDocComment(printer, descriptor_); + PrintNestedBuilderFunction(printer, + "$deprecation$public $type$ get$capitalized_name$()", + + "return $name$_;\n", + + "return $name$Builder_.getMessage();\n", + + NULL); + + // Field.Builder setField(Field value) + WriteFieldDocComment(printer, descriptor_); + PrintNestedBuilderFunction(printer, + "$deprecation$public Builder set$capitalized_name$($type$ value)", + + "if (value == null) {\n" + " throw new NullPointerException();\n" + "}\n" + "$name$_ = value;\n" + "$on_changed$\n", + + "$name$Builder_.setMessage(value);\n", + + "$set_has_field_bit_builder$;\n" + "return this;\n"); + + // Field.Builder setField(Field.Builder builderForValue) + WriteFieldDocComment(printer, descriptor_); + PrintNestedBuilderFunction(printer, + "$deprecation$public Builder set$capitalized_name$(\n" + " $type$.Builder builderForValue)", + + "$name$_ = builderForValue.build();\n" + "$on_changed$\n", + + "$name$Builder_.setMessage(builderForValue.build());\n", + + "$set_has_field_bit_builder$;\n" + "return this;\n"); + + // Field.Builder mergeField(Field value) + WriteFieldDocComment(printer, descriptor_); + PrintNestedBuilderFunction(printer, + "$deprecation$public Builder merge$capitalized_name$($type$ value)", + + "if ($get_has_field_bit_builder$ &&\n" + " $name$_ != $type$.getDefaultInstance()) {\n" + " $name$_ =\n" + " $type$.newBuilder($name$_).mergeFrom(value).buildPartial();\n" + "} else {\n" + " $name$_ = value;\n" + "}\n" + "$on_changed$\n", + + "$name$Builder_.mergeFrom(value);\n", + + "$set_has_field_bit_builder$;\n" + "return this;\n"); + + // Field.Builder clearField() + WriteFieldDocComment(printer, descriptor_); + PrintNestedBuilderFunction(printer, + "$deprecation$public Builder clear$capitalized_name$()", + + "$name$_ = $type$.getDefaultInstance();\n" + "$on_changed$\n", + + "$name$Builder_.clear();\n", + + "$clear_has_field_bit_builder$;\n" + "return this;\n"); + + if (HasNestedBuilders(descriptor_->containing_type())) { + WriteFieldDocComment(printer, descriptor_); + printer->Print(variables_, + "$deprecation$public $type$.Builder get$capitalized_name$Builder() {\n" + " $set_has_field_bit_builder$;\n" + " $on_changed$\n" + " return get$capitalized_name$FieldBuilder().getBuilder();\n" + "}\n"); + WriteFieldDocComment(printer, descriptor_); + printer->Print(variables_, + "$deprecation$public $type$OrBuilder get$capitalized_name$OrBuilder() {\n" + " if ($name$Builder_ != null) {\n" + " return $name$Builder_.getMessageOrBuilder();\n" + " } else {\n" + " return $name$_;\n" + " }\n" + "}\n"); + WriteFieldDocComment(printer, descriptor_); + printer->Print(variables_, + "private com.google.protobuf.SingleFieldBuilder<\n" + " $type$, $type$.Builder, $type$OrBuilder> \n" + " get$capitalized_name$FieldBuilder() {\n" + " if ($name$Builder_ == null) {\n" + " $name$Builder_ = new com.google.protobuf.SingleFieldBuilder<\n" + " $type$, $type$.Builder, $type$OrBuilder>(\n" + " $name$_,\n" + " getParentForChildren(),\n" + " isClean());\n" + " $name$_ = null;\n" + " }\n" + " return $name$Builder_;\n" + "}\n"); + } +} + +void MessageFieldGenerator:: +GenerateFieldBuilderInitializationCode(io::Printer* printer) const { + printer->Print(variables_, + "get$capitalized_name$FieldBuilder();\n"); +} + + +void MessageFieldGenerator:: +GenerateInitializationCode(io::Printer* printer) const { + printer->Print(variables_, "$name$_ = $type$.getDefaultInstance();\n"); +} + +void MessageFieldGenerator:: +GenerateBuilderClearCode(io::Printer* printer) const { + PrintNestedBuilderCondition(printer, + "$name$_ = $type$.getDefaultInstance();\n", + + "$name$Builder_.clear();\n"); + printer->Print(variables_, "$clear_has_field_bit_builder$;\n"); +} + +void MessageFieldGenerator:: +GenerateMergingCode(io::Printer* printer) const { + printer->Print(variables_, + "if (other.has$capitalized_name$()) {\n" + " merge$capitalized_name$(other.get$capitalized_name$());\n" + "}\n"); +} + +void MessageFieldGenerator:: +GenerateBuildingCode(io::Printer* printer) const { + + printer->Print(variables_, + "if ($get_has_field_bit_from_local$) {\n" + " $set_has_field_bit_to_local$;\n" + "}\n"); + + PrintNestedBuilderCondition(printer, + "result.$name$_ = $name$_;\n", + + "result.$name$_ = $name$Builder_.build();\n"); +} + +void MessageFieldGenerator:: +GenerateParsingCode(io::Printer* printer) const { + printer->Print(variables_, + "$type$.Builder subBuilder = null;\n" + "if ($get_has_field_bit_message$) {\n" + " subBuilder = $name$_.toBuilder();\n" + "}\n"); + + if (GetType(descriptor_) == FieldDescriptor::TYPE_GROUP) { + printer->Print(variables_, + "$name$_ = input.readGroup($number$, $type$.PARSER,\n" + " extensionRegistry);\n"); + } else { + printer->Print(variables_, + "$name$_ = input.readMessage($type$.PARSER, extensionRegistry);\n"); + } + + printer->Print(variables_, + "if (subBuilder != null) {\n" + " subBuilder.mergeFrom($name$_);\n" + " $name$_ = subBuilder.buildPartial();\n" + "}\n"); + printer->Print(variables_, + "$set_has_field_bit_message$;\n"); +} + +void MessageFieldGenerator:: +GenerateParsingDoneCode(io::Printer* printer) const { + // noop for messages. +} + +void MessageFieldGenerator:: +GenerateSerializationCode(io::Printer* printer) const { + printer->Print(variables_, + "if ($get_has_field_bit_message$) {\n" + " output.write$group_or_message$($number$, $name$_);\n" + "}\n"); +} + +void MessageFieldGenerator:: +GenerateSerializedSizeCode(io::Printer* printer) const { + printer->Print(variables_, + "if ($get_has_field_bit_message$) {\n" + " size += com.google.protobuf.CodedOutputStream\n" + " .compute$group_or_message$Size($number$, $name$_);\n" + "}\n"); +} + +void MessageFieldGenerator:: +GenerateEqualsCode(io::Printer* printer) const { + printer->Print(variables_, + "result = result && get$capitalized_name$()\n" + " .equals(other.get$capitalized_name$());\n"); +} + +void MessageFieldGenerator:: +GenerateHashCode(io::Printer* printer) const { + printer->Print(variables_, + "hash = (37 * hash) + $constant_name$;\n" + "hash = (53 * hash) + get$capitalized_name$().hashCode();\n"); +} + +string MessageFieldGenerator::GetBoxedType() const { + return ClassName(descriptor_->message_type()); +} + +// =================================================================== + +RepeatedMessageFieldGenerator:: +RepeatedMessageFieldGenerator(const FieldDescriptor* descriptor, + int messageBitIndex, + int builderBitIndex) + : descriptor_(descriptor), messageBitIndex_(messageBitIndex), + builderBitIndex_(builderBitIndex) { + SetMessageVariables(descriptor, messageBitIndex, builderBitIndex, + &variables_); +} + +RepeatedMessageFieldGenerator::~RepeatedMessageFieldGenerator() {} + +int RepeatedMessageFieldGenerator::GetNumBitsForMessage() const { + return 0; +} + +int RepeatedMessageFieldGenerator::GetNumBitsForBuilder() const { + return 1; +} + +void RepeatedMessageFieldGenerator:: +GenerateInterfaceMembers(io::Printer* printer) const { + // TODO(jonp): In the future, consider having methods specific to the + // interface so that builders can choose dynamically to either return a + // message or a nested builder, so that asking for the interface doesn't + // cause a message to ever be built. + WriteFieldDocComment(printer, descriptor_); + printer->Print(variables_, + "$deprecation$java.util.List<$type$> \n" + " get$capitalized_name$List();\n"); + WriteFieldDocComment(printer, descriptor_); + printer->Print(variables_, + "$deprecation$$type$ get$capitalized_name$(int index);\n"); + WriteFieldDocComment(printer, descriptor_); + printer->Print(variables_, + "$deprecation$int get$capitalized_name$Count();\n"); + if (HasNestedBuilders(descriptor_->containing_type())) { + WriteFieldDocComment(printer, descriptor_); + printer->Print(variables_, + "$deprecation$java.util.List \n" + " get$capitalized_name$OrBuilderList();\n"); + WriteFieldDocComment(printer, descriptor_); + printer->Print(variables_, + "$deprecation$$type$OrBuilder get$capitalized_name$OrBuilder(\n" + " int index);\n"); + } +} + +void RepeatedMessageFieldGenerator:: +GenerateMembers(io::Printer* printer) const { + printer->Print(variables_, + "private java.util.List<$type$> $name$_;\n"); + WriteFieldDocComment(printer, descriptor_); + printer->Print(variables_, + "$deprecation$public java.util.List<$type$> get$capitalized_name$List() {\n" + " return $name$_;\n" // note: unmodifiable list + "}\n"); + WriteFieldDocComment(printer, descriptor_); + printer->Print(variables_, + "$deprecation$public java.util.List \n" + " get$capitalized_name$OrBuilderList() {\n" + " return $name$_;\n" + "}\n"); + WriteFieldDocComment(printer, descriptor_); + printer->Print(variables_, + "$deprecation$public int get$capitalized_name$Count() {\n" + " return $name$_.size();\n" + "}\n"); + WriteFieldDocComment(printer, descriptor_); + printer->Print(variables_, + "$deprecation$public $type$ get$capitalized_name$(int index) {\n" + " return $name$_.get(index);\n" + "}\n"); + WriteFieldDocComment(printer, descriptor_); + printer->Print(variables_, + "$deprecation$public $type$OrBuilder get$capitalized_name$OrBuilder(\n" + " int index) {\n" + " return $name$_.get(index);\n" + "}\n"); + +} + +void RepeatedMessageFieldGenerator::PrintNestedBuilderCondition( + io::Printer* printer, + const char* regular_case, + const char* nested_builder_case) const { + if (HasNestedBuilders(descriptor_->containing_type())) { + printer->Print(variables_, "if ($name$Builder_ == null) {\n"); + printer->Indent(); + printer->Print(variables_, regular_case); + printer->Outdent(); + printer->Print("} else {\n"); + printer->Indent(); + printer->Print(variables_, nested_builder_case); + printer->Outdent(); + printer->Print("}\n"); + } else { + printer->Print(variables_, regular_case); + } +} + +void RepeatedMessageFieldGenerator::PrintNestedBuilderFunction( + io::Printer* printer, + const char* method_prototype, + const char* regular_case, + const char* nested_builder_case, + const char* trailing_code) const { + printer->Print(variables_, method_prototype); + printer->Print(" {\n"); + printer->Indent(); + PrintNestedBuilderCondition(printer, regular_case, nested_builder_case); + if (trailing_code != NULL) { + printer->Print(variables_, trailing_code); + } + printer->Outdent(); + printer->Print("}\n"); +} + +void RepeatedMessageFieldGenerator:: +GenerateBuilderMembers(io::Printer* printer) const { + // When using nested-builders, the code initially works just like the + // non-nested builder case. It only creates a nested builder lazily on + // demand and then forever delegates to it after creation. + + printer->Print(variables_, + // Used when the builder is null. + // One field is the list and the other field keeps track of whether the + // list is immutable. If it's immutable, the invariant is that it must + // either an instance of Collections.emptyList() or it's an ArrayList + // wrapped in a Collections.unmodifiableList() wrapper and nobody else has + // a refererence to the underlying ArrayList. This invariant allows us to + // share instances of lists between protocol buffers avoiding expensive + // memory allocations. Note, immutable is a strong guarantee here -- not + // just that the list cannot be modified via the reference but that the + // list can never be modified. + "private java.util.List<$type$> $name$_ =\n" + " java.util.Collections.emptyList();\n" + + "private void ensure$capitalized_name$IsMutable() {\n" + " if (!$get_mutable_bit_builder$) {\n" + " $name$_ = new java.util.ArrayList<$type$>($name$_);\n" + " $set_mutable_bit_builder$;\n" + " }\n" + "}\n" + "\n"); + + if (HasNestedBuilders(descriptor_->containing_type())) { + printer->Print(variables_, + // If this builder is non-null, it is used and the other fields are + // ignored. + "private com.google.protobuf.RepeatedFieldBuilder<\n" + " $type$, $type$.Builder, $type$OrBuilder> $name$Builder_;\n" + "\n"); + } + + // The comments above the methods below are based on a hypothetical + // repeated field of type "Field" called "RepeatedField". + + // List getRepeatedFieldList() + WriteFieldDocComment(printer, descriptor_); + PrintNestedBuilderFunction(printer, + "$deprecation$public java.util.List<$type$> get$capitalized_name$List()", + + "return java.util.Collections.unmodifiableList($name$_);\n", + "return $name$Builder_.getMessageList();\n", + + NULL); + + // int getRepeatedFieldCount() + WriteFieldDocComment(printer, descriptor_); + PrintNestedBuilderFunction(printer, + "$deprecation$public int get$capitalized_name$Count()", + + "return $name$_.size();\n", + "return $name$Builder_.getCount();\n", + + NULL); + + // Field getRepeatedField(int index) + WriteFieldDocComment(printer, descriptor_); + PrintNestedBuilderFunction(printer, + "$deprecation$public $type$ get$capitalized_name$(int index)", + + "return $name$_.get(index);\n", + + "return $name$Builder_.getMessage(index);\n", + + NULL); + + // Builder setRepeatedField(int index, Field value) + WriteFieldDocComment(printer, descriptor_); + PrintNestedBuilderFunction(printer, + "$deprecation$public Builder set$capitalized_name$(\n" + " int index, $type$ value)", + "if (value == null) {\n" + " throw new NullPointerException();\n" + "}\n" + "ensure$capitalized_name$IsMutable();\n" + "$name$_.set(index, value);\n" + "$on_changed$\n", + "$name$Builder_.setMessage(index, value);\n", + "return this;\n"); + + // Builder setRepeatedField(int index, Field.Builder builderForValue) + WriteFieldDocComment(printer, descriptor_); + PrintNestedBuilderFunction(printer, + "$deprecation$public Builder set$capitalized_name$(\n" + " int index, $type$.Builder builderForValue)", + + "ensure$capitalized_name$IsMutable();\n" + "$name$_.set(index, builderForValue.build());\n" + "$on_changed$\n", + + "$name$Builder_.setMessage(index, builderForValue.build());\n", + + "return this;\n"); + + // Builder addRepeatedField(Field value) + WriteFieldDocComment(printer, descriptor_); + PrintNestedBuilderFunction(printer, + "$deprecation$public Builder add$capitalized_name$($type$ value)", + + "if (value == null) {\n" + " throw new NullPointerException();\n" + "}\n" + "ensure$capitalized_name$IsMutable();\n" + "$name$_.add(value);\n" + + "$on_changed$\n", + + "$name$Builder_.addMessage(value);\n", + + "return this;\n"); + + // Builder addRepeatedField(int index, Field value) + WriteFieldDocComment(printer, descriptor_); + PrintNestedBuilderFunction(printer, + "$deprecation$public Builder add$capitalized_name$(\n" + " int index, $type$ value)", + + "if (value == null) {\n" + " throw new NullPointerException();\n" + "}\n" + "ensure$capitalized_name$IsMutable();\n" + "$name$_.add(index, value);\n" + "$on_changed$\n", + + "$name$Builder_.addMessage(index, value);\n", + + "return this;\n"); + + // Builder addRepeatedField(Field.Builder builderForValue) + WriteFieldDocComment(printer, descriptor_); + PrintNestedBuilderFunction(printer, + "$deprecation$public Builder add$capitalized_name$(\n" + " $type$.Builder builderForValue)", + + "ensure$capitalized_name$IsMutable();\n" + "$name$_.add(builderForValue.build());\n" + "$on_changed$\n", + + "$name$Builder_.addMessage(builderForValue.build());\n", + + "return this;\n"); + + // Builder addRepeatedField(int index, Field.Builder builderForValue) + WriteFieldDocComment(printer, descriptor_); + PrintNestedBuilderFunction(printer, + "$deprecation$public Builder add$capitalized_name$(\n" + " int index, $type$.Builder builderForValue)", + + "ensure$capitalized_name$IsMutable();\n" + "$name$_.add(index, builderForValue.build());\n" + "$on_changed$\n", + + "$name$Builder_.addMessage(index, builderForValue.build());\n", + + "return this;\n"); + + // Builder addAllRepeatedField(Iterable values) + WriteFieldDocComment(printer, descriptor_); + PrintNestedBuilderFunction(printer, + "$deprecation$public Builder addAll$capitalized_name$(\n" + " java.lang.Iterable values)", + + "ensure$capitalized_name$IsMutable();\n" + "super.addAll(values, $name$_);\n" + "$on_changed$\n", + + "$name$Builder_.addAllMessages(values);\n", + + "return this;\n"); + + // Builder clearAllRepeatedField() + WriteFieldDocComment(printer, descriptor_); + PrintNestedBuilderFunction(printer, + "$deprecation$public Builder clear$capitalized_name$()", + + "$name$_ = java.util.Collections.emptyList();\n" + "$clear_mutable_bit_builder$;\n" + "$on_changed$\n", + + "$name$Builder_.clear();\n", + + "return this;\n"); + + // Builder removeRepeatedField(int index) + WriteFieldDocComment(printer, descriptor_); + PrintNestedBuilderFunction(printer, + "$deprecation$public Builder remove$capitalized_name$(int index)", + + "ensure$capitalized_name$IsMutable();\n" + "$name$_.remove(index);\n" + "$on_changed$\n", + + "$name$Builder_.remove(index);\n", + + "return this;\n"); + + if (HasNestedBuilders(descriptor_->containing_type())) { + WriteFieldDocComment(printer, descriptor_); + printer->Print(variables_, + "$deprecation$public $type$.Builder get$capitalized_name$Builder(\n" + " int index) {\n" + " return get$capitalized_name$FieldBuilder().getBuilder(index);\n" + "}\n"); + + WriteFieldDocComment(printer, descriptor_); + printer->Print(variables_, + "$deprecation$public $type$OrBuilder get$capitalized_name$OrBuilder(\n" + " int index) {\n" + " if ($name$Builder_ == null) {\n" + " return $name$_.get(index);" + " } else {\n" + " return $name$Builder_.getMessageOrBuilder(index);\n" + " }\n" + "}\n"); + + WriteFieldDocComment(printer, descriptor_); + printer->Print(variables_, + "$deprecation$public java.util.List \n" + " get$capitalized_name$OrBuilderList() {\n" + " if ($name$Builder_ != null) {\n" + " return $name$Builder_.getMessageOrBuilderList();\n" + " } else {\n" + " return java.util.Collections.unmodifiableList($name$_);\n" + " }\n" + "}\n"); + + WriteFieldDocComment(printer, descriptor_); + printer->Print(variables_, + "$deprecation$public $type$.Builder add$capitalized_name$Builder() {\n" + " return get$capitalized_name$FieldBuilder().addBuilder(\n" + " $type$.getDefaultInstance());\n" + "}\n"); + WriteFieldDocComment(printer, descriptor_); + printer->Print(variables_, + "$deprecation$public $type$.Builder add$capitalized_name$Builder(\n" + " int index) {\n" + " return get$capitalized_name$FieldBuilder().addBuilder(\n" + " index, $type$.getDefaultInstance());\n" + "}\n"); + WriteFieldDocComment(printer, descriptor_); + printer->Print(variables_, + "$deprecation$public java.util.List<$type$.Builder> \n" + " get$capitalized_name$BuilderList() {\n" + " return get$capitalized_name$FieldBuilder().getBuilderList();\n" + "}\n" + "private com.google.protobuf.RepeatedFieldBuilder<\n" + " $type$, $type$.Builder, $type$OrBuilder> \n" + " get$capitalized_name$FieldBuilder() {\n" + " if ($name$Builder_ == null) {\n" + " $name$Builder_ = new com.google.protobuf.RepeatedFieldBuilder<\n" + " $type$, $type$.Builder, $type$OrBuilder>(\n" + " $name$_,\n" + " $get_mutable_bit_builder$,\n" + " getParentForChildren(),\n" + " isClean());\n" + " $name$_ = null;\n" + " }\n" + " return $name$Builder_;\n" + "}\n"); + } +} + +void RepeatedMessageFieldGenerator:: +GenerateFieldBuilderInitializationCode(io::Printer* printer) const { + printer->Print(variables_, + "get$capitalized_name$FieldBuilder();\n"); +} + +void RepeatedMessageFieldGenerator:: +GenerateInitializationCode(io::Printer* printer) const { + printer->Print(variables_, "$name$_ = java.util.Collections.emptyList();\n"); +} + +void RepeatedMessageFieldGenerator:: +GenerateBuilderClearCode(io::Printer* printer) const { + PrintNestedBuilderCondition(printer, + "$name$_ = java.util.Collections.emptyList();\n" + "$clear_mutable_bit_builder$;\n", + + "$name$Builder_.clear();\n"); +} + +void RepeatedMessageFieldGenerator:: +GenerateMergingCode(io::Printer* printer) const { + // The code below does two optimizations (non-nested builder case): + // 1. If the other list is empty, there's nothing to do. This ensures we + // don't allocate a new array if we already have an immutable one. + // 2. If the other list is non-empty and our current list is empty, we can + // reuse the other list which is guaranteed to be immutable. + PrintNestedBuilderCondition(printer, + "if (!other.$name$_.isEmpty()) {\n" + " if ($name$_.isEmpty()) {\n" + " $name$_ = other.$name$_;\n" + " $clear_mutable_bit_builder$;\n" + " } else {\n" + " ensure$capitalized_name$IsMutable();\n" + " $name$_.addAll(other.$name$_);\n" + " }\n" + " $on_changed$\n" + "}\n", + + "if (!other.$name$_.isEmpty()) {\n" + " if ($name$Builder_.isEmpty()) {\n" + " $name$Builder_.dispose();\n" + " $name$Builder_ = null;\n" + " $name$_ = other.$name$_;\n" + " $clear_mutable_bit_builder$;\n" + " $name$Builder_ = \n" + " com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?\n" + " get$capitalized_name$FieldBuilder() : null;\n" + " } else {\n" + " $name$Builder_.addAllMessages(other.$name$_);\n" + " }\n" + "}\n"); +} + +void RepeatedMessageFieldGenerator:: +GenerateBuildingCode(io::Printer* printer) const { + // The code below (non-nested builder case) ensures that the result has an + // immutable list. If our list is immutable, we can just reuse it. If not, + // we make it immutable. + PrintNestedBuilderCondition(printer, + "if ($get_mutable_bit_builder$) {\n" + " $name$_ = java.util.Collections.unmodifiableList($name$_);\n" + " $clear_mutable_bit_builder$;\n" + "}\n" + "result.$name$_ = $name$_;\n", + + "result.$name$_ = $name$Builder_.build();\n"); +} + +void RepeatedMessageFieldGenerator:: +GenerateParsingCode(io::Printer* printer) const { + printer->Print(variables_, + "if (!$get_mutable_bit_parser$) {\n" + " $name$_ = new java.util.ArrayList<$type$>();\n" + " $set_mutable_bit_parser$;\n" + "}\n"); + + if (GetType(descriptor_) == FieldDescriptor::TYPE_GROUP) { + printer->Print(variables_, + "$name$_.add(input.readGroup($number$, $type$.PARSER,\n" + " extensionRegistry));\n"); + } else { + printer->Print(variables_, + "$name$_.add(input.readMessage($type$.PARSER, extensionRegistry));\n"); + } +} + +void RepeatedMessageFieldGenerator:: +GenerateParsingDoneCode(io::Printer* printer) const { + printer->Print(variables_, + "if ($get_mutable_bit_parser$) {\n" + " $name$_ = java.util.Collections.unmodifiableList($name$_);\n" + "}\n"); +} + +void RepeatedMessageFieldGenerator:: +GenerateSerializationCode(io::Printer* printer) const { + printer->Print(variables_, + "for (int i = 0; i < $name$_.size(); i++) {\n" + " output.write$group_or_message$($number$, $name$_.get(i));\n" + "}\n"); +} + +void RepeatedMessageFieldGenerator:: +GenerateSerializedSizeCode(io::Printer* printer) const { + printer->Print(variables_, + "for (int i = 0; i < $name$_.size(); i++) {\n" + " size += com.google.protobuf.CodedOutputStream\n" + " .compute$group_or_message$Size($number$, $name$_.get(i));\n" + "}\n"); +} + +void RepeatedMessageFieldGenerator:: +GenerateEqualsCode(io::Printer* printer) const { + printer->Print(variables_, + "result = result && get$capitalized_name$List()\n" + " .equals(other.get$capitalized_name$List());\n"); +} + +void RepeatedMessageFieldGenerator:: +GenerateHashCode(io::Printer* printer) const { + printer->Print(variables_, + "if (get$capitalized_name$Count() > 0) {\n" + " hash = (37 * hash) + $constant_name$;\n" + " hash = (53 * hash) + get$capitalized_name$List().hashCode();\n" + "}\n"); +} + +string RepeatedMessageFieldGenerator::GetBoxedType() const { + return ClassName(descriptor_->message_type()); +} + +} // namespace java +} // namespace compiler +} // namespace protobuf +} // namespace google diff --git a/cpp/thirdparty/protobuf-2.3.0/src/google/protobuf/compiler/java/java_message_field.h b/cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/compiler/java/java_message_field.h similarity index 69% rename from cpp/thirdparty/protobuf-2.3.0/src/google/protobuf/compiler/java/java_message_field.h rename to cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/compiler/java/java_message_field.h index 66bdd8840..5c8078a15 100644 --- a/cpp/thirdparty/protobuf-2.3.0/src/google/protobuf/compiler/java/java_message_field.h +++ b/cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/compiler/java/java_message_field.h @@ -46,50 +46,86 @@ namespace java { class MessageFieldGenerator : public FieldGenerator { public: - explicit MessageFieldGenerator(const FieldDescriptor* descriptor); + explicit MessageFieldGenerator(const FieldDescriptor* descriptor, + int messageBitIndex, int builderBitIndex); ~MessageFieldGenerator(); // implements FieldGenerator --------------------------------------- + int GetNumBitsForMessage() const; + int GetNumBitsForBuilder() const; + void GenerateInterfaceMembers(io::Printer* printer) const; void GenerateMembers(io::Printer* printer) const; void GenerateBuilderMembers(io::Printer* printer) const; void GenerateInitializationCode(io::Printer* printer) const; + void GenerateBuilderClearCode(io::Printer* printer) const; void GenerateMergingCode(io::Printer* printer) const; void GenerateBuildingCode(io::Printer* printer) const; void GenerateParsingCode(io::Printer* printer) const; + void GenerateParsingDoneCode(io::Printer* printer) const; void GenerateSerializationCode(io::Printer* printer) const; void GenerateSerializedSizeCode(io::Printer* printer) const; + void GenerateFieldBuilderInitializationCode(io::Printer* printer) const; + void GenerateEqualsCode(io::Printer* printer) const; + void GenerateHashCode(io::Printer* printer) const; string GetBoxedType() const; private: const FieldDescriptor* descriptor_; map variables_; + const int messageBitIndex_; + const int builderBitIndex_; GOOGLE_DISALLOW_EVIL_CONSTRUCTORS(MessageFieldGenerator); + + void PrintNestedBuilderCondition(io::Printer* printer, + const char* regular_case, const char* nested_builder_case) const; + void PrintNestedBuilderFunction(io::Printer* printer, + const char* method_prototype, const char* regular_case, + const char* nested_builder_case, + const char* trailing_code) const; }; class RepeatedMessageFieldGenerator : public FieldGenerator { public: - explicit RepeatedMessageFieldGenerator(const FieldDescriptor* descriptor); + explicit RepeatedMessageFieldGenerator(const FieldDescriptor* descriptor, + int messageBitIndex, int builderBitIndex); ~RepeatedMessageFieldGenerator(); // implements FieldGenerator --------------------------------------- + int GetNumBitsForMessage() const; + int GetNumBitsForBuilder() const; + void GenerateInterfaceMembers(io::Printer* printer) const; void GenerateMembers(io::Printer* printer) const; void GenerateBuilderMembers(io::Printer* printer) const; void GenerateInitializationCode(io::Printer* printer) const; + void GenerateBuilderClearCode(io::Printer* printer) const; void GenerateMergingCode(io::Printer* printer) const; void GenerateBuildingCode(io::Printer* printer) const; void GenerateParsingCode(io::Printer* printer) const; + void GenerateParsingDoneCode(io::Printer* printer) const; void GenerateSerializationCode(io::Printer* printer) const; void GenerateSerializedSizeCode(io::Printer* printer) const; + void GenerateFieldBuilderInitializationCode(io::Printer* printer) const; + void GenerateEqualsCode(io::Printer* printer) const; + void GenerateHashCode(io::Printer* printer) const; string GetBoxedType() const; private: const FieldDescriptor* descriptor_; map variables_; + const int messageBitIndex_; + const int builderBitIndex_; GOOGLE_DISALLOW_EVIL_CONSTRUCTORS(RepeatedMessageFieldGenerator); + + void PrintNestedBuilderCondition(io::Printer* printer, + const char* regular_case, const char* nested_builder_case) const; + void PrintNestedBuilderFunction(io::Printer* printer, + const char* method_prototype, const char* regular_case, + const char* nested_builder_case, + const char* trailing_code) const; }; } // namespace java diff --git a/cpp/thirdparty/protobuf-2.3.0/src/google/protobuf/compiler/java/java_plugin_unittest.cc b/cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/compiler/java/java_plugin_unittest.cc similarity index 86% rename from cpp/thirdparty/protobuf-2.3.0/src/google/protobuf/compiler/java/java_plugin_unittest.cc rename to cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/compiler/java/java_plugin_unittest.cc index cfe01885f..ccc94c9df 100644 --- a/cpp/thirdparty/protobuf-2.3.0/src/google/protobuf/compiler/java/java_plugin_unittest.cc +++ b/cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/compiler/java/java_plugin_unittest.cc @@ -56,21 +56,22 @@ class TestGenerator : public CodeGenerator { virtual bool Generate(const FileDescriptor* file, const string& parameter, - OutputDirectory* output_directory, + GeneratorContext* context, string* error) const { - TryInsert("Test.java", "outer_class_scope", output_directory); - TryInsert("Test.java", "class_scope:foo.Bar", output_directory); - TryInsert("Test.java", "class_scope:foo.Bar.Baz", output_directory); - TryInsert("Test.java", "builder_scope:foo.Bar", output_directory); - TryInsert("Test.java", "builder_scope:foo.Bar.Baz", output_directory); - TryInsert("Test.java", "enum_scope:foo.Qux", output_directory); + string filename = "Test.java"; + TryInsert(filename, "outer_class_scope", context); + TryInsert(filename, "class_scope:foo.Bar", context); + TryInsert(filename, "class_scope:foo.Bar.Baz", context); + TryInsert(filename, "builder_scope:foo.Bar", context); + TryInsert(filename, "builder_scope:foo.Bar.Baz", context); + TryInsert(filename, "enum_scope:foo.Qux", context); return true; } void TryInsert(const string& filename, const string& insertion_point, - OutputDirectory* output_directory) const { + GeneratorContext* context) const { scoped_ptr output( - output_directory->OpenForInsert(filename, insertion_point)); + context->OpenForInsert(filename, insertion_point)); io::Printer printer(output.get(), '$'); printer.Print("// inserted $name$\n", "name", insertion_point); } diff --git a/cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/compiler/java/java_primitive_field.cc b/cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/compiler/java/java_primitive_field.cc new file mode 100644 index 000000000..0140e23f8 --- /dev/null +++ b/cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/compiler/java/java_primitive_field.cc @@ -0,0 +1,787 @@ +// Protocol Buffers - Google's data interchange format +// Copyright 2008 Google Inc. All rights reserved. +// http://code.google.com/p/protobuf/ +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +// Author: kenton@google.com (Kenton Varda) +// Based on original Protocol Buffers design by +// Sanjay Ghemawat, Jeff Dean, and others. + +#include +#include + +#include +#include +#include +#include +#include +#include +#include + +namespace google { +namespace protobuf { +namespace compiler { +namespace java { + +using internal::WireFormat; +using internal::WireFormatLite; + +namespace { + +const char* PrimitiveTypeName(JavaType type) { + switch (type) { + case JAVATYPE_INT : return "int"; + case JAVATYPE_LONG : return "long"; + case JAVATYPE_FLOAT : return "float"; + case JAVATYPE_DOUBLE : return "double"; + case JAVATYPE_BOOLEAN: return "boolean"; + case JAVATYPE_STRING : return "java.lang.String"; + case JAVATYPE_BYTES : return "com.google.protobuf.ByteString"; + case JAVATYPE_ENUM : return NULL; + case JAVATYPE_MESSAGE: return NULL; + + // No default because we want the compiler to complain if any new + // JavaTypes are added. + } + + GOOGLE_LOG(FATAL) << "Can't get here."; + return NULL; +} + +bool IsReferenceType(JavaType type) { + switch (type) { + case JAVATYPE_INT : return false; + case JAVATYPE_LONG : return false; + case JAVATYPE_FLOAT : return false; + case JAVATYPE_DOUBLE : return false; + case JAVATYPE_BOOLEAN: return false; + case JAVATYPE_STRING : return true; + case JAVATYPE_BYTES : return true; + case JAVATYPE_ENUM : return true; + case JAVATYPE_MESSAGE: return true; + + // No default because we want the compiler to complain if any new + // JavaTypes are added. + } + + GOOGLE_LOG(FATAL) << "Can't get here."; + return false; +} + +const char* GetCapitalizedType(const FieldDescriptor* field) { + switch (GetType(field)) { + case FieldDescriptor::TYPE_INT32 : return "Int32" ; + case FieldDescriptor::TYPE_UINT32 : return "UInt32" ; + case FieldDescriptor::TYPE_SINT32 : return "SInt32" ; + case FieldDescriptor::TYPE_FIXED32 : return "Fixed32" ; + case FieldDescriptor::TYPE_SFIXED32: return "SFixed32"; + case FieldDescriptor::TYPE_INT64 : return "Int64" ; + case FieldDescriptor::TYPE_UINT64 : return "UInt64" ; + case FieldDescriptor::TYPE_SINT64 : return "SInt64" ; + case FieldDescriptor::TYPE_FIXED64 : return "Fixed64" ; + case FieldDescriptor::TYPE_SFIXED64: return "SFixed64"; + case FieldDescriptor::TYPE_FLOAT : return "Float" ; + case FieldDescriptor::TYPE_DOUBLE : return "Double" ; + case FieldDescriptor::TYPE_BOOL : return "Bool" ; + case FieldDescriptor::TYPE_STRING : return "String" ; + case FieldDescriptor::TYPE_BYTES : return "Bytes" ; + case FieldDescriptor::TYPE_ENUM : return "Enum" ; + case FieldDescriptor::TYPE_GROUP : return "Group" ; + case FieldDescriptor::TYPE_MESSAGE : return "Message" ; + + // No default because we want the compiler to complain if any new + // types are added. + } + + GOOGLE_LOG(FATAL) << "Can't get here."; + return NULL; +} + +// For encodings with fixed sizes, returns that size in bytes. Otherwise +// returns -1. +int FixedSize(FieldDescriptor::Type type) { + switch (type) { + case FieldDescriptor::TYPE_INT32 : return -1; + case FieldDescriptor::TYPE_INT64 : return -1; + case FieldDescriptor::TYPE_UINT32 : return -1; + case FieldDescriptor::TYPE_UINT64 : return -1; + case FieldDescriptor::TYPE_SINT32 : return -1; + case FieldDescriptor::TYPE_SINT64 : return -1; + case FieldDescriptor::TYPE_FIXED32 : return WireFormatLite::kFixed32Size; + case FieldDescriptor::TYPE_FIXED64 : return WireFormatLite::kFixed64Size; + case FieldDescriptor::TYPE_SFIXED32: return WireFormatLite::kSFixed32Size; + case FieldDescriptor::TYPE_SFIXED64: return WireFormatLite::kSFixed64Size; + case FieldDescriptor::TYPE_FLOAT : return WireFormatLite::kFloatSize; + case FieldDescriptor::TYPE_DOUBLE : return WireFormatLite::kDoubleSize; + + case FieldDescriptor::TYPE_BOOL : return WireFormatLite::kBoolSize; + case FieldDescriptor::TYPE_ENUM : return -1; + + case FieldDescriptor::TYPE_STRING : return -1; + case FieldDescriptor::TYPE_BYTES : return -1; + case FieldDescriptor::TYPE_GROUP : return -1; + case FieldDescriptor::TYPE_MESSAGE : return -1; + + // No default because we want the compiler to complain if any new + // types are added. + } + GOOGLE_LOG(FATAL) << "Can't get here."; + return -1; +} + +void SetPrimitiveVariables(const FieldDescriptor* descriptor, + int messageBitIndex, + int builderBitIndex, + map* variables) { + (*variables)["name"] = + UnderscoresToCamelCase(descriptor); + (*variables)["capitalized_name"] = + UnderscoresToCapitalizedCamelCase(descriptor); + (*variables)["constant_name"] = FieldConstantName(descriptor); + (*variables)["number"] = SimpleItoa(descriptor->number()); + (*variables)["type"] = PrimitiveTypeName(GetJavaType(descriptor)); + (*variables)["boxed_type"] = BoxedPrimitiveTypeName(GetJavaType(descriptor)); + (*variables)["field_type"] = (*variables)["type"]; + (*variables)["field_list_type"] = "java.util.List<" + + (*variables)["boxed_type"] + ">"; + (*variables)["empty_list"] = "java.util.Collections.emptyList()"; + (*variables)["default"] = DefaultValue(descriptor); + (*variables)["default_init"] = IsDefaultValueJavaDefault(descriptor) ? + "" : ("= " + DefaultValue(descriptor)); + (*variables)["capitalized_type"] = GetCapitalizedType(descriptor); + (*variables)["tag"] = SimpleItoa(WireFormat::MakeTag(descriptor)); + (*variables)["tag_size"] = SimpleItoa( + WireFormat::TagSize(descriptor->number(), GetType(descriptor))); + if (IsReferenceType(GetJavaType(descriptor))) { + (*variables)["null_check"] = + " if (value == null) {\n" + " throw new NullPointerException();\n" + " }\n"; + } else { + (*variables)["null_check"] = ""; + } + // TODO(birdo): Add @deprecated javadoc when generating javadoc is supported + // by the proto compiler + (*variables)["deprecation"] = descriptor->options().deprecated() + ? "@java.lang.Deprecated " : ""; + int fixed_size = FixedSize(GetType(descriptor)); + if (fixed_size != -1) { + (*variables)["fixed_size"] = SimpleItoa(fixed_size); + } + (*variables)["on_changed"] = + HasDescriptorMethods(descriptor->containing_type()) ? "onChanged();" : ""; + + // For singular messages and builders, one bit is used for the hasField bit. + (*variables)["get_has_field_bit_message"] = GenerateGetBit(messageBitIndex); + (*variables)["set_has_field_bit_message"] = GenerateSetBit(messageBitIndex); + + (*variables)["get_has_field_bit_builder"] = GenerateGetBit(builderBitIndex); + (*variables)["set_has_field_bit_builder"] = GenerateSetBit(builderBitIndex); + (*variables)["clear_has_field_bit_builder"] = + GenerateClearBit(builderBitIndex); + + // For repated builders, one bit is used for whether the array is immutable. + (*variables)["get_mutable_bit_builder"] = GenerateGetBit(builderBitIndex); + (*variables)["set_mutable_bit_builder"] = GenerateSetBit(builderBitIndex); + (*variables)["clear_mutable_bit_builder"] = GenerateClearBit(builderBitIndex); + + // For repeated fields, one bit is used for whether the array is immutable + // in the parsing constructor. + (*variables)["get_mutable_bit_parser"] = + GenerateGetBitMutableLocal(builderBitIndex); + (*variables)["set_mutable_bit_parser"] = + GenerateSetBitMutableLocal(builderBitIndex); + + (*variables)["get_has_field_bit_from_local"] = + GenerateGetBitFromLocal(builderBitIndex); + (*variables)["set_has_field_bit_to_local"] = + GenerateSetBitToLocal(messageBitIndex); +} + +} // namespace + +// =================================================================== + +PrimitiveFieldGenerator:: +PrimitiveFieldGenerator(const FieldDescriptor* descriptor, + int messageBitIndex, + int builderBitIndex) + : descriptor_(descriptor), messageBitIndex_(messageBitIndex), + builderBitIndex_(builderBitIndex) { + SetPrimitiveVariables(descriptor, messageBitIndex, builderBitIndex, + &variables_); +} + +PrimitiveFieldGenerator::~PrimitiveFieldGenerator() {} + +int PrimitiveFieldGenerator::GetNumBitsForMessage() const { + return 1; +} + +int PrimitiveFieldGenerator::GetNumBitsForBuilder() const { + return 1; +} + +void PrimitiveFieldGenerator:: +GenerateInterfaceMembers(io::Printer* printer) const { + WriteFieldDocComment(printer, descriptor_); + printer->Print(variables_, + "$deprecation$boolean has$capitalized_name$();\n"); + WriteFieldDocComment(printer, descriptor_); + printer->Print(variables_, + "$deprecation$$type$ get$capitalized_name$();\n"); +} + +void PrimitiveFieldGenerator:: +GenerateMembers(io::Printer* printer) const { + printer->Print(variables_, + "private $field_type$ $name$_;\n"); + + WriteFieldDocComment(printer, descriptor_); + printer->Print(variables_, + "$deprecation$public boolean has$capitalized_name$() {\n" + " return $get_has_field_bit_message$;\n" + "}\n"); + + WriteFieldDocComment(printer, descriptor_); + printer->Print(variables_, + "$deprecation$public $type$ get$capitalized_name$() {\n" + " return $name$_;\n" + "}\n"); +} + +void PrimitiveFieldGenerator:: +GenerateBuilderMembers(io::Printer* printer) const { + printer->Print(variables_, + "private $field_type$ $name$_ $default_init$;\n"); + + WriteFieldDocComment(printer, descriptor_); + printer->Print(variables_, + "$deprecation$public boolean has$capitalized_name$() {\n" + " return $get_has_field_bit_builder$;\n" + "}\n"); + + WriteFieldDocComment(printer, descriptor_); + printer->Print(variables_, + "$deprecation$public $type$ get$capitalized_name$() {\n" + " return $name$_;\n" + "}\n"); + + WriteFieldDocComment(printer, descriptor_); + printer->Print(variables_, + "$deprecation$public Builder set$capitalized_name$($type$ value) {\n" + "$null_check$" + " $set_has_field_bit_builder$;\n" + " $name$_ = value;\n" + " $on_changed$\n" + " return this;\n" + "}\n"); + + WriteFieldDocComment(printer, descriptor_); + printer->Print(variables_, + "$deprecation$public Builder clear$capitalized_name$() {\n" + " $clear_has_field_bit_builder$;\n"); + JavaType type = GetJavaType(descriptor_); + if (type == JAVATYPE_STRING || type == JAVATYPE_BYTES) { + // The default value is not a simple literal so we want to avoid executing + // it multiple times. Instead, get the default out of the default instance. + printer->Print(variables_, + " $name$_ = getDefaultInstance().get$capitalized_name$();\n"); + } else { + printer->Print(variables_, + " $name$_ = $default$;\n"); + } + printer->Print(variables_, + " $on_changed$\n" + " return this;\n" + "}\n"); +} + +void PrimitiveFieldGenerator:: +GenerateFieldBuilderInitializationCode(io::Printer* printer) const { + // noop for primitives +} + +void PrimitiveFieldGenerator:: +GenerateInitializationCode(io::Printer* printer) const { + printer->Print(variables_, "$name$_ = $default$;\n"); +} + +void PrimitiveFieldGenerator:: +GenerateBuilderClearCode(io::Printer* printer) const { + printer->Print(variables_, + "$name$_ = $default$;\n" + "$clear_has_field_bit_builder$;\n"); +} + +void PrimitiveFieldGenerator:: +GenerateMergingCode(io::Printer* printer) const { + printer->Print(variables_, + "if (other.has$capitalized_name$()) {\n" + " set$capitalized_name$(other.get$capitalized_name$());\n" + "}\n"); +} + +void PrimitiveFieldGenerator:: +GenerateBuildingCode(io::Printer* printer) const { + printer->Print(variables_, + "if ($get_has_field_bit_from_local$) {\n" + " $set_has_field_bit_to_local$;\n" + "}\n" + "result.$name$_ = $name$_;\n"); +} + +void PrimitiveFieldGenerator:: +GenerateParsingCode(io::Printer* printer) const { + printer->Print(variables_, + "$set_has_field_bit_message$;\n" + "$name$_ = input.read$capitalized_type$();\n"); +} + +void PrimitiveFieldGenerator:: +GenerateParsingDoneCode(io::Printer* printer) const { + // noop for primitives. +} + +void PrimitiveFieldGenerator:: +GenerateSerializationCode(io::Printer* printer) const { + printer->Print(variables_, + "if ($get_has_field_bit_message$) {\n" + " output.write$capitalized_type$($number$, $name$_);\n" + "}\n"); +} + +void PrimitiveFieldGenerator:: +GenerateSerializedSizeCode(io::Printer* printer) const { + printer->Print(variables_, + "if ($get_has_field_bit_message$) {\n" + " size += com.google.protobuf.CodedOutputStream\n" + " .compute$capitalized_type$Size($number$, $name$_);\n" + "}\n"); +} + +void PrimitiveFieldGenerator:: +GenerateEqualsCode(io::Printer* printer) const { + switch (GetJavaType(descriptor_)) { + case JAVATYPE_INT: + case JAVATYPE_LONG: + case JAVATYPE_BOOLEAN: + printer->Print(variables_, + "result = result && (get$capitalized_name$()\n" + " == other.get$capitalized_name$());\n"); + break; + + case JAVATYPE_FLOAT: + printer->Print(variables_, + "result = result && (Float.floatToIntBits(get$capitalized_name$())" + " == Float.floatToIntBits(other.get$capitalized_name$()));\n"); + break; + + case JAVATYPE_DOUBLE: + printer->Print(variables_, + "result = result && (Double.doubleToLongBits(get$capitalized_name$())" + " == Double.doubleToLongBits(other.get$capitalized_name$()));\n"); + break; + + case JAVATYPE_STRING: + case JAVATYPE_BYTES: + printer->Print(variables_, + "result = result && get$capitalized_name$()\n" + " .equals(other.get$capitalized_name$());\n"); + break; + + case JAVATYPE_ENUM: + case JAVATYPE_MESSAGE: + default: + GOOGLE_LOG(FATAL) << "Can't get here."; + break; + } +} + +void PrimitiveFieldGenerator:: +GenerateHashCode(io::Printer* printer) const { + printer->Print(variables_, + "hash = (37 * hash) + $constant_name$;\n"); + switch (GetJavaType(descriptor_)) { + case JAVATYPE_INT: + printer->Print(variables_, + "hash = (53 * hash) + get$capitalized_name$();\n"); + break; + + case JAVATYPE_LONG: + printer->Print(variables_, + "hash = (53 * hash) + hashLong(get$capitalized_name$());\n"); + break; + + case JAVATYPE_BOOLEAN: + printer->Print(variables_, + "hash = (53 * hash) + hashBoolean(get$capitalized_name$());\n"); + break; + + case JAVATYPE_FLOAT: + printer->Print(variables_, + "hash = (53 * hash) + Float.floatToIntBits(\n" + " get$capitalized_name$());\n"); + break; + + case JAVATYPE_DOUBLE: + printer->Print(variables_, + "hash = (53 * hash) + hashLong(\n" + " Double.doubleToLongBits(get$capitalized_name$()));\n"); + break; + + case JAVATYPE_STRING: + case JAVATYPE_BYTES: + printer->Print(variables_, + "hash = (53 * hash) + get$capitalized_name$().hashCode();\n"); + break; + + case JAVATYPE_ENUM: + case JAVATYPE_MESSAGE: + default: + GOOGLE_LOG(FATAL) << "Can't get here."; + break; + } +} + +string PrimitiveFieldGenerator::GetBoxedType() const { + return BoxedPrimitiveTypeName(GetJavaType(descriptor_)); +} + +// =================================================================== + +RepeatedPrimitiveFieldGenerator:: +RepeatedPrimitiveFieldGenerator(const FieldDescriptor* descriptor, + int messageBitIndex, + int builderBitIndex) + : descriptor_(descriptor), messageBitIndex_(messageBitIndex), + builderBitIndex_(builderBitIndex) { + SetPrimitiveVariables(descriptor, messageBitIndex, builderBitIndex, + &variables_); +} + +RepeatedPrimitiveFieldGenerator::~RepeatedPrimitiveFieldGenerator() {} + +int RepeatedPrimitiveFieldGenerator::GetNumBitsForMessage() const { + return 0; +} + +int RepeatedPrimitiveFieldGenerator::GetNumBitsForBuilder() const { + return 1; +} + +void RepeatedPrimitiveFieldGenerator:: +GenerateInterfaceMembers(io::Printer* printer) const { + WriteFieldDocComment(printer, descriptor_); + printer->Print(variables_, + "$deprecation$java.util.List<$boxed_type$> get$capitalized_name$List();\n"); + WriteFieldDocComment(printer, descriptor_); + printer->Print(variables_, + "$deprecation$int get$capitalized_name$Count();\n"); + WriteFieldDocComment(printer, descriptor_); + printer->Print(variables_, + "$deprecation$$type$ get$capitalized_name$(int index);\n"); +} + + +void RepeatedPrimitiveFieldGenerator:: +GenerateMembers(io::Printer* printer) const { + printer->Print(variables_, + "private $field_list_type$ $name$_;\n"); + WriteFieldDocComment(printer, descriptor_); + printer->Print(variables_, + "$deprecation$public java.util.List<$boxed_type$>\n" + " get$capitalized_name$List() {\n" + " return $name$_;\n" // note: unmodifiable list + "}\n"); + WriteFieldDocComment(printer, descriptor_); + printer->Print(variables_, + "$deprecation$public int get$capitalized_name$Count() {\n" + " return $name$_.size();\n" + "}\n"); + WriteFieldDocComment(printer, descriptor_); + printer->Print(variables_, + "$deprecation$public $type$ get$capitalized_name$(int index) {\n" + " return $name$_.get(index);\n" + "}\n"); + + if (descriptor_->options().packed() && + HasGeneratedMethods(descriptor_->containing_type())) { + printer->Print(variables_, + "private int $name$MemoizedSerializedSize = -1;\n"); + } +} + +void RepeatedPrimitiveFieldGenerator:: +GenerateBuilderMembers(io::Printer* printer) const { + // One field is the list and the bit field keeps track of whether the + // list is immutable. If it's immutable, the invariant is that it must + // either an instance of Collections.emptyList() or it's an ArrayList + // wrapped in a Collections.unmodifiableList() wrapper and nobody else has + // a refererence to the underlying ArrayList. This invariant allows us to + // share instances of lists between protocol buffers avoiding expensive + // memory allocations. Note, immutable is a strong guarantee here -- not + // just that the list cannot be modified via the reference but that the + // list can never be modified. + printer->Print(variables_, + "private $field_list_type$ $name$_ = $empty_list$;\n"); + + printer->Print(variables_, + "private void ensure$capitalized_name$IsMutable() {\n" + " if (!$get_mutable_bit_builder$) {\n" + " $name$_ = new java.util.ArrayList<$boxed_type$>($name$_);\n" + " $set_mutable_bit_builder$;\n" + " }\n" + "}\n"); + + // Note: We return an unmodifiable list because otherwise the caller + // could hold on to the returned list and modify it after the message + // has been built, thus mutating the message which is supposed to be + // immutable. + WriteFieldDocComment(printer, descriptor_); + printer->Print(variables_, + "$deprecation$public java.util.List<$boxed_type$>\n" + " get$capitalized_name$List() {\n" + " return java.util.Collections.unmodifiableList($name$_);\n" + "}\n"); + WriteFieldDocComment(printer, descriptor_); + printer->Print(variables_, + "$deprecation$public int get$capitalized_name$Count() {\n" + " return $name$_.size();\n" + "}\n"); + WriteFieldDocComment(printer, descriptor_); + printer->Print(variables_, + "$deprecation$public $type$ get$capitalized_name$(int index) {\n" + " return $name$_.get(index);\n" + "}\n"); + WriteFieldDocComment(printer, descriptor_); + printer->Print(variables_, + "$deprecation$public Builder set$capitalized_name$(\n" + " int index, $type$ value) {\n" + "$null_check$" + " ensure$capitalized_name$IsMutable();\n" + " $name$_.set(index, value);\n" + " $on_changed$\n" + " return this;\n" + "}\n"); + WriteFieldDocComment(printer, descriptor_); + printer->Print(variables_, + "$deprecation$public Builder add$capitalized_name$($type$ value) {\n" + "$null_check$" + " ensure$capitalized_name$IsMutable();\n" + " $name$_.add(value);\n" + " $on_changed$\n" + " return this;\n" + "}\n"); + WriteFieldDocComment(printer, descriptor_); + printer->Print(variables_, + "$deprecation$public Builder addAll$capitalized_name$(\n" + " java.lang.Iterable values) {\n" + " ensure$capitalized_name$IsMutable();\n" + " super.addAll(values, $name$_);\n" + " $on_changed$\n" + " return this;\n" + "}\n"); + WriteFieldDocComment(printer, descriptor_); + printer->Print(variables_, + "$deprecation$public Builder clear$capitalized_name$() {\n" + " $name$_ = $empty_list$;\n" + " $clear_mutable_bit_builder$;\n" + " $on_changed$\n" + " return this;\n" + "}\n"); +} + +void RepeatedPrimitiveFieldGenerator:: +GenerateFieldBuilderInitializationCode(io::Printer* printer) const { + // noop for primitives +} + +void RepeatedPrimitiveFieldGenerator:: +GenerateInitializationCode(io::Printer* printer) const { + printer->Print(variables_, "$name$_ = $empty_list$;\n"); +} + +void RepeatedPrimitiveFieldGenerator:: +GenerateBuilderClearCode(io::Printer* printer) const { + printer->Print(variables_, + "$name$_ = $empty_list$;\n" + "$clear_mutable_bit_builder$;\n"); +} + +void RepeatedPrimitiveFieldGenerator:: +GenerateMergingCode(io::Printer* printer) const { + // The code below does two optimizations: + // 1. If the other list is empty, there's nothing to do. This ensures we + // don't allocate a new array if we already have an immutable one. + // 2. If the other list is non-empty and our current list is empty, we can + // reuse the other list which is guaranteed to be immutable. + printer->Print(variables_, + "if (!other.$name$_.isEmpty()) {\n" + " if ($name$_.isEmpty()) {\n" + " $name$_ = other.$name$_;\n" + " $clear_mutable_bit_builder$;\n" + " } else {\n" + " ensure$capitalized_name$IsMutable();\n" + " $name$_.addAll(other.$name$_);\n" + " }\n" + " $on_changed$\n" + "}\n"); +} + +void RepeatedPrimitiveFieldGenerator:: +GenerateBuildingCode(io::Printer* printer) const { + // The code below ensures that the result has an immutable list. If our + // list is immutable, we can just reuse it. If not, we make it immutable. + printer->Print(variables_, + "if ($get_mutable_bit_builder$) {\n" + " $name$_ = java.util.Collections.unmodifiableList($name$_);\n" + " $clear_mutable_bit_builder$;\n" + "}\n" + "result.$name$_ = $name$_;\n"); +} + +void RepeatedPrimitiveFieldGenerator:: +GenerateParsingCode(io::Printer* printer) const { + printer->Print(variables_, + "if (!$get_mutable_bit_parser$) {\n" + " $name$_ = new java.util.ArrayList<$boxed_type$>();\n" + " $set_mutable_bit_parser$;\n" + "}\n" + "$name$_.add(input.read$capitalized_type$());\n"); +} + +void RepeatedPrimitiveFieldGenerator:: +GenerateParsingCodeFromPacked(io::Printer* printer) const { + printer->Print(variables_, + "int length = input.readRawVarint32();\n" + "int limit = input.pushLimit(length);\n" + "if (!$get_mutable_bit_parser$ && input.getBytesUntilLimit() > 0) {\n" + " $name$_ = new java.util.ArrayList<$boxed_type$>();\n" + " $set_mutable_bit_parser$;\n" + "}\n" + "while (input.getBytesUntilLimit() > 0) {\n" + " $name$_.add(input.read$capitalized_type$());\n" + "}\n" + "input.popLimit(limit);\n"); +} + +void RepeatedPrimitiveFieldGenerator:: +GenerateParsingDoneCode(io::Printer* printer) const { + printer->Print(variables_, + "if ($get_mutable_bit_parser$) {\n" + " $name$_ = java.util.Collections.unmodifiableList($name$_);\n" + "}\n"); +} + +void RepeatedPrimitiveFieldGenerator:: +GenerateSerializationCode(io::Printer* printer) const { + if (descriptor_->options().packed()) { + printer->Print(variables_, + "if (get$capitalized_name$List().size() > 0) {\n" + " output.writeRawVarint32($tag$);\n" + " output.writeRawVarint32($name$MemoizedSerializedSize);\n" + "}\n" + "for (int i = 0; i < $name$_.size(); i++) {\n" + " output.write$capitalized_type$NoTag($name$_.get(i));\n" + "}\n"); + } else { + printer->Print(variables_, + "for (int i = 0; i < $name$_.size(); i++) {\n" + " output.write$capitalized_type$($number$, $name$_.get(i));\n" + "}\n"); + } +} + +void RepeatedPrimitiveFieldGenerator:: +GenerateSerializedSizeCode(io::Printer* printer) const { + printer->Print(variables_, + "{\n" + " int dataSize = 0;\n"); + printer->Indent(); + + if (FixedSize(GetType(descriptor_)) == -1) { + printer->Print(variables_, + "for (int i = 0; i < $name$_.size(); i++) {\n" + " dataSize += com.google.protobuf.CodedOutputStream\n" + " .compute$capitalized_type$SizeNoTag($name$_.get(i));\n" + "}\n"); + } else { + printer->Print(variables_, + "dataSize = $fixed_size$ * get$capitalized_name$List().size();\n"); + } + + printer->Print( + "size += dataSize;\n"); + + if (descriptor_->options().packed()) { + printer->Print(variables_, + "if (!get$capitalized_name$List().isEmpty()) {\n" + " size += $tag_size$;\n" + " size += com.google.protobuf.CodedOutputStream\n" + " .computeInt32SizeNoTag(dataSize);\n" + "}\n"); + } else { + printer->Print(variables_, + "size += $tag_size$ * get$capitalized_name$List().size();\n"); + } + + // cache the data size for packed fields. + if (descriptor_->options().packed()) { + printer->Print(variables_, + "$name$MemoizedSerializedSize = dataSize;\n"); + } + + printer->Outdent(); + printer->Print("}\n"); +} + +void RepeatedPrimitiveFieldGenerator:: +GenerateEqualsCode(io::Printer* printer) const { + printer->Print(variables_, + "result = result && get$capitalized_name$List()\n" + " .equals(other.get$capitalized_name$List());\n"); +} + +void RepeatedPrimitiveFieldGenerator:: +GenerateHashCode(io::Printer* printer) const { + printer->Print(variables_, + "if (get$capitalized_name$Count() > 0) {\n" + " hash = (37 * hash) + $constant_name$;\n" + " hash = (53 * hash) + get$capitalized_name$List().hashCode();\n" + "}\n"); +} + +string RepeatedPrimitiveFieldGenerator::GetBoxedType() const { + return BoxedPrimitiveTypeName(GetJavaType(descriptor_)); +} + +} // namespace java +} // namespace compiler +} // namespace protobuf +} // namespace google diff --git a/cpp/thirdparty/protobuf-2.3.0/src/google/protobuf/compiler/java/java_primitive_field.h b/cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/compiler/java/java_primitive_field.h similarity index 78% rename from cpp/thirdparty/protobuf-2.3.0/src/google/protobuf/compiler/java/java_primitive_field.h rename to cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/compiler/java/java_primitive_field.h index 4e482a05a..1b5b6d95d 100644 --- a/cpp/thirdparty/protobuf-2.3.0/src/google/protobuf/compiler/java/java_primitive_field.h +++ b/cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/compiler/java/java_primitive_field.h @@ -46,49 +46,71 @@ namespace java { class PrimitiveFieldGenerator : public FieldGenerator { public: - explicit PrimitiveFieldGenerator(const FieldDescriptor* descriptor); + explicit PrimitiveFieldGenerator(const FieldDescriptor* descriptor, + int messageBitIndex, int builderBitIndex); ~PrimitiveFieldGenerator(); // implements FieldGenerator --------------------------------------- + int GetNumBitsForMessage() const; + int GetNumBitsForBuilder() const; + void GenerateInterfaceMembers(io::Printer* printer) const; void GenerateMembers(io::Printer* printer) const; void GenerateBuilderMembers(io::Printer* printer) const; void GenerateInitializationCode(io::Printer* printer) const; + void GenerateBuilderClearCode(io::Printer* printer) const; void GenerateMergingCode(io::Printer* printer) const; void GenerateBuildingCode(io::Printer* printer) const; void GenerateParsingCode(io::Printer* printer) const; + void GenerateParsingDoneCode(io::Printer* printer) const; void GenerateSerializationCode(io::Printer* printer) const; void GenerateSerializedSizeCode(io::Printer* printer) const; + void GenerateFieldBuilderInitializationCode(io::Printer* printer) const; + void GenerateEqualsCode(io::Printer* printer) const; + void GenerateHashCode(io::Printer* printer) const; string GetBoxedType() const; private: const FieldDescriptor* descriptor_; map variables_; + const int messageBitIndex_; + const int builderBitIndex_; GOOGLE_DISALLOW_EVIL_CONSTRUCTORS(PrimitiveFieldGenerator); }; class RepeatedPrimitiveFieldGenerator : public FieldGenerator { public: - explicit RepeatedPrimitiveFieldGenerator(const FieldDescriptor* descriptor); + explicit RepeatedPrimitiveFieldGenerator(const FieldDescriptor* descriptor, + int messageBitIndex, int builderBitIndex); ~RepeatedPrimitiveFieldGenerator(); // implements FieldGenerator --------------------------------------- + int GetNumBitsForMessage() const; + int GetNumBitsForBuilder() const; + void GenerateInterfaceMembers(io::Printer* printer) const; void GenerateMembers(io::Printer* printer) const; void GenerateBuilderMembers(io::Printer* printer) const; void GenerateInitializationCode(io::Printer* printer) const; + void GenerateBuilderClearCode(io::Printer* printer) const; void GenerateMergingCode(io::Printer* printer) const; void GenerateBuildingCode(io::Printer* printer) const; void GenerateParsingCode(io::Printer* printer) const; void GenerateParsingCodeFromPacked(io::Printer* printer) const; + void GenerateParsingDoneCode(io::Printer* printer) const; void GenerateSerializationCode(io::Printer* printer) const; void GenerateSerializedSizeCode(io::Printer* printer) const; + void GenerateFieldBuilderInitializationCode(io::Printer* printer) const; + void GenerateEqualsCode(io::Printer* printer) const; + void GenerateHashCode(io::Printer* printer) const; string GetBoxedType() const; private: const FieldDescriptor* descriptor_; map variables_; + const int messageBitIndex_; + const int builderBitIndex_; GOOGLE_DISALLOW_EVIL_CONSTRUCTORS(RepeatedPrimitiveFieldGenerator); }; diff --git a/cpp/thirdparty/protobuf-2.3.0/src/google/protobuf/compiler/java/java_service.cc b/cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/compiler/java/java_service.cc similarity index 97% rename from cpp/thirdparty/protobuf-2.3.0/src/google/protobuf/compiler/java/java_service.cc rename to cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/compiler/java/java_service.cc index 5545bf7f4..bcd803590 100644 --- a/cpp/thirdparty/protobuf-2.3.0/src/google/protobuf/compiler/java/java_service.cc +++ b/cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/compiler/java/java_service.cc @@ -33,6 +33,7 @@ // Sanjay Ghemawat, Jeff Dean, and others. #include +#include #include #include #include @@ -50,6 +51,7 @@ ServiceGenerator::~ServiceGenerator() {} void ServiceGenerator::Generate(io::Printer* printer) { bool is_own_file = descriptor_->file()->options().java_multiple_files(); + WriteServiceDocComment(printer, descriptor_); printer->Print( "public $static$ abstract class $classname$\n" " implements com.google.protobuf.Service {\n", @@ -86,6 +88,12 @@ void ServiceGenerator::Generate(io::Printer* printer) { GenerateStub(printer); GenerateBlockingStub(printer); + // Add an insertion point. + printer->Print( + "\n" + "// @@protoc_insertion_point(class_scope:$full_name$)\n", + "full_name", descriptor_->full_name()); + printer->Outdent(); printer->Print("}\n\n"); } @@ -118,7 +126,7 @@ void ServiceGenerator::GenerateNewReflectiveServiceMethod( for (int i = 0; i < descriptor_->method_count(); i++) { const MethodDescriptor* method = descriptor_->method(i); - printer->Print("@Override\n"); + printer->Print("@java.lang.Override\n"); GenerateMethodSignature(printer, method, IS_CONCRETE); printer->Print( " {\n" @@ -157,6 +165,7 @@ void ServiceGenerator::GenerateNewReflectiveBlockingServiceMethod( void ServiceGenerator::GenerateAbstractMethods(io::Printer* printer) { for (int i = 0; i < descriptor_->method_count(); i++) { const MethodDescriptor* method = descriptor_->method(i); + WriteMethodDocComment(printer, method); GenerateMethodSignature(printer, method, IS_ABSTRACT); printer->Print(";\n\n"); } diff --git a/cpp/thirdparty/protobuf-2.3.0/src/google/protobuf/compiler/java/java_service.h b/cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/compiler/java/java_service.h similarity index 100% rename from cpp/thirdparty/protobuf-2.3.0/src/google/protobuf/compiler/java/java_service.h rename to cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/compiler/java/java_service.h diff --git a/cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/compiler/java/java_string_field.cc b/cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/compiler/java/java_string_field.cc new file mode 100644 index 000000000..4815663b1 --- /dev/null +++ b/cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/compiler/java/java_string_field.cc @@ -0,0 +1,726 @@ +// Protocol Buffers - Google's data interchange format +// Copyright 2008 Google Inc. All rights reserved. +// http://code.google.com/p/protobuf/ +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +// Author: kenton@google.com (Kenton Varda) +// Author: jonp@google.com (Jon Perlow) +// Based on original Protocol Buffers design by +// Sanjay Ghemawat, Jeff Dean, and others. + +#include +#include + +#include +#include +#include +#include +#include +#include +#include + +namespace google { +namespace protobuf { +namespace compiler { +namespace java { + +using internal::WireFormat; +using internal::WireFormatLite; + +namespace { + +void SetPrimitiveVariables(const FieldDescriptor* descriptor, + int messageBitIndex, + int builderBitIndex, + map* variables) { + (*variables)["name"] = + UnderscoresToCamelCase(descriptor); + (*variables)["capitalized_name"] = + UnderscoresToCapitalizedCamelCase(descriptor); + (*variables)["constant_name"] = FieldConstantName(descriptor); + (*variables)["number"] = SimpleItoa(descriptor->number()); + (*variables)["empty_list"] = "com.google.protobuf.LazyStringArrayList.EMPTY"; + + (*variables)["default"] = DefaultValue(descriptor); + (*variables)["default_init"] = ("= " + DefaultValue(descriptor)); + (*variables)["capitalized_type"] = "String"; + (*variables)["tag"] = SimpleItoa(WireFormat::MakeTag(descriptor)); + (*variables)["tag_size"] = SimpleItoa( + WireFormat::TagSize(descriptor->number(), GetType(descriptor))); + (*variables)["null_check"] = + " if (value == null) {\n" + " throw new NullPointerException();\n" + " }\n"; + + // TODO(birdo): Add @deprecated javadoc when generating javadoc is supported + // by the proto compiler + (*variables)["deprecation"] = descriptor->options().deprecated() + ? "@java.lang.Deprecated " : ""; + (*variables)["on_changed"] = + HasDescriptorMethods(descriptor->containing_type()) ? "onChanged();" : ""; + + // For singular messages and builders, one bit is used for the hasField bit. + (*variables)["get_has_field_bit_message"] = GenerateGetBit(messageBitIndex); + (*variables)["set_has_field_bit_message"] = GenerateSetBit(messageBitIndex); + + (*variables)["get_has_field_bit_builder"] = GenerateGetBit(builderBitIndex); + (*variables)["set_has_field_bit_builder"] = GenerateSetBit(builderBitIndex); + (*variables)["clear_has_field_bit_builder"] = + GenerateClearBit(builderBitIndex); + + // For repated builders, one bit is used for whether the array is immutable. + (*variables)["get_mutable_bit_builder"] = GenerateGetBit(builderBitIndex); + (*variables)["set_mutable_bit_builder"] = GenerateSetBit(builderBitIndex); + (*variables)["clear_mutable_bit_builder"] = GenerateClearBit(builderBitIndex); + + // For repeated fields, one bit is used for whether the array is immutable + // in the parsing constructor. + (*variables)["get_mutable_bit_parser"] = + GenerateGetBitMutableLocal(builderBitIndex); + (*variables)["set_mutable_bit_parser"] = + GenerateSetBitMutableLocal(builderBitIndex); + + (*variables)["get_has_field_bit_from_local"] = + GenerateGetBitFromLocal(builderBitIndex); + (*variables)["set_has_field_bit_to_local"] = + GenerateSetBitToLocal(messageBitIndex); +} + +} // namespace + +// =================================================================== + +StringFieldGenerator:: +StringFieldGenerator(const FieldDescriptor* descriptor, + int messageBitIndex, + int builderBitIndex) + : descriptor_(descriptor), messageBitIndex_(messageBitIndex), + builderBitIndex_(builderBitIndex) { + SetPrimitiveVariables(descriptor, messageBitIndex, builderBitIndex, + &variables_); +} + +StringFieldGenerator::~StringFieldGenerator() {} + +int StringFieldGenerator::GetNumBitsForMessage() const { + return 1; +} + +int StringFieldGenerator::GetNumBitsForBuilder() const { + return 1; +} + +// A note about how strings are handled. This code used to just store a String +// in the Message. This had two issues: +// +// 1. It wouldn't roundtrip byte arrays that were not vaid UTF-8 encoded +// strings, but rather fields that were raw bytes incorrectly marked +// as strings in the proto file. This is common because in the proto1 +// syntax, string was the way to indicate bytes and C++ engineers can +// easily make this mistake without affecting the C++ API. By converting to +// strings immediately, some java code might corrupt these byte arrays as +// it passes through a java server even if the field was never accessed by +// application code. +// +// 2. There's a performance hit to converting between bytes and strings and +// it many cases, the field is never even read by the application code. This +// avoids unnecessary conversions in the common use cases. +// +// So now, the field for String is maintained as an Object reference which can +// either store a String or a ByteString. The code uses an instanceof check +// to see which one it has and converts to the other one if needed. It remembers +// the last value requested (in a thread safe manner) as this is most likely +// the one needed next. The thread safety is such that if two threads both +// convert the field because the changes made by each thread were not visible to +// the other, they may cause a conversion to happen more times than would +// otherwise be necessary. This was deemed better than adding synchronization +// overhead. It will not cause any corruption issues or affect the behavior of +// the API. The instanceof check is also highly optimized in the JVM and we +// decided it was better to reduce the memory overhead by not having two +// separate fields but rather use dynamic type checking. +// +// For single fields, the logic for this is done inside the generated code. For +// repeated fields, the logic is done in LazyStringArrayList and +// UnmodifiableLazyStringList. +void StringFieldGenerator:: +GenerateInterfaceMembers(io::Printer* printer) const { + WriteFieldDocComment(printer, descriptor_); + printer->Print(variables_, + "$deprecation$boolean has$capitalized_name$();\n"); + WriteFieldDocComment(printer, descriptor_); + printer->Print(variables_, + "$deprecation$java.lang.String get$capitalized_name$();\n"); + WriteFieldDocComment(printer, descriptor_); + printer->Print(variables_, + "$deprecation$com.google.protobuf.ByteString\n" + " get$capitalized_name$Bytes();\n"); +} + +void StringFieldGenerator:: +GenerateMembers(io::Printer* printer) const { + printer->Print(variables_, + "private java.lang.Object $name$_;\n"); + WriteFieldDocComment(printer, descriptor_); + printer->Print(variables_, + "$deprecation$public boolean has$capitalized_name$() {\n" + " return $get_has_field_bit_message$;\n" + "}\n"); + + WriteFieldDocComment(printer, descriptor_); + printer->Print(variables_, + "$deprecation$public java.lang.String get$capitalized_name$() {\n" + " java.lang.Object ref = $name$_;\n" + " if (ref instanceof java.lang.String) {\n" + " return (java.lang.String) ref;\n" + " } else {\n" + " com.google.protobuf.ByteString bs = \n" + " (com.google.protobuf.ByteString) ref;\n" + " java.lang.String s = bs.toStringUtf8();\n" + " if (bs.isValidUtf8()) {\n" + " $name$_ = s;\n" + " }\n" + " return s;\n" + " }\n" + "}\n"); + WriteFieldDocComment(printer, descriptor_); + printer->Print(variables_, + "$deprecation$public com.google.protobuf.ByteString\n" + " get$capitalized_name$Bytes() {\n" + " java.lang.Object ref = $name$_;\n" + " if (ref instanceof java.lang.String) {\n" + " com.google.protobuf.ByteString b = \n" + " com.google.protobuf.ByteString.copyFromUtf8(\n" + " (java.lang.String) ref);\n" + " $name$_ = b;\n" + " return b;\n" + " } else {\n" + " return (com.google.protobuf.ByteString) ref;\n" + " }\n" + "}\n"); +} + +void StringFieldGenerator:: +GenerateBuilderMembers(io::Printer* printer) const { + printer->Print(variables_, + "private java.lang.Object $name$_ $default_init$;\n"); + WriteFieldDocComment(printer, descriptor_); + printer->Print(variables_, + "$deprecation$public boolean has$capitalized_name$() {\n" + " return $get_has_field_bit_builder$;\n" + "}\n"); + + WriteFieldDocComment(printer, descriptor_); + printer->Print(variables_, + "$deprecation$public java.lang.String get$capitalized_name$() {\n" + " java.lang.Object ref = $name$_;\n" + " if (!(ref instanceof java.lang.String)) {\n" + " java.lang.String s = ((com.google.protobuf.ByteString) ref)\n" + " .toStringUtf8();\n" + " $name$_ = s;\n" + " return s;\n" + " } else {\n" + " return (java.lang.String) ref;\n" + " }\n" + "}\n"); + + WriteFieldDocComment(printer, descriptor_); + printer->Print(variables_, + "$deprecation$public com.google.protobuf.ByteString\n" + " get$capitalized_name$Bytes() {\n" + " java.lang.Object ref = $name$_;\n" + " if (ref instanceof String) {\n" + " com.google.protobuf.ByteString b = \n" + " com.google.protobuf.ByteString.copyFromUtf8(\n" + " (java.lang.String) ref);\n" + " $name$_ = b;\n" + " return b;\n" + " } else {\n" + " return (com.google.protobuf.ByteString) ref;\n" + " }\n" + "}\n"); + + WriteFieldDocComment(printer, descriptor_); + printer->Print(variables_, + "$deprecation$public Builder set$capitalized_name$(\n" + " java.lang.String value) {\n" + "$null_check$" + " $set_has_field_bit_builder$;\n" + " $name$_ = value;\n" + " $on_changed$\n" + " return this;\n" + "}\n"); + WriteFieldDocComment(printer, descriptor_); + printer->Print(variables_, + "$deprecation$public Builder clear$capitalized_name$() {\n" + " $clear_has_field_bit_builder$;\n"); + // The default value is not a simple literal so we want to avoid executing + // it multiple times. Instead, get the default out of the default instance. + printer->Print(variables_, + " $name$_ = getDefaultInstance().get$capitalized_name$();\n"); + printer->Print(variables_, + " $on_changed$\n" + " return this;\n" + "}\n"); + + WriteFieldDocComment(printer, descriptor_); + printer->Print(variables_, + "$deprecation$public Builder set$capitalized_name$Bytes(\n" + " com.google.protobuf.ByteString value) {\n" + "$null_check$" + " $set_has_field_bit_builder$;\n" + " $name$_ = value;\n" + " $on_changed$\n" + " return this;\n" + "}\n"); +} + +void StringFieldGenerator:: +GenerateFieldBuilderInitializationCode(io::Printer* printer) const { + // noop for primitives +} + +void StringFieldGenerator:: +GenerateInitializationCode(io::Printer* printer) const { + printer->Print(variables_, "$name$_ = $default$;\n"); +} + +void StringFieldGenerator:: +GenerateBuilderClearCode(io::Printer* printer) const { + printer->Print(variables_, + "$name$_ = $default$;\n" + "$clear_has_field_bit_builder$;\n"); +} + +void StringFieldGenerator:: +GenerateMergingCode(io::Printer* printer) const { + // Allow a slight breach of abstraction here in order to avoid forcing + // all string fields to Strings when copying fields from a Message. + printer->Print(variables_, + "if (other.has$capitalized_name$()) {\n" + " $set_has_field_bit_builder$;\n" + " $name$_ = other.$name$_;\n" + " $on_changed$\n" + "}\n"); +} + +void StringFieldGenerator:: +GenerateBuildingCode(io::Printer* printer) const { + printer->Print(variables_, + "if ($get_has_field_bit_from_local$) {\n" + " $set_has_field_bit_to_local$;\n" + "}\n" + "result.$name$_ = $name$_;\n"); +} + +void StringFieldGenerator:: +GenerateParsingCode(io::Printer* printer) const { + printer->Print(variables_, + "$set_has_field_bit_message$;\n" + "$name$_ = input.readBytes();\n"); +} + +void StringFieldGenerator:: +GenerateParsingDoneCode(io::Printer* printer) const { + // noop for strings. +} + +void StringFieldGenerator:: +GenerateSerializationCode(io::Printer* printer) const { + printer->Print(variables_, + "if ($get_has_field_bit_message$) {\n" + " output.writeBytes($number$, get$capitalized_name$Bytes());\n" + "}\n"); +} + +void StringFieldGenerator:: +GenerateSerializedSizeCode(io::Printer* printer) const { + printer->Print(variables_, + "if ($get_has_field_bit_message$) {\n" + " size += com.google.protobuf.CodedOutputStream\n" + " .computeBytesSize($number$, get$capitalized_name$Bytes());\n" + "}\n"); +} + +void StringFieldGenerator:: +GenerateEqualsCode(io::Printer* printer) const { + printer->Print(variables_, + "result = result && get$capitalized_name$()\n" + " .equals(other.get$capitalized_name$());\n"); +} + +void StringFieldGenerator:: +GenerateHashCode(io::Printer* printer) const { + printer->Print(variables_, + "hash = (37 * hash) + $constant_name$;\n"); + printer->Print(variables_, + "hash = (53 * hash) + get$capitalized_name$().hashCode();\n"); +} + +string StringFieldGenerator::GetBoxedType() const { + return "java.lang.String"; +} + + +// =================================================================== + +RepeatedStringFieldGenerator:: +RepeatedStringFieldGenerator(const FieldDescriptor* descriptor, + int messageBitIndex, + int builderBitIndex) + : descriptor_(descriptor), messageBitIndex_(messageBitIndex), + builderBitIndex_(builderBitIndex) { + SetPrimitiveVariables(descriptor, messageBitIndex, builderBitIndex, + &variables_); +} + +RepeatedStringFieldGenerator::~RepeatedStringFieldGenerator() {} + +int RepeatedStringFieldGenerator::GetNumBitsForMessage() const { + return 0; +} + +int RepeatedStringFieldGenerator::GetNumBitsForBuilder() const { + return 1; +} + +void RepeatedStringFieldGenerator:: +GenerateInterfaceMembers(io::Printer* printer) const { + WriteFieldDocComment(printer, descriptor_); + printer->Print(variables_, + "$deprecation$java.util.List\n" + "get$capitalized_name$List();\n"); + WriteFieldDocComment(printer, descriptor_); + printer->Print(variables_, + "$deprecation$int get$capitalized_name$Count();\n"); + WriteFieldDocComment(printer, descriptor_); + printer->Print(variables_, + "$deprecation$java.lang.String get$capitalized_name$(int index);\n"); + WriteFieldDocComment(printer, descriptor_); + printer->Print(variables_, + "$deprecation$com.google.protobuf.ByteString\n" + " get$capitalized_name$Bytes(int index);\n"); +} + + +void RepeatedStringFieldGenerator:: +GenerateMembers(io::Printer* printer) const { + printer->Print(variables_, + "private com.google.protobuf.LazyStringList $name$_;\n"); + WriteFieldDocComment(printer, descriptor_); + printer->Print(variables_, + "$deprecation$public java.util.List\n" + " get$capitalized_name$List() {\n" + " return $name$_;\n" // note: unmodifiable list + "}\n"); + WriteFieldDocComment(printer, descriptor_); + printer->Print(variables_, + "$deprecation$public int get$capitalized_name$Count() {\n" + " return $name$_.size();\n" + "}\n"); + WriteFieldDocComment(printer, descriptor_); + printer->Print(variables_, + "$deprecation$public java.lang.String get$capitalized_name$(int index) {\n" + " return $name$_.get(index);\n" + "}\n"); + WriteFieldDocComment(printer, descriptor_); + printer->Print(variables_, + "$deprecation$public com.google.protobuf.ByteString\n" + " get$capitalized_name$Bytes(int index) {\n" + " return $name$_.getByteString(index);\n" + "}\n"); + + if (descriptor_->options().packed() && + HasGeneratedMethods(descriptor_->containing_type())) { + printer->Print(variables_, + "private int $name$MemoizedSerializedSize = -1;\n"); + } +} + +void RepeatedStringFieldGenerator:: +GenerateBuilderMembers(io::Printer* printer) const { + // One field is the list and the bit field keeps track of whether the + // list is immutable. If it's immutable, the invariant is that it must + // either an instance of Collections.emptyList() or it's an ArrayList + // wrapped in a Collections.unmodifiableList() wrapper and nobody else has + // a refererence to the underlying ArrayList. This invariant allows us to + // share instances of lists between protocol buffers avoiding expensive + // memory allocations. Note, immutable is a strong guarantee here -- not + // just that the list cannot be modified via the reference but that the + // list can never be modified. + printer->Print(variables_, + "private com.google.protobuf.LazyStringList $name$_ = $empty_list$;\n"); + + printer->Print(variables_, + "private void ensure$capitalized_name$IsMutable() {\n" + " if (!$get_mutable_bit_builder$) {\n" + " $name$_ = new com.google.protobuf.LazyStringArrayList($name$_);\n" + " $set_mutable_bit_builder$;\n" + " }\n" + "}\n"); + + // Note: We return an unmodifiable list because otherwise the caller + // could hold on to the returned list and modify it after the message + // has been built, thus mutating the message which is supposed to be + // immutable. + WriteFieldDocComment(printer, descriptor_); + printer->Print(variables_, + "$deprecation$public java.util.List\n" + " get$capitalized_name$List() {\n" + " return java.util.Collections.unmodifiableList($name$_);\n" + "}\n"); + WriteFieldDocComment(printer, descriptor_); + printer->Print(variables_, + "$deprecation$public int get$capitalized_name$Count() {\n" + " return $name$_.size();\n" + "}\n"); + WriteFieldDocComment(printer, descriptor_); + printer->Print(variables_, + "$deprecation$public java.lang.String get$capitalized_name$(int index) {\n" + " return $name$_.get(index);\n" + "}\n"); + WriteFieldDocComment(printer, descriptor_); + printer->Print(variables_, + "$deprecation$public com.google.protobuf.ByteString\n" + " get$capitalized_name$Bytes(int index) {\n" + " return $name$_.getByteString(index);\n" + "}\n"); + WriteFieldDocComment(printer, descriptor_); + printer->Print(variables_, + "$deprecation$public Builder set$capitalized_name$(\n" + " int index, java.lang.String value) {\n" + "$null_check$" + " ensure$capitalized_name$IsMutable();\n" + " $name$_.set(index, value);\n" + " $on_changed$\n" + " return this;\n" + "}\n"); + WriteFieldDocComment(printer, descriptor_); + printer->Print(variables_, + "$deprecation$public Builder add$capitalized_name$(\n" + " java.lang.String value) {\n" + "$null_check$" + " ensure$capitalized_name$IsMutable();\n" + " $name$_.add(value);\n" + " $on_changed$\n" + " return this;\n" + "}\n"); + WriteFieldDocComment(printer, descriptor_); + printer->Print(variables_, + "$deprecation$public Builder addAll$capitalized_name$(\n" + " java.lang.Iterable values) {\n" + " ensure$capitalized_name$IsMutable();\n" + " super.addAll(values, $name$_);\n" + " $on_changed$\n" + " return this;\n" + "}\n"); + WriteFieldDocComment(printer, descriptor_); + printer->Print(variables_, + "$deprecation$public Builder clear$capitalized_name$() {\n" + " $name$_ = $empty_list$;\n" + " $clear_mutable_bit_builder$;\n" + " $on_changed$\n" + " return this;\n" + "}\n"); + + WriteFieldDocComment(printer, descriptor_); + printer->Print(variables_, + "$deprecation$public Builder add$capitalized_name$Bytes(\n" + " com.google.protobuf.ByteString value) {\n" + "$null_check$" + " ensure$capitalized_name$IsMutable();\n" + " $name$_.add(value);\n" + " $on_changed$\n" + " return this;\n" + "}\n"); +} + +void RepeatedStringFieldGenerator:: +GenerateFieldBuilderInitializationCode(io::Printer* printer) const { + // noop for primitives +} + +void RepeatedStringFieldGenerator:: +GenerateInitializationCode(io::Printer* printer) const { + printer->Print(variables_, "$name$_ = $empty_list$;\n"); +} + +void RepeatedStringFieldGenerator:: +GenerateBuilderClearCode(io::Printer* printer) const { + printer->Print(variables_, + "$name$_ = $empty_list$;\n" + "$clear_mutable_bit_builder$;\n"); +} + +void RepeatedStringFieldGenerator:: +GenerateMergingCode(io::Printer* printer) const { + // The code below does two optimizations: + // 1. If the other list is empty, there's nothing to do. This ensures we + // don't allocate a new array if we already have an immutable one. + // 2. If the other list is non-empty and our current list is empty, we can + // reuse the other list which is guaranteed to be immutable. + printer->Print(variables_, + "if (!other.$name$_.isEmpty()) {\n" + " if ($name$_.isEmpty()) {\n" + " $name$_ = other.$name$_;\n" + " $clear_mutable_bit_builder$;\n" + " } else {\n" + " ensure$capitalized_name$IsMutable();\n" + " $name$_.addAll(other.$name$_);\n" + " }\n" + " $on_changed$\n" + "}\n"); +} + +void RepeatedStringFieldGenerator:: +GenerateBuildingCode(io::Printer* printer) const { + // The code below ensures that the result has an immutable list. If our + // list is immutable, we can just reuse it. If not, we make it immutable. + + printer->Print(variables_, + "if ($get_mutable_bit_builder$) {\n" + " $name$_ = new com.google.protobuf.UnmodifiableLazyStringList(\n" + " $name$_);\n" + " $clear_mutable_bit_builder$;\n" + "}\n" + "result.$name$_ = $name$_;\n"); +} + +void RepeatedStringFieldGenerator:: +GenerateParsingCode(io::Printer* printer) const { + printer->Print(variables_, + "if (!$get_mutable_bit_parser$) {\n" + " $name$_ = new com.google.protobuf.LazyStringArrayList();\n" + " $set_mutable_bit_parser$;\n" + "}\n" + "$name$_.add(input.readBytes());\n"); +} + +void RepeatedStringFieldGenerator:: +GenerateParsingCodeFromPacked(io::Printer* printer) const { + printer->Print(variables_, + "int length = input.readRawVarint32();\n" + "int limit = input.pushLimit(length);\n" + "if (!$get_mutable_bit_parser$ && input.getBytesUntilLimit() > 0) {\n" + " $name$_ = new com.google.protobuf.LazyStringArrayList();\n" + " $set_mutable_bit_parser$;\n" + "}\n" + "while (input.getBytesUntilLimit() > 0) {\n" + " $name$.add(input.read$capitalized_type$());\n" + "}\n" + "input.popLimit(limit);\n"); +} + +void RepeatedStringFieldGenerator:: +GenerateParsingDoneCode(io::Printer* printer) const { + printer->Print(variables_, + "if ($get_mutable_bit_parser$) {\n" + " $name$_ = new com.google.protobuf.UnmodifiableLazyStringList($name$_);\n" + "}\n"); +} + +void RepeatedStringFieldGenerator:: +GenerateSerializationCode(io::Printer* printer) const { + if (descriptor_->options().packed()) { + printer->Print(variables_, + "if (get$capitalized_name$List().size() > 0) {\n" + " output.writeRawVarint32($tag$);\n" + " output.writeRawVarint32($name$MemoizedSerializedSize);\n" + "}\n" + "for (int i = 0; i < $name$_.size(); i++) {\n" + " output.write$capitalized_type$NoTag($name$_.get(i));\n" + "}\n"); + } else { + printer->Print(variables_, + "for (int i = 0; i < $name$_.size(); i++) {\n" + " output.writeBytes($number$, $name$_.getByteString(i));\n" + "}\n"); + } +} + +void RepeatedStringFieldGenerator:: +GenerateSerializedSizeCode(io::Printer* printer) const { + printer->Print(variables_, + "{\n" + " int dataSize = 0;\n"); + printer->Indent(); + + printer->Print(variables_, + "for (int i = 0; i < $name$_.size(); i++) {\n" + " dataSize += com.google.protobuf.CodedOutputStream\n" + " .computeBytesSizeNoTag($name$_.getByteString(i));\n" + "}\n"); + + printer->Print( + "size += dataSize;\n"); + + if (descriptor_->options().packed()) { + printer->Print(variables_, + "if (!get$capitalized_name$List().isEmpty()) {\n" + " size += $tag_size$;\n" + " size += com.google.protobuf.CodedOutputStream\n" + " .computeInt32SizeNoTag(dataSize);\n" + "}\n"); + } else { + printer->Print(variables_, + "size += $tag_size$ * get$capitalized_name$List().size();\n"); + } + + // cache the data size for packed fields. + if (descriptor_->options().packed()) { + printer->Print(variables_, + "$name$MemoizedSerializedSize = dataSize;\n"); + } + + printer->Outdent(); + printer->Print("}\n"); +} + +void RepeatedStringFieldGenerator:: +GenerateEqualsCode(io::Printer* printer) const { + printer->Print(variables_, + "result = result && get$capitalized_name$List()\n" + " .equals(other.get$capitalized_name$List());\n"); +} + +void RepeatedStringFieldGenerator:: +GenerateHashCode(io::Printer* printer) const { + printer->Print(variables_, + "if (get$capitalized_name$Count() > 0) {\n" + " hash = (37 * hash) + $constant_name$;\n" + " hash = (53 * hash) + get$capitalized_name$List().hashCode();\n" + "}\n"); +} + +string RepeatedStringFieldGenerator::GetBoxedType() const { + return "String"; +} + +} // namespace java +} // namespace compiler +} // namespace protobuf +} // namespace google diff --git a/cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/compiler/java/java_string_field.h b/cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/compiler/java/java_string_field.h new file mode 100644 index 000000000..4f7532f44 --- /dev/null +++ b/cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/compiler/java/java_string_field.h @@ -0,0 +1,122 @@ +// Protocol Buffers - Google's data interchange format +// Copyright 2008 Google Inc. All rights reserved. +// http://code.google.com/p/protobuf/ +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +// Author: kenton@google.com (Kenton Varda) +// Author: jonp@google.com (Jon Perlow) +// Based on original Protocol Buffers design by +// Sanjay Ghemawat, Jeff Dean, and others. + +#ifndef GOOGLE_PROTOBUF_COMPILER_JAVA_STRING_FIELD_H__ +#define GOOGLE_PROTOBUF_COMPILER_JAVA_STRING_FIELD_H__ + +#include +#include +#include + +namespace google { +namespace protobuf { +namespace compiler { +namespace java { + +class StringFieldGenerator : public FieldGenerator { + public: + explicit StringFieldGenerator(const FieldDescriptor* descriptor, + int messageBitIndex, int builderBitIndex); + ~StringFieldGenerator(); + + // implements FieldGenerator --------------------------------------- + int GetNumBitsForMessage() const; + int GetNumBitsForBuilder() const; + void GenerateInterfaceMembers(io::Printer* printer) const; + void GenerateMembers(io::Printer* printer) const; + void GenerateBuilderMembers(io::Printer* printer) const; + void GenerateInitializationCode(io::Printer* printer) const; + void GenerateBuilderClearCode(io::Printer* printer) const; + void GenerateMergingCode(io::Printer* printer) const; + void GenerateBuildingCode(io::Printer* printer) const; + void GenerateParsingCode(io::Printer* printer) const; + void GenerateParsingDoneCode(io::Printer* printer) const; + void GenerateSerializationCode(io::Printer* printer) const; + void GenerateSerializedSizeCode(io::Printer* printer) const; + void GenerateFieldBuilderInitializationCode(io::Printer* printer) const; + void GenerateEqualsCode(io::Printer* printer) const; + void GenerateHashCode(io::Printer* printer) const; + string GetBoxedType() const; + + private: + const FieldDescriptor* descriptor_; + map variables_; + const int messageBitIndex_; + const int builderBitIndex_; + + GOOGLE_DISALLOW_EVIL_CONSTRUCTORS(StringFieldGenerator); +}; + +class RepeatedStringFieldGenerator : public FieldGenerator { + public: + explicit RepeatedStringFieldGenerator(const FieldDescriptor* descriptor, + int messageBitIndex, int builderBitIndex); + ~RepeatedStringFieldGenerator(); + + // implements FieldGenerator --------------------------------------- + int GetNumBitsForMessage() const; + int GetNumBitsForBuilder() const; + void GenerateInterfaceMembers(io::Printer* printer) const; + void GenerateMembers(io::Printer* printer) const; + void GenerateBuilderMembers(io::Printer* printer) const; + void GenerateInitializationCode(io::Printer* printer) const; + void GenerateBuilderClearCode(io::Printer* printer) const; + void GenerateMergingCode(io::Printer* printer) const; + void GenerateBuildingCode(io::Printer* printer) const; + void GenerateParsingCode(io::Printer* printer) const; + void GenerateParsingCodeFromPacked(io::Printer* printer) const; + void GenerateParsingDoneCode(io::Printer* printer) const; + void GenerateSerializationCode(io::Printer* printer) const; + void GenerateSerializedSizeCode(io::Printer* printer) const; + void GenerateFieldBuilderInitializationCode(io::Printer* printer) const; + void GenerateEqualsCode(io::Printer* printer) const; + void GenerateHashCode(io::Printer* printer) const; + string GetBoxedType() const; + + private: + const FieldDescriptor* descriptor_; + map variables_; + const int messageBitIndex_; + const int builderBitIndex_; + + GOOGLE_DISALLOW_EVIL_CONSTRUCTORS(RepeatedStringFieldGenerator); +}; + +} // namespace java +} // namespace compiler +} // namespace protobuf + +} // namespace google +#endif // GOOGLE_PROTOBUF_COMPILER_JAVA_STRING_FIELD_H__ diff --git a/cpp/thirdparty/protobuf-2.3.0/src/google/protobuf/compiler/main.cc b/cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/compiler/main.cc similarity index 97% rename from cpp/thirdparty/protobuf-2.3.0/src/google/protobuf/compiler/main.cc rename to cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/compiler/main.cc index d9b0c3f9d..1afc5d611 100644 --- a/cpp/thirdparty/protobuf-2.3.0/src/google/protobuf/compiler/main.cc +++ b/cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/compiler/main.cc @@ -43,7 +43,7 @@ int main(int argc, char* argv[]) { // Proto2 C++ google::protobuf::compiler::cpp::CppGenerator cpp_generator; - cli.RegisterGenerator("--cpp_out", &cpp_generator, + cli.RegisterGenerator("--cpp_out", "--cpp_opt", &cpp_generator, "Generate C++ header and source."); // Proto2 Java diff --git a/cpp/thirdparty/protobuf-2.3.0/src/google/protobuf/compiler/mock_code_generator.cc b/cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/compiler/mock_code_generator.cc similarity index 77% rename from cpp/thirdparty/protobuf-2.3.0/src/google/protobuf/compiler/mock_code_generator.cc rename to cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/compiler/mock_code_generator.cc index 83d5a4e45..0e35ed19c 100644 --- a/cpp/thirdparty/protobuf-2.3.0/src/google/protobuf/compiler/mock_code_generator.cc +++ b/cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/compiler/mock_code_generator.cc @@ -33,18 +33,29 @@ #include #include +#include #include #include #include #include #include #include -#include +#include namespace google { namespace protobuf { namespace compiler { +// Returns the list of the names of files in all_files in the form of a +// comma-separated string. +string CommaSeparatedList(const vector all_files) { + vector names; + for (int i = 0; i < all_files.size(); i++) { + names.push_back(all_files[i]->name()); + } + return JoinStrings(names, ","); +} + static const char* kFirstInsertionPointName = "first_mock_insertion_point"; static const char* kSecondInsertionPointName = "second_mock_insertion_point"; static const char* kFirstInsertionPoint = @@ -63,6 +74,7 @@ void MockCodeGenerator::ExpectGenerated( const string& insertions, const string& file, const string& first_message_name, + const string& first_parsed_file_name, const string& output_directory) { string content; ASSERT_TRUE(File::ReadFileToString( @@ -84,7 +96,8 @@ void MockCodeGenerator::ExpectGenerated( } ASSERT_EQ(lines.size(), 3 + insertion_list.size() * 2); - EXPECT_EQ(GetOutputFileContent(name, parameter, file, first_message_name), + EXPECT_EQ(GetOutputFileContent(name, parameter, file, + first_parsed_file_name, first_message_name), lines[0]); EXPECT_EQ(kFirstInsertionPoint, lines[1 + insertion_list.size()]); @@ -92,12 +105,12 @@ void MockCodeGenerator::ExpectGenerated( for (int i = 0; i < insertion_list.size(); i++) { EXPECT_EQ(GetOutputFileContent(insertion_list[i], "first_insert", - file, first_message_name), + file, file, first_message_name), lines[1 + i]); // Second insertion point is indented, so the inserted text should // automatically be indented too. EXPECT_EQ(" " + GetOutputFileContent(insertion_list[i], "second_insert", - file, first_message_name), + file, file, first_message_name), lines[2 + insertion_list.size() + i]); } } @@ -105,7 +118,7 @@ void MockCodeGenerator::ExpectGenerated( bool MockCodeGenerator::Generate( const FileDescriptor* file, const string& parameter, - OutputDirectory* output_directory, + GeneratorContext* context, string* error) const { for (int i = 0; i < file->message_type_count(); i++) { if (HasPrefixString(file->message_type(i)->name(), "MockCodeGenerator_")) { @@ -120,6 +133,15 @@ bool MockCodeGenerator::Generate( } else if (command == "Abort") { cerr << "Saw message type MockCodeGenerator_Abort." << endl; abort(); + } else if (command == "HasSourceCodeInfo") { + FileDescriptorProto file_descriptor_proto; + file->CopySourceCodeInfoTo(&file_descriptor_proto); + bool has_source_code_info = + file_descriptor_proto.has_source_code_info() && + file_descriptor_proto.source_code_info().location_size() > 0; + cerr << "Saw message type MockCodeGenerator_HasSourceCodeInfo: " + << has_source_code_info << "." << endl; + abort(); } else { GOOGLE_LOG(FATAL) << "Unknown MockCodeGenerator command: " << command; } @@ -134,11 +156,12 @@ bool MockCodeGenerator::Generate( for (int i = 0; i < insert_into.size(); i++) { { scoped_ptr output( - output_directory->OpenForInsert( + context->OpenForInsert( GetOutputFileName(insert_into[i], file), kFirstInsertionPointName)); io::Printer printer(output.get(), '$'); - printer.PrintRaw(GetOutputFileContent(name_, "first_insert", file)); + printer.PrintRaw(GetOutputFileContent(name_, "first_insert", + file, context)); if (printer.failed()) { *error = "MockCodeGenerator detected write error."; return false; @@ -147,11 +170,12 @@ bool MockCodeGenerator::Generate( { scoped_ptr output( - output_directory->OpenForInsert( + context->OpenForInsert( GetOutputFileName(insert_into[i], file), kSecondInsertionPointName)); io::Printer printer(output.get(), '$'); - printer.PrintRaw(GetOutputFileContent(name_, "second_insert", file)); + printer.PrintRaw(GetOutputFileContent(name_, "second_insert", + file, context)); if (printer.failed()) { *error = "MockCodeGenerator detected write error."; return false; @@ -160,10 +184,11 @@ bool MockCodeGenerator::Generate( } } else { scoped_ptr output( - output_directory->Open(GetOutputFileName(name_, file))); + context->Open(GetOutputFileName(name_, file))); io::Printer printer(output.get(), '$'); - printer.PrintRaw(GetOutputFileContent(name_, parameter, file)); + printer.PrintRaw(GetOutputFileContent(name_, parameter, + file, context)); printer.PrintRaw(kFirstInsertionPoint); printer.PrintRaw(kSecondInsertionPoint); @@ -186,11 +211,16 @@ string MockCodeGenerator::GetOutputFileName(const string& generator_name, return file + ".MockCodeGenerator." + generator_name; } -string MockCodeGenerator::GetOutputFileContent(const string& generator_name, - const string& parameter, - const FileDescriptor* file) { +string MockCodeGenerator::GetOutputFileContent( + const string& generator_name, + const string& parameter, + const FileDescriptor* file, + GeneratorContext *context) { + vector all_files; + context->ListParsedFiles(&all_files); return GetOutputFileContent( generator_name, parameter, file->name(), + CommaSeparatedList(all_files), file->message_type_count() > 0 ? file->message_type(0)->name() : "(none)"); } @@ -199,9 +229,11 @@ string MockCodeGenerator::GetOutputFileContent( const string& generator_name, const string& parameter, const string& file, + const string& parsed_file_list, const string& first_message_name) { - return strings::Substitute("$0: $1, $2, $3\n", - generator_name, parameter, file, first_message_name); + return strings::Substitute("$0: $1, $2, $3, $4\n", + generator_name, parameter, file, + first_message_name, parsed_file_list); } } // namespace compiler diff --git a/cpp/thirdparty/protobuf-2.3.0/src/google/protobuf/compiler/mock_code_generator.h b/cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/compiler/mock_code_generator.h similarity index 87% rename from cpp/thirdparty/protobuf-2.3.0/src/google/protobuf/compiler/mock_code_generator.h rename to cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/compiler/mock_code_generator.h index 01d69dd26..506fd2070 100644 --- a/cpp/thirdparty/protobuf-2.3.0/src/google/protobuf/compiler/mock_code_generator.h +++ b/cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/compiler/mock_code_generator.h @@ -59,6 +59,10 @@ namespace compiler { // MockCodeGenerator_Exit." to stderr and then calls exit(123). // MockCodeGenerator_Abort: Generate() prints "Saw message type // MockCodeGenerator_Abort." to stderr and then calls abort(). +// MockCodeGenerator_HasSourceCodeInfo: Causes Generate() to abort after +// printing "Saw message type MockCodeGenerator_HasSourceCodeInfo: FOO." to +// stderr, where FOO is "1" if the supplied FileDescriptorProto has source +// code info, and "0" otherwise. class MockCodeGenerator : public CodeGenerator { public: MockCodeGenerator(const string& name); @@ -69,11 +73,14 @@ class MockCodeGenerator : public CodeGenerator { // // |insertions| is a comma-separated list of names of MockCodeGenerators which // should have inserted lines into this file. + // |parsed_file_list| is a comma-separated list of names of the files + // that are being compiled together in this run. static void ExpectGenerated(const string& name, const string& parameter, const string& insertions, const string& file, const string& first_message_name, + const string& parsed_file_list, const string& output_directory); // Get the name of the file which would be written by the given generator. @@ -86,7 +93,7 @@ class MockCodeGenerator : public CodeGenerator { virtual bool Generate(const FileDescriptor* file, const string& parameter, - OutputDirectory* output_directory, + GeneratorContext* context, string* error) const; private: @@ -94,10 +101,12 @@ class MockCodeGenerator : public CodeGenerator { static string GetOutputFileContent(const string& generator_name, const string& parameter, - const FileDescriptor* file); + const FileDescriptor* file, + GeneratorContext *context); static string GetOutputFileContent(const string& generator_name, const string& parameter, const string& file, + const string& parsed_file_list, const string& first_message_name); }; diff --git a/cpp/thirdparty/protobuf-2.3.0/src/google/protobuf/compiler/package_info.h b/cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/compiler/package_info.h similarity index 100% rename from cpp/thirdparty/protobuf-2.3.0/src/google/protobuf/compiler/package_info.h rename to cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/compiler/package_info.h diff --git a/cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/compiler/parser.cc b/cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/compiler/parser.cc new file mode 100644 index 000000000..23aa01ced --- /dev/null +++ b/cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/compiler/parser.cc @@ -0,0 +1,1611 @@ +// Protocol Buffers - Google's data interchange format +// Copyright 2008 Google Inc. All rights reserved. +// http://code.google.com/p/protobuf/ +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +// Author: kenton@google.com (Kenton Varda) +// Based on original Protocol Buffers design by +// Sanjay Ghemawat, Jeff Dean, and others. +// +// Recursive descent FTW. + +#include +#include +#include + + +#include +#include +#include +#include +#include +#include +#include +#include + +namespace google { +namespace protobuf { +namespace compiler { + +using internal::WireFormat; + +namespace { + +typedef hash_map TypeNameMap; + +TypeNameMap MakeTypeNameTable() { + TypeNameMap result; + + result["double" ] = FieldDescriptorProto::TYPE_DOUBLE; + result["float" ] = FieldDescriptorProto::TYPE_FLOAT; + result["uint64" ] = FieldDescriptorProto::TYPE_UINT64; + result["fixed64" ] = FieldDescriptorProto::TYPE_FIXED64; + result["fixed32" ] = FieldDescriptorProto::TYPE_FIXED32; + result["bool" ] = FieldDescriptorProto::TYPE_BOOL; + result["string" ] = FieldDescriptorProto::TYPE_STRING; + result["group" ] = FieldDescriptorProto::TYPE_GROUP; + + result["bytes" ] = FieldDescriptorProto::TYPE_BYTES; + result["uint32" ] = FieldDescriptorProto::TYPE_UINT32; + result["sfixed32"] = FieldDescriptorProto::TYPE_SFIXED32; + result["sfixed64"] = FieldDescriptorProto::TYPE_SFIXED64; + result["int32" ] = FieldDescriptorProto::TYPE_INT32; + result["int64" ] = FieldDescriptorProto::TYPE_INT64; + result["sint32" ] = FieldDescriptorProto::TYPE_SINT32; + result["sint64" ] = FieldDescriptorProto::TYPE_SINT64; + + return result; +} + +const TypeNameMap kTypeNames = MakeTypeNameTable(); + +} // anonymous namespace + +// Makes code slightly more readable. The meaning of "DO(foo)" is +// "Execute foo and fail if it fails.", where failure is indicated by +// returning false. +#define DO(STATEMENT) if (STATEMENT) {} else return false + +// =================================================================== + +Parser::Parser() + : input_(NULL), + error_collector_(NULL), + source_location_table_(NULL), + had_errors_(false), + require_syntax_identifier_(false), + stop_after_syntax_identifier_(false) { +} + +Parser::~Parser() { +} + +// =================================================================== + +inline bool Parser::LookingAt(const char* text) { + return input_->current().text == text; +} + +inline bool Parser::LookingAtType(io::Tokenizer::TokenType token_type) { + return input_->current().type == token_type; +} + +inline bool Parser::AtEnd() { + return LookingAtType(io::Tokenizer::TYPE_END); +} + +bool Parser::TryConsume(const char* text) { + if (LookingAt(text)) { + input_->Next(); + return true; + } else { + return false; + } +} + +bool Parser::Consume(const char* text, const char* error) { + if (TryConsume(text)) { + return true; + } else { + AddError(error); + return false; + } +} + +bool Parser::Consume(const char* text) { + if (TryConsume(text)) { + return true; + } else { + AddError("Expected \"" + string(text) + "\"."); + return false; + } +} + +bool Parser::ConsumeIdentifier(string* output, const char* error) { + if (LookingAtType(io::Tokenizer::TYPE_IDENTIFIER)) { + *output = input_->current().text; + input_->Next(); + return true; + } else { + AddError(error); + return false; + } +} + +bool Parser::ConsumeInteger(int* output, const char* error) { + if (LookingAtType(io::Tokenizer::TYPE_INTEGER)) { + uint64 value = 0; + if (!io::Tokenizer::ParseInteger(input_->current().text, + kint32max, &value)) { + AddError("Integer out of range."); + // We still return true because we did, in fact, parse an integer. + } + *output = value; + input_->Next(); + return true; + } else { + AddError(error); + return false; + } +} + +bool Parser::ConsumeSignedInteger(int* output, const char* error) { + bool is_negative = false; + uint64 max_value = kint32max; + if (TryConsume("-")) { + is_negative = true; + max_value += 1; + } + uint64 value = 0; + DO(ConsumeInteger64(max_value, &value, error)); + if (is_negative) value *= -1; + *output = value; + return true; +} + +bool Parser::ConsumeInteger64(uint64 max_value, uint64* output, + const char* error) { + if (LookingAtType(io::Tokenizer::TYPE_INTEGER)) { + if (!io::Tokenizer::ParseInteger(input_->current().text, max_value, + output)) { + AddError("Integer out of range."); + // We still return true because we did, in fact, parse an integer. + *output = 0; + } + input_->Next(); + return true; + } else { + AddError(error); + return false; + } +} + +bool Parser::ConsumeNumber(double* output, const char* error) { + if (LookingAtType(io::Tokenizer::TYPE_FLOAT)) { + *output = io::Tokenizer::ParseFloat(input_->current().text); + input_->Next(); + return true; + } else if (LookingAtType(io::Tokenizer::TYPE_INTEGER)) { + // Also accept integers. + uint64 value = 0; + if (!io::Tokenizer::ParseInteger(input_->current().text, + kuint64max, &value)) { + AddError("Integer out of range."); + // We still return true because we did, in fact, parse a number. + } + *output = value; + input_->Next(); + return true; + } else if (LookingAt("inf")) { + *output = numeric_limits::infinity(); + input_->Next(); + return true; + } else if (LookingAt("nan")) { + *output = numeric_limits::quiet_NaN(); + input_->Next(); + return true; + } else { + AddError(error); + return false; + } +} + +bool Parser::ConsumeString(string* output, const char* error) { + if (LookingAtType(io::Tokenizer::TYPE_STRING)) { + io::Tokenizer::ParseString(input_->current().text, output); + input_->Next(); + // Allow C++ like concatenation of adjacent string tokens. + while (LookingAtType(io::Tokenizer::TYPE_STRING)) { + io::Tokenizer::ParseStringAppend(input_->current().text, output); + input_->Next(); + } + return true; + } else { + AddError(error); + return false; + } +} + +bool Parser::TryConsumeEndOfDeclaration(const char* text, + const LocationRecorder* location) { + if (LookingAt(text)) { + string leading, trailing; + input_->NextWithComments(&trailing, NULL, &leading); + + // Save the leading comments for next time, and recall the leading comments + // from last time. + leading.swap(upcoming_doc_comments_); + + if (location != NULL) { + location->AttachComments(&leading, &trailing); + } + return true; + } else { + return false; + } +} + +bool Parser::ConsumeEndOfDeclaration(const char* text, + const LocationRecorder* location) { + if (TryConsumeEndOfDeclaration(text, location)) { + return true; + } else { + AddError("Expected \"" + string(text) + "\"."); + return false; + } +} + +// ------------------------------------------------------------------- + +void Parser::AddError(int line, int column, const string& error) { + if (error_collector_ != NULL) { + error_collector_->AddError(line, column, error); + } + had_errors_ = true; +} + +void Parser::AddError(const string& error) { + AddError(input_->current().line, input_->current().column, error); +} + +// ------------------------------------------------------------------- + +Parser::LocationRecorder::LocationRecorder(Parser* parser) + : parser_(parser), + location_(parser_->source_code_info_->add_location()) { + location_->add_span(parser_->input_->current().line); + location_->add_span(parser_->input_->current().column); +} + +Parser::LocationRecorder::LocationRecorder(const LocationRecorder& parent) { + Init(parent); +} + +Parser::LocationRecorder::LocationRecorder(const LocationRecorder& parent, + int path1) { + Init(parent); + AddPath(path1); +} + +Parser::LocationRecorder::LocationRecorder(const LocationRecorder& parent, + int path1, int path2) { + Init(parent); + AddPath(path1); + AddPath(path2); +} + +void Parser::LocationRecorder::Init(const LocationRecorder& parent) { + parser_ = parent.parser_; + location_ = parser_->source_code_info_->add_location(); + location_->mutable_path()->CopyFrom(parent.location_->path()); + + location_->add_span(parser_->input_->current().line); + location_->add_span(parser_->input_->current().column); +} + +Parser::LocationRecorder::~LocationRecorder() { + if (location_->span_size() <= 2) { + EndAt(parser_->input_->previous()); + } +} + +void Parser::LocationRecorder::AddPath(int path_component) { + location_->add_path(path_component); +} + +void Parser::LocationRecorder::StartAt(const io::Tokenizer::Token& token) { + location_->set_span(0, token.line); + location_->set_span(1, token.column); +} + +void Parser::LocationRecorder::EndAt(const io::Tokenizer::Token& token) { + if (token.line != location_->span(0)) { + location_->add_span(token.line); + } + location_->add_span(token.end_column); +} + +void Parser::LocationRecorder::RecordLegacyLocation(const Message* descriptor, + DescriptorPool::ErrorCollector::ErrorLocation location) { + if (parser_->source_location_table_ != NULL) { + parser_->source_location_table_->Add( + descriptor, location, location_->span(0), location_->span(1)); + } +} + +void Parser::LocationRecorder::AttachComments( + string* leading, string* trailing) const { + GOOGLE_CHECK(!location_->has_leading_comments()); + GOOGLE_CHECK(!location_->has_trailing_comments()); + + if (!leading->empty()) { + location_->mutable_leading_comments()->swap(*leading); + } + if (!trailing->empty()) { + location_->mutable_trailing_comments()->swap(*trailing); + } +} + +// ------------------------------------------------------------------- + +void Parser::SkipStatement() { + while (true) { + if (AtEnd()) { + return; + } else if (LookingAtType(io::Tokenizer::TYPE_SYMBOL)) { + if (TryConsumeEndOfDeclaration(";", NULL)) { + return; + } else if (TryConsume("{")) { + SkipRestOfBlock(); + return; + } else if (LookingAt("}")) { + return; + } + } + input_->Next(); + } +} + +void Parser::SkipRestOfBlock() { + while (true) { + if (AtEnd()) { + return; + } else if (LookingAtType(io::Tokenizer::TYPE_SYMBOL)) { + if (TryConsumeEndOfDeclaration("}", NULL)) { + return; + } else if (TryConsume("{")) { + SkipRestOfBlock(); + } + } + input_->Next(); + } +} + +// =================================================================== + +bool Parser::Parse(io::Tokenizer* input, FileDescriptorProto* file) { + input_ = input; + had_errors_ = false; + syntax_identifier_.clear(); + + // Note that |file| could be NULL at this point if + // stop_after_syntax_identifier_ is true. So, we conservatively allocate + // SourceCodeInfo on the stack, then swap it into the FileDescriptorProto + // later on. + SourceCodeInfo source_code_info; + source_code_info_ = &source_code_info; + + if (LookingAtType(io::Tokenizer::TYPE_START)) { + // Advance to first token. + input_->NextWithComments(NULL, NULL, &upcoming_doc_comments_); + } + + { + LocationRecorder root_location(this); + + if (require_syntax_identifier_ || LookingAt("syntax")) { + if (!ParseSyntaxIdentifier()) { + // Don't attempt to parse the file if we didn't recognize the syntax + // identifier. + return false; + } + } else if (!stop_after_syntax_identifier_) { + syntax_identifier_ = "proto2"; + } + + if (stop_after_syntax_identifier_) return !had_errors_; + + // Repeatedly parse statements until we reach the end of the file. + while (!AtEnd()) { + if (!ParseTopLevelStatement(file, root_location)) { + // This statement failed to parse. Skip it, but keep looping to parse + // other statements. + SkipStatement(); + + if (LookingAt("}")) { + AddError("Unmatched \"}\"."); + input_->NextWithComments(NULL, NULL, &upcoming_doc_comments_); + } + } + } + } + + input_ = NULL; + source_code_info_ = NULL; + source_code_info.Swap(file->mutable_source_code_info()); + return !had_errors_; +} + +bool Parser::ParseSyntaxIdentifier() { + DO(Consume("syntax", "File must begin with 'syntax = \"proto2\";'.")); + DO(Consume("=")); + io::Tokenizer::Token syntax_token = input_->current(); + string syntax; + DO(ConsumeString(&syntax, "Expected syntax identifier.")); + DO(ConsumeEndOfDeclaration(";", NULL)); + + syntax_identifier_ = syntax; + + if (syntax != "proto2" && !stop_after_syntax_identifier_) { + AddError(syntax_token.line, syntax_token.column, + "Unrecognized syntax identifier \"" + syntax + "\". This parser " + "only recognizes \"proto2\"."); + return false; + } + + return true; +} + +bool Parser::ParseTopLevelStatement(FileDescriptorProto* file, + const LocationRecorder& root_location) { + if (TryConsumeEndOfDeclaration(";", NULL)) { + // empty statement; ignore + return true; + } else if (LookingAt("message")) { + LocationRecorder location(root_location, + FileDescriptorProto::kMessageTypeFieldNumber, file->message_type_size()); + return ParseMessageDefinition(file->add_message_type(), location); + } else if (LookingAt("enum")) { + LocationRecorder location(root_location, + FileDescriptorProto::kEnumTypeFieldNumber, file->enum_type_size()); + return ParseEnumDefinition(file->add_enum_type(), location); + } else if (LookingAt("service")) { + LocationRecorder location(root_location, + FileDescriptorProto::kServiceFieldNumber, file->service_size()); + return ParseServiceDefinition(file->add_service(), location); + } else if (LookingAt("extend")) { + LocationRecorder location(root_location, + FileDescriptorProto::kExtensionFieldNumber); + return ParseExtend(file->mutable_extension(), + file->mutable_message_type(), + root_location, + FileDescriptorProto::kMessageTypeFieldNumber, + location); + } else if (LookingAt("import")) { + return ParseImport(file->mutable_dependency(), + file->mutable_public_dependency(), + file->mutable_weak_dependency(), + root_location); + } else if (LookingAt("package")) { + return ParsePackage(file, root_location); + } else if (LookingAt("option")) { + LocationRecorder location(root_location, + FileDescriptorProto::kOptionsFieldNumber); + return ParseOption(file->mutable_options(), location, OPTION_STATEMENT); + } else { + AddError("Expected top-level statement (e.g. \"message\")."); + return false; + } +} + +// ------------------------------------------------------------------- +// Messages + +bool Parser::ParseMessageDefinition(DescriptorProto* message, + const LocationRecorder& message_location) { + DO(Consume("message")); + { + LocationRecorder location(message_location, + DescriptorProto::kNameFieldNumber); + location.RecordLegacyLocation( + message, DescriptorPool::ErrorCollector::NAME); + DO(ConsumeIdentifier(message->mutable_name(), "Expected message name.")); + } + DO(ParseMessageBlock(message, message_location)); + return true; +} + +namespace { + +const int kMaxExtensionRangeSentinel = -1; + +bool IsMessageSetWireFormatMessage(const DescriptorProto& message) { + const MessageOptions& options = message.options(); + for (int i = 0; i < options.uninterpreted_option_size(); ++i) { + const UninterpretedOption& uninterpreted = options.uninterpreted_option(i); + if (uninterpreted.name_size() == 1 && + uninterpreted.name(0).name_part() == "message_set_wire_format" && + uninterpreted.identifier_value() == "true") { + return true; + } + } + return false; +} + +// Modifies any extension ranges that specified 'max' as the end of the +// extension range, and sets them to the type-specific maximum. The actual max +// tag number can only be determined after all options have been parsed. +void AdjustExtensionRangesWithMaxEndNumber(DescriptorProto* message) { + const bool is_message_set = IsMessageSetWireFormatMessage(*message); + const int max_extension_number = is_message_set ? + kint32max : + FieldDescriptor::kMaxNumber + 1; + for (int i = 0; i < message->extension_range_size(); ++i) { + if (message->extension_range(i).end() == kMaxExtensionRangeSentinel) { + message->mutable_extension_range(i)->set_end(max_extension_number); + } + } +} + +} // namespace + +bool Parser::ParseMessageBlock(DescriptorProto* message, + const LocationRecorder& message_location) { + DO(ConsumeEndOfDeclaration("{", &message_location)); + + while (!TryConsumeEndOfDeclaration("}", NULL)) { + if (AtEnd()) { + AddError("Reached end of input in message definition (missing '}')."); + return false; + } + + if (!ParseMessageStatement(message, message_location)) { + // This statement failed to parse. Skip it, but keep looping to parse + // other statements. + SkipStatement(); + } + } + + if (message->extension_range_size() > 0) { + AdjustExtensionRangesWithMaxEndNumber(message); + } + return true; +} + +bool Parser::ParseMessageStatement(DescriptorProto* message, + const LocationRecorder& message_location) { + if (TryConsumeEndOfDeclaration(";", NULL)) { + // empty statement; ignore + return true; + } else if (LookingAt("message")) { + LocationRecorder location(message_location, + DescriptorProto::kNestedTypeFieldNumber, + message->nested_type_size()); + return ParseMessageDefinition(message->add_nested_type(), location); + } else if (LookingAt("enum")) { + LocationRecorder location(message_location, + DescriptorProto::kEnumTypeFieldNumber, + message->enum_type_size()); + return ParseEnumDefinition(message->add_enum_type(), location); + } else if (LookingAt("extensions")) { + LocationRecorder location(message_location, + DescriptorProto::kExtensionRangeFieldNumber); + return ParseExtensions(message, location); + } else if (LookingAt("extend")) { + LocationRecorder location(message_location, + DescriptorProto::kExtensionFieldNumber); + return ParseExtend(message->mutable_extension(), + message->mutable_nested_type(), + message_location, + DescriptorProto::kNestedTypeFieldNumber, + location); + } else if (LookingAt("option")) { + LocationRecorder location(message_location, + DescriptorProto::kOptionsFieldNumber); + return ParseOption(message->mutable_options(), location, OPTION_STATEMENT); + } else { + LocationRecorder location(message_location, + DescriptorProto::kFieldFieldNumber, + message->field_size()); + return ParseMessageField(message->add_field(), + message->mutable_nested_type(), + message_location, + DescriptorProto::kNestedTypeFieldNumber, + location); + } +} + +bool Parser::ParseMessageField(FieldDescriptorProto* field, + RepeatedPtrField* messages, + const LocationRecorder& parent_location, + int location_field_number_for_nested_type, + const LocationRecorder& field_location) { + // Parse label and type. + io::Tokenizer::Token label_token = input_->current(); + { + LocationRecorder location(field_location, + FieldDescriptorProto::kLabelFieldNumber); + FieldDescriptorProto::Label label; + DO(ParseLabel(&label)); + field->set_label(label); + } + + { + LocationRecorder location(field_location); // add path later + location.RecordLegacyLocation(field, DescriptorPool::ErrorCollector::TYPE); + + FieldDescriptorProto::Type type = FieldDescriptorProto::TYPE_INT32; + string type_name; + DO(ParseType(&type, &type_name)); + if (type_name.empty()) { + location.AddPath(FieldDescriptorProto::kTypeFieldNumber); + field->set_type(type); + } else { + location.AddPath(FieldDescriptorProto::kTypeNameFieldNumber); + field->set_type_name(type_name); + } + } + + // Parse name and '='. + io::Tokenizer::Token name_token = input_->current(); + { + LocationRecorder location(field_location, + FieldDescriptorProto::kNameFieldNumber); + location.RecordLegacyLocation(field, DescriptorPool::ErrorCollector::NAME); + DO(ConsumeIdentifier(field->mutable_name(), "Expected field name.")); + } + DO(Consume("=", "Missing field number.")); + + // Parse field number. + { + LocationRecorder location(field_location, + FieldDescriptorProto::kNumberFieldNumber); + location.RecordLegacyLocation( + field, DescriptorPool::ErrorCollector::NUMBER); + int number; + DO(ConsumeInteger(&number, "Expected field number.")); + field->set_number(number); + } + + // Parse options. + DO(ParseFieldOptions(field, field_location)); + + // Deal with groups. + if (field->has_type() && field->type() == FieldDescriptorProto::TYPE_GROUP) { + // Awkward: Since a group declares both a message type and a field, we + // have to create overlapping locations. + LocationRecorder group_location(parent_location); + group_location.StartAt(label_token); + group_location.AddPath(location_field_number_for_nested_type); + group_location.AddPath(messages->size()); + + DescriptorProto* group = messages->Add(); + group->set_name(field->name()); + + // Record name location to match the field name's location. + { + LocationRecorder location(group_location, + DescriptorProto::kNameFieldNumber); + location.StartAt(name_token); + location.EndAt(name_token); + location.RecordLegacyLocation( + group, DescriptorPool::ErrorCollector::NAME); + } + + // The field's type_name also comes from the name. Confusing! + { + LocationRecorder location(field_location, + FieldDescriptorProto::kTypeNameFieldNumber); + location.StartAt(name_token); + location.EndAt(name_token); + } + + // As a hack for backwards-compatibility, we force the group name to start + // with a capital letter and lower-case the field name. New code should + // not use groups; it should use nested messages. + if (group->name()[0] < 'A' || 'Z' < group->name()[0]) { + AddError(name_token.line, name_token.column, + "Group names must start with a capital letter."); + } + LowerString(field->mutable_name()); + + field->set_type_name(group->name()); + if (LookingAt("{")) { + DO(ParseMessageBlock(group, group_location)); + } else { + AddError("Missing group body."); + return false; + } + } else { + DO(ConsumeEndOfDeclaration(";", &field_location)); + } + + return true; +} + +bool Parser::ParseFieldOptions(FieldDescriptorProto* field, + const LocationRecorder& field_location) { + if (!LookingAt("[")) return true; + + LocationRecorder location(field_location, + FieldDescriptorProto::kOptionsFieldNumber); + + DO(Consume("[")); + + // Parse field options. + do { + if (LookingAt("default")) { + // We intentionally pass field_location rather than location here, since + // the default value is not actually an option. + DO(ParseDefaultAssignment(field, field_location)); + } else { + DO(ParseOption(field->mutable_options(), location, OPTION_ASSIGNMENT)); + } + } while (TryConsume(",")); + + DO(Consume("]")); + return true; +} + +bool Parser::ParseDefaultAssignment(FieldDescriptorProto* field, + const LocationRecorder& field_location) { + if (field->has_default_value()) { + AddError("Already set option \"default\"."); + field->clear_default_value(); + } + + DO(Consume("default")); + DO(Consume("=")); + + LocationRecorder location(field_location, + FieldDescriptorProto::kDefaultValueFieldNumber); + location.RecordLegacyLocation( + field, DescriptorPool::ErrorCollector::DEFAULT_VALUE); + string* default_value = field->mutable_default_value(); + + if (!field->has_type()) { + // The field has a type name, but we don't know if it is a message or an + // enum yet. Assume an enum for now. + DO(ConsumeIdentifier(default_value, "Expected identifier.")); + return true; + } + + switch (field->type()) { + case FieldDescriptorProto::TYPE_INT32: + case FieldDescriptorProto::TYPE_INT64: + case FieldDescriptorProto::TYPE_SINT32: + case FieldDescriptorProto::TYPE_SINT64: + case FieldDescriptorProto::TYPE_SFIXED32: + case FieldDescriptorProto::TYPE_SFIXED64: { + uint64 max_value = kint64max; + if (field->type() == FieldDescriptorProto::TYPE_INT32 || + field->type() == FieldDescriptorProto::TYPE_SINT32 || + field->type() == FieldDescriptorProto::TYPE_SFIXED32) { + max_value = kint32max; + } + + // These types can be negative. + if (TryConsume("-")) { + default_value->append("-"); + // Two's complement always has one more negative value than positive. + ++max_value; + } + // Parse the integer to verify that it is not out-of-range. + uint64 value; + DO(ConsumeInteger64(max_value, &value, "Expected integer.")); + // And stringify it again. + default_value->append(SimpleItoa(value)); + break; + } + + case FieldDescriptorProto::TYPE_UINT32: + case FieldDescriptorProto::TYPE_UINT64: + case FieldDescriptorProto::TYPE_FIXED32: + case FieldDescriptorProto::TYPE_FIXED64: { + uint64 max_value = kuint64max; + if (field->type() == FieldDescriptorProto::TYPE_UINT32 || + field->type() == FieldDescriptorProto::TYPE_FIXED32) { + max_value = kuint32max; + } + + // Numeric, not negative. + if (TryConsume("-")) { + AddError("Unsigned field can't have negative default value."); + } + // Parse the integer to verify that it is not out-of-range. + uint64 value; + DO(ConsumeInteger64(max_value, &value, "Expected integer.")); + // And stringify it again. + default_value->append(SimpleItoa(value)); + break; + } + + case FieldDescriptorProto::TYPE_FLOAT: + case FieldDescriptorProto::TYPE_DOUBLE: + // These types can be negative. + if (TryConsume("-")) { + default_value->append("-"); + } + // Parse the integer because we have to convert hex integers to decimal + // floats. + double value; + DO(ConsumeNumber(&value, "Expected number.")); + // And stringify it again. + default_value->append(SimpleDtoa(value)); + break; + + case FieldDescriptorProto::TYPE_BOOL: + if (TryConsume("true")) { + default_value->assign("true"); + } else if (TryConsume("false")) { + default_value->assign("false"); + } else { + AddError("Expected \"true\" or \"false\"."); + return false; + } + break; + + case FieldDescriptorProto::TYPE_STRING: + DO(ConsumeString(default_value, "Expected string.")); + break; + + case FieldDescriptorProto::TYPE_BYTES: + DO(ConsumeString(default_value, "Expected string.")); + *default_value = CEscape(*default_value); + break; + + case FieldDescriptorProto::TYPE_ENUM: + DO(ConsumeIdentifier(default_value, "Expected identifier.")); + break; + + case FieldDescriptorProto::TYPE_MESSAGE: + case FieldDescriptorProto::TYPE_GROUP: + AddError("Messages can't have default values."); + return false; + } + + return true; +} + +bool Parser::ParseOptionNamePart(UninterpretedOption* uninterpreted_option, + const LocationRecorder& part_location) { + UninterpretedOption::NamePart* name = uninterpreted_option->add_name(); + string identifier; // We parse identifiers into this string. + if (LookingAt("(")) { // This is an extension. + DO(Consume("(")); + + { + LocationRecorder location( + part_location, UninterpretedOption::NamePart::kNamePartFieldNumber); + // An extension name consists of dot-separated identifiers, and may begin + // with a dot. + if (LookingAtType(io::Tokenizer::TYPE_IDENTIFIER)) { + DO(ConsumeIdentifier(&identifier, "Expected identifier.")); + name->mutable_name_part()->append(identifier); + } + while (LookingAt(".")) { + DO(Consume(".")); + name->mutable_name_part()->append("."); + DO(ConsumeIdentifier(&identifier, "Expected identifier.")); + name->mutable_name_part()->append(identifier); + } + } + + DO(Consume(")")); + name->set_is_extension(true); + } else { // This is a regular field. + LocationRecorder location( + part_location, UninterpretedOption::NamePart::kNamePartFieldNumber); + DO(ConsumeIdentifier(&identifier, "Expected identifier.")); + name->mutable_name_part()->append(identifier); + name->set_is_extension(false); + } + return true; +} + +bool Parser::ParseUninterpretedBlock(string* value) { + // Note that enclosing braces are not added to *value. + // We do NOT use ConsumeEndOfStatement for this brace because it's delimiting + // an expression, not a block of statements. + DO(Consume("{")); + int brace_depth = 1; + while (!AtEnd()) { + if (LookingAt("{")) { + brace_depth++; + } else if (LookingAt("}")) { + brace_depth--; + if (brace_depth == 0) { + input_->Next(); + return true; + } + } + // TODO(sanjay): Interpret line/column numbers to preserve formatting + if (!value->empty()) value->push_back(' '); + value->append(input_->current().text); + input_->Next(); + } + AddError("Unexpected end of stream while parsing aggregate value."); + return false; +} + +// We don't interpret the option here. Instead we store it in an +// UninterpretedOption, to be interpreted later. +bool Parser::ParseOption(Message* options, + const LocationRecorder& options_location, + OptionStyle style) { + // Create an entry in the uninterpreted_option field. + const FieldDescriptor* uninterpreted_option_field = options->GetDescriptor()-> + FindFieldByName("uninterpreted_option"); + GOOGLE_CHECK(uninterpreted_option_field != NULL) + << "No field named \"uninterpreted_option\" in the Options proto."; + + const Reflection* reflection = options->GetReflection(); + + LocationRecorder location( + options_location, uninterpreted_option_field->number(), + reflection->FieldSize(*options, uninterpreted_option_field)); + + if (style == OPTION_STATEMENT) { + DO(Consume("option")); + } + + UninterpretedOption* uninterpreted_option = down_cast( + options->GetReflection()->AddMessage(options, + uninterpreted_option_field)); + + // Parse dot-separated name. + { + LocationRecorder name_location(location, + UninterpretedOption::kNameFieldNumber); + name_location.RecordLegacyLocation( + uninterpreted_option, DescriptorPool::ErrorCollector::OPTION_NAME); + + { + LocationRecorder part_location(name_location, + uninterpreted_option->name_size()); + DO(ParseOptionNamePart(uninterpreted_option, part_location)); + } + + while (LookingAt(".")) { + DO(Consume(".")); + LocationRecorder part_location(name_location, + uninterpreted_option->name_size()); + DO(ParseOptionNamePart(uninterpreted_option, part_location)); + } + } + + DO(Consume("=")); + + { + LocationRecorder value_location(location); + value_location.RecordLegacyLocation( + uninterpreted_option, DescriptorPool::ErrorCollector::OPTION_VALUE); + + // All values are a single token, except for negative numbers, which consist + // of a single '-' symbol, followed by a positive number. + bool is_negative = TryConsume("-"); + + switch (input_->current().type) { + case io::Tokenizer::TYPE_START: + GOOGLE_LOG(FATAL) << "Trying to read value before any tokens have been read."; + return false; + + case io::Tokenizer::TYPE_END: + AddError("Unexpected end of stream while parsing option value."); + return false; + + case io::Tokenizer::TYPE_IDENTIFIER: { + value_location.AddPath( + UninterpretedOption::kIdentifierValueFieldNumber); + if (is_negative) { + AddError("Invalid '-' symbol before identifier."); + return false; + } + string value; + DO(ConsumeIdentifier(&value, "Expected identifier.")); + uninterpreted_option->set_identifier_value(value); + break; + } + + case io::Tokenizer::TYPE_INTEGER: { + uint64 value; + uint64 max_value = + is_negative ? static_cast(kint64max) + 1 : kuint64max; + DO(ConsumeInteger64(max_value, &value, "Expected integer.")); + if (is_negative) { + value_location.AddPath( + UninterpretedOption::kNegativeIntValueFieldNumber); + uninterpreted_option->set_negative_int_value( + -static_cast(value)); + } else { + value_location.AddPath( + UninterpretedOption::kPositiveIntValueFieldNumber); + uninterpreted_option->set_positive_int_value(value); + } + break; + } + + case io::Tokenizer::TYPE_FLOAT: { + value_location.AddPath(UninterpretedOption::kDoubleValueFieldNumber); + double value; + DO(ConsumeNumber(&value, "Expected number.")); + uninterpreted_option->set_double_value(is_negative ? -value : value); + break; + } + + case io::Tokenizer::TYPE_STRING: { + value_location.AddPath(UninterpretedOption::kStringValueFieldNumber); + if (is_negative) { + AddError("Invalid '-' symbol before string."); + return false; + } + string value; + DO(ConsumeString(&value, "Expected string.")); + uninterpreted_option->set_string_value(value); + break; + } + + case io::Tokenizer::TYPE_SYMBOL: + if (LookingAt("{")) { + value_location.AddPath( + UninterpretedOption::kAggregateValueFieldNumber); + DO(ParseUninterpretedBlock( + uninterpreted_option->mutable_aggregate_value())); + } else { + AddError("Expected option value."); + return false; + } + break; + } + } + + if (style == OPTION_STATEMENT) { + DO(ConsumeEndOfDeclaration(";", &location)); + } + + return true; +} + +bool Parser::ParseExtensions(DescriptorProto* message, + const LocationRecorder& extensions_location) { + // Parse the declaration. + DO(Consume("extensions")); + + do { + // Note that kExtensionRangeFieldNumber was already pushed by the parent. + LocationRecorder location(extensions_location, + message->extension_range_size()); + + DescriptorProto::ExtensionRange* range = message->add_extension_range(); + location.RecordLegacyLocation( + range, DescriptorPool::ErrorCollector::NUMBER); + + int start, end; + io::Tokenizer::Token start_token; + + { + LocationRecorder start_location( + location, DescriptorProto::ExtensionRange::kStartFieldNumber); + start_token = input_->current(); + DO(ConsumeInteger(&start, "Expected field number range.")); + } + + if (TryConsume("to")) { + LocationRecorder end_location( + location, DescriptorProto::ExtensionRange::kEndFieldNumber); + if (TryConsume("max")) { + // Set to the sentinel value - 1 since we increment the value below. + // The actual value of the end of the range should be set with + // AdjustExtensionRangesWithMaxEndNumber. + end = kMaxExtensionRangeSentinel - 1; + } else { + DO(ConsumeInteger(&end, "Expected integer.")); + } + } else { + LocationRecorder end_location( + location, DescriptorProto::ExtensionRange::kEndFieldNumber); + end_location.StartAt(start_token); + end_location.EndAt(start_token); + end = start; + } + + // Users like to specify inclusive ranges, but in code we like the end + // number to be exclusive. + ++end; + + range->set_start(start); + range->set_end(end); + } while (TryConsume(",")); + + DO(ConsumeEndOfDeclaration(";", &extensions_location)); + return true; +} + +bool Parser::ParseExtend(RepeatedPtrField* extensions, + RepeatedPtrField* messages, + const LocationRecorder& parent_location, + int location_field_number_for_nested_type, + const LocationRecorder& extend_location) { + DO(Consume("extend")); + + // Parse the extendee type. + io::Tokenizer::Token extendee_start = input_->current(); + string extendee; + DO(ParseUserDefinedType(&extendee)); + io::Tokenizer::Token extendee_end = input_->previous(); + + // Parse the block. + DO(ConsumeEndOfDeclaration("{", &extend_location)); + + bool is_first = true; + + do { + if (AtEnd()) { + AddError("Reached end of input in extend definition (missing '}')."); + return false; + } + + // Note that kExtensionFieldNumber was already pushed by the parent. + LocationRecorder location(extend_location, extensions->size()); + + FieldDescriptorProto* field = extensions->Add(); + + { + LocationRecorder extendee_location( + location, FieldDescriptorProto::kExtendeeFieldNumber); + extendee_location.StartAt(extendee_start); + extendee_location.EndAt(extendee_end); + + if (is_first) { + extendee_location.RecordLegacyLocation( + field, DescriptorPool::ErrorCollector::EXTENDEE); + is_first = false; + } + } + + field->set_extendee(extendee); + + if (!ParseMessageField(field, messages, parent_location, + location_field_number_for_nested_type, + location)) { + // This statement failed to parse. Skip it, but keep looping to parse + // other statements. + SkipStatement(); + } + } while (!TryConsumeEndOfDeclaration("}", NULL)); + + return true; +} + +// ------------------------------------------------------------------- +// Enums + +bool Parser::ParseEnumDefinition(EnumDescriptorProto* enum_type, + const LocationRecorder& enum_location) { + DO(Consume("enum")); + + { + LocationRecorder location(enum_location, + EnumDescriptorProto::kNameFieldNumber); + location.RecordLegacyLocation( + enum_type, DescriptorPool::ErrorCollector::NAME); + DO(ConsumeIdentifier(enum_type->mutable_name(), "Expected enum name.")); + } + + DO(ParseEnumBlock(enum_type, enum_location)); + return true; +} + +bool Parser::ParseEnumBlock(EnumDescriptorProto* enum_type, + const LocationRecorder& enum_location) { + DO(ConsumeEndOfDeclaration("{", &enum_location)); + + while (!TryConsumeEndOfDeclaration("}", NULL)) { + if (AtEnd()) { + AddError("Reached end of input in enum definition (missing '}')."); + return false; + } + + if (!ParseEnumStatement(enum_type, enum_location)) { + // This statement failed to parse. Skip it, but keep looping to parse + // other statements. + SkipStatement(); + } + } + + return true; +} + +bool Parser::ParseEnumStatement(EnumDescriptorProto* enum_type, + const LocationRecorder& enum_location) { + if (TryConsumeEndOfDeclaration(";", NULL)) { + // empty statement; ignore + return true; + } else if (LookingAt("option")) { + LocationRecorder location(enum_location, + EnumDescriptorProto::kOptionsFieldNumber); + return ParseOption(enum_type->mutable_options(), location, + OPTION_STATEMENT); + } else { + LocationRecorder location(enum_location, + EnumDescriptorProto::kValueFieldNumber, enum_type->value_size()); + return ParseEnumConstant(enum_type->add_value(), location); + } +} + +bool Parser::ParseEnumConstant(EnumValueDescriptorProto* enum_value, + const LocationRecorder& enum_value_location) { + // Parse name. + { + LocationRecorder location(enum_value_location, + EnumValueDescriptorProto::kNameFieldNumber); + location.RecordLegacyLocation( + enum_value, DescriptorPool::ErrorCollector::NAME); + DO(ConsumeIdentifier(enum_value->mutable_name(), + "Expected enum constant name.")); + } + + DO(Consume("=", "Missing numeric value for enum constant.")); + + // Parse value. + { + LocationRecorder location( + enum_value_location, EnumValueDescriptorProto::kNumberFieldNumber); + location.RecordLegacyLocation( + enum_value, DescriptorPool::ErrorCollector::NUMBER); + + int number; + DO(ConsumeSignedInteger(&number, "Expected integer.")); + enum_value->set_number(number); + } + + DO(ParseEnumConstantOptions(enum_value, enum_value_location)); + + DO(ConsumeEndOfDeclaration(";", &enum_value_location)); + + return true; +} + +bool Parser::ParseEnumConstantOptions( + EnumValueDescriptorProto* value, + const LocationRecorder& enum_value_location) { + if (!LookingAt("[")) return true; + + LocationRecorder location( + enum_value_location, EnumValueDescriptorProto::kOptionsFieldNumber); + + DO(Consume("[")); + + do { + DO(ParseOption(value->mutable_options(), location, OPTION_ASSIGNMENT)); + } while (TryConsume(",")); + + DO(Consume("]")); + return true; +} + +// ------------------------------------------------------------------- +// Services + +bool Parser::ParseServiceDefinition(ServiceDescriptorProto* service, + const LocationRecorder& service_location) { + DO(Consume("service")); + + { + LocationRecorder location(service_location, + ServiceDescriptorProto::kNameFieldNumber); + location.RecordLegacyLocation( + service, DescriptorPool::ErrorCollector::NAME); + DO(ConsumeIdentifier(service->mutable_name(), "Expected service name.")); + } + + DO(ParseServiceBlock(service, service_location)); + return true; +} + +bool Parser::ParseServiceBlock(ServiceDescriptorProto* service, + const LocationRecorder& service_location) { + DO(ConsumeEndOfDeclaration("{", &service_location)); + + while (!TryConsumeEndOfDeclaration("}", NULL)) { + if (AtEnd()) { + AddError("Reached end of input in service definition (missing '}')."); + return false; + } + + if (!ParseServiceStatement(service, service_location)) { + // This statement failed to parse. Skip it, but keep looping to parse + // other statements. + SkipStatement(); + } + } + + return true; +} + +bool Parser::ParseServiceStatement(ServiceDescriptorProto* service, + const LocationRecorder& service_location) { + if (TryConsumeEndOfDeclaration(";", NULL)) { + // empty statement; ignore + return true; + } else if (LookingAt("option")) { + LocationRecorder location( + service_location, ServiceDescriptorProto::kOptionsFieldNumber); + return ParseOption(service->mutable_options(), location, OPTION_STATEMENT); + } else { + LocationRecorder location(service_location, + ServiceDescriptorProto::kMethodFieldNumber, service->method_size()); + return ParseServiceMethod(service->add_method(), location); + } +} + +bool Parser::ParseServiceMethod(MethodDescriptorProto* method, + const LocationRecorder& method_location) { + DO(Consume("rpc")); + + { + LocationRecorder location(method_location, + MethodDescriptorProto::kNameFieldNumber); + location.RecordLegacyLocation( + method, DescriptorPool::ErrorCollector::NAME); + DO(ConsumeIdentifier(method->mutable_name(), "Expected method name.")); + } + + // Parse input type. + DO(Consume("(")); + { + LocationRecorder location(method_location, + MethodDescriptorProto::kInputTypeFieldNumber); + location.RecordLegacyLocation( + method, DescriptorPool::ErrorCollector::INPUT_TYPE); + DO(ParseUserDefinedType(method->mutable_input_type())); + } + DO(Consume(")")); + + // Parse output type. + DO(Consume("returns")); + DO(Consume("(")); + { + LocationRecorder location(method_location, + MethodDescriptorProto::kOutputTypeFieldNumber); + location.RecordLegacyLocation( + method, DescriptorPool::ErrorCollector::OUTPUT_TYPE); + DO(ParseUserDefinedType(method->mutable_output_type())); + } + DO(Consume(")")); + + if (LookingAt("{")) { + // Options! + DO(ParseOptions(method_location, + MethodDescriptorProto::kOptionsFieldNumber, + method->mutable_options())); + } else { + DO(ConsumeEndOfDeclaration(";", &method_location)); + } + + return true; +} + + +bool Parser::ParseOptions(const LocationRecorder& parent_location, + const int optionsFieldNumber, + Message* mutable_options) { + // Options! + ConsumeEndOfDeclaration("{", &parent_location); + while (!TryConsumeEndOfDeclaration("}", NULL)) { + if (AtEnd()) { + AddError("Reached end of input in method options (missing '}')."); + return false; + } + + if (TryConsumeEndOfDeclaration(";", NULL)) { + // empty statement; ignore + } else { + LocationRecorder location(parent_location, + optionsFieldNumber); + if (!ParseOption(mutable_options, location, OPTION_STATEMENT)) { + // This statement failed to parse. Skip it, but keep looping to + // parse other statements. + SkipStatement(); + } + } + } + + return true; +} + +// ------------------------------------------------------------------- + +bool Parser::ParseLabel(FieldDescriptorProto::Label* label) { + if (TryConsume("optional")) { + *label = FieldDescriptorProto::LABEL_OPTIONAL; + return true; + } else if (TryConsume("repeated")) { + *label = FieldDescriptorProto::LABEL_REPEATED; + return true; + } else if (TryConsume("required")) { + *label = FieldDescriptorProto::LABEL_REQUIRED; + return true; + } else { + AddError("Expected \"required\", \"optional\", or \"repeated\"."); + // We can actually reasonably recover here by just assuming the user + // forgot the label altogether. + *label = FieldDescriptorProto::LABEL_OPTIONAL; + return true; + } +} + +bool Parser::ParseType(FieldDescriptorProto::Type* type, + string* type_name) { + TypeNameMap::const_iterator iter = kTypeNames.find(input_->current().text); + if (iter != kTypeNames.end()) { + *type = iter->second; + input_->Next(); + } else { + DO(ParseUserDefinedType(type_name)); + } + return true; +} + +bool Parser::ParseUserDefinedType(string* type_name) { + type_name->clear(); + + TypeNameMap::const_iterator iter = kTypeNames.find(input_->current().text); + if (iter != kTypeNames.end()) { + // Note: The only place enum types are allowed is for field types, but + // if we are parsing a field type then we would not get here because + // primitives are allowed there as well. So this error message doesn't + // need to account for enums. + AddError("Expected message type."); + + // Pretend to accept this type so that we can go on parsing. + *type_name = input_->current().text; + input_->Next(); + return true; + } + + // A leading "." means the name is fully-qualified. + if (TryConsume(".")) type_name->append("."); + + // Consume the first part of the name. + string identifier; + DO(ConsumeIdentifier(&identifier, "Expected type name.")); + type_name->append(identifier); + + // Consume more parts. + while (TryConsume(".")) { + type_name->append("."); + DO(ConsumeIdentifier(&identifier, "Expected identifier.")); + type_name->append(identifier); + } + + return true; +} + +// =================================================================== + +bool Parser::ParsePackage(FileDescriptorProto* file, + const LocationRecorder& root_location) { + if (file->has_package()) { + AddError("Multiple package definitions."); + // Don't append the new package to the old one. Just replace it. Not + // that it really matters since this is an error anyway. + file->clear_package(); + } + + DO(Consume("package")); + + { + LocationRecorder location(root_location, + FileDescriptorProto::kPackageFieldNumber); + location.RecordLegacyLocation(file, DescriptorPool::ErrorCollector::NAME); + + while (true) { + string identifier; + DO(ConsumeIdentifier(&identifier, "Expected identifier.")); + file->mutable_package()->append(identifier); + if (!TryConsume(".")) break; + file->mutable_package()->append("."); + } + + location.EndAt(input_->previous()); + + DO(ConsumeEndOfDeclaration(";", &location)); + } + + return true; +} + +bool Parser::ParseImport(RepeatedPtrField* dependency, + RepeatedField* public_dependency, + RepeatedField* weak_dependency, + const LocationRecorder& root_location) { + DO(Consume("import")); + if (LookingAt("public")) { + LocationRecorder location( + root_location, FileDescriptorProto::kPublicDependencyFieldNumber, + public_dependency->size()); + DO(Consume("public")); + *public_dependency->Add() = dependency->size(); + } else if (LookingAt("weak")) { + LocationRecorder location( + root_location, FileDescriptorProto::kWeakDependencyFieldNumber, + weak_dependency->size()); + DO(Consume("weak")); + *weak_dependency->Add() = dependency->size(); + } + { + LocationRecorder location(root_location, + FileDescriptorProto::kDependencyFieldNumber, + dependency->size()); + DO(ConsumeString(dependency->Add(), + "Expected a string naming the file to import.")); + + location.EndAt(input_->previous()); + + DO(ConsumeEndOfDeclaration(";", &location)); + } + return true; +} + +// =================================================================== + +SourceLocationTable::SourceLocationTable() {} +SourceLocationTable::~SourceLocationTable() {} + +bool SourceLocationTable::Find( + const Message* descriptor, + DescriptorPool::ErrorCollector::ErrorLocation location, + int* line, int* column) const { + const pair* result = + FindOrNull(location_map_, make_pair(descriptor, location)); + if (result == NULL) { + *line = -1; + *column = 0; + return false; + } else { + *line = result->first; + *column = result->second; + return true; + } +} + +void SourceLocationTable::Add( + const Message* descriptor, + DescriptorPool::ErrorCollector::ErrorLocation location, + int line, int column) { + location_map_[make_pair(descriptor, location)] = make_pair(line, column); +} + +void SourceLocationTable::Clear() { + location_map_.clear(); +} + +} // namespace compiler +} // namespace protobuf +} // namespace google diff --git a/cpp/thirdparty/protobuf-2.3.0/src/google/protobuf/compiler/parser.h b/cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/compiler/parser.h similarity index 59% rename from cpp/thirdparty/protobuf-2.3.0/src/google/protobuf/compiler/parser.h rename to cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/compiler/parser.h index 72c96d047..cfd3649be 100644 --- a/cpp/thirdparty/protobuf-2.3.0/src/google/protobuf/compiler/parser.h +++ b/cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/compiler/parser.h @@ -74,6 +74,9 @@ class LIBPROTOBUF_EXPORT Parser { // Optional fetaures: + // DEPRECATED: New code should use the SourceCodeInfo embedded in the + // FileDescriptorProto. + // // Requests that locations of certain definitions be recorded to the given // SourceLocationTable while parsing. This can be used to look up exact line // and column numbers for errors reported by DescriptorPool during validation. @@ -82,7 +85,7 @@ class LIBPROTOBUF_EXPORT Parser { source_location_table_ = location_table; } - // Requsets that errors be recorded to the given ErrorCollector while + // Requests that errors be recorded to the given ErrorCollector while // parsing. Set to NULL (the default) to discard error messages. void RecordErrorsTo(io::ErrorCollector* error_collector) { error_collector_ = error_collector; @@ -113,6 +116,8 @@ class LIBPROTOBUF_EXPORT Parser { } private: + class LocationRecorder; + // ================================================================= // Error recovery helpers @@ -161,6 +166,8 @@ class LIBPROTOBUF_EXPORT Parser { bool ConsumeIdentifier(string* output, const char* error); // Consume an integer and store its value in "output". bool ConsumeInteger(int* output, const char* error); + // Consume a signed integer and store its value in "output". + bool ConsumeSignedInteger(int* output, const char* error); // Consume a 64-bit integer and store its value in "output". If the value // is greater than max_value, an error will be reported. bool ConsumeInteger64(uint64 max_value, uint64* output, const char* error); @@ -170,6 +177,20 @@ class LIBPROTOBUF_EXPORT Parser { // Consume a string literal and store its (unescaped) value in "output". bool ConsumeString(string* output, const char* error); + // Consume a token representing the end of the statement. Comments between + // this token and the next will be harvested for documentation. The given + // LocationRecorder should refer to the declaration that was just parsed; + // it will be populated with these comments. + // + // TODO(kenton): The LocationRecorder is const because historically locations + // have been passed around by const reference, for no particularly good + // reason. We should probably go through and change them all to mutable + // pointer to make this more intuitive. + bool TryConsumeEndOfDeclaration(const char* text, + const LocationRecorder* location); + bool ConsumeEndOfDeclaration(const char* text, + const LocationRecorder* location); + // ----------------------------------------------------------------- // Error logging helpers @@ -180,16 +201,64 @@ class LIBPROTOBUF_EXPORT Parser { // of the current token. void AddError(const string& error); - // Record the given line and column and associate it with this descriptor - // in the SourceLocationTable. - void RecordLocation(const Message* descriptor, - DescriptorPool::ErrorCollector::ErrorLocation location, - int line, int column); - - // Record the current line and column and associate it with this descriptor - // in the SourceLocationTable. - void RecordLocation(const Message* descriptor, - DescriptorPool::ErrorCollector::ErrorLocation location); + // Records a location in the SourceCodeInfo.location table (see + // descriptor.proto). We use RAII to ensure that the start and end locations + // are recorded -- the constructor records the start location and the + // destructor records the end location. Since the parser is + // recursive-descent, this works out beautifully. + class LIBPROTOBUF_EXPORT LocationRecorder { + public: + // Construct the file's "root" location. + LocationRecorder(Parser* parser); + + // Construct a location that represents a declaration nested within the + // given parent. E.g. a field's location is nested within the location + // for a message type. The parent's path will be copied, so you should + // call AddPath() only to add the path components leading from the parent + // to the child (as opposed to leading from the root to the child). + LocationRecorder(const LocationRecorder& parent); + + // Convenience constructors that call AddPath() one or two times. + LocationRecorder(const LocationRecorder& parent, int path1); + LocationRecorder(const LocationRecorder& parent, int path1, int path2); + + ~LocationRecorder(); + + // Add a path component. See SourceCodeInfo.Location.path in + // descriptor.proto. + void AddPath(int path_component); + + // By default the location is considered to start at the current token at + // the time the LocationRecorder is created. StartAt() sets the start + // location to the given token instead. + void StartAt(const io::Tokenizer::Token& token); + + // By default the location is considered to end at the previous token at + // the time the LocationRecorder is destroyed. EndAt() sets the end + // location to the given token instead. + void EndAt(const io::Tokenizer::Token& token); + + // Records the start point of this location to the SourceLocationTable that + // was passed to RecordSourceLocationsTo(), if any. SourceLocationTable + // is an older way of keeping track of source locations which is still + // used in some places. + void RecordLegacyLocation(const Message* descriptor, + DescriptorPool::ErrorCollector::ErrorLocation location); + + // Attaches leading and trailing comments to the location. The two strings + // will be swapped into place, so after this is called *leading and + // *trailing will be empty. + // + // TODO(kenton): See comment on TryConsumeEndOfDeclaration(), above, for + // why this is const. + void AttachComments(string* leading, string* trailing) const; + + private: + Parser* parser_; + SourceCodeInfo::Location* location_; + + void Init(const LocationRecorder& parent); + }; // ================================================================= // Parsers for various language constructs @@ -210,50 +279,88 @@ class LIBPROTOBUF_EXPORT Parser { // makes logic much simpler for the caller. // Parse a top-level message, enum, service, etc. - bool ParseTopLevelStatement(FileDescriptorProto* file); + bool ParseTopLevelStatement(FileDescriptorProto* file, + const LocationRecorder& root_location); // Parse various language high-level language construrcts. - bool ParseMessageDefinition(DescriptorProto* message); - bool ParseEnumDefinition(EnumDescriptorProto* enum_type); - bool ParseServiceDefinition(ServiceDescriptorProto* service); - bool ParsePackage(FileDescriptorProto* file); - bool ParseImport(string* import_filename); - bool ParseOption(Message* options); + bool ParseMessageDefinition(DescriptorProto* message, + const LocationRecorder& message_location); + bool ParseEnumDefinition(EnumDescriptorProto* enum_type, + const LocationRecorder& enum_location); + bool ParseServiceDefinition(ServiceDescriptorProto* service, + const LocationRecorder& service_location); + bool ParsePackage(FileDescriptorProto* file, + const LocationRecorder& root_location); + bool ParseImport(RepeatedPtrField* dependency, + RepeatedField* public_dependency, + RepeatedField* weak_dependency, + const LocationRecorder& root_location); + bool ParseOption(Message* options, + const LocationRecorder& options_location); // These methods parse the contents of a message, enum, or service type and // add them to the given object. They consume the entire block including // the beginning and ending brace. - bool ParseMessageBlock(DescriptorProto* message); - bool ParseEnumBlock(EnumDescriptorProto* enum_type); - bool ParseServiceBlock(ServiceDescriptorProto* service); + bool ParseMessageBlock(DescriptorProto* message, + const LocationRecorder& message_location); + bool ParseEnumBlock(EnumDescriptorProto* enum_type, + const LocationRecorder& enum_location); + bool ParseServiceBlock(ServiceDescriptorProto* service, + const LocationRecorder& service_location); // Parse one statement within a message, enum, or service block, inclunding // final semicolon. - bool ParseMessageStatement(DescriptorProto* message); - bool ParseEnumStatement(EnumDescriptorProto* message); - bool ParseServiceStatement(ServiceDescriptorProto* message); + bool ParseMessageStatement(DescriptorProto* message, + const LocationRecorder& message_location); + bool ParseEnumStatement(EnumDescriptorProto* message, + const LocationRecorder& enum_location); + bool ParseServiceStatement(ServiceDescriptorProto* message, + const LocationRecorder& service_location); // Parse a field of a message. If the field is a group, its type will be // added to "messages". + // + // parent_location and location_field_number_for_nested_type are needed when + // parsing groups -- we need to generate a nested message type within the + // parent and record its location accordingly. Since the parent could be + // either a FileDescriptorProto or a DescriptorProto, we must pass in the + // correct field number to use. bool ParseMessageField(FieldDescriptorProto* field, - RepeatedPtrField* messages); + RepeatedPtrField* messages, + const LocationRecorder& parent_location, + int location_field_number_for_nested_type, + const LocationRecorder& field_location); // Parse an "extensions" declaration. - bool ParseExtensions(DescriptorProto* message); + bool ParseExtensions(DescriptorProto* message, + const LocationRecorder& extensions_location); - // Parse an "extend" declaration. + // Parse an "extend" declaration. (See also comments for + // ParseMessageField().) bool ParseExtend(RepeatedPtrField* extensions, - RepeatedPtrField* messages); + RepeatedPtrField* messages, + const LocationRecorder& parent_location, + int location_field_number_for_nested_type, + const LocationRecorder& extend_location); // Parse a single enum value within an enum block. - bool ParseEnumConstant(EnumValueDescriptorProto* enum_value); + bool ParseEnumConstant(EnumValueDescriptorProto* enum_value, + const LocationRecorder& enum_value_location); // Parse enum constant options, i.e. the list in square brackets at the end // of the enum constant value definition. - bool ParseEnumConstantOptions(EnumValueDescriptorProto* value); + bool ParseEnumConstantOptions(EnumValueDescriptorProto* value, + const LocationRecorder& enum_value_location); // Parse a single method within a service definition. - bool ParseServiceMethod(MethodDescriptorProto* method); + bool ParseServiceMethod(MethodDescriptorProto* method, + const LocationRecorder& method_location); + + + // Parse options of a single method or stream. + bool ParseOptions(const LocationRecorder& parent_location, + const int optionsFieldNumber, + Message* mutable_options); // Parse "required", "optional", or "repeated" and fill in "label" // with the value. @@ -269,39 +376,71 @@ class LIBPROTOBUF_EXPORT Parser { // Parses field options, i.e. the stuff in square brackets at the end // of a field definition. Also parses default value. - bool ParseFieldOptions(FieldDescriptorProto* field); + bool ParseFieldOptions(FieldDescriptorProto* field, + const LocationRecorder& field_location); // Parse the "default" option. This needs special handling because its // type is the field's type. - bool ParseDefaultAssignment(FieldDescriptorProto* field); + bool ParseDefaultAssignment(FieldDescriptorProto* field, + const LocationRecorder& field_location); + + enum OptionStyle { + OPTION_ASSIGNMENT, // just "name = value" + OPTION_STATEMENT // "option name = value;" + }; // Parse a single option name/value pair, e.g. "ctype = CORD". The name // identifies a field of the given Message, and the value of that field // is set to the parsed value. - bool ParseOptionAssignment(Message* options); + bool ParseOption(Message* options, + const LocationRecorder& options_location, + OptionStyle style); // Parses a single part of a multipart option name. A multipart name consists // of names separated by dots. Each name is either an identifier or a series // of identifiers separated by dots and enclosed in parentheses. E.g., // "foo.(bar.baz).qux". - bool ParseOptionNamePart(UninterpretedOption* uninterpreted_option); + bool ParseOptionNamePart(UninterpretedOption* uninterpreted_option, + const LocationRecorder& part_location); + + // Parses a string surrounded by balanced braces. Strips off the outer + // braces and stores the enclosed string in *value. + // E.g., + // { foo } *value gets 'foo' + // { foo { bar: box } } *value gets 'foo { bar: box }' + // {} *value gets '' + // + // REQUIRES: LookingAt("{") + // When finished successfully, we are looking at the first token past + // the ending brace. + bool ParseUninterpretedBlock(string* value); // ================================================================= io::Tokenizer* input_; io::ErrorCollector* error_collector_; - SourceLocationTable* source_location_table_; + SourceCodeInfo* source_code_info_; + SourceLocationTable* source_location_table_; // legacy bool had_errors_; bool require_syntax_identifier_; bool stop_after_syntax_identifier_; string syntax_identifier_; + // Leading doc comments for the next declaration. These are not complete + // yet; use ConsumeEndOfDeclaration() to get the complete comments. + string upcoming_doc_comments_; + GOOGLE_DISALLOW_EVIL_CONSTRUCTORS(Parser); }; // A table mapping (descriptor, ErrorLocation) pairs -- as reported by // DescriptorPool when validating descriptors -- to line and column numbers // within the original source code. +// +// This is semi-obsolete: FileDescriptorProto.source_code_info now contains +// far more complete information about source locations. However, as of this +// writing you still need to use SourceLocationTable when integrating with +// DescriptorPool. class LIBPROTOBUF_EXPORT SourceLocationTable { public: SourceLocationTable(); diff --git a/cpp/thirdparty/protobuf-2.3.0/src/google/protobuf/compiler/parser_unittest.cc b/cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/compiler/parser_unittest.cc similarity index 51% rename from cpp/thirdparty/protobuf-2.3.0/src/google/protobuf/compiler/parser_unittest.cc rename to cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/compiler/parser_unittest.cc index e2262b8b7..c61ac60ec 100644 --- a/cpp/thirdparty/protobuf-2.3.0/src/google/protobuf/compiler/parser_unittest.cc +++ b/cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/compiler/parser_unittest.cc @@ -34,6 +34,7 @@ #include #include +#include #include @@ -43,8 +44,10 @@ #include #include #include +#include #include #include +#include #include #include @@ -118,6 +121,9 @@ class ParserTest : public testing::Test { EXPECT_EQ(io::Tokenizer::TYPE_END, input_->current().type); ASSERT_EQ("", error_collector_.text_); + // We don't cover SourceCodeInfo in these tests. + actual.clear_source_code_info(); + // Parse the ASCII representation in order to canonicalize it. We could // just compare directly to actual.DebugString(), but that would require // that the caller precisely match the formatting that DebugString() @@ -504,6 +510,31 @@ TEST_F(ParseMessageTest, CompoundExtensionRange) { "}"); } +TEST_F(ParseMessageTest, LargerMaxForMessageSetWireFormatMessages) { + // Messages using the message_set_wire_format option can accept larger + // extension numbers, as the numbers are not encoded as int32 field values + // rather than tags. + ExpectParsesTo( + "message TestMessage {\n" + " extensions 4 to max;\n" + " option message_set_wire_format = true;\n" + "}\n", + + "message_type {" + " name: \"TestMessage\"" + " extension_range { start:4 end: 0x7fffffff }" + " options {\n" + " uninterpreted_option { \n" + " name {\n" + " name_part: \"message_set_wire_format\"\n" + " is_extension: false\n" + " }\n" + " identifier_value: \"true\"\n" + " }\n" + " }\n" + "}"); +} + TEST_F(ParseMessageTest, Extensions) { ExpectParsesTo( "extend Extendee1 { optional int32 foo = 12; }\n" @@ -566,6 +597,10 @@ TEST_F(ParseEnumTest, Values) { " FOO = 13;\n" " BAR = -10;\n" " BAZ = 500;\n" + " HEX_MAX = 0x7FFFFFFF;\n" + " HEX_MIN = -0x80000000;\n" + " INT_MAX = 2147483647;\n" + " INT_MIN = -2147483648;\n" "}\n", "enum_type {" @@ -573,6 +608,10 @@ TEST_F(ParseEnumTest, Values) { " value { name:\"FOO\" number:13 }" " value { name:\"BAR\" number:-10 }" " value { name:\"BAZ\" number:500 }" + " value { name:\"HEX_MAX\" number:2147483647 }" + " value { name:\"HEX_MIN\" number:-2147483648 }" + " value { name:\"INT_MAX\" number:2147483647 }" + " value { name:\"INT_MIN\" number:-2147483648 }" "}"); } @@ -626,7 +665,7 @@ TEST_F(ParseServiceTest, SimpleService) { "}"); } -TEST_F(ParseServiceTest, Methods) { +TEST_F(ParseServiceTest, MethodsAndStreams) { ExpectParsesTo( "service TestService {\n" " rpc Foo(In1) returns (Out1);\n" @@ -663,6 +702,20 @@ TEST_F(ParseMiscTest, ParseMultipleImports) { "dependency: \"baz.proto\""); } +TEST_F(ParseMiscTest, ParsePublicImports) { + ExpectParsesTo( + "import \"foo.proto\";\n" + "import public \"bar.proto\";\n" + "import \"baz.proto\";\n" + "import public \"qux.proto\";\n", + "dependency: \"foo.proto\"" + "dependency: \"bar.proto\"" + "dependency: \"baz.proto\"" + "dependency: \"qux.proto\"" + "public_dependency: 1 " + "public_dependency: 3 "); +} + TEST_F(ParseMiscTest, ParsePackage) { ExpectParsesTo( "package foo.bar.baz;\n", @@ -862,6 +915,20 @@ TEST_F(ParseErrorTest, DefaultValueTooLarge) { "6:36: Integer out of range.\n"); } +TEST_F(ParseErrorTest, EnumValueOutOfRange) { + ExpectHasErrors( + "enum TestEnum {\n" + " HEX_TOO_BIG = 0x80000000;\n" + " HEX_TOO_SMALL = -0x80000001;\n" + " INT_TOO_BIG = 2147483648;\n" + " INT_TOO_SMALL = -2147483649;\n" + "}\n", + "1:19: Integer out of range.\n" + "2:19: Integer out of range.\n" + "3:19: Integer out of range.\n" + "4:19: Integer out of range.\n"); +} + TEST_F(ParseErrorTest, DefaultValueMissing) { ExpectHasErrors( "message TestMessage {\n" @@ -930,6 +997,12 @@ TEST_F(ParseErrorTest, MultipleParseErrors) { "3:25: Expected \";\".\n"); } +TEST_F(ParseErrorTest, EofInAggregateValue) { + ExpectHasErrors( + "option (fileopt) = { i:100\n", + "1:0: Unexpected end of stream while parsing aggregate value.\n"); +} + // ------------------------------------------------------------------- // Enum errors @@ -965,6 +1038,7 @@ TEST_F(ParseErrorTest, ServiceMethodPrimitiveParams) { "1:26: Expected message type.\n"); } + TEST_F(ParseErrorTest, EofInMethodOptions) { ExpectHasErrors( "service TestService {\n" @@ -973,6 +1047,7 @@ TEST_F(ParseErrorTest, EofInMethodOptions) { "1:29: Reached end of input in service definition (missing '}').\n"); } + TEST_F(ParseErrorTest, PrimitiveMethodInput) { ExpectHasErrors( "service TestService {\n" @@ -981,6 +1056,7 @@ TEST_F(ParseErrorTest, PrimitiveMethodInput) { "1:10: Expected message type.\n"); } + TEST_F(ParseErrorTest, MethodOptionTypeError) { // This used to cause an infinite loop. ExpectHasErrors( @@ -991,6 +1067,7 @@ TEST_F(ParseErrorTest, MethodOptionTypeError) { "2:45: Expected \"=\".\n"); } + // ------------------------------------------------------------------- // Import and package errors @@ -1146,6 +1223,7 @@ TEST_F(ParserValidationErrorTest, MethodNameError) { "3:6: \"Bar\" is already defined in \"Foo\".\n"); } + TEST_F(ParserValidationErrorTest, MethodInputTypeError) { ExpectHasValidationErrors( "message Baz {}\n" @@ -1155,6 +1233,7 @@ TEST_F(ParserValidationErrorTest, MethodInputTypeError) { "2:10: \"Qux\" is not defined.\n"); } + TEST_F(ParserValidationErrorTest, MethodOutputTypeError) { ExpectHasValidationErrors( "message Baz {}\n" @@ -1164,6 +1243,7 @@ TEST_F(ParserValidationErrorTest, MethodOutputTypeError) { "2:23: \"Qux\" is not defined.\n"); } + // =================================================================== // Test that the output from FileDescriptor::DebugString() (and all other // descriptor types) is parseable, and results in the same Descriptor @@ -1225,6 +1305,11 @@ TEST_F(ParseDecriptorDebugTest, TestAllDescriptorTypes) { // also need to give it the same name as the original. parsed.set_name("google/protobuf/unittest.proto"); // We need the imported dependency before we can build our parsed proto + const FileDescriptor* public_import = + protobuf_unittest_import::PublicImportMessage::descriptor()->file(); + FileDescriptorProto public_import_proto; + public_import->CopyTo(&public_import_proto); + ASSERT_TRUE(pool_.BuildFile(public_import_proto) != NULL); const FileDescriptor* import = protobuf_unittest_import::ImportMessage::descriptor()->file(); FileDescriptorProto import_proto; @@ -1247,6 +1332,1039 @@ TEST_F(ParseDecriptorDebugTest, TestAllDescriptorTypes) { EXPECT_EQ(expected.DebugString(), parsed.DebugString()); } +TEST_F(ParseDecriptorDebugTest, TestCustomOptions) { + const FileDescriptor* original_file = + protobuf_unittest::AggregateMessage::descriptor()->file(); + FileDescriptorProto expected; + original_file->CopyTo(&expected); + + string debug_string = original_file->DebugString(); + + // Parse the debug string + SetupParser(debug_string.c_str()); + FileDescriptorProto parsed; + parser_->Parse(input_.get(), &parsed); + EXPECT_EQ(io::Tokenizer::TYPE_END, input_->current().type); + ASSERT_EQ("", error_collector_.text_); + + // We now have a FileDescriptorProto, but to compare with the expected we + // need to link to a FileDecriptor, then output back to a proto. We'll + // also need to give it the same name as the original. + parsed.set_name(original_file->name()); + + // unittest_custom_options.proto depends on descriptor.proto. + const FileDescriptor* import = FileDescriptorProto::descriptor()->file(); + FileDescriptorProto import_proto; + import->CopyTo(&import_proto); + ASSERT_TRUE(pool_.BuildFile(import_proto) != NULL); + const FileDescriptor* actual = pool_.BuildFile(parsed); + ASSERT_TRUE(actual != NULL); + parsed.Clear(); + actual->CopyTo(&parsed); + + // The messages might be in different orders, making them hard to compare. + // So, sort the messages in the descriptor protos (including nested messages, + // recursively). + SortMessages(&expected); + SortMessages(&parsed); + + EXPECT_EQ(expected.DebugString(), parsed.DebugString()); +} + +// =================================================================== +// SourceCodeInfo tests. + +// Follows a path -- as defined by SourceCodeInfo.Location.path -- from a +// message to a particular sub-field. +// * If the target is itself a message, sets *output_message to point at it, +// *output_field to NULL, and *output_index to -1. +// * Otherwise, if the target is an element of a repeated field, sets +// *output_message to the containing message, *output_field to the descriptor +// of the field, and *output_index to the index of the element. +// * Otherwise, the target is a field (possibly a repeated field, but not any +// one element). Sets *output_message to the containing message, +// *output_field to the descriptor of the field, and *output_index to -1. +// Returns true if the path was valid, false otherwise. A gTest failure is +// recorded before returning false. +bool FollowPath(const Message& root, + const int* path_begin, const int* path_end, + const Message** output_message, + const FieldDescriptor** output_field, + int* output_index) { + if (path_begin == path_end) { + // Path refers to this whole message. + *output_message = &root; + *output_field = NULL; + *output_index = -1; + return true; + } + + const Descriptor* descriptor = root.GetDescriptor(); + const Reflection* reflection = root.GetReflection(); + + const FieldDescriptor* field = descriptor->FindFieldByNumber(*path_begin); + + if (field == NULL) { + ADD_FAILURE() << descriptor->name() << " has no field number: " + << *path_begin; + return false; + } + + ++path_begin; + + if (field->is_repeated()) { + if (path_begin == path_end) { + // Path refers to the whole repeated field. + *output_message = &root; + *output_field = field; + *output_index = -1; + return true; + } + + int index = *path_begin++; + int size = reflection->FieldSize(root, field); + + if (index >= size) { + ADD_FAILURE() << descriptor->name() << "." << field->name() + << " has size " << size << ", but path contained index: " + << index; + return false; + } + + if (field->cpp_type() == FieldDescriptor::CPPTYPE_MESSAGE) { + // Descend into child message. + const Message& child = reflection->GetRepeatedMessage(root, field, index); + return FollowPath(child, path_begin, path_end, + output_message, output_field, output_index); + } else if (path_begin == path_end) { + // Path refers to this element. + *output_message = &root; + *output_field = field; + *output_index = index; + return true; + } else { + ADD_FAILURE() << descriptor->name() << "." << field->name() + << " is not a message; cannot descend into it."; + return false; + } + } else { + if (field->cpp_type() == FieldDescriptor::CPPTYPE_MESSAGE) { + const Message& child = reflection->GetMessage(root, field); + return FollowPath(child, path_begin, path_end, + output_message, output_field, output_index); + } else if (path_begin == path_end) { + // Path refers to this field. + *output_message = &root; + *output_field = field; + *output_index = -1; + return true; + } else { + ADD_FAILURE() << descriptor->name() << "." << field->name() + << " is not a message; cannot descend into it."; + return false; + } + } +} + +// Check if two spans are equal. +bool CompareSpans(const RepeatedField& span1, + const RepeatedField& span2) { + if (span1.size() != span2.size()) return false; + for (int i = 0; i < span1.size(); i++) { + if (span1.Get(i) != span2.Get(i)) return false; + } + return true; +} + +// Test fixture for source info tests, which check that source locations are +// recorded correctly in FileDescriptorProto.source_code_info.location. +class SourceInfoTest : public ParserTest { + protected: + // The parsed file (initialized by Parse()). + FileDescriptorProto file_; + + // Parse the given text as a .proto file and populate the spans_ map with + // all the source location spans in its SourceCodeInfo table. + bool Parse(const char* text) { + ExtractMarkers(text); + SetupParser(text_without_markers_.c_str()); + if (!parser_->Parse(input_.get(), &file_)) { + return false; + } + + const SourceCodeInfo& source_info = file_.source_code_info(); + for (int i = 0; i < source_info.location_size(); i++) { + const SourceCodeInfo::Location& location = source_info.location(i); + const Message* descriptor_proto = NULL; + const FieldDescriptor* field = NULL; + int index = 0; + if (!FollowPath(file_, location.path().begin(), location.path().end(), + &descriptor_proto, &field, &index)) { + return false; + } + + spans_.insert(make_pair(SpanKey(*descriptor_proto, field, index), + &location)); + } + + return true; + } + + virtual void TearDown() { + EXPECT_TRUE(spans_.empty()) + << "Forgot to call HasSpan() for:\n" + << spans_.begin()->second->DebugString(); + } + + // ----------------------------------------------------------------- + // HasSpan() checks that the span of source code delimited by the given + // tags (comments) correspond via the SourceCodeInfo table to the given + // part of the FileDescriptorProto. (If unclear, look at the actual tests; + // it should quickly become obvious.) + + bool HasSpan(char start_marker, char end_marker, + const Message& descriptor_proto) { + return HasSpanWithComment( + start_marker, end_marker, descriptor_proto, NULL, -1, NULL, NULL); + } + + bool HasSpanWithComment(char start_marker, char end_marker, + const Message& descriptor_proto, + const char* expected_leading_comments, + const char* expected_trailing_comments) { + return HasSpanWithComment( + start_marker, end_marker, descriptor_proto, NULL, -1, + expected_leading_comments, expected_trailing_comments); + } + + bool HasSpan(char start_marker, char end_marker, + const Message& descriptor_proto, const string& field_name) { + return HasSpan(start_marker, end_marker, descriptor_proto, field_name, -1); + } + + bool HasSpan(char start_marker, char end_marker, + const Message& descriptor_proto, const string& field_name, + int index) { + return HasSpan(start_marker, end_marker, descriptor_proto, + field_name, index, NULL, NULL); + } + + bool HasSpan(char start_marker, char end_marker, + const Message& descriptor_proto, + const string& field_name, int index, + const char* expected_leading_comments, + const char* expected_trailing_comments) { + const FieldDescriptor* field = + descriptor_proto.GetDescriptor()->FindFieldByName(field_name); + if (field == NULL) { + ADD_FAILURE() << descriptor_proto.GetDescriptor()->name() + << " has no such field: " << field_name; + return false; + } + + return HasSpanWithComment( + start_marker, end_marker, descriptor_proto, field, index, + expected_leading_comments, expected_trailing_comments); + } + + bool HasSpan(const Message& descriptor_proto) { + return HasSpanWithComment( + '\0', '\0', descriptor_proto, NULL, -1, NULL, NULL); + } + + bool HasSpan(const Message& descriptor_proto, const string& field_name) { + return HasSpan('\0', '\0', descriptor_proto, field_name, -1); + } + + bool HasSpan(const Message& descriptor_proto, const string& field_name, + int index) { + return HasSpan('\0', '\0', descriptor_proto, field_name, index); + } + + bool HasSpanWithComment(char start_marker, char end_marker, + const Message& descriptor_proto, + const FieldDescriptor* field, int index, + const char* expected_leading_comments, + const char* expected_trailing_comments) { + pair range = + spans_.equal_range(SpanKey(descriptor_proto, field, index)); + + if (start_marker == '\0') { + if (range.first == range.second) { + return false; + } else { + spans_.erase(range.first); + return true; + } + } else { + pair start_pos = FindOrDie(markers_, start_marker); + pair end_pos = FindOrDie(markers_, end_marker); + + RepeatedField expected_span; + expected_span.Add(start_pos.first); + expected_span.Add(start_pos.second); + if (end_pos.first != start_pos.first) { + expected_span.Add(end_pos.first); + } + expected_span.Add(end_pos.second); + + for (SpanMap::iterator iter = range.first; iter != range.second; ++iter) { + if (CompareSpans(expected_span, iter->second->span())) { + if (expected_leading_comments == NULL) { + EXPECT_FALSE(iter->second->has_leading_comments()); + } else { + EXPECT_TRUE(iter->second->has_leading_comments()); + EXPECT_EQ(expected_leading_comments, + iter->second->leading_comments()); + } + if (expected_trailing_comments == NULL) { + EXPECT_FALSE(iter->second->has_trailing_comments()); + } else { + EXPECT_TRUE(iter->second->has_trailing_comments()); + EXPECT_EQ(expected_trailing_comments, + iter->second->trailing_comments()); + } + + spans_.erase(iter); + return true; + } + } + + return false; + } + } + + private: + struct SpanKey { + const Message* descriptor_proto; + const FieldDescriptor* field; + int index; + + inline SpanKey() {} + inline SpanKey(const Message& descriptor_proto_param, + const FieldDescriptor* field_param, + int index_param) + : descriptor_proto(&descriptor_proto_param), field(field_param), + index(index_param) {} + + inline bool operator<(const SpanKey& other) const { + if (descriptor_proto < other.descriptor_proto) return true; + if (descriptor_proto > other.descriptor_proto) return false; + if (field < other.field) return true; + if (field > other.field) return false; + return index < other.index; + } + }; + + typedef multimap SpanMap; + SpanMap spans_; + map > markers_; + string text_without_markers_; + + void ExtractMarkers(const char* text) { + markers_.clear(); + text_without_markers_.clear(); + int line = 0; + int column = 0; + while (*text != '\0') { + if (*text == '$') { + ++text; + GOOGLE_CHECK_NE('\0', *text); + if (*text == '$') { + text_without_markers_ += '$'; + ++column; + } else { + markers_[*text] = make_pair(line, column); + ++text; + GOOGLE_CHECK_EQ('$', *text); + } + } else if (*text == '\n') { + ++line; + column = 0; + text_without_markers_ += *text; + } else { + text_without_markers_ += *text; + ++column; + } + ++text; + } + } +}; + +TEST_F(SourceInfoTest, BasicFileDecls) { + EXPECT_TRUE(Parse( + "$a$syntax = \"proto2\";\n" + "package $b$foo.bar$c$;\n" + "import $d$\"baz.proto\"$e$;\n" + "import $f$\"qux.proto\"$g$;$h$\n" + "\n" + "// comment ignored\n")); + + EXPECT_TRUE(HasSpan('a', 'h', file_)); + EXPECT_TRUE(HasSpan('b', 'c', file_, "package")); + EXPECT_TRUE(HasSpan('d', 'e', file_, "dependency", 0)); + EXPECT_TRUE(HasSpan('f', 'g', file_, "dependency", 1)); +} + +TEST_F(SourceInfoTest, Messages) { + EXPECT_TRUE(Parse( + "$a$message $b$Foo$c$ {}$d$\n" + "$e$message $f$Bar$g$ {}$h$\n")); + + EXPECT_TRUE(HasSpan('a', 'd', file_.message_type(0))); + EXPECT_TRUE(HasSpan('b', 'c', file_.message_type(0), "name")); + EXPECT_TRUE(HasSpan('e', 'h', file_.message_type(1))); + EXPECT_TRUE(HasSpan('f', 'g', file_.message_type(1), "name")); + + // Ignore these. + EXPECT_TRUE(HasSpan(file_)); +} + +TEST_F(SourceInfoTest, Fields) { + EXPECT_TRUE(Parse( + "message Foo {\n" + " $a$optional$b$ $c$int32$d$ $e$bar$f$ = $g$1$h$;$i$\n" + " $j$repeated$k$ $l$X.Y$m$ $n$baz$o$ = $p$2$q$;$r$\n" + "}\n")); + + const FieldDescriptorProto& field1 = file_.message_type(0).field(0); + const FieldDescriptorProto& field2 = file_.message_type(0).field(1); + + EXPECT_TRUE(HasSpan('a', 'i', field1)); + EXPECT_TRUE(HasSpan('a', 'b', field1, "label")); + EXPECT_TRUE(HasSpan('c', 'd', field1, "type")); + EXPECT_TRUE(HasSpan('e', 'f', field1, "name")); + EXPECT_TRUE(HasSpan('g', 'h', field1, "number")); + + EXPECT_TRUE(HasSpan('j', 'r', field2)); + EXPECT_TRUE(HasSpan('j', 'k', field2, "label")); + EXPECT_TRUE(HasSpan('l', 'm', field2, "type_name")); + EXPECT_TRUE(HasSpan('n', 'o', field2, "name")); + EXPECT_TRUE(HasSpan('p', 'q', field2, "number")); + + // Ignore these. + EXPECT_TRUE(HasSpan(file_)); + EXPECT_TRUE(HasSpan(file_.message_type(0))); + EXPECT_TRUE(HasSpan(file_.message_type(0), "name")); +} + +TEST_F(SourceInfoTest, Extensions) { + EXPECT_TRUE(Parse( + "$a$extend $b$Foo$c$ {\n" + " $d$optional$e$ int32 bar = 1;$f$\n" + " $g$repeated$h$ X.Y baz = 2;$i$\n" + "}$j$\n" + "$k$extend $l$Bar$m$ {\n" + " $n$optional int32 qux = 1;$o$\n" + "}$p$\n")); + + const FieldDescriptorProto& field1 = file_.extension(0); + const FieldDescriptorProto& field2 = file_.extension(1); + const FieldDescriptorProto& field3 = file_.extension(2); + + EXPECT_TRUE(HasSpan('a', 'j', file_, "extension")); + EXPECT_TRUE(HasSpan('k', 'p', file_, "extension")); + + EXPECT_TRUE(HasSpan('d', 'f', field1)); + EXPECT_TRUE(HasSpan('d', 'e', field1, "label")); + EXPECT_TRUE(HasSpan('b', 'c', field1, "extendee")); + + EXPECT_TRUE(HasSpan('g', 'i', field2)); + EXPECT_TRUE(HasSpan('g', 'h', field2, "label")); + EXPECT_TRUE(HasSpan('b', 'c', field2, "extendee")); + + EXPECT_TRUE(HasSpan('n', 'o', field3)); + EXPECT_TRUE(HasSpan('l', 'm', field3, "extendee")); + + // Ignore these. + EXPECT_TRUE(HasSpan(file_)); + EXPECT_TRUE(HasSpan(field1, "type")); + EXPECT_TRUE(HasSpan(field1, "name")); + EXPECT_TRUE(HasSpan(field1, "number")); + EXPECT_TRUE(HasSpan(field2, "type_name")); + EXPECT_TRUE(HasSpan(field2, "name")); + EXPECT_TRUE(HasSpan(field2, "number")); + EXPECT_TRUE(HasSpan(field3, "label")); + EXPECT_TRUE(HasSpan(field3, "type")); + EXPECT_TRUE(HasSpan(field3, "name")); + EXPECT_TRUE(HasSpan(field3, "number")); +} + +TEST_F(SourceInfoTest, NestedExtensions) { + EXPECT_TRUE(Parse( + "message Message {\n" + " $a$extend $b$Foo$c$ {\n" + " $d$optional$e$ int32 bar = 1;$f$\n" + " $g$repeated$h$ X.Y baz = 2;$i$\n" + " }$j$\n" + " $k$extend $l$Bar$m$ {\n" + " $n$optional int32 qux = 1;$o$\n" + " }$p$\n" + "}\n")); + + const FieldDescriptorProto& field1 = file_.message_type(0).extension(0); + const FieldDescriptorProto& field2 = file_.message_type(0).extension(1); + const FieldDescriptorProto& field3 = file_.message_type(0).extension(2); + + EXPECT_TRUE(HasSpan('a', 'j', file_.message_type(0), "extension")); + EXPECT_TRUE(HasSpan('k', 'p', file_.message_type(0), "extension")); + + EXPECT_TRUE(HasSpan('d', 'f', field1)); + EXPECT_TRUE(HasSpan('d', 'e', field1, "label")); + EXPECT_TRUE(HasSpan('b', 'c', field1, "extendee")); + + EXPECT_TRUE(HasSpan('g', 'i', field2)); + EXPECT_TRUE(HasSpan('g', 'h', field2, "label")); + EXPECT_TRUE(HasSpan('b', 'c', field2, "extendee")); + + EXPECT_TRUE(HasSpan('n', 'o', field3)); + EXPECT_TRUE(HasSpan('l', 'm', field3, "extendee")); + + // Ignore these. + EXPECT_TRUE(HasSpan(file_)); + EXPECT_TRUE(HasSpan(file_.message_type(0))); + EXPECT_TRUE(HasSpan(file_.message_type(0), "name")); + EXPECT_TRUE(HasSpan(field1, "type")); + EXPECT_TRUE(HasSpan(field1, "name")); + EXPECT_TRUE(HasSpan(field1, "number")); + EXPECT_TRUE(HasSpan(field2, "type_name")); + EXPECT_TRUE(HasSpan(field2, "name")); + EXPECT_TRUE(HasSpan(field2, "number")); + EXPECT_TRUE(HasSpan(field3, "label")); + EXPECT_TRUE(HasSpan(field3, "type")); + EXPECT_TRUE(HasSpan(field3, "name")); + EXPECT_TRUE(HasSpan(field3, "number")); +} + +TEST_F(SourceInfoTest, ExtensionRanges) { + EXPECT_TRUE(Parse( + "message Message {\n" + " $a$extensions $b$1$c$ to $d$4$e$, $f$6$g$;$h$\n" + " $i$extensions $j$8$k$ to $l$max$m$;$n$\n" + "}\n")); + + const DescriptorProto::ExtensionRange& range1 = + file_.message_type(0).extension_range(0); + const DescriptorProto::ExtensionRange& range2 = + file_.message_type(0).extension_range(1); + const DescriptorProto::ExtensionRange& range3 = + file_.message_type(0).extension_range(2); + + EXPECT_TRUE(HasSpan('a', 'h', file_.message_type(0), "extension_range")); + EXPECT_TRUE(HasSpan('i', 'n', file_.message_type(0), "extension_range")); + + EXPECT_TRUE(HasSpan('b', 'e', range1)); + EXPECT_TRUE(HasSpan('b', 'c', range1, "start")); + EXPECT_TRUE(HasSpan('d', 'e', range1, "end")); + + EXPECT_TRUE(HasSpan('f', 'g', range2)); + EXPECT_TRUE(HasSpan('f', 'g', range2, "start")); + EXPECT_TRUE(HasSpan('f', 'g', range2, "end")); + + EXPECT_TRUE(HasSpan('j', 'm', range3)); + EXPECT_TRUE(HasSpan('j', 'k', range3, "start")); + EXPECT_TRUE(HasSpan('l', 'm', range3, "end")); + + // Ignore these. + EXPECT_TRUE(HasSpan(file_)); + EXPECT_TRUE(HasSpan(file_.message_type(0))); + EXPECT_TRUE(HasSpan(file_.message_type(0), "name")); +} + +TEST_F(SourceInfoTest, NestedMessages) { + EXPECT_TRUE(Parse( + "message Foo {\n" + " $a$message $b$Bar$c$ {\n" + " $d$message $e$Baz$f$ {}$g$\n" + " }$h$\n" + " $i$message $j$Qux$k$ {}$l$\n" + "}\n")); + + const DescriptorProto& bar = file_.message_type(0).nested_type(0); + const DescriptorProto& baz = bar.nested_type(0); + const DescriptorProto& qux = file_.message_type(0).nested_type(1); + + EXPECT_TRUE(HasSpan('a', 'h', bar)); + EXPECT_TRUE(HasSpan('b', 'c', bar, "name")); + EXPECT_TRUE(HasSpan('d', 'g', baz)); + EXPECT_TRUE(HasSpan('e', 'f', baz, "name")); + EXPECT_TRUE(HasSpan('i', 'l', qux)); + EXPECT_TRUE(HasSpan('j', 'k', qux, "name")); + + // Ignore these. + EXPECT_TRUE(HasSpan(file_)); + EXPECT_TRUE(HasSpan(file_.message_type(0))); + EXPECT_TRUE(HasSpan(file_.message_type(0), "name")); +} + +TEST_F(SourceInfoTest, Groups) { + EXPECT_TRUE(Parse( + "message Foo {\n" + " message Bar {}\n" + " $a$optional$b$ $c$group$d$ $e$Baz$f$ = $g$1$h$ {\n" + " $i$message Qux {}$j$\n" + " }$k$\n" + "}\n")); + + const DescriptorProto& bar = file_.message_type(0).nested_type(0); + const DescriptorProto& baz = file_.message_type(0).nested_type(1); + const DescriptorProto& qux = baz.nested_type(0); + const FieldDescriptorProto& field = file_.message_type(0).field(0); + + EXPECT_TRUE(HasSpan('a', 'k', field)); + EXPECT_TRUE(HasSpan('a', 'b', field, "label")); + EXPECT_TRUE(HasSpan('c', 'd', field, "type")); + EXPECT_TRUE(HasSpan('e', 'f', field, "name")); + EXPECT_TRUE(HasSpan('e', 'f', field, "type_name")); + EXPECT_TRUE(HasSpan('g', 'h', field, "number")); + + EXPECT_TRUE(HasSpan('a', 'k', baz)); + EXPECT_TRUE(HasSpan('e', 'f', baz, "name")); + EXPECT_TRUE(HasSpan('i', 'j', qux)); + + // Ignore these. + EXPECT_TRUE(HasSpan(file_)); + EXPECT_TRUE(HasSpan(file_.message_type(0))); + EXPECT_TRUE(HasSpan(file_.message_type(0), "name")); + EXPECT_TRUE(HasSpan(bar)); + EXPECT_TRUE(HasSpan(bar, "name")); + EXPECT_TRUE(HasSpan(qux, "name")); +} + +TEST_F(SourceInfoTest, Enums) { + EXPECT_TRUE(Parse( + "$a$enum $b$Foo$c$ {}$d$\n" + "$e$enum $f$Bar$g$ {}$h$\n")); + + EXPECT_TRUE(HasSpan('a', 'd', file_.enum_type(0))); + EXPECT_TRUE(HasSpan('b', 'c', file_.enum_type(0), "name")); + EXPECT_TRUE(HasSpan('e', 'h', file_.enum_type(1))); + EXPECT_TRUE(HasSpan('f', 'g', file_.enum_type(1), "name")); + + // Ignore these. + EXPECT_TRUE(HasSpan(file_)); +} + +TEST_F(SourceInfoTest, EnumValues) { + EXPECT_TRUE(Parse( + "enum Foo {\n" + " $a$BAR$b$ = $c$1$d$;$e$\n" + " $f$BAZ$g$ = $h$2$i$;$j$\n" + "}")); + + const EnumValueDescriptorProto& bar = file_.enum_type(0).value(0); + const EnumValueDescriptorProto& baz = file_.enum_type(0).value(1); + + EXPECT_TRUE(HasSpan('a', 'e', bar)); + EXPECT_TRUE(HasSpan('a', 'b', bar, "name")); + EXPECT_TRUE(HasSpan('c', 'd', bar, "number")); + EXPECT_TRUE(HasSpan('f', 'j', baz)); + EXPECT_TRUE(HasSpan('f', 'g', baz, "name")); + EXPECT_TRUE(HasSpan('h', 'i', baz, "number")); + + // Ignore these. + EXPECT_TRUE(HasSpan(file_)); + EXPECT_TRUE(HasSpan(file_.enum_type(0))); + EXPECT_TRUE(HasSpan(file_.enum_type(0), "name")); +} + +TEST_F(SourceInfoTest, NestedEnums) { + EXPECT_TRUE(Parse( + "message Foo {\n" + " $a$enum $b$Bar$c$ {}$d$\n" + " $e$enum $f$Baz$g$ {}$h$\n" + "}\n")); + + const EnumDescriptorProto& bar = file_.message_type(0).enum_type(0); + const EnumDescriptorProto& baz = file_.message_type(0).enum_type(1); + + EXPECT_TRUE(HasSpan('a', 'd', bar)); + EXPECT_TRUE(HasSpan('b', 'c', bar, "name")); + EXPECT_TRUE(HasSpan('e', 'h', baz)); + EXPECT_TRUE(HasSpan('f', 'g', baz, "name")); + + // Ignore these. + EXPECT_TRUE(HasSpan(file_)); + EXPECT_TRUE(HasSpan(file_.message_type(0))); + EXPECT_TRUE(HasSpan(file_.message_type(0), "name")); +} + +TEST_F(SourceInfoTest, Services) { + EXPECT_TRUE(Parse( + "$a$service $b$Foo$c$ {}$d$\n" + "$e$service $f$Bar$g$ {}$h$\n")); + + EXPECT_TRUE(HasSpan('a', 'd', file_.service(0))); + EXPECT_TRUE(HasSpan('b', 'c', file_.service(0), "name")); + EXPECT_TRUE(HasSpan('e', 'h', file_.service(1))); + EXPECT_TRUE(HasSpan('f', 'g', file_.service(1), "name")); + + // Ignore these. + EXPECT_TRUE(HasSpan(file_)); +} + +TEST_F(SourceInfoTest, MethodsAndStreams) { + EXPECT_TRUE(Parse( + "service Foo {\n" + " $a$rpc $b$Bar$c$($d$X$e$) returns($f$Y$g$);$h$" + " $i$rpc $j$Baz$k$($l$Z$m$) returns($n$W$o$);$p$" + "}")); + + const MethodDescriptorProto& bar = file_.service(0).method(0); + const MethodDescriptorProto& baz = file_.service(0).method(1); + + EXPECT_TRUE(HasSpan('a', 'h', bar)); + EXPECT_TRUE(HasSpan('b', 'c', bar, "name")); + EXPECT_TRUE(HasSpan('d', 'e', bar, "input_type")); + EXPECT_TRUE(HasSpan('f', 'g', bar, "output_type")); + + EXPECT_TRUE(HasSpan('i', 'p', baz)); + EXPECT_TRUE(HasSpan('j', 'k', baz, "name")); + EXPECT_TRUE(HasSpan('l', 'm', baz, "input_type")); + EXPECT_TRUE(HasSpan('n', 'o', baz, "output_type")); + + // Ignore these. + EXPECT_TRUE(HasSpan(file_)); + EXPECT_TRUE(HasSpan(file_.service(0))); + EXPECT_TRUE(HasSpan(file_.service(0), "name")); +} + +TEST_F(SourceInfoTest, Options) { + EXPECT_TRUE(Parse( + "$a$option $b$foo$c$.$d$($e$bar.baz$f$)$g$ = " + "$h$123$i$;$j$\n" + "$k$option qux = $l$-123$m$;$n$\n" + "$o$option corge = $p$abc$q$;$r$\n" + "$s$option grault = $t$'blah'$u$;$v$\n" + "$w$option garply = $x${ yadda yadda }$y$;$z$\n" + "$0$option waldo = $1$123.0$2$;$3$\n" + )); + + const UninterpretedOption& option1 = file_.options().uninterpreted_option(0); + const UninterpretedOption& option2 = file_.options().uninterpreted_option(1); + const UninterpretedOption& option3 = file_.options().uninterpreted_option(2); + const UninterpretedOption& option4 = file_.options().uninterpreted_option(3); + const UninterpretedOption& option5 = file_.options().uninterpreted_option(4); + const UninterpretedOption& option6 = file_.options().uninterpreted_option(5); + + EXPECT_TRUE(HasSpan('a', 'j', file_.options())); + EXPECT_TRUE(HasSpan('a', 'j', option1)); + EXPECT_TRUE(HasSpan('b', 'g', option1, "name")); + EXPECT_TRUE(HasSpan('b', 'c', option1.name(0))); + EXPECT_TRUE(HasSpan('b', 'c', option1.name(0), "name_part")); + EXPECT_TRUE(HasSpan('d', 'g', option1.name(1))); + EXPECT_TRUE(HasSpan('e', 'f', option1.name(1), "name_part")); + EXPECT_TRUE(HasSpan('h', 'i', option1, "positive_int_value")); + + EXPECT_TRUE(HasSpan('k', 'n', file_.options())); + EXPECT_TRUE(HasSpan('l', 'm', option2, "negative_int_value")); + + EXPECT_TRUE(HasSpan('o', 'r', file_.options())); + EXPECT_TRUE(HasSpan('p', 'q', option3, "identifier_value")); + + EXPECT_TRUE(HasSpan('s', 'v', file_.options())); + EXPECT_TRUE(HasSpan('t', 'u', option4, "string_value")); + + EXPECT_TRUE(HasSpan('w', 'z', file_.options())); + EXPECT_TRUE(HasSpan('x', 'y', option5, "aggregate_value")); + + EXPECT_TRUE(HasSpan('0', '3', file_.options())); + EXPECT_TRUE(HasSpan('1', '2', option6, "double_value")); + + // Ignore these. + EXPECT_TRUE(HasSpan(file_)); + EXPECT_TRUE(HasSpan(option2)); + EXPECT_TRUE(HasSpan(option3)); + EXPECT_TRUE(HasSpan(option4)); + EXPECT_TRUE(HasSpan(option5)); + EXPECT_TRUE(HasSpan(option6)); + EXPECT_TRUE(HasSpan(option2, "name")); + EXPECT_TRUE(HasSpan(option3, "name")); + EXPECT_TRUE(HasSpan(option4, "name")); + EXPECT_TRUE(HasSpan(option5, "name")); + EXPECT_TRUE(HasSpan(option6, "name")); + EXPECT_TRUE(HasSpan(option2.name(0))); + EXPECT_TRUE(HasSpan(option3.name(0))); + EXPECT_TRUE(HasSpan(option4.name(0))); + EXPECT_TRUE(HasSpan(option5.name(0))); + EXPECT_TRUE(HasSpan(option6.name(0))); + EXPECT_TRUE(HasSpan(option2.name(0), "name_part")); + EXPECT_TRUE(HasSpan(option3.name(0), "name_part")); + EXPECT_TRUE(HasSpan(option4.name(0), "name_part")); + EXPECT_TRUE(HasSpan(option5.name(0), "name_part")); + EXPECT_TRUE(HasSpan(option6.name(0), "name_part")); +} + +TEST_F(SourceInfoTest, ScopedOptions) { + EXPECT_TRUE(Parse( + "message Foo {\n" + " $a$option mopt = 1;$b$\n" + "}\n" + "enum Bar {\n" + " $c$option eopt = 1;$d$\n" + "}\n" + "service Baz {\n" + " $e$option sopt = 1;$f$\n" + " rpc M(X) returns(Y) {\n" + " $g$option mopt = 1;$h$\n" + " }\n" + "}\n")); + + EXPECT_TRUE(HasSpan('a', 'b', file_.message_type(0).options())); + EXPECT_TRUE(HasSpan('c', 'd', file_.enum_type(0).options())); + EXPECT_TRUE(HasSpan('e', 'f', file_.service(0).options())); + EXPECT_TRUE(HasSpan('g', 'h', file_.service(0).method(0).options())); + + // Ignore these. + EXPECT_TRUE(HasSpan(file_)); + EXPECT_TRUE(HasSpan(file_.message_type(0))); + EXPECT_TRUE(HasSpan(file_.message_type(0), "name")); + EXPECT_TRUE(HasSpan(file_.message_type(0).options() + .uninterpreted_option(0))); + EXPECT_TRUE(HasSpan(file_.message_type(0).options() + .uninterpreted_option(0), "name")); + EXPECT_TRUE(HasSpan(file_.message_type(0).options() + .uninterpreted_option(0).name(0))); + EXPECT_TRUE(HasSpan(file_.message_type(0).options() + .uninterpreted_option(0).name(0), "name_part")); + EXPECT_TRUE(HasSpan(file_.message_type(0).options() + .uninterpreted_option(0), "positive_int_value")); + EXPECT_TRUE(HasSpan(file_.enum_type(0))); + EXPECT_TRUE(HasSpan(file_.enum_type(0), "name")); + EXPECT_TRUE(HasSpan(file_.enum_type(0).options() + .uninterpreted_option(0))); + EXPECT_TRUE(HasSpan(file_.enum_type(0).options() + .uninterpreted_option(0), "name")); + EXPECT_TRUE(HasSpan(file_.enum_type(0).options() + .uninterpreted_option(0).name(0))); + EXPECT_TRUE(HasSpan(file_.enum_type(0).options() + .uninterpreted_option(0).name(0), "name_part")); + EXPECT_TRUE(HasSpan(file_.enum_type(0).options() + .uninterpreted_option(0), "positive_int_value")); + EXPECT_TRUE(HasSpan(file_.service(0))); + EXPECT_TRUE(HasSpan(file_.service(0), "name")); + EXPECT_TRUE(HasSpan(file_.service(0).method(0))); + EXPECT_TRUE(HasSpan(file_.service(0).options() + .uninterpreted_option(0))); + EXPECT_TRUE(HasSpan(file_.service(0).options() + .uninterpreted_option(0), "name")); + EXPECT_TRUE(HasSpan(file_.service(0).options() + .uninterpreted_option(0).name(0))); + EXPECT_TRUE(HasSpan(file_.service(0).options() + .uninterpreted_option(0).name(0), "name_part")); + EXPECT_TRUE(HasSpan(file_.service(0).options() + .uninterpreted_option(0), "positive_int_value")); + EXPECT_TRUE(HasSpan(file_.service(0).method(0), "name")); + EXPECT_TRUE(HasSpan(file_.service(0).method(0), "input_type")); + EXPECT_TRUE(HasSpan(file_.service(0).method(0), "output_type")); + EXPECT_TRUE(HasSpan(file_.service(0).method(0).options() + .uninterpreted_option(0))); + EXPECT_TRUE(HasSpan(file_.service(0).method(0).options() + .uninterpreted_option(0), "name")); + EXPECT_TRUE(HasSpan(file_.service(0).method(0).options() + .uninterpreted_option(0).name(0))); + EXPECT_TRUE(HasSpan(file_.service(0).method(0).options() + .uninterpreted_option(0).name(0), "name_part")); + EXPECT_TRUE(HasSpan(file_.service(0).method(0).options() + .uninterpreted_option(0), "positive_int_value")); +} + +TEST_F(SourceInfoTest, FieldOptions) { + // The actual "name = value" pairs are parsed by the same code as for + // top-level options so we won't re-test that -- just make sure that the + // syntax used for field options is understood. + EXPECT_TRUE(Parse( + "message Foo {" + " optional int32 bar = 1 " + "$a$[default=$b$123$c$,$d$opt1=123$e$," + "$f$opt2='hi'$g$]$h$;" + "}\n" + )); + + const FieldDescriptorProto& field = file_.message_type(0).field(0); + const UninterpretedOption& option1 = field.options().uninterpreted_option(0); + const UninterpretedOption& option2 = field.options().uninterpreted_option(1); + + EXPECT_TRUE(HasSpan('a', 'h', field.options())); + EXPECT_TRUE(HasSpan('b', 'c', field, "default_value")); + EXPECT_TRUE(HasSpan('d', 'e', option1)); + EXPECT_TRUE(HasSpan('f', 'g', option2)); + + // Ignore these. + EXPECT_TRUE(HasSpan(file_)); + EXPECT_TRUE(HasSpan(file_.message_type(0))); + EXPECT_TRUE(HasSpan(file_.message_type(0), "name")); + EXPECT_TRUE(HasSpan(field)); + EXPECT_TRUE(HasSpan(field, "label")); + EXPECT_TRUE(HasSpan(field, "type")); + EXPECT_TRUE(HasSpan(field, "name")); + EXPECT_TRUE(HasSpan(field, "number")); + EXPECT_TRUE(HasSpan(option1, "name")); + EXPECT_TRUE(HasSpan(option2, "name")); + EXPECT_TRUE(HasSpan(option1.name(0))); + EXPECT_TRUE(HasSpan(option2.name(0))); + EXPECT_TRUE(HasSpan(option1.name(0), "name_part")); + EXPECT_TRUE(HasSpan(option2.name(0), "name_part")); + EXPECT_TRUE(HasSpan(option1, "positive_int_value")); + EXPECT_TRUE(HasSpan(option2, "string_value")); +} + +TEST_F(SourceInfoTest, EnumValueOptions) { + // The actual "name = value" pairs are parsed by the same code as for + // top-level options so we won't re-test that -- just make sure that the + // syntax used for enum options is understood. + EXPECT_TRUE(Parse( + "enum Foo {" + " BAR = 1 $a$[$b$opt1=123$c$,$d$opt2='hi'$e$]$f$;" + "}\n" + )); + + const EnumValueDescriptorProto& value = file_.enum_type(0).value(0); + const UninterpretedOption& option1 = value.options().uninterpreted_option(0); + const UninterpretedOption& option2 = value.options().uninterpreted_option(1); + + EXPECT_TRUE(HasSpan('a', 'f', value.options())); + EXPECT_TRUE(HasSpan('b', 'c', option1)); + EXPECT_TRUE(HasSpan('d', 'e', option2)); + + // Ignore these. + EXPECT_TRUE(HasSpan(file_)); + EXPECT_TRUE(HasSpan(file_.enum_type(0))); + EXPECT_TRUE(HasSpan(file_.enum_type(0), "name")); + EXPECT_TRUE(HasSpan(value)); + EXPECT_TRUE(HasSpan(value, "name")); + EXPECT_TRUE(HasSpan(value, "number")); + EXPECT_TRUE(HasSpan(option1, "name")); + EXPECT_TRUE(HasSpan(option2, "name")); + EXPECT_TRUE(HasSpan(option1.name(0))); + EXPECT_TRUE(HasSpan(option2.name(0))); + EXPECT_TRUE(HasSpan(option1.name(0), "name_part")); + EXPECT_TRUE(HasSpan(option2.name(0), "name_part")); + EXPECT_TRUE(HasSpan(option1, "positive_int_value")); + EXPECT_TRUE(HasSpan(option2, "string_value")); +} + +TEST_F(SourceInfoTest, DocComments) { + EXPECT_TRUE(Parse( + "// Foo leading\n" + "// line 2\n" + "$a$message Foo {\n" + " // Foo trailing\n" + " // line 2\n" + "\n" + " // ignored\n" + "\n" + " // bar leading\n" + " $b$optional int32 bar = 1;$c$\n" + " // bar trailing\n" + "}$d$\n" + "// ignored\n" + )); + + const DescriptorProto& foo = file_.message_type(0); + const FieldDescriptorProto& bar = foo.field(0); + + EXPECT_TRUE(HasSpanWithComment('a', 'd', foo, + " Foo leading\n line 2\n", + " Foo trailing\n line 2\n")); + EXPECT_TRUE(HasSpanWithComment('b', 'c', bar, + " bar leading\n", + " bar trailing\n")); + + // Ignore these. + EXPECT_TRUE(HasSpan(file_)); + EXPECT_TRUE(HasSpan(foo, "name")); + EXPECT_TRUE(HasSpan(bar, "label")); + EXPECT_TRUE(HasSpan(bar, "type")); + EXPECT_TRUE(HasSpan(bar, "name")); + EXPECT_TRUE(HasSpan(bar, "number")); +} + +TEST_F(SourceInfoTest, DocComments2) { + EXPECT_TRUE(Parse( + "// ignored\n" + "syntax = \"proto2\";\n" + "// Foo leading\n" + "// line 2\n" + "$a$message Foo {\n" + " /* Foo trailing\n" + " * line 2 */\n" + " // ignored\n" + " /* bar leading\n" + " */" + " $b$optional int32 bar = 1;$c$ // bar trailing\n" + " // ignored\n" + "}$d$\n" + "// ignored\n" + "\n" + "// option leading\n" + "$e$option baz = 123;$f$\n" + "// option trailing\n" + )); + + const DescriptorProto& foo = file_.message_type(0); + const FieldDescriptorProto& bar = foo.field(0); + const UninterpretedOption& baz = file_.options().uninterpreted_option(0); + + EXPECT_TRUE(HasSpanWithComment('a', 'd', foo, + " Foo leading\n line 2\n", + " Foo trailing\n line 2 ")); + EXPECT_TRUE(HasSpanWithComment('b', 'c', bar, + " bar leading\n", + " bar trailing\n")); + EXPECT_TRUE(HasSpanWithComment('e', 'f', baz, + " option leading\n", + " option trailing\n")); + + // Ignore these. + EXPECT_TRUE(HasSpan(file_)); + EXPECT_TRUE(HasSpan(foo, "name")); + EXPECT_TRUE(HasSpan(bar, "label")); + EXPECT_TRUE(HasSpan(bar, "type")); + EXPECT_TRUE(HasSpan(bar, "name")); + EXPECT_TRUE(HasSpan(bar, "number")); + EXPECT_TRUE(HasSpan(file_.options())); + EXPECT_TRUE(HasSpan(baz, "name")); + EXPECT_TRUE(HasSpan(baz.name(0))); + EXPECT_TRUE(HasSpan(baz.name(0), "name_part")); + EXPECT_TRUE(HasSpan(baz, "positive_int_value")); +} + +TEST_F(SourceInfoTest, DocComments3) { + EXPECT_TRUE(Parse( + "$a$message Foo {\n" + " // bar leading\n" + " $b$optional int32 bar = 1 [(baz.qux) = {}];$c$\n" + " // bar trailing\n" + "}$d$\n" + "// ignored\n" + )); + + const DescriptorProto& foo = file_.message_type(0); + const FieldDescriptorProto& bar = foo.field(0); + + EXPECT_TRUE(HasSpanWithComment('b', 'c', bar, + " bar leading\n", + " bar trailing\n")); + + // Ignore these. + EXPECT_TRUE(HasSpan(file_)); + EXPECT_TRUE(HasSpan(foo)); + EXPECT_TRUE(HasSpan(foo, "name")); + EXPECT_TRUE(HasSpan(bar, "label")); + EXPECT_TRUE(HasSpan(bar, "type")); + EXPECT_TRUE(HasSpan(bar, "name")); + EXPECT_TRUE(HasSpan(bar, "number")); + EXPECT_TRUE(HasSpan(bar.options())); + EXPECT_TRUE(HasSpan(bar.options().uninterpreted_option(0))); + EXPECT_TRUE(HasSpan(bar.options().uninterpreted_option(0), "name")); + EXPECT_TRUE(HasSpan(bar.options().uninterpreted_option(0).name(0))); + EXPECT_TRUE(HasSpan( + bar.options().uninterpreted_option(0).name(0), "name_part")); + EXPECT_TRUE(HasSpan( + bar.options().uninterpreted_option(0), "aggregate_value")); +} + // =================================================================== } // anonymous namespace diff --git a/cpp/thirdparty/protobuf-2.3.0/src/google/protobuf/compiler/plugin.cc b/cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/compiler/plugin.cc similarity index 82% rename from cpp/thirdparty/protobuf-2.3.0/src/google/protobuf/compiler/plugin.cc rename to cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/compiler/plugin.cc index a4aedafbf..727f94216 100644 --- a/cpp/thirdparty/protobuf-2.3.0/src/google/protobuf/compiler/plugin.cc +++ b/cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/compiler/plugin.cc @@ -59,13 +59,15 @@ namespace google { namespace protobuf { namespace compiler { -class GeneratorResponseOutputDirectory : public OutputDirectory { +class GeneratorResponseContext : public GeneratorContext { public: - GeneratorResponseOutputDirectory(CodeGeneratorResponse* response) - : response_(response) {} - virtual ~GeneratorResponseOutputDirectory() {} + GeneratorResponseContext(CodeGeneratorResponse* response, + const vector& parsed_files) + : response_(response), + parsed_files_(parsed_files) {} + virtual ~GeneratorResponseContext() {} - // implements OutputDirectory -------------------------------------- + // implements GeneratorContext -------------------------------------- virtual io::ZeroCopyOutputStream* Open(const string& filename) { CodeGeneratorResponse::File* file = response_->add_file(); @@ -81,8 +83,13 @@ class GeneratorResponseOutputDirectory : public OutputDirectory { return new io::StringOutputStream(file->mutable_content()); } + void ListParsedFiles(vector* output) { + *output = parsed_files_; + } + private: CodeGeneratorResponse* response_; + const vector& parsed_files_; }; int PluginMain(int argc, char* argv[], const CodeGenerator* generator) { @@ -112,22 +119,26 @@ int PluginMain(int argc, char* argv[], const CodeGenerator* generator) { } } - CodeGeneratorResponse response; - GeneratorResponseOutputDirectory output_directory(&response); - + vector parsed_files; for (int i = 0; i < request.file_to_generate_size(); i++) { - const FileDescriptor* file = - pool.FindFileByName(request.file_to_generate(i)); - if (file == NULL) { + parsed_files.push_back(pool.FindFileByName(request.file_to_generate(i))); + if (parsed_files.back() == NULL) { cerr << argv[0] << ": protoc asked plugin to generate a file but " "did not provide a descriptor for the file: " << request.file_to_generate(i) << endl; return 1; } + } + + CodeGeneratorResponse response; + GeneratorResponseContext context(&response, parsed_files); + + for (int i = 0; i < parsed_files.size(); i++) { + const FileDescriptor* file = parsed_files[i]; string error; bool succeeded = generator->Generate( - file, request.parameter(), &output_directory, &error); + file, request.parameter(), &context, &error); if (!succeeded && error.empty()) { error = "Code generator returned false but provided no error " diff --git a/cpp/thirdparty/protobuf-2.3.0/src/google/protobuf/compiler/plugin.h b/cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/compiler/plugin.h similarity index 99% rename from cpp/thirdparty/protobuf-2.3.0/src/google/protobuf/compiler/plugin.h rename to cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/compiler/plugin.h index 7c4033321..6fa2de127 100644 --- a/cpp/thirdparty/protobuf-2.3.0/src/google/protobuf/compiler/plugin.h +++ b/cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/compiler/plugin.h @@ -56,7 +56,6 @@ #define GOOGLE_PROTOBUF_COMPILER_PLUGIN_H__ #include - namespace google { namespace protobuf { namespace compiler { diff --git a/cpp/thirdparty/protobuf-2.3.0/src/google/protobuf/compiler/plugin.pb.cc b/cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/compiler/plugin.pb.cc similarity index 94% rename from cpp/thirdparty/protobuf-2.3.0/src/google/protobuf/compiler/plugin.pb.cc rename to cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/compiler/plugin.pb.cc index 6b0dd55ac..ee14dcf72 100644 --- a/cpp/thirdparty/protobuf-2.3.0/src/google/protobuf/compiler/plugin.pb.cc +++ b/cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/compiler/plugin.pb.cc @@ -1,11 +1,17 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! +// source: google/protobuf/compiler/plugin.proto #define INTERNAL_SUPPRESS_PROTOBUF_FIELD_DEPRECATION #include "google/protobuf/compiler/plugin.pb.h" + +#include + +#include #include #include #include #include +#include #include #include // @@protoc_insertion_point(includes) @@ -133,7 +139,9 @@ void protobuf_AddDesc_google_2fprotobuf_2fcompiler_2fplugin_2eproto() { "atorResponse\022\r\n\005error\030\001 \001(\t\022B\n\004file\030\017 \003(" "\01324.google.protobuf.compiler.CodeGenerat" "orResponse.File\032>\n\004File\022\014\n\004name\030\001 \001(\t\022\027\n" - "\017insertion_point\030\002 \001(\t\022\017\n\007content\030\017 \001(\t", 399); + "\017insertion_point\030\002 \001(\t\022\017\n\007content\030\017 \001(\tB" + ",\n\034com.google.protobuf.compilerB\014PluginP" + "rotos", 445); ::google::protobuf::MessageFactory::InternalRegisterGeneratedFile( "google/protobuf/compiler/plugin.proto", &protobuf_RegisterTypes); CodeGeneratorRequest::default_instance_ = new CodeGeneratorRequest(); @@ -152,10 +160,8 @@ struct StaticDescriptorInitializer_google_2fprotobuf_2fcompiler_2fplugin_2eproto } } static_descriptor_initializer_google_2fprotobuf_2fcompiler_2fplugin_2eproto_; - // =================================================================== -const ::std::string CodeGeneratorRequest::_default_parameter_; #ifndef _MSC_VER const int CodeGeneratorRequest::kFileToGenerateFieldNumber; const int CodeGeneratorRequest::kParameterFieldNumber; @@ -178,7 +184,7 @@ CodeGeneratorRequest::CodeGeneratorRequest(const CodeGeneratorRequest& from) void CodeGeneratorRequest::SharedCtor() { _cached_size_ = 0; - parameter_ = const_cast< ::std::string*>(&_default_parameter_); + parameter_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); ::memset(_has_bits_, 0, sizeof(_has_bits_)); } @@ -187,7 +193,7 @@ CodeGeneratorRequest::~CodeGeneratorRequest() { } void CodeGeneratorRequest::SharedDtor() { - if (parameter_ != &_default_parameter_) { + if (parameter_ != &::google::protobuf::internal::kEmptyString) { delete parameter_; } if (this != default_instance_) { @@ -205,7 +211,8 @@ const ::google::protobuf::Descriptor* CodeGeneratorRequest::descriptor() { } const CodeGeneratorRequest& CodeGeneratorRequest::default_instance() { - if (default_instance_ == NULL) protobuf_AddDesc_google_2fprotobuf_2fcompiler_2fplugin_2eproto(); return *default_instance_; + if (default_instance_ == NULL) protobuf_AddDesc_google_2fprotobuf_2fcompiler_2fplugin_2eproto(); + return *default_instance_; } CodeGeneratorRequest* CodeGeneratorRequest::default_instance_ = NULL; @@ -216,8 +223,8 @@ CodeGeneratorRequest* CodeGeneratorRequest::New() const { void CodeGeneratorRequest::Clear() { if (_has_bits_[1 / 32] & (0xffu << (1 % 32))) { - if (_has_bit(1)) { - if (parameter_ != &_default_parameter_) { + if (has_parameter()) { + if (parameter_ != &::google::protobuf::internal::kEmptyString) { parameter_->clear(); } } @@ -242,7 +249,8 @@ bool CodeGeneratorRequest::MergePartialFromCodedStream( DO_(::google::protobuf::internal::WireFormatLite::ReadString( input, this->add_file_to_generate())); ::google::protobuf::internal::WireFormat::VerifyUTF8String( - this->file_to_generate(0).data(), this->file_to_generate(0).length(), + this->file_to_generate(this->file_to_generate_size() - 1).data(), + this->file_to_generate(this->file_to_generate_size() - 1).length(), ::google::protobuf::internal::WireFormat::PARSE); } else { goto handle_uninterpreted; @@ -251,7 +259,7 @@ bool CodeGeneratorRequest::MergePartialFromCodedStream( if (input->ExpectTag(18)) goto parse_parameter; break; } - + // optional string parameter = 2; case 2: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -268,7 +276,7 @@ bool CodeGeneratorRequest::MergePartialFromCodedStream( if (input->ExpectTag(122)) goto parse_proto_file; break; } - + // repeated .google.protobuf.FileDescriptorProto proto_file = 15; case 15: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -283,7 +291,7 @@ bool CodeGeneratorRequest::MergePartialFromCodedStream( if (input->ExpectAtEnd()) return true; break; } - + default: { handle_uninterpreted: if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -310,22 +318,22 @@ void CodeGeneratorRequest::SerializeWithCachedSizes( ::google::protobuf::internal::WireFormatLite::WriteString( 1, this->file_to_generate(i), output); } - + // optional string parameter = 2; - if (_has_bit(1)) { + if (has_parameter()) { ::google::protobuf::internal::WireFormat::VerifyUTF8String( this->parameter().data(), this->parameter().length(), ::google::protobuf::internal::WireFormat::SERIALIZE); ::google::protobuf::internal::WireFormatLite::WriteString( 2, this->parameter(), output); } - + // repeated .google.protobuf.FileDescriptorProto proto_file = 15; for (int i = 0; i < this->proto_file_size(); i++) { ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray( 15, this->proto_file(i), output); } - + if (!unknown_fields().empty()) { ::google::protobuf::internal::WireFormat::SerializeUnknownFields( unknown_fields(), output); @@ -342,9 +350,9 @@ void CodeGeneratorRequest::SerializeWithCachedSizes( target = ::google::protobuf::internal::WireFormatLite:: WriteStringToArray(1, this->file_to_generate(i), target); } - + // optional string parameter = 2; - if (_has_bit(1)) { + if (has_parameter()) { ::google::protobuf::internal::WireFormat::VerifyUTF8String( this->parameter().data(), this->parameter().length(), ::google::protobuf::internal::WireFormat::SERIALIZE); @@ -352,14 +360,14 @@ void CodeGeneratorRequest::SerializeWithCachedSizes( ::google::protobuf::internal::WireFormatLite::WriteStringToArray( 2, this->parameter(), target); } - + // repeated .google.protobuf.FileDescriptorProto proto_file = 15; for (int i = 0; i < this->proto_file_size(); i++) { target = ::google::protobuf::internal::WireFormatLite:: WriteMessageNoVirtualToArray( 15, this->proto_file(i), target); } - + if (!unknown_fields().empty()) { target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray( unknown_fields(), target); @@ -369,7 +377,7 @@ void CodeGeneratorRequest::SerializeWithCachedSizes( int CodeGeneratorRequest::ByteSize() const { int total_size = 0; - + if (_has_bits_[1 / 32] & (0xffu << (1 % 32))) { // optional string parameter = 2; if (has_parameter()) { @@ -377,7 +385,7 @@ int CodeGeneratorRequest::ByteSize() const { ::google::protobuf::internal::WireFormatLite::StringSize( this->parameter()); } - + } // repeated string file_to_generate = 1; total_size += 1 * this->file_to_generate_size(); @@ -385,7 +393,7 @@ int CodeGeneratorRequest::ByteSize() const { total_size += ::google::protobuf::internal::WireFormatLite::StringSize( this->file_to_generate(i)); } - + // repeated .google.protobuf.FileDescriptorProto proto_file = 15; total_size += 1 * this->proto_file_size(); for (int i = 0; i < this->proto_file_size(); i++) { @@ -393,7 +401,7 @@ int CodeGeneratorRequest::ByteSize() const { ::google::protobuf::internal::WireFormatLite::MessageSizeNoVirtual( this->proto_file(i)); } - + if (!unknown_fields().empty()) { total_size += ::google::protobuf::internal::WireFormat::ComputeUnknownFieldsSize( @@ -422,7 +430,7 @@ void CodeGeneratorRequest::MergeFrom(const CodeGeneratorRequest& from) { file_to_generate_.MergeFrom(from.file_to_generate_); proto_file_.MergeFrom(from.proto_file_); if (from._has_bits_[1 / 32] & (0xffu << (1 % 32))) { - if (from._has_bit(1)) { + if (from.has_parameter()) { set_parameter(from.parameter()); } } @@ -442,7 +450,7 @@ void CodeGeneratorRequest::CopyFrom(const CodeGeneratorRequest& from) { } bool CodeGeneratorRequest::IsInitialized() const { - + for (int i = 0; i < proto_file_size(); i++) { if (!this->proto_file(i).IsInitialized()) return false; } @@ -471,9 +479,6 @@ void CodeGeneratorRequest::Swap(CodeGeneratorRequest* other) { // =================================================================== -const ::std::string CodeGeneratorResponse_File::_default_name_; -const ::std::string CodeGeneratorResponse_File::_default_insertion_point_; -const ::std::string CodeGeneratorResponse_File::_default_content_; #ifndef _MSC_VER const int CodeGeneratorResponse_File::kNameFieldNumber; const int CodeGeneratorResponse_File::kInsertionPointFieldNumber; @@ -496,9 +501,9 @@ CodeGeneratorResponse_File::CodeGeneratorResponse_File(const CodeGeneratorRespon void CodeGeneratorResponse_File::SharedCtor() { _cached_size_ = 0; - name_ = const_cast< ::std::string*>(&_default_name_); - insertion_point_ = const_cast< ::std::string*>(&_default_insertion_point_); - content_ = const_cast< ::std::string*>(&_default_content_); + name_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + insertion_point_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + content_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); ::memset(_has_bits_, 0, sizeof(_has_bits_)); } @@ -507,13 +512,13 @@ CodeGeneratorResponse_File::~CodeGeneratorResponse_File() { } void CodeGeneratorResponse_File::SharedDtor() { - if (name_ != &_default_name_) { + if (name_ != &::google::protobuf::internal::kEmptyString) { delete name_; } - if (insertion_point_ != &_default_insertion_point_) { + if (insertion_point_ != &::google::protobuf::internal::kEmptyString) { delete insertion_point_; } - if (content_ != &_default_content_) { + if (content_ != &::google::protobuf::internal::kEmptyString) { delete content_; } if (this != default_instance_) { @@ -531,7 +536,8 @@ const ::google::protobuf::Descriptor* CodeGeneratorResponse_File::descriptor() { } const CodeGeneratorResponse_File& CodeGeneratorResponse_File::default_instance() { - if (default_instance_ == NULL) protobuf_AddDesc_google_2fprotobuf_2fcompiler_2fplugin_2eproto(); return *default_instance_; + if (default_instance_ == NULL) protobuf_AddDesc_google_2fprotobuf_2fcompiler_2fplugin_2eproto(); + return *default_instance_; } CodeGeneratorResponse_File* CodeGeneratorResponse_File::default_instance_ = NULL; @@ -542,18 +548,18 @@ CodeGeneratorResponse_File* CodeGeneratorResponse_File::New() const { void CodeGeneratorResponse_File::Clear() { if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) { - if (_has_bit(0)) { - if (name_ != &_default_name_) { + if (has_name()) { + if (name_ != &::google::protobuf::internal::kEmptyString) { name_->clear(); } } - if (_has_bit(1)) { - if (insertion_point_ != &_default_insertion_point_) { + if (has_insertion_point()) { + if (insertion_point_ != &::google::protobuf::internal::kEmptyString) { insertion_point_->clear(); } } - if (_has_bit(2)) { - if (content_ != &_default_content_) { + if (has_content()) { + if (content_ != &::google::protobuf::internal::kEmptyString) { content_->clear(); } } @@ -583,7 +589,7 @@ bool CodeGeneratorResponse_File::MergePartialFromCodedStream( if (input->ExpectTag(18)) goto parse_insertion_point; break; } - + // optional string insertion_point = 2; case 2: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -600,7 +606,7 @@ bool CodeGeneratorResponse_File::MergePartialFromCodedStream( if (input->ExpectTag(122)) goto parse_content; break; } - + // optional string content = 15; case 15: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -617,7 +623,7 @@ bool CodeGeneratorResponse_File::MergePartialFromCodedStream( if (input->ExpectAtEnd()) return true; break; } - + default: { handle_uninterpreted: if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -637,32 +643,32 @@ bool CodeGeneratorResponse_File::MergePartialFromCodedStream( void CodeGeneratorResponse_File::SerializeWithCachedSizes( ::google::protobuf::io::CodedOutputStream* output) const { // optional string name = 1; - if (_has_bit(0)) { + if (has_name()) { ::google::protobuf::internal::WireFormat::VerifyUTF8String( this->name().data(), this->name().length(), ::google::protobuf::internal::WireFormat::SERIALIZE); ::google::protobuf::internal::WireFormatLite::WriteString( 1, this->name(), output); } - + // optional string insertion_point = 2; - if (_has_bit(1)) { + if (has_insertion_point()) { ::google::protobuf::internal::WireFormat::VerifyUTF8String( this->insertion_point().data(), this->insertion_point().length(), ::google::protobuf::internal::WireFormat::SERIALIZE); ::google::protobuf::internal::WireFormatLite::WriteString( 2, this->insertion_point(), output); } - + // optional string content = 15; - if (_has_bit(2)) { + if (has_content()) { ::google::protobuf::internal::WireFormat::VerifyUTF8String( this->content().data(), this->content().length(), ::google::protobuf::internal::WireFormat::SERIALIZE); ::google::protobuf::internal::WireFormatLite::WriteString( 15, this->content(), output); } - + if (!unknown_fields().empty()) { ::google::protobuf::internal::WireFormat::SerializeUnknownFields( unknown_fields(), output); @@ -672,7 +678,7 @@ void CodeGeneratorResponse_File::SerializeWithCachedSizes( ::google::protobuf::uint8* CodeGeneratorResponse_File::SerializeWithCachedSizesToArray( ::google::protobuf::uint8* target) const { // optional string name = 1; - if (_has_bit(0)) { + if (has_name()) { ::google::protobuf::internal::WireFormat::VerifyUTF8String( this->name().data(), this->name().length(), ::google::protobuf::internal::WireFormat::SERIALIZE); @@ -680,9 +686,9 @@ void CodeGeneratorResponse_File::SerializeWithCachedSizes( ::google::protobuf::internal::WireFormatLite::WriteStringToArray( 1, this->name(), target); } - + // optional string insertion_point = 2; - if (_has_bit(1)) { + if (has_insertion_point()) { ::google::protobuf::internal::WireFormat::VerifyUTF8String( this->insertion_point().data(), this->insertion_point().length(), ::google::protobuf::internal::WireFormat::SERIALIZE); @@ -690,9 +696,9 @@ void CodeGeneratorResponse_File::SerializeWithCachedSizes( ::google::protobuf::internal::WireFormatLite::WriteStringToArray( 2, this->insertion_point(), target); } - + // optional string content = 15; - if (_has_bit(2)) { + if (has_content()) { ::google::protobuf::internal::WireFormat::VerifyUTF8String( this->content().data(), this->content().length(), ::google::protobuf::internal::WireFormat::SERIALIZE); @@ -700,7 +706,7 @@ void CodeGeneratorResponse_File::SerializeWithCachedSizes( ::google::protobuf::internal::WireFormatLite::WriteStringToArray( 15, this->content(), target); } - + if (!unknown_fields().empty()) { target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray( unknown_fields(), target); @@ -710,7 +716,7 @@ void CodeGeneratorResponse_File::SerializeWithCachedSizes( int CodeGeneratorResponse_File::ByteSize() const { int total_size = 0; - + if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) { // optional string name = 1; if (has_name()) { @@ -718,21 +724,21 @@ int CodeGeneratorResponse_File::ByteSize() const { ::google::protobuf::internal::WireFormatLite::StringSize( this->name()); } - + // optional string insertion_point = 2; if (has_insertion_point()) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::StringSize( this->insertion_point()); } - + // optional string content = 15; if (has_content()) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::StringSize( this->content()); } - + } if (!unknown_fields().empty()) { total_size += @@ -760,13 +766,13 @@ void CodeGeneratorResponse_File::MergeFrom(const ::google::protobuf::Message& fr void CodeGeneratorResponse_File::MergeFrom(const CodeGeneratorResponse_File& from) { GOOGLE_CHECK_NE(&from, this); if (from._has_bits_[0 / 32] & (0xffu << (0 % 32))) { - if (from._has_bit(0)) { + if (from.has_name()) { set_name(from.name()); } - if (from._has_bit(1)) { + if (from.has_insertion_point()) { set_insertion_point(from.insertion_point()); } - if (from._has_bit(2)) { + if (from.has_content()) { set_content(from.content()); } } @@ -786,7 +792,7 @@ void CodeGeneratorResponse_File::CopyFrom(const CodeGeneratorResponse_File& from } bool CodeGeneratorResponse_File::IsInitialized() const { - + return true; } @@ -812,7 +818,6 @@ void CodeGeneratorResponse_File::Swap(CodeGeneratorResponse_File* other) { // ------------------------------------------------------------------- -const ::std::string CodeGeneratorResponse::_default_error_; #ifndef _MSC_VER const int CodeGeneratorResponse::kErrorFieldNumber; const int CodeGeneratorResponse::kFileFieldNumber; @@ -834,7 +839,7 @@ CodeGeneratorResponse::CodeGeneratorResponse(const CodeGeneratorResponse& from) void CodeGeneratorResponse::SharedCtor() { _cached_size_ = 0; - error_ = const_cast< ::std::string*>(&_default_error_); + error_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); ::memset(_has_bits_, 0, sizeof(_has_bits_)); } @@ -843,7 +848,7 @@ CodeGeneratorResponse::~CodeGeneratorResponse() { } void CodeGeneratorResponse::SharedDtor() { - if (error_ != &_default_error_) { + if (error_ != &::google::protobuf::internal::kEmptyString) { delete error_; } if (this != default_instance_) { @@ -861,7 +866,8 @@ const ::google::protobuf::Descriptor* CodeGeneratorResponse::descriptor() { } const CodeGeneratorResponse& CodeGeneratorResponse::default_instance() { - if (default_instance_ == NULL) protobuf_AddDesc_google_2fprotobuf_2fcompiler_2fplugin_2eproto(); return *default_instance_; + if (default_instance_ == NULL) protobuf_AddDesc_google_2fprotobuf_2fcompiler_2fplugin_2eproto(); + return *default_instance_; } CodeGeneratorResponse* CodeGeneratorResponse::default_instance_ = NULL; @@ -872,8 +878,8 @@ CodeGeneratorResponse* CodeGeneratorResponse::New() const { void CodeGeneratorResponse::Clear() { if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) { - if (_has_bit(0)) { - if (error_ != &_default_error_) { + if (has_error()) { + if (error_ != &::google::protobuf::internal::kEmptyString) { error_->clear(); } } @@ -904,7 +910,7 @@ bool CodeGeneratorResponse::MergePartialFromCodedStream( if (input->ExpectTag(122)) goto parse_file; break; } - + // repeated .google.protobuf.compiler.CodeGeneratorResponse.File file = 15; case 15: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -919,7 +925,7 @@ bool CodeGeneratorResponse::MergePartialFromCodedStream( if (input->ExpectAtEnd()) return true; break; } - + default: { handle_uninterpreted: if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -939,20 +945,20 @@ bool CodeGeneratorResponse::MergePartialFromCodedStream( void CodeGeneratorResponse::SerializeWithCachedSizes( ::google::protobuf::io::CodedOutputStream* output) const { // optional string error = 1; - if (_has_bit(0)) { + if (has_error()) { ::google::protobuf::internal::WireFormat::VerifyUTF8String( this->error().data(), this->error().length(), ::google::protobuf::internal::WireFormat::SERIALIZE); ::google::protobuf::internal::WireFormatLite::WriteString( 1, this->error(), output); } - + // repeated .google.protobuf.compiler.CodeGeneratorResponse.File file = 15; for (int i = 0; i < this->file_size(); i++) { ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray( 15, this->file(i), output); } - + if (!unknown_fields().empty()) { ::google::protobuf::internal::WireFormat::SerializeUnknownFields( unknown_fields(), output); @@ -962,7 +968,7 @@ void CodeGeneratorResponse::SerializeWithCachedSizes( ::google::protobuf::uint8* CodeGeneratorResponse::SerializeWithCachedSizesToArray( ::google::protobuf::uint8* target) const { // optional string error = 1; - if (_has_bit(0)) { + if (has_error()) { ::google::protobuf::internal::WireFormat::VerifyUTF8String( this->error().data(), this->error().length(), ::google::protobuf::internal::WireFormat::SERIALIZE); @@ -970,14 +976,14 @@ void CodeGeneratorResponse::SerializeWithCachedSizes( ::google::protobuf::internal::WireFormatLite::WriteStringToArray( 1, this->error(), target); } - + // repeated .google.protobuf.compiler.CodeGeneratorResponse.File file = 15; for (int i = 0; i < this->file_size(); i++) { target = ::google::protobuf::internal::WireFormatLite:: WriteMessageNoVirtualToArray( 15, this->file(i), target); } - + if (!unknown_fields().empty()) { target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray( unknown_fields(), target); @@ -987,7 +993,7 @@ void CodeGeneratorResponse::SerializeWithCachedSizes( int CodeGeneratorResponse::ByteSize() const { int total_size = 0; - + if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) { // optional string error = 1; if (has_error()) { @@ -995,7 +1001,7 @@ int CodeGeneratorResponse::ByteSize() const { ::google::protobuf::internal::WireFormatLite::StringSize( this->error()); } - + } // repeated .google.protobuf.compiler.CodeGeneratorResponse.File file = 15; total_size += 1 * this->file_size(); @@ -1004,7 +1010,7 @@ int CodeGeneratorResponse::ByteSize() const { ::google::protobuf::internal::WireFormatLite::MessageSizeNoVirtual( this->file(i)); } - + if (!unknown_fields().empty()) { total_size += ::google::protobuf::internal::WireFormat::ComputeUnknownFieldsSize( @@ -1032,7 +1038,7 @@ void CodeGeneratorResponse::MergeFrom(const CodeGeneratorResponse& from) { GOOGLE_CHECK_NE(&from, this); file_.MergeFrom(from.file_); if (from._has_bits_[0 / 32] & (0xffu << (0 % 32))) { - if (from._has_bit(0)) { + if (from.has_error()) { set_error(from.error()); } } @@ -1052,7 +1058,7 @@ void CodeGeneratorResponse::CopyFrom(const CodeGeneratorResponse& from) { } bool CodeGeneratorResponse::IsInitialized() const { - + return true; } diff --git a/cpp/thirdparty/protobuf-2.3.0/src/google/protobuf/compiler/plugin.pb.h b/cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/compiler/plugin.pb.h similarity index 73% rename from cpp/thirdparty/protobuf-2.3.0/src/google/protobuf/compiler/plugin.pb.h rename to cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/compiler/plugin.pb.h index f8f805354..68cc21c7f 100644 --- a/cpp/thirdparty/protobuf-2.3.0/src/google/protobuf/compiler/plugin.pb.h +++ b/cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/compiler/plugin.pb.h @@ -8,21 +8,22 @@ #include -#if GOOGLE_PROTOBUF_VERSION < 2003000 +#if GOOGLE_PROTOBUF_VERSION < 2005000 #error This file was generated by a newer version of protoc which is #error incompatible with your Protocol Buffer headers. Please update #error your headers. #endif -#if 2003000 < GOOGLE_PROTOBUF_MIN_PROTOC_VERSION +#if 2005000 < GOOGLE_PROTOBUF_MIN_PROTOC_VERSION #error This file was generated by an older version of protoc which is #error incompatible with your Protocol Buffer headers. Please #error regenerate this file with a newer version of protoc. #endif #include +#include #include #include -#include +#include #include "google/protobuf/descriptor.pb.h" // @@protoc_insertion_point(includes) @@ -45,29 +46,29 @@ class LIBPROTOC_EXPORT CodeGeneratorRequest : public ::google::protobuf::Message public: CodeGeneratorRequest(); virtual ~CodeGeneratorRequest(); - + CodeGeneratorRequest(const CodeGeneratorRequest& from); - + inline CodeGeneratorRequest& operator=(const CodeGeneratorRequest& from) { CopyFrom(from); return *this; } - + inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const { return _unknown_fields_; } - + inline ::google::protobuf::UnknownFieldSet* mutable_unknown_fields() { return &_unknown_fields_; } - + static const ::google::protobuf::Descriptor* descriptor(); static const CodeGeneratorRequest& default_instance(); - + void Swap(CodeGeneratorRequest* other); - + // implements Message ---------------------------------------------- - + CodeGeneratorRequest* New() const; void CopyFrom(const ::google::protobuf::Message& from); void MergeFrom(const ::google::protobuf::Message& from); @@ -75,7 +76,7 @@ class LIBPROTOC_EXPORT CodeGeneratorRequest : public ::google::protobuf::Message void MergeFrom(const CodeGeneratorRequest& from); void Clear(); bool IsInitialized() const; - + int ByteSize() const; bool MergePartialFromCodedStream( ::google::protobuf::io::CodedInputStream* input); @@ -88,13 +89,13 @@ class LIBPROTOC_EXPORT CodeGeneratorRequest : public ::google::protobuf::Message void SharedDtor(); void SetCachedSize(int size) const; public: - + ::google::protobuf::Metadata GetMetadata() const; - + // nested types ---------------------------------------------------- - + // accessors ------------------------------------------------------- - + // repeated string file_to_generate = 1; inline int file_to_generate_size() const; inline void clear_file_to_generate(); @@ -110,7 +111,7 @@ class LIBPROTOC_EXPORT CodeGeneratorRequest : public ::google::protobuf::Message inline void add_file_to_generate(const char* value, size_t size); inline const ::google::protobuf::RepeatedPtrField< ::std::string>& file_to_generate() const; inline ::google::protobuf::RepeatedPtrField< ::std::string>* mutable_file_to_generate(); - + // optional string parameter = 2; inline bool has_parameter() const; inline void clear_parameter(); @@ -120,7 +121,9 @@ class LIBPROTOC_EXPORT CodeGeneratorRequest : public ::google::protobuf::Message inline void set_parameter(const char* value); inline void set_parameter(const char* value, size_t size); inline ::std::string* mutable_parameter(); - + inline ::std::string* release_parameter(); + inline void set_allocated_parameter(::std::string* parameter); + // repeated .google.protobuf.FileDescriptorProto proto_file = 15; inline int proto_file_size() const; inline void clear_proto_file(); @@ -132,33 +135,25 @@ class LIBPROTOC_EXPORT CodeGeneratorRequest : public ::google::protobuf::Message proto_file() const; inline ::google::protobuf::RepeatedPtrField< ::google::protobuf::FileDescriptorProto >* mutable_proto_file(); - + // @@protoc_insertion_point(class_scope:google.protobuf.compiler.CodeGeneratorRequest) private: + inline void set_has_parameter(); + inline void clear_has_parameter(); + ::google::protobuf::UnknownFieldSet _unknown_fields_; - mutable int _cached_size_; - + ::google::protobuf::RepeatedPtrField< ::std::string> file_to_generate_; ::std::string* parameter_; - static const ::std::string _default_parameter_; ::google::protobuf::RepeatedPtrField< ::google::protobuf::FileDescriptorProto > proto_file_; + + mutable int _cached_size_; + ::google::protobuf::uint32 _has_bits_[(3 + 31) / 32]; + friend void LIBPROTOC_EXPORT protobuf_AddDesc_google_2fprotobuf_2fcompiler_2fplugin_2eproto(); friend void protobuf_AssignDesc_google_2fprotobuf_2fcompiler_2fplugin_2eproto(); friend void protobuf_ShutdownFile_google_2fprotobuf_2fcompiler_2fplugin_2eproto(); - - ::google::protobuf::uint32 _has_bits_[(3 + 31) / 32]; - - // WHY DOES & HAVE LOWER PRECEDENCE THAN != !? - inline bool _has_bit(int index) const { - return (_has_bits_[index / 32] & (1u << (index % 32))) != 0; - } - inline void _set_bit(int index) { - _has_bits_[index / 32] |= (1u << (index % 32)); - } - inline void _clear_bit(int index) { - _has_bits_[index / 32] &= ~(1u << (index % 32)); - } - + void InitAsDefaultInstance(); static CodeGeneratorRequest* default_instance_; }; @@ -168,29 +163,29 @@ class LIBPROTOC_EXPORT CodeGeneratorResponse_File : public ::google::protobuf::M public: CodeGeneratorResponse_File(); virtual ~CodeGeneratorResponse_File(); - + CodeGeneratorResponse_File(const CodeGeneratorResponse_File& from); - + inline CodeGeneratorResponse_File& operator=(const CodeGeneratorResponse_File& from) { CopyFrom(from); return *this; } - + inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const { return _unknown_fields_; } - + inline ::google::protobuf::UnknownFieldSet* mutable_unknown_fields() { return &_unknown_fields_; } - + static const ::google::protobuf::Descriptor* descriptor(); static const CodeGeneratorResponse_File& default_instance(); - + void Swap(CodeGeneratorResponse_File* other); - + // implements Message ---------------------------------------------- - + CodeGeneratorResponse_File* New() const; void CopyFrom(const ::google::protobuf::Message& from); void MergeFrom(const ::google::protobuf::Message& from); @@ -198,7 +193,7 @@ class LIBPROTOC_EXPORT CodeGeneratorResponse_File : public ::google::protobuf::M void MergeFrom(const CodeGeneratorResponse_File& from); void Clear(); bool IsInitialized() const; - + int ByteSize() const; bool MergePartialFromCodedStream( ::google::protobuf::io::CodedInputStream* input); @@ -211,13 +206,13 @@ class LIBPROTOC_EXPORT CodeGeneratorResponse_File : public ::google::protobuf::M void SharedDtor(); void SetCachedSize(int size) const; public: - + ::google::protobuf::Metadata GetMetadata() const; - + // nested types ---------------------------------------------------- - + // accessors ------------------------------------------------------- - + // optional string name = 1; inline bool has_name() const; inline void clear_name(); @@ -227,7 +222,9 @@ class LIBPROTOC_EXPORT CodeGeneratorResponse_File : public ::google::protobuf::M inline void set_name(const char* value); inline void set_name(const char* value, size_t size); inline ::std::string* mutable_name(); - + inline ::std::string* release_name(); + inline void set_allocated_name(::std::string* name); + // optional string insertion_point = 2; inline bool has_insertion_point() const; inline void clear_insertion_point(); @@ -237,7 +234,9 @@ class LIBPROTOC_EXPORT CodeGeneratorResponse_File : public ::google::protobuf::M inline void set_insertion_point(const char* value); inline void set_insertion_point(const char* value, size_t size); inline ::std::string* mutable_insertion_point(); - + inline ::std::string* release_insertion_point(); + inline void set_allocated_insertion_point(::std::string* insertion_point); + // optional string content = 15; inline bool has_content() const; inline void clear_content(); @@ -247,35 +246,31 @@ class LIBPROTOC_EXPORT CodeGeneratorResponse_File : public ::google::protobuf::M inline void set_content(const char* value); inline void set_content(const char* value, size_t size); inline ::std::string* mutable_content(); - + inline ::std::string* release_content(); + inline void set_allocated_content(::std::string* content); + // @@protoc_insertion_point(class_scope:google.protobuf.compiler.CodeGeneratorResponse.File) private: + inline void set_has_name(); + inline void clear_has_name(); + inline void set_has_insertion_point(); + inline void clear_has_insertion_point(); + inline void set_has_content(); + inline void clear_has_content(); + ::google::protobuf::UnknownFieldSet _unknown_fields_; - mutable int _cached_size_; - + ::std::string* name_; - static const ::std::string _default_name_; ::std::string* insertion_point_; - static const ::std::string _default_insertion_point_; ::std::string* content_; - static const ::std::string _default_content_; + + mutable int _cached_size_; + ::google::protobuf::uint32 _has_bits_[(3 + 31) / 32]; + friend void LIBPROTOC_EXPORT protobuf_AddDesc_google_2fprotobuf_2fcompiler_2fplugin_2eproto(); friend void protobuf_AssignDesc_google_2fprotobuf_2fcompiler_2fplugin_2eproto(); friend void protobuf_ShutdownFile_google_2fprotobuf_2fcompiler_2fplugin_2eproto(); - - ::google::protobuf::uint32 _has_bits_[(3 + 31) / 32]; - - // WHY DOES & HAVE LOWER PRECEDENCE THAN != !? - inline bool _has_bit(int index) const { - return (_has_bits_[index / 32] & (1u << (index % 32))) != 0; - } - inline void _set_bit(int index) { - _has_bits_[index / 32] |= (1u << (index % 32)); - } - inline void _clear_bit(int index) { - _has_bits_[index / 32] &= ~(1u << (index % 32)); - } - + void InitAsDefaultInstance(); static CodeGeneratorResponse_File* default_instance_; }; @@ -285,29 +280,29 @@ class LIBPROTOC_EXPORT CodeGeneratorResponse : public ::google::protobuf::Messag public: CodeGeneratorResponse(); virtual ~CodeGeneratorResponse(); - + CodeGeneratorResponse(const CodeGeneratorResponse& from); - + inline CodeGeneratorResponse& operator=(const CodeGeneratorResponse& from) { CopyFrom(from); return *this; } - + inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const { return _unknown_fields_; } - + inline ::google::protobuf::UnknownFieldSet* mutable_unknown_fields() { return &_unknown_fields_; } - + static const ::google::protobuf::Descriptor* descriptor(); static const CodeGeneratorResponse& default_instance(); - + void Swap(CodeGeneratorResponse* other); - + // implements Message ---------------------------------------------- - + CodeGeneratorResponse* New() const; void CopyFrom(const ::google::protobuf::Message& from); void MergeFrom(const ::google::protobuf::Message& from); @@ -315,7 +310,7 @@ class LIBPROTOC_EXPORT CodeGeneratorResponse : public ::google::protobuf::Messag void MergeFrom(const CodeGeneratorResponse& from); void Clear(); bool IsInitialized() const; - + int ByteSize() const; bool MergePartialFromCodedStream( ::google::protobuf::io::CodedInputStream* input); @@ -328,15 +323,15 @@ class LIBPROTOC_EXPORT CodeGeneratorResponse : public ::google::protobuf::Messag void SharedDtor(); void SetCachedSize(int size) const; public: - + ::google::protobuf::Metadata GetMetadata() const; - + // nested types ---------------------------------------------------- - + typedef CodeGeneratorResponse_File File; - + // accessors ------------------------------------------------------- - + // optional string error = 1; inline bool has_error() const; inline void clear_error(); @@ -346,7 +341,9 @@ class LIBPROTOC_EXPORT CodeGeneratorResponse : public ::google::protobuf::Messag inline void set_error(const char* value); inline void set_error(const char* value, size_t size); inline ::std::string* mutable_error(); - + inline ::std::string* release_error(); + inline void set_allocated_error(::std::string* error); + // repeated .google.protobuf.compiler.CodeGeneratorResponse.File file = 15; inline int file_size() const; inline void clear_file(); @@ -358,32 +355,24 @@ class LIBPROTOC_EXPORT CodeGeneratorResponse : public ::google::protobuf::Messag file() const; inline ::google::protobuf::RepeatedPtrField< ::google::protobuf::compiler::CodeGeneratorResponse_File >* mutable_file(); - + // @@protoc_insertion_point(class_scope:google.protobuf.compiler.CodeGeneratorResponse) private: + inline void set_has_error(); + inline void clear_has_error(); + ::google::protobuf::UnknownFieldSet _unknown_fields_; - mutable int _cached_size_; - + ::std::string* error_; - static const ::std::string _default_error_; ::google::protobuf::RepeatedPtrField< ::google::protobuf::compiler::CodeGeneratorResponse_File > file_; + + mutable int _cached_size_; + ::google::protobuf::uint32 _has_bits_[(2 + 31) / 32]; + friend void LIBPROTOC_EXPORT protobuf_AddDesc_google_2fprotobuf_2fcompiler_2fplugin_2eproto(); friend void protobuf_AssignDesc_google_2fprotobuf_2fcompiler_2fplugin_2eproto(); friend void protobuf_ShutdownFile_google_2fprotobuf_2fcompiler_2fplugin_2eproto(); - - ::google::protobuf::uint32 _has_bits_[(2 + 31) / 32]; - - // WHY DOES & HAVE LOWER PRECEDENCE THAN != !? - inline bool _has_bit(int index) const { - return (_has_bits_[index / 32] & (1u << (index % 32))) != 0; - } - inline void _set_bit(int index) { - _has_bits_[index / 32] |= (1u << (index % 32)); - } - inline void _clear_bit(int index) { - _has_bits_[index / 32] &= ~(1u << (index % 32)); - } - + void InitAsDefaultInstance(); static CodeGeneratorResponse* default_instance_; }; @@ -440,45 +429,73 @@ CodeGeneratorRequest::mutable_file_to_generate() { // optional string parameter = 2; inline bool CodeGeneratorRequest::has_parameter() const { - return _has_bit(1); + return (_has_bits_[0] & 0x00000002u) != 0; +} +inline void CodeGeneratorRequest::set_has_parameter() { + _has_bits_[0] |= 0x00000002u; +} +inline void CodeGeneratorRequest::clear_has_parameter() { + _has_bits_[0] &= ~0x00000002u; } inline void CodeGeneratorRequest::clear_parameter() { - if (parameter_ != &_default_parameter_) { + if (parameter_ != &::google::protobuf::internal::kEmptyString) { parameter_->clear(); } - _clear_bit(1); + clear_has_parameter(); } inline const ::std::string& CodeGeneratorRequest::parameter() const { return *parameter_; } inline void CodeGeneratorRequest::set_parameter(const ::std::string& value) { - _set_bit(1); - if (parameter_ == &_default_parameter_) { + set_has_parameter(); + if (parameter_ == &::google::protobuf::internal::kEmptyString) { parameter_ = new ::std::string; } parameter_->assign(value); } inline void CodeGeneratorRequest::set_parameter(const char* value) { - _set_bit(1); - if (parameter_ == &_default_parameter_) { + set_has_parameter(); + if (parameter_ == &::google::protobuf::internal::kEmptyString) { parameter_ = new ::std::string; } parameter_->assign(value); } inline void CodeGeneratorRequest::set_parameter(const char* value, size_t size) { - _set_bit(1); - if (parameter_ == &_default_parameter_) { + set_has_parameter(); + if (parameter_ == &::google::protobuf::internal::kEmptyString) { parameter_ = new ::std::string; } parameter_->assign(reinterpret_cast(value), size); } inline ::std::string* CodeGeneratorRequest::mutable_parameter() { - _set_bit(1); - if (parameter_ == &_default_parameter_) { + set_has_parameter(); + if (parameter_ == &::google::protobuf::internal::kEmptyString) { parameter_ = new ::std::string; } return parameter_; } +inline ::std::string* CodeGeneratorRequest::release_parameter() { + clear_has_parameter(); + if (parameter_ == &::google::protobuf::internal::kEmptyString) { + return NULL; + } else { + ::std::string* temp = parameter_; + parameter_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + return temp; + } +} +inline void CodeGeneratorRequest::set_allocated_parameter(::std::string* parameter) { + if (parameter_ != &::google::protobuf::internal::kEmptyString) { + delete parameter_; + } + if (parameter) { + set_has_parameter(); + parameter_ = parameter; + } else { + clear_has_parameter(); + parameter_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + } +} // repeated .google.protobuf.FileDescriptorProto proto_file = 15; inline int CodeGeneratorRequest::proto_file_size() const { @@ -511,129 +528,213 @@ CodeGeneratorRequest::mutable_proto_file() { // optional string name = 1; inline bool CodeGeneratorResponse_File::has_name() const { - return _has_bit(0); + return (_has_bits_[0] & 0x00000001u) != 0; +} +inline void CodeGeneratorResponse_File::set_has_name() { + _has_bits_[0] |= 0x00000001u; +} +inline void CodeGeneratorResponse_File::clear_has_name() { + _has_bits_[0] &= ~0x00000001u; } inline void CodeGeneratorResponse_File::clear_name() { - if (name_ != &_default_name_) { + if (name_ != &::google::protobuf::internal::kEmptyString) { name_->clear(); } - _clear_bit(0); + clear_has_name(); } inline const ::std::string& CodeGeneratorResponse_File::name() const { return *name_; } inline void CodeGeneratorResponse_File::set_name(const ::std::string& value) { - _set_bit(0); - if (name_ == &_default_name_) { + set_has_name(); + if (name_ == &::google::protobuf::internal::kEmptyString) { name_ = new ::std::string; } name_->assign(value); } inline void CodeGeneratorResponse_File::set_name(const char* value) { - _set_bit(0); - if (name_ == &_default_name_) { + set_has_name(); + if (name_ == &::google::protobuf::internal::kEmptyString) { name_ = new ::std::string; } name_->assign(value); } inline void CodeGeneratorResponse_File::set_name(const char* value, size_t size) { - _set_bit(0); - if (name_ == &_default_name_) { + set_has_name(); + if (name_ == &::google::protobuf::internal::kEmptyString) { name_ = new ::std::string; } name_->assign(reinterpret_cast(value), size); } inline ::std::string* CodeGeneratorResponse_File::mutable_name() { - _set_bit(0); - if (name_ == &_default_name_) { + set_has_name(); + if (name_ == &::google::protobuf::internal::kEmptyString) { name_ = new ::std::string; } return name_; } +inline ::std::string* CodeGeneratorResponse_File::release_name() { + clear_has_name(); + if (name_ == &::google::protobuf::internal::kEmptyString) { + return NULL; + } else { + ::std::string* temp = name_; + name_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + return temp; + } +} +inline void CodeGeneratorResponse_File::set_allocated_name(::std::string* name) { + if (name_ != &::google::protobuf::internal::kEmptyString) { + delete name_; + } + if (name) { + set_has_name(); + name_ = name; + } else { + clear_has_name(); + name_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + } +} // optional string insertion_point = 2; inline bool CodeGeneratorResponse_File::has_insertion_point() const { - return _has_bit(1); + return (_has_bits_[0] & 0x00000002u) != 0; +} +inline void CodeGeneratorResponse_File::set_has_insertion_point() { + _has_bits_[0] |= 0x00000002u; +} +inline void CodeGeneratorResponse_File::clear_has_insertion_point() { + _has_bits_[0] &= ~0x00000002u; } inline void CodeGeneratorResponse_File::clear_insertion_point() { - if (insertion_point_ != &_default_insertion_point_) { + if (insertion_point_ != &::google::protobuf::internal::kEmptyString) { insertion_point_->clear(); } - _clear_bit(1); + clear_has_insertion_point(); } inline const ::std::string& CodeGeneratorResponse_File::insertion_point() const { return *insertion_point_; } inline void CodeGeneratorResponse_File::set_insertion_point(const ::std::string& value) { - _set_bit(1); - if (insertion_point_ == &_default_insertion_point_) { + set_has_insertion_point(); + if (insertion_point_ == &::google::protobuf::internal::kEmptyString) { insertion_point_ = new ::std::string; } insertion_point_->assign(value); } inline void CodeGeneratorResponse_File::set_insertion_point(const char* value) { - _set_bit(1); - if (insertion_point_ == &_default_insertion_point_) { + set_has_insertion_point(); + if (insertion_point_ == &::google::protobuf::internal::kEmptyString) { insertion_point_ = new ::std::string; } insertion_point_->assign(value); } inline void CodeGeneratorResponse_File::set_insertion_point(const char* value, size_t size) { - _set_bit(1); - if (insertion_point_ == &_default_insertion_point_) { + set_has_insertion_point(); + if (insertion_point_ == &::google::protobuf::internal::kEmptyString) { insertion_point_ = new ::std::string; } insertion_point_->assign(reinterpret_cast(value), size); } inline ::std::string* CodeGeneratorResponse_File::mutable_insertion_point() { - _set_bit(1); - if (insertion_point_ == &_default_insertion_point_) { + set_has_insertion_point(); + if (insertion_point_ == &::google::protobuf::internal::kEmptyString) { insertion_point_ = new ::std::string; } return insertion_point_; } +inline ::std::string* CodeGeneratorResponse_File::release_insertion_point() { + clear_has_insertion_point(); + if (insertion_point_ == &::google::protobuf::internal::kEmptyString) { + return NULL; + } else { + ::std::string* temp = insertion_point_; + insertion_point_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + return temp; + } +} +inline void CodeGeneratorResponse_File::set_allocated_insertion_point(::std::string* insertion_point) { + if (insertion_point_ != &::google::protobuf::internal::kEmptyString) { + delete insertion_point_; + } + if (insertion_point) { + set_has_insertion_point(); + insertion_point_ = insertion_point; + } else { + clear_has_insertion_point(); + insertion_point_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + } +} // optional string content = 15; inline bool CodeGeneratorResponse_File::has_content() const { - return _has_bit(2); + return (_has_bits_[0] & 0x00000004u) != 0; +} +inline void CodeGeneratorResponse_File::set_has_content() { + _has_bits_[0] |= 0x00000004u; +} +inline void CodeGeneratorResponse_File::clear_has_content() { + _has_bits_[0] &= ~0x00000004u; } inline void CodeGeneratorResponse_File::clear_content() { - if (content_ != &_default_content_) { + if (content_ != &::google::protobuf::internal::kEmptyString) { content_->clear(); } - _clear_bit(2); + clear_has_content(); } inline const ::std::string& CodeGeneratorResponse_File::content() const { return *content_; } inline void CodeGeneratorResponse_File::set_content(const ::std::string& value) { - _set_bit(2); - if (content_ == &_default_content_) { + set_has_content(); + if (content_ == &::google::protobuf::internal::kEmptyString) { content_ = new ::std::string; } content_->assign(value); } inline void CodeGeneratorResponse_File::set_content(const char* value) { - _set_bit(2); - if (content_ == &_default_content_) { + set_has_content(); + if (content_ == &::google::protobuf::internal::kEmptyString) { content_ = new ::std::string; } content_->assign(value); } inline void CodeGeneratorResponse_File::set_content(const char* value, size_t size) { - _set_bit(2); - if (content_ == &_default_content_) { + set_has_content(); + if (content_ == &::google::protobuf::internal::kEmptyString) { content_ = new ::std::string; } content_->assign(reinterpret_cast(value), size); } inline ::std::string* CodeGeneratorResponse_File::mutable_content() { - _set_bit(2); - if (content_ == &_default_content_) { + set_has_content(); + if (content_ == &::google::protobuf::internal::kEmptyString) { content_ = new ::std::string; } return content_; } +inline ::std::string* CodeGeneratorResponse_File::release_content() { + clear_has_content(); + if (content_ == &::google::protobuf::internal::kEmptyString) { + return NULL; + } else { + ::std::string* temp = content_; + content_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + return temp; + } +} +inline void CodeGeneratorResponse_File::set_allocated_content(::std::string* content) { + if (content_ != &::google::protobuf::internal::kEmptyString) { + delete content_; + } + if (content) { + set_has_content(); + content_ = content; + } else { + clear_has_content(); + content_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + } +} // ------------------------------------------------------------------- @@ -641,45 +742,73 @@ inline ::std::string* CodeGeneratorResponse_File::mutable_content() { // optional string error = 1; inline bool CodeGeneratorResponse::has_error() const { - return _has_bit(0); + return (_has_bits_[0] & 0x00000001u) != 0; +} +inline void CodeGeneratorResponse::set_has_error() { + _has_bits_[0] |= 0x00000001u; +} +inline void CodeGeneratorResponse::clear_has_error() { + _has_bits_[0] &= ~0x00000001u; } inline void CodeGeneratorResponse::clear_error() { - if (error_ != &_default_error_) { + if (error_ != &::google::protobuf::internal::kEmptyString) { error_->clear(); } - _clear_bit(0); + clear_has_error(); } inline const ::std::string& CodeGeneratorResponse::error() const { return *error_; } inline void CodeGeneratorResponse::set_error(const ::std::string& value) { - _set_bit(0); - if (error_ == &_default_error_) { + set_has_error(); + if (error_ == &::google::protobuf::internal::kEmptyString) { error_ = new ::std::string; } error_->assign(value); } inline void CodeGeneratorResponse::set_error(const char* value) { - _set_bit(0); - if (error_ == &_default_error_) { + set_has_error(); + if (error_ == &::google::protobuf::internal::kEmptyString) { error_ = new ::std::string; } error_->assign(value); } inline void CodeGeneratorResponse::set_error(const char* value, size_t size) { - _set_bit(0); - if (error_ == &_default_error_) { + set_has_error(); + if (error_ == &::google::protobuf::internal::kEmptyString) { error_ = new ::std::string; } error_->assign(reinterpret_cast(value), size); } inline ::std::string* CodeGeneratorResponse::mutable_error() { - _set_bit(0); - if (error_ == &_default_error_) { + set_has_error(); + if (error_ == &::google::protobuf::internal::kEmptyString) { error_ = new ::std::string; } return error_; } +inline ::std::string* CodeGeneratorResponse::release_error() { + clear_has_error(); + if (error_ == &::google::protobuf::internal::kEmptyString) { + return NULL; + } else { + ::std::string* temp = error_; + error_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + return temp; + } +} +inline void CodeGeneratorResponse::set_allocated_error(::std::string* error) { + if (error_ != &::google::protobuf::internal::kEmptyString) { + delete error_; + } + if (error) { + set_has_error(); + error_ = error; + } else { + clear_has_error(); + error_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + } +} // repeated .google.protobuf.compiler.CodeGeneratorResponse.File file = 15; inline int CodeGeneratorResponse::file_size() const { diff --git a/cpp/thirdparty/protobuf-2.3.0/src/google/protobuf/compiler/plugin.proto b/cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/compiler/plugin.proto similarity index 98% rename from cpp/thirdparty/protobuf-2.3.0/src/google/protobuf/compiler/plugin.proto rename to cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/compiler/plugin.proto index 4e928b0de..77b888f37 100644 --- a/cpp/thirdparty/protobuf-2.3.0/src/google/protobuf/compiler/plugin.proto +++ b/cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/compiler/plugin.proto @@ -45,6 +45,8 @@ // flag "--${NAME}_out" is passed to protoc. package google.protobuf.compiler; +option java_package = "com.google.protobuf.compiler"; +option java_outer_classname = "PluginProtos"; import "google/protobuf/descriptor.proto"; @@ -131,7 +133,7 @@ message CodeGeneratorResponse { // in order to work correctly in that context. // // The code generator that generates the initial file and the one which - // inserts into it must both run as part of a single invocatino of protoc. + // inserts into it must both run as part of a single invocation of protoc. // Code generators are executed in the order in which they appear on the // command line. // diff --git a/cpp/thirdparty/protobuf-2.3.0/src/google/protobuf/compiler/python/python_generator.cc b/cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/compiler/python/python_generator.cc similarity index 81% rename from cpp/thirdparty/protobuf-2.3.0/src/google/protobuf/compiler/python/python_generator.cc rename to cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/compiler/python/python_generator.cc index fae83a370..211ac70c0 100644 --- a/cpp/thirdparty/protobuf-2.3.0/src/google/protobuf/compiler/python/python_generator.cc +++ b/cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/compiler/python/python_generator.cc @@ -52,6 +52,7 @@ #include #include +#include #include #include #include @@ -106,6 +107,12 @@ string NamePrefixedWithNestedTypes(const DescriptorT& descriptor, const char kDescriptorKey[] = "DESCRIPTOR"; +// Does the file have top-level enums? +inline bool HasTopLevelEnums(const FileDescriptor *file) { + return file->enum_type_count() > 0; +} + + // Should we generate generic services for this file? inline bool HasGenericServices(const FileDescriptor *file) { return file->service_count() > 0 && @@ -120,13 +127,21 @@ void PrintTopBoilerplate( // TODO(robinson): Allow parameterization of Python version? printer->Print( "# Generated by the protocol buffer compiler. DO NOT EDIT!\n" - "\n" - "from google.protobuf import descriptor\n" - "from google.protobuf import message\n" - "from google.protobuf import reflection\n"); + "# source: $filename$\n" + "\n", + "filename", file->name()); + if (HasTopLevelEnums(file)) { + printer->Print( + "from google.protobuf.internal import enum_type_wrapper\n"); + } + printer->Print( + "from google.protobuf import descriptor as _descriptor\n" + "from google.protobuf import message as _message\n" + "from google.protobuf import reflection as _reflection\n" + ); if (HasGenericServices(file)) { printer->Print( - "from google.protobuf import service\n" + "from google.protobuf import service as _service\n" "from google.protobuf import service_reflection\n"); } @@ -204,12 +219,12 @@ string StringifyDefaultValue(const FieldDescriptor& field) { case FieldDescriptor::CPPTYPE_STRING: if (field.type() == FieldDescriptor::TYPE_STRING) { return "unicode(\"" + CEscape(field.default_value_string()) + - "\", \"utf-8\")"; + "\", \"utf-8\")"; } else { return "\"" + CEscape(field.default_value_string()) + "\""; } - case FieldDescriptor::CPPTYPE_MESSAGE: - return "None"; + case FieldDescriptor::CPPTYPE_MESSAGE: + return "None"; } // (We could add a default case above but then we wouldn't get the nice // compiler warning when a new type is added.) @@ -230,7 +245,7 @@ Generator::~Generator() { bool Generator::Generate(const FileDescriptor* file, const string& parameter, - OutputDirectory* output_directory, + GeneratorContext* context, string* error) const { // Completely serialize all Generate() calls on this instance. The @@ -252,26 +267,29 @@ bool Generator::Generate(const FileDescriptor* file, fdp.SerializeToString(&file_descriptor_serialized_); - scoped_ptr output(output_directory->Open(filename)); + scoped_ptr output(context->Open(filename)); GOOGLE_CHECK(output.get()); io::Printer printer(output.get(), '$'); printer_ = &printer; PrintTopBoilerplate(printer_, file_, GeneratingDescriptorProto()); + PrintImports(); PrintFileDescriptor(); PrintTopLevelEnums(); PrintTopLevelExtensions(); PrintAllNestedEnumsInFile(); PrintMessageDescriptors(); - // We have to print the imports after the descriptors, so that mutually - // recursive protos in separate files can successfully reference each other. - PrintImports(); FixForeignFieldsInDescriptors(); PrintMessages(); // We have to fix up the extensions after the message classes themselves, // since they need to call static RegisterExtension() methods on these // classes. FixForeignFieldsInExtensions(); + // Descriptor options may have custom extensions. These custom options + // can only be successfully parsed after we register corresponding + // extensions. Therefore we parse all options again here to recognize + // custom options that may be unknown when we define the descriptors. + FixAllDescriptorOptions(); if (HasGenericServices(file)) { PrintServices(); } @@ -290,6 +308,13 @@ void Generator::PrintImports() const { module_name); } printer_->Print("\n"); + + // Print public imports. + for (int i = 0; i < file_->public_dependency_count(); ++i) { + string module_name = ModuleName(file_->public_dependency(i)->name()); + printer_->Print("from $module$ import *\n", "module", module_name); + } + printer_->Print("\n"); } // Prints the single file descriptor for this file. @@ -299,7 +324,7 @@ void Generator::PrintFileDescriptor() const { m["name"] = file_->name(); m["package"] = file_->package(); const char file_descriptor_template[] = - "$descriptor_name$ = descriptor.FileDescriptor(\n" + "$descriptor_name$ = _descriptor.FileDescriptor(\n" " name='$name$',\n" " package='$package$',\n"; printer_->Print(m, file_descriptor_template); @@ -323,6 +348,11 @@ void Generator::PrintTopLevelEnums() const { for (int i = 0; i < file_->enum_type_count(); ++i) { const EnumDescriptor& enum_descriptor = *file_->enum_type(i); PrintEnum(enum_descriptor); + printer_->Print("$name$ = " + "enum_type_wrapper.EnumTypeWrapper($descriptor_name$)", + "name", enum_descriptor.name(), + "descriptor_name", + ModuleLevelDescriptorName(enum_descriptor)); printer_->Print("\n"); for (int j = 0; j < enum_descriptor.value_count(); ++j) { @@ -357,7 +387,7 @@ void Generator::PrintEnum(const EnumDescriptor& enum_descriptor) const { m["full_name"] = enum_descriptor.full_name(); m["file"] = kDescriptorKey; const char enum_descriptor_template[] = - "$descriptor_name$ = descriptor.EnumDescriptor(\n" + "$descriptor_name$ = _descriptor.EnumDescriptor(\n" " name='$name$',\n" " full_name='$full_name$',\n" " filename=None,\n" @@ -377,7 +407,7 @@ void Generator::PrintEnum(const EnumDescriptor& enum_descriptor) const { printer_->Print("containing_type=None,\n"); printer_->Print("options=$options_value$,\n", "options_value", - OptionsValue("EnumOptions", CEscape(options_string))); + OptionsValue("EnumOptions", options_string)); EnumDescriptorProto edp; PrintSerializedPbInterval(enum_descriptor, edp); printer_->Outdent(); @@ -438,7 +468,7 @@ void Generator::PrintServiceDescriptor( descriptor.options().SerializeToString(&options_string); printer_->Print( - "$service_name$ = descriptor.ServiceDescriptor(\n", + "$service_name$ = _descriptor.ServiceDescriptor(\n", "service_name", service_name); printer_->Indent(); map m; @@ -461,7 +491,6 @@ void Generator::PrintServiceDescriptor( printer_->Print("methods=[\n"); for (int i = 0; i < descriptor.method_count(); ++i) { const MethodDescriptor* method = descriptor.method(i); - string options_string; method->options().SerializeToString(&options_string); m.clear(); @@ -472,7 +501,7 @@ void Generator::PrintServiceDescriptor( m["input_type"] = ModuleLevelDescriptorName(*(method->input_type())); m["output_type"] = ModuleLevelDescriptorName(*(method->output_type())); m["options_value"] = OptionsValue("MethodOptions", options_string); - printer_->Print("descriptor.MethodDescriptor(\n"); + printer_->Print("_descriptor.MethodDescriptor(\n"); printer_->Indent(); printer_->Print( m, @@ -493,7 +522,7 @@ void Generator::PrintServiceDescriptor( void Generator::PrintServiceClass(const ServiceDescriptor& descriptor) const { // Print the service. - printer_->Print("class $class_name$(service.Service):\n", + printer_->Print("class $class_name$(_service.Service):\n", "class_name", descriptor.name()); printer_->Indent(); printer_->Print( @@ -525,7 +554,7 @@ void Generator::PrintDescriptor(const Descriptor& message_descriptor) const { PrintNestedDescriptors(message_descriptor); printer_->Print("\n"); - printer_->Print("$descriptor_name$ = descriptor.Descriptor(\n", + printer_->Print("$descriptor_name$ = _descriptor.Descriptor(\n", "descriptor_name", ModuleLevelDescriptorName(message_descriptor)); printer_->Indent(); @@ -620,10 +649,10 @@ void Generator::PrintMessages() const { // Mutually recursive with PrintNestedMessages(). void Generator::PrintMessage( const Descriptor& message_descriptor) const { - printer_->Print("class $name$(message.Message):\n", "name", + printer_->Print("class $name$(_message.Message):\n", "name", message_descriptor.name()); printer_->Indent(); - printer_->Print("__metaclass__ = reflection.GeneratedProtocolMessageType\n"); + printer_->Print("__metaclass__ = _reflection.GeneratedProtocolMessageType\n"); PrintNestedMessages(message_descriptor); map m; m["descriptor_key"] = kDescriptorKey; @@ -674,6 +703,17 @@ void Generator::FixForeignFieldsInDescriptor( } } +void Generator::AddMessageToFileDescriptor(const Descriptor& descriptor) const { + map m; + m["descriptor_name"] = kDescriptorKey; + m["message_name"] = descriptor.name(); + m["message_descriptor_name"] = ModuleLevelDescriptorName(descriptor); + const char file_descriptor_template[] = + "$descriptor_name$.message_types_by_name['$message_name$'] = " + "$message_descriptor_name$\n"; + printer_->Print(m, file_descriptor_template); +} + // Sets any necessary message_type and enum_type attributes // for the Python version of |field|. // @@ -752,6 +792,9 @@ void Generator::FixForeignFieldsInDescriptors() const { for (int i = 0; i < file_->message_type_count(); ++i) { FixForeignFieldsInDescriptor(*file_->message_type(i), NULL); } + for (int i = 0; i < file_->message_type_count(); ++i) { + AddMessageToFileDescriptor(*file_->message_type(i)); + } printer_->Print("\n"); } @@ -767,6 +810,7 @@ void Generator::FixForeignFieldsInExtensions() const { for (int i = 0; i < file_->message_type_count(); ++i) { FixForeignFieldsInNestedExtensions(*file_->message_type(i)); } + printer_->Print("\n"); } void Generator::FixForeignFieldsInExtension( @@ -817,19 +861,21 @@ void Generator::PrintEnumValueDescriptor( m["options"] = OptionsValue("EnumValueOptions", options_string); printer_->Print( m, - "descriptor.EnumValueDescriptor(\n" + "_descriptor.EnumValueDescriptor(\n" " name='$name$', index=$index$, number=$number$,\n" " options=$options$,\n" " type=None)"); } +// Returns a Python expression that calls descriptor._ParseOptions using +// the given descriptor class name and serialized options protobuf string. string Generator::OptionsValue( const string& class_name, const string& serialized_options) const { if (serialized_options.length() == 0 || GeneratingDescriptorProto()) { return "None"; } else { string full_class_name = "descriptor_pb2." + class_name; - return "descriptor._ParseOptions(" + full_class_name + "(), '" + return "_descriptor._ParseOptions(" + full_class_name + "(), '" + CEscape(serialized_options)+ "')"; } } @@ -855,7 +901,7 @@ void Generator::PrintFieldDescriptor( // these fields in correctly after all referenced descriptors have been // defined and/or imported (see FixForeignFieldsInDescriptors()). const char field_descriptor_decl[] = - "descriptor.FieldDescriptor(\n" + "_descriptor.FieldDescriptor(\n" " name='$name$', full_name='$full_name$', index=$index$,\n" " number=$number$, type=$type$, cpp_type=$cpp_type$, label=$label$,\n" " has_default_value=$has_default_value$, default_value=$default_value$,\n" @@ -986,6 +1032,125 @@ void Generator::PrintSerializedPbInterval( "serialized_end", SimpleItoa(offset + sp.size())); } +namespace { +void PrintDescriptorOptionsFixingCode(const string& descriptor, + const string& options, + io::Printer* printer) { + // TODO(xiaofeng): I have added a method _SetOptions() to DescriptorBase + // in proto2 python runtime but it couldn't be used here because appengine + // uses a snapshot version of the library in which the new method is not + // yet present. After appengine has synced their runtime library, the code + // below should be cleaned up to use _SetOptions(). + printer->Print( + "$descriptor$.has_options = True\n" + "$descriptor$._options = $options$\n", + "descriptor", descriptor, "options", options); +} +} // namespace + +// Prints expressions that set the options field of all descriptors. +void Generator::FixAllDescriptorOptions() const { + // Prints an expression that sets the file descriptor's options. + string file_options = OptionsValue( + "FileOptions", file_->options().SerializeAsString()); + if (file_options != "None") { + PrintDescriptorOptionsFixingCode(kDescriptorKey, file_options, printer_); + } + // Prints expressions that set the options for all top level enums. + for (int i = 0; i < file_->enum_type_count(); ++i) { + const EnumDescriptor& enum_descriptor = *file_->enum_type(i); + FixOptionsForEnum(enum_descriptor); + } + // Prints expressions that set the options for all top level extensions. + for (int i = 0; i < file_->extension_count(); ++i) { + const FieldDescriptor& field = *file_->extension(i); + FixOptionsForField(field); + } + // Prints expressions that set the options for all messages, nested enums, + // nested extensions and message fields. + for (int i = 0; i < file_->message_type_count(); ++i) { + FixOptionsForMessage(*file_->message_type(i)); + } +} + +// Prints expressions that set the options for an enum descriptor and its +// value descriptors. +void Generator::FixOptionsForEnum(const EnumDescriptor& enum_descriptor) const { + string descriptor_name = ModuleLevelDescriptorName(enum_descriptor); + string enum_options = OptionsValue( + "EnumOptions", enum_descriptor.options().SerializeAsString()); + if (enum_options != "None") { + PrintDescriptorOptionsFixingCode(descriptor_name, enum_options, printer_); + } + for (int i = 0; i < enum_descriptor.value_count(); ++i) { + const EnumValueDescriptor& value_descriptor = *enum_descriptor.value(i); + string value_options = OptionsValue( + "EnumValueOptions", value_descriptor.options().SerializeAsString()); + if (value_options != "None") { + PrintDescriptorOptionsFixingCode( + StringPrintf("%s.values_by_name[\"%s\"]", descriptor_name.c_str(), + value_descriptor.name().c_str()), + value_options, printer_); + } + } +} + +// Prints expressions that set the options for field descriptors (including +// extensions). +void Generator::FixOptionsForField( + const FieldDescriptor& field) const { + string field_options = OptionsValue( + "FieldOptions", field.options().SerializeAsString()); + if (field_options != "None") { + string field_name; + if (field.is_extension()) { + if (field.extension_scope() == NULL) { + // Top level extensions. + field_name = field.name(); + } else { + field_name = FieldReferencingExpression( + field.extension_scope(), field, "extensions_by_name"); + } + } else { + field_name = FieldReferencingExpression( + field.containing_type(), field, "fields_by_name"); + } + PrintDescriptorOptionsFixingCode(field_name, field_options, printer_); + } +} + +// Prints expressions that set the options for a message and all its inner +// types (nested messages, nested enums, extensions, fields). +void Generator::FixOptionsForMessage(const Descriptor& descriptor) const { + // Nested messages. + for (int i = 0; i < descriptor.nested_type_count(); ++i) { + FixOptionsForMessage(*descriptor.nested_type(i)); + } + // Enums. + for (int i = 0; i < descriptor.enum_type_count(); ++i) { + FixOptionsForEnum(*descriptor.enum_type(i)); + } + // Fields. + for (int i = 0; i < descriptor.field_count(); ++i) { + const FieldDescriptor& field = *descriptor.field(i); + FixOptionsForField(field); + } + // Extensions. + for (int i = 0; i < descriptor.extension_count(); ++i) { + const FieldDescriptor& field = *descriptor.extension(i); + FixOptionsForField(field); + } + // Message option for this message. + string message_options = OptionsValue( + "MessageOptions", descriptor.options().SerializeAsString()); + if (message_options != "None") { + string descriptor_name = ModuleLevelDescriptorName(descriptor); + PrintDescriptorOptionsFixingCode(descriptor_name, + message_options, + printer_); + } +} + } // namespace python } // namespace compiler } // namespace protobuf diff --git a/cpp/thirdparty/protobuf-2.3.0/src/google/protobuf/compiler/python/python_generator.h b/cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/compiler/python/python_generator.h similarity index 94% rename from cpp/thirdparty/protobuf-2.3.0/src/google/protobuf/compiler/python/python_generator.h rename to cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/compiler/python/python_generator.h index 43c208768..a3f22cee6 100644 --- a/cpp/thirdparty/protobuf-2.3.0/src/google/protobuf/compiler/python/python_generator.h +++ b/cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/compiler/python/python_generator.h @@ -66,7 +66,7 @@ class LIBPROTOC_EXPORT Generator : public CodeGenerator { // CodeGenerator methods. virtual bool Generate(const FileDescriptor* file, const string& parameter, - OutputDirectory* output_directory, + GeneratorContext* generator_context, string* error) const; private: @@ -104,6 +104,7 @@ class LIBPROTOC_EXPORT Generator : public CodeGenerator { void FixForeignFieldsInField(const Descriptor* containing_type, const FieldDescriptor& field, const string& python_dict_name) const; + void AddMessageToFileDescriptor(const Descriptor& descriptor) const; string FieldReferencingExpression(const Descriptor* containing_type, const FieldDescriptor& field, const string& python_dict_name) const; @@ -137,6 +138,11 @@ class LIBPROTOC_EXPORT Generator : public CodeGenerator { void PrintSerializedPbInterval( const DescriptorT& descriptor, DescriptorProtoT& proto) const; + void FixAllDescriptorOptions() const; + void FixOptionsForField(const FieldDescriptor& field) const; + void FixOptionsForEnum(const EnumDescriptor& descriptor) const; + void FixOptionsForMessage(const Descriptor& descriptor) const; + // Very coarse-grained lock to ensure that Generate() is reentrant. // Guards file_, printer_ and file_descriptor_serialized_. mutable Mutex mutex_; diff --git a/cpp/thirdparty/protobuf-2.3.0/src/google/protobuf/compiler/python/python_plugin_unittest.cc b/cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/compiler/python/python_plugin_unittest.cc similarity index 89% rename from cpp/thirdparty/protobuf-2.3.0/src/google/protobuf/compiler/python/python_plugin_unittest.cc rename to cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/compiler/python/python_plugin_unittest.cc index fde88761c..da619ad3e 100644 --- a/cpp/thirdparty/protobuf-2.3.0/src/google/protobuf/compiler/python/python_plugin_unittest.cc +++ b/cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/compiler/python/python_plugin_unittest.cc @@ -56,19 +56,19 @@ class TestGenerator : public CodeGenerator { virtual bool Generate(const FileDescriptor* file, const string& parameter, - OutputDirectory* output_directory, + GeneratorContext* context, string* error) const { - TryInsert("test_pb2.py", "imports", output_directory); - TryInsert("test_pb2.py", "module_scope", output_directory); - TryInsert("test_pb2.py", "class_scope:foo.Bar", output_directory); - TryInsert("test_pb2.py", "class_scope:foo.Bar.Baz", output_directory); + TryInsert("test_pb2.py", "imports", context); + TryInsert("test_pb2.py", "module_scope", context); + TryInsert("test_pb2.py", "class_scope:foo.Bar", context); + TryInsert("test_pb2.py", "class_scope:foo.Bar.Baz", context); return true; } void TryInsert(const string& filename, const string& insertion_point, - OutputDirectory* output_directory) const { + GeneratorContext* context) const { scoped_ptr output( - output_directory->OpenForInsert(filename, insertion_point)); + context->OpenForInsert(filename, insertion_point)); io::Printer printer(output.get(), '$'); printer.Print("// inserted $name$\n", "name", insertion_point); } diff --git a/cpp/thirdparty/protobuf-2.3.0/src/google/protobuf/compiler/subprocess.cc b/cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/compiler/subprocess.cc similarity index 93% rename from cpp/thirdparty/protobuf-2.3.0/src/google/protobuf/compiler/subprocess.cc rename to cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/compiler/subprocess.cc index de46a3e60..67da120d6 100644 --- a/cpp/thirdparty/protobuf-2.3.0/src/google/protobuf/compiler/subprocess.cc +++ b/cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/compiler/subprocess.cc @@ -32,13 +32,16 @@ #include +#include +#include + #ifndef _WIN32 #include +#include #include #include #endif -#include #include #include #include @@ -96,7 +99,7 @@ void Subprocess::Start(const string& program, SearchMode search_mode) { } // Setup STARTUPINFO to redirect handles. - STARTUPINFO startup_info; + STARTUPINFOA startup_info; ZeroMemory(&startup_info, sizeof(startup_info)); startup_info.cb = sizeof(startup_info); startup_info.dwFlags = STARTF_USESTDHANDLES; @@ -115,16 +118,16 @@ void Subprocess::Start(const string& program, SearchMode search_mode) { // Create the process. PROCESS_INFORMATION process_info; - if (CreateProcess((search_mode == SEARCH_PATH) ? NULL : program.c_str(), - (search_mode == SEARCH_PATH) ? name_copy : NULL, - NULL, // process security attributes - NULL, // thread security attributes - TRUE, // inherit handles? - 0, // obscure creation flags - NULL, // environment (inherit from parent) - NULL, // current directory (inherit from parent) - &startup_info, - &process_info)) { + if (CreateProcessA((search_mode == SEARCH_PATH) ? NULL : program.c_str(), + (search_mode == SEARCH_PATH) ? name_copy : NULL, + NULL, // process security attributes + NULL, // thread security attributes + TRUE, // inherit handles? + 0, // obscure creation flags + NULL, // environment (inherit from parent) + NULL, // current directory (inherit from parent) + &startup_info, + &process_info)) { child_handle_ = process_info.hProcess; CloseHandleOrDie(process_info.hThread); child_stdin_ = stdin_pipe_write; @@ -292,8 +295,8 @@ void Subprocess::Start(const string& program, SearchMode search_mode) { int stdin_pipe[2]; int stdout_pipe[2]; - pipe(stdin_pipe); - pipe(stdout_pipe); + GOOGLE_CHECK(pipe(stdin_pipe) != -1); + GOOGLE_CHECK(pipe(stdout_pipe) != -1); char* argv[2] = { strdup(program.c_str()), NULL }; @@ -321,9 +324,11 @@ void Subprocess::Start(const string& program, SearchMode search_mode) { // Write directly to STDERR_FILENO to avoid stdio code paths that may do // stuff that is unsafe here. - write(STDERR_FILENO, argv[0], strlen(argv[0])); + int ignored; + ignored = write(STDERR_FILENO, argv[0], strlen(argv[0])); const char* message = ": program not found or is not executable\n"; - write(STDERR_FILENO, message, strlen(message)); + ignored = write(STDERR_FILENO, message, strlen(message)); + (void) ignored; // Must use _exit() rather than exit() to avoid flushing output buffers // that will also be flushed by the parent. diff --git a/cpp/thirdparty/protobuf-2.3.0/src/google/protobuf/compiler/subprocess.h b/cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/compiler/subprocess.h similarity index 97% rename from cpp/thirdparty/protobuf-2.3.0/src/google/protobuf/compiler/subprocess.h rename to cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/compiler/subprocess.h index f9e8ae8d8..005649640 100644 --- a/cpp/thirdparty/protobuf-2.3.0/src/google/protobuf/compiler/subprocess.h +++ b/cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/compiler/subprocess.h @@ -40,9 +40,10 @@ #include #include #endif // !_WIN32 +#include #include -#include + namespace google { namespace protobuf { @@ -52,7 +53,7 @@ class Message; namespace compiler { // Utility class for launching sub-processes. -class Subprocess { +class LIBPROTOC_EXPORT Subprocess { public: Subprocess(); ~Subprocess(); @@ -76,7 +77,7 @@ class Subprocess { #ifdef _WIN32 // Given an error code, returns a human-readable error message. This is // defined here so that CommandLineInterface can share it. - static string Subprocess::Win32ErrorMessage(DWORD error_code); + static string Win32ErrorMessage(DWORD error_code); #endif private: diff --git a/cpp/thirdparty/protobuf-2.3.0/src/google/protobuf/compiler/test_plugin.cc b/cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/compiler/test_plugin.cc similarity index 100% rename from cpp/thirdparty/protobuf-2.3.0/src/google/protobuf/compiler/test_plugin.cc rename to cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/compiler/test_plugin.cc diff --git a/cpp/thirdparty/protobuf-2.3.0/src/google/protobuf/compiler/zip_output_unittest.sh b/cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/compiler/zip_output_unittest.sh similarity index 68% rename from cpp/thirdparty/protobuf-2.3.0/src/google/protobuf/compiler/zip_output_unittest.sh rename to cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/compiler/zip_output_unittest.sh index 259d5d212..3a024364d 100755 --- a/cpp/thirdparty/protobuf-2.3.0/src/google/protobuf/compiler/zip_output_unittest.sh +++ b/cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/compiler/zip_output_unittest.sh @@ -39,45 +39,51 @@ fail() { exit 1 } +TEST_TMPDIR=. +PROTOC=./protoc + echo ' + syntax = "proto2"; option java_multiple_files = true; option java_package = "test.jar"; option java_outer_classname = "Outer"; message Foo {} message Bar {} -' > testzip.proto +' > $TEST_TMPDIR/testzip.proto -./protoc --cpp_out=testzip.zip --python_out=testzip.zip --java_out=testzip.jar \ - testzip.proto || fail 'protoc failed.' +$PROTOC \ + --cpp_out=$TEST_TMPDIR/testzip.zip --python_out=$TEST_TMPDIR/testzip.zip \ + --java_out=$TEST_TMPDIR/testzip.jar -I$TEST_TMPDIR testzip.proto \ + || fail 'protoc failed.' echo "Testing output to zip..." if unzip -h > /dev/null; then - unzip -t testzip.zip > testzip.list || fail 'unzip failed.' + unzip -t $TEST_TMPDIR/testzip.zip > $TEST_TMPDIR/testzip.list || fail 'unzip failed.' - grep 'testing: testzip\.pb\.cc *OK$' testzip.list > /dev/null \ + grep 'testing: testzip\.pb\.cc *OK$' $TEST_TMPDIR/testzip.list > /dev/null \ || fail 'testzip.pb.cc not found in output zip.' - grep 'testing: testzip\.pb\.h *OK$' testzip.list > /dev/null \ + grep 'testing: testzip\.pb\.h *OK$' $TEST_TMPDIR/testzip.list > /dev/null \ || fail 'testzip.pb.h not found in output zip.' - grep 'testing: testzip_pb2\.py *OK$' testzip.list > /dev/null \ + grep 'testing: testzip_pb2\.py *OK$' $TEST_TMPDIR/testzip.list > /dev/null \ || fail 'testzip_pb2.py not found in output zip.' - grep -i 'manifest' testzip.list > /dev/null \ + grep -i 'manifest' $TEST_TMPDIR/testzip.list > /dev/null \ && fail 'Zip file contained manifest.' else echo "Warning: 'unzip' command not available. Skipping test." fi echo "Testing output to jar..." -if jar c testzip.proto > /dev/null; then - jar tf testzip.jar > testzip.list || fail 'jar failed.' +if jar c $TEST_TMPDIR/testzip.proto > /dev/null; then + jar tf $TEST_TMPDIR/testzip.jar > $TEST_TMPDIR/testzip.list || fail 'jar failed.' - grep '^test/jar/Foo\.java$' testzip.list > /dev/null \ + grep '^test/jar/Foo\.java$' $TEST_TMPDIR/testzip.list > /dev/null \ || fail 'Foo.java not found in output jar.' - grep '^test/jar/Bar\.java$' testzip.list > /dev/null \ + grep '^test/jar/Bar\.java$' $TEST_TMPDIR/testzip.list > /dev/null \ || fail 'Bar.java not found in output jar.' - grep '^test/jar/Outer\.java$' testzip.list > /dev/null \ + grep '^test/jar/Outer\.java$' $TEST_TMPDIR/testzip.list > /dev/null \ || fail 'Outer.java not found in output jar.' - grep '^META-INF/MANIFEST\.MF$' testzip.list > /dev/null \ - || fail 'Manifest not ofund in output jar.' + grep '^META-INF/MANIFEST\.MF$' $TEST_TMPDIR/testzip.list > /dev/null \ + || fail 'Manifest not found in output jar.' else echo "Warning: 'jar' command not available. Skipping test." fi diff --git a/cpp/thirdparty/protobuf-2.3.0/src/google/protobuf/compiler/zip_writer.cc b/cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/compiler/zip_writer.cc similarity index 84% rename from cpp/thirdparty/protobuf-2.3.0/src/google/protobuf/compiler/zip_writer.cc rename to cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/compiler/zip_writer.cc index 53c18771a..65d735270 100644 --- a/cpp/thirdparty/protobuf-2.3.0/src/google/protobuf/compiler/zip_writer.cc +++ b/cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/compiler/zip_writer.cc @@ -28,6 +28,36 @@ // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// Protocol Buffers - Google's data interchange format +// Copyright 2008 Google Inc. All rights reserved. +// http://code.google.com/p/protobuf/ +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + // Author: ambrose@google.com (Ambrose Feinstein), // kenton@google.com (Kenton Varda) // @@ -183,6 +213,6 @@ bool ZipWriter::WriteDirectory() { return output.HadError(); } -} // namespace google -} // namespace protobuf } // namespace compiler +} // namespace protobuf +} // namespace google diff --git a/cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/compiler/zip_writer.h b/cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/compiler/zip_writer.h new file mode 100644 index 000000000..be73972a6 --- /dev/null +++ b/cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/compiler/zip_writer.h @@ -0,0 +1,93 @@ +// Protocol Buffers - Google's data interchange format +// Copyright 2008 Google Inc. All rights reserved. +// http://code.google.com/p/protobuf/ +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +// Protocol Buffers - Google's data interchange format +// Copyright 2008 Google Inc. All rights reserved. +// http://code.google.com/p/protobuf/ +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +// Author: kenton@google.com (Kenton Varda) + +#include +#include +#include + +namespace google { +namespace protobuf { +namespace compiler { + +class ZipWriter { + public: + ZipWriter(io::ZeroCopyOutputStream* raw_output); + ~ZipWriter(); + + bool Write(const string& filename, const string& contents); + bool WriteDirectory(); + + private: + struct FileInfo { + string name; + uint32 offset; + uint32 size; + uint32 crc32; + }; + + io::ZeroCopyOutputStream* raw_output_; + vector files_; +}; + +} // namespace compiler +} // namespace protobuf +} // namespace google diff --git a/cpp/thirdparty/protobuf-2.3.0/src/google/protobuf/descriptor.cc b/cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/descriptor.cc similarity index 85% rename from cpp/thirdparty/protobuf-2.3.0/src/google/protobuf/descriptor.cc rename to cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/descriptor.cc index 81c4ac0f3..c941aacca 100644 --- a/cpp/thirdparty/protobuf-2.3.0/src/google/protobuf/descriptor.cc +++ b/cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/descriptor.cc @@ -42,17 +42,19 @@ #include #include #include +#include #include #include #include #include +#include #include #include #include #include #include #include -#include +#include #undef PACKAGE // autoheader #defines this. :( @@ -106,6 +108,21 @@ const char * const FieldDescriptor::kTypeToName[MAX_TYPE + 1] = { "sint64", // TYPE_SINT64 }; +const char * const FieldDescriptor::kCppTypeToName[MAX_CPPTYPE + 1] = { + "ERROR", // 0 is reserved for errors + + "int32", // CPPTYPE_INT32 + "int64", // CPPTYPE_INT64 + "uint32", // CPPTYPE_UINT32 + "uint64", // CPPTYPE_UINT64 + "double", // CPPTYPE_DOUBLE + "float", // CPPTYPE_FLOAT + "bool", // CPPTYPE_BOOL + "enum", // CPPTYPE_ENUM + "string", // CPPTYPE_STRING + "message", // CPPTYPE_MESSAGE +}; + const char * const FieldDescriptor::kLabelToName[MAX_LABEL + 1] = { "ERROR", // 0 is reserved for errors @@ -219,7 +236,8 @@ struct PointerStringPairHash { struct Symbol { enum Type { - NULL_SYMBOL, MESSAGE, FIELD, ENUM, ENUM_VALUE, SERVICE, METHOD, PACKAGE + NULL_SYMBOL, MESSAGE, FIELD, ENUM, ENUM_VALUE, SERVICE, METHOD, + PACKAGE }; Type type; union { @@ -309,17 +327,42 @@ class DescriptorPool::Tables { Tables(); ~Tables(); - // Checkpoint the state of the tables. Future calls to Rollback() will - // return the Tables to this state. This is used when building files, since - // some kinds of validation errors cannot be detected until the file's - // descriptors have already been added to the tables. BuildFile() calls - // Checkpoint() before it starts building and Rollback() if it encounters - // an error. - void Checkpoint(); + // Record the current state of the tables to the stack of checkpoints. + // Each call to AddCheckpoint() must be paired with exactly one call to either + // ClearLastCheckpoint() or RollbackToLastCheckpoint(). + // + // This is used when building files, since some kinds of validation errors + // cannot be detected until the file's descriptors have already been added to + // the tables. + // + // This supports recursive checkpoints, since building a file may trigger + // recursive building of other files. Note that recursive checkpoints are not + // normally necessary; explicit dependencies are built prior to checkpointing. + // So although we recursively build transitive imports, there is at most one + // checkpoint in the stack during dependency building. + // + // Recursive checkpoints only arise during cross-linking of the descriptors. + // Symbol references must be resolved, via DescriptorBuilder::FindSymbol and + // friends. If the pending file references an unknown symbol + // (e.g., it is not defined in the pending file's explicit dependencies), and + // the pool is using a fallback database, and that database contains a file + // defining that symbol, and that file has not yet been built by the pool, + // the pool builds the file during cross-linking, leading to another + // checkpoint. + void AddCheckpoint(); + + // Mark the last checkpoint as having cleared successfully, removing it from + // the stack. If the stack is empty, all pending symbols will be committed. + // + // Note that this does not guarantee that the symbols added since the last + // checkpoint won't be rolled back: if a checkpoint gets rolled back, + // everything past that point gets rolled back, including symbols added after + // checkpoints that were pushed onto the stack after it and marked as cleared. + void ClearLastCheckpoint(); - // Roll back the Tables to the state of the last Checkpoint(), removing - // everything that was added after that point. - void Rollback(); + // Roll back the Tables to the state of the checkpoint at the top of the + // stack, removing everything that was added after that point. + void RollbackToLastCheckpoint(); // The stack of files which are currently being built. Used to detect // cyclic dependencies when loading files from a DescriptorDatabase. Not @@ -403,10 +446,28 @@ class DescriptorPool::Tables { FilesByNameMap files_by_name_; ExtensionsGroupedByDescriptorMap extensions_; - int strings_before_checkpoint_; - int messages_before_checkpoint_; - int file_tables_before_checkpoint_; - int allocations_before_checkpoint_; + struct CheckPoint { + explicit CheckPoint(const Tables* tables) + : strings_before_checkpoint(tables->strings_.size()), + messages_before_checkpoint(tables->messages_.size()), + file_tables_before_checkpoint(tables->file_tables_.size()), + allocations_before_checkpoint(tables->allocations_.size()), + pending_symbols_before_checkpoint( + tables->symbols_after_checkpoint_.size()), + pending_files_before_checkpoint( + tables->files_after_checkpoint_.size()), + pending_extensions_before_checkpoint( + tables->extensions_after_checkpoint_.size()) { + } + int strings_before_checkpoint; + int messages_before_checkpoint; + int file_tables_before_checkpoint; + int allocations_before_checkpoint; + int pending_symbols_before_checkpoint; + int pending_files_before_checkpoint; + int pending_extensions_before_checkpoint; + }; + vector checkpoints_; vector symbols_after_checkpoint_; vector files_after_checkpoint_; vector extensions_after_checkpoint_; @@ -479,11 +540,15 @@ class FileDescriptorTables { }; DescriptorPool::Tables::Tables() - : strings_before_checkpoint_(0), - messages_before_checkpoint_(0), - allocations_before_checkpoint_(0) {} + // Start some hash_map and hash_set objects with a small # of buckets + : known_bad_files_(3), + extensions_loaded_from_db_(3), + symbols_by_name_(3), + files_by_name_(3) {} + DescriptorPool::Tables::~Tables() { + GOOGLE_DCHECK(checkpoints_.empty()); // Note that the deletion order is important, since the destructors of some // messages may refer to objects in allocations_. STLDeleteElements(&messages_); @@ -494,51 +559,80 @@ DescriptorPool::Tables::~Tables() { STLDeleteElements(&file_tables_); } -FileDescriptorTables::FileDescriptorTables() {} +FileDescriptorTables::FileDescriptorTables() + // Initialize all the hash tables to start out with a small # of buckets + : symbols_by_parent_(3), + fields_by_lowercase_name_(3), + fields_by_camelcase_name_(3), + fields_by_number_(3), + enum_values_by_number_(3) { +} + FileDescriptorTables::~FileDescriptorTables() {} const FileDescriptorTables FileDescriptorTables::kEmpty; -void DescriptorPool::Tables::Checkpoint() { - strings_before_checkpoint_ = strings_.size(); - messages_before_checkpoint_ = messages_.size(); - file_tables_before_checkpoint_ = file_tables_.size(); - allocations_before_checkpoint_ = allocations_.size(); +void DescriptorPool::Tables::AddCheckpoint() { + checkpoints_.push_back(CheckPoint(this)); +} - symbols_after_checkpoint_.clear(); - files_after_checkpoint_.clear(); - extensions_after_checkpoint_.clear(); +void DescriptorPool::Tables::ClearLastCheckpoint() { + GOOGLE_DCHECK(!checkpoints_.empty()); + checkpoints_.pop_back(); + if (checkpoints_.empty()) { + // All checkpoints have been cleared: we can now commit all of the pending + // data. + symbols_after_checkpoint_.clear(); + files_after_checkpoint_.clear(); + extensions_after_checkpoint_.clear(); + } } -void DescriptorPool::Tables::Rollback() { - for (int i = 0; i < symbols_after_checkpoint_.size(); i++) { +void DescriptorPool::Tables::RollbackToLastCheckpoint() { + GOOGLE_DCHECK(!checkpoints_.empty()); + const CheckPoint& checkpoint = checkpoints_.back(); + + for (int i = checkpoint.pending_symbols_before_checkpoint; + i < symbols_after_checkpoint_.size(); + i++) { symbols_by_name_.erase(symbols_after_checkpoint_[i]); } - for (int i = 0; i < files_after_checkpoint_.size(); i++) { + for (int i = checkpoint.pending_files_before_checkpoint; + i < files_after_checkpoint_.size(); + i++) { files_by_name_.erase(files_after_checkpoint_[i]); } - for (int i = 0; i < extensions_after_checkpoint_.size(); i++) { + for (int i = checkpoint.pending_extensions_before_checkpoint; + i < extensions_after_checkpoint_.size(); + i++) { extensions_.erase(extensions_after_checkpoint_[i]); } - symbols_after_checkpoint_.clear(); - files_after_checkpoint_.clear(); - extensions_after_checkpoint_.clear(); + symbols_after_checkpoint_.resize( + checkpoint.pending_symbols_before_checkpoint); + files_after_checkpoint_.resize(checkpoint.pending_files_before_checkpoint); + extensions_after_checkpoint_.resize( + checkpoint.pending_extensions_before_checkpoint); STLDeleteContainerPointers( - strings_.begin() + strings_before_checkpoint_, strings_.end()); + strings_.begin() + checkpoint.strings_before_checkpoint, strings_.end()); STLDeleteContainerPointers( - messages_.begin() + messages_before_checkpoint_, messages_.end()); + messages_.begin() + checkpoint.messages_before_checkpoint, + messages_.end()); STLDeleteContainerPointers( - file_tables_.begin() + file_tables_before_checkpoint_, file_tables_.end()); - for (int i = allocations_before_checkpoint_; i < allocations_.size(); i++) { + file_tables_.begin() + checkpoint.file_tables_before_checkpoint, + file_tables_.end()); + for (int i = checkpoint.allocations_before_checkpoint; + i < allocations_.size(); + i++) { operator delete(allocations_[i]); } - strings_.resize(strings_before_checkpoint_); - messages_.resize(messages_before_checkpoint_); - file_tables_.resize(file_tables_before_checkpoint_); - allocations_.resize(allocations_before_checkpoint_); + strings_.resize(checkpoint.strings_before_checkpoint); + messages_.resize(checkpoint.messages_before_checkpoint); + file_tables_.resize(checkpoint.file_tables_before_checkpoint); + allocations_.resize(checkpoint.allocations_before_checkpoint); + checkpoints_.pop_back(); } // ------------------------------------------------------------------- @@ -809,7 +903,7 @@ void DeleteGeneratedPool() { generated_pool_ = NULL; } -void InitGeneratedPool() { +static void InitGeneratedPool() { generated_database_ = new EncodedDescriptorDatabase; generated_pool_ = new DescriptorPool(generated_database_); @@ -872,11 +966,11 @@ const FileDescriptor* DescriptorPool::FindFileByName(const string& name) const { const FileDescriptor* result = tables_->FindFile(name); if (result != NULL) return result; if (underlay_ != NULL) { - const FileDescriptor* result = underlay_->FindFileByName(name); + result = underlay_->FindFileByName(name); if (result != NULL) return result; } if (TryFindFileInFallbackDatabase(name)) { - const FileDescriptor* result = tables_->FindFile(name); + result = tables_->FindFile(name); if (result != NULL) return result; } return NULL; @@ -888,12 +982,12 @@ const FileDescriptor* DescriptorPool::FindFileContainingSymbol( Symbol result = tables_->FindSymbol(symbol_name); if (!result.IsNull()) return result.GetFile(); if (underlay_ != NULL) { - const FileDescriptor* result = + const FileDescriptor* file_result = underlay_->FindFileContainingSymbol(symbol_name); - if (result != NULL) return result; + if (file_result != NULL) return file_result; } if (TryFindSymbolInFallbackDatabase(symbol_name)) { - Symbol result = tables_->FindSymbol(symbol_name); + result = tables_->FindSymbol(symbol_name); if (!result.IsNull()) return result.GetFile(); } return NULL; @@ -960,12 +1054,11 @@ const FieldDescriptor* DescriptorPool::FindExtensionByNumber( return result; } if (underlay_ != NULL) { - const FieldDescriptor* result = - underlay_->FindExtensionByNumber(extendee, number); + result = underlay_->FindExtensionByNumber(extendee, number); if (result != NULL) return result; } if (TryFindExtensionInFallbackDatabase(extendee, number)) { - const FieldDescriptor* result = tables_->FindExtension(extendee, number); + result = tables_->FindExtension(extendee, number); if (result != NULL) { return result; } @@ -1239,9 +1332,48 @@ bool DescriptorPool::TryFindFileInFallbackDatabase(const string& name) const { return true; } +bool DescriptorPool::IsSubSymbolOfBuiltType(const string& name) const { + string prefix = name; + for (;;) { + string::size_type dot_pos = prefix.find_last_of('.'); + if (dot_pos == string::npos) { + break; + } + prefix = prefix.substr(0, dot_pos); + Symbol symbol = tables_->FindSymbol(prefix); + // If the symbol type is anything other than PACKAGE, then its complete + // definition is already known. + if (!symbol.IsNull() && symbol.type != Symbol::PACKAGE) { + return true; + } + } + if (underlay_ != NULL) { + // Check to see if any prefix of this symbol exists in the underlay. + return underlay_->IsSubSymbolOfBuiltType(name); + } + return false; +} + bool DescriptorPool::TryFindSymbolInFallbackDatabase(const string& name) const { if (fallback_database_ == NULL) return false; + // We skip looking in the fallback database if the name is a sub-symbol of + // any descriptor that already exists in the descriptor pool (except for + // package descriptors). This is valid because all symbols except for + // packages are defined in a single file, so if the symbol exists then we + // should already have its definition. + // + // The other reason to do this is to support "overriding" type definitions + // by merging two databases that define the same type. (Yes, people do + // this.) The main difficulty with making this work is that + // FindFileContainingSymbol() is allowed to return both false positives + // (e.g., SimpleDescriptorDatabase, UpgradedDescriptorDatabase) and false + // negatives (e.g. ProtoFileParser, SourceTreeDescriptorDatabase). When two + // such databases are merged, looking up a non-existent sub-symbol of a type + // that already exists in the descriptor pool can result in an attempt to + // load multiple definitions of the same type. The check below avoids this. + if (IsSubSymbolOfBuiltType(name)) return false; + FileDescriptorProto file_proto; if (!fallback_database_->FindFileContainingSymbol(name, &file_proto)) { return false; @@ -1343,6 +1475,14 @@ void FileDescriptor::CopyTo(FileDescriptorProto* proto) const { proto->add_dependency(dependency(i)->name()); } + for (int i = 0; i < public_dependency_count(); i++) { + proto->add_public_dependency(public_dependencies_[i]); + } + + for (int i = 0; i < weak_dependency_count(); i++) { + proto->add_weak_dependency(weak_dependencies_[i]); + } + for (int i = 0; i < message_type_count(); i++) { message_type(i)->CopyTo(proto->add_message_type()); } @@ -1361,6 +1501,12 @@ void FileDescriptor::CopyTo(FileDescriptorProto* proto) const { } } +void FileDescriptor::CopySourceCodeInfoTo(FileDescriptorProto* proto) const { + if (source_code_info_ != &SourceCodeInfo::default_instance()) { + proto->mutable_source_code_info()->CopyFrom(*source_code_info_); + } +} + void Descriptor::CopyTo(DescriptorProto* proto) const { proto->set_name(name()); @@ -1488,16 +1634,14 @@ void MethodDescriptor::CopyTo(MethodDescriptorProto* proto) const { namespace { // Used by each of the option formatters. -bool RetrieveOptions(const Message &options, vector *option_entries) { +bool RetrieveOptions(int depth, + const Message &options, + vector *option_entries) { option_entries->clear(); const Reflection* reflection = options.GetReflection(); vector fields; reflection->ListFields(options, &fields); for (int i = 0; i < fields.size(); i++) { - // Doesn't make sense to have message type fields here - if (fields[i]->cpp_type() == FieldDescriptor::CPPTYPE_MESSAGE) { - continue; - } int count = 1; bool repeated = false; if (fields[i]->is_repeated()) { @@ -1506,9 +1650,27 @@ bool RetrieveOptions(const Message &options, vector *option_entries) { } for (int j = 0; j < count; j++) { string fieldval; - TextFormat::PrintFieldValueToString(options, fields[i], - repeated ? count : -1, &fieldval); - option_entries->push_back(fields[i]->name() + " = " + fieldval); + if (fields[i]->cpp_type() == FieldDescriptor::CPPTYPE_MESSAGE) { + string tmp; + TextFormat::Printer printer; + printer.SetInitialIndentLevel(depth + 1); + printer.PrintFieldValueToString(options, fields[i], + repeated ? j : -1, &tmp); + fieldval.append("{\n"); + fieldval.append(tmp); + fieldval.append(depth * 2, ' '); + fieldval.append("}"); + } else { + TextFormat::PrintFieldValueToString(options, fields[i], + repeated ? j : -1, &fieldval); + } + string name; + if (fields[i]->is_extension()) { + name = "(." + fields[i]->full_name() + ")"; + } else { + name = fields[i]->name(); + } + option_entries->push_back(name + " = " + fieldval); } } return !option_entries->empty(); @@ -1516,9 +1678,9 @@ bool RetrieveOptions(const Message &options, vector *option_entries) { // Formats options that all appear together in brackets. Does not include // brackets. -bool FormatBracketedOptions(const Message &options, string *output) { +bool FormatBracketedOptions(int depth, const Message &options, string *output) { vector all_options; - if (RetrieveOptions(options, &all_options)) { + if (RetrieveOptions(depth, options, &all_options)) { output->append(JoinStrings(all_options, ", ")); } return !all_options.empty(); @@ -1528,7 +1690,7 @@ bool FormatBracketedOptions(const Message &options, string *output) { bool FormatLineOptions(int depth, const Message &options, string *output) { string prefix(depth * 2, ' '); vector all_options; - if (RetrieveOptions(options, &all_options)) { + if (RetrieveOptions(depth, options, &all_options)) { for (int i = 0; i < all_options.size(); i++) { strings::SubstituteAndAppend(output, "$0option $1;\n", prefix, all_options[i]); @@ -1542,9 +1704,24 @@ bool FormatLineOptions(int depth, const Message &options, string *output) { string FileDescriptor::DebugString() const { string contents = "syntax = \"proto2\";\n\n"; + set public_dependencies; + set weak_dependencies; + public_dependencies.insert(public_dependencies_, + public_dependencies_ + public_dependency_count_); + weak_dependencies.insert(weak_dependencies_, + weak_dependencies_ + weak_dependency_count_); + for (int i = 0; i < dependency_count(); i++) { - strings::SubstituteAndAppend(&contents, "import \"$0\";\n", - dependency(i)->name()); + if (public_dependencies.count(i) > 0) { + strings::SubstituteAndAppend(&contents, "import public \"$0\";\n", + dependency(i)->name()); + } else if (weak_dependencies.count(i) > 0) { + strings::SubstituteAndAppend(&contents, "import weak \"$0\";\n", + dependency(i)->name()); + } else { + strings::SubstituteAndAppend(&contents, "import \"$0\";\n", + dependency(i)->name()); + } } if (!package().empty()) { @@ -1710,7 +1887,7 @@ void FieldDescriptor::DebugString(int depth, string *contents) const { } string formatted_options; - if (FormatBracketedOptions(options(), &formatted_options)) { + if (FormatBracketedOptions(depth, options(), &formatted_options)) { contents->append(bracketed ? ", " : " ["); bracketed = true; contents->append(formatted_options); @@ -1759,7 +1936,7 @@ void EnumValueDescriptor::DebugString(int depth, string *contents) const { prefix, name(), number()); string formatted_options; - if (FormatBracketedOptions(options(), &formatted_options)) { + if (FormatBracketedOptions(depth, options(), &formatted_options)) { strings::SubstituteAndAppend(contents, " [$0]", formatted_options); } contents->append(";\n"); @@ -1805,6 +1982,126 @@ void MethodDescriptor::DebugString(int depth, string *contents) const { contents->append(";\n"); } } + + +// Location methods =============================================== + +static bool PathsEqual(const vector& x, const RepeatedField& y) { + if (x.size() != y.size()) return false; + for (int i = 0; i < x.size(); ++i) { + if (x[i] != y.Get(i)) return false; + } + return true; +} + +bool FileDescriptor::GetSourceLocation(const vector& path, + SourceLocation* out_location) const { + GOOGLE_CHECK_NOTNULL(out_location); + const SourceCodeInfo* info = source_code_info_; + for (int i = 0; info && i < info->location_size(); ++i) { + if (PathsEqual(path, info->location(i).path())) { + const RepeatedField& span = info->location(i).span(); + if (span.size() == 3 || span.size() == 4) { + out_location->start_line = span.Get(0); + out_location->start_column = span.Get(1); + out_location->end_line = span.Get(span.size() == 3 ? 0 : 2); + out_location->end_column = span.Get(span.size() - 1); + + out_location->leading_comments = info->location(i).leading_comments(); + out_location->trailing_comments = info->location(i).trailing_comments(); + return true; + } + } + } + return false; +} + +bool FieldDescriptor::is_packed() const { + return is_packable() && (options_ != NULL) && options_->packed(); +} + +bool Descriptor::GetSourceLocation(SourceLocation* out_location) const { + vector path; + GetLocationPath(&path); + return file()->GetSourceLocation(path, out_location); +} + +bool FieldDescriptor::GetSourceLocation(SourceLocation* out_location) const { + vector path; + GetLocationPath(&path); + return file()->GetSourceLocation(path, out_location); +} + +bool EnumDescriptor::GetSourceLocation(SourceLocation* out_location) const { + vector path; + GetLocationPath(&path); + return file()->GetSourceLocation(path, out_location); +} + +bool MethodDescriptor::GetSourceLocation(SourceLocation* out_location) const { + vector path; + GetLocationPath(&path); + return service()->file()->GetSourceLocation(path, out_location); +} + +bool ServiceDescriptor::GetSourceLocation(SourceLocation* out_location) const { + vector path; + GetLocationPath(&path); + return file()->GetSourceLocation(path, out_location); +} + +bool EnumValueDescriptor::GetSourceLocation( + SourceLocation* out_location) const { + vector path; + GetLocationPath(&path); + return type()->file()->GetSourceLocation(path, out_location); +} + +void Descriptor::GetLocationPath(vector* output) const { + if (containing_type()) { + containing_type()->GetLocationPath(output); + output->push_back(DescriptorProto::kNestedTypeFieldNumber); + output->push_back(index()); + } else { + output->push_back(FileDescriptorProto::kMessageTypeFieldNumber); + output->push_back(index()); + } +} + +void FieldDescriptor::GetLocationPath(vector* output) const { + containing_type()->GetLocationPath(output); + output->push_back(DescriptorProto::kFieldFieldNumber); + output->push_back(index()); +} + +void EnumDescriptor::GetLocationPath(vector* output) const { + if (containing_type()) { + containing_type()->GetLocationPath(output); + output->push_back(DescriptorProto::kEnumTypeFieldNumber); + output->push_back(index()); + } else { + output->push_back(FileDescriptorProto::kEnumTypeFieldNumber); + output->push_back(index()); + } +} + +void EnumValueDescriptor::GetLocationPath(vector* output) const { + type()->GetLocationPath(output); + output->push_back(EnumDescriptorProto::kValueFieldNumber); + output->push_back(index()); +} + +void ServiceDescriptor::GetLocationPath(vector* output) const { + output->push_back(FileDescriptorProto::kServiceFieldNumber); + output->push_back(index()); +} + +void MethodDescriptor::GetLocationPath(vector* output) const { + service()->GetLocationPath(output); + output->push_back(ServiceDescriptorProto::kMethodFieldNumber); + output->push_back(index()); +} + // =================================================================== namespace { @@ -1857,6 +2154,7 @@ class DescriptorBuilder { string filename_; FileDescriptor* file_; FileDescriptorTables* file_tables_; + set dependencies_; // If LookupSymbol() finds a symbol that is in a file which is not a declared // dependency of this file, it will fail, but will set @@ -1886,6 +2184,10 @@ class DescriptorBuilder { // nested package within package_name. bool IsInPackage(const FileDescriptor* file, const string& package_name); + // Helper function which finds all public dependencies of the given file, and + // stores the them in the dependencies_ set in the builder. + void RecordPublicDependencies(const FileDescriptor* file); + // Like tables_->FindSymbol(), but additionally: // - Search the pool's underlay if not found in tables_. // - Insure that the resulting Symbol is from one of the file's declared @@ -1896,6 +2198,10 @@ class DescriptorBuilder { // file's declared dependencies. Symbol FindSymbolNotEnforcingDeps(const string& name); + // This implements the body of FindSymbolNotEnforcingDeps(). + Symbol FindSymbolNotEnforcingDepsHelper(const DescriptorPool* pool, + const string& name); + // Like FindSymbol(), but looks up the name relative to some other symbol // name. This first searches siblings of relative_to, then siblings of its // parents, etc. For example, LookupSymbol("foo.bar", "baz.qux.corge") makes @@ -2056,6 +2362,8 @@ class DescriptorBuilder { // Otherwise returns true. bool InterpretOptions(OptionsToInterpret* options_to_interpret); + class AggregateOptionFinder; + private: // Interprets uninterpreted_option_ on the specified message, which // must be the mutable copy of the original options message to which @@ -2082,6 +2390,11 @@ class DescriptorBuilder { bool SetOptionValue(const FieldDescriptor* option_field, UnknownFieldSet* unknown_fields); + // Parses an aggregate value for a CPPTYPE_MESSAGE option and + // saves it into *unknown_fields. + bool SetAggregateOption(const FieldDescriptor* option_field, + UnknownFieldSet* unknown_fields); + // Convenience functions to set an int field the right way, depending on // its wire type (a single int CppType can represent multiple wire types). void SetInt32(int number, int32 value, FieldDescriptor::Type type, @@ -2128,6 +2441,10 @@ class DescriptorBuilder { // can use it to find locations recorded by the parser. const UninterpretedOption* uninterpreted_option_; + // Factory used to create the dynamic messages we need to parse + // any aggregate option values we encounter. + DynamicMessageFactory dynamic_factory_; + GOOGLE_DISALLOW_EVIL_CONSTRUCTORS(OptionInterpreter); }; @@ -2139,12 +2456,19 @@ class DescriptorBuilder { // redundantly declare OptionInterpreter a friend just to make things extra // clear for these bad compilers. friend class OptionInterpreter; + friend class OptionInterpreter::AggregateOptionFinder; + static inline bool get_allow_unknown(const DescriptorPool* pool) { return pool->allow_unknown_; } static inline bool get_is_placeholder(const Descriptor* descriptor) { return descriptor->is_placeholder_; } + static inline void assert_mutex_held(const DescriptorPool* pool) { + if (pool->mutex_ != NULL) { + pool->mutex_->AssertHeld(); + } + } // Must be run only after options have been interpreted. // @@ -2169,6 +2493,7 @@ class DescriptorBuilder { void ValidateMapKey(FieldDescriptor* field, const FieldDescriptorProto& proto); + }; const FileDescriptor* DescriptorPool::BuildFile( @@ -2255,31 +2580,48 @@ bool DescriptorBuilder::IsInPackage(const FileDescriptor* file, file->package()[package_name.size()] == '.'); } -Symbol DescriptorBuilder::FindSymbolNotEnforcingDeps(const string& name) { - Symbol result; +void DescriptorBuilder::RecordPublicDependencies(const FileDescriptor* file) { + if (file == NULL || !dependencies_.insert(file).second) return; + for (int i = 0; file != NULL && i < file->public_dependency_count(); i++) { + RecordPublicDependencies(file->public_dependency(i)); + } +} - // We need to search our pool and all its underlays. - const DescriptorPool* pool = pool_; - while (true) { - // If we are looking at an underlay, we must lock its mutex_, since we are - // accessing the underlay's tables_ dircetly. - MutexLockMaybe lock((pool == pool_) ? NULL : pool->mutex_); +Symbol DescriptorBuilder::FindSymbolNotEnforcingDepsHelper( + const DescriptorPool* pool, const string& name) { + // If we are looking at an underlay, we must lock its mutex_, since we are + // accessing the underlay's tables_ directly. + MutexLockMaybe lock((pool == pool_) ? NULL : pool->mutex_); - // Note that we don't have to check fallback_database_ here because the - // symbol has to be in one of its file's direct dependencies, and we have - // already loaded those by the time we get here. - result = pool->tables_->FindSymbol(name); - if (!result.IsNull()) break; - if (pool->underlay_ == NULL) return kNullSymbol; - pool = pool->underlay_; + Symbol result = pool->tables_->FindSymbol(name); + if (result.IsNull() && pool->underlay_ != NULL) { + // Symbol not found; check the underlay. + result = FindSymbolNotEnforcingDepsHelper(pool->underlay_, name); + } + + if (result.IsNull()) { + // In theory, we shouldn't need to check fallback_database_ because the + // symbol should be in one of its file's direct dependencies, and we have + // already loaded those by the time we get here. But we check anyway so + // that we can generate better error message when dependencies are missing + // (i.e., "missing dependency" rather than "type is not defined"). + if (pool->TryFindSymbolInFallbackDatabase(name)) { + result = pool->tables_->FindSymbol(name); + } } return result; } +Symbol DescriptorBuilder::FindSymbolNotEnforcingDeps(const string& name) { + return FindSymbolNotEnforcingDepsHelper(pool_, name); +} + Symbol DescriptorBuilder::FindSymbol(const string& name) { Symbol result = FindSymbolNotEnforcingDeps(name); + if (result.IsNull()) return result; + if (!pool_->enforce_dependencies_) { // Hack for CompilerUpgrader. return result; @@ -2288,10 +2630,7 @@ Symbol DescriptorBuilder::FindSymbol(const string& name) { // Only find symbols which were defined in this file or one of its // dependencies. const FileDescriptor* file = result.GetFile(); - if (file == file_) return result; - for (int i = 0; i < file_->dependency_count(); i++) { - if (file == file_->dependency(i)) return result; - } + if (file == file_ || dependencies_.count(file) > 0) return result; if (result.type == Symbol::PACKAGE) { // Arg, this is overcomplicated. The symbol is a package name. It could @@ -2302,12 +2641,10 @@ Symbol DescriptorBuilder::FindSymbol(const string& name) { // dependency also defines the same package. We can't really rule out this // symbol unless none of the dependencies define it. if (IsInPackage(file_, name)) return result; - for (int i = 0; i < file_->dependency_count(); i++) { + for (set::const_iterator it = dependencies_.begin(); + it != dependencies_.end(); ++it) { // Note: A dependency may be NULL if it was not found or had errors. - if (file_->dependency(i) != NULL && - IsInPackage(file_->dependency(i), name)) { - return result; - } + if (*it != NULL && IsInPackage(*it, name)) return result; } } @@ -2336,7 +2673,7 @@ Symbol DescriptorBuilder::LookupSymbolNoPlaceholder( // } // So, we look for just "Foo" first, then look for "Bar.baz" within it if // found. - int name_dot_pos = name.find_first_of('.'); + string::size_type name_dot_pos = name.find_first_of('.'); string first_part_of_name; if (name_dot_pos == string::npos) { first_part_of_name = name; @@ -2428,6 +2765,8 @@ Symbol DescriptorBuilder::NewPlaceholder(const string& name, FileDescriptor* placeholder_file = tables_->Allocate(); memset(placeholder_file, 0, sizeof(*placeholder_file)); + placeholder_file->source_code_info_ = &SourceCodeInfo::default_instance(); + placeholder_file->name_ = tables_->AllocateString(*placeholder_full_name + ".placeholder.proto"); placeholder_file->package_ = placeholder_package; @@ -2648,7 +2987,11 @@ template void DescriptorBuilder::AllocateOptionsImpl( // tables_->AllocateMessage(); typename DescriptorT::OptionsType* const dummy = NULL; typename DescriptorT::OptionsType* options = tables_->AllocateMessage(dummy); - options->CopyFrom(orig_options); + // Avoid using MergeFrom()/CopyFrom() in this class to make it -fno-rtti + // friendly. Without RTTI, MergeFrom() and CopyFrom() will fallback to the + // reflection based method, which requires the Descriptor. However, we are in + // the middle of building the descriptors, thus the deadlock. + options->ParseFromString(orig_options.SerializeAsString()); descriptor->options_ = options; // Don't add to options_to_interpret_ unless there were uninterpreted @@ -2737,11 +3080,19 @@ const FileDescriptor* DescriptorBuilder::BuildFile( } // Checkpoint the tables so that we can roll back if something goes wrong. - tables_->Checkpoint(); + tables_->AddCheckpoint(); FileDescriptor* result = tables_->Allocate(); file_ = result; + if (proto.has_source_code_info()) { + SourceCodeInfo *info = tables_->AllocateMessage(); + info->CopyFrom(proto.source_code_info()); + result->source_code_info_ = info; + } else { + result->source_code_info_ = &SourceCodeInfo::default_instance(); + } + file_tables_ = tables_->AllocateFileTables(); file_->tables_ = file_tables_; @@ -2768,7 +3119,7 @@ const FileDescriptor* DescriptorBuilder::BuildFile( "A file with this name is already in the pool."); // Bail out early so that if this is actually the exact same file, we // don't end up reporting that every single symbol is already defined. - tables_->Rollback(); + tables_->RollbackToLastCheckpoint(); return NULL; } if (!result->package().empty()) { @@ -2813,6 +3164,45 @@ const FileDescriptor* DescriptorBuilder::BuildFile( result->dependencies_[i] = dependency; } + // Check public dependencies. + int public_dependency_count = 0; + result->public_dependencies_ = tables_->AllocateArray( + proto.public_dependency_size()); + for (int i = 0; i < proto.public_dependency_size(); i++) { + // Only put valid public dependency indexes. + int index = proto.public_dependency(i); + if (index >= 0 && index < proto.dependency_size()) { + result->public_dependencies_[public_dependency_count++] = index; + } else { + AddError(proto.name(), proto, + DescriptorPool::ErrorCollector::OTHER, + "Invalid public dependency index."); + } + } + result->public_dependency_count_ = public_dependency_count; + + // Build dependency set + dependencies_.clear(); + for (int i = 0; i < result->dependency_count(); i++) { + RecordPublicDependencies(result->dependency(i)); + } + + // Check weak dependencies. + int weak_dependency_count = 0; + result->weak_dependencies_ = tables_->AllocateArray( + proto.weak_dependency_size()); + for (int i = 0; i < proto.weak_dependency_size(); i++) { + int index = proto.weak_dependency(i); + if (index >= 0 && index < proto.dependency_size()) { + result->weak_dependencies_[weak_dependency_count++] = index; + } else { + AddError(proto.name(), proto, + DescriptorPool::ErrorCollector::OTHER, + "Invalid weak dependency index."); + } + } + result->weak_dependency_count_ = weak_dependency_count; + // Convert children. BUILD_ARRAY(proto, result, message_type, BuildMessage , NULL); BUILD_ARRAY(proto, result, enum_type , BuildEnum , NULL); @@ -2850,10 +3240,10 @@ const FileDescriptor* DescriptorBuilder::BuildFile( } if (had_errors_) { - tables_->Rollback(); + tables_->RollbackToLastCheckpoint(); return NULL; } else { - tables_->Checkpoint(); + tables_->ClearLastCheckpoint(); return result; } } @@ -3045,7 +3435,7 @@ void DescriptorBuilder::BuildFieldOrExtension(const FieldDescriptorProto& proto, UnescapeCEscapeString(proto.default_value())); } else { result->default_value_string_ = - tables_->AllocateString(proto.default_value()); + tables_->AllocateString(proto.default_value()); } break; case FieldDescriptor::CPPTYPE_MESSAGE: @@ -3106,7 +3496,15 @@ void DescriptorBuilder::BuildFieldOrExtension(const FieldDescriptorProto& proto, if (result->number() <= 0) { AddError(result->full_name(), proto, DescriptorPool::ErrorCollector::NUMBER, "Field numbers must be positive integers."); - } else if (result->number() > FieldDescriptor::kMaxNumber) { + } else if (!is_extension && result->number() > FieldDescriptor::kMaxNumber) { + // Only validate that the number is within the valid field range if it is + // not an extension. Since extension numbers are validated with the + // extendee's valid set of extension numbers, and those are in turn + // validated against the max allowed number, the check is unnecessary for + // extension fields. + // This avoids cross-linking issues that arise when attempting to check if + // the extendee is a message_set_wire_format message, which has a higher max + // on extension numbers. AddError(result->full_name(), proto, DescriptorPool::ErrorCollector::NUMBER, strings::Substitute("Field numbers cannot be greater than $0.", FieldDescriptor::kMaxNumber)); @@ -3161,12 +3559,10 @@ void DescriptorBuilder::BuildExtensionRange( "Extension numbers must be positive integers."); } - if (result->end > FieldDescriptor::kMaxNumber + 1) { - AddError(parent->full_name(), proto, - DescriptorPool::ErrorCollector::NUMBER, - strings::Substitute("Extension numbers cannot be greater than $0.", - FieldDescriptor::kMaxNumber)); - } + // Checking of the upper bound of the extension range is deferred until after + // options interpreting. This allows messages with message_set_wire_format to + // have extensions beyond FieldDescriptor::kMaxNumber, since the extension + // numbers are actually used as int32s in the message_set_wire_format. if (result->start >= result->end) { AddError(parent->full_name(), proto, @@ -3661,6 +4057,20 @@ void DescriptorBuilder::ValidateMessageOptions(Descriptor* message, VALIDATE_OPTIONS_FROM_ARRAY(message, nested_type, Message); VALIDATE_OPTIONS_FROM_ARRAY(message, enum_type, Enum); VALIDATE_OPTIONS_FROM_ARRAY(message, extension, Field); + + const int64 max_extension_range = + static_cast(message->options().message_set_wire_format() ? + kint32max : + FieldDescriptor::kMaxNumber); + for (int i = 0; i < message->extension_range_count(); ++i) { + if (message->extension_range(i)->end > max_extension_range + 1) { + AddError( + message->full_name(), proto.extension_range(i), + DescriptorPool::ErrorCollector::NUMBER, + strings::Substitute("Extension numbers cannot be greater than $0.", + max_extension_range)); + } + } } void DescriptorBuilder::ValidateFieldOptions(FieldDescriptor* field, @@ -3669,6 +4079,15 @@ void DescriptorBuilder::ValidateFieldOptions(FieldDescriptor* field, ValidateMapKey(field, proto); } + // Only message type fields may be lazy. + if (field->options().lazy()) { + if (field->type() != FieldDescriptor::TYPE_MESSAGE) { + AddError(field->full_name(), proto, + DescriptorPool::ErrorCollector::TYPE, + "[lazy = true] can only be specified for submessage fields."); + } + } + // Only repeated primitive fields may be packed. if (field->options().packed() && !field->is_packable()) { AddError( @@ -3707,11 +4126,37 @@ void DescriptorBuilder::ValidateFieldOptions(FieldDescriptor* field, "files. Note that you cannot extend a non-lite type to contain " "a lite type, but the reverse is allowed."); } + } void DescriptorBuilder::ValidateEnumOptions(EnumDescriptor* enm, const EnumDescriptorProto& proto) { VALIDATE_OPTIONS_FROM_ARRAY(enm, value, EnumValue); + if (!enm->options().has_allow_alias() || !enm->options().allow_alias()) { + map used_values; + for (int i = 0; i < enm->value_count(); ++i) { + const EnumValueDescriptor* enum_value = enm->value(i); + if (used_values.find(enum_value->number()) != used_values.end()) { + string error = + "\"" + enum_value->full_name() + + "\" uses the same enum value as \"" + + used_values[enum_value->number()] + "\". If this is intended, set " + "'option allow_alias = true;' to the enum definition."; + if (!enm->options().allow_alias()) { + // Generate error if duplicated enum values are explicitly disallowed. + AddError(enm->full_name(), proto, + DescriptorPool::ErrorCollector::NUMBER, + error); + } else { + // Generate warning if duplicated values are found but the option + // isn't set. + GOOGLE_LOG(ERROR) << error; + } + } else { + used_values[enum_value->number()] = enum_value->full_name(); + } + } + } } void DescriptorBuilder::ValidateEnumValueOptions( @@ -3720,10 +4165,14 @@ void DescriptorBuilder::ValidateEnumValueOptions( } void DescriptorBuilder::ValidateServiceOptions(ServiceDescriptor* service, const ServiceDescriptorProto& proto) { - if (IsLite(service->file())) { + if (IsLite(service->file()) && + (service->file()->options().cc_generic_services() || + service->file()->options().java_generic_services())) { AddError(service->full_name(), proto, DescriptorPool::ErrorCollector::NAME, - "Files with optimize_for = LITE_RUNTIME cannot define services."); + "Files with optimize_for = LITE_RUNTIME cannot define services " + "unless you set both options cc_generic_services and " + "java_generic_sevices to false."); } VALIDATE_OPTIONS_FROM_ARRAY(service, method, Method); @@ -3787,6 +4236,7 @@ void DescriptorBuilder::ValidateMapKey(FieldDescriptor* field, field->experimental_map_key_ = key_field; } + #undef VALIDATE_OPTIONS_FROM_ARRAY // ------------------------------------------------------------------- @@ -3877,9 +4327,11 @@ bool DescriptorBuilder::OptionInterpreter::InterpretSingleOption( // file we're currently building. The descriptor should be there as long as // the file we're building imported "google/protobuf/descriptors.proto". - // Note that we use DescriptorBuilder::FindSymbol(), not + // Note that we use DescriptorBuilder::FindSymbolNotEnforcingDeps(), not // DescriptorPool::FindMessageTypeByName() because we're already holding the - // pool's mutex, and the latter method locks it again. + // pool's mutex, and the latter method locks it again. We don't use + // FindSymbol() because files that use custom options only need to depend on + // the file that defines the option, not descriptor.proto itself. Symbol symbol = builder_->FindSymbolNotEnforcingDeps( options->GetDescriptor()->full_name()); if (!symbol.IsNull() && symbol.type == Symbol::MESSAGE) { @@ -3915,8 +4367,8 @@ bool DescriptorBuilder::OptionInterpreter::InterpretSingleOption( // DescriptorPool::FindExtensionByName(), for two reasons: 1) It allows // relative lookups, and 2) because we're already holding the pool's // mutex, and the latter method locks it again. - Symbol symbol = builder_->LookupSymbol(name_part, - options_to_interpret_->name_scope); + symbol = builder_->LookupSymbol(name_part, + options_to_interpret_->name_scope); if (!symbol.IsNull() && symbol.type == Symbol::FIELD) { field = symbol.field_descriptor; } @@ -3969,9 +4421,6 @@ bool DescriptorBuilder::OptionInterpreter::InterpretSingleOption( intermediate_fields.push_back(field); descriptor = field->message_type(); } - } else if (field->cpp_type() == FieldDescriptor::CPPTYPE_MESSAGE) { - return AddNameError("Option field \"" + debug_msg_name + - "\" cannot be of message type."); } } @@ -4306,18 +4755,117 @@ bool DescriptorBuilder::OptionInterpreter::SetOptionValue( break; case FieldDescriptor::CPPTYPE_MESSAGE: - // We don't currently support defining a message-typed option, so we - // should never actually get here. - return AddValueError("Option \"" + option_field->full_name() + - "\" is a message. To set fields within it, use " - "syntax like \"" + option_field->name() + - ".foo = value\"."); + if (!SetAggregateOption(option_field, unknown_fields)) { + return false; + } break; } return true; } +class DescriptorBuilder::OptionInterpreter::AggregateOptionFinder + : public TextFormat::Finder { + public: + DescriptorBuilder* builder_; + + virtual const FieldDescriptor* FindExtension( + Message* message, const string& name) const { + assert_mutex_held(builder_->pool_); + const Descriptor* descriptor = message->GetDescriptor(); + Symbol result = builder_->LookupSymbolNoPlaceholder( + name, descriptor->full_name()); + if (result.type == Symbol::FIELD && + result.field_descriptor->is_extension()) { + return result.field_descriptor; + } else if (result.type == Symbol::MESSAGE && + descriptor->options().message_set_wire_format()) { + const Descriptor* foreign_type = result.descriptor; + // The text format allows MessageSet items to be specified using + // the type name, rather than the extension identifier. If the symbol + // lookup returned a Message, and the enclosing Message has + // message_set_wire_format = true, then return the message set + // extension, if one exists. + for (int i = 0; i < foreign_type->extension_count(); i++) { + const FieldDescriptor* extension = foreign_type->extension(i); + if (extension->containing_type() == descriptor && + extension->type() == FieldDescriptor::TYPE_MESSAGE && + extension->is_optional() && + extension->message_type() == foreign_type) { + // Found it. + return extension; + } + } + } + return NULL; + } +}; + +// A custom error collector to record any text-format parsing errors +namespace { +class AggregateErrorCollector : public io::ErrorCollector { + public: + string error_; + + virtual void AddError(int line, int column, const string& message) { + if (!error_.empty()) { + error_ += "; "; + } + error_ += message; + } + + virtual void AddWarning(int line, int column, const string& message) { + // Ignore warnings + } +}; +} + +// We construct a dynamic message of the type corresponding to +// option_field, parse the supplied text-format string into this +// message, and serialize the resulting message to produce the value. +bool DescriptorBuilder::OptionInterpreter::SetAggregateOption( + const FieldDescriptor* option_field, + UnknownFieldSet* unknown_fields) { + if (!uninterpreted_option_->has_aggregate_value()) { + return AddValueError("Option \"" + option_field->full_name() + + "\" is a message. To set the entire message, use " + "syntax like \"" + option_field->name() + + " = { }\". " + "To set fields within it, use " + "syntax like \"" + option_field->name() + + ".foo = value\"."); + } + + const Descriptor* type = option_field->message_type(); + scoped_ptr dynamic(dynamic_factory_.GetPrototype(type)->New()); + GOOGLE_CHECK(dynamic.get() != NULL) + << "Could not create an instance of " << option_field->DebugString(); + + AggregateErrorCollector collector; + AggregateOptionFinder finder; + finder.builder_ = builder_; + TextFormat::Parser parser; + parser.RecordErrorsTo(&collector); + parser.SetFinder(&finder); + if (!parser.ParseFromString(uninterpreted_option_->aggregate_value(), + dynamic.get())) { + AddValueError("Error while parsing option value for \"" + + option_field->name() + "\": " + collector.error_); + return false; + } else { + string serial; + dynamic->SerializeToString(&serial); // Never fails + if (option_field->type() == FieldDescriptor::TYPE_MESSAGE) { + unknown_fields->AddLengthDelimited(option_field->number(), serial); + } else { + GOOGLE_CHECK_EQ(option_field->type(), FieldDescriptor::TYPE_GROUP); + UnknownFieldSet* group = unknown_fields->AddGroup(option_field->number()); + group->ParseFromString(serial); + } + return true; + } +} + void DescriptorBuilder::OptionInterpreter::SetInt32(int number, int32 value, FieldDescriptor::Type type, UnknownFieldSet* unknown_fields) { switch (type) { diff --git a/cpp/thirdparty/protobuf-2.3.0/src/google/protobuf/descriptor.h b/cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/descriptor.h similarity index 89% rename from cpp/thirdparty/protobuf-2.3.0/src/google/protobuf/descriptor.h rename to cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/descriptor.h index 7f87dd809..33e3af724 100644 --- a/cpp/thirdparty/protobuf-2.3.0/src/google/protobuf/descriptor.h +++ b/cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/descriptor.h @@ -58,6 +58,10 @@ #include #include +// TYPE_BOOL is defined in the MacOS's ConditionalMacros.h. +#ifdef TYPE_BOOL +#undef TYPE_BOOL +#endif // TYPE_BOOL namespace google { namespace protobuf { @@ -89,6 +93,7 @@ class ServiceOptions; class MethodOptions; class FileOptions; class UninterpretedOption; +class SourceCodeInfo; // Defined in message.h class Message; @@ -100,6 +105,20 @@ class FileDescriptorTables; // Defined in unknown_field_set.h. class UnknownField; +// NB, all indices are zero-based. +struct SourceLocation { + int start_line; + int end_line; + int start_column; + int end_column; + + // Doc comments found at the source location. + // TODO(kenton): Maybe this struct should have been named SourceInfo or + // something instead. Oh well. + string leading_comments; + string trailing_comments; +}; + // Describes a type of protocol message, or a particular group within a // message. To obtain the Descriptor for a given message object, call // Message::GetDescriptor(). Generated message classes also have a @@ -236,6 +255,13 @@ class LIBPROTOBUF_EXPORT Descriptor { // this message type's scope. const FieldDescriptor* FindExtensionByCamelcaseName(const string& name) const; + // Source Location --------------------------------------------------- + + // Updates |*out_location| to the source location of the complete + // extent of this message declaration. Returns false and leaves + // |*out_location| unchanged iff location information was not available. + bool GetSourceLocation(SourceLocation* out_location) const; + private: typedef MessageOptions OptionsType; @@ -243,6 +269,10 @@ class LIBPROTOBUF_EXPORT Descriptor { // correct depth void DebugString(int depth, string *contents) const; + // Walks up the descriptor tree to generate the source location path + // to this descriptor from the file root. + void GetLocationPath(vector* output) const; + const string* name_; const string* full_name_; const FileDescriptor* file_; @@ -388,15 +418,19 @@ class LIBPROTOBUF_EXPORT FieldDescriptor { // when parsing formats which prefer to use camel-case naming style. const string& camelcase_name() const; - Type type() const; // Declared type of this field. - CppType cpp_type() const; // C++ type of this field. - Label label() const; // optional/required/repeated + Type type() const; // Declared type of this field. + const char* type_name() const; // Name of the declared type. + CppType cpp_type() const; // C++ type of this field. + const char* cpp_type_name() const; // Name of the C++ type. + Label label() const; // optional/required/repeated bool is_required() const; // shorthand for label() == LABEL_REQUIRED bool is_optional() const; // shorthand for label() == LABEL_OPTIONAL bool is_repeated() const; // shorthand for label() == LABEL_REPEATED bool is_packable() const; // shorthand for is_repeated() && // IsTypePackable(type()) + bool is_packed() const; // shorthand for is_packable() && + // options().packed() // Index of this field within the message's field array, or the file or // extension scope's extensions array. @@ -479,6 +513,13 @@ class LIBPROTOBUF_EXPORT FieldDescriptor { // Return true iff [packed = true] is valid for fields of this type. static inline bool IsTypePackable(Type field_type); + // Source Location --------------------------------------------------- + + // Updates |*out_location| to the source location of the complete + // extent of this field declaration. Returns false and leaves + // |*out_location| unchanged iff location information was not available. + bool GetSourceLocation(SourceLocation* out_location) const; + private: typedef FieldOptions OptionsType; @@ -490,6 +531,10 @@ class LIBPROTOBUF_EXPORT FieldDescriptor { // types of CPPTYPE_STRING whill be surrounded by quotes and CEscaped. string DefaultValueAsString(bool quote_string_type) const; + // Walks up the descriptor tree to generate the source location path + // to this descriptor from the file root. + void GetLocationPath(vector* output) const; + const string* name_; const string* full_name_; const string* lowercase_name_; @@ -527,6 +572,8 @@ class LIBPROTOBUF_EXPORT FieldDescriptor { static const char * const kTypeToName[MAX_TYPE + 1]; + static const char * const kCppTypeToName[MAX_CPPTYPE + 1]; + static const char * const kLabelToName[MAX_LABEL + 1]; // Must be constructed using DescriptorPool. @@ -583,12 +630,23 @@ class LIBPROTOBUF_EXPORT EnumDescriptor { // See Descriptor::DebugString(). string DebugString() const; + // Source Location --------------------------------------------------- + + // Updates |*out_location| to the source location of the complete + // extent of this enum declaration. Returns false and leaves + // |*out_location| unchanged iff location information was not available. + bool GetSourceLocation(SourceLocation* out_location) const; + private: typedef EnumOptions OptionsType; // See Descriptor::DebugString(). void DebugString(int depth, string *contents) const; + // Walks up the descriptor tree to generate the source location path + // to this descriptor from the file root. + void GetLocationPath(vector* output) const; + const string* name_; const string* full_name_; const FileDescriptor* file_; @@ -650,12 +708,23 @@ class LIBPROTOBUF_EXPORT EnumValueDescriptor { // See Descriptor::DebugString(). string DebugString() const; + // Source Location --------------------------------------------------- + + // Updates |*out_location| to the source location of the complete + // extent of this enum value declaration. Returns false and leaves + // |*out_location| unchanged iff location information was not available. + bool GetSourceLocation(SourceLocation* out_location) const; + private: typedef EnumValueOptions OptionsType; // See Descriptor::DebugString(). void DebugString(int depth, string *contents) const; + // Walks up the descriptor tree to generate the source location path + // to this descriptor from the file root. + void GetLocationPath(vector* output) const; + const string* name_; const string* full_name_; int number_; @@ -703,19 +772,29 @@ class LIBPROTOBUF_EXPORT ServiceDescriptor { // Look up a MethodDescriptor by name. const MethodDescriptor* FindMethodByName(const string& name) const; - // See Descriptor::CopyTo(). void CopyTo(ServiceDescriptorProto* proto) const; // See Descriptor::DebugString(). string DebugString() const; + // Source Location --------------------------------------------------- + + // Updates |*out_location| to the source location of the complete + // extent of this service declaration. Returns false and leaves + // |*out_location| unchanged iff location information was not available. + bool GetSourceLocation(SourceLocation* out_location) const; + private: typedef ServiceOptions OptionsType; // See Descriptor::DebugString(). void DebugString(string *contents) const; + // Walks up the descriptor tree to generate the source location path + // to this descriptor from the file root. + void GetLocationPath(vector* output) const; + const string* name_; const string* full_name_; const FileDescriptor* file_; @@ -768,12 +847,23 @@ class LIBPROTOBUF_EXPORT MethodDescriptor { // See Descriptor::DebugString(). string DebugString() const; + // Source Location --------------------------------------------------- + + // Updates |*out_location| to the source location of the complete + // extent of this method declaration. Returns false and leaves + // |*out_location| unchanged iff location information was not available. + bool GetSourceLocation(SourceLocation* out_location) const; + private: typedef MethodOptions OptionsType; // See Descriptor::DebugString(). void DebugString(int depth, string *contents) const; + // Walks up the descriptor tree to generate the source location path + // to this descriptor from the file root. + void GetLocationPath(vector* output) const; + const string* name_; const string* full_name_; const ServiceDescriptor* service_; @@ -791,6 +881,7 @@ class LIBPROTOBUF_EXPORT MethodDescriptor { GOOGLE_DISALLOW_EVIL_CONSTRUCTORS(MethodDescriptor); }; + // Describes a whole .proto file. To get the FileDescriptor for a compiled-in // file, get the descriptor for something defined in that file and call // descriptor->file(). Use DescriptorPool to construct your own descriptors. @@ -813,6 +904,22 @@ class LIBPROTOBUF_EXPORT FileDescriptor { // These are returned in the order they were defined in the .proto file. const FileDescriptor* dependency(int index) const; + // The number of files public imported by this one. + // The public dependency list is a subset of the dependency list. + int public_dependency_count() const; + // Gets a public imported file by index, where 0 <= index < + // public_dependency_count(). + // These are returned in the order they were defined in the .proto file. + const FileDescriptor* public_dependency(int index) const; + + // The number of files that are imported for weak fields. + // The weak dependency list is a subset of the dependency list. + int weak_dependency_count() const; + // Gets a weak imported file by index, where 0 <= index < + // weak_dependency_count(). + // These are returned in the order they were defined in the .proto file. + const FileDescriptor* weak_dependency(int index) const; + // Number of top-level message types defined in this file. (This does not // include nested types.) int message_type_count() const; @@ -866,12 +973,28 @@ class LIBPROTOBUF_EXPORT FileDescriptor { const FieldDescriptor* FindExtensionByCamelcaseName(const string& name) const; // See Descriptor::CopyTo(). + // Notes: + // - This method does NOT copy source code information since it is relatively + // large and rarely needed. See CopySourceCodeInfoTo() below. void CopyTo(FileDescriptorProto* proto) const; + // Write the source code information of this FileDescriptor into the given + // FileDescriptorProto. See CopyTo() above. + void CopySourceCodeInfoTo(FileDescriptorProto* proto) const; // See Descriptor::DebugString(). string DebugString() const; private: + // Source Location --------------------------------------------------- + + // Updates |*out_location| to the source location of the complete + // extent of the declaration or declaration-part denoted by |path|. + // Returns false and leaves |*out_location| unchanged iff location + // information was not available. (See SourceCodeInfo for + // description of path encoding.) + bool GetSourceLocation(const vector& path, + SourceLocation* out_location) const; + typedef FileOptions OptionsType; const string* name_; @@ -879,6 +1002,10 @@ class LIBPROTOBUF_EXPORT FileDescriptor { const DescriptorPool* pool_; int dependency_count_; const FileDescriptor** dependencies_; + int public_dependency_count_; + int* public_dependencies_; + int weak_dependency_count_; + int* weak_dependencies_; int message_type_count_; Descriptor* message_types_; int enum_type_count_; @@ -890,6 +1017,7 @@ class LIBPROTOBUF_EXPORT FileDescriptor { const FileOptions* options_; const FileDescriptorTables* tables_; + const SourceCodeInfo* source_code_info_; // IMPORTANT: If you add a new field, make sure to search for all instances // of Allocate() and AllocateArray() in // descriptor.cc and update them to initialize the field. @@ -899,6 +1027,8 @@ class LIBPROTOBUF_EXPORT FileDescriptor { friend class Descriptor; friend class FieldDescriptor; friend class EnumDescriptor; + friend class EnumValueDescriptor; + friend class MethodDescriptor; friend class ServiceDescriptor; GOOGLE_DISALLOW_EVIL_CONSTRUCTORS(FileDescriptor); }; @@ -1106,7 +1236,7 @@ class LIBPROTOBUF_EXPORT DescriptorPool { // For internal use only: Gets a non-const pointer to the generated pool. // This is called at static-initialization time only, so thread-safety is // not a concern. If both an underlay and a fallback database are present, - // the fallback database takes precedence. + // the underlay takes precedence. static DescriptorPool* internal_generated_pool(); // For internal use only: Changes the behavior of BuildFile() such that it @@ -1132,6 +1262,11 @@ class LIBPROTOBUF_EXPORT DescriptorPool { friend class FileDescriptor; friend class DescriptorBuilder; + // Return true if the given name is a sub-symbol of any non-package + // descriptor that already exists in the descriptor pool. (The full + // definition of such types is already known.) + bool IsSubSymbolOfBuiltType(const string& name) const; + // Tries to find something in the fallback database and link in the // corresponding proto file. Returns true if successful, in which case // the caller should search for the thing again. These are declared @@ -1203,7 +1338,7 @@ PROTOBUF_DEFINE_ARRAY_ACCESSOR(Descriptor, extension_range, const Descriptor::ExtensionRange*) PROTOBUF_DEFINE_ARRAY_ACCESSOR(Descriptor, extension, const FieldDescriptor*) -PROTOBUF_DEFINE_OPTIONS_ACCESSOR(Descriptor, MessageOptions); +PROTOBUF_DEFINE_OPTIONS_ACCESSOR(Descriptor, MessageOptions) PROTOBUF_DEFINE_STRING_ACCESSOR(FieldDescriptor, name) PROTOBUF_DEFINE_STRING_ACCESSOR(FieldDescriptor, full_name) @@ -1220,7 +1355,7 @@ PROTOBUF_DEFINE_ACCESSOR(FieldDescriptor, message_type, const Descriptor*) PROTOBUF_DEFINE_ACCESSOR(FieldDescriptor, enum_type, const EnumDescriptor*) PROTOBUF_DEFINE_ACCESSOR(FieldDescriptor, experimental_map_key, const FieldDescriptor*) -PROTOBUF_DEFINE_OPTIONS_ACCESSOR(FieldDescriptor, FieldOptions); +PROTOBUF_DEFINE_OPTIONS_ACCESSOR(FieldDescriptor, FieldOptions) PROTOBUF_DEFINE_ACCESSOR(FieldDescriptor, has_default_value, bool) PROTOBUF_DEFINE_ACCESSOR(FieldDescriptor, default_value_int32 , int32 ) PROTOBUF_DEFINE_ACCESSOR(FieldDescriptor, default_value_int64 , int64 ) @@ -1240,13 +1375,13 @@ PROTOBUF_DEFINE_ACCESSOR(EnumDescriptor, containing_type, const Descriptor*) PROTOBUF_DEFINE_ACCESSOR(EnumDescriptor, value_count, int) PROTOBUF_DEFINE_ARRAY_ACCESSOR(EnumDescriptor, value, const EnumValueDescriptor*) -PROTOBUF_DEFINE_OPTIONS_ACCESSOR(EnumDescriptor, EnumOptions); +PROTOBUF_DEFINE_OPTIONS_ACCESSOR(EnumDescriptor, EnumOptions) PROTOBUF_DEFINE_STRING_ACCESSOR(EnumValueDescriptor, name) PROTOBUF_DEFINE_STRING_ACCESSOR(EnumValueDescriptor, full_name) PROTOBUF_DEFINE_ACCESSOR(EnumValueDescriptor, number, int) PROTOBUF_DEFINE_ACCESSOR(EnumValueDescriptor, type, const EnumDescriptor*) -PROTOBUF_DEFINE_OPTIONS_ACCESSOR(EnumValueDescriptor, EnumValueOptions); +PROTOBUF_DEFINE_OPTIONS_ACCESSOR(EnumValueDescriptor, EnumValueOptions) PROTOBUF_DEFINE_STRING_ACCESSOR(ServiceDescriptor, name) PROTOBUF_DEFINE_STRING_ACCESSOR(ServiceDescriptor, full_name) @@ -1254,24 +1389,25 @@ PROTOBUF_DEFINE_ACCESSOR(ServiceDescriptor, file, const FileDescriptor*) PROTOBUF_DEFINE_ACCESSOR(ServiceDescriptor, method_count, int) PROTOBUF_DEFINE_ARRAY_ACCESSOR(ServiceDescriptor, method, const MethodDescriptor*) -PROTOBUF_DEFINE_OPTIONS_ACCESSOR(ServiceDescriptor, ServiceOptions); +PROTOBUF_DEFINE_OPTIONS_ACCESSOR(ServiceDescriptor, ServiceOptions) PROTOBUF_DEFINE_STRING_ACCESSOR(MethodDescriptor, name) PROTOBUF_DEFINE_STRING_ACCESSOR(MethodDescriptor, full_name) PROTOBUF_DEFINE_ACCESSOR(MethodDescriptor, service, const ServiceDescriptor*) PROTOBUF_DEFINE_ACCESSOR(MethodDescriptor, input_type, const Descriptor*) PROTOBUF_DEFINE_ACCESSOR(MethodDescriptor, output_type, const Descriptor*) -PROTOBUF_DEFINE_OPTIONS_ACCESSOR(MethodDescriptor, MethodOptions); - +PROTOBUF_DEFINE_OPTIONS_ACCESSOR(MethodDescriptor, MethodOptions) PROTOBUF_DEFINE_STRING_ACCESSOR(FileDescriptor, name) PROTOBUF_DEFINE_STRING_ACCESSOR(FileDescriptor, package) PROTOBUF_DEFINE_ACCESSOR(FileDescriptor, pool, const DescriptorPool*) PROTOBUF_DEFINE_ACCESSOR(FileDescriptor, dependency_count, int) +PROTOBUF_DEFINE_ACCESSOR(FileDescriptor, public_dependency_count, int) +PROTOBUF_DEFINE_ACCESSOR(FileDescriptor, weak_dependency_count, int) PROTOBUF_DEFINE_ACCESSOR(FileDescriptor, message_type_count, int) PROTOBUF_DEFINE_ACCESSOR(FileDescriptor, enum_type_count, int) PROTOBUF_DEFINE_ACCESSOR(FileDescriptor, service_count, int) PROTOBUF_DEFINE_ACCESSOR(FileDescriptor, extension_count, int) -PROTOBUF_DEFINE_OPTIONS_ACCESSOR(FileDescriptor, FileOptions); +PROTOBUF_DEFINE_OPTIONS_ACCESSOR(FileDescriptor, FileOptions) PROTOBUF_DEFINE_ARRAY_ACCESSOR(FileDescriptor, message_type, const Descriptor*) PROTOBUF_DEFINE_ARRAY_ACCESSOR(FileDescriptor, enum_type, const EnumDescriptor*) @@ -1342,10 +1478,18 @@ inline int MethodDescriptor::index() const { return this - service_->methods_; } +inline const char* FieldDescriptor::type_name() const { + return kTypeToName[type_]; +} + inline FieldDescriptor::CppType FieldDescriptor::cpp_type() const { return kTypeToCppTypeMap[type_]; } +inline const char* FieldDescriptor::cpp_type_name() const { + return kCppTypeToName[kTypeToCppTypeMap[type_]]; +} + inline FieldDescriptor::CppType FieldDescriptor::TypeToCppType(Type type) { return kTypeToCppTypeMap[type]; } @@ -1361,6 +1505,16 @@ inline const FileDescriptor* FileDescriptor::dependency(int index) const { return dependencies_[index]; } +inline const FileDescriptor* FileDescriptor::public_dependency( + int index) const { + return dependencies_[public_dependencies_[index]]; +} + +inline const FileDescriptor* FileDescriptor::weak_dependency( + int index) const { + return dependencies_[weak_dependencies_[index]]; +} + } // namespace protobuf } // namespace google diff --git a/cpp/thirdparty/protobuf-2.3.0/src/google/protobuf/descriptor.pb.cc b/cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/descriptor.pb.cc similarity index 79% rename from cpp/thirdparty/protobuf-2.3.0/src/google/protobuf/descriptor.pb.cc rename to cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/descriptor.pb.cc index f61e7cd05..65379f4d4 100644 --- a/cpp/thirdparty/protobuf-2.3.0/src/google/protobuf/descriptor.pb.cc +++ b/cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/descriptor.pb.cc @@ -1,11 +1,17 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! +// source: google/protobuf/descriptor.proto #define INTERNAL_SUPPRESS_PROTOBUF_FIELD_DEPRECATION #include "google/protobuf/descriptor.pb.h" + +#include + +#include #include #include #include #include +#include #include #include // @@protoc_insertion_point(includes) @@ -73,6 +79,12 @@ const ::google::protobuf::internal::GeneratedMessageReflection* const ::google::protobuf::Descriptor* UninterpretedOption_NamePart_descriptor_ = NULL; const ::google::protobuf::internal::GeneratedMessageReflection* UninterpretedOption_NamePart_reflection_ = NULL; +const ::google::protobuf::Descriptor* SourceCodeInfo_descriptor_ = NULL; +const ::google::protobuf::internal::GeneratedMessageReflection* + SourceCodeInfo_reflection_ = NULL; +const ::google::protobuf::Descriptor* SourceCodeInfo_Location_descriptor_ = NULL; +const ::google::protobuf::internal::GeneratedMessageReflection* + SourceCodeInfo_Location_reflection_ = NULL; } // namespace @@ -99,15 +111,18 @@ void protobuf_AssignDesc_google_2fprotobuf_2fdescriptor_2eproto() { ::google::protobuf::MessageFactory::generated_factory(), sizeof(FileDescriptorSet)); FileDescriptorProto_descriptor_ = file->message_type(1); - static const int FileDescriptorProto_offsets_[8] = { + static const int FileDescriptorProto_offsets_[11] = { GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(FileDescriptorProto, name_), GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(FileDescriptorProto, package_), GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(FileDescriptorProto, dependency_), + GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(FileDescriptorProto, public_dependency_), + GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(FileDescriptorProto, weak_dependency_), GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(FileDescriptorProto, message_type_), GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(FileDescriptorProto, enum_type_), GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(FileDescriptorProto, service_), GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(FileDescriptorProto, extension_), GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(FileDescriptorProto, options_), + GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(FileDescriptorProto, source_code_info_), }; FileDescriptorProto_reflection_ = new ::google::protobuf::internal::GeneratedMessageReflection( @@ -251,11 +266,13 @@ void protobuf_AssignDesc_google_2fprotobuf_2fdescriptor_2eproto() { ::google::protobuf::MessageFactory::generated_factory(), sizeof(MethodDescriptorProto)); FileOptions_descriptor_ = file->message_type(8); - static const int FileOptions_offsets_[8] = { + static const int FileOptions_offsets_[10] = { GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(FileOptions, java_package_), GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(FileOptions, java_outer_classname_), GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(FileOptions, java_multiple_files_), + GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(FileOptions, java_generate_equals_and_hash_), GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(FileOptions, optimize_for_), + GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(FileOptions, go_package_), GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(FileOptions, cc_generic_services_), GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(FileOptions, java_generic_services_), GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(FileOptions, py_generic_services_), @@ -291,11 +308,13 @@ void protobuf_AssignDesc_google_2fprotobuf_2fdescriptor_2eproto() { ::google::protobuf::MessageFactory::generated_factory(), sizeof(MessageOptions)); FieldOptions_descriptor_ = file->message_type(10); - static const int FieldOptions_offsets_[5] = { + static const int FieldOptions_offsets_[7] = { GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(FieldOptions, ctype_), GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(FieldOptions, packed_), + GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(FieldOptions, lazy_), GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(FieldOptions, deprecated_), GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(FieldOptions, experimental_map_key_), + GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(FieldOptions, weak_), GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(FieldOptions, uninterpreted_option_), }; FieldOptions_reflection_ = @@ -311,7 +330,8 @@ void protobuf_AssignDesc_google_2fprotobuf_2fdescriptor_2eproto() { sizeof(FieldOptions)); FieldOptions_CType_descriptor_ = FieldOptions_descriptor_->enum_type(0); EnumOptions_descriptor_ = file->message_type(11); - static const int EnumOptions_offsets_[1] = { + static const int EnumOptions_offsets_[2] = { + GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(EnumOptions, allow_alias_), GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(EnumOptions, uninterpreted_option_), }; EnumOptions_reflection_ = @@ -371,13 +391,14 @@ void protobuf_AssignDesc_google_2fprotobuf_2fdescriptor_2eproto() { ::google::protobuf::MessageFactory::generated_factory(), sizeof(MethodOptions)); UninterpretedOption_descriptor_ = file->message_type(15); - static const int UninterpretedOption_offsets_[6] = { + static const int UninterpretedOption_offsets_[7] = { GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(UninterpretedOption, name_), GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(UninterpretedOption, identifier_value_), GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(UninterpretedOption, positive_int_value_), GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(UninterpretedOption, negative_int_value_), GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(UninterpretedOption, double_value_), GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(UninterpretedOption, string_value_), + GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(UninterpretedOption, aggregate_value_), }; UninterpretedOption_reflection_ = new ::google::protobuf::internal::GeneratedMessageReflection( @@ -406,6 +427,39 @@ void protobuf_AssignDesc_google_2fprotobuf_2fdescriptor_2eproto() { ::google::protobuf::DescriptorPool::generated_pool(), ::google::protobuf::MessageFactory::generated_factory(), sizeof(UninterpretedOption_NamePart)); + SourceCodeInfo_descriptor_ = file->message_type(16); + static const int SourceCodeInfo_offsets_[1] = { + GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(SourceCodeInfo, location_), + }; + SourceCodeInfo_reflection_ = + new ::google::protobuf::internal::GeneratedMessageReflection( + SourceCodeInfo_descriptor_, + SourceCodeInfo::default_instance_, + SourceCodeInfo_offsets_, + GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(SourceCodeInfo, _has_bits_[0]), + GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(SourceCodeInfo, _unknown_fields_), + -1, + ::google::protobuf::DescriptorPool::generated_pool(), + ::google::protobuf::MessageFactory::generated_factory(), + sizeof(SourceCodeInfo)); + SourceCodeInfo_Location_descriptor_ = SourceCodeInfo_descriptor_->nested_type(0); + static const int SourceCodeInfo_Location_offsets_[4] = { + GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(SourceCodeInfo_Location, path_), + GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(SourceCodeInfo_Location, span_), + GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(SourceCodeInfo_Location, leading_comments_), + GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(SourceCodeInfo_Location, trailing_comments_), + }; + SourceCodeInfo_Location_reflection_ = + new ::google::protobuf::internal::GeneratedMessageReflection( + SourceCodeInfo_Location_descriptor_, + SourceCodeInfo_Location::default_instance_, + SourceCodeInfo_Location_offsets_, + GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(SourceCodeInfo_Location, _has_bits_[0]), + GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(SourceCodeInfo_Location, _unknown_fields_), + -1, + ::google::protobuf::DescriptorPool::generated_pool(), + ::google::protobuf::MessageFactory::generated_factory(), + sizeof(SourceCodeInfo_Location)); } namespace { @@ -454,6 +508,10 @@ void protobuf_RegisterTypes(const ::std::string&) { UninterpretedOption_descriptor_, &UninterpretedOption::default_instance()); ::google::protobuf::MessageFactory::InternalRegisterGeneratedMessage( UninterpretedOption_NamePart_descriptor_, &UninterpretedOption_NamePart::default_instance()); + ::google::protobuf::MessageFactory::InternalRegisterGeneratedMessage( + SourceCodeInfo_descriptor_, &SourceCodeInfo::default_instance()); + ::google::protobuf::MessageFactory::InternalRegisterGeneratedMessage( + SourceCodeInfo_Location_descriptor_, &SourceCodeInfo_Location::default_instance()); } } // namespace @@ -495,6 +553,10 @@ void protobuf_ShutdownFile_google_2fprotobuf_2fdescriptor_2eproto() { delete UninterpretedOption_reflection_; delete UninterpretedOption_NamePart::default_instance_; delete UninterpretedOption_NamePart_reflection_; + delete SourceCodeInfo::default_instance_; + delete SourceCodeInfo_reflection_; + delete SourceCodeInfo_Location::default_instance_; + delete SourceCodeInfo_Location_reflection_; } void protobuf_AddDesc_google_2fprotobuf_2fdescriptor_2eproto() { @@ -507,96 +569,107 @@ void protobuf_AddDesc_google_2fprotobuf_2fdescriptor_2eproto() { "\n google/protobuf/descriptor.proto\022\017goog" "le.protobuf\"G\n\021FileDescriptorSet\0222\n\004file" "\030\001 \003(\0132$.google.protobuf.FileDescriptorP" - "roto\"\334\002\n\023FileDescriptorProto\022\014\n\004name\030\001 \001" + "roto\"\313\003\n\023FileDescriptorProto\022\014\n\004name\030\001 \001" "(\t\022\017\n\007package\030\002 \001(\t\022\022\n\ndependency\030\003 \003(\t\022" - "6\n\014message_type\030\004 \003(\0132 .google.protobuf." - "DescriptorProto\0227\n\tenum_type\030\005 \003(\0132$.goo" - "gle.protobuf.EnumDescriptorProto\0228\n\007serv" - "ice\030\006 \003(\0132\'.google.protobuf.ServiceDescr" - "iptorProto\0228\n\textension\030\007 \003(\0132%.google.p" - "rotobuf.FieldDescriptorProto\022-\n\007options\030" - "\010 \001(\0132\034.google.protobuf.FileOptions\"\251\003\n\017" - "DescriptorProto\022\014\n\004name\030\001 \001(\t\0224\n\005field\030\002" - " \003(\0132%.google.protobuf.FieldDescriptorPr" - "oto\0228\n\textension\030\006 \003(\0132%.google.protobuf" - ".FieldDescriptorProto\0225\n\013nested_type\030\003 \003" - "(\0132 .google.protobuf.DescriptorProto\0227\n\t" - "enum_type\030\004 \003(\0132$.google.protobuf.EnumDe" - "scriptorProto\022H\n\017extension_range\030\005 \003(\0132/" - ".google.protobuf.DescriptorProto.Extensi" - "onRange\0220\n\007options\030\007 \001(\0132\037.google.protob" - "uf.MessageOptions\032,\n\016ExtensionRange\022\r\n\005s" - "tart\030\001 \001(\005\022\013\n\003end\030\002 \001(\005\"\224\005\n\024FieldDescrip" - "torProto\022\014\n\004name\030\001 \001(\t\022\016\n\006number\030\003 \001(\005\022:" - "\n\005label\030\004 \001(\0162+.google.protobuf.FieldDes" - "criptorProto.Label\0228\n\004type\030\005 \001(\0162*.googl" - "e.protobuf.FieldDescriptorProto.Type\022\021\n\t" - "type_name\030\006 \001(\t\022\020\n\010extendee\030\002 \001(\t\022\025\n\rdef" - "ault_value\030\007 \001(\t\022.\n\007options\030\010 \001(\0132\035.goog" - "le.protobuf.FieldOptions\"\266\002\n\004Type\022\017\n\013TYP" - "E_DOUBLE\020\001\022\016\n\nTYPE_FLOAT\020\002\022\016\n\nTYPE_INT64" - "\020\003\022\017\n\013TYPE_UINT64\020\004\022\016\n\nTYPE_INT32\020\005\022\020\n\014T" - "YPE_FIXED64\020\006\022\020\n\014TYPE_FIXED32\020\007\022\r\n\tTYPE_" - "BOOL\020\010\022\017\n\013TYPE_STRING\020\t\022\016\n\nTYPE_GROUP\020\n\022" - "\020\n\014TYPE_MESSAGE\020\013\022\016\n\nTYPE_BYTES\020\014\022\017\n\013TYP" - "E_UINT32\020\r\022\r\n\tTYPE_ENUM\020\016\022\021\n\rTYPE_SFIXED" - "32\020\017\022\021\n\rTYPE_SFIXED64\020\020\022\017\n\013TYPE_SINT32\020\021" - "\022\017\n\013TYPE_SINT64\020\022\"C\n\005Label\022\022\n\016LABEL_OPTI" - "ONAL\020\001\022\022\n\016LABEL_REQUIRED\020\002\022\022\n\016LABEL_REPE" - "ATED\020\003\"\214\001\n\023EnumDescriptorProto\022\014\n\004name\030\001" - " \001(\t\0228\n\005value\030\002 \003(\0132).google.protobuf.En" - "umValueDescriptorProto\022-\n\007options\030\003 \001(\0132" - "\034.google.protobuf.EnumOptions\"l\n\030EnumVal" - "ueDescriptorProto\022\014\n\004name\030\001 \001(\t\022\016\n\006numbe" - "r\030\002 \001(\005\0222\n\007options\030\003 \001(\0132!.google.protob" - "uf.EnumValueOptions\"\220\001\n\026ServiceDescripto" - "rProto\022\014\n\004name\030\001 \001(\t\0226\n\006method\030\002 \003(\0132&.g" - "oogle.protobuf.MethodDescriptorProto\0220\n\007" - "options\030\003 \001(\0132\037.google.protobuf.ServiceO" - "ptions\"\177\n\025MethodDescriptorProto\022\014\n\004name\030" - "\001 \001(\t\022\022\n\ninput_type\030\002 \001(\t\022\023\n\013output_type" - "\030\003 \001(\t\022/\n\007options\030\004 \001(\0132\036.google.protobu" - "f.MethodOptions\"\244\003\n\013FileOptions\022\024\n\014java_" - "package\030\001 \001(\t\022\034\n\024java_outer_classname\030\010 " - "\001(\t\022\"\n\023java_multiple_files\030\n \001(\010:\005false\022" - "F\n\014optimize_for\030\t \001(\0162).google.protobuf." - "FileOptions.OptimizeMode:\005SPEED\022!\n\023cc_ge" - "neric_services\030\020 \001(\010:\004true\022#\n\025java_gener" - "ic_services\030\021 \001(\010:\004true\022!\n\023py_generic_se" - "rvices\030\022 \001(\010:\004true\022C\n\024uninterpreted_opti" - "on\030\347\007 \003(\0132$.google.protobuf.Uninterprete" - "dOption\":\n\014OptimizeMode\022\t\n\005SPEED\020\001\022\r\n\tCO" - "DE_SIZE\020\002\022\020\n\014LITE_RUNTIME\020\003*\t\010\350\007\020\200\200\200\200\002\"\270" - "\001\n\016MessageOptions\022&\n\027message_set_wire_fo" - "rmat\030\001 \001(\010:\005false\022.\n\037no_standard_descrip" - "tor_accessor\030\002 \001(\010:\005false\022C\n\024uninterpret" - "ed_option\030\347\007 \003(\0132$.google.protobuf.Unint" - "erpretedOption*\t\010\350\007\020\200\200\200\200\002\"\224\002\n\014FieldOptio" - "ns\022:\n\005ctype\030\001 \001(\0162#.google.protobuf.Fiel" - "dOptions.CType:\006STRING\022\016\n\006packed\030\002 \001(\010\022\031" - "\n\ndeprecated\030\003 \001(\010:\005false\022\034\n\024experimenta" - "l_map_key\030\t \001(\t\022C\n\024uninterpreted_option\030" - "\347\007 \003(\0132$.google.protobuf.UninterpretedOp" - "tion\"/\n\005CType\022\n\n\006STRING\020\000\022\010\n\004CORD\020\001\022\020\n\014S" - "TRING_PIECE\020\002*\t\010\350\007\020\200\200\200\200\002\"]\n\013EnumOptions\022" - "C\n\024uninterpreted_option\030\347\007 \003(\0132$.google." - "protobuf.UninterpretedOption*\t\010\350\007\020\200\200\200\200\002\"" - "b\n\020EnumValueOptions\022C\n\024uninterpreted_opt" - "ion\030\347\007 \003(\0132$.google.protobuf.Uninterpret" - "edOption*\t\010\350\007\020\200\200\200\200\002\"`\n\016ServiceOptions\022C\n" + "\031\n\021public_dependency\030\n \003(\005\022\027\n\017weak_depen" + "dency\030\013 \003(\005\0226\n\014message_type\030\004 \003(\0132 .goog" + "le.protobuf.DescriptorProto\0227\n\tenum_type" + "\030\005 \003(\0132$.google.protobuf.EnumDescriptorP" + "roto\0228\n\007service\030\006 \003(\0132\'.google.protobuf." + "ServiceDescriptorProto\0228\n\textension\030\007 \003(" + "\0132%.google.protobuf.FieldDescriptorProto" + "\022-\n\007options\030\010 \001(\0132\034.google.protobuf.File" + "Options\0229\n\020source_code_info\030\t \001(\0132\037.goog" + "le.protobuf.SourceCodeInfo\"\251\003\n\017Descripto" + "rProto\022\014\n\004name\030\001 \001(\t\0224\n\005field\030\002 \003(\0132%.go" + "ogle.protobuf.FieldDescriptorProto\0228\n\tex" + "tension\030\006 \003(\0132%.google.protobuf.FieldDes" + "criptorProto\0225\n\013nested_type\030\003 \003(\0132 .goog" + "le.protobuf.DescriptorProto\0227\n\tenum_type" + "\030\004 \003(\0132$.google.protobuf.EnumDescriptorP" + "roto\022H\n\017extension_range\030\005 \003(\0132/.google.p" + "rotobuf.DescriptorProto.ExtensionRange\0220" + "\n\007options\030\007 \001(\0132\037.google.protobuf.Messag" + "eOptions\032,\n\016ExtensionRange\022\r\n\005start\030\001 \001(" + "\005\022\013\n\003end\030\002 \001(\005\"\224\005\n\024FieldDescriptorProto\022" + "\014\n\004name\030\001 \001(\t\022\016\n\006number\030\003 \001(\005\022:\n\005label\030\004" + " \001(\0162+.google.protobuf.FieldDescriptorPr" + "oto.Label\0228\n\004type\030\005 \001(\0162*.google.protobu" + "f.FieldDescriptorProto.Type\022\021\n\ttype_name" + "\030\006 \001(\t\022\020\n\010extendee\030\002 \001(\t\022\025\n\rdefault_valu" + "e\030\007 \001(\t\022.\n\007options\030\010 \001(\0132\035.google.protob" + "uf.FieldOptions\"\266\002\n\004Type\022\017\n\013TYPE_DOUBLE\020" + "\001\022\016\n\nTYPE_FLOAT\020\002\022\016\n\nTYPE_INT64\020\003\022\017\n\013TYP" + "E_UINT64\020\004\022\016\n\nTYPE_INT32\020\005\022\020\n\014TYPE_FIXED" + "64\020\006\022\020\n\014TYPE_FIXED32\020\007\022\r\n\tTYPE_BOOL\020\010\022\017\n" + "\013TYPE_STRING\020\t\022\016\n\nTYPE_GROUP\020\n\022\020\n\014TYPE_M" + "ESSAGE\020\013\022\016\n\nTYPE_BYTES\020\014\022\017\n\013TYPE_UINT32\020" + "\r\022\r\n\tTYPE_ENUM\020\016\022\021\n\rTYPE_SFIXED32\020\017\022\021\n\rT" + "YPE_SFIXED64\020\020\022\017\n\013TYPE_SINT32\020\021\022\017\n\013TYPE_" + "SINT64\020\022\"C\n\005Label\022\022\n\016LABEL_OPTIONAL\020\001\022\022\n" + "\016LABEL_REQUIRED\020\002\022\022\n\016LABEL_REPEATED\020\003\"\214\001" + "\n\023EnumDescriptorProto\022\014\n\004name\030\001 \001(\t\0228\n\005v" + "alue\030\002 \003(\0132).google.protobuf.EnumValueDe" + "scriptorProto\022-\n\007options\030\003 \001(\0132\034.google." + "protobuf.EnumOptions\"l\n\030EnumValueDescrip" + "torProto\022\014\n\004name\030\001 \001(\t\022\016\n\006number\030\002 \001(\005\0222" + "\n\007options\030\003 \001(\0132!.google.protobuf.EnumVa" + "lueOptions\"\220\001\n\026ServiceDescriptorProto\022\014\n" + "\004name\030\001 \001(\t\0226\n\006method\030\002 \003(\0132&.google.pro" + "tobuf.MethodDescriptorProto\0220\n\007options\030\003" + " \001(\0132\037.google.protobuf.ServiceOptions\"\177\n" + "\025MethodDescriptorProto\022\014\n\004name\030\001 \001(\t\022\022\n\n" + "input_type\030\002 \001(\t\022\023\n\013output_type\030\003 \001(\t\022/\n" + "\007options\030\004 \001(\0132\036.google.protobuf.MethodO" + "ptions\"\351\003\n\013FileOptions\022\024\n\014java_package\030\001" + " \001(\t\022\034\n\024java_outer_classname\030\010 \001(\t\022\"\n\023ja" + "va_multiple_files\030\n \001(\010:\005false\022,\n\035java_g" + "enerate_equals_and_hash\030\024 \001(\010:\005false\022F\n\014" + "optimize_for\030\t \001(\0162).google.protobuf.Fil" + "eOptions.OptimizeMode:\005SPEED\022\022\n\ngo_packa" + "ge\030\013 \001(\t\022\"\n\023cc_generic_services\030\020 \001(\010:\005f" + "alse\022$\n\025java_generic_services\030\021 \001(\010:\005fal" + "se\022\"\n\023py_generic_services\030\022 \001(\010:\005false\022C" + "\n\024uninterpreted_option\030\347\007 \003(\0132$.google.p" + "rotobuf.UninterpretedOption\":\n\014OptimizeM" + "ode\022\t\n\005SPEED\020\001\022\r\n\tCODE_SIZE\020\002\022\020\n\014LITE_RU" + "NTIME\020\003*\t\010\350\007\020\200\200\200\200\002\"\270\001\n\016MessageOptions\022&\n" + "\027message_set_wire_format\030\001 \001(\010:\005false\022.\n" + "\037no_standard_descriptor_accessor\030\002 \001(\010:\005" + "false\022C\n\024uninterpreted_option\030\347\007 \003(\0132$.g" + "oogle.protobuf.UninterpretedOption*\t\010\350\007\020" + "\200\200\200\200\002\"\276\002\n\014FieldOptions\022:\n\005ctype\030\001 \001(\0162#." + "google.protobuf.FieldOptions.CType:\006STRI" + "NG\022\016\n\006packed\030\002 \001(\010\022\023\n\004lazy\030\005 \001(\010:\005false\022" + "\031\n\ndeprecated\030\003 \001(\010:\005false\022\034\n\024experiment" + "al_map_key\030\t \001(\t\022\023\n\004weak\030\n \001(\010:\005false\022C\n" "\024uninterpreted_option\030\347\007 \003(\0132$.google.pr" - "otobuf.UninterpretedOption*\t\010\350\007\020\200\200\200\200\002\"_\n" - "\rMethodOptions\022C\n\024uninterpreted_option\030\347" - "\007 \003(\0132$.google.protobuf.UninterpretedOpt" - "ion*\t\010\350\007\020\200\200\200\200\002\"\205\002\n\023UninterpretedOption\022;" - "\n\004name\030\002 \003(\0132-.google.protobuf.Uninterpr" - "etedOption.NamePart\022\030\n\020identifier_value\030" - "\003 \001(\t\022\032\n\022positive_int_value\030\004 \001(\004\022\032\n\022neg" - "ative_int_value\030\005 \001(\003\022\024\n\014double_value\030\006 " - "\001(\001\022\024\n\014string_value\030\007 \001(\014\0323\n\010NamePart\022\021\n" - "\tname_part\030\001 \002(\t\022\024\n\014is_extension\030\002 \002(\010B)" - "\n\023com.google.protobufB\020DescriptorProtosH" - "\001", 3681); + "otobuf.UninterpretedOption\"/\n\005CType\022\n\n\006S" + "TRING\020\000\022\010\n\004CORD\020\001\022\020\n\014STRING_PIECE\020\002*\t\010\350\007" + "\020\200\200\200\200\002\"x\n\013EnumOptions\022\031\n\013allow_alias\030\002 \001" + "(\010:\004true\022C\n\024uninterpreted_option\030\347\007 \003(\0132" + "$.google.protobuf.UninterpretedOption*\t\010" + "\350\007\020\200\200\200\200\002\"b\n\020EnumValueOptions\022C\n\024uninterp" + "reted_option\030\347\007 \003(\0132$.google.protobuf.Un" + "interpretedOption*\t\010\350\007\020\200\200\200\200\002\"`\n\016ServiceO" + "ptions\022C\n\024uninterpreted_option\030\347\007 \003(\0132$." + "google.protobuf.UninterpretedOption*\t\010\350\007" + "\020\200\200\200\200\002\"_\n\rMethodOptions\022C\n\024uninterpreted" + "_option\030\347\007 \003(\0132$.google.protobuf.Uninter" + "pretedOption*\t\010\350\007\020\200\200\200\200\002\"\236\002\n\023Uninterprete" + "dOption\022;\n\004name\030\002 \003(\0132-.google.protobuf." + "UninterpretedOption.NamePart\022\030\n\020identifi" + "er_value\030\003 \001(\t\022\032\n\022positive_int_value\030\004 \001" + "(\004\022\032\n\022negative_int_value\030\005 \001(\003\022\024\n\014double" + "_value\030\006 \001(\001\022\024\n\014string_value\030\007 \001(\014\022\027\n\017ag" + "gregate_value\030\010 \001(\t\0323\n\010NamePart\022\021\n\tname_" + "part\030\001 \002(\t\022\024\n\014is_extension\030\002 \002(\010\"\261\001\n\016Sou" + "rceCodeInfo\022:\n\010location\030\001 \003(\0132(.google.p" + "rotobuf.SourceCodeInfo.Location\032c\n\010Locat" + "ion\022\020\n\004path\030\001 \003(\005B\002\020\001\022\020\n\004span\030\002 \003(\005B\002\020\001\022" + "\030\n\020leading_comments\030\003 \001(\t\022\031\n\021trailing_co" + "mments\030\004 \001(\tB)\n\023com.google.protobufB\020Des" + "criptorProtosH\001", 4135); ::google::protobuf::MessageFactory::InternalRegisterGeneratedFile( "google/protobuf/descriptor.proto", &protobuf_RegisterTypes); FileDescriptorSet::default_instance_ = new FileDescriptorSet(); @@ -617,6 +690,8 @@ void protobuf_AddDesc_google_2fprotobuf_2fdescriptor_2eproto() { MethodOptions::default_instance_ = new MethodOptions(); UninterpretedOption::default_instance_ = new UninterpretedOption(); UninterpretedOption_NamePart::default_instance_ = new UninterpretedOption_NamePart(); + SourceCodeInfo::default_instance_ = new SourceCodeInfo(); + SourceCodeInfo_Location::default_instance_ = new SourceCodeInfo_Location(); FileDescriptorSet::default_instance_->InitAsDefaultInstance(); FileDescriptorProto::default_instance_->InitAsDefaultInstance(); DescriptorProto::default_instance_->InitAsDefaultInstance(); @@ -635,6 +710,8 @@ void protobuf_AddDesc_google_2fprotobuf_2fdescriptor_2eproto() { MethodOptions::default_instance_->InitAsDefaultInstance(); UninterpretedOption::default_instance_->InitAsDefaultInstance(); UninterpretedOption_NamePart::default_instance_->InitAsDefaultInstance(); + SourceCodeInfo::default_instance_->InitAsDefaultInstance(); + SourceCodeInfo_Location::default_instance_->InitAsDefaultInstance(); ::google::protobuf::internal::OnShutdown(&protobuf_ShutdownFile_google_2fprotobuf_2fdescriptor_2eproto); } @@ -645,7 +722,6 @@ struct StaticDescriptorInitializer_google_2fprotobuf_2fdescriptor_2eproto { } } static_descriptor_initializer_google_2fprotobuf_2fdescriptor_2eproto_; - // =================================================================== #ifndef _MSC_VER @@ -691,7 +767,8 @@ const ::google::protobuf::Descriptor* FileDescriptorSet::descriptor() { } const FileDescriptorSet& FileDescriptorSet::default_instance() { - if (default_instance_ == NULL) protobuf_AddDesc_google_2fprotobuf_2fdescriptor_2eproto(); return *default_instance_; + if (default_instance_ == NULL) protobuf_AddDesc_google_2fprotobuf_2fdescriptor_2eproto(); + return *default_instance_; } FileDescriptorSet* FileDescriptorSet::default_instance_ = NULL; @@ -726,7 +803,7 @@ bool FileDescriptorSet::MergePartialFromCodedStream( if (input->ExpectAtEnd()) return true; break; } - + default: { handle_uninterpreted: if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -750,7 +827,7 @@ void FileDescriptorSet::SerializeWithCachedSizes( ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray( 1, this->file(i), output); } - + if (!unknown_fields().empty()) { ::google::protobuf::internal::WireFormat::SerializeUnknownFields( unknown_fields(), output); @@ -765,7 +842,7 @@ void FileDescriptorSet::SerializeWithCachedSizes( WriteMessageNoVirtualToArray( 1, this->file(i), target); } - + if (!unknown_fields().empty()) { target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray( unknown_fields(), target); @@ -775,7 +852,7 @@ void FileDescriptorSet::SerializeWithCachedSizes( int FileDescriptorSet::ByteSize() const { int total_size = 0; - + // repeated .google.protobuf.FileDescriptorProto file = 1; total_size += 1 * this->file_size(); for (int i = 0; i < this->file_size(); i++) { @@ -783,7 +860,7 @@ int FileDescriptorSet::ByteSize() const { ::google::protobuf::internal::WireFormatLite::MessageSizeNoVirtual( this->file(i)); } - + if (!unknown_fields().empty()) { total_size += ::google::protobuf::internal::WireFormat::ComputeUnknownFieldsSize( @@ -826,7 +903,7 @@ void FileDescriptorSet::CopyFrom(const FileDescriptorSet& from) { } bool FileDescriptorSet::IsInitialized() const { - + for (int i = 0; i < file_size(); i++) { if (!this->file(i).IsInitialized()) return false; } @@ -853,17 +930,18 @@ void FileDescriptorSet::Swap(FileDescriptorSet* other) { // =================================================================== -const ::std::string FileDescriptorProto::_default_name_; -const ::std::string FileDescriptorProto::_default_package_; #ifndef _MSC_VER const int FileDescriptorProto::kNameFieldNumber; const int FileDescriptorProto::kPackageFieldNumber; const int FileDescriptorProto::kDependencyFieldNumber; +const int FileDescriptorProto::kPublicDependencyFieldNumber; +const int FileDescriptorProto::kWeakDependencyFieldNumber; const int FileDescriptorProto::kMessageTypeFieldNumber; const int FileDescriptorProto::kEnumTypeFieldNumber; const int FileDescriptorProto::kServiceFieldNumber; const int FileDescriptorProto::kExtensionFieldNumber; const int FileDescriptorProto::kOptionsFieldNumber; +const int FileDescriptorProto::kSourceCodeInfoFieldNumber; #endif // !_MSC_VER FileDescriptorProto::FileDescriptorProto() @@ -873,6 +951,7 @@ FileDescriptorProto::FileDescriptorProto() void FileDescriptorProto::InitAsDefaultInstance() { options_ = const_cast< ::google::protobuf::FileOptions*>(&::google::protobuf::FileOptions::default_instance()); + source_code_info_ = const_cast< ::google::protobuf::SourceCodeInfo*>(&::google::protobuf::SourceCodeInfo::default_instance()); } FileDescriptorProto::FileDescriptorProto(const FileDescriptorProto& from) @@ -883,9 +962,10 @@ FileDescriptorProto::FileDescriptorProto(const FileDescriptorProto& from) void FileDescriptorProto::SharedCtor() { _cached_size_ = 0; - name_ = const_cast< ::std::string*>(&_default_name_); - package_ = const_cast< ::std::string*>(&_default_package_); + name_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + package_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); options_ = NULL; + source_code_info_ = NULL; ::memset(_has_bits_, 0, sizeof(_has_bits_)); } @@ -894,14 +974,15 @@ FileDescriptorProto::~FileDescriptorProto() { } void FileDescriptorProto::SharedDtor() { - if (name_ != &_default_name_) { + if (name_ != &::google::protobuf::internal::kEmptyString) { delete name_; } - if (package_ != &_default_package_) { + if (package_ != &::google::protobuf::internal::kEmptyString) { delete package_; } if (this != default_instance_) { delete options_; + delete source_code_info_; } } @@ -916,7 +997,8 @@ const ::google::protobuf::Descriptor* FileDescriptorProto::descriptor() { } const FileDescriptorProto& FileDescriptorProto::default_instance() { - if (default_instance_ == NULL) protobuf_AddDesc_google_2fprotobuf_2fdescriptor_2eproto(); return *default_instance_; + if (default_instance_ == NULL) protobuf_AddDesc_google_2fprotobuf_2fdescriptor_2eproto(); + return *default_instance_; } FileDescriptorProto* FileDescriptorProto::default_instance_ = NULL; @@ -927,21 +1009,28 @@ FileDescriptorProto* FileDescriptorProto::New() const { void FileDescriptorProto::Clear() { if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) { - if (_has_bit(0)) { - if (name_ != &_default_name_) { + if (has_name()) { + if (name_ != &::google::protobuf::internal::kEmptyString) { name_->clear(); } } - if (_has_bit(1)) { - if (package_ != &_default_package_) { + if (has_package()) { + if (package_ != &::google::protobuf::internal::kEmptyString) { package_->clear(); } } - if (_has_bit(7)) { + } + if (_has_bits_[9 / 32] & (0xffu << (9 % 32))) { + if (has_options()) { if (options_ != NULL) options_->::google::protobuf::FileOptions::Clear(); } + if (has_source_code_info()) { + if (source_code_info_ != NULL) source_code_info_->::google::protobuf::SourceCodeInfo::Clear(); + } } dependency_.Clear(); + public_dependency_.Clear(); + weak_dependency_.Clear(); message_type_.Clear(); enum_type_.Clear(); service_.Clear(); @@ -971,7 +1060,7 @@ bool FileDescriptorProto::MergePartialFromCodedStream( if (input->ExpectTag(18)) goto parse_package; break; } - + // optional string package = 2; case 2: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -988,7 +1077,7 @@ bool FileDescriptorProto::MergePartialFromCodedStream( if (input->ExpectTag(26)) goto parse_dependency; break; } - + // repeated string dependency = 3; case 3: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -997,7 +1086,8 @@ bool FileDescriptorProto::MergePartialFromCodedStream( DO_(::google::protobuf::internal::WireFormatLite::ReadString( input, this->add_dependency())); ::google::protobuf::internal::WireFormat::VerifyUTF8String( - this->dependency(0).data(), this->dependency(0).length(), + this->dependency(this->dependency_size() - 1).data(), + this->dependency(this->dependency_size() - 1).length(), ::google::protobuf::internal::WireFormat::PARSE); } else { goto handle_uninterpreted; @@ -1006,7 +1096,7 @@ bool FileDescriptorProto::MergePartialFromCodedStream( if (input->ExpectTag(34)) goto parse_message_type; break; } - + // repeated .google.protobuf.DescriptorProto message_type = 4; case 4: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -1021,7 +1111,7 @@ bool FileDescriptorProto::MergePartialFromCodedStream( if (input->ExpectTag(42)) goto parse_enum_type; break; } - + // repeated .google.protobuf.EnumDescriptorProto enum_type = 5; case 5: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -1036,7 +1126,7 @@ bool FileDescriptorProto::MergePartialFromCodedStream( if (input->ExpectTag(50)) goto parse_service; break; } - + // repeated .google.protobuf.ServiceDescriptorProto service = 6; case 6: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -1051,7 +1141,7 @@ bool FileDescriptorProto::MergePartialFromCodedStream( if (input->ExpectTag(58)) goto parse_extension; break; } - + // repeated .google.protobuf.FieldDescriptorProto extension = 7; case 7: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -1066,7 +1156,7 @@ bool FileDescriptorProto::MergePartialFromCodedStream( if (input->ExpectTag(66)) goto parse_options; break; } - + // optional .google.protobuf.FileOptions options = 8; case 8: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -1077,10 +1167,68 @@ bool FileDescriptorProto::MergePartialFromCodedStream( } else { goto handle_uninterpreted; } + if (input->ExpectTag(74)) goto parse_source_code_info; + break; + } + + // optional .google.protobuf.SourceCodeInfo source_code_info = 9; + case 9: { + if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == + ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) { + parse_source_code_info: + DO_(::google::protobuf::internal::WireFormatLite::ReadMessageNoVirtual( + input, mutable_source_code_info())); + } else { + goto handle_uninterpreted; + } + if (input->ExpectTag(80)) goto parse_public_dependency; + break; + } + + // repeated int32 public_dependency = 10; + case 10: { + if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == + ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) { + parse_public_dependency: + DO_((::google::protobuf::internal::WireFormatLite::ReadRepeatedPrimitive< + ::google::protobuf::int32, ::google::protobuf::internal::WireFormatLite::TYPE_INT32>( + 1, 80, input, this->mutable_public_dependency()))); + } else if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) + == ::google::protobuf::internal::WireFormatLite:: + WIRETYPE_LENGTH_DELIMITED) { + DO_((::google::protobuf::internal::WireFormatLite::ReadPackedPrimitiveNoInline< + ::google::protobuf::int32, ::google::protobuf::internal::WireFormatLite::TYPE_INT32>( + input, this->mutable_public_dependency()))); + } else { + goto handle_uninterpreted; + } + if (input->ExpectTag(80)) goto parse_public_dependency; + if (input->ExpectTag(88)) goto parse_weak_dependency; + break; + } + + // repeated int32 weak_dependency = 11; + case 11: { + if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == + ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) { + parse_weak_dependency: + DO_((::google::protobuf::internal::WireFormatLite::ReadRepeatedPrimitive< + ::google::protobuf::int32, ::google::protobuf::internal::WireFormatLite::TYPE_INT32>( + 1, 88, input, this->mutable_weak_dependency()))); + } else if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) + == ::google::protobuf::internal::WireFormatLite:: + WIRETYPE_LENGTH_DELIMITED) { + DO_((::google::protobuf::internal::WireFormatLite::ReadPackedPrimitiveNoInline< + ::google::protobuf::int32, ::google::protobuf::internal::WireFormatLite::TYPE_INT32>( + input, this->mutable_weak_dependency()))); + } else { + goto handle_uninterpreted; + } + if (input->ExpectTag(88)) goto parse_weak_dependency; if (input->ExpectAtEnd()) return true; break; } - + default: { handle_uninterpreted: if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -1100,23 +1248,23 @@ bool FileDescriptorProto::MergePartialFromCodedStream( void FileDescriptorProto::SerializeWithCachedSizes( ::google::protobuf::io::CodedOutputStream* output) const { // optional string name = 1; - if (_has_bit(0)) { + if (has_name()) { ::google::protobuf::internal::WireFormat::VerifyUTF8String( this->name().data(), this->name().length(), ::google::protobuf::internal::WireFormat::SERIALIZE); ::google::protobuf::internal::WireFormatLite::WriteString( 1, this->name(), output); } - + // optional string package = 2; - if (_has_bit(1)) { + if (has_package()) { ::google::protobuf::internal::WireFormat::VerifyUTF8String( this->package().data(), this->package().length(), ::google::protobuf::internal::WireFormat::SERIALIZE); ::google::protobuf::internal::WireFormatLite::WriteString( 2, this->package(), output); } - + // repeated string dependency = 3; for (int i = 0; i < this->dependency_size(); i++) { ::google::protobuf::internal::WireFormat::VerifyUTF8String( @@ -1125,37 +1273,55 @@ void FileDescriptorProto::SerializeWithCachedSizes( ::google::protobuf::internal::WireFormatLite::WriteString( 3, this->dependency(i), output); } - + // repeated .google.protobuf.DescriptorProto message_type = 4; for (int i = 0; i < this->message_type_size(); i++) { ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray( 4, this->message_type(i), output); } - + // repeated .google.protobuf.EnumDescriptorProto enum_type = 5; for (int i = 0; i < this->enum_type_size(); i++) { ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray( 5, this->enum_type(i), output); } - + // repeated .google.protobuf.ServiceDescriptorProto service = 6; for (int i = 0; i < this->service_size(); i++) { ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray( 6, this->service(i), output); } - + // repeated .google.protobuf.FieldDescriptorProto extension = 7; for (int i = 0; i < this->extension_size(); i++) { ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray( 7, this->extension(i), output); } - + // optional .google.protobuf.FileOptions options = 8; - if (_has_bit(7)) { + if (has_options()) { ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray( 8, this->options(), output); } - + + // optional .google.protobuf.SourceCodeInfo source_code_info = 9; + if (has_source_code_info()) { + ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray( + 9, this->source_code_info(), output); + } + + // repeated int32 public_dependency = 10; + for (int i = 0; i < this->public_dependency_size(); i++) { + ::google::protobuf::internal::WireFormatLite::WriteInt32( + 10, this->public_dependency(i), output); + } + + // repeated int32 weak_dependency = 11; + for (int i = 0; i < this->weak_dependency_size(); i++) { + ::google::protobuf::internal::WireFormatLite::WriteInt32( + 11, this->weak_dependency(i), output); + } + if (!unknown_fields().empty()) { ::google::protobuf::internal::WireFormat::SerializeUnknownFields( unknown_fields(), output); @@ -1165,7 +1331,7 @@ void FileDescriptorProto::SerializeWithCachedSizes( ::google::protobuf::uint8* FileDescriptorProto::SerializeWithCachedSizesToArray( ::google::protobuf::uint8* target) const { // optional string name = 1; - if (_has_bit(0)) { + if (has_name()) { ::google::protobuf::internal::WireFormat::VerifyUTF8String( this->name().data(), this->name().length(), ::google::protobuf::internal::WireFormat::SERIALIZE); @@ -1173,9 +1339,9 @@ void FileDescriptorProto::SerializeWithCachedSizes( ::google::protobuf::internal::WireFormatLite::WriteStringToArray( 1, this->name(), target); } - + // optional string package = 2; - if (_has_bit(1)) { + if (has_package()) { ::google::protobuf::internal::WireFormat::VerifyUTF8String( this->package().data(), this->package().length(), ::google::protobuf::internal::WireFormat::SERIALIZE); @@ -1183,7 +1349,7 @@ void FileDescriptorProto::SerializeWithCachedSizes( ::google::protobuf::internal::WireFormatLite::WriteStringToArray( 2, this->package(), target); } - + // repeated string dependency = 3; for (int i = 0; i < this->dependency_size(); i++) { ::google::protobuf::internal::WireFormat::VerifyUTF8String( @@ -1192,42 +1358,61 @@ void FileDescriptorProto::SerializeWithCachedSizes( target = ::google::protobuf::internal::WireFormatLite:: WriteStringToArray(3, this->dependency(i), target); } - + // repeated .google.protobuf.DescriptorProto message_type = 4; for (int i = 0; i < this->message_type_size(); i++) { target = ::google::protobuf::internal::WireFormatLite:: WriteMessageNoVirtualToArray( 4, this->message_type(i), target); } - + // repeated .google.protobuf.EnumDescriptorProto enum_type = 5; for (int i = 0; i < this->enum_type_size(); i++) { target = ::google::protobuf::internal::WireFormatLite:: WriteMessageNoVirtualToArray( 5, this->enum_type(i), target); } - + // repeated .google.protobuf.ServiceDescriptorProto service = 6; for (int i = 0; i < this->service_size(); i++) { target = ::google::protobuf::internal::WireFormatLite:: WriteMessageNoVirtualToArray( 6, this->service(i), target); } - + // repeated .google.protobuf.FieldDescriptorProto extension = 7; for (int i = 0; i < this->extension_size(); i++) { target = ::google::protobuf::internal::WireFormatLite:: WriteMessageNoVirtualToArray( 7, this->extension(i), target); } - + // optional .google.protobuf.FileOptions options = 8; - if (_has_bit(7)) { + if (has_options()) { target = ::google::protobuf::internal::WireFormatLite:: WriteMessageNoVirtualToArray( 8, this->options(), target); } - + + // optional .google.protobuf.SourceCodeInfo source_code_info = 9; + if (has_source_code_info()) { + target = ::google::protobuf::internal::WireFormatLite:: + WriteMessageNoVirtualToArray( + 9, this->source_code_info(), target); + } + + // repeated int32 public_dependency = 10; + for (int i = 0; i < this->public_dependency_size(); i++) { + target = ::google::protobuf::internal::WireFormatLite:: + WriteInt32ToArray(10, this->public_dependency(i), target); + } + + // repeated int32 weak_dependency = 11; + for (int i = 0; i < this->weak_dependency_size(); i++) { + target = ::google::protobuf::internal::WireFormatLite:: + WriteInt32ToArray(11, this->weak_dependency(i), target); + } + if (!unknown_fields().empty()) { target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray( unknown_fields(), target); @@ -1237,7 +1422,7 @@ void FileDescriptorProto::SerializeWithCachedSizes( int FileDescriptorProto::ByteSize() const { int total_size = 0; - + if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) { // optional string name = 1; if (has_name()) { @@ -1245,21 +1430,30 @@ int FileDescriptorProto::ByteSize() const { ::google::protobuf::internal::WireFormatLite::StringSize( this->name()); } - + // optional string package = 2; if (has_package()) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::StringSize( this->package()); } - + + } + if (_has_bits_[9 / 32] & (0xffu << (9 % 32))) { // optional .google.protobuf.FileOptions options = 8; if (has_options()) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::MessageSizeNoVirtual( this->options()); } - + + // optional .google.protobuf.SourceCodeInfo source_code_info = 9; + if (has_source_code_info()) { + total_size += 1 + + ::google::protobuf::internal::WireFormatLite::MessageSizeNoVirtual( + this->source_code_info()); + } + } // repeated string dependency = 3; total_size += 1 * this->dependency_size(); @@ -1267,7 +1461,27 @@ int FileDescriptorProto::ByteSize() const { total_size += ::google::protobuf::internal::WireFormatLite::StringSize( this->dependency(i)); } - + + // repeated int32 public_dependency = 10; + { + int data_size = 0; + for (int i = 0; i < this->public_dependency_size(); i++) { + data_size += ::google::protobuf::internal::WireFormatLite:: + Int32Size(this->public_dependency(i)); + } + total_size += 1 * this->public_dependency_size() + data_size; + } + + // repeated int32 weak_dependency = 11; + { + int data_size = 0; + for (int i = 0; i < this->weak_dependency_size(); i++) { + data_size += ::google::protobuf::internal::WireFormatLite:: + Int32Size(this->weak_dependency(i)); + } + total_size += 1 * this->weak_dependency_size() + data_size; + } + // repeated .google.protobuf.DescriptorProto message_type = 4; total_size += 1 * this->message_type_size(); for (int i = 0; i < this->message_type_size(); i++) { @@ -1275,7 +1489,7 @@ int FileDescriptorProto::ByteSize() const { ::google::protobuf::internal::WireFormatLite::MessageSizeNoVirtual( this->message_type(i)); } - + // repeated .google.protobuf.EnumDescriptorProto enum_type = 5; total_size += 1 * this->enum_type_size(); for (int i = 0; i < this->enum_type_size(); i++) { @@ -1283,7 +1497,7 @@ int FileDescriptorProto::ByteSize() const { ::google::protobuf::internal::WireFormatLite::MessageSizeNoVirtual( this->enum_type(i)); } - + // repeated .google.protobuf.ServiceDescriptorProto service = 6; total_size += 1 * this->service_size(); for (int i = 0; i < this->service_size(); i++) { @@ -1291,7 +1505,7 @@ int FileDescriptorProto::ByteSize() const { ::google::protobuf::internal::WireFormatLite::MessageSizeNoVirtual( this->service(i)); } - + // repeated .google.protobuf.FieldDescriptorProto extension = 7; total_size += 1 * this->extension_size(); for (int i = 0; i < this->extension_size(); i++) { @@ -1299,7 +1513,7 @@ int FileDescriptorProto::ByteSize() const { ::google::protobuf::internal::WireFormatLite::MessageSizeNoVirtual( this->extension(i)); } - + if (!unknown_fields().empty()) { total_size += ::google::protobuf::internal::WireFormat::ComputeUnknownFieldsSize( @@ -1326,20 +1540,27 @@ void FileDescriptorProto::MergeFrom(const ::google::protobuf::Message& from) { void FileDescriptorProto::MergeFrom(const FileDescriptorProto& from) { GOOGLE_CHECK_NE(&from, this); dependency_.MergeFrom(from.dependency_); + public_dependency_.MergeFrom(from.public_dependency_); + weak_dependency_.MergeFrom(from.weak_dependency_); message_type_.MergeFrom(from.message_type_); enum_type_.MergeFrom(from.enum_type_); service_.MergeFrom(from.service_); extension_.MergeFrom(from.extension_); if (from._has_bits_[0 / 32] & (0xffu << (0 % 32))) { - if (from._has_bit(0)) { + if (from.has_name()) { set_name(from.name()); } - if (from._has_bit(1)) { + if (from.has_package()) { set_package(from.package()); } - if (from._has_bit(7)) { + } + if (from._has_bits_[9 / 32] & (0xffu << (9 % 32))) { + if (from.has_options()) { mutable_options()->::google::protobuf::FileOptions::MergeFrom(from.options()); } + if (from.has_source_code_info()) { + mutable_source_code_info()->::google::protobuf::SourceCodeInfo::MergeFrom(from.source_code_info()); + } } mutable_unknown_fields()->MergeFrom(from.unknown_fields()); } @@ -1357,7 +1578,7 @@ void FileDescriptorProto::CopyFrom(const FileDescriptorProto& from) { } bool FileDescriptorProto::IsInitialized() const { - + for (int i = 0; i < message_type_size(); i++) { if (!this->message_type(i).IsInitialized()) return false; } @@ -1381,11 +1602,14 @@ void FileDescriptorProto::Swap(FileDescriptorProto* other) { std::swap(name_, other->name_); std::swap(package_, other->package_); dependency_.Swap(&other->dependency_); + public_dependency_.Swap(&other->public_dependency_); + weak_dependency_.Swap(&other->weak_dependency_); message_type_.Swap(&other->message_type_); enum_type_.Swap(&other->enum_type_); service_.Swap(&other->service_); extension_.Swap(&other->extension_); std::swap(options_, other->options_); + std::swap(source_code_info_, other->source_code_info_); std::swap(_has_bits_[0], other->_has_bits_[0]); _unknown_fields_.Swap(&other->_unknown_fields_); std::swap(_cached_size_, other->_cached_size_); @@ -1449,7 +1673,8 @@ const ::google::protobuf::Descriptor* DescriptorProto_ExtensionRange::descriptor } const DescriptorProto_ExtensionRange& DescriptorProto_ExtensionRange::default_instance() { - if (default_instance_ == NULL) protobuf_AddDesc_google_2fprotobuf_2fdescriptor_2eproto(); return *default_instance_; + if (default_instance_ == NULL) protobuf_AddDesc_google_2fprotobuf_2fdescriptor_2eproto(); + return *default_instance_; } DescriptorProto_ExtensionRange* DescriptorProto_ExtensionRange::default_instance_ = NULL; @@ -1480,14 +1705,14 @@ bool DescriptorProto_ExtensionRange::MergePartialFromCodedStream( DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive< ::google::protobuf::int32, ::google::protobuf::internal::WireFormatLite::TYPE_INT32>( input, &start_))); - _set_bit(0); + set_has_start(); } else { goto handle_uninterpreted; } if (input->ExpectTag(16)) goto parse_end; break; } - + // optional int32 end = 2; case 2: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -1496,14 +1721,14 @@ bool DescriptorProto_ExtensionRange::MergePartialFromCodedStream( DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive< ::google::protobuf::int32, ::google::protobuf::internal::WireFormatLite::TYPE_INT32>( input, &end_))); - _set_bit(1); + set_has_end(); } else { goto handle_uninterpreted; } if (input->ExpectAtEnd()) return true; break; } - + default: { handle_uninterpreted: if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -1523,15 +1748,15 @@ bool DescriptorProto_ExtensionRange::MergePartialFromCodedStream( void DescriptorProto_ExtensionRange::SerializeWithCachedSizes( ::google::protobuf::io::CodedOutputStream* output) const { // optional int32 start = 1; - if (_has_bit(0)) { + if (has_start()) { ::google::protobuf::internal::WireFormatLite::WriteInt32(1, this->start(), output); } - + // optional int32 end = 2; - if (_has_bit(1)) { + if (has_end()) { ::google::protobuf::internal::WireFormatLite::WriteInt32(2, this->end(), output); } - + if (!unknown_fields().empty()) { ::google::protobuf::internal::WireFormat::SerializeUnknownFields( unknown_fields(), output); @@ -1541,15 +1766,15 @@ void DescriptorProto_ExtensionRange::SerializeWithCachedSizes( ::google::protobuf::uint8* DescriptorProto_ExtensionRange::SerializeWithCachedSizesToArray( ::google::protobuf::uint8* target) const { // optional int32 start = 1; - if (_has_bit(0)) { + if (has_start()) { target = ::google::protobuf::internal::WireFormatLite::WriteInt32ToArray(1, this->start(), target); } - + // optional int32 end = 2; - if (_has_bit(1)) { + if (has_end()) { target = ::google::protobuf::internal::WireFormatLite::WriteInt32ToArray(2, this->end(), target); } - + if (!unknown_fields().empty()) { target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray( unknown_fields(), target); @@ -1559,7 +1784,7 @@ void DescriptorProto_ExtensionRange::SerializeWithCachedSizes( int DescriptorProto_ExtensionRange::ByteSize() const { int total_size = 0; - + if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) { // optional int32 start = 1; if (has_start()) { @@ -1567,14 +1792,14 @@ int DescriptorProto_ExtensionRange::ByteSize() const { ::google::protobuf::internal::WireFormatLite::Int32Size( this->start()); } - + // optional int32 end = 2; if (has_end()) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::Int32Size( this->end()); } - + } if (!unknown_fields().empty()) { total_size += @@ -1602,10 +1827,10 @@ void DescriptorProto_ExtensionRange::MergeFrom(const ::google::protobuf::Message void DescriptorProto_ExtensionRange::MergeFrom(const DescriptorProto_ExtensionRange& from) { GOOGLE_CHECK_NE(&from, this); if (from._has_bits_[0 / 32] & (0xffu << (0 % 32))) { - if (from._has_bit(0)) { + if (from.has_start()) { set_start(from.start()); } - if (from._has_bit(1)) { + if (from.has_end()) { set_end(from.end()); } } @@ -1625,7 +1850,7 @@ void DescriptorProto_ExtensionRange::CopyFrom(const DescriptorProto_ExtensionRan } bool DescriptorProto_ExtensionRange::IsInitialized() const { - + return true; } @@ -1650,7 +1875,6 @@ void DescriptorProto_ExtensionRange::Swap(DescriptorProto_ExtensionRange* other) // ------------------------------------------------------------------- -const ::std::string DescriptorProto::_default_name_; #ifndef _MSC_VER const int DescriptorProto::kNameFieldNumber; const int DescriptorProto::kFieldFieldNumber; @@ -1678,7 +1902,7 @@ DescriptorProto::DescriptorProto(const DescriptorProto& from) void DescriptorProto::SharedCtor() { _cached_size_ = 0; - name_ = const_cast< ::std::string*>(&_default_name_); + name_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); options_ = NULL; ::memset(_has_bits_, 0, sizeof(_has_bits_)); } @@ -1688,7 +1912,7 @@ DescriptorProto::~DescriptorProto() { } void DescriptorProto::SharedDtor() { - if (name_ != &_default_name_) { + if (name_ != &::google::protobuf::internal::kEmptyString) { delete name_; } if (this != default_instance_) { @@ -1707,7 +1931,8 @@ const ::google::protobuf::Descriptor* DescriptorProto::descriptor() { } const DescriptorProto& DescriptorProto::default_instance() { - if (default_instance_ == NULL) protobuf_AddDesc_google_2fprotobuf_2fdescriptor_2eproto(); return *default_instance_; + if (default_instance_ == NULL) protobuf_AddDesc_google_2fprotobuf_2fdescriptor_2eproto(); + return *default_instance_; } DescriptorProto* DescriptorProto::default_instance_ = NULL; @@ -1718,12 +1943,12 @@ DescriptorProto* DescriptorProto::New() const { void DescriptorProto::Clear() { if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) { - if (_has_bit(0)) { - if (name_ != &_default_name_) { + if (has_name()) { + if (name_ != &::google::protobuf::internal::kEmptyString) { name_->clear(); } } - if (_has_bit(6)) { + if (has_options()) { if (options_ != NULL) options_->::google::protobuf::MessageOptions::Clear(); } } @@ -1757,7 +1982,7 @@ bool DescriptorProto::MergePartialFromCodedStream( if (input->ExpectTag(18)) goto parse_field; break; } - + // repeated .google.protobuf.FieldDescriptorProto field = 2; case 2: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -1772,7 +1997,7 @@ bool DescriptorProto::MergePartialFromCodedStream( if (input->ExpectTag(26)) goto parse_nested_type; break; } - + // repeated .google.protobuf.DescriptorProto nested_type = 3; case 3: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -1787,7 +2012,7 @@ bool DescriptorProto::MergePartialFromCodedStream( if (input->ExpectTag(34)) goto parse_enum_type; break; } - + // repeated .google.protobuf.EnumDescriptorProto enum_type = 4; case 4: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -1802,7 +2027,7 @@ bool DescriptorProto::MergePartialFromCodedStream( if (input->ExpectTag(42)) goto parse_extension_range; break; } - + // repeated .google.protobuf.DescriptorProto.ExtensionRange extension_range = 5; case 5: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -1817,7 +2042,7 @@ bool DescriptorProto::MergePartialFromCodedStream( if (input->ExpectTag(50)) goto parse_extension; break; } - + // repeated .google.protobuf.FieldDescriptorProto extension = 6; case 6: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -1832,7 +2057,7 @@ bool DescriptorProto::MergePartialFromCodedStream( if (input->ExpectTag(58)) goto parse_options; break; } - + // optional .google.protobuf.MessageOptions options = 7; case 7: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -1846,7 +2071,7 @@ bool DescriptorProto::MergePartialFromCodedStream( if (input->ExpectAtEnd()) return true; break; } - + default: { handle_uninterpreted: if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -1866,50 +2091,50 @@ bool DescriptorProto::MergePartialFromCodedStream( void DescriptorProto::SerializeWithCachedSizes( ::google::protobuf::io::CodedOutputStream* output) const { // optional string name = 1; - if (_has_bit(0)) { + if (has_name()) { ::google::protobuf::internal::WireFormat::VerifyUTF8String( this->name().data(), this->name().length(), ::google::protobuf::internal::WireFormat::SERIALIZE); ::google::protobuf::internal::WireFormatLite::WriteString( 1, this->name(), output); } - + // repeated .google.protobuf.FieldDescriptorProto field = 2; for (int i = 0; i < this->field_size(); i++) { ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray( 2, this->field(i), output); } - + // repeated .google.protobuf.DescriptorProto nested_type = 3; for (int i = 0; i < this->nested_type_size(); i++) { ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray( 3, this->nested_type(i), output); } - + // repeated .google.protobuf.EnumDescriptorProto enum_type = 4; for (int i = 0; i < this->enum_type_size(); i++) { ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray( 4, this->enum_type(i), output); } - + // repeated .google.protobuf.DescriptorProto.ExtensionRange extension_range = 5; for (int i = 0; i < this->extension_range_size(); i++) { ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray( 5, this->extension_range(i), output); } - + // repeated .google.protobuf.FieldDescriptorProto extension = 6; for (int i = 0; i < this->extension_size(); i++) { ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray( 6, this->extension(i), output); } - + // optional .google.protobuf.MessageOptions options = 7; - if (_has_bit(6)) { + if (has_options()) { ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray( 7, this->options(), output); } - + if (!unknown_fields().empty()) { ::google::protobuf::internal::WireFormat::SerializeUnknownFields( unknown_fields(), output); @@ -1919,7 +2144,7 @@ void DescriptorProto::SerializeWithCachedSizes( ::google::protobuf::uint8* DescriptorProto::SerializeWithCachedSizesToArray( ::google::protobuf::uint8* target) const { // optional string name = 1; - if (_has_bit(0)) { + if (has_name()) { ::google::protobuf::internal::WireFormat::VerifyUTF8String( this->name().data(), this->name().length(), ::google::protobuf::internal::WireFormat::SERIALIZE); @@ -1927,49 +2152,49 @@ void DescriptorProto::SerializeWithCachedSizes( ::google::protobuf::internal::WireFormatLite::WriteStringToArray( 1, this->name(), target); } - + // repeated .google.protobuf.FieldDescriptorProto field = 2; for (int i = 0; i < this->field_size(); i++) { target = ::google::protobuf::internal::WireFormatLite:: WriteMessageNoVirtualToArray( 2, this->field(i), target); } - + // repeated .google.protobuf.DescriptorProto nested_type = 3; for (int i = 0; i < this->nested_type_size(); i++) { target = ::google::protobuf::internal::WireFormatLite:: WriteMessageNoVirtualToArray( 3, this->nested_type(i), target); } - + // repeated .google.protobuf.EnumDescriptorProto enum_type = 4; for (int i = 0; i < this->enum_type_size(); i++) { target = ::google::protobuf::internal::WireFormatLite:: WriteMessageNoVirtualToArray( 4, this->enum_type(i), target); } - + // repeated .google.protobuf.DescriptorProto.ExtensionRange extension_range = 5; for (int i = 0; i < this->extension_range_size(); i++) { target = ::google::protobuf::internal::WireFormatLite:: WriteMessageNoVirtualToArray( 5, this->extension_range(i), target); } - + // repeated .google.protobuf.FieldDescriptorProto extension = 6; for (int i = 0; i < this->extension_size(); i++) { target = ::google::protobuf::internal::WireFormatLite:: WriteMessageNoVirtualToArray( 6, this->extension(i), target); } - + // optional .google.protobuf.MessageOptions options = 7; - if (_has_bit(6)) { + if (has_options()) { target = ::google::protobuf::internal::WireFormatLite:: WriteMessageNoVirtualToArray( 7, this->options(), target); } - + if (!unknown_fields().empty()) { target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray( unknown_fields(), target); @@ -1979,7 +2204,7 @@ void DescriptorProto::SerializeWithCachedSizes( int DescriptorProto::ByteSize() const { int total_size = 0; - + if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) { // optional string name = 1; if (has_name()) { @@ -1987,14 +2212,14 @@ int DescriptorProto::ByteSize() const { ::google::protobuf::internal::WireFormatLite::StringSize( this->name()); } - + // optional .google.protobuf.MessageOptions options = 7; if (has_options()) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::MessageSizeNoVirtual( this->options()); } - + } // repeated .google.protobuf.FieldDescriptorProto field = 2; total_size += 1 * this->field_size(); @@ -2003,7 +2228,7 @@ int DescriptorProto::ByteSize() const { ::google::protobuf::internal::WireFormatLite::MessageSizeNoVirtual( this->field(i)); } - + // repeated .google.protobuf.FieldDescriptorProto extension = 6; total_size += 1 * this->extension_size(); for (int i = 0; i < this->extension_size(); i++) { @@ -2011,7 +2236,7 @@ int DescriptorProto::ByteSize() const { ::google::protobuf::internal::WireFormatLite::MessageSizeNoVirtual( this->extension(i)); } - + // repeated .google.protobuf.DescriptorProto nested_type = 3; total_size += 1 * this->nested_type_size(); for (int i = 0; i < this->nested_type_size(); i++) { @@ -2019,7 +2244,7 @@ int DescriptorProto::ByteSize() const { ::google::protobuf::internal::WireFormatLite::MessageSizeNoVirtual( this->nested_type(i)); } - + // repeated .google.protobuf.EnumDescriptorProto enum_type = 4; total_size += 1 * this->enum_type_size(); for (int i = 0; i < this->enum_type_size(); i++) { @@ -2027,7 +2252,7 @@ int DescriptorProto::ByteSize() const { ::google::protobuf::internal::WireFormatLite::MessageSizeNoVirtual( this->enum_type(i)); } - + // repeated .google.protobuf.DescriptorProto.ExtensionRange extension_range = 5; total_size += 1 * this->extension_range_size(); for (int i = 0; i < this->extension_range_size(); i++) { @@ -2035,7 +2260,7 @@ int DescriptorProto::ByteSize() const { ::google::protobuf::internal::WireFormatLite::MessageSizeNoVirtual( this->extension_range(i)); } - + if (!unknown_fields().empty()) { total_size += ::google::protobuf::internal::WireFormat::ComputeUnknownFieldsSize( @@ -2067,10 +2292,10 @@ void DescriptorProto::MergeFrom(const DescriptorProto& from) { enum_type_.MergeFrom(from.enum_type_); extension_range_.MergeFrom(from.extension_range_); if (from._has_bits_[0 / 32] & (0xffu << (0 % 32))) { - if (from._has_bit(0)) { + if (from.has_name()) { set_name(from.name()); } - if (from._has_bit(6)) { + if (from.has_options()) { mutable_options()->::google::protobuf::MessageOptions::MergeFrom(from.options()); } } @@ -2090,7 +2315,7 @@ void DescriptorProto::CopyFrom(const DescriptorProto& from) { } bool DescriptorProto::IsInitialized() const { - + for (int i = 0; i < field_size(); i++) { if (!this->field(i).IsInitialized()) return false; } @@ -2211,10 +2436,6 @@ const FieldDescriptorProto_Label FieldDescriptorProto::Label_MIN; const FieldDescriptorProto_Label FieldDescriptorProto::Label_MAX; const int FieldDescriptorProto::Label_ARRAYSIZE; #endif // _MSC_VER -const ::std::string FieldDescriptorProto::_default_name_; -const ::std::string FieldDescriptorProto::_default_type_name_; -const ::std::string FieldDescriptorProto::_default_extendee_; -const ::std::string FieldDescriptorProto::_default_default_value_; #ifndef _MSC_VER const int FieldDescriptorProto::kNameFieldNumber; const int FieldDescriptorProto::kNumberFieldNumber; @@ -2243,13 +2464,13 @@ FieldDescriptorProto::FieldDescriptorProto(const FieldDescriptorProto& from) void FieldDescriptorProto::SharedCtor() { _cached_size_ = 0; - name_ = const_cast< ::std::string*>(&_default_name_); + name_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); number_ = 0; label_ = 1; type_ = 1; - type_name_ = const_cast< ::std::string*>(&_default_type_name_); - extendee_ = const_cast< ::std::string*>(&_default_extendee_); - default_value_ = const_cast< ::std::string*>(&_default_default_value_); + type_name_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + extendee_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + default_value_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); options_ = NULL; ::memset(_has_bits_, 0, sizeof(_has_bits_)); } @@ -2259,16 +2480,16 @@ FieldDescriptorProto::~FieldDescriptorProto() { } void FieldDescriptorProto::SharedDtor() { - if (name_ != &_default_name_) { + if (name_ != &::google::protobuf::internal::kEmptyString) { delete name_; } - if (type_name_ != &_default_type_name_) { + if (type_name_ != &::google::protobuf::internal::kEmptyString) { delete type_name_; } - if (extendee_ != &_default_extendee_) { + if (extendee_ != &::google::protobuf::internal::kEmptyString) { delete extendee_; } - if (default_value_ != &_default_default_value_) { + if (default_value_ != &::google::protobuf::internal::kEmptyString) { delete default_value_; } if (this != default_instance_) { @@ -2287,7 +2508,8 @@ const ::google::protobuf::Descriptor* FieldDescriptorProto::descriptor() { } const FieldDescriptorProto& FieldDescriptorProto::default_instance() { - if (default_instance_ == NULL) protobuf_AddDesc_google_2fprotobuf_2fdescriptor_2eproto(); return *default_instance_; + if (default_instance_ == NULL) protobuf_AddDesc_google_2fprotobuf_2fdescriptor_2eproto(); + return *default_instance_; } FieldDescriptorProto* FieldDescriptorProto::default_instance_ = NULL; @@ -2298,30 +2520,30 @@ FieldDescriptorProto* FieldDescriptorProto::New() const { void FieldDescriptorProto::Clear() { if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) { - if (_has_bit(0)) { - if (name_ != &_default_name_) { + if (has_name()) { + if (name_ != &::google::protobuf::internal::kEmptyString) { name_->clear(); } } number_ = 0; label_ = 1; type_ = 1; - if (_has_bit(4)) { - if (type_name_ != &_default_type_name_) { + if (has_type_name()) { + if (type_name_ != &::google::protobuf::internal::kEmptyString) { type_name_->clear(); } } - if (_has_bit(5)) { - if (extendee_ != &_default_extendee_) { + if (has_extendee()) { + if (extendee_ != &::google::protobuf::internal::kEmptyString) { extendee_->clear(); } } - if (_has_bit(6)) { - if (default_value_ != &_default_default_value_) { + if (has_default_value()) { + if (default_value_ != &::google::protobuf::internal::kEmptyString) { default_value_->clear(); } } - if (_has_bit(7)) { + if (has_options()) { if (options_ != NULL) options_->::google::protobuf::FieldOptions::Clear(); } } @@ -2350,7 +2572,7 @@ bool FieldDescriptorProto::MergePartialFromCodedStream( if (input->ExpectTag(18)) goto parse_extendee; break; } - + // optional string extendee = 2; case 2: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -2367,7 +2589,7 @@ bool FieldDescriptorProto::MergePartialFromCodedStream( if (input->ExpectTag(24)) goto parse_number; break; } - + // optional int32 number = 3; case 3: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -2376,14 +2598,14 @@ bool FieldDescriptorProto::MergePartialFromCodedStream( DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive< ::google::protobuf::int32, ::google::protobuf::internal::WireFormatLite::TYPE_INT32>( input, &number_))); - _set_bit(1); + set_has_number(); } else { goto handle_uninterpreted; } if (input->ExpectTag(32)) goto parse_label; break; } - + // optional .google.protobuf.FieldDescriptorProto.Label label = 4; case 4: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -2404,7 +2626,7 @@ bool FieldDescriptorProto::MergePartialFromCodedStream( if (input->ExpectTag(40)) goto parse_type; break; } - + // optional .google.protobuf.FieldDescriptorProto.Type type = 5; case 5: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -2425,7 +2647,7 @@ bool FieldDescriptorProto::MergePartialFromCodedStream( if (input->ExpectTag(50)) goto parse_type_name; break; } - + // optional string type_name = 6; case 6: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -2442,7 +2664,7 @@ bool FieldDescriptorProto::MergePartialFromCodedStream( if (input->ExpectTag(58)) goto parse_default_value; break; } - + // optional string default_value = 7; case 7: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -2459,7 +2681,7 @@ bool FieldDescriptorProto::MergePartialFromCodedStream( if (input->ExpectTag(66)) goto parse_options; break; } - + // optional .google.protobuf.FieldOptions options = 8; case 8: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -2473,7 +2695,7 @@ bool FieldDescriptorProto::MergePartialFromCodedStream( if (input->ExpectAtEnd()) return true; break; } - + default: { handle_uninterpreted: if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -2493,64 +2715,64 @@ bool FieldDescriptorProto::MergePartialFromCodedStream( void FieldDescriptorProto::SerializeWithCachedSizes( ::google::protobuf::io::CodedOutputStream* output) const { // optional string name = 1; - if (_has_bit(0)) { + if (has_name()) { ::google::protobuf::internal::WireFormat::VerifyUTF8String( this->name().data(), this->name().length(), ::google::protobuf::internal::WireFormat::SERIALIZE); ::google::protobuf::internal::WireFormatLite::WriteString( 1, this->name(), output); } - + // optional string extendee = 2; - if (_has_bit(5)) { + if (has_extendee()) { ::google::protobuf::internal::WireFormat::VerifyUTF8String( this->extendee().data(), this->extendee().length(), ::google::protobuf::internal::WireFormat::SERIALIZE); ::google::protobuf::internal::WireFormatLite::WriteString( 2, this->extendee(), output); } - + // optional int32 number = 3; - if (_has_bit(1)) { + if (has_number()) { ::google::protobuf::internal::WireFormatLite::WriteInt32(3, this->number(), output); } - + // optional .google.protobuf.FieldDescriptorProto.Label label = 4; - if (_has_bit(2)) { + if (has_label()) { ::google::protobuf::internal::WireFormatLite::WriteEnum( 4, this->label(), output); } - + // optional .google.protobuf.FieldDescriptorProto.Type type = 5; - if (_has_bit(3)) { + if (has_type()) { ::google::protobuf::internal::WireFormatLite::WriteEnum( 5, this->type(), output); } - + // optional string type_name = 6; - if (_has_bit(4)) { + if (has_type_name()) { ::google::protobuf::internal::WireFormat::VerifyUTF8String( this->type_name().data(), this->type_name().length(), ::google::protobuf::internal::WireFormat::SERIALIZE); ::google::protobuf::internal::WireFormatLite::WriteString( 6, this->type_name(), output); } - + // optional string default_value = 7; - if (_has_bit(6)) { + if (has_default_value()) { ::google::protobuf::internal::WireFormat::VerifyUTF8String( this->default_value().data(), this->default_value().length(), ::google::protobuf::internal::WireFormat::SERIALIZE); ::google::protobuf::internal::WireFormatLite::WriteString( 7, this->default_value(), output); } - + // optional .google.protobuf.FieldOptions options = 8; - if (_has_bit(7)) { + if (has_options()) { ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray( 8, this->options(), output); } - + if (!unknown_fields().empty()) { ::google::protobuf::internal::WireFormat::SerializeUnknownFields( unknown_fields(), output); @@ -2560,7 +2782,7 @@ void FieldDescriptorProto::SerializeWithCachedSizes( ::google::protobuf::uint8* FieldDescriptorProto::SerializeWithCachedSizesToArray( ::google::protobuf::uint8* target) const { // optional string name = 1; - if (_has_bit(0)) { + if (has_name()) { ::google::protobuf::internal::WireFormat::VerifyUTF8String( this->name().data(), this->name().length(), ::google::protobuf::internal::WireFormat::SERIALIZE); @@ -2568,9 +2790,9 @@ void FieldDescriptorProto::SerializeWithCachedSizes( ::google::protobuf::internal::WireFormatLite::WriteStringToArray( 1, this->name(), target); } - + // optional string extendee = 2; - if (_has_bit(5)) { + if (has_extendee()) { ::google::protobuf::internal::WireFormat::VerifyUTF8String( this->extendee().data(), this->extendee().length(), ::google::protobuf::internal::WireFormat::SERIALIZE); @@ -2578,26 +2800,26 @@ void FieldDescriptorProto::SerializeWithCachedSizes( ::google::protobuf::internal::WireFormatLite::WriteStringToArray( 2, this->extendee(), target); } - + // optional int32 number = 3; - if (_has_bit(1)) { + if (has_number()) { target = ::google::protobuf::internal::WireFormatLite::WriteInt32ToArray(3, this->number(), target); } - + // optional .google.protobuf.FieldDescriptorProto.Label label = 4; - if (_has_bit(2)) { + if (has_label()) { target = ::google::protobuf::internal::WireFormatLite::WriteEnumToArray( 4, this->label(), target); } - + // optional .google.protobuf.FieldDescriptorProto.Type type = 5; - if (_has_bit(3)) { + if (has_type()) { target = ::google::protobuf::internal::WireFormatLite::WriteEnumToArray( 5, this->type(), target); } - + // optional string type_name = 6; - if (_has_bit(4)) { + if (has_type_name()) { ::google::protobuf::internal::WireFormat::VerifyUTF8String( this->type_name().data(), this->type_name().length(), ::google::protobuf::internal::WireFormat::SERIALIZE); @@ -2605,9 +2827,9 @@ void FieldDescriptorProto::SerializeWithCachedSizes( ::google::protobuf::internal::WireFormatLite::WriteStringToArray( 6, this->type_name(), target); } - + // optional string default_value = 7; - if (_has_bit(6)) { + if (has_default_value()) { ::google::protobuf::internal::WireFormat::VerifyUTF8String( this->default_value().data(), this->default_value().length(), ::google::protobuf::internal::WireFormat::SERIALIZE); @@ -2615,14 +2837,14 @@ void FieldDescriptorProto::SerializeWithCachedSizes( ::google::protobuf::internal::WireFormatLite::WriteStringToArray( 7, this->default_value(), target); } - + // optional .google.protobuf.FieldOptions options = 8; - if (_has_bit(7)) { + if (has_options()) { target = ::google::protobuf::internal::WireFormatLite:: WriteMessageNoVirtualToArray( 8, this->options(), target); } - + if (!unknown_fields().empty()) { target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray( unknown_fields(), target); @@ -2632,7 +2854,7 @@ void FieldDescriptorProto::SerializeWithCachedSizes( int FieldDescriptorProto::ByteSize() const { int total_size = 0; - + if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) { // optional string name = 1; if (has_name()) { @@ -2640,54 +2862,54 @@ int FieldDescriptorProto::ByteSize() const { ::google::protobuf::internal::WireFormatLite::StringSize( this->name()); } - + // optional int32 number = 3; if (has_number()) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::Int32Size( this->number()); } - + // optional .google.protobuf.FieldDescriptorProto.Label label = 4; if (has_label()) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::EnumSize(this->label()); } - + // optional .google.protobuf.FieldDescriptorProto.Type type = 5; if (has_type()) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::EnumSize(this->type()); } - + // optional string type_name = 6; if (has_type_name()) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::StringSize( this->type_name()); } - + // optional string extendee = 2; if (has_extendee()) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::StringSize( this->extendee()); } - + // optional string default_value = 7; if (has_default_value()) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::StringSize( this->default_value()); } - + // optional .google.protobuf.FieldOptions options = 8; if (has_options()) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::MessageSizeNoVirtual( this->options()); } - + } if (!unknown_fields().empty()) { total_size += @@ -2715,28 +2937,28 @@ void FieldDescriptorProto::MergeFrom(const ::google::protobuf::Message& from) { void FieldDescriptorProto::MergeFrom(const FieldDescriptorProto& from) { GOOGLE_CHECK_NE(&from, this); if (from._has_bits_[0 / 32] & (0xffu << (0 % 32))) { - if (from._has_bit(0)) { + if (from.has_name()) { set_name(from.name()); } - if (from._has_bit(1)) { + if (from.has_number()) { set_number(from.number()); } - if (from._has_bit(2)) { + if (from.has_label()) { set_label(from.label()); } - if (from._has_bit(3)) { + if (from.has_type()) { set_type(from.type()); } - if (from._has_bit(4)) { + if (from.has_type_name()) { set_type_name(from.type_name()); } - if (from._has_bit(5)) { + if (from.has_extendee()) { set_extendee(from.extendee()); } - if (from._has_bit(6)) { + if (from.has_default_value()) { set_default_value(from.default_value()); } - if (from._has_bit(7)) { + if (from.has_options()) { mutable_options()->::google::protobuf::FieldOptions::MergeFrom(from.options()); } } @@ -2756,7 +2978,7 @@ void FieldDescriptorProto::CopyFrom(const FieldDescriptorProto& from) { } bool FieldDescriptorProto::IsInitialized() const { - + if (has_options()) { if (!this->options().IsInitialized()) return false; } @@ -2790,7 +3012,6 @@ void FieldDescriptorProto::Swap(FieldDescriptorProto* other) { // =================================================================== -const ::std::string EnumDescriptorProto::_default_name_; #ifndef _MSC_VER const int EnumDescriptorProto::kNameFieldNumber; const int EnumDescriptorProto::kValueFieldNumber; @@ -2814,7 +3035,7 @@ EnumDescriptorProto::EnumDescriptorProto(const EnumDescriptorProto& from) void EnumDescriptorProto::SharedCtor() { _cached_size_ = 0; - name_ = const_cast< ::std::string*>(&_default_name_); + name_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); options_ = NULL; ::memset(_has_bits_, 0, sizeof(_has_bits_)); } @@ -2824,7 +3045,7 @@ EnumDescriptorProto::~EnumDescriptorProto() { } void EnumDescriptorProto::SharedDtor() { - if (name_ != &_default_name_) { + if (name_ != &::google::protobuf::internal::kEmptyString) { delete name_; } if (this != default_instance_) { @@ -2843,7 +3064,8 @@ const ::google::protobuf::Descriptor* EnumDescriptorProto::descriptor() { } const EnumDescriptorProto& EnumDescriptorProto::default_instance() { - if (default_instance_ == NULL) protobuf_AddDesc_google_2fprotobuf_2fdescriptor_2eproto(); return *default_instance_; + if (default_instance_ == NULL) protobuf_AddDesc_google_2fprotobuf_2fdescriptor_2eproto(); + return *default_instance_; } EnumDescriptorProto* EnumDescriptorProto::default_instance_ = NULL; @@ -2854,12 +3076,12 @@ EnumDescriptorProto* EnumDescriptorProto::New() const { void EnumDescriptorProto::Clear() { if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) { - if (_has_bit(0)) { - if (name_ != &_default_name_) { + if (has_name()) { + if (name_ != &::google::protobuf::internal::kEmptyString) { name_->clear(); } } - if (_has_bit(2)) { + if (has_options()) { if (options_ != NULL) options_->::google::protobuf::EnumOptions::Clear(); } } @@ -2889,7 +3111,7 @@ bool EnumDescriptorProto::MergePartialFromCodedStream( if (input->ExpectTag(18)) goto parse_value; break; } - + // repeated .google.protobuf.EnumValueDescriptorProto value = 2; case 2: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -2904,7 +3126,7 @@ bool EnumDescriptorProto::MergePartialFromCodedStream( if (input->ExpectTag(26)) goto parse_options; break; } - + // optional .google.protobuf.EnumOptions options = 3; case 3: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -2918,7 +3140,7 @@ bool EnumDescriptorProto::MergePartialFromCodedStream( if (input->ExpectAtEnd()) return true; break; } - + default: { handle_uninterpreted: if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -2938,26 +3160,26 @@ bool EnumDescriptorProto::MergePartialFromCodedStream( void EnumDescriptorProto::SerializeWithCachedSizes( ::google::protobuf::io::CodedOutputStream* output) const { // optional string name = 1; - if (_has_bit(0)) { + if (has_name()) { ::google::protobuf::internal::WireFormat::VerifyUTF8String( this->name().data(), this->name().length(), ::google::protobuf::internal::WireFormat::SERIALIZE); ::google::protobuf::internal::WireFormatLite::WriteString( 1, this->name(), output); } - + // repeated .google.protobuf.EnumValueDescriptorProto value = 2; for (int i = 0; i < this->value_size(); i++) { ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray( 2, this->value(i), output); } - + // optional .google.protobuf.EnumOptions options = 3; - if (_has_bit(2)) { + if (has_options()) { ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray( 3, this->options(), output); } - + if (!unknown_fields().empty()) { ::google::protobuf::internal::WireFormat::SerializeUnknownFields( unknown_fields(), output); @@ -2967,7 +3189,7 @@ void EnumDescriptorProto::SerializeWithCachedSizes( ::google::protobuf::uint8* EnumDescriptorProto::SerializeWithCachedSizesToArray( ::google::protobuf::uint8* target) const { // optional string name = 1; - if (_has_bit(0)) { + if (has_name()) { ::google::protobuf::internal::WireFormat::VerifyUTF8String( this->name().data(), this->name().length(), ::google::protobuf::internal::WireFormat::SERIALIZE); @@ -2975,21 +3197,21 @@ void EnumDescriptorProto::SerializeWithCachedSizes( ::google::protobuf::internal::WireFormatLite::WriteStringToArray( 1, this->name(), target); } - + // repeated .google.protobuf.EnumValueDescriptorProto value = 2; for (int i = 0; i < this->value_size(); i++) { target = ::google::protobuf::internal::WireFormatLite:: WriteMessageNoVirtualToArray( 2, this->value(i), target); } - + // optional .google.protobuf.EnumOptions options = 3; - if (_has_bit(2)) { + if (has_options()) { target = ::google::protobuf::internal::WireFormatLite:: WriteMessageNoVirtualToArray( 3, this->options(), target); } - + if (!unknown_fields().empty()) { target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray( unknown_fields(), target); @@ -2999,7 +3221,7 @@ void EnumDescriptorProto::SerializeWithCachedSizes( int EnumDescriptorProto::ByteSize() const { int total_size = 0; - + if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) { // optional string name = 1; if (has_name()) { @@ -3007,14 +3229,14 @@ int EnumDescriptorProto::ByteSize() const { ::google::protobuf::internal::WireFormatLite::StringSize( this->name()); } - + // optional .google.protobuf.EnumOptions options = 3; if (has_options()) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::MessageSizeNoVirtual( this->options()); } - + } // repeated .google.protobuf.EnumValueDescriptorProto value = 2; total_size += 1 * this->value_size(); @@ -3023,7 +3245,7 @@ int EnumDescriptorProto::ByteSize() const { ::google::protobuf::internal::WireFormatLite::MessageSizeNoVirtual( this->value(i)); } - + if (!unknown_fields().empty()) { total_size += ::google::protobuf::internal::WireFormat::ComputeUnknownFieldsSize( @@ -3051,10 +3273,10 @@ void EnumDescriptorProto::MergeFrom(const EnumDescriptorProto& from) { GOOGLE_CHECK_NE(&from, this); value_.MergeFrom(from.value_); if (from._has_bits_[0 / 32] & (0xffu << (0 % 32))) { - if (from._has_bit(0)) { + if (from.has_name()) { set_name(from.name()); } - if (from._has_bit(2)) { + if (from.has_options()) { mutable_options()->::google::protobuf::EnumOptions::MergeFrom(from.options()); } } @@ -3074,7 +3296,7 @@ void EnumDescriptorProto::CopyFrom(const EnumDescriptorProto& from) { } bool EnumDescriptorProto::IsInitialized() const { - + for (int i = 0; i < value_size(); i++) { if (!this->value(i).IsInitialized()) return false; } @@ -3106,7 +3328,6 @@ void EnumDescriptorProto::Swap(EnumDescriptorProto* other) { // =================================================================== -const ::std::string EnumValueDescriptorProto::_default_name_; #ifndef _MSC_VER const int EnumValueDescriptorProto::kNameFieldNumber; const int EnumValueDescriptorProto::kNumberFieldNumber; @@ -3130,7 +3351,7 @@ EnumValueDescriptorProto::EnumValueDescriptorProto(const EnumValueDescriptorProt void EnumValueDescriptorProto::SharedCtor() { _cached_size_ = 0; - name_ = const_cast< ::std::string*>(&_default_name_); + name_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); number_ = 0; options_ = NULL; ::memset(_has_bits_, 0, sizeof(_has_bits_)); @@ -3141,7 +3362,7 @@ EnumValueDescriptorProto::~EnumValueDescriptorProto() { } void EnumValueDescriptorProto::SharedDtor() { - if (name_ != &_default_name_) { + if (name_ != &::google::protobuf::internal::kEmptyString) { delete name_; } if (this != default_instance_) { @@ -3160,7 +3381,8 @@ const ::google::protobuf::Descriptor* EnumValueDescriptorProto::descriptor() { } const EnumValueDescriptorProto& EnumValueDescriptorProto::default_instance() { - if (default_instance_ == NULL) protobuf_AddDesc_google_2fprotobuf_2fdescriptor_2eproto(); return *default_instance_; + if (default_instance_ == NULL) protobuf_AddDesc_google_2fprotobuf_2fdescriptor_2eproto(); + return *default_instance_; } EnumValueDescriptorProto* EnumValueDescriptorProto::default_instance_ = NULL; @@ -3171,13 +3393,13 @@ EnumValueDescriptorProto* EnumValueDescriptorProto::New() const { void EnumValueDescriptorProto::Clear() { if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) { - if (_has_bit(0)) { - if (name_ != &_default_name_) { + if (has_name()) { + if (name_ != &::google::protobuf::internal::kEmptyString) { name_->clear(); } } number_ = 0; - if (_has_bit(2)) { + if (has_options()) { if (options_ != NULL) options_->::google::protobuf::EnumValueOptions::Clear(); } } @@ -3206,7 +3428,7 @@ bool EnumValueDescriptorProto::MergePartialFromCodedStream( if (input->ExpectTag(16)) goto parse_number; break; } - + // optional int32 number = 2; case 2: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -3215,14 +3437,14 @@ bool EnumValueDescriptorProto::MergePartialFromCodedStream( DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive< ::google::protobuf::int32, ::google::protobuf::internal::WireFormatLite::TYPE_INT32>( input, &number_))); - _set_bit(1); + set_has_number(); } else { goto handle_uninterpreted; } if (input->ExpectTag(26)) goto parse_options; break; } - + // optional .google.protobuf.EnumValueOptions options = 3; case 3: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -3236,7 +3458,7 @@ bool EnumValueDescriptorProto::MergePartialFromCodedStream( if (input->ExpectAtEnd()) return true; break; } - + default: { handle_uninterpreted: if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -3256,25 +3478,25 @@ bool EnumValueDescriptorProto::MergePartialFromCodedStream( void EnumValueDescriptorProto::SerializeWithCachedSizes( ::google::protobuf::io::CodedOutputStream* output) const { // optional string name = 1; - if (_has_bit(0)) { + if (has_name()) { ::google::protobuf::internal::WireFormat::VerifyUTF8String( this->name().data(), this->name().length(), ::google::protobuf::internal::WireFormat::SERIALIZE); ::google::protobuf::internal::WireFormatLite::WriteString( 1, this->name(), output); } - + // optional int32 number = 2; - if (_has_bit(1)) { + if (has_number()) { ::google::protobuf::internal::WireFormatLite::WriteInt32(2, this->number(), output); } - + // optional .google.protobuf.EnumValueOptions options = 3; - if (_has_bit(2)) { + if (has_options()) { ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray( 3, this->options(), output); } - + if (!unknown_fields().empty()) { ::google::protobuf::internal::WireFormat::SerializeUnknownFields( unknown_fields(), output); @@ -3284,7 +3506,7 @@ void EnumValueDescriptorProto::SerializeWithCachedSizes( ::google::protobuf::uint8* EnumValueDescriptorProto::SerializeWithCachedSizesToArray( ::google::protobuf::uint8* target) const { // optional string name = 1; - if (_has_bit(0)) { + if (has_name()) { ::google::protobuf::internal::WireFormat::VerifyUTF8String( this->name().data(), this->name().length(), ::google::protobuf::internal::WireFormat::SERIALIZE); @@ -3292,19 +3514,19 @@ void EnumValueDescriptorProto::SerializeWithCachedSizes( ::google::protobuf::internal::WireFormatLite::WriteStringToArray( 1, this->name(), target); } - + // optional int32 number = 2; - if (_has_bit(1)) { + if (has_number()) { target = ::google::protobuf::internal::WireFormatLite::WriteInt32ToArray(2, this->number(), target); } - + // optional .google.protobuf.EnumValueOptions options = 3; - if (_has_bit(2)) { + if (has_options()) { target = ::google::protobuf::internal::WireFormatLite:: WriteMessageNoVirtualToArray( 3, this->options(), target); } - + if (!unknown_fields().empty()) { target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray( unknown_fields(), target); @@ -3314,7 +3536,7 @@ void EnumValueDescriptorProto::SerializeWithCachedSizes( int EnumValueDescriptorProto::ByteSize() const { int total_size = 0; - + if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) { // optional string name = 1; if (has_name()) { @@ -3322,21 +3544,21 @@ int EnumValueDescriptorProto::ByteSize() const { ::google::protobuf::internal::WireFormatLite::StringSize( this->name()); } - + // optional int32 number = 2; if (has_number()) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::Int32Size( this->number()); } - + // optional .google.protobuf.EnumValueOptions options = 3; if (has_options()) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::MessageSizeNoVirtual( this->options()); } - + } if (!unknown_fields().empty()) { total_size += @@ -3364,13 +3586,13 @@ void EnumValueDescriptorProto::MergeFrom(const ::google::protobuf::Message& from void EnumValueDescriptorProto::MergeFrom(const EnumValueDescriptorProto& from) { GOOGLE_CHECK_NE(&from, this); if (from._has_bits_[0 / 32] & (0xffu << (0 % 32))) { - if (from._has_bit(0)) { + if (from.has_name()) { set_name(from.name()); } - if (from._has_bit(1)) { + if (from.has_number()) { set_number(from.number()); } - if (from._has_bit(2)) { + if (from.has_options()) { mutable_options()->::google::protobuf::EnumValueOptions::MergeFrom(from.options()); } } @@ -3390,7 +3612,7 @@ void EnumValueDescriptorProto::CopyFrom(const EnumValueDescriptorProto& from) { } bool EnumValueDescriptorProto::IsInitialized() const { - + if (has_options()) { if (!this->options().IsInitialized()) return false; } @@ -3419,7 +3641,6 @@ void EnumValueDescriptorProto::Swap(EnumValueDescriptorProto* other) { // =================================================================== -const ::std::string ServiceDescriptorProto::_default_name_; #ifndef _MSC_VER const int ServiceDescriptorProto::kNameFieldNumber; const int ServiceDescriptorProto::kMethodFieldNumber; @@ -3443,7 +3664,7 @@ ServiceDescriptorProto::ServiceDescriptorProto(const ServiceDescriptorProto& fro void ServiceDescriptorProto::SharedCtor() { _cached_size_ = 0; - name_ = const_cast< ::std::string*>(&_default_name_); + name_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); options_ = NULL; ::memset(_has_bits_, 0, sizeof(_has_bits_)); } @@ -3453,7 +3674,7 @@ ServiceDescriptorProto::~ServiceDescriptorProto() { } void ServiceDescriptorProto::SharedDtor() { - if (name_ != &_default_name_) { + if (name_ != &::google::protobuf::internal::kEmptyString) { delete name_; } if (this != default_instance_) { @@ -3472,7 +3693,8 @@ const ::google::protobuf::Descriptor* ServiceDescriptorProto::descriptor() { } const ServiceDescriptorProto& ServiceDescriptorProto::default_instance() { - if (default_instance_ == NULL) protobuf_AddDesc_google_2fprotobuf_2fdescriptor_2eproto(); return *default_instance_; + if (default_instance_ == NULL) protobuf_AddDesc_google_2fprotobuf_2fdescriptor_2eproto(); + return *default_instance_; } ServiceDescriptorProto* ServiceDescriptorProto::default_instance_ = NULL; @@ -3483,12 +3705,12 @@ ServiceDescriptorProto* ServiceDescriptorProto::New() const { void ServiceDescriptorProto::Clear() { if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) { - if (_has_bit(0)) { - if (name_ != &_default_name_) { + if (has_name()) { + if (name_ != &::google::protobuf::internal::kEmptyString) { name_->clear(); } } - if (_has_bit(2)) { + if (has_options()) { if (options_ != NULL) options_->::google::protobuf::ServiceOptions::Clear(); } } @@ -3518,7 +3740,7 @@ bool ServiceDescriptorProto::MergePartialFromCodedStream( if (input->ExpectTag(18)) goto parse_method; break; } - + // repeated .google.protobuf.MethodDescriptorProto method = 2; case 2: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -3533,7 +3755,7 @@ bool ServiceDescriptorProto::MergePartialFromCodedStream( if (input->ExpectTag(26)) goto parse_options; break; } - + // optional .google.protobuf.ServiceOptions options = 3; case 3: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -3547,7 +3769,7 @@ bool ServiceDescriptorProto::MergePartialFromCodedStream( if (input->ExpectAtEnd()) return true; break; } - + default: { handle_uninterpreted: if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -3567,26 +3789,26 @@ bool ServiceDescriptorProto::MergePartialFromCodedStream( void ServiceDescriptorProto::SerializeWithCachedSizes( ::google::protobuf::io::CodedOutputStream* output) const { // optional string name = 1; - if (_has_bit(0)) { + if (has_name()) { ::google::protobuf::internal::WireFormat::VerifyUTF8String( this->name().data(), this->name().length(), ::google::protobuf::internal::WireFormat::SERIALIZE); ::google::protobuf::internal::WireFormatLite::WriteString( 1, this->name(), output); } - + // repeated .google.protobuf.MethodDescriptorProto method = 2; for (int i = 0; i < this->method_size(); i++) { ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray( 2, this->method(i), output); } - + // optional .google.protobuf.ServiceOptions options = 3; - if (_has_bit(2)) { + if (has_options()) { ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray( 3, this->options(), output); } - + if (!unknown_fields().empty()) { ::google::protobuf::internal::WireFormat::SerializeUnknownFields( unknown_fields(), output); @@ -3596,7 +3818,7 @@ void ServiceDescriptorProto::SerializeWithCachedSizes( ::google::protobuf::uint8* ServiceDescriptorProto::SerializeWithCachedSizesToArray( ::google::protobuf::uint8* target) const { // optional string name = 1; - if (_has_bit(0)) { + if (has_name()) { ::google::protobuf::internal::WireFormat::VerifyUTF8String( this->name().data(), this->name().length(), ::google::protobuf::internal::WireFormat::SERIALIZE); @@ -3604,21 +3826,21 @@ void ServiceDescriptorProto::SerializeWithCachedSizes( ::google::protobuf::internal::WireFormatLite::WriteStringToArray( 1, this->name(), target); } - + // repeated .google.protobuf.MethodDescriptorProto method = 2; for (int i = 0; i < this->method_size(); i++) { target = ::google::protobuf::internal::WireFormatLite:: WriteMessageNoVirtualToArray( 2, this->method(i), target); } - + // optional .google.protobuf.ServiceOptions options = 3; - if (_has_bit(2)) { + if (has_options()) { target = ::google::protobuf::internal::WireFormatLite:: WriteMessageNoVirtualToArray( 3, this->options(), target); } - + if (!unknown_fields().empty()) { target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray( unknown_fields(), target); @@ -3628,7 +3850,7 @@ void ServiceDescriptorProto::SerializeWithCachedSizes( int ServiceDescriptorProto::ByteSize() const { int total_size = 0; - + if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) { // optional string name = 1; if (has_name()) { @@ -3636,14 +3858,14 @@ int ServiceDescriptorProto::ByteSize() const { ::google::protobuf::internal::WireFormatLite::StringSize( this->name()); } - + // optional .google.protobuf.ServiceOptions options = 3; if (has_options()) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::MessageSizeNoVirtual( this->options()); } - + } // repeated .google.protobuf.MethodDescriptorProto method = 2; total_size += 1 * this->method_size(); @@ -3652,7 +3874,7 @@ int ServiceDescriptorProto::ByteSize() const { ::google::protobuf::internal::WireFormatLite::MessageSizeNoVirtual( this->method(i)); } - + if (!unknown_fields().empty()) { total_size += ::google::protobuf::internal::WireFormat::ComputeUnknownFieldsSize( @@ -3680,10 +3902,10 @@ void ServiceDescriptorProto::MergeFrom(const ServiceDescriptorProto& from) { GOOGLE_CHECK_NE(&from, this); method_.MergeFrom(from.method_); if (from._has_bits_[0 / 32] & (0xffu << (0 % 32))) { - if (from._has_bit(0)) { + if (from.has_name()) { set_name(from.name()); } - if (from._has_bit(2)) { + if (from.has_options()) { mutable_options()->::google::protobuf::ServiceOptions::MergeFrom(from.options()); } } @@ -3703,7 +3925,7 @@ void ServiceDescriptorProto::CopyFrom(const ServiceDescriptorProto& from) { } bool ServiceDescriptorProto::IsInitialized() const { - + for (int i = 0; i < method_size(); i++) { if (!this->method(i).IsInitialized()) return false; } @@ -3735,9 +3957,6 @@ void ServiceDescriptorProto::Swap(ServiceDescriptorProto* other) { // =================================================================== -const ::std::string MethodDescriptorProto::_default_name_; -const ::std::string MethodDescriptorProto::_default_input_type_; -const ::std::string MethodDescriptorProto::_default_output_type_; #ifndef _MSC_VER const int MethodDescriptorProto::kNameFieldNumber; const int MethodDescriptorProto::kInputTypeFieldNumber; @@ -3762,9 +3981,9 @@ MethodDescriptorProto::MethodDescriptorProto(const MethodDescriptorProto& from) void MethodDescriptorProto::SharedCtor() { _cached_size_ = 0; - name_ = const_cast< ::std::string*>(&_default_name_); - input_type_ = const_cast< ::std::string*>(&_default_input_type_); - output_type_ = const_cast< ::std::string*>(&_default_output_type_); + name_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + input_type_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + output_type_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); options_ = NULL; ::memset(_has_bits_, 0, sizeof(_has_bits_)); } @@ -3774,13 +3993,13 @@ MethodDescriptorProto::~MethodDescriptorProto() { } void MethodDescriptorProto::SharedDtor() { - if (name_ != &_default_name_) { + if (name_ != &::google::protobuf::internal::kEmptyString) { delete name_; } - if (input_type_ != &_default_input_type_) { + if (input_type_ != &::google::protobuf::internal::kEmptyString) { delete input_type_; } - if (output_type_ != &_default_output_type_) { + if (output_type_ != &::google::protobuf::internal::kEmptyString) { delete output_type_; } if (this != default_instance_) { @@ -3799,7 +4018,8 @@ const ::google::protobuf::Descriptor* MethodDescriptorProto::descriptor() { } const MethodDescriptorProto& MethodDescriptorProto::default_instance() { - if (default_instance_ == NULL) protobuf_AddDesc_google_2fprotobuf_2fdescriptor_2eproto(); return *default_instance_; + if (default_instance_ == NULL) protobuf_AddDesc_google_2fprotobuf_2fdescriptor_2eproto(); + return *default_instance_; } MethodDescriptorProto* MethodDescriptorProto::default_instance_ = NULL; @@ -3810,22 +4030,22 @@ MethodDescriptorProto* MethodDescriptorProto::New() const { void MethodDescriptorProto::Clear() { if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) { - if (_has_bit(0)) { - if (name_ != &_default_name_) { + if (has_name()) { + if (name_ != &::google::protobuf::internal::kEmptyString) { name_->clear(); } } - if (_has_bit(1)) { - if (input_type_ != &_default_input_type_) { + if (has_input_type()) { + if (input_type_ != &::google::protobuf::internal::kEmptyString) { input_type_->clear(); } } - if (_has_bit(2)) { - if (output_type_ != &_default_output_type_) { + if (has_output_type()) { + if (output_type_ != &::google::protobuf::internal::kEmptyString) { output_type_->clear(); } } - if (_has_bit(3)) { + if (has_options()) { if (options_ != NULL) options_->::google::protobuf::MethodOptions::Clear(); } } @@ -3854,7 +4074,7 @@ bool MethodDescriptorProto::MergePartialFromCodedStream( if (input->ExpectTag(18)) goto parse_input_type; break; } - + // optional string input_type = 2; case 2: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -3871,7 +4091,7 @@ bool MethodDescriptorProto::MergePartialFromCodedStream( if (input->ExpectTag(26)) goto parse_output_type; break; } - + // optional string output_type = 3; case 3: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -3888,7 +4108,7 @@ bool MethodDescriptorProto::MergePartialFromCodedStream( if (input->ExpectTag(34)) goto parse_options; break; } - + // optional .google.protobuf.MethodOptions options = 4; case 4: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -3902,7 +4122,7 @@ bool MethodDescriptorProto::MergePartialFromCodedStream( if (input->ExpectAtEnd()) return true; break; } - + default: { handle_uninterpreted: if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -3922,38 +4142,38 @@ bool MethodDescriptorProto::MergePartialFromCodedStream( void MethodDescriptorProto::SerializeWithCachedSizes( ::google::protobuf::io::CodedOutputStream* output) const { // optional string name = 1; - if (_has_bit(0)) { + if (has_name()) { ::google::protobuf::internal::WireFormat::VerifyUTF8String( this->name().data(), this->name().length(), ::google::protobuf::internal::WireFormat::SERIALIZE); ::google::protobuf::internal::WireFormatLite::WriteString( 1, this->name(), output); } - + // optional string input_type = 2; - if (_has_bit(1)) { + if (has_input_type()) { ::google::protobuf::internal::WireFormat::VerifyUTF8String( this->input_type().data(), this->input_type().length(), ::google::protobuf::internal::WireFormat::SERIALIZE); ::google::protobuf::internal::WireFormatLite::WriteString( 2, this->input_type(), output); } - + // optional string output_type = 3; - if (_has_bit(2)) { + if (has_output_type()) { ::google::protobuf::internal::WireFormat::VerifyUTF8String( this->output_type().data(), this->output_type().length(), ::google::protobuf::internal::WireFormat::SERIALIZE); ::google::protobuf::internal::WireFormatLite::WriteString( 3, this->output_type(), output); } - + // optional .google.protobuf.MethodOptions options = 4; - if (_has_bit(3)) { + if (has_options()) { ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray( 4, this->options(), output); } - + if (!unknown_fields().empty()) { ::google::protobuf::internal::WireFormat::SerializeUnknownFields( unknown_fields(), output); @@ -3963,7 +4183,7 @@ void MethodDescriptorProto::SerializeWithCachedSizes( ::google::protobuf::uint8* MethodDescriptorProto::SerializeWithCachedSizesToArray( ::google::protobuf::uint8* target) const { // optional string name = 1; - if (_has_bit(0)) { + if (has_name()) { ::google::protobuf::internal::WireFormat::VerifyUTF8String( this->name().data(), this->name().length(), ::google::protobuf::internal::WireFormat::SERIALIZE); @@ -3971,9 +4191,9 @@ void MethodDescriptorProto::SerializeWithCachedSizes( ::google::protobuf::internal::WireFormatLite::WriteStringToArray( 1, this->name(), target); } - + // optional string input_type = 2; - if (_has_bit(1)) { + if (has_input_type()) { ::google::protobuf::internal::WireFormat::VerifyUTF8String( this->input_type().data(), this->input_type().length(), ::google::protobuf::internal::WireFormat::SERIALIZE); @@ -3981,9 +4201,9 @@ void MethodDescriptorProto::SerializeWithCachedSizes( ::google::protobuf::internal::WireFormatLite::WriteStringToArray( 2, this->input_type(), target); } - + // optional string output_type = 3; - if (_has_bit(2)) { + if (has_output_type()) { ::google::protobuf::internal::WireFormat::VerifyUTF8String( this->output_type().data(), this->output_type().length(), ::google::protobuf::internal::WireFormat::SERIALIZE); @@ -3991,14 +4211,14 @@ void MethodDescriptorProto::SerializeWithCachedSizes( ::google::protobuf::internal::WireFormatLite::WriteStringToArray( 3, this->output_type(), target); } - + // optional .google.protobuf.MethodOptions options = 4; - if (_has_bit(3)) { + if (has_options()) { target = ::google::protobuf::internal::WireFormatLite:: WriteMessageNoVirtualToArray( 4, this->options(), target); } - + if (!unknown_fields().empty()) { target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray( unknown_fields(), target); @@ -4008,7 +4228,7 @@ void MethodDescriptorProto::SerializeWithCachedSizes( int MethodDescriptorProto::ByteSize() const { int total_size = 0; - + if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) { // optional string name = 1; if (has_name()) { @@ -4016,28 +4236,28 @@ int MethodDescriptorProto::ByteSize() const { ::google::protobuf::internal::WireFormatLite::StringSize( this->name()); } - + // optional string input_type = 2; if (has_input_type()) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::StringSize( this->input_type()); } - + // optional string output_type = 3; if (has_output_type()) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::StringSize( this->output_type()); } - + // optional .google.protobuf.MethodOptions options = 4; if (has_options()) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::MessageSizeNoVirtual( this->options()); } - + } if (!unknown_fields().empty()) { total_size += @@ -4065,16 +4285,16 @@ void MethodDescriptorProto::MergeFrom(const ::google::protobuf::Message& from) { void MethodDescriptorProto::MergeFrom(const MethodDescriptorProto& from) { GOOGLE_CHECK_NE(&from, this); if (from._has_bits_[0 / 32] & (0xffu << (0 % 32))) { - if (from._has_bit(0)) { + if (from.has_name()) { set_name(from.name()); } - if (from._has_bit(1)) { + if (from.has_input_type()) { set_input_type(from.input_type()); } - if (from._has_bit(2)) { + if (from.has_output_type()) { set_output_type(from.output_type()); } - if (from._has_bit(3)) { + if (from.has_options()) { mutable_options()->::google::protobuf::MethodOptions::MergeFrom(from.options()); } } @@ -4094,7 +4314,7 @@ void MethodDescriptorProto::CopyFrom(const MethodDescriptorProto& from) { } bool MethodDescriptorProto::IsInitialized() const { - + if (has_options()) { if (!this->options().IsInitialized()) return false; } @@ -4147,13 +4367,13 @@ const FileOptions_OptimizeMode FileOptions::OptimizeMode_MIN; const FileOptions_OptimizeMode FileOptions::OptimizeMode_MAX; const int FileOptions::OptimizeMode_ARRAYSIZE; #endif // _MSC_VER -const ::std::string FileOptions::_default_java_package_; -const ::std::string FileOptions::_default_java_outer_classname_; #ifndef _MSC_VER const int FileOptions::kJavaPackageFieldNumber; const int FileOptions::kJavaOuterClassnameFieldNumber; const int FileOptions::kJavaMultipleFilesFieldNumber; +const int FileOptions::kJavaGenerateEqualsAndHashFieldNumber; const int FileOptions::kOptimizeForFieldNumber; +const int FileOptions::kGoPackageFieldNumber; const int FileOptions::kCcGenericServicesFieldNumber; const int FileOptions::kJavaGenericServicesFieldNumber; const int FileOptions::kPyGenericServicesFieldNumber; @@ -4176,13 +4396,15 @@ FileOptions::FileOptions(const FileOptions& from) void FileOptions::SharedCtor() { _cached_size_ = 0; - java_package_ = const_cast< ::std::string*>(&_default_java_package_); - java_outer_classname_ = const_cast< ::std::string*>(&_default_java_outer_classname_); + java_package_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + java_outer_classname_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); java_multiple_files_ = false; + java_generate_equals_and_hash_ = false; optimize_for_ = 1; - cc_generic_services_ = true; - java_generic_services_ = true; - py_generic_services_ = true; + go_package_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + cc_generic_services_ = false; + java_generic_services_ = false; + py_generic_services_ = false; ::memset(_has_bits_, 0, sizeof(_has_bits_)); } @@ -4191,12 +4413,15 @@ FileOptions::~FileOptions() { } void FileOptions::SharedDtor() { - if (java_package_ != &_default_java_package_) { + if (java_package_ != &::google::protobuf::internal::kEmptyString) { delete java_package_; } - if (java_outer_classname_ != &_default_java_outer_classname_) { + if (java_outer_classname_ != &::google::protobuf::internal::kEmptyString) { delete java_outer_classname_; } + if (go_package_ != &::google::protobuf::internal::kEmptyString) { + delete go_package_; + } if (this != default_instance_) { } } @@ -4212,7 +4437,8 @@ const ::google::protobuf::Descriptor* FileOptions::descriptor() { } const FileOptions& FileOptions::default_instance() { - if (default_instance_ == NULL) protobuf_AddDesc_google_2fprotobuf_2fdescriptor_2eproto(); return *default_instance_; + if (default_instance_ == NULL) protobuf_AddDesc_google_2fprotobuf_2fdescriptor_2eproto(); + return *default_instance_; } FileOptions* FileOptions::default_instance_ = NULL; @@ -4224,21 +4450,29 @@ FileOptions* FileOptions::New() const { void FileOptions::Clear() { _extensions_.Clear(); if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) { - if (_has_bit(0)) { - if (java_package_ != &_default_java_package_) { + if (has_java_package()) { + if (java_package_ != &::google::protobuf::internal::kEmptyString) { java_package_->clear(); } } - if (_has_bit(1)) { - if (java_outer_classname_ != &_default_java_outer_classname_) { + if (has_java_outer_classname()) { + if (java_outer_classname_ != &::google::protobuf::internal::kEmptyString) { java_outer_classname_->clear(); } } java_multiple_files_ = false; + java_generate_equals_and_hash_ = false; optimize_for_ = 1; - cc_generic_services_ = true; - java_generic_services_ = true; - py_generic_services_ = true; + if (has_go_package()) { + if (go_package_ != &::google::protobuf::internal::kEmptyString) { + go_package_->clear(); + } + } + cc_generic_services_ = false; + java_generic_services_ = false; + } + if (_has_bits_[8 / 32] & (0xffu << (8 % 32))) { + py_generic_services_ = false; } uninterpreted_option_.Clear(); ::memset(_has_bits_, 0, sizeof(_has_bits_)); @@ -4266,7 +4500,7 @@ bool FileOptions::MergePartialFromCodedStream( if (input->ExpectTag(66)) goto parse_java_outer_classname; break; } - + // optional string java_outer_classname = 8; case 8: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -4283,7 +4517,7 @@ bool FileOptions::MergePartialFromCodedStream( if (input->ExpectTag(72)) goto parse_optimize_for; break; } - + // optional .google.protobuf.FileOptions.OptimizeMode optimize_for = 9 [default = SPEED]; case 9: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -4304,7 +4538,7 @@ bool FileOptions::MergePartialFromCodedStream( if (input->ExpectTag(80)) goto parse_java_multiple_files; break; } - + // optional bool java_multiple_files = 10 [default = false]; case 10: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -4313,15 +4547,32 @@ bool FileOptions::MergePartialFromCodedStream( DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive< bool, ::google::protobuf::internal::WireFormatLite::TYPE_BOOL>( input, &java_multiple_files_))); - _set_bit(2); + set_has_java_multiple_files(); + } else { + goto handle_uninterpreted; + } + if (input->ExpectTag(90)) goto parse_go_package; + break; + } + + // optional string go_package = 11; + case 11: { + if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == + ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) { + parse_go_package: + DO_(::google::protobuf::internal::WireFormatLite::ReadString( + input, this->mutable_go_package())); + ::google::protobuf::internal::WireFormat::VerifyUTF8String( + this->go_package().data(), this->go_package().length(), + ::google::protobuf::internal::WireFormat::PARSE); } else { goto handle_uninterpreted; } if (input->ExpectTag(128)) goto parse_cc_generic_services; break; } - - // optional bool cc_generic_services = 16 [default = true]; + + // optional bool cc_generic_services = 16 [default = false]; case 16: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) { @@ -4329,15 +4580,15 @@ bool FileOptions::MergePartialFromCodedStream( DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive< bool, ::google::protobuf::internal::WireFormatLite::TYPE_BOOL>( input, &cc_generic_services_))); - _set_bit(4); + set_has_cc_generic_services(); } else { goto handle_uninterpreted; } if (input->ExpectTag(136)) goto parse_java_generic_services; break; } - - // optional bool java_generic_services = 17 [default = true]; + + // optional bool java_generic_services = 17 [default = false]; case 17: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) { @@ -4345,15 +4596,15 @@ bool FileOptions::MergePartialFromCodedStream( DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive< bool, ::google::protobuf::internal::WireFormatLite::TYPE_BOOL>( input, &java_generic_services_))); - _set_bit(5); + set_has_java_generic_services(); } else { goto handle_uninterpreted; } if (input->ExpectTag(144)) goto parse_py_generic_services; break; } - - // optional bool py_generic_services = 18 [default = true]; + + // optional bool py_generic_services = 18 [default = false]; case 18: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) { @@ -4361,14 +4612,30 @@ bool FileOptions::MergePartialFromCodedStream( DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive< bool, ::google::protobuf::internal::WireFormatLite::TYPE_BOOL>( input, &py_generic_services_))); - _set_bit(6); + set_has_py_generic_services(); + } else { + goto handle_uninterpreted; + } + if (input->ExpectTag(160)) goto parse_java_generate_equals_and_hash; + break; + } + + // optional bool java_generate_equals_and_hash = 20 [default = false]; + case 20: { + if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == + ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) { + parse_java_generate_equals_and_hash: + DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive< + bool, ::google::protobuf::internal::WireFormatLite::TYPE_BOOL>( + input, &java_generate_equals_and_hash_))); + set_has_java_generate_equals_and_hash(); } else { goto handle_uninterpreted; } if (input->ExpectTag(7994)) goto parse_uninterpreted_option; break; } - + // repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999; case 999: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -4383,7 +4650,7 @@ bool FileOptions::MergePartialFromCodedStream( if (input->ExpectAtEnd()) return true; break; } - + default: { handle_uninterpreted: if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -4408,59 +4675,73 @@ bool FileOptions::MergePartialFromCodedStream( void FileOptions::SerializeWithCachedSizes( ::google::protobuf::io::CodedOutputStream* output) const { // optional string java_package = 1; - if (_has_bit(0)) { + if (has_java_package()) { ::google::protobuf::internal::WireFormat::VerifyUTF8String( this->java_package().data(), this->java_package().length(), ::google::protobuf::internal::WireFormat::SERIALIZE); ::google::protobuf::internal::WireFormatLite::WriteString( 1, this->java_package(), output); } - + // optional string java_outer_classname = 8; - if (_has_bit(1)) { + if (has_java_outer_classname()) { ::google::protobuf::internal::WireFormat::VerifyUTF8String( this->java_outer_classname().data(), this->java_outer_classname().length(), ::google::protobuf::internal::WireFormat::SERIALIZE); ::google::protobuf::internal::WireFormatLite::WriteString( 8, this->java_outer_classname(), output); } - + // optional .google.protobuf.FileOptions.OptimizeMode optimize_for = 9 [default = SPEED]; - if (_has_bit(3)) { + if (has_optimize_for()) { ::google::protobuf::internal::WireFormatLite::WriteEnum( 9, this->optimize_for(), output); } - + // optional bool java_multiple_files = 10 [default = false]; - if (_has_bit(2)) { + if (has_java_multiple_files()) { ::google::protobuf::internal::WireFormatLite::WriteBool(10, this->java_multiple_files(), output); } - - // optional bool cc_generic_services = 16 [default = true]; - if (_has_bit(4)) { + + // optional string go_package = 11; + if (has_go_package()) { + ::google::protobuf::internal::WireFormat::VerifyUTF8String( + this->go_package().data(), this->go_package().length(), + ::google::protobuf::internal::WireFormat::SERIALIZE); + ::google::protobuf::internal::WireFormatLite::WriteString( + 11, this->go_package(), output); + } + + // optional bool cc_generic_services = 16 [default = false]; + if (has_cc_generic_services()) { ::google::protobuf::internal::WireFormatLite::WriteBool(16, this->cc_generic_services(), output); } - - // optional bool java_generic_services = 17 [default = true]; - if (_has_bit(5)) { + + // optional bool java_generic_services = 17 [default = false]; + if (has_java_generic_services()) { ::google::protobuf::internal::WireFormatLite::WriteBool(17, this->java_generic_services(), output); } - - // optional bool py_generic_services = 18 [default = true]; - if (_has_bit(6)) { + + // optional bool py_generic_services = 18 [default = false]; + if (has_py_generic_services()) { ::google::protobuf::internal::WireFormatLite::WriteBool(18, this->py_generic_services(), output); } - + + // optional bool java_generate_equals_and_hash = 20 [default = false]; + if (has_java_generate_equals_and_hash()) { + ::google::protobuf::internal::WireFormatLite::WriteBool(20, this->java_generate_equals_and_hash(), output); + } + // repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999; for (int i = 0; i < this->uninterpreted_option_size(); i++) { ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray( 999, this->uninterpreted_option(i), output); } - + // Extension range [1000, 536870912) _extensions_.SerializeWithCachedSizes( 1000, 536870912, output); - + if (!unknown_fields().empty()) { ::google::protobuf::internal::WireFormat::SerializeUnknownFields( unknown_fields(), output); @@ -4470,7 +4751,7 @@ void FileOptions::SerializeWithCachedSizes( ::google::protobuf::uint8* FileOptions::SerializeWithCachedSizesToArray( ::google::protobuf::uint8* target) const { // optional string java_package = 1; - if (_has_bit(0)) { + if (has_java_package()) { ::google::protobuf::internal::WireFormat::VerifyUTF8String( this->java_package().data(), this->java_package().length(), ::google::protobuf::internal::WireFormat::SERIALIZE); @@ -4478,9 +4759,9 @@ void FileOptions::SerializeWithCachedSizes( ::google::protobuf::internal::WireFormatLite::WriteStringToArray( 1, this->java_package(), target); } - + // optional string java_outer_classname = 8; - if (_has_bit(1)) { + if (has_java_outer_classname()) { ::google::protobuf::internal::WireFormat::VerifyUTF8String( this->java_outer_classname().data(), this->java_outer_classname().length(), ::google::protobuf::internal::WireFormat::SERIALIZE); @@ -4488,44 +4769,59 @@ void FileOptions::SerializeWithCachedSizes( ::google::protobuf::internal::WireFormatLite::WriteStringToArray( 8, this->java_outer_classname(), target); } - + // optional .google.protobuf.FileOptions.OptimizeMode optimize_for = 9 [default = SPEED]; - if (_has_bit(3)) { + if (has_optimize_for()) { target = ::google::protobuf::internal::WireFormatLite::WriteEnumToArray( 9, this->optimize_for(), target); } - + // optional bool java_multiple_files = 10 [default = false]; - if (_has_bit(2)) { + if (has_java_multiple_files()) { target = ::google::protobuf::internal::WireFormatLite::WriteBoolToArray(10, this->java_multiple_files(), target); } - - // optional bool cc_generic_services = 16 [default = true]; - if (_has_bit(4)) { + + // optional string go_package = 11; + if (has_go_package()) { + ::google::protobuf::internal::WireFormat::VerifyUTF8String( + this->go_package().data(), this->go_package().length(), + ::google::protobuf::internal::WireFormat::SERIALIZE); + target = + ::google::protobuf::internal::WireFormatLite::WriteStringToArray( + 11, this->go_package(), target); + } + + // optional bool cc_generic_services = 16 [default = false]; + if (has_cc_generic_services()) { target = ::google::protobuf::internal::WireFormatLite::WriteBoolToArray(16, this->cc_generic_services(), target); } - - // optional bool java_generic_services = 17 [default = true]; - if (_has_bit(5)) { + + // optional bool java_generic_services = 17 [default = false]; + if (has_java_generic_services()) { target = ::google::protobuf::internal::WireFormatLite::WriteBoolToArray(17, this->java_generic_services(), target); } - - // optional bool py_generic_services = 18 [default = true]; - if (_has_bit(6)) { + + // optional bool py_generic_services = 18 [default = false]; + if (has_py_generic_services()) { target = ::google::protobuf::internal::WireFormatLite::WriteBoolToArray(18, this->py_generic_services(), target); } - + + // optional bool java_generate_equals_and_hash = 20 [default = false]; + if (has_java_generate_equals_and_hash()) { + target = ::google::protobuf::internal::WireFormatLite::WriteBoolToArray(20, this->java_generate_equals_and_hash(), target); + } + // repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999; for (int i = 0; i < this->uninterpreted_option_size(); i++) { target = ::google::protobuf::internal::WireFormatLite:: WriteMessageNoVirtualToArray( 999, this->uninterpreted_option(i), target); } - + // Extension range [1000, 536870912) target = _extensions_.SerializeWithCachedSizesToArray( 1000, 536870912, target); - + if (!unknown_fields().empty()) { target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray( unknown_fields(), target); @@ -4535,7 +4831,7 @@ void FileOptions::SerializeWithCachedSizes( int FileOptions::ByteSize() const { int total_size = 0; - + if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) { // optional string java_package = 1; if (has_java_package()) { @@ -4543,40 +4839,54 @@ int FileOptions::ByteSize() const { ::google::protobuf::internal::WireFormatLite::StringSize( this->java_package()); } - + // optional string java_outer_classname = 8; if (has_java_outer_classname()) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::StringSize( this->java_outer_classname()); } - + // optional bool java_multiple_files = 10 [default = false]; if (has_java_multiple_files()) { total_size += 1 + 1; } - + + // optional bool java_generate_equals_and_hash = 20 [default = false]; + if (has_java_generate_equals_and_hash()) { + total_size += 2 + 1; + } + // optional .google.protobuf.FileOptions.OptimizeMode optimize_for = 9 [default = SPEED]; if (has_optimize_for()) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::EnumSize(this->optimize_for()); } - - // optional bool cc_generic_services = 16 [default = true]; + + // optional string go_package = 11; + if (has_go_package()) { + total_size += 1 + + ::google::protobuf::internal::WireFormatLite::StringSize( + this->go_package()); + } + + // optional bool cc_generic_services = 16 [default = false]; if (has_cc_generic_services()) { total_size += 2 + 1; } - - // optional bool java_generic_services = 17 [default = true]; + + // optional bool java_generic_services = 17 [default = false]; if (has_java_generic_services()) { total_size += 2 + 1; } - - // optional bool py_generic_services = 18 [default = true]; + + } + if (_has_bits_[8 / 32] & (0xffu << (8 % 32))) { + // optional bool py_generic_services = 18 [default = false]; if (has_py_generic_services()) { total_size += 2 + 1; } - + } // repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999; total_size += 2 * this->uninterpreted_option_size(); @@ -4585,9 +4895,9 @@ int FileOptions::ByteSize() const { ::google::protobuf::internal::WireFormatLite::MessageSizeNoVirtual( this->uninterpreted_option(i)); } - + total_size += _extensions_.ByteSize(); - + if (!unknown_fields().empty()) { total_size += ::google::protobuf::internal::WireFormat::ComputeUnknownFieldsSize( @@ -4615,25 +4925,33 @@ void FileOptions::MergeFrom(const FileOptions& from) { GOOGLE_CHECK_NE(&from, this); uninterpreted_option_.MergeFrom(from.uninterpreted_option_); if (from._has_bits_[0 / 32] & (0xffu << (0 % 32))) { - if (from._has_bit(0)) { + if (from.has_java_package()) { set_java_package(from.java_package()); } - if (from._has_bit(1)) { + if (from.has_java_outer_classname()) { set_java_outer_classname(from.java_outer_classname()); } - if (from._has_bit(2)) { + if (from.has_java_multiple_files()) { set_java_multiple_files(from.java_multiple_files()); } - if (from._has_bit(3)) { + if (from.has_java_generate_equals_and_hash()) { + set_java_generate_equals_and_hash(from.java_generate_equals_and_hash()); + } + if (from.has_optimize_for()) { set_optimize_for(from.optimize_for()); } - if (from._has_bit(4)) { + if (from.has_go_package()) { + set_go_package(from.go_package()); + } + if (from.has_cc_generic_services()) { set_cc_generic_services(from.cc_generic_services()); } - if (from._has_bit(5)) { + if (from.has_java_generic_services()) { set_java_generic_services(from.java_generic_services()); } - if (from._has_bit(6)) { + } + if (from._has_bits_[8 / 32] & (0xffu << (8 % 32))) { + if (from.has_py_generic_services()) { set_py_generic_services(from.py_generic_services()); } } @@ -4654,11 +4972,11 @@ void FileOptions::CopyFrom(const FileOptions& from) { } bool FileOptions::IsInitialized() const { - + for (int i = 0; i < uninterpreted_option_size(); i++) { if (!this->uninterpreted_option(i).IsInitialized()) return false; } - + if (!_extensions_.IsInitialized()) return false; return true; } @@ -4667,7 +4985,9 @@ void FileOptions::Swap(FileOptions* other) { std::swap(java_package_, other->java_package_); std::swap(java_outer_classname_, other->java_outer_classname_); std::swap(java_multiple_files_, other->java_multiple_files_); + std::swap(java_generate_equals_and_hash_, other->java_generate_equals_and_hash_); std::swap(optimize_for_, other->optimize_for_); + std::swap(go_package_, other->go_package_); std::swap(cc_generic_services_, other->cc_generic_services_); std::swap(java_generic_services_, other->java_generic_services_); std::swap(py_generic_services_, other->py_generic_services_); @@ -4737,7 +5057,8 @@ const ::google::protobuf::Descriptor* MessageOptions::descriptor() { } const MessageOptions& MessageOptions::default_instance() { - if (default_instance_ == NULL) protobuf_AddDesc_google_2fprotobuf_2fdescriptor_2eproto(); return *default_instance_; + if (default_instance_ == NULL) protobuf_AddDesc_google_2fprotobuf_2fdescriptor_2eproto(); + return *default_instance_; } MessageOptions* MessageOptions::default_instance_ = NULL; @@ -4770,14 +5091,14 @@ bool MessageOptions::MergePartialFromCodedStream( DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive< bool, ::google::protobuf::internal::WireFormatLite::TYPE_BOOL>( input, &message_set_wire_format_))); - _set_bit(0); + set_has_message_set_wire_format(); } else { goto handle_uninterpreted; } if (input->ExpectTag(16)) goto parse_no_standard_descriptor_accessor; break; } - + // optional bool no_standard_descriptor_accessor = 2 [default = false]; case 2: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -4786,14 +5107,14 @@ bool MessageOptions::MergePartialFromCodedStream( DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive< bool, ::google::protobuf::internal::WireFormatLite::TYPE_BOOL>( input, &no_standard_descriptor_accessor_))); - _set_bit(1); + set_has_no_standard_descriptor_accessor(); } else { goto handle_uninterpreted; } if (input->ExpectTag(7994)) goto parse_uninterpreted_option; break; } - + // repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999; case 999: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -4808,7 +5129,7 @@ bool MessageOptions::MergePartialFromCodedStream( if (input->ExpectAtEnd()) return true; break; } - + default: { handle_uninterpreted: if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -4833,25 +5154,25 @@ bool MessageOptions::MergePartialFromCodedStream( void MessageOptions::SerializeWithCachedSizes( ::google::protobuf::io::CodedOutputStream* output) const { // optional bool message_set_wire_format = 1 [default = false]; - if (_has_bit(0)) { + if (has_message_set_wire_format()) { ::google::protobuf::internal::WireFormatLite::WriteBool(1, this->message_set_wire_format(), output); } - + // optional bool no_standard_descriptor_accessor = 2 [default = false]; - if (_has_bit(1)) { + if (has_no_standard_descriptor_accessor()) { ::google::protobuf::internal::WireFormatLite::WriteBool(2, this->no_standard_descriptor_accessor(), output); } - + // repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999; for (int i = 0; i < this->uninterpreted_option_size(); i++) { ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray( 999, this->uninterpreted_option(i), output); } - + // Extension range [1000, 536870912) _extensions_.SerializeWithCachedSizes( 1000, 536870912, output); - + if (!unknown_fields().empty()) { ::google::protobuf::internal::WireFormat::SerializeUnknownFields( unknown_fields(), output); @@ -4861,26 +5182,26 @@ void MessageOptions::SerializeWithCachedSizes( ::google::protobuf::uint8* MessageOptions::SerializeWithCachedSizesToArray( ::google::protobuf::uint8* target) const { // optional bool message_set_wire_format = 1 [default = false]; - if (_has_bit(0)) { + if (has_message_set_wire_format()) { target = ::google::protobuf::internal::WireFormatLite::WriteBoolToArray(1, this->message_set_wire_format(), target); } - + // optional bool no_standard_descriptor_accessor = 2 [default = false]; - if (_has_bit(1)) { + if (has_no_standard_descriptor_accessor()) { target = ::google::protobuf::internal::WireFormatLite::WriteBoolToArray(2, this->no_standard_descriptor_accessor(), target); } - + // repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999; for (int i = 0; i < this->uninterpreted_option_size(); i++) { target = ::google::protobuf::internal::WireFormatLite:: WriteMessageNoVirtualToArray( 999, this->uninterpreted_option(i), target); } - + // Extension range [1000, 536870912) target = _extensions_.SerializeWithCachedSizesToArray( 1000, 536870912, target); - + if (!unknown_fields().empty()) { target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray( unknown_fields(), target); @@ -4890,18 +5211,18 @@ void MessageOptions::SerializeWithCachedSizes( int MessageOptions::ByteSize() const { int total_size = 0; - + if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) { // optional bool message_set_wire_format = 1 [default = false]; if (has_message_set_wire_format()) { total_size += 1 + 1; } - + // optional bool no_standard_descriptor_accessor = 2 [default = false]; if (has_no_standard_descriptor_accessor()) { total_size += 1 + 1; } - + } // repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999; total_size += 2 * this->uninterpreted_option_size(); @@ -4910,9 +5231,9 @@ int MessageOptions::ByteSize() const { ::google::protobuf::internal::WireFormatLite::MessageSizeNoVirtual( this->uninterpreted_option(i)); } - + total_size += _extensions_.ByteSize(); - + if (!unknown_fields().empty()) { total_size += ::google::protobuf::internal::WireFormat::ComputeUnknownFieldsSize( @@ -4940,10 +5261,10 @@ void MessageOptions::MergeFrom(const MessageOptions& from) { GOOGLE_CHECK_NE(&from, this); uninterpreted_option_.MergeFrom(from.uninterpreted_option_); if (from._has_bits_[0 / 32] & (0xffu << (0 % 32))) { - if (from._has_bit(0)) { + if (from.has_message_set_wire_format()) { set_message_set_wire_format(from.message_set_wire_format()); } - if (from._has_bit(1)) { + if (from.has_no_standard_descriptor_accessor()) { set_no_standard_descriptor_accessor(from.no_standard_descriptor_accessor()); } } @@ -4964,11 +5285,11 @@ void MessageOptions::CopyFrom(const MessageOptions& from) { } bool MessageOptions::IsInitialized() const { - + for (int i = 0; i < uninterpreted_option_size(); i++) { if (!this->uninterpreted_option(i).IsInitialized()) return false; } - + if (!_extensions_.IsInitialized()) return false; return true; } @@ -5018,12 +5339,13 @@ const FieldOptions_CType FieldOptions::CType_MIN; const FieldOptions_CType FieldOptions::CType_MAX; const int FieldOptions::CType_ARRAYSIZE; #endif // _MSC_VER -const ::std::string FieldOptions::_default_experimental_map_key_; #ifndef _MSC_VER const int FieldOptions::kCtypeFieldNumber; const int FieldOptions::kPackedFieldNumber; +const int FieldOptions::kLazyFieldNumber; const int FieldOptions::kDeprecatedFieldNumber; const int FieldOptions::kExperimentalMapKeyFieldNumber; +const int FieldOptions::kWeakFieldNumber; const int FieldOptions::kUninterpretedOptionFieldNumber; #endif // !_MSC_VER @@ -5045,8 +5367,10 @@ void FieldOptions::SharedCtor() { _cached_size_ = 0; ctype_ = 0; packed_ = false; + lazy_ = false; deprecated_ = false; - experimental_map_key_ = const_cast< ::std::string*>(&_default_experimental_map_key_); + experimental_map_key_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + weak_ = false; ::memset(_has_bits_, 0, sizeof(_has_bits_)); } @@ -5055,7 +5379,7 @@ FieldOptions::~FieldOptions() { } void FieldOptions::SharedDtor() { - if (experimental_map_key_ != &_default_experimental_map_key_) { + if (experimental_map_key_ != &::google::protobuf::internal::kEmptyString) { delete experimental_map_key_; } if (this != default_instance_) { @@ -5073,7 +5397,8 @@ const ::google::protobuf::Descriptor* FieldOptions::descriptor() { } const FieldOptions& FieldOptions::default_instance() { - if (default_instance_ == NULL) protobuf_AddDesc_google_2fprotobuf_2fdescriptor_2eproto(); return *default_instance_; + if (default_instance_ == NULL) protobuf_AddDesc_google_2fprotobuf_2fdescriptor_2eproto(); + return *default_instance_; } FieldOptions* FieldOptions::default_instance_ = NULL; @@ -5087,12 +5412,14 @@ void FieldOptions::Clear() { if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) { ctype_ = 0; packed_ = false; + lazy_ = false; deprecated_ = false; - if (_has_bit(3)) { - if (experimental_map_key_ != &_default_experimental_map_key_) { + if (has_experimental_map_key()) { + if (experimental_map_key_ != &::google::protobuf::internal::kEmptyString) { experimental_map_key_->clear(); } } + weak_ = false; } uninterpreted_option_.Clear(); ::memset(_has_bits_, 0, sizeof(_has_bits_)); @@ -5124,7 +5451,7 @@ bool FieldOptions::MergePartialFromCodedStream( if (input->ExpectTag(16)) goto parse_packed; break; } - + // optional bool packed = 2; case 2: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -5133,14 +5460,14 @@ bool FieldOptions::MergePartialFromCodedStream( DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive< bool, ::google::protobuf::internal::WireFormatLite::TYPE_BOOL>( input, &packed_))); - _set_bit(1); + set_has_packed(); } else { goto handle_uninterpreted; } if (input->ExpectTag(24)) goto parse_deprecated; break; } - + // optional bool deprecated = 3 [default = false]; case 3: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -5149,14 +5476,30 @@ bool FieldOptions::MergePartialFromCodedStream( DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive< bool, ::google::protobuf::internal::WireFormatLite::TYPE_BOOL>( input, &deprecated_))); - _set_bit(2); + set_has_deprecated(); + } else { + goto handle_uninterpreted; + } + if (input->ExpectTag(40)) goto parse_lazy; + break; + } + + // optional bool lazy = 5 [default = false]; + case 5: { + if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == + ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) { + parse_lazy: + DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive< + bool, ::google::protobuf::internal::WireFormatLite::TYPE_BOOL>( + input, &lazy_))); + set_has_lazy(); } else { goto handle_uninterpreted; } if (input->ExpectTag(74)) goto parse_experimental_map_key; break; } - + // optional string experimental_map_key = 9; case 9: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -5170,10 +5513,26 @@ bool FieldOptions::MergePartialFromCodedStream( } else { goto handle_uninterpreted; } + if (input->ExpectTag(80)) goto parse_weak; + break; + } + + // optional bool weak = 10 [default = false]; + case 10: { + if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == + ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) { + parse_weak: + DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive< + bool, ::google::protobuf::internal::WireFormatLite::TYPE_BOOL>( + input, &weak_))); + set_has_weak(); + } else { + goto handle_uninterpreted; + } if (input->ExpectTag(7994)) goto parse_uninterpreted_option; break; } - + // repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999; case 999: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -5188,7 +5547,7 @@ bool FieldOptions::MergePartialFromCodedStream( if (input->ExpectAtEnd()) return true; break; } - + default: { handle_uninterpreted: if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -5213,40 +5572,50 @@ bool FieldOptions::MergePartialFromCodedStream( void FieldOptions::SerializeWithCachedSizes( ::google::protobuf::io::CodedOutputStream* output) const { // optional .google.protobuf.FieldOptions.CType ctype = 1 [default = STRING]; - if (_has_bit(0)) { + if (has_ctype()) { ::google::protobuf::internal::WireFormatLite::WriteEnum( 1, this->ctype(), output); } - + // optional bool packed = 2; - if (_has_bit(1)) { + if (has_packed()) { ::google::protobuf::internal::WireFormatLite::WriteBool(2, this->packed(), output); } - + // optional bool deprecated = 3 [default = false]; - if (_has_bit(2)) { + if (has_deprecated()) { ::google::protobuf::internal::WireFormatLite::WriteBool(3, this->deprecated(), output); } - + + // optional bool lazy = 5 [default = false]; + if (has_lazy()) { + ::google::protobuf::internal::WireFormatLite::WriteBool(5, this->lazy(), output); + } + // optional string experimental_map_key = 9; - if (_has_bit(3)) { + if (has_experimental_map_key()) { ::google::protobuf::internal::WireFormat::VerifyUTF8String( this->experimental_map_key().data(), this->experimental_map_key().length(), ::google::protobuf::internal::WireFormat::SERIALIZE); ::google::protobuf::internal::WireFormatLite::WriteString( 9, this->experimental_map_key(), output); } - + + // optional bool weak = 10 [default = false]; + if (has_weak()) { + ::google::protobuf::internal::WireFormatLite::WriteBool(10, this->weak(), output); + } + // repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999; for (int i = 0; i < this->uninterpreted_option_size(); i++) { ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray( 999, this->uninterpreted_option(i), output); } - + // Extension range [1000, 536870912) _extensions_.SerializeWithCachedSizes( 1000, 536870912, output); - + if (!unknown_fields().empty()) { ::google::protobuf::internal::WireFormat::SerializeUnknownFields( unknown_fields(), output); @@ -5256,23 +5625,28 @@ void FieldOptions::SerializeWithCachedSizes( ::google::protobuf::uint8* FieldOptions::SerializeWithCachedSizesToArray( ::google::protobuf::uint8* target) const { // optional .google.protobuf.FieldOptions.CType ctype = 1 [default = STRING]; - if (_has_bit(0)) { + if (has_ctype()) { target = ::google::protobuf::internal::WireFormatLite::WriteEnumToArray( 1, this->ctype(), target); } - + // optional bool packed = 2; - if (_has_bit(1)) { + if (has_packed()) { target = ::google::protobuf::internal::WireFormatLite::WriteBoolToArray(2, this->packed(), target); } - + // optional bool deprecated = 3 [default = false]; - if (_has_bit(2)) { + if (has_deprecated()) { target = ::google::protobuf::internal::WireFormatLite::WriteBoolToArray(3, this->deprecated(), target); } - + + // optional bool lazy = 5 [default = false]; + if (has_lazy()) { + target = ::google::protobuf::internal::WireFormatLite::WriteBoolToArray(5, this->lazy(), target); + } + // optional string experimental_map_key = 9; - if (_has_bit(3)) { + if (has_experimental_map_key()) { ::google::protobuf::internal::WireFormat::VerifyUTF8String( this->experimental_map_key().data(), this->experimental_map_key().length(), ::google::protobuf::internal::WireFormat::SERIALIZE); @@ -5280,18 +5654,23 @@ void FieldOptions::SerializeWithCachedSizes( ::google::protobuf::internal::WireFormatLite::WriteStringToArray( 9, this->experimental_map_key(), target); } - + + // optional bool weak = 10 [default = false]; + if (has_weak()) { + target = ::google::protobuf::internal::WireFormatLite::WriteBoolToArray(10, this->weak(), target); + } + // repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999; for (int i = 0; i < this->uninterpreted_option_size(); i++) { target = ::google::protobuf::internal::WireFormatLite:: WriteMessageNoVirtualToArray( 999, this->uninterpreted_option(i), target); } - + // Extension range [1000, 536870912) target = _extensions_.SerializeWithCachedSizesToArray( 1000, 536870912, target); - + if (!unknown_fields().empty()) { target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray( unknown_fields(), target); @@ -5301,31 +5680,41 @@ void FieldOptions::SerializeWithCachedSizes( int FieldOptions::ByteSize() const { int total_size = 0; - + if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) { // optional .google.protobuf.FieldOptions.CType ctype = 1 [default = STRING]; if (has_ctype()) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::EnumSize(this->ctype()); } - + // optional bool packed = 2; if (has_packed()) { total_size += 1 + 1; } - + + // optional bool lazy = 5 [default = false]; + if (has_lazy()) { + total_size += 1 + 1; + } + // optional bool deprecated = 3 [default = false]; if (has_deprecated()) { total_size += 1 + 1; } - + // optional string experimental_map_key = 9; if (has_experimental_map_key()) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::StringSize( this->experimental_map_key()); } - + + // optional bool weak = 10 [default = false]; + if (has_weak()) { + total_size += 1 + 1; + } + } // repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999; total_size += 2 * this->uninterpreted_option_size(); @@ -5334,9 +5723,9 @@ int FieldOptions::ByteSize() const { ::google::protobuf::internal::WireFormatLite::MessageSizeNoVirtual( this->uninterpreted_option(i)); } - + total_size += _extensions_.ByteSize(); - + if (!unknown_fields().empty()) { total_size += ::google::protobuf::internal::WireFormat::ComputeUnknownFieldsSize( @@ -5364,18 +5753,24 @@ void FieldOptions::MergeFrom(const FieldOptions& from) { GOOGLE_CHECK_NE(&from, this); uninterpreted_option_.MergeFrom(from.uninterpreted_option_); if (from._has_bits_[0 / 32] & (0xffu << (0 % 32))) { - if (from._has_bit(0)) { + if (from.has_ctype()) { set_ctype(from.ctype()); } - if (from._has_bit(1)) { + if (from.has_packed()) { set_packed(from.packed()); } - if (from._has_bit(2)) { + if (from.has_lazy()) { + set_lazy(from.lazy()); + } + if (from.has_deprecated()) { set_deprecated(from.deprecated()); } - if (from._has_bit(3)) { + if (from.has_experimental_map_key()) { set_experimental_map_key(from.experimental_map_key()); } + if (from.has_weak()) { + set_weak(from.weak()); + } } _extensions_.MergeFrom(from._extensions_); mutable_unknown_fields()->MergeFrom(from.unknown_fields()); @@ -5394,11 +5789,11 @@ void FieldOptions::CopyFrom(const FieldOptions& from) { } bool FieldOptions::IsInitialized() const { - + for (int i = 0; i < uninterpreted_option_size(); i++) { if (!this->uninterpreted_option(i).IsInitialized()) return false; } - + if (!_extensions_.IsInitialized()) return false; return true; } @@ -5406,8 +5801,10 @@ void FieldOptions::Swap(FieldOptions* other) { if (other != this) { std::swap(ctype_, other->ctype_); std::swap(packed_, other->packed_); + std::swap(lazy_, other->lazy_); std::swap(deprecated_, other->deprecated_); std::swap(experimental_map_key_, other->experimental_map_key_); + std::swap(weak_, other->weak_); uninterpreted_option_.Swap(&other->uninterpreted_option_); std::swap(_has_bits_[0], other->_has_bits_[0]); _unknown_fields_.Swap(&other->_unknown_fields_); @@ -5428,6 +5825,7 @@ void FieldOptions::Swap(FieldOptions* other) { // =================================================================== #ifndef _MSC_VER +const int EnumOptions::kAllowAliasFieldNumber; const int EnumOptions::kUninterpretedOptionFieldNumber; #endif // !_MSC_VER @@ -5447,6 +5845,7 @@ EnumOptions::EnumOptions(const EnumOptions& from) void EnumOptions::SharedCtor() { _cached_size_ = 0; + allow_alias_ = true; ::memset(_has_bits_, 0, sizeof(_has_bits_)); } @@ -5470,7 +5869,8 @@ const ::google::protobuf::Descriptor* EnumOptions::descriptor() { } const EnumOptions& EnumOptions::default_instance() { - if (default_instance_ == NULL) protobuf_AddDesc_google_2fprotobuf_2fdescriptor_2eproto(); return *default_instance_; + if (default_instance_ == NULL) protobuf_AddDesc_google_2fprotobuf_2fdescriptor_2eproto(); + return *default_instance_; } EnumOptions* EnumOptions::default_instance_ = NULL; @@ -5481,6 +5881,9 @@ EnumOptions* EnumOptions::New() const { void EnumOptions::Clear() { _extensions_.Clear(); + if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) { + allow_alias_ = true; + } uninterpreted_option_.Clear(); ::memset(_has_bits_, 0, sizeof(_has_bits_)); mutable_unknown_fields()->Clear(); @@ -5492,6 +5895,21 @@ bool EnumOptions::MergePartialFromCodedStream( ::google::protobuf::uint32 tag; while ((tag = input->ReadTag()) != 0) { switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) { + // optional bool allow_alias = 2 [default = true]; + case 2: { + if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == + ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) { + DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive< + bool, ::google::protobuf::internal::WireFormatLite::TYPE_BOOL>( + input, &allow_alias_))); + set_has_allow_alias(); + } else { + goto handle_uninterpreted; + } + if (input->ExpectTag(7994)) goto parse_uninterpreted_option; + break; + } + // repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999; case 999: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -5506,7 +5924,7 @@ bool EnumOptions::MergePartialFromCodedStream( if (input->ExpectAtEnd()) return true; break; } - + default: { handle_uninterpreted: if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -5530,16 +5948,21 @@ bool EnumOptions::MergePartialFromCodedStream( void EnumOptions::SerializeWithCachedSizes( ::google::protobuf::io::CodedOutputStream* output) const { + // optional bool allow_alias = 2 [default = true]; + if (has_allow_alias()) { + ::google::protobuf::internal::WireFormatLite::WriteBool(2, this->allow_alias(), output); + } + // repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999; for (int i = 0; i < this->uninterpreted_option_size(); i++) { ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray( 999, this->uninterpreted_option(i), output); } - + // Extension range [1000, 536870912) _extensions_.SerializeWithCachedSizes( 1000, 536870912, output); - + if (!unknown_fields().empty()) { ::google::protobuf::internal::WireFormat::SerializeUnknownFields( unknown_fields(), output); @@ -5548,17 +5971,22 @@ void EnumOptions::SerializeWithCachedSizes( ::google::protobuf::uint8* EnumOptions::SerializeWithCachedSizesToArray( ::google::protobuf::uint8* target) const { + // optional bool allow_alias = 2 [default = true]; + if (has_allow_alias()) { + target = ::google::protobuf::internal::WireFormatLite::WriteBoolToArray(2, this->allow_alias(), target); + } + // repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999; for (int i = 0; i < this->uninterpreted_option_size(); i++) { target = ::google::protobuf::internal::WireFormatLite:: WriteMessageNoVirtualToArray( 999, this->uninterpreted_option(i), target); } - + // Extension range [1000, 536870912) target = _extensions_.SerializeWithCachedSizesToArray( 1000, 536870912, target); - + if (!unknown_fields().empty()) { target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray( unknown_fields(), target); @@ -5568,7 +5996,14 @@ void EnumOptions::SerializeWithCachedSizes( int EnumOptions::ByteSize() const { int total_size = 0; - + + if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) { + // optional bool allow_alias = 2 [default = true]; + if (has_allow_alias()) { + total_size += 1 + 1; + } + + } // repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999; total_size += 2 * this->uninterpreted_option_size(); for (int i = 0; i < this->uninterpreted_option_size(); i++) { @@ -5576,9 +6011,9 @@ int EnumOptions::ByteSize() const { ::google::protobuf::internal::WireFormatLite::MessageSizeNoVirtual( this->uninterpreted_option(i)); } - + total_size += _extensions_.ByteSize(); - + if (!unknown_fields().empty()) { total_size += ::google::protobuf::internal::WireFormat::ComputeUnknownFieldsSize( @@ -5605,6 +6040,11 @@ void EnumOptions::MergeFrom(const ::google::protobuf::Message& from) { void EnumOptions::MergeFrom(const EnumOptions& from) { GOOGLE_CHECK_NE(&from, this); uninterpreted_option_.MergeFrom(from.uninterpreted_option_); + if (from._has_bits_[0 / 32] & (0xffu << (0 % 32))) { + if (from.has_allow_alias()) { + set_allow_alias(from.allow_alias()); + } + } _extensions_.MergeFrom(from._extensions_); mutable_unknown_fields()->MergeFrom(from.unknown_fields()); } @@ -5622,16 +6062,17 @@ void EnumOptions::CopyFrom(const EnumOptions& from) { } bool EnumOptions::IsInitialized() const { - + for (int i = 0; i < uninterpreted_option_size(); i++) { if (!this->uninterpreted_option(i).IsInitialized()) return false; } - + if (!_extensions_.IsInitialized()) return false; return true; } void EnumOptions::Swap(EnumOptions* other) { if (other != this) { + std::swap(allow_alias_, other->allow_alias_); uninterpreted_option_.Swap(&other->uninterpreted_option_); std::swap(_has_bits_[0], other->_has_bits_[0]); _unknown_fields_.Swap(&other->_unknown_fields_); @@ -5694,7 +6135,8 @@ const ::google::protobuf::Descriptor* EnumValueOptions::descriptor() { } const EnumValueOptions& EnumValueOptions::default_instance() { - if (default_instance_ == NULL) protobuf_AddDesc_google_2fprotobuf_2fdescriptor_2eproto(); return *default_instance_; + if (default_instance_ == NULL) protobuf_AddDesc_google_2fprotobuf_2fdescriptor_2eproto(); + return *default_instance_; } EnumValueOptions* EnumValueOptions::default_instance_ = NULL; @@ -5730,7 +6172,7 @@ bool EnumValueOptions::MergePartialFromCodedStream( if (input->ExpectAtEnd()) return true; break; } - + default: { handle_uninterpreted: if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -5759,11 +6201,11 @@ void EnumValueOptions::SerializeWithCachedSizes( ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray( 999, this->uninterpreted_option(i), output); } - + // Extension range [1000, 536870912) _extensions_.SerializeWithCachedSizes( 1000, 536870912, output); - + if (!unknown_fields().empty()) { ::google::protobuf::internal::WireFormat::SerializeUnknownFields( unknown_fields(), output); @@ -5778,11 +6220,11 @@ void EnumValueOptions::SerializeWithCachedSizes( WriteMessageNoVirtualToArray( 999, this->uninterpreted_option(i), target); } - + // Extension range [1000, 536870912) target = _extensions_.SerializeWithCachedSizesToArray( 1000, 536870912, target); - + if (!unknown_fields().empty()) { target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray( unknown_fields(), target); @@ -5792,7 +6234,7 @@ void EnumValueOptions::SerializeWithCachedSizes( int EnumValueOptions::ByteSize() const { int total_size = 0; - + // repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999; total_size += 2 * this->uninterpreted_option_size(); for (int i = 0; i < this->uninterpreted_option_size(); i++) { @@ -5800,9 +6242,9 @@ int EnumValueOptions::ByteSize() const { ::google::protobuf::internal::WireFormatLite::MessageSizeNoVirtual( this->uninterpreted_option(i)); } - + total_size += _extensions_.ByteSize(); - + if (!unknown_fields().empty()) { total_size += ::google::protobuf::internal::WireFormat::ComputeUnknownFieldsSize( @@ -5846,11 +6288,11 @@ void EnumValueOptions::CopyFrom(const EnumValueOptions& from) { } bool EnumValueOptions::IsInitialized() const { - + for (int i = 0; i < uninterpreted_option_size(); i++) { if (!this->uninterpreted_option(i).IsInitialized()) return false; } - + if (!_extensions_.IsInitialized()) return false; return true; } @@ -5918,7 +6360,8 @@ const ::google::protobuf::Descriptor* ServiceOptions::descriptor() { } const ServiceOptions& ServiceOptions::default_instance() { - if (default_instance_ == NULL) protobuf_AddDesc_google_2fprotobuf_2fdescriptor_2eproto(); return *default_instance_; + if (default_instance_ == NULL) protobuf_AddDesc_google_2fprotobuf_2fdescriptor_2eproto(); + return *default_instance_; } ServiceOptions* ServiceOptions::default_instance_ = NULL; @@ -5954,7 +6397,7 @@ bool ServiceOptions::MergePartialFromCodedStream( if (input->ExpectAtEnd()) return true; break; } - + default: { handle_uninterpreted: if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -5983,11 +6426,11 @@ void ServiceOptions::SerializeWithCachedSizes( ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray( 999, this->uninterpreted_option(i), output); } - + // Extension range [1000, 536870912) _extensions_.SerializeWithCachedSizes( 1000, 536870912, output); - + if (!unknown_fields().empty()) { ::google::protobuf::internal::WireFormat::SerializeUnknownFields( unknown_fields(), output); @@ -6002,11 +6445,11 @@ void ServiceOptions::SerializeWithCachedSizes( WriteMessageNoVirtualToArray( 999, this->uninterpreted_option(i), target); } - + // Extension range [1000, 536870912) target = _extensions_.SerializeWithCachedSizesToArray( 1000, 536870912, target); - + if (!unknown_fields().empty()) { target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray( unknown_fields(), target); @@ -6016,7 +6459,7 @@ void ServiceOptions::SerializeWithCachedSizes( int ServiceOptions::ByteSize() const { int total_size = 0; - + // repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999; total_size += 2 * this->uninterpreted_option_size(); for (int i = 0; i < this->uninterpreted_option_size(); i++) { @@ -6024,9 +6467,9 @@ int ServiceOptions::ByteSize() const { ::google::protobuf::internal::WireFormatLite::MessageSizeNoVirtual( this->uninterpreted_option(i)); } - + total_size += _extensions_.ByteSize(); - + if (!unknown_fields().empty()) { total_size += ::google::protobuf::internal::WireFormat::ComputeUnknownFieldsSize( @@ -6070,11 +6513,11 @@ void ServiceOptions::CopyFrom(const ServiceOptions& from) { } bool ServiceOptions::IsInitialized() const { - + for (int i = 0; i < uninterpreted_option_size(); i++) { if (!this->uninterpreted_option(i).IsInitialized()) return false; } - + if (!_extensions_.IsInitialized()) return false; return true; } @@ -6142,7 +6585,8 @@ const ::google::protobuf::Descriptor* MethodOptions::descriptor() { } const MethodOptions& MethodOptions::default_instance() { - if (default_instance_ == NULL) protobuf_AddDesc_google_2fprotobuf_2fdescriptor_2eproto(); return *default_instance_; + if (default_instance_ == NULL) protobuf_AddDesc_google_2fprotobuf_2fdescriptor_2eproto(); + return *default_instance_; } MethodOptions* MethodOptions::default_instance_ = NULL; @@ -6178,7 +6622,7 @@ bool MethodOptions::MergePartialFromCodedStream( if (input->ExpectAtEnd()) return true; break; } - + default: { handle_uninterpreted: if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -6207,11 +6651,11 @@ void MethodOptions::SerializeWithCachedSizes( ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray( 999, this->uninterpreted_option(i), output); } - + // Extension range [1000, 536870912) _extensions_.SerializeWithCachedSizes( 1000, 536870912, output); - + if (!unknown_fields().empty()) { ::google::protobuf::internal::WireFormat::SerializeUnknownFields( unknown_fields(), output); @@ -6226,11 +6670,11 @@ void MethodOptions::SerializeWithCachedSizes( WriteMessageNoVirtualToArray( 999, this->uninterpreted_option(i), target); } - + // Extension range [1000, 536870912) target = _extensions_.SerializeWithCachedSizesToArray( 1000, 536870912, target); - + if (!unknown_fields().empty()) { target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray( unknown_fields(), target); @@ -6240,7 +6684,7 @@ void MethodOptions::SerializeWithCachedSizes( int MethodOptions::ByteSize() const { int total_size = 0; - + // repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999; total_size += 2 * this->uninterpreted_option_size(); for (int i = 0; i < this->uninterpreted_option_size(); i++) { @@ -6248,9 +6692,9 @@ int MethodOptions::ByteSize() const { ::google::protobuf::internal::WireFormatLite::MessageSizeNoVirtual( this->uninterpreted_option(i)); } - + total_size += _extensions_.ByteSize(); - + if (!unknown_fields().empty()) { total_size += ::google::protobuf::internal::WireFormat::ComputeUnknownFieldsSize( @@ -6294,11 +6738,11 @@ void MethodOptions::CopyFrom(const MethodOptions& from) { } bool MethodOptions::IsInitialized() const { - + for (int i = 0; i < uninterpreted_option_size(); i++) { if (!this->uninterpreted_option(i).IsInitialized()) return false; } - + if (!_extensions_.IsInitialized()) return false; return true; } @@ -6323,7 +6767,6 @@ void MethodOptions::Swap(MethodOptions* other) { // =================================================================== -const ::std::string UninterpretedOption_NamePart::_default_name_part_; #ifndef _MSC_VER const int UninterpretedOption_NamePart::kNamePartFieldNumber; const int UninterpretedOption_NamePart::kIsExtensionFieldNumber; @@ -6345,7 +6788,7 @@ UninterpretedOption_NamePart::UninterpretedOption_NamePart(const UninterpretedOp void UninterpretedOption_NamePart::SharedCtor() { _cached_size_ = 0; - name_part_ = const_cast< ::std::string*>(&_default_name_part_); + name_part_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); is_extension_ = false; ::memset(_has_bits_, 0, sizeof(_has_bits_)); } @@ -6355,7 +6798,7 @@ UninterpretedOption_NamePart::~UninterpretedOption_NamePart() { } void UninterpretedOption_NamePart::SharedDtor() { - if (name_part_ != &_default_name_part_) { + if (name_part_ != &::google::protobuf::internal::kEmptyString) { delete name_part_; } if (this != default_instance_) { @@ -6373,7 +6816,8 @@ const ::google::protobuf::Descriptor* UninterpretedOption_NamePart::descriptor() } const UninterpretedOption_NamePart& UninterpretedOption_NamePart::default_instance() { - if (default_instance_ == NULL) protobuf_AddDesc_google_2fprotobuf_2fdescriptor_2eproto(); return *default_instance_; + if (default_instance_ == NULL) protobuf_AddDesc_google_2fprotobuf_2fdescriptor_2eproto(); + return *default_instance_; } UninterpretedOption_NamePart* UninterpretedOption_NamePart::default_instance_ = NULL; @@ -6384,8 +6828,8 @@ UninterpretedOption_NamePart* UninterpretedOption_NamePart::New() const { void UninterpretedOption_NamePart::Clear() { if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) { - if (_has_bit(0)) { - if (name_part_ != &_default_name_part_) { + if (has_name_part()) { + if (name_part_ != &::google::protobuf::internal::kEmptyString) { name_part_->clear(); } } @@ -6416,7 +6860,7 @@ bool UninterpretedOption_NamePart::MergePartialFromCodedStream( if (input->ExpectTag(16)) goto parse_is_extension; break; } - + // required bool is_extension = 2; case 2: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -6425,14 +6869,14 @@ bool UninterpretedOption_NamePart::MergePartialFromCodedStream( DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive< bool, ::google::protobuf::internal::WireFormatLite::TYPE_BOOL>( input, &is_extension_))); - _set_bit(1); + set_has_is_extension(); } else { goto handle_uninterpreted; } if (input->ExpectAtEnd()) return true; break; } - + default: { handle_uninterpreted: if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -6452,19 +6896,19 @@ bool UninterpretedOption_NamePart::MergePartialFromCodedStream( void UninterpretedOption_NamePart::SerializeWithCachedSizes( ::google::protobuf::io::CodedOutputStream* output) const { // required string name_part = 1; - if (_has_bit(0)) { + if (has_name_part()) { ::google::protobuf::internal::WireFormat::VerifyUTF8String( this->name_part().data(), this->name_part().length(), ::google::protobuf::internal::WireFormat::SERIALIZE); ::google::protobuf::internal::WireFormatLite::WriteString( 1, this->name_part(), output); } - + // required bool is_extension = 2; - if (_has_bit(1)) { + if (has_is_extension()) { ::google::protobuf::internal::WireFormatLite::WriteBool(2, this->is_extension(), output); } - + if (!unknown_fields().empty()) { ::google::protobuf::internal::WireFormat::SerializeUnknownFields( unknown_fields(), output); @@ -6474,7 +6918,7 @@ void UninterpretedOption_NamePart::SerializeWithCachedSizes( ::google::protobuf::uint8* UninterpretedOption_NamePart::SerializeWithCachedSizesToArray( ::google::protobuf::uint8* target) const { // required string name_part = 1; - if (_has_bit(0)) { + if (has_name_part()) { ::google::protobuf::internal::WireFormat::VerifyUTF8String( this->name_part().data(), this->name_part().length(), ::google::protobuf::internal::WireFormat::SERIALIZE); @@ -6482,12 +6926,12 @@ void UninterpretedOption_NamePart::SerializeWithCachedSizes( ::google::protobuf::internal::WireFormatLite::WriteStringToArray( 1, this->name_part(), target); } - + // required bool is_extension = 2; - if (_has_bit(1)) { + if (has_is_extension()) { target = ::google::protobuf::internal::WireFormatLite::WriteBoolToArray(2, this->is_extension(), target); } - + if (!unknown_fields().empty()) { target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray( unknown_fields(), target); @@ -6497,7 +6941,7 @@ void UninterpretedOption_NamePart::SerializeWithCachedSizes( int UninterpretedOption_NamePart::ByteSize() const { int total_size = 0; - + if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) { // required string name_part = 1; if (has_name_part()) { @@ -6505,12 +6949,12 @@ int UninterpretedOption_NamePart::ByteSize() const { ::google::protobuf::internal::WireFormatLite::StringSize( this->name_part()); } - + // required bool is_extension = 2; if (has_is_extension()) { total_size += 1 + 1; } - + } if (!unknown_fields().empty()) { total_size += @@ -6538,10 +6982,10 @@ void UninterpretedOption_NamePart::MergeFrom(const ::google::protobuf::Message& void UninterpretedOption_NamePart::MergeFrom(const UninterpretedOption_NamePart& from) { GOOGLE_CHECK_NE(&from, this); if (from._has_bits_[0 / 32] & (0xffu << (0 % 32))) { - if (from._has_bit(0)) { + if (from.has_name_part()) { set_name_part(from.name_part()); } - if (from._has_bit(1)) { + if (from.has_is_extension()) { set_is_extension(from.is_extension()); } } @@ -6562,7 +7006,7 @@ void UninterpretedOption_NamePart::CopyFrom(const UninterpretedOption_NamePart& bool UninterpretedOption_NamePart::IsInitialized() const { if ((_has_bits_[0] & 0x00000003) != 0x00000003) return false; - + return true; } @@ -6587,8 +7031,6 @@ void UninterpretedOption_NamePart::Swap(UninterpretedOption_NamePart* other) { // ------------------------------------------------------------------- -const ::std::string UninterpretedOption::_default_identifier_value_; -const ::std::string UninterpretedOption::_default_string_value_; #ifndef _MSC_VER const int UninterpretedOption::kNameFieldNumber; const int UninterpretedOption::kIdentifierValueFieldNumber; @@ -6596,6 +7038,7 @@ const int UninterpretedOption::kPositiveIntValueFieldNumber; const int UninterpretedOption::kNegativeIntValueFieldNumber; const int UninterpretedOption::kDoubleValueFieldNumber; const int UninterpretedOption::kStringValueFieldNumber; +const int UninterpretedOption::kAggregateValueFieldNumber; #endif // !_MSC_VER UninterpretedOption::UninterpretedOption() @@ -6614,11 +7057,12 @@ UninterpretedOption::UninterpretedOption(const UninterpretedOption& from) void UninterpretedOption::SharedCtor() { _cached_size_ = 0; - identifier_value_ = const_cast< ::std::string*>(&_default_identifier_value_); + identifier_value_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); positive_int_value_ = GOOGLE_ULONGLONG(0); negative_int_value_ = GOOGLE_LONGLONG(0); double_value_ = 0; - string_value_ = const_cast< ::std::string*>(&_default_string_value_); + string_value_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + aggregate_value_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); ::memset(_has_bits_, 0, sizeof(_has_bits_)); } @@ -6627,12 +7071,15 @@ UninterpretedOption::~UninterpretedOption() { } void UninterpretedOption::SharedDtor() { - if (identifier_value_ != &_default_identifier_value_) { + if (identifier_value_ != &::google::protobuf::internal::kEmptyString) { delete identifier_value_; } - if (string_value_ != &_default_string_value_) { + if (string_value_ != &::google::protobuf::internal::kEmptyString) { delete string_value_; } + if (aggregate_value_ != &::google::protobuf::internal::kEmptyString) { + delete aggregate_value_; + } if (this != default_instance_) { } } @@ -6648,7 +7095,8 @@ const ::google::protobuf::Descriptor* UninterpretedOption::descriptor() { } const UninterpretedOption& UninterpretedOption::default_instance() { - if (default_instance_ == NULL) protobuf_AddDesc_google_2fprotobuf_2fdescriptor_2eproto(); return *default_instance_; + if (default_instance_ == NULL) protobuf_AddDesc_google_2fprotobuf_2fdescriptor_2eproto(); + return *default_instance_; } UninterpretedOption* UninterpretedOption::default_instance_ = NULL; @@ -6659,19 +7107,24 @@ UninterpretedOption* UninterpretedOption::New() const { void UninterpretedOption::Clear() { if (_has_bits_[1 / 32] & (0xffu << (1 % 32))) { - if (_has_bit(1)) { - if (identifier_value_ != &_default_identifier_value_) { + if (has_identifier_value()) { + if (identifier_value_ != &::google::protobuf::internal::kEmptyString) { identifier_value_->clear(); } } positive_int_value_ = GOOGLE_ULONGLONG(0); negative_int_value_ = GOOGLE_LONGLONG(0); double_value_ = 0; - if (_has_bit(5)) { - if (string_value_ != &_default_string_value_) { + if (has_string_value()) { + if (string_value_ != &::google::protobuf::internal::kEmptyString) { string_value_->clear(); } } + if (has_aggregate_value()) { + if (aggregate_value_ != &::google::protobuf::internal::kEmptyString) { + aggregate_value_->clear(); + } + } } name_.Clear(); ::memset(_has_bits_, 0, sizeof(_has_bits_)); @@ -6698,7 +7151,7 @@ bool UninterpretedOption::MergePartialFromCodedStream( if (input->ExpectTag(26)) goto parse_identifier_value; break; } - + // optional string identifier_value = 3; case 3: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -6715,7 +7168,7 @@ bool UninterpretedOption::MergePartialFromCodedStream( if (input->ExpectTag(32)) goto parse_positive_int_value; break; } - + // optional uint64 positive_int_value = 4; case 4: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -6724,14 +7177,14 @@ bool UninterpretedOption::MergePartialFromCodedStream( DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive< ::google::protobuf::uint64, ::google::protobuf::internal::WireFormatLite::TYPE_UINT64>( input, &positive_int_value_))); - _set_bit(2); + set_has_positive_int_value(); } else { goto handle_uninterpreted; } if (input->ExpectTag(40)) goto parse_negative_int_value; break; } - + // optional int64 negative_int_value = 5; case 5: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -6740,14 +7193,14 @@ bool UninterpretedOption::MergePartialFromCodedStream( DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive< ::google::protobuf::int64, ::google::protobuf::internal::WireFormatLite::TYPE_INT64>( input, &negative_int_value_))); - _set_bit(3); + set_has_negative_int_value(); } else { goto handle_uninterpreted; } if (input->ExpectTag(49)) goto parse_double_value; break; } - + // optional double double_value = 6; case 6: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -6756,14 +7209,14 @@ bool UninterpretedOption::MergePartialFromCodedStream( DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive< double, ::google::protobuf::internal::WireFormatLite::TYPE_DOUBLE>( input, &double_value_))); - _set_bit(4); + set_has_double_value(); } else { goto handle_uninterpreted; } if (input->ExpectTag(58)) goto parse_string_value; break; } - + // optional bytes string_value = 7; case 7: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -6774,10 +7227,27 @@ bool UninterpretedOption::MergePartialFromCodedStream( } else { goto handle_uninterpreted; } + if (input->ExpectTag(66)) goto parse_aggregate_value; + break; + } + + // optional string aggregate_value = 8; + case 8: { + if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == + ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) { + parse_aggregate_value: + DO_(::google::protobuf::internal::WireFormatLite::ReadString( + input, this->mutable_aggregate_value())); + ::google::protobuf::internal::WireFormat::VerifyUTF8String( + this->aggregate_value().data(), this->aggregate_value().length(), + ::google::protobuf::internal::WireFormat::PARSE); + } else { + goto handle_uninterpreted; + } if (input->ExpectAtEnd()) return true; break; } - + default: { handle_uninterpreted: if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -6801,37 +7271,46 @@ void UninterpretedOption::SerializeWithCachedSizes( ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray( 2, this->name(i), output); } - + // optional string identifier_value = 3; - if (_has_bit(1)) { + if (has_identifier_value()) { ::google::protobuf::internal::WireFormat::VerifyUTF8String( this->identifier_value().data(), this->identifier_value().length(), ::google::protobuf::internal::WireFormat::SERIALIZE); ::google::protobuf::internal::WireFormatLite::WriteString( 3, this->identifier_value(), output); } - + // optional uint64 positive_int_value = 4; - if (_has_bit(2)) { + if (has_positive_int_value()) { ::google::protobuf::internal::WireFormatLite::WriteUInt64(4, this->positive_int_value(), output); } - + // optional int64 negative_int_value = 5; - if (_has_bit(3)) { + if (has_negative_int_value()) { ::google::protobuf::internal::WireFormatLite::WriteInt64(5, this->negative_int_value(), output); } - + // optional double double_value = 6; - if (_has_bit(4)) { + if (has_double_value()) { ::google::protobuf::internal::WireFormatLite::WriteDouble(6, this->double_value(), output); } - + // optional bytes string_value = 7; - if (_has_bit(5)) { + if (has_string_value()) { ::google::protobuf::internal::WireFormatLite::WriteBytes( 7, this->string_value(), output); } - + + // optional string aggregate_value = 8; + if (has_aggregate_value()) { + ::google::protobuf::internal::WireFormat::VerifyUTF8String( + this->aggregate_value().data(), this->aggregate_value().length(), + ::google::protobuf::internal::WireFormat::SERIALIZE); + ::google::protobuf::internal::WireFormatLite::WriteString( + 8, this->aggregate_value(), output); + } + if (!unknown_fields().empty()) { ::google::protobuf::internal::WireFormat::SerializeUnknownFields( unknown_fields(), output); @@ -6846,9 +7325,9 @@ void UninterpretedOption::SerializeWithCachedSizes( WriteMessageNoVirtualToArray( 2, this->name(i), target); } - + // optional string identifier_value = 3; - if (_has_bit(1)) { + if (has_identifier_value()) { ::google::protobuf::internal::WireFormat::VerifyUTF8String( this->identifier_value().data(), this->identifier_value().length(), ::google::protobuf::internal::WireFormat::SERIALIZE); @@ -6856,29 +7335,39 @@ void UninterpretedOption::SerializeWithCachedSizes( ::google::protobuf::internal::WireFormatLite::WriteStringToArray( 3, this->identifier_value(), target); } - + // optional uint64 positive_int_value = 4; - if (_has_bit(2)) { + if (has_positive_int_value()) { target = ::google::protobuf::internal::WireFormatLite::WriteUInt64ToArray(4, this->positive_int_value(), target); } - + // optional int64 negative_int_value = 5; - if (_has_bit(3)) { + if (has_negative_int_value()) { target = ::google::protobuf::internal::WireFormatLite::WriteInt64ToArray(5, this->negative_int_value(), target); } - + // optional double double_value = 6; - if (_has_bit(4)) { + if (has_double_value()) { target = ::google::protobuf::internal::WireFormatLite::WriteDoubleToArray(6, this->double_value(), target); } - + // optional bytes string_value = 7; - if (_has_bit(5)) { + if (has_string_value()) { target = ::google::protobuf::internal::WireFormatLite::WriteBytesToArray( 7, this->string_value(), target); } - + + // optional string aggregate_value = 8; + if (has_aggregate_value()) { + ::google::protobuf::internal::WireFormat::VerifyUTF8String( + this->aggregate_value().data(), this->aggregate_value().length(), + ::google::protobuf::internal::WireFormat::SERIALIZE); + target = + ::google::protobuf::internal::WireFormatLite::WriteStringToArray( + 8, this->aggregate_value(), target); + } + if (!unknown_fields().empty()) { target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray( unknown_fields(), target); @@ -6888,7 +7377,7 @@ void UninterpretedOption::SerializeWithCachedSizes( int UninterpretedOption::ByteSize() const { int total_size = 0; - + if (_has_bits_[1 / 32] & (0xffu << (1 % 32))) { // optional string identifier_value = 3; if (has_identifier_value()) { @@ -6896,33 +7385,40 @@ int UninterpretedOption::ByteSize() const { ::google::protobuf::internal::WireFormatLite::StringSize( this->identifier_value()); } - + // optional uint64 positive_int_value = 4; if (has_positive_int_value()) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::UInt64Size( this->positive_int_value()); } - + // optional int64 negative_int_value = 5; if (has_negative_int_value()) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::Int64Size( this->negative_int_value()); } - + // optional double double_value = 6; if (has_double_value()) { total_size += 1 + 8; } - + // optional bytes string_value = 7; if (has_string_value()) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::BytesSize( this->string_value()); } - + + // optional string aggregate_value = 8; + if (has_aggregate_value()) { + total_size += 1 + + ::google::protobuf::internal::WireFormatLite::StringSize( + this->aggregate_value()); + } + } // repeated .google.protobuf.UninterpretedOption.NamePart name = 2; total_size += 1 * this->name_size(); @@ -6931,7 +7427,7 @@ int UninterpretedOption::ByteSize() const { ::google::protobuf::internal::WireFormatLite::MessageSizeNoVirtual( this->name(i)); } - + if (!unknown_fields().empty()) { total_size += ::google::protobuf::internal::WireFormat::ComputeUnknownFieldsSize( @@ -6959,21 +7455,24 @@ void UninterpretedOption::MergeFrom(const UninterpretedOption& from) { GOOGLE_CHECK_NE(&from, this); name_.MergeFrom(from.name_); if (from._has_bits_[1 / 32] & (0xffu << (1 % 32))) { - if (from._has_bit(1)) { + if (from.has_identifier_value()) { set_identifier_value(from.identifier_value()); } - if (from._has_bit(2)) { + if (from.has_positive_int_value()) { set_positive_int_value(from.positive_int_value()); } - if (from._has_bit(3)) { + if (from.has_negative_int_value()) { set_negative_int_value(from.negative_int_value()); } - if (from._has_bit(4)) { + if (from.has_double_value()) { set_double_value(from.double_value()); } - if (from._has_bit(5)) { + if (from.has_string_value()) { set_string_value(from.string_value()); } + if (from.has_aggregate_value()) { + set_aggregate_value(from.aggregate_value()); + } } mutable_unknown_fields()->MergeFrom(from.unknown_fields()); } @@ -6991,7 +7490,7 @@ void UninterpretedOption::CopyFrom(const UninterpretedOption& from) { } bool UninterpretedOption::IsInitialized() const { - + for (int i = 0; i < name_size(); i++) { if (!this->name(i).IsInitialized()) return false; } @@ -7006,6 +7505,7 @@ void UninterpretedOption::Swap(UninterpretedOption* other) { std::swap(negative_int_value_, other->negative_int_value_); std::swap(double_value_, other->double_value_); std::swap(string_value_, other->string_value_); + std::swap(aggregate_value_, other->aggregate_value_); std::swap(_has_bits_[0], other->_has_bits_[0]); _unknown_fields_.Swap(&other->_unknown_fields_); std::swap(_cached_size_, other->_cached_size_); @@ -7021,6 +7521,623 @@ void UninterpretedOption::Swap(UninterpretedOption* other) { } +// =================================================================== + +#ifndef _MSC_VER +const int SourceCodeInfo_Location::kPathFieldNumber; +const int SourceCodeInfo_Location::kSpanFieldNumber; +const int SourceCodeInfo_Location::kLeadingCommentsFieldNumber; +const int SourceCodeInfo_Location::kTrailingCommentsFieldNumber; +#endif // !_MSC_VER + +SourceCodeInfo_Location::SourceCodeInfo_Location() + : ::google::protobuf::Message() { + SharedCtor(); +} + +void SourceCodeInfo_Location::InitAsDefaultInstance() { +} + +SourceCodeInfo_Location::SourceCodeInfo_Location(const SourceCodeInfo_Location& from) + : ::google::protobuf::Message() { + SharedCtor(); + MergeFrom(from); +} + +void SourceCodeInfo_Location::SharedCtor() { + _cached_size_ = 0; + leading_comments_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + trailing_comments_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + ::memset(_has_bits_, 0, sizeof(_has_bits_)); +} + +SourceCodeInfo_Location::~SourceCodeInfo_Location() { + SharedDtor(); +} + +void SourceCodeInfo_Location::SharedDtor() { + if (leading_comments_ != &::google::protobuf::internal::kEmptyString) { + delete leading_comments_; + } + if (trailing_comments_ != &::google::protobuf::internal::kEmptyString) { + delete trailing_comments_; + } + if (this != default_instance_) { + } +} + +void SourceCodeInfo_Location::SetCachedSize(int size) const { + GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN(); + _cached_size_ = size; + GOOGLE_SAFE_CONCURRENT_WRITES_END(); +} +const ::google::protobuf::Descriptor* SourceCodeInfo_Location::descriptor() { + protobuf_AssignDescriptorsOnce(); + return SourceCodeInfo_Location_descriptor_; +} + +const SourceCodeInfo_Location& SourceCodeInfo_Location::default_instance() { + if (default_instance_ == NULL) protobuf_AddDesc_google_2fprotobuf_2fdescriptor_2eproto(); + return *default_instance_; +} + +SourceCodeInfo_Location* SourceCodeInfo_Location::default_instance_ = NULL; + +SourceCodeInfo_Location* SourceCodeInfo_Location::New() const { + return new SourceCodeInfo_Location; +} + +void SourceCodeInfo_Location::Clear() { + if (_has_bits_[2 / 32] & (0xffu << (2 % 32))) { + if (has_leading_comments()) { + if (leading_comments_ != &::google::protobuf::internal::kEmptyString) { + leading_comments_->clear(); + } + } + if (has_trailing_comments()) { + if (trailing_comments_ != &::google::protobuf::internal::kEmptyString) { + trailing_comments_->clear(); + } + } + } + path_.Clear(); + span_.Clear(); + ::memset(_has_bits_, 0, sizeof(_has_bits_)); + mutable_unknown_fields()->Clear(); +} + +bool SourceCodeInfo_Location::MergePartialFromCodedStream( + ::google::protobuf::io::CodedInputStream* input) { +#define DO_(EXPRESSION) if (!(EXPRESSION)) return false + ::google::protobuf::uint32 tag; + while ((tag = input->ReadTag()) != 0) { + switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) { + // repeated int32 path = 1 [packed = true]; + case 1: { + if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == + ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) { + DO_((::google::protobuf::internal::WireFormatLite::ReadPackedPrimitive< + ::google::protobuf::int32, ::google::protobuf::internal::WireFormatLite::TYPE_INT32>( + input, this->mutable_path()))); + } else if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) + == ::google::protobuf::internal::WireFormatLite:: + WIRETYPE_VARINT) { + DO_((::google::protobuf::internal::WireFormatLite::ReadRepeatedPrimitiveNoInline< + ::google::protobuf::int32, ::google::protobuf::internal::WireFormatLite::TYPE_INT32>( + 1, 10, input, this->mutable_path()))); + } else { + goto handle_uninterpreted; + } + if (input->ExpectTag(18)) goto parse_span; + break; + } + + // repeated int32 span = 2 [packed = true]; + case 2: { + if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == + ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) { + parse_span: + DO_((::google::protobuf::internal::WireFormatLite::ReadPackedPrimitive< + ::google::protobuf::int32, ::google::protobuf::internal::WireFormatLite::TYPE_INT32>( + input, this->mutable_span()))); + } else if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) + == ::google::protobuf::internal::WireFormatLite:: + WIRETYPE_VARINT) { + DO_((::google::protobuf::internal::WireFormatLite::ReadRepeatedPrimitiveNoInline< + ::google::protobuf::int32, ::google::protobuf::internal::WireFormatLite::TYPE_INT32>( + 1, 18, input, this->mutable_span()))); + } else { + goto handle_uninterpreted; + } + if (input->ExpectTag(26)) goto parse_leading_comments; + break; + } + + // optional string leading_comments = 3; + case 3: { + if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == + ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) { + parse_leading_comments: + DO_(::google::protobuf::internal::WireFormatLite::ReadString( + input, this->mutable_leading_comments())); + ::google::protobuf::internal::WireFormat::VerifyUTF8String( + this->leading_comments().data(), this->leading_comments().length(), + ::google::protobuf::internal::WireFormat::PARSE); + } else { + goto handle_uninterpreted; + } + if (input->ExpectTag(34)) goto parse_trailing_comments; + break; + } + + // optional string trailing_comments = 4; + case 4: { + if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == + ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) { + parse_trailing_comments: + DO_(::google::protobuf::internal::WireFormatLite::ReadString( + input, this->mutable_trailing_comments())); + ::google::protobuf::internal::WireFormat::VerifyUTF8String( + this->trailing_comments().data(), this->trailing_comments().length(), + ::google::protobuf::internal::WireFormat::PARSE); + } else { + goto handle_uninterpreted; + } + if (input->ExpectAtEnd()) return true; + break; + } + + default: { + handle_uninterpreted: + if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == + ::google::protobuf::internal::WireFormatLite::WIRETYPE_END_GROUP) { + return true; + } + DO_(::google::protobuf::internal::WireFormat::SkipField( + input, tag, mutable_unknown_fields())); + break; + } + } + } + return true; +#undef DO_ +} + +void SourceCodeInfo_Location::SerializeWithCachedSizes( + ::google::protobuf::io::CodedOutputStream* output) const { + // repeated int32 path = 1 [packed = true]; + if (this->path_size() > 0) { + ::google::protobuf::internal::WireFormatLite::WriteTag(1, ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED, output); + output->WriteVarint32(_path_cached_byte_size_); + } + for (int i = 0; i < this->path_size(); i++) { + ::google::protobuf::internal::WireFormatLite::WriteInt32NoTag( + this->path(i), output); + } + + // repeated int32 span = 2 [packed = true]; + if (this->span_size() > 0) { + ::google::protobuf::internal::WireFormatLite::WriteTag(2, ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED, output); + output->WriteVarint32(_span_cached_byte_size_); + } + for (int i = 0; i < this->span_size(); i++) { + ::google::protobuf::internal::WireFormatLite::WriteInt32NoTag( + this->span(i), output); + } + + // optional string leading_comments = 3; + if (has_leading_comments()) { + ::google::protobuf::internal::WireFormat::VerifyUTF8String( + this->leading_comments().data(), this->leading_comments().length(), + ::google::protobuf::internal::WireFormat::SERIALIZE); + ::google::protobuf::internal::WireFormatLite::WriteString( + 3, this->leading_comments(), output); + } + + // optional string trailing_comments = 4; + if (has_trailing_comments()) { + ::google::protobuf::internal::WireFormat::VerifyUTF8String( + this->trailing_comments().data(), this->trailing_comments().length(), + ::google::protobuf::internal::WireFormat::SERIALIZE); + ::google::protobuf::internal::WireFormatLite::WriteString( + 4, this->trailing_comments(), output); + } + + if (!unknown_fields().empty()) { + ::google::protobuf::internal::WireFormat::SerializeUnknownFields( + unknown_fields(), output); + } +} + +::google::protobuf::uint8* SourceCodeInfo_Location::SerializeWithCachedSizesToArray( + ::google::protobuf::uint8* target) const { + // repeated int32 path = 1 [packed = true]; + if (this->path_size() > 0) { + target = ::google::protobuf::internal::WireFormatLite::WriteTagToArray( + 1, + ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED, + target); + target = ::google::protobuf::io::CodedOutputStream::WriteVarint32ToArray( + _path_cached_byte_size_, target); + } + for (int i = 0; i < this->path_size(); i++) { + target = ::google::protobuf::internal::WireFormatLite:: + WriteInt32NoTagToArray(this->path(i), target); + } + + // repeated int32 span = 2 [packed = true]; + if (this->span_size() > 0) { + target = ::google::protobuf::internal::WireFormatLite::WriteTagToArray( + 2, + ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED, + target); + target = ::google::protobuf::io::CodedOutputStream::WriteVarint32ToArray( + _span_cached_byte_size_, target); + } + for (int i = 0; i < this->span_size(); i++) { + target = ::google::protobuf::internal::WireFormatLite:: + WriteInt32NoTagToArray(this->span(i), target); + } + + // optional string leading_comments = 3; + if (has_leading_comments()) { + ::google::protobuf::internal::WireFormat::VerifyUTF8String( + this->leading_comments().data(), this->leading_comments().length(), + ::google::protobuf::internal::WireFormat::SERIALIZE); + target = + ::google::protobuf::internal::WireFormatLite::WriteStringToArray( + 3, this->leading_comments(), target); + } + + // optional string trailing_comments = 4; + if (has_trailing_comments()) { + ::google::protobuf::internal::WireFormat::VerifyUTF8String( + this->trailing_comments().data(), this->trailing_comments().length(), + ::google::protobuf::internal::WireFormat::SERIALIZE); + target = + ::google::protobuf::internal::WireFormatLite::WriteStringToArray( + 4, this->trailing_comments(), target); + } + + if (!unknown_fields().empty()) { + target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray( + unknown_fields(), target); + } + return target; +} + +int SourceCodeInfo_Location::ByteSize() const { + int total_size = 0; + + if (_has_bits_[2 / 32] & (0xffu << (2 % 32))) { + // optional string leading_comments = 3; + if (has_leading_comments()) { + total_size += 1 + + ::google::protobuf::internal::WireFormatLite::StringSize( + this->leading_comments()); + } + + // optional string trailing_comments = 4; + if (has_trailing_comments()) { + total_size += 1 + + ::google::protobuf::internal::WireFormatLite::StringSize( + this->trailing_comments()); + } + + } + // repeated int32 path = 1 [packed = true]; + { + int data_size = 0; + for (int i = 0; i < this->path_size(); i++) { + data_size += ::google::protobuf::internal::WireFormatLite:: + Int32Size(this->path(i)); + } + if (data_size > 0) { + total_size += 1 + + ::google::protobuf::internal::WireFormatLite::Int32Size(data_size); + } + GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN(); + _path_cached_byte_size_ = data_size; + GOOGLE_SAFE_CONCURRENT_WRITES_END(); + total_size += data_size; + } + + // repeated int32 span = 2 [packed = true]; + { + int data_size = 0; + for (int i = 0; i < this->span_size(); i++) { + data_size += ::google::protobuf::internal::WireFormatLite:: + Int32Size(this->span(i)); + } + if (data_size > 0) { + total_size += 1 + + ::google::protobuf::internal::WireFormatLite::Int32Size(data_size); + } + GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN(); + _span_cached_byte_size_ = data_size; + GOOGLE_SAFE_CONCURRENT_WRITES_END(); + total_size += data_size; + } + + if (!unknown_fields().empty()) { + total_size += + ::google::protobuf::internal::WireFormat::ComputeUnknownFieldsSize( + unknown_fields()); + } + GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN(); + _cached_size_ = total_size; + GOOGLE_SAFE_CONCURRENT_WRITES_END(); + return total_size; +} + +void SourceCodeInfo_Location::MergeFrom(const ::google::protobuf::Message& from) { + GOOGLE_CHECK_NE(&from, this); + const SourceCodeInfo_Location* source = + ::google::protobuf::internal::dynamic_cast_if_available( + &from); + if (source == NULL) { + ::google::protobuf::internal::ReflectionOps::Merge(from, this); + } else { + MergeFrom(*source); + } +} + +void SourceCodeInfo_Location::MergeFrom(const SourceCodeInfo_Location& from) { + GOOGLE_CHECK_NE(&from, this); + path_.MergeFrom(from.path_); + span_.MergeFrom(from.span_); + if (from._has_bits_[2 / 32] & (0xffu << (2 % 32))) { + if (from.has_leading_comments()) { + set_leading_comments(from.leading_comments()); + } + if (from.has_trailing_comments()) { + set_trailing_comments(from.trailing_comments()); + } + } + mutable_unknown_fields()->MergeFrom(from.unknown_fields()); +} + +void SourceCodeInfo_Location::CopyFrom(const ::google::protobuf::Message& from) { + if (&from == this) return; + Clear(); + MergeFrom(from); +} + +void SourceCodeInfo_Location::CopyFrom(const SourceCodeInfo_Location& from) { + if (&from == this) return; + Clear(); + MergeFrom(from); +} + +bool SourceCodeInfo_Location::IsInitialized() const { + + return true; +} + +void SourceCodeInfo_Location::Swap(SourceCodeInfo_Location* other) { + if (other != this) { + path_.Swap(&other->path_); + span_.Swap(&other->span_); + std::swap(leading_comments_, other->leading_comments_); + std::swap(trailing_comments_, other->trailing_comments_); + std::swap(_has_bits_[0], other->_has_bits_[0]); + _unknown_fields_.Swap(&other->_unknown_fields_); + std::swap(_cached_size_, other->_cached_size_); + } +} + +::google::protobuf::Metadata SourceCodeInfo_Location::GetMetadata() const { + protobuf_AssignDescriptorsOnce(); + ::google::protobuf::Metadata metadata; + metadata.descriptor = SourceCodeInfo_Location_descriptor_; + metadata.reflection = SourceCodeInfo_Location_reflection_; + return metadata; +} + + +// ------------------------------------------------------------------- + +#ifndef _MSC_VER +const int SourceCodeInfo::kLocationFieldNumber; +#endif // !_MSC_VER + +SourceCodeInfo::SourceCodeInfo() + : ::google::protobuf::Message() { + SharedCtor(); +} + +void SourceCodeInfo::InitAsDefaultInstance() { +} + +SourceCodeInfo::SourceCodeInfo(const SourceCodeInfo& from) + : ::google::protobuf::Message() { + SharedCtor(); + MergeFrom(from); +} + +void SourceCodeInfo::SharedCtor() { + _cached_size_ = 0; + ::memset(_has_bits_, 0, sizeof(_has_bits_)); +} + +SourceCodeInfo::~SourceCodeInfo() { + SharedDtor(); +} + +void SourceCodeInfo::SharedDtor() { + if (this != default_instance_) { + } +} + +void SourceCodeInfo::SetCachedSize(int size) const { + GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN(); + _cached_size_ = size; + GOOGLE_SAFE_CONCURRENT_WRITES_END(); +} +const ::google::protobuf::Descriptor* SourceCodeInfo::descriptor() { + protobuf_AssignDescriptorsOnce(); + return SourceCodeInfo_descriptor_; +} + +const SourceCodeInfo& SourceCodeInfo::default_instance() { + if (default_instance_ == NULL) protobuf_AddDesc_google_2fprotobuf_2fdescriptor_2eproto(); + return *default_instance_; +} + +SourceCodeInfo* SourceCodeInfo::default_instance_ = NULL; + +SourceCodeInfo* SourceCodeInfo::New() const { + return new SourceCodeInfo; +} + +void SourceCodeInfo::Clear() { + location_.Clear(); + ::memset(_has_bits_, 0, sizeof(_has_bits_)); + mutable_unknown_fields()->Clear(); +} + +bool SourceCodeInfo::MergePartialFromCodedStream( + ::google::protobuf::io::CodedInputStream* input) { +#define DO_(EXPRESSION) if (!(EXPRESSION)) return false + ::google::protobuf::uint32 tag; + while ((tag = input->ReadTag()) != 0) { + switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) { + // repeated .google.protobuf.SourceCodeInfo.Location location = 1; + case 1: { + if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == + ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) { + parse_location: + DO_(::google::protobuf::internal::WireFormatLite::ReadMessageNoVirtual( + input, add_location())); + } else { + goto handle_uninterpreted; + } + if (input->ExpectTag(10)) goto parse_location; + if (input->ExpectAtEnd()) return true; + break; + } + + default: { + handle_uninterpreted: + if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == + ::google::protobuf::internal::WireFormatLite::WIRETYPE_END_GROUP) { + return true; + } + DO_(::google::protobuf::internal::WireFormat::SkipField( + input, tag, mutable_unknown_fields())); + break; + } + } + } + return true; +#undef DO_ +} + +void SourceCodeInfo::SerializeWithCachedSizes( + ::google::protobuf::io::CodedOutputStream* output) const { + // repeated .google.protobuf.SourceCodeInfo.Location location = 1; + for (int i = 0; i < this->location_size(); i++) { + ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray( + 1, this->location(i), output); + } + + if (!unknown_fields().empty()) { + ::google::protobuf::internal::WireFormat::SerializeUnknownFields( + unknown_fields(), output); + } +} + +::google::protobuf::uint8* SourceCodeInfo::SerializeWithCachedSizesToArray( + ::google::protobuf::uint8* target) const { + // repeated .google.protobuf.SourceCodeInfo.Location location = 1; + for (int i = 0; i < this->location_size(); i++) { + target = ::google::protobuf::internal::WireFormatLite:: + WriteMessageNoVirtualToArray( + 1, this->location(i), target); + } + + if (!unknown_fields().empty()) { + target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray( + unknown_fields(), target); + } + return target; +} + +int SourceCodeInfo::ByteSize() const { + int total_size = 0; + + // repeated .google.protobuf.SourceCodeInfo.Location location = 1; + total_size += 1 * this->location_size(); + for (int i = 0; i < this->location_size(); i++) { + total_size += + ::google::protobuf::internal::WireFormatLite::MessageSizeNoVirtual( + this->location(i)); + } + + if (!unknown_fields().empty()) { + total_size += + ::google::protobuf::internal::WireFormat::ComputeUnknownFieldsSize( + unknown_fields()); + } + GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN(); + _cached_size_ = total_size; + GOOGLE_SAFE_CONCURRENT_WRITES_END(); + return total_size; +} + +void SourceCodeInfo::MergeFrom(const ::google::protobuf::Message& from) { + GOOGLE_CHECK_NE(&from, this); + const SourceCodeInfo* source = + ::google::protobuf::internal::dynamic_cast_if_available( + &from); + if (source == NULL) { + ::google::protobuf::internal::ReflectionOps::Merge(from, this); + } else { + MergeFrom(*source); + } +} + +void SourceCodeInfo::MergeFrom(const SourceCodeInfo& from) { + GOOGLE_CHECK_NE(&from, this); + location_.MergeFrom(from.location_); + mutable_unknown_fields()->MergeFrom(from.unknown_fields()); +} + +void SourceCodeInfo::CopyFrom(const ::google::protobuf::Message& from) { + if (&from == this) return; + Clear(); + MergeFrom(from); +} + +void SourceCodeInfo::CopyFrom(const SourceCodeInfo& from) { + if (&from == this) return; + Clear(); + MergeFrom(from); +} + +bool SourceCodeInfo::IsInitialized() const { + + return true; +} + +void SourceCodeInfo::Swap(SourceCodeInfo* other) { + if (other != this) { + location_.Swap(&other->location_); + std::swap(_has_bits_[0], other->_has_bits_[0]); + _unknown_fields_.Swap(&other->_unknown_fields_); + std::swap(_cached_size_, other->_cached_size_); + } +} + +::google::protobuf::Metadata SourceCodeInfo::GetMetadata() const { + protobuf_AssignDescriptorsOnce(); + ::google::protobuf::Metadata metadata; + metadata.descriptor = SourceCodeInfo_descriptor_; + metadata.reflection = SourceCodeInfo_reflection_; + return metadata; +} + + // @@protoc_insertion_point(namespace_scope) } // namespace protobuf diff --git a/cpp/thirdparty/protobuf-2.3.0/src/google/protobuf/descriptor.pb.h b/cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/descriptor.pb.h similarity index 64% rename from cpp/thirdparty/protobuf-2.3.0/src/google/protobuf/descriptor.pb.h rename to cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/descriptor.pb.h index 2743b6f5f..07cf8077c 100644 --- a/cpp/thirdparty/protobuf-2.3.0/src/google/protobuf/descriptor.pb.h +++ b/cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/descriptor.pb.h @@ -8,21 +8,23 @@ #include -#if GOOGLE_PROTOBUF_VERSION < 2003000 +#if GOOGLE_PROTOBUF_VERSION < 2005000 #error This file was generated by a newer version of protoc which is #error incompatible with your Protocol Buffer headers. Please update #error your headers. #endif -#if 2003000 < GOOGLE_PROTOBUF_MIN_PROTOC_VERSION +#if 2005000 < GOOGLE_PROTOBUF_MIN_PROTOC_VERSION #error This file was generated by an older version of protoc which is #error incompatible with your Protocol Buffer headers. Please #error regenerate this file with a newer version of protoc. #endif #include +#include #include #include -#include +#include +#include // @@protoc_insertion_point(includes) namespace google { @@ -51,6 +53,8 @@ class ServiceOptions; class MethodOptions; class UninterpretedOption; class UninterpretedOption_NamePart; +class SourceCodeInfo; +class SourceCodeInfo_Location; enum FieldDescriptorProto_Type { FieldDescriptorProto_Type_TYPE_DOUBLE = 1, @@ -153,29 +157,29 @@ class LIBPROTOBUF_EXPORT FileDescriptorSet : public ::google::protobuf::Message public: FileDescriptorSet(); virtual ~FileDescriptorSet(); - + FileDescriptorSet(const FileDescriptorSet& from); - + inline FileDescriptorSet& operator=(const FileDescriptorSet& from) { CopyFrom(from); return *this; } - + inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const { return _unknown_fields_; } - + inline ::google::protobuf::UnknownFieldSet* mutable_unknown_fields() { return &_unknown_fields_; } - + static const ::google::protobuf::Descriptor* descriptor(); static const FileDescriptorSet& default_instance(); - + void Swap(FileDescriptorSet* other); - + // implements Message ---------------------------------------------- - + FileDescriptorSet* New() const; void CopyFrom(const ::google::protobuf::Message& from); void MergeFrom(const ::google::protobuf::Message& from); @@ -183,7 +187,7 @@ class LIBPROTOBUF_EXPORT FileDescriptorSet : public ::google::protobuf::Message void MergeFrom(const FileDescriptorSet& from); void Clear(); bool IsInitialized() const; - + int ByteSize() const; bool MergePartialFromCodedStream( ::google::protobuf::io::CodedInputStream* input); @@ -196,13 +200,13 @@ class LIBPROTOBUF_EXPORT FileDescriptorSet : public ::google::protobuf::Message void SharedDtor(); void SetCachedSize(int size) const; public: - + ::google::protobuf::Metadata GetMetadata() const; - + // nested types ---------------------------------------------------- - + // accessors ------------------------------------------------------- - + // repeated .google.protobuf.FileDescriptorProto file = 1; inline int file_size() const; inline void clear_file(); @@ -214,30 +218,21 @@ class LIBPROTOBUF_EXPORT FileDescriptorSet : public ::google::protobuf::Message file() const; inline ::google::protobuf::RepeatedPtrField< ::google::protobuf::FileDescriptorProto >* mutable_file(); - + // @@protoc_insertion_point(class_scope:google.protobuf.FileDescriptorSet) private: + ::google::protobuf::UnknownFieldSet _unknown_fields_; - mutable int _cached_size_; - + ::google::protobuf::RepeatedPtrField< ::google::protobuf::FileDescriptorProto > file_; + + mutable int _cached_size_; + ::google::protobuf::uint32 _has_bits_[(1 + 31) / 32]; + friend void LIBPROTOBUF_EXPORT protobuf_AddDesc_google_2fprotobuf_2fdescriptor_2eproto(); friend void protobuf_AssignDesc_google_2fprotobuf_2fdescriptor_2eproto(); friend void protobuf_ShutdownFile_google_2fprotobuf_2fdescriptor_2eproto(); - - ::google::protobuf::uint32 _has_bits_[(1 + 31) / 32]; - - // WHY DOES & HAVE LOWER PRECEDENCE THAN != !? - inline bool _has_bit(int index) const { - return (_has_bits_[index / 32] & (1u << (index % 32))) != 0; - } - inline void _set_bit(int index) { - _has_bits_[index / 32] |= (1u << (index % 32)); - } - inline void _clear_bit(int index) { - _has_bits_[index / 32] &= ~(1u << (index % 32)); - } - + void InitAsDefaultInstance(); static FileDescriptorSet* default_instance_; }; @@ -247,29 +242,29 @@ class LIBPROTOBUF_EXPORT FileDescriptorProto : public ::google::protobuf::Messag public: FileDescriptorProto(); virtual ~FileDescriptorProto(); - + FileDescriptorProto(const FileDescriptorProto& from); - + inline FileDescriptorProto& operator=(const FileDescriptorProto& from) { CopyFrom(from); return *this; } - + inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const { return _unknown_fields_; } - + inline ::google::protobuf::UnknownFieldSet* mutable_unknown_fields() { return &_unknown_fields_; } - + static const ::google::protobuf::Descriptor* descriptor(); static const FileDescriptorProto& default_instance(); - + void Swap(FileDescriptorProto* other); - + // implements Message ---------------------------------------------- - + FileDescriptorProto* New() const; void CopyFrom(const ::google::protobuf::Message& from); void MergeFrom(const ::google::protobuf::Message& from); @@ -277,7 +272,7 @@ class LIBPROTOBUF_EXPORT FileDescriptorProto : public ::google::protobuf::Messag void MergeFrom(const FileDescriptorProto& from); void Clear(); bool IsInitialized() const; - + int ByteSize() const; bool MergePartialFromCodedStream( ::google::protobuf::io::CodedInputStream* input); @@ -290,13 +285,13 @@ class LIBPROTOBUF_EXPORT FileDescriptorProto : public ::google::protobuf::Messag void SharedDtor(); void SetCachedSize(int size) const; public: - + ::google::protobuf::Metadata GetMetadata() const; - + // nested types ---------------------------------------------------- - + // accessors ------------------------------------------------------- - + // optional string name = 1; inline bool has_name() const; inline void clear_name(); @@ -306,7 +301,9 @@ class LIBPROTOBUF_EXPORT FileDescriptorProto : public ::google::protobuf::Messag inline void set_name(const char* value); inline void set_name(const char* value, size_t size); inline ::std::string* mutable_name(); - + inline ::std::string* release_name(); + inline void set_allocated_name(::std::string* name); + // optional string package = 2; inline bool has_package() const; inline void clear_package(); @@ -316,7 +313,9 @@ class LIBPROTOBUF_EXPORT FileDescriptorProto : public ::google::protobuf::Messag inline void set_package(const char* value); inline void set_package(const char* value, size_t size); inline ::std::string* mutable_package(); - + inline ::std::string* release_package(); + inline void set_allocated_package(::std::string* package); + // repeated string dependency = 3; inline int dependency_size() const; inline void clear_dependency(); @@ -332,7 +331,31 @@ class LIBPROTOBUF_EXPORT FileDescriptorProto : public ::google::protobuf::Messag inline void add_dependency(const char* value, size_t size); inline const ::google::protobuf::RepeatedPtrField< ::std::string>& dependency() const; inline ::google::protobuf::RepeatedPtrField< ::std::string>* mutable_dependency(); - + + // repeated int32 public_dependency = 10; + inline int public_dependency_size() const; + inline void clear_public_dependency(); + static const int kPublicDependencyFieldNumber = 10; + inline ::google::protobuf::int32 public_dependency(int index) const; + inline void set_public_dependency(int index, ::google::protobuf::int32 value); + inline void add_public_dependency(::google::protobuf::int32 value); + inline const ::google::protobuf::RepeatedField< ::google::protobuf::int32 >& + public_dependency() const; + inline ::google::protobuf::RepeatedField< ::google::protobuf::int32 >* + mutable_public_dependency(); + + // repeated int32 weak_dependency = 11; + inline int weak_dependency_size() const; + inline void clear_weak_dependency(); + static const int kWeakDependencyFieldNumber = 11; + inline ::google::protobuf::int32 weak_dependency(int index) const; + inline void set_weak_dependency(int index, ::google::protobuf::int32 value); + inline void add_weak_dependency(::google::protobuf::int32 value); + inline const ::google::protobuf::RepeatedField< ::google::protobuf::int32 >& + weak_dependency() const; + inline ::google::protobuf::RepeatedField< ::google::protobuf::int32 >* + mutable_weak_dependency(); + // repeated .google.protobuf.DescriptorProto message_type = 4; inline int message_type_size() const; inline void clear_message_type(); @@ -344,7 +367,7 @@ class LIBPROTOBUF_EXPORT FileDescriptorProto : public ::google::protobuf::Messag message_type() const; inline ::google::protobuf::RepeatedPtrField< ::google::protobuf::DescriptorProto >* mutable_message_type(); - + // repeated .google.protobuf.EnumDescriptorProto enum_type = 5; inline int enum_type_size() const; inline void clear_enum_type(); @@ -356,7 +379,7 @@ class LIBPROTOBUF_EXPORT FileDescriptorProto : public ::google::protobuf::Messag enum_type() const; inline ::google::protobuf::RepeatedPtrField< ::google::protobuf::EnumDescriptorProto >* mutable_enum_type(); - + // repeated .google.protobuf.ServiceDescriptorProto service = 6; inline int service_size() const; inline void clear_service(); @@ -368,7 +391,7 @@ class LIBPROTOBUF_EXPORT FileDescriptorProto : public ::google::protobuf::Messag service() const; inline ::google::protobuf::RepeatedPtrField< ::google::protobuf::ServiceDescriptorProto >* mutable_service(); - + // repeated .google.protobuf.FieldDescriptorProto extension = 7; inline int extension_size() const; inline void clear_extension(); @@ -380,46 +403,57 @@ class LIBPROTOBUF_EXPORT FileDescriptorProto : public ::google::protobuf::Messag extension() const; inline ::google::protobuf::RepeatedPtrField< ::google::protobuf::FieldDescriptorProto >* mutable_extension(); - + // optional .google.protobuf.FileOptions options = 8; inline bool has_options() const; inline void clear_options(); static const int kOptionsFieldNumber = 8; inline const ::google::protobuf::FileOptions& options() const; inline ::google::protobuf::FileOptions* mutable_options(); - + inline ::google::protobuf::FileOptions* release_options(); + inline void set_allocated_options(::google::protobuf::FileOptions* options); + + // optional .google.protobuf.SourceCodeInfo source_code_info = 9; + inline bool has_source_code_info() const; + inline void clear_source_code_info(); + static const int kSourceCodeInfoFieldNumber = 9; + inline const ::google::protobuf::SourceCodeInfo& source_code_info() const; + inline ::google::protobuf::SourceCodeInfo* mutable_source_code_info(); + inline ::google::protobuf::SourceCodeInfo* release_source_code_info(); + inline void set_allocated_source_code_info(::google::protobuf::SourceCodeInfo* source_code_info); + // @@protoc_insertion_point(class_scope:google.protobuf.FileDescriptorProto) private: + inline void set_has_name(); + inline void clear_has_name(); + inline void set_has_package(); + inline void clear_has_package(); + inline void set_has_options(); + inline void clear_has_options(); + inline void set_has_source_code_info(); + inline void clear_has_source_code_info(); + ::google::protobuf::UnknownFieldSet _unknown_fields_; - mutable int _cached_size_; - + ::std::string* name_; - static const ::std::string _default_name_; ::std::string* package_; - static const ::std::string _default_package_; ::google::protobuf::RepeatedPtrField< ::std::string> dependency_; + ::google::protobuf::RepeatedField< ::google::protobuf::int32 > public_dependency_; + ::google::protobuf::RepeatedField< ::google::protobuf::int32 > weak_dependency_; ::google::protobuf::RepeatedPtrField< ::google::protobuf::DescriptorProto > message_type_; ::google::protobuf::RepeatedPtrField< ::google::protobuf::EnumDescriptorProto > enum_type_; ::google::protobuf::RepeatedPtrField< ::google::protobuf::ServiceDescriptorProto > service_; ::google::protobuf::RepeatedPtrField< ::google::protobuf::FieldDescriptorProto > extension_; ::google::protobuf::FileOptions* options_; + ::google::protobuf::SourceCodeInfo* source_code_info_; + + mutable int _cached_size_; + ::google::protobuf::uint32 _has_bits_[(11 + 31) / 32]; + friend void LIBPROTOBUF_EXPORT protobuf_AddDesc_google_2fprotobuf_2fdescriptor_2eproto(); friend void protobuf_AssignDesc_google_2fprotobuf_2fdescriptor_2eproto(); friend void protobuf_ShutdownFile_google_2fprotobuf_2fdescriptor_2eproto(); - - ::google::protobuf::uint32 _has_bits_[(8 + 31) / 32]; - - // WHY DOES & HAVE LOWER PRECEDENCE THAN != !? - inline bool _has_bit(int index) const { - return (_has_bits_[index / 32] & (1u << (index % 32))) != 0; - } - inline void _set_bit(int index) { - _has_bits_[index / 32] |= (1u << (index % 32)); - } - inline void _clear_bit(int index) { - _has_bits_[index / 32] &= ~(1u << (index % 32)); - } - + void InitAsDefaultInstance(); static FileDescriptorProto* default_instance_; }; @@ -429,29 +463,29 @@ class LIBPROTOBUF_EXPORT DescriptorProto_ExtensionRange : public ::google::proto public: DescriptorProto_ExtensionRange(); virtual ~DescriptorProto_ExtensionRange(); - + DescriptorProto_ExtensionRange(const DescriptorProto_ExtensionRange& from); - + inline DescriptorProto_ExtensionRange& operator=(const DescriptorProto_ExtensionRange& from) { CopyFrom(from); return *this; } - + inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const { return _unknown_fields_; } - + inline ::google::protobuf::UnknownFieldSet* mutable_unknown_fields() { return &_unknown_fields_; } - + static const ::google::protobuf::Descriptor* descriptor(); static const DescriptorProto_ExtensionRange& default_instance(); - + void Swap(DescriptorProto_ExtensionRange* other); - + // implements Message ---------------------------------------------- - + DescriptorProto_ExtensionRange* New() const; void CopyFrom(const ::google::protobuf::Message& from); void MergeFrom(const ::google::protobuf::Message& from); @@ -459,7 +493,7 @@ class LIBPROTOBUF_EXPORT DescriptorProto_ExtensionRange : public ::google::proto void MergeFrom(const DescriptorProto_ExtensionRange& from); void Clear(); bool IsInitialized() const; - + int ByteSize() const; bool MergePartialFromCodedStream( ::google::protobuf::io::CodedInputStream* input); @@ -472,51 +506,46 @@ class LIBPROTOBUF_EXPORT DescriptorProto_ExtensionRange : public ::google::proto void SharedDtor(); void SetCachedSize(int size) const; public: - + ::google::protobuf::Metadata GetMetadata() const; - + // nested types ---------------------------------------------------- - + // accessors ------------------------------------------------------- - + // optional int32 start = 1; inline bool has_start() const; inline void clear_start(); static const int kStartFieldNumber = 1; inline ::google::protobuf::int32 start() const; inline void set_start(::google::protobuf::int32 value); - + // optional int32 end = 2; inline bool has_end() const; inline void clear_end(); static const int kEndFieldNumber = 2; inline ::google::protobuf::int32 end() const; inline void set_end(::google::protobuf::int32 value); - + // @@protoc_insertion_point(class_scope:google.protobuf.DescriptorProto.ExtensionRange) private: + inline void set_has_start(); + inline void clear_has_start(); + inline void set_has_end(); + inline void clear_has_end(); + ::google::protobuf::UnknownFieldSet _unknown_fields_; - mutable int _cached_size_; - + ::google::protobuf::int32 start_; ::google::protobuf::int32 end_; + + mutable int _cached_size_; + ::google::protobuf::uint32 _has_bits_[(2 + 31) / 32]; + friend void LIBPROTOBUF_EXPORT protobuf_AddDesc_google_2fprotobuf_2fdescriptor_2eproto(); friend void protobuf_AssignDesc_google_2fprotobuf_2fdescriptor_2eproto(); friend void protobuf_ShutdownFile_google_2fprotobuf_2fdescriptor_2eproto(); - - ::google::protobuf::uint32 _has_bits_[(2 + 31) / 32]; - - // WHY DOES & HAVE LOWER PRECEDENCE THAN != !? - inline bool _has_bit(int index) const { - return (_has_bits_[index / 32] & (1u << (index % 32))) != 0; - } - inline void _set_bit(int index) { - _has_bits_[index / 32] |= (1u << (index % 32)); - } - inline void _clear_bit(int index) { - _has_bits_[index / 32] &= ~(1u << (index % 32)); - } - + void InitAsDefaultInstance(); static DescriptorProto_ExtensionRange* default_instance_; }; @@ -526,29 +555,29 @@ class LIBPROTOBUF_EXPORT DescriptorProto : public ::google::protobuf::Message { public: DescriptorProto(); virtual ~DescriptorProto(); - + DescriptorProto(const DescriptorProto& from); - + inline DescriptorProto& operator=(const DescriptorProto& from) { CopyFrom(from); return *this; } - + inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const { return _unknown_fields_; } - + inline ::google::protobuf::UnknownFieldSet* mutable_unknown_fields() { return &_unknown_fields_; } - + static const ::google::protobuf::Descriptor* descriptor(); static const DescriptorProto& default_instance(); - + void Swap(DescriptorProto* other); - + // implements Message ---------------------------------------------- - + DescriptorProto* New() const; void CopyFrom(const ::google::protobuf::Message& from); void MergeFrom(const ::google::protobuf::Message& from); @@ -556,7 +585,7 @@ class LIBPROTOBUF_EXPORT DescriptorProto : public ::google::protobuf::Message { void MergeFrom(const DescriptorProto& from); void Clear(); bool IsInitialized() const; - + int ByteSize() const; bool MergePartialFromCodedStream( ::google::protobuf::io::CodedInputStream* input); @@ -569,15 +598,15 @@ class LIBPROTOBUF_EXPORT DescriptorProto : public ::google::protobuf::Message { void SharedDtor(); void SetCachedSize(int size) const; public: - + ::google::protobuf::Metadata GetMetadata() const; - + // nested types ---------------------------------------------------- - + typedef DescriptorProto_ExtensionRange ExtensionRange; - + // accessors ------------------------------------------------------- - + // optional string name = 1; inline bool has_name() const; inline void clear_name(); @@ -587,7 +616,9 @@ class LIBPROTOBUF_EXPORT DescriptorProto : public ::google::protobuf::Message { inline void set_name(const char* value); inline void set_name(const char* value, size_t size); inline ::std::string* mutable_name(); - + inline ::std::string* release_name(); + inline void set_allocated_name(::std::string* name); + // repeated .google.protobuf.FieldDescriptorProto field = 2; inline int field_size() const; inline void clear_field(); @@ -599,7 +630,7 @@ class LIBPROTOBUF_EXPORT DescriptorProto : public ::google::protobuf::Message { field() const; inline ::google::protobuf::RepeatedPtrField< ::google::protobuf::FieldDescriptorProto >* mutable_field(); - + // repeated .google.protobuf.FieldDescriptorProto extension = 6; inline int extension_size() const; inline void clear_extension(); @@ -611,7 +642,7 @@ class LIBPROTOBUF_EXPORT DescriptorProto : public ::google::protobuf::Message { extension() const; inline ::google::protobuf::RepeatedPtrField< ::google::protobuf::FieldDescriptorProto >* mutable_extension(); - + // repeated .google.protobuf.DescriptorProto nested_type = 3; inline int nested_type_size() const; inline void clear_nested_type(); @@ -623,7 +654,7 @@ class LIBPROTOBUF_EXPORT DescriptorProto : public ::google::protobuf::Message { nested_type() const; inline ::google::protobuf::RepeatedPtrField< ::google::protobuf::DescriptorProto >* mutable_nested_type(); - + // repeated .google.protobuf.EnumDescriptorProto enum_type = 4; inline int enum_type_size() const; inline void clear_enum_type(); @@ -635,7 +666,7 @@ class LIBPROTOBUF_EXPORT DescriptorProto : public ::google::protobuf::Message { enum_type() const; inline ::google::protobuf::RepeatedPtrField< ::google::protobuf::EnumDescriptorProto >* mutable_enum_type(); - + // repeated .google.protobuf.DescriptorProto.ExtensionRange extension_range = 5; inline int extension_range_size() const; inline void clear_extension_range(); @@ -647,44 +678,40 @@ class LIBPROTOBUF_EXPORT DescriptorProto : public ::google::protobuf::Message { extension_range() const; inline ::google::protobuf::RepeatedPtrField< ::google::protobuf::DescriptorProto_ExtensionRange >* mutable_extension_range(); - + // optional .google.protobuf.MessageOptions options = 7; inline bool has_options() const; inline void clear_options(); static const int kOptionsFieldNumber = 7; inline const ::google::protobuf::MessageOptions& options() const; inline ::google::protobuf::MessageOptions* mutable_options(); - + inline ::google::protobuf::MessageOptions* release_options(); + inline void set_allocated_options(::google::protobuf::MessageOptions* options); + // @@protoc_insertion_point(class_scope:google.protobuf.DescriptorProto) private: + inline void set_has_name(); + inline void clear_has_name(); + inline void set_has_options(); + inline void clear_has_options(); + ::google::protobuf::UnknownFieldSet _unknown_fields_; - mutable int _cached_size_; - + ::std::string* name_; - static const ::std::string _default_name_; ::google::protobuf::RepeatedPtrField< ::google::protobuf::FieldDescriptorProto > field_; ::google::protobuf::RepeatedPtrField< ::google::protobuf::FieldDescriptorProto > extension_; ::google::protobuf::RepeatedPtrField< ::google::protobuf::DescriptorProto > nested_type_; ::google::protobuf::RepeatedPtrField< ::google::protobuf::EnumDescriptorProto > enum_type_; ::google::protobuf::RepeatedPtrField< ::google::protobuf::DescriptorProto_ExtensionRange > extension_range_; ::google::protobuf::MessageOptions* options_; + + mutable int _cached_size_; + ::google::protobuf::uint32 _has_bits_[(7 + 31) / 32]; + friend void LIBPROTOBUF_EXPORT protobuf_AddDesc_google_2fprotobuf_2fdescriptor_2eproto(); friend void protobuf_AssignDesc_google_2fprotobuf_2fdescriptor_2eproto(); friend void protobuf_ShutdownFile_google_2fprotobuf_2fdescriptor_2eproto(); - - ::google::protobuf::uint32 _has_bits_[(7 + 31) / 32]; - - // WHY DOES & HAVE LOWER PRECEDENCE THAN != !? - inline bool _has_bit(int index) const { - return (_has_bits_[index / 32] & (1u << (index % 32))) != 0; - } - inline void _set_bit(int index) { - _has_bits_[index / 32] |= (1u << (index % 32)); - } - inline void _clear_bit(int index) { - _has_bits_[index / 32] &= ~(1u << (index % 32)); - } - + void InitAsDefaultInstance(); static DescriptorProto* default_instance_; }; @@ -694,29 +721,29 @@ class LIBPROTOBUF_EXPORT FieldDescriptorProto : public ::google::protobuf::Messa public: FieldDescriptorProto(); virtual ~FieldDescriptorProto(); - + FieldDescriptorProto(const FieldDescriptorProto& from); - + inline FieldDescriptorProto& operator=(const FieldDescriptorProto& from) { CopyFrom(from); return *this; } - + inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const { return _unknown_fields_; } - + inline ::google::protobuf::UnknownFieldSet* mutable_unknown_fields() { return &_unknown_fields_; } - + static const ::google::protobuf::Descriptor* descriptor(); static const FieldDescriptorProto& default_instance(); - + void Swap(FieldDescriptorProto* other); - + // implements Message ---------------------------------------------- - + FieldDescriptorProto* New() const; void CopyFrom(const ::google::protobuf::Message& from); void MergeFrom(const ::google::protobuf::Message& from); @@ -724,7 +751,7 @@ class LIBPROTOBUF_EXPORT FieldDescriptorProto : public ::google::protobuf::Messa void MergeFrom(const FieldDescriptorProto& from); void Clear(); bool IsInitialized() const; - + int ByteSize() const; bool MergePartialFromCodedStream( ::google::protobuf::io::CodedInputStream* input); @@ -737,11 +764,11 @@ class LIBPROTOBUF_EXPORT FieldDescriptorProto : public ::google::protobuf::Messa void SharedDtor(); void SetCachedSize(int size) const; public: - + ::google::protobuf::Metadata GetMetadata() const; - + // nested types ---------------------------------------------------- - + typedef FieldDescriptorProto_Type Type; static const Type TYPE_DOUBLE = FieldDescriptorProto_Type_TYPE_DOUBLE; static const Type TYPE_FLOAT = FieldDescriptorProto_Type_TYPE_FLOAT; @@ -781,7 +808,7 @@ class LIBPROTOBUF_EXPORT FieldDescriptorProto : public ::google::protobuf::Messa Type* value) { return FieldDescriptorProto_Type_Parse(name, value); } - + typedef FieldDescriptorProto_Label Label; static const Label LABEL_OPTIONAL = FieldDescriptorProto_Label_LABEL_OPTIONAL; static const Label LABEL_REQUIRED = FieldDescriptorProto_Label_LABEL_REQUIRED; @@ -806,9 +833,9 @@ class LIBPROTOBUF_EXPORT FieldDescriptorProto : public ::google::protobuf::Messa Label* value) { return FieldDescriptorProto_Label_Parse(name, value); } - + // accessors ------------------------------------------------------- - + // optional string name = 1; inline bool has_name() const; inline void clear_name(); @@ -818,28 +845,30 @@ class LIBPROTOBUF_EXPORT FieldDescriptorProto : public ::google::protobuf::Messa inline void set_name(const char* value); inline void set_name(const char* value, size_t size); inline ::std::string* mutable_name(); - + inline ::std::string* release_name(); + inline void set_allocated_name(::std::string* name); + // optional int32 number = 3; inline bool has_number() const; inline void clear_number(); static const int kNumberFieldNumber = 3; inline ::google::protobuf::int32 number() const; inline void set_number(::google::protobuf::int32 value); - + // optional .google.protobuf.FieldDescriptorProto.Label label = 4; inline bool has_label() const; inline void clear_label(); static const int kLabelFieldNumber = 4; inline ::google::protobuf::FieldDescriptorProto_Label label() const; inline void set_label(::google::protobuf::FieldDescriptorProto_Label value); - + // optional .google.protobuf.FieldDescriptorProto.Type type = 5; inline bool has_type() const; inline void clear_type(); static const int kTypeFieldNumber = 5; inline ::google::protobuf::FieldDescriptorProto_Type type() const; inline void set_type(::google::protobuf::FieldDescriptorProto_Type value); - + // optional string type_name = 6; inline bool has_type_name() const; inline void clear_type_name(); @@ -849,7 +878,9 @@ class LIBPROTOBUF_EXPORT FieldDescriptorProto : public ::google::protobuf::Messa inline void set_type_name(const char* value); inline void set_type_name(const char* value, size_t size); inline ::std::string* mutable_type_name(); - + inline ::std::string* release_type_name(); + inline void set_allocated_type_name(::std::string* type_name); + // optional string extendee = 2; inline bool has_extendee() const; inline void clear_extendee(); @@ -859,7 +890,9 @@ class LIBPROTOBUF_EXPORT FieldDescriptorProto : public ::google::protobuf::Messa inline void set_extendee(const char* value); inline void set_extendee(const char* value, size_t size); inline ::std::string* mutable_extendee(); - + inline ::std::string* release_extendee(); + inline void set_allocated_extendee(::std::string* extendee); + // optional string default_value = 7; inline bool has_default_value() const; inline void clear_default_value(); @@ -869,48 +902,55 @@ class LIBPROTOBUF_EXPORT FieldDescriptorProto : public ::google::protobuf::Messa inline void set_default_value(const char* value); inline void set_default_value(const char* value, size_t size); inline ::std::string* mutable_default_value(); - + inline ::std::string* release_default_value(); + inline void set_allocated_default_value(::std::string* default_value); + // optional .google.protobuf.FieldOptions options = 8; inline bool has_options() const; inline void clear_options(); static const int kOptionsFieldNumber = 8; inline const ::google::protobuf::FieldOptions& options() const; inline ::google::protobuf::FieldOptions* mutable_options(); - + inline ::google::protobuf::FieldOptions* release_options(); + inline void set_allocated_options(::google::protobuf::FieldOptions* options); + // @@protoc_insertion_point(class_scope:google.protobuf.FieldDescriptorProto) private: + inline void set_has_name(); + inline void clear_has_name(); + inline void set_has_number(); + inline void clear_has_number(); + inline void set_has_label(); + inline void clear_has_label(); + inline void set_has_type(); + inline void clear_has_type(); + inline void set_has_type_name(); + inline void clear_has_type_name(); + inline void set_has_extendee(); + inline void clear_has_extendee(); + inline void set_has_default_value(); + inline void clear_has_default_value(); + inline void set_has_options(); + inline void clear_has_options(); + ::google::protobuf::UnknownFieldSet _unknown_fields_; - mutable int _cached_size_; - + ::std::string* name_; - static const ::std::string _default_name_; ::google::protobuf::int32 number_; int label_; - int type_; ::std::string* type_name_; - static const ::std::string _default_type_name_; ::std::string* extendee_; - static const ::std::string _default_extendee_; ::std::string* default_value_; - static const ::std::string _default_default_value_; ::google::protobuf::FieldOptions* options_; + int type_; + + mutable int _cached_size_; + ::google::protobuf::uint32 _has_bits_[(8 + 31) / 32]; + friend void LIBPROTOBUF_EXPORT protobuf_AddDesc_google_2fprotobuf_2fdescriptor_2eproto(); friend void protobuf_AssignDesc_google_2fprotobuf_2fdescriptor_2eproto(); friend void protobuf_ShutdownFile_google_2fprotobuf_2fdescriptor_2eproto(); - - ::google::protobuf::uint32 _has_bits_[(8 + 31) / 32]; - - // WHY DOES & HAVE LOWER PRECEDENCE THAN != !? - inline bool _has_bit(int index) const { - return (_has_bits_[index / 32] & (1u << (index % 32))) != 0; - } - inline void _set_bit(int index) { - _has_bits_[index / 32] |= (1u << (index % 32)); - } - inline void _clear_bit(int index) { - _has_bits_[index / 32] &= ~(1u << (index % 32)); - } - + void InitAsDefaultInstance(); static FieldDescriptorProto* default_instance_; }; @@ -920,29 +960,29 @@ class LIBPROTOBUF_EXPORT EnumDescriptorProto : public ::google::protobuf::Messag public: EnumDescriptorProto(); virtual ~EnumDescriptorProto(); - + EnumDescriptorProto(const EnumDescriptorProto& from); - + inline EnumDescriptorProto& operator=(const EnumDescriptorProto& from) { CopyFrom(from); return *this; } - + inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const { return _unknown_fields_; } - + inline ::google::protobuf::UnknownFieldSet* mutable_unknown_fields() { return &_unknown_fields_; } - + static const ::google::protobuf::Descriptor* descriptor(); static const EnumDescriptorProto& default_instance(); - + void Swap(EnumDescriptorProto* other); - + // implements Message ---------------------------------------------- - + EnumDescriptorProto* New() const; void CopyFrom(const ::google::protobuf::Message& from); void MergeFrom(const ::google::protobuf::Message& from); @@ -950,7 +990,7 @@ class LIBPROTOBUF_EXPORT EnumDescriptorProto : public ::google::protobuf::Messag void MergeFrom(const EnumDescriptorProto& from); void Clear(); bool IsInitialized() const; - + int ByteSize() const; bool MergePartialFromCodedStream( ::google::protobuf::io::CodedInputStream* input); @@ -963,13 +1003,13 @@ class LIBPROTOBUF_EXPORT EnumDescriptorProto : public ::google::protobuf::Messag void SharedDtor(); void SetCachedSize(int size) const; public: - + ::google::protobuf::Metadata GetMetadata() const; - + // nested types ---------------------------------------------------- - + // accessors ------------------------------------------------------- - + // optional string name = 1; inline bool has_name() const; inline void clear_name(); @@ -979,7 +1019,9 @@ class LIBPROTOBUF_EXPORT EnumDescriptorProto : public ::google::protobuf::Messag inline void set_name(const char* value); inline void set_name(const char* value, size_t size); inline ::std::string* mutable_name(); - + inline ::std::string* release_name(); + inline void set_allocated_name(::std::string* name); + // repeated .google.protobuf.EnumValueDescriptorProto value = 2; inline int value_size() const; inline void clear_value(); @@ -991,40 +1033,36 @@ class LIBPROTOBUF_EXPORT EnumDescriptorProto : public ::google::protobuf::Messag value() const; inline ::google::protobuf::RepeatedPtrField< ::google::protobuf::EnumValueDescriptorProto >* mutable_value(); - + // optional .google.protobuf.EnumOptions options = 3; inline bool has_options() const; inline void clear_options(); static const int kOptionsFieldNumber = 3; inline const ::google::protobuf::EnumOptions& options() const; inline ::google::protobuf::EnumOptions* mutable_options(); - + inline ::google::protobuf::EnumOptions* release_options(); + inline void set_allocated_options(::google::protobuf::EnumOptions* options); + // @@protoc_insertion_point(class_scope:google.protobuf.EnumDescriptorProto) private: + inline void set_has_name(); + inline void clear_has_name(); + inline void set_has_options(); + inline void clear_has_options(); + ::google::protobuf::UnknownFieldSet _unknown_fields_; - mutable int _cached_size_; - + ::std::string* name_; - static const ::std::string _default_name_; ::google::protobuf::RepeatedPtrField< ::google::protobuf::EnumValueDescriptorProto > value_; ::google::protobuf::EnumOptions* options_; + + mutable int _cached_size_; + ::google::protobuf::uint32 _has_bits_[(3 + 31) / 32]; + friend void LIBPROTOBUF_EXPORT protobuf_AddDesc_google_2fprotobuf_2fdescriptor_2eproto(); friend void protobuf_AssignDesc_google_2fprotobuf_2fdescriptor_2eproto(); friend void protobuf_ShutdownFile_google_2fprotobuf_2fdescriptor_2eproto(); - - ::google::protobuf::uint32 _has_bits_[(3 + 31) / 32]; - - // WHY DOES & HAVE LOWER PRECEDENCE THAN != !? - inline bool _has_bit(int index) const { - return (_has_bits_[index / 32] & (1u << (index % 32))) != 0; - } - inline void _set_bit(int index) { - _has_bits_[index / 32] |= (1u << (index % 32)); - } - inline void _clear_bit(int index) { - _has_bits_[index / 32] &= ~(1u << (index % 32)); - } - + void InitAsDefaultInstance(); static EnumDescriptorProto* default_instance_; }; @@ -1034,29 +1072,29 @@ class LIBPROTOBUF_EXPORT EnumValueDescriptorProto : public ::google::protobuf::M public: EnumValueDescriptorProto(); virtual ~EnumValueDescriptorProto(); - + EnumValueDescriptorProto(const EnumValueDescriptorProto& from); - + inline EnumValueDescriptorProto& operator=(const EnumValueDescriptorProto& from) { CopyFrom(from); return *this; } - + inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const { return _unknown_fields_; } - + inline ::google::protobuf::UnknownFieldSet* mutable_unknown_fields() { return &_unknown_fields_; } - + static const ::google::protobuf::Descriptor* descriptor(); static const EnumValueDescriptorProto& default_instance(); - + void Swap(EnumValueDescriptorProto* other); - + // implements Message ---------------------------------------------- - + EnumValueDescriptorProto* New() const; void CopyFrom(const ::google::protobuf::Message& from); void MergeFrom(const ::google::protobuf::Message& from); @@ -1064,7 +1102,7 @@ class LIBPROTOBUF_EXPORT EnumValueDescriptorProto : public ::google::protobuf::M void MergeFrom(const EnumValueDescriptorProto& from); void Clear(); bool IsInitialized() const; - + int ByteSize() const; bool MergePartialFromCodedStream( ::google::protobuf::io::CodedInputStream* input); @@ -1077,13 +1115,13 @@ class LIBPROTOBUF_EXPORT EnumValueDescriptorProto : public ::google::protobuf::M void SharedDtor(); void SetCachedSize(int size) const; public: - + ::google::protobuf::Metadata GetMetadata() const; - + // nested types ---------------------------------------------------- - + // accessors ------------------------------------------------------- - + // optional string name = 1; inline bool has_name() const; inline void clear_name(); @@ -1093,47 +1131,47 @@ class LIBPROTOBUF_EXPORT EnumValueDescriptorProto : public ::google::protobuf::M inline void set_name(const char* value); inline void set_name(const char* value, size_t size); inline ::std::string* mutable_name(); - + inline ::std::string* release_name(); + inline void set_allocated_name(::std::string* name); + // optional int32 number = 2; inline bool has_number() const; inline void clear_number(); static const int kNumberFieldNumber = 2; inline ::google::protobuf::int32 number() const; inline void set_number(::google::protobuf::int32 value); - + // optional .google.protobuf.EnumValueOptions options = 3; inline bool has_options() const; inline void clear_options(); static const int kOptionsFieldNumber = 3; inline const ::google::protobuf::EnumValueOptions& options() const; inline ::google::protobuf::EnumValueOptions* mutable_options(); - + inline ::google::protobuf::EnumValueOptions* release_options(); + inline void set_allocated_options(::google::protobuf::EnumValueOptions* options); + // @@protoc_insertion_point(class_scope:google.protobuf.EnumValueDescriptorProto) private: + inline void set_has_name(); + inline void clear_has_name(); + inline void set_has_number(); + inline void clear_has_number(); + inline void set_has_options(); + inline void clear_has_options(); + ::google::protobuf::UnknownFieldSet _unknown_fields_; - mutable int _cached_size_; - + ::std::string* name_; - static const ::std::string _default_name_; - ::google::protobuf::int32 number_; ::google::protobuf::EnumValueOptions* options_; + ::google::protobuf::int32 number_; + + mutable int _cached_size_; + ::google::protobuf::uint32 _has_bits_[(3 + 31) / 32]; + friend void LIBPROTOBUF_EXPORT protobuf_AddDesc_google_2fprotobuf_2fdescriptor_2eproto(); friend void protobuf_AssignDesc_google_2fprotobuf_2fdescriptor_2eproto(); friend void protobuf_ShutdownFile_google_2fprotobuf_2fdescriptor_2eproto(); - - ::google::protobuf::uint32 _has_bits_[(3 + 31) / 32]; - - // WHY DOES & HAVE LOWER PRECEDENCE THAN != !? - inline bool _has_bit(int index) const { - return (_has_bits_[index / 32] & (1u << (index % 32))) != 0; - } - inline void _set_bit(int index) { - _has_bits_[index / 32] |= (1u << (index % 32)); - } - inline void _clear_bit(int index) { - _has_bits_[index / 32] &= ~(1u << (index % 32)); - } - + void InitAsDefaultInstance(); static EnumValueDescriptorProto* default_instance_; }; @@ -1143,29 +1181,29 @@ class LIBPROTOBUF_EXPORT ServiceDescriptorProto : public ::google::protobuf::Mes public: ServiceDescriptorProto(); virtual ~ServiceDescriptorProto(); - + ServiceDescriptorProto(const ServiceDescriptorProto& from); - + inline ServiceDescriptorProto& operator=(const ServiceDescriptorProto& from) { CopyFrom(from); return *this; } - + inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const { return _unknown_fields_; } - + inline ::google::protobuf::UnknownFieldSet* mutable_unknown_fields() { return &_unknown_fields_; } - + static const ::google::protobuf::Descriptor* descriptor(); static const ServiceDescriptorProto& default_instance(); - + void Swap(ServiceDescriptorProto* other); - + // implements Message ---------------------------------------------- - + ServiceDescriptorProto* New() const; void CopyFrom(const ::google::protobuf::Message& from); void MergeFrom(const ::google::protobuf::Message& from); @@ -1173,7 +1211,7 @@ class LIBPROTOBUF_EXPORT ServiceDescriptorProto : public ::google::protobuf::Mes void MergeFrom(const ServiceDescriptorProto& from); void Clear(); bool IsInitialized() const; - + int ByteSize() const; bool MergePartialFromCodedStream( ::google::protobuf::io::CodedInputStream* input); @@ -1186,13 +1224,13 @@ class LIBPROTOBUF_EXPORT ServiceDescriptorProto : public ::google::protobuf::Mes void SharedDtor(); void SetCachedSize(int size) const; public: - + ::google::protobuf::Metadata GetMetadata() const; - + // nested types ---------------------------------------------------- - + // accessors ------------------------------------------------------- - + // optional string name = 1; inline bool has_name() const; inline void clear_name(); @@ -1202,7 +1240,9 @@ class LIBPROTOBUF_EXPORT ServiceDescriptorProto : public ::google::protobuf::Mes inline void set_name(const char* value); inline void set_name(const char* value, size_t size); inline ::std::string* mutable_name(); - + inline ::std::string* release_name(); + inline void set_allocated_name(::std::string* name); + // repeated .google.protobuf.MethodDescriptorProto method = 2; inline int method_size() const; inline void clear_method(); @@ -1214,40 +1254,36 @@ class LIBPROTOBUF_EXPORT ServiceDescriptorProto : public ::google::protobuf::Mes method() const; inline ::google::protobuf::RepeatedPtrField< ::google::protobuf::MethodDescriptorProto >* mutable_method(); - + // optional .google.protobuf.ServiceOptions options = 3; inline bool has_options() const; inline void clear_options(); static const int kOptionsFieldNumber = 3; inline const ::google::protobuf::ServiceOptions& options() const; inline ::google::protobuf::ServiceOptions* mutable_options(); - + inline ::google::protobuf::ServiceOptions* release_options(); + inline void set_allocated_options(::google::protobuf::ServiceOptions* options); + // @@protoc_insertion_point(class_scope:google.protobuf.ServiceDescriptorProto) private: + inline void set_has_name(); + inline void clear_has_name(); + inline void set_has_options(); + inline void clear_has_options(); + ::google::protobuf::UnknownFieldSet _unknown_fields_; - mutable int _cached_size_; - + ::std::string* name_; - static const ::std::string _default_name_; ::google::protobuf::RepeatedPtrField< ::google::protobuf::MethodDescriptorProto > method_; ::google::protobuf::ServiceOptions* options_; + + mutable int _cached_size_; + ::google::protobuf::uint32 _has_bits_[(3 + 31) / 32]; + friend void LIBPROTOBUF_EXPORT protobuf_AddDesc_google_2fprotobuf_2fdescriptor_2eproto(); friend void protobuf_AssignDesc_google_2fprotobuf_2fdescriptor_2eproto(); friend void protobuf_ShutdownFile_google_2fprotobuf_2fdescriptor_2eproto(); - - ::google::protobuf::uint32 _has_bits_[(3 + 31) / 32]; - - // WHY DOES & HAVE LOWER PRECEDENCE THAN != !? - inline bool _has_bit(int index) const { - return (_has_bits_[index / 32] & (1u << (index % 32))) != 0; - } - inline void _set_bit(int index) { - _has_bits_[index / 32] |= (1u << (index % 32)); - } - inline void _clear_bit(int index) { - _has_bits_[index / 32] &= ~(1u << (index % 32)); - } - + void InitAsDefaultInstance(); static ServiceDescriptorProto* default_instance_; }; @@ -1257,29 +1293,29 @@ class LIBPROTOBUF_EXPORT MethodDescriptorProto : public ::google::protobuf::Mess public: MethodDescriptorProto(); virtual ~MethodDescriptorProto(); - + MethodDescriptorProto(const MethodDescriptorProto& from); - + inline MethodDescriptorProto& operator=(const MethodDescriptorProto& from) { CopyFrom(from); return *this; } - + inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const { return _unknown_fields_; } - + inline ::google::protobuf::UnknownFieldSet* mutable_unknown_fields() { return &_unknown_fields_; } - + static const ::google::protobuf::Descriptor* descriptor(); static const MethodDescriptorProto& default_instance(); - + void Swap(MethodDescriptorProto* other); - + // implements Message ---------------------------------------------- - + MethodDescriptorProto* New() const; void CopyFrom(const ::google::protobuf::Message& from); void MergeFrom(const ::google::protobuf::Message& from); @@ -1287,7 +1323,7 @@ class LIBPROTOBUF_EXPORT MethodDescriptorProto : public ::google::protobuf::Mess void MergeFrom(const MethodDescriptorProto& from); void Clear(); bool IsInitialized() const; - + int ByteSize() const; bool MergePartialFromCodedStream( ::google::protobuf::io::CodedInputStream* input); @@ -1300,13 +1336,13 @@ class LIBPROTOBUF_EXPORT MethodDescriptorProto : public ::google::protobuf::Mess void SharedDtor(); void SetCachedSize(int size) const; public: - + ::google::protobuf::Metadata GetMetadata() const; - + // nested types ---------------------------------------------------- - + // accessors ------------------------------------------------------- - + // optional string name = 1; inline bool has_name() const; inline void clear_name(); @@ -1316,7 +1352,9 @@ class LIBPROTOBUF_EXPORT MethodDescriptorProto : public ::google::protobuf::Mess inline void set_name(const char* value); inline void set_name(const char* value, size_t size); inline ::std::string* mutable_name(); - + inline ::std::string* release_name(); + inline void set_allocated_name(::std::string* name); + // optional string input_type = 2; inline bool has_input_type() const; inline void clear_input_type(); @@ -1326,7 +1364,9 @@ class LIBPROTOBUF_EXPORT MethodDescriptorProto : public ::google::protobuf::Mess inline void set_input_type(const char* value); inline void set_input_type(const char* value, size_t size); inline ::std::string* mutable_input_type(); - + inline ::std::string* release_input_type(); + inline void set_allocated_input_type(::std::string* input_type); + // optional string output_type = 3; inline bool has_output_type() const; inline void clear_output_type(); @@ -1336,43 +1376,43 @@ class LIBPROTOBUF_EXPORT MethodDescriptorProto : public ::google::protobuf::Mess inline void set_output_type(const char* value); inline void set_output_type(const char* value, size_t size); inline ::std::string* mutable_output_type(); - + inline ::std::string* release_output_type(); + inline void set_allocated_output_type(::std::string* output_type); + // optional .google.protobuf.MethodOptions options = 4; inline bool has_options() const; inline void clear_options(); static const int kOptionsFieldNumber = 4; inline const ::google::protobuf::MethodOptions& options() const; inline ::google::protobuf::MethodOptions* mutable_options(); - + inline ::google::protobuf::MethodOptions* release_options(); + inline void set_allocated_options(::google::protobuf::MethodOptions* options); + // @@protoc_insertion_point(class_scope:google.protobuf.MethodDescriptorProto) private: + inline void set_has_name(); + inline void clear_has_name(); + inline void set_has_input_type(); + inline void clear_has_input_type(); + inline void set_has_output_type(); + inline void clear_has_output_type(); + inline void set_has_options(); + inline void clear_has_options(); + ::google::protobuf::UnknownFieldSet _unknown_fields_; - mutable int _cached_size_; - + ::std::string* name_; - static const ::std::string _default_name_; ::std::string* input_type_; - static const ::std::string _default_input_type_; ::std::string* output_type_; - static const ::std::string _default_output_type_; ::google::protobuf::MethodOptions* options_; + + mutable int _cached_size_; + ::google::protobuf::uint32 _has_bits_[(4 + 31) / 32]; + friend void LIBPROTOBUF_EXPORT protobuf_AddDesc_google_2fprotobuf_2fdescriptor_2eproto(); friend void protobuf_AssignDesc_google_2fprotobuf_2fdescriptor_2eproto(); friend void protobuf_ShutdownFile_google_2fprotobuf_2fdescriptor_2eproto(); - - ::google::protobuf::uint32 _has_bits_[(4 + 31) / 32]; - - // WHY DOES & HAVE LOWER PRECEDENCE THAN != !? - inline bool _has_bit(int index) const { - return (_has_bits_[index / 32] & (1u << (index % 32))) != 0; - } - inline void _set_bit(int index) { - _has_bits_[index / 32] |= (1u << (index % 32)); - } - inline void _clear_bit(int index) { - _has_bits_[index / 32] &= ~(1u << (index % 32)); - } - + void InitAsDefaultInstance(); static MethodDescriptorProto* default_instance_; }; @@ -1382,29 +1422,29 @@ class LIBPROTOBUF_EXPORT FileOptions : public ::google::protobuf::Message { public: FileOptions(); virtual ~FileOptions(); - + FileOptions(const FileOptions& from); - + inline FileOptions& operator=(const FileOptions& from) { CopyFrom(from); return *this; } - + inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const { return _unknown_fields_; } - + inline ::google::protobuf::UnknownFieldSet* mutable_unknown_fields() { return &_unknown_fields_; } - + static const ::google::protobuf::Descriptor* descriptor(); static const FileOptions& default_instance(); - + void Swap(FileOptions* other); - + // implements Message ---------------------------------------------- - + FileOptions* New() const; void CopyFrom(const ::google::protobuf::Message& from); void MergeFrom(const ::google::protobuf::Message& from); @@ -1412,7 +1452,7 @@ class LIBPROTOBUF_EXPORT FileOptions : public ::google::protobuf::Message { void MergeFrom(const FileOptions& from); void Clear(); bool IsInitialized() const; - + int ByteSize() const; bool MergePartialFromCodedStream( ::google::protobuf::io::CodedInputStream* input); @@ -1425,11 +1465,11 @@ class LIBPROTOBUF_EXPORT FileOptions : public ::google::protobuf::Message { void SharedDtor(); void SetCachedSize(int size) const; public: - + ::google::protobuf::Metadata GetMetadata() const; - + // nested types ---------------------------------------------------- - + typedef FileOptions_OptimizeMode OptimizeMode; static const OptimizeMode SPEED = FileOptions_OptimizeMode_SPEED; static const OptimizeMode CODE_SIZE = FileOptions_OptimizeMode_CODE_SIZE; @@ -1454,9 +1494,9 @@ class LIBPROTOBUF_EXPORT FileOptions : public ::google::protobuf::Message { OptimizeMode* value) { return FileOptions_OptimizeMode_Parse(name, value); } - + // accessors ------------------------------------------------------- - + // optional string java_package = 1; inline bool has_java_package() const; inline void clear_java_package(); @@ -1466,7 +1506,9 @@ class LIBPROTOBUF_EXPORT FileOptions : public ::google::protobuf::Message { inline void set_java_package(const char* value); inline void set_java_package(const char* value, size_t size); inline ::std::string* mutable_java_package(); - + inline ::std::string* release_java_package(); + inline void set_allocated_java_package(::std::string* java_package); + // optional string java_outer_classname = 8; inline bool has_java_outer_classname() const; inline void clear_java_outer_classname(); @@ -1476,42 +1518,63 @@ class LIBPROTOBUF_EXPORT FileOptions : public ::google::protobuf::Message { inline void set_java_outer_classname(const char* value); inline void set_java_outer_classname(const char* value, size_t size); inline ::std::string* mutable_java_outer_classname(); - + inline ::std::string* release_java_outer_classname(); + inline void set_allocated_java_outer_classname(::std::string* java_outer_classname); + // optional bool java_multiple_files = 10 [default = false]; inline bool has_java_multiple_files() const; inline void clear_java_multiple_files(); static const int kJavaMultipleFilesFieldNumber = 10; inline bool java_multiple_files() const; inline void set_java_multiple_files(bool value); - + + // optional bool java_generate_equals_and_hash = 20 [default = false]; + inline bool has_java_generate_equals_and_hash() const; + inline void clear_java_generate_equals_and_hash(); + static const int kJavaGenerateEqualsAndHashFieldNumber = 20; + inline bool java_generate_equals_and_hash() const; + inline void set_java_generate_equals_and_hash(bool value); + // optional .google.protobuf.FileOptions.OptimizeMode optimize_for = 9 [default = SPEED]; inline bool has_optimize_for() const; inline void clear_optimize_for(); static const int kOptimizeForFieldNumber = 9; inline ::google::protobuf::FileOptions_OptimizeMode optimize_for() const; inline void set_optimize_for(::google::protobuf::FileOptions_OptimizeMode value); - - // optional bool cc_generic_services = 16 [default = true]; + + // optional string go_package = 11; + inline bool has_go_package() const; + inline void clear_go_package(); + static const int kGoPackageFieldNumber = 11; + inline const ::std::string& go_package() const; + inline void set_go_package(const ::std::string& value); + inline void set_go_package(const char* value); + inline void set_go_package(const char* value, size_t size); + inline ::std::string* mutable_go_package(); + inline ::std::string* release_go_package(); + inline void set_allocated_go_package(::std::string* go_package); + + // optional bool cc_generic_services = 16 [default = false]; inline bool has_cc_generic_services() const; inline void clear_cc_generic_services(); static const int kCcGenericServicesFieldNumber = 16; inline bool cc_generic_services() const; inline void set_cc_generic_services(bool value); - - // optional bool java_generic_services = 17 [default = true]; + + // optional bool java_generic_services = 17 [default = false]; inline bool has_java_generic_services() const; inline void clear_java_generic_services(); static const int kJavaGenericServicesFieldNumber = 17; inline bool java_generic_services() const; inline void set_java_generic_services(bool value); - - // optional bool py_generic_services = 18 [default = true]; + + // optional bool py_generic_services = 18 [default = false]; inline bool has_py_generic_services() const; inline void clear_py_generic_services(); static const int kPyGenericServicesFieldNumber = 18; inline bool py_generic_services() const; inline void set_py_generic_services(bool value); - + // repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999; inline int uninterpreted_option_size() const; inline void clear_uninterpreted_option(); @@ -1523,41 +1586,51 @@ class LIBPROTOBUF_EXPORT FileOptions : public ::google::protobuf::Message { uninterpreted_option() const; inline ::google::protobuf::RepeatedPtrField< ::google::protobuf::UninterpretedOption >* mutable_uninterpreted_option(); - + GOOGLE_PROTOBUF_EXTENSION_ACCESSORS(FileOptions) // @@protoc_insertion_point(class_scope:google.protobuf.FileOptions) private: + inline void set_has_java_package(); + inline void clear_has_java_package(); + inline void set_has_java_outer_classname(); + inline void clear_has_java_outer_classname(); + inline void set_has_java_multiple_files(); + inline void clear_has_java_multiple_files(); + inline void set_has_java_generate_equals_and_hash(); + inline void clear_has_java_generate_equals_and_hash(); + inline void set_has_optimize_for(); + inline void clear_has_optimize_for(); + inline void set_has_go_package(); + inline void clear_has_go_package(); + inline void set_has_cc_generic_services(); + inline void clear_has_cc_generic_services(); + inline void set_has_java_generic_services(); + inline void clear_has_java_generic_services(); + inline void set_has_py_generic_services(); + inline void clear_has_py_generic_services(); + ::google::protobuf::internal::ExtensionSet _extensions_; + ::google::protobuf::UnknownFieldSet _unknown_fields_; - mutable int _cached_size_; - + ::std::string* java_package_; - static const ::std::string _default_java_package_; ::std::string* java_outer_classname_; - static const ::std::string _default_java_outer_classname_; - bool java_multiple_files_; int optimize_for_; + bool java_multiple_files_; + bool java_generate_equals_and_hash_; bool cc_generic_services_; bool java_generic_services_; - bool py_generic_services_; + ::std::string* go_package_; ::google::protobuf::RepeatedPtrField< ::google::protobuf::UninterpretedOption > uninterpreted_option_; + bool py_generic_services_; + + mutable int _cached_size_; + ::google::protobuf::uint32 _has_bits_[(10 + 31) / 32]; + friend void LIBPROTOBUF_EXPORT protobuf_AddDesc_google_2fprotobuf_2fdescriptor_2eproto(); friend void protobuf_AssignDesc_google_2fprotobuf_2fdescriptor_2eproto(); friend void protobuf_ShutdownFile_google_2fprotobuf_2fdescriptor_2eproto(); - - ::google::protobuf::uint32 _has_bits_[(8 + 31) / 32]; - - // WHY DOES & HAVE LOWER PRECEDENCE THAN != !? - inline bool _has_bit(int index) const { - return (_has_bits_[index / 32] & (1u << (index % 32))) != 0; - } - inline void _set_bit(int index) { - _has_bits_[index / 32] |= (1u << (index % 32)); - } - inline void _clear_bit(int index) { - _has_bits_[index / 32] &= ~(1u << (index % 32)); - } - + void InitAsDefaultInstance(); static FileOptions* default_instance_; }; @@ -1567,29 +1640,29 @@ class LIBPROTOBUF_EXPORT MessageOptions : public ::google::protobuf::Message { public: MessageOptions(); virtual ~MessageOptions(); - + MessageOptions(const MessageOptions& from); - + inline MessageOptions& operator=(const MessageOptions& from) { CopyFrom(from); return *this; } - + inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const { return _unknown_fields_; } - + inline ::google::protobuf::UnknownFieldSet* mutable_unknown_fields() { return &_unknown_fields_; } - + static const ::google::protobuf::Descriptor* descriptor(); static const MessageOptions& default_instance(); - + void Swap(MessageOptions* other); - + // implements Message ---------------------------------------------- - + MessageOptions* New() const; void CopyFrom(const ::google::protobuf::Message& from); void MergeFrom(const ::google::protobuf::Message& from); @@ -1597,7 +1670,7 @@ class LIBPROTOBUF_EXPORT MessageOptions : public ::google::protobuf::Message { void MergeFrom(const MessageOptions& from); void Clear(); bool IsInitialized() const; - + int ByteSize() const; bool MergePartialFromCodedStream( ::google::protobuf::io::CodedInputStream* input); @@ -1610,27 +1683,27 @@ class LIBPROTOBUF_EXPORT MessageOptions : public ::google::protobuf::Message { void SharedDtor(); void SetCachedSize(int size) const; public: - + ::google::protobuf::Metadata GetMetadata() const; - + // nested types ---------------------------------------------------- - + // accessors ------------------------------------------------------- - + // optional bool message_set_wire_format = 1 [default = false]; inline bool has_message_set_wire_format() const; inline void clear_message_set_wire_format(); static const int kMessageSetWireFormatFieldNumber = 1; inline bool message_set_wire_format() const; inline void set_message_set_wire_format(bool value); - + // optional bool no_standard_descriptor_accessor = 2 [default = false]; inline bool has_no_standard_descriptor_accessor() const; inline void clear_no_standard_descriptor_accessor(); static const int kNoStandardDescriptorAccessorFieldNumber = 2; inline bool no_standard_descriptor_accessor() const; inline void set_no_standard_descriptor_accessor(bool value); - + // repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999; inline int uninterpreted_option_size() const; inline void clear_uninterpreted_option(); @@ -1642,34 +1715,30 @@ class LIBPROTOBUF_EXPORT MessageOptions : public ::google::protobuf::Message { uninterpreted_option() const; inline ::google::protobuf::RepeatedPtrField< ::google::protobuf::UninterpretedOption >* mutable_uninterpreted_option(); - + GOOGLE_PROTOBUF_EXTENSION_ACCESSORS(MessageOptions) // @@protoc_insertion_point(class_scope:google.protobuf.MessageOptions) private: + inline void set_has_message_set_wire_format(); + inline void clear_has_message_set_wire_format(); + inline void set_has_no_standard_descriptor_accessor(); + inline void clear_has_no_standard_descriptor_accessor(); + ::google::protobuf::internal::ExtensionSet _extensions_; + ::google::protobuf::UnknownFieldSet _unknown_fields_; - mutable int _cached_size_; - + + ::google::protobuf::RepeatedPtrField< ::google::protobuf::UninterpretedOption > uninterpreted_option_; bool message_set_wire_format_; bool no_standard_descriptor_accessor_; - ::google::protobuf::RepeatedPtrField< ::google::protobuf::UninterpretedOption > uninterpreted_option_; + + mutable int _cached_size_; + ::google::protobuf::uint32 _has_bits_[(3 + 31) / 32]; + friend void LIBPROTOBUF_EXPORT protobuf_AddDesc_google_2fprotobuf_2fdescriptor_2eproto(); friend void protobuf_AssignDesc_google_2fprotobuf_2fdescriptor_2eproto(); friend void protobuf_ShutdownFile_google_2fprotobuf_2fdescriptor_2eproto(); - - ::google::protobuf::uint32 _has_bits_[(3 + 31) / 32]; - - // WHY DOES & HAVE LOWER PRECEDENCE THAN != !? - inline bool _has_bit(int index) const { - return (_has_bits_[index / 32] & (1u << (index % 32))) != 0; - } - inline void _set_bit(int index) { - _has_bits_[index / 32] |= (1u << (index % 32)); - } - inline void _clear_bit(int index) { - _has_bits_[index / 32] &= ~(1u << (index % 32)); - } - + void InitAsDefaultInstance(); static MessageOptions* default_instance_; }; @@ -1679,29 +1748,29 @@ class LIBPROTOBUF_EXPORT FieldOptions : public ::google::protobuf::Message { public: FieldOptions(); virtual ~FieldOptions(); - + FieldOptions(const FieldOptions& from); - + inline FieldOptions& operator=(const FieldOptions& from) { CopyFrom(from); return *this; } - + inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const { return _unknown_fields_; } - + inline ::google::protobuf::UnknownFieldSet* mutable_unknown_fields() { return &_unknown_fields_; } - + static const ::google::protobuf::Descriptor* descriptor(); static const FieldOptions& default_instance(); - + void Swap(FieldOptions* other); - + // implements Message ---------------------------------------------- - + FieldOptions* New() const; void CopyFrom(const ::google::protobuf::Message& from); void MergeFrom(const ::google::protobuf::Message& from); @@ -1709,7 +1778,7 @@ class LIBPROTOBUF_EXPORT FieldOptions : public ::google::protobuf::Message { void MergeFrom(const FieldOptions& from); void Clear(); bool IsInitialized() const; - + int ByteSize() const; bool MergePartialFromCodedStream( ::google::protobuf::io::CodedInputStream* input); @@ -1722,11 +1791,11 @@ class LIBPROTOBUF_EXPORT FieldOptions : public ::google::protobuf::Message { void SharedDtor(); void SetCachedSize(int size) const; public: - + ::google::protobuf::Metadata GetMetadata() const; - + // nested types ---------------------------------------------------- - + typedef FieldOptions_CType CType; static const CType STRING = FieldOptions_CType_STRING; static const CType CORD = FieldOptions_CType_CORD; @@ -1751,30 +1820,37 @@ class LIBPROTOBUF_EXPORT FieldOptions : public ::google::protobuf::Message { CType* value) { return FieldOptions_CType_Parse(name, value); } - + // accessors ------------------------------------------------------- - + // optional .google.protobuf.FieldOptions.CType ctype = 1 [default = STRING]; inline bool has_ctype() const; inline void clear_ctype(); static const int kCtypeFieldNumber = 1; inline ::google::protobuf::FieldOptions_CType ctype() const; inline void set_ctype(::google::protobuf::FieldOptions_CType value); - + // optional bool packed = 2; inline bool has_packed() const; inline void clear_packed(); static const int kPackedFieldNumber = 2; inline bool packed() const; inline void set_packed(bool value); - + + // optional bool lazy = 5 [default = false]; + inline bool has_lazy() const; + inline void clear_lazy(); + static const int kLazyFieldNumber = 5; + inline bool lazy() const; + inline void set_lazy(bool value); + // optional bool deprecated = 3 [default = false]; inline bool has_deprecated() const; inline void clear_deprecated(); static const int kDeprecatedFieldNumber = 3; inline bool deprecated() const; inline void set_deprecated(bool value); - + // optional string experimental_map_key = 9; inline bool has_experimental_map_key() const; inline void clear_experimental_map_key(); @@ -1784,7 +1860,16 @@ class LIBPROTOBUF_EXPORT FieldOptions : public ::google::protobuf::Message { inline void set_experimental_map_key(const char* value); inline void set_experimental_map_key(const char* value, size_t size); inline ::std::string* mutable_experimental_map_key(); - + inline ::std::string* release_experimental_map_key(); + inline void set_allocated_experimental_map_key(::std::string* experimental_map_key); + + // optional bool weak = 10 [default = false]; + inline bool has_weak() const; + inline void clear_weak(); + static const int kWeakFieldNumber = 10; + inline bool weak() const; + inline void set_weak(bool value); + // repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999; inline int uninterpreted_option_size() const; inline void clear_uninterpreted_option(); @@ -1796,37 +1881,42 @@ class LIBPROTOBUF_EXPORT FieldOptions : public ::google::protobuf::Message { uninterpreted_option() const; inline ::google::protobuf::RepeatedPtrField< ::google::protobuf::UninterpretedOption >* mutable_uninterpreted_option(); - + GOOGLE_PROTOBUF_EXTENSION_ACCESSORS(FieldOptions) // @@protoc_insertion_point(class_scope:google.protobuf.FieldOptions) private: + inline void set_has_ctype(); + inline void clear_has_ctype(); + inline void set_has_packed(); + inline void clear_has_packed(); + inline void set_has_lazy(); + inline void clear_has_lazy(); + inline void set_has_deprecated(); + inline void clear_has_deprecated(); + inline void set_has_experimental_map_key(); + inline void clear_has_experimental_map_key(); + inline void set_has_weak(); + inline void clear_has_weak(); + ::google::protobuf::internal::ExtensionSet _extensions_; + ::google::protobuf::UnknownFieldSet _unknown_fields_; - mutable int _cached_size_; - + int ctype_; bool packed_; + bool lazy_; bool deprecated_; + bool weak_; ::std::string* experimental_map_key_; - static const ::std::string _default_experimental_map_key_; ::google::protobuf::RepeatedPtrField< ::google::protobuf::UninterpretedOption > uninterpreted_option_; + + mutable int _cached_size_; + ::google::protobuf::uint32 _has_bits_[(7 + 31) / 32]; + friend void LIBPROTOBUF_EXPORT protobuf_AddDesc_google_2fprotobuf_2fdescriptor_2eproto(); friend void protobuf_AssignDesc_google_2fprotobuf_2fdescriptor_2eproto(); friend void protobuf_ShutdownFile_google_2fprotobuf_2fdescriptor_2eproto(); - - ::google::protobuf::uint32 _has_bits_[(5 + 31) / 32]; - - // WHY DOES & HAVE LOWER PRECEDENCE THAN != !? - inline bool _has_bit(int index) const { - return (_has_bits_[index / 32] & (1u << (index % 32))) != 0; - } - inline void _set_bit(int index) { - _has_bits_[index / 32] |= (1u << (index % 32)); - } - inline void _clear_bit(int index) { - _has_bits_[index / 32] &= ~(1u << (index % 32)); - } - + void InitAsDefaultInstance(); static FieldOptions* default_instance_; }; @@ -1836,29 +1926,29 @@ class LIBPROTOBUF_EXPORT EnumOptions : public ::google::protobuf::Message { public: EnumOptions(); virtual ~EnumOptions(); - + EnumOptions(const EnumOptions& from); - + inline EnumOptions& operator=(const EnumOptions& from) { CopyFrom(from); return *this; } - + inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const { return _unknown_fields_; } - + inline ::google::protobuf::UnknownFieldSet* mutable_unknown_fields() { return &_unknown_fields_; } - + static const ::google::protobuf::Descriptor* descriptor(); static const EnumOptions& default_instance(); - + void Swap(EnumOptions* other); - + // implements Message ---------------------------------------------- - + EnumOptions* New() const; void CopyFrom(const ::google::protobuf::Message& from); void MergeFrom(const ::google::protobuf::Message& from); @@ -1866,7 +1956,7 @@ class LIBPROTOBUF_EXPORT EnumOptions : public ::google::protobuf::Message { void MergeFrom(const EnumOptions& from); void Clear(); bool IsInitialized() const; - + int ByteSize() const; bool MergePartialFromCodedStream( ::google::protobuf::io::CodedInputStream* input); @@ -1879,13 +1969,20 @@ class LIBPROTOBUF_EXPORT EnumOptions : public ::google::protobuf::Message { void SharedDtor(); void SetCachedSize(int size) const; public: - + ::google::protobuf::Metadata GetMetadata() const; - + // nested types ---------------------------------------------------- - + // accessors ------------------------------------------------------- - + + // optional bool allow_alias = 2 [default = true]; + inline bool has_allow_alias() const; + inline void clear_allow_alias(); + static const int kAllowAliasFieldNumber = 2; + inline bool allow_alias() const; + inline void set_allow_alias(bool value); + // repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999; inline int uninterpreted_option_size() const; inline void clear_uninterpreted_option(); @@ -1897,32 +1994,27 @@ class LIBPROTOBUF_EXPORT EnumOptions : public ::google::protobuf::Message { uninterpreted_option() const; inline ::google::protobuf::RepeatedPtrField< ::google::protobuf::UninterpretedOption >* mutable_uninterpreted_option(); - + GOOGLE_PROTOBUF_EXTENSION_ACCESSORS(EnumOptions) // @@protoc_insertion_point(class_scope:google.protobuf.EnumOptions) private: + inline void set_has_allow_alias(); + inline void clear_has_allow_alias(); + ::google::protobuf::internal::ExtensionSet _extensions_; + ::google::protobuf::UnknownFieldSet _unknown_fields_; - mutable int _cached_size_; - + ::google::protobuf::RepeatedPtrField< ::google::protobuf::UninterpretedOption > uninterpreted_option_; + bool allow_alias_; + + mutable int _cached_size_; + ::google::protobuf::uint32 _has_bits_[(2 + 31) / 32]; + friend void LIBPROTOBUF_EXPORT protobuf_AddDesc_google_2fprotobuf_2fdescriptor_2eproto(); friend void protobuf_AssignDesc_google_2fprotobuf_2fdescriptor_2eproto(); friend void protobuf_ShutdownFile_google_2fprotobuf_2fdescriptor_2eproto(); - - ::google::protobuf::uint32 _has_bits_[(1 + 31) / 32]; - - // WHY DOES & HAVE LOWER PRECEDENCE THAN != !? - inline bool _has_bit(int index) const { - return (_has_bits_[index / 32] & (1u << (index % 32))) != 0; - } - inline void _set_bit(int index) { - _has_bits_[index / 32] |= (1u << (index % 32)); - } - inline void _clear_bit(int index) { - _has_bits_[index / 32] &= ~(1u << (index % 32)); - } - + void InitAsDefaultInstance(); static EnumOptions* default_instance_; }; @@ -1932,29 +2024,29 @@ class LIBPROTOBUF_EXPORT EnumValueOptions : public ::google::protobuf::Message { public: EnumValueOptions(); virtual ~EnumValueOptions(); - + EnumValueOptions(const EnumValueOptions& from); - + inline EnumValueOptions& operator=(const EnumValueOptions& from) { CopyFrom(from); return *this; } - + inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const { return _unknown_fields_; } - + inline ::google::protobuf::UnknownFieldSet* mutable_unknown_fields() { return &_unknown_fields_; } - + static const ::google::protobuf::Descriptor* descriptor(); static const EnumValueOptions& default_instance(); - + void Swap(EnumValueOptions* other); - + // implements Message ---------------------------------------------- - + EnumValueOptions* New() const; void CopyFrom(const ::google::protobuf::Message& from); void MergeFrom(const ::google::protobuf::Message& from); @@ -1962,7 +2054,7 @@ class LIBPROTOBUF_EXPORT EnumValueOptions : public ::google::protobuf::Message { void MergeFrom(const EnumValueOptions& from); void Clear(); bool IsInitialized() const; - + int ByteSize() const; bool MergePartialFromCodedStream( ::google::protobuf::io::CodedInputStream* input); @@ -1975,13 +2067,13 @@ class LIBPROTOBUF_EXPORT EnumValueOptions : public ::google::protobuf::Message { void SharedDtor(); void SetCachedSize(int size) const; public: - + ::google::protobuf::Metadata GetMetadata() const; - + // nested types ---------------------------------------------------- - + // accessors ------------------------------------------------------- - + // repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999; inline int uninterpreted_option_size() const; inline void clear_uninterpreted_option(); @@ -1993,32 +2085,24 @@ class LIBPROTOBUF_EXPORT EnumValueOptions : public ::google::protobuf::Message { uninterpreted_option() const; inline ::google::protobuf::RepeatedPtrField< ::google::protobuf::UninterpretedOption >* mutable_uninterpreted_option(); - + GOOGLE_PROTOBUF_EXTENSION_ACCESSORS(EnumValueOptions) // @@protoc_insertion_point(class_scope:google.protobuf.EnumValueOptions) private: + ::google::protobuf::internal::ExtensionSet _extensions_; + ::google::protobuf::UnknownFieldSet _unknown_fields_; - mutable int _cached_size_; - + ::google::protobuf::RepeatedPtrField< ::google::protobuf::UninterpretedOption > uninterpreted_option_; + + mutable int _cached_size_; + ::google::protobuf::uint32 _has_bits_[(1 + 31) / 32]; + friend void LIBPROTOBUF_EXPORT protobuf_AddDesc_google_2fprotobuf_2fdescriptor_2eproto(); friend void protobuf_AssignDesc_google_2fprotobuf_2fdescriptor_2eproto(); friend void protobuf_ShutdownFile_google_2fprotobuf_2fdescriptor_2eproto(); - - ::google::protobuf::uint32 _has_bits_[(1 + 31) / 32]; - - // WHY DOES & HAVE LOWER PRECEDENCE THAN != !? - inline bool _has_bit(int index) const { - return (_has_bits_[index / 32] & (1u << (index % 32))) != 0; - } - inline void _set_bit(int index) { - _has_bits_[index / 32] |= (1u << (index % 32)); - } - inline void _clear_bit(int index) { - _has_bits_[index / 32] &= ~(1u << (index % 32)); - } - + void InitAsDefaultInstance(); static EnumValueOptions* default_instance_; }; @@ -2028,29 +2112,29 @@ class LIBPROTOBUF_EXPORT ServiceOptions : public ::google::protobuf::Message { public: ServiceOptions(); virtual ~ServiceOptions(); - + ServiceOptions(const ServiceOptions& from); - + inline ServiceOptions& operator=(const ServiceOptions& from) { CopyFrom(from); return *this; } - + inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const { return _unknown_fields_; } - + inline ::google::protobuf::UnknownFieldSet* mutable_unknown_fields() { return &_unknown_fields_; } - + static const ::google::protobuf::Descriptor* descriptor(); static const ServiceOptions& default_instance(); - + void Swap(ServiceOptions* other); - + // implements Message ---------------------------------------------- - + ServiceOptions* New() const; void CopyFrom(const ::google::protobuf::Message& from); void MergeFrom(const ::google::protobuf::Message& from); @@ -2058,7 +2142,7 @@ class LIBPROTOBUF_EXPORT ServiceOptions : public ::google::protobuf::Message { void MergeFrom(const ServiceOptions& from); void Clear(); bool IsInitialized() const; - + int ByteSize() const; bool MergePartialFromCodedStream( ::google::protobuf::io::CodedInputStream* input); @@ -2071,13 +2155,13 @@ class LIBPROTOBUF_EXPORT ServiceOptions : public ::google::protobuf::Message { void SharedDtor(); void SetCachedSize(int size) const; public: - + ::google::protobuf::Metadata GetMetadata() const; - + // nested types ---------------------------------------------------- - + // accessors ------------------------------------------------------- - + // repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999; inline int uninterpreted_option_size() const; inline void clear_uninterpreted_option(); @@ -2089,32 +2173,24 @@ class LIBPROTOBUF_EXPORT ServiceOptions : public ::google::protobuf::Message { uninterpreted_option() const; inline ::google::protobuf::RepeatedPtrField< ::google::protobuf::UninterpretedOption >* mutable_uninterpreted_option(); - + GOOGLE_PROTOBUF_EXTENSION_ACCESSORS(ServiceOptions) // @@protoc_insertion_point(class_scope:google.protobuf.ServiceOptions) private: + ::google::protobuf::internal::ExtensionSet _extensions_; + ::google::protobuf::UnknownFieldSet _unknown_fields_; - mutable int _cached_size_; - + ::google::protobuf::RepeatedPtrField< ::google::protobuf::UninterpretedOption > uninterpreted_option_; + + mutable int _cached_size_; + ::google::protobuf::uint32 _has_bits_[(1 + 31) / 32]; + friend void LIBPROTOBUF_EXPORT protobuf_AddDesc_google_2fprotobuf_2fdescriptor_2eproto(); friend void protobuf_AssignDesc_google_2fprotobuf_2fdescriptor_2eproto(); friend void protobuf_ShutdownFile_google_2fprotobuf_2fdescriptor_2eproto(); - - ::google::protobuf::uint32 _has_bits_[(1 + 31) / 32]; - - // WHY DOES & HAVE LOWER PRECEDENCE THAN != !? - inline bool _has_bit(int index) const { - return (_has_bits_[index / 32] & (1u << (index % 32))) != 0; - } - inline void _set_bit(int index) { - _has_bits_[index / 32] |= (1u << (index % 32)); - } - inline void _clear_bit(int index) { - _has_bits_[index / 32] &= ~(1u << (index % 32)); - } - + void InitAsDefaultInstance(); static ServiceOptions* default_instance_; }; @@ -2124,29 +2200,29 @@ class LIBPROTOBUF_EXPORT MethodOptions : public ::google::protobuf::Message { public: MethodOptions(); virtual ~MethodOptions(); - + MethodOptions(const MethodOptions& from); - + inline MethodOptions& operator=(const MethodOptions& from) { CopyFrom(from); return *this; } - + inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const { return _unknown_fields_; } - + inline ::google::protobuf::UnknownFieldSet* mutable_unknown_fields() { return &_unknown_fields_; } - + static const ::google::protobuf::Descriptor* descriptor(); static const MethodOptions& default_instance(); - + void Swap(MethodOptions* other); - + // implements Message ---------------------------------------------- - + MethodOptions* New() const; void CopyFrom(const ::google::protobuf::Message& from); void MergeFrom(const ::google::protobuf::Message& from); @@ -2154,7 +2230,7 @@ class LIBPROTOBUF_EXPORT MethodOptions : public ::google::protobuf::Message { void MergeFrom(const MethodOptions& from); void Clear(); bool IsInitialized() const; - + int ByteSize() const; bool MergePartialFromCodedStream( ::google::protobuf::io::CodedInputStream* input); @@ -2167,13 +2243,13 @@ class LIBPROTOBUF_EXPORT MethodOptions : public ::google::protobuf::Message { void SharedDtor(); void SetCachedSize(int size) const; public: - + ::google::protobuf::Metadata GetMetadata() const; - + // nested types ---------------------------------------------------- - + // accessors ------------------------------------------------------- - + // repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999; inline int uninterpreted_option_size() const; inline void clear_uninterpreted_option(); @@ -2185,32 +2261,24 @@ class LIBPROTOBUF_EXPORT MethodOptions : public ::google::protobuf::Message { uninterpreted_option() const; inline ::google::protobuf::RepeatedPtrField< ::google::protobuf::UninterpretedOption >* mutable_uninterpreted_option(); - + GOOGLE_PROTOBUF_EXTENSION_ACCESSORS(MethodOptions) // @@protoc_insertion_point(class_scope:google.protobuf.MethodOptions) private: + ::google::protobuf::internal::ExtensionSet _extensions_; + ::google::protobuf::UnknownFieldSet _unknown_fields_; - mutable int _cached_size_; - + ::google::protobuf::RepeatedPtrField< ::google::protobuf::UninterpretedOption > uninterpreted_option_; + + mutable int _cached_size_; + ::google::protobuf::uint32 _has_bits_[(1 + 31) / 32]; + friend void LIBPROTOBUF_EXPORT protobuf_AddDesc_google_2fprotobuf_2fdescriptor_2eproto(); friend void protobuf_AssignDesc_google_2fprotobuf_2fdescriptor_2eproto(); friend void protobuf_ShutdownFile_google_2fprotobuf_2fdescriptor_2eproto(); - - ::google::protobuf::uint32 _has_bits_[(1 + 31) / 32]; - - // WHY DOES & HAVE LOWER PRECEDENCE THAN != !? - inline bool _has_bit(int index) const { - return (_has_bits_[index / 32] & (1u << (index % 32))) != 0; - } - inline void _set_bit(int index) { - _has_bits_[index / 32] |= (1u << (index % 32)); - } - inline void _clear_bit(int index) { - _has_bits_[index / 32] &= ~(1u << (index % 32)); - } - + void InitAsDefaultInstance(); static MethodOptions* default_instance_; }; @@ -2220,37 +2288,296 @@ class LIBPROTOBUF_EXPORT UninterpretedOption_NamePart : public ::google::protobu public: UninterpretedOption_NamePart(); virtual ~UninterpretedOption_NamePart(); - + UninterpretedOption_NamePart(const UninterpretedOption_NamePart& from); - + inline UninterpretedOption_NamePart& operator=(const UninterpretedOption_NamePart& from) { CopyFrom(from); return *this; } - + + inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const { + return _unknown_fields_; + } + + inline ::google::protobuf::UnknownFieldSet* mutable_unknown_fields() { + return &_unknown_fields_; + } + + static const ::google::protobuf::Descriptor* descriptor(); + static const UninterpretedOption_NamePart& default_instance(); + + void Swap(UninterpretedOption_NamePart* other); + + // implements Message ---------------------------------------------- + + UninterpretedOption_NamePart* New() const; + void CopyFrom(const ::google::protobuf::Message& from); + void MergeFrom(const ::google::protobuf::Message& from); + void CopyFrom(const UninterpretedOption_NamePart& from); + void MergeFrom(const UninterpretedOption_NamePart& from); + void Clear(); + bool IsInitialized() const; + + int ByteSize() const; + bool MergePartialFromCodedStream( + ::google::protobuf::io::CodedInputStream* input); + void SerializeWithCachedSizes( + ::google::protobuf::io::CodedOutputStream* output) const; + ::google::protobuf::uint8* SerializeWithCachedSizesToArray(::google::protobuf::uint8* output) const; + int GetCachedSize() const { return _cached_size_; } + private: + void SharedCtor(); + void SharedDtor(); + void SetCachedSize(int size) const; + public: + + ::google::protobuf::Metadata GetMetadata() const; + + // nested types ---------------------------------------------------- + + // accessors ------------------------------------------------------- + + // required string name_part = 1; + inline bool has_name_part() const; + inline void clear_name_part(); + static const int kNamePartFieldNumber = 1; + inline const ::std::string& name_part() const; + inline void set_name_part(const ::std::string& value); + inline void set_name_part(const char* value); + inline void set_name_part(const char* value, size_t size); + inline ::std::string* mutable_name_part(); + inline ::std::string* release_name_part(); + inline void set_allocated_name_part(::std::string* name_part); + + // required bool is_extension = 2; + inline bool has_is_extension() const; + inline void clear_is_extension(); + static const int kIsExtensionFieldNumber = 2; + inline bool is_extension() const; + inline void set_is_extension(bool value); + + // @@protoc_insertion_point(class_scope:google.protobuf.UninterpretedOption.NamePart) + private: + inline void set_has_name_part(); + inline void clear_has_name_part(); + inline void set_has_is_extension(); + inline void clear_has_is_extension(); + + ::google::protobuf::UnknownFieldSet _unknown_fields_; + + ::std::string* name_part_; + bool is_extension_; + + mutable int _cached_size_; + ::google::protobuf::uint32 _has_bits_[(2 + 31) / 32]; + + friend void LIBPROTOBUF_EXPORT protobuf_AddDesc_google_2fprotobuf_2fdescriptor_2eproto(); + friend void protobuf_AssignDesc_google_2fprotobuf_2fdescriptor_2eproto(); + friend void protobuf_ShutdownFile_google_2fprotobuf_2fdescriptor_2eproto(); + + void InitAsDefaultInstance(); + static UninterpretedOption_NamePart* default_instance_; +}; +// ------------------------------------------------------------------- + +class LIBPROTOBUF_EXPORT UninterpretedOption : public ::google::protobuf::Message { + public: + UninterpretedOption(); + virtual ~UninterpretedOption(); + + UninterpretedOption(const UninterpretedOption& from); + + inline UninterpretedOption& operator=(const UninterpretedOption& from) { + CopyFrom(from); + return *this; + } + + inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const { + return _unknown_fields_; + } + + inline ::google::protobuf::UnknownFieldSet* mutable_unknown_fields() { + return &_unknown_fields_; + } + + static const ::google::protobuf::Descriptor* descriptor(); + static const UninterpretedOption& default_instance(); + + void Swap(UninterpretedOption* other); + + // implements Message ---------------------------------------------- + + UninterpretedOption* New() const; + void CopyFrom(const ::google::protobuf::Message& from); + void MergeFrom(const ::google::protobuf::Message& from); + void CopyFrom(const UninterpretedOption& from); + void MergeFrom(const UninterpretedOption& from); + void Clear(); + bool IsInitialized() const; + + int ByteSize() const; + bool MergePartialFromCodedStream( + ::google::protobuf::io::CodedInputStream* input); + void SerializeWithCachedSizes( + ::google::protobuf::io::CodedOutputStream* output) const; + ::google::protobuf::uint8* SerializeWithCachedSizesToArray(::google::protobuf::uint8* output) const; + int GetCachedSize() const { return _cached_size_; } + private: + void SharedCtor(); + void SharedDtor(); + void SetCachedSize(int size) const; + public: + + ::google::protobuf::Metadata GetMetadata() const; + + // nested types ---------------------------------------------------- + + typedef UninterpretedOption_NamePart NamePart; + + // accessors ------------------------------------------------------- + + // repeated .google.protobuf.UninterpretedOption.NamePart name = 2; + inline int name_size() const; + inline void clear_name(); + static const int kNameFieldNumber = 2; + inline const ::google::protobuf::UninterpretedOption_NamePart& name(int index) const; + inline ::google::protobuf::UninterpretedOption_NamePart* mutable_name(int index); + inline ::google::protobuf::UninterpretedOption_NamePart* add_name(); + inline const ::google::protobuf::RepeatedPtrField< ::google::protobuf::UninterpretedOption_NamePart >& + name() const; + inline ::google::protobuf::RepeatedPtrField< ::google::protobuf::UninterpretedOption_NamePart >* + mutable_name(); + + // optional string identifier_value = 3; + inline bool has_identifier_value() const; + inline void clear_identifier_value(); + static const int kIdentifierValueFieldNumber = 3; + inline const ::std::string& identifier_value() const; + inline void set_identifier_value(const ::std::string& value); + inline void set_identifier_value(const char* value); + inline void set_identifier_value(const char* value, size_t size); + inline ::std::string* mutable_identifier_value(); + inline ::std::string* release_identifier_value(); + inline void set_allocated_identifier_value(::std::string* identifier_value); + + // optional uint64 positive_int_value = 4; + inline bool has_positive_int_value() const; + inline void clear_positive_int_value(); + static const int kPositiveIntValueFieldNumber = 4; + inline ::google::protobuf::uint64 positive_int_value() const; + inline void set_positive_int_value(::google::protobuf::uint64 value); + + // optional int64 negative_int_value = 5; + inline bool has_negative_int_value() const; + inline void clear_negative_int_value(); + static const int kNegativeIntValueFieldNumber = 5; + inline ::google::protobuf::int64 negative_int_value() const; + inline void set_negative_int_value(::google::protobuf::int64 value); + + // optional double double_value = 6; + inline bool has_double_value() const; + inline void clear_double_value(); + static const int kDoubleValueFieldNumber = 6; + inline double double_value() const; + inline void set_double_value(double value); + + // optional bytes string_value = 7; + inline bool has_string_value() const; + inline void clear_string_value(); + static const int kStringValueFieldNumber = 7; + inline const ::std::string& string_value() const; + inline void set_string_value(const ::std::string& value); + inline void set_string_value(const char* value); + inline void set_string_value(const void* value, size_t size); + inline ::std::string* mutable_string_value(); + inline ::std::string* release_string_value(); + inline void set_allocated_string_value(::std::string* string_value); + + // optional string aggregate_value = 8; + inline bool has_aggregate_value() const; + inline void clear_aggregate_value(); + static const int kAggregateValueFieldNumber = 8; + inline const ::std::string& aggregate_value() const; + inline void set_aggregate_value(const ::std::string& value); + inline void set_aggregate_value(const char* value); + inline void set_aggregate_value(const char* value, size_t size); + inline ::std::string* mutable_aggregate_value(); + inline ::std::string* release_aggregate_value(); + inline void set_allocated_aggregate_value(::std::string* aggregate_value); + + // @@protoc_insertion_point(class_scope:google.protobuf.UninterpretedOption) + private: + inline void set_has_identifier_value(); + inline void clear_has_identifier_value(); + inline void set_has_positive_int_value(); + inline void clear_has_positive_int_value(); + inline void set_has_negative_int_value(); + inline void clear_has_negative_int_value(); + inline void set_has_double_value(); + inline void clear_has_double_value(); + inline void set_has_string_value(); + inline void clear_has_string_value(); + inline void set_has_aggregate_value(); + inline void clear_has_aggregate_value(); + + ::google::protobuf::UnknownFieldSet _unknown_fields_; + + ::google::protobuf::RepeatedPtrField< ::google::protobuf::UninterpretedOption_NamePart > name_; + ::std::string* identifier_value_; + ::google::protobuf::uint64 positive_int_value_; + ::google::protobuf::int64 negative_int_value_; + double double_value_; + ::std::string* string_value_; + ::std::string* aggregate_value_; + + mutable int _cached_size_; + ::google::protobuf::uint32 _has_bits_[(7 + 31) / 32]; + + friend void LIBPROTOBUF_EXPORT protobuf_AddDesc_google_2fprotobuf_2fdescriptor_2eproto(); + friend void protobuf_AssignDesc_google_2fprotobuf_2fdescriptor_2eproto(); + friend void protobuf_ShutdownFile_google_2fprotobuf_2fdescriptor_2eproto(); + + void InitAsDefaultInstance(); + static UninterpretedOption* default_instance_; +}; +// ------------------------------------------------------------------- + +class LIBPROTOBUF_EXPORT SourceCodeInfo_Location : public ::google::protobuf::Message { + public: + SourceCodeInfo_Location(); + virtual ~SourceCodeInfo_Location(); + + SourceCodeInfo_Location(const SourceCodeInfo_Location& from); + + inline SourceCodeInfo_Location& operator=(const SourceCodeInfo_Location& from) { + CopyFrom(from); + return *this; + } + inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const { return _unknown_fields_; } - + inline ::google::protobuf::UnknownFieldSet* mutable_unknown_fields() { return &_unknown_fields_; } - + static const ::google::protobuf::Descriptor* descriptor(); - static const UninterpretedOption_NamePart& default_instance(); - - void Swap(UninterpretedOption_NamePart* other); - + static const SourceCodeInfo_Location& default_instance(); + + void Swap(SourceCodeInfo_Location* other); + // implements Message ---------------------------------------------- - - UninterpretedOption_NamePart* New() const; + + SourceCodeInfo_Location* New() const; void CopyFrom(const ::google::protobuf::Message& from); void MergeFrom(const ::google::protobuf::Message& from); - void CopyFrom(const UninterpretedOption_NamePart& from); - void MergeFrom(const UninterpretedOption_NamePart& from); + void CopyFrom(const SourceCodeInfo_Location& from); + void MergeFrom(const SourceCodeInfo_Location& from); void Clear(); bool IsInitialized() const; - + int ByteSize() const; bool MergePartialFromCodedStream( ::google::protobuf::io::CodedInputStream* input); @@ -2263,95 +2590,124 @@ class LIBPROTOBUF_EXPORT UninterpretedOption_NamePart : public ::google::protobu void SharedDtor(); void SetCachedSize(int size) const; public: - + ::google::protobuf::Metadata GetMetadata() const; - + // nested types ---------------------------------------------------- - + // accessors ------------------------------------------------------- - - // required string name_part = 1; - inline bool has_name_part() const; - inline void clear_name_part(); - static const int kNamePartFieldNumber = 1; - inline const ::std::string& name_part() const; - inline void set_name_part(const ::std::string& value); - inline void set_name_part(const char* value); - inline void set_name_part(const char* value, size_t size); - inline ::std::string* mutable_name_part(); - - // required bool is_extension = 2; - inline bool has_is_extension() const; - inline void clear_is_extension(); - static const int kIsExtensionFieldNumber = 2; - inline bool is_extension() const; - inline void set_is_extension(bool value); - - // @@protoc_insertion_point(class_scope:google.protobuf.UninterpretedOption.NamePart) + + // repeated int32 path = 1 [packed = true]; + inline int path_size() const; + inline void clear_path(); + static const int kPathFieldNumber = 1; + inline ::google::protobuf::int32 path(int index) const; + inline void set_path(int index, ::google::protobuf::int32 value); + inline void add_path(::google::protobuf::int32 value); + inline const ::google::protobuf::RepeatedField< ::google::protobuf::int32 >& + path() const; + inline ::google::protobuf::RepeatedField< ::google::protobuf::int32 >* + mutable_path(); + + // repeated int32 span = 2 [packed = true]; + inline int span_size() const; + inline void clear_span(); + static const int kSpanFieldNumber = 2; + inline ::google::protobuf::int32 span(int index) const; + inline void set_span(int index, ::google::protobuf::int32 value); + inline void add_span(::google::protobuf::int32 value); + inline const ::google::protobuf::RepeatedField< ::google::protobuf::int32 >& + span() const; + inline ::google::protobuf::RepeatedField< ::google::protobuf::int32 >* + mutable_span(); + + // optional string leading_comments = 3; + inline bool has_leading_comments() const; + inline void clear_leading_comments(); + static const int kLeadingCommentsFieldNumber = 3; + inline const ::std::string& leading_comments() const; + inline void set_leading_comments(const ::std::string& value); + inline void set_leading_comments(const char* value); + inline void set_leading_comments(const char* value, size_t size); + inline ::std::string* mutable_leading_comments(); + inline ::std::string* release_leading_comments(); + inline void set_allocated_leading_comments(::std::string* leading_comments); + + // optional string trailing_comments = 4; + inline bool has_trailing_comments() const; + inline void clear_trailing_comments(); + static const int kTrailingCommentsFieldNumber = 4; + inline const ::std::string& trailing_comments() const; + inline void set_trailing_comments(const ::std::string& value); + inline void set_trailing_comments(const char* value); + inline void set_trailing_comments(const char* value, size_t size); + inline ::std::string* mutable_trailing_comments(); + inline ::std::string* release_trailing_comments(); + inline void set_allocated_trailing_comments(::std::string* trailing_comments); + + // @@protoc_insertion_point(class_scope:google.protobuf.SourceCodeInfo.Location) private: + inline void set_has_leading_comments(); + inline void clear_has_leading_comments(); + inline void set_has_trailing_comments(); + inline void clear_has_trailing_comments(); + ::google::protobuf::UnknownFieldSet _unknown_fields_; + + ::google::protobuf::RepeatedField< ::google::protobuf::int32 > path_; + mutable int _path_cached_byte_size_; + ::google::protobuf::RepeatedField< ::google::protobuf::int32 > span_; + mutable int _span_cached_byte_size_; + ::std::string* leading_comments_; + ::std::string* trailing_comments_; + mutable int _cached_size_; - - ::std::string* name_part_; - static const ::std::string _default_name_part_; - bool is_extension_; + ::google::protobuf::uint32 _has_bits_[(4 + 31) / 32]; + friend void LIBPROTOBUF_EXPORT protobuf_AddDesc_google_2fprotobuf_2fdescriptor_2eproto(); friend void protobuf_AssignDesc_google_2fprotobuf_2fdescriptor_2eproto(); friend void protobuf_ShutdownFile_google_2fprotobuf_2fdescriptor_2eproto(); - - ::google::protobuf::uint32 _has_bits_[(2 + 31) / 32]; - - // WHY DOES & HAVE LOWER PRECEDENCE THAN != !? - inline bool _has_bit(int index) const { - return (_has_bits_[index / 32] & (1u << (index % 32))) != 0; - } - inline void _set_bit(int index) { - _has_bits_[index / 32] |= (1u << (index % 32)); - } - inline void _clear_bit(int index) { - _has_bits_[index / 32] &= ~(1u << (index % 32)); - } - + void InitAsDefaultInstance(); - static UninterpretedOption_NamePart* default_instance_; + static SourceCodeInfo_Location* default_instance_; }; // ------------------------------------------------------------------- -class LIBPROTOBUF_EXPORT UninterpretedOption : public ::google::protobuf::Message { +class LIBPROTOBUF_EXPORT SourceCodeInfo : public ::google::protobuf::Message { public: - UninterpretedOption(); - virtual ~UninterpretedOption(); - - UninterpretedOption(const UninterpretedOption& from); - - inline UninterpretedOption& operator=(const UninterpretedOption& from) { + SourceCodeInfo(); + virtual ~SourceCodeInfo(); + + SourceCodeInfo(const SourceCodeInfo& from); + + inline SourceCodeInfo& operator=(const SourceCodeInfo& from) { CopyFrom(from); return *this; } - + inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const { return _unknown_fields_; } - + inline ::google::protobuf::UnknownFieldSet* mutable_unknown_fields() { return &_unknown_fields_; } - + static const ::google::protobuf::Descriptor* descriptor(); - static const UninterpretedOption& default_instance(); - - void Swap(UninterpretedOption* other); - + static const SourceCodeInfo& default_instance(); + + void Swap(SourceCodeInfo* other); + // implements Message ---------------------------------------------- - - UninterpretedOption* New() const; + + SourceCodeInfo* New() const; void CopyFrom(const ::google::protobuf::Message& from); void MergeFrom(const ::google::protobuf::Message& from); - void CopyFrom(const UninterpretedOption& from); - void MergeFrom(const UninterpretedOption& from); + void CopyFrom(const SourceCodeInfo& from); + void MergeFrom(const SourceCodeInfo& from); void Clear(); bool IsInitialized() const; - + int ByteSize() const; bool MergePartialFromCodedStream( ::google::protobuf::io::CodedInputStream* input); @@ -2364,100 +2720,43 @@ class LIBPROTOBUF_EXPORT UninterpretedOption : public ::google::protobuf::Messag void SharedDtor(); void SetCachedSize(int size) const; public: - + ::google::protobuf::Metadata GetMetadata() const; - + // nested types ---------------------------------------------------- - - typedef UninterpretedOption_NamePart NamePart; - + + typedef SourceCodeInfo_Location Location; + // accessors ------------------------------------------------------- - - // repeated .google.protobuf.UninterpretedOption.NamePart name = 2; - inline int name_size() const; - inline void clear_name(); - static const int kNameFieldNumber = 2; - inline const ::google::protobuf::UninterpretedOption_NamePart& name(int index) const; - inline ::google::protobuf::UninterpretedOption_NamePart* mutable_name(int index); - inline ::google::protobuf::UninterpretedOption_NamePart* add_name(); - inline const ::google::protobuf::RepeatedPtrField< ::google::protobuf::UninterpretedOption_NamePart >& - name() const; - inline ::google::protobuf::RepeatedPtrField< ::google::protobuf::UninterpretedOption_NamePart >* - mutable_name(); - - // optional string identifier_value = 3; - inline bool has_identifier_value() const; - inline void clear_identifier_value(); - static const int kIdentifierValueFieldNumber = 3; - inline const ::std::string& identifier_value() const; - inline void set_identifier_value(const ::std::string& value); - inline void set_identifier_value(const char* value); - inline void set_identifier_value(const char* value, size_t size); - inline ::std::string* mutable_identifier_value(); - - // optional uint64 positive_int_value = 4; - inline bool has_positive_int_value() const; - inline void clear_positive_int_value(); - static const int kPositiveIntValueFieldNumber = 4; - inline ::google::protobuf::uint64 positive_int_value() const; - inline void set_positive_int_value(::google::protobuf::uint64 value); - - // optional int64 negative_int_value = 5; - inline bool has_negative_int_value() const; - inline void clear_negative_int_value(); - static const int kNegativeIntValueFieldNumber = 5; - inline ::google::protobuf::int64 negative_int_value() const; - inline void set_negative_int_value(::google::protobuf::int64 value); - - // optional double double_value = 6; - inline bool has_double_value() const; - inline void clear_double_value(); - static const int kDoubleValueFieldNumber = 6; - inline double double_value() const; - inline void set_double_value(double value); - - // optional bytes string_value = 7; - inline bool has_string_value() const; - inline void clear_string_value(); - static const int kStringValueFieldNumber = 7; - inline const ::std::string& string_value() const; - inline void set_string_value(const ::std::string& value); - inline void set_string_value(const char* value); - inline void set_string_value(const void* value, size_t size); - inline ::std::string* mutable_string_value(); - - // @@protoc_insertion_point(class_scope:google.protobuf.UninterpretedOption) + + // repeated .google.protobuf.SourceCodeInfo.Location location = 1; + inline int location_size() const; + inline void clear_location(); + static const int kLocationFieldNumber = 1; + inline const ::google::protobuf::SourceCodeInfo_Location& location(int index) const; + inline ::google::protobuf::SourceCodeInfo_Location* mutable_location(int index); + inline ::google::protobuf::SourceCodeInfo_Location* add_location(); + inline const ::google::protobuf::RepeatedPtrField< ::google::protobuf::SourceCodeInfo_Location >& + location() const; + inline ::google::protobuf::RepeatedPtrField< ::google::protobuf::SourceCodeInfo_Location >* + mutable_location(); + + // @@protoc_insertion_point(class_scope:google.protobuf.SourceCodeInfo) private: + ::google::protobuf::UnknownFieldSet _unknown_fields_; + + ::google::protobuf::RepeatedPtrField< ::google::protobuf::SourceCodeInfo_Location > location_; + mutable int _cached_size_; - - ::google::protobuf::RepeatedPtrField< ::google::protobuf::UninterpretedOption_NamePart > name_; - ::std::string* identifier_value_; - static const ::std::string _default_identifier_value_; - ::google::protobuf::uint64 positive_int_value_; - ::google::protobuf::int64 negative_int_value_; - double double_value_; - ::std::string* string_value_; - static const ::std::string _default_string_value_; + ::google::protobuf::uint32 _has_bits_[(1 + 31) / 32]; + friend void LIBPROTOBUF_EXPORT protobuf_AddDesc_google_2fprotobuf_2fdescriptor_2eproto(); friend void protobuf_AssignDesc_google_2fprotobuf_2fdescriptor_2eproto(); friend void protobuf_ShutdownFile_google_2fprotobuf_2fdescriptor_2eproto(); - - ::google::protobuf::uint32 _has_bits_[(6 + 31) / 32]; - - // WHY DOES & HAVE LOWER PRECEDENCE THAN != !? - inline bool _has_bit(int index) const { - return (_has_bits_[index / 32] & (1u << (index % 32))) != 0; - } - inline void _set_bit(int index) { - _has_bits_[index / 32] |= (1u << (index % 32)); - } - inline void _clear_bit(int index) { - _has_bits_[index / 32] &= ~(1u << (index % 32)); - } - + void InitAsDefaultInstance(); - static UninterpretedOption* default_instance_; + static SourceCodeInfo* default_instance_; }; // =================================================================== @@ -2497,87 +2796,143 @@ FileDescriptorSet::mutable_file() { // optional string name = 1; inline bool FileDescriptorProto::has_name() const { - return _has_bit(0); + return (_has_bits_[0] & 0x00000001u) != 0; +} +inline void FileDescriptorProto::set_has_name() { + _has_bits_[0] |= 0x00000001u; +} +inline void FileDescriptorProto::clear_has_name() { + _has_bits_[0] &= ~0x00000001u; } inline void FileDescriptorProto::clear_name() { - if (name_ != &_default_name_) { + if (name_ != &::google::protobuf::internal::kEmptyString) { name_->clear(); } - _clear_bit(0); + clear_has_name(); } inline const ::std::string& FileDescriptorProto::name() const { return *name_; } inline void FileDescriptorProto::set_name(const ::std::string& value) { - _set_bit(0); - if (name_ == &_default_name_) { + set_has_name(); + if (name_ == &::google::protobuf::internal::kEmptyString) { name_ = new ::std::string; } name_->assign(value); } inline void FileDescriptorProto::set_name(const char* value) { - _set_bit(0); - if (name_ == &_default_name_) { + set_has_name(); + if (name_ == &::google::protobuf::internal::kEmptyString) { name_ = new ::std::string; } name_->assign(value); } inline void FileDescriptorProto::set_name(const char* value, size_t size) { - _set_bit(0); - if (name_ == &_default_name_) { + set_has_name(); + if (name_ == &::google::protobuf::internal::kEmptyString) { name_ = new ::std::string; } name_->assign(reinterpret_cast(value), size); } inline ::std::string* FileDescriptorProto::mutable_name() { - _set_bit(0); - if (name_ == &_default_name_) { + set_has_name(); + if (name_ == &::google::protobuf::internal::kEmptyString) { name_ = new ::std::string; } return name_; } +inline ::std::string* FileDescriptorProto::release_name() { + clear_has_name(); + if (name_ == &::google::protobuf::internal::kEmptyString) { + return NULL; + } else { + ::std::string* temp = name_; + name_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + return temp; + } +} +inline void FileDescriptorProto::set_allocated_name(::std::string* name) { + if (name_ != &::google::protobuf::internal::kEmptyString) { + delete name_; + } + if (name) { + set_has_name(); + name_ = name; + } else { + clear_has_name(); + name_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + } +} // optional string package = 2; inline bool FileDescriptorProto::has_package() const { - return _has_bit(1); + return (_has_bits_[0] & 0x00000002u) != 0; +} +inline void FileDescriptorProto::set_has_package() { + _has_bits_[0] |= 0x00000002u; +} +inline void FileDescriptorProto::clear_has_package() { + _has_bits_[0] &= ~0x00000002u; } inline void FileDescriptorProto::clear_package() { - if (package_ != &_default_package_) { + if (package_ != &::google::protobuf::internal::kEmptyString) { package_->clear(); } - _clear_bit(1); + clear_has_package(); } inline const ::std::string& FileDescriptorProto::package() const { return *package_; } inline void FileDescriptorProto::set_package(const ::std::string& value) { - _set_bit(1); - if (package_ == &_default_package_) { + set_has_package(); + if (package_ == &::google::protobuf::internal::kEmptyString) { package_ = new ::std::string; } package_->assign(value); } inline void FileDescriptorProto::set_package(const char* value) { - _set_bit(1); - if (package_ == &_default_package_) { + set_has_package(); + if (package_ == &::google::protobuf::internal::kEmptyString) { package_ = new ::std::string; } package_->assign(value); } inline void FileDescriptorProto::set_package(const char* value, size_t size) { - _set_bit(1); - if (package_ == &_default_package_) { + set_has_package(); + if (package_ == &::google::protobuf::internal::kEmptyString) { package_ = new ::std::string; } package_->assign(reinterpret_cast(value), size); } inline ::std::string* FileDescriptorProto::mutable_package() { - _set_bit(1); - if (package_ == &_default_package_) { + set_has_package(); + if (package_ == &::google::protobuf::internal::kEmptyString) { package_ = new ::std::string; } return package_; } +inline ::std::string* FileDescriptorProto::release_package() { + clear_has_package(); + if (package_ == &::google::protobuf::internal::kEmptyString) { + return NULL; + } else { + ::std::string* temp = package_; + package_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + return temp; + } +} +inline void FileDescriptorProto::set_allocated_package(::std::string* package) { + if (package_ != &::google::protobuf::internal::kEmptyString) { + delete package_; + } + if (package) { + set_has_package(); + package_ = package; + } else { + clear_has_package(); + package_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + } +} // repeated string dependency = 3; inline int FileDescriptorProto::dependency_size() const { @@ -2623,6 +2978,56 @@ FileDescriptorProto::mutable_dependency() { return &dependency_; } +// repeated int32 public_dependency = 10; +inline int FileDescriptorProto::public_dependency_size() const { + return public_dependency_.size(); +} +inline void FileDescriptorProto::clear_public_dependency() { + public_dependency_.Clear(); +} +inline ::google::protobuf::int32 FileDescriptorProto::public_dependency(int index) const { + return public_dependency_.Get(index); +} +inline void FileDescriptorProto::set_public_dependency(int index, ::google::protobuf::int32 value) { + public_dependency_.Set(index, value); +} +inline void FileDescriptorProto::add_public_dependency(::google::protobuf::int32 value) { + public_dependency_.Add(value); +} +inline const ::google::protobuf::RepeatedField< ::google::protobuf::int32 >& +FileDescriptorProto::public_dependency() const { + return public_dependency_; +} +inline ::google::protobuf::RepeatedField< ::google::protobuf::int32 >* +FileDescriptorProto::mutable_public_dependency() { + return &public_dependency_; +} + +// repeated int32 weak_dependency = 11; +inline int FileDescriptorProto::weak_dependency_size() const { + return weak_dependency_.size(); +} +inline void FileDescriptorProto::clear_weak_dependency() { + weak_dependency_.Clear(); +} +inline ::google::protobuf::int32 FileDescriptorProto::weak_dependency(int index) const { + return weak_dependency_.Get(index); +} +inline void FileDescriptorProto::set_weak_dependency(int index, ::google::protobuf::int32 value) { + weak_dependency_.Set(index, value); +} +inline void FileDescriptorProto::add_weak_dependency(::google::protobuf::int32 value) { + weak_dependency_.Add(value); +} +inline const ::google::protobuf::RepeatedField< ::google::protobuf::int32 >& +FileDescriptorProto::weak_dependency() const { + return weak_dependency_; +} +inline ::google::protobuf::RepeatedField< ::google::protobuf::int32 >* +FileDescriptorProto::mutable_weak_dependency() { + return &weak_dependency_; +} + // repeated .google.protobuf.DescriptorProto message_type = 4; inline int FileDescriptorProto::message_type_size() const { return message_type_.size(); @@ -2725,20 +3130,79 @@ FileDescriptorProto::mutable_extension() { // optional .google.protobuf.FileOptions options = 8; inline bool FileDescriptorProto::has_options() const { - return _has_bit(7); + return (_has_bits_[0] & 0x00000200u) != 0; +} +inline void FileDescriptorProto::set_has_options() { + _has_bits_[0] |= 0x00000200u; +} +inline void FileDescriptorProto::clear_has_options() { + _has_bits_[0] &= ~0x00000200u; } inline void FileDescriptorProto::clear_options() { if (options_ != NULL) options_->::google::protobuf::FileOptions::Clear(); - _clear_bit(7); + clear_has_options(); } inline const ::google::protobuf::FileOptions& FileDescriptorProto::options() const { return options_ != NULL ? *options_ : *default_instance_->options_; } inline ::google::protobuf::FileOptions* FileDescriptorProto::mutable_options() { - _set_bit(7); + set_has_options(); if (options_ == NULL) options_ = new ::google::protobuf::FileOptions; return options_; } +inline ::google::protobuf::FileOptions* FileDescriptorProto::release_options() { + clear_has_options(); + ::google::protobuf::FileOptions* temp = options_; + options_ = NULL; + return temp; +} +inline void FileDescriptorProto::set_allocated_options(::google::protobuf::FileOptions* options) { + delete options_; + options_ = options; + if (options) { + set_has_options(); + } else { + clear_has_options(); + } +} + +// optional .google.protobuf.SourceCodeInfo source_code_info = 9; +inline bool FileDescriptorProto::has_source_code_info() const { + return (_has_bits_[0] & 0x00000400u) != 0; +} +inline void FileDescriptorProto::set_has_source_code_info() { + _has_bits_[0] |= 0x00000400u; +} +inline void FileDescriptorProto::clear_has_source_code_info() { + _has_bits_[0] &= ~0x00000400u; +} +inline void FileDescriptorProto::clear_source_code_info() { + if (source_code_info_ != NULL) source_code_info_->::google::protobuf::SourceCodeInfo::Clear(); + clear_has_source_code_info(); +} +inline const ::google::protobuf::SourceCodeInfo& FileDescriptorProto::source_code_info() const { + return source_code_info_ != NULL ? *source_code_info_ : *default_instance_->source_code_info_; +} +inline ::google::protobuf::SourceCodeInfo* FileDescriptorProto::mutable_source_code_info() { + set_has_source_code_info(); + if (source_code_info_ == NULL) source_code_info_ = new ::google::protobuf::SourceCodeInfo; + return source_code_info_; +} +inline ::google::protobuf::SourceCodeInfo* FileDescriptorProto::release_source_code_info() { + clear_has_source_code_info(); + ::google::protobuf::SourceCodeInfo* temp = source_code_info_; + source_code_info_ = NULL; + return temp; +} +inline void FileDescriptorProto::set_allocated_source_code_info(::google::protobuf::SourceCodeInfo* source_code_info) { + delete source_code_info_; + source_code_info_ = source_code_info; + if (source_code_info) { + set_has_source_code_info(); + } else { + clear_has_source_code_info(); + } +} // ------------------------------------------------------------------- @@ -2746,33 +3210,45 @@ inline ::google::protobuf::FileOptions* FileDescriptorProto::mutable_options() { // optional int32 start = 1; inline bool DescriptorProto_ExtensionRange::has_start() const { - return _has_bit(0); + return (_has_bits_[0] & 0x00000001u) != 0; +} +inline void DescriptorProto_ExtensionRange::set_has_start() { + _has_bits_[0] |= 0x00000001u; +} +inline void DescriptorProto_ExtensionRange::clear_has_start() { + _has_bits_[0] &= ~0x00000001u; } inline void DescriptorProto_ExtensionRange::clear_start() { start_ = 0; - _clear_bit(0); + clear_has_start(); } inline ::google::protobuf::int32 DescriptorProto_ExtensionRange::start() const { return start_; } inline void DescriptorProto_ExtensionRange::set_start(::google::protobuf::int32 value) { - _set_bit(0); + set_has_start(); start_ = value; } // optional int32 end = 2; inline bool DescriptorProto_ExtensionRange::has_end() const { - return _has_bit(1); + return (_has_bits_[0] & 0x00000002u) != 0; +} +inline void DescriptorProto_ExtensionRange::set_has_end() { + _has_bits_[0] |= 0x00000002u; +} +inline void DescriptorProto_ExtensionRange::clear_has_end() { + _has_bits_[0] &= ~0x00000002u; } inline void DescriptorProto_ExtensionRange::clear_end() { end_ = 0; - _clear_bit(1); + clear_has_end(); } inline ::google::protobuf::int32 DescriptorProto_ExtensionRange::end() const { return end_; } inline void DescriptorProto_ExtensionRange::set_end(::google::protobuf::int32 value) { - _set_bit(1); + set_has_end(); end_ = value; } @@ -2782,45 +3258,73 @@ inline void DescriptorProto_ExtensionRange::set_end(::google::protobuf::int32 va // optional string name = 1; inline bool DescriptorProto::has_name() const { - return _has_bit(0); + return (_has_bits_[0] & 0x00000001u) != 0; +} +inline void DescriptorProto::set_has_name() { + _has_bits_[0] |= 0x00000001u; +} +inline void DescriptorProto::clear_has_name() { + _has_bits_[0] &= ~0x00000001u; } inline void DescriptorProto::clear_name() { - if (name_ != &_default_name_) { + if (name_ != &::google::protobuf::internal::kEmptyString) { name_->clear(); } - _clear_bit(0); + clear_has_name(); } inline const ::std::string& DescriptorProto::name() const { return *name_; } inline void DescriptorProto::set_name(const ::std::string& value) { - _set_bit(0); - if (name_ == &_default_name_) { + set_has_name(); + if (name_ == &::google::protobuf::internal::kEmptyString) { name_ = new ::std::string; } name_->assign(value); } inline void DescriptorProto::set_name(const char* value) { - _set_bit(0); - if (name_ == &_default_name_) { + set_has_name(); + if (name_ == &::google::protobuf::internal::kEmptyString) { name_ = new ::std::string; } name_->assign(value); } inline void DescriptorProto::set_name(const char* value, size_t size) { - _set_bit(0); - if (name_ == &_default_name_) { + set_has_name(); + if (name_ == &::google::protobuf::internal::kEmptyString) { name_ = new ::std::string; } name_->assign(reinterpret_cast(value), size); } inline ::std::string* DescriptorProto::mutable_name() { - _set_bit(0); - if (name_ == &_default_name_) { + set_has_name(); + if (name_ == &::google::protobuf::internal::kEmptyString) { name_ = new ::std::string; } return name_; } +inline ::std::string* DescriptorProto::release_name() { + clear_has_name(); + if (name_ == &::google::protobuf::internal::kEmptyString) { + return NULL; + } else { + ::std::string* temp = name_; + name_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + return temp; + } +} +inline void DescriptorProto::set_allocated_name(::std::string* name) { + if (name_ != &::google::protobuf::internal::kEmptyString) { + delete name_; + } + if (name) { + set_has_name(); + name_ = name; + } else { + clear_has_name(); + name_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + } +} // repeated .google.protobuf.FieldDescriptorProto field = 2; inline int DescriptorProto::field_size() const { @@ -2949,20 +3453,41 @@ DescriptorProto::mutable_extension_range() { // optional .google.protobuf.MessageOptions options = 7; inline bool DescriptorProto::has_options() const { - return _has_bit(6); + return (_has_bits_[0] & 0x00000040u) != 0; +} +inline void DescriptorProto::set_has_options() { + _has_bits_[0] |= 0x00000040u; +} +inline void DescriptorProto::clear_has_options() { + _has_bits_[0] &= ~0x00000040u; } inline void DescriptorProto::clear_options() { if (options_ != NULL) options_->::google::protobuf::MessageOptions::Clear(); - _clear_bit(6); + clear_has_options(); } inline const ::google::protobuf::MessageOptions& DescriptorProto::options() const { return options_ != NULL ? *options_ : *default_instance_->options_; } inline ::google::protobuf::MessageOptions* DescriptorProto::mutable_options() { - _set_bit(6); + set_has_options(); if (options_ == NULL) options_ = new ::google::protobuf::MessageOptions; return options_; } +inline ::google::protobuf::MessageOptions* DescriptorProto::release_options() { + clear_has_options(); + ::google::protobuf::MessageOptions* temp = options_; + options_ = NULL; + return temp; +} +inline void DescriptorProto::set_allocated_options(::google::protobuf::MessageOptions* options) { + delete options_; + options_ = options; + if (options) { + set_has_options(); + } else { + clear_has_options(); + } +} // ------------------------------------------------------------------- @@ -2970,238 +3495,389 @@ inline ::google::protobuf::MessageOptions* DescriptorProto::mutable_options() { // optional string name = 1; inline bool FieldDescriptorProto::has_name() const { - return _has_bit(0); + return (_has_bits_[0] & 0x00000001u) != 0; +} +inline void FieldDescriptorProto::set_has_name() { + _has_bits_[0] |= 0x00000001u; +} +inline void FieldDescriptorProto::clear_has_name() { + _has_bits_[0] &= ~0x00000001u; } inline void FieldDescriptorProto::clear_name() { - if (name_ != &_default_name_) { + if (name_ != &::google::protobuf::internal::kEmptyString) { name_->clear(); } - _clear_bit(0); + clear_has_name(); } inline const ::std::string& FieldDescriptorProto::name() const { return *name_; } inline void FieldDescriptorProto::set_name(const ::std::string& value) { - _set_bit(0); - if (name_ == &_default_name_) { + set_has_name(); + if (name_ == &::google::protobuf::internal::kEmptyString) { name_ = new ::std::string; } name_->assign(value); } inline void FieldDescriptorProto::set_name(const char* value) { - _set_bit(0); - if (name_ == &_default_name_) { + set_has_name(); + if (name_ == &::google::protobuf::internal::kEmptyString) { name_ = new ::std::string; } name_->assign(value); } inline void FieldDescriptorProto::set_name(const char* value, size_t size) { - _set_bit(0); - if (name_ == &_default_name_) { + set_has_name(); + if (name_ == &::google::protobuf::internal::kEmptyString) { name_ = new ::std::string; } name_->assign(reinterpret_cast(value), size); } inline ::std::string* FieldDescriptorProto::mutable_name() { - _set_bit(0); - if (name_ == &_default_name_) { + set_has_name(); + if (name_ == &::google::protobuf::internal::kEmptyString) { name_ = new ::std::string; } return name_; } +inline ::std::string* FieldDescriptorProto::release_name() { + clear_has_name(); + if (name_ == &::google::protobuf::internal::kEmptyString) { + return NULL; + } else { + ::std::string* temp = name_; + name_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + return temp; + } +} +inline void FieldDescriptorProto::set_allocated_name(::std::string* name) { + if (name_ != &::google::protobuf::internal::kEmptyString) { + delete name_; + } + if (name) { + set_has_name(); + name_ = name; + } else { + clear_has_name(); + name_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + } +} // optional int32 number = 3; inline bool FieldDescriptorProto::has_number() const { - return _has_bit(1); + return (_has_bits_[0] & 0x00000002u) != 0; +} +inline void FieldDescriptorProto::set_has_number() { + _has_bits_[0] |= 0x00000002u; +} +inline void FieldDescriptorProto::clear_has_number() { + _has_bits_[0] &= ~0x00000002u; } inline void FieldDescriptorProto::clear_number() { number_ = 0; - _clear_bit(1); + clear_has_number(); } inline ::google::protobuf::int32 FieldDescriptorProto::number() const { return number_; } inline void FieldDescriptorProto::set_number(::google::protobuf::int32 value) { - _set_bit(1); + set_has_number(); number_ = value; } // optional .google.protobuf.FieldDescriptorProto.Label label = 4; inline bool FieldDescriptorProto::has_label() const { - return _has_bit(2); + return (_has_bits_[0] & 0x00000004u) != 0; +} +inline void FieldDescriptorProto::set_has_label() { + _has_bits_[0] |= 0x00000004u; +} +inline void FieldDescriptorProto::clear_has_label() { + _has_bits_[0] &= ~0x00000004u; } inline void FieldDescriptorProto::clear_label() { label_ = 1; - _clear_bit(2); + clear_has_label(); } inline ::google::protobuf::FieldDescriptorProto_Label FieldDescriptorProto::label() const { return static_cast< ::google::protobuf::FieldDescriptorProto_Label >(label_); } inline void FieldDescriptorProto::set_label(::google::protobuf::FieldDescriptorProto_Label value) { - GOOGLE_DCHECK(::google::protobuf::FieldDescriptorProto_Label_IsValid(value)); - _set_bit(2); + assert(::google::protobuf::FieldDescriptorProto_Label_IsValid(value)); + set_has_label(); label_ = value; } // optional .google.protobuf.FieldDescriptorProto.Type type = 5; inline bool FieldDescriptorProto::has_type() const { - return _has_bit(3); + return (_has_bits_[0] & 0x00000008u) != 0; +} +inline void FieldDescriptorProto::set_has_type() { + _has_bits_[0] |= 0x00000008u; +} +inline void FieldDescriptorProto::clear_has_type() { + _has_bits_[0] &= ~0x00000008u; } inline void FieldDescriptorProto::clear_type() { type_ = 1; - _clear_bit(3); + clear_has_type(); } inline ::google::protobuf::FieldDescriptorProto_Type FieldDescriptorProto::type() const { return static_cast< ::google::protobuf::FieldDescriptorProto_Type >(type_); } inline void FieldDescriptorProto::set_type(::google::protobuf::FieldDescriptorProto_Type value) { - GOOGLE_DCHECK(::google::protobuf::FieldDescriptorProto_Type_IsValid(value)); - _set_bit(3); + assert(::google::protobuf::FieldDescriptorProto_Type_IsValid(value)); + set_has_type(); type_ = value; } // optional string type_name = 6; inline bool FieldDescriptorProto::has_type_name() const { - return _has_bit(4); + return (_has_bits_[0] & 0x00000010u) != 0; +} +inline void FieldDescriptorProto::set_has_type_name() { + _has_bits_[0] |= 0x00000010u; +} +inline void FieldDescriptorProto::clear_has_type_name() { + _has_bits_[0] &= ~0x00000010u; } inline void FieldDescriptorProto::clear_type_name() { - if (type_name_ != &_default_type_name_) { + if (type_name_ != &::google::protobuf::internal::kEmptyString) { type_name_->clear(); } - _clear_bit(4); + clear_has_type_name(); } inline const ::std::string& FieldDescriptorProto::type_name() const { return *type_name_; } inline void FieldDescriptorProto::set_type_name(const ::std::string& value) { - _set_bit(4); - if (type_name_ == &_default_type_name_) { + set_has_type_name(); + if (type_name_ == &::google::protobuf::internal::kEmptyString) { type_name_ = new ::std::string; } type_name_->assign(value); } inline void FieldDescriptorProto::set_type_name(const char* value) { - _set_bit(4); - if (type_name_ == &_default_type_name_) { + set_has_type_name(); + if (type_name_ == &::google::protobuf::internal::kEmptyString) { type_name_ = new ::std::string; } type_name_->assign(value); } inline void FieldDescriptorProto::set_type_name(const char* value, size_t size) { - _set_bit(4); - if (type_name_ == &_default_type_name_) { + set_has_type_name(); + if (type_name_ == &::google::protobuf::internal::kEmptyString) { type_name_ = new ::std::string; } type_name_->assign(reinterpret_cast(value), size); } inline ::std::string* FieldDescriptorProto::mutable_type_name() { - _set_bit(4); - if (type_name_ == &_default_type_name_) { + set_has_type_name(); + if (type_name_ == &::google::protobuf::internal::kEmptyString) { type_name_ = new ::std::string; } return type_name_; } +inline ::std::string* FieldDescriptorProto::release_type_name() { + clear_has_type_name(); + if (type_name_ == &::google::protobuf::internal::kEmptyString) { + return NULL; + } else { + ::std::string* temp = type_name_; + type_name_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + return temp; + } +} +inline void FieldDescriptorProto::set_allocated_type_name(::std::string* type_name) { + if (type_name_ != &::google::protobuf::internal::kEmptyString) { + delete type_name_; + } + if (type_name) { + set_has_type_name(); + type_name_ = type_name; + } else { + clear_has_type_name(); + type_name_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + } +} // optional string extendee = 2; inline bool FieldDescriptorProto::has_extendee() const { - return _has_bit(5); + return (_has_bits_[0] & 0x00000020u) != 0; +} +inline void FieldDescriptorProto::set_has_extendee() { + _has_bits_[0] |= 0x00000020u; +} +inline void FieldDescriptorProto::clear_has_extendee() { + _has_bits_[0] &= ~0x00000020u; } inline void FieldDescriptorProto::clear_extendee() { - if (extendee_ != &_default_extendee_) { + if (extendee_ != &::google::protobuf::internal::kEmptyString) { extendee_->clear(); } - _clear_bit(5); + clear_has_extendee(); } inline const ::std::string& FieldDescriptorProto::extendee() const { return *extendee_; } inline void FieldDescriptorProto::set_extendee(const ::std::string& value) { - _set_bit(5); - if (extendee_ == &_default_extendee_) { + set_has_extendee(); + if (extendee_ == &::google::protobuf::internal::kEmptyString) { extendee_ = new ::std::string; } extendee_->assign(value); } inline void FieldDescriptorProto::set_extendee(const char* value) { - _set_bit(5); - if (extendee_ == &_default_extendee_) { + set_has_extendee(); + if (extendee_ == &::google::protobuf::internal::kEmptyString) { extendee_ = new ::std::string; } extendee_->assign(value); } inline void FieldDescriptorProto::set_extendee(const char* value, size_t size) { - _set_bit(5); - if (extendee_ == &_default_extendee_) { + set_has_extendee(); + if (extendee_ == &::google::protobuf::internal::kEmptyString) { extendee_ = new ::std::string; } extendee_->assign(reinterpret_cast(value), size); } inline ::std::string* FieldDescriptorProto::mutable_extendee() { - _set_bit(5); - if (extendee_ == &_default_extendee_) { + set_has_extendee(); + if (extendee_ == &::google::protobuf::internal::kEmptyString) { extendee_ = new ::std::string; } return extendee_; } +inline ::std::string* FieldDescriptorProto::release_extendee() { + clear_has_extendee(); + if (extendee_ == &::google::protobuf::internal::kEmptyString) { + return NULL; + } else { + ::std::string* temp = extendee_; + extendee_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + return temp; + } +} +inline void FieldDescriptorProto::set_allocated_extendee(::std::string* extendee) { + if (extendee_ != &::google::protobuf::internal::kEmptyString) { + delete extendee_; + } + if (extendee) { + set_has_extendee(); + extendee_ = extendee; + } else { + clear_has_extendee(); + extendee_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + } +} // optional string default_value = 7; inline bool FieldDescriptorProto::has_default_value() const { - return _has_bit(6); + return (_has_bits_[0] & 0x00000040u) != 0; +} +inline void FieldDescriptorProto::set_has_default_value() { + _has_bits_[0] |= 0x00000040u; +} +inline void FieldDescriptorProto::clear_has_default_value() { + _has_bits_[0] &= ~0x00000040u; } inline void FieldDescriptorProto::clear_default_value() { - if (default_value_ != &_default_default_value_) { + if (default_value_ != &::google::protobuf::internal::kEmptyString) { default_value_->clear(); } - _clear_bit(6); + clear_has_default_value(); } inline const ::std::string& FieldDescriptorProto::default_value() const { return *default_value_; } inline void FieldDescriptorProto::set_default_value(const ::std::string& value) { - _set_bit(6); - if (default_value_ == &_default_default_value_) { + set_has_default_value(); + if (default_value_ == &::google::protobuf::internal::kEmptyString) { default_value_ = new ::std::string; } default_value_->assign(value); } inline void FieldDescriptorProto::set_default_value(const char* value) { - _set_bit(6); - if (default_value_ == &_default_default_value_) { + set_has_default_value(); + if (default_value_ == &::google::protobuf::internal::kEmptyString) { default_value_ = new ::std::string; } default_value_->assign(value); } inline void FieldDescriptorProto::set_default_value(const char* value, size_t size) { - _set_bit(6); - if (default_value_ == &_default_default_value_) { + set_has_default_value(); + if (default_value_ == &::google::protobuf::internal::kEmptyString) { default_value_ = new ::std::string; } default_value_->assign(reinterpret_cast(value), size); } inline ::std::string* FieldDescriptorProto::mutable_default_value() { - _set_bit(6); - if (default_value_ == &_default_default_value_) { + set_has_default_value(); + if (default_value_ == &::google::protobuf::internal::kEmptyString) { default_value_ = new ::std::string; } return default_value_; } +inline ::std::string* FieldDescriptorProto::release_default_value() { + clear_has_default_value(); + if (default_value_ == &::google::protobuf::internal::kEmptyString) { + return NULL; + } else { + ::std::string* temp = default_value_; + default_value_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + return temp; + } +} +inline void FieldDescriptorProto::set_allocated_default_value(::std::string* default_value) { + if (default_value_ != &::google::protobuf::internal::kEmptyString) { + delete default_value_; + } + if (default_value) { + set_has_default_value(); + default_value_ = default_value; + } else { + clear_has_default_value(); + default_value_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + } +} // optional .google.protobuf.FieldOptions options = 8; inline bool FieldDescriptorProto::has_options() const { - return _has_bit(7); + return (_has_bits_[0] & 0x00000080u) != 0; +} +inline void FieldDescriptorProto::set_has_options() { + _has_bits_[0] |= 0x00000080u; +} +inline void FieldDescriptorProto::clear_has_options() { + _has_bits_[0] &= ~0x00000080u; } inline void FieldDescriptorProto::clear_options() { if (options_ != NULL) options_->::google::protobuf::FieldOptions::Clear(); - _clear_bit(7); + clear_has_options(); } inline const ::google::protobuf::FieldOptions& FieldDescriptorProto::options() const { return options_ != NULL ? *options_ : *default_instance_->options_; } inline ::google::protobuf::FieldOptions* FieldDescriptorProto::mutable_options() { - _set_bit(7); + set_has_options(); if (options_ == NULL) options_ = new ::google::protobuf::FieldOptions; return options_; } +inline ::google::protobuf::FieldOptions* FieldDescriptorProto::release_options() { + clear_has_options(); + ::google::protobuf::FieldOptions* temp = options_; + options_ = NULL; + return temp; +} +inline void FieldDescriptorProto::set_allocated_options(::google::protobuf::FieldOptions* options) { + delete options_; + options_ = options; + if (options) { + set_has_options(); + } else { + clear_has_options(); + } +} // ------------------------------------------------------------------- @@ -3209,45 +3885,73 @@ inline ::google::protobuf::FieldOptions* FieldDescriptorProto::mutable_options() // optional string name = 1; inline bool EnumDescriptorProto::has_name() const { - return _has_bit(0); + return (_has_bits_[0] & 0x00000001u) != 0; +} +inline void EnumDescriptorProto::set_has_name() { + _has_bits_[0] |= 0x00000001u; +} +inline void EnumDescriptorProto::clear_has_name() { + _has_bits_[0] &= ~0x00000001u; } inline void EnumDescriptorProto::clear_name() { - if (name_ != &_default_name_) { + if (name_ != &::google::protobuf::internal::kEmptyString) { name_->clear(); } - _clear_bit(0); + clear_has_name(); } inline const ::std::string& EnumDescriptorProto::name() const { return *name_; } inline void EnumDescriptorProto::set_name(const ::std::string& value) { - _set_bit(0); - if (name_ == &_default_name_) { + set_has_name(); + if (name_ == &::google::protobuf::internal::kEmptyString) { name_ = new ::std::string; } name_->assign(value); } inline void EnumDescriptorProto::set_name(const char* value) { - _set_bit(0); - if (name_ == &_default_name_) { + set_has_name(); + if (name_ == &::google::protobuf::internal::kEmptyString) { name_ = new ::std::string; } name_->assign(value); } inline void EnumDescriptorProto::set_name(const char* value, size_t size) { - _set_bit(0); - if (name_ == &_default_name_) { + set_has_name(); + if (name_ == &::google::protobuf::internal::kEmptyString) { name_ = new ::std::string; } name_->assign(reinterpret_cast(value), size); } inline ::std::string* EnumDescriptorProto::mutable_name() { - _set_bit(0); - if (name_ == &_default_name_) { + set_has_name(); + if (name_ == &::google::protobuf::internal::kEmptyString) { name_ = new ::std::string; } return name_; } +inline ::std::string* EnumDescriptorProto::release_name() { + clear_has_name(); + if (name_ == &::google::protobuf::internal::kEmptyString) { + return NULL; + } else { + ::std::string* temp = name_; + name_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + return temp; + } +} +inline void EnumDescriptorProto::set_allocated_name(::std::string* name) { + if (name_ != &::google::protobuf::internal::kEmptyString) { + delete name_; + } + if (name) { + set_has_name(); + name_ = name; + } else { + clear_has_name(); + name_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + } +} // repeated .google.protobuf.EnumValueDescriptorProto value = 2; inline int EnumDescriptorProto::value_size() const { @@ -3276,20 +3980,41 @@ EnumDescriptorProto::mutable_value() { // optional .google.protobuf.EnumOptions options = 3; inline bool EnumDescriptorProto::has_options() const { - return _has_bit(2); + return (_has_bits_[0] & 0x00000004u) != 0; +} +inline void EnumDescriptorProto::set_has_options() { + _has_bits_[0] |= 0x00000004u; +} +inline void EnumDescriptorProto::clear_has_options() { + _has_bits_[0] &= ~0x00000004u; } inline void EnumDescriptorProto::clear_options() { if (options_ != NULL) options_->::google::protobuf::EnumOptions::Clear(); - _clear_bit(2); + clear_has_options(); } inline const ::google::protobuf::EnumOptions& EnumDescriptorProto::options() const { return options_ != NULL ? *options_ : *default_instance_->options_; } inline ::google::protobuf::EnumOptions* EnumDescriptorProto::mutable_options() { - _set_bit(2); + set_has_options(); if (options_ == NULL) options_ = new ::google::protobuf::EnumOptions; return options_; } +inline ::google::protobuf::EnumOptions* EnumDescriptorProto::release_options() { + clear_has_options(); + ::google::protobuf::EnumOptions* temp = options_; + options_ = NULL; + return temp; +} +inline void EnumDescriptorProto::set_allocated_options(::google::protobuf::EnumOptions* options) { + delete options_; + options_ = options; + if (options) { + set_has_options(); + } else { + clear_has_options(); + } +} // ------------------------------------------------------------------- @@ -3297,78 +4022,133 @@ inline ::google::protobuf::EnumOptions* EnumDescriptorProto::mutable_options() { // optional string name = 1; inline bool EnumValueDescriptorProto::has_name() const { - return _has_bit(0); + return (_has_bits_[0] & 0x00000001u) != 0; +} +inline void EnumValueDescriptorProto::set_has_name() { + _has_bits_[0] |= 0x00000001u; +} +inline void EnumValueDescriptorProto::clear_has_name() { + _has_bits_[0] &= ~0x00000001u; } inline void EnumValueDescriptorProto::clear_name() { - if (name_ != &_default_name_) { + if (name_ != &::google::protobuf::internal::kEmptyString) { name_->clear(); } - _clear_bit(0); + clear_has_name(); } inline const ::std::string& EnumValueDescriptorProto::name() const { return *name_; } inline void EnumValueDescriptorProto::set_name(const ::std::string& value) { - _set_bit(0); - if (name_ == &_default_name_) { + set_has_name(); + if (name_ == &::google::protobuf::internal::kEmptyString) { name_ = new ::std::string; } name_->assign(value); } inline void EnumValueDescriptorProto::set_name(const char* value) { - _set_bit(0); - if (name_ == &_default_name_) { + set_has_name(); + if (name_ == &::google::protobuf::internal::kEmptyString) { name_ = new ::std::string; } name_->assign(value); } inline void EnumValueDescriptorProto::set_name(const char* value, size_t size) { - _set_bit(0); - if (name_ == &_default_name_) { + set_has_name(); + if (name_ == &::google::protobuf::internal::kEmptyString) { name_ = new ::std::string; } name_->assign(reinterpret_cast(value), size); } inline ::std::string* EnumValueDescriptorProto::mutable_name() { - _set_bit(0); - if (name_ == &_default_name_) { + set_has_name(); + if (name_ == &::google::protobuf::internal::kEmptyString) { name_ = new ::std::string; } - return name_; + return name_; +} +inline ::std::string* EnumValueDescriptorProto::release_name() { + clear_has_name(); + if (name_ == &::google::protobuf::internal::kEmptyString) { + return NULL; + } else { + ::std::string* temp = name_; + name_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + return temp; + } +} +inline void EnumValueDescriptorProto::set_allocated_name(::std::string* name) { + if (name_ != &::google::protobuf::internal::kEmptyString) { + delete name_; + } + if (name) { + set_has_name(); + name_ = name; + } else { + clear_has_name(); + name_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + } } // optional int32 number = 2; inline bool EnumValueDescriptorProto::has_number() const { - return _has_bit(1); + return (_has_bits_[0] & 0x00000002u) != 0; +} +inline void EnumValueDescriptorProto::set_has_number() { + _has_bits_[0] |= 0x00000002u; +} +inline void EnumValueDescriptorProto::clear_has_number() { + _has_bits_[0] &= ~0x00000002u; } inline void EnumValueDescriptorProto::clear_number() { number_ = 0; - _clear_bit(1); + clear_has_number(); } inline ::google::protobuf::int32 EnumValueDescriptorProto::number() const { return number_; } inline void EnumValueDescriptorProto::set_number(::google::protobuf::int32 value) { - _set_bit(1); + set_has_number(); number_ = value; } // optional .google.protobuf.EnumValueOptions options = 3; inline bool EnumValueDescriptorProto::has_options() const { - return _has_bit(2); + return (_has_bits_[0] & 0x00000004u) != 0; +} +inline void EnumValueDescriptorProto::set_has_options() { + _has_bits_[0] |= 0x00000004u; +} +inline void EnumValueDescriptorProto::clear_has_options() { + _has_bits_[0] &= ~0x00000004u; } inline void EnumValueDescriptorProto::clear_options() { if (options_ != NULL) options_->::google::protobuf::EnumValueOptions::Clear(); - _clear_bit(2); + clear_has_options(); } inline const ::google::protobuf::EnumValueOptions& EnumValueDescriptorProto::options() const { return options_ != NULL ? *options_ : *default_instance_->options_; } inline ::google::protobuf::EnumValueOptions* EnumValueDescriptorProto::mutable_options() { - _set_bit(2); + set_has_options(); if (options_ == NULL) options_ = new ::google::protobuf::EnumValueOptions; return options_; } +inline ::google::protobuf::EnumValueOptions* EnumValueDescriptorProto::release_options() { + clear_has_options(); + ::google::protobuf::EnumValueOptions* temp = options_; + options_ = NULL; + return temp; +} +inline void EnumValueDescriptorProto::set_allocated_options(::google::protobuf::EnumValueOptions* options) { + delete options_; + options_ = options; + if (options) { + set_has_options(); + } else { + clear_has_options(); + } +} // ------------------------------------------------------------------- @@ -3376,45 +4156,73 @@ inline ::google::protobuf::EnumValueOptions* EnumValueDescriptorProto::mutable_o // optional string name = 1; inline bool ServiceDescriptorProto::has_name() const { - return _has_bit(0); + return (_has_bits_[0] & 0x00000001u) != 0; +} +inline void ServiceDescriptorProto::set_has_name() { + _has_bits_[0] |= 0x00000001u; +} +inline void ServiceDescriptorProto::clear_has_name() { + _has_bits_[0] &= ~0x00000001u; } inline void ServiceDescriptorProto::clear_name() { - if (name_ != &_default_name_) { + if (name_ != &::google::protobuf::internal::kEmptyString) { name_->clear(); } - _clear_bit(0); + clear_has_name(); } inline const ::std::string& ServiceDescriptorProto::name() const { return *name_; } inline void ServiceDescriptorProto::set_name(const ::std::string& value) { - _set_bit(0); - if (name_ == &_default_name_) { + set_has_name(); + if (name_ == &::google::protobuf::internal::kEmptyString) { name_ = new ::std::string; } name_->assign(value); } inline void ServiceDescriptorProto::set_name(const char* value) { - _set_bit(0); - if (name_ == &_default_name_) { + set_has_name(); + if (name_ == &::google::protobuf::internal::kEmptyString) { name_ = new ::std::string; } name_->assign(value); } inline void ServiceDescriptorProto::set_name(const char* value, size_t size) { - _set_bit(0); - if (name_ == &_default_name_) { + set_has_name(); + if (name_ == &::google::protobuf::internal::kEmptyString) { name_ = new ::std::string; } name_->assign(reinterpret_cast(value), size); } inline ::std::string* ServiceDescriptorProto::mutable_name() { - _set_bit(0); - if (name_ == &_default_name_) { + set_has_name(); + if (name_ == &::google::protobuf::internal::kEmptyString) { name_ = new ::std::string; } return name_; } +inline ::std::string* ServiceDescriptorProto::release_name() { + clear_has_name(); + if (name_ == &::google::protobuf::internal::kEmptyString) { + return NULL; + } else { + ::std::string* temp = name_; + name_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + return temp; + } +} +inline void ServiceDescriptorProto::set_allocated_name(::std::string* name) { + if (name_ != &::google::protobuf::internal::kEmptyString) { + delete name_; + } + if (name) { + set_has_name(); + name_ = name; + } else { + clear_has_name(); + name_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + } +} // repeated .google.protobuf.MethodDescriptorProto method = 2; inline int ServiceDescriptorProto::method_size() const { @@ -3443,20 +4251,41 @@ ServiceDescriptorProto::mutable_method() { // optional .google.protobuf.ServiceOptions options = 3; inline bool ServiceDescriptorProto::has_options() const { - return _has_bit(2); + return (_has_bits_[0] & 0x00000004u) != 0; +} +inline void ServiceDescriptorProto::set_has_options() { + _has_bits_[0] |= 0x00000004u; +} +inline void ServiceDescriptorProto::clear_has_options() { + _has_bits_[0] &= ~0x00000004u; } inline void ServiceDescriptorProto::clear_options() { if (options_ != NULL) options_->::google::protobuf::ServiceOptions::Clear(); - _clear_bit(2); + clear_has_options(); } inline const ::google::protobuf::ServiceOptions& ServiceDescriptorProto::options() const { return options_ != NULL ? *options_ : *default_instance_->options_; } inline ::google::protobuf::ServiceOptions* ServiceDescriptorProto::mutable_options() { - _set_bit(2); + set_has_options(); if (options_ == NULL) options_ = new ::google::protobuf::ServiceOptions; return options_; } +inline ::google::protobuf::ServiceOptions* ServiceDescriptorProto::release_options() { + clear_has_options(); + ::google::protobuf::ServiceOptions* temp = options_; + options_ = NULL; + return temp; +} +inline void ServiceDescriptorProto::set_allocated_options(::google::protobuf::ServiceOptions* options) { + delete options_; + options_ = options; + if (options) { + set_has_options(); + } else { + clear_has_options(); + } +} // ------------------------------------------------------------------- @@ -3464,146 +4293,251 @@ inline ::google::protobuf::ServiceOptions* ServiceDescriptorProto::mutable_optio // optional string name = 1; inline bool MethodDescriptorProto::has_name() const { - return _has_bit(0); + return (_has_bits_[0] & 0x00000001u) != 0; +} +inline void MethodDescriptorProto::set_has_name() { + _has_bits_[0] |= 0x00000001u; +} +inline void MethodDescriptorProto::clear_has_name() { + _has_bits_[0] &= ~0x00000001u; } inline void MethodDescriptorProto::clear_name() { - if (name_ != &_default_name_) { + if (name_ != &::google::protobuf::internal::kEmptyString) { name_->clear(); } - _clear_bit(0); + clear_has_name(); } inline const ::std::string& MethodDescriptorProto::name() const { return *name_; } inline void MethodDescriptorProto::set_name(const ::std::string& value) { - _set_bit(0); - if (name_ == &_default_name_) { + set_has_name(); + if (name_ == &::google::protobuf::internal::kEmptyString) { name_ = new ::std::string; } name_->assign(value); } inline void MethodDescriptorProto::set_name(const char* value) { - _set_bit(0); - if (name_ == &_default_name_) { + set_has_name(); + if (name_ == &::google::protobuf::internal::kEmptyString) { name_ = new ::std::string; } name_->assign(value); } inline void MethodDescriptorProto::set_name(const char* value, size_t size) { - _set_bit(0); - if (name_ == &_default_name_) { + set_has_name(); + if (name_ == &::google::protobuf::internal::kEmptyString) { name_ = new ::std::string; } name_->assign(reinterpret_cast(value), size); } inline ::std::string* MethodDescriptorProto::mutable_name() { - _set_bit(0); - if (name_ == &_default_name_) { + set_has_name(); + if (name_ == &::google::protobuf::internal::kEmptyString) { name_ = new ::std::string; } return name_; } +inline ::std::string* MethodDescriptorProto::release_name() { + clear_has_name(); + if (name_ == &::google::protobuf::internal::kEmptyString) { + return NULL; + } else { + ::std::string* temp = name_; + name_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + return temp; + } +} +inline void MethodDescriptorProto::set_allocated_name(::std::string* name) { + if (name_ != &::google::protobuf::internal::kEmptyString) { + delete name_; + } + if (name) { + set_has_name(); + name_ = name; + } else { + clear_has_name(); + name_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + } +} // optional string input_type = 2; inline bool MethodDescriptorProto::has_input_type() const { - return _has_bit(1); + return (_has_bits_[0] & 0x00000002u) != 0; +} +inline void MethodDescriptorProto::set_has_input_type() { + _has_bits_[0] |= 0x00000002u; +} +inline void MethodDescriptorProto::clear_has_input_type() { + _has_bits_[0] &= ~0x00000002u; } inline void MethodDescriptorProto::clear_input_type() { - if (input_type_ != &_default_input_type_) { + if (input_type_ != &::google::protobuf::internal::kEmptyString) { input_type_->clear(); } - _clear_bit(1); + clear_has_input_type(); } inline const ::std::string& MethodDescriptorProto::input_type() const { return *input_type_; } inline void MethodDescriptorProto::set_input_type(const ::std::string& value) { - _set_bit(1); - if (input_type_ == &_default_input_type_) { + set_has_input_type(); + if (input_type_ == &::google::protobuf::internal::kEmptyString) { input_type_ = new ::std::string; } input_type_->assign(value); } inline void MethodDescriptorProto::set_input_type(const char* value) { - _set_bit(1); - if (input_type_ == &_default_input_type_) { + set_has_input_type(); + if (input_type_ == &::google::protobuf::internal::kEmptyString) { input_type_ = new ::std::string; } input_type_->assign(value); } inline void MethodDescriptorProto::set_input_type(const char* value, size_t size) { - _set_bit(1); - if (input_type_ == &_default_input_type_) { + set_has_input_type(); + if (input_type_ == &::google::protobuf::internal::kEmptyString) { input_type_ = new ::std::string; } input_type_->assign(reinterpret_cast(value), size); } inline ::std::string* MethodDescriptorProto::mutable_input_type() { - _set_bit(1); - if (input_type_ == &_default_input_type_) { + set_has_input_type(); + if (input_type_ == &::google::protobuf::internal::kEmptyString) { input_type_ = new ::std::string; } return input_type_; } +inline ::std::string* MethodDescriptorProto::release_input_type() { + clear_has_input_type(); + if (input_type_ == &::google::protobuf::internal::kEmptyString) { + return NULL; + } else { + ::std::string* temp = input_type_; + input_type_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + return temp; + } +} +inline void MethodDescriptorProto::set_allocated_input_type(::std::string* input_type) { + if (input_type_ != &::google::protobuf::internal::kEmptyString) { + delete input_type_; + } + if (input_type) { + set_has_input_type(); + input_type_ = input_type; + } else { + clear_has_input_type(); + input_type_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + } +} // optional string output_type = 3; inline bool MethodDescriptorProto::has_output_type() const { - return _has_bit(2); + return (_has_bits_[0] & 0x00000004u) != 0; +} +inline void MethodDescriptorProto::set_has_output_type() { + _has_bits_[0] |= 0x00000004u; +} +inline void MethodDescriptorProto::clear_has_output_type() { + _has_bits_[0] &= ~0x00000004u; } inline void MethodDescriptorProto::clear_output_type() { - if (output_type_ != &_default_output_type_) { + if (output_type_ != &::google::protobuf::internal::kEmptyString) { output_type_->clear(); } - _clear_bit(2); + clear_has_output_type(); } inline const ::std::string& MethodDescriptorProto::output_type() const { return *output_type_; } inline void MethodDescriptorProto::set_output_type(const ::std::string& value) { - _set_bit(2); - if (output_type_ == &_default_output_type_) { + set_has_output_type(); + if (output_type_ == &::google::protobuf::internal::kEmptyString) { output_type_ = new ::std::string; } output_type_->assign(value); } inline void MethodDescriptorProto::set_output_type(const char* value) { - _set_bit(2); - if (output_type_ == &_default_output_type_) { + set_has_output_type(); + if (output_type_ == &::google::protobuf::internal::kEmptyString) { output_type_ = new ::std::string; } output_type_->assign(value); } inline void MethodDescriptorProto::set_output_type(const char* value, size_t size) { - _set_bit(2); - if (output_type_ == &_default_output_type_) { + set_has_output_type(); + if (output_type_ == &::google::protobuf::internal::kEmptyString) { output_type_ = new ::std::string; } output_type_->assign(reinterpret_cast(value), size); } inline ::std::string* MethodDescriptorProto::mutable_output_type() { - _set_bit(2); - if (output_type_ == &_default_output_type_) { + set_has_output_type(); + if (output_type_ == &::google::protobuf::internal::kEmptyString) { output_type_ = new ::std::string; } return output_type_; } +inline ::std::string* MethodDescriptorProto::release_output_type() { + clear_has_output_type(); + if (output_type_ == &::google::protobuf::internal::kEmptyString) { + return NULL; + } else { + ::std::string* temp = output_type_; + output_type_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + return temp; + } +} +inline void MethodDescriptorProto::set_allocated_output_type(::std::string* output_type) { + if (output_type_ != &::google::protobuf::internal::kEmptyString) { + delete output_type_; + } + if (output_type) { + set_has_output_type(); + output_type_ = output_type; + } else { + clear_has_output_type(); + output_type_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + } +} // optional .google.protobuf.MethodOptions options = 4; inline bool MethodDescriptorProto::has_options() const { - return _has_bit(3); + return (_has_bits_[0] & 0x00000008u) != 0; +} +inline void MethodDescriptorProto::set_has_options() { + _has_bits_[0] |= 0x00000008u; +} +inline void MethodDescriptorProto::clear_has_options() { + _has_bits_[0] &= ~0x00000008u; } inline void MethodDescriptorProto::clear_options() { if (options_ != NULL) options_->::google::protobuf::MethodOptions::Clear(); - _clear_bit(3); + clear_has_options(); } inline const ::google::protobuf::MethodOptions& MethodDescriptorProto::options() const { return options_ != NULL ? *options_ : *default_instance_->options_; } inline ::google::protobuf::MethodOptions* MethodDescriptorProto::mutable_options() { - _set_bit(3); + set_has_options(); if (options_ == NULL) options_ = new ::google::protobuf::MethodOptions; return options_; } +inline ::google::protobuf::MethodOptions* MethodDescriptorProto::release_options() { + clear_has_options(); + ::google::protobuf::MethodOptions* temp = options_; + options_ = NULL; + return temp; +} +inline void MethodDescriptorProto::set_allocated_options(::google::protobuf::MethodOptions* options) { + delete options_; + options_ = options; + if (options) { + set_has_options(); + } else { + clear_has_options(); + } +} // ------------------------------------------------------------------- @@ -3611,166 +4545,344 @@ inline ::google::protobuf::MethodOptions* MethodDescriptorProto::mutable_options // optional string java_package = 1; inline bool FileOptions::has_java_package() const { - return _has_bit(0); + return (_has_bits_[0] & 0x00000001u) != 0; +} +inline void FileOptions::set_has_java_package() { + _has_bits_[0] |= 0x00000001u; +} +inline void FileOptions::clear_has_java_package() { + _has_bits_[0] &= ~0x00000001u; } inline void FileOptions::clear_java_package() { - if (java_package_ != &_default_java_package_) { + if (java_package_ != &::google::protobuf::internal::kEmptyString) { java_package_->clear(); } - _clear_bit(0); + clear_has_java_package(); } inline const ::std::string& FileOptions::java_package() const { return *java_package_; } inline void FileOptions::set_java_package(const ::std::string& value) { - _set_bit(0); - if (java_package_ == &_default_java_package_) { + set_has_java_package(); + if (java_package_ == &::google::protobuf::internal::kEmptyString) { java_package_ = new ::std::string; } java_package_->assign(value); } inline void FileOptions::set_java_package(const char* value) { - _set_bit(0); - if (java_package_ == &_default_java_package_) { + set_has_java_package(); + if (java_package_ == &::google::protobuf::internal::kEmptyString) { java_package_ = new ::std::string; } java_package_->assign(value); } inline void FileOptions::set_java_package(const char* value, size_t size) { - _set_bit(0); - if (java_package_ == &_default_java_package_) { + set_has_java_package(); + if (java_package_ == &::google::protobuf::internal::kEmptyString) { java_package_ = new ::std::string; } java_package_->assign(reinterpret_cast(value), size); } inline ::std::string* FileOptions::mutable_java_package() { - _set_bit(0); - if (java_package_ == &_default_java_package_) { + set_has_java_package(); + if (java_package_ == &::google::protobuf::internal::kEmptyString) { java_package_ = new ::std::string; } return java_package_; } +inline ::std::string* FileOptions::release_java_package() { + clear_has_java_package(); + if (java_package_ == &::google::protobuf::internal::kEmptyString) { + return NULL; + } else { + ::std::string* temp = java_package_; + java_package_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + return temp; + } +} +inline void FileOptions::set_allocated_java_package(::std::string* java_package) { + if (java_package_ != &::google::protobuf::internal::kEmptyString) { + delete java_package_; + } + if (java_package) { + set_has_java_package(); + java_package_ = java_package; + } else { + clear_has_java_package(); + java_package_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + } +} // optional string java_outer_classname = 8; inline bool FileOptions::has_java_outer_classname() const { - return _has_bit(1); + return (_has_bits_[0] & 0x00000002u) != 0; +} +inline void FileOptions::set_has_java_outer_classname() { + _has_bits_[0] |= 0x00000002u; +} +inline void FileOptions::clear_has_java_outer_classname() { + _has_bits_[0] &= ~0x00000002u; } inline void FileOptions::clear_java_outer_classname() { - if (java_outer_classname_ != &_default_java_outer_classname_) { + if (java_outer_classname_ != &::google::protobuf::internal::kEmptyString) { java_outer_classname_->clear(); } - _clear_bit(1); + clear_has_java_outer_classname(); } inline const ::std::string& FileOptions::java_outer_classname() const { return *java_outer_classname_; } inline void FileOptions::set_java_outer_classname(const ::std::string& value) { - _set_bit(1); - if (java_outer_classname_ == &_default_java_outer_classname_) { + set_has_java_outer_classname(); + if (java_outer_classname_ == &::google::protobuf::internal::kEmptyString) { java_outer_classname_ = new ::std::string; } java_outer_classname_->assign(value); } inline void FileOptions::set_java_outer_classname(const char* value) { - _set_bit(1); - if (java_outer_classname_ == &_default_java_outer_classname_) { + set_has_java_outer_classname(); + if (java_outer_classname_ == &::google::protobuf::internal::kEmptyString) { java_outer_classname_ = new ::std::string; } java_outer_classname_->assign(value); } inline void FileOptions::set_java_outer_classname(const char* value, size_t size) { - _set_bit(1); - if (java_outer_classname_ == &_default_java_outer_classname_) { + set_has_java_outer_classname(); + if (java_outer_classname_ == &::google::protobuf::internal::kEmptyString) { java_outer_classname_ = new ::std::string; } java_outer_classname_->assign(reinterpret_cast(value), size); } inline ::std::string* FileOptions::mutable_java_outer_classname() { - _set_bit(1); - if (java_outer_classname_ == &_default_java_outer_classname_) { + set_has_java_outer_classname(); + if (java_outer_classname_ == &::google::protobuf::internal::kEmptyString) { java_outer_classname_ = new ::std::string; } return java_outer_classname_; } +inline ::std::string* FileOptions::release_java_outer_classname() { + clear_has_java_outer_classname(); + if (java_outer_classname_ == &::google::protobuf::internal::kEmptyString) { + return NULL; + } else { + ::std::string* temp = java_outer_classname_; + java_outer_classname_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + return temp; + } +} +inline void FileOptions::set_allocated_java_outer_classname(::std::string* java_outer_classname) { + if (java_outer_classname_ != &::google::protobuf::internal::kEmptyString) { + delete java_outer_classname_; + } + if (java_outer_classname) { + set_has_java_outer_classname(); + java_outer_classname_ = java_outer_classname; + } else { + clear_has_java_outer_classname(); + java_outer_classname_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + } +} // optional bool java_multiple_files = 10 [default = false]; inline bool FileOptions::has_java_multiple_files() const { - return _has_bit(2); + return (_has_bits_[0] & 0x00000004u) != 0; +} +inline void FileOptions::set_has_java_multiple_files() { + _has_bits_[0] |= 0x00000004u; +} +inline void FileOptions::clear_has_java_multiple_files() { + _has_bits_[0] &= ~0x00000004u; } inline void FileOptions::clear_java_multiple_files() { java_multiple_files_ = false; - _clear_bit(2); + clear_has_java_multiple_files(); } inline bool FileOptions::java_multiple_files() const { return java_multiple_files_; } inline void FileOptions::set_java_multiple_files(bool value) { - _set_bit(2); + set_has_java_multiple_files(); java_multiple_files_ = value; } +// optional bool java_generate_equals_and_hash = 20 [default = false]; +inline bool FileOptions::has_java_generate_equals_and_hash() const { + return (_has_bits_[0] & 0x00000008u) != 0; +} +inline void FileOptions::set_has_java_generate_equals_and_hash() { + _has_bits_[0] |= 0x00000008u; +} +inline void FileOptions::clear_has_java_generate_equals_and_hash() { + _has_bits_[0] &= ~0x00000008u; +} +inline void FileOptions::clear_java_generate_equals_and_hash() { + java_generate_equals_and_hash_ = false; + clear_has_java_generate_equals_and_hash(); +} +inline bool FileOptions::java_generate_equals_and_hash() const { + return java_generate_equals_and_hash_; +} +inline void FileOptions::set_java_generate_equals_and_hash(bool value) { + set_has_java_generate_equals_and_hash(); + java_generate_equals_and_hash_ = value; +} + // optional .google.protobuf.FileOptions.OptimizeMode optimize_for = 9 [default = SPEED]; inline bool FileOptions::has_optimize_for() const { - return _has_bit(3); + return (_has_bits_[0] & 0x00000010u) != 0; +} +inline void FileOptions::set_has_optimize_for() { + _has_bits_[0] |= 0x00000010u; +} +inline void FileOptions::clear_has_optimize_for() { + _has_bits_[0] &= ~0x00000010u; } inline void FileOptions::clear_optimize_for() { optimize_for_ = 1; - _clear_bit(3); + clear_has_optimize_for(); } inline ::google::protobuf::FileOptions_OptimizeMode FileOptions::optimize_for() const { return static_cast< ::google::protobuf::FileOptions_OptimizeMode >(optimize_for_); } inline void FileOptions::set_optimize_for(::google::protobuf::FileOptions_OptimizeMode value) { - GOOGLE_DCHECK(::google::protobuf::FileOptions_OptimizeMode_IsValid(value)); - _set_bit(3); + assert(::google::protobuf::FileOptions_OptimizeMode_IsValid(value)); + set_has_optimize_for(); optimize_for_ = value; } -// optional bool cc_generic_services = 16 [default = true]; +// optional string go_package = 11; +inline bool FileOptions::has_go_package() const { + return (_has_bits_[0] & 0x00000020u) != 0; +} +inline void FileOptions::set_has_go_package() { + _has_bits_[0] |= 0x00000020u; +} +inline void FileOptions::clear_has_go_package() { + _has_bits_[0] &= ~0x00000020u; +} +inline void FileOptions::clear_go_package() { + if (go_package_ != &::google::protobuf::internal::kEmptyString) { + go_package_->clear(); + } + clear_has_go_package(); +} +inline const ::std::string& FileOptions::go_package() const { + return *go_package_; +} +inline void FileOptions::set_go_package(const ::std::string& value) { + set_has_go_package(); + if (go_package_ == &::google::protobuf::internal::kEmptyString) { + go_package_ = new ::std::string; + } + go_package_->assign(value); +} +inline void FileOptions::set_go_package(const char* value) { + set_has_go_package(); + if (go_package_ == &::google::protobuf::internal::kEmptyString) { + go_package_ = new ::std::string; + } + go_package_->assign(value); +} +inline void FileOptions::set_go_package(const char* value, size_t size) { + set_has_go_package(); + if (go_package_ == &::google::protobuf::internal::kEmptyString) { + go_package_ = new ::std::string; + } + go_package_->assign(reinterpret_cast(value), size); +} +inline ::std::string* FileOptions::mutable_go_package() { + set_has_go_package(); + if (go_package_ == &::google::protobuf::internal::kEmptyString) { + go_package_ = new ::std::string; + } + return go_package_; +} +inline ::std::string* FileOptions::release_go_package() { + clear_has_go_package(); + if (go_package_ == &::google::protobuf::internal::kEmptyString) { + return NULL; + } else { + ::std::string* temp = go_package_; + go_package_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + return temp; + } +} +inline void FileOptions::set_allocated_go_package(::std::string* go_package) { + if (go_package_ != &::google::protobuf::internal::kEmptyString) { + delete go_package_; + } + if (go_package) { + set_has_go_package(); + go_package_ = go_package; + } else { + clear_has_go_package(); + go_package_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + } +} + +// optional bool cc_generic_services = 16 [default = false]; inline bool FileOptions::has_cc_generic_services() const { - return _has_bit(4); + return (_has_bits_[0] & 0x00000040u) != 0; +} +inline void FileOptions::set_has_cc_generic_services() { + _has_bits_[0] |= 0x00000040u; +} +inline void FileOptions::clear_has_cc_generic_services() { + _has_bits_[0] &= ~0x00000040u; } inline void FileOptions::clear_cc_generic_services() { - cc_generic_services_ = true; - _clear_bit(4); + cc_generic_services_ = false; + clear_has_cc_generic_services(); } inline bool FileOptions::cc_generic_services() const { return cc_generic_services_; } inline void FileOptions::set_cc_generic_services(bool value) { - _set_bit(4); + set_has_cc_generic_services(); cc_generic_services_ = value; } -// optional bool java_generic_services = 17 [default = true]; +// optional bool java_generic_services = 17 [default = false]; inline bool FileOptions::has_java_generic_services() const { - return _has_bit(5); + return (_has_bits_[0] & 0x00000080u) != 0; +} +inline void FileOptions::set_has_java_generic_services() { + _has_bits_[0] |= 0x00000080u; +} +inline void FileOptions::clear_has_java_generic_services() { + _has_bits_[0] &= ~0x00000080u; } inline void FileOptions::clear_java_generic_services() { - java_generic_services_ = true; - _clear_bit(5); + java_generic_services_ = false; + clear_has_java_generic_services(); } inline bool FileOptions::java_generic_services() const { return java_generic_services_; } inline void FileOptions::set_java_generic_services(bool value) { - _set_bit(5); + set_has_java_generic_services(); java_generic_services_ = value; } -// optional bool py_generic_services = 18 [default = true]; +// optional bool py_generic_services = 18 [default = false]; inline bool FileOptions::has_py_generic_services() const { - return _has_bit(6); + return (_has_bits_[0] & 0x00000100u) != 0; +} +inline void FileOptions::set_has_py_generic_services() { + _has_bits_[0] |= 0x00000100u; +} +inline void FileOptions::clear_has_py_generic_services() { + _has_bits_[0] &= ~0x00000100u; } inline void FileOptions::clear_py_generic_services() { - py_generic_services_ = true; - _clear_bit(6); + py_generic_services_ = false; + clear_has_py_generic_services(); } inline bool FileOptions::py_generic_services() const { return py_generic_services_; } inline void FileOptions::set_py_generic_services(bool value) { - _set_bit(6); + set_has_py_generic_services(); py_generic_services_ = value; } @@ -3805,33 +4917,45 @@ FileOptions::mutable_uninterpreted_option() { // optional bool message_set_wire_format = 1 [default = false]; inline bool MessageOptions::has_message_set_wire_format() const { - return _has_bit(0); + return (_has_bits_[0] & 0x00000001u) != 0; +} +inline void MessageOptions::set_has_message_set_wire_format() { + _has_bits_[0] |= 0x00000001u; +} +inline void MessageOptions::clear_has_message_set_wire_format() { + _has_bits_[0] &= ~0x00000001u; } inline void MessageOptions::clear_message_set_wire_format() { message_set_wire_format_ = false; - _clear_bit(0); + clear_has_message_set_wire_format(); } inline bool MessageOptions::message_set_wire_format() const { return message_set_wire_format_; } inline void MessageOptions::set_message_set_wire_format(bool value) { - _set_bit(0); + set_has_message_set_wire_format(); message_set_wire_format_ = value; } // optional bool no_standard_descriptor_accessor = 2 [default = false]; inline bool MessageOptions::has_no_standard_descriptor_accessor() const { - return _has_bit(1); + return (_has_bits_[0] & 0x00000002u) != 0; +} +inline void MessageOptions::set_has_no_standard_descriptor_accessor() { + _has_bits_[0] |= 0x00000002u; +} +inline void MessageOptions::clear_has_no_standard_descriptor_accessor() { + _has_bits_[0] &= ~0x00000002u; } inline void MessageOptions::clear_no_standard_descriptor_accessor() { no_standard_descriptor_accessor_ = false; - _clear_bit(1); + clear_has_no_standard_descriptor_accessor(); } inline bool MessageOptions::no_standard_descriptor_accessor() const { return no_standard_descriptor_accessor_; } inline void MessageOptions::set_no_standard_descriptor_accessor(bool value) { - _set_bit(1); + set_has_no_standard_descriptor_accessor(); no_standard_descriptor_accessor_ = value; } @@ -3866,94 +4990,184 @@ MessageOptions::mutable_uninterpreted_option() { // optional .google.protobuf.FieldOptions.CType ctype = 1 [default = STRING]; inline bool FieldOptions::has_ctype() const { - return _has_bit(0); + return (_has_bits_[0] & 0x00000001u) != 0; +} +inline void FieldOptions::set_has_ctype() { + _has_bits_[0] |= 0x00000001u; +} +inline void FieldOptions::clear_has_ctype() { + _has_bits_[0] &= ~0x00000001u; } inline void FieldOptions::clear_ctype() { ctype_ = 0; - _clear_bit(0); + clear_has_ctype(); } inline ::google::protobuf::FieldOptions_CType FieldOptions::ctype() const { return static_cast< ::google::protobuf::FieldOptions_CType >(ctype_); } inline void FieldOptions::set_ctype(::google::protobuf::FieldOptions_CType value) { - GOOGLE_DCHECK(::google::protobuf::FieldOptions_CType_IsValid(value)); - _set_bit(0); + assert(::google::protobuf::FieldOptions_CType_IsValid(value)); + set_has_ctype(); ctype_ = value; } // optional bool packed = 2; inline bool FieldOptions::has_packed() const { - return _has_bit(1); + return (_has_bits_[0] & 0x00000002u) != 0; +} +inline void FieldOptions::set_has_packed() { + _has_bits_[0] |= 0x00000002u; +} +inline void FieldOptions::clear_has_packed() { + _has_bits_[0] &= ~0x00000002u; } inline void FieldOptions::clear_packed() { packed_ = false; - _clear_bit(1); + clear_has_packed(); } inline bool FieldOptions::packed() const { return packed_; } inline void FieldOptions::set_packed(bool value) { - _set_bit(1); + set_has_packed(); packed_ = value; } +// optional bool lazy = 5 [default = false]; +inline bool FieldOptions::has_lazy() const { + return (_has_bits_[0] & 0x00000004u) != 0; +} +inline void FieldOptions::set_has_lazy() { + _has_bits_[0] |= 0x00000004u; +} +inline void FieldOptions::clear_has_lazy() { + _has_bits_[0] &= ~0x00000004u; +} +inline void FieldOptions::clear_lazy() { + lazy_ = false; + clear_has_lazy(); +} +inline bool FieldOptions::lazy() const { + return lazy_; +} +inline void FieldOptions::set_lazy(bool value) { + set_has_lazy(); + lazy_ = value; +} + // optional bool deprecated = 3 [default = false]; inline bool FieldOptions::has_deprecated() const { - return _has_bit(2); + return (_has_bits_[0] & 0x00000008u) != 0; +} +inline void FieldOptions::set_has_deprecated() { + _has_bits_[0] |= 0x00000008u; +} +inline void FieldOptions::clear_has_deprecated() { + _has_bits_[0] &= ~0x00000008u; } inline void FieldOptions::clear_deprecated() { deprecated_ = false; - _clear_bit(2); + clear_has_deprecated(); } inline bool FieldOptions::deprecated() const { return deprecated_; } inline void FieldOptions::set_deprecated(bool value) { - _set_bit(2); + set_has_deprecated(); deprecated_ = value; } // optional string experimental_map_key = 9; inline bool FieldOptions::has_experimental_map_key() const { - return _has_bit(3); + return (_has_bits_[0] & 0x00000010u) != 0; +} +inline void FieldOptions::set_has_experimental_map_key() { + _has_bits_[0] |= 0x00000010u; +} +inline void FieldOptions::clear_has_experimental_map_key() { + _has_bits_[0] &= ~0x00000010u; } inline void FieldOptions::clear_experimental_map_key() { - if (experimental_map_key_ != &_default_experimental_map_key_) { + if (experimental_map_key_ != &::google::protobuf::internal::kEmptyString) { experimental_map_key_->clear(); } - _clear_bit(3); + clear_has_experimental_map_key(); } inline const ::std::string& FieldOptions::experimental_map_key() const { return *experimental_map_key_; } inline void FieldOptions::set_experimental_map_key(const ::std::string& value) { - _set_bit(3); - if (experimental_map_key_ == &_default_experimental_map_key_) { + set_has_experimental_map_key(); + if (experimental_map_key_ == &::google::protobuf::internal::kEmptyString) { experimental_map_key_ = new ::std::string; } experimental_map_key_->assign(value); } inline void FieldOptions::set_experimental_map_key(const char* value) { - _set_bit(3); - if (experimental_map_key_ == &_default_experimental_map_key_) { + set_has_experimental_map_key(); + if (experimental_map_key_ == &::google::protobuf::internal::kEmptyString) { experimental_map_key_ = new ::std::string; } experimental_map_key_->assign(value); } inline void FieldOptions::set_experimental_map_key(const char* value, size_t size) { - _set_bit(3); - if (experimental_map_key_ == &_default_experimental_map_key_) { + set_has_experimental_map_key(); + if (experimental_map_key_ == &::google::protobuf::internal::kEmptyString) { experimental_map_key_ = new ::std::string; } experimental_map_key_->assign(reinterpret_cast(value), size); } inline ::std::string* FieldOptions::mutable_experimental_map_key() { - _set_bit(3); - if (experimental_map_key_ == &_default_experimental_map_key_) { + set_has_experimental_map_key(); + if (experimental_map_key_ == &::google::protobuf::internal::kEmptyString) { experimental_map_key_ = new ::std::string; } return experimental_map_key_; } +inline ::std::string* FieldOptions::release_experimental_map_key() { + clear_has_experimental_map_key(); + if (experimental_map_key_ == &::google::protobuf::internal::kEmptyString) { + return NULL; + } else { + ::std::string* temp = experimental_map_key_; + experimental_map_key_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + return temp; + } +} +inline void FieldOptions::set_allocated_experimental_map_key(::std::string* experimental_map_key) { + if (experimental_map_key_ != &::google::protobuf::internal::kEmptyString) { + delete experimental_map_key_; + } + if (experimental_map_key) { + set_has_experimental_map_key(); + experimental_map_key_ = experimental_map_key; + } else { + clear_has_experimental_map_key(); + experimental_map_key_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + } +} + +// optional bool weak = 10 [default = false]; +inline bool FieldOptions::has_weak() const { + return (_has_bits_[0] & 0x00000020u) != 0; +} +inline void FieldOptions::set_has_weak() { + _has_bits_[0] |= 0x00000020u; +} +inline void FieldOptions::clear_has_weak() { + _has_bits_[0] &= ~0x00000020u; +} +inline void FieldOptions::clear_weak() { + weak_ = false; + clear_has_weak(); +} +inline bool FieldOptions::weak() const { + return weak_; +} +inline void FieldOptions::set_weak(bool value) { + set_has_weak(); + weak_ = value; +} // repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999; inline int FieldOptions::uninterpreted_option_size() const { @@ -3984,6 +5198,28 @@ FieldOptions::mutable_uninterpreted_option() { // EnumOptions +// optional bool allow_alias = 2 [default = true]; +inline bool EnumOptions::has_allow_alias() const { + return (_has_bits_[0] & 0x00000001u) != 0; +} +inline void EnumOptions::set_has_allow_alias() { + _has_bits_[0] |= 0x00000001u; +} +inline void EnumOptions::clear_has_allow_alias() { + _has_bits_[0] &= ~0x00000001u; +} +inline void EnumOptions::clear_allow_alias() { + allow_alias_ = true; + clear_has_allow_alias(); +} +inline bool EnumOptions::allow_alias() const { + return allow_alias_; +} +inline void EnumOptions::set_allow_alias(bool value) { + set_has_allow_alias(); + allow_alias_ = value; +} + // repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999; inline int EnumOptions::uninterpreted_option_size() const { return uninterpreted_option_.size(); @@ -4102,59 +5338,93 @@ MethodOptions::mutable_uninterpreted_option() { // required string name_part = 1; inline bool UninterpretedOption_NamePart::has_name_part() const { - return _has_bit(0); + return (_has_bits_[0] & 0x00000001u) != 0; +} +inline void UninterpretedOption_NamePart::set_has_name_part() { + _has_bits_[0] |= 0x00000001u; +} +inline void UninterpretedOption_NamePart::clear_has_name_part() { + _has_bits_[0] &= ~0x00000001u; } inline void UninterpretedOption_NamePart::clear_name_part() { - if (name_part_ != &_default_name_part_) { + if (name_part_ != &::google::protobuf::internal::kEmptyString) { name_part_->clear(); } - _clear_bit(0); + clear_has_name_part(); } inline const ::std::string& UninterpretedOption_NamePart::name_part() const { return *name_part_; } inline void UninterpretedOption_NamePart::set_name_part(const ::std::string& value) { - _set_bit(0); - if (name_part_ == &_default_name_part_) { + set_has_name_part(); + if (name_part_ == &::google::protobuf::internal::kEmptyString) { name_part_ = new ::std::string; } name_part_->assign(value); } inline void UninterpretedOption_NamePart::set_name_part(const char* value) { - _set_bit(0); - if (name_part_ == &_default_name_part_) { + set_has_name_part(); + if (name_part_ == &::google::protobuf::internal::kEmptyString) { name_part_ = new ::std::string; } name_part_->assign(value); } inline void UninterpretedOption_NamePart::set_name_part(const char* value, size_t size) { - _set_bit(0); - if (name_part_ == &_default_name_part_) { + set_has_name_part(); + if (name_part_ == &::google::protobuf::internal::kEmptyString) { name_part_ = new ::std::string; } name_part_->assign(reinterpret_cast(value), size); } inline ::std::string* UninterpretedOption_NamePart::mutable_name_part() { - _set_bit(0); - if (name_part_ == &_default_name_part_) { + set_has_name_part(); + if (name_part_ == &::google::protobuf::internal::kEmptyString) { name_part_ = new ::std::string; } return name_part_; } +inline ::std::string* UninterpretedOption_NamePart::release_name_part() { + clear_has_name_part(); + if (name_part_ == &::google::protobuf::internal::kEmptyString) { + return NULL; + } else { + ::std::string* temp = name_part_; + name_part_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + return temp; + } +} +inline void UninterpretedOption_NamePart::set_allocated_name_part(::std::string* name_part) { + if (name_part_ != &::google::protobuf::internal::kEmptyString) { + delete name_part_; + } + if (name_part) { + set_has_name_part(); + name_part_ = name_part; + } else { + clear_has_name_part(); + name_part_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + } +} // required bool is_extension = 2; inline bool UninterpretedOption_NamePart::has_is_extension() const { - return _has_bit(1); + return (_has_bits_[0] & 0x00000002u) != 0; +} +inline void UninterpretedOption_NamePart::set_has_is_extension() { + _has_bits_[0] |= 0x00000002u; +} +inline void UninterpretedOption_NamePart::clear_has_is_extension() { + _has_bits_[0] &= ~0x00000002u; } inline void UninterpretedOption_NamePart::clear_is_extension() { is_extension_ = false; - _clear_bit(1); + clear_has_is_extension(); } inline bool UninterpretedOption_NamePart::is_extension() const { return is_extension_; } inline void UninterpretedOption_NamePart::set_is_extension(bool value) { - _set_bit(1); + set_has_is_extension(); is_extension_ = value; } @@ -4189,135 +5459,502 @@ UninterpretedOption::mutable_name() { // optional string identifier_value = 3; inline bool UninterpretedOption::has_identifier_value() const { - return _has_bit(1); + return (_has_bits_[0] & 0x00000002u) != 0; +} +inline void UninterpretedOption::set_has_identifier_value() { + _has_bits_[0] |= 0x00000002u; +} +inline void UninterpretedOption::clear_has_identifier_value() { + _has_bits_[0] &= ~0x00000002u; } inline void UninterpretedOption::clear_identifier_value() { - if (identifier_value_ != &_default_identifier_value_) { + if (identifier_value_ != &::google::protobuf::internal::kEmptyString) { identifier_value_->clear(); } - _clear_bit(1); + clear_has_identifier_value(); } inline const ::std::string& UninterpretedOption::identifier_value() const { return *identifier_value_; } inline void UninterpretedOption::set_identifier_value(const ::std::string& value) { - _set_bit(1); - if (identifier_value_ == &_default_identifier_value_) { + set_has_identifier_value(); + if (identifier_value_ == &::google::protobuf::internal::kEmptyString) { identifier_value_ = new ::std::string; } identifier_value_->assign(value); } inline void UninterpretedOption::set_identifier_value(const char* value) { - _set_bit(1); - if (identifier_value_ == &_default_identifier_value_) { + set_has_identifier_value(); + if (identifier_value_ == &::google::protobuf::internal::kEmptyString) { identifier_value_ = new ::std::string; } identifier_value_->assign(value); } inline void UninterpretedOption::set_identifier_value(const char* value, size_t size) { - _set_bit(1); - if (identifier_value_ == &_default_identifier_value_) { + set_has_identifier_value(); + if (identifier_value_ == &::google::protobuf::internal::kEmptyString) { identifier_value_ = new ::std::string; } identifier_value_->assign(reinterpret_cast(value), size); } inline ::std::string* UninterpretedOption::mutable_identifier_value() { - _set_bit(1); - if (identifier_value_ == &_default_identifier_value_) { + set_has_identifier_value(); + if (identifier_value_ == &::google::protobuf::internal::kEmptyString) { identifier_value_ = new ::std::string; } return identifier_value_; } +inline ::std::string* UninterpretedOption::release_identifier_value() { + clear_has_identifier_value(); + if (identifier_value_ == &::google::protobuf::internal::kEmptyString) { + return NULL; + } else { + ::std::string* temp = identifier_value_; + identifier_value_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + return temp; + } +} +inline void UninterpretedOption::set_allocated_identifier_value(::std::string* identifier_value) { + if (identifier_value_ != &::google::protobuf::internal::kEmptyString) { + delete identifier_value_; + } + if (identifier_value) { + set_has_identifier_value(); + identifier_value_ = identifier_value; + } else { + clear_has_identifier_value(); + identifier_value_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + } +} // optional uint64 positive_int_value = 4; inline bool UninterpretedOption::has_positive_int_value() const { - return _has_bit(2); + return (_has_bits_[0] & 0x00000004u) != 0; +} +inline void UninterpretedOption::set_has_positive_int_value() { + _has_bits_[0] |= 0x00000004u; +} +inline void UninterpretedOption::clear_has_positive_int_value() { + _has_bits_[0] &= ~0x00000004u; } inline void UninterpretedOption::clear_positive_int_value() { positive_int_value_ = GOOGLE_ULONGLONG(0); - _clear_bit(2); + clear_has_positive_int_value(); } inline ::google::protobuf::uint64 UninterpretedOption::positive_int_value() const { return positive_int_value_; } inline void UninterpretedOption::set_positive_int_value(::google::protobuf::uint64 value) { - _set_bit(2); + set_has_positive_int_value(); positive_int_value_ = value; } // optional int64 negative_int_value = 5; inline bool UninterpretedOption::has_negative_int_value() const { - return _has_bit(3); + return (_has_bits_[0] & 0x00000008u) != 0; +} +inline void UninterpretedOption::set_has_negative_int_value() { + _has_bits_[0] |= 0x00000008u; +} +inline void UninterpretedOption::clear_has_negative_int_value() { + _has_bits_[0] &= ~0x00000008u; } inline void UninterpretedOption::clear_negative_int_value() { negative_int_value_ = GOOGLE_LONGLONG(0); - _clear_bit(3); + clear_has_negative_int_value(); } inline ::google::protobuf::int64 UninterpretedOption::negative_int_value() const { return negative_int_value_; } inline void UninterpretedOption::set_negative_int_value(::google::protobuf::int64 value) { - _set_bit(3); + set_has_negative_int_value(); negative_int_value_ = value; } // optional double double_value = 6; inline bool UninterpretedOption::has_double_value() const { - return _has_bit(4); + return (_has_bits_[0] & 0x00000010u) != 0; +} +inline void UninterpretedOption::set_has_double_value() { + _has_bits_[0] |= 0x00000010u; +} +inline void UninterpretedOption::clear_has_double_value() { + _has_bits_[0] &= ~0x00000010u; } inline void UninterpretedOption::clear_double_value() { double_value_ = 0; - _clear_bit(4); + clear_has_double_value(); } inline double UninterpretedOption::double_value() const { return double_value_; } inline void UninterpretedOption::set_double_value(double value) { - _set_bit(4); + set_has_double_value(); double_value_ = value; } // optional bytes string_value = 7; inline bool UninterpretedOption::has_string_value() const { - return _has_bit(5); + return (_has_bits_[0] & 0x00000020u) != 0; +} +inline void UninterpretedOption::set_has_string_value() { + _has_bits_[0] |= 0x00000020u; +} +inline void UninterpretedOption::clear_has_string_value() { + _has_bits_[0] &= ~0x00000020u; } inline void UninterpretedOption::clear_string_value() { - if (string_value_ != &_default_string_value_) { + if (string_value_ != &::google::protobuf::internal::kEmptyString) { string_value_->clear(); } - _clear_bit(5); + clear_has_string_value(); } inline const ::std::string& UninterpretedOption::string_value() const { return *string_value_; } inline void UninterpretedOption::set_string_value(const ::std::string& value) { - _set_bit(5); - if (string_value_ == &_default_string_value_) { + set_has_string_value(); + if (string_value_ == &::google::protobuf::internal::kEmptyString) { string_value_ = new ::std::string; } string_value_->assign(value); } inline void UninterpretedOption::set_string_value(const char* value) { - _set_bit(5); - if (string_value_ == &_default_string_value_) { + set_has_string_value(); + if (string_value_ == &::google::protobuf::internal::kEmptyString) { string_value_ = new ::std::string; } string_value_->assign(value); } inline void UninterpretedOption::set_string_value(const void* value, size_t size) { - _set_bit(5); - if (string_value_ == &_default_string_value_) { + set_has_string_value(); + if (string_value_ == &::google::protobuf::internal::kEmptyString) { string_value_ = new ::std::string; } string_value_->assign(reinterpret_cast(value), size); } inline ::std::string* UninterpretedOption::mutable_string_value() { - _set_bit(5); - if (string_value_ == &_default_string_value_) { + set_has_string_value(); + if (string_value_ == &::google::protobuf::internal::kEmptyString) { string_value_ = new ::std::string; } return string_value_; } +inline ::std::string* UninterpretedOption::release_string_value() { + clear_has_string_value(); + if (string_value_ == &::google::protobuf::internal::kEmptyString) { + return NULL; + } else { + ::std::string* temp = string_value_; + string_value_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + return temp; + } +} +inline void UninterpretedOption::set_allocated_string_value(::std::string* string_value) { + if (string_value_ != &::google::protobuf::internal::kEmptyString) { + delete string_value_; + } + if (string_value) { + set_has_string_value(); + string_value_ = string_value; + } else { + clear_has_string_value(); + string_value_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + } +} + +// optional string aggregate_value = 8; +inline bool UninterpretedOption::has_aggregate_value() const { + return (_has_bits_[0] & 0x00000040u) != 0; +} +inline void UninterpretedOption::set_has_aggregate_value() { + _has_bits_[0] |= 0x00000040u; +} +inline void UninterpretedOption::clear_has_aggregate_value() { + _has_bits_[0] &= ~0x00000040u; +} +inline void UninterpretedOption::clear_aggregate_value() { + if (aggregate_value_ != &::google::protobuf::internal::kEmptyString) { + aggregate_value_->clear(); + } + clear_has_aggregate_value(); +} +inline const ::std::string& UninterpretedOption::aggregate_value() const { + return *aggregate_value_; +} +inline void UninterpretedOption::set_aggregate_value(const ::std::string& value) { + set_has_aggregate_value(); + if (aggregate_value_ == &::google::protobuf::internal::kEmptyString) { + aggregate_value_ = new ::std::string; + } + aggregate_value_->assign(value); +} +inline void UninterpretedOption::set_aggregate_value(const char* value) { + set_has_aggregate_value(); + if (aggregate_value_ == &::google::protobuf::internal::kEmptyString) { + aggregate_value_ = new ::std::string; + } + aggregate_value_->assign(value); +} +inline void UninterpretedOption::set_aggregate_value(const char* value, size_t size) { + set_has_aggregate_value(); + if (aggregate_value_ == &::google::protobuf::internal::kEmptyString) { + aggregate_value_ = new ::std::string; + } + aggregate_value_->assign(reinterpret_cast(value), size); +} +inline ::std::string* UninterpretedOption::mutable_aggregate_value() { + set_has_aggregate_value(); + if (aggregate_value_ == &::google::protobuf::internal::kEmptyString) { + aggregate_value_ = new ::std::string; + } + return aggregate_value_; +} +inline ::std::string* UninterpretedOption::release_aggregate_value() { + clear_has_aggregate_value(); + if (aggregate_value_ == &::google::protobuf::internal::kEmptyString) { + return NULL; + } else { + ::std::string* temp = aggregate_value_; + aggregate_value_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + return temp; + } +} +inline void UninterpretedOption::set_allocated_aggregate_value(::std::string* aggregate_value) { + if (aggregate_value_ != &::google::protobuf::internal::kEmptyString) { + delete aggregate_value_; + } + if (aggregate_value) { + set_has_aggregate_value(); + aggregate_value_ = aggregate_value; + } else { + clear_has_aggregate_value(); + aggregate_value_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + } +} + +// ------------------------------------------------------------------- + +// SourceCodeInfo_Location + +// repeated int32 path = 1 [packed = true]; +inline int SourceCodeInfo_Location::path_size() const { + return path_.size(); +} +inline void SourceCodeInfo_Location::clear_path() { + path_.Clear(); +} +inline ::google::protobuf::int32 SourceCodeInfo_Location::path(int index) const { + return path_.Get(index); +} +inline void SourceCodeInfo_Location::set_path(int index, ::google::protobuf::int32 value) { + path_.Set(index, value); +} +inline void SourceCodeInfo_Location::add_path(::google::protobuf::int32 value) { + path_.Add(value); +} +inline const ::google::protobuf::RepeatedField< ::google::protobuf::int32 >& +SourceCodeInfo_Location::path() const { + return path_; +} +inline ::google::protobuf::RepeatedField< ::google::protobuf::int32 >* +SourceCodeInfo_Location::mutable_path() { + return &path_; +} + +// repeated int32 span = 2 [packed = true]; +inline int SourceCodeInfo_Location::span_size() const { + return span_.size(); +} +inline void SourceCodeInfo_Location::clear_span() { + span_.Clear(); +} +inline ::google::protobuf::int32 SourceCodeInfo_Location::span(int index) const { + return span_.Get(index); +} +inline void SourceCodeInfo_Location::set_span(int index, ::google::protobuf::int32 value) { + span_.Set(index, value); +} +inline void SourceCodeInfo_Location::add_span(::google::protobuf::int32 value) { + span_.Add(value); +} +inline const ::google::protobuf::RepeatedField< ::google::protobuf::int32 >& +SourceCodeInfo_Location::span() const { + return span_; +} +inline ::google::protobuf::RepeatedField< ::google::protobuf::int32 >* +SourceCodeInfo_Location::mutable_span() { + return &span_; +} + +// optional string leading_comments = 3; +inline bool SourceCodeInfo_Location::has_leading_comments() const { + return (_has_bits_[0] & 0x00000004u) != 0; +} +inline void SourceCodeInfo_Location::set_has_leading_comments() { + _has_bits_[0] |= 0x00000004u; +} +inline void SourceCodeInfo_Location::clear_has_leading_comments() { + _has_bits_[0] &= ~0x00000004u; +} +inline void SourceCodeInfo_Location::clear_leading_comments() { + if (leading_comments_ != &::google::protobuf::internal::kEmptyString) { + leading_comments_->clear(); + } + clear_has_leading_comments(); +} +inline const ::std::string& SourceCodeInfo_Location::leading_comments() const { + return *leading_comments_; +} +inline void SourceCodeInfo_Location::set_leading_comments(const ::std::string& value) { + set_has_leading_comments(); + if (leading_comments_ == &::google::protobuf::internal::kEmptyString) { + leading_comments_ = new ::std::string; + } + leading_comments_->assign(value); +} +inline void SourceCodeInfo_Location::set_leading_comments(const char* value) { + set_has_leading_comments(); + if (leading_comments_ == &::google::protobuf::internal::kEmptyString) { + leading_comments_ = new ::std::string; + } + leading_comments_->assign(value); +} +inline void SourceCodeInfo_Location::set_leading_comments(const char* value, size_t size) { + set_has_leading_comments(); + if (leading_comments_ == &::google::protobuf::internal::kEmptyString) { + leading_comments_ = new ::std::string; + } + leading_comments_->assign(reinterpret_cast(value), size); +} +inline ::std::string* SourceCodeInfo_Location::mutable_leading_comments() { + set_has_leading_comments(); + if (leading_comments_ == &::google::protobuf::internal::kEmptyString) { + leading_comments_ = new ::std::string; + } + return leading_comments_; +} +inline ::std::string* SourceCodeInfo_Location::release_leading_comments() { + clear_has_leading_comments(); + if (leading_comments_ == &::google::protobuf::internal::kEmptyString) { + return NULL; + } else { + ::std::string* temp = leading_comments_; + leading_comments_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + return temp; + } +} +inline void SourceCodeInfo_Location::set_allocated_leading_comments(::std::string* leading_comments) { + if (leading_comments_ != &::google::protobuf::internal::kEmptyString) { + delete leading_comments_; + } + if (leading_comments) { + set_has_leading_comments(); + leading_comments_ = leading_comments; + } else { + clear_has_leading_comments(); + leading_comments_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + } +} + +// optional string trailing_comments = 4; +inline bool SourceCodeInfo_Location::has_trailing_comments() const { + return (_has_bits_[0] & 0x00000008u) != 0; +} +inline void SourceCodeInfo_Location::set_has_trailing_comments() { + _has_bits_[0] |= 0x00000008u; +} +inline void SourceCodeInfo_Location::clear_has_trailing_comments() { + _has_bits_[0] &= ~0x00000008u; +} +inline void SourceCodeInfo_Location::clear_trailing_comments() { + if (trailing_comments_ != &::google::protobuf::internal::kEmptyString) { + trailing_comments_->clear(); + } + clear_has_trailing_comments(); +} +inline const ::std::string& SourceCodeInfo_Location::trailing_comments() const { + return *trailing_comments_; +} +inline void SourceCodeInfo_Location::set_trailing_comments(const ::std::string& value) { + set_has_trailing_comments(); + if (trailing_comments_ == &::google::protobuf::internal::kEmptyString) { + trailing_comments_ = new ::std::string; + } + trailing_comments_->assign(value); +} +inline void SourceCodeInfo_Location::set_trailing_comments(const char* value) { + set_has_trailing_comments(); + if (trailing_comments_ == &::google::protobuf::internal::kEmptyString) { + trailing_comments_ = new ::std::string; + } + trailing_comments_->assign(value); +} +inline void SourceCodeInfo_Location::set_trailing_comments(const char* value, size_t size) { + set_has_trailing_comments(); + if (trailing_comments_ == &::google::protobuf::internal::kEmptyString) { + trailing_comments_ = new ::std::string; + } + trailing_comments_->assign(reinterpret_cast(value), size); +} +inline ::std::string* SourceCodeInfo_Location::mutable_trailing_comments() { + set_has_trailing_comments(); + if (trailing_comments_ == &::google::protobuf::internal::kEmptyString) { + trailing_comments_ = new ::std::string; + } + return trailing_comments_; +} +inline ::std::string* SourceCodeInfo_Location::release_trailing_comments() { + clear_has_trailing_comments(); + if (trailing_comments_ == &::google::protobuf::internal::kEmptyString) { + return NULL; + } else { + ::std::string* temp = trailing_comments_; + trailing_comments_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + return temp; + } +} +inline void SourceCodeInfo_Location::set_allocated_trailing_comments(::std::string* trailing_comments) { + if (trailing_comments_ != &::google::protobuf::internal::kEmptyString) { + delete trailing_comments_; + } + if (trailing_comments) { + set_has_trailing_comments(); + trailing_comments_ = trailing_comments; + } else { + clear_has_trailing_comments(); + trailing_comments_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + } +} + +// ------------------------------------------------------------------- + +// SourceCodeInfo + +// repeated .google.protobuf.SourceCodeInfo.Location location = 1; +inline int SourceCodeInfo::location_size() const { + return location_.size(); +} +inline void SourceCodeInfo::clear_location() { + location_.Clear(); +} +inline const ::google::protobuf::SourceCodeInfo_Location& SourceCodeInfo::location(int index) const { + return location_.Get(index); +} +inline ::google::protobuf::SourceCodeInfo_Location* SourceCodeInfo::mutable_location(int index) { + return location_.Mutable(index); +} +inline ::google::protobuf::SourceCodeInfo_Location* SourceCodeInfo::add_location() { + return location_.Add(); +} +inline const ::google::protobuf::RepeatedPtrField< ::google::protobuf::SourceCodeInfo_Location >& +SourceCodeInfo::location() const { + return location_; +} +inline ::google::protobuf::RepeatedPtrField< ::google::protobuf::SourceCodeInfo_Location >* +SourceCodeInfo::mutable_location() { + return &location_; +} // @@protoc_insertion_point(namespace_scope) diff --git a/cpp/thirdparty/protobuf-2.3.0/src/google/protobuf/descriptor.proto b/cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/descriptor.proto similarity index 61% rename from cpp/thirdparty/protobuf-2.3.0/src/google/protobuf/descriptor.proto rename to cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/descriptor.proto index cc04aa8ea..a785f79fa 100644 --- a/cpp/thirdparty/protobuf-2.3.0/src/google/protobuf/descriptor.proto +++ b/cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/descriptor.proto @@ -59,6 +59,11 @@ message FileDescriptorProto { // Names of files imported by this file. repeated string dependency = 3; + // Indexes of the public imported files in the dependency list above. + repeated int32 public_dependency = 10; + // Indexes of the weak imported files in the dependency list. + // For Google-internal migration only. Do not use. + repeated int32 weak_dependency = 11; // All top-level definitions in this file. repeated DescriptorProto message_type = 4; @@ -67,6 +72,12 @@ message FileDescriptorProto { repeated FieldDescriptorProto extension = 7; optional FileOptions options = 8; + + // This field contains optional information about the original source code. + // You may safely remove this entire field whithout harming runtime + // functionality of the descriptors -- the information is needed only by + // development tools. + optional SourceCodeInfo source_code_info = 9; } // Describes a message type. @@ -95,13 +106,13 @@ message FieldDescriptorProto { // Order is weird for historical reasons. TYPE_DOUBLE = 1; TYPE_FLOAT = 2; - TYPE_INT64 = 3; // Not ZigZag encoded. Negative numbers - // take 10 bytes. Use TYPE_SINT64 if negative - // values are likely. + // Not ZigZag encoded. Negative numbers take 10 bytes. Use TYPE_SINT64 if + // negative values are likely. + TYPE_INT64 = 3; TYPE_UINT64 = 4; - TYPE_INT32 = 5; // Not ZigZag encoded. Negative numbers - // take 10 bytes. Use TYPE_SINT32 if negative - // values are likely. + // Not ZigZag encoded. Negative numbers take 10 bytes. Use TYPE_SINT32 if + // negative values are likely. + TYPE_INT32 = 5; TYPE_FIXED64 = 6; TYPE_FIXED32 = 7; TYPE_BOOL = 8; @@ -193,6 +204,7 @@ message MethodDescriptorProto { optional MethodOptions options = 4; } + // =================================================================== // Options @@ -214,10 +226,15 @@ message MethodDescriptorProto { // through 99999. It is up to you to ensure that you do not use the // same number for multiple options. // * For options which will be published and used publicly by multiple -// independent entities, e-mail kenton@google.com to reserve extension -// numbers. Simply tell me how many you need and I'll send you back a -// set of numbers to use -- there's no need to explain how you intend to -// use them. If this turns out to be popular, a web service will be set up +// independent entities, e-mail protobuf-global-extension-registry@google.com +// to reserve extension numbers. Simply provide your project name (e.g. +// Object-C plugin) and your porject website (if available) -- there's no need +// to explain how you intend to use them. Usually you only need one extension +// number. You can declare multiple options with only one extension number by +// putting them in a sub-message. See the Custom Options section of the docs +// for examples: +// http://code.google.com/apis/protocolbuffers/docs/proto.html#options +// If this turns out to be popular, a web service will be set up // to automatically assign option numbers. @@ -245,6 +262,12 @@ message FileOptions { // top-level extensions defined in the file. optional bool java_multiple_files = 10 [default=false]; + // If set true, then the Java code generator will generate equals() and + // hashCode() methods for all messages defined in the .proto file. This is + // purely a speed optimization, as the AbstractMessage base class includes + // reflection-based implementations of these methods. + optional bool java_generate_equals_and_hash = 20 [default=false]; + // Generated classes can be optimized for speed or code size. enum OptimizeMode { SPEED = 1; // Generate complete code for parsing, serialization, @@ -254,6 +277,9 @@ message FileOptions { } optional OptimizeMode optimize_for = 9 [default=SPEED]; + // Sets the Go package where structs generated from this .proto will be + // placed. There is no default. + optional string go_package = 11; @@ -264,13 +290,12 @@ message FileOptions { // early versions of proto2. // // Generic services are now considered deprecated in favor of using plugins - // that generate code specific to your particular RPC system. If you are - // using such a plugin, set these to false. In the future, we may change - // the default to false, so if you explicitly want generic services, you - // should explicitly set these to true. - optional bool cc_generic_services = 16 [default=true]; - optional bool java_generic_services = 17 [default=true]; - optional bool py_generic_services = 18 [default=true]; + // that generate code specific to your particular RPC system. Therefore, + // these default to false. Old code which depends on generic services should + // explicitly set them to true. + optional bool cc_generic_services = 16 [default=false]; + optional bool java_generic_services = 17 [default=false]; + optional bool py_generic_services = 18 [default=false]; // The parser stores options it doesn't recognize here. See above. repeated UninterpretedOption uninterpreted_option = 999; @@ -333,6 +358,37 @@ message FieldOptions { optional bool packed = 2; + + // Should this field be parsed lazily? Lazy applies only to message-type + // fields. It means that when the outer message is initially parsed, the + // inner message's contents will not be parsed but instead stored in encoded + // form. The inner message will actually be parsed when it is first accessed. + // + // This is only a hint. Implementations are free to choose whether to use + // eager or lazy parsing regardless of the value of this option. However, + // setting this option true suggests that the protocol author believes that + // using lazy parsing on this field is worth the additional bookkeeping + // overhead typically needed to implement it. + // + // This option does not affect the public interface of any generated code; + // all method signatures remain the same. Furthermore, thread-safety of the + // interface is not affected by this option; const methods remain safe to + // call from multiple threads concurrently, while non-const methods continue + // to require exclusive access. + // + // + // Note that implementations may choose not to check required fields within + // a lazy sub-message. That is, calling IsInitialized() on the outher message + // may return true even if the inner message has missing required fields. + // This is necessary because otherwise the inner message would have to be + // parsed in order to perform the check, defeating the purpose of lazy + // parsing. An implementation which chooses not to check required fields + // must be consistent about it. That is, for any particular sub-message, the + // implementation must either *always* check its required fields, or *never* + // check its required fields, regardless of whether or not the message has + // been parsed. + optional bool lazy = 5 [default=false]; + // Is this field deprecated? // Depending on the target platform, this can emit Deprecated annotations // for accessors, or it will be completely ignored; in the very least, this @@ -353,6 +409,9 @@ message FieldOptions { // TODO: Fully-implement this, then remove the "experimental_" prefix. optional string experimental_map_key = 9; + // For Google-internal migration only. Do not use. + optional bool weak = 10 [default=false]; + // The parser stores options it doesn't recognize here. See above. repeated UninterpretedOption uninterpreted_option = 999; @@ -362,6 +421,10 @@ message FieldOptions { message EnumOptions { + // Set this option to false to disallow mapping different tag names to a same + // value. + optional bool allow_alias = 2 [default=true]; + // The parser stores options it doesn't recognize here. See above. repeated UninterpretedOption uninterpreted_option = 999; @@ -405,6 +468,7 @@ message MethodOptions { extensions 1000 to max; } + // A message representing a option the parser does not recognize. This only // appears in options protos created by the compiler::Parser class. // DescriptorPool resolves these when building Descriptor objects. Therefore, @@ -430,4 +494,127 @@ message UninterpretedOption { optional int64 negative_int_value = 5; optional double double_value = 6; optional bytes string_value = 7; + optional string aggregate_value = 8; +} + +// =================================================================== +// Optional source code info + +// Encapsulates information about the original source file from which a +// FileDescriptorProto was generated. +message SourceCodeInfo { + // A Location identifies a piece of source code in a .proto file which + // corresponds to a particular definition. This information is intended + // to be useful to IDEs, code indexers, documentation generators, and similar + // tools. + // + // For example, say we have a file like: + // message Foo { + // optional string foo = 1; + // } + // Let's look at just the field definition: + // optional string foo = 1; + // ^ ^^ ^^ ^ ^^^ + // a bc de f ghi + // We have the following locations: + // span path represents + // [a,i) [ 4, 0, 2, 0 ] The whole field definition. + // [a,b) [ 4, 0, 2, 0, 4 ] The label (optional). + // [c,d) [ 4, 0, 2, 0, 5 ] The type (string). + // [e,f) [ 4, 0, 2, 0, 1 ] The name (foo). + // [g,h) [ 4, 0, 2, 0, 3 ] The number (1). + // + // Notes: + // - A location may refer to a repeated field itself (i.e. not to any + // particular index within it). This is used whenever a set of elements are + // logically enclosed in a single code segment. For example, an entire + // extend block (possibly containing multiple extension definitions) will + // have an outer location whose path refers to the "extensions" repeated + // field without an index. + // - Multiple locations may have the same path. This happens when a single + // logical declaration is spread out across multiple places. The most + // obvious example is the "extend" block again -- there may be multiple + // extend blocks in the same scope, each of which will have the same path. + // - A location's span is not always a subset of its parent's span. For + // example, the "extendee" of an extension declaration appears at the + // beginning of the "extend" block and is shared by all extensions within + // the block. + // - Just because a location's span is a subset of some other location's span + // does not mean that it is a descendent. For example, a "group" defines + // both a type and a field in a single declaration. Thus, the locations + // corresponding to the type and field and their components will overlap. + // - Code which tries to interpret locations should probably be designed to + // ignore those that it doesn't understand, as more types of locations could + // be recorded in the future. + repeated Location location = 1; + message Location { + // Identifies which part of the FileDescriptorProto was defined at this + // location. + // + // Each element is a field number or an index. They form a path from + // the root FileDescriptorProto to the place where the definition. For + // example, this path: + // [ 4, 3, 2, 7, 1 ] + // refers to: + // file.message_type(3) // 4, 3 + // .field(7) // 2, 7 + // .name() // 1 + // This is because FileDescriptorProto.message_type has field number 4: + // repeated DescriptorProto message_type = 4; + // and DescriptorProto.field has field number 2: + // repeated FieldDescriptorProto field = 2; + // and FieldDescriptorProto.name has field number 1: + // optional string name = 1; + // + // Thus, the above path gives the location of a field name. If we removed + // the last element: + // [ 4, 3, 2, 7 ] + // this path refers to the whole field declaration (from the beginning + // of the label to the terminating semicolon). + repeated int32 path = 1 [packed=true]; + + // Always has exactly three or four elements: start line, start column, + // end line (optional, otherwise assumed same as start line), end column. + // These are packed into a single field for efficiency. Note that line + // and column numbers are zero-based -- typically you will want to add + // 1 to each before displaying to a user. + repeated int32 span = 2 [packed=true]; + + // If this SourceCodeInfo represents a complete declaration, these are any + // comments appearing before and after the declaration which appear to be + // attached to the declaration. + // + // A series of line comments appearing on consecutive lines, with no other + // tokens appearing on those lines, will be treated as a single comment. + // + // Only the comment content is provided; comment markers (e.g. //) are + // stripped out. For block comments, leading whitespace and an asterisk + // will be stripped from the beginning of each line other than the first. + // Newlines are included in the output. + // + // Examples: + // + // optional int32 foo = 1; // Comment attached to foo. + // // Comment attached to bar. + // optional int32 bar = 2; + // + // optional string baz = 3; + // // Comment attached to baz. + // // Another line attached to baz. + // + // // Comment attached to qux. + // // + // // Another line attached to qux. + // optional double qux = 4; + // + // optional string corge = 5; + // /* Block comment attached + // * to corge. Leading asterisks + // * will be removed. */ + // /* Block comment attached to + // * grault. */ + // optional int32 grault = 6; + optional string leading_comments = 3; + optional string trailing_comments = 4; + } } diff --git a/cpp/thirdparty/protobuf-2.3.0/src/google/protobuf/descriptor_database.cc b/cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/descriptor_database.cc similarity index 98% rename from cpp/thirdparty/protobuf-2.3.0/src/google/protobuf/descriptor_database.cc rename to cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/descriptor_database.cc index 95708d948..35e459d53 100644 --- a/cpp/thirdparty/protobuf-2.3.0/src/google/protobuf/descriptor_database.cc +++ b/cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/descriptor_database.cc @@ -39,7 +39,7 @@ #include #include #include -#include +#include #include namespace google { @@ -101,7 +101,7 @@ bool SimpleDescriptorDatabase::DescriptorIndex::AddSymbol( if (iter == by_symbol_.end()) { // Apparently the map is currently empty. Just insert and be done with it. - by_symbol_.insert(make_pair(name, value)); + by_symbol_.insert(typename map::value_type(name, value)); return true; } @@ -128,7 +128,7 @@ bool SimpleDescriptorDatabase::DescriptorIndex::AddSymbol( // Insert the new symbol using the iterator as a hint, the new entry will // appear immediately before the one the iterator is pointing at. - by_symbol_.insert(iter, make_pair(name, value)); + by_symbol_.insert(iter, typename map::value_type(name, value)); return true; } diff --git a/cpp/thirdparty/protobuf-2.3.0/src/google/protobuf/descriptor_database.h b/cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/descriptor_database.h similarity index 99% rename from cpp/thirdparty/protobuf-2.3.0/src/google/protobuf/descriptor_database.h rename to cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/descriptor_database.h index f32b1db93..2ccb14583 100644 --- a/cpp/thirdparty/protobuf-2.3.0/src/google/protobuf/descriptor_database.h +++ b/cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/descriptor_database.h @@ -41,6 +41,7 @@ #include #include #include +#include #include namespace google { diff --git a/cpp/thirdparty/protobuf-2.3.0/src/google/protobuf/descriptor_database_unittest.cc b/cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/descriptor_database_unittest.cc similarity index 100% rename from cpp/thirdparty/protobuf-2.3.0/src/google/protobuf/descriptor_database_unittest.cc rename to cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/descriptor_database_unittest.cc diff --git a/cpp/thirdparty/protobuf-2.3.0/src/google/protobuf/descriptor_unittest.cc b/cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/descriptor_unittest.cc similarity index 83% rename from cpp/thirdparty/protobuf-2.3.0/src/google/protobuf/descriptor_unittest.cc rename to cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/descriptor_unittest.cc index ec2c81529..86e6a49d8 100644 --- a/cpp/thirdparty/protobuf-2.3.0/src/google/protobuf/descriptor_unittest.cc +++ b/cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/descriptor_unittest.cc @@ -36,13 +36,15 @@ #include +#include +#include +#include +#include +#include #include #include #include -#include #include -#include -#include #include #include @@ -1518,9 +1520,8 @@ TEST_F(ExtensionDescriptorTest, FindAllExtensions) { class MiscTest : public testing::Test { protected: - // Function which makes a field of the given type just to find out what its - // cpp_type is. - FieldDescriptor::CppType GetCppTypeForFieldType(FieldDescriptor::Type type) { + // Function which makes a field descriptor of the given type. + const FieldDescriptor* GetFieldDescriptorOfType(FieldDescriptor::Type type) { FileDescriptorProto file_proto; file_proto.set_name("foo.proto"); AddEmptyEnum(&file_proto, "DummyEnum"); @@ -1538,19 +1539,62 @@ class MiscTest : public testing::Test { } // Build the descriptors and get the pointers. - DescriptorPool pool; - const FileDescriptor* file = pool.BuildFile(file_proto); + pool_.reset(new DescriptorPool()); + const FileDescriptor* file = pool_->BuildFile(file_proto); if (file != NULL && file->message_type_count() == 1 && file->message_type(0)->field_count() == 1) { - return file->message_type(0)->field(0)->cpp_type(); + return file->message_type(0)->field(0); } else { - return static_cast(0); + return NULL; } } + + const char* GetTypeNameForFieldType(FieldDescriptor::Type type) { + const FieldDescriptor* field = GetFieldDescriptorOfType(type); + return field != NULL ? field->type_name() : ""; + } + + FieldDescriptor::CppType GetCppTypeForFieldType(FieldDescriptor::Type type) { + const FieldDescriptor* field = GetFieldDescriptorOfType(type); + return field != NULL ? field->cpp_type() : + static_cast(0); + } + + const char* GetCppTypeNameForFieldType(FieldDescriptor::Type type) { + const FieldDescriptor* field = GetFieldDescriptorOfType(type); + return field != NULL ? field->cpp_type_name() : ""; + } + + scoped_ptr pool_; }; +TEST_F(MiscTest, TypeNames) { + // Test that correct type names are returned. + + typedef FieldDescriptor FD; // avoid ugly line wrapping + + EXPECT_STREQ("double" , GetTypeNameForFieldType(FD::TYPE_DOUBLE )); + EXPECT_STREQ("float" , GetTypeNameForFieldType(FD::TYPE_FLOAT )); + EXPECT_STREQ("int64" , GetTypeNameForFieldType(FD::TYPE_INT64 )); + EXPECT_STREQ("uint64" , GetTypeNameForFieldType(FD::TYPE_UINT64 )); + EXPECT_STREQ("int32" , GetTypeNameForFieldType(FD::TYPE_INT32 )); + EXPECT_STREQ("fixed64" , GetTypeNameForFieldType(FD::TYPE_FIXED64 )); + EXPECT_STREQ("fixed32" , GetTypeNameForFieldType(FD::TYPE_FIXED32 )); + EXPECT_STREQ("bool" , GetTypeNameForFieldType(FD::TYPE_BOOL )); + EXPECT_STREQ("string" , GetTypeNameForFieldType(FD::TYPE_STRING )); + EXPECT_STREQ("group" , GetTypeNameForFieldType(FD::TYPE_GROUP )); + EXPECT_STREQ("message" , GetTypeNameForFieldType(FD::TYPE_MESSAGE )); + EXPECT_STREQ("bytes" , GetTypeNameForFieldType(FD::TYPE_BYTES )); + EXPECT_STREQ("uint32" , GetTypeNameForFieldType(FD::TYPE_UINT32 )); + EXPECT_STREQ("enum" , GetTypeNameForFieldType(FD::TYPE_ENUM )); + EXPECT_STREQ("sfixed32", GetTypeNameForFieldType(FD::TYPE_SFIXED32)); + EXPECT_STREQ("sfixed64", GetTypeNameForFieldType(FD::TYPE_SFIXED64)); + EXPECT_STREQ("sint32" , GetTypeNameForFieldType(FD::TYPE_SINT32 )); + EXPECT_STREQ("sint64" , GetTypeNameForFieldType(FD::TYPE_SINT64 )); +} + TEST_F(MiscTest, CppTypes) { // Test that CPP types are assigned correctly. @@ -1576,6 +1620,31 @@ TEST_F(MiscTest, CppTypes) { EXPECT_EQ(FD::CPPTYPE_INT64 , GetCppTypeForFieldType(FD::TYPE_SINT64 )); } +TEST_F(MiscTest, CppTypeNames) { + // Test that correct CPP type names are returned. + + typedef FieldDescriptor FD; // avoid ugly line wrapping + + EXPECT_STREQ("double" , GetCppTypeNameForFieldType(FD::TYPE_DOUBLE )); + EXPECT_STREQ("float" , GetCppTypeNameForFieldType(FD::TYPE_FLOAT )); + EXPECT_STREQ("int64" , GetCppTypeNameForFieldType(FD::TYPE_INT64 )); + EXPECT_STREQ("uint64" , GetCppTypeNameForFieldType(FD::TYPE_UINT64 )); + EXPECT_STREQ("int32" , GetCppTypeNameForFieldType(FD::TYPE_INT32 )); + EXPECT_STREQ("uint64" , GetCppTypeNameForFieldType(FD::TYPE_FIXED64 )); + EXPECT_STREQ("uint32" , GetCppTypeNameForFieldType(FD::TYPE_FIXED32 )); + EXPECT_STREQ("bool" , GetCppTypeNameForFieldType(FD::TYPE_BOOL )); + EXPECT_STREQ("string" , GetCppTypeNameForFieldType(FD::TYPE_STRING )); + EXPECT_STREQ("message", GetCppTypeNameForFieldType(FD::TYPE_GROUP )); + EXPECT_STREQ("message", GetCppTypeNameForFieldType(FD::TYPE_MESSAGE )); + EXPECT_STREQ("string" , GetCppTypeNameForFieldType(FD::TYPE_BYTES )); + EXPECT_STREQ("uint32" , GetCppTypeNameForFieldType(FD::TYPE_UINT32 )); + EXPECT_STREQ("enum" , GetCppTypeNameForFieldType(FD::TYPE_ENUM )); + EXPECT_STREQ("int32" , GetCppTypeNameForFieldType(FD::TYPE_SFIXED32)); + EXPECT_STREQ("int64" , GetCppTypeNameForFieldType(FD::TYPE_SFIXED64)); + EXPECT_STREQ("int32" , GetCppTypeNameForFieldType(FD::TYPE_SINT32 )); + EXPECT_STREQ("int64" , GetCppTypeNameForFieldType(FD::TYPE_SINT64 )); +} + TEST_F(MiscTest, DefaultValues) { // Test that setting default values works. FileDescriptorProto file_proto; @@ -1670,7 +1739,7 @@ TEST_F(MiscTest, DefaultValues) { message->field(3)->default_value_uint64()); EXPECT_EQ(4.5 , message->field(4)->default_value_float ()); EXPECT_EQ(10e100 , message->field(5)->default_value_double()); - EXPECT_EQ(true , message->field(6)->default_value_bool ()); + EXPECT_TRUE( message->field(6)->default_value_bool ()); EXPECT_EQ("hello" , message->field(7)->default_value_string()); EXPECT_EQ("\001\002\003" , message->field(8)->default_value_string()); EXPECT_EQ(enum_value_b , message->field(9)->default_value_enum ()); @@ -1693,7 +1762,7 @@ TEST_F(MiscTest, DefaultValues) { EXPECT_EQ(0 , message->field(14)->default_value_uint64()); EXPECT_EQ(0.0f , message->field(15)->default_value_float ()); EXPECT_EQ(0.0 , message->field(16)->default_value_double()); - EXPECT_EQ(false, message->field(17)->default_value_bool ()); + EXPECT_FALSE( message->field(17)->default_value_bool ()); EXPECT_EQ("" , message->field(18)->default_value_string()); EXPECT_EQ("" , message->field(19)->default_value_string()); EXPECT_EQ(enum_value_a, message->field(20)->default_value_enum()); @@ -1739,13 +1808,31 @@ TEST_F(MiscTest, FieldOptions) { } // =================================================================== +enum DescriptorPoolMode { + NO_DATABASE, + FALLBACK_DATABASE +}; -class AllowUnknownDependenciesTest : public testing::Test { +class AllowUnknownDependenciesTest + : public testing::TestWithParam { protected: + DescriptorPoolMode mode() { + return GetParam(); + } + virtual void SetUp() { FileDescriptorProto foo_proto, bar_proto; - pool_.AllowUnknownDependencies(); + switch (mode()) { + case NO_DATABASE: + pool_.reset(new DescriptorPool); + break; + case FALLBACK_DATABASE: + pool_.reset(new DescriptorPool(&db_)); + break; + } + + pool_->AllowUnknownDependencies(); ASSERT_TRUE(TextFormat::ParseFromString( "name: 'foo.proto'" @@ -1776,13 +1863,13 @@ class AllowUnknownDependenciesTest : public testing::Test { &bar_proto)); // Collect pointers to stuff. - bar_file_ = pool_.BuildFile(bar_proto); + bar_file_ = BuildFile(bar_proto); ASSERT_TRUE(bar_file_ != NULL); ASSERT_EQ(1, bar_file_->message_type_count()); bar_type_ = bar_file_->message_type(0); - foo_file_ = pool_.BuildFile(foo_proto); + foo_file_ = BuildFile(foo_proto); ASSERT_TRUE(foo_file_ != NULL); ASSERT_EQ(1, foo_file_->message_type_count()); @@ -1794,6 +1881,20 @@ class AllowUnknownDependenciesTest : public testing::Test { qux_field_ = foo_type_->field(2); } + const FileDescriptor* BuildFile(const FileDescriptorProto& proto) { + switch (mode()) { + case NO_DATABASE: + return pool_->BuildFile(proto); + break; + case FALLBACK_DATABASE: { + EXPECT_TRUE(db_.Add(proto)); + return pool_->FindFileByName(proto.name()); + } + } + GOOGLE_LOG(FATAL) << "Can't get here."; + return NULL; + } + const FileDescriptor* bar_file_; const Descriptor* bar_type_; const FileDescriptor* foo_file_; @@ -1802,10 +1903,11 @@ class AllowUnknownDependenciesTest : public testing::Test { const FieldDescriptor* baz_field_; const FieldDescriptor* qux_field_; - DescriptorPool pool_; + SimpleDescriptorDatabase db_; // used if in FALLBACK_DATABASE mode. + scoped_ptr pool_; }; -TEST_F(AllowUnknownDependenciesTest, PlaceholderFile) { +TEST_P(AllowUnknownDependenciesTest, PlaceholderFile) { ASSERT_EQ(2, foo_file_->dependency_count()); EXPECT_EQ(bar_file_, foo_file_->dependency(0)); @@ -1814,11 +1916,11 @@ TEST_F(AllowUnknownDependenciesTest, PlaceholderFile) { EXPECT_EQ(0, baz_file->message_type_count()); // Placeholder files should not be findable. - EXPECT_EQ(bar_file_, pool_.FindFileByName(bar_file_->name())); - EXPECT_TRUE(pool_.FindFileByName(baz_file->name()) == NULL); + EXPECT_EQ(bar_file_, pool_->FindFileByName(bar_file_->name())); + EXPECT_TRUE(pool_->FindFileByName(baz_file->name()) == NULL); } -TEST_F(AllowUnknownDependenciesTest, PlaceholderTypes) { +TEST_P(AllowUnknownDependenciesTest, PlaceholderTypes) { ASSERT_EQ(FieldDescriptor::TYPE_MESSAGE, bar_field_->type()); EXPECT_EQ(bar_type_, bar_field_->message_type()); @@ -1836,12 +1938,12 @@ TEST_F(AllowUnknownDependenciesTest, PlaceholderTypes) { EXPECT_EQ("corge.Qux.placeholder.proto", qux_type->file()->name()); // Placeholder types should not be findable. - EXPECT_EQ(bar_type_, pool_.FindMessageTypeByName(bar_type_->full_name())); - EXPECT_TRUE(pool_.FindMessageTypeByName(baz_type->full_name()) == NULL); - EXPECT_TRUE(pool_.FindEnumTypeByName(qux_type->full_name()) == NULL); + EXPECT_EQ(bar_type_, pool_->FindMessageTypeByName(bar_type_->full_name())); + EXPECT_TRUE(pool_->FindMessageTypeByName(baz_type->full_name()) == NULL); + EXPECT_TRUE(pool_->FindEnumTypeByName(qux_type->full_name()) == NULL); } -TEST_F(AllowUnknownDependenciesTest, CopyTo) { +TEST_P(AllowUnknownDependenciesTest, CopyTo) { // FieldDescriptor::CopyTo() should write non-fully-qualified type names // for placeholder types which were not originally fully-qualified. FieldDescriptorProto proto; @@ -1864,7 +1966,7 @@ TEST_F(AllowUnknownDependenciesTest, CopyTo) { EXPECT_EQ(FieldDescriptorProto::TYPE_ENUM, proto.type()); } -TEST_F(AllowUnknownDependenciesTest, CustomOptions) { +TEST_P(AllowUnknownDependenciesTest, CustomOptions) { // Qux should still have the uninterpreted option attached. ASSERT_EQ(1, qux_field_->options().uninterpreted_option_size()); const UninterpretedOption& option = @@ -1873,7 +1975,7 @@ TEST_F(AllowUnknownDependenciesTest, CustomOptions) { EXPECT_EQ("grault", option.name(0).name_part()); } -TEST_F(AllowUnknownDependenciesTest, UnknownExtendee) { +TEST_P(AllowUnknownDependenciesTest, UnknownExtendee) { // Test that we can extend an unknown type. This is slightly tricky because // it means that the placeholder type must have an extension range. @@ -1884,7 +1986,7 @@ TEST_F(AllowUnknownDependenciesTest, UnknownExtendee) { "extension { extendee: 'UnknownType' name:'some_extension' number:123" " label:LABEL_OPTIONAL type:TYPE_INT32 }", &extension_proto)); - const FileDescriptor* file = pool_.BuildFile(extension_proto); + const FileDescriptor* file = BuildFile(extension_proto); ASSERT_TRUE(file != NULL); @@ -1896,7 +1998,7 @@ TEST_F(AllowUnknownDependenciesTest, UnknownExtendee) { EXPECT_EQ(FieldDescriptor::kMaxNumber + 1, extendee->extension_range(0)->end); } -TEST_F(AllowUnknownDependenciesTest, CustomOption) { +TEST_P(AllowUnknownDependenciesTest, CustomOption) { // Test that we can use a custom option without having parsed // descriptor.proto. @@ -1937,7 +2039,7 @@ TEST_F(AllowUnknownDependenciesTest, CustomOption) { "}", &option_proto)); - const FileDescriptor* file = pool_.BuildFile(option_proto); + const FileDescriptor* file = BuildFile(option_proto); ASSERT_TRUE(file != NULL); // Verify that no extension options were set, but they were left as @@ -1949,6 +2051,81 @@ TEST_F(AllowUnknownDependenciesTest, CustomOption) { EXPECT_EQ(2, file->options().uninterpreted_option_size()); } +TEST_P(AllowUnknownDependenciesTest, + UndeclaredDependencyTriggersBuildOfDependency) { + // Crazy case: suppose foo.proto refers to a symbol without declaring the + // dependency that finds it. In the event that the pool is backed by a + // DescriptorDatabase, the pool will attempt to find the symbol in the + // database. If successful, it will build the undeclared dependency to verify + // that the file does indeed contain the symbol. If that file fails to build, + // then its descriptors must be rolled back. However, we still want foo.proto + // to build successfully, since we are allowing unknown dependencies. + + FileDescriptorProto undeclared_dep_proto; + // We make this file fail to build by giving it two fields with tag 1. + ASSERT_TRUE(TextFormat::ParseFromString( + "name: \"invalid_file_as_undeclared_dep.proto\" " + "package: \"undeclared\" " + "message_type: { " + " name: \"Quux\" " + " field { " + " name:'qux' number:1 label:LABEL_OPTIONAL type: TYPE_INT32 " + " }" + " field { " + " name:'quux' number:1 label:LABEL_OPTIONAL type: TYPE_INT64 " + " }" + "}", + &undeclared_dep_proto)); + // We can't use the BuildFile() helper because we don't actually want to build + // it into the descriptor pool in the fallback database case: it just needs to + // be sitting in the database so that it gets built during the building of + // test.proto below. + switch (mode()) { + case NO_DATABASE: { + ASSERT_TRUE(pool_->BuildFile(undeclared_dep_proto) == NULL); + break; + } + case FALLBACK_DATABASE: { + ASSERT_TRUE(db_.Add(undeclared_dep_proto)); + } + } + + FileDescriptorProto test_proto; + ASSERT_TRUE(TextFormat::ParseFromString( + "name: \"test.proto\" " + "message_type: { " + " name: \"Corge\" " + " field { " + " name:'quux' number:1 label: LABEL_OPTIONAL " + " type_name:'undeclared.Quux' type: TYPE_MESSAGE " + " }" + "}", + &test_proto)); + + const FileDescriptor* file = BuildFile(test_proto); + ASSERT_TRUE(file != NULL); + GOOGLE_LOG(INFO) << file->DebugString(); + + EXPECT_EQ(0, file->dependency_count()); + ASSERT_EQ(1, file->message_type_count()); + const Descriptor* corge_desc = file->message_type(0); + ASSERT_EQ("Corge", corge_desc->name()); + ASSERT_EQ(1, corge_desc->field_count()); + + const FieldDescriptor* quux_field = corge_desc->field(0); + ASSERT_EQ(FieldDescriptor::TYPE_MESSAGE, quux_field->type()); + ASSERT_EQ("Quux", quux_field->message_type()->name()); + ASSERT_EQ("undeclared.Quux", quux_field->message_type()->full_name()); + EXPECT_EQ("undeclared.Quux.placeholder.proto", + quux_field->message_type()->file()->name()); + // The place holder type should not be findable. + ASSERT_TRUE(pool_->FindMessageTypeByName("undeclared.Quux") == NULL); +} + +INSTANTIATE_TEST_CASE_P(DatabaseSource, + AllowUnknownDependenciesTest, + testing::Values(NO_DATABASE, FALLBACK_DATABASE)); + // =================================================================== TEST(CustomOptions, OptionLocations) { @@ -1990,7 +2167,7 @@ TEST(CustomOptions, OptionTypes) { options = &protobuf_unittest::CustomOptionMinIntegerValues::descriptor()->options(); - EXPECT_EQ(false , options->GetExtension(protobuf_unittest::bool_opt)); + EXPECT_FALSE( options->GetExtension(protobuf_unittest::bool_opt)); EXPECT_EQ(kint32min, options->GetExtension(protobuf_unittest::int32_opt)); EXPECT_EQ(kint64min, options->GetExtension(protobuf_unittest::int64_opt)); EXPECT_EQ(0 , options->GetExtension(protobuf_unittest::uint32_opt)); @@ -2004,7 +2181,7 @@ TEST(CustomOptions, OptionTypes) { options = &protobuf_unittest::CustomOptionMaxIntegerValues::descriptor()->options(); - EXPECT_EQ(true , options->GetExtension(protobuf_unittest::bool_opt)); + EXPECT_TRUE( options->GetExtension(protobuf_unittest::bool_opt)); EXPECT_EQ(kint32max , options->GetExtension(protobuf_unittest::int32_opt)); EXPECT_EQ(kint64max , options->GetExtension(protobuf_unittest::int64_opt)); EXPECT_EQ(kuint32max, options->GetExtension(protobuf_unittest::uint32_opt)); @@ -2212,6 +2389,45 @@ TEST(CustomOptions, MessageOptionThreeFieldsSet) { EXPECT_EQ(1234, options.GetExtension(protobuf_unittest::complex_opt1).foo()); } +// Check that aggregate options were parsed and saved correctly in +// the appropriate descriptors. +TEST(CustomOptions, AggregateOptions) { + const Descriptor* msg = protobuf_unittest::AggregateMessage::descriptor(); + const FileDescriptor* file = msg->file(); + const FieldDescriptor* field = msg->FindFieldByName("fieldname"); + const EnumDescriptor* enumd = file->FindEnumTypeByName("AggregateEnum"); + const EnumValueDescriptor* enumv = enumd->FindValueByName("VALUE"); + const ServiceDescriptor* service = file->FindServiceByName( + "AggregateService"); + const MethodDescriptor* method = service->FindMethodByName("Method"); + + // Tests for the different types of data embedded in fileopt + const protobuf_unittest::Aggregate& file_options = + file->options().GetExtension(protobuf_unittest::fileopt); + EXPECT_EQ(100, file_options.i()); + EXPECT_EQ("FileAnnotation", file_options.s()); + EXPECT_EQ("NestedFileAnnotation", file_options.sub().s()); + EXPECT_EQ("FileExtensionAnnotation", + file_options.file().GetExtension(protobuf_unittest::fileopt).s()); + EXPECT_EQ("EmbeddedMessageSetElement", + file_options.mset().GetExtension( + protobuf_unittest::AggregateMessageSetElement + ::message_set_extension).s()); + + // Simple tests for all the other types of annotations + EXPECT_EQ("MessageAnnotation", + msg->options().GetExtension(protobuf_unittest::msgopt).s()); + EXPECT_EQ("FieldAnnotation", + field->options().GetExtension(protobuf_unittest::fieldopt).s()); + EXPECT_EQ("EnumAnnotation", + enumd->options().GetExtension(protobuf_unittest::enumopt).s()); + EXPECT_EQ("EnumValueAnnotation", + enumv->options().GetExtension(protobuf_unittest::enumvalopt).s()); + EXPECT_EQ("ServiceAnnotation", + service->options().GetExtension(protobuf_unittest::serviceopt).s()); + EXPECT_EQ("MethodAnnotation", + method->options().GetExtension(protobuf_unittest::methodopt).s()); +} // =================================================================== @@ -2412,6 +2628,15 @@ TEST_F(ValidationErrorTest, UnknownDependency) { "bar.proto: bar.proto: OTHER: Import \"foo.proto\" has not been loaded.\n"); } +TEST_F(ValidationErrorTest, InvalidPublicDependencyIndex) { + BuildFile("name: \"foo.proto\""); + BuildFileWithErrors( + "name: \"bar.proto\" " + "dependency: \"foo.proto\" " + "public_dependency: 1", + "bar.proto: bar.proto: OTHER: Invalid public dependency index.\n"); +} + TEST_F(ValidationErrorTest, ForeignUnimportedPackageNoCrash) { // Used to crash: If we depend on a non-existent file and then refer to a // package defined in a file that we didn't import, and that package is @@ -2790,6 +3015,164 @@ TEST_F(ValidationErrorTest, FieldTypeDefinedInUndeclaredDependency) { "necessary import.\n"); } +TEST_F(ValidationErrorTest, FieldTypeDefinedInIndirectDependency) { + // Test for hidden dependencies. + // + // // bar.proto + // message Bar{} + // + // // forward.proto + // import "bar.proto" + // + // // foo.proto + // import "forward.proto" + // message Foo { + // optional Bar foo = 1; // Error, needs to import bar.proto explicitly. + // } + // + BuildFile( + "name: \"bar.proto\" " + "message_type { name: \"Bar\" }"); + + BuildFile( + "name: \"forward.proto\"" + "dependency: \"bar.proto\""); + + BuildFileWithErrors( + "name: \"foo.proto\" " + "dependency: \"forward.proto\" " + "message_type {" + " name: \"Foo\"" + " field { name:\"foo\" number:1 label:LABEL_OPTIONAL type_name:\"Bar\" }" + "}", + "foo.proto: Foo.foo: TYPE: \"Bar\" seems to be defined in \"bar.proto\", " + "which is not imported by \"foo.proto\". To use it here, please add the " + "necessary import.\n"); +} + +TEST_F(ValidationErrorTest, FieldTypeDefinedInPublicDependency) { + // Test for public dependencies. + // + // // bar.proto + // message Bar{} + // + // // forward.proto + // import public "bar.proto" + // + // // foo.proto + // import "forward.proto" + // message Foo { + // optional Bar foo = 1; // Correct. "bar.proto" is public imported into + // // forward.proto, so when "foo.proto" imports + // // "forward.proto", it imports "bar.proto" too. + // } + // + BuildFile( + "name: \"bar.proto\" " + "message_type { name: \"Bar\" }"); + + BuildFile( + "name: \"forward.proto\"" + "dependency: \"bar.proto\" " + "public_dependency: 0"); + + BuildFile( + "name: \"foo.proto\" " + "dependency: \"forward.proto\" " + "message_type {" + " name: \"Foo\"" + " field { name:\"foo\" number:1 label:LABEL_OPTIONAL type_name:\"Bar\" }" + "}"); +} + +TEST_F(ValidationErrorTest, FieldTypeDefinedInTransitivePublicDependency) { + // Test for public dependencies. + // + // // bar.proto + // message Bar{} + // + // // forward.proto + // import public "bar.proto" + // + // // forward2.proto + // import public "forward.proto" + // + // // foo.proto + // import "forward2.proto" + // message Foo { + // optional Bar foo = 1; // Correct, public imports are transitive. + // } + // + BuildFile( + "name: \"bar.proto\" " + "message_type { name: \"Bar\" }"); + + BuildFile( + "name: \"forward.proto\"" + "dependency: \"bar.proto\" " + "public_dependency: 0"); + + BuildFile( + "name: \"forward2.proto\"" + "dependency: \"forward.proto\" " + "public_dependency: 0"); + + BuildFile( + "name: \"foo.proto\" " + "dependency: \"forward2.proto\" " + "message_type {" + " name: \"Foo\"" + " field { name:\"foo\" number:1 label:LABEL_OPTIONAL type_name:\"Bar\" }" + "}"); +} + +TEST_F(ValidationErrorTest, + FieldTypeDefinedInPrivateDependencyOfPublicDependency) { + // Test for public dependencies. + // + // // bar.proto + // message Bar{} + // + // // forward.proto + // import "bar.proto" + // + // // forward2.proto + // import public "forward.proto" + // + // // foo.proto + // import "forward2.proto" + // message Foo { + // optional Bar foo = 1; // Error, the "bar.proto" is not public imported + // // into "forward.proto", so will not be imported + // // into either "forward2.proto" or "foo.proto". + // } + // + BuildFile( + "name: \"bar.proto\" " + "message_type { name: \"Bar\" }"); + + BuildFile( + "name: \"forward.proto\"" + "dependency: \"bar.proto\""); + + BuildFile( + "name: \"forward2.proto\"" + "dependency: \"forward.proto\" " + "public_dependency: 0"); + + BuildFileWithErrors( + "name: \"foo.proto\" " + "dependency: \"forward2.proto\" " + "message_type {" + " name: \"Foo\"" + " field { name:\"foo\" number:1 label:LABEL_OPTIONAL type_name:\"Bar\" }" + "}", + "foo.proto: Foo.foo: TYPE: \"Bar\" seems to be defined in \"bar.proto\", " + "which is not imported by \"foo.proto\". To use it here, please add the " + "necessary import.\n"); +} + + TEST_F(ValidationErrorTest, SearchMostLocalFirst) { // The following should produce an error that Bar.Baz is not defined: // message Bar { message Baz {} } @@ -2992,7 +3375,8 @@ TEST_F(ValidationErrorTest, InputTypeNotDefined) { " method { name: \"A\" input_type: \"Bar\" output_type: \"Foo\" }" "}", - "foo.proto: TestService.A: INPUT_TYPE: \"Bar\" is not defined.\n"); + "foo.proto: TestService.A: INPUT_TYPE: \"Bar\" is not defined.\n" + ); } TEST_F(ValidationErrorTest, InputTypeNotAMessage) { @@ -3005,7 +3389,8 @@ TEST_F(ValidationErrorTest, InputTypeNotAMessage) { " method { name: \"A\" input_type: \"Bar\" output_type: \"Foo\" }" "}", - "foo.proto: TestService.A: INPUT_TYPE: \"Bar\" is not a message type.\n"); + "foo.proto: TestService.A: INPUT_TYPE: \"Bar\" is not a message type.\n" + ); } TEST_F(ValidationErrorTest, OutputTypeNotDefined) { @@ -3017,7 +3402,8 @@ TEST_F(ValidationErrorTest, OutputTypeNotDefined) { " method { name: \"A\" input_type: \"Foo\" output_type: \"Bar\" }" "}", - "foo.proto: TestService.A: OUTPUT_TYPE: \"Bar\" is not defined.\n"); + "foo.proto: TestService.A: OUTPUT_TYPE: \"Bar\" is not defined.\n" + ); } TEST_F(ValidationErrorTest, OutputTypeNotAMessage) { @@ -3030,9 +3416,11 @@ TEST_F(ValidationErrorTest, OutputTypeNotAMessage) { " method { name: \"A\" input_type: \"Foo\" output_type: \"Bar\" }" "}", - "foo.proto: TestService.A: OUTPUT_TYPE: \"Bar\" is not a message type.\n"); + "foo.proto: TestService.A: OUTPUT_TYPE: \"Bar\" is not a message type.\n" + ); } + TEST_F(ValidationErrorTest, IllegalPackedField) { BuildFileWithErrors( "name: \"foo.proto\" " @@ -3425,25 +3813,50 @@ TEST_F(ValidationErrorTest, StringOptionValueIsNotString) { "string option \"foo\".\n"); } -TEST_F(ValidationErrorTest, TryingToSetMessageValuedOption) { +// Helper function for tests that check for aggregate value parsing +// errors. The "value" argument is embedded inside the +// "uninterpreted_option" portion of the result. +static string EmbedAggregateValue(const char* value) { + return strings::Substitute( + "name: \"foo.proto\" " + "dependency: \"google/protobuf/descriptor.proto\" " + "message_type { name: \"Foo\" } " + "extension { name: \"foo\" number: 7672757 label: LABEL_OPTIONAL " + " type: TYPE_MESSAGE type_name: \"Foo\" " + " extendee: \"google.protobuf.FileOptions\" }" + "options { uninterpreted_option { name { name_part: \"foo\" " + " is_extension: true } " + " $0 } }", + value); +} + +TEST_F(ValidationErrorTest, AggregateValueNotFound) { BuildDescriptorMessagesInTestPool(); BuildFileWithErrors( - "name: \"foo.proto\" " - "dependency: \"google/protobuf/descriptor.proto\" " - "message_type { " - " name: \"TestMessage\" " - " field { name:\"baz\" number:1 label:LABEL_OPTIONAL type:TYPE_STRING }" - "}" - "extension { name: \"bar\" number: 7672757 label: LABEL_OPTIONAL " - " type: TYPE_MESSAGE type_name: \"TestMessage\" " - " extendee: \"google.protobuf.FileOptions\" }" - "options { uninterpreted_option { name { name_part: \"bar\" " - " is_extension: true } " - " identifier_value: \"QUUX\" } }", + EmbedAggregateValue("string_value: \"\""), + "foo.proto: foo.proto: OPTION_VALUE: Option \"foo\" is a message. " + "To set the entire message, use syntax like " + "\"foo = { }\". To set fields within it, use " + "syntax like \"foo.foo = value\".\n"); +} + +TEST_F(ValidationErrorTest, AggregateValueParseError) { + BuildDescriptorMessagesInTestPool(); + + BuildFileWithErrors( + EmbedAggregateValue("aggregate_value: \"1+2\""), + "foo.proto: foo.proto: OPTION_VALUE: Error while parsing option " + "value for \"foo\": Expected identifier.\n"); +} + +TEST_F(ValidationErrorTest, AggregateValueUnknownFields) { + BuildDescriptorMessagesInTestPool(); - "foo.proto: foo.proto: OPTION_NAME: Option field \"(bar)\" cannot be of " - "message type.\n"); + BuildFileWithErrors( + EmbedAggregateValue("aggregate_value: \"x:100\""), + "foo.proto: foo.proto: OPTION_VALUE: Error while parsing option " + "value for \"foo\": Message type \"Foo\" has no field named \"x\".\n"); } TEST_F(ValidationErrorTest, NotLiteImportsLite) { @@ -3483,11 +3896,25 @@ TEST_F(ValidationErrorTest, LiteExtendsNotLite) { TEST_F(ValidationErrorTest, NoLiteServices) { BuildFileWithErrors( "name: \"foo.proto\" " - "options { optimize_for: LITE_RUNTIME } " + "options {" + " optimize_for: LITE_RUNTIME" + " cc_generic_services: true" + " java_generic_services: true" + "} " "service { name: \"Foo\" }", "foo.proto: Foo: NAME: Files with optimize_for = LITE_RUNTIME cannot " - "define services.\n"); + "define services unless you set both options cc_generic_services and " + "java_generic_sevices to false.\n"); + + BuildFile( + "name: \"bar.proto\" " + "options {" + " optimize_for: LITE_RUNTIME" + " cc_generic_services: false" + " java_generic_services: false" + "} " + "service { name: \"Bar\" }"); } TEST_F(ValidationErrorTest, RollbackAfterError) { @@ -3514,7 +3941,8 @@ TEST_F(ValidationErrorTest, RollbackAfterError) { " }" "}", - "foo.proto: TestService.Baz: INPUT_TYPE: \"NoSuchType\" is not defined.\n"); + "foo.proto: TestService.Baz: INPUT_TYPE: \"NoSuchType\" is not defined.\n" + ); // Make sure that if we build the same file again with the error fixed, // it works. If the above rollback was incomplete, then some symbols will @@ -3563,6 +3991,21 @@ TEST_F(ValidationErrorTest, ErrorsReportedToLogError) { EXPECT_EQ(" Foo: \"Foo\" is already defined.", errors[1]); } +TEST_F(ValidationErrorTest, DisallowEnumAlias) { + BuildFileWithErrors( + "name: \"foo.proto\" " + "enum_type {" + " name: \"Bar\"" + " value { name:\"ENUM_A\" number:0 }" + " value { name:\"ENUM_B\" number:0 }" + " options { allow_alias: false }" + "}", + "foo.proto: Bar: NUMBER: " + "\"ENUM_B\" uses the same enum value as \"ENUM_A\". " + "If this is intended, set 'option allow_alias = true;' to the enum " + "definition.\n"); +} + // =================================================================== // DescriptorDatabase @@ -3581,16 +4024,23 @@ class DatabaseBackedPoolTest : public testing::Test { virtual void SetUp() { AddToDatabase(&database_, - "name: \"foo.proto\" " - "message_type { name:\"Foo\" extension_range { start: 1 end: 100 } } " - "enum_type { name:\"TestEnum\" value { name:\"DUMMY\" number:0 } } " - "service { name:\"TestService\" } "); + "name: 'foo.proto' " + "message_type { name:'Foo' extension_range { start: 1 end: 100 } } " + "enum_type { name:'TestEnum' value { name:'DUMMY' number:0 } } " + "service { name:'TestService' } "); AddToDatabase(&database_, - "name: \"bar.proto\" " - "dependency: \"foo.proto\" " - "message_type { name:\"Bar\" } " - "extension { name:\"foo_ext\" extendee: \".Foo\" number:5 " + "name: 'bar.proto' " + "dependency: 'foo.proto' " + "message_type { name:'Bar' } " + "extension { name:'foo_ext' extendee: '.Foo' number:5 " " label:LABEL_OPTIONAL type:TYPE_INT32 } "); + // Baz has an undeclared dependency on Foo. + AddToDatabase(&database_, + "name: 'baz.proto' " + "message_type { " + " name:'Baz' " + " field { name:'foo' number:1 label:LABEL_OPTIONAL type_name:'Foo' } " + "}"); } // We can't inject a file containing errors into a DescriptorPool, so we @@ -3829,6 +4279,33 @@ TEST_F(DatabaseBackedPoolTest, ErrorWithErrorCollector) { error_collector.text_); } +TEST_F(DatabaseBackedPoolTest, UndeclaredDependencyOnUnbuiltType) { + // Check that we find and report undeclared dependencies on types that exist + // in the descriptor database but that have not not been built yet. + MockErrorCollector error_collector; + DescriptorPool pool(&database_, &error_collector); + EXPECT_TRUE(pool.FindMessageTypeByName("Baz") == NULL); + EXPECT_EQ( + "baz.proto: Baz.foo: TYPE: \"Foo\" seems to be defined in \"foo.proto\", " + "which is not imported by \"baz.proto\". To use it here, please add " + "the necessary import.\n", + error_collector.text_); +} + +TEST_F(DatabaseBackedPoolTest, RollbackAfterError) { + // Make sure that all traces of bad types are removed from the pool. This used + // to be b/4529436, due to the fact that a symbol resolution failure could + // potentially cause another file to be recursively built, which would trigger + // a checkpoint _past_ possibly invalid symbols. + // Baz is defined in the database, but the file is invalid because it is + // missing a necessary import. + DescriptorPool pool(&database_); + EXPECT_TRUE(pool.FindMessageTypeByName("Baz") == NULL); + // Make sure that searching again for the file or the type fails. + EXPECT_TRUE(pool.FindFileByName("baz.proto") == NULL); + EXPECT_TRUE(pool.FindMessageTypeByName("Baz") == NULL); +} + TEST_F(DatabaseBackedPoolTest, UnittestProto) { // Try to load all of unittest.proto from a DescriptorDatabase. This should // thoroughly test all paths through DescriptorBuilder to insure that there @@ -3885,6 +4362,16 @@ TEST_F(DatabaseBackedPoolTest, DoesntRetryDbUnnecessarily) { EXPECT_TRUE(file->FindEnumValueByName("NO_SUCH_VALUE") == NULL); EXPECT_TRUE(file->FindServiceByName("NO_SUCH_VALUE") == NULL); EXPECT_TRUE(file->FindExtensionByName("no_such_extension") == NULL); + + EXPECT_TRUE(pool.FindFileContainingSymbol("Foo.no.such.field") == NULL); + EXPECT_TRUE(pool.FindFileContainingSymbol("Foo.no_such_field") == NULL); + EXPECT_TRUE(pool.FindMessageTypeByName("Foo.NoSuchMessageType") == NULL); + EXPECT_TRUE(pool.FindFieldByName("Foo.no_such_field") == NULL); + EXPECT_TRUE(pool.FindExtensionByName("Foo.no_such_extension") == NULL); + EXPECT_TRUE(pool.FindEnumTypeByName("Foo.NoSuchEnumType") == NULL); + EXPECT_TRUE(pool.FindEnumValueByName("Foo.NO_SUCH_VALUE") == NULL); + EXPECT_TRUE(pool.FindMethodByName("TestService.NoSuchMethod") == NULL); + EXPECT_EQ(0, call_counter.call_count_); } @@ -3950,6 +4437,219 @@ TEST_F(DatabaseBackedPoolTest, DoesntFallbackOnWrongType) { // =================================================================== +class AbortingErrorCollector : public DescriptorPool::ErrorCollector { + public: + AbortingErrorCollector() {} + + virtual void AddError( + const string &filename, + const string &element_name, + const Message *message, + ErrorLocation location, + const string &error_message) { + GOOGLE_LOG(FATAL) << "AddError() called unexpectedly: " << filename << ": " + << error_message; + } + private: + GOOGLE_DISALLOW_EVIL_CONSTRUCTORS(AbortingErrorCollector); +}; + +// A source tree containing only one file. +class SingletonSourceTree : public compiler::SourceTree { + public: + SingletonSourceTree(const string& filename, const string& contents) + : filename_(filename), contents_(contents) {} + + virtual io::ZeroCopyInputStream* Open(const string& filename) { + return filename == filename_ ? + new io::ArrayInputStream(contents_.data(), contents_.size()) : NULL; + } + + private: + const string filename_; + const string contents_; + + GOOGLE_DISALLOW_EVIL_CONSTRUCTORS(SingletonSourceTree); +}; + +const char *const kSourceLocationTestInput = + "syntax = \"proto2\";\n" + "message A {\n" + " optional int32 a = 1;\n" + " message B {\n" + " required double b = 1;\n" + " }\n" + "}\n" + "enum Indecision {\n" + " YES = 1;\n" + " NO = 2;\n" + " MAYBE = 3;\n" + "}\n" + "service S {\n" + " rpc Method(A) returns (A.B);\n" + // Put an empty line here to make the source location range match. + "\n" + "}\n"; + +class SourceLocationTest : public testing::Test { + public: + SourceLocationTest() + : source_tree_("/test/test.proto", kSourceLocationTestInput), + db_(&source_tree_), + pool_(&db_, &collector_) {} + + static string PrintSourceLocation(const SourceLocation &loc) { + return strings::Substitute("$0:$1-$2:$3", + 1 + loc.start_line, + 1 + loc.start_column, + 1 + loc.end_line, + 1 + loc.end_column); + } + + private: + AbortingErrorCollector collector_; + SingletonSourceTree source_tree_; + compiler::SourceTreeDescriptorDatabase db_; + + protected: + DescriptorPool pool_; +}; + +// TODO(adonovan): implement support for option fields and for +// subparts of declarations. + +TEST_F(SourceLocationTest, GetSourceLocation) { + SourceLocation loc; + + const FileDescriptor *file_desc = + GOOGLE_CHECK_NOTNULL(pool_.FindFileByName("/test/test.proto")); + + const Descriptor *a_desc = file_desc->FindMessageTypeByName("A"); + EXPECT_TRUE(a_desc->GetSourceLocation(&loc)); + EXPECT_EQ("2:1-7:2", PrintSourceLocation(loc)); + + const Descriptor *a_b_desc = a_desc->FindNestedTypeByName("B"); + EXPECT_TRUE(a_b_desc->GetSourceLocation(&loc)); + EXPECT_EQ("4:3-6:4", PrintSourceLocation(loc)); + + const EnumDescriptor *e_desc = file_desc->FindEnumTypeByName("Indecision"); + EXPECT_TRUE(e_desc->GetSourceLocation(&loc)); + EXPECT_EQ("8:1-12:2", PrintSourceLocation(loc)); + + const EnumValueDescriptor *yes_desc = e_desc->FindValueByName("YES"); + EXPECT_TRUE(yes_desc->GetSourceLocation(&loc)); + EXPECT_EQ("9:3-9:13", PrintSourceLocation(loc)); + + const ServiceDescriptor *s_desc = file_desc->FindServiceByName("S"); + EXPECT_TRUE(s_desc->GetSourceLocation(&loc)); + EXPECT_EQ("13:1-16:2", PrintSourceLocation(loc)); + + const MethodDescriptor *m_desc = s_desc->FindMethodByName("Method"); + EXPECT_TRUE(m_desc->GetSourceLocation(&loc)); + EXPECT_EQ("14:3-14:31", PrintSourceLocation(loc)); + +} + +// Missing SourceCodeInfo doesn't cause crash: +TEST_F(SourceLocationTest, GetSourceLocation_MissingSourceCodeInfo) { + SourceLocation loc; + + const FileDescriptor *file_desc = + GOOGLE_CHECK_NOTNULL(pool_.FindFileByName("/test/test.proto")); + + FileDescriptorProto proto; + file_desc->CopyTo(&proto); // Note, this discards the SourceCodeInfo. + EXPECT_FALSE(proto.has_source_code_info()); + + DescriptorPool bad1_pool(&pool_); + const FileDescriptor* bad1_file_desc = + GOOGLE_CHECK_NOTNULL(bad1_pool.BuildFile(proto)); + const Descriptor *bad1_a_desc = bad1_file_desc->FindMessageTypeByName("A"); + EXPECT_FALSE(bad1_a_desc->GetSourceLocation(&loc)); +} + +// Corrupt SourceCodeInfo doesn't cause crash: +TEST_F(SourceLocationTest, GetSourceLocation_BogusSourceCodeInfo) { + SourceLocation loc; + + const FileDescriptor *file_desc = + GOOGLE_CHECK_NOTNULL(pool_.FindFileByName("/test/test.proto")); + + FileDescriptorProto proto; + file_desc->CopyTo(&proto); // Note, this discards the SourceCodeInfo. + EXPECT_FALSE(proto.has_source_code_info()); + SourceCodeInfo_Location *loc_msg = + proto.mutable_source_code_info()->add_location(); + loc_msg->add_path(1); + loc_msg->add_path(2); + loc_msg->add_path(3); + loc_msg->add_span(4); + loc_msg->add_span(5); + loc_msg->add_span(6); + + DescriptorPool bad2_pool(&pool_); + const FileDescriptor* bad2_file_desc = + GOOGLE_CHECK_NOTNULL(bad2_pool.BuildFile(proto)); + const Descriptor *bad2_a_desc = bad2_file_desc->FindMessageTypeByName("A"); + EXPECT_FALSE(bad2_a_desc->GetSourceLocation(&loc)); +} + +// =================================================================== + +const char* const kCopySourceCodeInfoToTestInput = + "syntax = \"proto2\";\n" + "message Foo {}\n"; + +// Required since source code information is not preserved by +// FileDescriptorTest. +class CopySourceCodeInfoToTest : public testing::Test { + public: + CopySourceCodeInfoToTest() + : source_tree_("/test/test.proto", kCopySourceCodeInfoToTestInput), + db_(&source_tree_), + pool_(&db_, &collector_) {} + + private: + AbortingErrorCollector collector_; + SingletonSourceTree source_tree_; + compiler::SourceTreeDescriptorDatabase db_; + + protected: + DescriptorPool pool_; +}; + +TEST_F(CopySourceCodeInfoToTest, CopyTo_DoesNotCopySourceCodeInfo) { + const FileDescriptor* file_desc = + GOOGLE_CHECK_NOTNULL(pool_.FindFileByName("/test/test.proto")); + FileDescriptorProto file_desc_proto; + ASSERT_FALSE(file_desc_proto.has_source_code_info()); + + file_desc->CopyTo(&file_desc_proto); + EXPECT_FALSE(file_desc_proto.has_source_code_info()); +} + +TEST_F(CopySourceCodeInfoToTest, CopySourceCodeInfoTo) { + const FileDescriptor* file_desc = + GOOGLE_CHECK_NOTNULL(pool_.FindFileByName("/test/test.proto")); + FileDescriptorProto file_desc_proto; + ASSERT_FALSE(file_desc_proto.has_source_code_info()); + + file_desc->CopySourceCodeInfoTo(&file_desc_proto); + const SourceCodeInfo& info = file_desc_proto.source_code_info(); + ASSERT_EQ(3, info.location_size()); + // Get the Foo message location + const SourceCodeInfo_Location& foo_location = info.location(1); + ASSERT_EQ(2, foo_location.path_size()); + EXPECT_EQ(FileDescriptorProto::kMessageTypeFieldNumber, foo_location.path(0)); + EXPECT_EQ(0, foo_location.path(1)); // Foo is the first message defined + ASSERT_EQ(3, foo_location.span_size()); // Foo spans one line + EXPECT_EQ(1, foo_location.span(0)); // Foo is declared on line 1 + EXPECT_EQ(0, foo_location.span(1)); // Foo starts at column 0 + EXPECT_EQ(14, foo_location.span(2)); // Foo ends on column 14 +} + +// =================================================================== + } // namespace descriptor_unittest } // namespace protobuf diff --git a/cpp/thirdparty/protobuf-2.3.0/src/google/protobuf/dynamic_message.cc b/cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/dynamic_message.cc similarity index 95% rename from cpp/thirdparty/protobuf-2.3.0/src/google/protobuf/dynamic_message.cc rename to cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/dynamic_message.cc index c711a2da4..09bec5436 100644 --- a/cpp/thirdparty/protobuf-2.3.0/src/google/protobuf/dynamic_message.cc +++ b/cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/dynamic_message.cc @@ -123,7 +123,9 @@ int FieldSpaceUsed(const FieldDescriptor* field) { case FD::CPPTYPE_FLOAT : return sizeof(float ); case FD::CPPTYPE_BOOL : return sizeof(bool ); case FD::CPPTYPE_ENUM : return sizeof(int ); - case FD::CPPTYPE_MESSAGE: return sizeof(Message*); + + case FD::CPPTYPE_MESSAGE: + return sizeof(Message*); case FD::CPPTYPE_STRING: switch (field->options().ctype()) { @@ -178,7 +180,17 @@ class DynamicMessage : public Message { // important (the prototype must be deleted *before* the offsets). scoped_array offsets; scoped_ptr reflection; - scoped_ptr prototype; + // Don't use a scoped_ptr to hold the prototype: the destructor for + // DynamicMessage needs to know whether it is the prototype, and does so by + // looking back at this field. This would assume details about the + // implementation of scoped_ptr. + const DynamicMessage* prototype; + + TypeInfo() : prototype(NULL) {} + + ~TypeInfo() { + delete prototype; + } }; DynamicMessage(const TypeInfo* type_info); @@ -368,11 +380,12 @@ DynamicMessage::~DynamicMessage() { break; } } - } else if ((field->cpp_type() == FieldDescriptor::CPPTYPE_MESSAGE) && - !is_prototype()) { - Message* message = *reinterpret_cast(field_ptr); - if (message != NULL) { - delete message; + } else if (field->cpp_type() == FieldDescriptor::CPPTYPE_MESSAGE) { + if (!is_prototype()) { + Message* message = *reinterpret_cast(field_ptr); + if (message != NULL) { + delete message; + } } } } @@ -403,7 +416,7 @@ void DynamicMessage::CrossLinkPrototypes() { } Message* DynamicMessage::New() const { - void* new_base = reinterpret_cast(operator new(type_info_->size)); + void* new_base = operator new(type_info_->size); memset(new_base, 0, type_info_->size); return new(new_base) DynamicMessage(type_info_); } @@ -465,7 +478,7 @@ const Message* DynamicMessageFactory::GetPrototypeNoLock( const DynamicMessage::TypeInfo** target = &prototypes_->map_[type]; if (*target != NULL) { // Already exists. - return (*target)->prototype.get(); + return (*target)->prototype; } DynamicMessage::TypeInfo* type_info = new DynamicMessage::TypeInfo; @@ -533,13 +546,13 @@ const Message* DynamicMessageFactory::GetPrototypeNoLock( void* base = operator new(size); memset(base, 0, size); DynamicMessage* prototype = new(base) DynamicMessage(type_info); - type_info->prototype.reset(prototype); + type_info->prototype = prototype; // Construct the reflection object. type_info->reflection.reset( new GeneratedMessageReflection( type_info->type, - type_info->prototype.get(), + type_info->prototype, type_info->offsets.get(), type_info->has_bits_offset, type_info->unknown_fields_offset, diff --git a/cpp/thirdparty/protobuf-2.3.0/src/google/protobuf/dynamic_message.h b/cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/dynamic_message.h similarity index 97% rename from cpp/thirdparty/protobuf-2.3.0/src/google/protobuf/dynamic_message.h rename to cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/dynamic_message.h index 81dd2c639..b3d1e5d28 100644 --- a/cpp/thirdparty/protobuf-2.3.0/src/google/protobuf/dynamic_message.h +++ b/cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/dynamic_message.h @@ -68,7 +68,7 @@ class DescriptorPool; // descriptor.h class LIBPROTOBUF_EXPORT DynamicMessageFactory : public MessageFactory { public: // Construct a DynamicMessageFactory that will search for extensions in - // the DescriptorPool in which the exendee is defined. + // the DescriptorPool in which the extendee is defined. DynamicMessageFactory(); // Construct a DynamicMessageFactory that will search for extensions in @@ -102,7 +102,7 @@ class LIBPROTOBUF_EXPORT DynamicMessageFactory : public MessageFactory { // object. The returned object remains property of the factory and will // be destroyed when the factory is destroyed. Also, any objects created // by calling the prototype's New() method share some data with the - // prototype, so these must be destoyed before the DynamicMessageFactory + // prototype, so these must be destroyed before the DynamicMessageFactory // is destroyed. // // The given descriptor must outlive the returned message, and hence must diff --git a/cpp/thirdparty/protobuf-2.3.0/src/google/protobuf/dynamic_message_unittest.cc b/cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/dynamic_message_unittest.cc similarity index 96% rename from cpp/thirdparty/protobuf-2.3.0/src/google/protobuf/dynamic_message_unittest.cc rename to cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/dynamic_message_unittest.cc index 41b89ab52..e46159702 100644 --- a/cpp/thirdparty/protobuf-2.3.0/src/google/protobuf/dynamic_message_unittest.cc +++ b/cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/dynamic_message_unittest.cc @@ -73,11 +73,15 @@ class DynamicMessageTest : public testing::Test { // unittest_import.proto. FileDescriptorProto unittest_file; FileDescriptorProto unittest_import_file; + FileDescriptorProto unittest_import_public_file; unittest::TestAllTypes::descriptor()->file()->CopyTo(&unittest_file); unittest_import::ImportMessage::descriptor()->file()->CopyTo( &unittest_import_file); + unittest_import::PublicImportMessage::descriptor()->file()->CopyTo( + &unittest_import_public_file); + ASSERT_TRUE(pool_.BuildFile(unittest_import_public_file) != NULL); ASSERT_TRUE(pool_.BuildFile(unittest_import_file) != NULL); ASSERT_TRUE(pool_.BuildFile(unittest_file) != NULL); diff --git a/cpp/thirdparty/protobuf-2.3.0/src/google/protobuf/extension_set.cc b/cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/extension_set.cc similarity index 87% rename from cpp/thirdparty/protobuf-2.3.0/src/google/protobuf/extension_set.cc rename to cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/extension_set.cc index 6084885b0..2cbba8f54 100644 --- a/cpp/thirdparty/protobuf-2.3.0/src/google/protobuf/extension_set.cc +++ b/cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/extension_set.cc @@ -71,7 +71,7 @@ void DeleteRegistry() { void InitRegistry() { registry_ = new ExtensionRegistry; - internal::OnShutdown(&DeleteRegistry); + OnShutdown(&DeleteRegistry); } // This function is only called at startup, so there is no need for thread- @@ -180,12 +180,35 @@ bool ExtensionSet::Has(int number) const { return !iter->second.is_cleared; } +int ExtensionSet::NumExtensions() const { + int result = 0; + for (map::const_iterator iter = extensions_.begin(); + iter != extensions_.end(); ++iter) { + if (!iter->second.is_cleared) { + ++result; + } + } + return result; +} + int ExtensionSet::ExtensionSize(int number) const { map::const_iterator iter = extensions_.find(number); if (iter == extensions_.end()) return false; return iter->second.GetSize(); } +FieldType ExtensionSet::ExtensionType(int number) const { + map::const_iterator iter = extensions_.find(number); + if (iter == extensions_.end()) { + GOOGLE_LOG(DFATAL) << "Don't lookup extension types if they aren't present (1). "; + return 0; + } + if (iter->second.is_cleared) { + GOOGLE_LOG(DFATAL) << "Don't lookup extension types if they aren't present (2). "; + } + return iter->second.type; +} + void ExtensionSet::ClearExtension(int number) { map::iterator iter = extensions_.find(number); if (iter == extensions_.end()) return; @@ -281,6 +304,14 @@ PRIMITIVE_ACCESSORS( BOOL, bool, Bool) #undef PRIMITIVE_ACCESSORS +void* ExtensionSet::MutableRawRepeatedField(int number) { + // We assume that all the RepeatedField<>* pointers have the same + // size and alignment within the anonymous union in Extension. + map::const_iterator iter = extensions_.find(number); + GOOGLE_CHECK(iter != extensions_.end()) << "no extension numbered " << number; + return iter->second.repeated_int32_value; +} + // ------------------------------------------------------------------- // Enums @@ -410,7 +441,11 @@ const MessageLite& ExtensionSet::GetMessage( return default_value; } else { GOOGLE_DCHECK_TYPE(iter->second, OPTIONAL, MESSAGE); - return *iter->second.message_value; + if (iter->second.is_lazy) { + return iter->second.lazymessage_value->GetMessage(default_value); + } else { + return *iter->second.message_value; + } } } @@ -427,12 +462,19 @@ MessageLite* ExtensionSet::MutableMessage(int number, FieldType type, extension->type = type; GOOGLE_DCHECK_EQ(cpp_type(extension->type), WireFormatLite::CPPTYPE_MESSAGE); extension->is_repeated = false; + extension->is_lazy = false; extension->message_value = prototype.New(); + extension->is_cleared = false; + return extension->message_value; } else { GOOGLE_DCHECK_TYPE(*extension, OPTIONAL, MESSAGE); + extension->is_cleared = false; + if (extension->is_lazy) { + return extension->lazymessage_value->MutableMessage(prototype); + } else { + return extension->message_value; + } } - extension->is_cleared = false; - return extension->message_value; } // Defined in extension_set_heavy.cc. @@ -440,6 +482,56 @@ MessageLite* ExtensionSet::MutableMessage(int number, FieldType type, // const Descriptor* message_type, // MessageFactory* factory) +void ExtensionSet::SetAllocatedMessage(int number, FieldType type, + const FieldDescriptor* descriptor, + MessageLite* message) { + if (message == NULL) { + ClearExtension(number); + return; + } + Extension* extension; + if (MaybeNewExtension(number, descriptor, &extension)) { + extension->type = type; + GOOGLE_DCHECK_EQ(cpp_type(extension->type), WireFormatLite::CPPTYPE_MESSAGE); + extension->is_repeated = false; + extension->is_lazy = false; + extension->message_value = message; + } else { + GOOGLE_DCHECK_TYPE(*extension, OPTIONAL, MESSAGE); + if (extension->is_lazy) { + extension->lazymessage_value->SetAllocatedMessage(message); + } else { + delete extension->message_value; + extension->message_value = message; + } + } + extension->is_cleared = false; +} + +MessageLite* ExtensionSet::ReleaseMessage(int number, + const MessageLite& prototype) { + map::iterator iter = extensions_.find(number); + if (iter == extensions_.end()) { + // Not present. Return NULL. + return NULL; + } else { + GOOGLE_DCHECK_TYPE(iter->second, OPTIONAL, MESSAGE); + MessageLite* ret = NULL; + if (iter->second.is_lazy) { + ret = iter->second.lazymessage_value->ReleaseMessage(prototype); + delete iter->second.lazymessage_value; + } else { + ret = iter->second.message_value; + } + extensions_.erase(number); + return ret; + } +} + +// Defined in extension_set_heavy.cc. +// MessageLite* ExtensionSet::ReleaseMessage(const FieldDescriptor* descriptor, +// MessageFactory* factory); + const MessageLite& ExtensionSet::GetRepeatedMessage( int number, int index) const { map::const_iterator iter = extensions_.find(number); @@ -472,7 +564,7 @@ MessageLite* ExtensionSet::AddMessage(int number, FieldType type, // RepeatedPtrField does not know how to Add() since it cannot // allocate an abstract object, so we have to be tricky. MessageLite* result = extension->repeated_message_value - ->AddFromCleared >(); + ->AddFromCleared >(); if (result == NULL) { result = prototype.New(); extension->repeated_message_value->AddAllocated(result); @@ -528,6 +620,16 @@ void ExtensionSet::RemoveLast(int number) { } } +MessageLite* ExtensionSet::ReleaseLast(int number) { + map::iterator iter = extensions_.find(number); + GOOGLE_CHECK(iter != extensions_.end()) << "Index out-of-bounds (field is empty)."; + + Extension* extension = &iter->second; + GOOGLE_DCHECK(extension->is_repeated); + GOOGLE_DCHECK(cpp_type(extension->type) == WireFormatLite::CPPTYPE_MESSAGE); + return extension->repeated_message_value->ReleaseLast(); +} + void ExtensionSet::SwapElements(int number, int index1, int index2) { map::iterator iter = extensions_.find(number); GOOGLE_CHECK(iter != extensions_.end()) << "Index out-of-bounds (field is empty)."; @@ -590,9 +692,11 @@ void ExtensionSet::MergeFrom(const ExtensionSet& other) { if (is_new) { // Extension did not already exist in set. extension->type = other_extension.type; + extension->is_packed = other_extension.is_packed; extension->is_repeated = true; } else { GOOGLE_DCHECK_EQ(extension->type, other_extension.type); + GOOGLE_DCHECK_EQ(extension->is_packed, other_extension.is_packed); GOOGLE_DCHECK(extension->is_repeated); } @@ -663,12 +767,55 @@ void ExtensionSet::MergeFrom(const ExtensionSet& other) { *other_extension.string_value, other_extension.descriptor); break; - case WireFormatLite::CPPTYPE_MESSAGE: - MutableMessage(iter->first, other_extension.type, - *other_extension.message_value, - other_extension.descriptor) - ->CheckTypeAndMergeFrom(*other_extension.message_value); + case WireFormatLite::CPPTYPE_MESSAGE: { + Extension* extension; + bool is_new = MaybeNewExtension(iter->first, + other_extension.descriptor, + &extension); + if (is_new) { + extension->type = other_extension.type; + extension->is_packed = other_extension.is_packed; + extension->is_repeated = false; + if (other_extension.is_lazy) { + extension->is_lazy = true; + extension->lazymessage_value = + other_extension.lazymessage_value->New(); + extension->lazymessage_value->MergeFrom( + *other_extension.lazymessage_value); + } else { + extension->is_lazy = false; + extension->message_value = + other_extension.message_value->New(); + extension->message_value->CheckTypeAndMergeFrom( + *other_extension.message_value); + } + } else { + GOOGLE_DCHECK_EQ(extension->type, other_extension.type); + GOOGLE_DCHECK_EQ(extension->is_packed,other_extension.is_packed); + GOOGLE_DCHECK(!extension->is_repeated); + if (other_extension.is_lazy) { + if (extension->is_lazy) { + extension->lazymessage_value->MergeFrom( + *other_extension.lazymessage_value); + } else { + extension->message_value->CheckTypeAndMergeFrom( + other_extension.lazymessage_value->GetMessage( + *extension->message_value)); + } + } else { + if (extension->is_lazy) { + extension->lazymessage_value->MutableMessage( + *other_extension.message_value)->CheckTypeAndMergeFrom( + *other_extension.message_value); + } else { + extension->message_value->CheckTypeAndMergeFrom( + *other_extension.message_value); + } + } + } + extension->is_cleared = false; break; + } } } } @@ -694,7 +841,11 @@ bool ExtensionSet::IsInitialized() const { } } else { if (!extension.is_cleared) { - if (!extension.message_value->IsInitialized()) return false; + if (extension.is_lazy) { + if (!extension.lazymessage_value->IsInitialized()) return false; + } else { + if (!extension.message_value->IsInitialized()) return false; + } } } } @@ -703,27 +854,42 @@ bool ExtensionSet::IsInitialized() const { return true; } -bool ExtensionSet::ParseField(uint32 tag, io::CodedInputStream* input, - ExtensionFinder* extension_finder, - FieldSkipper* field_skipper) { - int number = WireFormatLite::GetTagFieldNumber(tag); +bool ExtensionSet::FindExtensionInfoFromTag( + uint32 tag, ExtensionFinder* extension_finder, + int* field_number, ExtensionInfo* extension) { + *field_number = WireFormatLite::GetTagFieldNumber(tag); WireFormatLite::WireType wire_type = WireFormatLite::GetTagWireType(tag); - ExtensionInfo extension; bool is_unknown; - if (!extension_finder->Find(number, &extension)) { + if (!extension_finder->Find(*field_number, extension)) { is_unknown = true; - } else if (extension.is_packed) { + } else if (extension->is_packed) { is_unknown = (wire_type != WireFormatLite::WIRETYPE_LENGTH_DELIMITED); } else { WireFormatLite::WireType expected_wire_type = - WireFormatLite::WireTypeForFieldType(real_type(extension.type)); + WireFormatLite::WireTypeForFieldType(real_type(extension->type)); is_unknown = (wire_type != expected_wire_type); } + return !is_unknown; +} - if (is_unknown) { - field_skipper->SkipField(input, tag); - } else if (extension.is_packed) { +bool ExtensionSet::ParseField(uint32 tag, io::CodedInputStream* input, + ExtensionFinder* extension_finder, + FieldSkipper* field_skipper) { + int number; + ExtensionInfo extension; + if (!FindExtensionInfoFromTag(tag, extension_finder, &number, &extension)) { + return field_skipper->SkipField(input, tag); + } else { + return ParseFieldWithExtensionInfo(number, extension, input, field_skipper); + } +} + +bool ExtensionSet::ParseFieldWithExtensionInfo( + int number, const ExtensionInfo& extension, + io::CodedInputStream* input, + FieldSkipper* field_skipper) { + if (extension.is_packed) { uint32 size; if (!input->ReadVarint32(&size)) return false; io::CodedInputStream::Limit limit = input->PushLimit(size); @@ -840,8 +1006,8 @@ bool ExtensionSet::ParseField(uint32 tag, io::CodedInputStream* input, case WireFormatLite::TYPE_BYTES: { string* value = extension.is_repeated ? - AddString(number, WireFormatLite::TYPE_STRING, extension.descriptor) : - MutableString(number, WireFormatLite::TYPE_STRING, + AddString(number, WireFormatLite::TYPE_BYTES, extension.descriptor) : + MutableString(number, WireFormatLite::TYPE_BYTES, extension.descriptor); if (!WireFormatLite::ReadBytes(input, value)) return false; break; @@ -884,120 +1050,11 @@ bool ExtensionSet::ParseField(uint32 tag, io::CodedInputStream* input, // const MessageLite* containing_type, // UnknownFieldSet* unknown_fields) -bool ExtensionSet::ParseMessageSet(io::CodedInputStream* input, - ExtensionFinder* extension_finder, - FieldSkipper* field_skipper) { - while (true) { - uint32 tag = input->ReadTag(); - switch (tag) { - case 0: - return true; - case WireFormatLite::kMessageSetItemStartTag: - if (!ParseMessageSetItem(input, extension_finder, field_skipper)) { - return false; - } - break; - default: - if (!ParseField(tag, input, extension_finder, field_skipper)) { - return false; - } - break; - } - } -} - -bool ExtensionSet::ParseMessageSet(io::CodedInputStream* input, - const MessageLite* containing_type) { - FieldSkipper skipper; - GeneratedExtensionFinder finder(containing_type); - return ParseMessageSet(input, &finder, &skipper); -} - // Defined in extension_set_heavy.cc. // bool ExtensionSet::ParseMessageSet(io::CodedInputStream* input, // const MessageLite* containing_type, // UnknownFieldSet* unknown_fields); -bool ExtensionSet::ParseMessageSetItem(io::CodedInputStream* input, - ExtensionFinder* extension_finder, - FieldSkipper* field_skipper) { - // TODO(kenton): It would be nice to share code between this and - // WireFormatLite::ParseAndMergeMessageSetItem(), but I think the - // differences would be hard to factor out. - - // This method parses a group which should contain two fields: - // required int32 type_id = 2; - // required data message = 3; - - // Once we see a type_id, we'll construct a fake tag for this extension - // which is the tag it would have had under the proto2 extensions wire - // format. - uint32 fake_tag = 0; - - // If we see message data before the type_id, we'll append it to this so - // we can parse it later. This will probably never happen in practice, - // as no MessageSet encoder I know of writes the message before the type ID. - // But, it's technically valid so we should allow it. - // TODO(kenton): Use a Cord instead? Do I care? - string message_data; - - while (true) { - uint32 tag = input->ReadTag(); - if (tag == 0) return false; - - switch (tag) { - case WireFormatLite::kMessageSetTypeIdTag: { - uint32 type_id; - if (!input->ReadVarint32(&type_id)) return false; - fake_tag = WireFormatLite::MakeTag(type_id, - WireFormatLite::WIRETYPE_LENGTH_DELIMITED); - - if (!message_data.empty()) { - // We saw some message data before the type_id. Have to parse it - // now. - io::CodedInputStream sub_input( - reinterpret_cast(message_data.data()), - message_data.size()); - if (!ParseField(fake_tag, &sub_input, - extension_finder, field_skipper)) { - return false; - } - message_data.clear(); - } - - break; - } - - case WireFormatLite::kMessageSetMessageTag: { - if (fake_tag == 0) { - // We haven't seen a type_id yet. Append this data to message_data. - string temp; - uint32 length; - if (!input->ReadVarint32(&length)) return false; - if (!input->ReadString(&temp, length)) return false; - message_data.append(temp); - } else { - // Already saw type_id, so we can parse this directly. - if (!ParseField(fake_tag, input, - extension_finder, field_skipper)) { - return false; - } - } - - break; - } - - case WireFormatLite::kMessageSetItemEndTag: { - return true; - } - - default: { - if (!field_skipper->SkipField(input, tag)) return false; - } - } - } -} - void ExtensionSet::SerializeWithCachedSizes( int start_field_number, int end_field_number, io::CodedOutputStream* output) const { @@ -1009,14 +1066,6 @@ void ExtensionSet::SerializeWithCachedSizes( } } -void ExtensionSet::SerializeMessageSetWithCachedSizes( - io::CodedOutputStream* output) const { - map::const_iterator iter; - for (iter = extensions_.begin(); iter != extensions_.end(); ++iter) { - iter->second.SerializeMessageSetItemWithCachedSizes(iter->first, output); - } -} - int ExtensionSet::ByteSize() const { int total_size = 0; @@ -1028,17 +1077,6 @@ int ExtensionSet::ByteSize() const { return total_size; } -int ExtensionSet::MessageSetByteSize() const { - int total_size = 0; - - for (map::const_iterator iter = extensions_.begin(); - iter != extensions_.end(); ++iter) { - total_size += iter->second.MessageSetItemByteSize(iter->first); - } - - return total_size; -} - // Defined in extension_set_heavy.cc. // int ExtensionSet::SpaceUsedExcludingSelf() const @@ -1082,7 +1120,11 @@ void ExtensionSet::Extension::Clear() { string_value->clear(); break; case WireFormatLite::CPPTYPE_MESSAGE: - message_value->Clear(); + if (is_lazy) { + lazymessage_value->Clear(); + } else { + message_value->Clear(); + } break; default: // No need to do anything. Get*() will return the default value @@ -1194,40 +1236,18 @@ void ExtensionSet::Extension::SerializeFieldWithCachedSizes( HANDLE_TYPE( BYTES, Bytes, *string_value); HANDLE_TYPE( ENUM, Enum, enum_value); HANDLE_TYPE( GROUP, Group, *message_value); - HANDLE_TYPE( MESSAGE, Message, *message_value); #undef HANDLE_TYPE + case WireFormatLite::TYPE_MESSAGE: + if (is_lazy) { + lazymessage_value->WriteMessage(number, output); + } else { + WireFormatLite::WriteMessage(number, *message_value, output); + } + break; } } } -void ExtensionSet::Extension::SerializeMessageSetItemWithCachedSizes( - int number, - io::CodedOutputStream* output) const { - if (type != WireFormatLite::TYPE_MESSAGE || is_repeated) { - // Not a valid MessageSet extension, but serialize it the normal way. - SerializeFieldWithCachedSizes(number, output); - return; - } - - if (is_cleared) return; - - // Start group. - output->WriteTag(WireFormatLite::kMessageSetItemStartTag); - - // Write type ID. - WireFormatLite::WriteUInt32(WireFormatLite::kMessageSetTypeIdNumber, - number, - output); - // Write message. - WireFormatLite::WriteMessageMaybeToArray( - WireFormatLite::kMessageSetMessageNumber, - *message_value, - output); - - // End group. - output->WriteTag(WireFormatLite::kMessageSetItemEndTag); -} - int ExtensionSet::Extension::ByteSize(int number) const { int result = 0; @@ -1341,8 +1361,16 @@ int ExtensionSet::Extension::ByteSize(int number) const { HANDLE_TYPE( BYTES, Bytes, *string_value); HANDLE_TYPE( ENUM, Enum, enum_value); HANDLE_TYPE( GROUP, Group, *message_value); - HANDLE_TYPE( MESSAGE, Message, *message_value); #undef HANDLE_TYPE + case WireFormatLite::TYPE_MESSAGE: { + if (is_lazy) { + int size = lazymessage_value->ByteSize(); + result += io::CodedOutputStream::VarintSize32(size) + size; + } else { + result += WireFormatLite::MessageSize(*message_value); + } + break; + } // Stuff with fixed size. #define HANDLE_TYPE(UPPERCASE, CAMELCASE) \ @@ -1363,29 +1391,6 @@ int ExtensionSet::Extension::ByteSize(int number) const { return result; } -int ExtensionSet::Extension::MessageSetItemByteSize(int number) const { - if (type != WireFormatLite::TYPE_MESSAGE || is_repeated) { - // Not a valid MessageSet extension, but compute the byte size for it the - // normal way. - return ByteSize(number); - } - - if (is_cleared) return 0; - - int our_size = WireFormatLite::kMessageSetItemTagsSize; - - // type_id - our_size += io::CodedOutputStream::VarintSize32(number); - - // message - int message_size = message_value->ByteSize(); - - our_size += io::CodedOutputStream::VarintSize32(message_size); - our_size += message_size; - - return our_size; -} - int ExtensionSet::Extension::GetSize() const { GOOGLE_DCHECK(is_repeated); switch (cpp_type(type)) { @@ -1436,7 +1441,11 @@ void ExtensionSet::Extension::Free() { delete string_value; break; case WireFormatLite::CPPTYPE_MESSAGE: - delete message_value; + if (is_lazy) { + delete lazymessage_value; + } else { + delete message_value; + } break; default: break; diff --git a/cpp/thirdparty/protobuf-2.3.0/src/google/protobuf/extension_set.h b/cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/extension_set.h similarity index 81% rename from cpp/thirdparty/protobuf-2.3.0/src/google/protobuf/extension_set.h rename to cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/extension_set.h index 14d5d1508..df8f1f368 100644 --- a/cpp/thirdparty/protobuf-2.3.0/src/google/protobuf/extension_set.h +++ b/cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/extension_set.h @@ -39,11 +39,11 @@ #define GOOGLE_PROTOBUF_EXTENSION_SET_H__ #include -#include #include #include #include + #include namespace google { @@ -89,8 +89,8 @@ typedef bool EnumValidityFuncWithArg(const void* arg, int number); // Information about a registered extension. struct ExtensionInfo { inline ExtensionInfo() {} - inline ExtensionInfo(FieldType type, bool is_repeated, bool is_packed) - : type(type), is_repeated(is_repeated), is_packed(is_packed), + inline ExtensionInfo(FieldType type_param, bool isrepeated, bool ispacked) + : type(type_param), is_repeated(isrepeated), is_packed(ispacked), descriptor(NULL) {} FieldType type; @@ -214,6 +214,8 @@ class LIBPROTOBUF_EXPORT ExtensionSet { bool Has(int number) const; int ExtensionSize(int number) const; // Size of a repeated extension. + int NumExtensions() const; // The number of extensions + FieldType ExtensionType(int number) const; void ClearExtension(int number); // singular fields ------------------------------------------------- @@ -250,10 +252,21 @@ class LIBPROTOBUF_EXPORT ExtensionSet { const MessageLite& prototype, desc); MessageLite* MutableMessage(const FieldDescriptor* decsriptor, MessageFactory* factory); + // Adds the given message to the ExtensionSet, taking ownership of the + // message object. Existing message with the same number will be deleted. + // If "message" is NULL, this is equivalent to "ClearExtension(number)". + void SetAllocatedMessage(int number, FieldType type, + const FieldDescriptor* descriptor, + MessageLite* message); + MessageLite* ReleaseMessage(int number, const MessageLite& prototype); + MessageLite* ReleaseMessage(const FieldDescriptor* descriptor, + MessageFactory* factory); #undef desc // repeated fields ------------------------------------------------- + void* MutableRawRepeatedField(int number); + int32 GetRepeatedInt32 (int number, int index) const; int64 GetRepeatedInt64 (int number, int index) const; uint32 GetRepeatedUInt32(int number, int index) const; @@ -295,6 +308,7 @@ class LIBPROTOBUF_EXPORT ExtensionSet { #undef desc void RemoveLast(int number); + MessageLite* ReleaseLast(int number); void SwapElements(int number, int index1, int index2); // ----------------------------------------------------------------- @@ -311,18 +325,18 @@ class LIBPROTOBUF_EXPORT ExtensionSet { void Swap(ExtensionSet* other); bool IsInitialized() const; - // Parses a single extension from the input. The input should start out - // positioned immediately after the tag. |containing_type| is the default - // instance for the containing message; it is used only to look up the - // extension by number. See RegisterExtension(), above. Unlike the other - // methods of ExtensionSet, this only works for generated message types -- - // it looks up extensions registered using RegisterExtension(). + // Parses a single extension from the input. The input should start out + // positioned immediately after the tag. bool ParseField(uint32 tag, io::CodedInputStream* input, ExtensionFinder* extension_finder, FieldSkipper* field_skipper); // Specific versions for lite or full messages (constructs the appropriate - // FieldSkipper automatically). + // FieldSkipper automatically). |containing_type| is the default + // instance for the containing message; it is used only to look up the + // extension by number. See RegisterExtension(), above. Unlike the other + // methods of ExtensionSet, this only works for generated message types -- + // it looks up extensions registered using RegisterExtension(). bool ParseField(uint32 tag, io::CodedInputStream* input, const MessageLite* containing_type); bool ParseField(uint32 tag, io::CodedInputStream* input, @@ -381,18 +395,49 @@ class LIBPROTOBUF_EXPORT ExtensionSet { private: + // Interface of a lazily parsed singular message extension. + class LIBPROTOBUF_EXPORT LazyMessageExtension { + public: + LazyMessageExtension() {} + virtual ~LazyMessageExtension() {} + + virtual LazyMessageExtension* New() const = 0; + virtual const MessageLite& GetMessage( + const MessageLite& prototype) const = 0; + virtual MessageLite* MutableMessage(const MessageLite& prototype) = 0; + virtual void SetAllocatedMessage(MessageLite *message) = 0; + virtual MessageLite* ReleaseMessage(const MessageLite& prototype) = 0; + + virtual bool IsInitialized() const = 0; + virtual int ByteSize() const = 0; + virtual int SpaceUsed() const = 0; + + virtual void MergeFrom(const LazyMessageExtension& other) = 0; + virtual void Clear() = 0; + + virtual bool ReadMessage(const MessageLite& prototype, + io::CodedInputStream* input) = 0; + virtual void WriteMessage(int number, + io::CodedOutputStream* output) const = 0; + virtual uint8* WriteMessageToArray(int number, uint8* target) const = 0; + private: + GOOGLE_DISALLOW_EVIL_CONSTRUCTORS(LazyMessageExtension); + }; struct Extension { + // The order of these fields packs Extension into 24 bytes when using 8 + // byte alignment. Consider this when adding or removing fields here. union { - int32 int32_value; - int64 int64_value; - uint32 uint32_value; - uint64 uint64_value; - float float_value; - double double_value; - bool bool_value; - int enum_value; - string* string_value; - MessageLite* message_value; + int32 int32_value; + int64 int64_value; + uint32 uint32_value; + uint64 uint64_value; + float float_value; + double double_value; + bool bool_value; + int enum_value; + string* string_value; + MessageLite* message_value; + LazyMessageExtension* lazymessage_value; RepeatedField * repeated_int32_value; RepeatedField * repeated_int64_value; @@ -415,21 +460,28 @@ class LIBPROTOBUF_EXPORT ExtensionSet { // removing it from the map, we just set is_cleared = true. This has no // meaning for repeated types; for those, the size of the RepeatedField // simply becomes zero when cleared. - bool is_cleared; + bool is_cleared : 4; + + // For singular message types, indicates whether lazy parsing is enabled + // for this extension. This field is only valid when type == TYPE_MESSAGE + // and !is_repeated because we only support lazy parsing for singular + // message types currently. If is_lazy = true, the extension is stored in + // lazymessage_value. Otherwise, the extension will be message_value. + bool is_lazy : 4; // For repeated types, this indicates if the [packed=true] option is set. bool is_packed; - // The descriptor for this extension, if one exists and is known. May be - // NULL. Must not be NULL if the descriptor for the extension does not - // live in the same pool as the descriptor for the containing type. - const FieldDescriptor* descriptor; - // For packed fields, the size of the packed data is recorded here when // ByteSize() is called then used during serialization. // TODO(kenton): Use atomic when C++ supports it. mutable int cached_size; + // The descriptor for this extension, if one exists and is known. May be + // NULL. Must not be NULL if the descriptor for the extension does not + // live in the same pool as the descriptor for the containing type. + const FieldDescriptor* descriptor; + // Some helper methods for operations on a single Extension. void SerializeFieldWithCachedSizes( int number, @@ -451,6 +503,26 @@ class LIBPROTOBUF_EXPORT ExtensionSet { int SpaceUsedExcludingSelf() const; }; + + // Returns true and fills field_number and extension if extension is found. + bool FindExtensionInfoFromTag(uint32 tag, ExtensionFinder* extension_finder, + int* field_number, ExtensionInfo* extension); + + // Parses a single extension from the input. The input should start out + // positioned immediately after the wire tag. This method is called in + // ParseField() after field number is extracted from the wire tag and + // ExtensionInfo is found by the field number. + bool ParseFieldWithExtensionInfo(int field_number, + const ExtensionInfo& extension, + io::CodedInputStream* input, + FieldSkipper* field_skipper); + + // Like ParseField(), but this method may parse singular message extensions + // lazily depending on the value of FLAGS_eagerly_parse_message_sets. + bool ParseFieldMaybeLazily(uint32 tag, io::CodedInputStream* input, + ExtensionFinder* extension_finder, + FieldSkipper* field_skipper); + // Gets the extension with the given number, creating it if it does not // already exist. Returns true if the extension did not already exist. bool MaybeNewExtension(int number, const FieldDescriptor* descriptor, @@ -479,7 +551,7 @@ class LIBPROTOBUF_EXPORT ExtensionSet { // only contain a small number of extensions whereas hash_map is optimized // for 100 elements or more. Also, we want AppendToList() to order fields // by field number. - map extensions_; + std::map extensions_; GOOGLE_DISALLOW_EVIL_CONSTRUCTORS(ExtensionSet); }; @@ -718,6 +790,15 @@ class MessageTypeTraits { return static_cast( set->MutableMessage(number, field_type, Type::default_instance(), NULL)); } + static inline void SetAllocated(int number, FieldType field_type, + MutableType message, ExtensionSet* set) { + set->SetAllocatedMessage(number, field_type, NULL, message); + } + static inline MutableType Release(int number, FieldType field_type, + ExtensionSet* set) { + return static_cast(set->ReleaseMessage( + number, Type::default_instance())); + } }; template @@ -785,113 +866,137 @@ class ExtensionIdentifier { // causes problems if the class has a nested message or enum type with that // name and "_TypeTraits" is technically reserved for the C++ library since // it starts with an underscore followed by a capital letter. +// +// For similar reason, we use "_field_type" and "_is_packed" as parameter names +// below, so that "field_type" and "is_packed" can be used as field names. #define GOOGLE_PROTOBUF_EXTENSION_ACCESSORS(CLASSNAME) \ /* Has, Size, Clear */ \ template \ + ::google::protobuf::internal::FieldType _field_type, \ + bool _is_packed> \ inline bool HasExtension( \ const ::google::protobuf::internal::ExtensionIdentifier< \ - CLASSNAME, _proto_TypeTraits, field_type, is_packed>& id) const { \ + CLASSNAME, _proto_TypeTraits, _field_type, _is_packed>& id) const { \ return _extensions_.Has(id.number()); \ } \ \ template \ + ::google::protobuf::internal::FieldType _field_type, \ + bool _is_packed> \ inline void ClearExtension( \ const ::google::protobuf::internal::ExtensionIdentifier< \ - CLASSNAME, _proto_TypeTraits, field_type, is_packed>& id) { \ + CLASSNAME, _proto_TypeTraits, _field_type, _is_packed>& id) { \ _extensions_.ClearExtension(id.number()); \ } \ \ template \ + ::google::protobuf::internal::FieldType _field_type, \ + bool _is_packed> \ inline int ExtensionSize( \ const ::google::protobuf::internal::ExtensionIdentifier< \ - CLASSNAME, _proto_TypeTraits, field_type, is_packed>& id) const { \ + CLASSNAME, _proto_TypeTraits, _field_type, _is_packed>& id) const { \ return _extensions_.ExtensionSize(id.number()); \ } \ \ /* Singular accessors */ \ template \ + ::google::protobuf::internal::FieldType _field_type, \ + bool _is_packed> \ inline typename _proto_TypeTraits::ConstType GetExtension( \ const ::google::protobuf::internal::ExtensionIdentifier< \ - CLASSNAME, _proto_TypeTraits, field_type, is_packed>& id) const { \ + CLASSNAME, _proto_TypeTraits, _field_type, _is_packed>& id) const { \ return _proto_TypeTraits::Get(id.number(), _extensions_, \ id.default_value()); \ } \ \ template \ + ::google::protobuf::internal::FieldType _field_type, \ + bool _is_packed> \ inline typename _proto_TypeTraits::MutableType MutableExtension( \ const ::google::protobuf::internal::ExtensionIdentifier< \ - CLASSNAME, _proto_TypeTraits, field_type, is_packed>& id) { \ - return _proto_TypeTraits::Mutable(id.number(), field_type, &_extensions_);\ + CLASSNAME, _proto_TypeTraits, _field_type, _is_packed>& id) { \ + return _proto_TypeTraits::Mutable(id.number(), _field_type, \ + &_extensions_); \ } \ \ template \ + ::google::protobuf::internal::FieldType _field_type, \ + bool _is_packed> \ inline void SetExtension( \ const ::google::protobuf::internal::ExtensionIdentifier< \ - CLASSNAME, _proto_TypeTraits, field_type, is_packed>& id, \ + CLASSNAME, _proto_TypeTraits, _field_type, _is_packed>& id, \ typename _proto_TypeTraits::ConstType value) { \ - _proto_TypeTraits::Set(id.number(), field_type, value, &_extensions_); \ + _proto_TypeTraits::Set(id.number(), _field_type, value, &_extensions_); \ + } \ + \ + template \ + inline void SetAllocatedExtension( \ + const ::google::protobuf::internal::ExtensionIdentifier< \ + CLASSNAME, _proto_TypeTraits, _field_type, _is_packed>& id, \ + typename _proto_TypeTraits::MutableType value) { \ + _proto_TypeTraits::SetAllocated(id.number(), _field_type, \ + value, &_extensions_); \ + } \ + template \ + inline typename _proto_TypeTraits::MutableType ReleaseExtension( \ + const ::google::protobuf::internal::ExtensionIdentifier< \ + CLASSNAME, _proto_TypeTraits, _field_type, _is_packed>& id) { \ + return _proto_TypeTraits::Release(id.number(), _field_type, \ + &_extensions_); \ } \ \ /* Repeated accessors */ \ template \ + ::google::protobuf::internal::FieldType _field_type, \ + bool _is_packed> \ inline typename _proto_TypeTraits::ConstType GetExtension( \ const ::google::protobuf::internal::ExtensionIdentifier< \ - CLASSNAME, _proto_TypeTraits, field_type, is_packed>& id, \ + CLASSNAME, _proto_TypeTraits, _field_type, _is_packed>& id, \ int index) const { \ return _proto_TypeTraits::Get(id.number(), _extensions_, index); \ } \ \ template \ + ::google::protobuf::internal::FieldType _field_type, \ + bool _is_packed> \ inline typename _proto_TypeTraits::MutableType MutableExtension( \ const ::google::protobuf::internal::ExtensionIdentifier< \ - CLASSNAME, _proto_TypeTraits, field_type, is_packed>& id, \ + CLASSNAME, _proto_TypeTraits, _field_type, _is_packed>& id, \ int index) { \ return _proto_TypeTraits::Mutable(id.number(), index, &_extensions_); \ } \ \ template \ + ::google::protobuf::internal::FieldType _field_type, \ + bool _is_packed> \ inline void SetExtension( \ const ::google::protobuf::internal::ExtensionIdentifier< \ - CLASSNAME, _proto_TypeTraits, field_type, is_packed>& id, \ + CLASSNAME, _proto_TypeTraits, _field_type, _is_packed>& id, \ int index, typename _proto_TypeTraits::ConstType value) { \ _proto_TypeTraits::Set(id.number(), index, value, &_extensions_); \ } \ \ template \ + ::google::protobuf::internal::FieldType _field_type, \ + bool _is_packed> \ inline typename _proto_TypeTraits::MutableType AddExtension( \ const ::google::protobuf::internal::ExtensionIdentifier< \ - CLASSNAME, _proto_TypeTraits, field_type, is_packed>& id) { \ - return _proto_TypeTraits::Add(id.number(), field_type, &_extensions_); \ + CLASSNAME, _proto_TypeTraits, _field_type, _is_packed>& id) { \ + return _proto_TypeTraits::Add(id.number(), _field_type, &_extensions_); \ } \ \ template \ + ::google::protobuf::internal::FieldType _field_type, \ + bool _is_packed> \ inline void AddExtension( \ const ::google::protobuf::internal::ExtensionIdentifier< \ - CLASSNAME, _proto_TypeTraits, field_type, is_packed>& id, \ + CLASSNAME, _proto_TypeTraits, _field_type, _is_packed>& id, \ typename _proto_TypeTraits::ConstType value) { \ - _proto_TypeTraits::Add(id.number(), field_type, is_packed, \ + _proto_TypeTraits::Add(id.number(), _field_type, _is_packed, \ value, &_extensions_); \ } diff --git a/cpp/thirdparty/protobuf-2.3.0/src/google/protobuf/extension_set_heavy.cc b/cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/extension_set_heavy.cc similarity index 68% rename from cpp/thirdparty/protobuf-2.3.0/src/google/protobuf/extension_set_heavy.cc rename to cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/extension_set_heavy.cc index 2721f15dc..483d7055d 100644 --- a/cpp/thirdparty/protobuf-2.3.0/src/google/protobuf/extension_set_heavy.cc +++ b/cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/extension_set_heavy.cc @@ -35,17 +35,20 @@ // Contains methods defined in extension_set.h which cannot be part of the // lite library because they use descriptors or reflection. -#include +#include #include +#include #include #include #include #include namespace google { + namespace protobuf { namespace internal { + // Implementation of ExtensionFinder which finds extensions in a given // DescriptorPool, using the given MessageFactory to construct sub-objects. // This class is implemented in extension_set_heavy.cc. @@ -103,6 +106,11 @@ inline FieldDescriptor::CppType cpp_type(FieldType type) { static_cast(type)); } +inline WireFormatLite::FieldType field_type(FieldType type) { + GOOGLE_DCHECK(type > 0 && type <= WireFormatLite::MAX_FIELD_TYPE); + return static_cast(type); +} + #define GOOGLE_DCHECK_TYPE(EXTENSION, LABEL, CPPTYPE) \ GOOGLE_DCHECK_EQ((EXTENSION).is_repeated ? FieldDescriptor::LABEL_REPEATED \ : FieldDescriptor::LABEL_OPTIONAL, \ @@ -118,7 +126,12 @@ const MessageLite& ExtensionSet::GetMessage(int number, return *factory->GetPrototype(message_type); } else { GOOGLE_DCHECK_TYPE(iter->second, OPTIONAL, MESSAGE); - return *iter->second.message_value; + if (iter->second.is_lazy) { + return iter->second.lazymessage_value->GetMessage( + *factory->GetPrototype(message_type)); + } else { + return *iter->second.message_value; + } } } @@ -132,13 +145,41 @@ MessageLite* ExtensionSet::MutableMessage(const FieldDescriptor* descriptor, extension->is_packed = false; const MessageLite* prototype = factory->GetPrototype(descriptor->message_type()); - GOOGLE_CHECK(prototype != NULL); + extension->is_lazy = false; extension->message_value = prototype->New(); + extension->is_cleared = false; + return extension->message_value; } else { GOOGLE_DCHECK_TYPE(*extension, OPTIONAL, MESSAGE); + extension->is_cleared = false; + if (extension->is_lazy) { + return extension->lazymessage_value->MutableMessage( + *factory->GetPrototype(descriptor->message_type())); + } else { + return extension->message_value; + } + } +} + +MessageLite* ExtensionSet::ReleaseMessage(const FieldDescriptor* descriptor, + MessageFactory* factory) { + map::iterator iter = extensions_.find(descriptor->number()); + if (iter == extensions_.end()) { + // Not present. Return NULL. + return NULL; + } else { + GOOGLE_DCHECK_TYPE(iter->second, OPTIONAL, MESSAGE); + MessageLite* ret = NULL; + if (iter->second.is_lazy) { + ret = iter->second.lazymessage_value->ReleaseMessage( + *factory->GetPrototype(descriptor->message_type())); + delete iter->second.lazymessage_value; + } else { + ret = iter->second.message_value; + } + extensions_.erase(descriptor->number()); + return ret; } - extension->is_cleared = false; - return extension->message_value; } MessageLite* ExtensionSet::AddMessage(const FieldDescriptor* descriptor, @@ -157,7 +198,7 @@ MessageLite* ExtensionSet::AddMessage(const FieldDescriptor* descriptor, // RepeatedPtrField does not know how to Add() since it cannot // allocate an abstract object, so we have to be tricky. MessageLite* result = extension->repeated_message_value - ->AddFromCleared >(); + ->AddFromCleared >(); if (result == NULL) { const MessageLite* prototype; if (extension->repeated_message_value->size() == 0) { @@ -286,7 +327,11 @@ int ExtensionSet::Extension::SpaceUsedExcludingSelf() const { StringSpaceUsedExcludingSelf(*string_value); break; case FieldDescriptor::CPPTYPE_MESSAGE: - total_size += down_cast(message_value)->SpaceUsed(); + if (is_lazy) { + total_size += lazymessage_value->SpaceUsed(); + } else { + total_size += down_cast(message_value)->SpaceUsed(); + } break; default: // No extra storage costs for primitive types. @@ -419,8 +464,15 @@ uint8* ExtensionSet::Extension::SerializeFieldWithCachedSizesToArray( HANDLE_TYPE( BYTES, Bytes, *string_value); HANDLE_TYPE( ENUM, Enum, enum_value); HANDLE_TYPE( GROUP, Group, *message_value); - HANDLE_TYPE( MESSAGE, Message, *message_value); #undef HANDLE_TYPE + case FieldDescriptor::TYPE_MESSAGE: + if (is_lazy) { + target = lazymessage_value->WriteMessageToArray(number, target); + } else { + target = WireFormatLite::WriteMessageToArray( + number, *message_value, target); + } + break; } } return target; @@ -444,14 +496,216 @@ uint8* ExtensionSet::Extension::SerializeMessageSetItemWithCachedSizesToArray( target = WireFormatLite::WriteUInt32ToArray( WireFormatLite::kMessageSetTypeIdNumber, number, target); // Write message. - target = WireFormatLite::WriteMessageToArray( - WireFormatLite::kMessageSetMessageNumber, *message_value, target); + if (is_lazy) { + target = lazymessage_value->WriteMessageToArray( + WireFormatLite::kMessageSetMessageNumber, target); + } else { + target = WireFormatLite::WriteMessageToArray( + WireFormatLite::kMessageSetMessageNumber, *message_value, target); + } // End group. target = io::CodedOutputStream::WriteTagToArray( WireFormatLite::kMessageSetItemEndTag, target); return target; } + +bool ExtensionSet::ParseFieldMaybeLazily( + uint32 tag, io::CodedInputStream* input, + ExtensionFinder* extension_finder, + FieldSkipper* field_skipper) { + return ParseField(tag, input, extension_finder, field_skipper); +} + +bool ExtensionSet::ParseMessageSet(io::CodedInputStream* input, + ExtensionFinder* extension_finder, + FieldSkipper* field_skipper) { + while (true) { + uint32 tag = input->ReadTag(); + switch (tag) { + case 0: + return true; + case WireFormatLite::kMessageSetItemStartTag: + if (!ParseMessageSetItem(input, extension_finder, field_skipper)) { + return false; + } + break; + default: + if (!ParseField(tag, input, extension_finder, field_skipper)) { + return false; + } + break; + } + } +} + +bool ExtensionSet::ParseMessageSet(io::CodedInputStream* input, + const MessageLite* containing_type) { + FieldSkipper skipper; + GeneratedExtensionFinder finder(containing_type); + return ParseMessageSet(input, &finder, &skipper); +} + +bool ExtensionSet::ParseMessageSetItem(io::CodedInputStream* input, + ExtensionFinder* extension_finder, + FieldSkipper* field_skipper) { + // TODO(kenton): It would be nice to share code between this and + // WireFormatLite::ParseAndMergeMessageSetItem(), but I think the + // differences would be hard to factor out. + + // This method parses a group which should contain two fields: + // required int32 type_id = 2; + // required data message = 3; + + // Once we see a type_id, we'll construct a fake tag for this extension + // which is the tag it would have had under the proto2 extensions wire + // format. + uint32 fake_tag = 0; + + // If we see message data before the type_id, we'll append it to this so + // we can parse it later. + string message_data; + + while (true) { + uint32 tag = input->ReadTag(); + if (tag == 0) return false; + + switch (tag) { + case WireFormatLite::kMessageSetTypeIdTag: { + uint32 type_id; + if (!input->ReadVarint32(&type_id)) return false; + fake_tag = WireFormatLite::MakeTag(type_id, + WireFormatLite::WIRETYPE_LENGTH_DELIMITED); + + if (!message_data.empty()) { + // We saw some message data before the type_id. Have to parse it + // now. + io::CodedInputStream sub_input( + reinterpret_cast(message_data.data()), + message_data.size()); + if (!ParseFieldMaybeLazily(fake_tag, &sub_input, + extension_finder, field_skipper)) { + return false; + } + message_data.clear(); + } + + break; + } + + case WireFormatLite::kMessageSetMessageTag: { + if (fake_tag == 0) { + // We haven't seen a type_id yet. Append this data to message_data. + string temp; + uint32 length; + if (!input->ReadVarint32(&length)) return false; + if (!input->ReadString(&temp, length)) return false; + io::StringOutputStream output_stream(&message_data); + io::CodedOutputStream coded_output(&output_stream); + coded_output.WriteVarint32(length); + coded_output.WriteString(temp); + } else { + // Already saw type_id, so we can parse this directly. + if (!ParseFieldMaybeLazily(fake_tag, input, + extension_finder, field_skipper)) { + return false; + } + } + + break; + } + + case WireFormatLite::kMessageSetItemEndTag: { + return true; + } + + default: { + if (!field_skipper->SkipField(input, tag)) return false; + } + } + } +} + +void ExtensionSet::Extension::SerializeMessageSetItemWithCachedSizes( + int number, + io::CodedOutputStream* output) const { + if (type != WireFormatLite::TYPE_MESSAGE || is_repeated) { + // Not a valid MessageSet extension, but serialize it the normal way. + SerializeFieldWithCachedSizes(number, output); + return; + } + + if (is_cleared) return; + + // Start group. + output->WriteTag(WireFormatLite::kMessageSetItemStartTag); + + // Write type ID. + WireFormatLite::WriteUInt32(WireFormatLite::kMessageSetTypeIdNumber, + number, + output); + // Write message. + if (is_lazy) { + lazymessage_value->WriteMessage( + WireFormatLite::kMessageSetMessageNumber, output); + } else { + WireFormatLite::WriteMessageMaybeToArray( + WireFormatLite::kMessageSetMessageNumber, + *message_value, + output); + } + + // End group. + output->WriteTag(WireFormatLite::kMessageSetItemEndTag); +} + +int ExtensionSet::Extension::MessageSetItemByteSize(int number) const { + if (type != WireFormatLite::TYPE_MESSAGE || is_repeated) { + // Not a valid MessageSet extension, but compute the byte size for it the + // normal way. + return ByteSize(number); + } + + if (is_cleared) return 0; + + int our_size = WireFormatLite::kMessageSetItemTagsSize; + + // type_id + our_size += io::CodedOutputStream::VarintSize32(number); + + // message + int message_size = 0; + if (is_lazy) { + message_size = lazymessage_value->ByteSize(); + } else { + message_size = message_value->ByteSize(); + } + + our_size += io::CodedOutputStream::VarintSize32(message_size); + our_size += message_size; + + return our_size; +} + +void ExtensionSet::SerializeMessageSetWithCachedSizes( + io::CodedOutputStream* output) const { + map::const_iterator iter; + for (iter = extensions_.begin(); iter != extensions_.end(); ++iter) { + iter->second.SerializeMessageSetItemWithCachedSizes(iter->first, output); + } +} + +int ExtensionSet::MessageSetByteSize() const { + int total_size = 0; + + for (map::const_iterator iter = extensions_.begin(); + iter != extensions_.end(); ++iter) { + total_size += iter->second.MessageSetItemByteSize(iter->first); + } + + return total_size; +} + } // namespace internal } // namespace protobuf } // namespace google diff --git a/cpp/thirdparty/protobuf-2.3.0/src/google/protobuf/extension_set_unittest.cc b/cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/extension_set_unittest.cc similarity index 87% rename from cpp/thirdparty/protobuf-2.3.0/src/google/protobuf/extension_set_unittest.cc rename to cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/extension_set_unittest.cc index 000f846c7..559de6e13 100644 --- a/cpp/thirdparty/protobuf-2.3.0/src/google/protobuf/extension_set_unittest.cc +++ b/cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/extension_set_unittest.cc @@ -34,6 +34,7 @@ #include #include +#include #include #include #include @@ -46,9 +47,10 @@ #include #include #include -#include +#include namespace google { + namespace protobuf { namespace internal { namespace { @@ -140,23 +142,98 @@ TEST(ExtensionSetTest, ClearOneField) { TestUtil::ExpectAllExtensionsSet(message); } +TEST(ExtensionSetTest, SetAllocatedExtensin) { + unittest::TestAllExtensions message; + EXPECT_FALSE(message.HasExtension( + unittest::optional_foreign_message_extension)); + // Add a extension using SetAllocatedExtension + unittest::ForeignMessage* foreign_message = new unittest::ForeignMessage(); + message.SetAllocatedExtension(unittest::optional_foreign_message_extension, + foreign_message); + EXPECT_TRUE(message.HasExtension( + unittest::optional_foreign_message_extension)); + EXPECT_EQ(foreign_message, + message.MutableExtension( + unittest::optional_foreign_message_extension)); + EXPECT_EQ(foreign_message, + &message.GetExtension( + unittest::optional_foreign_message_extension)); + + // SetAllocatedExtension should delete the previously existing extension. + // (We reply on unittest to check memory leaks for this case) + message.SetAllocatedExtension(unittest::optional_foreign_message_extension, + new unittest::ForeignMessage()); + + // SetAllocatedExtension with a NULL parameter is equivalent to ClearExtenion. + message.SetAllocatedExtension(unittest::optional_foreign_message_extension, + NULL); + EXPECT_FALSE(message.HasExtension( + unittest::optional_foreign_message_extension)); +} + +TEST(ExtensionSetTest, ReleaseExtension) { + unittest::TestMessageSet message; + EXPECT_FALSE(message.HasExtension( + unittest::TestMessageSetExtension1::message_set_extension)); + // Add a extension using SetAllocatedExtension + unittest::TestMessageSetExtension1* extension = + new unittest::TestMessageSetExtension1(); + message.SetAllocatedExtension( + unittest::TestMessageSetExtension1::message_set_extension, + extension); + EXPECT_TRUE(message.HasExtension( + unittest::TestMessageSetExtension1::message_set_extension)); + // Release the extension using ReleaseExtension + unittest::TestMessageSetExtension1* released_extension = + message.ReleaseExtension( + unittest::TestMessageSetExtension1::message_set_extension); + EXPECT_EQ(extension, released_extension); + EXPECT_FALSE(message.HasExtension( + unittest::TestMessageSetExtension1::message_set_extension)); + // ReleaseExtension will return the underlying object even after + // ClearExtension is called. + message.SetAllocatedExtension( + unittest::TestMessageSetExtension1::message_set_extension, + extension); + message.ClearExtension( + unittest::TestMessageSetExtension1::message_set_extension); + released_extension = message.ReleaseExtension( + unittest::TestMessageSetExtension1::message_set_extension); + EXPECT_TRUE(released_extension != NULL); + delete released_extension; +} + + TEST(ExtensionSetTest, CopyFrom) { unittest::TestAllExtensions message1, message2; - string data; TestUtil::SetAllExtensions(&message1); message2.CopyFrom(message1); TestUtil::ExpectAllExtensionsSet(message2); + message2.CopyFrom(message1); // exercise copy when fields already exist + TestUtil::ExpectAllExtensionsSet(message2); +} + +TEST(ExtensioSetTest, CopyFromPacked) { + unittest::TestPackedExtensions message1, message2; + + TestUtil::SetPackedExtensions(&message1); + message2.CopyFrom(message1); + TestUtil::ExpectPackedExtensionsSet(message2); + message2.CopyFrom(message1); // exercise copy when fields already exist + TestUtil::ExpectPackedExtensionsSet(message2); } TEST(ExtensionSetTest, CopyFromUpcasted) { unittest::TestAllExtensions message1, message2; - string data; const Message& upcasted_message = message1; TestUtil::SetAllExtensions(&message1); message2.CopyFrom(upcasted_message); TestUtil::ExpectAllExtensionsSet(message2); + // exercise copy when fields already exist + message2.CopyFrom(upcasted_message); + TestUtil::ExpectAllExtensionsSet(message2); } TEST(ExtensionSetTest, SwapWithEmpty) { @@ -418,7 +495,8 @@ TEST(ExtensionSetTest, SpaceUsedExcludingSelf) { for (int i = 0; i < 16; ++i) { \ message.AddExtension(unittest::repeated_##type##_extension, value); \ } \ - int expected_size = sizeof(cpptype) * 16 + empty_repeated_field_size; \ + int expected_size = sizeof(cpptype) * (16 - \ + kMinRepeatedFieldAllocationSize) + empty_repeated_field_size; \ EXPECT_EQ(expected_size, message.SpaceUsed()) << #type; \ } while (0) @@ -450,7 +528,8 @@ TEST(ExtensionSetTest, SpaceUsedExcludingSelf) { for (int i = 0; i < 16; ++i) { message.AddExtension(unittest::repeated_string_extension, value); } - min_expected_size += (sizeof(value) + value.size()) * 16; + min_expected_size += (sizeof(value) + value.size()) * + (16 - kMinRepeatedFieldAllocationSize); EXPECT_LE(min_expected_size, message.SpaceUsed()); } // Repeated messages @@ -465,12 +544,13 @@ TEST(ExtensionSetTest, SpaceUsedExcludingSelf) { message.AddExtension(unittest::repeated_foreign_message_extension)-> CopyFrom(prototype); } - min_expected_size += 16 * prototype.SpaceUsed(); + min_expected_size += + (16 - kMinRepeatedFieldAllocationSize) * prototype.SpaceUsed(); EXPECT_LE(min_expected_size, message.SpaceUsed()); } } -#ifdef GTEST_HAS_DEATH_TEST +#ifdef PROTOBUF_HAS_DEATH_TEST TEST(ExtensionSetTest, InvalidEnumDeath) { unittest::TestAllExtensions message; @@ -480,7 +560,7 @@ TEST(ExtensionSetTest, InvalidEnumDeath) { "IsValid"); } -#endif // GTEST_HAS_DEATH_TEST +#endif // PROTOBUF_HAS_DEATH_TEST TEST(ExtensionSetTest, DynamicExtensions) { // Test adding a dynamic extension to a compiled-in message object. @@ -615,7 +695,11 @@ TEST(ExtensionSetTest, DynamicExtensions) { const Message& sub_message = message.GetReflection()->GetMessage(message, message_extension); const unittest::ForeignMessage* typed_sub_message = +#ifdef GOOGLE_PROTOBUF_NO_RTTI + static_cast(&sub_message); +#else dynamic_cast(&sub_message); +#endif ASSERT_TRUE(typed_sub_message != NULL); EXPECT_EQ(456, typed_sub_message->c()); } diff --git a/cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/generated_enum_reflection.h b/cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/generated_enum_reflection.h new file mode 100644 index 000000000..a09a540bf --- /dev/null +++ b/cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/generated_enum_reflection.h @@ -0,0 +1,85 @@ +// Protocol Buffers - Google's data interchange format +// Copyright 2008 Google Inc. All rights reserved. +// http://code.google.com/p/protobuf/ +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +// Author: jasonh@google.com (Jason Hsueh) +// +// This header is logically internal, but is made public because it is used +// from protocol-compiler-generated code, which may reside in other components. +// It provides reflection support for generated enums, and is included in +// generated .pb.h files and should have minimal dependencies. The methods are +// implemented in generated_message_reflection.cc. + +#ifndef GOOGLE_PROTOBUF_GENERATED_ENUM_REFLECTION_H__ +#define GOOGLE_PROTOBUF_GENERATED_ENUM_REFLECTION_H__ + +#include + +namespace google { +namespace protobuf { + class EnumDescriptor; +} // namespace protobuf + +namespace protobuf { + +// Returns the EnumDescriptor for enum type E, which must be a +// proto-declared enum type. Code generated by the protocol compiler +// will include specializations of this template for each enum type declared. +template +const EnumDescriptor* GetEnumDescriptor(); + +namespace internal { + +// Helper for EnumType_Parse functions: try to parse the string 'name' as an +// enum name of the given type, returning true and filling in value on success, +// or returning false and leaving value unchanged on failure. +LIBPROTOBUF_EXPORT bool ParseNamedEnum(const EnumDescriptor* descriptor, + const string& name, + int* value); + +template +bool ParseNamedEnum(const EnumDescriptor* descriptor, + const string& name, + EnumType* value) { + int tmp; + if (!ParseNamedEnum(descriptor, name, &tmp)) return false; + *value = static_cast(tmp); + return true; +} + +// Just a wrapper around printing the name of a value. The main point of this +// function is not to be inlined, so that you can do this without including +// descriptor.h. +LIBPROTOBUF_EXPORT const string& NameOfEnum(const EnumDescriptor* descriptor, int value); + +} // namespace internal +} // namespace protobuf + +} // namespace google +#endif // GOOGLE_PROTOBUF_GENERATED_ENUM_REFLECTION_H__ diff --git a/cpp/thirdparty/protobuf-2.3.0/src/google/protobuf/generated_message_reflection.cc b/cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/generated_message_reflection.cc similarity index 93% rename from cpp/thirdparty/protobuf-2.3.0/src/google/protobuf/generated_message_reflection.cc rename to cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/generated_message_reflection.cc index 0f065ff2d..f4d0851d2 100644 --- a/cpp/thirdparty/protobuf-2.3.0/src/google/protobuf/generated_message_reflection.cc +++ b/cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/generated_message_reflection.cc @@ -33,9 +33,9 @@ // Sanjay Ghemawat, Jeff Dean, and others. #include +#include #include #include -#include #include #include #include @@ -45,8 +45,6 @@ namespace google { namespace protobuf { namespace internal { -namespace { const string kEmptyString; } - int StringSpaceUsedExcludingSelf(const string& str) { const void* start = &str; const void* end = &str + 1; @@ -69,7 +67,6 @@ bool ParseNamedEnum(const EnumDescriptor* descriptor, } const string& NameOfEnum(const EnumDescriptor* descriptor, int value) { - static string kEmptyString; const EnumValueDescriptor* d = descriptor->FindValueByNumber(value); return (d == NULL ? kEmptyString : d->name()); } @@ -324,7 +321,7 @@ void GeneratedMessageReflection::Swap( "descriptor."; GOOGLE_CHECK_EQ(message2->GetReflection(), this) << "Second argument to Swap() (of type \"" - << message1->GetDescriptor()->full_name() + << message2->GetDescriptor()->full_name() << "\") is not compatible with this reflection object (which is for type \"" << descriptor_->full_name() << "\"). Note that the exact same class is required; not just the same " @@ -383,8 +380,11 @@ void GeneratedMessageReflection::Swap( SWAP_VALUES(DOUBLE, double); SWAP_VALUES(BOOL , bool ); SWAP_VALUES(ENUM , int ); - SWAP_VALUES(MESSAGE, Message*); #undef SWAP_VALUES + case FieldDescriptor::CPPTYPE_MESSAGE: + std::swap(*MutableRaw(message1, field), + *MutableRaw(message2, field)); + break; case FieldDescriptor::CPPTYPE_STRING: switch (field->options().ctype()) { @@ -591,6 +591,20 @@ void GeneratedMessageReflection::RemoveLast( } } +Message* GeneratedMessageReflection::ReleaseLast( + Message* message, + const FieldDescriptor* field) const { + USAGE_CHECK_ALL(ReleaseLast, REPEATED, MESSAGE); + + if (field->is_extension()) { + return static_cast( + MutableExtensionSet(message)->ReleaseLast(field->number())); + } else { + return MutableRaw(message, field) + ->ReleaseLast >(); + } +} + void GeneratedMessageReflection::SwapElements( Message* message, const FieldDescriptor* field, @@ -892,7 +906,9 @@ const EnumValueDescriptor* GeneratedMessageReflection::GetEnum( } const EnumValueDescriptor* result = field->enum_type()->FindValueByNumber(value); - GOOGLE_CHECK(result != NULL); + GOOGLE_CHECK(result != NULL) << "Value " << value << " is not valid for field " + << field->full_name() << " of type " + << field->enum_type()->full_name() << "."; return result; } @@ -922,7 +938,9 @@ const EnumValueDescriptor* GeneratedMessageReflection::GetRepeatedEnum( } const EnumValueDescriptor* result = field->enum_type()->FindValueByNumber(value); - GOOGLE_CHECK(result != NULL); + GOOGLE_CHECK(result != NULL) << "Value " << value << " is not valid for field " + << field->full_name() << " of type " + << field->enum_type()->full_name() << "."; return result; } @@ -963,13 +981,15 @@ const Message& GeneratedMessageReflection::GetMessage( MessageFactory* factory) const { USAGE_CHECK_ALL(GetMessage, SINGULAR, MESSAGE); + if (factory == NULL) factory = message_factory_; + if (field->is_extension()) { return static_cast( GetExtensionSet(message).GetMessage( - field->number(), field->message_type(), - factory == NULL ? message_factory_ : factory)); + field->number(), field->message_type(), factory)); } else { - const Message* result = GetRaw(message, field); + const Message* result; + result = GetRaw(message, field); if (result == NULL) { result = DefaultRaw(field); } @@ -982,17 +1002,40 @@ Message* GeneratedMessageReflection::MutableMessage( MessageFactory* factory) const { USAGE_CHECK_ALL(MutableMessage, SINGULAR, MESSAGE); + if (factory == NULL) factory = message_factory_; + if (field->is_extension()) { return static_cast( - MutableExtensionSet(message)->MutableMessage(field, - factory == NULL ? message_factory_ : factory)); + MutableExtensionSet(message)->MutableMessage(field, factory)); } else { - Message** result = MutableField(message, field); - if (*result == NULL) { + Message* result; + Message** result_holder = MutableField(message, field); + if (*result_holder == NULL) { const Message* default_message = DefaultRaw(field); - *result = default_message->New(); + *result_holder = default_message->New(); } - return *result; + result = *result_holder; + return result; + } +} + +Message* GeneratedMessageReflection::ReleaseMessage( + Message* message, + const FieldDescriptor* field, + MessageFactory* factory) const { + USAGE_CHECK_ALL(ReleaseMessage, SINGULAR, MESSAGE); + + if (factory == NULL) factory = message_factory_; + + if (field->is_extension()) { + return static_cast( + MutableExtensionSet(message)->ReleaseMessage(field, factory)); + } else { + ClearBit(message, field); + Message** result = MutableRaw(message, field); + Message* ret = *result; + *result = NULL; + return ret; } } @@ -1037,7 +1080,7 @@ Message* GeneratedMessageReflection::AddMessage( // We can't use AddField() because RepeatedPtrFieldBase doesn't // know how to allocate one. RepeatedPtrFieldBase* repeated = - MutableRaw(message, field); + MutableRaw(message, field); Message* result = repeated->AddFromCleared >(); if (result == NULL) { // We must allocate a new object. @@ -1054,7 +1097,26 @@ Message* GeneratedMessageReflection::AddMessage( } } -// ------------------------------------------------------------------- +void* GeneratedMessageReflection::MutableRawRepeatedField( + Message* message, const FieldDescriptor* field, + FieldDescriptor::CppType cpptype, + int ctype, const Descriptor* desc) const { + USAGE_CHECK_REPEATED("MutableRawRepeatedField"); + if (field->cpp_type() != cpptype) + ReportReflectionUsageTypeError(descriptor_, + field, "MutableRawRepeatedField", cpptype); + if (ctype >= 0) + GOOGLE_CHECK_EQ(field->options().ctype(), ctype) << "subtype mismatch"; + if (desc != NULL) + GOOGLE_CHECK_EQ(field->message_type(), desc) << "wrong submessage type"; + if (field->is_extension()) + return MutableExtensionSet(message)->MutableRawRepeatedField( + field->number()); + else + return reinterpret_cast(message) + offsets_[field->index()]; +} + +// ----------------------------------------------------------------------------- const FieldDescriptor* GeneratedMessageReflection::FindKnownExtensionByName( const string& name) const { diff --git a/cpp/thirdparty/protobuf-2.3.0/src/google/protobuf/generated_message_reflection.h b/cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/generated_message_reflection.h similarity index 94% rename from cpp/thirdparty/protobuf-2.3.0/src/google/protobuf/generated_message_reflection.h rename to cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/generated_message_reflection.h index b545fa1a2..c1c142fa8 100644 --- a/cpp/thirdparty/protobuf-2.3.0/src/google/protobuf/generated_message_reflection.h +++ b/cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/generated_message_reflection.h @@ -40,17 +40,23 @@ #include #include +#include +// TODO(jasonh): Remove this once the compiler change to directly include this +// is released to components. +#include #include #include namespace google { +namespace upb { +namespace google_opensource { +class GMR_Handlers; +} // namespace google_opensource +} // namespace upb + namespace protobuf { class DescriptorPool; - // Generated code needs these to have been forward-declared. Easier to do it - // here than to print them inside every .pb.h file. - class FileDescriptor; - class EnumDescriptor; } namespace protobuf { @@ -141,6 +147,7 @@ class LIBPROTOBUF_EXPORT GeneratedMessageReflection : public Reflection { int FieldSize(const Message& message, const FieldDescriptor* field) const; void ClearField(Message* message, const FieldDescriptor* field) const; void RemoveLast(Message* message, const FieldDescriptor* field) const; + Message* ReleaseLast(Message* message, const FieldDescriptor* field) const; void Swap(Message* message1, Message* message2) const; void SwapElements(Message* message, const FieldDescriptor* field, int index1, int index2) const; @@ -193,6 +200,8 @@ class LIBPROTOBUF_EXPORT GeneratedMessageReflection : public Reflection { const EnumValueDescriptor* value) const; Message* MutableMessage(Message* message, const FieldDescriptor* field, MessageFactory* factory = NULL) const; + Message* ReleaseMessage(Message* message, const FieldDescriptor* field, + MessageFactory* factory = NULL) const; int32 GetRepeatedInt32 (const Message& message, const FieldDescriptor* field, int index) const; @@ -270,9 +279,18 @@ class LIBPROTOBUF_EXPORT GeneratedMessageReflection : public Reflection { const FieldDescriptor* FindKnownExtensionByName(const string& name) const; const FieldDescriptor* FindKnownExtensionByNumber(int number) const; + protected: + virtual void* MutableRawRepeatedField( + Message* message, const FieldDescriptor* field, FieldDescriptor::CppType, + int ctype, const Descriptor* desc) const; + private: friend class GeneratedMessage; + // To parse directly into a proto2 generated class, the class GMR_Handlers + // needs access to member offsets and hasbits. + friend class LIBPROTOBUF_EXPORT upb::google_opensource::GMR_Handlers; + const Descriptor* descriptor_; const Message* default_instance_; const int* offsets_; @@ -293,7 +311,6 @@ class LIBPROTOBUF_EXPORT GeneratedMessageReflection : public Reflection { const FieldDescriptor* field) const; template inline const Type& DefaultRaw(const FieldDescriptor* field) const; - inline const Message* GetMessagePrototype(const FieldDescriptor* field) const; inline const uint32* GetHasBits(const Message& message) const; inline uint32* MutableHasBits(Message* message) const; @@ -395,28 +412,6 @@ inline To dynamic_cast_if_available(From from) { #endif } -// Helper for EnumType_Parse functions: try to parse the string 'name' as an -// enum name of the given type, returning true and filling in value on success, -// or returning false and leaving value unchanged on failure. -LIBPROTOBUF_EXPORT bool ParseNamedEnum(const EnumDescriptor* descriptor, - const string& name, - int* value); - -template -bool ParseNamedEnum(const EnumDescriptor* descriptor, - const string& name, - EnumType* value) { - int tmp; - if (!ParseNamedEnum(descriptor, name, &tmp)) return false; - *value = static_cast(tmp); - return true; -} - -// Just a wrapper around printing the name of a value. The main point of this -// function is not to be inlined, so that you can do this without including -// descriptor.h. -LIBPROTOBUF_EXPORT const string& NameOfEnum(const EnumDescriptor* descriptor, int value); - } // namespace internal } // namespace protobuf diff --git a/cpp/thirdparty/protobuf-2.3.0/src/google/protobuf/generated_message_reflection_unittest.cc b/cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/generated_message_reflection_unittest.cc similarity index 78% rename from cpp/thirdparty/protobuf-2.3.0/src/google/protobuf/generated_message_reflection_unittest.cc rename to cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/generated_message_reflection_unittest.cc index a03bcdb7d..39aa55fb4 100644 --- a/cpp/thirdparty/protobuf-2.3.0/src/google/protobuf/generated_message_reflection_unittest.cc +++ b/cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/generated_message_reflection_unittest.cc @@ -225,11 +225,59 @@ TEST(GeneratedMessageReflectionTest, RemoveLastExtensions) { unittest::TestAllExtensions::descriptor()); TestUtil::SetAllExtensions(&message); + reflection_tester.RemoveLastRepeatedsViaReflection(&message); TestUtil::ExpectLastRepeatedExtensionsRemoved(message); } +TEST(GeneratedMessageReflectionTest, ReleaseLast) { + unittest::TestAllTypes message; + const Descriptor* descriptor = message.GetDescriptor(); + TestUtil::ReflectionTester reflection_tester(descriptor); + + TestUtil::SetAllFields(&message); + + reflection_tester.ReleaseLastRepeatedsViaReflection(&message, false); + + TestUtil::ExpectLastRepeatedsReleased(message); + + // Now test that we actually release the right message. + message.Clear(); + TestUtil::SetAllFields(&message); + ASSERT_EQ(2, message.repeated_foreign_message_size()); + const protobuf_unittest::ForeignMessage* expected = + message.mutable_repeated_foreign_message(1); + scoped_ptr released(message.GetReflection()->ReleaseLast( + &message, descriptor->FindFieldByName("repeated_foreign_message"))); + EXPECT_EQ(expected, released.get()); +} + +TEST(GeneratedMessageReflectionTest, ReleaseLastExtensions) { + unittest::TestAllExtensions message; + const Descriptor* descriptor = message.GetDescriptor(); + TestUtil::ReflectionTester reflection_tester(descriptor); + + TestUtil::SetAllExtensions(&message); + + reflection_tester.ReleaseLastRepeatedsViaReflection(&message, true); + + TestUtil::ExpectLastRepeatedExtensionsReleased(message); + + // Now test that we actually release the right message. + message.Clear(); + TestUtil::SetAllExtensions(&message); + ASSERT_EQ(2, message.ExtensionSize( + unittest::repeated_foreign_message_extension)); + const protobuf_unittest::ForeignMessage* expected = message.MutableExtension( + unittest::repeated_foreign_message_extension, 1); + scoped_ptr released(message.GetReflection()->ReleaseLast( + &message, descriptor->file()->FindExtensionByName( + "repeated_foreign_message_extension"))); + EXPECT_EQ(expected, released.get()); + +} + TEST(GeneratedMessageReflectionTest, SwapRepeatedElements) { unittest::TestAllTypes message; TestUtil::ReflectionTester reflection_tester( @@ -327,7 +375,59 @@ TEST(GeneratedMessageReflectionTest, FindKnownExtensionByName) { FindKnownExtensionByName(extension1->full_name()) == NULL); } -#ifdef GTEST_HAS_DEATH_TEST +TEST(GeneratedMessageReflectionTest, ReleaseMessageTest) { + unittest::TestAllTypes message; + TestUtil::ReflectionTester reflection_tester( + unittest::TestAllTypes::descriptor()); + + // When nothing is set, we expect all released messages to be NULL. + reflection_tester.ExpectMessagesReleasedViaReflection( + &message, TestUtil::ReflectionTester::IS_NULL); + + // After fields are set we should get non-NULL releases. + reflection_tester.SetAllFieldsViaReflection(&message); + reflection_tester.ExpectMessagesReleasedViaReflection( + &message, TestUtil::ReflectionTester::NOT_NULL); + + // After Clear() we may or may not get a message from ReleaseMessage(). + // This is implementation specific. + reflection_tester.SetAllFieldsViaReflection(&message); + message.Clear(); + reflection_tester.ExpectMessagesReleasedViaReflection( + &message, TestUtil::ReflectionTester::CAN_BE_NULL); + + // Test a different code path for setting after releasing. + TestUtil::SetAllFields(&message); + TestUtil::ExpectAllFieldsSet(message); +} + +TEST(GeneratedMessageReflectionTest, ReleaseExtensionMessageTest) { + unittest::TestAllExtensions message; + TestUtil::ReflectionTester reflection_tester( + unittest::TestAllExtensions::descriptor()); + + // When nothing is set, we expect all released messages to be NULL. + reflection_tester.ExpectMessagesReleasedViaReflection( + &message, TestUtil::ReflectionTester::IS_NULL); + + // After fields are set we should get non-NULL releases. + reflection_tester.SetAllFieldsViaReflection(&message); + reflection_tester.ExpectMessagesReleasedViaReflection( + &message, TestUtil::ReflectionTester::NOT_NULL); + + // After Clear() we may or may not get a message from ReleaseMessage(). + // This is implementation specific. + reflection_tester.SetAllFieldsViaReflection(&message); + message.Clear(); + reflection_tester.ExpectMessagesReleasedViaReflection( + &message, TestUtil::ReflectionTester::CAN_BE_NULL); + + // Test a different code path for setting after releasing. + TestUtil::SetAllExtensions(&message); + TestUtil::ExpectAllExtensionsSet(message); +} + +#ifdef PROTOBUF_HAS_DEATH_TEST TEST(GeneratedMessageReflectionTest, UsageErrors) { unittest::TestAllTypes message; @@ -376,7 +476,7 @@ TEST(GeneratedMessageReflectionTest, UsageErrors) { #undef f } -#endif // GTEST_HAS_DEATH_TEST +#endif // PROTOBUF_HAS_DEATH_TEST } // namespace diff --git a/cpp/thirdparty/protobuf-2.3.0/src/google/protobuf/generated_message_util.cc b/cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/generated_message_util.cc similarity index 98% rename from cpp/thirdparty/protobuf-2.3.0/src/google/protobuf/generated_message_util.cc rename to cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/generated_message_util.cc index 7ac015d07..ac3215014 100644 --- a/cpp/thirdparty/protobuf-2.3.0/src/google/protobuf/generated_message_util.cc +++ b/cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/generated_message_util.cc @@ -47,6 +47,7 @@ double NaN() { return std::numeric_limits::quiet_NaN(); } +const ::std::string kEmptyString; } // namespace internal } // namespace protobuf diff --git a/cpp/thirdparty/protobuf-2.3.0/src/google/protobuf/generated_message_util.h b/cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/generated_message_util.h similarity index 84% rename from cpp/thirdparty/protobuf-2.3.0/src/google/protobuf/generated_message_util.h rename to cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/generated_message_util.h index daa16f774..b2fb8f0be 100644 --- a/cpp/thirdparty/protobuf-2.3.0/src/google/protobuf/generated_message_util.h +++ b/cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/generated_message_util.h @@ -38,16 +38,10 @@ #ifndef GOOGLE_PROTOBUF_GENERATED_MESSAGE_UTIL_H__ #define GOOGLE_PROTOBUF_GENERATED_MESSAGE_UTIL_H__ -#include - +#include +#include namespace google { -namespace protobuf { - namespace io { - class CodedInputStream; // coded_stream.h - } -} - namespace protobuf { namespace internal { @@ -58,17 +52,23 @@ namespace internal { // For internal use in the pb.cc files, deprecation warnings are suppressed // there. #undef DEPRECATED_PROTOBUF_FIELD -#if !defined(INTERNAL_SUPPRESS_PROTOBUF_FIELD_DEPRECATION) -# define PROTOBUF_DEPRECATED GOOGLE_ATTRIBUTE_DEPRECATED -#else -# define PROTOBUF_DEPRECATED -#endif +#define PROTOBUF_DEPRECATED // Constants for special floating point values. LIBPROTOBUF_EXPORT double Infinity(); LIBPROTOBUF_EXPORT double NaN(); +// Constant used for empty default strings. +LIBPROTOBUF_EXPORT extern const ::std::string kEmptyString; + +// Defined in generated_message_reflection.cc -- not actually part of the lite +// library. +// +// TODO(jasonh): The various callers get this declaration from a variety of +// places: probably in most cases repeated_field.h. Clean these up so they all +// get the declaration from this file. +LIBPROTOBUF_EXPORT int StringSpaceUsedExcludingSelf(const string& str); } // namespace internal } // namespace protobuf diff --git a/cpp/thirdparty/protobuf-2.3.0/src/google/protobuf/io/coded_stream.cc b/cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/io/coded_stream.cc similarity index 94% rename from cpp/thirdparty/protobuf-2.3.0/src/google/protobuf/io/coded_stream.cc rename to cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/io/coded_stream.cc index 6a91a13d4..36add8c3e 100644 --- a/cpp/thirdparty/protobuf-2.3.0/src/google/protobuf/io/coded_stream.cc +++ b/cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/io/coded_stream.cc @@ -43,7 +43,7 @@ #include #include #include -#include +#include namespace google { @@ -56,10 +56,32 @@ static const int kMaxVarintBytes = 10; static const int kMaxVarint32Bytes = 5; +inline bool NextNonEmpty(ZeroCopyInputStream* input, + const void** data, int* size) { + bool success; + do { + success = input->Next(data, size); + } while (success && *size == 0); + return success; +} + } // namespace // CodedInputStream ================================================== +CodedInputStream::~CodedInputStream() { + if (input_ != NULL) { + BackUpInputToCurrentPosition(); + } + + if (total_bytes_warning_threshold_ == -2) { + GOOGLE_LOG(WARNING) << "The total number of bytes read was " << total_bytes_read_; + } +} + +// Static. +int CodedInputStream::default_recursion_limit_ = 100; + void CodedInputStream::BackUpInputToCurrentPosition() { int backup_bytes = BufferSize() + buffer_size_after_limit_ + overflow_bytes_; @@ -89,8 +111,7 @@ inline void CodedInputStream::RecomputeBufferLimits() { CodedInputStream::Limit CodedInputStream::PushLimit(int byte_limit) { // Current position relative to the beginning of the stream. - int current_position = total_bytes_read_ - - (BufferSize() + buffer_size_after_limit_); + int current_position = CurrentPosition(); Limit old_limit = current_limit_; @@ -124,10 +145,9 @@ void CodedInputStream::PopLimit(Limit limit) { legitimate_message_end_ = false; } -int CodedInputStream::BytesUntilLimit() { +int CodedInputStream::BytesUntilLimit() const { if (current_limit_ == INT_MAX) return -1; - int current_position = total_bytes_read_ - - (BufferSize() + buffer_size_after_limit_); + int current_position = CurrentPosition(); return current_limit_ - current_position; } @@ -136,10 +156,14 @@ void CodedInputStream::SetTotalBytesLimit( int total_bytes_limit, int warning_threshold) { // Make sure the limit isn't already past, since this could confuse other // code. - int current_position = total_bytes_read_ - - (BufferSize() + buffer_size_after_limit_); + int current_position = CurrentPosition(); total_bytes_limit_ = max(current_position, total_bytes_limit); - total_bytes_warning_threshold_ = warning_threshold; + if (warning_threshold >= 0) { + total_bytes_warning_threshold_ = warning_threshold; + } else { + // warning_threshold is negative + total_bytes_warning_threshold_ = -1; + } RecomputeBufferLimits(); } @@ -359,16 +383,17 @@ uint32 CodedInputStream::ReadTagSlow() { // For the slow path, just do a 64-bit read. Try to optimize for one-byte tags // again, since we have now refreshed the buffer. - uint64 result; + uint64 result = 0; if (!ReadVarint64(&result)) return 0; return static_cast(result); } uint32 CodedInputStream::ReadTagFallback() { - if (BufferSize() >= kMaxVarintBytes || + const int buf_size = BufferSize(); + if (buf_size >= kMaxVarintBytes || // Optimization: If the varint ends at exactly the end of the buffer, // we can detect that and still use the fast path. - (buffer_end_ > buffer_ && !(buffer_end_[-1] & 0x80))) { + (buf_size > 0 && !(buffer_end_[-1] & 0x80))) { uint32 tag; const uint8* end = ReadVarint32FromArray(buffer_, &tag); if (end == NULL) { @@ -379,7 +404,9 @@ uint32 CodedInputStream::ReadTagFallback() { } else { // We are commonly at a limit when attempting to read tags. Try to quickly // detect this case without making another function call. - if (buffer_ == buffer_end_ && buffer_size_after_limit_ > 0 && + if ((buf_size == 0) && + ((buffer_size_after_limit_ > 0) || + (total_bytes_read_ == current_limit_)) && // Make sure that the limit we hit is not total_bytes_limit_, since // in that case we still need to call Refresh() so that it prints an // error. @@ -443,7 +470,7 @@ bool CodedInputStream::ReadVarint64Fallback(uint64* value) { // We have overrun the maximum size of a varint (10 bytes). The data // must be corrupt. - return NULL; + return false; done: Advance(ptr - buffer_); @@ -483,13 +510,13 @@ bool CodedInputStream::Refresh() { "CodedInputStream::SetTotalBytesLimit() in " "google/protobuf/io/coded_stream.h."; - // Don't warn again for this stream. - total_bytes_warning_threshold_ = -1; + // Don't warn again for this stream, and print total size at the end. + total_bytes_warning_threshold_ = -2; } const void* void_buffer; int buffer_size; - if (input_->Next(&void_buffer, &buffer_size)) { + if (NextNonEmpty(input_, &void_buffer, &buffer_size)) { buffer_ = reinterpret_cast(void_buffer); buffer_end_ = buffer_ + buffer_size; GOOGLE_CHECK_GE(buffer_size, 0); diff --git a/cpp/thirdparty/protobuf-2.3.0/src/google/protobuf/io/coded_stream.h b/cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/io/coded_stream.h similarity index 93% rename from cpp/thirdparty/protobuf-2.3.0/src/google/protobuf/io/coded_stream.h rename to cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/io/coded_stream.h index a0cb3c891..66cbee003 100644 --- a/cpp/thirdparty/protobuf-2.3.0/src/google/protobuf/io/coded_stream.h +++ b/cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/io/coded_stream.h @@ -110,14 +110,27 @@ #define GOOGLE_PROTOBUF_IO_CODED_STREAM_H__ #include -#ifndef _MSC_VER -#include -#endif // !_MSC_VER +#ifdef _MSC_VER + #if defined(_M_IX86) && \ + !defined(PROTOBUF_DISABLE_LITTLE_ENDIAN_OPT_FOR_TEST) + #define PROTOBUF_LITTLE_ENDIAN 1 + #endif + #if _MSC_VER >= 1300 + // If MSVC has "/RTCc" set, it will complain about truncating casts at + // runtime. This file contains some intentional truncating casts. + #pragma runtime_checks("c", off) + #endif +#else + #include // __BYTE_ORDER + #if defined(__BYTE_ORDER) && __BYTE_ORDER == __LITTLE_ENDIAN && \ + !defined(PROTOBUF_DISABLE_LITTLE_ENDIAN_OPT_FOR_TEST) + #define PROTOBUF_LITTLE_ENDIAN 1 + #endif +#endif #include -#include // for GOOGLE_PREDICT_TRUE macro -namespace google { +namespace google { namespace protobuf { class DescriptorPool; @@ -157,6 +170,9 @@ class LIBPROTOBUF_EXPORT CodedInputStream { // successfully and the stream's byte limit. ~CodedInputStream(); + // Return true if this CodedInputStream reads from a flat array instead of + // a ZeroCopyInputStream. + inline bool IsFlat() const; // Skips a number of bytes. Returns false if an underlying read error // occurs. @@ -298,7 +314,10 @@ class LIBPROTOBUF_EXPORT CodedInputStream { // Returns the number of bytes left until the nearest limit on the // stack is hit, or -1 if no limits are in place. - int BytesUntilLimit(); + int BytesUntilLimit() const; + + // Returns current position relative to the beginning of the input stream. + int CurrentPosition() const; // Total Bytes Limit ----------------------------------------------- // To prevent malicious users from sending excessively large messages @@ -314,8 +333,9 @@ class LIBPROTOBUF_EXPORT CodedInputStream { // cause integer overflows is 512MB. The default limit is 64MB. Apps // should set shorter limits if possible. If warning_threshold is not -1, // a warning will be printed to stderr after warning_threshold bytes are - // read. An error will always be printed to stderr if the limit is - // reached. + // read. For backwards compatibility all negative values get squached to -1, + // as other negative values might have special internal meanings. + // An error will always be printed to stderr if the limit is reached. // // This is unrelated to PushLimit()/PopLimit(). // @@ -342,9 +362,10 @@ class LIBPROTOBUF_EXPORT CodedInputStream { // messages and groups. CodedInputStream keeps track of this because it // is the only object that is passed down the stack during parsing. - // Sets the maximum recursion depth. The default is 64. + // Sets the maximum recursion depth. The default is 100. void SetRecursionLimit(int limit); + // Increments the current recursion depth. Returns true if the depth is // under the limit, false if it has gone over. bool IncrementRecursionDepth(); @@ -420,7 +441,8 @@ class LIBPROTOBUF_EXPORT CodedInputStream { // // Note that this feature is ignored when parsing "lite" messages as they do // not have descriptors. - void SetExtensionRegistry(DescriptorPool* pool, MessageFactory* factory); + void SetExtensionRegistry(const DescriptorPool* pool, + MessageFactory* factory); // Get the DescriptorPool set via SetExtensionRegistry(), or NULL if no pool // has been provided. @@ -469,6 +491,11 @@ class LIBPROTOBUF_EXPORT CodedInputStream { // Maximum number of bytes to read, period. This is unrelated to // current_limit_. Set using SetTotalBytesLimit(). int total_bytes_limit_; + + // If positive/0: Limit for bytes read after which a warning due to size + // should be logged. + // If -1: Printing of warning disabled. Can be set by client. + // If -2: Internal: Limit has been reached, print full size when destructing. int total_bytes_warning_threshold_; // Current recursion depth, controlled by IncrementRecursionDepth() and @@ -526,7 +553,8 @@ class LIBPROTOBUF_EXPORT CodedInputStream { static const int kDefaultTotalBytesLimit = 64 << 20; // 64MB static const int kDefaultTotalBytesWarningThreshold = 32 << 20; // 32MB - static const int kDefaultRecursionLimit = 64; + + static int default_recursion_limit_; // 100 by default. }; // Class which encodes and writes binary data which is composed of varint- @@ -554,7 +582,7 @@ class LIBPROTOBUF_EXPORT CodedInputStream { // char text[] = "Hello world!"; // // int coded_size = sizeof(magic_number) + -// CodedOutputStream::Varint32Size(strlen(text)) + +// CodedOutputStream::VarintSize32(strlen(text)) + // strlen(text); // // uint8* buffer = @@ -667,6 +695,21 @@ class LIBPROTOBUF_EXPORT CodedOutputStream { // If negative, 10 bytes. Otheriwse, same as VarintSize32(). static int VarintSize32SignExtended(int32 value); + // Compile-time equivalent of VarintSize32(). + template + struct StaticVarintSize32 { + static const int value = + (Value < (1 << 7)) + ? 1 + : (Value < (1 << 14)) + ? 2 + : (Value < (1 << 21)) + ? 3 + : (Value < (1 << 28)) + ? 4 + : 5; + }; + // Returns the total number of bytes written since this object was created. inline int ByteCount() const; @@ -735,8 +778,7 @@ inline bool CodedInputStream::ReadVarint64(uint64* value) { inline const uint8* CodedInputStream::ReadLittleEndian32FromArray( const uint8* buffer, uint32* value) { -#if !defined(PROTOBUF_DISABLE_LITTLE_ENDIAN_OPT_FOR_TEST) && \ - defined(__BYTE_ORDER) && __BYTE_ORDER == __LITTLE_ENDIAN +#if defined(PROTOBUF_LITTLE_ENDIAN) memcpy(value, buffer, sizeof(*value)); return buffer + sizeof(*value); #else @@ -751,8 +793,7 @@ inline const uint8* CodedInputStream::ReadLittleEndian32FromArray( inline const uint8* CodedInputStream::ReadLittleEndian64FromArray( const uint8* buffer, uint64* value) { -#if !defined(PROTOBUF_DISABLE_LITTLE_ENDIAN_OPT_FOR_TEST) && \ - defined(__BYTE_ORDER) && __BYTE_ORDER == __LITTLE_ENDIAN +#if defined(PROTOBUF_LITTLE_ENDIAN) memcpy(value, buffer, sizeof(*value)); return buffer + sizeof(*value); #else @@ -771,9 +812,8 @@ inline const uint8* CodedInputStream::ReadLittleEndian64FromArray( } inline bool CodedInputStream::ReadLittleEndian32(uint32* value) { -#if !defined(PROTOBUF_DISABLE_LITTLE_ENDIAN_OPT_FOR_TEST) && \ - defined(__BYTE_ORDER) && __BYTE_ORDER == __LITTLE_ENDIAN - if (GOOGLE_PREDICT_TRUE(BufferSize() >= sizeof(*value))) { +#if defined(PROTOBUF_LITTLE_ENDIAN) + if (GOOGLE_PREDICT_TRUE(BufferSize() >= static_cast(sizeof(*value)))) { memcpy(value, buffer_, sizeof(*value)); Advance(sizeof(*value)); return true; @@ -786,9 +826,8 @@ inline bool CodedInputStream::ReadLittleEndian32(uint32* value) { } inline bool CodedInputStream::ReadLittleEndian64(uint64* value) { -#if !defined(PROTOBUF_DISABLE_LITTLE_ENDIAN_OPT_FOR_TEST) && \ - defined(__BYTE_ORDER) && __BYTE_ORDER == __LITTLE_ENDIAN - if (GOOGLE_PREDICT_TRUE(BufferSize() >= sizeof(*value))) { +#if defined(PROTOBUF_LITTLE_ENDIAN) + if (GOOGLE_PREDICT_TRUE(BufferSize() >= static_cast(sizeof(*value)))) { memcpy(value, buffer_, sizeof(*value)); Advance(sizeof(*value)); return true; @@ -867,7 +906,9 @@ inline bool CodedInputStream::ExpectAtEnd() { // If we are at a limit we know no more bytes can be read. Otherwise, it's // hard to say without calling Refresh(), and we'd rather not do that. - if (buffer_ == buffer_end_ && buffer_size_after_limit_ != 0) { + if (buffer_ == buffer_end_ && + ((buffer_size_after_limit_ != 0) || + (total_bytes_read_ == current_limit_))) { last_tag_ = 0; // Pretend we called ReadTag()... legitimate_message_end_ = true; // ... and it hit EOF. return true; @@ -876,6 +917,10 @@ inline bool CodedInputStream::ExpectAtEnd() { } } +inline int CodedInputStream::CurrentPosition() const { + return total_bytes_read_ - (BufferSize() + buffer_size_after_limit_); +} + inline uint8* CodedOutputStream::GetDirectBufferForNBytesAndAdvance(int size) { if (buffer_size_ < size) { return NULL; @@ -915,8 +960,7 @@ inline uint8* CodedOutputStream::WriteVarint32SignExtendedToArray( inline uint8* CodedOutputStream::WriteLittleEndian32ToArray(uint32 value, uint8* target) { -#if !defined(PROTOBUF_DISABLE_LITTLE_ENDIAN_OPT_FOR_TEST) && \ - defined(__BYTE_ORDER) && __BYTE_ORDER == __LITTLE_ENDIAN +#if defined(PROTOBUF_LITTLE_ENDIAN) memcpy(target, &value, sizeof(value)); #else target[0] = static_cast(value); @@ -929,8 +973,7 @@ inline uint8* CodedOutputStream::WriteLittleEndian32ToArray(uint32 value, inline uint8* CodedOutputStream::WriteLittleEndian64ToArray(uint64 value, uint8* target) { -#if !defined(PROTOBUF_DISABLE_LITTLE_ENDIAN_OPT_FOR_TEST) && \ - defined(__BYTE_ORDER) && __BYTE_ORDER == __LITTLE_ENDIAN +#if defined(PROTOBUF_LITTLE_ENDIAN) memcpy(target, &value, sizeof(value)); #else uint32 part0 = static_cast(value); @@ -983,12 +1026,12 @@ inline int CodedOutputStream::VarintSize32SignExtended(int32 value) { } inline void CodedOutputStream::WriteString(const string& str) { - WriteRaw(str.data(), str.size()); + WriteRaw(str.data(), static_cast(str.size())); } inline uint8* CodedOutputStream::WriteStringToArray( const string& str, uint8* target) { - return WriteRawToArray(str.data(), str.size(), target); + return WriteRawToArray(str.data(), static_cast(str.size()), target); } inline int CodedOutputStream::ByteCount() const { @@ -1017,7 +1060,7 @@ inline void CodedInputStream::DecrementRecursionDepth() { if (recursion_depth_ > 0) --recursion_depth_; } -inline void CodedInputStream::SetExtensionRegistry(DescriptorPool* pool, +inline void CodedInputStream::SetExtensionRegistry(const DescriptorPool* pool, MessageFactory* factory) { extension_pool_ = pool; extension_factory_ = factory; @@ -1044,14 +1087,12 @@ inline CodedInputStream::CodedInputStream(ZeroCopyInputStream* input) last_tag_(0), legitimate_message_end_(false), aliasing_enabled_(false), - // NOTE(michael.berlin.xtreemfs@gmail.com): Backported fix for protobuf - // issue 164, see http://code.google.com/p/protobuf/issues/detail?id=164#c1 current_limit_(kint32max), buffer_size_after_limit_(0), total_bytes_limit_(kDefaultTotalBytesLimit), total_bytes_warning_threshold_(kDefaultTotalBytesWarningThreshold), recursion_depth_(0), - recursion_limit_(kDefaultRecursionLimit), + recursion_limit_(default_recursion_limit_), extension_pool_(NULL), extension_factory_(NULL) { // Eagerly Refresh() so buffer space is immediately available. @@ -1072,21 +1113,24 @@ inline CodedInputStream::CodedInputStream(const uint8* buffer, int size) total_bytes_limit_(kDefaultTotalBytesLimit), total_bytes_warning_threshold_(kDefaultTotalBytesWarningThreshold), recursion_depth_(0), - recursion_limit_(kDefaultRecursionLimit), + recursion_limit_(default_recursion_limit_), extension_pool_(NULL), extension_factory_(NULL) { // Note that setting current_limit_ == size is important to prevent some // code paths from trying to access input_ and segfaulting. } -inline CodedInputStream::~CodedInputStream() { - if (input_ != NULL) { - BackUpInputToCurrentPosition(); - } +inline bool CodedInputStream::IsFlat() const { + return input_ == NULL; } } // namespace io } // namespace protobuf + +#if defined(_MSC_VER) && _MSC_VER >= 1300 + #pragma runtime_checks("c", restore) +#endif // _MSC_VER + } // namespace google #endif // GOOGLE_PROTOBUF_IO_CODED_STREAM_H__ diff --git a/cpp/thirdparty/protobuf-2.3.0/src/google/protobuf/io/coded_stream_inl.h b/cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/io/coded_stream_inl.h similarity index 89% rename from cpp/thirdparty/protobuf-2.3.0/src/google/protobuf/io/coded_stream_inl.h rename to cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/io/coded_stream_inl.h index e9799d477..144f44f06 100644 --- a/cpp/thirdparty/protobuf-2.3.0/src/google/protobuf/io/coded_stream_inl.h +++ b/cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/io/coded_stream_inl.h @@ -38,7 +38,7 @@ #include #include -#include +#include namespace google { namespace protobuf { @@ -50,8 +50,12 @@ inline bool CodedInputStream::InternalReadStringInline(string* buffer, if (BufferSize() >= size) { STLStringResizeUninitialized(buffer, size); - memcpy(string_as_array(buffer), buffer_, size); - Advance(size); + // When buffer is empty, string_as_array(buffer) will return NULL but memcpy + // requires non-NULL pointers even when size is 0. Hench this check. + if (size > 0) { + memcpy(string_as_array(buffer), buffer_, size); + Advance(size); + } return true; } diff --git a/cpp/thirdparty/protobuf-2.3.0/src/google/protobuf/io/coded_stream_unittest.cc b/cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/io/coded_stream_unittest.cc similarity index 92% rename from cpp/thirdparty/protobuf-2.3.0/src/google/protobuf/io/coded_stream_unittest.cc rename to cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/io/coded_stream_unittest.cc index 7d2983325..2daab194c 100644 --- a/cpp/thirdparty/protobuf-2.3.0/src/google/protobuf/io/coded_stream_unittest.cc +++ b/cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/io/coded_stream_unittest.cc @@ -44,7 +44,6 @@ #include #include #include -#include // This declares an unsigned long long integer literal in a portable way. @@ -125,6 +124,13 @@ namespace { class CodedStreamTest : public testing::Test { protected: + // Helper method used by tests for bytes warning. See implementation comment + // for further information. + static void SetupTotalBytesLimitWarningTest( + int total_bytes_limit, int warning_threshold, + vector* out_errors, vector* out_warnings); + + // Buffer used during most of the tests. This assumes tests run sequentially. static const int kBufferSize = 1024 * 64; static uint8 buffer_[kBufferSize]; }; @@ -208,6 +214,33 @@ TEST_2D(CodedStreamTest, ReadTag, kVarintCases, kBlockSizes) { EXPECT_EQ(kVarintCases_case.size, input.ByteCount()); } +// This is the regression test that verifies that there is no issues +// with the empty input buffers handling. +TEST_F(CodedStreamTest, EmptyInputBeforeEos) { + class In : public ZeroCopyInputStream { + public: + In() : count_(0) {} + private: + virtual bool Next(const void** data, int* size) { + *data = NULL; + *size = 0; + return count_++ < 2; + } + virtual void BackUp(int count) { + GOOGLE_LOG(FATAL) << "Tests never call this."; + } + virtual bool Skip(int count) { + GOOGLE_LOG(FATAL) << "Tests never call this."; + return false; + } + virtual int64 ByteCount() const { return 0; } + int count_; + } in; + CodedInputStream input(&in); + input.ReadTag(); + EXPECT_TRUE(input.ConsumedEntireMessage()); +} + TEST_1D(CodedStreamTest, ExpectTag, kVarintCases) { // Leave one byte at the beginning of the buffer so we can read it // to force the first buffer to be loaded. @@ -995,6 +1028,60 @@ TEST_F(CodedStreamTest, TotalBytesLimitNotValidMessageEnd) { EXPECT_FALSE(coded_input.ConsumedEntireMessage()); } +// This method is used by the tests below. +// It constructs a CodedInputStream with the given limits and tries to read 2KiB +// of data from it. Then it returns the logged errors and warnings in the given +// vectors. +void CodedStreamTest::SetupTotalBytesLimitWarningTest( + int total_bytes_limit, int warning_threshold, + vector* out_errors, vector* out_warnings) { + ArrayInputStream raw_input(buffer_, sizeof(buffer_), 128); + + ScopedMemoryLog scoped_log; + { + CodedInputStream input(&raw_input); + input.SetTotalBytesLimit(total_bytes_limit, warning_threshold); + string str; + EXPECT_TRUE(input.ReadString(&str, 2048)); + } + + *out_errors = scoped_log.GetMessages(ERROR); + *out_warnings = scoped_log.GetMessages(WARNING); +} + +TEST_F(CodedStreamTest, TotalBytesLimitWarning) { + vector errors; + vector warnings; + SetupTotalBytesLimitWarningTest(10240, 1024, &errors, &warnings); + + EXPECT_EQ(0, errors.size()); + + ASSERT_EQ(2, warnings.size()); + EXPECT_PRED_FORMAT2(testing::IsSubstring, + "Reading dangerously large protocol message. If the message turns out to " + "be larger than 10240 bytes, parsing will be halted for security reasons.", + warnings[0]); + EXPECT_PRED_FORMAT2(testing::IsSubstring, + "The total number of bytes read was 2048", + warnings[1]); +} + +TEST_F(CodedStreamTest, TotalBytesLimitWarningDisabled) { + vector errors; + vector warnings; + + // Test with -1 + SetupTotalBytesLimitWarningTest(10240, -1, &errors, &warnings); + EXPECT_EQ(0, errors.size()); + EXPECT_EQ(0, warnings.size()); + + // Test again with -2, expecting the same result + SetupTotalBytesLimitWarningTest(10240, -2, &errors, &warnings); + EXPECT_EQ(0, errors.size()); + EXPECT_EQ(0, warnings.size()); +} + + TEST_F(CodedStreamTest, RecursionLimit) { ArrayInputStream input(buffer_, sizeof(buffer_)); CodedInputStream coded_input(&input); @@ -1032,6 +1119,7 @@ TEST_F(CodedStreamTest, RecursionLimit) { EXPECT_FALSE(coded_input.IncrementRecursionDepth()); // 7 } + class ReallyBigInputStream : public ZeroCopyInputStream { public: ReallyBigInputStream() : backup_amount_(0), buffer_count_(0) {} diff --git a/cpp/thirdparty/protobuf-2.3.0/src/google/protobuf/io/gzip_stream.cc b/cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/io/gzip_stream.cc similarity index 88% rename from cpp/thirdparty/protobuf-2.3.0/src/google/protobuf/io/gzip_stream.cc rename to cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/io/gzip_stream.cc index 84d277f48..fe1f3319d 100644 --- a/cpp/thirdparty/protobuf-2.3.0/src/google/protobuf/io/gzip_stream.cc +++ b/cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/io/gzip_stream.cc @@ -73,6 +73,17 @@ GzipInputStream::~GzipInputStream() { zerror_ = inflateEnd(&zcontext_); } +static inline int internalInflateInit2( + z_stream* zcontext, GzipInputStream::Format format) { + int windowBitsFormat = 0; + switch (format) { + case GzipInputStream::GZIP: windowBitsFormat = 16; break; + case GzipInputStream::AUTO: windowBitsFormat = 32; break; + case GzipInputStream::ZLIB: windowBitsFormat = 0; break; + } + return inflateInit2(zcontext, /* windowBits */15 | windowBitsFormat); +} + int GzipInputStream::Inflate(int flush) { if ((zerror_ == Z_OK) && (zcontext_.avail_out == 0)) { // previous inflate filled output buffer. don't change input params yet. @@ -89,14 +100,7 @@ int GzipInputStream::Inflate(int flush) { zcontext_.next_in = static_cast(const_cast(in)); zcontext_.avail_in = in_size; if (first) { - int windowBitsFormat = 0; - switch (format_) { - case GZIP: windowBitsFormat = 16; break; - case AUTO: windowBitsFormat = 32; break; - case ZLIB: windowBitsFormat = 0; break; - } - int error = inflateInit2(&zcontext_, - /* windowBits */15 | windowBitsFormat); + int error = internalInflateInit2(&zcontext_, format_); if (error != Z_OK) { return error; } @@ -127,9 +131,21 @@ bool GzipInputStream::Next(const void** data, int* size) { return true; } if (zerror_ == Z_STREAM_END) { - *data = NULL; - *size = 0; - return false; + if (zcontext_.next_out != NULL) { + // sub_stream_ may have concatenated streams to follow + zerror_ = inflateEnd(&zcontext_); + if (zerror_ != Z_OK) { + return false; + } + zerror_ = internalInflateInit2(&zcontext_, format_); + if (zerror_ != Z_OK) { + return false; + } + } else { + *data = NULL; + *size = 0; + return false; + } } zerror_ = Inflate(Z_NO_FLUSH); if ((zerror_ == Z_STREAM_END) && (zcontext_.next_out == NULL)) { @@ -183,16 +199,6 @@ GzipOutputStream::GzipOutputStream(ZeroCopyOutputStream* sub_stream, Init(sub_stream, options); } -GzipOutputStream::GzipOutputStream( - ZeroCopyOutputStream* sub_stream, Format format, int buffer_size) { - Options options; - options.format = format; - if (buffer_size != -1) { - options.buffer_size = buffer_size; - } - Init(sub_stream, options); -} - void GzipOutputStream::Init(ZeroCopyOutputStream* sub_stream, const Options& options) { sub_stream_ = sub_stream; @@ -251,8 +257,7 @@ int GzipOutputStream::Deflate(int flush) { } error = deflate(&zcontext_, flush); } while (error == Z_OK && zcontext_.avail_out == 0); - if (((flush == Z_FULL_FLUSH) || (flush == Z_FINISH)) - && (zcontext_.avail_out != sub_data_size_)) { + if ((flush == Z_FULL_FLUSH) || (flush == Z_FINISH)) { // Notify lower layer of data. sub_stream_->BackUp(zcontext_.avail_out); // We don't own the buffer anymore. @@ -294,10 +299,11 @@ int64 GzipOutputStream::ByteCount() const { } bool GzipOutputStream::Flush() { - do { - zerror_ = Deflate(Z_FULL_FLUSH); - } while (zerror_ == Z_OK); - return zerror_ == Z_OK; + zerror_ = Deflate(Z_FULL_FLUSH); + // Return true if the flush succeeded or if it was a no-op. + return (zerror_ == Z_OK) || + (zerror_ == Z_BUF_ERROR && zcontext_.avail_in == 0 && + zcontext_.avail_out != 0); } bool GzipOutputStream::Close() { diff --git a/cpp/thirdparty/protobuf-2.3.0/src/google/protobuf/io/gzip_stream.h b/cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/io/gzip_stream.h similarity index 94% rename from cpp/thirdparty/protobuf-2.3.0/src/google/protobuf/io/gzip_stream.h rename to cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/io/gzip_stream.h index 65dbc5b55..365e9ea5f 100644 --- a/cpp/thirdparty/protobuf-2.3.0/src/google/protobuf/io/gzip_stream.h +++ b/cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/io/gzip_stream.h @@ -45,6 +45,7 @@ #include +#include #include namespace google { @@ -117,7 +118,7 @@ class LIBPROTOBUF_EXPORT GzipOutputStream : public ZeroCopyOutputStream { ZLIB = 2, }; - struct Options { + struct LIBPROTOBUF_EXPORT Options { // Defaults to GZIP. Format format; @@ -144,12 +145,6 @@ class LIBPROTOBUF_EXPORT GzipOutputStream : public ZeroCopyOutputStream { ZeroCopyOutputStream* sub_stream, const Options& options); - // DEPRECATED: Use one of the above constructors instead. - GzipOutputStream( - ZeroCopyOutputStream* sub_stream, - Format format, - int buffer_size = -1) GOOGLE_ATTRIBUTE_DEPRECATED; - virtual ~GzipOutputStream(); // Return last error message or NULL if no error. @@ -165,6 +160,13 @@ class LIBPROTOBUF_EXPORT GzipOutputStream : public ZeroCopyOutputStream { // necessary. // Compression may be less efficient stopping and starting around flushes. // Returns true if no error. + // + // Please ensure that block size is > 6. Here is an excerpt from the zlib + // doc that explains why: + // + // In the case of a Z_FULL_FLUSH or Z_SYNC_FLUSH, make sure that avail_out + // is greater than six to avoid repeated flush markers due to + // avail_out == 0 on return. bool Flush(); // Writes out all data and closes the gzip stream. diff --git a/cpp/thirdparty/protobuf-2.3.0/src/google/protobuf/io/gzip_stream_unittest.sh b/cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/io/gzip_stream_unittest.sh similarity index 100% rename from cpp/thirdparty/protobuf-2.3.0/src/google/protobuf/io/gzip_stream_unittest.sh rename to cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/io/gzip_stream_unittest.sh diff --git a/cpp/thirdparty/protobuf-2.3.0/src/google/protobuf/io/package_info.h b/cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/io/package_info.h similarity index 100% rename from cpp/thirdparty/protobuf-2.3.0/src/google/protobuf/io/package_info.h rename to cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/io/package_info.h diff --git a/cpp/thirdparty/protobuf-2.3.0/src/google/protobuf/io/printer.cc b/cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/io/printer.cc similarity index 91% rename from cpp/thirdparty/protobuf-2.3.0/src/google/protobuf/io/printer.cc rename to cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/io/printer.cc index c7d3074d4..d2bf3f549 100644 --- a/cpp/thirdparty/protobuf-2.3.0/src/google/protobuf/io/printer.cc +++ b/cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/io/printer.cc @@ -35,7 +35,6 @@ #include #include #include -#include namespace google { namespace protobuf { @@ -51,8 +50,8 @@ Printer::Printer(ZeroCopyOutputStream* output, char variable_delimiter) } Printer::~Printer() { - // Only BackUp() if we're sure we've successfully called Next() at least once. - if (buffer_size_ > 0) { + // Only BackUp() if we have called Next() at least once and never failed. + if (buffer_size_ > 0 && !failed_) { output_->BackUp(buffer_size_); } } @@ -132,6 +131,17 @@ void Printer::Print(const char* text, Print(vars, text); } +void Printer::Print(const char* text, + const char* variable1, const string& value1, + const char* variable2, const string& value2, + const char* variable3, const string& value3) { + map vars; + vars[variable1] = value1; + vars[variable2] = value2; + vars[variable3] = value3; + Print(vars, text); +} + void Printer::Indent() { indent_ += " "; } @@ -158,7 +168,7 @@ void Printer::WriteRaw(const char* data, int size) { if (failed_) return; if (size == 0) return; - if (at_start_of_line_) { + if (at_start_of_line_ && (size > 0) && (data[0] != '\n')) { // Insert an indent. at_start_of_line_ = false; WriteRaw(indent_.data(), indent_.size()); diff --git a/cpp/thirdparty/protobuf-2.3.0/src/google/protobuf/io/printer.h b/cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/io/printer.h similarity index 93% rename from cpp/thirdparty/protobuf-2.3.0/src/google/protobuf/io/printer.h rename to cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/io/printer.h index de0853891..5be48543a 100644 --- a/cpp/thirdparty/protobuf-2.3.0/src/google/protobuf/io/printer.h +++ b/cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/io/printer.h @@ -82,7 +82,11 @@ class LIBPROTOBUF_EXPORT Printer { // Like the first Print(), except the substitutions are given as parameters. void Print(const char* text, const char* variable1, const string& value1, const char* variable2, const string& value2); - // TODO(kenton): Overloaded versions with more variables? Two seems + // Like the first Print(), except the substitutions are given as parameters. + void Print(const char* text, const char* variable1, const string& value1, + const char* variable2, const string& value2, + const char* variable3, const string& value3); + // TODO(kenton): Overloaded versions with more variables? Three seems // to be enough. // Indent text by two spaces. After calling Indent(), two spaces will be diff --git a/cpp/thirdparty/protobuf-2.3.0/src/google/protobuf/io/printer_unittest.cc b/cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/io/printer_unittest.cc similarity index 91% rename from cpp/thirdparty/protobuf-2.3.0/src/google/protobuf/io/printer_unittest.cc rename to cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/io/printer_unittest.cc index 580a53da2..c9b303596 100644 --- a/cpp/thirdparty/protobuf-2.3.0/src/google/protobuf/io/printer_unittest.cc +++ b/cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/io/printer_unittest.cc @@ -220,7 +220,7 @@ TEST(Printer, Indenting) { } // Death tests do not work on Windows as of yet. -#ifdef GTEST_HAS_DEATH_TEST +#ifdef PROTOBUF_HAS_DEATH_TEST TEST(Printer, Death) { char buffer[8192]; @@ -231,9 +231,33 @@ TEST(Printer, Death) { EXPECT_DEBUG_DEATH(printer.Print("$unclosed"), "Unclosed variable name"); EXPECT_DEBUG_DEATH(printer.Outdent(), "without matching Indent"); } -#endif // GTEST_HAS_DEATH_TEST +#endif // PROTOBUF__HAS_DEATH_TEST -TEST(Printer, WriteFailure) { +TEST(Printer, WriteFailurePartial) { + char buffer[17]; + + ArrayOutputStream output(buffer, sizeof(buffer)); + Printer printer(&output, '$'); + + // Print 16 bytes to almost fill the buffer (should not fail). + printer.Print("0123456789abcdef"); + EXPECT_FALSE(printer.failed()); + + // Try to print 2 chars. Only one fits. + printer.Print("<>"); + EXPECT_TRUE(printer.failed()); + + // Anything else should fail too. + printer.Print(" "); + EXPECT_TRUE(printer.failed()); + printer.Print("blah"); + EXPECT_TRUE(printer.failed()); + + // Buffer should contain the first 17 bytes written. + EXPECT_EQ("0123456789abcdef<", string(buffer, sizeof(buffer))); +} + +TEST(Printer, WriteFailureExact) { char buffer[16]; ArrayOutputStream output(buffer, sizeof(buffer)); diff --git a/cpp/thirdparty/protobuf-2.3.0/src/google/protobuf/io/tokenizer.cc b/cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/io/tokenizer.cc similarity index 58% rename from cpp/thirdparty/protobuf-2.3.0/src/google/protobuf/io/tokenizer.cc rename to cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/io/tokenizer.cc index 38fa351c4..a022b71db 100644 --- a/cpp/thirdparty/protobuf-2.3.0/src/google/protobuf/io/tokenizer.cc +++ b/cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/io/tokenizer.cc @@ -89,8 +89,11 @@ // exactly pretty. #include +#include +#include #include #include +#include namespace google { namespace protobuf { @@ -118,6 +121,8 @@ namespace { CHARACTER_CLASS(Whitespace, c == ' ' || c == '\n' || c == '\t' || c == '\r' || c == '\v' || c == '\f'); +CHARACTER_CLASS(WhitespaceNoNewline, c == ' ' || c == '\t' || + c == '\r' || c == '\v' || c == '\f'); CHARACTER_CLASS(Unprintable, c < ' ' && c > '\0'); @@ -187,12 +192,14 @@ Tokenizer::Tokenizer(ZeroCopyInputStream* input, read_error_(false), line_(0), column_(0), - token_start_(-1), + record_target_(NULL), + record_start_(-1), allow_f_after_float_(false), comment_style_(CPP_COMMENT_STYLE) { current_.line = 0; current_.column = 0; + current_.end_column = 0; current_.type = TYPE_START; Refresh(); @@ -237,9 +244,9 @@ void Tokenizer::Refresh() { } // If we're in a token, append the rest of the buffer to it. - if (token_start_ >= 0 && token_start_ < buffer_size_) { - current_.text.append(buffer_ + token_start_, buffer_size_ - token_start_); - token_start_ = 0; + if (record_target_ != NULL && record_start_ < buffer_size_) { + record_target_->append(buffer_ + record_start_, buffer_size_ - record_start_); + record_start_ = 0; } const void* data = NULL; @@ -260,23 +267,34 @@ void Tokenizer::Refresh() { current_char_ = buffer_[0]; } +inline void Tokenizer::RecordTo(string* target) { + record_target_ = target; + record_start_ = buffer_pos_; +} + +inline void Tokenizer::StopRecording() { + // Note: The if() is necessary because some STL implementations crash when + // you call string::append(NULL, 0), presumably because they are trying to + // be helpful by detecting the NULL pointer, even though there's nothing + // wrong with reading zero bytes from NULL. + if (buffer_pos_ != record_start_) { + record_target_->append(buffer_ + record_start_, buffer_pos_ - record_start_); + } + record_target_ = NULL; + record_start_ = -1; +} + inline void Tokenizer::StartToken() { - token_start_ = buffer_pos_; current_.type = TYPE_START; // Just for the sake of initializing it. current_.text.clear(); current_.line = line_; current_.column = column_; + RecordTo(¤t_.text); } inline void Tokenizer::EndToken() { - // Note: The if() is necessary because some STL implementations crash when - // you call string::append(NULL, 0), presumably because they are trying to - // be helpful by detecting the NULL pointer, even though there's nothing - // wrong with reading zero bytes from NULL. - if (buffer_pos_ != token_start_) { - current_.text.append(buffer_ + token_start_, buffer_pos_ - token_start_); - } - token_start_ = -1; + StopRecording(); + current_.end_column = column_; } // ------------------------------------------------------------------- @@ -351,6 +369,27 @@ void Tokenizer::ConsumeString(char delimiter) { AddError("Expected hex digits for escape sequence."); } // Possibly followed by another hex digit, but again we don't care. + } else if (TryConsume('u')) { + if (!TryConsumeOne() || + !TryConsumeOne() || + !TryConsumeOne() || + !TryConsumeOne()) { + AddError("Expected four hex digits for \\u escape sequence."); + } + } else if (TryConsume('U')) { + // We expect 8 hex digits; but only the range up to 0x10ffff is + // legal. + if (!TryConsume('0') || + !TryConsume('0') || + !(TryConsume('0') || TryConsume('1')) || + !TryConsumeOne() || + !TryConsumeOne() || + !TryConsumeOne() || + !TryConsumeOne() || + !TryConsumeOne()) { + AddError("Expected eight hex digits up to 10ffff for \\U escape " + "sequence"); + } } else { AddError("Invalid escape sequence in string literal."); } @@ -424,26 +463,51 @@ Tokenizer::TokenType Tokenizer::ConsumeNumber(bool started_with_zero, return is_float ? TYPE_FLOAT : TYPE_INTEGER; } -void Tokenizer::ConsumeLineComment() { +void Tokenizer::ConsumeLineComment(string* content) { + if (content != NULL) RecordTo(content); + while (current_char_ != '\0' && current_char_ != '\n') { NextChar(); } TryConsume('\n'); + + if (content != NULL) StopRecording(); } -void Tokenizer::ConsumeBlockComment() { +void Tokenizer::ConsumeBlockComment(string* content) { int start_line = line_; int start_column = column_ - 2; + if (content != NULL) RecordTo(content); + while (true) { while (current_char_ != '\0' && current_char_ != '*' && - current_char_ != '/') { + current_char_ != '/' && + current_char_ != '\n') { NextChar(); } - if (TryConsume('*') && TryConsume('/')) { + if (TryConsume('\n')) { + if (content != NULL) StopRecording(); + + // Consume leading whitespace and asterisk; + ConsumeZeroOrMore(); + if (TryConsume('*')) { + if (TryConsume('/')) { + // End of comment. + break; + } + } + + if (content != NULL) RecordTo(content); + } else if (TryConsume('*') && TryConsume('/')) { // End of comment. + if (content != NULL) { + StopRecording(); + // Strip trailing "*/". + content->erase(content->size() - 2); + } break; } else if (TryConsume('/') && current_char_ == '*') { // Note: We didn't consume the '*' because if there is a '/' after it @@ -454,42 +518,59 @@ void Tokenizer::ConsumeBlockComment() { AddError("End-of-file inside block comment."); error_collector_->AddError( start_line, start_column, " Comment started here."); + if (content != NULL) StopRecording(); break; } } } +Tokenizer::NextCommentStatus Tokenizer::TryConsumeCommentStart() { + if (comment_style_ == CPP_COMMENT_STYLE && TryConsume('/')) { + if (TryConsume('/')) { + return LINE_COMMENT; + } else if (TryConsume('*')) { + return BLOCK_COMMENT; + } else { + // Oops, it was just a slash. Return it. + current_.type = TYPE_SYMBOL; + current_.text = "/"; + current_.line = line_; + current_.column = column_ - 1; + current_.end_column = column_; + return SLASH_NOT_COMMENT; + } + } else if (comment_style_ == SH_COMMENT_STYLE && TryConsume('#')) { + return LINE_COMMENT; + } else { + return NO_COMMENT; + } +} + // ------------------------------------------------------------------- bool Tokenizer::Next() { - TokenType last_token_type = current_.type; - - // Did we skip any characters after the last token? - bool skipped_stuff = false; + previous_ = current_; while (!read_error_) { - if (TryConsumeOne()) { - ConsumeZeroOrMore(); - - } else if (comment_style_ == CPP_COMMENT_STYLE && TryConsume('/')) { - // Starting a comment? - if (TryConsume('/')) { - ConsumeLineComment(); - } else if (TryConsume('*')) { - ConsumeBlockComment(); - } else { - // Oops, it was just a slash. Return it. - current_.type = TYPE_SYMBOL; - current_.text = "/"; - current_.line = line_; - current_.column = column_ - 1; + ConsumeZeroOrMore(); + + switch (TryConsumeCommentStart()) { + case LINE_COMMENT: + ConsumeLineComment(NULL); + continue; + case BLOCK_COMMENT: + ConsumeBlockComment(NULL); + continue; + case SLASH_NOT_COMMENT: return true; - } + case NO_COMMENT: + break; + } - } else if (comment_style_ == SH_COMMENT_STYLE && TryConsume('#')) { - ConsumeLineComment(); + // Check for EOF before continuing. + if (read_error_) break; - } else if (LookingAt() || current_char_ == '\0') { + if (LookingAt() || current_char_ == '\0') { AddError("Invalid control characters encountered in text."); NextChar(); // Skip more unprintable characters, too. But, remember that '\0' is @@ -517,7 +598,9 @@ bool Tokenizer::Next() { if (TryConsumeOne()) { // It's a floating-point number. - if (last_token_type == TYPE_IDENTIFIER && !skipped_stuff) { + if (previous_.type == TYPE_IDENTIFIER && + current_.line == previous_.line && + current_.column == previous_.end_column) { // We don't accept syntax like "blah.123". error_collector_->AddError(line_, column_ - 2, "Need space between identifier and decimal point."); @@ -542,8 +625,6 @@ bool Tokenizer::Next() { EndToken(); return true; } - - skipped_stuff = true; } // EOF @@ -551,9 +632,199 @@ bool Tokenizer::Next() { current_.text.clear(); current_.line = line_; current_.column = column_; + current_.end_column = column_; return false; } +namespace { + +// Helper class for collecting comments and putting them in the right places. +// +// This basically just buffers the most recent comment until it can be decided +// exactly where that comment should be placed. When Flush() is called, the +// current comment goes into either prev_trailing_comments or detached_comments. +// When the CommentCollector is destroyed, the last buffered comment goes into +// next_leading_comments. +class CommentCollector { + public: + CommentCollector(string* prev_trailing_comments, + vector* detached_comments, + string* next_leading_comments) + : prev_trailing_comments_(prev_trailing_comments), + detached_comments_(detached_comments), + next_leading_comments_(next_leading_comments), + has_comment_(false), + is_line_comment_(false), + can_attach_to_prev_(true) { + if (prev_trailing_comments != NULL) prev_trailing_comments->clear(); + if (detached_comments != NULL) detached_comments->clear(); + if (next_leading_comments != NULL) next_leading_comments->clear(); + } + + ~CommentCollector() { + // Whatever is in the buffer is a leading comment. + if (next_leading_comments_ != NULL && has_comment_) { + comment_buffer_.swap(*next_leading_comments_); + } + } + + // About to read a line comment. Get the comment buffer pointer in order to + // read into it. + string* GetBufferForLineComment() { + // We want to combine with previous line comments, but not block comments. + if (has_comment_ && !is_line_comment_) { + Flush(); + } + has_comment_ = true; + is_line_comment_ = true; + return &comment_buffer_; + } + + // About to read a block comment. Get the comment buffer pointer in order to + // read into it. + string* GetBufferForBlockComment() { + if (has_comment_) { + Flush(); + } + has_comment_ = true; + is_line_comment_ = false; + return &comment_buffer_; + } + + void ClearBuffer() { + comment_buffer_.clear(); + has_comment_ = false; + } + + // Called once we know that the comment buffer is complete and is *not* + // connected to the next token. + void Flush() { + if (has_comment_) { + if (can_attach_to_prev_) { + if (prev_trailing_comments_ != NULL) { + prev_trailing_comments_->append(comment_buffer_); + } + can_attach_to_prev_ = false; + } else { + if (detached_comments_ != NULL) { + detached_comments_->push_back(comment_buffer_); + } + } + ClearBuffer(); + } + } + + void DetachFromPrev() { + can_attach_to_prev_ = false; + } + + private: + string* prev_trailing_comments_; + vector* detached_comments_; + string* next_leading_comments_; + + string comment_buffer_; + + // True if any comments were read into comment_buffer_. This can be true even + // if comment_buffer_ is empty, namely if the comment was "/**/". + bool has_comment_; + + // Is the comment in the comment buffer a line comment? + bool is_line_comment_; + + // Is it still possible that we could be reading a comment attached to the + // previous token? + bool can_attach_to_prev_; +}; + +} // namespace + +bool Tokenizer::NextWithComments(string* prev_trailing_comments, + vector* detached_comments, + string* next_leading_comments) { + CommentCollector collector(prev_trailing_comments, detached_comments, + next_leading_comments); + + if (current_.type == TYPE_START) { + collector.DetachFromPrev(); + } else { + // A comment appearing on the same line must be attached to the previous + // declaration. + ConsumeZeroOrMore(); + switch (TryConsumeCommentStart()) { + case LINE_COMMENT: + ConsumeLineComment(collector.GetBufferForLineComment()); + + // Don't allow comments on subsequent lines to be attached to a trailing + // comment. + collector.Flush(); + break; + case BLOCK_COMMENT: + ConsumeBlockComment(collector.GetBufferForBlockComment()); + + ConsumeZeroOrMore(); + if (!TryConsume('\n')) { + // Oops, the next token is on the same line. If we recorded a comment + // we really have no idea which token it should be attached to. + collector.ClearBuffer(); + return Next(); + } + + // Don't allow comments on subsequent lines to be attached to a trailing + // comment. + collector.Flush(); + break; + case SLASH_NOT_COMMENT: + return true; + case NO_COMMENT: + if (!TryConsume('\n')) { + // The next token is on the same line. There are no comments. + return Next(); + } + break; + } + } + + // OK, we are now on the line *after* the previous token. + while (true) { + ConsumeZeroOrMore(); + + switch (TryConsumeCommentStart()) { + case LINE_COMMENT: + ConsumeLineComment(collector.GetBufferForLineComment()); + break; + case BLOCK_COMMENT: + ConsumeBlockComment(collector.GetBufferForBlockComment()); + + // Consume the rest of the line so that we don't interpret it as a + // blank line the next time around the loop. + ConsumeZeroOrMore(); + TryConsume('\n'); + break; + case SLASH_NOT_COMMENT: + return true; + case NO_COMMENT: + if (TryConsume('\n')) { + // Completely blank line. + collector.Flush(); + collector.DetachFromPrev(); + } else { + bool result = Next(); + if (!result || + current_.text == "}" || + current_.text == "]" || + current_.text == ")") { + // It looks like we're at the end of a scope. In this case it + // makes no sense to attach a comment to the following token. + collector.Flush(); + } + return result; + } + break; + } + } +} + // ------------------------------------------------------------------- // Token-parsing helpers. Remember that these don't need to report // errors since any errors should already have been reported while @@ -623,17 +894,138 @@ double Tokenizer::ParseFloat(const string& text) { return result; } +// Helper to append a Unicode code point to a string as UTF8, without bringing +// in any external dependencies. +static void AppendUTF8(uint32 code_point, string* output) { + uint32 tmp = 0; + int len = 0; + if (code_point <= 0x7f) { + tmp = code_point; + len = 1; + } else if (code_point <= 0x07ff) { + tmp = 0x0000c080 | + ((code_point & 0x07c0) << 2) | + (code_point & 0x003f); + len = 2; + } else if (code_point <= 0xffff) { + tmp = 0x00e08080 | + ((code_point & 0xf000) << 4) | + ((code_point & 0x0fc0) << 2) | + (code_point & 0x003f); + len = 3; + } else if (code_point <= 0x1fffff) { + tmp = 0xf0808080 | + ((code_point & 0x1c0000) << 6) | + ((code_point & 0x03f000) << 4) | + ((code_point & 0x000fc0) << 2) | + (code_point & 0x003f); + len = 4; + } else { + // UTF-16 is only defined for code points up to 0x10FFFF, and UTF-8 is + // normally only defined up to there as well. + StringAppendF(output, "\\U%08x", code_point); + return; + } + tmp = ghtonl(tmp); + output->append(reinterpret_cast(&tmp) + sizeof(tmp) - len, len); +} + +// Try to read hex digits from ptr, and stuff the numeric result into +// *result. Returns true if that many digits were successfully consumed. +static bool ReadHexDigits(const char* ptr, int len, uint32* result) { + *result = 0; + if (len == 0) return false; + for (const char* end = ptr + len; ptr < end; ++ptr) { + if (*ptr == '\0') return false; + *result = (*result << 4) + DigitValue(*ptr); + } + return true; +} + +// Handling UTF-16 surrogate pairs. UTF-16 encodes code points in the range +// 0x10000...0x10ffff as a pair of numbers, a head surrogate followed by a trail +// surrogate. These numbers are in a reserved range of Unicode code points, so +// if we encounter such a pair we know how to parse it and convert it into a +// single code point. +static const uint32 kMinHeadSurrogate = 0xd800; +static const uint32 kMaxHeadSurrogate = 0xdc00; +static const uint32 kMinTrailSurrogate = 0xdc00; +static const uint32 kMaxTrailSurrogate = 0xe000; + +static inline bool IsHeadSurrogate(uint32 code_point) { + return (code_point >= kMinHeadSurrogate) && (code_point < kMaxHeadSurrogate); +} + +static inline bool IsTrailSurrogate(uint32 code_point) { + return (code_point >= kMinTrailSurrogate) && + (code_point < kMaxTrailSurrogate); +} + +// Combine a head and trail surrogate into a single Unicode code point. +static uint32 AssembleUTF16(uint32 head_surrogate, uint32 trail_surrogate) { + GOOGLE_DCHECK(IsHeadSurrogate(head_surrogate)); + GOOGLE_DCHECK(IsTrailSurrogate(trail_surrogate)); + return 0x10000 + (((head_surrogate - kMinHeadSurrogate) << 10) | + (trail_surrogate - kMinTrailSurrogate)); +} + +// Convert the escape sequence parameter to a number of expected hex digits. +static inline int UnicodeLength(char key) { + if (key == 'u') return 4; + if (key == 'U') return 8; + return 0; +} + +// Given a pointer to the 'u' or 'U' starting a Unicode escape sequence, attempt +// to parse that sequence. On success, returns a pointer to the first char +// beyond that sequence, and fills in *code_point. On failure, returns ptr +// itself. +static const char* FetchUnicodePoint(const char* ptr, uint32* code_point) { + const char* p = ptr; + // Fetch the code point. + const int len = UnicodeLength(*p++); + if (!ReadHexDigits(p, len, code_point)) + return ptr; + p += len; + + // Check if the code point we read is a "head surrogate." If so, then we + // expect it to be immediately followed by another code point which is a valid + // "trail surrogate," and together they form a UTF-16 pair which decodes into + // a single Unicode point. Trail surrogates may only use \u, not \U. + if (IsHeadSurrogate(*code_point) && *p == '\\' && *(p + 1) == 'u') { + uint32 trail_surrogate; + if (ReadHexDigits(p + 2, 4, &trail_surrogate) && + IsTrailSurrogate(trail_surrogate)) { + *code_point = AssembleUTF16(*code_point, trail_surrogate); + p += 6; + } + // If this failed, then we just emit the head surrogate as a code point. + // It's bogus, but so is the string. + } + + return p; +} + +// The text string must begin and end with single or double quote +// characters. void Tokenizer::ParseStringAppend(const string& text, string* output) { - // Reminder: text[0] is always the quote character. (If text is - // empty, it's invalid, so we'll just return.) - if (text.empty()) { + // Reminder: text[0] is always a quote character. (If text is + // empty, it's invalid, so we'll just return). + const size_t text_size = text.size(); + if (text_size == 0) { GOOGLE_LOG(DFATAL) << " Tokenizer::ParseStringAppend() passed text that could not" " have been tokenized as a string: " << CEscape(text); return; } - output->reserve(output->size() + text.size()); + // Reserve room for new string. The branch is necessary because if + // there is already space available the reserve() call might + // downsize the output. + const size_t new_len = text_size + output->size(); + if (new_len > output->capacity()) { + output->reserve(new_len); + } // Loop through the string copying characters to "output" and // interpreting escape sequences. Note that any invalid escape @@ -671,19 +1063,27 @@ void Tokenizer::ParseStringAppend(const string& text, string* output) { } output->push_back(static_cast(code)); + } else if (*ptr == 'u' || *ptr == 'U') { + uint32 unicode; + const char* end = FetchUnicodePoint(ptr, &unicode); + if (end == ptr) { + // Failure: Just dump out what we saw, don't try to parse it. + output->push_back(*ptr); + } else { + AppendUTF8(unicode, output); + ptr = end - 1; // Because we're about to ++ptr. + } } else { // Some other escape code. output->push_back(TranslateEscape(*ptr)); } - } else if (*ptr == text[0]) { - // Ignore quote matching the starting quote. + } else if (*ptr == text[0] && ptr[1] == '\0') { + // Ignore final quote matching the starting quote. } else { output->push_back(*ptr); } } - - return; } } // namespace io diff --git a/cpp/thirdparty/protobuf-2.3.0/src/google/protobuf/io/tokenizer.h b/cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/io/tokenizer.h similarity index 79% rename from cpp/thirdparty/protobuf-2.3.0/src/google/protobuf/io/tokenizer.h rename to cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/io/tokenizer.h index d115161f5..d85b82f9d 100644 --- a/cpp/thirdparty/protobuf-2.3.0/src/google/protobuf/io/tokenizer.h +++ b/cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/io/tokenizer.h @@ -38,6 +38,7 @@ #define GOOGLE_PROTOBUF_IO_TOKENIZER_H__ #include +#include #include namespace google { @@ -122,16 +123,68 @@ class LIBPROTOBUF_EXPORT Tokenizer { // the token within the input stream. They are zero-based. int line; int column; + int end_column; }; // Get the current token. This is updated when Next() is called. Before // the first call to Next(), current() has type TYPE_START and no contents. const Token& current(); + // Return the previous token -- i.e. what current() returned before the + // previous call to Next(). + const Token& previous(); + // Advance to the next token. Returns false if the end of the input is // reached. bool Next(); + // Like Next(), but also collects comments which appear between the previous + // and next tokens. + // + // Comments which appear to be attached to the previous token are stored + // in *prev_tailing_comments. Comments which appear to be attached to the + // next token are stored in *next_leading_comments. Comments appearing in + // between which do not appear to be attached to either will be added to + // detached_comments. Any of these parameters can be NULL to simply discard + // the comments. + // + // A series of line comments appearing on consecutive lines, with no other + // tokens appearing on those lines, will be treated as a single comment. + // + // Only the comment content is returned; comment markers (e.g. //) are + // stripped out. For block comments, leading whitespace and an asterisk will + // be stripped from the beginning of each line other than the first. Newlines + // are included in the output. + // + // Examples: + // + // optional int32 foo = 1; // Comment attached to foo. + // // Comment attached to bar. + // optional int32 bar = 2; + // + // optional string baz = 3; + // // Comment attached to baz. + // // Another line attached to baz. + // + // // Comment attached to qux. + // // + // // Another line attached to qux. + // optional double qux = 4; + // + // // Detached comment. This is not attached to qux or corge + // // because there are blank lines separating it from both. + // + // optional string corge = 5; + // /* Block comment attached + // * to corge. Leading asterisks + // * will be removed. */ + // /* Block comment attached to + // * grault. */ + // optional int32 grault = 6; + bool NextWithComments(string* prev_trailing_comments, + vector* detached_comments, + string* next_leading_comments); + // Parse helpers --------------------------------------------------- // Parses a TYPE_FLOAT token. This never fails, so long as the text actually @@ -180,6 +233,7 @@ class LIBPROTOBUF_EXPORT Tokenizer { GOOGLE_DISALLOW_EVIL_CONSTRUCTORS(Tokenizer); Token current_; // Returned by current(). + Token previous_; // Returned by previous(). ZeroCopyInputStream* input_; ErrorCollector* error_collector_; @@ -194,11 +248,12 @@ class LIBPROTOBUF_EXPORT Tokenizer { int line_; int column_; - // Position in buffer_ where StartToken() was called. If the token - // started in the previous buffer, this is zero, and current_.text already - // contains the part of the token from the previous buffer. If not - // currently parsing a token, this is -1. - int token_start_; + // String to which text should be appended as we advance through it. + // Call RecordTo(&str) to start recording and StopRecording() to stop. + // E.g. StartToken() calls RecordTo(¤t_.text). record_start_ is the + // position within the current buffer where recording started. + string* record_target_; + int record_start_; // Options. bool allow_f_after_float_; @@ -217,6 +272,9 @@ class LIBPROTOBUF_EXPORT Tokenizer { // Read a new buffer from the input. void Refresh(); + inline void RecordTo(string* target); + inline void StopRecording(); + // Called when the current character is the first character of a new // token (not including whitespace or comments). inline void StartToken(); @@ -249,9 +307,28 @@ class LIBPROTOBUF_EXPORT Tokenizer { TokenType ConsumeNumber(bool started_with_zero, bool started_with_dot); // Consume the rest of a line. - void ConsumeLineComment(); + void ConsumeLineComment(string* content); // Consume until "*/". - void ConsumeBlockComment(); + void ConsumeBlockComment(string* content); + + enum NextCommentStatus { + // Started a line comment. + LINE_COMMENT, + + // Started a block comment. + BLOCK_COMMENT, + + // Consumed a slash, then realized it wasn't a comment. current_ has + // been filled in with a slash token. The caller should return it. + SLASH_NOT_COMMENT, + + // We do not appear to be starting a comment here. + NO_COMMENT + }; + + // If we're at the start of a new comment, consume it and return what kind + // of comment it is. + NextCommentStatus TryConsumeCommentStart(); // ----------------------------------------------------------------- // These helper methods make the parsing code more readable. The @@ -291,6 +368,10 @@ inline const Tokenizer::Token& Tokenizer::current() { return current_; } +inline const Tokenizer::Token& Tokenizer::previous() { + return previous_; +} + inline void Tokenizer::ParseString(const string& text, string* output) { output->clear(); ParseStringAppend(text, output); diff --git a/cpp/thirdparty/protobuf-2.3.0/src/google/protobuf/io/tokenizer_unittest.cc b/cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/io/tokenizer_unittest.cc similarity index 72% rename from cpp/thirdparty/protobuf-2.3.0/src/google/protobuf/io/tokenizer_unittest.cc rename to cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/io/tokenizer_unittest.cc index 358ec567e..dbb5be4f6 100644 --- a/cpp/thirdparty/protobuf-2.3.0/src/google/protobuf/io/tokenizer_unittest.cc +++ b/cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/io/tokenizer_unittest.cc @@ -32,9 +32,10 @@ // Based on original Protocol Buffers design by // Sanjay Ghemawat, Jeff Dean, and others. -#include -#include #include +#include + +#include #include #include @@ -257,6 +258,7 @@ TEST_2D(TokenizerTest, SimpleTokens, kSimpleTokenCases, kBlockSizes) { EXPECT_EQ("", tokenizer.current().text); EXPECT_EQ(0, tokenizer.current().line); EXPECT_EQ(0, tokenizer.current().column); + EXPECT_EQ(0, tokenizer.current().end_column); // Parse the token. ASSERT_TRUE(tokenizer.Next()); @@ -268,6 +270,8 @@ TEST_2D(TokenizerTest, SimpleTokens, kSimpleTokenCases, kBlockSizes) { // Check that it is located at the beginning of the input EXPECT_EQ(0, tokenizer.current().line); EXPECT_EQ(0, tokenizer.current().column); + EXPECT_EQ(kSimpleTokenCases_case.input.size(), + tokenizer.current().end_column); // There should be no more input. EXPECT_FALSE(tokenizer.Next()); @@ -277,6 +281,8 @@ TEST_2D(TokenizerTest, SimpleTokens, kSimpleTokenCases, kBlockSizes) { EXPECT_EQ("", tokenizer.current().text); EXPECT_EQ(0, tokenizer.current().line); EXPECT_EQ(kSimpleTokenCases_case.input.size(), tokenizer.current().column); + EXPECT_EQ(kSimpleTokenCases_case.input.size(), + tokenizer.current().end_column); // There should be no errors. EXPECT_TRUE(error_collector.text_.empty()); @@ -339,76 +345,83 @@ MultiTokenCase kMultiTokenCases[] = { // Test all token types at the same time. { "foo 1 1.2 + 'bar'", { - { Tokenizer::TYPE_IDENTIFIER, "foo" , 0, 0 }, - { Tokenizer::TYPE_INTEGER , "1" , 0, 4 }, - { Tokenizer::TYPE_FLOAT , "1.2" , 0, 6 }, - { Tokenizer::TYPE_SYMBOL , "+" , 0, 10 }, - { Tokenizer::TYPE_STRING , "'bar'", 0, 12 }, - { Tokenizer::TYPE_END , "" , 0, 17 }, + { Tokenizer::TYPE_IDENTIFIER, "foo" , 0, 0, 3 }, + { Tokenizer::TYPE_INTEGER , "1" , 0, 4, 5 }, + { Tokenizer::TYPE_FLOAT , "1.2" , 0, 6, 9 }, + { Tokenizer::TYPE_SYMBOL , "+" , 0, 10, 11 }, + { Tokenizer::TYPE_STRING , "'bar'", 0, 12, 17 }, + { Tokenizer::TYPE_END , "" , 0, 17, 17 }, }}, // Test that consecutive symbols are parsed as separate tokens. { "!@+%", { - { Tokenizer::TYPE_SYMBOL , "!" , 0, 0 }, - { Tokenizer::TYPE_SYMBOL , "@" , 0, 1 }, - { Tokenizer::TYPE_SYMBOL , "+" , 0, 2 }, - { Tokenizer::TYPE_SYMBOL , "%" , 0, 3 }, - { Tokenizer::TYPE_END , "" , 0, 4 }, + { Tokenizer::TYPE_SYMBOL , "!" , 0, 0, 1 }, + { Tokenizer::TYPE_SYMBOL , "@" , 0, 1, 2 }, + { Tokenizer::TYPE_SYMBOL , "+" , 0, 2, 3 }, + { Tokenizer::TYPE_SYMBOL , "%" , 0, 3, 4 }, + { Tokenizer::TYPE_END , "" , 0, 4, 4 }, }}, // Test that newlines affect line numbers correctly. { "foo bar\nrab oof", { - { Tokenizer::TYPE_IDENTIFIER, "foo", 0, 0 }, - { Tokenizer::TYPE_IDENTIFIER, "bar", 0, 4 }, - { Tokenizer::TYPE_IDENTIFIER, "rab", 1, 0 }, - { Tokenizer::TYPE_IDENTIFIER, "oof", 1, 4 }, - { Tokenizer::TYPE_END , "" , 1, 7 }, + { Tokenizer::TYPE_IDENTIFIER, "foo", 0, 0, 3 }, + { Tokenizer::TYPE_IDENTIFIER, "bar", 0, 4, 7 }, + { Tokenizer::TYPE_IDENTIFIER, "rab", 1, 0, 3 }, + { Tokenizer::TYPE_IDENTIFIER, "oof", 1, 4, 7 }, + { Tokenizer::TYPE_END , "" , 1, 7, 7 }, }}, // Test that tabs affect column numbers correctly. { "foo\tbar \tbaz", { - { Tokenizer::TYPE_IDENTIFIER, "foo", 0, 0 }, - { Tokenizer::TYPE_IDENTIFIER, "bar", 0, 8 }, - { Tokenizer::TYPE_IDENTIFIER, "baz", 0, 16 }, - { Tokenizer::TYPE_END , "" , 0, 19 }, + { Tokenizer::TYPE_IDENTIFIER, "foo", 0, 0, 3 }, + { Tokenizer::TYPE_IDENTIFIER, "bar", 0, 8, 11 }, + { Tokenizer::TYPE_IDENTIFIER, "baz", 0, 16, 19 }, + { Tokenizer::TYPE_END , "" , 0, 19, 19 }, + }}, + + // Test that tabs in string literals affect column numbers correctly. + { "\"foo\tbar\" baz", { + { Tokenizer::TYPE_STRING , "\"foo\tbar\"", 0, 0, 12 }, + { Tokenizer::TYPE_IDENTIFIER, "baz" , 0, 13, 16 }, + { Tokenizer::TYPE_END , "" , 0, 16, 16 }, }}, // Test that line comments are ignored. { "foo // This is a comment\n" "bar // This is another comment", { - { Tokenizer::TYPE_IDENTIFIER, "foo", 0, 0 }, - { Tokenizer::TYPE_IDENTIFIER, "bar", 1, 0 }, - { Tokenizer::TYPE_END , "" , 1, 30 }, + { Tokenizer::TYPE_IDENTIFIER, "foo", 0, 0, 3 }, + { Tokenizer::TYPE_IDENTIFIER, "bar", 1, 0, 3 }, + { Tokenizer::TYPE_END , "" , 1, 30, 30 }, }}, // Test that block comments are ignored. { "foo /* This is a block comment */ bar", { - { Tokenizer::TYPE_IDENTIFIER, "foo", 0, 0 }, - { Tokenizer::TYPE_IDENTIFIER, "bar", 0, 34 }, - { Tokenizer::TYPE_END , "" , 0, 37 }, + { Tokenizer::TYPE_IDENTIFIER, "foo", 0, 0, 3 }, + { Tokenizer::TYPE_IDENTIFIER, "bar", 0, 34, 37 }, + { Tokenizer::TYPE_END , "" , 0, 37, 37 }, }}, // Test that sh-style comments are not ignored by default. { "foo # bar\n" "baz", { - { Tokenizer::TYPE_IDENTIFIER, "foo", 0, 0 }, - { Tokenizer::TYPE_SYMBOL , "#" , 0, 4 }, - { Tokenizer::TYPE_IDENTIFIER, "bar", 0, 6 }, - { Tokenizer::TYPE_IDENTIFIER, "baz", 1, 0 }, - { Tokenizer::TYPE_END , "" , 1, 3 }, + { Tokenizer::TYPE_IDENTIFIER, "foo", 0, 0, 3 }, + { Tokenizer::TYPE_SYMBOL , "#" , 0, 4, 5 }, + { Tokenizer::TYPE_IDENTIFIER, "bar", 0, 6, 9 }, + { Tokenizer::TYPE_IDENTIFIER, "baz", 1, 0, 3 }, + { Tokenizer::TYPE_END , "" , 1, 3, 3 }, }}, // Bytes with the high-order bit set should not be seen as control characters. { "\300", { - { Tokenizer::TYPE_SYMBOL, "\300", 0, 0 }, - { Tokenizer::TYPE_END , "" , 0, 1 }, + { Tokenizer::TYPE_SYMBOL, "\300", 0, 0, 1 }, + { Tokenizer::TYPE_END , "" , 0, 1, 1 }, }}, // Test all whitespace chars { "foo\n\t\r\v\fbar", { - { Tokenizer::TYPE_IDENTIFIER, "foo", 0, 0 }, - { Tokenizer::TYPE_IDENTIFIER, "bar", 1, 11 }, - { Tokenizer::TYPE_END , "" , 1, 14 }, + { Tokenizer::TYPE_IDENTIFIER, "foo", 0, 0, 3 }, + { Tokenizer::TYPE_IDENTIFIER, "bar", 1, 11, 14 }, + { Tokenizer::TYPE_END , "" , 1, 14, 14 }, }}, }; @@ -425,6 +438,7 @@ TEST_2D(TokenizerTest, MultipleTokens, kMultiTokenCases, kBlockSizes) { EXPECT_EQ("", tokenizer.current().text); EXPECT_EQ(0, tokenizer.current().line); EXPECT_EQ(0, tokenizer.current().column); + EXPECT_EQ(0, tokenizer.current().end_column); // Loop through all expected tokens. int i = 0; @@ -434,6 +448,8 @@ TEST_2D(TokenizerTest, MultipleTokens, kMultiTokenCases, kBlockSizes) { SCOPED_TRACE(testing::Message() << "Token #" << i << ": " << token.text); + Tokenizer::Token previous = tokenizer.current(); + // Next() should only return false when it hits the end token. if (token.type != Tokenizer::TYPE_END) { ASSERT_TRUE(tokenizer.Next()); @@ -441,11 +457,19 @@ TEST_2D(TokenizerTest, MultipleTokens, kMultiTokenCases, kBlockSizes) { ASSERT_FALSE(tokenizer.Next()); } + // Check that the previous token is set correctly. + EXPECT_EQ(previous.type, tokenizer.previous().type); + EXPECT_EQ(previous.text, tokenizer.previous().text); + EXPECT_EQ(previous.line, tokenizer.previous().line); + EXPECT_EQ(previous.column, tokenizer.previous().column); + EXPECT_EQ(previous.end_column, tokenizer.previous().end_column); + // Check that the token matches the expected one. EXPECT_EQ(token.type, tokenizer.current().type); EXPECT_EQ(token.text, tokenizer.current().text); EXPECT_EQ(token.line, tokenizer.current().line); EXPECT_EQ(token.column, tokenizer.current().column); + EXPECT_EQ(token.end_column, tokenizer.current().end_column); } while (token.type != Tokenizer::TYPE_END); @@ -491,6 +515,217 @@ TEST_1D(TokenizerTest, ShCommentStyle, kBlockSizes) { // ------------------------------------------------------------------- +// In each case, the input is expected to have two tokens named "prev" and +// "next" with comments in between. +struct DocCommentCase { + string input; + + const char* prev_trailing_comments; + const char* detached_comments[10]; + const char* next_leading_comments; +}; + +inline ostream& operator<<(ostream& out, + const DocCommentCase& test_case) { + return out << CEscape(test_case.input); +} + +DocCommentCase kDocCommentCases[] = { + { + "prev next", + + "", + {}, + "" + }, + + { + "prev /* ignored */ next", + + "", + {}, + "" + }, + + { + "prev // trailing comment\n" + "next", + + " trailing comment\n", + {}, + "" + }, + + { + "prev\n" + "// leading comment\n" + "// line 2\n" + "next", + + "", + {}, + " leading comment\n" + " line 2\n" + }, + + { + "prev\n" + "// trailing comment\n" + "// line 2\n" + "\n" + "next", + + " trailing comment\n" + " line 2\n", + {}, + "" + }, + + { + "prev // trailing comment\n" + "// leading comment\n" + "// line 2\n" + "next", + + " trailing comment\n", + {}, + " leading comment\n" + " line 2\n" + }, + + { + "prev /* trailing block comment */\n" + "/* leading block comment\n" + " * line 2\n" + " * line 3 */" + "next", + + " trailing block comment ", + {}, + " leading block comment\n" + " line 2\n" + " line 3 " + }, + + { + "prev\n" + "/* trailing block comment\n" + " * line 2\n" + " * line 3\n" + " */\n" + "/* leading block comment\n" + " * line 2\n" + " * line 3 */" + "next", + + " trailing block comment\n" + " line 2\n" + " line 3\n", + {}, + " leading block comment\n" + " line 2\n" + " line 3 " + }, + + { + "prev\n" + "// trailing comment\n" + "\n" + "// detached comment\n" + "// line 2\n" + "\n" + "// second detached comment\n" + "/* third detached comment\n" + " * line 2 */\n" + "// leading comment\n" + "next", + + " trailing comment\n", + { + " detached comment\n" + " line 2\n", + " second detached comment\n", + " third detached comment\n" + " line 2 " + }, + " leading comment\n" + }, + + { + "prev /**/\n" + "\n" + "// detached comment\n" + "\n" + "// leading comment\n" + "next", + + "", + { + " detached comment\n" + }, + " leading comment\n" + }, + + { + "prev /**/\n" + "// leading comment\n" + "next", + + "", + {}, + " leading comment\n" + }, + }; + +TEST_2D(TokenizerTest, DocComments, kDocCommentCases, kBlockSizes) { + // Set up the tokenizer. + TestInputStream input(kDocCommentCases_case.input.data(), + kDocCommentCases_case.input.size(), + kBlockSizes_case); + TestErrorCollector error_collector; + Tokenizer tokenizer(&input, &error_collector); + + // Set up a second tokenizer where we'll pass all NULLs to NextWithComments(). + TestInputStream input2(kDocCommentCases_case.input.data(), + kDocCommentCases_case.input.size(), + kBlockSizes_case); + Tokenizer tokenizer2(&input2, &error_collector); + + tokenizer.Next(); + tokenizer2.Next(); + + EXPECT_EQ("prev", tokenizer.current().text); + EXPECT_EQ("prev", tokenizer2.current().text); + + string prev_trailing_comments; + vector detached_comments; + string next_leading_comments; + tokenizer.NextWithComments(&prev_trailing_comments, &detached_comments, + &next_leading_comments); + tokenizer2.NextWithComments(NULL, NULL, NULL); + EXPECT_EQ("next", tokenizer.current().text); + EXPECT_EQ("next", tokenizer2.current().text); + + EXPECT_EQ(kDocCommentCases_case.prev_trailing_comments, + prev_trailing_comments); + + for (int i = 0; i < detached_comments.size(); i++) { + ASSERT_LT(i, GOOGLE_ARRAYSIZE(kDocCommentCases)); + ASSERT_TRUE(kDocCommentCases_case.detached_comments[i] != NULL); + EXPECT_EQ(kDocCommentCases_case.detached_comments[i], + detached_comments[i]); + } + + // Verify that we matched all the detached comments. + EXPECT_EQ(NULL, + kDocCommentCases_case.detached_comments[detached_comments.size()]); + + EXPECT_EQ(kDocCommentCases_case.next_leading_comments, + next_leading_comments); +} + +// ------------------------------------------------------------------- + // Test parse helpers. It's not really worth setting up a full data-driven // test here. TEST_F(TokenizerTest, ParseInteger) { @@ -506,7 +741,7 @@ TEST_F(TokenizerTest, ParseInteger) { EXPECT_EQ(0, ParseInteger("0x")); uint64 i; -#ifdef GTEST_HAS_DEATH_TEST // death tests do not work on Windows yet +#ifdef PROTOBUF_HASDEATH_TEST // death tests do not work on Windows yet // Test invalid integers that will never be tokenized as integers. EXPECT_DEBUG_DEATH(Tokenizer::ParseInteger("zxy", kuint64max, &i), "passed text that could not have been tokenized as an integer"); @@ -518,7 +753,7 @@ TEST_F(TokenizerTest, ParseInteger) { "passed text that could not have been tokenized as an integer"); EXPECT_DEBUG_DEATH(Tokenizer::ParseInteger("-1", kuint64max, &i), "passed text that could not have been tokenized as an integer"); -#endif // GTEST_HAS_DEATH_TEST +#endif // PROTOBUF_HASDEATH_TEST // Test overflows. EXPECT_TRUE (Tokenizer::ParseInteger("0", 0, &i)); @@ -561,7 +796,7 @@ TEST_F(TokenizerTest, ParseFloat) { EXPECT_EQ( 0.0, Tokenizer::ParseFloat("1e-9999999999999999999999999999")); EXPECT_EQ(HUGE_VAL, Tokenizer::ParseFloat("1e+9999999999999999999999999999")); -#ifdef GTEST_HAS_DEATH_TEST // death tests do not work on Windows yet +#ifdef PROTOBUF_HASDEATH_TEST // death tests do not work on Windows yet // Test invalid integers that will never be tokenized as integers. EXPECT_DEBUG_DEATH(Tokenizer::ParseFloat("zxy"), "passed text that could not have been tokenized as a float"); @@ -569,7 +804,7 @@ TEST_F(TokenizerTest, ParseFloat) { "passed text that could not have been tokenized as a float"); EXPECT_DEBUG_DEATH(Tokenizer::ParseFloat("-1.0"), "passed text that could not have been tokenized as a float"); -#endif // GTEST_HAS_DEATH_TEST +#endif // PROTOBUF_HASDEATH_TEST } TEST_F(TokenizerTest, ParseString) { @@ -591,11 +826,27 @@ TEST_F(TokenizerTest, ParseString) { Tokenizer::ParseString("'\\", &output); EXPECT_EQ("\\", output); + // Experiment with Unicode escapes. Here are one-, two- and three-byte Unicode + // characters. + Tokenizer::ParseString("'\\u0024\\u00a2\\u20ac\\U00024b62XX'", &output); + EXPECT_EQ("$¢€𤭢XX", output); + // Same thing encoded using UTF16. + Tokenizer::ParseString("'\\u0024\\u00a2\\u20ac\\ud852\\udf62XX'", &output); + EXPECT_EQ("$¢€𤭢XX", output); + // Here's some broken UTF16; there's a head surrogate with no tail surrogate. + // We just output this as if it were UTF8; it's not a defined code point, but + // it has a defined encoding. + Tokenizer::ParseString("'\\ud852XX'", &output); + EXPECT_EQ("\xed\xa1\x92XX", output); + // Malformed escape: Demons may fly out of the nose. + Tokenizer::ParseString("\\u0", &output); + EXPECT_EQ("u0", output); + // Test invalid strings that will never be tokenized as strings. -#ifdef GTEST_HAS_DEATH_TEST // death tests do not work on Windows yet +#ifdef PROTOBUF_HASDEATH_TEST // death tests do not work on Windows yet EXPECT_DEBUG_DEATH(Tokenizer::ParseString("", &output), "passed text that could not have been tokenized as a string"); -#endif // GTEST_HAS_DEATH_TEST +#endif // PROTOBUF_HASDEATH_TEST } TEST_F(TokenizerTest, ParseStringAppend) { @@ -635,6 +886,12 @@ ErrorCase kErrorCases[] = { "0:4: String literals cannot cross line boundaries.\n" }, { "'bar\nfoo", true, "0:4: String literals cannot cross line boundaries.\n" }, + { "'\\u01' foo", true, + "0:5: Expected four hex digits for \\u escape sequence.\n" }, + { "'\\u01' foo", true, + "0:5: Expected four hex digits for \\u escape sequence.\n" }, + { "'\\uXYZ' foo", true, + "0:3: Expected four hex digits for \\u escape sequence.\n" }, // Integer errors. { "123foo", true, @@ -711,7 +968,7 @@ TEST_2D(TokenizerTest, Errors, kErrorCases, kBlockSizes) { } // Check that the errors match what was expected. - EXPECT_EQ(error_collector.text_, kErrorCases_case.errors); + EXPECT_EQ(kErrorCases_case.errors, error_collector.text_); // If the error was recoverable, make sure we saw "foo" after it. if (kErrorCases_case.recoverable) { @@ -737,6 +994,7 @@ TEST_1D(TokenizerTest, BackUpOnDestruction, kBlockSizes) { EXPECT_EQ(strlen("foo"), input.ByteCount()); } + } // namespace } // namespace io } // namespace protobuf diff --git a/cpp/thirdparty/protobuf-2.3.0/src/google/protobuf/io/zero_copy_stream.cc b/cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/io/zero_copy_stream.cc similarity index 100% rename from cpp/thirdparty/protobuf-2.3.0/src/google/protobuf/io/zero_copy_stream.cc rename to cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/io/zero_copy_stream.cc diff --git a/cpp/thirdparty/protobuf-2.3.0/src/google/protobuf/io/zero_copy_stream.h b/cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/io/zero_copy_stream.h similarity index 100% rename from cpp/thirdparty/protobuf-2.3.0/src/google/protobuf/io/zero_copy_stream.h rename to cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/io/zero_copy_stream.h diff --git a/cpp/thirdparty/protobuf-2.3.0/src/google/protobuf/io/zero_copy_stream_impl.cc b/cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/io/zero_copy_stream_impl.cc similarity index 99% rename from cpp/thirdparty/protobuf-2.3.0/src/google/protobuf/io/zero_copy_stream_impl.cc rename to cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/io/zero_copy_stream_impl.cc index 1384c746a..9fcbb622a 100644 --- a/cpp/thirdparty/protobuf-2.3.0/src/google/protobuf/io/zero_copy_stream_impl.cc +++ b/cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/io/zero_copy_stream_impl.cc @@ -46,7 +46,8 @@ #include #include -#include +#include + namespace google { namespace protobuf { diff --git a/cpp/thirdparty/protobuf-2.3.0/src/google/protobuf/io/zero_copy_stream_impl.h b/cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/io/zero_copy_stream_impl.h similarity index 100% rename from cpp/thirdparty/protobuf-2.3.0/src/google/protobuf/io/zero_copy_stream_impl.h rename to cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/io/zero_copy_stream_impl.h diff --git a/cpp/thirdparty/protobuf-2.3.0/src/google/protobuf/io/zero_copy_stream_impl_lite.cc b/cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/io/zero_copy_stream_impl_lite.cc similarity index 99% rename from cpp/thirdparty/protobuf-2.3.0/src/google/protobuf/io/zero_copy_stream_impl_lite.cc rename to cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/io/zero_copy_stream_impl_lite.cc index e80125109..f552e1f88 100644 --- a/cpp/thirdparty/protobuf-2.3.0/src/google/protobuf/io/zero_copy_stream_impl_lite.cc +++ b/cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/io/zero_copy_stream_impl_lite.cc @@ -32,9 +32,9 @@ // Based on original Protocol Buffers design by // Sanjay Ghemawat, Jeff Dean, and others. -#include +#include #include -#include +#include namespace google { namespace protobuf { diff --git a/cpp/thirdparty/protobuf-2.3.0/src/google/protobuf/io/zero_copy_stream_impl_lite.h b/cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/io/zero_copy_stream_impl_lite.h similarity index 100% rename from cpp/thirdparty/protobuf-2.3.0/src/google/protobuf/io/zero_copy_stream_impl_lite.h rename to cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/io/zero_copy_stream_impl_lite.h diff --git a/cpp/thirdparty/protobuf-2.3.0/src/google/protobuf/io/zero_copy_stream_unittest.cc b/cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/io/zero_copy_stream_unittest.cc similarity index 72% rename from cpp/thirdparty/protobuf-2.3.0/src/google/protobuf/io/zero_copy_stream_unittest.cc rename to cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/io/zero_copy_stream_unittest.cc index 8229ee6db..6f155df7e 100644 --- a/cpp/thirdparty/protobuf-2.3.0/src/google/protobuf/io/zero_copy_stream_unittest.cc +++ b/cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/io/zero_copy_stream_unittest.cc @@ -61,6 +61,7 @@ #include #include +#include #if HAVE_ZLIB #include @@ -285,6 +286,57 @@ TEST_F(IoTest, ArrayIo) { } } +TEST_F(IoTest, TwoSessionWrite) { + // Test that two concatenated write sessions read correctly + + static const char* strA = "0123456789"; + static const char* strB = "WhirledPeas"; + const int kBufferSize = 2*1024; + uint8* buffer = new uint8[kBufferSize]; + char* temp_buffer = new char[40]; + + for (int i = 0; i < kBlockSizeCount; i++) { + for (int j = 0; j < kBlockSizeCount; j++) { + ArrayOutputStream* output = + new ArrayOutputStream(buffer, kBufferSize, kBlockSizes[i]); + CodedOutputStream* coded_output = new CodedOutputStream(output); + coded_output->WriteVarint32(strlen(strA)); + coded_output->WriteRaw(strA, strlen(strA)); + delete coded_output; // flush + int64 pos = output->ByteCount(); + delete output; + output = new ArrayOutputStream( + buffer + pos, kBufferSize - pos, kBlockSizes[i]); + coded_output = new CodedOutputStream(output); + coded_output->WriteVarint32(strlen(strB)); + coded_output->WriteRaw(strB, strlen(strB)); + delete coded_output; // flush + int64 size = pos + output->ByteCount(); + delete output; + + ArrayInputStream* input = + new ArrayInputStream(buffer, size, kBlockSizes[j]); + CodedInputStream* coded_input = new CodedInputStream(input); + uint32 insize; + EXPECT_TRUE(coded_input->ReadVarint32(&insize)); + EXPECT_EQ(strlen(strA), insize); + EXPECT_TRUE(coded_input->ReadRaw(temp_buffer, insize)); + EXPECT_EQ(0, memcmp(temp_buffer, strA, insize)); + + EXPECT_TRUE(coded_input->ReadVarint32(&insize)); + EXPECT_EQ(strlen(strB), insize); + EXPECT_TRUE(coded_input->ReadRaw(temp_buffer, insize)); + EXPECT_EQ(0, memcmp(temp_buffer, strB, insize)); + + delete coded_input; + delete input; + } + } + + delete [] temp_buffer; + delete [] buffer; +} + #if HAVE_ZLIB TEST_F(IoTest, GzipIo) { const int kBufferSize = 2*1024; @@ -296,8 +348,12 @@ TEST_F(IoTest, GzipIo) { int size; { ArrayOutputStream output(buffer, kBufferSize, kBlockSizes[i]); - GzipOutputStream gzout( - &output, GzipOutputStream::GZIP, gzip_buffer_size); + GzipOutputStream::Options options; + options.format = GzipOutputStream::GZIP; + if (gzip_buffer_size != -1) { + options.buffer_size = gzip_buffer_size; + } + GzipOutputStream gzout(&output, options); WriteStuff(&gzout); gzout.Close(); size = output.ByteCount(); @@ -314,6 +370,100 @@ TEST_F(IoTest, GzipIo) { delete [] buffer; } +TEST_F(IoTest, GzipIoWithFlush) { + const int kBufferSize = 2*1024; + uint8* buffer = new uint8[kBufferSize]; + // We start with i = 4 as we want a block size > 6. With block size <= 6 + // Flush() fills up the entire 2K buffer with flush markers and the test + // fails. See documentation for Flush() for more detail. + for (int i = 4; i < kBlockSizeCount; i++) { + for (int j = 0; j < kBlockSizeCount; j++) { + for (int z = 0; z < kBlockSizeCount; z++) { + int gzip_buffer_size = kBlockSizes[z]; + int size; + { + ArrayOutputStream output(buffer, kBufferSize, kBlockSizes[i]); + GzipOutputStream::Options options; + options.format = GzipOutputStream::GZIP; + if (gzip_buffer_size != -1) { + options.buffer_size = gzip_buffer_size; + } + GzipOutputStream gzout(&output, options); + WriteStuff(&gzout); + EXPECT_TRUE(gzout.Flush()); + gzout.Close(); + size = output.ByteCount(); + } + { + ArrayInputStream input(buffer, size, kBlockSizes[j]); + GzipInputStream gzin( + &input, GzipInputStream::GZIP, gzip_buffer_size); + ReadStuff(&gzin); + } + } + } + } + delete [] buffer; +} + +TEST_F(IoTest, GzipIoContiguousFlushes) { + const int kBufferSize = 2*1024; + uint8* buffer = new uint8[kBufferSize]; + + int block_size = kBlockSizes[4]; + int gzip_buffer_size = block_size; + int size; + + ArrayOutputStream output(buffer, kBufferSize, block_size); + GzipOutputStream::Options options; + options.format = GzipOutputStream::GZIP; + if (gzip_buffer_size != -1) { + options.buffer_size = gzip_buffer_size; + } + GzipOutputStream gzout(&output, options); + WriteStuff(&gzout); + EXPECT_TRUE(gzout.Flush()); + EXPECT_TRUE(gzout.Flush()); + gzout.Close(); + size = output.ByteCount(); + + ArrayInputStream input(buffer, size, block_size); + GzipInputStream gzin( + &input, GzipInputStream::GZIP, gzip_buffer_size); + ReadStuff(&gzin); + + delete [] buffer; +} + +TEST_F(IoTest, GzipIoReadAfterFlush) { + const int kBufferSize = 2*1024; + uint8* buffer = new uint8[kBufferSize]; + + int block_size = kBlockSizes[4]; + int gzip_buffer_size = block_size; + int size; + ArrayOutputStream output(buffer, kBufferSize, block_size); + GzipOutputStream::Options options; + options.format = GzipOutputStream::GZIP; + if (gzip_buffer_size != -1) { + options.buffer_size = gzip_buffer_size; + } + + GzipOutputStream gzout(&output, options); + WriteStuff(&gzout); + EXPECT_TRUE(gzout.Flush()); + size = output.ByteCount(); + + ArrayInputStream input(buffer, size, block_size); + GzipInputStream gzin( + &input, GzipInputStream::GZIP, gzip_buffer_size); + ReadStuff(&gzin); + + gzout.Close(); + + delete [] buffer; +} + TEST_F(IoTest, ZlibIo) { const int kBufferSize = 2*1024; uint8* buffer = new uint8[kBufferSize]; @@ -324,8 +474,12 @@ TEST_F(IoTest, ZlibIo) { int size; { ArrayOutputStream output(buffer, kBufferSize, kBlockSizes[i]); - GzipOutputStream gzout( - &output, GzipOutputStream::ZLIB, gzip_buffer_size); + GzipOutputStream::Options options; + options.format = GzipOutputStream::ZLIB; + if (gzip_buffer_size != -1) { + options.buffer_size = gzip_buffer_size; + } + GzipOutputStream gzout(&output, options); WriteStuff(&gzout); gzout.Close(); size = output.ByteCount(); @@ -348,7 +502,9 @@ TEST_F(IoTest, ZlibIoInputAutodetect) { int size; { ArrayOutputStream output(buffer, kBufferSize); - GzipOutputStream gzout(&output, GzipOutputStream::ZLIB); + GzipOutputStream::Options options; + options.format = GzipOutputStream::ZLIB; + GzipOutputStream gzout(&output, options); WriteStuff(&gzout); gzout.Close(); size = output.ByteCount(); @@ -360,7 +516,9 @@ TEST_F(IoTest, ZlibIoInputAutodetect) { } { ArrayOutputStream output(buffer, kBufferSize); - GzipOutputStream gzout(&output, GzipOutputStream::GZIP); + GzipOutputStream::Options options; + options.format = GzipOutputStream::GZIP; + GzipOutputStream gzout(&output, options); WriteStuff(&gzout); gzout.Close(); size = output.ByteCount(); @@ -432,6 +590,71 @@ TEST_F(IoTest, CompressionOptions) { EXPECT_TRUE(Uncompress(gzip_compressed) == golden); EXPECT_TRUE(Uncompress(zlib_compressed) == golden); } + +TEST_F(IoTest, TwoSessionWriteGzip) { + // Test that two concatenated gzip streams can be read correctly + + static const char* strA = "0123456789"; + static const char* strB = "QuickBrownFox"; + const int kBufferSize = 2*1024; + uint8* buffer = new uint8[kBufferSize]; + char* temp_buffer = new char[40]; + + for (int i = 0; i < kBlockSizeCount; i++) { + for (int j = 0; j < kBlockSizeCount; j++) { + ArrayOutputStream* output = + new ArrayOutputStream(buffer, kBufferSize, kBlockSizes[i]); + GzipOutputStream* gzout = new GzipOutputStream(output); + CodedOutputStream* coded_output = new CodedOutputStream(gzout); + int32 outlen = strlen(strA) + 1; + coded_output->WriteVarint32(outlen); + coded_output->WriteRaw(strA, outlen); + delete coded_output; // flush + delete gzout; // flush + int64 pos = output->ByteCount(); + delete output; + output = new ArrayOutputStream( + buffer + pos, kBufferSize - pos, kBlockSizes[i]); + gzout = new GzipOutputStream(output); + coded_output = new CodedOutputStream(gzout); + outlen = strlen(strB) + 1; + coded_output->WriteVarint32(outlen); + coded_output->WriteRaw(strB, outlen); + delete coded_output; // flush + delete gzout; // flush + int64 size = pos + output->ByteCount(); + delete output; + + ArrayInputStream* input = + new ArrayInputStream(buffer, size, kBlockSizes[j]); + GzipInputStream* gzin = new GzipInputStream(input); + CodedInputStream* coded_input = new CodedInputStream(gzin); + uint32 insize; + EXPECT_TRUE(coded_input->ReadVarint32(&insize)); + EXPECT_EQ(strlen(strA) + 1, insize); + EXPECT_TRUE(coded_input->ReadRaw(temp_buffer, insize)); + EXPECT_EQ(0, memcmp(temp_buffer, strA, insize)) + << "strA=" << strA << " in=" << temp_buffer; + + EXPECT_TRUE(coded_input->ReadVarint32(&insize)); + EXPECT_EQ(strlen(strB) + 1, insize); + EXPECT_TRUE(coded_input->ReadRaw(temp_buffer, insize)); + EXPECT_EQ(0, memcmp(temp_buffer, strB, insize)) + << " out_block_size=" << kBlockSizes[i] + << " in_block_size=" << kBlockSizes[j] + << " pos=" << pos + << " size=" << size + << " strB=" << strB << " in=" << temp_buffer; + + delete coded_input; + delete gzin; + delete input; + } + } + + delete [] temp_buffer; + delete [] buffer; +} #endif // There is no string input, only string output. Also, it doesn't support diff --git a/cpp/thirdparty/protobuf-2.3.0/src/google/protobuf/lite_unittest.cc b/cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/lite_unittest.cc similarity index 64% rename from cpp/thirdparty/protobuf-2.3.0/src/google/protobuf/lite_unittest.cc rename to cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/lite_unittest.cc index ffeec3c44..7a0a57b77 100644 --- a/cpp/thirdparty/protobuf-2.3.0/src/google/protobuf/lite_unittest.cc +++ b/cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/lite_unittest.cc @@ -33,11 +33,32 @@ #include #include -#include #include +#include +#include using namespace std; +namespace { +// Helper methods to test parsing merge behavior. +void ExpectMessageMerged(const google::protobuf::unittest::TestAllTypesLite& message) { + GOOGLE_CHECK(message.optional_int32() == 3); + GOOGLE_CHECK(message.optional_int64() == 2); + GOOGLE_CHECK(message.optional_string() == "hello"); +} + +void AssignParsingMergeMessages( + google::protobuf::unittest::TestAllTypesLite* msg1, + google::protobuf::unittest::TestAllTypesLite* msg2, + google::protobuf::unittest::TestAllTypesLite* msg3) { + msg1->set_optional_int32(1); + msg2->set_optional_int64(2); + msg3->set_optional_int32(3); + msg3->set_optional_string("hello"); +} + +} // namespace + int main(int argc, char* argv[]) { string data, packed_data; @@ -107,6 +128,58 @@ int main(int argc, char* argv[]) { google::protobuf::TestUtilLite::ExpectPackedExtensionsClear(message); } + { + // Test that if an optional or required message/group field appears multiple + // times in the input, they need to be merged. + google::protobuf::unittest::TestParsingMergeLite::RepeatedFieldsGenerator generator; + google::protobuf::unittest::TestAllTypesLite* msg1; + google::protobuf::unittest::TestAllTypesLite* msg2; + google::protobuf::unittest::TestAllTypesLite* msg3; + +#define ASSIGN_REPEATED_FIELD(FIELD) \ + msg1 = generator.add_##FIELD(); \ + msg2 = generator.add_##FIELD(); \ + msg3 = generator.add_##FIELD(); \ + AssignParsingMergeMessages(msg1, msg2, msg3) + + ASSIGN_REPEATED_FIELD(field1); + ASSIGN_REPEATED_FIELD(field2); + ASSIGN_REPEATED_FIELD(field3); + ASSIGN_REPEATED_FIELD(ext1); + ASSIGN_REPEATED_FIELD(ext2); + +#undef ASSIGN_REPEATED_FIELD +#define ASSIGN_REPEATED_GROUP(FIELD) \ + msg1 = generator.add_##FIELD()->mutable_field1(); \ + msg2 = generator.add_##FIELD()->mutable_field1(); \ + msg3 = generator.add_##FIELD()->mutable_field1(); \ + AssignParsingMergeMessages(msg1, msg2, msg3) + + ASSIGN_REPEATED_GROUP(group1); + ASSIGN_REPEATED_GROUP(group2); + +#undef ASSIGN_REPEATED_GROUP + + string buffer; + generator.SerializeToString(&buffer); + google::protobuf::unittest::TestParsingMergeLite parsing_merge; + parsing_merge.ParseFromString(buffer); + + // Required and optional fields should be merged. + ExpectMessageMerged(parsing_merge.required_all_types()); + ExpectMessageMerged(parsing_merge.optional_all_types()); + ExpectMessageMerged( + parsing_merge.optionalgroup().optional_group_all_types()); + ExpectMessageMerged(parsing_merge.GetExtension( + google::protobuf::unittest::TestParsingMergeLite::optional_ext)); + + // Repeated fields should not be merged. + GOOGLE_CHECK(parsing_merge.repeated_all_types_size() == 3); + GOOGLE_CHECK(parsing_merge.repeatedgroup_size() == 3); + GOOGLE_CHECK(parsing_merge.ExtensionSize( + google::protobuf::unittest::TestParsingMergeLite::repeated_ext) == 3); + } + cout << "PASS" << endl; return 0; } diff --git a/cpp/thirdparty/protobuf-2.3.0/src/google/protobuf/message.cc b/cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/message.cc similarity index 84% rename from cpp/thirdparty/protobuf-2.3.0/src/google/protobuf/message.cc rename to cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/message.cc index 91e6878e8..ab7efa990 100644 --- a/cpp/thirdparty/protobuf-2.3.0/src/google/protobuf/message.cc +++ b/cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/message.cc @@ -32,6 +32,7 @@ // Based on original Protocol Buffers design by // Sanjay Ghemawat, Jeff Dean, and others. +#include #include #include @@ -43,11 +44,12 @@ #include #include #include +#include #include #include #include #include -#include +#include namespace google { namespace protobuf { @@ -181,9 +183,46 @@ bool Message::SerializePartialToOstream(ostream* output) const { } +// ============================================================================= +// Reflection and associated Template Specializations + Reflection::~Reflection() {} -// =================================================================== +#define HANDLE_TYPE(TYPE, CPPTYPE, CTYPE) \ +template<> \ +const RepeatedField& Reflection::GetRepeatedField( \ + const Message& message, const FieldDescriptor* field) const { \ + return *static_cast* >( \ + MutableRawRepeatedField(const_cast(&message), \ + field, CPPTYPE, CTYPE, NULL)); \ +} \ + \ +template<> \ +RepeatedField* Reflection::MutableRepeatedField( \ + Message* message, const FieldDescriptor* field) const { \ + return static_cast* >( \ + MutableRawRepeatedField(message, field, CPPTYPE, CTYPE, NULL)); \ +} + +HANDLE_TYPE(int32, FieldDescriptor::CPPTYPE_INT32, -1); +HANDLE_TYPE(int64, FieldDescriptor::CPPTYPE_INT64, -1); +HANDLE_TYPE(uint32, FieldDescriptor::CPPTYPE_UINT32, -1); +HANDLE_TYPE(uint64, FieldDescriptor::CPPTYPE_UINT64, -1); +HANDLE_TYPE(float, FieldDescriptor::CPPTYPE_FLOAT, -1); +HANDLE_TYPE(double, FieldDescriptor::CPPTYPE_DOUBLE, -1); +HANDLE_TYPE(bool, FieldDescriptor::CPPTYPE_BOOL, -1); + + +#undef HANDLE_TYPE + +void* Reflection::MutableRawRepeatedString( + Message* message, const FieldDescriptor* field, bool is_string) const { + return MutableRawRepeatedField(message, field, + FieldDescriptor::CPPTYPE_STRING, FieldOptions::STRING, NULL); +} + + +// ============================================================================= // MessageFactory MessageFactory::~MessageFactory() {} @@ -257,6 +296,7 @@ void GeneratedMessageFactory::RegisterType(const Descriptor* descriptor, } } + const Message* GeneratedMessageFactory::GetPrototype(const Descriptor* type) { { ReaderMutexLock lock(&mutex_); diff --git a/cpp/thirdparty/protobuf-2.3.0/src/google/protobuf/message.h b/cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/message.h similarity index 80% rename from cpp/thirdparty/protobuf-2.3.0/src/google/protobuf/message.h rename to cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/message.h index c0062f989..0f90bc1a1 100644 --- a/cpp/thirdparty/protobuf-2.3.0/src/google/protobuf/message.h +++ b/cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/message.h @@ -79,18 +79,19 @@ // // Same as the last block, but do it dynamically via the Message // // reflection interface. // Message* foo = new Foo; -// Descriptor* descriptor = foo->GetDescriptor(); +// const Descriptor* descriptor = foo->GetDescriptor(); // // // Get the descriptors for the fields we're interested in and verify // // their types. -// FieldDescriptor* text_field = descriptor->FindFieldByName("text"); +// const FieldDescriptor* text_field = descriptor->FindFieldByName("text"); // assert(text_field != NULL); // assert(text_field->type() == FieldDescriptor::TYPE_STRING); -// assert(text_field->label() == FieldDescriptor::TYPE_OPTIONAL); -// FieldDescriptor* numbers_field = descriptor->FindFieldByName("numbers"); +// assert(text_field->label() == FieldDescriptor::LABEL_OPTIONAL); +// const FieldDescriptor* numbers_field = descriptor-> +// FindFieldByName("numbers"); // assert(numbers_field != NULL); // assert(numbers_field->type() == FieldDescriptor::TYPE_INT32); -// assert(numbers_field->label() == FieldDescriptor::TYPE_REPEATED); +// assert(numbers_field->label() == FieldDescriptor::LABEL_REPEATED); // // // Parse the message. // foo->ParseFromString(data); @@ -122,24 +123,7 @@ #include #include - -#if defined(_WIN32) && defined(GetMessage) -// windows.h defines GetMessage() as a macro. Let's re-define it as an inline -// function. This is necessary because Reflection has a method called -// GetMessage() which we don't want overridden. The inline function should be -// equivalent for C++ users. -inline BOOL GetMessage_Win32( - LPMSG lpMsg, HWND hWnd, - UINT wMsgFilterMin, UINT wMsgFilterMax) { - return GetMessage(lpMsg, hWnd, wMsgFilterMin, wMsgFilterMax); -} -#undef GetMessage -inline BOOL GetMessage( - LPMSG lpMsg, HWND hWnd, - UINT wMsgFilterMin, UINT wMsgFilterMax) { - return GetMessage_Win32(lpMsg, hWnd, wMsgFilterMin, wMsgFilterMax); -} -#endif +#include namespace google { @@ -151,17 +135,20 @@ class Reflection; class MessageFactory; // Defined in other files. -class Descriptor; // descriptor.h -class FieldDescriptor; // descriptor.h -class EnumDescriptor; // descriptor.h -class EnumValueDescriptor; // descriptor.h +class UnknownFieldSet; // unknown_field_set.h namespace io { class ZeroCopyInputStream; // zero_copy_stream.h class ZeroCopyOutputStream; // zero_copy_stream.h class CodedInputStream; // coded_stream.h class CodedOutputStream; // coded_stream.h } -class UnknownFieldSet; // unknown_field_set.h + + +template +class RepeatedField; // repeated_field.h + +template +class RepeatedPtrField; // repeated_field.h // A container to hold message metadata. struct Metadata { @@ -169,12 +156,6 @@ struct Metadata { const Reflection* reflection; }; -// Returns the EnumDescriptor for enum type E, which must be a -// proto-declared enum type. Code generated by the protocol compiler -// will include specializations of this template for each enum type declared. -template -const EnumDescriptor* GetEnumDescriptor(); - // Abstract interface for protocol messages. // // See also MessageLite, which contains most every-day operations. Message @@ -378,7 +359,6 @@ class LIBPROTOBUF_EXPORT Message : public MessageLite { // write fields from a Reflection without paying attention to the type. class LIBPROTOBUF_EXPORT Reflection { public: - // TODO(kenton): Remove parameter. inline Reflection() {} virtual ~Reflection(); @@ -408,7 +388,7 @@ class LIBPROTOBUF_EXPORT Reflection { virtual void ClearField(Message* message, const FieldDescriptor* field) const = 0; - // Remove the last element of a repeated field. + // Removes the last element of a repeated field. // We don't provide a way to remove any element other than the last // because it invites inefficient use, such as O(n^2) filtering loops // that should have been O(n). If you want to remove an element other @@ -417,6 +397,10 @@ class LIBPROTOBUF_EXPORT Reflection { // call RemoveLast(). virtual void RemoveLast(Message* message, const FieldDescriptor* field) const = 0; + // Removes the last element of a repeated message field, and returns the + // pointer to the caller. Caller takes ownership of the returned pointer. + virtual Message* ReleaseLast(Message* message, + const FieldDescriptor* field) const = 0; // Swap the complete contents of two messages. virtual void Swap(Message* message1, Message* message2) const = 0; @@ -518,6 +502,16 @@ class LIBPROTOBUF_EXPORT Reflection { virtual Message* MutableMessage(Message* message, const FieldDescriptor* field, MessageFactory* factory = NULL) const = 0; + // Releases the message specified by 'field' and returns the pointer, + // ReleaseMessage() will return the message the message object if it exists. + // Otherwise, it may or may not return NULL. In any case, if the return value + // is non-NULL, the caller takes ownership of the pointer. + // If the field existed (HasField() is true), then the returned pointer will + // be the same as the pointer returned by MutableMessage(). + // This function has the same effect as ClearField(). + virtual Message* ReleaseMessage(Message* message, + const FieldDescriptor* field, + MessageFactory* factory = NULL) const = 0; // Repeated field getters ------------------------------------------ @@ -625,7 +619,39 @@ class LIBPROTOBUF_EXPORT Reflection { MessageFactory* factory = NULL) const = 0; - // Extensions ------------------------------------------------------ + // Repeated field accessors ------------------------------------------------- + // The methods above, e.g. GetRepeatedInt32(msg, fd, index), provide singular + // access to the data in a RepeatedField. The methods below provide aggregate + // access by exposing the RepeatedField object itself with the Message. + // Applying these templates to inappropriate types will lead to an undefined + // reference at link time (e.g. GetRepeatedField<***double>), or possibly a + // template matching error at compile time (e.g. GetRepeatedPtrField). + // + // Usage example: my_doubs = refl->GetRepeatedField(msg, fd); + + // for T = Cord and all protobuf scalar types except enums. + template + const RepeatedField& GetRepeatedField( + const Message&, const FieldDescriptor*) const; + + // for T = Cord and all protobuf scalar types except enums. + template + RepeatedField* MutableRepeatedField( + Message*, const FieldDescriptor*) const; + + // for T = string, google::protobuf::internal::StringPieceField + // google::protobuf::Message & descendants. + template + const RepeatedPtrField& GetRepeatedPtrField( + const Message&, const FieldDescriptor*) const; + + // for T = string, google::protobuf::internal::StringPieceField + // google::protobuf::Message & descendants. + template + RepeatedPtrField* MutableRepeatedPtrField( + Message*, const FieldDescriptor*) const; + + // Extensions ---------------------------------------------------------------- // Try to find an extension of this message type by fully-qualified field // name. Returns NULL if no extension is known for this name or number. @@ -637,7 +663,26 @@ class LIBPROTOBUF_EXPORT Reflection { virtual const FieldDescriptor* FindKnownExtensionByNumber( int number) const = 0; + // --------------------------------------------------------------------------- + + protected: + // Obtain a pointer to a Repeated Field Structure and do some type checking: + // on field->cpp_type(), + // on field->field_option().ctype() (if ctype >= 0) + // of field->message_type() (if message_type != NULL). + // We use 1 routine rather than 4 (const vs mutable) x (scalar vs pointer). + virtual void* MutableRawRepeatedField( + Message* message, const FieldDescriptor* field, FieldDescriptor::CppType, + int ctype, const Descriptor* message_type) const = 0; + private: + // Special version for specialized implementations of string. We can't call + // MutableRawRepeatedField directly here because we don't have access to + // FieldOptions::* which are defined in descriptor.pb.h. Including that + // file here is not possible because it would cause a circular include cycle. + void* MutableRawRepeatedString( + Message* message, const FieldDescriptor* field, bool is_string) const; + GOOGLE_DISALLOW_EVIL_CONSTRUCTORS(Reflection); }; @@ -700,10 +745,92 @@ class LIBPROTOBUF_EXPORT MessageFactory { static void InternalRegisterGeneratedMessage(const Descriptor* descriptor, const Message* prototype); + private: GOOGLE_DISALLOW_EVIL_CONSTRUCTORS(MessageFactory); }; +#define DECLARE_GET_REPEATED_FIELD(TYPE) \ +template<> \ +LIBPROTOBUF_EXPORT \ +const RepeatedField& Reflection::GetRepeatedField( \ + const Message& message, const FieldDescriptor* field) const; \ + \ +template<> \ +LIBPROTOBUF_EXPORT \ +RepeatedField* Reflection::MutableRepeatedField( \ + Message* message, const FieldDescriptor* field) const; + +DECLARE_GET_REPEATED_FIELD(int32) +DECLARE_GET_REPEATED_FIELD(int64) +DECLARE_GET_REPEATED_FIELD(uint32) +DECLARE_GET_REPEATED_FIELD(uint64) +DECLARE_GET_REPEATED_FIELD(float) +DECLARE_GET_REPEATED_FIELD(double) +DECLARE_GET_REPEATED_FIELD(bool) + +#undef DECLARE_GET_REPEATED_FIELD + +// ============================================================================= +// Implementation details for {Get,Mutable}RawRepeatedPtrField. We provide +// specializations for , and and handle +// everything else with the default template which will match any type having +// a method with signature "static const google::protobuf::Descriptor* descriptor()". +// Such a type presumably is a descendant of google::protobuf::Message. + +template<> +inline const RepeatedPtrField& Reflection::GetRepeatedPtrField( + const Message& message, const FieldDescriptor* field) const { + return *static_cast* >( + MutableRawRepeatedString(const_cast(&message), field, true)); +} + +template<> +inline RepeatedPtrField* Reflection::MutableRepeatedPtrField( + Message* message, const FieldDescriptor* field) const { + return static_cast* >( + MutableRawRepeatedString(message, field, true)); +} + + +// ----- + +template<> +inline const RepeatedPtrField& Reflection::GetRepeatedPtrField( + const Message& message, const FieldDescriptor* field) const { + return *static_cast* >( + MutableRawRepeatedField(const_cast(&message), field, + FieldDescriptor::CPPTYPE_MESSAGE, -1, + NULL)); +} + +template<> +inline RepeatedPtrField* Reflection::MutableRepeatedPtrField( + Message* message, const FieldDescriptor* field) const { + return static_cast* >( + MutableRawRepeatedField(message, field, + FieldDescriptor::CPPTYPE_MESSAGE, -1, + NULL)); +} + +template +inline const RepeatedPtrField& Reflection::GetRepeatedPtrField( + const Message& message, const FieldDescriptor* field) const { + return *static_cast* >( + MutableRawRepeatedField(const_cast(&message), field, + FieldDescriptor::CPPTYPE_MESSAGE, -1, + PB::default_instance().GetDescriptor())); +} + +template +inline RepeatedPtrField* Reflection::MutableRepeatedPtrField( + Message* message, const FieldDescriptor* field) const { + return static_cast* >( + MutableRawRepeatedField(message, field, + FieldDescriptor::CPPTYPE_MESSAGE, -1, + PB::default_instance().GetDescriptor())); +} + } // namespace protobuf } // namespace google diff --git a/cpp/thirdparty/protobuf-2.3.0/src/google/protobuf/message_lite.cc b/cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/message_lite.cc similarity index 99% rename from cpp/thirdparty/protobuf-2.3.0/src/google/protobuf/message_lite.cc rename to cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/message_lite.cc index 7c8f37dc7..49dbe6e09 100644 --- a/cpp/thirdparty/protobuf-2.3.0/src/google/protobuf/message_lite.cc +++ b/cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/message_lite.cc @@ -37,8 +37,8 @@ #include #include #include -#include -#include +#include +#include namespace google { namespace protobuf { diff --git a/cpp/thirdparty/protobuf-2.3.0/src/google/protobuf/message_lite.h b/cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/message_lite.h similarity index 98% rename from cpp/thirdparty/protobuf-2.3.0/src/google/protobuf/message_lite.h rename to cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/message_lite.h index ebf4ba3c8..1ec3068cf 100644 --- a/cpp/thirdparty/protobuf-2.3.0/src/google/protobuf/message_lite.h +++ b/cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/message_lite.h @@ -40,11 +40,17 @@ #define GOOGLE_PROTOBUF_MESSAGE_LITE_H__ #include -#include namespace google { namespace protobuf { +namespace io { + class CodedInputStream; + class CodedOutputStream; + class ZeroCopyInputStream; + class ZeroCopyOutputStream; +} + // Interface to light weight protocol messages. // // This interface is implemented by all protocol message objects. Non-lite @@ -158,6 +164,7 @@ class LIBPROTOBUF_EXPORT MessageLite { // followed by IsInitialized(). virtual bool MergePartialFromCodedStream(io::CodedInputStream* input) = 0; + // Serialization --------------------------------------------------- // Methods for serializing in protocol buffer format. Most of these // are just simple wrappers around ByteSize() and SerializeWithCachedSizes(). diff --git a/cpp/thirdparty/protobuf-2.3.0/src/google/protobuf/message_unittest.cc b/cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/message_unittest.cc similarity index 78% rename from cpp/thirdparty/protobuf-2.3.0/src/google/protobuf/message_unittest.cc rename to cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/message_unittest.cc index 33b9e77c8..a1449c76f 100644 --- a/cpp/thirdparty/protobuf-2.3.0/src/google/protobuf/message_unittest.cc +++ b/cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/message_unittest.cc @@ -205,7 +205,7 @@ TEST(MessageTest, InitializationErrorString) { EXPECT_EQ("a, b, c", message.InitializationErrorString()); } -#ifdef GTEST_HAS_DEATH_TEST // death tests do not work on Windows yet. +#ifdef PROTOBUF_HAS_DEATH_TEST TEST(MessageTest, SerializeFailsIfNotInitialized) { unittest::TestRequired message; @@ -222,7 +222,7 @@ TEST(MessageTest, CheckInitialized) { "fields: a, b, c"); } -#endif // GTEST_HAS_DEATH_TEST +#endif // PROTOBUF_HAS_DEATH_TEST TEST(MessageTest, BypassInitializationCheckOnSerialize) { unittest::TestRequired message; @@ -257,6 +257,78 @@ TEST(MessageTest, ParseFailsOnInvalidMessageEnd) { EXPECT_FALSE(message.ParseFromArray("\014", 1)); } +namespace { + +void ExpectMessageMerged(const unittest::TestAllTypes& message) { + EXPECT_EQ(3, message.optional_int32()); + EXPECT_EQ(2, message.optional_int64()); + EXPECT_EQ("hello", message.optional_string()); +} + +void AssignParsingMergeMessages( + unittest::TestAllTypes* msg1, + unittest::TestAllTypes* msg2, + unittest::TestAllTypes* msg3) { + msg1->set_optional_int32(1); + msg2->set_optional_int64(2); + msg3->set_optional_int32(3); + msg3->set_optional_string("hello"); +} + +} // namespace + +// Test that if an optional or required message/group field appears multiple +// times in the input, they need to be merged. +TEST(MessageTest, ParsingMerge) { + unittest::TestParsingMerge::RepeatedFieldsGenerator generator; + unittest::TestAllTypes* msg1; + unittest::TestAllTypes* msg2; + unittest::TestAllTypes* msg3; + +#define ASSIGN_REPEATED_FIELD(FIELD) \ + msg1 = generator.add_##FIELD(); \ + msg2 = generator.add_##FIELD(); \ + msg3 = generator.add_##FIELD(); \ + AssignParsingMergeMessages(msg1, msg2, msg3) + + ASSIGN_REPEATED_FIELD(field1); + ASSIGN_REPEATED_FIELD(field2); + ASSIGN_REPEATED_FIELD(field3); + ASSIGN_REPEATED_FIELD(ext1); + ASSIGN_REPEATED_FIELD(ext2); + +#undef ASSIGN_REPEATED_FIELD +#define ASSIGN_REPEATED_GROUP(FIELD) \ + msg1 = generator.add_##FIELD()->mutable_field1(); \ + msg2 = generator.add_##FIELD()->mutable_field1(); \ + msg3 = generator.add_##FIELD()->mutable_field1(); \ + AssignParsingMergeMessages(msg1, msg2, msg3) + + ASSIGN_REPEATED_GROUP(group1); + ASSIGN_REPEATED_GROUP(group2); + +#undef ASSIGN_REPEATED_GROUP + + string buffer; + generator.SerializeToString(&buffer); + unittest::TestParsingMerge parsing_merge; + parsing_merge.ParseFromString(buffer); + + // Required and optional fields should be merged. + ExpectMessageMerged(parsing_merge.required_all_types()); + ExpectMessageMerged(parsing_merge.optional_all_types()); + ExpectMessageMerged( + parsing_merge.optionalgroup().optional_group_all_types()); + ExpectMessageMerged( + parsing_merge.GetExtension(unittest::TestParsingMerge::optional_ext)); + + // Repeated fields should not be merged. + EXPECT_EQ(3, parsing_merge.repeated_all_types_size()); + EXPECT_EQ(3, parsing_merge.repeatedgroup_size()); + EXPECT_EQ(3, parsing_merge.ExtensionSize( + unittest::TestParsingMerge::repeated_ext)); +} + TEST(MessageFactoryTest, GeneratedFactoryLookup) { EXPECT_EQ( MessageFactory::generated_factory()->GetPrototype( @@ -277,5 +349,6 @@ TEST(MessageFactoryTest, GeneratedFactoryUnknownType) { MessageFactory::generated_factory()->GetPrototype(descriptor) == NULL); } + } // namespace protobuf } // namespace google diff --git a/cpp/thirdparty/protobuf-2.3.0/src/google/protobuf/package_info.h b/cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/package_info.h similarity index 100% rename from cpp/thirdparty/protobuf-2.3.0/src/google/protobuf/package_info.h rename to cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/package_info.h diff --git a/cpp/thirdparty/protobuf-2.3.0/src/google/protobuf/reflection_ops.cc b/cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/reflection_ops.cc similarity index 95% rename from cpp/thirdparty/protobuf-2.3.0/src/google/protobuf/reflection_ops.cc rename to cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/reflection_ops.cc index 897c0d7c8..f00997c69 100644 --- a/cpp/thirdparty/protobuf-2.3.0/src/google/protobuf/reflection_ops.cc +++ b/cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/reflection_ops.cc @@ -32,8 +32,12 @@ // Based on original Protocol Buffers design by // Sanjay Ghemawat, Jeff Dean, and others. +#include +#include + #include #include +#include #include #include @@ -151,11 +155,12 @@ bool ReflectionOps::IsInitialized(const Message& message) { for (int i = 0; i < fields.size(); i++) { const FieldDescriptor* field = fields[i]; if (field->cpp_type() == FieldDescriptor::CPPTYPE_MESSAGE) { + if (field->is_repeated()) { int size = reflection->FieldSize(message, field); - for (int i = 0; i < size; i++) { - if (!reflection->GetRepeatedMessage(message, field, i) + for (int j = 0; j < size; j++) { + if (!reflection->GetRepeatedMessage(message, field, j) .IsInitialized()) { return false; } @@ -183,8 +188,8 @@ void ReflectionOps::DiscardUnknownFields(Message* message) { if (field->cpp_type() == FieldDescriptor::CPPTYPE_MESSAGE) { if (field->is_repeated()) { int size = reflection->FieldSize(*message, field); - for (int i = 0; i < size; i++) { - reflection->MutableRepeatedMessage(message, field, i) + for (int j = 0; j < size; j++) { + reflection->MutableRepeatedMessage(message, field, j) ->DiscardUnknownFields(); } } else { @@ -240,11 +245,11 @@ void ReflectionOps::FindInitializationErrors( if (field->is_repeated()) { int size = reflection->FieldSize(message, field); - for (int i = 0; i < size; i++) { + for (int j = 0; j < size; j++) { const Message& sub_message = - reflection->GetRepeatedMessage(message, field, i); + reflection->GetRepeatedMessage(message, field, j); FindInitializationErrors(sub_message, - SubMessagePrefix(prefix, field, i), + SubMessagePrefix(prefix, field, j), errors); } } else { diff --git a/cpp/thirdparty/protobuf-2.3.0/src/google/protobuf/reflection_ops.h b/cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/reflection_ops.h similarity index 98% rename from cpp/thirdparty/protobuf-2.3.0/src/google/protobuf/reflection_ops.h rename to cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/reflection_ops.h index 355a0a5d2..60165c2a6 100644 --- a/cpp/thirdparty/protobuf-2.3.0/src/google/protobuf/reflection_ops.h +++ b/cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/reflection_ops.h @@ -38,6 +38,7 @@ #ifndef GOOGLE_PROTOBUF_REFLECTION_OPS_H__ #define GOOGLE_PROTOBUF_REFLECTION_OPS_H__ +#include #include namespace google { diff --git a/cpp/thirdparty/protobuf-2.3.0/src/google/protobuf/reflection_ops_unittest.cc b/cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/reflection_ops_unittest.cc similarity index 99% rename from cpp/thirdparty/protobuf-2.3.0/src/google/protobuf/reflection_ops_unittest.cc rename to cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/reflection_ops_unittest.cc index 1cd56f1e6..29229b5a7 100644 --- a/cpp/thirdparty/protobuf-2.3.0/src/google/protobuf/reflection_ops_unittest.cc +++ b/cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/reflection_ops_unittest.cc @@ -152,7 +152,7 @@ TEST(ReflectionOpsTest, MergeUnknown) { EXPECT_EQ(2, message1.unknown_fields().field(1).varint()); } -#ifdef GTEST_HAS_DEATH_TEST +#ifdef PROTOBUF_HAS_DEATH_TEST TEST(ReflectionOpsTest, MergeFromSelf) { // Note: Copy is implemented in terms of Merge() so technically the Copy @@ -165,7 +165,7 @@ TEST(ReflectionOpsTest, MergeFromSelf) { "&from"); } -#endif // GTEST_HAS_DEATH_TEST +#endif // PROTOBUF_HAS_DEATH_TEST TEST(ReflectionOpsTest, Clear) { unittest::TestAllTypes message; diff --git a/cpp/thirdparty/protobuf-2.3.0/src/google/protobuf/repeated_field.cc b/cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/repeated_field.cc similarity index 80% rename from cpp/thirdparty/protobuf-2.3.0/src/google/protobuf/repeated_field.cc rename to cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/repeated_field.cc index f7beb110f..2c1f74c58 100644 --- a/cpp/thirdparty/protobuf-2.3.0/src/google/protobuf/repeated_field.cc +++ b/cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/repeated_field.cc @@ -32,53 +32,45 @@ // Based on original Protocol Buffers design by // Sanjay Ghemawat, Jeff Dean, and others. +#include + #include #include namespace google { namespace protobuf { + namespace internal { void RepeatedPtrFieldBase::Reserve(int new_size) { if (total_size_ >= new_size) return; void** old_elements = elements_; - total_size_ = max(total_size_ * 2, new_size); + total_size_ = max(kMinRepeatedFieldAllocationSize, + max(total_size_ * 2, new_size)); elements_ = new void*[total_size_]; - memcpy(elements_, old_elements, allocated_size_ * sizeof(elements_[0])); - if (old_elements != initial_space_) { + if (old_elements != NULL) { + memcpy(elements_, old_elements, allocated_size_ * sizeof(elements_[0])); delete [] old_elements; } } void RepeatedPtrFieldBase::Swap(RepeatedPtrFieldBase* other) { + if (this == other) return; void** swap_elements = elements_; int swap_current_size = current_size_; int swap_allocated_size = allocated_size_; int swap_total_size = total_size_; - // We may not be using initial_space_ but it's not worth checking. Just - // copy it anyway. - void* swap_initial_space[kInitialSize]; - memcpy(swap_initial_space, initial_space_, sizeof(initial_space_)); elements_ = other->elements_; current_size_ = other->current_size_; allocated_size_ = other->allocated_size_; total_size_ = other->total_size_; - memcpy(initial_space_, other->initial_space_, sizeof(initial_space_)); other->elements_ = swap_elements; other->current_size_ = swap_current_size; other->allocated_size_ = swap_allocated_size; other->total_size_ = swap_total_size; - memcpy(other->initial_space_, swap_initial_space, sizeof(swap_initial_space)); - - if (elements_ == other->initial_space_) { - elements_ = initial_space_; - } - if (other->elements_ == initial_space_) { - other->elements_ = other->initial_space_; - } } string* StringTypeHandlerBase::New() { @@ -88,8 +80,8 @@ void StringTypeHandlerBase::Delete(string* value) { delete value; } +} // namespace internal -} // namespace internal } // namespace protobuf } // namespace google diff --git a/cpp/thirdparty/protobuf-2.3.0/src/google/protobuf/repeated_field.h b/cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/repeated_field.h similarity index 74% rename from cpp/thirdparty/protobuf-2.3.0/src/google/protobuf/repeated_field.h rename to cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/repeated_field.h index defdefe07..570d4b751 100644 --- a/cpp/thirdparty/protobuf-2.3.0/src/google/protobuf/repeated_field.h +++ b/cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/repeated_field.h @@ -46,24 +46,35 @@ #ifndef GOOGLE_PROTOBUF_REPEATED_FIELD_H__ #define GOOGLE_PROTOBUF_REPEATED_FIELD_H__ +#include #include #include #include +#include +#include #include namespace google { +namespace upb { +namespace google_opensource { +class GMR_Handlers; +} // namespace google_opensource +} // namespace upb + namespace protobuf { class Message; namespace internal { -// We need this (from generated_message_reflection.cc). -LIBPROTOBUF_EXPORT int StringSpaceUsedExcludingSelf(const string& str); +static const int kMinRepeatedFieldAllocationSize = 4; +// A utility function for logging that doesn't need any template types. +void LogIndexOutOfBounds(int index, int size); } // namespace internal + // RepeatedField is used to represent repeated fields of a primitive type (in // other words, everything except strings and nested Messages). Most users will // not ever use a RepeatedField directly; they will use the get-by-index, @@ -72,8 +83,13 @@ template class RepeatedField { public: RepeatedField(); + RepeatedField(const RepeatedField& other); + template + RepeatedField(Iter begin, const Iter& end); ~RepeatedField(); + RepeatedField& operator=(const RepeatedField& other); + int size() const; const Element& Get(int index) const; @@ -82,14 +98,17 @@ class RepeatedField { void Add(const Element& value); Element* Add(); // Remove the last element in the array. - // We don't provide a way to remove any element other than the last - // because it invites inefficient use, such as O(n^2) filtering loops - // that should have been O(n). If you want to remove an element other - // than the last, the best way to do it is to re-arrange the elements - // so that the one you want removed is at the end, then call RemoveLast(). void RemoveLast(); + + // Extract elements with indices in "[start .. start+num-1]". + // Copy them into "elements[0 .. num-1]" if "elements" is not NULL. + // Caution: implementation also moves elements with indices [start+num ..]. + // Calling this routine inside a loop can cause quadratic behavior. + void ExtractSubrange(int start, int num, Element* elements); + void Clear(); void MergeFrom(const RepeatedField& other); + void CopyFrom(const RepeatedField& other); // Reserve space to expand the field to at least the given size. If the // array is grown, it will always be at least doubled in size. @@ -116,27 +135,46 @@ class RepeatedField { // STL-like iterator support typedef Element* iterator; typedef const Element* const_iterator; + typedef Element value_type; + typedef value_type& reference; + typedef const value_type& const_reference; + typedef value_type* pointer; + typedef const value_type* const_pointer; + typedef int size_type; + typedef ptrdiff_t difference_type; iterator begin(); const_iterator begin() const; iterator end(); const_iterator end() const; + // Reverse iterator support + typedef std::reverse_iterator const_reverse_iterator; + typedef std::reverse_iterator reverse_iterator; + reverse_iterator rbegin() { + return reverse_iterator(end()); + } + const_reverse_iterator rbegin() const { + return const_reverse_iterator(end()); + } + reverse_iterator rend() { + return reverse_iterator(begin()); + } + const_reverse_iterator rend() const { + return const_reverse_iterator(begin()); + } + // Returns the number of bytes used by the repeated field, excluding // sizeof(*this) int SpaceUsedExcludingSelf() const; private: - GOOGLE_DISALLOW_EVIL_CONSTRUCTORS(RepeatedField); - - static const int kInitialSize = 4; + static const int kInitialSize = 0; Element* elements_; int current_size_; int total_size_; - Element initial_space_[kInitialSize]; - // Move the contents of |from| into |to|, possibly clobbering |from| in the // process. For primitive types this is just a memcpy(), but it could be // specialized for non-primitive types to, say, swap each element instead. @@ -148,7 +186,21 @@ class RepeatedField { namespace internal { template class RepeatedPtrIterator; -template class RepeatedPtrOverPtrsIterator; +template class RepeatedPtrOverPtrsIterator; +} // namespace internal + +namespace internal { + +// This is a helper template to copy an array of elements effeciently when they +// have a trivial copy constructor, and correctly otherwise. This really +// shouldn't be necessary, but our compiler doesn't optimize std::copy very +// effectively. +template ::value> +struct ElementCopier { + void operator()(Element to[], const Element from[], int array_size); +}; + } // namespace internal namespace internal { @@ -183,6 +235,10 @@ class LIBPROTOBUF_EXPORT RepeatedPtrFieldBase { // use of AddFromCleared(), which is not part of the public interface. friend class ExtensionSet; + // To parse directly into a proto2 generated class, the upb class GMR_Handlers + // needs to be able to modify a RepeatedPtrFieldBase directly. + friend class LIBPROTOBUF_EXPORT upb::google_opensource::GMR_Handlers; + RepeatedPtrFieldBase(); // Must be called from destructor. @@ -203,6 +259,16 @@ class LIBPROTOBUF_EXPORT RepeatedPtrFieldBase { void Clear(); template void MergeFrom(const RepeatedPtrFieldBase& other); + template + void CopyFrom(const RepeatedPtrFieldBase& other); + + void CloseGap(int start, int num) { + // Close up a gap of "num" elements starting at offset "start". + for (int i = start + num; i < allocated_size_; ++i) + elements_[i - num] = elements_[i]; + current_size_ -= num; + allocated_size_ -= num; + } void Reserve(int new_size); @@ -245,15 +311,13 @@ class LIBPROTOBUF_EXPORT RepeatedPtrFieldBase { private: GOOGLE_DISALLOW_EVIL_CONSTRUCTORS(RepeatedPtrFieldBase); - static const int kInitialSize = 4; + static const int kInitialSize = 0; void** elements_; int current_size_; int allocated_size_; int total_size_; - void* initial_space_[kInitialSize]; - template static inline typename TypeHandler::Type* cast(void* element) { return reinterpret_cast(element); @@ -275,6 +339,7 @@ class GenericTypeHandler { to->MergeFrom(from); } static int SpaceUsed(const GenericType& value) { return value.SpaceUsed(); } + static const Type& default_instance() { return Type::default_instance(); } }; template <> @@ -283,6 +348,25 @@ inline void GenericTypeHandler::Merge( to->CheckTypeAndMergeFrom(from); } +template <> +inline const MessageLite& GenericTypeHandler::default_instance() { + // Yes, the behavior of the code is undefined, but this function is only + // called when we're already deep into the world of undefined, because the + // caller called Get(index) out of bounds. + MessageLite* null = NULL; + return *null; +} + +template <> +inline const Message& GenericTypeHandler::default_instance() { + // Yes, the behavior of the code is undefined, but this function is only + // called when we're already deep into the world of undefined, because the + // caller called Get(index) out of bounds. + Message* null = NULL; + return *null; +} + + // HACK: If a class is declared as DLL-exported in MSVC, it insists on // generating copies of all its methods -- even inline ones -- to include // in the DLL. But SpaceUsed() calls StringSpaceUsedExcludingSelf() which @@ -298,6 +382,9 @@ class LIBPROTOBUF_EXPORT StringTypeHandlerBase { static void Delete(string* value); static void Clear(string* value) { value->clear(); } static void Merge(const string& from, string* to) { *to = from; } + static const Type& default_instance() { + return ::google::protobuf::internal::kEmptyString; + } }; class StringTypeHandler : public StringTypeHandlerBase { @@ -316,17 +403,31 @@ template class RepeatedPtrField : public internal::RepeatedPtrFieldBase { public: RepeatedPtrField(); - + RepeatedPtrField(const RepeatedPtrField& other); + template + RepeatedPtrField(Iter begin, const Iter& end); ~RepeatedPtrField(); + RepeatedPtrField& operator=(const RepeatedPtrField& other); + int size() const; const Element& Get(int index) const; Element* Mutable(int index); Element* Add(); - void RemoveLast(); // Remove the last element in the array. + + // Remove the last element in the array. + // Ownership of the element is retained by the array. + void RemoveLast(); + + // Delete elements with indices in the range [start .. start+num-1]. + // Caution: implementation moves all elements with indices [start+num .. ]. + // Calling this routine inside a loop can cause quadratic behavior. + void DeleteSubrange(int start, int num); + void Clear(); void MergeFrom(const RepeatedPtrField& other); + void CopyFrom(const RepeatedPtrField& other); // Reserve space to expand the field to at least the given size. This only // resizes the pointer array; it doesn't allocate any objects. If the @@ -349,47 +450,79 @@ class RepeatedPtrField : public internal::RepeatedPtrFieldBase { // STL-like iterator support typedef internal::RepeatedPtrIterator iterator; typedef internal::RepeatedPtrIterator const_iterator; + typedef Element value_type; + typedef value_type& reference; + typedef const value_type& const_reference; + typedef value_type* pointer; + typedef const value_type* const_pointer; + typedef int size_type; + typedef ptrdiff_t difference_type; iterator begin(); const_iterator begin() const; iterator end(); const_iterator end() const; + // Reverse iterator support + typedef std::reverse_iterator const_reverse_iterator; + typedef std::reverse_iterator reverse_iterator; + reverse_iterator rbegin() { + return reverse_iterator(end()); + } + const_reverse_iterator rbegin() const { + return const_reverse_iterator(end()); + } + reverse_iterator rend() { + return reverse_iterator(begin()); + } + const_reverse_iterator rend() const { + return const_reverse_iterator(begin()); + } + // Custom STL-like iterator that iterates over and returns the underlying // pointers to Element rather than Element itself. - typedef internal::RepeatedPtrOverPtrsIterator pointer_iterator; + typedef internal::RepeatedPtrOverPtrsIterator + pointer_iterator; + typedef internal::RepeatedPtrOverPtrsIterator + const_pointer_iterator; pointer_iterator pointer_begin(); + const_pointer_iterator pointer_begin() const; pointer_iterator pointer_end(); + const_pointer_iterator pointer_end() const; // Returns (an estimate of) the number of bytes used by the repeated field, // excluding sizeof(*this). int SpaceUsedExcludingSelf() const; - // The spaced used just by the pointer array, not counting the objects pointed - // at. Returns zero if the array is inlined (i.e. initial_space_ is being - // used). - int SpaceUsedByArray() const; - // Advanced memory management -------------------------------------- - // When hardcore memory management becomes necessary -- as it often + // When hardcore memory management becomes necessary -- as it sometimes // does here at Google -- the following methods may be useful. // Add an already-allocated object, passing ownership to the // RepeatedPtrField. void AddAllocated(Element* value); - // Remove the last element and return it, passing ownership to the - // caller. + // Remove the last element and return it, passing ownership to the caller. // Requires: size() > 0 Element* ReleaseLast(); + // Extract elements with indices in the range "[start .. start+num-1]". + // The caller assumes ownership of the extracted elements and is responsible + // for deleting them when they are no longer needed. + // If "elements" is non-NULL, then pointers to the extracted elements + // are stored in "elements[0 .. num-1]" for the convenience of the caller. + // If "elements" is NULL, then the caller must use some other mechanism + // to perform any further operations (like deletion) on these elements. + // Caution: implementation also moves elements with indices [start+num ..]. + // Calling this routine inside a loop can cause quadratic behavior. + void ExtractSubrange(int start, int num, Element** elements); + // When elements are removed by calls to RemoveLast() or Clear(), they // are not actually freed. Instead, they are cleared and kept so that // they can be reused later. This can save lots of CPU time when // repeatedly reusing a protocol message for similar purposes. // - // Really, extremely hardcore programs may actually want to manipulate - // these objects to better-optimize memory management. These methods - // allow that. + // Hardcore programs may choose to manipulate these cleared objects + // to better optimize memory management using the following routines. // Get the number of cleared objects that are currently being kept // around for reuse. @@ -410,27 +543,49 @@ class RepeatedPtrField : public internal::RepeatedPtrFieldBase { // methods on RepeatedPtrFieldBase. class TypeHandler; - - private: - GOOGLE_DISALLOW_EVIL_CONSTRUCTORS(RepeatedPtrField); }; // implementation ==================================================== template inline RepeatedField::RepeatedField() - : elements_(initial_space_), + : elements_(NULL), current_size_(0), total_size_(kInitialSize) { } template -RepeatedField::~RepeatedField() { - if (elements_ != initial_space_) { - delete [] elements_; +inline RepeatedField::RepeatedField(const RepeatedField& other) + : elements_(NULL), + current_size_(0), + total_size_(kInitialSize) { + CopyFrom(other); +} + +template +template +inline RepeatedField::RepeatedField(Iter begin, const Iter& end) + : elements_(NULL), + current_size_(0), + total_size_(kInitialSize) { + for (; begin != end; ++begin) { + Add(*begin); } } +template +RepeatedField::~RepeatedField() { + delete [] elements_; +} + +template +inline RepeatedField& +RepeatedField::operator=(const RepeatedField& other) { + if (this != &other) + CopyFrom(other); + return *this; +} + template inline int RepeatedField::size() const { return current_size_; @@ -489,6 +644,27 @@ inline void RepeatedField::RemoveLast() { --current_size_; } +template +void RepeatedField::ExtractSubrange( + int start, int num, Element* elements) { + GOOGLE_DCHECK_GE(start, 0); + GOOGLE_DCHECK_GE(num, 0); + GOOGLE_DCHECK_LE(start + num, this->size()); + + // Save the values of the removed elements if requested. + if (elements != NULL) { + for (int i = 0; i < num; ++i) + elements[i] = this->Get(i + start); + } + + // Slide remaining elements down to fill the gap. + if (num > 0) { + for (int i = start + num; i < this->size(); ++i) + this->Set(i - num, this->Get(i)); + this->Truncate(this->size() - num); + } +} + template inline void RepeatedField::Clear() { current_size_ = 0; @@ -496,9 +672,17 @@ inline void RepeatedField::Clear() { template inline void RepeatedField::MergeFrom(const RepeatedField& other) { - Reserve(current_size_ + other.current_size_); - CopyArray(elements_ + current_size_, other.elements_, other.current_size_); - current_size_ += other.current_size_; + if (other.current_size_ != 0) { + Reserve(current_size_ + other.current_size_); + CopyArray(elements_ + current_size_, other.elements_, other.current_size_); + current_size_ += other.current_size_; + } +} + +template +inline void RepeatedField::CopyFrom(const RepeatedField& other) { + Clear(); + MergeFrom(other); } template @@ -514,30 +698,18 @@ inline const Element* RepeatedField::data() const { template void RepeatedField::Swap(RepeatedField* other) { + if (this == other) return; Element* swap_elements = elements_; int swap_current_size = current_size_; int swap_total_size = total_size_; - // We may not be using initial_space_ but it's not worth checking. Just - // copy it anyway. - Element swap_initial_space[kInitialSize]; - MoveArray(swap_initial_space, initial_space_, kInitialSize); elements_ = other->elements_; current_size_ = other->current_size_; total_size_ = other->total_size_; - MoveArray(initial_space_, other->initial_space_, kInitialSize); other->elements_ = swap_elements; other->current_size_ = swap_current_size; other->total_size_ = swap_total_size; - MoveArray(other->initial_space_, swap_initial_space, kInitialSize); - - if (elements_ == other->initial_space_) { - elements_ = initial_space_; - } - if (other->elements_ == initial_space_) { - other->elements_ = other->initial_space_; - } } template @@ -568,20 +740,21 @@ RepeatedField::end() const { template inline int RepeatedField::SpaceUsedExcludingSelf() const { - return (elements_ != initial_space_) ? total_size_ * sizeof(elements_[0]) : 0; + return (elements_ != NULL) ? total_size_ * sizeof(elements_[0]) : 0; } -// Avoid inlining of Reserve(): new, memcpy, and delete[] lead to a significant +// Avoid inlining of Reserve(): new, copy, and delete[] lead to a significant // amount of code bloat. template void RepeatedField::Reserve(int new_size) { if (total_size_ >= new_size) return; Element* old_elements = elements_; - total_size_ = max(total_size_ * 2, new_size); + total_size_ = max(google::protobuf::internal::kMinRepeatedFieldAllocationSize, + max(total_size_ * 2, new_size)); elements_ = new Element[total_size_]; - MoveArray(elements_, old_elements, current_size_); - if (old_elements != initial_space_) { + if (old_elements != NULL) { + MoveArray(elements_, old_elements, current_size_); delete [] old_elements; } } @@ -594,23 +767,40 @@ inline void RepeatedField::Truncate(int new_size) { template inline void RepeatedField::MoveArray( - Element to[], Element from[], int size) { - memcpy(to, from, size * sizeof(Element)); + Element to[], Element from[], int array_size) { + CopyArray(to, from, array_size); } template inline void RepeatedField::CopyArray( - Element to[], const Element from[], int size) { - memcpy(to, from, size * sizeof(Element)); + Element to[], const Element from[], int array_size) { + internal::ElementCopier()(to, from, array_size); } +namespace internal { + +template +void ElementCopier::operator()( + Element to[], const Element from[], int array_size) { + std::copy(from, from + array_size, to); +} + +template +struct ElementCopier { + void operator()(Element to[], const Element from[], int array_size) { + memcpy(to, from, array_size * sizeof(Element)); + } +}; + +} // namespace internal + // ------------------------------------------------------------------- namespace internal { inline RepeatedPtrFieldBase::RepeatedPtrFieldBase() - : elements_(initial_space_), + : elements_(NULL), current_size_(0), allocated_size_(0), total_size_(kInitialSize) { @@ -621,16 +811,13 @@ void RepeatedPtrFieldBase::Destroy() { for (int i = 0; i < allocated_size_; i++) { TypeHandler::Delete(cast(elements_[i])); } - if (elements_ != initial_space_) { - delete [] elements_; - } + delete [] elements_; } inline int RepeatedPtrFieldBase::size() const { return current_size_; } - template inline const typename TypeHandler::Type& RepeatedPtrFieldBase::Get(int index) const { @@ -638,6 +825,7 @@ RepeatedPtrFieldBase::Get(int index) const { return *cast(elements_[index]); } + template inline typename TypeHandler::Type* RepeatedPtrFieldBase::Mutable(int index) { @@ -675,10 +863,16 @@ template inline void RepeatedPtrFieldBase::MergeFrom(const RepeatedPtrFieldBase& other) { Reserve(current_size_ + other.current_size_); for (int i = 0; i < other.current_size_; i++) { - TypeHandler::Merge(other.Get(i), Add()); + TypeHandler::Merge(other.template Get(i), Add()); } } +template +inline void RepeatedPtrFieldBase::CopyFrom(const RepeatedPtrFieldBase& other) { + RepeatedPtrFieldBase::Clear(); + RepeatedPtrFieldBase::MergeFrom(other); +} + inline int RepeatedPtrFieldBase::Capacity() const { return total_size_; } @@ -713,7 +907,7 @@ inline void RepeatedPtrFieldBase::SwapElements(int index1, int index2) { template inline int RepeatedPtrFieldBase::SpaceUsedExcludingSelf() const { int allocated_bytes = - (elements_ != initial_space_) ? total_size_ * sizeof(elements_[0]) : 0; + (elements_ != NULL) ? total_size_ * sizeof(elements_[0]) : 0; for (int i = 0; i < allocated_size_; ++i) { allocated_bytes += TypeHandler::SpaceUsed(*cast(elements_[i])); } @@ -770,7 +964,6 @@ inline typename TypeHandler::Type* RepeatedPtrFieldBase::ReleaseLast() { return result; } - inline int RepeatedPtrFieldBase::ClearedCount() const { return allocated_size_ - current_size_; } @@ -794,21 +987,46 @@ inline typename TypeHandler::Type* RepeatedPtrFieldBase::ReleaseCleared() { template class RepeatedPtrField::TypeHandler - : public internal::GenericTypeHandler {}; + : public internal::GenericTypeHandler { +}; template <> class RepeatedPtrField::TypeHandler - : public internal::StringTypeHandler {}; + : public internal::StringTypeHandler { +}; template inline RepeatedPtrField::RepeatedPtrField() {} +template +inline RepeatedPtrField::RepeatedPtrField( + const RepeatedPtrField& other) { + CopyFrom(other); +} + +template +template +inline RepeatedPtrField::RepeatedPtrField( + Iter begin, const Iter& end) { + for (; begin != end; ++begin) { + *Add() = *begin; + } +} + template RepeatedPtrField::~RepeatedPtrField() { Destroy(); } +template +inline RepeatedPtrField& RepeatedPtrField::operator=( + const RepeatedPtrField& other) { + if (this != &other) + CopyFrom(other); + return *this; +} + template inline int RepeatedPtrField::size() const { return RepeatedPtrFieldBase::size(); @@ -819,6 +1037,7 @@ inline const Element& RepeatedPtrField::Get(int index) const { return RepeatedPtrFieldBase::Get(index); } + template inline Element* RepeatedPtrField::Mutable(int index) { return RepeatedPtrFieldBase::Mutable(index); @@ -834,6 +1053,33 @@ inline void RepeatedPtrField::RemoveLast() { RepeatedPtrFieldBase::RemoveLast(); } +template +inline void RepeatedPtrField::DeleteSubrange(int start, int num) { + GOOGLE_DCHECK_GE(start, 0); + GOOGLE_DCHECK_GE(num, 0); + GOOGLE_DCHECK_LE(start + num, size()); + for (int i = 0; i < num; ++i) + delete RepeatedPtrFieldBase::Mutable(start + i); + ExtractSubrange(start, num, NULL); +} + +template +inline void RepeatedPtrField::ExtractSubrange( + int start, int num, Element** elements) { + GOOGLE_DCHECK_GE(start, 0); + GOOGLE_DCHECK_GE(num, 0); + GOOGLE_DCHECK_LE(start + num, size()); + + if (num > 0) { + // Save the values of the removed elements if requested. + if (elements != NULL) { + for (int i = 0; i < num; ++i) + elements[i] = RepeatedPtrFieldBase::Mutable(i + start); + } + CloseGap(start, num); + } +} + template inline void RepeatedPtrField::Clear() { RepeatedPtrFieldBase::Clear(); @@ -845,6 +1091,12 @@ inline void RepeatedPtrField::MergeFrom( RepeatedPtrFieldBase::MergeFrom(other); } +template +inline void RepeatedPtrField::CopyFrom( + const RepeatedPtrField& other) { + RepeatedPtrFieldBase::CopyFrom(other); +} + template inline Element** RepeatedPtrField::mutable_data() { return RepeatedPtrFieldBase::mutable_data(); @@ -914,7 +1166,7 @@ namespace internal { // refer to this class directly; use RepeatedPtrField::iterator instead. // // The iterator for RepeatedPtrField, RepeatedPtrIterator, is -// very similar to iterator_ptr in util/gtl/iterator_adaptors-inl.h, +// very similar to iterator_ptr in util/gtl/iterator_adaptors.h, // but adds random-access operators and is modified to wrap a void** base // iterator (since RepeatedPtrField stores its array as a void* array and // casting void** to T** would violate C++ aliasing rules). @@ -944,7 +1196,7 @@ class RepeatedPtrIterator template RepeatedPtrIterator(const RepeatedPtrIterator& other) : it_(other.it_) { - // Force a compiler error if the other type is not convertable to ours. + // Force a compiler error if the other type is not convertible to ours. if (false) { implicit_cast(0); } @@ -1010,11 +1262,14 @@ class RepeatedPtrIterator // rather than the objects themselves as RepeatedPtrIterator does. // Consider using this when working with stl algorithms that change // the array. -template +// The VoidPtr template parameter holds the type-agnostic pointer value +// referenced by the iterator. It should either be "void *" for a mutable +// iterator, or "const void *" for a constant iterator. +template class RepeatedPtrOverPtrsIterator : public std::iterator { public: - typedef RepeatedPtrOverPtrsIterator iterator; + typedef RepeatedPtrOverPtrsIterator iterator; typedef std::iterator< std::random_access_iterator_tag, Element*> superclass; @@ -1025,7 +1280,7 @@ class RepeatedPtrOverPtrsIterator typedef typename superclass::difference_type difference_type; RepeatedPtrOverPtrsIterator() : it_(NULL) {} - explicit RepeatedPtrOverPtrsIterator(void** it) : it_(it) {} + explicit RepeatedPtrOverPtrsIterator(VoidPtr* it) : it_(it) {} // dereferenceable reference operator*() const { return *reinterpret_cast(it_); } @@ -1080,10 +1335,9 @@ class RepeatedPtrOverPtrsIterator friend class RepeatedPtrIterator; // The internal iterator. - void** it_; + VoidPtr* it_; }; - } // namespace internal template @@ -1113,10 +1367,21 @@ RepeatedPtrField::pointer_begin() { return pointer_iterator(raw_mutable_data()); } template +inline typename RepeatedPtrField::const_pointer_iterator +RepeatedPtrField::pointer_begin() const { + return const_pointer_iterator(const_cast(raw_mutable_data())); +} +template inline typename RepeatedPtrField::pointer_iterator RepeatedPtrField::pointer_end() { return pointer_iterator(raw_mutable_data() + size()); } +template +inline typename RepeatedPtrField::const_pointer_iterator +RepeatedPtrField::pointer_end() const { + return const_pointer_iterator( + const_cast(raw_mutable_data() + size())); +} // Iterators and helper functions that follow the spirit of the STL @@ -1126,7 +1391,7 @@ RepeatedPtrField::pointer_end() { // std::copy(some_sequence.begin(), some_sequence.end(), // google::protobuf::RepeatedFieldBackInserter(proto.mutable_sequence())); // -// Ported by johannes from util/gtl/proto-array-iterators-inl.h +// Ported by johannes from util/gtl/proto-array-iterators.h namespace internal { // A back inserter for RepeatedField objects. @@ -1147,12 +1412,12 @@ template class RepeatedFieldBackInsertIterator RepeatedFieldBackInsertIterator& operator++() { return *this; } - RepeatedFieldBackInsertIterator& operator++(int ignores_parameter) { + RepeatedFieldBackInsertIterator& operator++(int /* unused */) { return *this; } private: - RepeatedField* const field_; + RepeatedField* field_; }; // A back inserter for RepeatedPtrField objects. @@ -1178,12 +1443,12 @@ template class RepeatedPtrFieldBackInsertIterator RepeatedPtrFieldBackInsertIterator& operator++() { return *this; } - RepeatedPtrFieldBackInsertIterator& operator++(int ignores_parameter) { + RepeatedPtrFieldBackInsertIterator& operator++(int /* unused */) { return *this; } private: - RepeatedPtrField* const field_; + RepeatedPtrField* field_; }; // A back inserter for RepeatedPtrFields that inserts by transfering ownership @@ -1207,26 +1472,32 @@ template class AllocatedRepeatedPtrFieldBackInsertIterator return *this; } AllocatedRepeatedPtrFieldBackInsertIterator& operator++( - int ignores_parameter) { + int /* unused */) { return *this; } private: - RepeatedPtrField* const field_; + RepeatedPtrField* field_; }; } // namespace internal // Provides a back insert iterator for RepeatedField instances, -// similar to std::back_inserter(). Note the identically named -// function for RepeatedPtrField instances. +// similar to std::back_inserter(). template internal::RepeatedFieldBackInsertIterator RepeatedFieldBackInserter(RepeatedField* const mutable_field) { return internal::RepeatedFieldBackInsertIterator(mutable_field); } // Provides a back insert iterator for RepeatedPtrField instances, -// similar to std::back_inserter(). Note the identically named -// function for RepeatedField instances. +// similar to std::back_inserter(). +template internal::RepeatedPtrFieldBackInsertIterator +RepeatedPtrFieldBackInserter(RepeatedPtrField* const mutable_field) { + return internal::RepeatedPtrFieldBackInsertIterator(mutable_field); +} + +// Special back insert iterator for RepeatedPtrField instances, just in +// case someone wants to write generic template code that can access both +// RepeatedFields and RepeatedPtrFields using a common name. template internal::RepeatedPtrFieldBackInsertIterator RepeatedFieldBackInserter(RepeatedPtrField* const mutable_field) { return internal::RepeatedPtrFieldBackInsertIterator(mutable_field); diff --git a/cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/repeated_field_reflection_unittest.cc b/cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/repeated_field_reflection_unittest.cc new file mode 100644 index 000000000..a40162d0b --- /dev/null +++ b/cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/repeated_field_reflection_unittest.cc @@ -0,0 +1,195 @@ +// Protocol Buffers - Google's data interchange format +// Copyright 2008 Google Inc. All rights reserved. +// http://code.google.com/p/protobuf/ +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +// Author: tgs@google.com (Tom Szymanski) +// +// Test reflection methods for aggregate access to Repeated[Ptr]Fields. +// This test proto2 methods on a proto2 layout. + +#include +#include +#include +#include +#include + +namespace google { +namespace protobuf { + +using unittest::ForeignMessage; +using unittest::TestAllTypes; +using unittest::TestAllExtensions; + +namespace { + +static int Func(int i, int j) { + return i * j; +} + +static string StrFunc(int i, int j) { + string str; + SStringPrintf(&str, "%d", Func(i, 4)); + return str; +} + + +TEST(RepeatedFieldReflectionTest, RegularFields) { + TestAllTypes message; + const Reflection* refl = message.GetReflection(); + const Descriptor* desc = message.GetDescriptor(); + + for (int i = 0; i < 10; ++i) { + message.add_repeated_int32(Func(i, 1)); + message.add_repeated_double(Func(i, 2)); + message.add_repeated_string(StrFunc(i, 5)); + message.add_repeated_foreign_message()->set_c(Func(i, 6)); + } + + // Get FieldDescriptors for all the fields of interest. + const FieldDescriptor* fd_repeated_int32 = + desc->FindFieldByName("repeated_int32"); + const FieldDescriptor* fd_repeated_double = + desc->FindFieldByName("repeated_double"); + const FieldDescriptor* fd_repeated_string = + desc->FindFieldByName("repeated_string"); + const FieldDescriptor* fd_repeated_foreign_message = + desc->FindFieldByName("repeated_foreign_message"); + + // Get RepeatedField objects for all fields of interest. + const RepeatedField& rf_int32 = + refl->GetRepeatedField(message, fd_repeated_int32); + const RepeatedField& rf_double = + refl->GetRepeatedField(message, fd_repeated_double); + + // Get mutable RepeatedField objects for all fields of interest. + RepeatedField* mrf_int32 = + refl->MutableRepeatedField(&message, fd_repeated_int32); + RepeatedField* mrf_double = + refl->MutableRepeatedField(&message, fd_repeated_double); + + // Get RepeatedPtrField objects for all fields of interest. + const RepeatedPtrField& rpf_string = + refl->GetRepeatedPtrField(message, fd_repeated_string); + const RepeatedPtrField& rpf_foreign_message = + refl->GetRepeatedPtrField( + message, fd_repeated_foreign_message); + const RepeatedPtrField& rpf_message = + refl->GetRepeatedPtrField( + message, fd_repeated_foreign_message); + + // Get mutable RepeatedPtrField objects for all fields of interest. + RepeatedPtrField* mrpf_string = + refl->MutableRepeatedPtrField(&message, fd_repeated_string); + RepeatedPtrField* mrpf_foreign_message = + refl->MutableRepeatedPtrField( + &message, fd_repeated_foreign_message); + RepeatedPtrField* mrpf_message = + refl->MutableRepeatedPtrField( + &message, fd_repeated_foreign_message); + + // Make sure we can do get and sets through the Repeated[Ptr]Field objects. + for (int i = 0; i < 10; ++i) { + // Check gets through const objects. + EXPECT_EQ(rf_int32.Get(i), Func(i, 1)); + EXPECT_EQ(rf_double.Get(i), Func(i, 2)); + EXPECT_EQ(rpf_string.Get(i), StrFunc(i, 5)); + EXPECT_EQ(rpf_foreign_message.Get(i).c(), Func(i, 6)); + EXPECT_EQ(down_cast(&rpf_message.Get(i))->c(), + Func(i, 6)); + + // Check gets through mutable objects. + EXPECT_EQ(mrf_int32->Get(i), Func(i, 1)); + EXPECT_EQ(mrf_double->Get(i), Func(i, 2)); + EXPECT_EQ(mrpf_string->Get(i), StrFunc(i, 5)); + EXPECT_EQ(mrpf_foreign_message->Get(i).c(), Func(i, 6)); + EXPECT_EQ(down_cast(&mrpf_message->Get(i))->c(), + Func(i, 6)); + + // Check sets through mutable objects. + mrf_int32->Set(i, Func(i, -1)); + mrf_double->Set(i, Func(i, -2)); + mrpf_string->Mutable(i)->assign(StrFunc(i, -5)); + mrpf_foreign_message->Mutable(i)->set_c(Func(i, -6)); + EXPECT_EQ(message.repeated_int32(i), Func(i, -1)); + EXPECT_EQ(message.repeated_double(i), Func(i, -2)); + EXPECT_EQ(message.repeated_string(i), StrFunc(i, -5)); + EXPECT_EQ(message.repeated_foreign_message(i).c(), Func(i, -6)); + down_cast(mrpf_message->Mutable(i))->set_c(Func(i, 7)); + EXPECT_EQ(message.repeated_foreign_message(i).c(), Func(i, 7)); + } + +#ifdef PROTOBUF_HAS_DEATH_TEST + // Make sure types are checked correctly at runtime. + const FieldDescriptor* fd_optional_int32 = + desc->FindFieldByName("optional_int32"); + EXPECT_DEATH(refl->GetRepeatedField( + message, fd_optional_int32), "requires a repeated field"); + EXPECT_DEATH(refl->GetRepeatedField( + message, fd_repeated_int32), "not the right type"); + EXPECT_DEATH(refl->GetRepeatedPtrField( + message, fd_repeated_foreign_message), "wrong submessage type"); +#endif // PROTOBUF_HAS_DEATH_TEST +} + + + + +TEST(RepeatedFieldReflectionTest, ExtensionFields) { + TestAllExtensions extended_message; + const Reflection* refl = extended_message.GetReflection(); + const Descriptor* desc = extended_message.GetDescriptor(); + + for (int i = 0; i < 10; ++i) { + extended_message.AddExtension( + unittest::repeated_int64_extension, Func(i, 1)); + } + + const FieldDescriptor* fd_repeated_int64_extension = + desc->file()->FindExtensionByName("repeated_int64_extension"); + GOOGLE_CHECK(fd_repeated_int64_extension != NULL); + + const RepeatedField& rf_int64_extension = + refl->GetRepeatedField(extended_message, + fd_repeated_int64_extension); + + RepeatedField* mrf_int64_extension = + refl->MutableRepeatedField(&extended_message, + fd_repeated_int64_extension); + + for (int i = 0; i < 10; ++i) { + EXPECT_EQ(Func(i, 1), rf_int64_extension.Get(i)); + mrf_int64_extension->Set(i, Func(i, -1)); + EXPECT_EQ(Func(i, -1), + extended_message.GetExtension(unittest::repeated_int64_extension, i)); + } +} + +} // namespace +} // namespace protobuf +} // namespace google diff --git a/cpp/thirdparty/protobuf-2.3.0/src/google/protobuf/repeated_field_unittest.cc b/cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/repeated_field_unittest.cc similarity index 68% rename from cpp/thirdparty/protobuf-2.3.0/src/google/protobuf/repeated_field_unittest.cc rename to cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/repeated_field_unittest.cc index 7c35f6041..257701eb3 100644 --- a/cpp/thirdparty/protobuf-2.3.0/src/google/protobuf/repeated_field_unittest.cc +++ b/cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/repeated_field_unittest.cc @@ -36,6 +36,7 @@ // other proto2 unittests. #include +#include #include #include @@ -46,7 +47,7 @@ #include #include #include -#include +#include namespace google { using protobuf_unittest::TestAllTypes; @@ -54,8 +55,7 @@ using protobuf_unittest::TestAllTypes; namespace protobuf { namespace { -// Test operations on a RepeatedField which is small enough that it does -// not allocate a separate array for storage. +// Test operations on a small RepeatedField. TEST(RepeatedField, Small) { RepeatedField field; @@ -77,7 +77,6 @@ TEST(RepeatedField, Small) { EXPECT_EQ(field.size(), 2); EXPECT_EQ(field.Get(0), 5); EXPECT_EQ(field.Get(1), 23); - EXPECT_EQ(field.SpaceUsedExcludingSelf(), 0); field.RemoveLast(); @@ -87,9 +86,11 @@ TEST(RepeatedField, Small) { field.Clear(); EXPECT_EQ(field.size(), 0); - EXPECT_EQ(field.SpaceUsedExcludingSelf(), 0); + int expected_usage = 4 * sizeof(int); + EXPECT_EQ(field.SpaceUsedExcludingSelf(), expected_usage); } + // Test operations on a RepeatedField which is large enough to allocate a // separate array. TEST(RepeatedField, Large) { @@ -213,10 +214,8 @@ TEST(RepeatedField, ReserveLessThanExisting) { TEST(RepeatedField, MergeFrom) { RepeatedField source, destination; - source.Add(4); source.Add(5); - destination.Add(1); destination.Add(2); destination.Add(3); @@ -224,7 +223,6 @@ TEST(RepeatedField, MergeFrom) { destination.MergeFrom(source); ASSERT_EQ(5, destination.size()); - EXPECT_EQ(1, destination.Get(0)); EXPECT_EQ(2, destination.Get(1)); EXPECT_EQ(3, destination.Get(2)); @@ -232,6 +230,78 @@ TEST(RepeatedField, MergeFrom) { EXPECT_EQ(5, destination.Get(4)); } +TEST(RepeatedField, CopyFrom) { + RepeatedField source, destination; + source.Add(4); + source.Add(5); + destination.Add(1); + destination.Add(2); + destination.Add(3); + + destination.CopyFrom(source); + + ASSERT_EQ(2, destination.size()); + EXPECT_EQ(4, destination.Get(0)); + EXPECT_EQ(5, destination.Get(1)); +} + +TEST(RepeatedField, CopyConstruct) { + RepeatedField source; + source.Add(1); + source.Add(2); + + RepeatedField destination(source); + + ASSERT_EQ(2, destination.size()); + EXPECT_EQ(1, destination.Get(0)); + EXPECT_EQ(2, destination.Get(1)); +} + +TEST(RepeatedField, IteratorConstruct) { + vector values; + values.push_back(1); + values.push_back(2); + + RepeatedField field(values.begin(), values.end()); + ASSERT_EQ(values.size(), field.size()); + EXPECT_EQ(values[0], field.Get(0)); + EXPECT_EQ(values[1], field.Get(1)); + + RepeatedField other(field.begin(), field.end()); + ASSERT_EQ(values.size(), other.size()); + EXPECT_EQ(values[0], other.Get(0)); + EXPECT_EQ(values[1], other.Get(1)); +} + +TEST(RepeatedField, CopyAssign) { + RepeatedField source, destination; + source.Add(4); + source.Add(5); + destination.Add(1); + destination.Add(2); + destination.Add(3); + + destination = source; + + ASSERT_EQ(2, destination.size()); + EXPECT_EQ(4, destination.Get(0)); + EXPECT_EQ(5, destination.Get(1)); +} + +TEST(RepeatedField, SelfAssign) { + // Verify that assignment to self does not destroy data. + RepeatedField source, *p; + p = &source; + source.Add(7); + source.Add(8); + + *p = source; + + ASSERT_EQ(2, source.size()); + EXPECT_EQ(7, source.Get(0)); + EXPECT_EQ(8, source.Get(1)); +} + TEST(RepeatedField, MutableDataIsMutable) { RepeatedField field; field.Add(1); @@ -261,12 +331,47 @@ TEST(RepeatedField, Truncate) { // Truncations that don't change the size are allowed, but growing is not // allowed. field.Truncate(field.size()); -#ifdef GTEST_HAS_DEATH_TEST +#ifdef PROTOBUF_HAS_DEATH_TEST EXPECT_DEBUG_DEATH(field.Truncate(field.size() + 1), "new_size"); #endif } +TEST(RepeatedField, ExtractSubrange) { + // Exhaustively test every subrange in arrays of all sizes from 0 through 9. + for (int sz = 0; sz < 10; ++sz) { + for (int num = 0; num <= sz; ++num) { + for (int start = 0; start < sz - num; ++start) { + // Create RepeatedField with sz elements having values 0 through sz-1. + RepeatedField field; + for (int i = 0; i < sz; ++i) + field.Add(i); + EXPECT_EQ(field.size(), sz); + + // Create a catcher array and call ExtractSubrange. + int32 catcher[10]; + for (int i = 0; i < 10; ++i) + catcher[i] = -1; + field.ExtractSubrange(start, num, catcher); + + // Does the resulting array have the right size? + EXPECT_EQ(field.size(), sz - num); + + // Were the removed elements extracted into the catcher array? + for (int i = 0; i < num; ++i) + EXPECT_EQ(catcher[i], start + i); + EXPECT_EQ(catcher[num], -1); + + // Does the resulting array contain the right values? + for (int i = 0; i < start; ++i) + EXPECT_EQ(field.Get(i), i); + for (int i = start; i < field.size(); ++i) + EXPECT_EQ(field.Get(i), i + num); + } + } + } +} + // =================================================================== // RepeatedPtrField tests. These pretty much just mirror the RepeatedField // tests above. @@ -303,6 +408,7 @@ TEST(RepeatedPtrField, Small) { EXPECT_EQ(field.size(), 0); } + TEST(RepeatedPtrField, Large) { RepeatedPtrField field; @@ -517,10 +623,8 @@ TEST(RepeatedPtrField, AddAlocated) { TEST(RepeatedPtrField, MergeFrom) { RepeatedPtrField source, destination; - source.Add()->assign("4"); source.Add()->assign("5"); - destination.Add()->assign("1"); destination.Add()->assign("2"); destination.Add()->assign("3"); @@ -528,7 +632,6 @@ TEST(RepeatedPtrField, MergeFrom) { destination.MergeFrom(source); ASSERT_EQ(5, destination.size()); - EXPECT_EQ("1", destination.Get(0)); EXPECT_EQ("2", destination.Get(1)); EXPECT_EQ("3", destination.Get(2)); @@ -536,6 +639,97 @@ TEST(RepeatedPtrField, MergeFrom) { EXPECT_EQ("5", destination.Get(4)); } +TEST(RepeatedPtrField, CopyFrom) { + RepeatedPtrField source, destination; + source.Add()->assign("4"); + source.Add()->assign("5"); + destination.Add()->assign("1"); + destination.Add()->assign("2"); + destination.Add()->assign("3"); + + destination.CopyFrom(source); + + ASSERT_EQ(2, destination.size()); + EXPECT_EQ("4", destination.Get(0)); + EXPECT_EQ("5", destination.Get(1)); +} + +TEST(RepeatedPtrField, CopyConstruct) { + RepeatedPtrField source; + source.Add()->assign("1"); + source.Add()->assign("2"); + + RepeatedPtrField destination(source); + + ASSERT_EQ(2, destination.size()); + EXPECT_EQ("1", destination.Get(0)); + EXPECT_EQ("2", destination.Get(1)); +} + +TEST(RepeatedPtrField, IteratorConstruct_String) { + vector values; + values.push_back("1"); + values.push_back("2"); + + RepeatedPtrField field(values.begin(), values.end()); + ASSERT_EQ(values.size(), field.size()); + EXPECT_EQ(values[0], field.Get(0)); + EXPECT_EQ(values[1], field.Get(1)); + + RepeatedPtrField other(field.begin(), field.end()); + ASSERT_EQ(values.size(), other.size()); + EXPECT_EQ(values[0], other.Get(0)); + EXPECT_EQ(values[1], other.Get(1)); +} + +TEST(RepeatedPtrField, IteratorConstruct_Proto) { + typedef TestAllTypes::NestedMessage Nested; + vector values; + values.push_back(Nested()); + values.back().set_bb(1); + values.push_back(Nested()); + values.back().set_bb(2); + + RepeatedPtrField field(values.begin(), values.end()); + ASSERT_EQ(values.size(), field.size()); + EXPECT_EQ(values[0].bb(), field.Get(0).bb()); + EXPECT_EQ(values[1].bb(), field.Get(1).bb()); + + RepeatedPtrField other(field.begin(), field.end()); + ASSERT_EQ(values.size(), other.size()); + EXPECT_EQ(values[0].bb(), other.Get(0).bb()); + EXPECT_EQ(values[1].bb(), other.Get(1).bb()); +} + +TEST(RepeatedPtrField, CopyAssign) { + RepeatedPtrField source, destination; + source.Add()->assign("4"); + source.Add()->assign("5"); + destination.Add()->assign("1"); + destination.Add()->assign("2"); + destination.Add()->assign("3"); + + destination = source; + + ASSERT_EQ(2, destination.size()); + EXPECT_EQ("4", destination.Get(0)); + EXPECT_EQ("5", destination.Get(1)); +} + +TEST(RepeatedPtrField, SelfAssign) { + // Verify that assignment to self does not destroy data. + RepeatedPtrField source, *p; + p = &source; + source.Add()->assign("7"); + source.Add()->assign("8"); + + *p = source; + + ASSERT_EQ(2, source.size()); + EXPECT_EQ("7", source.Get(0)); + EXPECT_EQ("8", source.Get(1)); +} + TEST(RepeatedPtrField, MutableDataIsMutable) { RepeatedPtrField field; *field.Add() = "1"; @@ -547,6 +741,77 @@ TEST(RepeatedPtrField, MutableDataIsMutable) { EXPECT_EQ("2", field.Get(0)); } +TEST(RepeatedPtrField, ExtractSubrange) { + // Exhaustively test every subrange in arrays of all sizes from 0 through 9 + // with 0 through 3 cleared elements at the end. + for (int sz = 0; sz < 10; ++sz) { + for (int num = 0; num <= sz; ++num) { + for (int start = 0; start < sz - num; ++start) { + for (int extra = 0; extra < 4; ++extra) { + vector subject; + + // Create an array with "sz" elements and "extra" cleared elements. + RepeatedPtrField field; + for (int i = 0; i < sz + extra; ++i) { + subject.push_back(new string()); + field.AddAllocated(subject[i]); + } + EXPECT_EQ(field.size(), sz + extra); + for (int i = 0; i < extra; ++i) + field.RemoveLast(); + EXPECT_EQ(field.size(), sz); + EXPECT_EQ(field.ClearedCount(), extra); + + // Create a catcher array and call ExtractSubrange. + string* catcher[10]; + for (int i = 0; i < 10; ++i) + catcher[i] = NULL; + field.ExtractSubrange(start, num, catcher); + + // Does the resulting array have the right size? + EXPECT_EQ(field.size(), sz - num); + + // Were the removed elements extracted into the catcher array? + for (int i = 0; i < num; ++i) + EXPECT_EQ(catcher[i], subject[start + i]); + EXPECT_EQ(NULL, catcher[num]); + + // Does the resulting array contain the right values? + for (int i = 0; i < start; ++i) + EXPECT_EQ(field.Mutable(i), subject[i]); + for (int i = start; i < field.size(); ++i) + EXPECT_EQ(field.Mutable(i), subject[i + num]); + + // Reinstate the cleared elements. + EXPECT_EQ(field.ClearedCount(), extra); + for (int i = 0; i < extra; ++i) + field.Add(); + EXPECT_EQ(field.ClearedCount(), 0); + EXPECT_EQ(field.size(), sz - num + extra); + + // Make sure the extra elements are all there (in some order). + for (int i = sz; i < sz + extra; ++i) { + int count = 0; + for (int j = sz; j < sz + extra; ++j) { + if (field.Mutable(j - num) == subject[i]) + count += 1; + } + EXPECT_EQ(count, 1); + } + + // Release the caught elements. + for (int i = 0; i < num; ++i) + delete catcher[i]; + } + } + } + } +} + +TEST(RepeatedPtrField, DeleteSubrange) { + // DeleteSubrange is a trivial extension of ExtendSubrange. +} + // =================================================================== // Iterator tests stolen from net/proto/proto-array_unittest. @@ -564,7 +829,8 @@ class RepeatedFieldIteratorTest : public testing::Test { TEST_F(RepeatedFieldIteratorTest, Convertible) { RepeatedField::iterator iter = proto_array_.begin(); RepeatedField::const_iterator c_iter = iter; - EXPECT_EQ(0, *c_iter); + RepeatedField::value_type value = *c_iter; + EXPECT_EQ(0, value); } TEST_F(RepeatedFieldIteratorTest, MutableIteration) { @@ -613,6 +879,8 @@ class RepeatedPtrFieldIteratorTest : public testing::Test { TEST_F(RepeatedPtrFieldIteratorTest, Convertible) { RepeatedPtrField::iterator iter = proto_array_.begin(); RepeatedPtrField::const_iterator c_iter = iter; + RepeatedPtrField::value_type value = *c_iter; + EXPECT_EQ("foo", value); } TEST_F(RepeatedPtrFieldIteratorTest, MutableIteration) { @@ -638,6 +906,30 @@ TEST_F(RepeatedPtrFieldIteratorTest, ConstIteration) { EXPECT_EQ("baz", *(--const_proto_array.end())); } +TEST_F(RepeatedPtrFieldIteratorTest, MutableReverseIteration) { + RepeatedPtrField::reverse_iterator iter = proto_array_.rbegin(); + EXPECT_EQ("baz", *iter); + ++iter; + EXPECT_EQ("bar", *(iter++)); + EXPECT_EQ("foo", *iter); + ++iter; + EXPECT_TRUE(proto_array_.rend() == iter); + EXPECT_EQ("foo", *(--proto_array_.rend())); +} + +TEST_F(RepeatedPtrFieldIteratorTest, ConstReverseIteration) { + const RepeatedPtrField& const_proto_array = proto_array_; + RepeatedPtrField::const_reverse_iterator iter + = const_proto_array.rbegin(); + EXPECT_EQ("baz", *iter); + ++iter; + EXPECT_EQ("bar", *(iter++)); + EXPECT_EQ("foo", *iter); + ++iter; + EXPECT_TRUE(const_proto_array.rend() == iter); + EXPECT_EQ("foo", *(--const_proto_array.rend())); +} + TEST_F(RepeatedPtrFieldIteratorTest, RandomAccess) { RepeatedPtrField::iterator iter = proto_array_.begin(); RepeatedPtrField::iterator iter2 = iter; @@ -705,14 +997,23 @@ class RepeatedPtrFieldPtrsIteratorTest : public testing::Test { proto_array_.Add()->assign("foo"); proto_array_.Add()->assign("bar"); proto_array_.Add()->assign("baz"); + const_proto_array_ = &proto_array_; } RepeatedPtrField proto_array_; + const RepeatedPtrField* const_proto_array_; }; TEST_F(RepeatedPtrFieldPtrsIteratorTest, ConvertiblePtr) { RepeatedPtrField::pointer_iterator iter = proto_array_.pointer_begin(); + (void) iter; +} + +TEST_F(RepeatedPtrFieldPtrsIteratorTest, ConvertibleConstPtr) { + RepeatedPtrField::const_pointer_iterator iter = + const_proto_array_->pointer_begin(); + (void) iter; } TEST_F(RepeatedPtrFieldPtrsIteratorTest, MutablePtrIteration) { @@ -727,6 +1028,18 @@ TEST_F(RepeatedPtrFieldPtrsIteratorTest, MutablePtrIteration) { EXPECT_EQ("baz", **(--proto_array_.pointer_end())); } +TEST_F(RepeatedPtrFieldPtrsIteratorTest, MutableConstPtrIteration) { + RepeatedPtrField::const_pointer_iterator iter = + const_proto_array_->pointer_begin(); + EXPECT_EQ("foo", **iter); + ++iter; + EXPECT_EQ("bar", **(iter++)); + EXPECT_EQ("baz", **iter); + ++iter; + EXPECT_TRUE(const_proto_array_->pointer_end() == iter); + EXPECT_EQ("baz", **(--const_proto_array_->pointer_end())); +} + TEST_F(RepeatedPtrFieldPtrsIteratorTest, RandomPtrAccess) { RepeatedPtrField::pointer_iterator iter = proto_array_.pointer_begin(); @@ -740,6 +1053,19 @@ TEST_F(RepeatedPtrFieldPtrsIteratorTest, RandomPtrAccess) { EXPECT_EQ(3, proto_array_.end() - proto_array_.begin()); } +TEST_F(RepeatedPtrFieldPtrsIteratorTest, RandomConstPtrAccess) { + RepeatedPtrField::const_pointer_iterator iter = + const_proto_array_->pointer_begin(); + RepeatedPtrField::const_pointer_iterator iter2 = iter; + ++iter2; + ++iter2; + EXPECT_TRUE(iter + 2 == iter2); + EXPECT_TRUE(iter == iter2 - 2); + EXPECT_EQ("baz", *iter[2]); + EXPECT_EQ("baz", **(iter + 2)); + EXPECT_EQ(3, const_proto_array_->end() - const_proto_array_->begin()); +} + TEST_F(RepeatedPtrFieldPtrsIteratorTest, ComparablePtr) { RepeatedPtrField::pointer_iterator iter = proto_array_.pointer_begin(); @@ -754,6 +1080,20 @@ TEST_F(RepeatedPtrFieldPtrsIteratorTest, ComparablePtr) { EXPECT_TRUE(iter >= iter); } +TEST_F(RepeatedPtrFieldPtrsIteratorTest, ComparableConstPtr) { + RepeatedPtrField::const_pointer_iterator iter = + const_proto_array_->pointer_begin(); + RepeatedPtrField::const_pointer_iterator iter2 = iter + 1; + EXPECT_TRUE(iter == iter); + EXPECT_TRUE(iter != iter2); + EXPECT_TRUE(iter < iter2); + EXPECT_TRUE(iter <= iter2); + EXPECT_TRUE(iter <= iter); + EXPECT_TRUE(iter2 > iter); + EXPECT_TRUE(iter2 >= iter); + EXPECT_TRUE(iter >= iter); +} + // Uninitialized iterator does not point to any of the RepeatedPtrOverPtrs. // Dereferencing an uninitialized iterator crashes the process. TEST_F(RepeatedPtrFieldPtrsIteratorTest, UninitializedPtrIterator) { @@ -765,6 +1105,14 @@ TEST_F(RepeatedPtrFieldPtrsIteratorTest, UninitializedPtrIterator) { EXPECT_TRUE(iter != proto_array_.pointer_end()); } +TEST_F(RepeatedPtrFieldPtrsIteratorTest, UninitializedConstPtrIterator) { + RepeatedPtrField::const_pointer_iterator iter; + EXPECT_TRUE(iter != const_proto_array_->pointer_begin()); + EXPECT_TRUE(iter != const_proto_array_->pointer_begin() + 1); + EXPECT_TRUE(iter != const_proto_array_->pointer_begin() + 2); + EXPECT_TRUE(iter != const_proto_array_->pointer_begin() + 3); + EXPECT_TRUE(iter != const_proto_array_->pointer_end()); +} // This comparison functor is required by the tests for RepeatedPtrOverPtrs. // They operate on strings and need to compare strings as strings in @@ -789,17 +1137,29 @@ TEST_F(RepeatedPtrFieldPtrsIteratorTest, PtrSTLAlgorithms_lower_bound) { proto_array_.Add()->assign("x"); proto_array_.Add()->assign("y"); - RepeatedPtrField::pointer_iterator iter = - proto_array_.pointer_begin(); - string v = "f"; - RepeatedPtrField::pointer_iterator it = - lower_bound(proto_array_.pointer_begin(), proto_array_.pointer_end(), - &v, StringLessThan()); + { + string v = "f"; + RepeatedPtrField::pointer_iterator it = + lower_bound(proto_array_.pointer_begin(), proto_array_.pointer_end(), + &v, StringLessThan()); + + GOOGLE_CHECK(*it != NULL); + + EXPECT_EQ(**it, "n"); + EXPECT_TRUE(it == proto_array_.pointer_begin() + 3); + } + { + string v = "f"; + RepeatedPtrField::const_pointer_iterator it = + lower_bound(const_proto_array_->pointer_begin(), + const_proto_array_->pointer_end(), + &v, StringLessThan()); - GOOGLE_CHECK(*it != NULL); + GOOGLE_CHECK(*it != NULL); - EXPECT_EQ(**it, "n"); - EXPECT_TRUE(it == proto_array_.pointer_begin() + 3); + EXPECT_EQ(**it, "n"); + EXPECT_TRUE(it == const_proto_array_->pointer_begin() + 3); + } } TEST_F(RepeatedPtrFieldPtrsIteratorTest, PtrMutation) { @@ -925,13 +1285,24 @@ TEST_F(RepeatedFieldInsertionIteratorsTest, Halves) { TEST_F(RepeatedFieldInsertionIteratorsTest, Words) { ASSERT_EQ(words.size(), protobuffer.repeated_string_size()); - EXPECT_EQ(words.at(0), protobuffer.repeated_string(0)); - EXPECT_EQ(words.at(1), protobuffer.repeated_string(1)); - EXPECT_EQ(words.at(2), protobuffer.repeated_string(2)); - EXPECT_EQ(words.at(3), protobuffer.repeated_string(3)); - EXPECT_EQ(words.at(4), protobuffer.repeated_string(4)); - EXPECT_EQ(words.at(5), protobuffer.repeated_string(5)); - EXPECT_EQ(words.at(6), protobuffer.repeated_string(6)); + for (int i = 0; i < words.size(); ++i) + EXPECT_EQ(words.at(i), protobuffer.repeated_string(i)); +} + +TEST_F(RepeatedFieldInsertionIteratorsTest, Words2) { + words.clear(); + words.push_back("sing"); + words.push_back("a"); + words.push_back("song"); + words.push_back("of"); + words.push_back("six"); + words.push_back("pence"); + protobuffer.mutable_repeated_string()->Clear(); + std::copy(words.begin(), words.end(), RepeatedPtrFieldBackInserter( + protobuffer.mutable_repeated_string())); + ASSERT_EQ(words.size(), protobuffer.repeated_string_size()); + for (int i = 0; i < words.size(); ++i) + EXPECT_EQ(words.at(i), protobuffer.repeated_string(i)); } TEST_F(RepeatedFieldInsertionIteratorsTest, Nesteds) { diff --git a/cpp/thirdparty/protobuf-2.3.0/src/google/protobuf/service.cc b/cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/service.cc similarity index 100% rename from cpp/thirdparty/protobuf-2.3.0/src/google/protobuf/service.cc rename to cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/service.cc diff --git a/cpp/thirdparty/protobuf-2.3.0/src/google/protobuf/service.h b/cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/service.h similarity index 100% rename from cpp/thirdparty/protobuf-2.3.0/src/google/protobuf/service.h rename to cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/service.h diff --git a/cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/stubs/atomicops.h b/cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/stubs/atomicops.h new file mode 100644 index 000000000..b8581fa27 --- /dev/null +++ b/cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/stubs/atomicops.h @@ -0,0 +1,206 @@ +// Protocol Buffers - Google's data interchange format +// Copyright 2012 Google Inc. All rights reserved. +// http://code.google.com/p/protobuf/ +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +// The routines exported by this module are subtle. If you use them, even if +// you get the code right, it will depend on careful reasoning about atomicity +// and memory ordering; it will be less readable, and harder to maintain. If +// you plan to use these routines, you should have a good reason, such as solid +// evidence that performance would otherwise suffer, or there being no +// alternative. You should assume only properties explicitly guaranteed by the +// specifications in this file. You are almost certainly _not_ writing code +// just for the x86; if you assume x86 semantics, x86 hardware bugs and +// implementations on other archtectures will cause your code to break. If you +// do not know what you are doing, avoid these routines, and use a Mutex. +// +// It is incorrect to make direct assignments to/from an atomic variable. +// You should use one of the Load or Store routines. The NoBarrier +// versions are provided when no barriers are needed: +// NoBarrier_Store() +// NoBarrier_Load() +// Although there are currently no compiler enforcement, you are encouraged +// to use these. + +// This header and the implementations for each platform (located in +// atomicops_internals_*) must be kept in sync with the upstream code (V8). + +#ifndef GOOGLE_PROTOBUF_ATOMICOPS_H_ +#define GOOGLE_PROTOBUF_ATOMICOPS_H_ + +// Don't include this file for people not concerned about thread safety. +#ifndef GOOGLE_PROTOBUF_NO_THREAD_SAFETY + +#include + +namespace google { +namespace protobuf { +namespace internal { + +typedef int32 Atomic32; +#ifdef GOOGLE_PROTOBUF_ARCH_64_BIT +// We need to be able to go between Atomic64 and AtomicWord implicitly. This +// means Atomic64 and AtomicWord should be the same type on 64-bit. +#if defined(GOOGLE_PROTOBUF_OS_NACL) +// NaCl's intptr_t is not actually 64-bits on 64-bit! +// http://code.google.com/p/nativeclient/issues/detail?id=1162 +typedef int64 Atomic64; +#else +typedef intptr_t Atomic64; +#endif +#endif + +// Use AtomicWord for a machine-sized pointer. It will use the Atomic32 or +// Atomic64 routines below, depending on your architecture. +typedef intptr_t AtomicWord; + +// Atomically execute: +// result = *ptr; +// if (*ptr == old_value) +// *ptr = new_value; +// return result; +// +// I.e., replace "*ptr" with "new_value" if "*ptr" used to be "old_value". +// Always return the old value of "*ptr" +// +// This routine implies no memory barriers. +Atomic32 NoBarrier_CompareAndSwap(volatile Atomic32* ptr, + Atomic32 old_value, + Atomic32 new_value); + +// Atomically store new_value into *ptr, returning the previous value held in +// *ptr. This routine implies no memory barriers. +Atomic32 NoBarrier_AtomicExchange(volatile Atomic32* ptr, Atomic32 new_value); + +// Atomically increment *ptr by "increment". Returns the new value of +// *ptr with the increment applied. This routine implies no memory barriers. +Atomic32 NoBarrier_AtomicIncrement(volatile Atomic32* ptr, Atomic32 increment); + +Atomic32 Barrier_AtomicIncrement(volatile Atomic32* ptr, + Atomic32 increment); + +// These following lower-level operations are typically useful only to people +// implementing higher-level synchronization operations like spinlocks, +// mutexes, and condition-variables. They combine CompareAndSwap(), a load, or +// a store with appropriate memory-ordering instructions. "Acquire" operations +// ensure that no later memory access can be reordered ahead of the operation. +// "Release" operations ensure that no previous memory access can be reordered +// after the operation. "Barrier" operations have both "Acquire" and "Release" +// semantics. A MemoryBarrier() has "Barrier" semantics, but does no memory +// access. +Atomic32 Acquire_CompareAndSwap(volatile Atomic32* ptr, + Atomic32 old_value, + Atomic32 new_value); +Atomic32 Release_CompareAndSwap(volatile Atomic32* ptr, + Atomic32 old_value, + Atomic32 new_value); + +void MemoryBarrier(); +void NoBarrier_Store(volatile Atomic32* ptr, Atomic32 value); +void Acquire_Store(volatile Atomic32* ptr, Atomic32 value); +void Release_Store(volatile Atomic32* ptr, Atomic32 value); + +Atomic32 NoBarrier_Load(volatile const Atomic32* ptr); +Atomic32 Acquire_Load(volatile const Atomic32* ptr); +Atomic32 Release_Load(volatile const Atomic32* ptr); + +// 64-bit atomic operations (only available on 64-bit processors). +#ifdef GOOGLE_PROTOBUF_ARCH_64_BIT +Atomic64 NoBarrier_CompareAndSwap(volatile Atomic64* ptr, + Atomic64 old_value, + Atomic64 new_value); +Atomic64 NoBarrier_AtomicExchange(volatile Atomic64* ptr, Atomic64 new_value); +Atomic64 NoBarrier_AtomicIncrement(volatile Atomic64* ptr, Atomic64 increment); +Atomic64 Barrier_AtomicIncrement(volatile Atomic64* ptr, Atomic64 increment); + +Atomic64 Acquire_CompareAndSwap(volatile Atomic64* ptr, + Atomic64 old_value, + Atomic64 new_value); +Atomic64 Release_CompareAndSwap(volatile Atomic64* ptr, + Atomic64 old_value, + Atomic64 new_value); +void NoBarrier_Store(volatile Atomic64* ptr, Atomic64 value); +void Acquire_Store(volatile Atomic64* ptr, Atomic64 value); +void Release_Store(volatile Atomic64* ptr, Atomic64 value); +Atomic64 NoBarrier_Load(volatile const Atomic64* ptr); +Atomic64 Acquire_Load(volatile const Atomic64* ptr); +Atomic64 Release_Load(volatile const Atomic64* ptr); +#endif // GOOGLE_PROTOBUF_ARCH_64_BIT + +} // namespace internal +} // namespace protobuf +} // namespace google + +// Include our platform specific implementation. +#define GOOGLE_PROTOBUF_ATOMICOPS_ERROR \ +#error "Atomic operations are not supported on your platform" + +// MSVC. +#if defined(_MSC_VER) +#if defined(GOOGLE_PROTOBUF_ARCH_IA32) || defined(GOOGLE_PROTOBUF_ARCH_X64) +#include +#else +GOOGLE_PROTOBUF_ATOMICOPS_ERROR +#endif + +// Apple. +#elif defined(GOOGLE_PROTOBUF_OS_APPLE) +#include + +// GCC. +#elif defined(__GNUC__) +#if defined(GOOGLE_PROTOBUF_ARCH_IA32) || defined(GOOGLE_PROTOBUF_ARCH_X64) +#include +#elif defined(GOOGLE_PROTOBUF_ARCH_ARM) +#include +#elif defined(GOOGLE_PROTOBUF_ARCH_ARM_QNX) +#include +#elif defined(GOOGLE_PROTOBUF_ARCH_MIPS) +#include +#elif defined(__pnacl__) +#include +#else +GOOGLE_PROTOBUF_ATOMICOPS_ERROR +#endif + +// Unknown. +#else +GOOGLE_PROTOBUF_ATOMICOPS_ERROR +#endif + +// On some platforms we need additional declarations to make AtomicWord +// compatible with our other Atomic* types. +#if defined(GOOGLE_PROTOBUF_OS_APPLE) +#include +#endif + +#undef GOOGLE_PROTOBUF_ATOMICOPS_ERROR + +#endif // GOOGLE_PROTOBUF_NO_THREAD_SAFETY + +#endif // GOOGLE_PROTOBUF_ATOMICOPS_H_ diff --git a/cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/stubs/atomicops_internals_arm_gcc.h b/cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/stubs/atomicops_internals_arm_gcc.h new file mode 100644 index 000000000..1f4dedc0f --- /dev/null +++ b/cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/stubs/atomicops_internals_arm_gcc.h @@ -0,0 +1,151 @@ +// Protocol Buffers - Google's data interchange format +// Copyright 2012 Google Inc. All rights reserved. +// http://code.google.com/p/protobuf/ +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +// This file is an internal atomic implementation, use atomicops.h instead. +// +// LinuxKernelCmpxchg and Barrier_AtomicIncrement are from Google Gears. + +#ifndef GOOGLE_PROTOBUF_ATOMICOPS_INTERNALS_ARM_GCC_H_ +#define GOOGLE_PROTOBUF_ATOMICOPS_INTERNALS_ARM_GCC_H_ + +namespace google { +namespace protobuf { +namespace internal { + +// 0xffff0fc0 is the hard coded address of a function provided by +// the kernel which implements an atomic compare-exchange. On older +// ARM architecture revisions (pre-v6) this may be implemented using +// a syscall. This address is stable, and in active use (hard coded) +// by at least glibc-2.7 and the Android C library. +typedef Atomic32 (*LinuxKernelCmpxchgFunc)(Atomic32 old_value, + Atomic32 new_value, + volatile Atomic32* ptr); +LinuxKernelCmpxchgFunc pLinuxKernelCmpxchg __attribute__((weak)) = + (LinuxKernelCmpxchgFunc) 0xffff0fc0; + +typedef void (*LinuxKernelMemoryBarrierFunc)(void); +LinuxKernelMemoryBarrierFunc pLinuxKernelMemoryBarrier __attribute__((weak)) = + (LinuxKernelMemoryBarrierFunc) 0xffff0fa0; + + +inline Atomic32 NoBarrier_CompareAndSwap(volatile Atomic32* ptr, + Atomic32 old_value, + Atomic32 new_value) { + Atomic32 prev_value = *ptr; + do { + if (!pLinuxKernelCmpxchg(old_value, new_value, + const_cast(ptr))) { + return old_value; + } + prev_value = *ptr; + } while (prev_value == old_value); + return prev_value; +} + +inline Atomic32 NoBarrier_AtomicExchange(volatile Atomic32* ptr, + Atomic32 new_value) { + Atomic32 old_value; + do { + old_value = *ptr; + } while (pLinuxKernelCmpxchg(old_value, new_value, + const_cast(ptr))); + return old_value; +} + +inline Atomic32 NoBarrier_AtomicIncrement(volatile Atomic32* ptr, + Atomic32 increment) { + return Barrier_AtomicIncrement(ptr, increment); +} + +inline Atomic32 Barrier_AtomicIncrement(volatile Atomic32* ptr, + Atomic32 increment) { + for (;;) { + // Atomic exchange the old value with an incremented one. + Atomic32 old_value = *ptr; + Atomic32 new_value = old_value + increment; + if (pLinuxKernelCmpxchg(old_value, new_value, + const_cast(ptr)) == 0) { + // The exchange took place as expected. + return new_value; + } + // Otherwise, *ptr changed mid-loop and we need to retry. + } +} + +inline Atomic32 Acquire_CompareAndSwap(volatile Atomic32* ptr, + Atomic32 old_value, + Atomic32 new_value) { + return NoBarrier_CompareAndSwap(ptr, old_value, new_value); +} + +inline Atomic32 Release_CompareAndSwap(volatile Atomic32* ptr, + Atomic32 old_value, + Atomic32 new_value) { + return NoBarrier_CompareAndSwap(ptr, old_value, new_value); +} + +inline void NoBarrier_Store(volatile Atomic32* ptr, Atomic32 value) { + *ptr = value; +} + +inline void MemoryBarrier() { + pLinuxKernelMemoryBarrier(); +} + +inline void Acquire_Store(volatile Atomic32* ptr, Atomic32 value) { + *ptr = value; + MemoryBarrier(); +} + +inline void Release_Store(volatile Atomic32* ptr, Atomic32 value) { + MemoryBarrier(); + *ptr = value; +} + +inline Atomic32 NoBarrier_Load(volatile const Atomic32* ptr) { + return *ptr; +} + +inline Atomic32 Acquire_Load(volatile const Atomic32* ptr) { + Atomic32 value = *ptr; + MemoryBarrier(); + return value; +} + +inline Atomic32 Release_Load(volatile const Atomic32* ptr) { + MemoryBarrier(); + return *ptr; +} + +} // namespace internal +} // namespace protobuf +} // namespace google + +#endif // GOOGLE_PROTOBUF_ATOMICOPS_INTERNALS_ARM_GCC_H_ diff --git a/cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/stubs/atomicops_internals_arm_qnx.h b/cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/stubs/atomicops_internals_arm_qnx.h new file mode 100644 index 000000000..f05076978 --- /dev/null +++ b/cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/stubs/atomicops_internals_arm_qnx.h @@ -0,0 +1,146 @@ +// Protocol Buffers - Google's data interchange format +// Copyright 2012 Google Inc. All rights reserved. +// http://code.google.com/p/protobuf/ +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +// This file is an internal atomic implementation, use atomicops.h instead. + +#ifndef GOOGLE_PROTOBUF_ATOMICOPS_INTERNALS_ARM_QNX_H_ +#define GOOGLE_PROTOBUF_ATOMICOPS_INTERNALS_ARM_QNX_H_ + +// For _smp_cmpxchg() +#include + +namespace google { +namespace protobuf { +namespace internal { + +inline Atomic32 QNXCmpxchg(Atomic32 old_value, + Atomic32 new_value, + volatile Atomic32* ptr) { + return static_cast( + _smp_cmpxchg((volatile unsigned *)ptr, + (unsigned)old_value, + (unsigned)new_value)); +} + + +inline Atomic32 NoBarrier_CompareAndSwap(volatile Atomic32* ptr, + Atomic32 old_value, + Atomic32 new_value) { + Atomic32 prev_value = *ptr; + do { + if (!QNXCmpxchg(old_value, new_value, + const_cast(ptr))) { + return old_value; + } + prev_value = *ptr; + } while (prev_value == old_value); + return prev_value; +} + +inline Atomic32 NoBarrier_AtomicExchange(volatile Atomic32* ptr, + Atomic32 new_value) { + Atomic32 old_value; + do { + old_value = *ptr; + } while (QNXCmpxchg(old_value, new_value, + const_cast(ptr))); + return old_value; +} + +inline Atomic32 NoBarrier_AtomicIncrement(volatile Atomic32* ptr, + Atomic32 increment) { + return Barrier_AtomicIncrement(ptr, increment); +} + +inline Atomic32 Barrier_AtomicIncrement(volatile Atomic32* ptr, + Atomic32 increment) { + for (;;) { + // Atomic exchange the old value with an incremented one. + Atomic32 old_value = *ptr; + Atomic32 new_value = old_value + increment; + if (QNXCmpxchg(old_value, new_value, + const_cast(ptr)) == 0) { + // The exchange took place as expected. + return new_value; + } + // Otherwise, *ptr changed mid-loop and we need to retry. + } +} + +inline Atomic32 Acquire_CompareAndSwap(volatile Atomic32* ptr, + Atomic32 old_value, + Atomic32 new_value) { + return NoBarrier_CompareAndSwap(ptr, old_value, new_value); +} + +inline Atomic32 Release_CompareAndSwap(volatile Atomic32* ptr, + Atomic32 old_value, + Atomic32 new_value) { + return NoBarrier_CompareAndSwap(ptr, old_value, new_value); +} + +inline void NoBarrier_Store(volatile Atomic32* ptr, Atomic32 value) { + *ptr = value; +} + +inline void MemoryBarrier() { + __sync_synchronize(); +} + +inline void Acquire_Store(volatile Atomic32* ptr, Atomic32 value) { + *ptr = value; + MemoryBarrier(); +} + +inline void Release_Store(volatile Atomic32* ptr, Atomic32 value) { + MemoryBarrier(); + *ptr = value; +} + +inline Atomic32 NoBarrier_Load(volatile const Atomic32* ptr) { + return *ptr; +} + +inline Atomic32 Acquire_Load(volatile const Atomic32* ptr) { + Atomic32 value = *ptr; + MemoryBarrier(); + return value; +} + +inline Atomic32 Release_Load(volatile const Atomic32* ptr) { + MemoryBarrier(); + return *ptr; +} + +} // namespace internal +} // namespace protobuf +} // namespace google + +#endif // GOOGLE_PROTOBUF_ATOMICOPS_INTERNALS_ARM_QNX_H_ diff --git a/cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/stubs/atomicops_internals_atomicword_compat.h b/cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/stubs/atomicops_internals_atomicword_compat.h new file mode 100644 index 000000000..e9d86797b --- /dev/null +++ b/cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/stubs/atomicops_internals_atomicword_compat.h @@ -0,0 +1,122 @@ +// Protocol Buffers - Google's data interchange format +// Copyright 2012 Google Inc. All rights reserved. +// http://code.google.com/p/protobuf/ +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +// This file is an internal atomic implementation, use atomicops.h instead. + +#ifndef GOOGLE_PROTOBUF_ATOMICOPS_INTERNALS_ATOMICWORD_COMPAT_H_ +#define GOOGLE_PROTOBUF_ATOMICOPS_INTERNALS_ATOMICWORD_COMPAT_H_ + +// AtomicWord is a synonym for intptr_t, and Atomic32 is a synonym for int32, +// which in turn means int. On some LP32 platforms, intptr_t is an int, but +// on others, it's a long. When AtomicWord and Atomic32 are based on different +// fundamental types, their pointers are incompatible. +// +// This file defines function overloads to allow both AtomicWord and Atomic32 +// data to be used with this interface. +// +// On LP64 platforms, AtomicWord and Atomic64 are both always long, +// so this problem doesn't occur. + +#if !defined(GOOGLE_PROTOBUF_ARCH_64_BIT) + +namespace google { +namespace protobuf { +namespace internal { + +inline AtomicWord NoBarrier_CompareAndSwap(volatile AtomicWord* ptr, + AtomicWord old_value, + AtomicWord new_value) { + return NoBarrier_CompareAndSwap( + reinterpret_cast(ptr), old_value, new_value); +} + +inline AtomicWord NoBarrier_AtomicExchange(volatile AtomicWord* ptr, + AtomicWord new_value) { + return NoBarrier_AtomicExchange( + reinterpret_cast(ptr), new_value); +} + +inline AtomicWord NoBarrier_AtomicIncrement(volatile AtomicWord* ptr, + AtomicWord increment) { + return NoBarrier_AtomicIncrement( + reinterpret_cast(ptr), increment); +} + +inline AtomicWord Barrier_AtomicIncrement(volatile AtomicWord* ptr, + AtomicWord increment) { + return Barrier_AtomicIncrement( + reinterpret_cast(ptr), increment); +} + +inline AtomicWord Acquire_CompareAndSwap(volatile AtomicWord* ptr, + AtomicWord old_value, + AtomicWord new_value) { + return Acquire_CompareAndSwap( + reinterpret_cast(ptr), old_value, new_value); +} + +inline AtomicWord Release_CompareAndSwap(volatile AtomicWord* ptr, + AtomicWord old_value, + AtomicWord new_value) { + return Release_CompareAndSwap( + reinterpret_cast(ptr), old_value, new_value); +} + +inline void NoBarrier_Store(volatile AtomicWord *ptr, AtomicWord value) { + NoBarrier_Store(reinterpret_cast(ptr), value); +} + +inline void Acquire_Store(volatile AtomicWord* ptr, AtomicWord value) { + return Acquire_Store(reinterpret_cast(ptr), value); +} + +inline void Release_Store(volatile AtomicWord* ptr, AtomicWord value) { + return Release_Store(reinterpret_cast(ptr), value); +} + +inline AtomicWord NoBarrier_Load(volatile const AtomicWord *ptr) { + return NoBarrier_Load(reinterpret_cast(ptr)); +} + +inline AtomicWord Acquire_Load(volatile const AtomicWord* ptr) { + return Acquire_Load(reinterpret_cast(ptr)); +} + +inline AtomicWord Release_Load(volatile const AtomicWord* ptr) { + return Release_Load(reinterpret_cast(ptr)); +} + +} // namespace internal +} // namespace protobuf +} // namespace google + +#endif // !defined(GOOGLE_PROTOBUF_ARCH_64_BIT) + +#endif // GOOGLE_PROTOBUF_ATOMICOPS_INTERNALS_ATOMICWORD_COMPAT_H_ diff --git a/cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/stubs/atomicops_internals_macosx.h b/cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/stubs/atomicops_internals_macosx.h new file mode 100644 index 000000000..f9b7581ad --- /dev/null +++ b/cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/stubs/atomicops_internals_macosx.h @@ -0,0 +1,225 @@ +// Protocol Buffers - Google's data interchange format +// Copyright 2012 Google Inc. All rights reserved. +// http://code.google.com/p/protobuf/ +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +// This file is an internal atomic implementation, use atomicops.h instead. + +#ifndef GOOGLE_PROTOBUF_ATOMICOPS_INTERNALS_MACOSX_H_ +#define GOOGLE_PROTOBUF_ATOMICOPS_INTERNALS_MACOSX_H_ + +#include + +namespace google { +namespace protobuf { +namespace internal { + +inline Atomic32 NoBarrier_CompareAndSwap(volatile Atomic32* ptr, + Atomic32 old_value, + Atomic32 new_value) { + Atomic32 prev_value; + do { + if (OSAtomicCompareAndSwap32(old_value, new_value, + const_cast(ptr))) { + return old_value; + } + prev_value = *ptr; + } while (prev_value == old_value); + return prev_value; +} + +inline Atomic32 NoBarrier_AtomicExchange(volatile Atomic32* ptr, + Atomic32 new_value) { + Atomic32 old_value; + do { + old_value = *ptr; + } while (!OSAtomicCompareAndSwap32(old_value, new_value, + const_cast(ptr))); + return old_value; +} + +inline Atomic32 NoBarrier_AtomicIncrement(volatile Atomic32* ptr, + Atomic32 increment) { + return OSAtomicAdd32(increment, const_cast(ptr)); +} + +inline Atomic32 Barrier_AtomicIncrement(volatile Atomic32* ptr, + Atomic32 increment) { + return OSAtomicAdd32Barrier(increment, const_cast(ptr)); +} + +inline void MemoryBarrier() { + OSMemoryBarrier(); +} + +inline Atomic32 Acquire_CompareAndSwap(volatile Atomic32* ptr, + Atomic32 old_value, + Atomic32 new_value) { + Atomic32 prev_value; + do { + if (OSAtomicCompareAndSwap32Barrier(old_value, new_value, + const_cast(ptr))) { + return old_value; + } + prev_value = *ptr; + } while (prev_value == old_value); + return prev_value; +} + +inline Atomic32 Release_CompareAndSwap(volatile Atomic32* ptr, + Atomic32 old_value, + Atomic32 new_value) { + return Acquire_CompareAndSwap(ptr, old_value, new_value); +} + +inline void NoBarrier_Store(volatile Atomic32* ptr, Atomic32 value) { + *ptr = value; +} + +inline void Acquire_Store(volatile Atomic32* ptr, Atomic32 value) { + *ptr = value; + MemoryBarrier(); +} + +inline void Release_Store(volatile Atomic32* ptr, Atomic32 value) { + MemoryBarrier(); + *ptr = value; +} + +inline Atomic32 NoBarrier_Load(volatile const Atomic32* ptr) { + return *ptr; +} + +inline Atomic32 Acquire_Load(volatile const Atomic32* ptr) { + Atomic32 value = *ptr; + MemoryBarrier(); + return value; +} + +inline Atomic32 Release_Load(volatile const Atomic32* ptr) { + MemoryBarrier(); + return *ptr; +} + +#ifdef __LP64__ + +// 64-bit implementation on 64-bit platform + +inline Atomic64 NoBarrier_CompareAndSwap(volatile Atomic64* ptr, + Atomic64 old_value, + Atomic64 new_value) { + Atomic64 prev_value; + do { + if (OSAtomicCompareAndSwap64(old_value, new_value, + reinterpret_cast(ptr))) { + return old_value; + } + prev_value = *ptr; + } while (prev_value == old_value); + return prev_value; +} + +inline Atomic64 NoBarrier_AtomicExchange(volatile Atomic64* ptr, + Atomic64 new_value) { + Atomic64 old_value; + do { + old_value = *ptr; + } while (!OSAtomicCompareAndSwap64(old_value, new_value, + reinterpret_cast(ptr))); + return old_value; +} + +inline Atomic64 NoBarrier_AtomicIncrement(volatile Atomic64* ptr, + Atomic64 increment) { + return OSAtomicAdd64(increment, reinterpret_cast(ptr)); +} + +inline Atomic64 Barrier_AtomicIncrement(volatile Atomic64* ptr, + Atomic64 increment) { + return OSAtomicAdd64Barrier(increment, + reinterpret_cast(ptr)); +} + +inline Atomic64 Acquire_CompareAndSwap(volatile Atomic64* ptr, + Atomic64 old_value, + Atomic64 new_value) { + Atomic64 prev_value; + do { + if (OSAtomicCompareAndSwap64Barrier( + old_value, new_value, reinterpret_cast(ptr))) { + return old_value; + } + prev_value = *ptr; + } while (prev_value == old_value); + return prev_value; +} + +inline Atomic64 Release_CompareAndSwap(volatile Atomic64* ptr, + Atomic64 old_value, + Atomic64 new_value) { + // The lib kern interface does not distinguish between + // Acquire and Release memory barriers; they are equivalent. + return Acquire_CompareAndSwap(ptr, old_value, new_value); +} + +inline void NoBarrier_Store(volatile Atomic64* ptr, Atomic64 value) { + *ptr = value; +} + +inline void Acquire_Store(volatile Atomic64* ptr, Atomic64 value) { + *ptr = value; + MemoryBarrier(); +} + +inline void Release_Store(volatile Atomic64* ptr, Atomic64 value) { + MemoryBarrier(); + *ptr = value; +} + +inline Atomic64 NoBarrier_Load(volatile const Atomic64* ptr) { + return *ptr; +} + +inline Atomic64 Acquire_Load(volatile const Atomic64* ptr) { + Atomic64 value = *ptr; + MemoryBarrier(); + return value; +} + +inline Atomic64 Release_Load(volatile const Atomic64* ptr) { + MemoryBarrier(); + return *ptr; +} + +#endif // defined(__LP64__) + +} // namespace internal +} // namespace protobuf +} // namespace google + +#endif // GOOGLE_PROTOBUF_ATOMICOPS_INTERNALS_MACOSX_H_ diff --git a/cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/stubs/atomicops_internals_mips_gcc.h b/cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/stubs/atomicops_internals_mips_gcc.h new file mode 100644 index 000000000..dc468517a --- /dev/null +++ b/cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/stubs/atomicops_internals_mips_gcc.h @@ -0,0 +1,187 @@ +// Protocol Buffers - Google's data interchange format +// Copyright 2012 Google Inc. All rights reserved. +// http://code.google.com/p/protobuf/ +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +// This file is an internal atomic implementation, use atomicops.h instead. + +#ifndef GOOGLE_PROTOBUF_ATOMICOPS_INTERNALS_MIPS_GCC_H_ +#define GOOGLE_PROTOBUF_ATOMICOPS_INTERNALS_MIPS_GCC_H_ + +#define ATOMICOPS_COMPILER_BARRIER() __asm__ __volatile__("" : : : "memory") + +namespace google { +namespace protobuf { +namespace internal { + +// Atomically execute: +// result = *ptr; +// if (*ptr == old_value) +// *ptr = new_value; +// return result; +// +// I.e., replace "*ptr" with "new_value" if "*ptr" used to be "old_value". +// Always return the old value of "*ptr" +// +// This routine implies no memory barriers. +inline Atomic32 NoBarrier_CompareAndSwap(volatile Atomic32* ptr, + Atomic32 old_value, + Atomic32 new_value) { + Atomic32 prev, tmp; + __asm__ __volatile__(".set push\n" + ".set noreorder\n" + "1:\n" + "ll %0, %5\n" // prev = *ptr + "bne %0, %3, 2f\n" // if (prev != old_value) goto 2 + "move %2, %4\n" // tmp = new_value + "sc %2, %1\n" // *ptr = tmp (with atomic check) + "beqz %2, 1b\n" // start again on atomic error + "nop\n" // delay slot nop + "2:\n" + ".set pop\n" + : "=&r" (prev), "=m" (*ptr), "=&r" (tmp) + : "Ir" (old_value), "r" (new_value), "m" (*ptr) + : "memory"); + return prev; +} + +// Atomically store new_value into *ptr, returning the previous value held in +// *ptr. This routine implies no memory barriers. +inline Atomic32 NoBarrier_AtomicExchange(volatile Atomic32* ptr, + Atomic32 new_value) { + Atomic32 temp, old; + __asm__ __volatile__(".set push\n" + ".set noreorder\n" + "1:\n" + "ll %1, %2\n" // old = *ptr + "move %0, %3\n" // temp = new_value + "sc %0, %2\n" // *ptr = temp (with atomic check) + "beqz %0, 1b\n" // start again on atomic error + "nop\n" // delay slot nop + ".set pop\n" + : "=&r" (temp), "=&r" (old), "=m" (*ptr) + : "r" (new_value), "m" (*ptr) + : "memory"); + + return old; +} + +// Atomically increment *ptr by "increment". Returns the new value of +// *ptr with the increment applied. This routine implies no memory barriers. +inline Atomic32 NoBarrier_AtomicIncrement(volatile Atomic32* ptr, + Atomic32 increment) { + Atomic32 temp, temp2; + + __asm__ __volatile__(".set push\n" + ".set noreorder\n" + "1:\n" + "ll %0, %2\n" // temp = *ptr + "addu %1, %0, %3\n" // temp2 = temp + increment + "sc %1, %2\n" // *ptr = temp2 (with atomic check) + "beqz %1, 1b\n" // start again on atomic error + "addu %1, %0, %3\n" // temp2 = temp + increment + ".set pop\n" + : "=&r" (temp), "=&r" (temp2), "=m" (*ptr) + : "Ir" (increment), "m" (*ptr) + : "memory"); + // temp2 now holds the final value. + return temp2; +} + +inline Atomic32 Barrier_AtomicIncrement(volatile Atomic32* ptr, + Atomic32 increment) { + ATOMICOPS_COMPILER_BARRIER(); + Atomic32 res = NoBarrier_AtomicIncrement(ptr, increment); + ATOMICOPS_COMPILER_BARRIER(); + return res; +} + +// "Acquire" operations +// ensure that no later memory access can be reordered ahead of the operation. +// "Release" operations ensure that no previous memory access can be reordered +// after the operation. "Barrier" operations have both "Acquire" and "Release" +// semantics. A MemoryBarrier() has "Barrier" semantics, but does no memory +// access. +inline Atomic32 Acquire_CompareAndSwap(volatile Atomic32* ptr, + Atomic32 old_value, + Atomic32 new_value) { + ATOMICOPS_COMPILER_BARRIER(); + Atomic32 res = NoBarrier_CompareAndSwap(ptr, old_value, new_value); + ATOMICOPS_COMPILER_BARRIER(); + return res; +} + +inline Atomic32 Release_CompareAndSwap(volatile Atomic32* ptr, + Atomic32 old_value, + Atomic32 new_value) { + ATOMICOPS_COMPILER_BARRIER(); + Atomic32 res = NoBarrier_CompareAndSwap(ptr, old_value, new_value); + ATOMICOPS_COMPILER_BARRIER(); + return res; +} + +inline void NoBarrier_Store(volatile Atomic32* ptr, Atomic32 value) { + *ptr = value; +} + +inline void MemoryBarrier() { + __asm__ __volatile__("sync" : : : "memory"); +} + +inline void Acquire_Store(volatile Atomic32* ptr, Atomic32 value) { + *ptr = value; + MemoryBarrier(); +} + +inline void Release_Store(volatile Atomic32* ptr, Atomic32 value) { + MemoryBarrier(); + *ptr = value; +} + +inline Atomic32 NoBarrier_Load(volatile const Atomic32* ptr) { + return *ptr; +} + +inline Atomic32 Acquire_Load(volatile const Atomic32* ptr) { + Atomic32 value = *ptr; + MemoryBarrier(); + return value; +} + +inline Atomic32 Release_Load(volatile const Atomic32* ptr) { + MemoryBarrier(); + return *ptr; +} + +} // namespace internal +} // namespace protobuf +} // namespace google + +#undef ATOMICOPS_COMPILER_BARRIER + +#endif // GOOGLE_PROTOBUF_ATOMICOPS_INTERNALS_MIPS_GCC_H_ diff --git a/cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/stubs/atomicops_internals_pnacl.h b/cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/stubs/atomicops_internals_pnacl.h new file mode 100644 index 000000000..04a91a83f --- /dev/null +++ b/cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/stubs/atomicops_internals_pnacl.h @@ -0,0 +1,73 @@ +// Protocol Buffers - Google's data interchange format +// Copyright 2012 Google Inc. All rights reserved. +// http://code.google.com/p/protobuf/ +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +// This file is an internal atomic implementation, use atomicops.h instead. + +#ifndef GOOGLE_PROTOBUF_ATOMICOPS_INTERNALS_PNACL_H_ +#define GOOGLE_PROTOBUF_ATOMICOPS_INTERNALS_PNACL_H_ + +namespace google { +namespace protobuf { +namespace internal { + +inline Atomic32 NoBarrier_CompareAndSwap(volatile Atomic32* ptr, + Atomic32 old_value, + Atomic32 new_value) { + return __sync_val_compare_and_swap(ptr, old_value, new_value); +} + +inline void MemoryBarrier() { + __sync_synchronize(); +} + +inline Atomic32 Acquire_CompareAndSwap(volatile Atomic32* ptr, + Atomic32 old_value, + Atomic32 new_value) { + Atomic32 ret = NoBarrier_CompareAndSwap(ptr, old_value, new_value); + MemoryBarrier(); + return ret; +} + +inline void Release_Store(volatile Atomic32* ptr, Atomic32 value) { + MemoryBarrier(); + *ptr = value; +} + +inline Atomic32 Acquire_Load(volatile const Atomic32* ptr) { + Atomic32 value = *ptr; + MemoryBarrier(); + return value; +} + +} // namespace internal +} // namespace protobuf +} // namespace google + +#endif // GOOGLE_PROTOBUF_ATOMICOPS_INTERNALS_PNACL_H_ diff --git a/cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/stubs/atomicops_internals_x86_gcc.cc b/cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/stubs/atomicops_internals_x86_gcc.cc new file mode 100644 index 000000000..07748723f --- /dev/null +++ b/cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/stubs/atomicops_internals_x86_gcc.cc @@ -0,0 +1,137 @@ +// Protocol Buffers - Google's data interchange format +// Copyright 2012 Google Inc. All rights reserved. +// http://code.google.com/p/protobuf/ +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +// This module gets enough CPU information to optimize the +// atomicops module on x86. + +#include + +#include + +// This file only makes sense with atomicops_internals_x86_gcc.h -- it +// depends on structs that are defined in that file. If atomicops.h +// doesn't sub-include that file, then we aren't needed, and shouldn't +// try to do anything. +#ifdef GOOGLE_PROTOBUF_ATOMICOPS_INTERNALS_X86_GCC_H_ + +// Inline cpuid instruction. In PIC compilations, %ebx contains the address +// of the global offset table. To avoid breaking such executables, this code +// must preserve that register's value across cpuid instructions. +#if defined(__i386__) +#define cpuid(a, b, c, d, inp) \ + asm("mov %%ebx, %%edi\n" \ + "cpuid\n" \ + "xchg %%edi, %%ebx\n" \ + : "=a" (a), "=D" (b), "=c" (c), "=d" (d) : "a" (inp)) +#elif defined(__x86_64__) +#define cpuid(a, b, c, d, inp) \ + asm("mov %%rbx, %%rdi\n" \ + "cpuid\n" \ + "xchg %%rdi, %%rbx\n" \ + : "=a" (a), "=D" (b), "=c" (c), "=d" (d) : "a" (inp)) +#endif + +#if defined(cpuid) // initialize the struct only on x86 + +namespace google { +namespace protobuf { +namespace internal { + +// Set the flags so that code will run correctly and conservatively, so even +// if we haven't been initialized yet, we're probably single threaded, and our +// default values should hopefully be pretty safe. +struct AtomicOps_x86CPUFeatureStruct AtomicOps_Internalx86CPUFeatures = { + false, // bug can't exist before process spawns multiple threads + false, // no SSE2 +}; + +namespace { + +// Initialize the AtomicOps_Internalx86CPUFeatures struct. +void AtomicOps_Internalx86CPUFeaturesInit() { + uint32_t eax; + uint32_t ebx; + uint32_t ecx; + uint32_t edx; + + // Get vendor string (issue CPUID with eax = 0) + cpuid(eax, ebx, ecx, edx, 0); + char vendor[13]; + memcpy(vendor, &ebx, 4); + memcpy(vendor + 4, &edx, 4); + memcpy(vendor + 8, &ecx, 4); + vendor[12] = 0; + + // get feature flags in ecx/edx, and family/model in eax + cpuid(eax, ebx, ecx, edx, 1); + + int family = (eax >> 8) & 0xf; // family and model fields + int model = (eax >> 4) & 0xf; + if (family == 0xf) { // use extended family and model fields + family += (eax >> 20) & 0xff; + model += ((eax >> 16) & 0xf) << 4; + } + + // Opteron Rev E has a bug in which on very rare occasions a locked + // instruction doesn't act as a read-acquire barrier if followed by a + // non-locked read-modify-write instruction. Rev F has this bug in + // pre-release versions, but not in versions released to customers, + // so we test only for Rev E, which is family 15, model 32..63 inclusive. + if (strcmp(vendor, "AuthenticAMD") == 0 && // AMD + family == 15 && + 32 <= model && model <= 63) { + AtomicOps_Internalx86CPUFeatures.has_amd_lock_mb_bug = true; + } else { + AtomicOps_Internalx86CPUFeatures.has_amd_lock_mb_bug = false; + } + + // edx bit 26 is SSE2 which we use to tell use whether we can use mfence + AtomicOps_Internalx86CPUFeatures.has_sse2 = ((edx >> 26) & 1); +} + +class AtomicOpsx86Initializer { + public: + AtomicOpsx86Initializer() { + AtomicOps_Internalx86CPUFeaturesInit(); + } +}; + +// A global to get use initialized on startup via static initialization :/ +AtomicOpsx86Initializer g_initer; + +} // namespace + +} // namespace internal +} // namespace protobuf +} // namespace google + +#endif // __i386__ + +#endif // GOOGLE_PROTOBUF_ATOMICOPS_INTERNALS_X86_GCC_H_ diff --git a/cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/stubs/atomicops_internals_x86_gcc.h b/cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/stubs/atomicops_internals_x86_gcc.h new file mode 100644 index 000000000..5324dfbcb --- /dev/null +++ b/cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/stubs/atomicops_internals_x86_gcc.h @@ -0,0 +1,293 @@ +// Protocol Buffers - Google's data interchange format +// Copyright 2012 Google Inc. All rights reserved. +// http://code.google.com/p/protobuf/ +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +// This file is an internal atomic implementation, use atomicops.h instead. + +#ifndef GOOGLE_PROTOBUF_ATOMICOPS_INTERNALS_X86_GCC_H_ +#define GOOGLE_PROTOBUF_ATOMICOPS_INTERNALS_X86_GCC_H_ + +namespace google { +namespace protobuf { +namespace internal { + +// This struct is not part of the public API of this module; clients may not +// use it. +// Features of this x86. Values may not be correct before main() is run, +// but are set conservatively. +struct AtomicOps_x86CPUFeatureStruct { + bool has_amd_lock_mb_bug; // Processor has AMD memory-barrier bug; do lfence + // after acquire compare-and-swap. + bool has_sse2; // Processor has SSE2. +}; +extern struct AtomicOps_x86CPUFeatureStruct AtomicOps_Internalx86CPUFeatures; + +#define ATOMICOPS_COMPILER_BARRIER() __asm__ __volatile__("" : : : "memory") + +// 32-bit low-level operations on any platform. + +inline Atomic32 NoBarrier_CompareAndSwap(volatile Atomic32* ptr, + Atomic32 old_value, + Atomic32 new_value) { + Atomic32 prev; + __asm__ __volatile__("lock; cmpxchgl %1,%2" + : "=a" (prev) + : "q" (new_value), "m" (*ptr), "0" (old_value) + : "memory"); + return prev; +} + +inline Atomic32 NoBarrier_AtomicExchange(volatile Atomic32* ptr, + Atomic32 new_value) { + __asm__ __volatile__("xchgl %1,%0" // The lock prefix is implicit for xchg. + : "=r" (new_value) + : "m" (*ptr), "0" (new_value) + : "memory"); + return new_value; // Now it's the previous value. +} + +inline Atomic32 NoBarrier_AtomicIncrement(volatile Atomic32* ptr, + Atomic32 increment) { + Atomic32 temp = increment; + __asm__ __volatile__("lock; xaddl %0,%1" + : "+r" (temp), "+m" (*ptr) + : : "memory"); + // temp now holds the old value of *ptr + return temp + increment; +} + +inline Atomic32 Barrier_AtomicIncrement(volatile Atomic32* ptr, + Atomic32 increment) { + Atomic32 temp = increment; + __asm__ __volatile__("lock; xaddl %0,%1" + : "+r" (temp), "+m" (*ptr) + : : "memory"); + // temp now holds the old value of *ptr + if (AtomicOps_Internalx86CPUFeatures.has_amd_lock_mb_bug) { + __asm__ __volatile__("lfence" : : : "memory"); + } + return temp + increment; +} + +inline Atomic32 Acquire_CompareAndSwap(volatile Atomic32* ptr, + Atomic32 old_value, + Atomic32 new_value) { + Atomic32 x = NoBarrier_CompareAndSwap(ptr, old_value, new_value); + if (AtomicOps_Internalx86CPUFeatures.has_amd_lock_mb_bug) { + __asm__ __volatile__("lfence" : : : "memory"); + } + return x; +} + +inline Atomic32 Release_CompareAndSwap(volatile Atomic32* ptr, + Atomic32 old_value, + Atomic32 new_value) { + return NoBarrier_CompareAndSwap(ptr, old_value, new_value); +} + +inline void NoBarrier_Store(volatile Atomic32* ptr, Atomic32 value) { + *ptr = value; +} + +#if defined(__x86_64__) + +// 64-bit implementations of memory barrier can be simpler, because it +// "mfence" is guaranteed to exist. +inline void MemoryBarrier() { + __asm__ __volatile__("mfence" : : : "memory"); +} + +inline void Acquire_Store(volatile Atomic32* ptr, Atomic32 value) { + *ptr = value; + MemoryBarrier(); +} + +#else + +inline void MemoryBarrier() { + if (AtomicOps_Internalx86CPUFeatures.has_sse2) { + __asm__ __volatile__("mfence" : : : "memory"); + } else { // mfence is faster but not present on PIII + Atomic32 x = 0; + NoBarrier_AtomicExchange(&x, 0); // acts as a barrier on PIII + } +} + +inline void Acquire_Store(volatile Atomic32* ptr, Atomic32 value) { + if (AtomicOps_Internalx86CPUFeatures.has_sse2) { + *ptr = value; + __asm__ __volatile__("mfence" : : : "memory"); + } else { + NoBarrier_AtomicExchange(ptr, value); + // acts as a barrier on PIII + } +} +#endif + +inline void Release_Store(volatile Atomic32* ptr, Atomic32 value) { + ATOMICOPS_COMPILER_BARRIER(); + *ptr = value; // An x86 store acts as a release barrier. + // See comments in Atomic64 version of Release_Store(), below. +} + +inline Atomic32 NoBarrier_Load(volatile const Atomic32* ptr) { + return *ptr; +} + +inline Atomic32 Acquire_Load(volatile const Atomic32* ptr) { + Atomic32 value = *ptr; // An x86 load acts as a acquire barrier. + // See comments in Atomic64 version of Release_Store(), below. + ATOMICOPS_COMPILER_BARRIER(); + return value; +} + +inline Atomic32 Release_Load(volatile const Atomic32* ptr) { + MemoryBarrier(); + return *ptr; +} + +#if defined(__x86_64__) + +// 64-bit low-level operations on 64-bit platform. + +inline Atomic64 NoBarrier_CompareAndSwap(volatile Atomic64* ptr, + Atomic64 old_value, + Atomic64 new_value) { + Atomic64 prev; + __asm__ __volatile__("lock; cmpxchgq %1,%2" + : "=a" (prev) + : "q" (new_value), "m" (*ptr), "0" (old_value) + : "memory"); + return prev; +} + +inline Atomic64 NoBarrier_AtomicExchange(volatile Atomic64* ptr, + Atomic64 new_value) { + __asm__ __volatile__("xchgq %1,%0" // The lock prefix is implicit for xchg. + : "=r" (new_value) + : "m" (*ptr), "0" (new_value) + : "memory"); + return new_value; // Now it's the previous value. +} + +inline Atomic64 NoBarrier_AtomicIncrement(volatile Atomic64* ptr, + Atomic64 increment) { + Atomic64 temp = increment; + __asm__ __volatile__("lock; xaddq %0,%1" + : "+r" (temp), "+m" (*ptr) + : : "memory"); + // temp now contains the previous value of *ptr + return temp + increment; +} + +inline Atomic64 Barrier_AtomicIncrement(volatile Atomic64* ptr, + Atomic64 increment) { + Atomic64 temp = increment; + __asm__ __volatile__("lock; xaddq %0,%1" + : "+r" (temp), "+m" (*ptr) + : : "memory"); + // temp now contains the previous value of *ptr + if (AtomicOps_Internalx86CPUFeatures.has_amd_lock_mb_bug) { + __asm__ __volatile__("lfence" : : : "memory"); + } + return temp + increment; +} + +inline void NoBarrier_Store(volatile Atomic64* ptr, Atomic64 value) { + *ptr = value; +} + +inline void Acquire_Store(volatile Atomic64* ptr, Atomic64 value) { + *ptr = value; + MemoryBarrier(); +} + +inline void Release_Store(volatile Atomic64* ptr, Atomic64 value) { + ATOMICOPS_COMPILER_BARRIER(); + + *ptr = value; // An x86 store acts as a release barrier + // for current AMD/Intel chips as of Jan 2008. + // See also Acquire_Load(), below. + + // When new chips come out, check: + // IA-32 Intel Architecture Software Developer's Manual, Volume 3: + // System Programming Guide, Chatper 7: Multiple-processor management, + // Section 7.2, Memory Ordering. + // Last seen at: + // http://developer.intel.com/design/pentium4/manuals/index_new.htm + // + // x86 stores/loads fail to act as barriers for a few instructions (clflush + // maskmovdqu maskmovq movntdq movnti movntpd movntps movntq) but these are + // not generated by the compiler, and are rare. Users of these instructions + // need to know about cache behaviour in any case since all of these involve + // either flushing cache lines or non-temporal cache hints. +} + +inline Atomic64 NoBarrier_Load(volatile const Atomic64* ptr) { + return *ptr; +} + +inline Atomic64 Acquire_Load(volatile const Atomic64* ptr) { + Atomic64 value = *ptr; // An x86 load acts as a acquire barrier, + // for current AMD/Intel chips as of Jan 2008. + // See also Release_Store(), above. + ATOMICOPS_COMPILER_BARRIER(); + return value; +} + +inline Atomic64 Release_Load(volatile const Atomic64* ptr) { + MemoryBarrier(); + return *ptr; +} + +inline Atomic64 Acquire_CompareAndSwap(volatile Atomic64* ptr, + Atomic64 old_value, + Atomic64 new_value) { + Atomic64 x = NoBarrier_CompareAndSwap(ptr, old_value, new_value); + if (AtomicOps_Internalx86CPUFeatures.has_amd_lock_mb_bug) { + __asm__ __volatile__("lfence" : : : "memory"); + } + return x; +} + +inline Atomic64 Release_CompareAndSwap(volatile Atomic64* ptr, + Atomic64 old_value, + Atomic64 new_value) { + return NoBarrier_CompareAndSwap(ptr, old_value, new_value); +} + +#endif // defined(__x86_64__) + +} // namespace internal +} // namespace protobuf +} // namespace google + +#undef ATOMICOPS_COMPILER_BARRIER + +#endif // GOOGLE_PROTOBUF_ATOMICOPS_INTERNALS_X86_GCC_H_ diff --git a/cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/stubs/atomicops_internals_x86_msvc.cc b/cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/stubs/atomicops_internals_x86_msvc.cc new file mode 100644 index 000000000..0b359796e --- /dev/null +++ b/cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/stubs/atomicops_internals_x86_msvc.cc @@ -0,0 +1,112 @@ +// Protocol Buffers - Google's data interchange format +// Copyright 2012 Google Inc. All rights reserved. +// http://code.google.com/p/protobuf/ +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +// The compilation of extension_set.cc fails when windows.h is included. +// Therefore we move the code depending on windows.h to this separate cc file. + +// Don't compile this file for people not concerned about thread safety. +#ifndef GOOGLE_PROTOBUF_NO_THREAD_SAFETY + +#include + +#ifdef GOOGLE_PROTOBUF_ATOMICOPS_INTERNALS_X86_MSVC_H_ + +#include + +namespace google { +namespace protobuf { +namespace internal { + +inline void MemoryBarrier() { + // We use MemoryBarrier from WinNT.h + ::MemoryBarrier(); +} + +Atomic32 NoBarrier_CompareAndSwap(volatile Atomic32* ptr, + Atomic32 old_value, + Atomic32 new_value) { + LONG result = InterlockedCompareExchange( + reinterpret_cast(ptr), + static_cast(new_value), + static_cast(old_value)); + return static_cast(result); +} + +Atomic32 NoBarrier_AtomicExchange(volatile Atomic32* ptr, + Atomic32 new_value) { + LONG result = InterlockedExchange( + reinterpret_cast(ptr), + static_cast(new_value)); + return static_cast(result); +} + +Atomic32 Barrier_AtomicIncrement(volatile Atomic32* ptr, + Atomic32 increment) { + return InterlockedExchangeAdd( + reinterpret_cast(ptr), + static_cast(increment)) + increment; +} + +#if defined(_WIN64) + +// 64-bit low-level operations on 64-bit platform. + +Atomic64 NoBarrier_CompareAndSwap(volatile Atomic64* ptr, + Atomic64 old_value, + Atomic64 new_value) { + PVOID result = InterlockedCompareExchangePointer( + reinterpret_cast(ptr), + reinterpret_cast(new_value), reinterpret_cast(old_value)); + return reinterpret_cast(result); +} + +Atomic64 NoBarrier_AtomicExchange(volatile Atomic64* ptr, + Atomic64 new_value) { + PVOID result = InterlockedExchangePointer( + reinterpret_cast(ptr), + reinterpret_cast(new_value)); + return reinterpret_cast(result); +} + +Atomic64 Barrier_AtomicIncrement(volatile Atomic64* ptr, + Atomic64 increment) { + return InterlockedExchangeAdd64( + reinterpret_cast(ptr), + static_cast(increment)) + increment; +} + +#endif // defined(_WIN64) + +} // namespace internal +} // namespace protobuf +} // namespace google + +#endif // GOOGLE_PROTOBUF_ATOMICOPS_INTERNALS_X86_MSVC_H_ +#endif // GOOGLE_PROTOBUF_NO_THREAD_SAFETY diff --git a/cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/stubs/atomicops_internals_x86_msvc.h b/cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/stubs/atomicops_internals_x86_msvc.h new file mode 100644 index 000000000..6f9869d1f --- /dev/null +++ b/cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/stubs/atomicops_internals_x86_msvc.h @@ -0,0 +1,150 @@ +// Protocol Buffers - Google's data interchange format +// Copyright 2012 Google Inc. All rights reserved. +// http://code.google.com/p/protobuf/ +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +// This file is an internal atomic implementation, use atomicops.h instead. + +#ifndef GOOGLE_PROTOBUF_ATOMICOPS_INTERNALS_X86_MSVC_H_ +#define GOOGLE_PROTOBUF_ATOMICOPS_INTERNALS_X86_MSVC_H_ + +namespace google { +namespace protobuf { +namespace internal { + +inline Atomic32 NoBarrier_AtomicIncrement(volatile Atomic32* ptr, + Atomic32 increment) { + return Barrier_AtomicIncrement(ptr, increment); +} + +#if !(defined(_MSC_VER) && _MSC_VER >= 1400) +#error "We require at least vs2005 for MemoryBarrier" +#endif + +inline Atomic32 Acquire_CompareAndSwap(volatile Atomic32* ptr, + Atomic32 old_value, + Atomic32 new_value) { + return NoBarrier_CompareAndSwap(ptr, old_value, new_value); +} + +inline Atomic32 Release_CompareAndSwap(volatile Atomic32* ptr, + Atomic32 old_value, + Atomic32 new_value) { + return NoBarrier_CompareAndSwap(ptr, old_value, new_value); +} + +inline void NoBarrier_Store(volatile Atomic32* ptr, Atomic32 value) { + *ptr = value; +} + +inline void Acquire_Store(volatile Atomic32* ptr, Atomic32 value) { + NoBarrier_AtomicExchange(ptr, value); + // acts as a barrier in this implementation +} + +inline void Release_Store(volatile Atomic32* ptr, Atomic32 value) { + *ptr = value; // works w/o barrier for current Intel chips as of June 2005 + // See comments in Atomic64 version of Release_Store() below. +} + +inline Atomic32 NoBarrier_Load(volatile const Atomic32* ptr) { + return *ptr; +} + +inline Atomic32 Acquire_Load(volatile const Atomic32* ptr) { + Atomic32 value = *ptr; + return value; +} + +inline Atomic32 Release_Load(volatile const Atomic32* ptr) { + MemoryBarrier(); + return *ptr; +} + +#if defined(_WIN64) + +// 64-bit low-level operations on 64-bit platform. + +inline Atomic64 NoBarrier_AtomicIncrement(volatile Atomic64* ptr, + Atomic64 increment) { + return Barrier_AtomicIncrement(ptr, increment); +} + +inline void NoBarrier_Store(volatile Atomic64* ptr, Atomic64 value) { + *ptr = value; +} + +inline void Acquire_Store(volatile Atomic64* ptr, Atomic64 value) { + NoBarrier_AtomicExchange(ptr, value); + // acts as a barrier in this implementation +} + +inline void Release_Store(volatile Atomic64* ptr, Atomic64 value) { + *ptr = value; // works w/o barrier for current Intel chips as of June 2005 + + // When new chips come out, check: + // IA-32 Intel Architecture Software Developer's Manual, Volume 3: + // System Programming Guide, Chatper 7: Multiple-processor management, + // Section 7.2, Memory Ordering. + // Last seen at: + // http://developer.intel.com/design/pentium4/manuals/index_new.htm +} + +inline Atomic64 NoBarrier_Load(volatile const Atomic64* ptr) { + return *ptr; +} + +inline Atomic64 Acquire_Load(volatile const Atomic64* ptr) { + Atomic64 value = *ptr; + return value; +} + +inline Atomic64 Release_Load(volatile const Atomic64* ptr) { + MemoryBarrier(); + return *ptr; +} + +inline Atomic64 Acquire_CompareAndSwap(volatile Atomic64* ptr, + Atomic64 old_value, + Atomic64 new_value) { + return NoBarrier_CompareAndSwap(ptr, old_value, new_value); +} + +inline Atomic64 Release_CompareAndSwap(volatile Atomic64* ptr, + Atomic64 old_value, + Atomic64 new_value) { + return NoBarrier_CompareAndSwap(ptr, old_value, new_value); +} + +#endif // defined(_WIN64) + +} // namespace internal +} // namespace protobuf +} // namespace google + +#endif // GOOGLE_PROTOBUF_ATOMICOPS_INTERNALS_X86_MSVC_H_ diff --git a/cpp/thirdparty/protobuf-2.3.0/src/google/protobuf/stubs/common.cc b/cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/stubs/common.cc similarity index 91% rename from cpp/thirdparty/protobuf-2.3.0/src/google/protobuf/stubs/common.cc rename to cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/stubs/common.cc index 1e2d68d2f..e60450267 100644 --- a/cpp/thirdparty/protobuf-2.3.0/src/google/protobuf/stubs/common.cc +++ b/cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/stubs/common.cc @@ -110,7 +110,7 @@ void DefaultLogHandler(LogLevel level, const char* filename, int line, // We use fprintf() instead of cerr because we want this to work at static // initialization time. - fprintf(stderr, "libprotobuf %s %s:%d] %s\n", + fprintf(stderr, "[libprotobuf %s %s:%d] %s\n", level_names[level], filename, line, message.c_str()); fflush(stderr); // Needed on MSVC. } @@ -183,15 +183,19 @@ void LogMessage::Finish() { if (level_ != LOGLEVEL_FATAL) { InitLogSilencerCountOnce(); MutexLock lock(log_silencer_count_mutex_); - suppress = internal::log_silencer_count_ > 0; + suppress = log_silencer_count_ > 0; } if (!suppress) { - internal::log_handler_(level_, filename_, line_, message_); + log_handler_(level_, filename_, line_, message_); } if (level_ == LOGLEVEL_FATAL) { +#if PROTOBUF_USE_EXCEPTIONS + throw FatalException(filename_, line_, message_); +#else abort(); +#endif } } @@ -315,6 +319,24 @@ void Mutex::AssertHeld() { #endif +// =================================================================== +// emulates google3/util/endian/endian.h +// +// TODO(xiaofeng): PROTOBUF_LITTLE_ENDIAN is unfortunately defined in +// google/protobuf/io/coded_stream.h and therefore can not be used here. +// Maybe move that macro definition here in the furture. +uint32 ghtonl(uint32 x) { + union { + uint32 result; + uint8 result_array[4]; + }; + result_array[0] = static_cast(x >> 24); + result_array[1] = static_cast((x >> 16) & 0xFF); + result_array[2] = static_cast((x >> 8) & 0xFF); + result_array[3] = static_cast(x & 0xFF); + return result; +} + // =================================================================== // Shutdown support. @@ -361,5 +383,13 @@ void ShutdownProtobufLibrary() { internal::shutdown_functions_mutex = NULL; } +#if PROTOBUF_USE_EXCEPTIONS +FatalException::~FatalException() throw() {} + +const char* FatalException::what() const throw() { + return message_.c_str(); +} +#endif + } // namespace protobuf } // namespace google diff --git a/cpp/thirdparty/protobuf-2.3.0/src/google/protobuf/stubs/common.h b/cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/stubs/common.h similarity index 92% rename from cpp/thirdparty/protobuf-2.3.0/src/google/protobuf/stubs/common.h rename to cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/stubs/common.h index 5b5c63a04..f287ddfbc 100644 --- a/cpp/thirdparty/protobuf-2.3.0/src/google/protobuf/stubs/common.h +++ b/cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/stubs/common.h @@ -38,10 +38,6 @@ #include #include #include -// NOTE(michael.berlin.xtreemfs@gmail.com): Added to avoid compiler error -// due to ambiguous 'struct map', see: -// http://code.google.com/p/protobuf/issues/detail?id=195#c10 -#include #include #include #if defined(__osf__) @@ -52,17 +48,43 @@ #include #endif +#ifndef PROTOBUF_USE_EXCEPTIONS +#if defined(_MSC_VER) && defined(_CPPUNWIND) + #define PROTOBUF_USE_EXCEPTIONS 1 +#elif defined(__EXCEPTIONS) + #define PROTOBUF_USE_EXCEPTIONS 1 +#else + #define PROTOBUF_USE_EXCEPTIONS 0 +#endif +#endif + +#if PROTOBUF_USE_EXCEPTIONS +#include +#endif + +#if defined(_WIN32) && defined(GetMessage) +// Allow GetMessage to be used as a valid method name in protobuf classes. +// windows.h defines GetMessage() as a macro. Let's re-define it as an inline +// function. The inline function should be equivalent for C++ users. +inline BOOL GetMessage_Win32( + LPMSG lpMsg, HWND hWnd, + UINT wMsgFilterMin, UINT wMsgFilterMax) { + return GetMessage(lpMsg, hWnd, wMsgFilterMin, wMsgFilterMax); +} +#undef GetMessage +inline BOOL GetMessage( + LPMSG lpMsg, HWND hWnd, + UINT wMsgFilterMin, UINT wMsgFilterMax) { + return GetMessage_Win32(lpMsg, hWnd, wMsgFilterMin, wMsgFilterMax); +} +#endif + + namespace std {} namespace google { namespace protobuf { -using namespace std; // Don't do this at home, kids. -// NOTE(michael.berlin.xtreemfs@gmail.com): Added to avoid compiler error -// due to ambiguous 'struct map', see: -// http://code.google.com/p/protobuf/issues/detail?id=195#c10 -using std::map; - #undef GOOGLE_DISALLOW_EVIL_CONSTRUCTORS #define GOOGLE_DISALLOW_EVIL_CONSTRUCTORS(TypeName) \ TypeName(const TypeName&); \ @@ -91,24 +113,24 @@ namespace internal { // The current version, represented as a single integer to make comparison // easier: major * 10^6 + minor * 10^3 + micro -#define GOOGLE_PROTOBUF_VERSION 2003000 +#define GOOGLE_PROTOBUF_VERSION 2005000 // The minimum library version which works with the current version of the // headers. -#define GOOGLE_PROTOBUF_MIN_LIBRARY_VERSION 2003000 +#define GOOGLE_PROTOBUF_MIN_LIBRARY_VERSION 2005000 // The minimum header version which works with the current version of // the library. This constant should only be used by protoc's C++ code // generator. -static const int kMinHeaderVersionForLibrary = 2003000; +static const int kMinHeaderVersionForLibrary = 2005000; // The minimum protoc version which works with the current version of the // headers. -#define GOOGLE_PROTOBUF_MIN_PROTOC_VERSION 2003000 +#define GOOGLE_PROTOBUF_MIN_PROTOC_VERSION 2005000 // The minimum header version which works with the current version of // protoc. This constant should only be used in VerifyVersion(). -static const int kMinHeaderVersionForProtoc = 2003000; +static const int kMinHeaderVersionForProtoc = 2005000; // Verifies that the headers and libraries are compatible. Use the macro // below to call this. @@ -116,7 +138,7 @@ void LIBPROTOBUF_EXPORT VerifyVersion(int headerVersion, int minLibraryVersion, const char* filename); // Converts a numeric version number to a string. -string LIBPROTOBUF_EXPORT VersionString(int version); +std::string LIBPROTOBUF_EXPORT VersionString(int version); } // namespace internal @@ -359,6 +381,7 @@ struct CompileAssert { typedef ::google::protobuf::internal::CompileAssert<(bool(expr))> \ msg[bool(expr) ? 1 : -1] + // Implementation details of COMPILE_ASSERT: // // - COMPILE_ASSERT works by defining an array type that has -1 @@ -626,7 +649,7 @@ class LIBPROTOBUF_EXPORT LogMessage { LogMessage(LogLevel level, const char* filename, int line); ~LogMessage(); - LogMessage& operator<<(const string& value); + LogMessage& operator<<(const std::string& value); LogMessage& operator<<(const char* value); LogMessage& operator<<(char value); LogMessage& operator<<(int value); @@ -642,7 +665,7 @@ class LIBPROTOBUF_EXPORT LogMessage { LogLevel level_; const char* filename_; int line_; - string message_; + std::string message_; }; // Used to make the entire "LOG(BLAH) << etc." expression have a void return @@ -668,6 +691,7 @@ class LIBPROTOBUF_EXPORT LogFinisher { #undef GOOGLE_CHECK_LE #undef GOOGLE_CHECK_GT #undef GOOGLE_CHECK_GE +#undef GOOGLE_CHECK_NOTNULL #undef GOOGLE_DLOG #undef GOOGLE_DCHECK @@ -694,6 +718,18 @@ class LIBPROTOBUF_EXPORT LogFinisher { #define GOOGLE_CHECK_GT(A, B) GOOGLE_CHECK((A) > (B)) #define GOOGLE_CHECK_GE(A, B) GOOGLE_CHECK((A) >= (B)) +namespace internal { +template +T* CheckNotNull(const char *file, int line, const char *name, T* val) { + if (val == NULL) { + GOOGLE_LOG(FATAL) << name; + } + return val; +} +} // namespace internal +#define GOOGLE_CHECK_NOTNULL(A) \ + internal::CheckNotNull(__FILE__, __LINE__, "'" #A "' must not be NULL", (A)) + #ifdef NDEBUG #define GOOGLE_DLOG GOOGLE_LOG_IF(INFO, false) @@ -721,7 +757,7 @@ class LIBPROTOBUF_EXPORT LogFinisher { #endif // !NDEBUG typedef void LogHandler(LogLevel level, const char* filename, int line, - const string& message); + const std::string& message); // The protobuf library sometimes writes warning and error messages to // stderr. These messages are primarily useful for developers, but may @@ -833,8 +869,9 @@ class LIBPROTOBUF_EXPORT FunctionClosure0 : public Closure { ~FunctionClosure0(); void Run() { + bool needs_delete = self_deleting_; // read in case callback deletes function_(); - if (self_deleting_) delete this; + if (needs_delete) delete this; } private: @@ -852,8 +889,9 @@ class MethodClosure0 : public Closure { ~MethodClosure0() {} void Run() { + bool needs_delete = self_deleting_; // read in case callback deletes (object_->*method_)(); - if (self_deleting_) delete this; + if (needs_delete) delete this; } private: @@ -874,8 +912,9 @@ class FunctionClosure1 : public Closure { ~FunctionClosure1() {} void Run() { + bool needs_delete = self_deleting_; // read in case callback deletes function_(arg1_); - if (self_deleting_) delete this; + if (needs_delete) delete this; } private: @@ -896,8 +935,9 @@ class MethodClosure1 : public Closure { ~MethodClosure1() {} void Run() { + bool needs_delete = self_deleting_; // read in case callback deletes (object_->*method_)(arg1_); - if (self_deleting_) delete this; + if (needs_delete) delete this; } private: @@ -919,8 +959,9 @@ class FunctionClosure2 : public Closure { ~FunctionClosure2() {} void Run() { + bool needs_delete = self_deleting_; // read in case callback deletes function_(arg1_, arg2_); - if (self_deleting_) delete this; + if (needs_delete) delete this; } private: @@ -942,8 +983,9 @@ class MethodClosure2 : public Closure { ~MethodClosure2() {} void Run() { + bool needs_delete = self_deleting_; // read in case callback deletes (object_->*method_)(arg1_, arg2_); - if (self_deleting_) delete this; + if (needs_delete) delete this; } private: @@ -1112,26 +1154,20 @@ using internal::WriterMutexLock; using internal::MutexLockMaybe; // =================================================================== -// from google3/base/type_traits.h +// from google3/util/utf8/public/unilib.h namespace internal { -// Specified by TR1 [4.7.4] Pointer modifications. -template struct remove_pointer { typedef T type; }; -template struct remove_pointer { typedef T type; }; -template struct remove_pointer { typedef T type; }; -template struct remove_pointer { typedef T type; }; -template struct remove_pointer { - typedef T type; }; - -// =================================================================== - // Checks if the buffer contains structurally-valid UTF-8. Implemented in // structurally_valid.cc. LIBPROTOBUF_EXPORT bool IsStructurallyValidUTF8(const char* buf, int len); } // namespace internal +// =================================================================== +// from google3/util/endian/endian.h +LIBPROTOBUF_EXPORT uint32 ghtonl(uint32 x); + // =================================================================== // Shutdown support. @@ -1157,6 +1193,30 @@ LIBPROTOBUF_EXPORT void OnShutdown(void (*func)()); } // namespace internal +#if PROTOBUF_USE_EXCEPTIONS +class FatalException : public std::exception { + public: + FatalException(const char* filename, int line, const std::string& message) + : filename_(filename), line_(line), message_(message) {} + virtual ~FatalException() throw(); + + virtual const char* what() const throw(); + + const char* filename() const { return filename_; } + int line() const { return line_; } + const std::string& message() const { return message_; } + + private: + const char* filename_; + const int line_; + const std::string message_; +}; +#endif + +// This is at the end of the file instead of the beginning to work around a bug +// in some versions of MSVC. +using namespace std; // Don't do this at home, kids. + } // namespace protobuf } // namespace google diff --git a/cpp/thirdparty/protobuf-2.3.0/src/google/protobuf/stubs/common_unittest.cc b/cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/stubs/common_unittest.cc similarity index 94% rename from cpp/thirdparty/protobuf-2.3.0/src/google/protobuf/stubs/common_unittest.cc rename to cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/stubs/common_unittest.cc index 32c1d08e9..43cd6d010 100644 --- a/cpp/thirdparty/protobuf-2.3.0/src/google/protobuf/stubs/common_unittest.cc +++ b/cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/stubs/common_unittest.cc @@ -94,9 +94,9 @@ TEST(LoggingTest, DefaultLogging) { string text = GetCapturedTestStderr(); EXPECT_EQ( - "libprotobuf INFO "__FILE__":" + SimpleItoa(line + 1) + "] A message.\n" - "libprotobuf WARNING "__FILE__":" + SimpleItoa(line + 2) + "] A warning.\n" - "libprotobuf ERROR "__FILE__":" + SimpleItoa(line + 3) + "] An error.\n", + "[libprotobuf INFO "__FILE__":" + SimpleItoa(line + 1) + "] A message.\n" + "[libprotobuf WARNING "__FILE__":" + SimpleItoa(line + 2) + "] A warning.\n" + "[libprotobuf ERROR "__FILE__":" + SimpleItoa(line + 3) + "] An error.\n", text); } @@ -182,11 +182,17 @@ class ClosureTest : public testing::Test { a_ = 0; b_ = NULL; c_.clear(); + permanent_closure_ = NULL; + } + + void DeleteClosureInCallback() { + delete permanent_closure_; } int a_; const char* b_; string c_; + Closure* permanent_closure_; static ClosureTest* current_instance_; }; @@ -340,6 +346,12 @@ TEST_F(ClosureTest, TestPermanentClosureMethod2) { delete closure; } +TEST_F(ClosureTest, TestPermanentClosureDeleteInCallback) { + permanent_closure_ = NewPermanentCallback((ClosureTest*) this, + &ClosureTest::DeleteClosureInCallback); + permanent_closure_->Run(); +} + } // anonymous namespace } // namespace protobuf } // namespace google diff --git a/cpp/thirdparty/protobuf-2.3.0/src/google/protobuf/stubs/hash.h b/cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/stubs/hash.h similarity index 97% rename from cpp/thirdparty/protobuf-2.3.0/src/google/protobuf/stubs/hash.h rename to cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/stubs/hash.h index 822d60501..f7d107127 100644 --- a/cpp/thirdparty/protobuf-2.3.0/src/google/protobuf/stubs/hash.h +++ b/cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/stubs/hash.h @@ -90,12 +90,16 @@ template , typename EqualKey = int > class hash_map : public std::map { + public: + hash_map(int = 0) {} }; template , typename EqualKey = int > class hash_set : public std::set { + public: + hash_set(int = 0) {} }; #elif defined(_MSC_VER) && !defined(_STLPORT_VERSION) @@ -123,6 +127,8 @@ template class hash_map : public HASH_NAMESPACE::hash_map< Key, Data, HashFcn> { + public: + hash_map(int = 0) {} }; template class hash_set : public HASH_NAMESPACE::hash_set< Key, HashFcn> { + public: + hash_set(int = 0) {} }; #else @@ -163,6 +171,8 @@ template > class hash_map : public HASH_NAMESPACE::HASH_MAP_CLASS< Key, Data, HashFcn, EqualKey> { + public: + hash_map(int = 0) {} }; template > class hash_set : public HASH_NAMESPACE::HASH_SET_CLASS< Key, HashFcn, EqualKey> { + public: + hash_set(int = 0) {} }; #endif diff --git a/cpp/thirdparty/protobuf-2.3.0/src/google/protobuf/stubs/map-util.h b/cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/stubs/map-util.h similarity index 82% rename from cpp/thirdparty/protobuf-2.3.0/src/google/protobuf/stubs/map-util.h rename to cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/stubs/map-util.h index f5c9d6b6d..775848b9c 100644 --- a/cpp/thirdparty/protobuf-2.3.0/src/google/protobuf/stubs/map-util.h +++ b/cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/stubs/map-util.h @@ -68,6 +68,30 @@ FindOrNull(const Collection& collection, return &it->second; } +// Perform a lookup in a map or hash_map, assuming that the key exists. +// Crash if it does not. +// +// This is intended as a replacement for operator[] as an rvalue (for reading) +// when the key is guaranteed to exist. +// +// operator[] is discouraged for several reasons: +// * It has a side-effect of inserting missing keys +// * It is not thread-safe (even when it is not inserting, it can still +// choose to resize the underlying storage) +// * It invalidates iterators (when it chooses to resize) +// * It default constructs a value object even if it doesn't need to +// +// This version assumes the key is printable, and includes it in the fatal log +// message. +template +const typename Collection::value_type::second_type& +FindOrDie(const Collection& collection, + const typename Collection::value_type::first_type& key) { + typename Collection::const_iterator it = collection.find(key); + GOOGLE_CHECK(it != collection.end()) << "Map key not found: " << key; + return it->second; +} + // Perform a lookup in a map or hash_map whose values are pointers. // If the key is present a const pointer to the associated value is returned, // otherwise a NULL pointer is returned. diff --git a/cpp/thirdparty/protobuf-2.3.0/src/google/protobuf/stubs/once.cc b/cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/stubs/once.cc similarity index 58% rename from cpp/thirdparty/protobuf-2.3.0/src/google/protobuf/stubs/once.cc rename to cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/stubs/once.cc index 5b7af9ce9..1e24b8552 100644 --- a/cpp/thirdparty/protobuf-2.3.0/src/google/protobuf/stubs/once.cc +++ b/cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/stubs/once.cc @@ -35,54 +35,65 @@ // This header is intended to be included only by internal .cc files and // generated .pb.cc files. Users should not use this directly. +#include + +#ifndef GOOGLE_PROTOBUF_NO_THREAD_SAFETY + #ifdef _WIN32 #include +#else +#include #endif -#include +#include namespace google { namespace protobuf { -#ifdef _WIN32 - -struct ProtobufOnceInternal { - ProtobufOnceInternal() { - InitializeCriticalSection(&critical_section); - } - ~ProtobufOnceInternal() { - DeleteCriticalSection(&critical_section); - } - CRITICAL_SECTION critical_section; -}; - -ProtobufOnceType::~ProtobufOnceType() -{ - delete internal_; - internal_ = NULL; -} +namespace { -ProtobufOnceType::ProtobufOnceType() { - // internal_ may be non-NULL if Init() was already called. - if (internal_ == NULL) internal_ = new ProtobufOnceInternal; +void SchedYield() { +#ifdef _WIN32 + Sleep(0); +#else // POSIX + sched_yield(); +#endif } -void ProtobufOnceType::Init(void (*init_func)()) { - // internal_ may be NULL if we're still in dynamic initialization and the - // constructor has not been called yet. As mentioned in once.h, we assume - // that the program is still single-threaded at this time, and therefore it - // should be safe to initialize internal_ like so. - if (internal_ == NULL) internal_ = new ProtobufOnceInternal; +} // namespace - EnterCriticalSection(&internal_->critical_section); - if (!initialized_) { - init_func(); - initialized_ = true; +void GoogleOnceInitImpl(ProtobufOnceType* once, Closure* closure) { + internal::AtomicWord state = internal::Acquire_Load(once); + // Fast path. The provided closure was already executed. + if (state == ONCE_STATE_DONE) { + return; + } + // The closure execution did not complete yet. The once object can be in one + // of the two following states: + // - UNINITIALIZED: We are the first thread calling this function. + // - EXECUTING_CLOSURE: Another thread is already executing the closure. + // + // First, try to change the state from UNINITIALIZED to EXECUTING_CLOSURE + // atomically. + state = internal::Acquire_CompareAndSwap( + once, ONCE_STATE_UNINITIALIZED, ONCE_STATE_EXECUTING_CLOSURE); + if (state == ONCE_STATE_UNINITIALIZED) { + // We are the first thread to call this function, so we have to call the + // closure. + closure->Run(); + internal::Release_Store(once, ONCE_STATE_DONE); + } else { + // Another thread has already started executing the closure. We need to + // wait until it completes the initialization. + while (state == ONCE_STATE_EXECUTING_CLOSURE) { + // Note that futex() could be used here on Linux as an improvement. + SchedYield(); + state = internal::Acquire_Load(once); + } } - LeaveCriticalSection(&internal_->critical_section); } -#endif - } // namespace protobuf } // namespace google + +#endif // GOOGLE_PROTOBUF_NO_THREAD_SAFETY diff --git a/cpp/thirdparty/protobuf-2.3.0/src/google/protobuf/stubs/once.h b/cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/stubs/once.h similarity index 68% rename from cpp/thirdparty/protobuf-2.3.0/src/google/protobuf/stubs/once.h rename to cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/stubs/once.h index 0dee40766..7fbc117fe 100644 --- a/cpp/thirdparty/protobuf-2.3.0/src/google/protobuf/stubs/once.h +++ b/cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/stubs/once.h @@ -37,16 +37,22 @@ // // This is basically a portable version of pthread_once(). // -// This header declares three things: +// This header declares: // * A type called ProtobufOnceType. // * A macro GOOGLE_PROTOBUF_DECLARE_ONCE() which declares a variable of type // ProtobufOnceType. This is the only legal way to declare such a variable. -// The macro may only be used at the global scope (you cannot create local -// or class member variables of this type). -// * A function GogoleOnceInit(ProtobufOnceType* once, void (*init_func)()). +// The macro may only be used at the global scope (you cannot create local or +// class member variables of this type). +// * A function GoogleOnceInit(ProtobufOnceType* once, void (*init_func)()). // This function, when invoked multiple times given the same ProtobufOnceType // object, will invoke init_func on the first call only, and will make sure // none of the calls return before that first call to init_func has finished. +// * The user can provide a parameter which GoogleOnceInit() forwards to the +// user-provided function when it is called. Usage example: +// int a = 10; +// GoogleOnceInit(&my_once, &MyFunctionExpectingIntArgument, &a); +// * This implementation guarantees that ProtobufOnceType is a POD (i.e. no +// static initializer generated). // // This implements a way to perform lazy initialization. It's more efficient // than using mutexes as no lock is needed if initialization has already @@ -72,50 +78,69 @@ #ifndef GOOGLE_PROTOBUF_STUBS_ONCE_H__ #define GOOGLE_PROTOBUF_STUBS_ONCE_H__ +#include #include -#ifndef _WIN32 -#include -#endif - namespace google { namespace protobuf { -#ifdef _WIN32 - -struct ProtobufOnceInternal; +#ifdef GOOGLE_PROTOBUF_NO_THREAD_SAFETY -struct LIBPROTOBUF_EXPORT ProtobufOnceType { - ProtobufOnceType(); - ~ProtobufOnceType(); - void Init(void (*init_func)()); - - volatile bool initialized_; - ProtobufOnceInternal* internal_; -}; +typedef bool ProtobufOnceType; -#define GOOGLE_PROTOBUF_DECLARE_ONCE(NAME) \ - ::google::protobuf::ProtobufOnceType NAME +#define GOOGLE_PROTOBUF_ONCE_INIT false inline void GoogleOnceInit(ProtobufOnceType* once, void (*init_func)()) { - // Note: Double-checked locking is safe on x86. - if (!once->initialized_) { - once->Init(init_func); + if (!*once) { + *once = true; + init_func(); + } +} + +template +inline void GoogleOnceInit(ProtobufOnceType* once, void (*init_func)(Arg), + Arg arg) { + if (!*once) { + *once = true; + init_func(arg); } } #else -typedef pthread_once_t ProtobufOnceType; +enum { + ONCE_STATE_UNINITIALIZED = 0, + ONCE_STATE_EXECUTING_CLOSURE = 1, + ONCE_STATE_DONE = 2 +}; -#define GOOGLE_PROTOBUF_DECLARE_ONCE(NAME) \ - pthread_once_t NAME = PTHREAD_ONCE_INIT +typedef internal::AtomicWord ProtobufOnceType; + +#define GOOGLE_PROTOBUF_ONCE_INIT ::google::protobuf::ONCE_STATE_UNINITIALIZED + +LIBPROTOBUF_EXPORT +void GoogleOnceInitImpl(ProtobufOnceType* once, Closure* closure); inline void GoogleOnceInit(ProtobufOnceType* once, void (*init_func)()) { - pthread_once(once, init_func); + if (internal::Acquire_Load(once) != ONCE_STATE_DONE) { + internal::FunctionClosure0 func(init_func, false); + GoogleOnceInitImpl(once, &func); + } } -#endif +template +inline void GoogleOnceInit(ProtobufOnceType* once, void (*init_func)(Arg*), + Arg* arg) { + if (internal::Acquire_Load(once) != ONCE_STATE_DONE) { + internal::FunctionClosure1 func(init_func, false, arg); + GoogleOnceInitImpl(once, &func); + } +} + +#endif // GOOGLE_PROTOBUF_NO_THREAD_SAFETY + +#define GOOGLE_PROTOBUF_DECLARE_ONCE(NAME) \ + ::google::protobuf::ProtobufOnceType NAME = GOOGLE_PROTOBUF_ONCE_INIT } // namespace protobuf } // namespace google diff --git a/cpp/thirdparty/protobuf-2.3.0/src/google/protobuf/stubs/once_unittest.cc b/cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/stubs/once_unittest.cc similarity index 100% rename from cpp/thirdparty/protobuf-2.3.0/src/google/protobuf/stubs/once_unittest.cc rename to cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/stubs/once_unittest.cc diff --git a/cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/stubs/platform_macros.h b/cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/stubs/platform_macros.h new file mode 100644 index 000000000..b1df60e46 --- /dev/null +++ b/cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/stubs/platform_macros.h @@ -0,0 +1,70 @@ +// Protocol Buffers - Google's data interchange format +// Copyright 2012 Google Inc. All rights reserved. +// http://code.google.com/p/protobuf/ +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +#ifndef GOOGLE_PROTOBUF_PLATFORM_MACROS_H_ +#define GOOGLE_PROTOBUF_PLATFORM_MACROS_H_ + +#include + +// Processor architecture detection. For more info on what's defined, see: +// http://msdn.microsoft.com/en-us/library/b0084kay.aspx +// http://www.agner.org/optimize/calling_conventions.pdf +// or with gcc, run: "echo | gcc -E -dM -" +#if defined(_M_X64) || defined(__x86_64__) +#define GOOGLE_PROTOBUF_ARCH_X64 1 +#define GOOGLE_PROTOBUF_ARCH_64_BIT 1 +#elif defined(_M_IX86) || defined(__i386__) +#define GOOGLE_PROTOBUF_ARCH_IA32 1 +#define GOOGLE_PROTOBUF_ARCH_32_BIT 1 +#elif defined(__QNX__) +#define GOOGLE_PROTOBUF_ARCH_ARM_QNX 1 +#define GOOGLE_PROTOBUF_ARCH_32_BIT 1 +#elif defined(__ARMEL__) +#define GOOGLE_PROTOBUF_ARCH_ARM 1 +#define GOOGLE_PROTOBUF_ARCH_32_BIT 1 +#elif defined(__MIPSEL__) +#define GOOGLE_PROTOBUF_ARCH_MIPS 1 +#define GOOGLE_PROTOBUF_ARCH_32_BIT 1 +#elif defined(__pnacl__) +#define GOOGLE_PROTOBUF_ARCH_32_BIT 1 +#elif defined(__ppc__) +#define GOOGLE_PROTOBUF_ARCH_PPC 1 +#define GOOGLE_PROTOBUF_ARCH_32_BIT 1 +#else +#error Host architecture was not detected as supported by protobuf +#endif + +#if defined(__APPLE__) +#define GOOGLE_PROTOBUF_OS_APPLE +#elif defined(__native_client__) +#define GOOGLE_PROTOBUF_OS_NACL +#endif + +#endif // GOOGLE_PROTOBUF_PLATFORM_MACROS_H_ diff --git a/cpp/thirdparty/protobuf-2.3.0/src/google/protobuf/stubs/stl_util-inl.h b/cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/stubs/stl_util.h similarity index 96% rename from cpp/thirdparty/protobuf-2.3.0/src/google/protobuf/stubs/stl_util-inl.h rename to cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/stubs/stl_util.h index a2e671bb7..9021dada9 100644 --- a/cpp/thirdparty/protobuf-2.3.0/src/google/protobuf/stubs/stl_util-inl.h +++ b/cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/stubs/stl_util.h @@ -28,10 +28,10 @@ // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -// from google3/util/gtl/stl_util-inl.h +// from google3/util/gtl/stl_util.h -#ifndef GOOGLE_PROTOBUF_STUBS_STL_UTIL_INL_H__ -#define GOOGLE_PROTOBUF_STUBS_STL_UTIL_INL_H__ +#ifndef GOOGLE_PROTOBUF_STUBS_STL_UTIL_H__ +#define GOOGLE_PROTOBUF_STUBS_STL_UTIL_H__ #include @@ -118,4 +118,4 @@ void STLDeleteValues(T *v) { } // namespace protobuf } // namespace google -#endif // GOOGLE_PROTOBUF_STUBS_STL_UTIL_INL_H__ +#endif // GOOGLE_PROTOBUF_STUBS_STL_UTIL_H__ diff --git a/cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/stubs/stringprintf.cc b/cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/stubs/stringprintf.cc new file mode 100644 index 000000000..4a5b85825 --- /dev/null +++ b/cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/stubs/stringprintf.cc @@ -0,0 +1,175 @@ +// Protocol Buffers - Google's data interchange format +// Copyright 2012 Google Inc. All rights reserved. +// http://code.google.com/p/protobuf/ +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +// from google3/base/stringprintf.cc + +#include + +#include +#include // For va_list and related operations +#include // MSVC requires this for _vsnprintf +#include +#include +#include + +namespace google { +namespace protobuf { + +#ifdef _MSC_VER +enum { IS_COMPILER_MSVC = 1 }; +#ifndef va_copy +// Define va_copy for MSVC. This is a hack, assuming va_list is simply a +// pointer into the stack and is safe to copy. +#define va_copy(dest, src) ((dest) = (src)) +#endif +#else +enum { IS_COMPILER_MSVC = 0 }; +#endif + +void StringAppendV(string* dst, const char* format, va_list ap) { + // First try with a small fixed size buffer + static const int kSpaceLength = 1024; + char space[kSpaceLength]; + + // It's possible for methods that use a va_list to invalidate + // the data in it upon use. The fix is to make a copy + // of the structure before using it and use that copy instead. + va_list backup_ap; + va_copy(backup_ap, ap); + int result = vsnprintf(space, kSpaceLength, format, backup_ap); + va_end(backup_ap); + + if (result < kSpaceLength) { + if (result >= 0) { + // Normal case -- everything fit. + dst->append(space, result); + return; + } + + if (IS_COMPILER_MSVC) { + // Error or MSVC running out of space. MSVC 8.0 and higher + // can be asked about space needed with the special idiom below: + va_copy(backup_ap, ap); + result = vsnprintf(NULL, 0, format, backup_ap); + va_end(backup_ap); + } + + if (result < 0) { + // Just an error. + return; + } + } + + // Increase the buffer size to the size requested by vsnprintf, + // plus one for the closing \0. + int length = result+1; + char* buf = new char[length]; + + // Restore the va_list before we use it again + va_copy(backup_ap, ap); + result = vsnprintf(buf, length, format, backup_ap); + va_end(backup_ap); + + if (result >= 0 && result < length) { + // It fit + dst->append(buf, result); + } + delete[] buf; +} + + +string StringPrintf(const char* format, ...) { + va_list ap; + va_start(ap, format); + string result; + StringAppendV(&result, format, ap); + va_end(ap); + return result; +} + +const string& SStringPrintf(string* dst, const char* format, ...) { + va_list ap; + va_start(ap, format); + dst->clear(); + StringAppendV(dst, format, ap); + va_end(ap); + return *dst; +} + +void StringAppendF(string* dst, const char* format, ...) { + va_list ap; + va_start(ap, format); + StringAppendV(dst, format, ap); + va_end(ap); +} + +// Max arguments supported by StringPrintVector +const int kStringPrintfVectorMaxArgs = 32; + +// An empty block of zero for filler arguments. This is const so that if +// printf tries to write to it (via %n) then the program gets a SIGSEGV +// and we can fix the problem or protect against an attack. +static const char string_printf_empty_block[256] = { '\0' }; + +string StringPrintfVector(const char* format, const vector& v) { + GOOGLE_CHECK_LE(v.size(), kStringPrintfVectorMaxArgs) + << "StringPrintfVector currently only supports up to " + << kStringPrintfVectorMaxArgs << " arguments. " + << "Feel free to add support for more if you need it."; + + // Add filler arguments so that bogus format+args have a harder time + // crashing the program, corrupting the program (%n), + // or displaying random chunks of memory to users. + + const char* cstr[kStringPrintfVectorMaxArgs]; + for (int i = 0; i < v.size(); ++i) { + cstr[i] = v[i].c_str(); + } + for (int i = v.size(); i < GOOGLE_ARRAYSIZE(cstr); ++i) { + cstr[i] = &string_printf_empty_block[0]; + } + + // I do not know any way to pass kStringPrintfVectorMaxArgs arguments, + // or any way to build a va_list by hand, or any API for printf + // that accepts an array of arguments. The best I can do is stick + // this COMPILE_ASSERT right next to the actual statement. + + GOOGLE_COMPILE_ASSERT(kStringPrintfVectorMaxArgs == 32, arg_count_mismatch); + return StringPrintf(format, + cstr[0], cstr[1], cstr[2], cstr[3], cstr[4], + cstr[5], cstr[6], cstr[7], cstr[8], cstr[9], + cstr[10], cstr[11], cstr[12], cstr[13], cstr[14], + cstr[15], cstr[16], cstr[17], cstr[18], cstr[19], + cstr[20], cstr[21], cstr[22], cstr[23], cstr[24], + cstr[25], cstr[26], cstr[27], cstr[28], cstr[29], + cstr[30], cstr[31]); +} +} // namespace protobuf +} // namespace google diff --git a/cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/stubs/stringprintf.h b/cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/stubs/stringprintf.h new file mode 100644 index 000000000..4a03e5ff9 --- /dev/null +++ b/cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/stubs/stringprintf.h @@ -0,0 +1,76 @@ +// Protocol Buffers - Google's data interchange format +// Copyright 2012 Google Inc. All rights reserved. +// http://code.google.com/p/protobuf/ +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +// from google3/base/stringprintf.h +// +// Printf variants that place their output in a C++ string. +// +// Usage: +// string result = StringPrintf("%d %s\n", 10, "hello"); +// SStringPrintf(&result, "%d %s\n", 10, "hello"); +// StringAppendF(&result, "%d %s\n", 20, "there"); + +#ifndef GOOGLE_PROTOBUF_STUBS_STRINGPRINTF_H +#define GOOGLE_PROTOBUF_STUBS_STRINGPRINTF_H + +#include +#include +#include + +#include + +namespace google { +namespace protobuf { + +// Return a C++ string +LIBPROTOBUF_EXPORT extern string StringPrintf(const char* format, ...); + +// Store result into a supplied string and return it +LIBPROTOBUF_EXPORT extern const string& SStringPrintf(string* dst, const char* format, ...); + +// Append result to a supplied string +LIBPROTOBUF_EXPORT extern void StringAppendF(string* dst, const char* format, ...); + +// Lower-level routine that takes a va_list and appends to a specified +// string. All other routines are just convenience wrappers around it. +LIBPROTOBUF_EXPORT extern void StringAppendV(string* dst, const char* format, va_list ap); + +// The max arguments supported by StringPrintfVector +LIBPROTOBUF_EXPORT extern const int kStringPrintfVectorMaxArgs; + +// You can use this version when all your arguments are strings, but +// you don't know how many arguments you'll have at compile time. +// StringPrintfVector will LOG(FATAL) if v.size() > kStringPrintfVectorMaxArgs +LIBPROTOBUF_EXPORT extern string StringPrintfVector(const char* format, const vector& v); + +} // namespace protobuf +} // namespace google + +#endif // GOOGLE_PROTOBUF_STUBS_STRINGPRINTF_H diff --git a/cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/stubs/stringprintf_unittest.cc b/cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/stubs/stringprintf_unittest.cc new file mode 100644 index 000000000..de5ce59fa --- /dev/null +++ b/cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/stubs/stringprintf_unittest.cc @@ -0,0 +1,152 @@ +// Protocol Buffers - Google's data interchange format +// Copyright 2012 Google Inc. All rights reserved. +// http://code.google.com/p/protobuf/ +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +// from google3/base/stringprintf_unittest.cc + +#include + +#include +#include + +#include +#include + +namespace google { +namespace protobuf { +namespace { + +TEST(StringPrintfTest, Empty) { +#if 0 + // gcc 2.95.3, gcc 4.1.0, and gcc 4.2.2 all warn about this: + // warning: zero-length printf format string. + // so we do not allow them in google3. + EXPECT_EQ("", StringPrintf("")); +#endif + EXPECT_EQ("", StringPrintf("%s", string().c_str())); + EXPECT_EQ("", StringPrintf("%s", "")); +} + +TEST(StringPrintfTest, Misc) { +// MSVC and mingw does not support $ format specifier. +#if !defined(_MSC_VER) && !defined(__MINGW32__) + EXPECT_EQ("123hello w", StringPrintf("%3$d%2$s %1$c", 'w', "hello", 123)); +#endif // !_MSC_VER +} + +TEST(StringAppendFTest, Empty) { + string value("Hello"); + const char* empty = ""; + StringAppendF(&value, "%s", empty); + EXPECT_EQ("Hello", value); +} + +TEST(StringAppendFTest, EmptyString) { + string value("Hello"); + StringAppendF(&value, "%s", ""); + EXPECT_EQ("Hello", value); +} + +TEST(StringAppendFTest, String) { + string value("Hello"); + StringAppendF(&value, " %s", "World"); + EXPECT_EQ("Hello World", value); +} + +TEST(StringAppendFTest, Int) { + string value("Hello"); + StringAppendF(&value, " %d", 123); + EXPECT_EQ("Hello 123", value); +} + +TEST(StringPrintfTest, Multibyte) { + // If we are in multibyte mode and feed invalid multibyte sequence, + // StringPrintf should return an empty string instead of running + // out of memory while trying to determine destination buffer size. + // see b/4194543. + + char* old_locale = setlocale(LC_CTYPE, NULL); + // Push locale with multibyte mode + setlocale(LC_CTYPE, "en_US.utf8"); + + const char kInvalidCodePoint[] = "\375\067s"; + string value = StringPrintf("%.*s", 3, kInvalidCodePoint); + + // In some versions of glibc (e.g. eglibc-2.11.1, aka GRTEv2), snprintf + // returns error given an invalid codepoint. Other versions + // (e.g. eglibc-2.15, aka pre-GRTEv3) emit the codepoint verbatim. + // We test that the output is one of the above. + EXPECT_TRUE(value.empty() || value == kInvalidCodePoint); + + // Repeat with longer string, to make sure that the dynamically + // allocated path in StringAppendV is handled correctly. + int n = 2048; + char* buf = new char[n+1]; + memset(buf, ' ', n-3); + memcpy(buf + n - 3, kInvalidCodePoint, 4); + value = StringPrintf("%.*s", n, buf); + // See GRTEv2 vs. GRTEv3 comment above. + EXPECT_TRUE(value.empty() || value == buf); + delete[] buf; + + setlocale(LC_CTYPE, old_locale); +} + +TEST(StringPrintfTest, NoMultibyte) { + // No multibyte handling, but the string contains funny chars. + char* old_locale = setlocale(LC_CTYPE, NULL); + setlocale(LC_CTYPE, "POSIX"); + string value = StringPrintf("%.*s", 3, "\375\067s"); + setlocale(LC_CTYPE, old_locale); + EXPECT_EQ("\375\067s", value); +} + +TEST(StringPrintfTest, DontOverwriteErrno) { + // Check that errno isn't overwritten unless we're printing + // something significantly larger than what people are normally + // printing in their badly written PLOG() statements. + errno = ECHILD; + string value = StringPrintf("Hello, %s!", "World"); + EXPECT_EQ(ECHILD, errno); +} + +TEST(StringPrintfTest, LargeBuf) { + // Check that the large buffer is handled correctly. + int n = 2048; + char* buf = new char[n+1]; + memset(buf, ' ', n); + buf[n] = 0; + string value = StringPrintf("%s", buf); + EXPECT_EQ(buf, value); + delete[] buf; +} + +} // anonymous namespace +} // namespace protobuf +} // namespace google diff --git a/cpp/thirdparty/protobuf-2.3.0/src/google/protobuf/stubs/structurally_valid.cc b/cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/stubs/structurally_valid.cc similarity index 100% rename from cpp/thirdparty/protobuf-2.3.0/src/google/protobuf/stubs/structurally_valid.cc rename to cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/stubs/structurally_valid.cc diff --git a/cpp/thirdparty/protobuf-2.3.0/src/google/protobuf/stubs/structurally_valid_unittest.cc b/cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/stubs/structurally_valid_unittest.cc similarity index 100% rename from cpp/thirdparty/protobuf-2.3.0/src/google/protobuf/stubs/structurally_valid_unittest.cc rename to cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/stubs/structurally_valid_unittest.cc diff --git a/cpp/thirdparty/protobuf-2.3.0/src/google/protobuf/stubs/strutil.cc b/cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/stubs/strutil.cc similarity index 95% rename from cpp/thirdparty/protobuf-2.3.0/src/google/protobuf/stubs/strutil.cc rename to cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/stubs/strutil.cc index bb658ba8d..917b3e9fb 100644 --- a/cpp/thirdparty/protobuf-2.3.0/src/google/protobuf/stubs/strutil.cc +++ b/cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/stubs/strutil.cc @@ -189,6 +189,44 @@ void SplitStringUsing(const string& full, SplitStringToIteratorUsing(full, delim, it); } +// Split a string using a character delimiter. Append the components +// to 'result'. If there are consecutive delimiters, this function +// will return corresponding empty strings. The string is split into +// at most the specified number of pieces greedily. This means that the +// last piece may possibly be split further. To split into as many pieces +// as possible, specify 0 as the number of pieces. +// +// If "full" is the empty string, yields an empty string as the only value. +// +// If "pieces" is negative for some reason, it returns the whole string +// ---------------------------------------------------------------------- +template +static inline +void SplitStringToIteratorAllowEmpty(const StringType& full, + const char* delim, + int pieces, + ITR& result) { + string::size_type begin_index, end_index; + begin_index = 0; + + for (int i = 0; (i < pieces-1) || (pieces == 0); i++) { + end_index = full.find_first_of(delim, begin_index); + if (end_index == string::npos) { + *result++ = full.substr(begin_index); + return; + } + *result++ = full.substr(begin_index, (end_index - begin_index)); + begin_index = end_index + 1; + } + *result++ = full.substr(begin_index); +} + +void SplitStringAllowEmpty(const string& full, const char* delim, + vector* result) { + back_insert_iterator > it(*result); + SplitStringToIteratorAllowEmpty(full, delim, 0, it); +} + // ---------------------------------------------------------------------- // JoinStrings() // This merges a vector of string components with delim inserted @@ -670,7 +708,14 @@ char *InternalFastHexToBuffer(uint64 value, char* buffer, int num_byte) { static const char *hexdigits = "0123456789abcdef"; buffer[num_byte] = '\0'; for (int i = num_byte - 1; i >= 0; i--) { +#ifdef _M_X64 + // MSVC x64 platform has a bug optimizing the uint32(value) in the #else + // block. Given that the uint32 cast was to improve performance on 32-bit + // platforms, we use 64-bit '&' directly. + buffer[i] = hexdigits[value & 0xf]; +#else buffer[i] = hexdigits[uint32(value) & 0xf]; +#endif value >>= 4; } return buffer; diff --git a/cpp/thirdparty/protobuf-2.3.0/src/google/protobuf/stubs/strutil.h b/cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/stubs/strutil.h similarity index 96% rename from cpp/thirdparty/protobuf-2.3.0/src/google/protobuf/stubs/strutil.h rename to cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/stubs/strutil.h index 777694b74..a401c63a9 100644 --- a/cpp/thirdparty/protobuf-2.3.0/src/google/protobuf/stubs/strutil.h +++ b/cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/stubs/strutil.h @@ -168,6 +168,18 @@ LIBPROTOBUF_EXPORT string StringReplace(const string& s, const string& oldsub, LIBPROTOBUF_EXPORT void SplitStringUsing(const string& full, const char* delim, vector* res); +// Split a string using one or more byte delimiters, presented +// as a nul-terminated c string. Append the components to 'result'. +// If there are consecutive delimiters, this function will return +// corresponding empty strings. If you want to drop the empty +// strings, try SplitStringUsing(). +// +// If "full" is the empty string, yields an empty string as the only value. +// ---------------------------------------------------------------------- +LIBPROTOBUF_EXPORT void SplitStringAllowEmpty(const string& full, + const char* delim, + vector* result); + // ---------------------------------------------------------------------- // JoinStrings() // These methods concatenate a vector of strings into a C++ string, using @@ -207,9 +219,7 @@ inline string JoinStrings(const vector& components, // hex digits, upper or lower case) to specify a Unicode code // point. The dest array will contain the UTF8-encoded version of // that code-point (e.g., if source contains \u2019, then dest will -// contain the three bytes 0xE2, 0x80, and 0x99). For the inverse -// transformation, use UniLib::UTF8EscapeString -// (util/utf8/unilib.h), not CEscapeString. +// contain the three bytes 0xE2, 0x80, and 0x99). // // Errors: In the first form of the call, errors are reported with // LOG(ERROR). The same is true for the second form of the call if @@ -455,5 +465,3 @@ LIBPROTOBUF_EXPORT double NoLocaleStrtod(const char* text, char** endptr); } // namespace google #endif // GOOGLE_PROTOBUF_STUBS_STRUTIL_H__ - - diff --git a/cpp/thirdparty/protobuf-2.3.0/src/google/protobuf/stubs/strutil_unittest.cc b/cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/stubs/strutil_unittest.cc similarity index 100% rename from cpp/thirdparty/protobuf-2.3.0/src/google/protobuf/stubs/strutil_unittest.cc rename to cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/stubs/strutil_unittest.cc diff --git a/cpp/thirdparty/protobuf-2.3.0/src/google/protobuf/stubs/substitute.cc b/cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/stubs/substitute.cc similarity index 99% rename from cpp/thirdparty/protobuf-2.3.0/src/google/protobuf/stubs/substitute.cc rename to cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/stubs/substitute.cc index b542aaa41..259245b3d 100644 --- a/cpp/thirdparty/protobuf-2.3.0/src/google/protobuf/stubs/substitute.cc +++ b/cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/stubs/substitute.cc @@ -32,7 +32,7 @@ #include #include -#include +#include namespace google { namespace protobuf { diff --git a/cpp/thirdparty/protobuf-2.3.0/src/google/protobuf/stubs/substitute.h b/cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/stubs/substitute.h similarity index 100% rename from cpp/thirdparty/protobuf-2.3.0/src/google/protobuf/stubs/substitute.h rename to cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/stubs/substitute.h diff --git a/cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/stubs/template_util.h b/cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/stubs/template_util.h new file mode 100644 index 000000000..4f30ffa3b --- /dev/null +++ b/cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/stubs/template_util.h @@ -0,0 +1,138 @@ +// Copyright 2005 Google Inc. +// All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +// ---- +// Author: lar@google.com (Laramie Leavitt) +// +// Template metaprogramming utility functions. +// +// This code is compiled directly on many platforms, including client +// platforms like Windows, Mac, and embedded systems. Before making +// any changes here, make sure that you're not breaking any platforms. +// +// +// The names choosen here reflect those used in tr1 and the boost::mpl +// library, there are similar operations used in the Loki library as +// well. I prefer the boost names for 2 reasons: +// 1. I think that portions of the Boost libraries are more likely to +// be included in the c++ standard. +// 2. It is not impossible that some of the boost libraries will be +// included in our own build in the future. +// Both of these outcomes means that we may be able to directly replace +// some of these with boost equivalents. +// +#ifndef GOOGLE_PROTOBUF_TEMPLATE_UTIL_H_ +#define GOOGLE_PROTOBUF_TEMPLATE_UTIL_H_ + +namespace google { +namespace protobuf { +namespace internal { + +// Types small_ and big_ are guaranteed such that sizeof(small_) < +// sizeof(big_) +typedef char small_; + +struct big_ { + char dummy[2]; +}; + +// Identity metafunction. +template +struct identity_ { + typedef T type; +}; + +// integral_constant, defined in tr1, is a wrapper for an integer +// value. We don't really need this generality; we could get away +// with hardcoding the integer type to bool. We use the fully +// general integer_constant for compatibility with tr1. + +template +struct integral_constant { + static const T value = v; + typedef T value_type; + typedef integral_constant type; +}; + +template const T integral_constant::value; + + +// Abbreviations: true_type and false_type are structs that represent boolean +// true and false values. Also define the boost::mpl versions of those names, +// true_ and false_. +typedef integral_constant true_type; +typedef integral_constant false_type; +typedef true_type true_; +typedef false_type false_; + +// if_ is a templatized conditional statement. +// if_ is a compile time evaluation of cond. +// if_<>::type contains A if cond is true, B otherwise. +template +struct if_{ + typedef A type; +}; + +template +struct if_ { + typedef B type; +}; + + +// type_equals_ is a template type comparator, similar to Loki IsSameType. +// type_equals_::value is true iff "A" is the same type as "B". +// +// New code should prefer base::is_same, defined in base/type_traits.h. +// It is functionally identical, but is_same is the standard spelling. +template +struct type_equals_ : public false_ { +}; + +template +struct type_equals_ : public true_ { +}; + +// and_ is a template && operator. +// and_::value evaluates "A::value && B::value". +template +struct and_ : public integral_constant { +}; + +// or_ is a template || operator. +// or_::value evaluates "A::value || B::value". +template +struct or_ : public integral_constant { +}; + + +} // namespace internal +} // namespace protobuf +} // namespace google + +#endif // GOOGLE_PROTOBUF_TEMPLATE_UTIL_H_ diff --git a/cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/stubs/template_util_unittest.cc b/cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/stubs/template_util_unittest.cc new file mode 100644 index 000000000..b1745e2bf --- /dev/null +++ b/cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/stubs/template_util_unittest.cc @@ -0,0 +1,130 @@ +// Copyright 2005 Google Inc. +// All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +// ---- +// Author: lar@google.com (Laramie Leavitt) +// +// These tests are really compile time tests. +// If you try to step through this in a debugger +// you will not see any evaluations, merely that +// value is assigned true or false sequentially. + +#include + +#include +#include + +namespace GOOGLE_NAMESPACE = google::protobuf::internal; + +namespace google { +namespace protobuf { +namespace internal { +namespace { + +TEST(TemplateUtilTest, TestSize) { + EXPECT_GT(sizeof(GOOGLE_NAMESPACE::big_), sizeof(GOOGLE_NAMESPACE::small_)); +} + +TEST(TemplateUtilTest, TestIntegralConstants) { + // test the built-in types. + EXPECT_TRUE(true_type::value); + EXPECT_FALSE(false_type::value); + + typedef integral_constant one_type; + EXPECT_EQ(1, one_type::value); +} + +TEST(TemplateUtilTest, TestTemplateIf) { + typedef if_::type if_true; + EXPECT_TRUE(if_true::value); + + typedef if_::type if_false; + EXPECT_FALSE(if_false::value); +} + +TEST(TemplateUtilTest, TestTemplateTypeEquals) { + // Check that the TemplateTypeEquals works correctly. + bool value = false; + + // Test the same type is true. + value = type_equals_::value; + EXPECT_TRUE(value); + + // Test different types are false. + value = type_equals_::value; + EXPECT_FALSE(value); + + // Test type aliasing. + typedef const int foo; + value = type_equals_::value; + EXPECT_TRUE(value); +} + +TEST(TemplateUtilTest, TestTemplateAndOr) { + // Check that the TemplateTypeEquals works correctly. + bool value = false; + + // Yes && Yes == true. + value = and_::value; + EXPECT_TRUE(value); + // Yes && No == false. + value = and_::value; + EXPECT_FALSE(value); + // No && Yes == false. + value = and_::value; + EXPECT_FALSE(value); + // No && No == false. + value = and_::value; + EXPECT_FALSE(value); + + // Yes || Yes == true. + value = or_::value; + EXPECT_TRUE(value); + // Yes || No == true. + value = or_::value; + EXPECT_TRUE(value); + // No || Yes == true. + value = or_::value; + EXPECT_TRUE(value); + // No || No == false. + value = or_::value; + EXPECT_FALSE(value); +} + +TEST(TemplateUtilTest, TestIdentity) { + EXPECT_TRUE( + (type_equals_::type, int>::value)); + EXPECT_TRUE( + (type_equals_::type, void>::value)); +} + +} // anonymous namespace +} // namespace internal +} // namespace protobuf +} // namespace google diff --git a/cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/stubs/type_traits.h b/cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/stubs/type_traits.h new file mode 100644 index 000000000..e41f5e6f6 --- /dev/null +++ b/cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/stubs/type_traits.h @@ -0,0 +1,336 @@ +// Copyright (c) 2006, Google Inc. +// All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +// ---- +// Author: Matt Austern +// +// This code is compiled directly on many platforms, including client +// platforms like Windows, Mac, and embedded systems. Before making +// any changes here, make sure that you're not breaking any platforms. +// +// Define a small subset of tr1 type traits. The traits we define are: +// is_integral +// is_floating_point +// is_pointer +// is_enum +// is_reference +// is_pod +// has_trivial_constructor +// has_trivial_copy +// has_trivial_assign +// has_trivial_destructor +// remove_const +// remove_volatile +// remove_cv +// remove_reference +// add_reference +// remove_pointer +// is_same +// is_convertible +// We can add more type traits as required. + +#ifndef GOOGLE_PROTOBUF_TYPE_TRAITS_H_ +#define GOOGLE_PROTOBUF_TYPE_TRAITS_H_ + +#include // For pair + +#include // For true_type and false_type + +namespace google { +namespace protobuf { +namespace internal { + +template struct is_integral; +template struct is_floating_point; +template struct is_pointer; +// MSVC can't compile this correctly, and neither can gcc 3.3.5 (at least) +#if !defined(_MSC_VER) && !(defined(__GNUC__) && __GNUC__ <= 3) +// is_enum uses is_convertible, which is not available on MSVC. +template struct is_enum; +#endif +template struct is_reference; +template struct is_pod; +template struct has_trivial_constructor; +template struct has_trivial_copy; +template struct has_trivial_assign; +template struct has_trivial_destructor; +template struct remove_const; +template struct remove_volatile; +template struct remove_cv; +template struct remove_reference; +template struct add_reference; +template struct remove_pointer; +template struct is_same; +#if !defined(_MSC_VER) && !(defined(__GNUC__) && __GNUC__ <= 3) +template struct is_convertible; +#endif + +// is_integral is false except for the built-in integer types. A +// cv-qualified type is integral if and only if the underlying type is. +template struct is_integral : false_type { }; +template<> struct is_integral : true_type { }; +template<> struct is_integral : true_type { }; +template<> struct is_integral : true_type { }; +template<> struct is_integral : true_type { }; +#if defined(_MSC_VER) +// wchar_t is not by default a distinct type from unsigned short in +// Microsoft C. +// See http://msdn2.microsoft.com/en-us/library/dh8che7s(VS.80).aspx +template<> struct is_integral<__wchar_t> : true_type { }; +#else +template<> struct is_integral : true_type { }; +#endif +template<> struct is_integral : true_type { }; +template<> struct is_integral : true_type { }; +template<> struct is_integral : true_type { }; +template<> struct is_integral : true_type { }; +template<> struct is_integral : true_type { }; +template<> struct is_integral : true_type { }; +#ifdef HAVE_LONG_LONG +template<> struct is_integral : true_type { }; +template<> struct is_integral : true_type { }; +#endif +template struct is_integral : is_integral { }; +template struct is_integral : is_integral { }; +template struct is_integral : is_integral { }; + +// is_floating_point is false except for the built-in floating-point types. +// A cv-qualified type is integral if and only if the underlying type is. +template struct is_floating_point : false_type { }; +template<> struct is_floating_point : true_type { }; +template<> struct is_floating_point : true_type { }; +template<> struct is_floating_point : true_type { }; +template struct is_floating_point + : is_floating_point { }; +template struct is_floating_point + : is_floating_point { }; +template struct is_floating_point + : is_floating_point { }; + +// is_pointer is false except for pointer types. A cv-qualified type (e.g. +// "int* const", as opposed to "int const*") is cv-qualified if and only if +// the underlying type is. +template struct is_pointer : false_type { }; +template struct is_pointer : true_type { }; +template struct is_pointer : is_pointer { }; +template struct is_pointer : is_pointer { }; +template struct is_pointer : is_pointer { }; + +#if !defined(_MSC_VER) && !(defined(__GNUC__) && __GNUC__ <= 3) + +namespace internal { + +template struct is_class_or_union { + template static small_ tester(void (U::*)()); + template static big_ tester(...); + static const bool value = sizeof(tester(0)) == sizeof(small_); +}; + +// is_convertible chokes if the first argument is an array. That's why +// we use add_reference here. +template struct is_enum_impl + : is_convertible::type, int> { }; + +template struct is_enum_impl : false_type { }; + +} // namespace internal + +// Specified by TR1 [4.5.1] primary type categories. + +// Implementation note: +// +// Each type is either void, integral, floating point, array, pointer, +// reference, member object pointer, member function pointer, enum, +// union or class. Out of these, only integral, floating point, reference, +// class and enum types are potentially convertible to int. Therefore, +// if a type is not a reference, integral, floating point or class and +// is convertible to int, it's a enum. Adding cv-qualification to a type +// does not change whether it's an enum. +// +// Is-convertible-to-int check is done only if all other checks pass, +// because it can't be used with some types (e.g. void or classes with +// inaccessible conversion operators). +template struct is_enum + : internal::is_enum_impl< + is_same::value || + is_integral::value || + is_floating_point::value || + is_reference::value || + internal::is_class_or_union::value, + T> { }; + +template struct is_enum : is_enum { }; +template struct is_enum : is_enum { }; +template struct is_enum : is_enum { }; + +#endif + +// is_reference is false except for reference types. +template struct is_reference : false_type {}; +template struct is_reference : true_type {}; + + +// We can't get is_pod right without compiler help, so fail conservatively. +// We will assume it's false except for arithmetic types, enumerations, +// pointers and cv-qualified versions thereof. Note that std::pair +// is not a POD even if T and U are PODs. +template struct is_pod + : integral_constant::value || + is_floating_point::value || +#if !defined(_MSC_VER) && !(defined(__GNUC__) && __GNUC__ <= 3) + // is_enum is not available on MSVC. + is_enum::value || +#endif + is_pointer::value)> { }; +template struct is_pod : is_pod { }; +template struct is_pod : is_pod { }; +template struct is_pod : is_pod { }; + + +// We can't get has_trivial_constructor right without compiler help, so +// fail conservatively. We will assume it's false except for: (1) types +// for which is_pod is true. (2) std::pair of types with trivial +// constructors. (3) array of a type with a trivial constructor. +// (4) const versions thereof. +template struct has_trivial_constructor : is_pod { }; +template struct has_trivial_constructor > + : integral_constant::value && + has_trivial_constructor::value)> { }; +template struct has_trivial_constructor + : has_trivial_constructor { }; +template struct has_trivial_constructor + : has_trivial_constructor { }; + +// We can't get has_trivial_copy right without compiler help, so fail +// conservatively. We will assume it's false except for: (1) types +// for which is_pod is true. (2) std::pair of types with trivial copy +// constructors. (3) array of a type with a trivial copy constructor. +// (4) const versions thereof. +template struct has_trivial_copy : is_pod { }; +template struct has_trivial_copy > + : integral_constant::value && + has_trivial_copy::value)> { }; +template struct has_trivial_copy + : has_trivial_copy { }; +template struct has_trivial_copy : has_trivial_copy { }; + +// We can't get has_trivial_assign right without compiler help, so fail +// conservatively. We will assume it's false except for: (1) types +// for which is_pod is true. (2) std::pair of types with trivial copy +// constructors. (3) array of a type with a trivial assign constructor. +template struct has_trivial_assign : is_pod { }; +template struct has_trivial_assign > + : integral_constant::value && + has_trivial_assign::value)> { }; +template struct has_trivial_assign + : has_trivial_assign { }; + +// We can't get has_trivial_destructor right without compiler help, so +// fail conservatively. We will assume it's false except for: (1) types +// for which is_pod is true. (2) std::pair of types with trivial +// destructors. (3) array of a type with a trivial destructor. +// (4) const versions thereof. +template struct has_trivial_destructor : is_pod { }; +template struct has_trivial_destructor > + : integral_constant::value && + has_trivial_destructor::value)> { }; +template struct has_trivial_destructor + : has_trivial_destructor { }; +template struct has_trivial_destructor + : has_trivial_destructor { }; + +// Specified by TR1 [4.7.1] +template struct remove_const { typedef T type; }; +template struct remove_const { typedef T type; }; +template struct remove_volatile { typedef T type; }; +template struct remove_volatile { typedef T type; }; +template struct remove_cv { + typedef typename remove_const::type>::type type; +}; + + +// Specified by TR1 [4.7.2] Reference modifications. +template struct remove_reference { typedef T type; }; +template struct remove_reference { typedef T type; }; + +template struct add_reference { typedef T& type; }; +template struct add_reference { typedef T& type; }; + +// Specified by TR1 [4.7.4] Pointer modifications. +template struct remove_pointer { typedef T type; }; +template struct remove_pointer { typedef T type; }; +template struct remove_pointer { typedef T type; }; +template struct remove_pointer { typedef T type; }; +template struct remove_pointer { + typedef T type; }; + +// Specified by TR1 [4.6] Relationships between types +template struct is_same : public false_type { }; +template struct is_same : public true_type { }; + +// Specified by TR1 [4.6] Relationships between types +#if !defined(_MSC_VER) && !(defined(__GNUC__) && __GNUC__ <= 3) +namespace internal { + +// This class is an implementation detail for is_convertible, and you +// don't need to know how it works to use is_convertible. For those +// who care: we declare two different functions, one whose argument is +// of type To and one with a variadic argument list. We give them +// return types of different size, so we can use sizeof to trick the +// compiler into telling us which function it would have chosen if we +// had called it with an argument of type From. See Alexandrescu's +// _Modern C++ Design_ for more details on this sort of trick. + +template +struct ConvertHelper { + static small_ Test(To); + static big_ Test(...); + static From Create(); +}; +} // namespace internal + +// Inherits from true_type if From is convertible to To, false_type otherwise. +template +struct is_convertible + : integral_constant::Test( + internal::ConvertHelper::Create())) + == sizeof(small_)> { +}; +#endif + +} // namespace internal +} // namespace protobuf +} // namespace google + +#endif // GOOGLE_PROTOBUF_TYPE_TRAITS_H_ diff --git a/cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/stubs/type_traits_unittest.cc b/cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/stubs/type_traits_unittest.cc new file mode 100644 index 000000000..7a8cbfb8b --- /dev/null +++ b/cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/stubs/type_traits_unittest.cc @@ -0,0 +1,628 @@ +// Copyright (c) 2006, Google Inc. +// All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +// ---- +// Author: Matt Austern + +#include + +#include // for exit() +#include +#include +#include + +#include +#include + +typedef int int32; +typedef long int64; + +using std::string; +using std::vector; +using std::pair; + + +// This assertion produces errors like "error: invalid use of +// incomplete type 'struct ::AssertTypesEq'" +// when it fails. +template struct AssertTypesEq; +template struct AssertTypesEq {}; +#define COMPILE_ASSERT_TYPES_EQ(T, U) static_cast(AssertTypesEq()) + +// A user-defined POD type. +struct A { + int n_; +}; + +// A user-defined non-POD type with a trivial copy constructor. +class B { + public: + explicit B(int n) : n_(n) { } + private: + int n_; +}; + +// Another user-defined non-POD type with a trivial copy constructor. +// We will explicitly declare C to have a trivial copy constructor +// by specializing has_trivial_copy. +class C { + public: + explicit C(int n) : n_(n) { } + private: + int n_; +}; + +namespace google { +namespace protobuf { +namespace internal { +template<> struct has_trivial_copy : true_type { }; +} // namespace internal +} // namespace protobuf +} // namespace google + +// Another user-defined non-POD type with a trivial assignment operator. +// We will explicitly declare C to have a trivial assignment operator +// by specializing has_trivial_assign. +class D { + public: + explicit D(int n) : n_(n) { } + private: + int n_; +}; + +namespace google { +namespace protobuf { +namespace internal { +template<> struct has_trivial_assign : true_type { }; +} // namespace internal +} // namespace protobuf +} // namespace google + +// Another user-defined non-POD type with a trivial constructor. +// We will explicitly declare E to have a trivial constructor +// by specializing has_trivial_constructor. +class E { + public: + int n_; +}; + +namespace google { +namespace protobuf { +namespace internal { +template<> struct has_trivial_constructor : true_type { }; +} // namespace internal +} // namespace protobuf +} // namespace google + +// Another user-defined non-POD type with a trivial destructor. +// We will explicitly declare E to have a trivial destructor +// by specializing has_trivial_destructor. +class F { + public: + explicit F(int n) : n_(n) { } + private: + int n_; +}; + +namespace google { +namespace protobuf { +namespace internal { +template<> struct has_trivial_destructor : true_type { }; +} // namespace internal +} // namespace protobuf +} // namespace google + +enum G {}; + +union H {}; + +class I { + public: + operator int() const; +}; + +class J { + private: + operator int() const; +}; + +namespace google { +namespace protobuf { +namespace internal { +namespace { + +// A base class and a derived class that inherits from it, used for +// testing conversion type traits. +class Base { + public: + virtual ~Base() { } +}; + +class Derived : public Base { +}; + +TEST(TypeTraitsTest, TestIsInteger) { + // Verify that is_integral is true for all integer types. + EXPECT_TRUE(is_integral::value); + EXPECT_TRUE(is_integral::value); + EXPECT_TRUE(is_integral::value); + EXPECT_TRUE(is_integral::value); + EXPECT_TRUE(is_integral::value); + EXPECT_TRUE(is_integral::value); + EXPECT_TRUE(is_integral::value); + EXPECT_TRUE(is_integral::value); + EXPECT_TRUE(is_integral::value); + EXPECT_TRUE(is_integral::value); + EXPECT_TRUE(is_integral::value); + + // Verify that is_integral is false for a few non-integer types. + EXPECT_FALSE(is_integral::value); + EXPECT_FALSE(is_integral::value); + EXPECT_FALSE(is_integral::value); + EXPECT_FALSE(is_integral::value); + EXPECT_FALSE(is_integral::value); + EXPECT_FALSE((is_integral >::value)); + + // Verify that cv-qualified integral types are still integral, and + // cv-qualified non-integral types are still non-integral. + EXPECT_TRUE(is_integral::value); + EXPECT_TRUE(is_integral::value); + EXPECT_TRUE(is_integral::value); + EXPECT_FALSE(is_integral::value); + EXPECT_FALSE(is_integral::value); + EXPECT_FALSE(is_integral::value); +} + +TEST(TypeTraitsTest, TestIsFloating) { + // Verify that is_floating_point is true for all floating-point types. + EXPECT_TRUE(is_floating_point::value); + EXPECT_TRUE(is_floating_point::value); + EXPECT_TRUE(is_floating_point::value); + + // Verify that is_floating_point is false for a few non-float types. + EXPECT_FALSE(is_floating_point::value); + EXPECT_FALSE(is_floating_point::value); + EXPECT_FALSE(is_floating_point::value); + EXPECT_FALSE(is_floating_point::value); + EXPECT_FALSE(is_floating_point::value); + EXPECT_FALSE((is_floating_point >::value)); + + // Verify that cv-qualified floating point types are still floating, and + // cv-qualified non-floating types are still non-floating. + EXPECT_TRUE(is_floating_point::value); + EXPECT_TRUE(is_floating_point::value); + EXPECT_TRUE(is_floating_point::value); + EXPECT_FALSE(is_floating_point::value); + EXPECT_FALSE(is_floating_point::value); + EXPECT_FALSE(is_floating_point::value); +} + +TEST(TypeTraitsTest, TestIsPointer) { + // Verify that is_pointer is true for some pointer types. + EXPECT_TRUE(is_pointer::value); + EXPECT_TRUE(is_pointer::value); + EXPECT_TRUE(is_pointer::value); + EXPECT_TRUE(is_pointer::value); + EXPECT_TRUE(is_pointer::value); + + // Verify that is_pointer is false for some non-pointer types. + EXPECT_FALSE(is_pointer::value); + EXPECT_FALSE(is_pointer::value); + EXPECT_FALSE(is_pointer::value); + EXPECT_FALSE(is_pointer >::value); + EXPECT_FALSE(is_pointer::value); + + // A function pointer is a pointer, but a function type, or a function + // reference type, is not. + EXPECT_TRUE(is_pointer::value); + EXPECT_FALSE(is_pointer::value); + EXPECT_FALSE(is_pointer::value); + + // Verify that is_pointer is true for some cv-qualified pointer types, + // and false for some cv-qualified non-pointer types. + EXPECT_TRUE(is_pointer::value); + EXPECT_TRUE(is_pointer::value); + EXPECT_TRUE(is_pointer::value); + EXPECT_FALSE(is_pointer::value); + EXPECT_FALSE(is_pointer >::value); + EXPECT_FALSE(is_pointer::value); +} + +TEST(TypeTraitsTest, TestIsEnum) { +// is_enum isn't supported on MSVC or gcc 3.x +#if !defined(_MSC_VER) && !(defined(__GNUC__) && __GNUC__ <= 3) + // Verify that is_enum is true for enum types. + EXPECT_TRUE(is_enum::value); + EXPECT_TRUE(is_enum::value); + EXPECT_TRUE(is_enum::value); + EXPECT_TRUE(is_enum::value); + + // Verify that is_enum is false for a few non-enum types. + EXPECT_FALSE(is_enum::value); + EXPECT_FALSE(is_enum::value); + EXPECT_FALSE(is_enum::value); + EXPECT_FALSE(is_enum::value); + EXPECT_FALSE(is_enum::value); + EXPECT_FALSE(is_enum::value); + EXPECT_FALSE(is_enum::value); + EXPECT_FALSE(is_enum::value); + EXPECT_FALSE(is_enum::value); + EXPECT_FALSE(is_enum::value); + EXPECT_FALSE(is_enum::value); + EXPECT_FALSE(is_enum::value); + EXPECT_FALSE(is_enum::value); + EXPECT_FALSE(is_enum::value); + EXPECT_FALSE(is_enum::value); + EXPECT_FALSE(is_enum::value); + EXPECT_FALSE(is_enum::value); +#endif +} + +TEST(TypeTraitsTest, TestIsReference) { + // Verifies that is_reference is true for all reference types. + typedef float& RefFloat; + EXPECT_TRUE(is_reference::value); + EXPECT_TRUE(is_reference::value); + EXPECT_TRUE(is_reference::value); + EXPECT_TRUE(is_reference::value); + EXPECT_TRUE(is_reference::value); + EXPECT_TRUE(is_reference::value); + EXPECT_TRUE(is_reference::value); + EXPECT_TRUE(is_reference::value); + + + // Verifies that is_reference is false for all non-reference types. + EXPECT_FALSE(is_reference::value); + EXPECT_FALSE(is_reference::value); + EXPECT_FALSE(is_reference::value); + EXPECT_FALSE(is_reference::value); + EXPECT_FALSE(is_reference::value); + EXPECT_FALSE(is_reference::value); + EXPECT_FALSE(is_reference::value); +} + +TEST(TypeTraitsTest, TestAddReference) { + COMPILE_ASSERT_TYPES_EQ(int&, add_reference::type); + COMPILE_ASSERT_TYPES_EQ(const int&, add_reference::type); + COMPILE_ASSERT_TYPES_EQ(volatile int&, + add_reference::type); + COMPILE_ASSERT_TYPES_EQ(const volatile int&, + add_reference::type); + COMPILE_ASSERT_TYPES_EQ(int&, add_reference::type); + COMPILE_ASSERT_TYPES_EQ(const int&, add_reference::type); + COMPILE_ASSERT_TYPES_EQ(volatile int&, + add_reference::type); + COMPILE_ASSERT_TYPES_EQ(const volatile int&, + add_reference::type); +} + +TEST(TypeTraitsTest, TestIsPod) { + // Verify that arithmetic types and pointers are marked as PODs. + EXPECT_TRUE(is_pod::value); + EXPECT_TRUE(is_pod::value); + EXPECT_TRUE(is_pod::value); + EXPECT_TRUE(is_pod::value); + EXPECT_TRUE(is_pod::value); + EXPECT_TRUE(is_pod::value); + EXPECT_TRUE(is_pod::value); + EXPECT_TRUE(is_pod::value); + EXPECT_TRUE(is_pod::value); + EXPECT_TRUE(is_pod::value); + EXPECT_TRUE(is_pod::value); + EXPECT_TRUE(is_pod::value); + EXPECT_TRUE(is_pod::value); + EXPECT_TRUE(is_pod::value); + EXPECT_TRUE(is_pod::value); + EXPECT_TRUE(is_pod::value); + EXPECT_TRUE(is_pod::value); + EXPECT_TRUE(is_pod::value); + EXPECT_TRUE(is_pod::value); + EXPECT_TRUE(is_pod::value); + EXPECT_TRUE(is_pod::value); +#if !defined(_MSC_VER) && !(defined(__GNUC__) && __GNUC__ <= 3) + EXPECT_TRUE(is_pod::value); + EXPECT_TRUE(is_pod::value); + EXPECT_TRUE(is_pod::value); + EXPECT_TRUE(is_pod::value); +#endif + + // Verify that some non-POD types are not marked as PODs. + EXPECT_FALSE(is_pod::value); + EXPECT_FALSE(is_pod::value); + EXPECT_FALSE((is_pod >::value)); + EXPECT_FALSE(is_pod::value); + EXPECT_FALSE(is_pod::value); + EXPECT_FALSE(is_pod::value); + EXPECT_FALSE(is_pod::value); + EXPECT_FALSE(is_pod::value); + EXPECT_FALSE(is_pod::value); +} + +TEST(TypeTraitsTest, TestHasTrivialConstructor) { + // Verify that arithmetic types and pointers have trivial constructors. + EXPECT_TRUE(has_trivial_constructor::value); + EXPECT_TRUE(has_trivial_constructor::value); + EXPECT_TRUE(has_trivial_constructor::value); + EXPECT_TRUE(has_trivial_constructor::value); + EXPECT_TRUE(has_trivial_constructor::value); + EXPECT_TRUE(has_trivial_constructor::value); + EXPECT_TRUE(has_trivial_constructor::value); + EXPECT_TRUE(has_trivial_constructor::value); + EXPECT_TRUE(has_trivial_constructor::value); + EXPECT_TRUE(has_trivial_constructor::value); + EXPECT_TRUE(has_trivial_constructor::value); + EXPECT_TRUE(has_trivial_constructor::value); + EXPECT_TRUE(has_trivial_constructor::value); + EXPECT_TRUE(has_trivial_constructor::value); + EXPECT_TRUE(has_trivial_constructor::value); + EXPECT_TRUE(has_trivial_constructor::value); + EXPECT_TRUE(has_trivial_constructor::value); + EXPECT_TRUE(has_trivial_constructor::value); + + // Verify that pairs and arrays of such types have trivial + // constructors. + typedef int int10[10]; + EXPECT_TRUE((has_trivial_constructor >::value)); + EXPECT_TRUE(has_trivial_constructor::value); + + // Verify that pairs of types without trivial constructors + // are not marked as trivial. + EXPECT_FALSE((has_trivial_constructor >::value)); + EXPECT_FALSE((has_trivial_constructor >::value)); + + // Verify that types without trivial constructors are + // correctly marked as such. + EXPECT_FALSE(has_trivial_constructor::value); + EXPECT_FALSE(has_trivial_constructor >::value); + + // Verify that E, which we have declared to have a trivial + // constructor, is correctly marked as such. + EXPECT_TRUE(has_trivial_constructor::value); +} + +TEST(TypeTraitsTest, TestHasTrivialCopy) { + // Verify that arithmetic types and pointers have trivial copy + // constructors. + EXPECT_TRUE(has_trivial_copy::value); + EXPECT_TRUE(has_trivial_copy::value); + EXPECT_TRUE(has_trivial_copy::value); + EXPECT_TRUE(has_trivial_copy::value); + EXPECT_TRUE(has_trivial_copy::value); + EXPECT_TRUE(has_trivial_copy::value); + EXPECT_TRUE(has_trivial_copy::value); + EXPECT_TRUE(has_trivial_copy::value); + EXPECT_TRUE(has_trivial_copy::value); + EXPECT_TRUE(has_trivial_copy::value); + EXPECT_TRUE(has_trivial_copy::value); + EXPECT_TRUE(has_trivial_copy::value); + EXPECT_TRUE(has_trivial_copy::value); + EXPECT_TRUE(has_trivial_copy::value); + EXPECT_TRUE(has_trivial_copy::value); + EXPECT_TRUE(has_trivial_copy::value); + EXPECT_TRUE(has_trivial_copy::value); + EXPECT_TRUE(has_trivial_copy::value); + + // Verify that pairs and arrays of such types have trivial + // copy constructors. + typedef int int10[10]; + EXPECT_TRUE((has_trivial_copy >::value)); + EXPECT_TRUE(has_trivial_copy::value); + + // Verify that pairs of types without trivial copy constructors + // are not marked as trivial. + EXPECT_FALSE((has_trivial_copy >::value)); + EXPECT_FALSE((has_trivial_copy >::value)); + + // Verify that types without trivial copy constructors are + // correctly marked as such. + EXPECT_FALSE(has_trivial_copy::value); + EXPECT_FALSE(has_trivial_copy >::value); + + // Verify that C, which we have declared to have a trivial + // copy constructor, is correctly marked as such. + EXPECT_TRUE(has_trivial_copy::value); +} + +TEST(TypeTraitsTest, TestHasTrivialAssign) { + // Verify that arithmetic types and pointers have trivial assignment + // operators. + EXPECT_TRUE(has_trivial_assign::value); + EXPECT_TRUE(has_trivial_assign::value); + EXPECT_TRUE(has_trivial_assign::value); + EXPECT_TRUE(has_trivial_assign::value); + EXPECT_TRUE(has_trivial_assign::value); + EXPECT_TRUE(has_trivial_assign::value); + EXPECT_TRUE(has_trivial_assign::value); + EXPECT_TRUE(has_trivial_assign::value); + EXPECT_TRUE(has_trivial_assign::value); + EXPECT_TRUE(has_trivial_assign::value); + EXPECT_TRUE(has_trivial_assign::value); + EXPECT_TRUE(has_trivial_assign::value); + EXPECT_TRUE(has_trivial_assign::value); + EXPECT_TRUE(has_trivial_assign::value); + EXPECT_TRUE(has_trivial_assign::value); + EXPECT_TRUE(has_trivial_assign::value); + EXPECT_TRUE(has_trivial_assign::value); + EXPECT_TRUE(has_trivial_assign::value); + + // Verify that pairs and arrays of such types have trivial + // assignment operators. + typedef int int10[10]; + EXPECT_TRUE((has_trivial_assign >::value)); + EXPECT_TRUE(has_trivial_assign::value); + + // Verify that pairs of types without trivial assignment operators + // are not marked as trivial. + EXPECT_FALSE((has_trivial_assign >::value)); + EXPECT_FALSE((has_trivial_assign >::value)); + + // Verify that types without trivial assignment operators are + // correctly marked as such. + EXPECT_FALSE(has_trivial_assign::value); + EXPECT_FALSE(has_trivial_assign >::value); + + // Verify that D, which we have declared to have a trivial + // assignment operator, is correctly marked as such. + EXPECT_TRUE(has_trivial_assign::value); +} + +TEST(TypeTraitsTest, TestHasTrivialDestructor) { + // Verify that arithmetic types and pointers have trivial destructors. + EXPECT_TRUE(has_trivial_destructor::value); + EXPECT_TRUE(has_trivial_destructor::value); + EXPECT_TRUE(has_trivial_destructor::value); + EXPECT_TRUE(has_trivial_destructor::value); + EXPECT_TRUE(has_trivial_destructor::value); + EXPECT_TRUE(has_trivial_destructor::value); + EXPECT_TRUE(has_trivial_destructor::value); + EXPECT_TRUE(has_trivial_destructor::value); + EXPECT_TRUE(has_trivial_destructor::value); + EXPECT_TRUE(has_trivial_destructor::value); + EXPECT_TRUE(has_trivial_destructor::value); + EXPECT_TRUE(has_trivial_destructor::value); + EXPECT_TRUE(has_trivial_destructor::value); + EXPECT_TRUE(has_trivial_destructor::value); + EXPECT_TRUE(has_trivial_destructor::value); + EXPECT_TRUE(has_trivial_destructor::value); + EXPECT_TRUE(has_trivial_destructor::value); + EXPECT_TRUE(has_trivial_destructor::value); + + // Verify that pairs and arrays of such types have trivial + // destructors. + typedef int int10[10]; + EXPECT_TRUE((has_trivial_destructor >::value)); + EXPECT_TRUE(has_trivial_destructor::value); + + // Verify that pairs of types without trivial destructors + // are not marked as trivial. + EXPECT_FALSE((has_trivial_destructor >::value)); + EXPECT_FALSE((has_trivial_destructor >::value)); + + // Verify that types without trivial destructors are + // correctly marked as such. + EXPECT_FALSE(has_trivial_destructor::value); + EXPECT_FALSE(has_trivial_destructor >::value); + + // Verify that F, which we have declared to have a trivial + // destructor, is correctly marked as such. + EXPECT_TRUE(has_trivial_destructor::value); +} + +// Tests remove_pointer. +TEST(TypeTraitsTest, TestRemovePointer) { + COMPILE_ASSERT_TYPES_EQ(int, remove_pointer::type); + COMPILE_ASSERT_TYPES_EQ(int, remove_pointer::type); + COMPILE_ASSERT_TYPES_EQ(const int, remove_pointer::type); + COMPILE_ASSERT_TYPES_EQ(int, remove_pointer::type); + COMPILE_ASSERT_TYPES_EQ(int, remove_pointer::type); +} + +TEST(TypeTraitsTest, TestRemoveConst) { + COMPILE_ASSERT_TYPES_EQ(int, remove_const::type); + COMPILE_ASSERT_TYPES_EQ(int, remove_const::type); + COMPILE_ASSERT_TYPES_EQ(int *, remove_const::type); + // TR1 examples. + COMPILE_ASSERT_TYPES_EQ(const int *, remove_const::type); + COMPILE_ASSERT_TYPES_EQ(volatile int, + remove_const::type); +} + +TEST(TypeTraitsTest, TestRemoveVolatile) { + COMPILE_ASSERT_TYPES_EQ(int, remove_volatile::type); + COMPILE_ASSERT_TYPES_EQ(int, remove_volatile::type); + COMPILE_ASSERT_TYPES_EQ(int *, remove_volatile::type); + // TR1 examples. + COMPILE_ASSERT_TYPES_EQ(volatile int *, + remove_volatile::type); + COMPILE_ASSERT_TYPES_EQ(const int, + remove_volatile::type); +} + +TEST(TypeTraitsTest, TestRemoveCV) { + COMPILE_ASSERT_TYPES_EQ(int, remove_cv::type); + COMPILE_ASSERT_TYPES_EQ(int, remove_cv::type); + COMPILE_ASSERT_TYPES_EQ(int, remove_cv::type); + COMPILE_ASSERT_TYPES_EQ(int *, remove_cv::type); + // TR1 examples. + COMPILE_ASSERT_TYPES_EQ(const volatile int *, + remove_cv::type); + COMPILE_ASSERT_TYPES_EQ(int, + remove_cv::type); +} + +TEST(TypeTraitsTest, TestRemoveReference) { + COMPILE_ASSERT_TYPES_EQ(int, remove_reference::type); + COMPILE_ASSERT_TYPES_EQ(int, remove_reference::type); + COMPILE_ASSERT_TYPES_EQ(const int, remove_reference::type); + COMPILE_ASSERT_TYPES_EQ(int*, remove_reference::type); +} + +TEST(TypeTraitsTest, TestIsSame) { + EXPECT_TRUE((is_same::value)); + EXPECT_FALSE((is_same::value)); + EXPECT_FALSE((is_same::value)); + EXPECT_FALSE((is_same::value)); + + EXPECT_TRUE((is_same::value)); + EXPECT_FALSE((is_same::value)); + EXPECT_FALSE((is_same::value)); + + EXPECT_TRUE((is_same::value)); + EXPECT_TRUE((is_same::value)); + EXPECT_FALSE((is_same::value)); + EXPECT_FALSE((is_same::value)); + EXPECT_FALSE((is_same::value)); + EXPECT_FALSE((is_same::value)); + + EXPECT_TRUE((is_same::value)); + EXPECT_TRUE((is_same::value)); + EXPECT_FALSE((is_same::value)); + EXPECT_FALSE((is_same::value)); +} + +TEST(TypeTraitsTest, TestConvertible) { +#if !defined(_MSC_VER) && !(defined(__GNUC__) && __GNUC__ <= 3) + EXPECT_TRUE((is_convertible::value)); + EXPECT_TRUE((is_convertible::value)); + EXPECT_TRUE((is_convertible::value)); + + EXPECT_TRUE((is_convertible::value)); + EXPECT_FALSE((is_convertible::value)); + + EXPECT_TRUE((is_convertible::value)); + EXPECT_FALSE((is_convertible::value)); + EXPECT_TRUE((is_convertible::value)); + EXPECT_FALSE((is_convertible::value)); +#endif +} + +} // anonymous namespace +} // namespace internal +} // namespace protobuf +} // namespace google diff --git a/cpp/thirdparty/protobuf-2.3.0/src/google/protobuf/test_util.cc b/cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/test_util.cc similarity index 90% rename from cpp/thirdparty/protobuf-2.3.0/src/google/protobuf/test_util.cc rename to cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/test_util.cc index af8b3909b..a9666fe40 100644 --- a/cpp/thirdparty/protobuf-2.3.0/src/google/protobuf/test_util.cc +++ b/cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/test_util.cc @@ -50,6 +50,13 @@ namespace google { namespace protobuf { void TestUtil::SetAllFields(unittest::TestAllTypes* message) { + SetOptionalFields(message); + AddRepeatedFields1(message); + AddRepeatedFields2(message); + SetDefaultFields(message); +} + +void TestUtil::SetOptionalFields(unittest::TestAllTypes* message) { message->set_optional_int32 (101); message->set_optional_int64 (102); message->set_optional_uint32 (103); @@ -66,10 +73,12 @@ void TestUtil::SetAllFields(unittest::TestAllTypes* message) { message->set_optional_string ("115"); message->set_optional_bytes ("116"); - message->mutable_optionalgroup ()->set_a(117); - message->mutable_optional_nested_message ()->set_bb(118); - message->mutable_optional_foreign_message()->set_c(119); - message->mutable_optional_import_message ()->set_d(120); + message->mutable_optionalgroup ()->set_a(117); + message->mutable_optional_nested_message ()->set_bb(118); + message->mutable_optional_foreign_message ()->set_c(119); + message->mutable_optional_import_message ()->set_d(120); + message->mutable_optional_public_import_message()->set_e(126); + message->mutable_optional_lazy_message ()->set_bb(127); message->set_optional_nested_enum (unittest::TestAllTypes::BAZ); message->set_optional_foreign_enum(unittest::FOREIGN_BAZ ); @@ -87,9 +96,11 @@ void TestUtil::SetAllFields(unittest::TestAllTypes* message) { message->GetDescriptor()->FindFieldByName("optional_cord"), "125"); #endif // !PROTOBUF_TEST_NO_DESCRIPTORS +} - // ----------------------------------------------------------------- +// ------------------------------------------------------------------- +void TestUtil::AddRepeatedFields1(unittest::TestAllTypes* message) { message->add_repeated_int32 (201); message->add_repeated_int64 (202); message->add_repeated_uint32 (203); @@ -110,6 +121,7 @@ void TestUtil::SetAllFields(unittest::TestAllTypes* message) { message->add_repeated_nested_message ()->set_bb(218); message->add_repeated_foreign_message()->set_c(219); message->add_repeated_import_message ()->set_d(220); + message->add_repeated_lazy_message ()->set_bb(227); message->add_repeated_nested_enum (unittest::TestAllTypes::BAR); message->add_repeated_foreign_enum(unittest::FOREIGN_BAR ); @@ -125,7 +137,9 @@ void TestUtil::SetAllFields(unittest::TestAllTypes* message) { message->GetDescriptor()->FindFieldByName("repeated_cord"), "225"); #endif // !PROTOBUF_TEST_NO_DESCRIPTORS +} +void TestUtil::AddRepeatedFields2(unittest::TestAllTypes* message) { // Add a second one of each field. message->add_repeated_int32 (301); message->add_repeated_int64 (302); @@ -147,6 +161,7 @@ void TestUtil::SetAllFields(unittest::TestAllTypes* message) { message->add_repeated_nested_message ()->set_bb(318); message->add_repeated_foreign_message()->set_c(319); message->add_repeated_import_message ()->set_d(320); + message->add_repeated_lazy_message ()->set_bb(327); message->add_repeated_nested_enum (unittest::TestAllTypes::BAZ); message->add_repeated_foreign_enum(unittest::FOREIGN_BAZ ); @@ -162,9 +177,11 @@ void TestUtil::SetAllFields(unittest::TestAllTypes* message) { message->GetDescriptor()->FindFieldByName("repeated_cord"), "325"); #endif // !PROTOBUF_TEST_NO_DESCRIPTORS +} - // ----------------------------------------------------------------- +// ------------------------------------------------------------------- +void TestUtil::SetDefaultFields(unittest::TestAllTypes* message) { message->set_default_int32 (401); message->set_default_int64 (402); message->set_default_uint32 (403); @@ -220,6 +237,7 @@ void TestUtil::ModifyRepeatedFields(unittest::TestAllTypes* message) { message->mutable_repeated_nested_message (1)->set_bb(518); message->mutable_repeated_foreign_message(1)->set_c(519); message->mutable_repeated_import_message (1)->set_d(520); + message->mutable_repeated_lazy_message (1)->set_bb(527); message->set_repeated_nested_enum (1, unittest::TestAllTypes::FOO); message->set_repeated_foreign_enum(1, unittest::FOREIGN_FOO ); @@ -256,15 +274,19 @@ void TestUtil::ExpectAllFieldsSet(const unittest::TestAllTypes& message) { EXPECT_TRUE(message.has_optional_string ()); EXPECT_TRUE(message.has_optional_bytes ()); - EXPECT_TRUE(message.has_optionalgroup ()); - EXPECT_TRUE(message.has_optional_nested_message ()); - EXPECT_TRUE(message.has_optional_foreign_message()); - EXPECT_TRUE(message.has_optional_import_message ()); + EXPECT_TRUE(message.has_optionalgroup ()); + EXPECT_TRUE(message.has_optional_nested_message ()); + EXPECT_TRUE(message.has_optional_foreign_message ()); + EXPECT_TRUE(message.has_optional_import_message ()); + EXPECT_TRUE(message.has_optional_public_import_message()); + EXPECT_TRUE(message.has_optional_lazy_message ()); - EXPECT_TRUE(message.optionalgroup ().has_a()); - EXPECT_TRUE(message.optional_nested_message ().has_bb()); - EXPECT_TRUE(message.optional_foreign_message().has_c()); - EXPECT_TRUE(message.optional_import_message ().has_d()); + EXPECT_TRUE(message.optionalgroup ().has_a()); + EXPECT_TRUE(message.optional_nested_message ().has_bb()); + EXPECT_TRUE(message.optional_foreign_message ().has_c()); + EXPECT_TRUE(message.optional_import_message ().has_d()); + EXPECT_TRUE(message.optional_public_import_message().has_e()); + EXPECT_TRUE(message.optional_lazy_message ().has_bb()); EXPECT_TRUE(message.has_optional_nested_enum ()); EXPECT_TRUE(message.has_optional_foreign_enum()); @@ -287,14 +309,16 @@ void TestUtil::ExpectAllFieldsSet(const unittest::TestAllTypes& message) { EXPECT_EQ(110 , message.optional_sfixed64()); EXPECT_EQ(111 , message.optional_float ()); EXPECT_EQ(112 , message.optional_double ()); - EXPECT_EQ(true , message.optional_bool ()); + EXPECT_TRUE( message.optional_bool ()); EXPECT_EQ("115", message.optional_string ()); EXPECT_EQ("116", message.optional_bytes ()); - EXPECT_EQ(117, message.optionalgroup ().a()); - EXPECT_EQ(118, message.optional_nested_message ().bb()); - EXPECT_EQ(119, message.optional_foreign_message().c()); - EXPECT_EQ(120, message.optional_import_message ().d()); + EXPECT_EQ(117, message.optionalgroup ().a()); + EXPECT_EQ(118, message.optional_nested_message ().bb()); + EXPECT_EQ(119, message.optional_foreign_message ().c()); + EXPECT_EQ(120, message.optional_import_message ().d()); + EXPECT_EQ(126, message.optional_public_import_message ().e()); + EXPECT_EQ(127, message.optional_lazy_message ().bb()); EXPECT_EQ(unittest::TestAllTypes::BAZ, message.optional_nested_enum ()); EXPECT_EQ(unittest::FOREIGN_BAZ , message.optional_foreign_enum()); @@ -323,6 +347,7 @@ void TestUtil::ExpectAllFieldsSet(const unittest::TestAllTypes& message) { ASSERT_EQ(2, message.repeated_nested_message_size ()); ASSERT_EQ(2, message.repeated_foreign_message_size()); ASSERT_EQ(2, message.repeated_import_message_size ()); + ASSERT_EQ(2, message.repeated_lazy_message_size ()); ASSERT_EQ(2, message.repeated_nested_enum_size ()); ASSERT_EQ(2, message.repeated_foreign_enum_size ()); ASSERT_EQ(2, message.repeated_import_enum_size ()); @@ -344,7 +369,7 @@ void TestUtil::ExpectAllFieldsSet(const unittest::TestAllTypes& message) { EXPECT_EQ(210 , message.repeated_sfixed64(0)); EXPECT_EQ(211 , message.repeated_float (0)); EXPECT_EQ(212 , message.repeated_double (0)); - EXPECT_EQ(true , message.repeated_bool (0)); + EXPECT_TRUE( message.repeated_bool (0)); EXPECT_EQ("215", message.repeated_string (0)); EXPECT_EQ("216", message.repeated_bytes (0)); @@ -352,6 +377,7 @@ void TestUtil::ExpectAllFieldsSet(const unittest::TestAllTypes& message) { EXPECT_EQ(218, message.repeated_nested_message (0).bb()); EXPECT_EQ(219, message.repeated_foreign_message(0).c()); EXPECT_EQ(220, message.repeated_import_message (0).d()); + EXPECT_EQ(227, message.repeated_lazy_message (0).bb()); EXPECT_EQ(unittest::TestAllTypes::BAR, message.repeated_nested_enum (0)); @@ -370,7 +396,7 @@ void TestUtil::ExpectAllFieldsSet(const unittest::TestAllTypes& message) { EXPECT_EQ(310 , message.repeated_sfixed64(1)); EXPECT_EQ(311 , message.repeated_float (1)); EXPECT_EQ(312 , message.repeated_double (1)); - EXPECT_EQ(false, message.repeated_bool (1)); + EXPECT_FALSE( message.repeated_bool (1)); EXPECT_EQ("315", message.repeated_string (1)); EXPECT_EQ("316", message.repeated_bytes (1)); @@ -378,6 +404,7 @@ void TestUtil::ExpectAllFieldsSet(const unittest::TestAllTypes& message) { EXPECT_EQ(318, message.repeated_nested_message (1).bb()); EXPECT_EQ(319, message.repeated_foreign_message(1).c()); EXPECT_EQ(320, message.repeated_import_message (1).d()); + EXPECT_EQ(327, message.repeated_lazy_message (1).bb()); EXPECT_EQ(unittest::TestAllTypes::BAZ, message.repeated_nested_enum (1)); EXPECT_EQ(unittest::FOREIGN_BAZ , message.repeated_foreign_enum(1)); @@ -419,7 +446,7 @@ void TestUtil::ExpectAllFieldsSet(const unittest::TestAllTypes& message) { EXPECT_EQ(410 , message.default_sfixed64()); EXPECT_EQ(411 , message.default_float ()); EXPECT_EQ(412 , message.default_double ()); - EXPECT_EQ(false, message.default_bool ()); + EXPECT_FALSE( message.default_bool ()); EXPECT_EQ("415", message.default_string ()); EXPECT_EQ("416", message.default_bytes ()); @@ -449,10 +476,12 @@ void TestUtil::ExpectClear(const unittest::TestAllTypes& message) { EXPECT_FALSE(message.has_optional_string ()); EXPECT_FALSE(message.has_optional_bytes ()); - EXPECT_FALSE(message.has_optionalgroup ()); - EXPECT_FALSE(message.has_optional_nested_message ()); - EXPECT_FALSE(message.has_optional_foreign_message()); - EXPECT_FALSE(message.has_optional_import_message ()); + EXPECT_FALSE(message.has_optionalgroup ()); + EXPECT_FALSE(message.has_optional_nested_message ()); + EXPECT_FALSE(message.has_optional_foreign_message ()); + EXPECT_FALSE(message.has_optional_import_message ()); + EXPECT_FALSE(message.has_optional_public_import_message()); + EXPECT_FALSE(message.has_optional_lazy_message ()); EXPECT_FALSE(message.has_optional_nested_enum ()); EXPECT_FALSE(message.has_optional_foreign_enum()); @@ -474,20 +503,24 @@ void TestUtil::ExpectClear(const unittest::TestAllTypes& message) { EXPECT_EQ(0 , message.optional_sfixed64()); EXPECT_EQ(0 , message.optional_float ()); EXPECT_EQ(0 , message.optional_double ()); - EXPECT_EQ(false, message.optional_bool ()); + EXPECT_FALSE( message.optional_bool ()); EXPECT_EQ("" , message.optional_string ()); EXPECT_EQ("" , message.optional_bytes ()); // Embedded messages should also be clear. - EXPECT_FALSE(message.optionalgroup ().has_a()); - EXPECT_FALSE(message.optional_nested_message ().has_bb()); - EXPECT_FALSE(message.optional_foreign_message().has_c()); - EXPECT_FALSE(message.optional_import_message ().has_d()); - - EXPECT_EQ(0, message.optionalgroup ().a()); - EXPECT_EQ(0, message.optional_nested_message ().bb()); - EXPECT_EQ(0, message.optional_foreign_message().c()); - EXPECT_EQ(0, message.optional_import_message ().d()); + EXPECT_FALSE(message.optionalgroup ().has_a()); + EXPECT_FALSE(message.optional_nested_message ().has_bb()); + EXPECT_FALSE(message.optional_foreign_message ().has_c()); + EXPECT_FALSE(message.optional_import_message ().has_d()); + EXPECT_FALSE(message.optional_public_import_message().has_e()); + EXPECT_FALSE(message.optional_lazy_message ().has_bb()); + + EXPECT_EQ(0, message.optionalgroup ().a()); + EXPECT_EQ(0, message.optional_nested_message ().bb()); + EXPECT_EQ(0, message.optional_foreign_message ().c()); + EXPECT_EQ(0, message.optional_import_message ().d()); + EXPECT_EQ(0, message.optional_public_import_message().e()); + EXPECT_EQ(0, message.optional_lazy_message ().bb()); // Enums without defaults are set to the first value in the enum. EXPECT_EQ(unittest::TestAllTypes::FOO, message.optional_nested_enum ()); @@ -516,6 +549,7 @@ void TestUtil::ExpectClear(const unittest::TestAllTypes& message) { EXPECT_EQ(0, message.repeated_nested_message_size ()); EXPECT_EQ(0, message.repeated_foreign_message_size()); EXPECT_EQ(0, message.repeated_import_message_size ()); + EXPECT_EQ(0, message.repeated_lazy_message_size ()); EXPECT_EQ(0, message.repeated_nested_enum_size ()); EXPECT_EQ(0, message.repeated_foreign_enum_size ()); EXPECT_EQ(0, message.repeated_import_enum_size ()); @@ -558,7 +592,7 @@ void TestUtil::ExpectClear(const unittest::TestAllTypes& message) { EXPECT_EQ(-50 , message.default_sfixed64()); EXPECT_EQ( 51.5 , message.default_float ()); EXPECT_EQ( 52e3 , message.default_double ()); - EXPECT_EQ(true , message.default_bool ()); + EXPECT_TRUE( message.default_bool ()); EXPECT_EQ("hello", message.default_string ()); EXPECT_EQ("world", message.default_bytes ()); @@ -595,6 +629,7 @@ void TestUtil::ExpectRepeatedFieldsModified( ASSERT_EQ(2, message.repeated_nested_message_size ()); ASSERT_EQ(2, message.repeated_foreign_message_size()); ASSERT_EQ(2, message.repeated_import_message_size ()); + ASSERT_EQ(2, message.repeated_lazy_message_size ()); ASSERT_EQ(2, message.repeated_nested_enum_size ()); ASSERT_EQ(2, message.repeated_foreign_enum_size ()); ASSERT_EQ(2, message.repeated_import_enum_size ()); @@ -616,7 +651,7 @@ void TestUtil::ExpectRepeatedFieldsModified( EXPECT_EQ(210 , message.repeated_sfixed64(0)); EXPECT_EQ(211 , message.repeated_float (0)); EXPECT_EQ(212 , message.repeated_double (0)); - EXPECT_EQ(true , message.repeated_bool (0)); + EXPECT_TRUE( message.repeated_bool (0)); EXPECT_EQ("215", message.repeated_string (0)); EXPECT_EQ("216", message.repeated_bytes (0)); @@ -624,6 +659,7 @@ void TestUtil::ExpectRepeatedFieldsModified( EXPECT_EQ(218, message.repeated_nested_message (0).bb()); EXPECT_EQ(219, message.repeated_foreign_message(0).c()); EXPECT_EQ(220, message.repeated_import_message (0).d()); + EXPECT_EQ(227, message.repeated_lazy_message (0).bb()); EXPECT_EQ(unittest::TestAllTypes::BAR, message.repeated_nested_enum (0)); EXPECT_EQ(unittest::FOREIGN_BAR , message.repeated_foreign_enum(0)); @@ -643,7 +679,7 @@ void TestUtil::ExpectRepeatedFieldsModified( EXPECT_EQ(510 , message.repeated_sfixed64(1)); EXPECT_EQ(511 , message.repeated_float (1)); EXPECT_EQ(512 , message.repeated_double (1)); - EXPECT_EQ(true , message.repeated_bool (1)); + EXPECT_TRUE( message.repeated_bool (1)); EXPECT_EQ("515", message.repeated_string (1)); EXPECT_EQ("516", message.repeated_bytes (1)); @@ -651,6 +687,7 @@ void TestUtil::ExpectRepeatedFieldsModified( EXPECT_EQ(518, message.repeated_nested_message (1).bb()); EXPECT_EQ(519, message.repeated_foreign_message(1).c()); EXPECT_EQ(520, message.repeated_import_message (1).d()); + EXPECT_EQ(527, message.repeated_lazy_message (1).bb()); EXPECT_EQ(unittest::TestAllTypes::FOO, message.repeated_nested_enum (1)); EXPECT_EQ(unittest::FOREIGN_FOO , message.repeated_foreign_enum(1)); @@ -775,7 +812,7 @@ void TestUtil::ExpectPackedFieldsSet(const unittest::TestPackedTypes& message) { EXPECT_EQ(610 , message.packed_sfixed64(0)); EXPECT_EQ(611 , message.packed_float (0)); EXPECT_EQ(612 , message.packed_double (0)); - EXPECT_EQ(true , message.packed_bool (0)); + EXPECT_TRUE( message.packed_bool (0)); EXPECT_EQ(unittest::FOREIGN_BAR, message.packed_enum(0)); EXPECT_EQ(701 , message.packed_int32 (1)); @@ -790,7 +827,7 @@ void TestUtil::ExpectPackedFieldsSet(const unittest::TestPackedTypes& message) { EXPECT_EQ(710 , message.packed_sfixed64(1)); EXPECT_EQ(711 , message.packed_float (1)); EXPECT_EQ(712 , message.packed_double (1)); - EXPECT_EQ(false, message.packed_bool (1)); + EXPECT_FALSE( message.packed_bool (1)); EXPECT_EQ(unittest::FOREIGN_BAZ, message.packed_enum(1)); } @@ -825,7 +862,7 @@ void TestUtil::ExpectUnpackedFieldsSet( EXPECT_EQ(610 , message.unpacked_sfixed64(0)); EXPECT_EQ(611 , message.unpacked_float (0)); EXPECT_EQ(612 , message.unpacked_double (0)); - EXPECT_EQ(true , message.unpacked_bool (0)); + EXPECT_TRUE( message.unpacked_bool (0)); EXPECT_EQ(unittest::FOREIGN_BAR, message.unpacked_enum(0)); EXPECT_EQ(701 , message.unpacked_int32 (1)); @@ -840,7 +877,7 @@ void TestUtil::ExpectUnpackedFieldsSet( EXPECT_EQ(710 , message.unpacked_sfixed64(1)); EXPECT_EQ(711 , message.unpacked_float (1)); EXPECT_EQ(712 , message.unpacked_double (1)); - EXPECT_EQ(false, message.unpacked_bool (1)); + EXPECT_FALSE( message.unpacked_bool (1)); EXPECT_EQ(unittest::FOREIGN_BAZ, message.unpacked_enum(1)); } @@ -897,7 +934,7 @@ void TestUtil::ExpectPackedFieldsModified( EXPECT_EQ(610 , message.packed_sfixed64(0)); EXPECT_EQ(611 , message.packed_float (0)); EXPECT_EQ(612 , message.packed_double (0)); - EXPECT_EQ(true , message.packed_bool (0)); + EXPECT_TRUE( message.packed_bool (0)); EXPECT_EQ(unittest::FOREIGN_BAR, message.packed_enum(0)); // Actually verify the second (modified) elements now. EXPECT_EQ(801 , message.packed_int32 (1)); @@ -912,7 +949,7 @@ void TestUtil::ExpectPackedFieldsModified( EXPECT_EQ(810 , message.packed_sfixed64(1)); EXPECT_EQ(811 , message.packed_float (1)); EXPECT_EQ(812 , message.packed_double (1)); - EXPECT_EQ(true , message.packed_bool (1)); + EXPECT_TRUE( message.packed_bool (1)); EXPECT_EQ(unittest::FOREIGN_FOO, message.packed_enum(1)); } @@ -953,6 +990,9 @@ void TestUtil::SetAllExtensions(unittest::TestAllExtensions* message) { message->SetExtension(unittest::optional_string_piece_extension, "124"); message->SetExtension(unittest::optional_cord_extension, "125"); + message->MutableExtension(unittest::optional_public_import_message_extension)->set_e(126); + message->MutableExtension(unittest::optional_lazy_message_extension)->set_bb(127); + // ----------------------------------------------------------------- message->AddExtension(unittest::repeated_int32_extension , 201); @@ -975,6 +1015,7 @@ void TestUtil::SetAllExtensions(unittest::TestAllExtensions* message) { message->AddExtension(unittest::repeated_nested_message_extension )->set_bb(218); message->AddExtension(unittest::repeated_foreign_message_extension)->set_c(219); message->AddExtension(unittest::repeated_import_message_extension )->set_d(220); + message->AddExtension(unittest::repeated_lazy_message_extension )->set_bb(227); message->AddExtension(unittest::repeated_nested_enum_extension , unittest::TestAllTypes::BAR); message->AddExtension(unittest::repeated_foreign_enum_extension, unittest::FOREIGN_BAR ); @@ -1004,6 +1045,7 @@ void TestUtil::SetAllExtensions(unittest::TestAllExtensions* message) { message->AddExtension(unittest::repeated_nested_message_extension )->set_bb(318); message->AddExtension(unittest::repeated_foreign_message_extension)->set_c(319); message->AddExtension(unittest::repeated_import_message_extension )->set_d(320); + message->AddExtension(unittest::repeated_lazy_message_extension )->set_bb(327); message->AddExtension(unittest::repeated_nested_enum_extension , unittest::TestAllTypes::BAZ); message->AddExtension(unittest::repeated_foreign_enum_extension, unittest::FOREIGN_BAZ ); @@ -1073,6 +1115,7 @@ void TestUtil::ModifyRepeatedExtensions(unittest::TestAllExtensions* message) { message->MutableExtension(unittest::repeated_nested_message_extension , 1)->set_bb(518); message->MutableExtension(unittest::repeated_foreign_message_extension, 1)->set_c(519); message->MutableExtension(unittest::repeated_import_message_extension , 1)->set_d(520); + message->MutableExtension(unittest::repeated_lazy_message_extension , 1)->set_bb(527); message->SetExtension(unittest::repeated_nested_enum_extension , 1, unittest::TestAllTypes::FOO); message->SetExtension(unittest::repeated_foreign_enum_extension, 1, unittest::FOREIGN_FOO ); @@ -1102,15 +1145,19 @@ void TestUtil::ExpectAllExtensionsSet( EXPECT_TRUE(message.HasExtension(unittest::optional_string_extension )); EXPECT_TRUE(message.HasExtension(unittest::optional_bytes_extension )); - EXPECT_TRUE(message.HasExtension(unittest::optionalgroup_extension )); - EXPECT_TRUE(message.HasExtension(unittest::optional_nested_message_extension )); - EXPECT_TRUE(message.HasExtension(unittest::optional_foreign_message_extension)); - EXPECT_TRUE(message.HasExtension(unittest::optional_import_message_extension )); + EXPECT_TRUE(message.HasExtension(unittest::optionalgroup_extension )); + EXPECT_TRUE(message.HasExtension(unittest::optional_nested_message_extension )); + EXPECT_TRUE(message.HasExtension(unittest::optional_foreign_message_extension )); + EXPECT_TRUE(message.HasExtension(unittest::optional_import_message_extension )); + EXPECT_TRUE(message.HasExtension(unittest::optional_public_import_message_extension)); + EXPECT_TRUE(message.HasExtension(unittest::optional_lazy_message_extension )); - EXPECT_TRUE(message.GetExtension(unittest::optionalgroup_extension ).has_a()); - EXPECT_TRUE(message.GetExtension(unittest::optional_nested_message_extension ).has_bb()); - EXPECT_TRUE(message.GetExtension(unittest::optional_foreign_message_extension).has_c()); - EXPECT_TRUE(message.GetExtension(unittest::optional_import_message_extension ).has_d()); + EXPECT_TRUE(message.GetExtension(unittest::optionalgroup_extension ).has_a()); + EXPECT_TRUE(message.GetExtension(unittest::optional_nested_message_extension ).has_bb()); + EXPECT_TRUE(message.GetExtension(unittest::optional_foreign_message_extension ).has_c()); + EXPECT_TRUE(message.GetExtension(unittest::optional_import_message_extension ).has_d()); + EXPECT_TRUE(message.GetExtension(unittest::optional_public_import_message_extension).has_e()); + EXPECT_TRUE(message.GetExtension(unittest::optional_lazy_message_extension ).has_bb()); EXPECT_TRUE(message.HasExtension(unittest::optional_nested_enum_extension )); EXPECT_TRUE(message.HasExtension(unittest::optional_foreign_enum_extension)); @@ -1131,7 +1178,7 @@ void TestUtil::ExpectAllExtensionsSet( EXPECT_EQ(110 , message.GetExtension(unittest::optional_sfixed64_extension)); EXPECT_EQ(111 , message.GetExtension(unittest::optional_float_extension )); EXPECT_EQ(112 , message.GetExtension(unittest::optional_double_extension )); - EXPECT_EQ(true , message.GetExtension(unittest::optional_bool_extension )); + EXPECT_TRUE( message.GetExtension(unittest::optional_bool_extension )); EXPECT_EQ("115", message.GetExtension(unittest::optional_string_extension )); EXPECT_EQ("116", message.GetExtension(unittest::optional_bytes_extension )); @@ -1146,6 +1193,8 @@ void TestUtil::ExpectAllExtensionsSet( EXPECT_EQ("124", message.GetExtension(unittest::optional_string_piece_extension)); EXPECT_EQ("125", message.GetExtension(unittest::optional_cord_extension)); + EXPECT_EQ(126, message.GetExtension(unittest::optional_public_import_message_extension ).e()); + EXPECT_EQ(127, message.GetExtension(unittest::optional_lazy_message_extension).bb()); // ----------------------------------------------------------------- @@ -1169,6 +1218,7 @@ void TestUtil::ExpectAllExtensionsSet( ASSERT_EQ(2, message.ExtensionSize(unittest::repeated_nested_message_extension )); ASSERT_EQ(2, message.ExtensionSize(unittest::repeated_foreign_message_extension)); ASSERT_EQ(2, message.ExtensionSize(unittest::repeated_import_message_extension )); + ASSERT_EQ(2, message.ExtensionSize(unittest::repeated_lazy_message_extension )); ASSERT_EQ(2, message.ExtensionSize(unittest::repeated_nested_enum_extension )); ASSERT_EQ(2, message.ExtensionSize(unittest::repeated_foreign_enum_extension )); ASSERT_EQ(2, message.ExtensionSize(unittest::repeated_import_enum_extension )); @@ -1188,7 +1238,7 @@ void TestUtil::ExpectAllExtensionsSet( EXPECT_EQ(210 , message.GetExtension(unittest::repeated_sfixed64_extension, 0)); EXPECT_EQ(211 , message.GetExtension(unittest::repeated_float_extension , 0)); EXPECT_EQ(212 , message.GetExtension(unittest::repeated_double_extension , 0)); - EXPECT_EQ(true , message.GetExtension(unittest::repeated_bool_extension , 0)); + EXPECT_TRUE( message.GetExtension(unittest::repeated_bool_extension , 0)); EXPECT_EQ("215", message.GetExtension(unittest::repeated_string_extension , 0)); EXPECT_EQ("216", message.GetExtension(unittest::repeated_bytes_extension , 0)); @@ -1196,6 +1246,7 @@ void TestUtil::ExpectAllExtensionsSet( EXPECT_EQ(218, message.GetExtension(unittest::repeated_nested_message_extension , 0).bb()); EXPECT_EQ(219, message.GetExtension(unittest::repeated_foreign_message_extension, 0).c()); EXPECT_EQ(220, message.GetExtension(unittest::repeated_import_message_extension , 0).d()); + EXPECT_EQ(227, message.GetExtension(unittest::repeated_lazy_message_extension , 0).bb()); EXPECT_EQ(unittest::TestAllTypes::BAR, message.GetExtension(unittest::repeated_nested_enum_extension , 0)); EXPECT_EQ(unittest::FOREIGN_BAR , message.GetExtension(unittest::repeated_foreign_enum_extension, 0)); @@ -1216,7 +1267,7 @@ void TestUtil::ExpectAllExtensionsSet( EXPECT_EQ(310 , message.GetExtension(unittest::repeated_sfixed64_extension, 1)); EXPECT_EQ(311 , message.GetExtension(unittest::repeated_float_extension , 1)); EXPECT_EQ(312 , message.GetExtension(unittest::repeated_double_extension , 1)); - EXPECT_EQ(false, message.GetExtension(unittest::repeated_bool_extension , 1)); + EXPECT_FALSE( message.GetExtension(unittest::repeated_bool_extension , 1)); EXPECT_EQ("315", message.GetExtension(unittest::repeated_string_extension , 1)); EXPECT_EQ("316", message.GetExtension(unittest::repeated_bytes_extension , 1)); @@ -1224,6 +1275,7 @@ void TestUtil::ExpectAllExtensionsSet( EXPECT_EQ(318, message.GetExtension(unittest::repeated_nested_message_extension , 1).bb()); EXPECT_EQ(319, message.GetExtension(unittest::repeated_foreign_message_extension, 1).c()); EXPECT_EQ(320, message.GetExtension(unittest::repeated_import_message_extension , 1).d()); + EXPECT_EQ(327, message.GetExtension(unittest::repeated_lazy_message_extension , 1).bb()); EXPECT_EQ(unittest::TestAllTypes::BAZ, message.GetExtension(unittest::repeated_nested_enum_extension , 1)); EXPECT_EQ(unittest::FOREIGN_BAZ , message.GetExtension(unittest::repeated_foreign_enum_extension, 1)); @@ -1269,7 +1321,7 @@ void TestUtil::ExpectAllExtensionsSet( EXPECT_EQ(410 , message.GetExtension(unittest::default_sfixed64_extension)); EXPECT_EQ(411 , message.GetExtension(unittest::default_float_extension )); EXPECT_EQ(412 , message.GetExtension(unittest::default_double_extension )); - EXPECT_EQ(false, message.GetExtension(unittest::default_bool_extension )); + EXPECT_FALSE( message.GetExtension(unittest::default_bool_extension )); EXPECT_EQ("415", message.GetExtension(unittest::default_string_extension )); EXPECT_EQ("416", message.GetExtension(unittest::default_bytes_extension )); @@ -1307,10 +1359,12 @@ void TestUtil::ExpectExtensionsClear( EXPECT_FALSE(message.HasExtension(unittest::optional_string_extension )); EXPECT_FALSE(message.HasExtension(unittest::optional_bytes_extension )); - EXPECT_FALSE(message.HasExtension(unittest::optionalgroup_extension )); - EXPECT_FALSE(message.HasExtension(unittest::optional_nested_message_extension )); - EXPECT_FALSE(message.HasExtension(unittest::optional_foreign_message_extension)); - EXPECT_FALSE(message.HasExtension(unittest::optional_import_message_extension )); + EXPECT_FALSE(message.HasExtension(unittest::optionalgroup_extension )); + EXPECT_FALSE(message.HasExtension(unittest::optional_nested_message_extension )); + EXPECT_FALSE(message.HasExtension(unittest::optional_foreign_message_extension )); + EXPECT_FALSE(message.HasExtension(unittest::optional_import_message_extension )); + EXPECT_FALSE(message.HasExtension(unittest::optional_public_import_message_extension)); + EXPECT_FALSE(message.HasExtension(unittest::optional_lazy_message_extension )); EXPECT_FALSE(message.HasExtension(unittest::optional_nested_enum_extension )); EXPECT_FALSE(message.HasExtension(unittest::optional_foreign_enum_extension)); @@ -1332,20 +1386,24 @@ void TestUtil::ExpectExtensionsClear( EXPECT_EQ(0 , message.GetExtension(unittest::optional_sfixed64_extension)); EXPECT_EQ(0 , message.GetExtension(unittest::optional_float_extension )); EXPECT_EQ(0 , message.GetExtension(unittest::optional_double_extension )); - EXPECT_EQ(false, message.GetExtension(unittest::optional_bool_extension )); + EXPECT_FALSE( message.GetExtension(unittest::optional_bool_extension )); EXPECT_EQ("" , message.GetExtension(unittest::optional_string_extension )); EXPECT_EQ("" , message.GetExtension(unittest::optional_bytes_extension )); // Embedded messages should also be clear. - EXPECT_FALSE(message.GetExtension(unittest::optionalgroup_extension ).has_a()); - EXPECT_FALSE(message.GetExtension(unittest::optional_nested_message_extension ).has_bb()); - EXPECT_FALSE(message.GetExtension(unittest::optional_foreign_message_extension).has_c()); - EXPECT_FALSE(message.GetExtension(unittest::optional_import_message_extension ).has_d()); - - EXPECT_EQ(0, message.GetExtension(unittest::optionalgroup_extension ).a()); - EXPECT_EQ(0, message.GetExtension(unittest::optional_nested_message_extension ).bb()); - EXPECT_EQ(0, message.GetExtension(unittest::optional_foreign_message_extension).c()); - EXPECT_EQ(0, message.GetExtension(unittest::optional_import_message_extension ).d()); + EXPECT_FALSE(message.GetExtension(unittest::optionalgroup_extension ).has_a()); + EXPECT_FALSE(message.GetExtension(unittest::optional_nested_message_extension ).has_bb()); + EXPECT_FALSE(message.GetExtension(unittest::optional_foreign_message_extension ).has_c()); + EXPECT_FALSE(message.GetExtension(unittest::optional_import_message_extension ).has_d()); + EXPECT_FALSE(message.GetExtension(unittest::optional_public_import_message_extension).has_e()); + EXPECT_FALSE(message.GetExtension(unittest::optional_lazy_message_extension ).has_bb()); + + EXPECT_EQ(0, message.GetExtension(unittest::optionalgroup_extension ).a()); + EXPECT_EQ(0, message.GetExtension(unittest::optional_nested_message_extension ).bb()); + EXPECT_EQ(0, message.GetExtension(unittest::optional_foreign_message_extension ).c()); + EXPECT_EQ(0, message.GetExtension(unittest::optional_import_message_extension ).d()); + EXPECT_EQ(0, message.GetExtension(unittest::optional_public_import_message_extension).e()); + EXPECT_EQ(0, message.GetExtension(unittest::optional_lazy_message_extension ).bb()); // Enums without defaults are set to the first value in the enum. EXPECT_EQ(unittest::TestAllTypes::FOO, message.GetExtension(unittest::optional_nested_enum_extension )); @@ -1376,6 +1434,7 @@ void TestUtil::ExpectExtensionsClear( EXPECT_EQ(0, message.ExtensionSize(unittest::repeated_nested_message_extension )); EXPECT_EQ(0, message.ExtensionSize(unittest::repeated_foreign_message_extension)); EXPECT_EQ(0, message.ExtensionSize(unittest::repeated_import_message_extension )); + EXPECT_EQ(0, message.ExtensionSize(unittest::repeated_lazy_message_extension )); EXPECT_EQ(0, message.ExtensionSize(unittest::repeated_nested_enum_extension )); EXPECT_EQ(0, message.ExtensionSize(unittest::repeated_foreign_enum_extension )); EXPECT_EQ(0, message.ExtensionSize(unittest::repeated_import_enum_extension )); @@ -1420,7 +1479,7 @@ void TestUtil::ExpectExtensionsClear( EXPECT_EQ(-50 , message.GetExtension(unittest::default_sfixed64_extension)); EXPECT_EQ( 51.5 , message.GetExtension(unittest::default_float_extension )); EXPECT_EQ( 52e3 , message.GetExtension(unittest::default_double_extension )); - EXPECT_EQ(true , message.GetExtension(unittest::default_bool_extension )); + EXPECT_TRUE( message.GetExtension(unittest::default_bool_extension )); EXPECT_EQ("hello", message.GetExtension(unittest::default_string_extension )); EXPECT_EQ("world", message.GetExtension(unittest::default_bytes_extension )); @@ -1459,6 +1518,7 @@ void TestUtil::ExpectRepeatedExtensionsModified( ASSERT_EQ(2, message.ExtensionSize(unittest::repeated_nested_message_extension )); ASSERT_EQ(2, message.ExtensionSize(unittest::repeated_foreign_message_extension)); ASSERT_EQ(2, message.ExtensionSize(unittest::repeated_import_message_extension )); + ASSERT_EQ(2, message.ExtensionSize(unittest::repeated_lazy_message_extension )); ASSERT_EQ(2, message.ExtensionSize(unittest::repeated_nested_enum_extension )); ASSERT_EQ(2, message.ExtensionSize(unittest::repeated_foreign_enum_extension )); ASSERT_EQ(2, message.ExtensionSize(unittest::repeated_import_enum_extension )); @@ -1478,7 +1538,7 @@ void TestUtil::ExpectRepeatedExtensionsModified( EXPECT_EQ(210 , message.GetExtension(unittest::repeated_sfixed64_extension, 0)); EXPECT_EQ(211 , message.GetExtension(unittest::repeated_float_extension , 0)); EXPECT_EQ(212 , message.GetExtension(unittest::repeated_double_extension , 0)); - EXPECT_EQ(true , message.GetExtension(unittest::repeated_bool_extension , 0)); + EXPECT_TRUE( message.GetExtension(unittest::repeated_bool_extension , 0)); EXPECT_EQ("215", message.GetExtension(unittest::repeated_string_extension , 0)); EXPECT_EQ("216", message.GetExtension(unittest::repeated_bytes_extension , 0)); @@ -1486,6 +1546,7 @@ void TestUtil::ExpectRepeatedExtensionsModified( EXPECT_EQ(218, message.GetExtension(unittest::repeated_nested_message_extension , 0).bb()); EXPECT_EQ(219, message.GetExtension(unittest::repeated_foreign_message_extension, 0).c()); EXPECT_EQ(220, message.GetExtension(unittest::repeated_import_message_extension , 0).d()); + EXPECT_EQ(227, message.GetExtension(unittest::repeated_lazy_message_extension , 0).bb()); EXPECT_EQ(unittest::TestAllTypes::BAR, message.GetExtension(unittest::repeated_nested_enum_extension , 0)); EXPECT_EQ(unittest::FOREIGN_BAR , message.GetExtension(unittest::repeated_foreign_enum_extension, 0)); @@ -1507,7 +1568,7 @@ void TestUtil::ExpectRepeatedExtensionsModified( EXPECT_EQ(510 , message.GetExtension(unittest::repeated_sfixed64_extension, 1)); EXPECT_EQ(511 , message.GetExtension(unittest::repeated_float_extension , 1)); EXPECT_EQ(512 , message.GetExtension(unittest::repeated_double_extension , 1)); - EXPECT_EQ(true , message.GetExtension(unittest::repeated_bool_extension , 1)); + EXPECT_TRUE( message.GetExtension(unittest::repeated_bool_extension , 1)); EXPECT_EQ("515", message.GetExtension(unittest::repeated_string_extension , 1)); EXPECT_EQ("516", message.GetExtension(unittest::repeated_bytes_extension , 1)); @@ -1515,6 +1576,7 @@ void TestUtil::ExpectRepeatedExtensionsModified( EXPECT_EQ(518, message.GetExtension(unittest::repeated_nested_message_extension , 1).bb()); EXPECT_EQ(519, message.GetExtension(unittest::repeated_foreign_message_extension, 1).c()); EXPECT_EQ(520, message.GetExtension(unittest::repeated_import_message_extension , 1).d()); + EXPECT_EQ(527, message.GetExtension(unittest::repeated_lazy_message_extension , 1).bb()); EXPECT_EQ(unittest::TestAllTypes::FOO, message.GetExtension(unittest::repeated_nested_enum_extension , 1)); EXPECT_EQ(unittest::FOREIGN_FOO , message.GetExtension(unittest::repeated_foreign_enum_extension, 1)); @@ -1609,7 +1671,7 @@ void TestUtil::ExpectPackedExtensionsSet( EXPECT_EQ(610 , message.GetExtension(unittest::packed_sfixed64_extension, 0)); EXPECT_EQ(611 , message.GetExtension(unittest::packed_float_extension , 0)); EXPECT_EQ(612 , message.GetExtension(unittest::packed_double_extension , 0)); - EXPECT_EQ(true , message.GetExtension(unittest::packed_bool_extension , 0)); + EXPECT_TRUE( message.GetExtension(unittest::packed_bool_extension , 0)); EXPECT_EQ(unittest::FOREIGN_BAR, message.GetExtension(unittest::packed_enum_extension, 0)); EXPECT_EQ(701 , message.GetExtension(unittest::packed_int32_extension , 1)); @@ -1624,7 +1686,7 @@ void TestUtil::ExpectPackedExtensionsSet( EXPECT_EQ(710 , message.GetExtension(unittest::packed_sfixed64_extension, 1)); EXPECT_EQ(711 , message.GetExtension(unittest::packed_float_extension , 1)); EXPECT_EQ(712 , message.GetExtension(unittest::packed_double_extension , 1)); - EXPECT_EQ(false, message.GetExtension(unittest::packed_bool_extension , 1)); + EXPECT_FALSE( message.GetExtension(unittest::packed_bool_extension , 1)); EXPECT_EQ(unittest::FOREIGN_BAZ, message.GetExtension(unittest::packed_enum_extension, 1)); } @@ -1679,7 +1741,7 @@ void TestUtil::ExpectPackedExtensionsModified( EXPECT_EQ(610 , message.GetExtension(unittest::packed_sfixed64_extension, 0)); EXPECT_EQ(611 , message.GetExtension(unittest::packed_float_extension , 0)); EXPECT_EQ(612 , message.GetExtension(unittest::packed_double_extension , 0)); - EXPECT_EQ(true , message.GetExtension(unittest::packed_bool_extension , 0)); + EXPECT_TRUE( message.GetExtension(unittest::packed_bool_extension , 0)); EXPECT_EQ(unittest::FOREIGN_BAR, message.GetExtension(unittest::packed_enum_extension, 0)); @@ -1696,7 +1758,7 @@ void TestUtil::ExpectPackedExtensionsModified( EXPECT_EQ(810 , message.GetExtension(unittest::packed_sfixed64_extension, 1)); EXPECT_EQ(811 , message.GetExtension(unittest::packed_float_extension , 1)); EXPECT_EQ(812 , message.GetExtension(unittest::packed_double_extension , 1)); - EXPECT_EQ(true , message.GetExtension(unittest::packed_bool_extension , 1)); + EXPECT_TRUE( message.GetExtension(unittest::packed_bool_extension , 1)); EXPECT_EQ(unittest::FOREIGN_FOO, message.GetExtension(unittest::packed_enum_extension, 1)); } @@ -1750,6 +1812,7 @@ void TestUtil::ExpectLastRepeatedsRemoved( ASSERT_EQ(1, message.repeated_nested_message_size ()); ASSERT_EQ(1, message.repeated_foreign_message_size()); ASSERT_EQ(1, message.repeated_import_message_size ()); + ASSERT_EQ(1, message.repeated_import_message_size ()); ASSERT_EQ(1, message.repeated_nested_enum_size ()); ASSERT_EQ(1, message.repeated_foreign_enum_size ()); ASSERT_EQ(1, message.repeated_import_enum_size ()); @@ -1772,7 +1835,7 @@ void TestUtil::ExpectLastRepeatedsRemoved( EXPECT_EQ(210 , message.repeated_sfixed64(0)); EXPECT_EQ(211 , message.repeated_float (0)); EXPECT_EQ(212 , message.repeated_double (0)); - EXPECT_EQ(true , message.repeated_bool (0)); + EXPECT_TRUE( message.repeated_bool (0)); EXPECT_EQ("215", message.repeated_string (0)); EXPECT_EQ("216", message.repeated_bytes (0)); @@ -1780,6 +1843,7 @@ void TestUtil::ExpectLastRepeatedsRemoved( EXPECT_EQ(218, message.repeated_nested_message (0).bb()); EXPECT_EQ(219, message.repeated_foreign_message(0).c()); EXPECT_EQ(220, message.repeated_import_message (0).d()); + EXPECT_EQ(220, message.repeated_import_message (0).d()); EXPECT_EQ(unittest::TestAllTypes::BAR, message.repeated_nested_enum (0)); EXPECT_EQ(unittest::FOREIGN_BAR , message.repeated_foreign_enum(0)); @@ -1810,6 +1874,7 @@ void TestUtil::ExpectLastRepeatedExtensionsRemoved( ASSERT_EQ(1, message.ExtensionSize(unittest::repeated_nested_message_extension )); ASSERT_EQ(1, message.ExtensionSize(unittest::repeated_foreign_message_extension)); ASSERT_EQ(1, message.ExtensionSize(unittest::repeated_import_message_extension )); + ASSERT_EQ(1, message.ExtensionSize(unittest::repeated_lazy_message_extension )); ASSERT_EQ(1, message.ExtensionSize(unittest::repeated_nested_enum_extension )); ASSERT_EQ(1, message.ExtensionSize(unittest::repeated_foreign_enum_extension )); ASSERT_EQ(1, message.ExtensionSize(unittest::repeated_import_enum_extension )); @@ -1830,7 +1895,7 @@ void TestUtil::ExpectLastRepeatedExtensionsRemoved( EXPECT_EQ(210 , message.GetExtension(unittest::repeated_sfixed64_extension, 0)); EXPECT_EQ(211 , message.GetExtension(unittest::repeated_float_extension , 0)); EXPECT_EQ(212 , message.GetExtension(unittest::repeated_double_extension , 0)); - EXPECT_EQ(true , message.GetExtension(unittest::repeated_bool_extension , 0)); + EXPECT_TRUE( message.GetExtension(unittest::repeated_bool_extension , 0)); EXPECT_EQ("215", message.GetExtension(unittest::repeated_string_extension , 0)); EXPECT_EQ("216", message.GetExtension(unittest::repeated_bytes_extension , 0)); @@ -1838,6 +1903,7 @@ void TestUtil::ExpectLastRepeatedExtensionsRemoved( EXPECT_EQ(218, message.GetExtension(unittest::repeated_nested_message_extension , 0).bb()); EXPECT_EQ(219, message.GetExtension(unittest::repeated_foreign_message_extension, 0).c()); EXPECT_EQ(220, message.GetExtension(unittest::repeated_import_message_extension , 0).d()); + EXPECT_EQ(227, message.GetExtension(unittest::repeated_lazy_message_extension , 0).bb()); EXPECT_EQ(unittest::TestAllTypes::BAR, message.GetExtension(unittest::repeated_nested_enum_extension , 0)); EXPECT_EQ(unittest::FOREIGN_BAR , message.GetExtension(unittest::repeated_foreign_enum_extension, 0)); @@ -1847,6 +1913,36 @@ void TestUtil::ExpectLastRepeatedExtensionsRemoved( EXPECT_EQ("225", message.GetExtension(unittest::repeated_cord_extension, 0)); } +void TestUtil::ExpectLastRepeatedsReleased( + const unittest::TestAllTypes& message) { + ASSERT_EQ(1, message.repeatedgroup_size ()); + ASSERT_EQ(1, message.repeated_nested_message_size ()); + ASSERT_EQ(1, message.repeated_foreign_message_size()); + ASSERT_EQ(1, message.repeated_import_message_size ()); + ASSERT_EQ(1, message.repeated_import_message_size ()); + + EXPECT_EQ(217, message.repeatedgroup (0).a()); + EXPECT_EQ(218, message.repeated_nested_message (0).bb()); + EXPECT_EQ(219, message.repeated_foreign_message(0).c()); + EXPECT_EQ(220, message.repeated_import_message (0).d()); + EXPECT_EQ(220, message.repeated_import_message (0).d()); +} + +void TestUtil::ExpectLastRepeatedExtensionsReleased( + const unittest::TestAllExtensions& message) { + ASSERT_EQ(1, message.ExtensionSize(unittest::repeatedgroup_extension )); + ASSERT_EQ(1, message.ExtensionSize(unittest::repeated_nested_message_extension )); + ASSERT_EQ(1, message.ExtensionSize(unittest::repeated_foreign_message_extension)); + ASSERT_EQ(1, message.ExtensionSize(unittest::repeated_import_message_extension )); + ASSERT_EQ(1, message.ExtensionSize(unittest::repeated_lazy_message_extension )); + + EXPECT_EQ(217, message.GetExtension(unittest::repeatedgroup_extension , 0).a()); + EXPECT_EQ(218, message.GetExtension(unittest::repeated_nested_message_extension , 0).bb()); + EXPECT_EQ(219, message.GetExtension(unittest::repeated_foreign_message_extension, 0).c()); + EXPECT_EQ(220, message.GetExtension(unittest::repeated_import_message_extension , 0).d()); + EXPECT_EQ(227, message.GetExtension(unittest::repeated_lazy_message_extension , 0).bb()); +} + void TestUtil::ExpectRepeatedsSwapped( const unittest::TestAllTypes& message) { ASSERT_EQ(2, message.repeated_int32_size ()); @@ -1869,6 +1965,7 @@ void TestUtil::ExpectRepeatedsSwapped( ASSERT_EQ(2, message.repeated_nested_message_size ()); ASSERT_EQ(2, message.repeated_foreign_message_size()); ASSERT_EQ(2, message.repeated_import_message_size ()); + ASSERT_EQ(2, message.repeated_import_message_size ()); ASSERT_EQ(2, message.repeated_nested_enum_size ()); ASSERT_EQ(2, message.repeated_foreign_enum_size ()); ASSERT_EQ(2, message.repeated_import_enum_size ()); @@ -1891,7 +1988,7 @@ void TestUtil::ExpectRepeatedsSwapped( EXPECT_EQ(210 , message.repeated_sfixed64(1)); EXPECT_EQ(211 , message.repeated_float (1)); EXPECT_EQ(212 , message.repeated_double (1)); - EXPECT_EQ(true , message.repeated_bool (1)); + EXPECT_TRUE( message.repeated_bool (1)); EXPECT_EQ("215", message.repeated_string (1)); EXPECT_EQ("216", message.repeated_bytes (1)); @@ -1899,6 +1996,7 @@ void TestUtil::ExpectRepeatedsSwapped( EXPECT_EQ(218, message.repeated_nested_message (1).bb()); EXPECT_EQ(219, message.repeated_foreign_message(1).c()); EXPECT_EQ(220, message.repeated_import_message (1).d()); + EXPECT_EQ(220, message.repeated_import_message (1).d()); EXPECT_EQ(unittest::TestAllTypes::BAR, message.repeated_nested_enum (1)); EXPECT_EQ(unittest::FOREIGN_BAR , message.repeated_foreign_enum(1)); @@ -1916,7 +2014,7 @@ void TestUtil::ExpectRepeatedsSwapped( EXPECT_EQ(310 , message.repeated_sfixed64(0)); EXPECT_EQ(311 , message.repeated_float (0)); EXPECT_EQ(312 , message.repeated_double (0)); - EXPECT_EQ(false, message.repeated_bool (0)); + EXPECT_FALSE( message.repeated_bool (0)); EXPECT_EQ("315", message.repeated_string (0)); EXPECT_EQ("316", message.repeated_bytes (0)); @@ -1924,6 +2022,7 @@ void TestUtil::ExpectRepeatedsSwapped( EXPECT_EQ(318, message.repeated_nested_message (0).bb()); EXPECT_EQ(319, message.repeated_foreign_message(0).c()); EXPECT_EQ(320, message.repeated_import_message (0).d()); + EXPECT_EQ(320, message.repeated_import_message (0).d()); EXPECT_EQ(unittest::TestAllTypes::BAZ, message.repeated_nested_enum (0)); EXPECT_EQ(unittest::FOREIGN_BAZ , message.repeated_foreign_enum(0)); @@ -1953,6 +2052,7 @@ void TestUtil::ExpectRepeatedExtensionsSwapped( ASSERT_EQ(2, message.ExtensionSize(unittest::repeated_nested_message_extension )); ASSERT_EQ(2, message.ExtensionSize(unittest::repeated_foreign_message_extension)); ASSERT_EQ(2, message.ExtensionSize(unittest::repeated_import_message_extension )); + ASSERT_EQ(2, message.ExtensionSize(unittest::repeated_lazy_message_extension )); ASSERT_EQ(2, message.ExtensionSize(unittest::repeated_nested_enum_extension )); ASSERT_EQ(2, message.ExtensionSize(unittest::repeated_foreign_enum_extension )); ASSERT_EQ(2, message.ExtensionSize(unittest::repeated_import_enum_extension )); @@ -1972,7 +2072,7 @@ void TestUtil::ExpectRepeatedExtensionsSwapped( EXPECT_EQ(210 , message.GetExtension(unittest::repeated_sfixed64_extension, 1)); EXPECT_EQ(211 , message.GetExtension(unittest::repeated_float_extension , 1)); EXPECT_EQ(212 , message.GetExtension(unittest::repeated_double_extension , 1)); - EXPECT_EQ(true , message.GetExtension(unittest::repeated_bool_extension , 1)); + EXPECT_TRUE( message.GetExtension(unittest::repeated_bool_extension , 1)); EXPECT_EQ("215", message.GetExtension(unittest::repeated_string_extension , 1)); EXPECT_EQ("216", message.GetExtension(unittest::repeated_bytes_extension , 1)); @@ -1980,6 +2080,7 @@ void TestUtil::ExpectRepeatedExtensionsSwapped( EXPECT_EQ(218, message.GetExtension(unittest::repeated_nested_message_extension , 1).bb()); EXPECT_EQ(219, message.GetExtension(unittest::repeated_foreign_message_extension, 1).c()); EXPECT_EQ(220, message.GetExtension(unittest::repeated_import_message_extension , 1).d()); + EXPECT_EQ(227, message.GetExtension(unittest::repeated_lazy_message_extension , 1).bb()); EXPECT_EQ(unittest::TestAllTypes::BAR, message.GetExtension(unittest::repeated_nested_enum_extension , 1)); EXPECT_EQ(unittest::FOREIGN_BAR , message.GetExtension(unittest::repeated_foreign_enum_extension, 1)); @@ -2000,7 +2101,7 @@ void TestUtil::ExpectRepeatedExtensionsSwapped( EXPECT_EQ(310 , message.GetExtension(unittest::repeated_sfixed64_extension, 0)); EXPECT_EQ(311 , message.GetExtension(unittest::repeated_float_extension , 0)); EXPECT_EQ(312 , message.GetExtension(unittest::repeated_double_extension , 0)); - EXPECT_EQ(false, message.GetExtension(unittest::repeated_bool_extension , 0)); + EXPECT_FALSE( message.GetExtension(unittest::repeated_bool_extension , 0)); EXPECT_EQ("315", message.GetExtension(unittest::repeated_string_extension , 0)); EXPECT_EQ("316", message.GetExtension(unittest::repeated_bytes_extension , 0)); @@ -2008,6 +2109,7 @@ void TestUtil::ExpectRepeatedExtensionsSwapped( EXPECT_EQ(318, message.GetExtension(unittest::repeated_nested_message_extension , 0).bb()); EXPECT_EQ(319, message.GetExtension(unittest::repeated_foreign_message_extension, 0).c()); EXPECT_EQ(320, message.GetExtension(unittest::repeated_import_message_extension , 0).d()); + EXPECT_EQ(327, message.GetExtension(unittest::repeated_lazy_message_extension , 0).bb()); EXPECT_EQ(unittest::TestAllTypes::BAZ, message.GetExtension(unittest::repeated_nested_enum_extension , 0)); EXPECT_EQ(unittest::FOREIGN_BAZ , message.GetExtension(unittest::repeated_foreign_enum_extension, 0)); @@ -2031,6 +2133,8 @@ TestUtil::ReflectionTester::ReflectionTester( pool->FindFieldByName("protobuf_unittest.ForeignMessage.c"); import_d_ = pool->FindFieldByName("protobuf_unittest_import.ImportMessage.d"); + import_e_ = + pool->FindFieldByName("protobuf_unittest_import.PublicImportMessage.e"); nested_foo_ = pool->FindEnumValueByName("protobuf_unittest.TestAllTypes.FOO"); nested_bar_ = @@ -2067,6 +2171,7 @@ TestUtil::ReflectionTester::ReflectionTester( EXPECT_TRUE(nested_b_ != NULL); EXPECT_TRUE(foreign_c_ != NULL); EXPECT_TRUE(import_d_ != NULL); + EXPECT_TRUE(import_e_ != NULL); EXPECT_TRUE(nested_foo_ != NULL); EXPECT_TRUE(nested_bar_ != NULL); EXPECT_TRUE(nested_baz_ != NULL); @@ -2129,6 +2234,12 @@ void TestUtil::ReflectionTester::SetAllFieldsViaReflection(Message* message) { reflection->SetString(message, F("optional_string_piece"), "124"); reflection->SetString(message, F("optional_cord"), "125"); + sub_message = reflection->MutableMessage(message, F("optional_public_import_message")); + sub_message->GetReflection()->SetInt32(sub_message, import_e_, 126); + + sub_message = reflection->MutableMessage(message, F("optional_lazy_message")); + sub_message->GetReflection()->SetInt32(sub_message, nested_b_, 127); + // ----------------------------------------------------------------- reflection->AddInt32 (message, F("repeated_int32" ), 201); @@ -2155,6 +2266,8 @@ void TestUtil::ReflectionTester::SetAllFieldsViaReflection(Message* message) { sub_message->GetReflection()->SetInt32(sub_message, foreign_c_, 219); sub_message = reflection->AddMessage(message, F("repeated_import_message")); sub_message->GetReflection()->SetInt32(sub_message, import_d_, 220); + sub_message = reflection->AddMessage(message, F("repeated_lazy_message")); + sub_message->GetReflection()->SetInt32(sub_message, nested_b_, 227); reflection->AddEnum(message, F("repeated_nested_enum" ), nested_bar_); reflection->AddEnum(message, F("repeated_foreign_enum"), foreign_bar_); @@ -2188,6 +2301,8 @@ void TestUtil::ReflectionTester::SetAllFieldsViaReflection(Message* message) { sub_message->GetReflection()->SetInt32(sub_message, foreign_c_, 319); sub_message = reflection->AddMessage(message, F("repeated_import_message")); sub_message->GetReflection()->SetInt32(sub_message, import_d_, 320); + sub_message = reflection->AddMessage(message, F("repeated_lazy_message")); + sub_message->GetReflection()->SetInt32(sub_message, nested_b_, 327); reflection->AddEnum(message, F("repeated_nested_enum" ), nested_baz_); reflection->AddEnum(message, F("repeated_foreign_enum"), foreign_baz_); @@ -2289,10 +2404,12 @@ void TestUtil::ReflectionTester::ExpectAllFieldsSetViaReflection1( EXPECT_TRUE(reflection->HasField(message, F("optional_string" ))); EXPECT_TRUE(reflection->HasField(message, F("optional_bytes" ))); - EXPECT_TRUE(reflection->HasField(message, F("optionalgroup" ))); - EXPECT_TRUE(reflection->HasField(message, F("optional_nested_message" ))); - EXPECT_TRUE(reflection->HasField(message, F("optional_foreign_message"))); - EXPECT_TRUE(reflection->HasField(message, F("optional_import_message" ))); + EXPECT_TRUE(reflection->HasField(message, F("optionalgroup" ))); + EXPECT_TRUE(reflection->HasField(message, F("optional_nested_message" ))); + EXPECT_TRUE(reflection->HasField(message, F("optional_foreign_message" ))); + EXPECT_TRUE(reflection->HasField(message, F("optional_import_message" ))); + EXPECT_TRUE(reflection->HasField(message, F("optional_public_import_message"))); + EXPECT_TRUE(reflection->HasField(message, F("optional_lazy_message" ))); sub_message = &reflection->GetMessage(message, F("optionalgroup")); EXPECT_TRUE(sub_message->GetReflection()->HasField(*sub_message, group_a_)); @@ -2302,6 +2419,10 @@ void TestUtil::ReflectionTester::ExpectAllFieldsSetViaReflection1( EXPECT_TRUE(sub_message->GetReflection()->HasField(*sub_message, foreign_c_)); sub_message = &reflection->GetMessage(message, F("optional_import_message")); EXPECT_TRUE(sub_message->GetReflection()->HasField(*sub_message, import_d_)); + sub_message = &reflection->GetMessage(message, F("optional_public_import_message")); + EXPECT_TRUE(sub_message->GetReflection()->HasField(*sub_message, import_e_)); + sub_message = &reflection->GetMessage(message, F("optional_lazy_message")); + EXPECT_TRUE(sub_message->GetReflection()->HasField(*sub_message, nested_b_)); EXPECT_TRUE(reflection->HasField(message, F("optional_nested_enum" ))); EXPECT_TRUE(reflection->HasField(message, F("optional_foreign_enum"))); @@ -2322,7 +2443,7 @@ void TestUtil::ReflectionTester::ExpectAllFieldsSetViaReflection1( EXPECT_EQ(110 , reflection->GetInt64 (message, F("optional_sfixed64"))); EXPECT_EQ(111 , reflection->GetFloat (message, F("optional_float" ))); EXPECT_EQ(112 , reflection->GetDouble(message, F("optional_double" ))); - EXPECT_EQ(true , reflection->GetBool (message, F("optional_bool" ))); + EXPECT_TRUE( reflection->GetBool (message, F("optional_bool" ))); EXPECT_EQ("115", reflection->GetString(message, F("optional_string" ))); EXPECT_EQ("116", reflection->GetString(message, F("optional_bytes" ))); @@ -2337,6 +2458,10 @@ void TestUtil::ReflectionTester::ExpectAllFieldsSetViaReflection1( EXPECT_EQ(119, sub_message->GetReflection()->GetInt32(*sub_message, foreign_c_)); sub_message = &reflection->GetMessage(message, F("optional_import_message")); EXPECT_EQ(120, sub_message->GetReflection()->GetInt32(*sub_message, import_d_)); + sub_message = &reflection->GetMessage(message, F("optional_public_import_message")); + EXPECT_EQ(126, sub_message->GetReflection()->GetInt32(*sub_message, import_e_)); + sub_message = &reflection->GetMessage(message, F("optional_lazy_message")); + EXPECT_EQ(127, sub_message->GetReflection()->GetInt32(*sub_message, nested_b_)); EXPECT_EQ( nested_baz_, reflection->GetEnum(message, F("optional_nested_enum" ))); EXPECT_EQ(foreign_baz_, reflection->GetEnum(message, F("optional_foreign_enum"))); @@ -2347,6 +2472,7 @@ void TestUtil::ReflectionTester::ExpectAllFieldsSetViaReflection1( EXPECT_EQ("125", reflection->GetString(message, F("optional_cord"))); EXPECT_EQ("125", reflection->GetStringReference(message, F("optional_cord"), &scratch)); + } void TestUtil::ReflectionTester::ExpectAllFieldsSetViaReflection2( @@ -2377,6 +2503,7 @@ void TestUtil::ReflectionTester::ExpectAllFieldsSetViaReflection2( ASSERT_EQ(2, reflection->FieldSize(message, F("repeated_nested_message" ))); ASSERT_EQ(2, reflection->FieldSize(message, F("repeated_foreign_message"))); ASSERT_EQ(2, reflection->FieldSize(message, F("repeated_import_message" ))); + ASSERT_EQ(2, reflection->FieldSize(message, F("repeated_lazy_message" ))); ASSERT_EQ(2, reflection->FieldSize(message, F("repeated_nested_enum" ))); ASSERT_EQ(2, reflection->FieldSize(message, F("repeated_foreign_enum" ))); ASSERT_EQ(2, reflection->FieldSize(message, F("repeated_import_enum" ))); @@ -2396,7 +2523,7 @@ void TestUtil::ReflectionTester::ExpectAllFieldsSetViaReflection2( EXPECT_EQ(210 , reflection->GetRepeatedInt64 (message, F("repeated_sfixed64"), 0)); EXPECT_EQ(211 , reflection->GetRepeatedFloat (message, F("repeated_float" ), 0)); EXPECT_EQ(212 , reflection->GetRepeatedDouble(message, F("repeated_double" ), 0)); - EXPECT_EQ(true , reflection->GetRepeatedBool (message, F("repeated_bool" ), 0)); + EXPECT_TRUE( reflection->GetRepeatedBool (message, F("repeated_bool" ), 0)); EXPECT_EQ("215", reflection->GetRepeatedString(message, F("repeated_string" ), 0)); EXPECT_EQ("216", reflection->GetRepeatedString(message, F("repeated_bytes" ), 0)); @@ -2411,6 +2538,8 @@ void TestUtil::ReflectionTester::ExpectAllFieldsSetViaReflection2( EXPECT_EQ(219, sub_message->GetReflection()->GetInt32(*sub_message, foreign_c_)); sub_message = &reflection->GetRepeatedMessage(message, F("repeated_import_message"), 0); EXPECT_EQ(220, sub_message->GetReflection()->GetInt32(*sub_message, import_d_)); + sub_message = &reflection->GetRepeatedMessage(message, F("repeated_lazy_message"), 0); + EXPECT_EQ(227, sub_message->GetReflection()->GetInt32(*sub_message, nested_b_)); EXPECT_EQ( nested_bar_, reflection->GetRepeatedEnum(message, F("repeated_nested_enum" ),0)); EXPECT_EQ(foreign_bar_, reflection->GetRepeatedEnum(message, F("repeated_foreign_enum"),0)); @@ -2436,7 +2565,7 @@ void TestUtil::ReflectionTester::ExpectAllFieldsSetViaReflection2( EXPECT_EQ(310 , reflection->GetRepeatedInt64 (message, F("repeated_sfixed64"), 1)); EXPECT_EQ(311 , reflection->GetRepeatedFloat (message, F("repeated_float" ), 1)); EXPECT_EQ(312 , reflection->GetRepeatedDouble(message, F("repeated_double" ), 1)); - EXPECT_EQ(false, reflection->GetRepeatedBool (message, F("repeated_bool" ), 1)); + EXPECT_FALSE( reflection->GetRepeatedBool (message, F("repeated_bool" ), 1)); EXPECT_EQ("315", reflection->GetRepeatedString(message, F("repeated_string" ), 1)); EXPECT_EQ("316", reflection->GetRepeatedString(message, F("repeated_bytes" ), 1)); @@ -2453,6 +2582,8 @@ void TestUtil::ReflectionTester::ExpectAllFieldsSetViaReflection2( EXPECT_EQ(319, sub_message->GetReflection()->GetInt32(*sub_message, foreign_c_)); sub_message = &reflection->GetRepeatedMessage(message, F("repeated_import_message"), 1); EXPECT_EQ(320, sub_message->GetReflection()->GetInt32(*sub_message, import_d_)); + sub_message = &reflection->GetRepeatedMessage(message, F("repeated_lazy_message"), 1); + EXPECT_EQ(327, sub_message->GetReflection()->GetInt32(*sub_message, nested_b_)); EXPECT_EQ( nested_baz_, reflection->GetRepeatedEnum(message, F("repeated_nested_enum" ),1)); EXPECT_EQ(foreign_baz_, reflection->GetRepeatedEnum(message, F("repeated_foreign_enum"),1)); @@ -2509,7 +2640,7 @@ void TestUtil::ReflectionTester::ExpectAllFieldsSetViaReflection3( EXPECT_EQ(410 , reflection->GetInt64 (message, F("default_sfixed64"))); EXPECT_EQ(411 , reflection->GetFloat (message, F("default_float" ))); EXPECT_EQ(412 , reflection->GetDouble(message, F("default_double" ))); - EXPECT_EQ(false, reflection->GetBool (message, F("default_bool" ))); + EXPECT_FALSE( reflection->GetBool (message, F("default_bool" ))); EXPECT_EQ("415", reflection->GetString(message, F("default_string" ))); EXPECT_EQ("416", reflection->GetString(message, F("default_bytes" ))); @@ -2559,7 +2690,7 @@ void TestUtil::ReflectionTester::ExpectPackedFieldsSetViaReflection( EXPECT_EQ(610 , reflection->GetRepeatedInt64 (message, F("packed_sfixed64"), 0)); EXPECT_EQ(611 , reflection->GetRepeatedFloat (message, F("packed_float" ), 0)); EXPECT_EQ(612 , reflection->GetRepeatedDouble(message, F("packed_double" ), 0)); - EXPECT_EQ(true , reflection->GetRepeatedBool (message, F("packed_bool" ), 0)); + EXPECT_TRUE( reflection->GetRepeatedBool (message, F("packed_bool" ), 0)); EXPECT_EQ(foreign_bar_, reflection->GetRepeatedEnum(message, F("packed_enum"), 0)); @@ -2575,7 +2706,7 @@ void TestUtil::ReflectionTester::ExpectPackedFieldsSetViaReflection( EXPECT_EQ(710 , reflection->GetRepeatedInt64 (message, F("packed_sfixed64"), 1)); EXPECT_EQ(711 , reflection->GetRepeatedFloat (message, F("packed_float" ), 1)); EXPECT_EQ(712 , reflection->GetRepeatedDouble(message, F("packed_double" ), 1)); - EXPECT_EQ(false, reflection->GetRepeatedBool (message, F("packed_bool" ), 1)); + EXPECT_FALSE( reflection->GetRepeatedBool (message, F("packed_bool" ), 1)); EXPECT_EQ(foreign_baz_, reflection->GetRepeatedEnum(message, F("packed_enum"), 1)); } @@ -2609,6 +2740,8 @@ void TestUtil::ReflectionTester::ExpectClearViaReflection( EXPECT_FALSE(reflection->HasField(message, F("optional_nested_message" ))); EXPECT_FALSE(reflection->HasField(message, F("optional_foreign_message"))); EXPECT_FALSE(reflection->HasField(message, F("optional_import_message" ))); + EXPECT_FALSE(reflection->HasField(message, F("optional_public_import_message"))); + EXPECT_FALSE(reflection->HasField(message, F("optional_lazy_message"))); EXPECT_FALSE(reflection->HasField(message, F("optional_nested_enum" ))); EXPECT_FALSE(reflection->HasField(message, F("optional_foreign_enum"))); @@ -2630,7 +2763,7 @@ void TestUtil::ReflectionTester::ExpectClearViaReflection( EXPECT_EQ(0 , reflection->GetInt64 (message, F("optional_sfixed64"))); EXPECT_EQ(0 , reflection->GetFloat (message, F("optional_float" ))); EXPECT_EQ(0 , reflection->GetDouble(message, F("optional_double" ))); - EXPECT_EQ(false, reflection->GetBool (message, F("optional_bool" ))); + EXPECT_FALSE( reflection->GetBool (message, F("optional_bool" ))); EXPECT_EQ("" , reflection->GetString(message, F("optional_string" ))); EXPECT_EQ("" , reflection->GetString(message, F("optional_bytes" ))); @@ -2650,6 +2783,12 @@ void TestUtil::ReflectionTester::ExpectClearViaReflection( sub_message = &reflection->GetMessage(message, F("optional_import_message")); EXPECT_FALSE(sub_message->GetReflection()->HasField(*sub_message, import_d_)); EXPECT_EQ(0, sub_message->GetReflection()->GetInt32(*sub_message, import_d_)); + sub_message = &reflection->GetMessage(message, F("optional_public_import_message")); + EXPECT_FALSE(sub_message->GetReflection()->HasField(*sub_message, import_e_)); + EXPECT_EQ(0, sub_message->GetReflection()->GetInt32(*sub_message, import_e_)); + sub_message = &reflection->GetMessage(message, F("optional_lazy_message")); + EXPECT_FALSE(sub_message->GetReflection()->HasField(*sub_message, nested_b_)); + EXPECT_EQ(0, sub_message->GetReflection()->GetInt32(*sub_message, nested_b_)); // Enums without defaults are set to the first value in the enum. EXPECT_EQ( nested_foo_, reflection->GetEnum(message, F("optional_nested_enum" ))); @@ -2683,6 +2822,7 @@ void TestUtil::ReflectionTester::ExpectClearViaReflection( EXPECT_EQ(0, reflection->FieldSize(message, F("repeated_nested_message" ))); EXPECT_EQ(0, reflection->FieldSize(message, F("repeated_foreign_message"))); EXPECT_EQ(0, reflection->FieldSize(message, F("repeated_import_message" ))); + EXPECT_EQ(0, reflection->FieldSize(message, F("repeated_lazy_message" ))); EXPECT_EQ(0, reflection->FieldSize(message, F("repeated_nested_enum" ))); EXPECT_EQ(0, reflection->FieldSize(message, F("repeated_foreign_enum" ))); EXPECT_EQ(0, reflection->FieldSize(message, F("repeated_import_enum" ))); @@ -2727,7 +2867,7 @@ void TestUtil::ReflectionTester::ExpectClearViaReflection( EXPECT_EQ(-50 , reflection->GetInt64 (message, F("default_sfixed64"))); EXPECT_EQ( 51.5 , reflection->GetFloat (message, F("default_float" ))); EXPECT_EQ( 52e3 , reflection->GetDouble(message, F("default_double" ))); - EXPECT_EQ(true , reflection->GetBool (message, F("default_bool" ))); + EXPECT_TRUE( reflection->GetBool (message, F("default_bool" ))); EXPECT_EQ("hello", reflection->GetString(message, F("default_string" ))); EXPECT_EQ("world", reflection->GetString(message, F("default_bytes" ))); @@ -2796,6 +2936,8 @@ void TestUtil::ReflectionTester::ModifyRepeatedFieldsViaReflection( sub_message->GetReflection()->SetInt32(sub_message, foreign_c_, 519); sub_message = reflection->MutableRepeatedMessage(message, F("repeated_import_message"), 1); sub_message->GetReflection()->SetInt32(sub_message, import_d_, 520); + sub_message = reflection->MutableRepeatedMessage(message, F("repeated_lazy_message"), 1); + sub_message->GetReflection()->SetInt32(sub_message, nested_b_, 527); reflection->SetRepeatedEnum(message, F("repeated_nested_enum" ), 1, nested_foo_); reflection->SetRepeatedEnum(message, F("repeated_foreign_enum"), 1, foreign_foo_); @@ -2824,7 +2966,8 @@ void TestUtil::ReflectionTester::ModifyPackedFieldsViaReflection( reflection->SetRepeatedEnum (message, F("packed_enum" ), 1, foreign_foo_); } -void TestUtil::ReflectionTester::RemoveLastRepeatedsViaReflection(Message* message) { +void TestUtil::ReflectionTester::RemoveLastRepeatedsViaReflection( + Message* message) { const Reflection* reflection = message->GetReflection(); vector output; @@ -2837,6 +2980,26 @@ void TestUtil::ReflectionTester::RemoveLastRepeatedsViaReflection(Message* messa } } +void TestUtil::ReflectionTester::ReleaseLastRepeatedsViaReflection( + Message* message, bool expect_extensions_notnull) { + const Reflection* reflection = message->GetReflection(); + + vector output; + reflection->ListFields(*message, &output); + for (int i=0; iis_repeated()) continue; + if (field->cpp_type() != FieldDescriptor::CPPTYPE_MESSAGE) continue; + + Message* released = reflection->ReleaseLast(message, field); + if (!field->is_extension() || expect_extensions_notnull) { + ASSERT_TRUE(released != NULL) << "ReleaseLast returned NULL for: " + << field->name(); + } + delete released; + } +} + void TestUtil::ReflectionTester::SwapRepeatedsViaReflection(Message* message) { const Reflection* reflection = message->GetReflection(); @@ -2850,5 +3013,35 @@ void TestUtil::ReflectionTester::SwapRepeatedsViaReflection(Message* message) { } } +void TestUtil::ReflectionTester::ExpectMessagesReleasedViaReflection( + Message* message, + TestUtil::ReflectionTester::MessageReleaseState expected_release_state) { + const Reflection* reflection = message->GetReflection(); + + static const char* fields[] = { + "optionalgroup", + "optional_nested_message", + "optional_foreign_message", + "optional_import_message", + }; + for (int i = 0; i < GOOGLE_ARRAYSIZE(fields); i++) { + const Message& sub_message = reflection->GetMessage(*message, F(fields[i])); + Message* released = reflection->ReleaseMessage(message, F(fields[i])); + switch (expected_release_state) { + case IS_NULL: + EXPECT_TRUE(released == NULL); + break; + case NOT_NULL: + EXPECT_TRUE(released != NULL); + EXPECT_EQ(&sub_message, released); + break; + case CAN_BE_NULL: + break; + } + delete released; + EXPECT_FALSE(reflection->HasField(*message, F(fields[i]))); + } +} + } // namespace protobuf } // namespace google diff --git a/cpp/thirdparty/protobuf-2.3.0/src/google/protobuf/test_util.h b/cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/test_util.h similarity index 89% rename from cpp/thirdparty/protobuf-2.3.0/src/google/protobuf/test_util.h rename to cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/test_util.h index 25165f3ad..455195734 100644 --- a/cpp/thirdparty/protobuf-2.3.0/src/google/protobuf/test_util.h +++ b/cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/test_util.h @@ -43,13 +43,17 @@ namespace google { namespace protobuf { -namespace unittest = protobuf_unittest; +namespace unittest = ::protobuf_unittest; namespace unittest_import = protobuf_unittest_import; class TestUtil { public: // Set every field in the message to a unique value. static void SetAllFields(unittest::TestAllTypes* message); + static void SetOptionalFields(unittest::TestAllTypes* message); + static void AddRepeatedFields1(unittest::TestAllTypes* message); + static void AddRepeatedFields2(unittest::TestAllTypes* message); + static void SetDefaultFields(unittest::TestAllTypes* message); static void SetAllExtensions(unittest::TestAllExtensions* message); static void SetAllFieldsAndExtensions(unittest::TestFieldOrderings* message); static void SetPackedFields(unittest::TestPackedTypes* message); @@ -104,6 +108,10 @@ class TestUtil { const unittest::TestAllTypes& message); static void ExpectLastRepeatedExtensionsRemoved( const unittest::TestAllExtensions& message); + static void ExpectLastRepeatedsReleased( + const unittest::TestAllTypes& message); + static void ExpectLastRepeatedExtensionsReleased( + const unittest::TestAllExtensions& message); // Check that all repeated fields have had their first and last elements // swapped. @@ -132,8 +140,18 @@ class TestUtil { void ExpectPackedClearViaReflection(const Message& message); void RemoveLastRepeatedsViaReflection(Message* message); + void ReleaseLastRepeatedsViaReflection( + Message* message, bool expect_extensions_notnull); void SwapRepeatedsViaReflection(Message* message); + enum MessageReleaseState { + IS_NULL, + CAN_BE_NULL, + NOT_NULL, + }; + void ExpectMessagesReleasedViaReflection( + Message* message, MessageReleaseState expected_release_state); + private: const FieldDescriptor* F(const string& name); @@ -144,6 +162,7 @@ class TestUtil { const FieldDescriptor* nested_b_; const FieldDescriptor* foreign_c_; const FieldDescriptor* import_d_; + const FieldDescriptor* import_e_; const EnumValueDescriptor* nested_foo_; const EnumValueDescriptor* nested_bar_; diff --git a/cpp/thirdparty/protobuf-2.3.0/src/google/protobuf/test_util_lite.cc b/cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/test_util_lite.cc similarity index 93% rename from cpp/thirdparty/protobuf-2.3.0/src/google/protobuf/test_util_lite.cc rename to cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/test_util_lite.cc index d7140e0ca..9099292ab 100644 --- a/cpp/thirdparty/protobuf-2.3.0/src/google/protobuf/test_util_lite.cc +++ b/cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/test_util_lite.cc @@ -62,10 +62,12 @@ void TestUtilLite::SetAllFields(unittest::TestAllTypesLite* message) { message->set_optional_string ("115"); message->set_optional_bytes ("116"); - message->mutable_optionalgroup ()->set_a(117); - message->mutable_optional_nested_message ()->set_bb(118); - message->mutable_optional_foreign_message()->set_c(119); - message->mutable_optional_import_message ()->set_d(120); + message->mutable_optionalgroup ()->set_a(117); + message->mutable_optional_nested_message ()->set_bb(118); + message->mutable_optional_foreign_message ()->set_c(119); + message->mutable_optional_import_message ()->set_d(120); + message->mutable_optional_public_import_message()->set_e(126); + message->mutable_optional_lazy_message ()->set_bb(127); message->set_optional_nested_enum (unittest::TestAllTypesLite::BAZ ); message->set_optional_foreign_enum(unittest::FOREIGN_LITE_BAZ ); @@ -94,6 +96,7 @@ void TestUtilLite::SetAllFields(unittest::TestAllTypesLite* message) { message->add_repeated_nested_message ()->set_bb(218); message->add_repeated_foreign_message()->set_c(219); message->add_repeated_import_message ()->set_d(220); + message->add_repeated_lazy_message ()->set_bb(227); message->add_repeated_nested_enum (unittest::TestAllTypesLite::BAR ); message->add_repeated_foreign_enum(unittest::FOREIGN_LITE_BAR ); @@ -121,6 +124,7 @@ void TestUtilLite::SetAllFields(unittest::TestAllTypesLite* message) { message->add_repeated_nested_message ()->set_bb(318); message->add_repeated_foreign_message()->set_c(319); message->add_repeated_import_message ()->set_d(320); + message->add_repeated_lazy_message ()->set_bb(327); message->add_repeated_nested_enum (unittest::TestAllTypesLite::BAZ ); message->add_repeated_foreign_enum(unittest::FOREIGN_LITE_BAZ ); @@ -174,6 +178,7 @@ void TestUtilLite::ModifyRepeatedFields(unittest::TestAllTypesLite* message) { message->mutable_repeated_nested_message (1)->set_bb(518); message->mutable_repeated_foreign_message(1)->set_c(519); message->mutable_repeated_import_message (1)->set_d(520); + message->mutable_repeated_lazy_message (1)->set_bb(527); message->set_repeated_nested_enum (1, unittest::TestAllTypesLite::FOO ); message->set_repeated_foreign_enum(1, unittest::FOREIGN_LITE_FOO ); @@ -201,15 +206,19 @@ void TestUtilLite::ExpectAllFieldsSet( EXPECT_TRUE(message.has_optional_string ()); EXPECT_TRUE(message.has_optional_bytes ()); - EXPECT_TRUE(message.has_optionalgroup ()); - EXPECT_TRUE(message.has_optional_nested_message ()); - EXPECT_TRUE(message.has_optional_foreign_message()); - EXPECT_TRUE(message.has_optional_import_message ()); + EXPECT_TRUE(message.has_optionalgroup ()); + EXPECT_TRUE(message.has_optional_nested_message ()); + EXPECT_TRUE(message.has_optional_foreign_message ()); + EXPECT_TRUE(message.has_optional_import_message ()); + EXPECT_TRUE(message.has_optional_public_import_message()); + EXPECT_TRUE(message.has_optional_lazy_message ()); - EXPECT_TRUE(message.optionalgroup ().has_a()); - EXPECT_TRUE(message.optional_nested_message ().has_bb()); - EXPECT_TRUE(message.optional_foreign_message().has_c()); - EXPECT_TRUE(message.optional_import_message ().has_d()); + EXPECT_TRUE(message.optionalgroup ().has_a()); + EXPECT_TRUE(message.optional_nested_message ().has_bb()); + EXPECT_TRUE(message.optional_foreign_message ().has_c()); + EXPECT_TRUE(message.optional_import_message ().has_d()); + EXPECT_TRUE(message.optional_public_import_message().has_e()); + EXPECT_TRUE(message.optional_lazy_message ().has_bb()); EXPECT_TRUE(message.has_optional_nested_enum ()); EXPECT_TRUE(message.has_optional_foreign_enum()); @@ -232,10 +241,12 @@ void TestUtilLite::ExpectAllFieldsSet( EXPECT_EQ("115", message.optional_string ()); EXPECT_EQ("116", message.optional_bytes ()); - EXPECT_EQ(117, message.optionalgroup ().a()); - EXPECT_EQ(118, message.optional_nested_message ().bb()); - EXPECT_EQ(119, message.optional_foreign_message().c()); - EXPECT_EQ(120, message.optional_import_message ().d()); + EXPECT_EQ(117, message.optionalgroup ().a()); + EXPECT_EQ(118, message.optional_nested_message ().bb()); + EXPECT_EQ(119, message.optional_foreign_message ().c()); + EXPECT_EQ(120, message.optional_import_message ().d()); + EXPECT_EQ(126, message.optional_public_import_message().e()); + EXPECT_EQ(127, message.optional_lazy_message ().bb()); EXPECT_EQ(unittest::TestAllTypesLite::BAZ , message.optional_nested_enum ()); EXPECT_EQ(unittest::FOREIGN_LITE_BAZ , message.optional_foreign_enum()); @@ -264,6 +275,7 @@ void TestUtilLite::ExpectAllFieldsSet( ASSERT_EQ(2, message.repeated_nested_message_size ()); ASSERT_EQ(2, message.repeated_foreign_message_size()); ASSERT_EQ(2, message.repeated_import_message_size ()); + ASSERT_EQ(2, message.repeated_lazy_message_size ()); ASSERT_EQ(2, message.repeated_nested_enum_size ()); ASSERT_EQ(2, message.repeated_foreign_enum_size ()); ASSERT_EQ(2, message.repeated_import_enum_size ()); @@ -289,6 +301,7 @@ void TestUtilLite::ExpectAllFieldsSet( EXPECT_EQ(218, message.repeated_nested_message (0).bb()); EXPECT_EQ(219, message.repeated_foreign_message(0).c()); EXPECT_EQ(220, message.repeated_import_message (0).d()); + EXPECT_EQ(227, message.repeated_lazy_message (0).bb()); EXPECT_EQ(unittest::TestAllTypesLite::BAR , message.repeated_nested_enum (0)); @@ -315,6 +328,7 @@ void TestUtilLite::ExpectAllFieldsSet( EXPECT_EQ(318, message.repeated_nested_message (1).bb()); EXPECT_EQ(319, message.repeated_foreign_message(1).c()); EXPECT_EQ(320, message.repeated_import_message (1).d()); + EXPECT_EQ(327, message.repeated_lazy_message (1).bb()); EXPECT_EQ(unittest::TestAllTypesLite::BAZ , message.repeated_nested_enum (1)); EXPECT_EQ(unittest::FOREIGN_LITE_BAZ , message.repeated_foreign_enum(1)); @@ -386,10 +400,12 @@ void TestUtilLite::ExpectClear(const unittest::TestAllTypesLite& message) { EXPECT_FALSE(message.has_optional_string ()); EXPECT_FALSE(message.has_optional_bytes ()); - EXPECT_FALSE(message.has_optionalgroup ()); - EXPECT_FALSE(message.has_optional_nested_message ()); - EXPECT_FALSE(message.has_optional_foreign_message()); - EXPECT_FALSE(message.has_optional_import_message ()); + EXPECT_FALSE(message.has_optionalgroup ()); + EXPECT_FALSE(message.has_optional_nested_message ()); + EXPECT_FALSE(message.has_optional_foreign_message ()); + EXPECT_FALSE(message.has_optional_import_message ()); + EXPECT_FALSE(message.has_optional_public_import_message()); + EXPECT_FALSE(message.has_optional_lazy_message ()); EXPECT_FALSE(message.has_optional_nested_enum ()); EXPECT_FALSE(message.has_optional_foreign_enum()); @@ -414,10 +430,12 @@ void TestUtilLite::ExpectClear(const unittest::TestAllTypesLite& message) { EXPECT_EQ("" , message.optional_bytes ()); // Embedded messages should also be clear. - EXPECT_FALSE(message.optionalgroup ().has_a()); - EXPECT_FALSE(message.optional_nested_message ().has_bb()); - EXPECT_FALSE(message.optional_foreign_message().has_c()); - EXPECT_FALSE(message.optional_import_message ().has_d()); + EXPECT_FALSE(message.optionalgroup ().has_a()); + EXPECT_FALSE(message.optional_nested_message ().has_bb()); + EXPECT_FALSE(message.optional_foreign_message ().has_c()); + EXPECT_FALSE(message.optional_import_message ().has_d()); + EXPECT_FALSE(message.optional_public_import_message().has_e()); + EXPECT_FALSE(message.optional_lazy_message ().has_bb()); EXPECT_EQ(0, message.optionalgroup ().a()); EXPECT_EQ(0, message.optional_nested_message ().bb()); @@ -451,6 +469,7 @@ void TestUtilLite::ExpectClear(const unittest::TestAllTypesLite& message) { EXPECT_EQ(0, message.repeated_nested_message_size ()); EXPECT_EQ(0, message.repeated_foreign_message_size()); EXPECT_EQ(0, message.repeated_import_message_size ()); + EXPECT_EQ(0, message.repeated_lazy_message_size ()); EXPECT_EQ(0, message.repeated_nested_enum_size ()); EXPECT_EQ(0, message.repeated_foreign_enum_size ()); EXPECT_EQ(0, message.repeated_import_enum_size ()); @@ -528,6 +547,7 @@ void TestUtilLite::ExpectRepeatedFieldsModified( ASSERT_EQ(2, message.repeated_nested_message_size ()); ASSERT_EQ(2, message.repeated_foreign_message_size()); ASSERT_EQ(2, message.repeated_import_message_size ()); + ASSERT_EQ(2, message.repeated_lazy_message_size ()); ASSERT_EQ(2, message.repeated_nested_enum_size ()); ASSERT_EQ(2, message.repeated_foreign_enum_size ()); ASSERT_EQ(2, message.repeated_import_enum_size ()); @@ -553,6 +573,7 @@ void TestUtilLite::ExpectRepeatedFieldsModified( EXPECT_EQ(218, message.repeated_nested_message (0).bb()); EXPECT_EQ(219, message.repeated_foreign_message(0).c()); EXPECT_EQ(220, message.repeated_import_message (0).d()); + EXPECT_EQ(227, message.repeated_lazy_message (0).bb()); EXPECT_EQ(unittest::TestAllTypesLite::BAR , message.repeated_nested_enum (0)); EXPECT_EQ(unittest::FOREIGN_LITE_BAR , message.repeated_foreign_enum(0)); @@ -580,6 +601,7 @@ void TestUtilLite::ExpectRepeatedFieldsModified( EXPECT_EQ(518, message.repeated_nested_message (1).bb()); EXPECT_EQ(519, message.repeated_foreign_message(1).c()); EXPECT_EQ(520, message.repeated_import_message (1).d()); + EXPECT_EQ(527, message.repeated_lazy_message (1).bb()); EXPECT_EQ(unittest::TestAllTypesLite::FOO , message.repeated_nested_enum (1)); EXPECT_EQ(unittest::FOREIGN_LITE_FOO , message.repeated_foreign_enum(1)); @@ -787,10 +809,12 @@ void TestUtilLite::SetAllExtensions(unittest::TestAllExtensionsLite* message) { message->SetExtension(unittest::optional_string_extension_lite , "115"); message->SetExtension(unittest::optional_bytes_extension_lite , "116"); - message->MutableExtension(unittest::optionalgroup_extension_lite )->set_a(117); - message->MutableExtension(unittest::optional_nested_message_extension_lite )->set_bb(118); - message->MutableExtension(unittest::optional_foreign_message_extension_lite)->set_c(119); - message->MutableExtension(unittest::optional_import_message_extension_lite )->set_d(120); + message->MutableExtension(unittest::optionalgroup_extension_lite )->set_a(117); + message->MutableExtension(unittest::optional_nested_message_extension_lite )->set_bb(118); + message->MutableExtension(unittest::optional_foreign_message_extension_lite )->set_c(119); + message->MutableExtension(unittest::optional_import_message_extension_lite )->set_d(120); + message->MutableExtension(unittest::optional_public_import_message_extension_lite)->set_e(126); + message->MutableExtension(unittest::optional_lazy_message_extension_lite )->set_bb(127); message->SetExtension(unittest::optional_nested_enum_extension_lite , unittest::TestAllTypesLite::BAZ ); message->SetExtension(unittest::optional_foreign_enum_extension_lite, unittest::FOREIGN_LITE_BAZ ); @@ -819,6 +843,7 @@ void TestUtilLite::SetAllExtensions(unittest::TestAllExtensionsLite* message) { message->AddExtension(unittest::repeated_nested_message_extension_lite )->set_bb(218); message->AddExtension(unittest::repeated_foreign_message_extension_lite)->set_c(219); message->AddExtension(unittest::repeated_import_message_extension_lite )->set_d(220); + message->AddExtension(unittest::repeated_lazy_message_extension_lite )->set_bb(227); message->AddExtension(unittest::repeated_nested_enum_extension_lite , unittest::TestAllTypesLite::BAR ); message->AddExtension(unittest::repeated_foreign_enum_extension_lite, unittest::FOREIGN_LITE_BAR ); @@ -846,6 +871,7 @@ void TestUtilLite::SetAllExtensions(unittest::TestAllExtensionsLite* message) { message->AddExtension(unittest::repeated_nested_message_extension_lite )->set_bb(318); message->AddExtension(unittest::repeated_foreign_message_extension_lite)->set_c(319); message->AddExtension(unittest::repeated_import_message_extension_lite )->set_d(320); + message->AddExtension(unittest::repeated_lazy_message_extension_lite )->set_bb(327); message->AddExtension(unittest::repeated_nested_enum_extension_lite , unittest::TestAllTypesLite::BAZ ); message->AddExtension(unittest::repeated_foreign_enum_extension_lite, unittest::FOREIGN_LITE_BAZ ); @@ -900,6 +926,7 @@ void TestUtilLite::ModifyRepeatedExtensions( message->MutableExtension(unittest::repeated_nested_message_extension_lite , 1)->set_bb(518); message->MutableExtension(unittest::repeated_foreign_message_extension_lite, 1)->set_c(519); message->MutableExtension(unittest::repeated_import_message_extension_lite , 1)->set_d(520); + message->MutableExtension(unittest::repeated_lazy_message_extension_lite , 1)->set_bb(527); message->SetExtension(unittest::repeated_nested_enum_extension_lite , 1, unittest::TestAllTypesLite::FOO ); message->SetExtension(unittest::repeated_foreign_enum_extension_lite, 1, unittest::FOREIGN_LITE_FOO ); @@ -927,15 +954,19 @@ void TestUtilLite::ExpectAllExtensionsSet( EXPECT_TRUE(message.HasExtension(unittest::optional_string_extension_lite )); EXPECT_TRUE(message.HasExtension(unittest::optional_bytes_extension_lite )); - EXPECT_TRUE(message.HasExtension(unittest::optionalgroup_extension_lite )); - EXPECT_TRUE(message.HasExtension(unittest::optional_nested_message_extension_lite )); - EXPECT_TRUE(message.HasExtension(unittest::optional_foreign_message_extension_lite)); - EXPECT_TRUE(message.HasExtension(unittest::optional_import_message_extension_lite )); + EXPECT_TRUE(message.HasExtension(unittest::optionalgroup_extension_lite )); + EXPECT_TRUE(message.HasExtension(unittest::optional_nested_message_extension_lite )); + EXPECT_TRUE(message.HasExtension(unittest::optional_foreign_message_extension_lite )); + EXPECT_TRUE(message.HasExtension(unittest::optional_import_message_extension_lite )); + EXPECT_TRUE(message.HasExtension(unittest::optional_public_import_message_extension_lite)); + EXPECT_TRUE(message.HasExtension(unittest::optional_lazy_message_extension_lite )); - EXPECT_TRUE(message.GetExtension(unittest::optionalgroup_extension_lite ).has_a()); - EXPECT_TRUE(message.GetExtension(unittest::optional_nested_message_extension_lite ).has_bb()); - EXPECT_TRUE(message.GetExtension(unittest::optional_foreign_message_extension_lite).has_c()); - EXPECT_TRUE(message.GetExtension(unittest::optional_import_message_extension_lite ).has_d()); + EXPECT_TRUE(message.GetExtension(unittest::optionalgroup_extension_lite ).has_a()); + EXPECT_TRUE(message.GetExtension(unittest::optional_nested_message_extension_lite ).has_bb()); + EXPECT_TRUE(message.GetExtension(unittest::optional_foreign_message_extension_lite ).has_c()); + EXPECT_TRUE(message.GetExtension(unittest::optional_import_message_extension_lite ).has_d()); + EXPECT_TRUE(message.GetExtension(unittest::optional_public_import_message_extension_lite).has_e()); + EXPECT_TRUE(message.GetExtension(unittest::optional_lazy_message_extension_lite ).has_bb()); EXPECT_TRUE(message.HasExtension(unittest::optional_nested_enum_extension_lite )); EXPECT_TRUE(message.HasExtension(unittest::optional_foreign_enum_extension_lite)); @@ -958,10 +989,12 @@ void TestUtilLite::ExpectAllExtensionsSet( EXPECT_EQ("115", message.GetExtension(unittest::optional_string_extension_lite )); EXPECT_EQ("116", message.GetExtension(unittest::optional_bytes_extension_lite )); - EXPECT_EQ(117, message.GetExtension(unittest::optionalgroup_extension_lite ).a()); - EXPECT_EQ(118, message.GetExtension(unittest::optional_nested_message_extension_lite ).bb()); - EXPECT_EQ(119, message.GetExtension(unittest::optional_foreign_message_extension_lite).c()); - EXPECT_EQ(120, message.GetExtension(unittest::optional_import_message_extension_lite ).d()); + EXPECT_EQ(117, message.GetExtension(unittest::optionalgroup_extension_lite ).a()); + EXPECT_EQ(118, message.GetExtension(unittest::optional_nested_message_extension_lite ).bb()); + EXPECT_EQ(119, message.GetExtension(unittest::optional_foreign_message_extension_lite ).c()); + EXPECT_EQ(120, message.GetExtension(unittest::optional_import_message_extension_lite ).d()); + EXPECT_EQ(126, message.GetExtension(unittest::optional_public_import_message_extension_lite).e()); + EXPECT_EQ(127, message.GetExtension(unittest::optional_lazy_message_extension_lite ).bb()); EXPECT_EQ(unittest::TestAllTypesLite::BAZ , message.GetExtension(unittest::optional_nested_enum_extension_lite )); EXPECT_EQ(unittest::FOREIGN_LITE_BAZ , message.GetExtension(unittest::optional_foreign_enum_extension_lite)); @@ -990,6 +1023,7 @@ void TestUtilLite::ExpectAllExtensionsSet( ASSERT_EQ(2, message.ExtensionSize(unittest::repeated_nested_message_extension_lite )); ASSERT_EQ(2, message.ExtensionSize(unittest::repeated_foreign_message_extension_lite)); ASSERT_EQ(2, message.ExtensionSize(unittest::repeated_import_message_extension_lite )); + ASSERT_EQ(2, message.ExtensionSize(unittest::repeated_lazy_message_extension_lite )); ASSERT_EQ(2, message.ExtensionSize(unittest::repeated_nested_enum_extension_lite )); ASSERT_EQ(2, message.ExtensionSize(unittest::repeated_foreign_enum_extension_lite )); ASSERT_EQ(2, message.ExtensionSize(unittest::repeated_import_enum_extension_lite )); @@ -1015,6 +1049,7 @@ void TestUtilLite::ExpectAllExtensionsSet( EXPECT_EQ(218, message.GetExtension(unittest::repeated_nested_message_extension_lite , 0).bb()); EXPECT_EQ(219, message.GetExtension(unittest::repeated_foreign_message_extension_lite, 0).c()); EXPECT_EQ(220, message.GetExtension(unittest::repeated_import_message_extension_lite , 0).d()); + EXPECT_EQ(227, message.GetExtension(unittest::repeated_lazy_message_extension_lite , 0).bb()); EXPECT_EQ(unittest::TestAllTypesLite::BAR , message.GetExtension(unittest::repeated_nested_enum_extension_lite , 0)); EXPECT_EQ(unittest::FOREIGN_LITE_BAR , message.GetExtension(unittest::repeated_foreign_enum_extension_lite, 0)); @@ -1041,6 +1076,7 @@ void TestUtilLite::ExpectAllExtensionsSet( EXPECT_EQ(318, message.GetExtension(unittest::repeated_nested_message_extension_lite , 1).bb()); EXPECT_EQ(319, message.GetExtension(unittest::repeated_foreign_message_extension_lite, 1).c()); EXPECT_EQ(320, message.GetExtension(unittest::repeated_import_message_extension_lite , 1).d()); + EXPECT_EQ(327, message.GetExtension(unittest::repeated_lazy_message_extension_lite , 1).bb()); EXPECT_EQ(unittest::TestAllTypesLite::BAZ , message.GetExtension(unittest::repeated_nested_enum_extension_lite , 1)); EXPECT_EQ(unittest::FOREIGN_LITE_BAZ , message.GetExtension(unittest::repeated_foreign_enum_extension_lite, 1)); @@ -1118,10 +1154,12 @@ void TestUtilLite::ExpectExtensionsClear( EXPECT_FALSE(message.HasExtension(unittest::optional_string_extension_lite )); EXPECT_FALSE(message.HasExtension(unittest::optional_bytes_extension_lite )); - EXPECT_FALSE(message.HasExtension(unittest::optionalgroup_extension_lite )); - EXPECT_FALSE(message.HasExtension(unittest::optional_nested_message_extension_lite )); - EXPECT_FALSE(message.HasExtension(unittest::optional_foreign_message_extension_lite)); - EXPECT_FALSE(message.HasExtension(unittest::optional_import_message_extension_lite )); + EXPECT_FALSE(message.HasExtension(unittest::optionalgroup_extension_lite )); + EXPECT_FALSE(message.HasExtension(unittest::optional_nested_message_extension_lite )); + EXPECT_FALSE(message.HasExtension(unittest::optional_foreign_message_extension_lite )); + EXPECT_FALSE(message.HasExtension(unittest::optional_import_message_extension_lite )); + EXPECT_FALSE(message.HasExtension(unittest::optional_public_import_message_extension_lite)); + EXPECT_FALSE(message.HasExtension(unittest::optional_lazy_message_extension_lite )); EXPECT_FALSE(message.HasExtension(unittest::optional_nested_enum_extension_lite )); EXPECT_FALSE(message.HasExtension(unittest::optional_foreign_enum_extension_lite)); @@ -1146,15 +1184,19 @@ void TestUtilLite::ExpectExtensionsClear( EXPECT_EQ("" , message.GetExtension(unittest::optional_bytes_extension_lite )); // Embedded messages should also be clear. - EXPECT_FALSE(message.GetExtension(unittest::optionalgroup_extension_lite ).has_a()); - EXPECT_FALSE(message.GetExtension(unittest::optional_nested_message_extension_lite ).has_bb()); - EXPECT_FALSE(message.GetExtension(unittest::optional_foreign_message_extension_lite).has_c()); - EXPECT_FALSE(message.GetExtension(unittest::optional_import_message_extension_lite ).has_d()); - - EXPECT_EQ(0, message.GetExtension(unittest::optionalgroup_extension_lite ).a()); - EXPECT_EQ(0, message.GetExtension(unittest::optional_nested_message_extension_lite ).bb()); - EXPECT_EQ(0, message.GetExtension(unittest::optional_foreign_message_extension_lite).c()); - EXPECT_EQ(0, message.GetExtension(unittest::optional_import_message_extension_lite ).d()); + EXPECT_FALSE(message.GetExtension(unittest::optionalgroup_extension_lite ).has_a()); + EXPECT_FALSE(message.GetExtension(unittest::optional_nested_message_extension_lite ).has_bb()); + EXPECT_FALSE(message.GetExtension(unittest::optional_foreign_message_extension_lite ).has_c()); + EXPECT_FALSE(message.GetExtension(unittest::optional_import_message_extension_lite ).has_d()); + EXPECT_FALSE(message.GetExtension(unittest::optional_public_import_message_extension_lite).has_e()); + EXPECT_FALSE(message.GetExtension(unittest::optional_lazy_message_extension_lite ).has_bb()); + + EXPECT_EQ(0, message.GetExtension(unittest::optionalgroup_extension_lite ).a()); + EXPECT_EQ(0, message.GetExtension(unittest::optional_nested_message_extension_lite ).bb()); + EXPECT_EQ(0, message.GetExtension(unittest::optional_foreign_message_extension_lite ).c()); + EXPECT_EQ(0, message.GetExtension(unittest::optional_import_message_extension_lite ).d()); + EXPECT_EQ(0, message.GetExtension(unittest::optional_public_import_message_extension_lite).e()); + EXPECT_EQ(0, message.GetExtension(unittest::optional_lazy_message_extension_lite ).bb()); // Enums without defaults are set to the first value in the enum. EXPECT_EQ(unittest::TestAllTypesLite::FOO , message.GetExtension(unittest::optional_nested_enum_extension_lite )); @@ -1183,6 +1225,7 @@ void TestUtilLite::ExpectExtensionsClear( EXPECT_EQ(0, message.ExtensionSize(unittest::repeated_nested_message_extension_lite )); EXPECT_EQ(0, message.ExtensionSize(unittest::repeated_foreign_message_extension_lite)); EXPECT_EQ(0, message.ExtensionSize(unittest::repeated_import_message_extension_lite )); + EXPECT_EQ(0, message.ExtensionSize(unittest::repeated_lazy_message_extension_lite )); EXPECT_EQ(0, message.ExtensionSize(unittest::repeated_nested_enum_extension_lite )); EXPECT_EQ(0, message.ExtensionSize(unittest::repeated_foreign_enum_extension_lite )); EXPECT_EQ(0, message.ExtensionSize(unittest::repeated_import_enum_extension_lite )); @@ -1260,6 +1303,7 @@ void TestUtilLite::ExpectRepeatedExtensionsModified( ASSERT_EQ(2, message.ExtensionSize(unittest::repeated_nested_message_extension_lite )); ASSERT_EQ(2, message.ExtensionSize(unittest::repeated_foreign_message_extension_lite)); ASSERT_EQ(2, message.ExtensionSize(unittest::repeated_import_message_extension_lite )); + ASSERT_EQ(2, message.ExtensionSize(unittest::repeated_lazy_message_extension_lite )); ASSERT_EQ(2, message.ExtensionSize(unittest::repeated_nested_enum_extension_lite )); ASSERT_EQ(2, message.ExtensionSize(unittest::repeated_foreign_enum_extension_lite )); ASSERT_EQ(2, message.ExtensionSize(unittest::repeated_import_enum_extension_lite )); @@ -1285,6 +1329,7 @@ void TestUtilLite::ExpectRepeatedExtensionsModified( EXPECT_EQ(218, message.GetExtension(unittest::repeated_nested_message_extension_lite , 0).bb()); EXPECT_EQ(219, message.GetExtension(unittest::repeated_foreign_message_extension_lite, 0).c()); EXPECT_EQ(220, message.GetExtension(unittest::repeated_import_message_extension_lite , 0).d()); + EXPECT_EQ(227, message.GetExtension(unittest::repeated_lazy_message_extension_lite , 0).bb()); EXPECT_EQ(unittest::TestAllTypesLite::BAR , message.GetExtension(unittest::repeated_nested_enum_extension_lite , 0)); EXPECT_EQ(unittest::FOREIGN_LITE_BAR , message.GetExtension(unittest::repeated_foreign_enum_extension_lite, 0)); @@ -1312,6 +1357,7 @@ void TestUtilLite::ExpectRepeatedExtensionsModified( EXPECT_EQ(518, message.GetExtension(unittest::repeated_nested_message_extension_lite , 1).bb()); EXPECT_EQ(519, message.GetExtension(unittest::repeated_foreign_message_extension_lite, 1).c()); EXPECT_EQ(520, message.GetExtension(unittest::repeated_import_message_extension_lite , 1).d()); + EXPECT_EQ(527, message.GetExtension(unittest::repeated_lazy_message_extension_lite , 1).bb()); EXPECT_EQ(unittest::TestAllTypesLite::FOO , message.GetExtension(unittest::repeated_nested_enum_extension_lite , 1)); EXPECT_EQ(unittest::FOREIGN_LITE_FOO , message.GetExtension(unittest::repeated_foreign_enum_extension_lite, 1)); diff --git a/cpp/thirdparty/protobuf-2.3.0/src/google/protobuf/test_util_lite.h b/cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/test_util_lite.h similarity index 100% rename from cpp/thirdparty/protobuf-2.3.0/src/google/protobuf/test_util_lite.h rename to cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/test_util_lite.h diff --git a/cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/testdata/golden_message b/cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/testdata/golden_message new file mode 100644 index 0000000000000000000000000000000000000000..4dd62cd3bbd87cbdcdb765e1ae69f6a673287806 GIT binary patch literal 509 zcmd-`6-bjvSIE$~#AtAZ(Kefbfx$6{0Rnt;85kG>^B^3CSO$iBPKgjsj6()v5woG8 zX%(}fp;4WW+Ow>M@-DdhNiDTY_nG&w%KQ< zA51qHzc7L5y-Z)2nwXh6ZZU$$eN0`<%pA8FLF9g>NzBX~cNjtB0j3$uOf#677cjFf zU}jsv%&~%*a}zVOk&($JW@cj}lU*RT=`Il4^b|8Q$74nid7SA5^F-zk%#)aZFi&P~ zV41?)!Lo{N0?Qh& ScopedMemoryLog::GetMessages(LogLevel dummy) const { - GOOGLE_CHECK_EQ(dummy, ERROR); - return messages_; +const vector& ScopedMemoryLog::GetMessages(LogLevel level) { + GOOGLE_CHECK(level == ERROR || + level == WARNING); + return messages_[level]; } void ScopedMemoryLog::HandleLog(LogLevel level, const char* filename, int line, const string& message) { GOOGLE_CHECK(active_log_ != NULL); - if (level == ERROR) { - active_log_->messages_.push_back(message); + if (level == ERROR || level == WARNING) { + active_log_->messages_[level].push_back(message); } } diff --git a/cpp/thirdparty/protobuf-2.3.0/src/google/protobuf/testing/googletest.h b/cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/testing/googletest.h similarity index 90% rename from cpp/thirdparty/protobuf-2.3.0/src/google/protobuf/testing/googletest.h rename to cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/testing/googletest.h index 71444c960..003be1060 100644 --- a/cpp/thirdparty/protobuf-2.3.0/src/google/protobuf/testing/googletest.h +++ b/cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/testing/googletest.h @@ -34,9 +34,15 @@ #ifndef GOOGLE_PROTOBUF_GOOGLETEST_H__ #define GOOGLE_PROTOBUF_GOOGLETEST_H__ +#include #include #include +// Disable death tests if we use exceptions in CHECK(). +#if !PROTOBUF_USE_EXCEPTIONS && defined(GTEST_HAS_DEATH_TEST) +#define PROTOBUF_HAS_DEATH_TEST +#endif + namespace google { namespace protobuf { @@ -60,6 +66,7 @@ string GetCapturedTestStderr(); // ScopedMemoryLog refers to LOGLEVEL_ERROR as just ERROR. #undef ERROR // defend against promiscuous windows.h static const LogLevel ERROR = LOGLEVEL_ERROR; +static const LogLevel WARNING = LOGLEVEL_WARNING; // Receives copies of all LOG(ERROR) messages while in scope. Sample usage: // { @@ -74,14 +81,11 @@ class ScopedMemoryLog { ScopedMemoryLog(); virtual ~ScopedMemoryLog(); - // Fetches all messages logged. The internal version of this class - // would only fetch messages at the given security level, but the protobuf - // open source version ignores the argument since we always pass ERROR - // anyway. - const vector& GetMessages(LogLevel dummy) const; + // Fetches all messages with the given severity level. + const vector& GetMessages(LogLevel error); private: - vector messages_; + map > messages_; LogHandler* old_handler_; static void HandleLog(LogLevel level, const char* filename, int line, diff --git a/cpp/thirdparty/protobuf-2.3.0/src/google/protobuf/testing/zcgunzip.cc b/cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/testing/zcgunzip.cc similarity index 100% rename from cpp/thirdparty/protobuf-2.3.0/src/google/protobuf/testing/zcgunzip.cc rename to cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/testing/zcgunzip.cc diff --git a/cpp/thirdparty/protobuf-2.3.0/src/google/protobuf/testing/zcgzip.cc b/cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/testing/zcgzip.cc similarity index 100% rename from cpp/thirdparty/protobuf-2.3.0/src/google/protobuf/testing/zcgzip.cc rename to cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/testing/zcgzip.cc diff --git a/cpp/thirdparty/protobuf-2.3.0/src/google/protobuf/text_format.cc b/cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/text_format.cc similarity index 76% rename from cpp/thirdparty/protobuf-2.3.0/src/google/protobuf/text_format.cc rename to cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/text_format.cc index 137cbcee2..cabb99ed9 100644 --- a/cpp/thirdparty/protobuf-2.3.0/src/google/protobuf/text_format.cc +++ b/cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/text_format.cc @@ -37,6 +37,7 @@ #include #include #include +#include #include @@ -48,6 +49,8 @@ #include #include #include +#include +#include namespace google { namespace protobuf { @@ -92,6 +95,73 @@ void Message::PrintDebugString() const { } +// =========================================================================== +// Implementation of the parse information tree class. +TextFormat::ParseInfoTree::ParseInfoTree() { } + +TextFormat::ParseInfoTree::~ParseInfoTree() { + // Remove any nested information trees, as they are owned by this tree. + for (NestedMap::iterator it = nested_.begin(); it != nested_.end(); ++it) { + STLDeleteElements(&(it->second)); + } +} + +void TextFormat::ParseInfoTree::RecordLocation( + const FieldDescriptor* field, + TextFormat::ParseLocation location) { + locations_[field].push_back(location); +} + +TextFormat::ParseInfoTree* TextFormat::ParseInfoTree::CreateNested( + const FieldDescriptor* field) { + // Owned by us in the map. + TextFormat::ParseInfoTree* instance = new TextFormat::ParseInfoTree(); + vector* trees = &nested_[field]; + GOOGLE_CHECK(trees); + trees->push_back(instance); + return instance; +} + +void CheckFieldIndex(const FieldDescriptor* field, int index) { + if (field == NULL) { return; } + + if (field->is_repeated() && index == -1) { + GOOGLE_LOG(DFATAL) << "Index must be in range of repeated field values. " + << "Field: " << field->name(); + } else if (!field->is_repeated() && index != -1) { + GOOGLE_LOG(DFATAL) << "Index must be -1 for singular fields." + << "Field: " << field->name(); + } +} + +TextFormat::ParseLocation TextFormat::ParseInfoTree::GetLocation( + const FieldDescriptor* field, int index) const { + CheckFieldIndex(field, index); + if (index == -1) { index = 0; } + + const vector* locations = + FindOrNull(locations_, field); + if (locations == NULL || index >= locations->size()) { + return TextFormat::ParseLocation(); + } + + return (*locations)[index]; +} + +TextFormat::ParseInfoTree* TextFormat::ParseInfoTree::GetTreeForNested( + const FieldDescriptor* field, int index) const { + CheckFieldIndex(field, index); + if (index == -1) { index = 0; } + + const vector* trees = FindOrNull(nested_, field); + if (trees == NULL || index >= trees->size()) { + return NULL; + } + + return (*trees)[index]; +} + + // =========================================================================== // Internal class for parsing an ASCII representation of a Protocol Message. // This class makes use of the Protocol Message compiler's tokenizer found @@ -118,12 +188,18 @@ class TextFormat::Parser::ParserImpl { ParserImpl(const Descriptor* root_message_type, io::ZeroCopyInputStream* input_stream, io::ErrorCollector* error_collector, - SingularOverwritePolicy singular_overwrite_policy) + TextFormat::Finder* finder, + ParseInfoTree* parse_info_tree, + SingularOverwritePolicy singular_overwrite_policy, + bool allow_unknown_field) : error_collector_(error_collector), + finder_(finder), + parse_info_tree_(parse_info_tree), tokenizer_error_collector_(this), tokenizer_(input_stream, &tokenizer_error_collector_), root_message_type_(root_message_type), singular_overwrite_policy_(singular_overwrite_policy), + allow_unknown_field_(allow_unknown_field), had_errors_(false) { // For backwards-compatibility with proto1, we need to allow the 'f' suffix // for floats. @@ -237,6 +313,8 @@ class TextFormat::Parser::ParserImpl { string field_name; const FieldDescriptor* field = NULL; + int start_line = tokenizer_.current().line; + int start_column = tokenizer_.current().column; if (TryConsume("[")) { // Extension. @@ -249,13 +327,21 @@ class TextFormat::Parser::ParserImpl { } DO(Consume("]")); - field = reflection->FindKnownExtensionByName(field_name); + field = (finder_ != NULL + ? finder_->FindExtension(message, field_name) + : reflection->FindKnownExtensionByName(field_name)); if (field == NULL) { - ReportError("Extension \"" + field_name + "\" is not defined or " - "is not an extension of \"" + - descriptor->full_name() + "\"."); - return false; + if (!allow_unknown_field_) { + ReportError("Extension \"" + field_name + "\" is not defined or " + "is not an extension of \"" + + descriptor->full_name() + "\"."); + return false; + } else { + ReportWarning("Extension \"" + field_name + "\" is not defined or " + "is not an extension of \"" + + descriptor->full_name() + "\"."); + } } } else { DO(ConsumeIdentifier(&field_name)); @@ -280,9 +366,30 @@ class TextFormat::Parser::ParserImpl { } if (field == NULL) { - ReportError("Message type \"" + descriptor->full_name() + - "\" has no field named \"" + field_name + "\"."); - return false; + if (!allow_unknown_field_) { + ReportError("Message type \"" + descriptor->full_name() + + "\" has no field named \"" + field_name + "\"."); + return false; + } else { + ReportWarning("Message type \"" + descriptor->full_name() + + "\" has no field named \"" + field_name + "\"."); + } + } + } + + // Skips unknown field. + if (field == NULL) { + GOOGLE_CHECK(allow_unknown_field_); + // Try to guess the type of this field. + // If this field is not a message, there should be a ":" between the + // field name and the field value and also the field value should not + // start with "{" or "<" which indicates the begining of a message body. + // If there is no ":" or there is a "{" or "<" after ":", this field has + // to be a message or the input is ill-formed. + if (TryConsume(":") && !LookingAt("{") && !LookingAt("<")) { + return SkipFieldValue(); + } else { + return SkipFieldMessage(); } } @@ -301,20 +408,84 @@ class TextFormat::Parser::ParserImpl { DO(ConsumeFieldMessage(message, reflection, field)); } else { DO(Consume(":")); - DO(ConsumeFieldValue(message, reflection, field)); + if (field->is_repeated() && TryConsume("[")) { + // Short repeated format, e.g. "foo: [1, 2, 3]" + while (true) { + DO(ConsumeFieldValue(message, reflection, field)); + if (TryConsume("]")) { + break; + } + DO(Consume(",")); + } + } else { + DO(ConsumeFieldValue(message, reflection, field)); + } } + // For historical reasons, fields may optionally be separated by commas or + // semicolons. + TryConsume(";") || TryConsume(","); + if (field->options().deprecated()) { ReportWarning("text format contains deprecated field \"" + field_name + "\""); } + // If a parse info tree exists, add the location for the parsed + // field. + if (parse_info_tree_ != NULL) { + RecordLocation(parse_info_tree_, field, + ParseLocation(start_line, start_column)); + } + + return true; + } + + // Skips the next field including the field's name and value. + bool SkipField() { + string field_name; + if (TryConsume("[")) { + // Extension name. + DO(ConsumeIdentifier(&field_name)); + while (TryConsume(".")) { + string part; + DO(ConsumeIdentifier(&part)); + field_name += "."; + field_name += part; + } + DO(Consume("]")); + } else { + DO(ConsumeIdentifier(&field_name)); + } + + // Try to guess the type of this field. + // If this field is not a message, there should be a ":" between the + // field name and the field value and also the field value should not + // start with "{" or "<" which indicates the begining of a message body. + // If there is no ":" or there is a "{" or "<" after ":", this field has + // to be a message or the input is ill-formed. + if (TryConsume(":") && !LookingAt("{") && !LookingAt("<")) { + DO(SkipFieldValue()); + } else { + DO(SkipFieldMessage()); + } + // For historical reasons, fields may optionally be separated by commas or + // semicolons. + TryConsume(";") || TryConsume(","); return true; } bool ConsumeFieldMessage(Message* message, const Reflection* reflection, const FieldDescriptor* field) { + + // If the parse information tree is not NULL, create a nested one + // for the nested message. + ParseInfoTree* parent = parse_info_tree_; + if (parent != NULL) { + parse_info_tree_ = CreateNested(parent, field); + } + string delimeter; if (TryConsume("<")) { delimeter = ">"; @@ -329,6 +500,26 @@ class TextFormat::Parser::ParserImpl { DO(ConsumeMessage(reflection->MutableMessage(message, field), delimeter)); } + + // Reset the parse information tree. + parse_info_tree_ = parent; + return true; + } + + // Skips the whole body of a message including the begining delimeter and + // the ending delimeter. + bool SkipFieldMessage() { + string delimeter; + if (TryConsume("<")) { + delimeter = ">"; + } else { + DO(Consume("{")); + delimeter = "}"; + } + while (!LookingAt(">") && !LookingAt("}")) { + DO(SkipField()); + } + DO(Consume(delimeter)); return true; } @@ -397,29 +588,46 @@ class TextFormat::Parser::ParserImpl { } case FieldDescriptor::CPPTYPE_BOOL: { - string value; - DO(ConsumeIdentifier(&value)); - - if (value == "true") { - SET_FIELD(Bool, true); - } else if (value == "false") { - SET_FIELD(Bool, false); + if (LookingAtType(io::Tokenizer::TYPE_INTEGER)) { + uint64 value; + DO(ConsumeUnsignedInteger(&value, 1)); + SET_FIELD(Bool, value); } else { - ReportError("Invalid value for boolean field \"" + field->name() - + "\". Value: \"" + value + "\"."); - return false; + string value; + DO(ConsumeIdentifier(&value)); + if (value == "true" || value == "t") { + SET_FIELD(Bool, true); + } else if (value == "false" || value == "f") { + SET_FIELD(Bool, false); + } else { + ReportError("Invalid value for boolean field \"" + field->name() + + "\". Value: \"" + value + "\"."); + return false; + } } break; } case FieldDescriptor::CPPTYPE_ENUM: { string value; - DO(ConsumeIdentifier(&value)); - - // Find the enumeration value. const EnumDescriptor* enum_type = field->enum_type(); - const EnumValueDescriptor* enum_value - = enum_type->FindValueByName(value); + const EnumValueDescriptor* enum_value = NULL; + + if (LookingAtType(io::Tokenizer::TYPE_IDENTIFIER)) { + DO(ConsumeIdentifier(&value)); + // Find the enumeration value. + enum_value = enum_type->FindValueByName(value); + + } else if (LookingAt("-") || + LookingAtType(io::Tokenizer::TYPE_INTEGER)) { + int64 int_value; + DO(ConsumeSignedInteger(&int_value, kint32max)); + value = SimpleItoa(int_value); // for error reporting + enum_value = enum_type->FindValueByNumber(int_value); + } else { + ReportError("Expected integer or identifier."); + return false; + } if (enum_value == NULL) { ReportError("Unknown enumeration value of \"" + value + "\" for " @@ -442,6 +650,60 @@ class TextFormat::Parser::ParserImpl { return true; } + bool SkipFieldValue() { + if (LookingAtType(io::Tokenizer::TYPE_STRING)) { + while (LookingAtType(io::Tokenizer::TYPE_STRING)) { + tokenizer_.Next(); + } + return true; + } + // Possible field values other than string: + // 12345 => TYPE_INTEGER + // -12345 => TYPE_SYMBOL + TYPE_INTEGER + // 1.2345 => TYPE_FLOAT + // -1.2345 => TYPE_SYMBOL + TYPE_FLOAT + // inf => TYPE_IDENTIFIER + // -inf => TYPE_SYMBOL + TYPE_IDENTIFIER + // TYPE_INTEGER => TYPE_IDENTIFIER + // Divides them into two group, one with TYPE_SYMBOL + // and the other without: + // Group one: + // 12345 => TYPE_INTEGER + // 1.2345 => TYPE_FLOAT + // inf => TYPE_IDENTIFIER + // TYPE_INTEGER => TYPE_IDENTIFIER + // Group two: + // -12345 => TYPE_SYMBOL + TYPE_INTEGER + // -1.2345 => TYPE_SYMBOL + TYPE_FLOAT + // -inf => TYPE_SYMBOL + TYPE_IDENTIFIER + // As we can see, the field value consists of an optional '-' and one of + // TYPE_INTEGER, TYPE_FLOAT and TYPE_IDENTIFIER. + bool has_minus = TryConsume("-"); + if (!LookingAtType(io::Tokenizer::TYPE_INTEGER) && + !LookingAtType(io::Tokenizer::TYPE_FLOAT) && + !LookingAtType(io::Tokenizer::TYPE_IDENTIFIER)) { + return false; + } + // Combination of '-' and TYPE_IDENTIFIER may result in an invalid field + // value while other combinations all generate valid values. + // We check if the value of this combination is valid here. + // TYPE_IDENTIFIER after a '-' should be one of the float values listed + // below: + // inf, inff, infinity, nan + if (has_minus && LookingAtType(io::Tokenizer::TYPE_IDENTIFIER)) { + string text = tokenizer_.current().text; + LowerString(&text); + if (text != "inf" && + text != "infinity" && + text != "nan") { + ReportError("Invalid float number: " + text); + return false; + } + } + tokenizer_.Next(); + return true; + } + // Returns true if the current token's text is equal to that specified. bool LookingAt(const string& text) { return tokenizer_.current().text == text; @@ -559,7 +821,8 @@ class TextFormat::Parser::ParserImpl { } else if (LookingAtType(io::Tokenizer::TYPE_IDENTIFIER)) { string text = tokenizer_.current().text; LowerString(&text); - if (text == "inf" || text == "infinity") { + if (text == "inf" || + text == "infinity") { *value = std::numeric_limits::infinity(); tokenizer_.Next(); } else if (text == "nan") { @@ -632,10 +895,13 @@ class TextFormat::Parser::ParserImpl { }; io::ErrorCollector* error_collector_; + TextFormat::Finder* finder_; + ParseInfoTree* parse_info_tree_; ParserErrorCollector tokenizer_error_collector_; io::Tokenizer tokenizer_; const Descriptor* root_message_type_; SingularOverwritePolicy singular_overwrite_policy_; + bool allow_unknown_field_; bool had_errors_; }; @@ -661,7 +927,7 @@ class TextFormat::Printer::TextGenerator { ~TextGenerator() { // Only BackUp() if we're sure we've successfully called Next() at least // once. - if (buffer_size_ > 0) { + if (!failed_ && buffer_size_ > 0) { output_->BackUp(buffer_size_); } } @@ -765,9 +1031,16 @@ class TextFormat::Printer::TextGenerator { // =========================================================================== +TextFormat::Finder::~Finder() { +} + TextFormat::Parser::Parser() : error_collector_(NULL), - allow_partial_(false) {} + finder_(NULL), + parse_info_tree_(NULL), + allow_partial_(false), + allow_unknown_field_(false) { +} TextFormat::Parser::~Parser() {} @@ -775,7 +1048,9 @@ bool TextFormat::Parser::Parse(io::ZeroCopyInputStream* input, Message* output) { output->Clear(); ParserImpl parser(output->GetDescriptor(), input, error_collector_, - ParserImpl::FORBID_SINGULAR_OVERWRITES); + finder_, parse_info_tree_, + ParserImpl::FORBID_SINGULAR_OVERWRITES, + allow_unknown_field_); return MergeUsingImpl(input, output, &parser); } @@ -788,7 +1063,9 @@ bool TextFormat::Parser::ParseFromString(const string& input, bool TextFormat::Parser::Merge(io::ZeroCopyInputStream* input, Message* output) { ParserImpl parser(output->GetDescriptor(), input, error_collector_, - ParserImpl::ALLOW_SINGULAR_OVERWRITES); + finder_, parse_info_tree_, + ParserImpl::ALLOW_SINGULAR_OVERWRITES, + allow_unknown_field_); return MergeUsingImpl(input, output, &parser); } @@ -818,7 +1095,9 @@ bool TextFormat::Parser::ParseFieldValueFromString( Message* output) { io::ArrayInputStream input_stream(input.data(), input.size()); ParserImpl parser(output->GetDescriptor(), &input_stream, error_collector_, - ParserImpl::ALLOW_SINGULAR_OVERWRITES); + finder_, parse_info_tree_, + ParserImpl::ALLOW_SINGULAR_OVERWRITES, + allow_unknown_field_); return parser.ParseField(field, output); } @@ -853,7 +1132,7 @@ TextFormat::Printer::Printer() TextFormat::Printer::~Printer() {} bool TextFormat::Printer::PrintToString(const Message& message, - string* output) { + string* output) const { GOOGLE_DCHECK(output) << "output specified is NULL"; output->clear(); @@ -866,7 +1145,7 @@ bool TextFormat::Printer::PrintToString(const Message& message, bool TextFormat::Printer::PrintUnknownFieldsToString( const UnknownFieldSet& unknown_fields, - string* output) { + string* output) const { GOOGLE_DCHECK(output) << "output specified is NULL"; output->clear(); @@ -875,7 +1154,7 @@ bool TextFormat::Printer::PrintUnknownFieldsToString( } bool TextFormat::Printer::Print(const Message& message, - io::ZeroCopyOutputStream* output) { + io::ZeroCopyOutputStream* output) const { TextGenerator generator(output, initial_indent_level_); Print(message, generator); @@ -886,7 +1165,7 @@ bool TextFormat::Printer::Print(const Message& message, bool TextFormat::Printer::PrintUnknownFields( const UnknownFieldSet& unknown_fields, - io::ZeroCopyOutputStream* output) { + io::ZeroCopyOutputStream* output) const { TextGenerator generator(output, initial_indent_level_); PrintUnknownFields(unknown_fields, generator); @@ -896,7 +1175,7 @@ bool TextFormat::Printer::PrintUnknownFields( } void TextFormat::Printer::Print(const Message& message, - TextGenerator& generator) { + TextGenerator& generator) const { const Reflection* reflection = message.GetReflection(); vector fields; reflection->ListFields(message, &fields); @@ -910,7 +1189,7 @@ void TextFormat::Printer::PrintFieldValueToString( const Message& message, const FieldDescriptor* field, int index, - string* output) { + string* output) const { GOOGLE_DCHECK(output) << "output specified is NULL"; @@ -924,7 +1203,7 @@ void TextFormat::Printer::PrintFieldValueToString( void TextFormat::Printer::PrintField(const Message& message, const Reflection* reflection, const FieldDescriptor* field, - TextGenerator& generator) { + TextGenerator& generator) const { if (use_short_repeated_primitives_ && field->is_repeated() && field->cpp_type() != FieldDescriptor::CPPTYPE_STRING && @@ -980,10 +1259,11 @@ void TextFormat::Printer::PrintField(const Message& message, } } -void TextFormat::Printer::PrintShortRepeatedField(const Message& message, - const Reflection* reflection, - const FieldDescriptor* field, - TextGenerator& generator) { +void TextFormat::Printer::PrintShortRepeatedField( + const Message& message, + const Reflection* reflection, + const FieldDescriptor* field, + TextGenerator& generator) const { // Print primitive repeated field in short form. PrintFieldName(message, reflection, field, generator); @@ -1003,7 +1283,7 @@ void TextFormat::Printer::PrintShortRepeatedField(const Message& message, void TextFormat::Printer::PrintFieldName(const Message& message, const Reflection* reflection, const FieldDescriptor* field, - TextGenerator& generator) { + TextGenerator& generator) const { if (field->is_extension()) { generator.Print("["); // We special-case MessageSet elements for compatibility with proto1. @@ -1031,7 +1311,7 @@ void TextFormat::Printer::PrintFieldValue( const Reflection* reflection, const FieldDescriptor* field, int index, - TextGenerator& generator) { + TextGenerator& generator) const { GOOGLE_DCHECK(field->is_repeated() || (index == -1)) << "Index must be -1 for non-repeated fields"; @@ -1143,7 +1423,7 @@ static string PaddedHex(IntType value) { } void TextFormat::Printer::PrintUnknownFields( - const UnknownFieldSet& unknown_fields, TextGenerator& generator) { + const UnknownFieldSet& unknown_fields, TextGenerator& generator) const { for (int i = 0; i < unknown_fields.field_count(); i++) { const UnknownField& field = unknown_fields.field(i); string field_number = SimpleItoa(field.number()); diff --git a/cpp/thirdparty/protobuf-2.3.0/src/google/protobuf/text_format.h b/cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/text_format.h similarity index 68% rename from cpp/thirdparty/protobuf-2.3.0/src/google/protobuf/text_format.h rename to cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/text_format.h index e78e10424..01f3ffb08 100644 --- a/cpp/thirdparty/protobuf-2.3.0/src/google/protobuf/text_format.h +++ b/cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/text_format.h @@ -38,7 +38,10 @@ #ifndef GOOGLE_PROTOBUF_TEXT_FORMAT_H__ #define GOOGLE_PROTOBUF_TEXT_FORMAT_H__ +#include #include +#include +#include #include #include @@ -90,20 +93,20 @@ class LIBPROTOBUF_EXPORT TextFormat { ~Printer(); // Like TextFormat::Print - bool Print(const Message& message, io::ZeroCopyOutputStream* output); + bool Print(const Message& message, io::ZeroCopyOutputStream* output) const; // Like TextFormat::PrintUnknownFields bool PrintUnknownFields(const UnknownFieldSet& unknown_fields, - io::ZeroCopyOutputStream* output); + io::ZeroCopyOutputStream* output) const; // Like TextFormat::PrintToString - bool PrintToString(const Message& message, string* output); + bool PrintToString(const Message& message, string* output) const; // Like TextFormat::PrintUnknownFieldsToString bool PrintUnknownFieldsToString(const UnknownFieldSet& unknown_fields, - string* output); + string* output) const; // Like TextFormat::PrintFieldValueToString void PrintFieldValueToString(const Message& message, const FieldDescriptor* field, int index, - string* output); + string* output) const; // Adjust the initial indent level of all output. Each indent level is // equal to two spaces. @@ -121,8 +124,7 @@ class LIBPROTOBUF_EXPORT TextFormat { // field_name: [1, 2, 3, 4] // instead of printing each value on its own line. Short format applies // only to primitive values -- i.e. everything except strings and - // sub-messages/groups. Note that at present this format is not recognized - // by the parser. + // sub-messages/groups. void SetUseShortRepeatedPrimitives(bool use_short_repeated_primitives) { use_short_repeated_primitives_ = use_short_repeated_primitives; } @@ -143,26 +145,26 @@ class LIBPROTOBUF_EXPORT TextFormat { // Internal Print method, used for writing to the OutputStream via // the TextGenerator class. void Print(const Message& message, - TextGenerator& generator); + TextGenerator& generator) const; // Print a single field. void PrintField(const Message& message, const Reflection* reflection, const FieldDescriptor* field, - TextGenerator& generator); + TextGenerator& generator) const; // Print a repeated primitive field in short form. void PrintShortRepeatedField(const Message& message, const Reflection* reflection, const FieldDescriptor* field, - TextGenerator& generator); + TextGenerator& generator) const; // Print the name of a field -- i.e. everything that comes before the // ':' for a single name/value pair. void PrintFieldName(const Message& message, const Reflection* reflection, const FieldDescriptor* field, - TextGenerator& generator); + TextGenerator& generator) const; // Outputs a textual representation of the value of the field supplied on // the message supplied or the default value if not set. @@ -170,13 +172,13 @@ class LIBPROTOBUF_EXPORT TextFormat { const Reflection* reflection, const FieldDescriptor* field, int index, - TextGenerator& generator); + TextGenerator& generator) const; // Print the fields in an UnknownFieldSet. They are printed by tag number // only. Embedded messages are heuristically identified by attempting to // parse them. void PrintUnknownFields(const UnknownFieldSet& unknown_fields, - TextGenerator& generator); + TextGenerator& generator) const; int initial_indent_level_; @@ -207,6 +209,71 @@ class LIBPROTOBUF_EXPORT TextFormat { const FieldDescriptor* field, Message* message); + // Interface that TextFormat::Parser can use to find extensions. + // This class may be extended in the future to find more information + // like fields, etc. + class LIBPROTOBUF_EXPORT Finder { + public: + virtual ~Finder(); + + // Try to find an extension of *message by fully-qualified field + // name. Returns NULL if no extension is known for this name or number. + virtual const FieldDescriptor* FindExtension( + Message* message, + const string& name) const = 0; + }; + + // A location in the parsed text. + struct ParseLocation { + int line; + int column; + + ParseLocation() : line(-1), column(-1) {} + ParseLocation(int line_param, int column_param) + : line(line_param), column(column_param) {} + }; + + // Data structure which is populated with the locations of each field + // value parsed from the text. + class LIBPROTOBUF_EXPORT ParseInfoTree { + public: + ParseInfoTree(); + ~ParseInfoTree(); + + // Returns the parse location for index-th value of the field in the parsed + // text. If none exists, returns a location with line = -1. Index should be + // -1 for not-repeated fields. + ParseLocation GetLocation(const FieldDescriptor* field, int index) const; + + // Returns the parse info tree for the given field, which must be a message + // type. The nested information tree is owned by the root tree and will be + // deleted when it is deleted. + ParseInfoTree* GetTreeForNested(const FieldDescriptor* field, + int index) const; + + private: + // Allow the text format parser to record information into the tree. + friend class TextFormat; + + // Records the starting location of a single value for a field. + void RecordLocation(const FieldDescriptor* field, ParseLocation location); + + // Create and records a nested tree for a nested message field. + ParseInfoTree* CreateNested(const FieldDescriptor* field); + + // Defines the map from the index-th field descriptor to its parse location. + typedef map > LocationMap; + + // Defines the map from the index-th field descriptor to the nested parse + // info tree. + typedef map > NestedMap; + + LocationMap locations_; + NestedMap nested_; + + GOOGLE_DISALLOW_EVIL_CONSTRUCTORS(ParseInfoTree); + }; + // For more control over parsing, use this class. class LIBPROTOBUF_EXPORT Parser { public: @@ -228,6 +295,19 @@ class LIBPROTOBUF_EXPORT TextFormat { error_collector_ = error_collector; } + // Set how parser finds extensions. If NULL (the default), the + // parser will use the standard Reflection object associated with + // the message being parsed. + void SetFinder(Finder* finder) { + finder_ = finder; + } + + // Sets where location information about the parse will be written. If NULL + // (the default), then no location will be written. + void WriteLocationsTo(ParseInfoTree* tree) { + parse_info_tree_ = tree; + } + // Normally parsing fails if, after parsing, output->IsInitialized() // returns false. Call AllowPartialMessage(true) to skip this check. void AllowPartialMessage(bool allow) { @@ -239,6 +319,7 @@ class LIBPROTOBUF_EXPORT TextFormat { const FieldDescriptor* field, Message* output); + private: // Forward declaration of an internal class used to parse text // representations (see text_format.cc for implementation). @@ -251,13 +332,37 @@ class LIBPROTOBUF_EXPORT TextFormat { ParserImpl* parser_impl); io::ErrorCollector* error_collector_; + Finder* finder_; + ParseInfoTree* parse_info_tree_; bool allow_partial_; + bool allow_unknown_field_; }; private: + // Hack: ParseInfoTree declares TextFormat as a friend which should extend + // the friendship to TextFormat::Parser::ParserImpl, but unfortunately some + // old compilers (e.g. GCC 3.4.6) don't implement this correctly. We provide + // helpers for ParserImpl to call methods of ParseInfoTree. + static inline void RecordLocation(ParseInfoTree* info_tree, + const FieldDescriptor* field, + ParseLocation location); + static inline ParseInfoTree* CreateNested(ParseInfoTree* info_tree, + const FieldDescriptor* field); + GOOGLE_DISALLOW_EVIL_CONSTRUCTORS(TextFormat); }; +inline void TextFormat::RecordLocation(ParseInfoTree* info_tree, + const FieldDescriptor* field, + ParseLocation location) { + info_tree->RecordLocation(field, location); +} + +inline TextFormat::ParseInfoTree* TextFormat::CreateNested( + ParseInfoTree* info_tree, const FieldDescriptor* field) { + return info_tree->CreateNested(field); +} + } // namespace protobuf } // namespace google diff --git a/cpp/thirdparty/protobuf-2.3.0/src/google/protobuf/text_format_unittest.cc b/cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/text_format_unittest.cc similarity index 84% rename from cpp/thirdparty/protobuf-2.3.0/src/google/protobuf/text_format_unittest.cc rename to cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/text_format_unittest.cc index ddf8ff7ff..304fb8440 100644 --- a/cpp/thirdparty/protobuf-2.3.0/src/google/protobuf/text_format_unittest.cc +++ b/cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/text_format_unittest.cc @@ -339,6 +339,21 @@ TEST_F(TextFormatTest, PrintMessageSingleLine) { text); } +TEST_F(TextFormatTest, PrintBufferTooSmall) { + // Test printing a message to a buffer that is too small. + + protobuf_unittest::TestAllTypes message; + + message.add_repeated_string("abc"); + message.add_repeated_string("def"); + + char buffer[1] = ""; + io::ArrayOutputStream output_stream(buffer, 1); + EXPECT_FALSE(TextFormat::Print(message, &output_stream)); + EXPECT_EQ(buffer[0], 'r'); + EXPECT_EQ(output_stream.ByteCount(), 1); +} + TEST_F(TextFormatTest, ParseBasic) { io::ArrayInputStream input_stream(proto_debug_string_.data(), proto_debug_string_.size()); @@ -353,6 +368,25 @@ TEST_F(TextFormatExtensionsTest, ParseExtensions) { TestUtil::ExpectAllExtensionsSet(proto_); } +TEST_F(TextFormatTest, ParseEnumFieldFromNumber) { + // Create a parse string with a numerical value for an enum field. + string parse_string = strings::Substitute("optional_nested_enum: $0", + unittest::TestAllTypes::BAZ); + EXPECT_TRUE(TextFormat::ParseFromString(parse_string, &proto_)); + EXPECT_TRUE(proto_.has_optional_nested_enum()); + EXPECT_EQ(unittest::TestAllTypes::BAZ, proto_.optional_nested_enum()); +} + +TEST_F(TextFormatTest, ParseEnumFieldFromNegativeNumber) { + ASSERT_LT(unittest::SPARSE_E, 0); + string parse_string = strings::Substitute("sparse_enum: $0", + unittest::SPARSE_E); + unittest::SparseEnumMessage proto; + EXPECT_TRUE(TextFormat::ParseFromString(parse_string, &proto)); + EXPECT_TRUE(proto.has_sparse_enum()); + EXPECT_EQ(unittest::SPARSE_E, proto.sparse_enum()); +} + TEST_F(TextFormatTest, ParseStringEscape) { // Create a parse string with escpaed characters in it. string parse_string = "optional_string: " @@ -406,6 +440,34 @@ TEST_F(TextFormatTest, ParseFloatWithSuffix) { EXPECT_EQ(1.0, proto_.optional_float()); } +TEST_F(TextFormatTest, ParseShortRepeatedForm) { + string parse_string = + // Mixed short-form and long-form are simply concatenated. + "repeated_int32: 1\n" + "repeated_int32: [456, 789]\n" + "repeated_nested_enum: [ FOO ,BAR, # comment\n" + " 3]\n" + // Note that while the printer won't print repeated strings in short-form, + // the parser will accept them. + "repeated_string: [ \"foo\", 'bar' ]\n"; + + ASSERT_TRUE(TextFormat::ParseFromString(parse_string, &proto_)); + + ASSERT_EQ(3, proto_.repeated_int32_size()); + EXPECT_EQ(1, proto_.repeated_int32(0)); + EXPECT_EQ(456, proto_.repeated_int32(1)); + EXPECT_EQ(789, proto_.repeated_int32(2)); + + ASSERT_EQ(3, proto_.repeated_nested_enum_size()); + EXPECT_EQ(unittest::TestAllTypes::FOO, proto_.repeated_nested_enum(0)); + EXPECT_EQ(unittest::TestAllTypes::BAR, proto_.repeated_nested_enum(1)); + EXPECT_EQ(unittest::TestAllTypes::BAZ, proto_.repeated_nested_enum(2)); + + ASSERT_EQ(2, proto_.repeated_string_size()); + EXPECT_EQ("foo", proto_.repeated_string(0)); + EXPECT_EQ("bar", proto_.repeated_string(1)); +} + TEST_F(TextFormatTest, Comments) { // Test that comments are ignored. @@ -681,6 +743,25 @@ class TextFormatParserTest : public testing::Test { error_collector.text_); } + void ExpectSuccessAndTree(const string& input, Message* proto, + TextFormat::ParseInfoTree* info_tree) { + TextFormat::Parser parser; + MockErrorCollector error_collector; + parser.RecordErrorsTo(&error_collector); + parser.WriteLocationsTo(info_tree); + + EXPECT_TRUE(parser.ParseFromString(input, proto)); + } + + void ExpectLocation(TextFormat::ParseInfoTree* tree, + const Descriptor* d, const string& field_name, + int index, int line, int column) { + TextFormat::ParseLocation location = tree->GetLocation( + d->FindFieldByName(field_name), index); + EXPECT_EQ(line, location.line); + EXPECT_EQ(column, location.column); + } + // An error collector which simply concatenates all its errors into a big // block of text which can be checked. class MockErrorCollector : public io::ErrorCollector { @@ -702,6 +783,71 @@ class TextFormatParserTest : public testing::Test { }; }; +TEST_F(TextFormatParserTest, ParseInfoTreeBuilding) { + scoped_ptr message(new unittest::TestAllTypes); + const Descriptor* d = message->GetDescriptor(); + + string stringData = + "optional_int32: 1\n" + "optional_int64: 2\n" + " optional_double: 2.4\n" + "repeated_int32: 5\n" + "repeated_int32: 10\n" + "optional_nested_message <\n" + " bb: 78\n" + ">\n" + "repeated_nested_message <\n" + " bb: 79\n" + ">\n" + "repeated_nested_message <\n" + " bb: 80\n" + ">"; + + + TextFormat::ParseInfoTree tree; + ExpectSuccessAndTree(stringData, message.get(), &tree); + + // Verify that the tree has the correct positions. + ExpectLocation(&tree, d, "optional_int32", -1, 0, 0); + ExpectLocation(&tree, d, "optional_int64", -1, 1, 0); + ExpectLocation(&tree, d, "optional_double", -1, 2, 2); + + ExpectLocation(&tree, d, "repeated_int32", 0, 3, 0); + ExpectLocation(&tree, d, "repeated_int32", 1, 4, 0); + + ExpectLocation(&tree, d, "optional_nested_message", -1, 5, 0); + ExpectLocation(&tree, d, "repeated_nested_message", 0, 8, 0); + ExpectLocation(&tree, d, "repeated_nested_message", 1, 11, 0); + + // Check for fields not set. For an invalid field, the location returned + // should be -1, -1. + ExpectLocation(&tree, d, "repeated_int64", 0, -1, -1); + ExpectLocation(&tree, d, "repeated_int32", 6, -1, -1); + ExpectLocation(&tree, d, "some_unknown_field", -1, -1, -1); + + // Verify inside the nested message. + const FieldDescriptor* nested_field = + d->FindFieldByName("optional_nested_message"); + + TextFormat::ParseInfoTree* nested_tree = + tree.GetTreeForNested(nested_field, -1); + ExpectLocation(nested_tree, nested_field->message_type(), "bb", -1, 6, 2); + + // Verify inside another nested message. + nested_field = d->FindFieldByName("repeated_nested_message"); + nested_tree = tree.GetTreeForNested(nested_field, 0); + ExpectLocation(nested_tree, nested_field->message_type(), "bb", -1, 9, 2); + + nested_tree = tree.GetTreeForNested(nested_field, 1); + ExpectLocation(nested_tree, nested_field->message_type(), "bb", -1, 12, 2); + + // Verify a NULL tree for an unknown nested field. + TextFormat::ParseInfoTree* unknown_nested_tree = + tree.GetTreeForNested(nested_field, 2); + + EXPECT_EQ(NULL, unknown_nested_tree); +} + TEST_F(TextFormatParserTest, ParseFieldValueFromString) { scoped_ptr message(new unittest::TestAllTypes); const Descriptor* d = message->GetDescriptor(); @@ -712,6 +858,12 @@ TEST_F(TextFormatParserTest, ParseFieldValueFromString) { EXPECT_EQ(value, message->optional_##name()); \ EXPECT_TRUE(message->has_optional_##name()); +#define EXPECT_BOOL_FIELD(name, value, valuestring) \ + EXPECT_TRUE(TextFormat::ParseFieldValueFromString( \ + valuestring, d->FindFieldByName("optional_" #name), message.get())); \ + EXPECT_TRUE(message->optional_##name() == value); \ + EXPECT_TRUE(message->has_optional_##name()); + #define EXPECT_FLOAT_FIELD(name, value, valuestring) \ EXPECT_TRUE(TextFormat::ParseFieldValueFromString( \ valuestring, d->FindFieldByName("optional_" #name), message.get())); \ @@ -769,9 +921,14 @@ TEST_F(TextFormatParserTest, ParseFieldValueFromString) { EXPECT_INVALID(fixed64, "1,2"); // bool - EXPECT_FIELD(bool, true, "true"); - EXPECT_FIELD(bool, false, "false"); - EXPECT_INVALID(bool, "1"); + EXPECT_BOOL_FIELD(bool, true, "true"); + EXPECT_BOOL_FIELD(bool, false, "false"); + EXPECT_BOOL_FIELD(bool, true, "1"); + EXPECT_BOOL_FIELD(bool, true, "t"); + EXPECT_BOOL_FIELD(bool, false, "0"); + EXPECT_BOOL_FIELD(bool, false, "f"); + EXPECT_INVALID(bool, "2"); + EXPECT_INVALID(bool, "-0"); EXPECT_INVALID(bool, "on"); EXPECT_INVALID(bool, "a"); EXPECT_INVALID(bool, "True"); @@ -799,7 +956,8 @@ TEST_F(TextFormatParserTest, ParseFieldValueFromString) { // enum EXPECT_FIELD(nested_enum, unittest::TestAllTypes::BAR, "BAR"); - EXPECT_INVALID(nested_enum, "1"); // number not supported + EXPECT_FIELD(nested_enum, unittest::TestAllTypes::BAZ, + SimpleItoa(unittest::TestAllTypes::BAZ)); EXPECT_INVALID(nested_enum, "FOOBAR"); // message @@ -810,6 +968,7 @@ TEST_F(TextFormatParserTest, ParseFieldValueFromString) { EXPECT_INVALID(nested_message, "any"); #undef EXPECT_FIELD +#undef EXPECT_BOOL_FIELD #undef EXPECT_FLOAT_FIELD #undef EXPECT_DOUBLE_FIELD #undef EXPECT_INVALID @@ -820,7 +979,7 @@ TEST_F(TextFormatParserTest, InvalidToken) { ExpectFailure("optional_bool: true\n-5\n", "Expected identifier.", 2, 1); - ExpectFailure("optional_bool: true;\n", "Expected identifier.", 1, 20); + ExpectFailure("optional_bool: true!\n", "Expected identifier.", 1, 20); ExpectFailure("\"some string\"", "Expected identifier.", 1, 1); } @@ -868,10 +1027,10 @@ TEST_F(TextFormatParserTest, InvalidFieldValues) { 1, 16); ExpectFailure("optional_int32: 0x80000000\n", "Integer out of range.", 1, 17); - ExpectFailure("optional_int32: -0x80000001\n", - "Integer out of range.", 1, 18); ExpectFailure("optional_int64: 0x8000000000000000\n", "Integer out of range.", 1, 17); + ExpectFailure("optional_int32: -0x80000001\n", + "Integer out of range.", 1, 18); ExpectFailure("optional_int64: -0x8000000000000001\n", "Integer out of range.", 1, 18); @@ -890,7 +1049,7 @@ TEST_F(TextFormatParserTest, InvalidFieldValues) { // Invalid values for a boolean field. ExpectFailure("optional_bool: \"hello\"\n", "Expected identifier.", 1, 16); - ExpectFailure("optional_bool: 5\n", "Expected identifier.", 1, 16); + ExpectFailure("optional_bool: 5\n", "Integer out of range.", 1, 16); ExpectFailure("optional_bool: -7.5\n", "Expected identifier.", 1, 16); ExpectFailure("optional_bool: !\n", "Expected identifier.", 1, 16); @@ -911,12 +1070,18 @@ TEST_F(TextFormatParserTest, InvalidFieldValues) { 1, 17); // Invalid values for an enumeration field. - ExpectFailure("optional_nested_enum: \"hello\"\n", "Expected identifier.", - 1, 23); - - ExpectFailure("optional_nested_enum: 5\n", "Expected identifier.", 1, 23); - ExpectFailure("optional_nested_enum: -7.5\n", "Expected identifier.", 1, 23); - ExpectFailure("optional_nested_enum: !\n", "Expected identifier.", 1, 23); + ExpectFailure("optional_nested_enum: \"hello\"\n", + "Expected integer or identifier.", 1, 23); + + // Valid token, but enum value is not defined. + ExpectFailure("optional_nested_enum: 5\n", + "Unknown enumeration value of \"5\" for field " + "\"optional_nested_enum\".", 2, 1); + // We consume the negative sign, so the error position starts one character + // later. + ExpectFailure("optional_nested_enum: -7.5\n", "Expected integer.", 1, 24); + ExpectFailure("optional_nested_enum: !\n", + "Expected integer or identifier.", 1, 23); ExpectFailure( "optional_nested_enum: grah\n", @@ -986,6 +1151,14 @@ TEST_F(TextFormatParserTest, MergeDuplicateOptional) { EXPECT_EQ(2, message.c()); } +TEST_F(TextFormatParserTest, ExplicitDelimiters) { + unittest::TestRequired message; + EXPECT_TRUE(TextFormat::ParseFromString("a:1,b:2;c:3", &message)); + EXPECT_EQ(1, message.a()); + EXPECT_EQ(2, message.b()); + EXPECT_EQ(3, message.c()); +} + TEST_F(TextFormatParserTest, PrintErrorsToStderr) { vector errors; @@ -1069,6 +1242,7 @@ TEST_F(TextFormatMessageSetTest, Deserialize) { EXPECT_EQ(2, descriptors.size()); } + } // namespace text_format_unittest } // namespace protobuf } // namespace google diff --git a/cpp/thirdparty/protobuf-2.3.0/src/google/protobuf/unittest.proto b/cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/unittest.proto similarity index 86% rename from cpp/thirdparty/protobuf-2.3.0/src/google/protobuf/unittest.proto rename to cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/unittest.proto index d51fa1e7f..6eb2d86f5 100644 --- a/cpp/thirdparty/protobuf-2.3.0/src/google/protobuf/unittest.proto +++ b/cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/unittest.proto @@ -35,6 +35,12 @@ // A proto file we will use for unit testing. +// Some generic_services option(s) added automatically. +// See: http://go/proto2-generic-services-default +option cc_generic_services = true; // auto-added +option java_generic_services = true; // auto-added +option py_generic_services = true; // auto-added + import "google/protobuf/unittest_import.proto"; // We don't put this in a package within proto2 because we need to make sure @@ -97,6 +103,12 @@ message TestAllTypes { optional string optional_string_piece = 24 [ctype=STRING_PIECE]; optional string optional_cord = 25 [ctype=CORD]; + // Defined in unittest_import_public.proto + optional protobuf_unittest_import.PublicImportMessage + optional_public_import_message = 26; + + optional NestedMessage optional_lazy_message = 27 [lazy=true]; + // Repeated repeated int32 repeated_int32 = 31; repeated int64 repeated_int64 = 32; @@ -129,6 +141,8 @@ message TestAllTypes { repeated string repeated_string_piece = 54 [ctype=STRING_PIECE]; repeated string repeated_cord = 55 [ctype=CORD]; + repeated NestedMessage repeated_lazy_message = 57 [lazy=true]; + // Singular with defaults optional int32 default_int32 = 61 [default = 41 ]; optional int64 default_int64 = 62 [default = 42 ]; @@ -210,6 +224,12 @@ extend TestAllExtensions { optional string optional_string_piece_extension = 24 [ctype=STRING_PIECE]; optional string optional_cord_extension = 25 [ctype=CORD]; + optional protobuf_unittest_import.PublicImportMessage + optional_public_import_message_extension = 26; + + optional TestAllTypes.NestedMessage + optional_lazy_message_extension = 27 [lazy=true]; + // Repeated repeated int32 repeated_int32_extension = 31; repeated int64 repeated_int64_extension = 32; @@ -244,6 +264,9 @@ extend TestAllExtensions { repeated string repeated_string_piece_extension = 54 [ctype=STRING_PIECE]; repeated string repeated_cord_extension = 55 [ctype=CORD]; + repeated TestAllTypes.NestedMessage + repeated_lazy_message_extension = 57 [lazy=true]; + // Singular with defaults optional int32 default_int32_extension = 61 [default = 41 ]; optional int64 default_int64_extension = 62 [default = 42 ]; @@ -391,6 +414,13 @@ message TestDupFieldNumber { // NO_PROTO1 optional group Bar = 3 { optional int32 a = 1; } // NO_PROTO1 } // NO_PROTO1 +// Additional messages for testing lazy fields. +message TestEagerMessage { + optional TestAllTypes sub_message = 1 [lazy=false]; +} +message TestLazyMessage { + optional TestAllTypes sub_message = 1 [lazy=true]; +} // Needed for a Python test. message TestNestedMessageHasBits { @@ -404,6 +434,7 @@ message TestNestedMessageHasBits { // Test an enum that has multiple values with the same number. enum TestEnumWithDupValue { + option allow_alias = true; FOO1 = 1; BAR1 = 2; BAZ = 3; @@ -464,6 +495,8 @@ message TestExtremeDefaultValues { optional uint64 large_uint64 = 3 [default = 0xFFFFFFFFFFFFFFFF]; optional int32 small_int32 = 4 [default = -0x7FFFFFFF]; optional int64 small_int64 = 5 [default = -0x7FFFFFFFFFFFFFFF]; + optional int32 really_small_int32 = 21 [default = -0x80000000]; + optional int64 really_small_int64 = 22 [default = -0x8000000000000000]; // The default value here is UTF-8 for "\u1234". (We could also just type // the UTF-8 text directly into this text file rather than escape it, but @@ -487,6 +520,25 @@ message TestExtremeDefaultValues { optional float inf_float = 17 [default = inf]; optional float neg_inf_float = 18 [default = -inf]; optional float nan_float = 19 [default = nan]; + + // Tests for C++ trigraphs. + // Trigraphs should be escaped in C++ generated files, but they should not be + // escaped for other languages. + // Note that in .proto file, "\?" is a valid way to escape ? in string + // literals. + optional string cpp_trigraph = 20 [default = "? \? ?? \?? \??? ??/ ?\?-"]; + + // String defaults containing the character '\000' + optional string string_with_zero = 23 [default = "hel\000lo"]; + optional bytes bytes_with_zero = 24 [default = "wor\000ld"]; + optional string string_piece_with_zero = 25 [ctype=STRING_PIECE, + default="ab\000c"]; + optional string cord_with_zero = 26 [ctype=CORD, + default="12\0003"]; +} + +message SparseEnumMessage { + optional TestSparseEnum sparse_enum = 1; } // Test String and Bytes: string is for valid UTF-8 strings @@ -494,10 +546,19 @@ message OneString { optional string data = 1; } +message MoreString { + repeated string data = 1; +} + message OneBytes { optional bytes data = 1; } +message MoreBytes { + repeated bytes data = 1; +} + + // Test messages for packed fields message TestPackedTypes { @@ -598,10 +659,56 @@ message TestRepeatedScalarDifferentTagSizes { repeated uint64 repeated_uint64 = 262143; } +// Test that if an optional or required message/group field appears multiple +// times in the input, they need to be merged. +message TestParsingMerge { + // RepeatedFieldsGenerator defines matching field types as TestParsingMerge, + // except that all fields are repeated. In the tests, we will serialize the + // RepeatedFieldsGenerator to bytes, and parse the bytes to TestParsingMerge. + // Repeated fields in RepeatedFieldsGenerator are expected to be merged into + // the corresponding required/optional fields in TestParsingMerge. + message RepeatedFieldsGenerator { + repeated TestAllTypes field1 = 1; + repeated TestAllTypes field2 = 2; + repeated TestAllTypes field3 = 3; + repeated group Group1 = 10 { + optional TestAllTypes field1 = 11; + } + repeated group Group2 = 20 { + optional TestAllTypes field1 = 21; + } + repeated TestAllTypes ext1 = 1000; + repeated TestAllTypes ext2 = 1001; + } + required TestAllTypes required_all_types = 1; + optional TestAllTypes optional_all_types = 2; + repeated TestAllTypes repeated_all_types = 3; + optional group OptionalGroup = 10 { + optional TestAllTypes optional_group_all_types = 11; + } + repeated group RepeatedGroup = 20 { + optional TestAllTypes repeated_group_all_types = 21; + } + extensions 1000 to max; + extend TestParsingMerge { + optional TestAllTypes optional_ext = 1000; + repeated TestAllTypes repeated_ext = 1001; + } +} + +message TestCommentInjectionMessage { + // */ <- This should not close the generated doc comment + optional string a = 1 [default="*/ <- Neither should this."]; +} + + // Test that RPC services work. message FooRequest {} message FooResponse {} +message FooClientMessage {} +message FooServerMessage{} + service TestService { rpc Foo(FooRequest) returns (FooResponse); rpc Bar(BarRequest) returns (BarResponse); diff --git a/cpp/thirdparty/protobuf-2.3.0/src/google/protobuf/unittest_custom_options.proto b/cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/unittest_custom_options.proto similarity index 72% rename from cpp/thirdparty/protobuf-2.3.0/src/google/protobuf/unittest_custom_options.proto rename to cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/unittest_custom_options.proto index b6ee03da1..e591d2944 100644 --- a/cpp/thirdparty/protobuf-2.3.0/src/google/protobuf/unittest_custom_options.proto +++ b/cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/unittest_custom_options.proto @@ -35,6 +35,12 @@ // A proto file used to test the "custom options" feature of proto2. +// Some generic_services option(s) added automatically. +// See: http://go/proto2-generic-services-default +option cc_generic_services = true; // auto-added +option java_generic_services = true; // auto-added +option py_generic_services = true; + // A custom file option (defined below). option (file_opt1) = 9876543210; @@ -110,6 +116,12 @@ message CustomOptionFooRequest { message CustomOptionFooResponse { } +message CustomOptionFooClientMessage { +} + +message CustomOptionFooServerMessage { +} + service TestServiceWithCustomOptions { option (service_opt1) = -9876543210; @@ -273,3 +285,103 @@ message VariousComplexOptions { option (complex_opt3).complexoptiontype5.plugh = 22; option (complexopt6).xyzzy = 24; } + +// ------------------------------------------------------ +// Definitions for testing aggregate option parsing. +// See descriptor_unittest.cc. + +message AggregateMessageSet { + option message_set_wire_format = true; + extensions 4 to max; +} + +message AggregateMessageSetElement { + extend AggregateMessageSet { + optional AggregateMessageSetElement message_set_extension = 15447542; + } + optional string s = 1; +} + +// A helper type used to test aggregate option parsing +message Aggregate { + optional int32 i = 1; + optional string s = 2; + + // A nested object + optional Aggregate sub = 3; + + // To test the parsing of extensions inside aggregate values + optional google.protobuf.FileOptions file = 4; + extend google.protobuf.FileOptions { + optional Aggregate nested = 15476903; + } + + // An embedded message set + optional AggregateMessageSet mset = 5; +} + +// Allow Aggregate to be used as an option at all possible locations +// in the .proto grammer. +extend google.protobuf.FileOptions { optional Aggregate fileopt = 15478479; } +extend google.protobuf.MessageOptions { optional Aggregate msgopt = 15480088; } +extend google.protobuf.FieldOptions { optional Aggregate fieldopt = 15481374; } +extend google.protobuf.EnumOptions { optional Aggregate enumopt = 15483218; } +extend google.protobuf.EnumValueOptions { optional Aggregate enumvalopt = 15486921; } +extend google.protobuf.ServiceOptions { optional Aggregate serviceopt = 15497145; } +extend google.protobuf.MethodOptions { optional Aggregate methodopt = 15512713; } + +// Try using AggregateOption at different points in the proto grammar +option (fileopt) = { + s: 'FileAnnotation' + // Also test the handling of comments + /* of both types */ i: 100 + + sub { s: 'NestedFileAnnotation' } + + // Include a google.protobuf.FileOptions and recursively extend it with + // another fileopt. + file { + [protobuf_unittest.fileopt] { + s:'FileExtensionAnnotation' + } + } + + // A message set inside an option value + mset { + [protobuf_unittest.AggregateMessageSetElement.message_set_extension] { + s: 'EmbeddedMessageSetElement' + } + } +}; + +message AggregateMessage { + option (msgopt) = { i:101 s:'MessageAnnotation' }; + optional int32 fieldname = 1 [(fieldopt) = { s:'FieldAnnotation' }]; +} + +service AggregateService { + option (serviceopt) = { s:'ServiceAnnotation' }; + rpc Method (AggregateMessage) returns (AggregateMessage) { + option (methodopt) = { s:'MethodAnnotation' }; + } +} + +enum AggregateEnum { + option (enumopt) = { s:'EnumAnnotation' }; + VALUE = 1 [(enumvalopt) = { s:'EnumValueAnnotation' }]; +} + +// Test custom options for nested type. +message NestedOptionType { + message NestedMessage { + option (message_opt1) = 1001; + optional int32 nested_field = 1 [(field_opt1) = 1002]; + } + enum NestedEnum { + option (enum_opt1) = 1003; + NESTED_ENUM_VALUE = 1 [(enum_value_opt1) = 1004]; + } + extend google.protobuf.FileOptions { + optional int32 nested_extension = 7912573 [(field_opt2) = 1005]; + } +} diff --git a/cpp/thirdparty/protobuf-2.3.0/src/google/protobuf/unittest_embed_optimize_for.proto b/cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/unittest_embed_optimize_for.proto similarity index 100% rename from cpp/thirdparty/protobuf-2.3.0/src/google/protobuf/unittest_embed_optimize_for.proto rename to cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/unittest_embed_optimize_for.proto diff --git a/cpp/thirdparty/protobuf-2.3.0/src/google/protobuf/unittest_empty.proto b/cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/unittest_empty.proto similarity index 100% rename from cpp/thirdparty/protobuf-2.3.0/src/google/protobuf/unittest_empty.proto rename to cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/unittest_empty.proto diff --git a/cpp/thirdparty/protobuf-2.3.0/src/google/protobuf/unittest_enormous_descriptor.proto b/cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/unittest_enormous_descriptor.proto similarity index 100% rename from cpp/thirdparty/protobuf-2.3.0/src/google/protobuf/unittest_enormous_descriptor.proto rename to cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/unittest_enormous_descriptor.proto diff --git a/cpp/thirdparty/protobuf-2.3.0/src/google/protobuf/unittest_import.proto b/cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/unittest_import.proto similarity index 96% rename from cpp/thirdparty/protobuf-2.3.0/src/google/protobuf/unittest_import.proto rename to cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/unittest_import.proto index cd533ecd3..c115b1117 100644 --- a/cpp/thirdparty/protobuf-2.3.0/src/google/protobuf/unittest_import.proto +++ b/cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/unittest_import.proto @@ -49,6 +49,9 @@ option java_package = "com.google.protobuf.test"; // Do not set a java_outer_classname here to verify that Proto2 works without // one. +// Test public import +import public "google/protobuf/unittest_import_public.proto"; + message ImportMessage { optional int32 d = 1; } diff --git a/cpp/thirdparty/protobuf-2.3.0/src/google/protobuf/unittest_import_lite.proto b/cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/unittest_import_lite.proto similarity index 96% rename from cpp/thirdparty/protobuf-2.3.0/src/google/protobuf/unittest_import_lite.proto rename to cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/unittest_import_lite.proto index ebaab5c05..81b117fe8 100644 --- a/cpp/thirdparty/protobuf-2.3.0/src/google/protobuf/unittest_import_lite.proto +++ b/cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/unittest_import_lite.proto @@ -38,6 +38,8 @@ option optimize_for = LITE_RUNTIME; option java_package = "com.google.protobuf"; +import public "google/protobuf/unittest_import_public_lite.proto"; + message ImportMessageLite { optional int32 d = 1; } diff --git a/cpp/thirdparty/protobuf-2.3.0/src/google/protobuf/stubs/hash.cc b/cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/unittest_import_public.proto similarity index 88% rename from cpp/thirdparty/protobuf-2.3.0/src/google/protobuf/stubs/hash.cc rename to cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/unittest_import_public.proto index 9eaf4a1ee..ea5d1b13f 100644 --- a/cpp/thirdparty/protobuf-2.3.0/src/google/protobuf/stubs/hash.cc +++ b/cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/unittest_import_public.proto @@ -28,14 +28,13 @@ // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -// Author: kenton@google.com (Kenton Varda) +// Author: liujisi@google.com (Pherl Liu) -#include -namespace google { -namespace protobuf { +package protobuf_unittest_import; -// Nothing needed here right now. +option java_package = "com.google.protobuf.test"; -} // namespace protobuf -} // namespace google +message PublicImportMessage { + optional int32 e = 1; +} diff --git a/cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/unittest_import_public_lite.proto b/cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/unittest_import_public_lite.proto new file mode 100644 index 000000000..d077563cb --- /dev/null +++ b/cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/unittest_import_public_lite.proto @@ -0,0 +1,42 @@ +// Protocol Buffers - Google's data interchange format +// Copyright 2008 Google Inc. All rights reserved. +// http://code.google.com/p/protobuf/ +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +// Author: liujisi@google.com (Pherl Liu) + + +package protobuf_unittest_import; + +option optimize_for = LITE_RUNTIME; + +option java_package = "com.google.protobuf"; + +message PublicImportMessageLite { + optional int32 e = 1; +} diff --git a/cpp/thirdparty/protobuf-2.3.0/src/google/protobuf/unittest_lite.proto b/cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/unittest_lite.proto similarity index 89% rename from cpp/thirdparty/protobuf-2.3.0/src/google/protobuf/unittest_lite.proto rename to cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/unittest_lite.proto index cca6b497a..a1764aac8 100644 --- a/cpp/thirdparty/protobuf-2.3.0/src/google/protobuf/unittest_lite.proto +++ b/cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/unittest_lite.proto @@ -85,6 +85,12 @@ message TestAllTypesLite { optional string optional_string_piece = 24 [ctype=STRING_PIECE]; optional string optional_cord = 25 [ctype=CORD]; + // Defined in unittest_import_public.proto + optional protobuf_unittest_import.PublicImportMessageLite + optional_public_import_message = 26; + + optional NestedMessage optional_lazy_message = 27 [lazy=true]; + // Repeated repeated int32 repeated_int32 = 31; repeated int64 repeated_int64 = 32; @@ -118,6 +124,8 @@ message TestAllTypesLite { repeated string repeated_string_piece = 54 [ctype=STRING_PIECE]; repeated string repeated_cord = 55 [ctype=CORD]; + repeated NestedMessage repeated_lazy_message = 57 [lazy=true]; + // Singular with defaults optional int32 default_int32 = 61 [default = 41 ]; optional int64 default_int64 = 62 [default = 42 ]; @@ -213,6 +221,12 @@ extend TestAllExtensionsLite { [ctype=STRING_PIECE]; optional string optional_cord_extension_lite = 25 [ctype=CORD]; + optional protobuf_unittest_import.PublicImportMessageLite + optional_public_import_message_extension_lite = 26; + + optional TestAllTypesLite.NestedMessage + optional_lazy_message_extension_lite = 27 [lazy=true]; + // Repeated repeated int32 repeated_int32_extension_lite = 31; repeated int64 repeated_int64_extension_lite = 32; @@ -249,6 +263,9 @@ extend TestAllExtensionsLite { [ctype=STRING_PIECE]; repeated string repeated_cord_extension_lite = 55 [ctype=CORD]; + repeated TestAllTypesLite.NestedMessage + repeated_lazy_message_extension_lite = 57 [lazy=true]; + // Singular with defaults optional int32 default_int32_extension_lite = 61 [default = 41 ]; optional int64 default_int64_extension_lite = 62 [default = 42 ]; @@ -310,3 +327,34 @@ message TestNestedExtensionLite { message TestDeprecatedLite { optional int32 deprecated_field = 1 [deprecated = true]; } + +// See the comments of the same type in unittest.proto. +message TestParsingMergeLite { + message RepeatedFieldsGenerator { + repeated TestAllTypesLite field1 = 1; + repeated TestAllTypesLite field2 = 2; + repeated TestAllTypesLite field3 = 3; + repeated group Group1 = 10 { + optional TestAllTypesLite field1 = 11; + } + repeated group Group2 = 20 { + optional TestAllTypesLite field1 = 21; + } + repeated TestAllTypesLite ext1 = 1000; + repeated TestAllTypesLite ext2 = 1001; + } + required TestAllTypesLite required_all_types = 1; + optional TestAllTypesLite optional_all_types = 2; + repeated TestAllTypesLite repeated_all_types = 3; + optional group OptionalGroup = 10 { + optional TestAllTypesLite optional_group_all_types = 11; + } + repeated group RepeatedGroup = 20 { + optional TestAllTypesLite repeated_group_all_types = 21; + } + extensions 1000 to max; + extend TestParsingMergeLite { + optional TestAllTypesLite optional_ext = 1000; + repeated TestAllTypesLite repeated_ext = 1001; + } +} diff --git a/cpp/thirdparty/protobuf-2.3.0/src/google/protobuf/unittest_lite_imports_nonlite.proto b/cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/unittest_lite_imports_nonlite.proto similarity index 100% rename from cpp/thirdparty/protobuf-2.3.0/src/google/protobuf/unittest_lite_imports_nonlite.proto rename to cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/unittest_lite_imports_nonlite.proto diff --git a/cpp/thirdparty/protobuf-2.3.0/src/google/protobuf/unittest_mset.proto b/cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/unittest_mset.proto similarity index 100% rename from cpp/thirdparty/protobuf-2.3.0/src/google/protobuf/unittest_mset.proto rename to cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/unittest_mset.proto diff --git a/cpp/thirdparty/protobuf-2.3.0/src/google/protobuf/unittest_no_generic_services.proto b/cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/unittest_no_generic_services.proto similarity index 94% rename from cpp/thirdparty/protobuf-2.3.0/src/google/protobuf/unittest_no_generic_services.proto rename to cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/unittest_no_generic_services.proto index fcae4214f..cffb4122c 100644 --- a/cpp/thirdparty/protobuf-2.3.0/src/google/protobuf/unittest_no_generic_services.proto +++ b/cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/unittest_no_generic_services.proto @@ -32,9 +32,7 @@ package google.protobuf.no_generic_services_test; -option cc_generic_services = false; -option java_generic_services = false; -option py_generic_services = false; +// *_generic_services are false by default. message TestMessage { optional int32 a = 1; diff --git a/cpp/thirdparty/protobuf-2.3.0/src/google/protobuf/unittest_optimize_for.proto b/cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/unittest_optimize_for.proto similarity index 100% rename from cpp/thirdparty/protobuf-2.3.0/src/google/protobuf/unittest_optimize_for.proto rename to cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/unittest_optimize_for.proto diff --git a/cpp/thirdparty/protobuf-2.3.0/src/google/protobuf/unknown_field_set.cc b/cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/unknown_field_set.cc similarity index 74% rename from cpp/thirdparty/protobuf-2.3.0/src/google/protobuf/unknown_field_set.cc rename to cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/unknown_field_set.cc index e1f8b838f..841433d5d 100644 --- a/cpp/thirdparty/protobuf-2.3.0/src/google/protobuf/unknown_field_set.cc +++ b/cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/unknown_field_set.cc @@ -32,13 +32,14 @@ // Based on original Protocol Buffers design by // Sanjay Ghemawat, Jeff Dean, and others. -#include #include -#include + +#include #include #include #include #include +#include namespace google { namespace protobuf { @@ -59,6 +60,14 @@ void UnknownFieldSet::ClearFallback() { fields_->clear(); } +void UnknownFieldSet::ClearAndFreeMemory() { + if (fields_ != NULL) { + Clear(); + delete fields_; + fields_ = NULL; + } +} + void UnknownFieldSet::MergeFrom(const UnknownFieldSet& other) { for (int i = 0; i < other.field_count(); i++) { AddField(other.field(i)); @@ -73,8 +82,9 @@ int UnknownFieldSet::SpaceUsedExcludingSelf() const { const UnknownField& field = (*fields_)[i]; switch (field.type()) { case UnknownField::TYPE_LENGTH_DELIMITED: - total_size += sizeof(*field.length_delimited_) + - internal::StringSpaceUsedExcludingSelf(*field.length_delimited_); + total_size += sizeof(*field.length_delimited_.string_value_) + + internal::StringSpaceUsedExcludingSelf( + *field.length_delimited_.string_value_); break; case UnknownField::TYPE_GROUP: total_size += field.group_->SpaceUsed(); @@ -122,11 +132,12 @@ string* UnknownFieldSet::AddLengthDelimited(int number) { UnknownField field; field.number_ = number; field.type_ = UnknownField::TYPE_LENGTH_DELIMITED; - field.length_delimited_ = new string; + field.length_delimited_.string_value_ = new string; fields_->push_back(field); - return field.length_delimited_; + return field.length_delimited_.string_value_; } + UnknownFieldSet* UnknownFieldSet::AddGroup(int number) { if (fields_ == NULL) fields_ = new vector; UnknownField field; @@ -143,6 +154,39 @@ void UnknownFieldSet::AddField(const UnknownField& field) { fields_->back().DeepCopy(); } +void UnknownFieldSet::DeleteSubrange(int start, int num) { + GOOGLE_DCHECK(fields_ != NULL); + // Delete the specified fields. + for (int i = 0; i < num; ++i) { + (*fields_)[i + start].Delete(); + } + // Slide down the remaining fields. + for (int i = start + num; i < fields_->size(); ++i) { + (*fields_)[i - num] = (*fields_)[i]; + } + // Pop off the # of deleted fields. + for (int i = 0; i < num; ++i) { + fields_->pop_back(); + } +} + +void UnknownFieldSet::DeleteByNumber(int number) { + if (fields_ == NULL) return; + int left = 0; // The number of fields left after deletion. + for (int i = 0; i < fields_->size(); ++i) { + UnknownField* field = &(*fields_)[i]; + if (field->number() == number) { + field->Delete(); + } else { + if (i != left) { + (*fields_)[left] = (*fields_)[i]; + } + ++left; + } + } + fields_->resize(left); +} + bool UnknownFieldSet::MergeFromCodedStream(io::CodedInputStream* input) { UnknownFieldSet other; @@ -174,7 +218,7 @@ bool UnknownFieldSet::ParseFromArray(const void* data, int size) { void UnknownField::Delete() { switch (type()) { case UnknownField::TYPE_LENGTH_DELIMITED: - delete length_delimited_; + delete length_delimited_.string_value_; break; case UnknownField::TYPE_GROUP: delete group_; @@ -187,7 +231,8 @@ void UnknownField::Delete() { void UnknownField::DeepCopy() { switch (type()) { case UnknownField::TYPE_LENGTH_DELIMITED: - length_delimited_ = new string(*length_delimited_); + length_delimited_.string_value_ = new string( + *length_delimited_.string_value_); break; case UnknownField::TYPE_GROUP: { UnknownFieldSet* group = new UnknownFieldSet; @@ -200,5 +245,22 @@ void UnknownField::DeepCopy() { } } + +void UnknownField::SerializeLengthDelimitedNoTag( + io::CodedOutputStream* output) const { + GOOGLE_DCHECK_EQ(TYPE_LENGTH_DELIMITED, type_); + const string& data = *length_delimited_.string_value_; + output->WriteVarint32(data.size()); + output->WriteString(data); +} + +uint8* UnknownField::SerializeLengthDelimitedNoTagToArray(uint8* target) const { + GOOGLE_DCHECK_EQ(TYPE_LENGTH_DELIMITED, type_); + const string& data = *length_delimited_.string_value_; + target = io::CodedOutputStream::WriteVarint32ToArray(data.size(), target); + target = io::CodedOutputStream::WriteStringToArray(data, target); + return target; +} + } // namespace protobuf } // namespace google diff --git a/cpp/thirdparty/protobuf-2.3.0/src/google/protobuf/unknown_field_set.h b/cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/unknown_field_set.h similarity index 79% rename from cpp/thirdparty/protobuf-2.3.0/src/google/protobuf/unknown_field_set.h rename to cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/unknown_field_set.h index 84c2e2b60..825bba83a 100644 --- a/cpp/thirdparty/protobuf-2.3.0/src/google/protobuf/unknown_field_set.h +++ b/cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/unknown_field_set.h @@ -38,12 +38,24 @@ #ifndef GOOGLE_PROTOBUF_UNKNOWN_FIELD_SET_H__ #define GOOGLE_PROTOBUF_UNKNOWN_FIELD_SET_H__ +#include #include #include -#include +#include +// TODO(jasonh): some people seem to rely on protobufs to include this for them! namespace google { namespace protobuf { + namespace io { + class CodedInputStream; // coded_stream.h + class CodedOutputStream; // coded_stream.h + class ZeroCopyInputStream; // zero_copy_stream.h + } + namespace internal { + class WireFormat; // wire_format.h + class UnknownFieldSetFieldSkipperUsingCord; + // extension_set_heavy.cc + } class Message; // message.h class UnknownField; // below @@ -68,6 +80,9 @@ class LIBPROTOBUF_EXPORT UnknownFieldSet { // Remove all fields. inline void Clear(); + // Remove all fields and deallocate internal data objects + void ClearAndFreeMemory(); + // Is this set empty? inline bool empty() const; @@ -107,6 +122,15 @@ class LIBPROTOBUF_EXPORT UnknownFieldSet { // Adds an unknown field from another set. void AddField(const UnknownField& field); + // Delete fields with indices in the range [start .. start+num-1]. + // Caution: implementation moves all fields with indices [start+num .. ]. + void DeleteSubrange(int start, int num); + + // Delete all fields with a specific field number. The order of left fields + // is preserved. + // Caution: implementation moves all fields after the first deleted field. + void DeleteByNumber(int number); + // Parsing helpers ------------------------------------------------- // These work exactly like the similarly-named methods of Message. @@ -119,6 +143,7 @@ class LIBPROTOBUF_EXPORT UnknownFieldSet { } private: + void ClearFallback(); vector* fields_; @@ -159,6 +184,15 @@ class LIBPROTOBUF_EXPORT UnknownField { inline string* mutable_length_delimited(); inline UnknownFieldSet* mutable_group(); + // Serialization API. + // These methods can take advantage of the underlying implementation and may + // archieve a better performance than using getters to retrieve the data and + // do the serialization yourself. + void SerializeLengthDelimitedNoTag(io::CodedOutputStream* output) const; + uint8* SerializeLengthDelimitedNoTagToArray(uint8* target) const; + + inline int GetLengthDelimitedSize() const; + private: friend class UnknownFieldSet; @@ -168,13 +202,16 @@ class LIBPROTOBUF_EXPORT UnknownField { // Make a deep copy of any pointers in this UnknownField. void DeepCopy(); + unsigned int number_ : 29; unsigned int type_ : 3; union { uint64 varint_; uint32 fixed32_; uint64 fixed64_; - string* length_delimited_; + mutable union { + string* string_value_; + } length_delimited_; UnknownFieldSet* group_; }; }; @@ -211,57 +248,63 @@ inline void UnknownFieldSet::AddLengthDelimited( AddLengthDelimited(number)->assign(value); } + inline int UnknownField::number() const { return number_; } inline UnknownField::Type UnknownField::type() const { return static_cast(type_); } inline uint64 UnknownField::varint () const { - GOOGLE_DCHECK_EQ(type_, TYPE_VARINT); + assert(type_ == TYPE_VARINT); return varint_; } inline uint32 UnknownField::fixed32() const { - GOOGLE_DCHECK_EQ(type_, TYPE_FIXED32); + assert(type_ == TYPE_FIXED32); return fixed32_; } inline uint64 UnknownField::fixed64() const { - GOOGLE_DCHECK_EQ(type_, TYPE_FIXED64); + assert(type_ == TYPE_FIXED64); return fixed64_; } inline const string& UnknownField::length_delimited() const { - GOOGLE_DCHECK_EQ(type_, TYPE_LENGTH_DELIMITED); - return *length_delimited_; + assert(type_ == TYPE_LENGTH_DELIMITED); + return *length_delimited_.string_value_; } inline const UnknownFieldSet& UnknownField::group() const { - GOOGLE_DCHECK_EQ(type_, TYPE_GROUP); + assert(type_ == TYPE_GROUP); return *group_; } inline void UnknownField::set_varint(uint64 value) { - GOOGLE_DCHECK_EQ(type_, TYPE_VARINT); + assert(type_ == TYPE_VARINT); varint_ = value; } inline void UnknownField::set_fixed32(uint32 value) { - GOOGLE_DCHECK_EQ(type_, TYPE_FIXED32); + assert(type_ == TYPE_FIXED32); fixed32_ = value; } inline void UnknownField::set_fixed64(uint64 value) { - GOOGLE_DCHECK_EQ(type_, TYPE_FIXED64); + assert(type_ == TYPE_FIXED64); fixed64_ = value; } inline void UnknownField::set_length_delimited(const string& value) { - GOOGLE_DCHECK_EQ(type_, TYPE_LENGTH_DELIMITED); - length_delimited_->assign(value); + assert(type_ == TYPE_LENGTH_DELIMITED); + length_delimited_.string_value_->assign(value); } inline string* UnknownField::mutable_length_delimited() { - GOOGLE_DCHECK_EQ(type_, TYPE_LENGTH_DELIMITED); - return length_delimited_; + assert(type_ == TYPE_LENGTH_DELIMITED); + return length_delimited_.string_value_; } inline UnknownFieldSet* UnknownField::mutable_group() { - GOOGLE_DCHECK_EQ(type_, TYPE_GROUP); + assert(type_ == TYPE_GROUP); return group_; } +inline int UnknownField::GetLengthDelimitedSize() const { + GOOGLE_DCHECK_EQ(TYPE_LENGTH_DELIMITED, type_); + return length_delimited_.string_value_->size(); +} + } // namespace protobuf } // namespace google diff --git a/cpp/thirdparty/protobuf-2.3.0/src/google/protobuf/unknown_field_set_unittest.cc b/cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/unknown_field_set_unittest.cc similarity index 84% rename from cpp/thirdparty/protobuf-2.3.0/src/google/protobuf/unknown_field_set_unittest.cc rename to cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/unknown_field_set_unittest.cc index 1235c9ee6..c6b8769f3 100644 --- a/cpp/thirdparty/protobuf-2.3.0/src/google/protobuf/unknown_field_set_unittest.cc +++ b/cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/unknown_field_set_unittest.cc @@ -46,15 +46,13 @@ #include #include #include -#include +#include namespace google { namespace protobuf { using internal::WireFormat; -namespace { - class UnknownFieldSetTest : public testing::Test { protected: virtual void SetUp() { @@ -107,6 +105,8 @@ class UnknownFieldSetTest : public testing::Test { UnknownFieldSet* unknown_fields_; }; +namespace { + TEST_F(UnknownFieldSetTest, AllFieldsPresent) { // All fields of TestAllTypes should be present, in numeric order (because // that's the order we parsed them in). Fields that are not valid field @@ -297,12 +297,21 @@ TEST_F(UnknownFieldSetTest, MergeFrom) { destination.DebugString()); } + TEST_F(UnknownFieldSetTest, Clear) { // Clear the set. empty_message_.Clear(); EXPECT_EQ(0, unknown_fields_->field_count()); } +TEST_F(UnknownFieldSetTest, ClearAndFreeMemory) { + EXPECT_GT(unknown_fields_->field_count(), 0); + unknown_fields_->ClearAndFreeMemory(); + EXPECT_EQ(0, unknown_fields_->field_count()); + unknown_fields_->AddVarint(123456, 654321); + EXPECT_EQ(1, unknown_fields_->field_count()); +} + TEST_F(UnknownFieldSetTest, ParseKnownAndUnknown) { // Test mixing known and unknown fields when parsing. @@ -498,6 +507,7 @@ TEST_F(UnknownFieldSetTest, SpaceUsed) { EXPECT_LT(base_size, empty_message.SpaceUsed()); } + TEST_F(UnknownFieldSetTest, Empty) { UnknownFieldSet unknown_fields; EXPECT_TRUE(unknown_fields.empty()); @@ -507,6 +517,78 @@ TEST_F(UnknownFieldSetTest, Empty) { EXPECT_TRUE(unknown_fields.empty()); } +TEST_F(UnknownFieldSetTest, DeleteSubrange) { + // Exhaustively test the deletion of every possible subrange in arrays of all + // sizes from 0 through 9. + for (int size = 0; size < 10; ++size) { + for (int num = 0; num <= size; ++num) { + for (int start = 0; start < size - num; ++start) { + // Create a set with "size" fields. + UnknownFieldSet unknown; + for (int i = 0; i < size; ++i) { + unknown.AddFixed32(i, i); + } + // Delete the specified subrange. + unknown.DeleteSubrange(start, num); + // Make sure the resulting field values are still correct. + EXPECT_EQ(size - num, unknown.field_count()); + for (int i = 0; i < unknown.field_count(); ++i) { + if (i < start) { + EXPECT_EQ(i, unknown.field(i).fixed32()); + } else { + EXPECT_EQ(i + num, unknown.field(i).fixed32()); + } + } + } + } + } +} + +void CheckDeleteByNumber(const vector& field_numbers, int deleted_number, + const vector& expected_field_nubmers) { + UnknownFieldSet unknown_fields; + for (int i = 0; i < field_numbers.size(); ++i) { + unknown_fields.AddFixed32(field_numbers[i], i); + } + unknown_fields.DeleteByNumber(deleted_number); + ASSERT_EQ(expected_field_nubmers.size(), unknown_fields.field_count()); + for (int i = 0; i < expected_field_nubmers.size(); ++i) { + EXPECT_EQ(expected_field_nubmers[i], + unknown_fields.field(i).number()); + } +} + +#define MAKE_VECTOR(x) vector(x, x + GOOGLE_ARRAYSIZE(x)) +TEST_F(UnknownFieldSetTest, DeleteByNumber) { + CheckDeleteByNumber(vector(), 1, vector()); + static const int kTestFieldNumbers1[] = {1, 2, 3}; + static const int kFieldNumberToDelete1 = 1; + static const int kExpectedFieldNumbers1[] = {2, 3}; + CheckDeleteByNumber(MAKE_VECTOR(kTestFieldNumbers1), kFieldNumberToDelete1, + MAKE_VECTOR(kExpectedFieldNumbers1)); + static const int kTestFieldNumbers2[] = {1, 2, 3}; + static const int kFieldNumberToDelete2 = 2; + static const int kExpectedFieldNumbers2[] = {1, 3}; + CheckDeleteByNumber(MAKE_VECTOR(kTestFieldNumbers2), kFieldNumberToDelete2, + MAKE_VECTOR(kExpectedFieldNumbers2)); + static const int kTestFieldNumbers3[] = {1, 2, 3}; + static const int kFieldNumberToDelete3 = 3; + static const int kExpectedFieldNumbers3[] = {1, 2}; + CheckDeleteByNumber(MAKE_VECTOR(kTestFieldNumbers3), kFieldNumberToDelete3, + MAKE_VECTOR(kExpectedFieldNumbers3)); + static const int kTestFieldNumbers4[] = {1, 2, 1, 4, 1}; + static const int kFieldNumberToDelete4 = 1; + static const int kExpectedFieldNumbers4[] = {2, 4}; + CheckDeleteByNumber(MAKE_VECTOR(kTestFieldNumbers4), kFieldNumberToDelete4, + MAKE_VECTOR(kExpectedFieldNumbers4)); + static const int kTestFieldNumbers5[] = {1, 2, 3, 4, 5}; + static const int kFieldNumberToDelete5 = 6; + static const int kExpectedFieldNumbers5[] = {1, 2, 3, 4, 5}; + CheckDeleteByNumber(MAKE_VECTOR(kTestFieldNumbers5), kFieldNumberToDelete5, + MAKE_VECTOR(kExpectedFieldNumbers5)); +} +#undef MAKE_VECTOR } // namespace + } // namespace protobuf } // namespace google diff --git a/cpp/thirdparty/protobuf-2.3.0/src/google/protobuf/wire_format.cc b/cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/wire_format.cc similarity index 97% rename from cpp/thirdparty/protobuf-2.3.0/src/google/protobuf/wire_format.cc rename to cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/wire_format.cc index 831a57945..ead763b18 100644 --- a/cpp/thirdparty/protobuf-2.3.0/src/google/protobuf/wire_format.cc +++ b/cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/wire_format.cc @@ -48,12 +48,11 @@ #include + namespace google { namespace protobuf { namespace internal { -using internal::WireFormatLite; - namespace { // This function turns out to be convenient when using some macros later. @@ -239,8 +238,6 @@ void WireFormat::SerializeUnknownMessageSetItems( // The only unknown fields that are allowed to exist in a MessageSet are // messages, which are length-delimited. if (field.type() == UnknownField::TYPE_LENGTH_DELIMITED) { - const string& data = field.length_delimited(); - // Start group. output->WriteVarint32(WireFormatLite::kMessageSetItemStartTag); @@ -250,8 +247,7 @@ void WireFormat::SerializeUnknownMessageSetItems( // Write message. output->WriteVarint32(WireFormatLite::kMessageSetMessageTag); - output->WriteVarint32(data.size()); - output->WriteString(data); + field.SerializeLengthDelimitedNoTag(output); // End group. output->WriteVarint32(WireFormatLite::kMessageSetItemEndTag); @@ -268,8 +264,6 @@ uint8* WireFormat::SerializeUnknownMessageSetItemsToArray( // The only unknown fields that are allowed to exist in a MessageSet are // messages, which are length-delimited. if (field.type() == UnknownField::TYPE_LENGTH_DELIMITED) { - const string& data = field.length_delimited(); - // Start group. target = io::CodedOutputStream::WriteTagToArray( WireFormatLite::kMessageSetItemStartTag, target); @@ -283,8 +277,7 @@ uint8* WireFormat::SerializeUnknownMessageSetItemsToArray( // Write message. target = io::CodedOutputStream::WriteTagToArray( WireFormatLite::kMessageSetMessageTag, target); - target = io::CodedOutputStream::WriteVarint32ToArray(data.size(), target); - target = io::CodedOutputStream::WriteStringToArray(data, target); + target = field.SerializeLengthDelimitedNoTagToArray(target); // End group. target = io::CodedOutputStream::WriteTagToArray( @@ -354,9 +347,10 @@ int WireFormat::ComputeUnknownMessageSetItemsSize( if (field.type() == UnknownField::TYPE_LENGTH_DELIMITED) { size += WireFormatLite::kMessageSetItemTagsSize; size += io::CodedOutputStream::VarintSize32(field.number()); - size += io::CodedOutputStream::VarintSize32( - field.length_delimited().size()); - size += field.length_delimited().size(); + + int field_size = field.GetLengthDelimitedSize(); + size += io::CodedOutputStream::VarintSize32(field_size); + size += field_size; } } @@ -642,10 +636,7 @@ bool WireFormat::ParseAndMergeMessageSetItem( const FieldDescriptor* field = NULL; // If we see message data before the type_id, we'll append it to this so - // we can parse it later. This will probably never happen in practice, - // as no MessageSet encoder I know of writes the message before the type ID. - // But, it's technically valid so we should allow it. - // TODO(kenton): Use a Cord instead? Do I care? + // we can parse it later. string message_data; while (true) { @@ -683,7 +674,10 @@ bool WireFormat::ParseAndMergeMessageSetItem( uint32 length; if (!input->ReadVarint32(&length)) return false; if (!input->ReadString(&temp, length)) return false; - message_data.append(temp); + io::StringOutputStream output_stream(&message_data); + io::CodedOutputStream coded_output(&output_stream); + coded_output.WriteVarint32(length); + coded_output.WriteString(temp); } else { // Already saw type_id, so we can parse this directly. if (!ParseAndMergeField(fake_tag, field, message, input)) { @@ -1056,10 +1050,10 @@ void WireFormat::VerifyUTF8StringFallback(const char* data, break; // no default case: have the compiler warn if a case is not covered. } - GOOGLE_LOG(ERROR) << "Encountered string containing invalid UTF-8 data while " + GOOGLE_LOG(ERROR) << "String field contains invalid UTF-8 data when " << operation_str - << " protocol buffer. Strings must contain only UTF-8; " - "use the 'bytes' type for raw bytes."; + << " a protocol buffer. Use the 'bytes' type if you intend to " + "send raw bytes."; } } diff --git a/cpp/thirdparty/protobuf-2.3.0/src/google/protobuf/wire_format.h b/cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/wire_format.h similarity index 98% rename from cpp/thirdparty/protobuf-2.3.0/src/google/protobuf/wire_format.h rename to cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/wire_format.h index c75392508..6cc900299 100644 --- a/cpp/thirdparty/protobuf-2.3.0/src/google/protobuf/wire_format.h +++ b/cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/wire_format.h @@ -40,6 +40,7 @@ #define GOOGLE_PROTOBUF_WIRE_FORMAT_H__ #include +#include #include #include #include @@ -253,7 +254,7 @@ class LIBPROTOBUF_EXPORT UnknownFieldSetFieldSkipper : public FieldSkipper { virtual bool SkipMessage(io::CodedInputStream* input); virtual void SkipUnknownEnum(int field_number, int value); - private: + protected: UnknownFieldSet* unknown_fields_; }; @@ -293,6 +294,9 @@ inline void WireFormat::VerifyUTF8String(const char* data, int size, WireFormat::Operation op) { #ifdef GOOGLE_PROTOBUF_UTF8_VALIDATION_ENABLED WireFormat::VerifyUTF8StringFallback(data, size, op); +#else + // Avoid the compiler warning about unsued variables. + (void)data; (void)size; (void)op; #endif } diff --git a/cpp/thirdparty/protobuf-2.3.0/src/google/protobuf/wire_format_lite.cc b/cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/wire_format_lite.cc similarity index 96% rename from cpp/thirdparty/protobuf-2.3.0/src/google/protobuf/wire_format_lite.cc rename to cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/wire_format_lite.cc index d347d1169..738fc4214 100644 --- a/cpp/thirdparty/protobuf-2.3.0/src/google/protobuf/wire_format_lite.cc +++ b/cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/wire_format_lite.cc @@ -40,7 +40,7 @@ #include #include #include -#include +#include namespace google { namespace protobuf { @@ -56,10 +56,10 @@ const int WireFormatLite::kMessageSetMessageTag; #endif const int WireFormatLite::kMessageSetItemTagsSize = - io::CodedOutputStream::VarintSize32(kMessageSetItemStartTag) + - io::CodedOutputStream::VarintSize32(kMessageSetItemEndTag) + - io::CodedOutputStream::VarintSize32(kMessageSetTypeIdTag) + - io::CodedOutputStream::VarintSize32(kMessageSetMessageTag); + io::CodedOutputStream::StaticVarintSize32::value + + io::CodedOutputStream::StaticVarintSize32::value + + io::CodedOutputStream::StaticVarintSize32::value + + io::CodedOutputStream::StaticVarintSize32::value; const WireFormatLite::CppType WireFormatLite::kFieldTypeToCppTypeMap[MAX_FIELD_TYPE + 1] = { @@ -281,12 +281,14 @@ void WireFormatLite::WriteString(int field_number, const string& value, io::CodedOutputStream* output) { // String is for UTF-8 text only WriteTag(field_number, WIRETYPE_LENGTH_DELIMITED, output); + GOOGLE_CHECK(value.size() <= kint32max); output->WriteVarint32(value.size()); output->WriteString(value); } void WireFormatLite::WriteBytes(int field_number, const string& value, io::CodedOutputStream* output) { WriteTag(field_number, WIRETYPE_LENGTH_DELIMITED, output); + GOOGLE_CHECK(value.size() <= kint32max); output->WriteVarint32(value.size()); output->WriteString(value); } diff --git a/cpp/thirdparty/protobuf-2.3.0/src/google/protobuf/wire_format_lite.h b/cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/wire_format_lite.h similarity index 98% rename from cpp/thirdparty/protobuf-2.3.0/src/google/protobuf/wire_format_lite.h rename to cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/wire_format_lite.h index e3d5b2d8d..cb4fc918b 100644 --- a/cpp/thirdparty/protobuf-2.3.0/src/google/protobuf/wire_format_lite.h +++ b/cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/wire_format_lite.h @@ -41,16 +41,14 @@ #define GOOGLE_PROTOBUF_WIRE_FORMAT_LITE_H__ #include +#include #include +#include // for CodedOutputStream::Varint32Size namespace google { namespace protobuf { template class RepeatedField; // repeated_field.h - namespace io { - class CodedInputStream; // coded_stream.h - class CodedOutputStream; // coded_stream.h - } } namespace protobuf { @@ -477,6 +475,10 @@ class LIBPROTOBUF_EXPORT WireFormatLite { template static inline int MessageSizeNoVirtual(const MessageType& value); + // Given the length of data, calculate the byte size of the data on the + // wire if we encode the data as a length delimited field. + static inline int LengthDelimitedSize(int length); + private: // A helper method for the repeated primitive reader. This method has // optimizations for primitive types that have fixed size on the wire, and diff --git a/cpp/thirdparty/protobuf-2.3.0/src/google/protobuf/wire_format_lite_inl.h b/cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/wire_format_lite_inl.h similarity index 87% rename from cpp/thirdparty/protobuf-2.3.0/src/google/protobuf/wire_format_lite_inl.h rename to cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/wire_format_lite_inl.h index d7b2c3024..641cc92f6 100644 --- a/cpp/thirdparty/protobuf-2.3.0/src/google/protobuf/wire_format_lite_inl.h +++ b/cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/wire_format_lite_inl.h @@ -41,7 +41,6 @@ #include #include #include -#include #include @@ -222,7 +221,7 @@ inline const uint8* WireFormatLite::ReadPrimitiveFromArray< } template -inline bool WireFormatLite::ReadRepeatedPrimitive(int tag_size, +inline bool WireFormatLite::ReadRepeatedPrimitive(int, // tag_size, unused. uint32 tag, io::CodedInputStream* input, RepeatedField* values) { @@ -300,12 +299,12 @@ inline bool WireFormatLite::ReadRepeatedPrimitive< \ tag_size, tag, input, values); \ } -READ_REPEATED_FIXED_SIZE_PRIMITIVE(uint32, TYPE_FIXED32); -READ_REPEATED_FIXED_SIZE_PRIMITIVE(uint64, TYPE_FIXED64); -READ_REPEATED_FIXED_SIZE_PRIMITIVE(int32, TYPE_SFIXED32); -READ_REPEATED_FIXED_SIZE_PRIMITIVE(int64, TYPE_SFIXED64); -READ_REPEATED_FIXED_SIZE_PRIMITIVE(float, TYPE_FLOAT); -READ_REPEATED_FIXED_SIZE_PRIMITIVE(double, TYPE_DOUBLE); +READ_REPEATED_FIXED_SIZE_PRIMITIVE(uint32, TYPE_FIXED32) +READ_REPEATED_FIXED_SIZE_PRIMITIVE(uint64, TYPE_FIXED64) +READ_REPEATED_FIXED_SIZE_PRIMITIVE(int32, TYPE_SFIXED32) +READ_REPEATED_FIXED_SIZE_PRIMITIVE(int64, TYPE_SFIXED64) +READ_REPEATED_FIXED_SIZE_PRIMITIVE(float, TYPE_FLOAT) +READ_REPEATED_FIXED_SIZE_PRIMITIVE(double, TYPE_DOUBLE) #undef READ_REPEATED_FIXED_SIZE_PRIMITIVE @@ -368,12 +367,24 @@ inline bool WireFormatLite::ReadMessage(io::CodedInputStream* input, return true; } -template -inline bool WireFormatLite::ReadGroupNoVirtual(int field_number, - io::CodedInputStream* input, - MessageType* value) { +// We name the template parameter something long and extremely unlikely to occur +// elsewhere because a *qualified* member access expression designed to avoid +// virtual dispatch, C++03 [basic.lookup.classref] 3.4.5/4 requires that the +// name of the qualifying class to be looked up both in the context of the full +// expression (finding the template parameter) and in the context of the object +// whose member we are accessing. This could potentially find a nested type +// within that object. The standard goes on to require these names to refer to +// the same entity, which this collision would violate. The lack of a safe way +// to avoid this collision appears to be a defect in the standard, but until it +// is corrected, we choose the name to avoid accidental collisions. +template +inline bool WireFormatLite::ReadGroupNoVirtual( + int field_number, io::CodedInputStream* input, + MessageType_WorkAroundCppLookupDefect* value) { if (!input->IncrementRecursionDepth()) return false; - if (!value->MessageType::MergePartialFromCodedStream(input)) return false; + if (!value-> + MessageType_WorkAroundCppLookupDefect::MergePartialFromCodedStream(input)) + return false; input->DecrementRecursionDepth(); // Make sure the last thing read was an end tag for this group. if (!input->LastTagWas(MakeTag(field_number, WIRETYPE_END_GROUP))) { @@ -381,14 +392,16 @@ inline bool WireFormatLite::ReadGroupNoVirtual(int field_number, } return true; } -template -inline bool WireFormatLite::ReadMessageNoVirtual(io::CodedInputStream* input, - MessageType* value) { +template +inline bool WireFormatLite::ReadMessageNoVirtual( + io::CodedInputStream* input, MessageType_WorkAroundCppLookupDefect* value) { uint32 length; if (!input->ReadVarint32(&length)) return false; if (!input->IncrementRecursionDepth()) return false; io::CodedInputStream::Limit limit = input->PushLimit(length); - if (!value->MessageType::MergePartialFromCodedStream(input)) return false; + if (!value-> + MessageType_WorkAroundCppLookupDefect::MergePartialFromCodedStream(input)) + return false; // Make sure that parsing stopped when the limit was hit, not at an endgroup // tag. if (!input->ConsumedEntireMessage()) return false; @@ -461,21 +474,24 @@ inline void WireFormatLite::WriteEnumNoTag(int value, output->WriteVarint32SignExtended(value); } -template -inline void WireFormatLite::WriteGroupNoVirtual(int field_number, - const MessageType& value, - io::CodedOutputStream* output) { +// See comment on ReadGroupNoVirtual to understand the need for this template +// parameter name. +template +inline void WireFormatLite::WriteGroupNoVirtual( + int field_number, const MessageType_WorkAroundCppLookupDefect& value, + io::CodedOutputStream* output) { WriteTag(field_number, WIRETYPE_START_GROUP, output); - value.MessageType::SerializeWithCachedSizes(output); + value.MessageType_WorkAroundCppLookupDefect::SerializeWithCachedSizes(output); WriteTag(field_number, WIRETYPE_END_GROUP, output); } -template -inline void WireFormatLite::WriteMessageNoVirtual(int field_number, - const MessageType& value, - io::CodedOutputStream* output) { +template +inline void WireFormatLite::WriteMessageNoVirtual( + int field_number, const MessageType_WorkAroundCppLookupDefect& value, + io::CodedOutputStream* output) { WriteTag(field_number, WIRETYPE_LENGTH_DELIMITED, output); - output->WriteVarint32(value.MessageType::GetCachedSize()); - value.MessageType::SerializeWithCachedSizes(output); + output->WriteVarint32( + value.MessageType_WorkAroundCppLookupDefect::GetCachedSize()); + value.MessageType_WorkAroundCppLookupDefect::SerializeWithCachedSizes(output); } // =================================================================== @@ -672,20 +688,26 @@ inline uint8* WireFormatLite::WriteMessageToArray(int field_number, return value.SerializeWithCachedSizesToArray(target); } -template +// See comment on ReadGroupNoVirtual to understand the need for this template +// parameter name. +template inline uint8* WireFormatLite::WriteGroupNoVirtualToArray( - int field_number, const MessageType& value, uint8* target) { + int field_number, const MessageType_WorkAroundCppLookupDefect& value, + uint8* target) { target = WriteTagToArray(field_number, WIRETYPE_START_GROUP, target); - target = value.MessageType::SerializeWithCachedSizesToArray(target); + target = value.MessageType_WorkAroundCppLookupDefect + ::SerializeWithCachedSizesToArray(target); return WriteTagToArray(field_number, WIRETYPE_END_GROUP, target); } -template +template inline uint8* WireFormatLite::WriteMessageNoVirtualToArray( - int field_number, const MessageType& value, uint8* target) { + int field_number, const MessageType_WorkAroundCppLookupDefect& value, + uint8* target) { target = WriteTagToArray(field_number, WIRETYPE_LENGTH_DELIMITED, target); target = io::CodedOutputStream::WriteVarint32ToArray( - value.MessageType::GetCachedSize(), target); - return value.MessageType::SerializeWithCachedSizesToArray(target); + value.MessageType_WorkAroundCppLookupDefect::GetCachedSize(), target); + return value.MessageType_WorkAroundCppLookupDefect + ::SerializeWithCachedSizesToArray(target); } // =================================================================== @@ -726,18 +748,25 @@ inline int WireFormatLite::GroupSize(const MessageLite& value) { return value.ByteSize(); } inline int WireFormatLite::MessageSize(const MessageLite& value) { - int size = value.ByteSize(); - return io::CodedOutputStream::VarintSize32(size) + size; + return LengthDelimitedSize(value.ByteSize()); } -template -inline int WireFormatLite::GroupSizeNoVirtual(const MessageType& value) { - return value.MessageType::ByteSize(); +// See comment on ReadGroupNoVirtual to understand the need for this template +// parameter name. +template +inline int WireFormatLite::GroupSizeNoVirtual( + const MessageType_WorkAroundCppLookupDefect& value) { + return value.MessageType_WorkAroundCppLookupDefect::ByteSize(); } -template -inline int WireFormatLite::MessageSizeNoVirtual(const MessageType& value) { - int size = value.MessageType::ByteSize(); - return io::CodedOutputStream::VarintSize32(size) + size; +template +inline int WireFormatLite::MessageSizeNoVirtual( + const MessageType_WorkAroundCppLookupDefect& value) { + return LengthDelimitedSize( + value.MessageType_WorkAroundCppLookupDefect::ByteSize()); +} + +inline int WireFormatLite::LengthDelimitedSize(int length) { + return io::CodedOutputStream::VarintSize32(length) + length; } } // namespace internal diff --git a/cpp/thirdparty/protobuf-2.3.0/src/google/protobuf/wire_format_unittest.cc b/cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/wire_format_unittest.cc similarity index 90% rename from cpp/thirdparty/protobuf-2.3.0/src/google/protobuf/wire_format_unittest.cc rename to cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/wire_format_unittest.cc index 867970c49..9822828b1 100644 --- a/cpp/thirdparty/protobuf-2.3.0/src/google/protobuf/wire_format_unittest.cc +++ b/cpp/thirdparty/protobuf-2.5.0/src/google/protobuf/wire_format_unittest.cc @@ -44,7 +44,7 @@ #include #include #include -#include +#include namespace google { namespace protobuf { @@ -480,6 +480,54 @@ TEST(WireFormatTest, ParseMessageSet) { EXPECT_EQ(message_set.DebugString(), dynamic_message_set.DebugString()); } +TEST(WireFormatTest, ParseMessageSetWithReverseTagOrder) { + string data; + { + unittest::TestMessageSetExtension1 message; + message.set_i(123); + // Build a MessageSet manually with its message content put before its + // type_id. + io::StringOutputStream output_stream(&data); + io::CodedOutputStream coded_output(&output_stream); + coded_output.WriteTag(WireFormatLite::kMessageSetItemStartTag); + // Write the message content first. + WireFormatLite::WriteTag(WireFormatLite::kMessageSetMessageNumber, + WireFormatLite::WIRETYPE_LENGTH_DELIMITED, + &coded_output); + coded_output.WriteVarint32(message.ByteSize()); + message.SerializeWithCachedSizes(&coded_output); + // Write the type id. + uint32 type_id = message.GetDescriptor()->extension(0)->number(); + WireFormatLite::WriteUInt32(WireFormatLite::kMessageSetTypeIdNumber, + type_id, &coded_output); + coded_output.WriteTag(WireFormatLite::kMessageSetItemEndTag); + } + { + unittest::TestMessageSet message_set; + ASSERT_TRUE(message_set.ParseFromString(data)); + + EXPECT_EQ(123, message_set.GetExtension( + unittest::TestMessageSetExtension1::message_set_extension).i()); + } + { + // Test parse the message via Reflection. + unittest::TestMessageSet message_set; + io::CodedInputStream input( + reinterpret_cast(data.data()), data.size()); + EXPECT_TRUE(WireFormat::ParseAndMergePartial(&input, &message_set)); + EXPECT_TRUE(input.ConsumedEntireMessage()); + + EXPECT_EQ(123, message_set.GetExtension( + unittest::TestMessageSetExtension1::message_set_extension).i()); + } +} + +TEST(WireFormatTest, ParseBrokenMessageSet) { + unittest::TestMessageSet message_set; + string input("goodbye"); // Invalid wire format data. + EXPECT_FALSE(message_set.ParseFromString(input)); +} + TEST(WireFormatTest, RecursionLimit) { unittest::TestRecursiveMessage message; message.mutable_a()->mutable_a()->mutable_a()->mutable_a()->set_i(1); @@ -800,6 +848,10 @@ bool ReadMessage(const string &wire_buffer, T *message) { return message->ParseFromArray(wire_buffer.data(), wire_buffer.size()); } +bool StartsWith(const string& s, const string& prefix) { + return s.substr(0, prefix.length()) == prefix; +} + TEST(Utf8ValidationTest, WriteInvalidUTF8String) { string wire_buffer; protobuf_unittest::OneString input; @@ -811,11 +863,10 @@ TEST(Utf8ValidationTest, WriteInvalidUTF8String) { } #ifdef GOOGLE_PROTOBUF_UTF8_VALIDATION_ENABLED ASSERT_EQ(1, errors.size()); - EXPECT_EQ("Encountered string containing invalid UTF-8 data while " - "serializing protocol buffer. Strings must contain only UTF-8; " - "use the 'bytes' type for raw bytes.", - errors[0]); - + EXPECT_TRUE(StartsWith(errors[0], + "String field contains invalid UTF-8 data when " + "serializing a protocol buffer. Use the " + "'bytes' type if you intend to send raw bytes.")); #else ASSERT_EQ(0, errors.size()); #endif // GOOGLE_PROTOBUF_UTF8_VALIDATION_ENABLED @@ -834,10 +885,10 @@ TEST(Utf8ValidationTest, ReadInvalidUTF8String) { } #ifdef GOOGLE_PROTOBUF_UTF8_VALIDATION_ENABLED ASSERT_EQ(1, errors.size()); - EXPECT_EQ("Encountered string containing invalid UTF-8 data while " - "parsing protocol buffer. Strings must contain only UTF-8; " - "use the 'bytes' type for raw bytes.", - errors[0]); + EXPECT_TRUE(StartsWith(errors[0], + "String field contains invalid UTF-8 data when " + "parsing a protocol buffer. Use the " + "'bytes' type if you intend to send raw bytes.")); #else ASSERT_EQ(0, errors.size()); @@ -899,6 +950,28 @@ TEST(Utf8ValidationTest, ReadArbitraryBytes) { EXPECT_EQ(input.data(), output.data()); } +TEST(Utf8ValidationTest, ParseRepeatedString) { + protobuf_unittest::MoreBytes input; + input.add_data(kValidUTF8String); + input.add_data(kInvalidUTF8String); + input.add_data(kInvalidUTF8String); + string wire_buffer = input.SerializeAsString(); + + protobuf_unittest::MoreString output; + vector errors; + { + ScopedMemoryLog log; + ReadMessage(wire_buffer, &output); + errors = log.GetMessages(ERROR); + } +#ifdef GOOGLE_PROTOBUF_UTF8_VALIDATION_ENABLED + ASSERT_EQ(2, errors.size()); +#else + ASSERT_EQ(0, errors.size()); +#endif // GOOGLE_PROTOBUF_UTF8_VALIDATION_ENABLED + EXPECT_EQ(wire_buffer, output.SerializeAsString()); +} + } // namespace } // namespace internal } // namespace protobuf diff --git a/cpp/thirdparty/protobuf-2.3.0/src/solaris/libstdc++.la b/cpp/thirdparty/protobuf-2.5.0/src/solaris/libstdc++.la similarity index 100% rename from cpp/thirdparty/protobuf-2.3.0/src/solaris/libstdc++.la rename to cpp/thirdparty/protobuf-2.5.0/src/solaris/libstdc++.la diff --git a/cpp/thirdparty/protobuf-2.3.0/vsprojects/config.h b/cpp/thirdparty/protobuf-2.5.0/vsprojects/config.h similarity index 100% rename from cpp/thirdparty/protobuf-2.3.0/vsprojects/config.h rename to cpp/thirdparty/protobuf-2.5.0/vsprojects/config.h diff --git a/cpp/thirdparty/protobuf-2.3.0/vsprojects/convert2008to2005.sh b/cpp/thirdparty/protobuf-2.5.0/vsprojects/convert2008to2005.sh similarity index 100% rename from cpp/thirdparty/protobuf-2.3.0/vsprojects/convert2008to2005.sh rename to cpp/thirdparty/protobuf-2.5.0/vsprojects/convert2008to2005.sh diff --git a/cpp/thirdparty/protobuf-2.3.0/vsprojects/extract_includes.bat b/cpp/thirdparty/protobuf-2.5.0/vsprojects/extract_includes.bat similarity index 82% rename from cpp/thirdparty/protobuf-2.3.0/vsprojects/extract_includes.bat rename to cpp/thirdparty/protobuf-2.5.0/vsprojects/extract_includes.bat index 5e513d73d..2ddcddbef 100755 --- a/cpp/thirdparty/protobuf-2.3.0/vsprojects/extract_includes.bat +++ b/cpp/thirdparty/protobuf-2.5.0/vsprojects/extract_includes.bat @@ -7,13 +7,19 @@ md include\google\protobuf\compiler md include\google\protobuf\compiler\cpp md include\google\protobuf\compiler\java md include\google\protobuf\compiler\python +copy ..\src\google\protobuf\stubs\atomicops.h include\google\protobuf\stubs\atomicops.h +copy ..\src\google\protobuf\stubs\atomicops_internals_x86_msvc.h include\google\protobuf\stubs\atomicops_internals_x86_msvc.h copy ..\src\google\protobuf\stubs\common.h include\google\protobuf\stubs\common.h copy ..\src\google\protobuf\stubs\once.h include\google\protobuf\stubs\once.h +copy ..\src\google\protobuf\stubs\platform_macros.h include\google\protobuf\stubs\platform_macros.h +copy ..\src\google\protobuf\stubs\template_util.h include\google\protobuf\stubs\template_util.h +copy ..\src\google\protobuf\stubs\type_traits.h include\google\protobuf\stubs\type_traits.h copy ..\src\google\protobuf\descriptor.h include\google\protobuf\descriptor.h copy ..\src\google\protobuf\descriptor.pb.h include\google\protobuf\descriptor.pb.h copy ..\src\google\protobuf\descriptor_database.h include\google\protobuf\descriptor_database.h copy ..\src\google\protobuf\dynamic_message.h include\google\protobuf\dynamic_message.h copy ..\src\google\protobuf\extension_set.h include\google\protobuf\extension_set.h +copy ..\src\google\protobuf\generated_enum_reflection.h include\google\protobuf\generated_enum_reflection.h copy ..\src\google\protobuf\generated_message_util.h include\google\protobuf\generated_message_util.h copy ..\src\google\protobuf\generated_message_reflection.h include\google\protobuf\generated_message_reflection.h copy ..\src\google\protobuf\message.h include\google\protobuf\message.h @@ -40,3 +46,4 @@ copy ..\src\google\protobuf\compiler\parser.h include\google\protobuf\compiler\p copy ..\src\google\protobuf\compiler\cpp\cpp_generator.h include\google\protobuf\compiler\cpp\cpp_generator.h copy ..\src\google\protobuf\compiler\java\java_generator.h include\google\protobuf\compiler\java\java_generator.h copy ..\src\google\protobuf\compiler\python\python_generator.h include\google\protobuf\compiler\python\python_generator.h +copy ..\src\google\protobuf\compiler\plugin.h include\google\protobuf\compiler\plugin.h diff --git a/cpp/thirdparty/protobuf-2.3.0/vsprojects/libprotobuf-lite.vcproj b/cpp/thirdparty/protobuf-2.5.0/vsprojects/libprotobuf-lite.vcproj similarity index 87% rename from cpp/thirdparty/protobuf-2.3.0/vsprojects/libprotobuf-lite.vcproj rename to cpp/thirdparty/protobuf-2.5.0/vsprojects/libprotobuf-lite.vcproj index 819769951..302368469 100644 --- a/cpp/thirdparty/protobuf-2.3.0/vsprojects/libprotobuf-lite.vcproj +++ b/cpp/thirdparty/protobuf-2.5.0/vsprojects/libprotobuf-lite.vcproj @@ -187,12 +187,24 @@ RelativePath="..\src\google\protobuf\stubs\once.h" > + + + + + + + + + + + + + + diff --git a/cpp/thirdparty/protobuf-2.3.0/vsprojects/libprotobuf.vcproj b/cpp/thirdparty/protobuf-2.5.0/vsprojects/libprotobuf.vcproj similarity index 92% rename from cpp/thirdparty/protobuf-2.3.0/vsprojects/libprotobuf.vcproj rename to cpp/thirdparty/protobuf-2.5.0/vsprojects/libprotobuf.vcproj index 7b8111f2a..0546d8e52 100644 --- a/cpp/thirdparty/protobuf-2.3.0/vsprojects/libprotobuf.vcproj +++ b/cpp/thirdparty/protobuf-2.5.0/vsprojects/libprotobuf.vcproj @@ -215,6 +215,18 @@ RelativePath="..\src\google\protobuf\message_lite.h" > + + + + + + @@ -240,7 +252,19 @@ > + + + + + + - - @@ -363,6 +383,10 @@ RelativePath="..\src\google\protobuf\stubs\once.cc" > + + @@ -427,6 +451,10 @@ RelativePath="..\src\google\protobuf\io\zero_copy_stream_impl_lite.cc" > + + diff --git a/cpp/thirdparty/protobuf-2.3.0/vsprojects/libprotoc.vcproj b/cpp/thirdparty/protobuf-2.5.0/vsprojects/libprotoc.vcproj similarity index 94% rename from cpp/thirdparty/protobuf-2.3.0/vsprojects/libprotoc.vcproj rename to cpp/thirdparty/protobuf-2.5.0/vsprojects/libprotoc.vcproj index 81063d336..bda0d28ce 100644 --- a/cpp/thirdparty/protobuf-2.3.0/vsprojects/libprotoc.vcproj +++ b/cpp/thirdparty/protobuf-2.5.0/vsprojects/libprotoc.vcproj @@ -1,406 +1,426 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/cpp/thirdparty/protobuf-2.3.0/vsprojects/lite-test.vcproj b/cpp/thirdparty/protobuf-2.5.0/vsprojects/lite-test.vcproj similarity index 82% rename from cpp/thirdparty/protobuf-2.3.0/vsprojects/lite-test.vcproj rename to cpp/thirdparty/protobuf-2.5.0/vsprojects/lite-test.vcproj index 0887cf18e..2b205328a 100644 --- a/cpp/thirdparty/protobuf-2.3.0/vsprojects/lite-test.vcproj +++ b/cpp/thirdparty/protobuf-2.5.0/vsprojects/lite-test.vcproj @@ -46,7 +46,7 @@ AdditionalOptions="/wd4244 /wd4267 /wd4018 /wd4355 /wd4800 /wd4251 /wd4996 /wd4146 /wd4305" Optimization="0" AdditionalIncludeDirectories="../src;.;../gtest/include" - PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE;" + PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE;_VARIADIC_MAX=10;" MinimalRebuild="true" BasicRuntimeChecks="3" RuntimeLibrary="3" @@ -122,7 +122,7 @@ Name="VCCLCompilerTool" AdditionalOptions="/wd4244 /wd4267 /wd4018 /wd4355 /wd4800 /wd4251 /wd4996 /wd4146 /wd4305" AdditionalIncludeDirectories="../src;.;../gtest/include" - PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE;" + PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE;_VARIADIC_MAX=10;" RuntimeLibrary="2" UsePrecompiledHeader="0" WarningLevel="3" @@ -190,6 +190,10 @@ RelativePath=".\google\protobuf\unittest_import_lite.pb.h" > + + + + + + + + + + + + diff --git a/cpp/thirdparty/protobuf-2.3.0/vsprojects/protobuf.sln b/cpp/thirdparty/protobuf-2.5.0/vsprojects/protobuf.sln similarity index 98% rename from cpp/thirdparty/protobuf-2.3.0/vsprojects/protobuf.sln rename to cpp/thirdparty/protobuf-2.5.0/vsprojects/protobuf.sln index bac0055ef..a359c283e 100644 --- a/cpp/thirdparty/protobuf-2.3.0/vsprojects/protobuf.sln +++ b/cpp/thirdparty/protobuf-2.5.0/vsprojects/protobuf.sln @@ -1,92 +1,92 @@ - -Microsoft Visual Studio Solution File, Format Version 9.00 -# Visual Studio 2005 -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libprotobuf", "libprotobuf.vcproj", "{3E283F37-A4ED-41B7-A3E6-A2D89D131A30}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libprotoc", "libprotoc.vcproj", "{B84FF31A-5F9A-46F8-AB22-DBFC9BECE3BE}" - ProjectSection(ProjectDependencies) = postProject - {3E283F37-A4ED-41B7-A3E6-A2D89D131A30} = {3E283F37-A4ED-41B7-A3E6-A2D89D131A30} - EndProjectSection -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "protoc", "protoc.vcproj", "{1738D5F6-ED1E-47E0-B2F0-456864B93C1E}" - ProjectSection(ProjectDependencies) = postProject - {B84FF31A-5F9A-46F8-AB22-DBFC9BECE3BE} = {B84FF31A-5F9A-46F8-AB22-DBFC9BECE3BE} - {3E283F37-A4ED-41B7-A3E6-A2D89D131A30} = {3E283F37-A4ED-41B7-A3E6-A2D89D131A30} - EndProjectSection -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "tests", "tests.vcproj", "{4DF72760-C055-40A5-A77E-30A17E2AC2DB}" - ProjectSection(ProjectDependencies) = postProject - {B84FF31A-5F9A-46F8-AB22-DBFC9BECE3BE} = {B84FF31A-5F9A-46F8-AB22-DBFC9BECE3BE} - {3E283F37-A4ED-41B7-A3E6-A2D89D131A30} = {3E283F37-A4ED-41B7-A3E6-A2D89D131A30} - {C8F6C172-56F2-4E76-B5FA-C3B423B31BE7} = {C8F6C172-56F2-4E76-B5FA-C3B423B31BE7} - {3AF54C8A-10BF-4332-9147-F68ED9862032} = {3AF54C8A-10BF-4332-9147-F68ED9862032} - {CBBD34E5-02B0-40D5-B6D8-BFEA83E18B32} = {CBBD34E5-02B0-40D5-B6D8-BFEA83E18B32} - {1738D5F6-ED1E-47E0-B2F0-456864B93C1E} = {1738D5F6-ED1E-47E0-B2F0-456864B93C1E} - EndProjectSection -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "gtest", "..\gtest\msvc\gtest.vcproj", "{C8F6C172-56F2-4E76-B5FA-C3B423B31BE7}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "gtest_main", "..\gtest\msvc\gtest_main.vcproj", "{3AF54C8A-10BF-4332-9147-F68ED9862032}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libprotobuf-lite", "libprotobuf-lite.vcproj", "{49EA010D-706F-4BE2-A397-77854B72A040}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "lite-test", "lite-test.vcproj", "{12015ACE-42BE-4952-A5A0-44A9A46908E2}" - ProjectSection(ProjectDependencies) = postProject - {49EA010D-706F-4BE2-A397-77854B72A040} = {49EA010D-706F-4BE2-A397-77854B72A040} - {1738D5F6-ED1E-47E0-B2F0-456864B93C1E} = {1738D5F6-ED1E-47E0-B2F0-456864B93C1E} - EndProjectSection -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "test_plugin", "test_plugin.vcproj", "{CBBD34E5-02B0-40D5-B6D8-BFEA83E18B32}" - ProjectSection(ProjectDependencies) = postProject - {B84FF31A-5F9A-46F8-AB22-DBFC9BECE3BE} = {B84FF31A-5F9A-46F8-AB22-DBFC9BECE3BE} - {3E283F37-A4ED-41B7-A3E6-A2D89D131A30} = {3E283F37-A4ED-41B7-A3E6-A2D89D131A30} - {C8F6C172-56F2-4E76-B5FA-C3B423B31BE7} = {C8F6C172-56F2-4E76-B5FA-C3B423B31BE7} - EndProjectSection -EndProject -Global - GlobalSection(SolutionConfigurationPlatforms) = preSolution - Debug|Win32 = Debug|Win32 - Release|Win32 = Release|Win32 - EndGlobalSection - GlobalSection(ProjectConfigurationPlatforms) = postSolution - {3E283F37-A4ED-41B7-A3E6-A2D89D131A30}.Debug|Win32.ActiveCfg = Debug|Win32 - {3E283F37-A4ED-41B7-A3E6-A2D89D131A30}.Debug|Win32.Build.0 = Debug|Win32 - {3E283F37-A4ED-41B7-A3E6-A2D89D131A30}.Release|Win32.ActiveCfg = Release|Win32 - {3E283F37-A4ED-41B7-A3E6-A2D89D131A30}.Release|Win32.Build.0 = Release|Win32 - {B84FF31A-5F9A-46F8-AB22-DBFC9BECE3BE}.Debug|Win32.ActiveCfg = Debug|Win32 - {B84FF31A-5F9A-46F8-AB22-DBFC9BECE3BE}.Debug|Win32.Build.0 = Debug|Win32 - {B84FF31A-5F9A-46F8-AB22-DBFC9BECE3BE}.Release|Win32.ActiveCfg = Release|Win32 - {B84FF31A-5F9A-46F8-AB22-DBFC9BECE3BE}.Release|Win32.Build.0 = Release|Win32 - {1738D5F6-ED1E-47E0-B2F0-456864B93C1E}.Debug|Win32.ActiveCfg = Debug|Win32 - {1738D5F6-ED1E-47E0-B2F0-456864B93C1E}.Debug|Win32.Build.0 = Debug|Win32 - {1738D5F6-ED1E-47E0-B2F0-456864B93C1E}.Release|Win32.ActiveCfg = Release|Win32 - {1738D5F6-ED1E-47E0-B2F0-456864B93C1E}.Release|Win32.Build.0 = Release|Win32 - {4DF72760-C055-40A5-A77E-30A17E2AC2DB}.Debug|Win32.ActiveCfg = Debug|Win32 - {4DF72760-C055-40A5-A77E-30A17E2AC2DB}.Debug|Win32.Build.0 = Debug|Win32 - {4DF72760-C055-40A5-A77E-30A17E2AC2DB}.Release|Win32.ActiveCfg = Release|Win32 - {4DF72760-C055-40A5-A77E-30A17E2AC2DB}.Release|Win32.Build.0 = Release|Win32 - {C8F6C172-56F2-4E76-B5FA-C3B423B31BE7}.Debug|Win32.ActiveCfg = Debug|Win32 - {C8F6C172-56F2-4E76-B5FA-C3B423B31BE7}.Debug|Win32.Build.0 = Debug|Win32 - {C8F6C172-56F2-4E76-B5FA-C3B423B31BE7}.Release|Win32.ActiveCfg = Release|Win32 - {C8F6C172-56F2-4E76-B5FA-C3B423B31BE7}.Release|Win32.Build.0 = Release|Win32 - {3AF54C8A-10BF-4332-9147-F68ED9862032}.Debug|Win32.ActiveCfg = Debug|Win32 - {3AF54C8A-10BF-4332-9147-F68ED9862032}.Debug|Win32.Build.0 = Debug|Win32 - {3AF54C8A-10BF-4332-9147-F68ED9862032}.Release|Win32.ActiveCfg = Release|Win32 - {3AF54C8A-10BF-4332-9147-F68ED9862032}.Release|Win32.Build.0 = Release|Win32 - {49EA010D-706F-4BE2-A397-77854B72A040}.Debug|Win32.ActiveCfg = Debug|Win32 - {49EA010D-706F-4BE2-A397-77854B72A040}.Debug|Win32.Build.0 = Debug|Win32 - {49EA010D-706F-4BE2-A397-77854B72A040}.Release|Win32.ActiveCfg = Release|Win32 - {49EA010D-706F-4BE2-A397-77854B72A040}.Release|Win32.Build.0 = Release|Win32 - {12015ACE-42BE-4952-A5A0-44A9A46908E2}.Debug|Win32.ActiveCfg = Debug|Win32 - {12015ACE-42BE-4952-A5A0-44A9A46908E2}.Debug|Win32.Build.0 = Debug|Win32 - {12015ACE-42BE-4952-A5A0-44A9A46908E2}.Release|Win32.ActiveCfg = Release|Win32 - {12015ACE-42BE-4952-A5A0-44A9A46908E2}.Release|Win32.Build.0 = Release|Win32 - {CBBD34E5-02B0-40D5-B6D8-BFEA83E18B32}.Debug|Win32.ActiveCfg = Debug|Win32 - {CBBD34E5-02B0-40D5-B6D8-BFEA83E18B32}.Debug|Win32.Build.0 = Debug|Win32 - {CBBD34E5-02B0-40D5-B6D8-BFEA83E18B32}.Release|Win32.ActiveCfg = Release|Win32 - {CBBD34E5-02B0-40D5-B6D8-BFEA83E18B32}.Release|Win32.Build.0 = Release|Win32 - EndGlobalSection - GlobalSection(SolutionProperties) = preSolution - HideSolutionNode = FALSE - EndGlobalSection -EndGlobal + +Microsoft Visual Studio Solution File, Format Version 9.00 +# Visual Studio 2005 +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libprotobuf", "libprotobuf.vcproj", "{3E283F37-A4ED-41B7-A3E6-A2D89D131A30}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libprotoc", "libprotoc.vcproj", "{B84FF31A-5F9A-46F8-AB22-DBFC9BECE3BE}" + ProjectSection(ProjectDependencies) = postProject + {3E283F37-A4ED-41B7-A3E6-A2D89D131A30} = {3E283F37-A4ED-41B7-A3E6-A2D89D131A30} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "protoc", "protoc.vcproj", "{1738D5F6-ED1E-47E0-B2F0-456864B93C1E}" + ProjectSection(ProjectDependencies) = postProject + {B84FF31A-5F9A-46F8-AB22-DBFC9BECE3BE} = {B84FF31A-5F9A-46F8-AB22-DBFC9BECE3BE} + {3E283F37-A4ED-41B7-A3E6-A2D89D131A30} = {3E283F37-A4ED-41B7-A3E6-A2D89D131A30} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "tests", "tests.vcproj", "{4DF72760-C055-40A5-A77E-30A17E2AC2DB}" + ProjectSection(ProjectDependencies) = postProject + {B84FF31A-5F9A-46F8-AB22-DBFC9BECE3BE} = {B84FF31A-5F9A-46F8-AB22-DBFC9BECE3BE} + {3E283F37-A4ED-41B7-A3E6-A2D89D131A30} = {3E283F37-A4ED-41B7-A3E6-A2D89D131A30} + {C8F6C172-56F2-4E76-B5FA-C3B423B31BE7} = {C8F6C172-56F2-4E76-B5FA-C3B423B31BE7} + {3AF54C8A-10BF-4332-9147-F68ED9862032} = {3AF54C8A-10BF-4332-9147-F68ED9862032} + {CBBD34E5-02B0-40D5-B6D8-BFEA83E18B32} = {CBBD34E5-02B0-40D5-B6D8-BFEA83E18B32} + {1738D5F6-ED1E-47E0-B2F0-456864B93C1E} = {1738D5F6-ED1E-47E0-B2F0-456864B93C1E} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "gtest", "..\gtest\msvc\gtest.vcproj", "{C8F6C172-56F2-4E76-B5FA-C3B423B31BE7}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "gtest_main", "..\gtest\msvc\gtest_main.vcproj", "{3AF54C8A-10BF-4332-9147-F68ED9862032}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libprotobuf-lite", "libprotobuf-lite.vcproj", "{49EA010D-706F-4BE2-A397-77854B72A040}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "lite-test", "lite-test.vcproj", "{12015ACE-42BE-4952-A5A0-44A9A46908E2}" + ProjectSection(ProjectDependencies) = postProject + {49EA010D-706F-4BE2-A397-77854B72A040} = {49EA010D-706F-4BE2-A397-77854B72A040} + {1738D5F6-ED1E-47E0-B2F0-456864B93C1E} = {1738D5F6-ED1E-47E0-B2F0-456864B93C1E} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "test_plugin", "test_plugin.vcproj", "{CBBD34E5-02B0-40D5-B6D8-BFEA83E18B32}" + ProjectSection(ProjectDependencies) = postProject + {B84FF31A-5F9A-46F8-AB22-DBFC9BECE3BE} = {B84FF31A-5F9A-46F8-AB22-DBFC9BECE3BE} + {3E283F37-A4ED-41B7-A3E6-A2D89D131A30} = {3E283F37-A4ED-41B7-A3E6-A2D89D131A30} + {C8F6C172-56F2-4E76-B5FA-C3B423B31BE7} = {C8F6C172-56F2-4E76-B5FA-C3B423B31BE7} + EndProjectSection +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Win32 = Debug|Win32 + Release|Win32 = Release|Win32 + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {3E283F37-A4ED-41B7-A3E6-A2D89D131A30}.Debug|Win32.ActiveCfg = Debug|Win32 + {3E283F37-A4ED-41B7-A3E6-A2D89D131A30}.Debug|Win32.Build.0 = Debug|Win32 + {3E283F37-A4ED-41B7-A3E6-A2D89D131A30}.Release|Win32.ActiveCfg = Release|Win32 + {3E283F37-A4ED-41B7-A3E6-A2D89D131A30}.Release|Win32.Build.0 = Release|Win32 + {B84FF31A-5F9A-46F8-AB22-DBFC9BECE3BE}.Debug|Win32.ActiveCfg = Debug|Win32 + {B84FF31A-5F9A-46F8-AB22-DBFC9BECE3BE}.Debug|Win32.Build.0 = Debug|Win32 + {B84FF31A-5F9A-46F8-AB22-DBFC9BECE3BE}.Release|Win32.ActiveCfg = Release|Win32 + {B84FF31A-5F9A-46F8-AB22-DBFC9BECE3BE}.Release|Win32.Build.0 = Release|Win32 + {1738D5F6-ED1E-47E0-B2F0-456864B93C1E}.Debug|Win32.ActiveCfg = Debug|Win32 + {1738D5F6-ED1E-47E0-B2F0-456864B93C1E}.Debug|Win32.Build.0 = Debug|Win32 + {1738D5F6-ED1E-47E0-B2F0-456864B93C1E}.Release|Win32.ActiveCfg = Release|Win32 + {1738D5F6-ED1E-47E0-B2F0-456864B93C1E}.Release|Win32.Build.0 = Release|Win32 + {4DF72760-C055-40A5-A77E-30A17E2AC2DB}.Debug|Win32.ActiveCfg = Debug|Win32 + {4DF72760-C055-40A5-A77E-30A17E2AC2DB}.Debug|Win32.Build.0 = Debug|Win32 + {4DF72760-C055-40A5-A77E-30A17E2AC2DB}.Release|Win32.ActiveCfg = Release|Win32 + {4DF72760-C055-40A5-A77E-30A17E2AC2DB}.Release|Win32.Build.0 = Release|Win32 + {C8F6C172-56F2-4E76-B5FA-C3B423B31BE7}.Debug|Win32.ActiveCfg = Debug|Win32 + {C8F6C172-56F2-4E76-B5FA-C3B423B31BE7}.Debug|Win32.Build.0 = Debug|Win32 + {C8F6C172-56F2-4E76-B5FA-C3B423B31BE7}.Release|Win32.ActiveCfg = Release|Win32 + {C8F6C172-56F2-4E76-B5FA-C3B423B31BE7}.Release|Win32.Build.0 = Release|Win32 + {3AF54C8A-10BF-4332-9147-F68ED9862032}.Debug|Win32.ActiveCfg = Debug|Win32 + {3AF54C8A-10BF-4332-9147-F68ED9862032}.Debug|Win32.Build.0 = Debug|Win32 + {3AF54C8A-10BF-4332-9147-F68ED9862032}.Release|Win32.ActiveCfg = Release|Win32 + {3AF54C8A-10BF-4332-9147-F68ED9862032}.Release|Win32.Build.0 = Release|Win32 + {49EA010D-706F-4BE2-A397-77854B72A040}.Debug|Win32.ActiveCfg = Debug|Win32 + {49EA010D-706F-4BE2-A397-77854B72A040}.Debug|Win32.Build.0 = Debug|Win32 + {49EA010D-706F-4BE2-A397-77854B72A040}.Release|Win32.ActiveCfg = Release|Win32 + {49EA010D-706F-4BE2-A397-77854B72A040}.Release|Win32.Build.0 = Release|Win32 + {12015ACE-42BE-4952-A5A0-44A9A46908E2}.Debug|Win32.ActiveCfg = Debug|Win32 + {12015ACE-42BE-4952-A5A0-44A9A46908E2}.Debug|Win32.Build.0 = Debug|Win32 + {12015ACE-42BE-4952-A5A0-44A9A46908E2}.Release|Win32.ActiveCfg = Release|Win32 + {12015ACE-42BE-4952-A5A0-44A9A46908E2}.Release|Win32.Build.0 = Release|Win32 + {CBBD34E5-02B0-40D5-B6D8-BFEA83E18B32}.Debug|Win32.ActiveCfg = Debug|Win32 + {CBBD34E5-02B0-40D5-B6D8-BFEA83E18B32}.Debug|Win32.Build.0 = Debug|Win32 + {CBBD34E5-02B0-40D5-B6D8-BFEA83E18B32}.Release|Win32.ActiveCfg = Release|Win32 + {CBBD34E5-02B0-40D5-B6D8-BFEA83E18B32}.Release|Win32.Build.0 = Release|Win32 + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection +EndGlobal diff --git a/cpp/thirdparty/protobuf-2.3.0/vsprojects/protoc.vcproj b/cpp/thirdparty/protobuf-2.5.0/vsprojects/protoc.vcproj similarity index 95% rename from cpp/thirdparty/protobuf-2.3.0/vsprojects/protoc.vcproj rename to cpp/thirdparty/protobuf-2.5.0/vsprojects/protoc.vcproj index a0ca63e55..68bb66ff8 100644 --- a/cpp/thirdparty/protobuf-2.3.0/vsprojects/protoc.vcproj +++ b/cpp/thirdparty/protobuf-2.5.0/vsprojects/protoc.vcproj @@ -1,192 +1,192 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/cpp/thirdparty/protobuf-2.3.0/vsprojects/readme.txt b/cpp/thirdparty/protobuf-2.5.0/vsprojects/readme.txt similarity index 100% rename from cpp/thirdparty/protobuf-2.3.0/vsprojects/readme.txt rename to cpp/thirdparty/protobuf-2.5.0/vsprojects/readme.txt diff --git a/cpp/thirdparty/protobuf-2.3.0/vsprojects/test_plugin.vcproj b/cpp/thirdparty/protobuf-2.5.0/vsprojects/test_plugin.vcproj similarity index 96% rename from cpp/thirdparty/protobuf-2.3.0/vsprojects/test_plugin.vcproj rename to cpp/thirdparty/protobuf-2.5.0/vsprojects/test_plugin.vcproj index cfe387f16..9bfbc545d 100755 --- a/cpp/thirdparty/protobuf-2.3.0/vsprojects/test_plugin.vcproj +++ b/cpp/thirdparty/protobuf-2.5.0/vsprojects/test_plugin.vcproj @@ -1,20 +1,20 @@ - - - - - - - + + + + + + + + + @@ -262,6 +266,10 @@ RelativePath="..\src\google\protobuf\compiler\cpp\cpp_bootstrap_unittest.cc" > + + @@ -278,6 +286,10 @@ RelativePath="..\src\google\protobuf\compiler\java\java_plugin_unittest.cc" > + + @@ -338,10 +350,26 @@ RelativePath="..\src\google\protobuf\repeated_field_unittest.cc" > + + + + + + + + @@ -374,6 +402,10 @@ RelativePath=".\google\protobuf\unittest_import.pb.cc" > + + @@ -523,6 +555,30 @@ /> + + + + + + + + diff --git a/etc/init.d/xtreemfs-service.template b/etc/init.d/xtreemfs-service.template index d88602223..e8d9faf52 100644 --- a/etc/init.d/xtreemfs-service.template +++ b/etc/init.d/xtreemfs-service.template @@ -30,7 +30,7 @@ LOG=/var/log/xtreemfs/@SHORT_SERVICE_NAME_LOWERCASE@.log if [ -z $JAVA_HOME ]; then export JAVA_HOME=/usr fi -JAVA_CALL="$JAVA_HOME/bin/java -ea -cp /usr/share/java/XtreemFS.jar:/usr/share/java/BabuDB.jar:/usr/share/java/Flease.jar:/usr/share/java/protobuf-java-2.3.0.jar:/usr/share/java/Foundation.jar:/usr/share/java/jdmkrt.jar:/usr/share/java/jdmktk.jar:/usr/share/java/commons-codec-1.3.jar" +JAVA_CALL="$JAVA_HOME/bin/java -ea -cp /usr/share/java/XtreemFS.jar:/usr/share/java/BabuDB.jar:/usr/share/java/Flease.jar:/usr/share/java/protobuf-java-2.5.0.jar:/usr/share/java/Foundation.jar:/usr/share/java/jdmkrt.jar:/usr/share/java/jdmktk.jar:/usr/share/java/commons-codec-1.3.jar" # For SELinux we need to use 'runuser' not 'su' if [ -x "/sbin/runuser" ]; then diff --git a/interface/xtreemfs/MRC.proto b/interface/xtreemfs/MRC.proto index 8977cdaef..8604ccd1e 100644 --- a/interface/xtreemfs/MRC.proto +++ b/interface/xtreemfs/MRC.proto @@ -100,7 +100,7 @@ message XAttr { // If both value and value_bytes are present, value_bytes will always // be preferred. For backward compability "value" always has to be set, // even if "value_bytes" is available. - optional bytes value_bytes = 3; + optional bytes value_bytes_string = 3; } // information about a volume; relevant for the 'xtfs_mkvol' call @@ -218,7 +218,7 @@ message getxattrRequest { message getxattrResponse { required string value = 1; // see XAttr message for explanation. - optional bytes value_bytes = 2; + optional bytes value_bytes_string = 2; } // creates a new hardlink to an existing file @@ -383,7 +383,7 @@ message setxattrRequest { // the (new) value for the extended attribute to set required string value = 4; // (new) value in bytes, see XAttr for explanation. - optional bytes value_bytes = 6; + optional bytes value_bytes_string = 6; // flags indicating whether the attribute is supposed to be created or // replaced (see XATTR_FLAGS) required fixed32 flags = 5; diff --git a/java/flease/nbproject/build-impl.xml b/java/flease/nbproject/build-impl.xml index ef1fc02d0..acc75ede5 100644 --- a/java/flease/nbproject/build-impl.xml +++ b/java/flease/nbproject/build-impl.xml @@ -1,5 +1,4 @@ - - - + --> @@ -55,7 +53,14 @@ is divided into following sections: - + + + + + + + + @@ -70,8 +75,14 @@ is divided into following sections: + + + + + + @@ -84,41 +95,42 @@ is divided into following sections: - - - - - - - - - - - - + - + - + - + - + - + + + + + + + + + + + + + @@ -173,8 +185,17 @@ is divided into following sections: - + + + + + + + + + + @@ -302,7 +323,9 @@ is divided into following sections: - + + + @@ -312,7 +335,8 @@ is divided into following sections: - + + @@ -328,11 +352,56 @@ is divided into following sections: + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Must set JVM to use for profiling in profiler.info.jvm + Must set profiler agent JVM arguments in profiler.info.jvmargs.agent + @@ -427,6 +496,7 @@ is divided into following sections: + @@ -442,7 +512,7 @@ is divided into following sections: - + @@ -504,6 +574,13 @@ is divided into following sections: + + + + + + + @@ -571,10 +648,10 @@ is divided into following sections: - + - + @@ -583,44 +660,53 @@ is divided into following sections: - To run this application from the command line without Ant, try: + To run this application from the command line without Ant, try: - java -cp "${run.classpath.with.dist.jar}" ${main.class} + java -cp "${run.classpath.with.dist.jar}" ${main.class} - + + + + + + + + + + + + + + - - - - - - - To run this application from the command line without Ant, try: - - java -jar "${dist.jar.resolved}" + + + - - - - - - - To run this application from the command line without Ant, try: + + + To run this application from the command line without Ant, try: - java -jar "${dist.jar.resolved}" + java -jar "${dist.jar.resolved}" + + + + + + - + + + + + + + + + + + Must select one file in the IDE or set profile.class + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + Must select some files in the IDE or set javac.includes @@ -865,6 +1018,13 @@ is divided into following sections: + + + + + + + diff --git a/java/flease/nbproject/genfiles.properties b/java/flease/nbproject/genfiles.properties index b38c53cfa..b812a4184 100644 --- a/java/flease/nbproject/genfiles.properties +++ b/java/flease/nbproject/genfiles.properties @@ -3,9 +3,9 @@ build.xml.script.CRC32=d8a5a904 build.xml.stylesheet.CRC32=958a1d3e@1.26.2.45 # This file is used by a NetBeans-based IDE to track changes in generated files such as build-impl.xml. # Do not edit this file. You may delete it but then the IDE will never regenerate such files for you. -nbproject/build-impl.xml.data.CRC32=ed08583d -nbproject/build-impl.xml.script.CRC32=43da40c6 -nbproject/build-impl.xml.stylesheet.CRC32=229523de@1.38.3.45 +nbproject/build-impl.xml.data.CRC32=d06e30bd +nbproject/build-impl.xml.script.CRC32=318c6c3f +nbproject/build-impl.xml.stylesheet.CRC32=0ae3a408@1.44.1.45 nbproject/profiler-build-impl.xml.data.CRC32=3d699ec7 nbproject/profiler-build-impl.xml.script.CRC32=abda56ed nbproject/profiler-build-impl.xml.stylesheet.CRC32=42cb6bcf@1.6.1 diff --git a/java/flease/nbproject/private/private.properties b/java/flease/nbproject/private/private.properties index 07feab4e3..ba93c2bc7 100644 --- a/java/flease/nbproject/private/private.properties +++ b/java/flease/nbproject/private/private.properties @@ -3,4 +3,4 @@ do.depend=false do.jar=true javac.debug=true javadoc.preview=true -user.properties.file=/home/bjko/.netbeans/6.9/build.properties +user.properties.file=/home/kleineweber/.netbeans/7.0/build.properties diff --git a/java/flease/nbproject/project.properties b/java/flease/nbproject/project.properties index 605bdfc6e..0c6fd61ac 100644 --- a/java/flease/nbproject/project.properties +++ b/java/flease/nbproject/project.properties @@ -25,11 +25,10 @@ dist.jar=${dist.dir}/Flease.jar dist.javadoc.dir=${dist.dir}/javadoc endorsed.classpath= excludes= -file.reference.Foundation.jar=../foundation/dist/Foundation.jar includes=** jar.compress=false javac.classpath=\ - ${file.reference.Foundation.jar} + ${reference.XtreemFS-foundation.jar} # Space-separated list of extra javac options javac.compilerargs= javac.deprecation=false @@ -55,7 +54,10 @@ javadoc.windowtitle= main.class= manifest.file=manifest.mf meta.inf.dir=${src.dir}/META-INF +mkdist.disabled=false platform.active=default_platform +project.XtreemFS-foundation=../foundation +reference.XtreemFS-foundation.jar=${project.XtreemFS-foundation}/dist/Foundation.jar run.classpath=\ ${javac.classpath}:\ ${build.classes.dir} diff --git a/java/flease/nbproject/project.xml b/java/flease/nbproject/project.xml index 7a503a37c..48b1ff46c 100644 --- a/java/flease/nbproject/project.xml +++ b/java/flease/nbproject/project.xml @@ -1,5 +1,4 @@ - - + org.netbeans.modules.java.j2seproject @@ -11,6 +10,15 @@ - + + + XtreemFS-foundation + jar + + jar + clean + jar + + diff --git a/java/foundation/eclipse-project/.classpath b/java/foundation/eclipse-project/.classpath index f7a165ee3..436a80349 100644 --- a/java/foundation/eclipse-project/.classpath +++ b/java/foundation/eclipse-project/.classpath @@ -3,7 +3,7 @@ - + diff --git a/java/foundation/nbproject/project.properties b/java/foundation/nbproject/project.properties index 6154efca0..f7e72c96c 100644 --- a/java/foundation/nbproject/project.properties +++ b/java/foundation/nbproject/project.properties @@ -29,14 +29,14 @@ file.reference.cdaclient.jar=lib/cdaclient.jar file.reference.junit-4.3.1.jar=../servers/lib/test/junit-4.3.1.jar file.reference.config.jar=lib/config.jar file.reference.je-3.2.13.jar=lib/je-3.2.13.jar -file.reference.protobuf-java-2.3.0.jar=../lib/protobuf-java-2.3.0.jar +file.reference.protobuf-java-2.5.0.jar=../lib/protobuf-java-2.5.0.jar file.reference.xbean.jar=lib/xbean.jar file.reference.commons-codec-1.3.jar=../lib/commons-codec-1.3.jar includes=** jar.compress=true javac.classpath=\ - ${file.reference.protobuf-java-2.3.0.jar}:\ - ${file.reference.commons-codec-1.3.jar} + ${file.reference.commons-codec-1.3.jar}:\ + ${file.reference.protobuf-java-2.5.0.jar} # Space-separated list of extra javac options javac.compilerargs= javac.deprecation=false @@ -66,6 +66,7 @@ jnlp.signed=false main.class= manifest.file=manifest.mf meta.inf.dir=${src.dir}/META-INF +mkdist.disabled=false platform.active=default_platform run.classpath=\ ${javac.classpath}:\ diff --git a/java/foundation/src/org/xtreemfs/foundation/pbrpc/generatedinterfaces/PBRPC.java b/java/foundation/src/org/xtreemfs/foundation/pbrpc/generatedinterfaces/PBRPC.java index 7b667bae0..eb0e279de 100644 --- a/java/foundation/src/org/xtreemfs/foundation/pbrpc/generatedinterfaces/PBRPC.java +++ b/java/foundation/src/org/xtreemfs/foundation/pbrpc/generatedinterfaces/PBRPC.java @@ -13,34 +13,50 @@ public final class PBRPC { registry.add(org.xtreemfs.foundation.pbrpc.generatedinterfaces.PBRPC.interfaceId); } public static final int PROC_ID_FIELD_NUMBER = 50001; + /** + * extend .google.protobuf.MethodOptions { ... } + */ public static final com.google.protobuf.GeneratedMessage.GeneratedExtension< com.google.protobuf.DescriptorProtos.MethodOptions, - java.lang.Integer> procId = - com.google.protobuf.GeneratedMessage - .newGeneratedExtension(); + java.lang.Integer> procId = com.google.protobuf.GeneratedMessage + .newFileScopedGeneratedExtension( + java.lang.Integer.class, + null); public static final int DATA_IN_FIELD_NUMBER = 50004; + /** + * extend .google.protobuf.MethodOptions { ... } + */ public static final com.google.protobuf.GeneratedMessage.GeneratedExtension< com.google.protobuf.DescriptorProtos.MethodOptions, - java.lang.Boolean> dataIn = - com.google.protobuf.GeneratedMessage - .newGeneratedExtension(); + java.lang.Boolean> dataIn = com.google.protobuf.GeneratedMessage + .newFileScopedGeneratedExtension( + java.lang.Boolean.class, + null); public static final int DATA_OUT_FIELD_NUMBER = 50003; + /** + * extend .google.protobuf.MethodOptions { ... } + */ public static final com.google.protobuf.GeneratedMessage.GeneratedExtension< com.google.protobuf.DescriptorProtos.MethodOptions, - java.lang.Boolean> dataOut = - com.google.protobuf.GeneratedMessage - .newGeneratedExtension(); + java.lang.Boolean> dataOut = com.google.protobuf.GeneratedMessage + .newFileScopedGeneratedExtension( + java.lang.Boolean.class, + null); public static final int INTERFACE_ID_FIELD_NUMBER = 50002; + /** + * extend .google.protobuf.ServiceOptions { ... } + */ public static final com.google.protobuf.GeneratedMessage.GeneratedExtension< com.google.protobuf.DescriptorProtos.ServiceOptions, - java.lang.Integer> interfaceId = - com.google.protobuf.GeneratedMessage - .newGeneratedExtension(); - + java.lang.Integer> interfaceId = com.google.protobuf.GeneratedMessage + .newFileScopedGeneratedExtension( + java.lang.Integer.class, + null); + public static com.google.protobuf.Descriptors.FileDescriptor getDescriptor() { return descriptor; @@ -64,18 +80,10 @@ public final class PBRPC { public com.google.protobuf.ExtensionRegistry assignDescriptors( com.google.protobuf.Descriptors.FileDescriptor root) { descriptor = root; - org.xtreemfs.foundation.pbrpc.generatedinterfaces.PBRPC.procId.internalInit( - org.xtreemfs.foundation.pbrpc.generatedinterfaces.PBRPC.getDescriptor().getExtensions().get(0), - java.lang.Integer.class); - org.xtreemfs.foundation.pbrpc.generatedinterfaces.PBRPC.dataIn.internalInit( - org.xtreemfs.foundation.pbrpc.generatedinterfaces.PBRPC.getDescriptor().getExtensions().get(1), - java.lang.Boolean.class); - org.xtreemfs.foundation.pbrpc.generatedinterfaces.PBRPC.dataOut.internalInit( - org.xtreemfs.foundation.pbrpc.generatedinterfaces.PBRPC.getDescriptor().getExtensions().get(2), - java.lang.Boolean.class); - org.xtreemfs.foundation.pbrpc.generatedinterfaces.PBRPC.interfaceId.internalInit( - org.xtreemfs.foundation.pbrpc.generatedinterfaces.PBRPC.getDescriptor().getExtensions().get(3), - java.lang.Integer.class); + procId.internalInit(descriptor.getExtensions().get(0)); + dataIn.internalInit(descriptor.getExtensions().get(1)); + dataOut.internalInit(descriptor.getExtensions().get(2)); + interfaceId.internalInit(descriptor.getExtensions().get(3)); return null; } }; @@ -85,8 +93,6 @@ public final class PBRPC { com.google.protobuf.DescriptorProtos.getDescriptor(), }, assigner); } - - public static void internalForceInit() {} - + // @@protoc_insertion_point(outer_class_scope) } diff --git a/java/foundation/src/org/xtreemfs/foundation/pbrpc/generatedinterfaces/Ping.java b/java/foundation/src/org/xtreemfs/foundation/pbrpc/generatedinterfaces/Ping.java index 6b465966f..3c0916f6c 100644 --- a/java/foundation/src/org/xtreemfs/foundation/pbrpc/generatedinterfaces/Ping.java +++ b/java/foundation/src/org/xtreemfs/foundation/pbrpc/generatedinterfaces/Ping.java @@ -8,228 +8,402 @@ public final class Ping { public static void registerAllExtensions( com.google.protobuf.ExtensionRegistry registry) { } + public interface PingRequestOrBuilder + extends com.google.protobuf.MessageOrBuilder { + + // required string text = 1; + /** + * required string text = 1; + */ + boolean hasText(); + /** + * required string text = 1; + */ + java.lang.String getText(); + /** + * required string text = 1; + */ + com.google.protobuf.ByteString + getTextBytes(); + + // required bool sendError = 2; + /** + * required bool sendError = 2; + */ + boolean hasSendError(); + /** + * required bool sendError = 2; + */ + boolean getSendError(); + } + /** + * Protobuf type {@code xtreemfs.pbrpc.PingRequest} + */ public static final class PingRequest extends - com.google.protobuf.GeneratedMessage { + com.google.protobuf.GeneratedMessage + implements PingRequestOrBuilder { // Use PingRequest.newBuilder() to construct. - private PingRequest() { - initFields(); + private PingRequest(com.google.protobuf.GeneratedMessage.Builder builder) { + super(builder); + this.unknownFields = builder.getUnknownFields(); } - private PingRequest(boolean noInit) {} - + private PingRequest(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); } + private static final PingRequest defaultInstance; public static PingRequest getDefaultInstance() { return defaultInstance; } - + public PingRequest getDefaultInstanceForType() { return defaultInstance; } - + + private final com.google.protobuf.UnknownFieldSet unknownFields; + @java.lang.Override + public final com.google.protobuf.UnknownFieldSet + getUnknownFields() { + return this.unknownFields; + } + private PingRequest( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + initFields(); + int mutable_bitField0_ = 0; + com.google.protobuf.UnknownFieldSet.Builder unknownFields = + com.google.protobuf.UnknownFieldSet.newBuilder(); + try { + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch (tag) { + case 0: + done = true; + break; + default: { + if (!parseUnknownField(input, unknownFields, + extensionRegistry, tag)) { + done = true; + } + break; + } + case 10: { + bitField0_ |= 0x00000001; + text_ = input.readBytes(); + break; + } + case 16: { + bitField0_ |= 0x00000002; + sendError_ = input.readBool(); + break; + } + } + } + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(this); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException( + e.getMessage()).setUnfinishedMessage(this); + } finally { + this.unknownFields = unknownFields.build(); + makeExtensionsImmutable(); + } + } public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { return org.xtreemfs.foundation.pbrpc.generatedinterfaces.Ping.internal_static_xtreemfs_pbrpc_PingRequest_descriptor; } - + protected com.google.protobuf.GeneratedMessage.FieldAccessorTable internalGetFieldAccessorTable() { - return org.xtreemfs.foundation.pbrpc.generatedinterfaces.Ping.internal_static_xtreemfs_pbrpc_PingRequest_fieldAccessorTable; + return org.xtreemfs.foundation.pbrpc.generatedinterfaces.Ping.internal_static_xtreemfs_pbrpc_PingRequest_fieldAccessorTable + .ensureFieldAccessorsInitialized( + org.xtreemfs.foundation.pbrpc.generatedinterfaces.Ping.PingRequest.class, org.xtreemfs.foundation.pbrpc.generatedinterfaces.Ping.PingRequest.Builder.class); } - + + public static com.google.protobuf.Parser PARSER = + new com.google.protobuf.AbstractParser() { + public PingRequest parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return new PingRequest(input, extensionRegistry); + } + }; + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; + } + + private int bitField0_; // required string text = 1; public static final int TEXT_FIELD_NUMBER = 1; - private boolean hasText; - private java.lang.String text_ = ""; - public boolean hasText() { return hasText; } - public java.lang.String getText() { return text_; } - + private java.lang.Object text_; + /** + * required string text = 1; + */ + public boolean hasText() { + return ((bitField0_ & 0x00000001) == 0x00000001); + } + /** + * required string text = 1; + */ + public java.lang.String getText() { + java.lang.Object ref = text_; + if (ref instanceof java.lang.String) { + return (java.lang.String) ref; + } else { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + if (bs.isValidUtf8()) { + text_ = s; + } + return s; + } + } + /** + * required string text = 1; + */ + public com.google.protobuf.ByteString + getTextBytes() { + java.lang.Object ref = text_; + if (ref instanceof java.lang.String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + text_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + // required bool sendError = 2; public static final int SENDERROR_FIELD_NUMBER = 2; - private boolean hasSendError; - private boolean sendError_ = false; - public boolean hasSendError() { return hasSendError; } - public boolean getSendError() { return sendError_; } - + private boolean sendError_; + /** + * required bool sendError = 2; + */ + public boolean hasSendError() { + return ((bitField0_ & 0x00000002) == 0x00000002); + } + /** + * required bool sendError = 2; + */ + public boolean getSendError() { + return sendError_; + } + private void initFields() { + text_ = ""; + sendError_ = false; } + private byte memoizedIsInitialized = -1; public final boolean isInitialized() { - if (!hasText) return false; - if (!hasSendError) return false; + byte isInitialized = memoizedIsInitialized; + if (isInitialized != -1) return isInitialized == 1; + + if (!hasText()) { + memoizedIsInitialized = 0; + return false; + } + if (!hasSendError()) { + memoizedIsInitialized = 0; + return false; + } + memoizedIsInitialized = 1; return true; } - + public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException { getSerializedSize(); - if (hasText()) { - output.writeString(1, getText()); + if (((bitField0_ & 0x00000001) == 0x00000001)) { + output.writeBytes(1, getTextBytes()); } - if (hasSendError()) { - output.writeBool(2, getSendError()); + if (((bitField0_ & 0x00000002) == 0x00000002)) { + output.writeBool(2, sendError_); } getUnknownFields().writeTo(output); } - + private int memoizedSerializedSize = -1; public int getSerializedSize() { int size = memoizedSerializedSize; if (size != -1) return size; - + size = 0; - if (hasText()) { + if (((bitField0_ & 0x00000001) == 0x00000001)) { size += com.google.protobuf.CodedOutputStream - .computeStringSize(1, getText()); + .computeBytesSize(1, getTextBytes()); } - if (hasSendError()) { + if (((bitField0_ & 0x00000002) == 0x00000002)) { size += com.google.protobuf.CodedOutputStream - .computeBoolSize(2, getSendError()); + .computeBoolSize(2, sendError_); } size += getUnknownFields().getSerializedSize(); memoizedSerializedSize = size; return size; } - + + private static final long serialVersionUID = 0L; + @java.lang.Override + protected java.lang.Object writeReplace() + throws java.io.ObjectStreamException { + return super.writeReplace(); + } + public static org.xtreemfs.foundation.pbrpc.generatedinterfaces.Ping.PingRequest parseFrom( com.google.protobuf.ByteString data) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data).buildParsed(); + return PARSER.parseFrom(data); } public static org.xtreemfs.foundation.pbrpc.generatedinterfaces.Ping.PingRequest parseFrom( com.google.protobuf.ByteString data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(data, extensionRegistry); } public static org.xtreemfs.foundation.pbrpc.generatedinterfaces.Ping.PingRequest parseFrom(byte[] data) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data).buildParsed(); + return PARSER.parseFrom(data); } public static org.xtreemfs.foundation.pbrpc.generatedinterfaces.Ping.PingRequest parseFrom( byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(data, extensionRegistry); } public static org.xtreemfs.foundation.pbrpc.generatedinterfaces.Ping.PingRequest parseFrom(java.io.InputStream input) throws java.io.IOException { - return newBuilder().mergeFrom(input).buildParsed(); + return PARSER.parseFrom(input); } public static org.xtreemfs.foundation.pbrpc.generatedinterfaces.Ping.PingRequest parseFrom( java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - return newBuilder().mergeFrom(input, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(input, extensionRegistry); } public static org.xtreemfs.foundation.pbrpc.generatedinterfaces.Ping.PingRequest parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException { - Builder builder = newBuilder(); - if (builder.mergeDelimitedFrom(input)) { - return builder.buildParsed(); - } else { - return null; - } + return PARSER.parseDelimitedFrom(input); } public static org.xtreemfs.foundation.pbrpc.generatedinterfaces.Ping.PingRequest parseDelimitedFrom( java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - Builder builder = newBuilder(); - if (builder.mergeDelimitedFrom(input, extensionRegistry)) { - return builder.buildParsed(); - } else { - return null; - } + return PARSER.parseDelimitedFrom(input, extensionRegistry); } public static org.xtreemfs.foundation.pbrpc.generatedinterfaces.Ping.PingRequest parseFrom( com.google.protobuf.CodedInputStream input) throws java.io.IOException { - return newBuilder().mergeFrom(input).buildParsed(); + return PARSER.parseFrom(input); } public static org.xtreemfs.foundation.pbrpc.generatedinterfaces.Ping.PingRequest parseFrom( com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - return newBuilder().mergeFrom(input, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(input, extensionRegistry); } - + public static Builder newBuilder() { return Builder.create(); } public Builder newBuilderForType() { return newBuilder(); } public static Builder newBuilder(org.xtreemfs.foundation.pbrpc.generatedinterfaces.Ping.PingRequest prototype) { return newBuilder().mergeFrom(prototype); } public Builder toBuilder() { return newBuilder(this); } - + + @java.lang.Override + protected Builder newBuilderForType( + com.google.protobuf.GeneratedMessage.BuilderParent parent) { + Builder builder = new Builder(parent); + return builder; + } + /** + * Protobuf type {@code xtreemfs.pbrpc.PingRequest} + */ public static final class Builder extends - com.google.protobuf.GeneratedMessage.Builder { - private org.xtreemfs.foundation.pbrpc.generatedinterfaces.Ping.PingRequest result; - + com.google.protobuf.GeneratedMessage.Builder + implements org.xtreemfs.foundation.pbrpc.generatedinterfaces.Ping.PingRequestOrBuilder { + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return org.xtreemfs.foundation.pbrpc.generatedinterfaces.Ping.internal_static_xtreemfs_pbrpc_PingRequest_descriptor; + } + + protected com.google.protobuf.GeneratedMessage.FieldAccessorTable + internalGetFieldAccessorTable() { + return org.xtreemfs.foundation.pbrpc.generatedinterfaces.Ping.internal_static_xtreemfs_pbrpc_PingRequest_fieldAccessorTable + .ensureFieldAccessorsInitialized( + org.xtreemfs.foundation.pbrpc.generatedinterfaces.Ping.PingRequest.class, org.xtreemfs.foundation.pbrpc.generatedinterfaces.Ping.PingRequest.Builder.class); + } + // Construct using org.xtreemfs.foundation.pbrpc.generatedinterfaces.Ping.PingRequest.newBuilder() - private Builder() {} - - private static Builder create() { - Builder builder = new Builder(); - builder.result = new org.xtreemfs.foundation.pbrpc.generatedinterfaces.Ping.PingRequest(); - return builder; + private Builder() { + maybeForceBuilderInitialization(); } - - protected org.xtreemfs.foundation.pbrpc.generatedinterfaces.Ping.PingRequest internalGetResult() { - return result; + + private Builder( + com.google.protobuf.GeneratedMessage.BuilderParent parent) { + super(parent); + maybeForceBuilderInitialization(); } - - public Builder clear() { - if (result == null) { - throw new IllegalStateException( - "Cannot call clear() after build()."); + private void maybeForceBuilderInitialization() { + if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) { } - result = new org.xtreemfs.foundation.pbrpc.generatedinterfaces.Ping.PingRequest(); + } + private static Builder create() { + return new Builder(); + } + + public Builder clear() { + super.clear(); + text_ = ""; + bitField0_ = (bitField0_ & ~0x00000001); + sendError_ = false; + bitField0_ = (bitField0_ & ~0x00000002); return this; } - + public Builder clone() { - return create().mergeFrom(result); + return create().mergeFrom(buildPartial()); } - + public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() { - return org.xtreemfs.foundation.pbrpc.generatedinterfaces.Ping.PingRequest.getDescriptor(); + return org.xtreemfs.foundation.pbrpc.generatedinterfaces.Ping.internal_static_xtreemfs_pbrpc_PingRequest_descriptor; } - + public org.xtreemfs.foundation.pbrpc.generatedinterfaces.Ping.PingRequest getDefaultInstanceForType() { return org.xtreemfs.foundation.pbrpc.generatedinterfaces.Ping.PingRequest.getDefaultInstance(); } - - public boolean isInitialized() { - return result.isInitialized(); - } + public org.xtreemfs.foundation.pbrpc.generatedinterfaces.Ping.PingRequest build() { - if (result != null && !isInitialized()) { + org.xtreemfs.foundation.pbrpc.generatedinterfaces.Ping.PingRequest result = buildPartial(); + if (!result.isInitialized()) { throw newUninitializedMessageException(result); } - return buildPartial(); - } - - private org.xtreemfs.foundation.pbrpc.generatedinterfaces.Ping.PingRequest buildParsed() - throws com.google.protobuf.InvalidProtocolBufferException { - if (!isInitialized()) { - throw newUninitializedMessageException( - result).asInvalidProtocolBufferException(); - } - return buildPartial(); + return result; } - + public org.xtreemfs.foundation.pbrpc.generatedinterfaces.Ping.PingRequest buildPartial() { - if (result == null) { - throw new IllegalStateException( - "build() has already been called on this Builder."); - } - org.xtreemfs.foundation.pbrpc.generatedinterfaces.Ping.PingRequest returnMe = result; - result = null; - return returnMe; + org.xtreemfs.foundation.pbrpc.generatedinterfaces.Ping.PingRequest result = new org.xtreemfs.foundation.pbrpc.generatedinterfaces.Ping.PingRequest(this); + int from_bitField0_ = bitField0_; + int to_bitField0_ = 0; + if (((from_bitField0_ & 0x00000001) == 0x00000001)) { + to_bitField0_ |= 0x00000001; + } + result.text_ = text_; + if (((from_bitField0_ & 0x00000002) == 0x00000002)) { + to_bitField0_ |= 0x00000002; + } + result.sendError_ = sendError_; + result.bitField0_ = to_bitField0_; + onBuilt(); + return result; } - + public Builder mergeFrom(com.google.protobuf.Message other) { if (other instanceof org.xtreemfs.foundation.pbrpc.generatedinterfaces.Ping.PingRequest) { return mergeFrom((org.xtreemfs.foundation.pbrpc.generatedinterfaces.Ping.PingRequest)other); @@ -238,11 +412,13 @@ public final class Ping { return this; } } - + public Builder mergeFrom(org.xtreemfs.foundation.pbrpc.generatedinterfaces.Ping.PingRequest other) { if (other == org.xtreemfs.foundation.pbrpc.generatedinterfaces.Ping.PingRequest.getDefaultInstance()) return this; if (other.hasText()) { - setText(other.getText()); + bitField0_ |= 0x00000001; + text_ = other.text_; + onChanged(); } if (other.hasSendError()) { setSendError(other.getSendError()); @@ -250,326 +426,650 @@ public final class Ping { this.mergeUnknownFields(other.getUnknownFields()); return this; } - + + public final boolean isInitialized() { + if (!hasText()) { + + return false; + } + if (!hasSendError()) { + + return false; + } + return true; + } + public Builder mergeFrom( com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - com.google.protobuf.UnknownFieldSet.Builder unknownFields = - com.google.protobuf.UnknownFieldSet.newBuilder( - this.getUnknownFields()); - while (true) { - int tag = input.readTag(); - switch (tag) { - case 0: - this.setUnknownFields(unknownFields.build()); - return this; - default: { - if (!parseUnknownField(input, unknownFields, - extensionRegistry, tag)) { - this.setUnknownFields(unknownFields.build()); - return this; - } - break; - } - case 10: { - setText(input.readString()); - break; - } - case 16: { - setSendError(input.readBool()); - break; - } + org.xtreemfs.foundation.pbrpc.generatedinterfaces.Ping.PingRequest parsedMessage = null; + try { + parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + parsedMessage = (org.xtreemfs.foundation.pbrpc.generatedinterfaces.Ping.PingRequest) e.getUnfinishedMessage(); + throw e; + } finally { + if (parsedMessage != null) { + mergeFrom(parsedMessage); } } + return this; } - - + private int bitField0_; + // required string text = 1; + private java.lang.Object text_ = ""; + /** + * required string text = 1; + */ public boolean hasText() { - return result.hasText(); + return ((bitField0_ & 0x00000001) == 0x00000001); } + /** + * required string text = 1; + */ public java.lang.String getText() { - return result.getText(); + java.lang.Object ref = text_; + if (!(ref instanceof java.lang.String)) { + java.lang.String s = ((com.google.protobuf.ByteString) ref) + .toStringUtf8(); + text_ = s; + return s; + } else { + return (java.lang.String) ref; + } + } + /** + * required string text = 1; + */ + public com.google.protobuf.ByteString + getTextBytes() { + java.lang.Object ref = text_; + if (ref instanceof String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + text_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } } - public Builder setText(java.lang.String value) { + /** + * required string text = 1; + */ + public Builder setText( + java.lang.String value) { if (value == null) { throw new NullPointerException(); } - result.hasText = true; - result.text_ = value; + bitField0_ |= 0x00000001; + text_ = value; + onChanged(); return this; } + /** + * required string text = 1; + */ public Builder clearText() { - result.hasText = false; - result.text_ = getDefaultInstance().getText(); + bitField0_ = (bitField0_ & ~0x00000001); + text_ = getDefaultInstance().getText(); + onChanged(); + return this; + } + /** + * required string text = 1; + */ + public Builder setTextBytes( + com.google.protobuf.ByteString value) { + if (value == null) { + throw new NullPointerException(); + } + bitField0_ |= 0x00000001; + text_ = value; + onChanged(); return this; } - + // required bool sendError = 2; + private boolean sendError_ ; + /** + * required bool sendError = 2; + */ public boolean hasSendError() { - return result.hasSendError(); + return ((bitField0_ & 0x00000002) == 0x00000002); } + /** + * required bool sendError = 2; + */ public boolean getSendError() { - return result.getSendError(); + return sendError_; } + /** + * required bool sendError = 2; + */ public Builder setSendError(boolean value) { - result.hasSendError = true; - result.sendError_ = value; + bitField0_ |= 0x00000002; + sendError_ = value; + onChanged(); return this; } + /** + * required bool sendError = 2; + */ public Builder clearSendError() { - result.hasSendError = false; - result.sendError_ = false; + bitField0_ = (bitField0_ & ~0x00000002); + sendError_ = false; + onChanged(); return this; } - + // @@protoc_insertion_point(builder_scope:xtreemfs.pbrpc.PingRequest) } - + static { defaultInstance = new PingRequest(true); - org.xtreemfs.foundation.pbrpc.generatedinterfaces.Ping.internalForceInit(); defaultInstance.initFields(); } - + // @@protoc_insertion_point(class_scope:xtreemfs.pbrpc.PingRequest) } - + + public interface PingResponseOrBuilder + extends com.google.protobuf.MessageOrBuilder { + + // optional .xtreemfs.pbrpc.PingResponse.PingResult result = 1; + /** + * optional .xtreemfs.pbrpc.PingResponse.PingResult result = 1; + */ + boolean hasResult(); + /** + * optional .xtreemfs.pbrpc.PingResponse.PingResult result = 1; + */ + org.xtreemfs.foundation.pbrpc.generatedinterfaces.Ping.PingResponse.PingResult getResult(); + /** + * optional .xtreemfs.pbrpc.PingResponse.PingResult result = 1; + */ + org.xtreemfs.foundation.pbrpc.generatedinterfaces.Ping.PingResponse.PingResultOrBuilder getResultOrBuilder(); + + // optional .xtreemfs.pbrpc.PingResponse.PingError error = 2; + /** + * optional .xtreemfs.pbrpc.PingResponse.PingError error = 2; + */ + boolean hasError(); + /** + * optional .xtreemfs.pbrpc.PingResponse.PingError error = 2; + */ + org.xtreemfs.foundation.pbrpc.generatedinterfaces.Ping.PingResponse.PingError getError(); + /** + * optional .xtreemfs.pbrpc.PingResponse.PingError error = 2; + */ + org.xtreemfs.foundation.pbrpc.generatedinterfaces.Ping.PingResponse.PingErrorOrBuilder getErrorOrBuilder(); + } + /** + * Protobuf type {@code xtreemfs.pbrpc.PingResponse} + */ public static final class PingResponse extends - com.google.protobuf.GeneratedMessage { + com.google.protobuf.GeneratedMessage + implements PingResponseOrBuilder { // Use PingResponse.newBuilder() to construct. - private PingResponse() { - initFields(); + private PingResponse(com.google.protobuf.GeneratedMessage.Builder builder) { + super(builder); + this.unknownFields = builder.getUnknownFields(); } - private PingResponse(boolean noInit) {} - + private PingResponse(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); } + private static final PingResponse defaultInstance; public static PingResponse getDefaultInstance() { return defaultInstance; } - + public PingResponse getDefaultInstanceForType() { return defaultInstance; } - + + private final com.google.protobuf.UnknownFieldSet unknownFields; + @java.lang.Override + public final com.google.protobuf.UnknownFieldSet + getUnknownFields() { + return this.unknownFields; + } + private PingResponse( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + initFields(); + int mutable_bitField0_ = 0; + com.google.protobuf.UnknownFieldSet.Builder unknownFields = + com.google.protobuf.UnknownFieldSet.newBuilder(); + try { + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch (tag) { + case 0: + done = true; + break; + default: { + if (!parseUnknownField(input, unknownFields, + extensionRegistry, tag)) { + done = true; + } + break; + } + case 10: { + org.xtreemfs.foundation.pbrpc.generatedinterfaces.Ping.PingResponse.PingResult.Builder subBuilder = null; + if (((bitField0_ & 0x00000001) == 0x00000001)) { + subBuilder = result_.toBuilder(); + } + result_ = input.readMessage(org.xtreemfs.foundation.pbrpc.generatedinterfaces.Ping.PingResponse.PingResult.PARSER, extensionRegistry); + if (subBuilder != null) { + subBuilder.mergeFrom(result_); + result_ = subBuilder.buildPartial(); + } + bitField0_ |= 0x00000001; + break; + } + case 18: { + org.xtreemfs.foundation.pbrpc.generatedinterfaces.Ping.PingResponse.PingError.Builder subBuilder = null; + if (((bitField0_ & 0x00000002) == 0x00000002)) { + subBuilder = error_.toBuilder(); + } + error_ = input.readMessage(org.xtreemfs.foundation.pbrpc.generatedinterfaces.Ping.PingResponse.PingError.PARSER, extensionRegistry); + if (subBuilder != null) { + subBuilder.mergeFrom(error_); + error_ = subBuilder.buildPartial(); + } + bitField0_ |= 0x00000002; + break; + } + } + } + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(this); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException( + e.getMessage()).setUnfinishedMessage(this); + } finally { + this.unknownFields = unknownFields.build(); + makeExtensionsImmutable(); + } + } public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { return org.xtreemfs.foundation.pbrpc.generatedinterfaces.Ping.internal_static_xtreemfs_pbrpc_PingResponse_descriptor; } - + protected com.google.protobuf.GeneratedMessage.FieldAccessorTable internalGetFieldAccessorTable() { - return org.xtreemfs.foundation.pbrpc.generatedinterfaces.Ping.internal_static_xtreemfs_pbrpc_PingResponse_fieldAccessorTable; + return org.xtreemfs.foundation.pbrpc.generatedinterfaces.Ping.internal_static_xtreemfs_pbrpc_PingResponse_fieldAccessorTable + .ensureFieldAccessorsInitialized( + org.xtreemfs.foundation.pbrpc.generatedinterfaces.Ping.PingResponse.class, org.xtreemfs.foundation.pbrpc.generatedinterfaces.Ping.PingResponse.Builder.class); + } + + public static com.google.protobuf.Parser PARSER = + new com.google.protobuf.AbstractParser() { + public PingResponse parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return new PingResponse(input, extensionRegistry); + } + }; + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; } - + + public interface PingResultOrBuilder + extends com.google.protobuf.MessageOrBuilder { + + // required string text = 1; + /** + * required string text = 1; + */ + boolean hasText(); + /** + * required string text = 1; + */ + java.lang.String getText(); + /** + * required string text = 1; + */ + com.google.protobuf.ByteString + getTextBytes(); + } + /** + * Protobuf type {@code xtreemfs.pbrpc.PingResponse.PingResult} + */ public static final class PingResult extends - com.google.protobuf.GeneratedMessage { + com.google.protobuf.GeneratedMessage + implements PingResultOrBuilder { // Use PingResult.newBuilder() to construct. - private PingResult() { - initFields(); + private PingResult(com.google.protobuf.GeneratedMessage.Builder builder) { + super(builder); + this.unknownFields = builder.getUnknownFields(); } - private PingResult(boolean noInit) {} - + private PingResult(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); } + private static final PingResult defaultInstance; public static PingResult getDefaultInstance() { return defaultInstance; } - + public PingResult getDefaultInstanceForType() { return defaultInstance; } - + + private final com.google.protobuf.UnknownFieldSet unknownFields; + @java.lang.Override + public final com.google.protobuf.UnknownFieldSet + getUnknownFields() { + return this.unknownFields; + } + private PingResult( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + initFields(); + int mutable_bitField0_ = 0; + com.google.protobuf.UnknownFieldSet.Builder unknownFields = + com.google.protobuf.UnknownFieldSet.newBuilder(); + try { + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch (tag) { + case 0: + done = true; + break; + default: { + if (!parseUnknownField(input, unknownFields, + extensionRegistry, tag)) { + done = true; + } + break; + } + case 10: { + bitField0_ |= 0x00000001; + text_ = input.readBytes(); + break; + } + } + } + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(this); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException( + e.getMessage()).setUnfinishedMessage(this); + } finally { + this.unknownFields = unknownFields.build(); + makeExtensionsImmutable(); + } + } public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { return org.xtreemfs.foundation.pbrpc.generatedinterfaces.Ping.internal_static_xtreemfs_pbrpc_PingResponse_PingResult_descriptor; } - + protected com.google.protobuf.GeneratedMessage.FieldAccessorTable internalGetFieldAccessorTable() { - return org.xtreemfs.foundation.pbrpc.generatedinterfaces.Ping.internal_static_xtreemfs_pbrpc_PingResponse_PingResult_fieldAccessorTable; + return org.xtreemfs.foundation.pbrpc.generatedinterfaces.Ping.internal_static_xtreemfs_pbrpc_PingResponse_PingResult_fieldAccessorTable + .ensureFieldAccessorsInitialized( + org.xtreemfs.foundation.pbrpc.generatedinterfaces.Ping.PingResponse.PingResult.class, org.xtreemfs.foundation.pbrpc.generatedinterfaces.Ping.PingResponse.PingResult.Builder.class); + } + + public static com.google.protobuf.Parser PARSER = + new com.google.protobuf.AbstractParser() { + public PingResult parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return new PingResult(input, extensionRegistry); + } + }; + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; } - + + private int bitField0_; // required string text = 1; public static final int TEXT_FIELD_NUMBER = 1; - private boolean hasText; - private java.lang.String text_ = ""; - public boolean hasText() { return hasText; } - public java.lang.String getText() { return text_; } - + private java.lang.Object text_; + /** + * required string text = 1; + */ + public boolean hasText() { + return ((bitField0_ & 0x00000001) == 0x00000001); + } + /** + * required string text = 1; + */ + public java.lang.String getText() { + java.lang.Object ref = text_; + if (ref instanceof java.lang.String) { + return (java.lang.String) ref; + } else { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + if (bs.isValidUtf8()) { + text_ = s; + } + return s; + } + } + /** + * required string text = 1; + */ + public com.google.protobuf.ByteString + getTextBytes() { + java.lang.Object ref = text_; + if (ref instanceof java.lang.String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + text_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + private void initFields() { + text_ = ""; } + private byte memoizedIsInitialized = -1; public final boolean isInitialized() { - if (!hasText) return false; + byte isInitialized = memoizedIsInitialized; + if (isInitialized != -1) return isInitialized == 1; + + if (!hasText()) { + memoizedIsInitialized = 0; + return false; + } + memoizedIsInitialized = 1; return true; } - + public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException { getSerializedSize(); - if (hasText()) { - output.writeString(1, getText()); + if (((bitField0_ & 0x00000001) == 0x00000001)) { + output.writeBytes(1, getTextBytes()); } getUnknownFields().writeTo(output); } - + private int memoizedSerializedSize = -1; public int getSerializedSize() { int size = memoizedSerializedSize; if (size != -1) return size; - + size = 0; - if (hasText()) { + if (((bitField0_ & 0x00000001) == 0x00000001)) { size += com.google.protobuf.CodedOutputStream - .computeStringSize(1, getText()); + .computeBytesSize(1, getTextBytes()); } size += getUnknownFields().getSerializedSize(); memoizedSerializedSize = size; return size; } - + + private static final long serialVersionUID = 0L; + @java.lang.Override + protected java.lang.Object writeReplace() + throws java.io.ObjectStreamException { + return super.writeReplace(); + } + public static org.xtreemfs.foundation.pbrpc.generatedinterfaces.Ping.PingResponse.PingResult parseFrom( com.google.protobuf.ByteString data) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data).buildParsed(); + return PARSER.parseFrom(data); } public static org.xtreemfs.foundation.pbrpc.generatedinterfaces.Ping.PingResponse.PingResult parseFrom( com.google.protobuf.ByteString data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(data, extensionRegistry); } public static org.xtreemfs.foundation.pbrpc.generatedinterfaces.Ping.PingResponse.PingResult parseFrom(byte[] data) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data).buildParsed(); + return PARSER.parseFrom(data); } public static org.xtreemfs.foundation.pbrpc.generatedinterfaces.Ping.PingResponse.PingResult parseFrom( byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(data, extensionRegistry); } public static org.xtreemfs.foundation.pbrpc.generatedinterfaces.Ping.PingResponse.PingResult parseFrom(java.io.InputStream input) throws java.io.IOException { - return newBuilder().mergeFrom(input).buildParsed(); + return PARSER.parseFrom(input); } public static org.xtreemfs.foundation.pbrpc.generatedinterfaces.Ping.PingResponse.PingResult parseFrom( java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - return newBuilder().mergeFrom(input, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(input, extensionRegistry); } public static org.xtreemfs.foundation.pbrpc.generatedinterfaces.Ping.PingResponse.PingResult parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException { - Builder builder = newBuilder(); - if (builder.mergeDelimitedFrom(input)) { - return builder.buildParsed(); - } else { - return null; - } + return PARSER.parseDelimitedFrom(input); } public static org.xtreemfs.foundation.pbrpc.generatedinterfaces.Ping.PingResponse.PingResult parseDelimitedFrom( java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - Builder builder = newBuilder(); - if (builder.mergeDelimitedFrom(input, extensionRegistry)) { - return builder.buildParsed(); - } else { - return null; - } + return PARSER.parseDelimitedFrom(input, extensionRegistry); } public static org.xtreemfs.foundation.pbrpc.generatedinterfaces.Ping.PingResponse.PingResult parseFrom( com.google.protobuf.CodedInputStream input) throws java.io.IOException { - return newBuilder().mergeFrom(input).buildParsed(); + return PARSER.parseFrom(input); } public static org.xtreemfs.foundation.pbrpc.generatedinterfaces.Ping.PingResponse.PingResult parseFrom( com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - return newBuilder().mergeFrom(input, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(input, extensionRegistry); } - + public static Builder newBuilder() { return Builder.create(); } public Builder newBuilderForType() { return newBuilder(); } public static Builder newBuilder(org.xtreemfs.foundation.pbrpc.generatedinterfaces.Ping.PingResponse.PingResult prototype) { return newBuilder().mergeFrom(prototype); } public Builder toBuilder() { return newBuilder(this); } - + + @java.lang.Override + protected Builder newBuilderForType( + com.google.protobuf.GeneratedMessage.BuilderParent parent) { + Builder builder = new Builder(parent); + return builder; + } + /** + * Protobuf type {@code xtreemfs.pbrpc.PingResponse.PingResult} + */ public static final class Builder extends - com.google.protobuf.GeneratedMessage.Builder { - private org.xtreemfs.foundation.pbrpc.generatedinterfaces.Ping.PingResponse.PingResult result; - + com.google.protobuf.GeneratedMessage.Builder + implements org.xtreemfs.foundation.pbrpc.generatedinterfaces.Ping.PingResponse.PingResultOrBuilder { + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return org.xtreemfs.foundation.pbrpc.generatedinterfaces.Ping.internal_static_xtreemfs_pbrpc_PingResponse_PingResult_descriptor; + } + + protected com.google.protobuf.GeneratedMessage.FieldAccessorTable + internalGetFieldAccessorTable() { + return org.xtreemfs.foundation.pbrpc.generatedinterfaces.Ping.internal_static_xtreemfs_pbrpc_PingResponse_PingResult_fieldAccessorTable + .ensureFieldAccessorsInitialized( + org.xtreemfs.foundation.pbrpc.generatedinterfaces.Ping.PingResponse.PingResult.class, org.xtreemfs.foundation.pbrpc.generatedinterfaces.Ping.PingResponse.PingResult.Builder.class); + } + // Construct using org.xtreemfs.foundation.pbrpc.generatedinterfaces.Ping.PingResponse.PingResult.newBuilder() - private Builder() {} - - private static Builder create() { - Builder builder = new Builder(); - builder.result = new org.xtreemfs.foundation.pbrpc.generatedinterfaces.Ping.PingResponse.PingResult(); - return builder; + private Builder() { + maybeForceBuilderInitialization(); } - - protected org.xtreemfs.foundation.pbrpc.generatedinterfaces.Ping.PingResponse.PingResult internalGetResult() { - return result; + + private Builder( + com.google.protobuf.GeneratedMessage.BuilderParent parent) { + super(parent); + maybeForceBuilderInitialization(); } - - public Builder clear() { - if (result == null) { - throw new IllegalStateException( - "Cannot call clear() after build()."); + private void maybeForceBuilderInitialization() { + if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) { } - result = new org.xtreemfs.foundation.pbrpc.generatedinterfaces.Ping.PingResponse.PingResult(); + } + private static Builder create() { + return new Builder(); + } + + public Builder clear() { + super.clear(); + text_ = ""; + bitField0_ = (bitField0_ & ~0x00000001); return this; } - + public Builder clone() { - return create().mergeFrom(result); + return create().mergeFrom(buildPartial()); } - + public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() { - return org.xtreemfs.foundation.pbrpc.generatedinterfaces.Ping.PingResponse.PingResult.getDescriptor(); + return org.xtreemfs.foundation.pbrpc.generatedinterfaces.Ping.internal_static_xtreemfs_pbrpc_PingResponse_PingResult_descriptor; } - + public org.xtreemfs.foundation.pbrpc.generatedinterfaces.Ping.PingResponse.PingResult getDefaultInstanceForType() { return org.xtreemfs.foundation.pbrpc.generatedinterfaces.Ping.PingResponse.PingResult.getDefaultInstance(); } - - public boolean isInitialized() { - return result.isInitialized(); - } + public org.xtreemfs.foundation.pbrpc.generatedinterfaces.Ping.PingResponse.PingResult build() { - if (result != null && !isInitialized()) { + org.xtreemfs.foundation.pbrpc.generatedinterfaces.Ping.PingResponse.PingResult result = buildPartial(); + if (!result.isInitialized()) { throw newUninitializedMessageException(result); } - return buildPartial(); - } - - private org.xtreemfs.foundation.pbrpc.generatedinterfaces.Ping.PingResponse.PingResult buildParsed() - throws com.google.protobuf.InvalidProtocolBufferException { - if (!isInitialized()) { - throw newUninitializedMessageException( - result).asInvalidProtocolBufferException(); - } - return buildPartial(); + return result; } - + public org.xtreemfs.foundation.pbrpc.generatedinterfaces.Ping.PingResponse.PingResult buildPartial() { - if (result == null) { - throw new IllegalStateException( - "build() has already been called on this Builder."); + org.xtreemfs.foundation.pbrpc.generatedinterfaces.Ping.PingResponse.PingResult result = new org.xtreemfs.foundation.pbrpc.generatedinterfaces.Ping.PingResponse.PingResult(this); + int from_bitField0_ = bitField0_; + int to_bitField0_ = 0; + if (((from_bitField0_ & 0x00000001) == 0x00000001)) { + to_bitField0_ |= 0x00000001; } - org.xtreemfs.foundation.pbrpc.generatedinterfaces.Ping.PingResponse.PingResult returnMe = result; - result = null; - return returnMe; + result.text_ = text_; + result.bitField0_ = to_bitField0_; + onBuilt(); + return result; } - + public Builder mergeFrom(com.google.protobuf.Message other) { if (other instanceof org.xtreemfs.foundation.pbrpc.generatedinterfaces.Ping.PingResponse.PingResult) { return mergeFrom((org.xtreemfs.foundation.pbrpc.generatedinterfaces.Ping.PingResponse.PingResult)other); @@ -578,286 +1078,477 @@ public final class Ping { return this; } } - + public Builder mergeFrom(org.xtreemfs.foundation.pbrpc.generatedinterfaces.Ping.PingResponse.PingResult other) { if (other == org.xtreemfs.foundation.pbrpc.generatedinterfaces.Ping.PingResponse.PingResult.getDefaultInstance()) return this; if (other.hasText()) { - setText(other.getText()); + bitField0_ |= 0x00000001; + text_ = other.text_; + onChanged(); } this.mergeUnknownFields(other.getUnknownFields()); return this; } - + + public final boolean isInitialized() { + if (!hasText()) { + + return false; + } + return true; + } + public Builder mergeFrom( com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - com.google.protobuf.UnknownFieldSet.Builder unknownFields = - com.google.protobuf.UnknownFieldSet.newBuilder( - this.getUnknownFields()); - while (true) { - int tag = input.readTag(); - switch (tag) { - case 0: - this.setUnknownFields(unknownFields.build()); - return this; - default: { - if (!parseUnknownField(input, unknownFields, - extensionRegistry, tag)) { - this.setUnknownFields(unknownFields.build()); - return this; - } - break; - } - case 10: { - setText(input.readString()); - break; - } + org.xtreemfs.foundation.pbrpc.generatedinterfaces.Ping.PingResponse.PingResult parsedMessage = null; + try { + parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + parsedMessage = (org.xtreemfs.foundation.pbrpc.generatedinterfaces.Ping.PingResponse.PingResult) e.getUnfinishedMessage(); + throw e; + } finally { + if (parsedMessage != null) { + mergeFrom(parsedMessage); } } + return this; } - - + private int bitField0_; + // required string text = 1; + private java.lang.Object text_ = ""; + /** + * required string text = 1; + */ public boolean hasText() { - return result.hasText(); + return ((bitField0_ & 0x00000001) == 0x00000001); } + /** + * required string text = 1; + */ public java.lang.String getText() { - return result.getText(); + java.lang.Object ref = text_; + if (!(ref instanceof java.lang.String)) { + java.lang.String s = ((com.google.protobuf.ByteString) ref) + .toStringUtf8(); + text_ = s; + return s; + } else { + return (java.lang.String) ref; + } + } + /** + * required string text = 1; + */ + public com.google.protobuf.ByteString + getTextBytes() { + java.lang.Object ref = text_; + if (ref instanceof String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + text_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } } - public Builder setText(java.lang.String value) { + /** + * required string text = 1; + */ + public Builder setText( + java.lang.String value) { if (value == null) { throw new NullPointerException(); } - result.hasText = true; - result.text_ = value; + bitField0_ |= 0x00000001; + text_ = value; + onChanged(); return this; } + /** + * required string text = 1; + */ public Builder clearText() { - result.hasText = false; - result.text_ = getDefaultInstance().getText(); + bitField0_ = (bitField0_ & ~0x00000001); + text_ = getDefaultInstance().getText(); + onChanged(); + return this; + } + /** + * required string text = 1; + */ + public Builder setTextBytes( + com.google.protobuf.ByteString value) { + if (value == null) { + throw new NullPointerException(); + } + bitField0_ |= 0x00000001; + text_ = value; + onChanged(); return this; } - + // @@protoc_insertion_point(builder_scope:xtreemfs.pbrpc.PingResponse.PingResult) } - + static { defaultInstance = new PingResult(true); - org.xtreemfs.foundation.pbrpc.generatedinterfaces.Ping.internalForceInit(); defaultInstance.initFields(); } - + // @@protoc_insertion_point(class_scope:xtreemfs.pbrpc.PingResponse.PingResult) } - + + public interface PingErrorOrBuilder + extends com.google.protobuf.MessageOrBuilder { + + // required string errorMessage = 1; + /** + * required string errorMessage = 1; + */ + boolean hasErrorMessage(); + /** + * required string errorMessage = 1; + */ + java.lang.String getErrorMessage(); + /** + * required string errorMessage = 1; + */ + com.google.protobuf.ByteString + getErrorMessageBytes(); + } + /** + * Protobuf type {@code xtreemfs.pbrpc.PingResponse.PingError} + */ public static final class PingError extends - com.google.protobuf.GeneratedMessage { + com.google.protobuf.GeneratedMessage + implements PingErrorOrBuilder { // Use PingError.newBuilder() to construct. - private PingError() { - initFields(); + private PingError(com.google.protobuf.GeneratedMessage.Builder builder) { + super(builder); + this.unknownFields = builder.getUnknownFields(); } - private PingError(boolean noInit) {} - + private PingError(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); } + private static final PingError defaultInstance; public static PingError getDefaultInstance() { return defaultInstance; } - + public PingError getDefaultInstanceForType() { return defaultInstance; } - + + private final com.google.protobuf.UnknownFieldSet unknownFields; + @java.lang.Override + public final com.google.protobuf.UnknownFieldSet + getUnknownFields() { + return this.unknownFields; + } + private PingError( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + initFields(); + int mutable_bitField0_ = 0; + com.google.protobuf.UnknownFieldSet.Builder unknownFields = + com.google.protobuf.UnknownFieldSet.newBuilder(); + try { + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch (tag) { + case 0: + done = true; + break; + default: { + if (!parseUnknownField(input, unknownFields, + extensionRegistry, tag)) { + done = true; + } + break; + } + case 10: { + bitField0_ |= 0x00000001; + errorMessage_ = input.readBytes(); + break; + } + } + } + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(this); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException( + e.getMessage()).setUnfinishedMessage(this); + } finally { + this.unknownFields = unknownFields.build(); + makeExtensionsImmutable(); + } + } public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { return org.xtreemfs.foundation.pbrpc.generatedinterfaces.Ping.internal_static_xtreemfs_pbrpc_PingResponse_PingError_descriptor; } - + protected com.google.protobuf.GeneratedMessage.FieldAccessorTable internalGetFieldAccessorTable() { - return org.xtreemfs.foundation.pbrpc.generatedinterfaces.Ping.internal_static_xtreemfs_pbrpc_PingResponse_PingError_fieldAccessorTable; + return org.xtreemfs.foundation.pbrpc.generatedinterfaces.Ping.internal_static_xtreemfs_pbrpc_PingResponse_PingError_fieldAccessorTable + .ensureFieldAccessorsInitialized( + org.xtreemfs.foundation.pbrpc.generatedinterfaces.Ping.PingResponse.PingError.class, org.xtreemfs.foundation.pbrpc.generatedinterfaces.Ping.PingResponse.PingError.Builder.class); + } + + public static com.google.protobuf.Parser PARSER = + new com.google.protobuf.AbstractParser() { + public PingError parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return new PingError(input, extensionRegistry); + } + }; + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; } - + + private int bitField0_; // required string errorMessage = 1; public static final int ERRORMESSAGE_FIELD_NUMBER = 1; - private boolean hasErrorMessage; - private java.lang.String errorMessage_ = ""; - public boolean hasErrorMessage() { return hasErrorMessage; } - public java.lang.String getErrorMessage() { return errorMessage_; } - + private java.lang.Object errorMessage_; + /** + * required string errorMessage = 1; + */ + public boolean hasErrorMessage() { + return ((bitField0_ & 0x00000001) == 0x00000001); + } + /** + * required string errorMessage = 1; + */ + public java.lang.String getErrorMessage() { + java.lang.Object ref = errorMessage_; + if (ref instanceof java.lang.String) { + return (java.lang.String) ref; + } else { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + if (bs.isValidUtf8()) { + errorMessage_ = s; + } + return s; + } + } + /** + * required string errorMessage = 1; + */ + public com.google.protobuf.ByteString + getErrorMessageBytes() { + java.lang.Object ref = errorMessage_; + if (ref instanceof java.lang.String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + errorMessage_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + private void initFields() { + errorMessage_ = ""; } + private byte memoizedIsInitialized = -1; public final boolean isInitialized() { - if (!hasErrorMessage) return false; + byte isInitialized = memoizedIsInitialized; + if (isInitialized != -1) return isInitialized == 1; + + if (!hasErrorMessage()) { + memoizedIsInitialized = 0; + return false; + } + memoizedIsInitialized = 1; return true; } - + public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException { getSerializedSize(); - if (hasErrorMessage()) { - output.writeString(1, getErrorMessage()); + if (((bitField0_ & 0x00000001) == 0x00000001)) { + output.writeBytes(1, getErrorMessageBytes()); } getUnknownFields().writeTo(output); } - + private int memoizedSerializedSize = -1; public int getSerializedSize() { int size = memoizedSerializedSize; if (size != -1) return size; - + size = 0; - if (hasErrorMessage()) { + if (((bitField0_ & 0x00000001) == 0x00000001)) { size += com.google.protobuf.CodedOutputStream - .computeStringSize(1, getErrorMessage()); + .computeBytesSize(1, getErrorMessageBytes()); } size += getUnknownFields().getSerializedSize(); memoizedSerializedSize = size; return size; } - + + private static final long serialVersionUID = 0L; + @java.lang.Override + protected java.lang.Object writeReplace() + throws java.io.ObjectStreamException { + return super.writeReplace(); + } + public static org.xtreemfs.foundation.pbrpc.generatedinterfaces.Ping.PingResponse.PingError parseFrom( com.google.protobuf.ByteString data) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data).buildParsed(); + return PARSER.parseFrom(data); } public static org.xtreemfs.foundation.pbrpc.generatedinterfaces.Ping.PingResponse.PingError parseFrom( com.google.protobuf.ByteString data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(data, extensionRegistry); } public static org.xtreemfs.foundation.pbrpc.generatedinterfaces.Ping.PingResponse.PingError parseFrom(byte[] data) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data).buildParsed(); + return PARSER.parseFrom(data); } public static org.xtreemfs.foundation.pbrpc.generatedinterfaces.Ping.PingResponse.PingError parseFrom( byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(data, extensionRegistry); } public static org.xtreemfs.foundation.pbrpc.generatedinterfaces.Ping.PingResponse.PingError parseFrom(java.io.InputStream input) throws java.io.IOException { - return newBuilder().mergeFrom(input).buildParsed(); + return PARSER.parseFrom(input); } public static org.xtreemfs.foundation.pbrpc.generatedinterfaces.Ping.PingResponse.PingError parseFrom( java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - return newBuilder().mergeFrom(input, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(input, extensionRegistry); } public static org.xtreemfs.foundation.pbrpc.generatedinterfaces.Ping.PingResponse.PingError parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException { - Builder builder = newBuilder(); - if (builder.mergeDelimitedFrom(input)) { - return builder.buildParsed(); - } else { - return null; - } + return PARSER.parseDelimitedFrom(input); } public static org.xtreemfs.foundation.pbrpc.generatedinterfaces.Ping.PingResponse.PingError parseDelimitedFrom( java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - Builder builder = newBuilder(); - if (builder.mergeDelimitedFrom(input, extensionRegistry)) { - return builder.buildParsed(); - } else { - return null; - } + return PARSER.parseDelimitedFrom(input, extensionRegistry); } public static org.xtreemfs.foundation.pbrpc.generatedinterfaces.Ping.PingResponse.PingError parseFrom( com.google.protobuf.CodedInputStream input) throws java.io.IOException { - return newBuilder().mergeFrom(input).buildParsed(); + return PARSER.parseFrom(input); } public static org.xtreemfs.foundation.pbrpc.generatedinterfaces.Ping.PingResponse.PingError parseFrom( com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - return newBuilder().mergeFrom(input, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(input, extensionRegistry); } - + public static Builder newBuilder() { return Builder.create(); } public Builder newBuilderForType() { return newBuilder(); } public static Builder newBuilder(org.xtreemfs.foundation.pbrpc.generatedinterfaces.Ping.PingResponse.PingError prototype) { return newBuilder().mergeFrom(prototype); } public Builder toBuilder() { return newBuilder(this); } - + + @java.lang.Override + protected Builder newBuilderForType( + com.google.protobuf.GeneratedMessage.BuilderParent parent) { + Builder builder = new Builder(parent); + return builder; + } + /** + * Protobuf type {@code xtreemfs.pbrpc.PingResponse.PingError} + */ public static final class Builder extends - com.google.protobuf.GeneratedMessage.Builder { - private org.xtreemfs.foundation.pbrpc.generatedinterfaces.Ping.PingResponse.PingError result; - + com.google.protobuf.GeneratedMessage.Builder + implements org.xtreemfs.foundation.pbrpc.generatedinterfaces.Ping.PingResponse.PingErrorOrBuilder { + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return org.xtreemfs.foundation.pbrpc.generatedinterfaces.Ping.internal_static_xtreemfs_pbrpc_PingResponse_PingError_descriptor; + } + + protected com.google.protobuf.GeneratedMessage.FieldAccessorTable + internalGetFieldAccessorTable() { + return org.xtreemfs.foundation.pbrpc.generatedinterfaces.Ping.internal_static_xtreemfs_pbrpc_PingResponse_PingError_fieldAccessorTable + .ensureFieldAccessorsInitialized( + org.xtreemfs.foundation.pbrpc.generatedinterfaces.Ping.PingResponse.PingError.class, org.xtreemfs.foundation.pbrpc.generatedinterfaces.Ping.PingResponse.PingError.Builder.class); + } + // Construct using org.xtreemfs.foundation.pbrpc.generatedinterfaces.Ping.PingResponse.PingError.newBuilder() - private Builder() {} - - private static Builder create() { - Builder builder = new Builder(); - builder.result = new org.xtreemfs.foundation.pbrpc.generatedinterfaces.Ping.PingResponse.PingError(); - return builder; + private Builder() { + maybeForceBuilderInitialization(); } - - protected org.xtreemfs.foundation.pbrpc.generatedinterfaces.Ping.PingResponse.PingError internalGetResult() { - return result; + + private Builder( + com.google.protobuf.GeneratedMessage.BuilderParent parent) { + super(parent); + maybeForceBuilderInitialization(); } - - public Builder clear() { - if (result == null) { - throw new IllegalStateException( - "Cannot call clear() after build()."); + private void maybeForceBuilderInitialization() { + if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) { } - result = new org.xtreemfs.foundation.pbrpc.generatedinterfaces.Ping.PingResponse.PingError(); + } + private static Builder create() { + return new Builder(); + } + + public Builder clear() { + super.clear(); + errorMessage_ = ""; + bitField0_ = (bitField0_ & ~0x00000001); return this; } - + public Builder clone() { - return create().mergeFrom(result); + return create().mergeFrom(buildPartial()); } - + public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() { - return org.xtreemfs.foundation.pbrpc.generatedinterfaces.Ping.PingResponse.PingError.getDescriptor(); + return org.xtreemfs.foundation.pbrpc.generatedinterfaces.Ping.internal_static_xtreemfs_pbrpc_PingResponse_PingError_descriptor; } - + public org.xtreemfs.foundation.pbrpc.generatedinterfaces.Ping.PingResponse.PingError getDefaultInstanceForType() { return org.xtreemfs.foundation.pbrpc.generatedinterfaces.Ping.PingResponse.PingError.getDefaultInstance(); } - - public boolean isInitialized() { - return result.isInitialized(); - } + public org.xtreemfs.foundation.pbrpc.generatedinterfaces.Ping.PingResponse.PingError build() { - if (result != null && !isInitialized()) { + org.xtreemfs.foundation.pbrpc.generatedinterfaces.Ping.PingResponse.PingError result = buildPartial(); + if (!result.isInitialized()) { throw newUninitializedMessageException(result); } - return buildPartial(); - } - - private org.xtreemfs.foundation.pbrpc.generatedinterfaces.Ping.PingResponse.PingError buildParsed() - throws com.google.protobuf.InvalidProtocolBufferException { - if (!isInitialized()) { - throw newUninitializedMessageException( - result).asInvalidProtocolBufferException(); - } - return buildPartial(); + return result; } - + public org.xtreemfs.foundation.pbrpc.generatedinterfaces.Ping.PingResponse.PingError buildPartial() { - if (result == null) { - throw new IllegalStateException( - "build() has already been called on this Builder."); + org.xtreemfs.foundation.pbrpc.generatedinterfaces.Ping.PingResponse.PingError result = new org.xtreemfs.foundation.pbrpc.generatedinterfaces.Ping.PingResponse.PingError(this); + int from_bitField0_ = bitField0_; + int to_bitField0_ = 0; + if (((from_bitField0_ & 0x00000001) == 0x00000001)) { + to_bitField0_ |= 0x00000001; } - org.xtreemfs.foundation.pbrpc.generatedinterfaces.Ping.PingResponse.PingError returnMe = result; - result = null; - return returnMe; + result.errorMessage_ = errorMessage_; + result.bitField0_ = to_bitField0_; + onBuilt(); + return result; } - + public Builder mergeFrom(com.google.protobuf.Message other) { if (other instanceof org.xtreemfs.foundation.pbrpc.generatedinterfaces.Ping.PingResponse.PingError) { return mergeFrom((org.xtreemfs.foundation.pbrpc.generatedinterfaces.Ping.PingResponse.PingError)other); @@ -866,280 +1557,405 @@ public final class Ping { return this; } } - + public Builder mergeFrom(org.xtreemfs.foundation.pbrpc.generatedinterfaces.Ping.PingResponse.PingError other) { if (other == org.xtreemfs.foundation.pbrpc.generatedinterfaces.Ping.PingResponse.PingError.getDefaultInstance()) return this; if (other.hasErrorMessage()) { - setErrorMessage(other.getErrorMessage()); + bitField0_ |= 0x00000001; + errorMessage_ = other.errorMessage_; + onChanged(); } this.mergeUnknownFields(other.getUnknownFields()); return this; } - + + public final boolean isInitialized() { + if (!hasErrorMessage()) { + + return false; + } + return true; + } + public Builder mergeFrom( com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - com.google.protobuf.UnknownFieldSet.Builder unknownFields = - com.google.protobuf.UnknownFieldSet.newBuilder( - this.getUnknownFields()); - while (true) { - int tag = input.readTag(); - switch (tag) { - case 0: - this.setUnknownFields(unknownFields.build()); - return this; - default: { - if (!parseUnknownField(input, unknownFields, - extensionRegistry, tag)) { - this.setUnknownFields(unknownFields.build()); - return this; - } - break; - } - case 10: { - setErrorMessage(input.readString()); - break; - } + org.xtreemfs.foundation.pbrpc.generatedinterfaces.Ping.PingResponse.PingError parsedMessage = null; + try { + parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + parsedMessage = (org.xtreemfs.foundation.pbrpc.generatedinterfaces.Ping.PingResponse.PingError) e.getUnfinishedMessage(); + throw e; + } finally { + if (parsedMessage != null) { + mergeFrom(parsedMessage); } } + return this; } - - + private int bitField0_; + // required string errorMessage = 1; + private java.lang.Object errorMessage_ = ""; + /** + * required string errorMessage = 1; + */ public boolean hasErrorMessage() { - return result.hasErrorMessage(); + return ((bitField0_ & 0x00000001) == 0x00000001); } + /** + * required string errorMessage = 1; + */ public java.lang.String getErrorMessage() { - return result.getErrorMessage(); + java.lang.Object ref = errorMessage_; + if (!(ref instanceof java.lang.String)) { + java.lang.String s = ((com.google.protobuf.ByteString) ref) + .toStringUtf8(); + errorMessage_ = s; + return s; + } else { + return (java.lang.String) ref; + } } - public Builder setErrorMessage(java.lang.String value) { + /** + * required string errorMessage = 1; + */ + public com.google.protobuf.ByteString + getErrorMessageBytes() { + java.lang.Object ref = errorMessage_; + if (ref instanceof String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + errorMessage_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + /** + * required string errorMessage = 1; + */ + public Builder setErrorMessage( + java.lang.String value) { if (value == null) { throw new NullPointerException(); } - result.hasErrorMessage = true; - result.errorMessage_ = value; + bitField0_ |= 0x00000001; + errorMessage_ = value; + onChanged(); return this; } + /** + * required string errorMessage = 1; + */ public Builder clearErrorMessage() { - result.hasErrorMessage = false; - result.errorMessage_ = getDefaultInstance().getErrorMessage(); + bitField0_ = (bitField0_ & ~0x00000001); + errorMessage_ = getDefaultInstance().getErrorMessage(); + onChanged(); + return this; + } + /** + * required string errorMessage = 1; + */ + public Builder setErrorMessageBytes( + com.google.protobuf.ByteString value) { + if (value == null) { + throw new NullPointerException(); + } + bitField0_ |= 0x00000001; + errorMessage_ = value; + onChanged(); return this; } - + // @@protoc_insertion_point(builder_scope:xtreemfs.pbrpc.PingResponse.PingError) } - + static { defaultInstance = new PingError(true); - org.xtreemfs.foundation.pbrpc.generatedinterfaces.Ping.internalForceInit(); defaultInstance.initFields(); } - + // @@protoc_insertion_point(class_scope:xtreemfs.pbrpc.PingResponse.PingError) } - + + private int bitField0_; // optional .xtreemfs.pbrpc.PingResponse.PingResult result = 1; public static final int RESULT_FIELD_NUMBER = 1; - private boolean hasResult; private org.xtreemfs.foundation.pbrpc.generatedinterfaces.Ping.PingResponse.PingResult result_; - public boolean hasResult() { return hasResult; } - public org.xtreemfs.foundation.pbrpc.generatedinterfaces.Ping.PingResponse.PingResult getResult() { return result_; } - + /** + * optional .xtreemfs.pbrpc.PingResponse.PingResult result = 1; + */ + public boolean hasResult() { + return ((bitField0_ & 0x00000001) == 0x00000001); + } + /** + * optional .xtreemfs.pbrpc.PingResponse.PingResult result = 1; + */ + public org.xtreemfs.foundation.pbrpc.generatedinterfaces.Ping.PingResponse.PingResult getResult() { + return result_; + } + /** + * optional .xtreemfs.pbrpc.PingResponse.PingResult result = 1; + */ + public org.xtreemfs.foundation.pbrpc.generatedinterfaces.Ping.PingResponse.PingResultOrBuilder getResultOrBuilder() { + return result_; + } + // optional .xtreemfs.pbrpc.PingResponse.PingError error = 2; public static final int ERROR_FIELD_NUMBER = 2; - private boolean hasError; private org.xtreemfs.foundation.pbrpc.generatedinterfaces.Ping.PingResponse.PingError error_; - public boolean hasError() { return hasError; } - public org.xtreemfs.foundation.pbrpc.generatedinterfaces.Ping.PingResponse.PingError getError() { return error_; } - + /** + * optional .xtreemfs.pbrpc.PingResponse.PingError error = 2; + */ + public boolean hasError() { + return ((bitField0_ & 0x00000002) == 0x00000002); + } + /** + * optional .xtreemfs.pbrpc.PingResponse.PingError error = 2; + */ + public org.xtreemfs.foundation.pbrpc.generatedinterfaces.Ping.PingResponse.PingError getError() { + return error_; + } + /** + * optional .xtreemfs.pbrpc.PingResponse.PingError error = 2; + */ + public org.xtreemfs.foundation.pbrpc.generatedinterfaces.Ping.PingResponse.PingErrorOrBuilder getErrorOrBuilder() { + return error_; + } + private void initFields() { result_ = org.xtreemfs.foundation.pbrpc.generatedinterfaces.Ping.PingResponse.PingResult.getDefaultInstance(); error_ = org.xtreemfs.foundation.pbrpc.generatedinterfaces.Ping.PingResponse.PingError.getDefaultInstance(); } + private byte memoizedIsInitialized = -1; public final boolean isInitialized() { + byte isInitialized = memoizedIsInitialized; + if (isInitialized != -1) return isInitialized == 1; + if (hasResult()) { - if (!getResult().isInitialized()) return false; + if (!getResult().isInitialized()) { + memoizedIsInitialized = 0; + return false; + } } if (hasError()) { - if (!getError().isInitialized()) return false; + if (!getError().isInitialized()) { + memoizedIsInitialized = 0; + return false; + } } + memoizedIsInitialized = 1; return true; } - + public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException { getSerializedSize(); - if (hasResult()) { - output.writeMessage(1, getResult()); + if (((bitField0_ & 0x00000001) == 0x00000001)) { + output.writeMessage(1, result_); } - if (hasError()) { - output.writeMessage(2, getError()); + if (((bitField0_ & 0x00000002) == 0x00000002)) { + output.writeMessage(2, error_); } getUnknownFields().writeTo(output); } - + private int memoizedSerializedSize = -1; public int getSerializedSize() { int size = memoizedSerializedSize; if (size != -1) return size; - + size = 0; - if (hasResult()) { + if (((bitField0_ & 0x00000001) == 0x00000001)) { size += com.google.protobuf.CodedOutputStream - .computeMessageSize(1, getResult()); + .computeMessageSize(1, result_); } - if (hasError()) { + if (((bitField0_ & 0x00000002) == 0x00000002)) { size += com.google.protobuf.CodedOutputStream - .computeMessageSize(2, getError()); + .computeMessageSize(2, error_); } size += getUnknownFields().getSerializedSize(); memoizedSerializedSize = size; return size; } - + + private static final long serialVersionUID = 0L; + @java.lang.Override + protected java.lang.Object writeReplace() + throws java.io.ObjectStreamException { + return super.writeReplace(); + } + public static org.xtreemfs.foundation.pbrpc.generatedinterfaces.Ping.PingResponse parseFrom( com.google.protobuf.ByteString data) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data).buildParsed(); + return PARSER.parseFrom(data); } public static org.xtreemfs.foundation.pbrpc.generatedinterfaces.Ping.PingResponse parseFrom( com.google.protobuf.ByteString data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(data, extensionRegistry); } public static org.xtreemfs.foundation.pbrpc.generatedinterfaces.Ping.PingResponse parseFrom(byte[] data) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data).buildParsed(); + return PARSER.parseFrom(data); } public static org.xtreemfs.foundation.pbrpc.generatedinterfaces.Ping.PingResponse parseFrom( byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(data, extensionRegistry); } public static org.xtreemfs.foundation.pbrpc.generatedinterfaces.Ping.PingResponse parseFrom(java.io.InputStream input) throws java.io.IOException { - return newBuilder().mergeFrom(input).buildParsed(); + return PARSER.parseFrom(input); } public static org.xtreemfs.foundation.pbrpc.generatedinterfaces.Ping.PingResponse parseFrom( java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - return newBuilder().mergeFrom(input, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(input, extensionRegistry); } public static org.xtreemfs.foundation.pbrpc.generatedinterfaces.Ping.PingResponse parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException { - Builder builder = newBuilder(); - if (builder.mergeDelimitedFrom(input)) { - return builder.buildParsed(); - } else { - return null; - } + return PARSER.parseDelimitedFrom(input); } public static org.xtreemfs.foundation.pbrpc.generatedinterfaces.Ping.PingResponse parseDelimitedFrom( java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - Builder builder = newBuilder(); - if (builder.mergeDelimitedFrom(input, extensionRegistry)) { - return builder.buildParsed(); - } else { - return null; - } + return PARSER.parseDelimitedFrom(input, extensionRegistry); } public static org.xtreemfs.foundation.pbrpc.generatedinterfaces.Ping.PingResponse parseFrom( com.google.protobuf.CodedInputStream input) throws java.io.IOException { - return newBuilder().mergeFrom(input).buildParsed(); + return PARSER.parseFrom(input); } public static org.xtreemfs.foundation.pbrpc.generatedinterfaces.Ping.PingResponse parseFrom( com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - return newBuilder().mergeFrom(input, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(input, extensionRegistry); } - + public static Builder newBuilder() { return Builder.create(); } public Builder newBuilderForType() { return newBuilder(); } public static Builder newBuilder(org.xtreemfs.foundation.pbrpc.generatedinterfaces.Ping.PingResponse prototype) { return newBuilder().mergeFrom(prototype); } public Builder toBuilder() { return newBuilder(this); } - + + @java.lang.Override + protected Builder newBuilderForType( + com.google.protobuf.GeneratedMessage.BuilderParent parent) { + Builder builder = new Builder(parent); + return builder; + } + /** + * Protobuf type {@code xtreemfs.pbrpc.PingResponse} + */ public static final class Builder extends - com.google.protobuf.GeneratedMessage.Builder { - private org.xtreemfs.foundation.pbrpc.generatedinterfaces.Ping.PingResponse result; - + com.google.protobuf.GeneratedMessage.Builder + implements org.xtreemfs.foundation.pbrpc.generatedinterfaces.Ping.PingResponseOrBuilder { + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return org.xtreemfs.foundation.pbrpc.generatedinterfaces.Ping.internal_static_xtreemfs_pbrpc_PingResponse_descriptor; + } + + protected com.google.protobuf.GeneratedMessage.FieldAccessorTable + internalGetFieldAccessorTable() { + return org.xtreemfs.foundation.pbrpc.generatedinterfaces.Ping.internal_static_xtreemfs_pbrpc_PingResponse_fieldAccessorTable + .ensureFieldAccessorsInitialized( + org.xtreemfs.foundation.pbrpc.generatedinterfaces.Ping.PingResponse.class, org.xtreemfs.foundation.pbrpc.generatedinterfaces.Ping.PingResponse.Builder.class); + } + // Construct using org.xtreemfs.foundation.pbrpc.generatedinterfaces.Ping.PingResponse.newBuilder() - private Builder() {} - - private static Builder create() { - Builder builder = new Builder(); - builder.result = new org.xtreemfs.foundation.pbrpc.generatedinterfaces.Ping.PingResponse(); - return builder; + private Builder() { + maybeForceBuilderInitialization(); } - - protected org.xtreemfs.foundation.pbrpc.generatedinterfaces.Ping.PingResponse internalGetResult() { - return result; + + private Builder( + com.google.protobuf.GeneratedMessage.BuilderParent parent) { + super(parent); + maybeForceBuilderInitialization(); + } + private void maybeForceBuilderInitialization() { + if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) { + getResultFieldBuilder(); + getErrorFieldBuilder(); + } + } + private static Builder create() { + return new Builder(); } - + public Builder clear() { - if (result == null) { - throw new IllegalStateException( - "Cannot call clear() after build()."); + super.clear(); + if (resultBuilder_ == null) { + result_ = org.xtreemfs.foundation.pbrpc.generatedinterfaces.Ping.PingResponse.PingResult.getDefaultInstance(); + } else { + resultBuilder_.clear(); + } + bitField0_ = (bitField0_ & ~0x00000001); + if (errorBuilder_ == null) { + error_ = org.xtreemfs.foundation.pbrpc.generatedinterfaces.Ping.PingResponse.PingError.getDefaultInstance(); + } else { + errorBuilder_.clear(); } - result = new org.xtreemfs.foundation.pbrpc.generatedinterfaces.Ping.PingResponse(); + bitField0_ = (bitField0_ & ~0x00000002); return this; } - + public Builder clone() { - return create().mergeFrom(result); + return create().mergeFrom(buildPartial()); } - + public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() { - return org.xtreemfs.foundation.pbrpc.generatedinterfaces.Ping.PingResponse.getDescriptor(); + return org.xtreemfs.foundation.pbrpc.generatedinterfaces.Ping.internal_static_xtreemfs_pbrpc_PingResponse_descriptor; } - + public org.xtreemfs.foundation.pbrpc.generatedinterfaces.Ping.PingResponse getDefaultInstanceForType() { return org.xtreemfs.foundation.pbrpc.generatedinterfaces.Ping.PingResponse.getDefaultInstance(); } - - public boolean isInitialized() { - return result.isInitialized(); - } + public org.xtreemfs.foundation.pbrpc.generatedinterfaces.Ping.PingResponse build() { - if (result != null && !isInitialized()) { + org.xtreemfs.foundation.pbrpc.generatedinterfaces.Ping.PingResponse result = buildPartial(); + if (!result.isInitialized()) { throw newUninitializedMessageException(result); } - return buildPartial(); - } - - private org.xtreemfs.foundation.pbrpc.generatedinterfaces.Ping.PingResponse buildParsed() - throws com.google.protobuf.InvalidProtocolBufferException { - if (!isInitialized()) { - throw newUninitializedMessageException( - result).asInvalidProtocolBufferException(); - } - return buildPartial(); + return result; } - + public org.xtreemfs.foundation.pbrpc.generatedinterfaces.Ping.PingResponse buildPartial() { - if (result == null) { - throw new IllegalStateException( - "build() has already been called on this Builder."); + org.xtreemfs.foundation.pbrpc.generatedinterfaces.Ping.PingResponse result = new org.xtreemfs.foundation.pbrpc.generatedinterfaces.Ping.PingResponse(this); + int from_bitField0_ = bitField0_; + int to_bitField0_ = 0; + if (((from_bitField0_ & 0x00000001) == 0x00000001)) { + to_bitField0_ |= 0x00000001; + } + if (resultBuilder_ == null) { + result.result_ = result_; + } else { + result.result_ = resultBuilder_.build(); + } + if (((from_bitField0_ & 0x00000002) == 0x00000002)) { + to_bitField0_ |= 0x00000002; + } + if (errorBuilder_ == null) { + result.error_ = error_; + } else { + result.error_ = errorBuilder_.build(); } - org.xtreemfs.foundation.pbrpc.generatedinterfaces.Ping.PingResponse returnMe = result; - result = null; - return returnMe; + result.bitField0_ = to_bitField0_; + onBuilt(); + return result; } - + public Builder mergeFrom(com.google.protobuf.Message other) { if (other instanceof org.xtreemfs.foundation.pbrpc.generatedinterfaces.Ping.PingResponse) { return mergeFrom((org.xtreemfs.foundation.pbrpc.generatedinterfaces.Ping.PingResponse)other); @@ -1148,7 +1964,7 @@ public final class Ping { return this; } } - + public Builder mergeFrom(org.xtreemfs.foundation.pbrpc.generatedinterfaces.Ping.PingResponse other) { if (other == org.xtreemfs.foundation.pbrpc.generatedinterfaces.Ping.PingResponse.getDefaultInstance()) return this; if (other.hasResult()) { @@ -1160,329 +1976,548 @@ public final class Ping { this.mergeUnknownFields(other.getUnknownFields()); return this; } - + + public final boolean isInitialized() { + if (hasResult()) { + if (!getResult().isInitialized()) { + + return false; + } + } + if (hasError()) { + if (!getError().isInitialized()) { + + return false; + } + } + return true; + } + public Builder mergeFrom( com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - com.google.protobuf.UnknownFieldSet.Builder unknownFields = - com.google.protobuf.UnknownFieldSet.newBuilder( - this.getUnknownFields()); - while (true) { - int tag = input.readTag(); - switch (tag) { - case 0: - this.setUnknownFields(unknownFields.build()); - return this; - default: { - if (!parseUnknownField(input, unknownFields, - extensionRegistry, tag)) { - this.setUnknownFields(unknownFields.build()); - return this; - } - break; - } - case 10: { - org.xtreemfs.foundation.pbrpc.generatedinterfaces.Ping.PingResponse.PingResult.Builder subBuilder = org.xtreemfs.foundation.pbrpc.generatedinterfaces.Ping.PingResponse.PingResult.newBuilder(); - if (hasResult()) { - subBuilder.mergeFrom(getResult()); - } - input.readMessage(subBuilder, extensionRegistry); - setResult(subBuilder.buildPartial()); - break; - } - case 18: { - org.xtreemfs.foundation.pbrpc.generatedinterfaces.Ping.PingResponse.PingError.Builder subBuilder = org.xtreemfs.foundation.pbrpc.generatedinterfaces.Ping.PingResponse.PingError.newBuilder(); - if (hasError()) { - subBuilder.mergeFrom(getError()); - } - input.readMessage(subBuilder, extensionRegistry); - setError(subBuilder.buildPartial()); - break; - } + org.xtreemfs.foundation.pbrpc.generatedinterfaces.Ping.PingResponse parsedMessage = null; + try { + parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + parsedMessage = (org.xtreemfs.foundation.pbrpc.generatedinterfaces.Ping.PingResponse) e.getUnfinishedMessage(); + throw e; + } finally { + if (parsedMessage != null) { + mergeFrom(parsedMessage); } } + return this; } - - + private int bitField0_; + // optional .xtreemfs.pbrpc.PingResponse.PingResult result = 1; + private org.xtreemfs.foundation.pbrpc.generatedinterfaces.Ping.PingResponse.PingResult result_ = org.xtreemfs.foundation.pbrpc.generatedinterfaces.Ping.PingResponse.PingResult.getDefaultInstance(); + private com.google.protobuf.SingleFieldBuilder< + org.xtreemfs.foundation.pbrpc.generatedinterfaces.Ping.PingResponse.PingResult, org.xtreemfs.foundation.pbrpc.generatedinterfaces.Ping.PingResponse.PingResult.Builder, org.xtreemfs.foundation.pbrpc.generatedinterfaces.Ping.PingResponse.PingResultOrBuilder> resultBuilder_; + /** + * optional .xtreemfs.pbrpc.PingResponse.PingResult result = 1; + */ public boolean hasResult() { - return result.hasResult(); + return ((bitField0_ & 0x00000001) == 0x00000001); } + /** + * optional .xtreemfs.pbrpc.PingResponse.PingResult result = 1; + */ public org.xtreemfs.foundation.pbrpc.generatedinterfaces.Ping.PingResponse.PingResult getResult() { - return result.getResult(); + if (resultBuilder_ == null) { + return result_; + } else { + return resultBuilder_.getMessage(); + } } + /** + * optional .xtreemfs.pbrpc.PingResponse.PingResult result = 1; + */ public Builder setResult(org.xtreemfs.foundation.pbrpc.generatedinterfaces.Ping.PingResponse.PingResult value) { - if (value == null) { - throw new NullPointerException(); + if (resultBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + result_ = value; + onChanged(); + } else { + resultBuilder_.setMessage(value); } - result.hasResult = true; - result.result_ = value; + bitField0_ |= 0x00000001; return this; } - public Builder setResult(org.xtreemfs.foundation.pbrpc.generatedinterfaces.Ping.PingResponse.PingResult.Builder builderForValue) { - result.hasResult = true; - result.result_ = builderForValue.build(); + /** + * optional .xtreemfs.pbrpc.PingResponse.PingResult result = 1; + */ + public Builder setResult( + org.xtreemfs.foundation.pbrpc.generatedinterfaces.Ping.PingResponse.PingResult.Builder builderForValue) { + if (resultBuilder_ == null) { + result_ = builderForValue.build(); + onChanged(); + } else { + resultBuilder_.setMessage(builderForValue.build()); + } + bitField0_ |= 0x00000001; return this; } + /** + * optional .xtreemfs.pbrpc.PingResponse.PingResult result = 1; + */ public Builder mergeResult(org.xtreemfs.foundation.pbrpc.generatedinterfaces.Ping.PingResponse.PingResult value) { - if (result.hasResult() && - result.result_ != org.xtreemfs.foundation.pbrpc.generatedinterfaces.Ping.PingResponse.PingResult.getDefaultInstance()) { - result.result_ = - org.xtreemfs.foundation.pbrpc.generatedinterfaces.Ping.PingResponse.PingResult.newBuilder(result.result_).mergeFrom(value).buildPartial(); + if (resultBuilder_ == null) { + if (((bitField0_ & 0x00000001) == 0x00000001) && + result_ != org.xtreemfs.foundation.pbrpc.generatedinterfaces.Ping.PingResponse.PingResult.getDefaultInstance()) { + result_ = + org.xtreemfs.foundation.pbrpc.generatedinterfaces.Ping.PingResponse.PingResult.newBuilder(result_).mergeFrom(value).buildPartial(); + } else { + result_ = value; + } + onChanged(); } else { - result.result_ = value; + resultBuilder_.mergeFrom(value); } - result.hasResult = true; + bitField0_ |= 0x00000001; return this; } + /** + * optional .xtreemfs.pbrpc.PingResponse.PingResult result = 1; + */ public Builder clearResult() { - result.hasResult = false; - result.result_ = org.xtreemfs.foundation.pbrpc.generatedinterfaces.Ping.PingResponse.PingResult.getDefaultInstance(); + if (resultBuilder_ == null) { + result_ = org.xtreemfs.foundation.pbrpc.generatedinterfaces.Ping.PingResponse.PingResult.getDefaultInstance(); + onChanged(); + } else { + resultBuilder_.clear(); + } + bitField0_ = (bitField0_ & ~0x00000001); return this; } - + /** + * optional .xtreemfs.pbrpc.PingResponse.PingResult result = 1; + */ + public org.xtreemfs.foundation.pbrpc.generatedinterfaces.Ping.PingResponse.PingResult.Builder getResultBuilder() { + bitField0_ |= 0x00000001; + onChanged(); + return getResultFieldBuilder().getBuilder(); + } + /** + * optional .xtreemfs.pbrpc.PingResponse.PingResult result = 1; + */ + public org.xtreemfs.foundation.pbrpc.generatedinterfaces.Ping.PingResponse.PingResultOrBuilder getResultOrBuilder() { + if (resultBuilder_ != null) { + return resultBuilder_.getMessageOrBuilder(); + } else { + return result_; + } + } + /** + * optional .xtreemfs.pbrpc.PingResponse.PingResult result = 1; + */ + private com.google.protobuf.SingleFieldBuilder< + org.xtreemfs.foundation.pbrpc.generatedinterfaces.Ping.PingResponse.PingResult, org.xtreemfs.foundation.pbrpc.generatedinterfaces.Ping.PingResponse.PingResult.Builder, org.xtreemfs.foundation.pbrpc.generatedinterfaces.Ping.PingResponse.PingResultOrBuilder> + getResultFieldBuilder() { + if (resultBuilder_ == null) { + resultBuilder_ = new com.google.protobuf.SingleFieldBuilder< + org.xtreemfs.foundation.pbrpc.generatedinterfaces.Ping.PingResponse.PingResult, org.xtreemfs.foundation.pbrpc.generatedinterfaces.Ping.PingResponse.PingResult.Builder, org.xtreemfs.foundation.pbrpc.generatedinterfaces.Ping.PingResponse.PingResultOrBuilder>( + result_, + getParentForChildren(), + isClean()); + result_ = null; + } + return resultBuilder_; + } + // optional .xtreemfs.pbrpc.PingResponse.PingError error = 2; + private org.xtreemfs.foundation.pbrpc.generatedinterfaces.Ping.PingResponse.PingError error_ = org.xtreemfs.foundation.pbrpc.generatedinterfaces.Ping.PingResponse.PingError.getDefaultInstance(); + private com.google.protobuf.SingleFieldBuilder< + org.xtreemfs.foundation.pbrpc.generatedinterfaces.Ping.PingResponse.PingError, org.xtreemfs.foundation.pbrpc.generatedinterfaces.Ping.PingResponse.PingError.Builder, org.xtreemfs.foundation.pbrpc.generatedinterfaces.Ping.PingResponse.PingErrorOrBuilder> errorBuilder_; + /** + * optional .xtreemfs.pbrpc.PingResponse.PingError error = 2; + */ public boolean hasError() { - return result.hasError(); + return ((bitField0_ & 0x00000002) == 0x00000002); } + /** + * optional .xtreemfs.pbrpc.PingResponse.PingError error = 2; + */ public org.xtreemfs.foundation.pbrpc.generatedinterfaces.Ping.PingResponse.PingError getError() { - return result.getError(); + if (errorBuilder_ == null) { + return error_; + } else { + return errorBuilder_.getMessage(); + } } + /** + * optional .xtreemfs.pbrpc.PingResponse.PingError error = 2; + */ public Builder setError(org.xtreemfs.foundation.pbrpc.generatedinterfaces.Ping.PingResponse.PingError value) { - if (value == null) { - throw new NullPointerException(); + if (errorBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + error_ = value; + onChanged(); + } else { + errorBuilder_.setMessage(value); } - result.hasError = true; - result.error_ = value; + bitField0_ |= 0x00000002; return this; } - public Builder setError(org.xtreemfs.foundation.pbrpc.generatedinterfaces.Ping.PingResponse.PingError.Builder builderForValue) { - result.hasError = true; - result.error_ = builderForValue.build(); + /** + * optional .xtreemfs.pbrpc.PingResponse.PingError error = 2; + */ + public Builder setError( + org.xtreemfs.foundation.pbrpc.generatedinterfaces.Ping.PingResponse.PingError.Builder builderForValue) { + if (errorBuilder_ == null) { + error_ = builderForValue.build(); + onChanged(); + } else { + errorBuilder_.setMessage(builderForValue.build()); + } + bitField0_ |= 0x00000002; return this; } + /** + * optional .xtreemfs.pbrpc.PingResponse.PingError error = 2; + */ public Builder mergeError(org.xtreemfs.foundation.pbrpc.generatedinterfaces.Ping.PingResponse.PingError value) { - if (result.hasError() && - result.error_ != org.xtreemfs.foundation.pbrpc.generatedinterfaces.Ping.PingResponse.PingError.getDefaultInstance()) { - result.error_ = - org.xtreemfs.foundation.pbrpc.generatedinterfaces.Ping.PingResponse.PingError.newBuilder(result.error_).mergeFrom(value).buildPartial(); + if (errorBuilder_ == null) { + if (((bitField0_ & 0x00000002) == 0x00000002) && + error_ != org.xtreemfs.foundation.pbrpc.generatedinterfaces.Ping.PingResponse.PingError.getDefaultInstance()) { + error_ = + org.xtreemfs.foundation.pbrpc.generatedinterfaces.Ping.PingResponse.PingError.newBuilder(error_).mergeFrom(value).buildPartial(); + } else { + error_ = value; + } + onChanged(); } else { - result.error_ = value; + errorBuilder_.mergeFrom(value); } - result.hasError = true; + bitField0_ |= 0x00000002; return this; } + /** + * optional .xtreemfs.pbrpc.PingResponse.PingError error = 2; + */ public Builder clearError() { - result.hasError = false; - result.error_ = org.xtreemfs.foundation.pbrpc.generatedinterfaces.Ping.PingResponse.PingError.getDefaultInstance(); + if (errorBuilder_ == null) { + error_ = org.xtreemfs.foundation.pbrpc.generatedinterfaces.Ping.PingResponse.PingError.getDefaultInstance(); + onChanged(); + } else { + errorBuilder_.clear(); + } + bitField0_ = (bitField0_ & ~0x00000002); return this; } - + /** + * optional .xtreemfs.pbrpc.PingResponse.PingError error = 2; + */ + public org.xtreemfs.foundation.pbrpc.generatedinterfaces.Ping.PingResponse.PingError.Builder getErrorBuilder() { + bitField0_ |= 0x00000002; + onChanged(); + return getErrorFieldBuilder().getBuilder(); + } + /** + * optional .xtreemfs.pbrpc.PingResponse.PingError error = 2; + */ + public org.xtreemfs.foundation.pbrpc.generatedinterfaces.Ping.PingResponse.PingErrorOrBuilder getErrorOrBuilder() { + if (errorBuilder_ != null) { + return errorBuilder_.getMessageOrBuilder(); + } else { + return error_; + } + } + /** + * optional .xtreemfs.pbrpc.PingResponse.PingError error = 2; + */ + private com.google.protobuf.SingleFieldBuilder< + org.xtreemfs.foundation.pbrpc.generatedinterfaces.Ping.PingResponse.PingError, org.xtreemfs.foundation.pbrpc.generatedinterfaces.Ping.PingResponse.PingError.Builder, org.xtreemfs.foundation.pbrpc.generatedinterfaces.Ping.PingResponse.PingErrorOrBuilder> + getErrorFieldBuilder() { + if (errorBuilder_ == null) { + errorBuilder_ = new com.google.protobuf.SingleFieldBuilder< + org.xtreemfs.foundation.pbrpc.generatedinterfaces.Ping.PingResponse.PingError, org.xtreemfs.foundation.pbrpc.generatedinterfaces.Ping.PingResponse.PingError.Builder, org.xtreemfs.foundation.pbrpc.generatedinterfaces.Ping.PingResponse.PingErrorOrBuilder>( + error_, + getParentForChildren(), + isClean()); + error_ = null; + } + return errorBuilder_; + } + // @@protoc_insertion_point(builder_scope:xtreemfs.pbrpc.PingResponse) } - + static { defaultInstance = new PingResponse(true); - org.xtreemfs.foundation.pbrpc.generatedinterfaces.Ping.internalForceInit(); defaultInstance.initFields(); } - + // @@protoc_insertion_point(class_scope:xtreemfs.pbrpc.PingResponse) } - + + public interface Ping_emptyRequestOrBuilder + extends com.google.protobuf.MessageOrBuilder { + } + /** + * Protobuf type {@code xtreemfs.pbrpc.Ping_emptyRequest} + */ public static final class Ping_emptyRequest extends - com.google.protobuf.GeneratedMessage { + com.google.protobuf.GeneratedMessage + implements Ping_emptyRequestOrBuilder { // Use Ping_emptyRequest.newBuilder() to construct. - private Ping_emptyRequest() { - initFields(); + private Ping_emptyRequest(com.google.protobuf.GeneratedMessage.Builder builder) { + super(builder); + this.unknownFields = builder.getUnknownFields(); } - private Ping_emptyRequest(boolean noInit) {} - + private Ping_emptyRequest(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); } + private static final Ping_emptyRequest defaultInstance; public static Ping_emptyRequest getDefaultInstance() { return defaultInstance; } - + public Ping_emptyRequest getDefaultInstanceForType() { return defaultInstance; } - + + private final com.google.protobuf.UnknownFieldSet unknownFields; + @java.lang.Override + public final com.google.protobuf.UnknownFieldSet + getUnknownFields() { + return this.unknownFields; + } + private Ping_emptyRequest( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + initFields(); + com.google.protobuf.UnknownFieldSet.Builder unknownFields = + com.google.protobuf.UnknownFieldSet.newBuilder(); + try { + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch (tag) { + case 0: + done = true; + break; + default: { + if (!parseUnknownField(input, unknownFields, + extensionRegistry, tag)) { + done = true; + } + break; + } + } + } + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(this); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException( + e.getMessage()).setUnfinishedMessage(this); + } finally { + this.unknownFields = unknownFields.build(); + makeExtensionsImmutable(); + } + } public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { return org.xtreemfs.foundation.pbrpc.generatedinterfaces.Ping.internal_static_xtreemfs_pbrpc_Ping_emptyRequest_descriptor; } - + protected com.google.protobuf.GeneratedMessage.FieldAccessorTable internalGetFieldAccessorTable() { - return org.xtreemfs.foundation.pbrpc.generatedinterfaces.Ping.internal_static_xtreemfs_pbrpc_Ping_emptyRequest_fieldAccessorTable; + return org.xtreemfs.foundation.pbrpc.generatedinterfaces.Ping.internal_static_xtreemfs_pbrpc_Ping_emptyRequest_fieldAccessorTable + .ensureFieldAccessorsInitialized( + org.xtreemfs.foundation.pbrpc.generatedinterfaces.Ping.Ping_emptyRequest.class, org.xtreemfs.foundation.pbrpc.generatedinterfaces.Ping.Ping_emptyRequest.Builder.class); + } + + public static com.google.protobuf.Parser PARSER = + new com.google.protobuf.AbstractParser() { + public Ping_emptyRequest parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return new Ping_emptyRequest(input, extensionRegistry); + } + }; + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; } - + private void initFields() { } + private byte memoizedIsInitialized = -1; public final boolean isInitialized() { + byte isInitialized = memoizedIsInitialized; + if (isInitialized != -1) return isInitialized == 1; + + memoizedIsInitialized = 1; return true; } - + public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException { getSerializedSize(); getUnknownFields().writeTo(output); } - + private int memoizedSerializedSize = -1; public int getSerializedSize() { int size = memoizedSerializedSize; if (size != -1) return size; - + size = 0; size += getUnknownFields().getSerializedSize(); memoizedSerializedSize = size; return size; } - + + private static final long serialVersionUID = 0L; + @java.lang.Override + protected java.lang.Object writeReplace() + throws java.io.ObjectStreamException { + return super.writeReplace(); + } + public static org.xtreemfs.foundation.pbrpc.generatedinterfaces.Ping.Ping_emptyRequest parseFrom( com.google.protobuf.ByteString data) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data).buildParsed(); + return PARSER.parseFrom(data); } public static org.xtreemfs.foundation.pbrpc.generatedinterfaces.Ping.Ping_emptyRequest parseFrom( com.google.protobuf.ByteString data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(data, extensionRegistry); } public static org.xtreemfs.foundation.pbrpc.generatedinterfaces.Ping.Ping_emptyRequest parseFrom(byte[] data) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data).buildParsed(); + return PARSER.parseFrom(data); } public static org.xtreemfs.foundation.pbrpc.generatedinterfaces.Ping.Ping_emptyRequest parseFrom( byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(data, extensionRegistry); } public static org.xtreemfs.foundation.pbrpc.generatedinterfaces.Ping.Ping_emptyRequest parseFrom(java.io.InputStream input) throws java.io.IOException { - return newBuilder().mergeFrom(input).buildParsed(); + return PARSER.parseFrom(input); } public static org.xtreemfs.foundation.pbrpc.generatedinterfaces.Ping.Ping_emptyRequest parseFrom( java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - return newBuilder().mergeFrom(input, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(input, extensionRegistry); } public static org.xtreemfs.foundation.pbrpc.generatedinterfaces.Ping.Ping_emptyRequest parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException { - Builder builder = newBuilder(); - if (builder.mergeDelimitedFrom(input)) { - return builder.buildParsed(); - } else { - return null; - } + return PARSER.parseDelimitedFrom(input); } public static org.xtreemfs.foundation.pbrpc.generatedinterfaces.Ping.Ping_emptyRequest parseDelimitedFrom( java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - Builder builder = newBuilder(); - if (builder.mergeDelimitedFrom(input, extensionRegistry)) { - return builder.buildParsed(); - } else { - return null; - } + return PARSER.parseDelimitedFrom(input, extensionRegistry); } public static org.xtreemfs.foundation.pbrpc.generatedinterfaces.Ping.Ping_emptyRequest parseFrom( com.google.protobuf.CodedInputStream input) throws java.io.IOException { - return newBuilder().mergeFrom(input).buildParsed(); + return PARSER.parseFrom(input); } public static org.xtreemfs.foundation.pbrpc.generatedinterfaces.Ping.Ping_emptyRequest parseFrom( com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - return newBuilder().mergeFrom(input, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(input, extensionRegistry); } - + public static Builder newBuilder() { return Builder.create(); } public Builder newBuilderForType() { return newBuilder(); } public static Builder newBuilder(org.xtreemfs.foundation.pbrpc.generatedinterfaces.Ping.Ping_emptyRequest prototype) { return newBuilder().mergeFrom(prototype); } public Builder toBuilder() { return newBuilder(this); } - + + @java.lang.Override + protected Builder newBuilderForType( + com.google.protobuf.GeneratedMessage.BuilderParent parent) { + Builder builder = new Builder(parent); + return builder; + } + /** + * Protobuf type {@code xtreemfs.pbrpc.Ping_emptyRequest} + */ public static final class Builder extends - com.google.protobuf.GeneratedMessage.Builder { - private org.xtreemfs.foundation.pbrpc.generatedinterfaces.Ping.Ping_emptyRequest result; - + com.google.protobuf.GeneratedMessage.Builder + implements org.xtreemfs.foundation.pbrpc.generatedinterfaces.Ping.Ping_emptyRequestOrBuilder { + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return org.xtreemfs.foundation.pbrpc.generatedinterfaces.Ping.internal_static_xtreemfs_pbrpc_Ping_emptyRequest_descriptor; + } + + protected com.google.protobuf.GeneratedMessage.FieldAccessorTable + internalGetFieldAccessorTable() { + return org.xtreemfs.foundation.pbrpc.generatedinterfaces.Ping.internal_static_xtreemfs_pbrpc_Ping_emptyRequest_fieldAccessorTable + .ensureFieldAccessorsInitialized( + org.xtreemfs.foundation.pbrpc.generatedinterfaces.Ping.Ping_emptyRequest.class, org.xtreemfs.foundation.pbrpc.generatedinterfaces.Ping.Ping_emptyRequest.Builder.class); + } + // Construct using org.xtreemfs.foundation.pbrpc.generatedinterfaces.Ping.Ping_emptyRequest.newBuilder() - private Builder() {} - - private static Builder create() { - Builder builder = new Builder(); - builder.result = new org.xtreemfs.foundation.pbrpc.generatedinterfaces.Ping.Ping_emptyRequest(); - return builder; + private Builder() { + maybeForceBuilderInitialization(); } - - protected org.xtreemfs.foundation.pbrpc.generatedinterfaces.Ping.Ping_emptyRequest internalGetResult() { - return result; + + private Builder( + com.google.protobuf.GeneratedMessage.BuilderParent parent) { + super(parent); + maybeForceBuilderInitialization(); } - - public Builder clear() { - if (result == null) { - throw new IllegalStateException( - "Cannot call clear() after build()."); + private void maybeForceBuilderInitialization() { + if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) { } - result = new org.xtreemfs.foundation.pbrpc.generatedinterfaces.Ping.Ping_emptyRequest(); + } + private static Builder create() { + return new Builder(); + } + + public Builder clear() { + super.clear(); return this; } - + public Builder clone() { - return create().mergeFrom(result); + return create().mergeFrom(buildPartial()); } - + public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() { - return org.xtreemfs.foundation.pbrpc.generatedinterfaces.Ping.Ping_emptyRequest.getDescriptor(); + return org.xtreemfs.foundation.pbrpc.generatedinterfaces.Ping.internal_static_xtreemfs_pbrpc_Ping_emptyRequest_descriptor; } - + public org.xtreemfs.foundation.pbrpc.generatedinterfaces.Ping.Ping_emptyRequest getDefaultInstanceForType() { return org.xtreemfs.foundation.pbrpc.generatedinterfaces.Ping.Ping_emptyRequest.getDefaultInstance(); } - - public boolean isInitialized() { - return result.isInitialized(); - } + public org.xtreemfs.foundation.pbrpc.generatedinterfaces.Ping.Ping_emptyRequest build() { - if (result != null && !isInitialized()) { + org.xtreemfs.foundation.pbrpc.generatedinterfaces.Ping.Ping_emptyRequest result = buildPartial(); + if (!result.isInitialized()) { throw newUninitializedMessageException(result); } - return buildPartial(); - } - - private org.xtreemfs.foundation.pbrpc.generatedinterfaces.Ping.Ping_emptyRequest buildParsed() - throws com.google.protobuf.InvalidProtocolBufferException { - if (!isInitialized()) { - throw newUninitializedMessageException( - result).asInvalidProtocolBufferException(); - } - return buildPartial(); + return result; } - + public org.xtreemfs.foundation.pbrpc.generatedinterfaces.Ping.Ping_emptyRequest buildPartial() { - if (result == null) { - throw new IllegalStateException( - "build() has already been called on this Builder."); - } - org.xtreemfs.foundation.pbrpc.generatedinterfaces.Ping.Ping_emptyRequest returnMe = result; - result = null; - return returnMe; + org.xtreemfs.foundation.pbrpc.generatedinterfaces.Ping.Ping_emptyRequest result = new org.xtreemfs.foundation.pbrpc.generatedinterfaces.Ping.Ping_emptyRequest(this); + onBuilt(); + return result; } - + public Builder mergeFrom(com.google.protobuf.Message other) { if (other instanceof org.xtreemfs.foundation.pbrpc.generatedinterfaces.Ping.Ping_emptyRequest) { return mergeFrom((org.xtreemfs.foundation.pbrpc.generatedinterfaces.Ping.Ping_emptyRequest)other); @@ -1491,243 +2526,307 @@ public final class Ping { return this; } } - + public Builder mergeFrom(org.xtreemfs.foundation.pbrpc.generatedinterfaces.Ping.Ping_emptyRequest other) { if (other == org.xtreemfs.foundation.pbrpc.generatedinterfaces.Ping.Ping_emptyRequest.getDefaultInstance()) return this; this.mergeUnknownFields(other.getUnknownFields()); return this; } - + + public final boolean isInitialized() { + return true; + } + public Builder mergeFrom( com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - com.google.protobuf.UnknownFieldSet.Builder unknownFields = - com.google.protobuf.UnknownFieldSet.newBuilder( - this.getUnknownFields()); - while (true) { - int tag = input.readTag(); - switch (tag) { - case 0: - this.setUnknownFields(unknownFields.build()); - return this; - default: { - if (!parseUnknownField(input, unknownFields, - extensionRegistry, tag)) { - this.setUnknownFields(unknownFields.build()); - return this; - } - break; - } + org.xtreemfs.foundation.pbrpc.generatedinterfaces.Ping.Ping_emptyRequest parsedMessage = null; + try { + parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + parsedMessage = (org.xtreemfs.foundation.pbrpc.generatedinterfaces.Ping.Ping_emptyRequest) e.getUnfinishedMessage(); + throw e; + } finally { + if (parsedMessage != null) { + mergeFrom(parsedMessage); } } + return this; } - - + // @@protoc_insertion_point(builder_scope:xtreemfs.pbrpc.Ping_emptyRequest) } - + static { defaultInstance = new Ping_emptyRequest(true); - org.xtreemfs.foundation.pbrpc.generatedinterfaces.Ping.internalForceInit(); defaultInstance.initFields(); } - + // @@protoc_insertion_point(class_scope:xtreemfs.pbrpc.Ping_emptyRequest) } - + + public interface Ping_emptyResponseOrBuilder + extends com.google.protobuf.MessageOrBuilder { + } + /** + * Protobuf type {@code xtreemfs.pbrpc.Ping_emptyResponse} + */ public static final class Ping_emptyResponse extends - com.google.protobuf.GeneratedMessage { + com.google.protobuf.GeneratedMessage + implements Ping_emptyResponseOrBuilder { // Use Ping_emptyResponse.newBuilder() to construct. - private Ping_emptyResponse() { - initFields(); + private Ping_emptyResponse(com.google.protobuf.GeneratedMessage.Builder builder) { + super(builder); + this.unknownFields = builder.getUnknownFields(); } - private Ping_emptyResponse(boolean noInit) {} - + private Ping_emptyResponse(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); } + private static final Ping_emptyResponse defaultInstance; public static Ping_emptyResponse getDefaultInstance() { return defaultInstance; } - + public Ping_emptyResponse getDefaultInstanceForType() { return defaultInstance; } - + + private final com.google.protobuf.UnknownFieldSet unknownFields; + @java.lang.Override + public final com.google.protobuf.UnknownFieldSet + getUnknownFields() { + return this.unknownFields; + } + private Ping_emptyResponse( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + initFields(); + com.google.protobuf.UnknownFieldSet.Builder unknownFields = + com.google.protobuf.UnknownFieldSet.newBuilder(); + try { + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch (tag) { + case 0: + done = true; + break; + default: { + if (!parseUnknownField(input, unknownFields, + extensionRegistry, tag)) { + done = true; + } + break; + } + } + } + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(this); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException( + e.getMessage()).setUnfinishedMessage(this); + } finally { + this.unknownFields = unknownFields.build(); + makeExtensionsImmutable(); + } + } public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { return org.xtreemfs.foundation.pbrpc.generatedinterfaces.Ping.internal_static_xtreemfs_pbrpc_Ping_emptyResponse_descriptor; } - + protected com.google.protobuf.GeneratedMessage.FieldAccessorTable internalGetFieldAccessorTable() { - return org.xtreemfs.foundation.pbrpc.generatedinterfaces.Ping.internal_static_xtreemfs_pbrpc_Ping_emptyResponse_fieldAccessorTable; + return org.xtreemfs.foundation.pbrpc.generatedinterfaces.Ping.internal_static_xtreemfs_pbrpc_Ping_emptyResponse_fieldAccessorTable + .ensureFieldAccessorsInitialized( + org.xtreemfs.foundation.pbrpc.generatedinterfaces.Ping.Ping_emptyResponse.class, org.xtreemfs.foundation.pbrpc.generatedinterfaces.Ping.Ping_emptyResponse.Builder.class); } - + + public static com.google.protobuf.Parser PARSER = + new com.google.protobuf.AbstractParser() { + public Ping_emptyResponse parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return new Ping_emptyResponse(input, extensionRegistry); + } + }; + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; + } + private void initFields() { } + private byte memoizedIsInitialized = -1; public final boolean isInitialized() { + byte isInitialized = memoizedIsInitialized; + if (isInitialized != -1) return isInitialized == 1; + + memoizedIsInitialized = 1; return true; } - + public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException { getSerializedSize(); getUnknownFields().writeTo(output); } - + private int memoizedSerializedSize = -1; public int getSerializedSize() { int size = memoizedSerializedSize; if (size != -1) return size; - + size = 0; size += getUnknownFields().getSerializedSize(); memoizedSerializedSize = size; return size; } - + + private static final long serialVersionUID = 0L; + @java.lang.Override + protected java.lang.Object writeReplace() + throws java.io.ObjectStreamException { + return super.writeReplace(); + } + public static org.xtreemfs.foundation.pbrpc.generatedinterfaces.Ping.Ping_emptyResponse parseFrom( com.google.protobuf.ByteString data) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data).buildParsed(); + return PARSER.parseFrom(data); } public static org.xtreemfs.foundation.pbrpc.generatedinterfaces.Ping.Ping_emptyResponse parseFrom( com.google.protobuf.ByteString data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(data, extensionRegistry); } public static org.xtreemfs.foundation.pbrpc.generatedinterfaces.Ping.Ping_emptyResponse parseFrom(byte[] data) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data).buildParsed(); + return PARSER.parseFrom(data); } public static org.xtreemfs.foundation.pbrpc.generatedinterfaces.Ping.Ping_emptyResponse parseFrom( byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(data, extensionRegistry); } public static org.xtreemfs.foundation.pbrpc.generatedinterfaces.Ping.Ping_emptyResponse parseFrom(java.io.InputStream input) throws java.io.IOException { - return newBuilder().mergeFrom(input).buildParsed(); + return PARSER.parseFrom(input); } public static org.xtreemfs.foundation.pbrpc.generatedinterfaces.Ping.Ping_emptyResponse parseFrom( java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - return newBuilder().mergeFrom(input, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(input, extensionRegistry); } public static org.xtreemfs.foundation.pbrpc.generatedinterfaces.Ping.Ping_emptyResponse parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException { - Builder builder = newBuilder(); - if (builder.mergeDelimitedFrom(input)) { - return builder.buildParsed(); - } else { - return null; - } + return PARSER.parseDelimitedFrom(input); } public static org.xtreemfs.foundation.pbrpc.generatedinterfaces.Ping.Ping_emptyResponse parseDelimitedFrom( java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - Builder builder = newBuilder(); - if (builder.mergeDelimitedFrom(input, extensionRegistry)) { - return builder.buildParsed(); - } else { - return null; - } + return PARSER.parseDelimitedFrom(input, extensionRegistry); } public static org.xtreemfs.foundation.pbrpc.generatedinterfaces.Ping.Ping_emptyResponse parseFrom( com.google.protobuf.CodedInputStream input) throws java.io.IOException { - return newBuilder().mergeFrom(input).buildParsed(); + return PARSER.parseFrom(input); } public static org.xtreemfs.foundation.pbrpc.generatedinterfaces.Ping.Ping_emptyResponse parseFrom( com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - return newBuilder().mergeFrom(input, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(input, extensionRegistry); } - + public static Builder newBuilder() { return Builder.create(); } public Builder newBuilderForType() { return newBuilder(); } public static Builder newBuilder(org.xtreemfs.foundation.pbrpc.generatedinterfaces.Ping.Ping_emptyResponse prototype) { return newBuilder().mergeFrom(prototype); } public Builder toBuilder() { return newBuilder(this); } - + + @java.lang.Override + protected Builder newBuilderForType( + com.google.protobuf.GeneratedMessage.BuilderParent parent) { + Builder builder = new Builder(parent); + return builder; + } + /** + * Protobuf type {@code xtreemfs.pbrpc.Ping_emptyResponse} + */ public static final class Builder extends - com.google.protobuf.GeneratedMessage.Builder { - private org.xtreemfs.foundation.pbrpc.generatedinterfaces.Ping.Ping_emptyResponse result; - + com.google.protobuf.GeneratedMessage.Builder + implements org.xtreemfs.foundation.pbrpc.generatedinterfaces.Ping.Ping_emptyResponseOrBuilder { + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return org.xtreemfs.foundation.pbrpc.generatedinterfaces.Ping.internal_static_xtreemfs_pbrpc_Ping_emptyResponse_descriptor; + } + + protected com.google.protobuf.GeneratedMessage.FieldAccessorTable + internalGetFieldAccessorTable() { + return org.xtreemfs.foundation.pbrpc.generatedinterfaces.Ping.internal_static_xtreemfs_pbrpc_Ping_emptyResponse_fieldAccessorTable + .ensureFieldAccessorsInitialized( + org.xtreemfs.foundation.pbrpc.generatedinterfaces.Ping.Ping_emptyResponse.class, org.xtreemfs.foundation.pbrpc.generatedinterfaces.Ping.Ping_emptyResponse.Builder.class); + } + // Construct using org.xtreemfs.foundation.pbrpc.generatedinterfaces.Ping.Ping_emptyResponse.newBuilder() - private Builder() {} - - private static Builder create() { - Builder builder = new Builder(); - builder.result = new org.xtreemfs.foundation.pbrpc.generatedinterfaces.Ping.Ping_emptyResponse(); - return builder; + private Builder() { + maybeForceBuilderInitialization(); } - - protected org.xtreemfs.foundation.pbrpc.generatedinterfaces.Ping.Ping_emptyResponse internalGetResult() { - return result; + + private Builder( + com.google.protobuf.GeneratedMessage.BuilderParent parent) { + super(parent); + maybeForceBuilderInitialization(); } - - public Builder clear() { - if (result == null) { - throw new IllegalStateException( - "Cannot call clear() after build()."); + private void maybeForceBuilderInitialization() { + if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) { } - result = new org.xtreemfs.foundation.pbrpc.generatedinterfaces.Ping.Ping_emptyResponse(); + } + private static Builder create() { + return new Builder(); + } + + public Builder clear() { + super.clear(); return this; } - + public Builder clone() { - return create().mergeFrom(result); + return create().mergeFrom(buildPartial()); } - + public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() { - return org.xtreemfs.foundation.pbrpc.generatedinterfaces.Ping.Ping_emptyResponse.getDescriptor(); + return org.xtreemfs.foundation.pbrpc.generatedinterfaces.Ping.internal_static_xtreemfs_pbrpc_Ping_emptyResponse_descriptor; } - + public org.xtreemfs.foundation.pbrpc.generatedinterfaces.Ping.Ping_emptyResponse getDefaultInstanceForType() { return org.xtreemfs.foundation.pbrpc.generatedinterfaces.Ping.Ping_emptyResponse.getDefaultInstance(); } - - public boolean isInitialized() { - return result.isInitialized(); - } + public org.xtreemfs.foundation.pbrpc.generatedinterfaces.Ping.Ping_emptyResponse build() { - if (result != null && !isInitialized()) { + org.xtreemfs.foundation.pbrpc.generatedinterfaces.Ping.Ping_emptyResponse result = buildPartial(); + if (!result.isInitialized()) { throw newUninitializedMessageException(result); } - return buildPartial(); - } - - private org.xtreemfs.foundation.pbrpc.generatedinterfaces.Ping.Ping_emptyResponse buildParsed() - throws com.google.protobuf.InvalidProtocolBufferException { - if (!isInitialized()) { - throw newUninitializedMessageException( - result).asInvalidProtocolBufferException(); - } - return buildPartial(); + return result; } - + public org.xtreemfs.foundation.pbrpc.generatedinterfaces.Ping.Ping_emptyResponse buildPartial() { - if (result == null) { - throw new IllegalStateException( - "build() has already been called on this Builder."); - } - org.xtreemfs.foundation.pbrpc.generatedinterfaces.Ping.Ping_emptyResponse returnMe = result; - result = null; - return returnMe; + org.xtreemfs.foundation.pbrpc.generatedinterfaces.Ping.Ping_emptyResponse result = new org.xtreemfs.foundation.pbrpc.generatedinterfaces.Ping.Ping_emptyResponse(this); + onBuilt(); + return result; } - + public Builder mergeFrom(com.google.protobuf.Message other) { if (other instanceof org.xtreemfs.foundation.pbrpc.generatedinterfaces.Ping.Ping_emptyResponse) { return mergeFrom((org.xtreemfs.foundation.pbrpc.generatedinterfaces.Ping.Ping_emptyResponse)other); @@ -1736,337 +2835,46 @@ public final class Ping { return this; } } - + public Builder mergeFrom(org.xtreemfs.foundation.pbrpc.generatedinterfaces.Ping.Ping_emptyResponse other) { if (other == org.xtreemfs.foundation.pbrpc.generatedinterfaces.Ping.Ping_emptyResponse.getDefaultInstance()) return this; this.mergeUnknownFields(other.getUnknownFields()); return this; } - + + public final boolean isInitialized() { + return true; + } + public Builder mergeFrom( com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - com.google.protobuf.UnknownFieldSet.Builder unknownFields = - com.google.protobuf.UnknownFieldSet.newBuilder( - this.getUnknownFields()); - while (true) { - int tag = input.readTag(); - switch (tag) { - case 0: - this.setUnknownFields(unknownFields.build()); - return this; - default: { - if (!parseUnknownField(input, unknownFields, - extensionRegistry, tag)) { - this.setUnknownFields(unknownFields.build()); - return this; - } - break; - } + org.xtreemfs.foundation.pbrpc.generatedinterfaces.Ping.Ping_emptyResponse parsedMessage = null; + try { + parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + parsedMessage = (org.xtreemfs.foundation.pbrpc.generatedinterfaces.Ping.Ping_emptyResponse) e.getUnfinishedMessage(); + throw e; + } finally { + if (parsedMessage != null) { + mergeFrom(parsedMessage); } } + return this; } - - + // @@protoc_insertion_point(builder_scope:xtreemfs.pbrpc.Ping_emptyResponse) } - + static { defaultInstance = new Ping_emptyResponse(true); - org.xtreemfs.foundation.pbrpc.generatedinterfaces.Ping.internalForceInit(); defaultInstance.initFields(); } - + // @@protoc_insertion_point(class_scope:xtreemfs.pbrpc.Ping_emptyResponse) } - - public static abstract class PingService - implements com.google.protobuf.Service { - protected PingService() {} - - public interface Interface { - public abstract void doPing( - com.google.protobuf.RpcController controller, - org.xtreemfs.foundation.pbrpc.generatedinterfaces.Ping.PingRequest request, - com.google.protobuf.RpcCallback done); - - public abstract void emptyPing( - com.google.protobuf.RpcController controller, - org.xtreemfs.foundation.pbrpc.generatedinterfaces.Ping.Ping_emptyRequest request, - com.google.protobuf.RpcCallback done); - - } - - public static com.google.protobuf.Service newReflectiveService( - final Interface impl) { - return new PingService() { - @Override - public void doPing( - com.google.protobuf.RpcController controller, - org.xtreemfs.foundation.pbrpc.generatedinterfaces.Ping.PingRequest request, - com.google.protobuf.RpcCallback done) { - impl.doPing(controller, request, done); - } - - @Override - public void emptyPing( - com.google.protobuf.RpcController controller, - org.xtreemfs.foundation.pbrpc.generatedinterfaces.Ping.Ping_emptyRequest request, - com.google.protobuf.RpcCallback done) { - impl.emptyPing(controller, request, done); - } - - }; - } - - public static com.google.protobuf.BlockingService - newReflectiveBlockingService(final BlockingInterface impl) { - return new com.google.protobuf.BlockingService() { - public final com.google.protobuf.Descriptors.ServiceDescriptor - getDescriptorForType() { - return getDescriptor(); - } - - public final com.google.protobuf.Message callBlockingMethod( - com.google.protobuf.Descriptors.MethodDescriptor method, - com.google.protobuf.RpcController controller, - com.google.protobuf.Message request) - throws com.google.protobuf.ServiceException { - if (method.getService() != getDescriptor()) { - throw new java.lang.IllegalArgumentException( - "Service.callBlockingMethod() given method descriptor for " + - "wrong service type."); - } - switch(method.getIndex()) { - case 0: - return impl.doPing(controller, (org.xtreemfs.foundation.pbrpc.generatedinterfaces.Ping.PingRequest)request); - case 1: - return impl.emptyPing(controller, (org.xtreemfs.foundation.pbrpc.generatedinterfaces.Ping.Ping_emptyRequest)request); - default: - throw new java.lang.AssertionError("Can't get here."); - } - } - - public final com.google.protobuf.Message - getRequestPrototype( - com.google.protobuf.Descriptors.MethodDescriptor method) { - if (method.getService() != getDescriptor()) { - throw new java.lang.IllegalArgumentException( - "Service.getRequestPrototype() given method " + - "descriptor for wrong service type."); - } - switch(method.getIndex()) { - case 0: - return org.xtreemfs.foundation.pbrpc.generatedinterfaces.Ping.PingRequest.getDefaultInstance(); - case 1: - return org.xtreemfs.foundation.pbrpc.generatedinterfaces.Ping.Ping_emptyRequest.getDefaultInstance(); - default: - throw new java.lang.AssertionError("Can't get here."); - } - } - - public final com.google.protobuf.Message - getResponsePrototype( - com.google.protobuf.Descriptors.MethodDescriptor method) { - if (method.getService() != getDescriptor()) { - throw new java.lang.IllegalArgumentException( - "Service.getResponsePrototype() given method " + - "descriptor for wrong service type."); - } - switch(method.getIndex()) { - case 0: - return org.xtreemfs.foundation.pbrpc.generatedinterfaces.Ping.PingResponse.getDefaultInstance(); - case 1: - return org.xtreemfs.foundation.pbrpc.generatedinterfaces.Ping.Ping_emptyResponse.getDefaultInstance(); - default: - throw new java.lang.AssertionError("Can't get here."); - } - } - - }; - } - - public abstract void doPing( - com.google.protobuf.RpcController controller, - org.xtreemfs.foundation.pbrpc.generatedinterfaces.Ping.PingRequest request, - com.google.protobuf.RpcCallback done); - - public abstract void emptyPing( - com.google.protobuf.RpcController controller, - org.xtreemfs.foundation.pbrpc.generatedinterfaces.Ping.Ping_emptyRequest request, - com.google.protobuf.RpcCallback done); - - public static final - com.google.protobuf.Descriptors.ServiceDescriptor - getDescriptor() { - return org.xtreemfs.foundation.pbrpc.generatedinterfaces.Ping.getDescriptor().getServices().get(0); - } - public final com.google.protobuf.Descriptors.ServiceDescriptor - getDescriptorForType() { - return getDescriptor(); - } - - public final void callMethod( - com.google.protobuf.Descriptors.MethodDescriptor method, - com.google.protobuf.RpcController controller, - com.google.protobuf.Message request, - com.google.protobuf.RpcCallback< - com.google.protobuf.Message> done) { - if (method.getService() != getDescriptor()) { - throw new java.lang.IllegalArgumentException( - "Service.callMethod() given method descriptor for wrong " + - "service type."); - } - switch(method.getIndex()) { - case 0: - this.doPing(controller, (org.xtreemfs.foundation.pbrpc.generatedinterfaces.Ping.PingRequest)request, - com.google.protobuf.RpcUtil.specializeCallback( - done)); - return; - case 1: - this.emptyPing(controller, (org.xtreemfs.foundation.pbrpc.generatedinterfaces.Ping.Ping_emptyRequest)request, - com.google.protobuf.RpcUtil.specializeCallback( - done)); - return; - default: - throw new java.lang.AssertionError("Can't get here."); - } - } - - public final com.google.protobuf.Message - getRequestPrototype( - com.google.protobuf.Descriptors.MethodDescriptor method) { - if (method.getService() != getDescriptor()) { - throw new java.lang.IllegalArgumentException( - "Service.getRequestPrototype() given method " + - "descriptor for wrong service type."); - } - switch(method.getIndex()) { - case 0: - return org.xtreemfs.foundation.pbrpc.generatedinterfaces.Ping.PingRequest.getDefaultInstance(); - case 1: - return org.xtreemfs.foundation.pbrpc.generatedinterfaces.Ping.Ping_emptyRequest.getDefaultInstance(); - default: - throw new java.lang.AssertionError("Can't get here."); - } - } - - public final com.google.protobuf.Message - getResponsePrototype( - com.google.protobuf.Descriptors.MethodDescriptor method) { - if (method.getService() != getDescriptor()) { - throw new java.lang.IllegalArgumentException( - "Service.getResponsePrototype() given method " + - "descriptor for wrong service type."); - } - switch(method.getIndex()) { - case 0: - return org.xtreemfs.foundation.pbrpc.generatedinterfaces.Ping.PingResponse.getDefaultInstance(); - case 1: - return org.xtreemfs.foundation.pbrpc.generatedinterfaces.Ping.Ping_emptyResponse.getDefaultInstance(); - default: - throw new java.lang.AssertionError("Can't get here."); - } - } - - public static Stub newStub( - com.google.protobuf.RpcChannel channel) { - return new Stub(channel); - } - - public static final class Stub extends org.xtreemfs.foundation.pbrpc.generatedinterfaces.Ping.PingService implements Interface { - private Stub(com.google.protobuf.RpcChannel channel) { - this.channel = channel; - } - - private final com.google.protobuf.RpcChannel channel; - - public com.google.protobuf.RpcChannel getChannel() { - return channel; - } - - public void doPing( - com.google.protobuf.RpcController controller, - org.xtreemfs.foundation.pbrpc.generatedinterfaces.Ping.PingRequest request, - com.google.protobuf.RpcCallback done) { - channel.callMethod( - getDescriptor().getMethods().get(0), - controller, - request, - org.xtreemfs.foundation.pbrpc.generatedinterfaces.Ping.PingResponse.getDefaultInstance(), - com.google.protobuf.RpcUtil.generalizeCallback( - done, - org.xtreemfs.foundation.pbrpc.generatedinterfaces.Ping.PingResponse.class, - org.xtreemfs.foundation.pbrpc.generatedinterfaces.Ping.PingResponse.getDefaultInstance())); - } - - public void emptyPing( - com.google.protobuf.RpcController controller, - org.xtreemfs.foundation.pbrpc.generatedinterfaces.Ping.Ping_emptyRequest request, - com.google.protobuf.RpcCallback done) { - channel.callMethod( - getDescriptor().getMethods().get(1), - controller, - request, - org.xtreemfs.foundation.pbrpc.generatedinterfaces.Ping.Ping_emptyResponse.getDefaultInstance(), - com.google.protobuf.RpcUtil.generalizeCallback( - done, - org.xtreemfs.foundation.pbrpc.generatedinterfaces.Ping.Ping_emptyResponse.class, - org.xtreemfs.foundation.pbrpc.generatedinterfaces.Ping.Ping_emptyResponse.getDefaultInstance())); - } - } - - public static BlockingInterface newBlockingStub( - com.google.protobuf.BlockingRpcChannel channel) { - return new BlockingStub(channel); - } - - public interface BlockingInterface { - public org.xtreemfs.foundation.pbrpc.generatedinterfaces.Ping.PingResponse doPing( - com.google.protobuf.RpcController controller, - org.xtreemfs.foundation.pbrpc.generatedinterfaces.Ping.PingRequest request) - throws com.google.protobuf.ServiceException; - - public org.xtreemfs.foundation.pbrpc.generatedinterfaces.Ping.Ping_emptyResponse emptyPing( - com.google.protobuf.RpcController controller, - org.xtreemfs.foundation.pbrpc.generatedinterfaces.Ping.Ping_emptyRequest request) - throws com.google.protobuf.ServiceException; - } - - private static final class BlockingStub implements BlockingInterface { - private BlockingStub(com.google.protobuf.BlockingRpcChannel channel) { - this.channel = channel; - } - - private final com.google.protobuf.BlockingRpcChannel channel; - - public org.xtreemfs.foundation.pbrpc.generatedinterfaces.Ping.PingResponse doPing( - com.google.protobuf.RpcController controller, - org.xtreemfs.foundation.pbrpc.generatedinterfaces.Ping.PingRequest request) - throws com.google.protobuf.ServiceException { - return (org.xtreemfs.foundation.pbrpc.generatedinterfaces.Ping.PingResponse) channel.callBlockingMethod( - getDescriptor().getMethods().get(0), - controller, - request, - org.xtreemfs.foundation.pbrpc.generatedinterfaces.Ping.PingResponse.getDefaultInstance()); - } - - - public org.xtreemfs.foundation.pbrpc.generatedinterfaces.Ping.Ping_emptyResponse emptyPing( - com.google.protobuf.RpcController controller, - org.xtreemfs.foundation.pbrpc.generatedinterfaces.Ping.Ping_emptyRequest request) - throws com.google.protobuf.ServiceException { - return (org.xtreemfs.foundation.pbrpc.generatedinterfaces.Ping.Ping_emptyResponse) channel.callBlockingMethod( - getDescriptor().getMethods().get(1), - controller, - request, - org.xtreemfs.foundation.pbrpc.generatedinterfaces.Ping.Ping_emptyResponse.getDefaultInstance()); - } - - } - } - + private static com.google.protobuf.Descriptors.Descriptor internal_static_xtreemfs_pbrpc_PingRequest_descriptor; private static @@ -2097,7 +2905,7 @@ public final class Ping { private static com.google.protobuf.GeneratedMessage.FieldAccessorTable internal_static_xtreemfs_pbrpc_Ping_emptyResponse_fieldAccessorTable; - + public static com.google.protobuf.Descriptors.FileDescriptor getDescriptor() { return descriptor; @@ -2132,53 +2940,43 @@ public final class Ping { internal_static_xtreemfs_pbrpc_PingRequest_fieldAccessorTable = new com.google.protobuf.GeneratedMessage.FieldAccessorTable( internal_static_xtreemfs_pbrpc_PingRequest_descriptor, - new java.lang.String[] { "Text", "SendError", }, - org.xtreemfs.foundation.pbrpc.generatedinterfaces.Ping.PingRequest.class, - org.xtreemfs.foundation.pbrpc.generatedinterfaces.Ping.PingRequest.Builder.class); + new java.lang.String[] { "Text", "SendError", }); internal_static_xtreemfs_pbrpc_PingResponse_descriptor = getDescriptor().getMessageTypes().get(1); internal_static_xtreemfs_pbrpc_PingResponse_fieldAccessorTable = new com.google.protobuf.GeneratedMessage.FieldAccessorTable( internal_static_xtreemfs_pbrpc_PingResponse_descriptor, - new java.lang.String[] { "Result", "Error", }, - org.xtreemfs.foundation.pbrpc.generatedinterfaces.Ping.PingResponse.class, - org.xtreemfs.foundation.pbrpc.generatedinterfaces.Ping.PingResponse.Builder.class); + new java.lang.String[] { "Result", "Error", }); internal_static_xtreemfs_pbrpc_PingResponse_PingResult_descriptor = internal_static_xtreemfs_pbrpc_PingResponse_descriptor.getNestedTypes().get(0); internal_static_xtreemfs_pbrpc_PingResponse_PingResult_fieldAccessorTable = new com.google.protobuf.GeneratedMessage.FieldAccessorTable( internal_static_xtreemfs_pbrpc_PingResponse_PingResult_descriptor, - new java.lang.String[] { "Text", }, - org.xtreemfs.foundation.pbrpc.generatedinterfaces.Ping.PingResponse.PingResult.class, - org.xtreemfs.foundation.pbrpc.generatedinterfaces.Ping.PingResponse.PingResult.Builder.class); + new java.lang.String[] { "Text", }); internal_static_xtreemfs_pbrpc_PingResponse_PingError_descriptor = internal_static_xtreemfs_pbrpc_PingResponse_descriptor.getNestedTypes().get(1); internal_static_xtreemfs_pbrpc_PingResponse_PingError_fieldAccessorTable = new com.google.protobuf.GeneratedMessage.FieldAccessorTable( internal_static_xtreemfs_pbrpc_PingResponse_PingError_descriptor, - new java.lang.String[] { "ErrorMessage", }, - org.xtreemfs.foundation.pbrpc.generatedinterfaces.Ping.PingResponse.PingError.class, - org.xtreemfs.foundation.pbrpc.generatedinterfaces.Ping.PingResponse.PingError.Builder.class); + new java.lang.String[] { "ErrorMessage", }); internal_static_xtreemfs_pbrpc_Ping_emptyRequest_descriptor = getDescriptor().getMessageTypes().get(2); internal_static_xtreemfs_pbrpc_Ping_emptyRequest_fieldAccessorTable = new com.google.protobuf.GeneratedMessage.FieldAccessorTable( internal_static_xtreemfs_pbrpc_Ping_emptyRequest_descriptor, - new java.lang.String[] { }, - org.xtreemfs.foundation.pbrpc.generatedinterfaces.Ping.Ping_emptyRequest.class, - org.xtreemfs.foundation.pbrpc.generatedinterfaces.Ping.Ping_emptyRequest.Builder.class); + new java.lang.String[] { }); internal_static_xtreemfs_pbrpc_Ping_emptyResponse_descriptor = getDescriptor().getMessageTypes().get(3); internal_static_xtreemfs_pbrpc_Ping_emptyResponse_fieldAccessorTable = new com.google.protobuf.GeneratedMessage.FieldAccessorTable( internal_static_xtreemfs_pbrpc_Ping_emptyResponse_descriptor, - new java.lang.String[] { }, - org.xtreemfs.foundation.pbrpc.generatedinterfaces.Ping.Ping_emptyResponse.class, - org.xtreemfs.foundation.pbrpc.generatedinterfaces.Ping.Ping_emptyResponse.Builder.class); + new java.lang.String[] { }); com.google.protobuf.ExtensionRegistry registry = com.google.protobuf.ExtensionRegistry.newInstance(); - registerAllExtensions(registry); - org.xtreemfs.foundation.pbrpc.generatedinterfaces.PBRPC.registerAllExtensions(registry); + registry.add(org.xtreemfs.foundation.pbrpc.generatedinterfaces.PBRPC.procId); + registry.add(org.xtreemfs.foundation.pbrpc.generatedinterfaces.PBRPC.dataIn); + registry.add(org.xtreemfs.foundation.pbrpc.generatedinterfaces.PBRPC.procId); + registry.add(org.xtreemfs.foundation.pbrpc.generatedinterfaces.PBRPC.interfaceId); return registry; } }; @@ -2188,8 +2986,6 @@ public final class Ping { org.xtreemfs.foundation.pbrpc.generatedinterfaces.PBRPC.getDescriptor(), }, assigner); } - - public static void internalForceInit() {} - + // @@protoc_insertion_point(outer_class_scope) } diff --git a/java/foundation/src/org/xtreemfs/foundation/pbrpc/generatedinterfaces/PingServiceClient.java b/java/foundation/src/org/xtreemfs/foundation/pbrpc/generatedinterfaces/PingServiceClient.java index f6416840b..ead7c5815 100644 --- a/java/foundation/src/org/xtreemfs/foundation/pbrpc/generatedinterfaces/PingServiceClient.java +++ b/java/foundation/src/org/xtreemfs/foundation/pbrpc/generatedinterfaces/PingServiceClient.java @@ -1,4 +1,4 @@ -//automatically generated from Ping.proto at Thu Mar 21 17:09:46 CET 2013 +//automatically generated from Ping.proto at Mon Nov 11 11:46:59 CET 2013 //(c) 2013. See LICENSE file for details. package org.xtreemfs.foundation.pbrpc.generatedinterfaces; diff --git a/java/foundation/src/org/xtreemfs/foundation/pbrpc/generatedinterfaces/PingServiceConstants.java b/java/foundation/src/org/xtreemfs/foundation/pbrpc/generatedinterfaces/PingServiceConstants.java index f401756a3..19f6594e8 100644 --- a/java/foundation/src/org/xtreemfs/foundation/pbrpc/generatedinterfaces/PingServiceConstants.java +++ b/java/foundation/src/org/xtreemfs/foundation/pbrpc/generatedinterfaces/PingServiceConstants.java @@ -1,4 +1,4 @@ -//automatically generated from Ping.proto at Thu Mar 21 17:09:46 CET 2013 +//automatically generated from Ping.proto at Mon Nov 11 11:46:59 CET 2013 //(c) 2013. See LICENSE file for details. package org.xtreemfs.foundation.pbrpc.generatedinterfaces; diff --git a/java/foundation/src/org/xtreemfs/foundation/pbrpc/generatedinterfaces/RPC.java b/java/foundation/src/org/xtreemfs/foundation/pbrpc/generatedinterfaces/RPC.java index 9e15a8dc2..807a68500 100644 --- a/java/foundation/src/org/xtreemfs/foundation/pbrpc/generatedinterfaces/RPC.java +++ b/java/foundation/src/org/xtreemfs/foundation/pbrpc/generatedinterfaces/RPC.java @@ -8,16 +8,69 @@ public final class RPC { public static void registerAllExtensions( com.google.protobuf.ExtensionRegistry registry) { } + /** + * Protobuf enum {@code xtreemfs.pbrpc.MessageType} + * + *
+   * Encodes the type of the RPC message sent.
+   * 
+ */ public enum MessageType implements com.google.protobuf.ProtocolMessageEnum { + /** + * RPC_REQUEST = 0; + * + *
+     * RPC request to execute method.
+     * 
+ */ RPC_REQUEST(0, 0), + /** + * RPC_RESPONSE_SUCCESS = 1; + * + *
+     * RPC response after successful execution of method.
+     * 
+ */ RPC_RESPONSE_SUCCESS(1, 1), + /** + * RPC_RESPONSE_ERROR = 2; + * + *
+     * RPC response when execution of a method failed, including POSIX errors.
+     * 
+ */ RPC_RESPONSE_ERROR(2, 2), ; - - + + /** + * RPC_REQUEST = 0; + * + *
+     * RPC request to execute method.
+     * 
+ */ + public static final int RPC_REQUEST_VALUE = 0; + /** + * RPC_RESPONSE_SUCCESS = 1; + * + *
+     * RPC response after successful execution of method.
+     * 
+ */ + public static final int RPC_RESPONSE_SUCCESS_VALUE = 1; + /** + * RPC_RESPONSE_ERROR = 2; + * + *
+     * RPC response when execution of a method failed, including POSIX errors.
+     * 
+ */ + public static final int RPC_RESPONSE_ERROR_VALUE = 2; + + public final int getNumber() { return value; } - + public static MessageType valueOf(int value) { switch (value) { case 0: return RPC_REQUEST; @@ -26,7 +79,7 @@ public final class RPC { default: return null; } } - + public static com.google.protobuf.Internal.EnumLiteMap internalGetValueMap() { return internalValueMap; @@ -35,10 +88,10 @@ public final class RPC { internalValueMap = new com.google.protobuf.Internal.EnumLiteMap() { public MessageType findValueByNumber(int number) { - return MessageType.valueOf(number) - ; } + return MessageType.valueOf(number); + } }; - + public final com.google.protobuf.Descriptors.EnumValueDescriptor getValueDescriptor() { return getDescriptor().getValues().get(index); @@ -51,10 +104,9 @@ public final class RPC { getDescriptor() { return org.xtreemfs.foundation.pbrpc.generatedinterfaces.RPC.getDescriptor().getEnumTypes().get(0); } - - private static final MessageType[] VALUES = { - RPC_REQUEST, RPC_RESPONSE_SUCCESS, RPC_RESPONSE_ERROR, - }; + + private static final MessageType[] VALUES = values(); + public static MessageType valueOf( com.google.protobuf.Descriptors.EnumValueDescriptor desc) { if (desc.getType() != getDescriptor()) { @@ -63,29 +115,65 @@ public final class RPC { } return VALUES[desc.getIndex()]; } + private final int index; private final int value; + private MessageType(int index, int value) { this.index = index; this.value = value; } - - static { - org.xtreemfs.foundation.pbrpc.generatedinterfaces.RPC.getDescriptor(); - } - + // @@protoc_insertion_point(enum_scope:xtreemfs.pbrpc.MessageType) } - + + /** + * Protobuf enum {@code xtreemfs.pbrpc.AuthType} + * + *
+   * Authentication type provided for request.
+   * 
+ */ public enum AuthType implements com.google.protobuf.ProtocolMessageEnum { + /** + * AUTH_NONE = 0; + * + *
+     * No authentication.
+     * 
+ */ AUTH_NONE(0, 0), + /** + * AUTH_PASSWORD = 1; + * + *
+     * Plain text admin password authentication.
+     * 
+ */ AUTH_PASSWORD(1, 1), ; - - + + /** + * AUTH_NONE = 0; + * + *
+     * No authentication.
+     * 
+ */ + public static final int AUTH_NONE_VALUE = 0; + /** + * AUTH_PASSWORD = 1; + * + *
+     * Plain text admin password authentication.
+     * 
+ */ + public static final int AUTH_PASSWORD_VALUE = 1; + + public final int getNumber() { return value; } - + public static AuthType valueOf(int value) { switch (value) { case 0: return AUTH_NONE; @@ -93,7 +181,7 @@ public final class RPC { default: return null; } } - + public static com.google.protobuf.Internal.EnumLiteMap internalGetValueMap() { return internalValueMap; @@ -102,10 +190,10 @@ public final class RPC { internalValueMap = new com.google.protobuf.Internal.EnumLiteMap() { public AuthType findValueByNumber(int number) { - return AuthType.valueOf(number) - ; } + return AuthType.valueOf(number); + } }; - + public final com.google.protobuf.Descriptors.EnumValueDescriptor getValueDescriptor() { return getDescriptor().getValues().get(index); @@ -118,10 +206,9 @@ public final class RPC { getDescriptor() { return org.xtreemfs.foundation.pbrpc.generatedinterfaces.RPC.getDescriptor().getEnumTypes().get(1); } - - private static final AuthType[] VALUES = { - AUTH_NONE, AUTH_PASSWORD, - }; + + private static final AuthType[] VALUES = values(); + public static AuthType valueOf( com.google.protobuf.Descriptors.EnumValueDescriptor desc) { if (desc.getType() != getDescriptor()) { @@ -130,35 +217,163 @@ public final class RPC { } return VALUES[desc.getIndex()]; } + private final int index; private final int value; + private AuthType(int index, int value) { this.index = index; this.value = value; } - - static { - org.xtreemfs.foundation.pbrpc.generatedinterfaces.RPC.getDescriptor(); - } - + // @@protoc_insertion_point(enum_scope:xtreemfs.pbrpc.AuthType) } - + + /** + * Protobuf enum {@code xtreemfs.pbrpc.ErrorType} + * + *
+   * Error types.
+   * 
+ */ public enum ErrorType implements com.google.protobuf.ProtocolMessageEnum { + /** + * INVALID_INTERFACE_ID = 1; + * + *
+     * Requested interface_id not implemented by server.
+     * 
+ */ INVALID_INTERFACE_ID(0, 1), + /** + * INVALID_PROC_ID = 2; + * + *
+     * Requested procedure_id not implemented by serevr.
+     * 
+ */ INVALID_PROC_ID(1, 2), + /** + * GARBAGE_ARGS = 3; + * + *
+     * Server cannot parse the RPC request.
+     * 
+ */ GARBAGE_ARGS(2, 3), + /** + * AUTH_FAILED = 4; + * + *
+     * Authentication failed, access denied.
+     * 
+ */ AUTH_FAILED(3, 4), + /** + * INTERNAL_SERVER_ERROR = 5; + * + *
+     * Unspecific internal server error that caused the RPC to fail.
+     * 
+ */ INTERNAL_SERVER_ERROR(4, 5), + /** + * ERRNO = 6; + * + *
+     * POSIX errno error (not necessarily a failure), e.g. ENOENT.
+     * POSIXErrno contains details that can be passed to an application.
+     * 
+ */ ERRNO(5, 6), + /** + * REDIRECT = 7; + * + *
+     * Server redirects to another server implementing the same interface.
+     * 
+ */ REDIRECT(6, 7), + /** + * IO_ERROR = 100; + * + *
+     * Generic IO_ERROR to be used by the RPC implementation.
+     * 
+ */ IO_ERROR(7, 100), ; - - + + /** + * INVALID_INTERFACE_ID = 1; + * + *
+     * Requested interface_id not implemented by server.
+     * 
+ */ + public static final int INVALID_INTERFACE_ID_VALUE = 1; + /** + * INVALID_PROC_ID = 2; + * + *
+     * Requested procedure_id not implemented by serevr.
+     * 
+ */ + public static final int INVALID_PROC_ID_VALUE = 2; + /** + * GARBAGE_ARGS = 3; + * + *
+     * Server cannot parse the RPC request.
+     * 
+ */ + public static final int GARBAGE_ARGS_VALUE = 3; + /** + * AUTH_FAILED = 4; + * + *
+     * Authentication failed, access denied.
+     * 
+ */ + public static final int AUTH_FAILED_VALUE = 4; + /** + * INTERNAL_SERVER_ERROR = 5; + * + *
+     * Unspecific internal server error that caused the RPC to fail.
+     * 
+ */ + public static final int INTERNAL_SERVER_ERROR_VALUE = 5; + /** + * ERRNO = 6; + * + *
+     * POSIX errno error (not necessarily a failure), e.g. ENOENT.
+     * POSIXErrno contains details that can be passed to an application.
+     * 
+ */ + public static final int ERRNO_VALUE = 6; + /** + * REDIRECT = 7; + * + *
+     * Server redirects to another server implementing the same interface.
+     * 
+ */ + public static final int REDIRECT_VALUE = 7; + /** + * IO_ERROR = 100; + * + *
+     * Generic IO_ERROR to be used by the RPC implementation.
+     * 
+ */ + public static final int IO_ERROR_VALUE = 100; + + public final int getNumber() { return value; } - + public static ErrorType valueOf(int value) { switch (value) { case 1: return INVALID_INTERFACE_ID; @@ -172,7 +387,7 @@ public final class RPC { default: return null; } } - + public static com.google.protobuf.Internal.EnumLiteMap internalGetValueMap() { return internalValueMap; @@ -181,10 +396,10 @@ public final class RPC { internalValueMap = new com.google.protobuf.Internal.EnumLiteMap() { public ErrorType findValueByNumber(int number) { - return ErrorType.valueOf(number) - ; } + return ErrorType.valueOf(number); + } }; - + public final com.google.protobuf.Descriptors.EnumValueDescriptor getValueDescriptor() { return getDescriptor().getValues().get(index); @@ -197,10 +412,9 @@ public final class RPC { getDescriptor() { return org.xtreemfs.foundation.pbrpc.generatedinterfaces.RPC.getDescriptor().getEnumTypes().get(2); } - - private static final ErrorType[] VALUES = { - INVALID_INTERFACE_ID, INVALID_PROC_ID, GARBAGE_ARGS, AUTH_FAILED, INTERNAL_SERVER_ERROR, ERRNO, REDIRECT, IO_ERROR, - }; + + private static final ErrorType[] VALUES = values(); + public static ErrorType valueOf( com.google.protobuf.Descriptors.EnumValueDescriptor desc) { if (desc.getType() != getDescriptor()) { @@ -209,42 +423,156 @@ public final class RPC { } return VALUES[desc.getIndex()]; } + private final int index; private final int value; + private ErrorType(int index, int value) { this.index = index; this.value = value; } - - static { - org.xtreemfs.foundation.pbrpc.generatedinterfaces.RPC.getDescriptor(); - } - + // @@protoc_insertion_point(enum_scope:xtreemfs.pbrpc.ErrorType) } - + + /** + * Protobuf enum {@code xtreemfs.pbrpc.POSIXErrno} + * + *
+   * Additional error code which can be passed to applications.
+   * See errno.h for details. Values are equivalent to Linux
+   * values, but are different for other unix platforms such as
+   * Mac OS X and Solaris!
+   * 
+ */ public enum POSIXErrno implements com.google.protobuf.ProtocolMessageEnum { + /** + * POSIX_ERROR_NONE = 9999; + */ POSIX_ERROR_NONE(0, 9999), + /** + * POSIX_ERROR_EPERM = 1; + */ POSIX_ERROR_EPERM(1, 1), + /** + * POSIX_ERROR_ENOENT = 2; + */ POSIX_ERROR_ENOENT(2, 2), + /** + * POSIX_ERROR_EINTR = 4; + */ POSIX_ERROR_EINTR(3, 4), + /** + * POSIX_ERROR_EIO = 5; + */ POSIX_ERROR_EIO(4, 5), + /** + * POSIX_ERROR_EAGAIN = 11; + */ POSIX_ERROR_EAGAIN(5, 11), + /** + * POSIX_ERROR_EACCES = 13; + */ POSIX_ERROR_EACCES(6, 13), + /** + * POSIX_ERROR_EEXIST = 17; + */ POSIX_ERROR_EEXIST(7, 17), + /** + * POSIX_ERROR_EXDEV = 18; + */ POSIX_ERROR_EXDEV(8, 18), + /** + * POSIX_ERROR_ENODEV = 19; + */ POSIX_ERROR_ENODEV(9, 19), + /** + * POSIX_ERROR_ENOTDIR = 20; + */ POSIX_ERROR_ENOTDIR(10, 20), + /** + * POSIX_ERROR_EISDIR = 21; + */ POSIX_ERROR_EISDIR(11, 21), + /** + * POSIX_ERROR_EINVAL = 22; + */ POSIX_ERROR_EINVAL(12, 22), + /** + * POSIX_ERROR_ENOTEMPTY = 39; + */ POSIX_ERROR_ENOTEMPTY(13, 39), + /** + * POSIX_ERROR_ENODATA = 61; + */ POSIX_ERROR_ENODATA(14, 61), ; - - + + /** + * POSIX_ERROR_NONE = 9999; + */ + public static final int POSIX_ERROR_NONE_VALUE = 9999; + /** + * POSIX_ERROR_EPERM = 1; + */ + public static final int POSIX_ERROR_EPERM_VALUE = 1; + /** + * POSIX_ERROR_ENOENT = 2; + */ + public static final int POSIX_ERROR_ENOENT_VALUE = 2; + /** + * POSIX_ERROR_EINTR = 4; + */ + public static final int POSIX_ERROR_EINTR_VALUE = 4; + /** + * POSIX_ERROR_EIO = 5; + */ + public static final int POSIX_ERROR_EIO_VALUE = 5; + /** + * POSIX_ERROR_EAGAIN = 11; + */ + public static final int POSIX_ERROR_EAGAIN_VALUE = 11; + /** + * POSIX_ERROR_EACCES = 13; + */ + public static final int POSIX_ERROR_EACCES_VALUE = 13; + /** + * POSIX_ERROR_EEXIST = 17; + */ + public static final int POSIX_ERROR_EEXIST_VALUE = 17; + /** + * POSIX_ERROR_EXDEV = 18; + */ + public static final int POSIX_ERROR_EXDEV_VALUE = 18; + /** + * POSIX_ERROR_ENODEV = 19; + */ + public static final int POSIX_ERROR_ENODEV_VALUE = 19; + /** + * POSIX_ERROR_ENOTDIR = 20; + */ + public static final int POSIX_ERROR_ENOTDIR_VALUE = 20; + /** + * POSIX_ERROR_EISDIR = 21; + */ + public static final int POSIX_ERROR_EISDIR_VALUE = 21; + /** + * POSIX_ERROR_EINVAL = 22; + */ + public static final int POSIX_ERROR_EINVAL_VALUE = 22; + /** + * POSIX_ERROR_ENOTEMPTY = 39; + */ + public static final int POSIX_ERROR_ENOTEMPTY_VALUE = 39; + /** + * POSIX_ERROR_ENODATA = 61; + */ + public static final int POSIX_ERROR_ENODATA_VALUE = 61; + + public final int getNumber() { return value; } - + public static POSIXErrno valueOf(int value) { switch (value) { case 9999: return POSIX_ERROR_NONE; @@ -265,7 +593,7 @@ public final class RPC { default: return null; } } - + public static com.google.protobuf.Internal.EnumLiteMap internalGetValueMap() { return internalValueMap; @@ -274,10 +602,10 @@ public final class RPC { internalValueMap = new com.google.protobuf.Internal.EnumLiteMap() { public POSIXErrno findValueByNumber(int number) { - return POSIXErrno.valueOf(number) - ; } + return POSIXErrno.valueOf(number); + } }; - + public final com.google.protobuf.Descriptors.EnumValueDescriptor getValueDescriptor() { return getDescriptor().getValues().get(index); @@ -290,10 +618,9 @@ public final class RPC { getDescriptor() { return org.xtreemfs.foundation.pbrpc.generatedinterfaces.RPC.getDescriptor().getEnumTypes().get(3); } - - private static final POSIXErrno[] VALUES = { - POSIX_ERROR_NONE, POSIX_ERROR_EPERM, POSIX_ERROR_ENOENT, POSIX_ERROR_EINTR, POSIX_ERROR_EIO, POSIX_ERROR_EAGAIN, POSIX_ERROR_EACCES, POSIX_ERROR_EEXIST, POSIX_ERROR_EXDEV, POSIX_ERROR_ENODEV, POSIX_ERROR_ENOTDIR, POSIX_ERROR_EISDIR, POSIX_ERROR_EINVAL, POSIX_ERROR_ENOTEMPTY, POSIX_ERROR_ENODATA, - }; + + private static final POSIXErrno[] VALUES = values(); + public static POSIXErrno valueOf( com.google.protobuf.Descriptors.EnumValueDescriptor desc) { if (desc.getType() != getDescriptor()) { @@ -302,100 +629,341 @@ public final class RPC { } return VALUES[desc.getIndex()]; } + private final int index; private final int value; + private POSIXErrno(int index, int value) { this.index = index; this.value = value; } - - static { - org.xtreemfs.foundation.pbrpc.generatedinterfaces.RPC.getDescriptor(); - } - + // @@protoc_insertion_point(enum_scope:xtreemfs.pbrpc.POSIXErrno) } - + + public interface UserCredentialsOrBuilder + extends com.google.protobuf.MessageOrBuilder { + + // required string username = 1; + /** + * required string username = 1; + * + *
+     * Globally unique user ID (GUID).
+     * 
+ */ + boolean hasUsername(); + /** + * required string username = 1; + * + *
+     * Globally unique user ID (GUID).
+     * 
+ */ + java.lang.String getUsername(); + /** + * required string username = 1; + * + *
+     * Globally unique user ID (GUID).
+     * 
+ */ + com.google.protobuf.ByteString + getUsernameBytes(); + + // repeated string groups = 2; + /** + * repeated string groups = 2; + * + *
+     * List of one or more globally unique group IDs (GGID).
+     * 
+ */ + java.util.List + getGroupsList(); + /** + * repeated string groups = 2; + * + *
+     * List of one or more globally unique group IDs (GGID).
+     * 
+ */ + int getGroupsCount(); + /** + * repeated string groups = 2; + * + *
+     * List of one or more globally unique group IDs (GGID).
+     * 
+ */ + java.lang.String getGroups(int index); + /** + * repeated string groups = 2; + * + *
+     * List of one or more globally unique group IDs (GGID).
+     * 
+ */ + com.google.protobuf.ByteString + getGroupsBytes(int index); + } + /** + * Protobuf type {@code xtreemfs.pbrpc.UserCredentials} + * + *
+   * File system user credentials for executing an operation.
+   * Might be ignored by some operations.
+   * 
+ */ public static final class UserCredentials extends - com.google.protobuf.GeneratedMessage { + com.google.protobuf.GeneratedMessage + implements UserCredentialsOrBuilder { // Use UserCredentials.newBuilder() to construct. - private UserCredentials() { - initFields(); + private UserCredentials(com.google.protobuf.GeneratedMessage.Builder builder) { + super(builder); + this.unknownFields = builder.getUnknownFields(); } - private UserCredentials(boolean noInit) {} - + private UserCredentials(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); } + private static final UserCredentials defaultInstance; public static UserCredentials getDefaultInstance() { return defaultInstance; } - + public UserCredentials getDefaultInstanceForType() { return defaultInstance; } - + + private final com.google.protobuf.UnknownFieldSet unknownFields; + @java.lang.Override + public final com.google.protobuf.UnknownFieldSet + getUnknownFields() { + return this.unknownFields; + } + private UserCredentials( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + initFields(); + int mutable_bitField0_ = 0; + com.google.protobuf.UnknownFieldSet.Builder unknownFields = + com.google.protobuf.UnknownFieldSet.newBuilder(); + try { + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch (tag) { + case 0: + done = true; + break; + default: { + if (!parseUnknownField(input, unknownFields, + extensionRegistry, tag)) { + done = true; + } + break; + } + case 10: { + bitField0_ |= 0x00000001; + username_ = input.readBytes(); + break; + } + case 18: { + if (!((mutable_bitField0_ & 0x00000002) == 0x00000002)) { + groups_ = new com.google.protobuf.LazyStringArrayList(); + mutable_bitField0_ |= 0x00000002; + } + groups_.add(input.readBytes()); + break; + } + } + } + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(this); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException( + e.getMessage()).setUnfinishedMessage(this); + } finally { + if (((mutable_bitField0_ & 0x00000002) == 0x00000002)) { + groups_ = new com.google.protobuf.UnmodifiableLazyStringList(groups_); + } + this.unknownFields = unknownFields.build(); + makeExtensionsImmutable(); + } + } public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { return org.xtreemfs.foundation.pbrpc.generatedinterfaces.RPC.internal_static_xtreemfs_pbrpc_UserCredentials_descriptor; } - + protected com.google.protobuf.GeneratedMessage.FieldAccessorTable internalGetFieldAccessorTable() { - return org.xtreemfs.foundation.pbrpc.generatedinterfaces.RPC.internal_static_xtreemfs_pbrpc_UserCredentials_fieldAccessorTable; + return org.xtreemfs.foundation.pbrpc.generatedinterfaces.RPC.internal_static_xtreemfs_pbrpc_UserCredentials_fieldAccessorTable + .ensureFieldAccessorsInitialized( + org.xtreemfs.foundation.pbrpc.generatedinterfaces.RPC.UserCredentials.class, org.xtreemfs.foundation.pbrpc.generatedinterfaces.RPC.UserCredentials.Builder.class); + } + + public static com.google.protobuf.Parser PARSER = + new com.google.protobuf.AbstractParser() { + public UserCredentials parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return new UserCredentials(input, extensionRegistry); + } + }; + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; } - + + private int bitField0_; // required string username = 1; public static final int USERNAME_FIELD_NUMBER = 1; - private boolean hasUsername; - private java.lang.String username_ = ""; - public boolean hasUsername() { return hasUsername; } - public java.lang.String getUsername() { return username_; } - + private java.lang.Object username_; + /** + * required string username = 1; + * + *
+     * Globally unique user ID (GUID).
+     * 
+ */ + public boolean hasUsername() { + return ((bitField0_ & 0x00000001) == 0x00000001); + } + /** + * required string username = 1; + * + *
+     * Globally unique user ID (GUID).
+     * 
+ */ + public java.lang.String getUsername() { + java.lang.Object ref = username_; + if (ref instanceof java.lang.String) { + return (java.lang.String) ref; + } else { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + if (bs.isValidUtf8()) { + username_ = s; + } + return s; + } + } + /** + * required string username = 1; + * + *
+     * Globally unique user ID (GUID).
+     * 
+ */ + public com.google.protobuf.ByteString + getUsernameBytes() { + java.lang.Object ref = username_; + if (ref instanceof java.lang.String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + username_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + // repeated string groups = 2; public static final int GROUPS_FIELD_NUMBER = 2; - private java.util.List groups_ = - java.util.Collections.emptyList(); - public java.util.List getGroupsList() { + private com.google.protobuf.LazyStringList groups_; + /** + * repeated string groups = 2; + * + *
+     * List of one or more globally unique group IDs (GGID).
+     * 
+ */ + public java.util.List + getGroupsList() { return groups_; } - public int getGroupsCount() { return groups_.size(); } + /** + * repeated string groups = 2; + * + *
+     * List of one or more globally unique group IDs (GGID).
+     * 
+ */ + public int getGroupsCount() { + return groups_.size(); + } + /** + * repeated string groups = 2; + * + *
+     * List of one or more globally unique group IDs (GGID).
+     * 
+ */ public java.lang.String getGroups(int index) { return groups_.get(index); } - + /** + * repeated string groups = 2; + * + *
+     * List of one or more globally unique group IDs (GGID).
+     * 
+ */ + public com.google.protobuf.ByteString + getGroupsBytes(int index) { + return groups_.getByteString(index); + } + private void initFields() { + username_ = ""; + groups_ = com.google.protobuf.LazyStringArrayList.EMPTY; } + private byte memoizedIsInitialized = -1; public final boolean isInitialized() { - if (!hasUsername) return false; + byte isInitialized = memoizedIsInitialized; + if (isInitialized != -1) return isInitialized == 1; + + if (!hasUsername()) { + memoizedIsInitialized = 0; + return false; + } + memoizedIsInitialized = 1; return true; } - + public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException { getSerializedSize(); - if (hasUsername()) { - output.writeString(1, getUsername()); + if (((bitField0_ & 0x00000001) == 0x00000001)) { + output.writeBytes(1, getUsernameBytes()); } - for (java.lang.String element : getGroupsList()) { - output.writeString(2, element); + for (int i = 0; i < groups_.size(); i++) { + output.writeBytes(2, groups_.getByteString(i)); } getUnknownFields().writeTo(output); } - + private int memoizedSerializedSize = -1; public int getSerializedSize() { int size = memoizedSerializedSize; if (size != -1) return size; - + size = 0; - if (hasUsername()) { + if (((bitField0_ & 0x00000001) == 0x00000001)) { size += com.google.protobuf.CodedOutputStream - .computeStringSize(1, getUsername()); + .computeBytesSize(1, getUsernameBytes()); } { int dataSize = 0; - for (java.lang.String element : getGroupsList()) { + for (int i = 0; i < groups_.size(); i++) { dataSize += com.google.protobuf.CodedOutputStream - .computeStringSizeNoTag(element); + .computeBytesSizeNoTag(groups_.getByteString(i)); } size += dataSize; size += 1 * getGroupsList().size(); @@ -404,153 +972,170 @@ public final class RPC { memoizedSerializedSize = size; return size; } - + + private static final long serialVersionUID = 0L; + @java.lang.Override + protected java.lang.Object writeReplace() + throws java.io.ObjectStreamException { + return super.writeReplace(); + } + public static org.xtreemfs.foundation.pbrpc.generatedinterfaces.RPC.UserCredentials parseFrom( com.google.protobuf.ByteString data) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data).buildParsed(); + return PARSER.parseFrom(data); } public static org.xtreemfs.foundation.pbrpc.generatedinterfaces.RPC.UserCredentials parseFrom( com.google.protobuf.ByteString data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(data, extensionRegistry); } public static org.xtreemfs.foundation.pbrpc.generatedinterfaces.RPC.UserCredentials parseFrom(byte[] data) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data).buildParsed(); + return PARSER.parseFrom(data); } public static org.xtreemfs.foundation.pbrpc.generatedinterfaces.RPC.UserCredentials parseFrom( byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(data, extensionRegistry); } public static org.xtreemfs.foundation.pbrpc.generatedinterfaces.RPC.UserCredentials parseFrom(java.io.InputStream input) throws java.io.IOException { - return newBuilder().mergeFrom(input).buildParsed(); + return PARSER.parseFrom(input); } public static org.xtreemfs.foundation.pbrpc.generatedinterfaces.RPC.UserCredentials parseFrom( java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - return newBuilder().mergeFrom(input, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(input, extensionRegistry); } public static org.xtreemfs.foundation.pbrpc.generatedinterfaces.RPC.UserCredentials parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException { - Builder builder = newBuilder(); - if (builder.mergeDelimitedFrom(input)) { - return builder.buildParsed(); - } else { - return null; - } + return PARSER.parseDelimitedFrom(input); } public static org.xtreemfs.foundation.pbrpc.generatedinterfaces.RPC.UserCredentials parseDelimitedFrom( java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - Builder builder = newBuilder(); - if (builder.mergeDelimitedFrom(input, extensionRegistry)) { - return builder.buildParsed(); - } else { - return null; - } + return PARSER.parseDelimitedFrom(input, extensionRegistry); } public static org.xtreemfs.foundation.pbrpc.generatedinterfaces.RPC.UserCredentials parseFrom( com.google.protobuf.CodedInputStream input) throws java.io.IOException { - return newBuilder().mergeFrom(input).buildParsed(); + return PARSER.parseFrom(input); } public static org.xtreemfs.foundation.pbrpc.generatedinterfaces.RPC.UserCredentials parseFrom( com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - return newBuilder().mergeFrom(input, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(input, extensionRegistry); } - + public static Builder newBuilder() { return Builder.create(); } public Builder newBuilderForType() { return newBuilder(); } public static Builder newBuilder(org.xtreemfs.foundation.pbrpc.generatedinterfaces.RPC.UserCredentials prototype) { return newBuilder().mergeFrom(prototype); } public Builder toBuilder() { return newBuilder(this); } - + + @java.lang.Override + protected Builder newBuilderForType( + com.google.protobuf.GeneratedMessage.BuilderParent parent) { + Builder builder = new Builder(parent); + return builder; + } + /** + * Protobuf type {@code xtreemfs.pbrpc.UserCredentials} + * + *
+     * File system user credentials for executing an operation.
+     * Might be ignored by some operations.
+     * 
+ */ public static final class Builder extends - com.google.protobuf.GeneratedMessage.Builder { - private org.xtreemfs.foundation.pbrpc.generatedinterfaces.RPC.UserCredentials result; - + com.google.protobuf.GeneratedMessage.Builder + implements org.xtreemfs.foundation.pbrpc.generatedinterfaces.RPC.UserCredentialsOrBuilder { + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return org.xtreemfs.foundation.pbrpc.generatedinterfaces.RPC.internal_static_xtreemfs_pbrpc_UserCredentials_descriptor; + } + + protected com.google.protobuf.GeneratedMessage.FieldAccessorTable + internalGetFieldAccessorTable() { + return org.xtreemfs.foundation.pbrpc.generatedinterfaces.RPC.internal_static_xtreemfs_pbrpc_UserCredentials_fieldAccessorTable + .ensureFieldAccessorsInitialized( + org.xtreemfs.foundation.pbrpc.generatedinterfaces.RPC.UserCredentials.class, org.xtreemfs.foundation.pbrpc.generatedinterfaces.RPC.UserCredentials.Builder.class); + } + // Construct using org.xtreemfs.foundation.pbrpc.generatedinterfaces.RPC.UserCredentials.newBuilder() - private Builder() {} - - private static Builder create() { - Builder builder = new Builder(); - builder.result = new org.xtreemfs.foundation.pbrpc.generatedinterfaces.RPC.UserCredentials(); - return builder; + private Builder() { + maybeForceBuilderInitialization(); } - - protected org.xtreemfs.foundation.pbrpc.generatedinterfaces.RPC.UserCredentials internalGetResult() { - return result; + + private Builder( + com.google.protobuf.GeneratedMessage.BuilderParent parent) { + super(parent); + maybeForceBuilderInitialization(); } - - public Builder clear() { - if (result == null) { - throw new IllegalStateException( - "Cannot call clear() after build()."); + private void maybeForceBuilderInitialization() { + if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) { } - result = new org.xtreemfs.foundation.pbrpc.generatedinterfaces.RPC.UserCredentials(); + } + private static Builder create() { + return new Builder(); + } + + public Builder clear() { + super.clear(); + username_ = ""; + bitField0_ = (bitField0_ & ~0x00000001); + groups_ = com.google.protobuf.LazyStringArrayList.EMPTY; + bitField0_ = (bitField0_ & ~0x00000002); return this; } - + public Builder clone() { - return create().mergeFrom(result); + return create().mergeFrom(buildPartial()); } - + public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() { - return org.xtreemfs.foundation.pbrpc.generatedinterfaces.RPC.UserCredentials.getDescriptor(); + return org.xtreemfs.foundation.pbrpc.generatedinterfaces.RPC.internal_static_xtreemfs_pbrpc_UserCredentials_descriptor; } - + public org.xtreemfs.foundation.pbrpc.generatedinterfaces.RPC.UserCredentials getDefaultInstanceForType() { return org.xtreemfs.foundation.pbrpc.generatedinterfaces.RPC.UserCredentials.getDefaultInstance(); } - - public boolean isInitialized() { - return result.isInitialized(); - } + public org.xtreemfs.foundation.pbrpc.generatedinterfaces.RPC.UserCredentials build() { - if (result != null && !isInitialized()) { + org.xtreemfs.foundation.pbrpc.generatedinterfaces.RPC.UserCredentials result = buildPartial(); + if (!result.isInitialized()) { throw newUninitializedMessageException(result); } - return buildPartial(); - } - - private org.xtreemfs.foundation.pbrpc.generatedinterfaces.RPC.UserCredentials buildParsed() - throws com.google.protobuf.InvalidProtocolBufferException { - if (!isInitialized()) { - throw newUninitializedMessageException( - result).asInvalidProtocolBufferException(); - } - return buildPartial(); + return result; } - + public org.xtreemfs.foundation.pbrpc.generatedinterfaces.RPC.UserCredentials buildPartial() { - if (result == null) { - throw new IllegalStateException( - "build() has already been called on this Builder."); - } - if (result.groups_ != java.util.Collections.EMPTY_LIST) { - result.groups_ = - java.util.Collections.unmodifiableList(result.groups_); - } - org.xtreemfs.foundation.pbrpc.generatedinterfaces.RPC.UserCredentials returnMe = result; - result = null; - return returnMe; + org.xtreemfs.foundation.pbrpc.generatedinterfaces.RPC.UserCredentials result = new org.xtreemfs.foundation.pbrpc.generatedinterfaces.RPC.UserCredentials(this); + int from_bitField0_ = bitField0_; + int to_bitField0_ = 0; + if (((from_bitField0_ & 0x00000001) == 0x00000001)) { + to_bitField0_ |= 0x00000001; + } + result.username_ = username_; + if (((bitField0_ & 0x00000002) == 0x00000002)) { + groups_ = new com.google.protobuf.UnmodifiableLazyStringList( + groups_); + bitField0_ = (bitField0_ & ~0x00000002); + } + result.groups_ = groups_; + result.bitField0_ = to_bitField0_; + onBuilt(); + return result; } - + public Builder mergeFrom(com.google.protobuf.Message other) { if (other instanceof org.xtreemfs.foundation.pbrpc.generatedinterfaces.RPC.UserCredentials) { return mergeFrom((org.xtreemfs.foundation.pbrpc.generatedinterfaces.RPC.UserCredentials)other); @@ -559,336 +1144,648 @@ public final class RPC { return this; } } - + public Builder mergeFrom(org.xtreemfs.foundation.pbrpc.generatedinterfaces.RPC.UserCredentials other) { if (other == org.xtreemfs.foundation.pbrpc.generatedinterfaces.RPC.UserCredentials.getDefaultInstance()) return this; if (other.hasUsername()) { - setUsername(other.getUsername()); + bitField0_ |= 0x00000001; + username_ = other.username_; + onChanged(); } if (!other.groups_.isEmpty()) { - if (result.groups_.isEmpty()) { - result.groups_ = new java.util.ArrayList(); + if (groups_.isEmpty()) { + groups_ = other.groups_; + bitField0_ = (bitField0_ & ~0x00000002); + } else { + ensureGroupsIsMutable(); + groups_.addAll(other.groups_); } - result.groups_.addAll(other.groups_); + onChanged(); } this.mergeUnknownFields(other.getUnknownFields()); return this; } - + + public final boolean isInitialized() { + if (!hasUsername()) { + + return false; + } + return true; + } + public Builder mergeFrom( com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - com.google.protobuf.UnknownFieldSet.Builder unknownFields = - com.google.protobuf.UnknownFieldSet.newBuilder( - this.getUnknownFields()); - while (true) { - int tag = input.readTag(); - switch (tag) { - case 0: - this.setUnknownFields(unknownFields.build()); - return this; - default: { - if (!parseUnknownField(input, unknownFields, - extensionRegistry, tag)) { - this.setUnknownFields(unknownFields.build()); - return this; - } - break; - } - case 10: { - setUsername(input.readString()); - break; - } - case 18: { - addGroups(input.readString()); - break; - } + org.xtreemfs.foundation.pbrpc.generatedinterfaces.RPC.UserCredentials parsedMessage = null; + try { + parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + parsedMessage = (org.xtreemfs.foundation.pbrpc.generatedinterfaces.RPC.UserCredentials) e.getUnfinishedMessage(); + throw e; + } finally { + if (parsedMessage != null) { + mergeFrom(parsedMessage); } } + return this; } - - + private int bitField0_; + // required string username = 1; + private java.lang.Object username_ = ""; + /** + * required string username = 1; + * + *
+       * Globally unique user ID (GUID).
+       * 
+ */ public boolean hasUsername() { - return result.hasUsername(); - } + return ((bitField0_ & 0x00000001) == 0x00000001); + } + /** + * required string username = 1; + * + *
+       * Globally unique user ID (GUID).
+       * 
+ */ public java.lang.String getUsername() { - return result.getUsername(); - } - public Builder setUsername(java.lang.String value) { + java.lang.Object ref = username_; + if (!(ref instanceof java.lang.String)) { + java.lang.String s = ((com.google.protobuf.ByteString) ref) + .toStringUtf8(); + username_ = s; + return s; + } else { + return (java.lang.String) ref; + } + } + /** + * required string username = 1; + * + *
+       * Globally unique user ID (GUID).
+       * 
+ */ + public com.google.protobuf.ByteString + getUsernameBytes() { + java.lang.Object ref = username_; + if (ref instanceof String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + username_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + /** + * required string username = 1; + * + *
+       * Globally unique user ID (GUID).
+       * 
+ */ + public Builder setUsername( + java.lang.String value) { if (value == null) { throw new NullPointerException(); } - result.hasUsername = true; - result.username_ = value; + bitField0_ |= 0x00000001; + username_ = value; + onChanged(); return this; } + /** + * required string username = 1; + * + *
+       * Globally unique user ID (GUID).
+       * 
+ */ public Builder clearUsername() { - result.hasUsername = false; - result.username_ = getDefaultInstance().getUsername(); + bitField0_ = (bitField0_ & ~0x00000001); + username_ = getDefaultInstance().getUsername(); + onChanged(); return this; } - - // repeated string groups = 2; - public java.util.List getGroupsList() { - return java.util.Collections.unmodifiableList(result.groups_); + /** + * required string username = 1; + * + *
+       * Globally unique user ID (GUID).
+       * 
+ */ + public Builder setUsernameBytes( + com.google.protobuf.ByteString value) { + if (value == null) { + throw new NullPointerException(); + } + bitField0_ |= 0x00000001; + username_ = value; + onChanged(); + return this; } + + // repeated string groups = 2; + private com.google.protobuf.LazyStringList groups_ = com.google.protobuf.LazyStringArrayList.EMPTY; + private void ensureGroupsIsMutable() { + if (!((bitField0_ & 0x00000002) == 0x00000002)) { + groups_ = new com.google.protobuf.LazyStringArrayList(groups_); + bitField0_ |= 0x00000002; + } + } + /** + * repeated string groups = 2; + * + *
+       * List of one or more globally unique group IDs (GGID).
+       * 
+ */ + public java.util.List + getGroupsList() { + return java.util.Collections.unmodifiableList(groups_); + } + /** + * repeated string groups = 2; + * + *
+       * List of one or more globally unique group IDs (GGID).
+       * 
+ */ public int getGroupsCount() { - return result.getGroupsCount(); - } + return groups_.size(); + } + /** + * repeated string groups = 2; + * + *
+       * List of one or more globally unique group IDs (GGID).
+       * 
+ */ public java.lang.String getGroups(int index) { - return result.getGroups(index); - } - public Builder setGroups(int index, java.lang.String value) { + return groups_.get(index); + } + /** + * repeated string groups = 2; + * + *
+       * List of one or more globally unique group IDs (GGID).
+       * 
+ */ + public com.google.protobuf.ByteString + getGroupsBytes(int index) { + return groups_.getByteString(index); + } + /** + * repeated string groups = 2; + * + *
+       * List of one or more globally unique group IDs (GGID).
+       * 
+ */ + public Builder setGroups( + int index, java.lang.String value) { if (value == null) { throw new NullPointerException(); } - result.groups_.set(index, value); + ensureGroupsIsMutable(); + groups_.set(index, value); + onChanged(); return this; } - public Builder addGroups(java.lang.String value) { + /** + * repeated string groups = 2; + * + *
+       * List of one or more globally unique group IDs (GGID).
+       * 
+ */ + public Builder addGroups( + java.lang.String value) { if (value == null) { throw new NullPointerException(); } - if (result.groups_.isEmpty()) { - result.groups_ = new java.util.ArrayList(); - } - result.groups_.add(value); + ensureGroupsIsMutable(); + groups_.add(value); + onChanged(); return this; } + /** + * repeated string groups = 2; + * + *
+       * List of one or more globally unique group IDs (GGID).
+       * 
+ */ public Builder addAllGroups( - java.lang.Iterable values) { - if (result.groups_.isEmpty()) { - result.groups_ = new java.util.ArrayList(); - } - super.addAll(values, result.groups_); + java.lang.Iterable values) { + ensureGroupsIsMutable(); + super.addAll(values, groups_); + onChanged(); return this; } + /** + * repeated string groups = 2; + * + *
+       * List of one or more globally unique group IDs (GGID).
+       * 
+ */ public Builder clearGroups() { - result.groups_ = java.util.Collections.emptyList(); + groups_ = com.google.protobuf.LazyStringArrayList.EMPTY; + bitField0_ = (bitField0_ & ~0x00000002); + onChanged(); + return this; + } + /** + * repeated string groups = 2; + * + *
+       * List of one or more globally unique group IDs (GGID).
+       * 
+ */ + public Builder addGroupsBytes( + com.google.protobuf.ByteString value) { + if (value == null) { + throw new NullPointerException(); + } + ensureGroupsIsMutable(); + groups_.add(value); + onChanged(); return this; } - + // @@protoc_insertion_point(builder_scope:xtreemfs.pbrpc.UserCredentials) } - + static { defaultInstance = new UserCredentials(true); - org.xtreemfs.foundation.pbrpc.generatedinterfaces.RPC.internalForceInit(); defaultInstance.initFields(); } - + // @@protoc_insertion_point(class_scope:xtreemfs.pbrpc.UserCredentials) } - + + public interface AuthPasswordOrBuilder + extends com.google.protobuf.MessageOrBuilder { + + // required string password = 1; + /** + * required string password = 1; + */ + boolean hasPassword(); + /** + * required string password = 1; + */ + java.lang.String getPassword(); + /** + * required string password = 1; + */ + com.google.protobuf.ByteString + getPasswordBytes(); + } + /** + * Protobuf type {@code xtreemfs.pbrpc.AuthPassword} + * + *
+   * Admin password if AuthType AUTH_PASSWORD.
+   * 
+ */ public static final class AuthPassword extends - com.google.protobuf.GeneratedMessage { + com.google.protobuf.GeneratedMessage + implements AuthPasswordOrBuilder { // Use AuthPassword.newBuilder() to construct. - private AuthPassword() { - initFields(); + private AuthPassword(com.google.protobuf.GeneratedMessage.Builder builder) { + super(builder); + this.unknownFields = builder.getUnknownFields(); } - private AuthPassword(boolean noInit) {} - + private AuthPassword(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); } + private static final AuthPassword defaultInstance; public static AuthPassword getDefaultInstance() { return defaultInstance; } - + public AuthPassword getDefaultInstanceForType() { return defaultInstance; } - + + private final com.google.protobuf.UnknownFieldSet unknownFields; + @java.lang.Override + public final com.google.protobuf.UnknownFieldSet + getUnknownFields() { + return this.unknownFields; + } + private AuthPassword( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + initFields(); + int mutable_bitField0_ = 0; + com.google.protobuf.UnknownFieldSet.Builder unknownFields = + com.google.protobuf.UnknownFieldSet.newBuilder(); + try { + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch (tag) { + case 0: + done = true; + break; + default: { + if (!parseUnknownField(input, unknownFields, + extensionRegistry, tag)) { + done = true; + } + break; + } + case 10: { + bitField0_ |= 0x00000001; + password_ = input.readBytes(); + break; + } + } + } + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(this); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException( + e.getMessage()).setUnfinishedMessage(this); + } finally { + this.unknownFields = unknownFields.build(); + makeExtensionsImmutable(); + } + } public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { return org.xtreemfs.foundation.pbrpc.generatedinterfaces.RPC.internal_static_xtreemfs_pbrpc_AuthPassword_descriptor; } - + protected com.google.protobuf.GeneratedMessage.FieldAccessorTable internalGetFieldAccessorTable() { - return org.xtreemfs.foundation.pbrpc.generatedinterfaces.RPC.internal_static_xtreemfs_pbrpc_AuthPassword_fieldAccessorTable; - } - - // required string password = 1; - public static final int PASSWORD_FIELD_NUMBER = 1; - private boolean hasPassword; - private java.lang.String password_ = ""; - public boolean hasPassword() { return hasPassword; } - public java.lang.String getPassword() { return password_; } - - private void initFields() { - } - public final boolean isInitialized() { - if (!hasPassword) return false; - return true; + return org.xtreemfs.foundation.pbrpc.generatedinterfaces.RPC.internal_static_xtreemfs_pbrpc_AuthPassword_fieldAccessorTable + .ensureFieldAccessorsInitialized( + org.xtreemfs.foundation.pbrpc.generatedinterfaces.RPC.AuthPassword.class, org.xtreemfs.foundation.pbrpc.generatedinterfaces.RPC.AuthPassword.Builder.class); } - + + public static com.google.protobuf.Parser PARSER = + new com.google.protobuf.AbstractParser() { + public AuthPassword parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return new AuthPassword(input, extensionRegistry); + } + }; + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; + } + + private int bitField0_; + // required string password = 1; + public static final int PASSWORD_FIELD_NUMBER = 1; + private java.lang.Object password_; + /** + * required string password = 1; + */ + public boolean hasPassword() { + return ((bitField0_ & 0x00000001) == 0x00000001); + } + /** + * required string password = 1; + */ + public java.lang.String getPassword() { + java.lang.Object ref = password_; + if (ref instanceof java.lang.String) { + return (java.lang.String) ref; + } else { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + if (bs.isValidUtf8()) { + password_ = s; + } + return s; + } + } + /** + * required string password = 1; + */ + public com.google.protobuf.ByteString + getPasswordBytes() { + java.lang.Object ref = password_; + if (ref instanceof java.lang.String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + password_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + + private void initFields() { + password_ = ""; + } + private byte memoizedIsInitialized = -1; + public final boolean isInitialized() { + byte isInitialized = memoizedIsInitialized; + if (isInitialized != -1) return isInitialized == 1; + + if (!hasPassword()) { + memoizedIsInitialized = 0; + return false; + } + memoizedIsInitialized = 1; + return true; + } + public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException { getSerializedSize(); - if (hasPassword()) { - output.writeString(1, getPassword()); + if (((bitField0_ & 0x00000001) == 0x00000001)) { + output.writeBytes(1, getPasswordBytes()); } getUnknownFields().writeTo(output); } - + private int memoizedSerializedSize = -1; public int getSerializedSize() { int size = memoizedSerializedSize; if (size != -1) return size; - + size = 0; - if (hasPassword()) { + if (((bitField0_ & 0x00000001) == 0x00000001)) { size += com.google.protobuf.CodedOutputStream - .computeStringSize(1, getPassword()); + .computeBytesSize(1, getPasswordBytes()); } size += getUnknownFields().getSerializedSize(); memoizedSerializedSize = size; return size; } - + + private static final long serialVersionUID = 0L; + @java.lang.Override + protected java.lang.Object writeReplace() + throws java.io.ObjectStreamException { + return super.writeReplace(); + } + public static org.xtreemfs.foundation.pbrpc.generatedinterfaces.RPC.AuthPassword parseFrom( com.google.protobuf.ByteString data) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data).buildParsed(); + return PARSER.parseFrom(data); } public static org.xtreemfs.foundation.pbrpc.generatedinterfaces.RPC.AuthPassword parseFrom( com.google.protobuf.ByteString data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(data, extensionRegistry); } public static org.xtreemfs.foundation.pbrpc.generatedinterfaces.RPC.AuthPassword parseFrom(byte[] data) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data).buildParsed(); + return PARSER.parseFrom(data); } public static org.xtreemfs.foundation.pbrpc.generatedinterfaces.RPC.AuthPassword parseFrom( byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(data, extensionRegistry); } public static org.xtreemfs.foundation.pbrpc.generatedinterfaces.RPC.AuthPassword parseFrom(java.io.InputStream input) throws java.io.IOException { - return newBuilder().mergeFrom(input).buildParsed(); + return PARSER.parseFrom(input); } public static org.xtreemfs.foundation.pbrpc.generatedinterfaces.RPC.AuthPassword parseFrom( java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - return newBuilder().mergeFrom(input, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(input, extensionRegistry); } public static org.xtreemfs.foundation.pbrpc.generatedinterfaces.RPC.AuthPassword parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException { - Builder builder = newBuilder(); - if (builder.mergeDelimitedFrom(input)) { - return builder.buildParsed(); - } else { - return null; - } + return PARSER.parseDelimitedFrom(input); } public static org.xtreemfs.foundation.pbrpc.generatedinterfaces.RPC.AuthPassword parseDelimitedFrom( java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - Builder builder = newBuilder(); - if (builder.mergeDelimitedFrom(input, extensionRegistry)) { - return builder.buildParsed(); - } else { - return null; - } + return PARSER.parseDelimitedFrom(input, extensionRegistry); } public static org.xtreemfs.foundation.pbrpc.generatedinterfaces.RPC.AuthPassword parseFrom( com.google.protobuf.CodedInputStream input) throws java.io.IOException { - return newBuilder().mergeFrom(input).buildParsed(); + return PARSER.parseFrom(input); } public static org.xtreemfs.foundation.pbrpc.generatedinterfaces.RPC.AuthPassword parseFrom( com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - return newBuilder().mergeFrom(input, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(input, extensionRegistry); } - + public static Builder newBuilder() { return Builder.create(); } public Builder newBuilderForType() { return newBuilder(); } public static Builder newBuilder(org.xtreemfs.foundation.pbrpc.generatedinterfaces.RPC.AuthPassword prototype) { return newBuilder().mergeFrom(prototype); } public Builder toBuilder() { return newBuilder(this); } - + + @java.lang.Override + protected Builder newBuilderForType( + com.google.protobuf.GeneratedMessage.BuilderParent parent) { + Builder builder = new Builder(parent); + return builder; + } + /** + * Protobuf type {@code xtreemfs.pbrpc.AuthPassword} + * + *
+     * Admin password if AuthType AUTH_PASSWORD.
+     * 
+ */ public static final class Builder extends - com.google.protobuf.GeneratedMessage.Builder { - private org.xtreemfs.foundation.pbrpc.generatedinterfaces.RPC.AuthPassword result; - + com.google.protobuf.GeneratedMessage.Builder + implements org.xtreemfs.foundation.pbrpc.generatedinterfaces.RPC.AuthPasswordOrBuilder { + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return org.xtreemfs.foundation.pbrpc.generatedinterfaces.RPC.internal_static_xtreemfs_pbrpc_AuthPassword_descriptor; + } + + protected com.google.protobuf.GeneratedMessage.FieldAccessorTable + internalGetFieldAccessorTable() { + return org.xtreemfs.foundation.pbrpc.generatedinterfaces.RPC.internal_static_xtreemfs_pbrpc_AuthPassword_fieldAccessorTable + .ensureFieldAccessorsInitialized( + org.xtreemfs.foundation.pbrpc.generatedinterfaces.RPC.AuthPassword.class, org.xtreemfs.foundation.pbrpc.generatedinterfaces.RPC.AuthPassword.Builder.class); + } + // Construct using org.xtreemfs.foundation.pbrpc.generatedinterfaces.RPC.AuthPassword.newBuilder() - private Builder() {} - - private static Builder create() { - Builder builder = new Builder(); - builder.result = new org.xtreemfs.foundation.pbrpc.generatedinterfaces.RPC.AuthPassword(); - return builder; + private Builder() { + maybeForceBuilderInitialization(); } - - protected org.xtreemfs.foundation.pbrpc.generatedinterfaces.RPC.AuthPassword internalGetResult() { - return result; + + private Builder( + com.google.protobuf.GeneratedMessage.BuilderParent parent) { + super(parent); + maybeForceBuilderInitialization(); } - - public Builder clear() { - if (result == null) { - throw new IllegalStateException( - "Cannot call clear() after build()."); + private void maybeForceBuilderInitialization() { + if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) { } - result = new org.xtreemfs.foundation.pbrpc.generatedinterfaces.RPC.AuthPassword(); + } + private static Builder create() { + return new Builder(); + } + + public Builder clear() { + super.clear(); + password_ = ""; + bitField0_ = (bitField0_ & ~0x00000001); return this; } - + public Builder clone() { - return create().mergeFrom(result); + return create().mergeFrom(buildPartial()); } - + public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() { - return org.xtreemfs.foundation.pbrpc.generatedinterfaces.RPC.AuthPassword.getDescriptor(); + return org.xtreemfs.foundation.pbrpc.generatedinterfaces.RPC.internal_static_xtreemfs_pbrpc_AuthPassword_descriptor; } - + public org.xtreemfs.foundation.pbrpc.generatedinterfaces.RPC.AuthPassword getDefaultInstanceForType() { return org.xtreemfs.foundation.pbrpc.generatedinterfaces.RPC.AuthPassword.getDefaultInstance(); } - - public boolean isInitialized() { - return result.isInitialized(); - } + public org.xtreemfs.foundation.pbrpc.generatedinterfaces.RPC.AuthPassword build() { - if (result != null && !isInitialized()) { + org.xtreemfs.foundation.pbrpc.generatedinterfaces.RPC.AuthPassword result = buildPartial(); + if (!result.isInitialized()) { throw newUninitializedMessageException(result); } - return buildPartial(); - } - - private org.xtreemfs.foundation.pbrpc.generatedinterfaces.RPC.AuthPassword buildParsed() - throws com.google.protobuf.InvalidProtocolBufferException { - if (!isInitialized()) { - throw newUninitializedMessageException( - result).asInvalidProtocolBufferException(); - } - return buildPartial(); + return result; } - + public org.xtreemfs.foundation.pbrpc.generatedinterfaces.RPC.AuthPassword buildPartial() { - if (result == null) { - throw new IllegalStateException( - "build() has already been called on this Builder."); - } - org.xtreemfs.foundation.pbrpc.generatedinterfaces.RPC.AuthPassword returnMe = result; - result = null; - return returnMe; + org.xtreemfs.foundation.pbrpc.generatedinterfaces.RPC.AuthPassword result = new org.xtreemfs.foundation.pbrpc.generatedinterfaces.RPC.AuthPassword(this); + int from_bitField0_ = bitField0_; + int to_bitField0_ = 0; + if (((from_bitField0_ & 0x00000001) == 0x00000001)) { + to_bitField0_ |= 0x00000001; + } + result.password_ = password_; + result.bitField0_ = to_bitField0_; + onBuilt(); + return result; } - + public Builder mergeFrom(com.google.protobuf.Message other) { if (other instanceof org.xtreemfs.foundation.pbrpc.generatedinterfaces.RPC.AuthPassword) { return mergeFrom((org.xtreemfs.foundation.pbrpc.generatedinterfaces.RPC.AuthPassword)other); @@ -897,319 +1794,622 @@ public final class RPC { return this; } } - + public Builder mergeFrom(org.xtreemfs.foundation.pbrpc.generatedinterfaces.RPC.AuthPassword other) { if (other == org.xtreemfs.foundation.pbrpc.generatedinterfaces.RPC.AuthPassword.getDefaultInstance()) return this; if (other.hasPassword()) { - setPassword(other.getPassword()); + bitField0_ |= 0x00000001; + password_ = other.password_; + onChanged(); } this.mergeUnknownFields(other.getUnknownFields()); return this; } - + + public final boolean isInitialized() { + if (!hasPassword()) { + + return false; + } + return true; + } + public Builder mergeFrom( com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - com.google.protobuf.UnknownFieldSet.Builder unknownFields = - com.google.protobuf.UnknownFieldSet.newBuilder( - this.getUnknownFields()); - while (true) { - int tag = input.readTag(); - switch (tag) { - case 0: - this.setUnknownFields(unknownFields.build()); - return this; - default: { - if (!parseUnknownField(input, unknownFields, - extensionRegistry, tag)) { - this.setUnknownFields(unknownFields.build()); - return this; - } - break; - } - case 10: { - setPassword(input.readString()); - break; - } + org.xtreemfs.foundation.pbrpc.generatedinterfaces.RPC.AuthPassword parsedMessage = null; + try { + parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + parsedMessage = (org.xtreemfs.foundation.pbrpc.generatedinterfaces.RPC.AuthPassword) e.getUnfinishedMessage(); + throw e; + } finally { + if (parsedMessage != null) { + mergeFrom(parsedMessage); } } + return this; } - - + private int bitField0_; + // required string password = 1; + private java.lang.Object password_ = ""; + /** + * required string password = 1; + */ public boolean hasPassword() { - return result.hasPassword(); + return ((bitField0_ & 0x00000001) == 0x00000001); } + /** + * required string password = 1; + */ public java.lang.String getPassword() { - return result.getPassword(); + java.lang.Object ref = password_; + if (!(ref instanceof java.lang.String)) { + java.lang.String s = ((com.google.protobuf.ByteString) ref) + .toStringUtf8(); + password_ = s; + return s; + } else { + return (java.lang.String) ref; + } + } + /** + * required string password = 1; + */ + public com.google.protobuf.ByteString + getPasswordBytes() { + java.lang.Object ref = password_; + if (ref instanceof String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + password_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } } - public Builder setPassword(java.lang.String value) { + /** + * required string password = 1; + */ + public Builder setPassword( + java.lang.String value) { if (value == null) { throw new NullPointerException(); } - result.hasPassword = true; - result.password_ = value; + bitField0_ |= 0x00000001; + password_ = value; + onChanged(); return this; } + /** + * required string password = 1; + */ public Builder clearPassword() { - result.hasPassword = false; - result.password_ = getDefaultInstance().getPassword(); + bitField0_ = (bitField0_ & ~0x00000001); + password_ = getDefaultInstance().getPassword(); + onChanged(); return this; } - + /** + * required string password = 1; + */ + public Builder setPasswordBytes( + com.google.protobuf.ByteString value) { + if (value == null) { + throw new NullPointerException(); + } + bitField0_ |= 0x00000001; + password_ = value; + onChanged(); + return this; + } + // @@protoc_insertion_point(builder_scope:xtreemfs.pbrpc.AuthPassword) } - + static { defaultInstance = new AuthPassword(true); - org.xtreemfs.foundation.pbrpc.generatedinterfaces.RPC.internalForceInit(); defaultInstance.initFields(); } - + // @@protoc_insertion_point(class_scope:xtreemfs.pbrpc.AuthPassword) } - + + public interface AuthOrBuilder + extends com.google.protobuf.MessageOrBuilder { + + // required .xtreemfs.pbrpc.AuthType auth_type = 1; + /** + * required .xtreemfs.pbrpc.AuthType auth_type = 1; + * + *
+     * Selected authentication type.
+     * 
+ */ + boolean hasAuthType(); + /** + * required .xtreemfs.pbrpc.AuthType auth_type = 1; + * + *
+     * Selected authentication type.
+     * 
+ */ + org.xtreemfs.foundation.pbrpc.generatedinterfaces.RPC.AuthType getAuthType(); + + // optional .xtreemfs.pbrpc.AuthPassword auth_passwd = 3; + /** + * optional .xtreemfs.pbrpc.AuthPassword auth_passwd = 3; + * + *
+     * Optional data, depends on auth_type selected.
+     * 
+ */ + boolean hasAuthPasswd(); + /** + * optional .xtreemfs.pbrpc.AuthPassword auth_passwd = 3; + * + *
+     * Optional data, depends on auth_type selected.
+     * 
+ */ + org.xtreemfs.foundation.pbrpc.generatedinterfaces.RPC.AuthPassword getAuthPasswd(); + /** + * optional .xtreemfs.pbrpc.AuthPassword auth_passwd = 3; + * + *
+     * Optional data, depends on auth_type selected.
+     * 
+ */ + org.xtreemfs.foundation.pbrpc.generatedinterfaces.RPC.AuthPasswordOrBuilder getAuthPasswdOrBuilder(); + + // optional bytes auth_data = 2; + /** + * optional bytes auth_data = 2; + */ + boolean hasAuthData(); + /** + * optional bytes auth_data = 2; + */ + com.google.protobuf.ByteString getAuthData(); + } + /** + * Protobuf type {@code xtreemfs.pbrpc.Auth} + * + *
+   * RPC Authentication information.
+   * 
+ */ public static final class Auth extends - com.google.protobuf.GeneratedMessage { + com.google.protobuf.GeneratedMessage + implements AuthOrBuilder { // Use Auth.newBuilder() to construct. - private Auth() { - initFields(); + private Auth(com.google.protobuf.GeneratedMessage.Builder builder) { + super(builder); + this.unknownFields = builder.getUnknownFields(); } - private Auth(boolean noInit) {} - + private Auth(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); } + private static final Auth defaultInstance; public static Auth getDefaultInstance() { return defaultInstance; } - + public Auth getDefaultInstanceForType() { return defaultInstance; } - + + private final com.google.protobuf.UnknownFieldSet unknownFields; + @java.lang.Override + public final com.google.protobuf.UnknownFieldSet + getUnknownFields() { + return this.unknownFields; + } + private Auth( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + initFields(); + int mutable_bitField0_ = 0; + com.google.protobuf.UnknownFieldSet.Builder unknownFields = + com.google.protobuf.UnknownFieldSet.newBuilder(); + try { + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch (tag) { + case 0: + done = true; + break; + default: { + if (!parseUnknownField(input, unknownFields, + extensionRegistry, tag)) { + done = true; + } + break; + } + case 8: { + int rawValue = input.readEnum(); + org.xtreemfs.foundation.pbrpc.generatedinterfaces.RPC.AuthType value = org.xtreemfs.foundation.pbrpc.generatedinterfaces.RPC.AuthType.valueOf(rawValue); + if (value == null) { + unknownFields.mergeVarintField(1, rawValue); + } else { + bitField0_ |= 0x00000001; + authType_ = value; + } + break; + } + case 18: { + bitField0_ |= 0x00000004; + authData_ = input.readBytes(); + break; + } + case 26: { + org.xtreemfs.foundation.pbrpc.generatedinterfaces.RPC.AuthPassword.Builder subBuilder = null; + if (((bitField0_ & 0x00000002) == 0x00000002)) { + subBuilder = authPasswd_.toBuilder(); + } + authPasswd_ = input.readMessage(org.xtreemfs.foundation.pbrpc.generatedinterfaces.RPC.AuthPassword.PARSER, extensionRegistry); + if (subBuilder != null) { + subBuilder.mergeFrom(authPasswd_); + authPasswd_ = subBuilder.buildPartial(); + } + bitField0_ |= 0x00000002; + break; + } + } + } + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(this); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException( + e.getMessage()).setUnfinishedMessage(this); + } finally { + this.unknownFields = unknownFields.build(); + makeExtensionsImmutable(); + } + } public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { return org.xtreemfs.foundation.pbrpc.generatedinterfaces.RPC.internal_static_xtreemfs_pbrpc_Auth_descriptor; } - + protected com.google.protobuf.GeneratedMessage.FieldAccessorTable internalGetFieldAccessorTable() { - return org.xtreemfs.foundation.pbrpc.generatedinterfaces.RPC.internal_static_xtreemfs_pbrpc_Auth_fieldAccessorTable; + return org.xtreemfs.foundation.pbrpc.generatedinterfaces.RPC.internal_static_xtreemfs_pbrpc_Auth_fieldAccessorTable + .ensureFieldAccessorsInitialized( + org.xtreemfs.foundation.pbrpc.generatedinterfaces.RPC.Auth.class, org.xtreemfs.foundation.pbrpc.generatedinterfaces.RPC.Auth.Builder.class); + } + + public static com.google.protobuf.Parser PARSER = + new com.google.protobuf.AbstractParser() { + public Auth parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return new Auth(input, extensionRegistry); + } + }; + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; } - + + private int bitField0_; // required .xtreemfs.pbrpc.AuthType auth_type = 1; public static final int AUTH_TYPE_FIELD_NUMBER = 1; - private boolean hasAuthType; private org.xtreemfs.foundation.pbrpc.generatedinterfaces.RPC.AuthType authType_; - public boolean hasAuthType() { return hasAuthType; } - public org.xtreemfs.foundation.pbrpc.generatedinterfaces.RPC.AuthType getAuthType() { return authType_; } - + /** + * required .xtreemfs.pbrpc.AuthType auth_type = 1; + * + *
+     * Selected authentication type.
+     * 
+ */ + public boolean hasAuthType() { + return ((bitField0_ & 0x00000001) == 0x00000001); + } + /** + * required .xtreemfs.pbrpc.AuthType auth_type = 1; + * + *
+     * Selected authentication type.
+     * 
+ */ + public org.xtreemfs.foundation.pbrpc.generatedinterfaces.RPC.AuthType getAuthType() { + return authType_; + } + // optional .xtreemfs.pbrpc.AuthPassword auth_passwd = 3; public static final int AUTH_PASSWD_FIELD_NUMBER = 3; - private boolean hasAuthPasswd; private org.xtreemfs.foundation.pbrpc.generatedinterfaces.RPC.AuthPassword authPasswd_; - public boolean hasAuthPasswd() { return hasAuthPasswd; } - public org.xtreemfs.foundation.pbrpc.generatedinterfaces.RPC.AuthPassword getAuthPasswd() { return authPasswd_; } - + /** + * optional .xtreemfs.pbrpc.AuthPassword auth_passwd = 3; + * + *
+     * Optional data, depends on auth_type selected.
+     * 
+ */ + public boolean hasAuthPasswd() { + return ((bitField0_ & 0x00000002) == 0x00000002); + } + /** + * optional .xtreemfs.pbrpc.AuthPassword auth_passwd = 3; + * + *
+     * Optional data, depends on auth_type selected.
+     * 
+ */ + public org.xtreemfs.foundation.pbrpc.generatedinterfaces.RPC.AuthPassword getAuthPasswd() { + return authPasswd_; + } + /** + * optional .xtreemfs.pbrpc.AuthPassword auth_passwd = 3; + * + *
+     * Optional data, depends on auth_type selected.
+     * 
+ */ + public org.xtreemfs.foundation.pbrpc.generatedinterfaces.RPC.AuthPasswordOrBuilder getAuthPasswdOrBuilder() { + return authPasswd_; + } + // optional bytes auth_data = 2; public static final int AUTH_DATA_FIELD_NUMBER = 2; - private boolean hasAuthData; - private com.google.protobuf.ByteString authData_ = com.google.protobuf.ByteString.EMPTY; - public boolean hasAuthData() { return hasAuthData; } - public com.google.protobuf.ByteString getAuthData() { return authData_; } - + private com.google.protobuf.ByteString authData_; + /** + * optional bytes auth_data = 2; + */ + public boolean hasAuthData() { + return ((bitField0_ & 0x00000004) == 0x00000004); + } + /** + * optional bytes auth_data = 2; + */ + public com.google.protobuf.ByteString getAuthData() { + return authData_; + } + private void initFields() { authType_ = org.xtreemfs.foundation.pbrpc.generatedinterfaces.RPC.AuthType.AUTH_NONE; authPasswd_ = org.xtreemfs.foundation.pbrpc.generatedinterfaces.RPC.AuthPassword.getDefaultInstance(); + authData_ = com.google.protobuf.ByteString.EMPTY; } + private byte memoizedIsInitialized = -1; public final boolean isInitialized() { - if (!hasAuthType) return false; + byte isInitialized = memoizedIsInitialized; + if (isInitialized != -1) return isInitialized == 1; + + if (!hasAuthType()) { + memoizedIsInitialized = 0; + return false; + } if (hasAuthPasswd()) { - if (!getAuthPasswd().isInitialized()) return false; + if (!getAuthPasswd().isInitialized()) { + memoizedIsInitialized = 0; + return false; + } } + memoizedIsInitialized = 1; return true; } - + public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException { getSerializedSize(); - if (hasAuthType()) { - output.writeEnum(1, getAuthType().getNumber()); + if (((bitField0_ & 0x00000001) == 0x00000001)) { + output.writeEnum(1, authType_.getNumber()); } - if (hasAuthData()) { - output.writeBytes(2, getAuthData()); + if (((bitField0_ & 0x00000004) == 0x00000004)) { + output.writeBytes(2, authData_); } - if (hasAuthPasswd()) { - output.writeMessage(3, getAuthPasswd()); + if (((bitField0_ & 0x00000002) == 0x00000002)) { + output.writeMessage(3, authPasswd_); } getUnknownFields().writeTo(output); } - + private int memoizedSerializedSize = -1; public int getSerializedSize() { int size = memoizedSerializedSize; if (size != -1) return size; - + size = 0; - if (hasAuthType()) { + if (((bitField0_ & 0x00000001) == 0x00000001)) { size += com.google.protobuf.CodedOutputStream - .computeEnumSize(1, getAuthType().getNumber()); + .computeEnumSize(1, authType_.getNumber()); } - if (hasAuthData()) { + if (((bitField0_ & 0x00000004) == 0x00000004)) { size += com.google.protobuf.CodedOutputStream - .computeBytesSize(2, getAuthData()); + .computeBytesSize(2, authData_); } - if (hasAuthPasswd()) { + if (((bitField0_ & 0x00000002) == 0x00000002)) { size += com.google.protobuf.CodedOutputStream - .computeMessageSize(3, getAuthPasswd()); + .computeMessageSize(3, authPasswd_); } size += getUnknownFields().getSerializedSize(); memoizedSerializedSize = size; return size; } - + + private static final long serialVersionUID = 0L; + @java.lang.Override + protected java.lang.Object writeReplace() + throws java.io.ObjectStreamException { + return super.writeReplace(); + } + public static org.xtreemfs.foundation.pbrpc.generatedinterfaces.RPC.Auth parseFrom( com.google.protobuf.ByteString data) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data).buildParsed(); + return PARSER.parseFrom(data); } public static org.xtreemfs.foundation.pbrpc.generatedinterfaces.RPC.Auth parseFrom( com.google.protobuf.ByteString data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(data, extensionRegistry); } public static org.xtreemfs.foundation.pbrpc.generatedinterfaces.RPC.Auth parseFrom(byte[] data) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data).buildParsed(); + return PARSER.parseFrom(data); } public static org.xtreemfs.foundation.pbrpc.generatedinterfaces.RPC.Auth parseFrom( byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(data, extensionRegistry); } public static org.xtreemfs.foundation.pbrpc.generatedinterfaces.RPC.Auth parseFrom(java.io.InputStream input) throws java.io.IOException { - return newBuilder().mergeFrom(input).buildParsed(); + return PARSER.parseFrom(input); } public static org.xtreemfs.foundation.pbrpc.generatedinterfaces.RPC.Auth parseFrom( java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - return newBuilder().mergeFrom(input, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(input, extensionRegistry); } public static org.xtreemfs.foundation.pbrpc.generatedinterfaces.RPC.Auth parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException { - Builder builder = newBuilder(); - if (builder.mergeDelimitedFrom(input)) { - return builder.buildParsed(); - } else { - return null; - } + return PARSER.parseDelimitedFrom(input); } public static org.xtreemfs.foundation.pbrpc.generatedinterfaces.RPC.Auth parseDelimitedFrom( java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - Builder builder = newBuilder(); - if (builder.mergeDelimitedFrom(input, extensionRegistry)) { - return builder.buildParsed(); - } else { - return null; - } + return PARSER.parseDelimitedFrom(input, extensionRegistry); } public static org.xtreemfs.foundation.pbrpc.generatedinterfaces.RPC.Auth parseFrom( com.google.protobuf.CodedInputStream input) throws java.io.IOException { - return newBuilder().mergeFrom(input).buildParsed(); + return PARSER.parseFrom(input); } public static org.xtreemfs.foundation.pbrpc.generatedinterfaces.RPC.Auth parseFrom( com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - return newBuilder().mergeFrom(input, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(input, extensionRegistry); } - + public static Builder newBuilder() { return Builder.create(); } public Builder newBuilderForType() { return newBuilder(); } public static Builder newBuilder(org.xtreemfs.foundation.pbrpc.generatedinterfaces.RPC.Auth prototype) { return newBuilder().mergeFrom(prototype); } public Builder toBuilder() { return newBuilder(this); } - + + @java.lang.Override + protected Builder newBuilderForType( + com.google.protobuf.GeneratedMessage.BuilderParent parent) { + Builder builder = new Builder(parent); + return builder; + } + /** + * Protobuf type {@code xtreemfs.pbrpc.Auth} + * + *
+     * RPC Authentication information.
+     * 
+ */ public static final class Builder extends - com.google.protobuf.GeneratedMessage.Builder { - private org.xtreemfs.foundation.pbrpc.generatedinterfaces.RPC.Auth result; - + com.google.protobuf.GeneratedMessage.Builder + implements org.xtreemfs.foundation.pbrpc.generatedinterfaces.RPC.AuthOrBuilder { + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return org.xtreemfs.foundation.pbrpc.generatedinterfaces.RPC.internal_static_xtreemfs_pbrpc_Auth_descriptor; + } + + protected com.google.protobuf.GeneratedMessage.FieldAccessorTable + internalGetFieldAccessorTable() { + return org.xtreemfs.foundation.pbrpc.generatedinterfaces.RPC.internal_static_xtreemfs_pbrpc_Auth_fieldAccessorTable + .ensureFieldAccessorsInitialized( + org.xtreemfs.foundation.pbrpc.generatedinterfaces.RPC.Auth.class, org.xtreemfs.foundation.pbrpc.generatedinterfaces.RPC.Auth.Builder.class); + } + // Construct using org.xtreemfs.foundation.pbrpc.generatedinterfaces.RPC.Auth.newBuilder() - private Builder() {} - - private static Builder create() { - Builder builder = new Builder(); - builder.result = new org.xtreemfs.foundation.pbrpc.generatedinterfaces.RPC.Auth(); - return builder; + private Builder() { + maybeForceBuilderInitialization(); } - - protected org.xtreemfs.foundation.pbrpc.generatedinterfaces.RPC.Auth internalGetResult() { - return result; + + private Builder( + com.google.protobuf.GeneratedMessage.BuilderParent parent) { + super(parent); + maybeForceBuilderInitialization(); + } + private void maybeForceBuilderInitialization() { + if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) { + getAuthPasswdFieldBuilder(); + } } - + private static Builder create() { + return new Builder(); + } + public Builder clear() { - if (result == null) { - throw new IllegalStateException( - "Cannot call clear() after build()."); + super.clear(); + authType_ = org.xtreemfs.foundation.pbrpc.generatedinterfaces.RPC.AuthType.AUTH_NONE; + bitField0_ = (bitField0_ & ~0x00000001); + if (authPasswdBuilder_ == null) { + authPasswd_ = org.xtreemfs.foundation.pbrpc.generatedinterfaces.RPC.AuthPassword.getDefaultInstance(); + } else { + authPasswdBuilder_.clear(); } - result = new org.xtreemfs.foundation.pbrpc.generatedinterfaces.RPC.Auth(); + bitField0_ = (bitField0_ & ~0x00000002); + authData_ = com.google.protobuf.ByteString.EMPTY; + bitField0_ = (bitField0_ & ~0x00000004); return this; } - + public Builder clone() { - return create().mergeFrom(result); + return create().mergeFrom(buildPartial()); } - + public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() { - return org.xtreemfs.foundation.pbrpc.generatedinterfaces.RPC.Auth.getDescriptor(); + return org.xtreemfs.foundation.pbrpc.generatedinterfaces.RPC.internal_static_xtreemfs_pbrpc_Auth_descriptor; } - + public org.xtreemfs.foundation.pbrpc.generatedinterfaces.RPC.Auth getDefaultInstanceForType() { return org.xtreemfs.foundation.pbrpc.generatedinterfaces.RPC.Auth.getDefaultInstance(); } - - public boolean isInitialized() { - return result.isInitialized(); - } + public org.xtreemfs.foundation.pbrpc.generatedinterfaces.RPC.Auth build() { - if (result != null && !isInitialized()) { + org.xtreemfs.foundation.pbrpc.generatedinterfaces.RPC.Auth result = buildPartial(); + if (!result.isInitialized()) { throw newUninitializedMessageException(result); } - return buildPartial(); - } - - private org.xtreemfs.foundation.pbrpc.generatedinterfaces.RPC.Auth buildParsed() - throws com.google.protobuf.InvalidProtocolBufferException { - if (!isInitialized()) { - throw newUninitializedMessageException( - result).asInvalidProtocolBufferException(); - } - return buildPartial(); + return result; } - + public org.xtreemfs.foundation.pbrpc.generatedinterfaces.RPC.Auth buildPartial() { - if (result == null) { - throw new IllegalStateException( - "build() has already been called on this Builder."); + org.xtreemfs.foundation.pbrpc.generatedinterfaces.RPC.Auth result = new org.xtreemfs.foundation.pbrpc.generatedinterfaces.RPC.Auth(this); + int from_bitField0_ = bitField0_; + int to_bitField0_ = 0; + if (((from_bitField0_ & 0x00000001) == 0x00000001)) { + to_bitField0_ |= 0x00000001; + } + result.authType_ = authType_; + if (((from_bitField0_ & 0x00000002) == 0x00000002)) { + to_bitField0_ |= 0x00000002; + } + if (authPasswdBuilder_ == null) { + result.authPasswd_ = authPasswd_; + } else { + result.authPasswd_ = authPasswdBuilder_.build(); + } + if (((from_bitField0_ & 0x00000004) == 0x00000004)) { + to_bitField0_ |= 0x00000004; } - org.xtreemfs.foundation.pbrpc.generatedinterfaces.RPC.Auth returnMe = result; - result = null; - return returnMe; + result.authData_ = authData_; + result.bitField0_ = to_bitField0_; + onBuilt(); + return result; } - + public Builder mergeFrom(com.google.protobuf.Message other) { if (other instanceof org.xtreemfs.foundation.pbrpc.generatedinterfaces.RPC.Auth) { return mergeFrom((org.xtreemfs.foundation.pbrpc.generatedinterfaces.RPC.Auth)other); @@ -1218,7 +2418,7 @@ public final class RPC { return this; } } - + public Builder mergeFrom(org.xtreemfs.foundation.pbrpc.generatedinterfaces.RPC.Auth other) { if (other == org.xtreemfs.foundation.pbrpc.generatedinterfaces.RPC.Auth.getDefaultInstance()) return this; if (other.hasAuthType()) { @@ -1233,430 +2433,1137 @@ public final class RPC { this.mergeUnknownFields(other.getUnknownFields()); return this; } - + + public final boolean isInitialized() { + if (!hasAuthType()) { + + return false; + } + if (hasAuthPasswd()) { + if (!getAuthPasswd().isInitialized()) { + + return false; + } + } + return true; + } + public Builder mergeFrom( com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - com.google.protobuf.UnknownFieldSet.Builder unknownFields = - com.google.protobuf.UnknownFieldSet.newBuilder( - this.getUnknownFields()); - while (true) { - int tag = input.readTag(); - switch (tag) { - case 0: - this.setUnknownFields(unknownFields.build()); - return this; - default: { - if (!parseUnknownField(input, unknownFields, - extensionRegistry, tag)) { - this.setUnknownFields(unknownFields.build()); - return this; - } - break; - } - case 8: { - int rawValue = input.readEnum(); - org.xtreemfs.foundation.pbrpc.generatedinterfaces.RPC.AuthType value = org.xtreemfs.foundation.pbrpc.generatedinterfaces.RPC.AuthType.valueOf(rawValue); - if (value == null) { - unknownFields.mergeVarintField(1, rawValue); - } else { - setAuthType(value); - } - break; - } - case 18: { - setAuthData(input.readBytes()); - break; - } - case 26: { - org.xtreemfs.foundation.pbrpc.generatedinterfaces.RPC.AuthPassword.Builder subBuilder = org.xtreemfs.foundation.pbrpc.generatedinterfaces.RPC.AuthPassword.newBuilder(); - if (hasAuthPasswd()) { - subBuilder.mergeFrom(getAuthPasswd()); - } - input.readMessage(subBuilder, extensionRegistry); - setAuthPasswd(subBuilder.buildPartial()); - break; - } + org.xtreemfs.foundation.pbrpc.generatedinterfaces.RPC.Auth parsedMessage = null; + try { + parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + parsedMessage = (org.xtreemfs.foundation.pbrpc.generatedinterfaces.RPC.Auth) e.getUnfinishedMessage(); + throw e; + } finally { + if (parsedMessage != null) { + mergeFrom(parsedMessage); } } + return this; } - - + private int bitField0_; + // required .xtreemfs.pbrpc.AuthType auth_type = 1; + private org.xtreemfs.foundation.pbrpc.generatedinterfaces.RPC.AuthType authType_ = org.xtreemfs.foundation.pbrpc.generatedinterfaces.RPC.AuthType.AUTH_NONE; + /** + * required .xtreemfs.pbrpc.AuthType auth_type = 1; + * + *
+       * Selected authentication type.
+       * 
+ */ public boolean hasAuthType() { - return result.hasAuthType(); - } + return ((bitField0_ & 0x00000001) == 0x00000001); + } + /** + * required .xtreemfs.pbrpc.AuthType auth_type = 1; + * + *
+       * Selected authentication type.
+       * 
+ */ public org.xtreemfs.foundation.pbrpc.generatedinterfaces.RPC.AuthType getAuthType() { - return result.getAuthType(); - } + return authType_; + } + /** + * required .xtreemfs.pbrpc.AuthType auth_type = 1; + * + *
+       * Selected authentication type.
+       * 
+ */ public Builder setAuthType(org.xtreemfs.foundation.pbrpc.generatedinterfaces.RPC.AuthType value) { if (value == null) { throw new NullPointerException(); } - result.hasAuthType = true; - result.authType_ = value; + bitField0_ |= 0x00000001; + authType_ = value; + onChanged(); return this; } + /** + * required .xtreemfs.pbrpc.AuthType auth_type = 1; + * + *
+       * Selected authentication type.
+       * 
+ */ public Builder clearAuthType() { - result.hasAuthType = false; - result.authType_ = org.xtreemfs.foundation.pbrpc.generatedinterfaces.RPC.AuthType.AUTH_NONE; + bitField0_ = (bitField0_ & ~0x00000001); + authType_ = org.xtreemfs.foundation.pbrpc.generatedinterfaces.RPC.AuthType.AUTH_NONE; + onChanged(); return this; } - + // optional .xtreemfs.pbrpc.AuthPassword auth_passwd = 3; + private org.xtreemfs.foundation.pbrpc.generatedinterfaces.RPC.AuthPassword authPasswd_ = org.xtreemfs.foundation.pbrpc.generatedinterfaces.RPC.AuthPassword.getDefaultInstance(); + private com.google.protobuf.SingleFieldBuilder< + org.xtreemfs.foundation.pbrpc.generatedinterfaces.RPC.AuthPassword, org.xtreemfs.foundation.pbrpc.generatedinterfaces.RPC.AuthPassword.Builder, org.xtreemfs.foundation.pbrpc.generatedinterfaces.RPC.AuthPasswordOrBuilder> authPasswdBuilder_; + /** + * optional .xtreemfs.pbrpc.AuthPassword auth_passwd = 3; + * + *
+       * Optional data, depends on auth_type selected.
+       * 
+ */ public boolean hasAuthPasswd() { - return result.hasAuthPasswd(); - } + return ((bitField0_ & 0x00000002) == 0x00000002); + } + /** + * optional .xtreemfs.pbrpc.AuthPassword auth_passwd = 3; + * + *
+       * Optional data, depends on auth_type selected.
+       * 
+ */ public org.xtreemfs.foundation.pbrpc.generatedinterfaces.RPC.AuthPassword getAuthPasswd() { - return result.getAuthPasswd(); + if (authPasswdBuilder_ == null) { + return authPasswd_; + } else { + return authPasswdBuilder_.getMessage(); + } } + /** + * optional .xtreemfs.pbrpc.AuthPassword auth_passwd = 3; + * + *
+       * Optional data, depends on auth_type selected.
+       * 
+ */ public Builder setAuthPasswd(org.xtreemfs.foundation.pbrpc.generatedinterfaces.RPC.AuthPassword value) { - if (value == null) { - throw new NullPointerException(); + if (authPasswdBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + authPasswd_ = value; + onChanged(); + } else { + authPasswdBuilder_.setMessage(value); } - result.hasAuthPasswd = true; - result.authPasswd_ = value; + bitField0_ |= 0x00000002; return this; } - public Builder setAuthPasswd(org.xtreemfs.foundation.pbrpc.generatedinterfaces.RPC.AuthPassword.Builder builderForValue) { - result.hasAuthPasswd = true; - result.authPasswd_ = builderForValue.build(); + /** + * optional .xtreemfs.pbrpc.AuthPassword auth_passwd = 3; + * + *
+       * Optional data, depends on auth_type selected.
+       * 
+ */ + public Builder setAuthPasswd( + org.xtreemfs.foundation.pbrpc.generatedinterfaces.RPC.AuthPassword.Builder builderForValue) { + if (authPasswdBuilder_ == null) { + authPasswd_ = builderForValue.build(); + onChanged(); + } else { + authPasswdBuilder_.setMessage(builderForValue.build()); + } + bitField0_ |= 0x00000002; return this; } + /** + * optional .xtreemfs.pbrpc.AuthPassword auth_passwd = 3; + * + *
+       * Optional data, depends on auth_type selected.
+       * 
+ */ public Builder mergeAuthPasswd(org.xtreemfs.foundation.pbrpc.generatedinterfaces.RPC.AuthPassword value) { - if (result.hasAuthPasswd() && - result.authPasswd_ != org.xtreemfs.foundation.pbrpc.generatedinterfaces.RPC.AuthPassword.getDefaultInstance()) { - result.authPasswd_ = - org.xtreemfs.foundation.pbrpc.generatedinterfaces.RPC.AuthPassword.newBuilder(result.authPasswd_).mergeFrom(value).buildPartial(); + if (authPasswdBuilder_ == null) { + if (((bitField0_ & 0x00000002) == 0x00000002) && + authPasswd_ != org.xtreemfs.foundation.pbrpc.generatedinterfaces.RPC.AuthPassword.getDefaultInstance()) { + authPasswd_ = + org.xtreemfs.foundation.pbrpc.generatedinterfaces.RPC.AuthPassword.newBuilder(authPasswd_).mergeFrom(value).buildPartial(); + } else { + authPasswd_ = value; + } + onChanged(); } else { - result.authPasswd_ = value; + authPasswdBuilder_.mergeFrom(value); } - result.hasAuthPasswd = true; + bitField0_ |= 0x00000002; return this; } + /** + * optional .xtreemfs.pbrpc.AuthPassword auth_passwd = 3; + * + *
+       * Optional data, depends on auth_type selected.
+       * 
+ */ public Builder clearAuthPasswd() { - result.hasAuthPasswd = false; - result.authPasswd_ = org.xtreemfs.foundation.pbrpc.generatedinterfaces.RPC.AuthPassword.getDefaultInstance(); + if (authPasswdBuilder_ == null) { + authPasswd_ = org.xtreemfs.foundation.pbrpc.generatedinterfaces.RPC.AuthPassword.getDefaultInstance(); + onChanged(); + } else { + authPasswdBuilder_.clear(); + } + bitField0_ = (bitField0_ & ~0x00000002); return this; } - + /** + * optional .xtreemfs.pbrpc.AuthPassword auth_passwd = 3; + * + *
+       * Optional data, depends on auth_type selected.
+       * 
+ */ + public org.xtreemfs.foundation.pbrpc.generatedinterfaces.RPC.AuthPassword.Builder getAuthPasswdBuilder() { + bitField0_ |= 0x00000002; + onChanged(); + return getAuthPasswdFieldBuilder().getBuilder(); + } + /** + * optional .xtreemfs.pbrpc.AuthPassword auth_passwd = 3; + * + *
+       * Optional data, depends on auth_type selected.
+       * 
+ */ + public org.xtreemfs.foundation.pbrpc.generatedinterfaces.RPC.AuthPasswordOrBuilder getAuthPasswdOrBuilder() { + if (authPasswdBuilder_ != null) { + return authPasswdBuilder_.getMessageOrBuilder(); + } else { + return authPasswd_; + } + } + /** + * optional .xtreemfs.pbrpc.AuthPassword auth_passwd = 3; + * + *
+       * Optional data, depends on auth_type selected.
+       * 
+ */ + private com.google.protobuf.SingleFieldBuilder< + org.xtreemfs.foundation.pbrpc.generatedinterfaces.RPC.AuthPassword, org.xtreemfs.foundation.pbrpc.generatedinterfaces.RPC.AuthPassword.Builder, org.xtreemfs.foundation.pbrpc.generatedinterfaces.RPC.AuthPasswordOrBuilder> + getAuthPasswdFieldBuilder() { + if (authPasswdBuilder_ == null) { + authPasswdBuilder_ = new com.google.protobuf.SingleFieldBuilder< + org.xtreemfs.foundation.pbrpc.generatedinterfaces.RPC.AuthPassword, org.xtreemfs.foundation.pbrpc.generatedinterfaces.RPC.AuthPassword.Builder, org.xtreemfs.foundation.pbrpc.generatedinterfaces.RPC.AuthPasswordOrBuilder>( + authPasswd_, + getParentForChildren(), + isClean()); + authPasswd_ = null; + } + return authPasswdBuilder_; + } + // optional bytes auth_data = 2; + private com.google.protobuf.ByteString authData_ = com.google.protobuf.ByteString.EMPTY; + /** + * optional bytes auth_data = 2; + */ public boolean hasAuthData() { - return result.hasAuthData(); + return ((bitField0_ & 0x00000004) == 0x00000004); } + /** + * optional bytes auth_data = 2; + */ public com.google.protobuf.ByteString getAuthData() { - return result.getAuthData(); + return authData_; } + /** + * optional bytes auth_data = 2; + */ public Builder setAuthData(com.google.protobuf.ByteString value) { if (value == null) { throw new NullPointerException(); } - result.hasAuthData = true; - result.authData_ = value; + bitField0_ |= 0x00000004; + authData_ = value; + onChanged(); return this; } + /** + * optional bytes auth_data = 2; + */ public Builder clearAuthData() { - result.hasAuthData = false; - result.authData_ = getDefaultInstance().getAuthData(); + bitField0_ = (bitField0_ & ~0x00000004); + authData_ = getDefaultInstance().getAuthData(); + onChanged(); return this; } - + // @@protoc_insertion_point(builder_scope:xtreemfs.pbrpc.Auth) } - + static { defaultInstance = new Auth(true); - org.xtreemfs.foundation.pbrpc.generatedinterfaces.RPC.internalForceInit(); defaultInstance.initFields(); } - + // @@protoc_insertion_point(class_scope:xtreemfs.pbrpc.Auth) } - + + public interface RPCHeaderOrBuilder + extends com.google.protobuf.MessageOrBuilder { + + // required fixed32 call_id = 1; + /** + * required fixed32 call_id = 1; + * + *
+     * A unique id to identify the request. The response sent back by the server will have
+     * the same call_id.
+     * The call_id must be unqiue per TCP connection. In addition, clients should start
+     * with a value based e.g. on time to avoid problems after a client restart.
+     * 
+ */ + boolean hasCallId(); + /** + * required fixed32 call_id = 1; + * + *
+     * A unique id to identify the request. The response sent back by the server will have
+     * the same call_id.
+     * The call_id must be unqiue per TCP connection. In addition, clients should start
+     * with a value based e.g. on time to avoid problems after a client restart.
+     * 
+ */ + int getCallId(); + + // required .xtreemfs.pbrpc.MessageType message_type = 2; + /** + * required .xtreemfs.pbrpc.MessageType message_type = 2; + * + *
+     * Type of this RPC message (Request, Response).
+     * 
+ */ + boolean hasMessageType(); + /** + * required .xtreemfs.pbrpc.MessageType message_type = 2; + * + *
+     * Type of this RPC message (Request, Response).
+     * 
+ */ + org.xtreemfs.foundation.pbrpc.generatedinterfaces.RPC.MessageType getMessageType(); + + // optional .xtreemfs.pbrpc.RPCHeader.RequestHeader request_header = 3; + /** + * optional .xtreemfs.pbrpc.RPCHeader.RequestHeader request_header = 3; + * + *
+     * Optional request_header, required if message_type is RPC_REQUEST.
+     * 
+ */ + boolean hasRequestHeader(); + /** + * optional .xtreemfs.pbrpc.RPCHeader.RequestHeader request_header = 3; + * + *
+     * Optional request_header, required if message_type is RPC_REQUEST.
+     * 
+ */ + org.xtreemfs.foundation.pbrpc.generatedinterfaces.RPC.RPCHeader.RequestHeader getRequestHeader(); + /** + * optional .xtreemfs.pbrpc.RPCHeader.RequestHeader request_header = 3; + * + *
+     * Optional request_header, required if message_type is RPC_REQUEST.
+     * 
+ */ + org.xtreemfs.foundation.pbrpc.generatedinterfaces.RPC.RPCHeader.RequestHeaderOrBuilder getRequestHeaderOrBuilder(); + + // optional .xtreemfs.pbrpc.RPCHeader.ErrorResponse error_response = 4; + /** + * optional .xtreemfs.pbrpc.RPCHeader.ErrorResponse error_response = 4; + * + *
+     * Optional error_response, required if message_type is RPC_ERROR_RESPONSE.
+     * 
+ */ + boolean hasErrorResponse(); + /** + * optional .xtreemfs.pbrpc.RPCHeader.ErrorResponse error_response = 4; + * + *
+     * Optional error_response, required if message_type is RPC_ERROR_RESPONSE.
+     * 
+ */ + org.xtreemfs.foundation.pbrpc.generatedinterfaces.RPC.RPCHeader.ErrorResponse getErrorResponse(); + /** + * optional .xtreemfs.pbrpc.RPCHeader.ErrorResponse error_response = 4; + * + *
+     * Optional error_response, required if message_type is RPC_ERROR_RESPONSE.
+     * 
+ */ + org.xtreemfs.foundation.pbrpc.generatedinterfaces.RPC.RPCHeader.ErrorResponseOrBuilder getErrorResponseOrBuilder(); + } + /** + * Protobuf type {@code xtreemfs.pbrpc.RPCHeader} + * + *
+   * RPC header message sent in the first request fragment.
+   * 
+ */ public static final class RPCHeader extends - com.google.protobuf.GeneratedMessage { + com.google.protobuf.GeneratedMessage + implements RPCHeaderOrBuilder { // Use RPCHeader.newBuilder() to construct. - private RPCHeader() { - initFields(); + private RPCHeader(com.google.protobuf.GeneratedMessage.Builder builder) { + super(builder); + this.unknownFields = builder.getUnknownFields(); } - private RPCHeader(boolean noInit) {} - + private RPCHeader(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); } + private static final RPCHeader defaultInstance; public static RPCHeader getDefaultInstance() { return defaultInstance; } - + public RPCHeader getDefaultInstanceForType() { return defaultInstance; } - + + private final com.google.protobuf.UnknownFieldSet unknownFields; + @java.lang.Override + public final com.google.protobuf.UnknownFieldSet + getUnknownFields() { + return this.unknownFields; + } + private RPCHeader( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + initFields(); + int mutable_bitField0_ = 0; + com.google.protobuf.UnknownFieldSet.Builder unknownFields = + com.google.protobuf.UnknownFieldSet.newBuilder(); + try { + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch (tag) { + case 0: + done = true; + break; + default: { + if (!parseUnknownField(input, unknownFields, + extensionRegistry, tag)) { + done = true; + } + break; + } + case 13: { + bitField0_ |= 0x00000001; + callId_ = input.readFixed32(); + break; + } + case 16: { + int rawValue = input.readEnum(); + org.xtreemfs.foundation.pbrpc.generatedinterfaces.RPC.MessageType value = org.xtreemfs.foundation.pbrpc.generatedinterfaces.RPC.MessageType.valueOf(rawValue); + if (value == null) { + unknownFields.mergeVarintField(2, rawValue); + } else { + bitField0_ |= 0x00000002; + messageType_ = value; + } + break; + } + case 26: { + org.xtreemfs.foundation.pbrpc.generatedinterfaces.RPC.RPCHeader.RequestHeader.Builder subBuilder = null; + if (((bitField0_ & 0x00000004) == 0x00000004)) { + subBuilder = requestHeader_.toBuilder(); + } + requestHeader_ = input.readMessage(org.xtreemfs.foundation.pbrpc.generatedinterfaces.RPC.RPCHeader.RequestHeader.PARSER, extensionRegistry); + if (subBuilder != null) { + subBuilder.mergeFrom(requestHeader_); + requestHeader_ = subBuilder.buildPartial(); + } + bitField0_ |= 0x00000004; + break; + } + case 34: { + org.xtreemfs.foundation.pbrpc.generatedinterfaces.RPC.RPCHeader.ErrorResponse.Builder subBuilder = null; + if (((bitField0_ & 0x00000008) == 0x00000008)) { + subBuilder = errorResponse_.toBuilder(); + } + errorResponse_ = input.readMessage(org.xtreemfs.foundation.pbrpc.generatedinterfaces.RPC.RPCHeader.ErrorResponse.PARSER, extensionRegistry); + if (subBuilder != null) { + subBuilder.mergeFrom(errorResponse_); + errorResponse_ = subBuilder.buildPartial(); + } + bitField0_ |= 0x00000008; + break; + } + } + } + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(this); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException( + e.getMessage()).setUnfinishedMessage(this); + } finally { + this.unknownFields = unknownFields.build(); + makeExtensionsImmutable(); + } + } public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { return org.xtreemfs.foundation.pbrpc.generatedinterfaces.RPC.internal_static_xtreemfs_pbrpc_RPCHeader_descriptor; } - + protected com.google.protobuf.GeneratedMessage.FieldAccessorTable internalGetFieldAccessorTable() { - return org.xtreemfs.foundation.pbrpc.generatedinterfaces.RPC.internal_static_xtreemfs_pbrpc_RPCHeader_fieldAccessorTable; + return org.xtreemfs.foundation.pbrpc.generatedinterfaces.RPC.internal_static_xtreemfs_pbrpc_RPCHeader_fieldAccessorTable + .ensureFieldAccessorsInitialized( + org.xtreemfs.foundation.pbrpc.generatedinterfaces.RPC.RPCHeader.class, org.xtreemfs.foundation.pbrpc.generatedinterfaces.RPC.RPCHeader.Builder.class); + } + + public static com.google.protobuf.Parser PARSER = + new com.google.protobuf.AbstractParser() { + public RPCHeader parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return new RPCHeader(input, extensionRegistry); + } + }; + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; } - + + public interface RequestHeaderOrBuilder + extends com.google.protobuf.MessageOrBuilder { + + // required fixed32 interface_id = 1; + /** + * required fixed32 interface_id = 1; + * + *
+       * Interface id of the requested method.
+       * 
+ */ + boolean hasInterfaceId(); + /** + * required fixed32 interface_id = 1; + * + *
+       * Interface id of the requested method.
+       * 
+ */ + int getInterfaceId(); + + // required fixed32 proc_id = 2; + /** + * required fixed32 proc_id = 2; + * + *
+       * Procedure id of the requested method.
+       * 
+ */ + boolean hasProcId(); + /** + * required fixed32 proc_id = 2; + * + *
+       * Procedure id of the requested method.
+       * 
+ */ + int getProcId(); + + // required .xtreemfs.pbrpc.UserCredentials user_creds = 3; + /** + * required .xtreemfs.pbrpc.UserCredentials user_creds = 3; + * + *
+       * File system user credentials for the operation.
+       * 
+ */ + boolean hasUserCreds(); + /** + * required .xtreemfs.pbrpc.UserCredentials user_creds = 3; + * + *
+       * File system user credentials for the operation.
+       * 
+ */ + org.xtreemfs.foundation.pbrpc.generatedinterfaces.RPC.UserCredentials getUserCreds(); + /** + * required .xtreemfs.pbrpc.UserCredentials user_creds = 3; + * + *
+       * File system user credentials for the operation.
+       * 
+ */ + org.xtreemfs.foundation.pbrpc.generatedinterfaces.RPC.UserCredentialsOrBuilder getUserCredsOrBuilder(); + + // required .xtreemfs.pbrpc.Auth auth_data = 4; + /** + * required .xtreemfs.pbrpc.Auth auth_data = 4; + * + *
+       * Authentication details.
+       * 
+ */ + boolean hasAuthData(); + /** + * required .xtreemfs.pbrpc.Auth auth_data = 4; + * + *
+       * Authentication details.
+       * 
+ */ + org.xtreemfs.foundation.pbrpc.generatedinterfaces.RPC.Auth getAuthData(); + /** + * required .xtreemfs.pbrpc.Auth auth_data = 4; + * + *
+       * Authentication details.
+       * 
+ */ + org.xtreemfs.foundation.pbrpc.generatedinterfaces.RPC.AuthOrBuilder getAuthDataOrBuilder(); + } + /** + * Protobuf type {@code xtreemfs.pbrpc.RPCHeader.RequestHeader} + * + *
+     * Header data for requests, i.e. message_type is RPC_REQUEST.
+     * 
+ */ public static final class RequestHeader extends - com.google.protobuf.GeneratedMessage { + com.google.protobuf.GeneratedMessage + implements RequestHeaderOrBuilder { // Use RequestHeader.newBuilder() to construct. - private RequestHeader() { - initFields(); + private RequestHeader(com.google.protobuf.GeneratedMessage.Builder builder) { + super(builder); + this.unknownFields = builder.getUnknownFields(); } - private RequestHeader(boolean noInit) {} - + private RequestHeader(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); } + private static final RequestHeader defaultInstance; public static RequestHeader getDefaultInstance() { return defaultInstance; } - + public RequestHeader getDefaultInstanceForType() { return defaultInstance; } - + + private final com.google.protobuf.UnknownFieldSet unknownFields; + @java.lang.Override + public final com.google.protobuf.UnknownFieldSet + getUnknownFields() { + return this.unknownFields; + } + private RequestHeader( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + initFields(); + int mutable_bitField0_ = 0; + com.google.protobuf.UnknownFieldSet.Builder unknownFields = + com.google.protobuf.UnknownFieldSet.newBuilder(); + try { + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch (tag) { + case 0: + done = true; + break; + default: { + if (!parseUnknownField(input, unknownFields, + extensionRegistry, tag)) { + done = true; + } + break; + } + case 13: { + bitField0_ |= 0x00000001; + interfaceId_ = input.readFixed32(); + break; + } + case 21: { + bitField0_ |= 0x00000002; + procId_ = input.readFixed32(); + break; + } + case 26: { + org.xtreemfs.foundation.pbrpc.generatedinterfaces.RPC.UserCredentials.Builder subBuilder = null; + if (((bitField0_ & 0x00000004) == 0x00000004)) { + subBuilder = userCreds_.toBuilder(); + } + userCreds_ = input.readMessage(org.xtreemfs.foundation.pbrpc.generatedinterfaces.RPC.UserCredentials.PARSER, extensionRegistry); + if (subBuilder != null) { + subBuilder.mergeFrom(userCreds_); + userCreds_ = subBuilder.buildPartial(); + } + bitField0_ |= 0x00000004; + break; + } + case 34: { + org.xtreemfs.foundation.pbrpc.generatedinterfaces.RPC.Auth.Builder subBuilder = null; + if (((bitField0_ & 0x00000008) == 0x00000008)) { + subBuilder = authData_.toBuilder(); + } + authData_ = input.readMessage(org.xtreemfs.foundation.pbrpc.generatedinterfaces.RPC.Auth.PARSER, extensionRegistry); + if (subBuilder != null) { + subBuilder.mergeFrom(authData_); + authData_ = subBuilder.buildPartial(); + } + bitField0_ |= 0x00000008; + break; + } + } + } + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(this); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException( + e.getMessage()).setUnfinishedMessage(this); + } finally { + this.unknownFields = unknownFields.build(); + makeExtensionsImmutable(); + } + } public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { return org.xtreemfs.foundation.pbrpc.generatedinterfaces.RPC.internal_static_xtreemfs_pbrpc_RPCHeader_RequestHeader_descriptor; } - + protected com.google.protobuf.GeneratedMessage.FieldAccessorTable internalGetFieldAccessorTable() { - return org.xtreemfs.foundation.pbrpc.generatedinterfaces.RPC.internal_static_xtreemfs_pbrpc_RPCHeader_RequestHeader_fieldAccessorTable; + return org.xtreemfs.foundation.pbrpc.generatedinterfaces.RPC.internal_static_xtreemfs_pbrpc_RPCHeader_RequestHeader_fieldAccessorTable + .ensureFieldAccessorsInitialized( + org.xtreemfs.foundation.pbrpc.generatedinterfaces.RPC.RPCHeader.RequestHeader.class, org.xtreemfs.foundation.pbrpc.generatedinterfaces.RPC.RPCHeader.RequestHeader.Builder.class); + } + + public static com.google.protobuf.Parser PARSER = + new com.google.protobuf.AbstractParser() { + public RequestHeader parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return new RequestHeader(input, extensionRegistry); + } + }; + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; } - + + private int bitField0_; // required fixed32 interface_id = 1; public static final int INTERFACE_ID_FIELD_NUMBER = 1; - private boolean hasInterfaceId; - private int interfaceId_ = 0; - public boolean hasInterfaceId() { return hasInterfaceId; } - public int getInterfaceId() { return interfaceId_; } - + private int interfaceId_; + /** + * required fixed32 interface_id = 1; + * + *
+       * Interface id of the requested method.
+       * 
+ */ + public boolean hasInterfaceId() { + return ((bitField0_ & 0x00000001) == 0x00000001); + } + /** + * required fixed32 interface_id = 1; + * + *
+       * Interface id of the requested method.
+       * 
+ */ + public int getInterfaceId() { + return interfaceId_; + } + // required fixed32 proc_id = 2; public static final int PROC_ID_FIELD_NUMBER = 2; - private boolean hasProcId; - private int procId_ = 0; - public boolean hasProcId() { return hasProcId; } - public int getProcId() { return procId_; } - + private int procId_; + /** + * required fixed32 proc_id = 2; + * + *
+       * Procedure id of the requested method.
+       * 
+ */ + public boolean hasProcId() { + return ((bitField0_ & 0x00000002) == 0x00000002); + } + /** + * required fixed32 proc_id = 2; + * + *
+       * Procedure id of the requested method.
+       * 
+ */ + public int getProcId() { + return procId_; + } + // required .xtreemfs.pbrpc.UserCredentials user_creds = 3; public static final int USER_CREDS_FIELD_NUMBER = 3; - private boolean hasUserCreds; private org.xtreemfs.foundation.pbrpc.generatedinterfaces.RPC.UserCredentials userCreds_; - public boolean hasUserCreds() { return hasUserCreds; } - public org.xtreemfs.foundation.pbrpc.generatedinterfaces.RPC.UserCredentials getUserCreds() { return userCreds_; } - + /** + * required .xtreemfs.pbrpc.UserCredentials user_creds = 3; + * + *
+       * File system user credentials for the operation.
+       * 
+ */ + public boolean hasUserCreds() { + return ((bitField0_ & 0x00000004) == 0x00000004); + } + /** + * required .xtreemfs.pbrpc.UserCredentials user_creds = 3; + * + *
+       * File system user credentials for the operation.
+       * 
+ */ + public org.xtreemfs.foundation.pbrpc.generatedinterfaces.RPC.UserCredentials getUserCreds() { + return userCreds_; + } + /** + * required .xtreemfs.pbrpc.UserCredentials user_creds = 3; + * + *
+       * File system user credentials for the operation.
+       * 
+ */ + public org.xtreemfs.foundation.pbrpc.generatedinterfaces.RPC.UserCredentialsOrBuilder getUserCredsOrBuilder() { + return userCreds_; + } + // required .xtreemfs.pbrpc.Auth auth_data = 4; public static final int AUTH_DATA_FIELD_NUMBER = 4; - private boolean hasAuthData; private org.xtreemfs.foundation.pbrpc.generatedinterfaces.RPC.Auth authData_; - public boolean hasAuthData() { return hasAuthData; } - public org.xtreemfs.foundation.pbrpc.generatedinterfaces.RPC.Auth getAuthData() { return authData_; } - + /** + * required .xtreemfs.pbrpc.Auth auth_data = 4; + * + *
+       * Authentication details.
+       * 
+ */ + public boolean hasAuthData() { + return ((bitField0_ & 0x00000008) == 0x00000008); + } + /** + * required .xtreemfs.pbrpc.Auth auth_data = 4; + * + *
+       * Authentication details.
+       * 
+ */ + public org.xtreemfs.foundation.pbrpc.generatedinterfaces.RPC.Auth getAuthData() { + return authData_; + } + /** + * required .xtreemfs.pbrpc.Auth auth_data = 4; + * + *
+       * Authentication details.
+       * 
+ */ + public org.xtreemfs.foundation.pbrpc.generatedinterfaces.RPC.AuthOrBuilder getAuthDataOrBuilder() { + return authData_; + } + private void initFields() { + interfaceId_ = 0; + procId_ = 0; userCreds_ = org.xtreemfs.foundation.pbrpc.generatedinterfaces.RPC.UserCredentials.getDefaultInstance(); authData_ = org.xtreemfs.foundation.pbrpc.generatedinterfaces.RPC.Auth.getDefaultInstance(); } + private byte memoizedIsInitialized = -1; public final boolean isInitialized() { - if (!hasInterfaceId) return false; - if (!hasProcId) return false; - if (!hasUserCreds) return false; - if (!hasAuthData) return false; - if (!getUserCreds().isInitialized()) return false; - if (!getAuthData().isInitialized()) return false; + byte isInitialized = memoizedIsInitialized; + if (isInitialized != -1) return isInitialized == 1; + + if (!hasInterfaceId()) { + memoizedIsInitialized = 0; + return false; + } + if (!hasProcId()) { + memoizedIsInitialized = 0; + return false; + } + if (!hasUserCreds()) { + memoizedIsInitialized = 0; + return false; + } + if (!hasAuthData()) { + memoizedIsInitialized = 0; + return false; + } + if (!getUserCreds().isInitialized()) { + memoizedIsInitialized = 0; + return false; + } + if (!getAuthData().isInitialized()) { + memoizedIsInitialized = 0; + return false; + } + memoizedIsInitialized = 1; return true; } - + public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException { getSerializedSize(); - if (hasInterfaceId()) { - output.writeFixed32(1, getInterfaceId()); + if (((bitField0_ & 0x00000001) == 0x00000001)) { + output.writeFixed32(1, interfaceId_); } - if (hasProcId()) { - output.writeFixed32(2, getProcId()); + if (((bitField0_ & 0x00000002) == 0x00000002)) { + output.writeFixed32(2, procId_); } - if (hasUserCreds()) { - output.writeMessage(3, getUserCreds()); + if (((bitField0_ & 0x00000004) == 0x00000004)) { + output.writeMessage(3, userCreds_); } - if (hasAuthData()) { - output.writeMessage(4, getAuthData()); + if (((bitField0_ & 0x00000008) == 0x00000008)) { + output.writeMessage(4, authData_); } getUnknownFields().writeTo(output); } - + private int memoizedSerializedSize = -1; public int getSerializedSize() { int size = memoizedSerializedSize; if (size != -1) return size; - + size = 0; - if (hasInterfaceId()) { + if (((bitField0_ & 0x00000001) == 0x00000001)) { size += com.google.protobuf.CodedOutputStream - .computeFixed32Size(1, getInterfaceId()); + .computeFixed32Size(1, interfaceId_); } - if (hasProcId()) { + if (((bitField0_ & 0x00000002) == 0x00000002)) { size += com.google.protobuf.CodedOutputStream - .computeFixed32Size(2, getProcId()); + .computeFixed32Size(2, procId_); } - if (hasUserCreds()) { + if (((bitField0_ & 0x00000004) == 0x00000004)) { size += com.google.protobuf.CodedOutputStream - .computeMessageSize(3, getUserCreds()); + .computeMessageSize(3, userCreds_); } - if (hasAuthData()) { + if (((bitField0_ & 0x00000008) == 0x00000008)) { size += com.google.protobuf.CodedOutputStream - .computeMessageSize(4, getAuthData()); + .computeMessageSize(4, authData_); } size += getUnknownFields().getSerializedSize(); memoizedSerializedSize = size; return size; } - + + private static final long serialVersionUID = 0L; + @java.lang.Override + protected java.lang.Object writeReplace() + throws java.io.ObjectStreamException { + return super.writeReplace(); + } + public static org.xtreemfs.foundation.pbrpc.generatedinterfaces.RPC.RPCHeader.RequestHeader parseFrom( com.google.protobuf.ByteString data) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data).buildParsed(); + return PARSER.parseFrom(data); } public static org.xtreemfs.foundation.pbrpc.generatedinterfaces.RPC.RPCHeader.RequestHeader parseFrom( com.google.protobuf.ByteString data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(data, extensionRegistry); } public static org.xtreemfs.foundation.pbrpc.generatedinterfaces.RPC.RPCHeader.RequestHeader parseFrom(byte[] data) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data).buildParsed(); + return PARSER.parseFrom(data); } public static org.xtreemfs.foundation.pbrpc.generatedinterfaces.RPC.RPCHeader.RequestHeader parseFrom( byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(data, extensionRegistry); } public static org.xtreemfs.foundation.pbrpc.generatedinterfaces.RPC.RPCHeader.RequestHeader parseFrom(java.io.InputStream input) throws java.io.IOException { - return newBuilder().mergeFrom(input).buildParsed(); + return PARSER.parseFrom(input); } public static org.xtreemfs.foundation.pbrpc.generatedinterfaces.RPC.RPCHeader.RequestHeader parseFrom( java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - return newBuilder().mergeFrom(input, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(input, extensionRegistry); } public static org.xtreemfs.foundation.pbrpc.generatedinterfaces.RPC.RPCHeader.RequestHeader parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException { - Builder builder = newBuilder(); - if (builder.mergeDelimitedFrom(input)) { - return builder.buildParsed(); - } else { - return null; - } + return PARSER.parseDelimitedFrom(input); } public static org.xtreemfs.foundation.pbrpc.generatedinterfaces.RPC.RPCHeader.RequestHeader parseDelimitedFrom( java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - Builder builder = newBuilder(); - if (builder.mergeDelimitedFrom(input, extensionRegistry)) { - return builder.buildParsed(); - } else { - return null; - } + return PARSER.parseDelimitedFrom(input, extensionRegistry); } public static org.xtreemfs.foundation.pbrpc.generatedinterfaces.RPC.RPCHeader.RequestHeader parseFrom( com.google.protobuf.CodedInputStream input) throws java.io.IOException { - return newBuilder().mergeFrom(input).buildParsed(); + return PARSER.parseFrom(input); } public static org.xtreemfs.foundation.pbrpc.generatedinterfaces.RPC.RPCHeader.RequestHeader parseFrom( com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - return newBuilder().mergeFrom(input, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(input, extensionRegistry); } - + public static Builder newBuilder() { return Builder.create(); } public Builder newBuilderForType() { return newBuilder(); } public static Builder newBuilder(org.xtreemfs.foundation.pbrpc.generatedinterfaces.RPC.RPCHeader.RequestHeader prototype) { return newBuilder().mergeFrom(prototype); } public Builder toBuilder() { return newBuilder(this); } - + + @java.lang.Override + protected Builder newBuilderForType( + com.google.protobuf.GeneratedMessage.BuilderParent parent) { + Builder builder = new Builder(parent); + return builder; + } + /** + * Protobuf type {@code xtreemfs.pbrpc.RPCHeader.RequestHeader} + * + *
+       * Header data for requests, i.e. message_type is RPC_REQUEST.
+       * 
+ */ public static final class Builder extends - com.google.protobuf.GeneratedMessage.Builder { - private org.xtreemfs.foundation.pbrpc.generatedinterfaces.RPC.RPCHeader.RequestHeader result; - + com.google.protobuf.GeneratedMessage.Builder + implements org.xtreemfs.foundation.pbrpc.generatedinterfaces.RPC.RPCHeader.RequestHeaderOrBuilder { + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return org.xtreemfs.foundation.pbrpc.generatedinterfaces.RPC.internal_static_xtreemfs_pbrpc_RPCHeader_RequestHeader_descriptor; + } + + protected com.google.protobuf.GeneratedMessage.FieldAccessorTable + internalGetFieldAccessorTable() { + return org.xtreemfs.foundation.pbrpc.generatedinterfaces.RPC.internal_static_xtreemfs_pbrpc_RPCHeader_RequestHeader_fieldAccessorTable + .ensureFieldAccessorsInitialized( + org.xtreemfs.foundation.pbrpc.generatedinterfaces.RPC.RPCHeader.RequestHeader.class, org.xtreemfs.foundation.pbrpc.generatedinterfaces.RPC.RPCHeader.RequestHeader.Builder.class); + } + // Construct using org.xtreemfs.foundation.pbrpc.generatedinterfaces.RPC.RPCHeader.RequestHeader.newBuilder() - private Builder() {} - - private static Builder create() { - Builder builder = new Builder(); - builder.result = new org.xtreemfs.foundation.pbrpc.generatedinterfaces.RPC.RPCHeader.RequestHeader(); - return builder; + private Builder() { + maybeForceBuilderInitialization(); } - - protected org.xtreemfs.foundation.pbrpc.generatedinterfaces.RPC.RPCHeader.RequestHeader internalGetResult() { - return result; + + private Builder( + com.google.protobuf.GeneratedMessage.BuilderParent parent) { + super(parent); + maybeForceBuilderInitialization(); + } + private void maybeForceBuilderInitialization() { + if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) { + getUserCredsFieldBuilder(); + getAuthDataFieldBuilder(); + } + } + private static Builder create() { + return new Builder(); } - + public Builder clear() { - if (result == null) { - throw new IllegalStateException( - "Cannot call clear() after build()."); + super.clear(); + interfaceId_ = 0; + bitField0_ = (bitField0_ & ~0x00000001); + procId_ = 0; + bitField0_ = (bitField0_ & ~0x00000002); + if (userCredsBuilder_ == null) { + userCreds_ = org.xtreemfs.foundation.pbrpc.generatedinterfaces.RPC.UserCredentials.getDefaultInstance(); + } else { + userCredsBuilder_.clear(); + } + bitField0_ = (bitField0_ & ~0x00000004); + if (authDataBuilder_ == null) { + authData_ = org.xtreemfs.foundation.pbrpc.generatedinterfaces.RPC.Auth.getDefaultInstance(); + } else { + authDataBuilder_.clear(); } - result = new org.xtreemfs.foundation.pbrpc.generatedinterfaces.RPC.RPCHeader.RequestHeader(); + bitField0_ = (bitField0_ & ~0x00000008); return this; } - + public Builder clone() { - return create().mergeFrom(result); + return create().mergeFrom(buildPartial()); } - + public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() { - return org.xtreemfs.foundation.pbrpc.generatedinterfaces.RPC.RPCHeader.RequestHeader.getDescriptor(); + return org.xtreemfs.foundation.pbrpc.generatedinterfaces.RPC.internal_static_xtreemfs_pbrpc_RPCHeader_RequestHeader_descriptor; } - + public org.xtreemfs.foundation.pbrpc.generatedinterfaces.RPC.RPCHeader.RequestHeader getDefaultInstanceForType() { return org.xtreemfs.foundation.pbrpc.generatedinterfaces.RPC.RPCHeader.RequestHeader.getDefaultInstance(); } - - public boolean isInitialized() { - return result.isInitialized(); - } + public org.xtreemfs.foundation.pbrpc.generatedinterfaces.RPC.RPCHeader.RequestHeader build() { - if (result != null && !isInitialized()) { + org.xtreemfs.foundation.pbrpc.generatedinterfaces.RPC.RPCHeader.RequestHeader result = buildPartial(); + if (!result.isInitialized()) { throw newUninitializedMessageException(result); } - return buildPartial(); - } - - private org.xtreemfs.foundation.pbrpc.generatedinterfaces.RPC.RPCHeader.RequestHeader buildParsed() - throws com.google.protobuf.InvalidProtocolBufferException { - if (!isInitialized()) { - throw newUninitializedMessageException( - result).asInvalidProtocolBufferException(); - } - return buildPartial(); + return result; } - + public org.xtreemfs.foundation.pbrpc.generatedinterfaces.RPC.RPCHeader.RequestHeader buildPartial() { - if (result == null) { - throw new IllegalStateException( - "build() has already been called on this Builder."); + org.xtreemfs.foundation.pbrpc.generatedinterfaces.RPC.RPCHeader.RequestHeader result = new org.xtreemfs.foundation.pbrpc.generatedinterfaces.RPC.RPCHeader.RequestHeader(this); + int from_bitField0_ = bitField0_; + int to_bitField0_ = 0; + if (((from_bitField0_ & 0x00000001) == 0x00000001)) { + to_bitField0_ |= 0x00000001; } - org.xtreemfs.foundation.pbrpc.generatedinterfaces.RPC.RPCHeader.RequestHeader returnMe = result; - result = null; - return returnMe; + result.interfaceId_ = interfaceId_; + if (((from_bitField0_ & 0x00000002) == 0x00000002)) { + to_bitField0_ |= 0x00000002; + } + result.procId_ = procId_; + if (((from_bitField0_ & 0x00000004) == 0x00000004)) { + to_bitField0_ |= 0x00000004; + } + if (userCredsBuilder_ == null) { + result.userCreds_ = userCreds_; + } else { + result.userCreds_ = userCredsBuilder_.build(); + } + if (((from_bitField0_ & 0x00000008) == 0x00000008)) { + to_bitField0_ |= 0x00000008; + } + if (authDataBuilder_ == null) { + result.authData_ = authData_; + } else { + result.authData_ = authDataBuilder_.build(); + } + result.bitField0_ = to_bitField0_; + onBuilt(); + return result; } - + public Builder mergeFrom(com.google.protobuf.Message other) { if (other instanceof org.xtreemfs.foundation.pbrpc.generatedinterfaces.RPC.RPCHeader.RequestHeader) { return mergeFrom((org.xtreemfs.foundation.pbrpc.generatedinterfaces.RPC.RPCHeader.RequestHeader)other); @@ -1665,7 +3572,7 @@ public final class RPC { return this; } } - + public Builder mergeFrom(org.xtreemfs.foundation.pbrpc.generatedinterfaces.RPC.RPCHeader.RequestHeader other) { if (other == org.xtreemfs.foundation.pbrpc.generatedinterfaces.RPC.RPCHeader.RequestHeader.getDefaultInstance()) return this; if (other.hasInterfaceId()) { @@ -1683,446 +3590,1190 @@ public final class RPC { this.mergeUnknownFields(other.getUnknownFields()); return this; } - + + public final boolean isInitialized() { + if (!hasInterfaceId()) { + + return false; + } + if (!hasProcId()) { + + return false; + } + if (!hasUserCreds()) { + + return false; + } + if (!hasAuthData()) { + + return false; + } + if (!getUserCreds().isInitialized()) { + + return false; + } + if (!getAuthData().isInitialized()) { + + return false; + } + return true; + } + public Builder mergeFrom( com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - com.google.protobuf.UnknownFieldSet.Builder unknownFields = - com.google.protobuf.UnknownFieldSet.newBuilder( - this.getUnknownFields()); - while (true) { - int tag = input.readTag(); - switch (tag) { - case 0: - this.setUnknownFields(unknownFields.build()); - return this; - default: { - if (!parseUnknownField(input, unknownFields, - extensionRegistry, tag)) { - this.setUnknownFields(unknownFields.build()); - return this; - } - break; - } - case 13: { - setInterfaceId(input.readFixed32()); - break; - } - case 21: { - setProcId(input.readFixed32()); - break; - } - case 26: { - org.xtreemfs.foundation.pbrpc.generatedinterfaces.RPC.UserCredentials.Builder subBuilder = org.xtreemfs.foundation.pbrpc.generatedinterfaces.RPC.UserCredentials.newBuilder(); - if (hasUserCreds()) { - subBuilder.mergeFrom(getUserCreds()); - } - input.readMessage(subBuilder, extensionRegistry); - setUserCreds(subBuilder.buildPartial()); - break; - } - case 34: { - org.xtreemfs.foundation.pbrpc.generatedinterfaces.RPC.Auth.Builder subBuilder = org.xtreemfs.foundation.pbrpc.generatedinterfaces.RPC.Auth.newBuilder(); - if (hasAuthData()) { - subBuilder.mergeFrom(getAuthData()); - } - input.readMessage(subBuilder, extensionRegistry); - setAuthData(subBuilder.buildPartial()); - break; - } + org.xtreemfs.foundation.pbrpc.generatedinterfaces.RPC.RPCHeader.RequestHeader parsedMessage = null; + try { + parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + parsedMessage = (org.xtreemfs.foundation.pbrpc.generatedinterfaces.RPC.RPCHeader.RequestHeader) e.getUnfinishedMessage(); + throw e; + } finally { + if (parsedMessage != null) { + mergeFrom(parsedMessage); } } + return this; } - - + private int bitField0_; + // required fixed32 interface_id = 1; + private int interfaceId_ ; + /** + * required fixed32 interface_id = 1; + * + *
+         * Interface id of the requested method.
+         * 
+ */ public boolean hasInterfaceId() { - return result.hasInterfaceId(); - } + return ((bitField0_ & 0x00000001) == 0x00000001); + } + /** + * required fixed32 interface_id = 1; + * + *
+         * Interface id of the requested method.
+         * 
+ */ public int getInterfaceId() { - return result.getInterfaceId(); - } + return interfaceId_; + } + /** + * required fixed32 interface_id = 1; + * + *
+         * Interface id of the requested method.
+         * 
+ */ public Builder setInterfaceId(int value) { - result.hasInterfaceId = true; - result.interfaceId_ = value; + bitField0_ |= 0x00000001; + interfaceId_ = value; + onChanged(); return this; } + /** + * required fixed32 interface_id = 1; + * + *
+         * Interface id of the requested method.
+         * 
+ */ public Builder clearInterfaceId() { - result.hasInterfaceId = false; - result.interfaceId_ = 0; + bitField0_ = (bitField0_ & ~0x00000001); + interfaceId_ = 0; + onChanged(); return this; } - + // required fixed32 proc_id = 2; + private int procId_ ; + /** + * required fixed32 proc_id = 2; + * + *
+         * Procedure id of the requested method.
+         * 
+ */ public boolean hasProcId() { - return result.hasProcId(); - } + return ((bitField0_ & 0x00000002) == 0x00000002); + } + /** + * required fixed32 proc_id = 2; + * + *
+         * Procedure id of the requested method.
+         * 
+ */ public int getProcId() { - return result.getProcId(); - } + return procId_; + } + /** + * required fixed32 proc_id = 2; + * + *
+         * Procedure id of the requested method.
+         * 
+ */ public Builder setProcId(int value) { - result.hasProcId = true; - result.procId_ = value; + bitField0_ |= 0x00000002; + procId_ = value; + onChanged(); return this; } + /** + * required fixed32 proc_id = 2; + * + *
+         * Procedure id of the requested method.
+         * 
+ */ public Builder clearProcId() { - result.hasProcId = false; - result.procId_ = 0; + bitField0_ = (bitField0_ & ~0x00000002); + procId_ = 0; + onChanged(); return this; } - + // required .xtreemfs.pbrpc.UserCredentials user_creds = 3; + private org.xtreemfs.foundation.pbrpc.generatedinterfaces.RPC.UserCredentials userCreds_ = org.xtreemfs.foundation.pbrpc.generatedinterfaces.RPC.UserCredentials.getDefaultInstance(); + private com.google.protobuf.SingleFieldBuilder< + org.xtreemfs.foundation.pbrpc.generatedinterfaces.RPC.UserCredentials, org.xtreemfs.foundation.pbrpc.generatedinterfaces.RPC.UserCredentials.Builder, org.xtreemfs.foundation.pbrpc.generatedinterfaces.RPC.UserCredentialsOrBuilder> userCredsBuilder_; + /** + * required .xtreemfs.pbrpc.UserCredentials user_creds = 3; + * + *
+         * File system user credentials for the operation.
+         * 
+ */ public boolean hasUserCreds() { - return result.hasUserCreds(); - } + return ((bitField0_ & 0x00000004) == 0x00000004); + } + /** + * required .xtreemfs.pbrpc.UserCredentials user_creds = 3; + * + *
+         * File system user credentials for the operation.
+         * 
+ */ public org.xtreemfs.foundation.pbrpc.generatedinterfaces.RPC.UserCredentials getUserCreds() { - return result.getUserCreds(); + if (userCredsBuilder_ == null) { + return userCreds_; + } else { + return userCredsBuilder_.getMessage(); + } } + /** + * required .xtreemfs.pbrpc.UserCredentials user_creds = 3; + * + *
+         * File system user credentials for the operation.
+         * 
+ */ public Builder setUserCreds(org.xtreemfs.foundation.pbrpc.generatedinterfaces.RPC.UserCredentials value) { - if (value == null) { - throw new NullPointerException(); + if (userCredsBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + userCreds_ = value; + onChanged(); + } else { + userCredsBuilder_.setMessage(value); } - result.hasUserCreds = true; - result.userCreds_ = value; + bitField0_ |= 0x00000004; return this; } - public Builder setUserCreds(org.xtreemfs.foundation.pbrpc.generatedinterfaces.RPC.UserCredentials.Builder builderForValue) { - result.hasUserCreds = true; - result.userCreds_ = builderForValue.build(); + /** + * required .xtreemfs.pbrpc.UserCredentials user_creds = 3; + * + *
+         * File system user credentials for the operation.
+         * 
+ */ + public Builder setUserCreds( + org.xtreemfs.foundation.pbrpc.generatedinterfaces.RPC.UserCredentials.Builder builderForValue) { + if (userCredsBuilder_ == null) { + userCreds_ = builderForValue.build(); + onChanged(); + } else { + userCredsBuilder_.setMessage(builderForValue.build()); + } + bitField0_ |= 0x00000004; return this; } + /** + * required .xtreemfs.pbrpc.UserCredentials user_creds = 3; + * + *
+         * File system user credentials for the operation.
+         * 
+ */ public Builder mergeUserCreds(org.xtreemfs.foundation.pbrpc.generatedinterfaces.RPC.UserCredentials value) { - if (result.hasUserCreds() && - result.userCreds_ != org.xtreemfs.foundation.pbrpc.generatedinterfaces.RPC.UserCredentials.getDefaultInstance()) { - result.userCreds_ = - org.xtreemfs.foundation.pbrpc.generatedinterfaces.RPC.UserCredentials.newBuilder(result.userCreds_).mergeFrom(value).buildPartial(); + if (userCredsBuilder_ == null) { + if (((bitField0_ & 0x00000004) == 0x00000004) && + userCreds_ != org.xtreemfs.foundation.pbrpc.generatedinterfaces.RPC.UserCredentials.getDefaultInstance()) { + userCreds_ = + org.xtreemfs.foundation.pbrpc.generatedinterfaces.RPC.UserCredentials.newBuilder(userCreds_).mergeFrom(value).buildPartial(); + } else { + userCreds_ = value; + } + onChanged(); } else { - result.userCreds_ = value; + userCredsBuilder_.mergeFrom(value); } - result.hasUserCreds = true; + bitField0_ |= 0x00000004; return this; } + /** + * required .xtreemfs.pbrpc.UserCredentials user_creds = 3; + * + *
+         * File system user credentials for the operation.
+         * 
+ */ public Builder clearUserCreds() { - result.hasUserCreds = false; - result.userCreds_ = org.xtreemfs.foundation.pbrpc.generatedinterfaces.RPC.UserCredentials.getDefaultInstance(); + if (userCredsBuilder_ == null) { + userCreds_ = org.xtreemfs.foundation.pbrpc.generatedinterfaces.RPC.UserCredentials.getDefaultInstance(); + onChanged(); + } else { + userCredsBuilder_.clear(); + } + bitField0_ = (bitField0_ & ~0x00000004); return this; } - + /** + * required .xtreemfs.pbrpc.UserCredentials user_creds = 3; + * + *
+         * File system user credentials for the operation.
+         * 
+ */ + public org.xtreemfs.foundation.pbrpc.generatedinterfaces.RPC.UserCredentials.Builder getUserCredsBuilder() { + bitField0_ |= 0x00000004; + onChanged(); + return getUserCredsFieldBuilder().getBuilder(); + } + /** + * required .xtreemfs.pbrpc.UserCredentials user_creds = 3; + * + *
+         * File system user credentials for the operation.
+         * 
+ */ + public org.xtreemfs.foundation.pbrpc.generatedinterfaces.RPC.UserCredentialsOrBuilder getUserCredsOrBuilder() { + if (userCredsBuilder_ != null) { + return userCredsBuilder_.getMessageOrBuilder(); + } else { + return userCreds_; + } + } + /** + * required .xtreemfs.pbrpc.UserCredentials user_creds = 3; + * + *
+         * File system user credentials for the operation.
+         * 
+ */ + private com.google.protobuf.SingleFieldBuilder< + org.xtreemfs.foundation.pbrpc.generatedinterfaces.RPC.UserCredentials, org.xtreemfs.foundation.pbrpc.generatedinterfaces.RPC.UserCredentials.Builder, org.xtreemfs.foundation.pbrpc.generatedinterfaces.RPC.UserCredentialsOrBuilder> + getUserCredsFieldBuilder() { + if (userCredsBuilder_ == null) { + userCredsBuilder_ = new com.google.protobuf.SingleFieldBuilder< + org.xtreemfs.foundation.pbrpc.generatedinterfaces.RPC.UserCredentials, org.xtreemfs.foundation.pbrpc.generatedinterfaces.RPC.UserCredentials.Builder, org.xtreemfs.foundation.pbrpc.generatedinterfaces.RPC.UserCredentialsOrBuilder>( + userCreds_, + getParentForChildren(), + isClean()); + userCreds_ = null; + } + return userCredsBuilder_; + } + // required .xtreemfs.pbrpc.Auth auth_data = 4; + private org.xtreemfs.foundation.pbrpc.generatedinterfaces.RPC.Auth authData_ = org.xtreemfs.foundation.pbrpc.generatedinterfaces.RPC.Auth.getDefaultInstance(); + private com.google.protobuf.SingleFieldBuilder< + org.xtreemfs.foundation.pbrpc.generatedinterfaces.RPC.Auth, org.xtreemfs.foundation.pbrpc.generatedinterfaces.RPC.Auth.Builder, org.xtreemfs.foundation.pbrpc.generatedinterfaces.RPC.AuthOrBuilder> authDataBuilder_; + /** + * required .xtreemfs.pbrpc.Auth auth_data = 4; + * + *
+         * Authentication details.
+         * 
+ */ public boolean hasAuthData() { - return result.hasAuthData(); - } + return ((bitField0_ & 0x00000008) == 0x00000008); + } + /** + * required .xtreemfs.pbrpc.Auth auth_data = 4; + * + *
+         * Authentication details.
+         * 
+ */ public org.xtreemfs.foundation.pbrpc.generatedinterfaces.RPC.Auth getAuthData() { - return result.getAuthData(); + if (authDataBuilder_ == null) { + return authData_; + } else { + return authDataBuilder_.getMessage(); + } } + /** + * required .xtreemfs.pbrpc.Auth auth_data = 4; + * + *
+         * Authentication details.
+         * 
+ */ public Builder setAuthData(org.xtreemfs.foundation.pbrpc.generatedinterfaces.RPC.Auth value) { - if (value == null) { - throw new NullPointerException(); + if (authDataBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + authData_ = value; + onChanged(); + } else { + authDataBuilder_.setMessage(value); } - result.hasAuthData = true; - result.authData_ = value; + bitField0_ |= 0x00000008; return this; } - public Builder setAuthData(org.xtreemfs.foundation.pbrpc.generatedinterfaces.RPC.Auth.Builder builderForValue) { - result.hasAuthData = true; - result.authData_ = builderForValue.build(); + /** + * required .xtreemfs.pbrpc.Auth auth_data = 4; + * + *
+         * Authentication details.
+         * 
+ */ + public Builder setAuthData( + org.xtreemfs.foundation.pbrpc.generatedinterfaces.RPC.Auth.Builder builderForValue) { + if (authDataBuilder_ == null) { + authData_ = builderForValue.build(); + onChanged(); + } else { + authDataBuilder_.setMessage(builderForValue.build()); + } + bitField0_ |= 0x00000008; return this; } + /** + * required .xtreemfs.pbrpc.Auth auth_data = 4; + * + *
+         * Authentication details.
+         * 
+ */ public Builder mergeAuthData(org.xtreemfs.foundation.pbrpc.generatedinterfaces.RPC.Auth value) { - if (result.hasAuthData() && - result.authData_ != org.xtreemfs.foundation.pbrpc.generatedinterfaces.RPC.Auth.getDefaultInstance()) { - result.authData_ = - org.xtreemfs.foundation.pbrpc.generatedinterfaces.RPC.Auth.newBuilder(result.authData_).mergeFrom(value).buildPartial(); + if (authDataBuilder_ == null) { + if (((bitField0_ & 0x00000008) == 0x00000008) && + authData_ != org.xtreemfs.foundation.pbrpc.generatedinterfaces.RPC.Auth.getDefaultInstance()) { + authData_ = + org.xtreemfs.foundation.pbrpc.generatedinterfaces.RPC.Auth.newBuilder(authData_).mergeFrom(value).buildPartial(); + } else { + authData_ = value; + } + onChanged(); } else { - result.authData_ = value; + authDataBuilder_.mergeFrom(value); } - result.hasAuthData = true; + bitField0_ |= 0x00000008; return this; } + /** + * required .xtreemfs.pbrpc.Auth auth_data = 4; + * + *
+         * Authentication details.
+         * 
+ */ public Builder clearAuthData() { - result.hasAuthData = false; - result.authData_ = org.xtreemfs.foundation.pbrpc.generatedinterfaces.RPC.Auth.getDefaultInstance(); + if (authDataBuilder_ == null) { + authData_ = org.xtreemfs.foundation.pbrpc.generatedinterfaces.RPC.Auth.getDefaultInstance(); + onChanged(); + } else { + authDataBuilder_.clear(); + } + bitField0_ = (bitField0_ & ~0x00000008); return this; } - + /** + * required .xtreemfs.pbrpc.Auth auth_data = 4; + * + *
+         * Authentication details.
+         * 
+ */ + public org.xtreemfs.foundation.pbrpc.generatedinterfaces.RPC.Auth.Builder getAuthDataBuilder() { + bitField0_ |= 0x00000008; + onChanged(); + return getAuthDataFieldBuilder().getBuilder(); + } + /** + * required .xtreemfs.pbrpc.Auth auth_data = 4; + * + *
+         * Authentication details.
+         * 
+ */ + public org.xtreemfs.foundation.pbrpc.generatedinterfaces.RPC.AuthOrBuilder getAuthDataOrBuilder() { + if (authDataBuilder_ != null) { + return authDataBuilder_.getMessageOrBuilder(); + } else { + return authData_; + } + } + /** + * required .xtreemfs.pbrpc.Auth auth_data = 4; + * + *
+         * Authentication details.
+         * 
+ */ + private com.google.protobuf.SingleFieldBuilder< + org.xtreemfs.foundation.pbrpc.generatedinterfaces.RPC.Auth, org.xtreemfs.foundation.pbrpc.generatedinterfaces.RPC.Auth.Builder, org.xtreemfs.foundation.pbrpc.generatedinterfaces.RPC.AuthOrBuilder> + getAuthDataFieldBuilder() { + if (authDataBuilder_ == null) { + authDataBuilder_ = new com.google.protobuf.SingleFieldBuilder< + org.xtreemfs.foundation.pbrpc.generatedinterfaces.RPC.Auth, org.xtreemfs.foundation.pbrpc.generatedinterfaces.RPC.Auth.Builder, org.xtreemfs.foundation.pbrpc.generatedinterfaces.RPC.AuthOrBuilder>( + authData_, + getParentForChildren(), + isClean()); + authData_ = null; + } + return authDataBuilder_; + } + // @@protoc_insertion_point(builder_scope:xtreemfs.pbrpc.RPCHeader.RequestHeader) } - + static { defaultInstance = new RequestHeader(true); - org.xtreemfs.foundation.pbrpc.generatedinterfaces.RPC.internalForceInit(); defaultInstance.initFields(); } - + // @@protoc_insertion_point(class_scope:xtreemfs.pbrpc.RPCHeader.RequestHeader) } - + + public interface ErrorResponseOrBuilder + extends com.google.protobuf.MessageOrBuilder { + + // required .xtreemfs.pbrpc.ErrorType error_type = 1; + /** + * required .xtreemfs.pbrpc.ErrorType error_type = 1; + * + *
+       * Error type details.
+       * 
+ */ + boolean hasErrorType(); + /** + * required .xtreemfs.pbrpc.ErrorType error_type = 1; + * + *
+       * Error type details.
+       * 
+ */ + org.xtreemfs.foundation.pbrpc.generatedinterfaces.RPC.ErrorType getErrorType(); + + // optional .xtreemfs.pbrpc.POSIXErrno posix_errno = 2 [default = POSIX_ERROR_NONE]; + /** + * optional .xtreemfs.pbrpc.POSIXErrno posix_errno = 2 [default = POSIX_ERROR_NONE]; + * + *
+       * Optional POSIX errno.
+       * 
+ */ + boolean hasPosixErrno(); + /** + * optional .xtreemfs.pbrpc.POSIXErrno posix_errno = 2 [default = POSIX_ERROR_NONE]; + * + *
+       * Optional POSIX errno.
+       * 
+ */ + org.xtreemfs.foundation.pbrpc.generatedinterfaces.RPC.POSIXErrno getPosixErrno(); + + // optional string error_message = 3; + /** + * optional string error_message = 3; + * + *
+       * Optional human readable error message in English (not localized!).
+       * 
+ */ + boolean hasErrorMessage(); + /** + * optional string error_message = 3; + * + *
+       * Optional human readable error message in English (not localized!).
+       * 
+ */ + java.lang.String getErrorMessage(); + /** + * optional string error_message = 3; + * + *
+       * Optional human readable error message in English (not localized!).
+       * 
+ */ + com.google.protobuf.ByteString + getErrorMessageBytes(); + + // optional string debug_info = 4; + /** + * optional string debug_info = 4; + * + *
+       * Optional debug information that only makes sense to developers such
+       * as stack traces.
+       * 
+ */ + boolean hasDebugInfo(); + /** + * optional string debug_info = 4; + * + *
+       * Optional debug information that only makes sense to developers such
+       * as stack traces.
+       * 
+ */ + java.lang.String getDebugInfo(); + /** + * optional string debug_info = 4; + * + *
+       * Optional debug information that only makes sense to developers such
+       * as stack traces.
+       * 
+ */ + com.google.protobuf.ByteString + getDebugInfoBytes(); + + // optional string redirect_to_server_uuid = 5; + /** + * optional string redirect_to_server_uuid = 5; + * + *
+       * Optional UUID of the server to use instead. Required when error_type is REDIRECT.
+       * 
+ */ + boolean hasRedirectToServerUuid(); + /** + * optional string redirect_to_server_uuid = 5; + * + *
+       * Optional UUID of the server to use instead. Required when error_type is REDIRECT.
+       * 
+ */ + java.lang.String getRedirectToServerUuid(); + /** + * optional string redirect_to_server_uuid = 5; + * + *
+       * Optional UUID of the server to use instead. Required when error_type is REDIRECT.
+       * 
+ */ + com.google.protobuf.ByteString + getRedirectToServerUuidBytes(); + } + /** + * Protobuf type {@code xtreemfs.pbrpc.RPCHeader.ErrorResponse} + * + *
+     * Header data for error responses, i.e. message_type is RPC_ERROR_RESPONSE.
+     * 
+ */ public static final class ErrorResponse extends - com.google.protobuf.GeneratedMessage { + com.google.protobuf.GeneratedMessage + implements ErrorResponseOrBuilder { // Use ErrorResponse.newBuilder() to construct. - private ErrorResponse() { - initFields(); + private ErrorResponse(com.google.protobuf.GeneratedMessage.Builder builder) { + super(builder); + this.unknownFields = builder.getUnknownFields(); } - private ErrorResponse(boolean noInit) {} - + private ErrorResponse(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); } + private static final ErrorResponse defaultInstance; public static ErrorResponse getDefaultInstance() { return defaultInstance; } - + public ErrorResponse getDefaultInstanceForType() { return defaultInstance; } - + + private final com.google.protobuf.UnknownFieldSet unknownFields; + @java.lang.Override + public final com.google.protobuf.UnknownFieldSet + getUnknownFields() { + return this.unknownFields; + } + private ErrorResponse( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + initFields(); + int mutable_bitField0_ = 0; + com.google.protobuf.UnknownFieldSet.Builder unknownFields = + com.google.protobuf.UnknownFieldSet.newBuilder(); + try { + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch (tag) { + case 0: + done = true; + break; + default: { + if (!parseUnknownField(input, unknownFields, + extensionRegistry, tag)) { + done = true; + } + break; + } + case 8: { + int rawValue = input.readEnum(); + org.xtreemfs.foundation.pbrpc.generatedinterfaces.RPC.ErrorType value = org.xtreemfs.foundation.pbrpc.generatedinterfaces.RPC.ErrorType.valueOf(rawValue); + if (value == null) { + unknownFields.mergeVarintField(1, rawValue); + } else { + bitField0_ |= 0x00000001; + errorType_ = value; + } + break; + } + case 16: { + int rawValue = input.readEnum(); + org.xtreemfs.foundation.pbrpc.generatedinterfaces.RPC.POSIXErrno value = org.xtreemfs.foundation.pbrpc.generatedinterfaces.RPC.POSIXErrno.valueOf(rawValue); + if (value == null) { + unknownFields.mergeVarintField(2, rawValue); + } else { + bitField0_ |= 0x00000002; + posixErrno_ = value; + } + break; + } + case 26: { + bitField0_ |= 0x00000004; + errorMessage_ = input.readBytes(); + break; + } + case 34: { + bitField0_ |= 0x00000008; + debugInfo_ = input.readBytes(); + break; + } + case 42: { + bitField0_ |= 0x00000010; + redirectToServerUuid_ = input.readBytes(); + break; + } + } + } + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(this); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException( + e.getMessage()).setUnfinishedMessage(this); + } finally { + this.unknownFields = unknownFields.build(); + makeExtensionsImmutable(); + } + } public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { return org.xtreemfs.foundation.pbrpc.generatedinterfaces.RPC.internal_static_xtreemfs_pbrpc_RPCHeader_ErrorResponse_descriptor; } - + protected com.google.protobuf.GeneratedMessage.FieldAccessorTable internalGetFieldAccessorTable() { - return org.xtreemfs.foundation.pbrpc.generatedinterfaces.RPC.internal_static_xtreemfs_pbrpc_RPCHeader_ErrorResponse_fieldAccessorTable; + return org.xtreemfs.foundation.pbrpc.generatedinterfaces.RPC.internal_static_xtreemfs_pbrpc_RPCHeader_ErrorResponse_fieldAccessorTable + .ensureFieldAccessorsInitialized( + org.xtreemfs.foundation.pbrpc.generatedinterfaces.RPC.RPCHeader.ErrorResponse.class, org.xtreemfs.foundation.pbrpc.generatedinterfaces.RPC.RPCHeader.ErrorResponse.Builder.class); } - + + public static com.google.protobuf.Parser PARSER = + new com.google.protobuf.AbstractParser() { + public ErrorResponse parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return new ErrorResponse(input, extensionRegistry); + } + }; + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; + } + + private int bitField0_; // required .xtreemfs.pbrpc.ErrorType error_type = 1; public static final int ERROR_TYPE_FIELD_NUMBER = 1; - private boolean hasErrorType; private org.xtreemfs.foundation.pbrpc.generatedinterfaces.RPC.ErrorType errorType_; - public boolean hasErrorType() { return hasErrorType; } - public org.xtreemfs.foundation.pbrpc.generatedinterfaces.RPC.ErrorType getErrorType() { return errorType_; } - + /** + * required .xtreemfs.pbrpc.ErrorType error_type = 1; + * + *
+       * Error type details.
+       * 
+ */ + public boolean hasErrorType() { + return ((bitField0_ & 0x00000001) == 0x00000001); + } + /** + * required .xtreemfs.pbrpc.ErrorType error_type = 1; + * + *
+       * Error type details.
+       * 
+ */ + public org.xtreemfs.foundation.pbrpc.generatedinterfaces.RPC.ErrorType getErrorType() { + return errorType_; + } + // optional .xtreemfs.pbrpc.POSIXErrno posix_errno = 2 [default = POSIX_ERROR_NONE]; public static final int POSIX_ERRNO_FIELD_NUMBER = 2; - private boolean hasPosixErrno; private org.xtreemfs.foundation.pbrpc.generatedinterfaces.RPC.POSIXErrno posixErrno_; - public boolean hasPosixErrno() { return hasPosixErrno; } - public org.xtreemfs.foundation.pbrpc.generatedinterfaces.RPC.POSIXErrno getPosixErrno() { return posixErrno_; } - + /** + * optional .xtreemfs.pbrpc.POSIXErrno posix_errno = 2 [default = POSIX_ERROR_NONE]; + * + *
+       * Optional POSIX errno.
+       * 
+ */ + public boolean hasPosixErrno() { + return ((bitField0_ & 0x00000002) == 0x00000002); + } + /** + * optional .xtreemfs.pbrpc.POSIXErrno posix_errno = 2 [default = POSIX_ERROR_NONE]; + * + *
+       * Optional POSIX errno.
+       * 
+ */ + public org.xtreemfs.foundation.pbrpc.generatedinterfaces.RPC.POSIXErrno getPosixErrno() { + return posixErrno_; + } + // optional string error_message = 3; public static final int ERROR_MESSAGE_FIELD_NUMBER = 3; - private boolean hasErrorMessage; - private java.lang.String errorMessage_ = ""; - public boolean hasErrorMessage() { return hasErrorMessage; } - public java.lang.String getErrorMessage() { return errorMessage_; } - + private java.lang.Object errorMessage_; + /** + * optional string error_message = 3; + * + *
+       * Optional human readable error message in English (not localized!).
+       * 
+ */ + public boolean hasErrorMessage() { + return ((bitField0_ & 0x00000004) == 0x00000004); + } + /** + * optional string error_message = 3; + * + *
+       * Optional human readable error message in English (not localized!).
+       * 
+ */ + public java.lang.String getErrorMessage() { + java.lang.Object ref = errorMessage_; + if (ref instanceof java.lang.String) { + return (java.lang.String) ref; + } else { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + if (bs.isValidUtf8()) { + errorMessage_ = s; + } + return s; + } + } + /** + * optional string error_message = 3; + * + *
+       * Optional human readable error message in English (not localized!).
+       * 
+ */ + public com.google.protobuf.ByteString + getErrorMessageBytes() { + java.lang.Object ref = errorMessage_; + if (ref instanceof java.lang.String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + errorMessage_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + // optional string debug_info = 4; public static final int DEBUG_INFO_FIELD_NUMBER = 4; - private boolean hasDebugInfo; - private java.lang.String debugInfo_ = ""; - public boolean hasDebugInfo() { return hasDebugInfo; } - public java.lang.String getDebugInfo() { return debugInfo_; } - + private java.lang.Object debugInfo_; + /** + * optional string debug_info = 4; + * + *
+       * Optional debug information that only makes sense to developers such
+       * as stack traces.
+       * 
+ */ + public boolean hasDebugInfo() { + return ((bitField0_ & 0x00000008) == 0x00000008); + } + /** + * optional string debug_info = 4; + * + *
+       * Optional debug information that only makes sense to developers such
+       * as stack traces.
+       * 
+ */ + public java.lang.String getDebugInfo() { + java.lang.Object ref = debugInfo_; + if (ref instanceof java.lang.String) { + return (java.lang.String) ref; + } else { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + if (bs.isValidUtf8()) { + debugInfo_ = s; + } + return s; + } + } + /** + * optional string debug_info = 4; + * + *
+       * Optional debug information that only makes sense to developers such
+       * as stack traces.
+       * 
+ */ + public com.google.protobuf.ByteString + getDebugInfoBytes() { + java.lang.Object ref = debugInfo_; + if (ref instanceof java.lang.String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + debugInfo_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + // optional string redirect_to_server_uuid = 5; public static final int REDIRECT_TO_SERVER_UUID_FIELD_NUMBER = 5; - private boolean hasRedirectToServerUuid; - private java.lang.String redirectToServerUuid_ = ""; - public boolean hasRedirectToServerUuid() { return hasRedirectToServerUuid; } - public java.lang.String getRedirectToServerUuid() { return redirectToServerUuid_; } - + private java.lang.Object redirectToServerUuid_; + /** + * optional string redirect_to_server_uuid = 5; + * + *
+       * Optional UUID of the server to use instead. Required when error_type is REDIRECT.
+       * 
+ */ + public boolean hasRedirectToServerUuid() { + return ((bitField0_ & 0x00000010) == 0x00000010); + } + /** + * optional string redirect_to_server_uuid = 5; + * + *
+       * Optional UUID of the server to use instead. Required when error_type is REDIRECT.
+       * 
+ */ + public java.lang.String getRedirectToServerUuid() { + java.lang.Object ref = redirectToServerUuid_; + if (ref instanceof java.lang.String) { + return (java.lang.String) ref; + } else { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + if (bs.isValidUtf8()) { + redirectToServerUuid_ = s; + } + return s; + } + } + /** + * optional string redirect_to_server_uuid = 5; + * + *
+       * Optional UUID of the server to use instead. Required when error_type is REDIRECT.
+       * 
+ */ + public com.google.protobuf.ByteString + getRedirectToServerUuidBytes() { + java.lang.Object ref = redirectToServerUuid_; + if (ref instanceof java.lang.String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + redirectToServerUuid_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + private void initFields() { errorType_ = org.xtreemfs.foundation.pbrpc.generatedinterfaces.RPC.ErrorType.INVALID_INTERFACE_ID; posixErrno_ = org.xtreemfs.foundation.pbrpc.generatedinterfaces.RPC.POSIXErrno.POSIX_ERROR_NONE; + errorMessage_ = ""; + debugInfo_ = ""; + redirectToServerUuid_ = ""; } + private byte memoizedIsInitialized = -1; public final boolean isInitialized() { - if (!hasErrorType) return false; + byte isInitialized = memoizedIsInitialized; + if (isInitialized != -1) return isInitialized == 1; + + if (!hasErrorType()) { + memoizedIsInitialized = 0; + return false; + } + memoizedIsInitialized = 1; return true; } - + public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException { getSerializedSize(); - if (hasErrorType()) { - output.writeEnum(1, getErrorType().getNumber()); + if (((bitField0_ & 0x00000001) == 0x00000001)) { + output.writeEnum(1, errorType_.getNumber()); } - if (hasPosixErrno()) { - output.writeEnum(2, getPosixErrno().getNumber()); + if (((bitField0_ & 0x00000002) == 0x00000002)) { + output.writeEnum(2, posixErrno_.getNumber()); } - if (hasErrorMessage()) { - output.writeString(3, getErrorMessage()); + if (((bitField0_ & 0x00000004) == 0x00000004)) { + output.writeBytes(3, getErrorMessageBytes()); } - if (hasDebugInfo()) { - output.writeString(4, getDebugInfo()); + if (((bitField0_ & 0x00000008) == 0x00000008)) { + output.writeBytes(4, getDebugInfoBytes()); } - if (hasRedirectToServerUuid()) { - output.writeString(5, getRedirectToServerUuid()); + if (((bitField0_ & 0x00000010) == 0x00000010)) { + output.writeBytes(5, getRedirectToServerUuidBytes()); } getUnknownFields().writeTo(output); } - + private int memoizedSerializedSize = -1; public int getSerializedSize() { int size = memoizedSerializedSize; if (size != -1) return size; - + size = 0; - if (hasErrorType()) { + if (((bitField0_ & 0x00000001) == 0x00000001)) { size += com.google.protobuf.CodedOutputStream - .computeEnumSize(1, getErrorType().getNumber()); + .computeEnumSize(1, errorType_.getNumber()); } - if (hasPosixErrno()) { + if (((bitField0_ & 0x00000002) == 0x00000002)) { size += com.google.protobuf.CodedOutputStream - .computeEnumSize(2, getPosixErrno().getNumber()); + .computeEnumSize(2, posixErrno_.getNumber()); } - if (hasErrorMessage()) { + if (((bitField0_ & 0x00000004) == 0x00000004)) { size += com.google.protobuf.CodedOutputStream - .computeStringSize(3, getErrorMessage()); + .computeBytesSize(3, getErrorMessageBytes()); } - if (hasDebugInfo()) { + if (((bitField0_ & 0x00000008) == 0x00000008)) { size += com.google.protobuf.CodedOutputStream - .computeStringSize(4, getDebugInfo()); + .computeBytesSize(4, getDebugInfoBytes()); } - if (hasRedirectToServerUuid()) { + if (((bitField0_ & 0x00000010) == 0x00000010)) { size += com.google.protobuf.CodedOutputStream - .computeStringSize(5, getRedirectToServerUuid()); + .computeBytesSize(5, getRedirectToServerUuidBytes()); } size += getUnknownFields().getSerializedSize(); memoizedSerializedSize = size; return size; } - + + private static final long serialVersionUID = 0L; + @java.lang.Override + protected java.lang.Object writeReplace() + throws java.io.ObjectStreamException { + return super.writeReplace(); + } + public static org.xtreemfs.foundation.pbrpc.generatedinterfaces.RPC.RPCHeader.ErrorResponse parseFrom( com.google.protobuf.ByteString data) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data).buildParsed(); + return PARSER.parseFrom(data); } public static org.xtreemfs.foundation.pbrpc.generatedinterfaces.RPC.RPCHeader.ErrorResponse parseFrom( com.google.protobuf.ByteString data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(data, extensionRegistry); } public static org.xtreemfs.foundation.pbrpc.generatedinterfaces.RPC.RPCHeader.ErrorResponse parseFrom(byte[] data) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data).buildParsed(); + return PARSER.parseFrom(data); } public static org.xtreemfs.foundation.pbrpc.generatedinterfaces.RPC.RPCHeader.ErrorResponse parseFrom( byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(data, extensionRegistry); } public static org.xtreemfs.foundation.pbrpc.generatedinterfaces.RPC.RPCHeader.ErrorResponse parseFrom(java.io.InputStream input) throws java.io.IOException { - return newBuilder().mergeFrom(input).buildParsed(); + return PARSER.parseFrom(input); } public static org.xtreemfs.foundation.pbrpc.generatedinterfaces.RPC.RPCHeader.ErrorResponse parseFrom( java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - return newBuilder().mergeFrom(input, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(input, extensionRegistry); } public static org.xtreemfs.foundation.pbrpc.generatedinterfaces.RPC.RPCHeader.ErrorResponse parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException { - Builder builder = newBuilder(); - if (builder.mergeDelimitedFrom(input)) { - return builder.buildParsed(); - } else { - return null; - } + return PARSER.parseDelimitedFrom(input); } public static org.xtreemfs.foundation.pbrpc.generatedinterfaces.RPC.RPCHeader.ErrorResponse parseDelimitedFrom( java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - Builder builder = newBuilder(); - if (builder.mergeDelimitedFrom(input, extensionRegistry)) { - return builder.buildParsed(); - } else { - return null; - } + return PARSER.parseDelimitedFrom(input, extensionRegistry); } public static org.xtreemfs.foundation.pbrpc.generatedinterfaces.RPC.RPCHeader.ErrorResponse parseFrom( com.google.protobuf.CodedInputStream input) throws java.io.IOException { - return newBuilder().mergeFrom(input).buildParsed(); + return PARSER.parseFrom(input); } public static org.xtreemfs.foundation.pbrpc.generatedinterfaces.RPC.RPCHeader.ErrorResponse parseFrom( com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - return newBuilder().mergeFrom(input, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(input, extensionRegistry); } - + public static Builder newBuilder() { return Builder.create(); } public Builder newBuilderForType() { return newBuilder(); } public static Builder newBuilder(org.xtreemfs.foundation.pbrpc.generatedinterfaces.RPC.RPCHeader.ErrorResponse prototype) { return newBuilder().mergeFrom(prototype); } public Builder toBuilder() { return newBuilder(this); } - + + @java.lang.Override + protected Builder newBuilderForType( + com.google.protobuf.GeneratedMessage.BuilderParent parent) { + Builder builder = new Builder(parent); + return builder; + } + /** + * Protobuf type {@code xtreemfs.pbrpc.RPCHeader.ErrorResponse} + * + *
+       * Header data for error responses, i.e. message_type is RPC_ERROR_RESPONSE.
+       * 
+ */ public static final class Builder extends - com.google.protobuf.GeneratedMessage.Builder { - private org.xtreemfs.foundation.pbrpc.generatedinterfaces.RPC.RPCHeader.ErrorResponse result; - + com.google.protobuf.GeneratedMessage.Builder + implements org.xtreemfs.foundation.pbrpc.generatedinterfaces.RPC.RPCHeader.ErrorResponseOrBuilder { + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return org.xtreemfs.foundation.pbrpc.generatedinterfaces.RPC.internal_static_xtreemfs_pbrpc_RPCHeader_ErrorResponse_descriptor; + } + + protected com.google.protobuf.GeneratedMessage.FieldAccessorTable + internalGetFieldAccessorTable() { + return org.xtreemfs.foundation.pbrpc.generatedinterfaces.RPC.internal_static_xtreemfs_pbrpc_RPCHeader_ErrorResponse_fieldAccessorTable + .ensureFieldAccessorsInitialized( + org.xtreemfs.foundation.pbrpc.generatedinterfaces.RPC.RPCHeader.ErrorResponse.class, org.xtreemfs.foundation.pbrpc.generatedinterfaces.RPC.RPCHeader.ErrorResponse.Builder.class); + } + // Construct using org.xtreemfs.foundation.pbrpc.generatedinterfaces.RPC.RPCHeader.ErrorResponse.newBuilder() - private Builder() {} - - private static Builder create() { - Builder builder = new Builder(); - builder.result = new org.xtreemfs.foundation.pbrpc.generatedinterfaces.RPC.RPCHeader.ErrorResponse(); - return builder; + private Builder() { + maybeForceBuilderInitialization(); } - - protected org.xtreemfs.foundation.pbrpc.generatedinterfaces.RPC.RPCHeader.ErrorResponse internalGetResult() { - return result; + + private Builder( + com.google.protobuf.GeneratedMessage.BuilderParent parent) { + super(parent); + maybeForceBuilderInitialization(); } - - public Builder clear() { - if (result == null) { - throw new IllegalStateException( - "Cannot call clear() after build()."); + private void maybeForceBuilderInitialization() { + if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) { } - result = new org.xtreemfs.foundation.pbrpc.generatedinterfaces.RPC.RPCHeader.ErrorResponse(); + } + private static Builder create() { + return new Builder(); + } + + public Builder clear() { + super.clear(); + errorType_ = org.xtreemfs.foundation.pbrpc.generatedinterfaces.RPC.ErrorType.INVALID_INTERFACE_ID; + bitField0_ = (bitField0_ & ~0x00000001); + posixErrno_ = org.xtreemfs.foundation.pbrpc.generatedinterfaces.RPC.POSIXErrno.POSIX_ERROR_NONE; + bitField0_ = (bitField0_ & ~0x00000002); + errorMessage_ = ""; + bitField0_ = (bitField0_ & ~0x00000004); + debugInfo_ = ""; + bitField0_ = (bitField0_ & ~0x00000008); + redirectToServerUuid_ = ""; + bitField0_ = (bitField0_ & ~0x00000010); return this; } - + public Builder clone() { - return create().mergeFrom(result); + return create().mergeFrom(buildPartial()); } - + public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() { - return org.xtreemfs.foundation.pbrpc.generatedinterfaces.RPC.RPCHeader.ErrorResponse.getDescriptor(); + return org.xtreemfs.foundation.pbrpc.generatedinterfaces.RPC.internal_static_xtreemfs_pbrpc_RPCHeader_ErrorResponse_descriptor; } - + public org.xtreemfs.foundation.pbrpc.generatedinterfaces.RPC.RPCHeader.ErrorResponse getDefaultInstanceForType() { return org.xtreemfs.foundation.pbrpc.generatedinterfaces.RPC.RPCHeader.ErrorResponse.getDefaultInstance(); } - - public boolean isInitialized() { - return result.isInitialized(); - } + public org.xtreemfs.foundation.pbrpc.generatedinterfaces.RPC.RPCHeader.ErrorResponse build() { - if (result != null && !isInitialized()) { + org.xtreemfs.foundation.pbrpc.generatedinterfaces.RPC.RPCHeader.ErrorResponse result = buildPartial(); + if (!result.isInitialized()) { throw newUninitializedMessageException(result); } - return buildPartial(); - } - - private org.xtreemfs.foundation.pbrpc.generatedinterfaces.RPC.RPCHeader.ErrorResponse buildParsed() - throws com.google.protobuf.InvalidProtocolBufferException { - if (!isInitialized()) { - throw newUninitializedMessageException( - result).asInvalidProtocolBufferException(); - } - return buildPartial(); + return result; } - + public org.xtreemfs.foundation.pbrpc.generatedinterfaces.RPC.RPCHeader.ErrorResponse buildPartial() { - if (result == null) { - throw new IllegalStateException( - "build() has already been called on this Builder."); + org.xtreemfs.foundation.pbrpc.generatedinterfaces.RPC.RPCHeader.ErrorResponse result = new org.xtreemfs.foundation.pbrpc.generatedinterfaces.RPC.RPCHeader.ErrorResponse(this); + int from_bitField0_ = bitField0_; + int to_bitField0_ = 0; + if (((from_bitField0_ & 0x00000001) == 0x00000001)) { + to_bitField0_ |= 0x00000001; + } + result.errorType_ = errorType_; + if (((from_bitField0_ & 0x00000002) == 0x00000002)) { + to_bitField0_ |= 0x00000002; + } + result.posixErrno_ = posixErrno_; + if (((from_bitField0_ & 0x00000004) == 0x00000004)) { + to_bitField0_ |= 0x00000004; + } + result.errorMessage_ = errorMessage_; + if (((from_bitField0_ & 0x00000008) == 0x00000008)) { + to_bitField0_ |= 0x00000008; } - org.xtreemfs.foundation.pbrpc.generatedinterfaces.RPC.RPCHeader.ErrorResponse returnMe = result; - result = null; - return returnMe; + result.debugInfo_ = debugInfo_; + if (((from_bitField0_ & 0x00000010) == 0x00000010)) { + to_bitField0_ |= 0x00000010; + } + result.redirectToServerUuid_ = redirectToServerUuid_; + result.bitField0_ = to_bitField0_; + onBuilt(); + return result; } - + public Builder mergeFrom(com.google.protobuf.Message other) { if (other instanceof org.xtreemfs.foundation.pbrpc.generatedinterfaces.RPC.RPCHeader.ErrorResponse) { return mergeFrom((org.xtreemfs.foundation.pbrpc.generatedinterfaces.RPC.RPCHeader.ErrorResponse)other); @@ -2131,7 +4782,7 @@ public final class RPC { return this; } } - + public Builder mergeFrom(org.xtreemfs.foundation.pbrpc.generatedinterfaces.RPC.RPCHeader.ErrorResponse other) { if (other == org.xtreemfs.foundation.pbrpc.generatedinterfaces.RPC.RPCHeader.ErrorResponse.getDefaultInstance()) return this; if (other.hasErrorType()) { @@ -2141,425 +4792,859 @@ public final class RPC { setPosixErrno(other.getPosixErrno()); } if (other.hasErrorMessage()) { - setErrorMessage(other.getErrorMessage()); + bitField0_ |= 0x00000004; + errorMessage_ = other.errorMessage_; + onChanged(); } if (other.hasDebugInfo()) { - setDebugInfo(other.getDebugInfo()); + bitField0_ |= 0x00000008; + debugInfo_ = other.debugInfo_; + onChanged(); } if (other.hasRedirectToServerUuid()) { - setRedirectToServerUuid(other.getRedirectToServerUuid()); + bitField0_ |= 0x00000010; + redirectToServerUuid_ = other.redirectToServerUuid_; + onChanged(); } this.mergeUnknownFields(other.getUnknownFields()); return this; } - + + public final boolean isInitialized() { + if (!hasErrorType()) { + + return false; + } + return true; + } + public Builder mergeFrom( com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - com.google.protobuf.UnknownFieldSet.Builder unknownFields = - com.google.protobuf.UnknownFieldSet.newBuilder( - this.getUnknownFields()); - while (true) { - int tag = input.readTag(); - switch (tag) { - case 0: - this.setUnknownFields(unknownFields.build()); - return this; - default: { - if (!parseUnknownField(input, unknownFields, - extensionRegistry, tag)) { - this.setUnknownFields(unknownFields.build()); - return this; - } - break; - } - case 8: { - int rawValue = input.readEnum(); - org.xtreemfs.foundation.pbrpc.generatedinterfaces.RPC.ErrorType value = org.xtreemfs.foundation.pbrpc.generatedinterfaces.RPC.ErrorType.valueOf(rawValue); - if (value == null) { - unknownFields.mergeVarintField(1, rawValue); - } else { - setErrorType(value); - } - break; - } - case 16: { - int rawValue = input.readEnum(); - org.xtreemfs.foundation.pbrpc.generatedinterfaces.RPC.POSIXErrno value = org.xtreemfs.foundation.pbrpc.generatedinterfaces.RPC.POSIXErrno.valueOf(rawValue); - if (value == null) { - unknownFields.mergeVarintField(2, rawValue); - } else { - setPosixErrno(value); - } - break; - } - case 26: { - setErrorMessage(input.readString()); - break; - } - case 34: { - setDebugInfo(input.readString()); - break; - } - case 42: { - setRedirectToServerUuid(input.readString()); - break; - } + org.xtreemfs.foundation.pbrpc.generatedinterfaces.RPC.RPCHeader.ErrorResponse parsedMessage = null; + try { + parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + parsedMessage = (org.xtreemfs.foundation.pbrpc.generatedinterfaces.RPC.RPCHeader.ErrorResponse) e.getUnfinishedMessage(); + throw e; + } finally { + if (parsedMessage != null) { + mergeFrom(parsedMessage); } } + return this; } - - + private int bitField0_; + // required .xtreemfs.pbrpc.ErrorType error_type = 1; + private org.xtreemfs.foundation.pbrpc.generatedinterfaces.RPC.ErrorType errorType_ = org.xtreemfs.foundation.pbrpc.generatedinterfaces.RPC.ErrorType.INVALID_INTERFACE_ID; + /** + * required .xtreemfs.pbrpc.ErrorType error_type = 1; + * + *
+         * Error type details.
+         * 
+ */ public boolean hasErrorType() { - return result.hasErrorType(); - } + return ((bitField0_ & 0x00000001) == 0x00000001); + } + /** + * required .xtreemfs.pbrpc.ErrorType error_type = 1; + * + *
+         * Error type details.
+         * 
+ */ public org.xtreemfs.foundation.pbrpc.generatedinterfaces.RPC.ErrorType getErrorType() { - return result.getErrorType(); - } + return errorType_; + } + /** + * required .xtreemfs.pbrpc.ErrorType error_type = 1; + * + *
+         * Error type details.
+         * 
+ */ public Builder setErrorType(org.xtreemfs.foundation.pbrpc.generatedinterfaces.RPC.ErrorType value) { if (value == null) { throw new NullPointerException(); } - result.hasErrorType = true; - result.errorType_ = value; + bitField0_ |= 0x00000001; + errorType_ = value; + onChanged(); return this; } + /** + * required .xtreemfs.pbrpc.ErrorType error_type = 1; + * + *
+         * Error type details.
+         * 
+ */ public Builder clearErrorType() { - result.hasErrorType = false; - result.errorType_ = org.xtreemfs.foundation.pbrpc.generatedinterfaces.RPC.ErrorType.INVALID_INTERFACE_ID; + bitField0_ = (bitField0_ & ~0x00000001); + errorType_ = org.xtreemfs.foundation.pbrpc.generatedinterfaces.RPC.ErrorType.INVALID_INTERFACE_ID; + onChanged(); return this; } - + // optional .xtreemfs.pbrpc.POSIXErrno posix_errno = 2 [default = POSIX_ERROR_NONE]; + private org.xtreemfs.foundation.pbrpc.generatedinterfaces.RPC.POSIXErrno posixErrno_ = org.xtreemfs.foundation.pbrpc.generatedinterfaces.RPC.POSIXErrno.POSIX_ERROR_NONE; + /** + * optional .xtreemfs.pbrpc.POSIXErrno posix_errno = 2 [default = POSIX_ERROR_NONE]; + * + *
+         * Optional POSIX errno.
+         * 
+ */ public boolean hasPosixErrno() { - return result.hasPosixErrno(); - } + return ((bitField0_ & 0x00000002) == 0x00000002); + } + /** + * optional .xtreemfs.pbrpc.POSIXErrno posix_errno = 2 [default = POSIX_ERROR_NONE]; + * + *
+         * Optional POSIX errno.
+         * 
+ */ public org.xtreemfs.foundation.pbrpc.generatedinterfaces.RPC.POSIXErrno getPosixErrno() { - return result.getPosixErrno(); - } + return posixErrno_; + } + /** + * optional .xtreemfs.pbrpc.POSIXErrno posix_errno = 2 [default = POSIX_ERROR_NONE]; + * + *
+         * Optional POSIX errno.
+         * 
+ */ public Builder setPosixErrno(org.xtreemfs.foundation.pbrpc.generatedinterfaces.RPC.POSIXErrno value) { if (value == null) { throw new NullPointerException(); } - result.hasPosixErrno = true; - result.posixErrno_ = value; + bitField0_ |= 0x00000002; + posixErrno_ = value; + onChanged(); return this; } + /** + * optional .xtreemfs.pbrpc.POSIXErrno posix_errno = 2 [default = POSIX_ERROR_NONE]; + * + *
+         * Optional POSIX errno.
+         * 
+ */ public Builder clearPosixErrno() { - result.hasPosixErrno = false; - result.posixErrno_ = org.xtreemfs.foundation.pbrpc.generatedinterfaces.RPC.POSIXErrno.POSIX_ERROR_NONE; + bitField0_ = (bitField0_ & ~0x00000002); + posixErrno_ = org.xtreemfs.foundation.pbrpc.generatedinterfaces.RPC.POSIXErrno.POSIX_ERROR_NONE; + onChanged(); return this; } - + // optional string error_message = 3; + private java.lang.Object errorMessage_ = ""; + /** + * optional string error_message = 3; + * + *
+         * Optional human readable error message in English (not localized!).
+         * 
+ */ public boolean hasErrorMessage() { - return result.hasErrorMessage(); - } + return ((bitField0_ & 0x00000004) == 0x00000004); + } + /** + * optional string error_message = 3; + * + *
+         * Optional human readable error message in English (not localized!).
+         * 
+ */ public java.lang.String getErrorMessage() { - return result.getErrorMessage(); + java.lang.Object ref = errorMessage_; + if (!(ref instanceof java.lang.String)) { + java.lang.String s = ((com.google.protobuf.ByteString) ref) + .toStringUtf8(); + errorMessage_ = s; + return s; + } else { + return (java.lang.String) ref; + } + } + /** + * optional string error_message = 3; + * + *
+         * Optional human readable error message in English (not localized!).
+         * 
+ */ + public com.google.protobuf.ByteString + getErrorMessageBytes() { + java.lang.Object ref = errorMessage_; + if (ref instanceof String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + errorMessage_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } } - public Builder setErrorMessage(java.lang.String value) { + /** + * optional string error_message = 3; + * + *
+         * Optional human readable error message in English (not localized!).
+         * 
+ */ + public Builder setErrorMessage( + java.lang.String value) { if (value == null) { throw new NullPointerException(); } - result.hasErrorMessage = true; - result.errorMessage_ = value; + bitField0_ |= 0x00000004; + errorMessage_ = value; + onChanged(); return this; } + /** + * optional string error_message = 3; + * + *
+         * Optional human readable error message in English (not localized!).
+         * 
+ */ public Builder clearErrorMessage() { - result.hasErrorMessage = false; - result.errorMessage_ = getDefaultInstance().getErrorMessage(); + bitField0_ = (bitField0_ & ~0x00000004); + errorMessage_ = getDefaultInstance().getErrorMessage(); + onChanged(); + return this; + } + /** + * optional string error_message = 3; + * + *
+         * Optional human readable error message in English (not localized!).
+         * 
+ */ + public Builder setErrorMessageBytes( + com.google.protobuf.ByteString value) { + if (value == null) { + throw new NullPointerException(); + } + bitField0_ |= 0x00000004; + errorMessage_ = value; + onChanged(); return this; } - + // optional string debug_info = 4; + private java.lang.Object debugInfo_ = ""; + /** + * optional string debug_info = 4; + * + *
+         * Optional debug information that only makes sense to developers such
+         * as stack traces.
+         * 
+ */ public boolean hasDebugInfo() { - return result.hasDebugInfo(); - } + return ((bitField0_ & 0x00000008) == 0x00000008); + } + /** + * optional string debug_info = 4; + * + *
+         * Optional debug information that only makes sense to developers such
+         * as stack traces.
+         * 
+ */ public java.lang.String getDebugInfo() { - return result.getDebugInfo(); + java.lang.Object ref = debugInfo_; + if (!(ref instanceof java.lang.String)) { + java.lang.String s = ((com.google.protobuf.ByteString) ref) + .toStringUtf8(); + debugInfo_ = s; + return s; + } else { + return (java.lang.String) ref; + } + } + /** + * optional string debug_info = 4; + * + *
+         * Optional debug information that only makes sense to developers such
+         * as stack traces.
+         * 
+ */ + public com.google.protobuf.ByteString + getDebugInfoBytes() { + java.lang.Object ref = debugInfo_; + if (ref instanceof String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + debugInfo_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } } - public Builder setDebugInfo(java.lang.String value) { + /** + * optional string debug_info = 4; + * + *
+         * Optional debug information that only makes sense to developers such
+         * as stack traces.
+         * 
+ */ + public Builder setDebugInfo( + java.lang.String value) { if (value == null) { throw new NullPointerException(); } - result.hasDebugInfo = true; - result.debugInfo_ = value; + bitField0_ |= 0x00000008; + debugInfo_ = value; + onChanged(); return this; } + /** + * optional string debug_info = 4; + * + *
+         * Optional debug information that only makes sense to developers such
+         * as stack traces.
+         * 
+ */ public Builder clearDebugInfo() { - result.hasDebugInfo = false; - result.debugInfo_ = getDefaultInstance().getDebugInfo(); + bitField0_ = (bitField0_ & ~0x00000008); + debugInfo_ = getDefaultInstance().getDebugInfo(); + onChanged(); + return this; + } + /** + * optional string debug_info = 4; + * + *
+         * Optional debug information that only makes sense to developers such
+         * as stack traces.
+         * 
+ */ + public Builder setDebugInfoBytes( + com.google.protobuf.ByteString value) { + if (value == null) { + throw new NullPointerException(); + } + bitField0_ |= 0x00000008; + debugInfo_ = value; + onChanged(); return this; } - + // optional string redirect_to_server_uuid = 5; + private java.lang.Object redirectToServerUuid_ = ""; + /** + * optional string redirect_to_server_uuid = 5; + * + *
+         * Optional UUID of the server to use instead. Required when error_type is REDIRECT.
+         * 
+ */ public boolean hasRedirectToServerUuid() { - return result.hasRedirectToServerUuid(); - } + return ((bitField0_ & 0x00000010) == 0x00000010); + } + /** + * optional string redirect_to_server_uuid = 5; + * + *
+         * Optional UUID of the server to use instead. Required when error_type is REDIRECT.
+         * 
+ */ public java.lang.String getRedirectToServerUuid() { - return result.getRedirectToServerUuid(); + java.lang.Object ref = redirectToServerUuid_; + if (!(ref instanceof java.lang.String)) { + java.lang.String s = ((com.google.protobuf.ByteString) ref) + .toStringUtf8(); + redirectToServerUuid_ = s; + return s; + } else { + return (java.lang.String) ref; + } + } + /** + * optional string redirect_to_server_uuid = 5; + * + *
+         * Optional UUID of the server to use instead. Required when error_type is REDIRECT.
+         * 
+ */ + public com.google.protobuf.ByteString + getRedirectToServerUuidBytes() { + java.lang.Object ref = redirectToServerUuid_; + if (ref instanceof String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + redirectToServerUuid_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } } - public Builder setRedirectToServerUuid(java.lang.String value) { + /** + * optional string redirect_to_server_uuid = 5; + * + *
+         * Optional UUID of the server to use instead. Required when error_type is REDIRECT.
+         * 
+ */ + public Builder setRedirectToServerUuid( + java.lang.String value) { if (value == null) { throw new NullPointerException(); } - result.hasRedirectToServerUuid = true; - result.redirectToServerUuid_ = value; + bitField0_ |= 0x00000010; + redirectToServerUuid_ = value; + onChanged(); return this; } + /** + * optional string redirect_to_server_uuid = 5; + * + *
+         * Optional UUID of the server to use instead. Required when error_type is REDIRECT.
+         * 
+ */ public Builder clearRedirectToServerUuid() { - result.hasRedirectToServerUuid = false; - result.redirectToServerUuid_ = getDefaultInstance().getRedirectToServerUuid(); + bitField0_ = (bitField0_ & ~0x00000010); + redirectToServerUuid_ = getDefaultInstance().getRedirectToServerUuid(); + onChanged(); + return this; + } + /** + * optional string redirect_to_server_uuid = 5; + * + *
+         * Optional UUID of the server to use instead. Required when error_type is REDIRECT.
+         * 
+ */ + public Builder setRedirectToServerUuidBytes( + com.google.protobuf.ByteString value) { + if (value == null) { + throw new NullPointerException(); + } + bitField0_ |= 0x00000010; + redirectToServerUuid_ = value; + onChanged(); return this; } - + // @@protoc_insertion_point(builder_scope:xtreemfs.pbrpc.RPCHeader.ErrorResponse) } - + static { defaultInstance = new ErrorResponse(true); - org.xtreemfs.foundation.pbrpc.generatedinterfaces.RPC.internalForceInit(); defaultInstance.initFields(); } - + // @@protoc_insertion_point(class_scope:xtreemfs.pbrpc.RPCHeader.ErrorResponse) } - + + private int bitField0_; // required fixed32 call_id = 1; public static final int CALL_ID_FIELD_NUMBER = 1; - private boolean hasCallId; - private int callId_ = 0; - public boolean hasCallId() { return hasCallId; } - public int getCallId() { return callId_; } - + private int callId_; + /** + * required fixed32 call_id = 1; + * + *
+     * A unique id to identify the request. The response sent back by the server will have
+     * the same call_id.
+     * The call_id must be unqiue per TCP connection. In addition, clients should start
+     * with a value based e.g. on time to avoid problems after a client restart.
+     * 
+ */ + public boolean hasCallId() { + return ((bitField0_ & 0x00000001) == 0x00000001); + } + /** + * required fixed32 call_id = 1; + * + *
+     * A unique id to identify the request. The response sent back by the server will have
+     * the same call_id.
+     * The call_id must be unqiue per TCP connection. In addition, clients should start
+     * with a value based e.g. on time to avoid problems after a client restart.
+     * 
+ */ + public int getCallId() { + return callId_; + } + // required .xtreemfs.pbrpc.MessageType message_type = 2; public static final int MESSAGE_TYPE_FIELD_NUMBER = 2; - private boolean hasMessageType; private org.xtreemfs.foundation.pbrpc.generatedinterfaces.RPC.MessageType messageType_; - public boolean hasMessageType() { return hasMessageType; } - public org.xtreemfs.foundation.pbrpc.generatedinterfaces.RPC.MessageType getMessageType() { return messageType_; } - + /** + * required .xtreemfs.pbrpc.MessageType message_type = 2; + * + *
+     * Type of this RPC message (Request, Response).
+     * 
+ */ + public boolean hasMessageType() { + return ((bitField0_ & 0x00000002) == 0x00000002); + } + /** + * required .xtreemfs.pbrpc.MessageType message_type = 2; + * + *
+     * Type of this RPC message (Request, Response).
+     * 
+ */ + public org.xtreemfs.foundation.pbrpc.generatedinterfaces.RPC.MessageType getMessageType() { + return messageType_; + } + // optional .xtreemfs.pbrpc.RPCHeader.RequestHeader request_header = 3; public static final int REQUEST_HEADER_FIELD_NUMBER = 3; - private boolean hasRequestHeader; private org.xtreemfs.foundation.pbrpc.generatedinterfaces.RPC.RPCHeader.RequestHeader requestHeader_; - public boolean hasRequestHeader() { return hasRequestHeader; } - public org.xtreemfs.foundation.pbrpc.generatedinterfaces.RPC.RPCHeader.RequestHeader getRequestHeader() { return requestHeader_; } - + /** + * optional .xtreemfs.pbrpc.RPCHeader.RequestHeader request_header = 3; + * + *
+     * Optional request_header, required if message_type is RPC_REQUEST.
+     * 
+ */ + public boolean hasRequestHeader() { + return ((bitField0_ & 0x00000004) == 0x00000004); + } + /** + * optional .xtreemfs.pbrpc.RPCHeader.RequestHeader request_header = 3; + * + *
+     * Optional request_header, required if message_type is RPC_REQUEST.
+     * 
+ */ + public org.xtreemfs.foundation.pbrpc.generatedinterfaces.RPC.RPCHeader.RequestHeader getRequestHeader() { + return requestHeader_; + } + /** + * optional .xtreemfs.pbrpc.RPCHeader.RequestHeader request_header = 3; + * + *
+     * Optional request_header, required if message_type is RPC_REQUEST.
+     * 
+ */ + public org.xtreemfs.foundation.pbrpc.generatedinterfaces.RPC.RPCHeader.RequestHeaderOrBuilder getRequestHeaderOrBuilder() { + return requestHeader_; + } + // optional .xtreemfs.pbrpc.RPCHeader.ErrorResponse error_response = 4; public static final int ERROR_RESPONSE_FIELD_NUMBER = 4; - private boolean hasErrorResponse; private org.xtreemfs.foundation.pbrpc.generatedinterfaces.RPC.RPCHeader.ErrorResponse errorResponse_; - public boolean hasErrorResponse() { return hasErrorResponse; } - public org.xtreemfs.foundation.pbrpc.generatedinterfaces.RPC.RPCHeader.ErrorResponse getErrorResponse() { return errorResponse_; } - + /** + * optional .xtreemfs.pbrpc.RPCHeader.ErrorResponse error_response = 4; + * + *
+     * Optional error_response, required if message_type is RPC_ERROR_RESPONSE.
+     * 
+ */ + public boolean hasErrorResponse() { + return ((bitField0_ & 0x00000008) == 0x00000008); + } + /** + * optional .xtreemfs.pbrpc.RPCHeader.ErrorResponse error_response = 4; + * + *
+     * Optional error_response, required if message_type is RPC_ERROR_RESPONSE.
+     * 
+ */ + public org.xtreemfs.foundation.pbrpc.generatedinterfaces.RPC.RPCHeader.ErrorResponse getErrorResponse() { + return errorResponse_; + } + /** + * optional .xtreemfs.pbrpc.RPCHeader.ErrorResponse error_response = 4; + * + *
+     * Optional error_response, required if message_type is RPC_ERROR_RESPONSE.
+     * 
+ */ + public org.xtreemfs.foundation.pbrpc.generatedinterfaces.RPC.RPCHeader.ErrorResponseOrBuilder getErrorResponseOrBuilder() { + return errorResponse_; + } + private void initFields() { + callId_ = 0; messageType_ = org.xtreemfs.foundation.pbrpc.generatedinterfaces.RPC.MessageType.RPC_REQUEST; requestHeader_ = org.xtreemfs.foundation.pbrpc.generatedinterfaces.RPC.RPCHeader.RequestHeader.getDefaultInstance(); errorResponse_ = org.xtreemfs.foundation.pbrpc.generatedinterfaces.RPC.RPCHeader.ErrorResponse.getDefaultInstance(); } + private byte memoizedIsInitialized = -1; public final boolean isInitialized() { - if (!hasCallId) return false; - if (!hasMessageType) return false; + byte isInitialized = memoizedIsInitialized; + if (isInitialized != -1) return isInitialized == 1; + + if (!hasCallId()) { + memoizedIsInitialized = 0; + return false; + } + if (!hasMessageType()) { + memoizedIsInitialized = 0; + return false; + } if (hasRequestHeader()) { - if (!getRequestHeader().isInitialized()) return false; + if (!getRequestHeader().isInitialized()) { + memoizedIsInitialized = 0; + return false; + } } if (hasErrorResponse()) { - if (!getErrorResponse().isInitialized()) return false; + if (!getErrorResponse().isInitialized()) { + memoizedIsInitialized = 0; + return false; + } } + memoizedIsInitialized = 1; return true; } - + public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException { getSerializedSize(); - if (hasCallId()) { - output.writeFixed32(1, getCallId()); + if (((bitField0_ & 0x00000001) == 0x00000001)) { + output.writeFixed32(1, callId_); } - if (hasMessageType()) { - output.writeEnum(2, getMessageType().getNumber()); + if (((bitField0_ & 0x00000002) == 0x00000002)) { + output.writeEnum(2, messageType_.getNumber()); } - if (hasRequestHeader()) { - output.writeMessage(3, getRequestHeader()); + if (((bitField0_ & 0x00000004) == 0x00000004)) { + output.writeMessage(3, requestHeader_); } - if (hasErrorResponse()) { - output.writeMessage(4, getErrorResponse()); + if (((bitField0_ & 0x00000008) == 0x00000008)) { + output.writeMessage(4, errorResponse_); } getUnknownFields().writeTo(output); } - + private int memoizedSerializedSize = -1; public int getSerializedSize() { int size = memoizedSerializedSize; if (size != -1) return size; - + size = 0; - if (hasCallId()) { + if (((bitField0_ & 0x00000001) == 0x00000001)) { size += com.google.protobuf.CodedOutputStream - .computeFixed32Size(1, getCallId()); + .computeFixed32Size(1, callId_); } - if (hasMessageType()) { + if (((bitField0_ & 0x00000002) == 0x00000002)) { size += com.google.protobuf.CodedOutputStream - .computeEnumSize(2, getMessageType().getNumber()); + .computeEnumSize(2, messageType_.getNumber()); } - if (hasRequestHeader()) { + if (((bitField0_ & 0x00000004) == 0x00000004)) { size += com.google.protobuf.CodedOutputStream - .computeMessageSize(3, getRequestHeader()); + .computeMessageSize(3, requestHeader_); } - if (hasErrorResponse()) { + if (((bitField0_ & 0x00000008) == 0x00000008)) { size += com.google.protobuf.CodedOutputStream - .computeMessageSize(4, getErrorResponse()); + .computeMessageSize(4, errorResponse_); } size += getUnknownFields().getSerializedSize(); memoizedSerializedSize = size; return size; } - + + private static final long serialVersionUID = 0L; + @java.lang.Override + protected java.lang.Object writeReplace() + throws java.io.ObjectStreamException { + return super.writeReplace(); + } + public static org.xtreemfs.foundation.pbrpc.generatedinterfaces.RPC.RPCHeader parseFrom( com.google.protobuf.ByteString data) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data).buildParsed(); + return PARSER.parseFrom(data); } public static org.xtreemfs.foundation.pbrpc.generatedinterfaces.RPC.RPCHeader parseFrom( com.google.protobuf.ByteString data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(data, extensionRegistry); } public static org.xtreemfs.foundation.pbrpc.generatedinterfaces.RPC.RPCHeader parseFrom(byte[] data) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data).buildParsed(); + return PARSER.parseFrom(data); } public static org.xtreemfs.foundation.pbrpc.generatedinterfaces.RPC.RPCHeader parseFrom( byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(data, extensionRegistry); } public static org.xtreemfs.foundation.pbrpc.generatedinterfaces.RPC.RPCHeader parseFrom(java.io.InputStream input) throws java.io.IOException { - return newBuilder().mergeFrom(input).buildParsed(); + return PARSER.parseFrom(input); } public static org.xtreemfs.foundation.pbrpc.generatedinterfaces.RPC.RPCHeader parseFrom( java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - return newBuilder().mergeFrom(input, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(input, extensionRegistry); } public static org.xtreemfs.foundation.pbrpc.generatedinterfaces.RPC.RPCHeader parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException { - Builder builder = newBuilder(); - if (builder.mergeDelimitedFrom(input)) { - return builder.buildParsed(); - } else { - return null; - } + return PARSER.parseDelimitedFrom(input); } public static org.xtreemfs.foundation.pbrpc.generatedinterfaces.RPC.RPCHeader parseDelimitedFrom( java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - Builder builder = newBuilder(); - if (builder.mergeDelimitedFrom(input, extensionRegistry)) { - return builder.buildParsed(); - } else { - return null; - } + return PARSER.parseDelimitedFrom(input, extensionRegistry); } public static org.xtreemfs.foundation.pbrpc.generatedinterfaces.RPC.RPCHeader parseFrom( com.google.protobuf.CodedInputStream input) throws java.io.IOException { - return newBuilder().mergeFrom(input).buildParsed(); + return PARSER.parseFrom(input); } public static org.xtreemfs.foundation.pbrpc.generatedinterfaces.RPC.RPCHeader parseFrom( com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - return newBuilder().mergeFrom(input, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(input, extensionRegistry); } - + public static Builder newBuilder() { return Builder.create(); } public Builder newBuilderForType() { return newBuilder(); } public static Builder newBuilder(org.xtreemfs.foundation.pbrpc.generatedinterfaces.RPC.RPCHeader prototype) { return newBuilder().mergeFrom(prototype); } public Builder toBuilder() { return newBuilder(this); } - + + @java.lang.Override + protected Builder newBuilderForType( + com.google.protobuf.GeneratedMessage.BuilderParent parent) { + Builder builder = new Builder(parent); + return builder; + } + /** + * Protobuf type {@code xtreemfs.pbrpc.RPCHeader} + * + *
+     * RPC header message sent in the first request fragment.
+     * 
+ */ public static final class Builder extends - com.google.protobuf.GeneratedMessage.Builder { - private org.xtreemfs.foundation.pbrpc.generatedinterfaces.RPC.RPCHeader result; - + com.google.protobuf.GeneratedMessage.Builder + implements org.xtreemfs.foundation.pbrpc.generatedinterfaces.RPC.RPCHeaderOrBuilder { + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return org.xtreemfs.foundation.pbrpc.generatedinterfaces.RPC.internal_static_xtreemfs_pbrpc_RPCHeader_descriptor; + } + + protected com.google.protobuf.GeneratedMessage.FieldAccessorTable + internalGetFieldAccessorTable() { + return org.xtreemfs.foundation.pbrpc.generatedinterfaces.RPC.internal_static_xtreemfs_pbrpc_RPCHeader_fieldAccessorTable + .ensureFieldAccessorsInitialized( + org.xtreemfs.foundation.pbrpc.generatedinterfaces.RPC.RPCHeader.class, org.xtreemfs.foundation.pbrpc.generatedinterfaces.RPC.RPCHeader.Builder.class); + } + // Construct using org.xtreemfs.foundation.pbrpc.generatedinterfaces.RPC.RPCHeader.newBuilder() - private Builder() {} - - private static Builder create() { - Builder builder = new Builder(); - builder.result = new org.xtreemfs.foundation.pbrpc.generatedinterfaces.RPC.RPCHeader(); - return builder; + private Builder() { + maybeForceBuilderInitialization(); } - - protected org.xtreemfs.foundation.pbrpc.generatedinterfaces.RPC.RPCHeader internalGetResult() { - return result; + + private Builder( + com.google.protobuf.GeneratedMessage.BuilderParent parent) { + super(parent); + maybeForceBuilderInitialization(); + } + private void maybeForceBuilderInitialization() { + if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) { + getRequestHeaderFieldBuilder(); + getErrorResponseFieldBuilder(); + } + } + private static Builder create() { + return new Builder(); } - + public Builder clear() { - if (result == null) { - throw new IllegalStateException( - "Cannot call clear() after build()."); + super.clear(); + callId_ = 0; + bitField0_ = (bitField0_ & ~0x00000001); + messageType_ = org.xtreemfs.foundation.pbrpc.generatedinterfaces.RPC.MessageType.RPC_REQUEST; + bitField0_ = (bitField0_ & ~0x00000002); + if (requestHeaderBuilder_ == null) { + requestHeader_ = org.xtreemfs.foundation.pbrpc.generatedinterfaces.RPC.RPCHeader.RequestHeader.getDefaultInstance(); + } else { + requestHeaderBuilder_.clear(); + } + bitField0_ = (bitField0_ & ~0x00000004); + if (errorResponseBuilder_ == null) { + errorResponse_ = org.xtreemfs.foundation.pbrpc.generatedinterfaces.RPC.RPCHeader.ErrorResponse.getDefaultInstance(); + } else { + errorResponseBuilder_.clear(); } - result = new org.xtreemfs.foundation.pbrpc.generatedinterfaces.RPC.RPCHeader(); + bitField0_ = (bitField0_ & ~0x00000008); return this; } - + public Builder clone() { - return create().mergeFrom(result); + return create().mergeFrom(buildPartial()); } - + public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() { - return org.xtreemfs.foundation.pbrpc.generatedinterfaces.RPC.RPCHeader.getDescriptor(); + return org.xtreemfs.foundation.pbrpc.generatedinterfaces.RPC.internal_static_xtreemfs_pbrpc_RPCHeader_descriptor; } - + public org.xtreemfs.foundation.pbrpc.generatedinterfaces.RPC.RPCHeader getDefaultInstanceForType() { return org.xtreemfs.foundation.pbrpc.generatedinterfaces.RPC.RPCHeader.getDefaultInstance(); } - - public boolean isInitialized() { - return result.isInitialized(); - } + public org.xtreemfs.foundation.pbrpc.generatedinterfaces.RPC.RPCHeader build() { - if (result != null && !isInitialized()) { + org.xtreemfs.foundation.pbrpc.generatedinterfaces.RPC.RPCHeader result = buildPartial(); + if (!result.isInitialized()) { throw newUninitializedMessageException(result); } - return buildPartial(); - } - - private org.xtreemfs.foundation.pbrpc.generatedinterfaces.RPC.RPCHeader buildParsed() - throws com.google.protobuf.InvalidProtocolBufferException { - if (!isInitialized()) { - throw newUninitializedMessageException( - result).asInvalidProtocolBufferException(); - } - return buildPartial(); + return result; } - + public org.xtreemfs.foundation.pbrpc.generatedinterfaces.RPC.RPCHeader buildPartial() { - if (result == null) { - throw new IllegalStateException( - "build() has already been called on this Builder."); + org.xtreemfs.foundation.pbrpc.generatedinterfaces.RPC.RPCHeader result = new org.xtreemfs.foundation.pbrpc.generatedinterfaces.RPC.RPCHeader(this); + int from_bitField0_ = bitField0_; + int to_bitField0_ = 0; + if (((from_bitField0_ & 0x00000001) == 0x00000001)) { + to_bitField0_ |= 0x00000001; + } + result.callId_ = callId_; + if (((from_bitField0_ & 0x00000002) == 0x00000002)) { + to_bitField0_ |= 0x00000002; + } + result.messageType_ = messageType_; + if (((from_bitField0_ & 0x00000004) == 0x00000004)) { + to_bitField0_ |= 0x00000004; + } + if (requestHeaderBuilder_ == null) { + result.requestHeader_ = requestHeader_; + } else { + result.requestHeader_ = requestHeaderBuilder_.build(); + } + if (((from_bitField0_ & 0x00000008) == 0x00000008)) { + to_bitField0_ |= 0x00000008; + } + if (errorResponseBuilder_ == null) { + result.errorResponse_ = errorResponse_; + } else { + result.errorResponse_ = errorResponseBuilder_.build(); } - org.xtreemfs.foundation.pbrpc.generatedinterfaces.RPC.RPCHeader returnMe = result; - result = null; - return returnMe; + result.bitField0_ = to_bitField0_; + onBuilt(); + return result; } - + public Builder mergeFrom(com.google.protobuf.Message other) { if (other instanceof org.xtreemfs.foundation.pbrpc.generatedinterfaces.RPC.RPCHeader) { return mergeFrom((org.xtreemfs.foundation.pbrpc.generatedinterfaces.RPC.RPCHeader)other); @@ -2568,7 +5653,7 @@ public final class RPC { return this; } } - + public Builder mergeFrom(org.xtreemfs.foundation.pbrpc.generatedinterfaces.RPC.RPCHeader other) { if (other == org.xtreemfs.foundation.pbrpc.generatedinterfaces.RPC.RPCHeader.getDefaultInstance()) return this; if (other.hasCallId()) { @@ -2586,190 +5671,480 @@ public final class RPC { this.mergeUnknownFields(other.getUnknownFields()); return this; } - + + public final boolean isInitialized() { + if (!hasCallId()) { + + return false; + } + if (!hasMessageType()) { + + return false; + } + if (hasRequestHeader()) { + if (!getRequestHeader().isInitialized()) { + + return false; + } + } + if (hasErrorResponse()) { + if (!getErrorResponse().isInitialized()) { + + return false; + } + } + return true; + } + public Builder mergeFrom( com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - com.google.protobuf.UnknownFieldSet.Builder unknownFields = - com.google.protobuf.UnknownFieldSet.newBuilder( - this.getUnknownFields()); - while (true) { - int tag = input.readTag(); - switch (tag) { - case 0: - this.setUnknownFields(unknownFields.build()); - return this; - default: { - if (!parseUnknownField(input, unknownFields, - extensionRegistry, tag)) { - this.setUnknownFields(unknownFields.build()); - return this; - } - break; - } - case 13: { - setCallId(input.readFixed32()); - break; - } - case 16: { - int rawValue = input.readEnum(); - org.xtreemfs.foundation.pbrpc.generatedinterfaces.RPC.MessageType value = org.xtreemfs.foundation.pbrpc.generatedinterfaces.RPC.MessageType.valueOf(rawValue); - if (value == null) { - unknownFields.mergeVarintField(2, rawValue); - } else { - setMessageType(value); - } - break; - } - case 26: { - org.xtreemfs.foundation.pbrpc.generatedinterfaces.RPC.RPCHeader.RequestHeader.Builder subBuilder = org.xtreemfs.foundation.pbrpc.generatedinterfaces.RPC.RPCHeader.RequestHeader.newBuilder(); - if (hasRequestHeader()) { - subBuilder.mergeFrom(getRequestHeader()); - } - input.readMessage(subBuilder, extensionRegistry); - setRequestHeader(subBuilder.buildPartial()); - break; - } - case 34: { - org.xtreemfs.foundation.pbrpc.generatedinterfaces.RPC.RPCHeader.ErrorResponse.Builder subBuilder = org.xtreemfs.foundation.pbrpc.generatedinterfaces.RPC.RPCHeader.ErrorResponse.newBuilder(); - if (hasErrorResponse()) { - subBuilder.mergeFrom(getErrorResponse()); - } - input.readMessage(subBuilder, extensionRegistry); - setErrorResponse(subBuilder.buildPartial()); - break; - } + org.xtreemfs.foundation.pbrpc.generatedinterfaces.RPC.RPCHeader parsedMessage = null; + try { + parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + parsedMessage = (org.xtreemfs.foundation.pbrpc.generatedinterfaces.RPC.RPCHeader) e.getUnfinishedMessage(); + throw e; + } finally { + if (parsedMessage != null) { + mergeFrom(parsedMessage); } } + return this; } - - + private int bitField0_; + // required fixed32 call_id = 1; + private int callId_ ; + /** + * required fixed32 call_id = 1; + * + *
+       * A unique id to identify the request. The response sent back by the server will have
+       * the same call_id.
+       * The call_id must be unqiue per TCP connection. In addition, clients should start
+       * with a value based e.g. on time to avoid problems after a client restart.
+       * 
+ */ public boolean hasCallId() { - return result.hasCallId(); - } + return ((bitField0_ & 0x00000001) == 0x00000001); + } + /** + * required fixed32 call_id = 1; + * + *
+       * A unique id to identify the request. The response sent back by the server will have
+       * the same call_id.
+       * The call_id must be unqiue per TCP connection. In addition, clients should start
+       * with a value based e.g. on time to avoid problems after a client restart.
+       * 
+ */ public int getCallId() { - return result.getCallId(); - } + return callId_; + } + /** + * required fixed32 call_id = 1; + * + *
+       * A unique id to identify the request. The response sent back by the server will have
+       * the same call_id.
+       * The call_id must be unqiue per TCP connection. In addition, clients should start
+       * with a value based e.g. on time to avoid problems after a client restart.
+       * 
+ */ public Builder setCallId(int value) { - result.hasCallId = true; - result.callId_ = value; + bitField0_ |= 0x00000001; + callId_ = value; + onChanged(); return this; } + /** + * required fixed32 call_id = 1; + * + *
+       * A unique id to identify the request. The response sent back by the server will have
+       * the same call_id.
+       * The call_id must be unqiue per TCP connection. In addition, clients should start
+       * with a value based e.g. on time to avoid problems after a client restart.
+       * 
+ */ public Builder clearCallId() { - result.hasCallId = false; - result.callId_ = 0; + bitField0_ = (bitField0_ & ~0x00000001); + callId_ = 0; + onChanged(); return this; } - + // required .xtreemfs.pbrpc.MessageType message_type = 2; + private org.xtreemfs.foundation.pbrpc.generatedinterfaces.RPC.MessageType messageType_ = org.xtreemfs.foundation.pbrpc.generatedinterfaces.RPC.MessageType.RPC_REQUEST; + /** + * required .xtreemfs.pbrpc.MessageType message_type = 2; + * + *
+       * Type of this RPC message (Request, Response).
+       * 
+ */ public boolean hasMessageType() { - return result.hasMessageType(); - } + return ((bitField0_ & 0x00000002) == 0x00000002); + } + /** + * required .xtreemfs.pbrpc.MessageType message_type = 2; + * + *
+       * Type of this RPC message (Request, Response).
+       * 
+ */ public org.xtreemfs.foundation.pbrpc.generatedinterfaces.RPC.MessageType getMessageType() { - return result.getMessageType(); - } + return messageType_; + } + /** + * required .xtreemfs.pbrpc.MessageType message_type = 2; + * + *
+       * Type of this RPC message (Request, Response).
+       * 
+ */ public Builder setMessageType(org.xtreemfs.foundation.pbrpc.generatedinterfaces.RPC.MessageType value) { if (value == null) { throw new NullPointerException(); } - result.hasMessageType = true; - result.messageType_ = value; + bitField0_ |= 0x00000002; + messageType_ = value; + onChanged(); return this; } + /** + * required .xtreemfs.pbrpc.MessageType message_type = 2; + * + *
+       * Type of this RPC message (Request, Response).
+       * 
+ */ public Builder clearMessageType() { - result.hasMessageType = false; - result.messageType_ = org.xtreemfs.foundation.pbrpc.generatedinterfaces.RPC.MessageType.RPC_REQUEST; + bitField0_ = (bitField0_ & ~0x00000002); + messageType_ = org.xtreemfs.foundation.pbrpc.generatedinterfaces.RPC.MessageType.RPC_REQUEST; + onChanged(); return this; } - + // optional .xtreemfs.pbrpc.RPCHeader.RequestHeader request_header = 3; + private org.xtreemfs.foundation.pbrpc.generatedinterfaces.RPC.RPCHeader.RequestHeader requestHeader_ = org.xtreemfs.foundation.pbrpc.generatedinterfaces.RPC.RPCHeader.RequestHeader.getDefaultInstance(); + private com.google.protobuf.SingleFieldBuilder< + org.xtreemfs.foundation.pbrpc.generatedinterfaces.RPC.RPCHeader.RequestHeader, org.xtreemfs.foundation.pbrpc.generatedinterfaces.RPC.RPCHeader.RequestHeader.Builder, org.xtreemfs.foundation.pbrpc.generatedinterfaces.RPC.RPCHeader.RequestHeaderOrBuilder> requestHeaderBuilder_; + /** + * optional .xtreemfs.pbrpc.RPCHeader.RequestHeader request_header = 3; + * + *
+       * Optional request_header, required if message_type is RPC_REQUEST.
+       * 
+ */ public boolean hasRequestHeader() { - return result.hasRequestHeader(); - } + return ((bitField0_ & 0x00000004) == 0x00000004); + } + /** + * optional .xtreemfs.pbrpc.RPCHeader.RequestHeader request_header = 3; + * + *
+       * Optional request_header, required if message_type is RPC_REQUEST.
+       * 
+ */ public org.xtreemfs.foundation.pbrpc.generatedinterfaces.RPC.RPCHeader.RequestHeader getRequestHeader() { - return result.getRequestHeader(); + if (requestHeaderBuilder_ == null) { + return requestHeader_; + } else { + return requestHeaderBuilder_.getMessage(); + } } + /** + * optional .xtreemfs.pbrpc.RPCHeader.RequestHeader request_header = 3; + * + *
+       * Optional request_header, required if message_type is RPC_REQUEST.
+       * 
+ */ public Builder setRequestHeader(org.xtreemfs.foundation.pbrpc.generatedinterfaces.RPC.RPCHeader.RequestHeader value) { - if (value == null) { - throw new NullPointerException(); + if (requestHeaderBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + requestHeader_ = value; + onChanged(); + } else { + requestHeaderBuilder_.setMessage(value); } - result.hasRequestHeader = true; - result.requestHeader_ = value; + bitField0_ |= 0x00000004; return this; } - public Builder setRequestHeader(org.xtreemfs.foundation.pbrpc.generatedinterfaces.RPC.RPCHeader.RequestHeader.Builder builderForValue) { - result.hasRequestHeader = true; - result.requestHeader_ = builderForValue.build(); + /** + * optional .xtreemfs.pbrpc.RPCHeader.RequestHeader request_header = 3; + * + *
+       * Optional request_header, required if message_type is RPC_REQUEST.
+       * 
+ */ + public Builder setRequestHeader( + org.xtreemfs.foundation.pbrpc.generatedinterfaces.RPC.RPCHeader.RequestHeader.Builder builderForValue) { + if (requestHeaderBuilder_ == null) { + requestHeader_ = builderForValue.build(); + onChanged(); + } else { + requestHeaderBuilder_.setMessage(builderForValue.build()); + } + bitField0_ |= 0x00000004; return this; } + /** + * optional .xtreemfs.pbrpc.RPCHeader.RequestHeader request_header = 3; + * + *
+       * Optional request_header, required if message_type is RPC_REQUEST.
+       * 
+ */ public Builder mergeRequestHeader(org.xtreemfs.foundation.pbrpc.generatedinterfaces.RPC.RPCHeader.RequestHeader value) { - if (result.hasRequestHeader() && - result.requestHeader_ != org.xtreemfs.foundation.pbrpc.generatedinterfaces.RPC.RPCHeader.RequestHeader.getDefaultInstance()) { - result.requestHeader_ = - org.xtreemfs.foundation.pbrpc.generatedinterfaces.RPC.RPCHeader.RequestHeader.newBuilder(result.requestHeader_).mergeFrom(value).buildPartial(); + if (requestHeaderBuilder_ == null) { + if (((bitField0_ & 0x00000004) == 0x00000004) && + requestHeader_ != org.xtreemfs.foundation.pbrpc.generatedinterfaces.RPC.RPCHeader.RequestHeader.getDefaultInstance()) { + requestHeader_ = + org.xtreemfs.foundation.pbrpc.generatedinterfaces.RPC.RPCHeader.RequestHeader.newBuilder(requestHeader_).mergeFrom(value).buildPartial(); + } else { + requestHeader_ = value; + } + onChanged(); } else { - result.requestHeader_ = value; + requestHeaderBuilder_.mergeFrom(value); } - result.hasRequestHeader = true; + bitField0_ |= 0x00000004; return this; } + /** + * optional .xtreemfs.pbrpc.RPCHeader.RequestHeader request_header = 3; + * + *
+       * Optional request_header, required if message_type is RPC_REQUEST.
+       * 
+ */ public Builder clearRequestHeader() { - result.hasRequestHeader = false; - result.requestHeader_ = org.xtreemfs.foundation.pbrpc.generatedinterfaces.RPC.RPCHeader.RequestHeader.getDefaultInstance(); + if (requestHeaderBuilder_ == null) { + requestHeader_ = org.xtreemfs.foundation.pbrpc.generatedinterfaces.RPC.RPCHeader.RequestHeader.getDefaultInstance(); + onChanged(); + } else { + requestHeaderBuilder_.clear(); + } + bitField0_ = (bitField0_ & ~0x00000004); return this; } - + /** + * optional .xtreemfs.pbrpc.RPCHeader.RequestHeader request_header = 3; + * + *
+       * Optional request_header, required if message_type is RPC_REQUEST.
+       * 
+ */ + public org.xtreemfs.foundation.pbrpc.generatedinterfaces.RPC.RPCHeader.RequestHeader.Builder getRequestHeaderBuilder() { + bitField0_ |= 0x00000004; + onChanged(); + return getRequestHeaderFieldBuilder().getBuilder(); + } + /** + * optional .xtreemfs.pbrpc.RPCHeader.RequestHeader request_header = 3; + * + *
+       * Optional request_header, required if message_type is RPC_REQUEST.
+       * 
+ */ + public org.xtreemfs.foundation.pbrpc.generatedinterfaces.RPC.RPCHeader.RequestHeaderOrBuilder getRequestHeaderOrBuilder() { + if (requestHeaderBuilder_ != null) { + return requestHeaderBuilder_.getMessageOrBuilder(); + } else { + return requestHeader_; + } + } + /** + * optional .xtreemfs.pbrpc.RPCHeader.RequestHeader request_header = 3; + * + *
+       * Optional request_header, required if message_type is RPC_REQUEST.
+       * 
+ */ + private com.google.protobuf.SingleFieldBuilder< + org.xtreemfs.foundation.pbrpc.generatedinterfaces.RPC.RPCHeader.RequestHeader, org.xtreemfs.foundation.pbrpc.generatedinterfaces.RPC.RPCHeader.RequestHeader.Builder, org.xtreemfs.foundation.pbrpc.generatedinterfaces.RPC.RPCHeader.RequestHeaderOrBuilder> + getRequestHeaderFieldBuilder() { + if (requestHeaderBuilder_ == null) { + requestHeaderBuilder_ = new com.google.protobuf.SingleFieldBuilder< + org.xtreemfs.foundation.pbrpc.generatedinterfaces.RPC.RPCHeader.RequestHeader, org.xtreemfs.foundation.pbrpc.generatedinterfaces.RPC.RPCHeader.RequestHeader.Builder, org.xtreemfs.foundation.pbrpc.generatedinterfaces.RPC.RPCHeader.RequestHeaderOrBuilder>( + requestHeader_, + getParentForChildren(), + isClean()); + requestHeader_ = null; + } + return requestHeaderBuilder_; + } + // optional .xtreemfs.pbrpc.RPCHeader.ErrorResponse error_response = 4; + private org.xtreemfs.foundation.pbrpc.generatedinterfaces.RPC.RPCHeader.ErrorResponse errorResponse_ = org.xtreemfs.foundation.pbrpc.generatedinterfaces.RPC.RPCHeader.ErrorResponse.getDefaultInstance(); + private com.google.protobuf.SingleFieldBuilder< + org.xtreemfs.foundation.pbrpc.generatedinterfaces.RPC.RPCHeader.ErrorResponse, org.xtreemfs.foundation.pbrpc.generatedinterfaces.RPC.RPCHeader.ErrorResponse.Builder, org.xtreemfs.foundation.pbrpc.generatedinterfaces.RPC.RPCHeader.ErrorResponseOrBuilder> errorResponseBuilder_; + /** + * optional .xtreemfs.pbrpc.RPCHeader.ErrorResponse error_response = 4; + * + *
+       * Optional error_response, required if message_type is RPC_ERROR_RESPONSE.
+       * 
+ */ public boolean hasErrorResponse() { - return result.hasErrorResponse(); - } + return ((bitField0_ & 0x00000008) == 0x00000008); + } + /** + * optional .xtreemfs.pbrpc.RPCHeader.ErrorResponse error_response = 4; + * + *
+       * Optional error_response, required if message_type is RPC_ERROR_RESPONSE.
+       * 
+ */ public org.xtreemfs.foundation.pbrpc.generatedinterfaces.RPC.RPCHeader.ErrorResponse getErrorResponse() { - return result.getErrorResponse(); + if (errorResponseBuilder_ == null) { + return errorResponse_; + } else { + return errorResponseBuilder_.getMessage(); + } } + /** + * optional .xtreemfs.pbrpc.RPCHeader.ErrorResponse error_response = 4; + * + *
+       * Optional error_response, required if message_type is RPC_ERROR_RESPONSE.
+       * 
+ */ public Builder setErrorResponse(org.xtreemfs.foundation.pbrpc.generatedinterfaces.RPC.RPCHeader.ErrorResponse value) { - if (value == null) { - throw new NullPointerException(); + if (errorResponseBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + errorResponse_ = value; + onChanged(); + } else { + errorResponseBuilder_.setMessage(value); } - result.hasErrorResponse = true; - result.errorResponse_ = value; + bitField0_ |= 0x00000008; return this; } - public Builder setErrorResponse(org.xtreemfs.foundation.pbrpc.generatedinterfaces.RPC.RPCHeader.ErrorResponse.Builder builderForValue) { - result.hasErrorResponse = true; - result.errorResponse_ = builderForValue.build(); + /** + * optional .xtreemfs.pbrpc.RPCHeader.ErrorResponse error_response = 4; + * + *
+       * Optional error_response, required if message_type is RPC_ERROR_RESPONSE.
+       * 
+ */ + public Builder setErrorResponse( + org.xtreemfs.foundation.pbrpc.generatedinterfaces.RPC.RPCHeader.ErrorResponse.Builder builderForValue) { + if (errorResponseBuilder_ == null) { + errorResponse_ = builderForValue.build(); + onChanged(); + } else { + errorResponseBuilder_.setMessage(builderForValue.build()); + } + bitField0_ |= 0x00000008; return this; } + /** + * optional .xtreemfs.pbrpc.RPCHeader.ErrorResponse error_response = 4; + * + *
+       * Optional error_response, required if message_type is RPC_ERROR_RESPONSE.
+       * 
+ */ public Builder mergeErrorResponse(org.xtreemfs.foundation.pbrpc.generatedinterfaces.RPC.RPCHeader.ErrorResponse value) { - if (result.hasErrorResponse() && - result.errorResponse_ != org.xtreemfs.foundation.pbrpc.generatedinterfaces.RPC.RPCHeader.ErrorResponse.getDefaultInstance()) { - result.errorResponse_ = - org.xtreemfs.foundation.pbrpc.generatedinterfaces.RPC.RPCHeader.ErrorResponse.newBuilder(result.errorResponse_).mergeFrom(value).buildPartial(); + if (errorResponseBuilder_ == null) { + if (((bitField0_ & 0x00000008) == 0x00000008) && + errorResponse_ != org.xtreemfs.foundation.pbrpc.generatedinterfaces.RPC.RPCHeader.ErrorResponse.getDefaultInstance()) { + errorResponse_ = + org.xtreemfs.foundation.pbrpc.generatedinterfaces.RPC.RPCHeader.ErrorResponse.newBuilder(errorResponse_).mergeFrom(value).buildPartial(); + } else { + errorResponse_ = value; + } + onChanged(); } else { - result.errorResponse_ = value; + errorResponseBuilder_.mergeFrom(value); } - result.hasErrorResponse = true; + bitField0_ |= 0x00000008; return this; } + /** + * optional .xtreemfs.pbrpc.RPCHeader.ErrorResponse error_response = 4; + * + *
+       * Optional error_response, required if message_type is RPC_ERROR_RESPONSE.
+       * 
+ */ public Builder clearErrorResponse() { - result.hasErrorResponse = false; - result.errorResponse_ = org.xtreemfs.foundation.pbrpc.generatedinterfaces.RPC.RPCHeader.ErrorResponse.getDefaultInstance(); + if (errorResponseBuilder_ == null) { + errorResponse_ = org.xtreemfs.foundation.pbrpc.generatedinterfaces.RPC.RPCHeader.ErrorResponse.getDefaultInstance(); + onChanged(); + } else { + errorResponseBuilder_.clear(); + } + bitField0_ = (bitField0_ & ~0x00000008); return this; } - + /** + * optional .xtreemfs.pbrpc.RPCHeader.ErrorResponse error_response = 4; + * + *
+       * Optional error_response, required if message_type is RPC_ERROR_RESPONSE.
+       * 
+ */ + public org.xtreemfs.foundation.pbrpc.generatedinterfaces.RPC.RPCHeader.ErrorResponse.Builder getErrorResponseBuilder() { + bitField0_ |= 0x00000008; + onChanged(); + return getErrorResponseFieldBuilder().getBuilder(); + } + /** + * optional .xtreemfs.pbrpc.RPCHeader.ErrorResponse error_response = 4; + * + *
+       * Optional error_response, required if message_type is RPC_ERROR_RESPONSE.
+       * 
+ */ + public org.xtreemfs.foundation.pbrpc.generatedinterfaces.RPC.RPCHeader.ErrorResponseOrBuilder getErrorResponseOrBuilder() { + if (errorResponseBuilder_ != null) { + return errorResponseBuilder_.getMessageOrBuilder(); + } else { + return errorResponse_; + } + } + /** + * optional .xtreemfs.pbrpc.RPCHeader.ErrorResponse error_response = 4; + * + *
+       * Optional error_response, required if message_type is RPC_ERROR_RESPONSE.
+       * 
+ */ + private com.google.protobuf.SingleFieldBuilder< + org.xtreemfs.foundation.pbrpc.generatedinterfaces.RPC.RPCHeader.ErrorResponse, org.xtreemfs.foundation.pbrpc.generatedinterfaces.RPC.RPCHeader.ErrorResponse.Builder, org.xtreemfs.foundation.pbrpc.generatedinterfaces.RPC.RPCHeader.ErrorResponseOrBuilder> + getErrorResponseFieldBuilder() { + if (errorResponseBuilder_ == null) { + errorResponseBuilder_ = new com.google.protobuf.SingleFieldBuilder< + org.xtreemfs.foundation.pbrpc.generatedinterfaces.RPC.RPCHeader.ErrorResponse, org.xtreemfs.foundation.pbrpc.generatedinterfaces.RPC.RPCHeader.ErrorResponse.Builder, org.xtreemfs.foundation.pbrpc.generatedinterfaces.RPC.RPCHeader.ErrorResponseOrBuilder>( + errorResponse_, + getParentForChildren(), + isClean()); + errorResponse_ = null; + } + return errorResponseBuilder_; + } + // @@protoc_insertion_point(builder_scope:xtreemfs.pbrpc.RPCHeader) } - + static { defaultInstance = new RPCHeader(true); - org.xtreemfs.foundation.pbrpc.generatedinterfaces.RPC.internalForceInit(); defaultInstance.initFields(); } - + // @@protoc_insertion_point(class_scope:xtreemfs.pbrpc.RPCHeader) } - + private static com.google.protobuf.Descriptors.Descriptor internal_static_xtreemfs_pbrpc_UserCredentials_descriptor; private static @@ -2800,7 +6175,7 @@ public final class RPC { private static com.google.protobuf.GeneratedMessage.FieldAccessorTable internal_static_xtreemfs_pbrpc_RPCHeader_ErrorResponse_fieldAccessorTable; - + public static com.google.protobuf.Descriptors.FileDescriptor getDescriptor() { return descriptor; @@ -2859,49 +6234,37 @@ public final class RPC { internal_static_xtreemfs_pbrpc_UserCredentials_fieldAccessorTable = new com.google.protobuf.GeneratedMessage.FieldAccessorTable( internal_static_xtreemfs_pbrpc_UserCredentials_descriptor, - new java.lang.String[] { "Username", "Groups", }, - org.xtreemfs.foundation.pbrpc.generatedinterfaces.RPC.UserCredentials.class, - org.xtreemfs.foundation.pbrpc.generatedinterfaces.RPC.UserCredentials.Builder.class); + new java.lang.String[] { "Username", "Groups", }); internal_static_xtreemfs_pbrpc_AuthPassword_descriptor = getDescriptor().getMessageTypes().get(1); internal_static_xtreemfs_pbrpc_AuthPassword_fieldAccessorTable = new com.google.protobuf.GeneratedMessage.FieldAccessorTable( internal_static_xtreemfs_pbrpc_AuthPassword_descriptor, - new java.lang.String[] { "Password", }, - org.xtreemfs.foundation.pbrpc.generatedinterfaces.RPC.AuthPassword.class, - org.xtreemfs.foundation.pbrpc.generatedinterfaces.RPC.AuthPassword.Builder.class); + new java.lang.String[] { "Password", }); internal_static_xtreemfs_pbrpc_Auth_descriptor = getDescriptor().getMessageTypes().get(2); internal_static_xtreemfs_pbrpc_Auth_fieldAccessorTable = new com.google.protobuf.GeneratedMessage.FieldAccessorTable( internal_static_xtreemfs_pbrpc_Auth_descriptor, - new java.lang.String[] { "AuthType", "AuthPasswd", "AuthData", }, - org.xtreemfs.foundation.pbrpc.generatedinterfaces.RPC.Auth.class, - org.xtreemfs.foundation.pbrpc.generatedinterfaces.RPC.Auth.Builder.class); + new java.lang.String[] { "AuthType", "AuthPasswd", "AuthData", }); internal_static_xtreemfs_pbrpc_RPCHeader_descriptor = getDescriptor().getMessageTypes().get(3); internal_static_xtreemfs_pbrpc_RPCHeader_fieldAccessorTable = new com.google.protobuf.GeneratedMessage.FieldAccessorTable( internal_static_xtreemfs_pbrpc_RPCHeader_descriptor, - new java.lang.String[] { "CallId", "MessageType", "RequestHeader", "ErrorResponse", }, - org.xtreemfs.foundation.pbrpc.generatedinterfaces.RPC.RPCHeader.class, - org.xtreemfs.foundation.pbrpc.generatedinterfaces.RPC.RPCHeader.Builder.class); + new java.lang.String[] { "CallId", "MessageType", "RequestHeader", "ErrorResponse", }); internal_static_xtreemfs_pbrpc_RPCHeader_RequestHeader_descriptor = internal_static_xtreemfs_pbrpc_RPCHeader_descriptor.getNestedTypes().get(0); internal_static_xtreemfs_pbrpc_RPCHeader_RequestHeader_fieldAccessorTable = new com.google.protobuf.GeneratedMessage.FieldAccessorTable( internal_static_xtreemfs_pbrpc_RPCHeader_RequestHeader_descriptor, - new java.lang.String[] { "InterfaceId", "ProcId", "UserCreds", "AuthData", }, - org.xtreemfs.foundation.pbrpc.generatedinterfaces.RPC.RPCHeader.RequestHeader.class, - org.xtreemfs.foundation.pbrpc.generatedinterfaces.RPC.RPCHeader.RequestHeader.Builder.class); + new java.lang.String[] { "InterfaceId", "ProcId", "UserCreds", "AuthData", }); internal_static_xtreemfs_pbrpc_RPCHeader_ErrorResponse_descriptor = internal_static_xtreemfs_pbrpc_RPCHeader_descriptor.getNestedTypes().get(1); internal_static_xtreemfs_pbrpc_RPCHeader_ErrorResponse_fieldAccessorTable = new com.google.protobuf.GeneratedMessage.FieldAccessorTable( internal_static_xtreemfs_pbrpc_RPCHeader_ErrorResponse_descriptor, - new java.lang.String[] { "ErrorType", "PosixErrno", "ErrorMessage", "DebugInfo", "RedirectToServerUuid", }, - org.xtreemfs.foundation.pbrpc.generatedinterfaces.RPC.RPCHeader.ErrorResponse.class, - org.xtreemfs.foundation.pbrpc.generatedinterfaces.RPC.RPCHeader.ErrorResponse.Builder.class); + new java.lang.String[] { "ErrorType", "PosixErrno", "ErrorMessage", "DebugInfo", "RedirectToServerUuid", }); return null; } }; @@ -2910,8 +6273,6 @@ public final class RPC { new com.google.protobuf.Descriptors.FileDescriptor[] { }, assigner); } - - public static void internalForceInit() {} - + // @@protoc_insertion_point(outer_class_scope) } diff --git a/java/lib/protobuf-java-2.3.0.jar b/java/lib/protobuf-java-2.3.0.jar deleted file mode 100644 index 3c87f156dfed4412778a5cddee79db26593fea88..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 328575 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

7VJ{DLwyVLf(nq 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%0D*zw5M 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 z z{q6Rx*5lUq?8WbWa+w&O2)*-E%?+qAEz!QouG&AX#pP*2cmUsmqw>tNKUt(`*BhN( z5fhukmG-Xwkh#>1{AR8nsW-%{H%rU6OxbxfNB_%gmpEIkmoN4_2|a1vplV-v_M&RV zsa^cP!aGmsE)~;U9hAqQ-rA5W&%@FGSg3H@mMr#^X&oJUi=73pMwOq|>b_?i`#P`h zqflX4!iL@MukAK?x%_cho47qR@@@&E+XWbsgwWsbU_I^^!3Axv% zJ*E6%+Ee+0_D^?89Z!WyWT;BKGHK78 zC>0kfV<;G+9dX6vM9^i&P-7qAgNZu2d_M&1E~y=I{1KVq`LZu+V`z}}xpn)tJ9>T0 zo0F@&&WZiJ>w2~I3su^uy9H_GH!nWoW5IV`X0Lo-Vu5Llm*e`YD}`e_eBN>Cu`gaR z^@Zsy=AGYG$QoQ%N!v6-KY3jfSDtpkE2>eI@p?xvlTJs4XaQ=!Jm9UZ%ytSU(#w45E=#s#(I5(_Q_XkECSzhE?>1bq4QO%*j9mSEA}QfN3ld- zwJX?pOMG2;cjEFWrv4R6KdiBm__t=-;oGkSe)!08-Crg8VYgL}>dM2B+pH#8UP+$e zFME`2#p0U+r99H>`cjjx6y|KQns+u_JF?ko=GIlgH=;_lZZGjW{KRbT-8JV@tgl4o z^jo#tE;*O#zxwkH?N^;|c)zNA>#H*Q9bwyAyL#TK;Hy&e7VACnD;3ladHuto)KGre zymRWSynlSmVxGU+?BnGt4C}+Ae*|rvx;|w3r_xtO`y6A>=?8~@u)Z>Nk8kX0`LOFB z)2|f&SpBN%-?l2f|4z2^{|E1F_`fR8!z;{OHFc%9`pzq7J>^QhgYrwWFENxxUo!YQ zX^G}5QP0m;vL~&&nmt);^>uaDD{mKWnQ=wRr#s?zp!bQJUyP>srFMULQk{6o!<_AS z&ujimtq`}U&Z>956~pU?|?Deiy4!sp1*oxhG&<`yh^sT61V zQmbd7nZ-_Czl(Y*?~OM7<$2MVyhC!$E8PVvwl~VY{`tyJBj|mD<10OlGea8AF@GJg0@b=Im9ECO(H;=^yIi-wz+%c0bQ%4d>dAdQ*5_vF}*>MvdXYf%@8CXO3M;ezo80a{Oj~u^C^k zyS@6)_qD$N7yqJv^8@~$U-AEb;xFTfG@rkbI?>nT)g#!~wfj5XYTh95eOkAisd1me z-42F?=M!@LnP%IvhE!|qcq{fI^L?6es)OnR|G#zITI?^N&NQ-=eeK3>t+VY$lZmdwTM ziMwu9imdqY`to=6+luRdI7Zk^*SH>MG53aWqK6{ScQ>B(0&BkAv)H1fvEjQZ@A-6| z^XFuKeOY(Kyrj&L>GBub3wZ~xzjAIqwcy4kex~kPgOpqCGmhLU-FR!Q#xs|Xde5%4 z7w*x!r+H*KcihgFgL(@WB!;&%Ok#UmYCl;8*V>eFnQI28+PKS-l|J&=G!VcqwUp< z71IveOj#>1H{5-@pL@94g{SQTTOGS4L&5|?yjk=F*L@ZY=Y6z_b^2X?x!+C_3G0m? zY8ro-B3W@Ng7I@^1y^Lg?D?v@hEJLN6FZMYss3JgRUyNy_u2M?molPFm6oX;DPg;% z)vzs#as6J=U$>?oRQSy``Tr^2oTsx|XS8X&*nf6cYuk&Cq@VebLM}VV z(rFydoX>MzLv9OPRke7n-x~Mr^uqany(TxZNo25P=n1oNwOxq1>#$T%;){UMo20%4 zPcJHLQ|^!!IMU1UNR6eC`^)zGX-1wa85dnK@LVbASQ`;4> zq#WZE@Kh5hSM1m=c*OR_{JRpTzCZl3>wZe76SIq=cADyn9rGuqzwr70z_!$kVf|F8 z)n}Y)r@oZl5_pBzpYiODmy(%t*#&MiPe`oiSo_%^>Up5XCi^t6qS{`S@MCPRyrfIL zML3uG9X9;^&_~(m(wCI-uqmgO2Ryx;(VbqvS|#@B?Rn>ge_bc*cJV}uNM_~>NUzbB zU#h+R;xd`1^J^Kx-0pnZygzGFn(>mGJef~(JY;@Wg&M@KUsmO^ua2AjquI095SnzUY$4aT((B^HcSl1usua)I4RJvMvp!S%d z6Xel;!53%dt{aQPcXI&mHZLv&t6CFARE@d`#i7-Mkrhj&GE7%yATm7Cd6cQmDCX z&*{g{>>e+@b6k1Hd6vI|m%2Vo=zM0^_gdh{SB@m>U(eZip3W|)x_c?}ow4JoS{t_S zoV!i)3gr7+ep|eANGNw|OBRoMuD9i!ZNQTq;iqcVymt1x7tH6ZTEzX_PEPWB;TzYf z9G5rBha6{~@VK~Q#){PE?o1@k?F z-X%{jn4f>^somtIcaA4NvU_>-;PO2}?;b0@TfFqF$GgwWQQzHtSoSBJ`nNXro$=8J zcIvP1EMH;qBc;N6UAEQllNWCIw;ik7w9E5FzcFjhxsU>D-3zyG-d(ckM8V;Z%rzCP ze@|X`*>67UpGEP3M`v1nmJ1n&EnE2GWzet3qF>YxFR;It@$2y!XV#w+-oDXXYHxhQ z=VZyJu9s5;=lE$#RXNrNDY;*e78PlH^yc=#l37R7ykCF}%iw>v=w*MnU;P~B!2b#! z#e8is&jmJEw>vd%X6l-Ic)=aZMajRI?`L!$)iHB-s^8P}??uP02ZuaSra5mUaHa~~fR`n52gJJt7+f1a{U=)vRX62Bam_N_mXe9q(7u!9QE??ilY-y?Wv70>^fVBbmn<6dkZXZg2qUfYCKf|qJqLb@mX z;mBlkiehP=+iktfe%J3+H#miUJr=#Qw0Dm8 z!uiFOI=`At6Bi_K%zW7|*(~Rj_(fg9@#2@`JEa`gI0|G79lfG`f7Pis=U+wYm*YE`L+|x% zyTQ5YGvA5wcTG;u@5)}7AI$SK?bl<0FY2aAzNPP8HvF4&%CB2FKA+>+>#HICC$959 zRFFGX^Vfs@=dP%IOE`Z$zWUPN&E#*PT_@MPL#l6Q&hWlfBNCtN(lqm*#TIv;*DBL0 zBfaXgcwWzX*?)L#r=`2nv#)$F{MSzTXR+vI|L46kz8vqb=jQo!dBx@ViH8DH9e+&@ zl&SLeb!yn-(y*e}yotfm-syK8&(d@Hg^jd z=twgDV&uHg@6k}_#Pmg9lX2B#H}6IThnZH4S{-T*dVFHxLMgj~lH5)wiPZ0!!XV1Q zG$m7DK~o0PlT8boN=}redT|EWMk~z>U`=vLWmCW6#=BR+L0Z{;!6GJW4ZU=B;Z=>M zUK|0ACXAQvadoLVuof{r`Lv);f5}cRh3lalW#Rc61)`1{SL;vN?e%EK|I15s#d+WG za58EMuz0v%VH0;1QsBMfYQ*$Js$~b8^17meoox-rLm8Q44ue#$dC0jzj1%nCN3yFt zm_ig(9o8iaT-G>ZB9&_@mTStlXWhpO*G&c4c4{RHDr^zBEWr9VUCn{@BFl*n@e+($ z6NDA6o3xn7DxP)l*eq}}QbaOJ=VQb!y;Z`6&RZ{rwtFc!{6nn6O$Z z@T_}?>4TE1PWsoGUObNy`TWm+a~>#la!vrJP8JOb$BQf{T324a+M;mILEtRMBGzBK zryVQ&@9uITNE76@7Z!h6?}+NeJ+I)vD#Y~UR>J`^r?%HhTh6I%IhUqUlsi>uf$>t76%GOm9)EEW_iNxv zVL4ICx@wP5ZlUOkb*mNcm+Fe_TKB$zVeZj$(*zWjD>%$n3JblyR#sra)SOV6pT8a@ z?2GgL+EKHYo4ru{+3VfbC$6u4>OD)rfz^ufRF9g&I)j`~2@lkb-fN6dWH9|~ZWc!{~_e_&day#9sQP(_$;U^2@DI<;v z{!R^bj;#BY7=OijHJEMcRuMj>t`-tj;FNpu0yonZ)g+d8Ascq+F4(cV++d;E#%@)X z6XL!NTf+Mmb58L0Yq)cBg+2SFJ3A-54mjp*T}T(QyA_hL|pf2h{^Lk zV<}|#+e*Q~+>>*H_AG{-{6|zA%pc#^4Pts?EVw|Yx!Z$tLO;iZX$ndl6Ml1Uc|SSe zRh^vp4)J861<{2D+a=#W?!S^dXR+qh{f1NaPJC}>zwM0Sn?22U*LfSUJ3kE0nEP9? zU1{M4UOj6D(TN8?=rz^y=e+x_dhoyvzp{3{Z!vdkom(QxZ)k-($@fclt`ZQw`ZTm@ zU2l}|zru|X!FJ9|=Rdaj%T#ZQ2$V~f z?Q~@~^lp&I`!s)h#BV*5-(dwJ-LIy0JYQwDBkDKL?%79ju5U@-X2TuvX_sT&JW;l% zOPyWg)MVyP=N0~3l;{@6FZ?Ky?NMag&39%(zm;q^igO>id9eR~@10xcwm+P8^ixd7 zVP46~$^}nk8!M_D=iBsa)^+v%*xCN}+E%|yTX&sdUgFR3jp^CJZ2kkKf)i(kvt(A* zDj1*tW48bFgc|+b{$d~ev&>TqS+2`ByxqO^M!!I}i1vD(qEBp|O!F@PcU`-@HTXzP zv)v&dTSMJD4w;JTQ&{uvG<%!fUhI48P>0S0bEdC7Ey|zVoE`5)OkQV~7@6RIE#uev z^qr$?7S(_H)MW&14monyagSG(nLsauMsp5w0K?mfE`OvRLU z>Ezf8&zFt7!TjZB;EQBs-yh8azixCqGMbw9Vr|h)rJ`Won=5ndYagwi`Fx?v8Rge9 z+biWPYo7g_V|%MI<^Cq-N#|TYmi~*n_480g?xzUx%22aE7JI8E{QX#9^~}H1;#sGQ zjPh%l<;ixF5A|JM5btGrUo1a8(&p&Rp9m?7~Ggr*%QeOC3`ooVzoBe|I{0}~= z-B>YqzeNB4j_2DGcB_A^kiPcfk7~sqo_XsJygvWp%Xv|3lahZMppi z?Hcz#esBNb``-}hHwW(jp1gbW-akHXzbDq2-I;%DuI;(-%>DkKOmF>szI9^R@A?35 zc8=B8QZ;(D7#QZw$G7;^o7}~(t`#MzdBvIec|nPJ>8bG5+f#D$g&YNr|MzapX1v{X z?fLO8QLne6kGs{bsBOK}#xgbH@{#GMH(pqKT=!=5tXV%C|495grZ(#b{`06?|Cy8T$eg%v(1_JWc;WKY>l(4wPieII zm~yn-`&KE@H6d|ZQI3m%m*}2HjbKV0TN8WZPRlB_?o@Psr=uCJ zWqhW5C!g!wY~`K%L5sPa>s0Q(TOY~0%XV}6mIre`d907ubct?r+rQdV`Bbat74NHR zOU|C(U=r8L^ZaOmEzi;Y8gmpwEx);3zrej~y;AcJ`Q^nY`ggp(taf*Luk%C6Q_|LP zo4q>|)BLwF=T*&m_wTL8o3Q4HJI1Be)2ot|+V^ID-?zN#maz4uZEp@4Bwh{k<&ELA ziElN^uor*kU}{`oaCU=jqms_6L^kn)i3^P;_N7Ps`OIh)ky`Ob|EGjpFV|`|_dC69;ytDECcjJW75l76<0U&) zG8+^()-ZkRoFWmlMQyF&?mm;3Gxsr{)OoXF@o9B^=@`}3N0;tb`nGJxAwPq!g&ZGM zobJ5b%_|TVePAia>|?1h3p-XXIexMzx2{_#MqXt_KupN{qQa-fj}CwMdjG*W%{vEs z8SflCySX4L-?itqNb1vA9k=&MTh3kF?D5M|#K7Co@X|9+HKkW3VZT19gOapj`z)O( zCI*HsHhf7skV;7!WqJ3}2+oR-tD^t%jg0k;Z4zd%dnj;Zu^0(^Htd+dBI0ylii4Ar zQ1Zqvsh@<{)blUR6c=0Vv370Q=3BRv$^v)q*s{%aweyv*E#0|WfA70}RIe=f_NuS1 zm&c#4{9N?!3KQ{I33A@w=Vh&plpm^TVJ)v_g|Xp0BVln4!JUSX_S6 zheS?!&IDdNDF@!Xhv&B!y`CVy{bBN*y{)_DzX!h-j;Wc{ef#HO*_b<$4dUg6A2r|A z&5ABB{wS$uclzk_ABP3674et9fBNXNO_}`mch8m1-d%i0>ghG+x-44@UjB#NLi;2R z2-%!De0)bmOSk*ZA41~s&mL*V)Px>N7TTvK@S zC93>#W6Rp4wDMHW?#5}EUSG1AjH8oxZ7WS#;qRRn{`-;1CWB?tQ9Hm20;lA~Gc+0!Cc9aLI={Z}wE3#zTBGSouX_cakQj zzrY!tZ)IUR28%1_FMPQ&!s&g$SI1d8YvntS{x)5dcDitefvLqy19q+BT5Gmk5j2ZW z_UV_*X7!pLTI&5n&GPuK8|&0e?+RFyM;0#Y7tCJqO6~69XEP40-vYFbX zz_Y)uI7K99*_6%9nxMPI$zAQgvVQ+dl+rVA zXTLIW$Hhg#GhPRt{kJVM%fWDl-7(j1YFkCts$8&f?Me+cG(5K@NP|yB*x7pS?ebj{ zB`$yG&phdvtL!V>vD>}v>A5z|?;eM49F0zRxMMZfofmxBi=OzH{&~4^itN6q{W~A( ziS4*5tE0Z*pIB|hkryT!N7|)g(o?TrVoTOk-nrj2&BwN2q3ErHy1(Q$ExSLZU+vLr zcQ&>yDWCVPFgtU5a;#XgFv~QN^d$#$bg!#4o?yvQpQZV7$(uP&?A^WXo8E3`IaRiD zrJr5j3eW26S(A)k%+d0`$^7VNQ^=MQ2- zV>+IBoK;(S_m$jMHNTgOm#xj;E@paSjXbwc@Y(9rr>jJ_ZWXFiVrZN@dDk4#={Le= zOy8lze_52}?tMw=E1}6Mo}TZfY|PxCn|VKB{tSUf$25HpWp|s@)|75DOetPqZ0Pj; zaUK)%luP6B*RYsuskQ8F^fruY4-973X=N|=u5tDHQM&b ziF5y?kJ&bw$x$MI)pg(B_~U)5O{@KhAIjqO zj~<<0Q^dY*g5i*ZfX%zmMdH8BaOkm^AteW+^?5|Eem9W)9^)-uaqtj3SjK-t8wr%(B zPtDy}Vmag8j5DSgF>_M_-XGz+!YRA-8)IDf?w|#!S@Txv{wdgKI{)mfxA!dXOct_g zUTQ0;vS{}g@2^MV?v^;O`mpti<=WuK^2tum4%@r$IeoV+<|U_H+zZ|-`_?VqywiEX zq0mip=U3R|*F9XHvhJtQmb%*~{v<7&+cP`yUas!vw@6^Hy5Ye7{|4SJAaaBC0jK3@hSNua>68b{Ea* zy=t<0UX^Ib=lSU(OWhA#zsjanYa>;~C1>)eCi~gWC6k}~$+x;UhBxZ-zU)|Oq5a83 zZ^5=XGdoIeWYjI+-L-T{W7fZC{PM1ne}BK!{eJ&_m@K-p_A}S-gz%vF^FF<`4sS zdt8(Lmw0xalR;t+vKKE++PIS^;G00rUU$XkLBEWq-hOj)mg~!)L-u>sW2)@aS`L3t zO#3jE`Fpb3_vV@ZPN&&>f2#>%cby>aB@p0c=>9Qb-=m{5yUsHftYi)Nu=UiojYs~N z<%+02G)Y@3cUWg;W}I6x+coSq%^(UDqhi$ z;wg2O|KM$DF?Yl5Q*Xux@7i{#_&~AtlGb_6*~%s+$s)_YgjDcXRGyhF$=#O}=b!RW z<5V@r{TlWqQ&WVexIS5NbjHd#ZWH{D+dSn7(MX?kc-n%f$gZfRT&t%VoC{aV2wLTP z;vtWO^(iTx6UK#ndTMJ`XShcH`g-M&#-iVwQjfV_yEa3-Qsmy@35O@TKS;Iz92R*& z_?+r$u}Pbl98*P~X_fMAdUkVms@%PXxoVMLrfdka%vc-bE*Fs3ZeG)36O^bo{n#NB zzqbpkCSHx7b1c*Lj)iTn@f;4nrLiojrhmL_6*C-mZer`6x^+d6-T|-Fxy-(EdzbZH zFyP<(!!mi{%59HU9VssN3o*4`wCYHoR#j3!zpA|YHx6d0qt~hfC0Eulq)%(&xLu{L z_3pr>D*v78y-RHZ-dTpd-z&VY=>5j3`;q;DeAe9&Z+D({|5mVzSLl*zi1rGT!0?%+ zY~C~eurC!=Jr%ZTb8pk$**EeQTVx#1JY^Q5H8Lkh~*6DccZT6Ip@U+_IW2q#<}oajJue*UZrDs zqC3x-jgd2&RgT&|_Pn`r?bTDuii?X@{FbUV@V)81??(I0Q+4b=cA8Zjo_p}jw(`^u zTH$Q&F_JvbxZ+=*dN7ZPrz$?x;6>Km(jyP5I}g6@JSg3F_`y9Vo_%v{Tkl-6aN)V< z!Xu}~mVYkYU`Jp5#1orsdRN`?K0Nv7w8;hSs|$8mJe1vW=GOhQDZ;Vr3a!dlGhOZ+ z6;EGwYuUW;FS+{!Jph}4y>{7 z_`Kqtul~8>52aNrrX};{9gbRc{jtHU72krgnXlSqnFil=x*z|1a%aQs3vWIq+waT0 z7XD~=#_@5EB%>;u^~ZnL{`(K!T4@zp9m~Vbz+j+;uPN?Hou;^6 za!z7#@zF>`6I?RR>5~(aVj}+pp9US511b(DnPhocCNnT;@tsuWQ87+TQ|k8C%v;-~ za5YI+E9>?S2hpi2Ua!Nlqc>))-FEd|cWlh9Ti4cY`!>g1KR-?_e^O`P{10b$e!u&4 z&i{GU)2j35{k^}qpHV~DJ9uLMWuJM;pJLS~KA*Yg!I31J^SSy)Kj#UHKTus)JKs94 z?2+i72K)LG&Gkp-uebUrRd;5-{li=Ss(;RO>img0q(A4xG5w#9!~J5K;y=&0Z}HKp z?(~y#p*sDC{C+Ww<})78zVmmQaQ@@|nCi~T|DE>#&urZu@y9y(gZQ7RC-2YLbNb19 zpMM9R%=h_s^vQjne}|vgs;fQRf98FCO!fRMrV!z#Y)_v_GjGheq5803(WLO1`YN7F zJd{F(l39*jTY2zW!*=Z_{A>7rIM*@WeEWH2<1IdagB5J7mtL2*hQwcZ{oS;(=IyG6 zkjro1W&|@cEqIyxO3c69{lr`DHk*B6uh!*fd@Y~0<@evWvRR(uoA2D&yHv%?YlFh7 zg$Wy`XfwyznbNfoIne+rrdSY`r}e6>m0Q!l-*!Md1#USMljh%cl9BzWbH8bavR<$jHMR zE@%CnrRSV&D|%ww z6RuxAD6g{CO(A{3`bgdvvS(d7(gU(1R~yOPV@EU>t4OPvxY6oX14VT*US&wC&lo4 zF3;b4QS8>MrEjO1@kiX;bJ252D_`2~-PsMLH&Z-EV4()@d^KLxbc_R4H*XcW?&%Q0wPZpjbDqq#;V=A@U;iHC_tM#3m zvPr?WMLw2zF5x`W>wZ~{yG-i!f?lu7-%1lcs~S%GrF{R1ymHipn-v|uRo3e-VXK+f zCz>Vkbknu4O-c1PbX6xha!cOQ3lMd_AP_HMwNopn>0w7!#M37dJiQWY`K%QRCt9Yi zR=;sZaN3$p8#-c4TMxKNX@pp3xa{p$TG?E+rE7BYqXy%P3Y%V-ynnDl`z_Ce*ewBm zrM!=wdhagm5Y2KtyngG1?qimnKGQ$CwU$N)Xs7VHOulvX;lm2!zK~Tvz1i39TT=Mh zY^!OAYNwA^N9>xbPZ{f%JM1>SH|wtA)Rd~)x1pU~QQOS?PbeFds#G$yyB#r^#V|$T z$Gbzlrk#(bZkf2Lq(h>P=e5Op10h#mN5jB3n{{_`$K>jMOAcsQ6j?v_*2A|d+j0}l zU-TG%R^>W!R^D-$uYk#N|GSwof24(rGYnJroZ+Zew!M?Fw)bL^zsZ%5UU!e?8B(8K z%T5Z=V0xa|sRJpT|Nm_WtjD_M2OJbL9 zJiqg3K$9aiLlipcIe>8+_;vP&oQe9KCJ9L?>>7=r$hMM9Xm#?47 zNPO*H$u7gYz)@9567`tpW6 zzc{;(Y3|;$j^Fe;=Cx+h#x_sk$)7iNp5&9v-spF1=bdNn(|bgJsFdGP=;SoA+Obsb zbgIk|UZZ!SJ15Q1=(c$?-F4p#mF|-_^aJdESx?Ye*0GW)QtY}yq>u1r&ZZfP-At48 z(~M?BZko|syGi3nDAQKX3mXpHjynKwuEvB5X*MG<1fM`9%BAMV{WL)|N- zhH<;cqL5>Pfyb82Ia#A7>T@n(lY<-o^{O3ZE;=cjJjBu;*~4D5UyV}0(`%1MPh z{HJ!zukJVe*!ZcwRw*p>nA!tTjgI4)EJBGNdl{8O`}=POe{^KwJR{lrJ~&18=-F_g zt0kdb|Mj#td|PMh@u(i)@Nv=1)4QA?zZ3|rDYJUH9u;ilK z;tiO|Ke8?04u78M&-+%{bDrJFTf1LSe$|{3PxB)@``V?a-+6Or;o3RkZ*LWA z>?~fMzB^0D;KjQu@pF=Lg0@U`5sLr0=u*(->ofnDw(clnzvB4L=!fg$8e^Nc{w$%+ zQg&yQFP_;UXX7#T*5bB(6TdlapIth|adM{54$D7mi%J7O&6oHss`*U#{et6tivDU$ zvxR=kB`PYqSI2C45n*=Aorzn{bz|NivE*o>0^jWk(URZ4-b&i^EAY-#-6s<2M~%uR zUhy-%u+DzcQG*6SJ;TM8y#A7k;#^O7g;yt?F?ThZqA1_3xPc|vU?Tr=1`)e$K{HRO z8@#ff{r^x4+pmior@z{nu_P#A>$N(*zq7u4OAD^%{(CLst!ItawNu4g-*-mz^B&vL zJHvg7-vt-_C1UbZJwyBoM86+==w-#(>Dje=VB=d`mZb_Ts^{ zGvyt>dM18eA+l_u=dy|KvpyZt-t_X5(a(1a&+A@%ek+#$u%zuz+si4t?Pgxxpu9)) zk!Y6h(ruRmvtBq?eVSC)vv!NB{)Y71`3L!K&F*3C%Q;?qYf{%1U9SJL9rug;3cak~ zT=)Ej*p2E9H$vxR&z}7Dh3hk2jjOX_)_vu7zVU5d%Y(IHeo8ypZ$>S?du7Iz&;JhY ze)#I(BCqOocdvFA_J`l{SIn+mw^!Vw799C&*}_mgNWS#~XuZHrRT}tqb^6IM+y&eM+Xq5|M{$TKw9V3uhZKyH91B z6Oi^ebE&|2ExlatbIM!Kt5x$(*l%$nsOd|+b?&i54~~Viv)nVMJGV^y?^S(k!{*C3 zI%98@%{!L&X5rKxXL&s}y^~u`v7cP8zw~STvYTBOOg?D7>E3p{&ZlRSd#YaVewpx> z%Hl%iaa7W?wQ)+c|x|^uN_)(IPX_v)^4`z zuN<^iwjNK}aid6Yvutb1>qgz55hD9T)#@bKroG;9|Bz>!Pu|7?p~ly19dGDwKF(Cw zsM^6iO<~d^_3e>WuN?0z@Q+*5Eb-V&ZGYkM}v4ahKkDobS%KmbzFYq5HsPr3IHf_tc&U+hq`VGqJ1Tr&Yc6vB@o^x42&N zt)G1$?$FW2S|?1GuQUD@pttR#-It_U3j=pXT;?+WnqtoWKf)jsuvi|(_obz;pddlVZ8#W4;zu0j{#n|<7gYEl>qOFV* zz8qxu9axaKmC?}Fzj=k}Gs9DHXO_IP>6%_CSi19p%7)(@Z=Oz=s;#*q#Bz z+m5}{Hf%Vzk>!>-N5+i%0SnITR2RFjbDD#HFT)mfwF{Ng9Om~(zYx5W%e&=>&0 zhjQMFFKi7PrbRK;>T$hTH^brm(OT!pnUN(%wT&+flb1|n{~ai&`_r}C=0s56>*CX; zrAscva9Ms{{Ct1PtocprUuizCb1qXU`m$K5>eFeliHDE%FZuN(^vlt9o1Y?TYxTuy zEs~$k;ow(a?Oi$b)7fmP`70l8bYq$JQ9z?4>+vmzms*SaD!$Jw(pr7{VEaDSi^s2B z_mzHRU}1IPyo~X*i%jy8n-0Y3Y)LcDXf*jb=P; zth^>GY2U)+HH!^TCO&@Ad^XDK#vL~4_EnyR6Q(RbaVO}5$-b4vYc4%*cyj7?LD31$ zf(d&K?=U{_FVIqRJAWiWq_#_X;>GPr211LIT-N=|eVp)v^RLphdakLje+PUOST@J$ zUsbgHD)~nSv)sxp!xkFMeI|BjW-0ro&F_{xwoO0zKI78-qefcW13hB9u6O3^vF=o-i=HY~k+M5DidmLS? z6s;|P`MLhVpob+({>g);Z`PUG>g?rZV7Q=*ug@4noj#*~5z73{+(1Xa!v+F#mM+Zm zUa&Mk;JeHNrETNzefSzx|-srL`7(=!cr zCC%TF6B<$eJSXw*%b@)kt+j`Iljc9Za?9j-Md;OMPm}LVapzT%+Ao$-RUD?b&OaS1q>?H=B2E`kWI57vs;~-Sqv}^x#Ani~r{( zvh^}<-C{Y^wr1KN9{~ZT9Igq++g2q%w|*bCQ=|IpzSez57A_E|zHxBk9D$?@@9Myv z_Jv2MA7^A_V0glaF9NK{i~vY4eXlfUg~-#ddv7LBN)<9XnWLZ*=pt}qfhPm!ga#qK z#fl1?3JV@h$|+F1xpcQQ-`bGCEm>=~UHi=-c$Arcok~M!&f4&;QLisvTO74^+tsMt z)mLw2-Jd=4%(-*t)MoSQ#(%TF|8@WO|Nr-VPpkO$y1AdpVQIh|-lsddx{G&m6m6W< zZ5p$s@Zvew6V9$Py0^-8B+NLz@2Kk$=I_Zz*sj?H`Tw_Gv$Q zDksqz-chlX-R<%B9mP}G_xFcaKd{`>w)4+{=I9UYF)`YY`d#*%W7dECRq39>qh7fg z4d#V~#^T!z9!Kxo;d|t^>m98}W`gep3U_yuckNK-HZyp+J7U`InP2?$-hG_#;Cs<) zJH2<$lf=dO3l{p>oH*(%7u9pCc1HJIAJ@0<9wx14|NgK}(0b>)M-w%)SI^$fzQf|g zUE4KRoSQ!g{xKBqFZw7U-oCS9PWSwRkHLEL9z05qv3c3ZRnygJcXn<1j;}h~>&~rx zzN2DZcYMLerVjlo1)pt;&*{6?a3+3O!QSqd!odQ)6*hC!*Vw6U#t9JL2@_8x(WMj9Xx)1UH$j(;GTGA?v0?2VJBd^s*QqKeKYZ4ikg0dQZ^o`? zhi;~uoXyKvGyDDol?Ag+gkIdVQF(Hq?Pjm<=Jd50QM(e#gf=iI251QMvPR7^TbCL- zXVT0C-;9LhtGD^xl4uNY-+gXNg4x!|C1LYtYM5;aDfD`z6>YINF>h0Vo>fF+OR)PQ zT}!235;H4ig;q}a$vw+s#xWI3mzFgjZb>k@dp6vuY|OagZ{A?mRFG69q_RlRKEHZ_ zt&ENSg&^^@+^ort_0r`pj$E0vvg(->vtaF_iCniH29_oiDjYhbziPJYhvmB*{=2&` zRP)%ftow&{%PGTclg{#9nEHIV>@shYp#3LT9oKU!ILEVHVD`bU2Ll!?TwI%~aOp|> zO|b{cl6h+T>K^&k)?SdbHa~Iw*{ONEKeYTST+*sGY3bYLlh?fwUn(UZU6Ax&?2N~& zS;uuApOWR;EbFoGbjHrrOdBJwdDniLv2kYHYuA%sp0z0NiQA-kR@ZCKSNG))rqsMQ zzqx+q*&9LPQMU!Ndt90Reanho@k5hi&7#dBHzVYGSVQJkERxkOHSPRibZCo@+0K*a z`exLNX6{mzS;VURSM8S28t%1=@7`M!l+CyOYT1@;Y)YHWP1r-4YBIJwmgkv%{j7Qa z?xsCqEsrl8hC+!IjKO$eQw6Ce4#%h}J%45lEntA3gem7Ze zZPyQ}v&Vmz9Qbvo>DgWPE8fiuBNT)_Z9mJK5p*siPffXXYq9R5^*;~JGU*GL+Z1>y z(aUY!wQXCTxl8Q+vqFT0_k2p>dIsi-cb(6FE#`d^aY0YUc-pyb9)~h(TO*Fy^4^j@ zctOiaAZ(Iq+ijyYcO|$b3M70>LVGyfRW5j)TY9d&kfX?@>#ORdn3WG#Mm>ElUHC%q z(wl2%{H0`8us?qLFl)y)soz1?Jd=O#Hi;DaT|8x)23un2vN>`y)7q?^46oKb@k{&K zqvRtWJpI|!oZWd}?`3f2EO@Pu`IV!X-Nj~~&|3?M>mAFkDSe*c`gBvJU;M5Vxyx&& z_N-fICh>2v+q)}1-@ERbNlrU(Kbqk{C|~dfMoI%drbe&q?7ji;|eB z(w66Fnb~ycx{rTnDC4cOlZ`lwe+fQH-nOy*51aC-&jRI(gQw;xOc41ZdgP?U8kax3 zhbFiLT)yOYt|#)4mxacgPTd!ZUVL?a7lcaLP8vqZD_-B$=~Nr9A9(anU&Nh>Va&@n zSUClH&+@nxwy|y7xfM~Ks|2{2vv2=7>!~+u9*@w+?Ho6=ZyL@K=G^`{^y>8NsUMjS z+)s}O-p^R>{EXL6|2H?-2S?g0Jn-w^{orfT7Ipq73#;7j>^N7q zx7N!%A#qdak{MbqWjZ-A*VbQty0Toug!jW_{cHP=Ol~tP;Jlk%`tRGxDRwu4znB;> zy3`0K{uGRmR!J#^Z#)rfEV8rD*lgL} zfP+6feDc5C(~Up)@K}S#@(m@fO-r?fbYdqaWWGwhYO;Oh`-B%CZ%DlBFkyejV!80u zR<1&(%~KvI-OxE`c0=#r+JdDl<^_ei;@1lbS;eOxN)@`pzI#VSNRxG9J4?CYE#(i% zoafr}FSAVR`mv3Ly&^?~spZLM{Pjk!r!_^|KN5ZX@g+As# zQS~lh%$f9o`Oo5x`bi(o|5(^^^~c1HddC?P4)RUCD57xEP`=6-(=Z>57LAzq=ysnu!tSz$|ZA4W6nEzu} zJU>fh*^9m3KR6y*pBearcaI*Y!h)8?CsLXeECiON%xQL6AzSfJDDhUqr5KLM#%FgZ zoRKKl#FqF>@C3Jl%*8iNDi#l!t=3w&H1(gj@WJpxq-9qR|NO%5#jg(4@Azt3qrC9M zadYm?s$YaS#Dt{!p4=>dXd77I*%U2s()Z=z$rD?28a;T9C#xJ(=9$Fed1B%R3mILm zokD%0Y{e6gx1Mpe6K9Rl5b}F)jU}&FbWe%LNZOw9FvWL;#K1-=W-}tE({hp_VxH|#}#r1tbIS3{Qfx0U!+T*=H>n!&MQuR zcpAOyd-$o6;LP*At8J4^*I(UH9en5M-rc_!8T7=wHHoSC^!4(WyMle*=f!;w-bhk! z`Sj)9j@e1A61W z$n)OY`Dr`W_P$w?dit}K)7yvB5?24}>`%KXn0%>YYs{-ff^A!VUuWsb6wG%kxB;LsRV9mdzU1tY#kJb`#$` zZR@-%GI6^nexGt}ZpQM<`|QOF);!vM`n0}%PSWBx4!>{RaPxh<_>$Mz$xE+(*>YE<}IG+kIekwl5eb_>qf#K&I{RLLD z57*B6%~$WlD}L#{(hZ-tN;_s`wRm6osQYENh+gpV{n=9c=hTHCn9BAq)Z~Bd^^4npZW41{+H!zGyl1p)X&ZQSM}>|!mRzB&+^UA-gnv`?fZHA#XoPC{apLyHrws1 z-{x*`Ui&`ix;f9gwz+I~Y%jPxt=-UliakTcWvj#2fcQvpo==>=9Umzj55LB_^LOHh zynimza!WP|#4r@G?wB(7LEt}@=BHi~O8xEaS1hNp*{sQ$6TLf;|KlC++|I1rl=+H( z>q6W7UTx;-E|uh}jh&D#v`{)FmdSCdg8UqngDeG;SZ=B~>TP{|hnx3Z>jl=kF4od~ z2OQ_RcWSXV6!Sl^UsGpsM&z!IR(N3Li3Xd-EE7jAwG&xW=WkP5e$M~dk|}-B>mKi_ z`JJ#qbmz5}H01N@FeN zis?>!+nD&+YT*xtDI6P8)VY>cM$Z1UX`7Ry%njFMtu5UPynQcxD9Vhxw`|WImJIdY zl^6V)>`w92mS^7k;9GfEc!8|RGAC<}Um3<<+JXuv&rsO1J0!&MuGqpvIX}@%naruT zPjLNqc+v9E#HHZ4!JR}2N9!FPH9}n7F1f#MsP0qRDC~A=$0|ed>>PEAvbwzw3N%X)f;#6O5iEWMV0 zFk@BxA^%M8Jx%kA*XAbLa6P*uHZR+%dbz{C81}9jEs>L-7r5j#BtQ9S5EaK@SgE*X zy7WVvO2HU4{l?W#j32W7)VZNGpZ9jE{T=P~Ewx3)C8rrH!tz?5KULVHwZ5(ViRp)Z zclhE@DE{#JCua4OgKyg66(?jX=Ir4+eoDG@e6;M{&cJH-p6@=TK+Nrr?*)g_r;!=xSg~0lk6eGPjj36?ZtzW)K*zhU!9NYasy@Yx9LYD7`{9n2iJBk03bIa|GFYa*q9be~C#mYbX z#Z$>mdl>Uym8?_Bs4}^bd5b;rYij@DAF~x!zcJ{kpV7tn`NavpoCS|uq`u1fo8S0Y z*y#S@YUBmZbxnE`xL$My7YJ~1%QZe~l0V$hF< zAzNo5TW+s|p94ZZa8G*S8anBri~qvfFYKX0@4kP~H~X=lU;ag!k^MxM?zvoX+bfka z%YG^M{?)Wq+VAiA#98V$$G=6{NsIiB9CqPz5N*18rrsp*lSJA-iGQntS6uzu60^)< z`qvajzQZD`ZRBUyG{qcNKhf$RlF#`t_(yd9mt|2eYp=2I-G6)4$z0XXzUz1WbB}Tn zDPOWd zy0QO~@*{80C-+Uh$w$ZT&MA#eT>X0eLuu)|JE}^8^QNW;z29~5U(n^%+b+$%#%_Bs z%-2tQ=FXK@TE0whOs{g03KCjaStpsYID7fpb+g};oXww}gd8xH8jx{$| zEjB;vb^boP?a44-KJA&NnpdYdyA)kk7V`8=F%Uet`RdlgVb`T|N_CU>_2$Xg?wXl5 zH9c5#wy}e0e(GXB~^{8Dou<3tHR5c5XSfGL&ysmZn=L`_)yj8(#}Cme+k=$7bl>K4Z4fBN5p}>xBKbwp;kNuXx{5 z8OAXyZ%1d|SHBteIk_Kgwo?y1x8tPp6OZO1{T)+&A6WgSY4KF{1IukVo}O|J@cgTl z%6}%{o73J+{C?rzoRz;$*SdRQjZDLYB7sGx6kja(_w&@^4X%|u>jL=>m!5iD!2C5o zcwU3-sq+sUpL*U{ZNvI|YWl+kpNd2GUq1Q7Il)5C_jX8wrd#&Ti@OeFOkBsie0{gh zM(4XX4u6z*`zLtE!w}t1s%yV}QEe;Moobnxkf?65X;;-AgG-S!U)`AcLVeXrVX>7~ z)!xj-k_mb5mNFGfCCCU_2RB;sY|sI5Uni)hR-U;!m*xAi!i?fmpS~#626*`g|)K^LSE|a-g%pL5qZkAB{C9dKtho5TQd%D6f$IHDp_ZDyZ zoZ!hBS1&zsSzUJcQgK$u)x8rlu3viOvRjSOiuZuaX*EVGo&zqo)fm4;d|#2&UHW*! zdg*VnF>7vy&(%&7E5WD`5@HFjshZ(Qd|H=z3whCBK5#bHrC} z4*0_7bW=NVq51I*zcji&m}Z+vto`biJ^Nx6+p#YZveiaQ^r}|%2F-W(`zNFNa^qdr z)4Kgk>ytifT-eUj*O(*IZ8z6v>c4;!3s2lBXE?Xzv)bOnXCB&43)JCUwufo5^zzB8 zm;POD=RGs#CZomaMECq1KUc24{CK%uy5R+DmwF``eSzDJ+HmOSDa%A4tbWN3O)uqkiB|>42L1AmJ zP73{e?efLhISx{s8}lMkpW2*PQ#=;4?8T19rKKr?da(u1qdq>L{b6&#s&_77(t948 zyPLDDJ+b`u9T~rWDZcJ`7xuEg6bRALJ**dDn;$c$t^MlLSRT3eLdt)ST&a?a7n;|i zF09&iyVuy^#BA3s>9b;T!nV(jms_*(8RuyqwnAxWt$!6+(z$Q&dBBmaU8kfoVtgfdbV_R3cT~0 zeIae?g_#v$mtNkSo+bWrxx2FSiS)-@(oaOJk9XDd=@xa}O>+HqTWR?X#jqz+x1G=| zYZcvjQ_S+HpNGS;S&(`(w-S6}@r0Ku$ z#nsDxX|G!TP^@I<=8YY%5<{*#uq@xHy5^|)g63bv3q05QU;Xi495jct>-Nq4(Gm;{ z2ZQlVVK_4|FeK;a>Zj-Dr{|>V7l3Y(ODav%N4s;RSOrZ0ZPI9M`0Jp{0RsQ{5}bG5 z&u`KQ(_Iw8%KAiUOMr$Gw}|K-Kh2G8nx5*OvX!RwKN#$$Jbq@9TdaL}$zMk6-*fNg ze}9u__VRxH{{IXWefdm%EK68rj5+L$qKt|)jZE5?+fSM&{B@F@z`T3APy9LK@=4NC z-1GG+mFLqWt$dnaOx4Tc2~L?Bs;6w}dh+Q}5694wr)z%LCdu5cc{FK;{r$-%a~G~Z z6LV#0&5;8q)MiX8Dst0bwWy(7WbWM$sn_DIbF>aeSv;)WK6|5K$+VqGUV+ytTZMU=Q%#n-bqD>63F+O#x+i_c z2c=ar4Cm}xZ~fT*Fqh%}iuKyMZEtsJ1w2iEq4;fW{4R~`NlMd~EjY|I^-*}p=7hyz zXTsJ6N#0FYowsDg%SS&yhC1p@{l@IPJ$p*o-*bJ}Z{xA0UhKP>RIy72Xu66w8DyQg2}n`iJvx?^>>=l<9)36IUQw;xH1 z*!!_`&yO=Z&2OIZ>x)o0&SjA*@%_QZDc_HjTd#loR9ybUscywMf7Ug=TWvSEfAKSn z_ST=PXZ>#HiyGe06Miv~CFd%v>y}@WT<|63hU4b<oYk$JF+e@b|nkD);XkJ>*g_joDUxE*W-!dxI^|@tq_5GGBH(O^c z&E&2OoMybXO7Cag?#rvz|3BT3c<=mGNwL3qDs8>Hrb{}nVeDsgc9vIbvy{JlYD3WZ zp6fG=msdA5F6{g_>*e?3DcsK7d5kK|0y}bCC!99hGC7nz(sW__m$)y5d*qp8_@d6a zd&nP^IG%6)=a}z)&dcxn4(DI`vOD|W`^j>LnEUKa{>nw3TkcukBiU!a@qyr_`4`t~ zG1n*lIvaT|e&W6c*FOEo52BaCHy-@F;>11xupZ|=z zJmmtvS`~KatvV%e@}YykcMrdbey61qFU_AcN40j|6Yop$laCs`lvY{1ZSUTogXU{5TZQGY+A(!$DeMG|eB_>(# zQkBp%T_U8vC@*-%^*xdk($+1km6It@zFQtYb4$BX%8d0ZSN!&A**DR4_1SqB!;Dj2 zdvR_S{$L=I!qRrOZT;@0eb?qXOsP7zN^+|=b6;W}hi>>fqcdN2a2}O25BrpG{e|A) z_CoGtD1OsyW5An(iNd^k8p{4t&QvK<5^pIeL`4B_;J5UK|Y@1Qxxr^qIfnZ z8F02eicdK`VddN(i_%}ZzgT!c;otG8G9Q!UxOTjn5@*)mlCPQfDCMwjYTL@%n}K)S z+N>VE4R}*FIpWUt>U9lif6P|o?PPxc`oxc<@LhZ{5+&6yf|jza)3m>^Fl6rYLvpXe z#N^a$*BIHzneT8G**xQ@%;Cu&rDrDoJRg1}Kr$^P{J718wKJZ)evo-3kGnXozU_`i zW@SWr#sBxaQ?{&{wmR?36Zg$W*?L!*+%b04pE_aL2@y}#TbWA~ww7^y>ug~$+OlkJ z(bA^ONt@Hzwwyn}E5AxQ((<`grfl9XZK3?G*Kb6G<=F-Lla9+O&G zT<*P#Z@Sj~MNde(F*Rm^NRVN!Pm3md+4>qbesMOn6RH;S_+ zaZ!)^el@?&E@$l7IMrf;Z}Jj}*9!_w;<`A?W@Rk*fsJ+iu&Mkwh__sX4lX0Jom>C|^z)>l1~m-fV~=7f0{_lk&n-H%$i z_VnVfB@<2V2HjRL(VMg=u8U3b(Zof8Z8=kJsjaMBx+9{?TP9*r@+Xgr8b$hNo)-F6 zUh%QB{wX`dSGVlfoViSVA;AG%6Xr(AT7(}tzvyh)tw#rbZV8RZ6PB3n_4aen?lXSV zy_0vFtebF)kNw)ksh9S6&9Yv)%{wc+yC;6aGx4QARW;Xbyu7vSmhM&Cpqj`Faq3%N zFTJ6Cl(%eG;DY-qN5hvqPrGhJEvg_A=&(=2o^;def%~V~Z zROjsERGz5`kxIWVrx{F&lR9;C?Y(7e{tXAG9bdZh%H>Ce?KZr#z8p)Kmt(%FWnt$G z9j+P4c7C%;b~PajPP?h3y($x0(k7%d3{rV@g&P|r={-Tzc^C_ms(r4{~1!7xg zYwOKSjg#M=ye2GXVXEQz)1E;d2Q35-Xr6!3#+k%=X>avnbrIRz<;{CK7Uv$yxZV+5 zz%kABwU0q@-~PtyIgV?uKaad|YtKR99S8OIF?h93k zdMOl?roR57%jqWP+a>GIOV4sVQPBH9_H|&`mXAdntsi`B<(T~Fce40OE8p2>NvxOi z3_W_@^RXU!koJ8W@4U)?4z(()t{Q}`-+i)rWwcF;n+ij@~xxfLDUCiYJ6;x6gCYke0=#Tz{NcD4FU`Q^(FN*rb!64P`Za2iz}x>B-2 zQ_3`KMMiJ!Uc(3Zart+DRki+^du!*}c?aCi+sL^U95>&SxHi*vaY22?WS2FL>Zz_b z2b*KfXj6>Tk{1b}XTyS@>Y{ z+{+f9UEK~`K9PNBhJAIkhtbAF&TFgp^i8_sAW`%x@mm7REw1oz2HVXETU7eRSBb4G zN%Pt;*@gF`?4_nH?h`~d%UZs^`f2H`2Tj)|>`U#e+G^*SeN#YCIPlMGxIJi*?l^6vf52K!xNU7r?;ucI{KK{ zDg_*5+k2{d^}?4wZCU!yKF`ZA=y>Oom~UBo?e<)?u6d!ga;wwBf+sIrIQ3da*x{2K zr)~bmq5L=FY~X4OIc}%@=Q0hKN4RC}Q9AeI<;U-Ht{gh?uj0@*hNp6Y)1A40w?%$p znwR!Jt^eXGKh0fpQ?9x)EvuYkqyKhCrs92Tr+YvfZt zg<8)K;8s#RI%T!m)XfJpzl4b-i^VQ8wcR^;TBNF0--j)6QUY#j0@??!UQ*ZO`CnfV z`{coyt9z7+Hn^QV_9Ntua#ivZj;M?rzr@=e6JAU-n0TsF=bP3FcZMYe27OP@N3JS6 zXS#JoM&i|+Z+%fGOMXo`_cc~h%+)iB>Hf{T3R%3Re;0*V>tFoD((?G8(!NPw9{l$f zZwoyccidI&=F7rEegCgz)?H(hd$5lG=puz1+rm5z+X8OSm7Z~=MO!#S-=qqwhlSpJ$-&t2_3o|w_nl@`M zl)sEjb3d>7#kMMLq41X`C;dy`MP-uKePRBkc>RUyy|Y1gc|@yb)-Ac9&9tzYO~XR* zO`VT@;ET|Ai?6>Zwf-Bj(0qqu=k= zpby-Cf)1`faCZAkS?j&4FI0cAOU!u{ewM4&;V?(*#_**r#{PB9D=*}KT;#NW@%_&i zUc6~t>+9S7_tx{>8vJ`2#4Z1K&6||Q%JeR`C`9P!f5(OPUCaI-ak@Bv=@0I|Q-wEg z;bY+X+xu_b1^XBCx&C(Bi3ry%xp4eTeyiQW{~m9HSJrA+{rB0}`0rF}ugL7P(+;x# zl(Rf6@a*duMYoNqw>F7HZ_9WoIqh)T_NN{bSKpBNVadKb<$PI}?)haJ+u|M-e82t4 z)l+|CT@LFa`DXzck4-Nry6#@HnXfK!b6}trqoP`?$ctKz;9YY)gswahN}jmFL+pYW26I;(@@8z8n-RGk^O*n0-Y{%PeNp@T+|3l{(teh>sL0ISiKo%`4qByt-QLG=ac-h=z2e`$v*SmY-5~bxO_&pz^O$SGx}saRd&;XFOwuQP8J^v4ULR?ywo(}f57FF8FTH^)@_Ze%-SC~>)KM~ zx%bV!^s?Qz{I^W)+_^8sW$TvjRNZp+N5GY@v#Xe1CRctkym5ES(Y?AmY;I)w8Zk%t zN<8|U6Z!75+f&nJk!v7^8QR|t$Ia2N6KH(7sh z>dQM_JN?I>=$c!z6CT~>eZ3)7PH=61S)`Q(QbDN^On zl77x?>#^YuH;?D+XfLe->(y&c|z_4XSk2r?=<{TTjva z((ml}J?i3W&mz~TD%(z$(wCKYJvE-YPhHKe^3l=0?#yTQXE~3|W7K_oK4v%mR1UqD z_ROU6j@{2&(z~_SzT-Q2^^tJ*h<)^Q>i_%AUw>Khz)h_QdmlO~-u~r5i-9_&j0dKUu!#JYULsk1>?mv8{R@ zCBeJNz$(EY>&dj<`RUWbW!w@s&B>a0bk3(4!Sc^S7U>;OC|!7L<$S-h4^+0ce=zvG z>16MQgT;3Ctp4wvU+m@IJHv6lm0s7YMLEAVcrDa(+qR3P@>P(?D)9)Gm$?(lPdwe> zSkiG!;)G?_o6z<^nd~K^F?LCPdFDM^=KcJ(*7%5CJ=0$<`@8r0>SA91mtk`eS-AH{ z{~n72hkwM*xNqAy>AA$7bxW8}Oztx{x8kz<|7c}l)87$oe5IzZb9uQ-6o0MEj!b_Y zux#D&h^xJtS+;4bcrE;Mj|7zpUt1N|ec&~3qvyMGJc4QxdXug*MpsHKP2}nMx+#sj z(`NFK9Mbp@w50V&?T)_bX+GTFM@q z5Vi5tO-W<6w7m0s*uOc>v`z~tn7)|V`E^Nl_^FOHZzI1iaPe7Dk`R%8JN(7o^sBNC zj;-%lQ!mM6+|LuA6ltCI!f)Z;v+oZS$lYA-^qu>w#hgpQhAWuYSxu{MalNusBQ0=! zlk?q9rc&|lDpURY`X4_16>3|3Jz+_euG*^IhTeCZqrO_L3HiRraj)R?73K%m-|IR1 zN_U6XUS9JRzYAAaS?7hnzYr3-PWxbtuDRqYtp^jtpDAQMp1Os-eW%*$h0N|ezt@;F z9ct)GpRl!mYCxe({$lK&$TlM}fni_g;#m`|J}gOG zl6xl9ZSUb}@?R7-ow|KPSnJ!yU*Q|i8JC}6dK9jln%QRPwf$1%9phgdTB(`!t~`sb zrcT<^5xb_gvNHUnM(s5TX_v2y`4XnKo?*H>E%|%mq&Vqtzqc>s+Y@$*ZIBV#z^4$* zwo&_pjHJ}DA68-sP0Q9BsI?ic^wXMrct%oar1E?10C~4{zf8k!UN3B`5;%OteZi{! z#3{FqO?*%ovbueP!(X;*E8a$|Z@ajrOks)KQNFL9F{|y4w$({(Uva!ZeD~GEuZ%0A z{_6RyIR7~HE6crr_#@G;zU!t{95*>^ox@hxaPL#@S%Yt(Z5xlL`RJ!U_1WA1^htt| zZqLi#6Q>pyh+k|xfA6_@`upU>!!rbrS>EbC)4a^*@Pxxgd(ZIwQT`HI-}5g`H9XL^cyzuAu8LR$zI@`@tKFh$D zdHzB4twpo)UX@tw>wTYb$>(_a$2DpXLu`&$ojdS-3xh|+y#M|)q~>S2ymR`fV=I@s z$v)NP>&o_v{W^(TE?l|7U2$=N@Pmtzo4$G~tbV%Hs@(qg?8htklJ7MYMVc$$-eGC} zs`}Tvzml8g_*_4^bDuG@>N%e&R+~-ZoM*%tX8-^Fqw$%r^BIlkF8NK%PcYSS>Z?E5 z@Bi3-JM(AVKdX~}Sbv^b&-htC<)7=B{WE@ke|_Y?dxfgvfBDDiZ1w8}9ooWd+V?EB zn7;k*tmJDC1UqFmGMsZ+R&2m5(N%XY@ys6`p0a6?VrK#_?{NO8wc6>%zO=kO-aU5~ zUYTW3z`^}^&pMv13@>$_$E;+kovR#qD^P6pv{_-bvi82=t3K*nWto;G8wLR zzP=h)wQtG&X`4A^?KK%u4dZPGcN=c_qj4@?_2OrPEL8!nHl2e4lb2hj7hbZQ?K-=8 z^PH<8uoU2BG-o^=U^Cw(2 z{%XGSz4(u%ipPGk{S=y8qhH${;bF1DIHJU$?VwlM2Cltxvvqj9eD3T&w4V1+cCUeD zi29vqj_Gm-lcbL?Q}lQ38&+L8Z_VmXEA7%H zR|R``*G_r-Xj9LLvTNRt?Tvc4*I4(8O`Uu8%>Cp4p1V){T>Roa&xVOj8s*!P_7r#T zd^KZsXXc_t&#d*I<|SUfus8dixYaH#*}Drg78y*7b`*7U(Ct6CbocABW2LN*Z#5dv z2~S#4tnOyLe%phUMju0FR;>CUcklX#nuhyQ6=jlblItH!#tFJdi@I+(bmzBd?s2}w z>sGHTGhSxf^YZkX)vqJNs}0XoGP_yiABuQ>R_u4L`NrPsCN5HoI{vORH!(TrFy%y@ zwy{9+zR+03y9Xz{OYtZ-Tv9D@X)n)9yS6V3$1LTytjKQS%xqe@j&s>hy94ie3TE?` z_Fg;4YZAI7Qh(J_CTH){$s$Xo-wV2Z)mU8B6J9IbX2GAhbqwZBXp_wQg3SrdZa`WtsMdTdj|KXmgpo%}SAaG(mHlM{I&uY=YO{m6~58 zoL|W(O0=m@yX3&VV2JZ~*Q~z7lsHM0X`|cI@6{iLivF6&>noP~c1)je+Mj{f zD$HG@vd{E0%ct94KL0;j^RK_OC6lMrO5}QvMW4eI-?HNN(+1@hYSFhc+gDG}wlemZ zS}=fIyOHB37!*5*)JsQXF zxEP)BZ4vxBu{dus=aK^qm!=4Gi|NH^OL)ubw@iKUJgPTw9k=17t!5Y1oOVjFwXd97 z&CBCm!ZX?THt*&9_^R5e&5Po4(+u_*{JG^C>nAgH>l~lduRNO>m#%XQ*|}%NgIz3_ zW6!QA`?>MN)uhJVM_P6t35lF1dEQ*|ed;HZ3_3diq^(X zPnz)B$n5r0vFn=VvF;1w(yZnrE;$_d^U0e63D?A$cNR<=?RE9;1P`oi(jSefwcC;gjy6E^t8XBNDSk~(v6L1>d>UCGz{ zy!6Z!vFVb#f90pzZGY%k&+J@&c_3x6=>FMDlaf8*@=uXpZE zp3ALnzy5hygTLz~`A6S;@6>bG%5E?E%{Qyn`sd7}f4_e+o~=5qF#hR3_RXR(=g!}q zxiiEk_ts|~tCqVrcbd$YcVS+7V8mqxse#GKML5ol*-_5XfqQm}P}tQPs6qR&Bj@tw{b_T=f07U*o>cGq#?2 z_szMsSf|OKI)17X0g$ek?L~jPv<2VR}gA9F=DE)5$a2mrd}OJN-0oRrj*W02krAGh8n( zU7jRxc7YeaSLU+WvtR1XdV4VU3v1@H9U1G`lQZUZpZky?b9Q<=tK6zZ#UYlKKHLwT2NJ^~gytDOW?Cv|PPxVxM+fCvpsl8d$!7je( zAPI2iUCM9HK z7i2nQXQxH3Qr*0jvpFm~a9Q!XHE~<3PHG*}@NSy=ufT=-v&HvU4%rvv-|`q=;Ql2U zRr<S?){@1p(tmR2M)9pz zQnG0JSJvCf^;+*+{HygDpV_0eUrFmlQ&7Otxf{CmoD>sRftSwd9y@(d{_3ph*%LeVhklmgPC7V+t*JI}#mu8T z>$q9Aiq3u88&%P}f1~eYNnX>9G4|fi(-&WsyDKz7_3Dk?OO~apPZWK7x~$q=|MjUg z7NI{=-le54-yrbPYI^R3Zexi_l?lyx38m3nUp#tpBOuf)RpH`7m8s7!1w@oQt9)9X z{hO`-Wag5kZT+U#s!oTPU1zhlTD*F3;@SKA4isIPlpCn4ac+xO_ES@ldvW3&S-WCw zCZ2OU9HMt?UTB8N9-G8P#f$!hnUxl6oVX?QKP|dwHE)pyhso^0Upw@Xt_FSbN7F-q<7 zv;?XCmF(xM=Dkzdt5$mP=^wj)XSClev6J|C?ETE&FB}Y3wKo6TmKw#AS{f|8zBwQ# zarX=DH6B^^iH=f^nyWRZRydxSpS<%#$w$LXiCH&uo%b`d&A1#B{b!=+oH;jyPcQqx zRBm|SMzLUbZ@TukeuoWHIdgh#q#x_FUd!pvdS=n}#kc%f_nZya4qa_mbkC@G(qdxu zE%m0v;>(k#sF+Q=z-?q`y3X&VjjZH`9pOc_H$GgHX!-bZ#hJpE?jXU)^(%W6XPzm| zsoZ-*tktSHuvTxU&B?cKRj*9BnkKkdH+RADNol>pFD8h13!IbQ(6Ga8&z76oXSEI; zesre&=FKOwDgq5n&K;iec#-Uzr<{+4u2_B+Ir1gY;Z*Ovo}-%&W-9AX2szJEu{D>s z_)N@U)7k6i$AsRO>~+tuRc-$wcdk`Z=;$+@of(_lzjQBZj#yf{<>&06YkLEi?s~zc zx7k|dkq&SBEl%;M$G#EknOAYXIs0$L{DQZhOH(HAW@pMsym@REqv3|!C%;S&#Qclw zIIrJ5orP1f&cUWzH&RG%`?Rm;gSG~gpE(*8y2aGahKFC}J4`D7%j|Wg@xe!y zt!vW+qHP*>*(~If7J8m3rfa?C>p706nT$`baW1x!C^t!I`!ZK1qnCYMzlmqt?M=7; z9Xa90@0H%(cyQM$drlU=+sy0_7p>-y_Fv2yWWIV^uJNV()05hFzgWFz;fwkWYnoa9 z3H#g4a_@axFT%Yqia%s|_1-iy*Qr&Hw&kv#lBTA3_-pXVuC?bs?NO3;X#Vqy?Wpzh z9!Z|8&kSLuS!WXh-Hx!Ho2$rlIYcm$qv!fxF=@u&h@~92jRg`Tug_T?vTRmEI@g0% zW`-DT>4uh@PepenIT-H#zcb}qDRcUKi}IbJzPZ0<%BpX@y6{}VU47yDhb>O=%U_H9V(a_Nr_{H>O6FU>_zW(l9T5xjFX@TLuD`JT#ceLT zMeldK*xe#|({I0%`GsDtT7G?jw6uD*B^P{4iuKRzJMO@Bw`uVj{kyLg-Q}vCpBMb1 zENoWYfnS$oD*_hUTDZ(8U-jADqIyB4*FyPAb6c98Ff$*T@voeL>+aE07w^6Zd*NQv z-*o@p8a}M`i_tkj4|3k^e$1z`01AL0E&P){boG~Rbbc$QSB^5y}qu*Q; z1CB;n)f7GSEcm#zvbRP=V$u67VM(ENQXYS2@kNUr&09N1a5w9s!UAiLcW19wZ8Wuc ztWkYn_Je(_^>z1WHBNY(pC&9iJ#xw-=}mvUrv6%ZtmxOI%$sI!qjp@iQ07hx6r5Xi zb4EkpMSF`)Tc1vu7$7pSKV3J*)peUn%azh=8-#kZdmk;4U-)FnHId8da#iP9Do+Q> z%-`m^aGTk@c{fhxIi_#0y&{uwaeu`zwGyXDHrIX5;j;|(+^z3Ss|sGS?d}hrsR3-~ zCs|#snWgKWTv?GG@mg5)_q@w-Q&zP9doRQtWX1N$)1$L3=~|?8?#$yKm?pAqEPCUa z$yJ&op5JAAZri4pC++7v+2VCVYnpOZx6!?|TgzRxAJTVG ze$aNWIPJ3i6_b$KKNC)JRS0Zr{qb^q`^J?1>R-ax?8FEd9Ia-t#ZF z4_%t=_r7pjYfIuU!>vcVU*-7E)2;CFEMJskSavqkLU3Dxwf$q~Sni~^@`Vw%&+n@^ zC(~(=srFYTJ^!Z6qlkARLaSVyGVSI1y{04zbIhLDK5>&ETYyG%%D!Ex?Wf=CO|18D zlKx*Y|Lk{Fj*n9>Ec{;IS-WHS+~~btnb&rvP|W)M z_0UyU4j%b;>gREr4H4$z8{*0t9%TKNIUe`sWum9NAvD&7m|7HukmGHuhRSZ zfsg)jyH)=0`gpJ0@aAv1YZdkftlqcZc<@(Z?Y;er@BY@@R%L%!^xpZxsi%xrK6~JH zwJ$nE{atWug~Qhe4OSfdtGVU{eEzt|N@D#A){0=+rtMc3{s_=LbpOi3A1<tnT|?>*yS#Sp$scX%4s_o< z+4qm_UBdVB3BA9+KWMKp@0eS{|85Ga&+{*O!uxh}mv@_gy4zpCe|u3!TC#reNk`7m zf*ZT0>sHKv7rW&4hq`Scmx^8;T(acp62E63?T;xYKZ$v!mi)QOpi<*hTauS}jiRSp-&+2j z{A2Fq1M3eQxzxOvZGNmx)U?|o&yv?`|L0tGuj|gI$1|!LW@nzh`EvRC2g{nOYcE$= z`gSwVYlsos(Bzz9D^jZ3wqmt`Pi%8gsjk`z-WhA+7I1&x*pMjE)n3@6={>RE{e#An zc$ei84Kg1d8Ttt)O*>wAr$Ox5MWd`3rY%m5*P10y*9J@a@TACG^azuBmFD&&-KAF} z$aKmI-JXo@z7(0y+DZ1mI{RGaRX?3R>r;J~dQYYoPrc>I&mtQ+>Ni$aP5S-M)L3o$ z($r7J?|xg(Gt)7=o$yFd%{|c5W8Sm5oO5iRnb#@1@%=_ymf2clpYwp*8jJM~^qj!D&Tyan-_2#69ck&YR z4t4)1RXb81`E2*}k6n&6^ApXl&8#`^o_h$qKNxe4$1^hiF1LDmyUo|QvWvfk zB*bS&{s_Hn;xBc2L1W<4u&KA+In-s=?0i1Qvg`BVJ=TG*q_4Ib?=q-2-|fk_{Pvu` z;kPs1KUe?pwJAFA$n;fub0q6uZ~lB#&isQ+Uub~*gQK4nx~?)ytd?u>w{7A2su=R= zbIew5?yGro7Jp0FStauIm2$*lyDYsm5AXbQTYq2)+pE}!=bP26OLy;UyDydfC~#Y2 z#+HeOx-sc&221aplT9yum=n0_`sK*YMYSJ$jP|VA#cjGPE&qsd=}zNmJ=rr3D*65C ze$4jWlXc<0DOanQny;!GI@NY5Up`;J7JoiyzT4VgJYg%(CpG`_4xTzOz&F%vR^4vF z^^eQfc;xd*9^Y?%#`G7v^GXBd!q=CdXxyD2oSJofvf8b$2`8Ve+V`th@9pY%{%LvZ zE}7Qcy<)IG~AT^5M$wE21%sKaN|7C{QM9wRh*)w|LwE`ag@v~a+b(+Ixf2J>Uw>X4HG3lO? zc)|JSsML#}(;U1fHQbw$<7tWcSnRt4OOvg2~%d0uR?EG=TW0U;MO^+uoX6HS5WU{VOd+a`A zsUzAw3ae!fPx<=vN^j}u<;N;3j>Jq}cE~t$mgJ?D=zNCo5B5J=EKlx;{SkkIOU(Ga zzp$5p;r8INK5>=&^7+0q1eTw?*m=Gs+0j({M`c%2Y()OqW&KS)fA*<s=Hm6M4bNog7#jv@7cD&nCro=FOKb+BiZbd`e5(BMN zw=MR`ZjN&U6?uI>_8fkxbLF+9m9(1Pq9pD|CSfm~dt#*0!ak?JEViIOx zIBbh=w9TD@(KhsbDIu}`!j2-g;v1Z!C!E*Ps%sF93J?>H=SfNmoW!<8#ka=bW8%ug zn^Jb)K67T)kLxub*nceUDL-C!v5YrJzRdsKnVrw?%&ac2|M%-3^MT?wTsd4*ShsOJ zx^q?j&N3CBX{Y8}d|UEUSbzGd?)O}2DNQq7wCu6# zL~)PhOO=G@9!vMzRIB-XvGkEoH?FsBxDnXbD{pa9s(4fBeePIcZOsk75tZV{d}n_S zd)4+SS}jPu(_(e#;eb`m2d-MJTwu54TULrIv(>H{&o+FYb$aHzDLyNvtXh1&qSW{8*Yiz7^*ER_H7LWFH|*`zW~ix%^6Gtc+`U)|sSyn25A+b>RL6>qv0$K3Z`8@qo0 z$=}JQGYWpxv$bsay?(92o;_vXgVv=Rm^&-@d@w#)fBBC{B9}SCF`kyAnJK!@CZu2E z*{o)8{v(sv+h0P{bj5ys3%A(Uyu0jgTy(xDzpmY(6NcJyzP+xpB(Le{7&sb~sv?;Ugmh!w*(`smy|uROVk$l9``ZtODOE0ZvwJ z_ce3HZ>?&0#9o)Y*5P8%<5*74B+sl>CP^J}e%mh_rC47+b56)-&)5GidVR0_VEz+$ z%=mU&Li0x7lF4)XH$S&|e%EsH=f}^dzh^jAF~d=+-1g3Cg~l2-%{$)%K743U+^aZs z%WR(D)7rmzPUhYf;t_up)HywHyXKkfdpswM;;-BBf7>}R&)!7sZ6lB5rclw+^6IcG z*WEF`nu*((<=UFIB~%1`FWr9S;x6Hipz|54X9w>70@+I8dwAxdKbl_qViIS(Efnrz z18tQ!{zC6?`%~jUzmnCPf zjYgib^VIrcwX)ToI`3|`Y0tSi<4=nD-TrqkPy9%7-zB}x;MKnqo=do+LhBYdue8!{ zvAwWX#>S^QA~9mV$x3eBX9n$+ZO13ahqNu-FMm}2glXv!=9^s`_wmhhd%Mj*y)^Aa zzw+_JQip%n*GnH;9k=t*Ew@CQ_%*?=JrCOke+fFd!urgGRW8O`xt4_ePMDuD(V^|w z7Gt~j%HFT<9B6zNxnr5rS0#P%80FQ6Q}-)<+_vM`uNl8Antq5WzvH>n#<6`@hqs|w zH*3tY4(%;|lb*hMBc{5;%qL*!j)?bJg>Q`~E&lLNb4NMT_YD>;)jR%K&p9S-_*gCP z=;z$7vim|N^Ol!SjNsIHDC6mIbW7$MzGv~Eqc)j>hYo8kSSlLw ziaEObR#L5^sOTCN0r{&@cdwQ1j=H^T_uAX-q1TVEyS;YnTG#Kt-|gL5Y+S7FlXm6r z-)Z;t)6dy{pY#6r{QuwQzOQ*6Q}^j(vOm)b;r`tZjl%{jO9y8P}BoeWo77Ti%vaiUn! z{X`7U)8jSkL<<5>OzPfY*5fWxoNH08nOM2>k400rQJ(hmTPJJ`y?UM<=UO-S=vG6U zG86ISof5}$AMgCkvM#j9aALQop3Vh9pL0vMhgK$a6?iYY)oPivN@dwj1Am`%PE(y- z)3QrrW-E5i{A1uPv^h4Sr4&)75^w?w4ZnSsFSCO zSCU}(>>Uwj3Z@n0YKlKEEZnCuOY#A0OvMh@hqI=4r^e_!Phu4pFWML+v|43j)Pbw7 z`t`o9Zv1wOmuXR?!g+CymTe|%fA(=~Un4GYPxuS_;;bFkYuv7WdwMspUc+NO*Hqtq zXZOvTx57SP@ek#TKT}?X{yVoo|CVqVYu9y^KA{P-n;lK>hEKZW;_tL;CB-BM}?@}eJV zU(LJfzSmT!=bVa{(JH3Jxm$GkXRp8S8JWd4*}FO=^?uK#X$gLz$rTyPrFwfO9f|t1 z;Kt?yUsh?RUl3W@bJcUfV$Cal_ktGuXnwV6-nuZ;J-4n)Ettl|>v=)k!vCu5mW^wD zdtIDwZ(Y%~ zJ*o%i>CF|XTIJsxczVXE8ReGJe;n&e8Xd~6PT4wXM@NTg+`12~R}(@K@F_YO9dBeG$x!3Q^H%yR^LguBXZ$pO(|R>LAC< zsFh`x^n~s$`>|LuNaIQh_X^7$GaqcvUVPiB(bZN~Hml;~HM3Cut4H?D|H$RzmFvdj znq^bh_{z~|O2txBdBf=@M^l9TU4&l0`0EzG#{Uk&cPx4iWK=bTkvXId%*UOAi? z8~rfs*AIt!bbh6oV_!b34IfoN@2C;rqE*#pPn(8`rUj*~Mgmhoyz1KFa z@3~^RwZoY)ZO7bTJFPrc-t}!{?)My z&z60xFi1QTm)lxfW76;EZNxcQ%r^PW*9g8$Z{v$1){LA!7R_3<-Mcgj&Asmb_{*Ol z`fcK|IWHfD2tR7nlr>-Q@=N5pzaro7c)gZ6ep`F{yrrzm)MjQ(`uwN5`NhBg4;REO zS=#khro!jct6*Cx^`57$(^3lFm>4ELkc(QS^|3W5ca_DjE#8m1nXK*C3p*uimwwpl z`Z$myC3o%9MSc#R&%aEIDex6?o76ku$aI!%b#W~!kLKEJSgC6(zT7$FQHj3bjz`7w z^uBNKS@P@5z1)MhwKlx|eI!FivvTOYaczVCh;#kF})>Ev5tOEb4}p0Im+YR#s+ zYkO`*d0tSIW0JnKYps{=m8+TCqcoRoF73HHsW+mi;r=qo-$8eH*OaTgRQKg(v%fZL z-j1-=szbT2g6z|`seW9%Y_n@>&he{8``WTq7M@zfEErjmB<=e2pqAK->F;b(HwONY zJjo}Sn=$=}T4YQYd+Lf86F!E%nc(6e7Mn5sqfp$mjnekhA3Cq@@fLjGE>*6)Zu&<4 z?WdGZY|T&Huj906_L8pCDS~1q>sP#(cr#;Z?y=`5&n|91O{_b$L(YvLBJNmnu zcf^aui-mhU@`}uPK8=0F^c#w0rygmoi#>ZZ{D@v;P3W6xN979F>Z}u9@-1Wq z?&;a=GgkjjDGYe?yy=9E%0BfC2A5Mj78pLx@et$hIJ~K1LM6A+ul6H{V+1PQKPs?J z3)$=xX`{4HzuWz$?Y8b@qi+wS%3QV9U5@=&rk9tPzB?|#uj-=PgEw248&s-T@2sq^ z6Pz*o+4M;&=WGl1y#JhCzhYVC&X=)MPV&1=QR%xJXVVemDWtAp>Z^Eq!VyoeoS-|8 zR6k0j<~H96XVps9Ufa39Qit0${A)>h`yrD+Zso~Aw_kh2Y00jw{`Tfp)a%DGbux?N zPk!56^gsJo_uB80w~pWb$;msjrc}H0=TDOa;_lZNDV|)zFDmviQM=a$&AgN-bz#TD>^C2e^vgXFZE=|SbE@7YiLl>C-Jf?I zo4R`18WD+H?Go1dImv>`llQBtZON}Vc0J{<^u}M2GK#`|rN7$0n;zurik#RxEn?Oc z>63XsO^)1obYr%x;3KC5j;-HoRTgUn_==dN&T{w$_d{VpczZ@#_0EVy%C zZPFRZbLyUxzV6r(m2icDZ-Ps=s;d8_m$y~kH`||-)LqdmEUi$$DRbh{ZSID;+ZWdT zUG-u?`P`^l;lHt64L@ZLDNR`{Etu6AbUNeL)A~N)6Lw7d3SKX~baL&yYL8!OImT7z zT(?~-f5Bl5vuIr_4o4pzzWv(xo{z{1FWz27`vWb6m_E{Ny(OD3GOu@eC&tH??#~K-(p6Au) zJ+S0l{@n0MrQG&}X}l}-_9+>s^j`hK=#+m_Vc1(R0H|1`d;#Kv4e<7tlR}7@M z&adxS81MXTk6Ya*>F$0J>7?QlkK&K>O3je=Wqp4+LaO&&@QKLhV#f`G607G--kY!` zdG}*K57EB4+^beg)nwj-x`tO2n!{6OKQzOFu zniPF=E(`z9VEIOFkJ0h1J04s9lU6zJzU7qv;wzswwmvp0mYw!c`p2?kAMNg}$`;J_ z(EeUEk;nXz-IE>t6BLhUzp64^C_a^Kz4(RSo$7|356tcy63P1d_lVK{j(9DZS!%`l zwIQKmGj3|KZ#<`TZ1v{%_xg8Mt-Yn&H_=>`t0dd;&{4-n3Nm*(dyXgX$kt!B&EQ66 zjL&=5-l?;`x-d=2;cDO$(X!MCSLq3DOIS6jyRwU$d#a62a9h&SN&VhaoJzEgc4!!tZkL%CpbP@DCXBAHOF4=qM~=QSRGY%)6N^s!s*sJ_tAoI6VUKA7=Hn({!=_iF zr%Xb$OlK^)GLvJILD!F*t6^DFcLsfbSXOnIqt3}q%`-#bwA{fpuU4uXT1!9iJ^k+Z zi{=?I?={N5BnDhr(nG0!`8>~OZ=C*y^(LLkrvAa8dEP~PtG+AkNm8$Vr*SXt#Mj5u zS8tlQ=9PQnrp}68R~~t*s&T7YxSZs8{Bz#USdC-PLbL8}k~vwD<2G+oYtBZ|!&7s` zJ}iB9?0>^f#r4-CShac?su&jEU2c#syZ+H*i`n8T=e63?OHKUF`^`EXx@FtCV=SrD zUHzAOUP`pd_>r{v;0F%dbx$N6e|5+)y-E(gP{i<5&EwQrm&>|h83}sB@Yy%_POi0$)!tG%IsUO8`J1scqX7!xp(oz8H-oXGMSoT z)!I7cmWka}@d)>eN^w)}iifpl{aXHQ(MnZ2>p(g6zy1@HZ9MzFF>@*UPo6lhF}hN0 z^OWZ%KFOuIYRfFy)Yi#5t>3mq?r0(N-K%W7qGV%Tc>?vtq8&xQHAcy_XREAL*U%SS zH=XnP`HblLR;DBR2C+|o^-88X2KdUb9d7lBTO(Ier^InfZf`Qjkq9QkJ_nxzChuLiRZZ18q$W?2y4*bP zz+^X%TZsWif$hPk3VKX7?%aRc=c;2$w8Isl4l5=@=A-v!O1zxg%Xx37n3~!w1+_<- zU7}3>vkTjz=Na}-wO?{;bJ~*kCQ5&&*!2ndsaToJ4({YzGqFL}Y2WtF8<9S5bdILH z|2a*;{3uV6{h{KvOA`(rNr}zenK@(fjsstMY?NMv*b&jpuS%vq$ z)`{^k+c_hrZSV7s{B56F+lpp>wwdIA@sxDA+Q)6tOHM8`xjE%q@~P5uGV7;*J^K1- z%zOFudlhH7n0xJ+K36erf5QHyw#z?X?iO|bwQZXPYxtz5w;CVb`RrQyS9$B+j(Vds zqw^dweiC;-CV67cHDc{ZKe#5{V)F-|J~a%o!2sU%B-UKJ9jNy7JO}^+i9yaljqDkHSzP> zrTeEn-qGRD`Dlh;NzA#&d*|P-ap~hgZO3k73Tj`Yj0HNurK$xVfSZt;s;f?FVpW_6}h!P z!#<|}!K9asLUpM!oGO2!tc7Np4QCpd);LJX7SsnukF2^d8%wuj+J=!mp|2N zUvBXF&760?uI$U3gYPf7mn~kqdD;@QiuG?F=r28W^1Z$4>RZ0{uB+c2mbddhyk}x( z;u|K%Q*9fi=PXJryM4%S=7sHc-cJ9OYn{G7$Ys8nz&=~zo~BGw`B|BBpAr?c{{{VW zP~0HeT=9&-la{?P1|y;bi@%w+}GF<)A>ZEhv zzsKkOm;TJ3JUia=bGEwGM{UX99nww0vMr0REONhX(Xd6L-FQ>S^?$l$dzDp-hyEv6gcly3l zX8l*o9z}0)+BfmRx@r8Tmts_t!%xrfp0X!RXzh~FOKYY*i^{y_5v=Vy*Ccysr25&? zOEK?{IIR-bQyh{k+UeEtSNw7D5YTFF^3yWJh6@1=Ztg7AUa7DJqrS@Q6Z@}eCvai;^;%@!L z6m`|XLWK8i&(|>1tcmY7)GJ7Fm7fSm37pgt5pA$V{l=T?Otw178&xNt^_*HSf`b>xR|O{pv&9w=U{- z$UAiA*R*Nh*2aF-efR6!y0r3O@8s~?&#tjKMs2ZMa$9THQSpvUvu`anW;^r+INq-0 z|4}RWaKl`K`r_HUbAvA*>+AKMJxgl$Eo-x#w{N>`ObWWq-tuze0(*(8hnN#}SA9Ja zXxOi*ySujh$Eu{j`UR_w$_pm@-kxJO`NAY4LvP`T50`ucZ>|5@{^$2rx$+~jU)=xh zYuK~FkGDlq`M%ZG4IdXymS&T_$i6M(A;;&NZ}Oh}lwXoxAYI=I__c~UWOph-+cuw%)>f)(q*(7xn?jPuw@K2`l*@OLhky{&McxTLZ zxcf@<_R`b*ZAbiX+^CJ(VrV)eCU&FA^n##i=T=*ai2dHQ{^Rzuix;1r#1nMs@maNO z>rUpcJDQm{W~7^}`S~kbH~r-?VfOngzJ7G$exLo(-Sn>5wiWC9buS5X894~;)s@`Q zT>fF*%Zs7!_*kWq_U?_^k(s|;?0(&zpO30<%C9QguHJ9`r>VEVwd_UZ3oKuAZ zx~6Zo7ZbIA>DA)aYQ+(rmi*GSQ}>a{*9Waym#&wlycB&@@XBY8@U;HddJ|nc)1TS7 z^CvmRCp3$>N8Z1CcAZ?8J435gs;; z@OWqFmeb-Z&Hd%R9qw9s`*E0`+}x$_XKX3ZZ)cs|Ubu9wNp5EI^omtFTiPzjnaQa3 zrGASD=9us0p8EFk%>zb1U;Q|>_TyUqqfLQ#*US+-wR{oe zI}<7N@nJ68nzc$sHd_7$W{aI>S0n|$IwGxB^`%$Jvmi-?y(nes>2I;~^y;*%9kQ}g z`(Mmmwf=}(uEK-K#ihSagmL_6sttW>U7mgSVpOYH@iH3)#-)}rug+K8GJVsXl~Yl_ zVZGV%%Qx>m?*7H``B<{wj`SD?Vatr-gS$38TGlp)<8$7lmg~o_%r|i=cYSoh-|BGj zqtL9AT>@LDee_%%w&-`#VzCe3jr-^A2+lii#CqEE(L;ZQ{ij*mjaR%iTwE5*=UEWM zW@>uyw2yhywW_|(SCbq>Ua6Pu*^Ewd&Et?c1YfNjXjXy?EByOLL1qCMsPBnP1l#5mM{>wM)u!y4t?R?cPQ6 z9|SAc7|DE0{^WV~yRIGsr)K!mu4}rM#YRzO`;N^y6ehK+Y1g}kxPV748kt!^i)udo zH=KC-67QOZQ=S(kyIOZ|P1_&i?H#;wTK7Axnj0&V%=3aTcH4;>zM1;WQPi;|gy+O{ z_79n&<`2_;e%Rz>zH&#r+qT5rUDH2o>XN^Bmh0}KOKUCG28q87IN6@gd0FV%TK@Lh z-$#yU#^KYgNdl71INZKQ^^_)o#glIrL&y+o|o{cX_7f1#2t_vj6DO@$pha z!~WQ%27W6<4o+?n72c|sSi0_F%uMzSla!_nFOBPOMk90nIBx}I8X1yW$BWTS;<3bJit~oO}ajiSl=`*d9 z^I_MUzLz{r!C^fCQ)9PUYJQBG;_K%Uu;cYjm8nlw{yM5TQ}N-2rAxwQZtzv$FZTWx zs30Kiw2&cjlFcmZob9Goi~m%fyuS8{&&&WDD`kZnHMThmFLiyH)zL6dZsM*e{dAs* zu~AH)!m>}CT(st3PxP_!Z<&F?XI=#LMoLMtmMxJwT$z;VwEgQshlbLQ`I*5<2mb~1 z?+^d)9USwTRWvfCi0|+Fn3mJOYPV-DJE{DxZt=eP2d#s*y9a5Ne>I(SN;NM0)a#gM z(%jjLADw+s^+@+5*X#P8b-vO&rYzdC*553BWr)Y+Jq_>IME!RtiNBL)d^Re1iQSrB zrpQC(Z?{-HKl!bn_2v`_@$^u^)B{xq_4i$s5zYIXpZig1!OO^Q?K_XF4JKQbZaVAu zjceznNa4uvBK6N9au*Aayq;(!cJ7ULkAB;RAIH}S>~vr2khQls?3sa5y`Rkf1(_Rv z#LDMOUUE9bv-eEK$Axu^L|wS$yp2OSbf4w@lF+IZ%ekHsyJfS&HM`D5b6V%Pctq(c zuG|pM{ateE2Oc>Czr<9f@71R@W}UKko;7dEW5H9$Z#b+t##GWYU2?L4w_Z7e*OObv zYZu~W_|J=!Q_l|JYm%`rqn$9c7%T;@S|2%H)GkM?q`kLKW=ChaB zZ7#4r^z08u){dvMHMak*P&rX6_uV*ls`H8Rr*m7Cd>dC63ACm^v^jh~=f?TBJQfW8 z<}&wg7F4Z2oZ`=~_c>!n@c(6>4=~0WSMK62-+ZR}N90pGyP^v&mFxQ+3hd`@(`9Ru zT&L*c)nveP)nUSNWsSzUf?p1u|2LrvE}zECdT@iX#vy4ub;>}FbTmvm1V8ne}zy>)6|Ij5qn`v7QW?KBx7qiq>rnRqCx4%`-wQllwbdV(>K1%243;}sWA^l)iu?{?)p^V_-tFX0o!30$?N0H} zw(T2^6w621v|oH@+0;AFfAQ(h0w(7JTWpSRIR2UATXo;#xbw*sH$GeRRqpFZxAA|F zJx~Afl;H0#qs*20*{lWoehtkw3PIq~GR z%{L}L>8zMsgF>#!#XFiNEb12boHJ*cp8g|gwstnpnq zviG8ow|~9d{K0pQWcU3`A$3cWKb@YOwe;Y7tK@^-F=c$(GRI=~JQhye6R~LO_8$I8 zkpX+3ipg1odZn>#c3d{;#kE5ZrtJE(XL&%(yaL7BQJtn!&o8)RS}h>6V4cmuwylM4 zw#?mU-|tuV#jZYXo`kSVmu=z)scAg#pZ28cdF}mdczrj6-g~EzO7VrW?uS=SPnf%% z>GfXki%-_J9N+D8+`8W|_SoCVusEJeNebl&%*p&O+2oE)cxayg@!x~R+|d#~SHtqc zw#=$_TzlnjrNGr~rNuteE7*#)mfy0Q@ZIuQ(-odatA6LMxzs;>YRp;1-%`&uPx>9& zseJ3`JEnZo>|#;*i`Nr&m8(9h2v45*Ju2pW?dI)bYwua*d|P*QYk}daoic~cy;|tb z_h@43-KNAj&413n7u(a7zgbS%y|U(sshlKdz~&#{cfGtPUg1;m)#w{j?OvIu%X3SY z?K}E(*S^CMdl&nK=`Z|vr^xy7O=T(m$G2ole;MryKX+^0%|P|LryQ@mTTwjq^Ua8P zyC!{IQ_Wl*s@%2LcgD-yV@~U(P2>3U9_%}N`_!)O3s2wflgn@4IjQ?6k8I@0xMJ1X zAARp`m1%BT=GvfmW$C*KYsCZ;j(F@po_g;)6 z@EbAgy(g4W&voH_KjWAFHI3JznfBI-Tv+_$vC4wYC1v%K7&DqxFW4?_IQDZXv*bLoxJ|VRw$(l0C^6u1P%8NQmNddKdD`eew(L59!Ai z{#~bOEoj;H&{NeePtfwsCv%DB9cMXKy{go?6XxmsVVj=!hk~x1d*UBWs6WJ$c_>$9 z#_Au2b&J~H+3aimtNLl#m14QSmrW9yGdz8>@_gBs3I7jWccgdC)%z-{ZJRFqEMm^w zx~y-v)4rA7cK5_%C64U=5zQ@-do%OHHr2xFvLo*wz1Mf$Bw83Y>EQIE^#7y3WbikDALqikQXyd9?6B`mdwT^Zp6S8yOp~d6iU`mylz!X?=|*|Bbav zkKE1uB6N4H_sMik`Axe;AI$%7p6z&)GM~n}PjAyNfBx|#RD6f>fqFIbsjWhS%+j023T|eKx z>ia*8#O5Dw%KfI8Qxlm~a8aP^e1giZquz?m1>5)*Z}}>7Dmp&(*N@W2_8;S`{@KE^y z^4xZQe1~71{rS)PTK)d;DgP+0tJjY|8h<$~=jr?UhlGB6Zc;2Wl~Cu5ifZL#apklT5e9RzGIPtkeVdXIargC_5UhL(rCB6?g)T_*+w ztz6aeYn!Lo5-eNS8T>)_TLrf&digP@Bj1qd;fffc?)$m zC~nZ);5y@<&f`_rzGa8H8>v0_>^Vh_w%;y*`7LrBcXPk33@F^%nOQ)RT@eR??O!s)8h^H>&cT^Qzg zJTiaw$>k5`c17#Gs(AfvcSy_`f%SWyDNfsbTy2lm)l-MPg|BUD-JY9N^D41-!_?Tz z1^JUbwoiS%Z~lSWL%;T~;*dYT`%}e>o99b{>&^ZdDPua5ZW9wf$7E|YOH12hvp@X((!13p@j`~&>S^m!{65Bg{O6H(nD=7&mEHS4v73VqN_w$4tMUL%Xcwn2z*0o{Tf8#e!YYN)4G)e1H3(MAx z%Q~kYHd=aF$2g^I+rcBtKX`sQrZx+7sQz|9)yW z7|EqfI3~+qZtS5j-I43N&6?^R=O^5o=5q3&$G1+ zHr~E(KR;-Yez~vx+!EVKiif>oUGFl>xjdT5QL9`XHrsab+O!j9Q-qd@eJ~Ia;cT0` z41N%}-YQYqX>LM?@4TO|v#2$3;c;J$Z#y3zg<0EuGhJ2f=LTJxIVmr_?d!=chB{q=sywaxC!CqE@_X&Y&07Sj zZX^i&e;m{IlT)8HrqoM6`uL&kTk;p}f7)hr_|87?0#{b0V@c&vM;`6FTf9AE+j5&{ ztA4+(m6eQt;}t&j^x~cTbK|sL?fS$l>vgqK@6E)#^oNPpoaa6K7{Vp9e8N$sX%h2% zBJc2I*V`Gkxj$}_dey?dNp^CLtW7T;f2*Z7d)pnATQ(w+_x}D~H1o}*)1uc~uBmq) z6*Jvra>v+NKUQt)bjwX%Cc*0+vp$QwQI_OP$?&mG-`7>SX>&8fEb#}sgkt4fcRpdO zl+F9cEtJpYTGlm_U%4ZyXNN6^w9=eX!RbkFY^D{?G+H-duFCmShxl>}N_RNU{gkwK zcIzW`759f%=Rde7dFSvefp-sYtuK&Tf4oO}hvfO~8n@S~X4v?@*V-r)aoBRwgs#lZ zH)PJ(GX!|EbFf|EKkv=Nz@UWpAaHMrQ!mPT*Q=4-5i-|H|LMPZcfd%9h`X_PImcaQOTBQ;; zG2`yPjK%TXU&7>s1bms^EqK4e?eCvw)wRcKL>c2Z>|eC?cidX_C}joK_P(<0#He#z zyl#INCbaCT zWgppTsT(lEW0`5r+FEVbCtHI>GO`kun!C)B+MycnE326rwqLBb*<;b18U;Hs4gKg! zVWWwcD&`C9dgZ)#$%8v-^#R!z? zO+|T_RNZS2-;GMvxU+bsx9^eF_r*Wlf1ez$$Yq<@YrtW0_X>Ydc;{~Q1wRk{G8a*~ zQ+)iV!p6<@6%&?me|>3pKS1G@2xzWA?rhX;v)Hm3y?M_%Qh2fj7b$K?y`_;VtNL>K zR1e1s;(W5UDfU6>uFj8--E`ktu>YFJZI)ki{vI%iJInLRUPSi64d`H$df)2(r~Gx)gXl%`GaUvO{Pg9iayY`xx9U-`Kp$3pOGli;UMwNd-+g?RbR ze=jy(nYvK5`}DF0hLaYDv%lbE-Nyg*Yv#i?VcS`C4x1bQoY`}r>&g+~8H-i9lou>h zG}WBZH>smEC_re#k4}#yUez;<@k?607+(cONbTJz((-Xt!;FPTPBgh6o6ddBDJ|ml zVhO{C+xgvhN<>UknN(@nw<$W|6Q$SO4KC6+TcS1D=Y6{%5PM4c@1H0`eL+{t+kS2m$5Za~v#SJZcb|PR-BtF5 z)XvJN7!H#&9abqDU2{_9l#Q$km+NeM*woX!Bl?)Z3$Kl_VqcTmd+ZO$pQ;eJo+9JW z-lLcI?x5nl#jTemCK`6ROU|i!e?0%hB1aRUxQ)SLIVT+A7%QPx~loqy6}M4;# z+CP(8*DjHr>ugHh8 zu3G-%-^?TI>h?QV%3YT|A-^gkYwI32A;(ioGeevwE!dn=$rak9!nU%+)6muXk=?4( zm(El$E&VuQ#dGuH(*m~CW)v8RsHsLMseRnknc4AS>86X*eDl|@+0whJBE(7bKtP0a z`j(IRG3B@K8+?)X&r~Wx7=o@1{O2o=-G#&Z{=BWl{FAt9<{+ zr96x|Y%zcKHkJ2hCj0#HT%mKcdR1&~c4UaANXlvV=|v! zmiUe6$sc!IPpf;e_KV zlG<=J>m-v&;qpwq#ji4WT3@qg%=*Rj`f^Rzrn(DL{!IMU@Jw0c`;v^Nl@}~ea4vkJ z#u_u}k@`X(L5*21p`I&lc+F9nI@#H<#q`61x$8dve(1(_e;dQEOLu+#m(5JxweV&9 zuI7vP4p;4GH`Q>_|CO26kk<9`bp1NRlsE=^!5=HXeps_fO7Bkh;%DcwQeIW3_Z|#o zC}*@W^bjvuQaE8NM^L<(nNrK|FQvOIXL;PpIFkK&s`iPXPn-1*ukKNNZj>@>M(M>v zX7gE^H!2@%2QYRF2PS zwJ`nrUwvb|OR5~Mg;wlZm*BTZv@GcNf~~*TWVWU)nt4C7YlTgJ)1K{qv2Kl%DkY11 zKk9$^_<6>6uC$q67Vd8@xbS?o?zOeQ{{2Yr3W4;1vdM9?GGEJG^5pKC61FDb)`qB? z-C0Xzqo*+6SXy#pNtW4Cp&D!BpE2oDR_Q#FUOe1M5i?$Bv*&6Q>4+@XxvpbAwdSzt z+YRkG8}zuR=`{%_atkL`%OuKgOSoN{+$`c;W4_u@$EsVWl*je@6^m6hOs$vvXGtkM z|1`N-Zeyi?W9K#BeIN4nxTinc;`$(+#rpzBeCuv+!Eg=7&8BAQ*F<;w?X=^|+?c(@ zZ>i>c39)jq-Tpf(&*h#uD|=XX?$Jw{ozIs{v^sof=N^^*g-brmd)pNWYkMcN z?X}Za?t=M>rmL<$OmlzuLHBKl(AK{kDo^*G2$oabU$fu$Huu_y*pBayYIkjO|G2{Q z>1LOyb0T8d$iiF z&b_1AzwpqxILn{HxfEzZAUr$Bmgw1nV{3&pYmi*?8 z`>rR|>Tf*fHT$rBvfAt2zWVdrdqU?aS|8n@*0weM;klY?Uvrwu>>O|XRJr*vbJFuY zXOBLQ)U)g27hqAYn_8lDaeLU7m_u)0tr8EI${AF5x>98R;oR9Vt?MMNeRf&+`j*=F z$_lQ#*Uc)!_WLNUQ{yhRd#v~|a($%=$MGsguhNBKui}4aev*-85ckxb-mzZ%MA7sU z=k3~;K3Tj}<$RRYaWhT*SAW6+_vomss~6tCv^r$%(m7Ez0`ixZt~{Dt5%Ybv?+*h_ z9pU|J+czF?fAOEwyL9%M&+7fkr#rN+TkbG=9A(VcJUwUDsm&&(ZRaAH{b!V=f6_er z@PY9^wl~pS2_}oOn#I{dbmbb)D=I(Pj{xSPWcKov9FWOdX zRa^4)GXH!2>3hfIy=LL4?4Ld5pXA)SuM%cAU*vl%`5(IIzv-g?rHlUi zF8XhE@&7lAU-HL;Jzv%{%{O`Z`|OLzRr{LetX{E@C$##koMqY#jZU7L{-W>FM-F^H z`NUq~k-bajC*|4C^|$uy7TNE1FgID}% zS@L(~*;TI7LhW0NFHe0ny0J6{_@kV(#q}~Sp@;Bc6F>;uXIZ9s78SJ z?I&~6Pg?drd2`|C&o!xg(=Jziemm78%}DC>N)~O`c~#oaR%y#<*&NLO;wNP?X~AN) z>lRrbEMp8ln#`1nNmz1T=iEH;o-L8?na1Z9#hqSxb;1?il(K5ZT?d@11*iLLS?+r` zOfsYU*v{#vQZ+Om$kb-c{B&ZP-(9v#Cw^$l`ZRrw2KZhEXMV?T8z zHe&U=Z8I00GIAB2`6w@TL-&t4CodXKUR>0?xW+F&TGy?}*KM2HQ`hq9Qu&XU{PH%; zzq60|^cCxkUT-&j49NQ!(D%GB^0{JK=F^qZk~bbCHmB}Rb-Os}v&mAH#k+fF+>~?P z8@DFSaz)PZ6fJ9)967bM<%@%^Zt#2SzV?-Sa}~?lECtVNdlzofp7xz@#=X@NZ_e#3 zY`*YwhbLq13T>Yn7lY_tq0`4VMA$l}NpIWPm$dVoMBIj=y^dQisL8u?$Lc0!?C3k@ zGQXz7sko)XCdWA@L$OXUd~VF&)LmjPncnQ_v(|eNH@~55N=1E3(3#&dF}BV1kBq%L zs(U<~XD(bS^i*rsE(yiLz1{!H;~hVzTBRIGJzUlq_+R2;rOft#+^sRSm)usLSyCEt z|NqZDxqrGJwG`{O*>w0#MiO_%HkRI_uM7cZ52OO@6q|Qb!vI8 z|3t~o{)E)Z8qr_Y#n1UZ2R(V%&Qw?^EC`QrDoChxwbI18`7=>Ax_f|>ExuFSd#`{Z7I+^2DtzcOXZL_|JooGLxQhB5?MeUpq%bKRB+^dVW zUF+}KJ$03CRIX@?N(c8P{?|$6Z}VPm+qG_YZtmMn+wQK-F5kXY{`sBCO5>S(IECAE z_urrM`{O&?=k@1ozuzg&xA=T~x*yYuh5AnxGt~=xa#yTRa{6GTsAw5yBIFsrPGGut z^$A_m{+bJWrnvvS^ySn8#Y>+z{k;4|6}X(ZKP0yHi?0*|(+l+5q zOLF5-;K?=I&Te%(>0f|}7>DWX7VU7e_S>tY4?nzSwt1Jcg-L1NdcQ=ewI1quj0+bS zZ!s3RCmJPZayu&Gfr@)y_GC8G8HV$oNA9igJ-o@Z#al*w4WG-Rw3g#f%~_(I8za(N zF2DzwW%Yua(0s;YvHjlrk|XL!*$n1Z!6tdfAiGR={a11G3W2_vQw)xurDaYgAwtejvFH4+Ise7p-H#GQVM{es$J*keF zx}|9*QW>V&I_j|rYm|3PYl)6Hb7AVi2|K+amm6NVlGc@b_^gikflE7cOLrw*XFqy& zcGcaQUk_9^Evmiw?&XWrSYr)8?%GF=o7tCd@CmXC&zo{cnCrCF21oNvyVj=VWWK74 zjmb>en|%70ahzOV$D=(v{^aJ~=e1SsJ@GGk*Tu-n$n#?LD;67H6X>4N_>Hx1@wB&n zGZjCsFip!gkm`ODDcLjgl*PS_^vS9Ey;5xQn|12_qdwhN2@6O^#lrj}smb$6TbJ@pRRUa;iYxuw1y4r1%M5o#Nt)HuswCQZNIuKqV!{K#CZI*%K5c4oZJzi-^M zdeG2acq8LF`=Zr9t|XMNF{#*}-D7l5FYRV$a?4y5iL9rbmcDyb9?Pm;f7dzln?=_* z+x9p7I|Yla)j6ig%si~Dz9evq{%JM44%YQu$796h!scH5?D_KP`fr_2o}Mpz{K>I> z%@IaZrGqQ%l8!fITedCb+h#AEr6023tn;@vMdwRoxmZc(1y5PVrAR zj+(D?Hy-f|ceGnmWw9a6qVq8GY{jncTp_jr2G`>Xjli}MIm%irgsrZX-pWQTZbnO{viubM8b?xC3WRs86_bw-7EROZUv zG}bG8;=SW+Bl#co9+{iip7PGz{U+o2c{61n zt3U1P61UZ##-0;9A@lxd^Yry;$3@osiMV0M|Ko$s2B{jG*@}H@xAW-n_xtbe2(XnE z6L@~+lZ^$3ww{nsubHq}tV{Bj{q|4a%$xXc(gdrR#kzBD^4Ua`c?$jSd@g@>@iAVT zF4oUae?IHpKifEZxm4+==Wo^t8cm+?aNerKqh>sxxNIdHoSC$O*UhN@$-|bKw)^t$ zbUD709!{_JNGg?jZVUQ5sqU6dcFXh6k=aFwoUdEecbWa0*<_y?Taj;?BHt(*rkI~t zJiBVe!_P|;??`5vO=o|)DsRiHZG zs}kjTN--0!1_@4!ow8&7WxZQx#qVG7R*0`*KXI06?{t^C7 z?B}m#6LuGhKRoruCtO*snth?t)$;=W0a?-pNFo}->R z@lP}E{nxDQ_^`S85MO%f+VG=m^gC;V9X%(tefGq# z*ALUbCj@uu7|&L5e)&q@B!{!oL0QE8DL?OROXkkF`68j$t(kqo?ns`hy#MN{?<^F5&lPKZ~B>8{15)Hq(@Ho=Dk;m zmu{7cPW|_JpT)Y@bCcitl`p-oKlh`!U-e71rHNOMyH?yXkULWFh~ts}vY87$sHbVk ze4NR}U9YvtF7nVLd1I#|liio|^Je}pxbfWcnqv3;s>1oZMp$J^W$@q&kLSn z|M0`)^W<;LSpki10@oHXEPh(VvA|v7(ZoMkneQ-5*3<1Czc z_^C#GsJTh}Im0KMC%=c59<1hZ<~v<~@xWOh?}uz!^<3LOs_Z$I$+NabTv@xmE&7W2 zQReEY%YtsVM@K%(jk&(F=lh+!?7yC^5Bc)A+e*dSg5u4;sBqY7Y!G;&!QxtA*fjs} zQI1cNj*8cXFL~#_T)IPee$u_4HG6lTo>bWB#JHnx!3Wl_@|G=&-K(_E8}7X=XF1o~ zOKRq1lTYDZaWTr%Rr7c3;fyF=y>@5b{XibixqlKbrEE8iJhQ=mpNQq`o!3vFIJSJo zLTTq>@vjLtYQo>ilz0ASh|x<3x>SF*xfbKeN8dj<(N-S>bGFKu4uB-uRK5fqu~=dC)u;tBXlo) z%VL+jANZtXVax7SeG5vm#NGBa1sBEYSnSV16 zUj86^XwT1gM%&kOPoFdEyu0&VtF@rb8ZI8HfXY@ZR(fk@vRAmEE}h!Llsb{ND3_>>n!E)t)%_jX`cougBx+ zyK}SoA0~d(T4&p&zv11{C65E2P3ktfWbwx4nAmUar>aYGzFoJNu}ingKruC1Vspix z=^v(;7U>mF-pFb@!-7dv*xXbEvL&@ zc>i+6F(#w=)hTBT3f->9U3biQvuWL(=RrSA)jmq6CI8f#xAn)J(~DDYOPo2rb<-;o zEqT|ttJ*7S8ao4z>%EOWx}>YR_HsqEk2k}-2Ag@?Cpte=dvPp{$9&s@D>vGTlp8qR zgntKj3%yHbTq@D{{DbMd$UdhU+4Ii-uFpBVq9K3e><_Cnsq^Zx>o(`suS`=BOr3i9N88r5^2zTf1!_mUI`j40 zzALL^?ijB2R_y&fF>YziLhk9ReUr5O|7@9YxcT{~LSy~JIVWq{4qKd3=ucd6u{DtG zxaMPvW}C*-J<~Uyu;_exY^BNq?Ke6Jtou6i4bR*=VBS`Le_QP5C9IX)r_Y7El}xvv zzWc(lb84b*YCDYZ<*iIG~ zIc6R?IsYSDt!V49@`%~j4K7y9J^MHIjPX5(wI6M-NZx;*{6fb}+TP<*R(I|{-ipxF zTD{7$ZD-~eT*`}?_-aYMwMFK7&wta-RayMHNf6gKqv^;@|RL zuU%M0R`<}m_c~=;r?qmo#$GLqnfdz2dvVVwv8X>w)Yv7L7W}JDUl4A|RBO-rLi%q* zoj&h{qkRtblbOEsGB*5cHog$$zF_}b<}ZqWl7%i9cHRAcnIZNO$Ct%+4v+u*VirA@ zewi`$70Z?O&kVM+#aF7mxo&% z>O17W`meE@HYws~*UWvH{acC`$^8gcoo?~OMd_(-_B)@`GL<&dozGug`Pp6V?D@m? z(Z_G!-uA}j$%})>gVm>7y6{c^lX+^^p04OgOJArPWIBtMCa2!L!ot6P#%c3u=jRue zu_@iDI=s2B{&2rz)*ZV)ES86-8NDx`%vW!?-Tj?>=}PmJ<&(sYBo}{qkbbD}MpD>^ z=YK`s9MVcRs}*^2GT+K?-T9nPw|}^rO`5BguJJSP&+fxduFmwcD_=PIp!tpOYu|>P z&(_g2jptfkcDVRP;VylQde;J;x{M5ZgtiSjt zOMU&M)513YQvL1zwcdVTQSxVs*~6&3{qEOSezMoum%XxO-Nz^YB|+mcd{KJo@`4Nu zHh7ol`A|9@gT7ub=(OLV00CR^4NFBuSwlW_CNfG(i|h4ta@VM+XsM~_-I-doR<(A* z?Q2KkiyyN82t1aV%ay4T7<0z9{M{VObfdS&pWn7_P&P?5Ny#~VBXPp~(*I%Q7S8+b zRxY^no_-#qL`jBMPEZO?DnX(kr;fcLPv zuGVr}uM{CGXT2A4U)9Suy)j%7^0uG(bg`%Z(xOQxZlr3&?^;;A{zmFsoeRk z0&ScB>lPiWiDc|-RCJ%X{Qv%l1dRkng((WhBU*$O&)TEENaS(QB>iOFV_erf72A7% z+&Q9^*c=ib;68JaSKwrkqE*S>LHi(!kiJKYrZX}y6fxr)aI+;jf?}{2q``MQL*766-ctv~n#1zb3!#DkR*OA$mjI3QhJ!V)WsQm8BonIW~ z;PWBdBSGgwmiSG4`s#|6>W*vv0gHD;ybsF!X&lu2VQu^a(CWDu`F9V0y)TH$KhiUM zhv@t5nzw4bFI3H&XPKmG&|j>gD0^9L!&4~ zxa`bJZtH!;Gk(}LJ$}Gqy|F=HcE#hZ=J!$_+fKTBcI*9losUcBITB0#EDM?Y!Oe8RpasOPCd1}Esor1Xn{ewkUX&e#S<)GpteDU&9Gv_RE zEt6omG)oJu~+3B_5ROGw>e~mGVO?x+xsa(`KVK?m}ZFfRV&R` zl6<<;ZV74XO-fqnbeiQsk!G03>7zlrUAovbrIuz)dK9ENOLUjd!l^z{p z-Y&eN*C5kCgyZO!6Amu@FZbSZ&=KJKxO&pJ*ME2aDQ({9uwk98K(DC~mlboZVttOm zBH>eJs{KkUau-gJ%jEsFIMCKB!+*lXEBA!ot$)qk{=2E_u7ipUcRByN713+mtCboX zBPdnupzwPAYuLL4}7%_-;48;Plct6EsY30R3e@mb)@cZ z+^wL^Gh&V@YqzIQ*~n78itVuQuP+fbQ=C@ch<|jx<<_cK#Ti{;$6o6gtT(-L`d-i- zIgXdoY`=GZJ>gbgJ|Q|y!o%s`1FO3w$EVGcvz6kV{a!Rn)yF4K-DH`=2EX*uTiDJ;h8t&-hE`>{byo>NrckpBx~k3YgDtHn*YZBd$1tS=&nzS2znb&beM7T{r%f( z*YmnpmAnp>PUij5+&KHsv!ZWbT#lUO)P26?_s*3k-gCbC*YQ!BZ{rzH<(l5aoIBPB z&WgHy=KG&ua80c1*q?=Rck9YMml?R!ZdZ6{>H0xwHSS zWEl6auO9RFO`FYmeb?>lMqZCAADGJA)|{AiY(*7E^_|8!)rW36&k^XjwQlKmsqRGW zd^^TN&F>bdWPRDz%Ep#F*Rbqh-S;2c()@k+T_eNW?;YRmoswUzP-Z8gYI}877Wdmn zmS3clstz3tZMH6ZG10WTs>HZ&vmq1HECc(!nSx$lk9Z1X9W#hln||2gO59VK4Y@Xf zt=9yeebBhKDK@D-y5w)dnVv@R537n_D$X`@_l+y_Jb9pP$+4XB@^X%~4;?!T-x$qV zJ!SWI#h9q8)0W-6dqukJ_0{hinliXpw})&^)%$Ow^C|X{U&e{FN$s0wH213h-YHT( zJCyHr?6Wmtsr=o(&)>f-HNAT_lWkxB@uGI4>veLL>l2EinjFLH%tB{!TfX4`dUfl^ zY~{#Pam$Z?i1b^mw)13qbFa^_iuUb7n^wpCGT+I5bj#w?&3Tj0_+@qOEVBYmk^4-EKc0bmfR9j^AsZIgF?>N(4Eh2igPIEBTQ&B*Aw{Nr~r z=+MU*u~|=w_6jxSoRYd^dqb^vs_V3*0-N9St*iKzr-x+dF0_l4IebfW*PIRizfV2B zy`-4E-d{(MRWaRvuShrN+nF*ugSgjuAM{uy$Q3*B)0WbIoSw&aCzJ$RSFJnOvf|0h zZQfOXe$QR^rNC#&vpe_R9@y;|^zgrQz3+kAz^Zjq4YDp3HCfulljempE44 z-|=Bp%$^+A+PzM8OdPk3cO`o1U(q$oTXe~%P~2N-){IFOLXGjM5)7B`2u;#6+jM5( zEMt)eK9OA3hnpwL)#f^Ux_7eEIs51-t+Iz|qT7?^JB6>j(kLDB>PT-(s$}N#%|&6C z!!ng~g?x64z6#1TmJ8p=dwtc9C0kt>QQus^U=CJOBb>4)mnE@{Yl~WF6+XG zqk?x*vboqq#cMt5S{#?pYk9|B~x%z{>vLj|20T z%@qlFS+(-6g6o7|pyK7#*ms&WmbBd?WGFnm6!6&TOv;GTj^T7rB zIVB|xyL$7&U-IpmY`J)Mh?P_M>Jt81udMH0Z~Y#=vYYyDd2^7>f=kU`1QJuXofKH8 z`Z~vBY5U8|TD5K!yWK9-PqR}$s;nh@^s!9DrL$b2ziez*T}pl=x4R?u6T`R8`aM6c z=(2@(mbLKCbn5FT>B;7po-DfV_!z*t~n1?&1*6iGRs=SN$VZ`$X2OKO8 z36~le+3)4;f4cPY#hr!vYuA_C=}kU9^O@*74(IqQObMfAUy9K8E)??vChyE_{q#d1}BeE$7%o*{av+*@Sh z^X!vFHx?^T_9+XQY4dWPiSY6#!Z#x(EuVBSpniw>hQm8pjc3jYo?3DLT@hpc?-QSX z{ZehwomqF!(|KxAoZb;Pt<>W=r~k|jnlx$AMBO!}05AV&L;bHeC2!1&UDo^dOmg8av$8ciH|>~gaqgn#Ue%4--ZLI49W04>cvbA?RMGW| z&mS9!_5ExCGX9TYTjj^lGDt2`{p$t zmpsw=Gb;NoJ9dRwDy~%Zkv_^8lu@X1MDtV5^edHb+BH|Rc0W8QCa_IO+_K1(;lq2g z813>fx4pCfS6#@q|GrRC^hT%j4%HL7mw$%;dpg(Y9p{PIaQo?UnOD6gwhQEKsalsH zd#U`8=98(4`+4RmYN+!p{HXY}qafDQTB*zN@n5|++gjE%I4ysxRzQD&hMSxnk8>*Uqp^ z4qbEhD5s@m#(9YwEsI2xJM*8#2d>@M!`W}}VzS09ndvb{);P@O@88z&FwAo1dz52}`bjShW9c_41=Trk763`BulfG(Yjxhd)0GlTNm8-`CW6 z{72_~-i2qR&5yI{2u8`C-!U(Jk3{M%p)=Q}E%J(fci_cVgGn;qbl0BN5$?5bm3c3q z#+z8QXsWb~(y`l0e7F2UvjffEgq+(r-SXJ8o5}nS3qIZWbY$b&b;R8U)Z9gTtvVCUzPIqs!KHPZW zv>mgr^TKDz-}iGpjbcyBoV((pS<=pHt)aKB-dK?9+FsV%STn8j#*&AkeAID9(_7B>+I_j^)2E)XU!+-yG?sq{4gzFDfsrnjO!n}UZ%;|@-16-Yjv8| zyMxPlmi0Y|3+9f^a#48@x@`X+?i1hV8CdRWnx8)Jn9iX<8=Vq~ukJGpD<{6VG5O}_ zbZ`CQD|2Kx!i)P8yPeNeO+ITvt4E z|4r)rNCnrc0;}eRlq3iRZxm*YYFN2L?($aY3Qg9)^5O$D>q>Q-kLoms zJ~i`we6xDK+s^V^0uoOTEk1GHwr<9Y8}9bc&AWS!?|E$YihH5KtKByy_9bj8<6l-# z+g2v8wUylwDl>r_6CLEqRlQ$;Gzmfzg{kn7k@F7`ORh zrH_3ZD{rM}rE`Q1uV`hu^r!jl%a#7;G^byjt?@xG>H4iduKdNCe1V64z52PGXKLHK ztjE`1esiC=*!Gl+{V~PYk!3rN8-!NRalS6x^Gj3b;ykzJZ*v-JH1#j7l;M>-bokMV zj7^a_hn9boOg8iVp<|bRW<%rLH+;tmu5`$@oG-q;xNO4xtSyXFuL;#LUEZ6%A*K7r zJb*}o0;ZZx?tfU=ebP*Om#<;?;R)j znRgzZseNi1SDkLjw&$II^--bhchCI`ZcnZ_HS5^aX+OAv|F9G{>MF~ai|W|VTkybo z&4b-CO#7b)1SCGLlR6*Kv^~GGTd6D$xBJRmo`W{v) zSJ}1eN4?;SdhyD)#Q0H1+l4nQp+-EbEE%WoG_F6f!|qUpy!~&E&9ysMe0^&D;mYlb zSGhJ{D;VRAKFA#J7Mpi?TH>@>70<5j*brJQHT~wqVADr;1;W${pK7-~(oXbQs_}Vh zVpqP0+Br73!)?w=N;G9y3KXo**wNx$OR zbdOM;m9rEpB`-O}JXu|OVe6T;EoYWx&&=KT_{S#Jyy>ptYdQ0F`A$sSYvFxV%=;{- zi{!D-v4>VjNrWnE)%ebMntjaaz8AaWRgG=kK&=D7x=>=7a1poBMD1^u%t&=xjKAFSF)u(7sDS>%7VieY##J z{95Q!{C#G=%vHL+TbIr~Xnv{V`gH!|ugzBW_gvrSUMbX{xas}J;v=ua?{42>?pxPZ zaJ2K`T3yG3+-n|qYkb=~qsY6u_x3p>zhX7<=;ITW9zGRWC*!o6+jzOmrLLUI^S0j1 z-FoR_Qgf{HnJRI^e2cW$ob$VG%=`NK+nVVSo6XKOJKva~@luw3L80=p@9clR>+VTB z`SSS@uU~5nctcM|wx^}Yev5QE`8dXO`rPx!>%-@|v_IMQrR(J{&Xc>||334M-$LNe z4CinDvI1c}4IkQ7b!A%bZQ8MN^Rh|jKUoX+$EViK`XQ{nF!Y11^1`i` zBb|Q{rvLmg6IC57aq?oxb@}F&*Sdr8UMIGJMpfh z^qS{O-hF3FKU{rT^y%;Cl+f)jmuFs8{&BkhvO)dS-o!ghjg$-|P$W zb#q$&X%sv0KR7P7X(Qh@!#_(>Wa_e>7xb-uI_F5Y-&U8RkNdY)txMzGxvY6U%U%;M zVP)ArV$RL&Gk;h+H|^a0m-*ktAAi+<{QS=0W!YXKe*NRlGTG}T|Mt$AUtYl_us|&4 z{Q1N`VskV;)!cLKske=pTvxrLcD?&iv46G3>lyMtuRpi{{=(8@@8<_fmrVQ2yzA1B zzu8gwTmJVp7RYSdv}gZ!5rNao8}~Hb2k(A97gKR)q7Vba2SDli~yik4+4p1+*PFn3+7MtyPcH=}l2Q(7>s4%P}tEt=4aYLmOq)3m;v{ z>lD6T=rifj4&RN2p1qut8dS0oO-=JVHqP&QW*^J( zApOzH{YTp8@BSe6FM7|v{uzJvKl=JV<_GINvGx0>e9#u}`tX@a=eTv!kL#O1NXJa& z(3>LQIpz5wrcIsVySrtclsrtFRH6BF_lky?MKe_=>I5$2?!T0C@P(|JW3fxH%Eg$@ zuA_%4lg`#$oU&uX9IvC7nJ(&x_|A0cjtTJ--F9@3tN6K~r48SW-Mp`N@`ol}OZs@~ zvuKo2_q0o27e%Vgdb%i5an{sDE5*)gUEJXstUT+gp3XAUrc+TLL$v2z>s)U2aZ8+u zc}H4vhMCuvldaLMA6Bi1Tcj&wD$r%sv~l6wdk#KtCHsCkALMZS#?qX%L-#?iOGw?+ zsN{bQ{=C8tGad)?S0*>EP?zYeYG&42xG!75B*a>RixcAL`aGdWV6ts5UqOn8y8;qrR6nll+YRhPePZZO=Q-SQK3fMMw2!-=M=emzS0zS(ORU-kP>*N!dv z=a4(yUTK?6zWXm9r|FqV)1)^pSo(Hpiia%M&-Y=q^E%XD^#9t+`0>z>XwId=_qVN1 z{Cl`8Pa?-f`o_vOWuNr+<#V6s7d!k~qNS(wVDVcb!T%#w@j9UN`H{>hB%rBzZWy6R*Bc zyvV=mVp;K&8$o-uo?8S?^V?u7BBqr7`EkB=(BTuOc-CBE_T0bqN{jDLn}ZJ{N~%rP zRJBX#re`h^F}uH}VxnQ2|1Yp# z#aVE-u5%Vg_NIwnHnm*e(Nnu&5tr#+zZda~(*Dh>P+v3mQkv3fq4Pd_gSxXF^AlD} zx!*K0IM62F#m?H9_o#PCf44-+S&g%`m&DDF`5M$skO-@cWotTiaZC0kPGidnVwrps z#U32}cwl$>w#@YINoE#@i=R|wbJ!-{<$DyNr8e7Xhpp_?ttZo%PcK;gP<#8a>tbE3 zlGE2#iO#>i^ja~8d06$Po|Ldh7w24G-Y2kXnSjv3VzoI!)@jRy)IYeCJb7E#q4j0C z+((;J6KDUav5@24eENGk$2-qO$^JUCI1Fxa3S4rt_?5P^gFjbU>#dN^Va=b7?+S(P zo)NY_Bb-0;UFLM7Nehl>*iBGgIj6QH*Q#x24)?P?r{peLMFzXix03nLm0a?#C7fl? z!GpKvHMd`F%vkKAJLe5w_l1j+e7u5X(b?<1Mueok{N3E#yHoyH*?jX?syg$!m>)K3 z2KqdYIV)L^{Po_oJK@jYK7I0CU~)zH2Cb`|%Jwf=&d*KgRJA>1nCq=ce74Xpe72Y>&BCx%WEUpOl?9XG+9bUjdU%69iw&`uFBPE8yA^ z8p!MBXtJb!f{SY8iv0zv7I%F%yM0MD^`>dV3z=(-5$Vr^Kd9d^NoEO^{IafCWagD8 z#wN;BI=tWQy&ll9Y^M@O-ML#Y%+U?fiCc=G?khTfV5~FYz;Z z%^CU2N47gv;rZ(BmkyKnM(y3WChzjD($~iG-UeH5wfwk!1B`T4mdyG7X7}9Q)RkR56I^xf%XPJ~U-8?oq3V6c`#M+P2@8h2J_U_gzf*rK zIAzgNYxM5$@6cF-^()OQKaio!G+bf2u^gRPdSVlG{Rj z)%~1;r+3KiPJN~3x=3zj)l0KOzh2(AI&sDQwz|cVIGYn!{Ci$8p>XEC=HndF#gjCzhZ%RRFnYV3*~qPR&YqG98!WFs>g<0ac|F#M_d!d~ zWmTyuFa189E}7AHqCzY^h3mouA4kVBp2tG1 zDKSeDFYXC9NxbOdA}s3bbIkkEOVy7h6Wxr!AM%nyo6_c$MW!&r1#Sb_1{e_ zl)OLf&^bm-_~*OWgMrgLnaKg_V1KjB53U*x6}f)+DR7+ET;Iq`1AnFBYL z7&_&aO+V~;^8BWpPeM&c=B|&A`E%~-tJx_{E&S(H_MU9XmD)MMJ?8xxApzd|Ryn+$ z`xnhA6rD0>kx<%lH5QiH*N-P@uJqe~R>0%A`;n(N6#XQW%2#oo*u6$kee)(ZzrBm zx3X(P!ij1ZQy009JTJ>XNcvoQBkcL|&M{u4x!!y7MAnD;n2Uu4H~G9;`e5G^-t2n5 zJRj*9Cy(yT4X8-z-0{q3Gn1b5)rAjVY}|22Oe(x};-?2#r=C5&H0>?NCf1H!C#xoYU7Bs^|8yefypP?7*ZimoO3B(+ z9W%w!pkU{mqfZyLS{cWDcv2;uad2VC?iZVXTrj%(+L~Kxwb9)(k!RlSXPcfamLk1r zpVH=tHUG@=_UrsmY4X|2VZ`d3RS_`vOILoEb=S)&r=}HN^s#roHh0P@!Bgsm3Rf0# zadFt5IIa}9f>A?ERpvYEBA&mUr`$9lz^;jC(uVjX9BbXGNF7DVyX!I>qwxJ5M`Qh8#9H^q%RkpRDuB zY93ZkfnyIZ2|mf>=t@jy+21r*P{g3==ASta;<5_#j~d=NyM=qlyS?tu0~ao2cym7a zTJf#=i5y*ihPP^`-mdPQnZ0xQl9`pAGrN2ri{GCZ``kSI%I#mbqH5P3{;T?Aw)pNz zV%A@dI`Moz9_pC?A%n3$*03{?XVcnBnO5Gi+iLEek6HLO=cVNrO|zJPb=ww~#lrtJ z*;h&JxSw$UiA8H#x$n%{(#~R$V!s7`(yLZ(xu0&|ne<&%(n=T@(JGyH$7ze;CSrG0p$rF6m1Up`){~p-@?z`en9l_n{^MAD*`UR6TNr;{fE3~ zkFzT}R^F&s9-nCZKX%%|_nFI_XNmMZew_AM#(n8Yo2hE^{&U(aJHIA9D=F`x#k$$; zt12UGx>VDGvptQrI>{H4>uH+tRq`QMTZ*uU*Iq&b5-#YW2^W;mXh09B=_WJ%&+wi>DC+6h7 zsU4kq8>1}wJby-9lKb3yiJP)@+}D26yz;Sn@25-??fH(gKSh>ksNYPSf8~Q-nh*C5+q2bTMK3N*wB9gv@!@xvF*3?6yuD5eGOqxyQMRQ9_(u~t_s1XD|D5--?eXNMYq>o)S85&&tUGp1 zWy{1HA)!0>t?cUb?M*)1sOGD?e(L8oGr0_*yT1Z+tS&rxHsiI9f5x%13JYw`-?nCt zv^@W?L}cnIiTr$#=qcShB6l9S^~0!Y%6bVY%|lww%G)KSUM5KkP0JL&-jc~@(^j>) zvHtF%M)fBJjf>y7##}miTaZ@J4>{bCQ-APdna`&LcPerlT$ zr+VUQ%mK04qI>g~|A?P6uR`eHY@aFd8`y3oaDK5?TcE#;@$Y3G2Wj2LeQ8X;9;rC& zPXiy`_gd4zzRBL3X_tfY_pdw-`CC|ixp7^v*juuo>67=&2D50UzaK>$;!kmWQS)A4 ze^%;+Yt3P)7iXtA+&5yZHSk?jKaVk^TlKE>M&=X7 z#~H@O|F*iyDeTy@Xnm}Gp;~YD!yR|`{L4C3`9=KK%-^dHS_@hpyO7BzOK`jow4o5?wxvh&tw0t-M7QhUwX@{*J7`)76uncRTn;bek46@dJju=Q^o!Nx4bttR9=&n^DpxFjdkgPeu4VWBa1s{N3ZHyBqgq1{L^lBwB0{e z`wN<8uL>I)-&@X~#_V0^if&)@Se!SXEr_- z%6qzN!)uvoaZXqBeoO2+pC~r{P)zGQ)1=O@PVKn`U;hcH?zMNSd_Q}S-MrcVCH}Aa z`v2HW<{c$kPNJde_*1}TRi-kunrC~ff+qK*w}+p-`)l?6%*@$8KYxE>-f+EQ z-G)UQR()vMAhPLyn$qK&UuCM_ZL6}|v`kWUo_Wd+g@8tWbw0eW1#`{@cUhM7*wtGFb z)WXiXY>ltPmRs$2K7RGlnjbOE(t%=!!tPnC?UApv<(R$GL^&kya=Gu#4R)?fi9Y+9 zZ0dy{w-owxgp1_!On!9#sEEQhxn=C%{w@8}^J8;`#{bsOCzN&g-UxXm#e1whWc1Es zi_SO4jVe>KX9!#C|7$w(H1go%q?aO~m0V6jAMfpBWMF8-yOPV1*!1F-nVOS=^8~-U ze!`9-$NvZ4(%TZsc#vPjenXP?#ijRVDsd*wHqpEl;r!@niS-o4+jG;(rX@Two>B0) z_(iYEEXXN-mjrTWML5oWbLQpE;=1Sijn$w3?$^K1Fy*5`v&lQF9n&3|e)0tEc%N|d zAamQ7T|7%}Cd|+fDVLZOy-Ha^&oo6L&Smem3+pRytDnztuDo;qVbrbv%;}fjoScxj zPObHRrJj@j>3xB_R!$A%*;ysPvG?g`0}&C{w&lG3U+=67ijChmYJdf(f1P%3b$vMX&U=%O)-CpjY`>OU!8X|m+f`jTi2(2Z$tc@po!mHd~fN^kv~_R zvNcFJocVnCLY`f>54~CG$H%88D&dyz_Q;KFB)Ny_)bN0-JFVBOMDr~e?$jKDM zmnBVF{wMw7yLA_q>mHaO?>@abw5|OAzQAL)CdsJF*LGI4=-k{nnc>#*M0J5!8P}UntSWW&ev5XRFAXj0>Fjsz z;5U49&hrLC;@ZqiXFrFZ=TBkO#jOI86PNv{!rS)$<;Fhx_Xqt(OwZZyjVpG| z(oE|r$~*TcN$LC9XNtu;W}H51qdx0sO+bH&J1yF~zsAft-P+&nrZ=mi!1(%~nA-X3^D7E5Rp9PXu!P)+DvOc~ql!D8^++$EN7FF)@?) z`dV>;P^NDS)?fAidgs;IecUy{(KQEqgR`a0f6rd@nMLN{w`*?oGvbzS{~`5PH{|5x z&C`D=`#yAtHW69J-M&bXajBNXm-gvfekcjnA5mPVdhn`^b3$Ng@QTt`#{x2vyX&*0 z`}1<{8<_ez9LZL_rtLaG_S=hXX8)_&claIHHft4=sHR6Mr;5qs)@vE}(tmAt`+G3W z{(8IFZ}T6wq8DY?=)S#kj$^AU^TLFdRb5lUS8rwYd(|%ZOXbq+wWp)+$Yo?sd*HWW z%4RKrCEMn#;ZI#0&T7V1d-0n=;)4sjSwEfC$~x@!f3_#rJbMQBU-n0DKX&`ST*~fj zw1WcA-534G+N_W89(f%Rop7q9^LU`($78QlE^Je|;?s~8&ffG-%Jb*deaFOJNeXkg z{e8G#ed^BmXtVBFv;Iu<@Th(-5WleX^7i6&!iP`!L{j)#rQmCQ`4ip3C{#ZvJcfMT17S*Ee1>&Nla$(Y|PQ zMZZ+BPb`!5nqE)7j)R7!845`O7w+qbpS5a?Uc>u%?UJ2ZH?GOWimJ}q7Il2%r1P^m zHdZdJPgW4(&0o#u!pa5r0WiC}apKM>YzAz)L=E{RvN$fOyZrJ~_&N1gdV`w%wW66( zYCktJ&Z@cG;xV7|rb_+FmzSHWl76<_n=F3)vazXztpjmxp9-e!gj8l|NP8{lzrAsle>L&$HjS%`_nVsyVyy$`<9*jJyV7MY-Y+Y ziPe|Smw3s%n!fh$%|*gOgg_^C?C$V|sh2m@TLAz@jON0Y~&c`fghr>?k4VdZ(9LbW5<}JID5>?j1W?;u6@! zr+=DI{jsy@^oHPru`fzGev1_Dzp?hh^|b*7+dYCWw0#zJ*|~!$yhwg;1;=;o8{L0x z=4SOjGIX_3kW;z(NYT|s=bJ{-`U)4p`$E4(Hpbhm>NvjRJ%c#=&KE-MB5%a*GF|>v z8>RKAaN1v%>Yd>!8Wmkv<;CuY9hrRRJD2H4<~^$(nC@Bkz&G!oK)z;$w0+PAKJ)sf za?w5Q-$nmSd2Z)g{Ly=z?895{ca}}bu77l}KCR_n-+rw}nIC(U=84`9JW~9qvc1Al z@V@AM;TiY-{}yrGqfzuSSmB?Y!-JOO`lZ^BRAoYsd_Q{H#Kdg(vb{@}>Z#-}Nwz9z zX?x_XS9kQNe8n^EMbU!x0xjqAK6&p^i%S=Ye?Ft`(AIF#k8K{W#V0=&QgGd)S*Kx8 z{vdP0fgewdtX=o0-U~a@Z{f4OOJ3O8@z4JD?!6WVjw-)V5By?xN8ezjeY8-m#qxb~ zIdptJPHXt|_KMwh*+;Uc)=d6?);ZxCL;XCD4MKgjb{E6jmJ}+OY+ZHj!8+$ZEkZ$U2K5^pvD5sj?siwsD(JpoVUz_W!dp5T2Y^gV0!RZ>lb^F%VLo7`Xlb9xb zx6Sd4Gh$A*Jlu0LHFeoFnY`YmHp^|_ycgYa&-{A&?0og7>$iUXRkGyM>8l%Fxpr%> zzJC4M+I6eeMuzyZt&58e-&vQL`}ff+uf{w3>=&pM*u=@!2K`pFg zgf;knZNI|KY#9DEbD6^$8IQhNpP5hI-};xD{rA-6o;L+*Ch**D+xUYwPj zH+A~gEZ@i1Z2v3nXDi^5m-2+pP?l#cO@vmV0zRohHep zchkjokKyd5z-!tPse79Om&LkXXFt!~wvA=!Dvw92IX-U)tqYr}y@lB(3DOJ9DyXuDbCDxG!vSX<^6+>8nZBNkSSM_k@;S z%FKLXm>d7)Z|!~U^s;Lg>}{Uy)LiVhrRK5wtHeu}&ZI8>gykI zxJ=vfqgLh79F>Lg9rH?Sj`Z959h;|cyZ5v=D_1{bD3k88IcAQlawh&wlDZ_=;=tj@ z^DvsZVP2xk6XR9eZx=4CiEH8exyPk`zjJ-uDtrCIen0mxg-<%8fAW{<3U|hRJ+D_j zXM3f&Nd5ojQsrFvA8l{6LzWee$Hu@jP(}jZ4Wo_yH|96T9h*=1aGC zjy%gbD}VFmsVx|)tyqCde~1bb)x6alpw~LCewVR+|{N|^1OUCQX@Rwd$L@C)> zW+_w34%aR*QPY~f%!yZE(d>mQo-4ZNnrh3pZB_DtB#P z?Nk6*UER$Sow&MBWm2DH(x^ZmPa9jCSBWQcVoL!=mujFb3>mQOSwbr`Qy)k4ji}n@S zh{bVUbN0xbedV`hRk(oq{+8}5t2-u#KhFAkdPm@1vF)p`Cr+o9pS>BL7K0q<0_uT{UIX$7CCykr%bC2CRr~@5{7GAW3EX*gc#G)UrE6aZTCsh5 zm{Mv#ZDoJp3;uu?y9>5eam>Dww`FC&@+!Gy7wV^dMmP><^0EGOS)$#$U1Ny6mNH+xN;uAU8|S z;bPt#i|b(tubp_yMQ-$+*=pbLh3WUioi8WPcTYQ+@+jjrzO(rK#aC7Gt9~)=dDUKWs;*_{EBz&VjWhD4T*KsDrpIu9 z<}G;kSYX#u^UohG=1u6C-+h=RLTaDxcArM|m;Zy=N{YYky?1o?jBU*~%MMQybN0Pm zVQ;4R)M$d0Q$j}3Arq@!|CD>bR%Lcxz2|oORN$4;hhIchCwIJ?{4H>^ncK39Dw40_ zGsORCzdbZx$^Wl3*OmR3Z+`P%xq8Nvr-HxyA4_^RCMCz~9oamEx9G(F=I27M-cR|J zy?f)OCHwXK_TOgPeVgy-+&-IfwWnr&BD{hEKAoAax%Z|Psg+PkZl>MOi92n#gZ z^sA%t>}&3QD)$;}Zru5qa=@dfpkL`JtHf)$+@yV3Ea9qFcFI@xrN~@e{#w&_p=JNV zxy!k~){1)l+uf}>Ie6mxvdP=!f1n0;mH}lW4u}JAM5WsE$7Z(E#mzxN8wwJ$~Tq{ z+u5DA&jqWagf=~Q%6#0<8~r7QXI8nnZ_RH0O;hY&UEtf?vTgE$ zy}b+eGArM`?=bPVpUCd_Mvkw|7L*Eak-c<+U&!(I%Abo*aNTO>xYf>i%a-MBoOee3 zEQToEk6YWmX?kbaZ?Wm#wD#PhoYR|6{H?X(j#JBtTgduN>uuk9!LRo`e(C%=@k!^@ zHmmMUYtJv5Kk?uE$^YUf{EMIb@BV~;_f>1f{+_Yu?mNgA&TqX*_vT0bq~rD{o6dL0 z&R=}Od6tcmqV<-;FP?YuE$&Zlzc_0jm#U-9%@dz?On86Nu~Gf{Cxc(Dg%Z3sbo;qx zALl*#_^8Kui=u3soux@m+qYbPF`ctxWo=cY&}HMxlVb7q z#g)%*o-$#T%fj@^OGo}}RW*zaJ5mxUbb0fvFV`pkGhI@z`!e4B*Lkm5GxmG7%{Xc+ zSQ6=G;2^l9zto@Gb;DF8i6tCuea>g@t0_HWH%v1761qb0vy;*@SC=zypS(Ld?Z}^4 zqa!wb(czP$uTO}+J}LV8#OUjjqs?X7XYBWP@Ok_A{;V0hbvl2tdnY}M5HvnMYev6- z;Xc=I@0F8mygY2(j#$hvG5mjg(hSS6BWE_MJu6=Fzw*+5rkC{-zwCGU74J7|hP=A- znXY*p&m!DD*mgbmopR7$vq?UP#eNaTzc&^~{@iytVk4ydOtMxq>&PEv!O#9KXY42M zo*yCfx&NfV=NoyImlHnUT2OJ>@X~9CiRR2l@11!p@Y$cuQ2fP_Gn36{*uJgWv=eyql zjrT4+U#BHCl^dm1ET55}ZJwa5exuCm`oAXs(%IWynN7_!d-_TA%*-~;o4YjAyZu^9NpoUJ zGvi(Ro>q|y;z29ZwtUQP+w!Es{EbxB*OU`dJfF=J?(Y^$-jklR=z7iB*sKjN=Kq+! zuB>%q-C4a)O;#-vV=caG)O=*gRVgw%_%wH0%H~o3aFPE zN7l;~?OiLjNB&U#*46hj<}TK?_PNj?6Y)^vq$y=Tw(JTI-9w>77C z_sh07C6o5@I~|%llglP-^5i!4*WJy}?n}{>nh-Mc*&& z3eNHn=L=L(%}77PnY5-xEScMOy(8b7L(SX)4wX}6Z)+LB49?LR&J0L^ zvJrEi#H7?573k3uOG9$=g&YOy+NN9ctymhh%46%k7~KWmUL3!*EGl#MgqXFSy!ZJd zUYK3CEh;zpb#nib_$xmS%0K8gI>%(%wnDM!~Jnc+}q51f zD<&UXCRnC4YbT%E^KHBAEG@BxpK5-enqDcC|C;4>$hWED{LXIA*NOG-Wqi1|`dw^Q z-}{yOiZ9uT&#g!|%W`{vZtgQV_8GRkZHewOp0QURnN$V0A1{9tQ2Iw<(yDr$N1GSS zZtwJw^A9|eEa`ga-<_u_BFp*@9Z_3o^ty0H0mtqCvg{9k&ao7@mfkfrA?}rR^(Eys z|F|7Dq;qnXzI$zAKJ_5){3i#uKAd@U*5OINd0*a2zu+DwbmG(f3&%{kEw6n}W}jxh zz`RF)L#FN0svf=?pO{d)0*05AuHSTIW+x88OlM)TD zv%QnJ<_}7Y`HP-ilVDeXz5Ua|8vtO^Cs?O&ERfr z*>v4i z`<4HrHmfvkv%`XwL0tY`lM_W%09|ygPqBrZeRJ*u^0vWY?phxj6RN3jXMY zpPoqYYs#JbxZq>KJ@>=Gc0U#xTgUM*FY8%ed!ug)zhs2bCc7yQn|jjs%=og9OFZ&Z zJN~GuG~T;CiH6O;Z1tzyWWYubX*Hf>xb=X=$C_f;RGwZ0K)yYzFT zmNf_&^O)XUs%|7{s{Ei&-7O@RfobW-bIKQg+`PB1G2;Elb2}W;Z8H0|FY_^8x_Yhf z8oNod*|CX+!dflDo6c_2m$H?#HI%THe0y&8i|#VM4=z`WZftg*`|;q4h7QgtB{SWQ zc}ZLga5}$A&ue?cl=uxZCO_ZGTbXV7*gIRVvFPlED_bUB$W1;jBy4m~K%-CU=Eogr zA6p!jBpfkxH=LsGy-@UPwx)7o>g81jeykF;erL6ko%43G`!)T7Cts{`CPf>&UG-cf zZehw)lyPv+@p%iaUhHMgT$H@T_DWV*g6H^obv>1+ zuPqa^-fq7%YhqS@40}fX9iLCnmYcejB&aGIuKRRLcfywanpaQ#)Of&U9%Sov&GPIy z*Bo1!RWTYT7O&bGFqz5vaBJ@UWgKU%1>)yl`n+7Ge7cKhf;nEQD z5N*`){W9ZaW4G`Y|D`%}`!{4y7cPB2(TGsjebI6T9Ra4v@g|~TJy3)ULrjOE6Be9?FUYl=z zx#ZU3kCtoVI4>XCr)hD*JZpE8`NwGo7ViGy?NG$FZ#MAJ$6BbG(T={B6VD{*;fUX|#oKKWJ4(wS`z$&6pvbT22&2sf{qUE&p;a+dOUA_G4Rlr1fI$oZTmxypZ^C zHt0bAga0D@bC>;TySAxo-HtW=E@Aq<@e`hC9Y3i%b3$rT@!g%fE}T6(w_PP^r+!aw z>o1YhEn%CVGL`<{y0!iG3*idw+LL+CA0JBDJz}`n;XHfBA~x%bK1RBKj&_7SdVl)y z?T-6XkH2s0uV((pf9sFkl}|4hmfM?i&X!AviaWix>qnBvM?r;Nzen2ypU%&hN)nS^ zci8l3{6-6>#qHOb%suvT-|hP&cPOFvk(bBB${p*SXKiZyEV}5+x+h02G%t41{veRl z*BQ2G&$GT7{`2M9Q~sX_E_T;kl$q;B|NMpogWsVA;@ z-F;;fd-CGiht`KK@=iASf9iRlT{qXsj|cY~bx2tsbnXk&Uph(mntR$?hJB7FO+$Ep zuYSJaFTA>igh|sUxE!d+#Yb6EwtDnEP62Qc2@J=<8|s6T7Q-4hV6Lr=4fUG=kp%n zbE;gE>X)x`l=^mkSIi}uZD$;|-Ly1nLl+UvV{{b$80>y+-fre3l4x&7{~d|9yO z*YgfB&IuKK2PJA?CoQ>asAR?#ZYb>S zAMIJ$7#QyG<7))DQM7Czq_Q9t(FTgm7jhJ_o!%e2;7X8g=#p#e*Ro#Gt6h`pp}UQf zbE{fzMf|izzs+-1cY7zt|IzHVcZ|RC;{pE%cggn*pjObPlW+DGKc8b<{_Wh|_xAhh zm^XB0v3c5@QfNOesgf`=!uaD6m(GMY9;%C_6yvnEb9C;yFWAz$EacJG2YYmzgqOc9 ze3Ev#Tz36amZ0;;54x0SISY#(y3{BV_k1eHU59VV_7%cECi;VJu5`Rxd?>)+gJ!Uw z-tRLkiR)kfdR}(^d-c2xzoqWWmAvKbyzp!ChNZ4+&gLFU3SZ@S`XgJ?`=TlO3*)k; zq+dx(b?$w-BJq)=;@0zx%X%z+p1N(uyo6%E%Jw3d~f`EZ^E(lW}idEY^~6y z%7yP=2TtGcNuTZDEH&kjor@>m@n_p!HHSUCEj{yF&bB*Q9$|LPcAJEq+wQmVt&2CDz&Ejy;3C80Pjt5#?hX6XbfcZ~({IJfN*0O9TetVzUU0{I+D_|fl?NqyjkJ#X zclf`G`MWIn&n3fvD^@k@rYhEnesBNAD7VS?Lq1Q$gTRNf&jXL~iddNSAHB=8{*`*G zb%gstkImPt-buck4@!-K^5uJ^m>3wi@wS49Ua*I?6$DC+utrdAMetM6|FN^4-CMH# zWbQ4c)F)9JE^kY+b|~?3<=P_PG5gYzRtD)dla_>8C7xUsbAB{7G}Um-KG*-S!0Px6 z?X@Bk6kp8A%h`1{H}Boy+E;dW?mYYUrr-8_P1(8Gv!89dww7t{dCTSdKks`!=X>pW z%lBt(f4{qYo?%8?{jG$9iPrm?)Khb&ehjr<=Ps|^Z}2+Z?7$n%H20ajM%KsPSZo$P zGcT=d(#`8L<|cjP*?jrTIfLqHH;d2gJNKs2dSm_#LrHyunvERyk8Dq=x!vbhbG&c* zhfO{2Z!LUWZM1Lw15su}2Z0+r4koe2vFdU~iT)7T zq8YJhL2P5Zql066lOLTH$+Or`>$>=SSo-zHiYxVHtVh-Rq3gky}lE{_W+SRg_%Z+^DwSvg}@BaJGAQ z%cC`i7bc|5iQjsE!x?2cZA006tIoOQv$syQd6FDwH1S-E(9ClId(49zTD3ecd}5zG z_w=tq%e^0FTo->br@TjE!wjA@pYyM|Rd<|epCP}IPulSI386X8?z6+Sciy-ee2)J{ z(Z-{V&%b_)VR`)Kv$Crt_r$h6ai;m__bhpIXOe|wmm6%Jw$C}-e#ZKGo0*Z4 zS7+scoQI3P9uu1Bp(WVWeP?S+Rmz{PPxq$0c>C>`(V7VX)>*SFcn)h_j>+PfZ7=5A zVzgH?YsZfnywc~k3#SKXtiB;Jwf=F}=lnN^A{J?Hn)sy3PJ**2^xW>yj2BTe!()pX znIfO5?mn^qvb48LRQ2v~_n^iLuPod}3Tv`eSXS+Q?eyCD>&F14sQ2fWBz3-6GwXBz zn@?(o=llriVU`Ni?F=YyIet%gVv%%j$|mnA0RgejYx7U8>Fu2SA*SK$lxJCmjw+M2 z-8q9-yO;m9`#Svx!)1Mst2-AR%ld4bp)K>&_SWkA>A62GU#<$|(e#jHJ*how^2#^T zXAf>ZE4ZxR@Q}gtqlf2s-w3GnTfK)tG~uPv-jeayyJ&Jp(H`Js| zv5K43wfl$q{V>t}$MRLq*zJG1@nHl^db=*jIG_aru-#fromEPZ3mIzQXrMy|8%QSZu({Bo6vnYSeRzN93bY-yPlxG4PC zrKz1M%Zhmao-U71Z9BKg@2L2PaMALjqJM3FdH$b!WB9ALvMzJgtYdZa0t(H`0`~Lk z2XapD-FPTvkMhG=#c^Fd^&TtaUT^jC73)(M4mpupBKvguo9MlILgxZDo;TUP{Kr(g z>@DJVKAe?$Ki}{1)7PhVzB_y5(bszsvt+H?vR7<9+4QS3-hc6$$B+I8TVI*>ta@V} z&-B+Dey=Edv-#zB8{MhjPev|3VRZ0~YP{X8+w=1cW<5Ol&qLDwR_*cPRmUb3aZdgh zp7q>kasRs4FCS;}Wjzb|kjgkACc~p&QCzZUqvGDS9K)2=inVPy#!rNtw@F{hKhdCQ z&2uyJ#L~8yV?v@FNtSDKS?gmHR3G-w{BWFez0pHyj&`34(}x>4%LV&pe2_X6C>-Z) zk#^`c$Nh{$g@^8{%~6a6kn=wH9DyY2iU!Wm z@G4OboTTBqr7=VJVw#fO+FTdwjxyo5%Dehs9IQK0`!}E?$E9qMlG4-_Gfp@@QMuIN z)e+;e)FsvBsmtR|J*8O})Svb*l}+8U`Su2%{j%C$tqYp>vBv(I8?idyHRgVsT&=ay zuh<(a?)T3AD!U`}ey8p)+Z*fNAM&d;|MsGKL;U^j-(RagPT0ra|Khjr@)CpD@m5QJ z7udT#QJ$BQa`jSwm*CGU@&;N@H&2Op`l)#IdF$$oM78oyP@izdHWB z>Yv>-T}o5y;NdABj+Yn8x5mo5%&a@K zMa6vXv&BhrdvEq`j`7^gz4K6({`?Z2t6SeKo)HqAXUX+?qGG?^EuJrzH@r#@SYqET z^w;v?R-s4AcWz{?Q|E5mbt&n|qe6`zO7l+SrQZp;rSks!&&eBDVoh0DrzNkDZP0n} zRLpx}LsvsEH}_hmTP%AHWld$>!X2T0x~svJ>6&)ew7F}!{s^A+^1rqqB4b&mk!_@O z`vsrtB2_s~k40ul&gzxheIdiCcxl@57<4^cL>)3Vx|6HY;f1&M56= z#}!RdojwPib?gt$IMw=0>a1tKn#tqVXHmWXy;`0rEu6V@>V?Nbvp8qH7J13FqWiDo zs=A}{I!pY%v9G;y`riVdyKnfluAKk3z-?8M(30W_3QH%q^j6JgiEUR^=~{8vbH$Y> zDqSnjds?ix>S?j^wr9qb4=P?Op8sW@;I~Mzg6BH#f=3o<{0}ZEJGb8MEYjL=xM0`s z1-tzpaDCS_*%5yr>3igwg8e;t-?eYNsS~ZfyZ&+D_t_S&>ZJ8|-9MQ9uKuC!_x&H` zzwe$DyxnVZX}ihc+5o8w^3(iYy04hE$@Gh=jL@gkGu%H#oya(%Z!rDVX{Y~Zmw(S} zUg5~P{n7LtXS167HdjnIrat+P%*p8<|2Reevw|9FIlY&Jj5!$?y2bEy8SE+PGCPbAJBWJrxw`! z@o(0ZthK&b`yF0Is(UN<7IbxtF-Kk!b1Yv3NO7oz^6WC!K(v)>ORNy>TVv1 z-Fv2Dv#|aV-8m)J8;&>Hsqbm1Yx@|<{>|!xlKPp$4C;=4PA?s%MsLt>J`#5(X}i(% z+&MYVuY2z((Nv#qS;+pa_+^pa+msXG1uwnYYFNW#j-I^gv%Afk*XCLF&#zW~>z+Sh z^UHhEhu2dpE06e{=5Z*E;=^M07Sz+Rvi6`TX{y&+oqyzS@#7OLhC! zWo~D)I({u(yDsi>%yzcKO{wiy=Q#xM2JG%h%b$K;_!YOnrE7t+^n8;H<=%L+ z^G5K!w;xNVns3bwyIna$c*T|DY7all|oK84tTgVP7qvdB{s!v^2sJC)6%Ec=iUyw9uX~m z+n`ly)orI$>z$vrP0o597PdY&`RB=e(7+cmFu4g*cy*SeYHh zT;*!4%CT;N!kS=a$E3~M_D#DrKbQTl`{jLCy!TAAEMQo;=!($wnObYB{XO1BEM;q+ zr?=H5{-<}^y2VfT9lGzBv`Ko8-PXW}$nNE9qf@;4#@$A7}EAn!eIL{Guk6GiLvr*3Ce5(82_1pEY$Z)NgCzo9xdz`y%ZD#MS zr@U=Ux25+ehH9wUKDenB#-{tFd+Qy^H`&HzUF<@)nMy93pRLO}aoP3P`wzc6OfLmz zo?Lg&{nB39rtsbScQ0GNIhglKZgx1UbDY;K=C8j_zn*=jWcPITeuLVYSBmb--L#n( z>M*XI`0&e@)*DUcZRM=&b+U=yDwbVZBDLI*Z&Qm;qJ^?m=>z8w`MTw)=F1Y7Wd6!5jn%hrXBPh0diC9b_DqG1C9~dHG$l=o$a$_ht2euPUE;UpM-nsM zJbK=HOX23;+Z#^`KZ$Mi*;t~cTg|R`<=$tHyozu&=8wO2t#I~|_H9qn+?rPHVR|dk zpeWj0D~LHuJy&6u%sXe@<;NsbR8E`Sx+}51;B-iuT-D4A!4D?-ZB078Oeyr$QPGnX zy2>mGzL~+ttS)((dKO;${+H7#+4rq*$+KItPk&jqx@-3Jm(hE!+5CBCwD;xN%_}R{ zX7;Ol-QavZWsgSJy{n$Fy}I{2b9<(Wo|ZXP%gl}L6y)$uc%HRTxUqUl?2?uGBHtz_ZU4f}^)~478<%ra+vH`> z-)K^r%+g_+mA`$tZQ93|iW`~td%E2}{kkso!2RZeM$@>rc8GD^y?b+vis!}92PtEMV>6vV=!?QPMuJ`TB+^6c_B75!7zwG9-qR%2%msMAH zM7F0bfBU%S+$7=J&-DsyK3o$nFV8cziHr@3cD=FiY0FG0!y|sLC-(C{?`)i^Sk=Zd zr)R?b4{!S??7teXkq}t>M1Q+_na9Ola}{P}?zQ50ZBfm`BjPoOL4@zl`M|rK!A@@$ z8l~R8^JDq)7ti=?JPiN6=&dxJ@ngPKS$0;aO_jD#4adVx!uzw1o4bo9iTmFSJ9yHj zrEuLsE~$v@rte&x46_~xrngOEom$K}MSbQ}S!u@z7E!fM?ubW{Cq33YSGe%)OFSMRdvd{6#n=X_4R4479TI{*r3#xmU>gT=}`#woT)a3VXrnj%W^yAf^ zxO>k(oTPGt?Y8O;=66#bn7x?(K+MnX_{pyY%`D-EO@(3(`j#2w>eo!2+$>bXS?0Z= zUHjW%MouPyCtdxr6%kGOMoY!@COydiu(9Q)#ft-qob3;DIpvQYSFvHr_xNG4U+(D> zP8+p{lYi*y)kYt(sqtzO_~QA)r0#g*d4&)a8%H6#?(?2MVk_hm;~ssF5wh#ozo2;O z(JJpl?+>0f39AV_^!~ELM|PWI@`uV*{|N5sD7aO4-o~l)QuMwS{fGT8OXO;$n+i_7 zVAtl1UzYe#`@^Ib`-9=Ce>Bh9>^o-m!M7s5$v&9%PpkL*f|v0o`5&zIJUnn+wTAir zln4Aa%k2+uSE=ZJ{v}uM@3f2$a^Zhu>J<;(e<&}suX+EJ58*$uIqMIf-2Ee(^PjJK z@}Idanm?-j{v9|eZ~0SL{e9u5bWT-0&ls|_=uX^U- zVv0OB@N3w_6#aR%HsN(0$HEkw-G)wQ3%!l*dYnkUGJoQew&o2wmh$}u+7lnB zEZizs+UT2@%v8RM?+?d8+keqfEw0BaFLwo${+aG(a#Wemt@uk6L)MO27VEOVoVeRq zzjQ^V%*7qd|J^43wooo?dHJ|o=kbZYSsE>$KGqf(&SlY=9#`_gudiiOpV+@^6P5Ki z&hQAX^LfT2z#q-T-d45m=edNAUuTzVT>tI#`T0k41+D8pe^rP)k`4$~cgoHD+sUCD zYn!#e`)Pmuz6tBPyDt5*So7HbP}h?SFD51?$$wAUpX!_7DtWGK^Vd1A=9^C1*W787 z85Naik~b@CVcuK6Rpt{j3_2HFS)$-sqpHUH;jXb$+ywiIvY-fwJ1Mu8UW;Zn=D#6z zY=%7NPp$|CB1%mYh#X4|hDm z<9H=z$~W1AGoEG^-f)W$-dGT*+_Y@rMLVA!_Q2X5%MUF1DzamRR`mL$lqlbIeix5s zA1O>!DVzN0_v9V_YdU_2Bo#K@u1K=ajquPAh}Y54S|$9KE%9J-+8%#yvD|3C1JfC~ zw}n35cYFJbHUHGty>Yi*5x!w^m+{NwJA2iNI>T+;rgR6GbR9kZGCztxfN}FeVS!x_ zRAwAmUd3?Y>1VsAk~KcdcXj{#pRi%-yxa|QPqh|sKINFs^(*zun}#~a{dZjMd!84q z`mOEzW%Y}lQtJf2Wcz-3{bHwFp1>Dr-!HRY{G4;HetKt}vF-L3U!r}#oWEQ=+i(9} zm;X$*fuluL2c*i@F@do1)nGM>v53IbyezQn#j*5TF`cA8Z%SRobt{%>fAyZU)^9IU3KotTOB#O z_Q>pWx%7M5>)N;PoF8<(t68;jbL{&wSr#jNU0*pa@>58WcUzgr@hNCJuXEj0-O`1& z_xG`vU%n%v<8#`-+Jk3hsKn-P*~^Z5`fm>qpU}DKm7_$P)A_?+rd;}LT=i_?nw(Rs zHRiij@;>#>;eN}!<3Ma!#_Xx{%{bKG9t?7v^(xPnCF6Fb#01~RPYzEoY?#^fBFHD? zHbafhif@8R4--A)8_HLhWG+;`Z^+{s`m*)qd8e|4y>aY`pMEh`M3oeF=(WCVKWNDC z`><@vV&`8T?YB)&zI5x~!nh-5@lKzNH_Q*Nt~l*`pL_zR{mpF|-Z4hR zr0Q?k&7OE`qt_1u@L+Peltt*0riXHGWw6Q>VgnU3>Tw zwhHGs*7qlRKdigMB7f@nf&EWRXJ~Ctn6*bv^=Hf+jqQ(4eqz&^c>Z|NPo@}!{3Az; zq}NTj{n5CH-RxBC4Xu2q{x?VYc1rJlBKKx;?G63!kMw>j?eXP%5L+bhe)8{v{WXSi zleRyeP{V1b7T@WvX|ERFb^gTkhsB@xYJBf?)=yb~fd9$rBcFCkZhFA0(d_)>w#)~< zm#+;fZfE{=-5t`~&&sq#3MYPZnPJTF^y0k7YLlOzxWcGZBVV_`x^VL8 zS<-jE>v2zCYWYxJ=&k#QNqkGXH0~Tbdiv0{{N2(rTc+i%2 zTjm*d`gMxF)E0)V&%(Mmqx77m+gMlM+01c9hta4fLx@+Z>$%&5N^{IQRFT&^LPW|4h`;Z*|o+qN}HA)p6h3b|dxDV(a{kH&O-a@^}wj zeBZ&o=)BMo{fv`Gn+jYcV?QpPrcjsJ5V5NHL@Braz4u=I?2p}qm&Y_;UjN{_n8Bq* ziFXn?ADb5@?D!SCuEKy#Cvi`9=GSi<*WQy${_3JFry{+0?fxHun|>*$B==9gDzCcQ zzDy?Uf3)}N?a`5Y@7{V<@6b`_(NX6T_TMP-uXf9etA){j-#^lbd|9sfamt@{ODEOm zuS~gp!)x17ji1a?m)cF1^n0AFS5~cea{gtl`BQ$$lX|)KN&gd8rp%r?DR-Jzn32Yu zvZf_I4K}LWTvKy2f{Koz^#V!n|~*{!#Z%0SX|6XJNaQ$P+wp$EAKa#iIt8BOH`uXlo z>z1cGgEj5Sy{?)B0=tbyH3H&MbA+tX5pDAyW~M5wmsn6k85& zw#1im1x8nV7Twm^+$y?m=3P~jlhd8{ZDLl_{%a7sbB@8AmYb(STOMa!Hr#k=#-k#q zP0<;j-iw5FdvICGJPvdBc=hsiZ-9r^X2Hap3Ud;Rl7b}Jf1NH}bmRQeO(ypyvoE}L zBX;xYA8#Dm+h#dNB;IGY+_(^4(B1b1!wpE7OdrHYu65%7pfH=gc{ir_D&HzIb@0H}Bp{C7a{gAHLz9KFefwsESGUgx0*xT`hU-4~?Y) zGt8G~xa>ZBVZrAMUuFlJEV^INyX@f`CEvq|D`)j}>XqbN;MEQ8z3|Ck&8~t>LG3C5 zsg=Hhvgf-Gwe4u!!hDM1pXjO1^?mUMtJXe;&5LjD&9j@f zptnY2#yRIR=hkgreetbA_syxcT+f$8ef+&Mb4sL@y;kRCakoOh&1}1l3B6da)VN5Q zEu%_i!P#jJ_41q{AG+C14ohWpt6uo7#8>6N;4(|et^{*Mz6)EYIoKO9U;TNMDfL{C z&4SlDjdezB0h)RjzD{$nmo>j2a%Kx#)jH7&nky$dymXOYdvT40L-g7Pzmpv-T0bJ0 z&$@{pxx<#zv5R+x(}^Gcb^@i}EqI>0dY{{3abok7n7!|9Vr8Ewo>vwxttv%UO`JrXbAA8lk#mbJ4F8Ek66-S*e;IP}B6*i-N@>SEN40D40 zj1K8NGuzbZQDGz|q@Gu9@7E*}uKRHw&qHDD)z-c1-1k}SY~dN1*sCT7 zf|J-RIK-nicS-fwU*DUoe{$*gi@9^FNml z;(Au2XB)TM=E6SJMK4ZI3zUdemYDiD#@p@Ub=AcNyBrNxbu3n{USu^(ynUi>pxfui z2422X0#)@kq=?k+l4`v;x9Q>`i_86;e*cwXWH$5gA2oKbmCVXn@i}wa+{b5vOP*_; zK3DimZP#ZZ5Usq(IM>U&*ZEb^#+1z0HcW5VI$tOhcqZ3)bL}?80RBTqm<a7 z{POUFwGVW5vVHPi*ScuZYXw&S^qD(&_Ds3&@%-G)3dNizr&}rMhtp1N54g8?k3f~i z_rQC4D$5RwWPNvCwO`sQakDOSTS8aHe-X3JKan*8^A`VMUG-n?seI7y{!2y%@>Uxa zd=DwzVW0hSuLOU`pOCrv;&C1E-lu=qgGRYGcIW=66k}jW@WeOD?Lo;Xw?F#%LAUdS z0!3n%i~BWdWjL;lTCJ;9k+>vkt689P_GGoKGp_u2aGTNZcxIcVk$7_bS$6va{YLLB zH#2+OnsJDE&E9MK=GCS>`#yjEeg=~bs)?Q^DrPKC%thr^%@dok_S!z7?WI#b1#K-W zShP?3bm+WXS=YwLH*Yg_%UrPOEz#KE7AU(v{pP;>-M3z`*FD+(I9a=pzi5-^M6EMkh0UI-i>yoVWPyyLEiljhFlXJO~b&qjuxFjqIBpT0Es1 zADt5BT`oT-nYP9y!g6)NQIVT|;h%nPS${cIW!jNt2Vz#4E`K%g$^x;_g`;nM9em1s`H-*Cd($T6AYd6PL)B^+8g>7N+hi*VaAx5$B}Q z)_KG`YLDfm1A8kM`W8sZ)@4R)6E#Ub{`Qr_qp1#+CIt_KDy%&hJKB|=k^NbC;bL{4 zx4M4+@~e}V$2>B<`}T;qwb9#C^?!~&^uC%k|An7QfaU7;_ot_84}qpJz(0zR=no<#*7a_ zpHFK@>KN~DOKmovdH<2s_MPXrUYAG2r~cJ@{XHT+xpwYXE;*?+j|_dSn$@5E*IXx% zcVP?bmB1zU!cRt3?eBTrV$Sh?^1p^JQV$pVO!JF6zS-xSJ}4yy_I2=xFflOj;XT>K zlBARfyIT&rGJWfm=xkxoX+)E6Z_B*0B})HmT(a-1S7u%Qnypg794^soM1F;+&3;*S zDoy>2pBL-=zc#;;91rq8Xcs!4?!khkn$91$UC-qFJ8wJFrZc8fk2lAz zTY8tjN3&Q%x$Vv}5y$G)*-Nw@_1 z6PGt-Pr0{k*@^Uy&X<{5|L%FbaqEt_V|;sCQPo=}_uYB_OWeP1 zQ8!zE>0+fE&c%+0ZEk33_zXUBom)QCU7 zGYxFypI+hUuT;2gcs=;w>U#$pFQhL`)96`z{2EMPFVh5wFRGcMzj9#8;IT{rc{e5ZJ+6QjA+F6<0TFyBkTejUg z8=HMK>h+~vS8rWqUG;6w_j`LPXYS#gEcx|+?f;tice}sut3Ln9`uV)-ceS5i``1<3 zH&m^(lQuJ)-z~i9DAUFX-NJ7dUDOjxP2OIRn%o|+=>zY@DXz)0jF0Bj?b>`asZi*8 zRK+VHIa7OY9nsS}cFy5${q6TmQF}+k$)j3&VZ|HUy07K59MQC?&=r5ZX`-Uv(?{NS zYfFmdzD6#Wi35oZ$2h@3)UO<>-h{zkO8nW`v^1?j4u(_D$`* z`bbM}-`SFN+q$ziZ48S!{bc`Po%N4z`K^1qsr&WLLT2;4C%1fWz7R1lE;cvce|l^5 zj&HVY&wk(e!)TuWG^s!KPMY}k;;(#qbtjD8J-yYx-S6;?E#Bi}rS}m&viG<*Z{*v!Yr>y??ry$P zQeIxo+&gz(!UgFq-PNo{QsEap8ZC8m|E;^lw}1cQ%h9)mKeYdmt}?%-_lfN`)4q8V z>^IEW-6VYWiQ1~*=bSgHZE}}a-=6v1YSE3CmdVyvi*N0%a`v~#BNL6yj|DjiP5$y+vS%}|GAeJUw%SbLCeKC z+3PM}u3!F%>yft~aewMrGj(5Ip8pDShps1U}RA=)?sly}f&UH?_D`TkR2M_n&us-uwK|CF?%2 z)ZAG(*@r*((?u;`fy0d1hOYv)vBhuKH;GqRyQ-=;*2W>?mHzZ$ovFNkLeBO9wn@4 zDz0u}Ck4uQ1S;PhYuKN?*YZ+7$4~Yxn|JML-Fv6- zG3w#l1#gu%>^&;(CF=UHcYEKRyU`y1%1Wzd@Be({Ua$0C#_QY6){8AU$zUfIkx-PR z#o6=en3h6-F^?~2MAR?G=A1|bIY=2Mn&sSgk@#1vu`WDy7SpQrbQ2=rmPRN58U+Xyt=l#uw{`|d^x*y zML|Ma`W_GN3UjWWjZ4ZNeVZ`-nQzBqi$7MU5}F;3UTha-S$i}t%rs)h6`!yrPMJru zdzSL-+O#~_GnX!j`YgLwtmlf!{fn=JGu{SEsRUTv+ZLu<)ydpY9#bN0~?CdiTA(mwQA(qW$1D zt@2M_f{nl42@$cjX5Gmv88q3xyg6*CN=~m>g}+a%iqX{Nd+%Nfi59*SZddI+cdE_v z^Bk{*m{Jqdm#gZj&rV)EJ8t#!X;*&Sys~!6qu70-xki@`7z@7L@@wadlKDu0=` zeG=F57hf9>7`i7eeH*fz=iZb_=Kl}e?k;*=kesngh2aMt%rT;_$CxRgRQ_w!GV^VmAs zzP)+$Jj*Mgsmh1$>eZdoJR)9lDsD$3Tg5G>jX@k9w_oj8A)ev+Oi0D<;Vp}fBeN65 z`HS^_ureA&+&i_hU5aa)xW(PjrS*%R7oP5Ep2fH#lKnKrra&7T)xpPUvuH}+2$1JmotyT1GCT)DdX`(e&yTfWw4m@ije zrt;vcN^^YE?Sl=gkBNL*_S4hHY`Mlw?Z0~)&DKA9{AZg&*)5Z8t9qgf+k506tCxLT zp(A&gcT*kUq+aT&3eokPPh2-2Z*6Qyw_ZLWMM~3q+9u8-&32Q?DSB=m%B+3f zX2z42#++32UcBVurYY)ACp#`>iqx9Ym9jEI>)|blbx(ya1+CPX>Z!a_WBSsKmn<4t zS1v1I;toFdGG(Qcl)ks{4dMC8FZ(B|6&ZR?Q+r&?)!+GS+ollB(33%?*4Nig3O-i% zr$wAwv^=x>siNMy)b;zLAKZB2r1o^y$>Ro%H$CG{++HfhnEpsU|8arW1MBQLOHIGD ziGQq^zyI3aGh3!C<7uA~JIm?h34=+lyG^DReP+3&v)iQCXg5o-%MqyzWv_c}eYR%l z;(sSn?=9#H*?04H*t)2PakpH4mzt=U{j#>!e0|C6rcQpif5z^zciXO5PUDaFDa-qs z!@rKN>g?ACEDrQc4mdlye*WAD4@JYGFZ1ZEy zV-x(1;`{esSl=@7{gl9i{mBO(|Jj$6aq#-b@>d!QEqzX81PR$Mh&+FGtLH=G7kd&4 zTMRbOI=4n<@7>scW%u2_CWU=|&l$RLex=U7-!3Q5Bp9upJl(?4%y{y#`)B9(yt(x> zGDG2-NX@KCzg3%AH%0z?cg*+7VaC%u{<8PCsGUE;bNoc3?UHHwFCLw6QS{mUNnFEl zw!YMnXB)+D-L5?-S3lv=S&!Tu`}SyR=}H_+Z?q_{`T1&nNYCQUzsxeGzhb-7Ci$`O z-Uj7S~YU0k)m@bcpw1#jLY#?9pvk+#3Up~q9f zo|C=pDR=mqlC=UFn^ktrsh@sO<=ByWZ;uuB_b=4@Ecxql;&)|CZA3-QzO0tsEr(gm zXO`JnKDq8Ev)Wm@e{tIE{pr@+%S_YN{^ZsjSpIKEp6@w>Nly$e$;OGjbYzP7zq9M# z!x^i#?EPHM!R@+fF$>G8$F*xZOpX5EQ#_HPz4{KP+x<5SIxn8GkWXd*D0xjQ$KxS4 zOSVg6W8e}>pZ$a<<-F;v-d>v>c7f8f z#fsvtc>1I--EmLIdP==ZlA~jB#IdUiJJnQU+Al0HHEow}`gB5L$1JCxukx4wxU%#I zbMNdIyjNe^SfBCdKla``b8+^YFI62a)d5wT^du*}zM+0h_URg_=MTh+j|geV9%6h{ zU?_Y3(VSm8d_{-%3tXrU;Fm6Qc%YNw_-M6t!@TE@n7&pj>IKage|_Hj%k!l>d}`y? zZC`(2s>|c(tiQLv)SIp|ymkGd$dm;2yan^5S1#|F_hEkv88bR>&PXK z)9x(lpVMnn`liEf$#X?z{%r9PoH`{%*d2taHl4U&5EB-kxyzi>8~YeRI-vZH?l+SxF&z zNhR&)GL*NfRP~i!lW9>7^s9GdE1cAMIpa~tqbla7>&!#_TBS_q3SY15*n7nLQFZv- z=QUNEY(CAE*gE-&b;rfEfqcrG_B-yio&CyJ6!U)8lj)_aZq{61b9q(3PsW*lH>|bo z*b{MkkNZ=*U|8uQl+qvC=4}O5ohqAcLw;&+9UM5pK^R4p4vW?gNIpk(L ztdxE4$~GnA?eweP?n->-@V&S&Bwpr`cy)*VUhc(LB)|3^mGD*i&n>yG-nr~AyX(5| zCtKtfT>7fGY=_;Uoa>1uJNg!!{2H%QSlbgEGyj3f_2oB~Fx0swbSpiqQI(ypVJ4h2 z{pAMEeRD52&RF_8+)rL5T_QDc%JCg5CgmzkOrEgga)jXJ5^cAzmdd|`!SrQJ__Znyhd_?7m~wW)n)Wc$wCJ)u*cl6CiJ?F^T@eX@M* zx87dZ_0-O1*}E>;KCZ31onGs`bWUCU%+Z<&m@o`tlyW^ut(BXR4gl|LFUHPoK^ z_#)izfbuCPo3$p7DpLjHf?`$$&XKxv>{VTuxtHF&1GXZ!ReKI4|IoZz@%7u|xVyrB z7n8#a&o-a9;rV*QGsct+>cu*Dsn246Q&%1yem(@vk+JA?Zzc{XV zS2j+0or%|#3H`l$MJ3PGJ}JH&QkHn7E%3V6`KrCPwmp(}=B?bG-dd=$J^l6D$A@Md ze!J7!@Yv32XP;WkKFo4)-tmblJ#1Cgd+e&}B-CG+#rr6W-Dz%R+Ff8O9lrLx%J0wJ zH*N$ue0=L7xAbh*lmlk@H=4Jq8F`!RkJuu-dF!mxntT%?nmMhmI?O%WSjB&-Qeda( z`G*S=HP-6n2#cRh+;R3md=DqfAFdQlZO$K|8iCgqIAywS-83yGOLpg#=_i)@HAhGG zKRp$GVy;a_u-O9VO!w`Nj)pB|ww~gV-5`=eFp$Yd`L zeXYF}p*Ne%r>w2;zu9*9RN2JUHL+8)o_BCPjR{;kN8EJBicX0+S>IQ#Gwa&_>}8(l zrMs)N)-Ie95M9Ha%egdhj)>c7y_6+yZR0y^=kN2(pSI%cm%VM??8FKI6{Dxb1Me%99-U#XNb}Ch6j-?^jMbzof$R zqKN%*{VS}u6Le;?+4Q)FCFHKZyz)xgldb*njk!-8FF)Z){v=!xH2=-zFtcOVZJOrP zty%CV@u^~I=(6nYNt2nQ%+%_`F3UeP^x7h~y!NT*q1T#IwEUCjeCp9$&|^M9vVXaT zW~$_Tvv2p7RtW{=_}P33Nl`G@&Dq-|^E9+4EKWIZ{p=7evyiG|QsKGjn~r?FKW&Fy z_65VoQ4+>GJtH3dvbI_7AGh{#)Pkg$3zH&Gbxv(9^HrXBcS`piHTF-l+-4f+7#Qd% z@aP9U{kgX>vAZuZXH(kQWF6I`j~`^La;UppG5JGl+lTYf$}8SJ4&yM}sVi7>Q0U;I z8z=8hzXSFF%itdLi%*st28 zFFDKn1xH^PXLe-2Xz+>4#R_ zWlh!$lesGb4(?3lUh1{FEYT#@YxUuX%||R-H}z@$Ua?b4?SyH#;^LiBMVp0xo(> zWFxxt>{hMyT#KgrOJ8~YV{=zv>qNilkMv9KB=p=nFuU;Q`;edOUpcSt{QoNAAJ@lx zrGICS{8xE&-|5eEz6bxs?)9DiFZ(C-`Tof7&794PYE-^o5?+79;Qkxes?Tnd5`?>E z)oNtl>*;!S*>|7e!4JKhPo(R^e(uZuaqQ%-{3)~g+ow3S6`o3HTh(kbzjw~F;(!Y^ zdMm5vom{iDE%JZc_n@$B^_5$@uk32PvTNd%U7c5US+0x9U!C>Wwl6trxk&c$JJ~O1 z{NE6BS9Rm$!_!v(p8qkd+%=_idIZyN2FBkCGH30TKH(O1)cJP)^edilx}juj?;Mdpj|-0a_)ZJBA`Q97r7b(e0!(Qn5$RQ0X- zULD1EKDlVKB~O@?!(aCIuXiqqcHik??f&G&@uRg-r|PppxWC?8`qTHu?E6l6pRLt4 zxmrcOO?$)q>bHRW%UN@lOxC}6qW?mlTD;JW)rJ_vI}fr;T>Ue#)3H$u>nh~BGDG@pqsm0#ke$@zVWYhR#p$iLu2HxlgL_&BJ2Jg@xk=ZQjbh4Zm3O67)q zh0_nb)H~`^zEg02$85#R8+ZA{RCCQ=#r-Dv>+}secX#e8DVyFH^#;&UmFSf*y@mL8WVKc%$_6T>EXtoB%9I^&_;QI_jE&PyWMVm2#1 zQ{G`z@^IUW0^iFm+Qte&YsFnP!`)ZvvT2;H$W;lo_I&EvS*@&fXSTu7y*F7dm^jbM zTy-*}fk)iRoqdIw8{6Gho|rRoR}3RM;)Ig8IX6yix#8wCr*Y*wW8Vo^q@1ouO}HW@ zmm*wdt1@?~vyrFp@(D*T>aQ{5Es=B;RywP4gjMB8tI84Al=EZ(IXkU}=>}cN&uRS)*m3Vp2^+k;T zi#r`&-_I^n2$$t7N?LN_>darIDq5z?RNE5YHJ<;_BV&6bSMJECvZPA(#E;G*yS^{F z^EcV2=)G}bU}i#~Bxm&@MYoq{#9y3A-FIE_*K+%Yb2F5;?7r{fYqsJf+t!Op`i&KL zMLVzGjp^^a&OceGKVZ+lrx!j(J&DfGHYROa}*N(CN0VT;p=E?*9{?7e>M`~LK(%h&$gPP?#8@a=EKkcw47 zjmNW!4t=n&x3BotJ?n|;>&+$CHXTuu-!SLTR~N&XpClu%di`ZtdrN;=?Yy>?zDEth z8Wj=`NBH_(F!-%=)KB8Vuk*qeUY=y$6@TV}s`R@j9Xv_Pl!MP0ZL+w0-ek#*`Ajws z8S+Grzf=}~c|FMNUxdat{>CE??Dtm}ZRk9i)aT`R`|h(&wy%{ovi%LKGt$opa2LqU z&DrlLRA21Kc`f+2R#thE?YgDu;#>D8pFX5lD8Fv`x4exa_m?j3J@)zc?G?4VeUI^N z44JY#z4POhebeS0?`Xf0zV!#|x~-|5D<27dja08&`b~bd*R0OXN0%+bSt@qNZr@zs=`ft%O^V-12&GrZ6Q|EABG5H~wGI_Ug`MWur z)62@f{qA3XpCKf`PqFW}X37VJRtX*9*J^UJGz5B9g&5sYbm2ZKrWp2lSJQ?o6TJ4w z&D+vi|6)sQUrcU=?D1U7eOG>a8i>iAJmAtf;ojs!Z_U^jehE2ndson*^*j9pIQ%MH zIP ztW@}YinHBrvA7=J_qmJ@b06QZEX}zdSiAeCo!HzD=kp(#XSszx*UN8jUCOs-;eEmC zAah;o-dk5T?RdU>)#IwhkiWHpa+P;Yd{iz~H04NLpQxI1_O6*z+O87e*)50GJe|FP zbL#&(yN565%;J1)oT)rx`LF1lZyc-tI|;0bT(aQIXUXS^h7|>i_v~Qb zd%j41nK+jtsK&fxLs=i|x66-Nwq0MK-h11OF@Iz4i_L$;UF>`s@An_je%!(tQLVj$ z@zkD#S<%9?(&sGR+!ORqc+q8>=hG{C;%(SI&1!!gCHwUL!CNQp9ktzN_)nA3dym(j zBd#Katd@PcNk1$5{J%~;;G3h6t}-*5d3)~@@F`jvWv_n7GBGgRWWkpbZONJ{2d6~H z%;VDV+;ZVifjYgLDVIxbU)sVNbt_20Yu2S>O&u4S9$ZQ?Svqw}lIszZyKP6`s;Nn{ zh>Cucy&oSCU|;#A`FOF;+AX4e2R=@IRR76h^UX`btu}(cSN(W}$ESih>~q_N?WE>?Kgi#F^JCErkCPP#+j~#^ zn9!=K{M=d8?^MOb?qItsk4(Jx9ht1Z`EB?fj!jdI<68D)O#Zlv|7=C?^0?`RVaKG6 z?ui6cm7bM&>mOZp>Wq-Ip|9>@sgF5f%GcKN&GXA<68Lb0jo*#$jra{g-zCQmpA6B; z%y?L$mb%ofDEVP+l-b0Km&3G-4+P(I*m$=gcbT_C&~N^C%2W2NO=g}bw{`gezPG({ zN?|T6S|LH3A1yN#F)y0c9ps_+Bf?t$sIk+5_?#6VQdsbjH(#w6A2r<1BK^+fOFS?V0UCF%R5$y;X|*p|5%HqLdQHnC)T zUSHPoj(JZ)I8HQLZkDTVySCH%#x5BaPv7224_B?o%VIBjtQ?hQV3%Yth4+HJ+6D2R zc^&h6+Ix4**?2w#0QO4qAPk;8Gw|p8=`}IL)y!DdBVZnY{ho!K^cL z7PKfeUJ>$0Tx34=Wcfs|X?kuqHhHvE9@Bm%Del2O{mIj!YcW!)hK;%2KK;w1%}cYl zADAUHTS=&M3*W^w-e)VfTPIpv3fXFsD7tdP&!V*W~^|JIxzs)uX33m4DEidS2*n(1J&{th+C)Q|Jg|Rg}9`Q6X?!ROZlv zrtgJuj^?*gYZg2J4Q?kluJw-K+xC5B&v}uWzRygu-^2R2_8nMopzY8k7anKtW4(K4 zrsTyKubmgnd6v&_!B&>4?s>U}!C|K*_7<6EZPZ|t#j~{R#ZJM}DfRY{;D0s_;0w@m%#c$78OI50a#1MC%WE%nV82dPSaV-M9WZ z7lg#FKHByuH~D_(E-zWV&&?%$4T{f?d_F((T;wjnzE_cEF_!gh+hj5Wc7EmzJk($M zKUil=c9(SMaiv{%_t*(W?Jx39Z$^7PzR6{VlE53UNT?MP+n zj?8L2_CM;D?c9>5G5*)L^J?4=J|8WmAXSth9egF(_?G9g=KOpP;r|YT_dWkiQ>xRh zxx?L2f8$yCg2r<0y}x&A-Y5~jJeBv(~W#Ba?k%3&^cM{QgxgD-fQ`j&uW|fGSdD0G0zjilRsPvHdEw!w^pe; zKz~u--WIX1(kxf<1w;00JMla%cI^oKGEq#~%t~^S+QaA>v)|8MBfo&*_s1oVAM2^R zn{L*a-{zDU_NVQX=#I`+tvi1$<=AtKbGsC~;foos3P6WsIo(~U6npaG+ULdxFY?~< zTsU?9(NmcryJh76a5vA`C~Wg2tDE{=jq1_n>+A zG|e^pYOJU8@+_I>HnocF?5oHvm+fAJ)*or8nmXsq?r%DMH@{fkaW7F%`Ndz&#~5YW zdGFnFu?soYub1Y26O;Qi<)Zx!6Sfz-=V$a}Onafe;=g!+H#^7cXXaLKSs567@Sc)o zPENf7sZsVubJm1hy=tF6&Btg@%Nr@CO{|>89vlkZ9Uh;aH8S7i;S|_#V8WgwjVWs9 zd{Q!5SA}IqXGQ0R-a5Z_t>aN%RnALV+qQ1Ib@$fMsI9ZNh3>w2H>~JRz8SQac7PD@(OynBv;bZFg+vLybvQ*Zz36i*i} zPu8Do$Id1rQF18w#(9oymLH7R+vaQ#IP9b3!xr)Gsn0iyg7wVbp9;+Sd-KBip!?^U z><>KQQfIV0u(a8S&+w-L^ZrYn;SaC+*d5uEy`y9;v;CRxuh$r#Sm9T}ZGY&!)XvZH zPsQbvi)NfWJ~QTgzWu>`{*7ntEII94%?)-=Jh^;kP1{LdpS-jp?#aqNcBh{d`_1V8 ze>^Df>80G5U30z53tsxE%}@Wtsuo}JAlC22vV{xV9og@_Jy0#M#I$bf_SHM>AMvvt z`tpL8<;sLRuesYpt4gl$|ES)5Wdiei*A1t0fBy<)ahP#uY1wbKD&>0)7LT|~go+ED z(>JVNr7rR2W$5Z(&IdgTo;#FJb>}T_`}22V!iv_&hg}i5+JZ&wOuLy6+A_$yT9{?5zt zf@fN93ts3B(AZwOMdSAMim7bpzb*TAtcq=>Hhb$_CF$C|%&Vr>Ft6mEE4WF`G}^H6 zu4s~qM}468+&yt0kGxF&DJHe6F8+Dm*6zYwM~#dXw=Yc$IqTPa>-FvZ{aSOM21Z4R z?p$})WtM1S(DYmKLDsc`iiOKI?R3rjYNq9zTgrP|`gPQ{_2HA2J{Pbn&EGHe>HEsY zj`iCwUf&;=8r#adyJq_DRaLc(^Hx2ZyZeft+@&U8ue-lgB>kLrxPN_{w)CyybHU{#xdiw3Y z?)>%oO~?Pr?^k}Eye5>-#%)^gH@7Pe)AQ5UuksIXnL2gZg6peHc2^2WUoE(CeQ}tI zX{=?wa+5D#nPA6B-hU0ZOfGB>=G|H-Dz`I1ec>lTv#M(|x1Cs8*C%T2K2`sGh`FRn z9Ao9qbt)4Up7BZB*4_SglaKCH%8PwCd2=3==SeBzF6){)5)ndjHfnI5=C*IR6x zn#3iiD!aYe{rpFZgI9R+9m{<-ElK{>C$?YgO43S-SFdlsv}Kxs{O^j@x15W0x2!)X zAJ}TR$$6ixQbG{Nj+oui%KPLt1%(?p@OxYr3Z8k7;p+EtPU8}`>euYMc3+*aX?yTh zHC12F+_vA%q4%Ce?7MruK=7RJdS{cbS6qH@yyN^bxot`b}m{HIpt2p(q~g|{mQX;WvR&`rTwqXP&;MUx%Bu~+@}Q_4@6n^U%Q;s zw9Gi@tKnWzn|77$9aCqWTC_jvrsE&Bs97srV%ARaw&~x<*Uwk{WoOGhZBK5!k1OX% z?w>KiJv^x>tA0VdLS)$_?z0AOga7X9$hva4;7?HAo(*kR@>(>PMMW}gojvtX#z(HQ ztg;&}oDFI0YfW5TRxi0a?Ru7z$*q+)TK8#oReJt61xn6|t-@lr^!~NbB>1 ziF`WF>kfqH_4)Jhu_zsC*9_M+UEf^bxYXQtx|wl5$Ku#maV;+&OK>Khote?~ZN?$# z<<5(}#Y_9I^~cmZ?R%;&e@l4LhTCE;1-%v13S)t-o=-Rf(sB1F!q_5%=*j1Ko+qPkcXOc$L)qipF z>82kydfXSa_+a6Bw2tp?w$nkoma@-*-JMc1pSo?+i$Bs{kP-7y_++Ay)21~=*|ll9 zy3v`=8z;}&|6JmFsN3h|GfFg!6IGXO5@0(sbCLzAwXWR0r1Pq*h0E;?9~+OGNVxqtu-l&dvh?h%iOCV)!i*zZCOnf_skXT!t>%oe zV8$f>oHJUh#Py>+ey|zOJR+Gt@mxx=DC@pCjrylqeu&+B=gPV^!SUGRNv$9Iul~6) zaboSHN%E6xG{UYfsyN&I)6lhQO5d{=c_&kTi-c}gNw%)4JS~{5IqO2UaWvntEvJ*j z*34;qaHB8%dfB(G=CD)2Nw1IPB)2=eXye%b zqnp`XWkIxE%%$|3)TGD z#>{!L{A0CH-TYq-_7C`MwIA|7^yHk+928^waHB)S#E)6J5BonH=lI$AT$kf{&))Qj zAJnfX|Iw8GR{3XU%K@=^#`?YuHka3$JKdFhe@nGy;vJ6oru!Zrs+(BWAC?x{bJ8GQ zjp@C?nfM3#s((cHJUbBY{X@FO^-%c7?LvE4^u2#r|FKOqc)aGL(7v|y-apv>IX3M- zcwhC8@;}c*_R2pW&HfS2`M>SRZ}!zrTP!}z7rON!-sj)hC%S6?6F%JUMAqwZfK=ky-Nk0j2Dv6bGO}k( zi;+syaE*|*o?RBPNh8r;*?C!r)!8c&5AS>tIx5m7?8dWDYwvk4!k`6`5VL?=Nqw3i+2H z)$yWs?Yb|^1ZLhk!4y?%aKn3cO5l~gm+FN#I}~@H>0MD@ZTa|e=M7y|r??uUwuG;x zAIh!i4br!14|F^^=z&N>jNwwwAh4y=HzWJ2+1jNq7kvBb{w*`PWLx11`E}eY z3)wVzR#Z<)`m?LVzJ6KpwDa-oTji4#&Un5yX4xv({wC_g#^Q(@7N;&hv-)^MpKp$o z|LiZKQ|}e}-!$)&dmtU0;MWya7<@M1s+_|5XUIpJXJNYu8TL)N3Jix?ifo`Rzb78#`OlF8Hd=}83InYbNy*{ zy7%|;ZreZH?l-)z+uiVgYE)r=SI|!3NBD(O20pHT3nl)szuYCXPUz3-<4Lq`&=K) zXL5hA+3oN7MxQTXJDOk2J;Hh6uG9C;vF{RRJlQmdq0@8SX`^@LB(f4F^r*jx&_B!o=N8xhfI61uJD~%z&&MyJKpDe z5*PO^ykg4p(@?-|frER3AP3h$H;#WCW=<2FIX z3^~UaesKJ#>^^PA(L2A)JM9v##5k1qtjz3O`ICR4|Lcjq*TWAy530JYwRi2^uN*#p zIe*H0l6T*makd~vn(MXBBR{1Sci}SzJg(P5l>=guH|uSkexpBux7YXNr8Se*RJ%^s zTc#cT|LwD?y?0#0?PBMPEn_#ba8Qk1{xZt_dU46t3ty!Ue3ANhbVKgST7kHdou_j? zdv9u6@P(r$e#1P)*mT{}DHd)I-pqQl>CN(lqM2vI9!WH9@@+1dzxuJD!|jE_4eK_& z5uRYn;m&eeFXBqsDb50(L+vca_SS9Qo0^+mcO<6q9uixd^-p8_AC?oGOcSi%{iVuXV#P3isz3ma(fUn>5bNA-h(kk zo~xoOw|`bFYBajjb30+#j_(I@cICUyD%ruy|0!1fzx)9qhMQ8QF*n&-H_3KA)zO$- zoUrOm%gj$IGqk-0CVo!nw~_pInzdkU3`_gd%@5gj^7Neueqgp!=H1lg2RVPrSg4+F zIR5132i~1b`_#`jra$$n2%N{h{)FC-xixZoH1!*{Khdg)j%%^}l%z9Zdcwv%Jj+j? zE?l>VDYi&gZ<_vr&`(-Zo?gA7S6#4q&4aL=tlKZvw(nu9ezNt&bp1nrKULZ2m_ImM zBz#ZN{PBXCjUS%YeY!5KvBb`&@t9-cGA6l&7iRDl7c$OKh!gWU8YQvlWX5sXkYowB z6;GCH8uO@I&UtY0qNn##_lF|qd9`Xe_xViIJ|_Lpa8i=$>NtPLUnVzya~gh}pvxEE zs4lGjo#Tx6j5|frSN~hp1h3!Ov!w9u9l-+8#@!qz9M5^rSW)DD#^vl)MkO2G^DhjI z)tq!Za(16qamp}!AARJvS&ch;kh9FX$?qR=mK-Rvwm5M%_gXUNr?{?()AJL4>eZZA zd6c5wRC!nBkwVRVnU=o|wxS*XXEpt3R8$vhQC_(5cqZ4Q$YOy$<~|Vxn{HpnKNmz? z!jc}JU8XS4SnB#K1+G{nKiL!K{a6pnE3dpT;fr#x#J3~Irq4d~qmWDDC;O+*!3THT z6FKJpVEL{kheKwEdCzd4l*9W@eZecS6J_(;RLGB8b^-#G)3-d zs@TU+c3#}^(;ZgUd5Z&H?PNb?`~8s4dBYj6cgAa!PizX(XnOuI{mLepPY+msSbq2) zdge0YO--de9sxI$^bel4+9GiES(I_o0#Tzaf)RIK%<@lo#yug>C3wZ<2bGfqYUc{r zvL2nceBqhTJc_@zIT$rR5e=^S+3IlU{Ni7ydH?SBNqi#7{waNl(I@U@ZvUpfj8HeN zJ6f`)o_GJn#U44y-iOY7{d0B6MlrWI#e1t?a#pG@op4|9{r4?DvhPML;x61YVe$qR z#fAD_emyG7FHXPykT=$8@4SOgH@1A5T(GZo(br2XHeP`~+oq+bWLJJ*pLkyBkKjL( zX?s#TKb?~dp4Ymc^VO%OUlYz3%eFtAvTVniDboy2CMA`Nu2We5c+u2J=cJ-uE%sbK zgZGq9fyQRXAgu)sGntp3+G!9vliPTz*NTv5M`QzZRl zs{7-;Uz=7=@msS;_*86g`+_nKJqssh#{iYr8&~UE{5ZG%#n)9D=TjHY*0plz_Au7? ztf_0y?=?kh#yTCA=|Q}qr<7JKd!Bmg=LWAxu1%YGL{eGT1ZVYF7K>fnKWXEQ2HsJ)7~fNo;BD;`FB_DeD_Bt=#eCoYT6{B>9JS5O4qJlCV8$(-KSVQBL3;~ z%w4P3NH%Q^k3LzUe@1^#$0b*N&S>}VUoXD((RSqt&{Nrc^4K&qE^%)*?8?5SlxdNv8ZTll;ARGLJX)q}#+Zb8xY z%{vdRvw5|g_qYx3|AzWWp>v-I{%`s}Db;7A%))ib-93Rts_cqX@`P}`V+kx$rpxTODxW5a@NAQ4-&17BcX8J(4Y&O7@wF9T87fe6^Y1-95Q#r=3)=yL&Rrtnw>d>2>?&v}}E|;_2;OiaTbc1U1c% zmizi#*JPpNO}EFJ=02Ov|7ptHf^C;LpKIOS5b&~b>M6a5)o+#+avo6ins7{&B~g`! zed_6li%-ez@Vv=iuKB)Q|KeZmQ;a{B6$#7>3!BqTU z!^h*dmi(~dS=;&X`C+w>q4Ew}ocL~CSl1o7?D+hcQxdW2iOkVQ=W4uryfITf?P3(0 z;ZMEp;unuzt>jmFvC-nYXU67PCwCi~*}VE>VN+Dr%Q!QeuwI3Z?_k=j8&t$%v!u93c4wrv{Q<56ai9IR`X1JTf^(Es@)8dofY^NrD4q|+3 zz*?0fv!GJ5G0%{-$|iS#*_<4{lGU0Q9#$;alI*=DqmFCA^chTli);cE&&y;miaA}% zdtb}B+xDr6?_Q!u70tN1;Sb@8`uv6=jW|Omw5qODOg(?bS08 z@;g|xaZSVny*XUd{#aEoELUZeZkpSf9dr{DS2EI`^d|dPvC>D`lLRMM{aW;_A$-pX19z#__@Gw(t;wPDHUf7 z+7_&CS+Gi^NvNOenCKRR)&)n-{@c;Cs&L}U-kg`WUu+QAV!^uTi0;cB9n&8CT-G5} zJ}sGJS0G1J*J&TY#9tlXxE)Uyx?XxysWP?o%gx1|3y+!ZxU{6O>)a93WgT(ZIdb9L z^~+12izu;{FAoP)$Z)kU>`3Qwvky9P`@qgTqbX}nw|^>Sy%LwR zyHGSv`o4Yr#lM=5>YLx4UU4sfbI}3+^Z%DsbM3Ef zt9_1tyLop@?#rn<4}V{}{$a+2=qhnB@z1SAXK!BTJ#MJ8a`(K&bFv<9-lz6=R{E|} zAIq91%yP}^ zS-)O>$0g(MOV_q+RlQ?A>Gh^L(?#SHpYDFN`hsqvbd_u6vfK?zJ|6jU)mgQY@3L;0 zw2r(n%OiV_jn_r)Z(+LjeOspX%Z*9bZqISK`9)N*c*&B5KHmIE2Q##mC30W=@WWxA zK%4L?&V2t+yX^NSLN~hfcf8KnRH)&EjnPXS~mizsh&E^!l-V-7XnF^DDFJ+g&T7ioAdAGe}u; z`umNmch|i;HA_p)tXB8uUAFhii%x7+%l-W9$o)c#N&mVof5<92yyZvn1lyVR;xDdj zaEY)puFcthQ|#ly$;lT!OxbYhp$5n2bTRJ;o9E>dHk91^?No8~W2o|zTMsiPmKCki zWLnr=fA`Py$uAYZED%rdNmMv;@Wg(Jhf6uymG;OasvUaB;XZ-4P$b-GkJQoQN;1b; z%I7{=7ds>AKU-eg$ILS=GrHH_Pqgo6x_vh=MeMuNo_>?ZOslUNwA-bcnf4L7VHtUr5_`T2%A8Ivwv*x|pwJ)en;m*9RSx05d z4;X6kEfigC+V)cJ`otR#Z+Xb&WL{0Jh?ncyB7ZTjW$%qQQo0q}&91DfOL39#6x}DX zucxQ(_7t}((~kK~3OeH@J!PRuR1}YKk^yJisrZ!B6V}UDE=qr)R1}aV@c;32nGeqI z*lfPs6<^EzP_k>bRn*q#sfk75zZA_kF6*l>7TJAKN$mTXKHUX!`+2ioe`_ueU1OWL zUh*0HUAbE!D;r-g6kp-d_HUcP?^Ur4&7ADsJpIRc^8}|dr5T+5kn+bZE#l8-{iF($ zGb;q;J~?a?p0vDadEs*9FOh#GyB05bn$Y_2?*8|aF0P7Nd($vj>a5smlT}3<{AYN)!sF0ikr8HnSW(nd3~yA zSCcNVd%X z!&H9m0iW2f0`}{5?U(Cp6Ym^2`(%&ny>EK1zbm7-k9Z{tKG$f?ahiSL)61X2psC1j zpK4;fnHU&Y@SXEl@F zG0!AZP{ecstCHeD5drQ5aqF_0UmFy+E$1FTL zW*_>!f4+S2_j7Zr&;PwweBScAbvc*+zry#-380>(xFz@LkcVSjPmt1y8)Z%r17WesLsT zv)uIQx`lV{YiyrcbUmm@RyNLmr?ke-iG14w-l?6+UHT-=E3fd7+PbCDnmf;OmVY{Y zTl42`;dc+)%L9s*3zvO9oUOUDPi@!1MyKsNm+W5hwyR{ju-}w-flFk&uDoj5ddbhL zO!HEn`Wz?YSsHh}Ps+LOI^QXF)v0U8{7LK@l@liIonqtis%Az}zs9A-emfkhdcG9f ztMY4HvQv-IdAs~cq1H|Blg>-#s%umRO`Nyr{&LOAW1Qw5=Y!r^uKH^8G;YD2?kUxs zlctNl6m_kdx@mpjC##iDZriE;C^cJE^d7UzMxCXU*XLwQ-@g8`kZrdwD>zyN_2d zPwuQkY~DF%bsM)_N+;z`xEoJV_>btqs`}OMC(NfJkzue}? zB_9lpye|_Yl_O&-cDo{+ef9L)EZN#kzP=n~=Vnc1xnXU1W6O?>WvRu^kA0XrM73VO zZtfL+wQBaPCSRUqE?-rof?K96vlC>sni1lCT~v2#sp&yCmjE3R3vR=3bN1{nkp^0e zIgXw%I??qa(QR?%tG7E;%Zd!GIoZ*1kOZlHi*B$iy=VuT;*spM7-YobPOh zY4;ZDUrDUESHxPXJNZLoxqlN!)bi-E0;5|}tJcYH)x5D|Rhi*g_hUKpdS^|NoI6`+ zqs61KLG(RF}JMymQpG!@@*ax%Xw=;m8(U*+KTBqJj; zMrO{10O2)j;x9E+eLAyks)2;m^3OMCEquYV`^5*Jlv}H#O#Zli&$3_&N|!1%Vd`{W zw))mylN&O53rq=qsR=0zYj$G)~@CE%a7csal>MHRiNy&Cs&m| zXRlem&RXTf&DTGUc26uc{qVW#joUw|*mDUbJS^=j6FGuz%sf^ZJ^#hA#hpUtI_uWW z4!;}W&DwUNuI1D_Sd|(z|l)`dqow4tiW?f>ZdlZdq7v-enkZ z|4hP;8($Z@rDmI18StmBH*uL#?#8t4koKzUI$VBv879-8c^!$0jt#GNGPP9xwqeIa zCadPox993&Zh6GSh_A`JQZM}~FlW};7XqAx=4>~sK2CZyZP&9?zm`3F_3NnP=Q}g> z6ckyyIe7Zk7~W`kB-!(-%fxqj8<*nq;$;y>$ z;%{E+5np-mmFOb@3r&~YG}h@#p;d8q7 zkC!|aXaB0&m$r0Tf$^ux)n5ERmbt;cHH>n!PN1 z{Q+YxEBW(F7p`tyfBk111Mi-b`wk||n;_lneL=nFn`ri|mxuNkwC%t2a>EH%9ocEOgfIrw^$ti>0Pqt=&ahi+&Y;)IZ=iIn6GkMy+M{CVqw$?*nVrEl*oQ`z##dsnYobc#8} z@!hLgQrZ4?HgfUd>AF^Tvi45(Xe;Tvq`O!B<+tuEPvO$WE!X{;3p`C%OyCIWkzCuo zJ8wJB$b_M6?+PS2I*9bLV=a?bUhw^CYj6t;xlW|=GSeCc7vne&6KuUCH0vYfelgRl1G zBOBLUUbo%Q?ZcZT2l6Dh`}YTKOH?;!3pZKAb?elnw;vDQ@sqxP(;%^NLgw_`n`>6T zSo7t>Hi_mr5|1i#<_gP3TbnC>o4ccAcl%6bDe?E`+;d7(xtBNfr-hlX6{%g5{4(+V zg?tKA<^EbSlJ9op3a(~@eiR|5{ zgN{5{u%p)N3aeN4Ca-Am_d=RN*K`?m&h54Tm~ieD)1P;-^^fkX$m3=|$Llut!<{3$ zdv@j=^NYBrRX-ldg`G`|jp#_Oyq6jqdH1N(?sR?U_=ks+zkhgY8#5uPlRqt{ z|No}Vxs!c1b8KJpX7X;Od%Jd}cRu-iqpD*0^lxSJ4|;60m}R+a$NTkL)^6;1@$$jr znb&)>TXP%FZ~2lDe|P_je@}na|GGJgXJ3i5e`Q2i-Yz>cub(M0*KVH7cr7`*K>gUI zw>;AY%6qP-Cw)2ieTHx4@?*Py92K~(d-3H0y}lQ7*6}W?zCP3QE)(l=&cof7zRQp7 z?2Vr+Zl9Vb`0nz)4gW9v<^KJ@x7~PiPxt2wx@D)O*2i15pZa;{%!@a7j?@KQzSX($ zRQ5F^wq)yq>er+07Kb$r4t+i1~0S++Jc>kD_v>3ME# z>-LKY+@3t=W!T4QqW>o7l_tdA-`r|@B!+jlf%dl>^Rr5=Py4xlf1w*}pj+b;dUt2n zjcea^vgdyj{rCD^{KNm(=f7XReC?U^UoS7+w9$Bff_eEv_dhR-Zcf>_in%|$&85WK zMxf9R7`)|JehU?$g`iy3Jy!*2bu8%!)_{j&InbU4BT;9Cc+K0D$i_7|EE5$2P zn~e?yy{!wAao+G@Yyb2|>;BZgZ}OJ^xnHHZLg!w1o>Q-gx>oUIPE3Fou%4l6;Z1Hmc z8i7@bl3AX&oqJc@-Tn8L#VQ}R<^St9{pQ%?{K)uXN7%RNwmtoB8bxBZk_+~GT~7~) zjGU>IZp^^uUjAz7)*nol6#hQlW)XhUk;688!;Q#kjk2;$w-`T({C>6SveBCC{>koX zt6IaaOQq)G2Jf3gbi4Dh-lVbEFhQYv_c zb8@Rr_{8e$BKe)`kL4wpXT1^hx_8(mY08f!DZW|FVKAey6^sGxkp1SoCH>k@HOh-*@W23l)kcs3x`L}xLzZuGiiN83lZh2h za;@A2?l-rp^-nvV!1LnBrS&J-PbQoGOb8Lxo?P%ibV*a;rwZS73pPcTSTypfpPDRE zxk*jFN%c*Ejk^CtZPTCnpB8r6geLQb82Q?TB&!GKSv@_s;0}*h+Nt);PdZw=JNeRs z-x;1dyYLSCjL9iev{e@{diZ%>ToPjC3^1!MUPrh34`lW7Zsj>8z>kAIoZs3fVdNxhC@S>O}@9e8TjvdST zJC(&Zt|fVj_-WHwGAZ3Am7P7YdXuv=o%)vEDN1?z@a^IPXOmM_drZ2jzB)|~pKzo~ za&4k&i$-O$-SL3jP7Cs#jxWXa@x8fEg6#i_QbW|7)_mH9p4 z@8-T-+%Nfr|CLX%@vW>+QI&Jm)-M+n7rGYwBv{kZcd~yvcY$G7xw+5e^ApZrd9wM0 zVbPP#k9m(YwR?MHNSG4Gv|LNx^R*5s3Fa2LlUT>uJEM7m;|j)sfJ_t1~uIiPln?wo)-^)>0|fQao72VZ93oY|+vczLhQeXxw#Zri!L-#d4GO*wQeHZw;&;q`rifFGL~&u&`~;HKYH z8n?lK#X{j>t16P00QF>4TTa ztbJN3h3_`aFz2vZWV_n9`i-jDd%ew-=5m^*TYa^qXEi;`c56Fne(~(;ANvJ`9=CdW zztPxyw9hE|jmG1C{c~&Mvwc@xNOW-_ADY^gR(SapFemmF=ZI4qtfZ6=<)yD{{rY zBS=y`cEZI1&s__wc16`M6g^&Wwz6dX(!Gg+YiFG6eSYQEue8U}>|OtK=SX@_Fulbt z|La`G+uNddqC<5y>~To;3sATwoYQpm)XkJk3+rRdD+1qIJ-MZ9^;2)h$EJ=>JvP~Q zQagASemry8ewX`swkm8k;^Sh)PtYw z(R;bFS1_dXtj(AmPV!I~mmXn#<(PTTsQyI0a)(QA#%_qO=YIsazTN)GwIMUP6?W_EpL{}y@Z zMf;q;E*m&aFMJBwk(_r}bPx#)I`v0ka_Oa%_-v9o^y_I;N!bH?=w*J($qUOX?3Sf`j`?X;}8xU0M=YR;n@jDEJI zqWSE(>^r*48`IeNNv1z@M(uXzb80VI8H!dLoLsy_UG?V_k$_99 zwRqMFgtUB9P|>VDxYUNl?rEY&xLl*$sl^l4+pyJ6`70*-%~ZkSr6SMb$4s&^4ZGMU zJ$v7B$YXOgQ~$5Ftj+p6Zf<v`dZ|p72{?lL&hjDej3=zH=@$MjlcI6ndEF8$Jp3gv7NKp3*K@@k#4U zP+W8Csn-FE|1eL}&Oada)Hh=N9@cct{KKrLtP8e&lDo5@hGDyw{Gr%W?i<2?vV7B? ze`xcm^bcL1ENd3jaL(6^KfL{v`G?t`WW59a9j-aWuM_-p;@6~J$x5~vUEvU07pw5_!|&~f8agT#Hyynevy5ZET-^{x5I#+{tm!s}R7^%MWz5Yj1n z*Q6M_vol+GrOw3Z3!P4{Ua@Oa*iNxeUEdE}_*wDd9_QgV>zt<=-s8Wn{rk#RyRT6u zu{IyxH3^o@*Lt{Axia*A)co@+UR_=tHFs^x^uAS(;>uzz~6MEO5{9?jy6>)>SwfS=t65&k#SUA^ zEqkSuV;6I%`*>T5$V;PRVTJwAj3m|^wRd)#rFZz*W7R!B9!%(I(0lw~)twa1XfKD! zOV-GrW^Ra6P8RPud`nZ+hOOs5w`jf6rg*G(KdLH~$Y^huKnpgwHD~m$%4JUee zeJVS+L`%f*W>VAqM?uV4Ru)%zKCGIV(G)phX`1u8SCiPFYr0rJ~4~YC!qSE z&Q^1skl%-dw#u8VsBfp_2TZdx@2vUOzWZup!Tcz;{uRv+EK3dcEaYqC zzq;^4ua!()xcerSQjyOq7f1G4wS5gfzUkmA3$w7b36rmI=4`W?D7(}z>G-Pl4WU`8 z)}gjjas!rc(!P@UrmECxxAWYS??Tfz*1nSY)?_t(@1n4c=2s8jRDZ?vZE@8Sm6hD8 zuC`I1Rvh=Rz2X|=uy!KbD#y%@T`uKoliryu4E5A9j5)3SHJNz=o7V)LuZhft?W_6j z?l$}Lvmp8Id96wgA@jztm`&nBnsS2t7E4xHTw2-B>Ke;uSIU~Q;;Y#5b4Jsj=$Osm zy*PJQ&(zOxLiz{dHctDaMecVVvxe@0pV&`Ux$xatp1Zg2Bb zYxDD4`gDTdyQa+DiB`?46HF>M&Rc$~zJKI}xxp`1ro$4SE!^ynzgWJC&8?@b{n5j~ zwhyN@mq|)gPdKr7Q3rRU&8$@)(-J3e>l7{fT+yN6{$UQ^CJz0%Ms| z8y4FfYce|9^=XF2D;JH`E2Z+&+$(!nQxCXE8U(Pp2p!h=YqHKJL%8yjPJOeLge9aw0VoRiTg_ex76B;47)l=n-xf5XF9 zodp}JgxqdzHE@n)cVF>3abp#i%<_3`y02aq%&JnGvveNs^cB(xo2&S8LeIC#zWTW# zdN0Gb)#3+(Umg80tBP~a`Z%unE2kek|4LM%aD9s2SFLBE>(eA(nXU==D=obsFYWM^ z?3*rMtIS;YHl7XMzM=Ki*)?H%TTNGP-z0qH_6@7AWo6TTm6vU-V!ypAFTH&AT8YZ? zq$hWe#)Xt`HosDB`0CzqyYTnv`&aOL`P4=ft?u`j`D$^H|5wA6+jseE1%CHFeC7C3 z=c~(?YJIJIsqvNdWyDw4%&EU7Z3(N5w2H3{y|rSWT5i~X#k))PY37FiSG~J@pQ`Pm zeY&>m_9@%0->1EIEWyXPfB0acZU6qTo+zHF?{9zQ_ENFKN)V}u2m zDf7#A9NHLJXC^Y+&^#hubka-1^v705^4Bm(KQXk-h&&$GKRwTK?S?&~uhuoW{QP!V z^7gOi>VKYaJx;0BHgTC7lR3v`ov74eKQl@7+0hG+773kSbF1asb*|OX4=et<9D4g~ zk}>xs2AQ}$SH3##Qf4(Wod4W|eZMj@oAsszGM^XASQ=cM$ZafR`_SM_xMh{&*2My^ zWNH`4eLl-)Kj(!;ld;Uvf@zEQubWo%WS-EI4G(w77@aULPCj#|#<;!9Ftb2Xy75HD z%^D%`Eh>Lx4=>AaH&tD_`yq>D!P7bS>g9LI3RbCTu`U+cBpmfnMeDp@ML~$typj)- zZ+7x8`h8*1i)I^(!2i0Am6aFb|37`K&!*nDUq=UK@-ef1Vktlbc_`{=rcU6<^fO7(;T6Ao`)9B*K;EK*ORX4x{e4V`Us+@>gBK57{FZRH6gzkOWO zTla3*CVI_RTkojo{t{`qc`|BJwjP`Nv^+{=_+};B_5I>FQ6|G_*|+%1KCXZ`DUBSV z*=wZp8Y^ul9_DK_FMVa$8hY$a{p5T9Pwr0GyY&CoiGSt0|LPzA_j<#Bwm0>v-|lC; z{;&V$!i>NEsh4~HWm|r2j8px6a4Wmt%>BZCwHLgqdCmpPa3<)gSX@(V2v#^;s8v=c z<@fug*s-gp=iG_Qv0Bx%Yi?p(l3ZF&*3*dXA`@!19?HBZ`|8TMLdG33;)~|Twk*Dz zG4rZSaaj7M!@I0jtu73?{$PdK;}z?U2FA88-evb}1>aS7Q}3K9e=hlFOeyE;E!uWL zBUWi~NoQ}7xzy3U9d-OtNB^!^#$Lcu{n+f3rPJb)&YnxEW~Y{K{GYzzfBMG%;v4>p zZ~Q;~vDvAeg%YVr8NXrD7x;$j=yUCwz^ z;uiaGo2W(m9EWl!Oe1IJ^R)fg`E|X{KRMWWG7Fhv`UAF*&U@bsa(Y~ z4~cD-a*i;LV*DAFxbiAj&*=j)F)Pnc?CoC9VO$XA&{WJc>!8X9OLgaUp9M4u{0#SU ztIql>CiOQcZ`ZqzJ*>L-R5{-mlql|!J~uUqVMZ^*Glhmqjs;wAKNM^^{PS(ab)jun zHuOs^zAf_V)QtyL=ij(*i-_g@CVZrBT7tc|?x$d%pPD(6t6g6npH=3ddiv~c-O`G@ z)|b~W^X@+<^d^vd&aFxrjdN}ug=P!)n?~p8p5C&x>hj9zl8d!E7M}U6D)6dEwy)5( z?_-F}wt?(JPp@k?q4YyQqT zvG)AYzVnAUZRCGh>Tlt>kk41J^upS`Oxy2?TwdGnY}xCy{oA{??nQThu`P@?-B>f?H+It3Jn_D0#Q>N8GlXzS~|_-^|&yZ}ZU`S!Fd(>ZaXXc<=txi+aa@SM&V7 z-M(yxyzj@462Bua_a?3t+;uA_xjEuZmj1#&(=STJIU3h&WnNd-^fF8R(ay;%>%?k5 zyPNDQzi{>5(T{uEA6Lge$P(JSTGOQJ*2`@Yd;QI;zw}$& z_J?JBv1`2e|H`t9>xHHE`lo!+i_G})y4CG{_Td+?^U8Yui7dSMdUoAgiM^}YRdy69 zT%F22bKRaDz5hZMUi{2=+oUR7@SAvpNVs9j4zF8=zb?19*`MEWRnesCdchQXCX?$P zA9lKx-g@ERpZaCn@7aq!`Z66gl{{X~(U;$K;l=rm#4jbAk0pIMx$B~O@nU@eiM`ou ze8p-{cJMXVt-I;8*#5G~FR#N9#y_{MKfObFOYi#&ae{KK?P>Q*dHNPf?OAtJY~xI` zcnj{M^K*Y4TG;j@NAKR*@<}IEE7-&D$z61`ExW*Qa@}Jc*_7Ek%r_MKh)UM9ajW@z z@>QNvldbjBj&c3j!RL2~&#$fI`Ys6>wI^23H+}9|r)LzCF7bXJvwwc?0RX(>#7$IcQID& z+;)KBdKmXSBVqrUoy&V-Pv~9xn3EzdUEyc0wrtMhm(fZW!aObba#(%u-^g#xUQ}8t zo^-2k#yhvzw+^veofc-Rv&8I9+>qU$`tOu)&eL6OGx{`4>cyp`q_PycOzZ0>D<=Ii zb9cVgK4HV&*M%)#RGg}~6m5Ga%xhI#_gwdtRF;!e)~f6kmbKD1RoQlgw(VjoDA>8I z>&s2?k;OyOSFKUvjaILRE?czhWQ)ANFexLq$ zM>K6md{)bE2M_l^{`CbJ&zN-tZ(Xe6(2=x>;!4S08L(h!bNuNoEIS({pR6;veu2$d zxb9x&HcP|Z52G#{#kg(Qt+(oQ+>KPlSBuP3GHMn4U$fV4RqEFJvrO+#+Kt;s))`sJ zrZ_rV$a{wUH8wdGj%gMbmRT!32|iyuZ8W1TriVW zEK{yH%Y62&xe0H$D@)(LO3D-Lh)j~)dR=Dgb(ycFOy9bgq90!K@a#3b`TFaRa^~F^ zCtPOeic43SzrtvV?Dm&i4nI*^$m?ga|MtiC@2wy5?dm;U_M-Hcn}B?->8tM*5-ZlW z7Uk|`J>ntVq5Gpen1{)Qe|7{%K$l-bkOiZZx`M;4$OW0{&VAb$e`P-B;=B;HaO)3C zMlVB-3HGxXGN(Vv&~wh-skChCot{VefJFM}jGx?v72f9GIGE;fZJn^tg6NyM zOzoeF+r2m~ugtZo@@sh4BXjWVjf1)`0=92`9I$=!er~XFFU_wm=A01k)39at#{bm@ zT5k_<>=icJ8Y{7|+U;m;ff$&RSRXcfjwj=92u3U33C ze3f`~t9|vcx))1r8JV{%f281WyTqn^<69=CC;e&;e*{}Rn4X9WDZFJp@V`ThP{OMrmlJoQCGEAJdt&?NIH`ztMd8rp^TGr!hGQct!@i83oGpJVA#ogBh~QL zA{L`NOD8;+W2n8G`c`1U-8XTJjHe#6yja%}dewH1EYp_uyW;M9?#XpskJiZVzn-V! zkf-AC?iE$jh*nse4SFg$(Rw7Zl^Wa-RE zC#Ek8R>o>Go;rQ;=p7}2%?o6izD$_F@YGdU;rpT)EH4uORJ(XI{1IcCl2jz9$oNT^ zago(O4yGq@UB6=4nD2fKco!!*nZdTJzJDgm3yEfikIR?*IJ{~0!t@TNrLROZLYF&K zxE*M`v-;xIKKI%2%#7bVr^R)j-FZXZWQNkY#voq45RtQuca}eHIOou8slDvr8~2a> z+?D}?&mC5(v1@fbb9l$Sp_yCp=H9>)jq?)xxoTE*{0_-FvHab|i^Y5;{!cj89pN)u z=>K=C?EI=OTipi^t`}uI>eKXRF^hIuPWa9C=D!<{PqcwYeyh*-vl2`48J7 zH#6HVUN7OlF`ZRrMMtp$bD;K{jwcRQD`b`Up6p{UeCrUic1OXRmbiC!4G!#8=i~b_ zr|)^?x26VWQP*OHe=W%>>{>!a3g4YOUM3#-!tv^r;gzd)8YS=D7uPYd?VjItvT@$U z=kF_v|E-Z(p)rej=I8Xs4z5XjPwE5}_qI%kbMsiQwB)+LrPmxUc_kjz8T0Xd=~=i= z9ORbI{OgozzrB&^*s{g>NaLON%B%PVuD0(uP}jo!Mm^xwKNB_fs&fGWCtB9Xoaj1e zpeW7G6*-}SxwcthpR2%q#g6xaNBB=P)^#;A7jjp5o@nf{V7Izeq5i;T_elW;2TLQhT})2m)!RHSftGI!;?c^9q+U*O}c zn)}z;p{c4!=!(?FO;vy1PFP@m!~QYH4Qpq{YVN0R8E+diup0_ovQ2%<^2YpVwv@V~ zD;uX*ubSgL!5arXK2*6KkGcG>_0j#Ld~T0`^RXMe)g1$8trVEFV7t%TD9?cNGO=fL znGEYQ+gbK1t2o*&_MDI&<|Fh)@890^NedqH2${_Czw$tU(`)MoK}B9IB`KG!T}l}f zmUEfbSnzz3VLfbfJR+fI+rbL?|8^aY%|CwIiAhaac6ot`U$X>9#)NcDtJ_9fenoLq zOyib)>%8zJiv_QjaYlf`EVjy7g$}wIMyr!&opIOrm#oOkRUkDb?a~4V6W&j2j`Ce| z-1J;Tk@r{2-{=RSjPF7-71!TdyZE_DM)?ztbI1717KG2e-4|Ya%1-zKNXw;ou8w7n zjE20QVw(QOcP)Hr)N?u9VcB!9p3Acr-1r=>@jXVEo%dHvyop_EJV!=A!(~u1y(8_} zToUlTD`UcQwu+3Vk`n1y=J-dn%R@>;;F7}m z*p5u=q+QabTbWC*a<$Hzn{j1#;s*6^dpDf_`t$dxIriGTTrQUtivQ)9XecamoYyXR zNtxqiV9OSM#kcMr{mM(!6FZ*2w8*&dylvM$!3zr*mMg@#{(5sWQy}wYoFMO~JuNHZ z+(OnnYNo!6Urs;(`gRu9p?g@8)=9%kt5#=?8;j z4a;BK`9~a^cd*uKFL7k_YhKlRUFtljEam-F)2gt~P2m26KQ-OU{@Cui&M&*b@%~Jc z7u7c3w^Ea0@Yww*Y%eZj<&2$T z_O^cd*6{XiXY+~nl6*&N#^2!|XC2E7IIzGm^P!k&MAW3xbt%Z*DT$urNCcK}*jx2H%`fI4j%N3CkFsrqn zBQu~OL*Ocx%LRq^iYp#!8l13}ZL3T_w#c!g`Qm+7N*`?`}5PL7pBbb1;u7& zD#l*6Pe?eiNy_D8-QUFRJe$~B{vC*0(P7e&)v}wzB)|87!i*^@nr%0Xdo^W_9es9V z+Ag7AU)m(szDV86zS<&la>*sJotrAAC$BGku|`|r>TQO|ds8R8&pje>k>}|>v2M|b z&VwaxUP?Zz8edj02TLBG;w1atbYTUrM)hrn!_LP&JD#PKbZwQey5_v_dx*pX+p|rF zyx8@o$XIbLUpaFvTbEW}Qco@)clX!n=Pqw|2s1oy*D^sauhsoae&7nGtG2hcy)sj{ zQ5+EaeBmm+mWlUz4bD|_hE(Y{@4R=BDlINt9Kx_1iAY74>lA-VOSf z9P%9>?-8xJciTlj$wTg>_NL#pzp|M$D*ne+)XaXzB$zZYuX4L{*LS(byWU^&cS{I9 z(s)-^ad)w{mb~&2VG%{6Lk}OEl-&_zbV)9(lZX9#vOT|p|9j;Nw|~!Ax?U;T!sFn= zCC50}7y1i#96p$Rs9=KHQtm53rw%)cX)X!jXBSq!`ib$-Ujfs98x3SqJZ3f(1ZZ)v zM<&kJ+uG91veEZHd-Y$&!w35%`09=oeBi$IJzs+FpM&&&<1~v0eKQnOIS)Cm6y%#{ z1PXZnt&MKxIrF7O=Ckjy(@*&^Y2k(GT+B6@hKC)u^(|^&DVc4d!Q0w=K_~nkZGMaa9ZFW*ybKJgw`L03$%Gls+L zoqEonq?+E-OYDwis7s1_dlhnOy;m(Pt~!)7pXg$P3}ae=Ic{OcwU`4(jj%+(y+F5!{d;Qi5s4WKhD+JwA?~^ zx~DVWlaOiUby~kYoq1Dab7c-G@P1x-si64f)*9m=CCzL7-*Z1Qo}TC?X{ydt-)P-w zH~GlBEN9`e>#vr6pP=$}vfFE+A5z5=Ov3)#O4uE{pTAH&XOh+fmP&973))GU{ zzW?k2-s~J1?^7)Q8Zt0k-i2?clpO^dPEe1)dwy>2ccaPf9t|u`Lf=$v5`Trx|?fiXOJKp}E2*Z=j?Xdwp=er(Q3fky5iMxDQ z#8IcwG~MOHCXPClrf`=J$%1=cEqh=pxaVEl-XF6xs-0Qv3lAIqS?RG?Q|n&QuCILMd|xq$G(3s*V^~KZR3w=+^as$Sn)5{sIFmu z@j)q@XHBI_E0%K2Xxm>NSm1NC|IP>gKg}HfUbM~pp)SrE@+aN=kFdSi!FZN4>Uj~Z z^SiFZyMCC-@lUPkfAGimc{BRwul~Vru5(1+<=K3#x|eNEe@^xOKUBXv@Zf)r%Kc@J z+kfz~@`SW$CFl7h@-4h;IJI!9<=q0KV3!453Y{iNdV)J#C-}_jc*A~Xtx@ljMCXuc zi#9FP@(zuhb*gP;&W=-VD|Bo*^NJnKPAh!NQPDi@HZevieP&c`L4N7Iro8d~otjil9&7=9N0(OO~xXqij^EG(+#pU(HhS z*@~NtT@Adq%+d||sWd}*lX^$Ox(xS>>YJS>bL3|0H?b;3Xf!bi>IgY5AhQEDjR49^|fhoxwNl=k4aw ze^vTUj+M0wQp183E?jvt_o|kFS-Hu%O%2=pH$B|Kk?7H0zuJDo-Til-=jJKIP0l@d zZH826b+gOz5Z&n5*j-YJx2G*wwQlX*+iq`TuI^K-kKM4imnHVT_vJ&4+8bML>@fe` z6twH6wBQCF#kEN{PhILgecJ1^w^`Vl$Ve3z*&vw-ZrtnEX21Jjm7(UyvV8x#quwru zPn};rRHe8X~~vVTNW+Z zvS^3dvZc(5I}hG|_0_!M?^o-UA624#Prp8QGg3C^^Uv9*YTq_}ow3T)^=ax+>FUO^ z$+OnV&YoTSRW*%met99{C6G>;`owPOe=*B}DPaL0ozg_dyXalWt&v)e&Kcgch)~DS2-+~B&9@I8q9oiphP+}?CJ!ItA?Lc zCiXI|brf1QcZsK1^ZuaoN@qN44jE*01pAdfoptq!C9 zul62oWXqqq-_T)B@T$dL0)9Rl#220DsIThYuKK|G`0apeanHW9)|Q@CayAYV{OY}; z@7K8%E0#4JE8eXW@j6%d?xtmHT5ipM#PYa**&`?UMBTthRj0ajYg4rMY?*h3buX{> z*G7wz5rJa9(cK4H8}i;SCZa#ydsedmp6aMFT#KduRupOS91*>P0;+LE&i zO*7N}TTEJXaf68j?~6ZmilS95@6WuQf2hgh)tudqE?xEtzZ!XVHD1a6#OA%GJ3H~+ zmV-L$XKtKvnmN}g{Z;s?XyLuT{CW@Tmi=A3@p^Pgs`JeKTa`V!JGZY(otV4&(glh5 zx4DZx-rlzPj`$a^-8*hun@KMViVWTVP3)Kkclnl6VTw9(Cmalac3pb&)tq(v1*5xf zvIS+Ia$GYF{BFwfC&h8e{g`OJ)PK1qEmA5qwF`ExSiJG#?XX>o?`gM+Cw4z2dyxn|$IV_^>SbwakaiFE3^M~Jis zp5f?Kja$+$SlcWiXO{ekp>6vd>8f0V6TQoJEnT;_sjTNo=g!L+mjXN;Z0(zFxRr(e zitFRJk@l*$aGOte8Qb26WjEyZvh#*p+}hK-rPb&Mhg6oOVqf3I3A0yT_PnQ6yVy%I z(^uKpWRju7U6ebRgC!7 z#A}x6N2W+;WEzU@dZ(=%ogw>BMEWNCp6qj7&jN0y`Dk0M4iuYIur;DRX~~B9e}4%n z_h>$ql+*1`oIT}5P)qB_U;F)+mag9rEV(da!3sgyFAqbrWXwvm!+5qFel%CtZDvG7 zmCo(9V@n?XV*DPJzawZx$m9UG?W(i8GQ1~jD1G~7S>-jq?3Sm^ji%*u3XC5ASaQ4Q zs>AQK)17ae;1Kpc-@A3WQD)Vx2J7|w8JagQbfma_->Iz1;Vo=dEc5p3#@ws23v(tM zc&0bSPU2SX%e1vJ8S2Mux2DaS8DV93yzkVKoVN|TH-sl>hR=%BTg+`*EO}^BOK$G! zz57-jebu)iDd4~}J(1tjK19Y>Bv=@4w^!eE;$nRTi}D%w)a<9K?mOmsPCd$;kQ}Da zE3zR@x?|nOX=nYX_@7BV^g_a9a?1Q&Q5hVC|WY<`KJb*g}hNsE^WEG=IWljr3bBSPu@;l;#nD19XYDP7sH2&QmC*}WAC^>K^sPSQcvrAMQT0%2ZPCl~k#z=4x+iVdW&|+2 z*`mZEzwpm`mAI+Wmgi>sJ#Rkbv%S^D;{3ep|GlmzUNZFF^U3bW?FH2@p0VUNvmO1p z>i?msmlK{8{@#20aB$Q~g?BG~$~7_t&wOY-tXI8Pc+#gG98V{;IBNE2OK_b3xYgvj z)XY`8%+^P|DF5=_Dn#AdE=X%_8_zfMqS_9JN72HbS%sZGSotR`1Zou>0Ph@8|`(e9A_LS=X9hIqk z+@}5|BhK5Vcg0fb%*(T)`#K> z_vZPBqNVn5#Y*i_X?pJRVF`zvxZ`pTzC((R4dd|(Nw=%nb+WTp zPcDC@^*L+JMAM6b_DKf|*0SAi-EFe1^=C-gw2bYchqWb6I_`dc^RMg`sn44mjztwN zX0Vig*uuzT$aqQ3LCW-+UI^bNzTRBnm2YRP-zclJb@JS1gXRDA=SW#kpDVt}<%{z2 zW9N=fyuz6ye#qyy__1jY&FcgAopZO|wcyvZQ)St2n93F&(_8c}Sv>gqM(=>jH_F_w#_%!mHr}Xd1#Si%;ig-Z!2OxDe1_3FjbZ{ zWvh2xx$$+zspRXARc0N}kXx`I@G#RS>6n&QscjSV6FW~#dsM`$?XpT}wMmSA(AFJ} zhmBn(8y}TXYO{a#Kw@gGd$RckY126hY5O+T%CMM}3Ey75arRAJDYgxv$-i%`mD=5V zcilsmN!@o3e#?I2H_N+#Ew!+ZW81^BskPyU=f2Sstnp_l?|vXBct^X5St?E?NWAlk zU)g+)ch_$)S4f_{C}LnArx!H6`{e^i-tP~tn(%hrvK2Xy{vo`jiLw7_&BlV79s|vZ z#SV-9HLvxR-y+v7$h7v3CyuB27Xad7evb_I^l>^}tE zA1PmbC$_J^;QAE~%Y|S4@2kIJzxTmQB0cr(-(?P|_m>A(F)jaZVJ$v8+5XU!BYhhS zC8B>xB!(r;pEz@!Y>xZvuge%5m#$doR?|3DZN1{z1`ct)XNMH$<^0_-S3_9-$&Qwe zh3iv(-P^5f@k&bS$X@UH<$oS=IX1LEpSSrUG|^C&ml=$`wZzZUO!{;1?m3Y;uIf70Be$-;*`nXAtkF|r9?c~Bv< z_N@5sLvu6SE16_BT+MwnUr0+@&}h;A7OvXX7K0Fz_}J~SHCC&IcSc#?+CJrVyjxd) z%aZ%+KTe)3(dxOjF-%$0&O_+@+_#TbUv{(N+?H>+cJb>sx(VMLt8;(eYMN2=&CGJ)^BAMeHOozxee~R!+Uaxd*X_I;SJjR$>?(S>RWair(Gxz*Udy}j`~Ht& zw{LG6`6zf_+K`OkE9f5xi+ zihtvbuKw?M6>oU;|BSlzvtGq7|7Gs;)qdf9|A)FOuiswwY5v9c&p-6}{1@sw^&>X( z_{9&}KT3Dpt-j##@b`ykF8c*S_D6dj1F{6{|bPr0UX&HJCowO8kZ+WIy1 zQzEiYOnCURO;Am+O5yH=22aj5Ms?0MCUwpj6-Tb6%6E(p-7$Wk|A8}c_k-Xcs}Cwi zdpSO7S9mP=^L->!py1LPi`MzA(dU*(`0CDF`PAd2|Md>(KbMa1?sBv~y`Z#8uK8iu zBSW>M<&HXMK9uj(o?^bjWah1>(Pu93D$9CTC4?}RpDA8u{oT@QWxmmK&6lT|gO+l? zn4a|K`pun>?)$$iZ#EIXutAWILE)cmJ=5P76S+%qSI#c1&^*d2GT*mQ@Mw8p4cAfm z;276Ox=SidkM@eJU%sRL5wFPqdFPAe654GmXVz5hy2QHp`^NT^i+ktYI?nL(ou9)) zr^vYrWD~BRbXvaB;3tE%zWd#!@7fdRDNl&K&1*UL!MVV4eZ|u|U1uLQXgkQb%}l-Y z&bljwzY{ICN_)ROR@&s1x@qC8a*kvE@0&Q=6P21v*(37&UR{b^>Ag5gJ47v7`%2ZM zm8Nx5C$sG?znE`-)B4UmO)u5P$sB64IqRlOZrjjZ7swJb#f!<0CHM@Bd2*xIQ;%8q zIHi`##2QTPS`oW0<2#SfYZmuqzno8;2>F_I-pYU3E!N5qy|v4@R?8mXV%9Xx49}X> zcXU_6u0B)eNL4t-CVNfW{BR#pvff$XC@j1rWFOw3_0X_?fm;j%Qn6bW>5WR zEPu9C_|lz9PsK|YLuww$Zse%?cp_p!{=W&+=Urj_%y*#Ga^=e1LBWe}2huxUB>9QTB}++~}&xppN^jC-<+ ze~Qob%dGEYZdM=i=gw{|FFTy{aP=kq_bnp*1xMr}l>P=)%nw|4!btT=vfIkwX;#jC zDN~9fPZjsvo0_T@`RtOY*{Mk>k(1OXmml;rF`u-=`+d3mlARit1K)o*SR=Xppi`H$ z?DPv)-WJzHANl3dvfkO+*Ff0U_=SqZG4;b7cC1D}O-?+MlQ{o5L2Eu=`RADh4d3qSDO#}N03`yp=}L;k0uAGG(e)E)P4>aP&2In@2oJC5o9!_ybfhCdLf<4XGw zTxg?zTyqbT_y@0;BjL%M>yLTGHJjGxntdvL@mSj6g#Y3EkC#6R)v3LEDqSdlzvugh zs+tz_1o8YM(<_Dl&6wZ1{`1-&eEG+c@ATI{W&AT|`y=x|In$2ZzG)zr^0LNS`e^wE z&l>gF2hXRr{;}ECGylBb)7=rg_s^Pr;=YkqXL$RRe&X#POW(xoYmYstpML#=_RZcu zT4mPzXVuP+KV0==>l@EH+v>*p_PvMmQ{I1^eZ#Ph`?v7@<95%tZ(9H3ZC^@VyK-y& zb;G9nPft9%U+nX|-1^z)YMItQ4U1>oe;#pMzF^Kl`I4MR{MN62^2_x832pCxwDymn zyR`iaj!({g-WAIqtKECLqy4*u+_QGs_Md{si~n#Q&;Fx%-1<-EarQrv$JPH>9-sb) z_1ur{8jkwT^bga2R{Z1o{z3lp%|E6)7u?}-UKt;L;Q0sE6*(fl_vas;K4q8SsfXIP z7+1V0(`c*@)H-RX6!Po@-_(O4$DMwdFBLgawx;3#g;Os}a#%(8wdHGwF8TU4n`P&> z=j~w;^ZGk{^s;`waPYfl+Vp(E?uAaD*WpFnPFEI+ZsADw;VEjU9|6x*YAaAi}cJjJffLo z8eg_4uqsSl${M*QclVFE3qCO)kmZm3U}yetXa0~6WKg4`^m zO?+*cwdEE*crw+bdwOU<0oT;3vayz0>JCRXp5uWtJf}oXXj*K@eWd<^zcEYEA(b=BWQ}LK?#Y#0v^6mMV%8kbEs0KB zaFg&qY&J0$FEPh|a7q^$eN3p;P^lO0vof^W}M`0}9M;(G4v+?q!&^4{bH0BQ zd_noVO-H50-2>Jq4|tn>&^q!^U+RsLa72-WjwO%T;cISs+GoBN=DJMgIk#!+#McHP z$8Nnai(KWKkYMfcBEOg zI{5kWq$I{nn935An4P_R?OOj$TT4~LZr(U1x#_IcYMZ6CH_}Acz2nW_E4qFU|DLR9 z<3jB-w|1nhQk-Dg**Hf~JVmx~&GxOP+qahPUAs2Bu(>z4;)L1Ou*#a+8_!H^_L}eE z4cl|g?!&na_g|gdy!CCEzvc0=)#Yk=EjLb^wTI5RYxd0TPRrL$f%q)%I|A1hT)2=h z5FFFsnMcOxs;@#@*_2ROQ-b{&vk`L&>{;)wOF7ZN;my%5-^0yQj~!*B>%^YN`<)*B*LGI>7g5)KlLT;rE#Ke=^&mZQsmyYX0gy%+odY zw`5OUT(J0)-kYU=-kz#1*#1enBBD}WF0{{a`6ug&n2X;HyiZuW9kTdxc}2~Z zbFA#=C`GrQ7ruLg$^EGXU&3m;yBpK2*aQ0?m|Zg4pjTsZ?URM*ma>C4A1Q|0!uloPp?u^ViSuIVi)me;6PivMNI6KdBMcuL*C z@u$eADd!hB{FI&&7_;(^?70xT_OPz)n(-6P|CwC#l>5`v^$!%E#(yw5s;~9Gar@Nu z50$(AFJh`$sI=(S0Y$Cj6IV3_hlp}(>IKE_@G4CfKB~K_P4<<*%jo6J+-V0`4p)aA zOi|vdJm(gFaL*O*g(7ofmP@Xj6yWtEB!l%}ZiU&liT7LeCLihBZM!AP$}Lb*_WQ@& zP2scVh|Y=Rx8yo}&ZD@c;F#QvjVle_^l3(3l1*KhyfN9c@1&~n()wo}{cjrQ&K8S* zqp*7a{Hc3a1~|=C{+-dSU{amw7q(^kw*xz8bEUTb)w<9mXcva%$>D@>1ci2z+LF#r7u-er~YFTt`(}gZIKis_)K=DWz~Z$ z?T@}@?mT+`-X2j{cfq`4fo$WXTQ+anvcvrP6Lz%jyb^tI?LD!5XT&lVE?(Sr{lV52 zm0Ptf*BQNa72mv{!8h^HnXVrT9z?x9+?VxAK(%MZ170S>Qc2B<{WRq{6g{1KHUjl*;b1$*sgNn@DJu_h1aG*`VQ|s7Px;%;0X|8T=+HD#_qyi zp%(&nQpSgE#PXL&8u#!yAL+j-bX+nv?2+G_O^SWSi`E>udn4IdCS4@5lmE8RaY@Ut zN5^wJANPo9e-w;rabr;hexk)w)a5EY5j!C@teX75wn^>7_-#mgQa%+_7+* zbY6|fH2KCyQTKSwZMh`d6&6dob#==7#`npwmcPpL@ZZa@DJWCD%b$DR51u!RfA~u9 z9{r(shiT@P8j-_mMeZwDsyLcXwRin#Dq`>d(W)zc*^X(Ct~Nnz6nZ{?OY33@QLAO0H_omyocT!PMz{0IeQfqeSi88d1;x00tm-DEiDo(8eHTvzIjjmqEK zdRLLnY17$OulgwaFYI63zkWQMGHb4H+H}*~`~~xh&z-4$X8Zn3%D4IT|9{Qy$h$b7 z?Izn>$tMOz_huYy+j(A6cK*y-*87hVAN8L-v+n&Y_Oz3Rv8zLPYj1CTCdqq>@pQW) zzeMb@6|=U-Z?ZXGRI&15^}_A4Z>Kyeu}WufH9LE2UM6EX1H;PVWiLGrB)WuEHt#Nd zca87*TZI&pPxpfsT`2P^Y37}@C1y(9W``mn`CS+5g2Pu>NVyl?$`cU{ZdO|{HzdnA>dmY^ zzW$37n$(`o32~CtmF`()V&PRCFLG_O@Hz#%Wzph`x5im5=#rX0Me95Nn^{-Bl*?2| zo;dky&5AWu4vqy2b~3nq-@WWAo8ir+Mw(0KX1E!hS~PL`7YDD^@#13NIWipULpEEu zJ(c^tKugE$_w5P08{h8a%#YcgoNZSA%Cc44RrK0H&Zg$9N;mIVxON-XqNsUHYixUl2RZWzi|G-Lrw{@ISb@rJB_64=6$M3$} zR`%K@#CHDb1rut!vzPc9?c2(AHAm3U^C<7Zc_;n$2)_4g{;;R<UW%{O>Ezy=T;8?n)6#`!=4gL9bfE0z%fv%3@-Dtl*#7p-pO5q3Kb)7gaqpdT$?Uj-_1=EL#mPUc`{FOnpL<}v_OAwx zZT&on_Dkv#*;D>3>ES>1L({7FX1c*|3EqS9%LE1Gml`G>f4OFZ@Tnc1Kb}9?@wvqD z#!8=mi_X-me4ak#kLZufUsiU+Pkp>j^XH7?rN3g1><@Tk{_y@Heb+zR=9n*k^8Ubn z@9!>uq*eEE)OYR^{rJ1+9<%CxuK$W_JAWvv{$u%9zD4hm|I!*E;KOs^!d&i93%KxHEB+JCLYJBov2$z(ym2F!;KkvY_2lcGKP5)Hh zVEu7=gZ2mc!_yvyCzwC{&+%L4pZ1OGAL?8G^49Tgs9S1OUY^e8yB1aU-jY__nYNZb9B*SBR}*%oF0s=U`QbJgt%#U!tV*F=~CyC*i8 zA4)O4>v!`_%T3Rf4`TCK{`cIA2>8JMWAPE=+X1F*JqOvooq2M`^86m-bc_4@>i=;q zXxbf_QgHd;S{Uo#YHn6mZkx#~*`coVY0Dd_rLzwiJb9I<@ulj(Vvhh02{}`ntA({o z|2XW3UE7oOb=%$fnX|8nKK-BYR6DforQY?4H=ckFY0kKsSP?J7wS_(7`r*9uCcR>N zf@P&bZ<{OiEa8ghh<9__pXs5zYN?^>qyt;FL>q~?3A;{LV^cMl^50S0dE2)4o$D61 zo^YJ#IOj;~n@_gjGn${TjeU4?vD&xkYgZchm@Snrx_tSISRDV+bz3`*+HTG~y*&Kb z-ut1|cb2`%^uOWSw)5bU>M#x4J5euKwI(h6A2LJs>bZjlTbhLqH-Fr=t)Ym|ct&c4 z#XIJ-h#$Y78r+c=3*rA>p>W&qPVm9U_r7hraC~a|iGHP12Zavb{{P?3ZFTz6tZ47V zEfG4w)u#^poAf2{=ZbQlOJ|l&l;XV9-JT$yImuyKj#`;qLRZc^jfP{HH>Np{5_(8^9(rJsomANAbsSa7{oe)C4>+|k#;GY(gt+Trk7q*Bjs{YAFvzof5d z=wI6%5%;U*io%}<;ya3Y$_?(fTkrT|J?G8T8HJ+PAAPh+y}gy?=H)MEg|!=5=O}T$ zoMF~@bn!>{#&E{`vH{YbKe=>cqP`=sgHIv`SrVFdTFWp`hReT`B?MeUB@4>#MrB|!tYu{g8 z9e#Ds--FZR*#rE~@0!pr@A1)D{N6!(?~lr&{}(+vuJ`3peC&$@yY>FC{0}=&dv9`| z{nTypA`jAk?6mo}Tjagh?Rt;t|EE0K9~063f13Dz<)i<1O=yqz__)vJUr^S6b*FmO zt?}N^`JWukkKk&&-NEI#P$qA2%*v;py7PZ~-nI%_Dxvt7>q)D3my@Q6xY(n=Om&8v zCUmWcSSlp`?1IKrx7`8mOO5h+IApZ98m;UN&fH@&Wwpt{)}s~SQtDo(Rm5jyY_hqh z(k~h`TWRY`rq5}WbJY5$2Kj_%ws{#ZjZ$?rRaV@7C2PqH)uTC6pK+Xu(tNdKXRG%YW;3$+BcAJ}LeE$LhLw)ccQbK3#EBwyV!w ztuGVlrIGRZD~rv<3=j1wX2sh>t8Pet`s&)WuyYQ_2cOWP$DTCd#VTQ&b(=Zn~5 zOV*sT3ER4=#nbahKF7`V^^>+;(Mg;9@x-Y{$yA+#^Hw>&JRxT*^m>7i`Oc*CEta8I zuU`~d*K@V9BrkbG_ua)iu8Lo{?p|&E^+KBe^7+wfznKJWMLzrpf4%JR+7DG<3oJ7B zg|BQhu-Z6xg9&TXRjcY*Gg4%~fBW)cYGiOImOpIq2gD=YPOMy&7ydF#?Pk@^i^7+f*Q5l7RvAl~6>#i^<_bTbkCb96{bIDb#eTjr0kh|>M%pm z68#+O8TV3kI^XU&`-4M$(&0%jE?yOS(d~9i=}pJplaFIA&+Cxm*t|dQQguZ%=iA(` zu5GO$mx6WIPCKAC&t#iW%@%K$x2+RvnWgA6 z{pQmQfo*yW51*d7_OIm86^X{zCZ4&}xGarLY@x}{lr$#=H$m(QG&+X}Nb{7}+*u%vCCW&1*MHB=X_Gd8b#MF*;Z=&5eKA{Wed`~_d{z$ zf;|f>YV$en{?I7+R_`zF6`Xf1%d@>__ncFerKMVT{TxmO ze=S{Sdx_iY>oHdESu+!CmFG{`aNPRa-S9RRlf^UM`e;o{6{(y%LG^zQx0`dE_Ekw~ z`?9_WPiK~DlQ+kiwYFw#VYBPKrsNSZV`kN%O>ffH1!}Jq4hfukEqe>&`OF={@|Ozs zZ^^mxg74OnhrBhRhZ$>po7v||ZA;v3<7O&z)LE+Up<(Z>CEqOOUC1!bO>DffE|5L< zYKC;-^TRsR-%Sxb{$ZM%{G#0AraGlgl4$ z{IV+;^|MO&@2;K{zc`Ld;2GcFMUIOV_8pFN)d`OjFgep zs-}5YUhJ@NZJ8$|UhQz$QM2#i4w3#Y^^Nmo4>`|a=2LYN$U9xsxcZA>ll9--HHQ}Q ztiKy<@onqkFAe^`o3`po=bR6E$&x?Y*`p?;YF7C<6CtLlcIP6!X6@eSb-sYh?8w>P z0Lf^x-lG3|?Ibe0zkOwO_Gz+pJ=F7Mo6NN7e#dVdiwqAJuU;{|y{nPivHc`l{Dpf@ zZ6-+H|2R#}B;~VhT8>VEDcj$=dvBg@o78`&DnCADeWjSU)!B-VEk^zI+tc$ayelr; z>`J{@_IZN%ch^P()dlbG34J*FEc;~9jig|;ozF~DKP}nLtD7qsbSOxO_Y2$Zn!Cqx zdr#g!8~V|Fm*=_)_CHC9cViBH>)9{3WT7W7TS}7Pa=&j!O(Scjdt3-K+0i=n*CF3W zfh{$k!+HbWEm3_|)z$(;99)<^IlkcvmI!L1*318`5><4=s)9TD<4Z z#T?E%(j4#jB=QffJnwZb@0t3Fi^s&5?RXeHNm$apszW_XE$?xcZ?5lbj>(hy?r7YX zTXMhUN`B?8W9nS57tj2e>9b$(_|z8VmdfO(U>76BeX< z%)2$=XzA=T9pe20Q&XI7pWU4&UEj4}w(OrxOJX)nOjnORvU0A{{XL9n=?T@_W}9u> z{^M6k?wg2+rH1N-b0mVRylcXz8R&JgTuy8ak4~u$+Y^_}CVSKJj;V_H(G#ZXDywgt z5t!Y)@YvixZLe$Y$vom+_}5;cB01yBYdNutlQ#I~op*Us_OY|;^^>cbMVEHGnP~7) zif@8bxAJG7i5JvP1_t)mlr(G*wG4RT!1FIHS(4* z`W|8Q{(*XHz5C8=J%`&SBGHoWa?!utk-L*Pl6T8{H{}}xfy?Sf4 zMCByMc!xlDpCZA{Oi|4>QKt*8TQ10&7Bc$pBz`prPM^5{EmPNH$@>SMGVcEF z*Ij7-TIXd!J?G+meIJ=WKR$j@RbIxT|6=-&&ih{%Uy(IF&N7W7>#=11Gs%2M&8^8= zxvrwQaNsqlNUkNvS@(LeLrJDj4AG;a$&yHP{BKy+(XvU#St!P;N%Fz?h~5Oe17t`5#- z-O%K1es3(AA4y$KoBU+rL%%YGlFjEE4iyBp+_mpAy49+=McQ-=J9nmh*rmEP%b9Pu zu=73%_VL-af9=Kz;)^-^3w#8sp` zCA4H8iWW~Pw0V?}wP$bEvB%0kRvf%yXp@$;@TZ##lb+Gv)cLOSe$P31QL1j;jw6>3 zYTD?QNPL}qX2zb5@;4jb{0v??-SSl$>!GV#jBh*>*nBQ!(JSo?lefFM7OU@$wBl zej7~Z9doN*+jg< z*7uw;!Ed)Uy^Bs4{|?lC`*dgcv?m`=Gks32yeGQM_e@;V$vu5fx3@j@J(lzM`pY}h z7hFhP_F3!L1?iqo+A9`ZpK!Z@ZWedY<7Kl20?k8Bj#d2_4A-MlS~Q?EJM_IkcMz2df-Tp8onM>@Bk zoNa!i{c-kj^BLFk7tPt%n)xNyU1rsmnSWU3ZJv>{G3kcI<>%aM6AI3ioZo49->AI* z{U@&9a_hgmw?5Lh`N*u@-_&=$t(>!M*~V)^@p)bHnR<&WTQ)Ci`kDS%FcY|}C zeUC2Z*{-~&#Xovg-)D=?C~n_S<1|Cx=^JO5AB|qeqw}ltO_O&K+q6F(&i~ic>6ETJ zH`}o3>;I;&`_KP=uU|R;x2W~M^*24_51ci4rro9NrnkjVcZ-4NTjL*V1eN0tNpjzH z7TaYdeD{gOqB;``$EiFGSsjN{-|Y8d3_05Bv{XP?gg1Dq(wRUnnTl6AHl=3stZMl7 z=Rf#q^Y6f+;v+_9YJ|^!nWd6*HRjOTvYIPBE3WmYa>i(;_GHQ=OZ5k(G9A+twp`=q zw6#e1nO3mOx7qp0v-1sH*cLJVw#_u$a=>ZIsk-e?70%V17FIl);t|TTa+cy%gC&tX znP$$bj@m4}=Xjk-`V!OZb*$Td+VyW1+Yu`kTkKOXIj4)~_0b5eZ4p@=%BM{3CApPy zFOF&|O4VGZu{~*8(d_00mS(do+fMp4vBkWY;2MxC!*;qgCvJ}178^kq0?>>X!$lDL~Q z(tnq1(9S<>^3;!A_;Rkm<&Ug$l8>&xQRo&Gx3ynB{>iQBZ$dU7_bOP;ZsBzz*EeJ3 zr|6@H4_E~*shBxeFKxNB@zl9}3gNlzJ3r6aJ=3dMOxW0W>C?M=v zS!v$8TlAL;uAj~R=xf$W{=Vy6&r41T_Jqpq^V_p;PK|f<vnp zY)kUBquKTnok`Vz}GHLri>A7;&&!ZYpM>~-?fCuyh8ygS`epk|`;w@UUF*Jg!3fhW0s zM&%U-XZx!5KfNzlzhPA|$4TSX4-c9>+4H^fKN#-G^xb!|t7X;hw!<;epB|=}1m|Y2 z__1s1os~a?m3M9qwsQUvEw)MZn$U^qS89ukZZ2E;IrrvIo!RHL*=+OEo&7f*%)I=$ zSK9r&V~uffiu=d4D$U22nExoabTInT(-7D!2ZfRa*yuUtn=I-duN|@yfgd% zs$%XB$4h2^{Jne&Q=HuY+$@v2|C46*e0wi>!Yx7j^v~aan(i}!#zv3c&F1_h$iT4P z4&NA)4cTK%&`p_9oHZfGYyYLKSJ(AtVqt1IaL9~l;~|bj0kcV|uN^8nEqW|?jx@Ud zo*=%y?5gb!spZ>*)idv^*j`do&6Bm>nwj&8ExCk6`i+{e@bcUk^UPbvN^e_a&c2|Q zds(|w`1$P0{Q2K1wAZQ#)$O1AJ?-9^|NsBKpDDQh&yUU18BMwiEMI-tUT2nn;@SH@ z9FKS{zkT2Ilii-}gYVC8%l>@OwcpoUKjm)yq{;sy%l1D$US1el_TTmJ{$Gad_qE(@ z_o=t9ociu~TUibFxx4-{?04<$q13cy50B@pb#o?q->0p?5>lOQo0P z`PA>OY)K14tQ==ltIxP)7AtrwdMR7;-r4+LS6l`p<=*2?$DMs&hN#@SBJJt5@Y&Nz;Wn&QpVj=hS4o8=tY+^$Sn*_w zAfHOproj&_rE9UCb(w4ki6q&7uI-8lf!i} z-?HFKyZK~0mrP;0E_cbr;lZ*Xletf~)J5}2t#Z0)nw;&s=Gpg;cFsvb%RTkv>(#$5 zofvV-aHz2HnoVFb^6pLU;OCMlICi^ID|JG;irEFL z=2H(j+k+GvQzvf}sHg~%2-ak}?0)B3!G>bC)3NM3S)~+u=kwl@<$bKGwffPShNP{^ zj*XYk&8ag>3e&8AYqn^jV-VNuzUm!E&K~CZVfQKc#(W?7Ui-8;8!pE@-(p@8xw~=a zW0AL)DsM$T6B3AHc6gc<>BXq&e{?PXtc;|0TdmeyXw%U=zI9Se_o!QB)fgHu>Z7u^IiWRJDFY_cK68U6F<@# z%j17b=$>^ryQ*oopV{d)DGkHCS(-QgY0Bj=02zl&Xr#M`Q+M(-lZ}}tV?B%?%ia$_OSrpYmSF` zvg(Ci$764(+S{z_{AzWnD22W3)ejZ9>mQqLEa()A%{d|&dq*ixbcT7~GUbUJb03>P}p7-F{=v!0H&lO>*mN#0*%n536i7AkBo z5iWgp@x&V8vOl7o&pWx-sQrq((hlrDl*hccS&s16#2TqX4Uyg0&fj0pYfdBr84W|GP`o);F-}+ zS?(+}xEgdfpu%ms$LizD%a1M&Zva((qbM&;DaC-<(|u%5N(%H*B> zH=>WIeojuR>E0BU7ics$?dHnGOqV#7)%Bmmy}L8{Y}8-L)msx1)UHo^$0*r*_0z6Z z2be2<8M3tpE%#x*KE1?z%Fh2AL!<5s%(+u?B~?^?qF36&%B3Nf9w~6Ue&o>l72Z2% zw<`Nh{@B~Q71;T>ujuw4Ztq(ech}-VMChBKV~OwHWf!b{n2^}b6!x!^xWO}l>iIBt;XS`%2^Bns^=wZ zrk&o*wEykH-Q3lI&9ysb|NXnFzQKN8*qit7AN3y>{d!KAdwzEz%inK*46bc>da*6H zMcL3UwnmT3r0;-mL2OI7**=HI23xu{tk37?$t3S)_>{l;_07IR{o#hv(i;SHclg%^ zn+SxSczRnwll#ceb)Pf)cy4Oc`z3m8&^LUu)j)@%XMqhj)6WQw7%oRqn;i2^vP;9_ zTvhKM->JW0r@n)b=86C86OR>k9~Ww6`e4%@IX|#oZkkAK)|RPnIjf&Z*|}cx3BPvc zwy1ruQvcEXbv7bV*|XPdy?5ZV#_9MwlegZ;)}5ARkvr?q)2A7d$JaeunaHwhcddx% zY@2st`CGs9^j$QYs=F`izOmPm*P^nY<8|xnGS&RMzw6v$?lqlv_3FOFGj`2srdM`c z`7C!nc?DO@p*eq*XH*L&t$f~C_DHn%{KBlS2G4pE_i_I|x9_i^<=4q8cuw>$Uh(XT zLvOkScgB{DWKHhbQe*KK*U)m-gHl{cmFm#ozAkHvY9?(#A`^{kINj-1M4% z|M-g??H>iwOpZu$dhWCJdH-LbT7IGXyoKU*U5nFS8v0-6d4A$86L0B6wqH!oYg&u{ zwH4ocGUxrJ`AazOd$MRtX4;?s@o8eQ$opqm`q#5|$iIJh+qLTG-yf`^hT*yU_jIv; zSYY%&)TZTo(59b1tnRsM<(>KFQsF1M44zuiY|1l*RnX`o9~T1!g4v&6fFHT61O5 zL|GoC`6rIcHXT&?BrWs%?4=Hyuqh{wTOM1yXX&J`VuJfsjM}7GeW!ZAJgMVV7cD>k zz+$mhKW*1gFRrc05$_IpuQ-4Fvrm}Ssx4>ZI`4;ZMn5R;s9>tn{`At;T+w#=p2AHp zwr)@lpJJG~E@eTly6^s|vnhQObtF%}dGeLz?)@bnHPTQ0=U18BxP9%luM%3>lKW>p z*Rgq5{O)#2gt<-Qtpk%1*GRcN;Q9J8ZCcU%>iOPtYJZ|BQ4y(r{Vl1qv-*? z;*pQ^lpC~7UV7_P=wAx7Z#S!nTNvebj{D|6J=Mt-w{>gc?s&DdPyIIUNbt1anua>{ ziFpc(j@1f99$VLP{l&z+s?+>tUdRjjaPPq#Q=d7$k5@(dm@>yJO%9jnj8}UQzCo(q ztNf?2^pv(L=__ovS)^y^*Y!^@+PG`Re*fF=zD;3$@5l5})3qx5{Lb4&g?ekx9<}V+ z+J0N)()DcBD~TrZdE8evFjhRUu?gdOvDVL_)r|AP#zhY1mP~6kBwuVk}}$^qJ@WOvpTC)Ny{eEd>ZF0#`NV!Rg3Hn9tz)4QM|HyztP>J4>Vt#Ut4g?QTlZ9 zJh6-zTc+=o$DcA5cjcP(rWu!ClUn__dTOBQwG-H{;hk<>~7$-8~gizCSN8XX_`1M)@5PJHpR?Gv_pC{$pBMp}uhcp?L8X=MzuQ zUTrtoM^d{!O}V1|(3v}hoVGUib9XjK>n+UNpUzSqcR)ujvvQVAzmJ}w{}uj&@2eQE zt`iS@y~`)>et=Eb$`}eU9?>^zmqNgr#}Oz zpM5eVHQ*l~14D`-zJ9hV+5K$)B9z4(ODCW9JLDkJ_W$tGtqol8nUazopJUMv zxwJUwJaA26b?emcejmV>n3wJhcy5U;!C-;lR#$BxDn__yh zmA+j6_|IAW$+5TtzTfU%%-ZuyrDVyY2?bLhY%u&hUB&!gw2s@_VxH@l+$U=qKds#o zHn-w(FxOAT4{KkLigR<&g3OCeV_G+K2Tz0;VrX63?l8Sw$$>>Sl5VJ8zA85kZiRtuNbkSEE=?;?D+r9J9B2cIp}rq_{p?c zumxq&f`2T2B{?4Cf6y*;KF4Y0!X&0$8;UKf&%OUsey*VI&!1ni4y^pf9*@^`S4&!) zNS|=1R-9FwU*ghgqbX^y=}WjWr>|~bctM)6U&%4rz$Wv@s@J7cUa=f{otYZ4djD%%@rmnG z&uiS>vP`4CYts4<$+W5%_eCeSPPDmkW!32qi7$Poh~8b-zIWeEv#1YwUwzi!S}2(4 z@*{kavhw2lrb`5`K05NqBg*Sm3Qz0DCkAJ_E#L5ru!p1K)gR ze#dI_rXqT6?L+BPuVvQVSa`@_udcPCd9Cl%`eL=Ry{d8_w* zYc(}K)4$7plhDhiYfkn76M3xlTW$uwm5K4$sbRFnXV#UrX~i>+${c=tQeW%vqx=1j z_@7i&9ALiLw{aiWyszcut#&Joo$F*Q^`=SQ`~Um4LEKlZ(A#EQkAEh$M)^y9^St1# zy7--euXcZ0mZ-`6S+hS^G>oo1!&PL|5#v6QFU%AGa?eGihK3&)RdE1^d zeG`9}H2siJe#djCjbrz&4sS!V?#h^D9ok#`COv(1#!7XEnNPst9TE8}_xxc!8TjL( z=8kHn@{I;9yLbGvo^wpv@UdFn(a*VE+wRLqoxi->L5IED!d)oHFqdoT!9U!fv|1)O zWvv?%1H%l(*@AD905>jl6 znxn$p(>Bw>IPvnL&?~zh>=OyU61KsWRm)jGd-kHEkAiZy>XmMP_iL+GuIP_*mG95Z zHlJ*rXcV~r{`=GKr(2iXp8h|t`rXd&`<#!&YG0%vE}QO-P1JU-FLq3yuzz;p*Lht=cL&y--(^N>vb}B%Ac-D zyjKdWpT1l0#82y<>(1SpJKMXYHOuu?zXulCtL|Ucc0b@9qnBA=q486>B~P}8{E>aS zEoF22jl&@|Ek)6uC)zb{x}7Y``eFOEdPWBQ%7L8x{B$WI2?AE<*H?M0}HZQ52 zTvWgOiLTeZZ5zrx{*`N1_GjH&eusTZjmJrQjh`Kp`Za$ZIb^qW!+D7m)2b$8n|ITm z%{s~xq09U;<~rB)nDEP$>z3xNd1cyt>Z-2Z`%AAZd!O%`-NeUM8DhR%_r*8=+(K5S zxa&o0wXdGb%jT?#ioRoPqx+6wV$6{R=B9JreB1SR-Gb_0KXcbjJCKt9*(W?fvTQ=_ zTF3K6=cT^$%$M)JX;Q!!_Hz$o&YG`Pmcr!+4%r=_Wx3~fPWsXD6J?tjcGE*>L6*%Y;gT`9U>XKu;Oy7c6W$<^I|wQYQ7 zas6!j5qNcPR59mO4tARP(RZ*+bE16mn)ApvXye^vad9hgK zXY0Ns1MRd4#)h%1TV#YMB(8MWqM18yTAKO8JYk{v&+|$j&oRvwJ7le_$$j2PL%3k} zWAj<|zB97Sr+8OAS+K#)GuR;Hs=&LAS7dv7Hf_+qxJxOOO<7CJ|A3}}#w7QqmBFUU z=jT5Cxa;+;Y395BF5fK`yJl!O~m1_X#L}oAT~Uh3!F3o**qP@rWD$ z6{hSdTzC5YH#W(h)gC_YRwVYFV)fWPb+W`<9#*#6>ASGgkq?eWmFKQ$+y>2mn?q|(l?y+>O6wq29v*tN$u zZ*gvkkdVN0Hz6j|kGq*YrX5_7vf_l4C`;c3$JMcqzU#*4+>5JXsSSL3=4sylpzl0y zjwLLtX!^OvVi)@w{T)4f0xOs6NK_m(Dp^&wo#pjIPKjer@~)kc-|qb^aYLLA*U#o> zQTf@?8|*sVw#U5LxokbxuDy&;OwaEX`Of?QRph(`bH$W*72GSX?PfZff6dMOXVkJS zx{;5*`Nv;{87guGsudq^BBNxAMMKpt`)TZMCdXF!0D(B}s z3p$p~S90sl@dr}Nnb&T#oOmHFJ~>cy^5mO($&1RP_yb+^U+m)VUv_it&I{tcQyh#Q z6>K^m;cT=hLF=1|_|DLijVtslrF=ina5!$5(ixn5UT>Fb*DB^iS$8M7@TPfpWf|NK z2ys^Mb1vL+*Tu6n=Gn1%D@$Zut}-TWUDv!Ik>Q<4#SI~rk6RmW<~rKWP<^iW!g0BN z$)AU|2Wxs(zYe&0H+fb>%gTLbTuFvbE3PJr%Sj#&zoM40U+LSexVvxSmio`1aPU;u zttT(bvolpI4hXz14KzPumhxiSkDa|$Vzq~uYMbX?s_iUT6m$0Mq0Xp@3*`SCe4d&6 zsi$6IiMPO{le)T2Ai@zCvAJ0^gkoU+xLCnY?F^KwVx&LVwinV z)^Fl%RW@e-177zRoqMrETGjsN#p%&cll+r2taLACtSk2TU2avnYZ`am0o(Ekk;fU6 zo;|DfVmtguL+bguFQ4^F{{JuFycKLc#eDK(Lxs)iRc~)3>gaB=XjcAi#%%q5VJug~ zjr|f=RJ7b@>~5_+{NU02S9)nh%4G$ntjS9g6xOa=P@Lb>46^ zhuVuO$Uc?5^)qC4m7h1;ioRF>+7GtcZ`^g|@Dh)!oojEayf5du_E-L9cF!Gk)wC$X z#f$Xs{peoYTHAj-Y5F%A!;F-(J7!67Tc2W((D8c}t6&&z9#n1bVK7J5bJOfag26l= z{3h+wKX~^*jr81_3nmL+C!c-j8Mb%*+51cG+8And$eK2#g|wAb#I)_*aQ;x=$u|}@ zI^GQZi^AV&C9`>LsyZb!S!GhnbRP2qy+(IhI;Sv|pDK`6EkD>RrWrczQp84{?}uuQ z-ZaLFX~s^|Dd;{kCua}O@0%);>zZGu?vQ-_Ak6FCvL|w0WrzNPJxS;5grzcGMXIZHzAjlZeTusG&yaA3qfTC38k*C*QdVvc z(K>utV{VAr)YC!oj|yj8J@r8>@SXP8$xHu*d{-4^PY~R9P^QNFq~MS3JpY&8DW6i~ ze>8cDb>Hf4L$#ASQ`>ltB&zCC{Jl};)YG7(rAhjyo(4|pcg>t&azlxC;?jj7 z!5x2=a;*%SmNRAbq_&fn3Rb#JbMso9@=_&p%bBXpK{KZsh9vM9%4qj)_UO`CIce^} z73=mJotV_@o0!nMmvedcDZlm0QcrTeKXIudlc}t?XI*x7=FHcZndWlvS4i(Z6h32v zNkw}-%fj{rlmFIT&+2l{j8Z>!NoCgjlPeaRv`$)iX^V?*m_XdgOC_0YI&*c-PFWiD zQe;l;%aF)fs%NJywaVms`Yh<3$e}+bk+al&7cYsM<~RMB@r)~XcT70=B#*sq(-w!U z2}_MRrtwUwTeziTl5y%wovLJzl+TZt@yl z8#T<)56NW;Fd;jEHra?gx}Eh!TPnqTR)Y4EVQ{y7p-wPO8e*4MYA zqHF6yuC$z(aO4o%lIb4q#XpR9Ejtz?<9u}AueW7ablmsr&d=Q^bxCfMjI7qK&xIaQ zfA74!eDS=f%biCd@!s5R`M;*keHnL8DrT+xgI2BMn--ovJ8kN^tBpSyx8G#HAe?jD zUqRx_=Uw5GgpEp`mG~4J>CZHFTy7HhaT$yAg}(IL>sl5btLa~}Qqoo2){~`O_EDDO ziri-=lPp}j7O$`{<2=^=Vs#tG+{ueh_APt#E#=G4lk&fk)ueXL+VP#a(<8x6OMMqx=r@*Slb0t?SZD8I zpke5rb41fBBQj!^ZDUw`!@bI{@9xAdm_GYT>+vp&>HR-%iH9AV8JEo)u|zfSdP&>< z(vq8#CFcp-P6^#@V|)H}^vRz`_OCT8UtKQTv)9Bix$V68X<_SK-Q`t0UA_E0Oq2h< zTM=ti`|e5Q*UQfhHH3xcdfyin?7a6eT9EVYXXSs2bN*G%{(XGMWI>(wnp~l25BfwS z(r$S^UEpv3;S9fC;D#GdvSWRlULL*3S??_JRW~SRbKHXZH;FF(TXce$ISiV4eknBC zrzVRXX01{X)R-iycwm9iJ#DWyDwn56Fe+JZS!8zbt)6y5Qi%NXxjUHW>#aT1vY%Vj zK5qGfWQ7GRTnm{`9tv~*XTj+A{fNFuQs-owm=_BkNxSa)_oV$;!{?n2^OKd=$jy8q zGh3`E?udsE`-UCYgl>y!ig0SYVDsJ~r6OL!ecjI_Gn+?pLH{BC-+7O(b-yS=s zgWvl~Smtd`$!&2ntrfhzH|O4VyvJy}#i?(tY*BfG=lPXEf|rS-eN~lbHgKwc>uoLz?V`Y^kP8 zw6hhWcV1XB`OM0+i>_A7ulhe`pRiH-lK8uprW=+q-7o(Yn;rIfsiTtn`U-8ECEMff3F}SIdOGj8 zK3DjZm!ik}vPJuyeqKJ&=HGm+C?xx4%cZ1bj$b#F+OBgPUGZFX!m^mIinYy7PmMH! z_1YJn5;gGosoE2~j%9g~=$th%yrrj1Hv~lTcTdfJ81vNXgXZbxkW3a34NwGnjbZMEj$2Ng4ypH>Clos}P zx@>cNLnGfB>{zIin=5s7>B~}%7ZciyPDgQHjr_9f zQJKW8fV8s_*=KKXNIt#Bvv=1LS*;DXc3sQ5x@v8esnu$)HSe}xyXC+7-SY6~Tbg-S ztFPVacWIUS%d2~DFI=^7je5);vH#{yX_o(9=q`P0z!NR8=4k!e*2a55*Z2-gmrRyj zJ9AY_?FsR0xBT38K|{BgrQzY`IZb!8?#{_x5fOTiPg%M^&TZy`{nBkpUpo3WF&9l0 zaM~~2HMPv-!|@Am-?%Z?%VbSacL@Dv%-M%MzM^-%iZSxjhh1;vXIZ3UREjq7mdLxPVgYX88`AwleWv2fS zS7X*Oo0Ds3!>^ygRv{7hgzZK{%trC(&ak`x89g@Vx@ybsW&C^EY0l&;-6tO=T$cFM zqA1bb`}k0A=0msEJ&W$G$ZBdkAjjm+{LiYgvW7z~pi)WSpX*?XmjBI$Hish@zF2Hs z`9z^K>vF~Wmx?nS_xeA3I#Y4Q(odRuYO*-e3YD!zHP75*E#=8;k3KnNi%sFeHa@=1 z47Pt|UM=IFt<5;|#tq*MCtQ~MnIFDv*0AXLvzs^gG{gh9WLAfXy^Wl$Ftuu-ne@0ahv(l6!CvKeDFfs96<=H*emzwp=pDLI??Gj1XJaoH2 zUgVaSbAcO&*gd{X&FE`}+g|=~zp=?fds&`gz)NN^hEg6kljMaCp$j-ZKV8Mlw(@ae zhtu;xB`<^y63YLzMAbh{PM@faxPcDEicbF-QWD9>_zLk=W_&hq}^^?C@-;1w7Xk*+HGmg z=2wSrtQSrBT5}?tIbadn!jRa7A78b9`6T$a{Gshxu3wVYNt%25H(FUP;eT*=#~<^I zKjPb+7kB=*-1tY|`QLQq|JoD&ho1PK^<=+Y*MIv5i+B97Z}YdP?|&z-u>R`h345hy z8D!<$OD=1>BYZ1~b%(I?``rNz)di=_l|EN5TwgW+B>#7Fwe9vbT>%2O&-W<2G?A;C zHtVr($w|e6@{|>pHD3jLwrqd2>PFkGJoB?zD-BoAKP-OtYLy3Y!W@9GWWk85%J*>yohMn6CJ4aqS?;9Hb z-7}`#R9bvSO#12f6aO_n*|YsDV^b|F3I2AarT5c(PKng0ieH;tFQ=bx52ZjYnc}R3Ab5nBV~9>RaP>~EpvTCPPMAYjocNvQ!i-j_dB5BzhJ8D)}jSr zj{{e8uDI%QCF>Gr&nM}Pfv+xZKB4jUbBo*0wT{bY$?IIwc+)5Q#)#L?m`%R1{`0}l zJKwR++9&3FKgi0r%OST_=l9PE+25V#*(O}teBi=nhOc{ECqK78_U7!P&EXQoPNJW8 zu&BQa+HmXo!j*ApLi;WV{M+C5%&#v&zjs63HG$-c?#>|n=1b*HJl;v{_tlSlsAfLQ zDs$M$w&@HZM?v+@dCrg3>$%dm%g7$a@7-#$35A|U-?G7 zsX~XZdj5xWW=pA^isu{_j!d}8~b&lBqzKk2*uQ$4ZY7u8j(L9TJi)w#roc>ZK19pr?>fa^tzB|wn?&Ax$G*qK z8s#;NQ~TEY+{s~!a$Pgye(IH?6+gWl%=WwAU3K4gu5_SFwN{}FYxiS`CsvLNTE4wF z>NTMzKkU?0%c+y~FP{8ap0JdA zI;)|`x8>eB&kOf0S=}s_&wR4d5R4L;Zz}lCJD9^UJzaMGjElQ$npd-AguZQRD74hd zHlL-)QFde%U+S!8qqDASo+*ZXH8@ad6=EfRK;yaOvY*nqC(NRpJ2Hh@pTD>2yC9(# zxaViKcjJtg(H8@ksEMqUbS+x!;T^anRbvvns};Xrk)HWM(_;deJ&e~Sl7F#nUKq1O zRA!yvu7XrHms@XK15Q2F_?g^rNj+cGYpc}KC}!1j+zaM^er|B4aw6vf!8Q}+Et;1Z zxn^I`w{W;>XjC9^;z_FWbyu5?u8$Xtyhu^LD2TG)SIpn1Rh^y@ldp=Mr1He>14 zPR9=O*gKmZZrp!wv*3-eT#G-ccOKq8bb8I>?v;A8A6yNY{zh@io5T}^c1=OKM_ISY zYR&2A+FQ&k%{fuMW>QtgkGWW57;m=}I#6*j%OKu!9J+h#*fi#Obd`F=m2 z(qDLE{bHf~1&8ZCv+z}~sqnX6@mRQNYxLpjXrAW&i3inpEUy(S_m^&eBD$=|S48gR z69K)q1%VuTVhY7aTy&4mh&t*}uEif*WLjcswEu-iT1}Vd>lo+PG0xe$7k<@PxAj}E zGlyR1(kaX_?EkE9R`@-yu{j?o-)47k^KXfl_b?WIsC)Pz zUd`->rdg!Hk5ew}{+@Lo>dbU2H}Z3^t8?5)G;8+%RkDvYA}934{q;ip*YEB)y1|Lt zdggxZ$QwRyV^3E2Uh25+^rUaf8}qsIwAPDVzNTw)cfs7gE%6M?4i^glb9E2 zFK5Gk-Y4WPxsWO8U}tFXb8WtNhOX0Z;w2 zX38r+mSJFsNW?dtO44!;|AG?m)IW&M&8$lG%}+^%tpivZayw5bP$YKtX`by-tAbo# z)n+knb(XKWa4jo3+leVD=a~&2H$6YTKL0*r&caDfGUY)h9_4WvMyOr$y<;4xB4HhLvS7M^?zCAgHyW=C zwmh8`^62V@`$GSump?6fl5{rPI`8twrStroHhzd;Q#;l2#rtK~F@-7fxHx963OZz8 zFjqlf&i?a)b6=nSzR2zod*b?Q-+q;y|6H|h1N%PlslB-|>9a3_71G64& zU1qsvZSEnj@Kt`73)_?a-;K~s+#jK<>vr}?+pGvK_Yari;tPVxH)o z_Li-5-mhE2t7zVR_sXLmdNQlFy=D#i`bx>>o0a4YkCYDrJ9+e!-7B^|a1`3K`F29m z)eabk5%t>HpY%+`;klhh5j)zM2;lr{q60yDjm5 zdqb*R>c2-qUOO6Wj!)b0$>x0IUzGw;=@ZhP&u$$kRsJarn%}S9z_Cn@iGkq{3%&&D zOwRm1a)Q)L&PgmTUK<`;ARH?4FK_e7WiPk2USQJA)f7O(h}vc@dj6?N+E3>w z`;}kQkC`xX>_~2YSTO&t#rdx(X*w4gB#BNXd{do&L>^F*vop|_A_G0ak&JKrE{YZnyZI&|r zPff*BLpVa>w+0A2eQCtF|MHDD;?oZ(-8I;{M$kVp?AK#qqj{=ZHca$)FP*H;;^fNQ zeWQ!9UFW#K<;iY$&ZKKv9v544BQ)vVHo;BDyR_9V6mNJkwcz!!8D(=`s4RDN;5#Gn zJ;FGI!@5~_>0^(*VWOe#rOvk}`}b$vT=*lSi&1w*V_{>2L6wP}WWN8=-jwPyXI{B& z+PpL+q26Tj1K0DfdeWP{+-%l<+@8&l89RAaP6<*XIfjYcAIE$!gO==y2rQH_~-?=OmxWNNGVGSSFuk4ZPB@blQm}zqZEc&ATGeY4iQ4(a#*Gu-Z44_xPjU1XdPv?Y(HH+V+7!9R&D)J|T>^-si4c~NKS6F2wY z61%|i+@$Zqp`|aq+}0J%xzorQskZGxPjfUvRixYgKXD;GdsH+&3OwMQ^Oz3dL*q?cIm~#{8y5b z-n-7%T`$Cz9ir1HvWw-rs7J8ahG0dX_g;=XyEn{!k#wiCBX`kUjr!ttyVmEED^K0G zm~wZ==~En!@8@dw-#oSOSHJH5>rwYEiO!rS`en_M^s^>UR%TYb)SNH0`JJw6cffwv z=3lb2uD%xxsCNkXd$CbM>q(cu;uq?=ZaEu_ReTSd+nd|pjJ)s6$oD|*_VGMxcW=Fg zkC;TbHh(e>nfj1x)$`}C#MyrcS>HK&qg(NI$ZXklF3X<1{`cy_)SSCkb`m*v6+A!Z zUsToE)o@hrHv9iS3U!->Y;v-B1GH`?CBJAAJ*m|Ms|b)>JYpcSpyrfX9^~ZCOh{f0(m3>!Sa` z1i8-Df2xP_zpClp zyE;UlD@5lstL)Uhmc6kzZ~O72)3)&f?-v<$^|VTbAByNsqq_S6{hj1f5T^ecK%S>byiqy}CO0y1V^{#cCP03*6|z{|$KFquU-rL*n2f&X{ex+fNRd$uB%zuxvQ6M-DdZD!`86q+^g^B%)EK?=G~hq zn_nF7-)UU@Y+mvI?{kXJ+kU@y_VRq25)lTimYZc7NA(K|&BUJddR<*@5{pZ@xOO`s{A8WkRagv=hk`u z+dD1pGdkXR*pObRzQ68bTYS-hkT+WoJMC%EjF)TP{lQ84U73SmT*~2YSp)9-2LZE347aP{`QX^9gnd&cho=UM+@_| zi4$Ku^^}&|{_rwK^0dloo7`H(_4mbH1ZLOR`7hXaT$ZQm#nrIu@87=s#FFzP_}8(m zReR&VZ27UA`o!v-7q2e(+`Rl(_32%I|Gks*kBmPc|0(~~{g`VH zILp}f)GF35nCp2^$$56Sz_D+?xBdL{{P(m*$U&q;5p7W_qB;={I;08{`{M5I%ZuP$1 z`gQqrz5F{n)~wvPGcoz~tZ7zlR@?5a*U;W_?e69G8z;jFTMZ9_SakApa$`bw?%MiO?;eN=&AfhX->#KQ zGnpMTqeYMBs?Yslnjig)Kj80Wx7^uEi+4|AQrF8j-paY%ylu^mxBU?dHtdUgn-%=m z?bC*>zF*aD6;0Y^Wj&Rz%G%nd@$Ef7*XYa2v!wcLg%zW(2TW-=^zEzi=JdeVwbqYk zE?=9Oo29Cr8Gm)hu8oPxt9Pz7op$?^n(4jwpMRb3{>3zJ!gB9WsgKs7&tLObR-c-+ z*RgCbXZE9PC6nVJK1E+!}nLrztzsC z#gP-BxaKQMlS;a8F!R;;OxCyZt{q3?CT%^^c3vUH>>WpCP3${gTRGiTiaJ_mtg>ad z)`|HWc*q5c9N(33E~;fqm8w8r{oe{>cG5Ii>ezAK7w2Ouzk# z@55uOgK}q!2;Dt!ZeM}&Ud>ZJieGl#$f{kbWw4b^bgg*)gXmr7&(}GfdiSkGD(U$` z)}zHiGdn*$N)7yx_;=F!i`z{v3SWK0vi697=<2gykMLc&`sDR%{?ZmEx$^f)m!rBq z-8dLtxhr!4YnfTKvz)8AB;)s=r(Bv6?ykG1t5|NXx$^Y;#o{TUGfw4v3arhazNpo& z-aq#Lv$OLY9{2h6TPbDQtU7%AwSIP%@ujtKZQTaiJNYi|_BxxI30c^7?B{@bkj z;HFP-Xi4!IFP_W7B^FVi)QYOs3SWFFe9?5{#xFI&yRKzzQ`6C!t+eTwu=Bh%SIvB9 zyx4qf>I38K{koG3R#x>ZU0Eg|m>jGzF)H%ibzjXO>9*@Wk5@agf8A&~X%(|@(YiqP zK>41%{X#A>Z#PCx(7N9;XMM|u9eQW9PkiPo?_`|;}U-+dE|mdy^yp0TXO^r)|=)y$byQ+6&ry_q@j6^EBo zM46GUYn6}TeBmP>YW(gl_AFgvuEzW|=vrA_!?Q(K>!R3sjVA|7beyU2n)E1KV~VEA zNtc^T>|)nFR$~tATx}+Lg*K}NmG}vKYmxzd~U|-ROx?BVSj6F=IV0)s1{xp-}YmE(5@NRp7QM!)RPJPm2qiT zNJEI&{Ltw_iwneb*WWqvw^BJrtMAF=wl4;%k(SFA2{=8=t+^L_I!I>i!OPCUs=d5d zADgMn{ILAWqowl?XDNxw@Xdc-W2>U?r+To1<icv=`}2)gW`9K2y1BFECHycw+c*F35ASm(qF!N&Z&o}=vU8gB zcyZH}OEW)(UC&t1nU`7{6%rU2XE$H?>P7wsKVIHRX*1sza!}Vb?)m5JR4(592Vb*X z&aJ$dB>v&`zmQ+WMXT4HPq@15yJOe8pwus`W&TEq{@pbpUie9%=MCdcD~uvjU#>l) z?|-$zcaMQ#RlKFXP|!>}w+~xCWwcInf87x$9h84{#pIr&b8SyOGkv%4-1U$0KhGoAAGDOsSr)a-OrYR>%IA&`u0JMq ztbZ(RRug<=`-j|?pNsFOihex*V|oGiMd`Il|3vG~fB2tvxZLHB^*`q$$8{cHc#EPseo(EiZ>t{JCS z{gbboqa$(oZ`-ZO_ZS5}3K!}85#bOrP+`#y7c~TsB;Ao28vVy{{4%a^+NBn;t3en?oO_UPb+%DdIsHEiM zp^ZDnZLVDL1fDWEv$^TQX8 zuX(5UJlb+l?Tkx-YJFXU!tx3>hs$@;H@|K+P?hPp(&_J;^mW3N1L1AwZ{;4+iIPy6 z*cp6kUJ6&Af%eW86UW1bV$K@g??ldTIHKXD_S=2K#kJX{^2bxPqFLM;ImG9mQBo4z z7P!V@mc`wz#xA+*?V9IH*Z%E^vGmEg-4ihVi`#1h$rYQg3%~gGp>V7IlCS#~?a*v| za3m|7;o8r?wj9Yn0{PXW&xWp)t(f~oucMH$+d$7M)Oo{>-7B0ekE(HtUn(e@@O_hc zu$K6pN1YCF>3lbDOtG9H$e$;Bcix11J|e3=gsHE+T%oX`Wt)i z?5X!$SKj&R`zbYV*V>=uFyqGSd(SSGO6R<~+LtHXGc!WnNagZV?nOnfi&U@9^D6qy zJa2`D#NNpIZ5t1t>b$ea;?T)C+q)F^uR3PB@NDRl_InSa%-VmcmHql%_UYgJU%L+Y z{8W~AiP~kU_4LC5s!*&(iu;xs(w3JhYI^%I?vOzmC=8S-KLs(pC2>*J(bcw zXR@W%jG0$Xvi)4Tsc`+#S&JSm6D)sn()aBWuCLQgzpVMN`s2w{7n5^mENf#~q-oC+ z$j|Xb(7@QyJ5V_{SK^+Oyrt=Tj+w?Y=YO(TsTFu--^zB;lVAG9);u=#dpGseiZ5qA zwEkXJfAc{6rY-tW>{t3dzi!ez6`XWF{F88dz|pDhHV%e`*Lvr_J=x*Oz4O$`_LJ?m zF3M%iI5A`LiwlRAynA*2!H0t`Ii;7LbEut}cmDC5gdKk;7R_9|C3fb!tHl#o#O$2I^5S=kj}Wz z=epjG3G+TDnBNuD3wj}b`K#y-mxb|J3+kt?J8kmoI?tEWFLyDm3waSP`67P#>#W{? zyv%=Rm&7t(*ZPt#`QrYv*H*s&%6Y!Lzf`(c?KvBBEq|}4C8uRK$* z?Jfz|Y%iJO%++@I%Q=Z_SrSFD?FmhchXhixIapX7#g+&*nRqC(lsOsn%~M|c{MFj$ zhn$yaN^usj$X&ZNW6c5vkK6o~-?jJqrFOpbnQFA6#$|n^SGma*5gt?5rM6q$Goz|! z?s>TMW?bfwNqNZ6KjW=&i2Doveo;ZmN7GKN_eEIX&EIvZ@XIvbREcH_H) zwkfkcr@pj&`CTja(Rji>17=+AosYGnT(r-DP&+D_`txPwpiF zMb!stcGXXQCt9+<_uUcWt+U=eUlJO{UNCL7ihgdM-!FwHZx7nEnjGBvk746`HSNu- zpUAfuGJoiF+9K7_$5=6Y9+y_G@zQ|EOZ|`O=(kGPf0cBF!26wQc;CADS|~ zP#}ldV8w-;M9bweEWa7#&<=eS09*;DZ8(&)vN(Z?vbpY0oTXPyCfQL-D|_M*m&! z*{(Be35))`W}V}VpBY=fa)_)wznSmQ8|Q#Elirj&SIzr-G0Q#TN3O|>h#LZD6d$hJ zv&FGs;^pACld5I-Crp0&P(ZF#>FGa}GmCx;*38r?7Kwkj`&pvA18?OGmBSZKH0x-} zZ(7Q9VzOW3$x9(K)I<;EWJ<-To^8nYa4lGC!kss@>!Dw!+#U6)hZI-x$W3~7`0=Hc zA9}Vh%$uB25xA;J_>xma=&H8zB}YFj3}K${wS1w%)rA^Yleb-I5MKJ!A~vc~Zzbn* z&$AJ#TOS0i6n(wac!O_L>+2W9Z&yxUJ!2;2B69_%{4;+X#f&MGTE=I`nsRM<@q z3i8Q*`643oT+qwk|FFO3?wdatZJdL2mi#QwJoQuZ<`c`*AIj0J^V-FeoX-fH>E$)F zUhz-=;q@rrnM(@qZge)tXPV;Iu*p%QpI1EItfhOSltat?3j$(Ek3(E_-d|NK^y=NC zFZ_1<5*1Mo)4&~lmyb4AhTqCfSe!U1?WVZy`l3aS^Ma3mvi`AGtv%h9PqoB?F zjwk%%oe)^W^X$I=(UrO;USeB<6a}xE_B$Qj!|~u{islL(rtGIa0@~@0X{m-!!ggt- zOgZr7)J}uln?f@0xbi+Z#8Scf&tVR$0bg9JJ=1^PV=}xGroQ>8J}WCycm2WFQd=0V zK8tE)%ZTL3<%aANqcfWEjAZX z`6HLN-y#3MZ?R}}d8F{lA3njN`%_mX9Y3K}c4TFRap{WLR$E#__Dl`A<1G71RrI&V z(OS(FKXQXbtB5Qi*n1k zoe6sqxE{a%z%MMZZ3aW|&q+dfU|JvD}dw*Y9|F?MM z&EHSH|5w}pf5M(O%AbD!pLD-|PSgGU>94-OOskup_v-tm=Asvd3a6A(PCr)kFLP>~ zGj+@T|Jsd{roSuF^Iec~Gj-LI@4m6;q)x{qXT9bxd8R7WlQVr*@!Lh(f)k#yMc&-C zrhYb)XLo9zA?v64EDjSsX}7pIT${=C^MZ(n%;%fS9PFC@X9aJb7}+6d^~p>)tu*hS z{6#xIzZ2hDoa~<3XFmPkHGy@O06VuOkC9VOe3`UL>t}^0%@Mv%bGKPY9~a`{bDrwJ zJ*{BgbBHZ!Fxh@4-^7MWUD6Cx^>wzu%Skl=F`@lkdIISr=EwMs{Zyg?qK1 zcJgM^Gm810Xt-8Wq{u3GP0W(Q#D%PBysCF6vZiUSU;IQ`A@-j0;m>X-rsOxp{7jpn zbf3xiN%X>qeZ0?3Za-X8sjoBTy+Ou0t347=E@$)JTp%VlYvuCC;^G|J5AA63XiHr= z)5r7Qq`d(TX4!Bo=RI`ER_oozX|>ZiEIz!P|Drgz<(b#w*@+%!mQQos*X?wY;mL{b z2SR@SelY2Mt5KzV$c5cH_u0Ll{9YJW#~}5TJ#lG`1HYm0LIK$&p4aj=%Oy<{{&BJQ?yj}n^R&8DGhH$yTHI{6N=83Aqj1ZpciCC{b3)7Ks!w!` zu;bAF;yFuebM!6tg(nTX1xk53BP7KZwwW&a^d|4>t5<<-FJ{VU9s2TNfx4But9QgU zD|z9m$Zj@tWqw-ZOr760;SbN7Y4cmP zpFDq1^|SJZ_J5{#)8iZ3pNK!?{2BgX&mZXu*E-I7i+{I&$`^bhJVWun-~6R@j@?r2 zn!OW1^J3<9bw_c3 zixhjUrq-S+%zsewx!$#2n|%(ZoBXbxnG?ETb|pvH%K0MB!p%u96klAB2niOBH7s?R zkd?DY``ESDub(Z`@7k#xe~4|le%C?e+!bo-yON4p&n4?6eObvm>!NyluN}+k^Ra7q z_D$#JxG}3({PWsefoqe_G&Mia>FC+du=cw{-PAMx-Md8BAGG*cIzwf@W8tIRF2VX` zKR%dCmA{|x^SDdp^poyu2#&6eR}2i`)C7oo4P>%zzrP5Q(w$Dwm+_OwhQ0E zT{9G-O)sVhUHrrH`9R;#hy|S!w<=gqyEbdx;R3bn)h1zgL>@PZst0p1w@o$bp1r7Z z^~L>t$Ytbj?R;DhyTIGy^QN!a|=OWllZm+SxEKnXBX?heNjz z)7=cNEoPYuep+0Xd9ibu!*o~X*2jfXbEh(_xGj=VY!cu)&+@{}2%f^{rn?&KD$a7wtYN#=rg1rHbd-uNIuR?&-Kjds_X}Mtf%OEqn6U-78Zm;%QW$ zR=L&liN|C4?U`rRzS_g|NKhj>zNtN-`1G9)9`@C%vurI^nY~c#UD|rtM)34Tr@X8bi_m_*WUOdGT+kN+v#K!F9>H;FWRSg#{ zc*fF{v|Yqa6m`$DZe8NN55PAsV^7As4ElK^VXuRP4Mpr2-$boAv2;ODlr}r{FYDiu7xaaZy z4ZWuyOWZHs!*fA0Ec)#u-ys=Qr)-@cCNfbb2I2TK{f z*`9EIkq`W@YrB;F$}gW>w*}U-e|Ky-o5DQz+_P_e6AfZdx1FmZ zq!JGpHSRMA^{A2&URGuq?rMC$K{O?c?{}Q!?AsX&Z)87%|n6z+2W1-&qHVK zEqVKO$3(l}|C$pIl&L%Y^=(t${58}lZdtqD?eu;9lh>yHTxT0`^l)<8$(o!?w@md{ z3(UOcczce_+evO+U#9JGh`9K=`F-@~Z#y^mFkj=;i8a}EE!S$ET*kEn4ZKX*vacKx z{w-Si=avYyxyY7+C3X92I`0QQ3N_rRCPKS!&0^Pj8IbZkc!T-lc>` z>>nP#ke;3Ki2Z}JWIF$)2qz^W)tz_u?woo5&&`=<`sc^*XV!Qe$mMybxWK+uVw0xI zhXao14m!6zS;n(urO}x+YvqlOY!CG|h{-wOu;*3jET{bsedp_V^FA&5KOsBwe*3W< zmXj0@|5?Z3{H}BFx`|o}&dcOjobrF$@UZS}dRTclbnc|(Q=WGRg=;UKwYTi$QjS>N z-EJ>yv$-}ucf48Dnz-%gn6C^5l)tzDb4G-`u|S^6W~z?OFd{H@?aY zf8%jG_w-`H{%YySQ8 zlbF|2yoz1@&h)h%Z?yiquD>hxYs~|mo1P+;8b&ogzULZ7N}d+A_9&YCGpV^PQ0SYv zGrwqG+fkXhURy3daZsw~`Zkl#a7l)5RPt5FS?6XpGQZ{CVBF^A2078iyWaUt?!ps( zhMzN8CUy#xv*$Ut*v1}u$}#(x(Yk;mp;pIF7Ud>(3&qH*tq6=+Vjizi=U5~1?hjk} zxd(h zjhAJ2TjyvgHCgpBaV<)`QxFmm$hcHE#jWH{noRn=>T`=8f0|Qy+v41(Z>eHm=LUza zTvrm_?zjEdzV{z%chY z$1^4Ev0LJ4x9$m>jxtP~>RP*L=VOPg!{U)nV$DAc+qpY`KP{SWqsLZk*wXzcXN|b? zPH#r>)|)3p4)2gS*Y6r5eekG$WsW(1v?_0BQ+9Y! zp{RIx@y5pP>>UN3i#&zSrrc8V&)9hUZSKlD3JR}SxNhA!xM20wyASwGtC-#${pT=S z`^fui+#F4TXcg_=~cJr+RUYD{qzgyr? zJEdpVueADT*VXs$zbXyi!v06GKKS^tE{;`G?}+GZ6o}p1@TGr?Lsen>@!OA{Ro>8T zU0<|)ckGqurQYv-7OCvjGC1XQyQ|^jukD=PzKKPi{W>pa23`{CS-FabKdZD|X|al9 z+qpg)ZXaFU-3`kUJeT+}8E5^~RZ-b~?{TsI`;6=&cD-`b%9TqaTptxzPTye~{_dm4 z*S#ucTs)n*;w$=^6FO(h^!sk|iRM(@*vxruLRJ0d)4Pv}ekf?xGg97i()rx1#r;<* z7PkHDoOr7`!t==S98RTKX_HN1PRf+11`}@=@{J>jo&XB2UX4B&iuR48g!ke<# zBWF@nIC}DmbMqfrTzqpa{;FVD|LNB^A6}ZaX|3e}J-r1n7oLeLDQ&*_x{UQo{QiCw zzPC?PSss0Q`}RuA60`i0(hBF&eG08>(zbtGr)4RyW>06~g&L-J3Z7y!rY=#46m{V- z@_lkin)%;0-e(Rr8c*JTopbdW-ORmo$<$?oJ0`9%jtm3QPS17vV-AI$YFP6)_v)1v_)>C)Ac6%pO z?^T~-HC^V*n()xM`P^q0xQbqQ^F8j)#=^zc8#1CdM|VF;VdHlen=#|Y5*D`Ii6q2>g4_q3UP+S=Z17$8z^MC4!@Ubd-JjJY-uEspsXevMOQ!5YR(NyM z)>#)>sw(9pxxXrW5Pu=KC!l|$R@1)UJ<69f?{BmD4RYqoxB9UmokejjeO9z}OT?_~>ZaXC!V}ldo_zi9(vPt& zM=bWndFM%aZEbyB`ZG%V)r+mOBA2bYxQxy9lx2IAr+V<$bJ3crmx`~S*7j+&p=>?O!}fiJ>9zd{qO$E=P9$T_RQyQmv7!w**Wij^07}!-NqJ04pR5a`AuI= z`|%)XrbeIK+etgZ60Tn_y;Eow$R1v-A=T<|YnzweGR`aN#cI9!JCyj8Ke~A|ojZDa zpPp0FN55CMuPmF#Jy}t!Y*$^Q^uA{=i})|QoYH@DS8dOA&Nn~pKV8?jV=Pp>c156b zb<*xxC)Q-#dXvX@af?RB3B9ik;YPW?&Ybe{47kVI$mKTLnnCQ$l$a?rOe3M(Hz3sK#D@V;P1nf|webwlJ@&h! z+BreTYD278bb+v?uh1^mRlzeh=xpoC?MYv+!f}+Z>q{7QK>o4Zk2L;=-z9@_gGGHZbg8YdC^-%8=daCkJN;8%T7K@+ZZjjydjm3{?WH^xyrjqNA2<~ zotux;6*`EO7r&L$X>7>0UY=-k{dmepi}SBJFKP7^7RK0U8mQlV<0R(axtvw6 zi>39cY}|XV{kJZ%ylSa%6FcAayd$hINNo9$%t#ykxCgf+*V!JAX-&PTI`7G%XtDI8 z-6gj?O!I{bmd&v^`Dl*9=bGu2yC+`UuX3*V<0hRrNAaTzT!cL$Yy9_Ubzi?>`>o@8 z>YL-SZ{~&ES-bOjpkCjG_ji>Itaq+Z37G8FG2w_b)3+o0Jvc*De}2^HtN*^&`pb@O z$KwOHA1W|7_4~K7mr(wtb9ejCcnRHK?qb$B$3@6~fr-Y!76+mHz`pC}VTop%e?tUnTO7DriE`jzU^O1grIeJsGs|3=`}(I; zODT)5`_$_XTYpB|NMGf)IBWOVYq9<}-MnAQNzXRTIQB%~tNX>CQzFaaj>~hYyq%c0G=>FYj(GscP!J@s%~_*4xz%6KCE(p|vvYb;{4$t+O*UKSfQAvN>2* zKVgowyY#Bn{GV789&O)Rs2AI|D!#CHbI&g`jZXP*yXF~)C715MdnY37$-c^0OD}G< z`yUqT|0j6W&gkaZnzDb_o)b4{~-63y0`Pr6&AG(X5R z{~U*qI1}@Vz0ZYZLN(ufmR;9+?o9_n8QE9wwrxV>c``pkd+7Zw>+8DV{_DK+L3au+20bI<}|+9 z>9%>}L@{6QE60|ZPM0qfx?JlJli&F+>h9~w^;dH3KWBBsOcq*SduD;5Y5QyEBEOcH zT&F!)YN?wnVf^o6xgukh24 z6+O`jDe`;*?%kTv{ly#`PQ3nIf9`U$0k7GXhD8=e6OT=oWB8lb4H zU%&lQF3WVRm|bi!NA!ldQDp(AHGVypkoT&JDWB02~*96TUi+%ko_vUJ=&NB77>FMteF;tsxI;Svu6|=u& zQQL$djjbmNWR5tbDi%$3RhwC(ZtY1#AdU{#nisype6D~_koa4O4A(CzOra2GRnK(`@U3s%+ z^|I4ai(fIb&1ue!6)##W8SnbkZt?fOR*$_s)8iJ~{^jw#_>ZaWN$tMRJZ&F}_kH^_ z^Vc7ywtbxsZ9j*{|Ct#tvsk@K+^x|zNzeLW(b(|f~`DVs|s^SyDKW!rPepv|?q^|ngV0>wuS4_ksuyQ=40 zuqoS|nbT(YE$@!7by>xii1|-%G#|UccJ+#a6lZyDrG%@y!Gb-~%IBuLyJYSYR#?{b z#9EOjY}r8SX)?_%`MhPyy3O5sJ!{f;pYe}3&`M4}raYm` zxJ*}L`Lcs|C9Ya%6{o9hPtD5xc~>Lv%9^Nyi)!n|ed5V?hq)_j7TexpYgf?xe(Ba;{?=1})uegM zue~p*;pSgq_TotMF5X)n+TVY5@L2!hOu6MhX`y#WX`&BDa+302zf1GI4{KbujQ9Hc zHa$>}|-jU}=a zFRWve?n|;fKH=cp6B}&WcDEU>op{jid6Jui@!1elLCyd2t`O<63l*rv`hZyIPa?l*IVVoGi2Sa z3Z^WZe?$4mMt!@5=EYZz_Xr=;(Q9(qT+tizrIgDzKS|K>oma@+)K}{*XZ+*IJhl7C&*~H5 zc533a{bE=34ZEh`dhTJ#%Zk{L&QM_+>{E0U! z8#il3Uy$Un;!8KuUVS~g!61u!%e9LQjeVylK9A^K*k`Ktp_T1N@HL(+#T#9Y?YAc# zygZHPnLGc!bCV7}e{3-0=HY~WPv7LJu$2onn+rDY);sWk`=i7kok=bcFLz9q*wZa> z$DQZh_5_1o`|_8QuCK1+obuxKmBSLL_U%7kTga6qGPaw|n|fq(m)9wo_DsF+3r`f< zAG7Y8@nwpHO6$d?>z`T8eV7>4BDW&HRefv1Dwkyo(o*}9C&(P{T(;aNsr_Zr)|?%) zZ=HMOS}QgE)uV2ckIh>ayk8KyNV8yGM^HhVNQ>c(i@8AoDG%)0-@j;Df9dgq2;UD0 zVm6<2^!yeFgsfh)e8r9luLHT_R9V+AJn*sYt~wD|Vg#jCGe5Oo)54NPa7dYyTd z9@lk_DF1>#vkGdRcGNWs_W2uL`)KV``sZNF@=FJTGasxx^8LfAuIHwE);+$tSUPQ4 zTe{Ou*663{8?W3rn_9}x_xMu8x_|8kezF-tr5nZh&P`552KU)Gqr z?9_w+!LK*+_n*6P=`%YQtYn+Da@9$brmC11X>%8JY4GggmfSPLHX~A}VCH|G%{rb5n}%lVY& zOi$WVJhQWtldXgE2jf#CCVP`dJlps5&P)E=zv5f6@}=#sChl9)zIcZ5LbkJyVpcF_ zt0ZJkd>rHcW{rB;x+5yjuP##vPh;7+|4{sEufJBplTDVowk4iRYJDil{54^_k=s+X zpqGkzW{WRW>UPb|o$=ty>>V>w3JgzjRM$6`mptW*-FZgR_~iaKscX8dc&*B3EIHX` za&y8r;Xfvg6?ZQPuh)NG^}gcm9q-9IL|M<>))QD?pSE}D-i059kG+~~8y!8Rsd>o* zfugzXkMlC^mv1ZoIL~gfWmVqf!+T1SeI=_nb`aC=2#YU+)2DbbEzIt)9|GsMfn+;1hi>aCYSn%}0GZ)LBf2XH}u70VW zan5qlc?_VVt?(_mVecsTHYP6e{tfM^^F4`=2tR* zhl|79>)?C;D3H#zy(e=EMnct~9`Wq;pfk-9Q4dC~Uf`wO!+2nyE+sb=iH9sgnG zuiuucB@67D1GQOdO4h}?Rys_mlYU{Da{5r%#iraZHH#-~oLpzTvex|Xt&Frg@58e8 zpH*AjTKC^fnY-S7zvHjJ>>DHh{tc-RRI#iVu>1Nw-gWn_fA_TxF&0eTV}EoB!#sC0@Oq7_fR;)atP4=(SO|SCvLz6txfVbciZ_`z!Ec zchp_cwQH|ld$;Y{uD=`Zmc5?$`PtL6PtMLxnGx~x@4da>@0Opp{9paf^7*`Kb(`P) z?sBXFp4*=;YVqjO(aZ_D5gTK%RRrzjn7<<<<3()(#}(v{11+I1UA8`rqy zyE3Gno_<}DdA1;^k=r;UNKfpN&&!#noqh|P)X$bJoX|DL?JO{! ztMWyC_lg#;r4~m$KhNEAp!N1jpCxBS#JHChSg*X}+1>IXWMQO^YioC^?!>UABB4QZ zo-JBhvTO1*&%Jld`k%i$B)r9G-&3x4#!sBLikMys*RBmU@;tBd>5`Y`xhaeMx~ep# zmSjv>M_?mUI$;wnszNJbF0Tit)o_&=gNX+bEj|C`?>V4=UhLl z_6gg=dR_kP&3f%%BEaRw(WNgDa+tUFpNGrS@bte43)Z{y3OmfWv^eiG|2Nm#gC1Ap z--K~4H!pAhrCsH`@Sfe)Bn6qSwrzZQt208B?>;=>U?LKy9y{^UMW-x|$?VO~*`2MM zS2JbB^LJYwo#dZ>XhE6jsgj$oU){Pj`xZyB4(GL>hXqZ~JTAJ;yw|b5#Ndp??c)+r zvjyw)y$f=AT}%_acX2#Xp0X}CD}R0T-78n`UAegR-t}u&wyxTmn;YwXT`NAgI62(= z`K>BOyPb+lGWDza_U8v|-B>BGaDlyAgZfT8fw1t_Lx2CR_;A-F;>x94SMLR0zZ7x( z+KsC>uH3uuEc*JzTh~IbUpTU3|>{{mAp6>vzuvIVC=;4odG{ zzjX1++}P+~_u%C4*Sq-Qv%6ebH=U{?@MCf7WMAKE@jyya6C3trE5B(3}JZ{Xj zqGuaB)|~lr?#aZKw95xfzUChE4z_x|(q3doz}t_mH3uC`9=x9{el6HG@!5&(Wu|ND zGoCjcblcKbe5Ih}XUQ+A%0E)e<*MH2?3|N;uW(4e@aU4e?9lxi*F4T zcdrRP)Ha%WmP=AM;roG(35`6JY0q@>B6oN!vpN&8Y}xNky+Nt$&Plp!KE;{d%HT^p zeOfF{;t1E|n;V~ZExP&QNA&X-65AD87d+9pp14+b;}W^}f&_zGa=fem{gXN!IE(A( zrQ28HzU}z%?wLc#)hmhJzp5iOZ5JvqtJF=4GWx)(pYZ+V#k9M!uU5<7+2+e@{`OT^ za@~nIiQ-odD-Klq;huNV&UoLFkzA|l1%csXPMAm2gPY7AFR9mihZi(K*DWSj^!Owo>BHjaI*xq`H)e#MGYHJQf(w7+IFE_S~w8hvu3>4q$&Nso-v z+Nasps~CO$VqxRQH)B#4L;ex#!!j9GPAuOg40o0qNbzUi>Jz?HW$|pe=Ml~(LGJ6_ zCqAr*aVh6jpL?8n_8I2$R`>RnhWO7BUcAG^IZV>6?dVC4WgB^C7+X}ktQN^Nymh6~ zZhy`lW4ApE&&$7An{juS^V_~_7MaHB|Cxo>g|#~WZTWibb=ZFERh!;1AG|lqXM25h zzx^xqGt&L`iRX7n^rfqx7kDR`I{TIJ(zCaYaF+2K|6nOFn|}0icT0|9a2e~gI~>+) zkJc~=pSiwfbKqOoUg+ZR6AXgoCzc7M8iq z6W%)SZN&{WF4geGomm1!ixvMiPqsTdyZhgv&M8{fS-aR51*QnI&9Gh2z5U#u;}g$G z|7Cf4-go0ItHvju$^932&U;34%(io5opsFX!0oLnUmMTb-0|GQJEfoBrZGYL;iLZh z%9o?(dg;2JycMeHDyrxkzcOWONqUWFk{nK_%4-3WS$Ey-lAtMB2#|34M>zw3XiIdC*ZN=!4W(3(wFDX}ORU)3<4h9EdygWyiYL zhZ6ti1@36_U+le5wq)PrUm~y6?aV`E|9|avQk0UIXz+{8ZQ=QV84H7scm}qzy<}=F zGm5*V`k-99L@_V)h0+~I3teVi;VdVe~yDj_;T(NDn zT;GhPY+BkyZJPFS)%J1QsB(P2@O*B`PN(<<+7*|j)YoW#aorWPaP^BU*89i#MSclw zytIC)zV;VU!4EujPnNtEky*Ij>!YdWy6KPDH23Kp?d6J_dTsS3D<^Z$!p%BRlKjttc7MIC4}Id%zsIrKZr){!g%w9mCa2$yuuIrc-Sxq+jOodeXv^bX z$}1nfQ9qm0W?;W}uWf6>vo|^zTL_2B9^3DjVtamRD2JgEQ?rtSwBy`Cd=DrJ!j?OV%Da!_YX^HX?X9;7rbDs zRFu2Dx482}nJJ&8YuQwdQ&MMk*gNcawEgI_Y=y_?Qble|oGs_4$Ni`{o8#-(k1|QK zZ(li>P`^TbgYWN+I%cmYpT2bBi_9(m(m76Ff1eNMo$6lm_m{q~=9?9U82{Q;RQ#xA>;3oHldRM}6*sL7pR?IPFJbbUhW_1I{~b!oee%^M z!e>t0wZV!j#ZLa(b{S< zGfu`xMW#vXR1n#(ouqrnv#-!m+d%I8Xn`ThRJr<=}X1B?|=PxFF(p-#>&{ZsG1el_q;v1<+y|IT154{{UNcASNBHP^4h=Yj%)rI zzx$^1oH}5zgv0r$3@yX?(diJMn9oKE%VRtarj%T^`YlfmF zCrYRDA1q~<{Oz;3wBExaHJOIzb{2ce4?nFH47T~6JncDS%&OYU6%UMZk6rpD^KHYK z^Tp8*t*#aCZ2ZJ6)u#O;)?m)!l>Gqtz9sbhjS%wC~@8%QL4!?KHKAfSucOG+0Ty9Uy8B^7sGhPyv9+Smq zPmG;z?tAX1Rc@=_>jL{8&$LI!g*#-eHm-Ph>qbzD?&EtgZe~}Pv?cm%tmIG1+In}} znZO4-SnogGI&+)OZiU}+xn5JHX583cR9EyP^GUjvy>!FQtDDYzOYPfxp6upNKGv2fBI6LY z@w1Wsd6U(D9M8moKJ3i&RS9tcc|)oV9u94 zJ#pu?UwoH2?05e4jw_$pzE#wJFkAKzWerv>w8sQ?{S;`M}_Bo z|FGn_ens2sbld%h1JD1ixcRwy&*PuW|DOC*KKMEP)Ylr1V4M1@*Z$bVU1!}P8K2gE zCM|f6aC{4Qj%LfL(%)=t0Kvo84$U*vy5=V#Zx?r?n58XbSU*XFe359_=nJ+o^E z+RuEKUNbv-%U5+@>-$I6rZwAlOg_W*zg(_f`rQS0z4SbzvQLh4Y-Ck02U@iR`y6|{ zl;!c1y%+Ot zr#}jxdLVyQ<5Rt6|3%`r&K}9u-7}$JyD7(U)xHn~v*@ND;obtCM;N^Yz9-CIch=>R z&StCfD1qZwD)qnLoh~=oR&%D!f!g067ufYKwGy6gVA;aT@;PRm=YuCk&prvrU9-IM z`l7ABg@~+Eq?p`sC*yh2!b+9%1W$f0aJc=N!&ySEd;aY+@2!(Rou2eNeD3|oUro<< z=gRz9vf<;o;B$p1wtTMGf4uts+&$ml9yNI%%encSd0CTt&r|s%ub z9ZByeM?9$I^4@bkVd;1GjOSI&-#NBb%s*WA{_`!CyF5F(lHVrkx*3%uzhtfu>Hqj8 zW=@N3U;T5pgGi_Wc^_k6+6tsAuMTc(<6*U9&FF&Nfen$$bRXHNVk zwyI^S7xvF=kn?5w^;pE=^_qrtD#8~QCo|OEl*-sEdSPl`pu_s({z466nQ!7e8Mho1 zda)$XA^FdwMy}`K!Hl_ESgcZI7OY>!aw~;%i$d-K_Yd;d9Ks`+=H@b0IZtx?Z_Ik( z>NJPvGaK$r5PFeqF>TI`xv5@n!lo7c++}#_#7VwG>CB7yTWmy}S_04qJW;i{^?*4}ui6gUr~qoXXZ&*>O2`UxviZ-?}I7Zd7dhG-r*?+aE{Pe&70d@|L=O{uwg`!%PkT zFHX+6vUyw1PTs-@@6MUGU#Q+%?0GUxQ+~tFrw{mlEIzlk`LT|>_z>@?JB1| z>{iUsQ9h>D?tf7EyRg3AbH=BA|Mx6M|{HIQ_ z^np^fUY?rk?|-_t8uE*4t-sf|XPfu$wzn3S{qry1<{f9rgZ7>W>3{xx&S8BYB!2Gc z`~3$qqyEl2w}0}>fBM$n|AUv_$xXU_omYr~;g1!*F()VT#+>|%P}bfp4Y}wi94KJx zyfIr)&~XJ*)YMhFDtSHnYOcJCOnn<>nYcZ^{kAM-x=!`%-Q~UaAE^I)!2Tof*vm~! z({v|&ODz6&Zq7{0?{8A-|Ni?Zd_XwIYRB`0y9b$_es*_#x9FRCUUr*2(_!CSzNxAr zSzrApeZTqaxpvUb_10mowy9O?Ex-9(*nTUgdftbvf^ApkosSSa_FJPvXZF6t(|gPA zvsvBZO_JOYu=>5+iuI>_a|CuZM>Ge#VyRn_lXT;t^Pwa^)5L9}t~q5+qQ_-~znwR^ zb?fVwg|D;Uw!it-yKUF(nlgWpebOzDviv?D;}+aFM}PK*J=a$C-=DQ%*8K{1^@|t9 zGX<}Gw#@yk#d%0>_QAh0HcD&e9#^Wdd41~Hja&V{m;DR*r#$h(oFgkHCvI}g-xoRU z@2j>sYhM;#bL=(vZaypQlu?cSu96i>_jAknZ*1<3QOu7F^Ei2CjbrJT1>AX;_j?5` zPP4KylrwLh!0CNhw4dEe_6lcoGLOa6vdWaSx*I&~(k;`4rJO3v-fdUS@!uoXvOM{R z>x#G~SuD9X<|;KBsQNqB?Od99$V88^=_t=!9{u!)Lp>YTb5wI(e`3@BISMh85-o4ZwG^i>1 zi)YJ6Mg|5^HYz2sl8pQmm(=3qqRfJl{Gx!O{E~bXL&)gn)+w?1LXIMB_ZJ@6)^IEA zwfo<79l0x+;71b!cTSIaZrV-7&CbEX@2eiqt#{4OS=4ENKt9!G^8`1} zP7SY3#_gM*+dRKJbMoi6zn`yX@T!>MBvdYY$6K*2hl}%0`Gn#R4T_Ny8%;vnc7E-x zZTr!e#ofluE7|e9d7kzc?RUSPMCNJq|Nb50{k#52&unH%qcv|hix=EF@A4w^rn#5- zR--P(V1A~B^cA8E4 zy*uiw#J%n=}ln_`|e!Ba{2(zMhQ zzUn=Ro;{}%PW*3-YYTaML%7yi---P-&!c*oQ;PPFSm(3fJ;ePzprY;7vA*syO+%e6 zDdrE-7Od32(|IFzdc+-L-|E&~MyDmi->PrF;!vFwe#U%`vd~`TLXDr1J@!r+KDEO3g}q`2ga@R-?B6bhu=zXBo@tHtT8)Aef`m;`xU-f?LX>g_&t&5qn^_p$+ljBYr8tU1x;Q#~u^NkS_M+XZ@0LXWF4(@htbBFtj&--Aes9X!`n&df+`BuH?+!3@ z{=WUEZccUF{onQHex92-=jV@^>5M;)td-mGQB3^*+k>}%$m`XqKD;h;@8g50KgXKS zR+tOtr(Ep0U-Z#hukQUppFfS+^(mLWS6qvZ{2_er`7`#IJ*R8sKTWYO{y33+^+!Yg zKdoGh{4q`i6OWxOS(jSy@X?{Otw&tdCU)w0R_vH~HaPW>cF_*YzV4WJryt*{(EGGg z<3SRWcx#N$6V1sx%w}f0#)uR-G8?-_iShcJ6g#@eMQEv9jLtHzq**G zpV+NeUE30~cB@-Ybg#^<&d+HOI@v< zTsg!W`_IE=@v}S2u3hL`)fcd0vG?j%eC>-CPMh~_)zYXXrZO-3+74y!)DDt6-jecs z7SpsZEW2)PF*v!hAZ3f4z>;lwlP#xqY`(^B)$}jJKSFrInY_l%LZfRfYa8X4pV*ma zvaF|RSsL8n3c)klbqF!#!;Q(w3&%H3hDO zeSed2@sRW%-PkL^QXFnu3ohK>>SQdiZO7KoZWpIxJ5{ll#_f zp(eNQFPzG+wl4KXTh!m!*?%4~l+VyHUNo1HDQ@Az=`7`(Iri!cjqjugpL1sH*MA+3GSD)(FS)Th@Ur*VOjR}!~498)7lTM zon?8&V;9?>*hbqrH%`wC-s~fe2|qV*cwCfUcTMlC{I&fH6%6MIu-jg0E$3@g+PnMi z{mY`cJZ_8rC9F>Cz1r_7er;jvRmInbqFPuudNPjkJyU=E=fv7K)=st67F&{M*K(ij zYp#tv4OwZ8FI z)46MIMw;Hsye0LMB}!g(!@Gieywl%yWgX;5teSgGu*2o>?%7NiH$RJ6s2bhWd+_y% z4zsxnOs{NRvV3nWxBl&`t6uIlIPPk1&3exNtXbp7s70zwQ1-QQ~TUC*2LSdvtoz znrOMcjX8od?EaW&8ZEf>tm`1xoVBjb2VW}+M*fmPtx2Y_@eRIj|iT%b1GZXza~s%HC(nWq~_s@8^OTIXn@{4btW$ufaCdn@|Vk~bc&KKJ8Pq>WZ{DzrPmRnYGZcgX3pS@;R z$b)D9mG7v(SiOwxBFm~DU(VIsn0UmiF=v0>RK56uz|yTMvse^14M8U(!OYM=t%AsPuUn2bL`gJX@#omCT*PBog30o`eRwo+l;A& z%4Ob3dv(k@dX4t=)=w&AxIeMba@~ZBY`wFulyhu9_2TIB8I!W+9~V#A=xHKcyfIQN z`pDBwJDR$+ckb}YnOZn|LG(7GPr?CWw_D@Ibk~&V@6&%AH|?s{t(1j@_ml7BELZC* zT-%&|K7d#K=91?h*XUTeI*5gLXQy0LE%Q*)=$`PxZ_$|x*PSC{y2DvN39UD0`L*!9 z%qEV^@eba zOcHl>ro)?qRUiGzv^Ciy;KiXiQMXjPrH|M}-Z^1-OZA)ag1kwE6T0K> z96dTWM|0sTu{&A@)hgAk4u>Nno=w`(IqBS$_;A)|{ht&~I62zyZP#SJE-1ngYPxP? zf^sKw$)r97@kvJ;$Z)=qm#uR-!imovUbte7Rh&0!ayJ^)Z!B3;SI{i`# zuxVL6$z$VEJ5M96b`?&$9UEur{fvGw`BB3ce&}J%{xnyD>fxBgnVD{Yp~trbU;Q|}3%`0^}Ww%uKS^Vgtn-;|$Q9J`qCPFU>u z$_X8xSDy%I`k?XmMDX(DMOCI=wd)hx-m9B+rkZtLpDpBk#cT0#y)XrUaL7N+dM&@)Aw=pX3ahG_N|%mN9CBjTC=~xeoM7f znM#p;^AErM&AO>J{}#_g-*s|zRtA;6*Pk-ZRDXD{h>5lHVpaDk=4)?~)3$7zbcXZn zvYYpkHO~C5xL+tTOYVZT-6pG)#gCo$K9*41*CBJ+);+_h^h;vUX2a*UwSGE(xL)$y zU;p6K-&r}8?83GC9XsF0#yt3~`|L+udw1>r<4*VGFTAMcpZ@dS@u~axbH3%7z7?(c zX{P(DnICMssP)q97EkxIcQczam#bXz z>f5qCa?9&d2?o|R<-w`)UGE*!QtiF`LXSl}71o@Rb7%%nQ@Iq>cKI>pYf9{(h~!^7Q5Ym1kAg)#|+~ zmaKhpA@i*2CA-ewDvSN!9slxd(w;N5l{3F9Z#K~{uHVbp5F;mhy; z``MEFr}w09?|%O=f%lUqIpZer}X-gNcM!>Ax z*DEeWx$oW4tuf=H^PH~*Wv~s?qJAMk9?`&0`?A{jRbDwF-YqztP_P52wISEf$>k+(d^6o!N z!qt!7^IwsBkY}mr(=ImGO!r=)3t#7YcNZCD{&lVKJf1T5=^U#X$@16Nt~@k&cX48P z^ZE&gFMSNHT`%xM>hIm`o$HR>dGe{^rPuMu|K`%Ers-SWWO?Ylzn-DKH)(|u*6F!M=~M?9(Kx%Sl=zi)PPp5oOA`nE9Q z=K9mK{Qjs-`2Jri{<@;U-CGm7KAKNSC^#X1pxN`O{I#dozdRP2{pXg;&+U`{SbO|a zoOIv&(|eVl^Lr=%7wA)&`rkm#@G1M5ujY$Cxu(o_v6Y>`?SJ$7yqzERbaLJC&17Ax z{#0A!)A~st)+f#?TF?8_c+G=z2kuYOj(B6f#`u-d=PA0|E^h@Jk-kLC5w=i43Fk8nkThB0C*DzV{tgC`|R~?_@m^nwbZ$ZsH z!72ULO-8plr`$ZZ;E!J8qv|Dpy;-{CC(N$%5Zg1yNTc5hCR;Q2$$rOA^=_Z)JwM%7 z`I*0z=ahO7!_sVpnwxzOe=E1Xw+(tw%XOb!<&QJh{rT;TPbZ&r_!-DErJJ4misMSJ z6Jf@IE7BHve6?u$v{J;ua!cqdmy{Kg6;``W+3WAPF{&ps>!iT~n`b;;%9VvoORMH7 zYxG+;1(h)^eZ%3kRY+yhSeEtn$fxboVBKT(t7-9L#> z`s1on?|Ev0%|s@RrHvm>_C4G^<(|o2yPTePU9;YA+&DL7<6p6P zrZ?{;{Yss8aGS+B+o?70RhP>s-oIdwI>~!>>HNT7^7Xs5oz*z^cDBeZSRmulSjDZj zdi$jHdG4)M9IJk1&OZMv(r&i9UG`Po-(r3bG5VT!X5k&`eZxpUmrC8%FTKCVB0apyJhm3RrX$2*Eexjg<59=etXF8>RaJ|`@`d{A3pQ{ za1YL!tXbN1*CEbbeZu{AZ~x>}B_n@92fyH$d7BI8B^A~&>RU1XV>NQwzTl-vnC#V! z^ACJ;4f=QcMEH3N2D{$>#Z8r|H?r24he+hjdS=^sHF}0(=H9k{*XA8aJ#KhWyH8q4 z*nF=1#5vOqLu*-$uU^mDq~#NNO#9Z%JxBl4EBXYl@(GSPQXl(Bx-~X&`oWeCek-B% z{=GZI@0+fTb=&vwu*;{gbMFqbrGI*POoTgDXkYrhAeB8!?gy>e-FfcM?`^`<3tv7H z-F0#1_Qsg)M{oP?d6~Cn_jC5-!hYexQ}2FW+*y3yagR;aS-ywyG9Bv6-D+kle_R$) z`)Pf;<|@Bu%O$SH{kgr9=ZtnT=b6>XoIS#YU5%CxR+M$|?L8V;RJ`hlUxnAi9pd(u z(-;2vezEesH7$3A}x_#d~u=j@laCr%u)?`He^+j%38tjqu8jZXjfsY!kP zcfIti(Z<#ve-6$4x*s&Ox_w*Y7abu626;PtL#qxHjZi@bR`*6jmyM>R#To5s5%5rG z;Xlfd*!0BKp+!ZhrJ;?9Q-zT^V~$F{!GtqMelq-VTD`3Z`A`Zrxh9LM0%| ze%sZ$o$~Lt<%LJB-g^7)+v9n=%XZ)2_IyueW#!C0o@pGq`|n%7zxVr{<@5S;w%_j+ zzi)Y8^JD6Ch8JHv?6f=tC#kE%cf_Aiu@?^YXp~>O#4CE?gp+kK?yfxD0`Dp<&L(;ug-szV#(Vl-YXXUxT7c%zm78kdk34UQ?e`=-E!k=|#mazs! zzBsNNqWP!$kI8f&`6KRodd|bvEdh*3#UdEWt}!OMFk1wU+(ZIQ8y{si#GyL!X57hr!>LyFxc6a% zjl?@6j?&q?lxnZqPW13!A9z<^$V#|+RdCBOt(elQLR>-*|2{l%@I%{#i?`3-dbYbO zySOCF@X?v)*>Stqrv5cMq!ZruEWsqrWoLYy_X>5H9`!{$rOzc|)l-gTg*|!CbJVvc zioH>aGkDvYyLzP&cm~bYZn&OE8VLq-On-O;+1Q&wiW9o z2B`?jzq4Jta_82Knck;Y%#(A9TVgMlwBpWMh0LPhO^q9Dq}?N9a@;-VUliwzO)fD% zCUtmWg~knS(QhHP3rk)^cMEQ{+hU+7a`a5wTQ`$qNw=h=cl>wLUsEr`QmQy@Yt+KK zEPF4B-cV&bUSyD0l5du@F`+*&(Y5&PqPHyPcX^nvp1DU;#B7_&FRR{+>dKU#(YH^`+;7mk?_%-(t9Oee&%AS+ z$*=oyh2WdjrEj_B0kh_d}ZRZY_oZ}y&mR}HU`D`p{(VqQho2<<{*0dQsmZ1x^fBr6* zn|^agp~Pwlz0F^4E-bjy(bl|ox`gMH?A^O6^js!Qj$WuBZM17{z-+gRDkg?rR9+AnF*Iq zJ}&HAee2ii$8C4}la$M~e>>-0xpA1YWvP3`j^}$!!umvRo~-HFUYKF;-BlQ}++y{# z7fjDGHkoft(Xo7eRQZ+I)}UOA@5 zZB-8A)@Rr9&mNj#d0E-={O^RFd&!inGt-kj@^s5ibCu65ag&Twy!iZH zy*oR@g7?#rGhJCuH`Bg+XWQ+@x?t*CjVnhvqxZA?Z_8NHU(jlu<^I5@p!-t^`{O+_ zckI^9%h@)m(=jS|=jys9rJ}OJpsn+t{&^X&J%sOlP@ivlQ;>H|s}SGr?BADXM(40) zHeZx}m7IC^WX9Wb2D&pBysQ4tar68UfuDzuIaVj$Hdwgj;zSi6$!S^dSD5d-Jx}q{ zW)_|MDZR5BK0Ow!-uaw$`+-#-*z#H`8TYE~ma#oqwyogTFI|y$ozE>4IC#^U+nnYI zys_%elc-&F%5uq4d)p;t;Tihrdy~tjSw5UlfA7cMo!9Sdtls!Y;Nh;#_T|RXDtGVP zDCT?VG)>58j=PogwRukuT1h)hZb}o2-Iz7?*a9nclilvmh4nPq)Rm@r#a?!KUJxoD z8LM@5xmw!`o}!b+J`U}L`oedz)mnB3elk0L;lr1#c@GX*pL57iW^Y?wGAs z+2f+0A7(lI4!NVKYrWC?sQHIkUF8}3o%U*deaJiYkVxQ4`QxE`{KHr7V3O5x)m$c^ zzt(%RyzW$?5{ISD6_&ieZN|J_&YuC;q9S>vE8l?o#uYm!0euUjiNN!XfPSz*cjwx}W``N3nl;nqBto(|)3N z$8*K(hWjO)7os^uXX+eiDNSE@s?cbzaa{Y+n>p+^U1Lw_O1-}l8Ka~5ML@p9c)ylX zOhwyu+m>6LbMA6(Zdc1MGW5y&_07a@vrf-kUCl3%=R%B5G>BBq*u0cyv;3i^Gi9Gm zb_Kh21)#hUPvy{?nfuS*wR^p&@R0h!i8I%|?pVT5Y2ib`rxVG-e>u{wl0=ZD|);3n6hW~ ztw+^iMtcHsc2}rI2Jcq-8}7}bvikJh8iRjVKm6&@Q@nZqndoBEgIZeB$M;&_u`AKd z?7#HKBu05rGa$hKIQ+r%(FP`?ezi{^RMaSdJ!%pm) zn0Dd#&Iu=avw zQ@_BVS~som@ZOUPPwecC{@at|+a=8wIA!-QmStBeioz?r_wYYVw=p}aU8A~Bf0o)> zqo=C>bsx8*S8&6Vp~0DP#_{uW=ZW51TwxOs`YbZ$k@SHp?H?L$mgFz^>pJ22 zvBwIMzcP;>?7cptH_mrV1dsbnkQYvzio%(37{Nrt2#lcpUVYV?~rmcIk{|u`NcqylI))h3mrlTW?vtxpr-_^X&$|w?Qsj zdOb3HcQ|GrTYD?)&cdya>elk|XW#y~;#yz&mbn(o-X7|{B`R^n>O<*UuRRM(A8onT zTD~>!PmJ-0#%s;|Tlc!$s{53&cS%O!r_a$>e`Tx^TPCFI#Jxph?WLrWjnfR0)A{?~ zDwsVI{-GkGbL9395&uGY_V4zO>-Z}5SKj%@V0U(@5Z@X050afcQN|{wJH9CNd9W0{ zRIHiy*PvJIapJT|r|qIncwc{hqq=|AL*GaCHf`!b%P(-A@t*6{zT^M=hbyjrcABPE z%kB4I&&m}ux_&Z8Ot6w&SMJl!#I5i!(Il(8YR-Q|F#c z#F+%K*$VA~XHyn0ludRyZ@fs{;#Q?rR&&pbC7n-XrkVFX&N$$r^i}ci({2A8%f+kt zt1s{TaeJMf-NRQ&=YQyZ>nZy9{lql+H>gDWCQ>3jRE>L%;NP|uO8i*r+2QjbmKYCPP@5+XAhXn4cD#} zQ=T<>WB2~F-8;?|6>dxxE-u})@5I9=Nw-hxKTMr2qM)97_tNUvAcjNQKdRKuy!(0B z{KKrHcd~987zgNNPw=!=JNq;wi}U@a!z-uEJo9q(gUi`Bs`tEpS^8#gw~SQUt(RwC zZ=0UCQE2N^9{v66Y@P>-Oygg_a?kHD`GY2PADb50ADQW`_uSylyNA=$Z}gvxh&rsi zT}<_t)tO7u8yw>MwQ8BqU6uI+ihn@8hTGqU;Ge2_n5l*?(ms@9V)w`Rx z{!`Y}cIj!nGdw1*o)o1z^9XC$WXtX=TJq*=H_U1any#g7y>r6;wNF^muWq@_|{yzy)p29r&z6d*~{tHYi{JKFW>z!x28Q;;#P9{ z=g+Zw5-WeWPqXDb_Q2fsjc&c!_H$-Ee|6jDI-H$ax-GNy>9WkS#hEdQJ2U6p&6pV; zkvFTHX>0hksoky2D<1Pbos%(*pFfb-Kjwv_*_O$N7fZM9I(Y2e!OE(R_6+&3SG6my zAHK0BzO~G@E6=uZLmh+R-vx(XwAhyX{o(z2&7+C(Hft72_kDGYnIiSNJvOQKL~{M% z&cCyNM0=lU4Z9*kd$O*o4JF{V3G3&3Lf)0~ExiO2LTz;7`w}AE64+{tX<*d8ziN3fj$y_UJ zU&6lYpy-R~K@D<}PcObMfOicNmqTQSJ!%egWBuwGSi={Uzo9~ z@`9?hxbFMNJ>I(IPYm_-9i@YR`dj_@{6RQ-dd>Z7wtI@^9B>bs>A!Q0jNH$_D@peb znVvMc5ic%m2Ui|2CCt zQLh=8@1NwnAMsJGpuORL*rs@~FZP)%m77Gr?9XI*nx_5Y|A+tUnu3BK8nPVqag=}b zeKE__%?e(&MoY!7s5W{0%f9pCicRn8cBeBUhtF89JCk{5_Nh6qPt7^DRC&fkce&pI z8;J#gZEr*C@_>u)BwbE(&-i1b#=poTX`+nz8uNqu->7RuezQ9@{jZ3n z%Jgo_Cx`j!;+s#dSg`X(pV67;i|?fVxtEo7;xJEMf6-qnyRMjLCy&?8NUW=GSvKqa z`CxXr=iev)`KwvC|J2|Aho<+>FZwHAt5xU6ruX>Q{-FM!|H{4dq|Yvm-S-EwW{NTN zW2K4^1H&n6d?Qkx6pcusFDec8^*`hwGDmbt(*g~7tvY4)y*FMQn+Hcg!-|nIwQ1gi_jIeNxykggGycE&07s}*X^D+ zVUg^fSBce+7EWk;%=Rhs!KaHI9CtdLOwFA8!W53r;>lc8QOuY=rfIi+7YM3L&Ek2hYko4ba_fOj@jI3; zJQFY{sIQvmdVQA^|AI4D7IW<3+rKr(s_W32_cnjBr2HgaaUVHzVd7W0KWZoZ>L!Qn zK5ji};iurD$-nm{e(LyK^szW$#lOcNo~_BbHa8(5Vv)L=xSDKwN3!ICSq)}uv_1H; zy*{q)^4GRo{KNFtxaT@At24-aW4p}PZ7cHBCvBNzE2A>$ zK4=iK_;T~V8b$_&!_4@i+={d)$2e~`)?XO3u2VBt{MMp|N9=XUt{JPndp|B~VcDqS zyUN7L<4fKy*=dTm=cbi;Wj)%vzgc?yS2rQwKaBr09?#5mUUD#^BX5&&`nh?Z=afJ9 zd3OB#`umJiK58_ZytCXf-;wDjPf*2!go6j2+rD)1ER9T+h>p3H=&^3~w1gcI(-&4; z%{6bm_v~zgjdAJIj|uJBnb(=qFTFY0k@#t;LG`MwHw}YYx176rDB#7{2KR{zR3+wJ zwY^$ayY!F44%xLmS!LyS#g#s7c_Xn@`kLrd|AJ3XxekZ4zxFWMVK#|fI%=z=oz6V2 z&4;45Zn$h3?Z$m?-5jaVw~~TxE%mxJl9GSd>GiJAnd>aq>FpWamzZec$a6VqhmG?` z9xF+stMk-&T;dnK!Pzocj6A+f{$B>R!D%@5Y30OV0AC+iX*MxggA0KVTxyUpobM_Q!nFB<9W8 zyT(`VnL)2)+w$j@8+bm~-=ARbvAUJrX2M#DH!B}hmY0XWc${ba#9i>of+HXP-Jjoi zu_|KS4egY~EfG4GO{cWg9(%EL+eKSL$7$Ziu~HtQeFy9&PjqNIwxu*rUdg*`oxH#%z8z-c$c{bqRATl~opk}nLN`r*veRs< z8|ylLt`JTAYtb6h_9iasw zd(%^IyAO>y-paQp_3EoAZg|SvSd(yBIVb6aN7l(^cjKhAC(R8TH!>!32&_wJpWV-hF@jKfBQI@bJCg zum6wRTNV2Fx?SZrR)*r26Kg6yY!j(JbKLrey5_ym59hh=opzV_KdGO$!e0J=SN-Y7 zcK`Kc|2yBhckVFz5C6))0bSphzEyttX`@K}spC?Arq}$~EK+~co$p_Cm;aNm!RrJg zG$vkYD@;H2h=0o2APx6hHmpkm)@^y}sT-fgdPzT=E41t3r7(@T-AlrBj&f+aJxkuW zu*2)qkJl@hqHCGDAQhUYco|CeaHmgVs)3H0$Aon3ZQIKjP7RroF|1 zL2pXZ#4S40Zp{q3;t{CrI#(p!GjRQdn_P1bFWJhHq|H>dVePLVCQ~7|(srhWGvr=& zy)fLH>l>~k!1rI@}=9Vdcm%g8CuzXLFfbYdk`>eRn1c$Ts3+QZdfZamxI%DsPi#`(I%r+(R-2^QyIP5Roh<`dU^r_&LQ zUklgTFKSO}aecb-?2`K%ZgI(-tJ}t1qH=e0JQpyJnhh zmhn23l1{}-k$iy?C@9fPin#ncOLP%FLI7fUa{JGo82+K z>o4VwPs{IrxlrSE)bjEVdO|lZigcvfH>< z7sozJ6~9!pHg0!|OX0Ns_p0TX&-Q|H4&H}(oat}$=S=7+eD7?rdXJ&&;@vCF-&|Xk zpU!$wg{y3e`7(X`%dKbquAg;Vbuy)GxABaIUe&{$B3oyK^4+&9_VPA9e#Gtb_N_am za;v*0zAN5vbKRHF`mmhoM!Mcjj^Sz7rq1p*f5BfGV)`jvnfp}0!s8!;&-J_Qc6pqdHba`+%dnd?{q&n!%l{`FvFQ zz9LgTWm>wBjck?L?$?DfGs99At$c6eWKk;+`s`R~;3K)I`vUHUHh?nvr6OTXgqcQ!YL(o|<=OuGEF+WE!5{||529P+q*OXbInDOZkyb9Me%m_>p8o$-va~%}X=-!z zcINk4hwlAXuJ1iu>z1`n)I2LBKgayi3{&0dFV`B*yC&82%3N>5sb_k#qGQ)yh+^WH zzN|EVO4N$k*?07p&bW4NYRUR|yGJLO?)e%2T3Y;e+M_3Tf|vg)akIWW<tuT zQ&Nb0_u@xk@sUkh+a7U=S{H705?`@}FFGWu|1{_4wso_%Py3R-`cmr>&RMx!KSQ#P z)oPhN6cP>hJngELyP#Jq?ufTm*+Ws$wHd*MhWixO-wt_mI8O9;;bt#!@3&%iR$UU$ z5awRu9kOf6z7><^M}@?kE?ODt_U5>>*4ByZ0(N`J-jV-aV4S z>8nK+uJAH^750%qF65(tTv+Dn6*t{(i{4szN%YH7l`XtA`HL@2t(Y2cX}XJUr^_E} zmB~Us!dGqyc8EV4l{sBx_e-fmk4l7DrhdB+cPO*=byaD(!49*Wl9Gm9)7AyQth#l4 z&P86Wx67qNcXjU5**bgaHvb*FT$e__l+xU{=u&Qp^}{(n!SaVD^%TobeYe0mbeDI< z?uZNZQ{PQ{)ZoQlDBnIYq}XBVKDX~HO4jc<9+ouyPVefYk9XWiuDX*ObVsA_=n_32 z{Y?T{#t|>L?)raN_U|!!V&JU(!77FC8y{D%PiH?A+MAv8|IwLRjYT3=4d3r6K5^r+ zJ+U%_E3(yzzffuNqiO3d9Gx_9hT z(90J$7K`hxTUWMkp62?=XS;9Kg}tly+;_6FJ@HRT)a(lrPUgog{;d?}Y$5UF&Y?T5 zpT3-1cZ2V9$xExN6(5V(#qT`3FL-s)uHvtobZ&V_%>2R4m+0kjUrq7Iy!EQ56Z=bF zs;p%`^~7`gvKh*%a{JmQsf(7kTOH1AEPK4_bV^ZFWFYkW)a!c`d|J(JC z#E;EAH7%fG_EPnqisx?T?$w*pXVP$t_xhcWNBZR+1CL``1tKXV`QM9_2xZ>fva{e zTH$>0m&*QMDla52HLX1TpeQ))NOnX=(M*B$zia+wJ@((koWfS$qdh(6$<1{eRdxnf zoXM^(W81d;{FaS#i_iF8J=SL$e(AYN-{+#B{Lc5MgpTdkS?_uD=ew`~6;afPuZu2V*ARaW@Ih})SQvdMf~ zTD;zR@0fIyZ?d$6ca5#R>(*Z;ZSn~hjtAVhqrP)OWaBn&xm@$ZcON&biVFJtbkWI4 zrbjQZKbhB(e%MgtsBxX{^xbdn&DK4(cg^MvE7 zRA}FSC=i&?z2jKfDoe4{y?#$+st*{N-Im+UUM+mQuT#Ey{p%aqZ#TZ?z1-NDaL0G5 ztwgoJ&Z)-@--V>k*SIV$my#xzlqPqK!3{*;KM;v1W;KdfRtV;Akn-=A9j_|W7N zHyAFtrq?i=+g3??K>sB&H7~Hh0}J- zZwsGf`)~MN&z!vF@Qg*aonCKeN34)N81y!C&9!+4t=_I^tm*1J`EC1WohPmlebN?c z9k$;eyJhof&2fu)A-zJ-TZ$R`|o;=CuhKkfW{ zt-WUgFSj}Fu=*=tW^rVV(M%od2G_LQUDNx#Ogsc$m`>Ypr0tONiD`a09Foeh)dq`i zp0+a%?)oGbVzDx!J<#Xq_X*4Qo(S2~(s}E9rRLtAthb_9ve$3&j5{3l);;4|ocro; zY*t(6D=hmfV!dU4;`VRFcb5ER;?K%|ZtH>>3jNxW~7GdLB=K5=qsh5p5b{{K(Jr%A8B*`9l4xnts${mJgXY~8Z! z4@9iUoElklzT4QJ-hH#-R*Dsnals0q}~QI|E!5y^4LP^ zPM`IWz`*p)5$)E6(+y`^)rgi$8?Q-J-#yPz#w3aTVfLM}e%UAHQn?N@x3;`L?(*LA z%x#5z{__ueYLA-pb*&e1-N(tdFAf9OFH7ek;so}i;rv`IJ=w~~e(N0zxvzHSW9+K~ z!MTrDZu=PWn6u{afno{&sEThRkLrNdRVI--#} zSC0#(O1&?0D`j82YjXJC*cp#@OK+}Wmt{G-@!}anpERK>ubp=5Hm!PO5TTdy`O%jJ zOFI?h5(WB=I-GeP8M1w3N&C%bt+8^GW5~@ZAvfi|=*nz#x^z`c^|G%;GE3jo6((QG zXG*Gd=&*Mr^E|R>wmA5$a$4+9%eXjwiy1TWnrHMa|6rp1Z<}oTlBbft6N;u}+m;F4 zN?f{6bgztR%3ifCDKpo~0X*cHuCa~^)%BgifW$OMEy}DMzeeubY-s}2&|2wz2d#0JV@!JjMOy{Fco!>ZR z^`yBQ{)pZ`cxuO=>)+Qo&&u)+&dpT+7{m4P*PVM6cQwB5sQ9bs|46y-x;($o`uXMe zFU6Vte0i|ay=wcme_XRRFEn|+U`3?ouBCeqyA2j$lEO@C6#aO$o3 z-uEBxcUPR8bopfG)Gv`KQdxZIve`Xr4%>Na+?=yIZR6*)Pxo{8CC+`at>j9{-yJD? zcXr)ed+g1#)*09L++a)$wCA|5A9pD5g=qI|t!ynzo%-586Ib6=R5>nksJVP6-#&w_ z2dh6YPd^y7syW`b{)65hgW4OrW7(H`+^G9=!{|qm_Al*wUVLxuzCTQ33D4mV`4ArF zwE97*^1`i`BbbLOw!+~<}1Ve7hPeXpsL<7?c)N@v$~h28Dn|I>!|^Y)n%$8-gj}_dRf6>4{I24U)8-zwTsN)#Xne^wac{kU-^0$Qu2DQ) z@*#P_a<+s;`sy|4;BRDBphnv3&1y`3KLR*Y!M*c_dpi@%&cpoy$Idj;YK4 z{zTEiyFhY(`$xuIKV}|&YgkvcL+$Uj;@^DzUA%v4EUo$1e++*9ygy^<$3L2;PU)8Q zzR#u4n`chF_%E6{QO|7Cp8J)bI-UlHm)-jh-sG%0?@-e`AqIw}jtmR|-pni_3>+LB z49?LR&J0Mvf~?V7=+er;^BM!E85|Q*B=;WRb~$&G55_f)!xF`@1nPsWX>|n zo4dsCv4!uYC7E}M)6&!9H($zXUH$&@UgPq2w$JxJpI7|O(tX#r)2HKEE~xm4F68_F zaKSU(ynXK-cD^4U&Fue9u;26eK>vsMKfjXa{SmJFyOQ~T@BELi&#V6F zXI@&doa6LIZn=N=Eq|!qo5~`iA?_r^$```Ly+1`QE>c9r_X+ z+$YvKIPjMKw0*e2Ykg4qmFM4ADKc`L`MRpzCb0g9D2KaEV`6AR?fZg)Erlu)G9Op> zCNE4-sW7Nou`!yLzr7}TVnT*Gf9v$6A2L*zT|98n;X_42xBu7b&eKJ~M(>t*HfOb5 zyIEew!}E=YI(MJHy8H{z8<`h@ zRlB}_e;*R_xAyn;9aUAkzklCZUSj0-a8Yj=t7)WbS>>O=t4tC1L?Q%ue=rG}nurA{ zuktI~?~wUk@VudavdN>*=HGrD+H?QsyE8MH_GStf-)ZI4&DDRp_*KS*^7XGuTVomH zk39eQnfu{;krf^F(jm^j+8whvaw4Q}ENwgFa{TS9Wj}A{T&RDsR6#8332B; zJET5T@%;*Qo*nht*D*iT^QTQqe!CQ3wcC|cN$=?Jw?Z4rSog9d<*nCW@Xghof0bhE za*ioq+1fd$wr{w&+b*M5=G#Us`5xo@GxYO?JhYl8Cl{(6w8?z7w8_tId%!-WGt-x< z{rqKn=O(k`HBqZCwklr)O)t%TCpqhN_|xaotBh9Wa<)ZWT2lJu?A%vYVQCL1zqAo4 zuH2|q8QZuqBgH@{$aeACWt&YDH?87dp`22*aPr=L9jiQ#2z~6C5VPkX1EWY}?IP`h zo;Sx==T=#~c;6#uwWO`ek7u=^vx;#~O$im9|0C z>cYj0manP*9phbuAKdyoDMNUNs<@}Vw?y~h8|<PpUB)t2CL)Qx_RszaEny zSz=mq_1TYIO&1v+Zo0C5k@c=aHGKzizpj(1oiVe*MXC82~IjN?Ph`3n;AM? z`FD3@FL^t$UhCV^xYs6LcF{jxIN8W4Rfjh*ozsj-t~Z(VL2uT3{w(DuRmCwb;#(h1 zYMYU&p{jP_tgq1Q%q0I`N37GTPA=_H(GctkuAFr0yua(&{92{aqDe1m8z)|~d7rTQ zy6{I1oq2tG4zw?8HJJR`#D0tP>+faHc5X?~XWe;t%fG$uJNMcZ9#p@3y)sDKTve^$ z%$(EJ`}Z38>hBKSpFd?qMKV`ad7onVJRAT0?1Hg%9x{wycRW0M`!iSV49JjOk~^ zHih*iE}41D-)G7pM1{?6N@ z`>f2uH!2{gU{UAnQYOn=p26DI|7y4yjT_afw}>P~UT*uEeLZ#WmgR;|zC_$p+2Q|e z^R(nse`MU)?jG8fxIgU7!T`(Eq9BIffBt7@OkMor?7>aj<#^nj55E$VU*7!mw!%m3{qg0S4CX~GVAB0*?H~C@oIRyybBoO*g`)*O z)9jgKH~Y;=G3?oFG*89khs?ZbA9?0YZJjO^lhU%v!sT3@RJlf{V5E$gU8Ibld#X+U z=S?5F10z{xykSvO6`WES*;81|Z?2ek=#I;d&Qm*1`G@~}xyj<#*}}*<2eg+2UFn!y zF?D|2Q{}zk$Nui{KW6%8YR~nGQ>J^Iz9-1JUpmrN<0K?6ka6yO7i&~{;soRLY@M7L zj<#Mx-vbxTu5R^AaGn>c^l7iTTDs_p-r1!(tUY%Zwl$`2yuGrS&GU|bp(kG>gDa1v z8v~Pe(Qf|D27cCtjmPeE?eY{nw<)HHpRv#Frm+rCKEOyXCyk+OQ(vGC&4~eFXl_zA1 zjI@glE>AlltDJQtVRDp`A(xP5!sAeZu0yAUt6y{d`n#q5hH97;Zx7qvea^S;7boqG zi<=i`+BQVY^u-p&LtbxRw}pWc3$`W6XjmASkd(8$tBl5 ze^bqm_`N$f``CdTu6xr2x1A_j7m$|0nA-a4MZ}X7pFDHP(0v8&9=?o`Zj!le#kZ$r zE80zebnnxgtcf3;W-oL-{W|t?w)Van5&Hb>oQNvWyVk-WR4%b)*b@6_eC{Zde)bvwXhlJwL9iEUT6qD3~nd zs}*?Rt|(Si#I~U4ve~O{i?56Ft6%J7s19u1y|Mq^{q=j_FOT>7*Yp1H7w?<%zxi+~ zeC0N5I()1~{#tI^fW&NIU-$aTd^Tbch9*&Pamp1#<<~*6v_-RMmLzcb9ZLwBuT+dm$ zCMozFTBxjXL14;3FOEAKgqoC`0-Vlsz7u8p&Nb)AUYFe+MR$Lf$eBuU9r(rctS0XF za{gr*&jVYRR_`|~=KZRandW%uOs&-Z8+~i6_E*kHew{7-b*tHP@qiioZp_|tW0`)M zp^bnw*GINqv5Pmpni%>xY}?|$Xvfj4%xzO|pL@hH*Vl9N-aG&HY+I@-HTQeFw9XKcIGa#t+8R(0x^%BeZw0lTW1KI=JMiIUGy-?Qi;>y))} z$NzXo1T-uxeqZ-Y(&Bt#bobg*&t%+>dh2e}*0>*=Dt+8nctsbl=lKJ1s(Y^lok*GQ z)H#{cH%W0~X;|d(Kwowbm_n~%43Njzohv^TyamEIkfl{*4T9P zYw$l_d@9psQH@agiuw@6bEl4fX!%rVv%H2We2VdpO`kO4!sQN!Pd&a>c-L&dMAez6 z+fUTISz=LV<1r(rLPW@}r~SoCPOC5ckCk%-cI2(NTWZsD`PR$0<$r5?$~H5^A3EOI z)mrxJ_>yP)os538EVFW&d`Qw}+PZm@SNMjX_rLtd|55O-GrTUn&&B+cF4kN*d;C$M zj%WDR^J*)jHu42LxUBM}sYEt@*1m6hI{S{V`F1_?4don)sdZl#CmNzmzPXjbG_4I#tGFsIt6yUmtK2Lk!iEBYhPZcGJnUU9PNj~ zvU{R_@~J%C?OCm3Qghk3B5b*#pRw+h??P(P(WM6`Yphh8Jax_UgspS7-wAUri~4V} zYOd+y2vff2k&~9U&YAG^k2C9|JG<{MJI~u`xO}Qrw$r)S9mZ3(zbN}*cWSEq0>4UW zzo+dPA@>}G_vQ!G^^`qTe-TvICHFKvWrO|o4|-}oQ?J;$SEpHid37T9hS!Zy-*x9N zS020aR47yBF5?R&gVpUTcBZy3-FwaA+w#EM2IoJi?Z5uYDc-p6Si4Tkf9chyuT8q2 zv&i-Jiv6aA8+BC+9V^An%w5mrZ3^8kx;>zN_3b{f?Ja)g3)!xEu1WpGb3RkdSD{Dw z^`ZBV`49Zxu)EXdW;csj-N&PD`y7-DcduV^zq{?#K96Ld*M5g`uJauYtG##W*z$=t zLSnb>TRH2;GPRBW9A=m4#IIk*yZ60=bouLJ7i$)r^|ZSlH`hW^z41ZT`m?b-H*LjL z-vwRS_59*DuZ<`7GR(gF^v1Jw4*PdsvX~gO#>nr9-(#05&-Mu8wJ{233?6Xicmx-G zR}yCKJN;0o^5*FsizeS(pj}~Tsq$Pk=Sl3frIVwlJ-Yg@BSve|9nHzV7x}H5{B1#` z=;Z7jExuyLRp&&0cVB$0UUpBZ_mlTChiIS1b)L+>ir6mLpJdu{RpiAllLh+zj9cZv7#yZyZDQv=XGY_^@i*LQ&Gt*7R zpmSZxIcK#(hT_W5_}zMS>b_a;c39W`eK+Oz3;i$F-%Xp#4;A|?Qm_3OCwxBf>3;ba z-M>rrYsMdZbeA`YDY|Tp--Qc$uHP9yJ(D}U)Nt#L{nI{P{~>+WT09`?({>Gww+mPv zyfWz=(EA&|&nbw?T zY0=&;8)F>1M|b&^RoTRXIK2w&n#?wk`rOec$)R{({ndOoGXMl z^~E-M|5zrr>GNg#$I&il3RX+auD@tl_BwFN+|N&$iuDXjy=@nD96Rb4v(NQaSV#TQ z?WJ97cgZU}sMbqkJ9u*Wxq`g1qgeOxAHnWV~86x%Vdgm=vM*PejIf`{J4m<5lfe8MQiQ|M~W<{(67$ z3C1Z_Qy2M(B&sj9?hb5ce6>A$4%fyx$M`Spj?X!=Vr$2wgYud8>qGCjoeUF|TmCVA zaUJW~-@es?zh3tR}#~u+0?TScD^4V-e_!219Q92?vVA&UWH|s${Nt!qsI}refhDe-+o>MHAFo zX9)bBZeYvMMJx*Ku)M@eR#5WwDj|P1`^#4(HC%5u?S#9AW^~43W(<8!e zsOT&y5niShwfS!UAB$%*3Tn7B*55Li9+%)Fu<`n)V>7Eh-TZx^@Nk=M`kUot8hT3_ zrr+o2tg*^H^g3y&iG@j`scgl4l_-{zBHp5h!m51F?(;vi;^ekkyVm6`TkAsw&*iP& zWNh#~`%a&o^#6q(77}hN><_0j+trn>nO$f5NVzZB{=w@thr|+pb==+g((II8&2FpW zC$A5zzN)|D;i;82e351+rcaE$;`HCLJZ9Pcj*^sF7KWX<9~>nN6E|*u=sJ6aQ)9qB z`+vMEKmQflyw^*^MtP5H5bvRP3%+|*n1AsSh`SrF>-131xAs)k(UU?P%AZo7?3I>Q z?Md?4v!+6MhCsbgaKnvEn-@1`O8>0V&(buU0G$+> zRGOymf_ivlu}W}iQCVhkDw?$(u;T^oHwVcHT; z!6eR3{q5J6>g>E{R$a}jR>xuAwQr(}uziF4DT`_om)UC9LT2B2SCaS4{QvE_XTHnF z?_*r?$dfJ8rr@IiGkYsfP{os^qeqk5zO?ZyxtZdzW}U2&%JxuqgP6=y4tx5lau@Pf z+*Utd6I^-6{z=rW|IX=`WKK^=+^G7+q3Y384qM&dZZB)s_9UG!ZE|>#JHLJ50t2fQiHRry}N<&|Mggsk`0`Ij7bco~UK#3rHiq9OzSZc(JFen2R+c+v6mC2gFniIyrBjM# z9JV?9dF8BGi9gS$AN`OM6QC?n5MP!wY5AY&7cWk{Al`c*V1~=gZllA$>+kDLj?Lei z#(w@(%EpN052v>MReiCrd&xp0@37XgSq2`W=MUITe5l}@eaq@}^@&Myt@#(&@>_Sm zc%^Yl&HO}m;m!30_okhC!_(QX+|evi_}?a{W5c!3nC^{{Itdev)=i$Pa=!PEnCK2m zoq*+gBJwwe{Oft5QS)AWM>S*lMw6D^JHA@axpv#|G2gpmzim%#doL5Ee|fWu4*TgH zEoRW?y)N+D-|yY2G_GWx?DOLL-~T`N-6_9c`+eSL>(jR1?^Hj(@!a2rm*MKP zBuhA2`u~78<)2O|&Rv&HN71@b%zfCym8l&^bOm^RtJ_zIeXaepu$sgb&?9 zY;OYE9rc`q%5FW35xd_tTjfqp`{zRL&2N$aw1E%7=FE1!u-ctVYa~@~8cLjg=`&6axg@yLw`~@Es z#H)8ycpTa*RL6br-V@HV-*@cQ4Sg-RLGIwI;;p+^&fEVX>AKqV%dbCewVZAe`zDX? zs)EPccNf^|xogi|wJUG4iF@wkKfylDtm0P9x`6Zpy#YHs-ddcO&Ec!Ca{71RQiJ^y z_X)3S?aC9@T^Hrq)y&cTc*PaHoNwE$Z~yscw*L0bgU++8qURQdG^H*(lAR{lmc#pC zj$i-wqp}KfM3;$7-)((o-Gtq)Q)AwrdGs>0W#TfOX)G@7{F9f>p5&w1quYIADig2b zhE;cX>fKK~{?6*T_9pMU18V-8t2?hX8JJq?Z9LqO*5_xOwXrDJi&sv5@9~@25jvL5 zm3``-DxQyz9F#k;pl+6OW6CPowks~O$--2^;LgW@dmdnq7MQ2=k zrt{^;oo?&fv+p!=$N0u&X@33T^seFj)7S^s79Dx>EUnz&#r1vOKRAwd?t9B&$|;~z zaQV%1&P^RvyKmh|t!2Mn@ZzKS?mgPEjQr*=R4zM9+dN5k-IesqW!kQ~m!=nE95-C8 zs+o5|r)A40&Mif@Uazj%>y@(J*(Y$Qq?rG$a`c%EvpBUo%i8^tPB~~O^kkKnn(lo5 zoB3?s-(cIsuRHe4^Nx9=eq^EL0Y;9*gPyetk*yK4_vVE=)c&e)GFhyfSCJ{7>*E?zWthGSx7mpuM8$knCOE zS1eJ^maXg$&59djN~2!Y%FbQbCa^PicV)(!+d@UZo1WY~eK&WC63Z^JDyQb<$tCKu zdcW@TRq^b$T5$9I+{-s_z2du)n_0G6apu{_i7zAgr|JCJ>@`70jqfMKR44^eNnj@zWXw?+!HbcQw}z7w4C>2f>^=!OMfmLKmU@e zaFLnWL7r#l11I@%EcU$9t1ngU4l4dt+059l z^E@lFGveJU74ezD**mg>91UM|P4~3ly!T#5*EOlbk+!Pmvh1uQ&g5h{EZ$&xrH4E9 z*v3d>)wrr>cM>k`zgBbir8~#XRJEK{DeT_iky#h|Z@BX9xcztbor%|rC->#3Kb@@2 zwCqNuo`-IpRL67fM{T{ipC0&cTBzRs(mOu7_1c%%f}oArZ=RWk9}!W!{3m5QyZYrD z7b=P~KCO|u!n);*hVQ}$88)E~GiEp}VPW@||GN11|M{O)tW#G%VmRqHOGN+j@12P~ z^VDxPvl&hQmY*!L&?w^K!uh{9{b*ivu<7FdwM8~uT=QR@3)ct@OI}@Zw)>WEMScDE z-?f!uE-R&)?prc1mX`nW<=G9%=!p&6ULJfb?OFcMzVblC)HfevQzo?ZE9U%;fBPxj zJdi!SSVNArDb-t4{3-`Gdy&iJ85@in-Gq84e6Z$-{uj>mvb(&7X-{o+pH-p%E5m$+ zRc}^LnAh_0#}v($Y6+LMHXBzI?)A5?%%Aki;gCW7slRr7@1H!0G06*g^KwGnMfF7e zrx*0TM(lfYCNnftNX~_!XZtJZ=OF|dfFeDNzQNCEszy-puwPAKt%Cz z@DG#6yW`umA9!){pRQoJH{qey4ZX+48B-rx?Qm?%KloRuF8tX0hu>3KTqKJP{oC9( zIJBKkoXr#8Ec@kDN?yzCAI!CH8;_^FXjShNxIV9GdFmfVJMT9iR`l2(kw00%Gk@~O z${NSEzehytd-Q{N;}=yLH9QSGHvOZz(Y`|(RfRivj?Z}P|1sU@-<(??#DA=6S%0!( z&a8(P+xPSx`Qp27Z)^VP8OQ!!_RQF_Smm+)$8e*6QuWG*qd#op+0Rn-S9hQC!`(*v z+TSbty!zj{rAPij#I5+F^H(VK*nHGn-m|~?dFmhAe~r7`-1Xmmsha-lD)#{m{tCW% z%irkinmtRFW5=!v@1wi^FYc*NO8q~x<)sUe`c0~*l}=Ane3Sk?a#N(O{=_sL%QcdZCS)(XdGWL> z|M?AZzY;bkINCEi#kie(@mVk{_@uVrIS;+Ww4GcPhu%+q7^qkEkVBlkQt5Kcdp0jq z^>6Cyg4v8E1S2=`ERA*g^!?SAZrKN-6-_VeABCD3Y1`JN{}nP!RP|PTYWw#@jH(LBU2DDFnS|b_%s2Js zOi1gk3cj(PH?uy-FY$q7=wyLe!MlCl&-R)9dp)Mx+ZS(%^RP7thS%L z`vAu^$UZcQ-~^e3Q7-yhB$~B+sqNMf}w@LeLybHR{Z8y}ek*@uB*6ypf!AHxEjnU1s zT~CMmTRv`EZ*V=~&x^Ww(C$mX{}%{?X=tS043fy~?^@$pU}XeQxnj zzO($1#-St6+g8oWTRKDbPC|s$lL_&+gVu0top)0G=)XQawq<+$Jbzu6Gqe}?eBrOH zyg&JZG5fdUUleo|I3%yg{Y+&J&Aj*|+gRA~O&}A8u+ZJLGmrFaQJ5?nA2&bcz;<@t z9x0(ebqo0C*X{hjX3DyY5o)t0uh9~onDOq`)o$z9CYJ7+EGCheS(DGKnQ^S`NM7P) zy_%DJl6fi+BR8Vr~1zKr|d(`7B1MS^Ez}w%*;t~{tAxCS$gG6 zr)~y5&0;DnxbRKo^WVmu(l5BL3NHKlImq$PtEty!?2Oyq?Q!M1=frC~El;GrbuQJ+ zy!9pQgx|@H8&Y1>7kj0OUQfDmpdr-emCEd=EYfFp=qfs$Z#*z^xZ&l`J>QP$!e_1>LA7zLw_o0#e)U)Q%m3LMocGkv{kOhZ`pU1~ zg2@^CSX#TKo=q zo95UgsQN`7(VTA~sx9uka#P^bkR^eaEeqc&-tgX|Qxmu5bBu%kvB}%zKb0L4NSbip z!__f)im%;Dktt;xH0@3V{h6@3=AwefJimMA*k4#(yr`Aj(BqsCUCYpROj^_9sq&)o z{=6k$k8Ix%D8Bnqp~k7dHQD?kfw?yVCFBBIem%VZCy~E&aem^jZx$l*svl-e`sN^J z-tusZ+uHB;p+nblhRY6OE;%4@YyM%rWu{swu$##;JSv-Q&uPJ z{FJ&QVCOA`4^^=VPbQnjwyfOMo$|G5sS=NBqJ-f4RBIlUO)Q=H+{?>ev~^f)EqwE} zZR5+N9CMp%nYr0*NxtuW-k{81 z+ajl4NqOID*gI?M+&hPNUEL+!b+e^Nzo&O=?b2&iRgdLPth};kK~KE9N3^P1=3O)I zVy>^*W%@mf=lz^ID}GKP%dukb)J**;=9BIS^DNS9U#RlxZbEpOb6*jEXO+J1{ofhC z>=+(TVNYDNiG7(S|G}J8eVq`ww$M|`7Z%k>n`zyB5dQ73+EeR-rI(n^wb&noEfvoT z=UcUE)rBbvX{XQbT2-X+q*c=+Dnl)nn|;Nx%?ri(UVV#P%HH~L>iLFJb^C0oUr*ZEmJoT1m$#ylb zbb9I+^gruT5F@H^~$==mFrkkz0 z#k8jC(z7h)nXa>R)!(+fjLI!y{dT}WxJfkYz^38@x0qkv>5OSSUU1#OCsT!S*{WY$ zhqoB`@NTl{!?FBa6GfxEu-Q<60^3>fR%#tl#<9zd?Jq{Be91mE&hogJS z^n|sagd^7PVS0P&yuy+_T(_rOPiQZi!}HgwCb*LMUC_Ojy{Do-Z26RJv1|{wzV`cr zg-@A(^nS8#mb@pJR?&Xu0N;e;=J~reuD{Z2tGRYt%M|0!ag!!DdHPCZl{cE^-Y+|1 z`@eGjzByYbx9}cbV=!lJoyUFk6e(^=mCN%_H2&vlJ=Jc|^J?j-<05zM7~4OUuL!ae zuFwf!YCrijptoz{gA3g5FSs9Dy5%We+$<*kzP(sWU9RP3=9i1Reke+8WIuM^N8gYC za7>Kbyh30TK%#gR)44s zofY+i(Pp)mg>c`bd6yrwXEC_^5d14IEH!_n`@5KLI=XU8C)+P|{kpO((0!s}&oeGx zTlVv>OPH=$_fEItOX1F3ckZ_9$7dW@S`+^*;+khJy!&No+?DTFuHH6m3VR_f7TEGzK8#XD^wN#&p&j&^mv#ocSfQSI-Z)~bOT^dE3f<6^(koNr ztFFJUJZzvlFa4!=?sl;%ao5&UY4?kASWZ4{m1#fkP&UIa?DUoUOSWx)kQ>|cx%AUf zsh^6sgf>bf&OerLa-Rj;+#?CXPb{}dNQiLX+20cXvPJ*O;U^Nk1#-fAmK@%?BD1Hh ze4&}4_q8tZQ2yB{@f> zSV}MYG+&~PyGOfMYO1Vt$A8l&_1A-XcJsAau2WaO%OKh}JE7~bnBnV=*#}H~k004O z|MINFz>9meuW|FnPHkIf(xt(p-Ls%bc|q8bhnMbrEjv`o{&1JDU-2DR!*X*AneS2` zLO5+gnfyifu)kkjVb^f~WyQAFZ8H}=lnl>YwDwfl;gLTb+mvQ6-hwv`!(n#9>x|G-Vs-Wto`>RYkjPJkNH-S%R zi8{w6#ilPJj#aZ1WYs**A4oa=o#)joEd^iESF^Ovd}sU<$G+V&e7ZBUxzh@dt#KjV zmb<2f9nthMzGvw4Rc2w;ytKdE2Dd&c`IPL*37Fu#pm2rSWf76Wh1w;omX8fy=&5{3 z`m*3^t>Ydqg*at_JD(O>6#dY? zYA3YXXZF5RJ{>PsoR14>R{OU2y_Wua6OitFWGd5MevDTn}5l& zx>(`Irpt~VGGI?!`=Lk2_C~GZyrsepi+Ze1XErLOOHHv_Yj93evcxd%MbaLQ>iXvW zug{#nIP>(Jc;Ua?{RejKn7h>Ywu7(Ol@!Of!9U!EK33JL#Kj-^dZXg4j*4Q}f(w>! zR6hPP{;c{o($_w*pwxZZHVd}J9S1W`6!!V(GUq zMKd|svTh#Q@?YrI+||oPEmxI=8tJN~tl|xN&atw%<;r~SmFh2p(hUw8?0Bqs)_~zu zhv0krgopAxuS#xd-hXU&+0@xm<8?;pX1?KAszzktDJkM&`>+^}Oyqs~Px zxx3l1@Y+F@=S<8kFWopiq@K?IHdFP->n8QTaG9XBOkwNBz_VADSbfmbGM-B<`22bnYrCMjE*QxQWFz&nsWYk%zB1N zi{nTQl^q5+TgaIKmXemLZL_`+*DnP1Jhen{x~b>4#M zoI6gpoZ94KbAQ3{&s@BDaZgG@TdoMp$Ys6SHM8Ij)6H}F0R_9JE_&@}bX%|abqL4x ziG>{=?U%olSZK+=m*sPCl-O6n!t~K@r}Ue1)g34IroA*sOYWPw+TOcp1rtlZ!;0vy zzbrOQiLm_cwC{7GaQOBQ{Ow;8Hu%lX3|N<$DZ<+9$H#W_;?4al+m{@a>rMUhrhd+k zF9$rH3m5GA?8&_T(~O(*=UdONU%saM(G}N?LVwSGbf3w~rWDr8!CQBw z>gCRz$L=XQb;^^Hnf%v_Bt0#rx48bQY;HMx zGH!Q#Q*;QmJ-Twm@tlH7uQV-7UsZ~@^T;x$$iJ>27a)F7>SvdJ0cWg8}kWNg=b?mbyH=b67J-@Bumf-_GQGMhhLT+!CI zW`DD?L_tj++qCY|>jj0`o%@AzPO$Fa*Zw;1^Owgy()WuVB&%O=d2{8~>Y@z~4d$!} zx^PW`-Rf$(Xie)p^NYW>@TecYx@E??#eW`1Rjph8Jv(=%!Mu6bFIP8|x!#dm^nLcq zzq5ZB-0^x}{vc<^s|2?mDwAyk=`#Xe;LTPx046Y_NH|M@4+ z+&NPqd`QTkrFNphPDK_00i_87(=axNbo0C~k$J4DP_%dQ?vJ06 znx?B=QmM3wWb>bPTu9$nalXy8Q*)OE%oKOdY+^UgSoLKJ|ANerhpvXc-wTXG7tV~k z7BKc(zfm~mAme- z`I`6Z7v5ZJr@v-fwR;yOER~4UDi2k zmdO<7v#_}3W!cW`iMzvga-WLzm}QoEZmQavfFs?TZ+!V95V|6E;b)G+VJ{zkX6mi# zmCNK|zqM%Lhpqw*DWw%#4=#|4yYi^tp|9-H zrH3+4OFOT9dUjzzad+H3HJNQ&@^$?arDkU6=g29px7}eYaZ4~p=tA_Yh&w9Lb=g8} zYcDPKc^((Iwdm@jsVx(?v1tE!*dh08gu z&wrkd{&Vozr#9W^FM1cfn6T^U>glFeR6Yt?vHSb3mb)vKm2|2}BDLD&LeM@N0l{5| ztRAQKzg+7tIcwpgZFhL~wwtYqh`k-Ke--;78K=Azx>5pD5~^wtMy3*`==gEkb{#u%&>Af@BntQS<6;??v`{;IS`;2Qr z8R7Mdm%Mz=N=jcScI)_Lq>moJ;>22vvJ!SBJ!u1>59kmDnxRnLN|mp!fQv zW_7#sA13Fm)+$ll-*5lf>h)z|W#Px)&(ww}NL)SaSbsXmwr$g@jT6J2HMZ>$-PIxb z@}~cc>23l2rdKCd#GP51oO$xor;C{qQJwGJ#IdK$zc(fKpNH*p&9Y;YH1}K*Jtk2t zcWTn(&hA(hft)m^<6`qBY}{6~y4TB|!79E+QY+_SXBV{@{GOu%| zlTN1Rv}D1%8p4yGbji()Tz)ul+MTuyFP9oJEY8hb(-$}<-t=I}=R6kFrE z@LR%_8LsOBZNj#!D;m6j=A3Y^YN=wP;OGvNO>f^iaPvw3FV5>re4juFa7b zdN%v|o0&J=zT8Wnu4*zzfU|S+%;=jpl4SlCzKa&k;x~Wg&9tde-{+}is7L4)r4^5y z-h>s(m95}VUi8STCUlmqmfkT{ExoCV+aH99p1q-_9~bySTWg=Lt<|$RLox& z@j7r9pSo5dahRO{JI5?cxN7{ zE#Xgm_wjw6ap%nSc$-PR?(q%tsWkDmU#1A(pYf?w9% zI=^yVf6j_a%wHCCg@0t9TIazYQq>_B_EGI#&RXBPOXaG=NVo6AMM}V{PfK^Gw+yh%jHco-*83N?eS7e zoAi;xH1dR(g}B7!=NxP8C3nm}t@`xKjMau{b#Wr=Vuyw?esMA+61p)`~r^ z`s_Ex2(I3;#$$@wrmt~}w7#%RZKW`&@zKVJ7 z9@7*4>y$Vw|EZY;CU*KB-L>%l{QXsR|2ED&7*b^BzgjNO?EKwDe^*c0q@^o7Vbw8p zU$fnF;)UAWp4`3@rnf=qw$P(DR@DWaVcXa*J!jWjU-&7f%X8L*cbDDnEfqQTJU?*7 z($?piWfd_Oh@Pp05Uk&~lCdc*n<=C08yclrCDtl4%bAvq&DQhDvzb!FqyH(cd ze^f60*3B*N^^Gjg3hm~4D%{{Z@%_c<+lzK5iOrvK(bM$&mO`mqw&qUNt+jH->)+ZP z-1a9qNNSaeeaa>#xg(R34<)%jn#u9x@5O}4m!3#0KI@?)-0vZO@lxGpf2;8A8%ypV z|M<6Ss+mxmr2Bm{{Z+rJr{o?^_S*G1bN0r}bDK7|8kj#moGAUs$A8*p)=bwKkwS@= ze5&M+m;SZgx1&Wq_{NZK&z_x{v|KxxBhf;a%2U(~5 ziMU^O`_lFpS3G##cC4secU|(#`wyz8uHQKCweFYuCI&U#^H~o^ z2_H6ySHHr-5qrW|(1M4h`C$r+{DG4kHa!aS-#@<89(k$#A={l3du;bK?m0Qd@R9?g zg}mE8#>e(cTNX!GdD}nxmX`e_WM9xB5BEbS>ZLvFrbu+xw+E*4W;<@a)B5f=?^G=w zgN^%x{u%OLk$A>*O`4A(=HZ;Dx7zpayQH){?8UnS4{UcFe6j1=_J0Z|Do-j-@cB8x zx!~R5bAjvbuCq3{QO@Fgy?oIJfg-n^dNa>^J)L6LlNiO`CV$M6Z_Vv?t68fH>-c(JANdgx{?4{Q{HdMcb>mY4Gv5n`#LhS%QR{k+&nIR2 z!-<2&by1pt~PJ1`P<`m>dj?~owGiFUU0*=_^7ORaq@;`2`i>`E9Ek{ zWoaGDtemmtY4X;vhSFOKITzX%L~6UNHe<5hk`%M1_ekn3iI}y$M|*Es+*#y%p!SxF z%>v(JjB8o?vw}Y?3G0f_l#07}>cccM(f1jbKa{U!nxA3(ab+2o-DR;)(|(B*Wo$mN z`0O&qTQX8B&n`AvJLy@*=apX34&Ga}4)<^SWFvndsD^#J^TCuo9q&ISm2F`{EAAZO`N-Tbo^Gq%I^Dcu*4zIQZFZP<1-iyr=GoQ?4 z;Ou{}Kys|PSyu}BW11sUa87Ewex!TvC}Jc_$q9QA`g`D zEz}Lz8pd4t{cUURp=i2cQudW`^JVui6-~L7R~O7{qheDPwZdhXUMqIK(N1f zmcVA4#>Hw|4Em=9CJQg%70Za75%&DDgbz=O%tekcsavi+8Rp8nX4w8S`u5|rVNf$OLLYT`7nL5mH+kIE&FfS*dDF*Pe1nL*%qI=Q?=(G zr7u%Wo8`0T&=UhKj+K{ds+rW+o1Q)YuyV5V)|pd2wK{)H^eNvkGkwXUo!W|wPop_C z(=EDuFZ3s_l;-w3x8n=@uiLulQU1!v(eR zGLNr+&N~{gFQn|jmLJjcC+nZv(U@Mirs@99Kft%E{JZB?${PuD*S_CUWJ*3b$EtVOJZooHt*8Jag9-S?^<4&m;({|C_br zU~Q0NM*fDV{G8<~YtN(hY-nu=9@&3jT$wtp#u(%GqP zZR;bYo{39KNv-d4J;|qYH|FKztRum5tXhMv>^uJPJ@dIg@|*U_CpLZK_qlF&P-vgt zb-SZcZ{t5?&rja{jrG>4gqOCR#`)XtC1!I)e{9b7a8no<&&eXic zf7P#VJpRFb^4Xl?i%$yGzR0?*eGxzDl%Brk+<)T7^HiP`CVp3+9BcYI;fPdXc$LKR z=Qln|PZF7$^yi7+DmJf&f6}WLq~BnYoyYV=-?m}jT(%cQ(F+y_HT+vDzTo{0=Czwy zt@Jow#Qu2CvLKnatlpP-%RR9dPgE8d*4Z|4Jukn^n7e^B>K6Nj^2QsZ3wq$%)nK^In*`%|Sc3;oe-a7r%cjNEh9$wX{n&`oP=vYaXi^-X3}t za*{ijD`4WMiJsPXP2BY^7b!$d_KKhDFu!~MY|n4W-eopLC5gFOg}uH{3Qm1@pSJr`&Wa?~{Vx_KuwT2q*)wQDr~MYydlMu-9(RfK*rs|e z;M3VB8x-%&&@4RnQHVKw(&-pKUYp~a>L1$fy2kn4dE1kHHw3b8iOe%gUeD2b=U80e zJCReVX<-qjM=E@JOw$CPO>0)2zIV!u-Ky5dOWQ=uch20tSYi5}J=ML1bJCA7vh8bp zee~WR-v_e}Nb2PW&zR^{xveMYyTo3DTZsmzmN#ze3F3YbC-K%yLiEA{xt^|>f^W~y z2)vMBGNbLwho0t_I#=FGvPrASd9|7y$y_tZr6)!zE%Y;Y@6IPPs#wz3zCUuaf58_H zuWQ!UAD_Cblsqp_T2R5LD)RN~hiUemhdwP2i1}wCV-k~c$@9jc>)AV&=r5G~u(+dq zuWH7V*O6^4F=rn9oBJo`%=PXcRib7KFTOmOyGMI!;r9zJk9W=2JHT9Hd*HqNqt`xi z|9fsX$AA86Uh|jzd;O!ZkNZnBrS8gwtv$8F%GYvsCfnPB>VN#8F}LcLY7tgp1_lGX zH+y*zyA=Zam>b%jh_xZHphI?T#Wy6MZjaFT!PylW9T4`oxl_P&io|RN)tA!wr;YTy zr_D_(n|5UXvu67P@~L~Que>e4a;^Q_lXLT`&+RRK|E_=j{e8?8z2QvfSywU5W+{Ak z%>CU`6`$}`>N3AC#T-99_0_@F>ZeubXHB_rQ?z3Y@W+_6|XzT*K|XmYyVPV;TFHDV@qm`KPX>UiQ>u;^t#UZ+vr=# z1tTx{<(J;X_baW;UMPKh<^PWjSKeKy`c?AiQ^3!;-!l~>x3=(4{q^DBzo7mN6INag z5t6JvUwX)^?9PR1Pl0)!bH(&OG;J^o(S9uG$2R-ktOcihZf=X0S<~~Oa#QsS3jwY@ zg}u`_LykPw-VkXmP;qkm)hWNUKBTx+SSRggtEm>gnZ8na?oI9-;jrqJv9WbB=hrOX zz07Nix;?Aney64Xj=U|&V&Y5uA7A5^f9RLIWcS?i9fehjw)YNvGI;MSd3>GzZln9X z_W4e4?RB^xo|U+)@W#*Ru;BH}^XDlGEc;=8cK(%{l81Qm70t=iSeLZF^wXQTK`@%hcchMYc~^w`xH zIey9O7IkNK95gfxEBYA^N@q_C#Fl(uWMKGRtuNY|qMK*W?#q8zT zmm@A`)vn;bDwTc7<+8@3?kP@dHCYz*x^X>PeKvJ+-p)I1dwnwx@;^9!(OgXA4?~?s z;Wwc!UdH4L2j0Frd-l(>`EwKN{`~nR>%hrB+2g^w=4wxu37$%Qzxl4o*d%!5c*W1s zZObs*eqP{qpzgtfjcT16MbtPgxfoJi(Ix)Ra>^ zFXgT`t^n<#DBJqVsOC)H(#V%AlPTJVt#3T~f`pZs^yaNbn(rmK;GJ(BICecs~<@*fu+|La${zEUH`xl;MK zbeX2%8MBn*&zG%V$$GEj&1uu> zJ4-fBeKbn%NGxe=P;LXlYuoz?RoKc}2>T)aKPGTX*ct@7Qx%{D$VD`ECO0ijU46 z$nDs$+S0@AIs?>{&vdFS9Kfp-s% zRa&eycRr?jhwr;+*S7mgTh3kH?6Za=tgun#i1RI;YwW-EL5cQ;VfZH>CI*IQcoQwr z`^2DyBP`Kk?41xfKK0-HzRb)k9!!lBEY7Gp^f(9^wd-=;bdnL9X1UAJ=*A7nUMa(G z8E*3=84s~1D5(8lu-1fI-QBExa>eG^wv&A4 z?0J>h6E4UA1!Ex~li<|L?8(x@uOpe9co+hR-iq&0~IaYSg_tcK$za3;-!FPx-?44}lgH*i{6GGPUsMslq;#L*fs`Jk0=AWjb2(G7HX5oyUQ`B#Lay_e? z#kwedo<>Swk5F#wqT-1wM7xu=XdK&7*t)L6>(kG-H<+Z{mkRZkFP?TvMXP*qpBe|J zaO(@tMP`v#^d@I?Rm{-3Xkz~A{~J-oL;?CP#-U)=sKRM@YTxBKYsv(cBuzp`iD z`ZF{91C^*+>&SOUkSb}%T>z0W!Aj{ z4XIaeZU=4l>Hcx(-@OctJz*xUS~4!?CL8~C@_9`E_LDg_Y6fGqOsjU(`e#q?{hD(2 zoQ{{#>K0GFTi06FUVpz-$F%w6Qrk^Q1#X$%8#S$gO8?X{sQd}$WRx18+q7u=Qp*3A~2;#abI{@kqrR}bC(V|VsJ ztMs%bZm%vRiWsCxOz;f=j`~dj+l6d&uw4t2TV}y zlYNxRlT=%;Z$AC?+2}pBjTzYnLSNZxXMN2ptWs$CP})|w@?;uU{uKM9 zos+LE)o<|KbMpsh`&`COjf+>M-n{Kz6(w8ut)xw}|PBNHm&OSex!-Zy@QtDB_lnr`i! z!TGgw#WB9aGd))p%lDm`x>hsluIJvo?RvTF+8ru^8#Zq;t^FyfpZ9H--L{}wwctJ0 z&5{ujMsqy_mj^yIxR-Y(GxOPk8#(vZ>A7$Ix?JL&9oOo&p7Gz?kCj^rUzXvpC|VpQ z#clC`x9s|sPuaGrr$QEce-HJWcFf8%J($;bM}@xmS!LSODaaN+UAl;;PM&z3~4ihT89il6kgl4Clz?T_&8JY;wL<+)RD)ngCc zQ4#hny7liV$FBeN7H<95HgDGxtkXI5D%f_1T8}8`BlEBq+32>CKNF9G*w4t1E(U zSLu1TuQ>8@o8Y@2GnQ*t-B1fE&3wP@VXW_s@AXgC7w*vaKfCpjTd!=-+bX5a%RY;p z6@Qw!R`EpKU#Hbc{}!=s-72(JwV|LmYP-kE)?Gh;QTWVe%2Qq``7Y8m zDlM+JIeB)=)IUadm9n;XDLL30vA#5$c}QfUrdO>|-@{1B;~(ev+-{lmc8l|(x|wB{ z-nQ(T82{)*3Hv>zDMx}Y`C)f61RTKF`sL@T+R#FtgIJS)bacL*;VMjoZT7zUEAzK zF7G;4WZ?I}UCC=v@*dWH1=mS0BF}jQd+4cHo%`w2Wxd9HVx6>tmiC=AN zY4fpb?d@*eGc7>jfM(mq{wLYCdoR{Kp77G*YQ@J#c6uA`-j=^9aPiIQ>8Tgh4$U~S z-l}D#WA5$_#cMUbk!IBzFQ2SCeCmnk?;xM4Lgy2dJ*Rj5Zn9md_h0Pqxzh}c$lj<+-?fB}GdzG``x7kj~D>9dL?9lN38)kg+>5+)Po99mb{5oG* z$kzUeME=jJ!yUFKK1Do~{PpzI+JhI$g8e^Tp0juMDo(HCFB~4XYS(Y2xyG&&P_yKU)wT=Z6cnDcKUM9^`-o@PLmtmw`7LnHO`&sv$DTju zJ*X?AsT7?XsI$_1(_OC0j;%X6^3Qb|h_~3}$^S_?8rrw&(Yniy%dOQK4AgJ7X6&)8 zNGNmZm>YX@md4e{z$42%d_M_lIG*ni^GRmgJ}1d-PaA6>pYWs7_s_PA{ZpxSNc-R| zyE8@kd~uKJ$+?G8V;*ca-e7y1S2{ZK_@9v6oakazL-mbwXHTy3t_d&vRW>2PV$FlA zLO16Lu0MQcfwFPCv|CYPPfW5?lBl%hyRLv8soMJ=TFqy2tJs_Qw_oDk{3xbb(_Ocy zy}3I3lHg9yA4jHm&*7Q0Yz6mbfx{`jAlC77VRknAVsXK#T+^lH>=gkvB z)0r9m=NzW7ZAJ^R|W~-dH z`9wWy-a4^4+n)3!E)9s9xOh)9Q>tj!l50^Z zn>L9ZJ!KV}vC{B@h*sA2$9!V5RrL~mKKlOA4mqu#d_|D0maSFR@MP;5E)h|^RNKS3 z+a0I+uFNaEopNf{s@Ke)&K=(Rk*DjCcWyfP^W)?Kcvd3~nsUu!f` zJkiqbsG;MH&kFBMpBL=i8FOmYzP3BcdlFW~xvw+W6k#{LwBpgsUHp@Z?AOn5?s>eS zccoGG)hQ3{?yNU172ubM%IK7v*bqMR-zD*huPsvxwsg&3KId@Ap+Fm*7Z+Z;&oKO` zbZ_JFjnDms_x1!{-mI`=Rw0vgZqhpA8EY(>j=JS8YmXDWsNlH3J^qlAnaDhcz86Q@ z1d?5@GoE?%VZ-?|Vy;gap50g(U@)!QeZqR1Qz15Oo~It~nbNl)%(6@Esi)b=;E2^W z&3sQSYEBiu2%P60Qpx!DRQHX=a}Ly=@~#N8>^!f%{KKXqspnIt=Z5Ud3jC=Rtm$JO z74u>iTlXxs)o1eNoY?$b#(ib_BL<15cNU*GYqzui#S!`XQ~A$c_FJm!UYYKgbcOki zN4kNZW&6jN`D#;&hD(y6%(8FyJa7;?#WnXb>^{)O?1kNS*Fu7t@^9(=}GJHv^96W zY3jY%d@y0ky83qv({4#HhSFvTT zYHESjjnlup_{n6KylD4rm+1E!^>CZsgjem}1H6Ha-EX4Sm~v4von2u<_uQ0c{4-#azf`G4h?%UI{d$s{AMa+qea>ugICCU(&zY|MDMuwQeoB3v@QLd>+ZvTE zw|#1#^At^)@Kx%vZBZo zb)EX7uOlR<|6jHK=8}`sOm0pplZ*FNjEgsxSRd_bs~5Nb=;R$IKK^>^edKlc-0fS; zdFt3Uyt?w>n%MFOvSA-;MOMC7yL&0_@iy+B%QH@jJ}X=j@S#ZTI^Tk`jWgwMFATcEKYs9aCGWlN z{RI+x6t5o4Uus`re$P+-o80k(nnGm)^_fyNJ0<_B`ir)ID|`OXjb*wH|CA59#tWx@ z$hBR#^-@Iak8+=sug^A>cN+V&Z_YWqJ9b)*_~~btXZxKmH(q!=v*6U1KUdw|&&&NO z{dI!R!s_*nD{Sw}Wol|y&G~b-JtcJc%jFqYn=76#HaYX%*sv#9!Q-ZZUvsd@nLPI! zn!>-{xqH6gzocHmUzedI{W5|3@O|;;58cD~(sxIl>)QWf&!&hckN#(Ti#aB>iI?4; z*~*qj*je@uUu<*t%pdBpO&fRr<*r-v|DX1rKh*+@E!%%c+8um;Yii8pAK#_w?mary zK7Uprw|)Bu=`Wx1^|rhJynfX5Vm|x!@4HiSp4>Mt`cycv-t^yJwY693_q(sX5OMDQ zrLDi--@jN|_1pdh$L9^5PycS#o*!ZN_1TmEoS+e~fPbPblZ6-<_BrBPl50ucuq}Kk zZbiuT(trJFm6txKOmH~lG)dKf$#9aOkc6b?iEC_fIx6$T3=)*s&Q7*5m=&0oSh&Zu zFloEroF$pBX6Ti@XcE7~X6?Z==|-tj*5eCXGM%K-i<7teUD|T?l3DDe9nbewR&Cxp z(M>t2cK*BC_xq~P|9pS*on`p0Kd-sxvtMxd{&b(O6lb{#ofLX%{lQR6pr`JnO2)>FX&xaO zffFNkgsh2Fo0Y`AYNd;fuK3x~MVeDHTANR;xD#|Vy5xaQC`W~T;+B%VKLRwtzM$mxy|E>kA_4*v-@7cE=T&z6n^&4GH5M_?bm0AL^?Tj7e~s_zoOZr!ihY;h z!TV{?9>(`G?#uSENIpKG6CAzy(EVdFVSHbARk82>UH-M4zpR}1`&+4!uV4A{i%Y+k z@P6le`$jP1D)G^^zo~T1J&DK6}HCI<==SytyBEieMgO%KaUw* zu;(c_oZx)xK%S{Yl9ls1y?Of&v;A!kz4|IODp$y``Ov$^iC5nj%70qfX1n#ujHY|* zHvQZwdEd`eq^N)8>fmYH*4*~pP{wA%lT_G$ef>ALWBe-*IvTbHToIN?49Poo?ES9= zrZv;UB|a~dd}f}0dN%8%6Az9Y;hEg2lbM#@?6+`7z&4{ZvzDvjYO^Ka%uQ4w!{ zN4!bS+M#V}WpZ`RX(PKS%O>3xn;m%hnjd77LcGFxpdDjlrtfq_1M>d>#eObVyZ^^<)^^|&nwHNLv zs&42`Zv1}EC-~fyds7aw&XYHv;rxR8RhYohAiLWlhh$f-IKyiu9KjaL8$Z)>-#LdP z=XdCszWy;s&v3r;ji|?`47z4^x);axSIr5qY@fh!TkMeLw&XI+!cXUpxZRUuUs03) z=;FD>GFwlcZhy2 zv8&EopG&a`G`5|P_-d-|<@S2!m9f(TWa_@o5WJRuQjfdOdm&fylb#yooPD=lb2OrJ^PiI_n?q_o8Y^h-{fY_ER)(IqWZj| zIYWw5@|PELcdE+k?9QJKlkY~kZrqhve7Wt|7WE%7=jP10HT%i0k3A9hZ*T6E(rhV? zcCWd`%AZ*I=*^CvZ^7?#)=gc=b?Ja;VYPw)XWxq3dltFq_{Hsr<8VCYSWwJTchN@S zFmvcJ4ZagQ_`jdN(QEtYaAxPW(-r*^l1C==*dNc7)W4i7v@_*aqk8JDxm6tA$wj&R zY#g{X_fuXn*lAtf{h{#CF&&jtSHChPt?)Tq5^!wEgo(5H1oO^qQ&HNYzhl;PrLJi63>&op`diaOR(;HzLba zxlZhG5METdJ)>z6XQ!IZtd1V~e5-E%sUVxT3YUOWLY2{OIM?PAkh#?-2if zVn@&ZsfDgSJA1-8%u^RnW=lMMT(ycnvAArVPeyD<@VWWxH*P4C`yL{6_wd*JXXgGb z%XISlcbwU8wp3?f(y^_JTNA$+n9i~By)eVJdcuo1zW}2X92TV~3`7;yoP3kubJ)T& zx#iaxz3Rt7bFa=!QDo_~KEGhc3EeBNrdKp&YTr3CX=cfdXA^(!IMRAniSgoxHHV)~ z_@aHB^}6LpPR)f1hO7z^cjUyp3w>YlwmR(6QCYX!&C-?Q?$Tol%TJa(ik#Uz^Yg1a zhRfP`%{s-^kLkKH-I%#s(C>Ixa`kJTA2oa0Us!Hac_hzYv1jqE`BjT{$AwOIyq0?T z--RPHFYfr=k=0@IMC$tcE0<@aZ1O*{JfByowtKHx*LAOD(wwU}9o0V0dhhV3ZL9sO zZA*A`o+#ZhQnT3<5fig4f>FHV)en~+E+Ki>C8yUf{I*~g!={eYx2HVVrhJ+Em(ROD ztBiLonzOUcc+HAk$4s|x-SpF9OR96-HikgenfgZi-E<$Vv@tqtTqQX}Fh0D=XYzaD z@Fn~_F;eLTi5ZK|J81`}3tPw{ z@fN!$Nv#?e7(_ZR_5QXAtoyjV_RpN=zZys9S{!)){?fhnpVPS=9{=X}U&Ok?wpj4Q zU#^~qddd65U+;XHHSsn>e}`TB@7Hs-25+z`K6g+}YWLg^X@0gwWyl`)I|GC96&WsWB4=?i1 z{?D(ZaqH-cpyO}%9y{~(PVk*Gb9T&>HmSQP8(CV{y6D`s>(^dq=bk&SU|v}md?#u4 zzKD*8jVrWX_{yDqym7T>(u}5@%-L>ro3C!V8J1(+d3eq2rnBFYes8`tEi9{Kk$tK| zs`2;PYi8#zzxZs8?$&Ffx79cPP?6fQ@D|tW+H2|oPxf@ERxb~z;0sBtUC{e6=xwpa zs@X>_eU6ycY`gq^-5X5{|77>gYp*<;<8qSw?6z)=d(m05kCX;$^zwQ7AB@x5dtr|D z3A;|FPzV;_te(!%E>GoUWU(oBtmv%{C z-@GO2@s&NIu3pm9G`BAZdFin8Qs-1J@oQRlUj%JS-d!YJreVFo{pCSM*GBi3?hcX; z9+HQCPu*J)akJfBM6|!?zhJ7pT=2Uik54h$ES5RqdbC$xQ~5{Nql4F{2KqXeZxXw< zY4;zo-TiZUkGFp}Qj@l0;(UL&`Og;%?Z34Z`wKW?OwYX2vTJBJc^mii?_aa`X_9e= z-W!N=zyDI4^GrTPvc|($_R^9M8g{dC=3QRlVdk%Y{(o#u%>0{2t{l1ZCo^Wh$W-q@ z)6S_Ump$t@-dZE8@bG)&3(J#c`?M{;>#~)pJyMKciON}_jj0% zn$?l4r%EbMHy2i)F-^K0ToJY0@T9Tso$m%}(bL$ zjnaRrT=P9tIq7NULxmK}&k1~U>wfe8i;+u6cammd`8Hv1Eo)zs53!uFlvt9CsceRRgO;@>>)BTp=Jch5Uqc5Gc%QSG#^ zlBUx?=S-|&TQK?HmA4O{9h*CC8<+FjgZ|2r@n}P-27JS_>BAqZtu*s?z?RMBxN-vKQmzNnW$$cKJ+}h$a5$l zQr)g~f5VURd%7|w=cR8jW{)pt({~7gFjQens0Eey>xvmy?f3eyU&HpJN|U*2VBJBPjLni4>b#hKC2?KY@5Q|3C{M=zDJ)-(MmFqA z;oEXm_a{f8hPhA>WiWYAVZ@g(98*N~J)jJ6~5}tkuxHF#V%fmeIwDQ+&RxfBbEe;pG#| z%P!75b2D=iJBQx-SJ~3(=ayvZ%9N|FU+- z@po1q_x-7~>f5zTBHP}s>ArY@@94kYf-m_-PO}!639nE6BfD>v>vI`B?|*WZ-nVu# z{D|V(;F;s!CmFi(z?P%&=gSJk-@lUn^(f6Y_rj|6x6g#T`yR}DbF{BspgK_?{DZHs zz`8SK1vg7R_MH)nKe%1&(9N7ew>bx|UM?>wf0ZoTeZ`^Z+BM&UMb}Dp8e1I|n0Mq* z_p&!a`&KV~^XO%D#oSKG#L(o={Z_~HY`ZsgS6LpP<9+3hP^ieY9XDp4ew~xI^M~EN z3!2+r6gD)zx1K(W<#=}Nfw_$TVgtVzFEsz?uldOM&=YLM4O(GvDSN3 zwvM}c-tkr4EAC{^J#_B*#t!eqbx!A{HmXE*wm*>2ar*cmXbP|1a#ih_yiqoBrD=~dq*{~?cSG!aCakppSVvS{C9ZtimDismX8eJ5y^ z^v&H(`uw{0H;UKa{eElKG(X$Km0|g^?dpjWD(A8^M>Ge#d~u`2u6Rws{0(z1`_9Og zI-Frsx^JE#C#q zfBQc`MaDzXneE*$`vbe*WrJs**Bs(Y+;{k$i+jy2&C?&=e!1Y8@o2$a z+h-@ti#qqDM=lIVn|CnmIRCCkW`ED7Xk5uTo~HMRd9FcX>6XVQ8&*0^-4LE|fOYHj z<7r~rEvnTwX7YbP+imZ7Dz@ctao+j5;nhPq=b~V(%&&FTJ$byw5QuRQc7GGJRs+Kksl z!dJo$do%B7&rW~1 zC9Yq>yukR@^pm&e9?h7$w7fIIaLogmr4u?bE}!`R9lS`^S>V$vZz`@gL`}0!rI|S? zsYQ@c*Sk@ikWtrZm6u*9avo6=+svurrqEeCv4?SEM1;;X2F8Pm$}c@_GQ}#>j->S* zbUT-nQ}9UTm|vFl%HFpRM6BI9CP?h=oqHwr(%zizHclNUG%fh}|!(%`F`u^$9WF>#M`ut?i{CBa}_lNq=59cra z>6ZTaBRun;Z`}Xbs{JC1{wwZ{Kl$YU6#oCJA^)O}{aeoQ{_%Aiw+C_)zZ9j&_2({% z$^29y_w+P-xZ?LIN?Hq?TJPkA1W$BYCH*;bijR&Mm+B?$srNEkkDc(I>6CmoqNzNk zU`|g@d9tqWgzKH3qV)E9UYdPoM@H8kzp2+}FPXXQLP=|yNBJ_7&37VPL@&+OJu8!` zCAvzep?K-X6CPW?Jo7Y;pCy%ax(I}UK?XM^D?t1om&29GuYEBFFZ#?XM zagbsEbhGaj{1w^1m3OV*7Rm4a>Syuld$J$gemP4m++lh{{?!Gk=DAV93$#4~W-~GB zUU~7k?QqnLfD1Vjm2$clU%7Bc@XPfw_U5~GYq#l(^swCiy*ulA=EJ@T_ry8dww(;v zkz~=_rLp%{XwMQ8u9DpS?_OVV>bX97N>=x^<(0}&%N3WI&b+Q2Hr>F=t33OJ-0##| zOE!t9uD&W7Sh#6XQg`l)(va<9oohofIITV3%nb-O{cd&VkmyD`;WNT*EtAr07v#SD zzCC;4+k0j5{XSQj1$9L}{4&d0#=q|6iwlPyF8CR{aA}KS=i`=NA{=H}Z)%g~owWh4 zFw{%4NOsA&@0af}ov}M5E@l5Yx$0uKs-B-yRy*>)m>Ak}XVp$?(Wqm$w%Fx;ZrkF} zvSE#u?Tf?HuAaYpa?5WWp>E@a4l|y8m&?0u#v-}%>&niJuj1y{9pMTJclX#cyWn)G zZ;h?%lky)X`6nvan0*T07%Wc`xXu6lW5G_tJ5S$!cb&!bu*3Yq!khP}rLsBA*v`#2 zO?^r0Oru24ww91)f$V@QN968^a{c;lDV(-2p1U+#x?;u#^PQ=>#aGhTUQ9^Yud;0A z^(RgpD(!`~iJM!^z4&jxTT&{;xS_p3%~B%r{!Nh=ulu*S-FW)v$Rw$Ei{$8yTc-8kPIo0+Fz{m*X*a3=&>$uqF*nn!`=i8TkN$6-OEhomyi72-cJM&q zjhj<+yKitd85m0P7qj1*z2jy|`t^tE(+&G6^$KgHj~X17?XQ+Z zI%J%CQZsQ@K`vMClBk6N%nvWLFP-4BXR780wR3aI-p;g1j#XRb6T&h7bAR0lu8ER- zfveZ+X5D!cd42xbptWjq{@8!|ZLz2OQt`zdp~;I+-q29kw(Wa{te{vnul)19$3g>+ z9%AKw{YoUtn;|jYP2A|^(q*j2j{45}`h@A^*Ta)%CU^fk)e(?3ZC^5{@#LrHqz>fP z-CE$i&_b^+v3G|1(YY_e3nkn|vO+RtcZEjr+eh0n-)s4$!xEOsoGW6Z*qRr*lCyu+ zjn=zbd?!z+P0d@JCVKyfw${5ttF^v8Ox7w}Ta3J zdC6>Q-g2?2QJK5D9{Wr$JJH3sXWb>gtl*64Ub`#p?2aGa(r<QryeCif7$3=X=R3 zulIU;WnqwdCRgdoE55%ux!vm;7f$MXFLWxY_0+6@6V(x`L>q4{4qDIfF8Q~iRZx-lkeU78<)!-wvA!wQ_)XJ^N)6G^%Jyt8UIgsT55&= z{6mM=&z-vX+*pQE_nGe>{3mOs5c+X?^^Y4V7BnT3I%gc2_HF+4r^|wmvk= zm}{okbD763a^IO*6RRAocPKA7{$y*0<(rF>JX`2l2*f~%BS%d}au8j7`IQ`~&yNQJ6vzgXLb5yM#AM>gI;E@n$Q`1uU>fzT% z{w&igCEYd3wN#%~ef^Z}o@j7k$Naz1Ob#!v9IidMA?^O-$YY$RT?2o8uh8uKRCI8k z@&#!QIg|A)hgP0WQ~K6l|iMcYD^fYhQI+G(E%fCeJrd zxwqs>d}PeyaDmt57N4)1y=}Hwq#`4IMtZYsqaNRx4|VRBJYKTNcpcqy{&y||Zq49s;>v{%m(TB(*UQf83l`_bE(X})0P zt5-Vf@4IO6DFlWIEwp%X=g-w?imtcL`n7!Y{Ccu&-h7h@!Paf3_ZX$MC(M3l@-`>` z3-_h1o0WH*O6q%Lp|$MGj2|nnJx%(v;pLV^;j^EdTl1xgm-E)9;$7JRdVQMLMLd*l zt`Rn8aqj*7llwcTw|j+g#{YV*doohBv&e>=O+H{=%o5B&F7dGp_UjcijE3*WWb zG~a#Mhv0utc@@7iJ@IpUeob}pFQq37+3T{O89h@hcIQ=G&+{|2fY)hff_@=cj&t9oUxVZZ`h76YHiiCnO9{6mYz24cFo>(kY8g5)Ae`W8lBgFq~*Qe zl>UCZ$-BgPOLONj;bTDjqlP*w`!~p8s?&pOC9r=kDC)t2Ty+m1;eY zTA!RdZ|^k!%bnTBkFUQvX`OA}`dm{V_Ar*mdF$kkv>Xozux;rKU!AM@ReAi=JeQp_ zj@!0)9@Y)b?eojCZl9EOIW73f)Q5hh3STyyci1nSXM5zG{ILq#rk7RrtG+Tvtdc(z z^_OGY3-^nQ?&m7Z&r90$H+ORD9+uaIlZu;e6f=B}HhQz^P-@cG>=X8<8H4|7eL8wV z$j*Fg8W=H>H;kIRLA3P^>>zWw}860^f|DWfRt+>KBc`A!S}F=Rg!S@wdz zNW`|q>aR)IOa9HKcD=d3lrt{d_w)S?{PA^j$BX`l8~$1Ny@)@c`M0~mtDZ~$g@1BD z{jr4y6{DM-*Envxk+Ji@mNzEnxmxDz`CORzVUIFT(HjGa1DbV{r{-^ZCt7EAVcK+q z?N#?uD~b-f-TS1oY>xBOQ+qz`aXd4*@zb8w+MnmQuD1FA%Io?c^MDsK&(FK?ZBF-7 z@!wO8E@jnCTX@L9_IicY-Y>3CUc@Kw-E&6r8CUg*(=%4YKk+&I?Lzy8fc-sFf0^^_ z>9$;^X7q~vCd0o9+L=2 zbiE@yMe9zvoCs|O#0&E@0spD+EFF@^q2IErS-=bp5%(2JpcIOX=<}| zqlWihJ4otHIc+jGS{;6^@>j<+^6bpxS-YB4_w3f)E7g1N zyY#&2x`DU+MFrl5um@J}&?BtUB*1PfmO@ z?beKGQ8Si&7ulDhvRnN_D)-&JV!Nz_?_QBuYmc0{r*-D-*M!9PHtm1KZr>1-mQrF4yi&JZmsfYA zz|u|e&U%l|lou zITl_pPjY|4b4kgct7`jx=)Q~HkbNv~bmdp39f7o=iX6wPv%Dqr8ND`THjefsrt zm*K4S*FEbi_I>-<_n7_I&zDv|e+7Ngeajnc-yBh|xN9qK`h(}P$M?&q{+p_~eT$;p z?w~cMRzIE!E$TX={ZL9ly-L581|K}w) zecH}9HQPVNe^$+z7Bod~);js{=->C#-WDl+*x%jy@4Jk^G~VWdttGvGzU97Lc1=ii z{>%JMd&R339ZzPvRD8U+qd zM7tHHPcLEncwIL|d#yl$CvRPK(XC}mW6g5KFF$K;UpUWvQ=tE*qnWFpTg%U>>U&gf z>|Q1>&mtt=@0m;M5JLtzb3mbN?yPu06u3rOj@iSPgZDE-67%SRu7vOV)&aC+CWGfopWE_`BQIvcka9G@8|Dl(nz*#=XqDD@od6@ zzcQC1zI-@vSjaieSu4|Aa+3Gy-#jaG?~3qjE?s$~J8rq+ne2NUnnvN*8Tr5OocQjy z!i-JqMxQnuGT6MlT1~(&Hdy!Ug!P)LXUa}2_Hf~eRNo$?&1PV;l6}|X?OXHO551Sl zEnR&5)BH{igH736Zn~?#z54cM zo@rCLmh$FR$HP{1yjbrN?RIU?T5oNw)54}+xyzPnpV?p$m(BD1Xn``%Qu`M(6vJ)# zT&`bTzF5<+CT1=N`>Hf1$&~J!!ktkw=Yp zOWQNd)NViZ{l56Oe)$sV(?1hm&dQ#?Y}cx$0QaD+^SP@R%&x3BVU*(&bk|VsSs|mi zq?!8cthUzs@29q#wjHkz?09%lBh**+V}Mz*=Yqq__l9}TxXk(Kf$^T--_X+2Q*|kxIMBU2`VHSu+0i@ME%!GS<7Hkud8|jeX-A znLDO#?S7GdF^g9m_N{k(+dDSg%fE)5+2N~|{ys^uZu)}KY4cb= zollfBUg9|+Tw!+K%E&d}-h$7i=z84uA&QBCAs+Abb;O@bfg>%WjENqNC{ko?52an`M|4eS0U$v3_{~K5CdmkUge^}pY z^8EgeAK#h&sMh~)?*5;0>Hnihd%YvOe@L3&fB3Ba^NaI4e{$>9y=;|!U-(fw@87KK z{fYbD7r(9F@k3W!zTo5j5RMBriXBr=JWi{dSiouiy>iF0g0&6oTsxmVjS>{s5>MWt z@hnNFf0{^8Zp=gt(bO)D?@0?K)^~8m=?DqWyso0BC1QB9TXoT-ZmoAS4;>8&OPHm! zOgpJf+`MCE%$XpUt>W4@1Gewz>b|Ly#wTtXbLQ!x%o2c z*IlMXkq7R+^)Ct9yCije{r>%WGdWscM>&0TS?rLQts(JIeUhQ?gH>A|sx6lN=H66# zc4CXzm89O&9mizfe{-J^8}a#cfXWW7TUVF53KhQ6+Bz{O>;CG}4LyaOGwenD=31z& zPz}re*cY+FTCi7h(Yz~i8Qd$*PV5ki7X5boaa2r#-(n&9)M5m@)x-l)l<@Ss>S=W=I|GrIpHB(5*J4vvT@c2Df?Zl|2%yAFQUWRXWBZKbd7Z#txQMP zUQAizoIH27a^ngI#`FFyiv$@{Q;kHXN&QTDD;l$5=I%#VSMFK$+cI=^jfb>N)?WfM%#-SykE+gGf+?XY7))b#z!W22>2h0iQZ zyJY%=zx|zw?4y?*nMWKG{)#$I-0Xfww&m%Jf4y!UrIlPZp0n55-n|mLu$=wR$$~|e zLjFILWoMagt7*BlLG0}sfk=tVk5rrzZhBa*vT`rdtDZ2;SwZaWt=#)^$5a++zCEO; zD|Y4DB@@Q8k}PRYq}7RO|g{X6#JQqrGBy(Kb%TY zSa9^3%$p0lemhDg-DORCo+g|7J!+RO(^hALS%18%J?`96dXci>%fh!s6CET2FLrL7 z>9_USkG7OUH~hLY3X8<$W4AoMRCLDT?X#4UH0#G9lW(rdm}G9;WiWSf*GLIP8uE6UwUxg&a^K(syknI72HVJv-;RO4lBj4&DmE{ zDoeayDCn09DH|w$ty#i*)ke9N@AK@e%`CdlQe39pT$~oQu&zWR&ZP0C*UvyHgPo@t zmSt`8NzqKZ%rG%>@d*i2V>h?M6H=~tTmSty?aG&KtIlw@^h*0@rR*29mImGve6;fB zEYk_{mzkJ^jU(5-@ho6TPqTbpQPEJn`@k1%f9+mtjXj&yg4YIihwXfKm}jQ2v8dtM zw~)*9LD7s{qgCfkpT0GB6uizQ z^K(VtLD9D+2k%exxbCFzKEYOe%Bk%<>a8cw?a=FX-xR2k)Op}w|0%_pzs{Xpl>h8Z zX7l+alB?SvpYmzf5#8}yxs2odhM7^;J62|HPLHiLi@d5*aR0yXyUSnpTA6n&3tTEE z^z3Y`;PuOePp_}vbd~$H_|@y$O?tfoH*D9uPR#qA(p=Yj#_($XgPP6t+IK}ZuRArp zZAtv)7jGV%F4|(iE$>}>?re``w(}hO9{=YX8l0CV=__d^EtvCzEmY^YUg#Qzxx0Op z1Dme>%=qCXs(n=JTETp!u+>SteXDQu%nr?Ynk2n#b;jdIeDgMhiM~EkCCXV7ebg-{ zsL-5ml|@hg>P0iNzdsaSwIlG33y*8JmRU#dsv9b1s~@H5ZR-dFX`g*#U6c{DPk4AiKVTKdWA+j?{ySD-N0R=@`LW)dr5Eb*K{C|E)tu2%*+2BCtc{d# zVW^5rkm&EDjN6*l$*8`xoOIyIL1EF*FAuh8y%Qf z{rGl+e^S7fb(NDvIbH8Kt6vi+;&YW*QdwNiqnj=fv@Kv#Pl;=)#)AEF68~mL zPX71j@dr7RhMuEexmmyUd}u865SqT>NaM58J5v@fYOrlD_IRBWlv#OWYDUI`XQu?U z7VhuSyvV_BH1Sn(RPAi{KOM6lUVd~%PDrk6{llp$4-D`5vuM33kccSh{ZkMv(YxlA z3j4=P+mA1|Gqw8~DSj+q>UlZdNr6t?Wzi||Dpd-L^j}td%brskwffi|udmO4n|#VW z7qvW?|KleAb9eV7dB2{e%M{u-W%f_O>Cb)7*?B#CmB06yzDV=GcLtkgPicO9y40UN z<91j1t!-D<1T5@5Cc6BtuflwdOzG#xBiQ$`PVvb#kI(yBe%_by){0>D@AfW2>n%Rd z3cft&@uRcq9-DL8U$#8`+4p|OP2M2kKxOMY(>Qb%rnzs~-M%=%MEvO=k?Eh-n7`#( z899wbRd=eu3YjM&r<9IPYfCwqCnF?ga-dmk*Y&&x>B<^b#uwh=Vy|v5x*q+qK09jm zI>V~HzW>*`vF07rn^h>ib=8a0_3P}O%xAklGk^J|!+VRwVs7-76+cUQ^1Ar=mxG~f z<&rjg1N>h1uzO@(a4fw#gQIhTo!@os$(?SxatqVw+3%aujj#N!_aGq%hqh~oRcanY3N!Otlhuw>b_f_H6&-9 zaV?naGc{$}#4}uzEPdmeBR@sOK4WQKuQ@q8aFW`J?|i2pWWP8)OEcZz9m^+nmWr7X zdX4USTO}9FIJ2iF-YnAR`cVc}@rO4H<(9ro%vxlWc-AhnEtC0X@U?6C>)z{}^0u=m z;d}ab+H2eWSF3r{U&y|XmObiryt?YR!;IP`QcsFLo#t9mq^fo*RHXgt4DIU+{MH=} z+R1nNY1JK-*|}-C24{t895>q}J1ktmU%4-?=l#)^5|i8w8#OjXyxD$W_kof;`--<) zqI0(Bbx(WOG;@pa<;?BYm%c@8Sz9%s(dgRlrQ5_O&vS6hmDkd{&bL8JHR#0LCo7{* z2JbfTyO-zeJM-kV-lRL7yGv5vy%Se>CafFy_=xL{@*hVkeexb=#LVB{W53RMUGRzr zKPr9)%#^wpwRrog-raZF?>sxARJ+Lb)mFFnQ?_Y6olwMeO62;))I08{tFxj*Jr6FN z#PqIIdhgNN8P~$Bm-1h}ed3v!&W&t!@DM8{Ey^r z{rF_S_x-WJRf+c{x6PA_yLaAEzq*g@JLighx56K$<$U}!|K>Aq{tLDNPZXz|P@bXi zek*Inq^)bzAI8=A@Lx!*xx;h8ZqljE_m-{juMx|;pSkMHu7<2e^$RBqFT7Si@!MvC z)Z*s`^TeKq+MHf6%eUHiXDQ#-tQ?!JH#S*8htogIIK7!itJ___#%ELWGA;LtkC!TR z^$U^IN zA@8=ihDG{`;hPD^7oK##s49Or_S0qy9r@)G<{dDs6q-NT|B>X+$~_A64_$w%IcKu} zuUrnKdCZZjhu3_n`O=B87k)| zzOM?@{kPH|25S+tdBnu0TNY^n=@58sgns|M1Pt z%fDe0nOpfuqHp%Rn2ci!4%}(HwEg`2TQ9hMs+6TGr~HyTobFRAKC@=ev8tV63cAZ? zB|Uz!)#Rs+oVn#1L-F4h&jKnLyFY6z@~$e3wOVXx*3i2-#)fbH;=j#PEgZeiCERp; zcXoNc>wlrOYhE3`#GP@*{95=gwnb~(y|dkBmMN=cnZHb0Ce5Q`D7s8y-P|kN^%~Vb z{`|swT4=@T>{F+e^5su*FAjNqh(&i&>S3$QSzkr=B^>ja733A!Rp}9v|MC3xkM%7- z>Sqiq})7RW6I4{0-&S&qC-N<`pW#&tK+|@;*;wwKkf@Wx_@5s zV|=O09>s!yBkWucxhgbY>mO=qsA4@*e^&5g@!6c?f*%{b9>ueo8nCK1t~~7a=Y5)U zjn}%jDfewO8h@tTXWF#>9OK8P`rn3?`lg$o2|de9$y@jQ!6|?4`Uhsx^M$(4n-|=A zBE0yf%;uMKK5Y$Hx8)7zl%Q25&id2xKb&1$lXx#POHcYjsZpWZgSs8e{1ev8xl}$- z3}KOTOMM{7&HS|F(7q1iUEh~QOXjJ@Et;+F{#@r=>ePCt>HF94Yv+8*_n7|Q=;VHv zPw|RB*H8SDKk?7?;3wZ7)r9@5-H~vLeAg@y zog3GmIZa==h5mW_aPLWHKFh;xV$3lmy=3G4Eei@abM|`uF6|CF5x3@?$cn|v7Q(Iv zBPHb5Ec^XDblZxssKC7))7>*dKcwwwieA9BJ;|v+TC4fCq3(@oS66-B6*^rfz-;CM zovXb@>-qdP@Vwh78IUFUp-Wk(du~GH8;;Wn4DS*qe0lFuS)gy3C4ck6RAU`|>qDDv za85hgw}D5^^IzSh`i3X>JwLry`uY6{&*^a8hQ>%r`b0Pe%@oyyPm>jQc&4bP&udIr^d|RGnDoAr#>wD zkv3Ol^E{Q!^OQEfDB+){w0YjSEHTE-DXjnP@=vWbJ|AuVF>dy}Wqw;V-{9_&s#wf+IG?bGc-wR3;Y-sarU`~5@j z+M6@CKa}e~dfR!AecG<)-`yU`sXv-?_w#T0dDWAC-1}gZJ0Nby)4{4ol#_*E)ZnRNbQeb9Sy2Te7}A zYwj1`%N5hzUAb$mV_Pd?V;0xn7wW$FQuBy>*Xu9u=Xbd6{jXo*%eA5L$DggsKm2C^ zje@?u6XJYGkbz-^6}~OY#IF&?K60d&oRe5wyf>P=CgkW<`}EDTXX}_Nal%%aqh0({rf;!nv2kFOzwv9; zx6N7h-nF$?SFP#&9SoYix(j|*B% zis#;OQ=_i*#zq16&#xsokKbA-e_iW{l6BAF!o3?Lj(>h#siU^RV*XJVF>#NIg|clA zT!s8L9S)dtMqjmTPSet|8|~u8&s58F4i||9tFD=_;Syhap_K8Ab2p45EL8VQ*&3^s zIJL$2ZGl|a<{3wm%pU*MU=4AbeK={IY<7WM_s>7O8jkk=ELD6iwo&4kZ1kB_?}&p> z=R}`MExy5Zy6Rz(h)!0dhE9x5h*+u4tH?D857P=;Ww}0jxqT~G*H|2P?x)4|6OXjS z>ckj1o6916(w0nD;|%xO;dRKA<7IKJZ=LJhSH&y+^5^n9mR0RtRlmxeg(-_cap|e$ z9Sd$hcb#x*_8qzDuiP10?&)pyGpTIy%U96Y)72Fawe*Kn*Q?rnRsB&{UVLY*-RfKF zDw^f+akq4{-TxdtE}s4?=6hu8jGUq-fA?CSKec>T^w%98Uw1BR_{=l)*(%4Z={CD_ z&fPg>$x*qCH;udA;cM{TD?8s+t>-ZN+4*LY->PX})+jGsaw_gMUlz}CU1tY%r)O_A z&5}I5%u;)`*0j*`vm?)yTweCe}i|TFPUbkxfLdUOc%q+7~ z7g(+S#ufVTAJ3|p!Ozyb5;^PD(p>lOo6Dh8^A~^SFfP9?dqs27($j*!OpiRACwPJD z+3J4`yq9g#S+DND!uG4)q}S_COQ_bvs~ksJmlY@M^73|O3BB%PDj@LnRY9$*kDRIe z!BfGFVs2A!uMRUey|U_`RN(8tou5riZ9cPRE-&AEK`Q3qGE2Ry+t#n#c=xi0Y;Q~K ztsRJi=- zpF8kAZ7RRrsYXrJ3IXYUX`fw#({j z{LZLA=~CyEcCpE~!=KDa)!Dvtrp}>`BfFfvy?fRA18(%jU5YR_VXeHR`}#w!d27q{i{JaoqcmgBEj{p|&t~EC-6ySo?LA~1%ezr0SY+1u zeHWOf7U-6$Y?DbWl5sU$t+egqlM8cray1@iT50elRCGt(%52@d!SL%P57zJx{~Y(K zl^WhYb7ID!3hCZ8&AwkvD=X{7dlt?0yTpCd(qd=BvZda!vO%`fzfGHv6|EN5U&Fpmooc!mDZNsn|o`n^vz})pIO#LzbA+N%#6Gi zAn^Rfk)>y|xXLUT+Z@d;wdaR)!jDcFj0i(ZX^)*swGw(cJ&|T}2gc z-5xo+x;w0oj~(x25sG_u@!?v}J+~Krbh>uqW0m0kUFWzMleZ)bF-UF^>+eGqb9{YpCjA)@vWOxke5h*S-11-K#ufTv;B*1UW__s zG>s?j!^sVD*G?74cAE-JQ9STS?8cEtb&_F4Q&&gcVUSL_aboB12kAy@7|g>feGkn} z+0pL(YC&Av|CZ}1KSc7UeXvj2!#Z!m$FMstAM4t;p88X_vCUWQaqgd5<9m7!{ZsZZ zZ$D9?KK%}>ddi(sJ9B>oOTKTLE_kf`|2l_b)gSJaU7dKH)hMt1d57IS^@rzE_Q;o? z_`&d%QT_>^t;*xW1p&wA7O*T_qQ1B-pwP^WS5p3-ns0%TMem;bo! z{b5s2`-crY`xnaW;mbeq!=nGT;4zD?vqpay?@im_+E%`Cs;hK&vQFRTil(EJjcN|< z^tbq~H!q}rkIZ40x_?P7a>oqyk7g|o zJ9m_{oSLUG`ze2W`%Jae=YJV;S}xwb*`2Zc{jsxCTFzgHwEDPPt%bYpL9L)u-ES@4 zpW7~MlaE_pc&+~V$4M>cgVs!P;8A&)*)?6Lr(VEKW!wDY7iCkkTNWM3%i{ew{bfuq z-%J4&uNc#sm$O#Rz1q{jVg5zsQ`hme(uuPsuip|hQ^|7u=Zxvo!#=%t*!)W1m#BsN z%sV?3m$<*%$>Dj(HTI;Q0jDv?Uh~E01y}!YZ<^3|<=C9obLU356cSi zWhTF*zUth+fA+fOtLXu?%r)oZ+@o_6S`TXK7?>|LlrfWkr1yT;+arc+)E3QtEADv2 zVE19I;95EUuXZI9=UjY}`(fvu(p&s0iq*Wj9tuiZGVM<(e90FGU-j@Hw}teV+wUxd z4XRirlovcY(U4)YpHJ zKTGAAWBiGGpPNd>mA(|QKl{9+^pR-k+dHinKI69X_3BF@TNfJcP&4s*u2#bC z$t<%g#>DT#y{L)X7Okqib!&UJ>Ms_#xCd`OWlc;MxvFTZD6{YUm5nOp3npbw%G%r3 zCcW#U56kRF9~wXE|9Je5PrUGRrcuc0bMH)-b+*;ry1L|K`=)pIOlBqYbd^_U1Z{t& zbLY>@1AbmV9-UjV@z?qtJ+I$vG0tPMo^XZjYW({6na5``#>T8Dd7fgoquYW*arp5FProK-^gTg!P(vX)N=>rr5xdzPwT2) z{197r-Q~R3-g{ckd#`?3)48gAYutM&=e^l47d9^ptJ}M}KsYdB~$Fesg{aEN2Y4b}-#z z#(9Asns0fbQ zy-t7f`R7%)mG-VZTgY;0v9x_sM$TpF&57^$dBZOmhurG!3VJNHjCIo_ujqy6RkAO+ zL~qNrUbpz{^)X8H9m`CscPX{-4~XVG!L^KMl}FDiX!KVi6^mBzZ}5*v3w zg!-+rQ4zzs8MEYhQbA^Su{Uk{FKx>gh0M@3b-s6GO2BRztuyxpFWZFNvKM>$yPs=w@T|lOc{gU}M`w2j z$;2PwOdEEuFWdf*mf-VO@WRLQ$}pL$b{*~A1t1*MS9a#r`ZcHZ2G;s zwEDnC>1jTjp5Bl-TX62A=eEZNDT#e+CEK*75bKfciF3H|`9%eC} z*U{yx(CV4`p~ zz9Y1z%lb(A4)2=I>Z9?6^}3H3z4$x#C$9csEhilRu=`QAjq<*O_MP<)(jP_tiK@xp zc%?~o>9s|=YkDWJ`8NrdO-P^ez(lu^U1NHa@a@wZw(RBU+Q=!lB*v)c0PhEZN^WVn zMPdAh{Z7d)HvMa0<8*qWSn}@hg?AQj=oZ(1T6S1&(;tOD#&1-os7OuaKe^u4?eW(5 z&paN=)0pksn=js5F3PoNkN?`gD*9+>Q|z7c07~8*+^+*Q)K})SHVOPx-_|ay*fkD%-C9<(|(4$2UBe z*pdS`_X~PTOnCEfoeigYNsCwQ_7f>Bcg!?49nh4x&U5sl!)xAX$FvIV6D^Z(xpmca zr(H76E;+xg^w#F(KGkWaZ*Tfto@bkT%Q!pT*7}O;`FV}$r6)W?+OMWs+-Tmof8v_m z2WN@&{+QPoD1W`*DJn?76DPU%ycvt-qwtIwr4Dc<;=`vjz)i9r+pZ zO2YZyMT3)VpSCSNkq~_8#gb`!Gricp1aH!ac+KoQb)P}d%jKHo6PoHSu-9?!Uo>s! z1itf!xewI0SbC|aG(Y^Hzb3cw&N7T|H+MS6roVLEX2brA)9NlV2~9Rh-^gslZT#k}!OjU1 zOM+&ZsOrB_mT#-k+xAp)j+60}oGlODy+1E-WC~x0j_e`1whdB>Yn}UFD$bWnYZNm0gsBwb7r!} zJd}yldGo68;QI&r84g#!4yd}9_5H|>>2FSJzqEbTyry@lZh3u>=cOr2F4Z)9vS)ug zYkp&~=rX)nWlSYKvZJqCAM&_;|aD)&9(h69hlRwd+Ov3v6ig- zn&%JbJvEUDnb-XI)aQbzO2)X*xVG(6;tyM&(!P~2^^(C`?&Tu%y{g~(PagRIm+auX`oONwxn!B< z#q~-ZZ6A_4jXtS=>;1*K*rT6FNoEJI9i}a#JF2)*){q>ev zWN)N;OS|jEx*aa|t>=^aHH#PZX|5}oG`~H&&0k`zfq7JM{$ydc?4M5g)^X@+^HPGKxC@*|I@#+1IUyoh=a_slU8W}Eeu_W#@^D`~t zZr+Sp$Cyz5w1rvRE&G0F$`7u8(C;Op3;p7U1H~Bmp6=z$|T+boq68}HPjK`x$ z!cg+xd_m(=E1Lgzyi73ub3;aLQS+4_#g~t93upgPt+_6IHmz6q${yK$=9zmm4j#Mp zU-Cz@6!V=Xv0BTsmmag947AwAy2N?eS=ohJ4-+S6+}LuOVS<6@Zk`8oL~~ih%2v;s zl`=QERW4Nhb860}ozpIqbkC8AHqkvf!{x@b9+4>quI_Wz{AN_z_aftrq;1kZ!`QhN z7kMw$cptoC;c(IYkzV7Q8>dAyGz%AOm6{;Ke&SN>0u!Hp##5>acjg;R@MnJ2D`^<4 z^UX>nt1HvsipAwEg)*Pr%+DRNQ|o;^!(>-s{N-bXXCy941Q}S@2<-M2+oru`^) zbi&EU2G1-k#G;}fd^)c9*&t<`gP4EH8w=H|-`J}E%AHtupL^%m-v^rhMyP*lkMdf- zpf}fYT4RGuRKRJ+gR>3NA~&kA}F#-$c}E#yYK@|I8W54ILGTsj=`&thr)(l7ZZ zjcR&dADlXe>;5A)Kf$lxPJ0}F_2f!D6KGs>eslhh3=swfD?5DSn%)$y?({E0SrRul z$k+dngTP$YC5t+k>gu~y4jnyKail`PG_&auH$VCT6?c*nf{et9{#&C zvIS0TtyEaiDWY6pWLjW&NKv%$HRoZbWm3~uoQi(DtcS&Fd3I@kL$W8+%vs{XAAfzD z&~@?G9@ntP5gj{!g>092TO?@mG~qzY#m=X~+X^yPZT%%{+|lk7}mx~fY>KW;cJ(s<~-;GQ&p zj%BkHuUef8p0hCW=gz&q&l!LIm>rUSbZ2tZ<%Zs=d@{lo|J^^>|4|Q(WMT>WvE-xw zx%3bAO_nZ^E}8`b=biZ&UNh;anc82B-}JZXt^Q%JpzZ*#EXlCRyV8D^p3XmFQjH7);}^Nt&oEEKzPch6&FU`S!cmnkZqQ!wtD^t%jg0jr zDF%V=)jFz zSEwA+D7&h6ZK>YY>aE+#*55k2?%SO2_x9Ypr!tvS_rCe}edYJ}{{MM?@AEm;=Xvk{ zI{$Y$qe-W^*kUpJ4Z$Cs_3BdG`Rh*P+CO`wUZ(Lw)BbOdy-ogc?jM%>_nnwqe{lW& zEss_Ibj8=}J~S_z^5|!h&XN3`Kg%zFsQ%-4NdB$H@zX+a89W@!-q(4to#&&xUfgsR6~&AN8Vd{;1qg}l-oPcz{AbDv zj?Vb*A1f!^=z5fSNN-u8VzJ@eZXvz2g1}Qpee_Q4m~r%Ij`g$dBDVDpmRtTQ5wj2d zbU8+E)s7X<7P$$1e)Hmy=StD7lV<35Zf5oR<-GAj!zIyA8s{D~PH1?;!#1^G`hD3> z4Z%wbjGuk3p0dFqFhApf?AO*NCgaEbwTX|7S<)(|Fu$8&|BA1z9SoX@08dt&2;d<`kC{AbHNVzt`M8eeXFu=L=Cg$e!sAFDf#It9h338knL^lO#W{Xd;9aF{nJ#YeE(Kj znp65M_ty2tG1qVJ&A+^@cdn0*h3D>d6ReyszRj!m(Nx(j=5liV`ImN$m+m#cJAJ2j zFaNe-MXHThvS=Q@mEbpN_jSEtxDmr3+v{$H<%{}=pO z1G`u7-kw^}Qn1Z(_sail+F$CoFuk=q6s6r+%rfhhujjh(69?`D9^D++>2jypYi^!% zuJ<$mwGJru}g3yT5f=n#u3}z0I5C_r7Ye>Z`9CC%)^Cez@tRr;2NE zVn5H(g|pRKue^I88Ea_SS~+1=@n5}lIR^#SGyA^K3n~xjEL*<&@~U5|l~y6CYBByA zXI@>JbZL9;%75D|x)=EL-_BZR)cwt(*?D6|y~&y#%(=_}oVe?V@xtprngUg2N`7D0mO9k_Aa-ozkfSaW-a?5F-a#vR@^enm@ETRnr^9PUlJSi$D> zDbjOO@7_@5jq1VkcK&^;b>Tp`>U1^FcU(uCR5os?P(a3k^D&d(kpiZk~;NQmAi-G20O-!9f?{w?|iPg`WvHnTtREHC~0?p)1r zu{X<_``a1*@!M3t7M2daWH(tqW~b(?1B%6l|JhkjhrE6h_Gcf%!3q=OyR#oBD#kCo z{)eAWxiV-Y`&4H)kKGFUi=!_svo~f;e={MlI9L6VS*X_0S2I?4EwqrjWbcv0*&6n@ zbz4Gf`GgZs&Kh({Q!{+yH{aHEz@^!%AfEdQ;=&a<}9-jN}8;$rwLkBxID`$Vfd zdz7tKzrX9*vT0AxMt*vQ%$V}TPoLE=o$ zBHt~--W%P7vQrBicLa#Zx`dV(z1NE@c^nnF=J0QpbElIhX_n7&+B4C$KSKYp#QBS^ zH9N1^ONweTuTY6?*5>`uL?ZFXu0>-JMglNWs5FI(=Bw7KW; zBO$$Q1sBgB4b$6JxH0yafj#f%%Y_@8yUkA|slQV{z0m2+A?80{7}m?od?2w;=dnq> z>|-UiTMAL10=ISYmU%4Do31eNew9k9bMdCSNUNC&uF(fn@+4I@wtrf1=RGe=*wdN6 zxvw0t^*f!ruAP3p{PzL$z__irwoedO8OCo$Dh!6q_K7FeqOotJ*f{p%HH zZ_ihCZa4SecD@`GH-Bb|@#UL>`=o3ge#ah}{p51wwznyP&r;O(tlz?~73l1f^)6rK zmS)Q1m$q|tPYLfTZT(Ys$#J)`PA@C7V*mSws>5qD_b#w&S8fU28@gOTq#%BkM6g^T z+n4S$I%+fD33qPxxcut#Pn}5>v1iwBZIR~I*4(K0wJj}w)1g=K%WfG-Ei3vRVR1q( z^4xbn$uI}YJ|T%Nxr@(o6aB<(K6=X}D~eyURyUJ~I%xFDMdM@Rt-S$$&6$tq&%WEe z>0heS)20(H-)qyq`5kw0YOP94{QnQJK`5_U*)@1|hjC`C^+R4zSF8lM(mP-ll4MVYLq`$P|Ur?ReTSj`poo_RyH{9&GO z(`P%f9t7`SDPgg~==pN*hw3vKtER2I7S+Uddcvv1j(al?m(6uZvD_Q1T>Q~4URbbDOE%l*aHeb$fO9pAa&m^2*o)bJ{!x@-d`8(>7w$wYvo0k&LShe0{y;1n) z>*DQ)3wflY)=mvOZlEQXwY6_yP5RPOiS*tDLD`e?+SdkEt=QU;nD5rv+~{UFJwbNr zw8W5$OhM;gS!YPPg`x7IrF^p%xu=Q z-BAHAt>mw+yJ~U!YS+V*;)1=@w%VQyIZa4G1XT@Z#l2tFeBy#$Ikv< zp5y*KhqjoRI~Rq|QJ)pu9ryT$+BAN>7g-fE8C-+uB(_e8Fk+xqjch4tMl zHlEAOV%0S=X5C+3T|22)-$P#7cw^z&?ED4W_#ZS|xouk8Z8G7YxNlA@^G|`TwHE3E z`Ke(O`U7sepKRHp8M(0ehU62GbAmgxc{7uRCf%LU-+$35i(_sTi&kRGs^Asc2c~Z@ zn0wxO(jwo^jc-(U1oj?hntwq3_~Ga&edacLag6Z_FDtZP_U;r9^ojA=H?^a)Oz!Po z`AOwEp2wAx&F;3$F72_kTAuYNC3n5n4o=n3Cz~ccmC$J|x6~2I*XgVbPG0-n#PxT3 zz`MUj&#LxMI~y&~?_U$d|Z`OuYT)D?xq z9vPd&`m8!SE-1KhrEucfU8^_PPEGd>)jA(I=XF;2 z%zrDoR`Mm!Tz%K^;n}dMGq$+O?BDAz@K{~3dcITV_slC5^Bsk+uHJKg;o;x4Un=So zHs~+45Kgb3Xt*@iVwqG!YyJeIKPfD|FU!8{>70KgbpK=xS@n923(f6m?w3!#mtDSL zPUvdi_G(SliW<3ik0$N#hwrXEwDM%XS|Pdap~x(*vmff_Cq0vrvoGus$vhEnqJAsK z>&sM=Me0T!_a?W#s9fgqf12BuBNi_2P1ScDn)1RvxFfFb_oR+B3Wr6eQ|1$OFx z_l0O==e$FIXI7VG-~=Px8~3MdT{oa0L}iyf9Kc?o3=_%S2MV>_jozqn|)Tw zOAMoIcutr6`KhH?xZnGusmPQv;cthn%2w}_U%B!a>&xX6p0I9|>@c%A)Ui}{$pdpE z5t(DH&kQuVE@tT=Q`99`;e+tj7<$NJ&btU~-MP$OG z%gYanJgh$E_|9pn@zFlRlE7bAYxTu?7M3kfWqJMXsL3e{&70PVM}%}Aemy8xA^Eg1 zJV3N!>Jr=Kr~cT@32E1KyZXq~$~NRu&6OnPtK2L1&3NS+^8HrVOB=?itxa+{8$=#! z?OE_`ca+W&o1Wqga(kw~YG3hhlJBwWt<2IHcg#1stlhu3KfeF^5vJ&mkbSelYi%3v z@G&qPGr-q{b|S9}jW(dNHW)mhQp@bLQiG}K(RLv|0b%LKf=P>3aI!T|Ts=ML+Oj2O zp7wtVA>%0l&0z<)D{kzYJNK^nd*AZ=_Hp+a<}6y15Pfi6lkK5dnt!&Ll-!@>cl%R~ z)4r%|{x9OO+%>1Kxn-9&-P-Eo{+&5o8}FQ0}c=&pG`M zGAf#;soMA$n%!!vx#pwk8=c`C{%e!CO=kEZJhqHS=AG-FsBA&6i7vDpG`2CKk?Lg-aY@OAN&8XaFV*G!jXz2KONPlad>+aOnIWwCfXN1kx}CM z1YSe&lj0V7Ny>Bb+wKd695dRial@(WxY7AbJ(b74E;*IHeZ%Asd+`2f=_ak)6^slF z&Mf%i*@4)24$aHVD@iRXC`v6!O@UnMi?la78*&jf=v>HK?5~|`*KIWOHSGz|v zpC2?xzr6SR)DGK8iihuLt4$y}G)VuNexh&EwD!=p@BjCCyRFXJ z_~h7`OBvfD76(pksaDGf_VR@J9vzCV)t5Bm*DL!LElYQJZgS_t z!d(-m7O$Id?ct?(!RpEJsmo{luxPl^A+WtVt+r+IvjW3I%MAOypA^n~Vv)JdCqKAh z^h6U;J6Da(BMrt@D?o6vBAA zE!;I#ly0enRXz6y4fLrR?e+~|VqjpwyCd3-lGKYb^m{joyC(SSS9|r`NoISuEL_@p z$%$J;L-WEXw-r1ZM@3I1E9mymPRPjjHu24xq-3#n!_PY+Gakw0?UP@@%sNHD<>=X$ zX3yvF-CZ`j|K*)I|8vhBzw-0e|2ft9d3lqheQxjg|NQfF=lbv8t-pV_?tgE&|8w;n zo1Z_M`xy?1T(*#oDBu$>&W-3_UTk>2D}Ljn8tFR?+&Kk|dRr2i^-e9d>$SA#o!?#j zFvg}iJO1gS&g1$I*A*8PYMK=nONw*P+%{+Tng>ZsdH4J# zo9b`=RB-WVYya<`J6}9|6r;yHoJO9rSA28r?}cg}2$-mzn9_w6+m*4dTp;^juE^F`lpdUV&U=(BCip9#6Q&L3rbSFA7oy|8dX zw{wilvqyE>b_qw7Ikx%EyO7lXBzOJojs{Ig=Ha_9V2iSz z;x7MJCF&Pi%j(aotzS|a?Xo06ygm7d$aL@J*IZeR!alU z1Zm4HW$523s21-3gQ=t`bfZ=0iM$WngSUvARM%YkG;f`6&;uXym%Ro~Zs(tWo2RJx zIo&aOwg}I!so%qT1UycbwCvP0v2b40dAM{ZPAf_3^i=bLHAEk6#jdaI$m53+}&j#H5~?t$)II!he7N z4Zcop{Yy{I=VwcgX&vPUrx1MYRG?R>#_HaF(qh4v{gJ)iaK=Xa06voFRXRJ1n>$(%<7`OQnh6%p=k~UeipzPWooB*7Hcu zTbGcBy#M6s)jYqs?cOpqf_?EC{q=dL7@nW;d7!&TNZBOi z$d$V@4SX)^DYJ>?1g)C#AX+4NdRl<%r&YW6#(sR2`uBXHWZA2AJQ1)2WsO_U zbmdmo-MlTGY$s~?hhlUINDiOM?*-1*d6a&^kh&97dq`60~mz&E!3 zUGZh_9l=j#KQ=i(KiK1YQM1U}+lS>}PF}@)S0e_z@wAZ{5_Pd%XcgyOhhf@n5 zy*T+smocxomg$ecx9E?BjPo1zGW`?DbDD8Co>kx(|CKt%`ZoLYvw7PeO=kMXG*2kO z`i;N?uN__omM8QxTrVipHGL@e?yEQB{A2N)ANclYA7IoGe_*sDrXg-e$ExWI{#*+Jo03mfA~4;AKrgq4Tn{v>f7}>eklEm zJ78b%QD~pe1MMHH8tR{juYdTO>0f86OTmVR-1uzWWckesEs9&?RqOrOUx` z=k||3M=ff#9;El2d#)nz-?^33r(;9H0e8-WDMqP^Jw2+EpW4Q~_u6lxv}~^C?G!N| zvB^{Sq?{7;*{L==;gm6FjPwyxZO8mm;y$cuPY&tLV4KY)ILoLk$0=gc&f>`lT1LEr zK1X?88t3?TW@?BZW(n4`alNT?ck$8$sXQ%VpQkeQ+h@96xMuLt!}-R%Upb01+zzof ztvnQ>d0_vFHs_TKD!0TpRPXFKusBBM@lVIi&lO}A9WIIwdcttXh51aDROb%_`iA9u?uWUy|ojshPck&YGSS$b~)l! z=eNRM_Z3~PLCp2HW8U$vefRR+H+Bw|vo0-#FW2rqqCdB9*WbfyBuh(wJ@d&6(~vKH zbVuy}%(E-)ub#Fyo;lk^;>7o_k0RP~K2-1B^8TT|AIHw1@bZk=MeV71G21?!Db@7x z6LDtO+Wy_<`?d$O67EbD`FP~(DOayU)011g=9kF%i=WM#I{lpf>R+4x+Nt^*)y3Zb zR#;01cq#5iNN#Fj3;nnq}5qF-(`^=vC z@z^=36&rm&ZI9mH?`$g~-&(5qUhvYNuZ}@io*obO*r0yn#80+^i)x-bX{A+@P&UaPi=Xa-DBz}bNBdcy-$}?r+2&ubWuBUwUz%Rno51i#K=LJDlzh|d((Le4E3yOijJB?2 zbQ>=8uYF%PuZSJ;I|Cy}st_H6G86tP(S1RofO!+O96C)_>(ReEvYVCUyqJu}S$1r@k!)M*`jdy3A=HFPh>Dh1dFW;Y9Fg4~r=k6!Z^S=I+-4Rt6$6Wp7 z`PQQSTLZZ6x9&aiuqtcn<;nk3-4$LdeBgceedQK|&@-($KN#;U`8J0&vgp2};0ZmZ zV!?<*3AP%>eY_{zXRp-LkbNk&Bebqw`p!C|i7Sr2KW5SA)Thj})BV6RjWgCvO^*$D zteAclEpE7Xi$8OXd(+ei{>Ge-tS5^9$*}GIcEBK<#jWe8L6pwLPMO8RJN-p(`sxbX zu9h)%Pb|2f!pClWQp6)o@uZIGOwlCC9>LS8GgZ0bL)EUoYufF(s#9M-^yTLlCuecC zFD%fXStHUFl^pbmGg!dA$#qSGP2rStLXJyh?&lx<@|R3ce%!ezgM`vKlH`#piA9X$^AtE*MpY+_1t0` zlUc8^{d2#=%u99Ad8-RfO$krwYFguCp(vchxS55^^ZCb?0#lAhEE+yp}W|Hg~;pGmKEkvhvUrv~7Ash3E=R=3_!st1y@#5)+`97NL2%59_aPIOh=}%Lq zbsga`eep>tp{Qk{4Ue+WfNO^d#{_olh_#DwkxFMj-38Mq=j z>bs+3uaIZx9Ub%Uv+~(qcf5J~d4`TlLQeM1t=CVPY#S_s*~O(`-mr@Zr4A()=*f!pn5tK0%9RZik{wdwEy? z6rAz>lFiymkux$U=Uh|UY9(~|q0@%0y$RymojZ3pi}M}cQew&@*Ydc?!sUUYsmwjK zl~=fz2ln*t5kAw`>?NVI@Y|E*fYW=wZ8-k)R~#2t-NYGzU7Am?6zZp55fR=XzU*Cd zsg>F3DG4*TiKl69eaUCTq{_x4Tl8*A;k!HRH}7;N^&T&{Zg3`JX{F)h(nxpbGq)>Q z_Rc(dvS-Pq(>IOc5-oIjig$dD*%~X~c6q0*e{Q`h&*z zzTF4^O!VR1Xl8muYtyUKC$_D>=XFnm+c{WbS`7cQHGjpG-~B#6`{r*`XK#&_4L=0V zE^S{JVZ-RW($4A6MzsqpsRd0+GdD-KPP?o0L1S-Xqkqtri$>gEcl zg1U!vs+<0VY$>^*!~F4if>6EVyNWKcS(8oF=Pio-?;TYzuTATtP_%)AM@bC~T_6*fOeFJg07u>4aS&|0$B=keM0 zNpAT~MaK&xHuk9>4~#fjc&>2j*+kLXVj9Lj_*-6k2Wai{k?spGeeE)}?TP*aP0^ET zrM;4?e6HJ=hRTPeUAvyNapfC}e_kga>U!1JU*0IYYE$U9sryxKUH+hbwP&f;@1WMd z3aZR&oNlb=h}diIc%WM4LG7uv@-JAXWL4QSpI_B8H|s=ikOY6)vDD)ae1uyMN<~(4 z9S~cm&hev%rH1dQ--V^y0%t9DJGlPo24@S-^D7sXUAB%WSYJ&NRv*&)TP4?37ig z)+LjFxj%I4@3vL3a~Iw1nBkUqV?p>SxzH@ImGPQZbs>X}wIt>n5N-nc{UGi`Cx|e3LZXBt-i~ikSs$}APRb%S^ zn8*na_Vu3BI;%7_ZL-($iC)E?ORIujmIS@jHaNS}f&DsX}qOrlG9IUO|5{npC7>Jp{f81y`7MTuT>r{CYOyiLo_rrb>Ba=0jP zYavs}>;=tIPEvZmIBv~Yh?)#CiO zcv||5PqWG#>gHzEU+QC;`)Xl^lgQ#FpC>GuRi@_U@;oL;hvDZrg@wXOCEE^EJP(VV zG<$*SPV)!nR|V|vI#S`9vGUoBL3nW>0eYHt9q+2luU$mgNUHo|`AG`79(W z_SjVCSa#-n{SV8uYW8WxJa{YoF~3^mmaw1VIqlLrEWNWA6#mxUGu3V1v_(I6HNXD& z^HwFVo}1-6`=t)oKD}R` zWm)a>_kHXT`o+1N^SN`&yTemBZ{iQJV|;bCbNQtHiDygxyxb?p_3}$`o&?ir8R5*?_8%2YcMCs1dpe

Dx1y~|#|4tQ4M?49Dwv4H=f@=evLw*+_c{NoKjsrN&|&Qr5~z0Q7XCdavd ziiMx<_x^NW`RDt|fA~HBxvTttZ1Hpcp?On2**BjL{V8X9%r_dcZg-XF)Bntyvuq+meZwqItdiQ4r4(tZxiqx;hSopRd4U01*9F}iU(U)D znewOEZmR#FcVe ztwzaTKOGY|945QmsW*6?V%uS1!xE{ajLQZ&frdJPe9tTc1=^*hZn&{+o7^ZQd1E2- zMi&q=)EDiLKc?r{n^NKFCVuk6M4tVM9Zp;VQ+Mkn3v8Eavf%j4>!7n+Ke1rFVh3x6 zIon0OW{Y|GrM*0RX7KE3;n_2VXOE6*NBC(4K0nq+w>QpCR+bE(*fUopS^VUUT#lqf zE`h1D9g_vVOEpC-S^6WY^lGZWXW?lv*L~X*_%0gVyqTpYJ$K5fM5n zGWDgKb|^6#AmQk!7zz6^`!qvySOc;WpV$|WJ;+sap2-%eqzcs;kswD zxrW0(AI4AOTocTL**f+#J^m2FSfnJTV0)5jD#K59))Tiy6#lCe-#6r$u&LzHKkhTX zI?ntupZS$@=2y*`UnOUL{kihdy?qV!f9IP-9^Rn(vDvHaQ_9kV-=+BM^!FYVlv$a# zO8RO^X6cm+A1haXEOdk?nrvd^Edr}o(RNvQJY%U`ls z)N5w;74jT0G-WRAx%j|Dw)jB6TN6gx42_?!U-FrCEjM9zFSs=Q<*Ac@%b)IzSe=H2XArp{@yGS{D@y>(_4n^4@HLuCDin1l4mB zEKih+TX3hJK7aW^(u4I!SQCy_{ZN~7Df2AP^b4EkW`$n}Ui59d&dvhawujYM_AyRB z)ca+Nz})-y9p75(GQ~KY*WOfI$Ram=e)5OJ9fu}$U#)Pe^E)Dc^2^FiX_f_w*B<+L zzxxkf{r{okM}Lt*O=7|hcy112b*!mdBig9sUYi=^ z)D$sEO;jpyk^c7UOLca>Gpmkn>YRW0{K9;dix0Tte=Y3U?5=vtWFwc^&bd2x&b)u- zo!|4@-~Hnmrfitv%J$txWRu5(IrzvjMnYu-r=j6?uxouZw<#DxroE4I^ z_;w!0=O%NfO+MF34jj(STT=aAGPo?r7#`|1W9tO> zi5(JdW);y_c5dWJSaF5v?ziZu?M@HNd$#Smc=zM{E)9cC$y--i2Zu;7=>2&j;+5Lg z$!8w;N2_v2Udil-ci%W{yB)oGl~wHS)ZPbgKRK*F)hMd9$mG1Mx7)QnD?PPO6)#^u zEz8$?`rO2{9ls>>I{sxzbkzr%Id3Zx=-45!Yo${25Bc=X$G`8CFS`24T)JARAlg?( zXXnx*2D?}ZJ*()za zMO&;Ut@`S7Blhl@gNHc|zgp>Cu%O-2=b_T!TaqPK&i~H4KTn+a@Z;7?iJG{c$rGNJvdHsmV+T~NN z{G;ri9mQ|1Ia}mPO;36wq4$`}HAdCeby~LY>M0MZ^c`CtJ*s-%%`HFiRlEFOrtf|a ziF5a3Ex=Vu= z-s3oIvX}Ru$x2VH2iZGzo;_|h_j0bm^W@o!gk=?`Xw80c$E9%g`jwwI`Yx~jG0She zz_ZFQ@!u~@B04Fwa@1?&%aY{-w+k{tbzA-W$|?8^2f*b z+*C|l-V)0k0K#o>1{e=hiGfBTU7w)9(m8{e}zGJF1K{{0VlO+d1a%y{-Pv^c4 zjbAg*kU_X_rh`FK3#yW{t{X+Y{kmGzx%2hT z$U}Dd1yjw19tcZ$d*{R|Xg&1jan*Ka3d?s<^*ddioTAY-C+zGxo=c1NIc)G&Jv^sQ z!g|Zcl^Ly^hr68LXqlw7oZhA&z;#5-C?(u4TJ_=iClYU!bwiw0D)UmSviOx&&)?Qn z@jXi?t+$Q&@DaK9%lt|`Egl7L^*`HU`hb^B@53?Pl+Ugqj}B~jv*Dqk(dLL+$E(tU zwH7Xay4hW|9j%Ik^?j#zzRb&yH@GI#b!?B~{8jbYr&v_@mQG%*6sw#y<%xkwTFY9U z8=n{@r+o7)SGlwK+K!E%lO8%ISNBVOTMDXJwr?Yd@zRyNks--eSj!^}C~cO>)1iY!WXIYtTMmU}`HW$#o^ARpO5Fg*iPw znQE)j1+|o|xFN=EN8Nn}S*!*`rvc4- z&K6uu&k@*nXu+!LiqOen^5s9SF1c#WGyU)UM|Pa=J72bD2wi=^weW6+${ufZjrA6f z!>?SsdhLqG4{K(ZZE{B=&G*)XYWrQyoL7{^xqGke1OCe7T0yUOtnEg(KXueiwJ=ax z!)-JpRD9XWPX%X6Ts?x_t9SITUTy5@-WC4Gen;p$mbd6# z_^@N5fl2xq6Qh5f^@VHR8i_qnk>t9iTBGpzzD4A*tQy~AHCIkYoM?}=aBq`;e(J}B z|6GgQkJWz=RR6!er~hMTkH2PsWOAg@>1R5BcZ3~ti#o1zM$1@w{_Z)GV-L>OE}VKs zWty_Fb@2(E=_iFwPrfNJ?Yu$pljn{zEen}NFFg6oeR$*H`AR8a4csYVC%Q5+n|5v0 zm&oDfmR3ti5Y|;aJV!T~H~$aE$F#XT`rA)N%{d%kI>{p4LbrIM=Efwp@L&4kCHLi? zDlv^D}uu(`$H8aGcQ`R}v`s^o_jX_qE zdkk(Hho~g2of!Wo`tZhY`|jNXn9k&p$qNSyeyf z5PN0Khpk1uAG;Lhoq5&nBXjcc)Rj^vm++|Gd%*U7*^5&dGON=<>!wQm@^KPhIAK@g z@kQ&}j~!2VF1pwWb3*AFz3%fT(ni@+o&8(OxQT5Bfa)N~G`Dcr!r#WqD z-yfzTasH&l<7b&?d4epC*lff_CIzNuG~Lq*Q2Q} z)$hCaKU(SjI3_RYYf|FNyj#;QmbR5B9zXOkYroO8Sa;|69p%F8V)Ey_e&0;KaQozu z!&7dFY*kySWiW+*az&7bVaODb)>BKqEf6!ia`9-Q+@^^~`^y-U4X&@_GF<#+3IA`%82dUOSdP^>xC*pgGId&hfVSd20`2L|1}t(^~mUd#X8Gsk$Ch-u{fXX}tzQ(=`pvfB!umUNt!6t-;(V$WVWV20VV>Mm z)ZLi6ukoo?Z>n_frWNJ8?o=x-e^#lz=7@3lPTrrV%noi=@mv1!$$qN>vBI;Dj;Hkg z&Uv*nB~$#P*TI3+AS6O$5dwj)XNHgy?VE) zarh*@pR%*8*4-_zvfr7)uQ_usJL|`f$CKuKIAHOJJym_pDZQZ2a#J*R2d;Z_Fl6cd zh7Cc^Cw?%7ha0_{dWSJ(=dZvU{fknL-%C%JxO(%CIdbmCCf2fD%F1u+nAf^4U%L5A zz^z9qx7vL&_gdxd{vaN3q;UI=--cz{MR%ArZoc>1(8Yd$anl*)2~*tz7uck6G${41 z6-~atIiKP3QtlnoGjwf=z6)m^pO(w8+ zuguXGwoO#wLw(4;qmrE zv-Zxd^AWYzxm~(aRfIRdPC>cGW0JknN%_SAKd%V%9IZ0ABs+11#rx(Z`&|AqUE9U2 zzGL+}*Hp6;=hkjd{$n=B;C@ir%l2;nDUsjKZ@aTmxbIn8G6P*QVBvHNu*?WRS1jzt^qm;Hg;@73rATl|#kIKDqs zTIVL`>CW8On&uIwRz`Q}U6-2AvG&}vofGrth;?~>4-*OU2>Y7+%P3s*sQXnusa=yd z%}zH`{ir#?_V~gZ#WtsGf&<^J6xpOExIbyrzt$ZdE(cX=!>2z^(rUQ#disOUnosiu zKWSQ|OFRizJ-uG>=T?<^wUhIGKRuuDXP4tA^T(H_eA?fjpY@6PmfOrXb`5uGS1j8V zu=)ND&n>c(=G?Pg9*~-&z|i~T(@~W@oWi!=JO}L~%ipEMxGj5-w10{EFXJtbg7VgA zYzh4xXdSY^gJquBld5TnYnD&l5}WrSYv;SG`j55US6$V*w5oYakcT#ZW~o``R;#69 z)4A5_ne(5jU^3(Nx@w}a{=(0Y?3D*k8J8P<+{u=-+OI}+-KCE3tX=)0zoJ_AJ>3&F zTk@-og^l2o>P1^Bli6&KzpCm}we=UP*te>Bz3b<=&W-=lmrp8Ww0!5}B_JNSA})s^ zUTFHmoCojgolV{!Kl4PW=4-&&&Wc{mkDV_Ce;00@W;EMFeV?G}^x5D3=@ftR{HVIC zP$g#ZQ(eyc0+rt9!Z9DKFZR^KFMz`mb-}zuRcYAL|aHR0FpU)=FINoEC`#Glm z%bCq=_oZw%>DAnB*Pm+MTVkbC>u1Rcm9`$ad%a2|G~6m)v;!cNEw~yqMZI{0N_f^{N-0io^cJID>cgx+f-S_1^&+q(P@mb>D0fF?_ z=PkcKzFU0m|GesVJD zrD4bRo!^rGeGt~K>#BeD?0m(C^E-d)$NgdYf9h=g<6HZUfAX{bf9Wdt&--9~bzsx~ zhsXX`eKh#j&%W>R(cMfwElQh2CcZr?e8@GaHCj;4RU=ME*wUwHW<~La_8UiJ)U+ns zsQrvH3>Pt&dEDu~n!%z8vp>%iDV%)lr|UxZ0(tAl7ddAY*ng>dy{Z`O1GA4h;~x1QWndz^0uahGXy33 zBn%g?&$STaX=e$k*GO^M#?Q7WP+4ojWhn`xZ!AiNj7tkuEN-N`uqYU8KmUTihv(Rz zg&8^muS{9Cy?@8cf0d`@Fmtop*#Z?A?(aQcuA4|+yysD1A=dZi;ku00=1X0ive7J` z+??8-9x5-CbxhvS|7Cr_lv|n7SMm(zr=Q=p_wCtgRxvB1313zSE-c*n_F!Xxf|-!w zk;cq6vy=q0XwUiE)g>kyTrcJ3*ze%^dfT*Tc}}-4?mc{e&+e7Gw{BiKvGI8>zjySp zZ>((YJvq17njW>Cdep&t-Xu=m0R zx%}TJ&f2-VS#fb`%8KJ1B`j5Jyz|O-O#i~>VZHUNU-%n`345Gh&MY{&b@OEp;ki2B zZhUBYaVyd@>%&K_>u2*0ol$unbMt7cy2!KA1uOX^HZFTodo^aKm9q8fl2spMA9DE5 z5u3iR)bC!!>Yx>KcYU>*qkjJN&FB2Q{YP#k3o09IIa)a7>Fny>#sm{F%Wc*Y#!Ct} zB{wn}1;$&rFtGl8CByo|x&5T??Ybym;<3x1XK(6lK9r_xm<97etB7dJ{= zQ=O*jNJ#;@hl2-*?Zt0k5uZbSmoC* zc3t5t{Z!zZvusb%uY-H4b3RQ!Z!^nHcV3-{<}%0cX?4?=Zx7pQlzzf0>U7FphgsEY zrWw56yeID*+XSfzm07O2wRf$YM9&<#Hh0VT5AyU<@5FGkJ(zcE*_Mh7wpp9m3*gI`rE1svGXe{Lhmf;Si5S6r2dLWVjF!$ zdn?>TZ-3-${JMGn%vFm#O}NjL@0hbHiQP|-Z)33Ndu4$`=R5L3kLuYh>$>}6#er?v zW@{SklMO>ebr*%Ys%IP)QMsS|Le9L_YE75ftaUe<{Z~9PbA0yC;_8P=wdW_US@foh zTwK@1cX4G`?V~c$^pAVAOct(Qluli9d&!oZM}Z;4YSs|2mB#>4#uxH*vWpJbzA)Iy;(PR_i=PafS5Vt{*7FPD|KmhCLe8r_xzuRZEzajEvtV`FuY574+4mmrZg%*2{waPoH9UGqrMm5H#l4X8 z$BP$LDw~T>zB94IFmtj`9s91!d;$MjGfq$G%dTV!Nq+cai*@qfDU;80x_#gH^O5dW zbDNr;_j^C4&7Hh4txh<4;x%s(-JY6sBikj5F4;e37FrveH^;qd((X(8^S^O-^dC8< zdi4J0OB3C8Ub(~RH%UBwiqXr{O;`NqY5o^7e7W|t;=)(w-prob+$Qvs<>`mS+d1-+ zWm4AoeKmVxuuYlS--<8EeEDCA#|P#-YW;NUUf8m|L03LaJ1=Xb#QaP-lZ$`GLpGb) ztFJtg^ebuHlzAwJt1eo=P50D8_NBfvnpx-UWY%~xXWprpbAB&xzx@*)nDJ$?HRDz9 zjq|-4tyBKb{jylP>COJr*W?$-$I7S7UB|QO&GbLq1`W*Db|_pET>6^zqQKXd6=xQG zs*1lVVY6>dcfgD%KUTR-tQNfY`HQY};v&@o<|v80TE0D1s?V|x@9^6#efZPtDUG|I z_UsUIoKkXZ#kwHL_mUga$|I62oN|wCIDaJIk@R61>6XG3YE3$w3k39>1RA>qo(MJ7 ztWw`HJ>r&k!4w_GbI#&R9xv-_6=Hp`t6`7$)A`Mji`uKV9(H-Z(QVz*pc`&!H{Il> z|9WIxH1pT9k4MiuS!-B%ci;4fzG-%e$z`+8

M_v3DRkYQz(23j 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 z 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 )SSz{jTHAHe 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 HU|;|Mb`%Si literal 0 HcmV?d00001 diff --git a/java/pbrpcgen/eclipse-project/.classpath b/java/pbrpcgen/eclipse-project/.classpath index f349a69b2..137c05644 100644 --- a/java/pbrpcgen/eclipse-project/.classpath +++ b/java/pbrpcgen/eclipse-project/.classpath @@ -2,6 +2,6 @@ - + diff --git a/java/pbrpcgen/nbproject/build-impl.xml b/java/pbrpcgen/nbproject/build-impl.xml index 30d788df2..a5239809d 100644 --- a/java/pbrpcgen/nbproject/build-impl.xml +++ b/java/pbrpcgen/nbproject/build-impl.xml @@ -1,5 +1,4 @@ - - - + --> @@ -55,7 +53,14 @@ is divided into following sections: - + + + + + + + + @@ -70,8 +75,14 @@ is divided into following sections: + + + + + + @@ -84,41 +95,42 @@ is divided into following sections: - - - - - - - - - - - - + - + - + - + - + - + + + + + + + + + + + + + @@ -173,8 +185,17 @@ is divided into following sections: - + + + + + + + + + + @@ -291,14 +312,19 @@ is divided into following sections: Must set javac.includes - + + + + + + - + @@ -309,7 +335,8 @@ is divided into following sections: - + + @@ -325,11 +352,56 @@ is divided into following sections: + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Must set JVM to use for profiling in profiler.info.jvm + Must set profiler agent JVM arguments in profiler.info.jvmargs.agent + @@ -424,6 +496,7 @@ is divided into following sections: + @@ -439,7 +512,7 @@ is divided into following sections: - + @@ -568,10 +641,10 @@ is divided into following sections: - + - + @@ -580,44 +653,53 @@ is divided into following sections: - To run this application from the command line without Ant, try: + To run this application from the command line without Ant, try: - java -cp "${run.classpath.with.dist.jar}" ${main.class} + java -cp "${run.classpath.with.dist.jar}" ${main.class} - + + + + + + + + + + + + + + - - - - - - - To run this application from the command line without Ant, try: - - java -jar "${dist.jar.resolved}" + + + - - - - - - - To run this application from the command line without Ant, try: + + + To run this application from the command line without Ant, try: - java -jar "${dist.jar.resolved}" + java -jar "${dist.jar.resolved}" + + + + + + - + + + + + + + + + + + Must select one file in the IDE or set profile.class + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + Must select some files in the IDE or set javac.includes diff --git a/java/pbrpcgen/nbproject/genfiles.properties b/java/pbrpcgen/nbproject/genfiles.properties index 9a98b522a..5e10c1765 100644 --- a/java/pbrpcgen/nbproject/genfiles.properties +++ b/java/pbrpcgen/nbproject/genfiles.properties @@ -4,5 +4,5 @@ build.xml.stylesheet.CRC32=28e38971@1.38.1.45 # This file is used by a NetBeans-based IDE to track changes in generated files such as build-impl.xml. # Do not edit this file. You may delete it but then the IDE will never regenerate such files for you. nbproject/build-impl.xml.data.CRC32=ab7e35e7 -nbproject/build-impl.xml.script.CRC32=962ba119 -nbproject/build-impl.xml.stylesheet.CRC32=f33e10ff@1.38.2.45 +nbproject/build-impl.xml.script.CRC32=64bc69d8 +nbproject/build-impl.xml.stylesheet.CRC32=0ae3a408@1.44.1.45 diff --git a/java/pbrpcgen/nbproject/private/private.properties b/java/pbrpcgen/nbproject/private/private.properties index dd5b7a6ea..ba93c2bc7 100644 --- a/java/pbrpcgen/nbproject/private/private.properties +++ b/java/pbrpcgen/nbproject/private/private.properties @@ -1,2 +1,6 @@ compile.on.save=true -user.properties.file=/home/bjko/.netbeans/6.9/build.properties +do.depend=false +do.jar=true +javac.debug=true +javadoc.preview=true +user.properties.file=/home/kleineweber/.netbeans/7.0/build.properties diff --git a/java/pbrpcgen/nbproject/private/private.xml b/java/pbrpcgen/nbproject/private/private.xml index c1f155a78..e39667075 100644 --- a/java/pbrpcgen/nbproject/private/private.xml +++ b/java/pbrpcgen/nbproject/private/private.xml @@ -1,4 +1,3 @@ - - + diff --git a/java/pbrpcgen/nbproject/project.properties b/java/pbrpcgen/nbproject/project.properties index e306f3dbe..268b2afef 100644 --- a/java/pbrpcgen/nbproject/project.properties +++ b/java/pbrpcgen/nbproject/project.properties @@ -1,9 +1,9 @@ annotation.processing.enabled=true annotation.processing.enabled.in.editor=false -annotation.processing.processor.options= -annotation.processing.processors.list= annotation.processing.run.all.processors=true annotation.processing.source.output=${build.generated.sources.dir}/ap-source-output +application.title=pbrpcgen +application.vendor=kleineweber build.classes.dir=${build.dir}/classes build.classes.excludes=**/*.java,**/*.form # This directory is removed when the project is cleaned: @@ -24,12 +24,13 @@ debug.test.classpath=\ dist.dir=dist dist.jar=${dist.dir}/pbrpcgen.jar dist.javadoc.dir=${dist.dir}/javadoc +endorsed.classpath= excludes= -file.reference.protobuf-java-2.3.0.jar=../lib/protobuf-java-2.3.0.jar +file.reference.protobuf-java-2.5.0.jar=../lib/protobuf-java-2.5.0.jar includes=** jar.compress=false javac.classpath=\ - ${file.reference.protobuf-java-2.3.0.jar} + ${file.reference.protobuf-java-2.5.0.jar} # Space-separated list of extra javac options javac.compilerargs= javac.deprecation=false @@ -58,6 +59,7 @@ javadoc.windowtitle= main.class= manifest.file=manifest.mf meta.inf.dir=${src.dir}/META-INF +mkdist.disabled=false platform.active=default_platform run.classpath=\ ${javac.classpath}:\ diff --git a/java/pbrpcgen/src/com/google/protobuf/compiler/PluginProtos.java b/java/pbrpcgen/src/com/google/protobuf/compiler/PluginProtos.java new file mode 100644 index 000000000..63e173cb0 --- /dev/null +++ b/java/pbrpcgen/src/com/google/protobuf/compiler/PluginProtos.java @@ -0,0 +1,4121 @@ +// Generated by the protocol buffer compiler. DO NOT EDIT! +// source: plugin.proto + +package com.google.protobuf.compiler; + +public final class PluginProtos { + private PluginProtos() {} + public static void registerAllExtensions( + com.google.protobuf.ExtensionRegistry registry) { + } + public interface CodeGeneratorRequestOrBuilder + extends com.google.protobuf.MessageOrBuilder { + + // repeated string file_to_generate = 1; + /** + * repeated string file_to_generate = 1; + * + *

+     * The .proto files that were explicitly listed on the command-line.  The
+     * code generator should generate code only for these files.  Each file's
+     * descriptor will be included in proto_file, below.
+     * 
+ */ + java.util.List + getFileToGenerateList(); + /** + * repeated string file_to_generate = 1; + * + *
+     * The .proto files that were explicitly listed on the command-line.  The
+     * code generator should generate code only for these files.  Each file's
+     * descriptor will be included in proto_file, below.
+     * 
+ */ + int getFileToGenerateCount(); + /** + * repeated string file_to_generate = 1; + * + *
+     * The .proto files that were explicitly listed on the command-line.  The
+     * code generator should generate code only for these files.  Each file's
+     * descriptor will be included in proto_file, below.
+     * 
+ */ + java.lang.String getFileToGenerate(int index); + /** + * repeated string file_to_generate = 1; + * + *
+     * The .proto files that were explicitly listed on the command-line.  The
+     * code generator should generate code only for these files.  Each file's
+     * descriptor will be included in proto_file, below.
+     * 
+ */ + com.google.protobuf.ByteString + getFileToGenerateBytes(int index); + + // optional string parameter = 2; + /** + * optional string parameter = 2; + * + *
+     * The generator parameter passed on the command-line.
+     * 
+ */ + boolean hasParameter(); + /** + * optional string parameter = 2; + * + *
+     * The generator parameter passed on the command-line.
+     * 
+ */ + java.lang.String getParameter(); + /** + * optional string parameter = 2; + * + *
+     * The generator parameter passed on the command-line.
+     * 
+ */ + com.google.protobuf.ByteString + getParameterBytes(); + + // repeated .google.protobuf.FileDescriptorProto proto_file = 15; + /** + * repeated .google.protobuf.FileDescriptorProto proto_file = 15; + * + *
+     * FileDescriptorProtos for all files in files_to_generate and everything
+     * they import.  The files will appear in topological order, so each file
+     * appears before any file that imports it.
+     *
+     * protoc guarantees that all proto_files will be written after
+     * the fields above, even though this is not technically guaranteed by the
+     * protobuf wire format.  This theoretically could allow a plugin to stream
+     * in the FileDescriptorProtos and handle them one by one rather than read
+     * the entire set into memory at once.  However, as of this writing, this
+     * is not similarly optimized on protoc's end -- it will store all fields in
+     * memory at once before sending them to the plugin.
+     * 
+ */ + java.util.List + getProtoFileList(); + /** + * repeated .google.protobuf.FileDescriptorProto proto_file = 15; + * + *
+     * FileDescriptorProtos for all files in files_to_generate and everything
+     * they import.  The files will appear in topological order, so each file
+     * appears before any file that imports it.
+     *
+     * protoc guarantees that all proto_files will be written after
+     * the fields above, even though this is not technically guaranteed by the
+     * protobuf wire format.  This theoretically could allow a plugin to stream
+     * in the FileDescriptorProtos and handle them one by one rather than read
+     * the entire set into memory at once.  However, as of this writing, this
+     * is not similarly optimized on protoc's end -- it will store all fields in
+     * memory at once before sending them to the plugin.
+     * 
+ */ + com.google.protobuf.DescriptorProtos.FileDescriptorProto getProtoFile(int index); + /** + * repeated .google.protobuf.FileDescriptorProto proto_file = 15; + * + *
+     * FileDescriptorProtos for all files in files_to_generate and everything
+     * they import.  The files will appear in topological order, so each file
+     * appears before any file that imports it.
+     *
+     * protoc guarantees that all proto_files will be written after
+     * the fields above, even though this is not technically guaranteed by the
+     * protobuf wire format.  This theoretically could allow a plugin to stream
+     * in the FileDescriptorProtos and handle them one by one rather than read
+     * the entire set into memory at once.  However, as of this writing, this
+     * is not similarly optimized on protoc's end -- it will store all fields in
+     * memory at once before sending them to the plugin.
+     * 
+ */ + int getProtoFileCount(); + /** + * repeated .google.protobuf.FileDescriptorProto proto_file = 15; + * + *
+     * FileDescriptorProtos for all files in files_to_generate and everything
+     * they import.  The files will appear in topological order, so each file
+     * appears before any file that imports it.
+     *
+     * protoc guarantees that all proto_files will be written after
+     * the fields above, even though this is not technically guaranteed by the
+     * protobuf wire format.  This theoretically could allow a plugin to stream
+     * in the FileDescriptorProtos and handle them one by one rather than read
+     * the entire set into memory at once.  However, as of this writing, this
+     * is not similarly optimized on protoc's end -- it will store all fields in
+     * memory at once before sending them to the plugin.
+     * 
+ */ + java.util.List + getProtoFileOrBuilderList(); + /** + * repeated .google.protobuf.FileDescriptorProto proto_file = 15; + * + *
+     * FileDescriptorProtos for all files in files_to_generate and everything
+     * they import.  The files will appear in topological order, so each file
+     * appears before any file that imports it.
+     *
+     * protoc guarantees that all proto_files will be written after
+     * the fields above, even though this is not technically guaranteed by the
+     * protobuf wire format.  This theoretically could allow a plugin to stream
+     * in the FileDescriptorProtos and handle them one by one rather than read
+     * the entire set into memory at once.  However, as of this writing, this
+     * is not similarly optimized on protoc's end -- it will store all fields in
+     * memory at once before sending them to the plugin.
+     * 
+ */ + com.google.protobuf.DescriptorProtos.FileDescriptorProtoOrBuilder getProtoFileOrBuilder( + int index); + } + /** + * Protobuf type {@code google.protobuf.compiler.CodeGeneratorRequest} + * + *
+   * An encoded CodeGeneratorRequest is written to the plugin's stdin.
+   * 
+ */ + public static final class CodeGeneratorRequest extends + com.google.protobuf.GeneratedMessage + implements CodeGeneratorRequestOrBuilder { + // Use CodeGeneratorRequest.newBuilder() to construct. + private CodeGeneratorRequest(com.google.protobuf.GeneratedMessage.Builder builder) { + super(builder); + this.unknownFields = builder.getUnknownFields(); + } + private CodeGeneratorRequest(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); } + + private static final CodeGeneratorRequest defaultInstance; + public static CodeGeneratorRequest getDefaultInstance() { + return defaultInstance; + } + + public CodeGeneratorRequest getDefaultInstanceForType() { + return defaultInstance; + } + + private final com.google.protobuf.UnknownFieldSet unknownFields; + @java.lang.Override + public final com.google.protobuf.UnknownFieldSet + getUnknownFields() { + return this.unknownFields; + } + private CodeGeneratorRequest( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + initFields(); + int mutable_bitField0_ = 0; + com.google.protobuf.UnknownFieldSet.Builder unknownFields = + com.google.protobuf.UnknownFieldSet.newBuilder(); + try { + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch (tag) { + case 0: + done = true; + break; + default: { + if (!parseUnknownField(input, unknownFields, + extensionRegistry, tag)) { + done = true; + } + break; + } + case 10: { + if (!((mutable_bitField0_ & 0x00000001) == 0x00000001)) { + fileToGenerate_ = new com.google.protobuf.LazyStringArrayList(); + mutable_bitField0_ |= 0x00000001; + } + fileToGenerate_.add(input.readBytes()); + break; + } + case 18: { + bitField0_ |= 0x00000001; + parameter_ = input.readBytes(); + break; + } + case 122: { + if (!((mutable_bitField0_ & 0x00000004) == 0x00000004)) { + protoFile_ = new java.util.ArrayList(); + mutable_bitField0_ |= 0x00000004; + } + protoFile_.add(input.readMessage(com.google.protobuf.DescriptorProtos.FileDescriptorProto.PARSER, extensionRegistry)); + break; + } + } + } + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(this); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException( + e.getMessage()).setUnfinishedMessage(this); + } finally { + if (((mutable_bitField0_ & 0x00000001) == 0x00000001)) { + fileToGenerate_ = new com.google.protobuf.UnmodifiableLazyStringList(fileToGenerate_); + } + if (((mutable_bitField0_ & 0x00000004) == 0x00000004)) { + protoFile_ = java.util.Collections.unmodifiableList(protoFile_); + } + this.unknownFields = unknownFields.build(); + makeExtensionsImmutable(); + } + } + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return com.google.protobuf.compiler.PluginProtos.internal_static_google_protobuf_compiler_CodeGeneratorRequest_descriptor; + } + + protected com.google.protobuf.GeneratedMessage.FieldAccessorTable + internalGetFieldAccessorTable() { + return com.google.protobuf.compiler.PluginProtos.internal_static_google_protobuf_compiler_CodeGeneratorRequest_fieldAccessorTable + .ensureFieldAccessorsInitialized( + com.google.protobuf.compiler.PluginProtos.CodeGeneratorRequest.class, com.google.protobuf.compiler.PluginProtos.CodeGeneratorRequest.Builder.class); + } + + public static com.google.protobuf.Parser PARSER = + new com.google.protobuf.AbstractParser() { + public CodeGeneratorRequest parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return new CodeGeneratorRequest(input, extensionRegistry); + } + }; + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; + } + + private int bitField0_; + // repeated string file_to_generate = 1; + public static final int FILE_TO_GENERATE_FIELD_NUMBER = 1; + private com.google.protobuf.LazyStringList fileToGenerate_; + /** + * repeated string file_to_generate = 1; + * + *
+     * The .proto files that were explicitly listed on the command-line.  The
+     * code generator should generate code only for these files.  Each file's
+     * descriptor will be included in proto_file, below.
+     * 
+ */ + public java.util.List + getFileToGenerateList() { + return fileToGenerate_; + } + /** + * repeated string file_to_generate = 1; + * + *
+     * The .proto files that were explicitly listed on the command-line.  The
+     * code generator should generate code only for these files.  Each file's
+     * descriptor will be included in proto_file, below.
+     * 
+ */ + public int getFileToGenerateCount() { + return fileToGenerate_.size(); + } + /** + * repeated string file_to_generate = 1; + * + *
+     * The .proto files that were explicitly listed on the command-line.  The
+     * code generator should generate code only for these files.  Each file's
+     * descriptor will be included in proto_file, below.
+     * 
+ */ + public java.lang.String getFileToGenerate(int index) { + return fileToGenerate_.get(index); + } + /** + * repeated string file_to_generate = 1; + * + *
+     * The .proto files that were explicitly listed on the command-line.  The
+     * code generator should generate code only for these files.  Each file's
+     * descriptor will be included in proto_file, below.
+     * 
+ */ + public com.google.protobuf.ByteString + getFileToGenerateBytes(int index) { + return fileToGenerate_.getByteString(index); + } + + // optional string parameter = 2; + public static final int PARAMETER_FIELD_NUMBER = 2; + private java.lang.Object parameter_; + /** + * optional string parameter = 2; + * + *
+     * The generator parameter passed on the command-line.
+     * 
+ */ + public boolean hasParameter() { + return ((bitField0_ & 0x00000001) == 0x00000001); + } + /** + * optional string parameter = 2; + * + *
+     * The generator parameter passed on the command-line.
+     * 
+ */ + public java.lang.String getParameter() { + java.lang.Object ref = parameter_; + if (ref instanceof java.lang.String) { + return (java.lang.String) ref; + } else { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + if (bs.isValidUtf8()) { + parameter_ = s; + } + return s; + } + } + /** + * optional string parameter = 2; + * + *
+     * The generator parameter passed on the command-line.
+     * 
+ */ + public com.google.protobuf.ByteString + getParameterBytes() { + java.lang.Object ref = parameter_; + if (ref instanceof java.lang.String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + parameter_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + + // repeated .google.protobuf.FileDescriptorProto proto_file = 15; + public static final int PROTO_FILE_FIELD_NUMBER = 15; + private java.util.List protoFile_; + /** + * repeated .google.protobuf.FileDescriptorProto proto_file = 15; + * + *
+     * FileDescriptorProtos for all files in files_to_generate and everything
+     * they import.  The files will appear in topological order, so each file
+     * appears before any file that imports it.
+     *
+     * protoc guarantees that all proto_files will be written after
+     * the fields above, even though this is not technically guaranteed by the
+     * protobuf wire format.  This theoretically could allow a plugin to stream
+     * in the FileDescriptorProtos and handle them one by one rather than read
+     * the entire set into memory at once.  However, as of this writing, this
+     * is not similarly optimized on protoc's end -- it will store all fields in
+     * memory at once before sending them to the plugin.
+     * 
+ */ + public java.util.List getProtoFileList() { + return protoFile_; + } + /** + * repeated .google.protobuf.FileDescriptorProto proto_file = 15; + * + *
+     * FileDescriptorProtos for all files in files_to_generate and everything
+     * they import.  The files will appear in topological order, so each file
+     * appears before any file that imports it.
+     *
+     * protoc guarantees that all proto_files will be written after
+     * the fields above, even though this is not technically guaranteed by the
+     * protobuf wire format.  This theoretically could allow a plugin to stream
+     * in the FileDescriptorProtos and handle them one by one rather than read
+     * the entire set into memory at once.  However, as of this writing, this
+     * is not similarly optimized on protoc's end -- it will store all fields in
+     * memory at once before sending them to the plugin.
+     * 
+ */ + public java.util.List + getProtoFileOrBuilderList() { + return protoFile_; + } + /** + * repeated .google.protobuf.FileDescriptorProto proto_file = 15; + * + *
+     * FileDescriptorProtos for all files in files_to_generate and everything
+     * they import.  The files will appear in topological order, so each file
+     * appears before any file that imports it.
+     *
+     * protoc guarantees that all proto_files will be written after
+     * the fields above, even though this is not technically guaranteed by the
+     * protobuf wire format.  This theoretically could allow a plugin to stream
+     * in the FileDescriptorProtos and handle them one by one rather than read
+     * the entire set into memory at once.  However, as of this writing, this
+     * is not similarly optimized on protoc's end -- it will store all fields in
+     * memory at once before sending them to the plugin.
+     * 
+ */ + public int getProtoFileCount() { + return protoFile_.size(); + } + /** + * repeated .google.protobuf.FileDescriptorProto proto_file = 15; + * + *
+     * FileDescriptorProtos for all files in files_to_generate and everything
+     * they import.  The files will appear in topological order, so each file
+     * appears before any file that imports it.
+     *
+     * protoc guarantees that all proto_files will be written after
+     * the fields above, even though this is not technically guaranteed by the
+     * protobuf wire format.  This theoretically could allow a plugin to stream
+     * in the FileDescriptorProtos and handle them one by one rather than read
+     * the entire set into memory at once.  However, as of this writing, this
+     * is not similarly optimized on protoc's end -- it will store all fields in
+     * memory at once before sending them to the plugin.
+     * 
+ */ + public com.google.protobuf.DescriptorProtos.FileDescriptorProto getProtoFile(int index) { + return protoFile_.get(index); + } + /** + * repeated .google.protobuf.FileDescriptorProto proto_file = 15; + * + *
+     * FileDescriptorProtos for all files in files_to_generate and everything
+     * they import.  The files will appear in topological order, so each file
+     * appears before any file that imports it.
+     *
+     * protoc guarantees that all proto_files will be written after
+     * the fields above, even though this is not technically guaranteed by the
+     * protobuf wire format.  This theoretically could allow a plugin to stream
+     * in the FileDescriptorProtos and handle them one by one rather than read
+     * the entire set into memory at once.  However, as of this writing, this
+     * is not similarly optimized on protoc's end -- it will store all fields in
+     * memory at once before sending them to the plugin.
+     * 
+ */ + public com.google.protobuf.DescriptorProtos.FileDescriptorProtoOrBuilder getProtoFileOrBuilder( + int index) { + return protoFile_.get(index); + } + + private void initFields() { + fileToGenerate_ = com.google.protobuf.LazyStringArrayList.EMPTY; + parameter_ = ""; + protoFile_ = java.util.Collections.emptyList(); + } + private byte memoizedIsInitialized = -1; + public final boolean isInitialized() { + byte isInitialized = memoizedIsInitialized; + if (isInitialized != -1) return isInitialized == 1; + + for (int i = 0; i < getProtoFileCount(); i++) { + if (!getProtoFile(i).isInitialized()) { + memoizedIsInitialized = 0; + return false; + } + } + memoizedIsInitialized = 1; + return true; + } + + public void writeTo(com.google.protobuf.CodedOutputStream output) + throws java.io.IOException { + getSerializedSize(); + for (int i = 0; i < fileToGenerate_.size(); i++) { + output.writeBytes(1, fileToGenerate_.getByteString(i)); + } + if (((bitField0_ & 0x00000001) == 0x00000001)) { + output.writeBytes(2, getParameterBytes()); + } + for (int i = 0; i < protoFile_.size(); i++) { + output.writeMessage(15, protoFile_.get(i)); + } + getUnknownFields().writeTo(output); + } + + private int memoizedSerializedSize = -1; + public int getSerializedSize() { + int size = memoizedSerializedSize; + if (size != -1) return size; + + size = 0; + { + int dataSize = 0; + for (int i = 0; i < fileToGenerate_.size(); i++) { + dataSize += com.google.protobuf.CodedOutputStream + .computeBytesSizeNoTag(fileToGenerate_.getByteString(i)); + } + size += dataSize; + size += 1 * getFileToGenerateList().size(); + } + if (((bitField0_ & 0x00000001) == 0x00000001)) { + size += com.google.protobuf.CodedOutputStream + .computeBytesSize(2, getParameterBytes()); + } + for (int i = 0; i < protoFile_.size(); i++) { + size += com.google.protobuf.CodedOutputStream + .computeMessageSize(15, protoFile_.get(i)); + } + size += getUnknownFields().getSerializedSize(); + memoizedSerializedSize = size; + return size; + } + + private static final long serialVersionUID = 0L; + @java.lang.Override + protected java.lang.Object writeReplace() + throws java.io.ObjectStreamException { + return super.writeReplace(); + } + + public static com.google.protobuf.compiler.PluginProtos.CodeGeneratorRequest parseFrom( + com.google.protobuf.ByteString data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static com.google.protobuf.compiler.PluginProtos.CodeGeneratorRequest parseFrom( + com.google.protobuf.ByteString data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static com.google.protobuf.compiler.PluginProtos.CodeGeneratorRequest parseFrom(byte[] data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static com.google.protobuf.compiler.PluginProtos.CodeGeneratorRequest parseFrom( + byte[] data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static com.google.protobuf.compiler.PluginProtos.CodeGeneratorRequest parseFrom(java.io.InputStream input) + throws java.io.IOException { + return PARSER.parseFrom(input); + } + public static com.google.protobuf.compiler.PluginProtos.CodeGeneratorRequest parseFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return PARSER.parseFrom(input, extensionRegistry); + } + public static com.google.protobuf.compiler.PluginProtos.CodeGeneratorRequest parseDelimitedFrom(java.io.InputStream input) + throws java.io.IOException { + return PARSER.parseDelimitedFrom(input); + } + public static com.google.protobuf.compiler.PluginProtos.CodeGeneratorRequest parseDelimitedFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return PARSER.parseDelimitedFrom(input, extensionRegistry); + } + public static com.google.protobuf.compiler.PluginProtos.CodeGeneratorRequest parseFrom( + com.google.protobuf.CodedInputStream input) + throws java.io.IOException { + return PARSER.parseFrom(input); + } + public static com.google.protobuf.compiler.PluginProtos.CodeGeneratorRequest parseFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return PARSER.parseFrom(input, extensionRegistry); + } + + public static Builder newBuilder() { return Builder.create(); } + public Builder newBuilderForType() { return newBuilder(); } + public static Builder newBuilder(com.google.protobuf.compiler.PluginProtos.CodeGeneratorRequest prototype) { + return newBuilder().mergeFrom(prototype); + } + public Builder toBuilder() { return newBuilder(this); } + + @java.lang.Override + protected Builder newBuilderForType( + com.google.protobuf.GeneratedMessage.BuilderParent parent) { + Builder builder = new Builder(parent); + return builder; + } + /** + * Protobuf type {@code google.protobuf.compiler.CodeGeneratorRequest} + * + *
+     * An encoded CodeGeneratorRequest is written to the plugin's stdin.
+     * 
+ */ + public static final class Builder extends + com.google.protobuf.GeneratedMessage.Builder + implements com.google.protobuf.compiler.PluginProtos.CodeGeneratorRequestOrBuilder { + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return com.google.protobuf.compiler.PluginProtos.internal_static_google_protobuf_compiler_CodeGeneratorRequest_descriptor; + } + + protected com.google.protobuf.GeneratedMessage.FieldAccessorTable + internalGetFieldAccessorTable() { + return com.google.protobuf.compiler.PluginProtos.internal_static_google_protobuf_compiler_CodeGeneratorRequest_fieldAccessorTable + .ensureFieldAccessorsInitialized( + com.google.protobuf.compiler.PluginProtos.CodeGeneratorRequest.class, com.google.protobuf.compiler.PluginProtos.CodeGeneratorRequest.Builder.class); + } + + // Construct using com.google.protobuf.compiler.PluginProtos.CodeGeneratorRequest.newBuilder() + private Builder() { + maybeForceBuilderInitialization(); + } + + private Builder( + com.google.protobuf.GeneratedMessage.BuilderParent parent) { + super(parent); + maybeForceBuilderInitialization(); + } + private void maybeForceBuilderInitialization() { + if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) { + getProtoFileFieldBuilder(); + } + } + private static Builder create() { + return new Builder(); + } + + public Builder clear() { + super.clear(); + fileToGenerate_ = com.google.protobuf.LazyStringArrayList.EMPTY; + bitField0_ = (bitField0_ & ~0x00000001); + parameter_ = ""; + bitField0_ = (bitField0_ & ~0x00000002); + if (protoFileBuilder_ == null) { + protoFile_ = java.util.Collections.emptyList(); + bitField0_ = (bitField0_ & ~0x00000004); + } else { + protoFileBuilder_.clear(); + } + return this; + } + + public Builder clone() { + return create().mergeFrom(buildPartial()); + } + + public com.google.protobuf.Descriptors.Descriptor + getDescriptorForType() { + return com.google.protobuf.compiler.PluginProtos.internal_static_google_protobuf_compiler_CodeGeneratorRequest_descriptor; + } + + public com.google.protobuf.compiler.PluginProtos.CodeGeneratorRequest getDefaultInstanceForType() { + return com.google.protobuf.compiler.PluginProtos.CodeGeneratorRequest.getDefaultInstance(); + } + + public com.google.protobuf.compiler.PluginProtos.CodeGeneratorRequest build() { + com.google.protobuf.compiler.PluginProtos.CodeGeneratorRequest result = buildPartial(); + if (!result.isInitialized()) { + throw newUninitializedMessageException(result); + } + return result; + } + + public com.google.protobuf.compiler.PluginProtos.CodeGeneratorRequest buildPartial() { + com.google.protobuf.compiler.PluginProtos.CodeGeneratorRequest result = new com.google.protobuf.compiler.PluginProtos.CodeGeneratorRequest(this); + int from_bitField0_ = bitField0_; + int to_bitField0_ = 0; + if (((bitField0_ & 0x00000001) == 0x00000001)) { + fileToGenerate_ = new com.google.protobuf.UnmodifiableLazyStringList( + fileToGenerate_); + bitField0_ = (bitField0_ & ~0x00000001); + } + result.fileToGenerate_ = fileToGenerate_; + if (((from_bitField0_ & 0x00000002) == 0x00000002)) { + to_bitField0_ |= 0x00000001; + } + result.parameter_ = parameter_; + if (protoFileBuilder_ == null) { + if (((bitField0_ & 0x00000004) == 0x00000004)) { + protoFile_ = java.util.Collections.unmodifiableList(protoFile_); + bitField0_ = (bitField0_ & ~0x00000004); + } + result.protoFile_ = protoFile_; + } else { + result.protoFile_ = protoFileBuilder_.build(); + } + result.bitField0_ = to_bitField0_; + onBuilt(); + return result; + } + + public Builder mergeFrom(com.google.protobuf.Message other) { + if (other instanceof com.google.protobuf.compiler.PluginProtos.CodeGeneratorRequest) { + return mergeFrom((com.google.protobuf.compiler.PluginProtos.CodeGeneratorRequest)other); + } else { + super.mergeFrom(other); + return this; + } + } + + public Builder mergeFrom(com.google.protobuf.compiler.PluginProtos.CodeGeneratorRequest other) { + if (other == com.google.protobuf.compiler.PluginProtos.CodeGeneratorRequest.getDefaultInstance()) return this; + if (!other.fileToGenerate_.isEmpty()) { + if (fileToGenerate_.isEmpty()) { + fileToGenerate_ = other.fileToGenerate_; + bitField0_ = (bitField0_ & ~0x00000001); + } else { + ensureFileToGenerateIsMutable(); + fileToGenerate_.addAll(other.fileToGenerate_); + } + onChanged(); + } + if (other.hasParameter()) { + bitField0_ |= 0x00000002; + parameter_ = other.parameter_; + onChanged(); + } + if (protoFileBuilder_ == null) { + if (!other.protoFile_.isEmpty()) { + if (protoFile_.isEmpty()) { + protoFile_ = other.protoFile_; + bitField0_ = (bitField0_ & ~0x00000004); + } else { + ensureProtoFileIsMutable(); + protoFile_.addAll(other.protoFile_); + } + onChanged(); + } + } else { + if (!other.protoFile_.isEmpty()) { + if (protoFileBuilder_.isEmpty()) { + protoFileBuilder_.dispose(); + protoFileBuilder_ = null; + protoFile_ = other.protoFile_; + bitField0_ = (bitField0_ & ~0x00000004); + protoFileBuilder_ = + com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ? + getProtoFileFieldBuilder() : null; + } else { + protoFileBuilder_.addAllMessages(other.protoFile_); + } + } + } + this.mergeUnknownFields(other.getUnknownFields()); + return this; + } + + public final boolean isInitialized() { + for (int i = 0; i < getProtoFileCount(); i++) { + if (!getProtoFile(i).isInitialized()) { + + return false; + } + } + return true; + } + + public Builder mergeFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + com.google.protobuf.compiler.PluginProtos.CodeGeneratorRequest parsedMessage = null; + try { + parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + parsedMessage = (com.google.protobuf.compiler.PluginProtos.CodeGeneratorRequest) e.getUnfinishedMessage(); + throw e; + } finally { + if (parsedMessage != null) { + mergeFrom(parsedMessage); + } + } + return this; + } + private int bitField0_; + + // repeated string file_to_generate = 1; + private com.google.protobuf.LazyStringList fileToGenerate_ = com.google.protobuf.LazyStringArrayList.EMPTY; + private void ensureFileToGenerateIsMutable() { + if (!((bitField0_ & 0x00000001) == 0x00000001)) { + fileToGenerate_ = new com.google.protobuf.LazyStringArrayList(fileToGenerate_); + bitField0_ |= 0x00000001; + } + } + /** + * repeated string file_to_generate = 1; + * + *
+       * The .proto files that were explicitly listed on the command-line.  The
+       * code generator should generate code only for these files.  Each file's
+       * descriptor will be included in proto_file, below.
+       * 
+ */ + public java.util.List + getFileToGenerateList() { + return java.util.Collections.unmodifiableList(fileToGenerate_); + } + /** + * repeated string file_to_generate = 1; + * + *
+       * The .proto files that were explicitly listed on the command-line.  The
+       * code generator should generate code only for these files.  Each file's
+       * descriptor will be included in proto_file, below.
+       * 
+ */ + public int getFileToGenerateCount() { + return fileToGenerate_.size(); + } + /** + * repeated string file_to_generate = 1; + * + *
+       * The .proto files that were explicitly listed on the command-line.  The
+       * code generator should generate code only for these files.  Each file's
+       * descriptor will be included in proto_file, below.
+       * 
+ */ + public java.lang.String getFileToGenerate(int index) { + return fileToGenerate_.get(index); + } + /** + * repeated string file_to_generate = 1; + * + *
+       * The .proto files that were explicitly listed on the command-line.  The
+       * code generator should generate code only for these files.  Each file's
+       * descriptor will be included in proto_file, below.
+       * 
+ */ + public com.google.protobuf.ByteString + getFileToGenerateBytes(int index) { + return fileToGenerate_.getByteString(index); + } + /** + * repeated string file_to_generate = 1; + * + *
+       * The .proto files that were explicitly listed on the command-line.  The
+       * code generator should generate code only for these files.  Each file's
+       * descriptor will be included in proto_file, below.
+       * 
+ */ + public Builder setFileToGenerate( + int index, java.lang.String value) { + if (value == null) { + throw new NullPointerException(); + } + ensureFileToGenerateIsMutable(); + fileToGenerate_.set(index, value); + onChanged(); + return this; + } + /** + * repeated string file_to_generate = 1; + * + *
+       * The .proto files that were explicitly listed on the command-line.  The
+       * code generator should generate code only for these files.  Each file's
+       * descriptor will be included in proto_file, below.
+       * 
+ */ + public Builder addFileToGenerate( + java.lang.String value) { + if (value == null) { + throw new NullPointerException(); + } + ensureFileToGenerateIsMutable(); + fileToGenerate_.add(value); + onChanged(); + return this; + } + /** + * repeated string file_to_generate = 1; + * + *
+       * The .proto files that were explicitly listed on the command-line.  The
+       * code generator should generate code only for these files.  Each file's
+       * descriptor will be included in proto_file, below.
+       * 
+ */ + public Builder addAllFileToGenerate( + java.lang.Iterable values) { + ensureFileToGenerateIsMutable(); + super.addAll(values, fileToGenerate_); + onChanged(); + return this; + } + /** + * repeated string file_to_generate = 1; + * + *
+       * The .proto files that were explicitly listed on the command-line.  The
+       * code generator should generate code only for these files.  Each file's
+       * descriptor will be included in proto_file, below.
+       * 
+ */ + public Builder clearFileToGenerate() { + fileToGenerate_ = com.google.protobuf.LazyStringArrayList.EMPTY; + bitField0_ = (bitField0_ & ~0x00000001); + onChanged(); + return this; + } + /** + * repeated string file_to_generate = 1; + * + *
+       * The .proto files that were explicitly listed on the command-line.  The
+       * code generator should generate code only for these files.  Each file's
+       * descriptor will be included in proto_file, below.
+       * 
+ */ + public Builder addFileToGenerateBytes( + com.google.protobuf.ByteString value) { + if (value == null) { + throw new NullPointerException(); + } + ensureFileToGenerateIsMutable(); + fileToGenerate_.add(value); + onChanged(); + return this; + } + + // optional string parameter = 2; + private java.lang.Object parameter_ = ""; + /** + * optional string parameter = 2; + * + *
+       * The generator parameter passed on the command-line.
+       * 
+ */ + public boolean hasParameter() { + return ((bitField0_ & 0x00000002) == 0x00000002); + } + /** + * optional string parameter = 2; + * + *
+       * The generator parameter passed on the command-line.
+       * 
+ */ + public java.lang.String getParameter() { + java.lang.Object ref = parameter_; + if (!(ref instanceof java.lang.String)) { + java.lang.String s = ((com.google.protobuf.ByteString) ref) + .toStringUtf8(); + parameter_ = s; + return s; + } else { + return (java.lang.String) ref; + } + } + /** + * optional string parameter = 2; + * + *
+       * The generator parameter passed on the command-line.
+       * 
+ */ + public com.google.protobuf.ByteString + getParameterBytes() { + java.lang.Object ref = parameter_; + if (ref instanceof String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + parameter_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + /** + * optional string parameter = 2; + * + *
+       * The generator parameter passed on the command-line.
+       * 
+ */ + public Builder setParameter( + java.lang.String value) { + if (value == null) { + throw new NullPointerException(); + } + bitField0_ |= 0x00000002; + parameter_ = value; + onChanged(); + return this; + } + /** + * optional string parameter = 2; + * + *
+       * The generator parameter passed on the command-line.
+       * 
+ */ + public Builder clearParameter() { + bitField0_ = (bitField0_ & ~0x00000002); + parameter_ = getDefaultInstance().getParameter(); + onChanged(); + return this; + } + /** + * optional string parameter = 2; + * + *
+       * The generator parameter passed on the command-line.
+       * 
+ */ + public Builder setParameterBytes( + com.google.protobuf.ByteString value) { + if (value == null) { + throw new NullPointerException(); + } + bitField0_ |= 0x00000002; + parameter_ = value; + onChanged(); + return this; + } + + // repeated .google.protobuf.FileDescriptorProto proto_file = 15; + private java.util.List protoFile_ = + java.util.Collections.emptyList(); + private void ensureProtoFileIsMutable() { + if (!((bitField0_ & 0x00000004) == 0x00000004)) { + protoFile_ = new java.util.ArrayList(protoFile_); + bitField0_ |= 0x00000004; + } + } + + private com.google.protobuf.RepeatedFieldBuilder< + com.google.protobuf.DescriptorProtos.FileDescriptorProto, com.google.protobuf.DescriptorProtos.FileDescriptorProto.Builder, com.google.protobuf.DescriptorProtos.FileDescriptorProtoOrBuilder> protoFileBuilder_; + + /** + * repeated .google.protobuf.FileDescriptorProto proto_file = 15; + * + *
+       * FileDescriptorProtos for all files in files_to_generate and everything
+       * they import.  The files will appear in topological order, so each file
+       * appears before any file that imports it.
+       *
+       * protoc guarantees that all proto_files will be written after
+       * the fields above, even though this is not technically guaranteed by the
+       * protobuf wire format.  This theoretically could allow a plugin to stream
+       * in the FileDescriptorProtos and handle them one by one rather than read
+       * the entire set into memory at once.  However, as of this writing, this
+       * is not similarly optimized on protoc's end -- it will store all fields in
+       * memory at once before sending them to the plugin.
+       * 
+ */ + public java.util.List getProtoFileList() { + if (protoFileBuilder_ == null) { + return java.util.Collections.unmodifiableList(protoFile_); + } else { + return protoFileBuilder_.getMessageList(); + } + } + /** + * repeated .google.protobuf.FileDescriptorProto proto_file = 15; + * + *
+       * FileDescriptorProtos for all files in files_to_generate and everything
+       * they import.  The files will appear in topological order, so each file
+       * appears before any file that imports it.
+       *
+       * protoc guarantees that all proto_files will be written after
+       * the fields above, even though this is not technically guaranteed by the
+       * protobuf wire format.  This theoretically could allow a plugin to stream
+       * in the FileDescriptorProtos and handle them one by one rather than read
+       * the entire set into memory at once.  However, as of this writing, this
+       * is not similarly optimized on protoc's end -- it will store all fields in
+       * memory at once before sending them to the plugin.
+       * 
+ */ + public int getProtoFileCount() { + if (protoFileBuilder_ == null) { + return protoFile_.size(); + } else { + return protoFileBuilder_.getCount(); + } + } + /** + * repeated .google.protobuf.FileDescriptorProto proto_file = 15; + * + *
+       * FileDescriptorProtos for all files in files_to_generate and everything
+       * they import.  The files will appear in topological order, so each file
+       * appears before any file that imports it.
+       *
+       * protoc guarantees that all proto_files will be written after
+       * the fields above, even though this is not technically guaranteed by the
+       * protobuf wire format.  This theoretically could allow a plugin to stream
+       * in the FileDescriptorProtos and handle them one by one rather than read
+       * the entire set into memory at once.  However, as of this writing, this
+       * is not similarly optimized on protoc's end -- it will store all fields in
+       * memory at once before sending them to the plugin.
+       * 
+ */ + public com.google.protobuf.DescriptorProtos.FileDescriptorProto getProtoFile(int index) { + if (protoFileBuilder_ == null) { + return protoFile_.get(index); + } else { + return protoFileBuilder_.getMessage(index); + } + } + /** + * repeated .google.protobuf.FileDescriptorProto proto_file = 15; + * + *
+       * FileDescriptorProtos for all files in files_to_generate and everything
+       * they import.  The files will appear in topological order, so each file
+       * appears before any file that imports it.
+       *
+       * protoc guarantees that all proto_files will be written after
+       * the fields above, even though this is not technically guaranteed by the
+       * protobuf wire format.  This theoretically could allow a plugin to stream
+       * in the FileDescriptorProtos and handle them one by one rather than read
+       * the entire set into memory at once.  However, as of this writing, this
+       * is not similarly optimized on protoc's end -- it will store all fields in
+       * memory at once before sending them to the plugin.
+       * 
+ */ + public Builder setProtoFile( + int index, com.google.protobuf.DescriptorProtos.FileDescriptorProto value) { + if (protoFileBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + ensureProtoFileIsMutable(); + protoFile_.set(index, value); + onChanged(); + } else { + protoFileBuilder_.setMessage(index, value); + } + return this; + } + /** + * repeated .google.protobuf.FileDescriptorProto proto_file = 15; + * + *
+       * FileDescriptorProtos for all files in files_to_generate and everything
+       * they import.  The files will appear in topological order, so each file
+       * appears before any file that imports it.
+       *
+       * protoc guarantees that all proto_files will be written after
+       * the fields above, even though this is not technically guaranteed by the
+       * protobuf wire format.  This theoretically could allow a plugin to stream
+       * in the FileDescriptorProtos and handle them one by one rather than read
+       * the entire set into memory at once.  However, as of this writing, this
+       * is not similarly optimized on protoc's end -- it will store all fields in
+       * memory at once before sending them to the plugin.
+       * 
+ */ + public Builder setProtoFile( + int index, com.google.protobuf.DescriptorProtos.FileDescriptorProto.Builder builderForValue) { + if (protoFileBuilder_ == null) { + ensureProtoFileIsMutable(); + protoFile_.set(index, builderForValue.build()); + onChanged(); + } else { + protoFileBuilder_.setMessage(index, builderForValue.build()); + } + return this; + } + /** + * repeated .google.protobuf.FileDescriptorProto proto_file = 15; + * + *
+       * FileDescriptorProtos for all files in files_to_generate and everything
+       * they import.  The files will appear in topological order, so each file
+       * appears before any file that imports it.
+       *
+       * protoc guarantees that all proto_files will be written after
+       * the fields above, even though this is not technically guaranteed by the
+       * protobuf wire format.  This theoretically could allow a plugin to stream
+       * in the FileDescriptorProtos and handle them one by one rather than read
+       * the entire set into memory at once.  However, as of this writing, this
+       * is not similarly optimized on protoc's end -- it will store all fields in
+       * memory at once before sending them to the plugin.
+       * 
+ */ + public Builder addProtoFile(com.google.protobuf.DescriptorProtos.FileDescriptorProto value) { + if (protoFileBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + ensureProtoFileIsMutable(); + protoFile_.add(value); + onChanged(); + } else { + protoFileBuilder_.addMessage(value); + } + return this; + } + /** + * repeated .google.protobuf.FileDescriptorProto proto_file = 15; + * + *
+       * FileDescriptorProtos for all files in files_to_generate and everything
+       * they import.  The files will appear in topological order, so each file
+       * appears before any file that imports it.
+       *
+       * protoc guarantees that all proto_files will be written after
+       * the fields above, even though this is not technically guaranteed by the
+       * protobuf wire format.  This theoretically could allow a plugin to stream
+       * in the FileDescriptorProtos and handle them one by one rather than read
+       * the entire set into memory at once.  However, as of this writing, this
+       * is not similarly optimized on protoc's end -- it will store all fields in
+       * memory at once before sending them to the plugin.
+       * 
+ */ + public Builder addProtoFile( + int index, com.google.protobuf.DescriptorProtos.FileDescriptorProto value) { + if (protoFileBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + ensureProtoFileIsMutable(); + protoFile_.add(index, value); + onChanged(); + } else { + protoFileBuilder_.addMessage(index, value); + } + return this; + } + /** + * repeated .google.protobuf.FileDescriptorProto proto_file = 15; + * + *
+       * FileDescriptorProtos for all files in files_to_generate and everything
+       * they import.  The files will appear in topological order, so each file
+       * appears before any file that imports it.
+       *
+       * protoc guarantees that all proto_files will be written after
+       * the fields above, even though this is not technically guaranteed by the
+       * protobuf wire format.  This theoretically could allow a plugin to stream
+       * in the FileDescriptorProtos and handle them one by one rather than read
+       * the entire set into memory at once.  However, as of this writing, this
+       * is not similarly optimized on protoc's end -- it will store all fields in
+       * memory at once before sending them to the plugin.
+       * 
+ */ + public Builder addProtoFile( + com.google.protobuf.DescriptorProtos.FileDescriptorProto.Builder builderForValue) { + if (protoFileBuilder_ == null) { + ensureProtoFileIsMutable(); + protoFile_.add(builderForValue.build()); + onChanged(); + } else { + protoFileBuilder_.addMessage(builderForValue.build()); + } + return this; + } + /** + * repeated .google.protobuf.FileDescriptorProto proto_file = 15; + * + *
+       * FileDescriptorProtos for all files in files_to_generate and everything
+       * they import.  The files will appear in topological order, so each file
+       * appears before any file that imports it.
+       *
+       * protoc guarantees that all proto_files will be written after
+       * the fields above, even though this is not technically guaranteed by the
+       * protobuf wire format.  This theoretically could allow a plugin to stream
+       * in the FileDescriptorProtos and handle them one by one rather than read
+       * the entire set into memory at once.  However, as of this writing, this
+       * is not similarly optimized on protoc's end -- it will store all fields in
+       * memory at once before sending them to the plugin.
+       * 
+ */ + public Builder addProtoFile( + int index, com.google.protobuf.DescriptorProtos.FileDescriptorProto.Builder builderForValue) { + if (protoFileBuilder_ == null) { + ensureProtoFileIsMutable(); + protoFile_.add(index, builderForValue.build()); + onChanged(); + } else { + protoFileBuilder_.addMessage(index, builderForValue.build()); + } + return this; + } + /** + * repeated .google.protobuf.FileDescriptorProto proto_file = 15; + * + *
+       * FileDescriptorProtos for all files in files_to_generate and everything
+       * they import.  The files will appear in topological order, so each file
+       * appears before any file that imports it.
+       *
+       * protoc guarantees that all proto_files will be written after
+       * the fields above, even though this is not technically guaranteed by the
+       * protobuf wire format.  This theoretically could allow a plugin to stream
+       * in the FileDescriptorProtos and handle them one by one rather than read
+       * the entire set into memory at once.  However, as of this writing, this
+       * is not similarly optimized on protoc's end -- it will store all fields in
+       * memory at once before sending them to the plugin.
+       * 
+ */ + public Builder addAllProtoFile( + java.lang.Iterable values) { + if (protoFileBuilder_ == null) { + ensureProtoFileIsMutable(); + super.addAll(values, protoFile_); + onChanged(); + } else { + protoFileBuilder_.addAllMessages(values); + } + return this; + } + /** + * repeated .google.protobuf.FileDescriptorProto proto_file = 15; + * + *
+       * FileDescriptorProtos for all files in files_to_generate and everything
+       * they import.  The files will appear in topological order, so each file
+       * appears before any file that imports it.
+       *
+       * protoc guarantees that all proto_files will be written after
+       * the fields above, even though this is not technically guaranteed by the
+       * protobuf wire format.  This theoretically could allow a plugin to stream
+       * in the FileDescriptorProtos and handle them one by one rather than read
+       * the entire set into memory at once.  However, as of this writing, this
+       * is not similarly optimized on protoc's end -- it will store all fields in
+       * memory at once before sending them to the plugin.
+       * 
+ */ + public Builder clearProtoFile() { + if (protoFileBuilder_ == null) { + protoFile_ = java.util.Collections.emptyList(); + bitField0_ = (bitField0_ & ~0x00000004); + onChanged(); + } else { + protoFileBuilder_.clear(); + } + return this; + } + /** + * repeated .google.protobuf.FileDescriptorProto proto_file = 15; + * + *
+       * FileDescriptorProtos for all files in files_to_generate and everything
+       * they import.  The files will appear in topological order, so each file
+       * appears before any file that imports it.
+       *
+       * protoc guarantees that all proto_files will be written after
+       * the fields above, even though this is not technically guaranteed by the
+       * protobuf wire format.  This theoretically could allow a plugin to stream
+       * in the FileDescriptorProtos and handle them one by one rather than read
+       * the entire set into memory at once.  However, as of this writing, this
+       * is not similarly optimized on protoc's end -- it will store all fields in
+       * memory at once before sending them to the plugin.
+       * 
+ */ + public Builder removeProtoFile(int index) { + if (protoFileBuilder_ == null) { + ensureProtoFileIsMutable(); + protoFile_.remove(index); + onChanged(); + } else { + protoFileBuilder_.remove(index); + } + return this; + } + /** + * repeated .google.protobuf.FileDescriptorProto proto_file = 15; + * + *
+       * FileDescriptorProtos for all files in files_to_generate and everything
+       * they import.  The files will appear in topological order, so each file
+       * appears before any file that imports it.
+       *
+       * protoc guarantees that all proto_files will be written after
+       * the fields above, even though this is not technically guaranteed by the
+       * protobuf wire format.  This theoretically could allow a plugin to stream
+       * in the FileDescriptorProtos and handle them one by one rather than read
+       * the entire set into memory at once.  However, as of this writing, this
+       * is not similarly optimized on protoc's end -- it will store all fields in
+       * memory at once before sending them to the plugin.
+       * 
+ */ + public com.google.protobuf.DescriptorProtos.FileDescriptorProto.Builder getProtoFileBuilder( + int index) { + return getProtoFileFieldBuilder().getBuilder(index); + } + /** + * repeated .google.protobuf.FileDescriptorProto proto_file = 15; + * + *
+       * FileDescriptorProtos for all files in files_to_generate and everything
+       * they import.  The files will appear in topological order, so each file
+       * appears before any file that imports it.
+       *
+       * protoc guarantees that all proto_files will be written after
+       * the fields above, even though this is not technically guaranteed by the
+       * protobuf wire format.  This theoretically could allow a plugin to stream
+       * in the FileDescriptorProtos and handle them one by one rather than read
+       * the entire set into memory at once.  However, as of this writing, this
+       * is not similarly optimized on protoc's end -- it will store all fields in
+       * memory at once before sending them to the plugin.
+       * 
+ */ + public com.google.protobuf.DescriptorProtos.FileDescriptorProtoOrBuilder getProtoFileOrBuilder( + int index) { + if (protoFileBuilder_ == null) { + return protoFile_.get(index); } else { + return protoFileBuilder_.getMessageOrBuilder(index); + } + } + /** + * repeated .google.protobuf.FileDescriptorProto proto_file = 15; + * + *
+       * FileDescriptorProtos for all files in files_to_generate and everything
+       * they import.  The files will appear in topological order, so each file
+       * appears before any file that imports it.
+       *
+       * protoc guarantees that all proto_files will be written after
+       * the fields above, even though this is not technically guaranteed by the
+       * protobuf wire format.  This theoretically could allow a plugin to stream
+       * in the FileDescriptorProtos and handle them one by one rather than read
+       * the entire set into memory at once.  However, as of this writing, this
+       * is not similarly optimized on protoc's end -- it will store all fields in
+       * memory at once before sending them to the plugin.
+       * 
+ */ + public java.util.List + getProtoFileOrBuilderList() { + if (protoFileBuilder_ != null) { + return protoFileBuilder_.getMessageOrBuilderList(); + } else { + return java.util.Collections.unmodifiableList(protoFile_); + } + } + /** + * repeated .google.protobuf.FileDescriptorProto proto_file = 15; + * + *
+       * FileDescriptorProtos for all files in files_to_generate and everything
+       * they import.  The files will appear in topological order, so each file
+       * appears before any file that imports it.
+       *
+       * protoc guarantees that all proto_files will be written after
+       * the fields above, even though this is not technically guaranteed by the
+       * protobuf wire format.  This theoretically could allow a plugin to stream
+       * in the FileDescriptorProtos and handle them one by one rather than read
+       * the entire set into memory at once.  However, as of this writing, this
+       * is not similarly optimized on protoc's end -- it will store all fields in
+       * memory at once before sending them to the plugin.
+       * 
+ */ + public com.google.protobuf.DescriptorProtos.FileDescriptorProto.Builder addProtoFileBuilder() { + return getProtoFileFieldBuilder().addBuilder( + com.google.protobuf.DescriptorProtos.FileDescriptorProto.getDefaultInstance()); + } + /** + * repeated .google.protobuf.FileDescriptorProto proto_file = 15; + * + *
+       * FileDescriptorProtos for all files in files_to_generate and everything
+       * they import.  The files will appear in topological order, so each file
+       * appears before any file that imports it.
+       *
+       * protoc guarantees that all proto_files will be written after
+       * the fields above, even though this is not technically guaranteed by the
+       * protobuf wire format.  This theoretically could allow a plugin to stream
+       * in the FileDescriptorProtos and handle them one by one rather than read
+       * the entire set into memory at once.  However, as of this writing, this
+       * is not similarly optimized on protoc's end -- it will store all fields in
+       * memory at once before sending them to the plugin.
+       * 
+ */ + public com.google.protobuf.DescriptorProtos.FileDescriptorProto.Builder addProtoFileBuilder( + int index) { + return getProtoFileFieldBuilder().addBuilder( + index, com.google.protobuf.DescriptorProtos.FileDescriptorProto.getDefaultInstance()); + } + /** + * repeated .google.protobuf.FileDescriptorProto proto_file = 15; + * + *
+       * FileDescriptorProtos for all files in files_to_generate and everything
+       * they import.  The files will appear in topological order, so each file
+       * appears before any file that imports it.
+       *
+       * protoc guarantees that all proto_files will be written after
+       * the fields above, even though this is not technically guaranteed by the
+       * protobuf wire format.  This theoretically could allow a plugin to stream
+       * in the FileDescriptorProtos and handle them one by one rather than read
+       * the entire set into memory at once.  However, as of this writing, this
+       * is not similarly optimized on protoc's end -- it will store all fields in
+       * memory at once before sending them to the plugin.
+       * 
+ */ + public java.util.List + getProtoFileBuilderList() { + return getProtoFileFieldBuilder().getBuilderList(); + } + private com.google.protobuf.RepeatedFieldBuilder< + com.google.protobuf.DescriptorProtos.FileDescriptorProto, com.google.protobuf.DescriptorProtos.FileDescriptorProto.Builder, com.google.protobuf.DescriptorProtos.FileDescriptorProtoOrBuilder> + getProtoFileFieldBuilder() { + if (protoFileBuilder_ == null) { + protoFileBuilder_ = new com.google.protobuf.RepeatedFieldBuilder< + com.google.protobuf.DescriptorProtos.FileDescriptorProto, com.google.protobuf.DescriptorProtos.FileDescriptorProto.Builder, com.google.protobuf.DescriptorProtos.FileDescriptorProtoOrBuilder>( + protoFile_, + ((bitField0_ & 0x00000004) == 0x00000004), + getParentForChildren(), + isClean()); + protoFile_ = null; + } + return protoFileBuilder_; + } + + // @@protoc_insertion_point(builder_scope:google.protobuf.compiler.CodeGeneratorRequest) + } + + static { + defaultInstance = new CodeGeneratorRequest(true); + defaultInstance.initFields(); + } + + // @@protoc_insertion_point(class_scope:google.protobuf.compiler.CodeGeneratorRequest) + } + + public interface CodeGeneratorResponseOrBuilder + extends com.google.protobuf.MessageOrBuilder { + + // optional string error = 1; + /** + * optional string error = 1; + * + *
+     * Error message.  If non-empty, code generation failed.  The plugin process
+     * should exit with status code zero even if it reports an error in this way.
+     *
+     * This should be used to indicate errors in .proto files which prevent the
+     * code generator from generating correct code.  Errors which indicate a
+     * problem in protoc itself -- such as the input CodeGeneratorRequest being
+     * unparseable -- should be reported by writing a message to stderr and
+     * exiting with a non-zero status code.
+     * 
+ */ + boolean hasError(); + /** + * optional string error = 1; + * + *
+     * Error message.  If non-empty, code generation failed.  The plugin process
+     * should exit with status code zero even if it reports an error in this way.
+     *
+     * This should be used to indicate errors in .proto files which prevent the
+     * code generator from generating correct code.  Errors which indicate a
+     * problem in protoc itself -- such as the input CodeGeneratorRequest being
+     * unparseable -- should be reported by writing a message to stderr and
+     * exiting with a non-zero status code.
+     * 
+ */ + java.lang.String getError(); + /** + * optional string error = 1; + * + *
+     * Error message.  If non-empty, code generation failed.  The plugin process
+     * should exit with status code zero even if it reports an error in this way.
+     *
+     * This should be used to indicate errors in .proto files which prevent the
+     * code generator from generating correct code.  Errors which indicate a
+     * problem in protoc itself -- such as the input CodeGeneratorRequest being
+     * unparseable -- should be reported by writing a message to stderr and
+     * exiting with a non-zero status code.
+     * 
+ */ + com.google.protobuf.ByteString + getErrorBytes(); + + // repeated .google.protobuf.compiler.CodeGeneratorResponse.File file = 15; + /** + * repeated .google.protobuf.compiler.CodeGeneratorResponse.File file = 15; + */ + java.util.List + getFileList(); + /** + * repeated .google.protobuf.compiler.CodeGeneratorResponse.File file = 15; + */ + com.google.protobuf.compiler.PluginProtos.CodeGeneratorResponse.File getFile(int index); + /** + * repeated .google.protobuf.compiler.CodeGeneratorResponse.File file = 15; + */ + int getFileCount(); + /** + * repeated .google.protobuf.compiler.CodeGeneratorResponse.File file = 15; + */ + java.util.List + getFileOrBuilderList(); + /** + * repeated .google.protobuf.compiler.CodeGeneratorResponse.File file = 15; + */ + com.google.protobuf.compiler.PluginProtos.CodeGeneratorResponse.FileOrBuilder getFileOrBuilder( + int index); + } + /** + * Protobuf type {@code google.protobuf.compiler.CodeGeneratorResponse} + * + *
+   * The plugin writes an encoded CodeGeneratorResponse to stdout.
+   * 
+ */ + public static final class CodeGeneratorResponse extends + com.google.protobuf.GeneratedMessage + implements CodeGeneratorResponseOrBuilder { + // Use CodeGeneratorResponse.newBuilder() to construct. + private CodeGeneratorResponse(com.google.protobuf.GeneratedMessage.Builder builder) { + super(builder); + this.unknownFields = builder.getUnknownFields(); + } + private CodeGeneratorResponse(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); } + + private static final CodeGeneratorResponse defaultInstance; + public static CodeGeneratorResponse getDefaultInstance() { + return defaultInstance; + } + + public CodeGeneratorResponse getDefaultInstanceForType() { + return defaultInstance; + } + + private final com.google.protobuf.UnknownFieldSet unknownFields; + @java.lang.Override + public final com.google.protobuf.UnknownFieldSet + getUnknownFields() { + return this.unknownFields; + } + private CodeGeneratorResponse( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + initFields(); + int mutable_bitField0_ = 0; + com.google.protobuf.UnknownFieldSet.Builder unknownFields = + com.google.protobuf.UnknownFieldSet.newBuilder(); + try { + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch (tag) { + case 0: + done = true; + break; + default: { + if (!parseUnknownField(input, unknownFields, + extensionRegistry, tag)) { + done = true; + } + break; + } + case 10: { + bitField0_ |= 0x00000001; + error_ = input.readBytes(); + break; + } + case 122: { + if (!((mutable_bitField0_ & 0x00000002) == 0x00000002)) { + file_ = new java.util.ArrayList(); + mutable_bitField0_ |= 0x00000002; + } + file_.add(input.readMessage(com.google.protobuf.compiler.PluginProtos.CodeGeneratorResponse.File.PARSER, extensionRegistry)); + break; + } + } + } + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(this); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException( + e.getMessage()).setUnfinishedMessage(this); + } finally { + if (((mutable_bitField0_ & 0x00000002) == 0x00000002)) { + file_ = java.util.Collections.unmodifiableList(file_); + } + this.unknownFields = unknownFields.build(); + makeExtensionsImmutable(); + } + } + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return com.google.protobuf.compiler.PluginProtos.internal_static_google_protobuf_compiler_CodeGeneratorResponse_descriptor; + } + + protected com.google.protobuf.GeneratedMessage.FieldAccessorTable + internalGetFieldAccessorTable() { + return com.google.protobuf.compiler.PluginProtos.internal_static_google_protobuf_compiler_CodeGeneratorResponse_fieldAccessorTable + .ensureFieldAccessorsInitialized( + com.google.protobuf.compiler.PluginProtos.CodeGeneratorResponse.class, com.google.protobuf.compiler.PluginProtos.CodeGeneratorResponse.Builder.class); + } + + public static com.google.protobuf.Parser PARSER = + new com.google.protobuf.AbstractParser() { + public CodeGeneratorResponse parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return new CodeGeneratorResponse(input, extensionRegistry); + } + }; + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; + } + + public interface FileOrBuilder + extends com.google.protobuf.MessageOrBuilder { + + // optional string name = 1; + /** + * optional string name = 1; + * + *
+       * The file name, relative to the output directory.  The name must not
+       * contain "." or ".." components and must be relative, not be absolute (so,
+       * the file cannot lie outside the output directory).  "/" must be used as
+       * the path separator, not "\".
+       *
+       * If the name is omitted, the content will be appended to the previous
+       * file.  This allows the generator to break large files into small chunks,
+       * and allows the generated text to be streamed back to protoc so that large
+       * files need not reside completely in memory at one time.  Note that as of
+       * this writing protoc does not optimize for this -- it will read the entire
+       * CodeGeneratorResponse before writing files to disk.
+       * 
+ */ + boolean hasName(); + /** + * optional string name = 1; + * + *
+       * The file name, relative to the output directory.  The name must not
+       * contain "." or ".." components and must be relative, not be absolute (so,
+       * the file cannot lie outside the output directory).  "/" must be used as
+       * the path separator, not "\".
+       *
+       * If the name is omitted, the content will be appended to the previous
+       * file.  This allows the generator to break large files into small chunks,
+       * and allows the generated text to be streamed back to protoc so that large
+       * files need not reside completely in memory at one time.  Note that as of
+       * this writing protoc does not optimize for this -- it will read the entire
+       * CodeGeneratorResponse before writing files to disk.
+       * 
+ */ + java.lang.String getName(); + /** + * optional string name = 1; + * + *
+       * The file name, relative to the output directory.  The name must not
+       * contain "." or ".." components and must be relative, not be absolute (so,
+       * the file cannot lie outside the output directory).  "/" must be used as
+       * the path separator, not "\".
+       *
+       * If the name is omitted, the content will be appended to the previous
+       * file.  This allows the generator to break large files into small chunks,
+       * and allows the generated text to be streamed back to protoc so that large
+       * files need not reside completely in memory at one time.  Note that as of
+       * this writing protoc does not optimize for this -- it will read the entire
+       * CodeGeneratorResponse before writing files to disk.
+       * 
+ */ + com.google.protobuf.ByteString + getNameBytes(); + + // optional string insertion_point = 2; + /** + * optional string insertion_point = 2; + * + *
+       * If non-empty, indicates that the named file should already exist, and the
+       * content here is to be inserted into that file at a defined insertion
+       * point.  This feature allows a code generator to extend the output
+       * produced by another code generator.  The original generator may provide
+       * insertion points by placing special annotations in the file that look
+       * like:
+       *   @@protoc_insertion_point(NAME)
+       * The annotation can have arbitrary text before and after it on the line,
+       * which allows it to be placed in a comment.  NAME should be replaced with
+       * an identifier naming the point -- this is what other generators will use
+       * as the insertion_point.  Code inserted at this point will be placed
+       * immediately above the line containing the insertion point (thus multiple
+       * insertions to the same point will come out in the order they were added).
+       * The double-@ is intended to make it unlikely that the generated code
+       * could contain things that look like insertion points by accident.
+       *
+       * For example, the C++ code generator places the following line in the
+       * .pb.h files that it generates:
+       *   // @@protoc_insertion_point(namespace_scope)
+       * This line appears within the scope of the file's package namespace, but
+       * outside of any particular class.  Another plugin can then specify the
+       * insertion_point "namespace_scope" to generate additional classes or
+       * other declarations that should be placed in this scope.
+       *
+       * Note that if the line containing the insertion point begins with
+       * whitespace, the same whitespace will be added to every line of the
+       * inserted text.  This is useful for languages like Python, where
+       * indentation matters.  In these languages, the insertion point comment
+       * should be indented the same amount as any inserted code will need to be
+       * in order to work correctly in that context.
+       *
+       * The code generator that generates the initial file and the one which
+       * inserts into it must both run as part of a single invocation of protoc.
+       * Code generators are executed in the order in which they appear on the
+       * command line.
+       *
+       * If |insertion_point| is present, |name| must also be present.
+       * 
+ */ + boolean hasInsertionPoint(); + /** + * optional string insertion_point = 2; + * + *
+       * If non-empty, indicates that the named file should already exist, and the
+       * content here is to be inserted into that file at a defined insertion
+       * point.  This feature allows a code generator to extend the output
+       * produced by another code generator.  The original generator may provide
+       * insertion points by placing special annotations in the file that look
+       * like:
+       *   @@protoc_insertion_point(NAME)
+       * The annotation can have arbitrary text before and after it on the line,
+       * which allows it to be placed in a comment.  NAME should be replaced with
+       * an identifier naming the point -- this is what other generators will use
+       * as the insertion_point.  Code inserted at this point will be placed
+       * immediately above the line containing the insertion point (thus multiple
+       * insertions to the same point will come out in the order they were added).
+       * The double-@ is intended to make it unlikely that the generated code
+       * could contain things that look like insertion points by accident.
+       *
+       * For example, the C++ code generator places the following line in the
+       * .pb.h files that it generates:
+       *   // @@protoc_insertion_point(namespace_scope)
+       * This line appears within the scope of the file's package namespace, but
+       * outside of any particular class.  Another plugin can then specify the
+       * insertion_point "namespace_scope" to generate additional classes or
+       * other declarations that should be placed in this scope.
+       *
+       * Note that if the line containing the insertion point begins with
+       * whitespace, the same whitespace will be added to every line of the
+       * inserted text.  This is useful for languages like Python, where
+       * indentation matters.  In these languages, the insertion point comment
+       * should be indented the same amount as any inserted code will need to be
+       * in order to work correctly in that context.
+       *
+       * The code generator that generates the initial file and the one which
+       * inserts into it must both run as part of a single invocation of protoc.
+       * Code generators are executed in the order in which they appear on the
+       * command line.
+       *
+       * If |insertion_point| is present, |name| must also be present.
+       * 
+ */ + java.lang.String getInsertionPoint(); + /** + * optional string insertion_point = 2; + * + *
+       * If non-empty, indicates that the named file should already exist, and the
+       * content here is to be inserted into that file at a defined insertion
+       * point.  This feature allows a code generator to extend the output
+       * produced by another code generator.  The original generator may provide
+       * insertion points by placing special annotations in the file that look
+       * like:
+       *   @@protoc_insertion_point(NAME)
+       * The annotation can have arbitrary text before and after it on the line,
+       * which allows it to be placed in a comment.  NAME should be replaced with
+       * an identifier naming the point -- this is what other generators will use
+       * as the insertion_point.  Code inserted at this point will be placed
+       * immediately above the line containing the insertion point (thus multiple
+       * insertions to the same point will come out in the order they were added).
+       * The double-@ is intended to make it unlikely that the generated code
+       * could contain things that look like insertion points by accident.
+       *
+       * For example, the C++ code generator places the following line in the
+       * .pb.h files that it generates:
+       *   // @@protoc_insertion_point(namespace_scope)
+       * This line appears within the scope of the file's package namespace, but
+       * outside of any particular class.  Another plugin can then specify the
+       * insertion_point "namespace_scope" to generate additional classes or
+       * other declarations that should be placed in this scope.
+       *
+       * Note that if the line containing the insertion point begins with
+       * whitespace, the same whitespace will be added to every line of the
+       * inserted text.  This is useful for languages like Python, where
+       * indentation matters.  In these languages, the insertion point comment
+       * should be indented the same amount as any inserted code will need to be
+       * in order to work correctly in that context.
+       *
+       * The code generator that generates the initial file and the one which
+       * inserts into it must both run as part of a single invocation of protoc.
+       * Code generators are executed in the order in which they appear on the
+       * command line.
+       *
+       * If |insertion_point| is present, |name| must also be present.
+       * 
+ */ + com.google.protobuf.ByteString + getInsertionPointBytes(); + + // optional string content = 15; + /** + * optional string content = 15; + * + *
+       * The file contents.
+       * 
+ */ + boolean hasContent(); + /** + * optional string content = 15; + * + *
+       * The file contents.
+       * 
+ */ + java.lang.String getContent(); + /** + * optional string content = 15; + * + *
+       * The file contents.
+       * 
+ */ + com.google.protobuf.ByteString + getContentBytes(); + } + /** + * Protobuf type {@code google.protobuf.compiler.CodeGeneratorResponse.File} + * + *
+     * Represents a single generated file.
+     * 
+ */ + public static final class File extends + com.google.protobuf.GeneratedMessage + implements FileOrBuilder { + // Use File.newBuilder() to construct. + private File(com.google.protobuf.GeneratedMessage.Builder builder) { + super(builder); + this.unknownFields = builder.getUnknownFields(); + } + private File(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); } + + private static final File defaultInstance; + public static File getDefaultInstance() { + return defaultInstance; + } + + public File getDefaultInstanceForType() { + return defaultInstance; + } + + private final com.google.protobuf.UnknownFieldSet unknownFields; + @java.lang.Override + public final com.google.protobuf.UnknownFieldSet + getUnknownFields() { + return this.unknownFields; + } + private File( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + initFields(); + int mutable_bitField0_ = 0; + com.google.protobuf.UnknownFieldSet.Builder unknownFields = + com.google.protobuf.UnknownFieldSet.newBuilder(); + try { + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch (tag) { + case 0: + done = true; + break; + default: { + if (!parseUnknownField(input, unknownFields, + extensionRegistry, tag)) { + done = true; + } + break; + } + case 10: { + bitField0_ |= 0x00000001; + name_ = input.readBytes(); + break; + } + case 18: { + bitField0_ |= 0x00000002; + insertionPoint_ = input.readBytes(); + break; + } + case 122: { + bitField0_ |= 0x00000004; + content_ = input.readBytes(); + break; + } + } + } + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(this); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException( + e.getMessage()).setUnfinishedMessage(this); + } finally { + this.unknownFields = unknownFields.build(); + makeExtensionsImmutable(); + } + } + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return com.google.protobuf.compiler.PluginProtos.internal_static_google_protobuf_compiler_CodeGeneratorResponse_File_descriptor; + } + + protected com.google.protobuf.GeneratedMessage.FieldAccessorTable + internalGetFieldAccessorTable() { + return com.google.protobuf.compiler.PluginProtos.internal_static_google_protobuf_compiler_CodeGeneratorResponse_File_fieldAccessorTable + .ensureFieldAccessorsInitialized( + com.google.protobuf.compiler.PluginProtos.CodeGeneratorResponse.File.class, com.google.protobuf.compiler.PluginProtos.CodeGeneratorResponse.File.Builder.class); + } + + public static com.google.protobuf.Parser PARSER = + new com.google.protobuf.AbstractParser() { + public File parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return new File(input, extensionRegistry); + } + }; + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; + } + + private int bitField0_; + // optional string name = 1; + public static final int NAME_FIELD_NUMBER = 1; + private java.lang.Object name_; + /** + * optional string name = 1; + * + *
+       * The file name, relative to the output directory.  The name must not
+       * contain "." or ".." components and must be relative, not be absolute (so,
+       * the file cannot lie outside the output directory).  "/" must be used as
+       * the path separator, not "\".
+       *
+       * If the name is omitted, the content will be appended to the previous
+       * file.  This allows the generator to break large files into small chunks,
+       * and allows the generated text to be streamed back to protoc so that large
+       * files need not reside completely in memory at one time.  Note that as of
+       * this writing protoc does not optimize for this -- it will read the entire
+       * CodeGeneratorResponse before writing files to disk.
+       * 
+ */ + public boolean hasName() { + return ((bitField0_ & 0x00000001) == 0x00000001); + } + /** + * optional string name = 1; + * + *
+       * The file name, relative to the output directory.  The name must not
+       * contain "." or ".." components and must be relative, not be absolute (so,
+       * the file cannot lie outside the output directory).  "/" must be used as
+       * the path separator, not "\".
+       *
+       * If the name is omitted, the content will be appended to the previous
+       * file.  This allows the generator to break large files into small chunks,
+       * and allows the generated text to be streamed back to protoc so that large
+       * files need not reside completely in memory at one time.  Note that as of
+       * this writing protoc does not optimize for this -- it will read the entire
+       * CodeGeneratorResponse before writing files to disk.
+       * 
+ */ + public java.lang.String getName() { + java.lang.Object ref = name_; + if (ref instanceof java.lang.String) { + return (java.lang.String) ref; + } else { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + if (bs.isValidUtf8()) { + name_ = s; + } + return s; + } + } + /** + * optional string name = 1; + * + *
+       * The file name, relative to the output directory.  The name must not
+       * contain "." or ".." components and must be relative, not be absolute (so,
+       * the file cannot lie outside the output directory).  "/" must be used as
+       * the path separator, not "\".
+       *
+       * If the name is omitted, the content will be appended to the previous
+       * file.  This allows the generator to break large files into small chunks,
+       * and allows the generated text to be streamed back to protoc so that large
+       * files need not reside completely in memory at one time.  Note that as of
+       * this writing protoc does not optimize for this -- it will read the entire
+       * CodeGeneratorResponse before writing files to disk.
+       * 
+ */ + public com.google.protobuf.ByteString + getNameBytes() { + java.lang.Object ref = name_; + if (ref instanceof java.lang.String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + name_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + + // optional string insertion_point = 2; + public static final int INSERTION_POINT_FIELD_NUMBER = 2; + private java.lang.Object insertionPoint_; + /** + * optional string insertion_point = 2; + * + *
+       * If non-empty, indicates that the named file should already exist, and the
+       * content here is to be inserted into that file at a defined insertion
+       * point.  This feature allows a code generator to extend the output
+       * produced by another code generator.  The original generator may provide
+       * insertion points by placing special annotations in the file that look
+       * like:
+       *   @@protoc_insertion_point(NAME)
+       * The annotation can have arbitrary text before and after it on the line,
+       * which allows it to be placed in a comment.  NAME should be replaced with
+       * an identifier naming the point -- this is what other generators will use
+       * as the insertion_point.  Code inserted at this point will be placed
+       * immediately above the line containing the insertion point (thus multiple
+       * insertions to the same point will come out in the order they were added).
+       * The double-@ is intended to make it unlikely that the generated code
+       * could contain things that look like insertion points by accident.
+       *
+       * For example, the C++ code generator places the following line in the
+       * .pb.h files that it generates:
+       *   // @@protoc_insertion_point(namespace_scope)
+       * This line appears within the scope of the file's package namespace, but
+       * outside of any particular class.  Another plugin can then specify the
+       * insertion_point "namespace_scope" to generate additional classes or
+       * other declarations that should be placed in this scope.
+       *
+       * Note that if the line containing the insertion point begins with
+       * whitespace, the same whitespace will be added to every line of the
+       * inserted text.  This is useful for languages like Python, where
+       * indentation matters.  In these languages, the insertion point comment
+       * should be indented the same amount as any inserted code will need to be
+       * in order to work correctly in that context.
+       *
+       * The code generator that generates the initial file and the one which
+       * inserts into it must both run as part of a single invocation of protoc.
+       * Code generators are executed in the order in which they appear on the
+       * command line.
+       *
+       * If |insertion_point| is present, |name| must also be present.
+       * 
+ */ + public boolean hasInsertionPoint() { + return ((bitField0_ & 0x00000002) == 0x00000002); + } + /** + * optional string insertion_point = 2; + * + *
+       * If non-empty, indicates that the named file should already exist, and the
+       * content here is to be inserted into that file at a defined insertion
+       * point.  This feature allows a code generator to extend the output
+       * produced by another code generator.  The original generator may provide
+       * insertion points by placing special annotations in the file that look
+       * like:
+       *   @@protoc_insertion_point(NAME)
+       * The annotation can have arbitrary text before and after it on the line,
+       * which allows it to be placed in a comment.  NAME should be replaced with
+       * an identifier naming the point -- this is what other generators will use
+       * as the insertion_point.  Code inserted at this point will be placed
+       * immediately above the line containing the insertion point (thus multiple
+       * insertions to the same point will come out in the order they were added).
+       * The double-@ is intended to make it unlikely that the generated code
+       * could contain things that look like insertion points by accident.
+       *
+       * For example, the C++ code generator places the following line in the
+       * .pb.h files that it generates:
+       *   // @@protoc_insertion_point(namespace_scope)
+       * This line appears within the scope of the file's package namespace, but
+       * outside of any particular class.  Another plugin can then specify the
+       * insertion_point "namespace_scope" to generate additional classes or
+       * other declarations that should be placed in this scope.
+       *
+       * Note that if the line containing the insertion point begins with
+       * whitespace, the same whitespace will be added to every line of the
+       * inserted text.  This is useful for languages like Python, where
+       * indentation matters.  In these languages, the insertion point comment
+       * should be indented the same amount as any inserted code will need to be
+       * in order to work correctly in that context.
+       *
+       * The code generator that generates the initial file and the one which
+       * inserts into it must both run as part of a single invocation of protoc.
+       * Code generators are executed in the order in which they appear on the
+       * command line.
+       *
+       * If |insertion_point| is present, |name| must also be present.
+       * 
+ */ + public java.lang.String getInsertionPoint() { + java.lang.Object ref = insertionPoint_; + if (ref instanceof java.lang.String) { + return (java.lang.String) ref; + } else { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + if (bs.isValidUtf8()) { + insertionPoint_ = s; + } + return s; + } + } + /** + * optional string insertion_point = 2; + * + *
+       * If non-empty, indicates that the named file should already exist, and the
+       * content here is to be inserted into that file at a defined insertion
+       * point.  This feature allows a code generator to extend the output
+       * produced by another code generator.  The original generator may provide
+       * insertion points by placing special annotations in the file that look
+       * like:
+       *   @@protoc_insertion_point(NAME)
+       * The annotation can have arbitrary text before and after it on the line,
+       * which allows it to be placed in a comment.  NAME should be replaced with
+       * an identifier naming the point -- this is what other generators will use
+       * as the insertion_point.  Code inserted at this point will be placed
+       * immediately above the line containing the insertion point (thus multiple
+       * insertions to the same point will come out in the order they were added).
+       * The double-@ is intended to make it unlikely that the generated code
+       * could contain things that look like insertion points by accident.
+       *
+       * For example, the C++ code generator places the following line in the
+       * .pb.h files that it generates:
+       *   // @@protoc_insertion_point(namespace_scope)
+       * This line appears within the scope of the file's package namespace, but
+       * outside of any particular class.  Another plugin can then specify the
+       * insertion_point "namespace_scope" to generate additional classes or
+       * other declarations that should be placed in this scope.
+       *
+       * Note that if the line containing the insertion point begins with
+       * whitespace, the same whitespace will be added to every line of the
+       * inserted text.  This is useful for languages like Python, where
+       * indentation matters.  In these languages, the insertion point comment
+       * should be indented the same amount as any inserted code will need to be
+       * in order to work correctly in that context.
+       *
+       * The code generator that generates the initial file and the one which
+       * inserts into it must both run as part of a single invocation of protoc.
+       * Code generators are executed in the order in which they appear on the
+       * command line.
+       *
+       * If |insertion_point| is present, |name| must also be present.
+       * 
+ */ + public com.google.protobuf.ByteString + getInsertionPointBytes() { + java.lang.Object ref = insertionPoint_; + if (ref instanceof java.lang.String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + insertionPoint_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + + // optional string content = 15; + public static final int CONTENT_FIELD_NUMBER = 15; + private java.lang.Object content_; + /** + * optional string content = 15; + * + *
+       * The file contents.
+       * 
+ */ + public boolean hasContent() { + return ((bitField0_ & 0x00000004) == 0x00000004); + } + /** + * optional string content = 15; + * + *
+       * The file contents.
+       * 
+ */ + public java.lang.String getContent() { + java.lang.Object ref = content_; + if (ref instanceof java.lang.String) { + return (java.lang.String) ref; + } else { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + if (bs.isValidUtf8()) { + content_ = s; + } + return s; + } + } + /** + * optional string content = 15; + * + *
+       * The file contents.
+       * 
+ */ + public com.google.protobuf.ByteString + getContentBytes() { + java.lang.Object ref = content_; + if (ref instanceof java.lang.String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + content_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + + private void initFields() { + name_ = ""; + insertionPoint_ = ""; + content_ = ""; + } + private byte memoizedIsInitialized = -1; + public final boolean isInitialized() { + byte isInitialized = memoizedIsInitialized; + if (isInitialized != -1) return isInitialized == 1; + + memoizedIsInitialized = 1; + return true; + } + + public void writeTo(com.google.protobuf.CodedOutputStream output) + throws java.io.IOException { + getSerializedSize(); + if (((bitField0_ & 0x00000001) == 0x00000001)) { + output.writeBytes(1, getNameBytes()); + } + if (((bitField0_ & 0x00000002) == 0x00000002)) { + output.writeBytes(2, getInsertionPointBytes()); + } + if (((bitField0_ & 0x00000004) == 0x00000004)) { + output.writeBytes(15, getContentBytes()); + } + getUnknownFields().writeTo(output); + } + + private int memoizedSerializedSize = -1; + public int getSerializedSize() { + int size = memoizedSerializedSize; + if (size != -1) return size; + + size = 0; + if (((bitField0_ & 0x00000001) == 0x00000001)) { + size += com.google.protobuf.CodedOutputStream + .computeBytesSize(1, getNameBytes()); + } + if (((bitField0_ & 0x00000002) == 0x00000002)) { + size += com.google.protobuf.CodedOutputStream + .computeBytesSize(2, getInsertionPointBytes()); + } + if (((bitField0_ & 0x00000004) == 0x00000004)) { + size += com.google.protobuf.CodedOutputStream + .computeBytesSize(15, getContentBytes()); + } + size += getUnknownFields().getSerializedSize(); + memoizedSerializedSize = size; + return size; + } + + private static final long serialVersionUID = 0L; + @java.lang.Override + protected java.lang.Object writeReplace() + throws java.io.ObjectStreamException { + return super.writeReplace(); + } + + public static com.google.protobuf.compiler.PluginProtos.CodeGeneratorResponse.File parseFrom( + com.google.protobuf.ByteString data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static com.google.protobuf.compiler.PluginProtos.CodeGeneratorResponse.File parseFrom( + com.google.protobuf.ByteString data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static com.google.protobuf.compiler.PluginProtos.CodeGeneratorResponse.File parseFrom(byte[] data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static com.google.protobuf.compiler.PluginProtos.CodeGeneratorResponse.File parseFrom( + byte[] data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static com.google.protobuf.compiler.PluginProtos.CodeGeneratorResponse.File parseFrom(java.io.InputStream input) + throws java.io.IOException { + return PARSER.parseFrom(input); + } + public static com.google.protobuf.compiler.PluginProtos.CodeGeneratorResponse.File parseFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return PARSER.parseFrom(input, extensionRegistry); + } + public static com.google.protobuf.compiler.PluginProtos.CodeGeneratorResponse.File parseDelimitedFrom(java.io.InputStream input) + throws java.io.IOException { + return PARSER.parseDelimitedFrom(input); + } + public static com.google.protobuf.compiler.PluginProtos.CodeGeneratorResponse.File parseDelimitedFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return PARSER.parseDelimitedFrom(input, extensionRegistry); + } + public static com.google.protobuf.compiler.PluginProtos.CodeGeneratorResponse.File parseFrom( + com.google.protobuf.CodedInputStream input) + throws java.io.IOException { + return PARSER.parseFrom(input); + } + public static com.google.protobuf.compiler.PluginProtos.CodeGeneratorResponse.File parseFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return PARSER.parseFrom(input, extensionRegistry); + } + + public static Builder newBuilder() { return Builder.create(); } + public Builder newBuilderForType() { return newBuilder(); } + public static Builder newBuilder(com.google.protobuf.compiler.PluginProtos.CodeGeneratorResponse.File prototype) { + return newBuilder().mergeFrom(prototype); + } + public Builder toBuilder() { return newBuilder(this); } + + @java.lang.Override + protected Builder newBuilderForType( + com.google.protobuf.GeneratedMessage.BuilderParent parent) { + Builder builder = new Builder(parent); + return builder; + } + /** + * Protobuf type {@code google.protobuf.compiler.CodeGeneratorResponse.File} + * + *
+       * Represents a single generated file.
+       * 
+ */ + public static final class Builder extends + com.google.protobuf.GeneratedMessage.Builder + implements com.google.protobuf.compiler.PluginProtos.CodeGeneratorResponse.FileOrBuilder { + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return com.google.protobuf.compiler.PluginProtos.internal_static_google_protobuf_compiler_CodeGeneratorResponse_File_descriptor; + } + + protected com.google.protobuf.GeneratedMessage.FieldAccessorTable + internalGetFieldAccessorTable() { + return com.google.protobuf.compiler.PluginProtos.internal_static_google_protobuf_compiler_CodeGeneratorResponse_File_fieldAccessorTable + .ensureFieldAccessorsInitialized( + com.google.protobuf.compiler.PluginProtos.CodeGeneratorResponse.File.class, com.google.protobuf.compiler.PluginProtos.CodeGeneratorResponse.File.Builder.class); + } + + // Construct using com.google.protobuf.compiler.PluginProtos.CodeGeneratorResponse.File.newBuilder() + private Builder() { + maybeForceBuilderInitialization(); + } + + private Builder( + com.google.protobuf.GeneratedMessage.BuilderParent parent) { + super(parent); + maybeForceBuilderInitialization(); + } + private void maybeForceBuilderInitialization() { + if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) { + } + } + private static Builder create() { + return new Builder(); + } + + public Builder clear() { + super.clear(); + name_ = ""; + bitField0_ = (bitField0_ & ~0x00000001); + insertionPoint_ = ""; + bitField0_ = (bitField0_ & ~0x00000002); + content_ = ""; + bitField0_ = (bitField0_ & ~0x00000004); + return this; + } + + public Builder clone() { + return create().mergeFrom(buildPartial()); + } + + public com.google.protobuf.Descriptors.Descriptor + getDescriptorForType() { + return com.google.protobuf.compiler.PluginProtos.internal_static_google_protobuf_compiler_CodeGeneratorResponse_File_descriptor; + } + + public com.google.protobuf.compiler.PluginProtos.CodeGeneratorResponse.File getDefaultInstanceForType() { + return com.google.protobuf.compiler.PluginProtos.CodeGeneratorResponse.File.getDefaultInstance(); + } + + public com.google.protobuf.compiler.PluginProtos.CodeGeneratorResponse.File build() { + com.google.protobuf.compiler.PluginProtos.CodeGeneratorResponse.File result = buildPartial(); + if (!result.isInitialized()) { + throw newUninitializedMessageException(result); + } + return result; + } + + public com.google.protobuf.compiler.PluginProtos.CodeGeneratorResponse.File buildPartial() { + com.google.protobuf.compiler.PluginProtos.CodeGeneratorResponse.File result = new com.google.protobuf.compiler.PluginProtos.CodeGeneratorResponse.File(this); + int from_bitField0_ = bitField0_; + int to_bitField0_ = 0; + if (((from_bitField0_ & 0x00000001) == 0x00000001)) { + to_bitField0_ |= 0x00000001; + } + result.name_ = name_; + if (((from_bitField0_ & 0x00000002) == 0x00000002)) { + to_bitField0_ |= 0x00000002; + } + result.insertionPoint_ = insertionPoint_; + if (((from_bitField0_ & 0x00000004) == 0x00000004)) { + to_bitField0_ |= 0x00000004; + } + result.content_ = content_; + result.bitField0_ = to_bitField0_; + onBuilt(); + return result; + } + + public Builder mergeFrom(com.google.protobuf.Message other) { + if (other instanceof com.google.protobuf.compiler.PluginProtos.CodeGeneratorResponse.File) { + return mergeFrom((com.google.protobuf.compiler.PluginProtos.CodeGeneratorResponse.File)other); + } else { + super.mergeFrom(other); + return this; + } + } + + public Builder mergeFrom(com.google.protobuf.compiler.PluginProtos.CodeGeneratorResponse.File other) { + if (other == com.google.protobuf.compiler.PluginProtos.CodeGeneratorResponse.File.getDefaultInstance()) return this; + if (other.hasName()) { + bitField0_ |= 0x00000001; + name_ = other.name_; + onChanged(); + } + if (other.hasInsertionPoint()) { + bitField0_ |= 0x00000002; + insertionPoint_ = other.insertionPoint_; + onChanged(); + } + if (other.hasContent()) { + bitField0_ |= 0x00000004; + content_ = other.content_; + onChanged(); + } + this.mergeUnknownFields(other.getUnknownFields()); + return this; + } + + public final boolean isInitialized() { + return true; + } + + public Builder mergeFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + com.google.protobuf.compiler.PluginProtos.CodeGeneratorResponse.File parsedMessage = null; + try { + parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + parsedMessage = (com.google.protobuf.compiler.PluginProtos.CodeGeneratorResponse.File) e.getUnfinishedMessage(); + throw e; + } finally { + if (parsedMessage != null) { + mergeFrom(parsedMessage); + } + } + return this; + } + private int bitField0_; + + // optional string name = 1; + private java.lang.Object name_ = ""; + /** + * optional string name = 1; + * + *
+         * The file name, relative to the output directory.  The name must not
+         * contain "." or ".." components and must be relative, not be absolute (so,
+         * the file cannot lie outside the output directory).  "/" must be used as
+         * the path separator, not "\".
+         *
+         * If the name is omitted, the content will be appended to the previous
+         * file.  This allows the generator to break large files into small chunks,
+         * and allows the generated text to be streamed back to protoc so that large
+         * files need not reside completely in memory at one time.  Note that as of
+         * this writing protoc does not optimize for this -- it will read the entire
+         * CodeGeneratorResponse before writing files to disk.
+         * 
+ */ + public boolean hasName() { + return ((bitField0_ & 0x00000001) == 0x00000001); + } + /** + * optional string name = 1; + * + *
+         * The file name, relative to the output directory.  The name must not
+         * contain "." or ".." components and must be relative, not be absolute (so,
+         * the file cannot lie outside the output directory).  "/" must be used as
+         * the path separator, not "\".
+         *
+         * If the name is omitted, the content will be appended to the previous
+         * file.  This allows the generator to break large files into small chunks,
+         * and allows the generated text to be streamed back to protoc so that large
+         * files need not reside completely in memory at one time.  Note that as of
+         * this writing protoc does not optimize for this -- it will read the entire
+         * CodeGeneratorResponse before writing files to disk.
+         * 
+ */ + public java.lang.String getName() { + java.lang.Object ref = name_; + if (!(ref instanceof java.lang.String)) { + java.lang.String s = ((com.google.protobuf.ByteString) ref) + .toStringUtf8(); + name_ = s; + return s; + } else { + return (java.lang.String) ref; + } + } + /** + * optional string name = 1; + * + *
+         * The file name, relative to the output directory.  The name must not
+         * contain "." or ".." components and must be relative, not be absolute (so,
+         * the file cannot lie outside the output directory).  "/" must be used as
+         * the path separator, not "\".
+         *
+         * If the name is omitted, the content will be appended to the previous
+         * file.  This allows the generator to break large files into small chunks,
+         * and allows the generated text to be streamed back to protoc so that large
+         * files need not reside completely in memory at one time.  Note that as of
+         * this writing protoc does not optimize for this -- it will read the entire
+         * CodeGeneratorResponse before writing files to disk.
+         * 
+ */ + public com.google.protobuf.ByteString + getNameBytes() { + java.lang.Object ref = name_; + if (ref instanceof String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + name_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + /** + * optional string name = 1; + * + *
+         * The file name, relative to the output directory.  The name must not
+         * contain "." or ".." components and must be relative, not be absolute (so,
+         * the file cannot lie outside the output directory).  "/" must be used as
+         * the path separator, not "\".
+         *
+         * If the name is omitted, the content will be appended to the previous
+         * file.  This allows the generator to break large files into small chunks,
+         * and allows the generated text to be streamed back to protoc so that large
+         * files need not reside completely in memory at one time.  Note that as of
+         * this writing protoc does not optimize for this -- it will read the entire
+         * CodeGeneratorResponse before writing files to disk.
+         * 
+ */ + public Builder setName( + java.lang.String value) { + if (value == null) { + throw new NullPointerException(); + } + bitField0_ |= 0x00000001; + name_ = value; + onChanged(); + return this; + } + /** + * optional string name = 1; + * + *
+         * The file name, relative to the output directory.  The name must not
+         * contain "." or ".." components and must be relative, not be absolute (so,
+         * the file cannot lie outside the output directory).  "/" must be used as
+         * the path separator, not "\".
+         *
+         * If the name is omitted, the content will be appended to the previous
+         * file.  This allows the generator to break large files into small chunks,
+         * and allows the generated text to be streamed back to protoc so that large
+         * files need not reside completely in memory at one time.  Note that as of
+         * this writing protoc does not optimize for this -- it will read the entire
+         * CodeGeneratorResponse before writing files to disk.
+         * 
+ */ + public Builder clearName() { + bitField0_ = (bitField0_ & ~0x00000001); + name_ = getDefaultInstance().getName(); + onChanged(); + return this; + } + /** + * optional string name = 1; + * + *
+         * The file name, relative to the output directory.  The name must not
+         * contain "." or ".." components and must be relative, not be absolute (so,
+         * the file cannot lie outside the output directory).  "/" must be used as
+         * the path separator, not "\".
+         *
+         * If the name is omitted, the content will be appended to the previous
+         * file.  This allows the generator to break large files into small chunks,
+         * and allows the generated text to be streamed back to protoc so that large
+         * files need not reside completely in memory at one time.  Note that as of
+         * this writing protoc does not optimize for this -- it will read the entire
+         * CodeGeneratorResponse before writing files to disk.
+         * 
+ */ + public Builder setNameBytes( + com.google.protobuf.ByteString value) { + if (value == null) { + throw new NullPointerException(); + } + bitField0_ |= 0x00000001; + name_ = value; + onChanged(); + return this; + } + + // optional string insertion_point = 2; + private java.lang.Object insertionPoint_ = ""; + /** + * optional string insertion_point = 2; + * + *
+         * If non-empty, indicates that the named file should already exist, and the
+         * content here is to be inserted into that file at a defined insertion
+         * point.  This feature allows a code generator to extend the output
+         * produced by another code generator.  The original generator may provide
+         * insertion points by placing special annotations in the file that look
+         * like:
+         *   @@protoc_insertion_point(NAME)
+         * The annotation can have arbitrary text before and after it on the line,
+         * which allows it to be placed in a comment.  NAME should be replaced with
+         * an identifier naming the point -- this is what other generators will use
+         * as the insertion_point.  Code inserted at this point will be placed
+         * immediately above the line containing the insertion point (thus multiple
+         * insertions to the same point will come out in the order they were added).
+         * The double-@ is intended to make it unlikely that the generated code
+         * could contain things that look like insertion points by accident.
+         *
+         * For example, the C++ code generator places the following line in the
+         * .pb.h files that it generates:
+         *   // @@protoc_insertion_point(namespace_scope)
+         * This line appears within the scope of the file's package namespace, but
+         * outside of any particular class.  Another plugin can then specify the
+         * insertion_point "namespace_scope" to generate additional classes or
+         * other declarations that should be placed in this scope.
+         *
+         * Note that if the line containing the insertion point begins with
+         * whitespace, the same whitespace will be added to every line of the
+         * inserted text.  This is useful for languages like Python, where
+         * indentation matters.  In these languages, the insertion point comment
+         * should be indented the same amount as any inserted code will need to be
+         * in order to work correctly in that context.
+         *
+         * The code generator that generates the initial file and the one which
+         * inserts into it must both run as part of a single invocation of protoc.
+         * Code generators are executed in the order in which they appear on the
+         * command line.
+         *
+         * If |insertion_point| is present, |name| must also be present.
+         * 
+ */ + public boolean hasInsertionPoint() { + return ((bitField0_ & 0x00000002) == 0x00000002); + } + /** + * optional string insertion_point = 2; + * + *
+         * If non-empty, indicates that the named file should already exist, and the
+         * content here is to be inserted into that file at a defined insertion
+         * point.  This feature allows a code generator to extend the output
+         * produced by another code generator.  The original generator may provide
+         * insertion points by placing special annotations in the file that look
+         * like:
+         *   @@protoc_insertion_point(NAME)
+         * The annotation can have arbitrary text before and after it on the line,
+         * which allows it to be placed in a comment.  NAME should be replaced with
+         * an identifier naming the point -- this is what other generators will use
+         * as the insertion_point.  Code inserted at this point will be placed
+         * immediately above the line containing the insertion point (thus multiple
+         * insertions to the same point will come out in the order they were added).
+         * The double-@ is intended to make it unlikely that the generated code
+         * could contain things that look like insertion points by accident.
+         *
+         * For example, the C++ code generator places the following line in the
+         * .pb.h files that it generates:
+         *   // @@protoc_insertion_point(namespace_scope)
+         * This line appears within the scope of the file's package namespace, but
+         * outside of any particular class.  Another plugin can then specify the
+         * insertion_point "namespace_scope" to generate additional classes or
+         * other declarations that should be placed in this scope.
+         *
+         * Note that if the line containing the insertion point begins with
+         * whitespace, the same whitespace will be added to every line of the
+         * inserted text.  This is useful for languages like Python, where
+         * indentation matters.  In these languages, the insertion point comment
+         * should be indented the same amount as any inserted code will need to be
+         * in order to work correctly in that context.
+         *
+         * The code generator that generates the initial file and the one which
+         * inserts into it must both run as part of a single invocation of protoc.
+         * Code generators are executed in the order in which they appear on the
+         * command line.
+         *
+         * If |insertion_point| is present, |name| must also be present.
+         * 
+ */ + public java.lang.String getInsertionPoint() { + java.lang.Object ref = insertionPoint_; + if (!(ref instanceof java.lang.String)) { + java.lang.String s = ((com.google.protobuf.ByteString) ref) + .toStringUtf8(); + insertionPoint_ = s; + return s; + } else { + return (java.lang.String) ref; + } + } + /** + * optional string insertion_point = 2; + * + *
+         * If non-empty, indicates that the named file should already exist, and the
+         * content here is to be inserted into that file at a defined insertion
+         * point.  This feature allows a code generator to extend the output
+         * produced by another code generator.  The original generator may provide
+         * insertion points by placing special annotations in the file that look
+         * like:
+         *   @@protoc_insertion_point(NAME)
+         * The annotation can have arbitrary text before and after it on the line,
+         * which allows it to be placed in a comment.  NAME should be replaced with
+         * an identifier naming the point -- this is what other generators will use
+         * as the insertion_point.  Code inserted at this point will be placed
+         * immediately above the line containing the insertion point (thus multiple
+         * insertions to the same point will come out in the order they were added).
+         * The double-@ is intended to make it unlikely that the generated code
+         * could contain things that look like insertion points by accident.
+         *
+         * For example, the C++ code generator places the following line in the
+         * .pb.h files that it generates:
+         *   // @@protoc_insertion_point(namespace_scope)
+         * This line appears within the scope of the file's package namespace, but
+         * outside of any particular class.  Another plugin can then specify the
+         * insertion_point "namespace_scope" to generate additional classes or
+         * other declarations that should be placed in this scope.
+         *
+         * Note that if the line containing the insertion point begins with
+         * whitespace, the same whitespace will be added to every line of the
+         * inserted text.  This is useful for languages like Python, where
+         * indentation matters.  In these languages, the insertion point comment
+         * should be indented the same amount as any inserted code will need to be
+         * in order to work correctly in that context.
+         *
+         * The code generator that generates the initial file and the one which
+         * inserts into it must both run as part of a single invocation of protoc.
+         * Code generators are executed in the order in which they appear on the
+         * command line.
+         *
+         * If |insertion_point| is present, |name| must also be present.
+         * 
+ */ + public com.google.protobuf.ByteString + getInsertionPointBytes() { + java.lang.Object ref = insertionPoint_; + if (ref instanceof String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + insertionPoint_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + /** + * optional string insertion_point = 2; + * + *
+         * If non-empty, indicates that the named file should already exist, and the
+         * content here is to be inserted into that file at a defined insertion
+         * point.  This feature allows a code generator to extend the output
+         * produced by another code generator.  The original generator may provide
+         * insertion points by placing special annotations in the file that look
+         * like:
+         *   @@protoc_insertion_point(NAME)
+         * The annotation can have arbitrary text before and after it on the line,
+         * which allows it to be placed in a comment.  NAME should be replaced with
+         * an identifier naming the point -- this is what other generators will use
+         * as the insertion_point.  Code inserted at this point will be placed
+         * immediately above the line containing the insertion point (thus multiple
+         * insertions to the same point will come out in the order they were added).
+         * The double-@ is intended to make it unlikely that the generated code
+         * could contain things that look like insertion points by accident.
+         *
+         * For example, the C++ code generator places the following line in the
+         * .pb.h files that it generates:
+         *   // @@protoc_insertion_point(namespace_scope)
+         * This line appears within the scope of the file's package namespace, but
+         * outside of any particular class.  Another plugin can then specify the
+         * insertion_point "namespace_scope" to generate additional classes or
+         * other declarations that should be placed in this scope.
+         *
+         * Note that if the line containing the insertion point begins with
+         * whitespace, the same whitespace will be added to every line of the
+         * inserted text.  This is useful for languages like Python, where
+         * indentation matters.  In these languages, the insertion point comment
+         * should be indented the same amount as any inserted code will need to be
+         * in order to work correctly in that context.
+         *
+         * The code generator that generates the initial file and the one which
+         * inserts into it must both run as part of a single invocation of protoc.
+         * Code generators are executed in the order in which they appear on the
+         * command line.
+         *
+         * If |insertion_point| is present, |name| must also be present.
+         * 
+ */ + public Builder setInsertionPoint( + java.lang.String value) { + if (value == null) { + throw new NullPointerException(); + } + bitField0_ |= 0x00000002; + insertionPoint_ = value; + onChanged(); + return this; + } + /** + * optional string insertion_point = 2; + * + *
+         * If non-empty, indicates that the named file should already exist, and the
+         * content here is to be inserted into that file at a defined insertion
+         * point.  This feature allows a code generator to extend the output
+         * produced by another code generator.  The original generator may provide
+         * insertion points by placing special annotations in the file that look
+         * like:
+         *   @@protoc_insertion_point(NAME)
+         * The annotation can have arbitrary text before and after it on the line,
+         * which allows it to be placed in a comment.  NAME should be replaced with
+         * an identifier naming the point -- this is what other generators will use
+         * as the insertion_point.  Code inserted at this point will be placed
+         * immediately above the line containing the insertion point (thus multiple
+         * insertions to the same point will come out in the order they were added).
+         * The double-@ is intended to make it unlikely that the generated code
+         * could contain things that look like insertion points by accident.
+         *
+         * For example, the C++ code generator places the following line in the
+         * .pb.h files that it generates:
+         *   // @@protoc_insertion_point(namespace_scope)
+         * This line appears within the scope of the file's package namespace, but
+         * outside of any particular class.  Another plugin can then specify the
+         * insertion_point "namespace_scope" to generate additional classes or
+         * other declarations that should be placed in this scope.
+         *
+         * Note that if the line containing the insertion point begins with
+         * whitespace, the same whitespace will be added to every line of the
+         * inserted text.  This is useful for languages like Python, where
+         * indentation matters.  In these languages, the insertion point comment
+         * should be indented the same amount as any inserted code will need to be
+         * in order to work correctly in that context.
+         *
+         * The code generator that generates the initial file and the one which
+         * inserts into it must both run as part of a single invocation of protoc.
+         * Code generators are executed in the order in which they appear on the
+         * command line.
+         *
+         * If |insertion_point| is present, |name| must also be present.
+         * 
+ */ + public Builder clearInsertionPoint() { + bitField0_ = (bitField0_ & ~0x00000002); + insertionPoint_ = getDefaultInstance().getInsertionPoint(); + onChanged(); + return this; + } + /** + * optional string insertion_point = 2; + * + *
+         * If non-empty, indicates that the named file should already exist, and the
+         * content here is to be inserted into that file at a defined insertion
+         * point.  This feature allows a code generator to extend the output
+         * produced by another code generator.  The original generator may provide
+         * insertion points by placing special annotations in the file that look
+         * like:
+         *   @@protoc_insertion_point(NAME)
+         * The annotation can have arbitrary text before and after it on the line,
+         * which allows it to be placed in a comment.  NAME should be replaced with
+         * an identifier naming the point -- this is what other generators will use
+         * as the insertion_point.  Code inserted at this point will be placed
+         * immediately above the line containing the insertion point (thus multiple
+         * insertions to the same point will come out in the order they were added).
+         * The double-@ is intended to make it unlikely that the generated code
+         * could contain things that look like insertion points by accident.
+         *
+         * For example, the C++ code generator places the following line in the
+         * .pb.h files that it generates:
+         *   // @@protoc_insertion_point(namespace_scope)
+         * This line appears within the scope of the file's package namespace, but
+         * outside of any particular class.  Another plugin can then specify the
+         * insertion_point "namespace_scope" to generate additional classes or
+         * other declarations that should be placed in this scope.
+         *
+         * Note that if the line containing the insertion point begins with
+         * whitespace, the same whitespace will be added to every line of the
+         * inserted text.  This is useful for languages like Python, where
+         * indentation matters.  In these languages, the insertion point comment
+         * should be indented the same amount as any inserted code will need to be
+         * in order to work correctly in that context.
+         *
+         * The code generator that generates the initial file and the one which
+         * inserts into it must both run as part of a single invocation of protoc.
+         * Code generators are executed in the order in which they appear on the
+         * command line.
+         *
+         * If |insertion_point| is present, |name| must also be present.
+         * 
+ */ + public Builder setInsertionPointBytes( + com.google.protobuf.ByteString value) { + if (value == null) { + throw new NullPointerException(); + } + bitField0_ |= 0x00000002; + insertionPoint_ = value; + onChanged(); + return this; + } + + // optional string content = 15; + private java.lang.Object content_ = ""; + /** + * optional string content = 15; + * + *
+         * The file contents.
+         * 
+ */ + public boolean hasContent() { + return ((bitField0_ & 0x00000004) == 0x00000004); + } + /** + * optional string content = 15; + * + *
+         * The file contents.
+         * 
+ */ + public java.lang.String getContent() { + java.lang.Object ref = content_; + if (!(ref instanceof java.lang.String)) { + java.lang.String s = ((com.google.protobuf.ByteString) ref) + .toStringUtf8(); + content_ = s; + return s; + } else { + return (java.lang.String) ref; + } + } + /** + * optional string content = 15; + * + *
+         * The file contents.
+         * 
+ */ + public com.google.protobuf.ByteString + getContentBytes() { + java.lang.Object ref = content_; + if (ref instanceof String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + content_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + /** + * optional string content = 15; + * + *
+         * The file contents.
+         * 
+ */ + public Builder setContent( + java.lang.String value) { + if (value == null) { + throw new NullPointerException(); + } + bitField0_ |= 0x00000004; + content_ = value; + onChanged(); + return this; + } + /** + * optional string content = 15; + * + *
+         * The file contents.
+         * 
+ */ + public Builder clearContent() { + bitField0_ = (bitField0_ & ~0x00000004); + content_ = getDefaultInstance().getContent(); + onChanged(); + return this; + } + /** + * optional string content = 15; + * + *
+         * The file contents.
+         * 
+ */ + public Builder setContentBytes( + com.google.protobuf.ByteString value) { + if (value == null) { + throw new NullPointerException(); + } + bitField0_ |= 0x00000004; + content_ = value; + onChanged(); + return this; + } + + // @@protoc_insertion_point(builder_scope:google.protobuf.compiler.CodeGeneratorResponse.File) + } + + static { + defaultInstance = new File(true); + defaultInstance.initFields(); + } + + // @@protoc_insertion_point(class_scope:google.protobuf.compiler.CodeGeneratorResponse.File) + } + + private int bitField0_; + // optional string error = 1; + public static final int ERROR_FIELD_NUMBER = 1; + private java.lang.Object error_; + /** + * optional string error = 1; + * + *
+     * Error message.  If non-empty, code generation failed.  The plugin process
+     * should exit with status code zero even if it reports an error in this way.
+     *
+     * This should be used to indicate errors in .proto files which prevent the
+     * code generator from generating correct code.  Errors which indicate a
+     * problem in protoc itself -- such as the input CodeGeneratorRequest being
+     * unparseable -- should be reported by writing a message to stderr and
+     * exiting with a non-zero status code.
+     * 
+ */ + public boolean hasError() { + return ((bitField0_ & 0x00000001) == 0x00000001); + } + /** + * optional string error = 1; + * + *
+     * Error message.  If non-empty, code generation failed.  The plugin process
+     * should exit with status code zero even if it reports an error in this way.
+     *
+     * This should be used to indicate errors in .proto files which prevent the
+     * code generator from generating correct code.  Errors which indicate a
+     * problem in protoc itself -- such as the input CodeGeneratorRequest being
+     * unparseable -- should be reported by writing a message to stderr and
+     * exiting with a non-zero status code.
+     * 
+ */ + public java.lang.String getError() { + java.lang.Object ref = error_; + if (ref instanceof java.lang.String) { + return (java.lang.String) ref; + } else { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + if (bs.isValidUtf8()) { + error_ = s; + } + return s; + } + } + /** + * optional string error = 1; + * + *
+     * Error message.  If non-empty, code generation failed.  The plugin process
+     * should exit with status code zero even if it reports an error in this way.
+     *
+     * This should be used to indicate errors in .proto files which prevent the
+     * code generator from generating correct code.  Errors which indicate a
+     * problem in protoc itself -- such as the input CodeGeneratorRequest being
+     * unparseable -- should be reported by writing a message to stderr and
+     * exiting with a non-zero status code.
+     * 
+ */ + public com.google.protobuf.ByteString + getErrorBytes() { + java.lang.Object ref = error_; + if (ref instanceof java.lang.String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + error_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + + // repeated .google.protobuf.compiler.CodeGeneratorResponse.File file = 15; + public static final int FILE_FIELD_NUMBER = 15; + private java.util.List file_; + /** + * repeated .google.protobuf.compiler.CodeGeneratorResponse.File file = 15; + */ + public java.util.List getFileList() { + return file_; + } + /** + * repeated .google.protobuf.compiler.CodeGeneratorResponse.File file = 15; + */ + public java.util.List + getFileOrBuilderList() { + return file_; + } + /** + * repeated .google.protobuf.compiler.CodeGeneratorResponse.File file = 15; + */ + public int getFileCount() { + return file_.size(); + } + /** + * repeated .google.protobuf.compiler.CodeGeneratorResponse.File file = 15; + */ + public com.google.protobuf.compiler.PluginProtos.CodeGeneratorResponse.File getFile(int index) { + return file_.get(index); + } + /** + * repeated .google.protobuf.compiler.CodeGeneratorResponse.File file = 15; + */ + public com.google.protobuf.compiler.PluginProtos.CodeGeneratorResponse.FileOrBuilder getFileOrBuilder( + int index) { + return file_.get(index); + } + + private void initFields() { + error_ = ""; + file_ = java.util.Collections.emptyList(); + } + private byte memoizedIsInitialized = -1; + public final boolean isInitialized() { + byte isInitialized = memoizedIsInitialized; + if (isInitialized != -1) return isInitialized == 1; + + memoizedIsInitialized = 1; + return true; + } + + public void writeTo(com.google.protobuf.CodedOutputStream output) + throws java.io.IOException { + getSerializedSize(); + if (((bitField0_ & 0x00000001) == 0x00000001)) { + output.writeBytes(1, getErrorBytes()); + } + for (int i = 0; i < file_.size(); i++) { + output.writeMessage(15, file_.get(i)); + } + getUnknownFields().writeTo(output); + } + + private int memoizedSerializedSize = -1; + public int getSerializedSize() { + int size = memoizedSerializedSize; + if (size != -1) return size; + + size = 0; + if (((bitField0_ & 0x00000001) == 0x00000001)) { + size += com.google.protobuf.CodedOutputStream + .computeBytesSize(1, getErrorBytes()); + } + for (int i = 0; i < file_.size(); i++) { + size += com.google.protobuf.CodedOutputStream + .computeMessageSize(15, file_.get(i)); + } + size += getUnknownFields().getSerializedSize(); + memoizedSerializedSize = size; + return size; + } + + private static final long serialVersionUID = 0L; + @java.lang.Override + protected java.lang.Object writeReplace() + throws java.io.ObjectStreamException { + return super.writeReplace(); + } + + public static com.google.protobuf.compiler.PluginProtos.CodeGeneratorResponse parseFrom( + com.google.protobuf.ByteString data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static com.google.protobuf.compiler.PluginProtos.CodeGeneratorResponse parseFrom( + com.google.protobuf.ByteString data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static com.google.protobuf.compiler.PluginProtos.CodeGeneratorResponse parseFrom(byte[] data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static com.google.protobuf.compiler.PluginProtos.CodeGeneratorResponse parseFrom( + byte[] data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static com.google.protobuf.compiler.PluginProtos.CodeGeneratorResponse parseFrom(java.io.InputStream input) + throws java.io.IOException { + return PARSER.parseFrom(input); + } + public static com.google.protobuf.compiler.PluginProtos.CodeGeneratorResponse parseFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return PARSER.parseFrom(input, extensionRegistry); + } + public static com.google.protobuf.compiler.PluginProtos.CodeGeneratorResponse parseDelimitedFrom(java.io.InputStream input) + throws java.io.IOException { + return PARSER.parseDelimitedFrom(input); + } + public static com.google.protobuf.compiler.PluginProtos.CodeGeneratorResponse parseDelimitedFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return PARSER.parseDelimitedFrom(input, extensionRegistry); + } + public static com.google.protobuf.compiler.PluginProtos.CodeGeneratorResponse parseFrom( + com.google.protobuf.CodedInputStream input) + throws java.io.IOException { + return PARSER.parseFrom(input); + } + public static com.google.protobuf.compiler.PluginProtos.CodeGeneratorResponse parseFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return PARSER.parseFrom(input, extensionRegistry); + } + + public static Builder newBuilder() { return Builder.create(); } + public Builder newBuilderForType() { return newBuilder(); } + public static Builder newBuilder(com.google.protobuf.compiler.PluginProtos.CodeGeneratorResponse prototype) { + return newBuilder().mergeFrom(prototype); + } + public Builder toBuilder() { return newBuilder(this); } + + @java.lang.Override + protected Builder newBuilderForType( + com.google.protobuf.GeneratedMessage.BuilderParent parent) { + Builder builder = new Builder(parent); + return builder; + } + /** + * Protobuf type {@code google.protobuf.compiler.CodeGeneratorResponse} + * + *
+     * The plugin writes an encoded CodeGeneratorResponse to stdout.
+     * 
+ */ + public static final class Builder extends + com.google.protobuf.GeneratedMessage.Builder + implements com.google.protobuf.compiler.PluginProtos.CodeGeneratorResponseOrBuilder { + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return com.google.protobuf.compiler.PluginProtos.internal_static_google_protobuf_compiler_CodeGeneratorResponse_descriptor; + } + + protected com.google.protobuf.GeneratedMessage.FieldAccessorTable + internalGetFieldAccessorTable() { + return com.google.protobuf.compiler.PluginProtos.internal_static_google_protobuf_compiler_CodeGeneratorResponse_fieldAccessorTable + .ensureFieldAccessorsInitialized( + com.google.protobuf.compiler.PluginProtos.CodeGeneratorResponse.class, com.google.protobuf.compiler.PluginProtos.CodeGeneratorResponse.Builder.class); + } + + // Construct using com.google.protobuf.compiler.PluginProtos.CodeGeneratorResponse.newBuilder() + private Builder() { + maybeForceBuilderInitialization(); + } + + private Builder( + com.google.protobuf.GeneratedMessage.BuilderParent parent) { + super(parent); + maybeForceBuilderInitialization(); + } + private void maybeForceBuilderInitialization() { + if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) { + getFileFieldBuilder(); + } + } + private static Builder create() { + return new Builder(); + } + + public Builder clear() { + super.clear(); + error_ = ""; + bitField0_ = (bitField0_ & ~0x00000001); + if (fileBuilder_ == null) { + file_ = java.util.Collections.emptyList(); + bitField0_ = (bitField0_ & ~0x00000002); + } else { + fileBuilder_.clear(); + } + return this; + } + + public Builder clone() { + return create().mergeFrom(buildPartial()); + } + + public com.google.protobuf.Descriptors.Descriptor + getDescriptorForType() { + return com.google.protobuf.compiler.PluginProtos.internal_static_google_protobuf_compiler_CodeGeneratorResponse_descriptor; + } + + public com.google.protobuf.compiler.PluginProtos.CodeGeneratorResponse getDefaultInstanceForType() { + return com.google.protobuf.compiler.PluginProtos.CodeGeneratorResponse.getDefaultInstance(); + } + + public com.google.protobuf.compiler.PluginProtos.CodeGeneratorResponse build() { + com.google.protobuf.compiler.PluginProtos.CodeGeneratorResponse result = buildPartial(); + if (!result.isInitialized()) { + throw newUninitializedMessageException(result); + } + return result; + } + + public com.google.protobuf.compiler.PluginProtos.CodeGeneratorResponse buildPartial() { + com.google.protobuf.compiler.PluginProtos.CodeGeneratorResponse result = new com.google.protobuf.compiler.PluginProtos.CodeGeneratorResponse(this); + int from_bitField0_ = bitField0_; + int to_bitField0_ = 0; + if (((from_bitField0_ & 0x00000001) == 0x00000001)) { + to_bitField0_ |= 0x00000001; + } + result.error_ = error_; + if (fileBuilder_ == null) { + if (((bitField0_ & 0x00000002) == 0x00000002)) { + file_ = java.util.Collections.unmodifiableList(file_); + bitField0_ = (bitField0_ & ~0x00000002); + } + result.file_ = file_; + } else { + result.file_ = fileBuilder_.build(); + } + result.bitField0_ = to_bitField0_; + onBuilt(); + return result; + } + + public Builder mergeFrom(com.google.protobuf.Message other) { + if (other instanceof com.google.protobuf.compiler.PluginProtos.CodeGeneratorResponse) { + return mergeFrom((com.google.protobuf.compiler.PluginProtos.CodeGeneratorResponse)other); + } else { + super.mergeFrom(other); + return this; + } + } + + public Builder mergeFrom(com.google.protobuf.compiler.PluginProtos.CodeGeneratorResponse other) { + if (other == com.google.protobuf.compiler.PluginProtos.CodeGeneratorResponse.getDefaultInstance()) return this; + if (other.hasError()) { + bitField0_ |= 0x00000001; + error_ = other.error_; + onChanged(); + } + if (fileBuilder_ == null) { + if (!other.file_.isEmpty()) { + if (file_.isEmpty()) { + file_ = other.file_; + bitField0_ = (bitField0_ & ~0x00000002); + } else { + ensureFileIsMutable(); + file_.addAll(other.file_); + } + onChanged(); + } + } else { + if (!other.file_.isEmpty()) { + if (fileBuilder_.isEmpty()) { + fileBuilder_.dispose(); + fileBuilder_ = null; + file_ = other.file_; + bitField0_ = (bitField0_ & ~0x00000002); + fileBuilder_ = + com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ? + getFileFieldBuilder() : null; + } else { + fileBuilder_.addAllMessages(other.file_); + } + } + } + this.mergeUnknownFields(other.getUnknownFields()); + return this; + } + + public final boolean isInitialized() { + return true; + } + + public Builder mergeFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + com.google.protobuf.compiler.PluginProtos.CodeGeneratorResponse parsedMessage = null; + try { + parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + parsedMessage = (com.google.protobuf.compiler.PluginProtos.CodeGeneratorResponse) e.getUnfinishedMessage(); + throw e; + } finally { + if (parsedMessage != null) { + mergeFrom(parsedMessage); + } + } + return this; + } + private int bitField0_; + + // optional string error = 1; + private java.lang.Object error_ = ""; + /** + * optional string error = 1; + * + *
+       * Error message.  If non-empty, code generation failed.  The plugin process
+       * should exit with status code zero even if it reports an error in this way.
+       *
+       * This should be used to indicate errors in .proto files which prevent the
+       * code generator from generating correct code.  Errors which indicate a
+       * problem in protoc itself -- such as the input CodeGeneratorRequest being
+       * unparseable -- should be reported by writing a message to stderr and
+       * exiting with a non-zero status code.
+       * 
+ */ + public boolean hasError() { + return ((bitField0_ & 0x00000001) == 0x00000001); + } + /** + * optional string error = 1; + * + *
+       * Error message.  If non-empty, code generation failed.  The plugin process
+       * should exit with status code zero even if it reports an error in this way.
+       *
+       * This should be used to indicate errors in .proto files which prevent the
+       * code generator from generating correct code.  Errors which indicate a
+       * problem in protoc itself -- such as the input CodeGeneratorRequest being
+       * unparseable -- should be reported by writing a message to stderr and
+       * exiting with a non-zero status code.
+       * 
+ */ + public java.lang.String getError() { + java.lang.Object ref = error_; + if (!(ref instanceof java.lang.String)) { + java.lang.String s = ((com.google.protobuf.ByteString) ref) + .toStringUtf8(); + error_ = s; + return s; + } else { + return (java.lang.String) ref; + } + } + /** + * optional string error = 1; + * + *
+       * Error message.  If non-empty, code generation failed.  The plugin process
+       * should exit with status code zero even if it reports an error in this way.
+       *
+       * This should be used to indicate errors in .proto files which prevent the
+       * code generator from generating correct code.  Errors which indicate a
+       * problem in protoc itself -- such as the input CodeGeneratorRequest being
+       * unparseable -- should be reported by writing a message to stderr and
+       * exiting with a non-zero status code.
+       * 
+ */ + public com.google.protobuf.ByteString + getErrorBytes() { + java.lang.Object ref = error_; + if (ref instanceof String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + error_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + /** + * optional string error = 1; + * + *
+       * Error message.  If non-empty, code generation failed.  The plugin process
+       * should exit with status code zero even if it reports an error in this way.
+       *
+       * This should be used to indicate errors in .proto files which prevent the
+       * code generator from generating correct code.  Errors which indicate a
+       * problem in protoc itself -- such as the input CodeGeneratorRequest being
+       * unparseable -- should be reported by writing a message to stderr and
+       * exiting with a non-zero status code.
+       * 
+ */ + public Builder setError( + java.lang.String value) { + if (value == null) { + throw new NullPointerException(); + } + bitField0_ |= 0x00000001; + error_ = value; + onChanged(); + return this; + } + /** + * optional string error = 1; + * + *
+       * Error message.  If non-empty, code generation failed.  The plugin process
+       * should exit with status code zero even if it reports an error in this way.
+       *
+       * This should be used to indicate errors in .proto files which prevent the
+       * code generator from generating correct code.  Errors which indicate a
+       * problem in protoc itself -- such as the input CodeGeneratorRequest being
+       * unparseable -- should be reported by writing a message to stderr and
+       * exiting with a non-zero status code.
+       * 
+ */ + public Builder clearError() { + bitField0_ = (bitField0_ & ~0x00000001); + error_ = getDefaultInstance().getError(); + onChanged(); + return this; + } + /** + * optional string error = 1; + * + *
+       * Error message.  If non-empty, code generation failed.  The plugin process
+       * should exit with status code zero even if it reports an error in this way.
+       *
+       * This should be used to indicate errors in .proto files which prevent the
+       * code generator from generating correct code.  Errors which indicate a
+       * problem in protoc itself -- such as the input CodeGeneratorRequest being
+       * unparseable -- should be reported by writing a message to stderr and
+       * exiting with a non-zero status code.
+       * 
+ */ + public Builder setErrorBytes( + com.google.protobuf.ByteString value) { + if (value == null) { + throw new NullPointerException(); + } + bitField0_ |= 0x00000001; + error_ = value; + onChanged(); + return this; + } + + // repeated .google.protobuf.compiler.CodeGeneratorResponse.File file = 15; + private java.util.List file_ = + java.util.Collections.emptyList(); + private void ensureFileIsMutable() { + if (!((bitField0_ & 0x00000002) == 0x00000002)) { + file_ = new java.util.ArrayList(file_); + bitField0_ |= 0x00000002; + } + } + + private com.google.protobuf.RepeatedFieldBuilder< + com.google.protobuf.compiler.PluginProtos.CodeGeneratorResponse.File, com.google.protobuf.compiler.PluginProtos.CodeGeneratorResponse.File.Builder, com.google.protobuf.compiler.PluginProtos.CodeGeneratorResponse.FileOrBuilder> fileBuilder_; + + /** + * repeated .google.protobuf.compiler.CodeGeneratorResponse.File file = 15; + */ + public java.util.List getFileList() { + if (fileBuilder_ == null) { + return java.util.Collections.unmodifiableList(file_); + } else { + return fileBuilder_.getMessageList(); + } + } + /** + * repeated .google.protobuf.compiler.CodeGeneratorResponse.File file = 15; + */ + public int getFileCount() { + if (fileBuilder_ == null) { + return file_.size(); + } else { + return fileBuilder_.getCount(); + } + } + /** + * repeated .google.protobuf.compiler.CodeGeneratorResponse.File file = 15; + */ + public com.google.protobuf.compiler.PluginProtos.CodeGeneratorResponse.File getFile(int index) { + if (fileBuilder_ == null) { + return file_.get(index); + } else { + return fileBuilder_.getMessage(index); + } + } + /** + * repeated .google.protobuf.compiler.CodeGeneratorResponse.File file = 15; + */ + public Builder setFile( + int index, com.google.protobuf.compiler.PluginProtos.CodeGeneratorResponse.File value) { + if (fileBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + ensureFileIsMutable(); + file_.set(index, value); + onChanged(); + } else { + fileBuilder_.setMessage(index, value); + } + return this; + } + /** + * repeated .google.protobuf.compiler.CodeGeneratorResponse.File file = 15; + */ + public Builder setFile( + int index, com.google.protobuf.compiler.PluginProtos.CodeGeneratorResponse.File.Builder builderForValue) { + if (fileBuilder_ == null) { + ensureFileIsMutable(); + file_.set(index, builderForValue.build()); + onChanged(); + } else { + fileBuilder_.setMessage(index, builderForValue.build()); + } + return this; + } + /** + * repeated .google.protobuf.compiler.CodeGeneratorResponse.File file = 15; + */ + public Builder addFile(com.google.protobuf.compiler.PluginProtos.CodeGeneratorResponse.File value) { + if (fileBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + ensureFileIsMutable(); + file_.add(value); + onChanged(); + } else { + fileBuilder_.addMessage(value); + } + return this; + } + /** + * repeated .google.protobuf.compiler.CodeGeneratorResponse.File file = 15; + */ + public Builder addFile( + int index, com.google.protobuf.compiler.PluginProtos.CodeGeneratorResponse.File value) { + if (fileBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + ensureFileIsMutable(); + file_.add(index, value); + onChanged(); + } else { + fileBuilder_.addMessage(index, value); + } + return this; + } + /** + * repeated .google.protobuf.compiler.CodeGeneratorResponse.File file = 15; + */ + public Builder addFile( + com.google.protobuf.compiler.PluginProtos.CodeGeneratorResponse.File.Builder builderForValue) { + if (fileBuilder_ == null) { + ensureFileIsMutable(); + file_.add(builderForValue.build()); + onChanged(); + } else { + fileBuilder_.addMessage(builderForValue.build()); + } + return this; + } + /** + * repeated .google.protobuf.compiler.CodeGeneratorResponse.File file = 15; + */ + public Builder addFile( + int index, com.google.protobuf.compiler.PluginProtos.CodeGeneratorResponse.File.Builder builderForValue) { + if (fileBuilder_ == null) { + ensureFileIsMutable(); + file_.add(index, builderForValue.build()); + onChanged(); + } else { + fileBuilder_.addMessage(index, builderForValue.build()); + } + return this; + } + /** + * repeated .google.protobuf.compiler.CodeGeneratorResponse.File file = 15; + */ + public Builder addAllFile( + java.lang.Iterable values) { + if (fileBuilder_ == null) { + ensureFileIsMutable(); + super.addAll(values, file_); + onChanged(); + } else { + fileBuilder_.addAllMessages(values); + } + return this; + } + /** + * repeated .google.protobuf.compiler.CodeGeneratorResponse.File file = 15; + */ + public Builder clearFile() { + if (fileBuilder_ == null) { + file_ = java.util.Collections.emptyList(); + bitField0_ = (bitField0_ & ~0x00000002); + onChanged(); + } else { + fileBuilder_.clear(); + } + return this; + } + /** + * repeated .google.protobuf.compiler.CodeGeneratorResponse.File file = 15; + */ + public Builder removeFile(int index) { + if (fileBuilder_ == null) { + ensureFileIsMutable(); + file_.remove(index); + onChanged(); + } else { + fileBuilder_.remove(index); + } + return this; + } + /** + * repeated .google.protobuf.compiler.CodeGeneratorResponse.File file = 15; + */ + public com.google.protobuf.compiler.PluginProtos.CodeGeneratorResponse.File.Builder getFileBuilder( + int index) { + return getFileFieldBuilder().getBuilder(index); + } + /** + * repeated .google.protobuf.compiler.CodeGeneratorResponse.File file = 15; + */ + public com.google.protobuf.compiler.PluginProtos.CodeGeneratorResponse.FileOrBuilder getFileOrBuilder( + int index) { + if (fileBuilder_ == null) { + return file_.get(index); } else { + return fileBuilder_.getMessageOrBuilder(index); + } + } + /** + * repeated .google.protobuf.compiler.CodeGeneratorResponse.File file = 15; + */ + public java.util.List + getFileOrBuilderList() { + if (fileBuilder_ != null) { + return fileBuilder_.getMessageOrBuilderList(); + } else { + return java.util.Collections.unmodifiableList(file_); + } + } + /** + * repeated .google.protobuf.compiler.CodeGeneratorResponse.File file = 15; + */ + public com.google.protobuf.compiler.PluginProtos.CodeGeneratorResponse.File.Builder addFileBuilder() { + return getFileFieldBuilder().addBuilder( + com.google.protobuf.compiler.PluginProtos.CodeGeneratorResponse.File.getDefaultInstance()); + } + /** + * repeated .google.protobuf.compiler.CodeGeneratorResponse.File file = 15; + */ + public com.google.protobuf.compiler.PluginProtos.CodeGeneratorResponse.File.Builder addFileBuilder( + int index) { + return getFileFieldBuilder().addBuilder( + index, com.google.protobuf.compiler.PluginProtos.CodeGeneratorResponse.File.getDefaultInstance()); + } + /** + * repeated .google.protobuf.compiler.CodeGeneratorResponse.File file = 15; + */ + public java.util.List + getFileBuilderList() { + return getFileFieldBuilder().getBuilderList(); + } + private com.google.protobuf.RepeatedFieldBuilder< + com.google.protobuf.compiler.PluginProtos.CodeGeneratorResponse.File, com.google.protobuf.compiler.PluginProtos.CodeGeneratorResponse.File.Builder, com.google.protobuf.compiler.PluginProtos.CodeGeneratorResponse.FileOrBuilder> + getFileFieldBuilder() { + if (fileBuilder_ == null) { + fileBuilder_ = new com.google.protobuf.RepeatedFieldBuilder< + com.google.protobuf.compiler.PluginProtos.CodeGeneratorResponse.File, com.google.protobuf.compiler.PluginProtos.CodeGeneratorResponse.File.Builder, com.google.protobuf.compiler.PluginProtos.CodeGeneratorResponse.FileOrBuilder>( + file_, + ((bitField0_ & 0x00000002) == 0x00000002), + getParentForChildren(), + isClean()); + file_ = null; + } + return fileBuilder_; + } + + // @@protoc_insertion_point(builder_scope:google.protobuf.compiler.CodeGeneratorResponse) + } + + static { + defaultInstance = new CodeGeneratorResponse(true); + defaultInstance.initFields(); + } + + // @@protoc_insertion_point(class_scope:google.protobuf.compiler.CodeGeneratorResponse) + } + + private static com.google.protobuf.Descriptors.Descriptor + internal_static_google_protobuf_compiler_CodeGeneratorRequest_descriptor; + private static + com.google.protobuf.GeneratedMessage.FieldAccessorTable + internal_static_google_protobuf_compiler_CodeGeneratorRequest_fieldAccessorTable; + private static com.google.protobuf.Descriptors.Descriptor + internal_static_google_protobuf_compiler_CodeGeneratorResponse_descriptor; + private static + com.google.protobuf.GeneratedMessage.FieldAccessorTable + internal_static_google_protobuf_compiler_CodeGeneratorResponse_fieldAccessorTable; + private static com.google.protobuf.Descriptors.Descriptor + internal_static_google_protobuf_compiler_CodeGeneratorResponse_File_descriptor; + private static + com.google.protobuf.GeneratedMessage.FieldAccessorTable + internal_static_google_protobuf_compiler_CodeGeneratorResponse_File_fieldAccessorTable; + + public static com.google.protobuf.Descriptors.FileDescriptor + getDescriptor() { + return descriptor; + } + private static com.google.protobuf.Descriptors.FileDescriptor + descriptor; + static { + java.lang.String[] descriptorData = { + "\n\014plugin.proto\022\030google.protobuf.compiler" + + "\032 google/protobuf/descriptor.proto\"}\n\024Co" + + "deGeneratorRequest\022\030\n\020file_to_generate\030\001" + + " \003(\t\022\021\n\tparameter\030\002 \001(\t\0228\n\nproto_file\030\017 " + + "\003(\0132$.google.protobuf.FileDescriptorProt" + + "o\"\252\001\n\025CodeGeneratorResponse\022\r\n\005error\030\001 \001" + + "(\t\022B\n\004file\030\017 \003(\01324.google.protobuf.compi" + + "ler.CodeGeneratorResponse.File\032>\n\004File\022\014" + + "\n\004name\030\001 \001(\t\022\027\n\017insertion_point\030\002 \001(\t\022\017\n" + + "\007content\030\017 \001(\tB,\n\034com.google.protobuf.co", + "mpilerB\014PluginProtos" + }; + com.google.protobuf.Descriptors.FileDescriptor.InternalDescriptorAssigner assigner = + new com.google.protobuf.Descriptors.FileDescriptor.InternalDescriptorAssigner() { + public com.google.protobuf.ExtensionRegistry assignDescriptors( + com.google.protobuf.Descriptors.FileDescriptor root) { + descriptor = root; + internal_static_google_protobuf_compiler_CodeGeneratorRequest_descriptor = + getDescriptor().getMessageTypes().get(0); + internal_static_google_protobuf_compiler_CodeGeneratorRequest_fieldAccessorTable = new + com.google.protobuf.GeneratedMessage.FieldAccessorTable( + internal_static_google_protobuf_compiler_CodeGeneratorRequest_descriptor, + new java.lang.String[] { "FileToGenerate", "Parameter", "ProtoFile", }); + internal_static_google_protobuf_compiler_CodeGeneratorResponse_descriptor = + getDescriptor().getMessageTypes().get(1); + internal_static_google_protobuf_compiler_CodeGeneratorResponse_fieldAccessorTable = new + com.google.protobuf.GeneratedMessage.FieldAccessorTable( + internal_static_google_protobuf_compiler_CodeGeneratorResponse_descriptor, + new java.lang.String[] { "Error", "File", }); + internal_static_google_protobuf_compiler_CodeGeneratorResponse_File_descriptor = + internal_static_google_protobuf_compiler_CodeGeneratorResponse_descriptor.getNestedTypes().get(0); + internal_static_google_protobuf_compiler_CodeGeneratorResponse_File_fieldAccessorTable = new + com.google.protobuf.GeneratedMessage.FieldAccessorTable( + internal_static_google_protobuf_compiler_CodeGeneratorResponse_File_descriptor, + new java.lang.String[] { "Name", "InsertionPoint", "Content", }); + return null; + } + }; + com.google.protobuf.Descriptors.FileDescriptor + .internalBuildGeneratedFileFrom(descriptorData, + new com.google.protobuf.Descriptors.FileDescriptor[] { + com.google.protobuf.DescriptorProtos.getDescriptor(), + }, assigner); + } + + // @@protoc_insertion_point(outer_class_scope) +} diff --git a/java/pbrpcgen/src/google/protobuf/compiler/Plugin.java b/java/pbrpcgen/src/google/protobuf/compiler/Plugin.java deleted file mode 100644 index 2b6614aab..000000000 --- a/java/pbrpcgen/src/google/protobuf/compiler/Plugin.java +++ /dev/null @@ -1,1287 +0,0 @@ -// Generated by the protocol buffer compiler. DO NOT EDIT! -// source: org/xtreemfs/foundation/util/plugin.proto - -package google.protobuf.compiler; - -public final class Plugin { - private Plugin() {} - public static void registerAllExtensions( - com.google.protobuf.ExtensionRegistry registry) { - } - public static final class CodeGeneratorRequest extends - com.google.protobuf.GeneratedMessage { - // Use CodeGeneratorRequest.newBuilder() to construct. - private CodeGeneratorRequest() { - initFields(); - } - private CodeGeneratorRequest(boolean noInit) {} - - private static final CodeGeneratorRequest defaultInstance; - public static CodeGeneratorRequest getDefaultInstance() { - return defaultInstance; - } - - public CodeGeneratorRequest getDefaultInstanceForType() { - return defaultInstance; - } - - public static final com.google.protobuf.Descriptors.Descriptor - getDescriptor() { - return google.protobuf.compiler.Plugin.internal_static_google_protobuf_compiler_CodeGeneratorRequest_descriptor; - } - - protected com.google.protobuf.GeneratedMessage.FieldAccessorTable - internalGetFieldAccessorTable() { - return google.protobuf.compiler.Plugin.internal_static_google_protobuf_compiler_CodeGeneratorRequest_fieldAccessorTable; - } - - // repeated string file_to_generate = 1; - public static final int FILE_TO_GENERATE_FIELD_NUMBER = 1; - private java.util.List fileToGenerate_ = - java.util.Collections.emptyList(); - public java.util.List getFileToGenerateList() { - return fileToGenerate_; - } - public int getFileToGenerateCount() { return fileToGenerate_.size(); } - public java.lang.String getFileToGenerate(int index) { - return fileToGenerate_.get(index); - } - - // optional string parameter = 2; - public static final int PARAMETER_FIELD_NUMBER = 2; - private boolean hasParameter; - private java.lang.String parameter_ = ""; - public boolean hasParameter() { return hasParameter; } - public java.lang.String getParameter() { return parameter_; } - - // repeated .google.protobuf.FileDescriptorProto proto_file = 15; - public static final int PROTO_FILE_FIELD_NUMBER = 15; - private java.util.List protoFile_ = - java.util.Collections.emptyList(); - public java.util.List getProtoFileList() { - return protoFile_; - } - public int getProtoFileCount() { return protoFile_.size(); } - public com.google.protobuf.DescriptorProtos.FileDescriptorProto getProtoFile(int index) { - return protoFile_.get(index); - } - - private void initFields() { - } - public final boolean isInitialized() { - for (com.google.protobuf.DescriptorProtos.FileDescriptorProto element : getProtoFileList()) { - if (!element.isInitialized()) return false; - } - return true; - } - - public void writeTo(com.google.protobuf.CodedOutputStream output) - throws java.io.IOException { - getSerializedSize(); - for (java.lang.String element : getFileToGenerateList()) { - output.writeString(1, element); - } - if (hasParameter()) { - output.writeString(2, getParameter()); - } - for (com.google.protobuf.DescriptorProtos.FileDescriptorProto element : getProtoFileList()) { - output.writeMessage(15, element); - } - getUnknownFields().writeTo(output); - } - - private int memoizedSerializedSize = -1; - public int getSerializedSize() { - int size = memoizedSerializedSize; - if (size != -1) return size; - - size = 0; - { - int dataSize = 0; - for (java.lang.String element : getFileToGenerateList()) { - dataSize += com.google.protobuf.CodedOutputStream - .computeStringSizeNoTag(element); - } - size += dataSize; - size += 1 * getFileToGenerateList().size(); - } - if (hasParameter()) { - size += com.google.protobuf.CodedOutputStream - .computeStringSize(2, getParameter()); - } - for (com.google.protobuf.DescriptorProtos.FileDescriptorProto element : getProtoFileList()) { - size += com.google.protobuf.CodedOutputStream - .computeMessageSize(15, element); - } - size += getUnknownFields().getSerializedSize(); - memoizedSerializedSize = size; - return size; - } - - public static google.protobuf.compiler.Plugin.CodeGeneratorRequest parseFrom( - com.google.protobuf.ByteString data) - throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data).buildParsed(); - } - public static google.protobuf.compiler.Plugin.CodeGeneratorRequest parseFrom( - com.google.protobuf.ByteString data, - com.google.protobuf.ExtensionRegistryLite extensionRegistry) - throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data, extensionRegistry) - .buildParsed(); - } - public static google.protobuf.compiler.Plugin.CodeGeneratorRequest parseFrom(byte[] data) - throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data).buildParsed(); - } - public static google.protobuf.compiler.Plugin.CodeGeneratorRequest parseFrom( - byte[] data, - com.google.protobuf.ExtensionRegistryLite extensionRegistry) - throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data, extensionRegistry) - .buildParsed(); - } - public static google.protobuf.compiler.Plugin.CodeGeneratorRequest parseFrom(java.io.InputStream input) - throws java.io.IOException { - return newBuilder().mergeFrom(input).buildParsed(); - } - public static google.protobuf.compiler.Plugin.CodeGeneratorRequest parseFrom( - java.io.InputStream input, - com.google.protobuf.ExtensionRegistryLite extensionRegistry) - throws java.io.IOException { - return newBuilder().mergeFrom(input, extensionRegistry) - .buildParsed(); - } - public static google.protobuf.compiler.Plugin.CodeGeneratorRequest parseDelimitedFrom(java.io.InputStream input) - throws java.io.IOException { - Builder builder = newBuilder(); - if (builder.mergeDelimitedFrom(input)) { - return builder.buildParsed(); - } else { - return null; - } - } - public static google.protobuf.compiler.Plugin.CodeGeneratorRequest parseDelimitedFrom( - java.io.InputStream input, - com.google.protobuf.ExtensionRegistryLite extensionRegistry) - throws java.io.IOException { - Builder builder = newBuilder(); - if (builder.mergeDelimitedFrom(input, extensionRegistry)) { - return builder.buildParsed(); - } else { - return null; - } - } - public static google.protobuf.compiler.Plugin.CodeGeneratorRequest parseFrom( - com.google.protobuf.CodedInputStream input) - throws java.io.IOException { - return newBuilder().mergeFrom(input).buildParsed(); - } - public static google.protobuf.compiler.Plugin.CodeGeneratorRequest parseFrom( - com.google.protobuf.CodedInputStream input, - com.google.protobuf.ExtensionRegistryLite extensionRegistry) - throws java.io.IOException { - return newBuilder().mergeFrom(input, extensionRegistry) - .buildParsed(); - } - - public static Builder newBuilder() { return Builder.create(); } - public Builder newBuilderForType() { return newBuilder(); } - public static Builder newBuilder(google.protobuf.compiler.Plugin.CodeGeneratorRequest prototype) { - return newBuilder().mergeFrom(prototype); - } - public Builder toBuilder() { return newBuilder(this); } - - public static final class Builder extends - com.google.protobuf.GeneratedMessage.Builder { - private google.protobuf.compiler.Plugin.CodeGeneratorRequest result; - - // Construct using google.protobuf.compiler.Plugin.CodeGeneratorRequest.newBuilder() - private Builder() {} - - private static Builder create() { - Builder builder = new Builder(); - builder.result = new google.protobuf.compiler.Plugin.CodeGeneratorRequest(); - return builder; - } - - protected google.protobuf.compiler.Plugin.CodeGeneratorRequest internalGetResult() { - return result; - } - - public Builder clear() { - if (result == null) { - throw new IllegalStateException( - "Cannot call clear() after build()."); - } - result = new google.protobuf.compiler.Plugin.CodeGeneratorRequest(); - return this; - } - - public Builder clone() { - return create().mergeFrom(result); - } - - public com.google.protobuf.Descriptors.Descriptor - getDescriptorForType() { - return google.protobuf.compiler.Plugin.CodeGeneratorRequest.getDescriptor(); - } - - public google.protobuf.compiler.Plugin.CodeGeneratorRequest getDefaultInstanceForType() { - return google.protobuf.compiler.Plugin.CodeGeneratorRequest.getDefaultInstance(); - } - - public boolean isInitialized() { - return result.isInitialized(); - } - public google.protobuf.compiler.Plugin.CodeGeneratorRequest build() { - if (result != null && !isInitialized()) { - throw newUninitializedMessageException(result); - } - return buildPartial(); - } - - private google.protobuf.compiler.Plugin.CodeGeneratorRequest buildParsed() - throws com.google.protobuf.InvalidProtocolBufferException { - if (!isInitialized()) { - throw newUninitializedMessageException( - result).asInvalidProtocolBufferException(); - } - return buildPartial(); - } - - public google.protobuf.compiler.Plugin.CodeGeneratorRequest buildPartial() { - if (result == null) { - throw new IllegalStateException( - "build() has already been called on this Builder."); - } - if (result.fileToGenerate_ != java.util.Collections.EMPTY_LIST) { - result.fileToGenerate_ = - java.util.Collections.unmodifiableList(result.fileToGenerate_); - } - if (result.protoFile_ != java.util.Collections.EMPTY_LIST) { - result.protoFile_ = - java.util.Collections.unmodifiableList(result.protoFile_); - } - google.protobuf.compiler.Plugin.CodeGeneratorRequest returnMe = result; - result = null; - return returnMe; - } - - public Builder mergeFrom(com.google.protobuf.Message other) { - if (other instanceof google.protobuf.compiler.Plugin.CodeGeneratorRequest) { - return mergeFrom((google.protobuf.compiler.Plugin.CodeGeneratorRequest)other); - } else { - super.mergeFrom(other); - return this; - } - } - - public Builder mergeFrom(google.protobuf.compiler.Plugin.CodeGeneratorRequest other) { - if (other == google.protobuf.compiler.Plugin.CodeGeneratorRequest.getDefaultInstance()) return this; - if (!other.fileToGenerate_.isEmpty()) { - if (result.fileToGenerate_.isEmpty()) { - result.fileToGenerate_ = new java.util.ArrayList(); - } - result.fileToGenerate_.addAll(other.fileToGenerate_); - } - if (other.hasParameter()) { - setParameter(other.getParameter()); - } - if (!other.protoFile_.isEmpty()) { - if (result.protoFile_.isEmpty()) { - result.protoFile_ = new java.util.ArrayList(); - } - result.protoFile_.addAll(other.protoFile_); - } - this.mergeUnknownFields(other.getUnknownFields()); - return this; - } - - public Builder mergeFrom( - com.google.protobuf.CodedInputStream input, - com.google.protobuf.ExtensionRegistryLite extensionRegistry) - throws java.io.IOException { - com.google.protobuf.UnknownFieldSet.Builder unknownFields = - com.google.protobuf.UnknownFieldSet.newBuilder( - this.getUnknownFields()); - while (true) { - int tag = input.readTag(); - switch (tag) { - case 0: - this.setUnknownFields(unknownFields.build()); - return this; - default: { - if (!parseUnknownField(input, unknownFields, - extensionRegistry, tag)) { - this.setUnknownFields(unknownFields.build()); - return this; - } - break; - } - case 10: { - addFileToGenerate(input.readString()); - break; - } - case 18: { - setParameter(input.readString()); - break; - } - case 122: { - com.google.protobuf.DescriptorProtos.FileDescriptorProto.Builder subBuilder = com.google.protobuf.DescriptorProtos.FileDescriptorProto.newBuilder(); - input.readMessage(subBuilder, extensionRegistry); - addProtoFile(subBuilder.buildPartial()); - break; - } - } - } - } - - - // repeated string file_to_generate = 1; - public java.util.List getFileToGenerateList() { - return java.util.Collections.unmodifiableList(result.fileToGenerate_); - } - public int getFileToGenerateCount() { - return result.getFileToGenerateCount(); - } - public java.lang.String getFileToGenerate(int index) { - return result.getFileToGenerate(index); - } - public Builder setFileToGenerate(int index, java.lang.String value) { - if (value == null) { - throw new NullPointerException(); - } - result.fileToGenerate_.set(index, value); - return this; - } - public Builder addFileToGenerate(java.lang.String value) { - if (value == null) { - throw new NullPointerException(); - } - if (result.fileToGenerate_.isEmpty()) { - result.fileToGenerate_ = new java.util.ArrayList(); - } - result.fileToGenerate_.add(value); - return this; - } - public Builder addAllFileToGenerate( - java.lang.Iterable values) { - if (result.fileToGenerate_.isEmpty()) { - result.fileToGenerate_ = new java.util.ArrayList(); - } - super.addAll(values, result.fileToGenerate_); - return this; - } - public Builder clearFileToGenerate() { - result.fileToGenerate_ = java.util.Collections.emptyList(); - return this; - } - - // optional string parameter = 2; - public boolean hasParameter() { - return result.hasParameter(); - } - public java.lang.String getParameter() { - return result.getParameter(); - } - public Builder setParameter(java.lang.String value) { - if (value == null) { - throw new NullPointerException(); - } - result.hasParameter = true; - result.parameter_ = value; - return this; - } - public Builder clearParameter() { - result.hasParameter = false; - result.parameter_ = getDefaultInstance().getParameter(); - return this; - } - - // repeated .google.protobuf.FileDescriptorProto proto_file = 15; - public java.util.List getProtoFileList() { - return java.util.Collections.unmodifiableList(result.protoFile_); - } - public int getProtoFileCount() { - return result.getProtoFileCount(); - } - public com.google.protobuf.DescriptorProtos.FileDescriptorProto getProtoFile(int index) { - return result.getProtoFile(index); - } - public Builder setProtoFile(int index, com.google.protobuf.DescriptorProtos.FileDescriptorProto value) { - if (value == null) { - throw new NullPointerException(); - } - result.protoFile_.set(index, value); - return this; - } - public Builder setProtoFile(int index, com.google.protobuf.DescriptorProtos.FileDescriptorProto.Builder builderForValue) { - result.protoFile_.set(index, builderForValue.build()); - return this; - } - public Builder addProtoFile(com.google.protobuf.DescriptorProtos.FileDescriptorProto value) { - if (value == null) { - throw new NullPointerException(); - } - if (result.protoFile_.isEmpty()) { - result.protoFile_ = new java.util.ArrayList(); - } - result.protoFile_.add(value); - return this; - } - public Builder addProtoFile(com.google.protobuf.DescriptorProtos.FileDescriptorProto.Builder builderForValue) { - if (result.protoFile_.isEmpty()) { - result.protoFile_ = new java.util.ArrayList(); - } - result.protoFile_.add(builderForValue.build()); - return this; - } - public Builder addAllProtoFile( - java.lang.Iterable values) { - if (result.protoFile_.isEmpty()) { - result.protoFile_ = new java.util.ArrayList(); - } - super.addAll(values, result.protoFile_); - return this; - } - public Builder clearProtoFile() { - result.protoFile_ = java.util.Collections.emptyList(); - return this; - } - - // @@protoc_insertion_point(builder_scope:google.protobuf.compiler.CodeGeneratorRequest) - } - - static { - defaultInstance = new CodeGeneratorRequest(true); - google.protobuf.compiler.Plugin.internalForceInit(); - defaultInstance.initFields(); - } - - // @@protoc_insertion_point(class_scope:google.protobuf.compiler.CodeGeneratorRequest) - } - - public static final class CodeGeneratorResponse extends - com.google.protobuf.GeneratedMessage { - // Use CodeGeneratorResponse.newBuilder() to construct. - private CodeGeneratorResponse() { - initFields(); - } - private CodeGeneratorResponse(boolean noInit) {} - - private static final CodeGeneratorResponse defaultInstance; - public static CodeGeneratorResponse getDefaultInstance() { - return defaultInstance; - } - - public CodeGeneratorResponse getDefaultInstanceForType() { - return defaultInstance; - } - - public static final com.google.protobuf.Descriptors.Descriptor - getDescriptor() { - return google.protobuf.compiler.Plugin.internal_static_google_protobuf_compiler_CodeGeneratorResponse_descriptor; - } - - protected com.google.protobuf.GeneratedMessage.FieldAccessorTable - internalGetFieldAccessorTable() { - return google.protobuf.compiler.Plugin.internal_static_google_protobuf_compiler_CodeGeneratorResponse_fieldAccessorTable; - } - - public static final class File extends - com.google.protobuf.GeneratedMessage { - // Use File.newBuilder() to construct. - private File() { - initFields(); - } - private File(boolean noInit) {} - - private static final File defaultInstance; - public static File getDefaultInstance() { - return defaultInstance; - } - - public File getDefaultInstanceForType() { - return defaultInstance; - } - - public static final com.google.protobuf.Descriptors.Descriptor - getDescriptor() { - return google.protobuf.compiler.Plugin.internal_static_google_protobuf_compiler_CodeGeneratorResponse_File_descriptor; - } - - protected com.google.protobuf.GeneratedMessage.FieldAccessorTable - internalGetFieldAccessorTable() { - return google.protobuf.compiler.Plugin.internal_static_google_protobuf_compiler_CodeGeneratorResponse_File_fieldAccessorTable; - } - - // optional string name = 1; - public static final int NAME_FIELD_NUMBER = 1; - private boolean hasName; - private java.lang.String name_ = ""; - public boolean hasName() { return hasName; } - public java.lang.String getName() { return name_; } - - // optional string insertion_point = 2; - public static final int INSERTION_POINT_FIELD_NUMBER = 2; - private boolean hasInsertionPoint; - private java.lang.String insertionPoint_ = ""; - public boolean hasInsertionPoint() { return hasInsertionPoint; } - public java.lang.String getInsertionPoint() { return insertionPoint_; } - - // optional string content = 15; - public static final int CONTENT_FIELD_NUMBER = 15; - private boolean hasContent; - private java.lang.String content_ = ""; - public boolean hasContent() { return hasContent; } - public java.lang.String getContent() { return content_; } - - private void initFields() { - } - public final boolean isInitialized() { - return true; - } - - public void writeTo(com.google.protobuf.CodedOutputStream output) - throws java.io.IOException { - getSerializedSize(); - if (hasName()) { - output.writeString(1, getName()); - } - if (hasInsertionPoint()) { - output.writeString(2, getInsertionPoint()); - } - if (hasContent()) { - output.writeString(15, getContent()); - } - getUnknownFields().writeTo(output); - } - - private int memoizedSerializedSize = -1; - public int getSerializedSize() { - int size = memoizedSerializedSize; - if (size != -1) return size; - - size = 0; - if (hasName()) { - size += com.google.protobuf.CodedOutputStream - .computeStringSize(1, getName()); - } - if (hasInsertionPoint()) { - size += com.google.protobuf.CodedOutputStream - .computeStringSize(2, getInsertionPoint()); - } - if (hasContent()) { - size += com.google.protobuf.CodedOutputStream - .computeStringSize(15, getContent()); - } - size += getUnknownFields().getSerializedSize(); - memoizedSerializedSize = size; - return size; - } - - public static google.protobuf.compiler.Plugin.CodeGeneratorResponse.File parseFrom( - com.google.protobuf.ByteString data) - throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data).buildParsed(); - } - public static google.protobuf.compiler.Plugin.CodeGeneratorResponse.File parseFrom( - com.google.protobuf.ByteString data, - com.google.protobuf.ExtensionRegistryLite extensionRegistry) - throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data, extensionRegistry) - .buildParsed(); - } - public static google.protobuf.compiler.Plugin.CodeGeneratorResponse.File parseFrom(byte[] data) - throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data).buildParsed(); - } - public static google.protobuf.compiler.Plugin.CodeGeneratorResponse.File parseFrom( - byte[] data, - com.google.protobuf.ExtensionRegistryLite extensionRegistry) - throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data, extensionRegistry) - .buildParsed(); - } - public static google.protobuf.compiler.Plugin.CodeGeneratorResponse.File parseFrom(java.io.InputStream input) - throws java.io.IOException { - return newBuilder().mergeFrom(input).buildParsed(); - } - public static google.protobuf.compiler.Plugin.CodeGeneratorResponse.File parseFrom( - java.io.InputStream input, - com.google.protobuf.ExtensionRegistryLite extensionRegistry) - throws java.io.IOException { - return newBuilder().mergeFrom(input, extensionRegistry) - .buildParsed(); - } - public static google.protobuf.compiler.Plugin.CodeGeneratorResponse.File parseDelimitedFrom(java.io.InputStream input) - throws java.io.IOException { - Builder builder = newBuilder(); - if (builder.mergeDelimitedFrom(input)) { - return builder.buildParsed(); - } else { - return null; - } - } - public static google.protobuf.compiler.Plugin.CodeGeneratorResponse.File parseDelimitedFrom( - java.io.InputStream input, - com.google.protobuf.ExtensionRegistryLite extensionRegistry) - throws java.io.IOException { - Builder builder = newBuilder(); - if (builder.mergeDelimitedFrom(input, extensionRegistry)) { - return builder.buildParsed(); - } else { - return null; - } - } - public static google.protobuf.compiler.Plugin.CodeGeneratorResponse.File parseFrom( - com.google.protobuf.CodedInputStream input) - throws java.io.IOException { - return newBuilder().mergeFrom(input).buildParsed(); - } - public static google.protobuf.compiler.Plugin.CodeGeneratorResponse.File parseFrom( - com.google.protobuf.CodedInputStream input, - com.google.protobuf.ExtensionRegistryLite extensionRegistry) - throws java.io.IOException { - return newBuilder().mergeFrom(input, extensionRegistry) - .buildParsed(); - } - - public static Builder newBuilder() { return Builder.create(); } - public Builder newBuilderForType() { return newBuilder(); } - public static Builder newBuilder(google.protobuf.compiler.Plugin.CodeGeneratorResponse.File prototype) { - return newBuilder().mergeFrom(prototype); - } - public Builder toBuilder() { return newBuilder(this); } - - public static final class Builder extends - com.google.protobuf.GeneratedMessage.Builder { - private google.protobuf.compiler.Plugin.CodeGeneratorResponse.File result; - - // Construct using google.protobuf.compiler.Plugin.CodeGeneratorResponse.File.newBuilder() - private Builder() {} - - private static Builder create() { - Builder builder = new Builder(); - builder.result = new google.protobuf.compiler.Plugin.CodeGeneratorResponse.File(); - return builder; - } - - protected google.protobuf.compiler.Plugin.CodeGeneratorResponse.File internalGetResult() { - return result; - } - - public Builder clear() { - if (result == null) { - throw new IllegalStateException( - "Cannot call clear() after build()."); - } - result = new google.protobuf.compiler.Plugin.CodeGeneratorResponse.File(); - return this; - } - - public Builder clone() { - return create().mergeFrom(result); - } - - public com.google.protobuf.Descriptors.Descriptor - getDescriptorForType() { - return google.protobuf.compiler.Plugin.CodeGeneratorResponse.File.getDescriptor(); - } - - public google.protobuf.compiler.Plugin.CodeGeneratorResponse.File getDefaultInstanceForType() { - return google.protobuf.compiler.Plugin.CodeGeneratorResponse.File.getDefaultInstance(); - } - - public boolean isInitialized() { - return result.isInitialized(); - } - public google.protobuf.compiler.Plugin.CodeGeneratorResponse.File build() { - if (result != null && !isInitialized()) { - throw newUninitializedMessageException(result); - } - return buildPartial(); - } - - private google.protobuf.compiler.Plugin.CodeGeneratorResponse.File buildParsed() - throws com.google.protobuf.InvalidProtocolBufferException { - if (!isInitialized()) { - throw newUninitializedMessageException( - result).asInvalidProtocolBufferException(); - } - return buildPartial(); - } - - public google.protobuf.compiler.Plugin.CodeGeneratorResponse.File buildPartial() { - if (result == null) { - throw new IllegalStateException( - "build() has already been called on this Builder."); - } - google.protobuf.compiler.Plugin.CodeGeneratorResponse.File returnMe = result; - result = null; - return returnMe; - } - - public Builder mergeFrom(com.google.protobuf.Message other) { - if (other instanceof google.protobuf.compiler.Plugin.CodeGeneratorResponse.File) { - return mergeFrom((google.protobuf.compiler.Plugin.CodeGeneratorResponse.File)other); - } else { - super.mergeFrom(other); - return this; - } - } - - public Builder mergeFrom(google.protobuf.compiler.Plugin.CodeGeneratorResponse.File other) { - if (other == google.protobuf.compiler.Plugin.CodeGeneratorResponse.File.getDefaultInstance()) return this; - if (other.hasName()) { - setName(other.getName()); - } - if (other.hasInsertionPoint()) { - setInsertionPoint(other.getInsertionPoint()); - } - if (other.hasContent()) { - setContent(other.getContent()); - } - this.mergeUnknownFields(other.getUnknownFields()); - return this; - } - - public Builder mergeFrom( - com.google.protobuf.CodedInputStream input, - com.google.protobuf.ExtensionRegistryLite extensionRegistry) - throws java.io.IOException { - com.google.protobuf.UnknownFieldSet.Builder unknownFields = - com.google.protobuf.UnknownFieldSet.newBuilder( - this.getUnknownFields()); - while (true) { - int tag = input.readTag(); - switch (tag) { - case 0: - this.setUnknownFields(unknownFields.build()); - return this; - default: { - if (!parseUnknownField(input, unknownFields, - extensionRegistry, tag)) { - this.setUnknownFields(unknownFields.build()); - return this; - } - break; - } - case 10: { - setName(input.readString()); - break; - } - case 18: { - setInsertionPoint(input.readString()); - break; - } - case 122: { - setContent(input.readString()); - break; - } - } - } - } - - - // optional string name = 1; - public boolean hasName() { - return result.hasName(); - } - public java.lang.String getName() { - return result.getName(); - } - public Builder setName(java.lang.String value) { - if (value == null) { - throw new NullPointerException(); - } - result.hasName = true; - result.name_ = value; - return this; - } - public Builder clearName() { - result.hasName = false; - result.name_ = getDefaultInstance().getName(); - return this; - } - - // optional string insertion_point = 2; - public boolean hasInsertionPoint() { - return result.hasInsertionPoint(); - } - public java.lang.String getInsertionPoint() { - return result.getInsertionPoint(); - } - public Builder setInsertionPoint(java.lang.String value) { - if (value == null) { - throw new NullPointerException(); - } - result.hasInsertionPoint = true; - result.insertionPoint_ = value; - return this; - } - public Builder clearInsertionPoint() { - result.hasInsertionPoint = false; - result.insertionPoint_ = getDefaultInstance().getInsertionPoint(); - return this; - } - - // optional string content = 15; - public boolean hasContent() { - return result.hasContent(); - } - public java.lang.String getContent() { - return result.getContent(); - } - public Builder setContent(java.lang.String value) { - if (value == null) { - throw new NullPointerException(); - } - result.hasContent = true; - result.content_ = value; - return this; - } - public Builder clearContent() { - result.hasContent = false; - result.content_ = getDefaultInstance().getContent(); - return this; - } - - // @@protoc_insertion_point(builder_scope:google.protobuf.compiler.CodeGeneratorResponse.File) - } - - static { - defaultInstance = new File(true); - google.protobuf.compiler.Plugin.internalForceInit(); - defaultInstance.initFields(); - } - - // @@protoc_insertion_point(class_scope:google.protobuf.compiler.CodeGeneratorResponse.File) - } - - // optional string error = 1; - public static final int ERROR_FIELD_NUMBER = 1; - private boolean hasError; - private java.lang.String error_ = ""; - public boolean hasError() { return hasError; } - public java.lang.String getError() { return error_; } - - // repeated .google.protobuf.compiler.CodeGeneratorResponse.File file = 15; - public static final int FILE_FIELD_NUMBER = 15; - private java.util.List file_ = - java.util.Collections.emptyList(); - public java.util.List getFileList() { - return file_; - } - public int getFileCount() { return file_.size(); } - public google.protobuf.compiler.Plugin.CodeGeneratorResponse.File getFile(int index) { - return file_.get(index); - } - - private void initFields() { - } - public final boolean isInitialized() { - return true; - } - - public void writeTo(com.google.protobuf.CodedOutputStream output) - throws java.io.IOException { - getSerializedSize(); - if (hasError()) { - output.writeString(1, getError()); - } - for (google.protobuf.compiler.Plugin.CodeGeneratorResponse.File element : getFileList()) { - output.writeMessage(15, element); - } - getUnknownFields().writeTo(output); - } - - private int memoizedSerializedSize = -1; - public int getSerializedSize() { - int size = memoizedSerializedSize; - if (size != -1) return size; - - size = 0; - if (hasError()) { - size += com.google.protobuf.CodedOutputStream - .computeStringSize(1, getError()); - } - for (google.protobuf.compiler.Plugin.CodeGeneratorResponse.File element : getFileList()) { - size += com.google.protobuf.CodedOutputStream - .computeMessageSize(15, element); - } - size += getUnknownFields().getSerializedSize(); - memoizedSerializedSize = size; - return size; - } - - public static google.protobuf.compiler.Plugin.CodeGeneratorResponse parseFrom( - com.google.protobuf.ByteString data) - throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data).buildParsed(); - } - public static google.protobuf.compiler.Plugin.CodeGeneratorResponse parseFrom( - com.google.protobuf.ByteString data, - com.google.protobuf.ExtensionRegistryLite extensionRegistry) - throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data, extensionRegistry) - .buildParsed(); - } - public static google.protobuf.compiler.Plugin.CodeGeneratorResponse parseFrom(byte[] data) - throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data).buildParsed(); - } - public static google.protobuf.compiler.Plugin.CodeGeneratorResponse parseFrom( - byte[] data, - com.google.protobuf.ExtensionRegistryLite extensionRegistry) - throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data, extensionRegistry) - .buildParsed(); - } - public static google.protobuf.compiler.Plugin.CodeGeneratorResponse parseFrom(java.io.InputStream input) - throws java.io.IOException { - return newBuilder().mergeFrom(input).buildParsed(); - } - public static google.protobuf.compiler.Plugin.CodeGeneratorResponse parseFrom( - java.io.InputStream input, - com.google.protobuf.ExtensionRegistryLite extensionRegistry) - throws java.io.IOException { - return newBuilder().mergeFrom(input, extensionRegistry) - .buildParsed(); - } - public static google.protobuf.compiler.Plugin.CodeGeneratorResponse parseDelimitedFrom(java.io.InputStream input) - throws java.io.IOException { - Builder builder = newBuilder(); - if (builder.mergeDelimitedFrom(input)) { - return builder.buildParsed(); - } else { - return null; - } - } - public static google.protobuf.compiler.Plugin.CodeGeneratorResponse parseDelimitedFrom( - java.io.InputStream input, - com.google.protobuf.ExtensionRegistryLite extensionRegistry) - throws java.io.IOException { - Builder builder = newBuilder(); - if (builder.mergeDelimitedFrom(input, extensionRegistry)) { - return builder.buildParsed(); - } else { - return null; - } - } - public static google.protobuf.compiler.Plugin.CodeGeneratorResponse parseFrom( - com.google.protobuf.CodedInputStream input) - throws java.io.IOException { - return newBuilder().mergeFrom(input).buildParsed(); - } - public static google.protobuf.compiler.Plugin.CodeGeneratorResponse parseFrom( - com.google.protobuf.CodedInputStream input, - com.google.protobuf.ExtensionRegistryLite extensionRegistry) - throws java.io.IOException { - return newBuilder().mergeFrom(input, extensionRegistry) - .buildParsed(); - } - - public static Builder newBuilder() { return Builder.create(); } - public Builder newBuilderForType() { return newBuilder(); } - public static Builder newBuilder(google.protobuf.compiler.Plugin.CodeGeneratorResponse prototype) { - return newBuilder().mergeFrom(prototype); - } - public Builder toBuilder() { return newBuilder(this); } - - public static final class Builder extends - com.google.protobuf.GeneratedMessage.Builder { - private google.protobuf.compiler.Plugin.CodeGeneratorResponse result; - - // Construct using google.protobuf.compiler.Plugin.CodeGeneratorResponse.newBuilder() - private Builder() {} - - private static Builder create() { - Builder builder = new Builder(); - builder.result = new google.protobuf.compiler.Plugin.CodeGeneratorResponse(); - return builder; - } - - protected google.protobuf.compiler.Plugin.CodeGeneratorResponse internalGetResult() { - return result; - } - - public Builder clear() { - if (result == null) { - throw new IllegalStateException( - "Cannot call clear() after build()."); - } - result = new google.protobuf.compiler.Plugin.CodeGeneratorResponse(); - return this; - } - - public Builder clone() { - return create().mergeFrom(result); - } - - public com.google.protobuf.Descriptors.Descriptor - getDescriptorForType() { - return google.protobuf.compiler.Plugin.CodeGeneratorResponse.getDescriptor(); - } - - public google.protobuf.compiler.Plugin.CodeGeneratorResponse getDefaultInstanceForType() { - return google.protobuf.compiler.Plugin.CodeGeneratorResponse.getDefaultInstance(); - } - - public boolean isInitialized() { - return result.isInitialized(); - } - public google.protobuf.compiler.Plugin.CodeGeneratorResponse build() { - if (result != null && !isInitialized()) { - throw newUninitializedMessageException(result); - } - return buildPartial(); - } - - private google.protobuf.compiler.Plugin.CodeGeneratorResponse buildParsed() - throws com.google.protobuf.InvalidProtocolBufferException { - if (!isInitialized()) { - throw newUninitializedMessageException( - result).asInvalidProtocolBufferException(); - } - return buildPartial(); - } - - public google.protobuf.compiler.Plugin.CodeGeneratorResponse buildPartial() { - if (result == null) { - throw new IllegalStateException( - "build() has already been called on this Builder."); - } - if (result.file_ != java.util.Collections.EMPTY_LIST) { - result.file_ = - java.util.Collections.unmodifiableList(result.file_); - } - google.protobuf.compiler.Plugin.CodeGeneratorResponse returnMe = result; - result = null; - return returnMe; - } - - public Builder mergeFrom(com.google.protobuf.Message other) { - if (other instanceof google.protobuf.compiler.Plugin.CodeGeneratorResponse) { - return mergeFrom((google.protobuf.compiler.Plugin.CodeGeneratorResponse)other); - } else { - super.mergeFrom(other); - return this; - } - } - - public Builder mergeFrom(google.protobuf.compiler.Plugin.CodeGeneratorResponse other) { - if (other == google.protobuf.compiler.Plugin.CodeGeneratorResponse.getDefaultInstance()) return this; - if (other.hasError()) { - setError(other.getError()); - } - if (!other.file_.isEmpty()) { - if (result.file_.isEmpty()) { - result.file_ = new java.util.ArrayList(); - } - result.file_.addAll(other.file_); - } - this.mergeUnknownFields(other.getUnknownFields()); - return this; - } - - public Builder mergeFrom( - com.google.protobuf.CodedInputStream input, - com.google.protobuf.ExtensionRegistryLite extensionRegistry) - throws java.io.IOException { - com.google.protobuf.UnknownFieldSet.Builder unknownFields = - com.google.protobuf.UnknownFieldSet.newBuilder( - this.getUnknownFields()); - while (true) { - int tag = input.readTag(); - switch (tag) { - case 0: - this.setUnknownFields(unknownFields.build()); - return this; - default: { - if (!parseUnknownField(input, unknownFields, - extensionRegistry, tag)) { - this.setUnknownFields(unknownFields.build()); - return this; - } - break; - } - case 10: { - setError(input.readString()); - break; - } - case 122: { - google.protobuf.compiler.Plugin.CodeGeneratorResponse.File.Builder subBuilder = google.protobuf.compiler.Plugin.CodeGeneratorResponse.File.newBuilder(); - input.readMessage(subBuilder, extensionRegistry); - addFile(subBuilder.buildPartial()); - break; - } - } - } - } - - - // optional string error = 1; - public boolean hasError() { - return result.hasError(); - } - public java.lang.String getError() { - return result.getError(); - } - public Builder setError(java.lang.String value) { - if (value == null) { - throw new NullPointerException(); - } - result.hasError = true; - result.error_ = value; - return this; - } - public Builder clearError() { - result.hasError = false; - result.error_ = getDefaultInstance().getError(); - return this; - } - - // repeated .google.protobuf.compiler.CodeGeneratorResponse.File file = 15; - public java.util.List getFileList() { - return java.util.Collections.unmodifiableList(result.file_); - } - public int getFileCount() { - return result.getFileCount(); - } - public google.protobuf.compiler.Plugin.CodeGeneratorResponse.File getFile(int index) { - return result.getFile(index); - } - public Builder setFile(int index, google.protobuf.compiler.Plugin.CodeGeneratorResponse.File value) { - if (value == null) { - throw new NullPointerException(); - } - result.file_.set(index, value); - return this; - } - public Builder setFile(int index, google.protobuf.compiler.Plugin.CodeGeneratorResponse.File.Builder builderForValue) { - result.file_.set(index, builderForValue.build()); - return this; - } - public Builder addFile(google.protobuf.compiler.Plugin.CodeGeneratorResponse.File value) { - if (value == null) { - throw new NullPointerException(); - } - if (result.file_.isEmpty()) { - result.file_ = new java.util.ArrayList(); - } - result.file_.add(value); - return this; - } - public Builder addFile(google.protobuf.compiler.Plugin.CodeGeneratorResponse.File.Builder builderForValue) { - if (result.file_.isEmpty()) { - result.file_ = new java.util.ArrayList(); - } - result.file_.add(builderForValue.build()); - return this; - } - public Builder addAllFile( - java.lang.Iterable values) { - if (result.file_.isEmpty()) { - result.file_ = new java.util.ArrayList(); - } - super.addAll(values, result.file_); - return this; - } - public Builder clearFile() { - result.file_ = java.util.Collections.emptyList(); - return this; - } - - // @@protoc_insertion_point(builder_scope:google.protobuf.compiler.CodeGeneratorResponse) - } - - static { - defaultInstance = new CodeGeneratorResponse(true); - google.protobuf.compiler.Plugin.internalForceInit(); - defaultInstance.initFields(); - } - - // @@protoc_insertion_point(class_scope:google.protobuf.compiler.CodeGeneratorResponse) - } - - private static com.google.protobuf.Descriptors.Descriptor - internal_static_google_protobuf_compiler_CodeGeneratorRequest_descriptor; - private static - com.google.protobuf.GeneratedMessage.FieldAccessorTable - internal_static_google_protobuf_compiler_CodeGeneratorRequest_fieldAccessorTable; - private static com.google.protobuf.Descriptors.Descriptor - internal_static_google_protobuf_compiler_CodeGeneratorResponse_descriptor; - private static - com.google.protobuf.GeneratedMessage.FieldAccessorTable - internal_static_google_protobuf_compiler_CodeGeneratorResponse_fieldAccessorTable; - private static com.google.protobuf.Descriptors.Descriptor - internal_static_google_protobuf_compiler_CodeGeneratorResponse_File_descriptor; - private static - com.google.protobuf.GeneratedMessage.FieldAccessorTable - internal_static_google_protobuf_compiler_CodeGeneratorResponse_File_fieldAccessorTable; - - public static com.google.protobuf.Descriptors.FileDescriptor - getDescriptor() { - return descriptor; - } - private static com.google.protobuf.Descriptors.FileDescriptor - descriptor; - static { - java.lang.String[] descriptorData = { - "\n)org/xtreemfs/foundation/util/plugin.pr" + - "oto\022\030google.protobuf.compiler\032 google/pr" + - "otobuf/descriptor.proto\"}\n\024CodeGenerator" + - "Request\022\030\n\020file_to_generate\030\001 \003(\t\022\021\n\tpar" + - "ameter\030\002 \001(\t\0228\n\nproto_file\030\017 \003(\0132$.googl" + - "e.protobuf.FileDescriptorProto\"\252\001\n\025CodeG" + - "eneratorResponse\022\r\n\005error\030\001 \001(\t\022B\n\004file\030" + - "\017 \003(\01324.google.protobuf.compiler.CodeGen" + - "eratorResponse.File\032>\n\004File\022\014\n\004name\030\001 \001(" + - "\t\022\027\n\017insertion_point\030\002 \001(\t\022\017\n\007content\030\017 ", - "\001(\t" - }; - com.google.protobuf.Descriptors.FileDescriptor.InternalDescriptorAssigner assigner = - new com.google.protobuf.Descriptors.FileDescriptor.InternalDescriptorAssigner() { - public com.google.protobuf.ExtensionRegistry assignDescriptors( - com.google.protobuf.Descriptors.FileDescriptor root) { - descriptor = root; - internal_static_google_protobuf_compiler_CodeGeneratorRequest_descriptor = - getDescriptor().getMessageTypes().get(0); - internal_static_google_protobuf_compiler_CodeGeneratorRequest_fieldAccessorTable = new - com.google.protobuf.GeneratedMessage.FieldAccessorTable( - internal_static_google_protobuf_compiler_CodeGeneratorRequest_descriptor, - new java.lang.String[] { "FileToGenerate", "Parameter", "ProtoFile", }, - google.protobuf.compiler.Plugin.CodeGeneratorRequest.class, - google.protobuf.compiler.Plugin.CodeGeneratorRequest.Builder.class); - internal_static_google_protobuf_compiler_CodeGeneratorResponse_descriptor = - getDescriptor().getMessageTypes().get(1); - internal_static_google_protobuf_compiler_CodeGeneratorResponse_fieldAccessorTable = new - com.google.protobuf.GeneratedMessage.FieldAccessorTable( - internal_static_google_protobuf_compiler_CodeGeneratorResponse_descriptor, - new java.lang.String[] { "Error", "File", }, - google.protobuf.compiler.Plugin.CodeGeneratorResponse.class, - google.protobuf.compiler.Plugin.CodeGeneratorResponse.Builder.class); - internal_static_google_protobuf_compiler_CodeGeneratorResponse_File_descriptor = - internal_static_google_protobuf_compiler_CodeGeneratorResponse_descriptor.getNestedTypes().get(0); - internal_static_google_protobuf_compiler_CodeGeneratorResponse_File_fieldAccessorTable = new - com.google.protobuf.GeneratedMessage.FieldAccessorTable( - internal_static_google_protobuf_compiler_CodeGeneratorResponse_File_descriptor, - new java.lang.String[] { "Name", "InsertionPoint", "Content", }, - google.protobuf.compiler.Plugin.CodeGeneratorResponse.File.class, - google.protobuf.compiler.Plugin.CodeGeneratorResponse.File.Builder.class); - return null; - } - }; - com.google.protobuf.Descriptors.FileDescriptor - .internalBuildGeneratedFileFrom(descriptorData, - new com.google.protobuf.Descriptors.FileDescriptor[] { - com.google.protobuf.DescriptorProtos.getDescriptor(), - }, assigner); - } - - public static void internalForceInit() {} - - // @@protoc_insertion_point(outer_class_scope) -} diff --git a/java/pbrpcgen/src/org/xtreemfs/foundation/pbrpc/generatedinterfaces/PBRPC.java b/java/pbrpcgen/src/org/xtreemfs/foundation/pbrpc/generatedinterfaces/PBRPC.java index 769fcf0db..eb2bc1fe7 100644 --- a/java/pbrpcgen/src/org/xtreemfs/foundation/pbrpc/generatedinterfaces/PBRPC.java +++ b/java/pbrpcgen/src/org/xtreemfs/foundation/pbrpc/generatedinterfaces/PBRPC.java @@ -13,34 +13,50 @@ public final class PBRPC { registry.add(org.xtreemfs.foundation.pbrpc.generatedinterfaces.PBRPC.interfaceId); } public static final int PROC_ID_FIELD_NUMBER = 50001; + /** + * extend .google.protobuf.MethodOptions { ... } + */ public static final com.google.protobuf.GeneratedMessage.GeneratedExtension< com.google.protobuf.DescriptorProtos.MethodOptions, - java.lang.Integer> procId = - com.google.protobuf.GeneratedMessage - .newGeneratedExtension(); + java.lang.Integer> procId = com.google.protobuf.GeneratedMessage + .newFileScopedGeneratedExtension( + java.lang.Integer.class, + null); public static final int DATA_IN_FIELD_NUMBER = 50004; + /** + * extend .google.protobuf.MethodOptions { ... } + */ public static final com.google.protobuf.GeneratedMessage.GeneratedExtension< com.google.protobuf.DescriptorProtos.MethodOptions, - java.lang.Boolean> dataIn = - com.google.protobuf.GeneratedMessage - .newGeneratedExtension(); + java.lang.Boolean> dataIn = com.google.protobuf.GeneratedMessage + .newFileScopedGeneratedExtension( + java.lang.Boolean.class, + null); public static final int DATA_OUT_FIELD_NUMBER = 50003; + /** + * extend .google.protobuf.MethodOptions { ... } + */ public static final com.google.protobuf.GeneratedMessage.GeneratedExtension< com.google.protobuf.DescriptorProtos.MethodOptions, - java.lang.Boolean> dataOut = - com.google.protobuf.GeneratedMessage - .newGeneratedExtension(); + java.lang.Boolean> dataOut = com.google.protobuf.GeneratedMessage + .newFileScopedGeneratedExtension( + java.lang.Boolean.class, + null); public static final int INTERFACE_ID_FIELD_NUMBER = 50002; + /** + * extend .google.protobuf.ServiceOptions { ... } + */ public static final com.google.protobuf.GeneratedMessage.GeneratedExtension< com.google.protobuf.DescriptorProtos.ServiceOptions, - java.lang.Integer> interfaceId = - com.google.protobuf.GeneratedMessage - .newGeneratedExtension(); - + java.lang.Integer> interfaceId = com.google.protobuf.GeneratedMessage + .newFileScopedGeneratedExtension( + java.lang.Integer.class, + null); + public static com.google.protobuf.Descriptors.FileDescriptor getDescriptor() { return descriptor; @@ -64,18 +80,10 @@ public final class PBRPC { public com.google.protobuf.ExtensionRegistry assignDescriptors( com.google.protobuf.Descriptors.FileDescriptor root) { descriptor = root; - org.xtreemfs.foundation.pbrpc.generatedinterfaces.PBRPC.procId.internalInit( - org.xtreemfs.foundation.pbrpc.generatedinterfaces.PBRPC.getDescriptor().getExtensions().get(0), - java.lang.Integer.class); - org.xtreemfs.foundation.pbrpc.generatedinterfaces.PBRPC.dataIn.internalInit( - org.xtreemfs.foundation.pbrpc.generatedinterfaces.PBRPC.getDescriptor().getExtensions().get(1), - java.lang.Boolean.class); - org.xtreemfs.foundation.pbrpc.generatedinterfaces.PBRPC.dataOut.internalInit( - org.xtreemfs.foundation.pbrpc.generatedinterfaces.PBRPC.getDescriptor().getExtensions().get(2), - java.lang.Boolean.class); - org.xtreemfs.foundation.pbrpc.generatedinterfaces.PBRPC.interfaceId.internalInit( - org.xtreemfs.foundation.pbrpc.generatedinterfaces.PBRPC.getDescriptor().getExtensions().get(3), - java.lang.Integer.class); + procId.internalInit(descriptor.getExtensions().get(0)); + dataIn.internalInit(descriptor.getExtensions().get(1)); + dataOut.internalInit(descriptor.getExtensions().get(2)); + interfaceId.internalInit(descriptor.getExtensions().get(3)); return null; } }; @@ -85,8 +93,6 @@ public final class PBRPC { com.google.protobuf.DescriptorProtos.getDescriptor(), }, assigner); } - - public static void internalForceInit() {} - + // @@protoc_insertion_point(outer_class_scope) } diff --git a/java/pbrpcgen/src/org/xtreemfs/pbrpcgen/RPCCPPSourceGenerator.java b/java/pbrpcgen/src/org/xtreemfs/pbrpcgen/RPCCPPSourceGenerator.java index 70b22bc49..45eaccfd0 100644 --- a/java/pbrpcgen/src/org/xtreemfs/pbrpcgen/RPCCPPSourceGenerator.java +++ b/java/pbrpcgen/src/org/xtreemfs/pbrpcgen/RPCCPPSourceGenerator.java @@ -4,9 +4,9 @@ import com.google.protobuf.DescriptorProtos.DescriptorProto; import com.google.protobuf.DescriptorProtos.EnumDescriptorProto; import com.google.protobuf.DescriptorProtos.FieldDescriptorProto; import com.google.protobuf.DescriptorProtos.FieldDescriptorProto.Type; -import google.protobuf.compiler.Plugin.CodeGeneratorRequest; -import google.protobuf.compiler.Plugin.CodeGeneratorResponse; -import google.protobuf.compiler.Plugin.CodeGeneratorResponse.File; +import com.google.protobuf.compiler.PluginProtos.CodeGeneratorRequest; +import com.google.protobuf.compiler.PluginProtos.CodeGeneratorResponse; +import com.google.protobuf.compiler.PluginProtos.CodeGeneratorResponse.File; import java.util.List; import java.util.Map; diff --git a/java/pbrpcgen/src/org/xtreemfs/pbrpcgen/RPCSourceGenerator.java b/java/pbrpcgen/src/org/xtreemfs/pbrpcgen/RPCSourceGenerator.java index 46c239832..68ff69517 100644 --- a/java/pbrpcgen/src/org/xtreemfs/pbrpcgen/RPCSourceGenerator.java +++ b/java/pbrpcgen/src/org/xtreemfs/pbrpcgen/RPCSourceGenerator.java @@ -4,9 +4,9 @@ import com.google.protobuf.DescriptorProtos.DescriptorProto; import com.google.protobuf.DescriptorProtos.EnumDescriptorProto; import com.google.protobuf.DescriptorProtos.FieldDescriptorProto; import com.google.protobuf.DescriptorProtos.FieldDescriptorProto.Type; -import google.protobuf.compiler.Plugin.CodeGeneratorRequest; -import google.protobuf.compiler.Plugin.CodeGeneratorResponse; -import google.protobuf.compiler.Plugin.CodeGeneratorResponse.File; +import com.google.protobuf.compiler.PluginProtos.CodeGeneratorRequest; +import com.google.protobuf.compiler.PluginProtos.CodeGeneratorResponse; +import com.google.protobuf.compiler.PluginProtos.CodeGeneratorResponse.File; import java.util.List; import java.util.Map; @@ -15,7 +15,6 @@ import java.util.Map.Entry; import com.google.protobuf.DescriptorProtos.FileDescriptorProto; import com.google.protobuf.DescriptorProtos.MethodDescriptorProto; import com.google.protobuf.DescriptorProtos.ServiceDescriptorProto; -import com.google.protobuf.Descriptors; import com.google.protobuf.Descriptors.FieldDescriptor; import com.google.protobuf.ExtensionRegistry; import java.util.Date; diff --git a/java/servers/eclipse-project/.classpath b/java/servers/eclipse-project/.classpath index 79d24a842..e2df74e1e 100644 --- a/java/servers/eclipse-project/.classpath +++ b/java/servers/eclipse-project/.classpath @@ -11,7 +11,7 @@ - + diff --git a/java/servers/eclipse-project/.classpath_WITH_BabuDB_project_reference b/java/servers/eclipse-project/.classpath_WITH_BabuDB_project_reference index cbd42579f..cc974c5e8 100644 --- a/java/servers/eclipse-project/.classpath_WITH_BabuDB_project_reference +++ b/java/servers/eclipse-project/.classpath_WITH_BabuDB_project_reference @@ -10,7 +10,7 @@ - + diff --git a/java/servers/nbproject/build-impl.xml b/java/servers/nbproject/build-impl.xml index eb004b563..6b17438b4 100644 --- a/java/servers/nbproject/build-impl.xml +++ b/java/servers/nbproject/build-impl.xml @@ -1,5 +1,4 @@ - - - + --> @@ -55,21 +53,84 @@ is divided into following sections: - + + + + + + + + + - + + + + + + + + + + + + + + + + + + + + - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -104,6 +165,7 @@ is divided into following sections: + @@ -119,12 +181,22 @@ is divided into following sections: - + + + + + - - + + + + + + + + @@ -151,11 +223,13 @@ is divided into following sections: - + + + @@ -165,7 +239,8 @@ is divided into following sections: - + + @@ -174,11 +249,53 @@ is divided into following sections: - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -195,14 +312,19 @@ is divided into following sections: Must set javac.includes - + + + - + + + + @@ -213,7 +335,8 @@ is divided into following sections: - + + @@ -228,18 +351,64 @@ is divided into following sections: + + - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Must set JVM to use for profiling in profiler.info.jvm + Must set profiler agent JVM arguments in profiler.info.jvmargs.agent + + - + @@ -270,6 +439,12 @@ is divided into following sections: + + + + + + @@ -278,10 +453,11 @@ is divided into following sections: + - - - + + + @@ -302,8 +478,9 @@ is divided into following sections: - - + + + @@ -317,20 +494,108 @@ is divided into following sections: + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + - + + + + + + + + + + + + + + + + + + + + + + + + + - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -346,17 +611,23 @@ is divided into following sections: - + + + + + + + - + @@ -370,7 +641,7 @@ is divided into following sections: - + - + - + - + - To run this application from the command line without Ant, try: + To run this application from the command line without Ant, try: - java -cp "${run.classpath.with.dist.jar}" ${main.class} - - - - - - - - - - - - - - - - - - - - - - - To run this application from the command line without Ant, try: + java -cp "${run.classpath.with.dist.jar}" ${main.class} + + + + + + + + + + + + + + + + + + + + + + + + + To run this application from the command line without Ant, try: - java -jar "${dist.jar.resolved}" + java -jar "${dist.jar.resolved}" - - - - - - - - - - - - - - - - - + + + + + - + + + + + + + + + + + Must select one file in the IDE or set profile.class + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + - + + + + + + + + + + @@ -555,8 +891,8 @@ is divided into following sections: - - + + @@ -570,10 +906,10 @@ is divided into following sections: - + Must select some files in the IDE or set javac.includes - + @@ -610,7 +946,7 @@ is divided into following sections: Some tests failed; see details above. - + - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + + + + + + + + + + + + + + + + + diff --git a/java/servers/nbproject/genfiles.properties b/java/servers/nbproject/genfiles.properties index dca5ca82a..3dc30e249 100644 --- a/java/servers/nbproject/genfiles.properties +++ b/java/servers/nbproject/genfiles.properties @@ -3,9 +3,9 @@ build.xml.script.CRC32=ce2ddeb0 build.xml.stylesheet.CRC32=958a1d3e # This file is used by a NetBeans-based IDE to track changes in generated files such as build-impl.xml. # Do not edit this file. You may delete it but then the IDE will never regenerate such files for you. -nbproject/build-impl.xml.data.CRC32=7a93d09a -nbproject/build-impl.xml.script.CRC32=6dfc4676 -nbproject/build-impl.xml.stylesheet.CRC32=5c621a33@1.26.2.45 +nbproject/build-impl.xml.data.CRC32=53818f37 +nbproject/build-impl.xml.script.CRC32=42a9c2ae +nbproject/build-impl.xml.stylesheet.CRC32=0ae3a408@1.44.1.45 nbproject/profiler-build-impl.xml.data.CRC32=4a9eff70 nbproject/profiler-build-impl.xml.script.CRC32=abda56ed nbproject/profiler-build-impl.xml.stylesheet.CRC32=42cb6bcf diff --git a/java/servers/nbproject/project.properties b/java/servers/nbproject/project.properties index c879d2748..8beb4e5a9 100644 --- a/java/servers/nbproject/project.properties +++ b/java/servers/nbproject/project.properties @@ -27,22 +27,22 @@ excludes= file.reference.BabuDB.jar-1=../lib/BabuDB.jar file.reference.bcprov-jdk16-139.jar=lib/bcprov-jdk16-139.jar file.reference.cdaclient.jar=lib/cdaclient.jar -file.reference.Flease.jar-1=../flease/dist/Flease.jar -file.reference.Foundation.jar-1=../foundation/dist/Foundation.jar file.reference.junit-4.3.1.jar=../lib/test/junit-4.3.1.jar file.reference.config.jar=lib/config.jar file.reference.je-3.2.13.jar=lib/je-3.2.13.jar -file.reference.protobuf-java-2.3.0.jar=../lib/protobuf-java-2.3.0.jar +file.reference.protobuf-java-2.5.0.jar=../lib/protobuf-java-2.5.0.jar file.reference.xbean.jar=lib/xbean.jar file.reference.jdmkrt.jar=../lib/jdmkrt.jar file.reference.jdmktk.jar=../lib/jdmktk.jar includes=** +jar.archive.disabled=${jnlp.enabled} jar.compress=false +jar.index=${jnlp.enabled} javac.classpath=\ ${file.reference.BabuDB.jar-1}:\ - ${file.reference.Flease.jar-1}:\ - ${file.reference.protobuf-java-2.3.0.jar}:\ - ${file.reference.Foundation.jar-1}:\ + ${file.reference.protobuf-java-2.5.0.jar}:\ + ${reference.XtreemFS-foundation.jar}:\ + ${reference.Flease.jar}:\ ${file.reference.junit-4.3.1.jar}:\ ${file.reference.jdmkrt.jar}:\ ${file.reference.jdmktk.jar} @@ -70,14 +70,23 @@ javadoc.version=false javadoc.windowtitle= jnlp.codebase.type=local jnlp.codebase.url=file:/home/bjko/xtreemos/xtreemfs/googlecode/servers/dist +jnlp.descriptor=application jnlp.enabled=false +jnlp.mixed.code=default jnlp.offline-allowed=false jnlp.signed=false +jnlp.signing= +jnlp.signing.alias= +jnlp.signing.keystore= main.class=org.xtreemfs.mrc.MRC manifest.file=manifest.mf meta.inf.dir=${src.dir}/META-INF mkdist.disabled=false platform.active=default_platform +project.Flease=../flease +project.XtreemFS-foundation=../foundation +reference.Flease.jar=${project.Flease}/dist/Flease.jar +reference.XtreemFS-foundation.jar=${project.XtreemFS-foundation}/dist/Foundation.jar run.classpath=\ ${javac.classpath}:\ ${build.classes.dir} diff --git a/java/servers/nbproject/project.xml b/java/servers/nbproject/project.xml index 9049325bf..f108ba503 100644 --- a/java/servers/nbproject/project.xml +++ b/java/servers/nbproject/project.xml @@ -1,5 +1,4 @@ - - + org.netbeans.modules.java.j2seproject @@ -12,6 +11,23 @@ - + + + Flease + jar + + jar + clean + jar + + + XtreemFS-foundation + jar + + jar + clean + jar + + diff --git a/java/servers/src/org/xtreemfs/mrc/operations/SetXAttrOperation.java b/java/servers/src/org/xtreemfs/mrc/operations/SetXAttrOperation.java index cd2ecd349..67585546b 100644 --- a/java/servers/src/org/xtreemfs/mrc/operations/SetXAttrOperation.java +++ b/java/servers/src/org/xtreemfs/mrc/operations/SetXAttrOperation.java @@ -65,7 +65,7 @@ public class SetXAttrOperation extends MRCOperation { // if the attribute is a system attribute, set it final String attrKey = rqArgs.getName(); - final byte[] attrVal = rqArgs.hasValueBytes() ? rqArgs.getValueBytes().toByteArray() + final byte[] attrVal = rqArgs.hasValueBytesString() ? rqArgs.getValueBytesString().toByteArray() : rqArgs.hasValue() ? rqArgs.getValue().getBytes() : null; // set a system attribute diff --git a/java/servers/src/org/xtreemfs/pbrpc/generatedinterfaces/Common.java b/java/servers/src/org/xtreemfs/pbrpc/generatedinterfaces/Common.java index dff24d692..aafb22c08 100644 --- a/java/servers/src/org/xtreemfs/pbrpc/generatedinterfaces/Common.java +++ b/java/servers/src/org/xtreemfs/pbrpc/generatedinterfaces/Common.java @@ -8,198 +8,277 @@ public final class Common { public static void registerAllExtensions( com.google.protobuf.ExtensionRegistry registry) { } + public interface emptyRequestOrBuilder + extends com.google.protobuf.MessageOrBuilder { + } + /** + * Protobuf type {@code xtreemfs.pbrpc.emptyRequest} + * + *
+   * Dummy message for requests without parameters.
+   * The RPC implementation sends an empty message block.
+   * 
+ */ public static final class emptyRequest extends - com.google.protobuf.GeneratedMessage { + com.google.protobuf.GeneratedMessage + implements emptyRequestOrBuilder { // Use emptyRequest.newBuilder() to construct. - private emptyRequest() { - initFields(); + private emptyRequest(com.google.protobuf.GeneratedMessage.Builder builder) { + super(builder); + this.unknownFields = builder.getUnknownFields(); } - private emptyRequest(boolean noInit) {} - + private emptyRequest(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); } + private static final emptyRequest defaultInstance; public static emptyRequest getDefaultInstance() { return defaultInstance; } - + public emptyRequest getDefaultInstanceForType() { return defaultInstance; } - + + private final com.google.protobuf.UnknownFieldSet unknownFields; + @java.lang.Override + public final com.google.protobuf.UnknownFieldSet + getUnknownFields() { + return this.unknownFields; + } + private emptyRequest( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + initFields(); + com.google.protobuf.UnknownFieldSet.Builder unknownFields = + com.google.protobuf.UnknownFieldSet.newBuilder(); + try { + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch (tag) { + case 0: + done = true; + break; + default: { + if (!parseUnknownField(input, unknownFields, + extensionRegistry, tag)) { + done = true; + } + break; + } + } + } + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(this); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException( + e.getMessage()).setUnfinishedMessage(this); + } finally { + this.unknownFields = unknownFields.build(); + makeExtensionsImmutable(); + } + } public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { return org.xtreemfs.pbrpc.generatedinterfaces.Common.internal_static_xtreemfs_pbrpc_emptyRequest_descriptor; } - + protected com.google.protobuf.GeneratedMessage.FieldAccessorTable internalGetFieldAccessorTable() { - return org.xtreemfs.pbrpc.generatedinterfaces.Common.internal_static_xtreemfs_pbrpc_emptyRequest_fieldAccessorTable; + return org.xtreemfs.pbrpc.generatedinterfaces.Common.internal_static_xtreemfs_pbrpc_emptyRequest_fieldAccessorTable + .ensureFieldAccessorsInitialized( + org.xtreemfs.pbrpc.generatedinterfaces.Common.emptyRequest.class, org.xtreemfs.pbrpc.generatedinterfaces.Common.emptyRequest.Builder.class); } - + + public static com.google.protobuf.Parser PARSER = + new com.google.protobuf.AbstractParser() { + public emptyRequest parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return new emptyRequest(input, extensionRegistry); + } + }; + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; + } + private void initFields() { } + private byte memoizedIsInitialized = -1; public final boolean isInitialized() { + byte isInitialized = memoizedIsInitialized; + if (isInitialized != -1) return isInitialized == 1; + + memoizedIsInitialized = 1; return true; } - + public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException { getSerializedSize(); getUnknownFields().writeTo(output); } - + private int memoizedSerializedSize = -1; public int getSerializedSize() { int size = memoizedSerializedSize; if (size != -1) return size; - + size = 0; size += getUnknownFields().getSerializedSize(); memoizedSerializedSize = size; return size; } - + + private static final long serialVersionUID = 0L; + @java.lang.Override + protected java.lang.Object writeReplace() + throws java.io.ObjectStreamException { + return super.writeReplace(); + } + public static org.xtreemfs.pbrpc.generatedinterfaces.Common.emptyRequest parseFrom( com.google.protobuf.ByteString data) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data).buildParsed(); + return PARSER.parseFrom(data); } public static org.xtreemfs.pbrpc.generatedinterfaces.Common.emptyRequest parseFrom( com.google.protobuf.ByteString data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(data, extensionRegistry); } public static org.xtreemfs.pbrpc.generatedinterfaces.Common.emptyRequest parseFrom(byte[] data) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data).buildParsed(); + return PARSER.parseFrom(data); } public static org.xtreemfs.pbrpc.generatedinterfaces.Common.emptyRequest parseFrom( byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(data, extensionRegistry); } public static org.xtreemfs.pbrpc.generatedinterfaces.Common.emptyRequest parseFrom(java.io.InputStream input) throws java.io.IOException { - return newBuilder().mergeFrom(input).buildParsed(); + return PARSER.parseFrom(input); } public static org.xtreemfs.pbrpc.generatedinterfaces.Common.emptyRequest parseFrom( java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - return newBuilder().mergeFrom(input, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(input, extensionRegistry); } public static org.xtreemfs.pbrpc.generatedinterfaces.Common.emptyRequest parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException { - Builder builder = newBuilder(); - if (builder.mergeDelimitedFrom(input)) { - return builder.buildParsed(); - } else { - return null; - } + return PARSER.parseDelimitedFrom(input); } public static org.xtreemfs.pbrpc.generatedinterfaces.Common.emptyRequest parseDelimitedFrom( java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - Builder builder = newBuilder(); - if (builder.mergeDelimitedFrom(input, extensionRegistry)) { - return builder.buildParsed(); - } else { - return null; - } + return PARSER.parseDelimitedFrom(input, extensionRegistry); } public static org.xtreemfs.pbrpc.generatedinterfaces.Common.emptyRequest parseFrom( com.google.protobuf.CodedInputStream input) throws java.io.IOException { - return newBuilder().mergeFrom(input).buildParsed(); + return PARSER.parseFrom(input); } public static org.xtreemfs.pbrpc.generatedinterfaces.Common.emptyRequest parseFrom( com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - return newBuilder().mergeFrom(input, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(input, extensionRegistry); } - + public static Builder newBuilder() { return Builder.create(); } public Builder newBuilderForType() { return newBuilder(); } public static Builder newBuilder(org.xtreemfs.pbrpc.generatedinterfaces.Common.emptyRequest prototype) { return newBuilder().mergeFrom(prototype); } public Builder toBuilder() { return newBuilder(this); } - + + @java.lang.Override + protected Builder newBuilderForType( + com.google.protobuf.GeneratedMessage.BuilderParent parent) { + Builder builder = new Builder(parent); + return builder; + } + /** + * Protobuf type {@code xtreemfs.pbrpc.emptyRequest} + * + *
+     * Dummy message for requests without parameters.
+     * The RPC implementation sends an empty message block.
+     * 
+ */ public static final class Builder extends - com.google.protobuf.GeneratedMessage.Builder { - private org.xtreemfs.pbrpc.generatedinterfaces.Common.emptyRequest result; - + com.google.protobuf.GeneratedMessage.Builder + implements org.xtreemfs.pbrpc.generatedinterfaces.Common.emptyRequestOrBuilder { + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return org.xtreemfs.pbrpc.generatedinterfaces.Common.internal_static_xtreemfs_pbrpc_emptyRequest_descriptor; + } + + protected com.google.protobuf.GeneratedMessage.FieldAccessorTable + internalGetFieldAccessorTable() { + return org.xtreemfs.pbrpc.generatedinterfaces.Common.internal_static_xtreemfs_pbrpc_emptyRequest_fieldAccessorTable + .ensureFieldAccessorsInitialized( + org.xtreemfs.pbrpc.generatedinterfaces.Common.emptyRequest.class, org.xtreemfs.pbrpc.generatedinterfaces.Common.emptyRequest.Builder.class); + } + // Construct using org.xtreemfs.pbrpc.generatedinterfaces.Common.emptyRequest.newBuilder() - private Builder() {} - - private static Builder create() { - Builder builder = new Builder(); - builder.result = new org.xtreemfs.pbrpc.generatedinterfaces.Common.emptyRequest(); - return builder; + private Builder() { + maybeForceBuilderInitialization(); } - - protected org.xtreemfs.pbrpc.generatedinterfaces.Common.emptyRequest internalGetResult() { - return result; + + private Builder( + com.google.protobuf.GeneratedMessage.BuilderParent parent) { + super(parent); + maybeForceBuilderInitialization(); } - - public Builder clear() { - if (result == null) { - throw new IllegalStateException( - "Cannot call clear() after build()."); + private void maybeForceBuilderInitialization() { + if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) { } - result = new org.xtreemfs.pbrpc.generatedinterfaces.Common.emptyRequest(); + } + private static Builder create() { + return new Builder(); + } + + public Builder clear() { + super.clear(); return this; } - + public Builder clone() { - return create().mergeFrom(result); + return create().mergeFrom(buildPartial()); } - + public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() { - return org.xtreemfs.pbrpc.generatedinterfaces.Common.emptyRequest.getDescriptor(); + return org.xtreemfs.pbrpc.generatedinterfaces.Common.internal_static_xtreemfs_pbrpc_emptyRequest_descriptor; } - + public org.xtreemfs.pbrpc.generatedinterfaces.Common.emptyRequest getDefaultInstanceForType() { return org.xtreemfs.pbrpc.generatedinterfaces.Common.emptyRequest.getDefaultInstance(); } - - public boolean isInitialized() { - return result.isInitialized(); - } + public org.xtreemfs.pbrpc.generatedinterfaces.Common.emptyRequest build() { - if (result != null && !isInitialized()) { + org.xtreemfs.pbrpc.generatedinterfaces.Common.emptyRequest result = buildPartial(); + if (!result.isInitialized()) { throw newUninitializedMessageException(result); } - return buildPartial(); - } - - private org.xtreemfs.pbrpc.generatedinterfaces.Common.emptyRequest buildParsed() - throws com.google.protobuf.InvalidProtocolBufferException { - if (!isInitialized()) { - throw newUninitializedMessageException( - result).asInvalidProtocolBufferException(); - } - return buildPartial(); + return result; } - + public org.xtreemfs.pbrpc.generatedinterfaces.Common.emptyRequest buildPartial() { - if (result == null) { - throw new IllegalStateException( - "build() has already been called on this Builder."); - } - org.xtreemfs.pbrpc.generatedinterfaces.Common.emptyRequest returnMe = result; - result = null; - return returnMe; + org.xtreemfs.pbrpc.generatedinterfaces.Common.emptyRequest result = new org.xtreemfs.pbrpc.generatedinterfaces.Common.emptyRequest(this); + onBuilt(); + return result; } - + public Builder mergeFrom(com.google.protobuf.Message other) { if (other instanceof org.xtreemfs.pbrpc.generatedinterfaces.Common.emptyRequest) { return mergeFrom((org.xtreemfs.pbrpc.generatedinterfaces.Common.emptyRequest)other); @@ -208,243 +287,317 @@ public final class Common { return this; } } - + public Builder mergeFrom(org.xtreemfs.pbrpc.generatedinterfaces.Common.emptyRequest other) { if (other == org.xtreemfs.pbrpc.generatedinterfaces.Common.emptyRequest.getDefaultInstance()) return this; this.mergeUnknownFields(other.getUnknownFields()); return this; } - + + public final boolean isInitialized() { + return true; + } + public Builder mergeFrom( com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - com.google.protobuf.UnknownFieldSet.Builder unknownFields = - com.google.protobuf.UnknownFieldSet.newBuilder( - this.getUnknownFields()); - while (true) { - int tag = input.readTag(); - switch (tag) { - case 0: - this.setUnknownFields(unknownFields.build()); - return this; - default: { - if (!parseUnknownField(input, unknownFields, - extensionRegistry, tag)) { - this.setUnknownFields(unknownFields.build()); - return this; - } - break; - } + org.xtreemfs.pbrpc.generatedinterfaces.Common.emptyRequest parsedMessage = null; + try { + parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + parsedMessage = (org.xtreemfs.pbrpc.generatedinterfaces.Common.emptyRequest) e.getUnfinishedMessage(); + throw e; + } finally { + if (parsedMessage != null) { + mergeFrom(parsedMessage); } } + return this; } - - + // @@protoc_insertion_point(builder_scope:xtreemfs.pbrpc.emptyRequest) } - + static { defaultInstance = new emptyRequest(true); - org.xtreemfs.pbrpc.generatedinterfaces.Common.internalForceInit(); defaultInstance.initFields(); } - + // @@protoc_insertion_point(class_scope:xtreemfs.pbrpc.emptyRequest) } - + + public interface emptyResponseOrBuilder + extends com.google.protobuf.MessageOrBuilder { + } + /** + * Protobuf type {@code xtreemfs.pbrpc.emptyResponse} + * + *
+   * Dummy message for responses without content.
+   * The RPC implementation sends an empty message block.
+   * 
+ */ public static final class emptyResponse extends - com.google.protobuf.GeneratedMessage { + com.google.protobuf.GeneratedMessage + implements emptyResponseOrBuilder { // Use emptyResponse.newBuilder() to construct. - private emptyResponse() { - initFields(); + private emptyResponse(com.google.protobuf.GeneratedMessage.Builder builder) { + super(builder); + this.unknownFields = builder.getUnknownFields(); } - private emptyResponse(boolean noInit) {} - + private emptyResponse(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); } + private static final emptyResponse defaultInstance; public static emptyResponse getDefaultInstance() { return defaultInstance; } - + public emptyResponse getDefaultInstanceForType() { return defaultInstance; } - + + private final com.google.protobuf.UnknownFieldSet unknownFields; + @java.lang.Override + public final com.google.protobuf.UnknownFieldSet + getUnknownFields() { + return this.unknownFields; + } + private emptyResponse( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + initFields(); + com.google.protobuf.UnknownFieldSet.Builder unknownFields = + com.google.protobuf.UnknownFieldSet.newBuilder(); + try { + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch (tag) { + case 0: + done = true; + break; + default: { + if (!parseUnknownField(input, unknownFields, + extensionRegistry, tag)) { + done = true; + } + break; + } + } + } + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(this); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException( + e.getMessage()).setUnfinishedMessage(this); + } finally { + this.unknownFields = unknownFields.build(); + makeExtensionsImmutable(); + } + } public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { return org.xtreemfs.pbrpc.generatedinterfaces.Common.internal_static_xtreemfs_pbrpc_emptyResponse_descriptor; } - + protected com.google.protobuf.GeneratedMessage.FieldAccessorTable internalGetFieldAccessorTable() { - return org.xtreemfs.pbrpc.generatedinterfaces.Common.internal_static_xtreemfs_pbrpc_emptyResponse_fieldAccessorTable; + return org.xtreemfs.pbrpc.generatedinterfaces.Common.internal_static_xtreemfs_pbrpc_emptyResponse_fieldAccessorTable + .ensureFieldAccessorsInitialized( + org.xtreemfs.pbrpc.generatedinterfaces.Common.emptyResponse.class, org.xtreemfs.pbrpc.generatedinterfaces.Common.emptyResponse.Builder.class); } - + + public static com.google.protobuf.Parser PARSER = + new com.google.protobuf.AbstractParser() { + public emptyResponse parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return new emptyResponse(input, extensionRegistry); + } + }; + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; + } + private void initFields() { } + private byte memoizedIsInitialized = -1; public final boolean isInitialized() { + byte isInitialized = memoizedIsInitialized; + if (isInitialized != -1) return isInitialized == 1; + + memoizedIsInitialized = 1; return true; } - + public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException { getSerializedSize(); getUnknownFields().writeTo(output); } - + private int memoizedSerializedSize = -1; public int getSerializedSize() { int size = memoizedSerializedSize; if (size != -1) return size; - + size = 0; size += getUnknownFields().getSerializedSize(); memoizedSerializedSize = size; return size; } - + + private static final long serialVersionUID = 0L; + @java.lang.Override + protected java.lang.Object writeReplace() + throws java.io.ObjectStreamException { + return super.writeReplace(); + } + public static org.xtreemfs.pbrpc.generatedinterfaces.Common.emptyResponse parseFrom( com.google.protobuf.ByteString data) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data).buildParsed(); + return PARSER.parseFrom(data); } public static org.xtreemfs.pbrpc.generatedinterfaces.Common.emptyResponse parseFrom( com.google.protobuf.ByteString data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(data, extensionRegistry); } public static org.xtreemfs.pbrpc.generatedinterfaces.Common.emptyResponse parseFrom(byte[] data) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data).buildParsed(); + return PARSER.parseFrom(data); } public static org.xtreemfs.pbrpc.generatedinterfaces.Common.emptyResponse parseFrom( byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(data, extensionRegistry); } public static org.xtreemfs.pbrpc.generatedinterfaces.Common.emptyResponse parseFrom(java.io.InputStream input) throws java.io.IOException { - return newBuilder().mergeFrom(input).buildParsed(); + return PARSER.parseFrom(input); } public static org.xtreemfs.pbrpc.generatedinterfaces.Common.emptyResponse parseFrom( java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - return newBuilder().mergeFrom(input, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(input, extensionRegistry); } public static org.xtreemfs.pbrpc.generatedinterfaces.Common.emptyResponse parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException { - Builder builder = newBuilder(); - if (builder.mergeDelimitedFrom(input)) { - return builder.buildParsed(); - } else { - return null; - } + return PARSER.parseDelimitedFrom(input); } public static org.xtreemfs.pbrpc.generatedinterfaces.Common.emptyResponse parseDelimitedFrom( java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - Builder builder = newBuilder(); - if (builder.mergeDelimitedFrom(input, extensionRegistry)) { - return builder.buildParsed(); - } else { - return null; - } + return PARSER.parseDelimitedFrom(input, extensionRegistry); } public static org.xtreemfs.pbrpc.generatedinterfaces.Common.emptyResponse parseFrom( com.google.protobuf.CodedInputStream input) throws java.io.IOException { - return newBuilder().mergeFrom(input).buildParsed(); + return PARSER.parseFrom(input); } public static org.xtreemfs.pbrpc.generatedinterfaces.Common.emptyResponse parseFrom( com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - return newBuilder().mergeFrom(input, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(input, extensionRegistry); } - + public static Builder newBuilder() { return Builder.create(); } public Builder newBuilderForType() { return newBuilder(); } public static Builder newBuilder(org.xtreemfs.pbrpc.generatedinterfaces.Common.emptyResponse prototype) { return newBuilder().mergeFrom(prototype); } public Builder toBuilder() { return newBuilder(this); } - + + @java.lang.Override + protected Builder newBuilderForType( + com.google.protobuf.GeneratedMessage.BuilderParent parent) { + Builder builder = new Builder(parent); + return builder; + } + /** + * Protobuf type {@code xtreemfs.pbrpc.emptyResponse} + * + *
+     * Dummy message for responses without content.
+     * The RPC implementation sends an empty message block.
+     * 
+ */ public static final class Builder extends - com.google.protobuf.GeneratedMessage.Builder { - private org.xtreemfs.pbrpc.generatedinterfaces.Common.emptyResponse result; - + com.google.protobuf.GeneratedMessage.Builder + implements org.xtreemfs.pbrpc.generatedinterfaces.Common.emptyResponseOrBuilder { + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return org.xtreemfs.pbrpc.generatedinterfaces.Common.internal_static_xtreemfs_pbrpc_emptyResponse_descriptor; + } + + protected com.google.protobuf.GeneratedMessage.FieldAccessorTable + internalGetFieldAccessorTable() { + return org.xtreemfs.pbrpc.generatedinterfaces.Common.internal_static_xtreemfs_pbrpc_emptyResponse_fieldAccessorTable + .ensureFieldAccessorsInitialized( + org.xtreemfs.pbrpc.generatedinterfaces.Common.emptyResponse.class, org.xtreemfs.pbrpc.generatedinterfaces.Common.emptyResponse.Builder.class); + } + // Construct using org.xtreemfs.pbrpc.generatedinterfaces.Common.emptyResponse.newBuilder() - private Builder() {} - - private static Builder create() { - Builder builder = new Builder(); - builder.result = new org.xtreemfs.pbrpc.generatedinterfaces.Common.emptyResponse(); - return builder; + private Builder() { + maybeForceBuilderInitialization(); } - - protected org.xtreemfs.pbrpc.generatedinterfaces.Common.emptyResponse internalGetResult() { - return result; + + private Builder( + com.google.protobuf.GeneratedMessage.BuilderParent parent) { + super(parent); + maybeForceBuilderInitialization(); } - - public Builder clear() { - if (result == null) { - throw new IllegalStateException( - "Cannot call clear() after build()."); + private void maybeForceBuilderInitialization() { + if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) { } - result = new org.xtreemfs.pbrpc.generatedinterfaces.Common.emptyResponse(); + } + private static Builder create() { + return new Builder(); + } + + public Builder clear() { + super.clear(); return this; } - + public Builder clone() { - return create().mergeFrom(result); + return create().mergeFrom(buildPartial()); } - + public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() { - return org.xtreemfs.pbrpc.generatedinterfaces.Common.emptyResponse.getDescriptor(); + return org.xtreemfs.pbrpc.generatedinterfaces.Common.internal_static_xtreemfs_pbrpc_emptyResponse_descriptor; } - + public org.xtreemfs.pbrpc.generatedinterfaces.Common.emptyResponse getDefaultInstanceForType() { return org.xtreemfs.pbrpc.generatedinterfaces.Common.emptyResponse.getDefaultInstance(); } - - public boolean isInitialized() { - return result.isInitialized(); - } + public org.xtreemfs.pbrpc.generatedinterfaces.Common.emptyResponse build() { - if (result != null && !isInitialized()) { + org.xtreemfs.pbrpc.generatedinterfaces.Common.emptyResponse result = buildPartial(); + if (!result.isInitialized()) { throw newUninitializedMessageException(result); } - return buildPartial(); - } - - private org.xtreemfs.pbrpc.generatedinterfaces.Common.emptyResponse buildParsed() - throws com.google.protobuf.InvalidProtocolBufferException { - if (!isInitialized()) { - throw newUninitializedMessageException( - result).asInvalidProtocolBufferException(); - } - return buildPartial(); + return result; } - + public org.xtreemfs.pbrpc.generatedinterfaces.Common.emptyResponse buildPartial() { - if (result == null) { - throw new IllegalStateException( - "build() has already been called on this Builder."); - } - org.xtreemfs.pbrpc.generatedinterfaces.Common.emptyResponse returnMe = result; - result = null; - return returnMe; + org.xtreemfs.pbrpc.generatedinterfaces.Common.emptyResponse result = new org.xtreemfs.pbrpc.generatedinterfaces.Common.emptyResponse(this); + onBuilt(); + return result; } - + public Builder mergeFrom(com.google.protobuf.Message other) { if (other instanceof org.xtreemfs.pbrpc.generatedinterfaces.Common.emptyResponse) { return mergeFrom((org.xtreemfs.pbrpc.generatedinterfaces.Common.emptyResponse)other); @@ -453,51 +606,46 @@ public final class Common { return this; } } - + public Builder mergeFrom(org.xtreemfs.pbrpc.generatedinterfaces.Common.emptyResponse other) { if (other == org.xtreemfs.pbrpc.generatedinterfaces.Common.emptyResponse.getDefaultInstance()) return this; this.mergeUnknownFields(other.getUnknownFields()); return this; } - + + public final boolean isInitialized() { + return true; + } + public Builder mergeFrom( com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - com.google.protobuf.UnknownFieldSet.Builder unknownFields = - com.google.protobuf.UnknownFieldSet.newBuilder( - this.getUnknownFields()); - while (true) { - int tag = input.readTag(); - switch (tag) { - case 0: - this.setUnknownFields(unknownFields.build()); - return this; - default: { - if (!parseUnknownField(input, unknownFields, - extensionRegistry, tag)) { - this.setUnknownFields(unknownFields.build()); - return this; - } - break; - } + org.xtreemfs.pbrpc.generatedinterfaces.Common.emptyResponse parsedMessage = null; + try { + parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + parsedMessage = (org.xtreemfs.pbrpc.generatedinterfaces.Common.emptyResponse) e.getUnfinishedMessage(); + throw e; + } finally { + if (parsedMessage != null) { + mergeFrom(parsedMessage); } } + return this; } - - + // @@protoc_insertion_point(builder_scope:xtreemfs.pbrpc.emptyResponse) } - + static { defaultInstance = new emptyResponse(true); - org.xtreemfs.pbrpc.generatedinterfaces.Common.internalForceInit(); defaultInstance.initFields(); } - + // @@protoc_insertion_point(class_scope:xtreemfs.pbrpc.emptyResponse) } - + private static com.google.protobuf.Descriptors.Descriptor internal_static_xtreemfs_pbrpc_emptyRequest_descriptor; private static @@ -508,7 +656,7 @@ public final class Common { private static com.google.protobuf.GeneratedMessage.FieldAccessorTable internal_static_xtreemfs_pbrpc_emptyResponse_fieldAccessorTable; - + public static com.google.protobuf.Descriptors.FileDescriptor getDescriptor() { return descriptor; @@ -531,17 +679,13 @@ public final class Common { internal_static_xtreemfs_pbrpc_emptyRequest_fieldAccessorTable = new com.google.protobuf.GeneratedMessage.FieldAccessorTable( internal_static_xtreemfs_pbrpc_emptyRequest_descriptor, - new java.lang.String[] { }, - org.xtreemfs.pbrpc.generatedinterfaces.Common.emptyRequest.class, - org.xtreemfs.pbrpc.generatedinterfaces.Common.emptyRequest.Builder.class); + new java.lang.String[] { }); internal_static_xtreemfs_pbrpc_emptyResponse_descriptor = getDescriptor().getMessageTypes().get(1); internal_static_xtreemfs_pbrpc_emptyResponse_fieldAccessorTable = new com.google.protobuf.GeneratedMessage.FieldAccessorTable( internal_static_xtreemfs_pbrpc_emptyResponse_descriptor, - new java.lang.String[] { }, - org.xtreemfs.pbrpc.generatedinterfaces.Common.emptyResponse.class, - org.xtreemfs.pbrpc.generatedinterfaces.Common.emptyResponse.Builder.class); + new java.lang.String[] { }); return null; } }; @@ -550,8 +694,6 @@ public final class Common { new com.google.protobuf.Descriptors.FileDescriptor[] { }, assigner); } - - public static void internalForceInit() {} - + // @@protoc_insertion_point(outer_class_scope) } diff --git a/java/servers/src/org/xtreemfs/pbrpc/generatedinterfaces/DIR.java b/java/servers/src/org/xtreemfs/pbrpc/generatedinterfaces/DIR.java index 784b7408a..d91409758 100644 --- a/java/servers/src/org/xtreemfs/pbrpc/generatedinterfaces/DIR.java +++ b/java/servers/src/org/xtreemfs/pbrpc/generatedinterfaces/DIR.java @@ -8,18 +8,65 @@ public final class DIR { public static void registerAllExtensions( com.google.protobuf.ExtensionRegistry registry) { } + /** + * Protobuf enum {@code xtreemfs.pbrpc.ServiceType} + */ public enum ServiceType implements com.google.protobuf.ProtocolMessageEnum { + /** + * SERVICE_TYPE_MIXED = 0; + * + *
+     * Returns a list of all service types.
+     * 
+ */ SERVICE_TYPE_MIXED(0, 0), + /** + * SERVICE_TYPE_MRC = 1; + */ SERVICE_TYPE_MRC(1, 1), + /** + * SERVICE_TYPE_OSD = 2; + */ SERVICE_TYPE_OSD(2, 2), + /** + * SERVICE_TYPE_VOLUME = 3; + */ SERVICE_TYPE_VOLUME(3, 3), + /** + * SERVICE_TYPE_DIR = 4; + */ SERVICE_TYPE_DIR(4, 4), ; - - + + /** + * SERVICE_TYPE_MIXED = 0; + * + *
+     * Returns a list of all service types.
+     * 
+ */ + public static final int SERVICE_TYPE_MIXED_VALUE = 0; + /** + * SERVICE_TYPE_MRC = 1; + */ + public static final int SERVICE_TYPE_MRC_VALUE = 1; + /** + * SERVICE_TYPE_OSD = 2; + */ + public static final int SERVICE_TYPE_OSD_VALUE = 2; + /** + * SERVICE_TYPE_VOLUME = 3; + */ + public static final int SERVICE_TYPE_VOLUME_VALUE = 3; + /** + * SERVICE_TYPE_DIR = 4; + */ + public static final int SERVICE_TYPE_DIR_VALUE = 4; + + public final int getNumber() { return value; } - + public static ServiceType valueOf(int value) { switch (value) { case 0: return SERVICE_TYPE_MIXED; @@ -30,7 +77,7 @@ public final class DIR { default: return null; } } - + public static com.google.protobuf.Internal.EnumLiteMap internalGetValueMap() { return internalValueMap; @@ -39,10 +86,10 @@ public final class DIR { internalValueMap = new com.google.protobuf.Internal.EnumLiteMap() { public ServiceType findValueByNumber(int number) { - return ServiceType.valueOf(number) - ; } + return ServiceType.valueOf(number); + } }; - + public final com.google.protobuf.Descriptors.EnumValueDescriptor getValueDescriptor() { return getDescriptor().getValues().get(index); @@ -55,10 +102,9 @@ public final class DIR { getDescriptor() { return org.xtreemfs.pbrpc.generatedinterfaces.DIR.getDescriptor().getEnumTypes().get(0); } - - private static final ServiceType[] VALUES = { - SERVICE_TYPE_MIXED, SERVICE_TYPE_MRC, SERVICE_TYPE_OSD, SERVICE_TYPE_VOLUME, SERVICE_TYPE_DIR, - }; + + private static final ServiceType[] VALUES = values(); + public static ServiceType valueOf( com.google.protobuf.Descriptors.EnumValueDescriptor desc) { if (desc.getType() != getDescriptor()) { @@ -67,30 +113,79 @@ public final class DIR { } return VALUES[desc.getIndex()]; } + private final int index; private final int value; + private ServiceType(int index, int value) { this.index = index; this.value = value; } - - static { - org.xtreemfs.pbrpc.generatedinterfaces.DIR.getDescriptor(); - } - + // @@protoc_insertion_point(enum_scope:xtreemfs.pbrpc.ServiceType) } - + + /** + * Protobuf enum {@code xtreemfs.pbrpc.ServiceStatus} + */ public enum ServiceStatus implements com.google.protobuf.ProtocolMessageEnum { + /** + * SERVICE_STATUS_AVAIL = 0; + * + *
+     * Service is available.
+     * 
+ */ SERVICE_STATUS_AVAIL(0, 0), + /** + * SERVICE_STATUS_TO_BE_REMOVED = 1; + * + *
+     * Service (OSD) will be removed, new files are
+     * not allocated to this OSD.
+     * 
+ */ SERVICE_STATUS_TO_BE_REMOVED(1, 1), + /** + * SERVICE_STATUS_REMOVED = 2; + * + *
+     * Service was removed permanently, data is lost.
+     * 
+ */ SERVICE_STATUS_REMOVED(2, 2), ; - - + + /** + * SERVICE_STATUS_AVAIL = 0; + * + *
+     * Service is available.
+     * 
+ */ + public static final int SERVICE_STATUS_AVAIL_VALUE = 0; + /** + * SERVICE_STATUS_TO_BE_REMOVED = 1; + * + *
+     * Service (OSD) will be removed, new files are
+     * not allocated to this OSD.
+     * 
+ */ + public static final int SERVICE_STATUS_TO_BE_REMOVED_VALUE = 1; + /** + * SERVICE_STATUS_REMOVED = 2; + * + *
+     * Service was removed permanently, data is lost.
+     * 
+ */ + public static final int SERVICE_STATUS_REMOVED_VALUE = 2; + + public final int getNumber() { return value; } - + public static ServiceStatus valueOf(int value) { switch (value) { case 0: return SERVICE_STATUS_AVAIL; @@ -99,7 +194,7 @@ public final class DIR { default: return null; } } - + public static com.google.protobuf.Internal.EnumLiteMap internalGetValueMap() { return internalValueMap; @@ -108,10 +203,10 @@ public final class DIR { internalValueMap = new com.google.protobuf.Internal.EnumLiteMap() { public ServiceStatus findValueByNumber(int number) { - return ServiceStatus.valueOf(number) - ; } + return ServiceStatus.valueOf(number); + } }; - + public final com.google.protobuf.Descriptors.EnumValueDescriptor getValueDescriptor() { return getDescriptor().getValues().get(index); @@ -124,10 +219,9 @@ public final class DIR { getDescriptor() { return org.xtreemfs.pbrpc.generatedinterfaces.DIR.getDescriptor().getEnumTypes().get(1); } - - private static final ServiceStatus[] VALUES = { - SERVICE_STATUS_AVAIL, SERVICE_STATUS_TO_BE_REMOVED, SERVICE_STATUS_REMOVED, - }; + + private static final ServiceStatus[] VALUES = values(); + public static ServiceStatus valueOf( com.google.protobuf.Descriptors.EnumValueDescriptor desc) { if (desc.getType() != getDescriptor()) { @@ -136,332 +230,1024 @@ public final class DIR { } return VALUES[desc.getIndex()]; } + private final int index; private final int value; + private ServiceStatus(int index, int value) { this.index = index; this.value = value; } - - static { - org.xtreemfs.pbrpc.generatedinterfaces.DIR.getDescriptor(); - } - + // @@protoc_insertion_point(enum_scope:xtreemfs.pbrpc.ServiceStatus) } - + + public interface AddressMappingOrBuilder + extends com.google.protobuf.MessageOrBuilder { + + // required string uuid = 1; + /** + * required string uuid = 1; + * + *
+     * UUID being mapped.
+     * 
+ */ + boolean hasUuid(); + /** + * required string uuid = 1; + * + *
+     * UUID being mapped.
+     * 
+ */ + java.lang.String getUuid(); + /** + * required string uuid = 1; + * + *
+     * UUID being mapped.
+     * 
+ */ + com.google.protobuf.ByteString + getUuidBytes(); + + // required fixed64 version = 2; + /** + * required fixed64 version = 2; + * + *
+     * Version of this record.
+     * 
+ */ + boolean hasVersion(); + /** + * required fixed64 version = 2; + * + *
+     * Version of this record.
+     * 
+ */ + long getVersion(); + + // required string protocol = 3; + /** + * required string protocol = 3; + * + *
+     * Protocol, see org.xtreemfs.foundation.pbrpc.Schemes for values.
+     * 
+ */ + boolean hasProtocol(); + /** + * required string protocol = 3; + * + *
+     * Protocol, see org.xtreemfs.foundation.pbrpc.Schemes for values.
+     * 
+ */ + java.lang.String getProtocol(); + /** + * required string protocol = 3; + * + *
+     * Protocol, see org.xtreemfs.foundation.pbrpc.Schemes for values.
+     * 
+ */ + com.google.protobuf.ByteString + getProtocolBytes(); + + // required string address = 4; + /** + * required string address = 4; + * + *
+     * FQDN or IP address of the server.
+     * 
+ */ + boolean hasAddress(); + /** + * required string address = 4; + * + *
+     * FQDN or IP address of the server.
+     * 
+ */ + java.lang.String getAddress(); + /** + * required string address = 4; + * + *
+     * FQDN or IP address of the server.
+     * 
+ */ + com.google.protobuf.ByteString + getAddressBytes(); + + // required fixed32 port = 5; + /** + * required fixed32 port = 5; + * + *
+     * TCP/UDP port number.
+     * 
+ */ + boolean hasPort(); + /** + * required fixed32 port = 5; + * + *
+     * TCP/UDP port number.
+     * 
+ */ + int getPort(); + + // required string match_network = 6; + /** + * required string match_network = 6; + * + *
+     * Matching network, unused at the moment.
+     * Must be "*".
+     * 
+ */ + boolean hasMatchNetwork(); + /** + * required string match_network = 6; + * + *
+     * Matching network, unused at the moment.
+     * Must be "*".
+     * 
+ */ + java.lang.String getMatchNetwork(); + /** + * required string match_network = 6; + * + *
+     * Matching network, unused at the moment.
+     * Must be "*".
+     * 
+ */ + com.google.protobuf.ByteString + getMatchNetworkBytes(); + + // required fixed32 ttl_s = 7; + /** + * required fixed32 ttl_s = 7; + * + *
+     * Time to live in seconds before the
+     * entry should be evicted from caches.
+     * 
+ */ + boolean hasTtlS(); + /** + * required fixed32 ttl_s = 7; + * + *
+     * Time to live in seconds before the
+     * entry should be evicted from caches.
+     * 
+ */ + int getTtlS(); + + // required string uri = 8; + /** + * required string uri = 8; + * + *
+     * URI, obsolete.
+     * 
+ */ + boolean hasUri(); + /** + * required string uri = 8; + * + *
+     * URI, obsolete.
+     * 
+ */ + java.lang.String getUri(); + /** + * required string uri = 8; + * + *
+     * URI, obsolete.
+     * 
+ */ + com.google.protobuf.ByteString + getUriBytes(); + } + /** + * Protobuf type {@code xtreemfs.pbrpc.AddressMapping} + * + *
+   * For each server UUID, at least one address mapping must exist.
+   * Each record maps a UUID to one FQDN or IP address and port.
+   * 
+ */ public static final class AddressMapping extends - com.google.protobuf.GeneratedMessage { + com.google.protobuf.GeneratedMessage + implements AddressMappingOrBuilder { // Use AddressMapping.newBuilder() to construct. - private AddressMapping() { - initFields(); + private AddressMapping(com.google.protobuf.GeneratedMessage.Builder builder) { + super(builder); + this.unknownFields = builder.getUnknownFields(); } - private AddressMapping(boolean noInit) {} - + private AddressMapping(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); } + private static final AddressMapping defaultInstance; public static AddressMapping getDefaultInstance() { return defaultInstance; } - + public AddressMapping getDefaultInstanceForType() { return defaultInstance; } - + + private final com.google.protobuf.UnknownFieldSet unknownFields; + @java.lang.Override + public final com.google.protobuf.UnknownFieldSet + getUnknownFields() { + return this.unknownFields; + } + private AddressMapping( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + initFields(); + int mutable_bitField0_ = 0; + com.google.protobuf.UnknownFieldSet.Builder unknownFields = + com.google.protobuf.UnknownFieldSet.newBuilder(); + try { + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch (tag) { + case 0: + done = true; + break; + default: { + if (!parseUnknownField(input, unknownFields, + extensionRegistry, tag)) { + done = true; + } + break; + } + case 10: { + bitField0_ |= 0x00000001; + uuid_ = input.readBytes(); + break; + } + case 17: { + bitField0_ |= 0x00000002; + version_ = input.readFixed64(); + break; + } + case 26: { + bitField0_ |= 0x00000004; + protocol_ = input.readBytes(); + break; + } + case 34: { + bitField0_ |= 0x00000008; + address_ = input.readBytes(); + break; + } + case 45: { + bitField0_ |= 0x00000010; + port_ = input.readFixed32(); + break; + } + case 50: { + bitField0_ |= 0x00000020; + matchNetwork_ = input.readBytes(); + break; + } + case 61: { + bitField0_ |= 0x00000040; + ttlS_ = input.readFixed32(); + break; + } + case 66: { + bitField0_ |= 0x00000080; + uri_ = input.readBytes(); + break; + } + } + } + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(this); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException( + e.getMessage()).setUnfinishedMessage(this); + } finally { + this.unknownFields = unknownFields.build(); + makeExtensionsImmutable(); + } + } public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { return org.xtreemfs.pbrpc.generatedinterfaces.DIR.internal_static_xtreemfs_pbrpc_AddressMapping_descriptor; } - + protected com.google.protobuf.GeneratedMessage.FieldAccessorTable internalGetFieldAccessorTable() { - return org.xtreemfs.pbrpc.generatedinterfaces.DIR.internal_static_xtreemfs_pbrpc_AddressMapping_fieldAccessorTable; + return org.xtreemfs.pbrpc.generatedinterfaces.DIR.internal_static_xtreemfs_pbrpc_AddressMapping_fieldAccessorTable + .ensureFieldAccessorsInitialized( + org.xtreemfs.pbrpc.generatedinterfaces.DIR.AddressMapping.class, org.xtreemfs.pbrpc.generatedinterfaces.DIR.AddressMapping.Builder.class); + } + + public static com.google.protobuf.Parser PARSER = + new com.google.protobuf.AbstractParser() { + public AddressMapping parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return new AddressMapping(input, extensionRegistry); + } + }; + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; } - + + private int bitField0_; // required string uuid = 1; public static final int UUID_FIELD_NUMBER = 1; - private boolean hasUuid; - private java.lang.String uuid_ = ""; - public boolean hasUuid() { return hasUuid; } - public java.lang.String getUuid() { return uuid_; } - + private java.lang.Object uuid_; + /** + * required string uuid = 1; + * + *
+     * UUID being mapped.
+     * 
+ */ + public boolean hasUuid() { + return ((bitField0_ & 0x00000001) == 0x00000001); + } + /** + * required string uuid = 1; + * + *
+     * UUID being mapped.
+     * 
+ */ + public java.lang.String getUuid() { + java.lang.Object ref = uuid_; + if (ref instanceof java.lang.String) { + return (java.lang.String) ref; + } else { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + if (bs.isValidUtf8()) { + uuid_ = s; + } + return s; + } + } + /** + * required string uuid = 1; + * + *
+     * UUID being mapped.
+     * 
+ */ + public com.google.protobuf.ByteString + getUuidBytes() { + java.lang.Object ref = uuid_; + if (ref instanceof java.lang.String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + uuid_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + // required fixed64 version = 2; public static final int VERSION_FIELD_NUMBER = 2; - private boolean hasVersion; - private long version_ = 0L; - public boolean hasVersion() { return hasVersion; } - public long getVersion() { return version_; } - + private long version_; + /** + * required fixed64 version = 2; + * + *
+     * Version of this record.
+     * 
+ */ + public boolean hasVersion() { + return ((bitField0_ & 0x00000002) == 0x00000002); + } + /** + * required fixed64 version = 2; + * + *
+     * Version of this record.
+     * 
+ */ + public long getVersion() { + return version_; + } + // required string protocol = 3; public static final int PROTOCOL_FIELD_NUMBER = 3; - private boolean hasProtocol; - private java.lang.String protocol_ = ""; - public boolean hasProtocol() { return hasProtocol; } - public java.lang.String getProtocol() { return protocol_; } - + private java.lang.Object protocol_; + /** + * required string protocol = 3; + * + *
+     * Protocol, see org.xtreemfs.foundation.pbrpc.Schemes for values.
+     * 
+ */ + public boolean hasProtocol() { + return ((bitField0_ & 0x00000004) == 0x00000004); + } + /** + * required string protocol = 3; + * + *
+     * Protocol, see org.xtreemfs.foundation.pbrpc.Schemes for values.
+     * 
+ */ + public java.lang.String getProtocol() { + java.lang.Object ref = protocol_; + if (ref instanceof java.lang.String) { + return (java.lang.String) ref; + } else { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + if (bs.isValidUtf8()) { + protocol_ = s; + } + return s; + } + } + /** + * required string protocol = 3; + * + *
+     * Protocol, see org.xtreemfs.foundation.pbrpc.Schemes for values.
+     * 
+ */ + public com.google.protobuf.ByteString + getProtocolBytes() { + java.lang.Object ref = protocol_; + if (ref instanceof java.lang.String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + protocol_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + // required string address = 4; public static final int ADDRESS_FIELD_NUMBER = 4; - private boolean hasAddress; - private java.lang.String address_ = ""; - public boolean hasAddress() { return hasAddress; } - public java.lang.String getAddress() { return address_; } - + private java.lang.Object address_; + /** + * required string address = 4; + * + *
+     * FQDN or IP address of the server.
+     * 
+ */ + public boolean hasAddress() { + return ((bitField0_ & 0x00000008) == 0x00000008); + } + /** + * required string address = 4; + * + *
+     * FQDN or IP address of the server.
+     * 
+ */ + public java.lang.String getAddress() { + java.lang.Object ref = address_; + if (ref instanceof java.lang.String) { + return (java.lang.String) ref; + } else { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + if (bs.isValidUtf8()) { + address_ = s; + } + return s; + } + } + /** + * required string address = 4; + * + *
+     * FQDN or IP address of the server.
+     * 
+ */ + public com.google.protobuf.ByteString + getAddressBytes() { + java.lang.Object ref = address_; + if (ref instanceof java.lang.String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + address_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + // required fixed32 port = 5; public static final int PORT_FIELD_NUMBER = 5; - private boolean hasPort; - private int port_ = 0; - public boolean hasPort() { return hasPort; } - public int getPort() { return port_; } - + private int port_; + /** + * required fixed32 port = 5; + * + *
+     * TCP/UDP port number.
+     * 
+ */ + public boolean hasPort() { + return ((bitField0_ & 0x00000010) == 0x00000010); + } + /** + * required fixed32 port = 5; + * + *
+     * TCP/UDP port number.
+     * 
+ */ + public int getPort() { + return port_; + } + // required string match_network = 6; public static final int MATCH_NETWORK_FIELD_NUMBER = 6; - private boolean hasMatchNetwork; - private java.lang.String matchNetwork_ = ""; - public boolean hasMatchNetwork() { return hasMatchNetwork; } - public java.lang.String getMatchNetwork() { return matchNetwork_; } - + private java.lang.Object matchNetwork_; + /** + * required string match_network = 6; + * + *
+     * Matching network, unused at the moment.
+     * Must be "*".
+     * 
+ */ + public boolean hasMatchNetwork() { + return ((bitField0_ & 0x00000020) == 0x00000020); + } + /** + * required string match_network = 6; + * + *
+     * Matching network, unused at the moment.
+     * Must be "*".
+     * 
+ */ + public java.lang.String getMatchNetwork() { + java.lang.Object ref = matchNetwork_; + if (ref instanceof java.lang.String) { + return (java.lang.String) ref; + } else { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + if (bs.isValidUtf8()) { + matchNetwork_ = s; + } + return s; + } + } + /** + * required string match_network = 6; + * + *
+     * Matching network, unused at the moment.
+     * Must be "*".
+     * 
+ */ + public com.google.protobuf.ByteString + getMatchNetworkBytes() { + java.lang.Object ref = matchNetwork_; + if (ref instanceof java.lang.String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + matchNetwork_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + // required fixed32 ttl_s = 7; public static final int TTL_S_FIELD_NUMBER = 7; - private boolean hasTtlS; - private int ttlS_ = 0; - public boolean hasTtlS() { return hasTtlS; } - public int getTtlS() { return ttlS_; } - + private int ttlS_; + /** + * required fixed32 ttl_s = 7; + * + *
+     * Time to live in seconds before the
+     * entry should be evicted from caches.
+     * 
+ */ + public boolean hasTtlS() { + return ((bitField0_ & 0x00000040) == 0x00000040); + } + /** + * required fixed32 ttl_s = 7; + * + *
+     * Time to live in seconds before the
+     * entry should be evicted from caches.
+     * 
+ */ + public int getTtlS() { + return ttlS_; + } + // required string uri = 8; public static final int URI_FIELD_NUMBER = 8; - private boolean hasUri; - private java.lang.String uri_ = ""; - public boolean hasUri() { return hasUri; } - public java.lang.String getUri() { return uri_; } - - private void initFields() { + private java.lang.Object uri_; + /** + * required string uri = 8; + * + *
+     * URI, obsolete.
+     * 
+ */ + public boolean hasUri() { + return ((bitField0_ & 0x00000080) == 0x00000080); + } + /** + * required string uri = 8; + * + *
+     * URI, obsolete.
+     * 
+ */ + public java.lang.String getUri() { + java.lang.Object ref = uri_; + if (ref instanceof java.lang.String) { + return (java.lang.String) ref; + } else { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + if (bs.isValidUtf8()) { + uri_ = s; + } + return s; + } + } + /** + * required string uri = 8; + * + *
+     * URI, obsolete.
+     * 
+ */ + public com.google.protobuf.ByteString + getUriBytes() { + java.lang.Object ref = uri_; + if (ref instanceof java.lang.String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + uri_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } } + + private void initFields() { + uuid_ = ""; + version_ = 0L; + protocol_ = ""; + address_ = ""; + port_ = 0; + matchNetwork_ = ""; + ttlS_ = 0; + uri_ = ""; + } + private byte memoizedIsInitialized = -1; public final boolean isInitialized() { - if (!hasUuid) return false; - if (!hasVersion) return false; - if (!hasProtocol) return false; - if (!hasAddress) return false; - if (!hasPort) return false; - if (!hasMatchNetwork) return false; - if (!hasTtlS) return false; - if (!hasUri) return false; + byte isInitialized = memoizedIsInitialized; + if (isInitialized != -1) return isInitialized == 1; + + if (!hasUuid()) { + memoizedIsInitialized = 0; + return false; + } + if (!hasVersion()) { + memoizedIsInitialized = 0; + return false; + } + if (!hasProtocol()) { + memoizedIsInitialized = 0; + return false; + } + if (!hasAddress()) { + memoizedIsInitialized = 0; + return false; + } + if (!hasPort()) { + memoizedIsInitialized = 0; + return false; + } + if (!hasMatchNetwork()) { + memoizedIsInitialized = 0; + return false; + } + if (!hasTtlS()) { + memoizedIsInitialized = 0; + return false; + } + if (!hasUri()) { + memoizedIsInitialized = 0; + return false; + } + memoizedIsInitialized = 1; return true; } - + public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException { getSerializedSize(); - if (hasUuid()) { - output.writeString(1, getUuid()); + if (((bitField0_ & 0x00000001) == 0x00000001)) { + output.writeBytes(1, getUuidBytes()); } - if (hasVersion()) { - output.writeFixed64(2, getVersion()); + if (((bitField0_ & 0x00000002) == 0x00000002)) { + output.writeFixed64(2, version_); } - if (hasProtocol()) { - output.writeString(3, getProtocol()); + if (((bitField0_ & 0x00000004) == 0x00000004)) { + output.writeBytes(3, getProtocolBytes()); } - if (hasAddress()) { - output.writeString(4, getAddress()); + if (((bitField0_ & 0x00000008) == 0x00000008)) { + output.writeBytes(4, getAddressBytes()); } - if (hasPort()) { - output.writeFixed32(5, getPort()); + if (((bitField0_ & 0x00000010) == 0x00000010)) { + output.writeFixed32(5, port_); } - if (hasMatchNetwork()) { - output.writeString(6, getMatchNetwork()); + if (((bitField0_ & 0x00000020) == 0x00000020)) { + output.writeBytes(6, getMatchNetworkBytes()); } - if (hasTtlS()) { - output.writeFixed32(7, getTtlS()); + if (((bitField0_ & 0x00000040) == 0x00000040)) { + output.writeFixed32(7, ttlS_); } - if (hasUri()) { - output.writeString(8, getUri()); + if (((bitField0_ & 0x00000080) == 0x00000080)) { + output.writeBytes(8, getUriBytes()); } getUnknownFields().writeTo(output); } - + private int memoizedSerializedSize = -1; public int getSerializedSize() { int size = memoizedSerializedSize; if (size != -1) return size; - + size = 0; - if (hasUuid()) { + if (((bitField0_ & 0x00000001) == 0x00000001)) { size += com.google.protobuf.CodedOutputStream - .computeStringSize(1, getUuid()); + .computeBytesSize(1, getUuidBytes()); } - if (hasVersion()) { + if (((bitField0_ & 0x00000002) == 0x00000002)) { size += com.google.protobuf.CodedOutputStream - .computeFixed64Size(2, getVersion()); + .computeFixed64Size(2, version_); } - if (hasProtocol()) { + if (((bitField0_ & 0x00000004) == 0x00000004)) { size += com.google.protobuf.CodedOutputStream - .computeStringSize(3, getProtocol()); + .computeBytesSize(3, getProtocolBytes()); } - if (hasAddress()) { + if (((bitField0_ & 0x00000008) == 0x00000008)) { size += com.google.protobuf.CodedOutputStream - .computeStringSize(4, getAddress()); + .computeBytesSize(4, getAddressBytes()); } - if (hasPort()) { + if (((bitField0_ & 0x00000010) == 0x00000010)) { size += com.google.protobuf.CodedOutputStream - .computeFixed32Size(5, getPort()); + .computeFixed32Size(5, port_); } - if (hasMatchNetwork()) { + if (((bitField0_ & 0x00000020) == 0x00000020)) { size += com.google.protobuf.CodedOutputStream - .computeStringSize(6, getMatchNetwork()); + .computeBytesSize(6, getMatchNetworkBytes()); } - if (hasTtlS()) { + if (((bitField0_ & 0x00000040) == 0x00000040)) { size += com.google.protobuf.CodedOutputStream - .computeFixed32Size(7, getTtlS()); + .computeFixed32Size(7, ttlS_); } - if (hasUri()) { + if (((bitField0_ & 0x00000080) == 0x00000080)) { size += com.google.protobuf.CodedOutputStream - .computeStringSize(8, getUri()); + .computeBytesSize(8, getUriBytes()); } size += getUnknownFields().getSerializedSize(); memoizedSerializedSize = size; return size; } - + + private static final long serialVersionUID = 0L; + @java.lang.Override + protected java.lang.Object writeReplace() + throws java.io.ObjectStreamException { + return super.writeReplace(); + } + public static org.xtreemfs.pbrpc.generatedinterfaces.DIR.AddressMapping parseFrom( com.google.protobuf.ByteString data) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data).buildParsed(); + return PARSER.parseFrom(data); } public static org.xtreemfs.pbrpc.generatedinterfaces.DIR.AddressMapping parseFrom( com.google.protobuf.ByteString data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(data, extensionRegistry); } public static org.xtreemfs.pbrpc.generatedinterfaces.DIR.AddressMapping parseFrom(byte[] data) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data).buildParsed(); + return PARSER.parseFrom(data); } public static org.xtreemfs.pbrpc.generatedinterfaces.DIR.AddressMapping parseFrom( byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(data, extensionRegistry); } public static org.xtreemfs.pbrpc.generatedinterfaces.DIR.AddressMapping parseFrom(java.io.InputStream input) throws java.io.IOException { - return newBuilder().mergeFrom(input).buildParsed(); + return PARSER.parseFrom(input); } public static org.xtreemfs.pbrpc.generatedinterfaces.DIR.AddressMapping parseFrom( java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - return newBuilder().mergeFrom(input, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(input, extensionRegistry); } public static org.xtreemfs.pbrpc.generatedinterfaces.DIR.AddressMapping parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException { - Builder builder = newBuilder(); - if (builder.mergeDelimitedFrom(input)) { - return builder.buildParsed(); - } else { - return null; - } + return PARSER.parseDelimitedFrom(input); } public static org.xtreemfs.pbrpc.generatedinterfaces.DIR.AddressMapping parseDelimitedFrom( java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - Builder builder = newBuilder(); - if (builder.mergeDelimitedFrom(input, extensionRegistry)) { - return builder.buildParsed(); - } else { - return null; - } + return PARSER.parseDelimitedFrom(input, extensionRegistry); } public static org.xtreemfs.pbrpc.generatedinterfaces.DIR.AddressMapping parseFrom( com.google.protobuf.CodedInputStream input) throws java.io.IOException { - return newBuilder().mergeFrom(input).buildParsed(); + return PARSER.parseFrom(input); } public static org.xtreemfs.pbrpc.generatedinterfaces.DIR.AddressMapping parseFrom( com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - return newBuilder().mergeFrom(input, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(input, extensionRegistry); } - + public static Builder newBuilder() { return Builder.create(); } public Builder newBuilderForType() { return newBuilder(); } public static Builder newBuilder(org.xtreemfs.pbrpc.generatedinterfaces.DIR.AddressMapping prototype) { return newBuilder().mergeFrom(prototype); } public Builder toBuilder() { return newBuilder(this); } - + + @java.lang.Override + protected Builder newBuilderForType( + com.google.protobuf.GeneratedMessage.BuilderParent parent) { + Builder builder = new Builder(parent); + return builder; + } + /** + * Protobuf type {@code xtreemfs.pbrpc.AddressMapping} + * + *
+     * For each server UUID, at least one address mapping must exist.
+     * Each record maps a UUID to one FQDN or IP address and port.
+     * 
+ */ public static final class Builder extends - com.google.protobuf.GeneratedMessage.Builder { - private org.xtreemfs.pbrpc.generatedinterfaces.DIR.AddressMapping result; - + com.google.protobuf.GeneratedMessage.Builder + implements org.xtreemfs.pbrpc.generatedinterfaces.DIR.AddressMappingOrBuilder { + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return org.xtreemfs.pbrpc.generatedinterfaces.DIR.internal_static_xtreemfs_pbrpc_AddressMapping_descriptor; + } + + protected com.google.protobuf.GeneratedMessage.FieldAccessorTable + internalGetFieldAccessorTable() { + return org.xtreemfs.pbrpc.generatedinterfaces.DIR.internal_static_xtreemfs_pbrpc_AddressMapping_fieldAccessorTable + .ensureFieldAccessorsInitialized( + org.xtreemfs.pbrpc.generatedinterfaces.DIR.AddressMapping.class, org.xtreemfs.pbrpc.generatedinterfaces.DIR.AddressMapping.Builder.class); + } + // Construct using org.xtreemfs.pbrpc.generatedinterfaces.DIR.AddressMapping.newBuilder() - private Builder() {} - - private static Builder create() { - Builder builder = new Builder(); - builder.result = new org.xtreemfs.pbrpc.generatedinterfaces.DIR.AddressMapping(); - return builder; + private Builder() { + maybeForceBuilderInitialization(); } - - protected org.xtreemfs.pbrpc.generatedinterfaces.DIR.AddressMapping internalGetResult() { - return result; + + private Builder( + com.google.protobuf.GeneratedMessage.BuilderParent parent) { + super(parent); + maybeForceBuilderInitialization(); } - - public Builder clear() { - if (result == null) { - throw new IllegalStateException( - "Cannot call clear() after build()."); + private void maybeForceBuilderInitialization() { + if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) { } - result = new org.xtreemfs.pbrpc.generatedinterfaces.DIR.AddressMapping(); + } + private static Builder create() { + return new Builder(); + } + + public Builder clear() { + super.clear(); + uuid_ = ""; + bitField0_ = (bitField0_ & ~0x00000001); + version_ = 0L; + bitField0_ = (bitField0_ & ~0x00000002); + protocol_ = ""; + bitField0_ = (bitField0_ & ~0x00000004); + address_ = ""; + bitField0_ = (bitField0_ & ~0x00000008); + port_ = 0; + bitField0_ = (bitField0_ & ~0x00000010); + matchNetwork_ = ""; + bitField0_ = (bitField0_ & ~0x00000020); + ttlS_ = 0; + bitField0_ = (bitField0_ & ~0x00000040); + uri_ = ""; + bitField0_ = (bitField0_ & ~0x00000080); return this; } - + public Builder clone() { - return create().mergeFrom(result); + return create().mergeFrom(buildPartial()); } - + public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() { - return org.xtreemfs.pbrpc.generatedinterfaces.DIR.AddressMapping.getDescriptor(); + return org.xtreemfs.pbrpc.generatedinterfaces.DIR.internal_static_xtreemfs_pbrpc_AddressMapping_descriptor; } - + public org.xtreemfs.pbrpc.generatedinterfaces.DIR.AddressMapping getDefaultInstanceForType() { return org.xtreemfs.pbrpc.generatedinterfaces.DIR.AddressMapping.getDefaultInstance(); } - - public boolean isInitialized() { - return result.isInitialized(); - } + public org.xtreemfs.pbrpc.generatedinterfaces.DIR.AddressMapping build() { - if (result != null && !isInitialized()) { + org.xtreemfs.pbrpc.generatedinterfaces.DIR.AddressMapping result = buildPartial(); + if (!result.isInitialized()) { throw newUninitializedMessageException(result); } - return buildPartial(); - } - - private org.xtreemfs.pbrpc.generatedinterfaces.DIR.AddressMapping buildParsed() - throws com.google.protobuf.InvalidProtocolBufferException { - if (!isInitialized()) { - throw newUninitializedMessageException( - result).asInvalidProtocolBufferException(); - } - return buildPartial(); + return result; } - + public org.xtreemfs.pbrpc.generatedinterfaces.DIR.AddressMapping buildPartial() { - if (result == null) { - throw new IllegalStateException( - "build() has already been called on this Builder."); - } - org.xtreemfs.pbrpc.generatedinterfaces.DIR.AddressMapping returnMe = result; - result = null; - return returnMe; + org.xtreemfs.pbrpc.generatedinterfaces.DIR.AddressMapping result = new org.xtreemfs.pbrpc.generatedinterfaces.DIR.AddressMapping(this); + int from_bitField0_ = bitField0_; + int to_bitField0_ = 0; + if (((from_bitField0_ & 0x00000001) == 0x00000001)) { + to_bitField0_ |= 0x00000001; + } + result.uuid_ = uuid_; + if (((from_bitField0_ & 0x00000002) == 0x00000002)) { + to_bitField0_ |= 0x00000002; + } + result.version_ = version_; + if (((from_bitField0_ & 0x00000004) == 0x00000004)) { + to_bitField0_ |= 0x00000004; + } + result.protocol_ = protocol_; + if (((from_bitField0_ & 0x00000008) == 0x00000008)) { + to_bitField0_ |= 0x00000008; + } + result.address_ = address_; + if (((from_bitField0_ & 0x00000010) == 0x00000010)) { + to_bitField0_ |= 0x00000010; + } + result.port_ = port_; + if (((from_bitField0_ & 0x00000020) == 0x00000020)) { + to_bitField0_ |= 0x00000020; + } + result.matchNetwork_ = matchNetwork_; + if (((from_bitField0_ & 0x00000040) == 0x00000040)) { + to_bitField0_ |= 0x00000040; + } + result.ttlS_ = ttlS_; + if (((from_bitField0_ & 0x00000080) == 0x00000080)) { + to_bitField0_ |= 0x00000080; + } + result.uri_ = uri_; + result.bitField0_ = to_bitField0_; + onBuilt(); + return result; } - + public Builder mergeFrom(com.google.protobuf.Message other) { if (other instanceof org.xtreemfs.pbrpc.generatedinterfaces.DIR.AddressMapping) { return mergeFrom((org.xtreemfs.pbrpc.generatedinterfaces.DIR.AddressMapping)other); @@ -470,484 +1256,1133 @@ public final class DIR { return this; } } - + public Builder mergeFrom(org.xtreemfs.pbrpc.generatedinterfaces.DIR.AddressMapping other) { if (other == org.xtreemfs.pbrpc.generatedinterfaces.DIR.AddressMapping.getDefaultInstance()) return this; if (other.hasUuid()) { - setUuid(other.getUuid()); + bitField0_ |= 0x00000001; + uuid_ = other.uuid_; + onChanged(); } if (other.hasVersion()) { setVersion(other.getVersion()); } if (other.hasProtocol()) { - setProtocol(other.getProtocol()); + bitField0_ |= 0x00000004; + protocol_ = other.protocol_; + onChanged(); } if (other.hasAddress()) { - setAddress(other.getAddress()); + bitField0_ |= 0x00000008; + address_ = other.address_; + onChanged(); } if (other.hasPort()) { setPort(other.getPort()); } if (other.hasMatchNetwork()) { - setMatchNetwork(other.getMatchNetwork()); + bitField0_ |= 0x00000020; + matchNetwork_ = other.matchNetwork_; + onChanged(); } if (other.hasTtlS()) { setTtlS(other.getTtlS()); } if (other.hasUri()) { - setUri(other.getUri()); + bitField0_ |= 0x00000080; + uri_ = other.uri_; + onChanged(); } this.mergeUnknownFields(other.getUnknownFields()); return this; } - + + public final boolean isInitialized() { + if (!hasUuid()) { + + return false; + } + if (!hasVersion()) { + + return false; + } + if (!hasProtocol()) { + + return false; + } + if (!hasAddress()) { + + return false; + } + if (!hasPort()) { + + return false; + } + if (!hasMatchNetwork()) { + + return false; + } + if (!hasTtlS()) { + + return false; + } + if (!hasUri()) { + + return false; + } + return true; + } + public Builder mergeFrom( com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - com.google.protobuf.UnknownFieldSet.Builder unknownFields = - com.google.protobuf.UnknownFieldSet.newBuilder( - this.getUnknownFields()); - while (true) { - int tag = input.readTag(); - switch (tag) { - case 0: - this.setUnknownFields(unknownFields.build()); - return this; - default: { - if (!parseUnknownField(input, unknownFields, - extensionRegistry, tag)) { - this.setUnknownFields(unknownFields.build()); - return this; - } - break; - } - case 10: { - setUuid(input.readString()); - break; - } - case 17: { - setVersion(input.readFixed64()); - break; - } - case 26: { - setProtocol(input.readString()); - break; - } - case 34: { - setAddress(input.readString()); - break; - } - case 45: { - setPort(input.readFixed32()); - break; - } - case 50: { - setMatchNetwork(input.readString()); - break; - } - case 61: { - setTtlS(input.readFixed32()); - break; - } - case 66: { - setUri(input.readString()); - break; - } + org.xtreemfs.pbrpc.generatedinterfaces.DIR.AddressMapping parsedMessage = null; + try { + parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + parsedMessage = (org.xtreemfs.pbrpc.generatedinterfaces.DIR.AddressMapping) e.getUnfinishedMessage(); + throw e; + } finally { + if (parsedMessage != null) { + mergeFrom(parsedMessage); } } + return this; } - - + private int bitField0_; + // required string uuid = 1; + private java.lang.Object uuid_ = ""; + /** + * required string uuid = 1; + * + *
+       * UUID being mapped.
+       * 
+ */ public boolean hasUuid() { - return result.hasUuid(); - } + return ((bitField0_ & 0x00000001) == 0x00000001); + } + /** + * required string uuid = 1; + * + *
+       * UUID being mapped.
+       * 
+ */ public java.lang.String getUuid() { - return result.getUuid(); - } - public Builder setUuid(java.lang.String value) { + java.lang.Object ref = uuid_; + if (!(ref instanceof java.lang.String)) { + java.lang.String s = ((com.google.protobuf.ByteString) ref) + .toStringUtf8(); + uuid_ = s; + return s; + } else { + return (java.lang.String) ref; + } + } + /** + * required string uuid = 1; + * + *
+       * UUID being mapped.
+       * 
+ */ + public com.google.protobuf.ByteString + getUuidBytes() { + java.lang.Object ref = uuid_; + if (ref instanceof String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + uuid_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + /** + * required string uuid = 1; + * + *
+       * UUID being mapped.
+       * 
+ */ + public Builder setUuid( + java.lang.String value) { if (value == null) { throw new NullPointerException(); } - result.hasUuid = true; - result.uuid_ = value; - return this; - } + bitField0_ |= 0x00000001; + uuid_ = value; + onChanged(); + return this; + } + /** + * required string uuid = 1; + * + *
+       * UUID being mapped.
+       * 
+ */ public Builder clearUuid() { - result.hasUuid = false; - result.uuid_ = getDefaultInstance().getUuid(); + bitField0_ = (bitField0_ & ~0x00000001); + uuid_ = getDefaultInstance().getUuid(); + onChanged(); + return this; + } + /** + * required string uuid = 1; + * + *
+       * UUID being mapped.
+       * 
+ */ + public Builder setUuidBytes( + com.google.protobuf.ByteString value) { + if (value == null) { + throw new NullPointerException(); + } + bitField0_ |= 0x00000001; + uuid_ = value; + onChanged(); return this; } - + // required fixed64 version = 2; + private long version_ ; + /** + * required fixed64 version = 2; + * + *
+       * Version of this record.
+       * 
+ */ public boolean hasVersion() { - return result.hasVersion(); - } + return ((bitField0_ & 0x00000002) == 0x00000002); + } + /** + * required fixed64 version = 2; + * + *
+       * Version of this record.
+       * 
+ */ public long getVersion() { - return result.getVersion(); - } + return version_; + } + /** + * required fixed64 version = 2; + * + *
+       * Version of this record.
+       * 
+ */ public Builder setVersion(long value) { - result.hasVersion = true; - result.version_ = value; - return this; - } + bitField0_ |= 0x00000002; + version_ = value; + onChanged(); + return this; + } + /** + * required fixed64 version = 2; + * + *
+       * Version of this record.
+       * 
+ */ public Builder clearVersion() { - result.hasVersion = false; - result.version_ = 0L; + bitField0_ = (bitField0_ & ~0x00000002); + version_ = 0L; + onChanged(); return this; } - + // required string protocol = 3; + private java.lang.Object protocol_ = ""; + /** + * required string protocol = 3; + * + *
+       * Protocol, see org.xtreemfs.foundation.pbrpc.Schemes for values.
+       * 
+ */ public boolean hasProtocol() { - return result.hasProtocol(); - } + return ((bitField0_ & 0x00000004) == 0x00000004); + } + /** + * required string protocol = 3; + * + *
+       * Protocol, see org.xtreemfs.foundation.pbrpc.Schemes for values.
+       * 
+ */ public java.lang.String getProtocol() { - return result.getProtocol(); - } - public Builder setProtocol(java.lang.String value) { + java.lang.Object ref = protocol_; + if (!(ref instanceof java.lang.String)) { + java.lang.String s = ((com.google.protobuf.ByteString) ref) + .toStringUtf8(); + protocol_ = s; + return s; + } else { + return (java.lang.String) ref; + } + } + /** + * required string protocol = 3; + * + *
+       * Protocol, see org.xtreemfs.foundation.pbrpc.Schemes for values.
+       * 
+ */ + public com.google.protobuf.ByteString + getProtocolBytes() { + java.lang.Object ref = protocol_; + if (ref instanceof String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + protocol_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + /** + * required string protocol = 3; + * + *
+       * Protocol, see org.xtreemfs.foundation.pbrpc.Schemes for values.
+       * 
+ */ + public Builder setProtocol( + java.lang.String value) { if (value == null) { throw new NullPointerException(); } - result.hasProtocol = true; - result.protocol_ = value; - return this; - } + bitField0_ |= 0x00000004; + protocol_ = value; + onChanged(); + return this; + } + /** + * required string protocol = 3; + * + *
+       * Protocol, see org.xtreemfs.foundation.pbrpc.Schemes for values.
+       * 
+ */ public Builder clearProtocol() { - result.hasProtocol = false; - result.protocol_ = getDefaultInstance().getProtocol(); + bitField0_ = (bitField0_ & ~0x00000004); + protocol_ = getDefaultInstance().getProtocol(); + onChanged(); + return this; + } + /** + * required string protocol = 3; + * + *
+       * Protocol, see org.xtreemfs.foundation.pbrpc.Schemes for values.
+       * 
+ */ + public Builder setProtocolBytes( + com.google.protobuf.ByteString value) { + if (value == null) { + throw new NullPointerException(); + } + bitField0_ |= 0x00000004; + protocol_ = value; + onChanged(); return this; } - + // required string address = 4; + private java.lang.Object address_ = ""; + /** + * required string address = 4; + * + *
+       * FQDN or IP address of the server.
+       * 
+ */ public boolean hasAddress() { - return result.hasAddress(); - } + return ((bitField0_ & 0x00000008) == 0x00000008); + } + /** + * required string address = 4; + * + *
+       * FQDN or IP address of the server.
+       * 
+ */ public java.lang.String getAddress() { - return result.getAddress(); - } - public Builder setAddress(java.lang.String value) { + java.lang.Object ref = address_; + if (!(ref instanceof java.lang.String)) { + java.lang.String s = ((com.google.protobuf.ByteString) ref) + .toStringUtf8(); + address_ = s; + return s; + } else { + return (java.lang.String) ref; + } + } + /** + * required string address = 4; + * + *
+       * FQDN or IP address of the server.
+       * 
+ */ + public com.google.protobuf.ByteString + getAddressBytes() { + java.lang.Object ref = address_; + if (ref instanceof String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + address_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + /** + * required string address = 4; + * + *
+       * FQDN or IP address of the server.
+       * 
+ */ + public Builder setAddress( + java.lang.String value) { if (value == null) { throw new NullPointerException(); } - result.hasAddress = true; - result.address_ = value; - return this; - } + bitField0_ |= 0x00000008; + address_ = value; + onChanged(); + return this; + } + /** + * required string address = 4; + * + *
+       * FQDN or IP address of the server.
+       * 
+ */ public Builder clearAddress() { - result.hasAddress = false; - result.address_ = getDefaultInstance().getAddress(); + bitField0_ = (bitField0_ & ~0x00000008); + address_ = getDefaultInstance().getAddress(); + onChanged(); + return this; + } + /** + * required string address = 4; + * + *
+       * FQDN or IP address of the server.
+       * 
+ */ + public Builder setAddressBytes( + com.google.protobuf.ByteString value) { + if (value == null) { + throw new NullPointerException(); + } + bitField0_ |= 0x00000008; + address_ = value; + onChanged(); return this; } - + // required fixed32 port = 5; + private int port_ ; + /** + * required fixed32 port = 5; + * + *
+       * TCP/UDP port number.
+       * 
+ */ public boolean hasPort() { - return result.hasPort(); - } + return ((bitField0_ & 0x00000010) == 0x00000010); + } + /** + * required fixed32 port = 5; + * + *
+       * TCP/UDP port number.
+       * 
+ */ public int getPort() { - return result.getPort(); - } + return port_; + } + /** + * required fixed32 port = 5; + * + *
+       * TCP/UDP port number.
+       * 
+ */ public Builder setPort(int value) { - result.hasPort = true; - result.port_ = value; - return this; - } + bitField0_ |= 0x00000010; + port_ = value; + onChanged(); + return this; + } + /** + * required fixed32 port = 5; + * + *
+       * TCP/UDP port number.
+       * 
+ */ public Builder clearPort() { - result.hasPort = false; - result.port_ = 0; + bitField0_ = (bitField0_ & ~0x00000010); + port_ = 0; + onChanged(); return this; } - + // required string match_network = 6; + private java.lang.Object matchNetwork_ = ""; + /** + * required string match_network = 6; + * + *
+       * Matching network, unused at the moment.
+       * Must be "*".
+       * 
+ */ public boolean hasMatchNetwork() { - return result.hasMatchNetwork(); - } + return ((bitField0_ & 0x00000020) == 0x00000020); + } + /** + * required string match_network = 6; + * + *
+       * Matching network, unused at the moment.
+       * Must be "*".
+       * 
+ */ public java.lang.String getMatchNetwork() { - return result.getMatchNetwork(); - } - public Builder setMatchNetwork(java.lang.String value) { + java.lang.Object ref = matchNetwork_; + if (!(ref instanceof java.lang.String)) { + java.lang.String s = ((com.google.protobuf.ByteString) ref) + .toStringUtf8(); + matchNetwork_ = s; + return s; + } else { + return (java.lang.String) ref; + } + } + /** + * required string match_network = 6; + * + *
+       * Matching network, unused at the moment.
+       * Must be "*".
+       * 
+ */ + public com.google.protobuf.ByteString + getMatchNetworkBytes() { + java.lang.Object ref = matchNetwork_; + if (ref instanceof String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + matchNetwork_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + /** + * required string match_network = 6; + * + *
+       * Matching network, unused at the moment.
+       * Must be "*".
+       * 
+ */ + public Builder setMatchNetwork( + java.lang.String value) { if (value == null) { throw new NullPointerException(); } - result.hasMatchNetwork = true; - result.matchNetwork_ = value; - return this; - } + bitField0_ |= 0x00000020; + matchNetwork_ = value; + onChanged(); + return this; + } + /** + * required string match_network = 6; + * + *
+       * Matching network, unused at the moment.
+       * Must be "*".
+       * 
+ */ public Builder clearMatchNetwork() { - result.hasMatchNetwork = false; - result.matchNetwork_ = getDefaultInstance().getMatchNetwork(); + bitField0_ = (bitField0_ & ~0x00000020); + matchNetwork_ = getDefaultInstance().getMatchNetwork(); + onChanged(); + return this; + } + /** + * required string match_network = 6; + * + *
+       * Matching network, unused at the moment.
+       * Must be "*".
+       * 
+ */ + public Builder setMatchNetworkBytes( + com.google.protobuf.ByteString value) { + if (value == null) { + throw new NullPointerException(); + } + bitField0_ |= 0x00000020; + matchNetwork_ = value; + onChanged(); return this; } - + // required fixed32 ttl_s = 7; + private int ttlS_ ; + /** + * required fixed32 ttl_s = 7; + * + *
+       * Time to live in seconds before the
+       * entry should be evicted from caches.
+       * 
+ */ public boolean hasTtlS() { - return result.hasTtlS(); - } + return ((bitField0_ & 0x00000040) == 0x00000040); + } + /** + * required fixed32 ttl_s = 7; + * + *
+       * Time to live in seconds before the
+       * entry should be evicted from caches.
+       * 
+ */ public int getTtlS() { - return result.getTtlS(); - } + return ttlS_; + } + /** + * required fixed32 ttl_s = 7; + * + *
+       * Time to live in seconds before the
+       * entry should be evicted from caches.
+       * 
+ */ public Builder setTtlS(int value) { - result.hasTtlS = true; - result.ttlS_ = value; - return this; - } + bitField0_ |= 0x00000040; + ttlS_ = value; + onChanged(); + return this; + } + /** + * required fixed32 ttl_s = 7; + * + *
+       * Time to live in seconds before the
+       * entry should be evicted from caches.
+       * 
+ */ public Builder clearTtlS() { - result.hasTtlS = false; - result.ttlS_ = 0; + bitField0_ = (bitField0_ & ~0x00000040); + ttlS_ = 0; + onChanged(); return this; } - + // required string uri = 8; + private java.lang.Object uri_ = ""; + /** + * required string uri = 8; + * + *
+       * URI, obsolete.
+       * 
+ */ public boolean hasUri() { - return result.hasUri(); - } + return ((bitField0_ & 0x00000080) == 0x00000080); + } + /** + * required string uri = 8; + * + *
+       * URI, obsolete.
+       * 
+ */ public java.lang.String getUri() { - return result.getUri(); - } - public Builder setUri(java.lang.String value) { + java.lang.Object ref = uri_; + if (!(ref instanceof java.lang.String)) { + java.lang.String s = ((com.google.protobuf.ByteString) ref) + .toStringUtf8(); + uri_ = s; + return s; + } else { + return (java.lang.String) ref; + } + } + /** + * required string uri = 8; + * + *
+       * URI, obsolete.
+       * 
+ */ + public com.google.protobuf.ByteString + getUriBytes() { + java.lang.Object ref = uri_; + if (ref instanceof String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + uri_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + /** + * required string uri = 8; + * + *
+       * URI, obsolete.
+       * 
+ */ + public Builder setUri( + java.lang.String value) { if (value == null) { throw new NullPointerException(); } - result.hasUri = true; - result.uri_ = value; - return this; - } + bitField0_ |= 0x00000080; + uri_ = value; + onChanged(); + return this; + } + /** + * required string uri = 8; + * + *
+       * URI, obsolete.
+       * 
+ */ public Builder clearUri() { - result.hasUri = false; - result.uri_ = getDefaultInstance().getUri(); + bitField0_ = (bitField0_ & ~0x00000080); + uri_ = getDefaultInstance().getUri(); + onChanged(); + return this; + } + /** + * required string uri = 8; + * + *
+       * URI, obsolete.
+       * 
+ */ + public Builder setUriBytes( + com.google.protobuf.ByteString value) { + if (value == null) { + throw new NullPointerException(); + } + bitField0_ |= 0x00000080; + uri_ = value; + onChanged(); return this; } - + // @@protoc_insertion_point(builder_scope:xtreemfs.pbrpc.AddressMapping) } - + static { defaultInstance = new AddressMapping(true); - org.xtreemfs.pbrpc.generatedinterfaces.DIR.internalForceInit(); defaultInstance.initFields(); } - + // @@protoc_insertion_point(class_scope:xtreemfs.pbrpc.AddressMapping) } - + + public interface AddressMappingSetOrBuilder + extends com.google.protobuf.MessageOrBuilder { + + // repeated .xtreemfs.pbrpc.AddressMapping mappings = 1; + /** + * repeated .xtreemfs.pbrpc.AddressMapping mappings = 1; + */ + java.util.List + getMappingsList(); + /** + * repeated .xtreemfs.pbrpc.AddressMapping mappings = 1; + */ + org.xtreemfs.pbrpc.generatedinterfaces.DIR.AddressMapping getMappings(int index); + /** + * repeated .xtreemfs.pbrpc.AddressMapping mappings = 1; + */ + int getMappingsCount(); + /** + * repeated .xtreemfs.pbrpc.AddressMapping mappings = 1; + */ + java.util.List + getMappingsOrBuilderList(); + /** + * repeated .xtreemfs.pbrpc.AddressMapping mappings = 1; + */ + org.xtreemfs.pbrpc.generatedinterfaces.DIR.AddressMappingOrBuilder getMappingsOrBuilder( + int index); + } + /** + * Protobuf type {@code xtreemfs.pbrpc.AddressMappingSet} + * + *
+   * Set of mappings for a UUID.
+   * 
+ */ public static final class AddressMappingSet extends - com.google.protobuf.GeneratedMessage { + com.google.protobuf.GeneratedMessage + implements AddressMappingSetOrBuilder { // Use AddressMappingSet.newBuilder() to construct. - private AddressMappingSet() { - initFields(); + private AddressMappingSet(com.google.protobuf.GeneratedMessage.Builder builder) { + super(builder); + this.unknownFields = builder.getUnknownFields(); } - private AddressMappingSet(boolean noInit) {} - + private AddressMappingSet(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); } + private static final AddressMappingSet defaultInstance; public static AddressMappingSet getDefaultInstance() { return defaultInstance; } - + public AddressMappingSet getDefaultInstanceForType() { return defaultInstance; } - + + private final com.google.protobuf.UnknownFieldSet unknownFields; + @java.lang.Override + public final com.google.protobuf.UnknownFieldSet + getUnknownFields() { + return this.unknownFields; + } + private AddressMappingSet( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + initFields(); + int mutable_bitField0_ = 0; + com.google.protobuf.UnknownFieldSet.Builder unknownFields = + com.google.protobuf.UnknownFieldSet.newBuilder(); + try { + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch (tag) { + case 0: + done = true; + break; + default: { + if (!parseUnknownField(input, unknownFields, + extensionRegistry, tag)) { + done = true; + } + break; + } + case 10: { + if (!((mutable_bitField0_ & 0x00000001) == 0x00000001)) { + mappings_ = new java.util.ArrayList(); + mutable_bitField0_ |= 0x00000001; + } + mappings_.add(input.readMessage(org.xtreemfs.pbrpc.generatedinterfaces.DIR.AddressMapping.PARSER, extensionRegistry)); + break; + } + } + } + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(this); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException( + e.getMessage()).setUnfinishedMessage(this); + } finally { + if (((mutable_bitField0_ & 0x00000001) == 0x00000001)) { + mappings_ = java.util.Collections.unmodifiableList(mappings_); + } + this.unknownFields = unknownFields.build(); + makeExtensionsImmutable(); + } + } public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { return org.xtreemfs.pbrpc.generatedinterfaces.DIR.internal_static_xtreemfs_pbrpc_AddressMappingSet_descriptor; } - + protected com.google.protobuf.GeneratedMessage.FieldAccessorTable internalGetFieldAccessorTable() { - return org.xtreemfs.pbrpc.generatedinterfaces.DIR.internal_static_xtreemfs_pbrpc_AddressMappingSet_fieldAccessorTable; + return org.xtreemfs.pbrpc.generatedinterfaces.DIR.internal_static_xtreemfs_pbrpc_AddressMappingSet_fieldAccessorTable + .ensureFieldAccessorsInitialized( + org.xtreemfs.pbrpc.generatedinterfaces.DIR.AddressMappingSet.class, org.xtreemfs.pbrpc.generatedinterfaces.DIR.AddressMappingSet.Builder.class); + } + + public static com.google.protobuf.Parser PARSER = + new com.google.protobuf.AbstractParser() { + public AddressMappingSet parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return new AddressMappingSet(input, extensionRegistry); + } + }; + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; } - + // repeated .xtreemfs.pbrpc.AddressMapping mappings = 1; public static final int MAPPINGS_FIELD_NUMBER = 1; - private java.util.List mappings_ = - java.util.Collections.emptyList(); + private java.util.List mappings_; + /** + * repeated .xtreemfs.pbrpc.AddressMapping mappings = 1; + */ public java.util.List getMappingsList() { return mappings_; } - public int getMappingsCount() { return mappings_.size(); } + /** + * repeated .xtreemfs.pbrpc.AddressMapping mappings = 1; + */ + public java.util.List + getMappingsOrBuilderList() { + return mappings_; + } + /** + * repeated .xtreemfs.pbrpc.AddressMapping mappings = 1; + */ + public int getMappingsCount() { + return mappings_.size(); + } + /** + * repeated .xtreemfs.pbrpc.AddressMapping mappings = 1; + */ public org.xtreemfs.pbrpc.generatedinterfaces.DIR.AddressMapping getMappings(int index) { return mappings_.get(index); } - + /** + * repeated .xtreemfs.pbrpc.AddressMapping mappings = 1; + */ + public org.xtreemfs.pbrpc.generatedinterfaces.DIR.AddressMappingOrBuilder getMappingsOrBuilder( + int index) { + return mappings_.get(index); + } + private void initFields() { + mappings_ = java.util.Collections.emptyList(); } + private byte memoizedIsInitialized = -1; public final boolean isInitialized() { - for (org.xtreemfs.pbrpc.generatedinterfaces.DIR.AddressMapping element : getMappingsList()) { - if (!element.isInitialized()) return false; + byte isInitialized = memoizedIsInitialized; + if (isInitialized != -1) return isInitialized == 1; + + for (int i = 0; i < getMappingsCount(); i++) { + if (!getMappings(i).isInitialized()) { + memoizedIsInitialized = 0; + return false; + } } + memoizedIsInitialized = 1; return true; } - + public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException { getSerializedSize(); - for (org.xtreemfs.pbrpc.generatedinterfaces.DIR.AddressMapping element : getMappingsList()) { - output.writeMessage(1, element); + for (int i = 0; i < mappings_.size(); i++) { + output.writeMessage(1, mappings_.get(i)); } getUnknownFields().writeTo(output); } - + private int memoizedSerializedSize = -1; public int getSerializedSize() { int size = memoizedSerializedSize; if (size != -1) return size; - + size = 0; - for (org.xtreemfs.pbrpc.generatedinterfaces.DIR.AddressMapping element : getMappingsList()) { + for (int i = 0; i < mappings_.size(); i++) { size += com.google.protobuf.CodedOutputStream - .computeMessageSize(1, element); + .computeMessageSize(1, mappings_.get(i)); } size += getUnknownFields().getSerializedSize(); memoizedSerializedSize = size; return size; } - + + private static final long serialVersionUID = 0L; + @java.lang.Override + protected java.lang.Object writeReplace() + throws java.io.ObjectStreamException { + return super.writeReplace(); + } + public static org.xtreemfs.pbrpc.generatedinterfaces.DIR.AddressMappingSet parseFrom( com.google.protobuf.ByteString data) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data).buildParsed(); + return PARSER.parseFrom(data); } public static org.xtreemfs.pbrpc.generatedinterfaces.DIR.AddressMappingSet parseFrom( com.google.protobuf.ByteString data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(data, extensionRegistry); } public static org.xtreemfs.pbrpc.generatedinterfaces.DIR.AddressMappingSet parseFrom(byte[] data) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data).buildParsed(); + return PARSER.parseFrom(data); } public static org.xtreemfs.pbrpc.generatedinterfaces.DIR.AddressMappingSet parseFrom( byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(data, extensionRegistry); } public static org.xtreemfs.pbrpc.generatedinterfaces.DIR.AddressMappingSet parseFrom(java.io.InputStream input) throws java.io.IOException { - return newBuilder().mergeFrom(input).buildParsed(); + return PARSER.parseFrom(input); } public static org.xtreemfs.pbrpc.generatedinterfaces.DIR.AddressMappingSet parseFrom( java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - return newBuilder().mergeFrom(input, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(input, extensionRegistry); } public static org.xtreemfs.pbrpc.generatedinterfaces.DIR.AddressMappingSet parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException { - Builder builder = newBuilder(); - if (builder.mergeDelimitedFrom(input)) { - return builder.buildParsed(); - } else { - return null; - } + return PARSER.parseDelimitedFrom(input); } public static org.xtreemfs.pbrpc.generatedinterfaces.DIR.AddressMappingSet parseDelimitedFrom( java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - Builder builder = newBuilder(); - if (builder.mergeDelimitedFrom(input, extensionRegistry)) { - return builder.buildParsed(); - } else { - return null; - } + return PARSER.parseDelimitedFrom(input, extensionRegistry); } public static org.xtreemfs.pbrpc.generatedinterfaces.DIR.AddressMappingSet parseFrom( com.google.protobuf.CodedInputStream input) throws java.io.IOException { - return newBuilder().mergeFrom(input).buildParsed(); + return PARSER.parseFrom(input); } public static org.xtreemfs.pbrpc.generatedinterfaces.DIR.AddressMappingSet parseFrom( com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - return newBuilder().mergeFrom(input, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(input, extensionRegistry); } - + public static Builder newBuilder() { return Builder.create(); } public Builder newBuilderForType() { return newBuilder(); } public static Builder newBuilder(org.xtreemfs.pbrpc.generatedinterfaces.DIR.AddressMappingSet prototype) { return newBuilder().mergeFrom(prototype); } public Builder toBuilder() { return newBuilder(this); } - + + @java.lang.Override + protected Builder newBuilderForType( + com.google.protobuf.GeneratedMessage.BuilderParent parent) { + Builder builder = new Builder(parent); + return builder; + } + /** + * Protobuf type {@code xtreemfs.pbrpc.AddressMappingSet} + * + *
+     * Set of mappings for a UUID.
+     * 
+ */ public static final class Builder extends - com.google.protobuf.GeneratedMessage.Builder { - private org.xtreemfs.pbrpc.generatedinterfaces.DIR.AddressMappingSet result; - + com.google.protobuf.GeneratedMessage.Builder + implements org.xtreemfs.pbrpc.generatedinterfaces.DIR.AddressMappingSetOrBuilder { + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return org.xtreemfs.pbrpc.generatedinterfaces.DIR.internal_static_xtreemfs_pbrpc_AddressMappingSet_descriptor; + } + + protected com.google.protobuf.GeneratedMessage.FieldAccessorTable + internalGetFieldAccessorTable() { + return org.xtreemfs.pbrpc.generatedinterfaces.DIR.internal_static_xtreemfs_pbrpc_AddressMappingSet_fieldAccessorTable + .ensureFieldAccessorsInitialized( + org.xtreemfs.pbrpc.generatedinterfaces.DIR.AddressMappingSet.class, org.xtreemfs.pbrpc.generatedinterfaces.DIR.AddressMappingSet.Builder.class); + } + // Construct using org.xtreemfs.pbrpc.generatedinterfaces.DIR.AddressMappingSet.newBuilder() - private Builder() {} - - private static Builder create() { - Builder builder = new Builder(); - builder.result = new org.xtreemfs.pbrpc.generatedinterfaces.DIR.AddressMappingSet(); - return builder; + private Builder() { + maybeForceBuilderInitialization(); } - - protected org.xtreemfs.pbrpc.generatedinterfaces.DIR.AddressMappingSet internalGetResult() { - return result; + + private Builder( + com.google.protobuf.GeneratedMessage.BuilderParent parent) { + super(parent); + maybeForceBuilderInitialization(); } - + private void maybeForceBuilderInitialization() { + if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) { + getMappingsFieldBuilder(); + } + } + private static Builder create() { + return new Builder(); + } + public Builder clear() { - if (result == null) { - throw new IllegalStateException( - "Cannot call clear() after build()."); + super.clear(); + if (mappingsBuilder_ == null) { + mappings_ = java.util.Collections.emptyList(); + bitField0_ = (bitField0_ & ~0x00000001); + } else { + mappingsBuilder_.clear(); } - result = new org.xtreemfs.pbrpc.generatedinterfaces.DIR.AddressMappingSet(); return this; } - + public Builder clone() { - return create().mergeFrom(result); + return create().mergeFrom(buildPartial()); } - + public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() { - return org.xtreemfs.pbrpc.generatedinterfaces.DIR.AddressMappingSet.getDescriptor(); + return org.xtreemfs.pbrpc.generatedinterfaces.DIR.internal_static_xtreemfs_pbrpc_AddressMappingSet_descriptor; } - + public org.xtreemfs.pbrpc.generatedinterfaces.DIR.AddressMappingSet getDefaultInstanceForType() { return org.xtreemfs.pbrpc.generatedinterfaces.DIR.AddressMappingSet.getDefaultInstance(); } - - public boolean isInitialized() { - return result.isInitialized(); - } + public org.xtreemfs.pbrpc.generatedinterfaces.DIR.AddressMappingSet build() { - if (result != null && !isInitialized()) { + org.xtreemfs.pbrpc.generatedinterfaces.DIR.AddressMappingSet result = buildPartial(); + if (!result.isInitialized()) { throw newUninitializedMessageException(result); } - return buildPartial(); - } - - private org.xtreemfs.pbrpc.generatedinterfaces.DIR.AddressMappingSet buildParsed() - throws com.google.protobuf.InvalidProtocolBufferException { - if (!isInitialized()) { - throw newUninitializedMessageException( - result).asInvalidProtocolBufferException(); - } - return buildPartial(); + return result; } - + public org.xtreemfs.pbrpc.generatedinterfaces.DIR.AddressMappingSet buildPartial() { - if (result == null) { - throw new IllegalStateException( - "build() has already been called on this Builder."); - } - if (result.mappings_ != java.util.Collections.EMPTY_LIST) { - result.mappings_ = - java.util.Collections.unmodifiableList(result.mappings_); + org.xtreemfs.pbrpc.generatedinterfaces.DIR.AddressMappingSet result = new org.xtreemfs.pbrpc.generatedinterfaces.DIR.AddressMappingSet(this); + int from_bitField0_ = bitField0_; + if (mappingsBuilder_ == null) { + if (((bitField0_ & 0x00000001) == 0x00000001)) { + mappings_ = java.util.Collections.unmodifiableList(mappings_); + bitField0_ = (bitField0_ & ~0x00000001); + } + result.mappings_ = mappings_; + } else { + result.mappings_ = mappingsBuilder_.build(); } - org.xtreemfs.pbrpc.generatedinterfaces.DIR.AddressMappingSet returnMe = result; - result = null; - return returnMe; + onBuilt(); + return result; } - + public Builder mergeFrom(com.google.protobuf.Message other) { if (other instanceof org.xtreemfs.pbrpc.generatedinterfaces.DIR.AddressMappingSet) { return mergeFrom((org.xtreemfs.pbrpc.generatedinterfaces.DIR.AddressMappingSet)other); @@ -956,366 +2391,853 @@ public final class DIR { return this; } } - + public Builder mergeFrom(org.xtreemfs.pbrpc.generatedinterfaces.DIR.AddressMappingSet other) { if (other == org.xtreemfs.pbrpc.generatedinterfaces.DIR.AddressMappingSet.getDefaultInstance()) return this; - if (!other.mappings_.isEmpty()) { - if (result.mappings_.isEmpty()) { - result.mappings_ = new java.util.ArrayList(); + if (mappingsBuilder_ == null) { + if (!other.mappings_.isEmpty()) { + if (mappings_.isEmpty()) { + mappings_ = other.mappings_; + bitField0_ = (bitField0_ & ~0x00000001); + } else { + ensureMappingsIsMutable(); + mappings_.addAll(other.mappings_); + } + onChanged(); + } + } else { + if (!other.mappings_.isEmpty()) { + if (mappingsBuilder_.isEmpty()) { + mappingsBuilder_.dispose(); + mappingsBuilder_ = null; + mappings_ = other.mappings_; + bitField0_ = (bitField0_ & ~0x00000001); + mappingsBuilder_ = + com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ? + getMappingsFieldBuilder() : null; + } else { + mappingsBuilder_.addAllMessages(other.mappings_); + } } - result.mappings_.addAll(other.mappings_); } this.mergeUnknownFields(other.getUnknownFields()); return this; } - + + public final boolean isInitialized() { + for (int i = 0; i < getMappingsCount(); i++) { + if (!getMappings(i).isInitialized()) { + + return false; + } + } + return true; + } + public Builder mergeFrom( com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - com.google.protobuf.UnknownFieldSet.Builder unknownFields = - com.google.protobuf.UnknownFieldSet.newBuilder( - this.getUnknownFields()); - while (true) { - int tag = input.readTag(); - switch (tag) { - case 0: - this.setUnknownFields(unknownFields.build()); - return this; - default: { - if (!parseUnknownField(input, unknownFields, - extensionRegistry, tag)) { - this.setUnknownFields(unknownFields.build()); - return this; - } - break; - } - case 10: { - org.xtreemfs.pbrpc.generatedinterfaces.DIR.AddressMapping.Builder subBuilder = org.xtreemfs.pbrpc.generatedinterfaces.DIR.AddressMapping.newBuilder(); - input.readMessage(subBuilder, extensionRegistry); - addMappings(subBuilder.buildPartial()); - break; - } + org.xtreemfs.pbrpc.generatedinterfaces.DIR.AddressMappingSet parsedMessage = null; + try { + parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + parsedMessage = (org.xtreemfs.pbrpc.generatedinterfaces.DIR.AddressMappingSet) e.getUnfinishedMessage(); + throw e; + } finally { + if (parsedMessage != null) { + mergeFrom(parsedMessage); } } + return this; } - - + private int bitField0_; + // repeated .xtreemfs.pbrpc.AddressMapping mappings = 1; + private java.util.List mappings_ = + java.util.Collections.emptyList(); + private void ensureMappingsIsMutable() { + if (!((bitField0_ & 0x00000001) == 0x00000001)) { + mappings_ = new java.util.ArrayList(mappings_); + bitField0_ |= 0x00000001; + } + } + + private com.google.protobuf.RepeatedFieldBuilder< + org.xtreemfs.pbrpc.generatedinterfaces.DIR.AddressMapping, org.xtreemfs.pbrpc.generatedinterfaces.DIR.AddressMapping.Builder, org.xtreemfs.pbrpc.generatedinterfaces.DIR.AddressMappingOrBuilder> mappingsBuilder_; + + /** + * repeated .xtreemfs.pbrpc.AddressMapping mappings = 1; + */ public java.util.List getMappingsList() { - return java.util.Collections.unmodifiableList(result.mappings_); + if (mappingsBuilder_ == null) { + return java.util.Collections.unmodifiableList(mappings_); + } else { + return mappingsBuilder_.getMessageList(); + } } + /** + * repeated .xtreemfs.pbrpc.AddressMapping mappings = 1; + */ public int getMappingsCount() { - return result.getMappingsCount(); + if (mappingsBuilder_ == null) { + return mappings_.size(); + } else { + return mappingsBuilder_.getCount(); + } } + /** + * repeated .xtreemfs.pbrpc.AddressMapping mappings = 1; + */ public org.xtreemfs.pbrpc.generatedinterfaces.DIR.AddressMapping getMappings(int index) { - return result.getMappings(index); + if (mappingsBuilder_ == null) { + return mappings_.get(index); + } else { + return mappingsBuilder_.getMessage(index); + } } - public Builder setMappings(int index, org.xtreemfs.pbrpc.generatedinterfaces.DIR.AddressMapping value) { - if (value == null) { - throw new NullPointerException(); + /** + * repeated .xtreemfs.pbrpc.AddressMapping mappings = 1; + */ + public Builder setMappings( + int index, org.xtreemfs.pbrpc.generatedinterfaces.DIR.AddressMapping value) { + if (mappingsBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + ensureMappingsIsMutable(); + mappings_.set(index, value); + onChanged(); + } else { + mappingsBuilder_.setMessage(index, value); } - result.mappings_.set(index, value); return this; } - public Builder setMappings(int index, org.xtreemfs.pbrpc.generatedinterfaces.DIR.AddressMapping.Builder builderForValue) { - result.mappings_.set(index, builderForValue.build()); + /** + * repeated .xtreemfs.pbrpc.AddressMapping mappings = 1; + */ + public Builder setMappings( + int index, org.xtreemfs.pbrpc.generatedinterfaces.DIR.AddressMapping.Builder builderForValue) { + if (mappingsBuilder_ == null) { + ensureMappingsIsMutable(); + mappings_.set(index, builderForValue.build()); + onChanged(); + } else { + mappingsBuilder_.setMessage(index, builderForValue.build()); + } return this; } + /** + * repeated .xtreemfs.pbrpc.AddressMapping mappings = 1; + */ public Builder addMappings(org.xtreemfs.pbrpc.generatedinterfaces.DIR.AddressMapping value) { - if (value == null) { - throw new NullPointerException(); + if (mappingsBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + ensureMappingsIsMutable(); + mappings_.add(value); + onChanged(); + } else { + mappingsBuilder_.addMessage(value); } - if (result.mappings_.isEmpty()) { - result.mappings_ = new java.util.ArrayList(); + return this; + } + /** + * repeated .xtreemfs.pbrpc.AddressMapping mappings = 1; + */ + public Builder addMappings( + int index, org.xtreemfs.pbrpc.generatedinterfaces.DIR.AddressMapping value) { + if (mappingsBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + ensureMappingsIsMutable(); + mappings_.add(index, value); + onChanged(); + } else { + mappingsBuilder_.addMessage(index, value); + } + return this; + } + /** + * repeated .xtreemfs.pbrpc.AddressMapping mappings = 1; + */ + public Builder addMappings( + org.xtreemfs.pbrpc.generatedinterfaces.DIR.AddressMapping.Builder builderForValue) { + if (mappingsBuilder_ == null) { + ensureMappingsIsMutable(); + mappings_.add(builderForValue.build()); + onChanged(); + } else { + mappingsBuilder_.addMessage(builderForValue.build()); } - result.mappings_.add(value); return this; } - public Builder addMappings(org.xtreemfs.pbrpc.generatedinterfaces.DIR.AddressMapping.Builder builderForValue) { - if (result.mappings_.isEmpty()) { - result.mappings_ = new java.util.ArrayList(); + /** + * repeated .xtreemfs.pbrpc.AddressMapping mappings = 1; + */ + public Builder addMappings( + int index, org.xtreemfs.pbrpc.generatedinterfaces.DIR.AddressMapping.Builder builderForValue) { + if (mappingsBuilder_ == null) { + ensureMappingsIsMutable(); + mappings_.add(index, builderForValue.build()); + onChanged(); + } else { + mappingsBuilder_.addMessage(index, builderForValue.build()); } - result.mappings_.add(builderForValue.build()); return this; } + /** + * repeated .xtreemfs.pbrpc.AddressMapping mappings = 1; + */ public Builder addAllMappings( java.lang.Iterable values) { - if (result.mappings_.isEmpty()) { - result.mappings_ = new java.util.ArrayList(); + if (mappingsBuilder_ == null) { + ensureMappingsIsMutable(); + super.addAll(values, mappings_); + onChanged(); + } else { + mappingsBuilder_.addAllMessages(values); } - super.addAll(values, result.mappings_); return this; } + /** + * repeated .xtreemfs.pbrpc.AddressMapping mappings = 1; + */ public Builder clearMappings() { - result.mappings_ = java.util.Collections.emptyList(); + if (mappingsBuilder_ == null) { + mappings_ = java.util.Collections.emptyList(); + bitField0_ = (bitField0_ & ~0x00000001); + onChanged(); + } else { + mappingsBuilder_.clear(); + } return this; } - + /** + * repeated .xtreemfs.pbrpc.AddressMapping mappings = 1; + */ + public Builder removeMappings(int index) { + if (mappingsBuilder_ == null) { + ensureMappingsIsMutable(); + mappings_.remove(index); + onChanged(); + } else { + mappingsBuilder_.remove(index); + } + return this; + } + /** + * repeated .xtreemfs.pbrpc.AddressMapping mappings = 1; + */ + public org.xtreemfs.pbrpc.generatedinterfaces.DIR.AddressMapping.Builder getMappingsBuilder( + int index) { + return getMappingsFieldBuilder().getBuilder(index); + } + /** + * repeated .xtreemfs.pbrpc.AddressMapping mappings = 1; + */ + public org.xtreemfs.pbrpc.generatedinterfaces.DIR.AddressMappingOrBuilder getMappingsOrBuilder( + int index) { + if (mappingsBuilder_ == null) { + return mappings_.get(index); } else { + return mappingsBuilder_.getMessageOrBuilder(index); + } + } + /** + * repeated .xtreemfs.pbrpc.AddressMapping mappings = 1; + */ + public java.util.List + getMappingsOrBuilderList() { + if (mappingsBuilder_ != null) { + return mappingsBuilder_.getMessageOrBuilderList(); + } else { + return java.util.Collections.unmodifiableList(mappings_); + } + } + /** + * repeated .xtreemfs.pbrpc.AddressMapping mappings = 1; + */ + public org.xtreemfs.pbrpc.generatedinterfaces.DIR.AddressMapping.Builder addMappingsBuilder() { + return getMappingsFieldBuilder().addBuilder( + org.xtreemfs.pbrpc.generatedinterfaces.DIR.AddressMapping.getDefaultInstance()); + } + /** + * repeated .xtreemfs.pbrpc.AddressMapping mappings = 1; + */ + public org.xtreemfs.pbrpc.generatedinterfaces.DIR.AddressMapping.Builder addMappingsBuilder( + int index) { + return getMappingsFieldBuilder().addBuilder( + index, org.xtreemfs.pbrpc.generatedinterfaces.DIR.AddressMapping.getDefaultInstance()); + } + /** + * repeated .xtreemfs.pbrpc.AddressMapping mappings = 1; + */ + public java.util.List + getMappingsBuilderList() { + return getMappingsFieldBuilder().getBuilderList(); + } + private com.google.protobuf.RepeatedFieldBuilder< + org.xtreemfs.pbrpc.generatedinterfaces.DIR.AddressMapping, org.xtreemfs.pbrpc.generatedinterfaces.DIR.AddressMapping.Builder, org.xtreemfs.pbrpc.generatedinterfaces.DIR.AddressMappingOrBuilder> + getMappingsFieldBuilder() { + if (mappingsBuilder_ == null) { + mappingsBuilder_ = new com.google.protobuf.RepeatedFieldBuilder< + org.xtreemfs.pbrpc.generatedinterfaces.DIR.AddressMapping, org.xtreemfs.pbrpc.generatedinterfaces.DIR.AddressMapping.Builder, org.xtreemfs.pbrpc.generatedinterfaces.DIR.AddressMappingOrBuilder>( + mappings_, + ((bitField0_ & 0x00000001) == 0x00000001), + getParentForChildren(), + isClean()); + mappings_ = null; + } + return mappingsBuilder_; + } + // @@protoc_insertion_point(builder_scope:xtreemfs.pbrpc.AddressMappingSet) } - + static { defaultInstance = new AddressMappingSet(true); - org.xtreemfs.pbrpc.generatedinterfaces.DIR.internalForceInit(); defaultInstance.initFields(); } - + // @@protoc_insertion_point(class_scope:xtreemfs.pbrpc.AddressMappingSet) } - + + public interface DirServiceOrBuilder + extends com.google.protobuf.MessageOrBuilder { + + // required string address = 1; + /** + * required string address = 1; + */ + boolean hasAddress(); + /** + * required string address = 1; + */ + java.lang.String getAddress(); + /** + * required string address = 1; + */ + com.google.protobuf.ByteString + getAddressBytes(); + + // required fixed32 port = 2; + /** + * required fixed32 port = 2; + */ + boolean hasPort(); + /** + * required fixed32 port = 2; + */ + int getPort(); + + // required string protocol = 3; + /** + * required string protocol = 3; + */ + boolean hasProtocol(); + /** + * required string protocol = 3; + */ + java.lang.String getProtocol(); + /** + * required string protocol = 3; + */ + com.google.protobuf.ByteString + getProtocolBytes(); + + // required fixed32 interface_version = 4; + /** + * required fixed32 interface_version = 4; + */ + boolean hasInterfaceVersion(); + /** + * required fixed32 interface_version = 4; + */ + int getInterfaceVersion(); + } + /** + * Protobuf type {@code xtreemfs.pbrpc.DirService} + * + *
+   * DIR service address, used for auto discovery.
+   * 
+ */ public static final class DirService extends - com.google.protobuf.GeneratedMessage { + com.google.protobuf.GeneratedMessage + implements DirServiceOrBuilder { // Use DirService.newBuilder() to construct. - private DirService() { - initFields(); + private DirService(com.google.protobuf.GeneratedMessage.Builder builder) { + super(builder); + this.unknownFields = builder.getUnknownFields(); } - private DirService(boolean noInit) {} - + private DirService(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); } + private static final DirService defaultInstance; public static DirService getDefaultInstance() { return defaultInstance; } - + public DirService getDefaultInstanceForType() { return defaultInstance; } - + + private final com.google.protobuf.UnknownFieldSet unknownFields; + @java.lang.Override + public final com.google.protobuf.UnknownFieldSet + getUnknownFields() { + return this.unknownFields; + } + private DirService( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + initFields(); + int mutable_bitField0_ = 0; + com.google.protobuf.UnknownFieldSet.Builder unknownFields = + com.google.protobuf.UnknownFieldSet.newBuilder(); + try { + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch (tag) { + case 0: + done = true; + break; + default: { + if (!parseUnknownField(input, unknownFields, + extensionRegistry, tag)) { + done = true; + } + break; + } + case 10: { + bitField0_ |= 0x00000001; + address_ = input.readBytes(); + break; + } + case 21: { + bitField0_ |= 0x00000002; + port_ = input.readFixed32(); + break; + } + case 26: { + bitField0_ |= 0x00000004; + protocol_ = input.readBytes(); + break; + } + case 37: { + bitField0_ |= 0x00000008; + interfaceVersion_ = input.readFixed32(); + break; + } + } + } + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(this); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException( + e.getMessage()).setUnfinishedMessage(this); + } finally { + this.unknownFields = unknownFields.build(); + makeExtensionsImmutable(); + } + } public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { return org.xtreemfs.pbrpc.generatedinterfaces.DIR.internal_static_xtreemfs_pbrpc_DirService_descriptor; } - + protected com.google.protobuf.GeneratedMessage.FieldAccessorTable internalGetFieldAccessorTable() { - return org.xtreemfs.pbrpc.generatedinterfaces.DIR.internal_static_xtreemfs_pbrpc_DirService_fieldAccessorTable; + return org.xtreemfs.pbrpc.generatedinterfaces.DIR.internal_static_xtreemfs_pbrpc_DirService_fieldAccessorTable + .ensureFieldAccessorsInitialized( + org.xtreemfs.pbrpc.generatedinterfaces.DIR.DirService.class, org.xtreemfs.pbrpc.generatedinterfaces.DIR.DirService.Builder.class); } - + + public static com.google.protobuf.Parser PARSER = + new com.google.protobuf.AbstractParser() { + public DirService parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return new DirService(input, extensionRegistry); + } + }; + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; + } + + private int bitField0_; // required string address = 1; public static final int ADDRESS_FIELD_NUMBER = 1; - private boolean hasAddress; - private java.lang.String address_ = ""; - public boolean hasAddress() { return hasAddress; } - public java.lang.String getAddress() { return address_; } - + private java.lang.Object address_; + /** + * required string address = 1; + */ + public boolean hasAddress() { + return ((bitField0_ & 0x00000001) == 0x00000001); + } + /** + * required string address = 1; + */ + public java.lang.String getAddress() { + java.lang.Object ref = address_; + if (ref instanceof java.lang.String) { + return (java.lang.String) ref; + } else { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + if (bs.isValidUtf8()) { + address_ = s; + } + return s; + } + } + /** + * required string address = 1; + */ + public com.google.protobuf.ByteString + getAddressBytes() { + java.lang.Object ref = address_; + if (ref instanceof java.lang.String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + address_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + // required fixed32 port = 2; public static final int PORT_FIELD_NUMBER = 2; - private boolean hasPort; - private int port_ = 0; - public boolean hasPort() { return hasPort; } - public int getPort() { return port_; } - + private int port_; + /** + * required fixed32 port = 2; + */ + public boolean hasPort() { + return ((bitField0_ & 0x00000002) == 0x00000002); + } + /** + * required fixed32 port = 2; + */ + public int getPort() { + return port_; + } + // required string protocol = 3; public static final int PROTOCOL_FIELD_NUMBER = 3; - private boolean hasProtocol; - private java.lang.String protocol_ = ""; - public boolean hasProtocol() { return hasProtocol; } - public java.lang.String getProtocol() { return protocol_; } - + private java.lang.Object protocol_; + /** + * required string protocol = 3; + */ + public boolean hasProtocol() { + return ((bitField0_ & 0x00000004) == 0x00000004); + } + /** + * required string protocol = 3; + */ + public java.lang.String getProtocol() { + java.lang.Object ref = protocol_; + if (ref instanceof java.lang.String) { + return (java.lang.String) ref; + } else { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + if (bs.isValidUtf8()) { + protocol_ = s; + } + return s; + } + } + /** + * required string protocol = 3; + */ + public com.google.protobuf.ByteString + getProtocolBytes() { + java.lang.Object ref = protocol_; + if (ref instanceof java.lang.String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + protocol_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + // required fixed32 interface_version = 4; public static final int INTERFACE_VERSION_FIELD_NUMBER = 4; - private boolean hasInterfaceVersion; - private int interfaceVersion_ = 0; - public boolean hasInterfaceVersion() { return hasInterfaceVersion; } - public int getInterfaceVersion() { return interfaceVersion_; } - + private int interfaceVersion_; + /** + * required fixed32 interface_version = 4; + */ + public boolean hasInterfaceVersion() { + return ((bitField0_ & 0x00000008) == 0x00000008); + } + /** + * required fixed32 interface_version = 4; + */ + public int getInterfaceVersion() { + return interfaceVersion_; + } + private void initFields() { + address_ = ""; + port_ = 0; + protocol_ = ""; + interfaceVersion_ = 0; } + private byte memoizedIsInitialized = -1; public final boolean isInitialized() { - if (!hasAddress) return false; - if (!hasPort) return false; - if (!hasProtocol) return false; - if (!hasInterfaceVersion) return false; + byte isInitialized = memoizedIsInitialized; + if (isInitialized != -1) return isInitialized == 1; + + if (!hasAddress()) { + memoizedIsInitialized = 0; + return false; + } + if (!hasPort()) { + memoizedIsInitialized = 0; + return false; + } + if (!hasProtocol()) { + memoizedIsInitialized = 0; + return false; + } + if (!hasInterfaceVersion()) { + memoizedIsInitialized = 0; + return false; + } + memoizedIsInitialized = 1; return true; } - + public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException { getSerializedSize(); - if (hasAddress()) { - output.writeString(1, getAddress()); + if (((bitField0_ & 0x00000001) == 0x00000001)) { + output.writeBytes(1, getAddressBytes()); } - if (hasPort()) { - output.writeFixed32(2, getPort()); + if (((bitField0_ & 0x00000002) == 0x00000002)) { + output.writeFixed32(2, port_); } - if (hasProtocol()) { - output.writeString(3, getProtocol()); + if (((bitField0_ & 0x00000004) == 0x00000004)) { + output.writeBytes(3, getProtocolBytes()); } - if (hasInterfaceVersion()) { - output.writeFixed32(4, getInterfaceVersion()); + if (((bitField0_ & 0x00000008) == 0x00000008)) { + output.writeFixed32(4, interfaceVersion_); } getUnknownFields().writeTo(output); } - + private int memoizedSerializedSize = -1; public int getSerializedSize() { int size = memoizedSerializedSize; if (size != -1) return size; - + size = 0; - if (hasAddress()) { + if (((bitField0_ & 0x00000001) == 0x00000001)) { size += com.google.protobuf.CodedOutputStream - .computeStringSize(1, getAddress()); + .computeBytesSize(1, getAddressBytes()); } - if (hasPort()) { + if (((bitField0_ & 0x00000002) == 0x00000002)) { size += com.google.protobuf.CodedOutputStream - .computeFixed32Size(2, getPort()); + .computeFixed32Size(2, port_); } - if (hasProtocol()) { + if (((bitField0_ & 0x00000004) == 0x00000004)) { size += com.google.protobuf.CodedOutputStream - .computeStringSize(3, getProtocol()); + .computeBytesSize(3, getProtocolBytes()); } - if (hasInterfaceVersion()) { + if (((bitField0_ & 0x00000008) == 0x00000008)) { size += com.google.protobuf.CodedOutputStream - .computeFixed32Size(4, getInterfaceVersion()); + .computeFixed32Size(4, interfaceVersion_); } size += getUnknownFields().getSerializedSize(); memoizedSerializedSize = size; return size; } - + + private static final long serialVersionUID = 0L; + @java.lang.Override + protected java.lang.Object writeReplace() + throws java.io.ObjectStreamException { + return super.writeReplace(); + } + public static org.xtreemfs.pbrpc.generatedinterfaces.DIR.DirService parseFrom( com.google.protobuf.ByteString data) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data).buildParsed(); + return PARSER.parseFrom(data); } public static org.xtreemfs.pbrpc.generatedinterfaces.DIR.DirService parseFrom( com.google.protobuf.ByteString data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(data, extensionRegistry); } public static org.xtreemfs.pbrpc.generatedinterfaces.DIR.DirService parseFrom(byte[] data) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data).buildParsed(); + return PARSER.parseFrom(data); } public static org.xtreemfs.pbrpc.generatedinterfaces.DIR.DirService parseFrom( byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(data, extensionRegistry); } public static org.xtreemfs.pbrpc.generatedinterfaces.DIR.DirService parseFrom(java.io.InputStream input) throws java.io.IOException { - return newBuilder().mergeFrom(input).buildParsed(); + return PARSER.parseFrom(input); } public static org.xtreemfs.pbrpc.generatedinterfaces.DIR.DirService parseFrom( java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - return newBuilder().mergeFrom(input, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(input, extensionRegistry); } public static org.xtreemfs.pbrpc.generatedinterfaces.DIR.DirService parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException { - Builder builder = newBuilder(); - if (builder.mergeDelimitedFrom(input)) { - return builder.buildParsed(); - } else { - return null; - } + return PARSER.parseDelimitedFrom(input); } public static org.xtreemfs.pbrpc.generatedinterfaces.DIR.DirService parseDelimitedFrom( java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - Builder builder = newBuilder(); - if (builder.mergeDelimitedFrom(input, extensionRegistry)) { - return builder.buildParsed(); - } else { - return null; - } + return PARSER.parseDelimitedFrom(input, extensionRegistry); } public static org.xtreemfs.pbrpc.generatedinterfaces.DIR.DirService parseFrom( com.google.protobuf.CodedInputStream input) throws java.io.IOException { - return newBuilder().mergeFrom(input).buildParsed(); + return PARSER.parseFrom(input); } public static org.xtreemfs.pbrpc.generatedinterfaces.DIR.DirService parseFrom( com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - return newBuilder().mergeFrom(input, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(input, extensionRegistry); } - + public static Builder newBuilder() { return Builder.create(); } public Builder newBuilderForType() { return newBuilder(); } public static Builder newBuilder(org.xtreemfs.pbrpc.generatedinterfaces.DIR.DirService prototype) { return newBuilder().mergeFrom(prototype); } public Builder toBuilder() { return newBuilder(this); } - + + @java.lang.Override + protected Builder newBuilderForType( + com.google.protobuf.GeneratedMessage.BuilderParent parent) { + Builder builder = new Builder(parent); + return builder; + } + /** + * Protobuf type {@code xtreemfs.pbrpc.DirService} + * + *
+     * DIR service address, used for auto discovery.
+     * 
+ */ public static final class Builder extends - com.google.protobuf.GeneratedMessage.Builder { - private org.xtreemfs.pbrpc.generatedinterfaces.DIR.DirService result; - + com.google.protobuf.GeneratedMessage.Builder + implements org.xtreemfs.pbrpc.generatedinterfaces.DIR.DirServiceOrBuilder { + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return org.xtreemfs.pbrpc.generatedinterfaces.DIR.internal_static_xtreemfs_pbrpc_DirService_descriptor; + } + + protected com.google.protobuf.GeneratedMessage.FieldAccessorTable + internalGetFieldAccessorTable() { + return org.xtreemfs.pbrpc.generatedinterfaces.DIR.internal_static_xtreemfs_pbrpc_DirService_fieldAccessorTable + .ensureFieldAccessorsInitialized( + org.xtreemfs.pbrpc.generatedinterfaces.DIR.DirService.class, org.xtreemfs.pbrpc.generatedinterfaces.DIR.DirService.Builder.class); + } + // Construct using org.xtreemfs.pbrpc.generatedinterfaces.DIR.DirService.newBuilder() - private Builder() {} - - private static Builder create() { - Builder builder = new Builder(); - builder.result = new org.xtreemfs.pbrpc.generatedinterfaces.DIR.DirService(); - return builder; + private Builder() { + maybeForceBuilderInitialization(); } - - protected org.xtreemfs.pbrpc.generatedinterfaces.DIR.DirService internalGetResult() { - return result; + + private Builder( + com.google.protobuf.GeneratedMessage.BuilderParent parent) { + super(parent); + maybeForceBuilderInitialization(); } - - public Builder clear() { - if (result == null) { - throw new IllegalStateException( - "Cannot call clear() after build()."); + private void maybeForceBuilderInitialization() { + if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) { } - result = new org.xtreemfs.pbrpc.generatedinterfaces.DIR.DirService(); + } + private static Builder create() { + return new Builder(); + } + + public Builder clear() { + super.clear(); + address_ = ""; + bitField0_ = (bitField0_ & ~0x00000001); + port_ = 0; + bitField0_ = (bitField0_ & ~0x00000002); + protocol_ = ""; + bitField0_ = (bitField0_ & ~0x00000004); + interfaceVersion_ = 0; + bitField0_ = (bitField0_ & ~0x00000008); return this; } - + public Builder clone() { - return create().mergeFrom(result); + return create().mergeFrom(buildPartial()); } - + public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() { - return org.xtreemfs.pbrpc.generatedinterfaces.DIR.DirService.getDescriptor(); + return org.xtreemfs.pbrpc.generatedinterfaces.DIR.internal_static_xtreemfs_pbrpc_DirService_descriptor; } - + public org.xtreemfs.pbrpc.generatedinterfaces.DIR.DirService getDefaultInstanceForType() { return org.xtreemfs.pbrpc.generatedinterfaces.DIR.DirService.getDefaultInstance(); } - - public boolean isInitialized() { - return result.isInitialized(); - } + public org.xtreemfs.pbrpc.generatedinterfaces.DIR.DirService build() { - if (result != null && !isInitialized()) { + org.xtreemfs.pbrpc.generatedinterfaces.DIR.DirService result = buildPartial(); + if (!result.isInitialized()) { throw newUninitializedMessageException(result); } - return buildPartial(); - } - - private org.xtreemfs.pbrpc.generatedinterfaces.DIR.DirService buildParsed() - throws com.google.protobuf.InvalidProtocolBufferException { - if (!isInitialized()) { - throw newUninitializedMessageException( - result).asInvalidProtocolBufferException(); - } - return buildPartial(); + return result; } - + public org.xtreemfs.pbrpc.generatedinterfaces.DIR.DirService buildPartial() { - if (result == null) { - throw new IllegalStateException( - "build() has already been called on this Builder."); - } - org.xtreemfs.pbrpc.generatedinterfaces.DIR.DirService returnMe = result; - result = null; - return returnMe; + org.xtreemfs.pbrpc.generatedinterfaces.DIR.DirService result = new org.xtreemfs.pbrpc.generatedinterfaces.DIR.DirService(this); + int from_bitField0_ = bitField0_; + int to_bitField0_ = 0; + if (((from_bitField0_ & 0x00000001) == 0x00000001)) { + to_bitField0_ |= 0x00000001; + } + result.address_ = address_; + if (((from_bitField0_ & 0x00000002) == 0x00000002)) { + to_bitField0_ |= 0x00000002; + } + result.port_ = port_; + if (((from_bitField0_ & 0x00000004) == 0x00000004)) { + to_bitField0_ |= 0x00000004; + } + result.protocol_ = protocol_; + if (((from_bitField0_ & 0x00000008) == 0x00000008)) { + to_bitField0_ |= 0x00000008; + } + result.interfaceVersion_ = interfaceVersion_; + result.bitField0_ = to_bitField0_; + onBuilt(); + return result; } - + public Builder mergeFrom(com.google.protobuf.Message other) { if (other instanceof org.xtreemfs.pbrpc.generatedinterfaces.DIR.DirService) { return mergeFrom((org.xtreemfs.pbrpc.generatedinterfaces.DIR.DirService)other); @@ -1324,17 +3246,21 @@ public final class DIR { return this; } } - + public Builder mergeFrom(org.xtreemfs.pbrpc.generatedinterfaces.DIR.DirService other) { if (other == org.xtreemfs.pbrpc.generatedinterfaces.DIR.DirService.getDefaultInstance()) return this; if (other.hasAddress()) { - setAddress(other.getAddress()); + bitField0_ |= 0x00000001; + address_ = other.address_; + onChanged(); } if (other.hasPort()) { setPort(other.getPort()); } if (other.hasProtocol()) { - setProtocol(other.getProtocol()); + bitField0_ |= 0x00000004; + protocol_ = other.protocol_; + onChanged(); } if (other.hasInterfaceVersion()) { setInterfaceVersion(other.getInterfaceVersion()); @@ -1342,357 +3268,644 @@ public final class DIR { this.mergeUnknownFields(other.getUnknownFields()); return this; } - + + public final boolean isInitialized() { + if (!hasAddress()) { + + return false; + } + if (!hasPort()) { + + return false; + } + if (!hasProtocol()) { + + return false; + } + if (!hasInterfaceVersion()) { + + return false; + } + return true; + } + public Builder mergeFrom( com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - com.google.protobuf.UnknownFieldSet.Builder unknownFields = - com.google.protobuf.UnknownFieldSet.newBuilder( - this.getUnknownFields()); - while (true) { - int tag = input.readTag(); - switch (tag) { - case 0: - this.setUnknownFields(unknownFields.build()); - return this; - default: { - if (!parseUnknownField(input, unknownFields, - extensionRegistry, tag)) { - this.setUnknownFields(unknownFields.build()); - return this; - } - break; - } - case 10: { - setAddress(input.readString()); - break; - } - case 21: { - setPort(input.readFixed32()); - break; - } - case 26: { - setProtocol(input.readString()); - break; - } - case 37: { - setInterfaceVersion(input.readFixed32()); - break; - } + org.xtreemfs.pbrpc.generatedinterfaces.DIR.DirService parsedMessage = null; + try { + parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + parsedMessage = (org.xtreemfs.pbrpc.generatedinterfaces.DIR.DirService) e.getUnfinishedMessage(); + throw e; + } finally { + if (parsedMessage != null) { + mergeFrom(parsedMessage); } } + return this; } - - + private int bitField0_; + // required string address = 1; + private java.lang.Object address_ = ""; + /** + * required string address = 1; + */ public boolean hasAddress() { - return result.hasAddress(); + return ((bitField0_ & 0x00000001) == 0x00000001); } + /** + * required string address = 1; + */ public java.lang.String getAddress() { - return result.getAddress(); + java.lang.Object ref = address_; + if (!(ref instanceof java.lang.String)) { + java.lang.String s = ((com.google.protobuf.ByteString) ref) + .toStringUtf8(); + address_ = s; + return s; + } else { + return (java.lang.String) ref; + } + } + /** + * required string address = 1; + */ + public com.google.protobuf.ByteString + getAddressBytes() { + java.lang.Object ref = address_; + if (ref instanceof String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + address_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } } - public Builder setAddress(java.lang.String value) { + /** + * required string address = 1; + */ + public Builder setAddress( + java.lang.String value) { if (value == null) { throw new NullPointerException(); } - result.hasAddress = true; - result.address_ = value; + bitField0_ |= 0x00000001; + address_ = value; + onChanged(); return this; } + /** + * required string address = 1; + */ public Builder clearAddress() { - result.hasAddress = false; - result.address_ = getDefaultInstance().getAddress(); + bitField0_ = (bitField0_ & ~0x00000001); + address_ = getDefaultInstance().getAddress(); + onChanged(); return this; } - + /** + * required string address = 1; + */ + public Builder setAddressBytes( + com.google.protobuf.ByteString value) { + if (value == null) { + throw new NullPointerException(); + } + bitField0_ |= 0x00000001; + address_ = value; + onChanged(); + return this; + } + // required fixed32 port = 2; + private int port_ ; + /** + * required fixed32 port = 2; + */ public boolean hasPort() { - return result.hasPort(); + return ((bitField0_ & 0x00000002) == 0x00000002); } + /** + * required fixed32 port = 2; + */ public int getPort() { - return result.getPort(); + return port_; } + /** + * required fixed32 port = 2; + */ public Builder setPort(int value) { - result.hasPort = true; - result.port_ = value; + bitField0_ |= 0x00000002; + port_ = value; + onChanged(); return this; } + /** + * required fixed32 port = 2; + */ public Builder clearPort() { - result.hasPort = false; - result.port_ = 0; + bitField0_ = (bitField0_ & ~0x00000002); + port_ = 0; + onChanged(); return this; } - + // required string protocol = 3; + private java.lang.Object protocol_ = ""; + /** + * required string protocol = 3; + */ public boolean hasProtocol() { - return result.hasProtocol(); + return ((bitField0_ & 0x00000004) == 0x00000004); } + /** + * required string protocol = 3; + */ public java.lang.String getProtocol() { - return result.getProtocol(); + java.lang.Object ref = protocol_; + if (!(ref instanceof java.lang.String)) { + java.lang.String s = ((com.google.protobuf.ByteString) ref) + .toStringUtf8(); + protocol_ = s; + return s; + } else { + return (java.lang.String) ref; + } + } + /** + * required string protocol = 3; + */ + public com.google.protobuf.ByteString + getProtocolBytes() { + java.lang.Object ref = protocol_; + if (ref instanceof String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + protocol_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } } - public Builder setProtocol(java.lang.String value) { + /** + * required string protocol = 3; + */ + public Builder setProtocol( + java.lang.String value) { if (value == null) { throw new NullPointerException(); } - result.hasProtocol = true; - result.protocol_ = value; + bitField0_ |= 0x00000004; + protocol_ = value; + onChanged(); return this; } + /** + * required string protocol = 3; + */ public Builder clearProtocol() { - result.hasProtocol = false; - result.protocol_ = getDefaultInstance().getProtocol(); + bitField0_ = (bitField0_ & ~0x00000004); + protocol_ = getDefaultInstance().getProtocol(); + onChanged(); return this; } - + /** + * required string protocol = 3; + */ + public Builder setProtocolBytes( + com.google.protobuf.ByteString value) { + if (value == null) { + throw new NullPointerException(); + } + bitField0_ |= 0x00000004; + protocol_ = value; + onChanged(); + return this; + } + // required fixed32 interface_version = 4; + private int interfaceVersion_ ; + /** + * required fixed32 interface_version = 4; + */ public boolean hasInterfaceVersion() { - return result.hasInterfaceVersion(); + return ((bitField0_ & 0x00000008) == 0x00000008); } + /** + * required fixed32 interface_version = 4; + */ public int getInterfaceVersion() { - return result.getInterfaceVersion(); + return interfaceVersion_; } + /** + * required fixed32 interface_version = 4; + */ public Builder setInterfaceVersion(int value) { - result.hasInterfaceVersion = true; - result.interfaceVersion_ = value; + bitField0_ |= 0x00000008; + interfaceVersion_ = value; + onChanged(); return this; } + /** + * required fixed32 interface_version = 4; + */ public Builder clearInterfaceVersion() { - result.hasInterfaceVersion = false; - result.interfaceVersion_ = 0; + bitField0_ = (bitField0_ & ~0x00000008); + interfaceVersion_ = 0; + onChanged(); return this; } - + // @@protoc_insertion_point(builder_scope:xtreemfs.pbrpc.DirService) } - + static { defaultInstance = new DirService(true); - org.xtreemfs.pbrpc.generatedinterfaces.DIR.internalForceInit(); defaultInstance.initFields(); } - + // @@protoc_insertion_point(class_scope:xtreemfs.pbrpc.DirService) } - + + public interface ServiceDataMapOrBuilder + extends com.google.protobuf.MessageOrBuilder { + + // repeated .xtreemfs.pbrpc.KeyValuePair data = 1; + /** + * repeated .xtreemfs.pbrpc.KeyValuePair data = 1; + */ + java.util.List + getDataList(); + /** + * repeated .xtreemfs.pbrpc.KeyValuePair data = 1; + */ + org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.KeyValuePair getData(int index); + /** + * repeated .xtreemfs.pbrpc.KeyValuePair data = 1; + */ + int getDataCount(); + /** + * repeated .xtreemfs.pbrpc.KeyValuePair data = 1; + */ + java.util.List + getDataOrBuilderList(); + /** + * repeated .xtreemfs.pbrpc.KeyValuePair data = 1; + */ + org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.KeyValuePairOrBuilder getDataOrBuilder( + int index); + } + /** + * Protobuf type {@code xtreemfs.pbrpc.ServiceDataMap} + * + *
+   * Key/Value pairs for a service.
+   * 
+ */ public static final class ServiceDataMap extends - com.google.protobuf.GeneratedMessage { + com.google.protobuf.GeneratedMessage + implements ServiceDataMapOrBuilder { // Use ServiceDataMap.newBuilder() to construct. - private ServiceDataMap() { - initFields(); + private ServiceDataMap(com.google.protobuf.GeneratedMessage.Builder builder) { + super(builder); + this.unknownFields = builder.getUnknownFields(); } - private ServiceDataMap(boolean noInit) {} - + private ServiceDataMap(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); } + private static final ServiceDataMap defaultInstance; public static ServiceDataMap getDefaultInstance() { return defaultInstance; } - + public ServiceDataMap getDefaultInstanceForType() { return defaultInstance; } - + + private final com.google.protobuf.UnknownFieldSet unknownFields; + @java.lang.Override + public final com.google.protobuf.UnknownFieldSet + getUnknownFields() { + return this.unknownFields; + } + private ServiceDataMap( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + initFields(); + int mutable_bitField0_ = 0; + com.google.protobuf.UnknownFieldSet.Builder unknownFields = + com.google.protobuf.UnknownFieldSet.newBuilder(); + try { + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch (tag) { + case 0: + done = true; + break; + default: { + if (!parseUnknownField(input, unknownFields, + extensionRegistry, tag)) { + done = true; + } + break; + } + case 10: { + if (!((mutable_bitField0_ & 0x00000001) == 0x00000001)) { + data_ = new java.util.ArrayList(); + mutable_bitField0_ |= 0x00000001; + } + data_.add(input.readMessage(org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.KeyValuePair.PARSER, extensionRegistry)); + break; + } + } + } + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(this); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException( + e.getMessage()).setUnfinishedMessage(this); + } finally { + if (((mutable_bitField0_ & 0x00000001) == 0x00000001)) { + data_ = java.util.Collections.unmodifiableList(data_); + } + this.unknownFields = unknownFields.build(); + makeExtensionsImmutable(); + } + } public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { return org.xtreemfs.pbrpc.generatedinterfaces.DIR.internal_static_xtreemfs_pbrpc_ServiceDataMap_descriptor; } - + protected com.google.protobuf.GeneratedMessage.FieldAccessorTable internalGetFieldAccessorTable() { - return org.xtreemfs.pbrpc.generatedinterfaces.DIR.internal_static_xtreemfs_pbrpc_ServiceDataMap_fieldAccessorTable; + return org.xtreemfs.pbrpc.generatedinterfaces.DIR.internal_static_xtreemfs_pbrpc_ServiceDataMap_fieldAccessorTable + .ensureFieldAccessorsInitialized( + org.xtreemfs.pbrpc.generatedinterfaces.DIR.ServiceDataMap.class, org.xtreemfs.pbrpc.generatedinterfaces.DIR.ServiceDataMap.Builder.class); } - + + public static com.google.protobuf.Parser PARSER = + new com.google.protobuf.AbstractParser() { + public ServiceDataMap parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return new ServiceDataMap(input, extensionRegistry); + } + }; + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; + } + // repeated .xtreemfs.pbrpc.KeyValuePair data = 1; public static final int DATA_FIELD_NUMBER = 1; - private java.util.List data_ = - java.util.Collections.emptyList(); + private java.util.List data_; + /** + * repeated .xtreemfs.pbrpc.KeyValuePair data = 1; + */ public java.util.List getDataList() { return data_; } - public int getDataCount() { return data_.size(); } + /** + * repeated .xtreemfs.pbrpc.KeyValuePair data = 1; + */ + public java.util.List + getDataOrBuilderList() { + return data_; + } + /** + * repeated .xtreemfs.pbrpc.KeyValuePair data = 1; + */ + public int getDataCount() { + return data_.size(); + } + /** + * repeated .xtreemfs.pbrpc.KeyValuePair data = 1; + */ public org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.KeyValuePair getData(int index) { return data_.get(index); } - + /** + * repeated .xtreemfs.pbrpc.KeyValuePair data = 1; + */ + public org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.KeyValuePairOrBuilder getDataOrBuilder( + int index) { + return data_.get(index); + } + private void initFields() { + data_ = java.util.Collections.emptyList(); } + private byte memoizedIsInitialized = -1; public final boolean isInitialized() { - for (org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.KeyValuePair element : getDataList()) { - if (!element.isInitialized()) return false; + byte isInitialized = memoizedIsInitialized; + if (isInitialized != -1) return isInitialized == 1; + + for (int i = 0; i < getDataCount(); i++) { + if (!getData(i).isInitialized()) { + memoizedIsInitialized = 0; + return false; + } } + memoizedIsInitialized = 1; return true; } - + public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException { getSerializedSize(); - for (org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.KeyValuePair element : getDataList()) { - output.writeMessage(1, element); + for (int i = 0; i < data_.size(); i++) { + output.writeMessage(1, data_.get(i)); } getUnknownFields().writeTo(output); } - + private int memoizedSerializedSize = -1; public int getSerializedSize() { int size = memoizedSerializedSize; if (size != -1) return size; - + size = 0; - for (org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.KeyValuePair element : getDataList()) { + for (int i = 0; i < data_.size(); i++) { size += com.google.protobuf.CodedOutputStream - .computeMessageSize(1, element); + .computeMessageSize(1, data_.get(i)); } size += getUnknownFields().getSerializedSize(); memoizedSerializedSize = size; return size; } - + + private static final long serialVersionUID = 0L; + @java.lang.Override + protected java.lang.Object writeReplace() + throws java.io.ObjectStreamException { + return super.writeReplace(); + } + public static org.xtreemfs.pbrpc.generatedinterfaces.DIR.ServiceDataMap parseFrom( com.google.protobuf.ByteString data) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data).buildParsed(); + return PARSER.parseFrom(data); } public static org.xtreemfs.pbrpc.generatedinterfaces.DIR.ServiceDataMap parseFrom( com.google.protobuf.ByteString data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(data, extensionRegistry); } public static org.xtreemfs.pbrpc.generatedinterfaces.DIR.ServiceDataMap parseFrom(byte[] data) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data).buildParsed(); + return PARSER.parseFrom(data); } public static org.xtreemfs.pbrpc.generatedinterfaces.DIR.ServiceDataMap parseFrom( byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(data, extensionRegistry); } public static org.xtreemfs.pbrpc.generatedinterfaces.DIR.ServiceDataMap parseFrom(java.io.InputStream input) throws java.io.IOException { - return newBuilder().mergeFrom(input).buildParsed(); + return PARSER.parseFrom(input); } public static org.xtreemfs.pbrpc.generatedinterfaces.DIR.ServiceDataMap parseFrom( java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - return newBuilder().mergeFrom(input, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(input, extensionRegistry); } public static org.xtreemfs.pbrpc.generatedinterfaces.DIR.ServiceDataMap parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException { - Builder builder = newBuilder(); - if (builder.mergeDelimitedFrom(input)) { - return builder.buildParsed(); - } else { - return null; - } + return PARSER.parseDelimitedFrom(input); } public static org.xtreemfs.pbrpc.generatedinterfaces.DIR.ServiceDataMap parseDelimitedFrom( java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - Builder builder = newBuilder(); - if (builder.mergeDelimitedFrom(input, extensionRegistry)) { - return builder.buildParsed(); - } else { - return null; - } + return PARSER.parseDelimitedFrom(input, extensionRegistry); } public static org.xtreemfs.pbrpc.generatedinterfaces.DIR.ServiceDataMap parseFrom( com.google.protobuf.CodedInputStream input) throws java.io.IOException { - return newBuilder().mergeFrom(input).buildParsed(); + return PARSER.parseFrom(input); } public static org.xtreemfs.pbrpc.generatedinterfaces.DIR.ServiceDataMap parseFrom( com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - return newBuilder().mergeFrom(input, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(input, extensionRegistry); } - + public static Builder newBuilder() { return Builder.create(); } public Builder newBuilderForType() { return newBuilder(); } public static Builder newBuilder(org.xtreemfs.pbrpc.generatedinterfaces.DIR.ServiceDataMap prototype) { return newBuilder().mergeFrom(prototype); } public Builder toBuilder() { return newBuilder(this); } - + + @java.lang.Override + protected Builder newBuilderForType( + com.google.protobuf.GeneratedMessage.BuilderParent parent) { + Builder builder = new Builder(parent); + return builder; + } + /** + * Protobuf type {@code xtreemfs.pbrpc.ServiceDataMap} + * + *
+     * Key/Value pairs for a service.
+     * 
+ */ public static final class Builder extends - com.google.protobuf.GeneratedMessage.Builder { - private org.xtreemfs.pbrpc.generatedinterfaces.DIR.ServiceDataMap result; - + com.google.protobuf.GeneratedMessage.Builder + implements org.xtreemfs.pbrpc.generatedinterfaces.DIR.ServiceDataMapOrBuilder { + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return org.xtreemfs.pbrpc.generatedinterfaces.DIR.internal_static_xtreemfs_pbrpc_ServiceDataMap_descriptor; + } + + protected com.google.protobuf.GeneratedMessage.FieldAccessorTable + internalGetFieldAccessorTable() { + return org.xtreemfs.pbrpc.generatedinterfaces.DIR.internal_static_xtreemfs_pbrpc_ServiceDataMap_fieldAccessorTable + .ensureFieldAccessorsInitialized( + org.xtreemfs.pbrpc.generatedinterfaces.DIR.ServiceDataMap.class, org.xtreemfs.pbrpc.generatedinterfaces.DIR.ServiceDataMap.Builder.class); + } + // Construct using org.xtreemfs.pbrpc.generatedinterfaces.DIR.ServiceDataMap.newBuilder() - private Builder() {} - - private static Builder create() { - Builder builder = new Builder(); - builder.result = new org.xtreemfs.pbrpc.generatedinterfaces.DIR.ServiceDataMap(); - return builder; + private Builder() { + maybeForceBuilderInitialization(); } - - protected org.xtreemfs.pbrpc.generatedinterfaces.DIR.ServiceDataMap internalGetResult() { - return result; + + private Builder( + com.google.protobuf.GeneratedMessage.BuilderParent parent) { + super(parent); + maybeForceBuilderInitialization(); } - + private void maybeForceBuilderInitialization() { + if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) { + getDataFieldBuilder(); + } + } + private static Builder create() { + return new Builder(); + } + public Builder clear() { - if (result == null) { - throw new IllegalStateException( - "Cannot call clear() after build()."); + super.clear(); + if (dataBuilder_ == null) { + data_ = java.util.Collections.emptyList(); + bitField0_ = (bitField0_ & ~0x00000001); + } else { + dataBuilder_.clear(); } - result = new org.xtreemfs.pbrpc.generatedinterfaces.DIR.ServiceDataMap(); return this; } - + public Builder clone() { - return create().mergeFrom(result); + return create().mergeFrom(buildPartial()); } - + public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() { - return org.xtreemfs.pbrpc.generatedinterfaces.DIR.ServiceDataMap.getDescriptor(); + return org.xtreemfs.pbrpc.generatedinterfaces.DIR.internal_static_xtreemfs_pbrpc_ServiceDataMap_descriptor; } - + public org.xtreemfs.pbrpc.generatedinterfaces.DIR.ServiceDataMap getDefaultInstanceForType() { return org.xtreemfs.pbrpc.generatedinterfaces.DIR.ServiceDataMap.getDefaultInstance(); } - - public boolean isInitialized() { - return result.isInitialized(); - } + public org.xtreemfs.pbrpc.generatedinterfaces.DIR.ServiceDataMap build() { - if (result != null && !isInitialized()) { + org.xtreemfs.pbrpc.generatedinterfaces.DIR.ServiceDataMap result = buildPartial(); + if (!result.isInitialized()) { throw newUninitializedMessageException(result); } - return buildPartial(); - } - - private org.xtreemfs.pbrpc.generatedinterfaces.DIR.ServiceDataMap buildParsed() - throws com.google.protobuf.InvalidProtocolBufferException { - if (!isInitialized()) { - throw newUninitializedMessageException( - result).asInvalidProtocolBufferException(); - } - return buildPartial(); + return result; } - + public org.xtreemfs.pbrpc.generatedinterfaces.DIR.ServiceDataMap buildPartial() { - if (result == null) { - throw new IllegalStateException( - "build() has already been called on this Builder."); - } - if (result.data_ != java.util.Collections.EMPTY_LIST) { - result.data_ = - java.util.Collections.unmodifiableList(result.data_); + org.xtreemfs.pbrpc.generatedinterfaces.DIR.ServiceDataMap result = new org.xtreemfs.pbrpc.generatedinterfaces.DIR.ServiceDataMap(this); + int from_bitField0_ = bitField0_; + if (dataBuilder_ == null) { + if (((bitField0_ & 0x00000001) == 0x00000001)) { + data_ = java.util.Collections.unmodifiableList(data_); + bitField0_ = (bitField0_ & ~0x00000001); + } + result.data_ = data_; + } else { + result.data_ = dataBuilder_.build(); } - org.xtreemfs.pbrpc.generatedinterfaces.DIR.ServiceDataMap returnMe = result; - result = null; - return returnMe; + onBuilt(); + return result; } - + public Builder mergeFrom(com.google.protobuf.Message other) { if (other instanceof org.xtreemfs.pbrpc.generatedinterfaces.DIR.ServiceDataMap) { return mergeFrom((org.xtreemfs.pbrpc.generatedinterfaces.DIR.ServiceDataMap)other); @@ -1701,399 +3914,1096 @@ public final class DIR { return this; } } - + public Builder mergeFrom(org.xtreemfs.pbrpc.generatedinterfaces.DIR.ServiceDataMap other) { if (other == org.xtreemfs.pbrpc.generatedinterfaces.DIR.ServiceDataMap.getDefaultInstance()) return this; - if (!other.data_.isEmpty()) { - if (result.data_.isEmpty()) { - result.data_ = new java.util.ArrayList(); + if (dataBuilder_ == null) { + if (!other.data_.isEmpty()) { + if (data_.isEmpty()) { + data_ = other.data_; + bitField0_ = (bitField0_ & ~0x00000001); + } else { + ensureDataIsMutable(); + data_.addAll(other.data_); + } + onChanged(); + } + } else { + if (!other.data_.isEmpty()) { + if (dataBuilder_.isEmpty()) { + dataBuilder_.dispose(); + dataBuilder_ = null; + data_ = other.data_; + bitField0_ = (bitField0_ & ~0x00000001); + dataBuilder_ = + com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ? + getDataFieldBuilder() : null; + } else { + dataBuilder_.addAllMessages(other.data_); + } } - result.data_.addAll(other.data_); } this.mergeUnknownFields(other.getUnknownFields()); return this; } - + + public final boolean isInitialized() { + for (int i = 0; i < getDataCount(); i++) { + if (!getData(i).isInitialized()) { + + return false; + } + } + return true; + } + public Builder mergeFrom( com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - com.google.protobuf.UnknownFieldSet.Builder unknownFields = - com.google.protobuf.UnknownFieldSet.newBuilder( - this.getUnknownFields()); - while (true) { - int tag = input.readTag(); - switch (tag) { - case 0: - this.setUnknownFields(unknownFields.build()); - return this; - default: { - if (!parseUnknownField(input, unknownFields, - extensionRegistry, tag)) { - this.setUnknownFields(unknownFields.build()); - return this; - } - break; - } - case 10: { - org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.KeyValuePair.Builder subBuilder = org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.KeyValuePair.newBuilder(); - input.readMessage(subBuilder, extensionRegistry); - addData(subBuilder.buildPartial()); - break; - } + org.xtreemfs.pbrpc.generatedinterfaces.DIR.ServiceDataMap parsedMessage = null; + try { + parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + parsedMessage = (org.xtreemfs.pbrpc.generatedinterfaces.DIR.ServiceDataMap) e.getUnfinishedMessage(); + throw e; + } finally { + if (parsedMessage != null) { + mergeFrom(parsedMessage); } } + return this; } - - + private int bitField0_; + // repeated .xtreemfs.pbrpc.KeyValuePair data = 1; + private java.util.List data_ = + java.util.Collections.emptyList(); + private void ensureDataIsMutable() { + if (!((bitField0_ & 0x00000001) == 0x00000001)) { + data_ = new java.util.ArrayList(data_); + bitField0_ |= 0x00000001; + } + } + + private com.google.protobuf.RepeatedFieldBuilder< + org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.KeyValuePair, org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.KeyValuePair.Builder, org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.KeyValuePairOrBuilder> dataBuilder_; + + /** + * repeated .xtreemfs.pbrpc.KeyValuePair data = 1; + */ public java.util.List getDataList() { - return java.util.Collections.unmodifiableList(result.data_); + if (dataBuilder_ == null) { + return java.util.Collections.unmodifiableList(data_); + } else { + return dataBuilder_.getMessageList(); + } } + /** + * repeated .xtreemfs.pbrpc.KeyValuePair data = 1; + */ public int getDataCount() { - return result.getDataCount(); + if (dataBuilder_ == null) { + return data_.size(); + } else { + return dataBuilder_.getCount(); + } } + /** + * repeated .xtreemfs.pbrpc.KeyValuePair data = 1; + */ public org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.KeyValuePair getData(int index) { - return result.getData(index); + if (dataBuilder_ == null) { + return data_.get(index); + } else { + return dataBuilder_.getMessage(index); + } } - public Builder setData(int index, org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.KeyValuePair value) { - if (value == null) { - throw new NullPointerException(); + /** + * repeated .xtreemfs.pbrpc.KeyValuePair data = 1; + */ + public Builder setData( + int index, org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.KeyValuePair value) { + if (dataBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + ensureDataIsMutable(); + data_.set(index, value); + onChanged(); + } else { + dataBuilder_.setMessage(index, value); } - result.data_.set(index, value); return this; } - public Builder setData(int index, org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.KeyValuePair.Builder builderForValue) { - result.data_.set(index, builderForValue.build()); + /** + * repeated .xtreemfs.pbrpc.KeyValuePair data = 1; + */ + public Builder setData( + int index, org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.KeyValuePair.Builder builderForValue) { + if (dataBuilder_ == null) { + ensureDataIsMutable(); + data_.set(index, builderForValue.build()); + onChanged(); + } else { + dataBuilder_.setMessage(index, builderForValue.build()); + } return this; } + /** + * repeated .xtreemfs.pbrpc.KeyValuePair data = 1; + */ public Builder addData(org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.KeyValuePair value) { - if (value == null) { - throw new NullPointerException(); + if (dataBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + ensureDataIsMutable(); + data_.add(value); + onChanged(); + } else { + dataBuilder_.addMessage(value); + } + return this; + } + /** + * repeated .xtreemfs.pbrpc.KeyValuePair data = 1; + */ + public Builder addData( + int index, org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.KeyValuePair value) { + if (dataBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + ensureDataIsMutable(); + data_.add(index, value); + onChanged(); + } else { + dataBuilder_.addMessage(index, value); } - if (result.data_.isEmpty()) { - result.data_ = new java.util.ArrayList(); + return this; + } + /** + * repeated .xtreemfs.pbrpc.KeyValuePair data = 1; + */ + public Builder addData( + org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.KeyValuePair.Builder builderForValue) { + if (dataBuilder_ == null) { + ensureDataIsMutable(); + data_.add(builderForValue.build()); + onChanged(); + } else { + dataBuilder_.addMessage(builderForValue.build()); } - result.data_.add(value); return this; } - public Builder addData(org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.KeyValuePair.Builder builderForValue) { - if (result.data_.isEmpty()) { - result.data_ = new java.util.ArrayList(); + /** + * repeated .xtreemfs.pbrpc.KeyValuePair data = 1; + */ + public Builder addData( + int index, org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.KeyValuePair.Builder builderForValue) { + if (dataBuilder_ == null) { + ensureDataIsMutable(); + data_.add(index, builderForValue.build()); + onChanged(); + } else { + dataBuilder_.addMessage(index, builderForValue.build()); } - result.data_.add(builderForValue.build()); return this; } + /** + * repeated .xtreemfs.pbrpc.KeyValuePair data = 1; + */ public Builder addAllData( java.lang.Iterable values) { - if (result.data_.isEmpty()) { - result.data_ = new java.util.ArrayList(); + if (dataBuilder_ == null) { + ensureDataIsMutable(); + super.addAll(values, data_); + onChanged(); + } else { + dataBuilder_.addAllMessages(values); } - super.addAll(values, result.data_); return this; } + /** + * repeated .xtreemfs.pbrpc.KeyValuePair data = 1; + */ public Builder clearData() { - result.data_ = java.util.Collections.emptyList(); + if (dataBuilder_ == null) { + data_ = java.util.Collections.emptyList(); + bitField0_ = (bitField0_ & ~0x00000001); + onChanged(); + } else { + dataBuilder_.clear(); + } return this; } - + /** + * repeated .xtreemfs.pbrpc.KeyValuePair data = 1; + */ + public Builder removeData(int index) { + if (dataBuilder_ == null) { + ensureDataIsMutable(); + data_.remove(index); + onChanged(); + } else { + dataBuilder_.remove(index); + } + return this; + } + /** + * repeated .xtreemfs.pbrpc.KeyValuePair data = 1; + */ + public org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.KeyValuePair.Builder getDataBuilder( + int index) { + return getDataFieldBuilder().getBuilder(index); + } + /** + * repeated .xtreemfs.pbrpc.KeyValuePair data = 1; + */ + public org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.KeyValuePairOrBuilder getDataOrBuilder( + int index) { + if (dataBuilder_ == null) { + return data_.get(index); } else { + return dataBuilder_.getMessageOrBuilder(index); + } + } + /** + * repeated .xtreemfs.pbrpc.KeyValuePair data = 1; + */ + public java.util.List + getDataOrBuilderList() { + if (dataBuilder_ != null) { + return dataBuilder_.getMessageOrBuilderList(); + } else { + return java.util.Collections.unmodifiableList(data_); + } + } + /** + * repeated .xtreemfs.pbrpc.KeyValuePair data = 1; + */ + public org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.KeyValuePair.Builder addDataBuilder() { + return getDataFieldBuilder().addBuilder( + org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.KeyValuePair.getDefaultInstance()); + } + /** + * repeated .xtreemfs.pbrpc.KeyValuePair data = 1; + */ + public org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.KeyValuePair.Builder addDataBuilder( + int index) { + return getDataFieldBuilder().addBuilder( + index, org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.KeyValuePair.getDefaultInstance()); + } + /** + * repeated .xtreemfs.pbrpc.KeyValuePair data = 1; + */ + public java.util.List + getDataBuilderList() { + return getDataFieldBuilder().getBuilderList(); + } + private com.google.protobuf.RepeatedFieldBuilder< + org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.KeyValuePair, org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.KeyValuePair.Builder, org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.KeyValuePairOrBuilder> + getDataFieldBuilder() { + if (dataBuilder_ == null) { + dataBuilder_ = new com.google.protobuf.RepeatedFieldBuilder< + org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.KeyValuePair, org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.KeyValuePair.Builder, org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.KeyValuePairOrBuilder>( + data_, + ((bitField0_ & 0x00000001) == 0x00000001), + getParentForChildren(), + isClean()); + data_ = null; + } + return dataBuilder_; + } + // @@protoc_insertion_point(builder_scope:xtreemfs.pbrpc.ServiceDataMap) } - + static { defaultInstance = new ServiceDataMap(true); - org.xtreemfs.pbrpc.generatedinterfaces.DIR.internalForceInit(); defaultInstance.initFields(); } - + // @@protoc_insertion_point(class_scope:xtreemfs.pbrpc.ServiceDataMap) } - + + public interface ServiceOrBuilder + extends com.google.protobuf.MessageOrBuilder { + + // required .xtreemfs.pbrpc.ServiceType type = 1; + /** + * required .xtreemfs.pbrpc.ServiceType type = 1; + */ + boolean hasType(); + /** + * required .xtreemfs.pbrpc.ServiceType type = 1; + */ + org.xtreemfs.pbrpc.generatedinterfaces.DIR.ServiceType getType(); + + // required string uuid = 2; + /** + * required string uuid = 2; + * + *
+     * Service uuid, e.g. volume UUID.
+     * 
+ */ + boolean hasUuid(); + /** + * required string uuid = 2; + * + *
+     * Service uuid, e.g. volume UUID.
+     * 
+ */ + java.lang.String getUuid(); + /** + * required string uuid = 2; + * + *
+     * Service uuid, e.g. volume UUID.
+     * 
+ */ + com.google.protobuf.ByteString + getUuidBytes(); + + // required fixed64 version = 3; + /** + * required fixed64 version = 3; + * + *
+     * Version of this record, assigned by the DIR on write.
+     * 
+ */ + boolean hasVersion(); + /** + * required fixed64 version = 3; + * + *
+     * Version of this record, assigned by the DIR on write.
+     * 
+ */ + long getVersion(); + + // required string name = 4; + /** + * required string name = 4; + * + *
+     * Service name, e.g. volume name.
+     * 
+ */ + boolean hasName(); + /** + * required string name = 4; + * + *
+     * Service name, e.g. volume name.
+     * 
+ */ + java.lang.String getName(); + /** + * required string name = 4; + * + *
+     * Service name, e.g. volume name.
+     * 
+ */ + com.google.protobuf.ByteString + getNameBytes(); + + // required fixed64 last_updated_s = 5; + /** + * required fixed64 last_updated_s = 5; + * + *
+     * Timestamp of last update in global XtreemFS time, assigned
+     * by the DIR on write.
+     * 
+ */ + boolean hasLastUpdatedS(); + /** + * required fixed64 last_updated_s = 5; + * + *
+     * Timestamp of last update in global XtreemFS time, assigned
+     * by the DIR on write.
+     * 
+ */ + long getLastUpdatedS(); + + // required .xtreemfs.pbrpc.ServiceDataMap data = 6; + /** + * required .xtreemfs.pbrpc.ServiceDataMap data = 6; + * + *
+     * Service details including service state.
+     * 
+ */ + boolean hasData(); + /** + * required .xtreemfs.pbrpc.ServiceDataMap data = 6; + * + *
+     * Service details including service state.
+     * 
+ */ + org.xtreemfs.pbrpc.generatedinterfaces.DIR.ServiceDataMap getData(); + /** + * required .xtreemfs.pbrpc.ServiceDataMap data = 6; + * + *
+     * Service details including service state.
+     * 
+ */ + org.xtreemfs.pbrpc.generatedinterfaces.DIR.ServiceDataMapOrBuilder getDataOrBuilder(); + } + /** + * Protobuf type {@code xtreemfs.pbrpc.Service} + * + *
+   * Service data in DIR.
+   * 
+ */ public static final class Service extends - com.google.protobuf.GeneratedMessage { + com.google.protobuf.GeneratedMessage + implements ServiceOrBuilder { // Use Service.newBuilder() to construct. - private Service() { - initFields(); + private Service(com.google.protobuf.GeneratedMessage.Builder builder) { + super(builder); + this.unknownFields = builder.getUnknownFields(); } - private Service(boolean noInit) {} - + private Service(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); } + private static final Service defaultInstance; public static Service getDefaultInstance() { return defaultInstance; } - + public Service getDefaultInstanceForType() { return defaultInstance; } - + + private final com.google.protobuf.UnknownFieldSet unknownFields; + @java.lang.Override + public final com.google.protobuf.UnknownFieldSet + getUnknownFields() { + return this.unknownFields; + } + private Service( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + initFields(); + int mutable_bitField0_ = 0; + com.google.protobuf.UnknownFieldSet.Builder unknownFields = + com.google.protobuf.UnknownFieldSet.newBuilder(); + try { + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch (tag) { + case 0: + done = true; + break; + default: { + if (!parseUnknownField(input, unknownFields, + extensionRegistry, tag)) { + done = true; + } + break; + } + case 8: { + int rawValue = input.readEnum(); + org.xtreemfs.pbrpc.generatedinterfaces.DIR.ServiceType value = org.xtreemfs.pbrpc.generatedinterfaces.DIR.ServiceType.valueOf(rawValue); + if (value == null) { + unknownFields.mergeVarintField(1, rawValue); + } else { + bitField0_ |= 0x00000001; + type_ = value; + } + break; + } + case 18: { + bitField0_ |= 0x00000002; + uuid_ = input.readBytes(); + break; + } + case 25: { + bitField0_ |= 0x00000004; + version_ = input.readFixed64(); + break; + } + case 34: { + bitField0_ |= 0x00000008; + name_ = input.readBytes(); + break; + } + case 41: { + bitField0_ |= 0x00000010; + lastUpdatedS_ = input.readFixed64(); + break; + } + case 50: { + org.xtreemfs.pbrpc.generatedinterfaces.DIR.ServiceDataMap.Builder subBuilder = null; + if (((bitField0_ & 0x00000020) == 0x00000020)) { + subBuilder = data_.toBuilder(); + } + data_ = input.readMessage(org.xtreemfs.pbrpc.generatedinterfaces.DIR.ServiceDataMap.PARSER, extensionRegistry); + if (subBuilder != null) { + subBuilder.mergeFrom(data_); + data_ = subBuilder.buildPartial(); + } + bitField0_ |= 0x00000020; + break; + } + } + } + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(this); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException( + e.getMessage()).setUnfinishedMessage(this); + } finally { + this.unknownFields = unknownFields.build(); + makeExtensionsImmutable(); + } + } public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { return org.xtreemfs.pbrpc.generatedinterfaces.DIR.internal_static_xtreemfs_pbrpc_Service_descriptor; } - + protected com.google.protobuf.GeneratedMessage.FieldAccessorTable internalGetFieldAccessorTable() { - return org.xtreemfs.pbrpc.generatedinterfaces.DIR.internal_static_xtreemfs_pbrpc_Service_fieldAccessorTable; + return org.xtreemfs.pbrpc.generatedinterfaces.DIR.internal_static_xtreemfs_pbrpc_Service_fieldAccessorTable + .ensureFieldAccessorsInitialized( + org.xtreemfs.pbrpc.generatedinterfaces.DIR.Service.class, org.xtreemfs.pbrpc.generatedinterfaces.DIR.Service.Builder.class); } - + + public static com.google.protobuf.Parser PARSER = + new com.google.protobuf.AbstractParser() { + public Service parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return new Service(input, extensionRegistry); + } + }; + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; + } + + private int bitField0_; // required .xtreemfs.pbrpc.ServiceType type = 1; public static final int TYPE_FIELD_NUMBER = 1; - private boolean hasType; private org.xtreemfs.pbrpc.generatedinterfaces.DIR.ServiceType type_; - public boolean hasType() { return hasType; } - public org.xtreemfs.pbrpc.generatedinterfaces.DIR.ServiceType getType() { return type_; } - + /** + * required .xtreemfs.pbrpc.ServiceType type = 1; + */ + public boolean hasType() { + return ((bitField0_ & 0x00000001) == 0x00000001); + } + /** + * required .xtreemfs.pbrpc.ServiceType type = 1; + */ + public org.xtreemfs.pbrpc.generatedinterfaces.DIR.ServiceType getType() { + return type_; + } + // required string uuid = 2; public static final int UUID_FIELD_NUMBER = 2; - private boolean hasUuid; - private java.lang.String uuid_ = ""; - public boolean hasUuid() { return hasUuid; } - public java.lang.String getUuid() { return uuid_; } - + private java.lang.Object uuid_; + /** + * required string uuid = 2; + * + *
+     * Service uuid, e.g. volume UUID.
+     * 
+ */ + public boolean hasUuid() { + return ((bitField0_ & 0x00000002) == 0x00000002); + } + /** + * required string uuid = 2; + * + *
+     * Service uuid, e.g. volume UUID.
+     * 
+ */ + public java.lang.String getUuid() { + java.lang.Object ref = uuid_; + if (ref instanceof java.lang.String) { + return (java.lang.String) ref; + } else { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + if (bs.isValidUtf8()) { + uuid_ = s; + } + return s; + } + } + /** + * required string uuid = 2; + * + *
+     * Service uuid, e.g. volume UUID.
+     * 
+ */ + public com.google.protobuf.ByteString + getUuidBytes() { + java.lang.Object ref = uuid_; + if (ref instanceof java.lang.String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + uuid_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + // required fixed64 version = 3; public static final int VERSION_FIELD_NUMBER = 3; - private boolean hasVersion; - private long version_ = 0L; - public boolean hasVersion() { return hasVersion; } - public long getVersion() { return version_; } - + private long version_; + /** + * required fixed64 version = 3; + * + *
+     * Version of this record, assigned by the DIR on write.
+     * 
+ */ + public boolean hasVersion() { + return ((bitField0_ & 0x00000004) == 0x00000004); + } + /** + * required fixed64 version = 3; + * + *
+     * Version of this record, assigned by the DIR on write.
+     * 
+ */ + public long getVersion() { + return version_; + } + // required string name = 4; public static final int NAME_FIELD_NUMBER = 4; - private boolean hasName; - private java.lang.String name_ = ""; - public boolean hasName() { return hasName; } - public java.lang.String getName() { return name_; } - + private java.lang.Object name_; + /** + * required string name = 4; + * + *
+     * Service name, e.g. volume name.
+     * 
+ */ + public boolean hasName() { + return ((bitField0_ & 0x00000008) == 0x00000008); + } + /** + * required string name = 4; + * + *
+     * Service name, e.g. volume name.
+     * 
+ */ + public java.lang.String getName() { + java.lang.Object ref = name_; + if (ref instanceof java.lang.String) { + return (java.lang.String) ref; + } else { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + if (bs.isValidUtf8()) { + name_ = s; + } + return s; + } + } + /** + * required string name = 4; + * + *
+     * Service name, e.g. volume name.
+     * 
+ */ + public com.google.protobuf.ByteString + getNameBytes() { + java.lang.Object ref = name_; + if (ref instanceof java.lang.String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + name_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + // required fixed64 last_updated_s = 5; public static final int LAST_UPDATED_S_FIELD_NUMBER = 5; - private boolean hasLastUpdatedS; - private long lastUpdatedS_ = 0L; - public boolean hasLastUpdatedS() { return hasLastUpdatedS; } - public long getLastUpdatedS() { return lastUpdatedS_; } - + private long lastUpdatedS_; + /** + * required fixed64 last_updated_s = 5; + * + *
+     * Timestamp of last update in global XtreemFS time, assigned
+     * by the DIR on write.
+     * 
+ */ + public boolean hasLastUpdatedS() { + return ((bitField0_ & 0x00000010) == 0x00000010); + } + /** + * required fixed64 last_updated_s = 5; + * + *
+     * Timestamp of last update in global XtreemFS time, assigned
+     * by the DIR on write.
+     * 
+ */ + public long getLastUpdatedS() { + return lastUpdatedS_; + } + // required .xtreemfs.pbrpc.ServiceDataMap data = 6; public static final int DATA_FIELD_NUMBER = 6; - private boolean hasData; private org.xtreemfs.pbrpc.generatedinterfaces.DIR.ServiceDataMap data_; - public boolean hasData() { return hasData; } - public org.xtreemfs.pbrpc.generatedinterfaces.DIR.ServiceDataMap getData() { return data_; } - + /** + * required .xtreemfs.pbrpc.ServiceDataMap data = 6; + * + *
+     * Service details including service state.
+     * 
+ */ + public boolean hasData() { + return ((bitField0_ & 0x00000020) == 0x00000020); + } + /** + * required .xtreemfs.pbrpc.ServiceDataMap data = 6; + * + *
+     * Service details including service state.
+     * 
+ */ + public org.xtreemfs.pbrpc.generatedinterfaces.DIR.ServiceDataMap getData() { + return data_; + } + /** + * required .xtreemfs.pbrpc.ServiceDataMap data = 6; + * + *
+     * Service details including service state.
+     * 
+ */ + public org.xtreemfs.pbrpc.generatedinterfaces.DIR.ServiceDataMapOrBuilder getDataOrBuilder() { + return data_; + } + private void initFields() { type_ = org.xtreemfs.pbrpc.generatedinterfaces.DIR.ServiceType.SERVICE_TYPE_MIXED; + uuid_ = ""; + version_ = 0L; + name_ = ""; + lastUpdatedS_ = 0L; data_ = org.xtreemfs.pbrpc.generatedinterfaces.DIR.ServiceDataMap.getDefaultInstance(); } + private byte memoizedIsInitialized = -1; public final boolean isInitialized() { - if (!hasType) return false; - if (!hasUuid) return false; - if (!hasVersion) return false; - if (!hasName) return false; - if (!hasLastUpdatedS) return false; - if (!hasData) return false; - if (!getData().isInitialized()) return false; + byte isInitialized = memoizedIsInitialized; + if (isInitialized != -1) return isInitialized == 1; + + if (!hasType()) { + memoizedIsInitialized = 0; + return false; + } + if (!hasUuid()) { + memoizedIsInitialized = 0; + return false; + } + if (!hasVersion()) { + memoizedIsInitialized = 0; + return false; + } + if (!hasName()) { + memoizedIsInitialized = 0; + return false; + } + if (!hasLastUpdatedS()) { + memoizedIsInitialized = 0; + return false; + } + if (!hasData()) { + memoizedIsInitialized = 0; + return false; + } + if (!getData().isInitialized()) { + memoizedIsInitialized = 0; + return false; + } + memoizedIsInitialized = 1; return true; } - + public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException { getSerializedSize(); - if (hasType()) { - output.writeEnum(1, getType().getNumber()); + if (((bitField0_ & 0x00000001) == 0x00000001)) { + output.writeEnum(1, type_.getNumber()); } - if (hasUuid()) { - output.writeString(2, getUuid()); + if (((bitField0_ & 0x00000002) == 0x00000002)) { + output.writeBytes(2, getUuidBytes()); } - if (hasVersion()) { - output.writeFixed64(3, getVersion()); + if (((bitField0_ & 0x00000004) == 0x00000004)) { + output.writeFixed64(3, version_); } - if (hasName()) { - output.writeString(4, getName()); + if (((bitField0_ & 0x00000008) == 0x00000008)) { + output.writeBytes(4, getNameBytes()); } - if (hasLastUpdatedS()) { - output.writeFixed64(5, getLastUpdatedS()); + if (((bitField0_ & 0x00000010) == 0x00000010)) { + output.writeFixed64(5, lastUpdatedS_); } - if (hasData()) { - output.writeMessage(6, getData()); + if (((bitField0_ & 0x00000020) == 0x00000020)) { + output.writeMessage(6, data_); } getUnknownFields().writeTo(output); } - + private int memoizedSerializedSize = -1; public int getSerializedSize() { int size = memoizedSerializedSize; if (size != -1) return size; - + size = 0; - if (hasType()) { + if (((bitField0_ & 0x00000001) == 0x00000001)) { size += com.google.protobuf.CodedOutputStream - .computeEnumSize(1, getType().getNumber()); + .computeEnumSize(1, type_.getNumber()); } - if (hasUuid()) { + if (((bitField0_ & 0x00000002) == 0x00000002)) { size += com.google.protobuf.CodedOutputStream - .computeStringSize(2, getUuid()); + .computeBytesSize(2, getUuidBytes()); } - if (hasVersion()) { + if (((bitField0_ & 0x00000004) == 0x00000004)) { size += com.google.protobuf.CodedOutputStream - .computeFixed64Size(3, getVersion()); + .computeFixed64Size(3, version_); } - if (hasName()) { + if (((bitField0_ & 0x00000008) == 0x00000008)) { size += com.google.protobuf.CodedOutputStream - .computeStringSize(4, getName()); + .computeBytesSize(4, getNameBytes()); } - if (hasLastUpdatedS()) { + if (((bitField0_ & 0x00000010) == 0x00000010)) { size += com.google.protobuf.CodedOutputStream - .computeFixed64Size(5, getLastUpdatedS()); + .computeFixed64Size(5, lastUpdatedS_); } - if (hasData()) { + if (((bitField0_ & 0x00000020) == 0x00000020)) { size += com.google.protobuf.CodedOutputStream - .computeMessageSize(6, getData()); + .computeMessageSize(6, data_); } size += getUnknownFields().getSerializedSize(); memoizedSerializedSize = size; return size; } - + + private static final long serialVersionUID = 0L; + @java.lang.Override + protected java.lang.Object writeReplace() + throws java.io.ObjectStreamException { + return super.writeReplace(); + } + public static org.xtreemfs.pbrpc.generatedinterfaces.DIR.Service parseFrom( com.google.protobuf.ByteString data) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data).buildParsed(); + return PARSER.parseFrom(data); } public static org.xtreemfs.pbrpc.generatedinterfaces.DIR.Service parseFrom( com.google.protobuf.ByteString data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(data, extensionRegistry); } public static org.xtreemfs.pbrpc.generatedinterfaces.DIR.Service parseFrom(byte[] data) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data).buildParsed(); + return PARSER.parseFrom(data); } public static org.xtreemfs.pbrpc.generatedinterfaces.DIR.Service parseFrom( byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(data, extensionRegistry); } public static org.xtreemfs.pbrpc.generatedinterfaces.DIR.Service parseFrom(java.io.InputStream input) throws java.io.IOException { - return newBuilder().mergeFrom(input).buildParsed(); + return PARSER.parseFrom(input); } public static org.xtreemfs.pbrpc.generatedinterfaces.DIR.Service parseFrom( java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - return newBuilder().mergeFrom(input, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(input, extensionRegistry); } public static org.xtreemfs.pbrpc.generatedinterfaces.DIR.Service parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException { - Builder builder = newBuilder(); - if (builder.mergeDelimitedFrom(input)) { - return builder.buildParsed(); - } else { - return null; - } + return PARSER.parseDelimitedFrom(input); } public static org.xtreemfs.pbrpc.generatedinterfaces.DIR.Service parseDelimitedFrom( java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - Builder builder = newBuilder(); - if (builder.mergeDelimitedFrom(input, extensionRegistry)) { - return builder.buildParsed(); - } else { - return null; - } + return PARSER.parseDelimitedFrom(input, extensionRegistry); } public static org.xtreemfs.pbrpc.generatedinterfaces.DIR.Service parseFrom( com.google.protobuf.CodedInputStream input) throws java.io.IOException { - return newBuilder().mergeFrom(input).buildParsed(); + return PARSER.parseFrom(input); } public static org.xtreemfs.pbrpc.generatedinterfaces.DIR.Service parseFrom( com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - return newBuilder().mergeFrom(input, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(input, extensionRegistry); } - + public static Builder newBuilder() { return Builder.create(); } public Builder newBuilderForType() { return newBuilder(); } public static Builder newBuilder(org.xtreemfs.pbrpc.generatedinterfaces.DIR.Service prototype) { return newBuilder().mergeFrom(prototype); } public Builder toBuilder() { return newBuilder(this); } - + + @java.lang.Override + protected Builder newBuilderForType( + com.google.protobuf.GeneratedMessage.BuilderParent parent) { + Builder builder = new Builder(parent); + return builder; + } + /** + * Protobuf type {@code xtreemfs.pbrpc.Service} + * + *
+     * Service data in DIR.
+     * 
+ */ public static final class Builder extends - com.google.protobuf.GeneratedMessage.Builder { - private org.xtreemfs.pbrpc.generatedinterfaces.DIR.Service result; - + com.google.protobuf.GeneratedMessage.Builder + implements org.xtreemfs.pbrpc.generatedinterfaces.DIR.ServiceOrBuilder { + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return org.xtreemfs.pbrpc.generatedinterfaces.DIR.internal_static_xtreemfs_pbrpc_Service_descriptor; + } + + protected com.google.protobuf.GeneratedMessage.FieldAccessorTable + internalGetFieldAccessorTable() { + return org.xtreemfs.pbrpc.generatedinterfaces.DIR.internal_static_xtreemfs_pbrpc_Service_fieldAccessorTable + .ensureFieldAccessorsInitialized( + org.xtreemfs.pbrpc.generatedinterfaces.DIR.Service.class, org.xtreemfs.pbrpc.generatedinterfaces.DIR.Service.Builder.class); + } + // Construct using org.xtreemfs.pbrpc.generatedinterfaces.DIR.Service.newBuilder() - private Builder() {} - - private static Builder create() { - Builder builder = new Builder(); - builder.result = new org.xtreemfs.pbrpc.generatedinterfaces.DIR.Service(); - return builder; + private Builder() { + maybeForceBuilderInitialization(); } - - protected org.xtreemfs.pbrpc.generatedinterfaces.DIR.Service internalGetResult() { - return result; + + private Builder( + com.google.protobuf.GeneratedMessage.BuilderParent parent) { + super(parent); + maybeForceBuilderInitialization(); + } + private void maybeForceBuilderInitialization() { + if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) { + getDataFieldBuilder(); + } + } + private static Builder create() { + return new Builder(); } - + public Builder clear() { - if (result == null) { - throw new IllegalStateException( - "Cannot call clear() after build()."); + super.clear(); + type_ = org.xtreemfs.pbrpc.generatedinterfaces.DIR.ServiceType.SERVICE_TYPE_MIXED; + bitField0_ = (bitField0_ & ~0x00000001); + uuid_ = ""; + bitField0_ = (bitField0_ & ~0x00000002); + version_ = 0L; + bitField0_ = (bitField0_ & ~0x00000004); + name_ = ""; + bitField0_ = (bitField0_ & ~0x00000008); + lastUpdatedS_ = 0L; + bitField0_ = (bitField0_ & ~0x00000010); + if (dataBuilder_ == null) { + data_ = org.xtreemfs.pbrpc.generatedinterfaces.DIR.ServiceDataMap.getDefaultInstance(); + } else { + dataBuilder_.clear(); } - result = new org.xtreemfs.pbrpc.generatedinterfaces.DIR.Service(); + bitField0_ = (bitField0_ & ~0x00000020); return this; } - + public Builder clone() { - return create().mergeFrom(result); + return create().mergeFrom(buildPartial()); } - + public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() { - return org.xtreemfs.pbrpc.generatedinterfaces.DIR.Service.getDescriptor(); + return org.xtreemfs.pbrpc.generatedinterfaces.DIR.internal_static_xtreemfs_pbrpc_Service_descriptor; } - + public org.xtreemfs.pbrpc.generatedinterfaces.DIR.Service getDefaultInstanceForType() { return org.xtreemfs.pbrpc.generatedinterfaces.DIR.Service.getDefaultInstance(); } - - public boolean isInitialized() { - return result.isInitialized(); - } + public org.xtreemfs.pbrpc.generatedinterfaces.DIR.Service build() { - if (result != null && !isInitialized()) { + org.xtreemfs.pbrpc.generatedinterfaces.DIR.Service result = buildPartial(); + if (!result.isInitialized()) { throw newUninitializedMessageException(result); } - return buildPartial(); - } - - private org.xtreemfs.pbrpc.generatedinterfaces.DIR.Service buildParsed() - throws com.google.protobuf.InvalidProtocolBufferException { - if (!isInitialized()) { - throw newUninitializedMessageException( - result).asInvalidProtocolBufferException(); - } - return buildPartial(); + return result; } - + public org.xtreemfs.pbrpc.generatedinterfaces.DIR.Service buildPartial() { - if (result == null) { - throw new IllegalStateException( - "build() has already been called on this Builder."); + org.xtreemfs.pbrpc.generatedinterfaces.DIR.Service result = new org.xtreemfs.pbrpc.generatedinterfaces.DIR.Service(this); + int from_bitField0_ = bitField0_; + int to_bitField0_ = 0; + if (((from_bitField0_ & 0x00000001) == 0x00000001)) { + to_bitField0_ |= 0x00000001; + } + result.type_ = type_; + if (((from_bitField0_ & 0x00000002) == 0x00000002)) { + to_bitField0_ |= 0x00000002; + } + result.uuid_ = uuid_; + if (((from_bitField0_ & 0x00000004) == 0x00000004)) { + to_bitField0_ |= 0x00000004; + } + result.version_ = version_; + if (((from_bitField0_ & 0x00000008) == 0x00000008)) { + to_bitField0_ |= 0x00000008; + } + result.name_ = name_; + if (((from_bitField0_ & 0x00000010) == 0x00000010)) { + to_bitField0_ |= 0x00000010; + } + result.lastUpdatedS_ = lastUpdatedS_; + if (((from_bitField0_ & 0x00000020) == 0x00000020)) { + to_bitField0_ |= 0x00000020; + } + if (dataBuilder_ == null) { + result.data_ = data_; + } else { + result.data_ = dataBuilder_.build(); } - org.xtreemfs.pbrpc.generatedinterfaces.DIR.Service returnMe = result; - result = null; - return returnMe; + result.bitField0_ = to_bitField0_; + onBuilt(); + return result; } - + public Builder mergeFrom(com.google.protobuf.Message other) { if (other instanceof org.xtreemfs.pbrpc.generatedinterfaces.DIR.Service) { return mergeFrom((org.xtreemfs.pbrpc.generatedinterfaces.DIR.Service)other); @@ -2102,20 +5012,24 @@ public final class DIR { return this; } } - + public Builder mergeFrom(org.xtreemfs.pbrpc.generatedinterfaces.DIR.Service other) { if (other == org.xtreemfs.pbrpc.generatedinterfaces.DIR.Service.getDefaultInstance()) return this; if (other.hasType()) { setType(other.getType()); } if (other.hasUuid()) { - setUuid(other.getUuid()); + bitField0_ |= 0x00000002; + uuid_ = other.uuid_; + onChanged(); } if (other.hasVersion()) { setVersion(other.getVersion()); } if (other.hasName()) { - setName(other.getName()); + bitField0_ |= 0x00000008; + name_ = other.name_; + onChanged(); } if (other.hasLastUpdatedS()) { setLastUpdatedS(other.getLastUpdatedS()); @@ -2126,434 +5040,921 @@ public final class DIR { this.mergeUnknownFields(other.getUnknownFields()); return this; } - + + public final boolean isInitialized() { + if (!hasType()) { + + return false; + } + if (!hasUuid()) { + + return false; + } + if (!hasVersion()) { + + return false; + } + if (!hasName()) { + + return false; + } + if (!hasLastUpdatedS()) { + + return false; + } + if (!hasData()) { + + return false; + } + if (!getData().isInitialized()) { + + return false; + } + return true; + } + public Builder mergeFrom( com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - com.google.protobuf.UnknownFieldSet.Builder unknownFields = - com.google.protobuf.UnknownFieldSet.newBuilder( - this.getUnknownFields()); - while (true) { - int tag = input.readTag(); - switch (tag) { - case 0: - this.setUnknownFields(unknownFields.build()); - return this; - default: { - if (!parseUnknownField(input, unknownFields, - extensionRegistry, tag)) { - this.setUnknownFields(unknownFields.build()); - return this; - } - break; - } - case 8: { - int rawValue = input.readEnum(); - org.xtreemfs.pbrpc.generatedinterfaces.DIR.ServiceType value = org.xtreemfs.pbrpc.generatedinterfaces.DIR.ServiceType.valueOf(rawValue); - if (value == null) { - unknownFields.mergeVarintField(1, rawValue); - } else { - setType(value); - } - break; - } - case 18: { - setUuid(input.readString()); - break; - } - case 25: { - setVersion(input.readFixed64()); - break; - } - case 34: { - setName(input.readString()); - break; - } - case 41: { - setLastUpdatedS(input.readFixed64()); - break; - } - case 50: { - org.xtreemfs.pbrpc.generatedinterfaces.DIR.ServiceDataMap.Builder subBuilder = org.xtreemfs.pbrpc.generatedinterfaces.DIR.ServiceDataMap.newBuilder(); - if (hasData()) { - subBuilder.mergeFrom(getData()); - } - input.readMessage(subBuilder, extensionRegistry); - setData(subBuilder.buildPartial()); - break; - } + org.xtreemfs.pbrpc.generatedinterfaces.DIR.Service parsedMessage = null; + try { + parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + parsedMessage = (org.xtreemfs.pbrpc.generatedinterfaces.DIR.Service) e.getUnfinishedMessage(); + throw e; + } finally { + if (parsedMessage != null) { + mergeFrom(parsedMessage); } } + return this; } - - + private int bitField0_; + // required .xtreemfs.pbrpc.ServiceType type = 1; + private org.xtreemfs.pbrpc.generatedinterfaces.DIR.ServiceType type_ = org.xtreemfs.pbrpc.generatedinterfaces.DIR.ServiceType.SERVICE_TYPE_MIXED; + /** + * required .xtreemfs.pbrpc.ServiceType type = 1; + */ public boolean hasType() { - return result.hasType(); + return ((bitField0_ & 0x00000001) == 0x00000001); } + /** + * required .xtreemfs.pbrpc.ServiceType type = 1; + */ public org.xtreemfs.pbrpc.generatedinterfaces.DIR.ServiceType getType() { - return result.getType(); + return type_; } + /** + * required .xtreemfs.pbrpc.ServiceType type = 1; + */ public Builder setType(org.xtreemfs.pbrpc.generatedinterfaces.DIR.ServiceType value) { if (value == null) { throw new NullPointerException(); } - result.hasType = true; - result.type_ = value; + bitField0_ |= 0x00000001; + type_ = value; + onChanged(); return this; } + /** + * required .xtreemfs.pbrpc.ServiceType type = 1; + */ public Builder clearType() { - result.hasType = false; - result.type_ = org.xtreemfs.pbrpc.generatedinterfaces.DIR.ServiceType.SERVICE_TYPE_MIXED; + bitField0_ = (bitField0_ & ~0x00000001); + type_ = org.xtreemfs.pbrpc.generatedinterfaces.DIR.ServiceType.SERVICE_TYPE_MIXED; + onChanged(); return this; } - + // required string uuid = 2; + private java.lang.Object uuid_ = ""; + /** + * required string uuid = 2; + * + *
+       * Service uuid, e.g. volume UUID.
+       * 
+ */ public boolean hasUuid() { - return result.hasUuid(); - } + return ((bitField0_ & 0x00000002) == 0x00000002); + } + /** + * required string uuid = 2; + * + *
+       * Service uuid, e.g. volume UUID.
+       * 
+ */ public java.lang.String getUuid() { - return result.getUuid(); - } - public Builder setUuid(java.lang.String value) { + java.lang.Object ref = uuid_; + if (!(ref instanceof java.lang.String)) { + java.lang.String s = ((com.google.protobuf.ByteString) ref) + .toStringUtf8(); + uuid_ = s; + return s; + } else { + return (java.lang.String) ref; + } + } + /** + * required string uuid = 2; + * + *
+       * Service uuid, e.g. volume UUID.
+       * 
+ */ + public com.google.protobuf.ByteString + getUuidBytes() { + java.lang.Object ref = uuid_; + if (ref instanceof String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + uuid_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + /** + * required string uuid = 2; + * + *
+       * Service uuid, e.g. volume UUID.
+       * 
+ */ + public Builder setUuid( + java.lang.String value) { if (value == null) { throw new NullPointerException(); } - result.hasUuid = true; - result.uuid_ = value; - return this; - } + bitField0_ |= 0x00000002; + uuid_ = value; + onChanged(); + return this; + } + /** + * required string uuid = 2; + * + *
+       * Service uuid, e.g. volume UUID.
+       * 
+ */ public Builder clearUuid() { - result.hasUuid = false; - result.uuid_ = getDefaultInstance().getUuid(); + bitField0_ = (bitField0_ & ~0x00000002); + uuid_ = getDefaultInstance().getUuid(); + onChanged(); + return this; + } + /** + * required string uuid = 2; + * + *
+       * Service uuid, e.g. volume UUID.
+       * 
+ */ + public Builder setUuidBytes( + com.google.protobuf.ByteString value) { + if (value == null) { + throw new NullPointerException(); + } + bitField0_ |= 0x00000002; + uuid_ = value; + onChanged(); return this; } - + // required fixed64 version = 3; + private long version_ ; + /** + * required fixed64 version = 3; + * + *
+       * Version of this record, assigned by the DIR on write.
+       * 
+ */ public boolean hasVersion() { - return result.hasVersion(); - } + return ((bitField0_ & 0x00000004) == 0x00000004); + } + /** + * required fixed64 version = 3; + * + *
+       * Version of this record, assigned by the DIR on write.
+       * 
+ */ public long getVersion() { - return result.getVersion(); - } + return version_; + } + /** + * required fixed64 version = 3; + * + *
+       * Version of this record, assigned by the DIR on write.
+       * 
+ */ public Builder setVersion(long value) { - result.hasVersion = true; - result.version_ = value; - return this; - } + bitField0_ |= 0x00000004; + version_ = value; + onChanged(); + return this; + } + /** + * required fixed64 version = 3; + * + *
+       * Version of this record, assigned by the DIR on write.
+       * 
+ */ public Builder clearVersion() { - result.hasVersion = false; - result.version_ = 0L; + bitField0_ = (bitField0_ & ~0x00000004); + version_ = 0L; + onChanged(); return this; } - + // required string name = 4; + private java.lang.Object name_ = ""; + /** + * required string name = 4; + * + *
+       * Service name, e.g. volume name.
+       * 
+ */ public boolean hasName() { - return result.hasName(); - } + return ((bitField0_ & 0x00000008) == 0x00000008); + } + /** + * required string name = 4; + * + *
+       * Service name, e.g. volume name.
+       * 
+ */ public java.lang.String getName() { - return result.getName(); - } - public Builder setName(java.lang.String value) { + java.lang.Object ref = name_; + if (!(ref instanceof java.lang.String)) { + java.lang.String s = ((com.google.protobuf.ByteString) ref) + .toStringUtf8(); + name_ = s; + return s; + } else { + return (java.lang.String) ref; + } + } + /** + * required string name = 4; + * + *
+       * Service name, e.g. volume name.
+       * 
+ */ + public com.google.protobuf.ByteString + getNameBytes() { + java.lang.Object ref = name_; + if (ref instanceof String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + name_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + /** + * required string name = 4; + * + *
+       * Service name, e.g. volume name.
+       * 
+ */ + public Builder setName( + java.lang.String value) { if (value == null) { throw new NullPointerException(); } - result.hasName = true; - result.name_ = value; - return this; - } + bitField0_ |= 0x00000008; + name_ = value; + onChanged(); + return this; + } + /** + * required string name = 4; + * + *
+       * Service name, e.g. volume name.
+       * 
+ */ public Builder clearName() { - result.hasName = false; - result.name_ = getDefaultInstance().getName(); + bitField0_ = (bitField0_ & ~0x00000008); + name_ = getDefaultInstance().getName(); + onChanged(); + return this; + } + /** + * required string name = 4; + * + *
+       * Service name, e.g. volume name.
+       * 
+ */ + public Builder setNameBytes( + com.google.protobuf.ByteString value) { + if (value == null) { + throw new NullPointerException(); + } + bitField0_ |= 0x00000008; + name_ = value; + onChanged(); return this; } - + // required fixed64 last_updated_s = 5; + private long lastUpdatedS_ ; + /** + * required fixed64 last_updated_s = 5; + * + *
+       * Timestamp of last update in global XtreemFS time, assigned
+       * by the DIR on write.
+       * 
+ */ public boolean hasLastUpdatedS() { - return result.hasLastUpdatedS(); - } + return ((bitField0_ & 0x00000010) == 0x00000010); + } + /** + * required fixed64 last_updated_s = 5; + * + *
+       * Timestamp of last update in global XtreemFS time, assigned
+       * by the DIR on write.
+       * 
+ */ public long getLastUpdatedS() { - return result.getLastUpdatedS(); - } + return lastUpdatedS_; + } + /** + * required fixed64 last_updated_s = 5; + * + *
+       * Timestamp of last update in global XtreemFS time, assigned
+       * by the DIR on write.
+       * 
+ */ public Builder setLastUpdatedS(long value) { - result.hasLastUpdatedS = true; - result.lastUpdatedS_ = value; - return this; - } + bitField0_ |= 0x00000010; + lastUpdatedS_ = value; + onChanged(); + return this; + } + /** + * required fixed64 last_updated_s = 5; + * + *
+       * Timestamp of last update in global XtreemFS time, assigned
+       * by the DIR on write.
+       * 
+ */ public Builder clearLastUpdatedS() { - result.hasLastUpdatedS = false; - result.lastUpdatedS_ = 0L; + bitField0_ = (bitField0_ & ~0x00000010); + lastUpdatedS_ = 0L; + onChanged(); return this; } - + // required .xtreemfs.pbrpc.ServiceDataMap data = 6; + private org.xtreemfs.pbrpc.generatedinterfaces.DIR.ServiceDataMap data_ = org.xtreemfs.pbrpc.generatedinterfaces.DIR.ServiceDataMap.getDefaultInstance(); + private com.google.protobuf.SingleFieldBuilder< + org.xtreemfs.pbrpc.generatedinterfaces.DIR.ServiceDataMap, org.xtreemfs.pbrpc.generatedinterfaces.DIR.ServiceDataMap.Builder, org.xtreemfs.pbrpc.generatedinterfaces.DIR.ServiceDataMapOrBuilder> dataBuilder_; + /** + * required .xtreemfs.pbrpc.ServiceDataMap data = 6; + * + *
+       * Service details including service state.
+       * 
+ */ public boolean hasData() { - return result.hasData(); - } + return ((bitField0_ & 0x00000020) == 0x00000020); + } + /** + * required .xtreemfs.pbrpc.ServiceDataMap data = 6; + * + *
+       * Service details including service state.
+       * 
+ */ public org.xtreemfs.pbrpc.generatedinterfaces.DIR.ServiceDataMap getData() { - return result.getData(); + if (dataBuilder_ == null) { + return data_; + } else { + return dataBuilder_.getMessage(); + } } + /** + * required .xtreemfs.pbrpc.ServiceDataMap data = 6; + * + *
+       * Service details including service state.
+       * 
+ */ public Builder setData(org.xtreemfs.pbrpc.generatedinterfaces.DIR.ServiceDataMap value) { - if (value == null) { - throw new NullPointerException(); + if (dataBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + data_ = value; + onChanged(); + } else { + dataBuilder_.setMessage(value); + } + bitField0_ |= 0x00000020; + return this; + } + /** + * required .xtreemfs.pbrpc.ServiceDataMap data = 6; + * + *
+       * Service details including service state.
+       * 
+ */ + public Builder setData( + org.xtreemfs.pbrpc.generatedinterfaces.DIR.ServiceDataMap.Builder builderForValue) { + if (dataBuilder_ == null) { + data_ = builderForValue.build(); + onChanged(); + } else { + dataBuilder_.setMessage(builderForValue.build()); } - result.hasData = true; - result.data_ = value; - return this; - } - public Builder setData(org.xtreemfs.pbrpc.generatedinterfaces.DIR.ServiceDataMap.Builder builderForValue) { - result.hasData = true; - result.data_ = builderForValue.build(); + bitField0_ |= 0x00000020; return this; } + /** + * required .xtreemfs.pbrpc.ServiceDataMap data = 6; + * + *
+       * Service details including service state.
+       * 
+ */ public Builder mergeData(org.xtreemfs.pbrpc.generatedinterfaces.DIR.ServiceDataMap value) { - if (result.hasData() && - result.data_ != org.xtreemfs.pbrpc.generatedinterfaces.DIR.ServiceDataMap.getDefaultInstance()) { - result.data_ = - org.xtreemfs.pbrpc.generatedinterfaces.DIR.ServiceDataMap.newBuilder(result.data_).mergeFrom(value).buildPartial(); + if (dataBuilder_ == null) { + if (((bitField0_ & 0x00000020) == 0x00000020) && + data_ != org.xtreemfs.pbrpc.generatedinterfaces.DIR.ServiceDataMap.getDefaultInstance()) { + data_ = + org.xtreemfs.pbrpc.generatedinterfaces.DIR.ServiceDataMap.newBuilder(data_).mergeFrom(value).buildPartial(); + } else { + data_ = value; + } + onChanged(); } else { - result.data_ = value; + dataBuilder_.mergeFrom(value); } - result.hasData = true; + bitField0_ |= 0x00000020; return this; } + /** + * required .xtreemfs.pbrpc.ServiceDataMap data = 6; + * + *
+       * Service details including service state.
+       * 
+ */ public Builder clearData() { - result.hasData = false; - result.data_ = org.xtreemfs.pbrpc.generatedinterfaces.DIR.ServiceDataMap.getDefaultInstance(); - return this; + if (dataBuilder_ == null) { + data_ = org.xtreemfs.pbrpc.generatedinterfaces.DIR.ServiceDataMap.getDefaultInstance(); + onChanged(); + } else { + dataBuilder_.clear(); + } + bitField0_ = (bitField0_ & ~0x00000020); + return this; + } + /** + * required .xtreemfs.pbrpc.ServiceDataMap data = 6; + * + *
+       * Service details including service state.
+       * 
+ */ + public org.xtreemfs.pbrpc.generatedinterfaces.DIR.ServiceDataMap.Builder getDataBuilder() { + bitField0_ |= 0x00000020; + onChanged(); + return getDataFieldBuilder().getBuilder(); + } + /** + * required .xtreemfs.pbrpc.ServiceDataMap data = 6; + * + *
+       * Service details including service state.
+       * 
+ */ + public org.xtreemfs.pbrpc.generatedinterfaces.DIR.ServiceDataMapOrBuilder getDataOrBuilder() { + if (dataBuilder_ != null) { + return dataBuilder_.getMessageOrBuilder(); + } else { + return data_; + } + } + /** + * required .xtreemfs.pbrpc.ServiceDataMap data = 6; + * + *
+       * Service details including service state.
+       * 
+ */ + private com.google.protobuf.SingleFieldBuilder< + org.xtreemfs.pbrpc.generatedinterfaces.DIR.ServiceDataMap, org.xtreemfs.pbrpc.generatedinterfaces.DIR.ServiceDataMap.Builder, org.xtreemfs.pbrpc.generatedinterfaces.DIR.ServiceDataMapOrBuilder> + getDataFieldBuilder() { + if (dataBuilder_ == null) { + dataBuilder_ = new com.google.protobuf.SingleFieldBuilder< + org.xtreemfs.pbrpc.generatedinterfaces.DIR.ServiceDataMap, org.xtreemfs.pbrpc.generatedinterfaces.DIR.ServiceDataMap.Builder, org.xtreemfs.pbrpc.generatedinterfaces.DIR.ServiceDataMapOrBuilder>( + data_, + getParentForChildren(), + isClean()); + data_ = null; + } + return dataBuilder_; } - + // @@protoc_insertion_point(builder_scope:xtreemfs.pbrpc.Service) } - + static { defaultInstance = new Service(true); - org.xtreemfs.pbrpc.generatedinterfaces.DIR.internalForceInit(); defaultInstance.initFields(); } - + // @@protoc_insertion_point(class_scope:xtreemfs.pbrpc.Service) } - + + public interface ServiceSetOrBuilder + extends com.google.protobuf.MessageOrBuilder { + + // repeated .xtreemfs.pbrpc.Service services = 1; + /** + * repeated .xtreemfs.pbrpc.Service services = 1; + */ + java.util.List + getServicesList(); + /** + * repeated .xtreemfs.pbrpc.Service services = 1; + */ + org.xtreemfs.pbrpc.generatedinterfaces.DIR.Service getServices(int index); + /** + * repeated .xtreemfs.pbrpc.Service services = 1; + */ + int getServicesCount(); + /** + * repeated .xtreemfs.pbrpc.Service services = 1; + */ + java.util.List + getServicesOrBuilderList(); + /** + * repeated .xtreemfs.pbrpc.Service services = 1; + */ + org.xtreemfs.pbrpc.generatedinterfaces.DIR.ServiceOrBuilder getServicesOrBuilder( + int index); + } + /** + * Protobuf type {@code xtreemfs.pbrpc.ServiceSet} + */ public static final class ServiceSet extends - com.google.protobuf.GeneratedMessage { + com.google.protobuf.GeneratedMessage + implements ServiceSetOrBuilder { // Use ServiceSet.newBuilder() to construct. - private ServiceSet() { - initFields(); + private ServiceSet(com.google.protobuf.GeneratedMessage.Builder builder) { + super(builder); + this.unknownFields = builder.getUnknownFields(); } - private ServiceSet(boolean noInit) {} - + private ServiceSet(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); } + private static final ServiceSet defaultInstance; public static ServiceSet getDefaultInstance() { return defaultInstance; } - + public ServiceSet getDefaultInstanceForType() { return defaultInstance; } - + + private final com.google.protobuf.UnknownFieldSet unknownFields; + @java.lang.Override + public final com.google.protobuf.UnknownFieldSet + getUnknownFields() { + return this.unknownFields; + } + private ServiceSet( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + initFields(); + int mutable_bitField0_ = 0; + com.google.protobuf.UnknownFieldSet.Builder unknownFields = + com.google.protobuf.UnknownFieldSet.newBuilder(); + try { + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch (tag) { + case 0: + done = true; + break; + default: { + if (!parseUnknownField(input, unknownFields, + extensionRegistry, tag)) { + done = true; + } + break; + } + case 10: { + if (!((mutable_bitField0_ & 0x00000001) == 0x00000001)) { + services_ = new java.util.ArrayList(); + mutable_bitField0_ |= 0x00000001; + } + services_.add(input.readMessage(org.xtreemfs.pbrpc.generatedinterfaces.DIR.Service.PARSER, extensionRegistry)); + break; + } + } + } + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(this); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException( + e.getMessage()).setUnfinishedMessage(this); + } finally { + if (((mutable_bitField0_ & 0x00000001) == 0x00000001)) { + services_ = java.util.Collections.unmodifiableList(services_); + } + this.unknownFields = unknownFields.build(); + makeExtensionsImmutable(); + } + } public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { return org.xtreemfs.pbrpc.generatedinterfaces.DIR.internal_static_xtreemfs_pbrpc_ServiceSet_descriptor; } - + protected com.google.protobuf.GeneratedMessage.FieldAccessorTable internalGetFieldAccessorTable() { - return org.xtreemfs.pbrpc.generatedinterfaces.DIR.internal_static_xtreemfs_pbrpc_ServiceSet_fieldAccessorTable; + return org.xtreemfs.pbrpc.generatedinterfaces.DIR.internal_static_xtreemfs_pbrpc_ServiceSet_fieldAccessorTable + .ensureFieldAccessorsInitialized( + org.xtreemfs.pbrpc.generatedinterfaces.DIR.ServiceSet.class, org.xtreemfs.pbrpc.generatedinterfaces.DIR.ServiceSet.Builder.class); + } + + public static com.google.protobuf.Parser PARSER = + new com.google.protobuf.AbstractParser() { + public ServiceSet parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return new ServiceSet(input, extensionRegistry); + } + }; + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; } - + // repeated .xtreemfs.pbrpc.Service services = 1; public static final int SERVICES_FIELD_NUMBER = 1; - private java.util.List services_ = - java.util.Collections.emptyList(); + private java.util.List services_; + /** + * repeated .xtreemfs.pbrpc.Service services = 1; + */ public java.util.List getServicesList() { return services_; } - public int getServicesCount() { return services_.size(); } + /** + * repeated .xtreemfs.pbrpc.Service services = 1; + */ + public java.util.List + getServicesOrBuilderList() { + return services_; + } + /** + * repeated .xtreemfs.pbrpc.Service services = 1; + */ + public int getServicesCount() { + return services_.size(); + } + /** + * repeated .xtreemfs.pbrpc.Service services = 1; + */ public org.xtreemfs.pbrpc.generatedinterfaces.DIR.Service getServices(int index) { return services_.get(index); } - + /** + * repeated .xtreemfs.pbrpc.Service services = 1; + */ + public org.xtreemfs.pbrpc.generatedinterfaces.DIR.ServiceOrBuilder getServicesOrBuilder( + int index) { + return services_.get(index); + } + private void initFields() { + services_ = java.util.Collections.emptyList(); } + private byte memoizedIsInitialized = -1; public final boolean isInitialized() { - for (org.xtreemfs.pbrpc.generatedinterfaces.DIR.Service element : getServicesList()) { - if (!element.isInitialized()) return false; + byte isInitialized = memoizedIsInitialized; + if (isInitialized != -1) return isInitialized == 1; + + for (int i = 0; i < getServicesCount(); i++) { + if (!getServices(i).isInitialized()) { + memoizedIsInitialized = 0; + return false; + } } + memoizedIsInitialized = 1; return true; } - + public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException { getSerializedSize(); - for (org.xtreemfs.pbrpc.generatedinterfaces.DIR.Service element : getServicesList()) { - output.writeMessage(1, element); + for (int i = 0; i < services_.size(); i++) { + output.writeMessage(1, services_.get(i)); } getUnknownFields().writeTo(output); } - + private int memoizedSerializedSize = -1; public int getSerializedSize() { int size = memoizedSerializedSize; if (size != -1) return size; - + size = 0; - for (org.xtreemfs.pbrpc.generatedinterfaces.DIR.Service element : getServicesList()) { + for (int i = 0; i < services_.size(); i++) { size += com.google.protobuf.CodedOutputStream - .computeMessageSize(1, element); + .computeMessageSize(1, services_.get(i)); } size += getUnknownFields().getSerializedSize(); memoizedSerializedSize = size; return size; } - + + private static final long serialVersionUID = 0L; + @java.lang.Override + protected java.lang.Object writeReplace() + throws java.io.ObjectStreamException { + return super.writeReplace(); + } + public static org.xtreemfs.pbrpc.generatedinterfaces.DIR.ServiceSet parseFrom( com.google.protobuf.ByteString data) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data).buildParsed(); + return PARSER.parseFrom(data); } public static org.xtreemfs.pbrpc.generatedinterfaces.DIR.ServiceSet parseFrom( com.google.protobuf.ByteString data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(data, extensionRegistry); } public static org.xtreemfs.pbrpc.generatedinterfaces.DIR.ServiceSet parseFrom(byte[] data) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data).buildParsed(); + return PARSER.parseFrom(data); } public static org.xtreemfs.pbrpc.generatedinterfaces.DIR.ServiceSet parseFrom( byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(data, extensionRegistry); } public static org.xtreemfs.pbrpc.generatedinterfaces.DIR.ServiceSet parseFrom(java.io.InputStream input) throws java.io.IOException { - return newBuilder().mergeFrom(input).buildParsed(); + return PARSER.parseFrom(input); } public static org.xtreemfs.pbrpc.generatedinterfaces.DIR.ServiceSet parseFrom( java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - return newBuilder().mergeFrom(input, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(input, extensionRegistry); } public static org.xtreemfs.pbrpc.generatedinterfaces.DIR.ServiceSet parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException { - Builder builder = newBuilder(); - if (builder.mergeDelimitedFrom(input)) { - return builder.buildParsed(); - } else { - return null; - } + return PARSER.parseDelimitedFrom(input); } public static org.xtreemfs.pbrpc.generatedinterfaces.DIR.ServiceSet parseDelimitedFrom( java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - Builder builder = newBuilder(); - if (builder.mergeDelimitedFrom(input, extensionRegistry)) { - return builder.buildParsed(); - } else { - return null; - } + return PARSER.parseDelimitedFrom(input, extensionRegistry); } public static org.xtreemfs.pbrpc.generatedinterfaces.DIR.ServiceSet parseFrom( com.google.protobuf.CodedInputStream input) throws java.io.IOException { - return newBuilder().mergeFrom(input).buildParsed(); + return PARSER.parseFrom(input); } public static org.xtreemfs.pbrpc.generatedinterfaces.DIR.ServiceSet parseFrom( com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - return newBuilder().mergeFrom(input, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(input, extensionRegistry); } - + public static Builder newBuilder() { return Builder.create(); } public Builder newBuilderForType() { return newBuilder(); } public static Builder newBuilder(org.xtreemfs.pbrpc.generatedinterfaces.DIR.ServiceSet prototype) { return newBuilder().mergeFrom(prototype); } public Builder toBuilder() { return newBuilder(this); } - + + @java.lang.Override + protected Builder newBuilderForType( + com.google.protobuf.GeneratedMessage.BuilderParent parent) { + Builder builder = new Builder(parent); + return builder; + } + /** + * Protobuf type {@code xtreemfs.pbrpc.ServiceSet} + */ public static final class Builder extends - com.google.protobuf.GeneratedMessage.Builder { - private org.xtreemfs.pbrpc.generatedinterfaces.DIR.ServiceSet result; - + com.google.protobuf.GeneratedMessage.Builder + implements org.xtreemfs.pbrpc.generatedinterfaces.DIR.ServiceSetOrBuilder { + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return org.xtreemfs.pbrpc.generatedinterfaces.DIR.internal_static_xtreemfs_pbrpc_ServiceSet_descriptor; + } + + protected com.google.protobuf.GeneratedMessage.FieldAccessorTable + internalGetFieldAccessorTable() { + return org.xtreemfs.pbrpc.generatedinterfaces.DIR.internal_static_xtreemfs_pbrpc_ServiceSet_fieldAccessorTable + .ensureFieldAccessorsInitialized( + org.xtreemfs.pbrpc.generatedinterfaces.DIR.ServiceSet.class, org.xtreemfs.pbrpc.generatedinterfaces.DIR.ServiceSet.Builder.class); + } + // Construct using org.xtreemfs.pbrpc.generatedinterfaces.DIR.ServiceSet.newBuilder() - private Builder() {} - - private static Builder create() { - Builder builder = new Builder(); - builder.result = new org.xtreemfs.pbrpc.generatedinterfaces.DIR.ServiceSet(); - return builder; + private Builder() { + maybeForceBuilderInitialization(); } - - protected org.xtreemfs.pbrpc.generatedinterfaces.DIR.ServiceSet internalGetResult() { - return result; + + private Builder( + com.google.protobuf.GeneratedMessage.BuilderParent parent) { + super(parent); + maybeForceBuilderInitialization(); + } + private void maybeForceBuilderInitialization() { + if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) { + getServicesFieldBuilder(); + } + } + private static Builder create() { + return new Builder(); } - + public Builder clear() { - if (result == null) { - throw new IllegalStateException( - "Cannot call clear() after build()."); + super.clear(); + if (servicesBuilder_ == null) { + services_ = java.util.Collections.emptyList(); + bitField0_ = (bitField0_ & ~0x00000001); + } else { + servicesBuilder_.clear(); } - result = new org.xtreemfs.pbrpc.generatedinterfaces.DIR.ServiceSet(); return this; } - + public Builder clone() { - return create().mergeFrom(result); + return create().mergeFrom(buildPartial()); } - + public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() { - return org.xtreemfs.pbrpc.generatedinterfaces.DIR.ServiceSet.getDescriptor(); + return org.xtreemfs.pbrpc.generatedinterfaces.DIR.internal_static_xtreemfs_pbrpc_ServiceSet_descriptor; } - + public org.xtreemfs.pbrpc.generatedinterfaces.DIR.ServiceSet getDefaultInstanceForType() { return org.xtreemfs.pbrpc.generatedinterfaces.DIR.ServiceSet.getDefaultInstance(); } - - public boolean isInitialized() { - return result.isInitialized(); - } + public org.xtreemfs.pbrpc.generatedinterfaces.DIR.ServiceSet build() { - if (result != null && !isInitialized()) { + org.xtreemfs.pbrpc.generatedinterfaces.DIR.ServiceSet result = buildPartial(); + if (!result.isInitialized()) { throw newUninitializedMessageException(result); } - return buildPartial(); - } - - private org.xtreemfs.pbrpc.generatedinterfaces.DIR.ServiceSet buildParsed() - throws com.google.protobuf.InvalidProtocolBufferException { - if (!isInitialized()) { - throw newUninitializedMessageException( - result).asInvalidProtocolBufferException(); - } - return buildPartial(); + return result; } - + public org.xtreemfs.pbrpc.generatedinterfaces.DIR.ServiceSet buildPartial() { - if (result == null) { - throw new IllegalStateException( - "build() has already been called on this Builder."); - } - if (result.services_ != java.util.Collections.EMPTY_LIST) { - result.services_ = - java.util.Collections.unmodifiableList(result.services_); + org.xtreemfs.pbrpc.generatedinterfaces.DIR.ServiceSet result = new org.xtreemfs.pbrpc.generatedinterfaces.DIR.ServiceSet(this); + int from_bitField0_ = bitField0_; + if (servicesBuilder_ == null) { + if (((bitField0_ & 0x00000001) == 0x00000001)) { + services_ = java.util.Collections.unmodifiableList(services_); + bitField0_ = (bitField0_ & ~0x00000001); + } + result.services_ = services_; + } else { + result.services_ = servicesBuilder_.build(); } - org.xtreemfs.pbrpc.generatedinterfaces.DIR.ServiceSet returnMe = result; - result = null; - return returnMe; + onBuilt(); + return result; } - + public Builder mergeFrom(com.google.protobuf.Message other) { if (other instanceof org.xtreemfs.pbrpc.generatedinterfaces.DIR.ServiceSet) { return mergeFrom((org.xtreemfs.pbrpc.generatedinterfaces.DIR.ServiceSet)other); @@ -2562,362 +5963,905 @@ public final class DIR { return this; } } - + public Builder mergeFrom(org.xtreemfs.pbrpc.generatedinterfaces.DIR.ServiceSet other) { if (other == org.xtreemfs.pbrpc.generatedinterfaces.DIR.ServiceSet.getDefaultInstance()) return this; - if (!other.services_.isEmpty()) { - if (result.services_.isEmpty()) { - result.services_ = new java.util.ArrayList(); + if (servicesBuilder_ == null) { + if (!other.services_.isEmpty()) { + if (services_.isEmpty()) { + services_ = other.services_; + bitField0_ = (bitField0_ & ~0x00000001); + } else { + ensureServicesIsMutable(); + services_.addAll(other.services_); + } + onChanged(); + } + } else { + if (!other.services_.isEmpty()) { + if (servicesBuilder_.isEmpty()) { + servicesBuilder_.dispose(); + servicesBuilder_ = null; + services_ = other.services_; + bitField0_ = (bitField0_ & ~0x00000001); + servicesBuilder_ = + com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ? + getServicesFieldBuilder() : null; + } else { + servicesBuilder_.addAllMessages(other.services_); + } } - result.services_.addAll(other.services_); } this.mergeUnknownFields(other.getUnknownFields()); return this; } - + + public final boolean isInitialized() { + for (int i = 0; i < getServicesCount(); i++) { + if (!getServices(i).isInitialized()) { + + return false; + } + } + return true; + } + public Builder mergeFrom( com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - com.google.protobuf.UnknownFieldSet.Builder unknownFields = - com.google.protobuf.UnknownFieldSet.newBuilder( - this.getUnknownFields()); - while (true) { - int tag = input.readTag(); - switch (tag) { - case 0: - this.setUnknownFields(unknownFields.build()); - return this; - default: { - if (!parseUnknownField(input, unknownFields, - extensionRegistry, tag)) { - this.setUnknownFields(unknownFields.build()); - return this; - } - break; - } - case 10: { - org.xtreemfs.pbrpc.generatedinterfaces.DIR.Service.Builder subBuilder = org.xtreemfs.pbrpc.generatedinterfaces.DIR.Service.newBuilder(); - input.readMessage(subBuilder, extensionRegistry); - addServices(subBuilder.buildPartial()); - break; - } + org.xtreemfs.pbrpc.generatedinterfaces.DIR.ServiceSet parsedMessage = null; + try { + parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + parsedMessage = (org.xtreemfs.pbrpc.generatedinterfaces.DIR.ServiceSet) e.getUnfinishedMessage(); + throw e; + } finally { + if (parsedMessage != null) { + mergeFrom(parsedMessage); } } + return this; } - - + private int bitField0_; + // repeated .xtreemfs.pbrpc.Service services = 1; + private java.util.List services_ = + java.util.Collections.emptyList(); + private void ensureServicesIsMutable() { + if (!((bitField0_ & 0x00000001) == 0x00000001)) { + services_ = new java.util.ArrayList(services_); + bitField0_ |= 0x00000001; + } + } + + private com.google.protobuf.RepeatedFieldBuilder< + org.xtreemfs.pbrpc.generatedinterfaces.DIR.Service, org.xtreemfs.pbrpc.generatedinterfaces.DIR.Service.Builder, org.xtreemfs.pbrpc.generatedinterfaces.DIR.ServiceOrBuilder> servicesBuilder_; + + /** + * repeated .xtreemfs.pbrpc.Service services = 1; + */ public java.util.List getServicesList() { - return java.util.Collections.unmodifiableList(result.services_); + if (servicesBuilder_ == null) { + return java.util.Collections.unmodifiableList(services_); + } else { + return servicesBuilder_.getMessageList(); + } } + /** + * repeated .xtreemfs.pbrpc.Service services = 1; + */ public int getServicesCount() { - return result.getServicesCount(); + if (servicesBuilder_ == null) { + return services_.size(); + } else { + return servicesBuilder_.getCount(); + } } + /** + * repeated .xtreemfs.pbrpc.Service services = 1; + */ public org.xtreemfs.pbrpc.generatedinterfaces.DIR.Service getServices(int index) { - return result.getServices(index); + if (servicesBuilder_ == null) { + return services_.get(index); + } else { + return servicesBuilder_.getMessage(index); + } } - public Builder setServices(int index, org.xtreemfs.pbrpc.generatedinterfaces.DIR.Service value) { - if (value == null) { - throw new NullPointerException(); + /** + * repeated .xtreemfs.pbrpc.Service services = 1; + */ + public Builder setServices( + int index, org.xtreemfs.pbrpc.generatedinterfaces.DIR.Service value) { + if (servicesBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + ensureServicesIsMutable(); + services_.set(index, value); + onChanged(); + } else { + servicesBuilder_.setMessage(index, value); } - result.services_.set(index, value); return this; } - public Builder setServices(int index, org.xtreemfs.pbrpc.generatedinterfaces.DIR.Service.Builder builderForValue) { - result.services_.set(index, builderForValue.build()); + /** + * repeated .xtreemfs.pbrpc.Service services = 1; + */ + public Builder setServices( + int index, org.xtreemfs.pbrpc.generatedinterfaces.DIR.Service.Builder builderForValue) { + if (servicesBuilder_ == null) { + ensureServicesIsMutable(); + services_.set(index, builderForValue.build()); + onChanged(); + } else { + servicesBuilder_.setMessage(index, builderForValue.build()); + } return this; } + /** + * repeated .xtreemfs.pbrpc.Service services = 1; + */ public Builder addServices(org.xtreemfs.pbrpc.generatedinterfaces.DIR.Service value) { - if (value == null) { - throw new NullPointerException(); + if (servicesBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + ensureServicesIsMutable(); + services_.add(value); + onChanged(); + } else { + servicesBuilder_.addMessage(value); + } + return this; + } + /** + * repeated .xtreemfs.pbrpc.Service services = 1; + */ + public Builder addServices( + int index, org.xtreemfs.pbrpc.generatedinterfaces.DIR.Service value) { + if (servicesBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + ensureServicesIsMutable(); + services_.add(index, value); + onChanged(); + } else { + servicesBuilder_.addMessage(index, value); } - if (result.services_.isEmpty()) { - result.services_ = new java.util.ArrayList(); + return this; + } + /** + * repeated .xtreemfs.pbrpc.Service services = 1; + */ + public Builder addServices( + org.xtreemfs.pbrpc.generatedinterfaces.DIR.Service.Builder builderForValue) { + if (servicesBuilder_ == null) { + ensureServicesIsMutable(); + services_.add(builderForValue.build()); + onChanged(); + } else { + servicesBuilder_.addMessage(builderForValue.build()); } - result.services_.add(value); return this; } - public Builder addServices(org.xtreemfs.pbrpc.generatedinterfaces.DIR.Service.Builder builderForValue) { - if (result.services_.isEmpty()) { - result.services_ = new java.util.ArrayList(); + /** + * repeated .xtreemfs.pbrpc.Service services = 1; + */ + public Builder addServices( + int index, org.xtreemfs.pbrpc.generatedinterfaces.DIR.Service.Builder builderForValue) { + if (servicesBuilder_ == null) { + ensureServicesIsMutable(); + services_.add(index, builderForValue.build()); + onChanged(); + } else { + servicesBuilder_.addMessage(index, builderForValue.build()); } - result.services_.add(builderForValue.build()); return this; } + /** + * repeated .xtreemfs.pbrpc.Service services = 1; + */ public Builder addAllServices( java.lang.Iterable values) { - if (result.services_.isEmpty()) { - result.services_ = new java.util.ArrayList(); + if (servicesBuilder_ == null) { + ensureServicesIsMutable(); + super.addAll(values, services_); + onChanged(); + } else { + servicesBuilder_.addAllMessages(values); } - super.addAll(values, result.services_); return this; } + /** + * repeated .xtreemfs.pbrpc.Service services = 1; + */ public Builder clearServices() { - result.services_ = java.util.Collections.emptyList(); + if (servicesBuilder_ == null) { + services_ = java.util.Collections.emptyList(); + bitField0_ = (bitField0_ & ~0x00000001); + onChanged(); + } else { + servicesBuilder_.clear(); + } return this; } - + /** + * repeated .xtreemfs.pbrpc.Service services = 1; + */ + public Builder removeServices(int index) { + if (servicesBuilder_ == null) { + ensureServicesIsMutable(); + services_.remove(index); + onChanged(); + } else { + servicesBuilder_.remove(index); + } + return this; + } + /** + * repeated .xtreemfs.pbrpc.Service services = 1; + */ + public org.xtreemfs.pbrpc.generatedinterfaces.DIR.Service.Builder getServicesBuilder( + int index) { + return getServicesFieldBuilder().getBuilder(index); + } + /** + * repeated .xtreemfs.pbrpc.Service services = 1; + */ + public org.xtreemfs.pbrpc.generatedinterfaces.DIR.ServiceOrBuilder getServicesOrBuilder( + int index) { + if (servicesBuilder_ == null) { + return services_.get(index); } else { + return servicesBuilder_.getMessageOrBuilder(index); + } + } + /** + * repeated .xtreemfs.pbrpc.Service services = 1; + */ + public java.util.List + getServicesOrBuilderList() { + if (servicesBuilder_ != null) { + return servicesBuilder_.getMessageOrBuilderList(); + } else { + return java.util.Collections.unmodifiableList(services_); + } + } + /** + * repeated .xtreemfs.pbrpc.Service services = 1; + */ + public org.xtreemfs.pbrpc.generatedinterfaces.DIR.Service.Builder addServicesBuilder() { + return getServicesFieldBuilder().addBuilder( + org.xtreemfs.pbrpc.generatedinterfaces.DIR.Service.getDefaultInstance()); + } + /** + * repeated .xtreemfs.pbrpc.Service services = 1; + */ + public org.xtreemfs.pbrpc.generatedinterfaces.DIR.Service.Builder addServicesBuilder( + int index) { + return getServicesFieldBuilder().addBuilder( + index, org.xtreemfs.pbrpc.generatedinterfaces.DIR.Service.getDefaultInstance()); + } + /** + * repeated .xtreemfs.pbrpc.Service services = 1; + */ + public java.util.List + getServicesBuilderList() { + return getServicesFieldBuilder().getBuilderList(); + } + private com.google.protobuf.RepeatedFieldBuilder< + org.xtreemfs.pbrpc.generatedinterfaces.DIR.Service, org.xtreemfs.pbrpc.generatedinterfaces.DIR.Service.Builder, org.xtreemfs.pbrpc.generatedinterfaces.DIR.ServiceOrBuilder> + getServicesFieldBuilder() { + if (servicesBuilder_ == null) { + servicesBuilder_ = new com.google.protobuf.RepeatedFieldBuilder< + org.xtreemfs.pbrpc.generatedinterfaces.DIR.Service, org.xtreemfs.pbrpc.generatedinterfaces.DIR.Service.Builder, org.xtreemfs.pbrpc.generatedinterfaces.DIR.ServiceOrBuilder>( + services_, + ((bitField0_ & 0x00000001) == 0x00000001), + getParentForChildren(), + isClean()); + services_ = null; + } + return servicesBuilder_; + } + // @@protoc_insertion_point(builder_scope:xtreemfs.pbrpc.ServiceSet) } - + static { defaultInstance = new ServiceSet(true); - org.xtreemfs.pbrpc.generatedinterfaces.DIR.internalForceInit(); defaultInstance.initFields(); } - + // @@protoc_insertion_point(class_scope:xtreemfs.pbrpc.ServiceSet) } - + + public interface ConfigurationOrBuilder + extends com.google.protobuf.MessageOrBuilder { + + // required string uuid = 1; + /** + * required string uuid = 1; + * + *
+     * Service UUID.
+     * 
+ */ + boolean hasUuid(); + /** + * required string uuid = 1; + * + *
+     * Service UUID.
+     * 
+ */ + java.lang.String getUuid(); + /** + * required string uuid = 1; + * + *
+     * Service UUID.
+     * 
+ */ + com.google.protobuf.ByteString + getUuidBytes(); + + // repeated .xtreemfs.pbrpc.KeyValuePair parameter = 2; + /** + * repeated .xtreemfs.pbrpc.KeyValuePair parameter = 2; + * + *
+     * Configuration options.
+     * 
+ */ + java.util.List + getParameterList(); + /** + * repeated .xtreemfs.pbrpc.KeyValuePair parameter = 2; + * + *
+     * Configuration options.
+     * 
+ */ + org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.KeyValuePair getParameter(int index); + /** + * repeated .xtreemfs.pbrpc.KeyValuePair parameter = 2; + * + *
+     * Configuration options.
+     * 
+ */ + int getParameterCount(); + /** + * repeated .xtreemfs.pbrpc.KeyValuePair parameter = 2; + * + *
+     * Configuration options.
+     * 
+ */ + java.util.List + getParameterOrBuilderList(); + /** + * repeated .xtreemfs.pbrpc.KeyValuePair parameter = 2; + * + *
+     * Configuration options.
+     * 
+ */ + org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.KeyValuePairOrBuilder getParameterOrBuilder( + int index); + + // required fixed64 version = 3; + /** + * required fixed64 version = 3; + * + *
+     * Version of this record, assigned by the DIR on write.
+     * 
+ */ + boolean hasVersion(); + /** + * required fixed64 version = 3; + * + *
+     * Version of this record, assigned by the DIR on write.
+     * 
+ */ + long getVersion(); + } + /** + * Protobuf type {@code xtreemfs.pbrpc.Configuration} + * + *
+   * Service configuration stored in the DIR.
+   * 
+ */ public static final class Configuration extends - com.google.protobuf.GeneratedMessage { + com.google.protobuf.GeneratedMessage + implements ConfigurationOrBuilder { // Use Configuration.newBuilder() to construct. - private Configuration() { - initFields(); + private Configuration(com.google.protobuf.GeneratedMessage.Builder builder) { + super(builder); + this.unknownFields = builder.getUnknownFields(); } - private Configuration(boolean noInit) {} - + private Configuration(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); } + private static final Configuration defaultInstance; public static Configuration getDefaultInstance() { return defaultInstance; } - + public Configuration getDefaultInstanceForType() { return defaultInstance; } - + + private final com.google.protobuf.UnknownFieldSet unknownFields; + @java.lang.Override + public final com.google.protobuf.UnknownFieldSet + getUnknownFields() { + return this.unknownFields; + } + private Configuration( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + initFields(); + int mutable_bitField0_ = 0; + com.google.protobuf.UnknownFieldSet.Builder unknownFields = + com.google.protobuf.UnknownFieldSet.newBuilder(); + try { + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch (tag) { + case 0: + done = true; + break; + default: { + if (!parseUnknownField(input, unknownFields, + extensionRegistry, tag)) { + done = true; + } + break; + } + case 10: { + bitField0_ |= 0x00000001; + uuid_ = input.readBytes(); + break; + } + case 18: { + if (!((mutable_bitField0_ & 0x00000002) == 0x00000002)) { + parameter_ = new java.util.ArrayList(); + mutable_bitField0_ |= 0x00000002; + } + parameter_.add(input.readMessage(org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.KeyValuePair.PARSER, extensionRegistry)); + break; + } + case 25: { + bitField0_ |= 0x00000002; + version_ = input.readFixed64(); + break; + } + } + } + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(this); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException( + e.getMessage()).setUnfinishedMessage(this); + } finally { + if (((mutable_bitField0_ & 0x00000002) == 0x00000002)) { + parameter_ = java.util.Collections.unmodifiableList(parameter_); + } + this.unknownFields = unknownFields.build(); + makeExtensionsImmutable(); + } + } public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { return org.xtreemfs.pbrpc.generatedinterfaces.DIR.internal_static_xtreemfs_pbrpc_Configuration_descriptor; } - + protected com.google.protobuf.GeneratedMessage.FieldAccessorTable internalGetFieldAccessorTable() { - return org.xtreemfs.pbrpc.generatedinterfaces.DIR.internal_static_xtreemfs_pbrpc_Configuration_fieldAccessorTable; + return org.xtreemfs.pbrpc.generatedinterfaces.DIR.internal_static_xtreemfs_pbrpc_Configuration_fieldAccessorTable + .ensureFieldAccessorsInitialized( + org.xtreemfs.pbrpc.generatedinterfaces.DIR.Configuration.class, org.xtreemfs.pbrpc.generatedinterfaces.DIR.Configuration.Builder.class); + } + + public static com.google.protobuf.Parser PARSER = + new com.google.protobuf.AbstractParser() { + public Configuration parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return new Configuration(input, extensionRegistry); + } + }; + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; } - + + private int bitField0_; // required string uuid = 1; public static final int UUID_FIELD_NUMBER = 1; - private boolean hasUuid; - private java.lang.String uuid_ = ""; - public boolean hasUuid() { return hasUuid; } - public java.lang.String getUuid() { return uuid_; } - + private java.lang.Object uuid_; + /** + * required string uuid = 1; + * + *
+     * Service UUID.
+     * 
+ */ + public boolean hasUuid() { + return ((bitField0_ & 0x00000001) == 0x00000001); + } + /** + * required string uuid = 1; + * + *
+     * Service UUID.
+     * 
+ */ + public java.lang.String getUuid() { + java.lang.Object ref = uuid_; + if (ref instanceof java.lang.String) { + return (java.lang.String) ref; + } else { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + if (bs.isValidUtf8()) { + uuid_ = s; + } + return s; + } + } + /** + * required string uuid = 1; + * + *
+     * Service UUID.
+     * 
+ */ + public com.google.protobuf.ByteString + getUuidBytes() { + java.lang.Object ref = uuid_; + if (ref instanceof java.lang.String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + uuid_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + // repeated .xtreemfs.pbrpc.KeyValuePair parameter = 2; public static final int PARAMETER_FIELD_NUMBER = 2; - private java.util.List parameter_ = - java.util.Collections.emptyList(); + private java.util.List parameter_; + /** + * repeated .xtreemfs.pbrpc.KeyValuePair parameter = 2; + * + *
+     * Configuration options.
+     * 
+ */ public java.util.List getParameterList() { return parameter_; } - public int getParameterCount() { return parameter_.size(); } + /** + * repeated .xtreemfs.pbrpc.KeyValuePair parameter = 2; + * + *
+     * Configuration options.
+     * 
+ */ + public java.util.List + getParameterOrBuilderList() { + return parameter_; + } + /** + * repeated .xtreemfs.pbrpc.KeyValuePair parameter = 2; + * + *
+     * Configuration options.
+     * 
+ */ + public int getParameterCount() { + return parameter_.size(); + } + /** + * repeated .xtreemfs.pbrpc.KeyValuePair parameter = 2; + * + *
+     * Configuration options.
+     * 
+ */ public org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.KeyValuePair getParameter(int index) { return parameter_.get(index); } - + /** + * repeated .xtreemfs.pbrpc.KeyValuePair parameter = 2; + * + *
+     * Configuration options.
+     * 
+ */ + public org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.KeyValuePairOrBuilder getParameterOrBuilder( + int index) { + return parameter_.get(index); + } + // required fixed64 version = 3; public static final int VERSION_FIELD_NUMBER = 3; - private boolean hasVersion; - private long version_ = 0L; - public boolean hasVersion() { return hasVersion; } - public long getVersion() { return version_; } - + private long version_; + /** + * required fixed64 version = 3; + * + *
+     * Version of this record, assigned by the DIR on write.
+     * 
+ */ + public boolean hasVersion() { + return ((bitField0_ & 0x00000002) == 0x00000002); + } + /** + * required fixed64 version = 3; + * + *
+     * Version of this record, assigned by the DIR on write.
+     * 
+ */ + public long getVersion() { + return version_; + } + private void initFields() { + uuid_ = ""; + parameter_ = java.util.Collections.emptyList(); + version_ = 0L; } + private byte memoizedIsInitialized = -1; public final boolean isInitialized() { - if (!hasUuid) return false; - if (!hasVersion) return false; - for (org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.KeyValuePair element : getParameterList()) { - if (!element.isInitialized()) return false; + byte isInitialized = memoizedIsInitialized; + if (isInitialized != -1) return isInitialized == 1; + + if (!hasUuid()) { + memoizedIsInitialized = 0; + return false; + } + if (!hasVersion()) { + memoizedIsInitialized = 0; + return false; + } + for (int i = 0; i < getParameterCount(); i++) { + if (!getParameter(i).isInitialized()) { + memoizedIsInitialized = 0; + return false; + } } + memoizedIsInitialized = 1; return true; } - + public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException { getSerializedSize(); - if (hasUuid()) { - output.writeString(1, getUuid()); + if (((bitField0_ & 0x00000001) == 0x00000001)) { + output.writeBytes(1, getUuidBytes()); } - for (org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.KeyValuePair element : getParameterList()) { - output.writeMessage(2, element); + for (int i = 0; i < parameter_.size(); i++) { + output.writeMessage(2, parameter_.get(i)); } - if (hasVersion()) { - output.writeFixed64(3, getVersion()); + if (((bitField0_ & 0x00000002) == 0x00000002)) { + output.writeFixed64(3, version_); } getUnknownFields().writeTo(output); } - + private int memoizedSerializedSize = -1; public int getSerializedSize() { int size = memoizedSerializedSize; if (size != -1) return size; - + size = 0; - if (hasUuid()) { + if (((bitField0_ & 0x00000001) == 0x00000001)) { size += com.google.protobuf.CodedOutputStream - .computeStringSize(1, getUuid()); + .computeBytesSize(1, getUuidBytes()); } - for (org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.KeyValuePair element : getParameterList()) { + for (int i = 0; i < parameter_.size(); i++) { size += com.google.protobuf.CodedOutputStream - .computeMessageSize(2, element); + .computeMessageSize(2, parameter_.get(i)); } - if (hasVersion()) { + if (((bitField0_ & 0x00000002) == 0x00000002)) { size += com.google.protobuf.CodedOutputStream - .computeFixed64Size(3, getVersion()); + .computeFixed64Size(3, version_); } size += getUnknownFields().getSerializedSize(); memoizedSerializedSize = size; return size; } - + + private static final long serialVersionUID = 0L; + @java.lang.Override + protected java.lang.Object writeReplace() + throws java.io.ObjectStreamException { + return super.writeReplace(); + } + public static org.xtreemfs.pbrpc.generatedinterfaces.DIR.Configuration parseFrom( com.google.protobuf.ByteString data) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data).buildParsed(); + return PARSER.parseFrom(data); } public static org.xtreemfs.pbrpc.generatedinterfaces.DIR.Configuration parseFrom( com.google.protobuf.ByteString data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(data, extensionRegistry); } public static org.xtreemfs.pbrpc.generatedinterfaces.DIR.Configuration parseFrom(byte[] data) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data).buildParsed(); + return PARSER.parseFrom(data); } public static org.xtreemfs.pbrpc.generatedinterfaces.DIR.Configuration parseFrom( byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(data, extensionRegistry); } public static org.xtreemfs.pbrpc.generatedinterfaces.DIR.Configuration parseFrom(java.io.InputStream input) throws java.io.IOException { - return newBuilder().mergeFrom(input).buildParsed(); + return PARSER.parseFrom(input); } public static org.xtreemfs.pbrpc.generatedinterfaces.DIR.Configuration parseFrom( java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - return newBuilder().mergeFrom(input, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(input, extensionRegistry); } public static org.xtreemfs.pbrpc.generatedinterfaces.DIR.Configuration parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException { - Builder builder = newBuilder(); - if (builder.mergeDelimitedFrom(input)) { - return builder.buildParsed(); - } else { - return null; - } + return PARSER.parseDelimitedFrom(input); } public static org.xtreemfs.pbrpc.generatedinterfaces.DIR.Configuration parseDelimitedFrom( java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - Builder builder = newBuilder(); - if (builder.mergeDelimitedFrom(input, extensionRegistry)) { - return builder.buildParsed(); - } else { - return null; - } + return PARSER.parseDelimitedFrom(input, extensionRegistry); } public static org.xtreemfs.pbrpc.generatedinterfaces.DIR.Configuration parseFrom( com.google.protobuf.CodedInputStream input) throws java.io.IOException { - return newBuilder().mergeFrom(input).buildParsed(); + return PARSER.parseFrom(input); } public static org.xtreemfs.pbrpc.generatedinterfaces.DIR.Configuration parseFrom( com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - return newBuilder().mergeFrom(input, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(input, extensionRegistry); } - + public static Builder newBuilder() { return Builder.create(); } public Builder newBuilderForType() { return newBuilder(); } public static Builder newBuilder(org.xtreemfs.pbrpc.generatedinterfaces.DIR.Configuration prototype) { return newBuilder().mergeFrom(prototype); } public Builder toBuilder() { return newBuilder(this); } - + + @java.lang.Override + protected Builder newBuilderForType( + com.google.protobuf.GeneratedMessage.BuilderParent parent) { + Builder builder = new Builder(parent); + return builder; + } + /** + * Protobuf type {@code xtreemfs.pbrpc.Configuration} + * + *
+     * Service configuration stored in the DIR.
+     * 
+ */ public static final class Builder extends - com.google.protobuf.GeneratedMessage.Builder { - private org.xtreemfs.pbrpc.generatedinterfaces.DIR.Configuration result; - + com.google.protobuf.GeneratedMessage.Builder + implements org.xtreemfs.pbrpc.generatedinterfaces.DIR.ConfigurationOrBuilder { + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return org.xtreemfs.pbrpc.generatedinterfaces.DIR.internal_static_xtreemfs_pbrpc_Configuration_descriptor; + } + + protected com.google.protobuf.GeneratedMessage.FieldAccessorTable + internalGetFieldAccessorTable() { + return org.xtreemfs.pbrpc.generatedinterfaces.DIR.internal_static_xtreemfs_pbrpc_Configuration_fieldAccessorTable + .ensureFieldAccessorsInitialized( + org.xtreemfs.pbrpc.generatedinterfaces.DIR.Configuration.class, org.xtreemfs.pbrpc.generatedinterfaces.DIR.Configuration.Builder.class); + } + // Construct using org.xtreemfs.pbrpc.generatedinterfaces.DIR.Configuration.newBuilder() - private Builder() {} - - private static Builder create() { - Builder builder = new Builder(); - builder.result = new org.xtreemfs.pbrpc.generatedinterfaces.DIR.Configuration(); - return builder; + private Builder() { + maybeForceBuilderInitialization(); } - - protected org.xtreemfs.pbrpc.generatedinterfaces.DIR.Configuration internalGetResult() { - return result; + + private Builder( + com.google.protobuf.GeneratedMessage.BuilderParent parent) { + super(parent); + maybeForceBuilderInitialization(); } - + private void maybeForceBuilderInitialization() { + if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) { + getParameterFieldBuilder(); + } + } + private static Builder create() { + return new Builder(); + } + public Builder clear() { - if (result == null) { - throw new IllegalStateException( - "Cannot call clear() after build()."); + super.clear(); + uuid_ = ""; + bitField0_ = (bitField0_ & ~0x00000001); + if (parameterBuilder_ == null) { + parameter_ = java.util.Collections.emptyList(); + bitField0_ = (bitField0_ & ~0x00000002); + } else { + parameterBuilder_.clear(); } - result = new org.xtreemfs.pbrpc.generatedinterfaces.DIR.Configuration(); + version_ = 0L; + bitField0_ = (bitField0_ & ~0x00000004); return this; } - + public Builder clone() { - return create().mergeFrom(result); + return create().mergeFrom(buildPartial()); } - + public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() { - return org.xtreemfs.pbrpc.generatedinterfaces.DIR.Configuration.getDescriptor(); + return org.xtreemfs.pbrpc.generatedinterfaces.DIR.internal_static_xtreemfs_pbrpc_Configuration_descriptor; } - + public org.xtreemfs.pbrpc.generatedinterfaces.DIR.Configuration getDefaultInstanceForType() { return org.xtreemfs.pbrpc.generatedinterfaces.DIR.Configuration.getDefaultInstance(); } - - public boolean isInitialized() { - return result.isInitialized(); - } + public org.xtreemfs.pbrpc.generatedinterfaces.DIR.Configuration build() { - if (result != null && !isInitialized()) { + org.xtreemfs.pbrpc.generatedinterfaces.DIR.Configuration result = buildPartial(); + if (!result.isInitialized()) { throw newUninitializedMessageException(result); } - return buildPartial(); - } - - private org.xtreemfs.pbrpc.generatedinterfaces.DIR.Configuration buildParsed() - throws com.google.protobuf.InvalidProtocolBufferException { - if (!isInitialized()) { - throw newUninitializedMessageException( - result).asInvalidProtocolBufferException(); - } - return buildPartial(); + return result; } - + public org.xtreemfs.pbrpc.generatedinterfaces.DIR.Configuration buildPartial() { - if (result == null) { - throw new IllegalStateException( - "build() has already been called on this Builder."); + org.xtreemfs.pbrpc.generatedinterfaces.DIR.Configuration result = new org.xtreemfs.pbrpc.generatedinterfaces.DIR.Configuration(this); + int from_bitField0_ = bitField0_; + int to_bitField0_ = 0; + if (((from_bitField0_ & 0x00000001) == 0x00000001)) { + to_bitField0_ |= 0x00000001; + } + result.uuid_ = uuid_; + if (parameterBuilder_ == null) { + if (((bitField0_ & 0x00000002) == 0x00000002)) { + parameter_ = java.util.Collections.unmodifiableList(parameter_); + bitField0_ = (bitField0_ & ~0x00000002); + } + result.parameter_ = parameter_; + } else { + result.parameter_ = parameterBuilder_.build(); } - if (result.parameter_ != java.util.Collections.EMPTY_LIST) { - result.parameter_ = - java.util.Collections.unmodifiableList(result.parameter_); + if (((from_bitField0_ & 0x00000004) == 0x00000004)) { + to_bitField0_ |= 0x00000002; } - org.xtreemfs.pbrpc.generatedinterfaces.DIR.Configuration returnMe = result; - result = null; - return returnMe; + result.version_ = version_; + result.bitField0_ = to_bitField0_; + onBuilt(); + return result; } - + public Builder mergeFrom(com.google.protobuf.Message other) { if (other instanceof org.xtreemfs.pbrpc.generatedinterfaces.DIR.Configuration) { return mergeFrom((org.xtreemfs.pbrpc.generatedinterfaces.DIR.Configuration)other); @@ -2926,17 +6870,39 @@ public final class DIR { return this; } } - + public Builder mergeFrom(org.xtreemfs.pbrpc.generatedinterfaces.DIR.Configuration other) { if (other == org.xtreemfs.pbrpc.generatedinterfaces.DIR.Configuration.getDefaultInstance()) return this; if (other.hasUuid()) { - setUuid(other.getUuid()); - } - if (!other.parameter_.isEmpty()) { - if (result.parameter_.isEmpty()) { - result.parameter_ = new java.util.ArrayList(); + bitField0_ |= 0x00000001; + uuid_ = other.uuid_; + onChanged(); + } + if (parameterBuilder_ == null) { + if (!other.parameter_.isEmpty()) { + if (parameter_.isEmpty()) { + parameter_ = other.parameter_; + bitField0_ = (bitField0_ & ~0x00000002); + } else { + ensureParameterIsMutable(); + parameter_.addAll(other.parameter_); + } + onChanged(); + } + } else { + if (!other.parameter_.isEmpty()) { + if (parameterBuilder_.isEmpty()) { + parameterBuilder_.dispose(); + parameterBuilder_ = null; + parameter_ = other.parameter_; + bitField0_ = (bitField0_ & ~0x00000002); + parameterBuilder_ = + com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ? + getParameterFieldBuilder() : null; + } else { + parameterBuilder_.addAllMessages(other.parameter_); + } } - result.parameter_.addAll(other.parameter_); } if (other.hasVersion()) { setVersion(other.getVersion()); @@ -2944,356 +6910,885 @@ public final class DIR { this.mergeUnknownFields(other.getUnknownFields()); return this; } - + + public final boolean isInitialized() { + if (!hasUuid()) { + + return false; + } + if (!hasVersion()) { + + return false; + } + for (int i = 0; i < getParameterCount(); i++) { + if (!getParameter(i).isInitialized()) { + + return false; + } + } + return true; + } + public Builder mergeFrom( com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - com.google.protobuf.UnknownFieldSet.Builder unknownFields = - com.google.protobuf.UnknownFieldSet.newBuilder( - this.getUnknownFields()); - while (true) { - int tag = input.readTag(); - switch (tag) { - case 0: - this.setUnknownFields(unknownFields.build()); - return this; - default: { - if (!parseUnknownField(input, unknownFields, - extensionRegistry, tag)) { - this.setUnknownFields(unknownFields.build()); - return this; - } - break; - } - case 10: { - setUuid(input.readString()); - break; - } - case 18: { - org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.KeyValuePair.Builder subBuilder = org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.KeyValuePair.newBuilder(); - input.readMessage(subBuilder, extensionRegistry); - addParameter(subBuilder.buildPartial()); - break; - } - case 25: { - setVersion(input.readFixed64()); - break; - } + org.xtreemfs.pbrpc.generatedinterfaces.DIR.Configuration parsedMessage = null; + try { + parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + parsedMessage = (org.xtreemfs.pbrpc.generatedinterfaces.DIR.Configuration) e.getUnfinishedMessage(); + throw e; + } finally { + if (parsedMessage != null) { + mergeFrom(parsedMessage); } } + return this; } - - + private int bitField0_; + // required string uuid = 1; + private java.lang.Object uuid_ = ""; + /** + * required string uuid = 1; + * + *
+       * Service UUID.
+       * 
+ */ public boolean hasUuid() { - return result.hasUuid(); - } + return ((bitField0_ & 0x00000001) == 0x00000001); + } + /** + * required string uuid = 1; + * + *
+       * Service UUID.
+       * 
+ */ public java.lang.String getUuid() { - return result.getUuid(); - } - public Builder setUuid(java.lang.String value) { + java.lang.Object ref = uuid_; + if (!(ref instanceof java.lang.String)) { + java.lang.String s = ((com.google.protobuf.ByteString) ref) + .toStringUtf8(); + uuid_ = s; + return s; + } else { + return (java.lang.String) ref; + } + } + /** + * required string uuid = 1; + * + *
+       * Service UUID.
+       * 
+ */ + public com.google.protobuf.ByteString + getUuidBytes() { + java.lang.Object ref = uuid_; + if (ref instanceof String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + uuid_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + /** + * required string uuid = 1; + * + *
+       * Service UUID.
+       * 
+ */ + public Builder setUuid( + java.lang.String value) { if (value == null) { throw new NullPointerException(); } - result.hasUuid = true; - result.uuid_ = value; - return this; - } + bitField0_ |= 0x00000001; + uuid_ = value; + onChanged(); + return this; + } + /** + * required string uuid = 1; + * + *
+       * Service UUID.
+       * 
+ */ public Builder clearUuid() { - result.hasUuid = false; - result.uuid_ = getDefaultInstance().getUuid(); + bitField0_ = (bitField0_ & ~0x00000001); + uuid_ = getDefaultInstance().getUuid(); + onChanged(); + return this; + } + /** + * required string uuid = 1; + * + *
+       * Service UUID.
+       * 
+ */ + public Builder setUuidBytes( + com.google.protobuf.ByteString value) { + if (value == null) { + throw new NullPointerException(); + } + bitField0_ |= 0x00000001; + uuid_ = value; + onChanged(); return this; } - + // repeated .xtreemfs.pbrpc.KeyValuePair parameter = 2; + private java.util.List parameter_ = + java.util.Collections.emptyList(); + private void ensureParameterIsMutable() { + if (!((bitField0_ & 0x00000002) == 0x00000002)) { + parameter_ = new java.util.ArrayList(parameter_); + bitField0_ |= 0x00000002; + } + } + + private com.google.protobuf.RepeatedFieldBuilder< + org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.KeyValuePair, org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.KeyValuePair.Builder, org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.KeyValuePairOrBuilder> parameterBuilder_; + + /** + * repeated .xtreemfs.pbrpc.KeyValuePair parameter = 2; + * + *
+       * Configuration options.
+       * 
+ */ public java.util.List getParameterList() { - return java.util.Collections.unmodifiableList(result.parameter_); + if (parameterBuilder_ == null) { + return java.util.Collections.unmodifiableList(parameter_); + } else { + return parameterBuilder_.getMessageList(); + } } + /** + * repeated .xtreemfs.pbrpc.KeyValuePair parameter = 2; + * + *
+       * Configuration options.
+       * 
+ */ public int getParameterCount() { - return result.getParameterCount(); + if (parameterBuilder_ == null) { + return parameter_.size(); + } else { + return parameterBuilder_.getCount(); + } } + /** + * repeated .xtreemfs.pbrpc.KeyValuePair parameter = 2; + * + *
+       * Configuration options.
+       * 
+ */ public org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.KeyValuePair getParameter(int index) { - return result.getParameter(index); - } - public Builder setParameter(int index, org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.KeyValuePair value) { - if (value == null) { - throw new NullPointerException(); + if (parameterBuilder_ == null) { + return parameter_.get(index); + } else { + return parameterBuilder_.getMessage(index); + } + } + /** + * repeated .xtreemfs.pbrpc.KeyValuePair parameter = 2; + * + *
+       * Configuration options.
+       * 
+ */ + public Builder setParameter( + int index, org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.KeyValuePair value) { + if (parameterBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + ensureParameterIsMutable(); + parameter_.set(index, value); + onChanged(); + } else { + parameterBuilder_.setMessage(index, value); + } + return this; + } + /** + * repeated .xtreemfs.pbrpc.KeyValuePair parameter = 2; + * + *
+       * Configuration options.
+       * 
+ */ + public Builder setParameter( + int index, org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.KeyValuePair.Builder builderForValue) { + if (parameterBuilder_ == null) { + ensureParameterIsMutable(); + parameter_.set(index, builderForValue.build()); + onChanged(); + } else { + parameterBuilder_.setMessage(index, builderForValue.build()); } - result.parameter_.set(index, value); - return this; - } - public Builder setParameter(int index, org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.KeyValuePair.Builder builderForValue) { - result.parameter_.set(index, builderForValue.build()); return this; } + /** + * repeated .xtreemfs.pbrpc.KeyValuePair parameter = 2; + * + *
+       * Configuration options.
+       * 
+ */ public Builder addParameter(org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.KeyValuePair value) { - if (value == null) { - throw new NullPointerException(); - } - if (result.parameter_.isEmpty()) { - result.parameter_ = new java.util.ArrayList(); - } - result.parameter_.add(value); - return this; - } - public Builder addParameter(org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.KeyValuePair.Builder builderForValue) { - if (result.parameter_.isEmpty()) { - result.parameter_ = new java.util.ArrayList(); + if (parameterBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + ensureParameterIsMutable(); + parameter_.add(value); + onChanged(); + } else { + parameterBuilder_.addMessage(value); + } + return this; + } + /** + * repeated .xtreemfs.pbrpc.KeyValuePair parameter = 2; + * + *
+       * Configuration options.
+       * 
+ */ + public Builder addParameter( + int index, org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.KeyValuePair value) { + if (parameterBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + ensureParameterIsMutable(); + parameter_.add(index, value); + onChanged(); + } else { + parameterBuilder_.addMessage(index, value); + } + return this; + } + /** + * repeated .xtreemfs.pbrpc.KeyValuePair parameter = 2; + * + *
+       * Configuration options.
+       * 
+ */ + public Builder addParameter( + org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.KeyValuePair.Builder builderForValue) { + if (parameterBuilder_ == null) { + ensureParameterIsMutable(); + parameter_.add(builderForValue.build()); + onChanged(); + } else { + parameterBuilder_.addMessage(builderForValue.build()); + } + return this; + } + /** + * repeated .xtreemfs.pbrpc.KeyValuePair parameter = 2; + * + *
+       * Configuration options.
+       * 
+ */ + public Builder addParameter( + int index, org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.KeyValuePair.Builder builderForValue) { + if (parameterBuilder_ == null) { + ensureParameterIsMutable(); + parameter_.add(index, builderForValue.build()); + onChanged(); + } else { + parameterBuilder_.addMessage(index, builderForValue.build()); } - result.parameter_.add(builderForValue.build()); return this; } + /** + * repeated .xtreemfs.pbrpc.KeyValuePair parameter = 2; + * + *
+       * Configuration options.
+       * 
+ */ public Builder addAllParameter( java.lang.Iterable values) { - if (result.parameter_.isEmpty()) { - result.parameter_ = new java.util.ArrayList(); + if (parameterBuilder_ == null) { + ensureParameterIsMutable(); + super.addAll(values, parameter_); + onChanged(); + } else { + parameterBuilder_.addAllMessages(values); } - super.addAll(values, result.parameter_); return this; } + /** + * repeated .xtreemfs.pbrpc.KeyValuePair parameter = 2; + * + *
+       * Configuration options.
+       * 
+ */ public Builder clearParameter() { - result.parameter_ = java.util.Collections.emptyList(); - return this; + if (parameterBuilder_ == null) { + parameter_ = java.util.Collections.emptyList(); + bitField0_ = (bitField0_ & ~0x00000002); + onChanged(); + } else { + parameterBuilder_.clear(); + } + return this; + } + /** + * repeated .xtreemfs.pbrpc.KeyValuePair parameter = 2; + * + *
+       * Configuration options.
+       * 
+ */ + public Builder removeParameter(int index) { + if (parameterBuilder_ == null) { + ensureParameterIsMutable(); + parameter_.remove(index); + onChanged(); + } else { + parameterBuilder_.remove(index); + } + return this; + } + /** + * repeated .xtreemfs.pbrpc.KeyValuePair parameter = 2; + * + *
+       * Configuration options.
+       * 
+ */ + public org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.KeyValuePair.Builder getParameterBuilder( + int index) { + return getParameterFieldBuilder().getBuilder(index); + } + /** + * repeated .xtreemfs.pbrpc.KeyValuePair parameter = 2; + * + *
+       * Configuration options.
+       * 
+ */ + public org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.KeyValuePairOrBuilder getParameterOrBuilder( + int index) { + if (parameterBuilder_ == null) { + return parameter_.get(index); } else { + return parameterBuilder_.getMessageOrBuilder(index); + } + } + /** + * repeated .xtreemfs.pbrpc.KeyValuePair parameter = 2; + * + *
+       * Configuration options.
+       * 
+ */ + public java.util.List + getParameterOrBuilderList() { + if (parameterBuilder_ != null) { + return parameterBuilder_.getMessageOrBuilderList(); + } else { + return java.util.Collections.unmodifiableList(parameter_); + } + } + /** + * repeated .xtreemfs.pbrpc.KeyValuePair parameter = 2; + * + *
+       * Configuration options.
+       * 
+ */ + public org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.KeyValuePair.Builder addParameterBuilder() { + return getParameterFieldBuilder().addBuilder( + org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.KeyValuePair.getDefaultInstance()); + } + /** + * repeated .xtreemfs.pbrpc.KeyValuePair parameter = 2; + * + *
+       * Configuration options.
+       * 
+ */ + public org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.KeyValuePair.Builder addParameterBuilder( + int index) { + return getParameterFieldBuilder().addBuilder( + index, org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.KeyValuePair.getDefaultInstance()); + } + /** + * repeated .xtreemfs.pbrpc.KeyValuePair parameter = 2; + * + *
+       * Configuration options.
+       * 
+ */ + public java.util.List + getParameterBuilderList() { + return getParameterFieldBuilder().getBuilderList(); + } + private com.google.protobuf.RepeatedFieldBuilder< + org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.KeyValuePair, org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.KeyValuePair.Builder, org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.KeyValuePairOrBuilder> + getParameterFieldBuilder() { + if (parameterBuilder_ == null) { + parameterBuilder_ = new com.google.protobuf.RepeatedFieldBuilder< + org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.KeyValuePair, org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.KeyValuePair.Builder, org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.KeyValuePairOrBuilder>( + parameter_, + ((bitField0_ & 0x00000002) == 0x00000002), + getParentForChildren(), + isClean()); + parameter_ = null; + } + return parameterBuilder_; } - + // required fixed64 version = 3; + private long version_ ; + /** + * required fixed64 version = 3; + * + *
+       * Version of this record, assigned by the DIR on write.
+       * 
+ */ public boolean hasVersion() { - return result.hasVersion(); - } + return ((bitField0_ & 0x00000004) == 0x00000004); + } + /** + * required fixed64 version = 3; + * + *
+       * Version of this record, assigned by the DIR on write.
+       * 
+ */ public long getVersion() { - return result.getVersion(); - } + return version_; + } + /** + * required fixed64 version = 3; + * + *
+       * Version of this record, assigned by the DIR on write.
+       * 
+ */ public Builder setVersion(long value) { - result.hasVersion = true; - result.version_ = value; - return this; - } + bitField0_ |= 0x00000004; + version_ = value; + onChanged(); + return this; + } + /** + * required fixed64 version = 3; + * + *
+       * Version of this record, assigned by the DIR on write.
+       * 
+ */ public Builder clearVersion() { - result.hasVersion = false; - result.version_ = 0L; + bitField0_ = (bitField0_ & ~0x00000004); + version_ = 0L; + onChanged(); return this; } - + // @@protoc_insertion_point(builder_scope:xtreemfs.pbrpc.Configuration) } - + static { defaultInstance = new Configuration(true); - org.xtreemfs.pbrpc.generatedinterfaces.DIR.internalForceInit(); defaultInstance.initFields(); } - + // @@protoc_insertion_point(class_scope:xtreemfs.pbrpc.Configuration) } - + + public interface addressMappingGetRequestOrBuilder + extends com.google.protobuf.MessageOrBuilder { + + // required string uuid = 1; + /** + * required string uuid = 1; + * + *
+     * UUID of the service for which mapping should be returned.
+     * 
+ */ + boolean hasUuid(); + /** + * required string uuid = 1; + * + *
+     * UUID of the service for which mapping should be returned.
+     * 
+ */ + java.lang.String getUuid(); + /** + * required string uuid = 1; + * + *
+     * UUID of the service for which mapping should be returned.
+     * 
+ */ + com.google.protobuf.ByteString + getUuidBytes(); + } + /** + * Protobuf type {@code xtreemfs.pbrpc.addressMappingGetRequest} + */ public static final class addressMappingGetRequest extends - com.google.protobuf.GeneratedMessage { + com.google.protobuf.GeneratedMessage + implements addressMappingGetRequestOrBuilder { // Use addressMappingGetRequest.newBuilder() to construct. - private addressMappingGetRequest() { - initFields(); + private addressMappingGetRequest(com.google.protobuf.GeneratedMessage.Builder builder) { + super(builder); + this.unknownFields = builder.getUnknownFields(); } - private addressMappingGetRequest(boolean noInit) {} - + private addressMappingGetRequest(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); } + private static final addressMappingGetRequest defaultInstance; public static addressMappingGetRequest getDefaultInstance() { return defaultInstance; } - + public addressMappingGetRequest getDefaultInstanceForType() { return defaultInstance; } - + + private final com.google.protobuf.UnknownFieldSet unknownFields; + @java.lang.Override + public final com.google.protobuf.UnknownFieldSet + getUnknownFields() { + return this.unknownFields; + } + private addressMappingGetRequest( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + initFields(); + int mutable_bitField0_ = 0; + com.google.protobuf.UnknownFieldSet.Builder unknownFields = + com.google.protobuf.UnknownFieldSet.newBuilder(); + try { + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch (tag) { + case 0: + done = true; + break; + default: { + if (!parseUnknownField(input, unknownFields, + extensionRegistry, tag)) { + done = true; + } + break; + } + case 10: { + bitField0_ |= 0x00000001; + uuid_ = input.readBytes(); + break; + } + } + } + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(this); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException( + e.getMessage()).setUnfinishedMessage(this); + } finally { + this.unknownFields = unknownFields.build(); + makeExtensionsImmutable(); + } + } public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { return org.xtreemfs.pbrpc.generatedinterfaces.DIR.internal_static_xtreemfs_pbrpc_addressMappingGetRequest_descriptor; } - + protected com.google.protobuf.GeneratedMessage.FieldAccessorTable internalGetFieldAccessorTable() { - return org.xtreemfs.pbrpc.generatedinterfaces.DIR.internal_static_xtreemfs_pbrpc_addressMappingGetRequest_fieldAccessorTable; + return org.xtreemfs.pbrpc.generatedinterfaces.DIR.internal_static_xtreemfs_pbrpc_addressMappingGetRequest_fieldAccessorTable + .ensureFieldAccessorsInitialized( + org.xtreemfs.pbrpc.generatedinterfaces.DIR.addressMappingGetRequest.class, org.xtreemfs.pbrpc.generatedinterfaces.DIR.addressMappingGetRequest.Builder.class); + } + + public static com.google.protobuf.Parser PARSER = + new com.google.protobuf.AbstractParser() { + public addressMappingGetRequest parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return new addressMappingGetRequest(input, extensionRegistry); + } + }; + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; } - + + private int bitField0_; // required string uuid = 1; public static final int UUID_FIELD_NUMBER = 1; - private boolean hasUuid; - private java.lang.String uuid_ = ""; - public boolean hasUuid() { return hasUuid; } - public java.lang.String getUuid() { return uuid_; } - + private java.lang.Object uuid_; + /** + * required string uuid = 1; + * + *
+     * UUID of the service for which mapping should be returned.
+     * 
+ */ + public boolean hasUuid() { + return ((bitField0_ & 0x00000001) == 0x00000001); + } + /** + * required string uuid = 1; + * + *
+     * UUID of the service for which mapping should be returned.
+     * 
+ */ + public java.lang.String getUuid() { + java.lang.Object ref = uuid_; + if (ref instanceof java.lang.String) { + return (java.lang.String) ref; + } else { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + if (bs.isValidUtf8()) { + uuid_ = s; + } + return s; + } + } + /** + * required string uuid = 1; + * + *
+     * UUID of the service for which mapping should be returned.
+     * 
+ */ + public com.google.protobuf.ByteString + getUuidBytes() { + java.lang.Object ref = uuid_; + if (ref instanceof java.lang.String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + uuid_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + private void initFields() { + uuid_ = ""; } + private byte memoizedIsInitialized = -1; public final boolean isInitialized() { - if (!hasUuid) return false; + byte isInitialized = memoizedIsInitialized; + if (isInitialized != -1) return isInitialized == 1; + + if (!hasUuid()) { + memoizedIsInitialized = 0; + return false; + } + memoizedIsInitialized = 1; return true; } - + public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException { getSerializedSize(); - if (hasUuid()) { - output.writeString(1, getUuid()); + if (((bitField0_ & 0x00000001) == 0x00000001)) { + output.writeBytes(1, getUuidBytes()); } getUnknownFields().writeTo(output); } - + private int memoizedSerializedSize = -1; public int getSerializedSize() { int size = memoizedSerializedSize; if (size != -1) return size; - + size = 0; - if (hasUuid()) { + if (((bitField0_ & 0x00000001) == 0x00000001)) { size += com.google.protobuf.CodedOutputStream - .computeStringSize(1, getUuid()); + .computeBytesSize(1, getUuidBytes()); } size += getUnknownFields().getSerializedSize(); memoizedSerializedSize = size; return size; } - + + private static final long serialVersionUID = 0L; + @java.lang.Override + protected java.lang.Object writeReplace() + throws java.io.ObjectStreamException { + return super.writeReplace(); + } + public static org.xtreemfs.pbrpc.generatedinterfaces.DIR.addressMappingGetRequest parseFrom( com.google.protobuf.ByteString data) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data).buildParsed(); + return PARSER.parseFrom(data); } public static org.xtreemfs.pbrpc.generatedinterfaces.DIR.addressMappingGetRequest parseFrom( com.google.protobuf.ByteString data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(data, extensionRegistry); } public static org.xtreemfs.pbrpc.generatedinterfaces.DIR.addressMappingGetRequest parseFrom(byte[] data) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data).buildParsed(); + return PARSER.parseFrom(data); } public static org.xtreemfs.pbrpc.generatedinterfaces.DIR.addressMappingGetRequest parseFrom( byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(data, extensionRegistry); } public static org.xtreemfs.pbrpc.generatedinterfaces.DIR.addressMappingGetRequest parseFrom(java.io.InputStream input) throws java.io.IOException { - return newBuilder().mergeFrom(input).buildParsed(); + return PARSER.parseFrom(input); } public static org.xtreemfs.pbrpc.generatedinterfaces.DIR.addressMappingGetRequest parseFrom( java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - return newBuilder().mergeFrom(input, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(input, extensionRegistry); } public static org.xtreemfs.pbrpc.generatedinterfaces.DIR.addressMappingGetRequest parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException { - Builder builder = newBuilder(); - if (builder.mergeDelimitedFrom(input)) { - return builder.buildParsed(); - } else { - return null; - } + return PARSER.parseDelimitedFrom(input); } public static org.xtreemfs.pbrpc.generatedinterfaces.DIR.addressMappingGetRequest parseDelimitedFrom( java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - Builder builder = newBuilder(); - if (builder.mergeDelimitedFrom(input, extensionRegistry)) { - return builder.buildParsed(); - } else { - return null; - } + return PARSER.parseDelimitedFrom(input, extensionRegistry); } public static org.xtreemfs.pbrpc.generatedinterfaces.DIR.addressMappingGetRequest parseFrom( com.google.protobuf.CodedInputStream input) throws java.io.IOException { - return newBuilder().mergeFrom(input).buildParsed(); + return PARSER.parseFrom(input); } public static org.xtreemfs.pbrpc.generatedinterfaces.DIR.addressMappingGetRequest parseFrom( com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - return newBuilder().mergeFrom(input, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(input, extensionRegistry); } - + public static Builder newBuilder() { return Builder.create(); } public Builder newBuilderForType() { return newBuilder(); } public static Builder newBuilder(org.xtreemfs.pbrpc.generatedinterfaces.DIR.addressMappingGetRequest prototype) { return newBuilder().mergeFrom(prototype); } public Builder toBuilder() { return newBuilder(this); } - + + @java.lang.Override + protected Builder newBuilderForType( + com.google.protobuf.GeneratedMessage.BuilderParent parent) { + Builder builder = new Builder(parent); + return builder; + } + /** + * Protobuf type {@code xtreemfs.pbrpc.addressMappingGetRequest} + */ public static final class Builder extends - com.google.protobuf.GeneratedMessage.Builder { - private org.xtreemfs.pbrpc.generatedinterfaces.DIR.addressMappingGetRequest result; - + com.google.protobuf.GeneratedMessage.Builder + implements org.xtreemfs.pbrpc.generatedinterfaces.DIR.addressMappingGetRequestOrBuilder { + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return org.xtreemfs.pbrpc.generatedinterfaces.DIR.internal_static_xtreemfs_pbrpc_addressMappingGetRequest_descriptor; + } + + protected com.google.protobuf.GeneratedMessage.FieldAccessorTable + internalGetFieldAccessorTable() { + return org.xtreemfs.pbrpc.generatedinterfaces.DIR.internal_static_xtreemfs_pbrpc_addressMappingGetRequest_fieldAccessorTable + .ensureFieldAccessorsInitialized( + org.xtreemfs.pbrpc.generatedinterfaces.DIR.addressMappingGetRequest.class, org.xtreemfs.pbrpc.generatedinterfaces.DIR.addressMappingGetRequest.Builder.class); + } + // Construct using org.xtreemfs.pbrpc.generatedinterfaces.DIR.addressMappingGetRequest.newBuilder() - private Builder() {} - - private static Builder create() { - Builder builder = new Builder(); - builder.result = new org.xtreemfs.pbrpc.generatedinterfaces.DIR.addressMappingGetRequest(); - return builder; + private Builder() { + maybeForceBuilderInitialization(); } - - protected org.xtreemfs.pbrpc.generatedinterfaces.DIR.addressMappingGetRequest internalGetResult() { - return result; + + private Builder( + com.google.protobuf.GeneratedMessage.BuilderParent parent) { + super(parent); + maybeForceBuilderInitialization(); } - - public Builder clear() { - if (result == null) { - throw new IllegalStateException( - "Cannot call clear() after build()."); + private void maybeForceBuilderInitialization() { + if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) { } - result = new org.xtreemfs.pbrpc.generatedinterfaces.DIR.addressMappingGetRequest(); + } + private static Builder create() { + return new Builder(); + } + + public Builder clear() { + super.clear(); + uuid_ = ""; + bitField0_ = (bitField0_ & ~0x00000001); return this; } - + public Builder clone() { - return create().mergeFrom(result); + return create().mergeFrom(buildPartial()); } - + public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() { - return org.xtreemfs.pbrpc.generatedinterfaces.DIR.addressMappingGetRequest.getDescriptor(); + return org.xtreemfs.pbrpc.generatedinterfaces.DIR.internal_static_xtreemfs_pbrpc_addressMappingGetRequest_descriptor; } - + public org.xtreemfs.pbrpc.generatedinterfaces.DIR.addressMappingGetRequest getDefaultInstanceForType() { return org.xtreemfs.pbrpc.generatedinterfaces.DIR.addressMappingGetRequest.getDefaultInstance(); } - - public boolean isInitialized() { - return result.isInitialized(); - } + public org.xtreemfs.pbrpc.generatedinterfaces.DIR.addressMappingGetRequest build() { - if (result != null && !isInitialized()) { + org.xtreemfs.pbrpc.generatedinterfaces.DIR.addressMappingGetRequest result = buildPartial(); + if (!result.isInitialized()) { throw newUninitializedMessageException(result); } - return buildPartial(); - } - - private org.xtreemfs.pbrpc.generatedinterfaces.DIR.addressMappingGetRequest buildParsed() - throws com.google.protobuf.InvalidProtocolBufferException { - if (!isInitialized()) { - throw newUninitializedMessageException( - result).asInvalidProtocolBufferException(); - } - return buildPartial(); + return result; } - + public org.xtreemfs.pbrpc.generatedinterfaces.DIR.addressMappingGetRequest buildPartial() { - if (result == null) { - throw new IllegalStateException( - "build() has already been called on this Builder."); - } - org.xtreemfs.pbrpc.generatedinterfaces.DIR.addressMappingGetRequest returnMe = result; - result = null; - return returnMe; + org.xtreemfs.pbrpc.generatedinterfaces.DIR.addressMappingGetRequest result = new org.xtreemfs.pbrpc.generatedinterfaces.DIR.addressMappingGetRequest(this); + int from_bitField0_ = bitField0_; + int to_bitField0_ = 0; + if (((from_bitField0_ & 0x00000001) == 0x00000001)) { + to_bitField0_ |= 0x00000001; + } + result.uuid_ = uuid_; + result.bitField0_ = to_bitField0_; + onBuilt(); + return result; } - + public Builder mergeFrom(com.google.protobuf.Message other) { if (other instanceof org.xtreemfs.pbrpc.generatedinterfaces.DIR.addressMappingGetRequest) { return mergeFrom((org.xtreemfs.pbrpc.generatedinterfaces.DIR.addressMappingGetRequest)other); @@ -3302,289 +7797,522 @@ public final class DIR { return this; } } - + public Builder mergeFrom(org.xtreemfs.pbrpc.generatedinterfaces.DIR.addressMappingGetRequest other) { if (other == org.xtreemfs.pbrpc.generatedinterfaces.DIR.addressMappingGetRequest.getDefaultInstance()) return this; if (other.hasUuid()) { - setUuid(other.getUuid()); + bitField0_ |= 0x00000001; + uuid_ = other.uuid_; + onChanged(); } this.mergeUnknownFields(other.getUnknownFields()); return this; } - + + public final boolean isInitialized() { + if (!hasUuid()) { + + return false; + } + return true; + } + public Builder mergeFrom( com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - com.google.protobuf.UnknownFieldSet.Builder unknownFields = - com.google.protobuf.UnknownFieldSet.newBuilder( - this.getUnknownFields()); - while (true) { - int tag = input.readTag(); - switch (tag) { - case 0: - this.setUnknownFields(unknownFields.build()); - return this; - default: { - if (!parseUnknownField(input, unknownFields, - extensionRegistry, tag)) { - this.setUnknownFields(unknownFields.build()); - return this; - } - break; - } - case 10: { - setUuid(input.readString()); - break; - } + org.xtreemfs.pbrpc.generatedinterfaces.DIR.addressMappingGetRequest parsedMessage = null; + try { + parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + parsedMessage = (org.xtreemfs.pbrpc.generatedinterfaces.DIR.addressMappingGetRequest) e.getUnfinishedMessage(); + throw e; + } finally { + if (parsedMessage != null) { + mergeFrom(parsedMessage); } } + return this; } - - + private int bitField0_; + // required string uuid = 1; + private java.lang.Object uuid_ = ""; + /** + * required string uuid = 1; + * + *
+       * UUID of the service for which mapping should be returned.
+       * 
+ */ public boolean hasUuid() { - return result.hasUuid(); - } + return ((bitField0_ & 0x00000001) == 0x00000001); + } + /** + * required string uuid = 1; + * + *
+       * UUID of the service for which mapping should be returned.
+       * 
+ */ public java.lang.String getUuid() { - return result.getUuid(); - } - public Builder setUuid(java.lang.String value) { + java.lang.Object ref = uuid_; + if (!(ref instanceof java.lang.String)) { + java.lang.String s = ((com.google.protobuf.ByteString) ref) + .toStringUtf8(); + uuid_ = s; + return s; + } else { + return (java.lang.String) ref; + } + } + /** + * required string uuid = 1; + * + *
+       * UUID of the service for which mapping should be returned.
+       * 
+ */ + public com.google.protobuf.ByteString + getUuidBytes() { + java.lang.Object ref = uuid_; + if (ref instanceof String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + uuid_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + /** + * required string uuid = 1; + * + *
+       * UUID of the service for which mapping should be returned.
+       * 
+ */ + public Builder setUuid( + java.lang.String value) { if (value == null) { throw new NullPointerException(); } - result.hasUuid = true; - result.uuid_ = value; - return this; - } + bitField0_ |= 0x00000001; + uuid_ = value; + onChanged(); + return this; + } + /** + * required string uuid = 1; + * + *
+       * UUID of the service for which mapping should be returned.
+       * 
+ */ public Builder clearUuid() { - result.hasUuid = false; - result.uuid_ = getDefaultInstance().getUuid(); + bitField0_ = (bitField0_ & ~0x00000001); + uuid_ = getDefaultInstance().getUuid(); + onChanged(); + return this; + } + /** + * required string uuid = 1; + * + *
+       * UUID of the service for which mapping should be returned.
+       * 
+ */ + public Builder setUuidBytes( + com.google.protobuf.ByteString value) { + if (value == null) { + throw new NullPointerException(); + } + bitField0_ |= 0x00000001; + uuid_ = value; + onChanged(); return this; } - + // @@protoc_insertion_point(builder_scope:xtreemfs.pbrpc.addressMappingGetRequest) } - + static { defaultInstance = new addressMappingGetRequest(true); - org.xtreemfs.pbrpc.generatedinterfaces.DIR.internalForceInit(); defaultInstance.initFields(); } - + // @@protoc_insertion_point(class_scope:xtreemfs.pbrpc.addressMappingGetRequest) } - + + public interface addressMappingGetResponseOrBuilder + extends com.google.protobuf.MessageOrBuilder { + + // optional .xtreemfs.pbrpc.AddressMappingSet result = 1; + /** + * optional .xtreemfs.pbrpc.AddressMappingSet result = 1; + * + *
+     * List of matching mappings, might be empty.
+     * 
+ */ + boolean hasResult(); + /** + * optional .xtreemfs.pbrpc.AddressMappingSet result = 1; + * + *
+     * List of matching mappings, might be empty.
+     * 
+ */ + org.xtreemfs.pbrpc.generatedinterfaces.DIR.AddressMappingSet getResult(); + /** + * optional .xtreemfs.pbrpc.AddressMappingSet result = 1; + * + *
+     * List of matching mappings, might be empty.
+     * 
+ */ + org.xtreemfs.pbrpc.generatedinterfaces.DIR.AddressMappingSetOrBuilder getResultOrBuilder(); + } + /** + * Protobuf type {@code xtreemfs.pbrpc.addressMappingGetResponse} + */ public static final class addressMappingGetResponse extends - com.google.protobuf.GeneratedMessage { + com.google.protobuf.GeneratedMessage + implements addressMappingGetResponseOrBuilder { // Use addressMappingGetResponse.newBuilder() to construct. - private addressMappingGetResponse() { - initFields(); + private addressMappingGetResponse(com.google.protobuf.GeneratedMessage.Builder builder) { + super(builder); + this.unknownFields = builder.getUnknownFields(); } - private addressMappingGetResponse(boolean noInit) {} - + private addressMappingGetResponse(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); } + private static final addressMappingGetResponse defaultInstance; public static addressMappingGetResponse getDefaultInstance() { return defaultInstance; } - + public addressMappingGetResponse getDefaultInstanceForType() { return defaultInstance; } - + + private final com.google.protobuf.UnknownFieldSet unknownFields; + @java.lang.Override + public final com.google.protobuf.UnknownFieldSet + getUnknownFields() { + return this.unknownFields; + } + private addressMappingGetResponse( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + initFields(); + int mutable_bitField0_ = 0; + com.google.protobuf.UnknownFieldSet.Builder unknownFields = + com.google.protobuf.UnknownFieldSet.newBuilder(); + try { + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch (tag) { + case 0: + done = true; + break; + default: { + if (!parseUnknownField(input, unknownFields, + extensionRegistry, tag)) { + done = true; + } + break; + } + case 10: { + org.xtreemfs.pbrpc.generatedinterfaces.DIR.AddressMappingSet.Builder subBuilder = null; + if (((bitField0_ & 0x00000001) == 0x00000001)) { + subBuilder = result_.toBuilder(); + } + result_ = input.readMessage(org.xtreemfs.pbrpc.generatedinterfaces.DIR.AddressMappingSet.PARSER, extensionRegistry); + if (subBuilder != null) { + subBuilder.mergeFrom(result_); + result_ = subBuilder.buildPartial(); + } + bitField0_ |= 0x00000001; + break; + } + } + } + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(this); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException( + e.getMessage()).setUnfinishedMessage(this); + } finally { + this.unknownFields = unknownFields.build(); + makeExtensionsImmutable(); + } + } public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { return org.xtreemfs.pbrpc.generatedinterfaces.DIR.internal_static_xtreemfs_pbrpc_addressMappingGetResponse_descriptor; } - + protected com.google.protobuf.GeneratedMessage.FieldAccessorTable internalGetFieldAccessorTable() { - return org.xtreemfs.pbrpc.generatedinterfaces.DIR.internal_static_xtreemfs_pbrpc_addressMappingGetResponse_fieldAccessorTable; + return org.xtreemfs.pbrpc.generatedinterfaces.DIR.internal_static_xtreemfs_pbrpc_addressMappingGetResponse_fieldAccessorTable + .ensureFieldAccessorsInitialized( + org.xtreemfs.pbrpc.generatedinterfaces.DIR.addressMappingGetResponse.class, org.xtreemfs.pbrpc.generatedinterfaces.DIR.addressMappingGetResponse.Builder.class); + } + + public static com.google.protobuf.Parser PARSER = + new com.google.protobuf.AbstractParser() { + public addressMappingGetResponse parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return new addressMappingGetResponse(input, extensionRegistry); + } + }; + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; } - + + private int bitField0_; // optional .xtreemfs.pbrpc.AddressMappingSet result = 1; public static final int RESULT_FIELD_NUMBER = 1; - private boolean hasResult; private org.xtreemfs.pbrpc.generatedinterfaces.DIR.AddressMappingSet result_; - public boolean hasResult() { return hasResult; } - public org.xtreemfs.pbrpc.generatedinterfaces.DIR.AddressMappingSet getResult() { return result_; } - + /** + * optional .xtreemfs.pbrpc.AddressMappingSet result = 1; + * + *
+     * List of matching mappings, might be empty.
+     * 
+ */ + public boolean hasResult() { + return ((bitField0_ & 0x00000001) == 0x00000001); + } + /** + * optional .xtreemfs.pbrpc.AddressMappingSet result = 1; + * + *
+     * List of matching mappings, might be empty.
+     * 
+ */ + public org.xtreemfs.pbrpc.generatedinterfaces.DIR.AddressMappingSet getResult() { + return result_; + } + /** + * optional .xtreemfs.pbrpc.AddressMappingSet result = 1; + * + *
+     * List of matching mappings, might be empty.
+     * 
+ */ + public org.xtreemfs.pbrpc.generatedinterfaces.DIR.AddressMappingSetOrBuilder getResultOrBuilder() { + return result_; + } + private void initFields() { result_ = org.xtreemfs.pbrpc.generatedinterfaces.DIR.AddressMappingSet.getDefaultInstance(); } + private byte memoizedIsInitialized = -1; public final boolean isInitialized() { + byte isInitialized = memoizedIsInitialized; + if (isInitialized != -1) return isInitialized == 1; + if (hasResult()) { - if (!getResult().isInitialized()) return false; + if (!getResult().isInitialized()) { + memoizedIsInitialized = 0; + return false; + } } + memoizedIsInitialized = 1; return true; } - + public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException { getSerializedSize(); - if (hasResult()) { - output.writeMessage(1, getResult()); + if (((bitField0_ & 0x00000001) == 0x00000001)) { + output.writeMessage(1, result_); } getUnknownFields().writeTo(output); } - + private int memoizedSerializedSize = -1; public int getSerializedSize() { int size = memoizedSerializedSize; if (size != -1) return size; - + size = 0; - if (hasResult()) { + if (((bitField0_ & 0x00000001) == 0x00000001)) { size += com.google.protobuf.CodedOutputStream - .computeMessageSize(1, getResult()); + .computeMessageSize(1, result_); } size += getUnknownFields().getSerializedSize(); memoizedSerializedSize = size; return size; } - + + private static final long serialVersionUID = 0L; + @java.lang.Override + protected java.lang.Object writeReplace() + throws java.io.ObjectStreamException { + return super.writeReplace(); + } + public static org.xtreemfs.pbrpc.generatedinterfaces.DIR.addressMappingGetResponse parseFrom( com.google.protobuf.ByteString data) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data).buildParsed(); + return PARSER.parseFrom(data); } public static org.xtreemfs.pbrpc.generatedinterfaces.DIR.addressMappingGetResponse parseFrom( com.google.protobuf.ByteString data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(data, extensionRegistry); } public static org.xtreemfs.pbrpc.generatedinterfaces.DIR.addressMappingGetResponse parseFrom(byte[] data) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data).buildParsed(); + return PARSER.parseFrom(data); } public static org.xtreemfs.pbrpc.generatedinterfaces.DIR.addressMappingGetResponse parseFrom( byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(data, extensionRegistry); } public static org.xtreemfs.pbrpc.generatedinterfaces.DIR.addressMappingGetResponse parseFrom(java.io.InputStream input) throws java.io.IOException { - return newBuilder().mergeFrom(input).buildParsed(); + return PARSER.parseFrom(input); } public static org.xtreemfs.pbrpc.generatedinterfaces.DIR.addressMappingGetResponse parseFrom( java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - return newBuilder().mergeFrom(input, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(input, extensionRegistry); } public static org.xtreemfs.pbrpc.generatedinterfaces.DIR.addressMappingGetResponse parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException { - Builder builder = newBuilder(); - if (builder.mergeDelimitedFrom(input)) { - return builder.buildParsed(); - } else { - return null; - } + return PARSER.parseDelimitedFrom(input); } public static org.xtreemfs.pbrpc.generatedinterfaces.DIR.addressMappingGetResponse parseDelimitedFrom( java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - Builder builder = newBuilder(); - if (builder.mergeDelimitedFrom(input, extensionRegistry)) { - return builder.buildParsed(); - } else { - return null; - } + return PARSER.parseDelimitedFrom(input, extensionRegistry); } public static org.xtreemfs.pbrpc.generatedinterfaces.DIR.addressMappingGetResponse parseFrom( com.google.protobuf.CodedInputStream input) throws java.io.IOException { - return newBuilder().mergeFrom(input).buildParsed(); + return PARSER.parseFrom(input); } public static org.xtreemfs.pbrpc.generatedinterfaces.DIR.addressMappingGetResponse parseFrom( com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - return newBuilder().mergeFrom(input, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(input, extensionRegistry); } - + public static Builder newBuilder() { return Builder.create(); } public Builder newBuilderForType() { return newBuilder(); } public static Builder newBuilder(org.xtreemfs.pbrpc.generatedinterfaces.DIR.addressMappingGetResponse prototype) { return newBuilder().mergeFrom(prototype); } public Builder toBuilder() { return newBuilder(this); } - + + @java.lang.Override + protected Builder newBuilderForType( + com.google.protobuf.GeneratedMessage.BuilderParent parent) { + Builder builder = new Builder(parent); + return builder; + } + /** + * Protobuf type {@code xtreemfs.pbrpc.addressMappingGetResponse} + */ public static final class Builder extends - com.google.protobuf.GeneratedMessage.Builder { - private org.xtreemfs.pbrpc.generatedinterfaces.DIR.addressMappingGetResponse result; - + com.google.protobuf.GeneratedMessage.Builder + implements org.xtreemfs.pbrpc.generatedinterfaces.DIR.addressMappingGetResponseOrBuilder { + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return org.xtreemfs.pbrpc.generatedinterfaces.DIR.internal_static_xtreemfs_pbrpc_addressMappingGetResponse_descriptor; + } + + protected com.google.protobuf.GeneratedMessage.FieldAccessorTable + internalGetFieldAccessorTable() { + return org.xtreemfs.pbrpc.generatedinterfaces.DIR.internal_static_xtreemfs_pbrpc_addressMappingGetResponse_fieldAccessorTable + .ensureFieldAccessorsInitialized( + org.xtreemfs.pbrpc.generatedinterfaces.DIR.addressMappingGetResponse.class, org.xtreemfs.pbrpc.generatedinterfaces.DIR.addressMappingGetResponse.Builder.class); + } + // Construct using org.xtreemfs.pbrpc.generatedinterfaces.DIR.addressMappingGetResponse.newBuilder() - private Builder() {} - - private static Builder create() { - Builder builder = new Builder(); - builder.result = new org.xtreemfs.pbrpc.generatedinterfaces.DIR.addressMappingGetResponse(); - return builder; + private Builder() { + maybeForceBuilderInitialization(); } - - protected org.xtreemfs.pbrpc.generatedinterfaces.DIR.addressMappingGetResponse internalGetResult() { - return result; + + private Builder( + com.google.protobuf.GeneratedMessage.BuilderParent parent) { + super(parent); + maybeForceBuilderInitialization(); + } + private void maybeForceBuilderInitialization() { + if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) { + getResultFieldBuilder(); + } + } + private static Builder create() { + return new Builder(); } - + public Builder clear() { - if (result == null) { - throw new IllegalStateException( - "Cannot call clear() after build()."); + super.clear(); + if (resultBuilder_ == null) { + result_ = org.xtreemfs.pbrpc.generatedinterfaces.DIR.AddressMappingSet.getDefaultInstance(); + } else { + resultBuilder_.clear(); } - result = new org.xtreemfs.pbrpc.generatedinterfaces.DIR.addressMappingGetResponse(); + bitField0_ = (bitField0_ & ~0x00000001); return this; } - + public Builder clone() { - return create().mergeFrom(result); + return create().mergeFrom(buildPartial()); } - + public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() { - return org.xtreemfs.pbrpc.generatedinterfaces.DIR.addressMappingGetResponse.getDescriptor(); + return org.xtreemfs.pbrpc.generatedinterfaces.DIR.internal_static_xtreemfs_pbrpc_addressMappingGetResponse_descriptor; } - + public org.xtreemfs.pbrpc.generatedinterfaces.DIR.addressMappingGetResponse getDefaultInstanceForType() { return org.xtreemfs.pbrpc.generatedinterfaces.DIR.addressMappingGetResponse.getDefaultInstance(); } - - public boolean isInitialized() { - return result.isInitialized(); - } + public org.xtreemfs.pbrpc.generatedinterfaces.DIR.addressMappingGetResponse build() { - if (result != null && !isInitialized()) { + org.xtreemfs.pbrpc.generatedinterfaces.DIR.addressMappingGetResponse result = buildPartial(); + if (!result.isInitialized()) { throw newUninitializedMessageException(result); } - return buildPartial(); - } - - private org.xtreemfs.pbrpc.generatedinterfaces.DIR.addressMappingGetResponse buildParsed() - throws com.google.protobuf.InvalidProtocolBufferException { - if (!isInitialized()) { - throw newUninitializedMessageException( - result).asInvalidProtocolBufferException(); - } - return buildPartial(); + return result; } - + public org.xtreemfs.pbrpc.generatedinterfaces.DIR.addressMappingGetResponse buildPartial() { - if (result == null) { - throw new IllegalStateException( - "build() has already been called on this Builder."); + org.xtreemfs.pbrpc.generatedinterfaces.DIR.addressMappingGetResponse result = new org.xtreemfs.pbrpc.generatedinterfaces.DIR.addressMappingGetResponse(this); + int from_bitField0_ = bitField0_; + int to_bitField0_ = 0; + if (((from_bitField0_ & 0x00000001) == 0x00000001)) { + to_bitField0_ |= 0x00000001; + } + if (resultBuilder_ == null) { + result.result_ = result_; + } else { + result.result_ = resultBuilder_.build(); } - org.xtreemfs.pbrpc.generatedinterfaces.DIR.addressMappingGetResponse returnMe = result; - result = null; - return returnMe; + result.bitField0_ = to_bitField0_; + onBuilt(); + return result; } - + public Builder mergeFrom(com.google.protobuf.Message other) { if (other instanceof org.xtreemfs.pbrpc.generatedinterfaces.DIR.addressMappingGetResponse) { return mergeFrom((org.xtreemfs.pbrpc.generatedinterfaces.DIR.addressMappingGetResponse)other); @@ -3593,7 +8321,7 @@ public final class DIR { return this; } } - + public Builder mergeFrom(org.xtreemfs.pbrpc.generatedinterfaces.DIR.addressMappingGetResponse other) { if (other == org.xtreemfs.pbrpc.generatedinterfaces.DIR.addressMappingGetResponse.getDefaultInstance()) return this; if (other.hasResult()) { @@ -3602,297 +8330,531 @@ public final class DIR { this.mergeUnknownFields(other.getUnknownFields()); return this; } - + + public final boolean isInitialized() { + if (hasResult()) { + if (!getResult().isInitialized()) { + + return false; + } + } + return true; + } + public Builder mergeFrom( com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - com.google.protobuf.UnknownFieldSet.Builder unknownFields = - com.google.protobuf.UnknownFieldSet.newBuilder( - this.getUnknownFields()); - while (true) { - int tag = input.readTag(); - switch (tag) { - case 0: - this.setUnknownFields(unknownFields.build()); - return this; - default: { - if (!parseUnknownField(input, unknownFields, - extensionRegistry, tag)) { - this.setUnknownFields(unknownFields.build()); - return this; - } - break; - } - case 10: { - org.xtreemfs.pbrpc.generatedinterfaces.DIR.AddressMappingSet.Builder subBuilder = org.xtreemfs.pbrpc.generatedinterfaces.DIR.AddressMappingSet.newBuilder(); - if (hasResult()) { - subBuilder.mergeFrom(getResult()); - } - input.readMessage(subBuilder, extensionRegistry); - setResult(subBuilder.buildPartial()); - break; - } + org.xtreemfs.pbrpc.generatedinterfaces.DIR.addressMappingGetResponse parsedMessage = null; + try { + parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + parsedMessage = (org.xtreemfs.pbrpc.generatedinterfaces.DIR.addressMappingGetResponse) e.getUnfinishedMessage(); + throw e; + } finally { + if (parsedMessage != null) { + mergeFrom(parsedMessage); } } + return this; } - - + private int bitField0_; + // optional .xtreemfs.pbrpc.AddressMappingSet result = 1; + private org.xtreemfs.pbrpc.generatedinterfaces.DIR.AddressMappingSet result_ = org.xtreemfs.pbrpc.generatedinterfaces.DIR.AddressMappingSet.getDefaultInstance(); + private com.google.protobuf.SingleFieldBuilder< + org.xtreemfs.pbrpc.generatedinterfaces.DIR.AddressMappingSet, org.xtreemfs.pbrpc.generatedinterfaces.DIR.AddressMappingSet.Builder, org.xtreemfs.pbrpc.generatedinterfaces.DIR.AddressMappingSetOrBuilder> resultBuilder_; + /** + * optional .xtreemfs.pbrpc.AddressMappingSet result = 1; + * + *
+       * List of matching mappings, might be empty.
+       * 
+ */ public boolean hasResult() { - return result.hasResult(); - } + return ((bitField0_ & 0x00000001) == 0x00000001); + } + /** + * optional .xtreemfs.pbrpc.AddressMappingSet result = 1; + * + *
+       * List of matching mappings, might be empty.
+       * 
+ */ public org.xtreemfs.pbrpc.generatedinterfaces.DIR.AddressMappingSet getResult() { - return result.getResult(); + if (resultBuilder_ == null) { + return result_; + } else { + return resultBuilder_.getMessage(); + } } + /** + * optional .xtreemfs.pbrpc.AddressMappingSet result = 1; + * + *
+       * List of matching mappings, might be empty.
+       * 
+ */ public Builder setResult(org.xtreemfs.pbrpc.generatedinterfaces.DIR.AddressMappingSet value) { - if (value == null) { - throw new NullPointerException(); + if (resultBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + result_ = value; + onChanged(); + } else { + resultBuilder_.setMessage(value); + } + bitField0_ |= 0x00000001; + return this; + } + /** + * optional .xtreemfs.pbrpc.AddressMappingSet result = 1; + * + *
+       * List of matching mappings, might be empty.
+       * 
+ */ + public Builder setResult( + org.xtreemfs.pbrpc.generatedinterfaces.DIR.AddressMappingSet.Builder builderForValue) { + if (resultBuilder_ == null) { + result_ = builderForValue.build(); + onChanged(); + } else { + resultBuilder_.setMessage(builderForValue.build()); } - result.hasResult = true; - result.result_ = value; - return this; - } - public Builder setResult(org.xtreemfs.pbrpc.generatedinterfaces.DIR.AddressMappingSet.Builder builderForValue) { - result.hasResult = true; - result.result_ = builderForValue.build(); + bitField0_ |= 0x00000001; return this; } + /** + * optional .xtreemfs.pbrpc.AddressMappingSet result = 1; + * + *
+       * List of matching mappings, might be empty.
+       * 
+ */ public Builder mergeResult(org.xtreemfs.pbrpc.generatedinterfaces.DIR.AddressMappingSet value) { - if (result.hasResult() && - result.result_ != org.xtreemfs.pbrpc.generatedinterfaces.DIR.AddressMappingSet.getDefaultInstance()) { - result.result_ = - org.xtreemfs.pbrpc.generatedinterfaces.DIR.AddressMappingSet.newBuilder(result.result_).mergeFrom(value).buildPartial(); + if (resultBuilder_ == null) { + if (((bitField0_ & 0x00000001) == 0x00000001) && + result_ != org.xtreemfs.pbrpc.generatedinterfaces.DIR.AddressMappingSet.getDefaultInstance()) { + result_ = + org.xtreemfs.pbrpc.generatedinterfaces.DIR.AddressMappingSet.newBuilder(result_).mergeFrom(value).buildPartial(); + } else { + result_ = value; + } + onChanged(); } else { - result.result_ = value; + resultBuilder_.mergeFrom(value); } - result.hasResult = true; + bitField0_ |= 0x00000001; return this; } + /** + * optional .xtreemfs.pbrpc.AddressMappingSet result = 1; + * + *
+       * List of matching mappings, might be empty.
+       * 
+ */ public Builder clearResult() { - result.hasResult = false; - result.result_ = org.xtreemfs.pbrpc.generatedinterfaces.DIR.AddressMappingSet.getDefaultInstance(); - return this; + if (resultBuilder_ == null) { + result_ = org.xtreemfs.pbrpc.generatedinterfaces.DIR.AddressMappingSet.getDefaultInstance(); + onChanged(); + } else { + resultBuilder_.clear(); + } + bitField0_ = (bitField0_ & ~0x00000001); + return this; + } + /** + * optional .xtreemfs.pbrpc.AddressMappingSet result = 1; + * + *
+       * List of matching mappings, might be empty.
+       * 
+ */ + public org.xtreemfs.pbrpc.generatedinterfaces.DIR.AddressMappingSet.Builder getResultBuilder() { + bitField0_ |= 0x00000001; + onChanged(); + return getResultFieldBuilder().getBuilder(); + } + /** + * optional .xtreemfs.pbrpc.AddressMappingSet result = 1; + * + *
+       * List of matching mappings, might be empty.
+       * 
+ */ + public org.xtreemfs.pbrpc.generatedinterfaces.DIR.AddressMappingSetOrBuilder getResultOrBuilder() { + if (resultBuilder_ != null) { + return resultBuilder_.getMessageOrBuilder(); + } else { + return result_; + } + } + /** + * optional .xtreemfs.pbrpc.AddressMappingSet result = 1; + * + *
+       * List of matching mappings, might be empty.
+       * 
+ */ + private com.google.protobuf.SingleFieldBuilder< + org.xtreemfs.pbrpc.generatedinterfaces.DIR.AddressMappingSet, org.xtreemfs.pbrpc.generatedinterfaces.DIR.AddressMappingSet.Builder, org.xtreemfs.pbrpc.generatedinterfaces.DIR.AddressMappingSetOrBuilder> + getResultFieldBuilder() { + if (resultBuilder_ == null) { + resultBuilder_ = new com.google.protobuf.SingleFieldBuilder< + org.xtreemfs.pbrpc.generatedinterfaces.DIR.AddressMappingSet, org.xtreemfs.pbrpc.generatedinterfaces.DIR.AddressMappingSet.Builder, org.xtreemfs.pbrpc.generatedinterfaces.DIR.AddressMappingSetOrBuilder>( + result_, + getParentForChildren(), + isClean()); + result_ = null; + } + return resultBuilder_; } - + // @@protoc_insertion_point(builder_scope:xtreemfs.pbrpc.addressMappingGetResponse) } - + static { defaultInstance = new addressMappingGetResponse(true); - org.xtreemfs.pbrpc.generatedinterfaces.DIR.internalForceInit(); defaultInstance.initFields(); } - + // @@protoc_insertion_point(class_scope:xtreemfs.pbrpc.addressMappingGetResponse) } - + + public interface addressMappingSetResponseOrBuilder + extends com.google.protobuf.MessageOrBuilder { + + // optional fixed64 new_version = 1; + /** + * optional fixed64 new_version = 1; + * + *
+     * New version number assigned to the address mapping
+     * by the DIR.
+     * 
+ */ + boolean hasNewVersion(); + /** + * optional fixed64 new_version = 1; + * + *
+     * New version number assigned to the address mapping
+     * by the DIR.
+     * 
+ */ + long getNewVersion(); + } + /** + * Protobuf type {@code xtreemfs.pbrpc.addressMappingSetResponse} + */ public static final class addressMappingSetResponse extends - com.google.protobuf.GeneratedMessage { + com.google.protobuf.GeneratedMessage + implements addressMappingSetResponseOrBuilder { // Use addressMappingSetResponse.newBuilder() to construct. - private addressMappingSetResponse() { - initFields(); + private addressMappingSetResponse(com.google.protobuf.GeneratedMessage.Builder builder) { + super(builder); + this.unknownFields = builder.getUnknownFields(); } - private addressMappingSetResponse(boolean noInit) {} - + private addressMappingSetResponse(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); } + private static final addressMappingSetResponse defaultInstance; public static addressMappingSetResponse getDefaultInstance() { return defaultInstance; } - + public addressMappingSetResponse getDefaultInstanceForType() { return defaultInstance; } - + + private final com.google.protobuf.UnknownFieldSet unknownFields; + @java.lang.Override + public final com.google.protobuf.UnknownFieldSet + getUnknownFields() { + return this.unknownFields; + } + private addressMappingSetResponse( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + initFields(); + int mutable_bitField0_ = 0; + com.google.protobuf.UnknownFieldSet.Builder unknownFields = + com.google.protobuf.UnknownFieldSet.newBuilder(); + try { + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch (tag) { + case 0: + done = true; + break; + default: { + if (!parseUnknownField(input, unknownFields, + extensionRegistry, tag)) { + done = true; + } + break; + } + case 9: { + bitField0_ |= 0x00000001; + newVersion_ = input.readFixed64(); + break; + } + } + } + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(this); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException( + e.getMessage()).setUnfinishedMessage(this); + } finally { + this.unknownFields = unknownFields.build(); + makeExtensionsImmutable(); + } + } public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { return org.xtreemfs.pbrpc.generatedinterfaces.DIR.internal_static_xtreemfs_pbrpc_addressMappingSetResponse_descriptor; } - + protected com.google.protobuf.GeneratedMessage.FieldAccessorTable internalGetFieldAccessorTable() { - return org.xtreemfs.pbrpc.generatedinterfaces.DIR.internal_static_xtreemfs_pbrpc_addressMappingSetResponse_fieldAccessorTable; + return org.xtreemfs.pbrpc.generatedinterfaces.DIR.internal_static_xtreemfs_pbrpc_addressMappingSetResponse_fieldAccessorTable + .ensureFieldAccessorsInitialized( + org.xtreemfs.pbrpc.generatedinterfaces.DIR.addressMappingSetResponse.class, org.xtreemfs.pbrpc.generatedinterfaces.DIR.addressMappingSetResponse.Builder.class); + } + + public static com.google.protobuf.Parser PARSER = + new com.google.protobuf.AbstractParser() { + public addressMappingSetResponse parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return new addressMappingSetResponse(input, extensionRegistry); + } + }; + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; } - + + private int bitField0_; // optional fixed64 new_version = 1; public static final int NEW_VERSION_FIELD_NUMBER = 1; - private boolean hasNewVersion; - private long newVersion_ = 0L; - public boolean hasNewVersion() { return hasNewVersion; } - public long getNewVersion() { return newVersion_; } - + private long newVersion_; + /** + * optional fixed64 new_version = 1; + * + *
+     * New version number assigned to the address mapping
+     * by the DIR.
+     * 
+ */ + public boolean hasNewVersion() { + return ((bitField0_ & 0x00000001) == 0x00000001); + } + /** + * optional fixed64 new_version = 1; + * + *
+     * New version number assigned to the address mapping
+     * by the DIR.
+     * 
+ */ + public long getNewVersion() { + return newVersion_; + } + private void initFields() { + newVersion_ = 0L; } + private byte memoizedIsInitialized = -1; public final boolean isInitialized() { + byte isInitialized = memoizedIsInitialized; + if (isInitialized != -1) return isInitialized == 1; + + memoizedIsInitialized = 1; return true; } - + public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException { getSerializedSize(); - if (hasNewVersion()) { - output.writeFixed64(1, getNewVersion()); + if (((bitField0_ & 0x00000001) == 0x00000001)) { + output.writeFixed64(1, newVersion_); } getUnknownFields().writeTo(output); } - + private int memoizedSerializedSize = -1; public int getSerializedSize() { int size = memoizedSerializedSize; if (size != -1) return size; - + size = 0; - if (hasNewVersion()) { + if (((bitField0_ & 0x00000001) == 0x00000001)) { size += com.google.protobuf.CodedOutputStream - .computeFixed64Size(1, getNewVersion()); + .computeFixed64Size(1, newVersion_); } size += getUnknownFields().getSerializedSize(); memoizedSerializedSize = size; return size; } - + + private static final long serialVersionUID = 0L; + @java.lang.Override + protected java.lang.Object writeReplace() + throws java.io.ObjectStreamException { + return super.writeReplace(); + } + public static org.xtreemfs.pbrpc.generatedinterfaces.DIR.addressMappingSetResponse parseFrom( com.google.protobuf.ByteString data) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data).buildParsed(); + return PARSER.parseFrom(data); } public static org.xtreemfs.pbrpc.generatedinterfaces.DIR.addressMappingSetResponse parseFrom( com.google.protobuf.ByteString data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(data, extensionRegistry); } public static org.xtreemfs.pbrpc.generatedinterfaces.DIR.addressMappingSetResponse parseFrom(byte[] data) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data).buildParsed(); + return PARSER.parseFrom(data); } public static org.xtreemfs.pbrpc.generatedinterfaces.DIR.addressMappingSetResponse parseFrom( byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(data, extensionRegistry); } public static org.xtreemfs.pbrpc.generatedinterfaces.DIR.addressMappingSetResponse parseFrom(java.io.InputStream input) throws java.io.IOException { - return newBuilder().mergeFrom(input).buildParsed(); + return PARSER.parseFrom(input); } public static org.xtreemfs.pbrpc.generatedinterfaces.DIR.addressMappingSetResponse parseFrom( java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - return newBuilder().mergeFrom(input, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(input, extensionRegistry); } public static org.xtreemfs.pbrpc.generatedinterfaces.DIR.addressMappingSetResponse parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException { - Builder builder = newBuilder(); - if (builder.mergeDelimitedFrom(input)) { - return builder.buildParsed(); - } else { - return null; - } + return PARSER.parseDelimitedFrom(input); } public static org.xtreemfs.pbrpc.generatedinterfaces.DIR.addressMappingSetResponse parseDelimitedFrom( java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - Builder builder = newBuilder(); - if (builder.mergeDelimitedFrom(input, extensionRegistry)) { - return builder.buildParsed(); - } else { - return null; - } + return PARSER.parseDelimitedFrom(input, extensionRegistry); } public static org.xtreemfs.pbrpc.generatedinterfaces.DIR.addressMappingSetResponse parseFrom( com.google.protobuf.CodedInputStream input) throws java.io.IOException { - return newBuilder().mergeFrom(input).buildParsed(); + return PARSER.parseFrom(input); } public static org.xtreemfs.pbrpc.generatedinterfaces.DIR.addressMappingSetResponse parseFrom( com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - return newBuilder().mergeFrom(input, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(input, extensionRegistry); } - + public static Builder newBuilder() { return Builder.create(); } public Builder newBuilderForType() { return newBuilder(); } public static Builder newBuilder(org.xtreemfs.pbrpc.generatedinterfaces.DIR.addressMappingSetResponse prototype) { return newBuilder().mergeFrom(prototype); } public Builder toBuilder() { return newBuilder(this); } - + + @java.lang.Override + protected Builder newBuilderForType( + com.google.protobuf.GeneratedMessage.BuilderParent parent) { + Builder builder = new Builder(parent); + return builder; + } + /** + * Protobuf type {@code xtreemfs.pbrpc.addressMappingSetResponse} + */ public static final class Builder extends - com.google.protobuf.GeneratedMessage.Builder { - private org.xtreemfs.pbrpc.generatedinterfaces.DIR.addressMappingSetResponse result; - + com.google.protobuf.GeneratedMessage.Builder + implements org.xtreemfs.pbrpc.generatedinterfaces.DIR.addressMappingSetResponseOrBuilder { + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return org.xtreemfs.pbrpc.generatedinterfaces.DIR.internal_static_xtreemfs_pbrpc_addressMappingSetResponse_descriptor; + } + + protected com.google.protobuf.GeneratedMessage.FieldAccessorTable + internalGetFieldAccessorTable() { + return org.xtreemfs.pbrpc.generatedinterfaces.DIR.internal_static_xtreemfs_pbrpc_addressMappingSetResponse_fieldAccessorTable + .ensureFieldAccessorsInitialized( + org.xtreemfs.pbrpc.generatedinterfaces.DIR.addressMappingSetResponse.class, org.xtreemfs.pbrpc.generatedinterfaces.DIR.addressMappingSetResponse.Builder.class); + } + // Construct using org.xtreemfs.pbrpc.generatedinterfaces.DIR.addressMappingSetResponse.newBuilder() - private Builder() {} - - private static Builder create() { - Builder builder = new Builder(); - builder.result = new org.xtreemfs.pbrpc.generatedinterfaces.DIR.addressMappingSetResponse(); - return builder; + private Builder() { + maybeForceBuilderInitialization(); } - - protected org.xtreemfs.pbrpc.generatedinterfaces.DIR.addressMappingSetResponse internalGetResult() { - return result; + + private Builder( + com.google.protobuf.GeneratedMessage.BuilderParent parent) { + super(parent); + maybeForceBuilderInitialization(); } - - public Builder clear() { - if (result == null) { - throw new IllegalStateException( - "Cannot call clear() after build()."); + private void maybeForceBuilderInitialization() { + if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) { } - result = new org.xtreemfs.pbrpc.generatedinterfaces.DIR.addressMappingSetResponse(); + } + private static Builder create() { + return new Builder(); + } + + public Builder clear() { + super.clear(); + newVersion_ = 0L; + bitField0_ = (bitField0_ & ~0x00000001); return this; } - + public Builder clone() { - return create().mergeFrom(result); + return create().mergeFrom(buildPartial()); } - + public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() { - return org.xtreemfs.pbrpc.generatedinterfaces.DIR.addressMappingSetResponse.getDescriptor(); + return org.xtreemfs.pbrpc.generatedinterfaces.DIR.internal_static_xtreemfs_pbrpc_addressMappingSetResponse_descriptor; } - + public org.xtreemfs.pbrpc.generatedinterfaces.DIR.addressMappingSetResponse getDefaultInstanceForType() { return org.xtreemfs.pbrpc.generatedinterfaces.DIR.addressMappingSetResponse.getDefaultInstance(); } - - public boolean isInitialized() { - return result.isInitialized(); - } + public org.xtreemfs.pbrpc.generatedinterfaces.DIR.addressMappingSetResponse build() { - if (result != null && !isInitialized()) { + org.xtreemfs.pbrpc.generatedinterfaces.DIR.addressMappingSetResponse result = buildPartial(); + if (!result.isInitialized()) { throw newUninitializedMessageException(result); } - return buildPartial(); - } - - private org.xtreemfs.pbrpc.generatedinterfaces.DIR.addressMappingSetResponse buildParsed() - throws com.google.protobuf.InvalidProtocolBufferException { - if (!isInitialized()) { - throw newUninitializedMessageException( - result).asInvalidProtocolBufferException(); - } - return buildPartial(); + return result; } - + public org.xtreemfs.pbrpc.generatedinterfaces.DIR.addressMappingSetResponse buildPartial() { - if (result == null) { - throw new IllegalStateException( - "build() has already been called on this Builder."); - } - org.xtreemfs.pbrpc.generatedinterfaces.DIR.addressMappingSetResponse returnMe = result; - result = null; - return returnMe; + org.xtreemfs.pbrpc.generatedinterfaces.DIR.addressMappingSetResponse result = new org.xtreemfs.pbrpc.generatedinterfaces.DIR.addressMappingSetResponse(this); + int from_bitField0_ = bitField0_; + int to_bitField0_ = 0; + if (((from_bitField0_ & 0x00000001) == 0x00000001)) { + to_bitField0_ |= 0x00000001; + } + result.newVersion_ = newVersion_; + result.bitField0_ = to_bitField0_; + onBuilt(); + return result; } - + public Builder mergeFrom(com.google.protobuf.Message other) { if (other instanceof org.xtreemfs.pbrpc.generatedinterfaces.DIR.addressMappingSetResponse) { return mergeFrom((org.xtreemfs.pbrpc.generatedinterfaces.DIR.addressMappingSetResponse)other); @@ -3901,7 +8863,7 @@ public final class DIR { return this; } } - + public Builder mergeFrom(org.xtreemfs.pbrpc.generatedinterfaces.DIR.addressMappingSetResponse other) { if (other == org.xtreemfs.pbrpc.generatedinterfaces.DIR.addressMappingSetResponse.getDefaultInstance()) return this; if (other.hasNewVersion()) { @@ -3910,274 +8872,425 @@ public final class DIR { this.mergeUnknownFields(other.getUnknownFields()); return this; } - + + public final boolean isInitialized() { + return true; + } + public Builder mergeFrom( com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - com.google.protobuf.UnknownFieldSet.Builder unknownFields = - com.google.protobuf.UnknownFieldSet.newBuilder( - this.getUnknownFields()); - while (true) { - int tag = input.readTag(); - switch (tag) { - case 0: - this.setUnknownFields(unknownFields.build()); - return this; - default: { - if (!parseUnknownField(input, unknownFields, - extensionRegistry, tag)) { - this.setUnknownFields(unknownFields.build()); - return this; - } - break; - } - case 9: { - setNewVersion(input.readFixed64()); - break; - } + org.xtreemfs.pbrpc.generatedinterfaces.DIR.addressMappingSetResponse parsedMessage = null; + try { + parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + parsedMessage = (org.xtreemfs.pbrpc.generatedinterfaces.DIR.addressMappingSetResponse) e.getUnfinishedMessage(); + throw e; + } finally { + if (parsedMessage != null) { + mergeFrom(parsedMessage); } } + return this; } - - + private int bitField0_; + // optional fixed64 new_version = 1; + private long newVersion_ ; + /** + * optional fixed64 new_version = 1; + * + *
+       * New version number assigned to the address mapping
+       * by the DIR.
+       * 
+ */ public boolean hasNewVersion() { - return result.hasNewVersion(); - } + return ((bitField0_ & 0x00000001) == 0x00000001); + } + /** + * optional fixed64 new_version = 1; + * + *
+       * New version number assigned to the address mapping
+       * by the DIR.
+       * 
+ */ public long getNewVersion() { - return result.getNewVersion(); - } + return newVersion_; + } + /** + * optional fixed64 new_version = 1; + * + *
+       * New version number assigned to the address mapping
+       * by the DIR.
+       * 
+ */ public Builder setNewVersion(long value) { - result.hasNewVersion = true; - result.newVersion_ = value; - return this; - } + bitField0_ |= 0x00000001; + newVersion_ = value; + onChanged(); + return this; + } + /** + * optional fixed64 new_version = 1; + * + *
+       * New version number assigned to the address mapping
+       * by the DIR.
+       * 
+ */ public Builder clearNewVersion() { - result.hasNewVersion = false; - result.newVersion_ = 0L; + bitField0_ = (bitField0_ & ~0x00000001); + newVersion_ = 0L; + onChanged(); return this; } - + // @@protoc_insertion_point(builder_scope:xtreemfs.pbrpc.addressMappingSetResponse) } - + static { defaultInstance = new addressMappingSetResponse(true); - org.xtreemfs.pbrpc.generatedinterfaces.DIR.internalForceInit(); defaultInstance.initFields(); } - + // @@protoc_insertion_point(class_scope:xtreemfs.pbrpc.addressMappingSetResponse) } - + + public interface globalTimeSGetResponseOrBuilder + extends com.google.protobuf.MessageOrBuilder { + + // required fixed64 time_in_seconds = 1; + /** + * required fixed64 time_in_seconds = 1; + * + *
+     * Global XtreemFS time in seconds.
+     * 
+ */ + boolean hasTimeInSeconds(); + /** + * required fixed64 time_in_seconds = 1; + * + *
+     * Global XtreemFS time in seconds.
+     * 
+ */ + long getTimeInSeconds(); + } + /** + * Protobuf type {@code xtreemfs.pbrpc.globalTimeSGetResponse} + */ public static final class globalTimeSGetResponse extends - com.google.protobuf.GeneratedMessage { + com.google.protobuf.GeneratedMessage + implements globalTimeSGetResponseOrBuilder { // Use globalTimeSGetResponse.newBuilder() to construct. - private globalTimeSGetResponse() { - initFields(); + private globalTimeSGetResponse(com.google.protobuf.GeneratedMessage.Builder builder) { + super(builder); + this.unknownFields = builder.getUnknownFields(); } - private globalTimeSGetResponse(boolean noInit) {} - + private globalTimeSGetResponse(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); } + private static final globalTimeSGetResponse defaultInstance; public static globalTimeSGetResponse getDefaultInstance() { return defaultInstance; } - + public globalTimeSGetResponse getDefaultInstanceForType() { return defaultInstance; } - + + private final com.google.protobuf.UnknownFieldSet unknownFields; + @java.lang.Override + public final com.google.protobuf.UnknownFieldSet + getUnknownFields() { + return this.unknownFields; + } + private globalTimeSGetResponse( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + initFields(); + int mutable_bitField0_ = 0; + com.google.protobuf.UnknownFieldSet.Builder unknownFields = + com.google.protobuf.UnknownFieldSet.newBuilder(); + try { + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch (tag) { + case 0: + done = true; + break; + default: { + if (!parseUnknownField(input, unknownFields, + extensionRegistry, tag)) { + done = true; + } + break; + } + case 9: { + bitField0_ |= 0x00000001; + timeInSeconds_ = input.readFixed64(); + break; + } + } + } + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(this); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException( + e.getMessage()).setUnfinishedMessage(this); + } finally { + this.unknownFields = unknownFields.build(); + makeExtensionsImmutable(); + } + } public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { return org.xtreemfs.pbrpc.generatedinterfaces.DIR.internal_static_xtreemfs_pbrpc_globalTimeSGetResponse_descriptor; } - + protected com.google.protobuf.GeneratedMessage.FieldAccessorTable internalGetFieldAccessorTable() { - return org.xtreemfs.pbrpc.generatedinterfaces.DIR.internal_static_xtreemfs_pbrpc_globalTimeSGetResponse_fieldAccessorTable; + return org.xtreemfs.pbrpc.generatedinterfaces.DIR.internal_static_xtreemfs_pbrpc_globalTimeSGetResponse_fieldAccessorTable + .ensureFieldAccessorsInitialized( + org.xtreemfs.pbrpc.generatedinterfaces.DIR.globalTimeSGetResponse.class, org.xtreemfs.pbrpc.generatedinterfaces.DIR.globalTimeSGetResponse.Builder.class); + } + + public static com.google.protobuf.Parser PARSER = + new com.google.protobuf.AbstractParser() { + public globalTimeSGetResponse parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return new globalTimeSGetResponse(input, extensionRegistry); + } + }; + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; } - + + private int bitField0_; // required fixed64 time_in_seconds = 1; public static final int TIME_IN_SECONDS_FIELD_NUMBER = 1; - private boolean hasTimeInSeconds; - private long timeInSeconds_ = 0L; - public boolean hasTimeInSeconds() { return hasTimeInSeconds; } - public long getTimeInSeconds() { return timeInSeconds_; } - + private long timeInSeconds_; + /** + * required fixed64 time_in_seconds = 1; + * + *
+     * Global XtreemFS time in seconds.
+     * 
+ */ + public boolean hasTimeInSeconds() { + return ((bitField0_ & 0x00000001) == 0x00000001); + } + /** + * required fixed64 time_in_seconds = 1; + * + *
+     * Global XtreemFS time in seconds.
+     * 
+ */ + public long getTimeInSeconds() { + return timeInSeconds_; + } + private void initFields() { + timeInSeconds_ = 0L; } + private byte memoizedIsInitialized = -1; public final boolean isInitialized() { - if (!hasTimeInSeconds) return false; + byte isInitialized = memoizedIsInitialized; + if (isInitialized != -1) return isInitialized == 1; + + if (!hasTimeInSeconds()) { + memoizedIsInitialized = 0; + return false; + } + memoizedIsInitialized = 1; return true; } - + public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException { getSerializedSize(); - if (hasTimeInSeconds()) { - output.writeFixed64(1, getTimeInSeconds()); + if (((bitField0_ & 0x00000001) == 0x00000001)) { + output.writeFixed64(1, timeInSeconds_); } getUnknownFields().writeTo(output); } - + private int memoizedSerializedSize = -1; public int getSerializedSize() { int size = memoizedSerializedSize; if (size != -1) return size; - + size = 0; - if (hasTimeInSeconds()) { + if (((bitField0_ & 0x00000001) == 0x00000001)) { size += com.google.protobuf.CodedOutputStream - .computeFixed64Size(1, getTimeInSeconds()); + .computeFixed64Size(1, timeInSeconds_); } size += getUnknownFields().getSerializedSize(); memoizedSerializedSize = size; return size; } - + + private static final long serialVersionUID = 0L; + @java.lang.Override + protected java.lang.Object writeReplace() + throws java.io.ObjectStreamException { + return super.writeReplace(); + } + public static org.xtreemfs.pbrpc.generatedinterfaces.DIR.globalTimeSGetResponse parseFrom( com.google.protobuf.ByteString data) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data).buildParsed(); + return PARSER.parseFrom(data); } public static org.xtreemfs.pbrpc.generatedinterfaces.DIR.globalTimeSGetResponse parseFrom( com.google.protobuf.ByteString data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(data, extensionRegistry); } public static org.xtreemfs.pbrpc.generatedinterfaces.DIR.globalTimeSGetResponse parseFrom(byte[] data) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data).buildParsed(); + return PARSER.parseFrom(data); } public static org.xtreemfs.pbrpc.generatedinterfaces.DIR.globalTimeSGetResponse parseFrom( byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(data, extensionRegistry); } public static org.xtreemfs.pbrpc.generatedinterfaces.DIR.globalTimeSGetResponse parseFrom(java.io.InputStream input) throws java.io.IOException { - return newBuilder().mergeFrom(input).buildParsed(); + return PARSER.parseFrom(input); } public static org.xtreemfs.pbrpc.generatedinterfaces.DIR.globalTimeSGetResponse parseFrom( java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - return newBuilder().mergeFrom(input, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(input, extensionRegistry); } public static org.xtreemfs.pbrpc.generatedinterfaces.DIR.globalTimeSGetResponse parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException { - Builder builder = newBuilder(); - if (builder.mergeDelimitedFrom(input)) { - return builder.buildParsed(); - } else { - return null; - } + return PARSER.parseDelimitedFrom(input); } public static org.xtreemfs.pbrpc.generatedinterfaces.DIR.globalTimeSGetResponse parseDelimitedFrom( java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - Builder builder = newBuilder(); - if (builder.mergeDelimitedFrom(input, extensionRegistry)) { - return builder.buildParsed(); - } else { - return null; - } + return PARSER.parseDelimitedFrom(input, extensionRegistry); } public static org.xtreemfs.pbrpc.generatedinterfaces.DIR.globalTimeSGetResponse parseFrom( com.google.protobuf.CodedInputStream input) throws java.io.IOException { - return newBuilder().mergeFrom(input).buildParsed(); + return PARSER.parseFrom(input); } public static org.xtreemfs.pbrpc.generatedinterfaces.DIR.globalTimeSGetResponse parseFrom( com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - return newBuilder().mergeFrom(input, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(input, extensionRegistry); } - + public static Builder newBuilder() { return Builder.create(); } public Builder newBuilderForType() { return newBuilder(); } public static Builder newBuilder(org.xtreemfs.pbrpc.generatedinterfaces.DIR.globalTimeSGetResponse prototype) { return newBuilder().mergeFrom(prototype); } public Builder toBuilder() { return newBuilder(this); } - + + @java.lang.Override + protected Builder newBuilderForType( + com.google.protobuf.GeneratedMessage.BuilderParent parent) { + Builder builder = new Builder(parent); + return builder; + } + /** + * Protobuf type {@code xtreemfs.pbrpc.globalTimeSGetResponse} + */ public static final class Builder extends - com.google.protobuf.GeneratedMessage.Builder { - private org.xtreemfs.pbrpc.generatedinterfaces.DIR.globalTimeSGetResponse result; - + com.google.protobuf.GeneratedMessage.Builder + implements org.xtreemfs.pbrpc.generatedinterfaces.DIR.globalTimeSGetResponseOrBuilder { + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return org.xtreemfs.pbrpc.generatedinterfaces.DIR.internal_static_xtreemfs_pbrpc_globalTimeSGetResponse_descriptor; + } + + protected com.google.protobuf.GeneratedMessage.FieldAccessorTable + internalGetFieldAccessorTable() { + return org.xtreemfs.pbrpc.generatedinterfaces.DIR.internal_static_xtreemfs_pbrpc_globalTimeSGetResponse_fieldAccessorTable + .ensureFieldAccessorsInitialized( + org.xtreemfs.pbrpc.generatedinterfaces.DIR.globalTimeSGetResponse.class, org.xtreemfs.pbrpc.generatedinterfaces.DIR.globalTimeSGetResponse.Builder.class); + } + // Construct using org.xtreemfs.pbrpc.generatedinterfaces.DIR.globalTimeSGetResponse.newBuilder() - private Builder() {} - - private static Builder create() { - Builder builder = new Builder(); - builder.result = new org.xtreemfs.pbrpc.generatedinterfaces.DIR.globalTimeSGetResponse(); - return builder; + private Builder() { + maybeForceBuilderInitialization(); } - - protected org.xtreemfs.pbrpc.generatedinterfaces.DIR.globalTimeSGetResponse internalGetResult() { - return result; + + private Builder( + com.google.protobuf.GeneratedMessage.BuilderParent parent) { + super(parent); + maybeForceBuilderInitialization(); } - - public Builder clear() { - if (result == null) { - throw new IllegalStateException( - "Cannot call clear() after build()."); + private void maybeForceBuilderInitialization() { + if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) { } - result = new org.xtreemfs.pbrpc.generatedinterfaces.DIR.globalTimeSGetResponse(); + } + private static Builder create() { + return new Builder(); + } + + public Builder clear() { + super.clear(); + timeInSeconds_ = 0L; + bitField0_ = (bitField0_ & ~0x00000001); return this; } - + public Builder clone() { - return create().mergeFrom(result); + return create().mergeFrom(buildPartial()); } - + public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() { - return org.xtreemfs.pbrpc.generatedinterfaces.DIR.globalTimeSGetResponse.getDescriptor(); + return org.xtreemfs.pbrpc.generatedinterfaces.DIR.internal_static_xtreemfs_pbrpc_globalTimeSGetResponse_descriptor; } - + public org.xtreemfs.pbrpc.generatedinterfaces.DIR.globalTimeSGetResponse getDefaultInstanceForType() { return org.xtreemfs.pbrpc.generatedinterfaces.DIR.globalTimeSGetResponse.getDefaultInstance(); } - - public boolean isInitialized() { - return result.isInitialized(); - } + public org.xtreemfs.pbrpc.generatedinterfaces.DIR.globalTimeSGetResponse build() { - if (result != null && !isInitialized()) { + org.xtreemfs.pbrpc.generatedinterfaces.DIR.globalTimeSGetResponse result = buildPartial(); + if (!result.isInitialized()) { throw newUninitializedMessageException(result); } - return buildPartial(); - } - - private org.xtreemfs.pbrpc.generatedinterfaces.DIR.globalTimeSGetResponse buildParsed() - throws com.google.protobuf.InvalidProtocolBufferException { - if (!isInitialized()) { - throw newUninitializedMessageException( - result).asInvalidProtocolBufferException(); - } - return buildPartial(); + return result; } - + public org.xtreemfs.pbrpc.generatedinterfaces.DIR.globalTimeSGetResponse buildPartial() { - if (result == null) { - throw new IllegalStateException( - "build() has already been called on this Builder."); - } - org.xtreemfs.pbrpc.generatedinterfaces.DIR.globalTimeSGetResponse returnMe = result; - result = null; - return returnMe; + org.xtreemfs.pbrpc.generatedinterfaces.DIR.globalTimeSGetResponse result = new org.xtreemfs.pbrpc.generatedinterfaces.DIR.globalTimeSGetResponse(this); + int from_bitField0_ = bitField0_; + int to_bitField0_ = 0; + if (((from_bitField0_ & 0x00000001) == 0x00000001)) { + to_bitField0_ |= 0x00000001; + } + result.timeInSeconds_ = timeInSeconds_; + result.bitField0_ = to_bitField0_; + onBuilt(); + return result; } - + public Builder mergeFrom(com.google.protobuf.Message other) { if (other instanceof org.xtreemfs.pbrpc.generatedinterfaces.DIR.globalTimeSGetResponse) { return mergeFrom((org.xtreemfs.pbrpc.generatedinterfaces.DIR.globalTimeSGetResponse)other); @@ -4186,7 +9299,7 @@ public final class DIR { return this; } } - + public Builder mergeFrom(org.xtreemfs.pbrpc.generatedinterfaces.DIR.globalTimeSGetResponse other) { if (other == org.xtreemfs.pbrpc.generatedinterfaces.DIR.globalTimeSGetResponse.getDefaultInstance()) return this; if (other.hasTimeInSeconds()) { @@ -4195,274 +9308,465 @@ public final class DIR { this.mergeUnknownFields(other.getUnknownFields()); return this; } - + + public final boolean isInitialized() { + if (!hasTimeInSeconds()) { + + return false; + } + return true; + } + public Builder mergeFrom( com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - com.google.protobuf.UnknownFieldSet.Builder unknownFields = - com.google.protobuf.UnknownFieldSet.newBuilder( - this.getUnknownFields()); - while (true) { - int tag = input.readTag(); - switch (tag) { - case 0: - this.setUnknownFields(unknownFields.build()); - return this; - default: { - if (!parseUnknownField(input, unknownFields, - extensionRegistry, tag)) { - this.setUnknownFields(unknownFields.build()); - return this; - } - break; - } - case 9: { - setTimeInSeconds(input.readFixed64()); - break; - } + org.xtreemfs.pbrpc.generatedinterfaces.DIR.globalTimeSGetResponse parsedMessage = null; + try { + parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + parsedMessage = (org.xtreemfs.pbrpc.generatedinterfaces.DIR.globalTimeSGetResponse) e.getUnfinishedMessage(); + throw e; + } finally { + if (parsedMessage != null) { + mergeFrom(parsedMessage); } } + return this; } - - + private int bitField0_; + // required fixed64 time_in_seconds = 1; + private long timeInSeconds_ ; + /** + * required fixed64 time_in_seconds = 1; + * + *
+       * Global XtreemFS time in seconds.
+       * 
+ */ public boolean hasTimeInSeconds() { - return result.hasTimeInSeconds(); - } + return ((bitField0_ & 0x00000001) == 0x00000001); + } + /** + * required fixed64 time_in_seconds = 1; + * + *
+       * Global XtreemFS time in seconds.
+       * 
+ */ public long getTimeInSeconds() { - return result.getTimeInSeconds(); - } + return timeInSeconds_; + } + /** + * required fixed64 time_in_seconds = 1; + * + *
+       * Global XtreemFS time in seconds.
+       * 
+ */ public Builder setTimeInSeconds(long value) { - result.hasTimeInSeconds = true; - result.timeInSeconds_ = value; - return this; - } + bitField0_ |= 0x00000001; + timeInSeconds_ = value; + onChanged(); + return this; + } + /** + * required fixed64 time_in_seconds = 1; + * + *
+       * Global XtreemFS time in seconds.
+       * 
+ */ public Builder clearTimeInSeconds() { - result.hasTimeInSeconds = false; - result.timeInSeconds_ = 0L; + bitField0_ = (bitField0_ & ~0x00000001); + timeInSeconds_ = 0L; + onChanged(); return this; } - + // @@protoc_insertion_point(builder_scope:xtreemfs.pbrpc.globalTimeSGetResponse) } - + static { defaultInstance = new globalTimeSGetResponse(true); - org.xtreemfs.pbrpc.generatedinterfaces.DIR.internalForceInit(); defaultInstance.initFields(); } - + // @@protoc_insertion_point(class_scope:xtreemfs.pbrpc.globalTimeSGetResponse) } - + + public interface serviceDeregisterRequestOrBuilder + extends com.google.protobuf.MessageOrBuilder { + + // required string uuid = 1; + /** + * required string uuid = 1; + * + *
+     * UUID of the service that should be dregistered.
+     * 
+ */ + boolean hasUuid(); + /** + * required string uuid = 1; + * + *
+     * UUID of the service that should be dregistered.
+     * 
+ */ + java.lang.String getUuid(); + /** + * required string uuid = 1; + * + *
+     * UUID of the service that should be dregistered.
+     * 
+ */ + com.google.protobuf.ByteString + getUuidBytes(); + } + /** + * Protobuf type {@code xtreemfs.pbrpc.serviceDeregisterRequest} + */ public static final class serviceDeregisterRequest extends - com.google.protobuf.GeneratedMessage { + com.google.protobuf.GeneratedMessage + implements serviceDeregisterRequestOrBuilder { // Use serviceDeregisterRequest.newBuilder() to construct. - private serviceDeregisterRequest() { - initFields(); + private serviceDeregisterRequest(com.google.protobuf.GeneratedMessage.Builder builder) { + super(builder); + this.unknownFields = builder.getUnknownFields(); } - private serviceDeregisterRequest(boolean noInit) {} - + private serviceDeregisterRequest(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); } + private static final serviceDeregisterRequest defaultInstance; public static serviceDeregisterRequest getDefaultInstance() { return defaultInstance; } - + public serviceDeregisterRequest getDefaultInstanceForType() { return defaultInstance; } - + + private final com.google.protobuf.UnknownFieldSet unknownFields; + @java.lang.Override + public final com.google.protobuf.UnknownFieldSet + getUnknownFields() { + return this.unknownFields; + } + private serviceDeregisterRequest( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + initFields(); + int mutable_bitField0_ = 0; + com.google.protobuf.UnknownFieldSet.Builder unknownFields = + com.google.protobuf.UnknownFieldSet.newBuilder(); + try { + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch (tag) { + case 0: + done = true; + break; + default: { + if (!parseUnknownField(input, unknownFields, + extensionRegistry, tag)) { + done = true; + } + break; + } + case 10: { + bitField0_ |= 0x00000001; + uuid_ = input.readBytes(); + break; + } + } + } + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(this); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException( + e.getMessage()).setUnfinishedMessage(this); + } finally { + this.unknownFields = unknownFields.build(); + makeExtensionsImmutable(); + } + } public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { return org.xtreemfs.pbrpc.generatedinterfaces.DIR.internal_static_xtreemfs_pbrpc_serviceDeregisterRequest_descriptor; } - + protected com.google.protobuf.GeneratedMessage.FieldAccessorTable internalGetFieldAccessorTable() { - return org.xtreemfs.pbrpc.generatedinterfaces.DIR.internal_static_xtreemfs_pbrpc_serviceDeregisterRequest_fieldAccessorTable; + return org.xtreemfs.pbrpc.generatedinterfaces.DIR.internal_static_xtreemfs_pbrpc_serviceDeregisterRequest_fieldAccessorTable + .ensureFieldAccessorsInitialized( + org.xtreemfs.pbrpc.generatedinterfaces.DIR.serviceDeregisterRequest.class, org.xtreemfs.pbrpc.generatedinterfaces.DIR.serviceDeregisterRequest.Builder.class); + } + + public static com.google.protobuf.Parser PARSER = + new com.google.protobuf.AbstractParser() { + public serviceDeregisterRequest parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return new serviceDeregisterRequest(input, extensionRegistry); + } + }; + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; } - + + private int bitField0_; // required string uuid = 1; public static final int UUID_FIELD_NUMBER = 1; - private boolean hasUuid; - private java.lang.String uuid_ = ""; - public boolean hasUuid() { return hasUuid; } - public java.lang.String getUuid() { return uuid_; } - + private java.lang.Object uuid_; + /** + * required string uuid = 1; + * + *
+     * UUID of the service that should be dregistered.
+     * 
+ */ + public boolean hasUuid() { + return ((bitField0_ & 0x00000001) == 0x00000001); + } + /** + * required string uuid = 1; + * + *
+     * UUID of the service that should be dregistered.
+     * 
+ */ + public java.lang.String getUuid() { + java.lang.Object ref = uuid_; + if (ref instanceof java.lang.String) { + return (java.lang.String) ref; + } else { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + if (bs.isValidUtf8()) { + uuid_ = s; + } + return s; + } + } + /** + * required string uuid = 1; + * + *
+     * UUID of the service that should be dregistered.
+     * 
+ */ + public com.google.protobuf.ByteString + getUuidBytes() { + java.lang.Object ref = uuid_; + if (ref instanceof java.lang.String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + uuid_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + private void initFields() { + uuid_ = ""; } + private byte memoizedIsInitialized = -1; public final boolean isInitialized() { - if (!hasUuid) return false; + byte isInitialized = memoizedIsInitialized; + if (isInitialized != -1) return isInitialized == 1; + + if (!hasUuid()) { + memoizedIsInitialized = 0; + return false; + } + memoizedIsInitialized = 1; return true; } - + public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException { getSerializedSize(); - if (hasUuid()) { - output.writeString(1, getUuid()); + if (((bitField0_ & 0x00000001) == 0x00000001)) { + output.writeBytes(1, getUuidBytes()); } getUnknownFields().writeTo(output); } - + private int memoizedSerializedSize = -1; public int getSerializedSize() { int size = memoizedSerializedSize; if (size != -1) return size; - + size = 0; - if (hasUuid()) { + if (((bitField0_ & 0x00000001) == 0x00000001)) { size += com.google.protobuf.CodedOutputStream - .computeStringSize(1, getUuid()); + .computeBytesSize(1, getUuidBytes()); } size += getUnknownFields().getSerializedSize(); memoizedSerializedSize = size; return size; } - + + private static final long serialVersionUID = 0L; + @java.lang.Override + protected java.lang.Object writeReplace() + throws java.io.ObjectStreamException { + return super.writeReplace(); + } + public static org.xtreemfs.pbrpc.generatedinterfaces.DIR.serviceDeregisterRequest parseFrom( com.google.protobuf.ByteString data) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data).buildParsed(); + return PARSER.parseFrom(data); } public static org.xtreemfs.pbrpc.generatedinterfaces.DIR.serviceDeregisterRequest parseFrom( com.google.protobuf.ByteString data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(data, extensionRegistry); } public static org.xtreemfs.pbrpc.generatedinterfaces.DIR.serviceDeregisterRequest parseFrom(byte[] data) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data).buildParsed(); + return PARSER.parseFrom(data); } public static org.xtreemfs.pbrpc.generatedinterfaces.DIR.serviceDeregisterRequest parseFrom( byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(data, extensionRegistry); } public static org.xtreemfs.pbrpc.generatedinterfaces.DIR.serviceDeregisterRequest parseFrom(java.io.InputStream input) throws java.io.IOException { - return newBuilder().mergeFrom(input).buildParsed(); + return PARSER.parseFrom(input); } public static org.xtreemfs.pbrpc.generatedinterfaces.DIR.serviceDeregisterRequest parseFrom( java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - return newBuilder().mergeFrom(input, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(input, extensionRegistry); } public static org.xtreemfs.pbrpc.generatedinterfaces.DIR.serviceDeregisterRequest parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException { - Builder builder = newBuilder(); - if (builder.mergeDelimitedFrom(input)) { - return builder.buildParsed(); - } else { - return null; - } + return PARSER.parseDelimitedFrom(input); } public static org.xtreemfs.pbrpc.generatedinterfaces.DIR.serviceDeregisterRequest parseDelimitedFrom( java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - Builder builder = newBuilder(); - if (builder.mergeDelimitedFrom(input, extensionRegistry)) { - return builder.buildParsed(); - } else { - return null; - } + return PARSER.parseDelimitedFrom(input, extensionRegistry); } public static org.xtreemfs.pbrpc.generatedinterfaces.DIR.serviceDeregisterRequest parseFrom( com.google.protobuf.CodedInputStream input) throws java.io.IOException { - return newBuilder().mergeFrom(input).buildParsed(); + return PARSER.parseFrom(input); } public static org.xtreemfs.pbrpc.generatedinterfaces.DIR.serviceDeregisterRequest parseFrom( com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - return newBuilder().mergeFrom(input, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(input, extensionRegistry); } - + public static Builder newBuilder() { return Builder.create(); } public Builder newBuilderForType() { return newBuilder(); } public static Builder newBuilder(org.xtreemfs.pbrpc.generatedinterfaces.DIR.serviceDeregisterRequest prototype) { return newBuilder().mergeFrom(prototype); } public Builder toBuilder() { return newBuilder(this); } - + + @java.lang.Override + protected Builder newBuilderForType( + com.google.protobuf.GeneratedMessage.BuilderParent parent) { + Builder builder = new Builder(parent); + return builder; + } + /** + * Protobuf type {@code xtreemfs.pbrpc.serviceDeregisterRequest} + */ public static final class Builder extends - com.google.protobuf.GeneratedMessage.Builder { - private org.xtreemfs.pbrpc.generatedinterfaces.DIR.serviceDeregisterRequest result; - + com.google.protobuf.GeneratedMessage.Builder + implements org.xtreemfs.pbrpc.generatedinterfaces.DIR.serviceDeregisterRequestOrBuilder { + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return org.xtreemfs.pbrpc.generatedinterfaces.DIR.internal_static_xtreemfs_pbrpc_serviceDeregisterRequest_descriptor; + } + + protected com.google.protobuf.GeneratedMessage.FieldAccessorTable + internalGetFieldAccessorTable() { + return org.xtreemfs.pbrpc.generatedinterfaces.DIR.internal_static_xtreemfs_pbrpc_serviceDeregisterRequest_fieldAccessorTable + .ensureFieldAccessorsInitialized( + org.xtreemfs.pbrpc.generatedinterfaces.DIR.serviceDeregisterRequest.class, org.xtreemfs.pbrpc.generatedinterfaces.DIR.serviceDeregisterRequest.Builder.class); + } + // Construct using org.xtreemfs.pbrpc.generatedinterfaces.DIR.serviceDeregisterRequest.newBuilder() - private Builder() {} - - private static Builder create() { - Builder builder = new Builder(); - builder.result = new org.xtreemfs.pbrpc.generatedinterfaces.DIR.serviceDeregisterRequest(); - return builder; + private Builder() { + maybeForceBuilderInitialization(); } - - protected org.xtreemfs.pbrpc.generatedinterfaces.DIR.serviceDeregisterRequest internalGetResult() { - return result; + + private Builder( + com.google.protobuf.GeneratedMessage.BuilderParent parent) { + super(parent); + maybeForceBuilderInitialization(); } - - public Builder clear() { - if (result == null) { - throw new IllegalStateException( - "Cannot call clear() after build()."); + private void maybeForceBuilderInitialization() { + if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) { } - result = new org.xtreemfs.pbrpc.generatedinterfaces.DIR.serviceDeregisterRequest(); + } + private static Builder create() { + return new Builder(); + } + + public Builder clear() { + super.clear(); + uuid_ = ""; + bitField0_ = (bitField0_ & ~0x00000001); return this; } - + public Builder clone() { - return create().mergeFrom(result); + return create().mergeFrom(buildPartial()); } - + public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() { - return org.xtreemfs.pbrpc.generatedinterfaces.DIR.serviceDeregisterRequest.getDescriptor(); + return org.xtreemfs.pbrpc.generatedinterfaces.DIR.internal_static_xtreemfs_pbrpc_serviceDeregisterRequest_descriptor; } - + public org.xtreemfs.pbrpc.generatedinterfaces.DIR.serviceDeregisterRequest getDefaultInstanceForType() { return org.xtreemfs.pbrpc.generatedinterfaces.DIR.serviceDeregisterRequest.getDefaultInstance(); } - - public boolean isInitialized() { - return result.isInitialized(); - } + public org.xtreemfs.pbrpc.generatedinterfaces.DIR.serviceDeregisterRequest build() { - if (result != null && !isInitialized()) { + org.xtreemfs.pbrpc.generatedinterfaces.DIR.serviceDeregisterRequest result = buildPartial(); + if (!result.isInitialized()) { throw newUninitializedMessageException(result); } - return buildPartial(); - } - - private org.xtreemfs.pbrpc.generatedinterfaces.DIR.serviceDeregisterRequest buildParsed() - throws com.google.protobuf.InvalidProtocolBufferException { - if (!isInitialized()) { - throw newUninitializedMessageException( - result).asInvalidProtocolBufferException(); - } - return buildPartial(); + return result; } - + public org.xtreemfs.pbrpc.generatedinterfaces.DIR.serviceDeregisterRequest buildPartial() { - if (result == null) { - throw new IllegalStateException( - "build() has already been called on this Builder."); - } - org.xtreemfs.pbrpc.generatedinterfaces.DIR.serviceDeregisterRequest returnMe = result; - result = null; - return returnMe; + org.xtreemfs.pbrpc.generatedinterfaces.DIR.serviceDeregisterRequest result = new org.xtreemfs.pbrpc.generatedinterfaces.DIR.serviceDeregisterRequest(this); + int from_bitField0_ = bitField0_; + int to_bitField0_ = 0; + if (((from_bitField0_ & 0x00000001) == 0x00000001)) { + to_bitField0_ |= 0x00000001; + } + result.uuid_ = uuid_; + result.bitField0_ = to_bitField0_; + onBuilt(); + return result; } - + public Builder mergeFrom(com.google.protobuf.Message other) { if (other instanceof org.xtreemfs.pbrpc.generatedinterfaces.DIR.serviceDeregisterRequest) { return mergeFrom((org.xtreemfs.pbrpc.generatedinterfaces.DIR.serviceDeregisterRequest)other); @@ -4471,286 +9775,525 @@ public final class DIR { return this; } } - + public Builder mergeFrom(org.xtreemfs.pbrpc.generatedinterfaces.DIR.serviceDeregisterRequest other) { if (other == org.xtreemfs.pbrpc.generatedinterfaces.DIR.serviceDeregisterRequest.getDefaultInstance()) return this; if (other.hasUuid()) { - setUuid(other.getUuid()); + bitField0_ |= 0x00000001; + uuid_ = other.uuid_; + onChanged(); } this.mergeUnknownFields(other.getUnknownFields()); return this; } - + + public final boolean isInitialized() { + if (!hasUuid()) { + + return false; + } + return true; + } + public Builder mergeFrom( com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - com.google.protobuf.UnknownFieldSet.Builder unknownFields = - com.google.protobuf.UnknownFieldSet.newBuilder( - this.getUnknownFields()); - while (true) { - int tag = input.readTag(); - switch (tag) { - case 0: - this.setUnknownFields(unknownFields.build()); - return this; - default: { - if (!parseUnknownField(input, unknownFields, - extensionRegistry, tag)) { - this.setUnknownFields(unknownFields.build()); - return this; - } - break; - } - case 10: { - setUuid(input.readString()); - break; - } + org.xtreemfs.pbrpc.generatedinterfaces.DIR.serviceDeregisterRequest parsedMessage = null; + try { + parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + parsedMessage = (org.xtreemfs.pbrpc.generatedinterfaces.DIR.serviceDeregisterRequest) e.getUnfinishedMessage(); + throw e; + } finally { + if (parsedMessage != null) { + mergeFrom(parsedMessage); } } + return this; } - - + private int bitField0_; + // required string uuid = 1; + private java.lang.Object uuid_ = ""; + /** + * required string uuid = 1; + * + *
+       * UUID of the service that should be dregistered.
+       * 
+ */ public boolean hasUuid() { - return result.hasUuid(); - } + return ((bitField0_ & 0x00000001) == 0x00000001); + } + /** + * required string uuid = 1; + * + *
+       * UUID of the service that should be dregistered.
+       * 
+ */ public java.lang.String getUuid() { - return result.getUuid(); - } - public Builder setUuid(java.lang.String value) { + java.lang.Object ref = uuid_; + if (!(ref instanceof java.lang.String)) { + java.lang.String s = ((com.google.protobuf.ByteString) ref) + .toStringUtf8(); + uuid_ = s; + return s; + } else { + return (java.lang.String) ref; + } + } + /** + * required string uuid = 1; + * + *
+       * UUID of the service that should be dregistered.
+       * 
+ */ + public com.google.protobuf.ByteString + getUuidBytes() { + java.lang.Object ref = uuid_; + if (ref instanceof String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + uuid_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + /** + * required string uuid = 1; + * + *
+       * UUID of the service that should be dregistered.
+       * 
+ */ + public Builder setUuid( + java.lang.String value) { if (value == null) { throw new NullPointerException(); } - result.hasUuid = true; - result.uuid_ = value; - return this; - } + bitField0_ |= 0x00000001; + uuid_ = value; + onChanged(); + return this; + } + /** + * required string uuid = 1; + * + *
+       * UUID of the service that should be dregistered.
+       * 
+ */ public Builder clearUuid() { - result.hasUuid = false; - result.uuid_ = getDefaultInstance().getUuid(); + bitField0_ = (bitField0_ & ~0x00000001); + uuid_ = getDefaultInstance().getUuid(); + onChanged(); + return this; + } + /** + * required string uuid = 1; + * + *
+       * UUID of the service that should be dregistered.
+       * 
+ */ + public Builder setUuidBytes( + com.google.protobuf.ByteString value) { + if (value == null) { + throw new NullPointerException(); + } + bitField0_ |= 0x00000001; + uuid_ = value; + onChanged(); return this; } - + // @@protoc_insertion_point(builder_scope:xtreemfs.pbrpc.serviceDeregisterRequest) } - + static { defaultInstance = new serviceDeregisterRequest(true); - org.xtreemfs.pbrpc.generatedinterfaces.DIR.internalForceInit(); defaultInstance.initFields(); } - + // @@protoc_insertion_point(class_scope:xtreemfs.pbrpc.serviceDeregisterRequest) } - + + public interface serviceGetByNameRequestOrBuilder + extends com.google.protobuf.MessageOrBuilder { + + // required string name = 1; + /** + * required string name = 1; + * + *
+     * Service name to search for.
+     * 
+ */ + boolean hasName(); + /** + * required string name = 1; + * + *
+     * Service name to search for.
+     * 
+ */ + java.lang.String getName(); + /** + * required string name = 1; + * + *
+     * Service name to search for.
+     * 
+ */ + com.google.protobuf.ByteString + getNameBytes(); + } + /** + * Protobuf type {@code xtreemfs.pbrpc.serviceGetByNameRequest} + */ public static final class serviceGetByNameRequest extends - com.google.protobuf.GeneratedMessage { + com.google.protobuf.GeneratedMessage + implements serviceGetByNameRequestOrBuilder { // Use serviceGetByNameRequest.newBuilder() to construct. - private serviceGetByNameRequest() { - initFields(); + private serviceGetByNameRequest(com.google.protobuf.GeneratedMessage.Builder builder) { + super(builder); + this.unknownFields = builder.getUnknownFields(); } - private serviceGetByNameRequest(boolean noInit) {} - + private serviceGetByNameRequest(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); } + private static final serviceGetByNameRequest defaultInstance; public static serviceGetByNameRequest getDefaultInstance() { return defaultInstance; } - + public serviceGetByNameRequest getDefaultInstanceForType() { return defaultInstance; } - + + private final com.google.protobuf.UnknownFieldSet unknownFields; + @java.lang.Override + public final com.google.protobuf.UnknownFieldSet + getUnknownFields() { + return this.unknownFields; + } + private serviceGetByNameRequest( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + initFields(); + int mutable_bitField0_ = 0; + com.google.protobuf.UnknownFieldSet.Builder unknownFields = + com.google.protobuf.UnknownFieldSet.newBuilder(); + try { + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch (tag) { + case 0: + done = true; + break; + default: { + if (!parseUnknownField(input, unknownFields, + extensionRegistry, tag)) { + done = true; + } + break; + } + case 10: { + bitField0_ |= 0x00000001; + name_ = input.readBytes(); + break; + } + } + } + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(this); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException( + e.getMessage()).setUnfinishedMessage(this); + } finally { + this.unknownFields = unknownFields.build(); + makeExtensionsImmutable(); + } + } public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { return org.xtreemfs.pbrpc.generatedinterfaces.DIR.internal_static_xtreemfs_pbrpc_serviceGetByNameRequest_descriptor; } - + protected com.google.protobuf.GeneratedMessage.FieldAccessorTable internalGetFieldAccessorTable() { - return org.xtreemfs.pbrpc.generatedinterfaces.DIR.internal_static_xtreemfs_pbrpc_serviceGetByNameRequest_fieldAccessorTable; + return org.xtreemfs.pbrpc.generatedinterfaces.DIR.internal_static_xtreemfs_pbrpc_serviceGetByNameRequest_fieldAccessorTable + .ensureFieldAccessorsInitialized( + org.xtreemfs.pbrpc.generatedinterfaces.DIR.serviceGetByNameRequest.class, org.xtreemfs.pbrpc.generatedinterfaces.DIR.serviceGetByNameRequest.Builder.class); + } + + public static com.google.protobuf.Parser PARSER = + new com.google.protobuf.AbstractParser() { + public serviceGetByNameRequest parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return new serviceGetByNameRequest(input, extensionRegistry); + } + }; + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; } - + + private int bitField0_; // required string name = 1; public static final int NAME_FIELD_NUMBER = 1; - private boolean hasName; - private java.lang.String name_ = ""; - public boolean hasName() { return hasName; } - public java.lang.String getName() { return name_; } - + private java.lang.Object name_; + /** + * required string name = 1; + * + *
+     * Service name to search for.
+     * 
+ */ + public boolean hasName() { + return ((bitField0_ & 0x00000001) == 0x00000001); + } + /** + * required string name = 1; + * + *
+     * Service name to search for.
+     * 
+ */ + public java.lang.String getName() { + java.lang.Object ref = name_; + if (ref instanceof java.lang.String) { + return (java.lang.String) ref; + } else { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + if (bs.isValidUtf8()) { + name_ = s; + } + return s; + } + } + /** + * required string name = 1; + * + *
+     * Service name to search for.
+     * 
+ */ + public com.google.protobuf.ByteString + getNameBytes() { + java.lang.Object ref = name_; + if (ref instanceof java.lang.String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + name_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + private void initFields() { + name_ = ""; } + private byte memoizedIsInitialized = -1; public final boolean isInitialized() { - if (!hasName) return false; + byte isInitialized = memoizedIsInitialized; + if (isInitialized != -1) return isInitialized == 1; + + if (!hasName()) { + memoizedIsInitialized = 0; + return false; + } + memoizedIsInitialized = 1; return true; } - + public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException { getSerializedSize(); - if (hasName()) { - output.writeString(1, getName()); + if (((bitField0_ & 0x00000001) == 0x00000001)) { + output.writeBytes(1, getNameBytes()); } getUnknownFields().writeTo(output); } - + private int memoizedSerializedSize = -1; public int getSerializedSize() { int size = memoizedSerializedSize; if (size != -1) return size; - + size = 0; - if (hasName()) { + if (((bitField0_ & 0x00000001) == 0x00000001)) { size += com.google.protobuf.CodedOutputStream - .computeStringSize(1, getName()); + .computeBytesSize(1, getNameBytes()); } size += getUnknownFields().getSerializedSize(); memoizedSerializedSize = size; return size; } - + + private static final long serialVersionUID = 0L; + @java.lang.Override + protected java.lang.Object writeReplace() + throws java.io.ObjectStreamException { + return super.writeReplace(); + } + public static org.xtreemfs.pbrpc.generatedinterfaces.DIR.serviceGetByNameRequest parseFrom( com.google.protobuf.ByteString data) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data).buildParsed(); + return PARSER.parseFrom(data); } public static org.xtreemfs.pbrpc.generatedinterfaces.DIR.serviceGetByNameRequest parseFrom( com.google.protobuf.ByteString data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(data, extensionRegistry); } public static org.xtreemfs.pbrpc.generatedinterfaces.DIR.serviceGetByNameRequest parseFrom(byte[] data) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data).buildParsed(); + return PARSER.parseFrom(data); } public static org.xtreemfs.pbrpc.generatedinterfaces.DIR.serviceGetByNameRequest parseFrom( byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(data, extensionRegistry); } public static org.xtreemfs.pbrpc.generatedinterfaces.DIR.serviceGetByNameRequest parseFrom(java.io.InputStream input) throws java.io.IOException { - return newBuilder().mergeFrom(input).buildParsed(); + return PARSER.parseFrom(input); } public static org.xtreemfs.pbrpc.generatedinterfaces.DIR.serviceGetByNameRequest parseFrom( java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - return newBuilder().mergeFrom(input, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(input, extensionRegistry); } public static org.xtreemfs.pbrpc.generatedinterfaces.DIR.serviceGetByNameRequest parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException { - Builder builder = newBuilder(); - if (builder.mergeDelimitedFrom(input)) { - return builder.buildParsed(); - } else { - return null; - } + return PARSER.parseDelimitedFrom(input); } public static org.xtreemfs.pbrpc.generatedinterfaces.DIR.serviceGetByNameRequest parseDelimitedFrom( java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - Builder builder = newBuilder(); - if (builder.mergeDelimitedFrom(input, extensionRegistry)) { - return builder.buildParsed(); - } else { - return null; - } + return PARSER.parseDelimitedFrom(input, extensionRegistry); } public static org.xtreemfs.pbrpc.generatedinterfaces.DIR.serviceGetByNameRequest parseFrom( com.google.protobuf.CodedInputStream input) throws java.io.IOException { - return newBuilder().mergeFrom(input).buildParsed(); + return PARSER.parseFrom(input); } public static org.xtreemfs.pbrpc.generatedinterfaces.DIR.serviceGetByNameRequest parseFrom( com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - return newBuilder().mergeFrom(input, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(input, extensionRegistry); } - + public static Builder newBuilder() { return Builder.create(); } public Builder newBuilderForType() { return newBuilder(); } public static Builder newBuilder(org.xtreemfs.pbrpc.generatedinterfaces.DIR.serviceGetByNameRequest prototype) { return newBuilder().mergeFrom(prototype); } public Builder toBuilder() { return newBuilder(this); } - + + @java.lang.Override + protected Builder newBuilderForType( + com.google.protobuf.GeneratedMessage.BuilderParent parent) { + Builder builder = new Builder(parent); + return builder; + } + /** + * Protobuf type {@code xtreemfs.pbrpc.serviceGetByNameRequest} + */ public static final class Builder extends - com.google.protobuf.GeneratedMessage.Builder { - private org.xtreemfs.pbrpc.generatedinterfaces.DIR.serviceGetByNameRequest result; - + com.google.protobuf.GeneratedMessage.Builder + implements org.xtreemfs.pbrpc.generatedinterfaces.DIR.serviceGetByNameRequestOrBuilder { + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return org.xtreemfs.pbrpc.generatedinterfaces.DIR.internal_static_xtreemfs_pbrpc_serviceGetByNameRequest_descriptor; + } + + protected com.google.protobuf.GeneratedMessage.FieldAccessorTable + internalGetFieldAccessorTable() { + return org.xtreemfs.pbrpc.generatedinterfaces.DIR.internal_static_xtreemfs_pbrpc_serviceGetByNameRequest_fieldAccessorTable + .ensureFieldAccessorsInitialized( + org.xtreemfs.pbrpc.generatedinterfaces.DIR.serviceGetByNameRequest.class, org.xtreemfs.pbrpc.generatedinterfaces.DIR.serviceGetByNameRequest.Builder.class); + } + // Construct using org.xtreemfs.pbrpc.generatedinterfaces.DIR.serviceGetByNameRequest.newBuilder() - private Builder() {} - - private static Builder create() { - Builder builder = new Builder(); - builder.result = new org.xtreemfs.pbrpc.generatedinterfaces.DIR.serviceGetByNameRequest(); - return builder; + private Builder() { + maybeForceBuilderInitialization(); } - - protected org.xtreemfs.pbrpc.generatedinterfaces.DIR.serviceGetByNameRequest internalGetResult() { - return result; + + private Builder( + com.google.protobuf.GeneratedMessage.BuilderParent parent) { + super(parent); + maybeForceBuilderInitialization(); } - - public Builder clear() { - if (result == null) { - throw new IllegalStateException( - "Cannot call clear() after build()."); + private void maybeForceBuilderInitialization() { + if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) { } - result = new org.xtreemfs.pbrpc.generatedinterfaces.DIR.serviceGetByNameRequest(); + } + private static Builder create() { + return new Builder(); + } + + public Builder clear() { + super.clear(); + name_ = ""; + bitField0_ = (bitField0_ & ~0x00000001); return this; } - + public Builder clone() { - return create().mergeFrom(result); + return create().mergeFrom(buildPartial()); } - + public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() { - return org.xtreemfs.pbrpc.generatedinterfaces.DIR.serviceGetByNameRequest.getDescriptor(); + return org.xtreemfs.pbrpc.generatedinterfaces.DIR.internal_static_xtreemfs_pbrpc_serviceGetByNameRequest_descriptor; } - + public org.xtreemfs.pbrpc.generatedinterfaces.DIR.serviceGetByNameRequest getDefaultInstanceForType() { return org.xtreemfs.pbrpc.generatedinterfaces.DIR.serviceGetByNameRequest.getDefaultInstance(); } - - public boolean isInitialized() { - return result.isInitialized(); - } + public org.xtreemfs.pbrpc.generatedinterfaces.DIR.serviceGetByNameRequest build() { - if (result != null && !isInitialized()) { + org.xtreemfs.pbrpc.generatedinterfaces.DIR.serviceGetByNameRequest result = buildPartial(); + if (!result.isInitialized()) { throw newUninitializedMessageException(result); } - return buildPartial(); - } - - private org.xtreemfs.pbrpc.generatedinterfaces.DIR.serviceGetByNameRequest buildParsed() - throws com.google.protobuf.InvalidProtocolBufferException { - if (!isInitialized()) { - throw newUninitializedMessageException( - result).asInvalidProtocolBufferException(); - } - return buildPartial(); + return result; } - + public org.xtreemfs.pbrpc.generatedinterfaces.DIR.serviceGetByNameRequest buildPartial() { - if (result == null) { - throw new IllegalStateException( - "build() has already been called on this Builder."); - } - org.xtreemfs.pbrpc.generatedinterfaces.DIR.serviceGetByNameRequest returnMe = result; - result = null; - return returnMe; + org.xtreemfs.pbrpc.generatedinterfaces.DIR.serviceGetByNameRequest result = new org.xtreemfs.pbrpc.generatedinterfaces.DIR.serviceGetByNameRequest(this); + int from_bitField0_ = bitField0_; + int to_bitField0_ = 0; + if (((from_bitField0_ & 0x00000001) == 0x00000001)) { + to_bitField0_ |= 0x00000001; + } + result.name_ = name_; + result.bitField0_ = to_bitField0_; + onBuilt(); + return result; } - + public Builder mergeFrom(com.google.protobuf.Message other) { if (other instanceof org.xtreemfs.pbrpc.generatedinterfaces.DIR.serviceGetByNameRequest) { return mergeFrom((org.xtreemfs.pbrpc.generatedinterfaces.DIR.serviceGetByNameRequest)other); @@ -4759,286 +10302,525 @@ public final class DIR { return this; } } - + public Builder mergeFrom(org.xtreemfs.pbrpc.generatedinterfaces.DIR.serviceGetByNameRequest other) { if (other == org.xtreemfs.pbrpc.generatedinterfaces.DIR.serviceGetByNameRequest.getDefaultInstance()) return this; if (other.hasName()) { - setName(other.getName()); + bitField0_ |= 0x00000001; + name_ = other.name_; + onChanged(); } this.mergeUnknownFields(other.getUnknownFields()); return this; } - + + public final boolean isInitialized() { + if (!hasName()) { + + return false; + } + return true; + } + public Builder mergeFrom( com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - com.google.protobuf.UnknownFieldSet.Builder unknownFields = - com.google.protobuf.UnknownFieldSet.newBuilder( - this.getUnknownFields()); - while (true) { - int tag = input.readTag(); - switch (tag) { - case 0: - this.setUnknownFields(unknownFields.build()); - return this; - default: { - if (!parseUnknownField(input, unknownFields, - extensionRegistry, tag)) { - this.setUnknownFields(unknownFields.build()); - return this; - } - break; - } - case 10: { - setName(input.readString()); - break; - } + org.xtreemfs.pbrpc.generatedinterfaces.DIR.serviceGetByNameRequest parsedMessage = null; + try { + parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + parsedMessage = (org.xtreemfs.pbrpc.generatedinterfaces.DIR.serviceGetByNameRequest) e.getUnfinishedMessage(); + throw e; + } finally { + if (parsedMessage != null) { + mergeFrom(parsedMessage); } } + return this; } - - + private int bitField0_; + // required string name = 1; + private java.lang.Object name_ = ""; + /** + * required string name = 1; + * + *
+       * Service name to search for.
+       * 
+ */ public boolean hasName() { - return result.hasName(); - } + return ((bitField0_ & 0x00000001) == 0x00000001); + } + /** + * required string name = 1; + * + *
+       * Service name to search for.
+       * 
+ */ public java.lang.String getName() { - return result.getName(); - } - public Builder setName(java.lang.String value) { + java.lang.Object ref = name_; + if (!(ref instanceof java.lang.String)) { + java.lang.String s = ((com.google.protobuf.ByteString) ref) + .toStringUtf8(); + name_ = s; + return s; + } else { + return (java.lang.String) ref; + } + } + /** + * required string name = 1; + * + *
+       * Service name to search for.
+       * 
+ */ + public com.google.protobuf.ByteString + getNameBytes() { + java.lang.Object ref = name_; + if (ref instanceof String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + name_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + /** + * required string name = 1; + * + *
+       * Service name to search for.
+       * 
+ */ + public Builder setName( + java.lang.String value) { if (value == null) { throw new NullPointerException(); } - result.hasName = true; - result.name_ = value; - return this; - } + bitField0_ |= 0x00000001; + name_ = value; + onChanged(); + return this; + } + /** + * required string name = 1; + * + *
+       * Service name to search for.
+       * 
+ */ public Builder clearName() { - result.hasName = false; - result.name_ = getDefaultInstance().getName(); + bitField0_ = (bitField0_ & ~0x00000001); + name_ = getDefaultInstance().getName(); + onChanged(); + return this; + } + /** + * required string name = 1; + * + *
+       * Service name to search for.
+       * 
+ */ + public Builder setNameBytes( + com.google.protobuf.ByteString value) { + if (value == null) { + throw new NullPointerException(); + } + bitField0_ |= 0x00000001; + name_ = value; + onChanged(); return this; } - + // @@protoc_insertion_point(builder_scope:xtreemfs.pbrpc.serviceGetByNameRequest) } - + static { defaultInstance = new serviceGetByNameRequest(true); - org.xtreemfs.pbrpc.generatedinterfaces.DIR.internalForceInit(); defaultInstance.initFields(); } - + // @@protoc_insertion_point(class_scope:xtreemfs.pbrpc.serviceGetByNameRequest) } - + + public interface serviceGetByUUIDRequestOrBuilder + extends com.google.protobuf.MessageOrBuilder { + + // required string name = 1; + /** + * required string name = 1; + * + *
+     * UUID to search for.
+     * 
+ */ + boolean hasName(); + /** + * required string name = 1; + * + *
+     * UUID to search for.
+     * 
+ */ + java.lang.String getName(); + /** + * required string name = 1; + * + *
+     * UUID to search for.
+     * 
+ */ + com.google.protobuf.ByteString + getNameBytes(); + } + /** + * Protobuf type {@code xtreemfs.pbrpc.serviceGetByUUIDRequest} + */ public static final class serviceGetByUUIDRequest extends - com.google.protobuf.GeneratedMessage { + com.google.protobuf.GeneratedMessage + implements serviceGetByUUIDRequestOrBuilder { // Use serviceGetByUUIDRequest.newBuilder() to construct. - private serviceGetByUUIDRequest() { - initFields(); + private serviceGetByUUIDRequest(com.google.protobuf.GeneratedMessage.Builder builder) { + super(builder); + this.unknownFields = builder.getUnknownFields(); } - private serviceGetByUUIDRequest(boolean noInit) {} - + private serviceGetByUUIDRequest(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); } + private static final serviceGetByUUIDRequest defaultInstance; public static serviceGetByUUIDRequest getDefaultInstance() { return defaultInstance; } - + public serviceGetByUUIDRequest getDefaultInstanceForType() { return defaultInstance; } - + + private final com.google.protobuf.UnknownFieldSet unknownFields; + @java.lang.Override + public final com.google.protobuf.UnknownFieldSet + getUnknownFields() { + return this.unknownFields; + } + private serviceGetByUUIDRequest( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + initFields(); + int mutable_bitField0_ = 0; + com.google.protobuf.UnknownFieldSet.Builder unknownFields = + com.google.protobuf.UnknownFieldSet.newBuilder(); + try { + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch (tag) { + case 0: + done = true; + break; + default: { + if (!parseUnknownField(input, unknownFields, + extensionRegistry, tag)) { + done = true; + } + break; + } + case 10: { + bitField0_ |= 0x00000001; + name_ = input.readBytes(); + break; + } + } + } + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(this); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException( + e.getMessage()).setUnfinishedMessage(this); + } finally { + this.unknownFields = unknownFields.build(); + makeExtensionsImmutable(); + } + } public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { return org.xtreemfs.pbrpc.generatedinterfaces.DIR.internal_static_xtreemfs_pbrpc_serviceGetByUUIDRequest_descriptor; } - + protected com.google.protobuf.GeneratedMessage.FieldAccessorTable internalGetFieldAccessorTable() { - return org.xtreemfs.pbrpc.generatedinterfaces.DIR.internal_static_xtreemfs_pbrpc_serviceGetByUUIDRequest_fieldAccessorTable; + return org.xtreemfs.pbrpc.generatedinterfaces.DIR.internal_static_xtreemfs_pbrpc_serviceGetByUUIDRequest_fieldAccessorTable + .ensureFieldAccessorsInitialized( + org.xtreemfs.pbrpc.generatedinterfaces.DIR.serviceGetByUUIDRequest.class, org.xtreemfs.pbrpc.generatedinterfaces.DIR.serviceGetByUUIDRequest.Builder.class); + } + + public static com.google.protobuf.Parser PARSER = + new com.google.protobuf.AbstractParser() { + public serviceGetByUUIDRequest parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return new serviceGetByUUIDRequest(input, extensionRegistry); + } + }; + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; } - + + private int bitField0_; // required string name = 1; public static final int NAME_FIELD_NUMBER = 1; - private boolean hasName; - private java.lang.String name_ = ""; - public boolean hasName() { return hasName; } - public java.lang.String getName() { return name_; } - + private java.lang.Object name_; + /** + * required string name = 1; + * + *
+     * UUID to search for.
+     * 
+ */ + public boolean hasName() { + return ((bitField0_ & 0x00000001) == 0x00000001); + } + /** + * required string name = 1; + * + *
+     * UUID to search for.
+     * 
+ */ + public java.lang.String getName() { + java.lang.Object ref = name_; + if (ref instanceof java.lang.String) { + return (java.lang.String) ref; + } else { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + if (bs.isValidUtf8()) { + name_ = s; + } + return s; + } + } + /** + * required string name = 1; + * + *
+     * UUID to search for.
+     * 
+ */ + public com.google.protobuf.ByteString + getNameBytes() { + java.lang.Object ref = name_; + if (ref instanceof java.lang.String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + name_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + private void initFields() { + name_ = ""; } + private byte memoizedIsInitialized = -1; public final boolean isInitialized() { - if (!hasName) return false; + byte isInitialized = memoizedIsInitialized; + if (isInitialized != -1) return isInitialized == 1; + + if (!hasName()) { + memoizedIsInitialized = 0; + return false; + } + memoizedIsInitialized = 1; return true; } - + public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException { getSerializedSize(); - if (hasName()) { - output.writeString(1, getName()); + if (((bitField0_ & 0x00000001) == 0x00000001)) { + output.writeBytes(1, getNameBytes()); } getUnknownFields().writeTo(output); } - + private int memoizedSerializedSize = -1; public int getSerializedSize() { int size = memoizedSerializedSize; if (size != -1) return size; - + size = 0; - if (hasName()) { + if (((bitField0_ & 0x00000001) == 0x00000001)) { size += com.google.protobuf.CodedOutputStream - .computeStringSize(1, getName()); + .computeBytesSize(1, getNameBytes()); } size += getUnknownFields().getSerializedSize(); memoizedSerializedSize = size; return size; } - + + private static final long serialVersionUID = 0L; + @java.lang.Override + protected java.lang.Object writeReplace() + throws java.io.ObjectStreamException { + return super.writeReplace(); + } + public static org.xtreemfs.pbrpc.generatedinterfaces.DIR.serviceGetByUUIDRequest parseFrom( com.google.protobuf.ByteString data) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data).buildParsed(); + return PARSER.parseFrom(data); } public static org.xtreemfs.pbrpc.generatedinterfaces.DIR.serviceGetByUUIDRequest parseFrom( com.google.protobuf.ByteString data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(data, extensionRegistry); } public static org.xtreemfs.pbrpc.generatedinterfaces.DIR.serviceGetByUUIDRequest parseFrom(byte[] data) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data).buildParsed(); + return PARSER.parseFrom(data); } public static org.xtreemfs.pbrpc.generatedinterfaces.DIR.serviceGetByUUIDRequest parseFrom( byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(data, extensionRegistry); } public static org.xtreemfs.pbrpc.generatedinterfaces.DIR.serviceGetByUUIDRequest parseFrom(java.io.InputStream input) throws java.io.IOException { - return newBuilder().mergeFrom(input).buildParsed(); + return PARSER.parseFrom(input); } public static org.xtreemfs.pbrpc.generatedinterfaces.DIR.serviceGetByUUIDRequest parseFrom( java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - return newBuilder().mergeFrom(input, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(input, extensionRegistry); } public static org.xtreemfs.pbrpc.generatedinterfaces.DIR.serviceGetByUUIDRequest parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException { - Builder builder = newBuilder(); - if (builder.mergeDelimitedFrom(input)) { - return builder.buildParsed(); - } else { - return null; - } + return PARSER.parseDelimitedFrom(input); } public static org.xtreemfs.pbrpc.generatedinterfaces.DIR.serviceGetByUUIDRequest parseDelimitedFrom( java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - Builder builder = newBuilder(); - if (builder.mergeDelimitedFrom(input, extensionRegistry)) { - return builder.buildParsed(); - } else { - return null; - } + return PARSER.parseDelimitedFrom(input, extensionRegistry); } public static org.xtreemfs.pbrpc.generatedinterfaces.DIR.serviceGetByUUIDRequest parseFrom( com.google.protobuf.CodedInputStream input) throws java.io.IOException { - return newBuilder().mergeFrom(input).buildParsed(); + return PARSER.parseFrom(input); } public static org.xtreemfs.pbrpc.generatedinterfaces.DIR.serviceGetByUUIDRequest parseFrom( com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - return newBuilder().mergeFrom(input, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(input, extensionRegistry); } - + public static Builder newBuilder() { return Builder.create(); } public Builder newBuilderForType() { return newBuilder(); } public static Builder newBuilder(org.xtreemfs.pbrpc.generatedinterfaces.DIR.serviceGetByUUIDRequest prototype) { return newBuilder().mergeFrom(prototype); } public Builder toBuilder() { return newBuilder(this); } - + + @java.lang.Override + protected Builder newBuilderForType( + com.google.protobuf.GeneratedMessage.BuilderParent parent) { + Builder builder = new Builder(parent); + return builder; + } + /** + * Protobuf type {@code xtreemfs.pbrpc.serviceGetByUUIDRequest} + */ public static final class Builder extends - com.google.protobuf.GeneratedMessage.Builder { - private org.xtreemfs.pbrpc.generatedinterfaces.DIR.serviceGetByUUIDRequest result; - + com.google.protobuf.GeneratedMessage.Builder + implements org.xtreemfs.pbrpc.generatedinterfaces.DIR.serviceGetByUUIDRequestOrBuilder { + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return org.xtreemfs.pbrpc.generatedinterfaces.DIR.internal_static_xtreemfs_pbrpc_serviceGetByUUIDRequest_descriptor; + } + + protected com.google.protobuf.GeneratedMessage.FieldAccessorTable + internalGetFieldAccessorTable() { + return org.xtreemfs.pbrpc.generatedinterfaces.DIR.internal_static_xtreemfs_pbrpc_serviceGetByUUIDRequest_fieldAccessorTable + .ensureFieldAccessorsInitialized( + org.xtreemfs.pbrpc.generatedinterfaces.DIR.serviceGetByUUIDRequest.class, org.xtreemfs.pbrpc.generatedinterfaces.DIR.serviceGetByUUIDRequest.Builder.class); + } + // Construct using org.xtreemfs.pbrpc.generatedinterfaces.DIR.serviceGetByUUIDRequest.newBuilder() - private Builder() {} - - private static Builder create() { - Builder builder = new Builder(); - builder.result = new org.xtreemfs.pbrpc.generatedinterfaces.DIR.serviceGetByUUIDRequest(); - return builder; + private Builder() { + maybeForceBuilderInitialization(); } - - protected org.xtreemfs.pbrpc.generatedinterfaces.DIR.serviceGetByUUIDRequest internalGetResult() { - return result; + + private Builder( + com.google.protobuf.GeneratedMessage.BuilderParent parent) { + super(parent); + maybeForceBuilderInitialization(); } - - public Builder clear() { - if (result == null) { - throw new IllegalStateException( - "Cannot call clear() after build()."); + private void maybeForceBuilderInitialization() { + if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) { } - result = new org.xtreemfs.pbrpc.generatedinterfaces.DIR.serviceGetByUUIDRequest(); + } + private static Builder create() { + return new Builder(); + } + + public Builder clear() { + super.clear(); + name_ = ""; + bitField0_ = (bitField0_ & ~0x00000001); return this; } - + public Builder clone() { - return create().mergeFrom(result); + return create().mergeFrom(buildPartial()); } - + public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() { - return org.xtreemfs.pbrpc.generatedinterfaces.DIR.serviceGetByUUIDRequest.getDescriptor(); + return org.xtreemfs.pbrpc.generatedinterfaces.DIR.internal_static_xtreemfs_pbrpc_serviceGetByUUIDRequest_descriptor; } - + public org.xtreemfs.pbrpc.generatedinterfaces.DIR.serviceGetByUUIDRequest getDefaultInstanceForType() { return org.xtreemfs.pbrpc.generatedinterfaces.DIR.serviceGetByUUIDRequest.getDefaultInstance(); } - - public boolean isInitialized() { - return result.isInitialized(); - } + public org.xtreemfs.pbrpc.generatedinterfaces.DIR.serviceGetByUUIDRequest build() { - if (result != null && !isInitialized()) { + org.xtreemfs.pbrpc.generatedinterfaces.DIR.serviceGetByUUIDRequest result = buildPartial(); + if (!result.isInitialized()) { throw newUninitializedMessageException(result); } - return buildPartial(); - } - - private org.xtreemfs.pbrpc.generatedinterfaces.DIR.serviceGetByUUIDRequest buildParsed() - throws com.google.protobuf.InvalidProtocolBufferException { - if (!isInitialized()) { - throw newUninitializedMessageException( - result).asInvalidProtocolBufferException(); - } - return buildPartial(); + return result; } - + public org.xtreemfs.pbrpc.generatedinterfaces.DIR.serviceGetByUUIDRequest buildPartial() { - if (result == null) { - throw new IllegalStateException( - "build() has already been called on this Builder."); - } - org.xtreemfs.pbrpc.generatedinterfaces.DIR.serviceGetByUUIDRequest returnMe = result; - result = null; - return returnMe; + org.xtreemfs.pbrpc.generatedinterfaces.DIR.serviceGetByUUIDRequest result = new org.xtreemfs.pbrpc.generatedinterfaces.DIR.serviceGetByUUIDRequest(this); + int from_bitField0_ = bitField0_; + int to_bitField0_ = 0; + if (((from_bitField0_ & 0x00000001) == 0x00000001)) { + to_bitField0_ |= 0x00000001; + } + result.name_ = name_; + result.bitField0_ = to_bitField0_; + onBuilt(); + return result; } - + public Builder mergeFrom(com.google.protobuf.Message other) { if (other instanceof org.xtreemfs.pbrpc.generatedinterfaces.DIR.serviceGetByUUIDRequest) { return mergeFrom((org.xtreemfs.pbrpc.generatedinterfaces.DIR.serviceGetByUUIDRequest)other); @@ -5047,287 +10829,491 @@ public final class DIR { return this; } } - + public Builder mergeFrom(org.xtreemfs.pbrpc.generatedinterfaces.DIR.serviceGetByUUIDRequest other) { if (other == org.xtreemfs.pbrpc.generatedinterfaces.DIR.serviceGetByUUIDRequest.getDefaultInstance()) return this; if (other.hasName()) { - setName(other.getName()); + bitField0_ |= 0x00000001; + name_ = other.name_; + onChanged(); } this.mergeUnknownFields(other.getUnknownFields()); return this; } - + + public final boolean isInitialized() { + if (!hasName()) { + + return false; + } + return true; + } + public Builder mergeFrom( com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - com.google.protobuf.UnknownFieldSet.Builder unknownFields = - com.google.protobuf.UnknownFieldSet.newBuilder( - this.getUnknownFields()); - while (true) { - int tag = input.readTag(); - switch (tag) { - case 0: - this.setUnknownFields(unknownFields.build()); - return this; - default: { - if (!parseUnknownField(input, unknownFields, - extensionRegistry, tag)) { - this.setUnknownFields(unknownFields.build()); - return this; - } - break; - } - case 10: { - setName(input.readString()); - break; - } + org.xtreemfs.pbrpc.generatedinterfaces.DIR.serviceGetByUUIDRequest parsedMessage = null; + try { + parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + parsedMessage = (org.xtreemfs.pbrpc.generatedinterfaces.DIR.serviceGetByUUIDRequest) e.getUnfinishedMessage(); + throw e; + } finally { + if (parsedMessage != null) { + mergeFrom(parsedMessage); } } + return this; } - - + private int bitField0_; + // required string name = 1; + private java.lang.Object name_ = ""; + /** + * required string name = 1; + * + *
+       * UUID to search for.
+       * 
+ */ public boolean hasName() { - return result.hasName(); - } + return ((bitField0_ & 0x00000001) == 0x00000001); + } + /** + * required string name = 1; + * + *
+       * UUID to search for.
+       * 
+ */ public java.lang.String getName() { - return result.getName(); - } - public Builder setName(java.lang.String value) { + java.lang.Object ref = name_; + if (!(ref instanceof java.lang.String)) { + java.lang.String s = ((com.google.protobuf.ByteString) ref) + .toStringUtf8(); + name_ = s; + return s; + } else { + return (java.lang.String) ref; + } + } + /** + * required string name = 1; + * + *
+       * UUID to search for.
+       * 
+ */ + public com.google.protobuf.ByteString + getNameBytes() { + java.lang.Object ref = name_; + if (ref instanceof String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + name_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + /** + * required string name = 1; + * + *
+       * UUID to search for.
+       * 
+ */ + public Builder setName( + java.lang.String value) { if (value == null) { throw new NullPointerException(); } - result.hasName = true; - result.name_ = value; - return this; - } + bitField0_ |= 0x00000001; + name_ = value; + onChanged(); + return this; + } + /** + * required string name = 1; + * + *
+       * UUID to search for.
+       * 
+ */ public Builder clearName() { - result.hasName = false; - result.name_ = getDefaultInstance().getName(); + bitField0_ = (bitField0_ & ~0x00000001); + name_ = getDefaultInstance().getName(); + onChanged(); + return this; + } + /** + * required string name = 1; + * + *
+       * UUID to search for.
+       * 
+ */ + public Builder setNameBytes( + com.google.protobuf.ByteString value) { + if (value == null) { + throw new NullPointerException(); + } + bitField0_ |= 0x00000001; + name_ = value; + onChanged(); return this; } - + // @@protoc_insertion_point(builder_scope:xtreemfs.pbrpc.serviceGetByUUIDRequest) } - + static { defaultInstance = new serviceGetByUUIDRequest(true); - org.xtreemfs.pbrpc.generatedinterfaces.DIR.internalForceInit(); defaultInstance.initFields(); } - + // @@protoc_insertion_point(class_scope:xtreemfs.pbrpc.serviceGetByUUIDRequest) } - + + public interface serviceGetByTypeRequestOrBuilder + extends com.google.protobuf.MessageOrBuilder { + + // required .xtreemfs.pbrpc.ServiceType type = 1; + /** + * required .xtreemfs.pbrpc.ServiceType type = 1; + * + *
+     * Service types to search for.
+     * 
+ */ + boolean hasType(); + /** + * required .xtreemfs.pbrpc.ServiceType type = 1; + * + *
+     * Service types to search for.
+     * 
+ */ + org.xtreemfs.pbrpc.generatedinterfaces.DIR.ServiceType getType(); + } + /** + * Protobuf type {@code xtreemfs.pbrpc.serviceGetByTypeRequest} + */ public static final class serviceGetByTypeRequest extends - com.google.protobuf.GeneratedMessage { + com.google.protobuf.GeneratedMessage + implements serviceGetByTypeRequestOrBuilder { // Use serviceGetByTypeRequest.newBuilder() to construct. - private serviceGetByTypeRequest() { - initFields(); + private serviceGetByTypeRequest(com.google.protobuf.GeneratedMessage.Builder builder) { + super(builder); + this.unknownFields = builder.getUnknownFields(); } - private serviceGetByTypeRequest(boolean noInit) {} - + private serviceGetByTypeRequest(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); } + private static final serviceGetByTypeRequest defaultInstance; public static serviceGetByTypeRequest getDefaultInstance() { return defaultInstance; } - + public serviceGetByTypeRequest getDefaultInstanceForType() { return defaultInstance; } - + + private final com.google.protobuf.UnknownFieldSet unknownFields; + @java.lang.Override + public final com.google.protobuf.UnknownFieldSet + getUnknownFields() { + return this.unknownFields; + } + private serviceGetByTypeRequest( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + initFields(); + int mutable_bitField0_ = 0; + com.google.protobuf.UnknownFieldSet.Builder unknownFields = + com.google.protobuf.UnknownFieldSet.newBuilder(); + try { + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch (tag) { + case 0: + done = true; + break; + default: { + if (!parseUnknownField(input, unknownFields, + extensionRegistry, tag)) { + done = true; + } + break; + } + case 8: { + int rawValue = input.readEnum(); + org.xtreemfs.pbrpc.generatedinterfaces.DIR.ServiceType value = org.xtreemfs.pbrpc.generatedinterfaces.DIR.ServiceType.valueOf(rawValue); + if (value == null) { + unknownFields.mergeVarintField(1, rawValue); + } else { + bitField0_ |= 0x00000001; + type_ = value; + } + break; + } + } + } + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(this); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException( + e.getMessage()).setUnfinishedMessage(this); + } finally { + this.unknownFields = unknownFields.build(); + makeExtensionsImmutable(); + } + } public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { return org.xtreemfs.pbrpc.generatedinterfaces.DIR.internal_static_xtreemfs_pbrpc_serviceGetByTypeRequest_descriptor; } - + protected com.google.protobuf.GeneratedMessage.FieldAccessorTable internalGetFieldAccessorTable() { - return org.xtreemfs.pbrpc.generatedinterfaces.DIR.internal_static_xtreemfs_pbrpc_serviceGetByTypeRequest_fieldAccessorTable; + return org.xtreemfs.pbrpc.generatedinterfaces.DIR.internal_static_xtreemfs_pbrpc_serviceGetByTypeRequest_fieldAccessorTable + .ensureFieldAccessorsInitialized( + org.xtreemfs.pbrpc.generatedinterfaces.DIR.serviceGetByTypeRequest.class, org.xtreemfs.pbrpc.generatedinterfaces.DIR.serviceGetByTypeRequest.Builder.class); + } + + public static com.google.protobuf.Parser PARSER = + new com.google.protobuf.AbstractParser() { + public serviceGetByTypeRequest parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return new serviceGetByTypeRequest(input, extensionRegistry); + } + }; + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; } - + + private int bitField0_; // required .xtreemfs.pbrpc.ServiceType type = 1; public static final int TYPE_FIELD_NUMBER = 1; - private boolean hasType; private org.xtreemfs.pbrpc.generatedinterfaces.DIR.ServiceType type_; - public boolean hasType() { return hasType; } - public org.xtreemfs.pbrpc.generatedinterfaces.DIR.ServiceType getType() { return type_; } - + /** + * required .xtreemfs.pbrpc.ServiceType type = 1; + * + *
+     * Service types to search for.
+     * 
+ */ + public boolean hasType() { + return ((bitField0_ & 0x00000001) == 0x00000001); + } + /** + * required .xtreemfs.pbrpc.ServiceType type = 1; + * + *
+     * Service types to search for.
+     * 
+ */ + public org.xtreemfs.pbrpc.generatedinterfaces.DIR.ServiceType getType() { + return type_; + } + private void initFields() { type_ = org.xtreemfs.pbrpc.generatedinterfaces.DIR.ServiceType.SERVICE_TYPE_MIXED; } + private byte memoizedIsInitialized = -1; public final boolean isInitialized() { - if (!hasType) return false; + byte isInitialized = memoizedIsInitialized; + if (isInitialized != -1) return isInitialized == 1; + + if (!hasType()) { + memoizedIsInitialized = 0; + return false; + } + memoizedIsInitialized = 1; return true; } - + public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException { getSerializedSize(); - if (hasType()) { - output.writeEnum(1, getType().getNumber()); + if (((bitField0_ & 0x00000001) == 0x00000001)) { + output.writeEnum(1, type_.getNumber()); } getUnknownFields().writeTo(output); } - + private int memoizedSerializedSize = -1; public int getSerializedSize() { int size = memoizedSerializedSize; if (size != -1) return size; - + size = 0; - if (hasType()) { + if (((bitField0_ & 0x00000001) == 0x00000001)) { size += com.google.protobuf.CodedOutputStream - .computeEnumSize(1, getType().getNumber()); + .computeEnumSize(1, type_.getNumber()); } size += getUnknownFields().getSerializedSize(); memoizedSerializedSize = size; return size; } - + + private static final long serialVersionUID = 0L; + @java.lang.Override + protected java.lang.Object writeReplace() + throws java.io.ObjectStreamException { + return super.writeReplace(); + } + public static org.xtreemfs.pbrpc.generatedinterfaces.DIR.serviceGetByTypeRequest parseFrom( com.google.protobuf.ByteString data) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data).buildParsed(); + return PARSER.parseFrom(data); } public static org.xtreemfs.pbrpc.generatedinterfaces.DIR.serviceGetByTypeRequest parseFrom( com.google.protobuf.ByteString data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(data, extensionRegistry); } public static org.xtreemfs.pbrpc.generatedinterfaces.DIR.serviceGetByTypeRequest parseFrom(byte[] data) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data).buildParsed(); + return PARSER.parseFrom(data); } public static org.xtreemfs.pbrpc.generatedinterfaces.DIR.serviceGetByTypeRequest parseFrom( byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(data, extensionRegistry); } public static org.xtreemfs.pbrpc.generatedinterfaces.DIR.serviceGetByTypeRequest parseFrom(java.io.InputStream input) throws java.io.IOException { - return newBuilder().mergeFrom(input).buildParsed(); + return PARSER.parseFrom(input); } public static org.xtreemfs.pbrpc.generatedinterfaces.DIR.serviceGetByTypeRequest parseFrom( java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - return newBuilder().mergeFrom(input, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(input, extensionRegistry); } public static org.xtreemfs.pbrpc.generatedinterfaces.DIR.serviceGetByTypeRequest parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException { - Builder builder = newBuilder(); - if (builder.mergeDelimitedFrom(input)) { - return builder.buildParsed(); - } else { - return null; - } + return PARSER.parseDelimitedFrom(input); } public static org.xtreemfs.pbrpc.generatedinterfaces.DIR.serviceGetByTypeRequest parseDelimitedFrom( java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - Builder builder = newBuilder(); - if (builder.mergeDelimitedFrom(input, extensionRegistry)) { - return builder.buildParsed(); - } else { - return null; - } + return PARSER.parseDelimitedFrom(input, extensionRegistry); } public static org.xtreemfs.pbrpc.generatedinterfaces.DIR.serviceGetByTypeRequest parseFrom( com.google.protobuf.CodedInputStream input) throws java.io.IOException { - return newBuilder().mergeFrom(input).buildParsed(); + return PARSER.parseFrom(input); } public static org.xtreemfs.pbrpc.generatedinterfaces.DIR.serviceGetByTypeRequest parseFrom( com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - return newBuilder().mergeFrom(input, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(input, extensionRegistry); } - + public static Builder newBuilder() { return Builder.create(); } public Builder newBuilderForType() { return newBuilder(); } public static Builder newBuilder(org.xtreemfs.pbrpc.generatedinterfaces.DIR.serviceGetByTypeRequest prototype) { return newBuilder().mergeFrom(prototype); } public Builder toBuilder() { return newBuilder(this); } - + + @java.lang.Override + protected Builder newBuilderForType( + com.google.protobuf.GeneratedMessage.BuilderParent parent) { + Builder builder = new Builder(parent); + return builder; + } + /** + * Protobuf type {@code xtreemfs.pbrpc.serviceGetByTypeRequest} + */ public static final class Builder extends - com.google.protobuf.GeneratedMessage.Builder { - private org.xtreemfs.pbrpc.generatedinterfaces.DIR.serviceGetByTypeRequest result; - + com.google.protobuf.GeneratedMessage.Builder + implements org.xtreemfs.pbrpc.generatedinterfaces.DIR.serviceGetByTypeRequestOrBuilder { + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return org.xtreemfs.pbrpc.generatedinterfaces.DIR.internal_static_xtreemfs_pbrpc_serviceGetByTypeRequest_descriptor; + } + + protected com.google.protobuf.GeneratedMessage.FieldAccessorTable + internalGetFieldAccessorTable() { + return org.xtreemfs.pbrpc.generatedinterfaces.DIR.internal_static_xtreemfs_pbrpc_serviceGetByTypeRequest_fieldAccessorTable + .ensureFieldAccessorsInitialized( + org.xtreemfs.pbrpc.generatedinterfaces.DIR.serviceGetByTypeRequest.class, org.xtreemfs.pbrpc.generatedinterfaces.DIR.serviceGetByTypeRequest.Builder.class); + } + // Construct using org.xtreemfs.pbrpc.generatedinterfaces.DIR.serviceGetByTypeRequest.newBuilder() - private Builder() {} - - private static Builder create() { - Builder builder = new Builder(); - builder.result = new org.xtreemfs.pbrpc.generatedinterfaces.DIR.serviceGetByTypeRequest(); - return builder; + private Builder() { + maybeForceBuilderInitialization(); } - - protected org.xtreemfs.pbrpc.generatedinterfaces.DIR.serviceGetByTypeRequest internalGetResult() { - return result; + + private Builder( + com.google.protobuf.GeneratedMessage.BuilderParent parent) { + super(parent); + maybeForceBuilderInitialization(); } - - public Builder clear() { - if (result == null) { - throw new IllegalStateException( - "Cannot call clear() after build()."); + private void maybeForceBuilderInitialization() { + if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) { } - result = new org.xtreemfs.pbrpc.generatedinterfaces.DIR.serviceGetByTypeRequest(); + } + private static Builder create() { + return new Builder(); + } + + public Builder clear() { + super.clear(); + type_ = org.xtreemfs.pbrpc.generatedinterfaces.DIR.ServiceType.SERVICE_TYPE_MIXED; + bitField0_ = (bitField0_ & ~0x00000001); return this; } - + public Builder clone() { - return create().mergeFrom(result); + return create().mergeFrom(buildPartial()); } - + public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() { - return org.xtreemfs.pbrpc.generatedinterfaces.DIR.serviceGetByTypeRequest.getDescriptor(); + return org.xtreemfs.pbrpc.generatedinterfaces.DIR.internal_static_xtreemfs_pbrpc_serviceGetByTypeRequest_descriptor; } - + public org.xtreemfs.pbrpc.generatedinterfaces.DIR.serviceGetByTypeRequest getDefaultInstanceForType() { return org.xtreemfs.pbrpc.generatedinterfaces.DIR.serviceGetByTypeRequest.getDefaultInstance(); } - - public boolean isInitialized() { - return result.isInitialized(); - } + public org.xtreemfs.pbrpc.generatedinterfaces.DIR.serviceGetByTypeRequest build() { - if (result != null && !isInitialized()) { + org.xtreemfs.pbrpc.generatedinterfaces.DIR.serviceGetByTypeRequest result = buildPartial(); + if (!result.isInitialized()) { throw newUninitializedMessageException(result); } - return buildPartial(); - } - - private org.xtreemfs.pbrpc.generatedinterfaces.DIR.serviceGetByTypeRequest buildParsed() - throws com.google.protobuf.InvalidProtocolBufferException { - if (!isInitialized()) { - throw newUninitializedMessageException( - result).asInvalidProtocolBufferException(); - } - return buildPartial(); + return result; } - + public org.xtreemfs.pbrpc.generatedinterfaces.DIR.serviceGetByTypeRequest buildPartial() { - if (result == null) { - throw new IllegalStateException( - "build() has already been called on this Builder."); - } - org.xtreemfs.pbrpc.generatedinterfaces.DIR.serviceGetByTypeRequest returnMe = result; - result = null; - return returnMe; + org.xtreemfs.pbrpc.generatedinterfaces.DIR.serviceGetByTypeRequest result = new org.xtreemfs.pbrpc.generatedinterfaces.DIR.serviceGetByTypeRequest(this); + int from_bitField0_ = bitField0_; + int to_bitField0_ = 0; + if (((from_bitField0_ & 0x00000001) == 0x00000001)) { + to_bitField0_ |= 0x00000001; + } + result.type_ = type_; + result.bitField0_ = to_bitField0_; + onBuilt(); + return result; } - + public Builder mergeFrom(com.google.protobuf.Message other) { if (other instanceof org.xtreemfs.pbrpc.generatedinterfaces.DIR.serviceGetByTypeRequest) { return mergeFrom((org.xtreemfs.pbrpc.generatedinterfaces.DIR.serviceGetByTypeRequest)other); @@ -5336,7 +11322,7 @@ public final class DIR { return this; } } - + public Builder mergeFrom(org.xtreemfs.pbrpc.generatedinterfaces.DIR.serviceGetByTypeRequest other) { if (other == org.xtreemfs.pbrpc.generatedinterfaces.DIR.serviceGetByTypeRequest.getDefaultInstance()) return this; if (other.hasType()) { @@ -5345,285 +11331,479 @@ public final class DIR { this.mergeUnknownFields(other.getUnknownFields()); return this; } - + + public final boolean isInitialized() { + if (!hasType()) { + + return false; + } + return true; + } + public Builder mergeFrom( com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - com.google.protobuf.UnknownFieldSet.Builder unknownFields = - com.google.protobuf.UnknownFieldSet.newBuilder( - this.getUnknownFields()); - while (true) { - int tag = input.readTag(); - switch (tag) { - case 0: - this.setUnknownFields(unknownFields.build()); - return this; - default: { - if (!parseUnknownField(input, unknownFields, - extensionRegistry, tag)) { - this.setUnknownFields(unknownFields.build()); - return this; - } - break; - } - case 8: { - int rawValue = input.readEnum(); - org.xtreemfs.pbrpc.generatedinterfaces.DIR.ServiceType value = org.xtreemfs.pbrpc.generatedinterfaces.DIR.ServiceType.valueOf(rawValue); - if (value == null) { - unknownFields.mergeVarintField(1, rawValue); - } else { - setType(value); - } - break; - } + org.xtreemfs.pbrpc.generatedinterfaces.DIR.serviceGetByTypeRequest parsedMessage = null; + try { + parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + parsedMessage = (org.xtreemfs.pbrpc.generatedinterfaces.DIR.serviceGetByTypeRequest) e.getUnfinishedMessage(); + throw e; + } finally { + if (parsedMessage != null) { + mergeFrom(parsedMessage); } } + return this; } - - + private int bitField0_; + // required .xtreemfs.pbrpc.ServiceType type = 1; + private org.xtreemfs.pbrpc.generatedinterfaces.DIR.ServiceType type_ = org.xtreemfs.pbrpc.generatedinterfaces.DIR.ServiceType.SERVICE_TYPE_MIXED; + /** + * required .xtreemfs.pbrpc.ServiceType type = 1; + * + *
+       * Service types to search for.
+       * 
+ */ public boolean hasType() { - return result.hasType(); - } + return ((bitField0_ & 0x00000001) == 0x00000001); + } + /** + * required .xtreemfs.pbrpc.ServiceType type = 1; + * + *
+       * Service types to search for.
+       * 
+ */ public org.xtreemfs.pbrpc.generatedinterfaces.DIR.ServiceType getType() { - return result.getType(); - } + return type_; + } + /** + * required .xtreemfs.pbrpc.ServiceType type = 1; + * + *
+       * Service types to search for.
+       * 
+ */ public Builder setType(org.xtreemfs.pbrpc.generatedinterfaces.DIR.ServiceType value) { if (value == null) { throw new NullPointerException(); } - result.hasType = true; - result.type_ = value; + bitField0_ |= 0x00000001; + type_ = value; + onChanged(); return this; } + /** + * required .xtreemfs.pbrpc.ServiceType type = 1; + * + *
+       * Service types to search for.
+       * 
+ */ public Builder clearType() { - result.hasType = false; - result.type_ = org.xtreemfs.pbrpc.generatedinterfaces.DIR.ServiceType.SERVICE_TYPE_MIXED; + bitField0_ = (bitField0_ & ~0x00000001); + type_ = org.xtreemfs.pbrpc.generatedinterfaces.DIR.ServiceType.SERVICE_TYPE_MIXED; + onChanged(); return this; } - + // @@protoc_insertion_point(builder_scope:xtreemfs.pbrpc.serviceGetByTypeRequest) } - + static { defaultInstance = new serviceGetByTypeRequest(true); - org.xtreemfs.pbrpc.generatedinterfaces.DIR.internalForceInit(); defaultInstance.initFields(); } - + // @@protoc_insertion_point(class_scope:xtreemfs.pbrpc.serviceGetByTypeRequest) } - + + public interface serviceRegisterRequestOrBuilder + extends com.google.protobuf.MessageOrBuilder { + + // required .xtreemfs.pbrpc.Service service = 1; + /** + * required .xtreemfs.pbrpc.Service service = 1; + * + *
+     * Service data to be registered.
+     * Old data for the service with the same UUID is
+     * overwritten.
+     * 
+ */ + boolean hasService(); + /** + * required .xtreemfs.pbrpc.Service service = 1; + * + *
+     * Service data to be registered.
+     * Old data for the service with the same UUID is
+     * overwritten.
+     * 
+ */ + org.xtreemfs.pbrpc.generatedinterfaces.DIR.Service getService(); + /** + * required .xtreemfs.pbrpc.Service service = 1; + * + *
+     * Service data to be registered.
+     * Old data for the service with the same UUID is
+     * overwritten.
+     * 
+ */ + org.xtreemfs.pbrpc.generatedinterfaces.DIR.ServiceOrBuilder getServiceOrBuilder(); + } + /** + * Protobuf type {@code xtreemfs.pbrpc.serviceRegisterRequest} + */ public static final class serviceRegisterRequest extends - com.google.protobuf.GeneratedMessage { + com.google.protobuf.GeneratedMessage + implements serviceRegisterRequestOrBuilder { // Use serviceRegisterRequest.newBuilder() to construct. - private serviceRegisterRequest() { - initFields(); + private serviceRegisterRequest(com.google.protobuf.GeneratedMessage.Builder builder) { + super(builder); + this.unknownFields = builder.getUnknownFields(); } - private serviceRegisterRequest(boolean noInit) {} - + private serviceRegisterRequest(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); } + private static final serviceRegisterRequest defaultInstance; public static serviceRegisterRequest getDefaultInstance() { return defaultInstance; } - + public serviceRegisterRequest getDefaultInstanceForType() { return defaultInstance; } - + + private final com.google.protobuf.UnknownFieldSet unknownFields; + @java.lang.Override + public final com.google.protobuf.UnknownFieldSet + getUnknownFields() { + return this.unknownFields; + } + private serviceRegisterRequest( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + initFields(); + int mutable_bitField0_ = 0; + com.google.protobuf.UnknownFieldSet.Builder unknownFields = + com.google.protobuf.UnknownFieldSet.newBuilder(); + try { + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch (tag) { + case 0: + done = true; + break; + default: { + if (!parseUnknownField(input, unknownFields, + extensionRegistry, tag)) { + done = true; + } + break; + } + case 10: { + org.xtreemfs.pbrpc.generatedinterfaces.DIR.Service.Builder subBuilder = null; + if (((bitField0_ & 0x00000001) == 0x00000001)) { + subBuilder = service_.toBuilder(); + } + service_ = input.readMessage(org.xtreemfs.pbrpc.generatedinterfaces.DIR.Service.PARSER, extensionRegistry); + if (subBuilder != null) { + subBuilder.mergeFrom(service_); + service_ = subBuilder.buildPartial(); + } + bitField0_ |= 0x00000001; + break; + } + } + } + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(this); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException( + e.getMessage()).setUnfinishedMessage(this); + } finally { + this.unknownFields = unknownFields.build(); + makeExtensionsImmutable(); + } + } public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { return org.xtreemfs.pbrpc.generatedinterfaces.DIR.internal_static_xtreemfs_pbrpc_serviceRegisterRequest_descriptor; } - + protected com.google.protobuf.GeneratedMessage.FieldAccessorTable internalGetFieldAccessorTable() { - return org.xtreemfs.pbrpc.generatedinterfaces.DIR.internal_static_xtreemfs_pbrpc_serviceRegisterRequest_fieldAccessorTable; + return org.xtreemfs.pbrpc.generatedinterfaces.DIR.internal_static_xtreemfs_pbrpc_serviceRegisterRequest_fieldAccessorTable + .ensureFieldAccessorsInitialized( + org.xtreemfs.pbrpc.generatedinterfaces.DIR.serviceRegisterRequest.class, org.xtreemfs.pbrpc.generatedinterfaces.DIR.serviceRegisterRequest.Builder.class); + } + + public static com.google.protobuf.Parser PARSER = + new com.google.protobuf.AbstractParser() { + public serviceRegisterRequest parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return new serviceRegisterRequest(input, extensionRegistry); + } + }; + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; } - + + private int bitField0_; // required .xtreemfs.pbrpc.Service service = 1; public static final int SERVICE_FIELD_NUMBER = 1; - private boolean hasService; private org.xtreemfs.pbrpc.generatedinterfaces.DIR.Service service_; - public boolean hasService() { return hasService; } - public org.xtreemfs.pbrpc.generatedinterfaces.DIR.Service getService() { return service_; } - + /** + * required .xtreemfs.pbrpc.Service service = 1; + * + *
+     * Service data to be registered.
+     * Old data for the service with the same UUID is
+     * overwritten.
+     * 
+ */ + public boolean hasService() { + return ((bitField0_ & 0x00000001) == 0x00000001); + } + /** + * required .xtreemfs.pbrpc.Service service = 1; + * + *
+     * Service data to be registered.
+     * Old data for the service with the same UUID is
+     * overwritten.
+     * 
+ */ + public org.xtreemfs.pbrpc.generatedinterfaces.DIR.Service getService() { + return service_; + } + /** + * required .xtreemfs.pbrpc.Service service = 1; + * + *
+     * Service data to be registered.
+     * Old data for the service with the same UUID is
+     * overwritten.
+     * 
+ */ + public org.xtreemfs.pbrpc.generatedinterfaces.DIR.ServiceOrBuilder getServiceOrBuilder() { + return service_; + } + private void initFields() { service_ = org.xtreemfs.pbrpc.generatedinterfaces.DIR.Service.getDefaultInstance(); } + private byte memoizedIsInitialized = -1; public final boolean isInitialized() { - if (!hasService) return false; - if (!getService().isInitialized()) return false; + byte isInitialized = memoizedIsInitialized; + if (isInitialized != -1) return isInitialized == 1; + + if (!hasService()) { + memoizedIsInitialized = 0; + return false; + } + if (!getService().isInitialized()) { + memoizedIsInitialized = 0; + return false; + } + memoizedIsInitialized = 1; return true; } - + public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException { getSerializedSize(); - if (hasService()) { - output.writeMessage(1, getService()); + if (((bitField0_ & 0x00000001) == 0x00000001)) { + output.writeMessage(1, service_); } getUnknownFields().writeTo(output); } - + private int memoizedSerializedSize = -1; public int getSerializedSize() { int size = memoizedSerializedSize; if (size != -1) return size; - + size = 0; - if (hasService()) { + if (((bitField0_ & 0x00000001) == 0x00000001)) { size += com.google.protobuf.CodedOutputStream - .computeMessageSize(1, getService()); + .computeMessageSize(1, service_); } size += getUnknownFields().getSerializedSize(); memoizedSerializedSize = size; return size; } - + + private static final long serialVersionUID = 0L; + @java.lang.Override + protected java.lang.Object writeReplace() + throws java.io.ObjectStreamException { + return super.writeReplace(); + } + public static org.xtreemfs.pbrpc.generatedinterfaces.DIR.serviceRegisterRequest parseFrom( com.google.protobuf.ByteString data) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data).buildParsed(); + return PARSER.parseFrom(data); } public static org.xtreemfs.pbrpc.generatedinterfaces.DIR.serviceRegisterRequest parseFrom( com.google.protobuf.ByteString data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(data, extensionRegistry); } public static org.xtreemfs.pbrpc.generatedinterfaces.DIR.serviceRegisterRequest parseFrom(byte[] data) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data).buildParsed(); + return PARSER.parseFrom(data); } public static org.xtreemfs.pbrpc.generatedinterfaces.DIR.serviceRegisterRequest parseFrom( byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(data, extensionRegistry); } public static org.xtreemfs.pbrpc.generatedinterfaces.DIR.serviceRegisterRequest parseFrom(java.io.InputStream input) throws java.io.IOException { - return newBuilder().mergeFrom(input).buildParsed(); + return PARSER.parseFrom(input); } public static org.xtreemfs.pbrpc.generatedinterfaces.DIR.serviceRegisterRequest parseFrom( java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - return newBuilder().mergeFrom(input, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(input, extensionRegistry); } public static org.xtreemfs.pbrpc.generatedinterfaces.DIR.serviceRegisterRequest parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException { - Builder builder = newBuilder(); - if (builder.mergeDelimitedFrom(input)) { - return builder.buildParsed(); - } else { - return null; - } + return PARSER.parseDelimitedFrom(input); } public static org.xtreemfs.pbrpc.generatedinterfaces.DIR.serviceRegisterRequest parseDelimitedFrom( java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - Builder builder = newBuilder(); - if (builder.mergeDelimitedFrom(input, extensionRegistry)) { - return builder.buildParsed(); - } else { - return null; - } + return PARSER.parseDelimitedFrom(input, extensionRegistry); } public static org.xtreemfs.pbrpc.generatedinterfaces.DIR.serviceRegisterRequest parseFrom( com.google.protobuf.CodedInputStream input) throws java.io.IOException { - return newBuilder().mergeFrom(input).buildParsed(); + return PARSER.parseFrom(input); } public static org.xtreemfs.pbrpc.generatedinterfaces.DIR.serviceRegisterRequest parseFrom( com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - return newBuilder().mergeFrom(input, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(input, extensionRegistry); } - + public static Builder newBuilder() { return Builder.create(); } public Builder newBuilderForType() { return newBuilder(); } public static Builder newBuilder(org.xtreemfs.pbrpc.generatedinterfaces.DIR.serviceRegisterRequest prototype) { return newBuilder().mergeFrom(prototype); } public Builder toBuilder() { return newBuilder(this); } - + + @java.lang.Override + protected Builder newBuilderForType( + com.google.protobuf.GeneratedMessage.BuilderParent parent) { + Builder builder = new Builder(parent); + return builder; + } + /** + * Protobuf type {@code xtreemfs.pbrpc.serviceRegisterRequest} + */ public static final class Builder extends - com.google.protobuf.GeneratedMessage.Builder { - private org.xtreemfs.pbrpc.generatedinterfaces.DIR.serviceRegisterRequest result; - + com.google.protobuf.GeneratedMessage.Builder + implements org.xtreemfs.pbrpc.generatedinterfaces.DIR.serviceRegisterRequestOrBuilder { + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return org.xtreemfs.pbrpc.generatedinterfaces.DIR.internal_static_xtreemfs_pbrpc_serviceRegisterRequest_descriptor; + } + + protected com.google.protobuf.GeneratedMessage.FieldAccessorTable + internalGetFieldAccessorTable() { + return org.xtreemfs.pbrpc.generatedinterfaces.DIR.internal_static_xtreemfs_pbrpc_serviceRegisterRequest_fieldAccessorTable + .ensureFieldAccessorsInitialized( + org.xtreemfs.pbrpc.generatedinterfaces.DIR.serviceRegisterRequest.class, org.xtreemfs.pbrpc.generatedinterfaces.DIR.serviceRegisterRequest.Builder.class); + } + // Construct using org.xtreemfs.pbrpc.generatedinterfaces.DIR.serviceRegisterRequest.newBuilder() - private Builder() {} - - private static Builder create() { - Builder builder = new Builder(); - builder.result = new org.xtreemfs.pbrpc.generatedinterfaces.DIR.serviceRegisterRequest(); - return builder; + private Builder() { + maybeForceBuilderInitialization(); } - - protected org.xtreemfs.pbrpc.generatedinterfaces.DIR.serviceRegisterRequest internalGetResult() { - return result; + + private Builder( + com.google.protobuf.GeneratedMessage.BuilderParent parent) { + super(parent); + maybeForceBuilderInitialization(); } - + private void maybeForceBuilderInitialization() { + if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) { + getServiceFieldBuilder(); + } + } + private static Builder create() { + return new Builder(); + } + public Builder clear() { - if (result == null) { - throw new IllegalStateException( - "Cannot call clear() after build()."); + super.clear(); + if (serviceBuilder_ == null) { + service_ = org.xtreemfs.pbrpc.generatedinterfaces.DIR.Service.getDefaultInstance(); + } else { + serviceBuilder_.clear(); } - result = new org.xtreemfs.pbrpc.generatedinterfaces.DIR.serviceRegisterRequest(); + bitField0_ = (bitField0_ & ~0x00000001); return this; } - + public Builder clone() { - return create().mergeFrom(result); + return create().mergeFrom(buildPartial()); } - + public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() { - return org.xtreemfs.pbrpc.generatedinterfaces.DIR.serviceRegisterRequest.getDescriptor(); + return org.xtreemfs.pbrpc.generatedinterfaces.DIR.internal_static_xtreemfs_pbrpc_serviceRegisterRequest_descriptor; } - + public org.xtreemfs.pbrpc.generatedinterfaces.DIR.serviceRegisterRequest getDefaultInstanceForType() { return org.xtreemfs.pbrpc.generatedinterfaces.DIR.serviceRegisterRequest.getDefaultInstance(); } - - public boolean isInitialized() { - return result.isInitialized(); - } + public org.xtreemfs.pbrpc.generatedinterfaces.DIR.serviceRegisterRequest build() { - if (result != null && !isInitialized()) { + org.xtreemfs.pbrpc.generatedinterfaces.DIR.serviceRegisterRequest result = buildPartial(); + if (!result.isInitialized()) { throw newUninitializedMessageException(result); } - return buildPartial(); - } - - private org.xtreemfs.pbrpc.generatedinterfaces.DIR.serviceRegisterRequest buildParsed() - throws com.google.protobuf.InvalidProtocolBufferException { - if (!isInitialized()) { - throw newUninitializedMessageException( - result).asInvalidProtocolBufferException(); - } - return buildPartial(); + return result; } - + public org.xtreemfs.pbrpc.generatedinterfaces.DIR.serviceRegisterRequest buildPartial() { - if (result == null) { - throw new IllegalStateException( - "build() has already been called on this Builder."); + org.xtreemfs.pbrpc.generatedinterfaces.DIR.serviceRegisterRequest result = new org.xtreemfs.pbrpc.generatedinterfaces.DIR.serviceRegisterRequest(this); + int from_bitField0_ = bitField0_; + int to_bitField0_ = 0; + if (((from_bitField0_ & 0x00000001) == 0x00000001)) { + to_bitField0_ |= 0x00000001; + } + if (serviceBuilder_ == null) { + result.service_ = service_; + } else { + result.service_ = serviceBuilder_.build(); } - org.xtreemfs.pbrpc.generatedinterfaces.DIR.serviceRegisterRequest returnMe = result; - result = null; - return returnMe; + result.bitField0_ = to_bitField0_; + onBuilt(); + return result; } - + public Builder mergeFrom(com.google.protobuf.Message other) { if (other instanceof org.xtreemfs.pbrpc.generatedinterfaces.DIR.serviceRegisterRequest) { return mergeFrom((org.xtreemfs.pbrpc.generatedinterfaces.DIR.serviceRegisterRequest)other); @@ -5632,7 +11812,7 @@ public final class DIR { return this; } } - + public Builder mergeFrom(org.xtreemfs.pbrpc.generatedinterfaces.DIR.serviceRegisterRequest other) { if (other == org.xtreemfs.pbrpc.generatedinterfaces.DIR.serviceRegisterRequest.getDefaultInstance()) return this; if (other.hasService()) { @@ -5641,298 +11821,551 @@ public final class DIR { this.mergeUnknownFields(other.getUnknownFields()); return this; } - + + public final boolean isInitialized() { + if (!hasService()) { + + return false; + } + if (!getService().isInitialized()) { + + return false; + } + return true; + } + public Builder mergeFrom( com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - com.google.protobuf.UnknownFieldSet.Builder unknownFields = - com.google.protobuf.UnknownFieldSet.newBuilder( - this.getUnknownFields()); - while (true) { - int tag = input.readTag(); - switch (tag) { - case 0: - this.setUnknownFields(unknownFields.build()); - return this; - default: { - if (!parseUnknownField(input, unknownFields, - extensionRegistry, tag)) { - this.setUnknownFields(unknownFields.build()); - return this; - } - break; - } - case 10: { - org.xtreemfs.pbrpc.generatedinterfaces.DIR.Service.Builder subBuilder = org.xtreemfs.pbrpc.generatedinterfaces.DIR.Service.newBuilder(); - if (hasService()) { - subBuilder.mergeFrom(getService()); - } - input.readMessage(subBuilder, extensionRegistry); - setService(subBuilder.buildPartial()); - break; - } + org.xtreemfs.pbrpc.generatedinterfaces.DIR.serviceRegisterRequest parsedMessage = null; + try { + parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + parsedMessage = (org.xtreemfs.pbrpc.generatedinterfaces.DIR.serviceRegisterRequest) e.getUnfinishedMessage(); + throw e; + } finally { + if (parsedMessage != null) { + mergeFrom(parsedMessage); } } + return this; } - - + private int bitField0_; + // required .xtreemfs.pbrpc.Service service = 1; + private org.xtreemfs.pbrpc.generatedinterfaces.DIR.Service service_ = org.xtreemfs.pbrpc.generatedinterfaces.DIR.Service.getDefaultInstance(); + private com.google.protobuf.SingleFieldBuilder< + org.xtreemfs.pbrpc.generatedinterfaces.DIR.Service, org.xtreemfs.pbrpc.generatedinterfaces.DIR.Service.Builder, org.xtreemfs.pbrpc.generatedinterfaces.DIR.ServiceOrBuilder> serviceBuilder_; + /** + * required .xtreemfs.pbrpc.Service service = 1; + * + *
+       * Service data to be registered.
+       * Old data for the service with the same UUID is
+       * overwritten.
+       * 
+ */ public boolean hasService() { - return result.hasService(); - } + return ((bitField0_ & 0x00000001) == 0x00000001); + } + /** + * required .xtreemfs.pbrpc.Service service = 1; + * + *
+       * Service data to be registered.
+       * Old data for the service with the same UUID is
+       * overwritten.
+       * 
+ */ public org.xtreemfs.pbrpc.generatedinterfaces.DIR.Service getService() { - return result.getService(); - } + if (serviceBuilder_ == null) { + return service_; + } else { + return serviceBuilder_.getMessage(); + } + } + /** + * required .xtreemfs.pbrpc.Service service = 1; + * + *
+       * Service data to be registered.
+       * Old data for the service with the same UUID is
+       * overwritten.
+       * 
+ */ public Builder setService(org.xtreemfs.pbrpc.generatedinterfaces.DIR.Service value) { - if (value == null) { - throw new NullPointerException(); + if (serviceBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + service_ = value; + onChanged(); + } else { + serviceBuilder_.setMessage(value); + } + bitField0_ |= 0x00000001; + return this; + } + /** + * required .xtreemfs.pbrpc.Service service = 1; + * + *
+       * Service data to be registered.
+       * Old data for the service with the same UUID is
+       * overwritten.
+       * 
+ */ + public Builder setService( + org.xtreemfs.pbrpc.generatedinterfaces.DIR.Service.Builder builderForValue) { + if (serviceBuilder_ == null) { + service_ = builderForValue.build(); + onChanged(); + } else { + serviceBuilder_.setMessage(builderForValue.build()); } - result.hasService = true; - result.service_ = value; - return this; - } - public Builder setService(org.xtreemfs.pbrpc.generatedinterfaces.DIR.Service.Builder builderForValue) { - result.hasService = true; - result.service_ = builderForValue.build(); + bitField0_ |= 0x00000001; return this; } + /** + * required .xtreemfs.pbrpc.Service service = 1; + * + *
+       * Service data to be registered.
+       * Old data for the service with the same UUID is
+       * overwritten.
+       * 
+ */ public Builder mergeService(org.xtreemfs.pbrpc.generatedinterfaces.DIR.Service value) { - if (result.hasService() && - result.service_ != org.xtreemfs.pbrpc.generatedinterfaces.DIR.Service.getDefaultInstance()) { - result.service_ = - org.xtreemfs.pbrpc.generatedinterfaces.DIR.Service.newBuilder(result.service_).mergeFrom(value).buildPartial(); + if (serviceBuilder_ == null) { + if (((bitField0_ & 0x00000001) == 0x00000001) && + service_ != org.xtreemfs.pbrpc.generatedinterfaces.DIR.Service.getDefaultInstance()) { + service_ = + org.xtreemfs.pbrpc.generatedinterfaces.DIR.Service.newBuilder(service_).mergeFrom(value).buildPartial(); + } else { + service_ = value; + } + onChanged(); } else { - result.service_ = value; + serviceBuilder_.mergeFrom(value); } - result.hasService = true; + bitField0_ |= 0x00000001; return this; } + /** + * required .xtreemfs.pbrpc.Service service = 1; + * + *
+       * Service data to be registered.
+       * Old data for the service with the same UUID is
+       * overwritten.
+       * 
+ */ public Builder clearService() { - result.hasService = false; - result.service_ = org.xtreemfs.pbrpc.generatedinterfaces.DIR.Service.getDefaultInstance(); - return this; + if (serviceBuilder_ == null) { + service_ = org.xtreemfs.pbrpc.generatedinterfaces.DIR.Service.getDefaultInstance(); + onChanged(); + } else { + serviceBuilder_.clear(); + } + bitField0_ = (bitField0_ & ~0x00000001); + return this; + } + /** + * required .xtreemfs.pbrpc.Service service = 1; + * + *
+       * Service data to be registered.
+       * Old data for the service with the same UUID is
+       * overwritten.
+       * 
+ */ + public org.xtreemfs.pbrpc.generatedinterfaces.DIR.Service.Builder getServiceBuilder() { + bitField0_ |= 0x00000001; + onChanged(); + return getServiceFieldBuilder().getBuilder(); + } + /** + * required .xtreemfs.pbrpc.Service service = 1; + * + *
+       * Service data to be registered.
+       * Old data for the service with the same UUID is
+       * overwritten.
+       * 
+ */ + public org.xtreemfs.pbrpc.generatedinterfaces.DIR.ServiceOrBuilder getServiceOrBuilder() { + if (serviceBuilder_ != null) { + return serviceBuilder_.getMessageOrBuilder(); + } else { + return service_; + } + } + /** + * required .xtreemfs.pbrpc.Service service = 1; + * + *
+       * Service data to be registered.
+       * Old data for the service with the same UUID is
+       * overwritten.
+       * 
+ */ + private com.google.protobuf.SingleFieldBuilder< + org.xtreemfs.pbrpc.generatedinterfaces.DIR.Service, org.xtreemfs.pbrpc.generatedinterfaces.DIR.Service.Builder, org.xtreemfs.pbrpc.generatedinterfaces.DIR.ServiceOrBuilder> + getServiceFieldBuilder() { + if (serviceBuilder_ == null) { + serviceBuilder_ = new com.google.protobuf.SingleFieldBuilder< + org.xtreemfs.pbrpc.generatedinterfaces.DIR.Service, org.xtreemfs.pbrpc.generatedinterfaces.DIR.Service.Builder, org.xtreemfs.pbrpc.generatedinterfaces.DIR.ServiceOrBuilder>( + service_, + getParentForChildren(), + isClean()); + service_ = null; + } + return serviceBuilder_; } - + // @@protoc_insertion_point(builder_scope:xtreemfs.pbrpc.serviceRegisterRequest) } - + static { defaultInstance = new serviceRegisterRequest(true); - org.xtreemfs.pbrpc.generatedinterfaces.DIR.internalForceInit(); defaultInstance.initFields(); } - + // @@protoc_insertion_point(class_scope:xtreemfs.pbrpc.serviceRegisterRequest) } - + + public interface serviceRegisterResponseOrBuilder + extends com.google.protobuf.MessageOrBuilder { + + // required fixed64 new_version = 1; + /** + * required fixed64 new_version = 1; + * + *
+     * New version assigned to the service record by the DIR.
+     * 
+ */ + boolean hasNewVersion(); + /** + * required fixed64 new_version = 1; + * + *
+     * New version assigned to the service record by the DIR.
+     * 
+ */ + long getNewVersion(); + } + /** + * Protobuf type {@code xtreemfs.pbrpc.serviceRegisterResponse} + */ public static final class serviceRegisterResponse extends - com.google.protobuf.GeneratedMessage { + com.google.protobuf.GeneratedMessage + implements serviceRegisterResponseOrBuilder { // Use serviceRegisterResponse.newBuilder() to construct. - private serviceRegisterResponse() { - initFields(); + private serviceRegisterResponse(com.google.protobuf.GeneratedMessage.Builder builder) { + super(builder); + this.unknownFields = builder.getUnknownFields(); } - private serviceRegisterResponse(boolean noInit) {} - + private serviceRegisterResponse(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); } + private static final serviceRegisterResponse defaultInstance; public static serviceRegisterResponse getDefaultInstance() { return defaultInstance; } - + public serviceRegisterResponse getDefaultInstanceForType() { return defaultInstance; } - + + private final com.google.protobuf.UnknownFieldSet unknownFields; + @java.lang.Override + public final com.google.protobuf.UnknownFieldSet + getUnknownFields() { + return this.unknownFields; + } + private serviceRegisterResponse( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + initFields(); + int mutable_bitField0_ = 0; + com.google.protobuf.UnknownFieldSet.Builder unknownFields = + com.google.protobuf.UnknownFieldSet.newBuilder(); + try { + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch (tag) { + case 0: + done = true; + break; + default: { + if (!parseUnknownField(input, unknownFields, + extensionRegistry, tag)) { + done = true; + } + break; + } + case 9: { + bitField0_ |= 0x00000001; + newVersion_ = input.readFixed64(); + break; + } + } + } + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(this); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException( + e.getMessage()).setUnfinishedMessage(this); + } finally { + this.unknownFields = unknownFields.build(); + makeExtensionsImmutable(); + } + } public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { return org.xtreemfs.pbrpc.generatedinterfaces.DIR.internal_static_xtreemfs_pbrpc_serviceRegisterResponse_descriptor; } - + protected com.google.protobuf.GeneratedMessage.FieldAccessorTable internalGetFieldAccessorTable() { - return org.xtreemfs.pbrpc.generatedinterfaces.DIR.internal_static_xtreemfs_pbrpc_serviceRegisterResponse_fieldAccessorTable; + return org.xtreemfs.pbrpc.generatedinterfaces.DIR.internal_static_xtreemfs_pbrpc_serviceRegisterResponse_fieldAccessorTable + .ensureFieldAccessorsInitialized( + org.xtreemfs.pbrpc.generatedinterfaces.DIR.serviceRegisterResponse.class, org.xtreemfs.pbrpc.generatedinterfaces.DIR.serviceRegisterResponse.Builder.class); + } + + public static com.google.protobuf.Parser PARSER = + new com.google.protobuf.AbstractParser() { + public serviceRegisterResponse parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return new serviceRegisterResponse(input, extensionRegistry); + } + }; + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; } - + + private int bitField0_; // required fixed64 new_version = 1; public static final int NEW_VERSION_FIELD_NUMBER = 1; - private boolean hasNewVersion; - private long newVersion_ = 0L; - public boolean hasNewVersion() { return hasNewVersion; } - public long getNewVersion() { return newVersion_; } - + private long newVersion_; + /** + * required fixed64 new_version = 1; + * + *
+     * New version assigned to the service record by the DIR.
+     * 
+ */ + public boolean hasNewVersion() { + return ((bitField0_ & 0x00000001) == 0x00000001); + } + /** + * required fixed64 new_version = 1; + * + *
+     * New version assigned to the service record by the DIR.
+     * 
+ */ + public long getNewVersion() { + return newVersion_; + } + private void initFields() { + newVersion_ = 0L; } + private byte memoizedIsInitialized = -1; public final boolean isInitialized() { - if (!hasNewVersion) return false; + byte isInitialized = memoizedIsInitialized; + if (isInitialized != -1) return isInitialized == 1; + + if (!hasNewVersion()) { + memoizedIsInitialized = 0; + return false; + } + memoizedIsInitialized = 1; return true; } - + public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException { getSerializedSize(); - if (hasNewVersion()) { - output.writeFixed64(1, getNewVersion()); + if (((bitField0_ & 0x00000001) == 0x00000001)) { + output.writeFixed64(1, newVersion_); } getUnknownFields().writeTo(output); } - + private int memoizedSerializedSize = -1; public int getSerializedSize() { int size = memoizedSerializedSize; if (size != -1) return size; - + size = 0; - if (hasNewVersion()) { + if (((bitField0_ & 0x00000001) == 0x00000001)) { size += com.google.protobuf.CodedOutputStream - .computeFixed64Size(1, getNewVersion()); + .computeFixed64Size(1, newVersion_); } size += getUnknownFields().getSerializedSize(); memoizedSerializedSize = size; return size; } - + + private static final long serialVersionUID = 0L; + @java.lang.Override + protected java.lang.Object writeReplace() + throws java.io.ObjectStreamException { + return super.writeReplace(); + } + public static org.xtreemfs.pbrpc.generatedinterfaces.DIR.serviceRegisterResponse parseFrom( com.google.protobuf.ByteString data) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data).buildParsed(); + return PARSER.parseFrom(data); } public static org.xtreemfs.pbrpc.generatedinterfaces.DIR.serviceRegisterResponse parseFrom( com.google.protobuf.ByteString data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(data, extensionRegistry); } public static org.xtreemfs.pbrpc.generatedinterfaces.DIR.serviceRegisterResponse parseFrom(byte[] data) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data).buildParsed(); + return PARSER.parseFrom(data); } public static org.xtreemfs.pbrpc.generatedinterfaces.DIR.serviceRegisterResponse parseFrom( byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(data, extensionRegistry); } public static org.xtreemfs.pbrpc.generatedinterfaces.DIR.serviceRegisterResponse parseFrom(java.io.InputStream input) throws java.io.IOException { - return newBuilder().mergeFrom(input).buildParsed(); + return PARSER.parseFrom(input); } public static org.xtreemfs.pbrpc.generatedinterfaces.DIR.serviceRegisterResponse parseFrom( java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - return newBuilder().mergeFrom(input, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(input, extensionRegistry); } public static org.xtreemfs.pbrpc.generatedinterfaces.DIR.serviceRegisterResponse parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException { - Builder builder = newBuilder(); - if (builder.mergeDelimitedFrom(input)) { - return builder.buildParsed(); - } else { - return null; - } + return PARSER.parseDelimitedFrom(input); } public static org.xtreemfs.pbrpc.generatedinterfaces.DIR.serviceRegisterResponse parseDelimitedFrom( java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - Builder builder = newBuilder(); - if (builder.mergeDelimitedFrom(input, extensionRegistry)) { - return builder.buildParsed(); - } else { - return null; - } + return PARSER.parseDelimitedFrom(input, extensionRegistry); } public static org.xtreemfs.pbrpc.generatedinterfaces.DIR.serviceRegisterResponse parseFrom( com.google.protobuf.CodedInputStream input) throws java.io.IOException { - return newBuilder().mergeFrom(input).buildParsed(); + return PARSER.parseFrom(input); } public static org.xtreemfs.pbrpc.generatedinterfaces.DIR.serviceRegisterResponse parseFrom( com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - return newBuilder().mergeFrom(input, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(input, extensionRegistry); } - + public static Builder newBuilder() { return Builder.create(); } public Builder newBuilderForType() { return newBuilder(); } public static Builder newBuilder(org.xtreemfs.pbrpc.generatedinterfaces.DIR.serviceRegisterResponse prototype) { return newBuilder().mergeFrom(prototype); } public Builder toBuilder() { return newBuilder(this); } - + + @java.lang.Override + protected Builder newBuilderForType( + com.google.protobuf.GeneratedMessage.BuilderParent parent) { + Builder builder = new Builder(parent); + return builder; + } + /** + * Protobuf type {@code xtreemfs.pbrpc.serviceRegisterResponse} + */ public static final class Builder extends - com.google.protobuf.GeneratedMessage.Builder { - private org.xtreemfs.pbrpc.generatedinterfaces.DIR.serviceRegisterResponse result; - + com.google.protobuf.GeneratedMessage.Builder + implements org.xtreemfs.pbrpc.generatedinterfaces.DIR.serviceRegisterResponseOrBuilder { + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return org.xtreemfs.pbrpc.generatedinterfaces.DIR.internal_static_xtreemfs_pbrpc_serviceRegisterResponse_descriptor; + } + + protected com.google.protobuf.GeneratedMessage.FieldAccessorTable + internalGetFieldAccessorTable() { + return org.xtreemfs.pbrpc.generatedinterfaces.DIR.internal_static_xtreemfs_pbrpc_serviceRegisterResponse_fieldAccessorTable + .ensureFieldAccessorsInitialized( + org.xtreemfs.pbrpc.generatedinterfaces.DIR.serviceRegisterResponse.class, org.xtreemfs.pbrpc.generatedinterfaces.DIR.serviceRegisterResponse.Builder.class); + } + // Construct using org.xtreemfs.pbrpc.generatedinterfaces.DIR.serviceRegisterResponse.newBuilder() - private Builder() {} - - private static Builder create() { - Builder builder = new Builder(); - builder.result = new org.xtreemfs.pbrpc.generatedinterfaces.DIR.serviceRegisterResponse(); - return builder; + private Builder() { + maybeForceBuilderInitialization(); } - - protected org.xtreemfs.pbrpc.generatedinterfaces.DIR.serviceRegisterResponse internalGetResult() { - return result; + + private Builder( + com.google.protobuf.GeneratedMessage.BuilderParent parent) { + super(parent); + maybeForceBuilderInitialization(); } - - public Builder clear() { - if (result == null) { - throw new IllegalStateException( - "Cannot call clear() after build()."); + private void maybeForceBuilderInitialization() { + if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) { } - result = new org.xtreemfs.pbrpc.generatedinterfaces.DIR.serviceRegisterResponse(); + } + private static Builder create() { + return new Builder(); + } + + public Builder clear() { + super.clear(); + newVersion_ = 0L; + bitField0_ = (bitField0_ & ~0x00000001); return this; } - + public Builder clone() { - return create().mergeFrom(result); + return create().mergeFrom(buildPartial()); } - + public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() { - return org.xtreemfs.pbrpc.generatedinterfaces.DIR.serviceRegisterResponse.getDescriptor(); + return org.xtreemfs.pbrpc.generatedinterfaces.DIR.internal_static_xtreemfs_pbrpc_serviceRegisterResponse_descriptor; } - + public org.xtreemfs.pbrpc.generatedinterfaces.DIR.serviceRegisterResponse getDefaultInstanceForType() { return org.xtreemfs.pbrpc.generatedinterfaces.DIR.serviceRegisterResponse.getDefaultInstance(); } - - public boolean isInitialized() { - return result.isInitialized(); - } + public org.xtreemfs.pbrpc.generatedinterfaces.DIR.serviceRegisterResponse build() { - if (result != null && !isInitialized()) { + org.xtreemfs.pbrpc.generatedinterfaces.DIR.serviceRegisterResponse result = buildPartial(); + if (!result.isInitialized()) { throw newUninitializedMessageException(result); } - return buildPartial(); - } - - private org.xtreemfs.pbrpc.generatedinterfaces.DIR.serviceRegisterResponse buildParsed() - throws com.google.protobuf.InvalidProtocolBufferException { - if (!isInitialized()) { - throw newUninitializedMessageException( - result).asInvalidProtocolBufferException(); - } - return buildPartial(); + return result; } - + public org.xtreemfs.pbrpc.generatedinterfaces.DIR.serviceRegisterResponse buildPartial() { - if (result == null) { - throw new IllegalStateException( - "build() has already been called on this Builder."); - } - org.xtreemfs.pbrpc.generatedinterfaces.DIR.serviceRegisterResponse returnMe = result; - result = null; - return returnMe; + org.xtreemfs.pbrpc.generatedinterfaces.DIR.serviceRegisterResponse result = new org.xtreemfs.pbrpc.generatedinterfaces.DIR.serviceRegisterResponse(this); + int from_bitField0_ = bitField0_; + int to_bitField0_ = 0; + if (((from_bitField0_ & 0x00000001) == 0x00000001)) { + to_bitField0_ |= 0x00000001; + } + result.newVersion_ = newVersion_; + result.bitField0_ = to_bitField0_; + onBuilt(); + return result; } - + public Builder mergeFrom(com.google.protobuf.Message other) { if (other instanceof org.xtreemfs.pbrpc.generatedinterfaces.DIR.serviceRegisterResponse) { return mergeFrom((org.xtreemfs.pbrpc.generatedinterfaces.DIR.serviceRegisterResponse)other); @@ -5941,7 +12374,7 @@ public final class DIR { return this; } } - + public Builder mergeFrom(org.xtreemfs.pbrpc.generatedinterfaces.DIR.serviceRegisterResponse other) { if (other == org.xtreemfs.pbrpc.generatedinterfaces.DIR.serviceRegisterResponse.getDefaultInstance()) return this; if (other.hasNewVersion()) { @@ -5950,274 +12383,465 @@ public final class DIR { this.mergeUnknownFields(other.getUnknownFields()); return this; } - + + public final boolean isInitialized() { + if (!hasNewVersion()) { + + return false; + } + return true; + } + public Builder mergeFrom( com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - com.google.protobuf.UnknownFieldSet.Builder unknownFields = - com.google.protobuf.UnknownFieldSet.newBuilder( - this.getUnknownFields()); - while (true) { - int tag = input.readTag(); - switch (tag) { - case 0: - this.setUnknownFields(unknownFields.build()); - return this; - default: { - if (!parseUnknownField(input, unknownFields, - extensionRegistry, tag)) { - this.setUnknownFields(unknownFields.build()); - return this; - } - break; - } - case 9: { - setNewVersion(input.readFixed64()); - break; - } + org.xtreemfs.pbrpc.generatedinterfaces.DIR.serviceRegisterResponse parsedMessage = null; + try { + parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + parsedMessage = (org.xtreemfs.pbrpc.generatedinterfaces.DIR.serviceRegisterResponse) e.getUnfinishedMessage(); + throw e; + } finally { + if (parsedMessage != null) { + mergeFrom(parsedMessage); } } + return this; } - - + private int bitField0_; + // required fixed64 new_version = 1; + private long newVersion_ ; + /** + * required fixed64 new_version = 1; + * + *
+       * New version assigned to the service record by the DIR.
+       * 
+ */ public boolean hasNewVersion() { - return result.hasNewVersion(); - } + return ((bitField0_ & 0x00000001) == 0x00000001); + } + /** + * required fixed64 new_version = 1; + * + *
+       * New version assigned to the service record by the DIR.
+       * 
+ */ public long getNewVersion() { - return result.getNewVersion(); - } + return newVersion_; + } + /** + * required fixed64 new_version = 1; + * + *
+       * New version assigned to the service record by the DIR.
+       * 
+ */ public Builder setNewVersion(long value) { - result.hasNewVersion = true; - result.newVersion_ = value; - return this; - } + bitField0_ |= 0x00000001; + newVersion_ = value; + onChanged(); + return this; + } + /** + * required fixed64 new_version = 1; + * + *
+       * New version assigned to the service record by the DIR.
+       * 
+ */ public Builder clearNewVersion() { - result.hasNewVersion = false; - result.newVersion_ = 0L; + bitField0_ = (bitField0_ & ~0x00000001); + newVersion_ = 0L; + onChanged(); return this; } - + // @@protoc_insertion_point(builder_scope:xtreemfs.pbrpc.serviceRegisterResponse) } - + static { defaultInstance = new serviceRegisterResponse(true); - org.xtreemfs.pbrpc.generatedinterfaces.DIR.internalForceInit(); defaultInstance.initFields(); } - + // @@protoc_insertion_point(class_scope:xtreemfs.pbrpc.serviceRegisterResponse) } - + + public interface configurationGetRequestOrBuilder + extends com.google.protobuf.MessageOrBuilder { + + // required string uuid = 1; + /** + * required string uuid = 1; + * + *
+     * UUID of the servic for which the configuration is requested.
+     * 
+ */ + boolean hasUuid(); + /** + * required string uuid = 1; + * + *
+     * UUID of the servic for which the configuration is requested.
+     * 
+ */ + java.lang.String getUuid(); + /** + * required string uuid = 1; + * + *
+     * UUID of the servic for which the configuration is requested.
+     * 
+ */ + com.google.protobuf.ByteString + getUuidBytes(); + } + /** + * Protobuf type {@code xtreemfs.pbrpc.configurationGetRequest} + */ public static final class configurationGetRequest extends - com.google.protobuf.GeneratedMessage { + com.google.protobuf.GeneratedMessage + implements configurationGetRequestOrBuilder { // Use configurationGetRequest.newBuilder() to construct. - private configurationGetRequest() { - initFields(); + private configurationGetRequest(com.google.protobuf.GeneratedMessage.Builder builder) { + super(builder); + this.unknownFields = builder.getUnknownFields(); } - private configurationGetRequest(boolean noInit) {} - + private configurationGetRequest(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); } + private static final configurationGetRequest defaultInstance; public static configurationGetRequest getDefaultInstance() { return defaultInstance; } - + public configurationGetRequest getDefaultInstanceForType() { return defaultInstance; } - + + private final com.google.protobuf.UnknownFieldSet unknownFields; + @java.lang.Override + public final com.google.protobuf.UnknownFieldSet + getUnknownFields() { + return this.unknownFields; + } + private configurationGetRequest( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + initFields(); + int mutable_bitField0_ = 0; + com.google.protobuf.UnknownFieldSet.Builder unknownFields = + com.google.protobuf.UnknownFieldSet.newBuilder(); + try { + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch (tag) { + case 0: + done = true; + break; + default: { + if (!parseUnknownField(input, unknownFields, + extensionRegistry, tag)) { + done = true; + } + break; + } + case 10: { + bitField0_ |= 0x00000001; + uuid_ = input.readBytes(); + break; + } + } + } + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(this); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException( + e.getMessage()).setUnfinishedMessage(this); + } finally { + this.unknownFields = unknownFields.build(); + makeExtensionsImmutable(); + } + } public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { return org.xtreemfs.pbrpc.generatedinterfaces.DIR.internal_static_xtreemfs_pbrpc_configurationGetRequest_descriptor; } - + protected com.google.protobuf.GeneratedMessage.FieldAccessorTable internalGetFieldAccessorTable() { - return org.xtreemfs.pbrpc.generatedinterfaces.DIR.internal_static_xtreemfs_pbrpc_configurationGetRequest_fieldAccessorTable; + return org.xtreemfs.pbrpc.generatedinterfaces.DIR.internal_static_xtreemfs_pbrpc_configurationGetRequest_fieldAccessorTable + .ensureFieldAccessorsInitialized( + org.xtreemfs.pbrpc.generatedinterfaces.DIR.configurationGetRequest.class, org.xtreemfs.pbrpc.generatedinterfaces.DIR.configurationGetRequest.Builder.class); + } + + public static com.google.protobuf.Parser PARSER = + new com.google.protobuf.AbstractParser() { + public configurationGetRequest parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return new configurationGetRequest(input, extensionRegistry); + } + }; + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; } - + + private int bitField0_; // required string uuid = 1; public static final int UUID_FIELD_NUMBER = 1; - private boolean hasUuid; - private java.lang.String uuid_ = ""; - public boolean hasUuid() { return hasUuid; } - public java.lang.String getUuid() { return uuid_; } - + private java.lang.Object uuid_; + /** + * required string uuid = 1; + * + *
+     * UUID of the servic for which the configuration is requested.
+     * 
+ */ + public boolean hasUuid() { + return ((bitField0_ & 0x00000001) == 0x00000001); + } + /** + * required string uuid = 1; + * + *
+     * UUID of the servic for which the configuration is requested.
+     * 
+ */ + public java.lang.String getUuid() { + java.lang.Object ref = uuid_; + if (ref instanceof java.lang.String) { + return (java.lang.String) ref; + } else { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + if (bs.isValidUtf8()) { + uuid_ = s; + } + return s; + } + } + /** + * required string uuid = 1; + * + *
+     * UUID of the servic for which the configuration is requested.
+     * 
+ */ + public com.google.protobuf.ByteString + getUuidBytes() { + java.lang.Object ref = uuid_; + if (ref instanceof java.lang.String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + uuid_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + private void initFields() { + uuid_ = ""; } + private byte memoizedIsInitialized = -1; public final boolean isInitialized() { - if (!hasUuid) return false; + byte isInitialized = memoizedIsInitialized; + if (isInitialized != -1) return isInitialized == 1; + + if (!hasUuid()) { + memoizedIsInitialized = 0; + return false; + } + memoizedIsInitialized = 1; return true; } - + public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException { getSerializedSize(); - if (hasUuid()) { - output.writeString(1, getUuid()); + if (((bitField0_ & 0x00000001) == 0x00000001)) { + output.writeBytes(1, getUuidBytes()); } getUnknownFields().writeTo(output); } - + private int memoizedSerializedSize = -1; public int getSerializedSize() { int size = memoizedSerializedSize; if (size != -1) return size; - + size = 0; - if (hasUuid()) { + if (((bitField0_ & 0x00000001) == 0x00000001)) { size += com.google.protobuf.CodedOutputStream - .computeStringSize(1, getUuid()); + .computeBytesSize(1, getUuidBytes()); } size += getUnknownFields().getSerializedSize(); memoizedSerializedSize = size; return size; } - + + private static final long serialVersionUID = 0L; + @java.lang.Override + protected java.lang.Object writeReplace() + throws java.io.ObjectStreamException { + return super.writeReplace(); + } + public static org.xtreemfs.pbrpc.generatedinterfaces.DIR.configurationGetRequest parseFrom( com.google.protobuf.ByteString data) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data).buildParsed(); + return PARSER.parseFrom(data); } public static org.xtreemfs.pbrpc.generatedinterfaces.DIR.configurationGetRequest parseFrom( com.google.protobuf.ByteString data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(data, extensionRegistry); } public static org.xtreemfs.pbrpc.generatedinterfaces.DIR.configurationGetRequest parseFrom(byte[] data) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data).buildParsed(); + return PARSER.parseFrom(data); } public static org.xtreemfs.pbrpc.generatedinterfaces.DIR.configurationGetRequest parseFrom( byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(data, extensionRegistry); } public static org.xtreemfs.pbrpc.generatedinterfaces.DIR.configurationGetRequest parseFrom(java.io.InputStream input) throws java.io.IOException { - return newBuilder().mergeFrom(input).buildParsed(); + return PARSER.parseFrom(input); } public static org.xtreemfs.pbrpc.generatedinterfaces.DIR.configurationGetRequest parseFrom( java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - return newBuilder().mergeFrom(input, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(input, extensionRegistry); } public static org.xtreemfs.pbrpc.generatedinterfaces.DIR.configurationGetRequest parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException { - Builder builder = newBuilder(); - if (builder.mergeDelimitedFrom(input)) { - return builder.buildParsed(); - } else { - return null; - } + return PARSER.parseDelimitedFrom(input); } public static org.xtreemfs.pbrpc.generatedinterfaces.DIR.configurationGetRequest parseDelimitedFrom( java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - Builder builder = newBuilder(); - if (builder.mergeDelimitedFrom(input, extensionRegistry)) { - return builder.buildParsed(); - } else { - return null; - } + return PARSER.parseDelimitedFrom(input, extensionRegistry); } public static org.xtreemfs.pbrpc.generatedinterfaces.DIR.configurationGetRequest parseFrom( com.google.protobuf.CodedInputStream input) throws java.io.IOException { - return newBuilder().mergeFrom(input).buildParsed(); + return PARSER.parseFrom(input); } public static org.xtreemfs.pbrpc.generatedinterfaces.DIR.configurationGetRequest parseFrom( com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - return newBuilder().mergeFrom(input, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(input, extensionRegistry); } - + public static Builder newBuilder() { return Builder.create(); } public Builder newBuilderForType() { return newBuilder(); } public static Builder newBuilder(org.xtreemfs.pbrpc.generatedinterfaces.DIR.configurationGetRequest prototype) { return newBuilder().mergeFrom(prototype); } public Builder toBuilder() { return newBuilder(this); } - + + @java.lang.Override + protected Builder newBuilderForType( + com.google.protobuf.GeneratedMessage.BuilderParent parent) { + Builder builder = new Builder(parent); + return builder; + } + /** + * Protobuf type {@code xtreemfs.pbrpc.configurationGetRequest} + */ public static final class Builder extends - com.google.protobuf.GeneratedMessage.Builder { - private org.xtreemfs.pbrpc.generatedinterfaces.DIR.configurationGetRequest result; - + com.google.protobuf.GeneratedMessage.Builder + implements org.xtreemfs.pbrpc.generatedinterfaces.DIR.configurationGetRequestOrBuilder { + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return org.xtreemfs.pbrpc.generatedinterfaces.DIR.internal_static_xtreemfs_pbrpc_configurationGetRequest_descriptor; + } + + protected com.google.protobuf.GeneratedMessage.FieldAccessorTable + internalGetFieldAccessorTable() { + return org.xtreemfs.pbrpc.generatedinterfaces.DIR.internal_static_xtreemfs_pbrpc_configurationGetRequest_fieldAccessorTable + .ensureFieldAccessorsInitialized( + org.xtreemfs.pbrpc.generatedinterfaces.DIR.configurationGetRequest.class, org.xtreemfs.pbrpc.generatedinterfaces.DIR.configurationGetRequest.Builder.class); + } + // Construct using org.xtreemfs.pbrpc.generatedinterfaces.DIR.configurationGetRequest.newBuilder() - private Builder() {} - - private static Builder create() { - Builder builder = new Builder(); - builder.result = new org.xtreemfs.pbrpc.generatedinterfaces.DIR.configurationGetRequest(); - return builder; + private Builder() { + maybeForceBuilderInitialization(); } - - protected org.xtreemfs.pbrpc.generatedinterfaces.DIR.configurationGetRequest internalGetResult() { - return result; + + private Builder( + com.google.protobuf.GeneratedMessage.BuilderParent parent) { + super(parent); + maybeForceBuilderInitialization(); } - - public Builder clear() { - if (result == null) { - throw new IllegalStateException( - "Cannot call clear() after build()."); + private void maybeForceBuilderInitialization() { + if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) { } - result = new org.xtreemfs.pbrpc.generatedinterfaces.DIR.configurationGetRequest(); + } + private static Builder create() { + return new Builder(); + } + + public Builder clear() { + super.clear(); + uuid_ = ""; + bitField0_ = (bitField0_ & ~0x00000001); return this; } - + public Builder clone() { - return create().mergeFrom(result); + return create().mergeFrom(buildPartial()); } - + public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() { - return org.xtreemfs.pbrpc.generatedinterfaces.DIR.configurationGetRequest.getDescriptor(); + return org.xtreemfs.pbrpc.generatedinterfaces.DIR.internal_static_xtreemfs_pbrpc_configurationGetRequest_descriptor; } - + public org.xtreemfs.pbrpc.generatedinterfaces.DIR.configurationGetRequest getDefaultInstanceForType() { return org.xtreemfs.pbrpc.generatedinterfaces.DIR.configurationGetRequest.getDefaultInstance(); } - - public boolean isInitialized() { - return result.isInitialized(); - } + public org.xtreemfs.pbrpc.generatedinterfaces.DIR.configurationGetRequest build() { - if (result != null && !isInitialized()) { + org.xtreemfs.pbrpc.generatedinterfaces.DIR.configurationGetRequest result = buildPartial(); + if (!result.isInitialized()) { throw newUninitializedMessageException(result); } - return buildPartial(); - } - - private org.xtreemfs.pbrpc.generatedinterfaces.DIR.configurationGetRequest buildParsed() - throws com.google.protobuf.InvalidProtocolBufferException { - if (!isInitialized()) { - throw newUninitializedMessageException( - result).asInvalidProtocolBufferException(); - } - return buildPartial(); + return result; } - + public org.xtreemfs.pbrpc.generatedinterfaces.DIR.configurationGetRequest buildPartial() { - if (result == null) { - throw new IllegalStateException( - "build() has already been called on this Builder."); - } - org.xtreemfs.pbrpc.generatedinterfaces.DIR.configurationGetRequest returnMe = result; - result = null; - return returnMe; + org.xtreemfs.pbrpc.generatedinterfaces.DIR.configurationGetRequest result = new org.xtreemfs.pbrpc.generatedinterfaces.DIR.configurationGetRequest(this); + int from_bitField0_ = bitField0_; + int to_bitField0_ = 0; + if (((from_bitField0_ & 0x00000001) == 0x00000001)) { + to_bitField0_ |= 0x00000001; + } + result.uuid_ = uuid_; + result.bitField0_ = to_bitField0_; + onBuilt(); + return result; } - + public Builder mergeFrom(com.google.protobuf.Message other) { if (other instanceof org.xtreemfs.pbrpc.generatedinterfaces.DIR.configurationGetRequest) { return mergeFrom((org.xtreemfs.pbrpc.generatedinterfaces.DIR.configurationGetRequest)other); @@ -6226,285 +12850,481 @@ public final class DIR { return this; } } - + public Builder mergeFrom(org.xtreemfs.pbrpc.generatedinterfaces.DIR.configurationGetRequest other) { if (other == org.xtreemfs.pbrpc.generatedinterfaces.DIR.configurationGetRequest.getDefaultInstance()) return this; if (other.hasUuid()) { - setUuid(other.getUuid()); + bitField0_ |= 0x00000001; + uuid_ = other.uuid_; + onChanged(); } this.mergeUnknownFields(other.getUnknownFields()); return this; } - + + public final boolean isInitialized() { + if (!hasUuid()) { + + return false; + } + return true; + } + public Builder mergeFrom( com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - com.google.protobuf.UnknownFieldSet.Builder unknownFields = - com.google.protobuf.UnknownFieldSet.newBuilder( - this.getUnknownFields()); - while (true) { - int tag = input.readTag(); - switch (tag) { - case 0: - this.setUnknownFields(unknownFields.build()); - return this; - default: { - if (!parseUnknownField(input, unknownFields, - extensionRegistry, tag)) { - this.setUnknownFields(unknownFields.build()); - return this; - } - break; - } - case 10: { - setUuid(input.readString()); - break; - } + org.xtreemfs.pbrpc.generatedinterfaces.DIR.configurationGetRequest parsedMessage = null; + try { + parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + parsedMessage = (org.xtreemfs.pbrpc.generatedinterfaces.DIR.configurationGetRequest) e.getUnfinishedMessage(); + throw e; + } finally { + if (parsedMessage != null) { + mergeFrom(parsedMessage); } } + return this; } - - + private int bitField0_; + // required string uuid = 1; + private java.lang.Object uuid_ = ""; + /** + * required string uuid = 1; + * + *
+       * UUID of the servic for which the configuration is requested.
+       * 
+ */ public boolean hasUuid() { - return result.hasUuid(); - } + return ((bitField0_ & 0x00000001) == 0x00000001); + } + /** + * required string uuid = 1; + * + *
+       * UUID of the servic for which the configuration is requested.
+       * 
+ */ public java.lang.String getUuid() { - return result.getUuid(); - } - public Builder setUuid(java.lang.String value) { + java.lang.Object ref = uuid_; + if (!(ref instanceof java.lang.String)) { + java.lang.String s = ((com.google.protobuf.ByteString) ref) + .toStringUtf8(); + uuid_ = s; + return s; + } else { + return (java.lang.String) ref; + } + } + /** + * required string uuid = 1; + * + *
+       * UUID of the servic for which the configuration is requested.
+       * 
+ */ + public com.google.protobuf.ByteString + getUuidBytes() { + java.lang.Object ref = uuid_; + if (ref instanceof String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + uuid_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + /** + * required string uuid = 1; + * + *
+       * UUID of the servic for which the configuration is requested.
+       * 
+ */ + public Builder setUuid( + java.lang.String value) { if (value == null) { throw new NullPointerException(); } - result.hasUuid = true; - result.uuid_ = value; - return this; - } + bitField0_ |= 0x00000001; + uuid_ = value; + onChanged(); + return this; + } + /** + * required string uuid = 1; + * + *
+       * UUID of the servic for which the configuration is requested.
+       * 
+ */ public Builder clearUuid() { - result.hasUuid = false; - result.uuid_ = getDefaultInstance().getUuid(); + bitField0_ = (bitField0_ & ~0x00000001); + uuid_ = getDefaultInstance().getUuid(); + onChanged(); + return this; + } + /** + * required string uuid = 1; + * + *
+       * UUID of the servic for which the configuration is requested.
+       * 
+ */ + public Builder setUuidBytes( + com.google.protobuf.ByteString value) { + if (value == null) { + throw new NullPointerException(); + } + bitField0_ |= 0x00000001; + uuid_ = value; + onChanged(); return this; } - + // @@protoc_insertion_point(builder_scope:xtreemfs.pbrpc.configurationGetRequest) } - + static { defaultInstance = new configurationGetRequest(true); - org.xtreemfs.pbrpc.generatedinterfaces.DIR.internalForceInit(); defaultInstance.initFields(); } - + // @@protoc_insertion_point(class_scope:xtreemfs.pbrpc.configurationGetRequest) } - + + public interface configurationSetResponseOrBuilder + extends com.google.protobuf.MessageOrBuilder { + + // optional fixed64 new_version = 1; + /** + * optional fixed64 new_version = 1; + * + *
+     * New version assigned to the configuration record by the DIR.
+     * 
+ */ + boolean hasNewVersion(); + /** + * optional fixed64 new_version = 1; + * + *
+     * New version assigned to the configuration record by the DIR.
+     * 
+ */ + long getNewVersion(); + } + /** + * Protobuf type {@code xtreemfs.pbrpc.configurationSetResponse} + */ public static final class configurationSetResponse extends - com.google.protobuf.GeneratedMessage { + com.google.protobuf.GeneratedMessage + implements configurationSetResponseOrBuilder { // Use configurationSetResponse.newBuilder() to construct. - private configurationSetResponse() { - initFields(); + private configurationSetResponse(com.google.protobuf.GeneratedMessage.Builder builder) { + super(builder); + this.unknownFields = builder.getUnknownFields(); } - private configurationSetResponse(boolean noInit) {} - + private configurationSetResponse(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); } + private static final configurationSetResponse defaultInstance; public static configurationSetResponse getDefaultInstance() { return defaultInstance; } - + public configurationSetResponse getDefaultInstanceForType() { return defaultInstance; } - + + private final com.google.protobuf.UnknownFieldSet unknownFields; + @java.lang.Override + public final com.google.protobuf.UnknownFieldSet + getUnknownFields() { + return this.unknownFields; + } + private configurationSetResponse( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + initFields(); + int mutable_bitField0_ = 0; + com.google.protobuf.UnknownFieldSet.Builder unknownFields = + com.google.protobuf.UnknownFieldSet.newBuilder(); + try { + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch (tag) { + case 0: + done = true; + break; + default: { + if (!parseUnknownField(input, unknownFields, + extensionRegistry, tag)) { + done = true; + } + break; + } + case 9: { + bitField0_ |= 0x00000001; + newVersion_ = input.readFixed64(); + break; + } + } + } + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(this); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException( + e.getMessage()).setUnfinishedMessage(this); + } finally { + this.unknownFields = unknownFields.build(); + makeExtensionsImmutable(); + } + } public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { return org.xtreemfs.pbrpc.generatedinterfaces.DIR.internal_static_xtreemfs_pbrpc_configurationSetResponse_descriptor; } - + protected com.google.protobuf.GeneratedMessage.FieldAccessorTable internalGetFieldAccessorTable() { - return org.xtreemfs.pbrpc.generatedinterfaces.DIR.internal_static_xtreemfs_pbrpc_configurationSetResponse_fieldAccessorTable; + return org.xtreemfs.pbrpc.generatedinterfaces.DIR.internal_static_xtreemfs_pbrpc_configurationSetResponse_fieldAccessorTable + .ensureFieldAccessorsInitialized( + org.xtreemfs.pbrpc.generatedinterfaces.DIR.configurationSetResponse.class, org.xtreemfs.pbrpc.generatedinterfaces.DIR.configurationSetResponse.Builder.class); + } + + public static com.google.protobuf.Parser PARSER = + new com.google.protobuf.AbstractParser() { + public configurationSetResponse parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return new configurationSetResponse(input, extensionRegistry); + } + }; + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; } - + + private int bitField0_; // optional fixed64 new_version = 1; public static final int NEW_VERSION_FIELD_NUMBER = 1; - private boolean hasNewVersion; - private long newVersion_ = 0L; - public boolean hasNewVersion() { return hasNewVersion; } - public long getNewVersion() { return newVersion_; } - + private long newVersion_; + /** + * optional fixed64 new_version = 1; + * + *
+     * New version assigned to the configuration record by the DIR.
+     * 
+ */ + public boolean hasNewVersion() { + return ((bitField0_ & 0x00000001) == 0x00000001); + } + /** + * optional fixed64 new_version = 1; + * + *
+     * New version assigned to the configuration record by the DIR.
+     * 
+ */ + public long getNewVersion() { + return newVersion_; + } + private void initFields() { + newVersion_ = 0L; } + private byte memoizedIsInitialized = -1; public final boolean isInitialized() { + byte isInitialized = memoizedIsInitialized; + if (isInitialized != -1) return isInitialized == 1; + + memoizedIsInitialized = 1; return true; } - + public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException { getSerializedSize(); - if (hasNewVersion()) { - output.writeFixed64(1, getNewVersion()); + if (((bitField0_ & 0x00000001) == 0x00000001)) { + output.writeFixed64(1, newVersion_); } getUnknownFields().writeTo(output); } - + private int memoizedSerializedSize = -1; public int getSerializedSize() { int size = memoizedSerializedSize; if (size != -1) return size; - + size = 0; - if (hasNewVersion()) { + if (((bitField0_ & 0x00000001) == 0x00000001)) { size += com.google.protobuf.CodedOutputStream - .computeFixed64Size(1, getNewVersion()); + .computeFixed64Size(1, newVersion_); } size += getUnknownFields().getSerializedSize(); memoizedSerializedSize = size; return size; } - + + private static final long serialVersionUID = 0L; + @java.lang.Override + protected java.lang.Object writeReplace() + throws java.io.ObjectStreamException { + return super.writeReplace(); + } + public static org.xtreemfs.pbrpc.generatedinterfaces.DIR.configurationSetResponse parseFrom( com.google.protobuf.ByteString data) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data).buildParsed(); + return PARSER.parseFrom(data); } public static org.xtreemfs.pbrpc.generatedinterfaces.DIR.configurationSetResponse parseFrom( com.google.protobuf.ByteString data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(data, extensionRegistry); } public static org.xtreemfs.pbrpc.generatedinterfaces.DIR.configurationSetResponse parseFrom(byte[] data) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data).buildParsed(); + return PARSER.parseFrom(data); } public static org.xtreemfs.pbrpc.generatedinterfaces.DIR.configurationSetResponse parseFrom( byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(data, extensionRegistry); } public static org.xtreemfs.pbrpc.generatedinterfaces.DIR.configurationSetResponse parseFrom(java.io.InputStream input) throws java.io.IOException { - return newBuilder().mergeFrom(input).buildParsed(); + return PARSER.parseFrom(input); } public static org.xtreemfs.pbrpc.generatedinterfaces.DIR.configurationSetResponse parseFrom( java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - return newBuilder().mergeFrom(input, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(input, extensionRegistry); } public static org.xtreemfs.pbrpc.generatedinterfaces.DIR.configurationSetResponse parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException { - Builder builder = newBuilder(); - if (builder.mergeDelimitedFrom(input)) { - return builder.buildParsed(); - } else { - return null; - } + return PARSER.parseDelimitedFrom(input); } public static org.xtreemfs.pbrpc.generatedinterfaces.DIR.configurationSetResponse parseDelimitedFrom( java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - Builder builder = newBuilder(); - if (builder.mergeDelimitedFrom(input, extensionRegistry)) { - return builder.buildParsed(); - } else { - return null; - } + return PARSER.parseDelimitedFrom(input, extensionRegistry); } public static org.xtreemfs.pbrpc.generatedinterfaces.DIR.configurationSetResponse parseFrom( com.google.protobuf.CodedInputStream input) throws java.io.IOException { - return newBuilder().mergeFrom(input).buildParsed(); + return PARSER.parseFrom(input); } public static org.xtreemfs.pbrpc.generatedinterfaces.DIR.configurationSetResponse parseFrom( com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - return newBuilder().mergeFrom(input, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(input, extensionRegistry); } - + public static Builder newBuilder() { return Builder.create(); } public Builder newBuilderForType() { return newBuilder(); } public static Builder newBuilder(org.xtreemfs.pbrpc.generatedinterfaces.DIR.configurationSetResponse prototype) { return newBuilder().mergeFrom(prototype); } public Builder toBuilder() { return newBuilder(this); } - + + @java.lang.Override + protected Builder newBuilderForType( + com.google.protobuf.GeneratedMessage.BuilderParent parent) { + Builder builder = new Builder(parent); + return builder; + } + /** + * Protobuf type {@code xtreemfs.pbrpc.configurationSetResponse} + */ public static final class Builder extends - com.google.protobuf.GeneratedMessage.Builder { - private org.xtreemfs.pbrpc.generatedinterfaces.DIR.configurationSetResponse result; - + com.google.protobuf.GeneratedMessage.Builder + implements org.xtreemfs.pbrpc.generatedinterfaces.DIR.configurationSetResponseOrBuilder { + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return org.xtreemfs.pbrpc.generatedinterfaces.DIR.internal_static_xtreemfs_pbrpc_configurationSetResponse_descriptor; + } + + protected com.google.protobuf.GeneratedMessage.FieldAccessorTable + internalGetFieldAccessorTable() { + return org.xtreemfs.pbrpc.generatedinterfaces.DIR.internal_static_xtreemfs_pbrpc_configurationSetResponse_fieldAccessorTable + .ensureFieldAccessorsInitialized( + org.xtreemfs.pbrpc.generatedinterfaces.DIR.configurationSetResponse.class, org.xtreemfs.pbrpc.generatedinterfaces.DIR.configurationSetResponse.Builder.class); + } + // Construct using org.xtreemfs.pbrpc.generatedinterfaces.DIR.configurationSetResponse.newBuilder() - private Builder() {} - - private static Builder create() { - Builder builder = new Builder(); - builder.result = new org.xtreemfs.pbrpc.generatedinterfaces.DIR.configurationSetResponse(); - return builder; + private Builder() { + maybeForceBuilderInitialization(); } - - protected org.xtreemfs.pbrpc.generatedinterfaces.DIR.configurationSetResponse internalGetResult() { - return result; + + private Builder( + com.google.protobuf.GeneratedMessage.BuilderParent parent) { + super(parent); + maybeForceBuilderInitialization(); } - - public Builder clear() { - if (result == null) { - throw new IllegalStateException( - "Cannot call clear() after build()."); + private void maybeForceBuilderInitialization() { + if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) { } - result = new org.xtreemfs.pbrpc.generatedinterfaces.DIR.configurationSetResponse(); + } + private static Builder create() { + return new Builder(); + } + + public Builder clear() { + super.clear(); + newVersion_ = 0L; + bitField0_ = (bitField0_ & ~0x00000001); return this; } - + public Builder clone() { - return create().mergeFrom(result); + return create().mergeFrom(buildPartial()); } - + public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() { - return org.xtreemfs.pbrpc.generatedinterfaces.DIR.configurationSetResponse.getDescriptor(); + return org.xtreemfs.pbrpc.generatedinterfaces.DIR.internal_static_xtreemfs_pbrpc_configurationSetResponse_descriptor; } - + public org.xtreemfs.pbrpc.generatedinterfaces.DIR.configurationSetResponse getDefaultInstanceForType() { return org.xtreemfs.pbrpc.generatedinterfaces.DIR.configurationSetResponse.getDefaultInstance(); } - - public boolean isInitialized() { - return result.isInitialized(); - } + public org.xtreemfs.pbrpc.generatedinterfaces.DIR.configurationSetResponse build() { - if (result != null && !isInitialized()) { + org.xtreemfs.pbrpc.generatedinterfaces.DIR.configurationSetResponse result = buildPartial(); + if (!result.isInitialized()) { throw newUninitializedMessageException(result); } - return buildPartial(); - } - - private org.xtreemfs.pbrpc.generatedinterfaces.DIR.configurationSetResponse buildParsed() - throws com.google.protobuf.InvalidProtocolBufferException { - if (!isInitialized()) { - throw newUninitializedMessageException( - result).asInvalidProtocolBufferException(); - } - return buildPartial(); + return result; } - + public org.xtreemfs.pbrpc.generatedinterfaces.DIR.configurationSetResponse buildPartial() { - if (result == null) { - throw new IllegalStateException( - "build() has already been called on this Builder."); - } - org.xtreemfs.pbrpc.generatedinterfaces.DIR.configurationSetResponse returnMe = result; - result = null; - return returnMe; + org.xtreemfs.pbrpc.generatedinterfaces.DIR.configurationSetResponse result = new org.xtreemfs.pbrpc.generatedinterfaces.DIR.configurationSetResponse(this); + int from_bitField0_ = bitField0_; + int to_bitField0_ = 0; + if (((from_bitField0_ & 0x00000001) == 0x00000001)) { + to_bitField0_ |= 0x00000001; + } + result.newVersion_ = newVersion_; + result.bitField0_ = to_bitField0_; + onBuilt(); + return result; } - + public Builder mergeFrom(com.google.protobuf.Message other) { if (other instanceof org.xtreemfs.pbrpc.generatedinterfaces.DIR.configurationSetResponse) { return mergeFrom((org.xtreemfs.pbrpc.generatedinterfaces.DIR.configurationSetResponse)other); @@ -6513,7 +13333,7 @@ public final class DIR { return this; } } - + public Builder mergeFrom(org.xtreemfs.pbrpc.generatedinterfaces.DIR.configurationSetResponse other) { if (other == org.xtreemfs.pbrpc.generatedinterfaces.DIR.configurationSetResponse.getDefaultInstance()) return this; if (other.hasNewVersion()) { @@ -6522,1263 +13342,90 @@ public final class DIR { this.mergeUnknownFields(other.getUnknownFields()); return this; } - + + public final boolean isInitialized() { + return true; + } + public Builder mergeFrom( com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - com.google.protobuf.UnknownFieldSet.Builder unknownFields = - com.google.protobuf.UnknownFieldSet.newBuilder( - this.getUnknownFields()); - while (true) { - int tag = input.readTag(); - switch (tag) { - case 0: - this.setUnknownFields(unknownFields.build()); - return this; - default: { - if (!parseUnknownField(input, unknownFields, - extensionRegistry, tag)) { - this.setUnknownFields(unknownFields.build()); - return this; - } - break; - } - case 9: { - setNewVersion(input.readFixed64()); - break; - } + org.xtreemfs.pbrpc.generatedinterfaces.DIR.configurationSetResponse parsedMessage = null; + try { + parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + parsedMessage = (org.xtreemfs.pbrpc.generatedinterfaces.DIR.configurationSetResponse) e.getUnfinishedMessage(); + throw e; + } finally { + if (parsedMessage != null) { + mergeFrom(parsedMessage); } } + return this; } - - + private int bitField0_; + // optional fixed64 new_version = 1; + private long newVersion_ ; + /** + * optional fixed64 new_version = 1; + * + *
+       * New version assigned to the configuration record by the DIR.
+       * 
+ */ public boolean hasNewVersion() { - return result.hasNewVersion(); - } + return ((bitField0_ & 0x00000001) == 0x00000001); + } + /** + * optional fixed64 new_version = 1; + * + *
+       * New version assigned to the configuration record by the DIR.
+       * 
+ */ public long getNewVersion() { - return result.getNewVersion(); - } + return newVersion_; + } + /** + * optional fixed64 new_version = 1; + * + *
+       * New version assigned to the configuration record by the DIR.
+       * 
+ */ public Builder setNewVersion(long value) { - result.hasNewVersion = true; - result.newVersion_ = value; - return this; - } + bitField0_ |= 0x00000001; + newVersion_ = value; + onChanged(); + return this; + } + /** + * optional fixed64 new_version = 1; + * + *
+       * New version assigned to the configuration record by the DIR.
+       * 
+ */ public Builder clearNewVersion() { - result.hasNewVersion = false; - result.newVersion_ = 0L; + bitField0_ = (bitField0_ & ~0x00000001); + newVersion_ = 0L; + onChanged(); return this; } - + // @@protoc_insertion_point(builder_scope:xtreemfs.pbrpc.configurationSetResponse) } - + static { defaultInstance = new configurationSetResponse(true); - org.xtreemfs.pbrpc.generatedinterfaces.DIR.internalForceInit(); defaultInstance.initFields(); } - + // @@protoc_insertion_point(class_scope:xtreemfs.pbrpc.configurationSetResponse) } - - public static abstract class DirectoryService - implements com.google.protobuf.Service { - protected DirectoryService() {} - - public interface Interface { - public abstract void xtreemfsAddressMappingsGet( - com.google.protobuf.RpcController controller, - org.xtreemfs.pbrpc.generatedinterfaces.DIR.addressMappingGetRequest request, - com.google.protobuf.RpcCallback done); - - public abstract void xtreemfsAddressMappingsRemove( - com.google.protobuf.RpcController controller, - org.xtreemfs.pbrpc.generatedinterfaces.DIR.addressMappingGetRequest request, - com.google.protobuf.RpcCallback done); - - public abstract void xtreemfsAddressMappingsSet( - com.google.protobuf.RpcController controller, - org.xtreemfs.pbrpc.generatedinterfaces.DIR.AddressMappingSet request, - com.google.protobuf.RpcCallback done); - - public abstract void xtreemfsDiscoverDir( - com.google.protobuf.RpcController controller, - org.xtreemfs.pbrpc.generatedinterfaces.Common.emptyRequest request, - com.google.protobuf.RpcCallback done); - - public abstract void xtreemfsGlobalTimeSGet( - com.google.protobuf.RpcController controller, - org.xtreemfs.pbrpc.generatedinterfaces.Common.emptyRequest request, - com.google.protobuf.RpcCallback done); - - public abstract void xtreemfsServiceDeregister( - com.google.protobuf.RpcController controller, - org.xtreemfs.pbrpc.generatedinterfaces.DIR.serviceDeregisterRequest request, - com.google.protobuf.RpcCallback done); - - public abstract void xtreemfsServiceGetByName( - com.google.protobuf.RpcController controller, - org.xtreemfs.pbrpc.generatedinterfaces.DIR.serviceGetByNameRequest request, - com.google.protobuf.RpcCallback done); - - public abstract void xtreemfsServiceGetByType( - com.google.protobuf.RpcController controller, - org.xtreemfs.pbrpc.generatedinterfaces.DIR.serviceGetByTypeRequest request, - com.google.protobuf.RpcCallback done); - - public abstract void xtreemfsServiceGetByUuid( - com.google.protobuf.RpcController controller, - org.xtreemfs.pbrpc.generatedinterfaces.DIR.serviceGetByUUIDRequest request, - com.google.protobuf.RpcCallback done); - - public abstract void xtreemfsServiceOffline( - com.google.protobuf.RpcController controller, - org.xtreemfs.pbrpc.generatedinterfaces.DIR.serviceGetByUUIDRequest request, - com.google.protobuf.RpcCallback done); - - public abstract void xtreemfsServiceRegister( - com.google.protobuf.RpcController controller, - org.xtreemfs.pbrpc.generatedinterfaces.DIR.serviceRegisterRequest request, - com.google.protobuf.RpcCallback done); - - public abstract void xtreemfsCheckpoint( - com.google.protobuf.RpcController controller, - org.xtreemfs.pbrpc.generatedinterfaces.Common.emptyRequest request, - com.google.protobuf.RpcCallback done); - - public abstract void xtreemfsShutdown( - com.google.protobuf.RpcController controller, - org.xtreemfs.pbrpc.generatedinterfaces.Common.emptyRequest request, - com.google.protobuf.RpcCallback done); - - public abstract void xtreemfsConfigurationGet( - com.google.protobuf.RpcController controller, - org.xtreemfs.pbrpc.generatedinterfaces.DIR.configurationGetRequest request, - com.google.protobuf.RpcCallback done); - - public abstract void xtreemfsConfigurationSet( - com.google.protobuf.RpcController controller, - org.xtreemfs.pbrpc.generatedinterfaces.DIR.Configuration request, - com.google.protobuf.RpcCallback done); - - public abstract void xtreemfsVivaldiClientUpdate( - com.google.protobuf.RpcController controller, - org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.VivaldiCoordinates request, - com.google.protobuf.RpcCallback done); - - } - - public static com.google.protobuf.Service newReflectiveService( - final Interface impl) { - return new DirectoryService() { - @Override - public void xtreemfsAddressMappingsGet( - com.google.protobuf.RpcController controller, - org.xtreemfs.pbrpc.generatedinterfaces.DIR.addressMappingGetRequest request, - com.google.protobuf.RpcCallback done) { - impl.xtreemfsAddressMappingsGet(controller, request, done); - } - - @Override - public void xtreemfsAddressMappingsRemove( - com.google.protobuf.RpcController controller, - org.xtreemfs.pbrpc.generatedinterfaces.DIR.addressMappingGetRequest request, - com.google.protobuf.RpcCallback done) { - impl.xtreemfsAddressMappingsRemove(controller, request, done); - } - - @Override - public void xtreemfsAddressMappingsSet( - com.google.protobuf.RpcController controller, - org.xtreemfs.pbrpc.generatedinterfaces.DIR.AddressMappingSet request, - com.google.protobuf.RpcCallback done) { - impl.xtreemfsAddressMappingsSet(controller, request, done); - } - - @Override - public void xtreemfsDiscoverDir( - com.google.protobuf.RpcController controller, - org.xtreemfs.pbrpc.generatedinterfaces.Common.emptyRequest request, - com.google.protobuf.RpcCallback done) { - impl.xtreemfsDiscoverDir(controller, request, done); - } - - @Override - public void xtreemfsGlobalTimeSGet( - com.google.protobuf.RpcController controller, - org.xtreemfs.pbrpc.generatedinterfaces.Common.emptyRequest request, - com.google.protobuf.RpcCallback done) { - impl.xtreemfsGlobalTimeSGet(controller, request, done); - } - - @Override - public void xtreemfsServiceDeregister( - com.google.protobuf.RpcController controller, - org.xtreemfs.pbrpc.generatedinterfaces.DIR.serviceDeregisterRequest request, - com.google.protobuf.RpcCallback done) { - impl.xtreemfsServiceDeregister(controller, request, done); - } - - @Override - public void xtreemfsServiceGetByName( - com.google.protobuf.RpcController controller, - org.xtreemfs.pbrpc.generatedinterfaces.DIR.serviceGetByNameRequest request, - com.google.protobuf.RpcCallback done) { - impl.xtreemfsServiceGetByName(controller, request, done); - } - - @Override - public void xtreemfsServiceGetByType( - com.google.protobuf.RpcController controller, - org.xtreemfs.pbrpc.generatedinterfaces.DIR.serviceGetByTypeRequest request, - com.google.protobuf.RpcCallback done) { - impl.xtreemfsServiceGetByType(controller, request, done); - } - - @Override - public void xtreemfsServiceGetByUuid( - com.google.protobuf.RpcController controller, - org.xtreemfs.pbrpc.generatedinterfaces.DIR.serviceGetByUUIDRequest request, - com.google.protobuf.RpcCallback done) { - impl.xtreemfsServiceGetByUuid(controller, request, done); - } - - @Override - public void xtreemfsServiceOffline( - com.google.protobuf.RpcController controller, - org.xtreemfs.pbrpc.generatedinterfaces.DIR.serviceGetByUUIDRequest request, - com.google.protobuf.RpcCallback done) { - impl.xtreemfsServiceOffline(controller, request, done); - } - - @Override - public void xtreemfsServiceRegister( - com.google.protobuf.RpcController controller, - org.xtreemfs.pbrpc.generatedinterfaces.DIR.serviceRegisterRequest request, - com.google.protobuf.RpcCallback done) { - impl.xtreemfsServiceRegister(controller, request, done); - } - - @Override - public void xtreemfsCheckpoint( - com.google.protobuf.RpcController controller, - org.xtreemfs.pbrpc.generatedinterfaces.Common.emptyRequest request, - com.google.protobuf.RpcCallback done) { - impl.xtreemfsCheckpoint(controller, request, done); - } - - @Override - public void xtreemfsShutdown( - com.google.protobuf.RpcController controller, - org.xtreemfs.pbrpc.generatedinterfaces.Common.emptyRequest request, - com.google.protobuf.RpcCallback done) { - impl.xtreemfsShutdown(controller, request, done); - } - - @Override - public void xtreemfsConfigurationGet( - com.google.protobuf.RpcController controller, - org.xtreemfs.pbrpc.generatedinterfaces.DIR.configurationGetRequest request, - com.google.protobuf.RpcCallback done) { - impl.xtreemfsConfigurationGet(controller, request, done); - } - - @Override - public void xtreemfsConfigurationSet( - com.google.protobuf.RpcController controller, - org.xtreemfs.pbrpc.generatedinterfaces.DIR.Configuration request, - com.google.protobuf.RpcCallback done) { - impl.xtreemfsConfigurationSet(controller, request, done); - } - - @Override - public void xtreemfsVivaldiClientUpdate( - com.google.protobuf.RpcController controller, - org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.VivaldiCoordinates request, - com.google.protobuf.RpcCallback done) { - impl.xtreemfsVivaldiClientUpdate(controller, request, done); - } - - }; - } - - public static com.google.protobuf.BlockingService - newReflectiveBlockingService(final BlockingInterface impl) { - return new com.google.protobuf.BlockingService() { - public final com.google.protobuf.Descriptors.ServiceDescriptor - getDescriptorForType() { - return getDescriptor(); - } - - public final com.google.protobuf.Message callBlockingMethod( - com.google.protobuf.Descriptors.MethodDescriptor method, - com.google.protobuf.RpcController controller, - com.google.protobuf.Message request) - throws com.google.protobuf.ServiceException { - if (method.getService() != getDescriptor()) { - throw new java.lang.IllegalArgumentException( - "Service.callBlockingMethod() given method descriptor for " + - "wrong service type."); - } - switch(method.getIndex()) { - case 0: - return impl.xtreemfsAddressMappingsGet(controller, (org.xtreemfs.pbrpc.generatedinterfaces.DIR.addressMappingGetRequest)request); - case 1: - return impl.xtreemfsAddressMappingsRemove(controller, (org.xtreemfs.pbrpc.generatedinterfaces.DIR.addressMappingGetRequest)request); - case 2: - return impl.xtreemfsAddressMappingsSet(controller, (org.xtreemfs.pbrpc.generatedinterfaces.DIR.AddressMappingSet)request); - case 3: - return impl.xtreemfsDiscoverDir(controller, (org.xtreemfs.pbrpc.generatedinterfaces.Common.emptyRequest)request); - case 4: - return impl.xtreemfsGlobalTimeSGet(controller, (org.xtreemfs.pbrpc.generatedinterfaces.Common.emptyRequest)request); - case 5: - return impl.xtreemfsServiceDeregister(controller, (org.xtreemfs.pbrpc.generatedinterfaces.DIR.serviceDeregisterRequest)request); - case 6: - return impl.xtreemfsServiceGetByName(controller, (org.xtreemfs.pbrpc.generatedinterfaces.DIR.serviceGetByNameRequest)request); - case 7: - return impl.xtreemfsServiceGetByType(controller, (org.xtreemfs.pbrpc.generatedinterfaces.DIR.serviceGetByTypeRequest)request); - case 8: - return impl.xtreemfsServiceGetByUuid(controller, (org.xtreemfs.pbrpc.generatedinterfaces.DIR.serviceGetByUUIDRequest)request); - case 9: - return impl.xtreemfsServiceOffline(controller, (org.xtreemfs.pbrpc.generatedinterfaces.DIR.serviceGetByUUIDRequest)request); - case 10: - return impl.xtreemfsServiceRegister(controller, (org.xtreemfs.pbrpc.generatedinterfaces.DIR.serviceRegisterRequest)request); - case 11: - return impl.xtreemfsCheckpoint(controller, (org.xtreemfs.pbrpc.generatedinterfaces.Common.emptyRequest)request); - case 12: - return impl.xtreemfsShutdown(controller, (org.xtreemfs.pbrpc.generatedinterfaces.Common.emptyRequest)request); - case 13: - return impl.xtreemfsConfigurationGet(controller, (org.xtreemfs.pbrpc.generatedinterfaces.DIR.configurationGetRequest)request); - case 14: - return impl.xtreemfsConfigurationSet(controller, (org.xtreemfs.pbrpc.generatedinterfaces.DIR.Configuration)request); - case 15: - return impl.xtreemfsVivaldiClientUpdate(controller, (org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.VivaldiCoordinates)request); - default: - throw new java.lang.AssertionError("Can't get here."); - } - } - - public final com.google.protobuf.Message - getRequestPrototype( - com.google.protobuf.Descriptors.MethodDescriptor method) { - if (method.getService() != getDescriptor()) { - throw new java.lang.IllegalArgumentException( - "Service.getRequestPrototype() given method " + - "descriptor for wrong service type."); - } - switch(method.getIndex()) { - case 0: - return org.xtreemfs.pbrpc.generatedinterfaces.DIR.addressMappingGetRequest.getDefaultInstance(); - case 1: - return org.xtreemfs.pbrpc.generatedinterfaces.DIR.addressMappingGetRequest.getDefaultInstance(); - case 2: - return org.xtreemfs.pbrpc.generatedinterfaces.DIR.AddressMappingSet.getDefaultInstance(); - case 3: - return org.xtreemfs.pbrpc.generatedinterfaces.Common.emptyRequest.getDefaultInstance(); - case 4: - return org.xtreemfs.pbrpc.generatedinterfaces.Common.emptyRequest.getDefaultInstance(); - case 5: - return org.xtreemfs.pbrpc.generatedinterfaces.DIR.serviceDeregisterRequest.getDefaultInstance(); - case 6: - return org.xtreemfs.pbrpc.generatedinterfaces.DIR.serviceGetByNameRequest.getDefaultInstance(); - case 7: - return org.xtreemfs.pbrpc.generatedinterfaces.DIR.serviceGetByTypeRequest.getDefaultInstance(); - case 8: - return org.xtreemfs.pbrpc.generatedinterfaces.DIR.serviceGetByUUIDRequest.getDefaultInstance(); - case 9: - return org.xtreemfs.pbrpc.generatedinterfaces.DIR.serviceGetByUUIDRequest.getDefaultInstance(); - case 10: - return org.xtreemfs.pbrpc.generatedinterfaces.DIR.serviceRegisterRequest.getDefaultInstance(); - case 11: - return org.xtreemfs.pbrpc.generatedinterfaces.Common.emptyRequest.getDefaultInstance(); - case 12: - return org.xtreemfs.pbrpc.generatedinterfaces.Common.emptyRequest.getDefaultInstance(); - case 13: - return org.xtreemfs.pbrpc.generatedinterfaces.DIR.configurationGetRequest.getDefaultInstance(); - case 14: - return org.xtreemfs.pbrpc.generatedinterfaces.DIR.Configuration.getDefaultInstance(); - case 15: - return org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.VivaldiCoordinates.getDefaultInstance(); - default: - throw new java.lang.AssertionError("Can't get here."); - } - } - - public final com.google.protobuf.Message - getResponsePrototype( - com.google.protobuf.Descriptors.MethodDescriptor method) { - if (method.getService() != getDescriptor()) { - throw new java.lang.IllegalArgumentException( - "Service.getResponsePrototype() given method " + - "descriptor for wrong service type."); - } - switch(method.getIndex()) { - case 0: - return org.xtreemfs.pbrpc.generatedinterfaces.DIR.AddressMappingSet.getDefaultInstance(); - case 1: - return org.xtreemfs.pbrpc.generatedinterfaces.Common.emptyResponse.getDefaultInstance(); - case 2: - return org.xtreemfs.pbrpc.generatedinterfaces.DIR.addressMappingSetResponse.getDefaultInstance(); - case 3: - return org.xtreemfs.pbrpc.generatedinterfaces.DIR.DirService.getDefaultInstance(); - case 4: - return org.xtreemfs.pbrpc.generatedinterfaces.DIR.globalTimeSGetResponse.getDefaultInstance(); - case 5: - return org.xtreemfs.pbrpc.generatedinterfaces.Common.emptyResponse.getDefaultInstance(); - case 6: - return org.xtreemfs.pbrpc.generatedinterfaces.DIR.ServiceSet.getDefaultInstance(); - case 7: - return org.xtreemfs.pbrpc.generatedinterfaces.DIR.ServiceSet.getDefaultInstance(); - case 8: - return org.xtreemfs.pbrpc.generatedinterfaces.DIR.ServiceSet.getDefaultInstance(); - case 9: - return org.xtreemfs.pbrpc.generatedinterfaces.Common.emptyResponse.getDefaultInstance(); - case 10: - return org.xtreemfs.pbrpc.generatedinterfaces.DIR.serviceRegisterResponse.getDefaultInstance(); - case 11: - return org.xtreemfs.pbrpc.generatedinterfaces.Common.emptyResponse.getDefaultInstance(); - case 12: - return org.xtreemfs.pbrpc.generatedinterfaces.Common.emptyResponse.getDefaultInstance(); - case 13: - return org.xtreemfs.pbrpc.generatedinterfaces.DIR.Configuration.getDefaultInstance(); - case 14: - return org.xtreemfs.pbrpc.generatedinterfaces.DIR.configurationSetResponse.getDefaultInstance(); - case 15: - return org.xtreemfs.pbrpc.generatedinterfaces.Common.emptyResponse.getDefaultInstance(); - default: - throw new java.lang.AssertionError("Can't get here."); - } - } - - }; - } - - public abstract void xtreemfsAddressMappingsGet( - com.google.protobuf.RpcController controller, - org.xtreemfs.pbrpc.generatedinterfaces.DIR.addressMappingGetRequest request, - com.google.protobuf.RpcCallback done); - - public abstract void xtreemfsAddressMappingsRemove( - com.google.protobuf.RpcController controller, - org.xtreemfs.pbrpc.generatedinterfaces.DIR.addressMappingGetRequest request, - com.google.protobuf.RpcCallback done); - - public abstract void xtreemfsAddressMappingsSet( - com.google.protobuf.RpcController controller, - org.xtreemfs.pbrpc.generatedinterfaces.DIR.AddressMappingSet request, - com.google.protobuf.RpcCallback done); - - public abstract void xtreemfsDiscoverDir( - com.google.protobuf.RpcController controller, - org.xtreemfs.pbrpc.generatedinterfaces.Common.emptyRequest request, - com.google.protobuf.RpcCallback done); - - public abstract void xtreemfsGlobalTimeSGet( - com.google.protobuf.RpcController controller, - org.xtreemfs.pbrpc.generatedinterfaces.Common.emptyRequest request, - com.google.protobuf.RpcCallback done); - - public abstract void xtreemfsServiceDeregister( - com.google.protobuf.RpcController controller, - org.xtreemfs.pbrpc.generatedinterfaces.DIR.serviceDeregisterRequest request, - com.google.protobuf.RpcCallback done); - - public abstract void xtreemfsServiceGetByName( - com.google.protobuf.RpcController controller, - org.xtreemfs.pbrpc.generatedinterfaces.DIR.serviceGetByNameRequest request, - com.google.protobuf.RpcCallback done); - - public abstract void xtreemfsServiceGetByType( - com.google.protobuf.RpcController controller, - org.xtreemfs.pbrpc.generatedinterfaces.DIR.serviceGetByTypeRequest request, - com.google.protobuf.RpcCallback done); - - public abstract void xtreemfsServiceGetByUuid( - com.google.protobuf.RpcController controller, - org.xtreemfs.pbrpc.generatedinterfaces.DIR.serviceGetByUUIDRequest request, - com.google.protobuf.RpcCallback done); - - public abstract void xtreemfsServiceOffline( - com.google.protobuf.RpcController controller, - org.xtreemfs.pbrpc.generatedinterfaces.DIR.serviceGetByUUIDRequest request, - com.google.protobuf.RpcCallback done); - - public abstract void xtreemfsServiceRegister( - com.google.protobuf.RpcController controller, - org.xtreemfs.pbrpc.generatedinterfaces.DIR.serviceRegisterRequest request, - com.google.protobuf.RpcCallback done); - - public abstract void xtreemfsCheckpoint( - com.google.protobuf.RpcController controller, - org.xtreemfs.pbrpc.generatedinterfaces.Common.emptyRequest request, - com.google.protobuf.RpcCallback done); - - public abstract void xtreemfsShutdown( - com.google.protobuf.RpcController controller, - org.xtreemfs.pbrpc.generatedinterfaces.Common.emptyRequest request, - com.google.protobuf.RpcCallback done); - - public abstract void xtreemfsConfigurationGet( - com.google.protobuf.RpcController controller, - org.xtreemfs.pbrpc.generatedinterfaces.DIR.configurationGetRequest request, - com.google.protobuf.RpcCallback done); - - public abstract void xtreemfsConfigurationSet( - com.google.protobuf.RpcController controller, - org.xtreemfs.pbrpc.generatedinterfaces.DIR.Configuration request, - com.google.protobuf.RpcCallback done); - - public abstract void xtreemfsVivaldiClientUpdate( - com.google.protobuf.RpcController controller, - org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.VivaldiCoordinates request, - com.google.protobuf.RpcCallback done); - - public static final - com.google.protobuf.Descriptors.ServiceDescriptor - getDescriptor() { - return org.xtreemfs.pbrpc.generatedinterfaces.DIR.getDescriptor().getServices().get(0); - } - public final com.google.protobuf.Descriptors.ServiceDescriptor - getDescriptorForType() { - return getDescriptor(); - } - - public final void callMethod( - com.google.protobuf.Descriptors.MethodDescriptor method, - com.google.protobuf.RpcController controller, - com.google.protobuf.Message request, - com.google.protobuf.RpcCallback< - com.google.protobuf.Message> done) { - if (method.getService() != getDescriptor()) { - throw new java.lang.IllegalArgumentException( - "Service.callMethod() given method descriptor for wrong " + - "service type."); - } - switch(method.getIndex()) { - case 0: - this.xtreemfsAddressMappingsGet(controller, (org.xtreemfs.pbrpc.generatedinterfaces.DIR.addressMappingGetRequest)request, - com.google.protobuf.RpcUtil.specializeCallback( - done)); - return; - case 1: - this.xtreemfsAddressMappingsRemove(controller, (org.xtreemfs.pbrpc.generatedinterfaces.DIR.addressMappingGetRequest)request, - com.google.protobuf.RpcUtil.specializeCallback( - done)); - return; - case 2: - this.xtreemfsAddressMappingsSet(controller, (org.xtreemfs.pbrpc.generatedinterfaces.DIR.AddressMappingSet)request, - com.google.protobuf.RpcUtil.specializeCallback( - done)); - return; - case 3: - this.xtreemfsDiscoverDir(controller, (org.xtreemfs.pbrpc.generatedinterfaces.Common.emptyRequest)request, - com.google.protobuf.RpcUtil.specializeCallback( - done)); - return; - case 4: - this.xtreemfsGlobalTimeSGet(controller, (org.xtreemfs.pbrpc.generatedinterfaces.Common.emptyRequest)request, - com.google.protobuf.RpcUtil.specializeCallback( - done)); - return; - case 5: - this.xtreemfsServiceDeregister(controller, (org.xtreemfs.pbrpc.generatedinterfaces.DIR.serviceDeregisterRequest)request, - com.google.protobuf.RpcUtil.specializeCallback( - done)); - return; - case 6: - this.xtreemfsServiceGetByName(controller, (org.xtreemfs.pbrpc.generatedinterfaces.DIR.serviceGetByNameRequest)request, - com.google.protobuf.RpcUtil.specializeCallback( - done)); - return; - case 7: - this.xtreemfsServiceGetByType(controller, (org.xtreemfs.pbrpc.generatedinterfaces.DIR.serviceGetByTypeRequest)request, - com.google.protobuf.RpcUtil.specializeCallback( - done)); - return; - case 8: - this.xtreemfsServiceGetByUuid(controller, (org.xtreemfs.pbrpc.generatedinterfaces.DIR.serviceGetByUUIDRequest)request, - com.google.protobuf.RpcUtil.specializeCallback( - done)); - return; - case 9: - this.xtreemfsServiceOffline(controller, (org.xtreemfs.pbrpc.generatedinterfaces.DIR.serviceGetByUUIDRequest)request, - com.google.protobuf.RpcUtil.specializeCallback( - done)); - return; - case 10: - this.xtreemfsServiceRegister(controller, (org.xtreemfs.pbrpc.generatedinterfaces.DIR.serviceRegisterRequest)request, - com.google.protobuf.RpcUtil.specializeCallback( - done)); - return; - case 11: - this.xtreemfsCheckpoint(controller, (org.xtreemfs.pbrpc.generatedinterfaces.Common.emptyRequest)request, - com.google.protobuf.RpcUtil.specializeCallback( - done)); - return; - case 12: - this.xtreemfsShutdown(controller, (org.xtreemfs.pbrpc.generatedinterfaces.Common.emptyRequest)request, - com.google.protobuf.RpcUtil.specializeCallback( - done)); - return; - case 13: - this.xtreemfsConfigurationGet(controller, (org.xtreemfs.pbrpc.generatedinterfaces.DIR.configurationGetRequest)request, - com.google.protobuf.RpcUtil.specializeCallback( - done)); - return; - case 14: - this.xtreemfsConfigurationSet(controller, (org.xtreemfs.pbrpc.generatedinterfaces.DIR.Configuration)request, - com.google.protobuf.RpcUtil.specializeCallback( - done)); - return; - case 15: - this.xtreemfsVivaldiClientUpdate(controller, (org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.VivaldiCoordinates)request, - com.google.protobuf.RpcUtil.specializeCallback( - done)); - return; - default: - throw new java.lang.AssertionError("Can't get here."); - } - } - - public final com.google.protobuf.Message - getRequestPrototype( - com.google.protobuf.Descriptors.MethodDescriptor method) { - if (method.getService() != getDescriptor()) { - throw new java.lang.IllegalArgumentException( - "Service.getRequestPrototype() given method " + - "descriptor for wrong service type."); - } - switch(method.getIndex()) { - case 0: - return org.xtreemfs.pbrpc.generatedinterfaces.DIR.addressMappingGetRequest.getDefaultInstance(); - case 1: - return org.xtreemfs.pbrpc.generatedinterfaces.DIR.addressMappingGetRequest.getDefaultInstance(); - case 2: - return org.xtreemfs.pbrpc.generatedinterfaces.DIR.AddressMappingSet.getDefaultInstance(); - case 3: - return org.xtreemfs.pbrpc.generatedinterfaces.Common.emptyRequest.getDefaultInstance(); - case 4: - return org.xtreemfs.pbrpc.generatedinterfaces.Common.emptyRequest.getDefaultInstance(); - case 5: - return org.xtreemfs.pbrpc.generatedinterfaces.DIR.serviceDeregisterRequest.getDefaultInstance(); - case 6: - return org.xtreemfs.pbrpc.generatedinterfaces.DIR.serviceGetByNameRequest.getDefaultInstance(); - case 7: - return org.xtreemfs.pbrpc.generatedinterfaces.DIR.serviceGetByTypeRequest.getDefaultInstance(); - case 8: - return org.xtreemfs.pbrpc.generatedinterfaces.DIR.serviceGetByUUIDRequest.getDefaultInstance(); - case 9: - return org.xtreemfs.pbrpc.generatedinterfaces.DIR.serviceGetByUUIDRequest.getDefaultInstance(); - case 10: - return org.xtreemfs.pbrpc.generatedinterfaces.DIR.serviceRegisterRequest.getDefaultInstance(); - case 11: - return org.xtreemfs.pbrpc.generatedinterfaces.Common.emptyRequest.getDefaultInstance(); - case 12: - return org.xtreemfs.pbrpc.generatedinterfaces.Common.emptyRequest.getDefaultInstance(); - case 13: - return org.xtreemfs.pbrpc.generatedinterfaces.DIR.configurationGetRequest.getDefaultInstance(); - case 14: - return org.xtreemfs.pbrpc.generatedinterfaces.DIR.Configuration.getDefaultInstance(); - case 15: - return org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.VivaldiCoordinates.getDefaultInstance(); - default: - throw new java.lang.AssertionError("Can't get here."); - } - } - - public final com.google.protobuf.Message - getResponsePrototype( - com.google.protobuf.Descriptors.MethodDescriptor method) { - if (method.getService() != getDescriptor()) { - throw new java.lang.IllegalArgumentException( - "Service.getResponsePrototype() given method " + - "descriptor for wrong service type."); - } - switch(method.getIndex()) { - case 0: - return org.xtreemfs.pbrpc.generatedinterfaces.DIR.AddressMappingSet.getDefaultInstance(); - case 1: - return org.xtreemfs.pbrpc.generatedinterfaces.Common.emptyResponse.getDefaultInstance(); - case 2: - return org.xtreemfs.pbrpc.generatedinterfaces.DIR.addressMappingSetResponse.getDefaultInstance(); - case 3: - return org.xtreemfs.pbrpc.generatedinterfaces.DIR.DirService.getDefaultInstance(); - case 4: - return org.xtreemfs.pbrpc.generatedinterfaces.DIR.globalTimeSGetResponse.getDefaultInstance(); - case 5: - return org.xtreemfs.pbrpc.generatedinterfaces.Common.emptyResponse.getDefaultInstance(); - case 6: - return org.xtreemfs.pbrpc.generatedinterfaces.DIR.ServiceSet.getDefaultInstance(); - case 7: - return org.xtreemfs.pbrpc.generatedinterfaces.DIR.ServiceSet.getDefaultInstance(); - case 8: - return org.xtreemfs.pbrpc.generatedinterfaces.DIR.ServiceSet.getDefaultInstance(); - case 9: - return org.xtreemfs.pbrpc.generatedinterfaces.Common.emptyResponse.getDefaultInstance(); - case 10: - return org.xtreemfs.pbrpc.generatedinterfaces.DIR.serviceRegisterResponse.getDefaultInstance(); - case 11: - return org.xtreemfs.pbrpc.generatedinterfaces.Common.emptyResponse.getDefaultInstance(); - case 12: - return org.xtreemfs.pbrpc.generatedinterfaces.Common.emptyResponse.getDefaultInstance(); - case 13: - return org.xtreemfs.pbrpc.generatedinterfaces.DIR.Configuration.getDefaultInstance(); - case 14: - return org.xtreemfs.pbrpc.generatedinterfaces.DIR.configurationSetResponse.getDefaultInstance(); - case 15: - return org.xtreemfs.pbrpc.generatedinterfaces.Common.emptyResponse.getDefaultInstance(); - default: - throw new java.lang.AssertionError("Can't get here."); - } - } - - public static Stub newStub( - com.google.protobuf.RpcChannel channel) { - return new Stub(channel); - } - - public static final class Stub extends org.xtreemfs.pbrpc.generatedinterfaces.DIR.DirectoryService implements Interface { - private Stub(com.google.protobuf.RpcChannel channel) { - this.channel = channel; - } - - private final com.google.protobuf.RpcChannel channel; - - public com.google.protobuf.RpcChannel getChannel() { - return channel; - } - - public void xtreemfsAddressMappingsGet( - com.google.protobuf.RpcController controller, - org.xtreemfs.pbrpc.generatedinterfaces.DIR.addressMappingGetRequest request, - com.google.protobuf.RpcCallback done) { - channel.callMethod( - getDescriptor().getMethods().get(0), - controller, - request, - org.xtreemfs.pbrpc.generatedinterfaces.DIR.AddressMappingSet.getDefaultInstance(), - com.google.protobuf.RpcUtil.generalizeCallback( - done, - org.xtreemfs.pbrpc.generatedinterfaces.DIR.AddressMappingSet.class, - org.xtreemfs.pbrpc.generatedinterfaces.DIR.AddressMappingSet.getDefaultInstance())); - } - - public void xtreemfsAddressMappingsRemove( - com.google.protobuf.RpcController controller, - org.xtreemfs.pbrpc.generatedinterfaces.DIR.addressMappingGetRequest request, - com.google.protobuf.RpcCallback done) { - channel.callMethod( - getDescriptor().getMethods().get(1), - controller, - request, - org.xtreemfs.pbrpc.generatedinterfaces.Common.emptyResponse.getDefaultInstance(), - com.google.protobuf.RpcUtil.generalizeCallback( - done, - org.xtreemfs.pbrpc.generatedinterfaces.Common.emptyResponse.class, - org.xtreemfs.pbrpc.generatedinterfaces.Common.emptyResponse.getDefaultInstance())); - } - - public void xtreemfsAddressMappingsSet( - com.google.protobuf.RpcController controller, - org.xtreemfs.pbrpc.generatedinterfaces.DIR.AddressMappingSet request, - com.google.protobuf.RpcCallback done) { - channel.callMethod( - getDescriptor().getMethods().get(2), - controller, - request, - org.xtreemfs.pbrpc.generatedinterfaces.DIR.addressMappingSetResponse.getDefaultInstance(), - com.google.protobuf.RpcUtil.generalizeCallback( - done, - org.xtreemfs.pbrpc.generatedinterfaces.DIR.addressMappingSetResponse.class, - org.xtreemfs.pbrpc.generatedinterfaces.DIR.addressMappingSetResponse.getDefaultInstance())); - } - - public void xtreemfsDiscoverDir( - com.google.protobuf.RpcController controller, - org.xtreemfs.pbrpc.generatedinterfaces.Common.emptyRequest request, - com.google.protobuf.RpcCallback done) { - channel.callMethod( - getDescriptor().getMethods().get(3), - controller, - request, - org.xtreemfs.pbrpc.generatedinterfaces.DIR.DirService.getDefaultInstance(), - com.google.protobuf.RpcUtil.generalizeCallback( - done, - org.xtreemfs.pbrpc.generatedinterfaces.DIR.DirService.class, - org.xtreemfs.pbrpc.generatedinterfaces.DIR.DirService.getDefaultInstance())); - } - - public void xtreemfsGlobalTimeSGet( - com.google.protobuf.RpcController controller, - org.xtreemfs.pbrpc.generatedinterfaces.Common.emptyRequest request, - com.google.protobuf.RpcCallback done) { - channel.callMethod( - getDescriptor().getMethods().get(4), - controller, - request, - org.xtreemfs.pbrpc.generatedinterfaces.DIR.globalTimeSGetResponse.getDefaultInstance(), - com.google.protobuf.RpcUtil.generalizeCallback( - done, - org.xtreemfs.pbrpc.generatedinterfaces.DIR.globalTimeSGetResponse.class, - org.xtreemfs.pbrpc.generatedinterfaces.DIR.globalTimeSGetResponse.getDefaultInstance())); - } - - public void xtreemfsServiceDeregister( - com.google.protobuf.RpcController controller, - org.xtreemfs.pbrpc.generatedinterfaces.DIR.serviceDeregisterRequest request, - com.google.protobuf.RpcCallback done) { - channel.callMethod( - getDescriptor().getMethods().get(5), - controller, - request, - org.xtreemfs.pbrpc.generatedinterfaces.Common.emptyResponse.getDefaultInstance(), - com.google.protobuf.RpcUtil.generalizeCallback( - done, - org.xtreemfs.pbrpc.generatedinterfaces.Common.emptyResponse.class, - org.xtreemfs.pbrpc.generatedinterfaces.Common.emptyResponse.getDefaultInstance())); - } - - public void xtreemfsServiceGetByName( - com.google.protobuf.RpcController controller, - org.xtreemfs.pbrpc.generatedinterfaces.DIR.serviceGetByNameRequest request, - com.google.protobuf.RpcCallback done) { - channel.callMethod( - getDescriptor().getMethods().get(6), - controller, - request, - org.xtreemfs.pbrpc.generatedinterfaces.DIR.ServiceSet.getDefaultInstance(), - com.google.protobuf.RpcUtil.generalizeCallback( - done, - org.xtreemfs.pbrpc.generatedinterfaces.DIR.ServiceSet.class, - org.xtreemfs.pbrpc.generatedinterfaces.DIR.ServiceSet.getDefaultInstance())); - } - - public void xtreemfsServiceGetByType( - com.google.protobuf.RpcController controller, - org.xtreemfs.pbrpc.generatedinterfaces.DIR.serviceGetByTypeRequest request, - com.google.protobuf.RpcCallback done) { - channel.callMethod( - getDescriptor().getMethods().get(7), - controller, - request, - org.xtreemfs.pbrpc.generatedinterfaces.DIR.ServiceSet.getDefaultInstance(), - com.google.protobuf.RpcUtil.generalizeCallback( - done, - org.xtreemfs.pbrpc.generatedinterfaces.DIR.ServiceSet.class, - org.xtreemfs.pbrpc.generatedinterfaces.DIR.ServiceSet.getDefaultInstance())); - } - - public void xtreemfsServiceGetByUuid( - com.google.protobuf.RpcController controller, - org.xtreemfs.pbrpc.generatedinterfaces.DIR.serviceGetByUUIDRequest request, - com.google.protobuf.RpcCallback done) { - channel.callMethod( - getDescriptor().getMethods().get(8), - controller, - request, - org.xtreemfs.pbrpc.generatedinterfaces.DIR.ServiceSet.getDefaultInstance(), - com.google.protobuf.RpcUtil.generalizeCallback( - done, - org.xtreemfs.pbrpc.generatedinterfaces.DIR.ServiceSet.class, - org.xtreemfs.pbrpc.generatedinterfaces.DIR.ServiceSet.getDefaultInstance())); - } - - public void xtreemfsServiceOffline( - com.google.protobuf.RpcController controller, - org.xtreemfs.pbrpc.generatedinterfaces.DIR.serviceGetByUUIDRequest request, - com.google.protobuf.RpcCallback done) { - channel.callMethod( - getDescriptor().getMethods().get(9), - controller, - request, - org.xtreemfs.pbrpc.generatedinterfaces.Common.emptyResponse.getDefaultInstance(), - com.google.protobuf.RpcUtil.generalizeCallback( - done, - org.xtreemfs.pbrpc.generatedinterfaces.Common.emptyResponse.class, - org.xtreemfs.pbrpc.generatedinterfaces.Common.emptyResponse.getDefaultInstance())); - } - - public void xtreemfsServiceRegister( - com.google.protobuf.RpcController controller, - org.xtreemfs.pbrpc.generatedinterfaces.DIR.serviceRegisterRequest request, - com.google.protobuf.RpcCallback done) { - channel.callMethod( - getDescriptor().getMethods().get(10), - controller, - request, - org.xtreemfs.pbrpc.generatedinterfaces.DIR.serviceRegisterResponse.getDefaultInstance(), - com.google.protobuf.RpcUtil.generalizeCallback( - done, - org.xtreemfs.pbrpc.generatedinterfaces.DIR.serviceRegisterResponse.class, - org.xtreemfs.pbrpc.generatedinterfaces.DIR.serviceRegisterResponse.getDefaultInstance())); - } - - public void xtreemfsCheckpoint( - com.google.protobuf.RpcController controller, - org.xtreemfs.pbrpc.generatedinterfaces.Common.emptyRequest request, - com.google.protobuf.RpcCallback done) { - channel.callMethod( - getDescriptor().getMethods().get(11), - controller, - request, - org.xtreemfs.pbrpc.generatedinterfaces.Common.emptyResponse.getDefaultInstance(), - com.google.protobuf.RpcUtil.generalizeCallback( - done, - org.xtreemfs.pbrpc.generatedinterfaces.Common.emptyResponse.class, - org.xtreemfs.pbrpc.generatedinterfaces.Common.emptyResponse.getDefaultInstance())); - } - - public void xtreemfsShutdown( - com.google.protobuf.RpcController controller, - org.xtreemfs.pbrpc.generatedinterfaces.Common.emptyRequest request, - com.google.protobuf.RpcCallback done) { - channel.callMethod( - getDescriptor().getMethods().get(12), - controller, - request, - org.xtreemfs.pbrpc.generatedinterfaces.Common.emptyResponse.getDefaultInstance(), - com.google.protobuf.RpcUtil.generalizeCallback( - done, - org.xtreemfs.pbrpc.generatedinterfaces.Common.emptyResponse.class, - org.xtreemfs.pbrpc.generatedinterfaces.Common.emptyResponse.getDefaultInstance())); - } - - public void xtreemfsConfigurationGet( - com.google.protobuf.RpcController controller, - org.xtreemfs.pbrpc.generatedinterfaces.DIR.configurationGetRequest request, - com.google.protobuf.RpcCallback done) { - channel.callMethod( - getDescriptor().getMethods().get(13), - controller, - request, - org.xtreemfs.pbrpc.generatedinterfaces.DIR.Configuration.getDefaultInstance(), - com.google.protobuf.RpcUtil.generalizeCallback( - done, - org.xtreemfs.pbrpc.generatedinterfaces.DIR.Configuration.class, - org.xtreemfs.pbrpc.generatedinterfaces.DIR.Configuration.getDefaultInstance())); - } - - public void xtreemfsConfigurationSet( - com.google.protobuf.RpcController controller, - org.xtreemfs.pbrpc.generatedinterfaces.DIR.Configuration request, - com.google.protobuf.RpcCallback done) { - channel.callMethod( - getDescriptor().getMethods().get(14), - controller, - request, - org.xtreemfs.pbrpc.generatedinterfaces.DIR.configurationSetResponse.getDefaultInstance(), - com.google.protobuf.RpcUtil.generalizeCallback( - done, - org.xtreemfs.pbrpc.generatedinterfaces.DIR.configurationSetResponse.class, - org.xtreemfs.pbrpc.generatedinterfaces.DIR.configurationSetResponse.getDefaultInstance())); - } - - public void xtreemfsVivaldiClientUpdate( - com.google.protobuf.RpcController controller, - org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.VivaldiCoordinates request, - com.google.protobuf.RpcCallback done) { - channel.callMethod( - getDescriptor().getMethods().get(15), - controller, - request, - org.xtreemfs.pbrpc.generatedinterfaces.Common.emptyResponse.getDefaultInstance(), - com.google.protobuf.RpcUtil.generalizeCallback( - done, - org.xtreemfs.pbrpc.generatedinterfaces.Common.emptyResponse.class, - org.xtreemfs.pbrpc.generatedinterfaces.Common.emptyResponse.getDefaultInstance())); - } - } - - public static BlockingInterface newBlockingStub( - com.google.protobuf.BlockingRpcChannel channel) { - return new BlockingStub(channel); - } - - public interface BlockingInterface { - public org.xtreemfs.pbrpc.generatedinterfaces.DIR.AddressMappingSet xtreemfsAddressMappingsGet( - com.google.protobuf.RpcController controller, - org.xtreemfs.pbrpc.generatedinterfaces.DIR.addressMappingGetRequest request) - throws com.google.protobuf.ServiceException; - - public org.xtreemfs.pbrpc.generatedinterfaces.Common.emptyResponse xtreemfsAddressMappingsRemove( - com.google.protobuf.RpcController controller, - org.xtreemfs.pbrpc.generatedinterfaces.DIR.addressMappingGetRequest request) - throws com.google.protobuf.ServiceException; - - public org.xtreemfs.pbrpc.generatedinterfaces.DIR.addressMappingSetResponse xtreemfsAddressMappingsSet( - com.google.protobuf.RpcController controller, - org.xtreemfs.pbrpc.generatedinterfaces.DIR.AddressMappingSet request) - throws com.google.protobuf.ServiceException; - - public org.xtreemfs.pbrpc.generatedinterfaces.DIR.DirService xtreemfsDiscoverDir( - com.google.protobuf.RpcController controller, - org.xtreemfs.pbrpc.generatedinterfaces.Common.emptyRequest request) - throws com.google.protobuf.ServiceException; - - public org.xtreemfs.pbrpc.generatedinterfaces.DIR.globalTimeSGetResponse xtreemfsGlobalTimeSGet( - com.google.protobuf.RpcController controller, - org.xtreemfs.pbrpc.generatedinterfaces.Common.emptyRequest request) - throws com.google.protobuf.ServiceException; - - public org.xtreemfs.pbrpc.generatedinterfaces.Common.emptyResponse xtreemfsServiceDeregister( - com.google.protobuf.RpcController controller, - org.xtreemfs.pbrpc.generatedinterfaces.DIR.serviceDeregisterRequest request) - throws com.google.protobuf.ServiceException; - - public org.xtreemfs.pbrpc.generatedinterfaces.DIR.ServiceSet xtreemfsServiceGetByName( - com.google.protobuf.RpcController controller, - org.xtreemfs.pbrpc.generatedinterfaces.DIR.serviceGetByNameRequest request) - throws com.google.protobuf.ServiceException; - - public org.xtreemfs.pbrpc.generatedinterfaces.DIR.ServiceSet xtreemfsServiceGetByType( - com.google.protobuf.RpcController controller, - org.xtreemfs.pbrpc.generatedinterfaces.DIR.serviceGetByTypeRequest request) - throws com.google.protobuf.ServiceException; - - public org.xtreemfs.pbrpc.generatedinterfaces.DIR.ServiceSet xtreemfsServiceGetByUuid( - com.google.protobuf.RpcController controller, - org.xtreemfs.pbrpc.generatedinterfaces.DIR.serviceGetByUUIDRequest request) - throws com.google.protobuf.ServiceException; - - public org.xtreemfs.pbrpc.generatedinterfaces.Common.emptyResponse xtreemfsServiceOffline( - com.google.protobuf.RpcController controller, - org.xtreemfs.pbrpc.generatedinterfaces.DIR.serviceGetByUUIDRequest request) - throws com.google.protobuf.ServiceException; - - public org.xtreemfs.pbrpc.generatedinterfaces.DIR.serviceRegisterResponse xtreemfsServiceRegister( - com.google.protobuf.RpcController controller, - org.xtreemfs.pbrpc.generatedinterfaces.DIR.serviceRegisterRequest request) - throws com.google.protobuf.ServiceException; - - public org.xtreemfs.pbrpc.generatedinterfaces.Common.emptyResponse xtreemfsCheckpoint( - com.google.protobuf.RpcController controller, - org.xtreemfs.pbrpc.generatedinterfaces.Common.emptyRequest request) - throws com.google.protobuf.ServiceException; - - public org.xtreemfs.pbrpc.generatedinterfaces.Common.emptyResponse xtreemfsShutdown( - com.google.protobuf.RpcController controller, - org.xtreemfs.pbrpc.generatedinterfaces.Common.emptyRequest request) - throws com.google.protobuf.ServiceException; - - public org.xtreemfs.pbrpc.generatedinterfaces.DIR.Configuration xtreemfsConfigurationGet( - com.google.protobuf.RpcController controller, - org.xtreemfs.pbrpc.generatedinterfaces.DIR.configurationGetRequest request) - throws com.google.protobuf.ServiceException; - - public org.xtreemfs.pbrpc.generatedinterfaces.DIR.configurationSetResponse xtreemfsConfigurationSet( - com.google.protobuf.RpcController controller, - org.xtreemfs.pbrpc.generatedinterfaces.DIR.Configuration request) - throws com.google.protobuf.ServiceException; - - public org.xtreemfs.pbrpc.generatedinterfaces.Common.emptyResponse xtreemfsVivaldiClientUpdate( - com.google.protobuf.RpcController controller, - org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.VivaldiCoordinates request) - throws com.google.protobuf.ServiceException; - } - - private static final class BlockingStub implements BlockingInterface { - private BlockingStub(com.google.protobuf.BlockingRpcChannel channel) { - this.channel = channel; - } - - private final com.google.protobuf.BlockingRpcChannel channel; - - public org.xtreemfs.pbrpc.generatedinterfaces.DIR.AddressMappingSet xtreemfsAddressMappingsGet( - com.google.protobuf.RpcController controller, - org.xtreemfs.pbrpc.generatedinterfaces.DIR.addressMappingGetRequest request) - throws com.google.protobuf.ServiceException { - return (org.xtreemfs.pbrpc.generatedinterfaces.DIR.AddressMappingSet) channel.callBlockingMethod( - getDescriptor().getMethods().get(0), - controller, - request, - org.xtreemfs.pbrpc.generatedinterfaces.DIR.AddressMappingSet.getDefaultInstance()); - } - - - public org.xtreemfs.pbrpc.generatedinterfaces.Common.emptyResponse xtreemfsAddressMappingsRemove( - com.google.protobuf.RpcController controller, - org.xtreemfs.pbrpc.generatedinterfaces.DIR.addressMappingGetRequest request) - throws com.google.protobuf.ServiceException { - return (org.xtreemfs.pbrpc.generatedinterfaces.Common.emptyResponse) channel.callBlockingMethod( - getDescriptor().getMethods().get(1), - controller, - request, - org.xtreemfs.pbrpc.generatedinterfaces.Common.emptyResponse.getDefaultInstance()); - } - - - public org.xtreemfs.pbrpc.generatedinterfaces.DIR.addressMappingSetResponse xtreemfsAddressMappingsSet( - com.google.protobuf.RpcController controller, - org.xtreemfs.pbrpc.generatedinterfaces.DIR.AddressMappingSet request) - throws com.google.protobuf.ServiceException { - return (org.xtreemfs.pbrpc.generatedinterfaces.DIR.addressMappingSetResponse) channel.callBlockingMethod( - getDescriptor().getMethods().get(2), - controller, - request, - org.xtreemfs.pbrpc.generatedinterfaces.DIR.addressMappingSetResponse.getDefaultInstance()); - } - - - public org.xtreemfs.pbrpc.generatedinterfaces.DIR.DirService xtreemfsDiscoverDir( - com.google.protobuf.RpcController controller, - org.xtreemfs.pbrpc.generatedinterfaces.Common.emptyRequest request) - throws com.google.protobuf.ServiceException { - return (org.xtreemfs.pbrpc.generatedinterfaces.DIR.DirService) channel.callBlockingMethod( - getDescriptor().getMethods().get(3), - controller, - request, - org.xtreemfs.pbrpc.generatedinterfaces.DIR.DirService.getDefaultInstance()); - } - - - public org.xtreemfs.pbrpc.generatedinterfaces.DIR.globalTimeSGetResponse xtreemfsGlobalTimeSGet( - com.google.protobuf.RpcController controller, - org.xtreemfs.pbrpc.generatedinterfaces.Common.emptyRequest request) - throws com.google.protobuf.ServiceException { - return (org.xtreemfs.pbrpc.generatedinterfaces.DIR.globalTimeSGetResponse) channel.callBlockingMethod( - getDescriptor().getMethods().get(4), - controller, - request, - org.xtreemfs.pbrpc.generatedinterfaces.DIR.globalTimeSGetResponse.getDefaultInstance()); - } - - - public org.xtreemfs.pbrpc.generatedinterfaces.Common.emptyResponse xtreemfsServiceDeregister( - com.google.protobuf.RpcController controller, - org.xtreemfs.pbrpc.generatedinterfaces.DIR.serviceDeregisterRequest request) - throws com.google.protobuf.ServiceException { - return (org.xtreemfs.pbrpc.generatedinterfaces.Common.emptyResponse) channel.callBlockingMethod( - getDescriptor().getMethods().get(5), - controller, - request, - org.xtreemfs.pbrpc.generatedinterfaces.Common.emptyResponse.getDefaultInstance()); - } - - - public org.xtreemfs.pbrpc.generatedinterfaces.DIR.ServiceSet xtreemfsServiceGetByName( - com.google.protobuf.RpcController controller, - org.xtreemfs.pbrpc.generatedinterfaces.DIR.serviceGetByNameRequest request) - throws com.google.protobuf.ServiceException { - return (org.xtreemfs.pbrpc.generatedinterfaces.DIR.ServiceSet) channel.callBlockingMethod( - getDescriptor().getMethods().get(6), - controller, - request, - org.xtreemfs.pbrpc.generatedinterfaces.DIR.ServiceSet.getDefaultInstance()); - } - - - public org.xtreemfs.pbrpc.generatedinterfaces.DIR.ServiceSet xtreemfsServiceGetByType( - com.google.protobuf.RpcController controller, - org.xtreemfs.pbrpc.generatedinterfaces.DIR.serviceGetByTypeRequest request) - throws com.google.protobuf.ServiceException { - return (org.xtreemfs.pbrpc.generatedinterfaces.DIR.ServiceSet) channel.callBlockingMethod( - getDescriptor().getMethods().get(7), - controller, - request, - org.xtreemfs.pbrpc.generatedinterfaces.DIR.ServiceSet.getDefaultInstance()); - } - - - public org.xtreemfs.pbrpc.generatedinterfaces.DIR.ServiceSet xtreemfsServiceGetByUuid( - com.google.protobuf.RpcController controller, - org.xtreemfs.pbrpc.generatedinterfaces.DIR.serviceGetByUUIDRequest request) - throws com.google.protobuf.ServiceException { - return (org.xtreemfs.pbrpc.generatedinterfaces.DIR.ServiceSet) channel.callBlockingMethod( - getDescriptor().getMethods().get(8), - controller, - request, - org.xtreemfs.pbrpc.generatedinterfaces.DIR.ServiceSet.getDefaultInstance()); - } - - - public org.xtreemfs.pbrpc.generatedinterfaces.Common.emptyResponse xtreemfsServiceOffline( - com.google.protobuf.RpcController controller, - org.xtreemfs.pbrpc.generatedinterfaces.DIR.serviceGetByUUIDRequest request) - throws com.google.protobuf.ServiceException { - return (org.xtreemfs.pbrpc.generatedinterfaces.Common.emptyResponse) channel.callBlockingMethod( - getDescriptor().getMethods().get(9), - controller, - request, - org.xtreemfs.pbrpc.generatedinterfaces.Common.emptyResponse.getDefaultInstance()); - } - - - public org.xtreemfs.pbrpc.generatedinterfaces.DIR.serviceRegisterResponse xtreemfsServiceRegister( - com.google.protobuf.RpcController controller, - org.xtreemfs.pbrpc.generatedinterfaces.DIR.serviceRegisterRequest request) - throws com.google.protobuf.ServiceException { - return (org.xtreemfs.pbrpc.generatedinterfaces.DIR.serviceRegisterResponse) channel.callBlockingMethod( - getDescriptor().getMethods().get(10), - controller, - request, - org.xtreemfs.pbrpc.generatedinterfaces.DIR.serviceRegisterResponse.getDefaultInstance()); - } - - - public org.xtreemfs.pbrpc.generatedinterfaces.Common.emptyResponse xtreemfsCheckpoint( - com.google.protobuf.RpcController controller, - org.xtreemfs.pbrpc.generatedinterfaces.Common.emptyRequest request) - throws com.google.protobuf.ServiceException { - return (org.xtreemfs.pbrpc.generatedinterfaces.Common.emptyResponse) channel.callBlockingMethod( - getDescriptor().getMethods().get(11), - controller, - request, - org.xtreemfs.pbrpc.generatedinterfaces.Common.emptyResponse.getDefaultInstance()); - } - - - public org.xtreemfs.pbrpc.generatedinterfaces.Common.emptyResponse xtreemfsShutdown( - com.google.protobuf.RpcController controller, - org.xtreemfs.pbrpc.generatedinterfaces.Common.emptyRequest request) - throws com.google.protobuf.ServiceException { - return (org.xtreemfs.pbrpc.generatedinterfaces.Common.emptyResponse) channel.callBlockingMethod( - getDescriptor().getMethods().get(12), - controller, - request, - org.xtreemfs.pbrpc.generatedinterfaces.Common.emptyResponse.getDefaultInstance()); - } - - - public org.xtreemfs.pbrpc.generatedinterfaces.DIR.Configuration xtreemfsConfigurationGet( - com.google.protobuf.RpcController controller, - org.xtreemfs.pbrpc.generatedinterfaces.DIR.configurationGetRequest request) - throws com.google.protobuf.ServiceException { - return (org.xtreemfs.pbrpc.generatedinterfaces.DIR.Configuration) channel.callBlockingMethod( - getDescriptor().getMethods().get(13), - controller, - request, - org.xtreemfs.pbrpc.generatedinterfaces.DIR.Configuration.getDefaultInstance()); - } - - - public org.xtreemfs.pbrpc.generatedinterfaces.DIR.configurationSetResponse xtreemfsConfigurationSet( - com.google.protobuf.RpcController controller, - org.xtreemfs.pbrpc.generatedinterfaces.DIR.Configuration request) - throws com.google.protobuf.ServiceException { - return (org.xtreemfs.pbrpc.generatedinterfaces.DIR.configurationSetResponse) channel.callBlockingMethod( - getDescriptor().getMethods().get(14), - controller, - request, - org.xtreemfs.pbrpc.generatedinterfaces.DIR.configurationSetResponse.getDefaultInstance()); - } - - - public org.xtreemfs.pbrpc.generatedinterfaces.Common.emptyResponse xtreemfsVivaldiClientUpdate( - com.google.protobuf.RpcController controller, - org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.VivaldiCoordinates request) - throws com.google.protobuf.ServiceException { - return (org.xtreemfs.pbrpc.generatedinterfaces.Common.emptyResponse) channel.callBlockingMethod( - getDescriptor().getMethods().get(15), - controller, - request, - org.xtreemfs.pbrpc.generatedinterfaces.Common.emptyResponse.getDefaultInstance()); - } - - } - } - + private static com.google.protobuf.Descriptors.Descriptor internal_static_xtreemfs_pbrpc_AddressMapping_descriptor; private static @@ -7874,7 +13521,7 @@ public final class DIR { private static com.google.protobuf.GeneratedMessage.FieldAccessorTable internal_static_xtreemfs_pbrpc_configurationSetResponse_fieldAccessorTable; - + public static com.google.protobuf.Descriptors.FileDescriptor getDescriptor() { return descriptor; @@ -7982,159 +13629,134 @@ public final class DIR { internal_static_xtreemfs_pbrpc_AddressMapping_fieldAccessorTable = new com.google.protobuf.GeneratedMessage.FieldAccessorTable( internal_static_xtreemfs_pbrpc_AddressMapping_descriptor, - new java.lang.String[] { "Uuid", "Version", "Protocol", "Address", "Port", "MatchNetwork", "TtlS", "Uri", }, - org.xtreemfs.pbrpc.generatedinterfaces.DIR.AddressMapping.class, - org.xtreemfs.pbrpc.generatedinterfaces.DIR.AddressMapping.Builder.class); + new java.lang.String[] { "Uuid", "Version", "Protocol", "Address", "Port", "MatchNetwork", "TtlS", "Uri", }); internal_static_xtreemfs_pbrpc_AddressMappingSet_descriptor = getDescriptor().getMessageTypes().get(1); internal_static_xtreemfs_pbrpc_AddressMappingSet_fieldAccessorTable = new com.google.protobuf.GeneratedMessage.FieldAccessorTable( internal_static_xtreemfs_pbrpc_AddressMappingSet_descriptor, - new java.lang.String[] { "Mappings", }, - org.xtreemfs.pbrpc.generatedinterfaces.DIR.AddressMappingSet.class, - org.xtreemfs.pbrpc.generatedinterfaces.DIR.AddressMappingSet.Builder.class); + new java.lang.String[] { "Mappings", }); internal_static_xtreemfs_pbrpc_DirService_descriptor = getDescriptor().getMessageTypes().get(2); internal_static_xtreemfs_pbrpc_DirService_fieldAccessorTable = new com.google.protobuf.GeneratedMessage.FieldAccessorTable( internal_static_xtreemfs_pbrpc_DirService_descriptor, - new java.lang.String[] { "Address", "Port", "Protocol", "InterfaceVersion", }, - org.xtreemfs.pbrpc.generatedinterfaces.DIR.DirService.class, - org.xtreemfs.pbrpc.generatedinterfaces.DIR.DirService.Builder.class); + new java.lang.String[] { "Address", "Port", "Protocol", "InterfaceVersion", }); internal_static_xtreemfs_pbrpc_ServiceDataMap_descriptor = getDescriptor().getMessageTypes().get(3); internal_static_xtreemfs_pbrpc_ServiceDataMap_fieldAccessorTable = new com.google.protobuf.GeneratedMessage.FieldAccessorTable( internal_static_xtreemfs_pbrpc_ServiceDataMap_descriptor, - new java.lang.String[] { "Data", }, - org.xtreemfs.pbrpc.generatedinterfaces.DIR.ServiceDataMap.class, - org.xtreemfs.pbrpc.generatedinterfaces.DIR.ServiceDataMap.Builder.class); + new java.lang.String[] { "Data", }); internal_static_xtreemfs_pbrpc_Service_descriptor = getDescriptor().getMessageTypes().get(4); internal_static_xtreemfs_pbrpc_Service_fieldAccessorTable = new com.google.protobuf.GeneratedMessage.FieldAccessorTable( internal_static_xtreemfs_pbrpc_Service_descriptor, - new java.lang.String[] { "Type", "Uuid", "Version", "Name", "LastUpdatedS", "Data", }, - org.xtreemfs.pbrpc.generatedinterfaces.DIR.Service.class, - org.xtreemfs.pbrpc.generatedinterfaces.DIR.Service.Builder.class); + new java.lang.String[] { "Type", "Uuid", "Version", "Name", "LastUpdatedS", "Data", }); internal_static_xtreemfs_pbrpc_ServiceSet_descriptor = getDescriptor().getMessageTypes().get(5); internal_static_xtreemfs_pbrpc_ServiceSet_fieldAccessorTable = new com.google.protobuf.GeneratedMessage.FieldAccessorTable( internal_static_xtreemfs_pbrpc_ServiceSet_descriptor, - new java.lang.String[] { "Services", }, - org.xtreemfs.pbrpc.generatedinterfaces.DIR.ServiceSet.class, - org.xtreemfs.pbrpc.generatedinterfaces.DIR.ServiceSet.Builder.class); + new java.lang.String[] { "Services", }); internal_static_xtreemfs_pbrpc_Configuration_descriptor = getDescriptor().getMessageTypes().get(6); internal_static_xtreemfs_pbrpc_Configuration_fieldAccessorTable = new com.google.protobuf.GeneratedMessage.FieldAccessorTable( internal_static_xtreemfs_pbrpc_Configuration_descriptor, - new java.lang.String[] { "Uuid", "Parameter", "Version", }, - org.xtreemfs.pbrpc.generatedinterfaces.DIR.Configuration.class, - org.xtreemfs.pbrpc.generatedinterfaces.DIR.Configuration.Builder.class); + new java.lang.String[] { "Uuid", "Parameter", "Version", }); internal_static_xtreemfs_pbrpc_addressMappingGetRequest_descriptor = getDescriptor().getMessageTypes().get(7); internal_static_xtreemfs_pbrpc_addressMappingGetRequest_fieldAccessorTable = new com.google.protobuf.GeneratedMessage.FieldAccessorTable( internal_static_xtreemfs_pbrpc_addressMappingGetRequest_descriptor, - new java.lang.String[] { "Uuid", }, - org.xtreemfs.pbrpc.generatedinterfaces.DIR.addressMappingGetRequest.class, - org.xtreemfs.pbrpc.generatedinterfaces.DIR.addressMappingGetRequest.Builder.class); + new java.lang.String[] { "Uuid", }); internal_static_xtreemfs_pbrpc_addressMappingGetResponse_descriptor = getDescriptor().getMessageTypes().get(8); internal_static_xtreemfs_pbrpc_addressMappingGetResponse_fieldAccessorTable = new com.google.protobuf.GeneratedMessage.FieldAccessorTable( internal_static_xtreemfs_pbrpc_addressMappingGetResponse_descriptor, - new java.lang.String[] { "Result", }, - org.xtreemfs.pbrpc.generatedinterfaces.DIR.addressMappingGetResponse.class, - org.xtreemfs.pbrpc.generatedinterfaces.DIR.addressMappingGetResponse.Builder.class); + new java.lang.String[] { "Result", }); internal_static_xtreemfs_pbrpc_addressMappingSetResponse_descriptor = getDescriptor().getMessageTypes().get(9); internal_static_xtreemfs_pbrpc_addressMappingSetResponse_fieldAccessorTable = new com.google.protobuf.GeneratedMessage.FieldAccessorTable( internal_static_xtreemfs_pbrpc_addressMappingSetResponse_descriptor, - new java.lang.String[] { "NewVersion", }, - org.xtreemfs.pbrpc.generatedinterfaces.DIR.addressMappingSetResponse.class, - org.xtreemfs.pbrpc.generatedinterfaces.DIR.addressMappingSetResponse.Builder.class); + new java.lang.String[] { "NewVersion", }); internal_static_xtreemfs_pbrpc_globalTimeSGetResponse_descriptor = getDescriptor().getMessageTypes().get(10); internal_static_xtreemfs_pbrpc_globalTimeSGetResponse_fieldAccessorTable = new com.google.protobuf.GeneratedMessage.FieldAccessorTable( internal_static_xtreemfs_pbrpc_globalTimeSGetResponse_descriptor, - new java.lang.String[] { "TimeInSeconds", }, - org.xtreemfs.pbrpc.generatedinterfaces.DIR.globalTimeSGetResponse.class, - org.xtreemfs.pbrpc.generatedinterfaces.DIR.globalTimeSGetResponse.Builder.class); + new java.lang.String[] { "TimeInSeconds", }); internal_static_xtreemfs_pbrpc_serviceDeregisterRequest_descriptor = getDescriptor().getMessageTypes().get(11); internal_static_xtreemfs_pbrpc_serviceDeregisterRequest_fieldAccessorTable = new com.google.protobuf.GeneratedMessage.FieldAccessorTable( internal_static_xtreemfs_pbrpc_serviceDeregisterRequest_descriptor, - new java.lang.String[] { "Uuid", }, - org.xtreemfs.pbrpc.generatedinterfaces.DIR.serviceDeregisterRequest.class, - org.xtreemfs.pbrpc.generatedinterfaces.DIR.serviceDeregisterRequest.Builder.class); + new java.lang.String[] { "Uuid", }); internal_static_xtreemfs_pbrpc_serviceGetByNameRequest_descriptor = getDescriptor().getMessageTypes().get(12); internal_static_xtreemfs_pbrpc_serviceGetByNameRequest_fieldAccessorTable = new com.google.protobuf.GeneratedMessage.FieldAccessorTable( internal_static_xtreemfs_pbrpc_serviceGetByNameRequest_descriptor, - new java.lang.String[] { "Name", }, - org.xtreemfs.pbrpc.generatedinterfaces.DIR.serviceGetByNameRequest.class, - org.xtreemfs.pbrpc.generatedinterfaces.DIR.serviceGetByNameRequest.Builder.class); + new java.lang.String[] { "Name", }); internal_static_xtreemfs_pbrpc_serviceGetByUUIDRequest_descriptor = getDescriptor().getMessageTypes().get(13); internal_static_xtreemfs_pbrpc_serviceGetByUUIDRequest_fieldAccessorTable = new com.google.protobuf.GeneratedMessage.FieldAccessorTable( internal_static_xtreemfs_pbrpc_serviceGetByUUIDRequest_descriptor, - new java.lang.String[] { "Name", }, - org.xtreemfs.pbrpc.generatedinterfaces.DIR.serviceGetByUUIDRequest.class, - org.xtreemfs.pbrpc.generatedinterfaces.DIR.serviceGetByUUIDRequest.Builder.class); + new java.lang.String[] { "Name", }); internal_static_xtreemfs_pbrpc_serviceGetByTypeRequest_descriptor = getDescriptor().getMessageTypes().get(14); internal_static_xtreemfs_pbrpc_serviceGetByTypeRequest_fieldAccessorTable = new com.google.protobuf.GeneratedMessage.FieldAccessorTable( internal_static_xtreemfs_pbrpc_serviceGetByTypeRequest_descriptor, - new java.lang.String[] { "Type", }, - org.xtreemfs.pbrpc.generatedinterfaces.DIR.serviceGetByTypeRequest.class, - org.xtreemfs.pbrpc.generatedinterfaces.DIR.serviceGetByTypeRequest.Builder.class); + new java.lang.String[] { "Type", }); internal_static_xtreemfs_pbrpc_serviceRegisterRequest_descriptor = getDescriptor().getMessageTypes().get(15); internal_static_xtreemfs_pbrpc_serviceRegisterRequest_fieldAccessorTable = new com.google.protobuf.GeneratedMessage.FieldAccessorTable( internal_static_xtreemfs_pbrpc_serviceRegisterRequest_descriptor, - new java.lang.String[] { "Service", }, - org.xtreemfs.pbrpc.generatedinterfaces.DIR.serviceRegisterRequest.class, - org.xtreemfs.pbrpc.generatedinterfaces.DIR.serviceRegisterRequest.Builder.class); + new java.lang.String[] { "Service", }); internal_static_xtreemfs_pbrpc_serviceRegisterResponse_descriptor = getDescriptor().getMessageTypes().get(16); internal_static_xtreemfs_pbrpc_serviceRegisterResponse_fieldAccessorTable = new com.google.protobuf.GeneratedMessage.FieldAccessorTable( internal_static_xtreemfs_pbrpc_serviceRegisterResponse_descriptor, - new java.lang.String[] { "NewVersion", }, - org.xtreemfs.pbrpc.generatedinterfaces.DIR.serviceRegisterResponse.class, - org.xtreemfs.pbrpc.generatedinterfaces.DIR.serviceRegisterResponse.Builder.class); + new java.lang.String[] { "NewVersion", }); internal_static_xtreemfs_pbrpc_configurationGetRequest_descriptor = getDescriptor().getMessageTypes().get(17); internal_static_xtreemfs_pbrpc_configurationGetRequest_fieldAccessorTable = new com.google.protobuf.GeneratedMessage.FieldAccessorTable( internal_static_xtreemfs_pbrpc_configurationGetRequest_descriptor, - new java.lang.String[] { "Uuid", }, - org.xtreemfs.pbrpc.generatedinterfaces.DIR.configurationGetRequest.class, - org.xtreemfs.pbrpc.generatedinterfaces.DIR.configurationGetRequest.Builder.class); + new java.lang.String[] { "Uuid", }); internal_static_xtreemfs_pbrpc_configurationSetResponse_descriptor = getDescriptor().getMessageTypes().get(18); internal_static_xtreemfs_pbrpc_configurationSetResponse_fieldAccessorTable = new com.google.protobuf.GeneratedMessage.FieldAccessorTable( internal_static_xtreemfs_pbrpc_configurationSetResponse_descriptor, - new java.lang.String[] { "NewVersion", }, - org.xtreemfs.pbrpc.generatedinterfaces.DIR.configurationSetResponse.class, - org.xtreemfs.pbrpc.generatedinterfaces.DIR.configurationSetResponse.Builder.class); + new java.lang.String[] { "NewVersion", }); com.google.protobuf.ExtensionRegistry registry = com.google.protobuf.ExtensionRegistry.newInstance(); - registerAllExtensions(registry); - org.xtreemfs.foundation.pbrpc.generatedinterfaces.PBRPC.registerAllExtensions(registry); - org.xtreemfs.pbrpc.generatedinterfaces.Common.registerAllExtensions(registry); - org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.registerAllExtensions(registry); + registry.add(org.xtreemfs.foundation.pbrpc.generatedinterfaces.PBRPC.procId); + registry.add(org.xtreemfs.foundation.pbrpc.generatedinterfaces.PBRPC.procId); + registry.add(org.xtreemfs.foundation.pbrpc.generatedinterfaces.PBRPC.procId); + registry.add(org.xtreemfs.foundation.pbrpc.generatedinterfaces.PBRPC.procId); + registry.add(org.xtreemfs.foundation.pbrpc.generatedinterfaces.PBRPC.procId); + registry.add(org.xtreemfs.foundation.pbrpc.generatedinterfaces.PBRPC.procId); + registry.add(org.xtreemfs.foundation.pbrpc.generatedinterfaces.PBRPC.procId); + registry.add(org.xtreemfs.foundation.pbrpc.generatedinterfaces.PBRPC.procId); + registry.add(org.xtreemfs.foundation.pbrpc.generatedinterfaces.PBRPC.procId); + registry.add(org.xtreemfs.foundation.pbrpc.generatedinterfaces.PBRPC.procId); + registry.add(org.xtreemfs.foundation.pbrpc.generatedinterfaces.PBRPC.procId); + registry.add(org.xtreemfs.foundation.pbrpc.generatedinterfaces.PBRPC.procId); + registry.add(org.xtreemfs.foundation.pbrpc.generatedinterfaces.PBRPC.procId); + registry.add(org.xtreemfs.foundation.pbrpc.generatedinterfaces.PBRPC.procId); + registry.add(org.xtreemfs.foundation.pbrpc.generatedinterfaces.PBRPC.procId); + registry.add(org.xtreemfs.foundation.pbrpc.generatedinterfaces.PBRPC.procId); + registry.add(org.xtreemfs.foundation.pbrpc.generatedinterfaces.PBRPC.interfaceId); return registry; } }; @@ -8146,8 +13768,6 @@ public final class DIR { org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.getDescriptor(), }, assigner); } - - public static void internalForceInit() {} - + // @@protoc_insertion_point(outer_class_scope) } diff --git a/java/servers/src/org/xtreemfs/pbrpc/generatedinterfaces/DIRServiceClient.java b/java/servers/src/org/xtreemfs/pbrpc/generatedinterfaces/DIRServiceClient.java index dea311ba3..38034a990 100644 --- a/java/servers/src/org/xtreemfs/pbrpc/generatedinterfaces/DIRServiceClient.java +++ b/java/servers/src/org/xtreemfs/pbrpc/generatedinterfaces/DIRServiceClient.java @@ -1,4 +1,4 @@ -//automatically generated from DIR.proto at Thu Mar 21 17:09:46 CET 2013 +//automatically generated from DIR.proto at Mon Nov 11 11:46:59 CET 2013 //(c) 2013. See LICENSE file for details. package org.xtreemfs.pbrpc.generatedinterfaces; diff --git a/java/servers/src/org/xtreemfs/pbrpc/generatedinterfaces/DIRServiceConstants.java b/java/servers/src/org/xtreemfs/pbrpc/generatedinterfaces/DIRServiceConstants.java index 9f269a350..d67112bad 100644 --- a/java/servers/src/org/xtreemfs/pbrpc/generatedinterfaces/DIRServiceConstants.java +++ b/java/servers/src/org/xtreemfs/pbrpc/generatedinterfaces/DIRServiceConstants.java @@ -1,4 +1,4 @@ -//automatically generated from DIR.proto at Thu Mar 21 17:09:46 CET 2013 +//automatically generated from DIR.proto at Mon Nov 11 11:46:59 CET 2013 //(c) 2013. See LICENSE file for details. package org.xtreemfs.pbrpc.generatedinterfaces; diff --git a/java/servers/src/org/xtreemfs/pbrpc/generatedinterfaces/GlobalTypes.java b/java/servers/src/org/xtreemfs/pbrpc/generatedinterfaces/GlobalTypes.java index 19a85e3ac..fcdb8154a 100644 --- a/java/servers/src/org/xtreemfs/pbrpc/generatedinterfaces/GlobalTypes.java +++ b/java/servers/src/org/xtreemfs/pbrpc/generatedinterfaces/GlobalTypes.java @@ -8,16 +8,71 @@ public final class GlobalTypes { public static void registerAllExtensions( com.google.protobuf.ExtensionRegistry registry) { } + /** + * Protobuf enum {@code xtreemfs.pbrpc.AccessControlPolicyType} + * + *
+   * Access control policy for a volume.
+   * 
+ */ public enum AccessControlPolicyType implements com.google.protobuf.ProtocolMessageEnum { + /** + * ACCESS_CONTROL_POLICY_NULL = 1; + * + *
+     * No access control.
+     * 
+ */ ACCESS_CONTROL_POLICY_NULL(0, 1), + /** + * ACCESS_CONTROL_POLICY_POSIX = 2; + * + *
+     * Regular POSIX permission and ACL-based access control.
+     * 
+ */ ACCESS_CONTROL_POLICY_POSIX(1, 2), + /** + * ACCESS_CONTROL_POLICY_VOLUME = 3; + * + *
+     * Permissions per volume (instead of per directory),
+     * faster since hierarchical evaluation is skipped.
+     * 
+ */ ACCESS_CONTROL_POLICY_VOLUME(2, 3), ; - - + + /** + * ACCESS_CONTROL_POLICY_NULL = 1; + * + *
+     * No access control.
+     * 
+ */ + public static final int ACCESS_CONTROL_POLICY_NULL_VALUE = 1; + /** + * ACCESS_CONTROL_POLICY_POSIX = 2; + * + *
+     * Regular POSIX permission and ACL-based access control.
+     * 
+ */ + public static final int ACCESS_CONTROL_POLICY_POSIX_VALUE = 2; + /** + * ACCESS_CONTROL_POLICY_VOLUME = 3; + * + *
+     * Permissions per volume (instead of per directory),
+     * faster since hierarchical evaluation is skipped.
+     * 
+ */ + public static final int ACCESS_CONTROL_POLICY_VOLUME_VALUE = 3; + + public final int getNumber() { return value; } - + public static AccessControlPolicyType valueOf(int value) { switch (value) { case 1: return ACCESS_CONTROL_POLICY_NULL; @@ -26,7 +81,7 @@ public final class GlobalTypes { default: return null; } } - + public static com.google.protobuf.Internal.EnumLiteMap internalGetValueMap() { return internalValueMap; @@ -35,10 +90,10 @@ public final class GlobalTypes { internalValueMap = new com.google.protobuf.Internal.EnumLiteMap() { public AccessControlPolicyType findValueByNumber(int number) { - return AccessControlPolicyType.valueOf(number) - ; } + return AccessControlPolicyType.valueOf(number); + } }; - + public final com.google.protobuf.Descriptors.EnumValueDescriptor getValueDescriptor() { return getDescriptor().getValues().get(index); @@ -51,10 +106,9 @@ public final class GlobalTypes { getDescriptor() { return org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.getDescriptor().getEnumTypes().get(0); } - - private static final AccessControlPolicyType[] VALUES = { - ACCESS_CONTROL_POLICY_NULL, ACCESS_CONTROL_POLICY_POSIX, ACCESS_CONTROL_POLICY_VOLUME, - }; + + private static final AccessControlPolicyType[] VALUES = values(); + public static AccessControlPolicyType valueOf( com.google.protobuf.Descriptors.EnumValueDescriptor desc) { if (desc.getType() != getDescriptor()) { @@ -63,38 +117,217 @@ public final class GlobalTypes { } return VALUES[desc.getIndex()]; } + private final int index; private final int value; + private AccessControlPolicyType(int index, int value) { this.index = index; this.value = value; } - - static { - org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.getDescriptor(); - } - + // @@protoc_insertion_point(enum_scope:xtreemfs.pbrpc.AccessControlPolicyType) } - + + /** + * Protobuf enum {@code xtreemfs.pbrpc.OSDSelectionPolicyType} + * + *
+   * Values for OSD (and Replica) selection policies.
+   * 
+ */ public enum OSDSelectionPolicyType implements com.google.protobuf.ProtocolMessageEnum { + /** + * OSD_SELECTION_POLICY_FILTER_DEFAULT = 1000; + * + *
+     * Default filter.
+     * 
+ */ OSD_SELECTION_POLICY_FILTER_DEFAULT(0, 1000), + /** + * OSD_SELECTION_POLICY_FILTER_FQDN = 1001; + * + *
+     * Filter based on the domain name (FQDN) of OSDs.
+     * 
+ */ OSD_SELECTION_POLICY_FILTER_FQDN(1, 1001), + /** + * OSD_SELECTION_POLICY_FILTER_UUID = 1002; + * + *
+     * Filter based on the UUID of OSDs.
+     * 
+ */ OSD_SELECTION_POLICY_FILTER_UUID(2, 1002), + /** + * OSD_SELECTION_POLICY_GROUP_DCMAP = 2000; + * + *
+     * Groups OSDs according to their location in the
+     * datacenter map.
+     * 
+ */ OSD_SELECTION_POLICY_GROUP_DCMAP(3, 2000), + /** + * OSD_SELECTION_POLICY_GROUP_FQDN = 2001; + * + *
+     * Groups OSDs accroding to their domain names.
+     * 
+ */ OSD_SELECTION_POLICY_GROUP_FQDN(4, 2001), + /** + * OSD_SELECTION_POLICY_SORT_DCMAP = 3000; + * + *
+     * Sorts the OSDs by distance from client calculated
+     * using the datacenter map.
+     * 
+ */ OSD_SELECTION_POLICY_SORT_DCMAP(5, 3000), + /** + * OSD_SELECTION_POLICY_SORT_FQDN = 3001; + * + *
+     * Sorts the OSDs by longest postfix match of the FQDN
+     * of OSD and client.
+     * 
+ */ OSD_SELECTION_POLICY_SORT_FQDN(6, 3001), + /** + * OSD_SELECTION_POLICY_SORT_RANDOM = 3002; + * + *
+     * Random order.
+     * 
+ */ OSD_SELECTION_POLICY_SORT_RANDOM(7, 3002), + /** + * OSD_SELECTION_POLICY_SORT_VIVALDI = 3003; + * + *
+     * Sorts the OSDs by proximity of vivalid network
+     * coordinates of the client.
+     * 
+ */ OSD_SELECTION_POLICY_SORT_VIVALDI(8, 3003), + /** + * OSD_SELECTION_POLICY_SORT_UUID = 3998; + * + *
+     * Sortes the OSDs by their UUID.
+     * 
+ */ OSD_SELECTION_POLICY_SORT_UUID(9, 3998), + /** + * OSD_SELECTION_POLICY_SORT_REVERSE = 3999; + * + *
+     * Reverse given list. Used only internally by unit tests.
+     * 
+ */ OSD_SELECTION_POLICY_SORT_REVERSE(10, 3999), ; - - + + /** + * OSD_SELECTION_POLICY_FILTER_DEFAULT = 1000; + * + *
+     * Default filter.
+     * 
+ */ + public static final int OSD_SELECTION_POLICY_FILTER_DEFAULT_VALUE = 1000; + /** + * OSD_SELECTION_POLICY_FILTER_FQDN = 1001; + * + *
+     * Filter based on the domain name (FQDN) of OSDs.
+     * 
+ */ + public static final int OSD_SELECTION_POLICY_FILTER_FQDN_VALUE = 1001; + /** + * OSD_SELECTION_POLICY_FILTER_UUID = 1002; + * + *
+     * Filter based on the UUID of OSDs.
+     * 
+ */ + public static final int OSD_SELECTION_POLICY_FILTER_UUID_VALUE = 1002; + /** + * OSD_SELECTION_POLICY_GROUP_DCMAP = 2000; + * + *
+     * Groups OSDs according to their location in the
+     * datacenter map.
+     * 
+ */ + public static final int OSD_SELECTION_POLICY_GROUP_DCMAP_VALUE = 2000; + /** + * OSD_SELECTION_POLICY_GROUP_FQDN = 2001; + * + *
+     * Groups OSDs accroding to their domain names.
+     * 
+ */ + public static final int OSD_SELECTION_POLICY_GROUP_FQDN_VALUE = 2001; + /** + * OSD_SELECTION_POLICY_SORT_DCMAP = 3000; + * + *
+     * Sorts the OSDs by distance from client calculated
+     * using the datacenter map.
+     * 
+ */ + public static final int OSD_SELECTION_POLICY_SORT_DCMAP_VALUE = 3000; + /** + * OSD_SELECTION_POLICY_SORT_FQDN = 3001; + * + *
+     * Sorts the OSDs by longest postfix match of the FQDN
+     * of OSD and client.
+     * 
+ */ + public static final int OSD_SELECTION_POLICY_SORT_FQDN_VALUE = 3001; + /** + * OSD_SELECTION_POLICY_SORT_RANDOM = 3002; + * + *
+     * Random order.
+     * 
+ */ + public static final int OSD_SELECTION_POLICY_SORT_RANDOM_VALUE = 3002; + /** + * OSD_SELECTION_POLICY_SORT_VIVALDI = 3003; + * + *
+     * Sorts the OSDs by proximity of vivalid network
+     * coordinates of the client.
+     * 
+ */ + public static final int OSD_SELECTION_POLICY_SORT_VIVALDI_VALUE = 3003; + /** + * OSD_SELECTION_POLICY_SORT_UUID = 3998; + * + *
+     * Sortes the OSDs by their UUID.
+     * 
+ */ + public static final int OSD_SELECTION_POLICY_SORT_UUID_VALUE = 3998; + /** + * OSD_SELECTION_POLICY_SORT_REVERSE = 3999; + * + *
+     * Reverse given list. Used only internally by unit tests.
+     * 
+ */ + public static final int OSD_SELECTION_POLICY_SORT_REVERSE_VALUE = 3999; + + public final int getNumber() { return value; } - + public static OSDSelectionPolicyType valueOf(int value) { switch (value) { case 1000: return OSD_SELECTION_POLICY_FILTER_DEFAULT; @@ -111,7 +344,7 @@ public final class GlobalTypes { default: return null; } } - + public static com.google.protobuf.Internal.EnumLiteMap internalGetValueMap() { return internalValueMap; @@ -120,10 +353,10 @@ public final class GlobalTypes { internalValueMap = new com.google.protobuf.Internal.EnumLiteMap() { public OSDSelectionPolicyType findValueByNumber(int number) { - return OSDSelectionPolicyType.valueOf(number) - ; } + return OSDSelectionPolicyType.valueOf(number); + } }; - + public final com.google.protobuf.Descriptors.EnumValueDescriptor getValueDescriptor() { return getDescriptor().getValues().get(index); @@ -136,10 +369,9 @@ public final class GlobalTypes { getDescriptor() { return org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.getDescriptor().getEnumTypes().get(1); } - - private static final OSDSelectionPolicyType[] VALUES = { - OSD_SELECTION_POLICY_FILTER_DEFAULT, OSD_SELECTION_POLICY_FILTER_FQDN, OSD_SELECTION_POLICY_FILTER_UUID, OSD_SELECTION_POLICY_GROUP_DCMAP, OSD_SELECTION_POLICY_GROUP_FQDN, OSD_SELECTION_POLICY_SORT_DCMAP, OSD_SELECTION_POLICY_SORT_FQDN, OSD_SELECTION_POLICY_SORT_RANDOM, OSD_SELECTION_POLICY_SORT_VIVALDI, OSD_SELECTION_POLICY_SORT_UUID, OSD_SELECTION_POLICY_SORT_REVERSE, - }; + + private static final OSDSelectionPolicyType[] VALUES = values(); + public static OSDSelectionPolicyType valueOf( com.google.protobuf.Descriptors.EnumValueDescriptor desc) { if (desc.getType() != getDescriptor()) { @@ -148,35 +380,44 @@ public final class GlobalTypes { } return VALUES[desc.getIndex()]; } + private final int index; private final int value; + private OSDSelectionPolicyType(int index, int value) { this.index = index; this.value = value; } - - static { - org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.getDescriptor(); - } - + // @@protoc_insertion_point(enum_scope:xtreemfs.pbrpc.OSDSelectionPolicyType) } - + + /** + * Protobuf enum {@code xtreemfs.pbrpc.ReplicaSelectionPolicyType} + */ public enum ReplicaSelectionPolicyType implements com.google.protobuf.ProtocolMessageEnum { + /** + * REPLICA_SELECTION_POLICY_SIMPLE = 1; + */ REPLICA_SELECTION_POLICY_SIMPLE(0, 1), ; - - + + /** + * REPLICA_SELECTION_POLICY_SIMPLE = 1; + */ + public static final int REPLICA_SELECTION_POLICY_SIMPLE_VALUE = 1; + + public final int getNumber() { return value; } - + public static ReplicaSelectionPolicyType valueOf(int value) { switch (value) { case 1: return REPLICA_SELECTION_POLICY_SIMPLE; default: return null; } } - + public static com.google.protobuf.Internal.EnumLiteMap internalGetValueMap() { return internalValueMap; @@ -185,10 +426,10 @@ public final class GlobalTypes { internalValueMap = new com.google.protobuf.Internal.EnumLiteMap() { public ReplicaSelectionPolicyType findValueByNumber(int number) { - return ReplicaSelectionPolicyType.valueOf(number) - ; } + return ReplicaSelectionPolicyType.valueOf(number); + } }; - + public final com.google.protobuf.Descriptors.EnumValueDescriptor getValueDescriptor() { return getDescriptor().getValues().get(index); @@ -201,10 +442,9 @@ public final class GlobalTypes { getDescriptor() { return org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.getDescriptor().getEnumTypes().get(2); } - - private static final ReplicaSelectionPolicyType[] VALUES = { - REPLICA_SELECTION_POLICY_SIMPLE, - }; + + private static final ReplicaSelectionPolicyType[] VALUES = values(); + public static ReplicaSelectionPolicyType valueOf( com.google.protobuf.Descriptors.EnumValueDescriptor desc) { if (desc.getType() != getDescriptor()) { @@ -213,30 +453,81 @@ public final class GlobalTypes { } return VALUES[desc.getIndex()]; } + private final int index; private final int value; + private ReplicaSelectionPolicyType(int index, int value) { this.index = index; this.value = value; } - - static { - org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.getDescriptor(); - } - + // @@protoc_insertion_point(enum_scope:xtreemfs.pbrpc.ReplicaSelectionPolicyType) } - + + /** + * Protobuf enum {@code xtreemfs.pbrpc.SnapConfig} + * + *
+   * Configuration for file data snapshots.
+   * 
+ */ public enum SnapConfig implements com.google.protobuf.ProtocolMessageEnum { + /** + * SNAP_CONFIG_SNAPS_DISABLED = 0; + * + *
+     * Indicates that snapshots are disabled.
+     * 
+ */ SNAP_CONFIG_SNAPS_DISABLED(0, 0), + /** + * SNAP_CONFIG_ACCESS_CURRENT = 1; + * + *
+     * Indicates access to the current version of a file.
+     * 
+ */ SNAP_CONFIG_ACCESS_CURRENT(1, 1), + /** + * SNAP_CONFIG_ACCESS_SNAP = 2; + * + *
+     * Indicates access to a snapshot of a file.
+     * 
+ */ SNAP_CONFIG_ACCESS_SNAP(2, 2), ; - - + + /** + * SNAP_CONFIG_SNAPS_DISABLED = 0; + * + *
+     * Indicates that snapshots are disabled.
+     * 
+ */ + public static final int SNAP_CONFIG_SNAPS_DISABLED_VALUE = 0; + /** + * SNAP_CONFIG_ACCESS_CURRENT = 1; + * + *
+     * Indicates access to the current version of a file.
+     * 
+ */ + public static final int SNAP_CONFIG_ACCESS_CURRENT_VALUE = 1; + /** + * SNAP_CONFIG_ACCESS_SNAP = 2; + * + *
+     * Indicates access to a snapshot of a file.
+     * 
+ */ + public static final int SNAP_CONFIG_ACCESS_SNAP_VALUE = 2; + + public final int getNumber() { return value; } - + public static SnapConfig valueOf(int value) { switch (value) { case 0: return SNAP_CONFIG_SNAPS_DISABLED; @@ -245,7 +536,7 @@ public final class GlobalTypes { default: return null; } } - + public static com.google.protobuf.Internal.EnumLiteMap internalGetValueMap() { return internalValueMap; @@ -254,10 +545,10 @@ public final class GlobalTypes { internalValueMap = new com.google.protobuf.Internal.EnumLiteMap() { public SnapConfig findValueByNumber(int number) { - return SnapConfig.valueOf(number) - ; } + return SnapConfig.valueOf(number); + } }; - + public final com.google.protobuf.Descriptors.EnumValueDescriptor getValueDescriptor() { return getDescriptor().getValues().get(index); @@ -270,10 +561,9 @@ public final class GlobalTypes { getDescriptor() { return org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.getDescriptor().getEnumTypes().get(3); } - - private static final SnapConfig[] VALUES = { - SNAP_CONFIG_SNAPS_DISABLED, SNAP_CONFIG_ACCESS_CURRENT, SNAP_CONFIG_ACCESS_SNAP, - }; + + private static final SnapConfig[] VALUES = values(); + public static SnapConfig valueOf( com.google.protobuf.Descriptors.EnumValueDescriptor desc) { if (desc.getType() != getDescriptor()) { @@ -282,35 +572,52 @@ public final class GlobalTypes { } return VALUES[desc.getIndex()]; } + private final int index; private final int value; + private SnapConfig(int index, int value) { this.index = index; this.value = value; } - - static { - org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.getDescriptor(); - } - + // @@protoc_insertion_point(enum_scope:xtreemfs.pbrpc.SnapConfig) } - + + /** + * Protobuf enum {@code xtreemfs.pbrpc.StripingPolicyType} + */ public enum StripingPolicyType implements com.google.protobuf.ProtocolMessageEnum { + /** + * STRIPING_POLICY_RAID0 = 0; + * + *
+     * Default striping policy (round-robin distribution).
+     * 
+ */ STRIPING_POLICY_RAID0(0, 0), ; - - + + /** + * STRIPING_POLICY_RAID0 = 0; + * + *
+     * Default striping policy (round-robin distribution).
+     * 
+ */ + public static final int STRIPING_POLICY_RAID0_VALUE = 0; + + public final int getNumber() { return value; } - + public static StripingPolicyType valueOf(int value) { switch (value) { case 0: return STRIPING_POLICY_RAID0; default: return null; } } - + public static com.google.protobuf.Internal.EnumLiteMap internalGetValueMap() { return internalValueMap; @@ -319,10 +626,10 @@ public final class GlobalTypes { internalValueMap = new com.google.protobuf.Internal.EnumLiteMap() { public StripingPolicyType findValueByNumber(int number) { - return StripingPolicyType.valueOf(number) - ; } + return StripingPolicyType.valueOf(number); + } }; - + public final com.google.protobuf.Descriptors.EnumValueDescriptor getValueDescriptor() { return getDescriptor().getValues().get(index); @@ -335,10 +642,9 @@ public final class GlobalTypes { getDescriptor() { return org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.getDescriptor().getEnumTypes().get(4); } - - private static final StripingPolicyType[] VALUES = { - STRIPING_POLICY_RAID0, - }; + + private static final StripingPolicyType[] VALUES = values(); + public static StripingPolicyType valueOf( com.google.protobuf.Descriptors.EnumValueDescriptor desc) { if (desc.getType() != getDescriptor()) { @@ -347,33 +653,82 @@ public final class GlobalTypes { } return VALUES[desc.getIndex()]; } + private final int index; private final int value; + private StripingPolicyType(int index, int value) { this.index = index; this.value = value; } - - static { - org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.getDescriptor(); - } - + // @@protoc_insertion_point(enum_scope:xtreemfs.pbrpc.StripingPolicyType) } - + + /** + * Protobuf enum {@code xtreemfs.pbrpc.PORTS} + * + *
+   * TCP ports used by the services.
+   * HTTP ports are used for the status pages.
+   * 
+ */ public enum PORTS implements com.google.protobuf.ProtocolMessageEnum { + /** + * DIR_HTTP_PORT_DEFAULT = 30638; + */ DIR_HTTP_PORT_DEFAULT(0, 30638), + /** + * DIR_PBRPC_PORT_DEFAULT = 32638; + */ DIR_PBRPC_PORT_DEFAULT(1, 32638), + /** + * MRC_HTTP_PORT_DEFAULT = 30636; + */ MRC_HTTP_PORT_DEFAULT(2, 30636), + /** + * MRC_PBRPC_PORT_DEFAULT = 32636; + */ MRC_PBRPC_PORT_DEFAULT(3, 32636), + /** + * OSD_HTTP_PORT_DEFAULT = 30640; + */ OSD_HTTP_PORT_DEFAULT(4, 30640), + /** + * OSD_PBRPC_PORT_DEFAULT = 32640; + */ OSD_PBRPC_PORT_DEFAULT(5, 32640), ; - - + + /** + * DIR_HTTP_PORT_DEFAULT = 30638; + */ + public static final int DIR_HTTP_PORT_DEFAULT_VALUE = 30638; + /** + * DIR_PBRPC_PORT_DEFAULT = 32638; + */ + public static final int DIR_PBRPC_PORT_DEFAULT_VALUE = 32638; + /** + * MRC_HTTP_PORT_DEFAULT = 30636; + */ + public static final int MRC_HTTP_PORT_DEFAULT_VALUE = 30636; + /** + * MRC_PBRPC_PORT_DEFAULT = 32636; + */ + public static final int MRC_PBRPC_PORT_DEFAULT_VALUE = 32636; + /** + * OSD_HTTP_PORT_DEFAULT = 30640; + */ + public static final int OSD_HTTP_PORT_DEFAULT_VALUE = 30640; + /** + * OSD_PBRPC_PORT_DEFAULT = 32640; + */ + public static final int OSD_PBRPC_PORT_DEFAULT_VALUE = 32640; + + public final int getNumber() { return value; } - + public static PORTS valueOf(int value) { switch (value) { case 30638: return DIR_HTTP_PORT_DEFAULT; @@ -385,7 +740,7 @@ public final class GlobalTypes { default: return null; } } - + public static com.google.protobuf.Internal.EnumLiteMap internalGetValueMap() { return internalValueMap; @@ -394,10 +749,10 @@ public final class GlobalTypes { internalValueMap = new com.google.protobuf.Internal.EnumLiteMap() { public PORTS findValueByNumber(int number) { - return PORTS.valueOf(number) - ; } + return PORTS.valueOf(number); + } }; - + public final com.google.protobuf.Descriptors.EnumValueDescriptor getValueDescriptor() { return getDescriptor().getValues().get(index); @@ -410,10 +765,9 @@ public final class GlobalTypes { getDescriptor() { return org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.getDescriptor().getEnumTypes().get(5); } - - private static final PORTS[] VALUES = { - DIR_HTTP_PORT_DEFAULT, DIR_PBRPC_PORT_DEFAULT, MRC_HTTP_PORT_DEFAULT, MRC_PBRPC_PORT_DEFAULT, OSD_HTTP_PORT_DEFAULT, OSD_PBRPC_PORT_DEFAULT, - }; + + private static final PORTS[] VALUES = values(); + public static PORTS valueOf( com.google.protobuf.Descriptors.EnumValueDescriptor desc) { if (desc.getType() != getDescriptor()) { @@ -422,35 +776,48 @@ public final class GlobalTypes { } return VALUES[desc.getIndex()]; } + private final int index; private final int value; + private PORTS(int index, int value) { this.index = index; this.value = value; } - - static { - org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.getDescriptor(); - } - + // @@protoc_insertion_point(enum_scope:xtreemfs.pbrpc.PORTS) } - + + /** + * Protobuf enum {@code xtreemfs.pbrpc.CONSTANTS} + * + *
+   * Renew interval for clients.
+   * 
+ */ public enum CONSTANTS implements com.google.protobuf.ProtocolMessageEnum { + /** + * XCAP_RENEW_INTERVAL_IN_MIN = 1; + */ XCAP_RENEW_INTERVAL_IN_MIN(0, 1), ; - - + + /** + * XCAP_RENEW_INTERVAL_IN_MIN = 1; + */ + public static final int XCAP_RENEW_INTERVAL_IN_MIN_VALUE = 1; + + public final int getNumber() { return value; } - + public static CONSTANTS valueOf(int value) { switch (value) { case 1: return XCAP_RENEW_INTERVAL_IN_MIN; default: return null; } } - + public static com.google.protobuf.Internal.EnumLiteMap internalGetValueMap() { return internalValueMap; @@ -459,10 +826,10 @@ public final class GlobalTypes { internalValueMap = new com.google.protobuf.Internal.EnumLiteMap() { public CONSTANTS findValueByNumber(int number) { - return CONSTANTS.valueOf(number) - ; } + return CONSTANTS.valueOf(number); + } }; - + public final com.google.protobuf.Descriptors.EnumValueDescriptor getValueDescriptor() { return getDescriptor().getValues().get(index); @@ -475,10 +842,9 @@ public final class GlobalTypes { getDescriptor() { return org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.getDescriptor().getEnumTypes().get(6); } - - private static final CONSTANTS[] VALUES = { - XCAP_RENEW_INTERVAL_IN_MIN, - }; + + private static final CONSTANTS[] VALUES = values(); + public static CONSTANTS valueOf( com.google.protobuf.Descriptors.EnumValueDescriptor desc) { if (desc.getType() != getDescriptor()) { @@ -487,39 +853,130 @@ public final class GlobalTypes { } return VALUES[desc.getIndex()]; } + private final int index; private final int value; + private CONSTANTS(int index, int value) { this.index = index; this.value = value; } - - static { - org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.getDescriptor(); - } - + // @@protoc_insertion_point(enum_scope:xtreemfs.pbrpc.CONSTANTS) } - + + /** + * Protobuf enum {@code xtreemfs.pbrpc.SYSTEM_V_FCNTL} + * + *
+   * Flags for open command and access mode.
+   * Values are Linux, might be different for other platforms!
+   * 
+ */ public enum SYSTEM_V_FCNTL implements com.google.protobuf.ProtocolMessageEnum { + /** + * SYSTEM_V_FCNTL_H_O_RDONLY = 0; + */ SYSTEM_V_FCNTL_H_O_RDONLY(0, 0), + /** + * SYSTEM_V_FCNTL_H_O_WRONLY = 1; + */ SYSTEM_V_FCNTL_H_O_WRONLY(1, 1), + /** + * SYSTEM_V_FCNTL_H_O_RDWR = 2; + */ SYSTEM_V_FCNTL_H_O_RDWR(2, 2), + /** + * SYSTEM_V_FCNTL_H_O_APPEND = 8; + */ SYSTEM_V_FCNTL_H_O_APPEND(3, 8), + /** + * SYSTEM_V_FCNTL_H_O_CREAT = 256; + */ SYSTEM_V_FCNTL_H_O_CREAT(4, 256), + /** + * SYSTEM_V_FCNTL_H_O_TRUNC = 512; + */ SYSTEM_V_FCNTL_H_O_TRUNC(5, 512), + /** + * SYSTEM_V_FCNTL_H_O_EXCL = 1024; + */ SYSTEM_V_FCNTL_H_O_EXCL(6, 1024), + /** + * SYSTEM_V_FCNTL_H_O_SYNC = 16; + */ SYSTEM_V_FCNTL_H_O_SYNC(7, 16), + /** + * SYSTEM_V_FCNTL_H_S_IFREG = 32768; + */ SYSTEM_V_FCNTL_H_S_IFREG(8, 32768), + /** + * SYSTEM_V_FCNTL_H_S_IFDIR = 16384; + */ SYSTEM_V_FCNTL_H_S_IFDIR(9, 16384), + /** + * SYSTEM_V_FCNTL_H_S_IFLNK = 40960; + */ SYSTEM_V_FCNTL_H_S_IFLNK(10, 40960), + /** + * SYSTEM_V_FCNTL_H_S_IFIFO = 4096; + */ SYSTEM_V_FCNTL_H_S_IFIFO(11, 4096), ; - - + + /** + * SYSTEM_V_FCNTL_H_O_RDONLY = 0; + */ + public static final int SYSTEM_V_FCNTL_H_O_RDONLY_VALUE = 0; + /** + * SYSTEM_V_FCNTL_H_O_WRONLY = 1; + */ + public static final int SYSTEM_V_FCNTL_H_O_WRONLY_VALUE = 1; + /** + * SYSTEM_V_FCNTL_H_O_RDWR = 2; + */ + public static final int SYSTEM_V_FCNTL_H_O_RDWR_VALUE = 2; + /** + * SYSTEM_V_FCNTL_H_O_APPEND = 8; + */ + public static final int SYSTEM_V_FCNTL_H_O_APPEND_VALUE = 8; + /** + * SYSTEM_V_FCNTL_H_O_CREAT = 256; + */ + public static final int SYSTEM_V_FCNTL_H_O_CREAT_VALUE = 256; + /** + * SYSTEM_V_FCNTL_H_O_TRUNC = 512; + */ + public static final int SYSTEM_V_FCNTL_H_O_TRUNC_VALUE = 512; + /** + * SYSTEM_V_FCNTL_H_O_EXCL = 1024; + */ + public static final int SYSTEM_V_FCNTL_H_O_EXCL_VALUE = 1024; + /** + * SYSTEM_V_FCNTL_H_O_SYNC = 16; + */ + public static final int SYSTEM_V_FCNTL_H_O_SYNC_VALUE = 16; + /** + * SYSTEM_V_FCNTL_H_S_IFREG = 32768; + */ + public static final int SYSTEM_V_FCNTL_H_S_IFREG_VALUE = 32768; + /** + * SYSTEM_V_FCNTL_H_S_IFDIR = 16384; + */ + public static final int SYSTEM_V_FCNTL_H_S_IFDIR_VALUE = 16384; + /** + * SYSTEM_V_FCNTL_H_S_IFLNK = 40960; + */ + public static final int SYSTEM_V_FCNTL_H_S_IFLNK_VALUE = 40960; + /** + * SYSTEM_V_FCNTL_H_S_IFIFO = 4096; + */ + public static final int SYSTEM_V_FCNTL_H_S_IFIFO_VALUE = 4096; + + public final int getNumber() { return value; } - + public static SYSTEM_V_FCNTL valueOf(int value) { switch (value) { case 0: return SYSTEM_V_FCNTL_H_O_RDONLY; @@ -537,7 +994,7 @@ public final class GlobalTypes { default: return null; } } - + public static com.google.protobuf.Internal.EnumLiteMap internalGetValueMap() { return internalValueMap; @@ -546,10 +1003,10 @@ public final class GlobalTypes { internalValueMap = new com.google.protobuf.Internal.EnumLiteMap() { public SYSTEM_V_FCNTL findValueByNumber(int number) { - return SYSTEM_V_FCNTL.valueOf(number) - ; } + return SYSTEM_V_FCNTL.valueOf(number); + } }; - + public final com.google.protobuf.Descriptors.EnumValueDescriptor getValueDescriptor() { return getDescriptor().getValues().get(index); @@ -562,10 +1019,9 @@ public final class GlobalTypes { getDescriptor() { return org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.getDescriptor().getEnumTypes().get(7); } - - private static final SYSTEM_V_FCNTL[] VALUES = { - SYSTEM_V_FCNTL_H_O_RDONLY, SYSTEM_V_FCNTL_H_O_WRONLY, SYSTEM_V_FCNTL_H_O_RDWR, SYSTEM_V_FCNTL_H_O_APPEND, SYSTEM_V_FCNTL_H_O_CREAT, SYSTEM_V_FCNTL_H_O_TRUNC, SYSTEM_V_FCNTL_H_O_EXCL, SYSTEM_V_FCNTL_H_O_SYNC, SYSTEM_V_FCNTL_H_S_IFREG, SYSTEM_V_FCNTL_H_S_IFDIR, SYSTEM_V_FCNTL_H_S_IFLNK, SYSTEM_V_FCNTL_H_S_IFIFO, - }; + + private static final SYSTEM_V_FCNTL[] VALUES = values(); + public static SYSTEM_V_FCNTL valueOf( com.google.protobuf.Descriptors.EnumValueDescriptor desc) { if (desc.getType() != getDescriptor()) { @@ -574,33 +1030,82 @@ public final class GlobalTypes { } return VALUES[desc.getIndex()]; } + private final int index; private final int value; + private SYSTEM_V_FCNTL(int index, int value) { this.index = index; this.value = value; } - - static { - org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.getDescriptor(); - } - + // @@protoc_insertion_point(enum_scope:xtreemfs.pbrpc.SYSTEM_V_FCNTL) } - + + /** + * Protobuf enum {@code xtreemfs.pbrpc.REPL_FLAG} + * + *
+   * Flags for replication, multiple flags can be
+   * OR'ed.
+   * 
+ */ public enum REPL_FLAG implements com.google.protobuf.ProtocolMessageEnum { + /** + * REPL_FLAG_FULL_REPLICA = 1; + */ REPL_FLAG_FULL_REPLICA(0, 1), + /** + * REPL_FLAG_IS_COMPLETE = 2; + */ REPL_FLAG_IS_COMPLETE(1, 2), + /** + * REPL_FLAG_STRATEGY_RANDOM = 4; + */ REPL_FLAG_STRATEGY_RANDOM(2, 4), + /** + * REPL_FLAG_STRATEGY_RAREST_FIRST = 8; + */ REPL_FLAG_STRATEGY_RAREST_FIRST(3, 8), + /** + * REPL_FLAG_STRATEGY_SEQUENTIAL = 16; + */ REPL_FLAG_STRATEGY_SEQUENTIAL(4, 16), + /** + * REPL_FLAG_STRATEGY_SEQUENTIAL_PREFETCHING = 32; + */ REPL_FLAG_STRATEGY_SEQUENTIAL_PREFETCHING(5, 32), ; - - + + /** + * REPL_FLAG_FULL_REPLICA = 1; + */ + public static final int REPL_FLAG_FULL_REPLICA_VALUE = 1; + /** + * REPL_FLAG_IS_COMPLETE = 2; + */ + public static final int REPL_FLAG_IS_COMPLETE_VALUE = 2; + /** + * REPL_FLAG_STRATEGY_RANDOM = 4; + */ + public static final int REPL_FLAG_STRATEGY_RANDOM_VALUE = 4; + /** + * REPL_FLAG_STRATEGY_RAREST_FIRST = 8; + */ + public static final int REPL_FLAG_STRATEGY_RAREST_FIRST_VALUE = 8; + /** + * REPL_FLAG_STRATEGY_SEQUENTIAL = 16; + */ + public static final int REPL_FLAG_STRATEGY_SEQUENTIAL_VALUE = 16; + /** + * REPL_FLAG_STRATEGY_SEQUENTIAL_PREFETCHING = 32; + */ + public static final int REPL_FLAG_STRATEGY_SEQUENTIAL_PREFETCHING_VALUE = 32; + + public final int getNumber() { return value; } - + public static REPL_FLAG valueOf(int value) { switch (value) { case 1: return REPL_FLAG_FULL_REPLICA; @@ -612,7 +1117,7 @@ public final class GlobalTypes { default: return null; } } - + public static com.google.protobuf.Internal.EnumLiteMap internalGetValueMap() { return internalValueMap; @@ -621,10 +1126,10 @@ public final class GlobalTypes { internalValueMap = new com.google.protobuf.Internal.EnumLiteMap() { public REPL_FLAG findValueByNumber(int number) { - return REPL_FLAG.valueOf(number) - ; } + return REPL_FLAG.valueOf(number); + } }; - + public final com.google.protobuf.Descriptors.EnumValueDescriptor getValueDescriptor() { return getDescriptor().getValues().get(index); @@ -637,10 +1142,9 @@ public final class GlobalTypes { getDescriptor() { return org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.getDescriptor().getEnumTypes().get(8); } - - private static final REPL_FLAG[] VALUES = { - REPL_FLAG_FULL_REPLICA, REPL_FLAG_IS_COMPLETE, REPL_FLAG_STRATEGY_RANDOM, REPL_FLAG_STRATEGY_RAREST_FIRST, REPL_FLAG_STRATEGY_SEQUENTIAL, REPL_FLAG_STRATEGY_SEQUENTIAL_PREFETCHING, - }; + + private static final REPL_FLAG[] VALUES = values(); + public static REPL_FLAG valueOf( com.google.protobuf.Descriptors.EnumValueDescriptor desc) { if (desc.getType() != getDescriptor()) { @@ -649,30 +1153,53 @@ public final class GlobalTypes { } return VALUES[desc.getIndex()]; } + private final int index; private final int value; + private REPL_FLAG(int index, int value) { this.index = index; this.value = value; } - - static { - org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.getDescriptor(); - } - + // @@protoc_insertion_point(enum_scope:xtreemfs.pbrpc.REPL_FLAG) } - + + /** + * Protobuf enum {@code xtreemfs.pbrpc.SERVICES} + */ public enum SERVICES implements com.google.protobuf.ProtocolMessageEnum { + /** + * DIR = 1; + */ DIR(0, 1), + /** + * MRC = 2; + */ MRC(1, 2), + /** + * OSD = 3; + */ OSD(2, 3), ; - - + + /** + * DIR = 1; + */ + public static final int DIR_VALUE = 1; + /** + * MRC = 2; + */ + public static final int MRC_VALUE = 2; + /** + * OSD = 3; + */ + public static final int OSD_VALUE = 3; + + public final int getNumber() { return value; } - + public static SERVICES valueOf(int value) { switch (value) { case 1: return DIR; @@ -681,7 +1208,7 @@ public final class GlobalTypes { default: return null; } } - + public static com.google.protobuf.Internal.EnumLiteMap internalGetValueMap() { return internalValueMap; @@ -690,10 +1217,10 @@ public final class GlobalTypes { internalValueMap = new com.google.protobuf.Internal.EnumLiteMap() { public SERVICES findValueByNumber(int number) { - return SERVICES.valueOf(number) - ; } + return SERVICES.valueOf(number); + } }; - + public final com.google.protobuf.Descriptors.EnumValueDescriptor getValueDescriptor() { return getDescriptor().getValues().get(index); @@ -706,10 +1233,9 @@ public final class GlobalTypes { getDescriptor() { return org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.getDescriptor().getEnumTypes().get(9); } - - private static final SERVICES[] VALUES = { - DIR, MRC, OSD, - }; + + private static final SERVICES[] VALUES = values(); + public static SERVICES valueOf( com.google.protobuf.Descriptors.EnumValueDescriptor desc) { if (desc.getType() != getDescriptor()) { @@ -718,242 +1244,422 @@ public final class GlobalTypes { } return VALUES[desc.getIndex()]; } + private final int index; private final int value; + private SERVICES(int index, int value) { this.index = index; this.value = value; } - - static { - org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.getDescriptor(); - } - + // @@protoc_insertion_point(enum_scope:xtreemfs.pbrpc.SERVICES) } - + + public interface NewFileSizeOrBuilder + extends com.google.protobuf.MessageOrBuilder { + + // required fixed64 size_in_bytes = 1; + /** + * required fixed64 size_in_bytes = 1; + * + *
+     * New file size in bytes.
+     * 
+ */ + boolean hasSizeInBytes(); + /** + * required fixed64 size_in_bytes = 1; + * + *
+     * New file size in bytes.
+     * 
+ */ + long getSizeInBytes(); + + // required fixed32 truncate_epoch = 2; + /** + * required fixed32 truncate_epoch = 2; + * + *
+     * Truncate epoch to sort file size updates.
+     * 
+ */ + boolean hasTruncateEpoch(); + /** + * required fixed32 truncate_epoch = 2; + * + *
+     * Truncate epoch to sort file size updates.
+     * 
+ */ + int getTruncateEpoch(); + } + /** + * Protobuf type {@code xtreemfs.pbrpc.NewFileSize} + * + *
+   * File size update data sent by OSDs.
+   * 
+ */ public static final class NewFileSize extends - com.google.protobuf.GeneratedMessage { + com.google.protobuf.GeneratedMessage + implements NewFileSizeOrBuilder { // Use NewFileSize.newBuilder() to construct. - private NewFileSize() { - initFields(); + private NewFileSize(com.google.protobuf.GeneratedMessage.Builder builder) { + super(builder); + this.unknownFields = builder.getUnknownFields(); } - private NewFileSize(boolean noInit) {} - + private NewFileSize(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); } + private static final NewFileSize defaultInstance; public static NewFileSize getDefaultInstance() { return defaultInstance; } - + public NewFileSize getDefaultInstanceForType() { return defaultInstance; } - + + private final com.google.protobuf.UnknownFieldSet unknownFields; + @java.lang.Override + public final com.google.protobuf.UnknownFieldSet + getUnknownFields() { + return this.unknownFields; + } + private NewFileSize( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + initFields(); + int mutable_bitField0_ = 0; + com.google.protobuf.UnknownFieldSet.Builder unknownFields = + com.google.protobuf.UnknownFieldSet.newBuilder(); + try { + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch (tag) { + case 0: + done = true; + break; + default: { + if (!parseUnknownField(input, unknownFields, + extensionRegistry, tag)) { + done = true; + } + break; + } + case 9: { + bitField0_ |= 0x00000001; + sizeInBytes_ = input.readFixed64(); + break; + } + case 21: { + bitField0_ |= 0x00000002; + truncateEpoch_ = input.readFixed32(); + break; + } + } + } + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(this); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException( + e.getMessage()).setUnfinishedMessage(this); + } finally { + this.unknownFields = unknownFields.build(); + makeExtensionsImmutable(); + } + } public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { return org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.internal_static_xtreemfs_pbrpc_NewFileSize_descriptor; } - + protected com.google.protobuf.GeneratedMessage.FieldAccessorTable internalGetFieldAccessorTable() { - return org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.internal_static_xtreemfs_pbrpc_NewFileSize_fieldAccessorTable; + return org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.internal_static_xtreemfs_pbrpc_NewFileSize_fieldAccessorTable + .ensureFieldAccessorsInitialized( + org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.NewFileSize.class, org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.NewFileSize.Builder.class); + } + + public static com.google.protobuf.Parser PARSER = + new com.google.protobuf.AbstractParser() { + public NewFileSize parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return new NewFileSize(input, extensionRegistry); + } + }; + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; } - + + private int bitField0_; // required fixed64 size_in_bytes = 1; public static final int SIZE_IN_BYTES_FIELD_NUMBER = 1; - private boolean hasSizeInBytes; - private long sizeInBytes_ = 0L; - public boolean hasSizeInBytes() { return hasSizeInBytes; } - public long getSizeInBytes() { return sizeInBytes_; } - + private long sizeInBytes_; + /** + * required fixed64 size_in_bytes = 1; + * + *
+     * New file size in bytes.
+     * 
+ */ + public boolean hasSizeInBytes() { + return ((bitField0_ & 0x00000001) == 0x00000001); + } + /** + * required fixed64 size_in_bytes = 1; + * + *
+     * New file size in bytes.
+     * 
+ */ + public long getSizeInBytes() { + return sizeInBytes_; + } + // required fixed32 truncate_epoch = 2; public static final int TRUNCATE_EPOCH_FIELD_NUMBER = 2; - private boolean hasTruncateEpoch; - private int truncateEpoch_ = 0; - public boolean hasTruncateEpoch() { return hasTruncateEpoch; } - public int getTruncateEpoch() { return truncateEpoch_; } - + private int truncateEpoch_; + /** + * required fixed32 truncate_epoch = 2; + * + *
+     * Truncate epoch to sort file size updates.
+     * 
+ */ + public boolean hasTruncateEpoch() { + return ((bitField0_ & 0x00000002) == 0x00000002); + } + /** + * required fixed32 truncate_epoch = 2; + * + *
+     * Truncate epoch to sort file size updates.
+     * 
+ */ + public int getTruncateEpoch() { + return truncateEpoch_; + } + private void initFields() { + sizeInBytes_ = 0L; + truncateEpoch_ = 0; } + private byte memoizedIsInitialized = -1; public final boolean isInitialized() { - if (!hasSizeInBytes) return false; - if (!hasTruncateEpoch) return false; + byte isInitialized = memoizedIsInitialized; + if (isInitialized != -1) return isInitialized == 1; + + if (!hasSizeInBytes()) { + memoizedIsInitialized = 0; + return false; + } + if (!hasTruncateEpoch()) { + memoizedIsInitialized = 0; + return false; + } + memoizedIsInitialized = 1; return true; } - + public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException { getSerializedSize(); - if (hasSizeInBytes()) { - output.writeFixed64(1, getSizeInBytes()); + if (((bitField0_ & 0x00000001) == 0x00000001)) { + output.writeFixed64(1, sizeInBytes_); } - if (hasTruncateEpoch()) { - output.writeFixed32(2, getTruncateEpoch()); + if (((bitField0_ & 0x00000002) == 0x00000002)) { + output.writeFixed32(2, truncateEpoch_); } getUnknownFields().writeTo(output); } - + private int memoizedSerializedSize = -1; public int getSerializedSize() { int size = memoizedSerializedSize; if (size != -1) return size; - + size = 0; - if (hasSizeInBytes()) { + if (((bitField0_ & 0x00000001) == 0x00000001)) { size += com.google.protobuf.CodedOutputStream - .computeFixed64Size(1, getSizeInBytes()); + .computeFixed64Size(1, sizeInBytes_); } - if (hasTruncateEpoch()) { + if (((bitField0_ & 0x00000002) == 0x00000002)) { size += com.google.protobuf.CodedOutputStream - .computeFixed32Size(2, getTruncateEpoch()); + .computeFixed32Size(2, truncateEpoch_); } size += getUnknownFields().getSerializedSize(); memoizedSerializedSize = size; return size; } - + + private static final long serialVersionUID = 0L; + @java.lang.Override + protected java.lang.Object writeReplace() + throws java.io.ObjectStreamException { + return super.writeReplace(); + } + public static org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.NewFileSize parseFrom( com.google.protobuf.ByteString data) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data).buildParsed(); + return PARSER.parseFrom(data); } public static org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.NewFileSize parseFrom( com.google.protobuf.ByteString data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(data, extensionRegistry); } public static org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.NewFileSize parseFrom(byte[] data) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data).buildParsed(); + return PARSER.parseFrom(data); } public static org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.NewFileSize parseFrom( byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(data, extensionRegistry); } public static org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.NewFileSize parseFrom(java.io.InputStream input) throws java.io.IOException { - return newBuilder().mergeFrom(input).buildParsed(); + return PARSER.parseFrom(input); } public static org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.NewFileSize parseFrom( java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - return newBuilder().mergeFrom(input, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(input, extensionRegistry); } public static org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.NewFileSize parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException { - Builder builder = newBuilder(); - if (builder.mergeDelimitedFrom(input)) { - return builder.buildParsed(); - } else { - return null; - } + return PARSER.parseDelimitedFrom(input); } public static org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.NewFileSize parseDelimitedFrom( java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - Builder builder = newBuilder(); - if (builder.mergeDelimitedFrom(input, extensionRegistry)) { - return builder.buildParsed(); - } else { - return null; - } + return PARSER.parseDelimitedFrom(input, extensionRegistry); } public static org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.NewFileSize parseFrom( com.google.protobuf.CodedInputStream input) throws java.io.IOException { - return newBuilder().mergeFrom(input).buildParsed(); + return PARSER.parseFrom(input); } public static org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.NewFileSize parseFrom( com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - return newBuilder().mergeFrom(input, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(input, extensionRegistry); } - + public static Builder newBuilder() { return Builder.create(); } public Builder newBuilderForType() { return newBuilder(); } public static Builder newBuilder(org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.NewFileSize prototype) { return newBuilder().mergeFrom(prototype); } public Builder toBuilder() { return newBuilder(this); } - + + @java.lang.Override + protected Builder newBuilderForType( + com.google.protobuf.GeneratedMessage.BuilderParent parent) { + Builder builder = new Builder(parent); + return builder; + } + /** + * Protobuf type {@code xtreemfs.pbrpc.NewFileSize} + * + *
+     * File size update data sent by OSDs.
+     * 
+ */ public static final class Builder extends - com.google.protobuf.GeneratedMessage.Builder { - private org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.NewFileSize result; - + com.google.protobuf.GeneratedMessage.Builder + implements org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.NewFileSizeOrBuilder { + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.internal_static_xtreemfs_pbrpc_NewFileSize_descriptor; + } + + protected com.google.protobuf.GeneratedMessage.FieldAccessorTable + internalGetFieldAccessorTable() { + return org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.internal_static_xtreemfs_pbrpc_NewFileSize_fieldAccessorTable + .ensureFieldAccessorsInitialized( + org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.NewFileSize.class, org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.NewFileSize.Builder.class); + } + // Construct using org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.NewFileSize.newBuilder() - private Builder() {} - - private static Builder create() { - Builder builder = new Builder(); - builder.result = new org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.NewFileSize(); - return builder; + private Builder() { + maybeForceBuilderInitialization(); } - - protected org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.NewFileSize internalGetResult() { - return result; + + private Builder( + com.google.protobuf.GeneratedMessage.BuilderParent parent) { + super(parent); + maybeForceBuilderInitialization(); } - - public Builder clear() { - if (result == null) { - throw new IllegalStateException( - "Cannot call clear() after build()."); + private void maybeForceBuilderInitialization() { + if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) { } - result = new org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.NewFileSize(); + } + private static Builder create() { + return new Builder(); + } + + public Builder clear() { + super.clear(); + sizeInBytes_ = 0L; + bitField0_ = (bitField0_ & ~0x00000001); + truncateEpoch_ = 0; + bitField0_ = (bitField0_ & ~0x00000002); return this; } - + public Builder clone() { - return create().mergeFrom(result); + return create().mergeFrom(buildPartial()); } - + public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() { - return org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.NewFileSize.getDescriptor(); + return org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.internal_static_xtreemfs_pbrpc_NewFileSize_descriptor; } - + public org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.NewFileSize getDefaultInstanceForType() { return org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.NewFileSize.getDefaultInstance(); } - - public boolean isInitialized() { - return result.isInitialized(); - } + public org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.NewFileSize build() { - if (result != null && !isInitialized()) { + org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.NewFileSize result = buildPartial(); + if (!result.isInitialized()) { throw newUninitializedMessageException(result); } - return buildPartial(); - } - - private org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.NewFileSize buildParsed() - throws com.google.protobuf.InvalidProtocolBufferException { - if (!isInitialized()) { - throw newUninitializedMessageException( - result).asInvalidProtocolBufferException(); - } - return buildPartial(); + return result; } - + public org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.NewFileSize buildPartial() { - if (result == null) { - throw new IllegalStateException( - "build() has already been called on this Builder."); + org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.NewFileSize result = new org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.NewFileSize(this); + int from_bitField0_ = bitField0_; + int to_bitField0_ = 0; + if (((from_bitField0_ & 0x00000001) == 0x00000001)) { + to_bitField0_ |= 0x00000001; } - org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.NewFileSize returnMe = result; - result = null; - return returnMe; + result.sizeInBytes_ = sizeInBytes_; + if (((from_bitField0_ & 0x00000002) == 0x00000002)) { + to_bitField0_ |= 0x00000002; + } + result.truncateEpoch_ = truncateEpoch_; + result.bitField0_ = to_bitField0_; + onBuilt(); + return result; } - + public Builder mergeFrom(com.google.protobuf.Message other) { if (other instanceof org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.NewFileSize) { return mergeFrom((org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.NewFileSize)other); @@ -962,7 +1668,7 @@ public final class GlobalTypes { return this; } } - + public Builder mergeFrom(org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.NewFileSize other) { if (other == org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.NewFileSize.getDefaultInstance()) return this; if (other.hasSizeInBytes()) { @@ -974,327 +1680,614 @@ public final class GlobalTypes { this.mergeUnknownFields(other.getUnknownFields()); return this; } - + + public final boolean isInitialized() { + if (!hasSizeInBytes()) { + + return false; + } + if (!hasTruncateEpoch()) { + + return false; + } + return true; + } + public Builder mergeFrom( com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - com.google.protobuf.UnknownFieldSet.Builder unknownFields = - com.google.protobuf.UnknownFieldSet.newBuilder( - this.getUnknownFields()); - while (true) { - int tag = input.readTag(); - switch (tag) { - case 0: - this.setUnknownFields(unknownFields.build()); - return this; - default: { - if (!parseUnknownField(input, unknownFields, - extensionRegistry, tag)) { - this.setUnknownFields(unknownFields.build()); - return this; - } - break; - } - case 9: { - setSizeInBytes(input.readFixed64()); - break; - } - case 21: { - setTruncateEpoch(input.readFixed32()); - break; - } + org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.NewFileSize parsedMessage = null; + try { + parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + parsedMessage = (org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.NewFileSize) e.getUnfinishedMessage(); + throw e; + } finally { + if (parsedMessage != null) { + mergeFrom(parsedMessage); } } + return this; } - - + private int bitField0_; + // required fixed64 size_in_bytes = 1; + private long sizeInBytes_ ; + /** + * required fixed64 size_in_bytes = 1; + * + *
+       * New file size in bytes.
+       * 
+ */ public boolean hasSizeInBytes() { - return result.hasSizeInBytes(); - } + return ((bitField0_ & 0x00000001) == 0x00000001); + } + /** + * required fixed64 size_in_bytes = 1; + * + *
+       * New file size in bytes.
+       * 
+ */ public long getSizeInBytes() { - return result.getSizeInBytes(); - } + return sizeInBytes_; + } + /** + * required fixed64 size_in_bytes = 1; + * + *
+       * New file size in bytes.
+       * 
+ */ public Builder setSizeInBytes(long value) { - result.hasSizeInBytes = true; - result.sizeInBytes_ = value; + bitField0_ |= 0x00000001; + sizeInBytes_ = value; + onChanged(); return this; } + /** + * required fixed64 size_in_bytes = 1; + * + *
+       * New file size in bytes.
+       * 
+ */ public Builder clearSizeInBytes() { - result.hasSizeInBytes = false; - result.sizeInBytes_ = 0L; + bitField0_ = (bitField0_ & ~0x00000001); + sizeInBytes_ = 0L; + onChanged(); return this; } - + // required fixed32 truncate_epoch = 2; + private int truncateEpoch_ ; + /** + * required fixed32 truncate_epoch = 2; + * + *
+       * Truncate epoch to sort file size updates.
+       * 
+ */ public boolean hasTruncateEpoch() { - return result.hasTruncateEpoch(); - } + return ((bitField0_ & 0x00000002) == 0x00000002); + } + /** + * required fixed32 truncate_epoch = 2; + * + *
+       * Truncate epoch to sort file size updates.
+       * 
+ */ public int getTruncateEpoch() { - return result.getTruncateEpoch(); - } + return truncateEpoch_; + } + /** + * required fixed32 truncate_epoch = 2; + * + *
+       * Truncate epoch to sort file size updates.
+       * 
+ */ public Builder setTruncateEpoch(int value) { - result.hasTruncateEpoch = true; - result.truncateEpoch_ = value; + bitField0_ |= 0x00000002; + truncateEpoch_ = value; + onChanged(); return this; } + /** + * required fixed32 truncate_epoch = 2; + * + *
+       * Truncate epoch to sort file size updates.
+       * 
+ */ public Builder clearTruncateEpoch() { - result.hasTruncateEpoch = false; - result.truncateEpoch_ = 0; + bitField0_ = (bitField0_ & ~0x00000002); + truncateEpoch_ = 0; + onChanged(); return this; } - + // @@protoc_insertion_point(builder_scope:xtreemfs.pbrpc.NewFileSize) } - + static { defaultInstance = new NewFileSize(true); - org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.internalForceInit(); defaultInstance.initFields(); } - + // @@protoc_insertion_point(class_scope:xtreemfs.pbrpc.NewFileSize) } - + + public interface StripingPolicyOrBuilder + extends com.google.protobuf.MessageOrBuilder { + + // required .xtreemfs.pbrpc.StripingPolicyType type = 1; + /** + * required .xtreemfs.pbrpc.StripingPolicyType type = 1; + * + *
+     * Type, always STRIPING_POLICY_RAID0.
+     * 
+ */ + boolean hasType(); + /** + * required .xtreemfs.pbrpc.StripingPolicyType type = 1; + * + *
+     * Type, always STRIPING_POLICY_RAID0.
+     * 
+ */ + org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.StripingPolicyType getType(); + + // required fixed32 stripe_size = 2; + /** + * required fixed32 stripe_size = 2; + * + *
+     * Size of stripe (objects) in *kB*!
+     * 
+ */ + boolean hasStripeSize(); + /** + * required fixed32 stripe_size = 2; + * + *
+     * Size of stripe (objects) in *kB*!
+     * 
+ */ + int getStripeSize(); + + // required fixed32 width = 3; + /** + * required fixed32 width = 3; + * + *
+     * Number of OSDs to distribute stripes on.
+     * 
+ */ + boolean hasWidth(); + /** + * required fixed32 width = 3; + * + *
+     * Number of OSDs to distribute stripes on.
+     * 
+ */ + int getWidth(); + } + /** + * Protobuf type {@code xtreemfs.pbrpc.StripingPolicy} + */ public static final class StripingPolicy extends - com.google.protobuf.GeneratedMessage { + com.google.protobuf.GeneratedMessage + implements StripingPolicyOrBuilder { // Use StripingPolicy.newBuilder() to construct. - private StripingPolicy() { - initFields(); + private StripingPolicy(com.google.protobuf.GeneratedMessage.Builder builder) { + super(builder); + this.unknownFields = builder.getUnknownFields(); } - private StripingPolicy(boolean noInit) {} - + private StripingPolicy(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); } + private static final StripingPolicy defaultInstance; public static StripingPolicy getDefaultInstance() { return defaultInstance; } - + public StripingPolicy getDefaultInstanceForType() { return defaultInstance; } - + + private final com.google.protobuf.UnknownFieldSet unknownFields; + @java.lang.Override + public final com.google.protobuf.UnknownFieldSet + getUnknownFields() { + return this.unknownFields; + } + private StripingPolicy( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + initFields(); + int mutable_bitField0_ = 0; + com.google.protobuf.UnknownFieldSet.Builder unknownFields = + com.google.protobuf.UnknownFieldSet.newBuilder(); + try { + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch (tag) { + case 0: + done = true; + break; + default: { + if (!parseUnknownField(input, unknownFields, + extensionRegistry, tag)) { + done = true; + } + break; + } + case 8: { + int rawValue = input.readEnum(); + org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.StripingPolicyType value = org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.StripingPolicyType.valueOf(rawValue); + if (value == null) { + unknownFields.mergeVarintField(1, rawValue); + } else { + bitField0_ |= 0x00000001; + type_ = value; + } + break; + } + case 21: { + bitField0_ |= 0x00000002; + stripeSize_ = input.readFixed32(); + break; + } + case 29: { + bitField0_ |= 0x00000004; + width_ = input.readFixed32(); + break; + } + } + } + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(this); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException( + e.getMessage()).setUnfinishedMessage(this); + } finally { + this.unknownFields = unknownFields.build(); + makeExtensionsImmutable(); + } + } public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { return org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.internal_static_xtreemfs_pbrpc_StripingPolicy_descriptor; } - + protected com.google.protobuf.GeneratedMessage.FieldAccessorTable internalGetFieldAccessorTable() { - return org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.internal_static_xtreemfs_pbrpc_StripingPolicy_fieldAccessorTable; + return org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.internal_static_xtreemfs_pbrpc_StripingPolicy_fieldAccessorTable + .ensureFieldAccessorsInitialized( + org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.StripingPolicy.class, org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.StripingPolicy.Builder.class); + } + + public static com.google.protobuf.Parser PARSER = + new com.google.protobuf.AbstractParser() { + public StripingPolicy parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return new StripingPolicy(input, extensionRegistry); + } + }; + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; } - + + private int bitField0_; // required .xtreemfs.pbrpc.StripingPolicyType type = 1; public static final int TYPE_FIELD_NUMBER = 1; - private boolean hasType; private org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.StripingPolicyType type_; - public boolean hasType() { return hasType; } - public org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.StripingPolicyType getType() { return type_; } - + /** + * required .xtreemfs.pbrpc.StripingPolicyType type = 1; + * + *
+     * Type, always STRIPING_POLICY_RAID0.
+     * 
+ */ + public boolean hasType() { + return ((bitField0_ & 0x00000001) == 0x00000001); + } + /** + * required .xtreemfs.pbrpc.StripingPolicyType type = 1; + * + *
+     * Type, always STRIPING_POLICY_RAID0.
+     * 
+ */ + public org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.StripingPolicyType getType() { + return type_; + } + // required fixed32 stripe_size = 2; public static final int STRIPE_SIZE_FIELD_NUMBER = 2; - private boolean hasStripeSize; - private int stripeSize_ = 0; - public boolean hasStripeSize() { return hasStripeSize; } - public int getStripeSize() { return stripeSize_; } - + private int stripeSize_; + /** + * required fixed32 stripe_size = 2; + * + *
+     * Size of stripe (objects) in *kB*!
+     * 
+ */ + public boolean hasStripeSize() { + return ((bitField0_ & 0x00000002) == 0x00000002); + } + /** + * required fixed32 stripe_size = 2; + * + *
+     * Size of stripe (objects) in *kB*!
+     * 
+ */ + public int getStripeSize() { + return stripeSize_; + } + // required fixed32 width = 3; public static final int WIDTH_FIELD_NUMBER = 3; - private boolean hasWidth; - private int width_ = 0; - public boolean hasWidth() { return hasWidth; } - public int getWidth() { return width_; } - + private int width_; + /** + * required fixed32 width = 3; + * + *
+     * Number of OSDs to distribute stripes on.
+     * 
+ */ + public boolean hasWidth() { + return ((bitField0_ & 0x00000004) == 0x00000004); + } + /** + * required fixed32 width = 3; + * + *
+     * Number of OSDs to distribute stripes on.
+     * 
+ */ + public int getWidth() { + return width_; + } + private void initFields() { type_ = org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.StripingPolicyType.STRIPING_POLICY_RAID0; + stripeSize_ = 0; + width_ = 0; } + private byte memoizedIsInitialized = -1; public final boolean isInitialized() { - if (!hasType) return false; - if (!hasStripeSize) return false; - if (!hasWidth) return false; + byte isInitialized = memoizedIsInitialized; + if (isInitialized != -1) return isInitialized == 1; + + if (!hasType()) { + memoizedIsInitialized = 0; + return false; + } + if (!hasStripeSize()) { + memoizedIsInitialized = 0; + return false; + } + if (!hasWidth()) { + memoizedIsInitialized = 0; + return false; + } + memoizedIsInitialized = 1; return true; } - + public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException { getSerializedSize(); - if (hasType()) { - output.writeEnum(1, getType().getNumber()); + if (((bitField0_ & 0x00000001) == 0x00000001)) { + output.writeEnum(1, type_.getNumber()); } - if (hasStripeSize()) { - output.writeFixed32(2, getStripeSize()); + if (((bitField0_ & 0x00000002) == 0x00000002)) { + output.writeFixed32(2, stripeSize_); } - if (hasWidth()) { - output.writeFixed32(3, getWidth()); + if (((bitField0_ & 0x00000004) == 0x00000004)) { + output.writeFixed32(3, width_); } getUnknownFields().writeTo(output); } - + private int memoizedSerializedSize = -1; public int getSerializedSize() { int size = memoizedSerializedSize; if (size != -1) return size; - + size = 0; - if (hasType()) { + if (((bitField0_ & 0x00000001) == 0x00000001)) { size += com.google.protobuf.CodedOutputStream - .computeEnumSize(1, getType().getNumber()); + .computeEnumSize(1, type_.getNumber()); } - if (hasStripeSize()) { + if (((bitField0_ & 0x00000002) == 0x00000002)) { size += com.google.protobuf.CodedOutputStream - .computeFixed32Size(2, getStripeSize()); + .computeFixed32Size(2, stripeSize_); } - if (hasWidth()) { + if (((bitField0_ & 0x00000004) == 0x00000004)) { size += com.google.protobuf.CodedOutputStream - .computeFixed32Size(3, getWidth()); + .computeFixed32Size(3, width_); } size += getUnknownFields().getSerializedSize(); memoizedSerializedSize = size; return size; } - + + private static final long serialVersionUID = 0L; + @java.lang.Override + protected java.lang.Object writeReplace() + throws java.io.ObjectStreamException { + return super.writeReplace(); + } + public static org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.StripingPolicy parseFrom( com.google.protobuf.ByteString data) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data).buildParsed(); + return PARSER.parseFrom(data); } public static org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.StripingPolicy parseFrom( com.google.protobuf.ByteString data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(data, extensionRegistry); } public static org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.StripingPolicy parseFrom(byte[] data) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data).buildParsed(); + return PARSER.parseFrom(data); } public static org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.StripingPolicy parseFrom( byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(data, extensionRegistry); } public static org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.StripingPolicy parseFrom(java.io.InputStream input) throws java.io.IOException { - return newBuilder().mergeFrom(input).buildParsed(); + return PARSER.parseFrom(input); } public static org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.StripingPolicy parseFrom( java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - return newBuilder().mergeFrom(input, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(input, extensionRegistry); } public static org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.StripingPolicy parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException { - Builder builder = newBuilder(); - if (builder.mergeDelimitedFrom(input)) { - return builder.buildParsed(); - } else { - return null; - } + return PARSER.parseDelimitedFrom(input); } public static org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.StripingPolicy parseDelimitedFrom( java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - Builder builder = newBuilder(); - if (builder.mergeDelimitedFrom(input, extensionRegistry)) { - return builder.buildParsed(); - } else { - return null; - } + return PARSER.parseDelimitedFrom(input, extensionRegistry); } public static org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.StripingPolicy parseFrom( com.google.protobuf.CodedInputStream input) throws java.io.IOException { - return newBuilder().mergeFrom(input).buildParsed(); + return PARSER.parseFrom(input); } public static org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.StripingPolicy parseFrom( com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - return newBuilder().mergeFrom(input, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(input, extensionRegistry); } - + public static Builder newBuilder() { return Builder.create(); } public Builder newBuilderForType() { return newBuilder(); } public static Builder newBuilder(org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.StripingPolicy prototype) { return newBuilder().mergeFrom(prototype); } public Builder toBuilder() { return newBuilder(this); } - + + @java.lang.Override + protected Builder newBuilderForType( + com.google.protobuf.GeneratedMessage.BuilderParent parent) { + Builder builder = new Builder(parent); + return builder; + } + /** + * Protobuf type {@code xtreemfs.pbrpc.StripingPolicy} + */ public static final class Builder extends - com.google.protobuf.GeneratedMessage.Builder { - private org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.StripingPolicy result; - + com.google.protobuf.GeneratedMessage.Builder + implements org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.StripingPolicyOrBuilder { + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.internal_static_xtreemfs_pbrpc_StripingPolicy_descriptor; + } + + protected com.google.protobuf.GeneratedMessage.FieldAccessorTable + internalGetFieldAccessorTable() { + return org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.internal_static_xtreemfs_pbrpc_StripingPolicy_fieldAccessorTable + .ensureFieldAccessorsInitialized( + org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.StripingPolicy.class, org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.StripingPolicy.Builder.class); + } + // Construct using org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.StripingPolicy.newBuilder() - private Builder() {} - - private static Builder create() { - Builder builder = new Builder(); - builder.result = new org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.StripingPolicy(); - return builder; + private Builder() { + maybeForceBuilderInitialization(); } - - protected org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.StripingPolicy internalGetResult() { - return result; + + private Builder( + com.google.protobuf.GeneratedMessage.BuilderParent parent) { + super(parent); + maybeForceBuilderInitialization(); } - - public Builder clear() { - if (result == null) { - throw new IllegalStateException( - "Cannot call clear() after build()."); + private void maybeForceBuilderInitialization() { + if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) { } - result = new org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.StripingPolicy(); + } + private static Builder create() { + return new Builder(); + } + + public Builder clear() { + super.clear(); + type_ = org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.StripingPolicyType.STRIPING_POLICY_RAID0; + bitField0_ = (bitField0_ & ~0x00000001); + stripeSize_ = 0; + bitField0_ = (bitField0_ & ~0x00000002); + width_ = 0; + bitField0_ = (bitField0_ & ~0x00000004); return this; } - + public Builder clone() { - return create().mergeFrom(result); + return create().mergeFrom(buildPartial()); } - + public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() { - return org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.StripingPolicy.getDescriptor(); + return org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.internal_static_xtreemfs_pbrpc_StripingPolicy_descriptor; } - + public org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.StripingPolicy getDefaultInstanceForType() { return org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.StripingPolicy.getDefaultInstance(); } - - public boolean isInitialized() { - return result.isInitialized(); - } + public org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.StripingPolicy build() { - if (result != null && !isInitialized()) { + org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.StripingPolicy result = buildPartial(); + if (!result.isInitialized()) { throw newUninitializedMessageException(result); } - return buildPartial(); - } - - private org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.StripingPolicy buildParsed() - throws com.google.protobuf.InvalidProtocolBufferException { - if (!isInitialized()) { - throw newUninitializedMessageException( - result).asInvalidProtocolBufferException(); - } - return buildPartial(); + return result; } - + public org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.StripingPolicy buildPartial() { - if (result == null) { - throw new IllegalStateException( - "build() has already been called on this Builder."); + org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.StripingPolicy result = new org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.StripingPolicy(this); + int from_bitField0_ = bitField0_; + int to_bitField0_ = 0; + if (((from_bitField0_ & 0x00000001) == 0x00000001)) { + to_bitField0_ |= 0x00000001; + } + result.type_ = type_; + if (((from_bitField0_ & 0x00000002) == 0x00000002)) { + to_bitField0_ |= 0x00000002; } - org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.StripingPolicy returnMe = result; - result = null; - return returnMe; + result.stripeSize_ = stripeSize_; + if (((from_bitField0_ & 0x00000004) == 0x00000004)) { + to_bitField0_ |= 0x00000004; + } + result.width_ = width_; + result.bitField0_ = to_bitField0_; + onBuilt(); + return result; } - + public Builder mergeFrom(com.google.protobuf.Message other) { if (other instanceof org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.StripingPolicy) { return mergeFrom((org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.StripingPolicy)other); @@ -1303,7 +2296,7 @@ public final class GlobalTypes { return this; } } - + public Builder mergeFrom(org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.StripingPolicy other) { if (other == org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.StripingPolicy.getDefaultInstance()) return this; if (other.hasType()) { @@ -1318,372 +2311,776 @@ public final class GlobalTypes { this.mergeUnknownFields(other.getUnknownFields()); return this; } - + + public final boolean isInitialized() { + if (!hasType()) { + + return false; + } + if (!hasStripeSize()) { + + return false; + } + if (!hasWidth()) { + + return false; + } + return true; + } + public Builder mergeFrom( com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - com.google.protobuf.UnknownFieldSet.Builder unknownFields = - com.google.protobuf.UnknownFieldSet.newBuilder( - this.getUnknownFields()); - while (true) { - int tag = input.readTag(); - switch (tag) { - case 0: - this.setUnknownFields(unknownFields.build()); - return this; - default: { - if (!parseUnknownField(input, unknownFields, - extensionRegistry, tag)) { - this.setUnknownFields(unknownFields.build()); - return this; - } - break; - } - case 8: { - int rawValue = input.readEnum(); - org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.StripingPolicyType value = org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.StripingPolicyType.valueOf(rawValue); - if (value == null) { - unknownFields.mergeVarintField(1, rawValue); - } else { - setType(value); - } - break; - } - case 21: { - setStripeSize(input.readFixed32()); - break; - } - case 29: { - setWidth(input.readFixed32()); - break; - } + org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.StripingPolicy parsedMessage = null; + try { + parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + parsedMessage = (org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.StripingPolicy) e.getUnfinishedMessage(); + throw e; + } finally { + if (parsedMessage != null) { + mergeFrom(parsedMessage); } } + return this; } - - + private int bitField0_; + // required .xtreemfs.pbrpc.StripingPolicyType type = 1; + private org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.StripingPolicyType type_ = org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.StripingPolicyType.STRIPING_POLICY_RAID0; + /** + * required .xtreemfs.pbrpc.StripingPolicyType type = 1; + * + *
+       * Type, always STRIPING_POLICY_RAID0.
+       * 
+ */ public boolean hasType() { - return result.hasType(); - } + return ((bitField0_ & 0x00000001) == 0x00000001); + } + /** + * required .xtreemfs.pbrpc.StripingPolicyType type = 1; + * + *
+       * Type, always STRIPING_POLICY_RAID0.
+       * 
+ */ public org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.StripingPolicyType getType() { - return result.getType(); - } + return type_; + } + /** + * required .xtreemfs.pbrpc.StripingPolicyType type = 1; + * + *
+       * Type, always STRIPING_POLICY_RAID0.
+       * 
+ */ public Builder setType(org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.StripingPolicyType value) { if (value == null) { throw new NullPointerException(); } - result.hasType = true; - result.type_ = value; + bitField0_ |= 0x00000001; + type_ = value; + onChanged(); return this; } + /** + * required .xtreemfs.pbrpc.StripingPolicyType type = 1; + * + *
+       * Type, always STRIPING_POLICY_RAID0.
+       * 
+ */ public Builder clearType() { - result.hasType = false; - result.type_ = org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.StripingPolicyType.STRIPING_POLICY_RAID0; + bitField0_ = (bitField0_ & ~0x00000001); + type_ = org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.StripingPolicyType.STRIPING_POLICY_RAID0; + onChanged(); return this; } - + // required fixed32 stripe_size = 2; + private int stripeSize_ ; + /** + * required fixed32 stripe_size = 2; + * + *
+       * Size of stripe (objects) in *kB*!
+       * 
+ */ public boolean hasStripeSize() { - return result.hasStripeSize(); - } + return ((bitField0_ & 0x00000002) == 0x00000002); + } + /** + * required fixed32 stripe_size = 2; + * + *
+       * Size of stripe (objects) in *kB*!
+       * 
+ */ public int getStripeSize() { - return result.getStripeSize(); - } + return stripeSize_; + } + /** + * required fixed32 stripe_size = 2; + * + *
+       * Size of stripe (objects) in *kB*!
+       * 
+ */ public Builder setStripeSize(int value) { - result.hasStripeSize = true; - result.stripeSize_ = value; + bitField0_ |= 0x00000002; + stripeSize_ = value; + onChanged(); return this; } + /** + * required fixed32 stripe_size = 2; + * + *
+       * Size of stripe (objects) in *kB*!
+       * 
+ */ public Builder clearStripeSize() { - result.hasStripeSize = false; - result.stripeSize_ = 0; + bitField0_ = (bitField0_ & ~0x00000002); + stripeSize_ = 0; + onChanged(); return this; } - + // required fixed32 width = 3; + private int width_ ; + /** + * required fixed32 width = 3; + * + *
+       * Number of OSDs to distribute stripes on.
+       * 
+ */ public boolean hasWidth() { - return result.hasWidth(); - } + return ((bitField0_ & 0x00000004) == 0x00000004); + } + /** + * required fixed32 width = 3; + * + *
+       * Number of OSDs to distribute stripes on.
+       * 
+ */ public int getWidth() { - return result.getWidth(); - } + return width_; + } + /** + * required fixed32 width = 3; + * + *
+       * Number of OSDs to distribute stripes on.
+       * 
+ */ public Builder setWidth(int value) { - result.hasWidth = true; - result.width_ = value; + bitField0_ |= 0x00000004; + width_ = value; + onChanged(); return this; } + /** + * required fixed32 width = 3; + * + *
+       * Number of OSDs to distribute stripes on.
+       * 
+ */ public Builder clearWidth() { - result.hasWidth = false; - result.width_ = 0; + bitField0_ = (bitField0_ & ~0x00000004); + width_ = 0; + onChanged(); return this; } - + // @@protoc_insertion_point(builder_scope:xtreemfs.pbrpc.StripingPolicy) } - + static { defaultInstance = new StripingPolicy(true); - org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.internalForceInit(); defaultInstance.initFields(); } - + // @@protoc_insertion_point(class_scope:xtreemfs.pbrpc.StripingPolicy) } - + + public interface ReplicaOrBuilder + extends com.google.protobuf.MessageOrBuilder { + + // repeated string osd_uuids = 1; + /** + * repeated string osd_uuids = 1; + * + *
+     * UUIDs of OSDs to store objects on.
+     * Length of this list must be equal to width
+     * in striping_policy!
+     * 
+ */ + java.util.List + getOsdUuidsList(); + /** + * repeated string osd_uuids = 1; + * + *
+     * UUIDs of OSDs to store objects on.
+     * Length of this list must be equal to width
+     * in striping_policy!
+     * 
+ */ + int getOsdUuidsCount(); + /** + * repeated string osd_uuids = 1; + * + *
+     * UUIDs of OSDs to store objects on.
+     * Length of this list must be equal to width
+     * in striping_policy!
+     * 
+ */ + java.lang.String getOsdUuids(int index); + /** + * repeated string osd_uuids = 1; + * + *
+     * UUIDs of OSDs to store objects on.
+     * Length of this list must be equal to width
+     * in striping_policy!
+     * 
+ */ + com.google.protobuf.ByteString + getOsdUuidsBytes(int index); + + // required fixed32 replication_flags = 2; + /** + * required fixed32 replication_flags = 2; + * + *
+     * Flags to conrol replication, e.g. transfer strategy.
+     * 
+ */ + boolean hasReplicationFlags(); + /** + * required fixed32 replication_flags = 2; + * + *
+     * Flags to conrol replication, e.g. transfer strategy.
+     * 
+ */ + int getReplicationFlags(); + + // required .xtreemfs.pbrpc.StripingPolicy striping_policy = 3; + /** + * required .xtreemfs.pbrpc.StripingPolicy striping_policy = 3; + * + *
+     * Striping policy for this replica.
+     * 
+ */ + boolean hasStripingPolicy(); + /** + * required .xtreemfs.pbrpc.StripingPolicy striping_policy = 3; + * + *
+     * Striping policy for this replica.
+     * 
+ */ + org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.StripingPolicy getStripingPolicy(); + /** + * required .xtreemfs.pbrpc.StripingPolicy striping_policy = 3; + * + *
+     * Striping policy for this replica.
+     * 
+ */ + org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.StripingPolicyOrBuilder getStripingPolicyOrBuilder(); + } + /** + * Protobuf type {@code xtreemfs.pbrpc.Replica} + * + *
+   * Details for a file replica.
+   * 
+ */ public static final class Replica extends - com.google.protobuf.GeneratedMessage { + com.google.protobuf.GeneratedMessage + implements ReplicaOrBuilder { // Use Replica.newBuilder() to construct. - private Replica() { - initFields(); + private Replica(com.google.protobuf.GeneratedMessage.Builder builder) { + super(builder); + this.unknownFields = builder.getUnknownFields(); } - private Replica(boolean noInit) {} - + private Replica(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); } + private static final Replica defaultInstance; public static Replica getDefaultInstance() { return defaultInstance; } - + public Replica getDefaultInstanceForType() { return defaultInstance; } - + + private final com.google.protobuf.UnknownFieldSet unknownFields; + @java.lang.Override + public final com.google.protobuf.UnknownFieldSet + getUnknownFields() { + return this.unknownFields; + } + private Replica( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + initFields(); + int mutable_bitField0_ = 0; + com.google.protobuf.UnknownFieldSet.Builder unknownFields = + com.google.protobuf.UnknownFieldSet.newBuilder(); + try { + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch (tag) { + case 0: + done = true; + break; + default: { + if (!parseUnknownField(input, unknownFields, + extensionRegistry, tag)) { + done = true; + } + break; + } + case 10: { + if (!((mutable_bitField0_ & 0x00000001) == 0x00000001)) { + osdUuids_ = new com.google.protobuf.LazyStringArrayList(); + mutable_bitField0_ |= 0x00000001; + } + osdUuids_.add(input.readBytes()); + break; + } + case 21: { + bitField0_ |= 0x00000001; + replicationFlags_ = input.readFixed32(); + break; + } + case 26: { + org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.StripingPolicy.Builder subBuilder = null; + if (((bitField0_ & 0x00000002) == 0x00000002)) { + subBuilder = stripingPolicy_.toBuilder(); + } + stripingPolicy_ = input.readMessage(org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.StripingPolicy.PARSER, extensionRegistry); + if (subBuilder != null) { + subBuilder.mergeFrom(stripingPolicy_); + stripingPolicy_ = subBuilder.buildPartial(); + } + bitField0_ |= 0x00000002; + break; + } + } + } + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(this); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException( + e.getMessage()).setUnfinishedMessage(this); + } finally { + if (((mutable_bitField0_ & 0x00000001) == 0x00000001)) { + osdUuids_ = new com.google.protobuf.UnmodifiableLazyStringList(osdUuids_); + } + this.unknownFields = unknownFields.build(); + makeExtensionsImmutable(); + } + } public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { return org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.internal_static_xtreemfs_pbrpc_Replica_descriptor; } - + protected com.google.protobuf.GeneratedMessage.FieldAccessorTable internalGetFieldAccessorTable() { - return org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.internal_static_xtreemfs_pbrpc_Replica_fieldAccessorTable; + return org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.internal_static_xtreemfs_pbrpc_Replica_fieldAccessorTable + .ensureFieldAccessorsInitialized( + org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.Replica.class, org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.Replica.Builder.class); + } + + public static com.google.protobuf.Parser PARSER = + new com.google.protobuf.AbstractParser() { + public Replica parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return new Replica(input, extensionRegistry); + } + }; + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; } - + + private int bitField0_; // repeated string osd_uuids = 1; public static final int OSD_UUIDS_FIELD_NUMBER = 1; - private java.util.List osdUuids_ = - java.util.Collections.emptyList(); - public java.util.List getOsdUuidsList() { + private com.google.protobuf.LazyStringList osdUuids_; + /** + * repeated string osd_uuids = 1; + * + *
+     * UUIDs of OSDs to store objects on.
+     * Length of this list must be equal to width
+     * in striping_policy!
+     * 
+ */ + public java.util.List + getOsdUuidsList() { return osdUuids_; } - public int getOsdUuidsCount() { return osdUuids_.size(); } + /** + * repeated string osd_uuids = 1; + * + *
+     * UUIDs of OSDs to store objects on.
+     * Length of this list must be equal to width
+     * in striping_policy!
+     * 
+ */ + public int getOsdUuidsCount() { + return osdUuids_.size(); + } + /** + * repeated string osd_uuids = 1; + * + *
+     * UUIDs of OSDs to store objects on.
+     * Length of this list must be equal to width
+     * in striping_policy!
+     * 
+ */ public java.lang.String getOsdUuids(int index) { return osdUuids_.get(index); } - + /** + * repeated string osd_uuids = 1; + * + *
+     * UUIDs of OSDs to store objects on.
+     * Length of this list must be equal to width
+     * in striping_policy!
+     * 
+ */ + public com.google.protobuf.ByteString + getOsdUuidsBytes(int index) { + return osdUuids_.getByteString(index); + } + // required fixed32 replication_flags = 2; public static final int REPLICATION_FLAGS_FIELD_NUMBER = 2; - private boolean hasReplicationFlags; - private int replicationFlags_ = 0; - public boolean hasReplicationFlags() { return hasReplicationFlags; } - public int getReplicationFlags() { return replicationFlags_; } - + private int replicationFlags_; + /** + * required fixed32 replication_flags = 2; + * + *
+     * Flags to conrol replication, e.g. transfer strategy.
+     * 
+ */ + public boolean hasReplicationFlags() { + return ((bitField0_ & 0x00000001) == 0x00000001); + } + /** + * required fixed32 replication_flags = 2; + * + *
+     * Flags to conrol replication, e.g. transfer strategy.
+     * 
+ */ + public int getReplicationFlags() { + return replicationFlags_; + } + // required .xtreemfs.pbrpc.StripingPolicy striping_policy = 3; public static final int STRIPING_POLICY_FIELD_NUMBER = 3; - private boolean hasStripingPolicy; private org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.StripingPolicy stripingPolicy_; - public boolean hasStripingPolicy() { return hasStripingPolicy; } - public org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.StripingPolicy getStripingPolicy() { return stripingPolicy_; } - + /** + * required .xtreemfs.pbrpc.StripingPolicy striping_policy = 3; + * + *
+     * Striping policy for this replica.
+     * 
+ */ + public boolean hasStripingPolicy() { + return ((bitField0_ & 0x00000002) == 0x00000002); + } + /** + * required .xtreemfs.pbrpc.StripingPolicy striping_policy = 3; + * + *
+     * Striping policy for this replica.
+     * 
+ */ + public org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.StripingPolicy getStripingPolicy() { + return stripingPolicy_; + } + /** + * required .xtreemfs.pbrpc.StripingPolicy striping_policy = 3; + * + *
+     * Striping policy for this replica.
+     * 
+ */ + public org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.StripingPolicyOrBuilder getStripingPolicyOrBuilder() { + return stripingPolicy_; + } + private void initFields() { + osdUuids_ = com.google.protobuf.LazyStringArrayList.EMPTY; + replicationFlags_ = 0; stripingPolicy_ = org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.StripingPolicy.getDefaultInstance(); } + private byte memoizedIsInitialized = -1; public final boolean isInitialized() { - if (!hasReplicationFlags) return false; - if (!hasStripingPolicy) return false; - if (!getStripingPolicy().isInitialized()) return false; + byte isInitialized = memoizedIsInitialized; + if (isInitialized != -1) return isInitialized == 1; + + if (!hasReplicationFlags()) { + memoizedIsInitialized = 0; + return false; + } + if (!hasStripingPolicy()) { + memoizedIsInitialized = 0; + return false; + } + if (!getStripingPolicy().isInitialized()) { + memoizedIsInitialized = 0; + return false; + } + memoizedIsInitialized = 1; return true; } - + public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException { getSerializedSize(); - for (java.lang.String element : getOsdUuidsList()) { - output.writeString(1, element); + for (int i = 0; i < osdUuids_.size(); i++) { + output.writeBytes(1, osdUuids_.getByteString(i)); } - if (hasReplicationFlags()) { - output.writeFixed32(2, getReplicationFlags()); + if (((bitField0_ & 0x00000001) == 0x00000001)) { + output.writeFixed32(2, replicationFlags_); } - if (hasStripingPolicy()) { - output.writeMessage(3, getStripingPolicy()); + if (((bitField0_ & 0x00000002) == 0x00000002)) { + output.writeMessage(3, stripingPolicy_); } getUnknownFields().writeTo(output); } - + private int memoizedSerializedSize = -1; public int getSerializedSize() { int size = memoizedSerializedSize; if (size != -1) return size; - + size = 0; { int dataSize = 0; - for (java.lang.String element : getOsdUuidsList()) { + for (int i = 0; i < osdUuids_.size(); i++) { dataSize += com.google.protobuf.CodedOutputStream - .computeStringSizeNoTag(element); + .computeBytesSizeNoTag(osdUuids_.getByteString(i)); } size += dataSize; size += 1 * getOsdUuidsList().size(); } - if (hasReplicationFlags()) { + if (((bitField0_ & 0x00000001) == 0x00000001)) { size += com.google.protobuf.CodedOutputStream - .computeFixed32Size(2, getReplicationFlags()); + .computeFixed32Size(2, replicationFlags_); } - if (hasStripingPolicy()) { + if (((bitField0_ & 0x00000002) == 0x00000002)) { size += com.google.protobuf.CodedOutputStream - .computeMessageSize(3, getStripingPolicy()); + .computeMessageSize(3, stripingPolicy_); } size += getUnknownFields().getSerializedSize(); memoizedSerializedSize = size; return size; } - + + private static final long serialVersionUID = 0L; + @java.lang.Override + protected java.lang.Object writeReplace() + throws java.io.ObjectStreamException { + return super.writeReplace(); + } + public static org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.Replica parseFrom( com.google.protobuf.ByteString data) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data).buildParsed(); + return PARSER.parseFrom(data); } public static org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.Replica parseFrom( com.google.protobuf.ByteString data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(data, extensionRegistry); } public static org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.Replica parseFrom(byte[] data) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data).buildParsed(); + return PARSER.parseFrom(data); } public static org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.Replica parseFrom( byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(data, extensionRegistry); } public static org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.Replica parseFrom(java.io.InputStream input) throws java.io.IOException { - return newBuilder().mergeFrom(input).buildParsed(); + return PARSER.parseFrom(input); } public static org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.Replica parseFrom( java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - return newBuilder().mergeFrom(input, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(input, extensionRegistry); } public static org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.Replica parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException { - Builder builder = newBuilder(); - if (builder.mergeDelimitedFrom(input)) { - return builder.buildParsed(); - } else { - return null; - } + return PARSER.parseDelimitedFrom(input); } public static org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.Replica parseDelimitedFrom( java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - Builder builder = newBuilder(); - if (builder.mergeDelimitedFrom(input, extensionRegistry)) { - return builder.buildParsed(); - } else { - return null; - } + return PARSER.parseDelimitedFrom(input, extensionRegistry); } public static org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.Replica parseFrom( com.google.protobuf.CodedInputStream input) throws java.io.IOException { - return newBuilder().mergeFrom(input).buildParsed(); + return PARSER.parseFrom(input); } public static org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.Replica parseFrom( com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - return newBuilder().mergeFrom(input, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(input, extensionRegistry); } - + public static Builder newBuilder() { return Builder.create(); } public Builder newBuilderForType() { return newBuilder(); } public static Builder newBuilder(org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.Replica prototype) { return newBuilder().mergeFrom(prototype); } public Builder toBuilder() { return newBuilder(this); } - + + @java.lang.Override + protected Builder newBuilderForType( + com.google.protobuf.GeneratedMessage.BuilderParent parent) { + Builder builder = new Builder(parent); + return builder; + } + /** + * Protobuf type {@code xtreemfs.pbrpc.Replica} + * + *
+     * Details for a file replica.
+     * 
+ */ public static final class Builder extends - com.google.protobuf.GeneratedMessage.Builder { - private org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.Replica result; - - // Construct using org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.Replica.newBuilder() - private Builder() {} - - private static Builder create() { - Builder builder = new Builder(); - builder.result = new org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.Replica(); - return builder; + com.google.protobuf.GeneratedMessage.Builder + implements org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.ReplicaOrBuilder { + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.internal_static_xtreemfs_pbrpc_Replica_descriptor; } - - protected org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.Replica internalGetResult() { - return result; + + protected com.google.protobuf.GeneratedMessage.FieldAccessorTable + internalGetFieldAccessorTable() { + return org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.internal_static_xtreemfs_pbrpc_Replica_fieldAccessorTable + .ensureFieldAccessorsInitialized( + org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.Replica.class, org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.Replica.Builder.class); } - - public Builder clear() { - if (result == null) { - throw new IllegalStateException( - "Cannot call clear() after build()."); - } - result = new org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.Replica(); - return this; + + // Construct using org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.Replica.newBuilder() + private Builder() { + maybeForceBuilderInitialization(); + } + + private Builder( + com.google.protobuf.GeneratedMessage.BuilderParent parent) { + super(parent); + maybeForceBuilderInitialization(); + } + private void maybeForceBuilderInitialization() { + if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) { + getStripingPolicyFieldBuilder(); + } + } + private static Builder create() { + return new Builder(); + } + + public Builder clear() { + super.clear(); + osdUuids_ = com.google.protobuf.LazyStringArrayList.EMPTY; + bitField0_ = (bitField0_ & ~0x00000001); + replicationFlags_ = 0; + bitField0_ = (bitField0_ & ~0x00000002); + if (stripingPolicyBuilder_ == null) { + stripingPolicy_ = org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.StripingPolicy.getDefaultInstance(); + } else { + stripingPolicyBuilder_.clear(); + } + bitField0_ = (bitField0_ & ~0x00000004); + return this; } - + public Builder clone() { - return create().mergeFrom(result); + return create().mergeFrom(buildPartial()); } - + public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() { - return org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.Replica.getDescriptor(); + return org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.internal_static_xtreemfs_pbrpc_Replica_descriptor; } - + public org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.Replica getDefaultInstanceForType() { return org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.Replica.getDefaultInstance(); } - - public boolean isInitialized() { - return result.isInitialized(); - } + public org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.Replica build() { - if (result != null && !isInitialized()) { + org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.Replica result = buildPartial(); + if (!result.isInitialized()) { throw newUninitializedMessageException(result); } - return buildPartial(); - } - - private org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.Replica buildParsed() - throws com.google.protobuf.InvalidProtocolBufferException { - if (!isInitialized()) { - throw newUninitializedMessageException( - result).asInvalidProtocolBufferException(); - } - return buildPartial(); + return result; } - + public org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.Replica buildPartial() { - if (result == null) { - throw new IllegalStateException( - "build() has already been called on this Builder."); + org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.Replica result = new org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.Replica(this); + int from_bitField0_ = bitField0_; + int to_bitField0_ = 0; + if (((bitField0_ & 0x00000001) == 0x00000001)) { + osdUuids_ = new com.google.protobuf.UnmodifiableLazyStringList( + osdUuids_); + bitField0_ = (bitField0_ & ~0x00000001); + } + result.osdUuids_ = osdUuids_; + if (((from_bitField0_ & 0x00000002) == 0x00000002)) { + to_bitField0_ |= 0x00000001; } - if (result.osdUuids_ != java.util.Collections.EMPTY_LIST) { - result.osdUuids_ = - java.util.Collections.unmodifiableList(result.osdUuids_); + result.replicationFlags_ = replicationFlags_; + if (((from_bitField0_ & 0x00000004) == 0x00000004)) { + to_bitField0_ |= 0x00000002; } - org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.Replica returnMe = result; - result = null; - return returnMe; + if (stripingPolicyBuilder_ == null) { + result.stripingPolicy_ = stripingPolicy_; + } else { + result.stripingPolicy_ = stripingPolicyBuilder_.build(); + } + result.bitField0_ = to_bitField0_; + onBuilt(); + return result; } - + public Builder mergeFrom(com.google.protobuf.Message other) { if (other instanceof org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.Replica) { return mergeFrom((org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.Replica)other); @@ -1692,14 +3089,18 @@ public final class GlobalTypes { return this; } } - + public Builder mergeFrom(org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.Replica other) { if (other == org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.Replica.getDefaultInstance()) return this; if (!other.osdUuids_.isEmpty()) { - if (result.osdUuids_.isEmpty()) { - result.osdUuids_ = new java.util.ArrayList(); + if (osdUuids_.isEmpty()) { + osdUuids_ = other.osdUuids_; + bitField0_ = (bitField0_ & ~0x00000001); + } else { + ensureOsdUuidsIsMutable(); + osdUuids_.addAll(other.osdUuids_); } - result.osdUuids_.addAll(other.osdUuids_); + onChanged(); } if (other.hasReplicationFlags()) { setReplicationFlags(other.getReplicationFlags()); @@ -1710,375 +3111,775 @@ public final class GlobalTypes { this.mergeUnknownFields(other.getUnknownFields()); return this; } - + + public final boolean isInitialized() { + if (!hasReplicationFlags()) { + + return false; + } + if (!hasStripingPolicy()) { + + return false; + } + if (!getStripingPolicy().isInitialized()) { + + return false; + } + return true; + } + public Builder mergeFrom( com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - com.google.protobuf.UnknownFieldSet.Builder unknownFields = - com.google.protobuf.UnknownFieldSet.newBuilder( - this.getUnknownFields()); - while (true) { - int tag = input.readTag(); - switch (tag) { - case 0: - this.setUnknownFields(unknownFields.build()); - return this; - default: { - if (!parseUnknownField(input, unknownFields, - extensionRegistry, tag)) { - this.setUnknownFields(unknownFields.build()); - return this; - } - break; - } - case 10: { - addOsdUuids(input.readString()); - break; - } - case 21: { - setReplicationFlags(input.readFixed32()); - break; - } - case 26: { - org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.StripingPolicy.Builder subBuilder = org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.StripingPolicy.newBuilder(); - if (hasStripingPolicy()) { - subBuilder.mergeFrom(getStripingPolicy()); - } - input.readMessage(subBuilder, extensionRegistry); - setStripingPolicy(subBuilder.buildPartial()); - break; - } + org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.Replica parsedMessage = null; + try { + parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + parsedMessage = (org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.Replica) e.getUnfinishedMessage(); + throw e; + } finally { + if (parsedMessage != null) { + mergeFrom(parsedMessage); } } + return this; } - - + private int bitField0_; + // repeated string osd_uuids = 1; - public java.util.List getOsdUuidsList() { - return java.util.Collections.unmodifiableList(result.osdUuids_); - } + private com.google.protobuf.LazyStringList osdUuids_ = com.google.protobuf.LazyStringArrayList.EMPTY; + private void ensureOsdUuidsIsMutable() { + if (!((bitField0_ & 0x00000001) == 0x00000001)) { + osdUuids_ = new com.google.protobuf.LazyStringArrayList(osdUuids_); + bitField0_ |= 0x00000001; + } + } + /** + * repeated string osd_uuids = 1; + * + *
+       * UUIDs of OSDs to store objects on.
+       * Length of this list must be equal to width
+       * in striping_policy!
+       * 
+ */ + public java.util.List + getOsdUuidsList() { + return java.util.Collections.unmodifiableList(osdUuids_); + } + /** + * repeated string osd_uuids = 1; + * + *
+       * UUIDs of OSDs to store objects on.
+       * Length of this list must be equal to width
+       * in striping_policy!
+       * 
+ */ public int getOsdUuidsCount() { - return result.getOsdUuidsCount(); - } + return osdUuids_.size(); + } + /** + * repeated string osd_uuids = 1; + * + *
+       * UUIDs of OSDs to store objects on.
+       * Length of this list must be equal to width
+       * in striping_policy!
+       * 
+ */ public java.lang.String getOsdUuids(int index) { - return result.getOsdUuids(index); - } - public Builder setOsdUuids(int index, java.lang.String value) { + return osdUuids_.get(index); + } + /** + * repeated string osd_uuids = 1; + * + *
+       * UUIDs of OSDs to store objects on.
+       * Length of this list must be equal to width
+       * in striping_policy!
+       * 
+ */ + public com.google.protobuf.ByteString + getOsdUuidsBytes(int index) { + return osdUuids_.getByteString(index); + } + /** + * repeated string osd_uuids = 1; + * + *
+       * UUIDs of OSDs to store objects on.
+       * Length of this list must be equal to width
+       * in striping_policy!
+       * 
+ */ + public Builder setOsdUuids( + int index, java.lang.String value) { if (value == null) { throw new NullPointerException(); } - result.osdUuids_.set(index, value); + ensureOsdUuidsIsMutable(); + osdUuids_.set(index, value); + onChanged(); return this; } - public Builder addOsdUuids(java.lang.String value) { + /** + * repeated string osd_uuids = 1; + * + *
+       * UUIDs of OSDs to store objects on.
+       * Length of this list must be equal to width
+       * in striping_policy!
+       * 
+ */ + public Builder addOsdUuids( + java.lang.String value) { if (value == null) { throw new NullPointerException(); } - if (result.osdUuids_.isEmpty()) { - result.osdUuids_ = new java.util.ArrayList(); - } - result.osdUuids_.add(value); + ensureOsdUuidsIsMutable(); + osdUuids_.add(value); + onChanged(); return this; } + /** + * repeated string osd_uuids = 1; + * + *
+       * UUIDs of OSDs to store objects on.
+       * Length of this list must be equal to width
+       * in striping_policy!
+       * 
+ */ public Builder addAllOsdUuids( - java.lang.Iterable values) { - if (result.osdUuids_.isEmpty()) { - result.osdUuids_ = new java.util.ArrayList(); - } - super.addAll(values, result.osdUuids_); + java.lang.Iterable values) { + ensureOsdUuidsIsMutable(); + super.addAll(values, osdUuids_); + onChanged(); return this; } + /** + * repeated string osd_uuids = 1; + * + *
+       * UUIDs of OSDs to store objects on.
+       * Length of this list must be equal to width
+       * in striping_policy!
+       * 
+ */ public Builder clearOsdUuids() { - result.osdUuids_ = java.util.Collections.emptyList(); + osdUuids_ = com.google.protobuf.LazyStringArrayList.EMPTY; + bitField0_ = (bitField0_ & ~0x00000001); + onChanged(); + return this; + } + /** + * repeated string osd_uuids = 1; + * + *
+       * UUIDs of OSDs to store objects on.
+       * Length of this list must be equal to width
+       * in striping_policy!
+       * 
+ */ + public Builder addOsdUuidsBytes( + com.google.protobuf.ByteString value) { + if (value == null) { + throw new NullPointerException(); + } + ensureOsdUuidsIsMutable(); + osdUuids_.add(value); + onChanged(); return this; } - + // required fixed32 replication_flags = 2; + private int replicationFlags_ ; + /** + * required fixed32 replication_flags = 2; + * + *
+       * Flags to conrol replication, e.g. transfer strategy.
+       * 
+ */ public boolean hasReplicationFlags() { - return result.hasReplicationFlags(); - } + return ((bitField0_ & 0x00000002) == 0x00000002); + } + /** + * required fixed32 replication_flags = 2; + * + *
+       * Flags to conrol replication, e.g. transfer strategy.
+       * 
+ */ public int getReplicationFlags() { - return result.getReplicationFlags(); - } + return replicationFlags_; + } + /** + * required fixed32 replication_flags = 2; + * + *
+       * Flags to conrol replication, e.g. transfer strategy.
+       * 
+ */ public Builder setReplicationFlags(int value) { - result.hasReplicationFlags = true; - result.replicationFlags_ = value; + bitField0_ |= 0x00000002; + replicationFlags_ = value; + onChanged(); return this; } + /** + * required fixed32 replication_flags = 2; + * + *
+       * Flags to conrol replication, e.g. transfer strategy.
+       * 
+ */ public Builder clearReplicationFlags() { - result.hasReplicationFlags = false; - result.replicationFlags_ = 0; + bitField0_ = (bitField0_ & ~0x00000002); + replicationFlags_ = 0; + onChanged(); return this; } - + // required .xtreemfs.pbrpc.StripingPolicy striping_policy = 3; + private org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.StripingPolicy stripingPolicy_ = org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.StripingPolicy.getDefaultInstance(); + private com.google.protobuf.SingleFieldBuilder< + org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.StripingPolicy, org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.StripingPolicy.Builder, org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.StripingPolicyOrBuilder> stripingPolicyBuilder_; + /** + * required .xtreemfs.pbrpc.StripingPolicy striping_policy = 3; + * + *
+       * Striping policy for this replica.
+       * 
+ */ public boolean hasStripingPolicy() { - return result.hasStripingPolicy(); - } + return ((bitField0_ & 0x00000004) == 0x00000004); + } + /** + * required .xtreemfs.pbrpc.StripingPolicy striping_policy = 3; + * + *
+       * Striping policy for this replica.
+       * 
+ */ public org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.StripingPolicy getStripingPolicy() { - return result.getStripingPolicy(); + if (stripingPolicyBuilder_ == null) { + return stripingPolicy_; + } else { + return stripingPolicyBuilder_.getMessage(); + } } + /** + * required .xtreemfs.pbrpc.StripingPolicy striping_policy = 3; + * + *
+       * Striping policy for this replica.
+       * 
+ */ public Builder setStripingPolicy(org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.StripingPolicy value) { - if (value == null) { - throw new NullPointerException(); + if (stripingPolicyBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + stripingPolicy_ = value; + onChanged(); + } else { + stripingPolicyBuilder_.setMessage(value); } - result.hasStripingPolicy = true; - result.stripingPolicy_ = value; + bitField0_ |= 0x00000004; return this; } - public Builder setStripingPolicy(org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.StripingPolicy.Builder builderForValue) { - result.hasStripingPolicy = true; - result.stripingPolicy_ = builderForValue.build(); + /** + * required .xtreemfs.pbrpc.StripingPolicy striping_policy = 3; + * + *
+       * Striping policy for this replica.
+       * 
+ */ + public Builder setStripingPolicy( + org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.StripingPolicy.Builder builderForValue) { + if (stripingPolicyBuilder_ == null) { + stripingPolicy_ = builderForValue.build(); + onChanged(); + } else { + stripingPolicyBuilder_.setMessage(builderForValue.build()); + } + bitField0_ |= 0x00000004; return this; } + /** + * required .xtreemfs.pbrpc.StripingPolicy striping_policy = 3; + * + *
+       * Striping policy for this replica.
+       * 
+ */ public Builder mergeStripingPolicy(org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.StripingPolicy value) { - if (result.hasStripingPolicy() && - result.stripingPolicy_ != org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.StripingPolicy.getDefaultInstance()) { - result.stripingPolicy_ = - org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.StripingPolicy.newBuilder(result.stripingPolicy_).mergeFrom(value).buildPartial(); + if (stripingPolicyBuilder_ == null) { + if (((bitField0_ & 0x00000004) == 0x00000004) && + stripingPolicy_ != org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.StripingPolicy.getDefaultInstance()) { + stripingPolicy_ = + org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.StripingPolicy.newBuilder(stripingPolicy_).mergeFrom(value).buildPartial(); + } else { + stripingPolicy_ = value; + } + onChanged(); } else { - result.stripingPolicy_ = value; + stripingPolicyBuilder_.mergeFrom(value); } - result.hasStripingPolicy = true; + bitField0_ |= 0x00000004; return this; } + /** + * required .xtreemfs.pbrpc.StripingPolicy striping_policy = 3; + * + *
+       * Striping policy for this replica.
+       * 
+ */ public Builder clearStripingPolicy() { - result.hasStripingPolicy = false; - result.stripingPolicy_ = org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.StripingPolicy.getDefaultInstance(); + if (stripingPolicyBuilder_ == null) { + stripingPolicy_ = org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.StripingPolicy.getDefaultInstance(); + onChanged(); + } else { + stripingPolicyBuilder_.clear(); + } + bitField0_ = (bitField0_ & ~0x00000004); return this; } - + /** + * required .xtreemfs.pbrpc.StripingPolicy striping_policy = 3; + * + *
+       * Striping policy for this replica.
+       * 
+ */ + public org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.StripingPolicy.Builder getStripingPolicyBuilder() { + bitField0_ |= 0x00000004; + onChanged(); + return getStripingPolicyFieldBuilder().getBuilder(); + } + /** + * required .xtreemfs.pbrpc.StripingPolicy striping_policy = 3; + * + *
+       * Striping policy for this replica.
+       * 
+ */ + public org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.StripingPolicyOrBuilder getStripingPolicyOrBuilder() { + if (stripingPolicyBuilder_ != null) { + return stripingPolicyBuilder_.getMessageOrBuilder(); + } else { + return stripingPolicy_; + } + } + /** + * required .xtreemfs.pbrpc.StripingPolicy striping_policy = 3; + * + *
+       * Striping policy for this replica.
+       * 
+ */ + private com.google.protobuf.SingleFieldBuilder< + org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.StripingPolicy, org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.StripingPolicy.Builder, org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.StripingPolicyOrBuilder> + getStripingPolicyFieldBuilder() { + if (stripingPolicyBuilder_ == null) { + stripingPolicyBuilder_ = new com.google.protobuf.SingleFieldBuilder< + org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.StripingPolicy, org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.StripingPolicy.Builder, org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.StripingPolicyOrBuilder>( + stripingPolicy_, + getParentForChildren(), + isClean()); + stripingPolicy_ = null; + } + return stripingPolicyBuilder_; + } + // @@protoc_insertion_point(builder_scope:xtreemfs.pbrpc.Replica) } - + static { defaultInstance = new Replica(true); - org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.internalForceInit(); defaultInstance.initFields(); } - + // @@protoc_insertion_point(class_scope:xtreemfs.pbrpc.Replica) } - + + public interface ReplicasOrBuilder + extends com.google.protobuf.MessageOrBuilder { + + // repeated .xtreemfs.pbrpc.Replica replicas = 1; + /** + * repeated .xtreemfs.pbrpc.Replica replicas = 1; + */ + java.util.List + getReplicasList(); + /** + * repeated .xtreemfs.pbrpc.Replica replicas = 1; + */ + org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.Replica getReplicas(int index); + /** + * repeated .xtreemfs.pbrpc.Replica replicas = 1; + */ + int getReplicasCount(); + /** + * repeated .xtreemfs.pbrpc.Replica replicas = 1; + */ + java.util.List + getReplicasOrBuilderList(); + /** + * repeated .xtreemfs.pbrpc.Replica replicas = 1; + */ + org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.ReplicaOrBuilder getReplicasOrBuilder( + int index); + } + /** + * Protobuf type {@code xtreemfs.pbrpc.Replicas} + * + *
+   * List of replicas for a file.
+   * 
+ */ public static final class Replicas extends - com.google.protobuf.GeneratedMessage { + com.google.protobuf.GeneratedMessage + implements ReplicasOrBuilder { // Use Replicas.newBuilder() to construct. - private Replicas() { - initFields(); + private Replicas(com.google.protobuf.GeneratedMessage.Builder builder) { + super(builder); + this.unknownFields = builder.getUnknownFields(); } - private Replicas(boolean noInit) {} - + private Replicas(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); } + private static final Replicas defaultInstance; public static Replicas getDefaultInstance() { return defaultInstance; } - + public Replicas getDefaultInstanceForType() { return defaultInstance; } - + + private final com.google.protobuf.UnknownFieldSet unknownFields; + @java.lang.Override + public final com.google.protobuf.UnknownFieldSet + getUnknownFields() { + return this.unknownFields; + } + private Replicas( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + initFields(); + int mutable_bitField0_ = 0; + com.google.protobuf.UnknownFieldSet.Builder unknownFields = + com.google.protobuf.UnknownFieldSet.newBuilder(); + try { + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch (tag) { + case 0: + done = true; + break; + default: { + if (!parseUnknownField(input, unknownFields, + extensionRegistry, tag)) { + done = true; + } + break; + } + case 10: { + if (!((mutable_bitField0_ & 0x00000001) == 0x00000001)) { + replicas_ = new java.util.ArrayList(); + mutable_bitField0_ |= 0x00000001; + } + replicas_.add(input.readMessage(org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.Replica.PARSER, extensionRegistry)); + break; + } + } + } + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(this); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException( + e.getMessage()).setUnfinishedMessage(this); + } finally { + if (((mutable_bitField0_ & 0x00000001) == 0x00000001)) { + replicas_ = java.util.Collections.unmodifiableList(replicas_); + } + this.unknownFields = unknownFields.build(); + makeExtensionsImmutable(); + } + } public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { return org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.internal_static_xtreemfs_pbrpc_Replicas_descriptor; } - + protected com.google.protobuf.GeneratedMessage.FieldAccessorTable internalGetFieldAccessorTable() { - return org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.internal_static_xtreemfs_pbrpc_Replicas_fieldAccessorTable; + return org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.internal_static_xtreemfs_pbrpc_Replicas_fieldAccessorTable + .ensureFieldAccessorsInitialized( + org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.Replicas.class, org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.Replicas.Builder.class); + } + + public static com.google.protobuf.Parser PARSER = + new com.google.protobuf.AbstractParser() { + public Replicas parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return new Replicas(input, extensionRegistry); + } + }; + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; } - + // repeated .xtreemfs.pbrpc.Replica replicas = 1; public static final int REPLICAS_FIELD_NUMBER = 1; - private java.util.List replicas_ = - java.util.Collections.emptyList(); + private java.util.List replicas_; + /** + * repeated .xtreemfs.pbrpc.Replica replicas = 1; + */ public java.util.List getReplicasList() { return replicas_; } - public int getReplicasCount() { return replicas_.size(); } + /** + * repeated .xtreemfs.pbrpc.Replica replicas = 1; + */ + public java.util.List + getReplicasOrBuilderList() { + return replicas_; + } + /** + * repeated .xtreemfs.pbrpc.Replica replicas = 1; + */ + public int getReplicasCount() { + return replicas_.size(); + } + /** + * repeated .xtreemfs.pbrpc.Replica replicas = 1; + */ public org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.Replica getReplicas(int index) { return replicas_.get(index); } - + /** + * repeated .xtreemfs.pbrpc.Replica replicas = 1; + */ + public org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.ReplicaOrBuilder getReplicasOrBuilder( + int index) { + return replicas_.get(index); + } + private void initFields() { + replicas_ = java.util.Collections.emptyList(); } + private byte memoizedIsInitialized = -1; public final boolean isInitialized() { - for (org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.Replica element : getReplicasList()) { - if (!element.isInitialized()) return false; + byte isInitialized = memoizedIsInitialized; + if (isInitialized != -1) return isInitialized == 1; + + for (int i = 0; i < getReplicasCount(); i++) { + if (!getReplicas(i).isInitialized()) { + memoizedIsInitialized = 0; + return false; + } } + memoizedIsInitialized = 1; return true; } - + public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException { getSerializedSize(); - for (org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.Replica element : getReplicasList()) { - output.writeMessage(1, element); + for (int i = 0; i < replicas_.size(); i++) { + output.writeMessage(1, replicas_.get(i)); } getUnknownFields().writeTo(output); } - + private int memoizedSerializedSize = -1; public int getSerializedSize() { int size = memoizedSerializedSize; if (size != -1) return size; - + size = 0; - for (org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.Replica element : getReplicasList()) { + for (int i = 0; i < replicas_.size(); i++) { size += com.google.protobuf.CodedOutputStream - .computeMessageSize(1, element); + .computeMessageSize(1, replicas_.get(i)); } size += getUnknownFields().getSerializedSize(); memoizedSerializedSize = size; return size; } - + + private static final long serialVersionUID = 0L; + @java.lang.Override + protected java.lang.Object writeReplace() + throws java.io.ObjectStreamException { + return super.writeReplace(); + } + public static org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.Replicas parseFrom( com.google.protobuf.ByteString data) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data).buildParsed(); + return PARSER.parseFrom(data); } public static org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.Replicas parseFrom( com.google.protobuf.ByteString data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(data, extensionRegistry); } public static org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.Replicas parseFrom(byte[] data) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data).buildParsed(); + return PARSER.parseFrom(data); } public static org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.Replicas parseFrom( byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(data, extensionRegistry); } public static org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.Replicas parseFrom(java.io.InputStream input) throws java.io.IOException { - return newBuilder().mergeFrom(input).buildParsed(); + return PARSER.parseFrom(input); } public static org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.Replicas parseFrom( java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - return newBuilder().mergeFrom(input, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(input, extensionRegistry); } public static org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.Replicas parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException { - Builder builder = newBuilder(); - if (builder.mergeDelimitedFrom(input)) { - return builder.buildParsed(); - } else { - return null; - } + return PARSER.parseDelimitedFrom(input); } public static org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.Replicas parseDelimitedFrom( java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - Builder builder = newBuilder(); - if (builder.mergeDelimitedFrom(input, extensionRegistry)) { - return builder.buildParsed(); - } else { - return null; - } + return PARSER.parseDelimitedFrom(input, extensionRegistry); } public static org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.Replicas parseFrom( com.google.protobuf.CodedInputStream input) throws java.io.IOException { - return newBuilder().mergeFrom(input).buildParsed(); + return PARSER.parseFrom(input); } public static org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.Replicas parseFrom( com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - return newBuilder().mergeFrom(input, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(input, extensionRegistry); } - + public static Builder newBuilder() { return Builder.create(); } public Builder newBuilderForType() { return newBuilder(); } public static Builder newBuilder(org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.Replicas prototype) { return newBuilder().mergeFrom(prototype); } public Builder toBuilder() { return newBuilder(this); } - + + @java.lang.Override + protected Builder newBuilderForType( + com.google.protobuf.GeneratedMessage.BuilderParent parent) { + Builder builder = new Builder(parent); + return builder; + } + /** + * Protobuf type {@code xtreemfs.pbrpc.Replicas} + * + *
+     * List of replicas for a file.
+     * 
+ */ public static final class Builder extends - com.google.protobuf.GeneratedMessage.Builder { - private org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.Replicas result; - + com.google.protobuf.GeneratedMessage.Builder + implements org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.ReplicasOrBuilder { + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.internal_static_xtreemfs_pbrpc_Replicas_descriptor; + } + + protected com.google.protobuf.GeneratedMessage.FieldAccessorTable + internalGetFieldAccessorTable() { + return org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.internal_static_xtreemfs_pbrpc_Replicas_fieldAccessorTable + .ensureFieldAccessorsInitialized( + org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.Replicas.class, org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.Replicas.Builder.class); + } + // Construct using org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.Replicas.newBuilder() - private Builder() {} - - private static Builder create() { - Builder builder = new Builder(); - builder.result = new org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.Replicas(); - return builder; + private Builder() { + maybeForceBuilderInitialization(); } - - protected org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.Replicas internalGetResult() { - return result; + + private Builder( + com.google.protobuf.GeneratedMessage.BuilderParent parent) { + super(parent); + maybeForceBuilderInitialization(); + } + private void maybeForceBuilderInitialization() { + if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) { + getReplicasFieldBuilder(); + } } - + private static Builder create() { + return new Builder(); + } + public Builder clear() { - if (result == null) { - throw new IllegalStateException( - "Cannot call clear() after build()."); + super.clear(); + if (replicasBuilder_ == null) { + replicas_ = java.util.Collections.emptyList(); + bitField0_ = (bitField0_ & ~0x00000001); + } else { + replicasBuilder_.clear(); } - result = new org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.Replicas(); return this; } - + public Builder clone() { - return create().mergeFrom(result); + return create().mergeFrom(buildPartial()); } - + public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() { - return org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.Replicas.getDescriptor(); + return org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.internal_static_xtreemfs_pbrpc_Replicas_descriptor; } - + public org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.Replicas getDefaultInstanceForType() { return org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.Replicas.getDefaultInstance(); } - - public boolean isInitialized() { - return result.isInitialized(); - } + public org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.Replicas build() { - if (result != null && !isInitialized()) { + org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.Replicas result = buildPartial(); + if (!result.isInitialized()) { throw newUninitializedMessageException(result); } - return buildPartial(); - } - - private org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.Replicas buildParsed() - throws com.google.protobuf.InvalidProtocolBufferException { - if (!isInitialized()) { - throw newUninitializedMessageException( - result).asInvalidProtocolBufferException(); - } - return buildPartial(); + return result; } - + public org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.Replicas buildPartial() { - if (result == null) { - throw new IllegalStateException( - "build() has already been called on this Builder."); - } - if (result.replicas_ != java.util.Collections.EMPTY_LIST) { - result.replicas_ = - java.util.Collections.unmodifiableList(result.replicas_); + org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.Replicas result = new org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.Replicas(this); + int from_bitField0_ = bitField0_; + if (replicasBuilder_ == null) { + if (((bitField0_ & 0x00000001) == 0x00000001)) { + replicas_ = java.util.Collections.unmodifiableList(replicas_); + bitField0_ = (bitField0_ & ~0x00000001); + } + result.replicas_ = replicas_; + } else { + result.replicas_ = replicasBuilder_.build(); } - org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.Replicas returnMe = result; - result = null; - return returnMe; + onBuilt(); + return result; } - + public Builder mergeFrom(com.google.protobuf.Message other) { if (other instanceof org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.Replicas) { return mergeFrom((org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.Replicas)other); @@ -2087,457 +3888,1393 @@ public final class GlobalTypes { return this; } } - + public Builder mergeFrom(org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.Replicas other) { if (other == org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.Replicas.getDefaultInstance()) return this; - if (!other.replicas_.isEmpty()) { - if (result.replicas_.isEmpty()) { - result.replicas_ = new java.util.ArrayList(); + if (replicasBuilder_ == null) { + if (!other.replicas_.isEmpty()) { + if (replicas_.isEmpty()) { + replicas_ = other.replicas_; + bitField0_ = (bitField0_ & ~0x00000001); + } else { + ensureReplicasIsMutable(); + replicas_.addAll(other.replicas_); + } + onChanged(); + } + } else { + if (!other.replicas_.isEmpty()) { + if (replicasBuilder_.isEmpty()) { + replicasBuilder_.dispose(); + replicasBuilder_ = null; + replicas_ = other.replicas_; + bitField0_ = (bitField0_ & ~0x00000001); + replicasBuilder_ = + com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ? + getReplicasFieldBuilder() : null; + } else { + replicasBuilder_.addAllMessages(other.replicas_); + } } - result.replicas_.addAll(other.replicas_); } this.mergeUnknownFields(other.getUnknownFields()); return this; } - + + public final boolean isInitialized() { + for (int i = 0; i < getReplicasCount(); i++) { + if (!getReplicas(i).isInitialized()) { + + return false; + } + } + return true; + } + public Builder mergeFrom( com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - com.google.protobuf.UnknownFieldSet.Builder unknownFields = - com.google.protobuf.UnknownFieldSet.newBuilder( - this.getUnknownFields()); - while (true) { - int tag = input.readTag(); - switch (tag) { - case 0: - this.setUnknownFields(unknownFields.build()); - return this; - default: { - if (!parseUnknownField(input, unknownFields, - extensionRegistry, tag)) { - this.setUnknownFields(unknownFields.build()); - return this; - } - break; - } - case 10: { - org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.Replica.Builder subBuilder = org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.Replica.newBuilder(); - input.readMessage(subBuilder, extensionRegistry); - addReplicas(subBuilder.buildPartial()); - break; - } + org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.Replicas parsedMessage = null; + try { + parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + parsedMessage = (org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.Replicas) e.getUnfinishedMessage(); + throw e; + } finally { + if (parsedMessage != null) { + mergeFrom(parsedMessage); } } + return this; } - - + private int bitField0_; + // repeated .xtreemfs.pbrpc.Replica replicas = 1; + private java.util.List replicas_ = + java.util.Collections.emptyList(); + private void ensureReplicasIsMutable() { + if (!((bitField0_ & 0x00000001) == 0x00000001)) { + replicas_ = new java.util.ArrayList(replicas_); + bitField0_ |= 0x00000001; + } + } + + private com.google.protobuf.RepeatedFieldBuilder< + org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.Replica, org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.Replica.Builder, org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.ReplicaOrBuilder> replicasBuilder_; + + /** + * repeated .xtreemfs.pbrpc.Replica replicas = 1; + */ public java.util.List getReplicasList() { - return java.util.Collections.unmodifiableList(result.replicas_); + if (replicasBuilder_ == null) { + return java.util.Collections.unmodifiableList(replicas_); + } else { + return replicasBuilder_.getMessageList(); + } } + /** + * repeated .xtreemfs.pbrpc.Replica replicas = 1; + */ public int getReplicasCount() { - return result.getReplicasCount(); + if (replicasBuilder_ == null) { + return replicas_.size(); + } else { + return replicasBuilder_.getCount(); + } } + /** + * repeated .xtreemfs.pbrpc.Replica replicas = 1; + */ public org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.Replica getReplicas(int index) { - return result.getReplicas(index); + if (replicasBuilder_ == null) { + return replicas_.get(index); + } else { + return replicasBuilder_.getMessage(index); + } } - public Builder setReplicas(int index, org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.Replica value) { - if (value == null) { - throw new NullPointerException(); + /** + * repeated .xtreemfs.pbrpc.Replica replicas = 1; + */ + public Builder setReplicas( + int index, org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.Replica value) { + if (replicasBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + ensureReplicasIsMutable(); + replicas_.set(index, value); + onChanged(); + } else { + replicasBuilder_.setMessage(index, value); } - result.replicas_.set(index, value); return this; } - public Builder setReplicas(int index, org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.Replica.Builder builderForValue) { - result.replicas_.set(index, builderForValue.build()); + /** + * repeated .xtreemfs.pbrpc.Replica replicas = 1; + */ + public Builder setReplicas( + int index, org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.Replica.Builder builderForValue) { + if (replicasBuilder_ == null) { + ensureReplicasIsMutable(); + replicas_.set(index, builderForValue.build()); + onChanged(); + } else { + replicasBuilder_.setMessage(index, builderForValue.build()); + } return this; } + /** + * repeated .xtreemfs.pbrpc.Replica replicas = 1; + */ public Builder addReplicas(org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.Replica value) { - if (value == null) { - throw new NullPointerException(); + if (replicasBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + ensureReplicasIsMutable(); + replicas_.add(value); + onChanged(); + } else { + replicasBuilder_.addMessage(value); + } + return this; + } + /** + * repeated .xtreemfs.pbrpc.Replica replicas = 1; + */ + public Builder addReplicas( + int index, org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.Replica value) { + if (replicasBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + ensureReplicasIsMutable(); + replicas_.add(index, value); + onChanged(); + } else { + replicasBuilder_.addMessage(index, value); } - if (result.replicas_.isEmpty()) { - result.replicas_ = new java.util.ArrayList(); + return this; + } + /** + * repeated .xtreemfs.pbrpc.Replica replicas = 1; + */ + public Builder addReplicas( + org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.Replica.Builder builderForValue) { + if (replicasBuilder_ == null) { + ensureReplicasIsMutable(); + replicas_.add(builderForValue.build()); + onChanged(); + } else { + replicasBuilder_.addMessage(builderForValue.build()); } - result.replicas_.add(value); return this; } - public Builder addReplicas(org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.Replica.Builder builderForValue) { - if (result.replicas_.isEmpty()) { - result.replicas_ = new java.util.ArrayList(); + /** + * repeated .xtreemfs.pbrpc.Replica replicas = 1; + */ + public Builder addReplicas( + int index, org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.Replica.Builder builderForValue) { + if (replicasBuilder_ == null) { + ensureReplicasIsMutable(); + replicas_.add(index, builderForValue.build()); + onChanged(); + } else { + replicasBuilder_.addMessage(index, builderForValue.build()); } - result.replicas_.add(builderForValue.build()); return this; } + /** + * repeated .xtreemfs.pbrpc.Replica replicas = 1; + */ public Builder addAllReplicas( java.lang.Iterable values) { - if (result.replicas_.isEmpty()) { - result.replicas_ = new java.util.ArrayList(); + if (replicasBuilder_ == null) { + ensureReplicasIsMutable(); + super.addAll(values, replicas_); + onChanged(); + } else { + replicasBuilder_.addAllMessages(values); } - super.addAll(values, result.replicas_); return this; } + /** + * repeated .xtreemfs.pbrpc.Replica replicas = 1; + */ public Builder clearReplicas() { - result.replicas_ = java.util.Collections.emptyList(); + if (replicasBuilder_ == null) { + replicas_ = java.util.Collections.emptyList(); + bitField0_ = (bitField0_ & ~0x00000001); + onChanged(); + } else { + replicasBuilder_.clear(); + } + return this; + } + /** + * repeated .xtreemfs.pbrpc.Replica replicas = 1; + */ + public Builder removeReplicas(int index) { + if (replicasBuilder_ == null) { + ensureReplicasIsMutable(); + replicas_.remove(index); + onChanged(); + } else { + replicasBuilder_.remove(index); + } return this; } - + /** + * repeated .xtreemfs.pbrpc.Replica replicas = 1; + */ + public org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.Replica.Builder getReplicasBuilder( + int index) { + return getReplicasFieldBuilder().getBuilder(index); + } + /** + * repeated .xtreemfs.pbrpc.Replica replicas = 1; + */ + public org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.ReplicaOrBuilder getReplicasOrBuilder( + int index) { + if (replicasBuilder_ == null) { + return replicas_.get(index); } else { + return replicasBuilder_.getMessageOrBuilder(index); + } + } + /** + * repeated .xtreemfs.pbrpc.Replica replicas = 1; + */ + public java.util.List + getReplicasOrBuilderList() { + if (replicasBuilder_ != null) { + return replicasBuilder_.getMessageOrBuilderList(); + } else { + return java.util.Collections.unmodifiableList(replicas_); + } + } + /** + * repeated .xtreemfs.pbrpc.Replica replicas = 1; + */ + public org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.Replica.Builder addReplicasBuilder() { + return getReplicasFieldBuilder().addBuilder( + org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.Replica.getDefaultInstance()); + } + /** + * repeated .xtreemfs.pbrpc.Replica replicas = 1; + */ + public org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.Replica.Builder addReplicasBuilder( + int index) { + return getReplicasFieldBuilder().addBuilder( + index, org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.Replica.getDefaultInstance()); + } + /** + * repeated .xtreemfs.pbrpc.Replica replicas = 1; + */ + public java.util.List + getReplicasBuilderList() { + return getReplicasFieldBuilder().getBuilderList(); + } + private com.google.protobuf.RepeatedFieldBuilder< + org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.Replica, org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.Replica.Builder, org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.ReplicaOrBuilder> + getReplicasFieldBuilder() { + if (replicasBuilder_ == null) { + replicasBuilder_ = new com.google.protobuf.RepeatedFieldBuilder< + org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.Replica, org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.Replica.Builder, org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.ReplicaOrBuilder>( + replicas_, + ((bitField0_ & 0x00000001) == 0x00000001), + getParentForChildren(), + isClean()); + replicas_ = null; + } + return replicasBuilder_; + } + // @@protoc_insertion_point(builder_scope:xtreemfs.pbrpc.Replicas) } - + static { defaultInstance = new Replicas(true); - org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.internalForceInit(); defaultInstance.initFields(); } - + // @@protoc_insertion_point(class_scope:xtreemfs.pbrpc.Replicas) } - - public static final class XCap extends - com.google.protobuf.GeneratedMessage { - // Use XCap.newBuilder() to construct. - private XCap() { - initFields(); - } - private XCap(boolean noInit) {} - - private static final XCap defaultInstance; - public static XCap getDefaultInstance() { - return defaultInstance; - } - + + public interface XCapOrBuilder + extends com.google.protobuf.MessageOrBuilder { + + // required fixed32 access_mode = 1; + /** + * required fixed32 access_mode = 1; + * + *
+     * Access mode (see SYSTEM_V_FCNTL for allowed values).
+     * 
+ */ + boolean hasAccessMode(); + /** + * required fixed32 access_mode = 1; + * + *
+     * Access mode (see SYSTEM_V_FCNTL for allowed values).
+     * 
+ */ + int getAccessMode(); + + // required string client_identity = 2; + /** + * required string client_identity = 2; + * + *
+     * IP address of the client that owns this XCap.
+     * 
+ */ + boolean hasClientIdentity(); + /** + * required string client_identity = 2; + * + *
+     * IP address of the client that owns this XCap.
+     * 
+ */ + java.lang.String getClientIdentity(); + /** + * required string client_identity = 2; + * + *
+     * IP address of the client that owns this XCap.
+     * 
+ */ + com.google.protobuf.ByteString + getClientIdentityBytes(); + + // required fixed64 expire_time_s = 3; + /** + * required fixed64 expire_time_s = 3; + * + *
+     * Number of seconds this XCap is valid.
+     * 
+ */ + boolean hasExpireTimeS(); + /** + * required fixed64 expire_time_s = 3; + * + *
+     * Number of seconds this XCap is valid.
+     * 
+ */ + long getExpireTimeS(); + + // required fixed32 expire_timeout_s = 4; + /** + * required fixed32 expire_timeout_s = 4; + * + *
+     * Timestamp in global synchronized XtreemFS time when
+     * the XCap expires.
+     * 
+ */ + boolean hasExpireTimeoutS(); + /** + * required fixed32 expire_timeout_s = 4; + * + *
+     * Timestamp in global synchronized XtreemFS time when
+     * the XCap expires.
+     * 
+ */ + int getExpireTimeoutS(); + + // required string file_id = 5; + /** + * required string file_id = 5; + * + *
+     * FileID for which this XCap is valid.
+     * 
+ */ + boolean hasFileId(); + /** + * required string file_id = 5; + * + *
+     * FileID for which this XCap is valid.
+     * 
+ */ + java.lang.String getFileId(); + /** + * required string file_id = 5; + * + *
+     * FileID for which this XCap is valid.
+     * 
+ */ + com.google.protobuf.ByteString + getFileIdBytes(); + + // required bool replicate_on_close = 6; + /** + * required bool replicate_on_close = 6; + * + *
+     * True, if the file should be replicated when
+     * closed (read-only replication).
+     * 
+ */ + boolean hasReplicateOnClose(); + /** + * required bool replicate_on_close = 6; + * + *
+     * True, if the file should be replicated when
+     * closed (read-only replication).
+     * 
+ */ + boolean getReplicateOnClose(); + + // required string server_signature = 7; + /** + * required string server_signature = 7; + * + *
+     * MRC server signature, based on various fields of the XCap.
+     * 
+ */ + boolean hasServerSignature(); + /** + * required string server_signature = 7; + * + *
+     * MRC server signature, based on various fields of the XCap.
+     * 
+ */ + java.lang.String getServerSignature(); + /** + * required string server_signature = 7; + * + *
+     * MRC server signature, based on various fields of the XCap.
+     * 
+ */ + com.google.protobuf.ByteString + getServerSignatureBytes(); + + // required fixed32 truncate_epoch = 8; + /** + * required fixed32 truncate_epoch = 8; + * + *
+     * Current truncate_epoch for the file, required by OSDs.
+     * 
+ */ + boolean hasTruncateEpoch(); + /** + * required fixed32 truncate_epoch = 8; + * + *
+     * Current truncate_epoch for the file, required by OSDs.
+     * 
+ */ + int getTruncateEpoch(); + + // required .xtreemfs.pbrpc.SnapConfig snap_config = 9; + /** + * required .xtreemfs.pbrpc.SnapConfig snap_config = 9; + * + *
+     * Snapshot configuration for the file, required by OSDs.
+     * 
+ */ + boolean hasSnapConfig(); + /** + * required .xtreemfs.pbrpc.SnapConfig snap_config = 9; + * + *
+     * Snapshot configuration for the file, required by OSDs.
+     * 
+ */ + org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.SnapConfig getSnapConfig(); + + // required fixed64 snap_timestamp = 10; + /** + * required fixed64 snap_timestamp = 10; + * + *
+     * If a snapshot of the file is being accessed, this timestamp
+     * indicates which version (snapshot) of the file should be used
+     * on the OSD.
+     * 
+ */ + boolean hasSnapTimestamp(); + /** + * required fixed64 snap_timestamp = 10; + * + *
+     * If a snapshot of the file is being accessed, this timestamp
+     * indicates which version (snapshot) of the file should be used
+     * on the OSD.
+     * 
+ */ + long getSnapTimestamp(); + } + /** + * Protobuf type {@code xtreemfs.pbrpc.XCap} + * + *
+   * The XCap is the authorization token that allows a 
+   * client to execute operations on an OSD. It is created
+   * by the MRC on open and must be renewed by the client
+   * *before* it times out.
+   * The XCap is signed and must not be modified by a client.
+   * 
+ */ + public static final class XCap extends + com.google.protobuf.GeneratedMessage + implements XCapOrBuilder { + // Use XCap.newBuilder() to construct. + private XCap(com.google.protobuf.GeneratedMessage.Builder builder) { + super(builder); + this.unknownFields = builder.getUnknownFields(); + } + private XCap(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); } + + private static final XCap defaultInstance; + public static XCap getDefaultInstance() { + return defaultInstance; + } + public XCap getDefaultInstanceForType() { return defaultInstance; } - + + private final com.google.protobuf.UnknownFieldSet unknownFields; + @java.lang.Override + public final com.google.protobuf.UnknownFieldSet + getUnknownFields() { + return this.unknownFields; + } + private XCap( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + initFields(); + int mutable_bitField0_ = 0; + com.google.protobuf.UnknownFieldSet.Builder unknownFields = + com.google.protobuf.UnknownFieldSet.newBuilder(); + try { + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch (tag) { + case 0: + done = true; + break; + default: { + if (!parseUnknownField(input, unknownFields, + extensionRegistry, tag)) { + done = true; + } + break; + } + case 13: { + bitField0_ |= 0x00000001; + accessMode_ = input.readFixed32(); + break; + } + case 18: { + bitField0_ |= 0x00000002; + clientIdentity_ = input.readBytes(); + break; + } + case 25: { + bitField0_ |= 0x00000004; + expireTimeS_ = input.readFixed64(); + break; + } + case 37: { + bitField0_ |= 0x00000008; + expireTimeoutS_ = input.readFixed32(); + break; + } + case 42: { + bitField0_ |= 0x00000010; + fileId_ = input.readBytes(); + break; + } + case 48: { + bitField0_ |= 0x00000020; + replicateOnClose_ = input.readBool(); + break; + } + case 58: { + bitField0_ |= 0x00000040; + serverSignature_ = input.readBytes(); + break; + } + case 69: { + bitField0_ |= 0x00000080; + truncateEpoch_ = input.readFixed32(); + break; + } + case 72: { + int rawValue = input.readEnum(); + org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.SnapConfig value = org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.SnapConfig.valueOf(rawValue); + if (value == null) { + unknownFields.mergeVarintField(9, rawValue); + } else { + bitField0_ |= 0x00000100; + snapConfig_ = value; + } + break; + } + case 81: { + bitField0_ |= 0x00000200; + snapTimestamp_ = input.readFixed64(); + break; + } + } + } + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(this); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException( + e.getMessage()).setUnfinishedMessage(this); + } finally { + this.unknownFields = unknownFields.build(); + makeExtensionsImmutable(); + } + } public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { return org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.internal_static_xtreemfs_pbrpc_XCap_descriptor; } - + protected com.google.protobuf.GeneratedMessage.FieldAccessorTable internalGetFieldAccessorTable() { - return org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.internal_static_xtreemfs_pbrpc_XCap_fieldAccessorTable; + return org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.internal_static_xtreemfs_pbrpc_XCap_fieldAccessorTable + .ensureFieldAccessorsInitialized( + org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.XCap.class, org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.XCap.Builder.class); } - + + public static com.google.protobuf.Parser PARSER = + new com.google.protobuf.AbstractParser() { + public XCap parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return new XCap(input, extensionRegistry); + } + }; + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; + } + + private int bitField0_; // required fixed32 access_mode = 1; public static final int ACCESS_MODE_FIELD_NUMBER = 1; - private boolean hasAccessMode; - private int accessMode_ = 0; - public boolean hasAccessMode() { return hasAccessMode; } - public int getAccessMode() { return accessMode_; } - + private int accessMode_; + /** + * required fixed32 access_mode = 1; + * + *
+     * Access mode (see SYSTEM_V_FCNTL for allowed values).
+     * 
+ */ + public boolean hasAccessMode() { + return ((bitField0_ & 0x00000001) == 0x00000001); + } + /** + * required fixed32 access_mode = 1; + * + *
+     * Access mode (see SYSTEM_V_FCNTL for allowed values).
+     * 
+ */ + public int getAccessMode() { + return accessMode_; + } + // required string client_identity = 2; public static final int CLIENT_IDENTITY_FIELD_NUMBER = 2; - private boolean hasClientIdentity; - private java.lang.String clientIdentity_ = ""; - public boolean hasClientIdentity() { return hasClientIdentity; } - public java.lang.String getClientIdentity() { return clientIdentity_; } - + private java.lang.Object clientIdentity_; + /** + * required string client_identity = 2; + * + *
+     * IP address of the client that owns this XCap.
+     * 
+ */ + public boolean hasClientIdentity() { + return ((bitField0_ & 0x00000002) == 0x00000002); + } + /** + * required string client_identity = 2; + * + *
+     * IP address of the client that owns this XCap.
+     * 
+ */ + public java.lang.String getClientIdentity() { + java.lang.Object ref = clientIdentity_; + if (ref instanceof java.lang.String) { + return (java.lang.String) ref; + } else { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + if (bs.isValidUtf8()) { + clientIdentity_ = s; + } + return s; + } + } + /** + * required string client_identity = 2; + * + *
+     * IP address of the client that owns this XCap.
+     * 
+ */ + public com.google.protobuf.ByteString + getClientIdentityBytes() { + java.lang.Object ref = clientIdentity_; + if (ref instanceof java.lang.String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + clientIdentity_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + // required fixed64 expire_time_s = 3; public static final int EXPIRE_TIME_S_FIELD_NUMBER = 3; - private boolean hasExpireTimeS; - private long expireTimeS_ = 0L; - public boolean hasExpireTimeS() { return hasExpireTimeS; } - public long getExpireTimeS() { return expireTimeS_; } - + private long expireTimeS_; + /** + * required fixed64 expire_time_s = 3; + * + *
+     * Number of seconds this XCap is valid.
+     * 
+ */ + public boolean hasExpireTimeS() { + return ((bitField0_ & 0x00000004) == 0x00000004); + } + /** + * required fixed64 expire_time_s = 3; + * + *
+     * Number of seconds this XCap is valid.
+     * 
+ */ + public long getExpireTimeS() { + return expireTimeS_; + } + // required fixed32 expire_timeout_s = 4; public static final int EXPIRE_TIMEOUT_S_FIELD_NUMBER = 4; - private boolean hasExpireTimeoutS; - private int expireTimeoutS_ = 0; - public boolean hasExpireTimeoutS() { return hasExpireTimeoutS; } - public int getExpireTimeoutS() { return expireTimeoutS_; } - + private int expireTimeoutS_; + /** + * required fixed32 expire_timeout_s = 4; + * + *
+     * Timestamp in global synchronized XtreemFS time when
+     * the XCap expires.
+     * 
+ */ + public boolean hasExpireTimeoutS() { + return ((bitField0_ & 0x00000008) == 0x00000008); + } + /** + * required fixed32 expire_timeout_s = 4; + * + *
+     * Timestamp in global synchronized XtreemFS time when
+     * the XCap expires.
+     * 
+ */ + public int getExpireTimeoutS() { + return expireTimeoutS_; + } + // required string file_id = 5; public static final int FILE_ID_FIELD_NUMBER = 5; - private boolean hasFileId; - private java.lang.String fileId_ = ""; - public boolean hasFileId() { return hasFileId; } - public java.lang.String getFileId() { return fileId_; } - + private java.lang.Object fileId_; + /** + * required string file_id = 5; + * + *
+     * FileID for which this XCap is valid.
+     * 
+ */ + public boolean hasFileId() { + return ((bitField0_ & 0x00000010) == 0x00000010); + } + /** + * required string file_id = 5; + * + *
+     * FileID for which this XCap is valid.
+     * 
+ */ + public java.lang.String getFileId() { + java.lang.Object ref = fileId_; + if (ref instanceof java.lang.String) { + return (java.lang.String) ref; + } else { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + if (bs.isValidUtf8()) { + fileId_ = s; + } + return s; + } + } + /** + * required string file_id = 5; + * + *
+     * FileID for which this XCap is valid.
+     * 
+ */ + public com.google.protobuf.ByteString + getFileIdBytes() { + java.lang.Object ref = fileId_; + if (ref instanceof java.lang.String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + fileId_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + // required bool replicate_on_close = 6; public static final int REPLICATE_ON_CLOSE_FIELD_NUMBER = 6; - private boolean hasReplicateOnClose; - private boolean replicateOnClose_ = false; - public boolean hasReplicateOnClose() { return hasReplicateOnClose; } - public boolean getReplicateOnClose() { return replicateOnClose_; } - + private boolean replicateOnClose_; + /** + * required bool replicate_on_close = 6; + * + *
+     * True, if the file should be replicated when
+     * closed (read-only replication).
+     * 
+ */ + public boolean hasReplicateOnClose() { + return ((bitField0_ & 0x00000020) == 0x00000020); + } + /** + * required bool replicate_on_close = 6; + * + *
+     * True, if the file should be replicated when
+     * closed (read-only replication).
+     * 
+ */ + public boolean getReplicateOnClose() { + return replicateOnClose_; + } + // required string server_signature = 7; public static final int SERVER_SIGNATURE_FIELD_NUMBER = 7; - private boolean hasServerSignature; - private java.lang.String serverSignature_ = ""; - public boolean hasServerSignature() { return hasServerSignature; } - public java.lang.String getServerSignature() { return serverSignature_; } - + private java.lang.Object serverSignature_; + /** + * required string server_signature = 7; + * + *
+     * MRC server signature, based on various fields of the XCap.
+     * 
+ */ + public boolean hasServerSignature() { + return ((bitField0_ & 0x00000040) == 0x00000040); + } + /** + * required string server_signature = 7; + * + *
+     * MRC server signature, based on various fields of the XCap.
+     * 
+ */ + public java.lang.String getServerSignature() { + java.lang.Object ref = serverSignature_; + if (ref instanceof java.lang.String) { + return (java.lang.String) ref; + } else { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + if (bs.isValidUtf8()) { + serverSignature_ = s; + } + return s; + } + } + /** + * required string server_signature = 7; + * + *
+     * MRC server signature, based on various fields of the XCap.
+     * 
+ */ + public com.google.protobuf.ByteString + getServerSignatureBytes() { + java.lang.Object ref = serverSignature_; + if (ref instanceof java.lang.String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + serverSignature_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + // required fixed32 truncate_epoch = 8; public static final int TRUNCATE_EPOCH_FIELD_NUMBER = 8; - private boolean hasTruncateEpoch; - private int truncateEpoch_ = 0; - public boolean hasTruncateEpoch() { return hasTruncateEpoch; } - public int getTruncateEpoch() { return truncateEpoch_; } - + private int truncateEpoch_; + /** + * required fixed32 truncate_epoch = 8; + * + *
+     * Current truncate_epoch for the file, required by OSDs.
+     * 
+ */ + public boolean hasTruncateEpoch() { + return ((bitField0_ & 0x00000080) == 0x00000080); + } + /** + * required fixed32 truncate_epoch = 8; + * + *
+     * Current truncate_epoch for the file, required by OSDs.
+     * 
+ */ + public int getTruncateEpoch() { + return truncateEpoch_; + } + // required .xtreemfs.pbrpc.SnapConfig snap_config = 9; public static final int SNAP_CONFIG_FIELD_NUMBER = 9; - private boolean hasSnapConfig; private org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.SnapConfig snapConfig_; - public boolean hasSnapConfig() { return hasSnapConfig; } - public org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.SnapConfig getSnapConfig() { return snapConfig_; } - + /** + * required .xtreemfs.pbrpc.SnapConfig snap_config = 9; + * + *
+     * Snapshot configuration for the file, required by OSDs.
+     * 
+ */ + public boolean hasSnapConfig() { + return ((bitField0_ & 0x00000100) == 0x00000100); + } + /** + * required .xtreemfs.pbrpc.SnapConfig snap_config = 9; + * + *
+     * Snapshot configuration for the file, required by OSDs.
+     * 
+ */ + public org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.SnapConfig getSnapConfig() { + return snapConfig_; + } + // required fixed64 snap_timestamp = 10; public static final int SNAP_TIMESTAMP_FIELD_NUMBER = 10; - private boolean hasSnapTimestamp; - private long snapTimestamp_ = 0L; - public boolean hasSnapTimestamp() { return hasSnapTimestamp; } - public long getSnapTimestamp() { return snapTimestamp_; } - + private long snapTimestamp_; + /** + * required fixed64 snap_timestamp = 10; + * + *
+     * If a snapshot of the file is being accessed, this timestamp
+     * indicates which version (snapshot) of the file should be used
+     * on the OSD.
+     * 
+ */ + public boolean hasSnapTimestamp() { + return ((bitField0_ & 0x00000200) == 0x00000200); + } + /** + * required fixed64 snap_timestamp = 10; + * + *
+     * If a snapshot of the file is being accessed, this timestamp
+     * indicates which version (snapshot) of the file should be used
+     * on the OSD.
+     * 
+ */ + public long getSnapTimestamp() { + return snapTimestamp_; + } + private void initFields() { + accessMode_ = 0; + clientIdentity_ = ""; + expireTimeS_ = 0L; + expireTimeoutS_ = 0; + fileId_ = ""; + replicateOnClose_ = false; + serverSignature_ = ""; + truncateEpoch_ = 0; snapConfig_ = org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.SnapConfig.SNAP_CONFIG_SNAPS_DISABLED; + snapTimestamp_ = 0L; } + private byte memoizedIsInitialized = -1; public final boolean isInitialized() { - if (!hasAccessMode) return false; - if (!hasClientIdentity) return false; - if (!hasExpireTimeS) return false; - if (!hasExpireTimeoutS) return false; - if (!hasFileId) return false; - if (!hasReplicateOnClose) return false; - if (!hasServerSignature) return false; - if (!hasTruncateEpoch) return false; - if (!hasSnapConfig) return false; - if (!hasSnapTimestamp) return false; + byte isInitialized = memoizedIsInitialized; + if (isInitialized != -1) return isInitialized == 1; + + if (!hasAccessMode()) { + memoizedIsInitialized = 0; + return false; + } + if (!hasClientIdentity()) { + memoizedIsInitialized = 0; + return false; + } + if (!hasExpireTimeS()) { + memoizedIsInitialized = 0; + return false; + } + if (!hasExpireTimeoutS()) { + memoizedIsInitialized = 0; + return false; + } + if (!hasFileId()) { + memoizedIsInitialized = 0; + return false; + } + if (!hasReplicateOnClose()) { + memoizedIsInitialized = 0; + return false; + } + if (!hasServerSignature()) { + memoizedIsInitialized = 0; + return false; + } + if (!hasTruncateEpoch()) { + memoizedIsInitialized = 0; + return false; + } + if (!hasSnapConfig()) { + memoizedIsInitialized = 0; + return false; + } + if (!hasSnapTimestamp()) { + memoizedIsInitialized = 0; + return false; + } + memoizedIsInitialized = 1; return true; } - + public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException { getSerializedSize(); - if (hasAccessMode()) { - output.writeFixed32(1, getAccessMode()); + if (((bitField0_ & 0x00000001) == 0x00000001)) { + output.writeFixed32(1, accessMode_); } - if (hasClientIdentity()) { - output.writeString(2, getClientIdentity()); + if (((bitField0_ & 0x00000002) == 0x00000002)) { + output.writeBytes(2, getClientIdentityBytes()); } - if (hasExpireTimeS()) { - output.writeFixed64(3, getExpireTimeS()); + if (((bitField0_ & 0x00000004) == 0x00000004)) { + output.writeFixed64(3, expireTimeS_); } - if (hasExpireTimeoutS()) { - output.writeFixed32(4, getExpireTimeoutS()); + if (((bitField0_ & 0x00000008) == 0x00000008)) { + output.writeFixed32(4, expireTimeoutS_); } - if (hasFileId()) { - output.writeString(5, getFileId()); + if (((bitField0_ & 0x00000010) == 0x00000010)) { + output.writeBytes(5, getFileIdBytes()); } - if (hasReplicateOnClose()) { - output.writeBool(6, getReplicateOnClose()); + if (((bitField0_ & 0x00000020) == 0x00000020)) { + output.writeBool(6, replicateOnClose_); } - if (hasServerSignature()) { - output.writeString(7, getServerSignature()); + if (((bitField0_ & 0x00000040) == 0x00000040)) { + output.writeBytes(7, getServerSignatureBytes()); } - if (hasTruncateEpoch()) { - output.writeFixed32(8, getTruncateEpoch()); + if (((bitField0_ & 0x00000080) == 0x00000080)) { + output.writeFixed32(8, truncateEpoch_); } - if (hasSnapConfig()) { - output.writeEnum(9, getSnapConfig().getNumber()); + if (((bitField0_ & 0x00000100) == 0x00000100)) { + output.writeEnum(9, snapConfig_.getNumber()); } - if (hasSnapTimestamp()) { - output.writeFixed64(10, getSnapTimestamp()); + if (((bitField0_ & 0x00000200) == 0x00000200)) { + output.writeFixed64(10, snapTimestamp_); } getUnknownFields().writeTo(output); } - + private int memoizedSerializedSize = -1; public int getSerializedSize() { int size = memoizedSerializedSize; if (size != -1) return size; - + size = 0; - if (hasAccessMode()) { + if (((bitField0_ & 0x00000001) == 0x00000001)) { size += com.google.protobuf.CodedOutputStream - .computeFixed32Size(1, getAccessMode()); + .computeFixed32Size(1, accessMode_); } - if (hasClientIdentity()) { + if (((bitField0_ & 0x00000002) == 0x00000002)) { size += com.google.protobuf.CodedOutputStream - .computeStringSize(2, getClientIdentity()); + .computeBytesSize(2, getClientIdentityBytes()); } - if (hasExpireTimeS()) { + if (((bitField0_ & 0x00000004) == 0x00000004)) { size += com.google.protobuf.CodedOutputStream - .computeFixed64Size(3, getExpireTimeS()); + .computeFixed64Size(3, expireTimeS_); } - if (hasExpireTimeoutS()) { + if (((bitField0_ & 0x00000008) == 0x00000008)) { size += com.google.protobuf.CodedOutputStream - .computeFixed32Size(4, getExpireTimeoutS()); + .computeFixed32Size(4, expireTimeoutS_); } - if (hasFileId()) { + if (((bitField0_ & 0x00000010) == 0x00000010)) { size += com.google.protobuf.CodedOutputStream - .computeStringSize(5, getFileId()); + .computeBytesSize(5, getFileIdBytes()); } - if (hasReplicateOnClose()) { + if (((bitField0_ & 0x00000020) == 0x00000020)) { size += com.google.protobuf.CodedOutputStream - .computeBoolSize(6, getReplicateOnClose()); + .computeBoolSize(6, replicateOnClose_); } - if (hasServerSignature()) { + if (((bitField0_ & 0x00000040) == 0x00000040)) { size += com.google.protobuf.CodedOutputStream - .computeStringSize(7, getServerSignature()); + .computeBytesSize(7, getServerSignatureBytes()); } - if (hasTruncateEpoch()) { + if (((bitField0_ & 0x00000080) == 0x00000080)) { size += com.google.protobuf.CodedOutputStream - .computeFixed32Size(8, getTruncateEpoch()); + .computeFixed32Size(8, truncateEpoch_); } - if (hasSnapConfig()) { + if (((bitField0_ & 0x00000100) == 0x00000100)) { size += com.google.protobuf.CodedOutputStream - .computeEnumSize(9, getSnapConfig().getNumber()); + .computeEnumSize(9, snapConfig_.getNumber()); } - if (hasSnapTimestamp()) { + if (((bitField0_ & 0x00000200) == 0x00000200)) { size += com.google.protobuf.CodedOutputStream - .computeFixed64Size(10, getSnapTimestamp()); + .computeFixed64Size(10, snapTimestamp_); } size += getUnknownFields().getSerializedSize(); memoizedSerializedSize = size; return size; } - + + private static final long serialVersionUID = 0L; + @java.lang.Override + protected java.lang.Object writeReplace() + throws java.io.ObjectStreamException { + return super.writeReplace(); + } + public static org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.XCap parseFrom( com.google.protobuf.ByteString data) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data).buildParsed(); + return PARSER.parseFrom(data); } public static org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.XCap parseFrom( com.google.protobuf.ByteString data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(data, extensionRegistry); } public static org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.XCap parseFrom(byte[] data) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data).buildParsed(); + return PARSER.parseFrom(data); } public static org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.XCap parseFrom( byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(data, extensionRegistry); } public static org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.XCap parseFrom(java.io.InputStream input) throws java.io.IOException { - return newBuilder().mergeFrom(input).buildParsed(); + return PARSER.parseFrom(input); } public static org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.XCap parseFrom( java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - return newBuilder().mergeFrom(input, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(input, extensionRegistry); } public static org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.XCap parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException { - Builder builder = newBuilder(); - if (builder.mergeDelimitedFrom(input)) { - return builder.buildParsed(); - } else { - return null; - } + return PARSER.parseDelimitedFrom(input); } public static org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.XCap parseDelimitedFrom( java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - Builder builder = newBuilder(); - if (builder.mergeDelimitedFrom(input, extensionRegistry)) { - return builder.buildParsed(); - } else { - return null; - } + return PARSER.parseDelimitedFrom(input, extensionRegistry); } public static org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.XCap parseFrom( com.google.protobuf.CodedInputStream input) throws java.io.IOException { - return newBuilder().mergeFrom(input).buildParsed(); + return PARSER.parseFrom(input); } public static org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.XCap parseFrom( com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - return newBuilder().mergeFrom(input, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(input, extensionRegistry); } - + public static Builder newBuilder() { return Builder.create(); } public Builder newBuilderForType() { return newBuilder(); } public static Builder newBuilder(org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.XCap prototype) { return newBuilder().mergeFrom(prototype); } public Builder toBuilder() { return newBuilder(this); } - + + @java.lang.Override + protected Builder newBuilderForType( + com.google.protobuf.GeneratedMessage.BuilderParent parent) { + Builder builder = new Builder(parent); + return builder; + } + /** + * Protobuf type {@code xtreemfs.pbrpc.XCap} + * + *
+     * The XCap is the authorization token that allows a 
+     * client to execute operations on an OSD. It is created
+     * by the MRC on open and must be renewed by the client
+     * *before* it times out.
+     * The XCap is signed and must not be modified by a client.
+     * 
+ */ public static final class Builder extends - com.google.protobuf.GeneratedMessage.Builder { - private org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.XCap result; - + com.google.protobuf.GeneratedMessage.Builder + implements org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.XCapOrBuilder { + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.internal_static_xtreemfs_pbrpc_XCap_descriptor; + } + + protected com.google.protobuf.GeneratedMessage.FieldAccessorTable + internalGetFieldAccessorTable() { + return org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.internal_static_xtreemfs_pbrpc_XCap_fieldAccessorTable + .ensureFieldAccessorsInitialized( + org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.XCap.class, org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.XCap.Builder.class); + } + // Construct using org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.XCap.newBuilder() - private Builder() {} - - private static Builder create() { - Builder builder = new Builder(); - builder.result = new org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.XCap(); - return builder; + private Builder() { + maybeForceBuilderInitialization(); } - - protected org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.XCap internalGetResult() { - return result; + + private Builder( + com.google.protobuf.GeneratedMessage.BuilderParent parent) { + super(parent); + maybeForceBuilderInitialization(); } - - public Builder clear() { - if (result == null) { - throw new IllegalStateException( - "Cannot call clear() after build()."); + private void maybeForceBuilderInitialization() { + if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) { } - result = new org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.XCap(); + } + private static Builder create() { + return new Builder(); + } + + public Builder clear() { + super.clear(); + accessMode_ = 0; + bitField0_ = (bitField0_ & ~0x00000001); + clientIdentity_ = ""; + bitField0_ = (bitField0_ & ~0x00000002); + expireTimeS_ = 0L; + bitField0_ = (bitField0_ & ~0x00000004); + expireTimeoutS_ = 0; + bitField0_ = (bitField0_ & ~0x00000008); + fileId_ = ""; + bitField0_ = (bitField0_ & ~0x00000010); + replicateOnClose_ = false; + bitField0_ = (bitField0_ & ~0x00000020); + serverSignature_ = ""; + bitField0_ = (bitField0_ & ~0x00000040); + truncateEpoch_ = 0; + bitField0_ = (bitField0_ & ~0x00000080); + snapConfig_ = org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.SnapConfig.SNAP_CONFIG_SNAPS_DISABLED; + bitField0_ = (bitField0_ & ~0x00000100); + snapTimestamp_ = 0L; + bitField0_ = (bitField0_ & ~0x00000200); return this; } - + public Builder clone() { - return create().mergeFrom(result); + return create().mergeFrom(buildPartial()); } - + public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() { - return org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.XCap.getDescriptor(); + return org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.internal_static_xtreemfs_pbrpc_XCap_descriptor; } - + public org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.XCap getDefaultInstanceForType() { return org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.XCap.getDefaultInstance(); } - - public boolean isInitialized() { - return result.isInitialized(); - } + public org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.XCap build() { - if (result != null && !isInitialized()) { + org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.XCap result = buildPartial(); + if (!result.isInitialized()) { throw newUninitializedMessageException(result); } - return buildPartial(); - } - - private org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.XCap buildParsed() - throws com.google.protobuf.InvalidProtocolBufferException { - if (!isInitialized()) { - throw newUninitializedMessageException( - result).asInvalidProtocolBufferException(); - } - return buildPartial(); + return result; } - + public org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.XCap buildPartial() { - if (result == null) { - throw new IllegalStateException( - "build() has already been called on this Builder."); + org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.XCap result = new org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.XCap(this); + int from_bitField0_ = bitField0_; + int to_bitField0_ = 0; + if (((from_bitField0_ & 0x00000001) == 0x00000001)) { + to_bitField0_ |= 0x00000001; + } + result.accessMode_ = accessMode_; + if (((from_bitField0_ & 0x00000002) == 0x00000002)) { + to_bitField0_ |= 0x00000002; + } + result.clientIdentity_ = clientIdentity_; + if (((from_bitField0_ & 0x00000004) == 0x00000004)) { + to_bitField0_ |= 0x00000004; + } + result.expireTimeS_ = expireTimeS_; + if (((from_bitField0_ & 0x00000008) == 0x00000008)) { + to_bitField0_ |= 0x00000008; + } + result.expireTimeoutS_ = expireTimeoutS_; + if (((from_bitField0_ & 0x00000010) == 0x00000010)) { + to_bitField0_ |= 0x00000010; + } + result.fileId_ = fileId_; + if (((from_bitField0_ & 0x00000020) == 0x00000020)) { + to_bitField0_ |= 0x00000020; + } + result.replicateOnClose_ = replicateOnClose_; + if (((from_bitField0_ & 0x00000040) == 0x00000040)) { + to_bitField0_ |= 0x00000040; + } + result.serverSignature_ = serverSignature_; + if (((from_bitField0_ & 0x00000080) == 0x00000080)) { + to_bitField0_ |= 0x00000080; + } + result.truncateEpoch_ = truncateEpoch_; + if (((from_bitField0_ & 0x00000100) == 0x00000100)) { + to_bitField0_ |= 0x00000100; } - org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.XCap returnMe = result; - result = null; - return returnMe; + result.snapConfig_ = snapConfig_; + if (((from_bitField0_ & 0x00000200) == 0x00000200)) { + to_bitField0_ |= 0x00000200; + } + result.snapTimestamp_ = snapTimestamp_; + result.bitField0_ = to_bitField0_; + onBuilt(); + return result; } - + public Builder mergeFrom(com.google.protobuf.Message other) { if (other instanceof org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.XCap) { return mergeFrom((org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.XCap)other); @@ -2546,14 +5283,16 @@ public final class GlobalTypes { return this; } } - + public Builder mergeFrom(org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.XCap other) { if (other == org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.XCap.getDefaultInstance()) return this; if (other.hasAccessMode()) { setAccessMode(other.getAccessMode()); } if (other.hasClientIdentity()) { - setClientIdentity(other.getClientIdentity()); + bitField0_ |= 0x00000002; + clientIdentity_ = other.clientIdentity_; + onChanged(); } if (other.hasExpireTimeS()) { setExpireTimeS(other.getExpireTimeS()); @@ -2562,13 +5301,17 @@ public final class GlobalTypes { setExpireTimeoutS(other.getExpireTimeoutS()); } if (other.hasFileId()) { - setFileId(other.getFileId()); + bitField0_ |= 0x00000010; + fileId_ = other.fileId_; + onChanged(); } if (other.hasReplicateOnClose()) { setReplicateOnClose(other.getReplicateOnClose()); } if (other.hasServerSignature()) { - setServerSignature(other.getServerSignature()); + bitField0_ |= 0x00000040; + serverSignature_ = other.serverSignature_; + onChanged(); } if (other.hasTruncateEpoch()) { setTruncateEpoch(other.getTruncateEpoch()); @@ -2582,546 +5325,1404 @@ public final class GlobalTypes { this.mergeUnknownFields(other.getUnknownFields()); return this; } - + + public final boolean isInitialized() { + if (!hasAccessMode()) { + + return false; + } + if (!hasClientIdentity()) { + + return false; + } + if (!hasExpireTimeS()) { + + return false; + } + if (!hasExpireTimeoutS()) { + + return false; + } + if (!hasFileId()) { + + return false; + } + if (!hasReplicateOnClose()) { + + return false; + } + if (!hasServerSignature()) { + + return false; + } + if (!hasTruncateEpoch()) { + + return false; + } + if (!hasSnapConfig()) { + + return false; + } + if (!hasSnapTimestamp()) { + + return false; + } + return true; + } + public Builder mergeFrom( com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - com.google.protobuf.UnknownFieldSet.Builder unknownFields = - com.google.protobuf.UnknownFieldSet.newBuilder( - this.getUnknownFields()); - while (true) { - int tag = input.readTag(); - switch (tag) { - case 0: - this.setUnknownFields(unknownFields.build()); - return this; - default: { - if (!parseUnknownField(input, unknownFields, - extensionRegistry, tag)) { - this.setUnknownFields(unknownFields.build()); - return this; - } - break; - } - case 13: { - setAccessMode(input.readFixed32()); - break; - } - case 18: { - setClientIdentity(input.readString()); - break; - } - case 25: { - setExpireTimeS(input.readFixed64()); - break; - } - case 37: { - setExpireTimeoutS(input.readFixed32()); - break; - } - case 42: { - setFileId(input.readString()); - break; - } - case 48: { - setReplicateOnClose(input.readBool()); - break; - } - case 58: { - setServerSignature(input.readString()); - break; - } - case 69: { - setTruncateEpoch(input.readFixed32()); - break; - } - case 72: { - int rawValue = input.readEnum(); - org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.SnapConfig value = org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.SnapConfig.valueOf(rawValue); - if (value == null) { - unknownFields.mergeVarintField(9, rawValue); - } else { - setSnapConfig(value); - } - break; - } - case 81: { - setSnapTimestamp(input.readFixed64()); - break; - } + org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.XCap parsedMessage = null; + try { + parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + parsedMessage = (org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.XCap) e.getUnfinishedMessage(); + throw e; + } finally { + if (parsedMessage != null) { + mergeFrom(parsedMessage); } } + return this; } - - + private int bitField0_; + // required fixed32 access_mode = 1; + private int accessMode_ ; + /** + * required fixed32 access_mode = 1; + * + *
+       * Access mode (see SYSTEM_V_FCNTL for allowed values).
+       * 
+ */ public boolean hasAccessMode() { - return result.hasAccessMode(); - } + return ((bitField0_ & 0x00000001) == 0x00000001); + } + /** + * required fixed32 access_mode = 1; + * + *
+       * Access mode (see SYSTEM_V_FCNTL for allowed values).
+       * 
+ */ public int getAccessMode() { - return result.getAccessMode(); - } + return accessMode_; + } + /** + * required fixed32 access_mode = 1; + * + *
+       * Access mode (see SYSTEM_V_FCNTL for allowed values).
+       * 
+ */ public Builder setAccessMode(int value) { - result.hasAccessMode = true; - result.accessMode_ = value; + bitField0_ |= 0x00000001; + accessMode_ = value; + onChanged(); return this; } + /** + * required fixed32 access_mode = 1; + * + *
+       * Access mode (see SYSTEM_V_FCNTL for allowed values).
+       * 
+ */ public Builder clearAccessMode() { - result.hasAccessMode = false; - result.accessMode_ = 0; + bitField0_ = (bitField0_ & ~0x00000001); + accessMode_ = 0; + onChanged(); return this; } - + // required string client_identity = 2; + private java.lang.Object clientIdentity_ = ""; + /** + * required string client_identity = 2; + * + *
+       * IP address of the client that owns this XCap.
+       * 
+ */ public boolean hasClientIdentity() { - return result.hasClientIdentity(); - } + return ((bitField0_ & 0x00000002) == 0x00000002); + } + /** + * required string client_identity = 2; + * + *
+       * IP address of the client that owns this XCap.
+       * 
+ */ public java.lang.String getClientIdentity() { - return result.getClientIdentity(); + java.lang.Object ref = clientIdentity_; + if (!(ref instanceof java.lang.String)) { + java.lang.String s = ((com.google.protobuf.ByteString) ref) + .toStringUtf8(); + clientIdentity_ = s; + return s; + } else { + return (java.lang.String) ref; + } + } + /** + * required string client_identity = 2; + * + *
+       * IP address of the client that owns this XCap.
+       * 
+ */ + public com.google.protobuf.ByteString + getClientIdentityBytes() { + java.lang.Object ref = clientIdentity_; + if (ref instanceof String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + clientIdentity_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } } - public Builder setClientIdentity(java.lang.String value) { + /** + * required string client_identity = 2; + * + *
+       * IP address of the client that owns this XCap.
+       * 
+ */ + public Builder setClientIdentity( + java.lang.String value) { if (value == null) { throw new NullPointerException(); } - result.hasClientIdentity = true; - result.clientIdentity_ = value; + bitField0_ |= 0x00000002; + clientIdentity_ = value; + onChanged(); return this; } + /** + * required string client_identity = 2; + * + *
+       * IP address of the client that owns this XCap.
+       * 
+ */ public Builder clearClientIdentity() { - result.hasClientIdentity = false; - result.clientIdentity_ = getDefaultInstance().getClientIdentity(); + bitField0_ = (bitField0_ & ~0x00000002); + clientIdentity_ = getDefaultInstance().getClientIdentity(); + onChanged(); return this; } - + /** + * required string client_identity = 2; + * + *
+       * IP address of the client that owns this XCap.
+       * 
+ */ + public Builder setClientIdentityBytes( + com.google.protobuf.ByteString value) { + if (value == null) { + throw new NullPointerException(); + } + bitField0_ |= 0x00000002; + clientIdentity_ = value; + onChanged(); + return this; + } + // required fixed64 expire_time_s = 3; + private long expireTimeS_ ; + /** + * required fixed64 expire_time_s = 3; + * + *
+       * Number of seconds this XCap is valid.
+       * 
+ */ public boolean hasExpireTimeS() { - return result.hasExpireTimeS(); - } + return ((bitField0_ & 0x00000004) == 0x00000004); + } + /** + * required fixed64 expire_time_s = 3; + * + *
+       * Number of seconds this XCap is valid.
+       * 
+ */ public long getExpireTimeS() { - return result.getExpireTimeS(); - } + return expireTimeS_; + } + /** + * required fixed64 expire_time_s = 3; + * + *
+       * Number of seconds this XCap is valid.
+       * 
+ */ public Builder setExpireTimeS(long value) { - result.hasExpireTimeS = true; - result.expireTimeS_ = value; + bitField0_ |= 0x00000004; + expireTimeS_ = value; + onChanged(); return this; } + /** + * required fixed64 expire_time_s = 3; + * + *
+       * Number of seconds this XCap is valid.
+       * 
+ */ public Builder clearExpireTimeS() { - result.hasExpireTimeS = false; - result.expireTimeS_ = 0L; + bitField0_ = (bitField0_ & ~0x00000004); + expireTimeS_ = 0L; + onChanged(); return this; } - + // required fixed32 expire_timeout_s = 4; + private int expireTimeoutS_ ; + /** + * required fixed32 expire_timeout_s = 4; + * + *
+       * Timestamp in global synchronized XtreemFS time when
+       * the XCap expires.
+       * 
+ */ public boolean hasExpireTimeoutS() { - return result.hasExpireTimeoutS(); - } + return ((bitField0_ & 0x00000008) == 0x00000008); + } + /** + * required fixed32 expire_timeout_s = 4; + * + *
+       * Timestamp in global synchronized XtreemFS time when
+       * the XCap expires.
+       * 
+ */ public int getExpireTimeoutS() { - return result.getExpireTimeoutS(); - } + return expireTimeoutS_; + } + /** + * required fixed32 expire_timeout_s = 4; + * + *
+       * Timestamp in global synchronized XtreemFS time when
+       * the XCap expires.
+       * 
+ */ public Builder setExpireTimeoutS(int value) { - result.hasExpireTimeoutS = true; - result.expireTimeoutS_ = value; + bitField0_ |= 0x00000008; + expireTimeoutS_ = value; + onChanged(); return this; } + /** + * required fixed32 expire_timeout_s = 4; + * + *
+       * Timestamp in global synchronized XtreemFS time when
+       * the XCap expires.
+       * 
+ */ public Builder clearExpireTimeoutS() { - result.hasExpireTimeoutS = false; - result.expireTimeoutS_ = 0; + bitField0_ = (bitField0_ & ~0x00000008); + expireTimeoutS_ = 0; + onChanged(); return this; } - + // required string file_id = 5; + private java.lang.Object fileId_ = ""; + /** + * required string file_id = 5; + * + *
+       * FileID for which this XCap is valid.
+       * 
+ */ public boolean hasFileId() { - return result.hasFileId(); - } + return ((bitField0_ & 0x00000010) == 0x00000010); + } + /** + * required string file_id = 5; + * + *
+       * FileID for which this XCap is valid.
+       * 
+ */ public java.lang.String getFileId() { - return result.getFileId(); + java.lang.Object ref = fileId_; + if (!(ref instanceof java.lang.String)) { + java.lang.String s = ((com.google.protobuf.ByteString) ref) + .toStringUtf8(); + fileId_ = s; + return s; + } else { + return (java.lang.String) ref; + } } - public Builder setFileId(java.lang.String value) { + /** + * required string file_id = 5; + * + *
+       * FileID for which this XCap is valid.
+       * 
+ */ + public com.google.protobuf.ByteString + getFileIdBytes() { + java.lang.Object ref = fileId_; + if (ref instanceof String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + fileId_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + /** + * required string file_id = 5; + * + *
+       * FileID for which this XCap is valid.
+       * 
+ */ + public Builder setFileId( + java.lang.String value) { if (value == null) { throw new NullPointerException(); } - result.hasFileId = true; - result.fileId_ = value; + bitField0_ |= 0x00000010; + fileId_ = value; + onChanged(); return this; } + /** + * required string file_id = 5; + * + *
+       * FileID for which this XCap is valid.
+       * 
+ */ public Builder clearFileId() { - result.hasFileId = false; - result.fileId_ = getDefaultInstance().getFileId(); + bitField0_ = (bitField0_ & ~0x00000010); + fileId_ = getDefaultInstance().getFileId(); + onChanged(); return this; } - + /** + * required string file_id = 5; + * + *
+       * FileID for which this XCap is valid.
+       * 
+ */ + public Builder setFileIdBytes( + com.google.protobuf.ByteString value) { + if (value == null) { + throw new NullPointerException(); + } + bitField0_ |= 0x00000010; + fileId_ = value; + onChanged(); + return this; + } + // required bool replicate_on_close = 6; + private boolean replicateOnClose_ ; + /** + * required bool replicate_on_close = 6; + * + *
+       * True, if the file should be replicated when
+       * closed (read-only replication).
+       * 
+ */ public boolean hasReplicateOnClose() { - return result.hasReplicateOnClose(); - } + return ((bitField0_ & 0x00000020) == 0x00000020); + } + /** + * required bool replicate_on_close = 6; + * + *
+       * True, if the file should be replicated when
+       * closed (read-only replication).
+       * 
+ */ public boolean getReplicateOnClose() { - return result.getReplicateOnClose(); - } + return replicateOnClose_; + } + /** + * required bool replicate_on_close = 6; + * + *
+       * True, if the file should be replicated when
+       * closed (read-only replication).
+       * 
+ */ public Builder setReplicateOnClose(boolean value) { - result.hasReplicateOnClose = true; - result.replicateOnClose_ = value; + bitField0_ |= 0x00000020; + replicateOnClose_ = value; + onChanged(); return this; } + /** + * required bool replicate_on_close = 6; + * + *
+       * True, if the file should be replicated when
+       * closed (read-only replication).
+       * 
+ */ public Builder clearReplicateOnClose() { - result.hasReplicateOnClose = false; - result.replicateOnClose_ = false; + bitField0_ = (bitField0_ & ~0x00000020); + replicateOnClose_ = false; + onChanged(); return this; } - + // required string server_signature = 7; + private java.lang.Object serverSignature_ = ""; + /** + * required string server_signature = 7; + * + *
+       * MRC server signature, based on various fields of the XCap.
+       * 
+ */ public boolean hasServerSignature() { - return result.hasServerSignature(); - } + return ((bitField0_ & 0x00000040) == 0x00000040); + } + /** + * required string server_signature = 7; + * + *
+       * MRC server signature, based on various fields of the XCap.
+       * 
+ */ public java.lang.String getServerSignature() { - return result.getServerSignature(); + java.lang.Object ref = serverSignature_; + if (!(ref instanceof java.lang.String)) { + java.lang.String s = ((com.google.protobuf.ByteString) ref) + .toStringUtf8(); + serverSignature_ = s; + return s; + } else { + return (java.lang.String) ref; + } } - public Builder setServerSignature(java.lang.String value) { + /** + * required string server_signature = 7; + * + *
+       * MRC server signature, based on various fields of the XCap.
+       * 
+ */ + public com.google.protobuf.ByteString + getServerSignatureBytes() { + java.lang.Object ref = serverSignature_; + if (ref instanceof String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + serverSignature_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + /** + * required string server_signature = 7; + * + *
+       * MRC server signature, based on various fields of the XCap.
+       * 
+ */ + public Builder setServerSignature( + java.lang.String value) { if (value == null) { throw new NullPointerException(); } - result.hasServerSignature = true; - result.serverSignature_ = value; + bitField0_ |= 0x00000040; + serverSignature_ = value; + onChanged(); return this; } + /** + * required string server_signature = 7; + * + *
+       * MRC server signature, based on various fields of the XCap.
+       * 
+ */ public Builder clearServerSignature() { - result.hasServerSignature = false; - result.serverSignature_ = getDefaultInstance().getServerSignature(); + bitField0_ = (bitField0_ & ~0x00000040); + serverSignature_ = getDefaultInstance().getServerSignature(); + onChanged(); + return this; + } + /** + * required string server_signature = 7; + * + *
+       * MRC server signature, based on various fields of the XCap.
+       * 
+ */ + public Builder setServerSignatureBytes( + com.google.protobuf.ByteString value) { + if (value == null) { + throw new NullPointerException(); + } + bitField0_ |= 0x00000040; + serverSignature_ = value; + onChanged(); return this; } - + // required fixed32 truncate_epoch = 8; + private int truncateEpoch_ ; + /** + * required fixed32 truncate_epoch = 8; + * + *
+       * Current truncate_epoch for the file, required by OSDs.
+       * 
+ */ public boolean hasTruncateEpoch() { - return result.hasTruncateEpoch(); - } + return ((bitField0_ & 0x00000080) == 0x00000080); + } + /** + * required fixed32 truncate_epoch = 8; + * + *
+       * Current truncate_epoch for the file, required by OSDs.
+       * 
+ */ public int getTruncateEpoch() { - return result.getTruncateEpoch(); - } + return truncateEpoch_; + } + /** + * required fixed32 truncate_epoch = 8; + * + *
+       * Current truncate_epoch for the file, required by OSDs.
+       * 
+ */ public Builder setTruncateEpoch(int value) { - result.hasTruncateEpoch = true; - result.truncateEpoch_ = value; + bitField0_ |= 0x00000080; + truncateEpoch_ = value; + onChanged(); return this; } + /** + * required fixed32 truncate_epoch = 8; + * + *
+       * Current truncate_epoch for the file, required by OSDs.
+       * 
+ */ public Builder clearTruncateEpoch() { - result.hasTruncateEpoch = false; - result.truncateEpoch_ = 0; + bitField0_ = (bitField0_ & ~0x00000080); + truncateEpoch_ = 0; + onChanged(); return this; } - + // required .xtreemfs.pbrpc.SnapConfig snap_config = 9; + private org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.SnapConfig snapConfig_ = org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.SnapConfig.SNAP_CONFIG_SNAPS_DISABLED; + /** + * required .xtreemfs.pbrpc.SnapConfig snap_config = 9; + * + *
+       * Snapshot configuration for the file, required by OSDs.
+       * 
+ */ public boolean hasSnapConfig() { - return result.hasSnapConfig(); - } + return ((bitField0_ & 0x00000100) == 0x00000100); + } + /** + * required .xtreemfs.pbrpc.SnapConfig snap_config = 9; + * + *
+       * Snapshot configuration for the file, required by OSDs.
+       * 
+ */ public org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.SnapConfig getSnapConfig() { - return result.getSnapConfig(); - } + return snapConfig_; + } + /** + * required .xtreemfs.pbrpc.SnapConfig snap_config = 9; + * + *
+       * Snapshot configuration for the file, required by OSDs.
+       * 
+ */ public Builder setSnapConfig(org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.SnapConfig value) { if (value == null) { throw new NullPointerException(); } - result.hasSnapConfig = true; - result.snapConfig_ = value; + bitField0_ |= 0x00000100; + snapConfig_ = value; + onChanged(); return this; } + /** + * required .xtreemfs.pbrpc.SnapConfig snap_config = 9; + * + *
+       * Snapshot configuration for the file, required by OSDs.
+       * 
+ */ public Builder clearSnapConfig() { - result.hasSnapConfig = false; - result.snapConfig_ = org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.SnapConfig.SNAP_CONFIG_SNAPS_DISABLED; + bitField0_ = (bitField0_ & ~0x00000100); + snapConfig_ = org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.SnapConfig.SNAP_CONFIG_SNAPS_DISABLED; + onChanged(); return this; } - + // required fixed64 snap_timestamp = 10; + private long snapTimestamp_ ; + /** + * required fixed64 snap_timestamp = 10; + * + *
+       * If a snapshot of the file is being accessed, this timestamp
+       * indicates which version (snapshot) of the file should be used
+       * on the OSD.
+       * 
+ */ public boolean hasSnapTimestamp() { - return result.hasSnapTimestamp(); - } + return ((bitField0_ & 0x00000200) == 0x00000200); + } + /** + * required fixed64 snap_timestamp = 10; + * + *
+       * If a snapshot of the file is being accessed, this timestamp
+       * indicates which version (snapshot) of the file should be used
+       * on the OSD.
+       * 
+ */ public long getSnapTimestamp() { - return result.getSnapTimestamp(); - } + return snapTimestamp_; + } + /** + * required fixed64 snap_timestamp = 10; + * + *
+       * If a snapshot of the file is being accessed, this timestamp
+       * indicates which version (snapshot) of the file should be used
+       * on the OSD.
+       * 
+ */ public Builder setSnapTimestamp(long value) { - result.hasSnapTimestamp = true; - result.snapTimestamp_ = value; + bitField0_ |= 0x00000200; + snapTimestamp_ = value; + onChanged(); return this; } + /** + * required fixed64 snap_timestamp = 10; + * + *
+       * If a snapshot of the file is being accessed, this timestamp
+       * indicates which version (snapshot) of the file should be used
+       * on the OSD.
+       * 
+ */ public Builder clearSnapTimestamp() { - result.hasSnapTimestamp = false; - result.snapTimestamp_ = 0L; + bitField0_ = (bitField0_ & ~0x00000200); + snapTimestamp_ = 0L; + onChanged(); return this; } - + // @@protoc_insertion_point(builder_scope:xtreemfs.pbrpc.XCap) } - + static { defaultInstance = new XCap(true); - org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.internalForceInit(); defaultInstance.initFields(); } - + // @@protoc_insertion_point(class_scope:xtreemfs.pbrpc.XCap) } - + + public interface XLocSetOrBuilder + extends com.google.protobuf.MessageOrBuilder { + + // required fixed64 read_only_file_size = 1; + /** + * required fixed64 read_only_file_size = 1; + * + *
+     * Used by the read-only replication to properly handle
+     * holes in sparse files and EOF.
+     * 
+ */ + boolean hasReadOnlyFileSize(); + /** + * required fixed64 read_only_file_size = 1; + * + *
+     * Used by the read-only replication to properly handle
+     * holes in sparse files and EOF.
+     * 
+ */ + long getReadOnlyFileSize(); + + // repeated .xtreemfs.pbrpc.Replica replicas = 2; + /** + * repeated .xtreemfs.pbrpc.Replica replicas = 2; + * + *
+     * List of actual file replicas.
+     * 
+ */ + java.util.List + getReplicasList(); + /** + * repeated .xtreemfs.pbrpc.Replica replicas = 2; + * + *
+     * List of actual file replicas.
+     * 
+ */ + org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.Replica getReplicas(int index); + /** + * repeated .xtreemfs.pbrpc.Replica replicas = 2; + * + *
+     * List of actual file replicas.
+     * 
+ */ + int getReplicasCount(); + /** + * repeated .xtreemfs.pbrpc.Replica replicas = 2; + * + *
+     * List of actual file replicas.
+     * 
+ */ + java.util.List + getReplicasOrBuilderList(); + /** + * repeated .xtreemfs.pbrpc.Replica replicas = 2; + * + *
+     * List of actual file replicas.
+     * 
+ */ + org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.ReplicaOrBuilder getReplicasOrBuilder( + int index); + + // required string replica_update_policy = 3; + /** + * required string replica_update_policy = 3; + * + *
+     * Update policy to use for the file,
+     * see org.xtreemfs.common.ReplicaUpdatePolicies for values.
+     * 
+ */ + boolean hasReplicaUpdatePolicy(); + /** + * required string replica_update_policy = 3; + * + *
+     * Update policy to use for the file,
+     * see org.xtreemfs.common.ReplicaUpdatePolicies for values.
+     * 
+ */ + java.lang.String getReplicaUpdatePolicy(); + /** + * required string replica_update_policy = 3; + * + *
+     * Update policy to use for the file,
+     * see org.xtreemfs.common.ReplicaUpdatePolicies for values.
+     * 
+ */ + com.google.protobuf.ByteString + getReplicaUpdatePolicyBytes(); + + // required fixed32 version = 4; + /** + * required fixed32 version = 4; + * + *
+     * Monotonically increasing version number of a file's XLocSet.
+     * Used to identify clients with outdates XLocSets.
+     * 
+ */ + boolean hasVersion(); + /** + * required fixed32 version = 4; + * + *
+     * Monotonically increasing version number of a file's XLocSet.
+     * Used to identify clients with outdates XLocSets.
+     * 
+ */ + int getVersion(); + } + /** + * Protobuf type {@code xtreemfs.pbrpc.XLocSet} + * + *
+   * Locations of a file, i.e. the list of replicas including the OSDs that hold
+   * the file data.
+   * 
+ */ public static final class XLocSet extends - com.google.protobuf.GeneratedMessage { + com.google.protobuf.GeneratedMessage + implements XLocSetOrBuilder { // Use XLocSet.newBuilder() to construct. - private XLocSet() { - initFields(); + private XLocSet(com.google.protobuf.GeneratedMessage.Builder builder) { + super(builder); + this.unknownFields = builder.getUnknownFields(); } - private XLocSet(boolean noInit) {} - + private XLocSet(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); } + private static final XLocSet defaultInstance; public static XLocSet getDefaultInstance() { return defaultInstance; } - + public XLocSet getDefaultInstanceForType() { return defaultInstance; } - + + private final com.google.protobuf.UnknownFieldSet unknownFields; + @java.lang.Override + public final com.google.protobuf.UnknownFieldSet + getUnknownFields() { + return this.unknownFields; + } + private XLocSet( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + initFields(); + int mutable_bitField0_ = 0; + com.google.protobuf.UnknownFieldSet.Builder unknownFields = + com.google.protobuf.UnknownFieldSet.newBuilder(); + try { + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch (tag) { + case 0: + done = true; + break; + default: { + if (!parseUnknownField(input, unknownFields, + extensionRegistry, tag)) { + done = true; + } + break; + } + case 9: { + bitField0_ |= 0x00000001; + readOnlyFileSize_ = input.readFixed64(); + break; + } + case 18: { + if (!((mutable_bitField0_ & 0x00000002) == 0x00000002)) { + replicas_ = new java.util.ArrayList(); + mutable_bitField0_ |= 0x00000002; + } + replicas_.add(input.readMessage(org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.Replica.PARSER, extensionRegistry)); + break; + } + case 26: { + bitField0_ |= 0x00000002; + replicaUpdatePolicy_ = input.readBytes(); + break; + } + case 37: { + bitField0_ |= 0x00000004; + version_ = input.readFixed32(); + break; + } + } + } + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(this); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException( + e.getMessage()).setUnfinishedMessage(this); + } finally { + if (((mutable_bitField0_ & 0x00000002) == 0x00000002)) { + replicas_ = java.util.Collections.unmodifiableList(replicas_); + } + this.unknownFields = unknownFields.build(); + makeExtensionsImmutable(); + } + } public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { return org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.internal_static_xtreemfs_pbrpc_XLocSet_descriptor; } - + protected com.google.protobuf.GeneratedMessage.FieldAccessorTable internalGetFieldAccessorTable() { - return org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.internal_static_xtreemfs_pbrpc_XLocSet_fieldAccessorTable; + return org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.internal_static_xtreemfs_pbrpc_XLocSet_fieldAccessorTable + .ensureFieldAccessorsInitialized( + org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.XLocSet.class, org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.XLocSet.Builder.class); } - + + public static com.google.protobuf.Parser PARSER = + new com.google.protobuf.AbstractParser() { + public XLocSet parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return new XLocSet(input, extensionRegistry); + } + }; + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; + } + + private int bitField0_; // required fixed64 read_only_file_size = 1; public static final int READ_ONLY_FILE_SIZE_FIELD_NUMBER = 1; - private boolean hasReadOnlyFileSize; - private long readOnlyFileSize_ = 0L; - public boolean hasReadOnlyFileSize() { return hasReadOnlyFileSize; } - public long getReadOnlyFileSize() { return readOnlyFileSize_; } - + private long readOnlyFileSize_; + /** + * required fixed64 read_only_file_size = 1; + * + *
+     * Used by the read-only replication to properly handle
+     * holes in sparse files and EOF.
+     * 
+ */ + public boolean hasReadOnlyFileSize() { + return ((bitField0_ & 0x00000001) == 0x00000001); + } + /** + * required fixed64 read_only_file_size = 1; + * + *
+     * Used by the read-only replication to properly handle
+     * holes in sparse files and EOF.
+     * 
+ */ + public long getReadOnlyFileSize() { + return readOnlyFileSize_; + } + // repeated .xtreemfs.pbrpc.Replica replicas = 2; public static final int REPLICAS_FIELD_NUMBER = 2; - private java.util.List replicas_ = - java.util.Collections.emptyList(); + private java.util.List replicas_; + /** + * repeated .xtreemfs.pbrpc.Replica replicas = 2; + * + *
+     * List of actual file replicas.
+     * 
+ */ public java.util.List getReplicasList() { return replicas_; } - public int getReplicasCount() { return replicas_.size(); } + /** + * repeated .xtreemfs.pbrpc.Replica replicas = 2; + * + *
+     * List of actual file replicas.
+     * 
+ */ + public java.util.List + getReplicasOrBuilderList() { + return replicas_; + } + /** + * repeated .xtreemfs.pbrpc.Replica replicas = 2; + * + *
+     * List of actual file replicas.
+     * 
+ */ + public int getReplicasCount() { + return replicas_.size(); + } + /** + * repeated .xtreemfs.pbrpc.Replica replicas = 2; + * + *
+     * List of actual file replicas.
+     * 
+ */ public org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.Replica getReplicas(int index) { return replicas_.get(index); } - + /** + * repeated .xtreemfs.pbrpc.Replica replicas = 2; + * + *
+     * List of actual file replicas.
+     * 
+ */ + public org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.ReplicaOrBuilder getReplicasOrBuilder( + int index) { + return replicas_.get(index); + } + // required string replica_update_policy = 3; public static final int REPLICA_UPDATE_POLICY_FIELD_NUMBER = 3; - private boolean hasReplicaUpdatePolicy; - private java.lang.String replicaUpdatePolicy_ = ""; - public boolean hasReplicaUpdatePolicy() { return hasReplicaUpdatePolicy; } - public java.lang.String getReplicaUpdatePolicy() { return replicaUpdatePolicy_; } - + private java.lang.Object replicaUpdatePolicy_; + /** + * required string replica_update_policy = 3; + * + *
+     * Update policy to use for the file,
+     * see org.xtreemfs.common.ReplicaUpdatePolicies for values.
+     * 
+ */ + public boolean hasReplicaUpdatePolicy() { + return ((bitField0_ & 0x00000002) == 0x00000002); + } + /** + * required string replica_update_policy = 3; + * + *
+     * Update policy to use for the file,
+     * see org.xtreemfs.common.ReplicaUpdatePolicies for values.
+     * 
+ */ + public java.lang.String getReplicaUpdatePolicy() { + java.lang.Object ref = replicaUpdatePolicy_; + if (ref instanceof java.lang.String) { + return (java.lang.String) ref; + } else { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + if (bs.isValidUtf8()) { + replicaUpdatePolicy_ = s; + } + return s; + } + } + /** + * required string replica_update_policy = 3; + * + *
+     * Update policy to use for the file,
+     * see org.xtreemfs.common.ReplicaUpdatePolicies for values.
+     * 
+ */ + public com.google.protobuf.ByteString + getReplicaUpdatePolicyBytes() { + java.lang.Object ref = replicaUpdatePolicy_; + if (ref instanceof java.lang.String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + replicaUpdatePolicy_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + // required fixed32 version = 4; public static final int VERSION_FIELD_NUMBER = 4; - private boolean hasVersion; - private int version_ = 0; - public boolean hasVersion() { return hasVersion; } - public int getVersion() { return version_; } - + private int version_; + /** + * required fixed32 version = 4; + * + *
+     * Monotonically increasing version number of a file's XLocSet.
+     * Used to identify clients with outdates XLocSets.
+     * 
+ */ + public boolean hasVersion() { + return ((bitField0_ & 0x00000004) == 0x00000004); + } + /** + * required fixed32 version = 4; + * + *
+     * Monotonically increasing version number of a file's XLocSet.
+     * Used to identify clients with outdates XLocSets.
+     * 
+ */ + public int getVersion() { + return version_; + } + private void initFields() { + readOnlyFileSize_ = 0L; + replicas_ = java.util.Collections.emptyList(); + replicaUpdatePolicy_ = ""; + version_ = 0; } + private byte memoizedIsInitialized = -1; public final boolean isInitialized() { - if (!hasReadOnlyFileSize) return false; - if (!hasReplicaUpdatePolicy) return false; - if (!hasVersion) return false; - for (org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.Replica element : getReplicasList()) { - if (!element.isInitialized()) return false; + byte isInitialized = memoizedIsInitialized; + if (isInitialized != -1) return isInitialized == 1; + + if (!hasReadOnlyFileSize()) { + memoizedIsInitialized = 0; + return false; + } + if (!hasReplicaUpdatePolicy()) { + memoizedIsInitialized = 0; + return false; + } + if (!hasVersion()) { + memoizedIsInitialized = 0; + return false; + } + for (int i = 0; i < getReplicasCount(); i++) { + if (!getReplicas(i).isInitialized()) { + memoizedIsInitialized = 0; + return false; + } } + memoizedIsInitialized = 1; return true; } - + public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException { getSerializedSize(); - if (hasReadOnlyFileSize()) { - output.writeFixed64(1, getReadOnlyFileSize()); + if (((bitField0_ & 0x00000001) == 0x00000001)) { + output.writeFixed64(1, readOnlyFileSize_); } - for (org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.Replica element : getReplicasList()) { - output.writeMessage(2, element); + for (int i = 0; i < replicas_.size(); i++) { + output.writeMessage(2, replicas_.get(i)); } - if (hasReplicaUpdatePolicy()) { - output.writeString(3, getReplicaUpdatePolicy()); + if (((bitField0_ & 0x00000002) == 0x00000002)) { + output.writeBytes(3, getReplicaUpdatePolicyBytes()); } - if (hasVersion()) { - output.writeFixed32(4, getVersion()); + if (((bitField0_ & 0x00000004) == 0x00000004)) { + output.writeFixed32(4, version_); } getUnknownFields().writeTo(output); } - + private int memoizedSerializedSize = -1; public int getSerializedSize() { int size = memoizedSerializedSize; if (size != -1) return size; - + size = 0; - if (hasReadOnlyFileSize()) { + if (((bitField0_ & 0x00000001) == 0x00000001)) { size += com.google.protobuf.CodedOutputStream - .computeFixed64Size(1, getReadOnlyFileSize()); + .computeFixed64Size(1, readOnlyFileSize_); } - for (org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.Replica element : getReplicasList()) { + for (int i = 0; i < replicas_.size(); i++) { size += com.google.protobuf.CodedOutputStream - .computeMessageSize(2, element); + .computeMessageSize(2, replicas_.get(i)); } - if (hasReplicaUpdatePolicy()) { + if (((bitField0_ & 0x00000002) == 0x00000002)) { size += com.google.protobuf.CodedOutputStream - .computeStringSize(3, getReplicaUpdatePolicy()); + .computeBytesSize(3, getReplicaUpdatePolicyBytes()); } - if (hasVersion()) { + if (((bitField0_ & 0x00000004) == 0x00000004)) { size += com.google.protobuf.CodedOutputStream - .computeFixed32Size(4, getVersion()); + .computeFixed32Size(4, version_); } size += getUnknownFields().getSerializedSize(); memoizedSerializedSize = size; return size; } - + + private static final long serialVersionUID = 0L; + @java.lang.Override + protected java.lang.Object writeReplace() + throws java.io.ObjectStreamException { + return super.writeReplace(); + } + public static org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.XLocSet parseFrom( com.google.protobuf.ByteString data) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data).buildParsed(); + return PARSER.parseFrom(data); } public static org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.XLocSet parseFrom( com.google.protobuf.ByteString data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(data, extensionRegistry); } public static org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.XLocSet parseFrom(byte[] data) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data).buildParsed(); + return PARSER.parseFrom(data); } public static org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.XLocSet parseFrom( byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(data, extensionRegistry); } public static org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.XLocSet parseFrom(java.io.InputStream input) throws java.io.IOException { - return newBuilder().mergeFrom(input).buildParsed(); + return PARSER.parseFrom(input); } public static org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.XLocSet parseFrom( java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - return newBuilder().mergeFrom(input, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(input, extensionRegistry); } public static org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.XLocSet parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException { - Builder builder = newBuilder(); - if (builder.mergeDelimitedFrom(input)) { - return builder.buildParsed(); - } else { - return null; - } + return PARSER.parseDelimitedFrom(input); } public static org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.XLocSet parseDelimitedFrom( java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - Builder builder = newBuilder(); - if (builder.mergeDelimitedFrom(input, extensionRegistry)) { - return builder.buildParsed(); - } else { - return null; - } + return PARSER.parseDelimitedFrom(input, extensionRegistry); } public static org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.XLocSet parseFrom( com.google.protobuf.CodedInputStream input) throws java.io.IOException { - return newBuilder().mergeFrom(input).buildParsed(); + return PARSER.parseFrom(input); } public static org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.XLocSet parseFrom( com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - return newBuilder().mergeFrom(input, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(input, extensionRegistry); } - + public static Builder newBuilder() { return Builder.create(); } public Builder newBuilderForType() { return newBuilder(); } public static Builder newBuilder(org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.XLocSet prototype) { return newBuilder().mergeFrom(prototype); } public Builder toBuilder() { return newBuilder(this); } - + + @java.lang.Override + protected Builder newBuilderForType( + com.google.protobuf.GeneratedMessage.BuilderParent parent) { + Builder builder = new Builder(parent); + return builder; + } + /** + * Protobuf type {@code xtreemfs.pbrpc.XLocSet} + * + *
+     * Locations of a file, i.e. the list of replicas including the OSDs that hold
+     * the file data.
+     * 
+ */ public static final class Builder extends - com.google.protobuf.GeneratedMessage.Builder { - private org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.XLocSet result; - + com.google.protobuf.GeneratedMessage.Builder + implements org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.XLocSetOrBuilder { + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.internal_static_xtreemfs_pbrpc_XLocSet_descriptor; + } + + protected com.google.protobuf.GeneratedMessage.FieldAccessorTable + internalGetFieldAccessorTable() { + return org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.internal_static_xtreemfs_pbrpc_XLocSet_fieldAccessorTable + .ensureFieldAccessorsInitialized( + org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.XLocSet.class, org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.XLocSet.Builder.class); + } + // Construct using org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.XLocSet.newBuilder() - private Builder() {} - - private static Builder create() { - Builder builder = new Builder(); - builder.result = new org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.XLocSet(); - return builder; + private Builder() { + maybeForceBuilderInitialization(); } - - protected org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.XLocSet internalGetResult() { - return result; + + private Builder( + com.google.protobuf.GeneratedMessage.BuilderParent parent) { + super(parent); + maybeForceBuilderInitialization(); + } + private void maybeForceBuilderInitialization() { + if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) { + getReplicasFieldBuilder(); + } + } + private static Builder create() { + return new Builder(); } - + public Builder clear() { - if (result == null) { - throw new IllegalStateException( - "Cannot call clear() after build()."); + super.clear(); + readOnlyFileSize_ = 0L; + bitField0_ = (bitField0_ & ~0x00000001); + if (replicasBuilder_ == null) { + replicas_ = java.util.Collections.emptyList(); + bitField0_ = (bitField0_ & ~0x00000002); + } else { + replicasBuilder_.clear(); } - result = new org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.XLocSet(); + replicaUpdatePolicy_ = ""; + bitField0_ = (bitField0_ & ~0x00000004); + version_ = 0; + bitField0_ = (bitField0_ & ~0x00000008); return this; } - + public Builder clone() { - return create().mergeFrom(result); + return create().mergeFrom(buildPartial()); } - + public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() { - return org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.XLocSet.getDescriptor(); + return org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.internal_static_xtreemfs_pbrpc_XLocSet_descriptor; } - + public org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.XLocSet getDefaultInstanceForType() { return org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.XLocSet.getDefaultInstance(); } - - public boolean isInitialized() { - return result.isInitialized(); - } + public org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.XLocSet build() { - if (result != null && !isInitialized()) { + org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.XLocSet result = buildPartial(); + if (!result.isInitialized()) { throw newUninitializedMessageException(result); } - return buildPartial(); - } - - private org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.XLocSet buildParsed() - throws com.google.protobuf.InvalidProtocolBufferException { - if (!isInitialized()) { - throw newUninitializedMessageException( - result).asInvalidProtocolBufferException(); - } - return buildPartial(); + return result; } - + public org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.XLocSet buildPartial() { - if (result == null) { - throw new IllegalStateException( - "build() has already been called on this Builder."); + org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.XLocSet result = new org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.XLocSet(this); + int from_bitField0_ = bitField0_; + int to_bitField0_ = 0; + if (((from_bitField0_ & 0x00000001) == 0x00000001)) { + to_bitField0_ |= 0x00000001; + } + result.readOnlyFileSize_ = readOnlyFileSize_; + if (replicasBuilder_ == null) { + if (((bitField0_ & 0x00000002) == 0x00000002)) { + replicas_ = java.util.Collections.unmodifiableList(replicas_); + bitField0_ = (bitField0_ & ~0x00000002); + } + result.replicas_ = replicas_; + } else { + result.replicas_ = replicasBuilder_.build(); + } + if (((from_bitField0_ & 0x00000004) == 0x00000004)) { + to_bitField0_ |= 0x00000002; } - if (result.replicas_ != java.util.Collections.EMPTY_LIST) { - result.replicas_ = - java.util.Collections.unmodifiableList(result.replicas_); + result.replicaUpdatePolicy_ = replicaUpdatePolicy_; + if (((from_bitField0_ & 0x00000008) == 0x00000008)) { + to_bitField0_ |= 0x00000004; } - org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.XLocSet returnMe = result; - result = null; - return returnMe; + result.version_ = version_; + result.bitField0_ = to_bitField0_; + onBuilt(); + return result; } - + public Builder mergeFrom(com.google.protobuf.Message other) { if (other instanceof org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.XLocSet) { return mergeFrom((org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.XLocSet)other); @@ -3130,20 +6731,42 @@ public final class GlobalTypes { return this; } } - + public Builder mergeFrom(org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.XLocSet other) { if (other == org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.XLocSet.getDefaultInstance()) return this; if (other.hasReadOnlyFileSize()) { setReadOnlyFileSize(other.getReadOnlyFileSize()); } - if (!other.replicas_.isEmpty()) { - if (result.replicas_.isEmpty()) { - result.replicas_ = new java.util.ArrayList(); + if (replicasBuilder_ == null) { + if (!other.replicas_.isEmpty()) { + if (replicas_.isEmpty()) { + replicas_ = other.replicas_; + bitField0_ = (bitField0_ & ~0x00000002); + } else { + ensureReplicasIsMutable(); + replicas_.addAll(other.replicas_); + } + onChanged(); + } + } else { + if (!other.replicas_.isEmpty()) { + if (replicasBuilder_.isEmpty()) { + replicasBuilder_.dispose(); + replicasBuilder_ = null; + replicas_ = other.replicas_; + bitField0_ = (bitField0_ & ~0x00000002); + replicasBuilder_ = + com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ? + getReplicasFieldBuilder() : null; + } else { + replicasBuilder_.addAllMessages(other.replicas_); + } } - result.replicas_.addAll(other.replicas_); } if (other.hasReplicaUpdatePolicy()) { - setReplicaUpdatePolicy(other.getReplicaUpdatePolicy()); + bitField0_ |= 0x00000004; + replicaUpdatePolicy_ = other.replicaUpdatePolicy_; + onChanged(); } if (other.hasVersion()) { setVersion(other.getVersion()); @@ -3151,397 +6774,1015 @@ public final class GlobalTypes { this.mergeUnknownFields(other.getUnknownFields()); return this; } - + + public final boolean isInitialized() { + if (!hasReadOnlyFileSize()) { + + return false; + } + if (!hasReplicaUpdatePolicy()) { + + return false; + } + if (!hasVersion()) { + + return false; + } + for (int i = 0; i < getReplicasCount(); i++) { + if (!getReplicas(i).isInitialized()) { + + return false; + } + } + return true; + } + public Builder mergeFrom( com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - com.google.protobuf.UnknownFieldSet.Builder unknownFields = - com.google.protobuf.UnknownFieldSet.newBuilder( - this.getUnknownFields()); - while (true) { - int tag = input.readTag(); - switch (tag) { - case 0: - this.setUnknownFields(unknownFields.build()); - return this; - default: { - if (!parseUnknownField(input, unknownFields, - extensionRegistry, tag)) { - this.setUnknownFields(unknownFields.build()); - return this; - } - break; - } - case 9: { - setReadOnlyFileSize(input.readFixed64()); - break; - } - case 18: { - org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.Replica.Builder subBuilder = org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.Replica.newBuilder(); - input.readMessage(subBuilder, extensionRegistry); - addReplicas(subBuilder.buildPartial()); - break; - } - case 26: { - setReplicaUpdatePolicy(input.readString()); - break; - } - case 37: { - setVersion(input.readFixed32()); - break; - } + org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.XLocSet parsedMessage = null; + try { + parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + parsedMessage = (org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.XLocSet) e.getUnfinishedMessage(); + throw e; + } finally { + if (parsedMessage != null) { + mergeFrom(parsedMessage); } } + return this; } - - + private int bitField0_; + // required fixed64 read_only_file_size = 1; + private long readOnlyFileSize_ ; + /** + * required fixed64 read_only_file_size = 1; + * + *
+       * Used by the read-only replication to properly handle
+       * holes in sparse files and EOF.
+       * 
+ */ public boolean hasReadOnlyFileSize() { - return result.hasReadOnlyFileSize(); - } + return ((bitField0_ & 0x00000001) == 0x00000001); + } + /** + * required fixed64 read_only_file_size = 1; + * + *
+       * Used by the read-only replication to properly handle
+       * holes in sparse files and EOF.
+       * 
+ */ public long getReadOnlyFileSize() { - return result.getReadOnlyFileSize(); - } + return readOnlyFileSize_; + } + /** + * required fixed64 read_only_file_size = 1; + * + *
+       * Used by the read-only replication to properly handle
+       * holes in sparse files and EOF.
+       * 
+ */ public Builder setReadOnlyFileSize(long value) { - result.hasReadOnlyFileSize = true; - result.readOnlyFileSize_ = value; + bitField0_ |= 0x00000001; + readOnlyFileSize_ = value; + onChanged(); return this; } + /** + * required fixed64 read_only_file_size = 1; + * + *
+       * Used by the read-only replication to properly handle
+       * holes in sparse files and EOF.
+       * 
+ */ public Builder clearReadOnlyFileSize() { - result.hasReadOnlyFileSize = false; - result.readOnlyFileSize_ = 0L; + bitField0_ = (bitField0_ & ~0x00000001); + readOnlyFileSize_ = 0L; + onChanged(); return this; } - + // repeated .xtreemfs.pbrpc.Replica replicas = 2; + private java.util.List replicas_ = + java.util.Collections.emptyList(); + private void ensureReplicasIsMutable() { + if (!((bitField0_ & 0x00000002) == 0x00000002)) { + replicas_ = new java.util.ArrayList(replicas_); + bitField0_ |= 0x00000002; + } + } + + private com.google.protobuf.RepeatedFieldBuilder< + org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.Replica, org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.Replica.Builder, org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.ReplicaOrBuilder> replicasBuilder_; + + /** + * repeated .xtreemfs.pbrpc.Replica replicas = 2; + * + *
+       * List of actual file replicas.
+       * 
+ */ public java.util.List getReplicasList() { - return java.util.Collections.unmodifiableList(result.replicas_); + if (replicasBuilder_ == null) { + return java.util.Collections.unmodifiableList(replicas_); + } else { + return replicasBuilder_.getMessageList(); + } } + /** + * repeated .xtreemfs.pbrpc.Replica replicas = 2; + * + *
+       * List of actual file replicas.
+       * 
+ */ public int getReplicasCount() { - return result.getReplicasCount(); + if (replicasBuilder_ == null) { + return replicas_.size(); + } else { + return replicasBuilder_.getCount(); + } } + /** + * repeated .xtreemfs.pbrpc.Replica replicas = 2; + * + *
+       * List of actual file replicas.
+       * 
+ */ public org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.Replica getReplicas(int index) { - return result.getReplicas(index); + if (replicasBuilder_ == null) { + return replicas_.get(index); + } else { + return replicasBuilder_.getMessage(index); + } } - public Builder setReplicas(int index, org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.Replica value) { - if (value == null) { - throw new NullPointerException(); + /** + * repeated .xtreemfs.pbrpc.Replica replicas = 2; + * + *
+       * List of actual file replicas.
+       * 
+ */ + public Builder setReplicas( + int index, org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.Replica value) { + if (replicasBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + ensureReplicasIsMutable(); + replicas_.set(index, value); + onChanged(); + } else { + replicasBuilder_.setMessage(index, value); + } + return this; + } + /** + * repeated .xtreemfs.pbrpc.Replica replicas = 2; + * + *
+       * List of actual file replicas.
+       * 
+ */ + public Builder setReplicas( + int index, org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.Replica.Builder builderForValue) { + if (replicasBuilder_ == null) { + ensureReplicasIsMutable(); + replicas_.set(index, builderForValue.build()); + onChanged(); + } else { + replicasBuilder_.setMessage(index, builderForValue.build()); + } + return this; + } + /** + * repeated .xtreemfs.pbrpc.Replica replicas = 2; + * + *
+       * List of actual file replicas.
+       * 
+ */ + public Builder addReplicas(org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.Replica value) { + if (replicasBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + ensureReplicasIsMutable(); + replicas_.add(value); + onChanged(); + } else { + replicasBuilder_.addMessage(value); + } + return this; + } + /** + * repeated .xtreemfs.pbrpc.Replica replicas = 2; + * + *
+       * List of actual file replicas.
+       * 
+ */ + public Builder addReplicas( + int index, org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.Replica value) { + if (replicasBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + ensureReplicasIsMutable(); + replicas_.add(index, value); + onChanged(); + } else { + replicasBuilder_.addMessage(index, value); } - result.replicas_.set(index, value); return this; } - public Builder setReplicas(int index, org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.Replica.Builder builderForValue) { - result.replicas_.set(index, builderForValue.build()); - return this; - } - public Builder addReplicas(org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.Replica value) { - if (value == null) { - throw new NullPointerException(); - } - if (result.replicas_.isEmpty()) { - result.replicas_ = new java.util.ArrayList(); + /** + * repeated .xtreemfs.pbrpc.Replica replicas = 2; + * + *
+       * List of actual file replicas.
+       * 
+ */ + public Builder addReplicas( + org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.Replica.Builder builderForValue) { + if (replicasBuilder_ == null) { + ensureReplicasIsMutable(); + replicas_.add(builderForValue.build()); + onChanged(); + } else { + replicasBuilder_.addMessage(builderForValue.build()); } - result.replicas_.add(value); return this; } - public Builder addReplicas(org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.Replica.Builder builderForValue) { - if (result.replicas_.isEmpty()) { - result.replicas_ = new java.util.ArrayList(); + /** + * repeated .xtreemfs.pbrpc.Replica replicas = 2; + * + *
+       * List of actual file replicas.
+       * 
+ */ + public Builder addReplicas( + int index, org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.Replica.Builder builderForValue) { + if (replicasBuilder_ == null) { + ensureReplicasIsMutable(); + replicas_.add(index, builderForValue.build()); + onChanged(); + } else { + replicasBuilder_.addMessage(index, builderForValue.build()); } - result.replicas_.add(builderForValue.build()); return this; } + /** + * repeated .xtreemfs.pbrpc.Replica replicas = 2; + * + *
+       * List of actual file replicas.
+       * 
+ */ public Builder addAllReplicas( java.lang.Iterable values) { - if (result.replicas_.isEmpty()) { - result.replicas_ = new java.util.ArrayList(); + if (replicasBuilder_ == null) { + ensureReplicasIsMutable(); + super.addAll(values, replicas_); + onChanged(); + } else { + replicasBuilder_.addAllMessages(values); } - super.addAll(values, result.replicas_); return this; } + /** + * repeated .xtreemfs.pbrpc.Replica replicas = 2; + * + *
+       * List of actual file replicas.
+       * 
+ */ public Builder clearReplicas() { - result.replicas_ = java.util.Collections.emptyList(); + if (replicasBuilder_ == null) { + replicas_ = java.util.Collections.emptyList(); + bitField0_ = (bitField0_ & ~0x00000002); + onChanged(); + } else { + replicasBuilder_.clear(); + } + return this; + } + /** + * repeated .xtreemfs.pbrpc.Replica replicas = 2; + * + *
+       * List of actual file replicas.
+       * 
+ */ + public Builder removeReplicas(int index) { + if (replicasBuilder_ == null) { + ensureReplicasIsMutable(); + replicas_.remove(index); + onChanged(); + } else { + replicasBuilder_.remove(index); + } return this; } - + /** + * repeated .xtreemfs.pbrpc.Replica replicas = 2; + * + *
+       * List of actual file replicas.
+       * 
+ */ + public org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.Replica.Builder getReplicasBuilder( + int index) { + return getReplicasFieldBuilder().getBuilder(index); + } + /** + * repeated .xtreemfs.pbrpc.Replica replicas = 2; + * + *
+       * List of actual file replicas.
+       * 
+ */ + public org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.ReplicaOrBuilder getReplicasOrBuilder( + int index) { + if (replicasBuilder_ == null) { + return replicas_.get(index); } else { + return replicasBuilder_.getMessageOrBuilder(index); + } + } + /** + * repeated .xtreemfs.pbrpc.Replica replicas = 2; + * + *
+       * List of actual file replicas.
+       * 
+ */ + public java.util.List + getReplicasOrBuilderList() { + if (replicasBuilder_ != null) { + return replicasBuilder_.getMessageOrBuilderList(); + } else { + return java.util.Collections.unmodifiableList(replicas_); + } + } + /** + * repeated .xtreemfs.pbrpc.Replica replicas = 2; + * + *
+       * List of actual file replicas.
+       * 
+ */ + public org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.Replica.Builder addReplicasBuilder() { + return getReplicasFieldBuilder().addBuilder( + org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.Replica.getDefaultInstance()); + } + /** + * repeated .xtreemfs.pbrpc.Replica replicas = 2; + * + *
+       * List of actual file replicas.
+       * 
+ */ + public org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.Replica.Builder addReplicasBuilder( + int index) { + return getReplicasFieldBuilder().addBuilder( + index, org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.Replica.getDefaultInstance()); + } + /** + * repeated .xtreemfs.pbrpc.Replica replicas = 2; + * + *
+       * List of actual file replicas.
+       * 
+ */ + public java.util.List + getReplicasBuilderList() { + return getReplicasFieldBuilder().getBuilderList(); + } + private com.google.protobuf.RepeatedFieldBuilder< + org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.Replica, org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.Replica.Builder, org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.ReplicaOrBuilder> + getReplicasFieldBuilder() { + if (replicasBuilder_ == null) { + replicasBuilder_ = new com.google.protobuf.RepeatedFieldBuilder< + org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.Replica, org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.Replica.Builder, org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.ReplicaOrBuilder>( + replicas_, + ((bitField0_ & 0x00000002) == 0x00000002), + getParentForChildren(), + isClean()); + replicas_ = null; + } + return replicasBuilder_; + } + // required string replica_update_policy = 3; + private java.lang.Object replicaUpdatePolicy_ = ""; + /** + * required string replica_update_policy = 3; + * + *
+       * Update policy to use for the file,
+       * see org.xtreemfs.common.ReplicaUpdatePolicies for values.
+       * 
+ */ public boolean hasReplicaUpdatePolicy() { - return result.hasReplicaUpdatePolicy(); - } + return ((bitField0_ & 0x00000004) == 0x00000004); + } + /** + * required string replica_update_policy = 3; + * + *
+       * Update policy to use for the file,
+       * see org.xtreemfs.common.ReplicaUpdatePolicies for values.
+       * 
+ */ public java.lang.String getReplicaUpdatePolicy() { - return result.getReplicaUpdatePolicy(); + java.lang.Object ref = replicaUpdatePolicy_; + if (!(ref instanceof java.lang.String)) { + java.lang.String s = ((com.google.protobuf.ByteString) ref) + .toStringUtf8(); + replicaUpdatePolicy_ = s; + return s; + } else { + return (java.lang.String) ref; + } + } + /** + * required string replica_update_policy = 3; + * + *
+       * Update policy to use for the file,
+       * see org.xtreemfs.common.ReplicaUpdatePolicies for values.
+       * 
+ */ + public com.google.protobuf.ByteString + getReplicaUpdatePolicyBytes() { + java.lang.Object ref = replicaUpdatePolicy_; + if (ref instanceof String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + replicaUpdatePolicy_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } } - public Builder setReplicaUpdatePolicy(java.lang.String value) { + /** + * required string replica_update_policy = 3; + * + *
+       * Update policy to use for the file,
+       * see org.xtreemfs.common.ReplicaUpdatePolicies for values.
+       * 
+ */ + public Builder setReplicaUpdatePolicy( + java.lang.String value) { if (value == null) { throw new NullPointerException(); } - result.hasReplicaUpdatePolicy = true; - result.replicaUpdatePolicy_ = value; + bitField0_ |= 0x00000004; + replicaUpdatePolicy_ = value; + onChanged(); return this; } + /** + * required string replica_update_policy = 3; + * + *
+       * Update policy to use for the file,
+       * see org.xtreemfs.common.ReplicaUpdatePolicies for values.
+       * 
+ */ public Builder clearReplicaUpdatePolicy() { - result.hasReplicaUpdatePolicy = false; - result.replicaUpdatePolicy_ = getDefaultInstance().getReplicaUpdatePolicy(); + bitField0_ = (bitField0_ & ~0x00000004); + replicaUpdatePolicy_ = getDefaultInstance().getReplicaUpdatePolicy(); + onChanged(); + return this; + } + /** + * required string replica_update_policy = 3; + * + *
+       * Update policy to use for the file,
+       * see org.xtreemfs.common.ReplicaUpdatePolicies for values.
+       * 
+ */ + public Builder setReplicaUpdatePolicyBytes( + com.google.protobuf.ByteString value) { + if (value == null) { + throw new NullPointerException(); + } + bitField0_ |= 0x00000004; + replicaUpdatePolicy_ = value; + onChanged(); return this; } - + // required fixed32 version = 4; + private int version_ ; + /** + * required fixed32 version = 4; + * + *
+       * Monotonically increasing version number of a file's XLocSet.
+       * Used to identify clients with outdates XLocSets.
+       * 
+ */ public boolean hasVersion() { - return result.hasVersion(); - } + return ((bitField0_ & 0x00000008) == 0x00000008); + } + /** + * required fixed32 version = 4; + * + *
+       * Monotonically increasing version number of a file's XLocSet.
+       * Used to identify clients with outdates XLocSets.
+       * 
+ */ public int getVersion() { - return result.getVersion(); - } + return version_; + } + /** + * required fixed32 version = 4; + * + *
+       * Monotonically increasing version number of a file's XLocSet.
+       * Used to identify clients with outdates XLocSets.
+       * 
+ */ public Builder setVersion(int value) { - result.hasVersion = true; - result.version_ = value; + bitField0_ |= 0x00000008; + version_ = value; + onChanged(); return this; } + /** + * required fixed32 version = 4; + * + *
+       * Monotonically increasing version number of a file's XLocSet.
+       * Used to identify clients with outdates XLocSets.
+       * 
+ */ public Builder clearVersion() { - result.hasVersion = false; - result.version_ = 0; + bitField0_ = (bitField0_ & ~0x00000008); + version_ = 0; + onChanged(); return this; } - + // @@protoc_insertion_point(builder_scope:xtreemfs.pbrpc.XLocSet) } - + static { defaultInstance = new XLocSet(true); - org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.internalForceInit(); defaultInstance.initFields(); } - + // @@protoc_insertion_point(class_scope:xtreemfs.pbrpc.XLocSet) } - + + public interface FileCredentialsOrBuilder + extends com.google.protobuf.MessageOrBuilder { + + // required .xtreemfs.pbrpc.XCap xcap = 1; + /** + * required .xtreemfs.pbrpc.XCap xcap = 1; + */ + boolean hasXcap(); + /** + * required .xtreemfs.pbrpc.XCap xcap = 1; + */ + org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.XCap getXcap(); + /** + * required .xtreemfs.pbrpc.XCap xcap = 1; + */ + org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.XCapOrBuilder getXcapOrBuilder(); + + // required .xtreemfs.pbrpc.XLocSet xlocs = 2; + /** + * required .xtreemfs.pbrpc.XLocSet xlocs = 2; + */ + boolean hasXlocs(); + /** + * required .xtreemfs.pbrpc.XLocSet xlocs = 2; + */ + org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.XLocSet getXlocs(); + /** + * required .xtreemfs.pbrpc.XLocSet xlocs = 2; + */ + org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.XLocSetOrBuilder getXlocsOrBuilder(); + } + /** + * Protobuf type {@code xtreemfs.pbrpc.FileCredentials} + * + *
+   * Information required by OSDs for all file operations.
+   * 
+ */ public static final class FileCredentials extends - com.google.protobuf.GeneratedMessage { + com.google.protobuf.GeneratedMessage + implements FileCredentialsOrBuilder { // Use FileCredentials.newBuilder() to construct. - private FileCredentials() { - initFields(); + private FileCredentials(com.google.protobuf.GeneratedMessage.Builder builder) { + super(builder); + this.unknownFields = builder.getUnknownFields(); } - private FileCredentials(boolean noInit) {} - + private FileCredentials(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); } + private static final FileCredentials defaultInstance; public static FileCredentials getDefaultInstance() { return defaultInstance; } - + public FileCredentials getDefaultInstanceForType() { return defaultInstance; } - + + private final com.google.protobuf.UnknownFieldSet unknownFields; + @java.lang.Override + public final com.google.protobuf.UnknownFieldSet + getUnknownFields() { + return this.unknownFields; + } + private FileCredentials( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + initFields(); + int mutable_bitField0_ = 0; + com.google.protobuf.UnknownFieldSet.Builder unknownFields = + com.google.protobuf.UnknownFieldSet.newBuilder(); + try { + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch (tag) { + case 0: + done = true; + break; + default: { + if (!parseUnknownField(input, unknownFields, + extensionRegistry, tag)) { + done = true; + } + break; + } + case 10: { + org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.XCap.Builder subBuilder = null; + if (((bitField0_ & 0x00000001) == 0x00000001)) { + subBuilder = xcap_.toBuilder(); + } + xcap_ = input.readMessage(org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.XCap.PARSER, extensionRegistry); + if (subBuilder != null) { + subBuilder.mergeFrom(xcap_); + xcap_ = subBuilder.buildPartial(); + } + bitField0_ |= 0x00000001; + break; + } + case 18: { + org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.XLocSet.Builder subBuilder = null; + if (((bitField0_ & 0x00000002) == 0x00000002)) { + subBuilder = xlocs_.toBuilder(); + } + xlocs_ = input.readMessage(org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.XLocSet.PARSER, extensionRegistry); + if (subBuilder != null) { + subBuilder.mergeFrom(xlocs_); + xlocs_ = subBuilder.buildPartial(); + } + bitField0_ |= 0x00000002; + break; + } + } + } + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(this); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException( + e.getMessage()).setUnfinishedMessage(this); + } finally { + this.unknownFields = unknownFields.build(); + makeExtensionsImmutable(); + } + } public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { return org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.internal_static_xtreemfs_pbrpc_FileCredentials_descriptor; } - + protected com.google.protobuf.GeneratedMessage.FieldAccessorTable internalGetFieldAccessorTable() { - return org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.internal_static_xtreemfs_pbrpc_FileCredentials_fieldAccessorTable; + return org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.internal_static_xtreemfs_pbrpc_FileCredentials_fieldAccessorTable + .ensureFieldAccessorsInitialized( + org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials.class, org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials.Builder.class); } - + + public static com.google.protobuf.Parser PARSER = + new com.google.protobuf.AbstractParser() { + public FileCredentials parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return new FileCredentials(input, extensionRegistry); + } + }; + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; + } + + private int bitField0_; // required .xtreemfs.pbrpc.XCap xcap = 1; public static final int XCAP_FIELD_NUMBER = 1; - private boolean hasXcap; private org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.XCap xcap_; - public boolean hasXcap() { return hasXcap; } - public org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.XCap getXcap() { return xcap_; } - + /** + * required .xtreemfs.pbrpc.XCap xcap = 1; + */ + public boolean hasXcap() { + return ((bitField0_ & 0x00000001) == 0x00000001); + } + /** + * required .xtreemfs.pbrpc.XCap xcap = 1; + */ + public org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.XCap getXcap() { + return xcap_; + } + /** + * required .xtreemfs.pbrpc.XCap xcap = 1; + */ + public org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.XCapOrBuilder getXcapOrBuilder() { + return xcap_; + } + // required .xtreemfs.pbrpc.XLocSet xlocs = 2; public static final int XLOCS_FIELD_NUMBER = 2; - private boolean hasXlocs; private org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.XLocSet xlocs_; - public boolean hasXlocs() { return hasXlocs; } - public org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.XLocSet getXlocs() { return xlocs_; } - + /** + * required .xtreemfs.pbrpc.XLocSet xlocs = 2; + */ + public boolean hasXlocs() { + return ((bitField0_ & 0x00000002) == 0x00000002); + } + /** + * required .xtreemfs.pbrpc.XLocSet xlocs = 2; + */ + public org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.XLocSet getXlocs() { + return xlocs_; + } + /** + * required .xtreemfs.pbrpc.XLocSet xlocs = 2; + */ + public org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.XLocSetOrBuilder getXlocsOrBuilder() { + return xlocs_; + } + private void initFields() { xcap_ = org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.XCap.getDefaultInstance(); xlocs_ = org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.XLocSet.getDefaultInstance(); } + private byte memoizedIsInitialized = -1; public final boolean isInitialized() { - if (!hasXcap) return false; - if (!hasXlocs) return false; - if (!getXcap().isInitialized()) return false; - if (!getXlocs().isInitialized()) return false; + byte isInitialized = memoizedIsInitialized; + if (isInitialized != -1) return isInitialized == 1; + + if (!hasXcap()) { + memoizedIsInitialized = 0; + return false; + } + if (!hasXlocs()) { + memoizedIsInitialized = 0; + return false; + } + if (!getXcap().isInitialized()) { + memoizedIsInitialized = 0; + return false; + } + if (!getXlocs().isInitialized()) { + memoizedIsInitialized = 0; + return false; + } + memoizedIsInitialized = 1; return true; } - + public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException { getSerializedSize(); - if (hasXcap()) { - output.writeMessage(1, getXcap()); + if (((bitField0_ & 0x00000001) == 0x00000001)) { + output.writeMessage(1, xcap_); } - if (hasXlocs()) { - output.writeMessage(2, getXlocs()); + if (((bitField0_ & 0x00000002) == 0x00000002)) { + output.writeMessage(2, xlocs_); } getUnknownFields().writeTo(output); } - + private int memoizedSerializedSize = -1; public int getSerializedSize() { int size = memoizedSerializedSize; if (size != -1) return size; - + size = 0; - if (hasXcap()) { + if (((bitField0_ & 0x00000001) == 0x00000001)) { size += com.google.protobuf.CodedOutputStream - .computeMessageSize(1, getXcap()); + .computeMessageSize(1, xcap_); } - if (hasXlocs()) { + if (((bitField0_ & 0x00000002) == 0x00000002)) { size += com.google.protobuf.CodedOutputStream - .computeMessageSize(2, getXlocs()); + .computeMessageSize(2, xlocs_); } size += getUnknownFields().getSerializedSize(); memoizedSerializedSize = size; return size; } - + + private static final long serialVersionUID = 0L; + @java.lang.Override + protected java.lang.Object writeReplace() + throws java.io.ObjectStreamException { + return super.writeReplace(); + } + public static org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials parseFrom( com.google.protobuf.ByteString data) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data).buildParsed(); + return PARSER.parseFrom(data); } public static org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials parseFrom( com.google.protobuf.ByteString data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(data, extensionRegistry); } public static org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials parseFrom(byte[] data) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data).buildParsed(); + return PARSER.parseFrom(data); } public static org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials parseFrom( byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(data, extensionRegistry); } public static org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials parseFrom(java.io.InputStream input) throws java.io.IOException { - return newBuilder().mergeFrom(input).buildParsed(); + return PARSER.parseFrom(input); } public static org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials parseFrom( java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - return newBuilder().mergeFrom(input, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(input, extensionRegistry); } public static org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException { - Builder builder = newBuilder(); - if (builder.mergeDelimitedFrom(input)) { - return builder.buildParsed(); - } else { - return null; - } + return PARSER.parseDelimitedFrom(input); } public static org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials parseDelimitedFrom( java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - Builder builder = newBuilder(); - if (builder.mergeDelimitedFrom(input, extensionRegistry)) { - return builder.buildParsed(); - } else { - return null; - } + return PARSER.parseDelimitedFrom(input, extensionRegistry); } public static org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials parseFrom( com.google.protobuf.CodedInputStream input) throws java.io.IOException { - return newBuilder().mergeFrom(input).buildParsed(); + return PARSER.parseFrom(input); } public static org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials parseFrom( com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - return newBuilder().mergeFrom(input, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(input, extensionRegistry); } - + public static Builder newBuilder() { return Builder.create(); } public Builder newBuilderForType() { return newBuilder(); } public static Builder newBuilder(org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials prototype) { return newBuilder().mergeFrom(prototype); } public Builder toBuilder() { return newBuilder(this); } - + + @java.lang.Override + protected Builder newBuilderForType( + com.google.protobuf.GeneratedMessage.BuilderParent parent) { + Builder builder = new Builder(parent); + return builder; + } + /** + * Protobuf type {@code xtreemfs.pbrpc.FileCredentials} + * + *
+     * Information required by OSDs for all file operations.
+     * 
+ */ public static final class Builder extends - com.google.protobuf.GeneratedMessage.Builder { - private org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials result; - + com.google.protobuf.GeneratedMessage.Builder + implements org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentialsOrBuilder { + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.internal_static_xtreemfs_pbrpc_FileCredentials_descriptor; + } + + protected com.google.protobuf.GeneratedMessage.FieldAccessorTable + internalGetFieldAccessorTable() { + return org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.internal_static_xtreemfs_pbrpc_FileCredentials_fieldAccessorTable + .ensureFieldAccessorsInitialized( + org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials.class, org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials.Builder.class); + } + // Construct using org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials.newBuilder() - private Builder() {} - - private static Builder create() { - Builder builder = new Builder(); - builder.result = new org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials(); - return builder; + private Builder() { + maybeForceBuilderInitialization(); } - - protected org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials internalGetResult() { - return result; + + private Builder( + com.google.protobuf.GeneratedMessage.BuilderParent parent) { + super(parent); + maybeForceBuilderInitialization(); + } + private void maybeForceBuilderInitialization() { + if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) { + getXcapFieldBuilder(); + getXlocsFieldBuilder(); + } + } + private static Builder create() { + return new Builder(); } - + public Builder clear() { - if (result == null) { - throw new IllegalStateException( - "Cannot call clear() after build()."); + super.clear(); + if (xcapBuilder_ == null) { + xcap_ = org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.XCap.getDefaultInstance(); + } else { + xcapBuilder_.clear(); + } + bitField0_ = (bitField0_ & ~0x00000001); + if (xlocsBuilder_ == null) { + xlocs_ = org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.XLocSet.getDefaultInstance(); + } else { + xlocsBuilder_.clear(); } - result = new org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials(); + bitField0_ = (bitField0_ & ~0x00000002); return this; } - + public Builder clone() { - return create().mergeFrom(result); + return create().mergeFrom(buildPartial()); } - + public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() { - return org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials.getDescriptor(); + return org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.internal_static_xtreemfs_pbrpc_FileCredentials_descriptor; } - + public org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials getDefaultInstanceForType() { return org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials.getDefaultInstance(); } - - public boolean isInitialized() { - return result.isInitialized(); - } + public org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials build() { - if (result != null && !isInitialized()) { + org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials result = buildPartial(); + if (!result.isInitialized()) { throw newUninitializedMessageException(result); } - return buildPartial(); - } - - private org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials buildParsed() - throws com.google.protobuf.InvalidProtocolBufferException { - if (!isInitialized()) { - throw newUninitializedMessageException( - result).asInvalidProtocolBufferException(); - } - return buildPartial(); + return result; } - + public org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials buildPartial() { - if (result == null) { - throw new IllegalStateException( - "build() has already been called on this Builder."); + org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials result = new org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials(this); + int from_bitField0_ = bitField0_; + int to_bitField0_ = 0; + if (((from_bitField0_ & 0x00000001) == 0x00000001)) { + to_bitField0_ |= 0x00000001; + } + if (xcapBuilder_ == null) { + result.xcap_ = xcap_; + } else { + result.xcap_ = xcapBuilder_.build(); } - org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials returnMe = result; - result = null; - return returnMe; + if (((from_bitField0_ & 0x00000002) == 0x00000002)) { + to_bitField0_ |= 0x00000002; + } + if (xlocsBuilder_ == null) { + result.xlocs_ = xlocs_; + } else { + result.xlocs_ = xlocsBuilder_.build(); + } + result.bitField0_ = to_bitField0_; + onBuilt(); + return result; } - + public Builder mergeFrom(com.google.protobuf.Message other) { if (other instanceof org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials) { return mergeFrom((org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials)other); @@ -3550,7 +7791,7 @@ public final class GlobalTypes { return this; } } - + public Builder mergeFrom(org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials other) { if (other == org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials.getDefaultInstance()) return this; if (other.hasXcap()) { @@ -3562,347 +7803,635 @@ public final class GlobalTypes { this.mergeUnknownFields(other.getUnknownFields()); return this; } - + + public final boolean isInitialized() { + if (!hasXcap()) { + + return false; + } + if (!hasXlocs()) { + + return false; + } + if (!getXcap().isInitialized()) { + + return false; + } + if (!getXlocs().isInitialized()) { + + return false; + } + return true; + } + public Builder mergeFrom( com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - com.google.protobuf.UnknownFieldSet.Builder unknownFields = - com.google.protobuf.UnknownFieldSet.newBuilder( - this.getUnknownFields()); - while (true) { - int tag = input.readTag(); - switch (tag) { - case 0: - this.setUnknownFields(unknownFields.build()); - return this; - default: { - if (!parseUnknownField(input, unknownFields, - extensionRegistry, tag)) { - this.setUnknownFields(unknownFields.build()); - return this; - } - break; - } - case 10: { - org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.XCap.Builder subBuilder = org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.XCap.newBuilder(); - if (hasXcap()) { - subBuilder.mergeFrom(getXcap()); - } - input.readMessage(subBuilder, extensionRegistry); - setXcap(subBuilder.buildPartial()); - break; - } - case 18: { - org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.XLocSet.Builder subBuilder = org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.XLocSet.newBuilder(); - if (hasXlocs()) { - subBuilder.mergeFrom(getXlocs()); - } - input.readMessage(subBuilder, extensionRegistry); - setXlocs(subBuilder.buildPartial()); - break; - } + org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials parsedMessage = null; + try { + parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + parsedMessage = (org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials) e.getUnfinishedMessage(); + throw e; + } finally { + if (parsedMessage != null) { + mergeFrom(parsedMessage); } } + return this; } - - + private int bitField0_; + // required .xtreemfs.pbrpc.XCap xcap = 1; + private org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.XCap xcap_ = org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.XCap.getDefaultInstance(); + private com.google.protobuf.SingleFieldBuilder< + org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.XCap, org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.XCap.Builder, org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.XCapOrBuilder> xcapBuilder_; + /** + * required .xtreemfs.pbrpc.XCap xcap = 1; + */ public boolean hasXcap() { - return result.hasXcap(); + return ((bitField0_ & 0x00000001) == 0x00000001); } + /** + * required .xtreemfs.pbrpc.XCap xcap = 1; + */ public org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.XCap getXcap() { - return result.getXcap(); + if (xcapBuilder_ == null) { + return xcap_; + } else { + return xcapBuilder_.getMessage(); + } } + /** + * required .xtreemfs.pbrpc.XCap xcap = 1; + */ public Builder setXcap(org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.XCap value) { - if (value == null) { - throw new NullPointerException(); + if (xcapBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + xcap_ = value; + onChanged(); + } else { + xcapBuilder_.setMessage(value); } - result.hasXcap = true; - result.xcap_ = value; + bitField0_ |= 0x00000001; return this; } - public Builder setXcap(org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.XCap.Builder builderForValue) { - result.hasXcap = true; - result.xcap_ = builderForValue.build(); + /** + * required .xtreemfs.pbrpc.XCap xcap = 1; + */ + public Builder setXcap( + org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.XCap.Builder builderForValue) { + if (xcapBuilder_ == null) { + xcap_ = builderForValue.build(); + onChanged(); + } else { + xcapBuilder_.setMessage(builderForValue.build()); + } + bitField0_ |= 0x00000001; return this; } + /** + * required .xtreemfs.pbrpc.XCap xcap = 1; + */ public Builder mergeXcap(org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.XCap value) { - if (result.hasXcap() && - result.xcap_ != org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.XCap.getDefaultInstance()) { - result.xcap_ = - org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.XCap.newBuilder(result.xcap_).mergeFrom(value).buildPartial(); + if (xcapBuilder_ == null) { + if (((bitField0_ & 0x00000001) == 0x00000001) && + xcap_ != org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.XCap.getDefaultInstance()) { + xcap_ = + org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.XCap.newBuilder(xcap_).mergeFrom(value).buildPartial(); + } else { + xcap_ = value; + } + onChanged(); } else { - result.xcap_ = value; + xcapBuilder_.mergeFrom(value); } - result.hasXcap = true; + bitField0_ |= 0x00000001; return this; } + /** + * required .xtreemfs.pbrpc.XCap xcap = 1; + */ public Builder clearXcap() { - result.hasXcap = false; - result.xcap_ = org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.XCap.getDefaultInstance(); + if (xcapBuilder_ == null) { + xcap_ = org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.XCap.getDefaultInstance(); + onChanged(); + } else { + xcapBuilder_.clear(); + } + bitField0_ = (bitField0_ & ~0x00000001); return this; } - + /** + * required .xtreemfs.pbrpc.XCap xcap = 1; + */ + public org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.XCap.Builder getXcapBuilder() { + bitField0_ |= 0x00000001; + onChanged(); + return getXcapFieldBuilder().getBuilder(); + } + /** + * required .xtreemfs.pbrpc.XCap xcap = 1; + */ + public org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.XCapOrBuilder getXcapOrBuilder() { + if (xcapBuilder_ != null) { + return xcapBuilder_.getMessageOrBuilder(); + } else { + return xcap_; + } + } + /** + * required .xtreemfs.pbrpc.XCap xcap = 1; + */ + private com.google.protobuf.SingleFieldBuilder< + org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.XCap, org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.XCap.Builder, org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.XCapOrBuilder> + getXcapFieldBuilder() { + if (xcapBuilder_ == null) { + xcapBuilder_ = new com.google.protobuf.SingleFieldBuilder< + org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.XCap, org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.XCap.Builder, org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.XCapOrBuilder>( + xcap_, + getParentForChildren(), + isClean()); + xcap_ = null; + } + return xcapBuilder_; + } + // required .xtreemfs.pbrpc.XLocSet xlocs = 2; + private org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.XLocSet xlocs_ = org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.XLocSet.getDefaultInstance(); + private com.google.protobuf.SingleFieldBuilder< + org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.XLocSet, org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.XLocSet.Builder, org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.XLocSetOrBuilder> xlocsBuilder_; + /** + * required .xtreemfs.pbrpc.XLocSet xlocs = 2; + */ public boolean hasXlocs() { - return result.hasXlocs(); + return ((bitField0_ & 0x00000002) == 0x00000002); } + /** + * required .xtreemfs.pbrpc.XLocSet xlocs = 2; + */ public org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.XLocSet getXlocs() { - return result.getXlocs(); + if (xlocsBuilder_ == null) { + return xlocs_; + } else { + return xlocsBuilder_.getMessage(); + } } + /** + * required .xtreemfs.pbrpc.XLocSet xlocs = 2; + */ public Builder setXlocs(org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.XLocSet value) { - if (value == null) { - throw new NullPointerException(); + if (xlocsBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + xlocs_ = value; + onChanged(); + } else { + xlocsBuilder_.setMessage(value); } - result.hasXlocs = true; - result.xlocs_ = value; + bitField0_ |= 0x00000002; return this; } - public Builder setXlocs(org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.XLocSet.Builder builderForValue) { - result.hasXlocs = true; - result.xlocs_ = builderForValue.build(); + /** + * required .xtreemfs.pbrpc.XLocSet xlocs = 2; + */ + public Builder setXlocs( + org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.XLocSet.Builder builderForValue) { + if (xlocsBuilder_ == null) { + xlocs_ = builderForValue.build(); + onChanged(); + } else { + xlocsBuilder_.setMessage(builderForValue.build()); + } + bitField0_ |= 0x00000002; return this; } + /** + * required .xtreemfs.pbrpc.XLocSet xlocs = 2; + */ public Builder mergeXlocs(org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.XLocSet value) { - if (result.hasXlocs() && - result.xlocs_ != org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.XLocSet.getDefaultInstance()) { - result.xlocs_ = - org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.XLocSet.newBuilder(result.xlocs_).mergeFrom(value).buildPartial(); + if (xlocsBuilder_ == null) { + if (((bitField0_ & 0x00000002) == 0x00000002) && + xlocs_ != org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.XLocSet.getDefaultInstance()) { + xlocs_ = + org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.XLocSet.newBuilder(xlocs_).mergeFrom(value).buildPartial(); + } else { + xlocs_ = value; + } + onChanged(); + } else { + xlocsBuilder_.mergeFrom(value); + } + bitField0_ |= 0x00000002; + return this; + } + /** + * required .xtreemfs.pbrpc.XLocSet xlocs = 2; + */ + public Builder clearXlocs() { + if (xlocsBuilder_ == null) { + xlocs_ = org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.XLocSet.getDefaultInstance(); + onChanged(); + } else { + xlocsBuilder_.clear(); + } + bitField0_ = (bitField0_ & ~0x00000002); + return this; + } + /** + * required .xtreemfs.pbrpc.XLocSet xlocs = 2; + */ + public org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.XLocSet.Builder getXlocsBuilder() { + bitField0_ |= 0x00000002; + onChanged(); + return getXlocsFieldBuilder().getBuilder(); + } + /** + * required .xtreemfs.pbrpc.XLocSet xlocs = 2; + */ + public org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.XLocSetOrBuilder getXlocsOrBuilder() { + if (xlocsBuilder_ != null) { + return xlocsBuilder_.getMessageOrBuilder(); } else { - result.xlocs_ = value; + return xlocs_; + } + } + /** + * required .xtreemfs.pbrpc.XLocSet xlocs = 2; + */ + private com.google.protobuf.SingleFieldBuilder< + org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.XLocSet, org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.XLocSet.Builder, org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.XLocSetOrBuilder> + getXlocsFieldBuilder() { + if (xlocsBuilder_ == null) { + xlocsBuilder_ = new com.google.protobuf.SingleFieldBuilder< + org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.XLocSet, org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.XLocSet.Builder, org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.XLocSetOrBuilder>( + xlocs_, + getParentForChildren(), + isClean()); + xlocs_ = null; + } + return xlocsBuilder_; + } + + // @@protoc_insertion_point(builder_scope:xtreemfs.pbrpc.FileCredentials) + } + + static { + defaultInstance = new FileCredentials(true); + defaultInstance.initFields(); + } + + // @@protoc_insertion_point(class_scope:xtreemfs.pbrpc.FileCredentials) + } + + public interface FileCredentialsSetOrBuilder + extends com.google.protobuf.MessageOrBuilder { + + // optional .xtreemfs.pbrpc.FileCredentials file_credentials = 1; + /** + * optional .xtreemfs.pbrpc.FileCredentials file_credentials = 1; + */ + boolean hasFileCredentials(); + /** + * optional .xtreemfs.pbrpc.FileCredentials file_credentials = 1; + */ + org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials getFileCredentials(); + /** + * optional .xtreemfs.pbrpc.FileCredentials file_credentials = 1; + */ + org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentialsOrBuilder getFileCredentialsOrBuilder(); + } + /** + * Protobuf type {@code xtreemfs.pbrpc.FileCredentialsSet} + */ + public static final class FileCredentialsSet extends + com.google.protobuf.GeneratedMessage + implements FileCredentialsSetOrBuilder { + // Use FileCredentialsSet.newBuilder() to construct. + private FileCredentialsSet(com.google.protobuf.GeneratedMessage.Builder builder) { + super(builder); + this.unknownFields = builder.getUnknownFields(); + } + private FileCredentialsSet(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); } + + private static final FileCredentialsSet defaultInstance; + public static FileCredentialsSet getDefaultInstance() { + return defaultInstance; + } + + public FileCredentialsSet getDefaultInstanceForType() { + return defaultInstance; + } + + private final com.google.protobuf.UnknownFieldSet unknownFields; + @java.lang.Override + public final com.google.protobuf.UnknownFieldSet + getUnknownFields() { + return this.unknownFields; + } + private FileCredentialsSet( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + initFields(); + int mutable_bitField0_ = 0; + com.google.protobuf.UnknownFieldSet.Builder unknownFields = + com.google.protobuf.UnknownFieldSet.newBuilder(); + try { + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch (tag) { + case 0: + done = true; + break; + default: { + if (!parseUnknownField(input, unknownFields, + extensionRegistry, tag)) { + done = true; + } + break; + } + case 10: { + org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials.Builder subBuilder = null; + if (((bitField0_ & 0x00000001) == 0x00000001)) { + subBuilder = fileCredentials_.toBuilder(); + } + fileCredentials_ = input.readMessage(org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials.PARSER, extensionRegistry); + if (subBuilder != null) { + subBuilder.mergeFrom(fileCredentials_); + fileCredentials_ = subBuilder.buildPartial(); + } + bitField0_ |= 0x00000001; + break; + } + } } - result.hasXlocs = true; - return this; - } - public Builder clearXlocs() { - result.hasXlocs = false; - result.xlocs_ = org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.XLocSet.getDefaultInstance(); - return this; + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(this); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException( + e.getMessage()).setUnfinishedMessage(this); + } finally { + this.unknownFields = unknownFields.build(); + makeExtensionsImmutable(); } - - // @@protoc_insertion_point(builder_scope:xtreemfs.pbrpc.FileCredentials) - } - - static { - defaultInstance = new FileCredentials(true); - org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.internalForceInit(); - defaultInstance.initFields(); - } - - // @@protoc_insertion_point(class_scope:xtreemfs.pbrpc.FileCredentials) - } - - public static final class FileCredentialsSet extends - com.google.protobuf.GeneratedMessage { - // Use FileCredentialsSet.newBuilder() to construct. - private FileCredentialsSet() { - initFields(); - } - private FileCredentialsSet(boolean noInit) {} - - private static final FileCredentialsSet defaultInstance; - public static FileCredentialsSet getDefaultInstance() { - return defaultInstance; - } - - public FileCredentialsSet getDefaultInstanceForType() { - return defaultInstance; } - public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { return org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.internal_static_xtreemfs_pbrpc_FileCredentialsSet_descriptor; } - + protected com.google.protobuf.GeneratedMessage.FieldAccessorTable internalGetFieldAccessorTable() { - return org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.internal_static_xtreemfs_pbrpc_FileCredentialsSet_fieldAccessorTable; + return org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.internal_static_xtreemfs_pbrpc_FileCredentialsSet_fieldAccessorTable + .ensureFieldAccessorsInitialized( + org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentialsSet.class, org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentialsSet.Builder.class); + } + + public static com.google.protobuf.Parser PARSER = + new com.google.protobuf.AbstractParser() { + public FileCredentialsSet parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return new FileCredentialsSet(input, extensionRegistry); + } + }; + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; } - + + private int bitField0_; // optional .xtreemfs.pbrpc.FileCredentials file_credentials = 1; public static final int FILE_CREDENTIALS_FIELD_NUMBER = 1; - private boolean hasFileCredentials; private org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials fileCredentials_; - public boolean hasFileCredentials() { return hasFileCredentials; } - public org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials getFileCredentials() { return fileCredentials_; } - + /** + * optional .xtreemfs.pbrpc.FileCredentials file_credentials = 1; + */ + public boolean hasFileCredentials() { + return ((bitField0_ & 0x00000001) == 0x00000001); + } + /** + * optional .xtreemfs.pbrpc.FileCredentials file_credentials = 1; + */ + public org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials getFileCredentials() { + return fileCredentials_; + } + /** + * optional .xtreemfs.pbrpc.FileCredentials file_credentials = 1; + */ + public org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentialsOrBuilder getFileCredentialsOrBuilder() { + return fileCredentials_; + } + private void initFields() { fileCredentials_ = org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials.getDefaultInstance(); } + private byte memoizedIsInitialized = -1; public final boolean isInitialized() { + byte isInitialized = memoizedIsInitialized; + if (isInitialized != -1) return isInitialized == 1; + if (hasFileCredentials()) { - if (!getFileCredentials().isInitialized()) return false; + if (!getFileCredentials().isInitialized()) { + memoizedIsInitialized = 0; + return false; + } } + memoizedIsInitialized = 1; return true; } - + public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException { getSerializedSize(); - if (hasFileCredentials()) { - output.writeMessage(1, getFileCredentials()); + if (((bitField0_ & 0x00000001) == 0x00000001)) { + output.writeMessage(1, fileCredentials_); } getUnknownFields().writeTo(output); } - + private int memoizedSerializedSize = -1; public int getSerializedSize() { int size = memoizedSerializedSize; if (size != -1) return size; - + size = 0; - if (hasFileCredentials()) { + if (((bitField0_ & 0x00000001) == 0x00000001)) { size += com.google.protobuf.CodedOutputStream - .computeMessageSize(1, getFileCredentials()); + .computeMessageSize(1, fileCredentials_); } size += getUnknownFields().getSerializedSize(); memoizedSerializedSize = size; return size; } - + + private static final long serialVersionUID = 0L; + @java.lang.Override + protected java.lang.Object writeReplace() + throws java.io.ObjectStreamException { + return super.writeReplace(); + } + public static org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentialsSet parseFrom( com.google.protobuf.ByteString data) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data).buildParsed(); + return PARSER.parseFrom(data); } public static org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentialsSet parseFrom( com.google.protobuf.ByteString data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(data, extensionRegistry); } public static org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentialsSet parseFrom(byte[] data) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data).buildParsed(); + return PARSER.parseFrom(data); } public static org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentialsSet parseFrom( byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(data, extensionRegistry); } public static org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentialsSet parseFrom(java.io.InputStream input) throws java.io.IOException { - return newBuilder().mergeFrom(input).buildParsed(); + return PARSER.parseFrom(input); } public static org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentialsSet parseFrom( java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - return newBuilder().mergeFrom(input, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(input, extensionRegistry); } public static org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentialsSet parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException { - Builder builder = newBuilder(); - if (builder.mergeDelimitedFrom(input)) { - return builder.buildParsed(); - } else { - return null; - } + return PARSER.parseDelimitedFrom(input); } public static org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentialsSet parseDelimitedFrom( java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - Builder builder = newBuilder(); - if (builder.mergeDelimitedFrom(input, extensionRegistry)) { - return builder.buildParsed(); - } else { - return null; - } + return PARSER.parseDelimitedFrom(input, extensionRegistry); } public static org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentialsSet parseFrom( com.google.protobuf.CodedInputStream input) throws java.io.IOException { - return newBuilder().mergeFrom(input).buildParsed(); + return PARSER.parseFrom(input); } public static org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentialsSet parseFrom( com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - return newBuilder().mergeFrom(input, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(input, extensionRegistry); } - + public static Builder newBuilder() { return Builder.create(); } public Builder newBuilderForType() { return newBuilder(); } public static Builder newBuilder(org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentialsSet prototype) { return newBuilder().mergeFrom(prototype); } public Builder toBuilder() { return newBuilder(this); } - + + @java.lang.Override + protected Builder newBuilderForType( + com.google.protobuf.GeneratedMessage.BuilderParent parent) { + Builder builder = new Builder(parent); + return builder; + } + /** + * Protobuf type {@code xtreemfs.pbrpc.FileCredentialsSet} + */ public static final class Builder extends - com.google.protobuf.GeneratedMessage.Builder { - private org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentialsSet result; - + com.google.protobuf.GeneratedMessage.Builder + implements org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentialsSetOrBuilder { + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.internal_static_xtreemfs_pbrpc_FileCredentialsSet_descriptor; + } + + protected com.google.protobuf.GeneratedMessage.FieldAccessorTable + internalGetFieldAccessorTable() { + return org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.internal_static_xtreemfs_pbrpc_FileCredentialsSet_fieldAccessorTable + .ensureFieldAccessorsInitialized( + org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentialsSet.class, org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentialsSet.Builder.class); + } + // Construct using org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentialsSet.newBuilder() - private Builder() {} - - private static Builder create() { - Builder builder = new Builder(); - builder.result = new org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentialsSet(); - return builder; + private Builder() { + maybeForceBuilderInitialization(); } - - protected org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentialsSet internalGetResult() { - return result; + + private Builder( + com.google.protobuf.GeneratedMessage.BuilderParent parent) { + super(parent); + maybeForceBuilderInitialization(); + } + private void maybeForceBuilderInitialization() { + if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) { + getFileCredentialsFieldBuilder(); + } + } + private static Builder create() { + return new Builder(); } - + public Builder clear() { - if (result == null) { - throw new IllegalStateException( - "Cannot call clear() after build()."); + super.clear(); + if (fileCredentialsBuilder_ == null) { + fileCredentials_ = org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials.getDefaultInstance(); + } else { + fileCredentialsBuilder_.clear(); } - result = new org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentialsSet(); + bitField0_ = (bitField0_ & ~0x00000001); return this; } - + public Builder clone() { - return create().mergeFrom(result); + return create().mergeFrom(buildPartial()); } - + public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() { - return org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentialsSet.getDescriptor(); + return org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.internal_static_xtreemfs_pbrpc_FileCredentialsSet_descriptor; } - + public org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentialsSet getDefaultInstanceForType() { return org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentialsSet.getDefaultInstance(); } - - public boolean isInitialized() { - return result.isInitialized(); - } + public org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentialsSet build() { - if (result != null && !isInitialized()) { + org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentialsSet result = buildPartial(); + if (!result.isInitialized()) { throw newUninitializedMessageException(result); } - return buildPartial(); - } - - private org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentialsSet buildParsed() - throws com.google.protobuf.InvalidProtocolBufferException { - if (!isInitialized()) { - throw newUninitializedMessageException( - result).asInvalidProtocolBufferException(); - } - return buildPartial(); + return result; } - + public org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentialsSet buildPartial() { - if (result == null) { - throw new IllegalStateException( - "build() has already been called on this Builder."); + org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentialsSet result = new org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentialsSet(this); + int from_bitField0_ = bitField0_; + int to_bitField0_ = 0; + if (((from_bitField0_ & 0x00000001) == 0x00000001)) { + to_bitField0_ |= 0x00000001; } - org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentialsSet returnMe = result; - result = null; - return returnMe; + if (fileCredentialsBuilder_ == null) { + result.fileCredentials_ = fileCredentials_; + } else { + result.fileCredentials_ = fileCredentialsBuilder_.build(); + } + result.bitField0_ = to_bitField0_; + onBuilt(); + return result; } - + public Builder mergeFrom(com.google.protobuf.Message other) { if (other instanceof org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentialsSet) { return mergeFrom((org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentialsSet)other); @@ -3911,7 +8440,7 @@ public final class GlobalTypes { return this; } } - + public Builder mergeFrom(org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentialsSet other) { if (other == org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentialsSet.getDefaultInstance()) return this; if (other.hasFileCredentials()) { @@ -3920,328 +8449,585 @@ public final class GlobalTypes { this.mergeUnknownFields(other.getUnknownFields()); return this; } - + + public final boolean isInitialized() { + if (hasFileCredentials()) { + if (!getFileCredentials().isInitialized()) { + + return false; + } + } + return true; + } + public Builder mergeFrom( com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - com.google.protobuf.UnknownFieldSet.Builder unknownFields = - com.google.protobuf.UnknownFieldSet.newBuilder( - this.getUnknownFields()); - while (true) { - int tag = input.readTag(); - switch (tag) { - case 0: - this.setUnknownFields(unknownFields.build()); - return this; - default: { - if (!parseUnknownField(input, unknownFields, - extensionRegistry, tag)) { - this.setUnknownFields(unknownFields.build()); - return this; - } - break; - } - case 10: { - org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials.Builder subBuilder = org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials.newBuilder(); - if (hasFileCredentials()) { - subBuilder.mergeFrom(getFileCredentials()); - } - input.readMessage(subBuilder, extensionRegistry); - setFileCredentials(subBuilder.buildPartial()); - break; - } + org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentialsSet parsedMessage = null; + try { + parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + parsedMessage = (org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentialsSet) e.getUnfinishedMessage(); + throw e; + } finally { + if (parsedMessage != null) { + mergeFrom(parsedMessage); } } + return this; } - - + private int bitField0_; + // optional .xtreemfs.pbrpc.FileCredentials file_credentials = 1; + private org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials fileCredentials_ = org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials.getDefaultInstance(); + private com.google.protobuf.SingleFieldBuilder< + org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials, org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials.Builder, org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentialsOrBuilder> fileCredentialsBuilder_; + /** + * optional .xtreemfs.pbrpc.FileCredentials file_credentials = 1; + */ public boolean hasFileCredentials() { - return result.hasFileCredentials(); + return ((bitField0_ & 0x00000001) == 0x00000001); } + /** + * optional .xtreemfs.pbrpc.FileCredentials file_credentials = 1; + */ public org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials getFileCredentials() { - return result.getFileCredentials(); + if (fileCredentialsBuilder_ == null) { + return fileCredentials_; + } else { + return fileCredentialsBuilder_.getMessage(); + } } + /** + * optional .xtreemfs.pbrpc.FileCredentials file_credentials = 1; + */ public Builder setFileCredentials(org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials value) { - if (value == null) { - throw new NullPointerException(); + if (fileCredentialsBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + fileCredentials_ = value; + onChanged(); + } else { + fileCredentialsBuilder_.setMessage(value); } - result.hasFileCredentials = true; - result.fileCredentials_ = value; + bitField0_ |= 0x00000001; return this; } - public Builder setFileCredentials(org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials.Builder builderForValue) { - result.hasFileCredentials = true; - result.fileCredentials_ = builderForValue.build(); + /** + * optional .xtreemfs.pbrpc.FileCredentials file_credentials = 1; + */ + public Builder setFileCredentials( + org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials.Builder builderForValue) { + if (fileCredentialsBuilder_ == null) { + fileCredentials_ = builderForValue.build(); + onChanged(); + } else { + fileCredentialsBuilder_.setMessage(builderForValue.build()); + } + bitField0_ |= 0x00000001; return this; } + /** + * optional .xtreemfs.pbrpc.FileCredentials file_credentials = 1; + */ public Builder mergeFileCredentials(org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials value) { - if (result.hasFileCredentials() && - result.fileCredentials_ != org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials.getDefaultInstance()) { - result.fileCredentials_ = - org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials.newBuilder(result.fileCredentials_).mergeFrom(value).buildPartial(); + if (fileCredentialsBuilder_ == null) { + if (((bitField0_ & 0x00000001) == 0x00000001) && + fileCredentials_ != org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials.getDefaultInstance()) { + fileCredentials_ = + org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials.newBuilder(fileCredentials_).mergeFrom(value).buildPartial(); + } else { + fileCredentials_ = value; + } + onChanged(); } else { - result.fileCredentials_ = value; + fileCredentialsBuilder_.mergeFrom(value); } - result.hasFileCredentials = true; + bitField0_ |= 0x00000001; return this; } + /** + * optional .xtreemfs.pbrpc.FileCredentials file_credentials = 1; + */ public Builder clearFileCredentials() { - result.hasFileCredentials = false; - result.fileCredentials_ = org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials.getDefaultInstance(); + if (fileCredentialsBuilder_ == null) { + fileCredentials_ = org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials.getDefaultInstance(); + onChanged(); + } else { + fileCredentialsBuilder_.clear(); + } + bitField0_ = (bitField0_ & ~0x00000001); return this; } - + /** + * optional .xtreemfs.pbrpc.FileCredentials file_credentials = 1; + */ + public org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials.Builder getFileCredentialsBuilder() { + bitField0_ |= 0x00000001; + onChanged(); + return getFileCredentialsFieldBuilder().getBuilder(); + } + /** + * optional .xtreemfs.pbrpc.FileCredentials file_credentials = 1; + */ + public org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentialsOrBuilder getFileCredentialsOrBuilder() { + if (fileCredentialsBuilder_ != null) { + return fileCredentialsBuilder_.getMessageOrBuilder(); + } else { + return fileCredentials_; + } + } + /** + * optional .xtreemfs.pbrpc.FileCredentials file_credentials = 1; + */ + private com.google.protobuf.SingleFieldBuilder< + org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials, org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials.Builder, org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentialsOrBuilder> + getFileCredentialsFieldBuilder() { + if (fileCredentialsBuilder_ == null) { + fileCredentialsBuilder_ = new com.google.protobuf.SingleFieldBuilder< + org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials, org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials.Builder, org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentialsOrBuilder>( + fileCredentials_, + getParentForChildren(), + isClean()); + fileCredentials_ = null; + } + return fileCredentialsBuilder_; + } + // @@protoc_insertion_point(builder_scope:xtreemfs.pbrpc.FileCredentialsSet) } - + static { defaultInstance = new FileCredentialsSet(true); - org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.internalForceInit(); defaultInstance.initFields(); } - + // @@protoc_insertion_point(class_scope:xtreemfs.pbrpc.FileCredentialsSet) } - + + public interface VivaldiCoordinatesOrBuilder + extends com.google.protobuf.MessageOrBuilder { + + // required double x_coordinate = 1; + /** + * required double x_coordinate = 1; + */ + boolean hasXCoordinate(); + /** + * required double x_coordinate = 1; + */ + double getXCoordinate(); + + // required double y_coordinate = 2; + /** + * required double y_coordinate = 2; + */ + boolean hasYCoordinate(); + /** + * required double y_coordinate = 2; + */ + double getYCoordinate(); + + // required double local_error = 3; + /** + * required double local_error = 3; + */ + boolean hasLocalError(); + /** + * required double local_error = 3; + */ + double getLocalError(); + } + /** + * Protobuf type {@code xtreemfs.pbrpc.VivaldiCoordinates} + * + *
+   * Network coordinates to estimate the latency.
+   * 
+ */ public static final class VivaldiCoordinates extends - com.google.protobuf.GeneratedMessage { + com.google.protobuf.GeneratedMessage + implements VivaldiCoordinatesOrBuilder { // Use VivaldiCoordinates.newBuilder() to construct. - private VivaldiCoordinates() { - initFields(); + private VivaldiCoordinates(com.google.protobuf.GeneratedMessage.Builder builder) { + super(builder); + this.unknownFields = builder.getUnknownFields(); } - private VivaldiCoordinates(boolean noInit) {} - + private VivaldiCoordinates(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); } + private static final VivaldiCoordinates defaultInstance; public static VivaldiCoordinates getDefaultInstance() { return defaultInstance; } - + public VivaldiCoordinates getDefaultInstanceForType() { return defaultInstance; } - + + private final com.google.protobuf.UnknownFieldSet unknownFields; + @java.lang.Override + public final com.google.protobuf.UnknownFieldSet + getUnknownFields() { + return this.unknownFields; + } + private VivaldiCoordinates( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + initFields(); + int mutable_bitField0_ = 0; + com.google.protobuf.UnknownFieldSet.Builder unknownFields = + com.google.protobuf.UnknownFieldSet.newBuilder(); + try { + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch (tag) { + case 0: + done = true; + break; + default: { + if (!parseUnknownField(input, unknownFields, + extensionRegistry, tag)) { + done = true; + } + break; + } + case 9: { + bitField0_ |= 0x00000001; + xCoordinate_ = input.readDouble(); + break; + } + case 17: { + bitField0_ |= 0x00000002; + yCoordinate_ = input.readDouble(); + break; + } + case 25: { + bitField0_ |= 0x00000004; + localError_ = input.readDouble(); + break; + } + } + } + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(this); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException( + e.getMessage()).setUnfinishedMessage(this); + } finally { + this.unknownFields = unknownFields.build(); + makeExtensionsImmutable(); + } + } public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { return org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.internal_static_xtreemfs_pbrpc_VivaldiCoordinates_descriptor; } - + protected com.google.protobuf.GeneratedMessage.FieldAccessorTable internalGetFieldAccessorTable() { - return org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.internal_static_xtreemfs_pbrpc_VivaldiCoordinates_fieldAccessorTable; + return org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.internal_static_xtreemfs_pbrpc_VivaldiCoordinates_fieldAccessorTable + .ensureFieldAccessorsInitialized( + org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.VivaldiCoordinates.class, org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.VivaldiCoordinates.Builder.class); + } + + public static com.google.protobuf.Parser PARSER = + new com.google.protobuf.AbstractParser() { + public VivaldiCoordinates parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return new VivaldiCoordinates(input, extensionRegistry); + } + }; + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; } - + + private int bitField0_; // required double x_coordinate = 1; public static final int X_COORDINATE_FIELD_NUMBER = 1; - private boolean hasXCoordinate; - private double xCoordinate_ = 0D; - public boolean hasXCoordinate() { return hasXCoordinate; } - public double getXCoordinate() { return xCoordinate_; } - + private double xCoordinate_; + /** + * required double x_coordinate = 1; + */ + public boolean hasXCoordinate() { + return ((bitField0_ & 0x00000001) == 0x00000001); + } + /** + * required double x_coordinate = 1; + */ + public double getXCoordinate() { + return xCoordinate_; + } + // required double y_coordinate = 2; public static final int Y_COORDINATE_FIELD_NUMBER = 2; - private boolean hasYCoordinate; - private double yCoordinate_ = 0D; - public boolean hasYCoordinate() { return hasYCoordinate; } - public double getYCoordinate() { return yCoordinate_; } - + private double yCoordinate_; + /** + * required double y_coordinate = 2; + */ + public boolean hasYCoordinate() { + return ((bitField0_ & 0x00000002) == 0x00000002); + } + /** + * required double y_coordinate = 2; + */ + public double getYCoordinate() { + return yCoordinate_; + } + // required double local_error = 3; public static final int LOCAL_ERROR_FIELD_NUMBER = 3; - private boolean hasLocalError; - private double localError_ = 0D; - public boolean hasLocalError() { return hasLocalError; } - public double getLocalError() { return localError_; } - + private double localError_; + /** + * required double local_error = 3; + */ + public boolean hasLocalError() { + return ((bitField0_ & 0x00000004) == 0x00000004); + } + /** + * required double local_error = 3; + */ + public double getLocalError() { + return localError_; + } + private void initFields() { + xCoordinate_ = 0D; + yCoordinate_ = 0D; + localError_ = 0D; } + private byte memoizedIsInitialized = -1; public final boolean isInitialized() { - if (!hasXCoordinate) return false; - if (!hasYCoordinate) return false; - if (!hasLocalError) return false; + byte isInitialized = memoizedIsInitialized; + if (isInitialized != -1) return isInitialized == 1; + + if (!hasXCoordinate()) { + memoizedIsInitialized = 0; + return false; + } + if (!hasYCoordinate()) { + memoizedIsInitialized = 0; + return false; + } + if (!hasLocalError()) { + memoizedIsInitialized = 0; + return false; + } + memoizedIsInitialized = 1; return true; } - + public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException { getSerializedSize(); - if (hasXCoordinate()) { - output.writeDouble(1, getXCoordinate()); + if (((bitField0_ & 0x00000001) == 0x00000001)) { + output.writeDouble(1, xCoordinate_); } - if (hasYCoordinate()) { - output.writeDouble(2, getYCoordinate()); + if (((bitField0_ & 0x00000002) == 0x00000002)) { + output.writeDouble(2, yCoordinate_); } - if (hasLocalError()) { - output.writeDouble(3, getLocalError()); + if (((bitField0_ & 0x00000004) == 0x00000004)) { + output.writeDouble(3, localError_); } getUnknownFields().writeTo(output); } - + private int memoizedSerializedSize = -1; public int getSerializedSize() { int size = memoizedSerializedSize; if (size != -1) return size; - + size = 0; - if (hasXCoordinate()) { + if (((bitField0_ & 0x00000001) == 0x00000001)) { size += com.google.protobuf.CodedOutputStream - .computeDoubleSize(1, getXCoordinate()); + .computeDoubleSize(1, xCoordinate_); } - if (hasYCoordinate()) { + if (((bitField0_ & 0x00000002) == 0x00000002)) { size += com.google.protobuf.CodedOutputStream - .computeDoubleSize(2, getYCoordinate()); + .computeDoubleSize(2, yCoordinate_); } - if (hasLocalError()) { + if (((bitField0_ & 0x00000004) == 0x00000004)) { size += com.google.protobuf.CodedOutputStream - .computeDoubleSize(3, getLocalError()); + .computeDoubleSize(3, localError_); } size += getUnknownFields().getSerializedSize(); memoizedSerializedSize = size; return size; } - + + private static final long serialVersionUID = 0L; + @java.lang.Override + protected java.lang.Object writeReplace() + throws java.io.ObjectStreamException { + return super.writeReplace(); + } + public static org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.VivaldiCoordinates parseFrom( com.google.protobuf.ByteString data) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data).buildParsed(); + return PARSER.parseFrom(data); } public static org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.VivaldiCoordinates parseFrom( com.google.protobuf.ByteString data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(data, extensionRegistry); } public static org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.VivaldiCoordinates parseFrom(byte[] data) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data).buildParsed(); + return PARSER.parseFrom(data); } public static org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.VivaldiCoordinates parseFrom( byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(data, extensionRegistry); } public static org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.VivaldiCoordinates parseFrom(java.io.InputStream input) throws java.io.IOException { - return newBuilder().mergeFrom(input).buildParsed(); + return PARSER.parseFrom(input); } public static org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.VivaldiCoordinates parseFrom( java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - return newBuilder().mergeFrom(input, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(input, extensionRegistry); } public static org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.VivaldiCoordinates parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException { - Builder builder = newBuilder(); - if (builder.mergeDelimitedFrom(input)) { - return builder.buildParsed(); - } else { - return null; - } + return PARSER.parseDelimitedFrom(input); } public static org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.VivaldiCoordinates parseDelimitedFrom( java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - Builder builder = newBuilder(); - if (builder.mergeDelimitedFrom(input, extensionRegistry)) { - return builder.buildParsed(); - } else { - return null; - } + return PARSER.parseDelimitedFrom(input, extensionRegistry); } public static org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.VivaldiCoordinates parseFrom( com.google.protobuf.CodedInputStream input) throws java.io.IOException { - return newBuilder().mergeFrom(input).buildParsed(); + return PARSER.parseFrom(input); } public static org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.VivaldiCoordinates parseFrom( com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - return newBuilder().mergeFrom(input, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(input, extensionRegistry); } - + public static Builder newBuilder() { return Builder.create(); } public Builder newBuilderForType() { return newBuilder(); } public static Builder newBuilder(org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.VivaldiCoordinates prototype) { return newBuilder().mergeFrom(prototype); } public Builder toBuilder() { return newBuilder(this); } - + + @java.lang.Override + protected Builder newBuilderForType( + com.google.protobuf.GeneratedMessage.BuilderParent parent) { + Builder builder = new Builder(parent); + return builder; + } + /** + * Protobuf type {@code xtreemfs.pbrpc.VivaldiCoordinates} + * + *
+     * Network coordinates to estimate the latency.
+     * 
+ */ public static final class Builder extends - com.google.protobuf.GeneratedMessage.Builder { - private org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.VivaldiCoordinates result; - + com.google.protobuf.GeneratedMessage.Builder + implements org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.VivaldiCoordinatesOrBuilder { + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.internal_static_xtreemfs_pbrpc_VivaldiCoordinates_descriptor; + } + + protected com.google.protobuf.GeneratedMessage.FieldAccessorTable + internalGetFieldAccessorTable() { + return org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.internal_static_xtreemfs_pbrpc_VivaldiCoordinates_fieldAccessorTable + .ensureFieldAccessorsInitialized( + org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.VivaldiCoordinates.class, org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.VivaldiCoordinates.Builder.class); + } + // Construct using org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.VivaldiCoordinates.newBuilder() - private Builder() {} - - private static Builder create() { - Builder builder = new Builder(); - builder.result = new org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.VivaldiCoordinates(); - return builder; + private Builder() { + maybeForceBuilderInitialization(); } - - protected org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.VivaldiCoordinates internalGetResult() { - return result; + + private Builder( + com.google.protobuf.GeneratedMessage.BuilderParent parent) { + super(parent); + maybeForceBuilderInitialization(); } - - public Builder clear() { - if (result == null) { - throw new IllegalStateException( - "Cannot call clear() after build()."); + private void maybeForceBuilderInitialization() { + if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) { } - result = new org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.VivaldiCoordinates(); + } + private static Builder create() { + return new Builder(); + } + + public Builder clear() { + super.clear(); + xCoordinate_ = 0D; + bitField0_ = (bitField0_ & ~0x00000001); + yCoordinate_ = 0D; + bitField0_ = (bitField0_ & ~0x00000002); + localError_ = 0D; + bitField0_ = (bitField0_ & ~0x00000004); return this; } - + public Builder clone() { - return create().mergeFrom(result); + return create().mergeFrom(buildPartial()); } - + public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() { - return org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.VivaldiCoordinates.getDescriptor(); + return org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.internal_static_xtreemfs_pbrpc_VivaldiCoordinates_descriptor; } - + public org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.VivaldiCoordinates getDefaultInstanceForType() { return org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.VivaldiCoordinates.getDefaultInstance(); } - - public boolean isInitialized() { - return result.isInitialized(); - } + public org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.VivaldiCoordinates build() { - if (result != null && !isInitialized()) { + org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.VivaldiCoordinates result = buildPartial(); + if (!result.isInitialized()) { throw newUninitializedMessageException(result); } - return buildPartial(); - } - - private org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.VivaldiCoordinates buildParsed() - throws com.google.protobuf.InvalidProtocolBufferException { - if (!isInitialized()) { - throw newUninitializedMessageException( - result).asInvalidProtocolBufferException(); - } - return buildPartial(); + return result; } - + public org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.VivaldiCoordinates buildPartial() { - if (result == null) { - throw new IllegalStateException( - "build() has already been called on this Builder."); + org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.VivaldiCoordinates result = new org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.VivaldiCoordinates(this); + int from_bitField0_ = bitField0_; + int to_bitField0_ = 0; + if (((from_bitField0_ & 0x00000001) == 0x00000001)) { + to_bitField0_ |= 0x00000001; + } + result.xCoordinate_ = xCoordinate_; + if (((from_bitField0_ & 0x00000002) == 0x00000002)) { + to_bitField0_ |= 0x00000002; } - org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.VivaldiCoordinates returnMe = result; - result = null; - return returnMe; + result.yCoordinate_ = yCoordinate_; + if (((from_bitField0_ & 0x00000004) == 0x00000004)) { + to_bitField0_ |= 0x00000004; + } + result.localError_ = localError_; + result.bitField0_ = to_bitField0_; + onBuilt(); + return result; } - + public Builder mergeFrom(com.google.protobuf.Message other) { if (other instanceof org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.VivaldiCoordinates) { return mergeFrom((org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.VivaldiCoordinates)other); @@ -4250,7 +9036,7 @@ public final class GlobalTypes { return this; } } - + public Builder mergeFrom(org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.VivaldiCoordinates other) { if (other == org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.VivaldiCoordinates.getDefaultInstance()) return this; if (other.hasXCoordinate()) { @@ -4265,331 +9051,564 @@ public final class GlobalTypes { this.mergeUnknownFields(other.getUnknownFields()); return this; } - + + public final boolean isInitialized() { + if (!hasXCoordinate()) { + + return false; + } + if (!hasYCoordinate()) { + + return false; + } + if (!hasLocalError()) { + + return false; + } + return true; + } + public Builder mergeFrom( com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - com.google.protobuf.UnknownFieldSet.Builder unknownFields = - com.google.protobuf.UnknownFieldSet.newBuilder( - this.getUnknownFields()); - while (true) { - int tag = input.readTag(); - switch (tag) { - case 0: - this.setUnknownFields(unknownFields.build()); - return this; - default: { - if (!parseUnknownField(input, unknownFields, - extensionRegistry, tag)) { - this.setUnknownFields(unknownFields.build()); - return this; - } - break; - } - case 9: { - setXCoordinate(input.readDouble()); - break; - } - case 17: { - setYCoordinate(input.readDouble()); - break; - } - case 25: { - setLocalError(input.readDouble()); - break; - } + org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.VivaldiCoordinates parsedMessage = null; + try { + parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + parsedMessage = (org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.VivaldiCoordinates) e.getUnfinishedMessage(); + throw e; + } finally { + if (parsedMessage != null) { + mergeFrom(parsedMessage); } } + return this; } - - + private int bitField0_; + // required double x_coordinate = 1; + private double xCoordinate_ ; + /** + * required double x_coordinate = 1; + */ public boolean hasXCoordinate() { - return result.hasXCoordinate(); + return ((bitField0_ & 0x00000001) == 0x00000001); } + /** + * required double x_coordinate = 1; + */ public double getXCoordinate() { - return result.getXCoordinate(); + return xCoordinate_; } + /** + * required double x_coordinate = 1; + */ public Builder setXCoordinate(double value) { - result.hasXCoordinate = true; - result.xCoordinate_ = value; + bitField0_ |= 0x00000001; + xCoordinate_ = value; + onChanged(); return this; } + /** + * required double x_coordinate = 1; + */ public Builder clearXCoordinate() { - result.hasXCoordinate = false; - result.xCoordinate_ = 0D; + bitField0_ = (bitField0_ & ~0x00000001); + xCoordinate_ = 0D; + onChanged(); return this; } - + // required double y_coordinate = 2; + private double yCoordinate_ ; + /** + * required double y_coordinate = 2; + */ public boolean hasYCoordinate() { - return result.hasYCoordinate(); + return ((bitField0_ & 0x00000002) == 0x00000002); } + /** + * required double y_coordinate = 2; + */ public double getYCoordinate() { - return result.getYCoordinate(); + return yCoordinate_; } + /** + * required double y_coordinate = 2; + */ public Builder setYCoordinate(double value) { - result.hasYCoordinate = true; - result.yCoordinate_ = value; + bitField0_ |= 0x00000002; + yCoordinate_ = value; + onChanged(); return this; } + /** + * required double y_coordinate = 2; + */ public Builder clearYCoordinate() { - result.hasYCoordinate = false; - result.yCoordinate_ = 0D; + bitField0_ = (bitField0_ & ~0x00000002); + yCoordinate_ = 0D; + onChanged(); return this; } - + // required double local_error = 3; + private double localError_ ; + /** + * required double local_error = 3; + */ public boolean hasLocalError() { - return result.hasLocalError(); + return ((bitField0_ & 0x00000004) == 0x00000004); } + /** + * required double local_error = 3; + */ public double getLocalError() { - return result.getLocalError(); + return localError_; } + /** + * required double local_error = 3; + */ public Builder setLocalError(double value) { - result.hasLocalError = true; - result.localError_ = value; + bitField0_ |= 0x00000004; + localError_ = value; + onChanged(); return this; } + /** + * required double local_error = 3; + */ public Builder clearLocalError() { - result.hasLocalError = false; - result.localError_ = 0D; + bitField0_ = (bitField0_ & ~0x00000004); + localError_ = 0D; + onChanged(); return this; } - + // @@protoc_insertion_point(builder_scope:xtreemfs.pbrpc.VivaldiCoordinates) } - + static { defaultInstance = new VivaldiCoordinates(true); - org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.internalForceInit(); defaultInstance.initFields(); } - + // @@protoc_insertion_point(class_scope:xtreemfs.pbrpc.VivaldiCoordinates) } - + + public interface OSDWriteResponseOrBuilder + extends com.google.protobuf.MessageOrBuilder { + + // optional fixed64 size_in_bytes = 1; + /** + * optional fixed64 size_in_bytes = 1; + * + *
+     * Current file size in bytes.
+     * 
+ */ + boolean hasSizeInBytes(); + /** + * optional fixed64 size_in_bytes = 1; + * + *
+     * Current file size in bytes.
+     * 
+ */ + long getSizeInBytes(); + + // optional fixed32 truncate_epoch = 2; + /** + * optional fixed32 truncate_epoch = 2; + * + *
+     * Truncate epoch.
+     * 
+ */ + boolean hasTruncateEpoch(); + /** + * optional fixed32 truncate_epoch = 2; + * + *
+     * Truncate epoch.
+     * 
+ */ + int getTruncateEpoch(); + } + /** + * Protobuf type {@code xtreemfs.pbrpc.OSDWriteResponse} + * + *
+   * Response returned by OSD write and truncate operations.
+   * This information is stored by the client and must be
+   * realyed to the MRC in regular intervals or when the file
+   * is fsynced or closed.
+   * In addition, the client must use this information locally
+   * for open files to provide processes with an accurate
+   * file size.
+   * Clients only need to store and relay the most recent OSDWriteResponse.
+   * These are sorted first by truncate_epoch and then by size_in_bytes, both ascending.
+   * 
+ */ public static final class OSDWriteResponse extends - com.google.protobuf.GeneratedMessage { + com.google.protobuf.GeneratedMessage + implements OSDWriteResponseOrBuilder { // Use OSDWriteResponse.newBuilder() to construct. - private OSDWriteResponse() { - initFields(); + private OSDWriteResponse(com.google.protobuf.GeneratedMessage.Builder builder) { + super(builder); + this.unknownFields = builder.getUnknownFields(); } - private OSDWriteResponse(boolean noInit) {} - + private OSDWriteResponse(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); } + private static final OSDWriteResponse defaultInstance; public static OSDWriteResponse getDefaultInstance() { return defaultInstance; } - + public OSDWriteResponse getDefaultInstanceForType() { return defaultInstance; } - + + private final com.google.protobuf.UnknownFieldSet unknownFields; + @java.lang.Override + public final com.google.protobuf.UnknownFieldSet + getUnknownFields() { + return this.unknownFields; + } + private OSDWriteResponse( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + initFields(); + int mutable_bitField0_ = 0; + com.google.protobuf.UnknownFieldSet.Builder unknownFields = + com.google.protobuf.UnknownFieldSet.newBuilder(); + try { + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch (tag) { + case 0: + done = true; + break; + default: { + if (!parseUnknownField(input, unknownFields, + extensionRegistry, tag)) { + done = true; + } + break; + } + case 9: { + bitField0_ |= 0x00000001; + sizeInBytes_ = input.readFixed64(); + break; + } + case 21: { + bitField0_ |= 0x00000002; + truncateEpoch_ = input.readFixed32(); + break; + } + } + } + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(this); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException( + e.getMessage()).setUnfinishedMessage(this); + } finally { + this.unknownFields = unknownFields.build(); + makeExtensionsImmutable(); + } + } public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { return org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.internal_static_xtreemfs_pbrpc_OSDWriteResponse_descriptor; } - + protected com.google.protobuf.GeneratedMessage.FieldAccessorTable internalGetFieldAccessorTable() { - return org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.internal_static_xtreemfs_pbrpc_OSDWriteResponse_fieldAccessorTable; + return org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.internal_static_xtreemfs_pbrpc_OSDWriteResponse_fieldAccessorTable + .ensureFieldAccessorsInitialized( + org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.OSDWriteResponse.class, org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.OSDWriteResponse.Builder.class); + } + + public static com.google.protobuf.Parser PARSER = + new com.google.protobuf.AbstractParser() { + public OSDWriteResponse parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return new OSDWriteResponse(input, extensionRegistry); + } + }; + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; } - + + private int bitField0_; // optional fixed64 size_in_bytes = 1; public static final int SIZE_IN_BYTES_FIELD_NUMBER = 1; - private boolean hasSizeInBytes; - private long sizeInBytes_ = 0L; - public boolean hasSizeInBytes() { return hasSizeInBytes; } - public long getSizeInBytes() { return sizeInBytes_; } - + private long sizeInBytes_; + /** + * optional fixed64 size_in_bytes = 1; + * + *
+     * Current file size in bytes.
+     * 
+ */ + public boolean hasSizeInBytes() { + return ((bitField0_ & 0x00000001) == 0x00000001); + } + /** + * optional fixed64 size_in_bytes = 1; + * + *
+     * Current file size in bytes.
+     * 
+ */ + public long getSizeInBytes() { + return sizeInBytes_; + } + // optional fixed32 truncate_epoch = 2; public static final int TRUNCATE_EPOCH_FIELD_NUMBER = 2; - private boolean hasTruncateEpoch; - private int truncateEpoch_ = 0; - public boolean hasTruncateEpoch() { return hasTruncateEpoch; } - public int getTruncateEpoch() { return truncateEpoch_; } - + private int truncateEpoch_; + /** + * optional fixed32 truncate_epoch = 2; + * + *
+     * Truncate epoch.
+     * 
+ */ + public boolean hasTruncateEpoch() { + return ((bitField0_ & 0x00000002) == 0x00000002); + } + /** + * optional fixed32 truncate_epoch = 2; + * + *
+     * Truncate epoch.
+     * 
+ */ + public int getTruncateEpoch() { + return truncateEpoch_; + } + private void initFields() { + sizeInBytes_ = 0L; + truncateEpoch_ = 0; } + private byte memoizedIsInitialized = -1; public final boolean isInitialized() { + byte isInitialized = memoizedIsInitialized; + if (isInitialized != -1) return isInitialized == 1; + + memoizedIsInitialized = 1; return true; } - + public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException { getSerializedSize(); - if (hasSizeInBytes()) { - output.writeFixed64(1, getSizeInBytes()); + if (((bitField0_ & 0x00000001) == 0x00000001)) { + output.writeFixed64(1, sizeInBytes_); } - if (hasTruncateEpoch()) { - output.writeFixed32(2, getTruncateEpoch()); + if (((bitField0_ & 0x00000002) == 0x00000002)) { + output.writeFixed32(2, truncateEpoch_); } getUnknownFields().writeTo(output); } - + private int memoizedSerializedSize = -1; public int getSerializedSize() { int size = memoizedSerializedSize; if (size != -1) return size; - + size = 0; - if (hasSizeInBytes()) { + if (((bitField0_ & 0x00000001) == 0x00000001)) { size += com.google.protobuf.CodedOutputStream - .computeFixed64Size(1, getSizeInBytes()); + .computeFixed64Size(1, sizeInBytes_); } - if (hasTruncateEpoch()) { + if (((bitField0_ & 0x00000002) == 0x00000002)) { size += com.google.protobuf.CodedOutputStream - .computeFixed32Size(2, getTruncateEpoch()); + .computeFixed32Size(2, truncateEpoch_); } size += getUnknownFields().getSerializedSize(); memoizedSerializedSize = size; return size; } - + + private static final long serialVersionUID = 0L; + @java.lang.Override + protected java.lang.Object writeReplace() + throws java.io.ObjectStreamException { + return super.writeReplace(); + } + public static org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.OSDWriteResponse parseFrom( com.google.protobuf.ByteString data) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data).buildParsed(); + return PARSER.parseFrom(data); } public static org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.OSDWriteResponse parseFrom( com.google.protobuf.ByteString data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(data, extensionRegistry); } public static org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.OSDWriteResponse parseFrom(byte[] data) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data).buildParsed(); + return PARSER.parseFrom(data); } public static org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.OSDWriteResponse parseFrom( byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(data, extensionRegistry); } public static org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.OSDWriteResponse parseFrom(java.io.InputStream input) throws java.io.IOException { - return newBuilder().mergeFrom(input).buildParsed(); + return PARSER.parseFrom(input); } public static org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.OSDWriteResponse parseFrom( java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - return newBuilder().mergeFrom(input, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(input, extensionRegistry); } public static org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.OSDWriteResponse parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException { - Builder builder = newBuilder(); - if (builder.mergeDelimitedFrom(input)) { - return builder.buildParsed(); - } else { - return null; - } + return PARSER.parseDelimitedFrom(input); } public static org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.OSDWriteResponse parseDelimitedFrom( java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - Builder builder = newBuilder(); - if (builder.mergeDelimitedFrom(input, extensionRegistry)) { - return builder.buildParsed(); - } else { - return null; - } + return PARSER.parseDelimitedFrom(input, extensionRegistry); } public static org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.OSDWriteResponse parseFrom( com.google.protobuf.CodedInputStream input) throws java.io.IOException { - return newBuilder().mergeFrom(input).buildParsed(); + return PARSER.parseFrom(input); } public static org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.OSDWriteResponse parseFrom( com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - return newBuilder().mergeFrom(input, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(input, extensionRegistry); } - + public static Builder newBuilder() { return Builder.create(); } public Builder newBuilderForType() { return newBuilder(); } public static Builder newBuilder(org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.OSDWriteResponse prototype) { return newBuilder().mergeFrom(prototype); } public Builder toBuilder() { return newBuilder(this); } - + + @java.lang.Override + protected Builder newBuilderForType( + com.google.protobuf.GeneratedMessage.BuilderParent parent) { + Builder builder = new Builder(parent); + return builder; + } + /** + * Protobuf type {@code xtreemfs.pbrpc.OSDWriteResponse} + * + *
+     * Response returned by OSD write and truncate operations.
+     * This information is stored by the client and must be
+     * realyed to the MRC in regular intervals or when the file
+     * is fsynced or closed.
+     * In addition, the client must use this information locally
+     * for open files to provide processes with an accurate
+     * file size.
+     * Clients only need to store and relay the most recent OSDWriteResponse.
+     * These are sorted first by truncate_epoch and then by size_in_bytes, both ascending.
+     * 
+ */ public static final class Builder extends - com.google.protobuf.GeneratedMessage.Builder { - private org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.OSDWriteResponse result; - + com.google.protobuf.GeneratedMessage.Builder + implements org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.OSDWriteResponseOrBuilder { + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.internal_static_xtreemfs_pbrpc_OSDWriteResponse_descriptor; + } + + protected com.google.protobuf.GeneratedMessage.FieldAccessorTable + internalGetFieldAccessorTable() { + return org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.internal_static_xtreemfs_pbrpc_OSDWriteResponse_fieldAccessorTable + .ensureFieldAccessorsInitialized( + org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.OSDWriteResponse.class, org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.OSDWriteResponse.Builder.class); + } + // Construct using org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.OSDWriteResponse.newBuilder() - private Builder() {} - - private static Builder create() { - Builder builder = new Builder(); - builder.result = new org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.OSDWriteResponse(); - return builder; + private Builder() { + maybeForceBuilderInitialization(); } - - protected org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.OSDWriteResponse internalGetResult() { - return result; + + private Builder( + com.google.protobuf.GeneratedMessage.BuilderParent parent) { + super(parent); + maybeForceBuilderInitialization(); } - - public Builder clear() { - if (result == null) { - throw new IllegalStateException( - "Cannot call clear() after build()."); + private void maybeForceBuilderInitialization() { + if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) { } - result = new org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.OSDWriteResponse(); + } + private static Builder create() { + return new Builder(); + } + + public Builder clear() { + super.clear(); + sizeInBytes_ = 0L; + bitField0_ = (bitField0_ & ~0x00000001); + truncateEpoch_ = 0; + bitField0_ = (bitField0_ & ~0x00000002); return this; } - + public Builder clone() { - return create().mergeFrom(result); + return create().mergeFrom(buildPartial()); } - + public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() { - return org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.OSDWriteResponse.getDescriptor(); + return org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.internal_static_xtreemfs_pbrpc_OSDWriteResponse_descriptor; } - + public org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.OSDWriteResponse getDefaultInstanceForType() { return org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.OSDWriteResponse.getDefaultInstance(); } - - public boolean isInitialized() { - return result.isInitialized(); - } + public org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.OSDWriteResponse build() { - if (result != null && !isInitialized()) { + org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.OSDWriteResponse result = buildPartial(); + if (!result.isInitialized()) { throw newUninitializedMessageException(result); } - return buildPartial(); - } - - private org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.OSDWriteResponse buildParsed() - throws com.google.protobuf.InvalidProtocolBufferException { - if (!isInitialized()) { - throw newUninitializedMessageException( - result).asInvalidProtocolBufferException(); - } - return buildPartial(); + return result; } - + public org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.OSDWriteResponse buildPartial() { - if (result == null) { - throw new IllegalStateException( - "build() has already been called on this Builder."); + org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.OSDWriteResponse result = new org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.OSDWriteResponse(this); + int from_bitField0_ = bitField0_; + int to_bitField0_ = 0; + if (((from_bitField0_ & 0x00000001) == 0x00000001)) { + to_bitField0_ |= 0x00000001; } - org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.OSDWriteResponse returnMe = result; - result = null; - return returnMe; + result.sizeInBytes_ = sizeInBytes_; + if (((from_bitField0_ & 0x00000002) == 0x00000002)) { + to_bitField0_ |= 0x00000002; + } + result.truncateEpoch_ = truncateEpoch_; + result.bitField0_ = to_bitField0_; + onBuilt(); + return result; } - + public Builder mergeFrom(com.google.protobuf.Message other) { if (other instanceof org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.OSDWriteResponse) { return mergeFrom((org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.OSDWriteResponse)other); @@ -4598,7 +9617,7 @@ public final class GlobalTypes { return this; } } - + public Builder mergeFrom(org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.OSDWriteResponse other) { if (other == org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.OSDWriteResponse.getDefaultInstance()) return this; if (other.hasSizeInBytes()) { @@ -4610,311 +9629,575 @@ public final class GlobalTypes { this.mergeUnknownFields(other.getUnknownFields()); return this; } - + + public final boolean isInitialized() { + return true; + } + public Builder mergeFrom( com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - com.google.protobuf.UnknownFieldSet.Builder unknownFields = - com.google.protobuf.UnknownFieldSet.newBuilder( - this.getUnknownFields()); - while (true) { - int tag = input.readTag(); - switch (tag) { - case 0: - this.setUnknownFields(unknownFields.build()); - return this; - default: { - if (!parseUnknownField(input, unknownFields, - extensionRegistry, tag)) { - this.setUnknownFields(unknownFields.build()); - return this; - } - break; - } - case 9: { - setSizeInBytes(input.readFixed64()); - break; - } - case 21: { - setTruncateEpoch(input.readFixed32()); - break; - } + org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.OSDWriteResponse parsedMessage = null; + try { + parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + parsedMessage = (org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.OSDWriteResponse) e.getUnfinishedMessage(); + throw e; + } finally { + if (parsedMessage != null) { + mergeFrom(parsedMessage); } } + return this; } - - + private int bitField0_; + // optional fixed64 size_in_bytes = 1; + private long sizeInBytes_ ; + /** + * optional fixed64 size_in_bytes = 1; + * + *
+       * Current file size in bytes.
+       * 
+ */ public boolean hasSizeInBytes() { - return result.hasSizeInBytes(); - } + return ((bitField0_ & 0x00000001) == 0x00000001); + } + /** + * optional fixed64 size_in_bytes = 1; + * + *
+       * Current file size in bytes.
+       * 
+ */ public long getSizeInBytes() { - return result.getSizeInBytes(); - } + return sizeInBytes_; + } + /** + * optional fixed64 size_in_bytes = 1; + * + *
+       * Current file size in bytes.
+       * 
+ */ public Builder setSizeInBytes(long value) { - result.hasSizeInBytes = true; - result.sizeInBytes_ = value; + bitField0_ |= 0x00000001; + sizeInBytes_ = value; + onChanged(); return this; } + /** + * optional fixed64 size_in_bytes = 1; + * + *
+       * Current file size in bytes.
+       * 
+ */ public Builder clearSizeInBytes() { - result.hasSizeInBytes = false; - result.sizeInBytes_ = 0L; + bitField0_ = (bitField0_ & ~0x00000001); + sizeInBytes_ = 0L; + onChanged(); return this; } - + // optional fixed32 truncate_epoch = 2; + private int truncateEpoch_ ; + /** + * optional fixed32 truncate_epoch = 2; + * + *
+       * Truncate epoch.
+       * 
+ */ public boolean hasTruncateEpoch() { - return result.hasTruncateEpoch(); - } + return ((bitField0_ & 0x00000002) == 0x00000002); + } + /** + * optional fixed32 truncate_epoch = 2; + * + *
+       * Truncate epoch.
+       * 
+ */ public int getTruncateEpoch() { - return result.getTruncateEpoch(); - } + return truncateEpoch_; + } + /** + * optional fixed32 truncate_epoch = 2; + * + *
+       * Truncate epoch.
+       * 
+ */ public Builder setTruncateEpoch(int value) { - result.hasTruncateEpoch = true; - result.truncateEpoch_ = value; + bitField0_ |= 0x00000002; + truncateEpoch_ = value; + onChanged(); return this; } + /** + * optional fixed32 truncate_epoch = 2; + * + *
+       * Truncate epoch.
+       * 
+ */ public Builder clearTruncateEpoch() { - result.hasTruncateEpoch = false; - result.truncateEpoch_ = 0; + bitField0_ = (bitField0_ & ~0x00000002); + truncateEpoch_ = 0; + onChanged(); return this; } - + // @@protoc_insertion_point(builder_scope:xtreemfs.pbrpc.OSDWriteResponse) } - + static { defaultInstance = new OSDWriteResponse(true); - org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.internalForceInit(); defaultInstance.initFields(); } - + // @@protoc_insertion_point(class_scope:xtreemfs.pbrpc.OSDWriteResponse) } - + + public interface KeyValuePairOrBuilder + extends com.google.protobuf.MessageOrBuilder { + + // required string key = 1; + /** + * required string key = 1; + */ + boolean hasKey(); + /** + * required string key = 1; + */ + java.lang.String getKey(); + /** + * required string key = 1; + */ + com.google.protobuf.ByteString + getKeyBytes(); + + // required string value = 2; + /** + * required string value = 2; + */ + boolean hasValue(); + /** + * required string value = 2; + */ + java.lang.String getValue(); + /** + * required string value = 2; + */ + com.google.protobuf.ByteString + getValueBytes(); + } + /** + * Protobuf type {@code xtreemfs.pbrpc.KeyValuePair} + * + *
+   * Simple key/value pair. Protobuf doesn't provide a map type.
+   * 
+ */ public static final class KeyValuePair extends - com.google.protobuf.GeneratedMessage { + com.google.protobuf.GeneratedMessage + implements KeyValuePairOrBuilder { // Use KeyValuePair.newBuilder() to construct. - private KeyValuePair() { - initFields(); + private KeyValuePair(com.google.protobuf.GeneratedMessage.Builder builder) { + super(builder); + this.unknownFields = builder.getUnknownFields(); } - private KeyValuePair(boolean noInit) {} - + private KeyValuePair(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); } + private static final KeyValuePair defaultInstance; public static KeyValuePair getDefaultInstance() { return defaultInstance; } - + public KeyValuePair getDefaultInstanceForType() { return defaultInstance; } - + + private final com.google.protobuf.UnknownFieldSet unknownFields; + @java.lang.Override + public final com.google.protobuf.UnknownFieldSet + getUnknownFields() { + return this.unknownFields; + } + private KeyValuePair( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + initFields(); + int mutable_bitField0_ = 0; + com.google.protobuf.UnknownFieldSet.Builder unknownFields = + com.google.protobuf.UnknownFieldSet.newBuilder(); + try { + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch (tag) { + case 0: + done = true; + break; + default: { + if (!parseUnknownField(input, unknownFields, + extensionRegistry, tag)) { + done = true; + } + break; + } + case 10: { + bitField0_ |= 0x00000001; + key_ = input.readBytes(); + break; + } + case 18: { + bitField0_ |= 0x00000002; + value_ = input.readBytes(); + break; + } + } + } + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(this); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException( + e.getMessage()).setUnfinishedMessage(this); + } finally { + this.unknownFields = unknownFields.build(); + makeExtensionsImmutable(); + } + } public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { return org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.internal_static_xtreemfs_pbrpc_KeyValuePair_descriptor; } - + protected com.google.protobuf.GeneratedMessage.FieldAccessorTable internalGetFieldAccessorTable() { - return org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.internal_static_xtreemfs_pbrpc_KeyValuePair_fieldAccessorTable; + return org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.internal_static_xtreemfs_pbrpc_KeyValuePair_fieldAccessorTable + .ensureFieldAccessorsInitialized( + org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.KeyValuePair.class, org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.KeyValuePair.Builder.class); } - + + public static com.google.protobuf.Parser PARSER = + new com.google.protobuf.AbstractParser() { + public KeyValuePair parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return new KeyValuePair(input, extensionRegistry); + } + }; + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; + } + + private int bitField0_; // required string key = 1; public static final int KEY_FIELD_NUMBER = 1; - private boolean hasKey; - private java.lang.String key_ = ""; - public boolean hasKey() { return hasKey; } - public java.lang.String getKey() { return key_; } - + private java.lang.Object key_; + /** + * required string key = 1; + */ + public boolean hasKey() { + return ((bitField0_ & 0x00000001) == 0x00000001); + } + /** + * required string key = 1; + */ + public java.lang.String getKey() { + java.lang.Object ref = key_; + if (ref instanceof java.lang.String) { + return (java.lang.String) ref; + } else { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + if (bs.isValidUtf8()) { + key_ = s; + } + return s; + } + } + /** + * required string key = 1; + */ + public com.google.protobuf.ByteString + getKeyBytes() { + java.lang.Object ref = key_; + if (ref instanceof java.lang.String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + key_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + // required string value = 2; public static final int VALUE_FIELD_NUMBER = 2; - private boolean hasValue; - private java.lang.String value_ = ""; - public boolean hasValue() { return hasValue; } - public java.lang.String getValue() { return value_; } - + private java.lang.Object value_; + /** + * required string value = 2; + */ + public boolean hasValue() { + return ((bitField0_ & 0x00000002) == 0x00000002); + } + /** + * required string value = 2; + */ + public java.lang.String getValue() { + java.lang.Object ref = value_; + if (ref instanceof java.lang.String) { + return (java.lang.String) ref; + } else { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + if (bs.isValidUtf8()) { + value_ = s; + } + return s; + } + } + /** + * required string value = 2; + */ + public com.google.protobuf.ByteString + getValueBytes() { + java.lang.Object ref = value_; + if (ref instanceof java.lang.String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + value_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + private void initFields() { + key_ = ""; + value_ = ""; } + private byte memoizedIsInitialized = -1; public final boolean isInitialized() { - if (!hasKey) return false; - if (!hasValue) return false; + byte isInitialized = memoizedIsInitialized; + if (isInitialized != -1) return isInitialized == 1; + + if (!hasKey()) { + memoizedIsInitialized = 0; + return false; + } + if (!hasValue()) { + memoizedIsInitialized = 0; + return false; + } + memoizedIsInitialized = 1; return true; } - + public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException { getSerializedSize(); - if (hasKey()) { - output.writeString(1, getKey()); + if (((bitField0_ & 0x00000001) == 0x00000001)) { + output.writeBytes(1, getKeyBytes()); } - if (hasValue()) { - output.writeString(2, getValue()); + if (((bitField0_ & 0x00000002) == 0x00000002)) { + output.writeBytes(2, getValueBytes()); } getUnknownFields().writeTo(output); } - + private int memoizedSerializedSize = -1; public int getSerializedSize() { int size = memoizedSerializedSize; if (size != -1) return size; - + size = 0; - if (hasKey()) { + if (((bitField0_ & 0x00000001) == 0x00000001)) { size += com.google.protobuf.CodedOutputStream - .computeStringSize(1, getKey()); + .computeBytesSize(1, getKeyBytes()); } - if (hasValue()) { + if (((bitField0_ & 0x00000002) == 0x00000002)) { size += com.google.protobuf.CodedOutputStream - .computeStringSize(2, getValue()); + .computeBytesSize(2, getValueBytes()); } size += getUnknownFields().getSerializedSize(); memoizedSerializedSize = size; return size; } - + + private static final long serialVersionUID = 0L; + @java.lang.Override + protected java.lang.Object writeReplace() + throws java.io.ObjectStreamException { + return super.writeReplace(); + } + public static org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.KeyValuePair parseFrom( com.google.protobuf.ByteString data) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data).buildParsed(); + return PARSER.parseFrom(data); } public static org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.KeyValuePair parseFrom( com.google.protobuf.ByteString data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(data, extensionRegistry); } public static org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.KeyValuePair parseFrom(byte[] data) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data).buildParsed(); + return PARSER.parseFrom(data); } public static org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.KeyValuePair parseFrom( byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(data, extensionRegistry); } public static org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.KeyValuePair parseFrom(java.io.InputStream input) throws java.io.IOException { - return newBuilder().mergeFrom(input).buildParsed(); + return PARSER.parseFrom(input); } public static org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.KeyValuePair parseFrom( java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - return newBuilder().mergeFrom(input, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(input, extensionRegistry); } public static org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.KeyValuePair parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException { - Builder builder = newBuilder(); - if (builder.mergeDelimitedFrom(input)) { - return builder.buildParsed(); - } else { - return null; - } + return PARSER.parseDelimitedFrom(input); } public static org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.KeyValuePair parseDelimitedFrom( java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - Builder builder = newBuilder(); - if (builder.mergeDelimitedFrom(input, extensionRegistry)) { - return builder.buildParsed(); - } else { - return null; - } + return PARSER.parseDelimitedFrom(input, extensionRegistry); } public static org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.KeyValuePair parseFrom( com.google.protobuf.CodedInputStream input) throws java.io.IOException { - return newBuilder().mergeFrom(input).buildParsed(); + return PARSER.parseFrom(input); } public static org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.KeyValuePair parseFrom( com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - return newBuilder().mergeFrom(input, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(input, extensionRegistry); } - + public static Builder newBuilder() { return Builder.create(); } public Builder newBuilderForType() { return newBuilder(); } public static Builder newBuilder(org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.KeyValuePair prototype) { return newBuilder().mergeFrom(prototype); } public Builder toBuilder() { return newBuilder(this); } - + + @java.lang.Override + protected Builder newBuilderForType( + com.google.protobuf.GeneratedMessage.BuilderParent parent) { + Builder builder = new Builder(parent); + return builder; + } + /** + * Protobuf type {@code xtreemfs.pbrpc.KeyValuePair} + * + *
+     * Simple key/value pair. Protobuf doesn't provide a map type.
+     * 
+ */ public static final class Builder extends - com.google.protobuf.GeneratedMessage.Builder { - private org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.KeyValuePair result; - + com.google.protobuf.GeneratedMessage.Builder + implements org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.KeyValuePairOrBuilder { + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.internal_static_xtreemfs_pbrpc_KeyValuePair_descriptor; + } + + protected com.google.protobuf.GeneratedMessage.FieldAccessorTable + internalGetFieldAccessorTable() { + return org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.internal_static_xtreemfs_pbrpc_KeyValuePair_fieldAccessorTable + .ensureFieldAccessorsInitialized( + org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.KeyValuePair.class, org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.KeyValuePair.Builder.class); + } + // Construct using org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.KeyValuePair.newBuilder() - private Builder() {} - - private static Builder create() { - Builder builder = new Builder(); - builder.result = new org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.KeyValuePair(); - return builder; + private Builder() { + maybeForceBuilderInitialization(); } - - protected org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.KeyValuePair internalGetResult() { - return result; + + private Builder( + com.google.protobuf.GeneratedMessage.BuilderParent parent) { + super(parent); + maybeForceBuilderInitialization(); } - - public Builder clear() { - if (result == null) { - throw new IllegalStateException( - "Cannot call clear() after build()."); + private void maybeForceBuilderInitialization() { + if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) { } - result = new org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.KeyValuePair(); + } + private static Builder create() { + return new Builder(); + } + + public Builder clear() { + super.clear(); + key_ = ""; + bitField0_ = (bitField0_ & ~0x00000001); + value_ = ""; + bitField0_ = (bitField0_ & ~0x00000002); return this; } - + public Builder clone() { - return create().mergeFrom(result); + return create().mergeFrom(buildPartial()); } - + public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() { - return org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.KeyValuePair.getDescriptor(); + return org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.internal_static_xtreemfs_pbrpc_KeyValuePair_descriptor; } - + public org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.KeyValuePair getDefaultInstanceForType() { return org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.KeyValuePair.getDefaultInstance(); } - - public boolean isInitialized() { - return result.isInitialized(); - } + public org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.KeyValuePair build() { - if (result != null && !isInitialized()) { + org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.KeyValuePair result = buildPartial(); + if (!result.isInitialized()) { throw newUninitializedMessageException(result); } - return buildPartial(); - } - - private org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.KeyValuePair buildParsed() - throws com.google.protobuf.InvalidProtocolBufferException { - if (!isInitialized()) { - throw newUninitializedMessageException( - result).asInvalidProtocolBufferException(); - } - return buildPartial(); + return result; } - + public org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.KeyValuePair buildPartial() { - if (result == null) { - throw new IllegalStateException( - "build() has already been called on this Builder."); + org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.KeyValuePair result = new org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.KeyValuePair(this); + int from_bitField0_ = bitField0_; + int to_bitField0_ = 0; + if (((from_bitField0_ & 0x00000001) == 0x00000001)) { + to_bitField0_ |= 0x00000001; + } + result.key_ = key_; + if (((from_bitField0_ & 0x00000002) == 0x00000002)) { + to_bitField0_ |= 0x00000002; } - org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.KeyValuePair returnMe = result; - result = null; - return returnMe; + result.value_ = value_; + result.bitField0_ = to_bitField0_; + onBuilt(); + return result; } - + public Builder mergeFrom(com.google.protobuf.Message other) { if (other instanceof org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.KeyValuePair) { return mergeFrom((org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.KeyValuePair)other); @@ -4923,107 +10206,213 @@ public final class GlobalTypes { return this; } } - + public Builder mergeFrom(org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.KeyValuePair other) { if (other == org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.KeyValuePair.getDefaultInstance()) return this; if (other.hasKey()) { - setKey(other.getKey()); + bitField0_ |= 0x00000001; + key_ = other.key_; + onChanged(); } if (other.hasValue()) { - setValue(other.getValue()); + bitField0_ |= 0x00000002; + value_ = other.value_; + onChanged(); } this.mergeUnknownFields(other.getUnknownFields()); return this; } - + + public final boolean isInitialized() { + if (!hasKey()) { + + return false; + } + if (!hasValue()) { + + return false; + } + return true; + } + public Builder mergeFrom( com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - com.google.protobuf.UnknownFieldSet.Builder unknownFields = - com.google.protobuf.UnknownFieldSet.newBuilder( - this.getUnknownFields()); - while (true) { - int tag = input.readTag(); - switch (tag) { - case 0: - this.setUnknownFields(unknownFields.build()); - return this; - default: { - if (!parseUnknownField(input, unknownFields, - extensionRegistry, tag)) { - this.setUnknownFields(unknownFields.build()); - return this; - } - break; - } - case 10: { - setKey(input.readString()); - break; - } - case 18: { - setValue(input.readString()); - break; - } + org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.KeyValuePair parsedMessage = null; + try { + parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + parsedMessage = (org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.KeyValuePair) e.getUnfinishedMessage(); + throw e; + } finally { + if (parsedMessage != null) { + mergeFrom(parsedMessage); } } + return this; } - - + private int bitField0_; + // required string key = 1; + private java.lang.Object key_ = ""; + /** + * required string key = 1; + */ public boolean hasKey() { - return result.hasKey(); + return ((bitField0_ & 0x00000001) == 0x00000001); } + /** + * required string key = 1; + */ public java.lang.String getKey() { - return result.getKey(); + java.lang.Object ref = key_; + if (!(ref instanceof java.lang.String)) { + java.lang.String s = ((com.google.protobuf.ByteString) ref) + .toStringUtf8(); + key_ = s; + return s; + } else { + return (java.lang.String) ref; + } + } + /** + * required string key = 1; + */ + public com.google.protobuf.ByteString + getKeyBytes() { + java.lang.Object ref = key_; + if (ref instanceof String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + key_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } } - public Builder setKey(java.lang.String value) { + /** + * required string key = 1; + */ + public Builder setKey( + java.lang.String value) { if (value == null) { throw new NullPointerException(); } - result.hasKey = true; - result.key_ = value; + bitField0_ |= 0x00000001; + key_ = value; + onChanged(); return this; } + /** + * required string key = 1; + */ public Builder clearKey() { - result.hasKey = false; - result.key_ = getDefaultInstance().getKey(); + bitField0_ = (bitField0_ & ~0x00000001); + key_ = getDefaultInstance().getKey(); + onChanged(); + return this; + } + /** + * required string key = 1; + */ + public Builder setKeyBytes( + com.google.protobuf.ByteString value) { + if (value == null) { + throw new NullPointerException(); + } + bitField0_ |= 0x00000001; + key_ = value; + onChanged(); return this; } - + // required string value = 2; + private java.lang.Object value_ = ""; + /** + * required string value = 2; + */ public boolean hasValue() { - return result.hasValue(); + return ((bitField0_ & 0x00000002) == 0x00000002); } + /** + * required string value = 2; + */ public java.lang.String getValue() { - return result.getValue(); + java.lang.Object ref = value_; + if (!(ref instanceof java.lang.String)) { + java.lang.String s = ((com.google.protobuf.ByteString) ref) + .toStringUtf8(); + value_ = s; + return s; + } else { + return (java.lang.String) ref; + } + } + /** + * required string value = 2; + */ + public com.google.protobuf.ByteString + getValueBytes() { + java.lang.Object ref = value_; + if (ref instanceof String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + value_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } } - public Builder setValue(java.lang.String value) { + /** + * required string value = 2; + */ + public Builder setValue( + java.lang.String value) { if (value == null) { throw new NullPointerException(); } - result.hasValue = true; - result.value_ = value; + bitField0_ |= 0x00000002; + value_ = value; + onChanged(); return this; } + /** + * required string value = 2; + */ public Builder clearValue() { - result.hasValue = false; - result.value_ = getDefaultInstance().getValue(); + bitField0_ = (bitField0_ & ~0x00000002); + value_ = getDefaultInstance().getValue(); + onChanged(); + return this; + } + /** + * required string value = 2; + */ + public Builder setValueBytes( + com.google.protobuf.ByteString value) { + if (value == null) { + throw new NullPointerException(); + } + bitField0_ |= 0x00000002; + value_ = value; + onChanged(); return this; } - + // @@protoc_insertion_point(builder_scope:xtreemfs.pbrpc.KeyValuePair) } - + static { defaultInstance = new KeyValuePair(true); - org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.internalForceInit(); defaultInstance.initFields(); } - + // @@protoc_insertion_point(class_scope:xtreemfs.pbrpc.KeyValuePair) } - + private static com.google.protobuf.Descriptors.Descriptor internal_static_xtreemfs_pbrpc_NewFileSize_descriptor; private static @@ -5079,7 +10468,7 @@ public final class GlobalTypes { private static com.google.protobuf.GeneratedMessage.FieldAccessorTable internal_static_xtreemfs_pbrpc_KeyValuePair_fieldAccessorTable; - + public static com.google.protobuf.Descriptors.FileDescriptor getDescriptor() { return descriptor; @@ -5173,89 +10562,67 @@ public final class GlobalTypes { internal_static_xtreemfs_pbrpc_NewFileSize_fieldAccessorTable = new com.google.protobuf.GeneratedMessage.FieldAccessorTable( internal_static_xtreemfs_pbrpc_NewFileSize_descriptor, - new java.lang.String[] { "SizeInBytes", "TruncateEpoch", }, - org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.NewFileSize.class, - org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.NewFileSize.Builder.class); + new java.lang.String[] { "SizeInBytes", "TruncateEpoch", }); internal_static_xtreemfs_pbrpc_StripingPolicy_descriptor = getDescriptor().getMessageTypes().get(1); internal_static_xtreemfs_pbrpc_StripingPolicy_fieldAccessorTable = new com.google.protobuf.GeneratedMessage.FieldAccessorTable( internal_static_xtreemfs_pbrpc_StripingPolicy_descriptor, - new java.lang.String[] { "Type", "StripeSize", "Width", }, - org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.StripingPolicy.class, - org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.StripingPolicy.Builder.class); + new java.lang.String[] { "Type", "StripeSize", "Width", }); internal_static_xtreemfs_pbrpc_Replica_descriptor = getDescriptor().getMessageTypes().get(2); internal_static_xtreemfs_pbrpc_Replica_fieldAccessorTable = new com.google.protobuf.GeneratedMessage.FieldAccessorTable( internal_static_xtreemfs_pbrpc_Replica_descriptor, - new java.lang.String[] { "OsdUuids", "ReplicationFlags", "StripingPolicy", }, - org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.Replica.class, - org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.Replica.Builder.class); + new java.lang.String[] { "OsdUuids", "ReplicationFlags", "StripingPolicy", }); internal_static_xtreemfs_pbrpc_Replicas_descriptor = getDescriptor().getMessageTypes().get(3); internal_static_xtreemfs_pbrpc_Replicas_fieldAccessorTable = new com.google.protobuf.GeneratedMessage.FieldAccessorTable( internal_static_xtreemfs_pbrpc_Replicas_descriptor, - new java.lang.String[] { "Replicas", }, - org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.Replicas.class, - org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.Replicas.Builder.class); + new java.lang.String[] { "Replicas", }); internal_static_xtreemfs_pbrpc_XCap_descriptor = getDescriptor().getMessageTypes().get(4); internal_static_xtreemfs_pbrpc_XCap_fieldAccessorTable = new com.google.protobuf.GeneratedMessage.FieldAccessorTable( internal_static_xtreemfs_pbrpc_XCap_descriptor, - new java.lang.String[] { "AccessMode", "ClientIdentity", "ExpireTimeS", "ExpireTimeoutS", "FileId", "ReplicateOnClose", "ServerSignature", "TruncateEpoch", "SnapConfig", "SnapTimestamp", }, - org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.XCap.class, - org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.XCap.Builder.class); + new java.lang.String[] { "AccessMode", "ClientIdentity", "ExpireTimeS", "ExpireTimeoutS", "FileId", "ReplicateOnClose", "ServerSignature", "TruncateEpoch", "SnapConfig", "SnapTimestamp", }); internal_static_xtreemfs_pbrpc_XLocSet_descriptor = getDescriptor().getMessageTypes().get(5); internal_static_xtreemfs_pbrpc_XLocSet_fieldAccessorTable = new com.google.protobuf.GeneratedMessage.FieldAccessorTable( internal_static_xtreemfs_pbrpc_XLocSet_descriptor, - new java.lang.String[] { "ReadOnlyFileSize", "Replicas", "ReplicaUpdatePolicy", "Version", }, - org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.XLocSet.class, - org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.XLocSet.Builder.class); + new java.lang.String[] { "ReadOnlyFileSize", "Replicas", "ReplicaUpdatePolicy", "Version", }); internal_static_xtreemfs_pbrpc_FileCredentials_descriptor = getDescriptor().getMessageTypes().get(6); internal_static_xtreemfs_pbrpc_FileCredentials_fieldAccessorTable = new com.google.protobuf.GeneratedMessage.FieldAccessorTable( internal_static_xtreemfs_pbrpc_FileCredentials_descriptor, - new java.lang.String[] { "Xcap", "Xlocs", }, - org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials.class, - org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials.Builder.class); + new java.lang.String[] { "Xcap", "Xlocs", }); internal_static_xtreemfs_pbrpc_FileCredentialsSet_descriptor = getDescriptor().getMessageTypes().get(7); internal_static_xtreemfs_pbrpc_FileCredentialsSet_fieldAccessorTable = new com.google.protobuf.GeneratedMessage.FieldAccessorTable( internal_static_xtreemfs_pbrpc_FileCredentialsSet_descriptor, - new java.lang.String[] { "FileCredentials", }, - org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentialsSet.class, - org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentialsSet.Builder.class); + new java.lang.String[] { "FileCredentials", }); internal_static_xtreemfs_pbrpc_VivaldiCoordinates_descriptor = getDescriptor().getMessageTypes().get(8); internal_static_xtreemfs_pbrpc_VivaldiCoordinates_fieldAccessorTable = new com.google.protobuf.GeneratedMessage.FieldAccessorTable( internal_static_xtreemfs_pbrpc_VivaldiCoordinates_descriptor, - new java.lang.String[] { "XCoordinate", "YCoordinate", "LocalError", }, - org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.VivaldiCoordinates.class, - org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.VivaldiCoordinates.Builder.class); + new java.lang.String[] { "XCoordinate", "YCoordinate", "LocalError", }); internal_static_xtreemfs_pbrpc_OSDWriteResponse_descriptor = getDescriptor().getMessageTypes().get(9); internal_static_xtreemfs_pbrpc_OSDWriteResponse_fieldAccessorTable = new com.google.protobuf.GeneratedMessage.FieldAccessorTable( internal_static_xtreemfs_pbrpc_OSDWriteResponse_descriptor, - new java.lang.String[] { "SizeInBytes", "TruncateEpoch", }, - org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.OSDWriteResponse.class, - org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.OSDWriteResponse.Builder.class); + new java.lang.String[] { "SizeInBytes", "TruncateEpoch", }); internal_static_xtreemfs_pbrpc_KeyValuePair_descriptor = getDescriptor().getMessageTypes().get(10); internal_static_xtreemfs_pbrpc_KeyValuePair_fieldAccessorTable = new com.google.protobuf.GeneratedMessage.FieldAccessorTable( internal_static_xtreemfs_pbrpc_KeyValuePair_descriptor, - new java.lang.String[] { "Key", "Value", }, - org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.KeyValuePair.class, - org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.KeyValuePair.Builder.class); + new java.lang.String[] { "Key", "Value", }); return null; } }; @@ -5266,8 +10633,6 @@ public final class GlobalTypes { org.xtreemfs.pbrpc.generatedinterfaces.Common.getDescriptor(), }, assigner); } - - public static void internalForceInit() {} - + // @@protoc_insertion_point(outer_class_scope) } diff --git a/java/servers/src/org/xtreemfs/pbrpc/generatedinterfaces/MRC.java b/java/servers/src/org/xtreemfs/pbrpc/generatedinterfaces/MRC.java index 6e083409b..ef68b1678 100644 --- a/java/servers/src/org/xtreemfs/pbrpc/generatedinterfaces/MRC.java +++ b/java/servers/src/org/xtreemfs/pbrpc/generatedinterfaces/MRC.java @@ -8,21 +8,85 @@ public final class MRC { public static void registerAllExtensions( com.google.protobuf.ExtensionRegistry registry) { } + /** + * Protobuf enum {@code xtreemfs.pbrpc.Setattrs} + * + *
+   * flags for setattr request
+   * 
+ */ public enum Setattrs implements com.google.protobuf.ProtocolMessageEnum { + /** + * SETATTR_MODE = 1; + */ SETATTR_MODE(0, 1), + /** + * SETATTR_UID = 2; + */ SETATTR_UID(1, 2), + /** + * SETATTR_GID = 4; + */ SETATTR_GID(2, 4), + /** + * SETATTR_SIZE = 8; + */ SETATTR_SIZE(3, 8), + /** + * SETATTR_ATIME = 16; + */ SETATTR_ATIME(4, 16), + /** + * SETATTR_MTIME = 32; + */ SETATTR_MTIME(5, 32), + /** + * SETATTR_CTIME = 64; + */ SETATTR_CTIME(6, 64), + /** + * SETATTR_ATTRIBUTES = 128; + */ SETATTR_ATTRIBUTES(7, 128), ; - - + + /** + * SETATTR_MODE = 1; + */ + public static final int SETATTR_MODE_VALUE = 1; + /** + * SETATTR_UID = 2; + */ + public static final int SETATTR_UID_VALUE = 2; + /** + * SETATTR_GID = 4; + */ + public static final int SETATTR_GID_VALUE = 4; + /** + * SETATTR_SIZE = 8; + */ + public static final int SETATTR_SIZE_VALUE = 8; + /** + * SETATTR_ATIME = 16; + */ + public static final int SETATTR_ATIME_VALUE = 16; + /** + * SETATTR_MTIME = 32; + */ + public static final int SETATTR_MTIME_VALUE = 32; + /** + * SETATTR_CTIME = 64; + */ + public static final int SETATTR_CTIME_VALUE = 64; + /** + * SETATTR_ATTRIBUTES = 128; + */ + public static final int SETATTR_ATTRIBUTES_VALUE = 128; + + public final int getNumber() { return value; } - + public static Setattrs valueOf(int value) { switch (value) { case 1: return SETATTR_MODE; @@ -36,7 +100,7 @@ public final class MRC { default: return null; } } - + public static com.google.protobuf.Internal.EnumLiteMap internalGetValueMap() { return internalValueMap; @@ -45,10 +109,10 @@ public final class MRC { internalValueMap = new com.google.protobuf.Internal.EnumLiteMap() { public Setattrs findValueByNumber(int number) { - return Setattrs.valueOf(number) - ; } + return Setattrs.valueOf(number); + } }; - + public final com.google.protobuf.Descriptors.EnumValueDescriptor getValueDescriptor() { return getDescriptor().getValues().get(index); @@ -61,10 +125,9 @@ public final class MRC { getDescriptor() { return org.xtreemfs.pbrpc.generatedinterfaces.MRC.getDescriptor().getEnumTypes().get(0); } - - private static final Setattrs[] VALUES = { - SETATTR_MODE, SETATTR_UID, SETATTR_GID, SETATTR_SIZE, SETATTR_ATIME, SETATTR_MTIME, SETATTR_CTIME, SETATTR_ATTRIBUTES, - }; + + private static final Setattrs[] VALUES = values(); + public static Setattrs valueOf( com.google.protobuf.Descriptors.EnumValueDescriptor desc) { if (desc.getType() != getDescriptor()) { @@ -73,29 +136,49 @@ public final class MRC { } return VALUES[desc.getIndex()]; } + private final int index; private final int value; + private Setattrs(int index, int value) { this.index = index; this.value = value; } - - static { - org.xtreemfs.pbrpc.generatedinterfaces.MRC.getDescriptor(); - } - + // @@protoc_insertion_point(enum_scope:xtreemfs.pbrpc.Setattrs) } - + + /** + * Protobuf enum {@code xtreemfs.pbrpc.XATTR_FLAGS} + * + *
+   * flags for setxattr request
+   * 
+ */ public enum XATTR_FLAGS implements com.google.protobuf.ProtocolMessageEnum { + /** + * XATTR_FLAGS_CREATE = 1; + */ XATTR_FLAGS_CREATE(0, 1), + /** + * XATTR_FLAGS_REPLACE = 2; + */ XATTR_FLAGS_REPLACE(1, 2), ; - - + + /** + * XATTR_FLAGS_CREATE = 1; + */ + public static final int XATTR_FLAGS_CREATE_VALUE = 1; + /** + * XATTR_FLAGS_REPLACE = 2; + */ + public static final int XATTR_FLAGS_REPLACE_VALUE = 2; + + public final int getNumber() { return value; } - + public static XATTR_FLAGS valueOf(int value) { switch (value) { case 1: return XATTR_FLAGS_CREATE; @@ -103,7 +186,7 @@ public final class MRC { default: return null; } } - + public static com.google.protobuf.Internal.EnumLiteMap internalGetValueMap() { return internalValueMap; @@ -112,10 +195,10 @@ public final class MRC { internalValueMap = new com.google.protobuf.Internal.EnumLiteMap() { public XATTR_FLAGS findValueByNumber(int number) { - return XATTR_FLAGS.valueOf(number) - ; } + return XATTR_FLAGS.valueOf(number); + } }; - + public final com.google.protobuf.Descriptors.EnumValueDescriptor getValueDescriptor() { return getDescriptor().getValues().get(index); @@ -128,10 +211,9 @@ public final class MRC { getDescriptor() { return org.xtreemfs.pbrpc.generatedinterfaces.MRC.getDescriptor().getEnumTypes().get(1); } - - private static final XATTR_FLAGS[] VALUES = { - XATTR_FLAGS_CREATE, XATTR_FLAGS_REPLACE, - }; + + private static final XATTR_FLAGS[] VALUES = values(); + public static XATTR_FLAGS valueOf( com.google.protobuf.Descriptors.EnumValueDescriptor desc) { if (desc.getType() != getDescriptor()) { @@ -140,31 +222,97 @@ public final class MRC { } return VALUES[desc.getIndex()]; } + private final int index; private final int value; + private XATTR_FLAGS(int index, int value) { this.index = index; this.value = value; } - - static { - org.xtreemfs.pbrpc.generatedinterfaces.MRC.getDescriptor(); - } - + // @@protoc_insertion_point(enum_scope:xtreemfs.pbrpc.XATTR_FLAGS) } - + + /** + * Protobuf enum {@code xtreemfs.pbrpc.ACCESS_FLAGS} + * + *
+   * flags for the 'access' call
+   * 
+ */ public enum ACCESS_FLAGS implements com.google.protobuf.ProtocolMessageEnum { + /** + * ACCESS_FLAGS_F_OK = 0; + * + *
+     * existence
+     * 
+ */ ACCESS_FLAGS_F_OK(0, 0), + /** + * ACCESS_FLAGS_X_OK = 1; + * + *
+     * execute permission
+     * 
+ */ ACCESS_FLAGS_X_OK(1, 1), + /** + * ACCESS_FLAGS_W_OK = 2; + * + *
+     * write permission
+     * 
+ */ ACCESS_FLAGS_W_OK(2, 2), + /** + * ACCESS_FLAGS_R_OK = 4; + * + *
+     * read permission
+     * 
+ */ ACCESS_FLAGS_R_OK(3, 4), ; - - + + /** + * ACCESS_FLAGS_F_OK = 0; + * + *
+     * existence
+     * 
+ */ + public static final int ACCESS_FLAGS_F_OK_VALUE = 0; + /** + * ACCESS_FLAGS_X_OK = 1; + * + *
+     * execute permission
+     * 
+ */ + public static final int ACCESS_FLAGS_X_OK_VALUE = 1; + /** + * ACCESS_FLAGS_W_OK = 2; + * + *
+     * write permission
+     * 
+ */ + public static final int ACCESS_FLAGS_W_OK_VALUE = 2; + /** + * ACCESS_FLAGS_R_OK = 4; + * + *
+     * read permission
+     * 
+ */ + public static final int ACCESS_FLAGS_R_OK_VALUE = 4; + + public final int getNumber() { return value; } - + public static ACCESS_FLAGS valueOf(int value) { switch (value) { case 0: return ACCESS_FLAGS_F_OK; @@ -174,7 +322,7 @@ public final class MRC { default: return null; } } - + public static com.google.protobuf.Internal.EnumLiteMap internalGetValueMap() { return internalValueMap; @@ -183,10 +331,10 @@ public final class MRC { internalValueMap = new com.google.protobuf.Internal.EnumLiteMap() { public ACCESS_FLAGS findValueByNumber(int number) { - return ACCESS_FLAGS.valueOf(number) - ; } + return ACCESS_FLAGS.valueOf(number); + } }; - + public final com.google.protobuf.Descriptors.EnumValueDescriptor getValueDescriptor() { return getDescriptor().getValues().get(index); @@ -199,10 +347,9 @@ public final class MRC { getDescriptor() { return org.xtreemfs.pbrpc.generatedinterfaces.MRC.getDescriptor().getEnumTypes().get(2); } - - private static final ACCESS_FLAGS[] VALUES = { - ACCESS_FLAGS_F_OK, ACCESS_FLAGS_X_OK, ACCESS_FLAGS_W_OK, ACCESS_FLAGS_R_OK, - }; + + private static final ACCESS_FLAGS[] VALUES = values(); + public static ACCESS_FLAGS valueOf( com.google.protobuf.Descriptors.EnumValueDescriptor desc) { if (desc.getType() != getDescriptor()) { @@ -211,420 +358,1274 @@ public final class MRC { } return VALUES[desc.getIndex()]; } + private final int index; private final int value; + private ACCESS_FLAGS(int index, int value) { this.index = index; this.value = value; } - - static { - org.xtreemfs.pbrpc.generatedinterfaces.MRC.getDescriptor(); - } - + // @@protoc_insertion_point(enum_scope:xtreemfs.pbrpc.ACCESS_FLAGS) } - + + public interface StatOrBuilder + extends com.google.protobuf.MessageOrBuilder { + + // required fixed64 dev = 1; + /** + * required fixed64 dev = 1; + * + *
+     * device number; represented by a hash of the volume id
+     * 
+ */ + boolean hasDev(); + /** + * required fixed64 dev = 1; + * + *
+     * device number; represented by a hash of the volume id
+     * 
+ */ + long getDev(); + + // required fixed64 ino = 2; + /** + * required fixed64 ino = 2; + * + *
+     * inode number; represented by the file ID
+     * 
+ */ + boolean hasIno(); + /** + * required fixed64 ino = 2; + * + *
+     * inode number; represented by the file ID
+     * 
+ */ + long getIno(); + + // required fixed32 mode = 3; + /** + * required fixed32 mode = 3; + * + *
+     * POSIX access mode
+     * 
+ */ + boolean hasMode(); + /** + * required fixed32 mode = 3; + * + *
+     * POSIX access mode
+     * 
+ */ + int getMode(); + + // required fixed32 nlink = 4; + /** + * required fixed32 nlink = 4; + * + *
+     * hardlink count
+     * 
+ */ + boolean hasNlink(); + /** + * required fixed32 nlink = 4; + * + *
+     * hardlink count
+     * 
+ */ + int getNlink(); + + // required string user_id = 5; + /** + * required string user_id = 5; + * + *
+     * owning user ID
+     * 
+ */ + boolean hasUserId(); + /** + * required string user_id = 5; + * + *
+     * owning user ID
+     * 
+ */ + java.lang.String getUserId(); + /** + * required string user_id = 5; + * + *
+     * owning user ID
+     * 
+ */ + com.google.protobuf.ByteString + getUserIdBytes(); + + // required string group_id = 6; + /** + * required string group_id = 6; + * + *
+     * owning group ID
+     * 
+ */ + boolean hasGroupId(); + /** + * required string group_id = 6; + * + *
+     * owning group ID
+     * 
+ */ + java.lang.String getGroupId(); + /** + * required string group_id = 6; + * + *
+     * owning group ID
+     * 
+ */ + com.google.protobuf.ByteString + getGroupIdBytes(); + + // required fixed64 size = 7; + /** + * required fixed64 size = 7; + * + *
+     * file size
+     * 
+ */ + boolean hasSize(); + /** + * required fixed64 size = 7; + * + *
+     * file size
+     * 
+ */ + long getSize(); + + // required fixed64 atime_ns = 8; + /** + * required fixed64 atime_ns = 8; + * + *
+     * atime (access time) in nanoseconds since 1970
+     * 
+ */ + boolean hasAtimeNs(); + /** + * required fixed64 atime_ns = 8; + * + *
+     * atime (access time) in nanoseconds since 1970
+     * 
+ */ + long getAtimeNs(); + + // required fixed64 mtime_ns = 9; + /** + * required fixed64 mtime_ns = 9; + * + *
+     * mtime (data modification time) in nanoseconds since 1970
+     * 
+ */ + boolean hasMtimeNs(); + /** + * required fixed64 mtime_ns = 9; + * + *
+     * mtime (data modification time) in nanoseconds since 1970
+     * 
+ */ + long getMtimeNs(); + + // required fixed64 ctime_ns = 10; + /** + * required fixed64 ctime_ns = 10; + * + *
+     * ctime (inode change time) in nanoseconds since 1970
+     * 
+ */ + boolean hasCtimeNs(); + /** + * required fixed64 ctime_ns = 10; + * + *
+     * ctime (inode change time) in nanoseconds since 1970
+     * 
+ */ + long getCtimeNs(); + + // required fixed32 blksize = 11; + /** + * required fixed32 blksize = 11; + * + *
+     * block size; represented by the stripe size
+     * 
+ */ + boolean hasBlksize(); + /** + * required fixed32 blksize = 11; + * + *
+     * block size; represented by the stripe size
+     * 
+ */ + int getBlksize(); + + // optional fixed64 etag = 12; + /** + * optional fixed64 etag = 12; + * + *
+     * identification tag for the stat object
+     * 
+ */ + boolean hasEtag(); + /** + * optional fixed64 etag = 12; + * + *
+     * identification tag for the stat object
+     * 
+ */ + long getEtag(); + + // required fixed32 truncate_epoch = 13; + /** + * required fixed32 truncate_epoch = 13; + * + *
+     * truncate epoch
+     * 
+ */ + boolean hasTruncateEpoch(); + /** + * required fixed32 truncate_epoch = 13; + * + *
+     * truncate epoch
+     * 
+ */ + int getTruncateEpoch(); + + // optional fixed32 attributes = 14; + /** + * optional fixed32 attributes = 14; + * + *
+     * Win32-specific attributes
+     * 
+ */ + boolean hasAttributes(); + /** + * optional fixed32 attributes = 14; + * + *
+     * Win32-specific attributes
+     * 
+ */ + int getAttributes(); + } + /** + * Protobuf type {@code xtreemfs.pbrpc.Stat} + * + *
+   * information about a single file or directory; relevant for the 'stat' call
+   * 
+ */ public static final class Stat extends - com.google.protobuf.GeneratedMessage { + com.google.protobuf.GeneratedMessage + implements StatOrBuilder { // Use Stat.newBuilder() to construct. - private Stat() { - initFields(); + private Stat(com.google.protobuf.GeneratedMessage.Builder builder) { + super(builder); + this.unknownFields = builder.getUnknownFields(); } - private Stat(boolean noInit) {} - + private Stat(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); } + private static final Stat defaultInstance; public static Stat getDefaultInstance() { return defaultInstance; } - + public Stat getDefaultInstanceForType() { return defaultInstance; } - + + private final com.google.protobuf.UnknownFieldSet unknownFields; + @java.lang.Override + public final com.google.protobuf.UnknownFieldSet + getUnknownFields() { + return this.unknownFields; + } + private Stat( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + initFields(); + int mutable_bitField0_ = 0; + com.google.protobuf.UnknownFieldSet.Builder unknownFields = + com.google.protobuf.UnknownFieldSet.newBuilder(); + try { + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch (tag) { + case 0: + done = true; + break; + default: { + if (!parseUnknownField(input, unknownFields, + extensionRegistry, tag)) { + done = true; + } + break; + } + case 9: { + bitField0_ |= 0x00000001; + dev_ = input.readFixed64(); + break; + } + case 17: { + bitField0_ |= 0x00000002; + ino_ = input.readFixed64(); + break; + } + case 29: { + bitField0_ |= 0x00000004; + mode_ = input.readFixed32(); + break; + } + case 37: { + bitField0_ |= 0x00000008; + nlink_ = input.readFixed32(); + break; + } + case 42: { + bitField0_ |= 0x00000010; + userId_ = input.readBytes(); + break; + } + case 50: { + bitField0_ |= 0x00000020; + groupId_ = input.readBytes(); + break; + } + case 57: { + bitField0_ |= 0x00000040; + size_ = input.readFixed64(); + break; + } + case 65: { + bitField0_ |= 0x00000080; + atimeNs_ = input.readFixed64(); + break; + } + case 73: { + bitField0_ |= 0x00000100; + mtimeNs_ = input.readFixed64(); + break; + } + case 81: { + bitField0_ |= 0x00000200; + ctimeNs_ = input.readFixed64(); + break; + } + case 93: { + bitField0_ |= 0x00000400; + blksize_ = input.readFixed32(); + break; + } + case 97: { + bitField0_ |= 0x00000800; + etag_ = input.readFixed64(); + break; + } + case 109: { + bitField0_ |= 0x00001000; + truncateEpoch_ = input.readFixed32(); + break; + } + case 117: { + bitField0_ |= 0x00002000; + attributes_ = input.readFixed32(); + break; + } + } + } + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(this); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException( + e.getMessage()).setUnfinishedMessage(this); + } finally { + this.unknownFields = unknownFields.build(); + makeExtensionsImmutable(); + } + } public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { return org.xtreemfs.pbrpc.generatedinterfaces.MRC.internal_static_xtreemfs_pbrpc_Stat_descriptor; } - + protected com.google.protobuf.GeneratedMessage.FieldAccessorTable internalGetFieldAccessorTable() { - return org.xtreemfs.pbrpc.generatedinterfaces.MRC.internal_static_xtreemfs_pbrpc_Stat_fieldAccessorTable; + return org.xtreemfs.pbrpc.generatedinterfaces.MRC.internal_static_xtreemfs_pbrpc_Stat_fieldAccessorTable + .ensureFieldAccessorsInitialized( + org.xtreemfs.pbrpc.generatedinterfaces.MRC.Stat.class, org.xtreemfs.pbrpc.generatedinterfaces.MRC.Stat.Builder.class); + } + + public static com.google.protobuf.Parser PARSER = + new com.google.protobuf.AbstractParser() { + public Stat parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return new Stat(input, extensionRegistry); + } + }; + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; } - + + private int bitField0_; // required fixed64 dev = 1; public static final int DEV_FIELD_NUMBER = 1; - private boolean hasDev; - private long dev_ = 0L; - public boolean hasDev() { return hasDev; } - public long getDev() { return dev_; } - + private long dev_; + /** + * required fixed64 dev = 1; + * + *
+     * device number; represented by a hash of the volume id
+     * 
+ */ + public boolean hasDev() { + return ((bitField0_ & 0x00000001) == 0x00000001); + } + /** + * required fixed64 dev = 1; + * + *
+     * device number; represented by a hash of the volume id
+     * 
+ */ + public long getDev() { + return dev_; + } + // required fixed64 ino = 2; public static final int INO_FIELD_NUMBER = 2; - private boolean hasIno; - private long ino_ = 0L; - public boolean hasIno() { return hasIno; } - public long getIno() { return ino_; } - + private long ino_; + /** + * required fixed64 ino = 2; + * + *
+     * inode number; represented by the file ID
+     * 
+ */ + public boolean hasIno() { + return ((bitField0_ & 0x00000002) == 0x00000002); + } + /** + * required fixed64 ino = 2; + * + *
+     * inode number; represented by the file ID
+     * 
+ */ + public long getIno() { + return ino_; + } + // required fixed32 mode = 3; public static final int MODE_FIELD_NUMBER = 3; - private boolean hasMode; - private int mode_ = 0; - public boolean hasMode() { return hasMode; } - public int getMode() { return mode_; } - + private int mode_; + /** + * required fixed32 mode = 3; + * + *
+     * POSIX access mode
+     * 
+ */ + public boolean hasMode() { + return ((bitField0_ & 0x00000004) == 0x00000004); + } + /** + * required fixed32 mode = 3; + * + *
+     * POSIX access mode
+     * 
+ */ + public int getMode() { + return mode_; + } + // required fixed32 nlink = 4; public static final int NLINK_FIELD_NUMBER = 4; - private boolean hasNlink; - private int nlink_ = 0; - public boolean hasNlink() { return hasNlink; } - public int getNlink() { return nlink_; } - + private int nlink_; + /** + * required fixed32 nlink = 4; + * + *
+     * hardlink count
+     * 
+ */ + public boolean hasNlink() { + return ((bitField0_ & 0x00000008) == 0x00000008); + } + /** + * required fixed32 nlink = 4; + * + *
+     * hardlink count
+     * 
+ */ + public int getNlink() { + return nlink_; + } + // required string user_id = 5; public static final int USER_ID_FIELD_NUMBER = 5; - private boolean hasUserId; - private java.lang.String userId_ = ""; - public boolean hasUserId() { return hasUserId; } - public java.lang.String getUserId() { return userId_; } - + private java.lang.Object userId_; + /** + * required string user_id = 5; + * + *
+     * owning user ID
+     * 
+ */ + public boolean hasUserId() { + return ((bitField0_ & 0x00000010) == 0x00000010); + } + /** + * required string user_id = 5; + * + *
+     * owning user ID
+     * 
+ */ + public java.lang.String getUserId() { + java.lang.Object ref = userId_; + if (ref instanceof java.lang.String) { + return (java.lang.String) ref; + } else { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + if (bs.isValidUtf8()) { + userId_ = s; + } + return s; + } + } + /** + * required string user_id = 5; + * + *
+     * owning user ID
+     * 
+ */ + public com.google.protobuf.ByteString + getUserIdBytes() { + java.lang.Object ref = userId_; + if (ref instanceof java.lang.String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + userId_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + // required string group_id = 6; public static final int GROUP_ID_FIELD_NUMBER = 6; - private boolean hasGroupId; - private java.lang.String groupId_ = ""; - public boolean hasGroupId() { return hasGroupId; } - public java.lang.String getGroupId() { return groupId_; } - + private java.lang.Object groupId_; + /** + * required string group_id = 6; + * + *
+     * owning group ID
+     * 
+ */ + public boolean hasGroupId() { + return ((bitField0_ & 0x00000020) == 0x00000020); + } + /** + * required string group_id = 6; + * + *
+     * owning group ID
+     * 
+ */ + public java.lang.String getGroupId() { + java.lang.Object ref = groupId_; + if (ref instanceof java.lang.String) { + return (java.lang.String) ref; + } else { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + if (bs.isValidUtf8()) { + groupId_ = s; + } + return s; + } + } + /** + * required string group_id = 6; + * + *
+     * owning group ID
+     * 
+ */ + public com.google.protobuf.ByteString + getGroupIdBytes() { + java.lang.Object ref = groupId_; + if (ref instanceof java.lang.String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + groupId_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + // required fixed64 size = 7; public static final int SIZE_FIELD_NUMBER = 7; - private boolean hasSize; - private long size_ = 0L; - public boolean hasSize() { return hasSize; } - public long getSize() { return size_; } - + private long size_; + /** + * required fixed64 size = 7; + * + *
+     * file size
+     * 
+ */ + public boolean hasSize() { + return ((bitField0_ & 0x00000040) == 0x00000040); + } + /** + * required fixed64 size = 7; + * + *
+     * file size
+     * 
+ */ + public long getSize() { + return size_; + } + // required fixed64 atime_ns = 8; public static final int ATIME_NS_FIELD_NUMBER = 8; - private boolean hasAtimeNs; - private long atimeNs_ = 0L; - public boolean hasAtimeNs() { return hasAtimeNs; } - public long getAtimeNs() { return atimeNs_; } - + private long atimeNs_; + /** + * required fixed64 atime_ns = 8; + * + *
+     * atime (access time) in nanoseconds since 1970
+     * 
+ */ + public boolean hasAtimeNs() { + return ((bitField0_ & 0x00000080) == 0x00000080); + } + /** + * required fixed64 atime_ns = 8; + * + *
+     * atime (access time) in nanoseconds since 1970
+     * 
+ */ + public long getAtimeNs() { + return atimeNs_; + } + // required fixed64 mtime_ns = 9; public static final int MTIME_NS_FIELD_NUMBER = 9; - private boolean hasMtimeNs; - private long mtimeNs_ = 0L; - public boolean hasMtimeNs() { return hasMtimeNs; } - public long getMtimeNs() { return mtimeNs_; } - + private long mtimeNs_; + /** + * required fixed64 mtime_ns = 9; + * + *
+     * mtime (data modification time) in nanoseconds since 1970
+     * 
+ */ + public boolean hasMtimeNs() { + return ((bitField0_ & 0x00000100) == 0x00000100); + } + /** + * required fixed64 mtime_ns = 9; + * + *
+     * mtime (data modification time) in nanoseconds since 1970
+     * 
+ */ + public long getMtimeNs() { + return mtimeNs_; + } + // required fixed64 ctime_ns = 10; public static final int CTIME_NS_FIELD_NUMBER = 10; - private boolean hasCtimeNs; - private long ctimeNs_ = 0L; - public boolean hasCtimeNs() { return hasCtimeNs; } - public long getCtimeNs() { return ctimeNs_; } - + private long ctimeNs_; + /** + * required fixed64 ctime_ns = 10; + * + *
+     * ctime (inode change time) in nanoseconds since 1970
+     * 
+ */ + public boolean hasCtimeNs() { + return ((bitField0_ & 0x00000200) == 0x00000200); + } + /** + * required fixed64 ctime_ns = 10; + * + *
+     * ctime (inode change time) in nanoseconds since 1970
+     * 
+ */ + public long getCtimeNs() { + return ctimeNs_; + } + // required fixed32 blksize = 11; public static final int BLKSIZE_FIELD_NUMBER = 11; - private boolean hasBlksize; - private int blksize_ = 0; - public boolean hasBlksize() { return hasBlksize; } - public int getBlksize() { return blksize_; } - + private int blksize_; + /** + * required fixed32 blksize = 11; + * + *
+     * block size; represented by the stripe size
+     * 
+ */ + public boolean hasBlksize() { + return ((bitField0_ & 0x00000400) == 0x00000400); + } + /** + * required fixed32 blksize = 11; + * + *
+     * block size; represented by the stripe size
+     * 
+ */ + public int getBlksize() { + return blksize_; + } + // optional fixed64 etag = 12; public static final int ETAG_FIELD_NUMBER = 12; - private boolean hasEtag; - private long etag_ = 0L; - public boolean hasEtag() { return hasEtag; } - public long getEtag() { return etag_; } - + private long etag_; + /** + * optional fixed64 etag = 12; + * + *
+     * identification tag for the stat object
+     * 
+ */ + public boolean hasEtag() { + return ((bitField0_ & 0x00000800) == 0x00000800); + } + /** + * optional fixed64 etag = 12; + * + *
+     * identification tag for the stat object
+     * 
+ */ + public long getEtag() { + return etag_; + } + // required fixed32 truncate_epoch = 13; public static final int TRUNCATE_EPOCH_FIELD_NUMBER = 13; - private boolean hasTruncateEpoch; - private int truncateEpoch_ = 0; - public boolean hasTruncateEpoch() { return hasTruncateEpoch; } - public int getTruncateEpoch() { return truncateEpoch_; } - + private int truncateEpoch_; + /** + * required fixed32 truncate_epoch = 13; + * + *
+     * truncate epoch
+     * 
+ */ + public boolean hasTruncateEpoch() { + return ((bitField0_ & 0x00001000) == 0x00001000); + } + /** + * required fixed32 truncate_epoch = 13; + * + *
+     * truncate epoch
+     * 
+ */ + public int getTruncateEpoch() { + return truncateEpoch_; + } + // optional fixed32 attributes = 14; public static final int ATTRIBUTES_FIELD_NUMBER = 14; - private boolean hasAttributes; - private int attributes_ = 0; - public boolean hasAttributes() { return hasAttributes; } - public int getAttributes() { return attributes_; } - - private void initFields() { + private int attributes_; + /** + * optional fixed32 attributes = 14; + * + *
+     * Win32-specific attributes
+     * 
+ */ + public boolean hasAttributes() { + return ((bitField0_ & 0x00002000) == 0x00002000); + } + /** + * optional fixed32 attributes = 14; + * + *
+     * Win32-specific attributes
+     * 
+ */ + public int getAttributes() { + return attributes_; } + + private void initFields() { + dev_ = 0L; + ino_ = 0L; + mode_ = 0; + nlink_ = 0; + userId_ = ""; + groupId_ = ""; + size_ = 0L; + atimeNs_ = 0L; + mtimeNs_ = 0L; + ctimeNs_ = 0L; + blksize_ = 0; + etag_ = 0L; + truncateEpoch_ = 0; + attributes_ = 0; + } + private byte memoizedIsInitialized = -1; public final boolean isInitialized() { - if (!hasDev) return false; - if (!hasIno) return false; - if (!hasMode) return false; - if (!hasNlink) return false; - if (!hasUserId) return false; - if (!hasGroupId) return false; - if (!hasSize) return false; - if (!hasAtimeNs) return false; - if (!hasMtimeNs) return false; - if (!hasCtimeNs) return false; - if (!hasBlksize) return false; - if (!hasTruncateEpoch) return false; + byte isInitialized = memoizedIsInitialized; + if (isInitialized != -1) return isInitialized == 1; + + if (!hasDev()) { + memoizedIsInitialized = 0; + return false; + } + if (!hasIno()) { + memoizedIsInitialized = 0; + return false; + } + if (!hasMode()) { + memoizedIsInitialized = 0; + return false; + } + if (!hasNlink()) { + memoizedIsInitialized = 0; + return false; + } + if (!hasUserId()) { + memoizedIsInitialized = 0; + return false; + } + if (!hasGroupId()) { + memoizedIsInitialized = 0; + return false; + } + if (!hasSize()) { + memoizedIsInitialized = 0; + return false; + } + if (!hasAtimeNs()) { + memoizedIsInitialized = 0; + return false; + } + if (!hasMtimeNs()) { + memoizedIsInitialized = 0; + return false; + } + if (!hasCtimeNs()) { + memoizedIsInitialized = 0; + return false; + } + if (!hasBlksize()) { + memoizedIsInitialized = 0; + return false; + } + if (!hasTruncateEpoch()) { + memoizedIsInitialized = 0; + return false; + } + memoizedIsInitialized = 1; return true; } - + public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException { getSerializedSize(); - if (hasDev()) { - output.writeFixed64(1, getDev()); + if (((bitField0_ & 0x00000001) == 0x00000001)) { + output.writeFixed64(1, dev_); } - if (hasIno()) { - output.writeFixed64(2, getIno()); + if (((bitField0_ & 0x00000002) == 0x00000002)) { + output.writeFixed64(2, ino_); } - if (hasMode()) { - output.writeFixed32(3, getMode()); + if (((bitField0_ & 0x00000004) == 0x00000004)) { + output.writeFixed32(3, mode_); } - if (hasNlink()) { - output.writeFixed32(4, getNlink()); + if (((bitField0_ & 0x00000008) == 0x00000008)) { + output.writeFixed32(4, nlink_); } - if (hasUserId()) { - output.writeString(5, getUserId()); + if (((bitField0_ & 0x00000010) == 0x00000010)) { + output.writeBytes(5, getUserIdBytes()); } - if (hasGroupId()) { - output.writeString(6, getGroupId()); + if (((bitField0_ & 0x00000020) == 0x00000020)) { + output.writeBytes(6, getGroupIdBytes()); } - if (hasSize()) { - output.writeFixed64(7, getSize()); + if (((bitField0_ & 0x00000040) == 0x00000040)) { + output.writeFixed64(7, size_); } - if (hasAtimeNs()) { - output.writeFixed64(8, getAtimeNs()); + if (((bitField0_ & 0x00000080) == 0x00000080)) { + output.writeFixed64(8, atimeNs_); } - if (hasMtimeNs()) { - output.writeFixed64(9, getMtimeNs()); + if (((bitField0_ & 0x00000100) == 0x00000100)) { + output.writeFixed64(9, mtimeNs_); } - if (hasCtimeNs()) { - output.writeFixed64(10, getCtimeNs()); + if (((bitField0_ & 0x00000200) == 0x00000200)) { + output.writeFixed64(10, ctimeNs_); } - if (hasBlksize()) { - output.writeFixed32(11, getBlksize()); + if (((bitField0_ & 0x00000400) == 0x00000400)) { + output.writeFixed32(11, blksize_); } - if (hasEtag()) { - output.writeFixed64(12, getEtag()); + if (((bitField0_ & 0x00000800) == 0x00000800)) { + output.writeFixed64(12, etag_); } - if (hasTruncateEpoch()) { - output.writeFixed32(13, getTruncateEpoch()); + if (((bitField0_ & 0x00001000) == 0x00001000)) { + output.writeFixed32(13, truncateEpoch_); } - if (hasAttributes()) { - output.writeFixed32(14, getAttributes()); + if (((bitField0_ & 0x00002000) == 0x00002000)) { + output.writeFixed32(14, attributes_); } getUnknownFields().writeTo(output); } - + private int memoizedSerializedSize = -1; public int getSerializedSize() { int size = memoizedSerializedSize; if (size != -1) return size; - + size = 0; - if (hasDev()) { + if (((bitField0_ & 0x00000001) == 0x00000001)) { size += com.google.protobuf.CodedOutputStream - .computeFixed64Size(1, getDev()); + .computeFixed64Size(1, dev_); } - if (hasIno()) { + if (((bitField0_ & 0x00000002) == 0x00000002)) { size += com.google.protobuf.CodedOutputStream - .computeFixed64Size(2, getIno()); + .computeFixed64Size(2, ino_); } - if (hasMode()) { + if (((bitField0_ & 0x00000004) == 0x00000004)) { size += com.google.protobuf.CodedOutputStream - .computeFixed32Size(3, getMode()); + .computeFixed32Size(3, mode_); } - if (hasNlink()) { + if (((bitField0_ & 0x00000008) == 0x00000008)) { size += com.google.protobuf.CodedOutputStream - .computeFixed32Size(4, getNlink()); + .computeFixed32Size(4, nlink_); } - if (hasUserId()) { + if (((bitField0_ & 0x00000010) == 0x00000010)) { size += com.google.protobuf.CodedOutputStream - .computeStringSize(5, getUserId()); + .computeBytesSize(5, getUserIdBytes()); } - if (hasGroupId()) { + if (((bitField0_ & 0x00000020) == 0x00000020)) { size += com.google.protobuf.CodedOutputStream - .computeStringSize(6, getGroupId()); + .computeBytesSize(6, getGroupIdBytes()); } - if (hasSize()) { + if (((bitField0_ & 0x00000040) == 0x00000040)) { size += com.google.protobuf.CodedOutputStream - .computeFixed64Size(7, getSize()); + .computeFixed64Size(7, size_); } - if (hasAtimeNs()) { + if (((bitField0_ & 0x00000080) == 0x00000080)) { size += com.google.protobuf.CodedOutputStream - .computeFixed64Size(8, getAtimeNs()); + .computeFixed64Size(8, atimeNs_); } - if (hasMtimeNs()) { + if (((bitField0_ & 0x00000100) == 0x00000100)) { size += com.google.protobuf.CodedOutputStream - .computeFixed64Size(9, getMtimeNs()); + .computeFixed64Size(9, mtimeNs_); } - if (hasCtimeNs()) { + if (((bitField0_ & 0x00000200) == 0x00000200)) { size += com.google.protobuf.CodedOutputStream - .computeFixed64Size(10, getCtimeNs()); + .computeFixed64Size(10, ctimeNs_); } - if (hasBlksize()) { + if (((bitField0_ & 0x00000400) == 0x00000400)) { size += com.google.protobuf.CodedOutputStream - .computeFixed32Size(11, getBlksize()); + .computeFixed32Size(11, blksize_); } - if (hasEtag()) { + if (((bitField0_ & 0x00000800) == 0x00000800)) { size += com.google.protobuf.CodedOutputStream - .computeFixed64Size(12, getEtag()); + .computeFixed64Size(12, etag_); } - if (hasTruncateEpoch()) { + if (((bitField0_ & 0x00001000) == 0x00001000)) { size += com.google.protobuf.CodedOutputStream - .computeFixed32Size(13, getTruncateEpoch()); + .computeFixed32Size(13, truncateEpoch_); } - if (hasAttributes()) { + if (((bitField0_ & 0x00002000) == 0x00002000)) { size += com.google.protobuf.CodedOutputStream - .computeFixed32Size(14, getAttributes()); + .computeFixed32Size(14, attributes_); } size += getUnknownFields().getSerializedSize(); memoizedSerializedSize = size; return size; } - + + private static final long serialVersionUID = 0L; + @java.lang.Override + protected java.lang.Object writeReplace() + throws java.io.ObjectStreamException { + return super.writeReplace(); + } + public static org.xtreemfs.pbrpc.generatedinterfaces.MRC.Stat parseFrom( com.google.protobuf.ByteString data) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data).buildParsed(); + return PARSER.parseFrom(data); } public static org.xtreemfs.pbrpc.generatedinterfaces.MRC.Stat parseFrom( com.google.protobuf.ByteString data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(data, extensionRegistry); } public static org.xtreemfs.pbrpc.generatedinterfaces.MRC.Stat parseFrom(byte[] data) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data).buildParsed(); + return PARSER.parseFrom(data); } public static org.xtreemfs.pbrpc.generatedinterfaces.MRC.Stat parseFrom( byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(data, extensionRegistry); } public static org.xtreemfs.pbrpc.generatedinterfaces.MRC.Stat parseFrom(java.io.InputStream input) throws java.io.IOException { - return newBuilder().mergeFrom(input).buildParsed(); + return PARSER.parseFrom(input); } public static org.xtreemfs.pbrpc.generatedinterfaces.MRC.Stat parseFrom( java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - return newBuilder().mergeFrom(input, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(input, extensionRegistry); } public static org.xtreemfs.pbrpc.generatedinterfaces.MRC.Stat parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException { - Builder builder = newBuilder(); - if (builder.mergeDelimitedFrom(input)) { - return builder.buildParsed(); - } else { - return null; - } + return PARSER.parseDelimitedFrom(input); } public static org.xtreemfs.pbrpc.generatedinterfaces.MRC.Stat parseDelimitedFrom( java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - Builder builder = newBuilder(); - if (builder.mergeDelimitedFrom(input, extensionRegistry)) { - return builder.buildParsed(); - } else { - return null; - } + return PARSER.parseDelimitedFrom(input, extensionRegistry); } public static org.xtreemfs.pbrpc.generatedinterfaces.MRC.Stat parseFrom( com.google.protobuf.CodedInputStream input) throws java.io.IOException { - return newBuilder().mergeFrom(input).buildParsed(); + return PARSER.parseFrom(input); } public static org.xtreemfs.pbrpc.generatedinterfaces.MRC.Stat parseFrom( com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - return newBuilder().mergeFrom(input, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(input, extensionRegistry); } - + public static Builder newBuilder() { return Builder.create(); } public Builder newBuilderForType() { return newBuilder(); } public static Builder newBuilder(org.xtreemfs.pbrpc.generatedinterfaces.MRC.Stat prototype) { return newBuilder().mergeFrom(prototype); } public Builder toBuilder() { return newBuilder(this); } - + + @java.lang.Override + protected Builder newBuilderForType( + com.google.protobuf.GeneratedMessage.BuilderParent parent) { + Builder builder = new Builder(parent); + return builder; + } + /** + * Protobuf type {@code xtreemfs.pbrpc.Stat} + * + *
+     * information about a single file or directory; relevant for the 'stat' call
+     * 
+ */ public static final class Builder extends - com.google.protobuf.GeneratedMessage.Builder { - private org.xtreemfs.pbrpc.generatedinterfaces.MRC.Stat result; - + com.google.protobuf.GeneratedMessage.Builder + implements org.xtreemfs.pbrpc.generatedinterfaces.MRC.StatOrBuilder { + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return org.xtreemfs.pbrpc.generatedinterfaces.MRC.internal_static_xtreemfs_pbrpc_Stat_descriptor; + } + + protected com.google.protobuf.GeneratedMessage.FieldAccessorTable + internalGetFieldAccessorTable() { + return org.xtreemfs.pbrpc.generatedinterfaces.MRC.internal_static_xtreemfs_pbrpc_Stat_fieldAccessorTable + .ensureFieldAccessorsInitialized( + org.xtreemfs.pbrpc.generatedinterfaces.MRC.Stat.class, org.xtreemfs.pbrpc.generatedinterfaces.MRC.Stat.Builder.class); + } + // Construct using org.xtreemfs.pbrpc.generatedinterfaces.MRC.Stat.newBuilder() - private Builder() {} - - private static Builder create() { - Builder builder = new Builder(); - builder.result = new org.xtreemfs.pbrpc.generatedinterfaces.MRC.Stat(); - return builder; + private Builder() { + maybeForceBuilderInitialization(); } - - protected org.xtreemfs.pbrpc.generatedinterfaces.MRC.Stat internalGetResult() { - return result; + + private Builder( + com.google.protobuf.GeneratedMessage.BuilderParent parent) { + super(parent); + maybeForceBuilderInitialization(); } - - public Builder clear() { - if (result == null) { - throw new IllegalStateException( - "Cannot call clear() after build()."); + private void maybeForceBuilderInitialization() { + if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) { } - result = new org.xtreemfs.pbrpc.generatedinterfaces.MRC.Stat(); + } + private static Builder create() { + return new Builder(); + } + + public Builder clear() { + super.clear(); + dev_ = 0L; + bitField0_ = (bitField0_ & ~0x00000001); + ino_ = 0L; + bitField0_ = (bitField0_ & ~0x00000002); + mode_ = 0; + bitField0_ = (bitField0_ & ~0x00000004); + nlink_ = 0; + bitField0_ = (bitField0_ & ~0x00000008); + userId_ = ""; + bitField0_ = (bitField0_ & ~0x00000010); + groupId_ = ""; + bitField0_ = (bitField0_ & ~0x00000020); + size_ = 0L; + bitField0_ = (bitField0_ & ~0x00000040); + atimeNs_ = 0L; + bitField0_ = (bitField0_ & ~0x00000080); + mtimeNs_ = 0L; + bitField0_ = (bitField0_ & ~0x00000100); + ctimeNs_ = 0L; + bitField0_ = (bitField0_ & ~0x00000200); + blksize_ = 0; + bitField0_ = (bitField0_ & ~0x00000400); + etag_ = 0L; + bitField0_ = (bitField0_ & ~0x00000800); + truncateEpoch_ = 0; + bitField0_ = (bitField0_ & ~0x00001000); + attributes_ = 0; + bitField0_ = (bitField0_ & ~0x00002000); return this; } - + public Builder clone() { - return create().mergeFrom(result); + return create().mergeFrom(buildPartial()); } - + public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() { - return org.xtreemfs.pbrpc.generatedinterfaces.MRC.Stat.getDescriptor(); + return org.xtreemfs.pbrpc.generatedinterfaces.MRC.internal_static_xtreemfs_pbrpc_Stat_descriptor; } - + public org.xtreemfs.pbrpc.generatedinterfaces.MRC.Stat getDefaultInstanceForType() { return org.xtreemfs.pbrpc.generatedinterfaces.MRC.Stat.getDefaultInstance(); } - - public boolean isInitialized() { - return result.isInitialized(); - } + public org.xtreemfs.pbrpc.generatedinterfaces.MRC.Stat build() { - if (result != null && !isInitialized()) { + org.xtreemfs.pbrpc.generatedinterfaces.MRC.Stat result = buildPartial(); + if (!result.isInitialized()) { throw newUninitializedMessageException(result); } - return buildPartial(); - } - - private org.xtreemfs.pbrpc.generatedinterfaces.MRC.Stat buildParsed() - throws com.google.protobuf.InvalidProtocolBufferException { - if (!isInitialized()) { - throw newUninitializedMessageException( - result).asInvalidProtocolBufferException(); - } - return buildPartial(); + return result; } - + public org.xtreemfs.pbrpc.generatedinterfaces.MRC.Stat buildPartial() { - if (result == null) { - throw new IllegalStateException( - "build() has already been called on this Builder."); - } - org.xtreemfs.pbrpc.generatedinterfaces.MRC.Stat returnMe = result; - result = null; - return returnMe; + org.xtreemfs.pbrpc.generatedinterfaces.MRC.Stat result = new org.xtreemfs.pbrpc.generatedinterfaces.MRC.Stat(this); + int from_bitField0_ = bitField0_; + int to_bitField0_ = 0; + if (((from_bitField0_ & 0x00000001) == 0x00000001)) { + to_bitField0_ |= 0x00000001; + } + result.dev_ = dev_; + if (((from_bitField0_ & 0x00000002) == 0x00000002)) { + to_bitField0_ |= 0x00000002; + } + result.ino_ = ino_; + if (((from_bitField0_ & 0x00000004) == 0x00000004)) { + to_bitField0_ |= 0x00000004; + } + result.mode_ = mode_; + if (((from_bitField0_ & 0x00000008) == 0x00000008)) { + to_bitField0_ |= 0x00000008; + } + result.nlink_ = nlink_; + if (((from_bitField0_ & 0x00000010) == 0x00000010)) { + to_bitField0_ |= 0x00000010; + } + result.userId_ = userId_; + if (((from_bitField0_ & 0x00000020) == 0x00000020)) { + to_bitField0_ |= 0x00000020; + } + result.groupId_ = groupId_; + if (((from_bitField0_ & 0x00000040) == 0x00000040)) { + to_bitField0_ |= 0x00000040; + } + result.size_ = size_; + if (((from_bitField0_ & 0x00000080) == 0x00000080)) { + to_bitField0_ |= 0x00000080; + } + result.atimeNs_ = atimeNs_; + if (((from_bitField0_ & 0x00000100) == 0x00000100)) { + to_bitField0_ |= 0x00000100; + } + result.mtimeNs_ = mtimeNs_; + if (((from_bitField0_ & 0x00000200) == 0x00000200)) { + to_bitField0_ |= 0x00000200; + } + result.ctimeNs_ = ctimeNs_; + if (((from_bitField0_ & 0x00000400) == 0x00000400)) { + to_bitField0_ |= 0x00000400; + } + result.blksize_ = blksize_; + if (((from_bitField0_ & 0x00000800) == 0x00000800)) { + to_bitField0_ |= 0x00000800; + } + result.etag_ = etag_; + if (((from_bitField0_ & 0x00001000) == 0x00001000)) { + to_bitField0_ |= 0x00001000; + } + result.truncateEpoch_ = truncateEpoch_; + if (((from_bitField0_ & 0x00002000) == 0x00002000)) { + to_bitField0_ |= 0x00002000; + } + result.attributes_ = attributes_; + result.bitField0_ = to_bitField0_; + onBuilt(); + return result; } - + public Builder mergeFrom(com.google.protobuf.Message other) { if (other instanceof org.xtreemfs.pbrpc.generatedinterfaces.MRC.Stat) { return mergeFrom((org.xtreemfs.pbrpc.generatedinterfaces.MRC.Stat)other); @@ -633,7 +1634,7 @@ public final class MRC { return this; } } - + public Builder mergeFrom(org.xtreemfs.pbrpc.generatedinterfaces.MRC.Stat other) { if (other == org.xtreemfs.pbrpc.generatedinterfaces.MRC.Stat.getDefaultInstance()) return this; if (other.hasDev()) { @@ -649,10 +1650,14 @@ public final class MRC { setNlink(other.getNlink()); } if (other.hasUserId()) { - setUserId(other.getUserId()); + bitField0_ |= 0x00000010; + userId_ = other.userId_; + onChanged(); } if (other.hasGroupId()) { - setGroupId(other.getGroupId()); + bitField0_ |= 0x00000020; + groupId_ = other.groupId_; + onChanged(); } if (other.hasSize()) { setSize(other.getSize()); @@ -681,584 +1686,1360 @@ public final class MRC { this.mergeUnknownFields(other.getUnknownFields()); return this; } - + + public final boolean isInitialized() { + if (!hasDev()) { + + return false; + } + if (!hasIno()) { + + return false; + } + if (!hasMode()) { + + return false; + } + if (!hasNlink()) { + + return false; + } + if (!hasUserId()) { + + return false; + } + if (!hasGroupId()) { + + return false; + } + if (!hasSize()) { + + return false; + } + if (!hasAtimeNs()) { + + return false; + } + if (!hasMtimeNs()) { + + return false; + } + if (!hasCtimeNs()) { + + return false; + } + if (!hasBlksize()) { + + return false; + } + if (!hasTruncateEpoch()) { + + return false; + } + return true; + } + public Builder mergeFrom( com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - com.google.protobuf.UnknownFieldSet.Builder unknownFields = - com.google.protobuf.UnknownFieldSet.newBuilder( - this.getUnknownFields()); - while (true) { - int tag = input.readTag(); - switch (tag) { - case 0: - this.setUnknownFields(unknownFields.build()); - return this; - default: { - if (!parseUnknownField(input, unknownFields, - extensionRegistry, tag)) { - this.setUnknownFields(unknownFields.build()); - return this; - } - break; - } - case 9: { - setDev(input.readFixed64()); - break; - } - case 17: { - setIno(input.readFixed64()); - break; - } - case 29: { - setMode(input.readFixed32()); - break; - } - case 37: { - setNlink(input.readFixed32()); - break; - } - case 42: { - setUserId(input.readString()); - break; - } - case 50: { - setGroupId(input.readString()); - break; - } - case 57: { - setSize(input.readFixed64()); - break; - } - case 65: { - setAtimeNs(input.readFixed64()); - break; - } - case 73: { - setMtimeNs(input.readFixed64()); - break; - } - case 81: { - setCtimeNs(input.readFixed64()); - break; - } - case 93: { - setBlksize(input.readFixed32()); - break; - } - case 97: { - setEtag(input.readFixed64()); - break; - } - case 109: { - setTruncateEpoch(input.readFixed32()); - break; - } - case 117: { - setAttributes(input.readFixed32()); - break; - } + org.xtreemfs.pbrpc.generatedinterfaces.MRC.Stat parsedMessage = null; + try { + parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + parsedMessage = (org.xtreemfs.pbrpc.generatedinterfaces.MRC.Stat) e.getUnfinishedMessage(); + throw e; + } finally { + if (parsedMessage != null) { + mergeFrom(parsedMessage); } } + return this; } - - + private int bitField0_; + // required fixed64 dev = 1; + private long dev_ ; + /** + * required fixed64 dev = 1; + * + *
+       * device number; represented by a hash of the volume id
+       * 
+ */ public boolean hasDev() { - return result.hasDev(); - } + return ((bitField0_ & 0x00000001) == 0x00000001); + } + /** + * required fixed64 dev = 1; + * + *
+       * device number; represented by a hash of the volume id
+       * 
+ */ public long getDev() { - return result.getDev(); - } + return dev_; + } + /** + * required fixed64 dev = 1; + * + *
+       * device number; represented by a hash of the volume id
+       * 
+ */ public Builder setDev(long value) { - result.hasDev = true; - result.dev_ = value; - return this; - } + bitField0_ |= 0x00000001; + dev_ = value; + onChanged(); + return this; + } + /** + * required fixed64 dev = 1; + * + *
+       * device number; represented by a hash of the volume id
+       * 
+ */ public Builder clearDev() { - result.hasDev = false; - result.dev_ = 0L; + bitField0_ = (bitField0_ & ~0x00000001); + dev_ = 0L; + onChanged(); return this; } - + // required fixed64 ino = 2; + private long ino_ ; + /** + * required fixed64 ino = 2; + * + *
+       * inode number; represented by the file ID
+       * 
+ */ public boolean hasIno() { - return result.hasIno(); - } + return ((bitField0_ & 0x00000002) == 0x00000002); + } + /** + * required fixed64 ino = 2; + * + *
+       * inode number; represented by the file ID
+       * 
+ */ public long getIno() { - return result.getIno(); - } + return ino_; + } + /** + * required fixed64 ino = 2; + * + *
+       * inode number; represented by the file ID
+       * 
+ */ public Builder setIno(long value) { - result.hasIno = true; - result.ino_ = value; - return this; - } + bitField0_ |= 0x00000002; + ino_ = value; + onChanged(); + return this; + } + /** + * required fixed64 ino = 2; + * + *
+       * inode number; represented by the file ID
+       * 
+ */ public Builder clearIno() { - result.hasIno = false; - result.ino_ = 0L; + bitField0_ = (bitField0_ & ~0x00000002); + ino_ = 0L; + onChanged(); return this; } - + // required fixed32 mode = 3; + private int mode_ ; + /** + * required fixed32 mode = 3; + * + *
+       * POSIX access mode
+       * 
+ */ public boolean hasMode() { - return result.hasMode(); - } + return ((bitField0_ & 0x00000004) == 0x00000004); + } + /** + * required fixed32 mode = 3; + * + *
+       * POSIX access mode
+       * 
+ */ public int getMode() { - return result.getMode(); - } + return mode_; + } + /** + * required fixed32 mode = 3; + * + *
+       * POSIX access mode
+       * 
+ */ public Builder setMode(int value) { - result.hasMode = true; - result.mode_ = value; - return this; - } + bitField0_ |= 0x00000004; + mode_ = value; + onChanged(); + return this; + } + /** + * required fixed32 mode = 3; + * + *
+       * POSIX access mode
+       * 
+ */ public Builder clearMode() { - result.hasMode = false; - result.mode_ = 0; + bitField0_ = (bitField0_ & ~0x00000004); + mode_ = 0; + onChanged(); return this; } - + // required fixed32 nlink = 4; + private int nlink_ ; + /** + * required fixed32 nlink = 4; + * + *
+       * hardlink count
+       * 
+ */ public boolean hasNlink() { - return result.hasNlink(); - } + return ((bitField0_ & 0x00000008) == 0x00000008); + } + /** + * required fixed32 nlink = 4; + * + *
+       * hardlink count
+       * 
+ */ public int getNlink() { - return result.getNlink(); - } + return nlink_; + } + /** + * required fixed32 nlink = 4; + * + *
+       * hardlink count
+       * 
+ */ public Builder setNlink(int value) { - result.hasNlink = true; - result.nlink_ = value; - return this; - } + bitField0_ |= 0x00000008; + nlink_ = value; + onChanged(); + return this; + } + /** + * required fixed32 nlink = 4; + * + *
+       * hardlink count
+       * 
+ */ public Builder clearNlink() { - result.hasNlink = false; - result.nlink_ = 0; + bitField0_ = (bitField0_ & ~0x00000008); + nlink_ = 0; + onChanged(); return this; } - + // required string user_id = 5; + private java.lang.Object userId_ = ""; + /** + * required string user_id = 5; + * + *
+       * owning user ID
+       * 
+ */ public boolean hasUserId() { - return result.hasUserId(); - } + return ((bitField0_ & 0x00000010) == 0x00000010); + } + /** + * required string user_id = 5; + * + *
+       * owning user ID
+       * 
+ */ public java.lang.String getUserId() { - return result.getUserId(); - } - public Builder setUserId(java.lang.String value) { + java.lang.Object ref = userId_; + if (!(ref instanceof java.lang.String)) { + java.lang.String s = ((com.google.protobuf.ByteString) ref) + .toStringUtf8(); + userId_ = s; + return s; + } else { + return (java.lang.String) ref; + } + } + /** + * required string user_id = 5; + * + *
+       * owning user ID
+       * 
+ */ + public com.google.protobuf.ByteString + getUserIdBytes() { + java.lang.Object ref = userId_; + if (ref instanceof String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + userId_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + /** + * required string user_id = 5; + * + *
+       * owning user ID
+       * 
+ */ + public Builder setUserId( + java.lang.String value) { if (value == null) { throw new NullPointerException(); } - result.hasUserId = true; - result.userId_ = value; - return this; - } + bitField0_ |= 0x00000010; + userId_ = value; + onChanged(); + return this; + } + /** + * required string user_id = 5; + * + *
+       * owning user ID
+       * 
+ */ public Builder clearUserId() { - result.hasUserId = false; - result.userId_ = getDefaultInstance().getUserId(); + bitField0_ = (bitField0_ & ~0x00000010); + userId_ = getDefaultInstance().getUserId(); + onChanged(); + return this; + } + /** + * required string user_id = 5; + * + *
+       * owning user ID
+       * 
+ */ + public Builder setUserIdBytes( + com.google.protobuf.ByteString value) { + if (value == null) { + throw new NullPointerException(); + } + bitField0_ |= 0x00000010; + userId_ = value; + onChanged(); return this; } - + // required string group_id = 6; + private java.lang.Object groupId_ = ""; + /** + * required string group_id = 6; + * + *
+       * owning group ID
+       * 
+ */ public boolean hasGroupId() { - return result.hasGroupId(); - } + return ((bitField0_ & 0x00000020) == 0x00000020); + } + /** + * required string group_id = 6; + * + *
+       * owning group ID
+       * 
+ */ public java.lang.String getGroupId() { - return result.getGroupId(); - } - public Builder setGroupId(java.lang.String value) { + java.lang.Object ref = groupId_; + if (!(ref instanceof java.lang.String)) { + java.lang.String s = ((com.google.protobuf.ByteString) ref) + .toStringUtf8(); + groupId_ = s; + return s; + } else { + return (java.lang.String) ref; + } + } + /** + * required string group_id = 6; + * + *
+       * owning group ID
+       * 
+ */ + public com.google.protobuf.ByteString + getGroupIdBytes() { + java.lang.Object ref = groupId_; + if (ref instanceof String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + groupId_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + /** + * required string group_id = 6; + * + *
+       * owning group ID
+       * 
+ */ + public Builder setGroupId( + java.lang.String value) { if (value == null) { throw new NullPointerException(); } - result.hasGroupId = true; - result.groupId_ = value; - return this; - } + bitField0_ |= 0x00000020; + groupId_ = value; + onChanged(); + return this; + } + /** + * required string group_id = 6; + * + *
+       * owning group ID
+       * 
+ */ public Builder clearGroupId() { - result.hasGroupId = false; - result.groupId_ = getDefaultInstance().getGroupId(); + bitField0_ = (bitField0_ & ~0x00000020); + groupId_ = getDefaultInstance().getGroupId(); + onChanged(); + return this; + } + /** + * required string group_id = 6; + * + *
+       * owning group ID
+       * 
+ */ + public Builder setGroupIdBytes( + com.google.protobuf.ByteString value) { + if (value == null) { + throw new NullPointerException(); + } + bitField0_ |= 0x00000020; + groupId_ = value; + onChanged(); return this; } - + // required fixed64 size = 7; + private long size_ ; + /** + * required fixed64 size = 7; + * + *
+       * file size
+       * 
+ */ public boolean hasSize() { - return result.hasSize(); - } + return ((bitField0_ & 0x00000040) == 0x00000040); + } + /** + * required fixed64 size = 7; + * + *
+       * file size
+       * 
+ */ public long getSize() { - return result.getSize(); - } + return size_; + } + /** + * required fixed64 size = 7; + * + *
+       * file size
+       * 
+ */ public Builder setSize(long value) { - result.hasSize = true; - result.size_ = value; - return this; - } + bitField0_ |= 0x00000040; + size_ = value; + onChanged(); + return this; + } + /** + * required fixed64 size = 7; + * + *
+       * file size
+       * 
+ */ public Builder clearSize() { - result.hasSize = false; - result.size_ = 0L; + bitField0_ = (bitField0_ & ~0x00000040); + size_ = 0L; + onChanged(); return this; } - + // required fixed64 atime_ns = 8; + private long atimeNs_ ; + /** + * required fixed64 atime_ns = 8; + * + *
+       * atime (access time) in nanoseconds since 1970
+       * 
+ */ public boolean hasAtimeNs() { - return result.hasAtimeNs(); - } + return ((bitField0_ & 0x00000080) == 0x00000080); + } + /** + * required fixed64 atime_ns = 8; + * + *
+       * atime (access time) in nanoseconds since 1970
+       * 
+ */ public long getAtimeNs() { - return result.getAtimeNs(); - } + return atimeNs_; + } + /** + * required fixed64 atime_ns = 8; + * + *
+       * atime (access time) in nanoseconds since 1970
+       * 
+ */ public Builder setAtimeNs(long value) { - result.hasAtimeNs = true; - result.atimeNs_ = value; - return this; - } + bitField0_ |= 0x00000080; + atimeNs_ = value; + onChanged(); + return this; + } + /** + * required fixed64 atime_ns = 8; + * + *
+       * atime (access time) in nanoseconds since 1970
+       * 
+ */ public Builder clearAtimeNs() { - result.hasAtimeNs = false; - result.atimeNs_ = 0L; + bitField0_ = (bitField0_ & ~0x00000080); + atimeNs_ = 0L; + onChanged(); return this; } - + // required fixed64 mtime_ns = 9; + private long mtimeNs_ ; + /** + * required fixed64 mtime_ns = 9; + * + *
+       * mtime (data modification time) in nanoseconds since 1970
+       * 
+ */ public boolean hasMtimeNs() { - return result.hasMtimeNs(); - } + return ((bitField0_ & 0x00000100) == 0x00000100); + } + /** + * required fixed64 mtime_ns = 9; + * + *
+       * mtime (data modification time) in nanoseconds since 1970
+       * 
+ */ public long getMtimeNs() { - return result.getMtimeNs(); - } + return mtimeNs_; + } + /** + * required fixed64 mtime_ns = 9; + * + *
+       * mtime (data modification time) in nanoseconds since 1970
+       * 
+ */ public Builder setMtimeNs(long value) { - result.hasMtimeNs = true; - result.mtimeNs_ = value; - return this; - } + bitField0_ |= 0x00000100; + mtimeNs_ = value; + onChanged(); + return this; + } + /** + * required fixed64 mtime_ns = 9; + * + *
+       * mtime (data modification time) in nanoseconds since 1970
+       * 
+ */ public Builder clearMtimeNs() { - result.hasMtimeNs = false; - result.mtimeNs_ = 0L; + bitField0_ = (bitField0_ & ~0x00000100); + mtimeNs_ = 0L; + onChanged(); return this; } - + // required fixed64 ctime_ns = 10; + private long ctimeNs_ ; + /** + * required fixed64 ctime_ns = 10; + * + *
+       * ctime (inode change time) in nanoseconds since 1970
+       * 
+ */ public boolean hasCtimeNs() { - return result.hasCtimeNs(); - } + return ((bitField0_ & 0x00000200) == 0x00000200); + } + /** + * required fixed64 ctime_ns = 10; + * + *
+       * ctime (inode change time) in nanoseconds since 1970
+       * 
+ */ public long getCtimeNs() { - return result.getCtimeNs(); - } + return ctimeNs_; + } + /** + * required fixed64 ctime_ns = 10; + * + *
+       * ctime (inode change time) in nanoseconds since 1970
+       * 
+ */ public Builder setCtimeNs(long value) { - result.hasCtimeNs = true; - result.ctimeNs_ = value; - return this; - } + bitField0_ |= 0x00000200; + ctimeNs_ = value; + onChanged(); + return this; + } + /** + * required fixed64 ctime_ns = 10; + * + *
+       * ctime (inode change time) in nanoseconds since 1970
+       * 
+ */ public Builder clearCtimeNs() { - result.hasCtimeNs = false; - result.ctimeNs_ = 0L; + bitField0_ = (bitField0_ & ~0x00000200); + ctimeNs_ = 0L; + onChanged(); return this; } - + // required fixed32 blksize = 11; + private int blksize_ ; + /** + * required fixed32 blksize = 11; + * + *
+       * block size; represented by the stripe size
+       * 
+ */ public boolean hasBlksize() { - return result.hasBlksize(); - } + return ((bitField0_ & 0x00000400) == 0x00000400); + } + /** + * required fixed32 blksize = 11; + * + *
+       * block size; represented by the stripe size
+       * 
+ */ public int getBlksize() { - return result.getBlksize(); - } + return blksize_; + } + /** + * required fixed32 blksize = 11; + * + *
+       * block size; represented by the stripe size
+       * 
+ */ public Builder setBlksize(int value) { - result.hasBlksize = true; - result.blksize_ = value; - return this; - } + bitField0_ |= 0x00000400; + blksize_ = value; + onChanged(); + return this; + } + /** + * required fixed32 blksize = 11; + * + *
+       * block size; represented by the stripe size
+       * 
+ */ public Builder clearBlksize() { - result.hasBlksize = false; - result.blksize_ = 0; + bitField0_ = (bitField0_ & ~0x00000400); + blksize_ = 0; + onChanged(); return this; } - + // optional fixed64 etag = 12; + private long etag_ ; + /** + * optional fixed64 etag = 12; + * + *
+       * identification tag for the stat object
+       * 
+ */ public boolean hasEtag() { - return result.hasEtag(); - } + return ((bitField0_ & 0x00000800) == 0x00000800); + } + /** + * optional fixed64 etag = 12; + * + *
+       * identification tag for the stat object
+       * 
+ */ public long getEtag() { - return result.getEtag(); - } + return etag_; + } + /** + * optional fixed64 etag = 12; + * + *
+       * identification tag for the stat object
+       * 
+ */ public Builder setEtag(long value) { - result.hasEtag = true; - result.etag_ = value; - return this; - } + bitField0_ |= 0x00000800; + etag_ = value; + onChanged(); + return this; + } + /** + * optional fixed64 etag = 12; + * + *
+       * identification tag for the stat object
+       * 
+ */ public Builder clearEtag() { - result.hasEtag = false; - result.etag_ = 0L; + bitField0_ = (bitField0_ & ~0x00000800); + etag_ = 0L; + onChanged(); return this; } - + // required fixed32 truncate_epoch = 13; + private int truncateEpoch_ ; + /** + * required fixed32 truncate_epoch = 13; + * + *
+       * truncate epoch
+       * 
+ */ public boolean hasTruncateEpoch() { - return result.hasTruncateEpoch(); - } + return ((bitField0_ & 0x00001000) == 0x00001000); + } + /** + * required fixed32 truncate_epoch = 13; + * + *
+       * truncate epoch
+       * 
+ */ public int getTruncateEpoch() { - return result.getTruncateEpoch(); - } + return truncateEpoch_; + } + /** + * required fixed32 truncate_epoch = 13; + * + *
+       * truncate epoch
+       * 
+ */ public Builder setTruncateEpoch(int value) { - result.hasTruncateEpoch = true; - result.truncateEpoch_ = value; - return this; - } + bitField0_ |= 0x00001000; + truncateEpoch_ = value; + onChanged(); + return this; + } + /** + * required fixed32 truncate_epoch = 13; + * + *
+       * truncate epoch
+       * 
+ */ public Builder clearTruncateEpoch() { - result.hasTruncateEpoch = false; - result.truncateEpoch_ = 0; + bitField0_ = (bitField0_ & ~0x00001000); + truncateEpoch_ = 0; + onChanged(); return this; } - + // optional fixed32 attributes = 14; + private int attributes_ ; + /** + * optional fixed32 attributes = 14; + * + *
+       * Win32-specific attributes
+       * 
+ */ public boolean hasAttributes() { - return result.hasAttributes(); - } + return ((bitField0_ & 0x00002000) == 0x00002000); + } + /** + * optional fixed32 attributes = 14; + * + *
+       * Win32-specific attributes
+       * 
+ */ public int getAttributes() { - return result.getAttributes(); - } + return attributes_; + } + /** + * optional fixed32 attributes = 14; + * + *
+       * Win32-specific attributes
+       * 
+ */ public Builder setAttributes(int value) { - result.hasAttributes = true; - result.attributes_ = value; - return this; - } + bitField0_ |= 0x00002000; + attributes_ = value; + onChanged(); + return this; + } + /** + * optional fixed32 attributes = 14; + * + *
+       * Win32-specific attributes
+       * 
+ */ public Builder clearAttributes() { - result.hasAttributes = false; - result.attributes_ = 0; + bitField0_ = (bitField0_ & ~0x00002000); + attributes_ = 0; + onChanged(); return this; } - + // @@protoc_insertion_point(builder_scope:xtreemfs.pbrpc.Stat) } - + static { defaultInstance = new Stat(true); - org.xtreemfs.pbrpc.generatedinterfaces.MRC.internalForceInit(); defaultInstance.initFields(); } - + // @@protoc_insertion_point(class_scope:xtreemfs.pbrpc.Stat) } - + + public interface DirectoryEntryOrBuilder + extends com.google.protobuf.MessageOrBuilder { + + // required string name = 1; + /** + * required string name = 1; + * + *
+     * file or subdirectory name
+     * 
+ */ + boolean hasName(); + /** + * required string name = 1; + * + *
+     * file or subdirectory name
+     * 
+ */ + java.lang.String getName(); + /** + * required string name = 1; + * + *
+     * file or subdirectory name
+     * 
+ */ + com.google.protobuf.ByteString + getNameBytes(); + + // optional .xtreemfs.pbrpc.Stat stbuf = 2; + /** + * optional .xtreemfs.pbrpc.Stat stbuf = 2; + * + *
+     * stat buffer containing the associated stat information
+     * Can have 0 or 1 Stats on a readdir for names only
+     * 
+ */ + boolean hasStbuf(); + /** + * optional .xtreemfs.pbrpc.Stat stbuf = 2; + * + *
+     * stat buffer containing the associated stat information
+     * Can have 0 or 1 Stats on a readdir for names only
+     * 
+ */ + org.xtreemfs.pbrpc.generatedinterfaces.MRC.Stat getStbuf(); + /** + * optional .xtreemfs.pbrpc.Stat stbuf = 2; + * + *
+     * stat buffer containing the associated stat information
+     * Can have 0 or 1 Stats on a readdir for names only
+     * 
+ */ + org.xtreemfs.pbrpc.generatedinterfaces.MRC.StatOrBuilder getStbufOrBuilder(); + } + /** + * Protobuf type {@code xtreemfs.pbrpc.DirectoryEntry} + * + *
+   * single directory entry; relevant for the 'readdir' call
+   * 
+ */ public static final class DirectoryEntry extends - com.google.protobuf.GeneratedMessage { + com.google.protobuf.GeneratedMessage + implements DirectoryEntryOrBuilder { // Use DirectoryEntry.newBuilder() to construct. - private DirectoryEntry() { - initFields(); + private DirectoryEntry(com.google.protobuf.GeneratedMessage.Builder builder) { + super(builder); + this.unknownFields = builder.getUnknownFields(); } - private DirectoryEntry(boolean noInit) {} - + private DirectoryEntry(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); } + private static final DirectoryEntry defaultInstance; public static DirectoryEntry getDefaultInstance() { return defaultInstance; } - + public DirectoryEntry getDefaultInstanceForType() { return defaultInstance; } - + + private final com.google.protobuf.UnknownFieldSet unknownFields; + @java.lang.Override + public final com.google.protobuf.UnknownFieldSet + getUnknownFields() { + return this.unknownFields; + } + private DirectoryEntry( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + initFields(); + int mutable_bitField0_ = 0; + com.google.protobuf.UnknownFieldSet.Builder unknownFields = + com.google.protobuf.UnknownFieldSet.newBuilder(); + try { + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch (tag) { + case 0: + done = true; + break; + default: { + if (!parseUnknownField(input, unknownFields, + extensionRegistry, tag)) { + done = true; + } + break; + } + case 10: { + bitField0_ |= 0x00000001; + name_ = input.readBytes(); + break; + } + case 18: { + org.xtreemfs.pbrpc.generatedinterfaces.MRC.Stat.Builder subBuilder = null; + if (((bitField0_ & 0x00000002) == 0x00000002)) { + subBuilder = stbuf_.toBuilder(); + } + stbuf_ = input.readMessage(org.xtreemfs.pbrpc.generatedinterfaces.MRC.Stat.PARSER, extensionRegistry); + if (subBuilder != null) { + subBuilder.mergeFrom(stbuf_); + stbuf_ = subBuilder.buildPartial(); + } + bitField0_ |= 0x00000002; + break; + } + } + } + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(this); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException( + e.getMessage()).setUnfinishedMessage(this); + } finally { + this.unknownFields = unknownFields.build(); + makeExtensionsImmutable(); + } + } public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { return org.xtreemfs.pbrpc.generatedinterfaces.MRC.internal_static_xtreemfs_pbrpc_DirectoryEntry_descriptor; } - + protected com.google.protobuf.GeneratedMessage.FieldAccessorTable internalGetFieldAccessorTable() { - return org.xtreemfs.pbrpc.generatedinterfaces.MRC.internal_static_xtreemfs_pbrpc_DirectoryEntry_fieldAccessorTable; + return org.xtreemfs.pbrpc.generatedinterfaces.MRC.internal_static_xtreemfs_pbrpc_DirectoryEntry_fieldAccessorTable + .ensureFieldAccessorsInitialized( + org.xtreemfs.pbrpc.generatedinterfaces.MRC.DirectoryEntry.class, org.xtreemfs.pbrpc.generatedinterfaces.MRC.DirectoryEntry.Builder.class); + } + + public static com.google.protobuf.Parser PARSER = + new com.google.protobuf.AbstractParser() { + public DirectoryEntry parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return new DirectoryEntry(input, extensionRegistry); + } + }; + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; } - + + private int bitField0_; // required string name = 1; public static final int NAME_FIELD_NUMBER = 1; - private boolean hasName; - private java.lang.String name_ = ""; - public boolean hasName() { return hasName; } - public java.lang.String getName() { return name_; } - + private java.lang.Object name_; + /** + * required string name = 1; + * + *
+     * file or subdirectory name
+     * 
+ */ + public boolean hasName() { + return ((bitField0_ & 0x00000001) == 0x00000001); + } + /** + * required string name = 1; + * + *
+     * file or subdirectory name
+     * 
+ */ + public java.lang.String getName() { + java.lang.Object ref = name_; + if (ref instanceof java.lang.String) { + return (java.lang.String) ref; + } else { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + if (bs.isValidUtf8()) { + name_ = s; + } + return s; + } + } + /** + * required string name = 1; + * + *
+     * file or subdirectory name
+     * 
+ */ + public com.google.protobuf.ByteString + getNameBytes() { + java.lang.Object ref = name_; + if (ref instanceof java.lang.String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + name_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + // optional .xtreemfs.pbrpc.Stat stbuf = 2; public static final int STBUF_FIELD_NUMBER = 2; - private boolean hasStbuf; private org.xtreemfs.pbrpc.generatedinterfaces.MRC.Stat stbuf_; - public boolean hasStbuf() { return hasStbuf; } - public org.xtreemfs.pbrpc.generatedinterfaces.MRC.Stat getStbuf() { return stbuf_; } - + /** + * optional .xtreemfs.pbrpc.Stat stbuf = 2; + * + *
+     * stat buffer containing the associated stat information
+     * Can have 0 or 1 Stats on a readdir for names only
+     * 
+ */ + public boolean hasStbuf() { + return ((bitField0_ & 0x00000002) == 0x00000002); + } + /** + * optional .xtreemfs.pbrpc.Stat stbuf = 2; + * + *
+     * stat buffer containing the associated stat information
+     * Can have 0 or 1 Stats on a readdir for names only
+     * 
+ */ + public org.xtreemfs.pbrpc.generatedinterfaces.MRC.Stat getStbuf() { + return stbuf_; + } + /** + * optional .xtreemfs.pbrpc.Stat stbuf = 2; + * + *
+     * stat buffer containing the associated stat information
+     * Can have 0 or 1 Stats on a readdir for names only
+     * 
+ */ + public org.xtreemfs.pbrpc.generatedinterfaces.MRC.StatOrBuilder getStbufOrBuilder() { + return stbuf_; + } + private void initFields() { + name_ = ""; stbuf_ = org.xtreemfs.pbrpc.generatedinterfaces.MRC.Stat.getDefaultInstance(); } + private byte memoizedIsInitialized = -1; public final boolean isInitialized() { - if (!hasName) return false; + byte isInitialized = memoizedIsInitialized; + if (isInitialized != -1) return isInitialized == 1; + + if (!hasName()) { + memoizedIsInitialized = 0; + return false; + } if (hasStbuf()) { - if (!getStbuf().isInitialized()) return false; + if (!getStbuf().isInitialized()) { + memoizedIsInitialized = 0; + return false; + } } + memoizedIsInitialized = 1; return true; } - + public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException { getSerializedSize(); - if (hasName()) { - output.writeString(1, getName()); + if (((bitField0_ & 0x00000001) == 0x00000001)) { + output.writeBytes(1, getNameBytes()); } - if (hasStbuf()) { - output.writeMessage(2, getStbuf()); + if (((bitField0_ & 0x00000002) == 0x00000002)) { + output.writeMessage(2, stbuf_); } getUnknownFields().writeTo(output); } - + private int memoizedSerializedSize = -1; public int getSerializedSize() { int size = memoizedSerializedSize; if (size != -1) return size; - + size = 0; - if (hasName()) { + if (((bitField0_ & 0x00000001) == 0x00000001)) { size += com.google.protobuf.CodedOutputStream - .computeStringSize(1, getName()); + .computeBytesSize(1, getNameBytes()); } - if (hasStbuf()) { + if (((bitField0_ & 0x00000002) == 0x00000002)) { size += com.google.protobuf.CodedOutputStream - .computeMessageSize(2, getStbuf()); + .computeMessageSize(2, stbuf_); } size += getUnknownFields().getSerializedSize(); memoizedSerializedSize = size; return size; } - + + private static final long serialVersionUID = 0L; + @java.lang.Override + protected java.lang.Object writeReplace() + throws java.io.ObjectStreamException { + return super.writeReplace(); + } + public static org.xtreemfs.pbrpc.generatedinterfaces.MRC.DirectoryEntry parseFrom( com.google.protobuf.ByteString data) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data).buildParsed(); + return PARSER.parseFrom(data); } public static org.xtreemfs.pbrpc.generatedinterfaces.MRC.DirectoryEntry parseFrom( com.google.protobuf.ByteString data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(data, extensionRegistry); } public static org.xtreemfs.pbrpc.generatedinterfaces.MRC.DirectoryEntry parseFrom(byte[] data) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data).buildParsed(); + return PARSER.parseFrom(data); } public static org.xtreemfs.pbrpc.generatedinterfaces.MRC.DirectoryEntry parseFrom( byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(data, extensionRegistry); } public static org.xtreemfs.pbrpc.generatedinterfaces.MRC.DirectoryEntry parseFrom(java.io.InputStream input) throws java.io.IOException { - return newBuilder().mergeFrom(input).buildParsed(); + return PARSER.parseFrom(input); } public static org.xtreemfs.pbrpc.generatedinterfaces.MRC.DirectoryEntry parseFrom( java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - return newBuilder().mergeFrom(input, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(input, extensionRegistry); } public static org.xtreemfs.pbrpc.generatedinterfaces.MRC.DirectoryEntry parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException { - Builder builder = newBuilder(); - if (builder.mergeDelimitedFrom(input)) { - return builder.buildParsed(); - } else { - return null; - } + return PARSER.parseDelimitedFrom(input); } public static org.xtreemfs.pbrpc.generatedinterfaces.MRC.DirectoryEntry parseDelimitedFrom( java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - Builder builder = newBuilder(); - if (builder.mergeDelimitedFrom(input, extensionRegistry)) { - return builder.buildParsed(); - } else { - return null; - } + return PARSER.parseDelimitedFrom(input, extensionRegistry); } public static org.xtreemfs.pbrpc.generatedinterfaces.MRC.DirectoryEntry parseFrom( com.google.protobuf.CodedInputStream input) throws java.io.IOException { - return newBuilder().mergeFrom(input).buildParsed(); + return PARSER.parseFrom(input); } public static org.xtreemfs.pbrpc.generatedinterfaces.MRC.DirectoryEntry parseFrom( com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - return newBuilder().mergeFrom(input, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(input, extensionRegistry); } - + public static Builder newBuilder() { return Builder.create(); } public Builder newBuilderForType() { return newBuilder(); } public static Builder newBuilder(org.xtreemfs.pbrpc.generatedinterfaces.MRC.DirectoryEntry prototype) { return newBuilder().mergeFrom(prototype); } public Builder toBuilder() { return newBuilder(this); } - + + @java.lang.Override + protected Builder newBuilderForType( + com.google.protobuf.GeneratedMessage.BuilderParent parent) { + Builder builder = new Builder(parent); + return builder; + } + /** + * Protobuf type {@code xtreemfs.pbrpc.DirectoryEntry} + * + *
+     * single directory entry; relevant for the 'readdir' call
+     * 
+ */ public static final class Builder extends - com.google.protobuf.GeneratedMessage.Builder { - private org.xtreemfs.pbrpc.generatedinterfaces.MRC.DirectoryEntry result; - + com.google.protobuf.GeneratedMessage.Builder + implements org.xtreemfs.pbrpc.generatedinterfaces.MRC.DirectoryEntryOrBuilder { + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return org.xtreemfs.pbrpc.generatedinterfaces.MRC.internal_static_xtreemfs_pbrpc_DirectoryEntry_descriptor; + } + + protected com.google.protobuf.GeneratedMessage.FieldAccessorTable + internalGetFieldAccessorTable() { + return org.xtreemfs.pbrpc.generatedinterfaces.MRC.internal_static_xtreemfs_pbrpc_DirectoryEntry_fieldAccessorTable + .ensureFieldAccessorsInitialized( + org.xtreemfs.pbrpc.generatedinterfaces.MRC.DirectoryEntry.class, org.xtreemfs.pbrpc.generatedinterfaces.MRC.DirectoryEntry.Builder.class); + } + // Construct using org.xtreemfs.pbrpc.generatedinterfaces.MRC.DirectoryEntry.newBuilder() - private Builder() {} - - private static Builder create() { - Builder builder = new Builder(); - builder.result = new org.xtreemfs.pbrpc.generatedinterfaces.MRC.DirectoryEntry(); - return builder; + private Builder() { + maybeForceBuilderInitialization(); } - - protected org.xtreemfs.pbrpc.generatedinterfaces.MRC.DirectoryEntry internalGetResult() { - return result; + + private Builder( + com.google.protobuf.GeneratedMessage.BuilderParent parent) { + super(parent); + maybeForceBuilderInitialization(); + } + private void maybeForceBuilderInitialization() { + if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) { + getStbufFieldBuilder(); + } + } + private static Builder create() { + return new Builder(); } - + public Builder clear() { - if (result == null) { - throw new IllegalStateException( - "Cannot call clear() after build()."); + super.clear(); + name_ = ""; + bitField0_ = (bitField0_ & ~0x00000001); + if (stbufBuilder_ == null) { + stbuf_ = org.xtreemfs.pbrpc.generatedinterfaces.MRC.Stat.getDefaultInstance(); + } else { + stbufBuilder_.clear(); } - result = new org.xtreemfs.pbrpc.generatedinterfaces.MRC.DirectoryEntry(); + bitField0_ = (bitField0_ & ~0x00000002); return this; } - + public Builder clone() { - return create().mergeFrom(result); + return create().mergeFrom(buildPartial()); } - + public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() { - return org.xtreemfs.pbrpc.generatedinterfaces.MRC.DirectoryEntry.getDescriptor(); + return org.xtreemfs.pbrpc.generatedinterfaces.MRC.internal_static_xtreemfs_pbrpc_DirectoryEntry_descriptor; } - + public org.xtreemfs.pbrpc.generatedinterfaces.MRC.DirectoryEntry getDefaultInstanceForType() { return org.xtreemfs.pbrpc.generatedinterfaces.MRC.DirectoryEntry.getDefaultInstance(); } - - public boolean isInitialized() { - return result.isInitialized(); - } + public org.xtreemfs.pbrpc.generatedinterfaces.MRC.DirectoryEntry build() { - if (result != null && !isInitialized()) { + org.xtreemfs.pbrpc.generatedinterfaces.MRC.DirectoryEntry result = buildPartial(); + if (!result.isInitialized()) { throw newUninitializedMessageException(result); } - return buildPartial(); - } - - private org.xtreemfs.pbrpc.generatedinterfaces.MRC.DirectoryEntry buildParsed() - throws com.google.protobuf.InvalidProtocolBufferException { - if (!isInitialized()) { - throw newUninitializedMessageException( - result).asInvalidProtocolBufferException(); - } - return buildPartial(); + return result; } - + public org.xtreemfs.pbrpc.generatedinterfaces.MRC.DirectoryEntry buildPartial() { - if (result == null) { - throw new IllegalStateException( - "build() has already been called on this Builder."); + org.xtreemfs.pbrpc.generatedinterfaces.MRC.DirectoryEntry result = new org.xtreemfs.pbrpc.generatedinterfaces.MRC.DirectoryEntry(this); + int from_bitField0_ = bitField0_; + int to_bitField0_ = 0; + if (((from_bitField0_ & 0x00000001) == 0x00000001)) { + to_bitField0_ |= 0x00000001; + } + result.name_ = name_; + if (((from_bitField0_ & 0x00000002) == 0x00000002)) { + to_bitField0_ |= 0x00000002; + } + if (stbufBuilder_ == null) { + result.stbuf_ = stbuf_; + } else { + result.stbuf_ = stbufBuilder_.build(); } - org.xtreemfs.pbrpc.generatedinterfaces.MRC.DirectoryEntry returnMe = result; - result = null; - return returnMe; + result.bitField0_ = to_bitField0_; + onBuilt(); + return result; } - + public Builder mergeFrom(com.google.protobuf.Message other) { if (other instanceof org.xtreemfs.pbrpc.generatedinterfaces.MRC.DirectoryEntry) { return mergeFrom((org.xtreemfs.pbrpc.generatedinterfaces.MRC.DirectoryEntry)other); @@ -1267,11 +3048,13 @@ public final class MRC { return this; } } - + public Builder mergeFrom(org.xtreemfs.pbrpc.generatedinterfaces.MRC.DirectoryEntry other) { if (other == org.xtreemfs.pbrpc.generatedinterfaces.MRC.DirectoryEntry.getDefaultInstance()) return this; if (other.hasName()) { - setName(other.getName()); + bitField0_ |= 0x00000001; + name_ = other.name_; + onChanged(); } if (other.hasStbuf()) { mergeStbuf(other.getStbuf()); @@ -1279,334 +3062,684 @@ public final class MRC { this.mergeUnknownFields(other.getUnknownFields()); return this; } - + + public final boolean isInitialized() { + if (!hasName()) { + + return false; + } + if (hasStbuf()) { + if (!getStbuf().isInitialized()) { + + return false; + } + } + return true; + } + public Builder mergeFrom( com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - com.google.protobuf.UnknownFieldSet.Builder unknownFields = - com.google.protobuf.UnknownFieldSet.newBuilder( - this.getUnknownFields()); - while (true) { - int tag = input.readTag(); - switch (tag) { - case 0: - this.setUnknownFields(unknownFields.build()); - return this; - default: { - if (!parseUnknownField(input, unknownFields, - extensionRegistry, tag)) { - this.setUnknownFields(unknownFields.build()); - return this; - } - break; - } - case 10: { - setName(input.readString()); - break; - } - case 18: { - org.xtreemfs.pbrpc.generatedinterfaces.MRC.Stat.Builder subBuilder = org.xtreemfs.pbrpc.generatedinterfaces.MRC.Stat.newBuilder(); - if (hasStbuf()) { - subBuilder.mergeFrom(getStbuf()); - } - input.readMessage(subBuilder, extensionRegistry); - setStbuf(subBuilder.buildPartial()); - break; - } + org.xtreemfs.pbrpc.generatedinterfaces.MRC.DirectoryEntry parsedMessage = null; + try { + parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + parsedMessage = (org.xtreemfs.pbrpc.generatedinterfaces.MRC.DirectoryEntry) e.getUnfinishedMessage(); + throw e; + } finally { + if (parsedMessage != null) { + mergeFrom(parsedMessage); } } + return this; } - - + private int bitField0_; + // required string name = 1; + private java.lang.Object name_ = ""; + /** + * required string name = 1; + * + *
+       * file or subdirectory name
+       * 
+ */ public boolean hasName() { - return result.hasName(); - } + return ((bitField0_ & 0x00000001) == 0x00000001); + } + /** + * required string name = 1; + * + *
+       * file or subdirectory name
+       * 
+ */ public java.lang.String getName() { - return result.getName(); - } - public Builder setName(java.lang.String value) { + java.lang.Object ref = name_; + if (!(ref instanceof java.lang.String)) { + java.lang.String s = ((com.google.protobuf.ByteString) ref) + .toStringUtf8(); + name_ = s; + return s; + } else { + return (java.lang.String) ref; + } + } + /** + * required string name = 1; + * + *
+       * file or subdirectory name
+       * 
+ */ + public com.google.protobuf.ByteString + getNameBytes() { + java.lang.Object ref = name_; + if (ref instanceof String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + name_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + /** + * required string name = 1; + * + *
+       * file or subdirectory name
+       * 
+ */ + public Builder setName( + java.lang.String value) { if (value == null) { throw new NullPointerException(); } - result.hasName = true; - result.name_ = value; - return this; - } + bitField0_ |= 0x00000001; + name_ = value; + onChanged(); + return this; + } + /** + * required string name = 1; + * + *
+       * file or subdirectory name
+       * 
+ */ public Builder clearName() { - result.hasName = false; - result.name_ = getDefaultInstance().getName(); + bitField0_ = (bitField0_ & ~0x00000001); + name_ = getDefaultInstance().getName(); + onChanged(); + return this; + } + /** + * required string name = 1; + * + *
+       * file or subdirectory name
+       * 
+ */ + public Builder setNameBytes( + com.google.protobuf.ByteString value) { + if (value == null) { + throw new NullPointerException(); + } + bitField0_ |= 0x00000001; + name_ = value; + onChanged(); return this; } - + // optional .xtreemfs.pbrpc.Stat stbuf = 2; + private org.xtreemfs.pbrpc.generatedinterfaces.MRC.Stat stbuf_ = org.xtreemfs.pbrpc.generatedinterfaces.MRC.Stat.getDefaultInstance(); + private com.google.protobuf.SingleFieldBuilder< + org.xtreemfs.pbrpc.generatedinterfaces.MRC.Stat, org.xtreemfs.pbrpc.generatedinterfaces.MRC.Stat.Builder, org.xtreemfs.pbrpc.generatedinterfaces.MRC.StatOrBuilder> stbufBuilder_; + /** + * optional .xtreemfs.pbrpc.Stat stbuf = 2; + * + *
+       * stat buffer containing the associated stat information
+       * Can have 0 or 1 Stats on a readdir for names only
+       * 
+ */ public boolean hasStbuf() { - return result.hasStbuf(); - } + return ((bitField0_ & 0x00000002) == 0x00000002); + } + /** + * optional .xtreemfs.pbrpc.Stat stbuf = 2; + * + *
+       * stat buffer containing the associated stat information
+       * Can have 0 or 1 Stats on a readdir for names only
+       * 
+ */ public org.xtreemfs.pbrpc.generatedinterfaces.MRC.Stat getStbuf() { - return result.getStbuf(); + if (stbufBuilder_ == null) { + return stbuf_; + } else { + return stbufBuilder_.getMessage(); + } } + /** + * optional .xtreemfs.pbrpc.Stat stbuf = 2; + * + *
+       * stat buffer containing the associated stat information
+       * Can have 0 or 1 Stats on a readdir for names only
+       * 
+ */ public Builder setStbuf(org.xtreemfs.pbrpc.generatedinterfaces.MRC.Stat value) { - if (value == null) { - throw new NullPointerException(); + if (stbufBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + stbuf_ = value; + onChanged(); + } else { + stbufBuilder_.setMessage(value); + } + bitField0_ |= 0x00000002; + return this; + } + /** + * optional .xtreemfs.pbrpc.Stat stbuf = 2; + * + *
+       * stat buffer containing the associated stat information
+       * Can have 0 or 1 Stats on a readdir for names only
+       * 
+ */ + public Builder setStbuf( + org.xtreemfs.pbrpc.generatedinterfaces.MRC.Stat.Builder builderForValue) { + if (stbufBuilder_ == null) { + stbuf_ = builderForValue.build(); + onChanged(); + } else { + stbufBuilder_.setMessage(builderForValue.build()); } - result.hasStbuf = true; - result.stbuf_ = value; - return this; - } - public Builder setStbuf(org.xtreemfs.pbrpc.generatedinterfaces.MRC.Stat.Builder builderForValue) { - result.hasStbuf = true; - result.stbuf_ = builderForValue.build(); + bitField0_ |= 0x00000002; return this; } + /** + * optional .xtreemfs.pbrpc.Stat stbuf = 2; + * + *
+       * stat buffer containing the associated stat information
+       * Can have 0 or 1 Stats on a readdir for names only
+       * 
+ */ public Builder mergeStbuf(org.xtreemfs.pbrpc.generatedinterfaces.MRC.Stat value) { - if (result.hasStbuf() && - result.stbuf_ != org.xtreemfs.pbrpc.generatedinterfaces.MRC.Stat.getDefaultInstance()) { - result.stbuf_ = - org.xtreemfs.pbrpc.generatedinterfaces.MRC.Stat.newBuilder(result.stbuf_).mergeFrom(value).buildPartial(); + if (stbufBuilder_ == null) { + if (((bitField0_ & 0x00000002) == 0x00000002) && + stbuf_ != org.xtreemfs.pbrpc.generatedinterfaces.MRC.Stat.getDefaultInstance()) { + stbuf_ = + org.xtreemfs.pbrpc.generatedinterfaces.MRC.Stat.newBuilder(stbuf_).mergeFrom(value).buildPartial(); + } else { + stbuf_ = value; + } + onChanged(); } else { - result.stbuf_ = value; + stbufBuilder_.mergeFrom(value); } - result.hasStbuf = true; + bitField0_ |= 0x00000002; return this; } + /** + * optional .xtreemfs.pbrpc.Stat stbuf = 2; + * + *
+       * stat buffer containing the associated stat information
+       * Can have 0 or 1 Stats on a readdir for names only
+       * 
+ */ public Builder clearStbuf() { - result.hasStbuf = false; - result.stbuf_ = org.xtreemfs.pbrpc.generatedinterfaces.MRC.Stat.getDefaultInstance(); - return this; + if (stbufBuilder_ == null) { + stbuf_ = org.xtreemfs.pbrpc.generatedinterfaces.MRC.Stat.getDefaultInstance(); + onChanged(); + } else { + stbufBuilder_.clear(); + } + bitField0_ = (bitField0_ & ~0x00000002); + return this; + } + /** + * optional .xtreemfs.pbrpc.Stat stbuf = 2; + * + *
+       * stat buffer containing the associated stat information
+       * Can have 0 or 1 Stats on a readdir for names only
+       * 
+ */ + public org.xtreemfs.pbrpc.generatedinterfaces.MRC.Stat.Builder getStbufBuilder() { + bitField0_ |= 0x00000002; + onChanged(); + return getStbufFieldBuilder().getBuilder(); + } + /** + * optional .xtreemfs.pbrpc.Stat stbuf = 2; + * + *
+       * stat buffer containing the associated stat information
+       * Can have 0 or 1 Stats on a readdir for names only
+       * 
+ */ + public org.xtreemfs.pbrpc.generatedinterfaces.MRC.StatOrBuilder getStbufOrBuilder() { + if (stbufBuilder_ != null) { + return stbufBuilder_.getMessageOrBuilder(); + } else { + return stbuf_; + } + } + /** + * optional .xtreemfs.pbrpc.Stat stbuf = 2; + * + *
+       * stat buffer containing the associated stat information
+       * Can have 0 or 1 Stats on a readdir for names only
+       * 
+ */ + private com.google.protobuf.SingleFieldBuilder< + org.xtreemfs.pbrpc.generatedinterfaces.MRC.Stat, org.xtreemfs.pbrpc.generatedinterfaces.MRC.Stat.Builder, org.xtreemfs.pbrpc.generatedinterfaces.MRC.StatOrBuilder> + getStbufFieldBuilder() { + if (stbufBuilder_ == null) { + stbufBuilder_ = new com.google.protobuf.SingleFieldBuilder< + org.xtreemfs.pbrpc.generatedinterfaces.MRC.Stat, org.xtreemfs.pbrpc.generatedinterfaces.MRC.Stat.Builder, org.xtreemfs.pbrpc.generatedinterfaces.MRC.StatOrBuilder>( + stbuf_, + getParentForChildren(), + isClean()); + stbuf_ = null; + } + return stbufBuilder_; } - + // @@protoc_insertion_point(builder_scope:xtreemfs.pbrpc.DirectoryEntry) } - + static { defaultInstance = new DirectoryEntry(true); - org.xtreemfs.pbrpc.generatedinterfaces.MRC.internalForceInit(); defaultInstance.initFields(); } - + // @@protoc_insertion_point(class_scope:xtreemfs.pbrpc.DirectoryEntry) } - + + public interface DirectoryEntriesOrBuilder + extends com.google.protobuf.MessageOrBuilder { + + // repeated .xtreemfs.pbrpc.DirectoryEntry entries = 1; + /** + * repeated .xtreemfs.pbrpc.DirectoryEntry entries = 1; + */ + java.util.List + getEntriesList(); + /** + * repeated .xtreemfs.pbrpc.DirectoryEntry entries = 1; + */ + org.xtreemfs.pbrpc.generatedinterfaces.MRC.DirectoryEntry getEntries(int index); + /** + * repeated .xtreemfs.pbrpc.DirectoryEntry entries = 1; + */ + int getEntriesCount(); + /** + * repeated .xtreemfs.pbrpc.DirectoryEntry entries = 1; + */ + java.util.List + getEntriesOrBuilderList(); + /** + * repeated .xtreemfs.pbrpc.DirectoryEntry entries = 1; + */ + org.xtreemfs.pbrpc.generatedinterfaces.MRC.DirectoryEntryOrBuilder getEntriesOrBuilder( + int index); + } + /** + * Protobuf type {@code xtreemfs.pbrpc.DirectoryEntries} + * + *
+   * list of directory entries; relevant for the 'readdir' call
+   * 
+ */ public static final class DirectoryEntries extends - com.google.protobuf.GeneratedMessage { + com.google.protobuf.GeneratedMessage + implements DirectoryEntriesOrBuilder { // Use DirectoryEntries.newBuilder() to construct. - private DirectoryEntries() { - initFields(); + private DirectoryEntries(com.google.protobuf.GeneratedMessage.Builder builder) { + super(builder); + this.unknownFields = builder.getUnknownFields(); } - private DirectoryEntries(boolean noInit) {} - + private DirectoryEntries(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); } + private static final DirectoryEntries defaultInstance; public static DirectoryEntries getDefaultInstance() { return defaultInstance; } - + public DirectoryEntries getDefaultInstanceForType() { return defaultInstance; } - + + private final com.google.protobuf.UnknownFieldSet unknownFields; + @java.lang.Override + public final com.google.protobuf.UnknownFieldSet + getUnknownFields() { + return this.unknownFields; + } + private DirectoryEntries( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + initFields(); + int mutable_bitField0_ = 0; + com.google.protobuf.UnknownFieldSet.Builder unknownFields = + com.google.protobuf.UnknownFieldSet.newBuilder(); + try { + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch (tag) { + case 0: + done = true; + break; + default: { + if (!parseUnknownField(input, unknownFields, + extensionRegistry, tag)) { + done = true; + } + break; + } + case 10: { + if (!((mutable_bitField0_ & 0x00000001) == 0x00000001)) { + entries_ = new java.util.ArrayList(); + mutable_bitField0_ |= 0x00000001; + } + entries_.add(input.readMessage(org.xtreemfs.pbrpc.generatedinterfaces.MRC.DirectoryEntry.PARSER, extensionRegistry)); + break; + } + } + } + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(this); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException( + e.getMessage()).setUnfinishedMessage(this); + } finally { + if (((mutable_bitField0_ & 0x00000001) == 0x00000001)) { + entries_ = java.util.Collections.unmodifiableList(entries_); + } + this.unknownFields = unknownFields.build(); + makeExtensionsImmutable(); + } + } public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { return org.xtreemfs.pbrpc.generatedinterfaces.MRC.internal_static_xtreemfs_pbrpc_DirectoryEntries_descriptor; } - + protected com.google.protobuf.GeneratedMessage.FieldAccessorTable internalGetFieldAccessorTable() { - return org.xtreemfs.pbrpc.generatedinterfaces.MRC.internal_static_xtreemfs_pbrpc_DirectoryEntries_fieldAccessorTable; + return org.xtreemfs.pbrpc.generatedinterfaces.MRC.internal_static_xtreemfs_pbrpc_DirectoryEntries_fieldAccessorTable + .ensureFieldAccessorsInitialized( + org.xtreemfs.pbrpc.generatedinterfaces.MRC.DirectoryEntries.class, org.xtreemfs.pbrpc.generatedinterfaces.MRC.DirectoryEntries.Builder.class); + } + + public static com.google.protobuf.Parser PARSER = + new com.google.protobuf.AbstractParser() { + public DirectoryEntries parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return new DirectoryEntries(input, extensionRegistry); + } + }; + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; } - + // repeated .xtreemfs.pbrpc.DirectoryEntry entries = 1; public static final int ENTRIES_FIELD_NUMBER = 1; - private java.util.List entries_ = - java.util.Collections.emptyList(); + private java.util.List entries_; + /** + * repeated .xtreemfs.pbrpc.DirectoryEntry entries = 1; + */ public java.util.List getEntriesList() { return entries_; } - public int getEntriesCount() { return entries_.size(); } + /** + * repeated .xtreemfs.pbrpc.DirectoryEntry entries = 1; + */ + public java.util.List + getEntriesOrBuilderList() { + return entries_; + } + /** + * repeated .xtreemfs.pbrpc.DirectoryEntry entries = 1; + */ + public int getEntriesCount() { + return entries_.size(); + } + /** + * repeated .xtreemfs.pbrpc.DirectoryEntry entries = 1; + */ public org.xtreemfs.pbrpc.generatedinterfaces.MRC.DirectoryEntry getEntries(int index) { return entries_.get(index); } - + /** + * repeated .xtreemfs.pbrpc.DirectoryEntry entries = 1; + */ + public org.xtreemfs.pbrpc.generatedinterfaces.MRC.DirectoryEntryOrBuilder getEntriesOrBuilder( + int index) { + return entries_.get(index); + } + private void initFields() { + entries_ = java.util.Collections.emptyList(); } + private byte memoizedIsInitialized = -1; public final boolean isInitialized() { - for (org.xtreemfs.pbrpc.generatedinterfaces.MRC.DirectoryEntry element : getEntriesList()) { - if (!element.isInitialized()) return false; + byte isInitialized = memoizedIsInitialized; + if (isInitialized != -1) return isInitialized == 1; + + for (int i = 0; i < getEntriesCount(); i++) { + if (!getEntries(i).isInitialized()) { + memoizedIsInitialized = 0; + return false; + } } + memoizedIsInitialized = 1; return true; } - + public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException { getSerializedSize(); - for (org.xtreemfs.pbrpc.generatedinterfaces.MRC.DirectoryEntry element : getEntriesList()) { - output.writeMessage(1, element); + for (int i = 0; i < entries_.size(); i++) { + output.writeMessage(1, entries_.get(i)); } getUnknownFields().writeTo(output); } - + private int memoizedSerializedSize = -1; public int getSerializedSize() { int size = memoizedSerializedSize; if (size != -1) return size; - + size = 0; - for (org.xtreemfs.pbrpc.generatedinterfaces.MRC.DirectoryEntry element : getEntriesList()) { + for (int i = 0; i < entries_.size(); i++) { size += com.google.protobuf.CodedOutputStream - .computeMessageSize(1, element); + .computeMessageSize(1, entries_.get(i)); } size += getUnknownFields().getSerializedSize(); memoizedSerializedSize = size; return size; } - + + private static final long serialVersionUID = 0L; + @java.lang.Override + protected java.lang.Object writeReplace() + throws java.io.ObjectStreamException { + return super.writeReplace(); + } + public static org.xtreemfs.pbrpc.generatedinterfaces.MRC.DirectoryEntries parseFrom( com.google.protobuf.ByteString data) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data).buildParsed(); + return PARSER.parseFrom(data); } public static org.xtreemfs.pbrpc.generatedinterfaces.MRC.DirectoryEntries parseFrom( com.google.protobuf.ByteString data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(data, extensionRegistry); } public static org.xtreemfs.pbrpc.generatedinterfaces.MRC.DirectoryEntries parseFrom(byte[] data) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data).buildParsed(); + return PARSER.parseFrom(data); } public static org.xtreemfs.pbrpc.generatedinterfaces.MRC.DirectoryEntries parseFrom( byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(data, extensionRegistry); } public static org.xtreemfs.pbrpc.generatedinterfaces.MRC.DirectoryEntries parseFrom(java.io.InputStream input) throws java.io.IOException { - return newBuilder().mergeFrom(input).buildParsed(); + return PARSER.parseFrom(input); } public static org.xtreemfs.pbrpc.generatedinterfaces.MRC.DirectoryEntries parseFrom( java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - return newBuilder().mergeFrom(input, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(input, extensionRegistry); } public static org.xtreemfs.pbrpc.generatedinterfaces.MRC.DirectoryEntries parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException { - Builder builder = newBuilder(); - if (builder.mergeDelimitedFrom(input)) { - return builder.buildParsed(); - } else { - return null; - } + return PARSER.parseDelimitedFrom(input); } public static org.xtreemfs.pbrpc.generatedinterfaces.MRC.DirectoryEntries parseDelimitedFrom( java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - Builder builder = newBuilder(); - if (builder.mergeDelimitedFrom(input, extensionRegistry)) { - return builder.buildParsed(); - } else { - return null; - } + return PARSER.parseDelimitedFrom(input, extensionRegistry); } public static org.xtreemfs.pbrpc.generatedinterfaces.MRC.DirectoryEntries parseFrom( com.google.protobuf.CodedInputStream input) throws java.io.IOException { - return newBuilder().mergeFrom(input).buildParsed(); + return PARSER.parseFrom(input); } public static org.xtreemfs.pbrpc.generatedinterfaces.MRC.DirectoryEntries parseFrom( com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - return newBuilder().mergeFrom(input, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(input, extensionRegistry); } - + public static Builder newBuilder() { return Builder.create(); } public Builder newBuilderForType() { return newBuilder(); } public static Builder newBuilder(org.xtreemfs.pbrpc.generatedinterfaces.MRC.DirectoryEntries prototype) { return newBuilder().mergeFrom(prototype); } public Builder toBuilder() { return newBuilder(this); } - + + @java.lang.Override + protected Builder newBuilderForType( + com.google.protobuf.GeneratedMessage.BuilderParent parent) { + Builder builder = new Builder(parent); + return builder; + } + /** + * Protobuf type {@code xtreemfs.pbrpc.DirectoryEntries} + * + *
+     * list of directory entries; relevant for the 'readdir' call
+     * 
+ */ public static final class Builder extends - com.google.protobuf.GeneratedMessage.Builder { - private org.xtreemfs.pbrpc.generatedinterfaces.MRC.DirectoryEntries result; - + com.google.protobuf.GeneratedMessage.Builder + implements org.xtreemfs.pbrpc.generatedinterfaces.MRC.DirectoryEntriesOrBuilder { + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return org.xtreemfs.pbrpc.generatedinterfaces.MRC.internal_static_xtreemfs_pbrpc_DirectoryEntries_descriptor; + } + + protected com.google.protobuf.GeneratedMessage.FieldAccessorTable + internalGetFieldAccessorTable() { + return org.xtreemfs.pbrpc.generatedinterfaces.MRC.internal_static_xtreemfs_pbrpc_DirectoryEntries_fieldAccessorTable + .ensureFieldAccessorsInitialized( + org.xtreemfs.pbrpc.generatedinterfaces.MRC.DirectoryEntries.class, org.xtreemfs.pbrpc.generatedinterfaces.MRC.DirectoryEntries.Builder.class); + } + // Construct using org.xtreemfs.pbrpc.generatedinterfaces.MRC.DirectoryEntries.newBuilder() - private Builder() {} - - private static Builder create() { - Builder builder = new Builder(); - builder.result = new org.xtreemfs.pbrpc.generatedinterfaces.MRC.DirectoryEntries(); - return builder; + private Builder() { + maybeForceBuilderInitialization(); } - - protected org.xtreemfs.pbrpc.generatedinterfaces.MRC.DirectoryEntries internalGetResult() { - return result; + + private Builder( + com.google.protobuf.GeneratedMessage.BuilderParent parent) { + super(parent); + maybeForceBuilderInitialization(); + } + private void maybeForceBuilderInitialization() { + if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) { + getEntriesFieldBuilder(); + } } - + private static Builder create() { + return new Builder(); + } + public Builder clear() { - if (result == null) { - throw new IllegalStateException( - "Cannot call clear() after build()."); + super.clear(); + if (entriesBuilder_ == null) { + entries_ = java.util.Collections.emptyList(); + bitField0_ = (bitField0_ & ~0x00000001); + } else { + entriesBuilder_.clear(); } - result = new org.xtreemfs.pbrpc.generatedinterfaces.MRC.DirectoryEntries(); return this; } - + public Builder clone() { - return create().mergeFrom(result); + return create().mergeFrom(buildPartial()); } - + public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() { - return org.xtreemfs.pbrpc.generatedinterfaces.MRC.DirectoryEntries.getDescriptor(); + return org.xtreemfs.pbrpc.generatedinterfaces.MRC.internal_static_xtreemfs_pbrpc_DirectoryEntries_descriptor; } - + public org.xtreemfs.pbrpc.generatedinterfaces.MRC.DirectoryEntries getDefaultInstanceForType() { return org.xtreemfs.pbrpc.generatedinterfaces.MRC.DirectoryEntries.getDefaultInstance(); } - - public boolean isInitialized() { - return result.isInitialized(); - } + public org.xtreemfs.pbrpc.generatedinterfaces.MRC.DirectoryEntries build() { - if (result != null && !isInitialized()) { + org.xtreemfs.pbrpc.generatedinterfaces.MRC.DirectoryEntries result = buildPartial(); + if (!result.isInitialized()) { throw newUninitializedMessageException(result); } - return buildPartial(); - } - - private org.xtreemfs.pbrpc.generatedinterfaces.MRC.DirectoryEntries buildParsed() - throws com.google.protobuf.InvalidProtocolBufferException { - if (!isInitialized()) { - throw newUninitializedMessageException( - result).asInvalidProtocolBufferException(); - } - return buildPartial(); + return result; } - + public org.xtreemfs.pbrpc.generatedinterfaces.MRC.DirectoryEntries buildPartial() { - if (result == null) { - throw new IllegalStateException( - "build() has already been called on this Builder."); - } - if (result.entries_ != java.util.Collections.EMPTY_LIST) { - result.entries_ = - java.util.Collections.unmodifiableList(result.entries_); + org.xtreemfs.pbrpc.generatedinterfaces.MRC.DirectoryEntries result = new org.xtreemfs.pbrpc.generatedinterfaces.MRC.DirectoryEntries(this); + int from_bitField0_ = bitField0_; + if (entriesBuilder_ == null) { + if (((bitField0_ & 0x00000001) == 0x00000001)) { + entries_ = java.util.Collections.unmodifiableList(entries_); + bitField0_ = (bitField0_ & ~0x00000001); + } + result.entries_ = entries_; + } else { + result.entries_ = entriesBuilder_.build(); } - org.xtreemfs.pbrpc.generatedinterfaces.MRC.DirectoryEntries returnMe = result; - result = null; - return returnMe; + onBuilt(); + return result; } - + public Builder mergeFrom(com.google.protobuf.Message other) { if (other instanceof org.xtreemfs.pbrpc.generatedinterfaces.MRC.DirectoryEntries) { return mergeFrom((org.xtreemfs.pbrpc.generatedinterfaces.MRC.DirectoryEntries)other); @@ -1615,349 +3748,880 @@ public final class MRC { return this; } } - + public Builder mergeFrom(org.xtreemfs.pbrpc.generatedinterfaces.MRC.DirectoryEntries other) { if (other == org.xtreemfs.pbrpc.generatedinterfaces.MRC.DirectoryEntries.getDefaultInstance()) return this; - if (!other.entries_.isEmpty()) { - if (result.entries_.isEmpty()) { - result.entries_ = new java.util.ArrayList(); + if (entriesBuilder_ == null) { + if (!other.entries_.isEmpty()) { + if (entries_.isEmpty()) { + entries_ = other.entries_; + bitField0_ = (bitField0_ & ~0x00000001); + } else { + ensureEntriesIsMutable(); + entries_.addAll(other.entries_); + } + onChanged(); + } + } else { + if (!other.entries_.isEmpty()) { + if (entriesBuilder_.isEmpty()) { + entriesBuilder_.dispose(); + entriesBuilder_ = null; + entries_ = other.entries_; + bitField0_ = (bitField0_ & ~0x00000001); + entriesBuilder_ = + com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ? + getEntriesFieldBuilder() : null; + } else { + entriesBuilder_.addAllMessages(other.entries_); + } } - result.entries_.addAll(other.entries_); } this.mergeUnknownFields(other.getUnknownFields()); return this; } - + + public final boolean isInitialized() { + for (int i = 0; i < getEntriesCount(); i++) { + if (!getEntries(i).isInitialized()) { + + return false; + } + } + return true; + } + public Builder mergeFrom( com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - com.google.protobuf.UnknownFieldSet.Builder unknownFields = - com.google.protobuf.UnknownFieldSet.newBuilder( - this.getUnknownFields()); - while (true) { - int tag = input.readTag(); - switch (tag) { - case 0: - this.setUnknownFields(unknownFields.build()); - return this; - default: { - if (!parseUnknownField(input, unknownFields, - extensionRegistry, tag)) { - this.setUnknownFields(unknownFields.build()); - return this; - } - break; - } - case 10: { - org.xtreemfs.pbrpc.generatedinterfaces.MRC.DirectoryEntry.Builder subBuilder = org.xtreemfs.pbrpc.generatedinterfaces.MRC.DirectoryEntry.newBuilder(); - input.readMessage(subBuilder, extensionRegistry); - addEntries(subBuilder.buildPartial()); - break; - } + org.xtreemfs.pbrpc.generatedinterfaces.MRC.DirectoryEntries parsedMessage = null; + try { + parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + parsedMessage = (org.xtreemfs.pbrpc.generatedinterfaces.MRC.DirectoryEntries) e.getUnfinishedMessage(); + throw e; + } finally { + if (parsedMessage != null) { + mergeFrom(parsedMessage); } } + return this; } - - + private int bitField0_; + // repeated .xtreemfs.pbrpc.DirectoryEntry entries = 1; + private java.util.List entries_ = + java.util.Collections.emptyList(); + private void ensureEntriesIsMutable() { + if (!((bitField0_ & 0x00000001) == 0x00000001)) { + entries_ = new java.util.ArrayList(entries_); + bitField0_ |= 0x00000001; + } + } + + private com.google.protobuf.RepeatedFieldBuilder< + org.xtreemfs.pbrpc.generatedinterfaces.MRC.DirectoryEntry, org.xtreemfs.pbrpc.generatedinterfaces.MRC.DirectoryEntry.Builder, org.xtreemfs.pbrpc.generatedinterfaces.MRC.DirectoryEntryOrBuilder> entriesBuilder_; + + /** + * repeated .xtreemfs.pbrpc.DirectoryEntry entries = 1; + */ public java.util.List getEntriesList() { - return java.util.Collections.unmodifiableList(result.entries_); + if (entriesBuilder_ == null) { + return java.util.Collections.unmodifiableList(entries_); + } else { + return entriesBuilder_.getMessageList(); + } } + /** + * repeated .xtreemfs.pbrpc.DirectoryEntry entries = 1; + */ public int getEntriesCount() { - return result.getEntriesCount(); + if (entriesBuilder_ == null) { + return entries_.size(); + } else { + return entriesBuilder_.getCount(); + } } + /** + * repeated .xtreemfs.pbrpc.DirectoryEntry entries = 1; + */ public org.xtreemfs.pbrpc.generatedinterfaces.MRC.DirectoryEntry getEntries(int index) { - return result.getEntries(index); + if (entriesBuilder_ == null) { + return entries_.get(index); + } else { + return entriesBuilder_.getMessage(index); + } } - public Builder setEntries(int index, org.xtreemfs.pbrpc.generatedinterfaces.MRC.DirectoryEntry value) { - if (value == null) { - throw new NullPointerException(); + /** + * repeated .xtreemfs.pbrpc.DirectoryEntry entries = 1; + */ + public Builder setEntries( + int index, org.xtreemfs.pbrpc.generatedinterfaces.MRC.DirectoryEntry value) { + if (entriesBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + ensureEntriesIsMutable(); + entries_.set(index, value); + onChanged(); + } else { + entriesBuilder_.setMessage(index, value); } - result.entries_.set(index, value); return this; } - public Builder setEntries(int index, org.xtreemfs.pbrpc.generatedinterfaces.MRC.DirectoryEntry.Builder builderForValue) { - result.entries_.set(index, builderForValue.build()); + /** + * repeated .xtreemfs.pbrpc.DirectoryEntry entries = 1; + */ + public Builder setEntries( + int index, org.xtreemfs.pbrpc.generatedinterfaces.MRC.DirectoryEntry.Builder builderForValue) { + if (entriesBuilder_ == null) { + ensureEntriesIsMutable(); + entries_.set(index, builderForValue.build()); + onChanged(); + } else { + entriesBuilder_.setMessage(index, builderForValue.build()); + } return this; } + /** + * repeated .xtreemfs.pbrpc.DirectoryEntry entries = 1; + */ public Builder addEntries(org.xtreemfs.pbrpc.generatedinterfaces.MRC.DirectoryEntry value) { - if (value == null) { - throw new NullPointerException(); + if (entriesBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + ensureEntriesIsMutable(); + entries_.add(value); + onChanged(); + } else { + entriesBuilder_.addMessage(value); + } + return this; + } + /** + * repeated .xtreemfs.pbrpc.DirectoryEntry entries = 1; + */ + public Builder addEntries( + int index, org.xtreemfs.pbrpc.generatedinterfaces.MRC.DirectoryEntry value) { + if (entriesBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + ensureEntriesIsMutable(); + entries_.add(index, value); + onChanged(); + } else { + entriesBuilder_.addMessage(index, value); } - if (result.entries_.isEmpty()) { - result.entries_ = new java.util.ArrayList(); + return this; + } + /** + * repeated .xtreemfs.pbrpc.DirectoryEntry entries = 1; + */ + public Builder addEntries( + org.xtreemfs.pbrpc.generatedinterfaces.MRC.DirectoryEntry.Builder builderForValue) { + if (entriesBuilder_ == null) { + ensureEntriesIsMutable(); + entries_.add(builderForValue.build()); + onChanged(); + } else { + entriesBuilder_.addMessage(builderForValue.build()); } - result.entries_.add(value); return this; } - public Builder addEntries(org.xtreemfs.pbrpc.generatedinterfaces.MRC.DirectoryEntry.Builder builderForValue) { - if (result.entries_.isEmpty()) { - result.entries_ = new java.util.ArrayList(); + /** + * repeated .xtreemfs.pbrpc.DirectoryEntry entries = 1; + */ + public Builder addEntries( + int index, org.xtreemfs.pbrpc.generatedinterfaces.MRC.DirectoryEntry.Builder builderForValue) { + if (entriesBuilder_ == null) { + ensureEntriesIsMutable(); + entries_.add(index, builderForValue.build()); + onChanged(); + } else { + entriesBuilder_.addMessage(index, builderForValue.build()); } - result.entries_.add(builderForValue.build()); return this; } + /** + * repeated .xtreemfs.pbrpc.DirectoryEntry entries = 1; + */ public Builder addAllEntries( java.lang.Iterable values) { - if (result.entries_.isEmpty()) { - result.entries_ = new java.util.ArrayList(); + if (entriesBuilder_ == null) { + ensureEntriesIsMutable(); + super.addAll(values, entries_); + onChanged(); + } else { + entriesBuilder_.addAllMessages(values); } - super.addAll(values, result.entries_); return this; } + /** + * repeated .xtreemfs.pbrpc.DirectoryEntry entries = 1; + */ public Builder clearEntries() { - result.entries_ = java.util.Collections.emptyList(); + if (entriesBuilder_ == null) { + entries_ = java.util.Collections.emptyList(); + bitField0_ = (bitField0_ & ~0x00000001); + onChanged(); + } else { + entriesBuilder_.clear(); + } return this; } - + /** + * repeated .xtreemfs.pbrpc.DirectoryEntry entries = 1; + */ + public Builder removeEntries(int index) { + if (entriesBuilder_ == null) { + ensureEntriesIsMutable(); + entries_.remove(index); + onChanged(); + } else { + entriesBuilder_.remove(index); + } + return this; + } + /** + * repeated .xtreemfs.pbrpc.DirectoryEntry entries = 1; + */ + public org.xtreemfs.pbrpc.generatedinterfaces.MRC.DirectoryEntry.Builder getEntriesBuilder( + int index) { + return getEntriesFieldBuilder().getBuilder(index); + } + /** + * repeated .xtreemfs.pbrpc.DirectoryEntry entries = 1; + */ + public org.xtreemfs.pbrpc.generatedinterfaces.MRC.DirectoryEntryOrBuilder getEntriesOrBuilder( + int index) { + if (entriesBuilder_ == null) { + return entries_.get(index); } else { + return entriesBuilder_.getMessageOrBuilder(index); + } + } + /** + * repeated .xtreemfs.pbrpc.DirectoryEntry entries = 1; + */ + public java.util.List + getEntriesOrBuilderList() { + if (entriesBuilder_ != null) { + return entriesBuilder_.getMessageOrBuilderList(); + } else { + return java.util.Collections.unmodifiableList(entries_); + } + } + /** + * repeated .xtreemfs.pbrpc.DirectoryEntry entries = 1; + */ + public org.xtreemfs.pbrpc.generatedinterfaces.MRC.DirectoryEntry.Builder addEntriesBuilder() { + return getEntriesFieldBuilder().addBuilder( + org.xtreemfs.pbrpc.generatedinterfaces.MRC.DirectoryEntry.getDefaultInstance()); + } + /** + * repeated .xtreemfs.pbrpc.DirectoryEntry entries = 1; + */ + public org.xtreemfs.pbrpc.generatedinterfaces.MRC.DirectoryEntry.Builder addEntriesBuilder( + int index) { + return getEntriesFieldBuilder().addBuilder( + index, org.xtreemfs.pbrpc.generatedinterfaces.MRC.DirectoryEntry.getDefaultInstance()); + } + /** + * repeated .xtreemfs.pbrpc.DirectoryEntry entries = 1; + */ + public java.util.List + getEntriesBuilderList() { + return getEntriesFieldBuilder().getBuilderList(); + } + private com.google.protobuf.RepeatedFieldBuilder< + org.xtreemfs.pbrpc.generatedinterfaces.MRC.DirectoryEntry, org.xtreemfs.pbrpc.generatedinterfaces.MRC.DirectoryEntry.Builder, org.xtreemfs.pbrpc.generatedinterfaces.MRC.DirectoryEntryOrBuilder> + getEntriesFieldBuilder() { + if (entriesBuilder_ == null) { + entriesBuilder_ = new com.google.protobuf.RepeatedFieldBuilder< + org.xtreemfs.pbrpc.generatedinterfaces.MRC.DirectoryEntry, org.xtreemfs.pbrpc.generatedinterfaces.MRC.DirectoryEntry.Builder, org.xtreemfs.pbrpc.generatedinterfaces.MRC.DirectoryEntryOrBuilder>( + entries_, + ((bitField0_ & 0x00000001) == 0x00000001), + getParentForChildren(), + isClean()); + entries_ = null; + } + return entriesBuilder_; + } + // @@protoc_insertion_point(builder_scope:xtreemfs.pbrpc.DirectoryEntries) } - + static { defaultInstance = new DirectoryEntries(true); - org.xtreemfs.pbrpc.generatedinterfaces.MRC.internalForceInit(); defaultInstance.initFields(); } - + // @@protoc_insertion_point(class_scope:xtreemfs.pbrpc.DirectoryEntries) } - + + public interface XAttrOrBuilder + extends com.google.protobuf.MessageOrBuilder { + + // required string name = 1; + /** + * required string name = 1; + * + *
+     * attribute name
+     * 
+ */ + boolean hasName(); + /** + * required string name = 1; + * + *
+     * attribute name
+     * 
+ */ + java.lang.String getName(); + /** + * required string name = 1; + * + *
+     * attribute name
+     * 
+ */ + com.google.protobuf.ByteString + getNameBytes(); + + // optional string value = 2; + /** + * optional string value = 2; + * + *
+     * attribute value; can be empty on a 'listxattr' call for names only
+     * 
+ */ + boolean hasValue(); + /** + * optional string value = 2; + * + *
+     * attribute value; can be empty on a 'listxattr' call for names only
+     * 
+ */ + java.lang.String getValue(); + /** + * optional string value = 2; + * + *
+     * attribute value; can be empty on a 'listxattr' call for names only
+     * 
+ */ + com.google.protobuf.ByteString + getValueBytes(); + + // optional bytes value_bytes_string = 3; + /** + * optional bytes value_bytes_string = 3; + * + *
+     * redundant field of "value" which also accepts binary values (needed
+     * for storing the value of "system.posix_acl_access",
+     * added after version 1.3.1)
+     * If both value and value_bytes are present, value_bytes will always
+     * be preferred. For backward compability "value" always has to be set,
+     * even if "value_bytes" is available.
+     * 
+ */ + boolean hasValueBytesString(); + /** + * optional bytes value_bytes_string = 3; + * + *
+     * redundant field of "value" which also accepts binary values (needed
+     * for storing the value of "system.posix_acl_access",
+     * added after version 1.3.1)
+     * If both value and value_bytes are present, value_bytes will always
+     * be preferred. For backward compability "value" always has to be set,
+     * even if "value_bytes" is available.
+     * 
+ */ + com.google.protobuf.ByteString getValueBytesString(); + } + /** + * Protobuf type {@code xtreemfs.pbrpc.XAttr} + * + *
+   * extended attribute of a file or directory
+   * 
+ */ public static final class XAttr extends - com.google.protobuf.GeneratedMessage { + com.google.protobuf.GeneratedMessage + implements XAttrOrBuilder { // Use XAttr.newBuilder() to construct. - private XAttr() { - initFields(); + private XAttr(com.google.protobuf.GeneratedMessage.Builder builder) { + super(builder); + this.unknownFields = builder.getUnknownFields(); } - private XAttr(boolean noInit) {} - + private XAttr(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); } + private static final XAttr defaultInstance; public static XAttr getDefaultInstance() { return defaultInstance; } - + public XAttr getDefaultInstanceForType() { return defaultInstance; } - + + private final com.google.protobuf.UnknownFieldSet unknownFields; + @java.lang.Override + public final com.google.protobuf.UnknownFieldSet + getUnknownFields() { + return this.unknownFields; + } + private XAttr( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + initFields(); + int mutable_bitField0_ = 0; + com.google.protobuf.UnknownFieldSet.Builder unknownFields = + com.google.protobuf.UnknownFieldSet.newBuilder(); + try { + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch (tag) { + case 0: + done = true; + break; + default: { + if (!parseUnknownField(input, unknownFields, + extensionRegistry, tag)) { + done = true; + } + break; + } + case 10: { + bitField0_ |= 0x00000001; + name_ = input.readBytes(); + break; + } + case 18: { + bitField0_ |= 0x00000002; + value_ = input.readBytes(); + break; + } + case 26: { + bitField0_ |= 0x00000004; + valueBytesString_ = input.readBytes(); + break; + } + } + } + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(this); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException( + e.getMessage()).setUnfinishedMessage(this); + } finally { + this.unknownFields = unknownFields.build(); + makeExtensionsImmutable(); + } + } public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { return org.xtreemfs.pbrpc.generatedinterfaces.MRC.internal_static_xtreemfs_pbrpc_XAttr_descriptor; } - + protected com.google.protobuf.GeneratedMessage.FieldAccessorTable internalGetFieldAccessorTable() { - return org.xtreemfs.pbrpc.generatedinterfaces.MRC.internal_static_xtreemfs_pbrpc_XAttr_fieldAccessorTable; + return org.xtreemfs.pbrpc.generatedinterfaces.MRC.internal_static_xtreemfs_pbrpc_XAttr_fieldAccessorTable + .ensureFieldAccessorsInitialized( + org.xtreemfs.pbrpc.generatedinterfaces.MRC.XAttr.class, org.xtreemfs.pbrpc.generatedinterfaces.MRC.XAttr.Builder.class); + } + + public static com.google.protobuf.Parser PARSER = + new com.google.protobuf.AbstractParser() { + public XAttr parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return new XAttr(input, extensionRegistry); + } + }; + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; } - + + private int bitField0_; // required string name = 1; public static final int NAME_FIELD_NUMBER = 1; - private boolean hasName; - private java.lang.String name_ = ""; - public boolean hasName() { return hasName; } - public java.lang.String getName() { return name_; } - + private java.lang.Object name_; + /** + * required string name = 1; + * + *
+     * attribute name
+     * 
+ */ + public boolean hasName() { + return ((bitField0_ & 0x00000001) == 0x00000001); + } + /** + * required string name = 1; + * + *
+     * attribute name
+     * 
+ */ + public java.lang.String getName() { + java.lang.Object ref = name_; + if (ref instanceof java.lang.String) { + return (java.lang.String) ref; + } else { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + if (bs.isValidUtf8()) { + name_ = s; + } + return s; + } + } + /** + * required string name = 1; + * + *
+     * attribute name
+     * 
+ */ + public com.google.protobuf.ByteString + getNameBytes() { + java.lang.Object ref = name_; + if (ref instanceof java.lang.String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + name_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + // optional string value = 2; public static final int VALUE_FIELD_NUMBER = 2; - private boolean hasValue; - private java.lang.String value_ = ""; - public boolean hasValue() { return hasValue; } - public java.lang.String getValue() { return value_; } - - // optional bytes value_bytes = 3; - public static final int VALUE_BYTES_FIELD_NUMBER = 3; - private boolean hasValueBytes; - private com.google.protobuf.ByteString valueBytes_ = com.google.protobuf.ByteString.EMPTY; - public boolean hasValueBytes() { return hasValueBytes; } - public com.google.protobuf.ByteString getValueBytes() { return valueBytes_; } - + private java.lang.Object value_; + /** + * optional string value = 2; + * + *
+     * attribute value; can be empty on a 'listxattr' call for names only
+     * 
+ */ + public boolean hasValue() { + return ((bitField0_ & 0x00000002) == 0x00000002); + } + /** + * optional string value = 2; + * + *
+     * attribute value; can be empty on a 'listxattr' call for names only
+     * 
+ */ + public java.lang.String getValue() { + java.lang.Object ref = value_; + if (ref instanceof java.lang.String) { + return (java.lang.String) ref; + } else { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + if (bs.isValidUtf8()) { + value_ = s; + } + return s; + } + } + /** + * optional string value = 2; + * + *
+     * attribute value; can be empty on a 'listxattr' call for names only
+     * 
+ */ + public com.google.protobuf.ByteString + getValueBytes() { + java.lang.Object ref = value_; + if (ref instanceof java.lang.String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + value_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + + // optional bytes value_bytes_string = 3; + public static final int VALUE_BYTES_STRING_FIELD_NUMBER = 3; + private com.google.protobuf.ByteString valueBytesString_; + /** + * optional bytes value_bytes_string = 3; + * + *
+     * redundant field of "value" which also accepts binary values (needed
+     * for storing the value of "system.posix_acl_access",
+     * added after version 1.3.1)
+     * If both value and value_bytes are present, value_bytes will always
+     * be preferred. For backward compability "value" always has to be set,
+     * even if "value_bytes" is available.
+     * 
+ */ + public boolean hasValueBytesString() { + return ((bitField0_ & 0x00000004) == 0x00000004); + } + /** + * optional bytes value_bytes_string = 3; + * + *
+     * redundant field of "value" which also accepts binary values (needed
+     * for storing the value of "system.posix_acl_access",
+     * added after version 1.3.1)
+     * If both value and value_bytes are present, value_bytes will always
+     * be preferred. For backward compability "value" always has to be set,
+     * even if "value_bytes" is available.
+     * 
+ */ + public com.google.protobuf.ByteString getValueBytesString() { + return valueBytesString_; + } + private void initFields() { + name_ = ""; + value_ = ""; + valueBytesString_ = com.google.protobuf.ByteString.EMPTY; } + private byte memoizedIsInitialized = -1; public final boolean isInitialized() { - if (!hasName) return false; + byte isInitialized = memoizedIsInitialized; + if (isInitialized != -1) return isInitialized == 1; + + if (!hasName()) { + memoizedIsInitialized = 0; + return false; + } + memoizedIsInitialized = 1; return true; } - + public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException { getSerializedSize(); - if (hasName()) { - output.writeString(1, getName()); + if (((bitField0_ & 0x00000001) == 0x00000001)) { + output.writeBytes(1, getNameBytes()); } - if (hasValue()) { - output.writeString(2, getValue()); + if (((bitField0_ & 0x00000002) == 0x00000002)) { + output.writeBytes(2, getValueBytes()); } - if (hasValueBytes()) { - output.writeBytes(3, getValueBytes()); + if (((bitField0_ & 0x00000004) == 0x00000004)) { + output.writeBytes(3, valueBytesString_); } getUnknownFields().writeTo(output); } - + private int memoizedSerializedSize = -1; public int getSerializedSize() { int size = memoizedSerializedSize; if (size != -1) return size; - + size = 0; - if (hasName()) { + if (((bitField0_ & 0x00000001) == 0x00000001)) { size += com.google.protobuf.CodedOutputStream - .computeStringSize(1, getName()); + .computeBytesSize(1, getNameBytes()); } - if (hasValue()) { + if (((bitField0_ & 0x00000002) == 0x00000002)) { size += com.google.protobuf.CodedOutputStream - .computeStringSize(2, getValue()); + .computeBytesSize(2, getValueBytes()); } - if (hasValueBytes()) { + if (((bitField0_ & 0x00000004) == 0x00000004)) { size += com.google.protobuf.CodedOutputStream - .computeBytesSize(3, getValueBytes()); + .computeBytesSize(3, valueBytesString_); } size += getUnknownFields().getSerializedSize(); memoizedSerializedSize = size; return size; } - + + private static final long serialVersionUID = 0L; + @java.lang.Override + protected java.lang.Object writeReplace() + throws java.io.ObjectStreamException { + return super.writeReplace(); + } + public static org.xtreemfs.pbrpc.generatedinterfaces.MRC.XAttr parseFrom( com.google.protobuf.ByteString data) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data).buildParsed(); + return PARSER.parseFrom(data); } public static org.xtreemfs.pbrpc.generatedinterfaces.MRC.XAttr parseFrom( com.google.protobuf.ByteString data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(data, extensionRegistry); } public static org.xtreemfs.pbrpc.generatedinterfaces.MRC.XAttr parseFrom(byte[] data) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data).buildParsed(); + return PARSER.parseFrom(data); } public static org.xtreemfs.pbrpc.generatedinterfaces.MRC.XAttr parseFrom( byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(data, extensionRegistry); } public static org.xtreemfs.pbrpc.generatedinterfaces.MRC.XAttr parseFrom(java.io.InputStream input) throws java.io.IOException { - return newBuilder().mergeFrom(input).buildParsed(); + return PARSER.parseFrom(input); } public static org.xtreemfs.pbrpc.generatedinterfaces.MRC.XAttr parseFrom( java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - return newBuilder().mergeFrom(input, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(input, extensionRegistry); } public static org.xtreemfs.pbrpc.generatedinterfaces.MRC.XAttr parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException { - Builder builder = newBuilder(); - if (builder.mergeDelimitedFrom(input)) { - return builder.buildParsed(); - } else { - return null; - } + return PARSER.parseDelimitedFrom(input); } public static org.xtreemfs.pbrpc.generatedinterfaces.MRC.XAttr parseDelimitedFrom( java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - Builder builder = newBuilder(); - if (builder.mergeDelimitedFrom(input, extensionRegistry)) { - return builder.buildParsed(); - } else { - return null; - } + return PARSER.parseDelimitedFrom(input, extensionRegistry); } public static org.xtreemfs.pbrpc.generatedinterfaces.MRC.XAttr parseFrom( com.google.protobuf.CodedInputStream input) throws java.io.IOException { - return newBuilder().mergeFrom(input).buildParsed(); + return PARSER.parseFrom(input); } public static org.xtreemfs.pbrpc.generatedinterfaces.MRC.XAttr parseFrom( com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - return newBuilder().mergeFrom(input, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(input, extensionRegistry); } - + public static Builder newBuilder() { return Builder.create(); } public Builder newBuilderForType() { return newBuilder(); } public static Builder newBuilder(org.xtreemfs.pbrpc.generatedinterfaces.MRC.XAttr prototype) { return newBuilder().mergeFrom(prototype); } public Builder toBuilder() { return newBuilder(this); } - + + @java.lang.Override + protected Builder newBuilderForType( + com.google.protobuf.GeneratedMessage.BuilderParent parent) { + Builder builder = new Builder(parent); + return builder; + } + /** + * Protobuf type {@code xtreemfs.pbrpc.XAttr} + * + *
+     * extended attribute of a file or directory
+     * 
+ */ public static final class Builder extends - com.google.protobuf.GeneratedMessage.Builder { - private org.xtreemfs.pbrpc.generatedinterfaces.MRC.XAttr result; - - // Construct using org.xtreemfs.pbrpc.generatedinterfaces.MRC.XAttr.newBuilder() - private Builder() {} - - private static Builder create() { - Builder builder = new Builder(); - builder.result = new org.xtreemfs.pbrpc.generatedinterfaces.MRC.XAttr(); - return builder; + com.google.protobuf.GeneratedMessage.Builder + implements org.xtreemfs.pbrpc.generatedinterfaces.MRC.XAttrOrBuilder { + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return org.xtreemfs.pbrpc.generatedinterfaces.MRC.internal_static_xtreemfs_pbrpc_XAttr_descriptor; } - - protected org.xtreemfs.pbrpc.generatedinterfaces.MRC.XAttr internalGetResult() { - return result; + + protected com.google.protobuf.GeneratedMessage.FieldAccessorTable + internalGetFieldAccessorTable() { + return org.xtreemfs.pbrpc.generatedinterfaces.MRC.internal_static_xtreemfs_pbrpc_XAttr_fieldAccessorTable + .ensureFieldAccessorsInitialized( + org.xtreemfs.pbrpc.generatedinterfaces.MRC.XAttr.class, org.xtreemfs.pbrpc.generatedinterfaces.MRC.XAttr.Builder.class); } - - public Builder clear() { - if (result == null) { - throw new IllegalStateException( - "Cannot call clear() after build()."); + + // Construct using org.xtreemfs.pbrpc.generatedinterfaces.MRC.XAttr.newBuilder() + private Builder() { + maybeForceBuilderInitialization(); + } + + private Builder( + com.google.protobuf.GeneratedMessage.BuilderParent parent) { + super(parent); + maybeForceBuilderInitialization(); + } + private void maybeForceBuilderInitialization() { + if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) { } - result = new org.xtreemfs.pbrpc.generatedinterfaces.MRC.XAttr(); + } + private static Builder create() { + return new Builder(); + } + + public Builder clear() { + super.clear(); + name_ = ""; + bitField0_ = (bitField0_ & ~0x00000001); + value_ = ""; + bitField0_ = (bitField0_ & ~0x00000002); + valueBytesString_ = com.google.protobuf.ByteString.EMPTY; + bitField0_ = (bitField0_ & ~0x00000004); return this; } - + public Builder clone() { - return create().mergeFrom(result); + return create().mergeFrom(buildPartial()); } - + public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() { - return org.xtreemfs.pbrpc.generatedinterfaces.MRC.XAttr.getDescriptor(); + return org.xtreemfs.pbrpc.generatedinterfaces.MRC.internal_static_xtreemfs_pbrpc_XAttr_descriptor; } - + public org.xtreemfs.pbrpc.generatedinterfaces.MRC.XAttr getDefaultInstanceForType() { return org.xtreemfs.pbrpc.generatedinterfaces.MRC.XAttr.getDefaultInstance(); } - - public boolean isInitialized() { - return result.isInitialized(); - } + public org.xtreemfs.pbrpc.generatedinterfaces.MRC.XAttr build() { - if (result != null && !isInitialized()) { + org.xtreemfs.pbrpc.generatedinterfaces.MRC.XAttr result = buildPartial(); + if (!result.isInitialized()) { throw newUninitializedMessageException(result); } - return buildPartial(); - } - - private org.xtreemfs.pbrpc.generatedinterfaces.MRC.XAttr buildParsed() - throws com.google.protobuf.InvalidProtocolBufferException { - if (!isInitialized()) { - throw newUninitializedMessageException( - result).asInvalidProtocolBufferException(); - } - return buildPartial(); + return result; } - + public org.xtreemfs.pbrpc.generatedinterfaces.MRC.XAttr buildPartial() { - if (result == null) { - throw new IllegalStateException( - "build() has already been called on this Builder."); - } - org.xtreemfs.pbrpc.generatedinterfaces.MRC.XAttr returnMe = result; - result = null; - return returnMe; + org.xtreemfs.pbrpc.generatedinterfaces.MRC.XAttr result = new org.xtreemfs.pbrpc.generatedinterfaces.MRC.XAttr(this); + int from_bitField0_ = bitField0_; + int to_bitField0_ = 0; + if (((from_bitField0_ & 0x00000001) == 0x00000001)) { + to_bitField0_ |= 0x00000001; + } + result.name_ = name_; + if (((from_bitField0_ & 0x00000002) == 0x00000002)) { + to_bitField0_ |= 0x00000002; + } + result.value_ = value_; + if (((from_bitField0_ & 0x00000004) == 0x00000004)) { + to_bitField0_ |= 0x00000004; + } + result.valueBytesString_ = valueBytesString_; + result.bitField0_ = to_bitField0_; + onBuilt(); + return result; } - + public Builder mergeFrom(com.google.protobuf.Message other) { if (other instanceof org.xtreemfs.pbrpc.generatedinterfaces.MRC.XAttr) { return mergeFrom((org.xtreemfs.pbrpc.generatedinterfaces.MRC.XAttr)other); @@ -1966,461 +4630,1408 @@ public final class MRC { return this; } } - + public Builder mergeFrom(org.xtreemfs.pbrpc.generatedinterfaces.MRC.XAttr other) { if (other == org.xtreemfs.pbrpc.generatedinterfaces.MRC.XAttr.getDefaultInstance()) return this; if (other.hasName()) { - setName(other.getName()); + bitField0_ |= 0x00000001; + name_ = other.name_; + onChanged(); } if (other.hasValue()) { - setValue(other.getValue()); + bitField0_ |= 0x00000002; + value_ = other.value_; + onChanged(); } - if (other.hasValueBytes()) { - setValueBytes(other.getValueBytes()); + if (other.hasValueBytesString()) { + setValueBytesString(other.getValueBytesString()); } this.mergeUnknownFields(other.getUnknownFields()); return this; } - + + public final boolean isInitialized() { + if (!hasName()) { + + return false; + } + return true; + } + public Builder mergeFrom( com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - com.google.protobuf.UnknownFieldSet.Builder unknownFields = - com.google.protobuf.UnknownFieldSet.newBuilder( - this.getUnknownFields()); - while (true) { - int tag = input.readTag(); - switch (tag) { - case 0: - this.setUnknownFields(unknownFields.build()); - return this; - default: { - if (!parseUnknownField(input, unknownFields, - extensionRegistry, tag)) { - this.setUnknownFields(unknownFields.build()); - return this; - } - break; - } - case 10: { - setName(input.readString()); - break; - } - case 18: { - setValue(input.readString()); - break; - } - case 26: { - setValueBytes(input.readBytes()); - break; - } + org.xtreemfs.pbrpc.generatedinterfaces.MRC.XAttr parsedMessage = null; + try { + parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + parsedMessage = (org.xtreemfs.pbrpc.generatedinterfaces.MRC.XAttr) e.getUnfinishedMessage(); + throw e; + } finally { + if (parsedMessage != null) { + mergeFrom(parsedMessage); } } + return this; } - - + private int bitField0_; + // required string name = 1; + private java.lang.Object name_ = ""; + /** + * required string name = 1; + * + *
+       * attribute name
+       * 
+ */ public boolean hasName() { - return result.hasName(); - } + return ((bitField0_ & 0x00000001) == 0x00000001); + } + /** + * required string name = 1; + * + *
+       * attribute name
+       * 
+ */ public java.lang.String getName() { - return result.getName(); - } - public Builder setName(java.lang.String value) { + java.lang.Object ref = name_; + if (!(ref instanceof java.lang.String)) { + java.lang.String s = ((com.google.protobuf.ByteString) ref) + .toStringUtf8(); + name_ = s; + return s; + } else { + return (java.lang.String) ref; + } + } + /** + * required string name = 1; + * + *
+       * attribute name
+       * 
+ */ + public com.google.protobuf.ByteString + getNameBytes() { + java.lang.Object ref = name_; + if (ref instanceof String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + name_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + /** + * required string name = 1; + * + *
+       * attribute name
+       * 
+ */ + public Builder setName( + java.lang.String value) { if (value == null) { throw new NullPointerException(); } - result.hasName = true; - result.name_ = value; - return this; - } + bitField0_ |= 0x00000001; + name_ = value; + onChanged(); + return this; + } + /** + * required string name = 1; + * + *
+       * attribute name
+       * 
+ */ public Builder clearName() { - result.hasName = false; - result.name_ = getDefaultInstance().getName(); + bitField0_ = (bitField0_ & ~0x00000001); + name_ = getDefaultInstance().getName(); + onChanged(); + return this; + } + /** + * required string name = 1; + * + *
+       * attribute name
+       * 
+ */ + public Builder setNameBytes( + com.google.protobuf.ByteString value) { + if (value == null) { + throw new NullPointerException(); + } + bitField0_ |= 0x00000001; + name_ = value; + onChanged(); return this; } - + // optional string value = 2; + private java.lang.Object value_ = ""; + /** + * optional string value = 2; + * + *
+       * attribute value; can be empty on a 'listxattr' call for names only
+       * 
+ */ public boolean hasValue() { - return result.hasValue(); - } + return ((bitField0_ & 0x00000002) == 0x00000002); + } + /** + * optional string value = 2; + * + *
+       * attribute value; can be empty on a 'listxattr' call for names only
+       * 
+ */ public java.lang.String getValue() { - return result.getValue(); - } - public Builder setValue(java.lang.String value) { + java.lang.Object ref = value_; + if (!(ref instanceof java.lang.String)) { + java.lang.String s = ((com.google.protobuf.ByteString) ref) + .toStringUtf8(); + value_ = s; + return s; + } else { + return (java.lang.String) ref; + } + } + /** + * optional string value = 2; + * + *
+       * attribute value; can be empty on a 'listxattr' call for names only
+       * 
+ */ + public com.google.protobuf.ByteString + getValueBytes() { + java.lang.Object ref = value_; + if (ref instanceof String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + value_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + /** + * optional string value = 2; + * + *
+       * attribute value; can be empty on a 'listxattr' call for names only
+       * 
+ */ + public Builder setValue( + java.lang.String value) { if (value == null) { throw new NullPointerException(); } - result.hasValue = true; - result.value_ = value; - return this; - } + bitField0_ |= 0x00000002; + value_ = value; + onChanged(); + return this; + } + /** + * optional string value = 2; + * + *
+       * attribute value; can be empty on a 'listxattr' call for names only
+       * 
+ */ public Builder clearValue() { - result.hasValue = false; - result.value_ = getDefaultInstance().getValue(); - return this; - } - - // optional bytes value_bytes = 3; - public boolean hasValueBytes() { - return result.hasValueBytes(); - } - public com.google.protobuf.ByteString getValueBytes() { - return result.getValueBytes(); - } - public Builder setValueBytes(com.google.protobuf.ByteString value) { + bitField0_ = (bitField0_ & ~0x00000002); + value_ = getDefaultInstance().getValue(); + onChanged(); + return this; + } + /** + * optional string value = 2; + * + *
+       * attribute value; can be empty on a 'listxattr' call for names only
+       * 
+ */ + public Builder setValueBytes( + com.google.protobuf.ByteString value) { if (value == null) { throw new NullPointerException(); } - result.hasValueBytes = true; - result.valueBytes_ = value; + bitField0_ |= 0x00000002; + value_ = value; + onChanged(); return this; } - public Builder clearValueBytes() { - result.hasValueBytes = false; - result.valueBytes_ = getDefaultInstance().getValueBytes(); + + // optional bytes value_bytes_string = 3; + private com.google.protobuf.ByteString valueBytesString_ = com.google.protobuf.ByteString.EMPTY; + /** + * optional bytes value_bytes_string = 3; + * + *
+       * redundant field of "value" which also accepts binary values (needed
+       * for storing the value of "system.posix_acl_access",
+       * added after version 1.3.1)
+       * If both value and value_bytes are present, value_bytes will always
+       * be preferred. For backward compability "value" always has to be set,
+       * even if "value_bytes" is available.
+       * 
+ */ + public boolean hasValueBytesString() { + return ((bitField0_ & 0x00000004) == 0x00000004); + } + /** + * optional bytes value_bytes_string = 3; + * + *
+       * redundant field of "value" which also accepts binary values (needed
+       * for storing the value of "system.posix_acl_access",
+       * added after version 1.3.1)
+       * If both value and value_bytes are present, value_bytes will always
+       * be preferred. For backward compability "value" always has to be set,
+       * even if "value_bytes" is available.
+       * 
+ */ + public com.google.protobuf.ByteString getValueBytesString() { + return valueBytesString_; + } + /** + * optional bytes value_bytes_string = 3; + * + *
+       * redundant field of "value" which also accepts binary values (needed
+       * for storing the value of "system.posix_acl_access",
+       * added after version 1.3.1)
+       * If both value and value_bytes are present, value_bytes will always
+       * be preferred. For backward compability "value" always has to be set,
+       * even if "value_bytes" is available.
+       * 
+ */ + public Builder setValueBytesString(com.google.protobuf.ByteString value) { + if (value == null) { + throw new NullPointerException(); + } + bitField0_ |= 0x00000004; + valueBytesString_ = value; + onChanged(); + return this; + } + /** + * optional bytes value_bytes_string = 3; + * + *
+       * redundant field of "value" which also accepts binary values (needed
+       * for storing the value of "system.posix_acl_access",
+       * added after version 1.3.1)
+       * If both value and value_bytes are present, value_bytes will always
+       * be preferred. For backward compability "value" always has to be set,
+       * even if "value_bytes" is available.
+       * 
+ */ + public Builder clearValueBytesString() { + bitField0_ = (bitField0_ & ~0x00000004); + valueBytesString_ = getDefaultInstance().getValueBytesString(); + onChanged(); return this; } - + // @@protoc_insertion_point(builder_scope:xtreemfs.pbrpc.XAttr) } - + static { defaultInstance = new XAttr(true); - org.xtreemfs.pbrpc.generatedinterfaces.MRC.internalForceInit(); defaultInstance.initFields(); } - + // @@protoc_insertion_point(class_scope:xtreemfs.pbrpc.XAttr) } - + + public interface VolumeOrBuilder + extends com.google.protobuf.MessageOrBuilder { + + // required .xtreemfs.pbrpc.AccessControlPolicyType access_control_policy = 1; + /** + * required .xtreemfs.pbrpc.AccessControlPolicyType access_control_policy = 1; + * + *
+     * access control policy to be assigned to the volume
+     * 
+ */ + boolean hasAccessControlPolicy(); + /** + * required .xtreemfs.pbrpc.AccessControlPolicyType access_control_policy = 1; + * + *
+     * access control policy to be assigned to the volume
+     * 
+ */ + org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.AccessControlPolicyType getAccessControlPolicy(); + + // required .xtreemfs.pbrpc.StripingPolicy default_striping_policy = 2; + /** + * required .xtreemfs.pbrpc.StripingPolicy default_striping_policy = 2; + * + *
+     * default striping policy to be assigned to the volume
+     * 
+ */ + boolean hasDefaultStripingPolicy(); + /** + * required .xtreemfs.pbrpc.StripingPolicy default_striping_policy = 2; + * + *
+     * default striping policy to be assigned to the volume
+     * 
+ */ + org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.StripingPolicy getDefaultStripingPolicy(); + /** + * required .xtreemfs.pbrpc.StripingPolicy default_striping_policy = 2; + * + *
+     * default striping policy to be assigned to the volume
+     * 
+ */ + org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.StripingPolicyOrBuilder getDefaultStripingPolicyOrBuilder(); + + // required string id = 3; + /** + * required string id = 3; + * + *
+     * volume ID
+     * 
+ */ + boolean hasId(); + /** + * required string id = 3; + * + *
+     * volume ID
+     * 
+ */ + java.lang.String getId(); + /** + * required string id = 3; + * + *
+     * volume ID
+     * 
+ */ + com.google.protobuf.ByteString + getIdBytes(); + + // required fixed32 mode = 4; + /** + * required fixed32 mode = 4; + * + *
+     * initial access mode for the root directory 
+     * 
+ */ + boolean hasMode(); + /** + * required fixed32 mode = 4; + * + *
+     * initial access mode for the root directory 
+     * 
+ */ + int getMode(); + + // required string name = 5; + /** + * required string name = 5; + * + *
+     * volume name
+     * 
+ */ + boolean hasName(); + /** + * required string name = 5; + * + *
+     * volume name
+     * 
+ */ + java.lang.String getName(); + /** + * required string name = 5; + * + *
+     * volume name
+     * 
+ */ + com.google.protobuf.ByteString + getNameBytes(); + + // required string owner_group_id = 6; + /** + * required string owner_group_id = 6; + * + *
+     * owning group ID of the volume (i.e. volume's root directory)
+     * 
+ */ + boolean hasOwnerGroupId(); + /** + * required string owner_group_id = 6; + * + *
+     * owning group ID of the volume (i.e. volume's root directory)
+     * 
+ */ + java.lang.String getOwnerGroupId(); + /** + * required string owner_group_id = 6; + * + *
+     * owning group ID of the volume (i.e. volume's root directory)
+     * 
+ */ + com.google.protobuf.ByteString + getOwnerGroupIdBytes(); + + // required string owner_user_id = 7; + /** + * required string owner_user_id = 7; + * + *
+     * owning user ID of the volume (i.e. volume's root directory)
+     * 
+ */ + boolean hasOwnerUserId(); + /** + * required string owner_user_id = 7; + * + *
+     * owning user ID of the volume (i.e. volume's root directory)
+     * 
+ */ + java.lang.String getOwnerUserId(); + /** + * required string owner_user_id = 7; + * + *
+     * owning user ID of the volume (i.e. volume's root directory)
+     * 
+ */ + com.google.protobuf.ByteString + getOwnerUserIdBytes(); + + // repeated .xtreemfs.pbrpc.KeyValuePair attrs = 8; + /** + * repeated .xtreemfs.pbrpc.KeyValuePair attrs = 8; + * + *
+     * optional configuration attributes for the volume
+     * 
+ */ + java.util.List + getAttrsList(); + /** + * repeated .xtreemfs.pbrpc.KeyValuePair attrs = 8; + * + *
+     * optional configuration attributes for the volume
+     * 
+ */ + org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.KeyValuePair getAttrs(int index); + /** + * repeated .xtreemfs.pbrpc.KeyValuePair attrs = 8; + * + *
+     * optional configuration attributes for the volume
+     * 
+ */ + int getAttrsCount(); + /** + * repeated .xtreemfs.pbrpc.KeyValuePair attrs = 8; + * + *
+     * optional configuration attributes for the volume
+     * 
+ */ + java.util.List + getAttrsOrBuilderList(); + /** + * repeated .xtreemfs.pbrpc.KeyValuePair attrs = 8; + * + *
+     * optional configuration attributes for the volume
+     * 
+ */ + org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.KeyValuePairOrBuilder getAttrsOrBuilder( + int index); + } + /** + * Protobuf type {@code xtreemfs.pbrpc.Volume} + * + *
+   * information about a volume; relevant for the 'xtfs_mkvol' call
+   * 
+ */ public static final class Volume extends - com.google.protobuf.GeneratedMessage { + com.google.protobuf.GeneratedMessage + implements VolumeOrBuilder { // Use Volume.newBuilder() to construct. - private Volume() { - initFields(); + private Volume(com.google.protobuf.GeneratedMessage.Builder builder) { + super(builder); + this.unknownFields = builder.getUnknownFields(); } - private Volume(boolean noInit) {} - + private Volume(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); } + private static final Volume defaultInstance; public static Volume getDefaultInstance() { return defaultInstance; } - + public Volume getDefaultInstanceForType() { return defaultInstance; } - + + private final com.google.protobuf.UnknownFieldSet unknownFields; + @java.lang.Override + public final com.google.protobuf.UnknownFieldSet + getUnknownFields() { + return this.unknownFields; + } + private Volume( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + initFields(); + int mutable_bitField0_ = 0; + com.google.protobuf.UnknownFieldSet.Builder unknownFields = + com.google.protobuf.UnknownFieldSet.newBuilder(); + try { + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch (tag) { + case 0: + done = true; + break; + default: { + if (!parseUnknownField(input, unknownFields, + extensionRegistry, tag)) { + done = true; + } + break; + } + case 8: { + int rawValue = input.readEnum(); + org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.AccessControlPolicyType value = org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.AccessControlPolicyType.valueOf(rawValue); + if (value == null) { + unknownFields.mergeVarintField(1, rawValue); + } else { + bitField0_ |= 0x00000001; + accessControlPolicy_ = value; + } + break; + } + case 18: { + org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.StripingPolicy.Builder subBuilder = null; + if (((bitField0_ & 0x00000002) == 0x00000002)) { + subBuilder = defaultStripingPolicy_.toBuilder(); + } + defaultStripingPolicy_ = input.readMessage(org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.StripingPolicy.PARSER, extensionRegistry); + if (subBuilder != null) { + subBuilder.mergeFrom(defaultStripingPolicy_); + defaultStripingPolicy_ = subBuilder.buildPartial(); + } + bitField0_ |= 0x00000002; + break; + } + case 26: { + bitField0_ |= 0x00000004; + id_ = input.readBytes(); + break; + } + case 37: { + bitField0_ |= 0x00000008; + mode_ = input.readFixed32(); + break; + } + case 42: { + bitField0_ |= 0x00000010; + name_ = input.readBytes(); + break; + } + case 50: { + bitField0_ |= 0x00000020; + ownerGroupId_ = input.readBytes(); + break; + } + case 58: { + bitField0_ |= 0x00000040; + ownerUserId_ = input.readBytes(); + break; + } + case 66: { + if (!((mutable_bitField0_ & 0x00000080) == 0x00000080)) { + attrs_ = new java.util.ArrayList(); + mutable_bitField0_ |= 0x00000080; + } + attrs_.add(input.readMessage(org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.KeyValuePair.PARSER, extensionRegistry)); + break; + } + } + } + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(this); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException( + e.getMessage()).setUnfinishedMessage(this); + } finally { + if (((mutable_bitField0_ & 0x00000080) == 0x00000080)) { + attrs_ = java.util.Collections.unmodifiableList(attrs_); + } + this.unknownFields = unknownFields.build(); + makeExtensionsImmutable(); + } + } public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { return org.xtreemfs.pbrpc.generatedinterfaces.MRC.internal_static_xtreemfs_pbrpc_Volume_descriptor; } - + protected com.google.protobuf.GeneratedMessage.FieldAccessorTable internalGetFieldAccessorTable() { - return org.xtreemfs.pbrpc.generatedinterfaces.MRC.internal_static_xtreemfs_pbrpc_Volume_fieldAccessorTable; + return org.xtreemfs.pbrpc.generatedinterfaces.MRC.internal_static_xtreemfs_pbrpc_Volume_fieldAccessorTable + .ensureFieldAccessorsInitialized( + org.xtreemfs.pbrpc.generatedinterfaces.MRC.Volume.class, org.xtreemfs.pbrpc.generatedinterfaces.MRC.Volume.Builder.class); + } + + public static com.google.protobuf.Parser PARSER = + new com.google.protobuf.AbstractParser() { + public Volume parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return new Volume(input, extensionRegistry); + } + }; + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; } - + + private int bitField0_; // required .xtreemfs.pbrpc.AccessControlPolicyType access_control_policy = 1; public static final int ACCESS_CONTROL_POLICY_FIELD_NUMBER = 1; - private boolean hasAccessControlPolicy; private org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.AccessControlPolicyType accessControlPolicy_; - public boolean hasAccessControlPolicy() { return hasAccessControlPolicy; } - public org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.AccessControlPolicyType getAccessControlPolicy() { return accessControlPolicy_; } - + /** + * required .xtreemfs.pbrpc.AccessControlPolicyType access_control_policy = 1; + * + *
+     * access control policy to be assigned to the volume
+     * 
+ */ + public boolean hasAccessControlPolicy() { + return ((bitField0_ & 0x00000001) == 0x00000001); + } + /** + * required .xtreemfs.pbrpc.AccessControlPolicyType access_control_policy = 1; + * + *
+     * access control policy to be assigned to the volume
+     * 
+ */ + public org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.AccessControlPolicyType getAccessControlPolicy() { + return accessControlPolicy_; + } + // required .xtreemfs.pbrpc.StripingPolicy default_striping_policy = 2; public static final int DEFAULT_STRIPING_POLICY_FIELD_NUMBER = 2; - private boolean hasDefaultStripingPolicy; private org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.StripingPolicy defaultStripingPolicy_; - public boolean hasDefaultStripingPolicy() { return hasDefaultStripingPolicy; } - public org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.StripingPolicy getDefaultStripingPolicy() { return defaultStripingPolicy_; } - + /** + * required .xtreemfs.pbrpc.StripingPolicy default_striping_policy = 2; + * + *
+     * default striping policy to be assigned to the volume
+     * 
+ */ + public boolean hasDefaultStripingPolicy() { + return ((bitField0_ & 0x00000002) == 0x00000002); + } + /** + * required .xtreemfs.pbrpc.StripingPolicy default_striping_policy = 2; + * + *
+     * default striping policy to be assigned to the volume
+     * 
+ */ + public org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.StripingPolicy getDefaultStripingPolicy() { + return defaultStripingPolicy_; + } + /** + * required .xtreemfs.pbrpc.StripingPolicy default_striping_policy = 2; + * + *
+     * default striping policy to be assigned to the volume
+     * 
+ */ + public org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.StripingPolicyOrBuilder getDefaultStripingPolicyOrBuilder() { + return defaultStripingPolicy_; + } + // required string id = 3; public static final int ID_FIELD_NUMBER = 3; - private boolean hasId; - private java.lang.String id_ = ""; - public boolean hasId() { return hasId; } - public java.lang.String getId() { return id_; } - + private java.lang.Object id_; + /** + * required string id = 3; + * + *
+     * volume ID
+     * 
+ */ + public boolean hasId() { + return ((bitField0_ & 0x00000004) == 0x00000004); + } + /** + * required string id = 3; + * + *
+     * volume ID
+     * 
+ */ + public java.lang.String getId() { + java.lang.Object ref = id_; + if (ref instanceof java.lang.String) { + return (java.lang.String) ref; + } else { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + if (bs.isValidUtf8()) { + id_ = s; + } + return s; + } + } + /** + * required string id = 3; + * + *
+     * volume ID
+     * 
+ */ + public com.google.protobuf.ByteString + getIdBytes() { + java.lang.Object ref = id_; + if (ref instanceof java.lang.String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + id_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + // required fixed32 mode = 4; public static final int MODE_FIELD_NUMBER = 4; - private boolean hasMode; - private int mode_ = 0; - public boolean hasMode() { return hasMode; } - public int getMode() { return mode_; } - + private int mode_; + /** + * required fixed32 mode = 4; + * + *
+     * initial access mode for the root directory 
+     * 
+ */ + public boolean hasMode() { + return ((bitField0_ & 0x00000008) == 0x00000008); + } + /** + * required fixed32 mode = 4; + * + *
+     * initial access mode for the root directory 
+     * 
+ */ + public int getMode() { + return mode_; + } + // required string name = 5; public static final int NAME_FIELD_NUMBER = 5; - private boolean hasName; - private java.lang.String name_ = ""; - public boolean hasName() { return hasName; } - public java.lang.String getName() { return name_; } - + private java.lang.Object name_; + /** + * required string name = 5; + * + *
+     * volume name
+     * 
+ */ + public boolean hasName() { + return ((bitField0_ & 0x00000010) == 0x00000010); + } + /** + * required string name = 5; + * + *
+     * volume name
+     * 
+ */ + public java.lang.String getName() { + java.lang.Object ref = name_; + if (ref instanceof java.lang.String) { + return (java.lang.String) ref; + } else { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + if (bs.isValidUtf8()) { + name_ = s; + } + return s; + } + } + /** + * required string name = 5; + * + *
+     * volume name
+     * 
+ */ + public com.google.protobuf.ByteString + getNameBytes() { + java.lang.Object ref = name_; + if (ref instanceof java.lang.String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + name_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + // required string owner_group_id = 6; public static final int OWNER_GROUP_ID_FIELD_NUMBER = 6; - private boolean hasOwnerGroupId; - private java.lang.String ownerGroupId_ = ""; - public boolean hasOwnerGroupId() { return hasOwnerGroupId; } - public java.lang.String getOwnerGroupId() { return ownerGroupId_; } - + private java.lang.Object ownerGroupId_; + /** + * required string owner_group_id = 6; + * + *
+     * owning group ID of the volume (i.e. volume's root directory)
+     * 
+ */ + public boolean hasOwnerGroupId() { + return ((bitField0_ & 0x00000020) == 0x00000020); + } + /** + * required string owner_group_id = 6; + * + *
+     * owning group ID of the volume (i.e. volume's root directory)
+     * 
+ */ + public java.lang.String getOwnerGroupId() { + java.lang.Object ref = ownerGroupId_; + if (ref instanceof java.lang.String) { + return (java.lang.String) ref; + } else { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + if (bs.isValidUtf8()) { + ownerGroupId_ = s; + } + return s; + } + } + /** + * required string owner_group_id = 6; + * + *
+     * owning group ID of the volume (i.e. volume's root directory)
+     * 
+ */ + public com.google.protobuf.ByteString + getOwnerGroupIdBytes() { + java.lang.Object ref = ownerGroupId_; + if (ref instanceof java.lang.String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + ownerGroupId_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + // required string owner_user_id = 7; public static final int OWNER_USER_ID_FIELD_NUMBER = 7; - private boolean hasOwnerUserId; - private java.lang.String ownerUserId_ = ""; - public boolean hasOwnerUserId() { return hasOwnerUserId; } - public java.lang.String getOwnerUserId() { return ownerUserId_; } - + private java.lang.Object ownerUserId_; + /** + * required string owner_user_id = 7; + * + *
+     * owning user ID of the volume (i.e. volume's root directory)
+     * 
+ */ + public boolean hasOwnerUserId() { + return ((bitField0_ & 0x00000040) == 0x00000040); + } + /** + * required string owner_user_id = 7; + * + *
+     * owning user ID of the volume (i.e. volume's root directory)
+     * 
+ */ + public java.lang.String getOwnerUserId() { + java.lang.Object ref = ownerUserId_; + if (ref instanceof java.lang.String) { + return (java.lang.String) ref; + } else { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + if (bs.isValidUtf8()) { + ownerUserId_ = s; + } + return s; + } + } + /** + * required string owner_user_id = 7; + * + *
+     * owning user ID of the volume (i.e. volume's root directory)
+     * 
+ */ + public com.google.protobuf.ByteString + getOwnerUserIdBytes() { + java.lang.Object ref = ownerUserId_; + if (ref instanceof java.lang.String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + ownerUserId_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + // repeated .xtreemfs.pbrpc.KeyValuePair attrs = 8; public static final int ATTRS_FIELD_NUMBER = 8; - private java.util.List attrs_ = - java.util.Collections.emptyList(); + private java.util.List attrs_; + /** + * repeated .xtreemfs.pbrpc.KeyValuePair attrs = 8; + * + *
+     * optional configuration attributes for the volume
+     * 
+ */ public java.util.List getAttrsList() { return attrs_; } - public int getAttrsCount() { return attrs_.size(); } + /** + * repeated .xtreemfs.pbrpc.KeyValuePair attrs = 8; + * + *
+     * optional configuration attributes for the volume
+     * 
+ */ + public java.util.List + getAttrsOrBuilderList() { + return attrs_; + } + /** + * repeated .xtreemfs.pbrpc.KeyValuePair attrs = 8; + * + *
+     * optional configuration attributes for the volume
+     * 
+ */ + public int getAttrsCount() { + return attrs_.size(); + } + /** + * repeated .xtreemfs.pbrpc.KeyValuePair attrs = 8; + * + *
+     * optional configuration attributes for the volume
+     * 
+ */ public org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.KeyValuePair getAttrs(int index) { return attrs_.get(index); } - + /** + * repeated .xtreemfs.pbrpc.KeyValuePair attrs = 8; + * + *
+     * optional configuration attributes for the volume
+     * 
+ */ + public org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.KeyValuePairOrBuilder getAttrsOrBuilder( + int index) { + return attrs_.get(index); + } + private void initFields() { accessControlPolicy_ = org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.AccessControlPolicyType.ACCESS_CONTROL_POLICY_NULL; defaultStripingPolicy_ = org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.StripingPolicy.getDefaultInstance(); - } + id_ = ""; + mode_ = 0; + name_ = ""; + ownerGroupId_ = ""; + ownerUserId_ = ""; + attrs_ = java.util.Collections.emptyList(); + } + private byte memoizedIsInitialized = -1; public final boolean isInitialized() { - if (!hasAccessControlPolicy) return false; - if (!hasDefaultStripingPolicy) return false; - if (!hasId) return false; - if (!hasMode) return false; - if (!hasName) return false; - if (!hasOwnerGroupId) return false; - if (!hasOwnerUserId) return false; - if (!getDefaultStripingPolicy().isInitialized()) return false; - for (org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.KeyValuePair element : getAttrsList()) { - if (!element.isInitialized()) return false; + byte isInitialized = memoizedIsInitialized; + if (isInitialized != -1) return isInitialized == 1; + + if (!hasAccessControlPolicy()) { + memoizedIsInitialized = 0; + return false; + } + if (!hasDefaultStripingPolicy()) { + memoizedIsInitialized = 0; + return false; + } + if (!hasId()) { + memoizedIsInitialized = 0; + return false; + } + if (!hasMode()) { + memoizedIsInitialized = 0; + return false; + } + if (!hasName()) { + memoizedIsInitialized = 0; + return false; } + if (!hasOwnerGroupId()) { + memoizedIsInitialized = 0; + return false; + } + if (!hasOwnerUserId()) { + memoizedIsInitialized = 0; + return false; + } + if (!getDefaultStripingPolicy().isInitialized()) { + memoizedIsInitialized = 0; + return false; + } + for (int i = 0; i < getAttrsCount(); i++) { + if (!getAttrs(i).isInitialized()) { + memoizedIsInitialized = 0; + return false; + } + } + memoizedIsInitialized = 1; return true; } - + public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException { getSerializedSize(); - if (hasAccessControlPolicy()) { - output.writeEnum(1, getAccessControlPolicy().getNumber()); + if (((bitField0_ & 0x00000001) == 0x00000001)) { + output.writeEnum(1, accessControlPolicy_.getNumber()); } - if (hasDefaultStripingPolicy()) { - output.writeMessage(2, getDefaultStripingPolicy()); + if (((bitField0_ & 0x00000002) == 0x00000002)) { + output.writeMessage(2, defaultStripingPolicy_); } - if (hasId()) { - output.writeString(3, getId()); + if (((bitField0_ & 0x00000004) == 0x00000004)) { + output.writeBytes(3, getIdBytes()); } - if (hasMode()) { - output.writeFixed32(4, getMode()); + if (((bitField0_ & 0x00000008) == 0x00000008)) { + output.writeFixed32(4, mode_); } - if (hasName()) { - output.writeString(5, getName()); + if (((bitField0_ & 0x00000010) == 0x00000010)) { + output.writeBytes(5, getNameBytes()); } - if (hasOwnerGroupId()) { - output.writeString(6, getOwnerGroupId()); + if (((bitField0_ & 0x00000020) == 0x00000020)) { + output.writeBytes(6, getOwnerGroupIdBytes()); } - if (hasOwnerUserId()) { - output.writeString(7, getOwnerUserId()); + if (((bitField0_ & 0x00000040) == 0x00000040)) { + output.writeBytes(7, getOwnerUserIdBytes()); } - for (org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.KeyValuePair element : getAttrsList()) { - output.writeMessage(8, element); + for (int i = 0; i < attrs_.size(); i++) { + output.writeMessage(8, attrs_.get(i)); } getUnknownFields().writeTo(output); } - + private int memoizedSerializedSize = -1; public int getSerializedSize() { int size = memoizedSerializedSize; if (size != -1) return size; - + size = 0; - if (hasAccessControlPolicy()) { + if (((bitField0_ & 0x00000001) == 0x00000001)) { size += com.google.protobuf.CodedOutputStream - .computeEnumSize(1, getAccessControlPolicy().getNumber()); + .computeEnumSize(1, accessControlPolicy_.getNumber()); } - if (hasDefaultStripingPolicy()) { + if (((bitField0_ & 0x00000002) == 0x00000002)) { size += com.google.protobuf.CodedOutputStream - .computeMessageSize(2, getDefaultStripingPolicy()); + .computeMessageSize(2, defaultStripingPolicy_); } - if (hasId()) { + if (((bitField0_ & 0x00000004) == 0x00000004)) { size += com.google.protobuf.CodedOutputStream - .computeStringSize(3, getId()); + .computeBytesSize(3, getIdBytes()); } - if (hasMode()) { + if (((bitField0_ & 0x00000008) == 0x00000008)) { size += com.google.protobuf.CodedOutputStream - .computeFixed32Size(4, getMode()); + .computeFixed32Size(4, mode_); } - if (hasName()) { + if (((bitField0_ & 0x00000010) == 0x00000010)) { size += com.google.protobuf.CodedOutputStream - .computeStringSize(5, getName()); + .computeBytesSize(5, getNameBytes()); } - if (hasOwnerGroupId()) { + if (((bitField0_ & 0x00000020) == 0x00000020)) { size += com.google.protobuf.CodedOutputStream - .computeStringSize(6, getOwnerGroupId()); + .computeBytesSize(6, getOwnerGroupIdBytes()); } - if (hasOwnerUserId()) { + if (((bitField0_ & 0x00000040) == 0x00000040)) { size += com.google.protobuf.CodedOutputStream - .computeStringSize(7, getOwnerUserId()); + .computeBytesSize(7, getOwnerUserIdBytes()); } - for (org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.KeyValuePair element : getAttrsList()) { + for (int i = 0; i < attrs_.size(); i++) { size += com.google.protobuf.CodedOutputStream - .computeMessageSize(8, element); + .computeMessageSize(8, attrs_.get(i)); } size += getUnknownFields().getSerializedSize(); memoizedSerializedSize = size; return size; } - + + private static final long serialVersionUID = 0L; + @java.lang.Override + protected java.lang.Object writeReplace() + throws java.io.ObjectStreamException { + return super.writeReplace(); + } + public static org.xtreemfs.pbrpc.generatedinterfaces.MRC.Volume parseFrom( com.google.protobuf.ByteString data) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data).buildParsed(); + return PARSER.parseFrom(data); } public static org.xtreemfs.pbrpc.generatedinterfaces.MRC.Volume parseFrom( com.google.protobuf.ByteString data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(data, extensionRegistry); } public static org.xtreemfs.pbrpc.generatedinterfaces.MRC.Volume parseFrom(byte[] data) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data).buildParsed(); + return PARSER.parseFrom(data); } public static org.xtreemfs.pbrpc.generatedinterfaces.MRC.Volume parseFrom( byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(data, extensionRegistry); } public static org.xtreemfs.pbrpc.generatedinterfaces.MRC.Volume parseFrom(java.io.InputStream input) throws java.io.IOException { - return newBuilder().mergeFrom(input).buildParsed(); + return PARSER.parseFrom(input); } public static org.xtreemfs.pbrpc.generatedinterfaces.MRC.Volume parseFrom( java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - return newBuilder().mergeFrom(input, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(input, extensionRegistry); } public static org.xtreemfs.pbrpc.generatedinterfaces.MRC.Volume parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException { - Builder builder = newBuilder(); - if (builder.mergeDelimitedFrom(input)) { - return builder.buildParsed(); - } else { - return null; - } + return PARSER.parseDelimitedFrom(input); } public static org.xtreemfs.pbrpc.generatedinterfaces.MRC.Volume parseDelimitedFrom( java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - Builder builder = newBuilder(); - if (builder.mergeDelimitedFrom(input, extensionRegistry)) { - return builder.buildParsed(); - } else { - return null; - } + return PARSER.parseDelimitedFrom(input, extensionRegistry); } public static org.xtreemfs.pbrpc.generatedinterfaces.MRC.Volume parseFrom( com.google.protobuf.CodedInputStream input) throws java.io.IOException { - return newBuilder().mergeFrom(input).buildParsed(); + return PARSER.parseFrom(input); } public static org.xtreemfs.pbrpc.generatedinterfaces.MRC.Volume parseFrom( com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - return newBuilder().mergeFrom(input, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(input, extensionRegistry); } - + public static Builder newBuilder() { return Builder.create(); } public Builder newBuilderForType() { return newBuilder(); } public static Builder newBuilder(org.xtreemfs.pbrpc.generatedinterfaces.MRC.Volume prototype) { return newBuilder().mergeFrom(prototype); } public Builder toBuilder() { return newBuilder(this); } - + + @java.lang.Override + protected Builder newBuilderForType( + com.google.protobuf.GeneratedMessage.BuilderParent parent) { + Builder builder = new Builder(parent); + return builder; + } + /** + * Protobuf type {@code xtreemfs.pbrpc.Volume} + * + *
+     * information about a volume; relevant for the 'xtfs_mkvol' call
+     * 
+ */ public static final class Builder extends - com.google.protobuf.GeneratedMessage.Builder { - private org.xtreemfs.pbrpc.generatedinterfaces.MRC.Volume result; - + com.google.protobuf.GeneratedMessage.Builder + implements org.xtreemfs.pbrpc.generatedinterfaces.MRC.VolumeOrBuilder { + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return org.xtreemfs.pbrpc.generatedinterfaces.MRC.internal_static_xtreemfs_pbrpc_Volume_descriptor; + } + + protected com.google.protobuf.GeneratedMessage.FieldAccessorTable + internalGetFieldAccessorTable() { + return org.xtreemfs.pbrpc.generatedinterfaces.MRC.internal_static_xtreemfs_pbrpc_Volume_fieldAccessorTable + .ensureFieldAccessorsInitialized( + org.xtreemfs.pbrpc.generatedinterfaces.MRC.Volume.class, org.xtreemfs.pbrpc.generatedinterfaces.MRC.Volume.Builder.class); + } + // Construct using org.xtreemfs.pbrpc.generatedinterfaces.MRC.Volume.newBuilder() - private Builder() {} - - private static Builder create() { - Builder builder = new Builder(); - builder.result = new org.xtreemfs.pbrpc.generatedinterfaces.MRC.Volume(); - return builder; + private Builder() { + maybeForceBuilderInitialization(); } - - protected org.xtreemfs.pbrpc.generatedinterfaces.MRC.Volume internalGetResult() { - return result; + + private Builder( + com.google.protobuf.GeneratedMessage.BuilderParent parent) { + super(parent); + maybeForceBuilderInitialization(); } - + private void maybeForceBuilderInitialization() { + if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) { + getDefaultStripingPolicyFieldBuilder(); + getAttrsFieldBuilder(); + } + } + private static Builder create() { + return new Builder(); + } + public Builder clear() { - if (result == null) { - throw new IllegalStateException( - "Cannot call clear() after build()."); + super.clear(); + accessControlPolicy_ = org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.AccessControlPolicyType.ACCESS_CONTROL_POLICY_NULL; + bitField0_ = (bitField0_ & ~0x00000001); + if (defaultStripingPolicyBuilder_ == null) { + defaultStripingPolicy_ = org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.StripingPolicy.getDefaultInstance(); + } else { + defaultStripingPolicyBuilder_.clear(); + } + bitField0_ = (bitField0_ & ~0x00000002); + id_ = ""; + bitField0_ = (bitField0_ & ~0x00000004); + mode_ = 0; + bitField0_ = (bitField0_ & ~0x00000008); + name_ = ""; + bitField0_ = (bitField0_ & ~0x00000010); + ownerGroupId_ = ""; + bitField0_ = (bitField0_ & ~0x00000020); + ownerUserId_ = ""; + bitField0_ = (bitField0_ & ~0x00000040); + if (attrsBuilder_ == null) { + attrs_ = java.util.Collections.emptyList(); + bitField0_ = (bitField0_ & ~0x00000080); + } else { + attrsBuilder_.clear(); } - result = new org.xtreemfs.pbrpc.generatedinterfaces.MRC.Volume(); return this; } - + public Builder clone() { - return create().mergeFrom(result); + return create().mergeFrom(buildPartial()); } - + public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() { - return org.xtreemfs.pbrpc.generatedinterfaces.MRC.Volume.getDescriptor(); + return org.xtreemfs.pbrpc.generatedinterfaces.MRC.internal_static_xtreemfs_pbrpc_Volume_descriptor; } - + public org.xtreemfs.pbrpc.generatedinterfaces.MRC.Volume getDefaultInstanceForType() { return org.xtreemfs.pbrpc.generatedinterfaces.MRC.Volume.getDefaultInstance(); } - - public boolean isInitialized() { - return result.isInitialized(); - } + public org.xtreemfs.pbrpc.generatedinterfaces.MRC.Volume build() { - if (result != null && !isInitialized()) { + org.xtreemfs.pbrpc.generatedinterfaces.MRC.Volume result = buildPartial(); + if (!result.isInitialized()) { throw newUninitializedMessageException(result); } - return buildPartial(); - } - - private org.xtreemfs.pbrpc.generatedinterfaces.MRC.Volume buildParsed() - throws com.google.protobuf.InvalidProtocolBufferException { - if (!isInitialized()) { - throw newUninitializedMessageException( - result).asInvalidProtocolBufferException(); - } - return buildPartial(); + return result; } - + public org.xtreemfs.pbrpc.generatedinterfaces.MRC.Volume buildPartial() { - if (result == null) { - throw new IllegalStateException( - "build() has already been called on this Builder."); + org.xtreemfs.pbrpc.generatedinterfaces.MRC.Volume result = new org.xtreemfs.pbrpc.generatedinterfaces.MRC.Volume(this); + int from_bitField0_ = bitField0_; + int to_bitField0_ = 0; + if (((from_bitField0_ & 0x00000001) == 0x00000001)) { + to_bitField0_ |= 0x00000001; + } + result.accessControlPolicy_ = accessControlPolicy_; + if (((from_bitField0_ & 0x00000002) == 0x00000002)) { + to_bitField0_ |= 0x00000002; + } + if (defaultStripingPolicyBuilder_ == null) { + result.defaultStripingPolicy_ = defaultStripingPolicy_; + } else { + result.defaultStripingPolicy_ = defaultStripingPolicyBuilder_.build(); + } + if (((from_bitField0_ & 0x00000004) == 0x00000004)) { + to_bitField0_ |= 0x00000004; + } + result.id_ = id_; + if (((from_bitField0_ & 0x00000008) == 0x00000008)) { + to_bitField0_ |= 0x00000008; } - if (result.attrs_ != java.util.Collections.EMPTY_LIST) { - result.attrs_ = - java.util.Collections.unmodifiableList(result.attrs_); + result.mode_ = mode_; + if (((from_bitField0_ & 0x00000010) == 0x00000010)) { + to_bitField0_ |= 0x00000010; + } + result.name_ = name_; + if (((from_bitField0_ & 0x00000020) == 0x00000020)) { + to_bitField0_ |= 0x00000020; + } + result.ownerGroupId_ = ownerGroupId_; + if (((from_bitField0_ & 0x00000040) == 0x00000040)) { + to_bitField0_ |= 0x00000040; + } + result.ownerUserId_ = ownerUserId_; + if (attrsBuilder_ == null) { + if (((bitField0_ & 0x00000080) == 0x00000080)) { + attrs_ = java.util.Collections.unmodifiableList(attrs_); + bitField0_ = (bitField0_ & ~0x00000080); + } + result.attrs_ = attrs_; + } else { + result.attrs_ = attrsBuilder_.build(); } - org.xtreemfs.pbrpc.generatedinterfaces.MRC.Volume returnMe = result; - result = null; - return returnMe; + result.bitField0_ = to_bitField0_; + onBuilt(); + return result; } - + public Builder mergeFrom(com.google.protobuf.Message other) { if (other instanceof org.xtreemfs.pbrpc.generatedinterfaces.MRC.Volume) { return mergeFrom((org.xtreemfs.pbrpc.generatedinterfaces.MRC.Volume)other); @@ -2429,7 +6040,7 @@ public final class MRC { return this; } } - + public Builder mergeFrom(org.xtreemfs.pbrpc.generatedinterfaces.MRC.Volume other) { if (other == org.xtreemfs.pbrpc.generatedinterfaces.MRC.Volume.getDefaultInstance()) return this; if (other.hasAccessControlPolicy()) { @@ -2439,542 +6050,1461 @@ public final class MRC { mergeDefaultStripingPolicy(other.getDefaultStripingPolicy()); } if (other.hasId()) { - setId(other.getId()); + bitField0_ |= 0x00000004; + id_ = other.id_; + onChanged(); } if (other.hasMode()) { setMode(other.getMode()); } if (other.hasName()) { - setName(other.getName()); + bitField0_ |= 0x00000010; + name_ = other.name_; + onChanged(); } if (other.hasOwnerGroupId()) { - setOwnerGroupId(other.getOwnerGroupId()); + bitField0_ |= 0x00000020; + ownerGroupId_ = other.ownerGroupId_; + onChanged(); } if (other.hasOwnerUserId()) { - setOwnerUserId(other.getOwnerUserId()); - } - if (!other.attrs_.isEmpty()) { - if (result.attrs_.isEmpty()) { - result.attrs_ = new java.util.ArrayList(); + bitField0_ |= 0x00000040; + ownerUserId_ = other.ownerUserId_; + onChanged(); + } + if (attrsBuilder_ == null) { + if (!other.attrs_.isEmpty()) { + if (attrs_.isEmpty()) { + attrs_ = other.attrs_; + bitField0_ = (bitField0_ & ~0x00000080); + } else { + ensureAttrsIsMutable(); + attrs_.addAll(other.attrs_); + } + onChanged(); } - result.attrs_.addAll(other.attrs_); - } - this.mergeUnknownFields(other.getUnknownFields()); + } else { + if (!other.attrs_.isEmpty()) { + if (attrsBuilder_.isEmpty()) { + attrsBuilder_.dispose(); + attrsBuilder_ = null; + attrs_ = other.attrs_; + bitField0_ = (bitField0_ & ~0x00000080); + attrsBuilder_ = + com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ? + getAttrsFieldBuilder() : null; + } else { + attrsBuilder_.addAllMessages(other.attrs_); + } + } + } + this.mergeUnknownFields(other.getUnknownFields()); return this; } - + + public final boolean isInitialized() { + if (!hasAccessControlPolicy()) { + + return false; + } + if (!hasDefaultStripingPolicy()) { + + return false; + } + if (!hasId()) { + + return false; + } + if (!hasMode()) { + + return false; + } + if (!hasName()) { + + return false; + } + if (!hasOwnerGroupId()) { + + return false; + } + if (!hasOwnerUserId()) { + + return false; + } + if (!getDefaultStripingPolicy().isInitialized()) { + + return false; + } + for (int i = 0; i < getAttrsCount(); i++) { + if (!getAttrs(i).isInitialized()) { + + return false; + } + } + return true; + } + public Builder mergeFrom( com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - com.google.protobuf.UnknownFieldSet.Builder unknownFields = - com.google.protobuf.UnknownFieldSet.newBuilder( - this.getUnknownFields()); - while (true) { - int tag = input.readTag(); - switch (tag) { - case 0: - this.setUnknownFields(unknownFields.build()); - return this; - default: { - if (!parseUnknownField(input, unknownFields, - extensionRegistry, tag)) { - this.setUnknownFields(unknownFields.build()); - return this; - } - break; - } - case 8: { - int rawValue = input.readEnum(); - org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.AccessControlPolicyType value = org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.AccessControlPolicyType.valueOf(rawValue); - if (value == null) { - unknownFields.mergeVarintField(1, rawValue); - } else { - setAccessControlPolicy(value); - } - break; - } - case 18: { - org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.StripingPolicy.Builder subBuilder = org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.StripingPolicy.newBuilder(); - if (hasDefaultStripingPolicy()) { - subBuilder.mergeFrom(getDefaultStripingPolicy()); - } - input.readMessage(subBuilder, extensionRegistry); - setDefaultStripingPolicy(subBuilder.buildPartial()); - break; - } - case 26: { - setId(input.readString()); - break; - } - case 37: { - setMode(input.readFixed32()); - break; - } - case 42: { - setName(input.readString()); - break; - } - case 50: { - setOwnerGroupId(input.readString()); - break; - } - case 58: { - setOwnerUserId(input.readString()); - break; - } - case 66: { - org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.KeyValuePair.Builder subBuilder = org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.KeyValuePair.newBuilder(); - input.readMessage(subBuilder, extensionRegistry); - addAttrs(subBuilder.buildPartial()); - break; - } + org.xtreemfs.pbrpc.generatedinterfaces.MRC.Volume parsedMessage = null; + try { + parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + parsedMessage = (org.xtreemfs.pbrpc.generatedinterfaces.MRC.Volume) e.getUnfinishedMessage(); + throw e; + } finally { + if (parsedMessage != null) { + mergeFrom(parsedMessage); } } + return this; } - - + private int bitField0_; + // required .xtreemfs.pbrpc.AccessControlPolicyType access_control_policy = 1; + private org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.AccessControlPolicyType accessControlPolicy_ = org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.AccessControlPolicyType.ACCESS_CONTROL_POLICY_NULL; + /** + * required .xtreemfs.pbrpc.AccessControlPolicyType access_control_policy = 1; + * + *
+       * access control policy to be assigned to the volume
+       * 
+ */ public boolean hasAccessControlPolicy() { - return result.hasAccessControlPolicy(); - } + return ((bitField0_ & 0x00000001) == 0x00000001); + } + /** + * required .xtreemfs.pbrpc.AccessControlPolicyType access_control_policy = 1; + * + *
+       * access control policy to be assigned to the volume
+       * 
+ */ public org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.AccessControlPolicyType getAccessControlPolicy() { - return result.getAccessControlPolicy(); - } + return accessControlPolicy_; + } + /** + * required .xtreemfs.pbrpc.AccessControlPolicyType access_control_policy = 1; + * + *
+       * access control policy to be assigned to the volume
+       * 
+ */ public Builder setAccessControlPolicy(org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.AccessControlPolicyType value) { if (value == null) { throw new NullPointerException(); } - result.hasAccessControlPolicy = true; - result.accessControlPolicy_ = value; + bitField0_ |= 0x00000001; + accessControlPolicy_ = value; + onChanged(); return this; } + /** + * required .xtreemfs.pbrpc.AccessControlPolicyType access_control_policy = 1; + * + *
+       * access control policy to be assigned to the volume
+       * 
+ */ public Builder clearAccessControlPolicy() { - result.hasAccessControlPolicy = false; - result.accessControlPolicy_ = org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.AccessControlPolicyType.ACCESS_CONTROL_POLICY_NULL; + bitField0_ = (bitField0_ & ~0x00000001); + accessControlPolicy_ = org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.AccessControlPolicyType.ACCESS_CONTROL_POLICY_NULL; + onChanged(); return this; } - + // required .xtreemfs.pbrpc.StripingPolicy default_striping_policy = 2; + private org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.StripingPolicy defaultStripingPolicy_ = org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.StripingPolicy.getDefaultInstance(); + private com.google.protobuf.SingleFieldBuilder< + org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.StripingPolicy, org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.StripingPolicy.Builder, org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.StripingPolicyOrBuilder> defaultStripingPolicyBuilder_; + /** + * required .xtreemfs.pbrpc.StripingPolicy default_striping_policy = 2; + * + *
+       * default striping policy to be assigned to the volume
+       * 
+ */ public boolean hasDefaultStripingPolicy() { - return result.hasDefaultStripingPolicy(); - } + return ((bitField0_ & 0x00000002) == 0x00000002); + } + /** + * required .xtreemfs.pbrpc.StripingPolicy default_striping_policy = 2; + * + *
+       * default striping policy to be assigned to the volume
+       * 
+ */ public org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.StripingPolicy getDefaultStripingPolicy() { - return result.getDefaultStripingPolicy(); + if (defaultStripingPolicyBuilder_ == null) { + return defaultStripingPolicy_; + } else { + return defaultStripingPolicyBuilder_.getMessage(); + } } + /** + * required .xtreemfs.pbrpc.StripingPolicy default_striping_policy = 2; + * + *
+       * default striping policy to be assigned to the volume
+       * 
+ */ public Builder setDefaultStripingPolicy(org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.StripingPolicy value) { - if (value == null) { - throw new NullPointerException(); + if (defaultStripingPolicyBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + defaultStripingPolicy_ = value; + onChanged(); + } else { + defaultStripingPolicyBuilder_.setMessage(value); + } + bitField0_ |= 0x00000002; + return this; + } + /** + * required .xtreemfs.pbrpc.StripingPolicy default_striping_policy = 2; + * + *
+       * default striping policy to be assigned to the volume
+       * 
+ */ + public Builder setDefaultStripingPolicy( + org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.StripingPolicy.Builder builderForValue) { + if (defaultStripingPolicyBuilder_ == null) { + defaultStripingPolicy_ = builderForValue.build(); + onChanged(); + } else { + defaultStripingPolicyBuilder_.setMessage(builderForValue.build()); } - result.hasDefaultStripingPolicy = true; - result.defaultStripingPolicy_ = value; - return this; - } - public Builder setDefaultStripingPolicy(org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.StripingPolicy.Builder builderForValue) { - result.hasDefaultStripingPolicy = true; - result.defaultStripingPolicy_ = builderForValue.build(); + bitField0_ |= 0x00000002; return this; } + /** + * required .xtreemfs.pbrpc.StripingPolicy default_striping_policy = 2; + * + *
+       * default striping policy to be assigned to the volume
+       * 
+ */ public Builder mergeDefaultStripingPolicy(org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.StripingPolicy value) { - if (result.hasDefaultStripingPolicy() && - result.defaultStripingPolicy_ != org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.StripingPolicy.getDefaultInstance()) { - result.defaultStripingPolicy_ = - org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.StripingPolicy.newBuilder(result.defaultStripingPolicy_).mergeFrom(value).buildPartial(); + if (defaultStripingPolicyBuilder_ == null) { + if (((bitField0_ & 0x00000002) == 0x00000002) && + defaultStripingPolicy_ != org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.StripingPolicy.getDefaultInstance()) { + defaultStripingPolicy_ = + org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.StripingPolicy.newBuilder(defaultStripingPolicy_).mergeFrom(value).buildPartial(); + } else { + defaultStripingPolicy_ = value; + } + onChanged(); } else { - result.defaultStripingPolicy_ = value; + defaultStripingPolicyBuilder_.mergeFrom(value); } - result.hasDefaultStripingPolicy = true; + bitField0_ |= 0x00000002; return this; } + /** + * required .xtreemfs.pbrpc.StripingPolicy default_striping_policy = 2; + * + *
+       * default striping policy to be assigned to the volume
+       * 
+ */ public Builder clearDefaultStripingPolicy() { - result.hasDefaultStripingPolicy = false; - result.defaultStripingPolicy_ = org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.StripingPolicy.getDefaultInstance(); - return this; + if (defaultStripingPolicyBuilder_ == null) { + defaultStripingPolicy_ = org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.StripingPolicy.getDefaultInstance(); + onChanged(); + } else { + defaultStripingPolicyBuilder_.clear(); + } + bitField0_ = (bitField0_ & ~0x00000002); + return this; + } + /** + * required .xtreemfs.pbrpc.StripingPolicy default_striping_policy = 2; + * + *
+       * default striping policy to be assigned to the volume
+       * 
+ */ + public org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.StripingPolicy.Builder getDefaultStripingPolicyBuilder() { + bitField0_ |= 0x00000002; + onChanged(); + return getDefaultStripingPolicyFieldBuilder().getBuilder(); + } + /** + * required .xtreemfs.pbrpc.StripingPolicy default_striping_policy = 2; + * + *
+       * default striping policy to be assigned to the volume
+       * 
+ */ + public org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.StripingPolicyOrBuilder getDefaultStripingPolicyOrBuilder() { + if (defaultStripingPolicyBuilder_ != null) { + return defaultStripingPolicyBuilder_.getMessageOrBuilder(); + } else { + return defaultStripingPolicy_; + } + } + /** + * required .xtreemfs.pbrpc.StripingPolicy default_striping_policy = 2; + * + *
+       * default striping policy to be assigned to the volume
+       * 
+ */ + private com.google.protobuf.SingleFieldBuilder< + org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.StripingPolicy, org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.StripingPolicy.Builder, org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.StripingPolicyOrBuilder> + getDefaultStripingPolicyFieldBuilder() { + if (defaultStripingPolicyBuilder_ == null) { + defaultStripingPolicyBuilder_ = new com.google.protobuf.SingleFieldBuilder< + org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.StripingPolicy, org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.StripingPolicy.Builder, org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.StripingPolicyOrBuilder>( + defaultStripingPolicy_, + getParentForChildren(), + isClean()); + defaultStripingPolicy_ = null; + } + return defaultStripingPolicyBuilder_; } - + // required string id = 3; + private java.lang.Object id_ = ""; + /** + * required string id = 3; + * + *
+       * volume ID
+       * 
+ */ public boolean hasId() { - return result.hasId(); - } + return ((bitField0_ & 0x00000004) == 0x00000004); + } + /** + * required string id = 3; + * + *
+       * volume ID
+       * 
+ */ public java.lang.String getId() { - return result.getId(); - } - public Builder setId(java.lang.String value) { + java.lang.Object ref = id_; + if (!(ref instanceof java.lang.String)) { + java.lang.String s = ((com.google.protobuf.ByteString) ref) + .toStringUtf8(); + id_ = s; + return s; + } else { + return (java.lang.String) ref; + } + } + /** + * required string id = 3; + * + *
+       * volume ID
+       * 
+ */ + public com.google.protobuf.ByteString + getIdBytes() { + java.lang.Object ref = id_; + if (ref instanceof String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + id_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + /** + * required string id = 3; + * + *
+       * volume ID
+       * 
+ */ + public Builder setId( + java.lang.String value) { if (value == null) { throw new NullPointerException(); } - result.hasId = true; - result.id_ = value; - return this; - } + bitField0_ |= 0x00000004; + id_ = value; + onChanged(); + return this; + } + /** + * required string id = 3; + * + *
+       * volume ID
+       * 
+ */ public Builder clearId() { - result.hasId = false; - result.id_ = getDefaultInstance().getId(); + bitField0_ = (bitField0_ & ~0x00000004); + id_ = getDefaultInstance().getId(); + onChanged(); + return this; + } + /** + * required string id = 3; + * + *
+       * volume ID
+       * 
+ */ + public Builder setIdBytes( + com.google.protobuf.ByteString value) { + if (value == null) { + throw new NullPointerException(); + } + bitField0_ |= 0x00000004; + id_ = value; + onChanged(); return this; } - + // required fixed32 mode = 4; + private int mode_ ; + /** + * required fixed32 mode = 4; + * + *
+       * initial access mode for the root directory 
+       * 
+ */ public boolean hasMode() { - return result.hasMode(); - } + return ((bitField0_ & 0x00000008) == 0x00000008); + } + /** + * required fixed32 mode = 4; + * + *
+       * initial access mode for the root directory 
+       * 
+ */ public int getMode() { - return result.getMode(); - } + return mode_; + } + /** + * required fixed32 mode = 4; + * + *
+       * initial access mode for the root directory 
+       * 
+ */ public Builder setMode(int value) { - result.hasMode = true; - result.mode_ = value; - return this; - } + bitField0_ |= 0x00000008; + mode_ = value; + onChanged(); + return this; + } + /** + * required fixed32 mode = 4; + * + *
+       * initial access mode for the root directory 
+       * 
+ */ public Builder clearMode() { - result.hasMode = false; - result.mode_ = 0; + bitField0_ = (bitField0_ & ~0x00000008); + mode_ = 0; + onChanged(); return this; } - + // required string name = 5; + private java.lang.Object name_ = ""; + /** + * required string name = 5; + * + *
+       * volume name
+       * 
+ */ public boolean hasName() { - return result.hasName(); - } + return ((bitField0_ & 0x00000010) == 0x00000010); + } + /** + * required string name = 5; + * + *
+       * volume name
+       * 
+ */ public java.lang.String getName() { - return result.getName(); - } - public Builder setName(java.lang.String value) { + java.lang.Object ref = name_; + if (!(ref instanceof java.lang.String)) { + java.lang.String s = ((com.google.protobuf.ByteString) ref) + .toStringUtf8(); + name_ = s; + return s; + } else { + return (java.lang.String) ref; + } + } + /** + * required string name = 5; + * + *
+       * volume name
+       * 
+ */ + public com.google.protobuf.ByteString + getNameBytes() { + java.lang.Object ref = name_; + if (ref instanceof String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + name_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + /** + * required string name = 5; + * + *
+       * volume name
+       * 
+ */ + public Builder setName( + java.lang.String value) { if (value == null) { throw new NullPointerException(); } - result.hasName = true; - result.name_ = value; - return this; - } + bitField0_ |= 0x00000010; + name_ = value; + onChanged(); + return this; + } + /** + * required string name = 5; + * + *
+       * volume name
+       * 
+ */ public Builder clearName() { - result.hasName = false; - result.name_ = getDefaultInstance().getName(); + bitField0_ = (bitField0_ & ~0x00000010); + name_ = getDefaultInstance().getName(); + onChanged(); + return this; + } + /** + * required string name = 5; + * + *
+       * volume name
+       * 
+ */ + public Builder setNameBytes( + com.google.protobuf.ByteString value) { + if (value == null) { + throw new NullPointerException(); + } + bitField0_ |= 0x00000010; + name_ = value; + onChanged(); return this; } - + // required string owner_group_id = 6; + private java.lang.Object ownerGroupId_ = ""; + /** + * required string owner_group_id = 6; + * + *
+       * owning group ID of the volume (i.e. volume's root directory)
+       * 
+ */ public boolean hasOwnerGroupId() { - return result.hasOwnerGroupId(); - } + return ((bitField0_ & 0x00000020) == 0x00000020); + } + /** + * required string owner_group_id = 6; + * + *
+       * owning group ID of the volume (i.e. volume's root directory)
+       * 
+ */ public java.lang.String getOwnerGroupId() { - return result.getOwnerGroupId(); - } - public Builder setOwnerGroupId(java.lang.String value) { + java.lang.Object ref = ownerGroupId_; + if (!(ref instanceof java.lang.String)) { + java.lang.String s = ((com.google.protobuf.ByteString) ref) + .toStringUtf8(); + ownerGroupId_ = s; + return s; + } else { + return (java.lang.String) ref; + } + } + /** + * required string owner_group_id = 6; + * + *
+       * owning group ID of the volume (i.e. volume's root directory)
+       * 
+ */ + public com.google.protobuf.ByteString + getOwnerGroupIdBytes() { + java.lang.Object ref = ownerGroupId_; + if (ref instanceof String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + ownerGroupId_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + /** + * required string owner_group_id = 6; + * + *
+       * owning group ID of the volume (i.e. volume's root directory)
+       * 
+ */ + public Builder setOwnerGroupId( + java.lang.String value) { if (value == null) { throw new NullPointerException(); } - result.hasOwnerGroupId = true; - result.ownerGroupId_ = value; - return this; - } + bitField0_ |= 0x00000020; + ownerGroupId_ = value; + onChanged(); + return this; + } + /** + * required string owner_group_id = 6; + * + *
+       * owning group ID of the volume (i.e. volume's root directory)
+       * 
+ */ public Builder clearOwnerGroupId() { - result.hasOwnerGroupId = false; - result.ownerGroupId_ = getDefaultInstance().getOwnerGroupId(); + bitField0_ = (bitField0_ & ~0x00000020); + ownerGroupId_ = getDefaultInstance().getOwnerGroupId(); + onChanged(); + return this; + } + /** + * required string owner_group_id = 6; + * + *
+       * owning group ID of the volume (i.e. volume's root directory)
+       * 
+ */ + public Builder setOwnerGroupIdBytes( + com.google.protobuf.ByteString value) { + if (value == null) { + throw new NullPointerException(); + } + bitField0_ |= 0x00000020; + ownerGroupId_ = value; + onChanged(); return this; } - + // required string owner_user_id = 7; + private java.lang.Object ownerUserId_ = ""; + /** + * required string owner_user_id = 7; + * + *
+       * owning user ID of the volume (i.e. volume's root directory)
+       * 
+ */ public boolean hasOwnerUserId() { - return result.hasOwnerUserId(); - } + return ((bitField0_ & 0x00000040) == 0x00000040); + } + /** + * required string owner_user_id = 7; + * + *
+       * owning user ID of the volume (i.e. volume's root directory)
+       * 
+ */ public java.lang.String getOwnerUserId() { - return result.getOwnerUserId(); - } - public Builder setOwnerUserId(java.lang.String value) { + java.lang.Object ref = ownerUserId_; + if (!(ref instanceof java.lang.String)) { + java.lang.String s = ((com.google.protobuf.ByteString) ref) + .toStringUtf8(); + ownerUserId_ = s; + return s; + } else { + return (java.lang.String) ref; + } + } + /** + * required string owner_user_id = 7; + * + *
+       * owning user ID of the volume (i.e. volume's root directory)
+       * 
+ */ + public com.google.protobuf.ByteString + getOwnerUserIdBytes() { + java.lang.Object ref = ownerUserId_; + if (ref instanceof String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + ownerUserId_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + /** + * required string owner_user_id = 7; + * + *
+       * owning user ID of the volume (i.e. volume's root directory)
+       * 
+ */ + public Builder setOwnerUserId( + java.lang.String value) { if (value == null) { throw new NullPointerException(); } - result.hasOwnerUserId = true; - result.ownerUserId_ = value; - return this; - } + bitField0_ |= 0x00000040; + ownerUserId_ = value; + onChanged(); + return this; + } + /** + * required string owner_user_id = 7; + * + *
+       * owning user ID of the volume (i.e. volume's root directory)
+       * 
+ */ public Builder clearOwnerUserId() { - result.hasOwnerUserId = false; - result.ownerUserId_ = getDefaultInstance().getOwnerUserId(); + bitField0_ = (bitField0_ & ~0x00000040); + ownerUserId_ = getDefaultInstance().getOwnerUserId(); + onChanged(); + return this; + } + /** + * required string owner_user_id = 7; + * + *
+       * owning user ID of the volume (i.e. volume's root directory)
+       * 
+ */ + public Builder setOwnerUserIdBytes( + com.google.protobuf.ByteString value) { + if (value == null) { + throw new NullPointerException(); + } + bitField0_ |= 0x00000040; + ownerUserId_ = value; + onChanged(); return this; } - + // repeated .xtreemfs.pbrpc.KeyValuePair attrs = 8; + private java.util.List attrs_ = + java.util.Collections.emptyList(); + private void ensureAttrsIsMutable() { + if (!((bitField0_ & 0x00000080) == 0x00000080)) { + attrs_ = new java.util.ArrayList(attrs_); + bitField0_ |= 0x00000080; + } + } + + private com.google.protobuf.RepeatedFieldBuilder< + org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.KeyValuePair, org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.KeyValuePair.Builder, org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.KeyValuePairOrBuilder> attrsBuilder_; + + /** + * repeated .xtreemfs.pbrpc.KeyValuePair attrs = 8; + * + *
+       * optional configuration attributes for the volume
+       * 
+ */ public java.util.List getAttrsList() { - return java.util.Collections.unmodifiableList(result.attrs_); + if (attrsBuilder_ == null) { + return java.util.Collections.unmodifiableList(attrs_); + } else { + return attrsBuilder_.getMessageList(); + } } + /** + * repeated .xtreemfs.pbrpc.KeyValuePair attrs = 8; + * + *
+       * optional configuration attributes for the volume
+       * 
+ */ public int getAttrsCount() { - return result.getAttrsCount(); + if (attrsBuilder_ == null) { + return attrs_.size(); + } else { + return attrsBuilder_.getCount(); + } } + /** + * repeated .xtreemfs.pbrpc.KeyValuePair attrs = 8; + * + *
+       * optional configuration attributes for the volume
+       * 
+ */ public org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.KeyValuePair getAttrs(int index) { - return result.getAttrs(index); - } - public Builder setAttrs(int index, org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.KeyValuePair value) { - if (value == null) { - throw new NullPointerException(); + if (attrsBuilder_ == null) { + return attrs_.get(index); + } else { + return attrsBuilder_.getMessage(index); + } + } + /** + * repeated .xtreemfs.pbrpc.KeyValuePair attrs = 8; + * + *
+       * optional configuration attributes for the volume
+       * 
+ */ + public Builder setAttrs( + int index, org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.KeyValuePair value) { + if (attrsBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + ensureAttrsIsMutable(); + attrs_.set(index, value); + onChanged(); + } else { + attrsBuilder_.setMessage(index, value); + } + return this; + } + /** + * repeated .xtreemfs.pbrpc.KeyValuePair attrs = 8; + * + *
+       * optional configuration attributes for the volume
+       * 
+ */ + public Builder setAttrs( + int index, org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.KeyValuePair.Builder builderForValue) { + if (attrsBuilder_ == null) { + ensureAttrsIsMutable(); + attrs_.set(index, builderForValue.build()); + onChanged(); + } else { + attrsBuilder_.setMessage(index, builderForValue.build()); } - result.attrs_.set(index, value); - return this; - } - public Builder setAttrs(int index, org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.KeyValuePair.Builder builderForValue) { - result.attrs_.set(index, builderForValue.build()); return this; } + /** + * repeated .xtreemfs.pbrpc.KeyValuePair attrs = 8; + * + *
+       * optional configuration attributes for the volume
+       * 
+ */ public Builder addAttrs(org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.KeyValuePair value) { - if (value == null) { - throw new NullPointerException(); - } - if (result.attrs_.isEmpty()) { - result.attrs_ = new java.util.ArrayList(); - } - result.attrs_.add(value); - return this; - } - public Builder addAttrs(org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.KeyValuePair.Builder builderForValue) { - if (result.attrs_.isEmpty()) { - result.attrs_ = new java.util.ArrayList(); + if (attrsBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + ensureAttrsIsMutable(); + attrs_.add(value); + onChanged(); + } else { + attrsBuilder_.addMessage(value); + } + return this; + } + /** + * repeated .xtreemfs.pbrpc.KeyValuePair attrs = 8; + * + *
+       * optional configuration attributes for the volume
+       * 
+ */ + public Builder addAttrs( + int index, org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.KeyValuePair value) { + if (attrsBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + ensureAttrsIsMutable(); + attrs_.add(index, value); + onChanged(); + } else { + attrsBuilder_.addMessage(index, value); + } + return this; + } + /** + * repeated .xtreemfs.pbrpc.KeyValuePair attrs = 8; + * + *
+       * optional configuration attributes for the volume
+       * 
+ */ + public Builder addAttrs( + org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.KeyValuePair.Builder builderForValue) { + if (attrsBuilder_ == null) { + ensureAttrsIsMutable(); + attrs_.add(builderForValue.build()); + onChanged(); + } else { + attrsBuilder_.addMessage(builderForValue.build()); + } + return this; + } + /** + * repeated .xtreemfs.pbrpc.KeyValuePair attrs = 8; + * + *
+       * optional configuration attributes for the volume
+       * 
+ */ + public Builder addAttrs( + int index, org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.KeyValuePair.Builder builderForValue) { + if (attrsBuilder_ == null) { + ensureAttrsIsMutable(); + attrs_.add(index, builderForValue.build()); + onChanged(); + } else { + attrsBuilder_.addMessage(index, builderForValue.build()); } - result.attrs_.add(builderForValue.build()); return this; } + /** + * repeated .xtreemfs.pbrpc.KeyValuePair attrs = 8; + * + *
+       * optional configuration attributes for the volume
+       * 
+ */ public Builder addAllAttrs( java.lang.Iterable values) { - if (result.attrs_.isEmpty()) { - result.attrs_ = new java.util.ArrayList(); + if (attrsBuilder_ == null) { + ensureAttrsIsMutable(); + super.addAll(values, attrs_); + onChanged(); + } else { + attrsBuilder_.addAllMessages(values); } - super.addAll(values, result.attrs_); return this; } + /** + * repeated .xtreemfs.pbrpc.KeyValuePair attrs = 8; + * + *
+       * optional configuration attributes for the volume
+       * 
+ */ public Builder clearAttrs() { - result.attrs_ = java.util.Collections.emptyList(); - return this; + if (attrsBuilder_ == null) { + attrs_ = java.util.Collections.emptyList(); + bitField0_ = (bitField0_ & ~0x00000080); + onChanged(); + } else { + attrsBuilder_.clear(); + } + return this; + } + /** + * repeated .xtreemfs.pbrpc.KeyValuePair attrs = 8; + * + *
+       * optional configuration attributes for the volume
+       * 
+ */ + public Builder removeAttrs(int index) { + if (attrsBuilder_ == null) { + ensureAttrsIsMutable(); + attrs_.remove(index); + onChanged(); + } else { + attrsBuilder_.remove(index); + } + return this; + } + /** + * repeated .xtreemfs.pbrpc.KeyValuePair attrs = 8; + * + *
+       * optional configuration attributes for the volume
+       * 
+ */ + public org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.KeyValuePair.Builder getAttrsBuilder( + int index) { + return getAttrsFieldBuilder().getBuilder(index); + } + /** + * repeated .xtreemfs.pbrpc.KeyValuePair attrs = 8; + * + *
+       * optional configuration attributes for the volume
+       * 
+ */ + public org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.KeyValuePairOrBuilder getAttrsOrBuilder( + int index) { + if (attrsBuilder_ == null) { + return attrs_.get(index); } else { + return attrsBuilder_.getMessageOrBuilder(index); + } + } + /** + * repeated .xtreemfs.pbrpc.KeyValuePair attrs = 8; + * + *
+       * optional configuration attributes for the volume
+       * 
+ */ + public java.util.List + getAttrsOrBuilderList() { + if (attrsBuilder_ != null) { + return attrsBuilder_.getMessageOrBuilderList(); + } else { + return java.util.Collections.unmodifiableList(attrs_); + } + } + /** + * repeated .xtreemfs.pbrpc.KeyValuePair attrs = 8; + * + *
+       * optional configuration attributes for the volume
+       * 
+ */ + public org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.KeyValuePair.Builder addAttrsBuilder() { + return getAttrsFieldBuilder().addBuilder( + org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.KeyValuePair.getDefaultInstance()); + } + /** + * repeated .xtreemfs.pbrpc.KeyValuePair attrs = 8; + * + *
+       * optional configuration attributes for the volume
+       * 
+ */ + public org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.KeyValuePair.Builder addAttrsBuilder( + int index) { + return getAttrsFieldBuilder().addBuilder( + index, org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.KeyValuePair.getDefaultInstance()); + } + /** + * repeated .xtreemfs.pbrpc.KeyValuePair attrs = 8; + * + *
+       * optional configuration attributes for the volume
+       * 
+ */ + public java.util.List + getAttrsBuilderList() { + return getAttrsFieldBuilder().getBuilderList(); + } + private com.google.protobuf.RepeatedFieldBuilder< + org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.KeyValuePair, org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.KeyValuePair.Builder, org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.KeyValuePairOrBuilder> + getAttrsFieldBuilder() { + if (attrsBuilder_ == null) { + attrsBuilder_ = new com.google.protobuf.RepeatedFieldBuilder< + org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.KeyValuePair, org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.KeyValuePair.Builder, org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.KeyValuePairOrBuilder>( + attrs_, + ((bitField0_ & 0x00000080) == 0x00000080), + getParentForChildren(), + isClean()); + attrs_ = null; + } + return attrsBuilder_; } - + // @@protoc_insertion_point(builder_scope:xtreemfs.pbrpc.Volume) } - + static { defaultInstance = new Volume(true); - org.xtreemfs.pbrpc.generatedinterfaces.MRC.internalForceInit(); defaultInstance.initFields(); } - + // @@protoc_insertion_point(class_scope:xtreemfs.pbrpc.Volume) } - + + public interface VolumesOrBuilder + extends com.google.protobuf.MessageOrBuilder { + + // repeated .xtreemfs.pbrpc.Volume volumes = 1; + /** + * repeated .xtreemfs.pbrpc.Volume volumes = 1; + */ + java.util.List + getVolumesList(); + /** + * repeated .xtreemfs.pbrpc.Volume volumes = 1; + */ + org.xtreemfs.pbrpc.generatedinterfaces.MRC.Volume getVolumes(int index); + /** + * repeated .xtreemfs.pbrpc.Volume volumes = 1; + */ + int getVolumesCount(); + /** + * repeated .xtreemfs.pbrpc.Volume volumes = 1; + */ + java.util.List + getVolumesOrBuilderList(); + /** + * repeated .xtreemfs.pbrpc.Volume volumes = 1; + */ + org.xtreemfs.pbrpc.generatedinterfaces.MRC.VolumeOrBuilder getVolumesOrBuilder( + int index); + } + /** + * Protobuf type {@code xtreemfs.pbrpc.Volumes} + * + *
+   * a list of volumes; relevant for the 'xtfs_lsvol' call
+   * 
+ */ public static final class Volumes extends - com.google.protobuf.GeneratedMessage { + com.google.protobuf.GeneratedMessage + implements VolumesOrBuilder { // Use Volumes.newBuilder() to construct. - private Volumes() { - initFields(); + private Volumes(com.google.protobuf.GeneratedMessage.Builder builder) { + super(builder); + this.unknownFields = builder.getUnknownFields(); } - private Volumes(boolean noInit) {} - + private Volumes(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); } + private static final Volumes defaultInstance; public static Volumes getDefaultInstance() { return defaultInstance; } - + public Volumes getDefaultInstanceForType() { return defaultInstance; } - + + private final com.google.protobuf.UnknownFieldSet unknownFields; + @java.lang.Override + public final com.google.protobuf.UnknownFieldSet + getUnknownFields() { + return this.unknownFields; + } + private Volumes( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + initFields(); + int mutable_bitField0_ = 0; + com.google.protobuf.UnknownFieldSet.Builder unknownFields = + com.google.protobuf.UnknownFieldSet.newBuilder(); + try { + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch (tag) { + case 0: + done = true; + break; + default: { + if (!parseUnknownField(input, unknownFields, + extensionRegistry, tag)) { + done = true; + } + break; + } + case 10: { + if (!((mutable_bitField0_ & 0x00000001) == 0x00000001)) { + volumes_ = new java.util.ArrayList(); + mutable_bitField0_ |= 0x00000001; + } + volumes_.add(input.readMessage(org.xtreemfs.pbrpc.generatedinterfaces.MRC.Volume.PARSER, extensionRegistry)); + break; + } + } + } + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(this); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException( + e.getMessage()).setUnfinishedMessage(this); + } finally { + if (((mutable_bitField0_ & 0x00000001) == 0x00000001)) { + volumes_ = java.util.Collections.unmodifiableList(volumes_); + } + this.unknownFields = unknownFields.build(); + makeExtensionsImmutable(); + } + } public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { return org.xtreemfs.pbrpc.generatedinterfaces.MRC.internal_static_xtreemfs_pbrpc_Volumes_descriptor; } - + protected com.google.protobuf.GeneratedMessage.FieldAccessorTable internalGetFieldAccessorTable() { - return org.xtreemfs.pbrpc.generatedinterfaces.MRC.internal_static_xtreemfs_pbrpc_Volumes_fieldAccessorTable; + return org.xtreemfs.pbrpc.generatedinterfaces.MRC.internal_static_xtreemfs_pbrpc_Volumes_fieldAccessorTable + .ensureFieldAccessorsInitialized( + org.xtreemfs.pbrpc.generatedinterfaces.MRC.Volumes.class, org.xtreemfs.pbrpc.generatedinterfaces.MRC.Volumes.Builder.class); + } + + public static com.google.protobuf.Parser PARSER = + new com.google.protobuf.AbstractParser() { + public Volumes parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return new Volumes(input, extensionRegistry); + } + }; + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; } - + // repeated .xtreemfs.pbrpc.Volume volumes = 1; public static final int VOLUMES_FIELD_NUMBER = 1; - private java.util.List volumes_ = - java.util.Collections.emptyList(); + private java.util.List volumes_; + /** + * repeated .xtreemfs.pbrpc.Volume volumes = 1; + */ public java.util.List getVolumesList() { return volumes_; } - public int getVolumesCount() { return volumes_.size(); } + /** + * repeated .xtreemfs.pbrpc.Volume volumes = 1; + */ + public java.util.List + getVolumesOrBuilderList() { + return volumes_; + } + /** + * repeated .xtreemfs.pbrpc.Volume volumes = 1; + */ + public int getVolumesCount() { + return volumes_.size(); + } + /** + * repeated .xtreemfs.pbrpc.Volume volumes = 1; + */ public org.xtreemfs.pbrpc.generatedinterfaces.MRC.Volume getVolumes(int index) { return volumes_.get(index); } - + /** + * repeated .xtreemfs.pbrpc.Volume volumes = 1; + */ + public org.xtreemfs.pbrpc.generatedinterfaces.MRC.VolumeOrBuilder getVolumesOrBuilder( + int index) { + return volumes_.get(index); + } + private void initFields() { + volumes_ = java.util.Collections.emptyList(); } + private byte memoizedIsInitialized = -1; public final boolean isInitialized() { - for (org.xtreemfs.pbrpc.generatedinterfaces.MRC.Volume element : getVolumesList()) { - if (!element.isInitialized()) return false; + byte isInitialized = memoizedIsInitialized; + if (isInitialized != -1) return isInitialized == 1; + + for (int i = 0; i < getVolumesCount(); i++) { + if (!getVolumes(i).isInitialized()) { + memoizedIsInitialized = 0; + return false; + } } + memoizedIsInitialized = 1; return true; } - + public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException { getSerializedSize(); - for (org.xtreemfs.pbrpc.generatedinterfaces.MRC.Volume element : getVolumesList()) { - output.writeMessage(1, element); + for (int i = 0; i < volumes_.size(); i++) { + output.writeMessage(1, volumes_.get(i)); } getUnknownFields().writeTo(output); } - + private int memoizedSerializedSize = -1; public int getSerializedSize() { int size = memoizedSerializedSize; if (size != -1) return size; - + size = 0; - for (org.xtreemfs.pbrpc.generatedinterfaces.MRC.Volume element : getVolumesList()) { + for (int i = 0; i < volumes_.size(); i++) { size += com.google.protobuf.CodedOutputStream - .computeMessageSize(1, element); + .computeMessageSize(1, volumes_.get(i)); } size += getUnknownFields().getSerializedSize(); memoizedSerializedSize = size; return size; } - + + private static final long serialVersionUID = 0L; + @java.lang.Override + protected java.lang.Object writeReplace() + throws java.io.ObjectStreamException { + return super.writeReplace(); + } + public static org.xtreemfs.pbrpc.generatedinterfaces.MRC.Volumes parseFrom( com.google.protobuf.ByteString data) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data).buildParsed(); + return PARSER.parseFrom(data); } public static org.xtreemfs.pbrpc.generatedinterfaces.MRC.Volumes parseFrom( com.google.protobuf.ByteString data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(data, extensionRegistry); } public static org.xtreemfs.pbrpc.generatedinterfaces.MRC.Volumes parseFrom(byte[] data) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data).buildParsed(); + return PARSER.parseFrom(data); } public static org.xtreemfs.pbrpc.generatedinterfaces.MRC.Volumes parseFrom( byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(data, extensionRegistry); } public static org.xtreemfs.pbrpc.generatedinterfaces.MRC.Volumes parseFrom(java.io.InputStream input) throws java.io.IOException { - return newBuilder().mergeFrom(input).buildParsed(); + return PARSER.parseFrom(input); } public static org.xtreemfs.pbrpc.generatedinterfaces.MRC.Volumes parseFrom( java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - return newBuilder().mergeFrom(input, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(input, extensionRegistry); } public static org.xtreemfs.pbrpc.generatedinterfaces.MRC.Volumes parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException { - Builder builder = newBuilder(); - if (builder.mergeDelimitedFrom(input)) { - return builder.buildParsed(); - } else { - return null; - } + return PARSER.parseDelimitedFrom(input); } public static org.xtreemfs.pbrpc.generatedinterfaces.MRC.Volumes parseDelimitedFrom( java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - Builder builder = newBuilder(); - if (builder.mergeDelimitedFrom(input, extensionRegistry)) { - return builder.buildParsed(); - } else { - return null; - } + return PARSER.parseDelimitedFrom(input, extensionRegistry); } public static org.xtreemfs.pbrpc.generatedinterfaces.MRC.Volumes parseFrom( com.google.protobuf.CodedInputStream input) throws java.io.IOException { - return newBuilder().mergeFrom(input).buildParsed(); + return PARSER.parseFrom(input); } public static org.xtreemfs.pbrpc.generatedinterfaces.MRC.Volumes parseFrom( com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - return newBuilder().mergeFrom(input, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(input, extensionRegistry); } - + public static Builder newBuilder() { return Builder.create(); } public Builder newBuilderForType() { return newBuilder(); } public static Builder newBuilder(org.xtreemfs.pbrpc.generatedinterfaces.MRC.Volumes prototype) { return newBuilder().mergeFrom(prototype); } public Builder toBuilder() { return newBuilder(this); } - + + @java.lang.Override + protected Builder newBuilderForType( + com.google.protobuf.GeneratedMessage.BuilderParent parent) { + Builder builder = new Builder(parent); + return builder; + } + /** + * Protobuf type {@code xtreemfs.pbrpc.Volumes} + * + *
+     * a list of volumes; relevant for the 'xtfs_lsvol' call
+     * 
+ */ public static final class Builder extends - com.google.protobuf.GeneratedMessage.Builder { - private org.xtreemfs.pbrpc.generatedinterfaces.MRC.Volumes result; - + com.google.protobuf.GeneratedMessage.Builder + implements org.xtreemfs.pbrpc.generatedinterfaces.MRC.VolumesOrBuilder { + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return org.xtreemfs.pbrpc.generatedinterfaces.MRC.internal_static_xtreemfs_pbrpc_Volumes_descriptor; + } + + protected com.google.protobuf.GeneratedMessage.FieldAccessorTable + internalGetFieldAccessorTable() { + return org.xtreemfs.pbrpc.generatedinterfaces.MRC.internal_static_xtreemfs_pbrpc_Volumes_fieldAccessorTable + .ensureFieldAccessorsInitialized( + org.xtreemfs.pbrpc.generatedinterfaces.MRC.Volumes.class, org.xtreemfs.pbrpc.generatedinterfaces.MRC.Volumes.Builder.class); + } + // Construct using org.xtreemfs.pbrpc.generatedinterfaces.MRC.Volumes.newBuilder() - private Builder() {} - - private static Builder create() { - Builder builder = new Builder(); - builder.result = new org.xtreemfs.pbrpc.generatedinterfaces.MRC.Volumes(); - return builder; + private Builder() { + maybeForceBuilderInitialization(); } - - protected org.xtreemfs.pbrpc.generatedinterfaces.MRC.Volumes internalGetResult() { - return result; + + private Builder( + com.google.protobuf.GeneratedMessage.BuilderParent parent) { + super(parent); + maybeForceBuilderInitialization(); + } + private void maybeForceBuilderInitialization() { + if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) { + getVolumesFieldBuilder(); + } + } + private static Builder create() { + return new Builder(); } - + public Builder clear() { - if (result == null) { - throw new IllegalStateException( - "Cannot call clear() after build()."); + super.clear(); + if (volumesBuilder_ == null) { + volumes_ = java.util.Collections.emptyList(); + bitField0_ = (bitField0_ & ~0x00000001); + } else { + volumesBuilder_.clear(); } - result = new org.xtreemfs.pbrpc.generatedinterfaces.MRC.Volumes(); return this; } - + public Builder clone() { - return create().mergeFrom(result); + return create().mergeFrom(buildPartial()); } - + public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() { - return org.xtreemfs.pbrpc.generatedinterfaces.MRC.Volumes.getDescriptor(); + return org.xtreemfs.pbrpc.generatedinterfaces.MRC.internal_static_xtreemfs_pbrpc_Volumes_descriptor; } - + public org.xtreemfs.pbrpc.generatedinterfaces.MRC.Volumes getDefaultInstanceForType() { return org.xtreemfs.pbrpc.generatedinterfaces.MRC.Volumes.getDefaultInstance(); } - - public boolean isInitialized() { - return result.isInitialized(); - } + public org.xtreemfs.pbrpc.generatedinterfaces.MRC.Volumes build() { - if (result != null && !isInitialized()) { + org.xtreemfs.pbrpc.generatedinterfaces.MRC.Volumes result = buildPartial(); + if (!result.isInitialized()) { throw newUninitializedMessageException(result); } - return buildPartial(); - } - - private org.xtreemfs.pbrpc.generatedinterfaces.MRC.Volumes buildParsed() - throws com.google.protobuf.InvalidProtocolBufferException { - if (!isInitialized()) { - throw newUninitializedMessageException( - result).asInvalidProtocolBufferException(); - } - return buildPartial(); + return result; } - + public org.xtreemfs.pbrpc.generatedinterfaces.MRC.Volumes buildPartial() { - if (result == null) { - throw new IllegalStateException( - "build() has already been called on this Builder."); - } - if (result.volumes_ != java.util.Collections.EMPTY_LIST) { - result.volumes_ = - java.util.Collections.unmodifiableList(result.volumes_); + org.xtreemfs.pbrpc.generatedinterfaces.MRC.Volumes result = new org.xtreemfs.pbrpc.generatedinterfaces.MRC.Volumes(this); + int from_bitField0_ = bitField0_; + if (volumesBuilder_ == null) { + if (((bitField0_ & 0x00000001) == 0x00000001)) { + volumes_ = java.util.Collections.unmodifiableList(volumes_); + bitField0_ = (bitField0_ & ~0x00000001); + } + result.volumes_ = volumes_; + } else { + result.volumes_ = volumesBuilder_.build(); } - org.xtreemfs.pbrpc.generatedinterfaces.MRC.Volumes returnMe = result; - result = null; - return returnMe; + onBuilt(); + return result; } - + public Builder mergeFrom(com.google.protobuf.Message other) { if (other instanceof org.xtreemfs.pbrpc.generatedinterfaces.MRC.Volumes) { return mergeFrom((org.xtreemfs.pbrpc.generatedinterfaces.MRC.Volumes)other); @@ -2983,503 +7513,1639 @@ public final class MRC { return this; } } - + public Builder mergeFrom(org.xtreemfs.pbrpc.generatedinterfaces.MRC.Volumes other) { if (other == org.xtreemfs.pbrpc.generatedinterfaces.MRC.Volumes.getDefaultInstance()) return this; - if (!other.volumes_.isEmpty()) { - if (result.volumes_.isEmpty()) { - result.volumes_ = new java.util.ArrayList(); + if (volumesBuilder_ == null) { + if (!other.volumes_.isEmpty()) { + if (volumes_.isEmpty()) { + volumes_ = other.volumes_; + bitField0_ = (bitField0_ & ~0x00000001); + } else { + ensureVolumesIsMutable(); + volumes_.addAll(other.volumes_); + } + onChanged(); + } + } else { + if (!other.volumes_.isEmpty()) { + if (volumesBuilder_.isEmpty()) { + volumesBuilder_.dispose(); + volumesBuilder_ = null; + volumes_ = other.volumes_; + bitField0_ = (bitField0_ & ~0x00000001); + volumesBuilder_ = + com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ? + getVolumesFieldBuilder() : null; + } else { + volumesBuilder_.addAllMessages(other.volumes_); + } } - result.volumes_.addAll(other.volumes_); } this.mergeUnknownFields(other.getUnknownFields()); return this; } - + + public final boolean isInitialized() { + for (int i = 0; i < getVolumesCount(); i++) { + if (!getVolumes(i).isInitialized()) { + + return false; + } + } + return true; + } + public Builder mergeFrom( com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - com.google.protobuf.UnknownFieldSet.Builder unknownFields = - com.google.protobuf.UnknownFieldSet.newBuilder( - this.getUnknownFields()); - while (true) { - int tag = input.readTag(); - switch (tag) { - case 0: - this.setUnknownFields(unknownFields.build()); - return this; - default: { - if (!parseUnknownField(input, unknownFields, - extensionRegistry, tag)) { - this.setUnknownFields(unknownFields.build()); - return this; - } - break; - } - case 10: { - org.xtreemfs.pbrpc.generatedinterfaces.MRC.Volume.Builder subBuilder = org.xtreemfs.pbrpc.generatedinterfaces.MRC.Volume.newBuilder(); - input.readMessage(subBuilder, extensionRegistry); - addVolumes(subBuilder.buildPartial()); - break; - } + org.xtreemfs.pbrpc.generatedinterfaces.MRC.Volumes parsedMessage = null; + try { + parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + parsedMessage = (org.xtreemfs.pbrpc.generatedinterfaces.MRC.Volumes) e.getUnfinishedMessage(); + throw e; + } finally { + if (parsedMessage != null) { + mergeFrom(parsedMessage); } } + return this; } - - + private int bitField0_; + // repeated .xtreemfs.pbrpc.Volume volumes = 1; + private java.util.List volumes_ = + java.util.Collections.emptyList(); + private void ensureVolumesIsMutable() { + if (!((bitField0_ & 0x00000001) == 0x00000001)) { + volumes_ = new java.util.ArrayList(volumes_); + bitField0_ |= 0x00000001; + } + } + + private com.google.protobuf.RepeatedFieldBuilder< + org.xtreemfs.pbrpc.generatedinterfaces.MRC.Volume, org.xtreemfs.pbrpc.generatedinterfaces.MRC.Volume.Builder, org.xtreemfs.pbrpc.generatedinterfaces.MRC.VolumeOrBuilder> volumesBuilder_; + + /** + * repeated .xtreemfs.pbrpc.Volume volumes = 1; + */ public java.util.List getVolumesList() { - return java.util.Collections.unmodifiableList(result.volumes_); + if (volumesBuilder_ == null) { + return java.util.Collections.unmodifiableList(volumes_); + } else { + return volumesBuilder_.getMessageList(); + } } + /** + * repeated .xtreemfs.pbrpc.Volume volumes = 1; + */ public int getVolumesCount() { - return result.getVolumesCount(); + if (volumesBuilder_ == null) { + return volumes_.size(); + } else { + return volumesBuilder_.getCount(); + } } + /** + * repeated .xtreemfs.pbrpc.Volume volumes = 1; + */ public org.xtreemfs.pbrpc.generatedinterfaces.MRC.Volume getVolumes(int index) { - return result.getVolumes(index); + if (volumesBuilder_ == null) { + return volumes_.get(index); + } else { + return volumesBuilder_.getMessage(index); + } } - public Builder setVolumes(int index, org.xtreemfs.pbrpc.generatedinterfaces.MRC.Volume value) { - if (value == null) { - throw new NullPointerException(); + /** + * repeated .xtreemfs.pbrpc.Volume volumes = 1; + */ + public Builder setVolumes( + int index, org.xtreemfs.pbrpc.generatedinterfaces.MRC.Volume value) { + if (volumesBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + ensureVolumesIsMutable(); + volumes_.set(index, value); + onChanged(); + } else { + volumesBuilder_.setMessage(index, value); } - result.volumes_.set(index, value); return this; } - public Builder setVolumes(int index, org.xtreemfs.pbrpc.generatedinterfaces.MRC.Volume.Builder builderForValue) { - result.volumes_.set(index, builderForValue.build()); + /** + * repeated .xtreemfs.pbrpc.Volume volumes = 1; + */ + public Builder setVolumes( + int index, org.xtreemfs.pbrpc.generatedinterfaces.MRC.Volume.Builder builderForValue) { + if (volumesBuilder_ == null) { + ensureVolumesIsMutable(); + volumes_.set(index, builderForValue.build()); + onChanged(); + } else { + volumesBuilder_.setMessage(index, builderForValue.build()); + } return this; } + /** + * repeated .xtreemfs.pbrpc.Volume volumes = 1; + */ public Builder addVolumes(org.xtreemfs.pbrpc.generatedinterfaces.MRC.Volume value) { - if (value == null) { - throw new NullPointerException(); + if (volumesBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + ensureVolumesIsMutable(); + volumes_.add(value); + onChanged(); + } else { + volumesBuilder_.addMessage(value); + } + return this; + } + /** + * repeated .xtreemfs.pbrpc.Volume volumes = 1; + */ + public Builder addVolumes( + int index, org.xtreemfs.pbrpc.generatedinterfaces.MRC.Volume value) { + if (volumesBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + ensureVolumesIsMutable(); + volumes_.add(index, value); + onChanged(); + } else { + volumesBuilder_.addMessage(index, value); } - if (result.volumes_.isEmpty()) { - result.volumes_ = new java.util.ArrayList(); + return this; + } + /** + * repeated .xtreemfs.pbrpc.Volume volumes = 1; + */ + public Builder addVolumes( + org.xtreemfs.pbrpc.generatedinterfaces.MRC.Volume.Builder builderForValue) { + if (volumesBuilder_ == null) { + ensureVolumesIsMutable(); + volumes_.add(builderForValue.build()); + onChanged(); + } else { + volumesBuilder_.addMessage(builderForValue.build()); } - result.volumes_.add(value); return this; } - public Builder addVolumes(org.xtreemfs.pbrpc.generatedinterfaces.MRC.Volume.Builder builderForValue) { - if (result.volumes_.isEmpty()) { - result.volumes_ = new java.util.ArrayList(); + /** + * repeated .xtreemfs.pbrpc.Volume volumes = 1; + */ + public Builder addVolumes( + int index, org.xtreemfs.pbrpc.generatedinterfaces.MRC.Volume.Builder builderForValue) { + if (volumesBuilder_ == null) { + ensureVolumesIsMutable(); + volumes_.add(index, builderForValue.build()); + onChanged(); + } else { + volumesBuilder_.addMessage(index, builderForValue.build()); } - result.volumes_.add(builderForValue.build()); return this; } + /** + * repeated .xtreemfs.pbrpc.Volume volumes = 1; + */ public Builder addAllVolumes( java.lang.Iterable values) { - if (result.volumes_.isEmpty()) { - result.volumes_ = new java.util.ArrayList(); + if (volumesBuilder_ == null) { + ensureVolumesIsMutable(); + super.addAll(values, volumes_); + onChanged(); + } else { + volumesBuilder_.addAllMessages(values); } - super.addAll(values, result.volumes_); return this; } + /** + * repeated .xtreemfs.pbrpc.Volume volumes = 1; + */ public Builder clearVolumes() { - result.volumes_ = java.util.Collections.emptyList(); + if (volumesBuilder_ == null) { + volumes_ = java.util.Collections.emptyList(); + bitField0_ = (bitField0_ & ~0x00000001); + onChanged(); + } else { + volumesBuilder_.clear(); + } return this; } - + /** + * repeated .xtreemfs.pbrpc.Volume volumes = 1; + */ + public Builder removeVolumes(int index) { + if (volumesBuilder_ == null) { + ensureVolumesIsMutable(); + volumes_.remove(index); + onChanged(); + } else { + volumesBuilder_.remove(index); + } + return this; + } + /** + * repeated .xtreemfs.pbrpc.Volume volumes = 1; + */ + public org.xtreemfs.pbrpc.generatedinterfaces.MRC.Volume.Builder getVolumesBuilder( + int index) { + return getVolumesFieldBuilder().getBuilder(index); + } + /** + * repeated .xtreemfs.pbrpc.Volume volumes = 1; + */ + public org.xtreemfs.pbrpc.generatedinterfaces.MRC.VolumeOrBuilder getVolumesOrBuilder( + int index) { + if (volumesBuilder_ == null) { + return volumes_.get(index); } else { + return volumesBuilder_.getMessageOrBuilder(index); + } + } + /** + * repeated .xtreemfs.pbrpc.Volume volumes = 1; + */ + public java.util.List + getVolumesOrBuilderList() { + if (volumesBuilder_ != null) { + return volumesBuilder_.getMessageOrBuilderList(); + } else { + return java.util.Collections.unmodifiableList(volumes_); + } + } + /** + * repeated .xtreemfs.pbrpc.Volume volumes = 1; + */ + public org.xtreemfs.pbrpc.generatedinterfaces.MRC.Volume.Builder addVolumesBuilder() { + return getVolumesFieldBuilder().addBuilder( + org.xtreemfs.pbrpc.generatedinterfaces.MRC.Volume.getDefaultInstance()); + } + /** + * repeated .xtreemfs.pbrpc.Volume volumes = 1; + */ + public org.xtreemfs.pbrpc.generatedinterfaces.MRC.Volume.Builder addVolumesBuilder( + int index) { + return getVolumesFieldBuilder().addBuilder( + index, org.xtreemfs.pbrpc.generatedinterfaces.MRC.Volume.getDefaultInstance()); + } + /** + * repeated .xtreemfs.pbrpc.Volume volumes = 1; + */ + public java.util.List + getVolumesBuilderList() { + return getVolumesFieldBuilder().getBuilderList(); + } + private com.google.protobuf.RepeatedFieldBuilder< + org.xtreemfs.pbrpc.generatedinterfaces.MRC.Volume, org.xtreemfs.pbrpc.generatedinterfaces.MRC.Volume.Builder, org.xtreemfs.pbrpc.generatedinterfaces.MRC.VolumeOrBuilder> + getVolumesFieldBuilder() { + if (volumesBuilder_ == null) { + volumesBuilder_ = new com.google.protobuf.RepeatedFieldBuilder< + org.xtreemfs.pbrpc.generatedinterfaces.MRC.Volume, org.xtreemfs.pbrpc.generatedinterfaces.MRC.Volume.Builder, org.xtreemfs.pbrpc.generatedinterfaces.MRC.VolumeOrBuilder>( + volumes_, + ((bitField0_ & 0x00000001) == 0x00000001), + getParentForChildren(), + isClean()); + volumes_ = null; + } + return volumesBuilder_; + } + // @@protoc_insertion_point(builder_scope:xtreemfs.pbrpc.Volumes) } - + static { defaultInstance = new Volumes(true); - org.xtreemfs.pbrpc.generatedinterfaces.MRC.internalForceInit(); defaultInstance.initFields(); } - + // @@protoc_insertion_point(class_scope:xtreemfs.pbrpc.Volumes) } - + + public interface StatVFSOrBuilder + extends com.google.protobuf.MessageOrBuilder { + + // required fixed32 bsize = 1; + /** + * required fixed32 bsize = 1; + * + *
+     * size of a block in bytes
+     * 
+ */ + boolean hasBsize(); + /** + * required fixed32 bsize = 1; + * + *
+     * size of a block in bytes
+     * 
+ */ + int getBsize(); + + // required fixed64 bavail = 2; + /** + * required fixed64 bavail = 2; + * + *
+     * number of available blocks in the file system for non-privileged users      
+     * 
+ */ + boolean hasBavail(); + /** + * required fixed64 bavail = 2; + * + *
+     * number of available blocks in the file system for non-privileged users      
+     * 
+ */ + long getBavail(); + + // optional fixed64 bfree = 13; + /** + * optional fixed64 bfree = 13; + * + *
+     * number of free blocks in the file system
+     * 
+ */ + boolean hasBfree(); + /** + * optional fixed64 bfree = 13; + * + *
+     * number of free blocks in the file system
+     * 
+ */ + long getBfree(); + + // required fixed64 blocks = 3; + /** + * required fixed64 blocks = 3; + * + *
+     * total number of blocks in file system        
+     * 
+ */ + boolean hasBlocks(); + /** + * required fixed64 blocks = 3; + * + *
+     * total number of blocks in file system        
+     * 
+ */ + long getBlocks(); + + // required string fsid = 4; + /** + * required string fsid = 4; + * + *
+     * volume id
+     * 
+ */ + boolean hasFsid(); + /** + * required string fsid = 4; + * + *
+     * volume id
+     * 
+ */ + java.lang.String getFsid(); + /** + * required string fsid = 4; + * + *
+     * volume id
+     * 
+ */ + com.google.protobuf.ByteString + getFsidBytes(); + + // required fixed32 namemax = 5; + /** + * required fixed32 namemax = 5; + * + *
+     * maximum filename length
+     * 
+ */ + boolean hasNamemax(); + /** + * required fixed32 namemax = 5; + * + *
+     * maximum filename length
+     * 
+ */ + int getNamemax(); + + // required .xtreemfs.pbrpc.AccessControlPolicyType access_control_policy = 6; + /** + * required .xtreemfs.pbrpc.AccessControlPolicyType access_control_policy = 6; + * + *
+     * access control policy of the volume
+     * 
+ */ + boolean hasAccessControlPolicy(); + /** + * required .xtreemfs.pbrpc.AccessControlPolicyType access_control_policy = 6; + * + *
+     * access control policy of the volume
+     * 
+ */ + org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.AccessControlPolicyType getAccessControlPolicy(); + + // required .xtreemfs.pbrpc.StripingPolicy default_striping_policy = 7; + /** + * required .xtreemfs.pbrpc.StripingPolicy default_striping_policy = 7; + * + *
+     * default striping policy of the volume
+     * 
+ */ + boolean hasDefaultStripingPolicy(); + /** + * required .xtreemfs.pbrpc.StripingPolicy default_striping_policy = 7; + * + *
+     * default striping policy of the volume
+     * 
+ */ + org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.StripingPolicy getDefaultStripingPolicy(); + /** + * required .xtreemfs.pbrpc.StripingPolicy default_striping_policy = 7; + * + *
+     * default striping policy of the volume
+     * 
+ */ + org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.StripingPolicyOrBuilder getDefaultStripingPolicyOrBuilder(); + + // required fixed64 etag = 8; + /** + * required fixed64 etag = 8; + * + *
+     * identification tag for the statVFS object
+     * 
+ */ + boolean hasEtag(); + /** + * required fixed64 etag = 8; + * + *
+     * identification tag for the statVFS object
+     * 
+ */ + long getEtag(); + + // required fixed32 mode = 9; + /** + * required fixed32 mode = 9; + * + *
+     * access mode of the volume's root directory
+     * 
+ */ + boolean hasMode(); + /** + * required fixed32 mode = 9; + * + *
+     * access mode of the volume's root directory
+     * 
+ */ + int getMode(); + + // required string name = 10; + /** + * required string name = 10; + * + *
+     * volume name
+     * 
+ */ + boolean hasName(); + /** + * required string name = 10; + * + *
+     * volume name
+     * 
+ */ + java.lang.String getName(); + /** + * required string name = 10; + * + *
+     * volume name
+     * 
+ */ + com.google.protobuf.ByteString + getNameBytes(); + + // required string owner_group_id = 11; + /** + * required string owner_group_id = 11; + * + *
+     * owning group ID of the volume (i.e. volume's root directory)
+     * 
+ */ + boolean hasOwnerGroupId(); + /** + * required string owner_group_id = 11; + * + *
+     * owning group ID of the volume (i.e. volume's root directory)
+     * 
+ */ + java.lang.String getOwnerGroupId(); + /** + * required string owner_group_id = 11; + * + *
+     * owning group ID of the volume (i.e. volume's root directory)
+     * 
+ */ + com.google.protobuf.ByteString + getOwnerGroupIdBytes(); + + // required string owner_user_id = 12; + /** + * required string owner_user_id = 12; + * + *
+     * owning user ID of the volume (i.e. volume's root directory)
+     * 
+ */ + boolean hasOwnerUserId(); + /** + * required string owner_user_id = 12; + * + *
+     * owning user ID of the volume (i.e. volume's root directory)
+     * 
+ */ + java.lang.String getOwnerUserId(); + /** + * required string owner_user_id = 12; + * + *
+     * owning user ID of the volume (i.e. volume's root directory)
+     * 
+ */ + com.google.protobuf.ByteString + getOwnerUserIdBytes(); + } + /** + * Protobuf type {@code xtreemfs.pbrpc.StatVFS} + * + *
+   * information about a file system (i.e. mounted volume)
+   * 
+ */ public static final class StatVFS extends - com.google.protobuf.GeneratedMessage { + com.google.protobuf.GeneratedMessage + implements StatVFSOrBuilder { // Use StatVFS.newBuilder() to construct. - private StatVFS() { - initFields(); + private StatVFS(com.google.protobuf.GeneratedMessage.Builder builder) { + super(builder); + this.unknownFields = builder.getUnknownFields(); } - private StatVFS(boolean noInit) {} - + private StatVFS(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); } + private static final StatVFS defaultInstance; public static StatVFS getDefaultInstance() { return defaultInstance; } - + public StatVFS getDefaultInstanceForType() { return defaultInstance; } - + + private final com.google.protobuf.UnknownFieldSet unknownFields; + @java.lang.Override + public final com.google.protobuf.UnknownFieldSet + getUnknownFields() { + return this.unknownFields; + } + private StatVFS( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + initFields(); + int mutable_bitField0_ = 0; + com.google.protobuf.UnknownFieldSet.Builder unknownFields = + com.google.protobuf.UnknownFieldSet.newBuilder(); + try { + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch (tag) { + case 0: + done = true; + break; + default: { + if (!parseUnknownField(input, unknownFields, + extensionRegistry, tag)) { + done = true; + } + break; + } + case 13: { + bitField0_ |= 0x00000001; + bsize_ = input.readFixed32(); + break; + } + case 17: { + bitField0_ |= 0x00000002; + bavail_ = input.readFixed64(); + break; + } + case 25: { + bitField0_ |= 0x00000008; + blocks_ = input.readFixed64(); + break; + } + case 34: { + bitField0_ |= 0x00000010; + fsid_ = input.readBytes(); + break; + } + case 45: { + bitField0_ |= 0x00000020; + namemax_ = input.readFixed32(); + break; + } + case 48: { + int rawValue = input.readEnum(); + org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.AccessControlPolicyType value = org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.AccessControlPolicyType.valueOf(rawValue); + if (value == null) { + unknownFields.mergeVarintField(6, rawValue); + } else { + bitField0_ |= 0x00000040; + accessControlPolicy_ = value; + } + break; + } + case 58: { + org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.StripingPolicy.Builder subBuilder = null; + if (((bitField0_ & 0x00000080) == 0x00000080)) { + subBuilder = defaultStripingPolicy_.toBuilder(); + } + defaultStripingPolicy_ = input.readMessage(org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.StripingPolicy.PARSER, extensionRegistry); + if (subBuilder != null) { + subBuilder.mergeFrom(defaultStripingPolicy_); + defaultStripingPolicy_ = subBuilder.buildPartial(); + } + bitField0_ |= 0x00000080; + break; + } + case 65: { + bitField0_ |= 0x00000100; + etag_ = input.readFixed64(); + break; + } + case 77: { + bitField0_ |= 0x00000200; + mode_ = input.readFixed32(); + break; + } + case 82: { + bitField0_ |= 0x00000400; + name_ = input.readBytes(); + break; + } + case 90: { + bitField0_ |= 0x00000800; + ownerGroupId_ = input.readBytes(); + break; + } + case 98: { + bitField0_ |= 0x00001000; + ownerUserId_ = input.readBytes(); + break; + } + case 105: { + bitField0_ |= 0x00000004; + bfree_ = input.readFixed64(); + break; + } + } + } + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(this); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException( + e.getMessage()).setUnfinishedMessage(this); + } finally { + this.unknownFields = unknownFields.build(); + makeExtensionsImmutable(); + } + } public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { return org.xtreemfs.pbrpc.generatedinterfaces.MRC.internal_static_xtreemfs_pbrpc_StatVFS_descriptor; } - + protected com.google.protobuf.GeneratedMessage.FieldAccessorTable internalGetFieldAccessorTable() { - return org.xtreemfs.pbrpc.generatedinterfaces.MRC.internal_static_xtreemfs_pbrpc_StatVFS_fieldAccessorTable; + return org.xtreemfs.pbrpc.generatedinterfaces.MRC.internal_static_xtreemfs_pbrpc_StatVFS_fieldAccessorTable + .ensureFieldAccessorsInitialized( + org.xtreemfs.pbrpc.generatedinterfaces.MRC.StatVFS.class, org.xtreemfs.pbrpc.generatedinterfaces.MRC.StatVFS.Builder.class); + } + + public static com.google.protobuf.Parser PARSER = + new com.google.protobuf.AbstractParser() { + public StatVFS parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return new StatVFS(input, extensionRegistry); + } + }; + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; } - + + private int bitField0_; // required fixed32 bsize = 1; public static final int BSIZE_FIELD_NUMBER = 1; - private boolean hasBsize; - private int bsize_ = 0; - public boolean hasBsize() { return hasBsize; } - public int getBsize() { return bsize_; } - + private int bsize_; + /** + * required fixed32 bsize = 1; + * + *
+     * size of a block in bytes
+     * 
+ */ + public boolean hasBsize() { + return ((bitField0_ & 0x00000001) == 0x00000001); + } + /** + * required fixed32 bsize = 1; + * + *
+     * size of a block in bytes
+     * 
+ */ + public int getBsize() { + return bsize_; + } + // required fixed64 bavail = 2; public static final int BAVAIL_FIELD_NUMBER = 2; - private boolean hasBavail; - private long bavail_ = 0L; - public boolean hasBavail() { return hasBavail; } - public long getBavail() { return bavail_; } - + private long bavail_; + /** + * required fixed64 bavail = 2; + * + *
+     * number of available blocks in the file system for non-privileged users      
+     * 
+ */ + public boolean hasBavail() { + return ((bitField0_ & 0x00000002) == 0x00000002); + } + /** + * required fixed64 bavail = 2; + * + *
+     * number of available blocks in the file system for non-privileged users      
+     * 
+ */ + public long getBavail() { + return bavail_; + } + // optional fixed64 bfree = 13; public static final int BFREE_FIELD_NUMBER = 13; - private boolean hasBfree; - private long bfree_ = 0L; - public boolean hasBfree() { return hasBfree; } - public long getBfree() { return bfree_; } - + private long bfree_; + /** + * optional fixed64 bfree = 13; + * + *
+     * number of free blocks in the file system
+     * 
+ */ + public boolean hasBfree() { + return ((bitField0_ & 0x00000004) == 0x00000004); + } + /** + * optional fixed64 bfree = 13; + * + *
+     * number of free blocks in the file system
+     * 
+ */ + public long getBfree() { + return bfree_; + } + // required fixed64 blocks = 3; public static final int BLOCKS_FIELD_NUMBER = 3; - private boolean hasBlocks; - private long blocks_ = 0L; - public boolean hasBlocks() { return hasBlocks; } - public long getBlocks() { return blocks_; } - + private long blocks_; + /** + * required fixed64 blocks = 3; + * + *
+     * total number of blocks in file system        
+     * 
+ */ + public boolean hasBlocks() { + return ((bitField0_ & 0x00000008) == 0x00000008); + } + /** + * required fixed64 blocks = 3; + * + *
+     * total number of blocks in file system        
+     * 
+ */ + public long getBlocks() { + return blocks_; + } + // required string fsid = 4; public static final int FSID_FIELD_NUMBER = 4; - private boolean hasFsid; - private java.lang.String fsid_ = ""; - public boolean hasFsid() { return hasFsid; } - public java.lang.String getFsid() { return fsid_; } - + private java.lang.Object fsid_; + /** + * required string fsid = 4; + * + *
+     * volume id
+     * 
+ */ + public boolean hasFsid() { + return ((bitField0_ & 0x00000010) == 0x00000010); + } + /** + * required string fsid = 4; + * + *
+     * volume id
+     * 
+ */ + public java.lang.String getFsid() { + java.lang.Object ref = fsid_; + if (ref instanceof java.lang.String) { + return (java.lang.String) ref; + } else { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + if (bs.isValidUtf8()) { + fsid_ = s; + } + return s; + } + } + /** + * required string fsid = 4; + * + *
+     * volume id
+     * 
+ */ + public com.google.protobuf.ByteString + getFsidBytes() { + java.lang.Object ref = fsid_; + if (ref instanceof java.lang.String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + fsid_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + // required fixed32 namemax = 5; public static final int NAMEMAX_FIELD_NUMBER = 5; - private boolean hasNamemax; - private int namemax_ = 0; - public boolean hasNamemax() { return hasNamemax; } - public int getNamemax() { return namemax_; } - + private int namemax_; + /** + * required fixed32 namemax = 5; + * + *
+     * maximum filename length
+     * 
+ */ + public boolean hasNamemax() { + return ((bitField0_ & 0x00000020) == 0x00000020); + } + /** + * required fixed32 namemax = 5; + * + *
+     * maximum filename length
+     * 
+ */ + public int getNamemax() { + return namemax_; + } + // required .xtreemfs.pbrpc.AccessControlPolicyType access_control_policy = 6; public static final int ACCESS_CONTROL_POLICY_FIELD_NUMBER = 6; - private boolean hasAccessControlPolicy; private org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.AccessControlPolicyType accessControlPolicy_; - public boolean hasAccessControlPolicy() { return hasAccessControlPolicy; } - public org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.AccessControlPolicyType getAccessControlPolicy() { return accessControlPolicy_; } - + /** + * required .xtreemfs.pbrpc.AccessControlPolicyType access_control_policy = 6; + * + *
+     * access control policy of the volume
+     * 
+ */ + public boolean hasAccessControlPolicy() { + return ((bitField0_ & 0x00000040) == 0x00000040); + } + /** + * required .xtreemfs.pbrpc.AccessControlPolicyType access_control_policy = 6; + * + *
+     * access control policy of the volume
+     * 
+ */ + public org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.AccessControlPolicyType getAccessControlPolicy() { + return accessControlPolicy_; + } + // required .xtreemfs.pbrpc.StripingPolicy default_striping_policy = 7; public static final int DEFAULT_STRIPING_POLICY_FIELD_NUMBER = 7; - private boolean hasDefaultStripingPolicy; private org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.StripingPolicy defaultStripingPolicy_; - public boolean hasDefaultStripingPolicy() { return hasDefaultStripingPolicy; } - public org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.StripingPolicy getDefaultStripingPolicy() { return defaultStripingPolicy_; } - + /** + * required .xtreemfs.pbrpc.StripingPolicy default_striping_policy = 7; + * + *
+     * default striping policy of the volume
+     * 
+ */ + public boolean hasDefaultStripingPolicy() { + return ((bitField0_ & 0x00000080) == 0x00000080); + } + /** + * required .xtreemfs.pbrpc.StripingPolicy default_striping_policy = 7; + * + *
+     * default striping policy of the volume
+     * 
+ */ + public org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.StripingPolicy getDefaultStripingPolicy() { + return defaultStripingPolicy_; + } + /** + * required .xtreemfs.pbrpc.StripingPolicy default_striping_policy = 7; + * + *
+     * default striping policy of the volume
+     * 
+ */ + public org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.StripingPolicyOrBuilder getDefaultStripingPolicyOrBuilder() { + return defaultStripingPolicy_; + } + // required fixed64 etag = 8; public static final int ETAG_FIELD_NUMBER = 8; - private boolean hasEtag; - private long etag_ = 0L; - public boolean hasEtag() { return hasEtag; } - public long getEtag() { return etag_; } - + private long etag_; + /** + * required fixed64 etag = 8; + * + *
+     * identification tag for the statVFS object
+     * 
+ */ + public boolean hasEtag() { + return ((bitField0_ & 0x00000100) == 0x00000100); + } + /** + * required fixed64 etag = 8; + * + *
+     * identification tag for the statVFS object
+     * 
+ */ + public long getEtag() { + return etag_; + } + // required fixed32 mode = 9; public static final int MODE_FIELD_NUMBER = 9; - private boolean hasMode; - private int mode_ = 0; - public boolean hasMode() { return hasMode; } - public int getMode() { return mode_; } - + private int mode_; + /** + * required fixed32 mode = 9; + * + *
+     * access mode of the volume's root directory
+     * 
+ */ + public boolean hasMode() { + return ((bitField0_ & 0x00000200) == 0x00000200); + } + /** + * required fixed32 mode = 9; + * + *
+     * access mode of the volume's root directory
+     * 
+ */ + public int getMode() { + return mode_; + } + // required string name = 10; public static final int NAME_FIELD_NUMBER = 10; - private boolean hasName; - private java.lang.String name_ = ""; - public boolean hasName() { return hasName; } - public java.lang.String getName() { return name_; } - + private java.lang.Object name_; + /** + * required string name = 10; + * + *
+     * volume name
+     * 
+ */ + public boolean hasName() { + return ((bitField0_ & 0x00000400) == 0x00000400); + } + /** + * required string name = 10; + * + *
+     * volume name
+     * 
+ */ + public java.lang.String getName() { + java.lang.Object ref = name_; + if (ref instanceof java.lang.String) { + return (java.lang.String) ref; + } else { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + if (bs.isValidUtf8()) { + name_ = s; + } + return s; + } + } + /** + * required string name = 10; + * + *
+     * volume name
+     * 
+ */ + public com.google.protobuf.ByteString + getNameBytes() { + java.lang.Object ref = name_; + if (ref instanceof java.lang.String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + name_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + // required string owner_group_id = 11; public static final int OWNER_GROUP_ID_FIELD_NUMBER = 11; - private boolean hasOwnerGroupId; - private java.lang.String ownerGroupId_ = ""; - public boolean hasOwnerGroupId() { return hasOwnerGroupId; } - public java.lang.String getOwnerGroupId() { return ownerGroupId_; } - + private java.lang.Object ownerGroupId_; + /** + * required string owner_group_id = 11; + * + *
+     * owning group ID of the volume (i.e. volume's root directory)
+     * 
+ */ + public boolean hasOwnerGroupId() { + return ((bitField0_ & 0x00000800) == 0x00000800); + } + /** + * required string owner_group_id = 11; + * + *
+     * owning group ID of the volume (i.e. volume's root directory)
+     * 
+ */ + public java.lang.String getOwnerGroupId() { + java.lang.Object ref = ownerGroupId_; + if (ref instanceof java.lang.String) { + return (java.lang.String) ref; + } else { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + if (bs.isValidUtf8()) { + ownerGroupId_ = s; + } + return s; + } + } + /** + * required string owner_group_id = 11; + * + *
+     * owning group ID of the volume (i.e. volume's root directory)
+     * 
+ */ + public com.google.protobuf.ByteString + getOwnerGroupIdBytes() { + java.lang.Object ref = ownerGroupId_; + if (ref instanceof java.lang.String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + ownerGroupId_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + // required string owner_user_id = 12; public static final int OWNER_USER_ID_FIELD_NUMBER = 12; - private boolean hasOwnerUserId; - private java.lang.String ownerUserId_ = ""; - public boolean hasOwnerUserId() { return hasOwnerUserId; } - public java.lang.String getOwnerUserId() { return ownerUserId_; } - + private java.lang.Object ownerUserId_; + /** + * required string owner_user_id = 12; + * + *
+     * owning user ID of the volume (i.e. volume's root directory)
+     * 
+ */ + public boolean hasOwnerUserId() { + return ((bitField0_ & 0x00001000) == 0x00001000); + } + /** + * required string owner_user_id = 12; + * + *
+     * owning user ID of the volume (i.e. volume's root directory)
+     * 
+ */ + public java.lang.String getOwnerUserId() { + java.lang.Object ref = ownerUserId_; + if (ref instanceof java.lang.String) { + return (java.lang.String) ref; + } else { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + if (bs.isValidUtf8()) { + ownerUserId_ = s; + } + return s; + } + } + /** + * required string owner_user_id = 12; + * + *
+     * owning user ID of the volume (i.e. volume's root directory)
+     * 
+ */ + public com.google.protobuf.ByteString + getOwnerUserIdBytes() { + java.lang.Object ref = ownerUserId_; + if (ref instanceof java.lang.String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + ownerUserId_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + private void initFields() { + bsize_ = 0; + bavail_ = 0L; + bfree_ = 0L; + blocks_ = 0L; + fsid_ = ""; + namemax_ = 0; accessControlPolicy_ = org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.AccessControlPolicyType.ACCESS_CONTROL_POLICY_NULL; defaultStripingPolicy_ = org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.StripingPolicy.getDefaultInstance(); + etag_ = 0L; + mode_ = 0; + name_ = ""; + ownerGroupId_ = ""; + ownerUserId_ = ""; } + private byte memoizedIsInitialized = -1; public final boolean isInitialized() { - if (!hasBsize) return false; - if (!hasBavail) return false; - if (!hasBlocks) return false; - if (!hasFsid) return false; - if (!hasNamemax) return false; - if (!hasAccessControlPolicy) return false; - if (!hasDefaultStripingPolicy) return false; - if (!hasEtag) return false; - if (!hasMode) return false; - if (!hasName) return false; - if (!hasOwnerGroupId) return false; - if (!hasOwnerUserId) return false; - if (!getDefaultStripingPolicy().isInitialized()) return false; + byte isInitialized = memoizedIsInitialized; + if (isInitialized != -1) return isInitialized == 1; + + if (!hasBsize()) { + memoizedIsInitialized = 0; + return false; + } + if (!hasBavail()) { + memoizedIsInitialized = 0; + return false; + } + if (!hasBlocks()) { + memoizedIsInitialized = 0; + return false; + } + if (!hasFsid()) { + memoizedIsInitialized = 0; + return false; + } + if (!hasNamemax()) { + memoizedIsInitialized = 0; + return false; + } + if (!hasAccessControlPolicy()) { + memoizedIsInitialized = 0; + return false; + } + if (!hasDefaultStripingPolicy()) { + memoizedIsInitialized = 0; + return false; + } + if (!hasEtag()) { + memoizedIsInitialized = 0; + return false; + } + if (!hasMode()) { + memoizedIsInitialized = 0; + return false; + } + if (!hasName()) { + memoizedIsInitialized = 0; + return false; + } + if (!hasOwnerGroupId()) { + memoizedIsInitialized = 0; + return false; + } + if (!hasOwnerUserId()) { + memoizedIsInitialized = 0; + return false; + } + if (!getDefaultStripingPolicy().isInitialized()) { + memoizedIsInitialized = 0; + return false; + } + memoizedIsInitialized = 1; return true; } - + public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException { getSerializedSize(); - if (hasBsize()) { - output.writeFixed32(1, getBsize()); + if (((bitField0_ & 0x00000001) == 0x00000001)) { + output.writeFixed32(1, bsize_); } - if (hasBavail()) { - output.writeFixed64(2, getBavail()); + if (((bitField0_ & 0x00000002) == 0x00000002)) { + output.writeFixed64(2, bavail_); } - if (hasBlocks()) { - output.writeFixed64(3, getBlocks()); + if (((bitField0_ & 0x00000008) == 0x00000008)) { + output.writeFixed64(3, blocks_); } - if (hasFsid()) { - output.writeString(4, getFsid()); + if (((bitField0_ & 0x00000010) == 0x00000010)) { + output.writeBytes(4, getFsidBytes()); } - if (hasNamemax()) { - output.writeFixed32(5, getNamemax()); + if (((bitField0_ & 0x00000020) == 0x00000020)) { + output.writeFixed32(5, namemax_); } - if (hasAccessControlPolicy()) { - output.writeEnum(6, getAccessControlPolicy().getNumber()); + if (((bitField0_ & 0x00000040) == 0x00000040)) { + output.writeEnum(6, accessControlPolicy_.getNumber()); } - if (hasDefaultStripingPolicy()) { - output.writeMessage(7, getDefaultStripingPolicy()); + if (((bitField0_ & 0x00000080) == 0x00000080)) { + output.writeMessage(7, defaultStripingPolicy_); } - if (hasEtag()) { - output.writeFixed64(8, getEtag()); + if (((bitField0_ & 0x00000100) == 0x00000100)) { + output.writeFixed64(8, etag_); } - if (hasMode()) { - output.writeFixed32(9, getMode()); + if (((bitField0_ & 0x00000200) == 0x00000200)) { + output.writeFixed32(9, mode_); } - if (hasName()) { - output.writeString(10, getName()); + if (((bitField0_ & 0x00000400) == 0x00000400)) { + output.writeBytes(10, getNameBytes()); } - if (hasOwnerGroupId()) { - output.writeString(11, getOwnerGroupId()); + if (((bitField0_ & 0x00000800) == 0x00000800)) { + output.writeBytes(11, getOwnerGroupIdBytes()); } - if (hasOwnerUserId()) { - output.writeString(12, getOwnerUserId()); + if (((bitField0_ & 0x00001000) == 0x00001000)) { + output.writeBytes(12, getOwnerUserIdBytes()); } - if (hasBfree()) { - output.writeFixed64(13, getBfree()); + if (((bitField0_ & 0x00000004) == 0x00000004)) { + output.writeFixed64(13, bfree_); } getUnknownFields().writeTo(output); } - + private int memoizedSerializedSize = -1; public int getSerializedSize() { int size = memoizedSerializedSize; if (size != -1) return size; - + size = 0; - if (hasBsize()) { + if (((bitField0_ & 0x00000001) == 0x00000001)) { size += com.google.protobuf.CodedOutputStream - .computeFixed32Size(1, getBsize()); + .computeFixed32Size(1, bsize_); } - if (hasBavail()) { + if (((bitField0_ & 0x00000002) == 0x00000002)) { size += com.google.protobuf.CodedOutputStream - .computeFixed64Size(2, getBavail()); + .computeFixed64Size(2, bavail_); } - if (hasBlocks()) { + if (((bitField0_ & 0x00000008) == 0x00000008)) { size += com.google.protobuf.CodedOutputStream - .computeFixed64Size(3, getBlocks()); + .computeFixed64Size(3, blocks_); } - if (hasFsid()) { + if (((bitField0_ & 0x00000010) == 0x00000010)) { size += com.google.protobuf.CodedOutputStream - .computeStringSize(4, getFsid()); + .computeBytesSize(4, getFsidBytes()); } - if (hasNamemax()) { + if (((bitField0_ & 0x00000020) == 0x00000020)) { size += com.google.protobuf.CodedOutputStream - .computeFixed32Size(5, getNamemax()); + .computeFixed32Size(5, namemax_); } - if (hasAccessControlPolicy()) { + if (((bitField0_ & 0x00000040) == 0x00000040)) { size += com.google.protobuf.CodedOutputStream - .computeEnumSize(6, getAccessControlPolicy().getNumber()); + .computeEnumSize(6, accessControlPolicy_.getNumber()); } - if (hasDefaultStripingPolicy()) { + if (((bitField0_ & 0x00000080) == 0x00000080)) { size += com.google.protobuf.CodedOutputStream - .computeMessageSize(7, getDefaultStripingPolicy()); + .computeMessageSize(7, defaultStripingPolicy_); } - if (hasEtag()) { + if (((bitField0_ & 0x00000100) == 0x00000100)) { size += com.google.protobuf.CodedOutputStream - .computeFixed64Size(8, getEtag()); + .computeFixed64Size(8, etag_); } - if (hasMode()) { + if (((bitField0_ & 0x00000200) == 0x00000200)) { size += com.google.protobuf.CodedOutputStream - .computeFixed32Size(9, getMode()); + .computeFixed32Size(9, mode_); } - if (hasName()) { + if (((bitField0_ & 0x00000400) == 0x00000400)) { size += com.google.protobuf.CodedOutputStream - .computeStringSize(10, getName()); + .computeBytesSize(10, getNameBytes()); } - if (hasOwnerGroupId()) { + if (((bitField0_ & 0x00000800) == 0x00000800)) { size += com.google.protobuf.CodedOutputStream - .computeStringSize(11, getOwnerGroupId()); + .computeBytesSize(11, getOwnerGroupIdBytes()); } - if (hasOwnerUserId()) { + if (((bitField0_ & 0x00001000) == 0x00001000)) { size += com.google.protobuf.CodedOutputStream - .computeStringSize(12, getOwnerUserId()); + .computeBytesSize(12, getOwnerUserIdBytes()); } - if (hasBfree()) { + if (((bitField0_ & 0x00000004) == 0x00000004)) { size += com.google.protobuf.CodedOutputStream - .computeFixed64Size(13, getBfree()); + .computeFixed64Size(13, bfree_); } size += getUnknownFields().getSerializedSize(); memoizedSerializedSize = size; return size; } - + + private static final long serialVersionUID = 0L; + @java.lang.Override + protected java.lang.Object writeReplace() + throws java.io.ObjectStreamException { + return super.writeReplace(); + } + public static org.xtreemfs.pbrpc.generatedinterfaces.MRC.StatVFS parseFrom( com.google.protobuf.ByteString data) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data).buildParsed(); + return PARSER.parseFrom(data); } public static org.xtreemfs.pbrpc.generatedinterfaces.MRC.StatVFS parseFrom( com.google.protobuf.ByteString data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(data, extensionRegistry); } public static org.xtreemfs.pbrpc.generatedinterfaces.MRC.StatVFS parseFrom(byte[] data) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data).buildParsed(); + return PARSER.parseFrom(data); } public static org.xtreemfs.pbrpc.generatedinterfaces.MRC.StatVFS parseFrom( byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(data, extensionRegistry); } public static org.xtreemfs.pbrpc.generatedinterfaces.MRC.StatVFS parseFrom(java.io.InputStream input) throws java.io.IOException { - return newBuilder().mergeFrom(input).buildParsed(); + return PARSER.parseFrom(input); } public static org.xtreemfs.pbrpc.generatedinterfaces.MRC.StatVFS parseFrom( java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - return newBuilder().mergeFrom(input, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(input, extensionRegistry); } public static org.xtreemfs.pbrpc.generatedinterfaces.MRC.StatVFS parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException { - Builder builder = newBuilder(); - if (builder.mergeDelimitedFrom(input)) { - return builder.buildParsed(); - } else { - return null; - } + return PARSER.parseDelimitedFrom(input); } public static org.xtreemfs.pbrpc.generatedinterfaces.MRC.StatVFS parseDelimitedFrom( java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - Builder builder = newBuilder(); - if (builder.mergeDelimitedFrom(input, extensionRegistry)) { - return builder.buildParsed(); - } else { - return null; - } + return PARSER.parseDelimitedFrom(input, extensionRegistry); } public static org.xtreemfs.pbrpc.generatedinterfaces.MRC.StatVFS parseFrom( com.google.protobuf.CodedInputStream input) throws java.io.IOException { - return newBuilder().mergeFrom(input).buildParsed(); + return PARSER.parseFrom(input); } public static org.xtreemfs.pbrpc.generatedinterfaces.MRC.StatVFS parseFrom( com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - return newBuilder().mergeFrom(input, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(input, extensionRegistry); } - + public static Builder newBuilder() { return Builder.create(); } public Builder newBuilderForType() { return newBuilder(); } public static Builder newBuilder(org.xtreemfs.pbrpc.generatedinterfaces.MRC.StatVFS prototype) { return newBuilder().mergeFrom(prototype); } public Builder toBuilder() { return newBuilder(this); } - + + @java.lang.Override + protected Builder newBuilderForType( + com.google.protobuf.GeneratedMessage.BuilderParent parent) { + Builder builder = new Builder(parent); + return builder; + } + /** + * Protobuf type {@code xtreemfs.pbrpc.StatVFS} + * + *
+     * information about a file system (i.e. mounted volume)
+     * 
+ */ public static final class Builder extends - com.google.protobuf.GeneratedMessage.Builder { - private org.xtreemfs.pbrpc.generatedinterfaces.MRC.StatVFS result; - + com.google.protobuf.GeneratedMessage.Builder + implements org.xtreemfs.pbrpc.generatedinterfaces.MRC.StatVFSOrBuilder { + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return org.xtreemfs.pbrpc.generatedinterfaces.MRC.internal_static_xtreemfs_pbrpc_StatVFS_descriptor; + } + + protected com.google.protobuf.GeneratedMessage.FieldAccessorTable + internalGetFieldAccessorTable() { + return org.xtreemfs.pbrpc.generatedinterfaces.MRC.internal_static_xtreemfs_pbrpc_StatVFS_fieldAccessorTable + .ensureFieldAccessorsInitialized( + org.xtreemfs.pbrpc.generatedinterfaces.MRC.StatVFS.class, org.xtreemfs.pbrpc.generatedinterfaces.MRC.StatVFS.Builder.class); + } + // Construct using org.xtreemfs.pbrpc.generatedinterfaces.MRC.StatVFS.newBuilder() - private Builder() {} - - private static Builder create() { - Builder builder = new Builder(); - builder.result = new org.xtreemfs.pbrpc.generatedinterfaces.MRC.StatVFS(); - return builder; + private Builder() { + maybeForceBuilderInitialization(); } - - protected org.xtreemfs.pbrpc.generatedinterfaces.MRC.StatVFS internalGetResult() { - return result; + + private Builder( + com.google.protobuf.GeneratedMessage.BuilderParent parent) { + super(parent); + maybeForceBuilderInitialization(); + } + private void maybeForceBuilderInitialization() { + if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) { + getDefaultStripingPolicyFieldBuilder(); + } + } + private static Builder create() { + return new Builder(); } - + public Builder clear() { - if (result == null) { - throw new IllegalStateException( - "Cannot call clear() after build()."); + super.clear(); + bsize_ = 0; + bitField0_ = (bitField0_ & ~0x00000001); + bavail_ = 0L; + bitField0_ = (bitField0_ & ~0x00000002); + bfree_ = 0L; + bitField0_ = (bitField0_ & ~0x00000004); + blocks_ = 0L; + bitField0_ = (bitField0_ & ~0x00000008); + fsid_ = ""; + bitField0_ = (bitField0_ & ~0x00000010); + namemax_ = 0; + bitField0_ = (bitField0_ & ~0x00000020); + accessControlPolicy_ = org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.AccessControlPolicyType.ACCESS_CONTROL_POLICY_NULL; + bitField0_ = (bitField0_ & ~0x00000040); + if (defaultStripingPolicyBuilder_ == null) { + defaultStripingPolicy_ = org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.StripingPolicy.getDefaultInstance(); + } else { + defaultStripingPolicyBuilder_.clear(); } - result = new org.xtreemfs.pbrpc.generatedinterfaces.MRC.StatVFS(); + bitField0_ = (bitField0_ & ~0x00000080); + etag_ = 0L; + bitField0_ = (bitField0_ & ~0x00000100); + mode_ = 0; + bitField0_ = (bitField0_ & ~0x00000200); + name_ = ""; + bitField0_ = (bitField0_ & ~0x00000400); + ownerGroupId_ = ""; + bitField0_ = (bitField0_ & ~0x00000800); + ownerUserId_ = ""; + bitField0_ = (bitField0_ & ~0x00001000); return this; } - + public Builder clone() { - return create().mergeFrom(result); + return create().mergeFrom(buildPartial()); } - + public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() { - return org.xtreemfs.pbrpc.generatedinterfaces.MRC.StatVFS.getDescriptor(); + return org.xtreemfs.pbrpc.generatedinterfaces.MRC.internal_static_xtreemfs_pbrpc_StatVFS_descriptor; } - + public org.xtreemfs.pbrpc.generatedinterfaces.MRC.StatVFS getDefaultInstanceForType() { return org.xtreemfs.pbrpc.generatedinterfaces.MRC.StatVFS.getDefaultInstance(); } - - public boolean isInitialized() { - return result.isInitialized(); - } + public org.xtreemfs.pbrpc.generatedinterfaces.MRC.StatVFS build() { - if (result != null && !isInitialized()) { + org.xtreemfs.pbrpc.generatedinterfaces.MRC.StatVFS result = buildPartial(); + if (!result.isInitialized()) { throw newUninitializedMessageException(result); } - return buildPartial(); - } - - private org.xtreemfs.pbrpc.generatedinterfaces.MRC.StatVFS buildParsed() - throws com.google.protobuf.InvalidProtocolBufferException { - if (!isInitialized()) { - throw newUninitializedMessageException( - result).asInvalidProtocolBufferException(); - } - return buildPartial(); + return result; } - + public org.xtreemfs.pbrpc.generatedinterfaces.MRC.StatVFS buildPartial() { - if (result == null) { - throw new IllegalStateException( - "build() has already been called on this Builder."); + org.xtreemfs.pbrpc.generatedinterfaces.MRC.StatVFS result = new org.xtreemfs.pbrpc.generatedinterfaces.MRC.StatVFS(this); + int from_bitField0_ = bitField0_; + int to_bitField0_ = 0; + if (((from_bitField0_ & 0x00000001) == 0x00000001)) { + to_bitField0_ |= 0x00000001; + } + result.bsize_ = bsize_; + if (((from_bitField0_ & 0x00000002) == 0x00000002)) { + to_bitField0_ |= 0x00000002; + } + result.bavail_ = bavail_; + if (((from_bitField0_ & 0x00000004) == 0x00000004)) { + to_bitField0_ |= 0x00000004; + } + result.bfree_ = bfree_; + if (((from_bitField0_ & 0x00000008) == 0x00000008)) { + to_bitField0_ |= 0x00000008; + } + result.blocks_ = blocks_; + if (((from_bitField0_ & 0x00000010) == 0x00000010)) { + to_bitField0_ |= 0x00000010; + } + result.fsid_ = fsid_; + if (((from_bitField0_ & 0x00000020) == 0x00000020)) { + to_bitField0_ |= 0x00000020; + } + result.namemax_ = namemax_; + if (((from_bitField0_ & 0x00000040) == 0x00000040)) { + to_bitField0_ |= 0x00000040; + } + result.accessControlPolicy_ = accessControlPolicy_; + if (((from_bitField0_ & 0x00000080) == 0x00000080)) { + to_bitField0_ |= 0x00000080; + } + if (defaultStripingPolicyBuilder_ == null) { + result.defaultStripingPolicy_ = defaultStripingPolicy_; + } else { + result.defaultStripingPolicy_ = defaultStripingPolicyBuilder_.build(); + } + if (((from_bitField0_ & 0x00000100) == 0x00000100)) { + to_bitField0_ |= 0x00000100; + } + result.etag_ = etag_; + if (((from_bitField0_ & 0x00000200) == 0x00000200)) { + to_bitField0_ |= 0x00000200; } - org.xtreemfs.pbrpc.generatedinterfaces.MRC.StatVFS returnMe = result; - result = null; - return returnMe; + result.mode_ = mode_; + if (((from_bitField0_ & 0x00000400) == 0x00000400)) { + to_bitField0_ |= 0x00000400; + } + result.name_ = name_; + if (((from_bitField0_ & 0x00000800) == 0x00000800)) { + to_bitField0_ |= 0x00000800; + } + result.ownerGroupId_ = ownerGroupId_; + if (((from_bitField0_ & 0x00001000) == 0x00001000)) { + to_bitField0_ |= 0x00001000; + } + result.ownerUserId_ = ownerUserId_; + result.bitField0_ = to_bitField0_; + onBuilt(); + return result; } - + public Builder mergeFrom(com.google.protobuf.Message other) { if (other instanceof org.xtreemfs.pbrpc.generatedinterfaces.MRC.StatVFS) { return mergeFrom((org.xtreemfs.pbrpc.generatedinterfaces.MRC.StatVFS)other); @@ -3488,7 +9154,7 @@ public final class MRC { return this; } } - + public Builder mergeFrom(org.xtreemfs.pbrpc.generatedinterfaces.MRC.StatVFS other) { if (other == org.xtreemfs.pbrpc.generatedinterfaces.MRC.StatVFS.getDefaultInstance()) return this; if (other.hasBsize()) { @@ -3504,7 +9170,9 @@ public final class MRC { setBlocks(other.getBlocks()); } if (other.hasFsid()) { - setFsid(other.getFsid()); + bitField0_ |= 0x00000010; + fsid_ = other.fsid_; + onChanged(); } if (other.hasNamemax()) { setNamemax(other.getNamemax()); @@ -3522,628 +9190,1597 @@ public final class MRC { setMode(other.getMode()); } if (other.hasName()) { - setName(other.getName()); + bitField0_ |= 0x00000400; + name_ = other.name_; + onChanged(); } if (other.hasOwnerGroupId()) { - setOwnerGroupId(other.getOwnerGroupId()); + bitField0_ |= 0x00000800; + ownerGroupId_ = other.ownerGroupId_; + onChanged(); } if (other.hasOwnerUserId()) { - setOwnerUserId(other.getOwnerUserId()); + bitField0_ |= 0x00001000; + ownerUserId_ = other.ownerUserId_; + onChanged(); } this.mergeUnknownFields(other.getUnknownFields()); return this; } - - public Builder mergeFrom( - com.google.protobuf.CodedInputStream input, - com.google.protobuf.ExtensionRegistryLite extensionRegistry) - throws java.io.IOException { - com.google.protobuf.UnknownFieldSet.Builder unknownFields = - com.google.protobuf.UnknownFieldSet.newBuilder( - this.getUnknownFields()); - while (true) { - int tag = input.readTag(); - switch (tag) { - case 0: - this.setUnknownFields(unknownFields.build()); - return this; - default: { - if (!parseUnknownField(input, unknownFields, - extensionRegistry, tag)) { - this.setUnknownFields(unknownFields.build()); - return this; - } - break; - } - case 13: { - setBsize(input.readFixed32()); - break; - } - case 17: { - setBavail(input.readFixed64()); - break; - } - case 25: { - setBlocks(input.readFixed64()); - break; - } - case 34: { - setFsid(input.readString()); - break; - } - case 45: { - setNamemax(input.readFixed32()); - break; - } - case 48: { - int rawValue = input.readEnum(); - org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.AccessControlPolicyType value = org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.AccessControlPolicyType.valueOf(rawValue); - if (value == null) { - unknownFields.mergeVarintField(6, rawValue); - } else { - setAccessControlPolicy(value); - } - break; - } - case 58: { - org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.StripingPolicy.Builder subBuilder = org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.StripingPolicy.newBuilder(); - if (hasDefaultStripingPolicy()) { - subBuilder.mergeFrom(getDefaultStripingPolicy()); - } - input.readMessage(subBuilder, extensionRegistry); - setDefaultStripingPolicy(subBuilder.buildPartial()); - break; - } - case 65: { - setEtag(input.readFixed64()); - break; - } - case 77: { - setMode(input.readFixed32()); - break; - } - case 82: { - setName(input.readString()); - break; - } - case 90: { - setOwnerGroupId(input.readString()); - break; - } - case 98: { - setOwnerUserId(input.readString()); - break; - } - case 105: { - setBfree(input.readFixed64()); - break; - } + + public final boolean isInitialized() { + if (!hasBsize()) { + + return false; + } + if (!hasBavail()) { + + return false; + } + if (!hasBlocks()) { + + return false; + } + if (!hasFsid()) { + + return false; + } + if (!hasNamemax()) { + + return false; + } + if (!hasAccessControlPolicy()) { + + return false; + } + if (!hasDefaultStripingPolicy()) { + + return false; + } + if (!hasEtag()) { + + return false; + } + if (!hasMode()) { + + return false; + } + if (!hasName()) { + + return false; + } + if (!hasOwnerGroupId()) { + + return false; + } + if (!hasOwnerUserId()) { + + return false; + } + if (!getDefaultStripingPolicy().isInitialized()) { + + return false; + } + return true; + } + + public Builder mergeFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + org.xtreemfs.pbrpc.generatedinterfaces.MRC.StatVFS parsedMessage = null; + try { + parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + parsedMessage = (org.xtreemfs.pbrpc.generatedinterfaces.MRC.StatVFS) e.getUnfinishedMessage(); + throw e; + } finally { + if (parsedMessage != null) { + mergeFrom(parsedMessage); } } + return this; } - - + private int bitField0_; + // required fixed32 bsize = 1; + private int bsize_ ; + /** + * required fixed32 bsize = 1; + * + *
+       * size of a block in bytes
+       * 
+ */ public boolean hasBsize() { - return result.hasBsize(); - } + return ((bitField0_ & 0x00000001) == 0x00000001); + } + /** + * required fixed32 bsize = 1; + * + *
+       * size of a block in bytes
+       * 
+ */ public int getBsize() { - return result.getBsize(); - } + return bsize_; + } + /** + * required fixed32 bsize = 1; + * + *
+       * size of a block in bytes
+       * 
+ */ public Builder setBsize(int value) { - result.hasBsize = true; - result.bsize_ = value; - return this; - } + bitField0_ |= 0x00000001; + bsize_ = value; + onChanged(); + return this; + } + /** + * required fixed32 bsize = 1; + * + *
+       * size of a block in bytes
+       * 
+ */ public Builder clearBsize() { - result.hasBsize = false; - result.bsize_ = 0; + bitField0_ = (bitField0_ & ~0x00000001); + bsize_ = 0; + onChanged(); return this; } - + // required fixed64 bavail = 2; + private long bavail_ ; + /** + * required fixed64 bavail = 2; + * + *
+       * number of available blocks in the file system for non-privileged users      
+       * 
+ */ public boolean hasBavail() { - return result.hasBavail(); - } + return ((bitField0_ & 0x00000002) == 0x00000002); + } + /** + * required fixed64 bavail = 2; + * + *
+       * number of available blocks in the file system for non-privileged users      
+       * 
+ */ public long getBavail() { - return result.getBavail(); - } + return bavail_; + } + /** + * required fixed64 bavail = 2; + * + *
+       * number of available blocks in the file system for non-privileged users      
+       * 
+ */ public Builder setBavail(long value) { - result.hasBavail = true; - result.bavail_ = value; - return this; - } + bitField0_ |= 0x00000002; + bavail_ = value; + onChanged(); + return this; + } + /** + * required fixed64 bavail = 2; + * + *
+       * number of available blocks in the file system for non-privileged users      
+       * 
+ */ public Builder clearBavail() { - result.hasBavail = false; - result.bavail_ = 0L; + bitField0_ = (bitField0_ & ~0x00000002); + bavail_ = 0L; + onChanged(); return this; } - + // optional fixed64 bfree = 13; + private long bfree_ ; + /** + * optional fixed64 bfree = 13; + * + *
+       * number of free blocks in the file system
+       * 
+ */ public boolean hasBfree() { - return result.hasBfree(); - } + return ((bitField0_ & 0x00000004) == 0x00000004); + } + /** + * optional fixed64 bfree = 13; + * + *
+       * number of free blocks in the file system
+       * 
+ */ public long getBfree() { - return result.getBfree(); - } + return bfree_; + } + /** + * optional fixed64 bfree = 13; + * + *
+       * number of free blocks in the file system
+       * 
+ */ public Builder setBfree(long value) { - result.hasBfree = true; - result.bfree_ = value; - return this; - } + bitField0_ |= 0x00000004; + bfree_ = value; + onChanged(); + return this; + } + /** + * optional fixed64 bfree = 13; + * + *
+       * number of free blocks in the file system
+       * 
+ */ public Builder clearBfree() { - result.hasBfree = false; - result.bfree_ = 0L; + bitField0_ = (bitField0_ & ~0x00000004); + bfree_ = 0L; + onChanged(); return this; } - + // required fixed64 blocks = 3; + private long blocks_ ; + /** + * required fixed64 blocks = 3; + * + *
+       * total number of blocks in file system        
+       * 
+ */ public boolean hasBlocks() { - return result.hasBlocks(); - } + return ((bitField0_ & 0x00000008) == 0x00000008); + } + /** + * required fixed64 blocks = 3; + * + *
+       * total number of blocks in file system        
+       * 
+ */ public long getBlocks() { - return result.getBlocks(); - } + return blocks_; + } + /** + * required fixed64 blocks = 3; + * + *
+       * total number of blocks in file system        
+       * 
+ */ public Builder setBlocks(long value) { - result.hasBlocks = true; - result.blocks_ = value; - return this; - } + bitField0_ |= 0x00000008; + blocks_ = value; + onChanged(); + return this; + } + /** + * required fixed64 blocks = 3; + * + *
+       * total number of blocks in file system        
+       * 
+ */ public Builder clearBlocks() { - result.hasBlocks = false; - result.blocks_ = 0L; + bitField0_ = (bitField0_ & ~0x00000008); + blocks_ = 0L; + onChanged(); return this; } - + // required string fsid = 4; + private java.lang.Object fsid_ = ""; + /** + * required string fsid = 4; + * + *
+       * volume id
+       * 
+ */ public boolean hasFsid() { - return result.hasFsid(); - } + return ((bitField0_ & 0x00000010) == 0x00000010); + } + /** + * required string fsid = 4; + * + *
+       * volume id
+       * 
+ */ public java.lang.String getFsid() { - return result.getFsid(); - } - public Builder setFsid(java.lang.String value) { + java.lang.Object ref = fsid_; + if (!(ref instanceof java.lang.String)) { + java.lang.String s = ((com.google.protobuf.ByteString) ref) + .toStringUtf8(); + fsid_ = s; + return s; + } else { + return (java.lang.String) ref; + } + } + /** + * required string fsid = 4; + * + *
+       * volume id
+       * 
+ */ + public com.google.protobuf.ByteString + getFsidBytes() { + java.lang.Object ref = fsid_; + if (ref instanceof String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + fsid_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + /** + * required string fsid = 4; + * + *
+       * volume id
+       * 
+ */ + public Builder setFsid( + java.lang.String value) { if (value == null) { throw new NullPointerException(); } - result.hasFsid = true; - result.fsid_ = value; - return this; - } + bitField0_ |= 0x00000010; + fsid_ = value; + onChanged(); + return this; + } + /** + * required string fsid = 4; + * + *
+       * volume id
+       * 
+ */ public Builder clearFsid() { - result.hasFsid = false; - result.fsid_ = getDefaultInstance().getFsid(); + bitField0_ = (bitField0_ & ~0x00000010); + fsid_ = getDefaultInstance().getFsid(); + onChanged(); + return this; + } + /** + * required string fsid = 4; + * + *
+       * volume id
+       * 
+ */ + public Builder setFsidBytes( + com.google.protobuf.ByteString value) { + if (value == null) { + throw new NullPointerException(); + } + bitField0_ |= 0x00000010; + fsid_ = value; + onChanged(); return this; } - + // required fixed32 namemax = 5; + private int namemax_ ; + /** + * required fixed32 namemax = 5; + * + *
+       * maximum filename length
+       * 
+ */ public boolean hasNamemax() { - return result.hasNamemax(); - } + return ((bitField0_ & 0x00000020) == 0x00000020); + } + /** + * required fixed32 namemax = 5; + * + *
+       * maximum filename length
+       * 
+ */ public int getNamemax() { - return result.getNamemax(); - } + return namemax_; + } + /** + * required fixed32 namemax = 5; + * + *
+       * maximum filename length
+       * 
+ */ public Builder setNamemax(int value) { - result.hasNamemax = true; - result.namemax_ = value; - return this; - } + bitField0_ |= 0x00000020; + namemax_ = value; + onChanged(); + return this; + } + /** + * required fixed32 namemax = 5; + * + *
+       * maximum filename length
+       * 
+ */ public Builder clearNamemax() { - result.hasNamemax = false; - result.namemax_ = 0; + bitField0_ = (bitField0_ & ~0x00000020); + namemax_ = 0; + onChanged(); return this; } - + // required .xtreemfs.pbrpc.AccessControlPolicyType access_control_policy = 6; + private org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.AccessControlPolicyType accessControlPolicy_ = org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.AccessControlPolicyType.ACCESS_CONTROL_POLICY_NULL; + /** + * required .xtreemfs.pbrpc.AccessControlPolicyType access_control_policy = 6; + * + *
+       * access control policy of the volume
+       * 
+ */ public boolean hasAccessControlPolicy() { - return result.hasAccessControlPolicy(); - } + return ((bitField0_ & 0x00000040) == 0x00000040); + } + /** + * required .xtreemfs.pbrpc.AccessControlPolicyType access_control_policy = 6; + * + *
+       * access control policy of the volume
+       * 
+ */ public org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.AccessControlPolicyType getAccessControlPolicy() { - return result.getAccessControlPolicy(); - } + return accessControlPolicy_; + } + /** + * required .xtreemfs.pbrpc.AccessControlPolicyType access_control_policy = 6; + * + *
+       * access control policy of the volume
+       * 
+ */ public Builder setAccessControlPolicy(org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.AccessControlPolicyType value) { if (value == null) { throw new NullPointerException(); } - result.hasAccessControlPolicy = true; - result.accessControlPolicy_ = value; + bitField0_ |= 0x00000040; + accessControlPolicy_ = value; + onChanged(); return this; } + /** + * required .xtreemfs.pbrpc.AccessControlPolicyType access_control_policy = 6; + * + *
+       * access control policy of the volume
+       * 
+ */ public Builder clearAccessControlPolicy() { - result.hasAccessControlPolicy = false; - result.accessControlPolicy_ = org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.AccessControlPolicyType.ACCESS_CONTROL_POLICY_NULL; + bitField0_ = (bitField0_ & ~0x00000040); + accessControlPolicy_ = org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.AccessControlPolicyType.ACCESS_CONTROL_POLICY_NULL; + onChanged(); return this; } - + // required .xtreemfs.pbrpc.StripingPolicy default_striping_policy = 7; + private org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.StripingPolicy defaultStripingPolicy_ = org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.StripingPolicy.getDefaultInstance(); + private com.google.protobuf.SingleFieldBuilder< + org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.StripingPolicy, org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.StripingPolicy.Builder, org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.StripingPolicyOrBuilder> defaultStripingPolicyBuilder_; + /** + * required .xtreemfs.pbrpc.StripingPolicy default_striping_policy = 7; + * + *
+       * default striping policy of the volume
+       * 
+ */ public boolean hasDefaultStripingPolicy() { - return result.hasDefaultStripingPolicy(); - } + return ((bitField0_ & 0x00000080) == 0x00000080); + } + /** + * required .xtreemfs.pbrpc.StripingPolicy default_striping_policy = 7; + * + *
+       * default striping policy of the volume
+       * 
+ */ public org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.StripingPolicy getDefaultStripingPolicy() { - return result.getDefaultStripingPolicy(); + if (defaultStripingPolicyBuilder_ == null) { + return defaultStripingPolicy_; + } else { + return defaultStripingPolicyBuilder_.getMessage(); + } } + /** + * required .xtreemfs.pbrpc.StripingPolicy default_striping_policy = 7; + * + *
+       * default striping policy of the volume
+       * 
+ */ public Builder setDefaultStripingPolicy(org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.StripingPolicy value) { - if (value == null) { - throw new NullPointerException(); + if (defaultStripingPolicyBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + defaultStripingPolicy_ = value; + onChanged(); + } else { + defaultStripingPolicyBuilder_.setMessage(value); + } + bitField0_ |= 0x00000080; + return this; + } + /** + * required .xtreemfs.pbrpc.StripingPolicy default_striping_policy = 7; + * + *
+       * default striping policy of the volume
+       * 
+ */ + public Builder setDefaultStripingPolicy( + org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.StripingPolicy.Builder builderForValue) { + if (defaultStripingPolicyBuilder_ == null) { + defaultStripingPolicy_ = builderForValue.build(); + onChanged(); + } else { + defaultStripingPolicyBuilder_.setMessage(builderForValue.build()); } - result.hasDefaultStripingPolicy = true; - result.defaultStripingPolicy_ = value; - return this; - } - public Builder setDefaultStripingPolicy(org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.StripingPolicy.Builder builderForValue) { - result.hasDefaultStripingPolicy = true; - result.defaultStripingPolicy_ = builderForValue.build(); + bitField0_ |= 0x00000080; return this; } + /** + * required .xtreemfs.pbrpc.StripingPolicy default_striping_policy = 7; + * + *
+       * default striping policy of the volume
+       * 
+ */ public Builder mergeDefaultStripingPolicy(org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.StripingPolicy value) { - if (result.hasDefaultStripingPolicy() && - result.defaultStripingPolicy_ != org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.StripingPolicy.getDefaultInstance()) { - result.defaultStripingPolicy_ = - org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.StripingPolicy.newBuilder(result.defaultStripingPolicy_).mergeFrom(value).buildPartial(); + if (defaultStripingPolicyBuilder_ == null) { + if (((bitField0_ & 0x00000080) == 0x00000080) && + defaultStripingPolicy_ != org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.StripingPolicy.getDefaultInstance()) { + defaultStripingPolicy_ = + org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.StripingPolicy.newBuilder(defaultStripingPolicy_).mergeFrom(value).buildPartial(); + } else { + defaultStripingPolicy_ = value; + } + onChanged(); } else { - result.defaultStripingPolicy_ = value; + defaultStripingPolicyBuilder_.mergeFrom(value); } - result.hasDefaultStripingPolicy = true; + bitField0_ |= 0x00000080; return this; } + /** + * required .xtreemfs.pbrpc.StripingPolicy default_striping_policy = 7; + * + *
+       * default striping policy of the volume
+       * 
+ */ public Builder clearDefaultStripingPolicy() { - result.hasDefaultStripingPolicy = false; - result.defaultStripingPolicy_ = org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.StripingPolicy.getDefaultInstance(); - return this; + if (defaultStripingPolicyBuilder_ == null) { + defaultStripingPolicy_ = org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.StripingPolicy.getDefaultInstance(); + onChanged(); + } else { + defaultStripingPolicyBuilder_.clear(); + } + bitField0_ = (bitField0_ & ~0x00000080); + return this; + } + /** + * required .xtreemfs.pbrpc.StripingPolicy default_striping_policy = 7; + * + *
+       * default striping policy of the volume
+       * 
+ */ + public org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.StripingPolicy.Builder getDefaultStripingPolicyBuilder() { + bitField0_ |= 0x00000080; + onChanged(); + return getDefaultStripingPolicyFieldBuilder().getBuilder(); + } + /** + * required .xtreemfs.pbrpc.StripingPolicy default_striping_policy = 7; + * + *
+       * default striping policy of the volume
+       * 
+ */ + public org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.StripingPolicyOrBuilder getDefaultStripingPolicyOrBuilder() { + if (defaultStripingPolicyBuilder_ != null) { + return defaultStripingPolicyBuilder_.getMessageOrBuilder(); + } else { + return defaultStripingPolicy_; + } + } + /** + * required .xtreemfs.pbrpc.StripingPolicy default_striping_policy = 7; + * + *
+       * default striping policy of the volume
+       * 
+ */ + private com.google.protobuf.SingleFieldBuilder< + org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.StripingPolicy, org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.StripingPolicy.Builder, org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.StripingPolicyOrBuilder> + getDefaultStripingPolicyFieldBuilder() { + if (defaultStripingPolicyBuilder_ == null) { + defaultStripingPolicyBuilder_ = new com.google.protobuf.SingleFieldBuilder< + org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.StripingPolicy, org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.StripingPolicy.Builder, org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.StripingPolicyOrBuilder>( + defaultStripingPolicy_, + getParentForChildren(), + isClean()); + defaultStripingPolicy_ = null; + } + return defaultStripingPolicyBuilder_; } - + // required fixed64 etag = 8; + private long etag_ ; + /** + * required fixed64 etag = 8; + * + *
+       * identification tag for the statVFS object
+       * 
+ */ public boolean hasEtag() { - return result.hasEtag(); - } + return ((bitField0_ & 0x00000100) == 0x00000100); + } + /** + * required fixed64 etag = 8; + * + *
+       * identification tag for the statVFS object
+       * 
+ */ public long getEtag() { - return result.getEtag(); - } + return etag_; + } + /** + * required fixed64 etag = 8; + * + *
+       * identification tag for the statVFS object
+       * 
+ */ public Builder setEtag(long value) { - result.hasEtag = true; - result.etag_ = value; - return this; - } + bitField0_ |= 0x00000100; + etag_ = value; + onChanged(); + return this; + } + /** + * required fixed64 etag = 8; + * + *
+       * identification tag for the statVFS object
+       * 
+ */ public Builder clearEtag() { - result.hasEtag = false; - result.etag_ = 0L; + bitField0_ = (bitField0_ & ~0x00000100); + etag_ = 0L; + onChanged(); return this; } - + // required fixed32 mode = 9; + private int mode_ ; + /** + * required fixed32 mode = 9; + * + *
+       * access mode of the volume's root directory
+       * 
+ */ public boolean hasMode() { - return result.hasMode(); - } + return ((bitField0_ & 0x00000200) == 0x00000200); + } + /** + * required fixed32 mode = 9; + * + *
+       * access mode of the volume's root directory
+       * 
+ */ public int getMode() { - return result.getMode(); - } + return mode_; + } + /** + * required fixed32 mode = 9; + * + *
+       * access mode of the volume's root directory
+       * 
+ */ public Builder setMode(int value) { - result.hasMode = true; - result.mode_ = value; - return this; - } + bitField0_ |= 0x00000200; + mode_ = value; + onChanged(); + return this; + } + /** + * required fixed32 mode = 9; + * + *
+       * access mode of the volume's root directory
+       * 
+ */ public Builder clearMode() { - result.hasMode = false; - result.mode_ = 0; + bitField0_ = (bitField0_ & ~0x00000200); + mode_ = 0; + onChanged(); return this; } - + // required string name = 10; + private java.lang.Object name_ = ""; + /** + * required string name = 10; + * + *
+       * volume name
+       * 
+ */ public boolean hasName() { - return result.hasName(); - } + return ((bitField0_ & 0x00000400) == 0x00000400); + } + /** + * required string name = 10; + * + *
+       * volume name
+       * 
+ */ public java.lang.String getName() { - return result.getName(); - } - public Builder setName(java.lang.String value) { + java.lang.Object ref = name_; + if (!(ref instanceof java.lang.String)) { + java.lang.String s = ((com.google.protobuf.ByteString) ref) + .toStringUtf8(); + name_ = s; + return s; + } else { + return (java.lang.String) ref; + } + } + /** + * required string name = 10; + * + *
+       * volume name
+       * 
+ */ + public com.google.protobuf.ByteString + getNameBytes() { + java.lang.Object ref = name_; + if (ref instanceof String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + name_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + /** + * required string name = 10; + * + *
+       * volume name
+       * 
+ */ + public Builder setName( + java.lang.String value) { if (value == null) { throw new NullPointerException(); } - result.hasName = true; - result.name_ = value; - return this; - } + bitField0_ |= 0x00000400; + name_ = value; + onChanged(); + return this; + } + /** + * required string name = 10; + * + *
+       * volume name
+       * 
+ */ public Builder clearName() { - result.hasName = false; - result.name_ = getDefaultInstance().getName(); + bitField0_ = (bitField0_ & ~0x00000400); + name_ = getDefaultInstance().getName(); + onChanged(); + return this; + } + /** + * required string name = 10; + * + *
+       * volume name
+       * 
+ */ + public Builder setNameBytes( + com.google.protobuf.ByteString value) { + if (value == null) { + throw new NullPointerException(); + } + bitField0_ |= 0x00000400; + name_ = value; + onChanged(); return this; } - + // required string owner_group_id = 11; + private java.lang.Object ownerGroupId_ = ""; + /** + * required string owner_group_id = 11; + * + *
+       * owning group ID of the volume (i.e. volume's root directory)
+       * 
+ */ public boolean hasOwnerGroupId() { - return result.hasOwnerGroupId(); - } + return ((bitField0_ & 0x00000800) == 0x00000800); + } + /** + * required string owner_group_id = 11; + * + *
+       * owning group ID of the volume (i.e. volume's root directory)
+       * 
+ */ public java.lang.String getOwnerGroupId() { - return result.getOwnerGroupId(); - } - public Builder setOwnerGroupId(java.lang.String value) { + java.lang.Object ref = ownerGroupId_; + if (!(ref instanceof java.lang.String)) { + java.lang.String s = ((com.google.protobuf.ByteString) ref) + .toStringUtf8(); + ownerGroupId_ = s; + return s; + } else { + return (java.lang.String) ref; + } + } + /** + * required string owner_group_id = 11; + * + *
+       * owning group ID of the volume (i.e. volume's root directory)
+       * 
+ */ + public com.google.protobuf.ByteString + getOwnerGroupIdBytes() { + java.lang.Object ref = ownerGroupId_; + if (ref instanceof String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + ownerGroupId_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + /** + * required string owner_group_id = 11; + * + *
+       * owning group ID of the volume (i.e. volume's root directory)
+       * 
+ */ + public Builder setOwnerGroupId( + java.lang.String value) { if (value == null) { throw new NullPointerException(); } - result.hasOwnerGroupId = true; - result.ownerGroupId_ = value; - return this; - } + bitField0_ |= 0x00000800; + ownerGroupId_ = value; + onChanged(); + return this; + } + /** + * required string owner_group_id = 11; + * + *
+       * owning group ID of the volume (i.e. volume's root directory)
+       * 
+ */ public Builder clearOwnerGroupId() { - result.hasOwnerGroupId = false; - result.ownerGroupId_ = getDefaultInstance().getOwnerGroupId(); + bitField0_ = (bitField0_ & ~0x00000800); + ownerGroupId_ = getDefaultInstance().getOwnerGroupId(); + onChanged(); + return this; + } + /** + * required string owner_group_id = 11; + * + *
+       * owning group ID of the volume (i.e. volume's root directory)
+       * 
+ */ + public Builder setOwnerGroupIdBytes( + com.google.protobuf.ByteString value) { + if (value == null) { + throw new NullPointerException(); + } + bitField0_ |= 0x00000800; + ownerGroupId_ = value; + onChanged(); return this; } - + // required string owner_user_id = 12; + private java.lang.Object ownerUserId_ = ""; + /** + * required string owner_user_id = 12; + * + *
+       * owning user ID of the volume (i.e. volume's root directory)
+       * 
+ */ public boolean hasOwnerUserId() { - return result.hasOwnerUserId(); - } + return ((bitField0_ & 0x00001000) == 0x00001000); + } + /** + * required string owner_user_id = 12; + * + *
+       * owning user ID of the volume (i.e. volume's root directory)
+       * 
+ */ public java.lang.String getOwnerUserId() { - return result.getOwnerUserId(); - } - public Builder setOwnerUserId(java.lang.String value) { + java.lang.Object ref = ownerUserId_; + if (!(ref instanceof java.lang.String)) { + java.lang.String s = ((com.google.protobuf.ByteString) ref) + .toStringUtf8(); + ownerUserId_ = s; + return s; + } else { + return (java.lang.String) ref; + } + } + /** + * required string owner_user_id = 12; + * + *
+       * owning user ID of the volume (i.e. volume's root directory)
+       * 
+ */ + public com.google.protobuf.ByteString + getOwnerUserIdBytes() { + java.lang.Object ref = ownerUserId_; + if (ref instanceof String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + ownerUserId_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + /** + * required string owner_user_id = 12; + * + *
+       * owning user ID of the volume (i.e. volume's root directory)
+       * 
+ */ + public Builder setOwnerUserId( + java.lang.String value) { if (value == null) { throw new NullPointerException(); } - result.hasOwnerUserId = true; - result.ownerUserId_ = value; - return this; - } + bitField0_ |= 0x00001000; + ownerUserId_ = value; + onChanged(); + return this; + } + /** + * required string owner_user_id = 12; + * + *
+       * owning user ID of the volume (i.e. volume's root directory)
+       * 
+ */ public Builder clearOwnerUserId() { - result.hasOwnerUserId = false; - result.ownerUserId_ = getDefaultInstance().getOwnerUserId(); + bitField0_ = (bitField0_ & ~0x00001000); + ownerUserId_ = getDefaultInstance().getOwnerUserId(); + onChanged(); + return this; + } + /** + * required string owner_user_id = 12; + * + *
+       * owning user ID of the volume (i.e. volume's root directory)
+       * 
+ */ + public Builder setOwnerUserIdBytes( + com.google.protobuf.ByteString value) { + if (value == null) { + throw new NullPointerException(); + } + bitField0_ |= 0x00001000; + ownerUserId_ = value; + onChanged(); return this; } - + // @@protoc_insertion_point(builder_scope:xtreemfs.pbrpc.StatVFS) } - + static { defaultInstance = new StatVFS(true); - org.xtreemfs.pbrpc.generatedinterfaces.MRC.internalForceInit(); defaultInstance.initFields(); } - + // @@protoc_insertion_point(class_scope:xtreemfs.pbrpc.StatVFS) } - + + public interface fsetattrRequestOrBuilder + extends com.google.protobuf.MessageOrBuilder { + + // required .xtreemfs.pbrpc.Stat stbuf = 1; + /** + * required .xtreemfs.pbrpc.Stat stbuf = 1; + * + *
+     * a buffer containing the attributes to update
+     * 
+ */ + boolean hasStbuf(); + /** + * required .xtreemfs.pbrpc.Stat stbuf = 1; + * + *
+     * a buffer containing the attributes to update
+     * 
+ */ + org.xtreemfs.pbrpc.generatedinterfaces.MRC.Stat getStbuf(); + /** + * required .xtreemfs.pbrpc.Stat stbuf = 1; + * + *
+     * a buffer containing the attributes to update
+     * 
+ */ + org.xtreemfs.pbrpc.generatedinterfaces.MRC.StatOrBuilder getStbufOrBuilder(); + + // required fixed32 to_set = 2; + /** + * required fixed32 to_set = 2; + * + *
+     * a bitmap of Setattrs indicating which attributes to update
+     * 
+ */ + boolean hasToSet(); + /** + * required fixed32 to_set = 2; + * + *
+     * a bitmap of Setattrs indicating which attributes to update
+     * 
+ */ + int getToSet(); + + // required .xtreemfs.pbrpc.XCap cap = 3; + /** + * required .xtreemfs.pbrpc.XCap cap = 3; + * + *
+     * the capability returned by the MRC when the file was opened
+     * 
+ */ + boolean hasCap(); + /** + * required .xtreemfs.pbrpc.XCap cap = 3; + * + *
+     * the capability returned by the MRC when the file was opened
+     * 
+ */ + org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.XCap getCap(); + /** + * required .xtreemfs.pbrpc.XCap cap = 3; + * + *
+     * the capability returned by the MRC when the file was opened
+     * 
+ */ + org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.XCapOrBuilder getCapOrBuilder(); + } + /** + * Protobuf type {@code xtreemfs.pbrpc.fsetattrRequest} + * + *
+   * sets file attriubtes of an open file
+   * 
+ */ public static final class fsetattrRequest extends - com.google.protobuf.GeneratedMessage { + com.google.protobuf.GeneratedMessage + implements fsetattrRequestOrBuilder { // Use fsetattrRequest.newBuilder() to construct. - private fsetattrRequest() { - initFields(); + private fsetattrRequest(com.google.protobuf.GeneratedMessage.Builder builder) { + super(builder); + this.unknownFields = builder.getUnknownFields(); } - private fsetattrRequest(boolean noInit) {} - + private fsetattrRequest(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); } + private static final fsetattrRequest defaultInstance; public static fsetattrRequest getDefaultInstance() { return defaultInstance; } - + public fsetattrRequest getDefaultInstanceForType() { return defaultInstance; } - + + private final com.google.protobuf.UnknownFieldSet unknownFields; + @java.lang.Override + public final com.google.protobuf.UnknownFieldSet + getUnknownFields() { + return this.unknownFields; + } + private fsetattrRequest( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + initFields(); + int mutable_bitField0_ = 0; + com.google.protobuf.UnknownFieldSet.Builder unknownFields = + com.google.protobuf.UnknownFieldSet.newBuilder(); + try { + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch (tag) { + case 0: + done = true; + break; + default: { + if (!parseUnknownField(input, unknownFields, + extensionRegistry, tag)) { + done = true; + } + break; + } + case 10: { + org.xtreemfs.pbrpc.generatedinterfaces.MRC.Stat.Builder subBuilder = null; + if (((bitField0_ & 0x00000001) == 0x00000001)) { + subBuilder = stbuf_.toBuilder(); + } + stbuf_ = input.readMessage(org.xtreemfs.pbrpc.generatedinterfaces.MRC.Stat.PARSER, extensionRegistry); + if (subBuilder != null) { + subBuilder.mergeFrom(stbuf_); + stbuf_ = subBuilder.buildPartial(); + } + bitField0_ |= 0x00000001; + break; + } + case 21: { + bitField0_ |= 0x00000002; + toSet_ = input.readFixed32(); + break; + } + case 26: { + org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.XCap.Builder subBuilder = null; + if (((bitField0_ & 0x00000004) == 0x00000004)) { + subBuilder = cap_.toBuilder(); + } + cap_ = input.readMessage(org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.XCap.PARSER, extensionRegistry); + if (subBuilder != null) { + subBuilder.mergeFrom(cap_); + cap_ = subBuilder.buildPartial(); + } + bitField0_ |= 0x00000004; + break; + } + } + } + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(this); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException( + e.getMessage()).setUnfinishedMessage(this); + } finally { + this.unknownFields = unknownFields.build(); + makeExtensionsImmutable(); + } + } public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { return org.xtreemfs.pbrpc.generatedinterfaces.MRC.internal_static_xtreemfs_pbrpc_fsetattrRequest_descriptor; } - + protected com.google.protobuf.GeneratedMessage.FieldAccessorTable internalGetFieldAccessorTable() { - return org.xtreemfs.pbrpc.generatedinterfaces.MRC.internal_static_xtreemfs_pbrpc_fsetattrRequest_fieldAccessorTable; + return org.xtreemfs.pbrpc.generatedinterfaces.MRC.internal_static_xtreemfs_pbrpc_fsetattrRequest_fieldAccessorTable + .ensureFieldAccessorsInitialized( + org.xtreemfs.pbrpc.generatedinterfaces.MRC.fsetattrRequest.class, org.xtreemfs.pbrpc.generatedinterfaces.MRC.fsetattrRequest.Builder.class); + } + + public static com.google.protobuf.Parser PARSER = + new com.google.protobuf.AbstractParser() { + public fsetattrRequest parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return new fsetattrRequest(input, extensionRegistry); + } + }; + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; } - + + private int bitField0_; // required .xtreemfs.pbrpc.Stat stbuf = 1; public static final int STBUF_FIELD_NUMBER = 1; - private boolean hasStbuf; private org.xtreemfs.pbrpc.generatedinterfaces.MRC.Stat stbuf_; - public boolean hasStbuf() { return hasStbuf; } - public org.xtreemfs.pbrpc.generatedinterfaces.MRC.Stat getStbuf() { return stbuf_; } - + /** + * required .xtreemfs.pbrpc.Stat stbuf = 1; + * + *
+     * a buffer containing the attributes to update
+     * 
+ */ + public boolean hasStbuf() { + return ((bitField0_ & 0x00000001) == 0x00000001); + } + /** + * required .xtreemfs.pbrpc.Stat stbuf = 1; + * + *
+     * a buffer containing the attributes to update
+     * 
+ */ + public org.xtreemfs.pbrpc.generatedinterfaces.MRC.Stat getStbuf() { + return stbuf_; + } + /** + * required .xtreemfs.pbrpc.Stat stbuf = 1; + * + *
+     * a buffer containing the attributes to update
+     * 
+ */ + public org.xtreemfs.pbrpc.generatedinterfaces.MRC.StatOrBuilder getStbufOrBuilder() { + return stbuf_; + } + // required fixed32 to_set = 2; public static final int TO_SET_FIELD_NUMBER = 2; - private boolean hasToSet; - private int toSet_ = 0; - public boolean hasToSet() { return hasToSet; } - public int getToSet() { return toSet_; } - + private int toSet_; + /** + * required fixed32 to_set = 2; + * + *
+     * a bitmap of Setattrs indicating which attributes to update
+     * 
+ */ + public boolean hasToSet() { + return ((bitField0_ & 0x00000002) == 0x00000002); + } + /** + * required fixed32 to_set = 2; + * + *
+     * a bitmap of Setattrs indicating which attributes to update
+     * 
+ */ + public int getToSet() { + return toSet_; + } + // required .xtreemfs.pbrpc.XCap cap = 3; public static final int CAP_FIELD_NUMBER = 3; - private boolean hasCap; private org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.XCap cap_; - public boolean hasCap() { return hasCap; } - public org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.XCap getCap() { return cap_; } - + /** + * required .xtreemfs.pbrpc.XCap cap = 3; + * + *
+     * the capability returned by the MRC when the file was opened
+     * 
+ */ + public boolean hasCap() { + return ((bitField0_ & 0x00000004) == 0x00000004); + } + /** + * required .xtreemfs.pbrpc.XCap cap = 3; + * + *
+     * the capability returned by the MRC when the file was opened
+     * 
+ */ + public org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.XCap getCap() { + return cap_; + } + /** + * required .xtreemfs.pbrpc.XCap cap = 3; + * + *
+     * the capability returned by the MRC when the file was opened
+     * 
+ */ + public org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.XCapOrBuilder getCapOrBuilder() { + return cap_; + } + private void initFields() { stbuf_ = org.xtreemfs.pbrpc.generatedinterfaces.MRC.Stat.getDefaultInstance(); + toSet_ = 0; cap_ = org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.XCap.getDefaultInstance(); } + private byte memoizedIsInitialized = -1; public final boolean isInitialized() { - if (!hasStbuf) return false; - if (!hasToSet) return false; - if (!hasCap) return false; - if (!getStbuf().isInitialized()) return false; - if (!getCap().isInitialized()) return false; + byte isInitialized = memoizedIsInitialized; + if (isInitialized != -1) return isInitialized == 1; + + if (!hasStbuf()) { + memoizedIsInitialized = 0; + return false; + } + if (!hasToSet()) { + memoizedIsInitialized = 0; + return false; + } + if (!hasCap()) { + memoizedIsInitialized = 0; + return false; + } + if (!getStbuf().isInitialized()) { + memoizedIsInitialized = 0; + return false; + } + if (!getCap().isInitialized()) { + memoizedIsInitialized = 0; + return false; + } + memoizedIsInitialized = 1; return true; } - + public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException { getSerializedSize(); - if (hasStbuf()) { - output.writeMessage(1, getStbuf()); + if (((bitField0_ & 0x00000001) == 0x00000001)) { + output.writeMessage(1, stbuf_); } - if (hasToSet()) { - output.writeFixed32(2, getToSet()); + if (((bitField0_ & 0x00000002) == 0x00000002)) { + output.writeFixed32(2, toSet_); } - if (hasCap()) { - output.writeMessage(3, getCap()); + if (((bitField0_ & 0x00000004) == 0x00000004)) { + output.writeMessage(3, cap_); } getUnknownFields().writeTo(output); } - + private int memoizedSerializedSize = -1; public int getSerializedSize() { int size = memoizedSerializedSize; if (size != -1) return size; - + size = 0; - if (hasStbuf()) { + if (((bitField0_ & 0x00000001) == 0x00000001)) { size += com.google.protobuf.CodedOutputStream - .computeMessageSize(1, getStbuf()); + .computeMessageSize(1, stbuf_); } - if (hasToSet()) { + if (((bitField0_ & 0x00000002) == 0x00000002)) { size += com.google.protobuf.CodedOutputStream - .computeFixed32Size(2, getToSet()); + .computeFixed32Size(2, toSet_); } - if (hasCap()) { + if (((bitField0_ & 0x00000004) == 0x00000004)) { size += com.google.protobuf.CodedOutputStream - .computeMessageSize(3, getCap()); + .computeMessageSize(3, cap_); } size += getUnknownFields().getSerializedSize(); memoizedSerializedSize = size; return size; } - + + private static final long serialVersionUID = 0L; + @java.lang.Override + protected java.lang.Object writeReplace() + throws java.io.ObjectStreamException { + return super.writeReplace(); + } + public static org.xtreemfs.pbrpc.generatedinterfaces.MRC.fsetattrRequest parseFrom( com.google.protobuf.ByteString data) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data).buildParsed(); + return PARSER.parseFrom(data); } public static org.xtreemfs.pbrpc.generatedinterfaces.MRC.fsetattrRequest parseFrom( com.google.protobuf.ByteString data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(data, extensionRegistry); } public static org.xtreemfs.pbrpc.generatedinterfaces.MRC.fsetattrRequest parseFrom(byte[] data) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data).buildParsed(); + return PARSER.parseFrom(data); } public static org.xtreemfs.pbrpc.generatedinterfaces.MRC.fsetattrRequest parseFrom( byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(data, extensionRegistry); } public static org.xtreemfs.pbrpc.generatedinterfaces.MRC.fsetattrRequest parseFrom(java.io.InputStream input) throws java.io.IOException { - return newBuilder().mergeFrom(input).buildParsed(); + return PARSER.parseFrom(input); } public static org.xtreemfs.pbrpc.generatedinterfaces.MRC.fsetattrRequest parseFrom( java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - return newBuilder().mergeFrom(input, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(input, extensionRegistry); } public static org.xtreemfs.pbrpc.generatedinterfaces.MRC.fsetattrRequest parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException { - Builder builder = newBuilder(); - if (builder.mergeDelimitedFrom(input)) { - return builder.buildParsed(); - } else { - return null; - } + return PARSER.parseDelimitedFrom(input); } public static org.xtreemfs.pbrpc.generatedinterfaces.MRC.fsetattrRequest parseDelimitedFrom( java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - Builder builder = newBuilder(); - if (builder.mergeDelimitedFrom(input, extensionRegistry)) { - return builder.buildParsed(); - } else { - return null; - } + return PARSER.parseDelimitedFrom(input, extensionRegistry); } public static org.xtreemfs.pbrpc.generatedinterfaces.MRC.fsetattrRequest parseFrom( com.google.protobuf.CodedInputStream input) throws java.io.IOException { - return newBuilder().mergeFrom(input).buildParsed(); + return PARSER.parseFrom(input); } public static org.xtreemfs.pbrpc.generatedinterfaces.MRC.fsetattrRequest parseFrom( com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - return newBuilder().mergeFrom(input, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(input, extensionRegistry); } - + public static Builder newBuilder() { return Builder.create(); } public Builder newBuilderForType() { return newBuilder(); } public static Builder newBuilder(org.xtreemfs.pbrpc.generatedinterfaces.MRC.fsetattrRequest prototype) { return newBuilder().mergeFrom(prototype); } public Builder toBuilder() { return newBuilder(this); } - + + @java.lang.Override + protected Builder newBuilderForType( + com.google.protobuf.GeneratedMessage.BuilderParent parent) { + Builder builder = new Builder(parent); + return builder; + } + /** + * Protobuf type {@code xtreemfs.pbrpc.fsetattrRequest} + * + *
+     * sets file attriubtes of an open file
+     * 
+ */ public static final class Builder extends - com.google.protobuf.GeneratedMessage.Builder { - private org.xtreemfs.pbrpc.generatedinterfaces.MRC.fsetattrRequest result; - - // Construct using org.xtreemfs.pbrpc.generatedinterfaces.MRC.fsetattrRequest.newBuilder() - private Builder() {} - - private static Builder create() { - Builder builder = new Builder(); - builder.result = new org.xtreemfs.pbrpc.generatedinterfaces.MRC.fsetattrRequest(); - return builder; + com.google.protobuf.GeneratedMessage.Builder + implements org.xtreemfs.pbrpc.generatedinterfaces.MRC.fsetattrRequestOrBuilder { + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return org.xtreemfs.pbrpc.generatedinterfaces.MRC.internal_static_xtreemfs_pbrpc_fsetattrRequest_descriptor; } - - protected org.xtreemfs.pbrpc.generatedinterfaces.MRC.fsetattrRequest internalGetResult() { - return result; + + protected com.google.protobuf.GeneratedMessage.FieldAccessorTable + internalGetFieldAccessorTable() { + return org.xtreemfs.pbrpc.generatedinterfaces.MRC.internal_static_xtreemfs_pbrpc_fsetattrRequest_fieldAccessorTable + .ensureFieldAccessorsInitialized( + org.xtreemfs.pbrpc.generatedinterfaces.MRC.fsetattrRequest.class, org.xtreemfs.pbrpc.generatedinterfaces.MRC.fsetattrRequest.Builder.class); } - - public Builder clear() { - if (result == null) { - throw new IllegalStateException( - "Cannot call clear() after build()."); - } - result = new org.xtreemfs.pbrpc.generatedinterfaces.MRC.fsetattrRequest(); + + // Construct using org.xtreemfs.pbrpc.generatedinterfaces.MRC.fsetattrRequest.newBuilder() + private Builder() { + maybeForceBuilderInitialization(); + } + + private Builder( + com.google.protobuf.GeneratedMessage.BuilderParent parent) { + super(parent); + maybeForceBuilderInitialization(); + } + private void maybeForceBuilderInitialization() { + if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) { + getStbufFieldBuilder(); + getCapFieldBuilder(); + } + } + private static Builder create() { + return new Builder(); + } + + public Builder clear() { + super.clear(); + if (stbufBuilder_ == null) { + stbuf_ = org.xtreemfs.pbrpc.generatedinterfaces.MRC.Stat.getDefaultInstance(); + } else { + stbufBuilder_.clear(); + } + bitField0_ = (bitField0_ & ~0x00000001); + toSet_ = 0; + bitField0_ = (bitField0_ & ~0x00000002); + if (capBuilder_ == null) { + cap_ = org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.XCap.getDefaultInstance(); + } else { + capBuilder_.clear(); + } + bitField0_ = (bitField0_ & ~0x00000004); return this; } - + public Builder clone() { - return create().mergeFrom(result); + return create().mergeFrom(buildPartial()); } - + public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() { - return org.xtreemfs.pbrpc.generatedinterfaces.MRC.fsetattrRequest.getDescriptor(); + return org.xtreemfs.pbrpc.generatedinterfaces.MRC.internal_static_xtreemfs_pbrpc_fsetattrRequest_descriptor; } - + public org.xtreemfs.pbrpc.generatedinterfaces.MRC.fsetattrRequest getDefaultInstanceForType() { return org.xtreemfs.pbrpc.generatedinterfaces.MRC.fsetattrRequest.getDefaultInstance(); } - - public boolean isInitialized() { - return result.isInitialized(); - } + public org.xtreemfs.pbrpc.generatedinterfaces.MRC.fsetattrRequest build() { - if (result != null && !isInitialized()) { + org.xtreemfs.pbrpc.generatedinterfaces.MRC.fsetattrRequest result = buildPartial(); + if (!result.isInitialized()) { throw newUninitializedMessageException(result); } - return buildPartial(); - } - - private org.xtreemfs.pbrpc.generatedinterfaces.MRC.fsetattrRequest buildParsed() - throws com.google.protobuf.InvalidProtocolBufferException { - if (!isInitialized()) { - throw newUninitializedMessageException( - result).asInvalidProtocolBufferException(); - } - return buildPartial(); + return result; } - + public org.xtreemfs.pbrpc.generatedinterfaces.MRC.fsetattrRequest buildPartial() { - if (result == null) { - throw new IllegalStateException( - "build() has already been called on this Builder."); + org.xtreemfs.pbrpc.generatedinterfaces.MRC.fsetattrRequest result = new org.xtreemfs.pbrpc.generatedinterfaces.MRC.fsetattrRequest(this); + int from_bitField0_ = bitField0_; + int to_bitField0_ = 0; + if (((from_bitField0_ & 0x00000001) == 0x00000001)) { + to_bitField0_ |= 0x00000001; + } + if (stbufBuilder_ == null) { + result.stbuf_ = stbuf_; + } else { + result.stbuf_ = stbufBuilder_.build(); + } + if (((from_bitField0_ & 0x00000002) == 0x00000002)) { + to_bitField0_ |= 0x00000002; + } + result.toSet_ = toSet_; + if (((from_bitField0_ & 0x00000004) == 0x00000004)) { + to_bitField0_ |= 0x00000004; } - org.xtreemfs.pbrpc.generatedinterfaces.MRC.fsetattrRequest returnMe = result; - result = null; - return returnMe; + if (capBuilder_ == null) { + result.cap_ = cap_; + } else { + result.cap_ = capBuilder_.build(); + } + result.bitField0_ = to_bitField0_; + onBuilt(); + return result; } - + public Builder mergeFrom(com.google.protobuf.Message other) { if (other instanceof org.xtreemfs.pbrpc.generatedinterfaces.MRC.fsetattrRequest) { return mergeFrom((org.xtreemfs.pbrpc.generatedinterfaces.MRC.fsetattrRequest)other); @@ -4152,7 +10789,7 @@ public final class MRC { return this; } } - + public Builder mergeFrom(org.xtreemfs.pbrpc.generatedinterfaces.MRC.fsetattrRequest other) { if (other == org.xtreemfs.pbrpc.generatedinterfaces.MRC.fsetattrRequest.getDefaultInstance()) return this; if (other.hasStbuf()) { @@ -4167,396 +10804,965 @@ public final class MRC { this.mergeUnknownFields(other.getUnknownFields()); return this; } - + + public final boolean isInitialized() { + if (!hasStbuf()) { + + return false; + } + if (!hasToSet()) { + + return false; + } + if (!hasCap()) { + + return false; + } + if (!getStbuf().isInitialized()) { + + return false; + } + if (!getCap().isInitialized()) { + + return false; + } + return true; + } + public Builder mergeFrom( com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - com.google.protobuf.UnknownFieldSet.Builder unknownFields = - com.google.protobuf.UnknownFieldSet.newBuilder( - this.getUnknownFields()); - while (true) { - int tag = input.readTag(); - switch (tag) { - case 0: - this.setUnknownFields(unknownFields.build()); - return this; - default: { - if (!parseUnknownField(input, unknownFields, - extensionRegistry, tag)) { - this.setUnknownFields(unknownFields.build()); - return this; - } - break; - } - case 10: { - org.xtreemfs.pbrpc.generatedinterfaces.MRC.Stat.Builder subBuilder = org.xtreemfs.pbrpc.generatedinterfaces.MRC.Stat.newBuilder(); - if (hasStbuf()) { - subBuilder.mergeFrom(getStbuf()); - } - input.readMessage(subBuilder, extensionRegistry); - setStbuf(subBuilder.buildPartial()); - break; - } - case 21: { - setToSet(input.readFixed32()); - break; - } - case 26: { - org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.XCap.Builder subBuilder = org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.XCap.newBuilder(); - if (hasCap()) { - subBuilder.mergeFrom(getCap()); - } - input.readMessage(subBuilder, extensionRegistry); - setCap(subBuilder.buildPartial()); - break; - } + org.xtreemfs.pbrpc.generatedinterfaces.MRC.fsetattrRequest parsedMessage = null; + try { + parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + parsedMessage = (org.xtreemfs.pbrpc.generatedinterfaces.MRC.fsetattrRequest) e.getUnfinishedMessage(); + throw e; + } finally { + if (parsedMessage != null) { + mergeFrom(parsedMessage); } } + return this; } - - + private int bitField0_; + // required .xtreemfs.pbrpc.Stat stbuf = 1; + private org.xtreemfs.pbrpc.generatedinterfaces.MRC.Stat stbuf_ = org.xtreemfs.pbrpc.generatedinterfaces.MRC.Stat.getDefaultInstance(); + private com.google.protobuf.SingleFieldBuilder< + org.xtreemfs.pbrpc.generatedinterfaces.MRC.Stat, org.xtreemfs.pbrpc.generatedinterfaces.MRC.Stat.Builder, org.xtreemfs.pbrpc.generatedinterfaces.MRC.StatOrBuilder> stbufBuilder_; + /** + * required .xtreemfs.pbrpc.Stat stbuf = 1; + * + *
+       * a buffer containing the attributes to update
+       * 
+ */ public boolean hasStbuf() { - return result.hasStbuf(); - } + return ((bitField0_ & 0x00000001) == 0x00000001); + } + /** + * required .xtreemfs.pbrpc.Stat stbuf = 1; + * + *
+       * a buffer containing the attributes to update
+       * 
+ */ public org.xtreemfs.pbrpc.generatedinterfaces.MRC.Stat getStbuf() { - return result.getStbuf(); + if (stbufBuilder_ == null) { + return stbuf_; + } else { + return stbufBuilder_.getMessage(); + } } + /** + * required .xtreemfs.pbrpc.Stat stbuf = 1; + * + *
+       * a buffer containing the attributes to update
+       * 
+ */ public Builder setStbuf(org.xtreemfs.pbrpc.generatedinterfaces.MRC.Stat value) { - if (value == null) { - throw new NullPointerException(); + if (stbufBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + stbuf_ = value; + onChanged(); + } else { + stbufBuilder_.setMessage(value); + } + bitField0_ |= 0x00000001; + return this; + } + /** + * required .xtreemfs.pbrpc.Stat stbuf = 1; + * + *
+       * a buffer containing the attributes to update
+       * 
+ */ + public Builder setStbuf( + org.xtreemfs.pbrpc.generatedinterfaces.MRC.Stat.Builder builderForValue) { + if (stbufBuilder_ == null) { + stbuf_ = builderForValue.build(); + onChanged(); + } else { + stbufBuilder_.setMessage(builderForValue.build()); } - result.hasStbuf = true; - result.stbuf_ = value; - return this; - } - public Builder setStbuf(org.xtreemfs.pbrpc.generatedinterfaces.MRC.Stat.Builder builderForValue) { - result.hasStbuf = true; - result.stbuf_ = builderForValue.build(); + bitField0_ |= 0x00000001; return this; } + /** + * required .xtreemfs.pbrpc.Stat stbuf = 1; + * + *
+       * a buffer containing the attributes to update
+       * 
+ */ public Builder mergeStbuf(org.xtreemfs.pbrpc.generatedinterfaces.MRC.Stat value) { - if (result.hasStbuf() && - result.stbuf_ != org.xtreemfs.pbrpc.generatedinterfaces.MRC.Stat.getDefaultInstance()) { - result.stbuf_ = - org.xtreemfs.pbrpc.generatedinterfaces.MRC.Stat.newBuilder(result.stbuf_).mergeFrom(value).buildPartial(); + if (stbufBuilder_ == null) { + if (((bitField0_ & 0x00000001) == 0x00000001) && + stbuf_ != org.xtreemfs.pbrpc.generatedinterfaces.MRC.Stat.getDefaultInstance()) { + stbuf_ = + org.xtreemfs.pbrpc.generatedinterfaces.MRC.Stat.newBuilder(stbuf_).mergeFrom(value).buildPartial(); + } else { + stbuf_ = value; + } + onChanged(); } else { - result.stbuf_ = value; + stbufBuilder_.mergeFrom(value); } - result.hasStbuf = true; + bitField0_ |= 0x00000001; return this; } + /** + * required .xtreemfs.pbrpc.Stat stbuf = 1; + * + *
+       * a buffer containing the attributes to update
+       * 
+ */ public Builder clearStbuf() { - result.hasStbuf = false; - result.stbuf_ = org.xtreemfs.pbrpc.generatedinterfaces.MRC.Stat.getDefaultInstance(); - return this; + if (stbufBuilder_ == null) { + stbuf_ = org.xtreemfs.pbrpc.generatedinterfaces.MRC.Stat.getDefaultInstance(); + onChanged(); + } else { + stbufBuilder_.clear(); + } + bitField0_ = (bitField0_ & ~0x00000001); + return this; + } + /** + * required .xtreemfs.pbrpc.Stat stbuf = 1; + * + *
+       * a buffer containing the attributes to update
+       * 
+ */ + public org.xtreemfs.pbrpc.generatedinterfaces.MRC.Stat.Builder getStbufBuilder() { + bitField0_ |= 0x00000001; + onChanged(); + return getStbufFieldBuilder().getBuilder(); + } + /** + * required .xtreemfs.pbrpc.Stat stbuf = 1; + * + *
+       * a buffer containing the attributes to update
+       * 
+ */ + public org.xtreemfs.pbrpc.generatedinterfaces.MRC.StatOrBuilder getStbufOrBuilder() { + if (stbufBuilder_ != null) { + return stbufBuilder_.getMessageOrBuilder(); + } else { + return stbuf_; + } + } + /** + * required .xtreemfs.pbrpc.Stat stbuf = 1; + * + *
+       * a buffer containing the attributes to update
+       * 
+ */ + private com.google.protobuf.SingleFieldBuilder< + org.xtreemfs.pbrpc.generatedinterfaces.MRC.Stat, org.xtreemfs.pbrpc.generatedinterfaces.MRC.Stat.Builder, org.xtreemfs.pbrpc.generatedinterfaces.MRC.StatOrBuilder> + getStbufFieldBuilder() { + if (stbufBuilder_ == null) { + stbufBuilder_ = new com.google.protobuf.SingleFieldBuilder< + org.xtreemfs.pbrpc.generatedinterfaces.MRC.Stat, org.xtreemfs.pbrpc.generatedinterfaces.MRC.Stat.Builder, org.xtreemfs.pbrpc.generatedinterfaces.MRC.StatOrBuilder>( + stbuf_, + getParentForChildren(), + isClean()); + stbuf_ = null; + } + return stbufBuilder_; } - + // required fixed32 to_set = 2; + private int toSet_ ; + /** + * required fixed32 to_set = 2; + * + *
+       * a bitmap of Setattrs indicating which attributes to update
+       * 
+ */ public boolean hasToSet() { - return result.hasToSet(); - } + return ((bitField0_ & 0x00000002) == 0x00000002); + } + /** + * required fixed32 to_set = 2; + * + *
+       * a bitmap of Setattrs indicating which attributes to update
+       * 
+ */ public int getToSet() { - return result.getToSet(); - } + return toSet_; + } + /** + * required fixed32 to_set = 2; + * + *
+       * a bitmap of Setattrs indicating which attributes to update
+       * 
+ */ public Builder setToSet(int value) { - result.hasToSet = true; - result.toSet_ = value; - return this; - } + bitField0_ |= 0x00000002; + toSet_ = value; + onChanged(); + return this; + } + /** + * required fixed32 to_set = 2; + * + *
+       * a bitmap of Setattrs indicating which attributes to update
+       * 
+ */ public Builder clearToSet() { - result.hasToSet = false; - result.toSet_ = 0; + bitField0_ = (bitField0_ & ~0x00000002); + toSet_ = 0; + onChanged(); return this; } - + // required .xtreemfs.pbrpc.XCap cap = 3; + private org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.XCap cap_ = org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.XCap.getDefaultInstance(); + private com.google.protobuf.SingleFieldBuilder< + org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.XCap, org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.XCap.Builder, org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.XCapOrBuilder> capBuilder_; + /** + * required .xtreemfs.pbrpc.XCap cap = 3; + * + *
+       * the capability returned by the MRC when the file was opened
+       * 
+ */ public boolean hasCap() { - return result.hasCap(); - } + return ((bitField0_ & 0x00000004) == 0x00000004); + } + /** + * required .xtreemfs.pbrpc.XCap cap = 3; + * + *
+       * the capability returned by the MRC when the file was opened
+       * 
+ */ public org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.XCap getCap() { - return result.getCap(); + if (capBuilder_ == null) { + return cap_; + } else { + return capBuilder_.getMessage(); + } } + /** + * required .xtreemfs.pbrpc.XCap cap = 3; + * + *
+       * the capability returned by the MRC when the file was opened
+       * 
+ */ public Builder setCap(org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.XCap value) { - if (value == null) { - throw new NullPointerException(); + if (capBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + cap_ = value; + onChanged(); + } else { + capBuilder_.setMessage(value); + } + bitField0_ |= 0x00000004; + return this; + } + /** + * required .xtreemfs.pbrpc.XCap cap = 3; + * + *
+       * the capability returned by the MRC when the file was opened
+       * 
+ */ + public Builder setCap( + org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.XCap.Builder builderForValue) { + if (capBuilder_ == null) { + cap_ = builderForValue.build(); + onChanged(); + } else { + capBuilder_.setMessage(builderForValue.build()); } - result.hasCap = true; - result.cap_ = value; - return this; - } - public Builder setCap(org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.XCap.Builder builderForValue) { - result.hasCap = true; - result.cap_ = builderForValue.build(); + bitField0_ |= 0x00000004; return this; } + /** + * required .xtreemfs.pbrpc.XCap cap = 3; + * + *
+       * the capability returned by the MRC when the file was opened
+       * 
+ */ public Builder mergeCap(org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.XCap value) { - if (result.hasCap() && - result.cap_ != org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.XCap.getDefaultInstance()) { - result.cap_ = - org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.XCap.newBuilder(result.cap_).mergeFrom(value).buildPartial(); + if (capBuilder_ == null) { + if (((bitField0_ & 0x00000004) == 0x00000004) && + cap_ != org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.XCap.getDefaultInstance()) { + cap_ = + org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.XCap.newBuilder(cap_).mergeFrom(value).buildPartial(); + } else { + cap_ = value; + } + onChanged(); } else { - result.cap_ = value; + capBuilder_.mergeFrom(value); } - result.hasCap = true; + bitField0_ |= 0x00000004; return this; } + /** + * required .xtreemfs.pbrpc.XCap cap = 3; + * + *
+       * the capability returned by the MRC when the file was opened
+       * 
+ */ public Builder clearCap() { - result.hasCap = false; - result.cap_ = org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.XCap.getDefaultInstance(); - return this; + if (capBuilder_ == null) { + cap_ = org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.XCap.getDefaultInstance(); + onChanged(); + } else { + capBuilder_.clear(); + } + bitField0_ = (bitField0_ & ~0x00000004); + return this; + } + /** + * required .xtreemfs.pbrpc.XCap cap = 3; + * + *
+       * the capability returned by the MRC when the file was opened
+       * 
+ */ + public org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.XCap.Builder getCapBuilder() { + bitField0_ |= 0x00000004; + onChanged(); + return getCapFieldBuilder().getBuilder(); + } + /** + * required .xtreemfs.pbrpc.XCap cap = 3; + * + *
+       * the capability returned by the MRC when the file was opened
+       * 
+ */ + public org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.XCapOrBuilder getCapOrBuilder() { + if (capBuilder_ != null) { + return capBuilder_.getMessageOrBuilder(); + } else { + return cap_; + } + } + /** + * required .xtreemfs.pbrpc.XCap cap = 3; + * + *
+       * the capability returned by the MRC when the file was opened
+       * 
+ */ + private com.google.protobuf.SingleFieldBuilder< + org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.XCap, org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.XCap.Builder, org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.XCapOrBuilder> + getCapFieldBuilder() { + if (capBuilder_ == null) { + capBuilder_ = new com.google.protobuf.SingleFieldBuilder< + org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.XCap, org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.XCap.Builder, org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.XCapOrBuilder>( + cap_, + getParentForChildren(), + isClean()); + cap_ = null; + } + return capBuilder_; } - + // @@protoc_insertion_point(builder_scope:xtreemfs.pbrpc.fsetattrRequest) } - + static { defaultInstance = new fsetattrRequest(true); - org.xtreemfs.pbrpc.generatedinterfaces.MRC.internalForceInit(); defaultInstance.initFields(); } - + // @@protoc_insertion_point(class_scope:xtreemfs.pbrpc.fsetattrRequest) } - + + public interface getattrRequestOrBuilder + extends com.google.protobuf.MessageOrBuilder { + + // required string volume_name = 1; + /** + * required string volume_name = 1; + * + *
+     * the volume name
+     * 
+ */ + boolean hasVolumeName(); + /** + * required string volume_name = 1; + * + *
+     * the volume name
+     * 
+ */ + java.lang.String getVolumeName(); + /** + * required string volume_name = 1; + * + *
+     * the volume name
+     * 
+ */ + com.google.protobuf.ByteString + getVolumeNameBytes(); + + // required string path = 2; + /** + * required string path = 2; + * + *
+     * the path to the file or directory, relative to the volume root
+     * 
+ */ + boolean hasPath(); + /** + * required string path = 2; + * + *
+     * the path to the file or directory, relative to the volume root
+     * 
+ */ + java.lang.String getPath(); + /** + * required string path = 2; + * + *
+     * the path to the file or directory, relative to the volume root
+     * 
+ */ + com.google.protobuf.ByteString + getPathBytes(); + + // required fixed64 known_etag = 3; + /** + * required fixed64 known_etag = 3; + * + *
+     * an identification tag indicating the last known version of the attributes
+     * 
+ */ + boolean hasKnownEtag(); + /** + * required fixed64 known_etag = 3; + * + *
+     * an identification tag indicating the last known version of the attributes
+     * 
+ */ + long getKnownEtag(); + } + /** + * Protobuf type {@code xtreemfs.pbrpc.getattrRequest} + * + *
+   * requests attributes of a file or directory
+   * 
+ */ public static final class getattrRequest extends - com.google.protobuf.GeneratedMessage { + com.google.protobuf.GeneratedMessage + implements getattrRequestOrBuilder { // Use getattrRequest.newBuilder() to construct. - private getattrRequest() { - initFields(); + private getattrRequest(com.google.protobuf.GeneratedMessage.Builder builder) { + super(builder); + this.unknownFields = builder.getUnknownFields(); } - private getattrRequest(boolean noInit) {} - + private getattrRequest(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); } + private static final getattrRequest defaultInstance; public static getattrRequest getDefaultInstance() { return defaultInstance; } - + public getattrRequest getDefaultInstanceForType() { return defaultInstance; } - + + private final com.google.protobuf.UnknownFieldSet unknownFields; + @java.lang.Override + public final com.google.protobuf.UnknownFieldSet + getUnknownFields() { + return this.unknownFields; + } + private getattrRequest( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + initFields(); + int mutable_bitField0_ = 0; + com.google.protobuf.UnknownFieldSet.Builder unknownFields = + com.google.protobuf.UnknownFieldSet.newBuilder(); + try { + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch (tag) { + case 0: + done = true; + break; + default: { + if (!parseUnknownField(input, unknownFields, + extensionRegistry, tag)) { + done = true; + } + break; + } + case 10: { + bitField0_ |= 0x00000001; + volumeName_ = input.readBytes(); + break; + } + case 18: { + bitField0_ |= 0x00000002; + path_ = input.readBytes(); + break; + } + case 25: { + bitField0_ |= 0x00000004; + knownEtag_ = input.readFixed64(); + break; + } + } + } + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(this); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException( + e.getMessage()).setUnfinishedMessage(this); + } finally { + this.unknownFields = unknownFields.build(); + makeExtensionsImmutable(); + } + } public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { return org.xtreemfs.pbrpc.generatedinterfaces.MRC.internal_static_xtreemfs_pbrpc_getattrRequest_descriptor; } - + protected com.google.protobuf.GeneratedMessage.FieldAccessorTable internalGetFieldAccessorTable() { - return org.xtreemfs.pbrpc.generatedinterfaces.MRC.internal_static_xtreemfs_pbrpc_getattrRequest_fieldAccessorTable; + return org.xtreemfs.pbrpc.generatedinterfaces.MRC.internal_static_xtreemfs_pbrpc_getattrRequest_fieldAccessorTable + .ensureFieldAccessorsInitialized( + org.xtreemfs.pbrpc.generatedinterfaces.MRC.getattrRequest.class, org.xtreemfs.pbrpc.generatedinterfaces.MRC.getattrRequest.Builder.class); + } + + public static com.google.protobuf.Parser PARSER = + new com.google.protobuf.AbstractParser() { + public getattrRequest parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return new getattrRequest(input, extensionRegistry); + } + }; + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; } - + + private int bitField0_; // required string volume_name = 1; public static final int VOLUME_NAME_FIELD_NUMBER = 1; - private boolean hasVolumeName; - private java.lang.String volumeName_ = ""; - public boolean hasVolumeName() { return hasVolumeName; } - public java.lang.String getVolumeName() { return volumeName_; } - + private java.lang.Object volumeName_; + /** + * required string volume_name = 1; + * + *
+     * the volume name
+     * 
+ */ + public boolean hasVolumeName() { + return ((bitField0_ & 0x00000001) == 0x00000001); + } + /** + * required string volume_name = 1; + * + *
+     * the volume name
+     * 
+ */ + public java.lang.String getVolumeName() { + java.lang.Object ref = volumeName_; + if (ref instanceof java.lang.String) { + return (java.lang.String) ref; + } else { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + if (bs.isValidUtf8()) { + volumeName_ = s; + } + return s; + } + } + /** + * required string volume_name = 1; + * + *
+     * the volume name
+     * 
+ */ + public com.google.protobuf.ByteString + getVolumeNameBytes() { + java.lang.Object ref = volumeName_; + if (ref instanceof java.lang.String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + volumeName_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + // required string path = 2; public static final int PATH_FIELD_NUMBER = 2; - private boolean hasPath; - private java.lang.String path_ = ""; - public boolean hasPath() { return hasPath; } - public java.lang.String getPath() { return path_; } - + private java.lang.Object path_; + /** + * required string path = 2; + * + *
+     * the path to the file or directory, relative to the volume root
+     * 
+ */ + public boolean hasPath() { + return ((bitField0_ & 0x00000002) == 0x00000002); + } + /** + * required string path = 2; + * + *
+     * the path to the file or directory, relative to the volume root
+     * 
+ */ + public java.lang.String getPath() { + java.lang.Object ref = path_; + if (ref instanceof java.lang.String) { + return (java.lang.String) ref; + } else { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + if (bs.isValidUtf8()) { + path_ = s; + } + return s; + } + } + /** + * required string path = 2; + * + *
+     * the path to the file or directory, relative to the volume root
+     * 
+ */ + public com.google.protobuf.ByteString + getPathBytes() { + java.lang.Object ref = path_; + if (ref instanceof java.lang.String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + path_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + // required fixed64 known_etag = 3; public static final int KNOWN_ETAG_FIELD_NUMBER = 3; - private boolean hasKnownEtag; - private long knownEtag_ = 0L; - public boolean hasKnownEtag() { return hasKnownEtag; } - public long getKnownEtag() { return knownEtag_; } - + private long knownEtag_; + /** + * required fixed64 known_etag = 3; + * + *
+     * an identification tag indicating the last known version of the attributes
+     * 
+ */ + public boolean hasKnownEtag() { + return ((bitField0_ & 0x00000004) == 0x00000004); + } + /** + * required fixed64 known_etag = 3; + * + *
+     * an identification tag indicating the last known version of the attributes
+     * 
+ */ + public long getKnownEtag() { + return knownEtag_; + } + private void initFields() { + volumeName_ = ""; + path_ = ""; + knownEtag_ = 0L; } + private byte memoizedIsInitialized = -1; public final boolean isInitialized() { - if (!hasVolumeName) return false; - if (!hasPath) return false; - if (!hasKnownEtag) return false; + byte isInitialized = memoizedIsInitialized; + if (isInitialized != -1) return isInitialized == 1; + + if (!hasVolumeName()) { + memoizedIsInitialized = 0; + return false; + } + if (!hasPath()) { + memoizedIsInitialized = 0; + return false; + } + if (!hasKnownEtag()) { + memoizedIsInitialized = 0; + return false; + } + memoizedIsInitialized = 1; return true; } - + public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException { getSerializedSize(); - if (hasVolumeName()) { - output.writeString(1, getVolumeName()); + if (((bitField0_ & 0x00000001) == 0x00000001)) { + output.writeBytes(1, getVolumeNameBytes()); } - if (hasPath()) { - output.writeString(2, getPath()); + if (((bitField0_ & 0x00000002) == 0x00000002)) { + output.writeBytes(2, getPathBytes()); } - if (hasKnownEtag()) { - output.writeFixed64(3, getKnownEtag()); + if (((bitField0_ & 0x00000004) == 0x00000004)) { + output.writeFixed64(3, knownEtag_); } getUnknownFields().writeTo(output); } - + private int memoizedSerializedSize = -1; public int getSerializedSize() { int size = memoizedSerializedSize; if (size != -1) return size; - + size = 0; - if (hasVolumeName()) { + if (((bitField0_ & 0x00000001) == 0x00000001)) { size += com.google.protobuf.CodedOutputStream - .computeStringSize(1, getVolumeName()); + .computeBytesSize(1, getVolumeNameBytes()); } - if (hasPath()) { + if (((bitField0_ & 0x00000002) == 0x00000002)) { size += com.google.protobuf.CodedOutputStream - .computeStringSize(2, getPath()); + .computeBytesSize(2, getPathBytes()); } - if (hasKnownEtag()) { + if (((bitField0_ & 0x00000004) == 0x00000004)) { size += com.google.protobuf.CodedOutputStream - .computeFixed64Size(3, getKnownEtag()); + .computeFixed64Size(3, knownEtag_); } size += getUnknownFields().getSerializedSize(); memoizedSerializedSize = size; return size; } - + + private static final long serialVersionUID = 0L; + @java.lang.Override + protected java.lang.Object writeReplace() + throws java.io.ObjectStreamException { + return super.writeReplace(); + } + public static org.xtreemfs.pbrpc.generatedinterfaces.MRC.getattrRequest parseFrom( com.google.protobuf.ByteString data) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data).buildParsed(); + return PARSER.parseFrom(data); } public static org.xtreemfs.pbrpc.generatedinterfaces.MRC.getattrRequest parseFrom( com.google.protobuf.ByteString data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(data, extensionRegistry); } public static org.xtreemfs.pbrpc.generatedinterfaces.MRC.getattrRequest parseFrom(byte[] data) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data).buildParsed(); + return PARSER.parseFrom(data); } public static org.xtreemfs.pbrpc.generatedinterfaces.MRC.getattrRequest parseFrom( byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(data, extensionRegistry); } public static org.xtreemfs.pbrpc.generatedinterfaces.MRC.getattrRequest parseFrom(java.io.InputStream input) throws java.io.IOException { - return newBuilder().mergeFrom(input).buildParsed(); + return PARSER.parseFrom(input); } public static org.xtreemfs.pbrpc.generatedinterfaces.MRC.getattrRequest parseFrom( java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - return newBuilder().mergeFrom(input, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(input, extensionRegistry); } public static org.xtreemfs.pbrpc.generatedinterfaces.MRC.getattrRequest parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException { - Builder builder = newBuilder(); - if (builder.mergeDelimitedFrom(input)) { - return builder.buildParsed(); - } else { - return null; - } + return PARSER.parseDelimitedFrom(input); } public static org.xtreemfs.pbrpc.generatedinterfaces.MRC.getattrRequest parseDelimitedFrom( java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - Builder builder = newBuilder(); - if (builder.mergeDelimitedFrom(input, extensionRegistry)) { - return builder.buildParsed(); - } else { - return null; - } + return PARSER.parseDelimitedFrom(input, extensionRegistry); } public static org.xtreemfs.pbrpc.generatedinterfaces.MRC.getattrRequest parseFrom( com.google.protobuf.CodedInputStream input) throws java.io.IOException { - return newBuilder().mergeFrom(input).buildParsed(); + return PARSER.parseFrom(input); } public static org.xtreemfs.pbrpc.generatedinterfaces.MRC.getattrRequest parseFrom( com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - return newBuilder().mergeFrom(input, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(input, extensionRegistry); } - + public static Builder newBuilder() { return Builder.create(); } public Builder newBuilderForType() { return newBuilder(); } public static Builder newBuilder(org.xtreemfs.pbrpc.generatedinterfaces.MRC.getattrRequest prototype) { return newBuilder().mergeFrom(prototype); } public Builder toBuilder() { return newBuilder(this); } - + + @java.lang.Override + protected Builder newBuilderForType( + com.google.protobuf.GeneratedMessage.BuilderParent parent) { + Builder builder = new Builder(parent); + return builder; + } + /** + * Protobuf type {@code xtreemfs.pbrpc.getattrRequest} + * + *
+     * requests attributes of a file or directory
+     * 
+ */ public static final class Builder extends - com.google.protobuf.GeneratedMessage.Builder { - private org.xtreemfs.pbrpc.generatedinterfaces.MRC.getattrRequest result; - + com.google.protobuf.GeneratedMessage.Builder + implements org.xtreemfs.pbrpc.generatedinterfaces.MRC.getattrRequestOrBuilder { + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return org.xtreemfs.pbrpc.generatedinterfaces.MRC.internal_static_xtreemfs_pbrpc_getattrRequest_descriptor; + } + + protected com.google.protobuf.GeneratedMessage.FieldAccessorTable + internalGetFieldAccessorTable() { + return org.xtreemfs.pbrpc.generatedinterfaces.MRC.internal_static_xtreemfs_pbrpc_getattrRequest_fieldAccessorTable + .ensureFieldAccessorsInitialized( + org.xtreemfs.pbrpc.generatedinterfaces.MRC.getattrRequest.class, org.xtreemfs.pbrpc.generatedinterfaces.MRC.getattrRequest.Builder.class); + } + // Construct using org.xtreemfs.pbrpc.generatedinterfaces.MRC.getattrRequest.newBuilder() - private Builder() {} - - private static Builder create() { - Builder builder = new Builder(); - builder.result = new org.xtreemfs.pbrpc.generatedinterfaces.MRC.getattrRequest(); - return builder; + private Builder() { + maybeForceBuilderInitialization(); } - - protected org.xtreemfs.pbrpc.generatedinterfaces.MRC.getattrRequest internalGetResult() { - return result; + + private Builder( + com.google.protobuf.GeneratedMessage.BuilderParent parent) { + super(parent); + maybeForceBuilderInitialization(); } - - public Builder clear() { - if (result == null) { - throw new IllegalStateException( - "Cannot call clear() after build()."); + private void maybeForceBuilderInitialization() { + if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) { } - result = new org.xtreemfs.pbrpc.generatedinterfaces.MRC.getattrRequest(); + } + private static Builder create() { + return new Builder(); + } + + public Builder clear() { + super.clear(); + volumeName_ = ""; + bitField0_ = (bitField0_ & ~0x00000001); + path_ = ""; + bitField0_ = (bitField0_ & ~0x00000002); + knownEtag_ = 0L; + bitField0_ = (bitField0_ & ~0x00000004); return this; } - + public Builder clone() { - return create().mergeFrom(result); + return create().mergeFrom(buildPartial()); } - + public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() { - return org.xtreemfs.pbrpc.generatedinterfaces.MRC.getattrRequest.getDescriptor(); + return org.xtreemfs.pbrpc.generatedinterfaces.MRC.internal_static_xtreemfs_pbrpc_getattrRequest_descriptor; } - + public org.xtreemfs.pbrpc.generatedinterfaces.MRC.getattrRequest getDefaultInstanceForType() { return org.xtreemfs.pbrpc.generatedinterfaces.MRC.getattrRequest.getDefaultInstance(); } - - public boolean isInitialized() { - return result.isInitialized(); - } + public org.xtreemfs.pbrpc.generatedinterfaces.MRC.getattrRequest build() { - if (result != null && !isInitialized()) { + org.xtreemfs.pbrpc.generatedinterfaces.MRC.getattrRequest result = buildPartial(); + if (!result.isInitialized()) { throw newUninitializedMessageException(result); } - return buildPartial(); - } - - private org.xtreemfs.pbrpc.generatedinterfaces.MRC.getattrRequest buildParsed() - throws com.google.protobuf.InvalidProtocolBufferException { - if (!isInitialized()) { - throw newUninitializedMessageException( - result).asInvalidProtocolBufferException(); - } - return buildPartial(); + return result; } - + public org.xtreemfs.pbrpc.generatedinterfaces.MRC.getattrRequest buildPartial() { - if (result == null) { - throw new IllegalStateException( - "build() has already been called on this Builder."); - } - org.xtreemfs.pbrpc.generatedinterfaces.MRC.getattrRequest returnMe = result; - result = null; - return returnMe; + org.xtreemfs.pbrpc.generatedinterfaces.MRC.getattrRequest result = new org.xtreemfs.pbrpc.generatedinterfaces.MRC.getattrRequest(this); + int from_bitField0_ = bitField0_; + int to_bitField0_ = 0; + if (((from_bitField0_ & 0x00000001) == 0x00000001)) { + to_bitField0_ |= 0x00000001; + } + result.volumeName_ = volumeName_; + if (((from_bitField0_ & 0x00000002) == 0x00000002)) { + to_bitField0_ |= 0x00000002; + } + result.path_ = path_; + if (((from_bitField0_ & 0x00000004) == 0x00000004)) { + to_bitField0_ |= 0x00000004; + } + result.knownEtag_ = knownEtag_; + result.bitField0_ = to_bitField0_; + onBuilt(); + return result; } - + public Builder mergeFrom(com.google.protobuf.Message other) { if (other instanceof org.xtreemfs.pbrpc.generatedinterfaces.MRC.getattrRequest) { return mergeFrom((org.xtreemfs.pbrpc.generatedinterfaces.MRC.getattrRequest)other); @@ -4565,14 +11771,18 @@ public final class MRC { return this; } } - + public Builder mergeFrom(org.xtreemfs.pbrpc.generatedinterfaces.MRC.getattrRequest other) { if (other == org.xtreemfs.pbrpc.generatedinterfaces.MRC.getattrRequest.getDefaultInstance()) return this; if (other.hasVolumeName()) { - setVolumeName(other.getVolumeName()); + bitField0_ |= 0x00000001; + volumeName_ = other.volumeName_; + onChanged(); } if (other.hasPath()) { - setPath(other.getPath()); + bitField0_ |= 0x00000002; + path_ = other.path_; + onChanged(); } if (other.hasKnownEtag()) { setKnownEtag(other.getKnownEtag()); @@ -4580,327 +11790,650 @@ public final class MRC { this.mergeUnknownFields(other.getUnknownFields()); return this; } - + + public final boolean isInitialized() { + if (!hasVolumeName()) { + + return false; + } + if (!hasPath()) { + + return false; + } + if (!hasKnownEtag()) { + + return false; + } + return true; + } + public Builder mergeFrom( com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - com.google.protobuf.UnknownFieldSet.Builder unknownFields = - com.google.protobuf.UnknownFieldSet.newBuilder( - this.getUnknownFields()); - while (true) { - int tag = input.readTag(); - switch (tag) { - case 0: - this.setUnknownFields(unknownFields.build()); - return this; - default: { - if (!parseUnknownField(input, unknownFields, - extensionRegistry, tag)) { - this.setUnknownFields(unknownFields.build()); - return this; - } - break; - } - case 10: { - setVolumeName(input.readString()); - break; - } - case 18: { - setPath(input.readString()); - break; - } - case 25: { - setKnownEtag(input.readFixed64()); - break; - } + org.xtreemfs.pbrpc.generatedinterfaces.MRC.getattrRequest parsedMessage = null; + try { + parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + parsedMessage = (org.xtreemfs.pbrpc.generatedinterfaces.MRC.getattrRequest) e.getUnfinishedMessage(); + throw e; + } finally { + if (parsedMessage != null) { + mergeFrom(parsedMessage); } } + return this; } - - + private int bitField0_; + // required string volume_name = 1; + private java.lang.Object volumeName_ = ""; + /** + * required string volume_name = 1; + * + *
+       * the volume name
+       * 
+ */ public boolean hasVolumeName() { - return result.hasVolumeName(); - } + return ((bitField0_ & 0x00000001) == 0x00000001); + } + /** + * required string volume_name = 1; + * + *
+       * the volume name
+       * 
+ */ public java.lang.String getVolumeName() { - return result.getVolumeName(); - } - public Builder setVolumeName(java.lang.String value) { + java.lang.Object ref = volumeName_; + if (!(ref instanceof java.lang.String)) { + java.lang.String s = ((com.google.protobuf.ByteString) ref) + .toStringUtf8(); + volumeName_ = s; + return s; + } else { + return (java.lang.String) ref; + } + } + /** + * required string volume_name = 1; + * + *
+       * the volume name
+       * 
+ */ + public com.google.protobuf.ByteString + getVolumeNameBytes() { + java.lang.Object ref = volumeName_; + if (ref instanceof String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + volumeName_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + /** + * required string volume_name = 1; + * + *
+       * the volume name
+       * 
+ */ + public Builder setVolumeName( + java.lang.String value) { if (value == null) { throw new NullPointerException(); } - result.hasVolumeName = true; - result.volumeName_ = value; - return this; - } + bitField0_ |= 0x00000001; + volumeName_ = value; + onChanged(); + return this; + } + /** + * required string volume_name = 1; + * + *
+       * the volume name
+       * 
+ */ public Builder clearVolumeName() { - result.hasVolumeName = false; - result.volumeName_ = getDefaultInstance().getVolumeName(); + bitField0_ = (bitField0_ & ~0x00000001); + volumeName_ = getDefaultInstance().getVolumeName(); + onChanged(); + return this; + } + /** + * required string volume_name = 1; + * + *
+       * the volume name
+       * 
+ */ + public Builder setVolumeNameBytes( + com.google.protobuf.ByteString value) { + if (value == null) { + throw new NullPointerException(); + } + bitField0_ |= 0x00000001; + volumeName_ = value; + onChanged(); return this; } - + // required string path = 2; + private java.lang.Object path_ = ""; + /** + * required string path = 2; + * + *
+       * the path to the file or directory, relative to the volume root
+       * 
+ */ public boolean hasPath() { - return result.hasPath(); - } + return ((bitField0_ & 0x00000002) == 0x00000002); + } + /** + * required string path = 2; + * + *
+       * the path to the file or directory, relative to the volume root
+       * 
+ */ public java.lang.String getPath() { - return result.getPath(); - } - public Builder setPath(java.lang.String value) { + java.lang.Object ref = path_; + if (!(ref instanceof java.lang.String)) { + java.lang.String s = ((com.google.protobuf.ByteString) ref) + .toStringUtf8(); + path_ = s; + return s; + } else { + return (java.lang.String) ref; + } + } + /** + * required string path = 2; + * + *
+       * the path to the file or directory, relative to the volume root
+       * 
+ */ + public com.google.protobuf.ByteString + getPathBytes() { + java.lang.Object ref = path_; + if (ref instanceof String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + path_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + /** + * required string path = 2; + * + *
+       * the path to the file or directory, relative to the volume root
+       * 
+ */ + public Builder setPath( + java.lang.String value) { if (value == null) { throw new NullPointerException(); } - result.hasPath = true; - result.path_ = value; - return this; - } + bitField0_ |= 0x00000002; + path_ = value; + onChanged(); + return this; + } + /** + * required string path = 2; + * + *
+       * the path to the file or directory, relative to the volume root
+       * 
+ */ public Builder clearPath() { - result.hasPath = false; - result.path_ = getDefaultInstance().getPath(); + bitField0_ = (bitField0_ & ~0x00000002); + path_ = getDefaultInstance().getPath(); + onChanged(); + return this; + } + /** + * required string path = 2; + * + *
+       * the path to the file or directory, relative to the volume root
+       * 
+ */ + public Builder setPathBytes( + com.google.protobuf.ByteString value) { + if (value == null) { + throw new NullPointerException(); + } + bitField0_ |= 0x00000002; + path_ = value; + onChanged(); return this; } - + // required fixed64 known_etag = 3; + private long knownEtag_ ; + /** + * required fixed64 known_etag = 3; + * + *
+       * an identification tag indicating the last known version of the attributes
+       * 
+ */ public boolean hasKnownEtag() { - return result.hasKnownEtag(); - } + return ((bitField0_ & 0x00000004) == 0x00000004); + } + /** + * required fixed64 known_etag = 3; + * + *
+       * an identification tag indicating the last known version of the attributes
+       * 
+ */ public long getKnownEtag() { - return result.getKnownEtag(); - } + return knownEtag_; + } + /** + * required fixed64 known_etag = 3; + * + *
+       * an identification tag indicating the last known version of the attributes
+       * 
+ */ public Builder setKnownEtag(long value) { - result.hasKnownEtag = true; - result.knownEtag_ = value; - return this; - } + bitField0_ |= 0x00000004; + knownEtag_ = value; + onChanged(); + return this; + } + /** + * required fixed64 known_etag = 3; + * + *
+       * an identification tag indicating the last known version of the attributes
+       * 
+ */ public Builder clearKnownEtag() { - result.hasKnownEtag = false; - result.knownEtag_ = 0L; + bitField0_ = (bitField0_ & ~0x00000004); + knownEtag_ = 0L; + onChanged(); return this; } - + // @@protoc_insertion_point(builder_scope:xtreemfs.pbrpc.getattrRequest) } - + static { defaultInstance = new getattrRequest(true); - org.xtreemfs.pbrpc.generatedinterfaces.MRC.internalForceInit(); defaultInstance.initFields(); } - + // @@protoc_insertion_point(class_scope:xtreemfs.pbrpc.getattrRequest) } - + + public interface getattrResponseOrBuilder + extends com.google.protobuf.MessageOrBuilder { + + // optional .xtreemfs.pbrpc.Stat stbuf = 1; + /** + * optional .xtreemfs.pbrpc.Stat stbuf = 1; + */ + boolean hasStbuf(); + /** + * optional .xtreemfs.pbrpc.Stat stbuf = 1; + */ + org.xtreemfs.pbrpc.generatedinterfaces.MRC.Stat getStbuf(); + /** + * optional .xtreemfs.pbrpc.Stat stbuf = 1; + */ + org.xtreemfs.pbrpc.generatedinterfaces.MRC.StatOrBuilder getStbufOrBuilder(); + } + /** + * Protobuf type {@code xtreemfs.pbrpc.getattrResponse} + * + *
+   * returns attributes of a file or directory
+   * 
+ */ public static final class getattrResponse extends - com.google.protobuf.GeneratedMessage { + com.google.protobuf.GeneratedMessage + implements getattrResponseOrBuilder { // Use getattrResponse.newBuilder() to construct. - private getattrResponse() { - initFields(); + private getattrResponse(com.google.protobuf.GeneratedMessage.Builder builder) { + super(builder); + this.unknownFields = builder.getUnknownFields(); } - private getattrResponse(boolean noInit) {} - + private getattrResponse(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); } + private static final getattrResponse defaultInstance; public static getattrResponse getDefaultInstance() { return defaultInstance; } - + public getattrResponse getDefaultInstanceForType() { return defaultInstance; } - + + private final com.google.protobuf.UnknownFieldSet unknownFields; + @java.lang.Override + public final com.google.protobuf.UnknownFieldSet + getUnknownFields() { + return this.unknownFields; + } + private getattrResponse( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + initFields(); + int mutable_bitField0_ = 0; + com.google.protobuf.UnknownFieldSet.Builder unknownFields = + com.google.protobuf.UnknownFieldSet.newBuilder(); + try { + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch (tag) { + case 0: + done = true; + break; + default: { + if (!parseUnknownField(input, unknownFields, + extensionRegistry, tag)) { + done = true; + } + break; + } + case 10: { + org.xtreemfs.pbrpc.generatedinterfaces.MRC.Stat.Builder subBuilder = null; + if (((bitField0_ & 0x00000001) == 0x00000001)) { + subBuilder = stbuf_.toBuilder(); + } + stbuf_ = input.readMessage(org.xtreemfs.pbrpc.generatedinterfaces.MRC.Stat.PARSER, extensionRegistry); + if (subBuilder != null) { + subBuilder.mergeFrom(stbuf_); + stbuf_ = subBuilder.buildPartial(); + } + bitField0_ |= 0x00000001; + break; + } + } + } + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(this); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException( + e.getMessage()).setUnfinishedMessage(this); + } finally { + this.unknownFields = unknownFields.build(); + makeExtensionsImmutable(); + } + } public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { return org.xtreemfs.pbrpc.generatedinterfaces.MRC.internal_static_xtreemfs_pbrpc_getattrResponse_descriptor; } - + protected com.google.protobuf.GeneratedMessage.FieldAccessorTable internalGetFieldAccessorTable() { - return org.xtreemfs.pbrpc.generatedinterfaces.MRC.internal_static_xtreemfs_pbrpc_getattrResponse_fieldAccessorTable; + return org.xtreemfs.pbrpc.generatedinterfaces.MRC.internal_static_xtreemfs_pbrpc_getattrResponse_fieldAccessorTable + .ensureFieldAccessorsInitialized( + org.xtreemfs.pbrpc.generatedinterfaces.MRC.getattrResponse.class, org.xtreemfs.pbrpc.generatedinterfaces.MRC.getattrResponse.Builder.class); + } + + public static com.google.protobuf.Parser PARSER = + new com.google.protobuf.AbstractParser() { + public getattrResponse parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return new getattrResponse(input, extensionRegistry); + } + }; + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; } - + + private int bitField0_; // optional .xtreemfs.pbrpc.Stat stbuf = 1; public static final int STBUF_FIELD_NUMBER = 1; - private boolean hasStbuf; private org.xtreemfs.pbrpc.generatedinterfaces.MRC.Stat stbuf_; - public boolean hasStbuf() { return hasStbuf; } - public org.xtreemfs.pbrpc.generatedinterfaces.MRC.Stat getStbuf() { return stbuf_; } - + /** + * optional .xtreemfs.pbrpc.Stat stbuf = 1; + */ + public boolean hasStbuf() { + return ((bitField0_ & 0x00000001) == 0x00000001); + } + /** + * optional .xtreemfs.pbrpc.Stat stbuf = 1; + */ + public org.xtreemfs.pbrpc.generatedinterfaces.MRC.Stat getStbuf() { + return stbuf_; + } + /** + * optional .xtreemfs.pbrpc.Stat stbuf = 1; + */ + public org.xtreemfs.pbrpc.generatedinterfaces.MRC.StatOrBuilder getStbufOrBuilder() { + return stbuf_; + } + private void initFields() { stbuf_ = org.xtreemfs.pbrpc.generatedinterfaces.MRC.Stat.getDefaultInstance(); } + private byte memoizedIsInitialized = -1; public final boolean isInitialized() { + byte isInitialized = memoizedIsInitialized; + if (isInitialized != -1) return isInitialized == 1; + if (hasStbuf()) { - if (!getStbuf().isInitialized()) return false; + if (!getStbuf().isInitialized()) { + memoizedIsInitialized = 0; + return false; + } } + memoizedIsInitialized = 1; return true; } - + public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException { getSerializedSize(); - if (hasStbuf()) { - output.writeMessage(1, getStbuf()); + if (((bitField0_ & 0x00000001) == 0x00000001)) { + output.writeMessage(1, stbuf_); } getUnknownFields().writeTo(output); } - + private int memoizedSerializedSize = -1; public int getSerializedSize() { int size = memoizedSerializedSize; if (size != -1) return size; - + size = 0; - if (hasStbuf()) { + if (((bitField0_ & 0x00000001) == 0x00000001)) { size += com.google.protobuf.CodedOutputStream - .computeMessageSize(1, getStbuf()); + .computeMessageSize(1, stbuf_); } size += getUnknownFields().getSerializedSize(); memoizedSerializedSize = size; return size; } - + + private static final long serialVersionUID = 0L; + @java.lang.Override + protected java.lang.Object writeReplace() + throws java.io.ObjectStreamException { + return super.writeReplace(); + } + public static org.xtreemfs.pbrpc.generatedinterfaces.MRC.getattrResponse parseFrom( com.google.protobuf.ByteString data) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data).buildParsed(); + return PARSER.parseFrom(data); } public static org.xtreemfs.pbrpc.generatedinterfaces.MRC.getattrResponse parseFrom( com.google.protobuf.ByteString data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(data, extensionRegistry); } public static org.xtreemfs.pbrpc.generatedinterfaces.MRC.getattrResponse parseFrom(byte[] data) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data).buildParsed(); + return PARSER.parseFrom(data); } public static org.xtreemfs.pbrpc.generatedinterfaces.MRC.getattrResponse parseFrom( byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(data, extensionRegistry); } public static org.xtreemfs.pbrpc.generatedinterfaces.MRC.getattrResponse parseFrom(java.io.InputStream input) throws java.io.IOException { - return newBuilder().mergeFrom(input).buildParsed(); + return PARSER.parseFrom(input); } public static org.xtreemfs.pbrpc.generatedinterfaces.MRC.getattrResponse parseFrom( java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - return newBuilder().mergeFrom(input, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(input, extensionRegistry); } public static org.xtreemfs.pbrpc.generatedinterfaces.MRC.getattrResponse parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException { - Builder builder = newBuilder(); - if (builder.mergeDelimitedFrom(input)) { - return builder.buildParsed(); - } else { - return null; - } + return PARSER.parseDelimitedFrom(input); } public static org.xtreemfs.pbrpc.generatedinterfaces.MRC.getattrResponse parseDelimitedFrom( java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - Builder builder = newBuilder(); - if (builder.mergeDelimitedFrom(input, extensionRegistry)) { - return builder.buildParsed(); - } else { - return null; - } + return PARSER.parseDelimitedFrom(input, extensionRegistry); } public static org.xtreemfs.pbrpc.generatedinterfaces.MRC.getattrResponse parseFrom( com.google.protobuf.CodedInputStream input) throws java.io.IOException { - return newBuilder().mergeFrom(input).buildParsed(); + return PARSER.parseFrom(input); } public static org.xtreemfs.pbrpc.generatedinterfaces.MRC.getattrResponse parseFrom( com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - return newBuilder().mergeFrom(input, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(input, extensionRegistry); } - + public static Builder newBuilder() { return Builder.create(); } public Builder newBuilderForType() { return newBuilder(); } public static Builder newBuilder(org.xtreemfs.pbrpc.generatedinterfaces.MRC.getattrResponse prototype) { return newBuilder().mergeFrom(prototype); } public Builder toBuilder() { return newBuilder(this); } - + + @java.lang.Override + protected Builder newBuilderForType( + com.google.protobuf.GeneratedMessage.BuilderParent parent) { + Builder builder = new Builder(parent); + return builder; + } + /** + * Protobuf type {@code xtreemfs.pbrpc.getattrResponse} + * + *
+     * returns attributes of a file or directory
+     * 
+ */ public static final class Builder extends - com.google.protobuf.GeneratedMessage.Builder { - private org.xtreemfs.pbrpc.generatedinterfaces.MRC.getattrResponse result; - + com.google.protobuf.GeneratedMessage.Builder + implements org.xtreemfs.pbrpc.generatedinterfaces.MRC.getattrResponseOrBuilder { + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return org.xtreemfs.pbrpc.generatedinterfaces.MRC.internal_static_xtreemfs_pbrpc_getattrResponse_descriptor; + } + + protected com.google.protobuf.GeneratedMessage.FieldAccessorTable + internalGetFieldAccessorTable() { + return org.xtreemfs.pbrpc.generatedinterfaces.MRC.internal_static_xtreemfs_pbrpc_getattrResponse_fieldAccessorTable + .ensureFieldAccessorsInitialized( + org.xtreemfs.pbrpc.generatedinterfaces.MRC.getattrResponse.class, org.xtreemfs.pbrpc.generatedinterfaces.MRC.getattrResponse.Builder.class); + } + // Construct using org.xtreemfs.pbrpc.generatedinterfaces.MRC.getattrResponse.newBuilder() - private Builder() {} - - private static Builder create() { - Builder builder = new Builder(); - builder.result = new org.xtreemfs.pbrpc.generatedinterfaces.MRC.getattrResponse(); - return builder; + private Builder() { + maybeForceBuilderInitialization(); } - - protected org.xtreemfs.pbrpc.generatedinterfaces.MRC.getattrResponse internalGetResult() { - return result; + + private Builder( + com.google.protobuf.GeneratedMessage.BuilderParent parent) { + super(parent); + maybeForceBuilderInitialization(); + } + private void maybeForceBuilderInitialization() { + if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) { + getStbufFieldBuilder(); + } + } + private static Builder create() { + return new Builder(); } - + public Builder clear() { - if (result == null) { - throw new IllegalStateException( - "Cannot call clear() after build()."); + super.clear(); + if (stbufBuilder_ == null) { + stbuf_ = org.xtreemfs.pbrpc.generatedinterfaces.MRC.Stat.getDefaultInstance(); + } else { + stbufBuilder_.clear(); } - result = new org.xtreemfs.pbrpc.generatedinterfaces.MRC.getattrResponse(); + bitField0_ = (bitField0_ & ~0x00000001); return this; } - + public Builder clone() { - return create().mergeFrom(result); + return create().mergeFrom(buildPartial()); } - + public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() { - return org.xtreemfs.pbrpc.generatedinterfaces.MRC.getattrResponse.getDescriptor(); + return org.xtreemfs.pbrpc.generatedinterfaces.MRC.internal_static_xtreemfs_pbrpc_getattrResponse_descriptor; } - + public org.xtreemfs.pbrpc.generatedinterfaces.MRC.getattrResponse getDefaultInstanceForType() { return org.xtreemfs.pbrpc.generatedinterfaces.MRC.getattrResponse.getDefaultInstance(); } - - public boolean isInitialized() { - return result.isInitialized(); - } + public org.xtreemfs.pbrpc.generatedinterfaces.MRC.getattrResponse build() { - if (result != null && !isInitialized()) { + org.xtreemfs.pbrpc.generatedinterfaces.MRC.getattrResponse result = buildPartial(); + if (!result.isInitialized()) { throw newUninitializedMessageException(result); } - return buildPartial(); - } - - private org.xtreemfs.pbrpc.generatedinterfaces.MRC.getattrResponse buildParsed() - throws com.google.protobuf.InvalidProtocolBufferException { - if (!isInitialized()) { - throw newUninitializedMessageException( - result).asInvalidProtocolBufferException(); - } - return buildPartial(); + return result; } - + public org.xtreemfs.pbrpc.generatedinterfaces.MRC.getattrResponse buildPartial() { - if (result == null) { - throw new IllegalStateException( - "build() has already been called on this Builder."); + org.xtreemfs.pbrpc.generatedinterfaces.MRC.getattrResponse result = new org.xtreemfs.pbrpc.generatedinterfaces.MRC.getattrResponse(this); + int from_bitField0_ = bitField0_; + int to_bitField0_ = 0; + if (((from_bitField0_ & 0x00000001) == 0x00000001)) { + to_bitField0_ |= 0x00000001; + } + if (stbufBuilder_ == null) { + result.stbuf_ = stbuf_; + } else { + result.stbuf_ = stbufBuilder_.build(); } - org.xtreemfs.pbrpc.generatedinterfaces.MRC.getattrResponse returnMe = result; - result = null; - return returnMe; + result.bitField0_ = to_bitField0_; + onBuilt(); + return result; } - + public Builder mergeFrom(com.google.protobuf.Message other) { if (other instanceof org.xtreemfs.pbrpc.generatedinterfaces.MRC.getattrResponse) { return mergeFrom((org.xtreemfs.pbrpc.generatedinterfaces.MRC.getattrResponse)other); @@ -4909,7 +12442,7 @@ public final class MRC { return this; } } - + public Builder mergeFrom(org.xtreemfs.pbrpc.generatedinterfaces.MRC.getattrResponse other) { if (other == org.xtreemfs.pbrpc.generatedinterfaces.MRC.getattrResponse.getDefaultInstance()) return this; if (other.hasStbuf()) { @@ -4918,328 +12451,753 @@ public final class MRC { this.mergeUnknownFields(other.getUnknownFields()); return this; } - + + public final boolean isInitialized() { + if (hasStbuf()) { + if (!getStbuf().isInitialized()) { + + return false; + } + } + return true; + } + public Builder mergeFrom( com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - com.google.protobuf.UnknownFieldSet.Builder unknownFields = - com.google.protobuf.UnknownFieldSet.newBuilder( - this.getUnknownFields()); - while (true) { - int tag = input.readTag(); - switch (tag) { - case 0: - this.setUnknownFields(unknownFields.build()); - return this; - default: { - if (!parseUnknownField(input, unknownFields, - extensionRegistry, tag)) { - this.setUnknownFields(unknownFields.build()); - return this; - } - break; - } - case 10: { - org.xtreemfs.pbrpc.generatedinterfaces.MRC.Stat.Builder subBuilder = org.xtreemfs.pbrpc.generatedinterfaces.MRC.Stat.newBuilder(); - if (hasStbuf()) { - subBuilder.mergeFrom(getStbuf()); - } - input.readMessage(subBuilder, extensionRegistry); - setStbuf(subBuilder.buildPartial()); - break; - } + org.xtreemfs.pbrpc.generatedinterfaces.MRC.getattrResponse parsedMessage = null; + try { + parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + parsedMessage = (org.xtreemfs.pbrpc.generatedinterfaces.MRC.getattrResponse) e.getUnfinishedMessage(); + throw e; + } finally { + if (parsedMessage != null) { + mergeFrom(parsedMessage); } } + return this; } - - + private int bitField0_; + // optional .xtreemfs.pbrpc.Stat stbuf = 1; + private org.xtreemfs.pbrpc.generatedinterfaces.MRC.Stat stbuf_ = org.xtreemfs.pbrpc.generatedinterfaces.MRC.Stat.getDefaultInstance(); + private com.google.protobuf.SingleFieldBuilder< + org.xtreemfs.pbrpc.generatedinterfaces.MRC.Stat, org.xtreemfs.pbrpc.generatedinterfaces.MRC.Stat.Builder, org.xtreemfs.pbrpc.generatedinterfaces.MRC.StatOrBuilder> stbufBuilder_; + /** + * optional .xtreemfs.pbrpc.Stat stbuf = 1; + */ public boolean hasStbuf() { - return result.hasStbuf(); + return ((bitField0_ & 0x00000001) == 0x00000001); } + /** + * optional .xtreemfs.pbrpc.Stat stbuf = 1; + */ public org.xtreemfs.pbrpc.generatedinterfaces.MRC.Stat getStbuf() { - return result.getStbuf(); + if (stbufBuilder_ == null) { + return stbuf_; + } else { + return stbufBuilder_.getMessage(); + } } + /** + * optional .xtreemfs.pbrpc.Stat stbuf = 1; + */ public Builder setStbuf(org.xtreemfs.pbrpc.generatedinterfaces.MRC.Stat value) { - if (value == null) { - throw new NullPointerException(); + if (stbufBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + stbuf_ = value; + onChanged(); + } else { + stbufBuilder_.setMessage(value); } - result.hasStbuf = true; - result.stbuf_ = value; + bitField0_ |= 0x00000001; return this; } - public Builder setStbuf(org.xtreemfs.pbrpc.generatedinterfaces.MRC.Stat.Builder builderForValue) { - result.hasStbuf = true; - result.stbuf_ = builderForValue.build(); + /** + * optional .xtreemfs.pbrpc.Stat stbuf = 1; + */ + public Builder setStbuf( + org.xtreemfs.pbrpc.generatedinterfaces.MRC.Stat.Builder builderForValue) { + if (stbufBuilder_ == null) { + stbuf_ = builderForValue.build(); + onChanged(); + } else { + stbufBuilder_.setMessage(builderForValue.build()); + } + bitField0_ |= 0x00000001; return this; } + /** + * optional .xtreemfs.pbrpc.Stat stbuf = 1; + */ public Builder mergeStbuf(org.xtreemfs.pbrpc.generatedinterfaces.MRC.Stat value) { - if (result.hasStbuf() && - result.stbuf_ != org.xtreemfs.pbrpc.generatedinterfaces.MRC.Stat.getDefaultInstance()) { - result.stbuf_ = - org.xtreemfs.pbrpc.generatedinterfaces.MRC.Stat.newBuilder(result.stbuf_).mergeFrom(value).buildPartial(); + if (stbufBuilder_ == null) { + if (((bitField0_ & 0x00000001) == 0x00000001) && + stbuf_ != org.xtreemfs.pbrpc.generatedinterfaces.MRC.Stat.getDefaultInstance()) { + stbuf_ = + org.xtreemfs.pbrpc.generatedinterfaces.MRC.Stat.newBuilder(stbuf_).mergeFrom(value).buildPartial(); + } else { + stbuf_ = value; + } + onChanged(); } else { - result.stbuf_ = value; + stbufBuilder_.mergeFrom(value); } - result.hasStbuf = true; + bitField0_ |= 0x00000001; return this; } + /** + * optional .xtreemfs.pbrpc.Stat stbuf = 1; + */ public Builder clearStbuf() { - result.hasStbuf = false; - result.stbuf_ = org.xtreemfs.pbrpc.generatedinterfaces.MRC.Stat.getDefaultInstance(); + if (stbufBuilder_ == null) { + stbuf_ = org.xtreemfs.pbrpc.generatedinterfaces.MRC.Stat.getDefaultInstance(); + onChanged(); + } else { + stbufBuilder_.clear(); + } + bitField0_ = (bitField0_ & ~0x00000001); return this; } - + /** + * optional .xtreemfs.pbrpc.Stat stbuf = 1; + */ + public org.xtreemfs.pbrpc.generatedinterfaces.MRC.Stat.Builder getStbufBuilder() { + bitField0_ |= 0x00000001; + onChanged(); + return getStbufFieldBuilder().getBuilder(); + } + /** + * optional .xtreemfs.pbrpc.Stat stbuf = 1; + */ + public org.xtreemfs.pbrpc.generatedinterfaces.MRC.StatOrBuilder getStbufOrBuilder() { + if (stbufBuilder_ != null) { + return stbufBuilder_.getMessageOrBuilder(); + } else { + return stbuf_; + } + } + /** + * optional .xtreemfs.pbrpc.Stat stbuf = 1; + */ + private com.google.protobuf.SingleFieldBuilder< + org.xtreemfs.pbrpc.generatedinterfaces.MRC.Stat, org.xtreemfs.pbrpc.generatedinterfaces.MRC.Stat.Builder, org.xtreemfs.pbrpc.generatedinterfaces.MRC.StatOrBuilder> + getStbufFieldBuilder() { + if (stbufBuilder_ == null) { + stbufBuilder_ = new com.google.protobuf.SingleFieldBuilder< + org.xtreemfs.pbrpc.generatedinterfaces.MRC.Stat, org.xtreemfs.pbrpc.generatedinterfaces.MRC.Stat.Builder, org.xtreemfs.pbrpc.generatedinterfaces.MRC.StatOrBuilder>( + stbuf_, + getParentForChildren(), + isClean()); + stbuf_ = null; + } + return stbufBuilder_; + } + // @@protoc_insertion_point(builder_scope:xtreemfs.pbrpc.getattrResponse) } - + static { defaultInstance = new getattrResponse(true); - org.xtreemfs.pbrpc.generatedinterfaces.MRC.internalForceInit(); defaultInstance.initFields(); } - + // @@protoc_insertion_point(class_scope:xtreemfs.pbrpc.getattrResponse) } - + + public interface getxattrRequestOrBuilder + extends com.google.protobuf.MessageOrBuilder { + + // required string volume_name = 1; + /** + * required string volume_name = 1; + * + *
+     * the volume name
+     * 
+ */ + boolean hasVolumeName(); + /** + * required string volume_name = 1; + * + *
+     * the volume name
+     * 
+ */ + java.lang.String getVolumeName(); + /** + * required string volume_name = 1; + * + *
+     * the volume name
+     * 
+ */ + com.google.protobuf.ByteString + getVolumeNameBytes(); + + // required string path = 2; + /** + * required string path = 2; + * + *
+     * the path to the file or directory, relative to the volume root
+     * 
+ */ + boolean hasPath(); + /** + * required string path = 2; + * + *
+     * the path to the file or directory, relative to the volume root
+     * 
+ */ + java.lang.String getPath(); + /** + * required string path = 2; + * + *
+     * the path to the file or directory, relative to the volume root
+     * 
+ */ + com.google.protobuf.ByteString + getPathBytes(); + + // required string name = 3; + /** + * required string name = 3; + * + *
+     * the name of the attribute to retrieve
+     * 
+ */ + boolean hasName(); + /** + * required string name = 3; + * + *
+     * the name of the attribute to retrieve
+     * 
+ */ + java.lang.String getName(); + /** + * required string name = 3; + * + *
+     * the name of the attribute to retrieve
+     * 
+ */ + com.google.protobuf.ByteString + getNameBytes(); + } + /** + * Protobuf type {@code xtreemfs.pbrpc.getxattrRequest} + * + *
+   * requests extended attributes of a file or directory
+   * 
+ */ public static final class getxattrRequest extends - com.google.protobuf.GeneratedMessage { + com.google.protobuf.GeneratedMessage + implements getxattrRequestOrBuilder { // Use getxattrRequest.newBuilder() to construct. - private getxattrRequest() { - initFields(); + private getxattrRequest(com.google.protobuf.GeneratedMessage.Builder builder) { + super(builder); + this.unknownFields = builder.getUnknownFields(); } - private getxattrRequest(boolean noInit) {} - + private getxattrRequest(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); } + private static final getxattrRequest defaultInstance; public static getxattrRequest getDefaultInstance() { return defaultInstance; } - + public getxattrRequest getDefaultInstanceForType() { return defaultInstance; } - + + private final com.google.protobuf.UnknownFieldSet unknownFields; + @java.lang.Override + public final com.google.protobuf.UnknownFieldSet + getUnknownFields() { + return this.unknownFields; + } + private getxattrRequest( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + initFields(); + int mutable_bitField0_ = 0; + com.google.protobuf.UnknownFieldSet.Builder unknownFields = + com.google.protobuf.UnknownFieldSet.newBuilder(); + try { + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch (tag) { + case 0: + done = true; + break; + default: { + if (!parseUnknownField(input, unknownFields, + extensionRegistry, tag)) { + done = true; + } + break; + } + case 10: { + bitField0_ |= 0x00000001; + volumeName_ = input.readBytes(); + break; + } + case 18: { + bitField0_ |= 0x00000002; + path_ = input.readBytes(); + break; + } + case 26: { + bitField0_ |= 0x00000004; + name_ = input.readBytes(); + break; + } + } + } + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(this); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException( + e.getMessage()).setUnfinishedMessage(this); + } finally { + this.unknownFields = unknownFields.build(); + makeExtensionsImmutable(); + } + } public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { return org.xtreemfs.pbrpc.generatedinterfaces.MRC.internal_static_xtreemfs_pbrpc_getxattrRequest_descriptor; } - + protected com.google.protobuf.GeneratedMessage.FieldAccessorTable internalGetFieldAccessorTable() { - return org.xtreemfs.pbrpc.generatedinterfaces.MRC.internal_static_xtreemfs_pbrpc_getxattrRequest_fieldAccessorTable; + return org.xtreemfs.pbrpc.generatedinterfaces.MRC.internal_static_xtreemfs_pbrpc_getxattrRequest_fieldAccessorTable + .ensureFieldAccessorsInitialized( + org.xtreemfs.pbrpc.generatedinterfaces.MRC.getxattrRequest.class, org.xtreemfs.pbrpc.generatedinterfaces.MRC.getxattrRequest.Builder.class); + } + + public static com.google.protobuf.Parser PARSER = + new com.google.protobuf.AbstractParser() { + public getxattrRequest parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return new getxattrRequest(input, extensionRegistry); + } + }; + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; } - + + private int bitField0_; // required string volume_name = 1; public static final int VOLUME_NAME_FIELD_NUMBER = 1; - private boolean hasVolumeName; - private java.lang.String volumeName_ = ""; - public boolean hasVolumeName() { return hasVolumeName; } - public java.lang.String getVolumeName() { return volumeName_; } - + private java.lang.Object volumeName_; + /** + * required string volume_name = 1; + * + *
+     * the volume name
+     * 
+ */ + public boolean hasVolumeName() { + return ((bitField0_ & 0x00000001) == 0x00000001); + } + /** + * required string volume_name = 1; + * + *
+     * the volume name
+     * 
+ */ + public java.lang.String getVolumeName() { + java.lang.Object ref = volumeName_; + if (ref instanceof java.lang.String) { + return (java.lang.String) ref; + } else { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + if (bs.isValidUtf8()) { + volumeName_ = s; + } + return s; + } + } + /** + * required string volume_name = 1; + * + *
+     * the volume name
+     * 
+ */ + public com.google.protobuf.ByteString + getVolumeNameBytes() { + java.lang.Object ref = volumeName_; + if (ref instanceof java.lang.String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + volumeName_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + // required string path = 2; public static final int PATH_FIELD_NUMBER = 2; - private boolean hasPath; - private java.lang.String path_ = ""; - public boolean hasPath() { return hasPath; } - public java.lang.String getPath() { return path_; } - + private java.lang.Object path_; + /** + * required string path = 2; + * + *
+     * the path to the file or directory, relative to the volume root
+     * 
+ */ + public boolean hasPath() { + return ((bitField0_ & 0x00000002) == 0x00000002); + } + /** + * required string path = 2; + * + *
+     * the path to the file or directory, relative to the volume root
+     * 
+ */ + public java.lang.String getPath() { + java.lang.Object ref = path_; + if (ref instanceof java.lang.String) { + return (java.lang.String) ref; + } else { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + if (bs.isValidUtf8()) { + path_ = s; + } + return s; + } + } + /** + * required string path = 2; + * + *
+     * the path to the file or directory, relative to the volume root
+     * 
+ */ + public com.google.protobuf.ByteString + getPathBytes() { + java.lang.Object ref = path_; + if (ref instanceof java.lang.String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + path_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + // required string name = 3; public static final int NAME_FIELD_NUMBER = 3; - private boolean hasName; - private java.lang.String name_ = ""; - public boolean hasName() { return hasName; } - public java.lang.String getName() { return name_; } - + private java.lang.Object name_; + /** + * required string name = 3; + * + *
+     * the name of the attribute to retrieve
+     * 
+ */ + public boolean hasName() { + return ((bitField0_ & 0x00000004) == 0x00000004); + } + /** + * required string name = 3; + * + *
+     * the name of the attribute to retrieve
+     * 
+ */ + public java.lang.String getName() { + java.lang.Object ref = name_; + if (ref instanceof java.lang.String) { + return (java.lang.String) ref; + } else { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + if (bs.isValidUtf8()) { + name_ = s; + } + return s; + } + } + /** + * required string name = 3; + * + *
+     * the name of the attribute to retrieve
+     * 
+ */ + public com.google.protobuf.ByteString + getNameBytes() { + java.lang.Object ref = name_; + if (ref instanceof java.lang.String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + name_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + private void initFields() { + volumeName_ = ""; + path_ = ""; + name_ = ""; } + private byte memoizedIsInitialized = -1; public final boolean isInitialized() { - if (!hasVolumeName) return false; - if (!hasPath) return false; - if (!hasName) return false; + byte isInitialized = memoizedIsInitialized; + if (isInitialized != -1) return isInitialized == 1; + + if (!hasVolumeName()) { + memoizedIsInitialized = 0; + return false; + } + if (!hasPath()) { + memoizedIsInitialized = 0; + return false; + } + if (!hasName()) { + memoizedIsInitialized = 0; + return false; + } + memoizedIsInitialized = 1; return true; } - + public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException { getSerializedSize(); - if (hasVolumeName()) { - output.writeString(1, getVolumeName()); + if (((bitField0_ & 0x00000001) == 0x00000001)) { + output.writeBytes(1, getVolumeNameBytes()); } - if (hasPath()) { - output.writeString(2, getPath()); + if (((bitField0_ & 0x00000002) == 0x00000002)) { + output.writeBytes(2, getPathBytes()); } - if (hasName()) { - output.writeString(3, getName()); + if (((bitField0_ & 0x00000004) == 0x00000004)) { + output.writeBytes(3, getNameBytes()); } getUnknownFields().writeTo(output); } - + private int memoizedSerializedSize = -1; public int getSerializedSize() { int size = memoizedSerializedSize; if (size != -1) return size; - + size = 0; - if (hasVolumeName()) { + if (((bitField0_ & 0x00000001) == 0x00000001)) { size += com.google.protobuf.CodedOutputStream - .computeStringSize(1, getVolumeName()); + .computeBytesSize(1, getVolumeNameBytes()); } - if (hasPath()) { + if (((bitField0_ & 0x00000002) == 0x00000002)) { size += com.google.protobuf.CodedOutputStream - .computeStringSize(2, getPath()); + .computeBytesSize(2, getPathBytes()); } - if (hasName()) { + if (((bitField0_ & 0x00000004) == 0x00000004)) { size += com.google.protobuf.CodedOutputStream - .computeStringSize(3, getName()); + .computeBytesSize(3, getNameBytes()); } size += getUnknownFields().getSerializedSize(); memoizedSerializedSize = size; return size; } - + + private static final long serialVersionUID = 0L; + @java.lang.Override + protected java.lang.Object writeReplace() + throws java.io.ObjectStreamException { + return super.writeReplace(); + } + public static org.xtreemfs.pbrpc.generatedinterfaces.MRC.getxattrRequest parseFrom( com.google.protobuf.ByteString data) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data).buildParsed(); + return PARSER.parseFrom(data); } public static org.xtreemfs.pbrpc.generatedinterfaces.MRC.getxattrRequest parseFrom( com.google.protobuf.ByteString data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(data, extensionRegistry); } public static org.xtreemfs.pbrpc.generatedinterfaces.MRC.getxattrRequest parseFrom(byte[] data) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data).buildParsed(); + return PARSER.parseFrom(data); } public static org.xtreemfs.pbrpc.generatedinterfaces.MRC.getxattrRequest parseFrom( byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(data, extensionRegistry); } public static org.xtreemfs.pbrpc.generatedinterfaces.MRC.getxattrRequest parseFrom(java.io.InputStream input) throws java.io.IOException { - return newBuilder().mergeFrom(input).buildParsed(); + return PARSER.parseFrom(input); } public static org.xtreemfs.pbrpc.generatedinterfaces.MRC.getxattrRequest parseFrom( java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - return newBuilder().mergeFrom(input, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(input, extensionRegistry); } public static org.xtreemfs.pbrpc.generatedinterfaces.MRC.getxattrRequest parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException { - Builder builder = newBuilder(); - if (builder.mergeDelimitedFrom(input)) { - return builder.buildParsed(); - } else { - return null; - } + return PARSER.parseDelimitedFrom(input); } public static org.xtreemfs.pbrpc.generatedinterfaces.MRC.getxattrRequest parseDelimitedFrom( java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - Builder builder = newBuilder(); - if (builder.mergeDelimitedFrom(input, extensionRegistry)) { - return builder.buildParsed(); - } else { - return null; - } + return PARSER.parseDelimitedFrom(input, extensionRegistry); } public static org.xtreemfs.pbrpc.generatedinterfaces.MRC.getxattrRequest parseFrom( com.google.protobuf.CodedInputStream input) throws java.io.IOException { - return newBuilder().mergeFrom(input).buildParsed(); + return PARSER.parseFrom(input); } public static org.xtreemfs.pbrpc.generatedinterfaces.MRC.getxattrRequest parseFrom( com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - return newBuilder().mergeFrom(input, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(input, extensionRegistry); } - + public static Builder newBuilder() { return Builder.create(); } public Builder newBuilderForType() { return newBuilder(); } public static Builder newBuilder(org.xtreemfs.pbrpc.generatedinterfaces.MRC.getxattrRequest prototype) { return newBuilder().mergeFrom(prototype); } public Builder toBuilder() { return newBuilder(this); } - + + @java.lang.Override + protected Builder newBuilderForType( + com.google.protobuf.GeneratedMessage.BuilderParent parent) { + Builder builder = new Builder(parent); + return builder; + } + /** + * Protobuf type {@code xtreemfs.pbrpc.getxattrRequest} + * + *
+     * requests extended attributes of a file or directory
+     * 
+ */ public static final class Builder extends - com.google.protobuf.GeneratedMessage.Builder { - private org.xtreemfs.pbrpc.generatedinterfaces.MRC.getxattrRequest result; - + com.google.protobuf.GeneratedMessage.Builder + implements org.xtreemfs.pbrpc.generatedinterfaces.MRC.getxattrRequestOrBuilder { + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return org.xtreemfs.pbrpc.generatedinterfaces.MRC.internal_static_xtreemfs_pbrpc_getxattrRequest_descriptor; + } + + protected com.google.protobuf.GeneratedMessage.FieldAccessorTable + internalGetFieldAccessorTable() { + return org.xtreemfs.pbrpc.generatedinterfaces.MRC.internal_static_xtreemfs_pbrpc_getxattrRequest_fieldAccessorTable + .ensureFieldAccessorsInitialized( + org.xtreemfs.pbrpc.generatedinterfaces.MRC.getxattrRequest.class, org.xtreemfs.pbrpc.generatedinterfaces.MRC.getxattrRequest.Builder.class); + } + // Construct using org.xtreemfs.pbrpc.generatedinterfaces.MRC.getxattrRequest.newBuilder() - private Builder() {} - - private static Builder create() { - Builder builder = new Builder(); - builder.result = new org.xtreemfs.pbrpc.generatedinterfaces.MRC.getxattrRequest(); - return builder; + private Builder() { + maybeForceBuilderInitialization(); } - - protected org.xtreemfs.pbrpc.generatedinterfaces.MRC.getxattrRequest internalGetResult() { - return result; + + private Builder( + com.google.protobuf.GeneratedMessage.BuilderParent parent) { + super(parent); + maybeForceBuilderInitialization(); } - - public Builder clear() { - if (result == null) { - throw new IllegalStateException( - "Cannot call clear() after build()."); + private void maybeForceBuilderInitialization() { + if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) { } - result = new org.xtreemfs.pbrpc.generatedinterfaces.MRC.getxattrRequest(); + } + private static Builder create() { + return new Builder(); + } + + public Builder clear() { + super.clear(); + volumeName_ = ""; + bitField0_ = (bitField0_ & ~0x00000001); + path_ = ""; + bitField0_ = (bitField0_ & ~0x00000002); + name_ = ""; + bitField0_ = (bitField0_ & ~0x00000004); return this; } - + public Builder clone() { - return create().mergeFrom(result); + return create().mergeFrom(buildPartial()); } - + public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() { - return org.xtreemfs.pbrpc.generatedinterfaces.MRC.getxattrRequest.getDescriptor(); + return org.xtreemfs.pbrpc.generatedinterfaces.MRC.internal_static_xtreemfs_pbrpc_getxattrRequest_descriptor; } - + public org.xtreemfs.pbrpc.generatedinterfaces.MRC.getxattrRequest getDefaultInstanceForType() { return org.xtreemfs.pbrpc.generatedinterfaces.MRC.getxattrRequest.getDefaultInstance(); } - - public boolean isInitialized() { - return result.isInitialized(); - } + public org.xtreemfs.pbrpc.generatedinterfaces.MRC.getxattrRequest build() { - if (result != null && !isInitialized()) { + org.xtreemfs.pbrpc.generatedinterfaces.MRC.getxattrRequest result = buildPartial(); + if (!result.isInitialized()) { throw newUninitializedMessageException(result); } - return buildPartial(); - } - - private org.xtreemfs.pbrpc.generatedinterfaces.MRC.getxattrRequest buildParsed() - throws com.google.protobuf.InvalidProtocolBufferException { - if (!isInitialized()) { - throw newUninitializedMessageException( - result).asInvalidProtocolBufferException(); - } - return buildPartial(); + return result; } - + public org.xtreemfs.pbrpc.generatedinterfaces.MRC.getxattrRequest buildPartial() { - if (result == null) { - throw new IllegalStateException( - "build() has already been called on this Builder."); - } - org.xtreemfs.pbrpc.generatedinterfaces.MRC.getxattrRequest returnMe = result; - result = null; - return returnMe; + org.xtreemfs.pbrpc.generatedinterfaces.MRC.getxattrRequest result = new org.xtreemfs.pbrpc.generatedinterfaces.MRC.getxattrRequest(this); + int from_bitField0_ = bitField0_; + int to_bitField0_ = 0; + if (((from_bitField0_ & 0x00000001) == 0x00000001)) { + to_bitField0_ |= 0x00000001; + } + result.volumeName_ = volumeName_; + if (((from_bitField0_ & 0x00000002) == 0x00000002)) { + to_bitField0_ |= 0x00000002; + } + result.path_ = path_; + if (((from_bitField0_ & 0x00000004) == 0x00000004)) { + to_bitField0_ |= 0x00000004; + } + result.name_ = name_; + result.bitField0_ = to_bitField0_; + onBuilt(); + return result; } - + public Builder mergeFrom(com.google.protobuf.Message other) { if (other instanceof org.xtreemfs.pbrpc.generatedinterfaces.MRC.getxattrRequest) { return mergeFrom((org.xtreemfs.pbrpc.generatedinterfaces.MRC.getxattrRequest)other); @@ -5248,356 +13206,784 @@ public final class MRC { return this; } } - + public Builder mergeFrom(org.xtreemfs.pbrpc.generatedinterfaces.MRC.getxattrRequest other) { if (other == org.xtreemfs.pbrpc.generatedinterfaces.MRC.getxattrRequest.getDefaultInstance()) return this; if (other.hasVolumeName()) { - setVolumeName(other.getVolumeName()); + bitField0_ |= 0x00000001; + volumeName_ = other.volumeName_; + onChanged(); } if (other.hasPath()) { - setPath(other.getPath()); + bitField0_ |= 0x00000002; + path_ = other.path_; + onChanged(); } if (other.hasName()) { - setName(other.getName()); + bitField0_ |= 0x00000004; + name_ = other.name_; + onChanged(); } this.mergeUnknownFields(other.getUnknownFields()); return this; } - + + public final boolean isInitialized() { + if (!hasVolumeName()) { + + return false; + } + if (!hasPath()) { + + return false; + } + if (!hasName()) { + + return false; + } + return true; + } + public Builder mergeFrom( com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - com.google.protobuf.UnknownFieldSet.Builder unknownFields = - com.google.protobuf.UnknownFieldSet.newBuilder( - this.getUnknownFields()); - while (true) { - int tag = input.readTag(); - switch (tag) { - case 0: - this.setUnknownFields(unknownFields.build()); - return this; - default: { - if (!parseUnknownField(input, unknownFields, - extensionRegistry, tag)) { - this.setUnknownFields(unknownFields.build()); - return this; - } - break; - } - case 10: { - setVolumeName(input.readString()); - break; - } - case 18: { - setPath(input.readString()); - break; - } - case 26: { - setName(input.readString()); - break; - } + org.xtreemfs.pbrpc.generatedinterfaces.MRC.getxattrRequest parsedMessage = null; + try { + parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + parsedMessage = (org.xtreemfs.pbrpc.generatedinterfaces.MRC.getxattrRequest) e.getUnfinishedMessage(); + throw e; + } finally { + if (parsedMessage != null) { + mergeFrom(parsedMessage); } } + return this; } - - + private int bitField0_; + // required string volume_name = 1; + private java.lang.Object volumeName_ = ""; + /** + * required string volume_name = 1; + * + *
+       * the volume name
+       * 
+ */ public boolean hasVolumeName() { - return result.hasVolumeName(); - } + return ((bitField0_ & 0x00000001) == 0x00000001); + } + /** + * required string volume_name = 1; + * + *
+       * the volume name
+       * 
+ */ public java.lang.String getVolumeName() { - return result.getVolumeName(); - } - public Builder setVolumeName(java.lang.String value) { + java.lang.Object ref = volumeName_; + if (!(ref instanceof java.lang.String)) { + java.lang.String s = ((com.google.protobuf.ByteString) ref) + .toStringUtf8(); + volumeName_ = s; + return s; + } else { + return (java.lang.String) ref; + } + } + /** + * required string volume_name = 1; + * + *
+       * the volume name
+       * 
+ */ + public com.google.protobuf.ByteString + getVolumeNameBytes() { + java.lang.Object ref = volumeName_; + if (ref instanceof String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + volumeName_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + /** + * required string volume_name = 1; + * + *
+       * the volume name
+       * 
+ */ + public Builder setVolumeName( + java.lang.String value) { if (value == null) { throw new NullPointerException(); } - result.hasVolumeName = true; - result.volumeName_ = value; - return this; - } + bitField0_ |= 0x00000001; + volumeName_ = value; + onChanged(); + return this; + } + /** + * required string volume_name = 1; + * + *
+       * the volume name
+       * 
+ */ public Builder clearVolumeName() { - result.hasVolumeName = false; - result.volumeName_ = getDefaultInstance().getVolumeName(); + bitField0_ = (bitField0_ & ~0x00000001); + volumeName_ = getDefaultInstance().getVolumeName(); + onChanged(); + return this; + } + /** + * required string volume_name = 1; + * + *
+       * the volume name
+       * 
+ */ + public Builder setVolumeNameBytes( + com.google.protobuf.ByteString value) { + if (value == null) { + throw new NullPointerException(); + } + bitField0_ |= 0x00000001; + volumeName_ = value; + onChanged(); return this; } - + // required string path = 2; + private java.lang.Object path_ = ""; + /** + * required string path = 2; + * + *
+       * the path to the file or directory, relative to the volume root
+       * 
+ */ public boolean hasPath() { - return result.hasPath(); - } + return ((bitField0_ & 0x00000002) == 0x00000002); + } + /** + * required string path = 2; + * + *
+       * the path to the file or directory, relative to the volume root
+       * 
+ */ public java.lang.String getPath() { - return result.getPath(); - } - public Builder setPath(java.lang.String value) { + java.lang.Object ref = path_; + if (!(ref instanceof java.lang.String)) { + java.lang.String s = ((com.google.protobuf.ByteString) ref) + .toStringUtf8(); + path_ = s; + return s; + } else { + return (java.lang.String) ref; + } + } + /** + * required string path = 2; + * + *
+       * the path to the file or directory, relative to the volume root
+       * 
+ */ + public com.google.protobuf.ByteString + getPathBytes() { + java.lang.Object ref = path_; + if (ref instanceof String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + path_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + /** + * required string path = 2; + * + *
+       * the path to the file or directory, relative to the volume root
+       * 
+ */ + public Builder setPath( + java.lang.String value) { if (value == null) { throw new NullPointerException(); } - result.hasPath = true; - result.path_ = value; - return this; - } + bitField0_ |= 0x00000002; + path_ = value; + onChanged(); + return this; + } + /** + * required string path = 2; + * + *
+       * the path to the file or directory, relative to the volume root
+       * 
+ */ public Builder clearPath() { - result.hasPath = false; - result.path_ = getDefaultInstance().getPath(); + bitField0_ = (bitField0_ & ~0x00000002); + path_ = getDefaultInstance().getPath(); + onChanged(); + return this; + } + /** + * required string path = 2; + * + *
+       * the path to the file or directory, relative to the volume root
+       * 
+ */ + public Builder setPathBytes( + com.google.protobuf.ByteString value) { + if (value == null) { + throw new NullPointerException(); + } + bitField0_ |= 0x00000002; + path_ = value; + onChanged(); return this; } - + // required string name = 3; + private java.lang.Object name_ = ""; + /** + * required string name = 3; + * + *
+       * the name of the attribute to retrieve
+       * 
+ */ public boolean hasName() { - return result.hasName(); - } + return ((bitField0_ & 0x00000004) == 0x00000004); + } + /** + * required string name = 3; + * + *
+       * the name of the attribute to retrieve
+       * 
+ */ public java.lang.String getName() { - return result.getName(); - } - public Builder setName(java.lang.String value) { + java.lang.Object ref = name_; + if (!(ref instanceof java.lang.String)) { + java.lang.String s = ((com.google.protobuf.ByteString) ref) + .toStringUtf8(); + name_ = s; + return s; + } else { + return (java.lang.String) ref; + } + } + /** + * required string name = 3; + * + *
+       * the name of the attribute to retrieve
+       * 
+ */ + public com.google.protobuf.ByteString + getNameBytes() { + java.lang.Object ref = name_; + if (ref instanceof String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + name_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + /** + * required string name = 3; + * + *
+       * the name of the attribute to retrieve
+       * 
+ */ + public Builder setName( + java.lang.String value) { if (value == null) { throw new NullPointerException(); } - result.hasName = true; - result.name_ = value; - return this; - } + bitField0_ |= 0x00000004; + name_ = value; + onChanged(); + return this; + } + /** + * required string name = 3; + * + *
+       * the name of the attribute to retrieve
+       * 
+ */ public Builder clearName() { - result.hasName = false; - result.name_ = getDefaultInstance().getName(); + bitField0_ = (bitField0_ & ~0x00000004); + name_ = getDefaultInstance().getName(); + onChanged(); + return this; + } + /** + * required string name = 3; + * + *
+       * the name of the attribute to retrieve
+       * 
+ */ + public Builder setNameBytes( + com.google.protobuf.ByteString value) { + if (value == null) { + throw new NullPointerException(); + } + bitField0_ |= 0x00000004; + name_ = value; + onChanged(); return this; } - + // @@protoc_insertion_point(builder_scope:xtreemfs.pbrpc.getxattrRequest) } - + static { defaultInstance = new getxattrRequest(true); - org.xtreemfs.pbrpc.generatedinterfaces.MRC.internalForceInit(); defaultInstance.initFields(); } - + // @@protoc_insertion_point(class_scope:xtreemfs.pbrpc.getxattrRequest) } - + + public interface getxattrResponseOrBuilder + extends com.google.protobuf.MessageOrBuilder { + + // required string value = 1; + /** + * required string value = 1; + */ + boolean hasValue(); + /** + * required string value = 1; + */ + java.lang.String getValue(); + /** + * required string value = 1; + */ + com.google.protobuf.ByteString + getValueBytes(); + + // optional bytes value_bytes_string = 2; + /** + * optional bytes value_bytes_string = 2; + * + *
+     * see XAttr message for explanation.
+     * 
+ */ + boolean hasValueBytesString(); + /** + * optional bytes value_bytes_string = 2; + * + *
+     * see XAttr message for explanation.
+     * 
+ */ + com.google.protobuf.ByteString getValueBytesString(); + } + /** + * Protobuf type {@code xtreemfs.pbrpc.getxattrResponse} + * + *
+   * returns an attribute value of a file or directory
+   * 
+ */ public static final class getxattrResponse extends - com.google.protobuf.GeneratedMessage { + com.google.protobuf.GeneratedMessage + implements getxattrResponseOrBuilder { // Use getxattrResponse.newBuilder() to construct. - private getxattrResponse() { - initFields(); + private getxattrResponse(com.google.protobuf.GeneratedMessage.Builder builder) { + super(builder); + this.unknownFields = builder.getUnknownFields(); } - private getxattrResponse(boolean noInit) {} - + private getxattrResponse(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); } + private static final getxattrResponse defaultInstance; public static getxattrResponse getDefaultInstance() { return defaultInstance; } - + public getxattrResponse getDefaultInstanceForType() { return defaultInstance; } - + + private final com.google.protobuf.UnknownFieldSet unknownFields; + @java.lang.Override + public final com.google.protobuf.UnknownFieldSet + getUnknownFields() { + return this.unknownFields; + } + private getxattrResponse( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + initFields(); + int mutable_bitField0_ = 0; + com.google.protobuf.UnknownFieldSet.Builder unknownFields = + com.google.protobuf.UnknownFieldSet.newBuilder(); + try { + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch (tag) { + case 0: + done = true; + break; + default: { + if (!parseUnknownField(input, unknownFields, + extensionRegistry, tag)) { + done = true; + } + break; + } + case 10: { + bitField0_ |= 0x00000001; + value_ = input.readBytes(); + break; + } + case 18: { + bitField0_ |= 0x00000002; + valueBytesString_ = input.readBytes(); + break; + } + } + } + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(this); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException( + e.getMessage()).setUnfinishedMessage(this); + } finally { + this.unknownFields = unknownFields.build(); + makeExtensionsImmutable(); + } + } public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { return org.xtreemfs.pbrpc.generatedinterfaces.MRC.internal_static_xtreemfs_pbrpc_getxattrResponse_descriptor; } - + protected com.google.protobuf.GeneratedMessage.FieldAccessorTable internalGetFieldAccessorTable() { - return org.xtreemfs.pbrpc.generatedinterfaces.MRC.internal_static_xtreemfs_pbrpc_getxattrResponse_fieldAccessorTable; + return org.xtreemfs.pbrpc.generatedinterfaces.MRC.internal_static_xtreemfs_pbrpc_getxattrResponse_fieldAccessorTable + .ensureFieldAccessorsInitialized( + org.xtreemfs.pbrpc.generatedinterfaces.MRC.getxattrResponse.class, org.xtreemfs.pbrpc.generatedinterfaces.MRC.getxattrResponse.Builder.class); + } + + public static com.google.protobuf.Parser PARSER = + new com.google.protobuf.AbstractParser() { + public getxattrResponse parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return new getxattrResponse(input, extensionRegistry); + } + }; + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; } - + + private int bitField0_; // required string value = 1; public static final int VALUE_FIELD_NUMBER = 1; - private boolean hasValue; - private java.lang.String value_ = ""; - public boolean hasValue() { return hasValue; } - public java.lang.String getValue() { return value_; } - - // optional bytes value_bytes = 2; - public static final int VALUE_BYTES_FIELD_NUMBER = 2; - private boolean hasValueBytes; - private com.google.protobuf.ByteString valueBytes_ = com.google.protobuf.ByteString.EMPTY; - public boolean hasValueBytes() { return hasValueBytes; } - public com.google.protobuf.ByteString getValueBytes() { return valueBytes_; } - + private java.lang.Object value_; + /** + * required string value = 1; + */ + public boolean hasValue() { + return ((bitField0_ & 0x00000001) == 0x00000001); + } + /** + * required string value = 1; + */ + public java.lang.String getValue() { + java.lang.Object ref = value_; + if (ref instanceof java.lang.String) { + return (java.lang.String) ref; + } else { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + if (bs.isValidUtf8()) { + value_ = s; + } + return s; + } + } + /** + * required string value = 1; + */ + public com.google.protobuf.ByteString + getValueBytes() { + java.lang.Object ref = value_; + if (ref instanceof java.lang.String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + value_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + + // optional bytes value_bytes_string = 2; + public static final int VALUE_BYTES_STRING_FIELD_NUMBER = 2; + private com.google.protobuf.ByteString valueBytesString_; + /** + * optional bytes value_bytes_string = 2; + * + *
+     * see XAttr message for explanation.
+     * 
+ */ + public boolean hasValueBytesString() { + return ((bitField0_ & 0x00000002) == 0x00000002); + } + /** + * optional bytes value_bytes_string = 2; + * + *
+     * see XAttr message for explanation.
+     * 
+ */ + public com.google.protobuf.ByteString getValueBytesString() { + return valueBytesString_; + } + private void initFields() { + value_ = ""; + valueBytesString_ = com.google.protobuf.ByteString.EMPTY; } + private byte memoizedIsInitialized = -1; public final boolean isInitialized() { - if (!hasValue) return false; + byte isInitialized = memoizedIsInitialized; + if (isInitialized != -1) return isInitialized == 1; + + if (!hasValue()) { + memoizedIsInitialized = 0; + return false; + } + memoizedIsInitialized = 1; return true; } - + public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException { getSerializedSize(); - if (hasValue()) { - output.writeString(1, getValue()); + if (((bitField0_ & 0x00000001) == 0x00000001)) { + output.writeBytes(1, getValueBytes()); } - if (hasValueBytes()) { - output.writeBytes(2, getValueBytes()); + if (((bitField0_ & 0x00000002) == 0x00000002)) { + output.writeBytes(2, valueBytesString_); } getUnknownFields().writeTo(output); } - + private int memoizedSerializedSize = -1; public int getSerializedSize() { int size = memoizedSerializedSize; if (size != -1) return size; - + size = 0; - if (hasValue()) { + if (((bitField0_ & 0x00000001) == 0x00000001)) { size += com.google.protobuf.CodedOutputStream - .computeStringSize(1, getValue()); + .computeBytesSize(1, getValueBytes()); } - if (hasValueBytes()) { + if (((bitField0_ & 0x00000002) == 0x00000002)) { size += com.google.protobuf.CodedOutputStream - .computeBytesSize(2, getValueBytes()); + .computeBytesSize(2, valueBytesString_); } size += getUnknownFields().getSerializedSize(); memoizedSerializedSize = size; return size; } - + + private static final long serialVersionUID = 0L; + @java.lang.Override + protected java.lang.Object writeReplace() + throws java.io.ObjectStreamException { + return super.writeReplace(); + } + public static org.xtreemfs.pbrpc.generatedinterfaces.MRC.getxattrResponse parseFrom( com.google.protobuf.ByteString data) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data).buildParsed(); + return PARSER.parseFrom(data); } public static org.xtreemfs.pbrpc.generatedinterfaces.MRC.getxattrResponse parseFrom( com.google.protobuf.ByteString data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(data, extensionRegistry); } public static org.xtreemfs.pbrpc.generatedinterfaces.MRC.getxattrResponse parseFrom(byte[] data) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data).buildParsed(); + return PARSER.parseFrom(data); } public static org.xtreemfs.pbrpc.generatedinterfaces.MRC.getxattrResponse parseFrom( byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(data, extensionRegistry); } public static org.xtreemfs.pbrpc.generatedinterfaces.MRC.getxattrResponse parseFrom(java.io.InputStream input) throws java.io.IOException { - return newBuilder().mergeFrom(input).buildParsed(); + return PARSER.parseFrom(input); } public static org.xtreemfs.pbrpc.generatedinterfaces.MRC.getxattrResponse parseFrom( java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - return newBuilder().mergeFrom(input, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(input, extensionRegistry); } public static org.xtreemfs.pbrpc.generatedinterfaces.MRC.getxattrResponse parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException { - Builder builder = newBuilder(); - if (builder.mergeDelimitedFrom(input)) { - return builder.buildParsed(); - } else { - return null; - } + return PARSER.parseDelimitedFrom(input); } public static org.xtreemfs.pbrpc.generatedinterfaces.MRC.getxattrResponse parseDelimitedFrom( java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - Builder builder = newBuilder(); - if (builder.mergeDelimitedFrom(input, extensionRegistry)) { - return builder.buildParsed(); - } else { - return null; - } + return PARSER.parseDelimitedFrom(input, extensionRegistry); } public static org.xtreemfs.pbrpc.generatedinterfaces.MRC.getxattrResponse parseFrom( com.google.protobuf.CodedInputStream input) throws java.io.IOException { - return newBuilder().mergeFrom(input).buildParsed(); + return PARSER.parseFrom(input); } public static org.xtreemfs.pbrpc.generatedinterfaces.MRC.getxattrResponse parseFrom( com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - return newBuilder().mergeFrom(input, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(input, extensionRegistry); } - + public static Builder newBuilder() { return Builder.create(); } public Builder newBuilderForType() { return newBuilder(); } public static Builder newBuilder(org.xtreemfs.pbrpc.generatedinterfaces.MRC.getxattrResponse prototype) { return newBuilder().mergeFrom(prototype); } public Builder toBuilder() { return newBuilder(this); } - + + @java.lang.Override + protected Builder newBuilderForType( + com.google.protobuf.GeneratedMessage.BuilderParent parent) { + Builder builder = new Builder(parent); + return builder; + } + /** + * Protobuf type {@code xtreemfs.pbrpc.getxattrResponse} + * + *
+     * returns an attribute value of a file or directory
+     * 
+ */ public static final class Builder extends - com.google.protobuf.GeneratedMessage.Builder { - private org.xtreemfs.pbrpc.generatedinterfaces.MRC.getxattrResponse result; - + com.google.protobuf.GeneratedMessage.Builder + implements org.xtreemfs.pbrpc.generatedinterfaces.MRC.getxattrResponseOrBuilder { + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return org.xtreemfs.pbrpc.generatedinterfaces.MRC.internal_static_xtreemfs_pbrpc_getxattrResponse_descriptor; + } + + protected com.google.protobuf.GeneratedMessage.FieldAccessorTable + internalGetFieldAccessorTable() { + return org.xtreemfs.pbrpc.generatedinterfaces.MRC.internal_static_xtreemfs_pbrpc_getxattrResponse_fieldAccessorTable + .ensureFieldAccessorsInitialized( + org.xtreemfs.pbrpc.generatedinterfaces.MRC.getxattrResponse.class, org.xtreemfs.pbrpc.generatedinterfaces.MRC.getxattrResponse.Builder.class); + } + // Construct using org.xtreemfs.pbrpc.generatedinterfaces.MRC.getxattrResponse.newBuilder() - private Builder() {} - - private static Builder create() { - Builder builder = new Builder(); - builder.result = new org.xtreemfs.pbrpc.generatedinterfaces.MRC.getxattrResponse(); - return builder; + private Builder() { + maybeForceBuilderInitialization(); } - - protected org.xtreemfs.pbrpc.generatedinterfaces.MRC.getxattrResponse internalGetResult() { - return result; + + private Builder( + com.google.protobuf.GeneratedMessage.BuilderParent parent) { + super(parent); + maybeForceBuilderInitialization(); } - - public Builder clear() { - if (result == null) { - throw new IllegalStateException( - "Cannot call clear() after build()."); + private void maybeForceBuilderInitialization() { + if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) { } - result = new org.xtreemfs.pbrpc.generatedinterfaces.MRC.getxattrResponse(); + } + private static Builder create() { + return new Builder(); + } + + public Builder clear() { + super.clear(); + value_ = ""; + bitField0_ = (bitField0_ & ~0x00000001); + valueBytesString_ = com.google.protobuf.ByteString.EMPTY; + bitField0_ = (bitField0_ & ~0x00000002); return this; } - + public Builder clone() { - return create().mergeFrom(result); + return create().mergeFrom(buildPartial()); } - + public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() { - return org.xtreemfs.pbrpc.generatedinterfaces.MRC.getxattrResponse.getDescriptor(); + return org.xtreemfs.pbrpc.generatedinterfaces.MRC.internal_static_xtreemfs_pbrpc_getxattrResponse_descriptor; } - + public org.xtreemfs.pbrpc.generatedinterfaces.MRC.getxattrResponse getDefaultInstanceForType() { return org.xtreemfs.pbrpc.generatedinterfaces.MRC.getxattrResponse.getDefaultInstance(); } - - public boolean isInitialized() { - return result.isInitialized(); - } + public org.xtreemfs.pbrpc.generatedinterfaces.MRC.getxattrResponse build() { - if (result != null && !isInitialized()) { + org.xtreemfs.pbrpc.generatedinterfaces.MRC.getxattrResponse result = buildPartial(); + if (!result.isInitialized()) { throw newUninitializedMessageException(result); } - return buildPartial(); - } - - private org.xtreemfs.pbrpc.generatedinterfaces.MRC.getxattrResponse buildParsed() - throws com.google.protobuf.InvalidProtocolBufferException { - if (!isInitialized()) { - throw newUninitializedMessageException( - result).asInvalidProtocolBufferException(); - } - return buildPartial(); + return result; } - + public org.xtreemfs.pbrpc.generatedinterfaces.MRC.getxattrResponse buildPartial() { - if (result == null) { - throw new IllegalStateException( - "build() has already been called on this Builder."); - } - org.xtreemfs.pbrpc.generatedinterfaces.MRC.getxattrResponse returnMe = result; - result = null; - return returnMe; + org.xtreemfs.pbrpc.generatedinterfaces.MRC.getxattrResponse result = new org.xtreemfs.pbrpc.generatedinterfaces.MRC.getxattrResponse(this); + int from_bitField0_ = bitField0_; + int to_bitField0_ = 0; + if (((from_bitField0_ & 0x00000001) == 0x00000001)) { + to_bitField0_ |= 0x00000001; + } + result.value_ = value_; + if (((from_bitField0_ & 0x00000002) == 0x00000002)) { + to_bitField0_ |= 0x00000002; + } + result.valueBytesString_ = valueBytesString_; + result.bitField0_ = to_bitField0_; + onBuilt(); + return result; } - + public Builder mergeFrom(com.google.protobuf.Message other) { if (other instanceof org.xtreemfs.pbrpc.generatedinterfaces.MRC.getxattrResponse) { return mergeFrom((org.xtreemfs.pbrpc.generatedinterfaces.MRC.getxattrResponse)other); @@ -5606,344 +13992,780 @@ public final class MRC { return this; } } - + public Builder mergeFrom(org.xtreemfs.pbrpc.generatedinterfaces.MRC.getxattrResponse other) { if (other == org.xtreemfs.pbrpc.generatedinterfaces.MRC.getxattrResponse.getDefaultInstance()) return this; if (other.hasValue()) { - setValue(other.getValue()); + bitField0_ |= 0x00000001; + value_ = other.value_; + onChanged(); } - if (other.hasValueBytes()) { - setValueBytes(other.getValueBytes()); + if (other.hasValueBytesString()) { + setValueBytesString(other.getValueBytesString()); } this.mergeUnknownFields(other.getUnknownFields()); return this; } - + + public final boolean isInitialized() { + if (!hasValue()) { + + return false; + } + return true; + } + public Builder mergeFrom( com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - com.google.protobuf.UnknownFieldSet.Builder unknownFields = - com.google.protobuf.UnknownFieldSet.newBuilder( - this.getUnknownFields()); - while (true) { - int tag = input.readTag(); - switch (tag) { - case 0: - this.setUnknownFields(unknownFields.build()); - return this; - default: { - if (!parseUnknownField(input, unknownFields, - extensionRegistry, tag)) { - this.setUnknownFields(unknownFields.build()); - return this; - } - break; - } - case 10: { - setValue(input.readString()); - break; - } - case 18: { - setValueBytes(input.readBytes()); - break; - } + org.xtreemfs.pbrpc.generatedinterfaces.MRC.getxattrResponse parsedMessage = null; + try { + parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + parsedMessage = (org.xtreemfs.pbrpc.generatedinterfaces.MRC.getxattrResponse) e.getUnfinishedMessage(); + throw e; + } finally { + if (parsedMessage != null) { + mergeFrom(parsedMessage); } } + return this; } - - + private int bitField0_; + // required string value = 1; + private java.lang.Object value_ = ""; + /** + * required string value = 1; + */ public boolean hasValue() { - return result.hasValue(); + return ((bitField0_ & 0x00000001) == 0x00000001); } + /** + * required string value = 1; + */ public java.lang.String getValue() { - return result.getValue(); + java.lang.Object ref = value_; + if (!(ref instanceof java.lang.String)) { + java.lang.String s = ((com.google.protobuf.ByteString) ref) + .toStringUtf8(); + value_ = s; + return s; + } else { + return (java.lang.String) ref; + } + } + /** + * required string value = 1; + */ + public com.google.protobuf.ByteString + getValueBytes() { + java.lang.Object ref = value_; + if (ref instanceof String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + value_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } } - public Builder setValue(java.lang.String value) { + /** + * required string value = 1; + */ + public Builder setValue( + java.lang.String value) { if (value == null) { throw new NullPointerException(); } - result.hasValue = true; - result.value_ = value; + bitField0_ |= 0x00000001; + value_ = value; + onChanged(); return this; } + /** + * required string value = 1; + */ public Builder clearValue() { - result.hasValue = false; - result.value_ = getDefaultInstance().getValue(); + bitField0_ = (bitField0_ & ~0x00000001); + value_ = getDefaultInstance().getValue(); + onChanged(); return this; } - - // optional bytes value_bytes = 2; - public boolean hasValueBytes() { - return result.hasValueBytes(); - } - public com.google.protobuf.ByteString getValueBytes() { - return result.getValueBytes(); + /** + * required string value = 1; + */ + public Builder setValueBytes( + com.google.protobuf.ByteString value) { + if (value == null) { + throw new NullPointerException(); + } + bitField0_ |= 0x00000001; + value_ = value; + onChanged(); + return this; } - public Builder setValueBytes(com.google.protobuf.ByteString value) { + + // optional bytes value_bytes_string = 2; + private com.google.protobuf.ByteString valueBytesString_ = com.google.protobuf.ByteString.EMPTY; + /** + * optional bytes value_bytes_string = 2; + * + *
+       * see XAttr message for explanation.
+       * 
+ */ + public boolean hasValueBytesString() { + return ((bitField0_ & 0x00000002) == 0x00000002); + } + /** + * optional bytes value_bytes_string = 2; + * + *
+       * see XAttr message for explanation.
+       * 
+ */ + public com.google.protobuf.ByteString getValueBytesString() { + return valueBytesString_; + } + /** + * optional bytes value_bytes_string = 2; + * + *
+       * see XAttr message for explanation.
+       * 
+ */ + public Builder setValueBytesString(com.google.protobuf.ByteString value) { if (value == null) { throw new NullPointerException(); } - result.hasValueBytes = true; - result.valueBytes_ = value; + bitField0_ |= 0x00000002; + valueBytesString_ = value; + onChanged(); return this; } - public Builder clearValueBytes() { - result.hasValueBytes = false; - result.valueBytes_ = getDefaultInstance().getValueBytes(); + /** + * optional bytes value_bytes_string = 2; + * + *
+       * see XAttr message for explanation.
+       * 
+ */ + public Builder clearValueBytesString() { + bitField0_ = (bitField0_ & ~0x00000002); + valueBytesString_ = getDefaultInstance().getValueBytesString(); + onChanged(); return this; } - + // @@protoc_insertion_point(builder_scope:xtreemfs.pbrpc.getxattrResponse) } - + static { defaultInstance = new getxattrResponse(true); - org.xtreemfs.pbrpc.generatedinterfaces.MRC.internalForceInit(); defaultInstance.initFields(); } - + // @@protoc_insertion_point(class_scope:xtreemfs.pbrpc.getxattrResponse) } - + + public interface linkRequestOrBuilder + extends com.google.protobuf.MessageOrBuilder { + + // required string volume_name = 1; + /** + * required string volume_name = 1; + * + *
+     * the volume name
+     * 
+ */ + boolean hasVolumeName(); + /** + * required string volume_name = 1; + * + *
+     * the volume name
+     * 
+ */ + java.lang.String getVolumeName(); + /** + * required string volume_name = 1; + * + *
+     * the volume name
+     * 
+ */ + com.google.protobuf.ByteString + getVolumeNameBytes(); + + // required string target_path = 2; + /** + * required string target_path = 2; + * + *
+     * the path to the file to which the link is supposed to be created,
+     * relative to the volume root
+     * 
+ */ + boolean hasTargetPath(); + /** + * required string target_path = 2; + * + *
+     * the path to the file to which the link is supposed to be created,
+     * relative to the volume root
+     * 
+ */ + java.lang.String getTargetPath(); + /** + * required string target_path = 2; + * + *
+     * the path to the file to which the link is supposed to be created,
+     * relative to the volume root
+     * 
+ */ + com.google.protobuf.ByteString + getTargetPathBytes(); + + // required string link_path = 3; + /** + * required string link_path = 3; + * + *
+     * the path to the new link, relative to the volume root
+     * 
+ */ + boolean hasLinkPath(); + /** + * required string link_path = 3; + * + *
+     * the path to the new link, relative to the volume root
+     * 
+ */ + java.lang.String getLinkPath(); + /** + * required string link_path = 3; + * + *
+     * the path to the new link, relative to the volume root
+     * 
+ */ + com.google.protobuf.ByteString + getLinkPathBytes(); + } + /** + * Protobuf type {@code xtreemfs.pbrpc.linkRequest} + * + *
+   * creates a new hardlink to an existing file 
+   * 
+ */ public static final class linkRequest extends - com.google.protobuf.GeneratedMessage { + com.google.protobuf.GeneratedMessage + implements linkRequestOrBuilder { // Use linkRequest.newBuilder() to construct. - private linkRequest() { - initFields(); + private linkRequest(com.google.protobuf.GeneratedMessage.Builder builder) { + super(builder); + this.unknownFields = builder.getUnknownFields(); } - private linkRequest(boolean noInit) {} - + private linkRequest(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); } + private static final linkRequest defaultInstance; public static linkRequest getDefaultInstance() { return defaultInstance; } - + public linkRequest getDefaultInstanceForType() { return defaultInstance; } - + + private final com.google.protobuf.UnknownFieldSet unknownFields; + @java.lang.Override + public final com.google.protobuf.UnknownFieldSet + getUnknownFields() { + return this.unknownFields; + } + private linkRequest( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + initFields(); + int mutable_bitField0_ = 0; + com.google.protobuf.UnknownFieldSet.Builder unknownFields = + com.google.protobuf.UnknownFieldSet.newBuilder(); + try { + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch (tag) { + case 0: + done = true; + break; + default: { + if (!parseUnknownField(input, unknownFields, + extensionRegistry, tag)) { + done = true; + } + break; + } + case 10: { + bitField0_ |= 0x00000001; + volumeName_ = input.readBytes(); + break; + } + case 18: { + bitField0_ |= 0x00000002; + targetPath_ = input.readBytes(); + break; + } + case 26: { + bitField0_ |= 0x00000004; + linkPath_ = input.readBytes(); + break; + } + } + } + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(this); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException( + e.getMessage()).setUnfinishedMessage(this); + } finally { + this.unknownFields = unknownFields.build(); + makeExtensionsImmutable(); + } + } public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { return org.xtreemfs.pbrpc.generatedinterfaces.MRC.internal_static_xtreemfs_pbrpc_linkRequest_descriptor; } - + protected com.google.protobuf.GeneratedMessage.FieldAccessorTable internalGetFieldAccessorTable() { - return org.xtreemfs.pbrpc.generatedinterfaces.MRC.internal_static_xtreemfs_pbrpc_linkRequest_fieldAccessorTable; + return org.xtreemfs.pbrpc.generatedinterfaces.MRC.internal_static_xtreemfs_pbrpc_linkRequest_fieldAccessorTable + .ensureFieldAccessorsInitialized( + org.xtreemfs.pbrpc.generatedinterfaces.MRC.linkRequest.class, org.xtreemfs.pbrpc.generatedinterfaces.MRC.linkRequest.Builder.class); } - + + public static com.google.protobuf.Parser PARSER = + new com.google.protobuf.AbstractParser() { + public linkRequest parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return new linkRequest(input, extensionRegistry); + } + }; + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; + } + + private int bitField0_; // required string volume_name = 1; public static final int VOLUME_NAME_FIELD_NUMBER = 1; - private boolean hasVolumeName; - private java.lang.String volumeName_ = ""; - public boolean hasVolumeName() { return hasVolumeName; } - public java.lang.String getVolumeName() { return volumeName_; } - + private java.lang.Object volumeName_; + /** + * required string volume_name = 1; + * + *
+     * the volume name
+     * 
+ */ + public boolean hasVolumeName() { + return ((bitField0_ & 0x00000001) == 0x00000001); + } + /** + * required string volume_name = 1; + * + *
+     * the volume name
+     * 
+ */ + public java.lang.String getVolumeName() { + java.lang.Object ref = volumeName_; + if (ref instanceof java.lang.String) { + return (java.lang.String) ref; + } else { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + if (bs.isValidUtf8()) { + volumeName_ = s; + } + return s; + } + } + /** + * required string volume_name = 1; + * + *
+     * the volume name
+     * 
+ */ + public com.google.protobuf.ByteString + getVolumeNameBytes() { + java.lang.Object ref = volumeName_; + if (ref instanceof java.lang.String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + volumeName_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + // required string target_path = 2; public static final int TARGET_PATH_FIELD_NUMBER = 2; - private boolean hasTargetPath; - private java.lang.String targetPath_ = ""; - public boolean hasTargetPath() { return hasTargetPath; } - public java.lang.String getTargetPath() { return targetPath_; } - + private java.lang.Object targetPath_; + /** + * required string target_path = 2; + * + *
+     * the path to the file to which the link is supposed to be created,
+     * relative to the volume root
+     * 
+ */ + public boolean hasTargetPath() { + return ((bitField0_ & 0x00000002) == 0x00000002); + } + /** + * required string target_path = 2; + * + *
+     * the path to the file to which the link is supposed to be created,
+     * relative to the volume root
+     * 
+ */ + public java.lang.String getTargetPath() { + java.lang.Object ref = targetPath_; + if (ref instanceof java.lang.String) { + return (java.lang.String) ref; + } else { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + if (bs.isValidUtf8()) { + targetPath_ = s; + } + return s; + } + } + /** + * required string target_path = 2; + * + *
+     * the path to the file to which the link is supposed to be created,
+     * relative to the volume root
+     * 
+ */ + public com.google.protobuf.ByteString + getTargetPathBytes() { + java.lang.Object ref = targetPath_; + if (ref instanceof java.lang.String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + targetPath_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + // required string link_path = 3; public static final int LINK_PATH_FIELD_NUMBER = 3; - private boolean hasLinkPath; - private java.lang.String linkPath_ = ""; - public boolean hasLinkPath() { return hasLinkPath; } - public java.lang.String getLinkPath() { return linkPath_; } - + private java.lang.Object linkPath_; + /** + * required string link_path = 3; + * + *
+     * the path to the new link, relative to the volume root
+     * 
+ */ + public boolean hasLinkPath() { + return ((bitField0_ & 0x00000004) == 0x00000004); + } + /** + * required string link_path = 3; + * + *
+     * the path to the new link, relative to the volume root
+     * 
+ */ + public java.lang.String getLinkPath() { + java.lang.Object ref = linkPath_; + if (ref instanceof java.lang.String) { + return (java.lang.String) ref; + } else { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + if (bs.isValidUtf8()) { + linkPath_ = s; + } + return s; + } + } + /** + * required string link_path = 3; + * + *
+     * the path to the new link, relative to the volume root
+     * 
+ */ + public com.google.protobuf.ByteString + getLinkPathBytes() { + java.lang.Object ref = linkPath_; + if (ref instanceof java.lang.String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + linkPath_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + private void initFields() { + volumeName_ = ""; + targetPath_ = ""; + linkPath_ = ""; } + private byte memoizedIsInitialized = -1; public final boolean isInitialized() { - if (!hasVolumeName) return false; - if (!hasTargetPath) return false; - if (!hasLinkPath) return false; + byte isInitialized = memoizedIsInitialized; + if (isInitialized != -1) return isInitialized == 1; + + if (!hasVolumeName()) { + memoizedIsInitialized = 0; + return false; + } + if (!hasTargetPath()) { + memoizedIsInitialized = 0; + return false; + } + if (!hasLinkPath()) { + memoizedIsInitialized = 0; + return false; + } + memoizedIsInitialized = 1; return true; } - + public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException { getSerializedSize(); - if (hasVolumeName()) { - output.writeString(1, getVolumeName()); + if (((bitField0_ & 0x00000001) == 0x00000001)) { + output.writeBytes(1, getVolumeNameBytes()); } - if (hasTargetPath()) { - output.writeString(2, getTargetPath()); + if (((bitField0_ & 0x00000002) == 0x00000002)) { + output.writeBytes(2, getTargetPathBytes()); } - if (hasLinkPath()) { - output.writeString(3, getLinkPath()); + if (((bitField0_ & 0x00000004) == 0x00000004)) { + output.writeBytes(3, getLinkPathBytes()); } getUnknownFields().writeTo(output); } - + private int memoizedSerializedSize = -1; public int getSerializedSize() { int size = memoizedSerializedSize; if (size != -1) return size; - + size = 0; - if (hasVolumeName()) { + if (((bitField0_ & 0x00000001) == 0x00000001)) { size += com.google.protobuf.CodedOutputStream - .computeStringSize(1, getVolumeName()); + .computeBytesSize(1, getVolumeNameBytes()); } - if (hasTargetPath()) { + if (((bitField0_ & 0x00000002) == 0x00000002)) { size += com.google.protobuf.CodedOutputStream - .computeStringSize(2, getTargetPath()); + .computeBytesSize(2, getTargetPathBytes()); } - if (hasLinkPath()) { + if (((bitField0_ & 0x00000004) == 0x00000004)) { size += com.google.protobuf.CodedOutputStream - .computeStringSize(3, getLinkPath()); + .computeBytesSize(3, getLinkPathBytes()); } size += getUnknownFields().getSerializedSize(); memoizedSerializedSize = size; return size; } - + + private static final long serialVersionUID = 0L; + @java.lang.Override + protected java.lang.Object writeReplace() + throws java.io.ObjectStreamException { + return super.writeReplace(); + } + public static org.xtreemfs.pbrpc.generatedinterfaces.MRC.linkRequest parseFrom( com.google.protobuf.ByteString data) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data).buildParsed(); + return PARSER.parseFrom(data); } public static org.xtreemfs.pbrpc.generatedinterfaces.MRC.linkRequest parseFrom( com.google.protobuf.ByteString data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(data, extensionRegistry); } public static org.xtreemfs.pbrpc.generatedinterfaces.MRC.linkRequest parseFrom(byte[] data) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data).buildParsed(); + return PARSER.parseFrom(data); } public static org.xtreemfs.pbrpc.generatedinterfaces.MRC.linkRequest parseFrom( byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(data, extensionRegistry); } public static org.xtreemfs.pbrpc.generatedinterfaces.MRC.linkRequest parseFrom(java.io.InputStream input) throws java.io.IOException { - return newBuilder().mergeFrom(input).buildParsed(); + return PARSER.parseFrom(input); } public static org.xtreemfs.pbrpc.generatedinterfaces.MRC.linkRequest parseFrom( java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - return newBuilder().mergeFrom(input, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(input, extensionRegistry); } public static org.xtreemfs.pbrpc.generatedinterfaces.MRC.linkRequest parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException { - Builder builder = newBuilder(); - if (builder.mergeDelimitedFrom(input)) { - return builder.buildParsed(); - } else { - return null; - } + return PARSER.parseDelimitedFrom(input); } public static org.xtreemfs.pbrpc.generatedinterfaces.MRC.linkRequest parseDelimitedFrom( java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - Builder builder = newBuilder(); - if (builder.mergeDelimitedFrom(input, extensionRegistry)) { - return builder.buildParsed(); - } else { - return null; - } + return PARSER.parseDelimitedFrom(input, extensionRegistry); } public static org.xtreemfs.pbrpc.generatedinterfaces.MRC.linkRequest parseFrom( com.google.protobuf.CodedInputStream input) throws java.io.IOException { - return newBuilder().mergeFrom(input).buildParsed(); + return PARSER.parseFrom(input); } public static org.xtreemfs.pbrpc.generatedinterfaces.MRC.linkRequest parseFrom( com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - return newBuilder().mergeFrom(input, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(input, extensionRegistry); } - + public static Builder newBuilder() { return Builder.create(); } public Builder newBuilderForType() { return newBuilder(); } public static Builder newBuilder(org.xtreemfs.pbrpc.generatedinterfaces.MRC.linkRequest prototype) { return newBuilder().mergeFrom(prototype); } public Builder toBuilder() { return newBuilder(this); } - + + @java.lang.Override + protected Builder newBuilderForType( + com.google.protobuf.GeneratedMessage.BuilderParent parent) { + Builder builder = new Builder(parent); + return builder; + } + /** + * Protobuf type {@code xtreemfs.pbrpc.linkRequest} + * + *
+     * creates a new hardlink to an existing file 
+     * 
+ */ public static final class Builder extends - com.google.protobuf.GeneratedMessage.Builder { - private org.xtreemfs.pbrpc.generatedinterfaces.MRC.linkRequest result; - + com.google.protobuf.GeneratedMessage.Builder + implements org.xtreemfs.pbrpc.generatedinterfaces.MRC.linkRequestOrBuilder { + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return org.xtreemfs.pbrpc.generatedinterfaces.MRC.internal_static_xtreemfs_pbrpc_linkRequest_descriptor; + } + + protected com.google.protobuf.GeneratedMessage.FieldAccessorTable + internalGetFieldAccessorTable() { + return org.xtreemfs.pbrpc.generatedinterfaces.MRC.internal_static_xtreemfs_pbrpc_linkRequest_fieldAccessorTable + .ensureFieldAccessorsInitialized( + org.xtreemfs.pbrpc.generatedinterfaces.MRC.linkRequest.class, org.xtreemfs.pbrpc.generatedinterfaces.MRC.linkRequest.Builder.class); + } + // Construct using org.xtreemfs.pbrpc.generatedinterfaces.MRC.linkRequest.newBuilder() - private Builder() {} - - private static Builder create() { - Builder builder = new Builder(); - builder.result = new org.xtreemfs.pbrpc.generatedinterfaces.MRC.linkRequest(); - return builder; + private Builder() { + maybeForceBuilderInitialization(); } - - protected org.xtreemfs.pbrpc.generatedinterfaces.MRC.linkRequest internalGetResult() { - return result; + + private Builder( + com.google.protobuf.GeneratedMessage.BuilderParent parent) { + super(parent); + maybeForceBuilderInitialization(); } - - public Builder clear() { - if (result == null) { - throw new IllegalStateException( - "Cannot call clear() after build()."); + private void maybeForceBuilderInitialization() { + if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) { } - result = new org.xtreemfs.pbrpc.generatedinterfaces.MRC.linkRequest(); + } + private static Builder create() { + return new Builder(); + } + + public Builder clear() { + super.clear(); + volumeName_ = ""; + bitField0_ = (bitField0_ & ~0x00000001); + targetPath_ = ""; + bitField0_ = (bitField0_ & ~0x00000002); + linkPath_ = ""; + bitField0_ = (bitField0_ & ~0x00000004); return this; } - + public Builder clone() { - return create().mergeFrom(result); + return create().mergeFrom(buildPartial()); } - + public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() { - return org.xtreemfs.pbrpc.generatedinterfaces.MRC.linkRequest.getDescriptor(); + return org.xtreemfs.pbrpc.generatedinterfaces.MRC.internal_static_xtreemfs_pbrpc_linkRequest_descriptor; } - + public org.xtreemfs.pbrpc.generatedinterfaces.MRC.linkRequest getDefaultInstanceForType() { return org.xtreemfs.pbrpc.generatedinterfaces.MRC.linkRequest.getDefaultInstance(); } - - public boolean isInitialized() { - return result.isInitialized(); - } + public org.xtreemfs.pbrpc.generatedinterfaces.MRC.linkRequest build() { - if (result != null && !isInitialized()) { + org.xtreemfs.pbrpc.generatedinterfaces.MRC.linkRequest result = buildPartial(); + if (!result.isInitialized()) { throw newUninitializedMessageException(result); } - return buildPartial(); - } - - private org.xtreemfs.pbrpc.generatedinterfaces.MRC.linkRequest buildParsed() - throws com.google.protobuf.InvalidProtocolBufferException { - if (!isInitialized()) { - throw newUninitializedMessageException( - result).asInvalidProtocolBufferException(); - } - return buildPartial(); + return result; } - + public org.xtreemfs.pbrpc.generatedinterfaces.MRC.linkRequest buildPartial() { - if (result == null) { - throw new IllegalStateException( - "build() has already been called on this Builder."); - } - org.xtreemfs.pbrpc.generatedinterfaces.MRC.linkRequest returnMe = result; - result = null; - return returnMe; + org.xtreemfs.pbrpc.generatedinterfaces.MRC.linkRequest result = new org.xtreemfs.pbrpc.generatedinterfaces.MRC.linkRequest(this); + int from_bitField0_ = bitField0_; + int to_bitField0_ = 0; + if (((from_bitField0_ & 0x00000001) == 0x00000001)) { + to_bitField0_ |= 0x00000001; + } + result.volumeName_ = volumeName_; + if (((from_bitField0_ & 0x00000002) == 0x00000002)) { + to_bitField0_ |= 0x00000002; + } + result.targetPath_ = targetPath_; + if (((from_bitField0_ & 0x00000004) == 0x00000004)) { + to_bitField0_ |= 0x00000004; + } + result.linkPath_ = linkPath_; + result.bitField0_ = to_bitField0_; + onBuilt(); + return result; } - + public Builder mergeFrom(com.google.protobuf.Message other) { if (other instanceof org.xtreemfs.pbrpc.generatedinterfaces.MRC.linkRequest) { return mergeFrom((org.xtreemfs.pbrpc.generatedinterfaces.MRC.linkRequest)other); @@ -5952,372 +14774,923 @@ public final class MRC { return this; } } - + public Builder mergeFrom(org.xtreemfs.pbrpc.generatedinterfaces.MRC.linkRequest other) { if (other == org.xtreemfs.pbrpc.generatedinterfaces.MRC.linkRequest.getDefaultInstance()) return this; if (other.hasVolumeName()) { - setVolumeName(other.getVolumeName()); + bitField0_ |= 0x00000001; + volumeName_ = other.volumeName_; + onChanged(); } if (other.hasTargetPath()) { - setTargetPath(other.getTargetPath()); + bitField0_ |= 0x00000002; + targetPath_ = other.targetPath_; + onChanged(); } if (other.hasLinkPath()) { - setLinkPath(other.getLinkPath()); + bitField0_ |= 0x00000004; + linkPath_ = other.linkPath_; + onChanged(); } this.mergeUnknownFields(other.getUnknownFields()); return this; } - + + public final boolean isInitialized() { + if (!hasVolumeName()) { + + return false; + } + if (!hasTargetPath()) { + + return false; + } + if (!hasLinkPath()) { + + return false; + } + return true; + } + public Builder mergeFrom( com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - com.google.protobuf.UnknownFieldSet.Builder unknownFields = - com.google.protobuf.UnknownFieldSet.newBuilder( - this.getUnknownFields()); - while (true) { - int tag = input.readTag(); - switch (tag) { - case 0: - this.setUnknownFields(unknownFields.build()); - return this; - default: { - if (!parseUnknownField(input, unknownFields, - extensionRegistry, tag)) { - this.setUnknownFields(unknownFields.build()); - return this; - } - break; - } - case 10: { - setVolumeName(input.readString()); - break; - } - case 18: { - setTargetPath(input.readString()); - break; - } - case 26: { - setLinkPath(input.readString()); - break; - } + org.xtreemfs.pbrpc.generatedinterfaces.MRC.linkRequest parsedMessage = null; + try { + parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + parsedMessage = (org.xtreemfs.pbrpc.generatedinterfaces.MRC.linkRequest) e.getUnfinishedMessage(); + throw e; + } finally { + if (parsedMessage != null) { + mergeFrom(parsedMessage); } } + return this; } - - + private int bitField0_; + // required string volume_name = 1; + private java.lang.Object volumeName_ = ""; + /** + * required string volume_name = 1; + * + *
+       * the volume name
+       * 
+ */ public boolean hasVolumeName() { - return result.hasVolumeName(); - } + return ((bitField0_ & 0x00000001) == 0x00000001); + } + /** + * required string volume_name = 1; + * + *
+       * the volume name
+       * 
+ */ public java.lang.String getVolumeName() { - return result.getVolumeName(); - } - public Builder setVolumeName(java.lang.String value) { + java.lang.Object ref = volumeName_; + if (!(ref instanceof java.lang.String)) { + java.lang.String s = ((com.google.protobuf.ByteString) ref) + .toStringUtf8(); + volumeName_ = s; + return s; + } else { + return (java.lang.String) ref; + } + } + /** + * required string volume_name = 1; + * + *
+       * the volume name
+       * 
+ */ + public com.google.protobuf.ByteString + getVolumeNameBytes() { + java.lang.Object ref = volumeName_; + if (ref instanceof String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + volumeName_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + /** + * required string volume_name = 1; + * + *
+       * the volume name
+       * 
+ */ + public Builder setVolumeName( + java.lang.String value) { if (value == null) { throw new NullPointerException(); } - result.hasVolumeName = true; - result.volumeName_ = value; - return this; - } + bitField0_ |= 0x00000001; + volumeName_ = value; + onChanged(); + return this; + } + /** + * required string volume_name = 1; + * + *
+       * the volume name
+       * 
+ */ public Builder clearVolumeName() { - result.hasVolumeName = false; - result.volumeName_ = getDefaultInstance().getVolumeName(); + bitField0_ = (bitField0_ & ~0x00000001); + volumeName_ = getDefaultInstance().getVolumeName(); + onChanged(); + return this; + } + /** + * required string volume_name = 1; + * + *
+       * the volume name
+       * 
+ */ + public Builder setVolumeNameBytes( + com.google.protobuf.ByteString value) { + if (value == null) { + throw new NullPointerException(); + } + bitField0_ |= 0x00000001; + volumeName_ = value; + onChanged(); return this; } - + // required string target_path = 2; + private java.lang.Object targetPath_ = ""; + /** + * required string target_path = 2; + * + *
+       * the path to the file to which the link is supposed to be created,
+       * relative to the volume root
+       * 
+ */ public boolean hasTargetPath() { - return result.hasTargetPath(); - } + return ((bitField0_ & 0x00000002) == 0x00000002); + } + /** + * required string target_path = 2; + * + *
+       * the path to the file to which the link is supposed to be created,
+       * relative to the volume root
+       * 
+ */ public java.lang.String getTargetPath() { - return result.getTargetPath(); - } - public Builder setTargetPath(java.lang.String value) { + java.lang.Object ref = targetPath_; + if (!(ref instanceof java.lang.String)) { + java.lang.String s = ((com.google.protobuf.ByteString) ref) + .toStringUtf8(); + targetPath_ = s; + return s; + } else { + return (java.lang.String) ref; + } + } + /** + * required string target_path = 2; + * + *
+       * the path to the file to which the link is supposed to be created,
+       * relative to the volume root
+       * 
+ */ + public com.google.protobuf.ByteString + getTargetPathBytes() { + java.lang.Object ref = targetPath_; + if (ref instanceof String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + targetPath_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + /** + * required string target_path = 2; + * + *
+       * the path to the file to which the link is supposed to be created,
+       * relative to the volume root
+       * 
+ */ + public Builder setTargetPath( + java.lang.String value) { if (value == null) { throw new NullPointerException(); } - result.hasTargetPath = true; - result.targetPath_ = value; - return this; - } + bitField0_ |= 0x00000002; + targetPath_ = value; + onChanged(); + return this; + } + /** + * required string target_path = 2; + * + *
+       * the path to the file to which the link is supposed to be created,
+       * relative to the volume root
+       * 
+ */ public Builder clearTargetPath() { - result.hasTargetPath = false; - result.targetPath_ = getDefaultInstance().getTargetPath(); + bitField0_ = (bitField0_ & ~0x00000002); + targetPath_ = getDefaultInstance().getTargetPath(); + onChanged(); + return this; + } + /** + * required string target_path = 2; + * + *
+       * the path to the file to which the link is supposed to be created,
+       * relative to the volume root
+       * 
+ */ + public Builder setTargetPathBytes( + com.google.protobuf.ByteString value) { + if (value == null) { + throw new NullPointerException(); + } + bitField0_ |= 0x00000002; + targetPath_ = value; + onChanged(); return this; } - + // required string link_path = 3; + private java.lang.Object linkPath_ = ""; + /** + * required string link_path = 3; + * + *
+       * the path to the new link, relative to the volume root
+       * 
+ */ public boolean hasLinkPath() { - return result.hasLinkPath(); - } + return ((bitField0_ & 0x00000004) == 0x00000004); + } + /** + * required string link_path = 3; + * + *
+       * the path to the new link, relative to the volume root
+       * 
+ */ public java.lang.String getLinkPath() { - return result.getLinkPath(); - } - public Builder setLinkPath(java.lang.String value) { + java.lang.Object ref = linkPath_; + if (!(ref instanceof java.lang.String)) { + java.lang.String s = ((com.google.protobuf.ByteString) ref) + .toStringUtf8(); + linkPath_ = s; + return s; + } else { + return (java.lang.String) ref; + } + } + /** + * required string link_path = 3; + * + *
+       * the path to the new link, relative to the volume root
+       * 
+ */ + public com.google.protobuf.ByteString + getLinkPathBytes() { + java.lang.Object ref = linkPath_; + if (ref instanceof String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + linkPath_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + /** + * required string link_path = 3; + * + *
+       * the path to the new link, relative to the volume root
+       * 
+ */ + public Builder setLinkPath( + java.lang.String value) { if (value == null) { throw new NullPointerException(); } - result.hasLinkPath = true; - result.linkPath_ = value; - return this; - } + bitField0_ |= 0x00000004; + linkPath_ = value; + onChanged(); + return this; + } + /** + * required string link_path = 3; + * + *
+       * the path to the new link, relative to the volume root
+       * 
+ */ public Builder clearLinkPath() { - result.hasLinkPath = false; - result.linkPath_ = getDefaultInstance().getLinkPath(); + bitField0_ = (bitField0_ & ~0x00000004); + linkPath_ = getDefaultInstance().getLinkPath(); + onChanged(); + return this; + } + /** + * required string link_path = 3; + * + *
+       * the path to the new link, relative to the volume root
+       * 
+ */ + public Builder setLinkPathBytes( + com.google.protobuf.ByteString value) { + if (value == null) { + throw new NullPointerException(); + } + bitField0_ |= 0x00000004; + linkPath_ = value; + onChanged(); return this; } - + // @@protoc_insertion_point(builder_scope:xtreemfs.pbrpc.linkRequest) } - + static { defaultInstance = new linkRequest(true); - org.xtreemfs.pbrpc.generatedinterfaces.MRC.internalForceInit(); defaultInstance.initFields(); } - + // @@protoc_insertion_point(class_scope:xtreemfs.pbrpc.linkRequest) } - + + public interface listxattrRequestOrBuilder + extends com.google.protobuf.MessageOrBuilder { + + // required string volume_name = 1; + /** + * required string volume_name = 1; + * + *
+     * the volume name
+     * 
+ */ + boolean hasVolumeName(); + /** + * required string volume_name = 1; + * + *
+     * the volume name
+     * 
+ */ + java.lang.String getVolumeName(); + /** + * required string volume_name = 1; + * + *
+     * the volume name
+     * 
+ */ + com.google.protobuf.ByteString + getVolumeNameBytes(); + + // required string path = 2; + /** + * required string path = 2; + * + *
+     * the path to the file or directory, relative to the volume root
+     * 
+ */ + boolean hasPath(); + /** + * required string path = 2; + * + *
+     * the path to the file or directory, relative to the volume root
+     * 
+ */ + java.lang.String getPath(); + /** + * required string path = 2; + * + *
+     * the path to the file or directory, relative to the volume root
+     * 
+ */ + com.google.protobuf.ByteString + getPathBytes(); + + // required bool names_only = 3; + /** + * required bool names_only = 3; + * + *
+     * a flag indicating that no attribute values are supposed to be returned
+     * 
+ */ + boolean hasNamesOnly(); + /** + * required bool names_only = 3; + * + *
+     * a flag indicating that no attribute values are supposed to be returned
+     * 
+ */ + boolean getNamesOnly(); + } + /** + * Protobuf type {@code xtreemfs.pbrpc.listxattrRequest} + * + *
+   * requests a list of extended attributes of a file or directory
+   * 
+ */ public static final class listxattrRequest extends - com.google.protobuf.GeneratedMessage { + com.google.protobuf.GeneratedMessage + implements listxattrRequestOrBuilder { // Use listxattrRequest.newBuilder() to construct. - private listxattrRequest() { - initFields(); + private listxattrRequest(com.google.protobuf.GeneratedMessage.Builder builder) { + super(builder); + this.unknownFields = builder.getUnknownFields(); } - private listxattrRequest(boolean noInit) {} - + private listxattrRequest(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); } + private static final listxattrRequest defaultInstance; public static listxattrRequest getDefaultInstance() { return defaultInstance; } - + public listxattrRequest getDefaultInstanceForType() { return defaultInstance; } - + + private final com.google.protobuf.UnknownFieldSet unknownFields; + @java.lang.Override + public final com.google.protobuf.UnknownFieldSet + getUnknownFields() { + return this.unknownFields; + } + private listxattrRequest( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + initFields(); + int mutable_bitField0_ = 0; + com.google.protobuf.UnknownFieldSet.Builder unknownFields = + com.google.protobuf.UnknownFieldSet.newBuilder(); + try { + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch (tag) { + case 0: + done = true; + break; + default: { + if (!parseUnknownField(input, unknownFields, + extensionRegistry, tag)) { + done = true; + } + break; + } + case 10: { + bitField0_ |= 0x00000001; + volumeName_ = input.readBytes(); + break; + } + case 18: { + bitField0_ |= 0x00000002; + path_ = input.readBytes(); + break; + } + case 24: { + bitField0_ |= 0x00000004; + namesOnly_ = input.readBool(); + break; + } + } + } + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(this); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException( + e.getMessage()).setUnfinishedMessage(this); + } finally { + this.unknownFields = unknownFields.build(); + makeExtensionsImmutable(); + } + } public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { return org.xtreemfs.pbrpc.generatedinterfaces.MRC.internal_static_xtreemfs_pbrpc_listxattrRequest_descriptor; } - + protected com.google.protobuf.GeneratedMessage.FieldAccessorTable internalGetFieldAccessorTable() { - return org.xtreemfs.pbrpc.generatedinterfaces.MRC.internal_static_xtreemfs_pbrpc_listxattrRequest_fieldAccessorTable; + return org.xtreemfs.pbrpc.generatedinterfaces.MRC.internal_static_xtreemfs_pbrpc_listxattrRequest_fieldAccessorTable + .ensureFieldAccessorsInitialized( + org.xtreemfs.pbrpc.generatedinterfaces.MRC.listxattrRequest.class, org.xtreemfs.pbrpc.generatedinterfaces.MRC.listxattrRequest.Builder.class); + } + + public static com.google.protobuf.Parser PARSER = + new com.google.protobuf.AbstractParser() { + public listxattrRequest parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return new listxattrRequest(input, extensionRegistry); + } + }; + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; } - + + private int bitField0_; // required string volume_name = 1; public static final int VOLUME_NAME_FIELD_NUMBER = 1; - private boolean hasVolumeName; - private java.lang.String volumeName_ = ""; - public boolean hasVolumeName() { return hasVolumeName; } - public java.lang.String getVolumeName() { return volumeName_; } - + private java.lang.Object volumeName_; + /** + * required string volume_name = 1; + * + *
+     * the volume name
+     * 
+ */ + public boolean hasVolumeName() { + return ((bitField0_ & 0x00000001) == 0x00000001); + } + /** + * required string volume_name = 1; + * + *
+     * the volume name
+     * 
+ */ + public java.lang.String getVolumeName() { + java.lang.Object ref = volumeName_; + if (ref instanceof java.lang.String) { + return (java.lang.String) ref; + } else { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + if (bs.isValidUtf8()) { + volumeName_ = s; + } + return s; + } + } + /** + * required string volume_name = 1; + * + *
+     * the volume name
+     * 
+ */ + public com.google.protobuf.ByteString + getVolumeNameBytes() { + java.lang.Object ref = volumeName_; + if (ref instanceof java.lang.String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + volumeName_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + // required string path = 2; public static final int PATH_FIELD_NUMBER = 2; - private boolean hasPath; - private java.lang.String path_ = ""; - public boolean hasPath() { return hasPath; } - public java.lang.String getPath() { return path_; } - + private java.lang.Object path_; + /** + * required string path = 2; + * + *
+     * the path to the file or directory, relative to the volume root
+     * 
+ */ + public boolean hasPath() { + return ((bitField0_ & 0x00000002) == 0x00000002); + } + /** + * required string path = 2; + * + *
+     * the path to the file or directory, relative to the volume root
+     * 
+ */ + public java.lang.String getPath() { + java.lang.Object ref = path_; + if (ref instanceof java.lang.String) { + return (java.lang.String) ref; + } else { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + if (bs.isValidUtf8()) { + path_ = s; + } + return s; + } + } + /** + * required string path = 2; + * + *
+     * the path to the file or directory, relative to the volume root
+     * 
+ */ + public com.google.protobuf.ByteString + getPathBytes() { + java.lang.Object ref = path_; + if (ref instanceof java.lang.String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + path_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + // required bool names_only = 3; public static final int NAMES_ONLY_FIELD_NUMBER = 3; - private boolean hasNamesOnly; - private boolean namesOnly_ = false; - public boolean hasNamesOnly() { return hasNamesOnly; } - public boolean getNamesOnly() { return namesOnly_; } - + private boolean namesOnly_; + /** + * required bool names_only = 3; + * + *
+     * a flag indicating that no attribute values are supposed to be returned
+     * 
+ */ + public boolean hasNamesOnly() { + return ((bitField0_ & 0x00000004) == 0x00000004); + } + /** + * required bool names_only = 3; + * + *
+     * a flag indicating that no attribute values are supposed to be returned
+     * 
+ */ + public boolean getNamesOnly() { + return namesOnly_; + } + private void initFields() { + volumeName_ = ""; + path_ = ""; + namesOnly_ = false; } + private byte memoizedIsInitialized = -1; public final boolean isInitialized() { - if (!hasVolumeName) return false; - if (!hasPath) return false; - if (!hasNamesOnly) return false; + byte isInitialized = memoizedIsInitialized; + if (isInitialized != -1) return isInitialized == 1; + + if (!hasVolumeName()) { + memoizedIsInitialized = 0; + return false; + } + if (!hasPath()) { + memoizedIsInitialized = 0; + return false; + } + if (!hasNamesOnly()) { + memoizedIsInitialized = 0; + return false; + } + memoizedIsInitialized = 1; return true; } - + public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException { getSerializedSize(); - if (hasVolumeName()) { - output.writeString(1, getVolumeName()); + if (((bitField0_ & 0x00000001) == 0x00000001)) { + output.writeBytes(1, getVolumeNameBytes()); } - if (hasPath()) { - output.writeString(2, getPath()); + if (((bitField0_ & 0x00000002) == 0x00000002)) { + output.writeBytes(2, getPathBytes()); } - if (hasNamesOnly()) { - output.writeBool(3, getNamesOnly()); + if (((bitField0_ & 0x00000004) == 0x00000004)) { + output.writeBool(3, namesOnly_); } getUnknownFields().writeTo(output); } - + private int memoizedSerializedSize = -1; public int getSerializedSize() { int size = memoizedSerializedSize; if (size != -1) return size; - + size = 0; - if (hasVolumeName()) { + if (((bitField0_ & 0x00000001) == 0x00000001)) { size += com.google.protobuf.CodedOutputStream - .computeStringSize(1, getVolumeName()); + .computeBytesSize(1, getVolumeNameBytes()); } - if (hasPath()) { + if (((bitField0_ & 0x00000002) == 0x00000002)) { size += com.google.protobuf.CodedOutputStream - .computeStringSize(2, getPath()); + .computeBytesSize(2, getPathBytes()); } - if (hasNamesOnly()) { + if (((bitField0_ & 0x00000004) == 0x00000004)) { size += com.google.protobuf.CodedOutputStream - .computeBoolSize(3, getNamesOnly()); + .computeBoolSize(3, namesOnly_); } size += getUnknownFields().getSerializedSize(); memoizedSerializedSize = size; return size; } - + + private static final long serialVersionUID = 0L; + @java.lang.Override + protected java.lang.Object writeReplace() + throws java.io.ObjectStreamException { + return super.writeReplace(); + } + public static org.xtreemfs.pbrpc.generatedinterfaces.MRC.listxattrRequest parseFrom( com.google.protobuf.ByteString data) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data).buildParsed(); + return PARSER.parseFrom(data); } public static org.xtreemfs.pbrpc.generatedinterfaces.MRC.listxattrRequest parseFrom( com.google.protobuf.ByteString data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(data, extensionRegistry); } public static org.xtreemfs.pbrpc.generatedinterfaces.MRC.listxattrRequest parseFrom(byte[] data) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data).buildParsed(); + return PARSER.parseFrom(data); } public static org.xtreemfs.pbrpc.generatedinterfaces.MRC.listxattrRequest parseFrom( byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(data, extensionRegistry); } public static org.xtreemfs.pbrpc.generatedinterfaces.MRC.listxattrRequest parseFrom(java.io.InputStream input) throws java.io.IOException { - return newBuilder().mergeFrom(input).buildParsed(); + return PARSER.parseFrom(input); } public static org.xtreemfs.pbrpc.generatedinterfaces.MRC.listxattrRequest parseFrom( java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - return newBuilder().mergeFrom(input, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(input, extensionRegistry); } public static org.xtreemfs.pbrpc.generatedinterfaces.MRC.listxattrRequest parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException { - Builder builder = newBuilder(); - if (builder.mergeDelimitedFrom(input)) { - return builder.buildParsed(); - } else { - return null; - } + return PARSER.parseDelimitedFrom(input); } public static org.xtreemfs.pbrpc.generatedinterfaces.MRC.listxattrRequest parseDelimitedFrom( java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - Builder builder = newBuilder(); - if (builder.mergeDelimitedFrom(input, extensionRegistry)) { - return builder.buildParsed(); - } else { - return null; - } + return PARSER.parseDelimitedFrom(input, extensionRegistry); } public static org.xtreemfs.pbrpc.generatedinterfaces.MRC.listxattrRequest parseFrom( com.google.protobuf.CodedInputStream input) throws java.io.IOException { - return newBuilder().mergeFrom(input).buildParsed(); + return PARSER.parseFrom(input); } public static org.xtreemfs.pbrpc.generatedinterfaces.MRC.listxattrRequest parseFrom( com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - return newBuilder().mergeFrom(input, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(input, extensionRegistry); } - + public static Builder newBuilder() { return Builder.create(); } public Builder newBuilderForType() { return newBuilder(); } public static Builder newBuilder(org.xtreemfs.pbrpc.generatedinterfaces.MRC.listxattrRequest prototype) { return newBuilder().mergeFrom(prototype); } public Builder toBuilder() { return newBuilder(this); } - + + @java.lang.Override + protected Builder newBuilderForType( + com.google.protobuf.GeneratedMessage.BuilderParent parent) { + Builder builder = new Builder(parent); + return builder; + } + /** + * Protobuf type {@code xtreemfs.pbrpc.listxattrRequest} + * + *
+     * requests a list of extended attributes of a file or directory
+     * 
+ */ public static final class Builder extends - com.google.protobuf.GeneratedMessage.Builder { - private org.xtreemfs.pbrpc.generatedinterfaces.MRC.listxattrRequest result; - + com.google.protobuf.GeneratedMessage.Builder + implements org.xtreemfs.pbrpc.generatedinterfaces.MRC.listxattrRequestOrBuilder { + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return org.xtreemfs.pbrpc.generatedinterfaces.MRC.internal_static_xtreemfs_pbrpc_listxattrRequest_descriptor; + } + + protected com.google.protobuf.GeneratedMessage.FieldAccessorTable + internalGetFieldAccessorTable() { + return org.xtreemfs.pbrpc.generatedinterfaces.MRC.internal_static_xtreemfs_pbrpc_listxattrRequest_fieldAccessorTable + .ensureFieldAccessorsInitialized( + org.xtreemfs.pbrpc.generatedinterfaces.MRC.listxattrRequest.class, org.xtreemfs.pbrpc.generatedinterfaces.MRC.listxattrRequest.Builder.class); + } + // Construct using org.xtreemfs.pbrpc.generatedinterfaces.MRC.listxattrRequest.newBuilder() - private Builder() {} - - private static Builder create() { - Builder builder = new Builder(); - builder.result = new org.xtreemfs.pbrpc.generatedinterfaces.MRC.listxattrRequest(); - return builder; + private Builder() { + maybeForceBuilderInitialization(); } - - protected org.xtreemfs.pbrpc.generatedinterfaces.MRC.listxattrRequest internalGetResult() { - return result; + + private Builder( + com.google.protobuf.GeneratedMessage.BuilderParent parent) { + super(parent); + maybeForceBuilderInitialization(); } - - public Builder clear() { - if (result == null) { - throw new IllegalStateException( - "Cannot call clear() after build()."); + private void maybeForceBuilderInitialization() { + if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) { } - result = new org.xtreemfs.pbrpc.generatedinterfaces.MRC.listxattrRequest(); + } + private static Builder create() { + return new Builder(); + } + + public Builder clear() { + super.clear(); + volumeName_ = ""; + bitField0_ = (bitField0_ & ~0x00000001); + path_ = ""; + bitField0_ = (bitField0_ & ~0x00000002); + namesOnly_ = false; + bitField0_ = (bitField0_ & ~0x00000004); return this; } - + public Builder clone() { - return create().mergeFrom(result); + return create().mergeFrom(buildPartial()); } - + public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() { - return org.xtreemfs.pbrpc.generatedinterfaces.MRC.listxattrRequest.getDescriptor(); + return org.xtreemfs.pbrpc.generatedinterfaces.MRC.internal_static_xtreemfs_pbrpc_listxattrRequest_descriptor; } - + public org.xtreemfs.pbrpc.generatedinterfaces.MRC.listxattrRequest getDefaultInstanceForType() { return org.xtreemfs.pbrpc.generatedinterfaces.MRC.listxattrRequest.getDefaultInstance(); } - - public boolean isInitialized() { - return result.isInitialized(); - } + public org.xtreemfs.pbrpc.generatedinterfaces.MRC.listxattrRequest build() { - if (result != null && !isInitialized()) { + org.xtreemfs.pbrpc.generatedinterfaces.MRC.listxattrRequest result = buildPartial(); + if (!result.isInitialized()) { throw newUninitializedMessageException(result); } - return buildPartial(); - } - - private org.xtreemfs.pbrpc.generatedinterfaces.MRC.listxattrRequest buildParsed() - throws com.google.protobuf.InvalidProtocolBufferException { - if (!isInitialized()) { - throw newUninitializedMessageException( - result).asInvalidProtocolBufferException(); - } - return buildPartial(); + return result; } - + public org.xtreemfs.pbrpc.generatedinterfaces.MRC.listxattrRequest buildPartial() { - if (result == null) { - throw new IllegalStateException( - "build() has already been called on this Builder."); - } - org.xtreemfs.pbrpc.generatedinterfaces.MRC.listxattrRequest returnMe = result; - result = null; - return returnMe; + org.xtreemfs.pbrpc.generatedinterfaces.MRC.listxattrRequest result = new org.xtreemfs.pbrpc.generatedinterfaces.MRC.listxattrRequest(this); + int from_bitField0_ = bitField0_; + int to_bitField0_ = 0; + if (((from_bitField0_ & 0x00000001) == 0x00000001)) { + to_bitField0_ |= 0x00000001; + } + result.volumeName_ = volumeName_; + if (((from_bitField0_ & 0x00000002) == 0x00000002)) { + to_bitField0_ |= 0x00000002; + } + result.path_ = path_; + if (((from_bitField0_ & 0x00000004) == 0x00000004)) { + to_bitField0_ |= 0x00000004; + } + result.namesOnly_ = namesOnly_; + result.bitField0_ = to_bitField0_; + onBuilt(); + return result; } - + public Builder mergeFrom(com.google.protobuf.Message other) { if (other instanceof org.xtreemfs.pbrpc.generatedinterfaces.MRC.listxattrRequest) { return mergeFrom((org.xtreemfs.pbrpc.generatedinterfaces.MRC.listxattrRequest)other); @@ -6326,14 +15699,18 @@ public final class MRC { return this; } } - + public Builder mergeFrom(org.xtreemfs.pbrpc.generatedinterfaces.MRC.listxattrRequest other) { if (other == org.xtreemfs.pbrpc.generatedinterfaces.MRC.listxattrRequest.getDefaultInstance()) return this; if (other.hasVolumeName()) { - setVolumeName(other.getVolumeName()); + bitField0_ |= 0x00000001; + volumeName_ = other.volumeName_; + onChanged(); } if (other.hasPath()) { - setPath(other.getPath()); + bitField0_ |= 0x00000002; + path_ = other.path_; + onChanged(); } if (other.hasNamesOnly()) { setNamesOnly(other.getNamesOnly()); @@ -6341,335 +15718,671 @@ public final class MRC { this.mergeUnknownFields(other.getUnknownFields()); return this; } - + + public final boolean isInitialized() { + if (!hasVolumeName()) { + + return false; + } + if (!hasPath()) { + + return false; + } + if (!hasNamesOnly()) { + + return false; + } + return true; + } + public Builder mergeFrom( com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - com.google.protobuf.UnknownFieldSet.Builder unknownFields = - com.google.protobuf.UnknownFieldSet.newBuilder( - this.getUnknownFields()); - while (true) { - int tag = input.readTag(); - switch (tag) { - case 0: - this.setUnknownFields(unknownFields.build()); - return this; - default: { - if (!parseUnknownField(input, unknownFields, - extensionRegistry, tag)) { - this.setUnknownFields(unknownFields.build()); - return this; - } - break; - } - case 10: { - setVolumeName(input.readString()); - break; - } - case 18: { - setPath(input.readString()); - break; - } - case 24: { - setNamesOnly(input.readBool()); - break; - } + org.xtreemfs.pbrpc.generatedinterfaces.MRC.listxattrRequest parsedMessage = null; + try { + parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + parsedMessage = (org.xtreemfs.pbrpc.generatedinterfaces.MRC.listxattrRequest) e.getUnfinishedMessage(); + throw e; + } finally { + if (parsedMessage != null) { + mergeFrom(parsedMessage); } } + return this; } - - + private int bitField0_; + // required string volume_name = 1; + private java.lang.Object volumeName_ = ""; + /** + * required string volume_name = 1; + * + *
+       * the volume name
+       * 
+ */ public boolean hasVolumeName() { - return result.hasVolumeName(); - } + return ((bitField0_ & 0x00000001) == 0x00000001); + } + /** + * required string volume_name = 1; + * + *
+       * the volume name
+       * 
+ */ public java.lang.String getVolumeName() { - return result.getVolumeName(); - } - public Builder setVolumeName(java.lang.String value) { + java.lang.Object ref = volumeName_; + if (!(ref instanceof java.lang.String)) { + java.lang.String s = ((com.google.protobuf.ByteString) ref) + .toStringUtf8(); + volumeName_ = s; + return s; + } else { + return (java.lang.String) ref; + } + } + /** + * required string volume_name = 1; + * + *
+       * the volume name
+       * 
+ */ + public com.google.protobuf.ByteString + getVolumeNameBytes() { + java.lang.Object ref = volumeName_; + if (ref instanceof String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + volumeName_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + /** + * required string volume_name = 1; + * + *
+       * the volume name
+       * 
+ */ + public Builder setVolumeName( + java.lang.String value) { if (value == null) { throw new NullPointerException(); } - result.hasVolumeName = true; - result.volumeName_ = value; - return this; - } + bitField0_ |= 0x00000001; + volumeName_ = value; + onChanged(); + return this; + } + /** + * required string volume_name = 1; + * + *
+       * the volume name
+       * 
+ */ public Builder clearVolumeName() { - result.hasVolumeName = false; - result.volumeName_ = getDefaultInstance().getVolumeName(); + bitField0_ = (bitField0_ & ~0x00000001); + volumeName_ = getDefaultInstance().getVolumeName(); + onChanged(); + return this; + } + /** + * required string volume_name = 1; + * + *
+       * the volume name
+       * 
+ */ + public Builder setVolumeNameBytes( + com.google.protobuf.ByteString value) { + if (value == null) { + throw new NullPointerException(); + } + bitField0_ |= 0x00000001; + volumeName_ = value; + onChanged(); return this; } - + // required string path = 2; + private java.lang.Object path_ = ""; + /** + * required string path = 2; + * + *
+       * the path to the file or directory, relative to the volume root
+       * 
+ */ public boolean hasPath() { - return result.hasPath(); - } + return ((bitField0_ & 0x00000002) == 0x00000002); + } + /** + * required string path = 2; + * + *
+       * the path to the file or directory, relative to the volume root
+       * 
+ */ public java.lang.String getPath() { - return result.getPath(); - } - public Builder setPath(java.lang.String value) { + java.lang.Object ref = path_; + if (!(ref instanceof java.lang.String)) { + java.lang.String s = ((com.google.protobuf.ByteString) ref) + .toStringUtf8(); + path_ = s; + return s; + } else { + return (java.lang.String) ref; + } + } + /** + * required string path = 2; + * + *
+       * the path to the file or directory, relative to the volume root
+       * 
+ */ + public com.google.protobuf.ByteString + getPathBytes() { + java.lang.Object ref = path_; + if (ref instanceof String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + path_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + /** + * required string path = 2; + * + *
+       * the path to the file or directory, relative to the volume root
+       * 
+ */ + public Builder setPath( + java.lang.String value) { if (value == null) { throw new NullPointerException(); } - result.hasPath = true; - result.path_ = value; - return this; - } + bitField0_ |= 0x00000002; + path_ = value; + onChanged(); + return this; + } + /** + * required string path = 2; + * + *
+       * the path to the file or directory, relative to the volume root
+       * 
+ */ public Builder clearPath() { - result.hasPath = false; - result.path_ = getDefaultInstance().getPath(); + bitField0_ = (bitField0_ & ~0x00000002); + path_ = getDefaultInstance().getPath(); + onChanged(); + return this; + } + /** + * required string path = 2; + * + *
+       * the path to the file or directory, relative to the volume root
+       * 
+ */ + public Builder setPathBytes( + com.google.protobuf.ByteString value) { + if (value == null) { + throw new NullPointerException(); + } + bitField0_ |= 0x00000002; + path_ = value; + onChanged(); return this; } - + // required bool names_only = 3; + private boolean namesOnly_ ; + /** + * required bool names_only = 3; + * + *
+       * a flag indicating that no attribute values are supposed to be returned
+       * 
+ */ public boolean hasNamesOnly() { - return result.hasNamesOnly(); - } + return ((bitField0_ & 0x00000004) == 0x00000004); + } + /** + * required bool names_only = 3; + * + *
+       * a flag indicating that no attribute values are supposed to be returned
+       * 
+ */ public boolean getNamesOnly() { - return result.getNamesOnly(); - } + return namesOnly_; + } + /** + * required bool names_only = 3; + * + *
+       * a flag indicating that no attribute values are supposed to be returned
+       * 
+ */ public Builder setNamesOnly(boolean value) { - result.hasNamesOnly = true; - result.namesOnly_ = value; - return this; - } + bitField0_ |= 0x00000004; + namesOnly_ = value; + onChanged(); + return this; + } + /** + * required bool names_only = 3; + * + *
+       * a flag indicating that no attribute values are supposed to be returned
+       * 
+ */ public Builder clearNamesOnly() { - result.hasNamesOnly = false; - result.namesOnly_ = false; + bitField0_ = (bitField0_ & ~0x00000004); + namesOnly_ = false; + onChanged(); return this; } - + // @@protoc_insertion_point(builder_scope:xtreemfs.pbrpc.listxattrRequest) } - + static { defaultInstance = new listxattrRequest(true); - org.xtreemfs.pbrpc.generatedinterfaces.MRC.internalForceInit(); defaultInstance.initFields(); } - + // @@protoc_insertion_point(class_scope:xtreemfs.pbrpc.listxattrRequest) } - + + public interface listxattrResponseOrBuilder + extends com.google.protobuf.MessageOrBuilder { + + // repeated .xtreemfs.pbrpc.XAttr xattrs = 1; + /** + * repeated .xtreemfs.pbrpc.XAttr xattrs = 1; + */ + java.util.List + getXattrsList(); + /** + * repeated .xtreemfs.pbrpc.XAttr xattrs = 1; + */ + org.xtreemfs.pbrpc.generatedinterfaces.MRC.XAttr getXattrs(int index); + /** + * repeated .xtreemfs.pbrpc.XAttr xattrs = 1; + */ + int getXattrsCount(); + /** + * repeated .xtreemfs.pbrpc.XAttr xattrs = 1; + */ + java.util.List + getXattrsOrBuilderList(); + /** + * repeated .xtreemfs.pbrpc.XAttr xattrs = 1; + */ + org.xtreemfs.pbrpc.generatedinterfaces.MRC.XAttrOrBuilder getXattrsOrBuilder( + int index); + } + /** + * Protobuf type {@code xtreemfs.pbrpc.listxattrResponse} + * + *
+   * returns a list of extended attributes of a file or directory
+   * 
+ */ public static final class listxattrResponse extends - com.google.protobuf.GeneratedMessage { + com.google.protobuf.GeneratedMessage + implements listxattrResponseOrBuilder { // Use listxattrResponse.newBuilder() to construct. - private listxattrResponse() { - initFields(); + private listxattrResponse(com.google.protobuf.GeneratedMessage.Builder builder) { + super(builder); + this.unknownFields = builder.getUnknownFields(); } - private listxattrResponse(boolean noInit) {} - + private listxattrResponse(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); } + private static final listxattrResponse defaultInstance; public static listxattrResponse getDefaultInstance() { return defaultInstance; } - + public listxattrResponse getDefaultInstanceForType() { return defaultInstance; } - - public static final com.google.protobuf.Descriptors.Descriptor - getDescriptor() { - return org.xtreemfs.pbrpc.generatedinterfaces.MRC.internal_static_xtreemfs_pbrpc_listxattrResponse_descriptor; - } - - protected com.google.protobuf.GeneratedMessage.FieldAccessorTable - internalGetFieldAccessorTable() { - return org.xtreemfs.pbrpc.generatedinterfaces.MRC.internal_static_xtreemfs_pbrpc_listxattrResponse_fieldAccessorTable; - } - - // repeated .xtreemfs.pbrpc.XAttr xattrs = 1; - public static final int XATTRS_FIELD_NUMBER = 1; - private java.util.List xattrs_ = - java.util.Collections.emptyList(); - public java.util.List getXattrsList() { - return xattrs_; + + private final com.google.protobuf.UnknownFieldSet unknownFields; + @java.lang.Override + public final com.google.protobuf.UnknownFieldSet + getUnknownFields() { + return this.unknownFields; } - public int getXattrsCount() { return xattrs_.size(); } - public org.xtreemfs.pbrpc.generatedinterfaces.MRC.XAttr getXattrs(int index) { - return xattrs_.get(index); + private listxattrResponse( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + initFields(); + int mutable_bitField0_ = 0; + com.google.protobuf.UnknownFieldSet.Builder unknownFields = + com.google.protobuf.UnknownFieldSet.newBuilder(); + try { + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch (tag) { + case 0: + done = true; + break; + default: { + if (!parseUnknownField(input, unknownFields, + extensionRegistry, tag)) { + done = true; + } + break; + } + case 10: { + if (!((mutable_bitField0_ & 0x00000001) == 0x00000001)) { + xattrs_ = new java.util.ArrayList(); + mutable_bitField0_ |= 0x00000001; + } + xattrs_.add(input.readMessage(org.xtreemfs.pbrpc.generatedinterfaces.MRC.XAttr.PARSER, extensionRegistry)); + break; + } + } + } + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(this); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException( + e.getMessage()).setUnfinishedMessage(this); + } finally { + if (((mutable_bitField0_ & 0x00000001) == 0x00000001)) { + xattrs_ = java.util.Collections.unmodifiableList(xattrs_); + } + this.unknownFields = unknownFields.build(); + makeExtensionsImmutable(); + } + } + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return org.xtreemfs.pbrpc.generatedinterfaces.MRC.internal_static_xtreemfs_pbrpc_listxattrResponse_descriptor; + } + + protected com.google.protobuf.GeneratedMessage.FieldAccessorTable + internalGetFieldAccessorTable() { + return org.xtreemfs.pbrpc.generatedinterfaces.MRC.internal_static_xtreemfs_pbrpc_listxattrResponse_fieldAccessorTable + .ensureFieldAccessorsInitialized( + org.xtreemfs.pbrpc.generatedinterfaces.MRC.listxattrResponse.class, org.xtreemfs.pbrpc.generatedinterfaces.MRC.listxattrResponse.Builder.class); + } + + public static com.google.protobuf.Parser PARSER = + new com.google.protobuf.AbstractParser() { + public listxattrResponse parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return new listxattrResponse(input, extensionRegistry); + } + }; + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; + } + + // repeated .xtreemfs.pbrpc.XAttr xattrs = 1; + public static final int XATTRS_FIELD_NUMBER = 1; + private java.util.List xattrs_; + /** + * repeated .xtreemfs.pbrpc.XAttr xattrs = 1; + */ + public java.util.List getXattrsList() { + return xattrs_; + } + /** + * repeated .xtreemfs.pbrpc.XAttr xattrs = 1; + */ + public java.util.List + getXattrsOrBuilderList() { + return xattrs_; + } + /** + * repeated .xtreemfs.pbrpc.XAttr xattrs = 1; + */ + public int getXattrsCount() { + return xattrs_.size(); + } + /** + * repeated .xtreemfs.pbrpc.XAttr xattrs = 1; + */ + public org.xtreemfs.pbrpc.generatedinterfaces.MRC.XAttr getXattrs(int index) { + return xattrs_.get(index); + } + /** + * repeated .xtreemfs.pbrpc.XAttr xattrs = 1; + */ + public org.xtreemfs.pbrpc.generatedinterfaces.MRC.XAttrOrBuilder getXattrsOrBuilder( + int index) { + return xattrs_.get(index); } - + private void initFields() { + xattrs_ = java.util.Collections.emptyList(); } + private byte memoizedIsInitialized = -1; public final boolean isInitialized() { - for (org.xtreemfs.pbrpc.generatedinterfaces.MRC.XAttr element : getXattrsList()) { - if (!element.isInitialized()) return false; + byte isInitialized = memoizedIsInitialized; + if (isInitialized != -1) return isInitialized == 1; + + for (int i = 0; i < getXattrsCount(); i++) { + if (!getXattrs(i).isInitialized()) { + memoizedIsInitialized = 0; + return false; + } } + memoizedIsInitialized = 1; return true; } - + public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException { getSerializedSize(); - for (org.xtreemfs.pbrpc.generatedinterfaces.MRC.XAttr element : getXattrsList()) { - output.writeMessage(1, element); + for (int i = 0; i < xattrs_.size(); i++) { + output.writeMessage(1, xattrs_.get(i)); } getUnknownFields().writeTo(output); } - + private int memoizedSerializedSize = -1; public int getSerializedSize() { int size = memoizedSerializedSize; if (size != -1) return size; - + size = 0; - for (org.xtreemfs.pbrpc.generatedinterfaces.MRC.XAttr element : getXattrsList()) { + for (int i = 0; i < xattrs_.size(); i++) { size += com.google.protobuf.CodedOutputStream - .computeMessageSize(1, element); + .computeMessageSize(1, xattrs_.get(i)); } size += getUnknownFields().getSerializedSize(); memoizedSerializedSize = size; return size; } - + + private static final long serialVersionUID = 0L; + @java.lang.Override + protected java.lang.Object writeReplace() + throws java.io.ObjectStreamException { + return super.writeReplace(); + } + public static org.xtreemfs.pbrpc.generatedinterfaces.MRC.listxattrResponse parseFrom( com.google.protobuf.ByteString data) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data).buildParsed(); + return PARSER.parseFrom(data); } public static org.xtreemfs.pbrpc.generatedinterfaces.MRC.listxattrResponse parseFrom( com.google.protobuf.ByteString data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(data, extensionRegistry); } public static org.xtreemfs.pbrpc.generatedinterfaces.MRC.listxattrResponse parseFrom(byte[] data) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data).buildParsed(); + return PARSER.parseFrom(data); } public static org.xtreemfs.pbrpc.generatedinterfaces.MRC.listxattrResponse parseFrom( byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(data, extensionRegistry); } public static org.xtreemfs.pbrpc.generatedinterfaces.MRC.listxattrResponse parseFrom(java.io.InputStream input) throws java.io.IOException { - return newBuilder().mergeFrom(input).buildParsed(); + return PARSER.parseFrom(input); } public static org.xtreemfs.pbrpc.generatedinterfaces.MRC.listxattrResponse parseFrom( java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - return newBuilder().mergeFrom(input, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(input, extensionRegistry); } public static org.xtreemfs.pbrpc.generatedinterfaces.MRC.listxattrResponse parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException { - Builder builder = newBuilder(); - if (builder.mergeDelimitedFrom(input)) { - return builder.buildParsed(); - } else { - return null; - } + return PARSER.parseDelimitedFrom(input); } public static org.xtreemfs.pbrpc.generatedinterfaces.MRC.listxattrResponse parseDelimitedFrom( java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - Builder builder = newBuilder(); - if (builder.mergeDelimitedFrom(input, extensionRegistry)) { - return builder.buildParsed(); - } else { - return null; - } + return PARSER.parseDelimitedFrom(input, extensionRegistry); } public static org.xtreemfs.pbrpc.generatedinterfaces.MRC.listxattrResponse parseFrom( com.google.protobuf.CodedInputStream input) throws java.io.IOException { - return newBuilder().mergeFrom(input).buildParsed(); + return PARSER.parseFrom(input); } public static org.xtreemfs.pbrpc.generatedinterfaces.MRC.listxattrResponse parseFrom( com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - return newBuilder().mergeFrom(input, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(input, extensionRegistry); } - + public static Builder newBuilder() { return Builder.create(); } public Builder newBuilderForType() { return newBuilder(); } public static Builder newBuilder(org.xtreemfs.pbrpc.generatedinterfaces.MRC.listxattrResponse prototype) { return newBuilder().mergeFrom(prototype); } public Builder toBuilder() { return newBuilder(this); } - + + @java.lang.Override + protected Builder newBuilderForType( + com.google.protobuf.GeneratedMessage.BuilderParent parent) { + Builder builder = new Builder(parent); + return builder; + } + /** + * Protobuf type {@code xtreemfs.pbrpc.listxattrResponse} + * + *
+     * returns a list of extended attributes of a file or directory
+     * 
+ */ public static final class Builder extends - com.google.protobuf.GeneratedMessage.Builder { - private org.xtreemfs.pbrpc.generatedinterfaces.MRC.listxattrResponse result; - + com.google.protobuf.GeneratedMessage.Builder + implements org.xtreemfs.pbrpc.generatedinterfaces.MRC.listxattrResponseOrBuilder { + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return org.xtreemfs.pbrpc.generatedinterfaces.MRC.internal_static_xtreemfs_pbrpc_listxattrResponse_descriptor; + } + + protected com.google.protobuf.GeneratedMessage.FieldAccessorTable + internalGetFieldAccessorTable() { + return org.xtreemfs.pbrpc.generatedinterfaces.MRC.internal_static_xtreemfs_pbrpc_listxattrResponse_fieldAccessorTable + .ensureFieldAccessorsInitialized( + org.xtreemfs.pbrpc.generatedinterfaces.MRC.listxattrResponse.class, org.xtreemfs.pbrpc.generatedinterfaces.MRC.listxattrResponse.Builder.class); + } + // Construct using org.xtreemfs.pbrpc.generatedinterfaces.MRC.listxattrResponse.newBuilder() - private Builder() {} - - private static Builder create() { - Builder builder = new Builder(); - builder.result = new org.xtreemfs.pbrpc.generatedinterfaces.MRC.listxattrResponse(); - return builder; + private Builder() { + maybeForceBuilderInitialization(); } - - protected org.xtreemfs.pbrpc.generatedinterfaces.MRC.listxattrResponse internalGetResult() { - return result; + + private Builder( + com.google.protobuf.GeneratedMessage.BuilderParent parent) { + super(parent); + maybeForceBuilderInitialization(); + } + private void maybeForceBuilderInitialization() { + if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) { + getXattrsFieldBuilder(); + } } - + private static Builder create() { + return new Builder(); + } + public Builder clear() { - if (result == null) { - throw new IllegalStateException( - "Cannot call clear() after build()."); + super.clear(); + if (xattrsBuilder_ == null) { + xattrs_ = java.util.Collections.emptyList(); + bitField0_ = (bitField0_ & ~0x00000001); + } else { + xattrsBuilder_.clear(); } - result = new org.xtreemfs.pbrpc.generatedinterfaces.MRC.listxattrResponse(); return this; } - + public Builder clone() { - return create().mergeFrom(result); + return create().mergeFrom(buildPartial()); } - + public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() { - return org.xtreemfs.pbrpc.generatedinterfaces.MRC.listxattrResponse.getDescriptor(); + return org.xtreemfs.pbrpc.generatedinterfaces.MRC.internal_static_xtreemfs_pbrpc_listxattrResponse_descriptor; } - + public org.xtreemfs.pbrpc.generatedinterfaces.MRC.listxattrResponse getDefaultInstanceForType() { return org.xtreemfs.pbrpc.generatedinterfaces.MRC.listxattrResponse.getDefaultInstance(); } - - public boolean isInitialized() { - return result.isInitialized(); - } + public org.xtreemfs.pbrpc.generatedinterfaces.MRC.listxattrResponse build() { - if (result != null && !isInitialized()) { + org.xtreemfs.pbrpc.generatedinterfaces.MRC.listxattrResponse result = buildPartial(); + if (!result.isInitialized()) { throw newUninitializedMessageException(result); } - return buildPartial(); - } - - private org.xtreemfs.pbrpc.generatedinterfaces.MRC.listxattrResponse buildParsed() - throws com.google.protobuf.InvalidProtocolBufferException { - if (!isInitialized()) { - throw newUninitializedMessageException( - result).asInvalidProtocolBufferException(); - } - return buildPartial(); + return result; } - + public org.xtreemfs.pbrpc.generatedinterfaces.MRC.listxattrResponse buildPartial() { - if (result == null) { - throw new IllegalStateException( - "build() has already been called on this Builder."); - } - if (result.xattrs_ != java.util.Collections.EMPTY_LIST) { - result.xattrs_ = - java.util.Collections.unmodifiableList(result.xattrs_); + org.xtreemfs.pbrpc.generatedinterfaces.MRC.listxattrResponse result = new org.xtreemfs.pbrpc.generatedinterfaces.MRC.listxattrResponse(this); + int from_bitField0_ = bitField0_; + if (xattrsBuilder_ == null) { + if (((bitField0_ & 0x00000001) == 0x00000001)) { + xattrs_ = java.util.Collections.unmodifiableList(xattrs_); + bitField0_ = (bitField0_ & ~0x00000001); + } + result.xattrs_ = xattrs_; + } else { + result.xattrs_ = xattrsBuilder_.build(); } - org.xtreemfs.pbrpc.generatedinterfaces.MRC.listxattrResponse returnMe = result; - result = null; - return returnMe; + onBuilt(); + return result; } - + public Builder mergeFrom(com.google.protobuf.Message other) { if (other instanceof org.xtreemfs.pbrpc.generatedinterfaces.MRC.listxattrResponse) { return mergeFrom((org.xtreemfs.pbrpc.generatedinterfaces.MRC.listxattrResponse)other); @@ -6678,351 +16391,868 @@ public final class MRC { return this; } } - + public Builder mergeFrom(org.xtreemfs.pbrpc.generatedinterfaces.MRC.listxattrResponse other) { if (other == org.xtreemfs.pbrpc.generatedinterfaces.MRC.listxattrResponse.getDefaultInstance()) return this; - if (!other.xattrs_.isEmpty()) { - if (result.xattrs_.isEmpty()) { - result.xattrs_ = new java.util.ArrayList(); + if (xattrsBuilder_ == null) { + if (!other.xattrs_.isEmpty()) { + if (xattrs_.isEmpty()) { + xattrs_ = other.xattrs_; + bitField0_ = (bitField0_ & ~0x00000001); + } else { + ensureXattrsIsMutable(); + xattrs_.addAll(other.xattrs_); + } + onChanged(); + } + } else { + if (!other.xattrs_.isEmpty()) { + if (xattrsBuilder_.isEmpty()) { + xattrsBuilder_.dispose(); + xattrsBuilder_ = null; + xattrs_ = other.xattrs_; + bitField0_ = (bitField0_ & ~0x00000001); + xattrsBuilder_ = + com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ? + getXattrsFieldBuilder() : null; + } else { + xattrsBuilder_.addAllMessages(other.xattrs_); + } } - result.xattrs_.addAll(other.xattrs_); } this.mergeUnknownFields(other.getUnknownFields()); return this; } - + + public final boolean isInitialized() { + for (int i = 0; i < getXattrsCount(); i++) { + if (!getXattrs(i).isInitialized()) { + + return false; + } + } + return true; + } + public Builder mergeFrom( com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - com.google.protobuf.UnknownFieldSet.Builder unknownFields = - com.google.protobuf.UnknownFieldSet.newBuilder( - this.getUnknownFields()); - while (true) { - int tag = input.readTag(); - switch (tag) { - case 0: - this.setUnknownFields(unknownFields.build()); - return this; - default: { - if (!parseUnknownField(input, unknownFields, - extensionRegistry, tag)) { - this.setUnknownFields(unknownFields.build()); - return this; - } - break; - } - case 10: { - org.xtreemfs.pbrpc.generatedinterfaces.MRC.XAttr.Builder subBuilder = org.xtreemfs.pbrpc.generatedinterfaces.MRC.XAttr.newBuilder(); - input.readMessage(subBuilder, extensionRegistry); - addXattrs(subBuilder.buildPartial()); - break; - } + org.xtreemfs.pbrpc.generatedinterfaces.MRC.listxattrResponse parsedMessage = null; + try { + parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + parsedMessage = (org.xtreemfs.pbrpc.generatedinterfaces.MRC.listxattrResponse) e.getUnfinishedMessage(); + throw e; + } finally { + if (parsedMessage != null) { + mergeFrom(parsedMessage); } } + return this; } - - + private int bitField0_; + // repeated .xtreemfs.pbrpc.XAttr xattrs = 1; + private java.util.List xattrs_ = + java.util.Collections.emptyList(); + private void ensureXattrsIsMutable() { + if (!((bitField0_ & 0x00000001) == 0x00000001)) { + xattrs_ = new java.util.ArrayList(xattrs_); + bitField0_ |= 0x00000001; + } + } + + private com.google.protobuf.RepeatedFieldBuilder< + org.xtreemfs.pbrpc.generatedinterfaces.MRC.XAttr, org.xtreemfs.pbrpc.generatedinterfaces.MRC.XAttr.Builder, org.xtreemfs.pbrpc.generatedinterfaces.MRC.XAttrOrBuilder> xattrsBuilder_; + + /** + * repeated .xtreemfs.pbrpc.XAttr xattrs = 1; + */ public java.util.List getXattrsList() { - return java.util.Collections.unmodifiableList(result.xattrs_); + if (xattrsBuilder_ == null) { + return java.util.Collections.unmodifiableList(xattrs_); + } else { + return xattrsBuilder_.getMessageList(); + } } + /** + * repeated .xtreemfs.pbrpc.XAttr xattrs = 1; + */ public int getXattrsCount() { - return result.getXattrsCount(); + if (xattrsBuilder_ == null) { + return xattrs_.size(); + } else { + return xattrsBuilder_.getCount(); + } } + /** + * repeated .xtreemfs.pbrpc.XAttr xattrs = 1; + */ public org.xtreemfs.pbrpc.generatedinterfaces.MRC.XAttr getXattrs(int index) { - return result.getXattrs(index); + if (xattrsBuilder_ == null) { + return xattrs_.get(index); + } else { + return xattrsBuilder_.getMessage(index); + } } - public Builder setXattrs(int index, org.xtreemfs.pbrpc.generatedinterfaces.MRC.XAttr value) { - if (value == null) { - throw new NullPointerException(); + /** + * repeated .xtreemfs.pbrpc.XAttr xattrs = 1; + */ + public Builder setXattrs( + int index, org.xtreemfs.pbrpc.generatedinterfaces.MRC.XAttr value) { + if (xattrsBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + ensureXattrsIsMutable(); + xattrs_.set(index, value); + onChanged(); + } else { + xattrsBuilder_.setMessage(index, value); } - result.xattrs_.set(index, value); return this; } - public Builder setXattrs(int index, org.xtreemfs.pbrpc.generatedinterfaces.MRC.XAttr.Builder builderForValue) { - result.xattrs_.set(index, builderForValue.build()); + /** + * repeated .xtreemfs.pbrpc.XAttr xattrs = 1; + */ + public Builder setXattrs( + int index, org.xtreemfs.pbrpc.generatedinterfaces.MRC.XAttr.Builder builderForValue) { + if (xattrsBuilder_ == null) { + ensureXattrsIsMutable(); + xattrs_.set(index, builderForValue.build()); + onChanged(); + } else { + xattrsBuilder_.setMessage(index, builderForValue.build()); + } return this; } + /** + * repeated .xtreemfs.pbrpc.XAttr xattrs = 1; + */ public Builder addXattrs(org.xtreemfs.pbrpc.generatedinterfaces.MRC.XAttr value) { - if (value == null) { - throw new NullPointerException(); + if (xattrsBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + ensureXattrsIsMutable(); + xattrs_.add(value); + onChanged(); + } else { + xattrsBuilder_.addMessage(value); + } + return this; + } + /** + * repeated .xtreemfs.pbrpc.XAttr xattrs = 1; + */ + public Builder addXattrs( + int index, org.xtreemfs.pbrpc.generatedinterfaces.MRC.XAttr value) { + if (xattrsBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + ensureXattrsIsMutable(); + xattrs_.add(index, value); + onChanged(); + } else { + xattrsBuilder_.addMessage(index, value); } - if (result.xattrs_.isEmpty()) { - result.xattrs_ = new java.util.ArrayList(); + return this; + } + /** + * repeated .xtreemfs.pbrpc.XAttr xattrs = 1; + */ + public Builder addXattrs( + org.xtreemfs.pbrpc.generatedinterfaces.MRC.XAttr.Builder builderForValue) { + if (xattrsBuilder_ == null) { + ensureXattrsIsMutable(); + xattrs_.add(builderForValue.build()); + onChanged(); + } else { + xattrsBuilder_.addMessage(builderForValue.build()); } - result.xattrs_.add(value); return this; } - public Builder addXattrs(org.xtreemfs.pbrpc.generatedinterfaces.MRC.XAttr.Builder builderForValue) { - if (result.xattrs_.isEmpty()) { - result.xattrs_ = new java.util.ArrayList(); + /** + * repeated .xtreemfs.pbrpc.XAttr xattrs = 1; + */ + public Builder addXattrs( + int index, org.xtreemfs.pbrpc.generatedinterfaces.MRC.XAttr.Builder builderForValue) { + if (xattrsBuilder_ == null) { + ensureXattrsIsMutable(); + xattrs_.add(index, builderForValue.build()); + onChanged(); + } else { + xattrsBuilder_.addMessage(index, builderForValue.build()); } - result.xattrs_.add(builderForValue.build()); return this; } + /** + * repeated .xtreemfs.pbrpc.XAttr xattrs = 1; + */ public Builder addAllXattrs( java.lang.Iterable values) { - if (result.xattrs_.isEmpty()) { - result.xattrs_ = new java.util.ArrayList(); + if (xattrsBuilder_ == null) { + ensureXattrsIsMutable(); + super.addAll(values, xattrs_); + onChanged(); + } else { + xattrsBuilder_.addAllMessages(values); } - super.addAll(values, result.xattrs_); return this; } + /** + * repeated .xtreemfs.pbrpc.XAttr xattrs = 1; + */ public Builder clearXattrs() { - result.xattrs_ = java.util.Collections.emptyList(); + if (xattrsBuilder_ == null) { + xattrs_ = java.util.Collections.emptyList(); + bitField0_ = (bitField0_ & ~0x00000001); + onChanged(); + } else { + xattrsBuilder_.clear(); + } return this; } - + /** + * repeated .xtreemfs.pbrpc.XAttr xattrs = 1; + */ + public Builder removeXattrs(int index) { + if (xattrsBuilder_ == null) { + ensureXattrsIsMutable(); + xattrs_.remove(index); + onChanged(); + } else { + xattrsBuilder_.remove(index); + } + return this; + } + /** + * repeated .xtreemfs.pbrpc.XAttr xattrs = 1; + */ + public org.xtreemfs.pbrpc.generatedinterfaces.MRC.XAttr.Builder getXattrsBuilder( + int index) { + return getXattrsFieldBuilder().getBuilder(index); + } + /** + * repeated .xtreemfs.pbrpc.XAttr xattrs = 1; + */ + public org.xtreemfs.pbrpc.generatedinterfaces.MRC.XAttrOrBuilder getXattrsOrBuilder( + int index) { + if (xattrsBuilder_ == null) { + return xattrs_.get(index); } else { + return xattrsBuilder_.getMessageOrBuilder(index); + } + } + /** + * repeated .xtreemfs.pbrpc.XAttr xattrs = 1; + */ + public java.util.List + getXattrsOrBuilderList() { + if (xattrsBuilder_ != null) { + return xattrsBuilder_.getMessageOrBuilderList(); + } else { + return java.util.Collections.unmodifiableList(xattrs_); + } + } + /** + * repeated .xtreemfs.pbrpc.XAttr xattrs = 1; + */ + public org.xtreemfs.pbrpc.generatedinterfaces.MRC.XAttr.Builder addXattrsBuilder() { + return getXattrsFieldBuilder().addBuilder( + org.xtreemfs.pbrpc.generatedinterfaces.MRC.XAttr.getDefaultInstance()); + } + /** + * repeated .xtreemfs.pbrpc.XAttr xattrs = 1; + */ + public org.xtreemfs.pbrpc.generatedinterfaces.MRC.XAttr.Builder addXattrsBuilder( + int index) { + return getXattrsFieldBuilder().addBuilder( + index, org.xtreemfs.pbrpc.generatedinterfaces.MRC.XAttr.getDefaultInstance()); + } + /** + * repeated .xtreemfs.pbrpc.XAttr xattrs = 1; + */ + public java.util.List + getXattrsBuilderList() { + return getXattrsFieldBuilder().getBuilderList(); + } + private com.google.protobuf.RepeatedFieldBuilder< + org.xtreemfs.pbrpc.generatedinterfaces.MRC.XAttr, org.xtreemfs.pbrpc.generatedinterfaces.MRC.XAttr.Builder, org.xtreemfs.pbrpc.generatedinterfaces.MRC.XAttrOrBuilder> + getXattrsFieldBuilder() { + if (xattrsBuilder_ == null) { + xattrsBuilder_ = new com.google.protobuf.RepeatedFieldBuilder< + org.xtreemfs.pbrpc.generatedinterfaces.MRC.XAttr, org.xtreemfs.pbrpc.generatedinterfaces.MRC.XAttr.Builder, org.xtreemfs.pbrpc.generatedinterfaces.MRC.XAttrOrBuilder>( + xattrs_, + ((bitField0_ & 0x00000001) == 0x00000001), + getParentForChildren(), + isClean()); + xattrs_ = null; + } + return xattrsBuilder_; + } + // @@protoc_insertion_point(builder_scope:xtreemfs.pbrpc.listxattrResponse) } - + static { defaultInstance = new listxattrResponse(true); - org.xtreemfs.pbrpc.generatedinterfaces.MRC.internalForceInit(); defaultInstance.initFields(); } - + // @@protoc_insertion_point(class_scope:xtreemfs.pbrpc.listxattrResponse) } - + + public interface mkdirRequestOrBuilder + extends com.google.protobuf.MessageOrBuilder { + + // required string volume_name = 1; + /** + * required string volume_name = 1; + * + *
+     * the volume name
+     * 
+ */ + boolean hasVolumeName(); + /** + * required string volume_name = 1; + * + *
+     * the volume name
+     * 
+ */ + java.lang.String getVolumeName(); + /** + * required string volume_name = 1; + * + *
+     * the volume name
+     * 
+ */ + com.google.protobuf.ByteString + getVolumeNameBytes(); + + // required string path = 2; + /** + * required string path = 2; + * + *
+     * the path to the file or directory, relative to the volume root
+     * 
+ */ + boolean hasPath(); + /** + * required string path = 2; + * + *
+     * the path to the file or directory, relative to the volume root
+     * 
+ */ + java.lang.String getPath(); + /** + * required string path = 2; + * + *
+     * the path to the file or directory, relative to the volume root
+     * 
+ */ + com.google.protobuf.ByteString + getPathBytes(); + + // required fixed32 mode = 3; + /** + * required fixed32 mode = 3; + * + *
+     * the initial access mode of the newly created directory
+     * 
+ */ + boolean hasMode(); + /** + * required fixed32 mode = 3; + * + *
+     * the initial access mode of the newly created directory
+     * 
+ */ + int getMode(); + } + /** + * Protobuf type {@code xtreemfs.pbrpc.mkdirRequest} + * + *
+   * creates a new directory
+   * 
+ */ public static final class mkdirRequest extends - com.google.protobuf.GeneratedMessage { + com.google.protobuf.GeneratedMessage + implements mkdirRequestOrBuilder { // Use mkdirRequest.newBuilder() to construct. - private mkdirRequest() { - initFields(); + private mkdirRequest(com.google.protobuf.GeneratedMessage.Builder builder) { + super(builder); + this.unknownFields = builder.getUnknownFields(); } - private mkdirRequest(boolean noInit) {} - + private mkdirRequest(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); } + private static final mkdirRequest defaultInstance; public static mkdirRequest getDefaultInstance() { return defaultInstance; } - + public mkdirRequest getDefaultInstanceForType() { return defaultInstance; } - + + private final com.google.protobuf.UnknownFieldSet unknownFields; + @java.lang.Override + public final com.google.protobuf.UnknownFieldSet + getUnknownFields() { + return this.unknownFields; + } + private mkdirRequest( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + initFields(); + int mutable_bitField0_ = 0; + com.google.protobuf.UnknownFieldSet.Builder unknownFields = + com.google.protobuf.UnknownFieldSet.newBuilder(); + try { + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch (tag) { + case 0: + done = true; + break; + default: { + if (!parseUnknownField(input, unknownFields, + extensionRegistry, tag)) { + done = true; + } + break; + } + case 10: { + bitField0_ |= 0x00000001; + volumeName_ = input.readBytes(); + break; + } + case 18: { + bitField0_ |= 0x00000002; + path_ = input.readBytes(); + break; + } + case 29: { + bitField0_ |= 0x00000004; + mode_ = input.readFixed32(); + break; + } + } + } + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(this); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException( + e.getMessage()).setUnfinishedMessage(this); + } finally { + this.unknownFields = unknownFields.build(); + makeExtensionsImmutable(); + } + } public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { return org.xtreemfs.pbrpc.generatedinterfaces.MRC.internal_static_xtreemfs_pbrpc_mkdirRequest_descriptor; } - + protected com.google.protobuf.GeneratedMessage.FieldAccessorTable internalGetFieldAccessorTable() { - return org.xtreemfs.pbrpc.generatedinterfaces.MRC.internal_static_xtreemfs_pbrpc_mkdirRequest_fieldAccessorTable; + return org.xtreemfs.pbrpc.generatedinterfaces.MRC.internal_static_xtreemfs_pbrpc_mkdirRequest_fieldAccessorTable + .ensureFieldAccessorsInitialized( + org.xtreemfs.pbrpc.generatedinterfaces.MRC.mkdirRequest.class, org.xtreemfs.pbrpc.generatedinterfaces.MRC.mkdirRequest.Builder.class); + } + + public static com.google.protobuf.Parser PARSER = + new com.google.protobuf.AbstractParser() { + public mkdirRequest parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return new mkdirRequest(input, extensionRegistry); + } + }; + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; } - + + private int bitField0_; // required string volume_name = 1; public static final int VOLUME_NAME_FIELD_NUMBER = 1; - private boolean hasVolumeName; - private java.lang.String volumeName_ = ""; - public boolean hasVolumeName() { return hasVolumeName; } - public java.lang.String getVolumeName() { return volumeName_; } - + private java.lang.Object volumeName_; + /** + * required string volume_name = 1; + * + *
+     * the volume name
+     * 
+ */ + public boolean hasVolumeName() { + return ((bitField0_ & 0x00000001) == 0x00000001); + } + /** + * required string volume_name = 1; + * + *
+     * the volume name
+     * 
+ */ + public java.lang.String getVolumeName() { + java.lang.Object ref = volumeName_; + if (ref instanceof java.lang.String) { + return (java.lang.String) ref; + } else { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + if (bs.isValidUtf8()) { + volumeName_ = s; + } + return s; + } + } + /** + * required string volume_name = 1; + * + *
+     * the volume name
+     * 
+ */ + public com.google.protobuf.ByteString + getVolumeNameBytes() { + java.lang.Object ref = volumeName_; + if (ref instanceof java.lang.String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + volumeName_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + // required string path = 2; public static final int PATH_FIELD_NUMBER = 2; - private boolean hasPath; - private java.lang.String path_ = ""; - public boolean hasPath() { return hasPath; } - public java.lang.String getPath() { return path_; } - + private java.lang.Object path_; + /** + * required string path = 2; + * + *
+     * the path to the file or directory, relative to the volume root
+     * 
+ */ + public boolean hasPath() { + return ((bitField0_ & 0x00000002) == 0x00000002); + } + /** + * required string path = 2; + * + *
+     * the path to the file or directory, relative to the volume root
+     * 
+ */ + public java.lang.String getPath() { + java.lang.Object ref = path_; + if (ref instanceof java.lang.String) { + return (java.lang.String) ref; + } else { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + if (bs.isValidUtf8()) { + path_ = s; + } + return s; + } + } + /** + * required string path = 2; + * + *
+     * the path to the file or directory, relative to the volume root
+     * 
+ */ + public com.google.protobuf.ByteString + getPathBytes() { + java.lang.Object ref = path_; + if (ref instanceof java.lang.String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + path_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + // required fixed32 mode = 3; public static final int MODE_FIELD_NUMBER = 3; - private boolean hasMode; - private int mode_ = 0; - public boolean hasMode() { return hasMode; } - public int getMode() { return mode_; } - + private int mode_; + /** + * required fixed32 mode = 3; + * + *
+     * the initial access mode of the newly created directory
+     * 
+ */ + public boolean hasMode() { + return ((bitField0_ & 0x00000004) == 0x00000004); + } + /** + * required fixed32 mode = 3; + * + *
+     * the initial access mode of the newly created directory
+     * 
+ */ + public int getMode() { + return mode_; + } + private void initFields() { + volumeName_ = ""; + path_ = ""; + mode_ = 0; } + private byte memoizedIsInitialized = -1; public final boolean isInitialized() { - if (!hasVolumeName) return false; - if (!hasPath) return false; - if (!hasMode) return false; + byte isInitialized = memoizedIsInitialized; + if (isInitialized != -1) return isInitialized == 1; + + if (!hasVolumeName()) { + memoizedIsInitialized = 0; + return false; + } + if (!hasPath()) { + memoizedIsInitialized = 0; + return false; + } + if (!hasMode()) { + memoizedIsInitialized = 0; + return false; + } + memoizedIsInitialized = 1; return true; } - + public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException { getSerializedSize(); - if (hasVolumeName()) { - output.writeString(1, getVolumeName()); + if (((bitField0_ & 0x00000001) == 0x00000001)) { + output.writeBytes(1, getVolumeNameBytes()); } - if (hasPath()) { - output.writeString(2, getPath()); + if (((bitField0_ & 0x00000002) == 0x00000002)) { + output.writeBytes(2, getPathBytes()); } - if (hasMode()) { - output.writeFixed32(3, getMode()); + if (((bitField0_ & 0x00000004) == 0x00000004)) { + output.writeFixed32(3, mode_); } getUnknownFields().writeTo(output); } - + private int memoizedSerializedSize = -1; public int getSerializedSize() { int size = memoizedSerializedSize; if (size != -1) return size; - + size = 0; - if (hasVolumeName()) { + if (((bitField0_ & 0x00000001) == 0x00000001)) { size += com.google.protobuf.CodedOutputStream - .computeStringSize(1, getVolumeName()); + .computeBytesSize(1, getVolumeNameBytes()); } - if (hasPath()) { + if (((bitField0_ & 0x00000002) == 0x00000002)) { size += com.google.protobuf.CodedOutputStream - .computeStringSize(2, getPath()); + .computeBytesSize(2, getPathBytes()); } - if (hasMode()) { + if (((bitField0_ & 0x00000004) == 0x00000004)) { size += com.google.protobuf.CodedOutputStream - .computeFixed32Size(3, getMode()); + .computeFixed32Size(3, mode_); } size += getUnknownFields().getSerializedSize(); memoizedSerializedSize = size; return size; } - + + private static final long serialVersionUID = 0L; + @java.lang.Override + protected java.lang.Object writeReplace() + throws java.io.ObjectStreamException { + return super.writeReplace(); + } + public static org.xtreemfs.pbrpc.generatedinterfaces.MRC.mkdirRequest parseFrom( com.google.protobuf.ByteString data) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data).buildParsed(); + return PARSER.parseFrom(data); } public static org.xtreemfs.pbrpc.generatedinterfaces.MRC.mkdirRequest parseFrom( com.google.protobuf.ByteString data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(data, extensionRegistry); } public static org.xtreemfs.pbrpc.generatedinterfaces.MRC.mkdirRequest parseFrom(byte[] data) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data).buildParsed(); + return PARSER.parseFrom(data); } public static org.xtreemfs.pbrpc.generatedinterfaces.MRC.mkdirRequest parseFrom( byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(data, extensionRegistry); } public static org.xtreemfs.pbrpc.generatedinterfaces.MRC.mkdirRequest parseFrom(java.io.InputStream input) throws java.io.IOException { - return newBuilder().mergeFrom(input).buildParsed(); + return PARSER.parseFrom(input); } public static org.xtreemfs.pbrpc.generatedinterfaces.MRC.mkdirRequest parseFrom( java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - return newBuilder().mergeFrom(input, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(input, extensionRegistry); } public static org.xtreemfs.pbrpc.generatedinterfaces.MRC.mkdirRequest parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException { - Builder builder = newBuilder(); - if (builder.mergeDelimitedFrom(input)) { - return builder.buildParsed(); - } else { - return null; - } + return PARSER.parseDelimitedFrom(input); } public static org.xtreemfs.pbrpc.generatedinterfaces.MRC.mkdirRequest parseDelimitedFrom( java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - Builder builder = newBuilder(); - if (builder.mergeDelimitedFrom(input, extensionRegistry)) { - return builder.buildParsed(); - } else { - return null; - } + return PARSER.parseDelimitedFrom(input, extensionRegistry); } public static org.xtreemfs.pbrpc.generatedinterfaces.MRC.mkdirRequest parseFrom( com.google.protobuf.CodedInputStream input) throws java.io.IOException { - return newBuilder().mergeFrom(input).buildParsed(); + return PARSER.parseFrom(input); } public static org.xtreemfs.pbrpc.generatedinterfaces.MRC.mkdirRequest parseFrom( com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - return newBuilder().mergeFrom(input, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(input, extensionRegistry); } - + public static Builder newBuilder() { return Builder.create(); } public Builder newBuilderForType() { return newBuilder(); } public static Builder newBuilder(org.xtreemfs.pbrpc.generatedinterfaces.MRC.mkdirRequest prototype) { return newBuilder().mergeFrom(prototype); } public Builder toBuilder() { return newBuilder(this); } - + + @java.lang.Override + protected Builder newBuilderForType( + com.google.protobuf.GeneratedMessage.BuilderParent parent) { + Builder builder = new Builder(parent); + return builder; + } + /** + * Protobuf type {@code xtreemfs.pbrpc.mkdirRequest} + * + *
+     * creates a new directory
+     * 
+ */ public static final class Builder extends - com.google.protobuf.GeneratedMessage.Builder { - private org.xtreemfs.pbrpc.generatedinterfaces.MRC.mkdirRequest result; - + com.google.protobuf.GeneratedMessage.Builder + implements org.xtreemfs.pbrpc.generatedinterfaces.MRC.mkdirRequestOrBuilder { + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return org.xtreemfs.pbrpc.generatedinterfaces.MRC.internal_static_xtreemfs_pbrpc_mkdirRequest_descriptor; + } + + protected com.google.protobuf.GeneratedMessage.FieldAccessorTable + internalGetFieldAccessorTable() { + return org.xtreemfs.pbrpc.generatedinterfaces.MRC.internal_static_xtreemfs_pbrpc_mkdirRequest_fieldAccessorTable + .ensureFieldAccessorsInitialized( + org.xtreemfs.pbrpc.generatedinterfaces.MRC.mkdirRequest.class, org.xtreemfs.pbrpc.generatedinterfaces.MRC.mkdirRequest.Builder.class); + } + // Construct using org.xtreemfs.pbrpc.generatedinterfaces.MRC.mkdirRequest.newBuilder() - private Builder() {} - - private static Builder create() { - Builder builder = new Builder(); - builder.result = new org.xtreemfs.pbrpc.generatedinterfaces.MRC.mkdirRequest(); - return builder; + private Builder() { + maybeForceBuilderInitialization(); } - - protected org.xtreemfs.pbrpc.generatedinterfaces.MRC.mkdirRequest internalGetResult() { - return result; + + private Builder( + com.google.protobuf.GeneratedMessage.BuilderParent parent) { + super(parent); + maybeForceBuilderInitialization(); } - - public Builder clear() { - if (result == null) { - throw new IllegalStateException( - "Cannot call clear() after build()."); + private void maybeForceBuilderInitialization() { + if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) { } - result = new org.xtreemfs.pbrpc.generatedinterfaces.MRC.mkdirRequest(); + } + private static Builder create() { + return new Builder(); + } + + public Builder clear() { + super.clear(); + volumeName_ = ""; + bitField0_ = (bitField0_ & ~0x00000001); + path_ = ""; + bitField0_ = (bitField0_ & ~0x00000002); + mode_ = 0; + bitField0_ = (bitField0_ & ~0x00000004); return this; } - + public Builder clone() { - return create().mergeFrom(result); + return create().mergeFrom(buildPartial()); } - + public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() { - return org.xtreemfs.pbrpc.generatedinterfaces.MRC.mkdirRequest.getDescriptor(); + return org.xtreemfs.pbrpc.generatedinterfaces.MRC.internal_static_xtreemfs_pbrpc_mkdirRequest_descriptor; } - + public org.xtreemfs.pbrpc.generatedinterfaces.MRC.mkdirRequest getDefaultInstanceForType() { return org.xtreemfs.pbrpc.generatedinterfaces.MRC.mkdirRequest.getDefaultInstance(); } - - public boolean isInitialized() { - return result.isInitialized(); - } + public org.xtreemfs.pbrpc.generatedinterfaces.MRC.mkdirRequest build() { - if (result != null && !isInitialized()) { + org.xtreemfs.pbrpc.generatedinterfaces.MRC.mkdirRequest result = buildPartial(); + if (!result.isInitialized()) { throw newUninitializedMessageException(result); } - return buildPartial(); - } - - private org.xtreemfs.pbrpc.generatedinterfaces.MRC.mkdirRequest buildParsed() - throws com.google.protobuf.InvalidProtocolBufferException { - if (!isInitialized()) { - throw newUninitializedMessageException( - result).asInvalidProtocolBufferException(); - } - return buildPartial(); + return result; } - + public org.xtreemfs.pbrpc.generatedinterfaces.MRC.mkdirRequest buildPartial() { - if (result == null) { - throw new IllegalStateException( - "build() has already been called on this Builder."); - } - org.xtreemfs.pbrpc.generatedinterfaces.MRC.mkdirRequest returnMe = result; - result = null; - return returnMe; + org.xtreemfs.pbrpc.generatedinterfaces.MRC.mkdirRequest result = new org.xtreemfs.pbrpc.generatedinterfaces.MRC.mkdirRequest(this); + int from_bitField0_ = bitField0_; + int to_bitField0_ = 0; + if (((from_bitField0_ & 0x00000001) == 0x00000001)) { + to_bitField0_ |= 0x00000001; + } + result.volumeName_ = volumeName_; + if (((from_bitField0_ & 0x00000002) == 0x00000002)) { + to_bitField0_ |= 0x00000002; + } + result.path_ = path_; + if (((from_bitField0_ & 0x00000004) == 0x00000004)) { + to_bitField0_ |= 0x00000004; + } + result.mode_ = mode_; + result.bitField0_ = to_bitField0_; + onBuilt(); + return result; } - + public Builder mergeFrom(com.google.protobuf.Message other) { if (other instanceof org.xtreemfs.pbrpc.generatedinterfaces.MRC.mkdirRequest) { return mergeFrom((org.xtreemfs.pbrpc.generatedinterfaces.MRC.mkdirRequest)other); @@ -7031,14 +17261,18 @@ public final class MRC { return this; } } - + public Builder mergeFrom(org.xtreemfs.pbrpc.generatedinterfaces.MRC.mkdirRequest other) { if (other == org.xtreemfs.pbrpc.generatedinterfaces.MRC.mkdirRequest.getDefaultInstance()) return this; if (other.hasVolumeName()) { - setVolumeName(other.getVolumeName()); + bitField0_ |= 0x00000001; + volumeName_ = other.volumeName_; + onChanged(); } if (other.hasPath()) { - setPath(other.getPath()); + bitField0_ |= 0x00000002; + path_ = other.path_; + onChanged(); } if (other.hasMode()) { setMode(other.getMode()); @@ -7046,402 +17280,1089 @@ public final class MRC { this.mergeUnknownFields(other.getUnknownFields()); return this; } - + + public final boolean isInitialized() { + if (!hasVolumeName()) { + + return false; + } + if (!hasPath()) { + + return false; + } + if (!hasMode()) { + + return false; + } + return true; + } + public Builder mergeFrom( com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - com.google.protobuf.UnknownFieldSet.Builder unknownFields = - com.google.protobuf.UnknownFieldSet.newBuilder( - this.getUnknownFields()); - while (true) { - int tag = input.readTag(); - switch (tag) { - case 0: - this.setUnknownFields(unknownFields.build()); - return this; - default: { - if (!parseUnknownField(input, unknownFields, - extensionRegistry, tag)) { - this.setUnknownFields(unknownFields.build()); - return this; - } - break; - } - case 10: { - setVolumeName(input.readString()); - break; - } - case 18: { - setPath(input.readString()); - break; - } - case 29: { - setMode(input.readFixed32()); - break; - } + org.xtreemfs.pbrpc.generatedinterfaces.MRC.mkdirRequest parsedMessage = null; + try { + parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + parsedMessage = (org.xtreemfs.pbrpc.generatedinterfaces.MRC.mkdirRequest) e.getUnfinishedMessage(); + throw e; + } finally { + if (parsedMessage != null) { + mergeFrom(parsedMessage); } } + return this; } - - + private int bitField0_; + // required string volume_name = 1; + private java.lang.Object volumeName_ = ""; + /** + * required string volume_name = 1; + * + *
+       * the volume name
+       * 
+ */ public boolean hasVolumeName() { - return result.hasVolumeName(); - } + return ((bitField0_ & 0x00000001) == 0x00000001); + } + /** + * required string volume_name = 1; + * + *
+       * the volume name
+       * 
+ */ public java.lang.String getVolumeName() { - return result.getVolumeName(); - } - public Builder setVolumeName(java.lang.String value) { + java.lang.Object ref = volumeName_; + if (!(ref instanceof java.lang.String)) { + java.lang.String s = ((com.google.protobuf.ByteString) ref) + .toStringUtf8(); + volumeName_ = s; + return s; + } else { + return (java.lang.String) ref; + } + } + /** + * required string volume_name = 1; + * + *
+       * the volume name
+       * 
+ */ + public com.google.protobuf.ByteString + getVolumeNameBytes() { + java.lang.Object ref = volumeName_; + if (ref instanceof String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + volumeName_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + /** + * required string volume_name = 1; + * + *
+       * the volume name
+       * 
+ */ + public Builder setVolumeName( + java.lang.String value) { if (value == null) { throw new NullPointerException(); } - result.hasVolumeName = true; - result.volumeName_ = value; - return this; - } + bitField0_ |= 0x00000001; + volumeName_ = value; + onChanged(); + return this; + } + /** + * required string volume_name = 1; + * + *
+       * the volume name
+       * 
+ */ public Builder clearVolumeName() { - result.hasVolumeName = false; - result.volumeName_ = getDefaultInstance().getVolumeName(); + bitField0_ = (bitField0_ & ~0x00000001); + volumeName_ = getDefaultInstance().getVolumeName(); + onChanged(); + return this; + } + /** + * required string volume_name = 1; + * + *
+       * the volume name
+       * 
+ */ + public Builder setVolumeNameBytes( + com.google.protobuf.ByteString value) { + if (value == null) { + throw new NullPointerException(); + } + bitField0_ |= 0x00000001; + volumeName_ = value; + onChanged(); return this; } - + // required string path = 2; + private java.lang.Object path_ = ""; + /** + * required string path = 2; + * + *
+       * the path to the file or directory, relative to the volume root
+       * 
+ */ public boolean hasPath() { - return result.hasPath(); - } + return ((bitField0_ & 0x00000002) == 0x00000002); + } + /** + * required string path = 2; + * + *
+       * the path to the file or directory, relative to the volume root
+       * 
+ */ public java.lang.String getPath() { - return result.getPath(); - } - public Builder setPath(java.lang.String value) { + java.lang.Object ref = path_; + if (!(ref instanceof java.lang.String)) { + java.lang.String s = ((com.google.protobuf.ByteString) ref) + .toStringUtf8(); + path_ = s; + return s; + } else { + return (java.lang.String) ref; + } + } + /** + * required string path = 2; + * + *
+       * the path to the file or directory, relative to the volume root
+       * 
+ */ + public com.google.protobuf.ByteString + getPathBytes() { + java.lang.Object ref = path_; + if (ref instanceof String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + path_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + /** + * required string path = 2; + * + *
+       * the path to the file or directory, relative to the volume root
+       * 
+ */ + public Builder setPath( + java.lang.String value) { if (value == null) { throw new NullPointerException(); } - result.hasPath = true; - result.path_ = value; - return this; - } + bitField0_ |= 0x00000002; + path_ = value; + onChanged(); + return this; + } + /** + * required string path = 2; + * + *
+       * the path to the file or directory, relative to the volume root
+       * 
+ */ public Builder clearPath() { - result.hasPath = false; - result.path_ = getDefaultInstance().getPath(); + bitField0_ = (bitField0_ & ~0x00000002); + path_ = getDefaultInstance().getPath(); + onChanged(); + return this; + } + /** + * required string path = 2; + * + *
+       * the path to the file or directory, relative to the volume root
+       * 
+ */ + public Builder setPathBytes( + com.google.protobuf.ByteString value) { + if (value == null) { + throw new NullPointerException(); + } + bitField0_ |= 0x00000002; + path_ = value; + onChanged(); return this; } - + // required fixed32 mode = 3; + private int mode_ ; + /** + * required fixed32 mode = 3; + * + *
+       * the initial access mode of the newly created directory
+       * 
+ */ public boolean hasMode() { - return result.hasMode(); - } + return ((bitField0_ & 0x00000004) == 0x00000004); + } + /** + * required fixed32 mode = 3; + * + *
+       * the initial access mode of the newly created directory
+       * 
+ */ public int getMode() { - return result.getMode(); - } + return mode_; + } + /** + * required fixed32 mode = 3; + * + *
+       * the initial access mode of the newly created directory
+       * 
+ */ public Builder setMode(int value) { - result.hasMode = true; - result.mode_ = value; - return this; - } + bitField0_ |= 0x00000004; + mode_ = value; + onChanged(); + return this; + } + /** + * required fixed32 mode = 3; + * + *
+       * the initial access mode of the newly created directory
+       * 
+ */ public Builder clearMode() { - result.hasMode = false; - result.mode_ = 0; + bitField0_ = (bitField0_ & ~0x00000004); + mode_ = 0; + onChanged(); return this; } - + // @@protoc_insertion_point(builder_scope:xtreemfs.pbrpc.mkdirRequest) } - + static { defaultInstance = new mkdirRequest(true); - org.xtreemfs.pbrpc.generatedinterfaces.MRC.internalForceInit(); defaultInstance.initFields(); } - + // @@protoc_insertion_point(class_scope:xtreemfs.pbrpc.mkdirRequest) } - + + public interface openRequestOrBuilder + extends com.google.protobuf.MessageOrBuilder { + + // required string volume_name = 1; + /** + * required string volume_name = 1; + * + *
+     * the volume name
+     * 
+ */ + boolean hasVolumeName(); + /** + * required string volume_name = 1; + * + *
+     * the volume name
+     * 
+ */ + java.lang.String getVolumeName(); + /** + * required string volume_name = 1; + * + *
+     * the volume name
+     * 
+ */ + com.google.protobuf.ByteString + getVolumeNameBytes(); + + // required string path = 2; + /** + * required string path = 2; + * + *
+     * the path to the file, relative to the volume root
+     * 
+ */ + boolean hasPath(); + /** + * required string path = 2; + * + *
+     * the path to the file, relative to the volume root
+     * 
+ */ + java.lang.String getPath(); + /** + * required string path = 2; + * + *
+     * the path to the file, relative to the volume root
+     * 
+ */ + com.google.protobuf.ByteString + getPathBytes(); + + // required fixed32 flags = 3; + /** + * required fixed32 flags = 3; + * + *
+     * a bitmap open flags, as defined in the specification of the POSIX
+     *  'open' call, e.g. O_RDWR, O_RDONLY, O_CREAT, O_EXCL, O_TRUNC ...
+     * 
+ */ + boolean hasFlags(); + /** + * required fixed32 flags = 3; + * + *
+     * a bitmap open flags, as defined in the specification of the POSIX
+     *  'open' call, e.g. O_RDWR, O_RDONLY, O_CREAT, O_EXCL, O_TRUNC ...
+     * 
+ */ + int getFlags(); + + // required fixed32 mode = 4; + /** + * required fixed32 mode = 4; + * + *
+     * the initial access mode for a file created w/ O_CREAT 
+     * 
+ */ + boolean hasMode(); + /** + * required fixed32 mode = 4; + * + *
+     * the initial access mode for a file created w/ O_CREAT 
+     * 
+ */ + int getMode(); + + // required fixed32 attributes = 5; + /** + * required fixed32 attributes = 5; + * + *
+     * the initial set of Win32-specific attributes
+     * 
+ */ + boolean hasAttributes(); + /** + * required fixed32 attributes = 5; + * + *
+     * the initial set of Win32-specific attributes
+     * 
+ */ + int getAttributes(); + + // optional .xtreemfs.pbrpc.VivaldiCoordinates coordinates = 6; + /** + * optional .xtreemfs.pbrpc.VivaldiCoordinates coordinates = 6; + * + *
+     * optional set of Vivaldi cooridnates of the client, which can be
+     * used to order the list of replicas
+     * 
+ */ + boolean hasCoordinates(); + /** + * optional .xtreemfs.pbrpc.VivaldiCoordinates coordinates = 6; + * + *
+     * optional set of Vivaldi cooridnates of the client, which can be
+     * used to order the list of replicas
+     * 
+ */ + org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.VivaldiCoordinates getCoordinates(); + /** + * optional .xtreemfs.pbrpc.VivaldiCoordinates coordinates = 6; + * + *
+     * optional set of Vivaldi cooridnates of the client, which can be
+     * used to order the list of replicas
+     * 
+ */ + org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.VivaldiCoordinatesOrBuilder getCoordinatesOrBuilder(); + } + /** + * Protobuf type {@code xtreemfs.pbrpc.openRequest} + * + *
+   * opens a file and requests file credentials
+   * 
+ */ public static final class openRequest extends - com.google.protobuf.GeneratedMessage { + com.google.protobuf.GeneratedMessage + implements openRequestOrBuilder { // Use openRequest.newBuilder() to construct. - private openRequest() { - initFields(); + private openRequest(com.google.protobuf.GeneratedMessage.Builder builder) { + super(builder); + this.unknownFields = builder.getUnknownFields(); } - private openRequest(boolean noInit) {} - + private openRequest(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); } + private static final openRequest defaultInstance; public static openRequest getDefaultInstance() { return defaultInstance; } - + public openRequest getDefaultInstanceForType() { return defaultInstance; } - + + private final com.google.protobuf.UnknownFieldSet unknownFields; + @java.lang.Override + public final com.google.protobuf.UnknownFieldSet + getUnknownFields() { + return this.unknownFields; + } + private openRequest( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + initFields(); + int mutable_bitField0_ = 0; + com.google.protobuf.UnknownFieldSet.Builder unknownFields = + com.google.protobuf.UnknownFieldSet.newBuilder(); + try { + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch (tag) { + case 0: + done = true; + break; + default: { + if (!parseUnknownField(input, unknownFields, + extensionRegistry, tag)) { + done = true; + } + break; + } + case 10: { + bitField0_ |= 0x00000001; + volumeName_ = input.readBytes(); + break; + } + case 18: { + bitField0_ |= 0x00000002; + path_ = input.readBytes(); + break; + } + case 29: { + bitField0_ |= 0x00000004; + flags_ = input.readFixed32(); + break; + } + case 37: { + bitField0_ |= 0x00000008; + mode_ = input.readFixed32(); + break; + } + case 45: { + bitField0_ |= 0x00000010; + attributes_ = input.readFixed32(); + break; + } + case 50: { + org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.VivaldiCoordinates.Builder subBuilder = null; + if (((bitField0_ & 0x00000020) == 0x00000020)) { + subBuilder = coordinates_.toBuilder(); + } + coordinates_ = input.readMessage(org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.VivaldiCoordinates.PARSER, extensionRegistry); + if (subBuilder != null) { + subBuilder.mergeFrom(coordinates_); + coordinates_ = subBuilder.buildPartial(); + } + bitField0_ |= 0x00000020; + break; + } + } + } + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(this); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException( + e.getMessage()).setUnfinishedMessage(this); + } finally { + this.unknownFields = unknownFields.build(); + makeExtensionsImmutable(); + } + } public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { return org.xtreemfs.pbrpc.generatedinterfaces.MRC.internal_static_xtreemfs_pbrpc_openRequest_descriptor; } - + protected com.google.protobuf.GeneratedMessage.FieldAccessorTable internalGetFieldAccessorTable() { - return org.xtreemfs.pbrpc.generatedinterfaces.MRC.internal_static_xtreemfs_pbrpc_openRequest_fieldAccessorTable; + return org.xtreemfs.pbrpc.generatedinterfaces.MRC.internal_static_xtreemfs_pbrpc_openRequest_fieldAccessorTable + .ensureFieldAccessorsInitialized( + org.xtreemfs.pbrpc.generatedinterfaces.MRC.openRequest.class, org.xtreemfs.pbrpc.generatedinterfaces.MRC.openRequest.Builder.class); + } + + public static com.google.protobuf.Parser PARSER = + new com.google.protobuf.AbstractParser() { + public openRequest parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return new openRequest(input, extensionRegistry); + } + }; + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; } - + + private int bitField0_; // required string volume_name = 1; public static final int VOLUME_NAME_FIELD_NUMBER = 1; - private boolean hasVolumeName; - private java.lang.String volumeName_ = ""; - public boolean hasVolumeName() { return hasVolumeName; } - public java.lang.String getVolumeName() { return volumeName_; } - + private java.lang.Object volumeName_; + /** + * required string volume_name = 1; + * + *
+     * the volume name
+     * 
+ */ + public boolean hasVolumeName() { + return ((bitField0_ & 0x00000001) == 0x00000001); + } + /** + * required string volume_name = 1; + * + *
+     * the volume name
+     * 
+ */ + public java.lang.String getVolumeName() { + java.lang.Object ref = volumeName_; + if (ref instanceof java.lang.String) { + return (java.lang.String) ref; + } else { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + if (bs.isValidUtf8()) { + volumeName_ = s; + } + return s; + } + } + /** + * required string volume_name = 1; + * + *
+     * the volume name
+     * 
+ */ + public com.google.protobuf.ByteString + getVolumeNameBytes() { + java.lang.Object ref = volumeName_; + if (ref instanceof java.lang.String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + volumeName_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + // required string path = 2; public static final int PATH_FIELD_NUMBER = 2; - private boolean hasPath; - private java.lang.String path_ = ""; - public boolean hasPath() { return hasPath; } - public java.lang.String getPath() { return path_; } - + private java.lang.Object path_; + /** + * required string path = 2; + * + *
+     * the path to the file, relative to the volume root
+     * 
+ */ + public boolean hasPath() { + return ((bitField0_ & 0x00000002) == 0x00000002); + } + /** + * required string path = 2; + * + *
+     * the path to the file, relative to the volume root
+     * 
+ */ + public java.lang.String getPath() { + java.lang.Object ref = path_; + if (ref instanceof java.lang.String) { + return (java.lang.String) ref; + } else { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + if (bs.isValidUtf8()) { + path_ = s; + } + return s; + } + } + /** + * required string path = 2; + * + *
+     * the path to the file, relative to the volume root
+     * 
+ */ + public com.google.protobuf.ByteString + getPathBytes() { + java.lang.Object ref = path_; + if (ref instanceof java.lang.String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + path_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + // required fixed32 flags = 3; public static final int FLAGS_FIELD_NUMBER = 3; - private boolean hasFlags; - private int flags_ = 0; - public boolean hasFlags() { return hasFlags; } - public int getFlags() { return flags_; } - + private int flags_; + /** + * required fixed32 flags = 3; + * + *
+     * a bitmap open flags, as defined in the specification of the POSIX
+     *  'open' call, e.g. O_RDWR, O_RDONLY, O_CREAT, O_EXCL, O_TRUNC ...
+     * 
+ */ + public boolean hasFlags() { + return ((bitField0_ & 0x00000004) == 0x00000004); + } + /** + * required fixed32 flags = 3; + * + *
+     * a bitmap open flags, as defined in the specification of the POSIX
+     *  'open' call, e.g. O_RDWR, O_RDONLY, O_CREAT, O_EXCL, O_TRUNC ...
+     * 
+ */ + public int getFlags() { + return flags_; + } + // required fixed32 mode = 4; public static final int MODE_FIELD_NUMBER = 4; - private boolean hasMode; - private int mode_ = 0; - public boolean hasMode() { return hasMode; } - public int getMode() { return mode_; } - + private int mode_; + /** + * required fixed32 mode = 4; + * + *
+     * the initial access mode for a file created w/ O_CREAT 
+     * 
+ */ + public boolean hasMode() { + return ((bitField0_ & 0x00000008) == 0x00000008); + } + /** + * required fixed32 mode = 4; + * + *
+     * the initial access mode for a file created w/ O_CREAT 
+     * 
+ */ + public int getMode() { + return mode_; + } + // required fixed32 attributes = 5; public static final int ATTRIBUTES_FIELD_NUMBER = 5; - private boolean hasAttributes; - private int attributes_ = 0; - public boolean hasAttributes() { return hasAttributes; } - public int getAttributes() { return attributes_; } - + private int attributes_; + /** + * required fixed32 attributes = 5; + * + *
+     * the initial set of Win32-specific attributes
+     * 
+ */ + public boolean hasAttributes() { + return ((bitField0_ & 0x00000010) == 0x00000010); + } + /** + * required fixed32 attributes = 5; + * + *
+     * the initial set of Win32-specific attributes
+     * 
+ */ + public int getAttributes() { + return attributes_; + } + // optional .xtreemfs.pbrpc.VivaldiCoordinates coordinates = 6; public static final int COORDINATES_FIELD_NUMBER = 6; - private boolean hasCoordinates; private org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.VivaldiCoordinates coordinates_; - public boolean hasCoordinates() { return hasCoordinates; } - public org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.VivaldiCoordinates getCoordinates() { return coordinates_; } - + /** + * optional .xtreemfs.pbrpc.VivaldiCoordinates coordinates = 6; + * + *
+     * optional set of Vivaldi cooridnates of the client, which can be
+     * used to order the list of replicas
+     * 
+ */ + public boolean hasCoordinates() { + return ((bitField0_ & 0x00000020) == 0x00000020); + } + /** + * optional .xtreemfs.pbrpc.VivaldiCoordinates coordinates = 6; + * + *
+     * optional set of Vivaldi cooridnates of the client, which can be
+     * used to order the list of replicas
+     * 
+ */ + public org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.VivaldiCoordinates getCoordinates() { + return coordinates_; + } + /** + * optional .xtreemfs.pbrpc.VivaldiCoordinates coordinates = 6; + * + *
+     * optional set of Vivaldi cooridnates of the client, which can be
+     * used to order the list of replicas
+     * 
+ */ + public org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.VivaldiCoordinatesOrBuilder getCoordinatesOrBuilder() { + return coordinates_; + } + private void initFields() { + volumeName_ = ""; + path_ = ""; + flags_ = 0; + mode_ = 0; + attributes_ = 0; coordinates_ = org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.VivaldiCoordinates.getDefaultInstance(); } + private byte memoizedIsInitialized = -1; public final boolean isInitialized() { - if (!hasVolumeName) return false; - if (!hasPath) return false; - if (!hasFlags) return false; - if (!hasMode) return false; - if (!hasAttributes) return false; + byte isInitialized = memoizedIsInitialized; + if (isInitialized != -1) return isInitialized == 1; + + if (!hasVolumeName()) { + memoizedIsInitialized = 0; + return false; + } + if (!hasPath()) { + memoizedIsInitialized = 0; + return false; + } + if (!hasFlags()) { + memoizedIsInitialized = 0; + return false; + } + if (!hasMode()) { + memoizedIsInitialized = 0; + return false; + } + if (!hasAttributes()) { + memoizedIsInitialized = 0; + return false; + } if (hasCoordinates()) { - if (!getCoordinates().isInitialized()) return false; + if (!getCoordinates().isInitialized()) { + memoizedIsInitialized = 0; + return false; + } } + memoizedIsInitialized = 1; return true; } - + public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException { getSerializedSize(); - if (hasVolumeName()) { - output.writeString(1, getVolumeName()); + if (((bitField0_ & 0x00000001) == 0x00000001)) { + output.writeBytes(1, getVolumeNameBytes()); } - if (hasPath()) { - output.writeString(2, getPath()); + if (((bitField0_ & 0x00000002) == 0x00000002)) { + output.writeBytes(2, getPathBytes()); } - if (hasFlags()) { - output.writeFixed32(3, getFlags()); + if (((bitField0_ & 0x00000004) == 0x00000004)) { + output.writeFixed32(3, flags_); } - if (hasMode()) { - output.writeFixed32(4, getMode()); + if (((bitField0_ & 0x00000008) == 0x00000008)) { + output.writeFixed32(4, mode_); } - if (hasAttributes()) { - output.writeFixed32(5, getAttributes()); + if (((bitField0_ & 0x00000010) == 0x00000010)) { + output.writeFixed32(5, attributes_); } - if (hasCoordinates()) { - output.writeMessage(6, getCoordinates()); + if (((bitField0_ & 0x00000020) == 0x00000020)) { + output.writeMessage(6, coordinates_); } getUnknownFields().writeTo(output); } - + private int memoizedSerializedSize = -1; public int getSerializedSize() { int size = memoizedSerializedSize; if (size != -1) return size; - + size = 0; - if (hasVolumeName()) { + if (((bitField0_ & 0x00000001) == 0x00000001)) { size += com.google.protobuf.CodedOutputStream - .computeStringSize(1, getVolumeName()); + .computeBytesSize(1, getVolumeNameBytes()); } - if (hasPath()) { + if (((bitField0_ & 0x00000002) == 0x00000002)) { size += com.google.protobuf.CodedOutputStream - .computeStringSize(2, getPath()); + .computeBytesSize(2, getPathBytes()); } - if (hasFlags()) { + if (((bitField0_ & 0x00000004) == 0x00000004)) { size += com.google.protobuf.CodedOutputStream - .computeFixed32Size(3, getFlags()); + .computeFixed32Size(3, flags_); } - if (hasMode()) { + if (((bitField0_ & 0x00000008) == 0x00000008)) { size += com.google.protobuf.CodedOutputStream - .computeFixed32Size(4, getMode()); + .computeFixed32Size(4, mode_); } - if (hasAttributes()) { + if (((bitField0_ & 0x00000010) == 0x00000010)) { size += com.google.protobuf.CodedOutputStream - .computeFixed32Size(5, getAttributes()); + .computeFixed32Size(5, attributes_); } - if (hasCoordinates()) { + if (((bitField0_ & 0x00000020) == 0x00000020)) { size += com.google.protobuf.CodedOutputStream - .computeMessageSize(6, getCoordinates()); + .computeMessageSize(6, coordinates_); } size += getUnknownFields().getSerializedSize(); memoizedSerializedSize = size; return size; } - + + private static final long serialVersionUID = 0L; + @java.lang.Override + protected java.lang.Object writeReplace() + throws java.io.ObjectStreamException { + return super.writeReplace(); + } + public static org.xtreemfs.pbrpc.generatedinterfaces.MRC.openRequest parseFrom( com.google.protobuf.ByteString data) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data).buildParsed(); + return PARSER.parseFrom(data); } public static org.xtreemfs.pbrpc.generatedinterfaces.MRC.openRequest parseFrom( com.google.protobuf.ByteString data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(data, extensionRegistry); } public static org.xtreemfs.pbrpc.generatedinterfaces.MRC.openRequest parseFrom(byte[] data) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data).buildParsed(); + return PARSER.parseFrom(data); } public static org.xtreemfs.pbrpc.generatedinterfaces.MRC.openRequest parseFrom( byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(data, extensionRegistry); } public static org.xtreemfs.pbrpc.generatedinterfaces.MRC.openRequest parseFrom(java.io.InputStream input) throws java.io.IOException { - return newBuilder().mergeFrom(input).buildParsed(); + return PARSER.parseFrom(input); } public static org.xtreemfs.pbrpc.generatedinterfaces.MRC.openRequest parseFrom( java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - return newBuilder().mergeFrom(input, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(input, extensionRegistry); } public static org.xtreemfs.pbrpc.generatedinterfaces.MRC.openRequest parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException { - Builder builder = newBuilder(); - if (builder.mergeDelimitedFrom(input)) { - return builder.buildParsed(); - } else { - return null; - } + return PARSER.parseDelimitedFrom(input); } public static org.xtreemfs.pbrpc.generatedinterfaces.MRC.openRequest parseDelimitedFrom( java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - Builder builder = newBuilder(); - if (builder.mergeDelimitedFrom(input, extensionRegistry)) { - return builder.buildParsed(); - } else { - return null; - } + return PARSER.parseDelimitedFrom(input, extensionRegistry); } public static org.xtreemfs.pbrpc.generatedinterfaces.MRC.openRequest parseFrom( com.google.protobuf.CodedInputStream input) throws java.io.IOException { - return newBuilder().mergeFrom(input).buildParsed(); + return PARSER.parseFrom(input); } public static org.xtreemfs.pbrpc.generatedinterfaces.MRC.openRequest parseFrom( com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - return newBuilder().mergeFrom(input, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(input, extensionRegistry); } - + public static Builder newBuilder() { return Builder.create(); } public Builder newBuilderForType() { return newBuilder(); } public static Builder newBuilder(org.xtreemfs.pbrpc.generatedinterfaces.MRC.openRequest prototype) { return newBuilder().mergeFrom(prototype); } public Builder toBuilder() { return newBuilder(this); } - + + @java.lang.Override + protected Builder newBuilderForType( + com.google.protobuf.GeneratedMessage.BuilderParent parent) { + Builder builder = new Builder(parent); + return builder; + } + /** + * Protobuf type {@code xtreemfs.pbrpc.openRequest} + * + *
+     * opens a file and requests file credentials
+     * 
+ */ public static final class Builder extends - com.google.protobuf.GeneratedMessage.Builder { - private org.xtreemfs.pbrpc.generatedinterfaces.MRC.openRequest result; - + com.google.protobuf.GeneratedMessage.Builder + implements org.xtreemfs.pbrpc.generatedinterfaces.MRC.openRequestOrBuilder { + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return org.xtreemfs.pbrpc.generatedinterfaces.MRC.internal_static_xtreemfs_pbrpc_openRequest_descriptor; + } + + protected com.google.protobuf.GeneratedMessage.FieldAccessorTable + internalGetFieldAccessorTable() { + return org.xtreemfs.pbrpc.generatedinterfaces.MRC.internal_static_xtreemfs_pbrpc_openRequest_fieldAccessorTable + .ensureFieldAccessorsInitialized( + org.xtreemfs.pbrpc.generatedinterfaces.MRC.openRequest.class, org.xtreemfs.pbrpc.generatedinterfaces.MRC.openRequest.Builder.class); + } + // Construct using org.xtreemfs.pbrpc.generatedinterfaces.MRC.openRequest.newBuilder() - private Builder() {} - - private static Builder create() { - Builder builder = new Builder(); - builder.result = new org.xtreemfs.pbrpc.generatedinterfaces.MRC.openRequest(); - return builder; + private Builder() { + maybeForceBuilderInitialization(); } - - protected org.xtreemfs.pbrpc.generatedinterfaces.MRC.openRequest internalGetResult() { - return result; + + private Builder( + com.google.protobuf.GeneratedMessage.BuilderParent parent) { + super(parent); + maybeForceBuilderInitialization(); + } + private void maybeForceBuilderInitialization() { + if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) { + getCoordinatesFieldBuilder(); + } + } + private static Builder create() { + return new Builder(); } - + public Builder clear() { - if (result == null) { - throw new IllegalStateException( - "Cannot call clear() after build()."); + super.clear(); + volumeName_ = ""; + bitField0_ = (bitField0_ & ~0x00000001); + path_ = ""; + bitField0_ = (bitField0_ & ~0x00000002); + flags_ = 0; + bitField0_ = (bitField0_ & ~0x00000004); + mode_ = 0; + bitField0_ = (bitField0_ & ~0x00000008); + attributes_ = 0; + bitField0_ = (bitField0_ & ~0x00000010); + if (coordinatesBuilder_ == null) { + coordinates_ = org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.VivaldiCoordinates.getDefaultInstance(); + } else { + coordinatesBuilder_.clear(); } - result = new org.xtreemfs.pbrpc.generatedinterfaces.MRC.openRequest(); + bitField0_ = (bitField0_ & ~0x00000020); return this; } - + public Builder clone() { - return create().mergeFrom(result); + return create().mergeFrom(buildPartial()); } - + public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() { - return org.xtreemfs.pbrpc.generatedinterfaces.MRC.openRequest.getDescriptor(); + return org.xtreemfs.pbrpc.generatedinterfaces.MRC.internal_static_xtreemfs_pbrpc_openRequest_descriptor; } - + public org.xtreemfs.pbrpc.generatedinterfaces.MRC.openRequest getDefaultInstanceForType() { return org.xtreemfs.pbrpc.generatedinterfaces.MRC.openRequest.getDefaultInstance(); } - - public boolean isInitialized() { - return result.isInitialized(); - } + public org.xtreemfs.pbrpc.generatedinterfaces.MRC.openRequest build() { - if (result != null && !isInitialized()) { + org.xtreemfs.pbrpc.generatedinterfaces.MRC.openRequest result = buildPartial(); + if (!result.isInitialized()) { throw newUninitializedMessageException(result); } - return buildPartial(); - } - - private org.xtreemfs.pbrpc.generatedinterfaces.MRC.openRequest buildParsed() - throws com.google.protobuf.InvalidProtocolBufferException { - if (!isInitialized()) { - throw newUninitializedMessageException( - result).asInvalidProtocolBufferException(); - } - return buildPartial(); + return result; } - + public org.xtreemfs.pbrpc.generatedinterfaces.MRC.openRequest buildPartial() { - if (result == null) { - throw new IllegalStateException( - "build() has already been called on this Builder."); + org.xtreemfs.pbrpc.generatedinterfaces.MRC.openRequest result = new org.xtreemfs.pbrpc.generatedinterfaces.MRC.openRequest(this); + int from_bitField0_ = bitField0_; + int to_bitField0_ = 0; + if (((from_bitField0_ & 0x00000001) == 0x00000001)) { + to_bitField0_ |= 0x00000001; + } + result.volumeName_ = volumeName_; + if (((from_bitField0_ & 0x00000002) == 0x00000002)) { + to_bitField0_ |= 0x00000002; + } + result.path_ = path_; + if (((from_bitField0_ & 0x00000004) == 0x00000004)) { + to_bitField0_ |= 0x00000004; + } + result.flags_ = flags_; + if (((from_bitField0_ & 0x00000008) == 0x00000008)) { + to_bitField0_ |= 0x00000008; + } + result.mode_ = mode_; + if (((from_bitField0_ & 0x00000010) == 0x00000010)) { + to_bitField0_ |= 0x00000010; + } + result.attributes_ = attributes_; + if (((from_bitField0_ & 0x00000020) == 0x00000020)) { + to_bitField0_ |= 0x00000020; + } + if (coordinatesBuilder_ == null) { + result.coordinates_ = coordinates_; + } else { + result.coordinates_ = coordinatesBuilder_.build(); } - org.xtreemfs.pbrpc.generatedinterfaces.MRC.openRequest returnMe = result; - result = null; - return returnMe; + result.bitField0_ = to_bitField0_; + onBuilt(); + return result; } - + public Builder mergeFrom(com.google.protobuf.Message other) { if (other instanceof org.xtreemfs.pbrpc.generatedinterfaces.MRC.openRequest) { return mergeFrom((org.xtreemfs.pbrpc.generatedinterfaces.MRC.openRequest)other); @@ -7450,14 +18371,18 @@ public final class MRC { return this; } } - + public Builder mergeFrom(org.xtreemfs.pbrpc.generatedinterfaces.MRC.openRequest other) { if (other == org.xtreemfs.pbrpc.generatedinterfaces.MRC.openRequest.getDefaultInstance()) return this; if (other.hasVolumeName()) { - setVolumeName(other.getVolumeName()); + bitField0_ |= 0x00000001; + volumeName_ = other.volumeName_; + onChanged(); } if (other.hasPath()) { - setPath(other.getPath()); + bitField0_ |= 0x00000002; + path_ = other.path_; + onChanged(); } if (other.hasFlags()) { setFlags(other.getFlags()); @@ -7474,431 +18399,1023 @@ public final class MRC { this.mergeUnknownFields(other.getUnknownFields()); return this; } - + + public final boolean isInitialized() { + if (!hasVolumeName()) { + + return false; + } + if (!hasPath()) { + + return false; + } + if (!hasFlags()) { + + return false; + } + if (!hasMode()) { + + return false; + } + if (!hasAttributes()) { + + return false; + } + if (hasCoordinates()) { + if (!getCoordinates().isInitialized()) { + + return false; + } + } + return true; + } + public Builder mergeFrom( com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - com.google.protobuf.UnknownFieldSet.Builder unknownFields = - com.google.protobuf.UnknownFieldSet.newBuilder( - this.getUnknownFields()); - while (true) { - int tag = input.readTag(); - switch (tag) { - case 0: - this.setUnknownFields(unknownFields.build()); - return this; - default: { - if (!parseUnknownField(input, unknownFields, - extensionRegistry, tag)) { - this.setUnknownFields(unknownFields.build()); - return this; - } - break; - } - case 10: { - setVolumeName(input.readString()); - break; - } - case 18: { - setPath(input.readString()); - break; - } - case 29: { - setFlags(input.readFixed32()); - break; - } - case 37: { - setMode(input.readFixed32()); - break; - } - case 45: { - setAttributes(input.readFixed32()); - break; - } - case 50: { - org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.VivaldiCoordinates.Builder subBuilder = org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.VivaldiCoordinates.newBuilder(); - if (hasCoordinates()) { - subBuilder.mergeFrom(getCoordinates()); - } - input.readMessage(subBuilder, extensionRegistry); - setCoordinates(subBuilder.buildPartial()); - break; - } + org.xtreemfs.pbrpc.generatedinterfaces.MRC.openRequest parsedMessage = null; + try { + parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + parsedMessage = (org.xtreemfs.pbrpc.generatedinterfaces.MRC.openRequest) e.getUnfinishedMessage(); + throw e; + } finally { + if (parsedMessage != null) { + mergeFrom(parsedMessage); } } + return this; } - - + private int bitField0_; + // required string volume_name = 1; + private java.lang.Object volumeName_ = ""; + /** + * required string volume_name = 1; + * + *
+       * the volume name
+       * 
+ */ public boolean hasVolumeName() { - return result.hasVolumeName(); - } + return ((bitField0_ & 0x00000001) == 0x00000001); + } + /** + * required string volume_name = 1; + * + *
+       * the volume name
+       * 
+ */ public java.lang.String getVolumeName() { - return result.getVolumeName(); - } - public Builder setVolumeName(java.lang.String value) { + java.lang.Object ref = volumeName_; + if (!(ref instanceof java.lang.String)) { + java.lang.String s = ((com.google.protobuf.ByteString) ref) + .toStringUtf8(); + volumeName_ = s; + return s; + } else { + return (java.lang.String) ref; + } + } + /** + * required string volume_name = 1; + * + *
+       * the volume name
+       * 
+ */ + public com.google.protobuf.ByteString + getVolumeNameBytes() { + java.lang.Object ref = volumeName_; + if (ref instanceof String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + volumeName_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + /** + * required string volume_name = 1; + * + *
+       * the volume name
+       * 
+ */ + public Builder setVolumeName( + java.lang.String value) { if (value == null) { throw new NullPointerException(); } - result.hasVolumeName = true; - result.volumeName_ = value; - return this; - } + bitField0_ |= 0x00000001; + volumeName_ = value; + onChanged(); + return this; + } + /** + * required string volume_name = 1; + * + *
+       * the volume name
+       * 
+ */ public Builder clearVolumeName() { - result.hasVolumeName = false; - result.volumeName_ = getDefaultInstance().getVolumeName(); + bitField0_ = (bitField0_ & ~0x00000001); + volumeName_ = getDefaultInstance().getVolumeName(); + onChanged(); + return this; + } + /** + * required string volume_name = 1; + * + *
+       * the volume name
+       * 
+ */ + public Builder setVolumeNameBytes( + com.google.protobuf.ByteString value) { + if (value == null) { + throw new NullPointerException(); + } + bitField0_ |= 0x00000001; + volumeName_ = value; + onChanged(); return this; } - + // required string path = 2; + private java.lang.Object path_ = ""; + /** + * required string path = 2; + * + *
+       * the path to the file, relative to the volume root
+       * 
+ */ public boolean hasPath() { - return result.hasPath(); - } + return ((bitField0_ & 0x00000002) == 0x00000002); + } + /** + * required string path = 2; + * + *
+       * the path to the file, relative to the volume root
+       * 
+ */ public java.lang.String getPath() { - return result.getPath(); - } - public Builder setPath(java.lang.String value) { + java.lang.Object ref = path_; + if (!(ref instanceof java.lang.String)) { + java.lang.String s = ((com.google.protobuf.ByteString) ref) + .toStringUtf8(); + path_ = s; + return s; + } else { + return (java.lang.String) ref; + } + } + /** + * required string path = 2; + * + *
+       * the path to the file, relative to the volume root
+       * 
+ */ + public com.google.protobuf.ByteString + getPathBytes() { + java.lang.Object ref = path_; + if (ref instanceof String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + path_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + /** + * required string path = 2; + * + *
+       * the path to the file, relative to the volume root
+       * 
+ */ + public Builder setPath( + java.lang.String value) { if (value == null) { throw new NullPointerException(); } - result.hasPath = true; - result.path_ = value; - return this; - } + bitField0_ |= 0x00000002; + path_ = value; + onChanged(); + return this; + } + /** + * required string path = 2; + * + *
+       * the path to the file, relative to the volume root
+       * 
+ */ public Builder clearPath() { - result.hasPath = false; - result.path_ = getDefaultInstance().getPath(); + bitField0_ = (bitField0_ & ~0x00000002); + path_ = getDefaultInstance().getPath(); + onChanged(); + return this; + } + /** + * required string path = 2; + * + *
+       * the path to the file, relative to the volume root
+       * 
+ */ + public Builder setPathBytes( + com.google.protobuf.ByteString value) { + if (value == null) { + throw new NullPointerException(); + } + bitField0_ |= 0x00000002; + path_ = value; + onChanged(); return this; } - + // required fixed32 flags = 3; + private int flags_ ; + /** + * required fixed32 flags = 3; + * + *
+       * a bitmap open flags, as defined in the specification of the POSIX
+       *  'open' call, e.g. O_RDWR, O_RDONLY, O_CREAT, O_EXCL, O_TRUNC ...
+       * 
+ */ public boolean hasFlags() { - return result.hasFlags(); - } + return ((bitField0_ & 0x00000004) == 0x00000004); + } + /** + * required fixed32 flags = 3; + * + *
+       * a bitmap open flags, as defined in the specification of the POSIX
+       *  'open' call, e.g. O_RDWR, O_RDONLY, O_CREAT, O_EXCL, O_TRUNC ...
+       * 
+ */ public int getFlags() { - return result.getFlags(); - } + return flags_; + } + /** + * required fixed32 flags = 3; + * + *
+       * a bitmap open flags, as defined in the specification of the POSIX
+       *  'open' call, e.g. O_RDWR, O_RDONLY, O_CREAT, O_EXCL, O_TRUNC ...
+       * 
+ */ public Builder setFlags(int value) { - result.hasFlags = true; - result.flags_ = value; - return this; - } + bitField0_ |= 0x00000004; + flags_ = value; + onChanged(); + return this; + } + /** + * required fixed32 flags = 3; + * + *
+       * a bitmap open flags, as defined in the specification of the POSIX
+       *  'open' call, e.g. O_RDWR, O_RDONLY, O_CREAT, O_EXCL, O_TRUNC ...
+       * 
+ */ public Builder clearFlags() { - result.hasFlags = false; - result.flags_ = 0; + bitField0_ = (bitField0_ & ~0x00000004); + flags_ = 0; + onChanged(); return this; } - + // required fixed32 mode = 4; + private int mode_ ; + /** + * required fixed32 mode = 4; + * + *
+       * the initial access mode for a file created w/ O_CREAT 
+       * 
+ */ public boolean hasMode() { - return result.hasMode(); - } + return ((bitField0_ & 0x00000008) == 0x00000008); + } + /** + * required fixed32 mode = 4; + * + *
+       * the initial access mode for a file created w/ O_CREAT 
+       * 
+ */ public int getMode() { - return result.getMode(); - } + return mode_; + } + /** + * required fixed32 mode = 4; + * + *
+       * the initial access mode for a file created w/ O_CREAT 
+       * 
+ */ public Builder setMode(int value) { - result.hasMode = true; - result.mode_ = value; - return this; - } + bitField0_ |= 0x00000008; + mode_ = value; + onChanged(); + return this; + } + /** + * required fixed32 mode = 4; + * + *
+       * the initial access mode for a file created w/ O_CREAT 
+       * 
+ */ public Builder clearMode() { - result.hasMode = false; - result.mode_ = 0; + bitField0_ = (bitField0_ & ~0x00000008); + mode_ = 0; + onChanged(); return this; } - + // required fixed32 attributes = 5; + private int attributes_ ; + /** + * required fixed32 attributes = 5; + * + *
+       * the initial set of Win32-specific attributes
+       * 
+ */ public boolean hasAttributes() { - return result.hasAttributes(); - } + return ((bitField0_ & 0x00000010) == 0x00000010); + } + /** + * required fixed32 attributes = 5; + * + *
+       * the initial set of Win32-specific attributes
+       * 
+ */ public int getAttributes() { - return result.getAttributes(); - } + return attributes_; + } + /** + * required fixed32 attributes = 5; + * + *
+       * the initial set of Win32-specific attributes
+       * 
+ */ public Builder setAttributes(int value) { - result.hasAttributes = true; - result.attributes_ = value; - return this; - } + bitField0_ |= 0x00000010; + attributes_ = value; + onChanged(); + return this; + } + /** + * required fixed32 attributes = 5; + * + *
+       * the initial set of Win32-specific attributes
+       * 
+ */ public Builder clearAttributes() { - result.hasAttributes = false; - result.attributes_ = 0; + bitField0_ = (bitField0_ & ~0x00000010); + attributes_ = 0; + onChanged(); return this; } - + // optional .xtreemfs.pbrpc.VivaldiCoordinates coordinates = 6; + private org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.VivaldiCoordinates coordinates_ = org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.VivaldiCoordinates.getDefaultInstance(); + private com.google.protobuf.SingleFieldBuilder< + org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.VivaldiCoordinates, org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.VivaldiCoordinates.Builder, org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.VivaldiCoordinatesOrBuilder> coordinatesBuilder_; + /** + * optional .xtreemfs.pbrpc.VivaldiCoordinates coordinates = 6; + * + *
+       * optional set of Vivaldi cooridnates of the client, which can be
+       * used to order the list of replicas
+       * 
+ */ public boolean hasCoordinates() { - return result.hasCoordinates(); - } + return ((bitField0_ & 0x00000020) == 0x00000020); + } + /** + * optional .xtreemfs.pbrpc.VivaldiCoordinates coordinates = 6; + * + *
+       * optional set of Vivaldi cooridnates of the client, which can be
+       * used to order the list of replicas
+       * 
+ */ public org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.VivaldiCoordinates getCoordinates() { - return result.getCoordinates(); + if (coordinatesBuilder_ == null) { + return coordinates_; + } else { + return coordinatesBuilder_.getMessage(); + } } + /** + * optional .xtreemfs.pbrpc.VivaldiCoordinates coordinates = 6; + * + *
+       * optional set of Vivaldi cooridnates of the client, which can be
+       * used to order the list of replicas
+       * 
+ */ public Builder setCoordinates(org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.VivaldiCoordinates value) { - if (value == null) { - throw new NullPointerException(); + if (coordinatesBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + coordinates_ = value; + onChanged(); + } else { + coordinatesBuilder_.setMessage(value); + } + bitField0_ |= 0x00000020; + return this; + } + /** + * optional .xtreemfs.pbrpc.VivaldiCoordinates coordinates = 6; + * + *
+       * optional set of Vivaldi cooridnates of the client, which can be
+       * used to order the list of replicas
+       * 
+ */ + public Builder setCoordinates( + org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.VivaldiCoordinates.Builder builderForValue) { + if (coordinatesBuilder_ == null) { + coordinates_ = builderForValue.build(); + onChanged(); + } else { + coordinatesBuilder_.setMessage(builderForValue.build()); } - result.hasCoordinates = true; - result.coordinates_ = value; - return this; - } - public Builder setCoordinates(org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.VivaldiCoordinates.Builder builderForValue) { - result.hasCoordinates = true; - result.coordinates_ = builderForValue.build(); + bitField0_ |= 0x00000020; return this; } + /** + * optional .xtreemfs.pbrpc.VivaldiCoordinates coordinates = 6; + * + *
+       * optional set of Vivaldi cooridnates of the client, which can be
+       * used to order the list of replicas
+       * 
+ */ public Builder mergeCoordinates(org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.VivaldiCoordinates value) { - if (result.hasCoordinates() && - result.coordinates_ != org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.VivaldiCoordinates.getDefaultInstance()) { - result.coordinates_ = - org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.VivaldiCoordinates.newBuilder(result.coordinates_).mergeFrom(value).buildPartial(); + if (coordinatesBuilder_ == null) { + if (((bitField0_ & 0x00000020) == 0x00000020) && + coordinates_ != org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.VivaldiCoordinates.getDefaultInstance()) { + coordinates_ = + org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.VivaldiCoordinates.newBuilder(coordinates_).mergeFrom(value).buildPartial(); + } else { + coordinates_ = value; + } + onChanged(); } else { - result.coordinates_ = value; + coordinatesBuilder_.mergeFrom(value); } - result.hasCoordinates = true; + bitField0_ |= 0x00000020; return this; } + /** + * optional .xtreemfs.pbrpc.VivaldiCoordinates coordinates = 6; + * + *
+       * optional set of Vivaldi cooridnates of the client, which can be
+       * used to order the list of replicas
+       * 
+ */ public Builder clearCoordinates() { - result.hasCoordinates = false; - result.coordinates_ = org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.VivaldiCoordinates.getDefaultInstance(); - return this; + if (coordinatesBuilder_ == null) { + coordinates_ = org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.VivaldiCoordinates.getDefaultInstance(); + onChanged(); + } else { + coordinatesBuilder_.clear(); + } + bitField0_ = (bitField0_ & ~0x00000020); + return this; + } + /** + * optional .xtreemfs.pbrpc.VivaldiCoordinates coordinates = 6; + * + *
+       * optional set of Vivaldi cooridnates of the client, which can be
+       * used to order the list of replicas
+       * 
+ */ + public org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.VivaldiCoordinates.Builder getCoordinatesBuilder() { + bitField0_ |= 0x00000020; + onChanged(); + return getCoordinatesFieldBuilder().getBuilder(); + } + /** + * optional .xtreemfs.pbrpc.VivaldiCoordinates coordinates = 6; + * + *
+       * optional set of Vivaldi cooridnates of the client, which can be
+       * used to order the list of replicas
+       * 
+ */ + public org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.VivaldiCoordinatesOrBuilder getCoordinatesOrBuilder() { + if (coordinatesBuilder_ != null) { + return coordinatesBuilder_.getMessageOrBuilder(); + } else { + return coordinates_; + } + } + /** + * optional .xtreemfs.pbrpc.VivaldiCoordinates coordinates = 6; + * + *
+       * optional set of Vivaldi cooridnates of the client, which can be
+       * used to order the list of replicas
+       * 
+ */ + private com.google.protobuf.SingleFieldBuilder< + org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.VivaldiCoordinates, org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.VivaldiCoordinates.Builder, org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.VivaldiCoordinatesOrBuilder> + getCoordinatesFieldBuilder() { + if (coordinatesBuilder_ == null) { + coordinatesBuilder_ = new com.google.protobuf.SingleFieldBuilder< + org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.VivaldiCoordinates, org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.VivaldiCoordinates.Builder, org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.VivaldiCoordinatesOrBuilder>( + coordinates_, + getParentForChildren(), + isClean()); + coordinates_ = null; + } + return coordinatesBuilder_; } - + // @@protoc_insertion_point(builder_scope:xtreemfs.pbrpc.openRequest) } - + static { defaultInstance = new openRequest(true); - org.xtreemfs.pbrpc.generatedinterfaces.MRC.internalForceInit(); defaultInstance.initFields(); } - + // @@protoc_insertion_point(class_scope:xtreemfs.pbrpc.openRequest) } - + + public interface openResponseOrBuilder + extends com.google.protobuf.MessageOrBuilder { + + // required .xtreemfs.pbrpc.FileCredentials creds = 1; + /** + * required .xtreemfs.pbrpc.FileCredentials creds = 1; + * + *
+     * the file credentials
+     * 
+ */ + boolean hasCreds(); + /** + * required .xtreemfs.pbrpc.FileCredentials creds = 1; + * + *
+     * the file credentials
+     * 
+ */ + org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials getCreds(); + /** + * required .xtreemfs.pbrpc.FileCredentials creds = 1; + * + *
+     * the file credentials
+     * 
+ */ + org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentialsOrBuilder getCredsOrBuilder(); + + // required fixed32 timestamp_s = 2; + /** + * required fixed32 timestamp_s = 2; + * + *
+     * the server timestamp in seconds since 1970 to which the file
+     * timestamps were updated
+     * 
+ */ + boolean hasTimestampS(); + /** + * required fixed32 timestamp_s = 2; + * + *
+     * the server timestamp in seconds since 1970 to which the file
+     * timestamps were updated
+     * 
+ */ + int getTimestampS(); + } + /** + * Protobuf type {@code xtreemfs.pbrpc.openResponse} + * + *
+   * returns a set of file credentials
+   * 
+ */ public static final class openResponse extends - com.google.protobuf.GeneratedMessage { + com.google.protobuf.GeneratedMessage + implements openResponseOrBuilder { // Use openResponse.newBuilder() to construct. - private openResponse() { - initFields(); + private openResponse(com.google.protobuf.GeneratedMessage.Builder builder) { + super(builder); + this.unknownFields = builder.getUnknownFields(); } - private openResponse(boolean noInit) {} - + private openResponse(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); } + private static final openResponse defaultInstance; public static openResponse getDefaultInstance() { return defaultInstance; } - + public openResponse getDefaultInstanceForType() { return defaultInstance; } - + + private final com.google.protobuf.UnknownFieldSet unknownFields; + @java.lang.Override + public final com.google.protobuf.UnknownFieldSet + getUnknownFields() { + return this.unknownFields; + } + private openResponse( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + initFields(); + int mutable_bitField0_ = 0; + com.google.protobuf.UnknownFieldSet.Builder unknownFields = + com.google.protobuf.UnknownFieldSet.newBuilder(); + try { + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch (tag) { + case 0: + done = true; + break; + default: { + if (!parseUnknownField(input, unknownFields, + extensionRegistry, tag)) { + done = true; + } + break; + } + case 10: { + org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials.Builder subBuilder = null; + if (((bitField0_ & 0x00000001) == 0x00000001)) { + subBuilder = creds_.toBuilder(); + } + creds_ = input.readMessage(org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials.PARSER, extensionRegistry); + if (subBuilder != null) { + subBuilder.mergeFrom(creds_); + creds_ = subBuilder.buildPartial(); + } + bitField0_ |= 0x00000001; + break; + } + case 21: { + bitField0_ |= 0x00000002; + timestampS_ = input.readFixed32(); + break; + } + } + } + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(this); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException( + e.getMessage()).setUnfinishedMessage(this); + } finally { + this.unknownFields = unknownFields.build(); + makeExtensionsImmutable(); + } + } public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { return org.xtreemfs.pbrpc.generatedinterfaces.MRC.internal_static_xtreemfs_pbrpc_openResponse_descriptor; } - + protected com.google.protobuf.GeneratedMessage.FieldAccessorTable internalGetFieldAccessorTable() { - return org.xtreemfs.pbrpc.generatedinterfaces.MRC.internal_static_xtreemfs_pbrpc_openResponse_fieldAccessorTable; + return org.xtreemfs.pbrpc.generatedinterfaces.MRC.internal_static_xtreemfs_pbrpc_openResponse_fieldAccessorTable + .ensureFieldAccessorsInitialized( + org.xtreemfs.pbrpc.generatedinterfaces.MRC.openResponse.class, org.xtreemfs.pbrpc.generatedinterfaces.MRC.openResponse.Builder.class); + } + + public static com.google.protobuf.Parser PARSER = + new com.google.protobuf.AbstractParser() { + public openResponse parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return new openResponse(input, extensionRegistry); + } + }; + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; } - + + private int bitField0_; // required .xtreemfs.pbrpc.FileCredentials creds = 1; public static final int CREDS_FIELD_NUMBER = 1; - private boolean hasCreds; private org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials creds_; - public boolean hasCreds() { return hasCreds; } - public org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials getCreds() { return creds_; } - + /** + * required .xtreemfs.pbrpc.FileCredentials creds = 1; + * + *
+     * the file credentials
+     * 
+ */ + public boolean hasCreds() { + return ((bitField0_ & 0x00000001) == 0x00000001); + } + /** + * required .xtreemfs.pbrpc.FileCredentials creds = 1; + * + *
+     * the file credentials
+     * 
+ */ + public org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials getCreds() { + return creds_; + } + /** + * required .xtreemfs.pbrpc.FileCredentials creds = 1; + * + *
+     * the file credentials
+     * 
+ */ + public org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentialsOrBuilder getCredsOrBuilder() { + return creds_; + } + // required fixed32 timestamp_s = 2; public static final int TIMESTAMP_S_FIELD_NUMBER = 2; - private boolean hasTimestampS; - private int timestampS_ = 0; - public boolean hasTimestampS() { return hasTimestampS; } - public int getTimestampS() { return timestampS_; } - + private int timestampS_; + /** + * required fixed32 timestamp_s = 2; + * + *
+     * the server timestamp in seconds since 1970 to which the file
+     * timestamps were updated
+     * 
+ */ + public boolean hasTimestampS() { + return ((bitField0_ & 0x00000002) == 0x00000002); + } + /** + * required fixed32 timestamp_s = 2; + * + *
+     * the server timestamp in seconds since 1970 to which the file
+     * timestamps were updated
+     * 
+ */ + public int getTimestampS() { + return timestampS_; + } + private void initFields() { creds_ = org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials.getDefaultInstance(); + timestampS_ = 0; } + private byte memoizedIsInitialized = -1; public final boolean isInitialized() { - if (!hasCreds) return false; - if (!hasTimestampS) return false; - if (!getCreds().isInitialized()) return false; + byte isInitialized = memoizedIsInitialized; + if (isInitialized != -1) return isInitialized == 1; + + if (!hasCreds()) { + memoizedIsInitialized = 0; + return false; + } + if (!hasTimestampS()) { + memoizedIsInitialized = 0; + return false; + } + if (!getCreds().isInitialized()) { + memoizedIsInitialized = 0; + return false; + } + memoizedIsInitialized = 1; return true; } - + public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException { getSerializedSize(); - if (hasCreds()) { - output.writeMessage(1, getCreds()); + if (((bitField0_ & 0x00000001) == 0x00000001)) { + output.writeMessage(1, creds_); } - if (hasTimestampS()) { - output.writeFixed32(2, getTimestampS()); + if (((bitField0_ & 0x00000002) == 0x00000002)) { + output.writeFixed32(2, timestampS_); } getUnknownFields().writeTo(output); } - + private int memoizedSerializedSize = -1; public int getSerializedSize() { int size = memoizedSerializedSize; if (size != -1) return size; - + size = 0; - if (hasCreds()) { + if (((bitField0_ & 0x00000001) == 0x00000001)) { size += com.google.protobuf.CodedOutputStream - .computeMessageSize(1, getCreds()); + .computeMessageSize(1, creds_); } - if (hasTimestampS()) { + if (((bitField0_ & 0x00000002) == 0x00000002)) { size += com.google.protobuf.CodedOutputStream - .computeFixed32Size(2, getTimestampS()); + .computeFixed32Size(2, timestampS_); } size += getUnknownFields().getSerializedSize(); memoizedSerializedSize = size; return size; } - + + private static final long serialVersionUID = 0L; + @java.lang.Override + protected java.lang.Object writeReplace() + throws java.io.ObjectStreamException { + return super.writeReplace(); + } + public static org.xtreemfs.pbrpc.generatedinterfaces.MRC.openResponse parseFrom( com.google.protobuf.ByteString data) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data).buildParsed(); + return PARSER.parseFrom(data); } public static org.xtreemfs.pbrpc.generatedinterfaces.MRC.openResponse parseFrom( com.google.protobuf.ByteString data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(data, extensionRegistry); } public static org.xtreemfs.pbrpc.generatedinterfaces.MRC.openResponse parseFrom(byte[] data) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data).buildParsed(); + return PARSER.parseFrom(data); } public static org.xtreemfs.pbrpc.generatedinterfaces.MRC.openResponse parseFrom( byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(data, extensionRegistry); } public static org.xtreemfs.pbrpc.generatedinterfaces.MRC.openResponse parseFrom(java.io.InputStream input) throws java.io.IOException { - return newBuilder().mergeFrom(input).buildParsed(); + return PARSER.parseFrom(input); } public static org.xtreemfs.pbrpc.generatedinterfaces.MRC.openResponse parseFrom( java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - return newBuilder().mergeFrom(input, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(input, extensionRegistry); } public static org.xtreemfs.pbrpc.generatedinterfaces.MRC.openResponse parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException { - Builder builder = newBuilder(); - if (builder.mergeDelimitedFrom(input)) { - return builder.buildParsed(); - } else { - return null; - } + return PARSER.parseDelimitedFrom(input); } public static org.xtreemfs.pbrpc.generatedinterfaces.MRC.openResponse parseDelimitedFrom( java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - Builder builder = newBuilder(); - if (builder.mergeDelimitedFrom(input, extensionRegistry)) { - return builder.buildParsed(); - } else { - return null; - } + return PARSER.parseDelimitedFrom(input, extensionRegistry); } public static org.xtreemfs.pbrpc.generatedinterfaces.MRC.openResponse parseFrom( com.google.protobuf.CodedInputStream input) throws java.io.IOException { - return newBuilder().mergeFrom(input).buildParsed(); + return PARSER.parseFrom(input); } public static org.xtreemfs.pbrpc.generatedinterfaces.MRC.openResponse parseFrom( com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - return newBuilder().mergeFrom(input, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(input, extensionRegistry); } - + public static Builder newBuilder() { return Builder.create(); } public Builder newBuilderForType() { return newBuilder(); } public static Builder newBuilder(org.xtreemfs.pbrpc.generatedinterfaces.MRC.openResponse prototype) { return newBuilder().mergeFrom(prototype); } public Builder toBuilder() { return newBuilder(this); } - + + @java.lang.Override + protected Builder newBuilderForType( + com.google.protobuf.GeneratedMessage.BuilderParent parent) { + Builder builder = new Builder(parent); + return builder; + } + /** + * Protobuf type {@code xtreemfs.pbrpc.openResponse} + * + *
+     * returns a set of file credentials
+     * 
+ */ public static final class Builder extends - com.google.protobuf.GeneratedMessage.Builder { - private org.xtreemfs.pbrpc.generatedinterfaces.MRC.openResponse result; - + com.google.protobuf.GeneratedMessage.Builder + implements org.xtreemfs.pbrpc.generatedinterfaces.MRC.openResponseOrBuilder { + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return org.xtreemfs.pbrpc.generatedinterfaces.MRC.internal_static_xtreemfs_pbrpc_openResponse_descriptor; + } + + protected com.google.protobuf.GeneratedMessage.FieldAccessorTable + internalGetFieldAccessorTable() { + return org.xtreemfs.pbrpc.generatedinterfaces.MRC.internal_static_xtreemfs_pbrpc_openResponse_fieldAccessorTable + .ensureFieldAccessorsInitialized( + org.xtreemfs.pbrpc.generatedinterfaces.MRC.openResponse.class, org.xtreemfs.pbrpc.generatedinterfaces.MRC.openResponse.Builder.class); + } + // Construct using org.xtreemfs.pbrpc.generatedinterfaces.MRC.openResponse.newBuilder() - private Builder() {} - - private static Builder create() { - Builder builder = new Builder(); - builder.result = new org.xtreemfs.pbrpc.generatedinterfaces.MRC.openResponse(); - return builder; + private Builder() { + maybeForceBuilderInitialization(); } - - protected org.xtreemfs.pbrpc.generatedinterfaces.MRC.openResponse internalGetResult() { - return result; + + private Builder( + com.google.protobuf.GeneratedMessage.BuilderParent parent) { + super(parent); + maybeForceBuilderInitialization(); + } + private void maybeForceBuilderInitialization() { + if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) { + getCredsFieldBuilder(); + } } - + private static Builder create() { + return new Builder(); + } + public Builder clear() { - if (result == null) { - throw new IllegalStateException( - "Cannot call clear() after build()."); + super.clear(); + if (credsBuilder_ == null) { + creds_ = org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials.getDefaultInstance(); + } else { + credsBuilder_.clear(); } - result = new org.xtreemfs.pbrpc.generatedinterfaces.MRC.openResponse(); + bitField0_ = (bitField0_ & ~0x00000001); + timestampS_ = 0; + bitField0_ = (bitField0_ & ~0x00000002); return this; } - + public Builder clone() { - return create().mergeFrom(result); + return create().mergeFrom(buildPartial()); } - + public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() { - return org.xtreemfs.pbrpc.generatedinterfaces.MRC.openResponse.getDescriptor(); + return org.xtreemfs.pbrpc.generatedinterfaces.MRC.internal_static_xtreemfs_pbrpc_openResponse_descriptor; } - + public org.xtreemfs.pbrpc.generatedinterfaces.MRC.openResponse getDefaultInstanceForType() { return org.xtreemfs.pbrpc.generatedinterfaces.MRC.openResponse.getDefaultInstance(); } - - public boolean isInitialized() { - return result.isInitialized(); - } + public org.xtreemfs.pbrpc.generatedinterfaces.MRC.openResponse build() { - if (result != null && !isInitialized()) { + org.xtreemfs.pbrpc.generatedinterfaces.MRC.openResponse result = buildPartial(); + if (!result.isInitialized()) { throw newUninitializedMessageException(result); } - return buildPartial(); - } - - private org.xtreemfs.pbrpc.generatedinterfaces.MRC.openResponse buildParsed() - throws com.google.protobuf.InvalidProtocolBufferException { - if (!isInitialized()) { - throw newUninitializedMessageException( - result).asInvalidProtocolBufferException(); - } - return buildPartial(); + return result; } - + public org.xtreemfs.pbrpc.generatedinterfaces.MRC.openResponse buildPartial() { - if (result == null) { - throw new IllegalStateException( - "build() has already been called on this Builder."); + org.xtreemfs.pbrpc.generatedinterfaces.MRC.openResponse result = new org.xtreemfs.pbrpc.generatedinterfaces.MRC.openResponse(this); + int from_bitField0_ = bitField0_; + int to_bitField0_ = 0; + if (((from_bitField0_ & 0x00000001) == 0x00000001)) { + to_bitField0_ |= 0x00000001; + } + if (credsBuilder_ == null) { + result.creds_ = creds_; + } else { + result.creds_ = credsBuilder_.build(); + } + if (((from_bitField0_ & 0x00000002) == 0x00000002)) { + to_bitField0_ |= 0x00000002; } - org.xtreemfs.pbrpc.generatedinterfaces.MRC.openResponse returnMe = result; - result = null; - return returnMe; + result.timestampS_ = timestampS_; + result.bitField0_ = to_bitField0_; + onBuilt(); + return result; } - + public Builder mergeFrom(com.google.protobuf.Message other) { if (other instanceof org.xtreemfs.pbrpc.generatedinterfaces.MRC.openResponse) { return mergeFrom((org.xtreemfs.pbrpc.generatedinterfaces.MRC.openResponse)other); @@ -7907,7 +19424,7 @@ public final class MRC { return this; } } - + public Builder mergeFrom(org.xtreemfs.pbrpc.generatedinterfaces.MRC.openResponse other) { if (other == org.xtreemfs.pbrpc.generatedinterfaces.MRC.openResponse.getDefaultInstance()) return this; if (other.hasCreds()) { @@ -7919,395 +19436,1015 @@ public final class MRC { this.mergeUnknownFields(other.getUnknownFields()); return this; } - + + public final boolean isInitialized() { + if (!hasCreds()) { + + return false; + } + if (!hasTimestampS()) { + + return false; + } + if (!getCreds().isInitialized()) { + + return false; + } + return true; + } + public Builder mergeFrom( com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - com.google.protobuf.UnknownFieldSet.Builder unknownFields = - com.google.protobuf.UnknownFieldSet.newBuilder( - this.getUnknownFields()); - while (true) { - int tag = input.readTag(); - switch (tag) { - case 0: - this.setUnknownFields(unknownFields.build()); - return this; - default: { - if (!parseUnknownField(input, unknownFields, - extensionRegistry, tag)) { - this.setUnknownFields(unknownFields.build()); - return this; - } - break; - } - case 10: { - org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials.Builder subBuilder = org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials.newBuilder(); - if (hasCreds()) { - subBuilder.mergeFrom(getCreds()); - } - input.readMessage(subBuilder, extensionRegistry); - setCreds(subBuilder.buildPartial()); - break; - } - case 21: { - setTimestampS(input.readFixed32()); - break; - } + org.xtreemfs.pbrpc.generatedinterfaces.MRC.openResponse parsedMessage = null; + try { + parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + parsedMessage = (org.xtreemfs.pbrpc.generatedinterfaces.MRC.openResponse) e.getUnfinishedMessage(); + throw e; + } finally { + if (parsedMessage != null) { + mergeFrom(parsedMessage); } } + return this; } - - + private int bitField0_; + // required .xtreemfs.pbrpc.FileCredentials creds = 1; + private org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials creds_ = org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials.getDefaultInstance(); + private com.google.protobuf.SingleFieldBuilder< + org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials, org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials.Builder, org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentialsOrBuilder> credsBuilder_; + /** + * required .xtreemfs.pbrpc.FileCredentials creds = 1; + * + *
+       * the file credentials
+       * 
+ */ public boolean hasCreds() { - return result.hasCreds(); - } + return ((bitField0_ & 0x00000001) == 0x00000001); + } + /** + * required .xtreemfs.pbrpc.FileCredentials creds = 1; + * + *
+       * the file credentials
+       * 
+ */ public org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials getCreds() { - return result.getCreds(); + if (credsBuilder_ == null) { + return creds_; + } else { + return credsBuilder_.getMessage(); + } } + /** + * required .xtreemfs.pbrpc.FileCredentials creds = 1; + * + *
+       * the file credentials
+       * 
+ */ public Builder setCreds(org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials value) { - if (value == null) { - throw new NullPointerException(); + if (credsBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + creds_ = value; + onChanged(); + } else { + credsBuilder_.setMessage(value); + } + bitField0_ |= 0x00000001; + return this; + } + /** + * required .xtreemfs.pbrpc.FileCredentials creds = 1; + * + *
+       * the file credentials
+       * 
+ */ + public Builder setCreds( + org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials.Builder builderForValue) { + if (credsBuilder_ == null) { + creds_ = builderForValue.build(); + onChanged(); + } else { + credsBuilder_.setMessage(builderForValue.build()); } - result.hasCreds = true; - result.creds_ = value; - return this; - } - public Builder setCreds(org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials.Builder builderForValue) { - result.hasCreds = true; - result.creds_ = builderForValue.build(); + bitField0_ |= 0x00000001; return this; } + /** + * required .xtreemfs.pbrpc.FileCredentials creds = 1; + * + *
+       * the file credentials
+       * 
+ */ public Builder mergeCreds(org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials value) { - if (result.hasCreds() && - result.creds_ != org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials.getDefaultInstance()) { - result.creds_ = - org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials.newBuilder(result.creds_).mergeFrom(value).buildPartial(); + if (credsBuilder_ == null) { + if (((bitField0_ & 0x00000001) == 0x00000001) && + creds_ != org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials.getDefaultInstance()) { + creds_ = + org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials.newBuilder(creds_).mergeFrom(value).buildPartial(); + } else { + creds_ = value; + } + onChanged(); } else { - result.creds_ = value; + credsBuilder_.mergeFrom(value); } - result.hasCreds = true; + bitField0_ |= 0x00000001; return this; } + /** + * required .xtreemfs.pbrpc.FileCredentials creds = 1; + * + *
+       * the file credentials
+       * 
+ */ public Builder clearCreds() { - result.hasCreds = false; - result.creds_ = org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials.getDefaultInstance(); - return this; + if (credsBuilder_ == null) { + creds_ = org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials.getDefaultInstance(); + onChanged(); + } else { + credsBuilder_.clear(); + } + bitField0_ = (bitField0_ & ~0x00000001); + return this; + } + /** + * required .xtreemfs.pbrpc.FileCredentials creds = 1; + * + *
+       * the file credentials
+       * 
+ */ + public org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials.Builder getCredsBuilder() { + bitField0_ |= 0x00000001; + onChanged(); + return getCredsFieldBuilder().getBuilder(); + } + /** + * required .xtreemfs.pbrpc.FileCredentials creds = 1; + * + *
+       * the file credentials
+       * 
+ */ + public org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentialsOrBuilder getCredsOrBuilder() { + if (credsBuilder_ != null) { + return credsBuilder_.getMessageOrBuilder(); + } else { + return creds_; + } + } + /** + * required .xtreemfs.pbrpc.FileCredentials creds = 1; + * + *
+       * the file credentials
+       * 
+ */ + private com.google.protobuf.SingleFieldBuilder< + org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials, org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials.Builder, org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentialsOrBuilder> + getCredsFieldBuilder() { + if (credsBuilder_ == null) { + credsBuilder_ = new com.google.protobuf.SingleFieldBuilder< + org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials, org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials.Builder, org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentialsOrBuilder>( + creds_, + getParentForChildren(), + isClean()); + creds_ = null; + } + return credsBuilder_; } - + // required fixed32 timestamp_s = 2; + private int timestampS_ ; + /** + * required fixed32 timestamp_s = 2; + * + *
+       * the server timestamp in seconds since 1970 to which the file
+       * timestamps were updated
+       * 
+ */ public boolean hasTimestampS() { - return result.hasTimestampS(); - } + return ((bitField0_ & 0x00000002) == 0x00000002); + } + /** + * required fixed32 timestamp_s = 2; + * + *
+       * the server timestamp in seconds since 1970 to which the file
+       * timestamps were updated
+       * 
+ */ public int getTimestampS() { - return result.getTimestampS(); - } + return timestampS_; + } + /** + * required fixed32 timestamp_s = 2; + * + *
+       * the server timestamp in seconds since 1970 to which the file
+       * timestamps were updated
+       * 
+ */ public Builder setTimestampS(int value) { - result.hasTimestampS = true; - result.timestampS_ = value; - return this; - } + bitField0_ |= 0x00000002; + timestampS_ = value; + onChanged(); + return this; + } + /** + * required fixed32 timestamp_s = 2; + * + *
+       * the server timestamp in seconds since 1970 to which the file
+       * timestamps were updated
+       * 
+ */ public Builder clearTimestampS() { - result.hasTimestampS = false; - result.timestampS_ = 0; + bitField0_ = (bitField0_ & ~0x00000002); + timestampS_ = 0; + onChanged(); return this; } - + // @@protoc_insertion_point(builder_scope:xtreemfs.pbrpc.openResponse) } - + static { defaultInstance = new openResponse(true); - org.xtreemfs.pbrpc.generatedinterfaces.MRC.internalForceInit(); defaultInstance.initFields(); } - + // @@protoc_insertion_point(class_scope:xtreemfs.pbrpc.openResponse) } - + + public interface readdirRequestOrBuilder + extends com.google.protobuf.MessageOrBuilder { + + // required string volume_name = 1; + /** + * required string volume_name = 1; + * + *
+     * the volume name
+     * 
+ */ + boolean hasVolumeName(); + /** + * required string volume_name = 1; + * + *
+     * the volume name
+     * 
+ */ + java.lang.String getVolumeName(); + /** + * required string volume_name = 1; + * + *
+     * the volume name
+     * 
+ */ + com.google.protobuf.ByteString + getVolumeNameBytes(); + + // required string path = 2; + /** + * required string path = 2; + * + *
+     * the path to the directory, relative to the volume root
+     * 
+ */ + boolean hasPath(); + /** + * required string path = 2; + * + *
+     * the path to the directory, relative to the volume root
+     * 
+ */ + java.lang.String getPath(); + /** + * required string path = 2; + * + *
+     * the path to the directory, relative to the volume root
+     * 
+ */ + com.google.protobuf.ByteString + getPathBytes(); + + // required fixed64 known_etag = 3; + /** + * required fixed64 known_etag = 3; + * + *
+     * an identification tag indicating the last known version of the directory
+     * content
+     * 
+ */ + boolean hasKnownEtag(); + /** + * required fixed64 known_etag = 3; + * + *
+     * an identification tag indicating the last known version of the directory
+     * content
+     * 
+ */ + long getKnownEtag(); + + // required fixed32 limit_directory_entries_count = 4; + /** + * required fixed32 limit_directory_entries_count = 4; + * + *
+     * the maximum number of directory entries to return
+     * 
+ */ + boolean hasLimitDirectoryEntriesCount(); + /** + * required fixed32 limit_directory_entries_count = 4; + * + *
+     * the maximum number of directory entries to return
+     * 
+ */ + int getLimitDirectoryEntriesCount(); + + // required bool names_only = 5; + /** + * required bool names_only = 5; + * + *
+     * a flag indicating that only names of nested files and directories are
+     * supposed to be returned, no attributes
+     * 
+ */ + boolean hasNamesOnly(); + /** + * required bool names_only = 5; + * + *
+     * a flag indicating that only names of nested files and directories are
+     * supposed to be returned, no attributes
+     * 
+ */ + boolean getNamesOnly(); + + // required fixed64 seen_directory_entries_count = 6; + /** + * required fixed64 seen_directory_entries_count = 6; + * + *
+     * the number of directory entries that have been returned already by
+     * previous calls
+     * 
+ */ + boolean hasSeenDirectoryEntriesCount(); + /** + * required fixed64 seen_directory_entries_count = 6; + * + *
+     * the number of directory entries that have been returned already by
+     * previous calls
+     * 
+ */ + long getSeenDirectoryEntriesCount(); + } + /** + * Protobuf type {@code xtreemfs.pbrpc.readdirRequest} + * + *
+   * requests the content of a directory
+   * 
+ */ public static final class readdirRequest extends - com.google.protobuf.GeneratedMessage { + com.google.protobuf.GeneratedMessage + implements readdirRequestOrBuilder { // Use readdirRequest.newBuilder() to construct. - private readdirRequest() { - initFields(); + private readdirRequest(com.google.protobuf.GeneratedMessage.Builder builder) { + super(builder); + this.unknownFields = builder.getUnknownFields(); } - private readdirRequest(boolean noInit) {} - + private readdirRequest(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); } + private static final readdirRequest defaultInstance; public static readdirRequest getDefaultInstance() { return defaultInstance; } - + public readdirRequest getDefaultInstanceForType() { return defaultInstance; } - + + private final com.google.protobuf.UnknownFieldSet unknownFields; + @java.lang.Override + public final com.google.protobuf.UnknownFieldSet + getUnknownFields() { + return this.unknownFields; + } + private readdirRequest( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + initFields(); + int mutable_bitField0_ = 0; + com.google.protobuf.UnknownFieldSet.Builder unknownFields = + com.google.protobuf.UnknownFieldSet.newBuilder(); + try { + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch (tag) { + case 0: + done = true; + break; + default: { + if (!parseUnknownField(input, unknownFields, + extensionRegistry, tag)) { + done = true; + } + break; + } + case 10: { + bitField0_ |= 0x00000001; + volumeName_ = input.readBytes(); + break; + } + case 18: { + bitField0_ |= 0x00000002; + path_ = input.readBytes(); + break; + } + case 25: { + bitField0_ |= 0x00000004; + knownEtag_ = input.readFixed64(); + break; + } + case 37: { + bitField0_ |= 0x00000008; + limitDirectoryEntriesCount_ = input.readFixed32(); + break; + } + case 40: { + bitField0_ |= 0x00000010; + namesOnly_ = input.readBool(); + break; + } + case 49: { + bitField0_ |= 0x00000020; + seenDirectoryEntriesCount_ = input.readFixed64(); + break; + } + } + } + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(this); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException( + e.getMessage()).setUnfinishedMessage(this); + } finally { + this.unknownFields = unknownFields.build(); + makeExtensionsImmutable(); + } + } public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { return org.xtreemfs.pbrpc.generatedinterfaces.MRC.internal_static_xtreemfs_pbrpc_readdirRequest_descriptor; } - + protected com.google.protobuf.GeneratedMessage.FieldAccessorTable internalGetFieldAccessorTable() { - return org.xtreemfs.pbrpc.generatedinterfaces.MRC.internal_static_xtreemfs_pbrpc_readdirRequest_fieldAccessorTable; + return org.xtreemfs.pbrpc.generatedinterfaces.MRC.internal_static_xtreemfs_pbrpc_readdirRequest_fieldAccessorTable + .ensureFieldAccessorsInitialized( + org.xtreemfs.pbrpc.generatedinterfaces.MRC.readdirRequest.class, org.xtreemfs.pbrpc.generatedinterfaces.MRC.readdirRequest.Builder.class); + } + + public static com.google.protobuf.Parser PARSER = + new com.google.protobuf.AbstractParser() { + public readdirRequest parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return new readdirRequest(input, extensionRegistry); + } + }; + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; } - + + private int bitField0_; // required string volume_name = 1; public static final int VOLUME_NAME_FIELD_NUMBER = 1; - private boolean hasVolumeName; - private java.lang.String volumeName_ = ""; - public boolean hasVolumeName() { return hasVolumeName; } - public java.lang.String getVolumeName() { return volumeName_; } - + private java.lang.Object volumeName_; + /** + * required string volume_name = 1; + * + *
+     * the volume name
+     * 
+ */ + public boolean hasVolumeName() { + return ((bitField0_ & 0x00000001) == 0x00000001); + } + /** + * required string volume_name = 1; + * + *
+     * the volume name
+     * 
+ */ + public java.lang.String getVolumeName() { + java.lang.Object ref = volumeName_; + if (ref instanceof java.lang.String) { + return (java.lang.String) ref; + } else { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + if (bs.isValidUtf8()) { + volumeName_ = s; + } + return s; + } + } + /** + * required string volume_name = 1; + * + *
+     * the volume name
+     * 
+ */ + public com.google.protobuf.ByteString + getVolumeNameBytes() { + java.lang.Object ref = volumeName_; + if (ref instanceof java.lang.String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + volumeName_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + // required string path = 2; public static final int PATH_FIELD_NUMBER = 2; - private boolean hasPath; - private java.lang.String path_ = ""; - public boolean hasPath() { return hasPath; } - public java.lang.String getPath() { return path_; } - + private java.lang.Object path_; + /** + * required string path = 2; + * + *
+     * the path to the directory, relative to the volume root
+     * 
+ */ + public boolean hasPath() { + return ((bitField0_ & 0x00000002) == 0x00000002); + } + /** + * required string path = 2; + * + *
+     * the path to the directory, relative to the volume root
+     * 
+ */ + public java.lang.String getPath() { + java.lang.Object ref = path_; + if (ref instanceof java.lang.String) { + return (java.lang.String) ref; + } else { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + if (bs.isValidUtf8()) { + path_ = s; + } + return s; + } + } + /** + * required string path = 2; + * + *
+     * the path to the directory, relative to the volume root
+     * 
+ */ + public com.google.protobuf.ByteString + getPathBytes() { + java.lang.Object ref = path_; + if (ref instanceof java.lang.String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + path_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + // required fixed64 known_etag = 3; public static final int KNOWN_ETAG_FIELD_NUMBER = 3; - private boolean hasKnownEtag; - private long knownEtag_ = 0L; - public boolean hasKnownEtag() { return hasKnownEtag; } - public long getKnownEtag() { return knownEtag_; } - + private long knownEtag_; + /** + * required fixed64 known_etag = 3; + * + *
+     * an identification tag indicating the last known version of the directory
+     * content
+     * 
+ */ + public boolean hasKnownEtag() { + return ((bitField0_ & 0x00000004) == 0x00000004); + } + /** + * required fixed64 known_etag = 3; + * + *
+     * an identification tag indicating the last known version of the directory
+     * content
+     * 
+ */ + public long getKnownEtag() { + return knownEtag_; + } + // required fixed32 limit_directory_entries_count = 4; public static final int LIMIT_DIRECTORY_ENTRIES_COUNT_FIELD_NUMBER = 4; - private boolean hasLimitDirectoryEntriesCount; - private int limitDirectoryEntriesCount_ = 0; - public boolean hasLimitDirectoryEntriesCount() { return hasLimitDirectoryEntriesCount; } - public int getLimitDirectoryEntriesCount() { return limitDirectoryEntriesCount_; } - + private int limitDirectoryEntriesCount_; + /** + * required fixed32 limit_directory_entries_count = 4; + * + *
+     * the maximum number of directory entries to return
+     * 
+ */ + public boolean hasLimitDirectoryEntriesCount() { + return ((bitField0_ & 0x00000008) == 0x00000008); + } + /** + * required fixed32 limit_directory_entries_count = 4; + * + *
+     * the maximum number of directory entries to return
+     * 
+ */ + public int getLimitDirectoryEntriesCount() { + return limitDirectoryEntriesCount_; + } + // required bool names_only = 5; public static final int NAMES_ONLY_FIELD_NUMBER = 5; - private boolean hasNamesOnly; - private boolean namesOnly_ = false; - public boolean hasNamesOnly() { return hasNamesOnly; } - public boolean getNamesOnly() { return namesOnly_; } - + private boolean namesOnly_; + /** + * required bool names_only = 5; + * + *
+     * a flag indicating that only names of nested files and directories are
+     * supposed to be returned, no attributes
+     * 
+ */ + public boolean hasNamesOnly() { + return ((bitField0_ & 0x00000010) == 0x00000010); + } + /** + * required bool names_only = 5; + * + *
+     * a flag indicating that only names of nested files and directories are
+     * supposed to be returned, no attributes
+     * 
+ */ + public boolean getNamesOnly() { + return namesOnly_; + } + // required fixed64 seen_directory_entries_count = 6; public static final int SEEN_DIRECTORY_ENTRIES_COUNT_FIELD_NUMBER = 6; - private boolean hasSeenDirectoryEntriesCount; - private long seenDirectoryEntriesCount_ = 0L; - public boolean hasSeenDirectoryEntriesCount() { return hasSeenDirectoryEntriesCount; } - public long getSeenDirectoryEntriesCount() { return seenDirectoryEntriesCount_; } - - private void initFields() { + private long seenDirectoryEntriesCount_; + /** + * required fixed64 seen_directory_entries_count = 6; + * + *
+     * the number of directory entries that have been returned already by
+     * previous calls
+     * 
+ */ + public boolean hasSeenDirectoryEntriesCount() { + return ((bitField0_ & 0x00000020) == 0x00000020); + } + /** + * required fixed64 seen_directory_entries_count = 6; + * + *
+     * the number of directory entries that have been returned already by
+     * previous calls
+     * 
+ */ + public long getSeenDirectoryEntriesCount() { + return seenDirectoryEntriesCount_; } + + private void initFields() { + volumeName_ = ""; + path_ = ""; + knownEtag_ = 0L; + limitDirectoryEntriesCount_ = 0; + namesOnly_ = false; + seenDirectoryEntriesCount_ = 0L; + } + private byte memoizedIsInitialized = -1; public final boolean isInitialized() { - if (!hasVolumeName) return false; - if (!hasPath) return false; - if (!hasKnownEtag) return false; - if (!hasLimitDirectoryEntriesCount) return false; - if (!hasNamesOnly) return false; - if (!hasSeenDirectoryEntriesCount) return false; - return true; - } - - public void writeTo(com.google.protobuf.CodedOutputStream output) - throws java.io.IOException { - getSerializedSize(); - if (hasVolumeName()) { - output.writeString(1, getVolumeName()); + byte isInitialized = memoizedIsInitialized; + if (isInitialized != -1) return isInitialized == 1; + + if (!hasVolumeName()) { + memoizedIsInitialized = 0; + return false; } - if (hasPath()) { - output.writeString(2, getPath()); + if (!hasPath()) { + memoizedIsInitialized = 0; + return false; } - if (hasKnownEtag()) { - output.writeFixed64(3, getKnownEtag()); + if (!hasKnownEtag()) { + memoizedIsInitialized = 0; + return false; } - if (hasLimitDirectoryEntriesCount()) { - output.writeFixed32(4, getLimitDirectoryEntriesCount()); + if (!hasLimitDirectoryEntriesCount()) { + memoizedIsInitialized = 0; + return false; } - if (hasNamesOnly()) { - output.writeBool(5, getNamesOnly()); + if (!hasNamesOnly()) { + memoizedIsInitialized = 0; + return false; } - if (hasSeenDirectoryEntriesCount()) { - output.writeFixed64(6, getSeenDirectoryEntriesCount()); + if (!hasSeenDirectoryEntriesCount()) { + memoizedIsInitialized = 0; + return false; } - getUnknownFields().writeTo(output); + memoizedIsInitialized = 1; + return true; + } + + public void writeTo(com.google.protobuf.CodedOutputStream output) + throws java.io.IOException { + getSerializedSize(); + if (((bitField0_ & 0x00000001) == 0x00000001)) { + output.writeBytes(1, getVolumeNameBytes()); + } + if (((bitField0_ & 0x00000002) == 0x00000002)) { + output.writeBytes(2, getPathBytes()); + } + if (((bitField0_ & 0x00000004) == 0x00000004)) { + output.writeFixed64(3, knownEtag_); + } + if (((bitField0_ & 0x00000008) == 0x00000008)) { + output.writeFixed32(4, limitDirectoryEntriesCount_); + } + if (((bitField0_ & 0x00000010) == 0x00000010)) { + output.writeBool(5, namesOnly_); + } + if (((bitField0_ & 0x00000020) == 0x00000020)) { + output.writeFixed64(6, seenDirectoryEntriesCount_); + } + getUnknownFields().writeTo(output); } - + private int memoizedSerializedSize = -1; public int getSerializedSize() { int size = memoizedSerializedSize; if (size != -1) return size; - + size = 0; - if (hasVolumeName()) { + if (((bitField0_ & 0x00000001) == 0x00000001)) { size += com.google.protobuf.CodedOutputStream - .computeStringSize(1, getVolumeName()); + .computeBytesSize(1, getVolumeNameBytes()); } - if (hasPath()) { + if (((bitField0_ & 0x00000002) == 0x00000002)) { size += com.google.protobuf.CodedOutputStream - .computeStringSize(2, getPath()); + .computeBytesSize(2, getPathBytes()); } - if (hasKnownEtag()) { + if (((bitField0_ & 0x00000004) == 0x00000004)) { size += com.google.protobuf.CodedOutputStream - .computeFixed64Size(3, getKnownEtag()); + .computeFixed64Size(3, knownEtag_); } - if (hasLimitDirectoryEntriesCount()) { + if (((bitField0_ & 0x00000008) == 0x00000008)) { size += com.google.protobuf.CodedOutputStream - .computeFixed32Size(4, getLimitDirectoryEntriesCount()); + .computeFixed32Size(4, limitDirectoryEntriesCount_); } - if (hasNamesOnly()) { + if (((bitField0_ & 0x00000010) == 0x00000010)) { size += com.google.protobuf.CodedOutputStream - .computeBoolSize(5, getNamesOnly()); + .computeBoolSize(5, namesOnly_); } - if (hasSeenDirectoryEntriesCount()) { + if (((bitField0_ & 0x00000020) == 0x00000020)) { size += com.google.protobuf.CodedOutputStream - .computeFixed64Size(6, getSeenDirectoryEntriesCount()); + .computeFixed64Size(6, seenDirectoryEntriesCount_); } size += getUnknownFields().getSerializedSize(); memoizedSerializedSize = size; return size; } - + + private static final long serialVersionUID = 0L; + @java.lang.Override + protected java.lang.Object writeReplace() + throws java.io.ObjectStreamException { + return super.writeReplace(); + } + public static org.xtreemfs.pbrpc.generatedinterfaces.MRC.readdirRequest parseFrom( com.google.protobuf.ByteString data) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data).buildParsed(); + return PARSER.parseFrom(data); } public static org.xtreemfs.pbrpc.generatedinterfaces.MRC.readdirRequest parseFrom( com.google.protobuf.ByteString data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(data, extensionRegistry); } public static org.xtreemfs.pbrpc.generatedinterfaces.MRC.readdirRequest parseFrom(byte[] data) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data).buildParsed(); + return PARSER.parseFrom(data); } public static org.xtreemfs.pbrpc.generatedinterfaces.MRC.readdirRequest parseFrom( byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(data, extensionRegistry); } public static org.xtreemfs.pbrpc.generatedinterfaces.MRC.readdirRequest parseFrom(java.io.InputStream input) throws java.io.IOException { - return newBuilder().mergeFrom(input).buildParsed(); + return PARSER.parseFrom(input); } public static org.xtreemfs.pbrpc.generatedinterfaces.MRC.readdirRequest parseFrom( java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - return newBuilder().mergeFrom(input, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(input, extensionRegistry); } public static org.xtreemfs.pbrpc.generatedinterfaces.MRC.readdirRequest parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException { - Builder builder = newBuilder(); - if (builder.mergeDelimitedFrom(input)) { - return builder.buildParsed(); - } else { - return null; - } + return PARSER.parseDelimitedFrom(input); } public static org.xtreemfs.pbrpc.generatedinterfaces.MRC.readdirRequest parseDelimitedFrom( java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - Builder builder = newBuilder(); - if (builder.mergeDelimitedFrom(input, extensionRegistry)) { - return builder.buildParsed(); - } else { - return null; - } + return PARSER.parseDelimitedFrom(input, extensionRegistry); } public static org.xtreemfs.pbrpc.generatedinterfaces.MRC.readdirRequest parseFrom( com.google.protobuf.CodedInputStream input) throws java.io.IOException { - return newBuilder().mergeFrom(input).buildParsed(); + return PARSER.parseFrom(input); } public static org.xtreemfs.pbrpc.generatedinterfaces.MRC.readdirRequest parseFrom( com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - return newBuilder().mergeFrom(input, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(input, extensionRegistry); } - + public static Builder newBuilder() { return Builder.create(); } public Builder newBuilderForType() { return newBuilder(); } public static Builder newBuilder(org.xtreemfs.pbrpc.generatedinterfaces.MRC.readdirRequest prototype) { return newBuilder().mergeFrom(prototype); } public Builder toBuilder() { return newBuilder(this); } - + + @java.lang.Override + protected Builder newBuilderForType( + com.google.protobuf.GeneratedMessage.BuilderParent parent) { + Builder builder = new Builder(parent); + return builder; + } + /** + * Protobuf type {@code xtreemfs.pbrpc.readdirRequest} + * + *
+     * requests the content of a directory
+     * 
+ */ public static final class Builder extends - com.google.protobuf.GeneratedMessage.Builder { - private org.xtreemfs.pbrpc.generatedinterfaces.MRC.readdirRequest result; - + com.google.protobuf.GeneratedMessage.Builder + implements org.xtreemfs.pbrpc.generatedinterfaces.MRC.readdirRequestOrBuilder { + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return org.xtreemfs.pbrpc.generatedinterfaces.MRC.internal_static_xtreemfs_pbrpc_readdirRequest_descriptor; + } + + protected com.google.protobuf.GeneratedMessage.FieldAccessorTable + internalGetFieldAccessorTable() { + return org.xtreemfs.pbrpc.generatedinterfaces.MRC.internal_static_xtreemfs_pbrpc_readdirRequest_fieldAccessorTable + .ensureFieldAccessorsInitialized( + org.xtreemfs.pbrpc.generatedinterfaces.MRC.readdirRequest.class, org.xtreemfs.pbrpc.generatedinterfaces.MRC.readdirRequest.Builder.class); + } + // Construct using org.xtreemfs.pbrpc.generatedinterfaces.MRC.readdirRequest.newBuilder() - private Builder() {} - - private static Builder create() { - Builder builder = new Builder(); - builder.result = new org.xtreemfs.pbrpc.generatedinterfaces.MRC.readdirRequest(); - return builder; + private Builder() { + maybeForceBuilderInitialization(); } - - protected org.xtreemfs.pbrpc.generatedinterfaces.MRC.readdirRequest internalGetResult() { - return result; + + private Builder( + com.google.protobuf.GeneratedMessage.BuilderParent parent) { + super(parent); + maybeForceBuilderInitialization(); } - - public Builder clear() { - if (result == null) { - throw new IllegalStateException( - "Cannot call clear() after build()."); + private void maybeForceBuilderInitialization() { + if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) { } - result = new org.xtreemfs.pbrpc.generatedinterfaces.MRC.readdirRequest(); + } + private static Builder create() { + return new Builder(); + } + + public Builder clear() { + super.clear(); + volumeName_ = ""; + bitField0_ = (bitField0_ & ~0x00000001); + path_ = ""; + bitField0_ = (bitField0_ & ~0x00000002); + knownEtag_ = 0L; + bitField0_ = (bitField0_ & ~0x00000004); + limitDirectoryEntriesCount_ = 0; + bitField0_ = (bitField0_ & ~0x00000008); + namesOnly_ = false; + bitField0_ = (bitField0_ & ~0x00000010); + seenDirectoryEntriesCount_ = 0L; + bitField0_ = (bitField0_ & ~0x00000020); return this; } - + public Builder clone() { - return create().mergeFrom(result); + return create().mergeFrom(buildPartial()); } - + public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() { - return org.xtreemfs.pbrpc.generatedinterfaces.MRC.readdirRequest.getDescriptor(); + return org.xtreemfs.pbrpc.generatedinterfaces.MRC.internal_static_xtreemfs_pbrpc_readdirRequest_descriptor; } - + public org.xtreemfs.pbrpc.generatedinterfaces.MRC.readdirRequest getDefaultInstanceForType() { return org.xtreemfs.pbrpc.generatedinterfaces.MRC.readdirRequest.getDefaultInstance(); } - - public boolean isInitialized() { - return result.isInitialized(); - } + public org.xtreemfs.pbrpc.generatedinterfaces.MRC.readdirRequest build() { - if (result != null && !isInitialized()) { + org.xtreemfs.pbrpc.generatedinterfaces.MRC.readdirRequest result = buildPartial(); + if (!result.isInitialized()) { throw newUninitializedMessageException(result); } - return buildPartial(); - } - - private org.xtreemfs.pbrpc.generatedinterfaces.MRC.readdirRequest buildParsed() - throws com.google.protobuf.InvalidProtocolBufferException { - if (!isInitialized()) { - throw newUninitializedMessageException( - result).asInvalidProtocolBufferException(); - } - return buildPartial(); + return result; } - + public org.xtreemfs.pbrpc.generatedinterfaces.MRC.readdirRequest buildPartial() { - if (result == null) { - throw new IllegalStateException( - "build() has already been called on this Builder."); - } - org.xtreemfs.pbrpc.generatedinterfaces.MRC.readdirRequest returnMe = result; - result = null; - return returnMe; + org.xtreemfs.pbrpc.generatedinterfaces.MRC.readdirRequest result = new org.xtreemfs.pbrpc.generatedinterfaces.MRC.readdirRequest(this); + int from_bitField0_ = bitField0_; + int to_bitField0_ = 0; + if (((from_bitField0_ & 0x00000001) == 0x00000001)) { + to_bitField0_ |= 0x00000001; + } + result.volumeName_ = volumeName_; + if (((from_bitField0_ & 0x00000002) == 0x00000002)) { + to_bitField0_ |= 0x00000002; + } + result.path_ = path_; + if (((from_bitField0_ & 0x00000004) == 0x00000004)) { + to_bitField0_ |= 0x00000004; + } + result.knownEtag_ = knownEtag_; + if (((from_bitField0_ & 0x00000008) == 0x00000008)) { + to_bitField0_ |= 0x00000008; + } + result.limitDirectoryEntriesCount_ = limitDirectoryEntriesCount_; + if (((from_bitField0_ & 0x00000010) == 0x00000010)) { + to_bitField0_ |= 0x00000010; + } + result.namesOnly_ = namesOnly_; + if (((from_bitField0_ & 0x00000020) == 0x00000020)) { + to_bitField0_ |= 0x00000020; + } + result.seenDirectoryEntriesCount_ = seenDirectoryEntriesCount_; + result.bitField0_ = to_bitField0_; + onBuilt(); + return result; } - + public Builder mergeFrom(com.google.protobuf.Message other) { if (other instanceof org.xtreemfs.pbrpc.generatedinterfaces.MRC.readdirRequest) { return mergeFrom((org.xtreemfs.pbrpc.generatedinterfaces.MRC.readdirRequest)other); @@ -8316,14 +20453,18 @@ public final class MRC { return this; } } - + public Builder mergeFrom(org.xtreemfs.pbrpc.generatedinterfaces.MRC.readdirRequest other) { if (other == org.xtreemfs.pbrpc.generatedinterfaces.MRC.readdirRequest.getDefaultInstance()) return this; if (other.hasVolumeName()) { - setVolumeName(other.getVolumeName()); + bitField0_ |= 0x00000001; + volumeName_ = other.volumeName_; + onChanged(); } if (other.hasPath()) { - setPath(other.getPath()); + bitField0_ |= 0x00000002; + path_ = other.path_; + onChanged(); } if (other.hasKnownEtag()) { setKnownEtag(other.getKnownEtag()); @@ -8340,405 +20481,953 @@ public final class MRC { this.mergeUnknownFields(other.getUnknownFields()); return this; } - + + public final boolean isInitialized() { + if (!hasVolumeName()) { + + return false; + } + if (!hasPath()) { + + return false; + } + if (!hasKnownEtag()) { + + return false; + } + if (!hasLimitDirectoryEntriesCount()) { + + return false; + } + if (!hasNamesOnly()) { + + return false; + } + if (!hasSeenDirectoryEntriesCount()) { + + return false; + } + return true; + } + public Builder mergeFrom( com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - com.google.protobuf.UnknownFieldSet.Builder unknownFields = - com.google.protobuf.UnknownFieldSet.newBuilder( - this.getUnknownFields()); - while (true) { - int tag = input.readTag(); - switch (tag) { - case 0: - this.setUnknownFields(unknownFields.build()); - return this; - default: { - if (!parseUnknownField(input, unknownFields, - extensionRegistry, tag)) { - this.setUnknownFields(unknownFields.build()); - return this; - } - break; - } - case 10: { - setVolumeName(input.readString()); - break; - } - case 18: { - setPath(input.readString()); - break; - } - case 25: { - setKnownEtag(input.readFixed64()); - break; - } - case 37: { - setLimitDirectoryEntriesCount(input.readFixed32()); - break; - } - case 40: { - setNamesOnly(input.readBool()); - break; - } - case 49: { - setSeenDirectoryEntriesCount(input.readFixed64()); - break; - } + org.xtreemfs.pbrpc.generatedinterfaces.MRC.readdirRequest parsedMessage = null; + try { + parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + parsedMessage = (org.xtreemfs.pbrpc.generatedinterfaces.MRC.readdirRequest) e.getUnfinishedMessage(); + throw e; + } finally { + if (parsedMessage != null) { + mergeFrom(parsedMessage); } } + return this; } - - + private int bitField0_; + // required string volume_name = 1; + private java.lang.Object volumeName_ = ""; + /** + * required string volume_name = 1; + * + *
+       * the volume name
+       * 
+ */ public boolean hasVolumeName() { - return result.hasVolumeName(); - } + return ((bitField0_ & 0x00000001) == 0x00000001); + } + /** + * required string volume_name = 1; + * + *
+       * the volume name
+       * 
+ */ public java.lang.String getVolumeName() { - return result.getVolumeName(); - } - public Builder setVolumeName(java.lang.String value) { + java.lang.Object ref = volumeName_; + if (!(ref instanceof java.lang.String)) { + java.lang.String s = ((com.google.protobuf.ByteString) ref) + .toStringUtf8(); + volumeName_ = s; + return s; + } else { + return (java.lang.String) ref; + } + } + /** + * required string volume_name = 1; + * + *
+       * the volume name
+       * 
+ */ + public com.google.protobuf.ByteString + getVolumeNameBytes() { + java.lang.Object ref = volumeName_; + if (ref instanceof String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + volumeName_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + /** + * required string volume_name = 1; + * + *
+       * the volume name
+       * 
+ */ + public Builder setVolumeName( + java.lang.String value) { if (value == null) { throw new NullPointerException(); } - result.hasVolumeName = true; - result.volumeName_ = value; - return this; - } + bitField0_ |= 0x00000001; + volumeName_ = value; + onChanged(); + return this; + } + /** + * required string volume_name = 1; + * + *
+       * the volume name
+       * 
+ */ public Builder clearVolumeName() { - result.hasVolumeName = false; - result.volumeName_ = getDefaultInstance().getVolumeName(); + bitField0_ = (bitField0_ & ~0x00000001); + volumeName_ = getDefaultInstance().getVolumeName(); + onChanged(); + return this; + } + /** + * required string volume_name = 1; + * + *
+       * the volume name
+       * 
+ */ + public Builder setVolumeNameBytes( + com.google.protobuf.ByteString value) { + if (value == null) { + throw new NullPointerException(); + } + bitField0_ |= 0x00000001; + volumeName_ = value; + onChanged(); return this; } - + // required string path = 2; + private java.lang.Object path_ = ""; + /** + * required string path = 2; + * + *
+       * the path to the directory, relative to the volume root
+       * 
+ */ public boolean hasPath() { - return result.hasPath(); - } + return ((bitField0_ & 0x00000002) == 0x00000002); + } + /** + * required string path = 2; + * + *
+       * the path to the directory, relative to the volume root
+       * 
+ */ public java.lang.String getPath() { - return result.getPath(); - } - public Builder setPath(java.lang.String value) { + java.lang.Object ref = path_; + if (!(ref instanceof java.lang.String)) { + java.lang.String s = ((com.google.protobuf.ByteString) ref) + .toStringUtf8(); + path_ = s; + return s; + } else { + return (java.lang.String) ref; + } + } + /** + * required string path = 2; + * + *
+       * the path to the directory, relative to the volume root
+       * 
+ */ + public com.google.protobuf.ByteString + getPathBytes() { + java.lang.Object ref = path_; + if (ref instanceof String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + path_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + /** + * required string path = 2; + * + *
+       * the path to the directory, relative to the volume root
+       * 
+ */ + public Builder setPath( + java.lang.String value) { if (value == null) { throw new NullPointerException(); } - result.hasPath = true; - result.path_ = value; - return this; - } + bitField0_ |= 0x00000002; + path_ = value; + onChanged(); + return this; + } + /** + * required string path = 2; + * + *
+       * the path to the directory, relative to the volume root
+       * 
+ */ public Builder clearPath() { - result.hasPath = false; - result.path_ = getDefaultInstance().getPath(); + bitField0_ = (bitField0_ & ~0x00000002); + path_ = getDefaultInstance().getPath(); + onChanged(); + return this; + } + /** + * required string path = 2; + * + *
+       * the path to the directory, relative to the volume root
+       * 
+ */ + public Builder setPathBytes( + com.google.protobuf.ByteString value) { + if (value == null) { + throw new NullPointerException(); + } + bitField0_ |= 0x00000002; + path_ = value; + onChanged(); return this; } - + // required fixed64 known_etag = 3; + private long knownEtag_ ; + /** + * required fixed64 known_etag = 3; + * + *
+       * an identification tag indicating the last known version of the directory
+       * content
+       * 
+ */ public boolean hasKnownEtag() { - return result.hasKnownEtag(); - } + return ((bitField0_ & 0x00000004) == 0x00000004); + } + /** + * required fixed64 known_etag = 3; + * + *
+       * an identification tag indicating the last known version of the directory
+       * content
+       * 
+ */ public long getKnownEtag() { - return result.getKnownEtag(); - } + return knownEtag_; + } + /** + * required fixed64 known_etag = 3; + * + *
+       * an identification tag indicating the last known version of the directory
+       * content
+       * 
+ */ public Builder setKnownEtag(long value) { - result.hasKnownEtag = true; - result.knownEtag_ = value; - return this; - } + bitField0_ |= 0x00000004; + knownEtag_ = value; + onChanged(); + return this; + } + /** + * required fixed64 known_etag = 3; + * + *
+       * an identification tag indicating the last known version of the directory
+       * content
+       * 
+ */ public Builder clearKnownEtag() { - result.hasKnownEtag = false; - result.knownEtag_ = 0L; + bitField0_ = (bitField0_ & ~0x00000004); + knownEtag_ = 0L; + onChanged(); return this; } - + // required fixed32 limit_directory_entries_count = 4; + private int limitDirectoryEntriesCount_ ; + /** + * required fixed32 limit_directory_entries_count = 4; + * + *
+       * the maximum number of directory entries to return
+       * 
+ */ public boolean hasLimitDirectoryEntriesCount() { - return result.hasLimitDirectoryEntriesCount(); - } + return ((bitField0_ & 0x00000008) == 0x00000008); + } + /** + * required fixed32 limit_directory_entries_count = 4; + * + *
+       * the maximum number of directory entries to return
+       * 
+ */ public int getLimitDirectoryEntriesCount() { - return result.getLimitDirectoryEntriesCount(); - } + return limitDirectoryEntriesCount_; + } + /** + * required fixed32 limit_directory_entries_count = 4; + * + *
+       * the maximum number of directory entries to return
+       * 
+ */ public Builder setLimitDirectoryEntriesCount(int value) { - result.hasLimitDirectoryEntriesCount = true; - result.limitDirectoryEntriesCount_ = value; - return this; - } + bitField0_ |= 0x00000008; + limitDirectoryEntriesCount_ = value; + onChanged(); + return this; + } + /** + * required fixed32 limit_directory_entries_count = 4; + * + *
+       * the maximum number of directory entries to return
+       * 
+ */ public Builder clearLimitDirectoryEntriesCount() { - result.hasLimitDirectoryEntriesCount = false; - result.limitDirectoryEntriesCount_ = 0; + bitField0_ = (bitField0_ & ~0x00000008); + limitDirectoryEntriesCount_ = 0; + onChanged(); return this; } - + // required bool names_only = 5; + private boolean namesOnly_ ; + /** + * required bool names_only = 5; + * + *
+       * a flag indicating that only names of nested files and directories are
+       * supposed to be returned, no attributes
+       * 
+ */ public boolean hasNamesOnly() { - return result.hasNamesOnly(); - } + return ((bitField0_ & 0x00000010) == 0x00000010); + } + /** + * required bool names_only = 5; + * + *
+       * a flag indicating that only names of nested files and directories are
+       * supposed to be returned, no attributes
+       * 
+ */ public boolean getNamesOnly() { - return result.getNamesOnly(); - } + return namesOnly_; + } + /** + * required bool names_only = 5; + * + *
+       * a flag indicating that only names of nested files and directories are
+       * supposed to be returned, no attributes
+       * 
+ */ public Builder setNamesOnly(boolean value) { - result.hasNamesOnly = true; - result.namesOnly_ = value; - return this; - } + bitField0_ |= 0x00000010; + namesOnly_ = value; + onChanged(); + return this; + } + /** + * required bool names_only = 5; + * + *
+       * a flag indicating that only names of nested files and directories are
+       * supposed to be returned, no attributes
+       * 
+ */ public Builder clearNamesOnly() { - result.hasNamesOnly = false; - result.namesOnly_ = false; + bitField0_ = (bitField0_ & ~0x00000010); + namesOnly_ = false; + onChanged(); return this; } - + // required fixed64 seen_directory_entries_count = 6; + private long seenDirectoryEntriesCount_ ; + /** + * required fixed64 seen_directory_entries_count = 6; + * + *
+       * the number of directory entries that have been returned already by
+       * previous calls
+       * 
+ */ public boolean hasSeenDirectoryEntriesCount() { - return result.hasSeenDirectoryEntriesCount(); - } + return ((bitField0_ & 0x00000020) == 0x00000020); + } + /** + * required fixed64 seen_directory_entries_count = 6; + * + *
+       * the number of directory entries that have been returned already by
+       * previous calls
+       * 
+ */ public long getSeenDirectoryEntriesCount() { - return result.getSeenDirectoryEntriesCount(); - } + return seenDirectoryEntriesCount_; + } + /** + * required fixed64 seen_directory_entries_count = 6; + * + *
+       * the number of directory entries that have been returned already by
+       * previous calls
+       * 
+ */ public Builder setSeenDirectoryEntriesCount(long value) { - result.hasSeenDirectoryEntriesCount = true; - result.seenDirectoryEntriesCount_ = value; - return this; - } + bitField0_ |= 0x00000020; + seenDirectoryEntriesCount_ = value; + onChanged(); + return this; + } + /** + * required fixed64 seen_directory_entries_count = 6; + * + *
+       * the number of directory entries that have been returned already by
+       * previous calls
+       * 
+ */ public Builder clearSeenDirectoryEntriesCount() { - result.hasSeenDirectoryEntriesCount = false; - result.seenDirectoryEntriesCount_ = 0L; + bitField0_ = (bitField0_ & ~0x00000020); + seenDirectoryEntriesCount_ = 0L; + onChanged(); return this; } - + // @@protoc_insertion_point(builder_scope:xtreemfs.pbrpc.readdirRequest) } - + static { defaultInstance = new readdirRequest(true); - org.xtreemfs.pbrpc.generatedinterfaces.MRC.internalForceInit(); defaultInstance.initFields(); } - + // @@protoc_insertion_point(class_scope:xtreemfs.pbrpc.readdirRequest) } - + + public interface readlinkRequestOrBuilder + extends com.google.protobuf.MessageOrBuilder { + + // required string volume_name = 1; + /** + * required string volume_name = 1; + * + *
+     * the volume name
+     * 
+ */ + boolean hasVolumeName(); + /** + * required string volume_name = 1; + * + *
+     * the volume name
+     * 
+ */ + java.lang.String getVolumeName(); + /** + * required string volume_name = 1; + * + *
+     * the volume name
+     * 
+ */ + com.google.protobuf.ByteString + getVolumeNameBytes(); + + // required string path = 2; + /** + * required string path = 2; + * + *
+     * the path to the symbolic link, relative to the volume root
+     * 
+ */ + boolean hasPath(); + /** + * required string path = 2; + * + *
+     * the path to the symbolic link, relative to the volume root
+     * 
+ */ + java.lang.String getPath(); + /** + * required string path = 2; + * + *
+     * the path to the symbolic link, relative to the volume root
+     * 
+ */ + com.google.protobuf.ByteString + getPathBytes(); + } + /** + * Protobuf type {@code xtreemfs.pbrpc.readlinkRequest} + * + *
+   * requests the target path of a symbolic link
+   * 
+ */ public static final class readlinkRequest extends - com.google.protobuf.GeneratedMessage { + com.google.protobuf.GeneratedMessage + implements readlinkRequestOrBuilder { // Use readlinkRequest.newBuilder() to construct. - private readlinkRequest() { - initFields(); + private readlinkRequest(com.google.protobuf.GeneratedMessage.Builder builder) { + super(builder); + this.unknownFields = builder.getUnknownFields(); } - private readlinkRequest(boolean noInit) {} - + private readlinkRequest(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); } + private static final readlinkRequest defaultInstance; public static readlinkRequest getDefaultInstance() { return defaultInstance; } - + public readlinkRequest getDefaultInstanceForType() { return defaultInstance; } - + + private final com.google.protobuf.UnknownFieldSet unknownFields; + @java.lang.Override + public final com.google.protobuf.UnknownFieldSet + getUnknownFields() { + return this.unknownFields; + } + private readlinkRequest( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + initFields(); + int mutable_bitField0_ = 0; + com.google.protobuf.UnknownFieldSet.Builder unknownFields = + com.google.protobuf.UnknownFieldSet.newBuilder(); + try { + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch (tag) { + case 0: + done = true; + break; + default: { + if (!parseUnknownField(input, unknownFields, + extensionRegistry, tag)) { + done = true; + } + break; + } + case 10: { + bitField0_ |= 0x00000001; + volumeName_ = input.readBytes(); + break; + } + case 18: { + bitField0_ |= 0x00000002; + path_ = input.readBytes(); + break; + } + } + } + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(this); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException( + e.getMessage()).setUnfinishedMessage(this); + } finally { + this.unknownFields = unknownFields.build(); + makeExtensionsImmutable(); + } + } public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { return org.xtreemfs.pbrpc.generatedinterfaces.MRC.internal_static_xtreemfs_pbrpc_readlinkRequest_descriptor; } - + protected com.google.protobuf.GeneratedMessage.FieldAccessorTable internalGetFieldAccessorTable() { - return org.xtreemfs.pbrpc.generatedinterfaces.MRC.internal_static_xtreemfs_pbrpc_readlinkRequest_fieldAccessorTable; + return org.xtreemfs.pbrpc.generatedinterfaces.MRC.internal_static_xtreemfs_pbrpc_readlinkRequest_fieldAccessorTable + .ensureFieldAccessorsInitialized( + org.xtreemfs.pbrpc.generatedinterfaces.MRC.readlinkRequest.class, org.xtreemfs.pbrpc.generatedinterfaces.MRC.readlinkRequest.Builder.class); + } + + public static com.google.protobuf.Parser PARSER = + new com.google.protobuf.AbstractParser() { + public readlinkRequest parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return new readlinkRequest(input, extensionRegistry); + } + }; + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; } - + + private int bitField0_; // required string volume_name = 1; public static final int VOLUME_NAME_FIELD_NUMBER = 1; - private boolean hasVolumeName; - private java.lang.String volumeName_ = ""; - public boolean hasVolumeName() { return hasVolumeName; } - public java.lang.String getVolumeName() { return volumeName_; } - + private java.lang.Object volumeName_; + /** + * required string volume_name = 1; + * + *
+     * the volume name
+     * 
+ */ + public boolean hasVolumeName() { + return ((bitField0_ & 0x00000001) == 0x00000001); + } + /** + * required string volume_name = 1; + * + *
+     * the volume name
+     * 
+ */ + public java.lang.String getVolumeName() { + java.lang.Object ref = volumeName_; + if (ref instanceof java.lang.String) { + return (java.lang.String) ref; + } else { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + if (bs.isValidUtf8()) { + volumeName_ = s; + } + return s; + } + } + /** + * required string volume_name = 1; + * + *
+     * the volume name
+     * 
+ */ + public com.google.protobuf.ByteString + getVolumeNameBytes() { + java.lang.Object ref = volumeName_; + if (ref instanceof java.lang.String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + volumeName_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + // required string path = 2; public static final int PATH_FIELD_NUMBER = 2; - private boolean hasPath; - private java.lang.String path_ = ""; - public boolean hasPath() { return hasPath; } - public java.lang.String getPath() { return path_; } - + private java.lang.Object path_; + /** + * required string path = 2; + * + *
+     * the path to the symbolic link, relative to the volume root
+     * 
+ */ + public boolean hasPath() { + return ((bitField0_ & 0x00000002) == 0x00000002); + } + /** + * required string path = 2; + * + *
+     * the path to the symbolic link, relative to the volume root
+     * 
+ */ + public java.lang.String getPath() { + java.lang.Object ref = path_; + if (ref instanceof java.lang.String) { + return (java.lang.String) ref; + } else { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + if (bs.isValidUtf8()) { + path_ = s; + } + return s; + } + } + /** + * required string path = 2; + * + *
+     * the path to the symbolic link, relative to the volume root
+     * 
+ */ + public com.google.protobuf.ByteString + getPathBytes() { + java.lang.Object ref = path_; + if (ref instanceof java.lang.String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + path_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + private void initFields() { + volumeName_ = ""; + path_ = ""; } + private byte memoizedIsInitialized = -1; public final boolean isInitialized() { - if (!hasVolumeName) return false; - if (!hasPath) return false; + byte isInitialized = memoizedIsInitialized; + if (isInitialized != -1) return isInitialized == 1; + + if (!hasVolumeName()) { + memoizedIsInitialized = 0; + return false; + } + if (!hasPath()) { + memoizedIsInitialized = 0; + return false; + } + memoizedIsInitialized = 1; return true; } - + public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException { getSerializedSize(); - if (hasVolumeName()) { - output.writeString(1, getVolumeName()); + if (((bitField0_ & 0x00000001) == 0x00000001)) { + output.writeBytes(1, getVolumeNameBytes()); } - if (hasPath()) { - output.writeString(2, getPath()); + if (((bitField0_ & 0x00000002) == 0x00000002)) { + output.writeBytes(2, getPathBytes()); } getUnknownFields().writeTo(output); } - + private int memoizedSerializedSize = -1; public int getSerializedSize() { int size = memoizedSerializedSize; if (size != -1) return size; - + size = 0; - if (hasVolumeName()) { + if (((bitField0_ & 0x00000001) == 0x00000001)) { size += com.google.protobuf.CodedOutputStream - .computeStringSize(1, getVolumeName()); + .computeBytesSize(1, getVolumeNameBytes()); } - if (hasPath()) { + if (((bitField0_ & 0x00000002) == 0x00000002)) { size += com.google.protobuf.CodedOutputStream - .computeStringSize(2, getPath()); + .computeBytesSize(2, getPathBytes()); } size += getUnknownFields().getSerializedSize(); memoizedSerializedSize = size; return size; } - + + private static final long serialVersionUID = 0L; + @java.lang.Override + protected java.lang.Object writeReplace() + throws java.io.ObjectStreamException { + return super.writeReplace(); + } + public static org.xtreemfs.pbrpc.generatedinterfaces.MRC.readlinkRequest parseFrom( com.google.protobuf.ByteString data) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data).buildParsed(); + return PARSER.parseFrom(data); } public static org.xtreemfs.pbrpc.generatedinterfaces.MRC.readlinkRequest parseFrom( com.google.protobuf.ByteString data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(data, extensionRegistry); } public static org.xtreemfs.pbrpc.generatedinterfaces.MRC.readlinkRequest parseFrom(byte[] data) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data).buildParsed(); + return PARSER.parseFrom(data); } public static org.xtreemfs.pbrpc.generatedinterfaces.MRC.readlinkRequest parseFrom( byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(data, extensionRegistry); } public static org.xtreemfs.pbrpc.generatedinterfaces.MRC.readlinkRequest parseFrom(java.io.InputStream input) throws java.io.IOException { - return newBuilder().mergeFrom(input).buildParsed(); + return PARSER.parseFrom(input); } public static org.xtreemfs.pbrpc.generatedinterfaces.MRC.readlinkRequest parseFrom( java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - return newBuilder().mergeFrom(input, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(input, extensionRegistry); } public static org.xtreemfs.pbrpc.generatedinterfaces.MRC.readlinkRequest parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException { - Builder builder = newBuilder(); - if (builder.mergeDelimitedFrom(input)) { - return builder.buildParsed(); - } else { - return null; - } + return PARSER.parseDelimitedFrom(input); } public static org.xtreemfs.pbrpc.generatedinterfaces.MRC.readlinkRequest parseDelimitedFrom( java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - Builder builder = newBuilder(); - if (builder.mergeDelimitedFrom(input, extensionRegistry)) { - return builder.buildParsed(); - } else { - return null; - } + return PARSER.parseDelimitedFrom(input, extensionRegistry); } public static org.xtreemfs.pbrpc.generatedinterfaces.MRC.readlinkRequest parseFrom( com.google.protobuf.CodedInputStream input) throws java.io.IOException { - return newBuilder().mergeFrom(input).buildParsed(); + return PARSER.parseFrom(input); } public static org.xtreemfs.pbrpc.generatedinterfaces.MRC.readlinkRequest parseFrom( com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - return newBuilder().mergeFrom(input, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(input, extensionRegistry); } - + public static Builder newBuilder() { return Builder.create(); } public Builder newBuilderForType() { return newBuilder(); } public static Builder newBuilder(org.xtreemfs.pbrpc.generatedinterfaces.MRC.readlinkRequest prototype) { return newBuilder().mergeFrom(prototype); } public Builder toBuilder() { return newBuilder(this); } - + + @java.lang.Override + protected Builder newBuilderForType( + com.google.protobuf.GeneratedMessage.BuilderParent parent) { + Builder builder = new Builder(parent); + return builder; + } + /** + * Protobuf type {@code xtreemfs.pbrpc.readlinkRequest} + * + *
+     * requests the target path of a symbolic link
+     * 
+ */ public static final class Builder extends - com.google.protobuf.GeneratedMessage.Builder { - private org.xtreemfs.pbrpc.generatedinterfaces.MRC.readlinkRequest result; - + com.google.protobuf.GeneratedMessage.Builder + implements org.xtreemfs.pbrpc.generatedinterfaces.MRC.readlinkRequestOrBuilder { + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return org.xtreemfs.pbrpc.generatedinterfaces.MRC.internal_static_xtreemfs_pbrpc_readlinkRequest_descriptor; + } + + protected com.google.protobuf.GeneratedMessage.FieldAccessorTable + internalGetFieldAccessorTable() { + return org.xtreemfs.pbrpc.generatedinterfaces.MRC.internal_static_xtreemfs_pbrpc_readlinkRequest_fieldAccessorTable + .ensureFieldAccessorsInitialized( + org.xtreemfs.pbrpc.generatedinterfaces.MRC.readlinkRequest.class, org.xtreemfs.pbrpc.generatedinterfaces.MRC.readlinkRequest.Builder.class); + } + // Construct using org.xtreemfs.pbrpc.generatedinterfaces.MRC.readlinkRequest.newBuilder() - private Builder() {} - - private static Builder create() { - Builder builder = new Builder(); - builder.result = new org.xtreemfs.pbrpc.generatedinterfaces.MRC.readlinkRequest(); - return builder; + private Builder() { + maybeForceBuilderInitialization(); } - - protected org.xtreemfs.pbrpc.generatedinterfaces.MRC.readlinkRequest internalGetResult() { - return result; + + private Builder( + com.google.protobuf.GeneratedMessage.BuilderParent parent) { + super(parent); + maybeForceBuilderInitialization(); } - - public Builder clear() { - if (result == null) { - throw new IllegalStateException( - "Cannot call clear() after build()."); + private void maybeForceBuilderInitialization() { + if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) { } - result = new org.xtreemfs.pbrpc.generatedinterfaces.MRC.readlinkRequest(); + } + private static Builder create() { + return new Builder(); + } + + public Builder clear() { + super.clear(); + volumeName_ = ""; + bitField0_ = (bitField0_ & ~0x00000001); + path_ = ""; + bitField0_ = (bitField0_ & ~0x00000002); return this; } - + public Builder clone() { - return create().mergeFrom(result); + return create().mergeFrom(buildPartial()); } - + public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() { - return org.xtreemfs.pbrpc.generatedinterfaces.MRC.readlinkRequest.getDescriptor(); + return org.xtreemfs.pbrpc.generatedinterfaces.MRC.internal_static_xtreemfs_pbrpc_readlinkRequest_descriptor; } - + public org.xtreemfs.pbrpc.generatedinterfaces.MRC.readlinkRequest getDefaultInstanceForType() { return org.xtreemfs.pbrpc.generatedinterfaces.MRC.readlinkRequest.getDefaultInstance(); } - - public boolean isInitialized() { - return result.isInitialized(); - } + public org.xtreemfs.pbrpc.generatedinterfaces.MRC.readlinkRequest build() { - if (result != null && !isInitialized()) { + org.xtreemfs.pbrpc.generatedinterfaces.MRC.readlinkRequest result = buildPartial(); + if (!result.isInitialized()) { throw newUninitializedMessageException(result); } - return buildPartial(); - } - - private org.xtreemfs.pbrpc.generatedinterfaces.MRC.readlinkRequest buildParsed() - throws com.google.protobuf.InvalidProtocolBufferException { - if (!isInitialized()) { - throw newUninitializedMessageException( - result).asInvalidProtocolBufferException(); - } - return buildPartial(); + return result; } - + public org.xtreemfs.pbrpc.generatedinterfaces.MRC.readlinkRequest buildPartial() { - if (result == null) { - throw new IllegalStateException( - "build() has already been called on this Builder."); - } - org.xtreemfs.pbrpc.generatedinterfaces.MRC.readlinkRequest returnMe = result; - result = null; - return returnMe; + org.xtreemfs.pbrpc.generatedinterfaces.MRC.readlinkRequest result = new org.xtreemfs.pbrpc.generatedinterfaces.MRC.readlinkRequest(this); + int from_bitField0_ = bitField0_; + int to_bitField0_ = 0; + if (((from_bitField0_ & 0x00000001) == 0x00000001)) { + to_bitField0_ |= 0x00000001; + } + result.volumeName_ = volumeName_; + if (((from_bitField0_ & 0x00000002) == 0x00000002)) { + to_bitField0_ |= 0x00000002; + } + result.path_ = path_; + result.bitField0_ = to_bitField0_; + onBuilt(); + return result; } - + public Builder mergeFrom(com.google.protobuf.Message other) { if (other instanceof org.xtreemfs.pbrpc.generatedinterfaces.MRC.readlinkRequest) { return mergeFrom((org.xtreemfs.pbrpc.generatedinterfaces.MRC.readlinkRequest)other); @@ -8747,172 +21436,451 @@ public final class MRC { return this; } } - + public Builder mergeFrom(org.xtreemfs.pbrpc.generatedinterfaces.MRC.readlinkRequest other) { if (other == org.xtreemfs.pbrpc.generatedinterfaces.MRC.readlinkRequest.getDefaultInstance()) return this; if (other.hasVolumeName()) { - setVolumeName(other.getVolumeName()); + bitField0_ |= 0x00000001; + volumeName_ = other.volumeName_; + onChanged(); } if (other.hasPath()) { - setPath(other.getPath()); + bitField0_ |= 0x00000002; + path_ = other.path_; + onChanged(); } this.mergeUnknownFields(other.getUnknownFields()); return this; } - + + public final boolean isInitialized() { + if (!hasVolumeName()) { + + return false; + } + if (!hasPath()) { + + return false; + } + return true; + } + public Builder mergeFrom( com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - com.google.protobuf.UnknownFieldSet.Builder unknownFields = - com.google.protobuf.UnknownFieldSet.newBuilder( - this.getUnknownFields()); - while (true) { - int tag = input.readTag(); - switch (tag) { - case 0: - this.setUnknownFields(unknownFields.build()); - return this; - default: { - if (!parseUnknownField(input, unknownFields, - extensionRegistry, tag)) { - this.setUnknownFields(unknownFields.build()); - return this; - } - break; - } - case 10: { - setVolumeName(input.readString()); - break; - } - case 18: { - setPath(input.readString()); - break; - } + org.xtreemfs.pbrpc.generatedinterfaces.MRC.readlinkRequest parsedMessage = null; + try { + parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + parsedMessage = (org.xtreemfs.pbrpc.generatedinterfaces.MRC.readlinkRequest) e.getUnfinishedMessage(); + throw e; + } finally { + if (parsedMessage != null) { + mergeFrom(parsedMessage); } } + return this; } - - + private int bitField0_; + // required string volume_name = 1; + private java.lang.Object volumeName_ = ""; + /** + * required string volume_name = 1; + * + *
+       * the volume name
+       * 
+ */ public boolean hasVolumeName() { - return result.hasVolumeName(); - } + return ((bitField0_ & 0x00000001) == 0x00000001); + } + /** + * required string volume_name = 1; + * + *
+       * the volume name
+       * 
+ */ public java.lang.String getVolumeName() { - return result.getVolumeName(); - } - public Builder setVolumeName(java.lang.String value) { + java.lang.Object ref = volumeName_; + if (!(ref instanceof java.lang.String)) { + java.lang.String s = ((com.google.protobuf.ByteString) ref) + .toStringUtf8(); + volumeName_ = s; + return s; + } else { + return (java.lang.String) ref; + } + } + /** + * required string volume_name = 1; + * + *
+       * the volume name
+       * 
+ */ + public com.google.protobuf.ByteString + getVolumeNameBytes() { + java.lang.Object ref = volumeName_; + if (ref instanceof String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + volumeName_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + /** + * required string volume_name = 1; + * + *
+       * the volume name
+       * 
+ */ + public Builder setVolumeName( + java.lang.String value) { if (value == null) { throw new NullPointerException(); } - result.hasVolumeName = true; - result.volumeName_ = value; - return this; - } + bitField0_ |= 0x00000001; + volumeName_ = value; + onChanged(); + return this; + } + /** + * required string volume_name = 1; + * + *
+       * the volume name
+       * 
+ */ public Builder clearVolumeName() { - result.hasVolumeName = false; - result.volumeName_ = getDefaultInstance().getVolumeName(); + bitField0_ = (bitField0_ & ~0x00000001); + volumeName_ = getDefaultInstance().getVolumeName(); + onChanged(); + return this; + } + /** + * required string volume_name = 1; + * + *
+       * the volume name
+       * 
+ */ + public Builder setVolumeNameBytes( + com.google.protobuf.ByteString value) { + if (value == null) { + throw new NullPointerException(); + } + bitField0_ |= 0x00000001; + volumeName_ = value; + onChanged(); return this; } - + // required string path = 2; + private java.lang.Object path_ = ""; + /** + * required string path = 2; + * + *
+       * the path to the symbolic link, relative to the volume root
+       * 
+ */ public boolean hasPath() { - return result.hasPath(); - } + return ((bitField0_ & 0x00000002) == 0x00000002); + } + /** + * required string path = 2; + * + *
+       * the path to the symbolic link, relative to the volume root
+       * 
+ */ public java.lang.String getPath() { - return result.getPath(); - } - public Builder setPath(java.lang.String value) { + java.lang.Object ref = path_; + if (!(ref instanceof java.lang.String)) { + java.lang.String s = ((com.google.protobuf.ByteString) ref) + .toStringUtf8(); + path_ = s; + return s; + } else { + return (java.lang.String) ref; + } + } + /** + * required string path = 2; + * + *
+       * the path to the symbolic link, relative to the volume root
+       * 
+ */ + public com.google.protobuf.ByteString + getPathBytes() { + java.lang.Object ref = path_; + if (ref instanceof String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + path_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + /** + * required string path = 2; + * + *
+       * the path to the symbolic link, relative to the volume root
+       * 
+ */ + public Builder setPath( + java.lang.String value) { if (value == null) { throw new NullPointerException(); } - result.hasPath = true; - result.path_ = value; - return this; - } + bitField0_ |= 0x00000002; + path_ = value; + onChanged(); + return this; + } + /** + * required string path = 2; + * + *
+       * the path to the symbolic link, relative to the volume root
+       * 
+ */ public Builder clearPath() { - result.hasPath = false; - result.path_ = getDefaultInstance().getPath(); + bitField0_ = (bitField0_ & ~0x00000002); + path_ = getDefaultInstance().getPath(); + onChanged(); + return this; + } + /** + * required string path = 2; + * + *
+       * the path to the symbolic link, relative to the volume root
+       * 
+ */ + public Builder setPathBytes( + com.google.protobuf.ByteString value) { + if (value == null) { + throw new NullPointerException(); + } + bitField0_ |= 0x00000002; + path_ = value; + onChanged(); return this; } - + // @@protoc_insertion_point(builder_scope:xtreemfs.pbrpc.readlinkRequest) } - + static { defaultInstance = new readlinkRequest(true); - org.xtreemfs.pbrpc.generatedinterfaces.MRC.internalForceInit(); defaultInstance.initFields(); } - + // @@protoc_insertion_point(class_scope:xtreemfs.pbrpc.readlinkRequest) } - + + public interface readlinkResponseOrBuilder + extends com.google.protobuf.MessageOrBuilder { + + // repeated string link_target_path = 1; + /** + * repeated string link_target_path = 1; + */ + java.util.List + getLinkTargetPathList(); + /** + * repeated string link_target_path = 1; + */ + int getLinkTargetPathCount(); + /** + * repeated string link_target_path = 1; + */ + java.lang.String getLinkTargetPath(int index); + /** + * repeated string link_target_path = 1; + */ + com.google.protobuf.ByteString + getLinkTargetPathBytes(int index); + } + /** + * Protobuf type {@code xtreemfs.pbrpc.readlinkResponse} + * + *
+   * returns the target path of a symbolic link
+   * 
+ */ public static final class readlinkResponse extends - com.google.protobuf.GeneratedMessage { + com.google.protobuf.GeneratedMessage + implements readlinkResponseOrBuilder { // Use readlinkResponse.newBuilder() to construct. - private readlinkResponse() { - initFields(); + private readlinkResponse(com.google.protobuf.GeneratedMessage.Builder builder) { + super(builder); + this.unknownFields = builder.getUnknownFields(); } - private readlinkResponse(boolean noInit) {} - + private readlinkResponse(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); } + private static final readlinkResponse defaultInstance; public static readlinkResponse getDefaultInstance() { return defaultInstance; } - + public readlinkResponse getDefaultInstanceForType() { return defaultInstance; } - + + private final com.google.protobuf.UnknownFieldSet unknownFields; + @java.lang.Override + public final com.google.protobuf.UnknownFieldSet + getUnknownFields() { + return this.unknownFields; + } + private readlinkResponse( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + initFields(); + int mutable_bitField0_ = 0; + com.google.protobuf.UnknownFieldSet.Builder unknownFields = + com.google.protobuf.UnknownFieldSet.newBuilder(); + try { + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch (tag) { + case 0: + done = true; + break; + default: { + if (!parseUnknownField(input, unknownFields, + extensionRegistry, tag)) { + done = true; + } + break; + } + case 10: { + if (!((mutable_bitField0_ & 0x00000001) == 0x00000001)) { + linkTargetPath_ = new com.google.protobuf.LazyStringArrayList(); + mutable_bitField0_ |= 0x00000001; + } + linkTargetPath_.add(input.readBytes()); + break; + } + } + } + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(this); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException( + e.getMessage()).setUnfinishedMessage(this); + } finally { + if (((mutable_bitField0_ & 0x00000001) == 0x00000001)) { + linkTargetPath_ = new com.google.protobuf.UnmodifiableLazyStringList(linkTargetPath_); + } + this.unknownFields = unknownFields.build(); + makeExtensionsImmutable(); + } + } public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { return org.xtreemfs.pbrpc.generatedinterfaces.MRC.internal_static_xtreemfs_pbrpc_readlinkResponse_descriptor; } - + protected com.google.protobuf.GeneratedMessage.FieldAccessorTable internalGetFieldAccessorTable() { - return org.xtreemfs.pbrpc.generatedinterfaces.MRC.internal_static_xtreemfs_pbrpc_readlinkResponse_fieldAccessorTable; + return org.xtreemfs.pbrpc.generatedinterfaces.MRC.internal_static_xtreemfs_pbrpc_readlinkResponse_fieldAccessorTable + .ensureFieldAccessorsInitialized( + org.xtreemfs.pbrpc.generatedinterfaces.MRC.readlinkResponse.class, org.xtreemfs.pbrpc.generatedinterfaces.MRC.readlinkResponse.Builder.class); + } + + public static com.google.protobuf.Parser PARSER = + new com.google.protobuf.AbstractParser() { + public readlinkResponse parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return new readlinkResponse(input, extensionRegistry); + } + }; + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; } - + // repeated string link_target_path = 1; public static final int LINK_TARGET_PATH_FIELD_NUMBER = 1; - private java.util.List linkTargetPath_ = - java.util.Collections.emptyList(); - public java.util.List getLinkTargetPathList() { + private com.google.protobuf.LazyStringList linkTargetPath_; + /** + * repeated string link_target_path = 1; + */ + public java.util.List + getLinkTargetPathList() { return linkTargetPath_; } - public int getLinkTargetPathCount() { return linkTargetPath_.size(); } + /** + * repeated string link_target_path = 1; + */ + public int getLinkTargetPathCount() { + return linkTargetPath_.size(); + } + /** + * repeated string link_target_path = 1; + */ public java.lang.String getLinkTargetPath(int index) { return linkTargetPath_.get(index); } - + /** + * repeated string link_target_path = 1; + */ + public com.google.protobuf.ByteString + getLinkTargetPathBytes(int index) { + return linkTargetPath_.getByteString(index); + } + private void initFields() { + linkTargetPath_ = com.google.protobuf.LazyStringArrayList.EMPTY; } + private byte memoizedIsInitialized = -1; public final boolean isInitialized() { + byte isInitialized = memoizedIsInitialized; + if (isInitialized != -1) return isInitialized == 1; + + memoizedIsInitialized = 1; return true; } - + public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException { getSerializedSize(); - for (java.lang.String element : getLinkTargetPathList()) { - output.writeString(1, element); + for (int i = 0; i < linkTargetPath_.size(); i++) { + output.writeBytes(1, linkTargetPath_.getByteString(i)); } getUnknownFields().writeTo(output); } - + private int memoizedSerializedSize = -1; public int getSerializedSize() { int size = memoizedSerializedSize; if (size != -1) return size; - + size = 0; { int dataSize = 0; - for (java.lang.String element : getLinkTargetPathList()) { + for (int i = 0; i < linkTargetPath_.size(); i++) { dataSize += com.google.protobuf.CodedOutputStream - .computeStringSizeNoTag(element); + .computeBytesSizeNoTag(linkTargetPath_.getByteString(i)); } size += dataSize; size += 1 * getLinkTargetPathList().size(); @@ -8921,153 +21889,161 @@ public final class MRC { memoizedSerializedSize = size; return size; } - + + private static final long serialVersionUID = 0L; + @java.lang.Override + protected java.lang.Object writeReplace() + throws java.io.ObjectStreamException { + return super.writeReplace(); + } + public static org.xtreemfs.pbrpc.generatedinterfaces.MRC.readlinkResponse parseFrom( com.google.protobuf.ByteString data) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data).buildParsed(); + return PARSER.parseFrom(data); } public static org.xtreemfs.pbrpc.generatedinterfaces.MRC.readlinkResponse parseFrom( com.google.protobuf.ByteString data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(data, extensionRegistry); } public static org.xtreemfs.pbrpc.generatedinterfaces.MRC.readlinkResponse parseFrom(byte[] data) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data).buildParsed(); + return PARSER.parseFrom(data); } public static org.xtreemfs.pbrpc.generatedinterfaces.MRC.readlinkResponse parseFrom( byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(data, extensionRegistry); } public static org.xtreemfs.pbrpc.generatedinterfaces.MRC.readlinkResponse parseFrom(java.io.InputStream input) throws java.io.IOException { - return newBuilder().mergeFrom(input).buildParsed(); + return PARSER.parseFrom(input); } public static org.xtreemfs.pbrpc.generatedinterfaces.MRC.readlinkResponse parseFrom( java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - return newBuilder().mergeFrom(input, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(input, extensionRegistry); } public static org.xtreemfs.pbrpc.generatedinterfaces.MRC.readlinkResponse parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException { - Builder builder = newBuilder(); - if (builder.mergeDelimitedFrom(input)) { - return builder.buildParsed(); - } else { - return null; - } + return PARSER.parseDelimitedFrom(input); } public static org.xtreemfs.pbrpc.generatedinterfaces.MRC.readlinkResponse parseDelimitedFrom( java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - Builder builder = newBuilder(); - if (builder.mergeDelimitedFrom(input, extensionRegistry)) { - return builder.buildParsed(); - } else { - return null; - } + return PARSER.parseDelimitedFrom(input, extensionRegistry); } public static org.xtreemfs.pbrpc.generatedinterfaces.MRC.readlinkResponse parseFrom( com.google.protobuf.CodedInputStream input) throws java.io.IOException { - return newBuilder().mergeFrom(input).buildParsed(); + return PARSER.parseFrom(input); } public static org.xtreemfs.pbrpc.generatedinterfaces.MRC.readlinkResponse parseFrom( com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - return newBuilder().mergeFrom(input, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(input, extensionRegistry); } - + public static Builder newBuilder() { return Builder.create(); } public Builder newBuilderForType() { return newBuilder(); } public static Builder newBuilder(org.xtreemfs.pbrpc.generatedinterfaces.MRC.readlinkResponse prototype) { return newBuilder().mergeFrom(prototype); } public Builder toBuilder() { return newBuilder(this); } - + + @java.lang.Override + protected Builder newBuilderForType( + com.google.protobuf.GeneratedMessage.BuilderParent parent) { + Builder builder = new Builder(parent); + return builder; + } + /** + * Protobuf type {@code xtreemfs.pbrpc.readlinkResponse} + * + *
+     * returns the target path of a symbolic link
+     * 
+ */ public static final class Builder extends - com.google.protobuf.GeneratedMessage.Builder { - private org.xtreemfs.pbrpc.generatedinterfaces.MRC.readlinkResponse result; - + com.google.protobuf.GeneratedMessage.Builder + implements org.xtreemfs.pbrpc.generatedinterfaces.MRC.readlinkResponseOrBuilder { + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return org.xtreemfs.pbrpc.generatedinterfaces.MRC.internal_static_xtreemfs_pbrpc_readlinkResponse_descriptor; + } + + protected com.google.protobuf.GeneratedMessage.FieldAccessorTable + internalGetFieldAccessorTable() { + return org.xtreemfs.pbrpc.generatedinterfaces.MRC.internal_static_xtreemfs_pbrpc_readlinkResponse_fieldAccessorTable + .ensureFieldAccessorsInitialized( + org.xtreemfs.pbrpc.generatedinterfaces.MRC.readlinkResponse.class, org.xtreemfs.pbrpc.generatedinterfaces.MRC.readlinkResponse.Builder.class); + } + // Construct using org.xtreemfs.pbrpc.generatedinterfaces.MRC.readlinkResponse.newBuilder() - private Builder() {} - - private static Builder create() { - Builder builder = new Builder(); - builder.result = new org.xtreemfs.pbrpc.generatedinterfaces.MRC.readlinkResponse(); - return builder; + private Builder() { + maybeForceBuilderInitialization(); } - - protected org.xtreemfs.pbrpc.generatedinterfaces.MRC.readlinkResponse internalGetResult() { - return result; + + private Builder( + com.google.protobuf.GeneratedMessage.BuilderParent parent) { + super(parent); + maybeForceBuilderInitialization(); } - - public Builder clear() { - if (result == null) { - throw new IllegalStateException( - "Cannot call clear() after build()."); + private void maybeForceBuilderInitialization() { + if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) { } - result = new org.xtreemfs.pbrpc.generatedinterfaces.MRC.readlinkResponse(); + } + private static Builder create() { + return new Builder(); + } + + public Builder clear() { + super.clear(); + linkTargetPath_ = com.google.protobuf.LazyStringArrayList.EMPTY; + bitField0_ = (bitField0_ & ~0x00000001); return this; } - + public Builder clone() { - return create().mergeFrom(result); + return create().mergeFrom(buildPartial()); } - + public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() { - return org.xtreemfs.pbrpc.generatedinterfaces.MRC.readlinkResponse.getDescriptor(); + return org.xtreemfs.pbrpc.generatedinterfaces.MRC.internal_static_xtreemfs_pbrpc_readlinkResponse_descriptor; } - + public org.xtreemfs.pbrpc.generatedinterfaces.MRC.readlinkResponse getDefaultInstanceForType() { return org.xtreemfs.pbrpc.generatedinterfaces.MRC.readlinkResponse.getDefaultInstance(); } - - public boolean isInitialized() { - return result.isInitialized(); - } + public org.xtreemfs.pbrpc.generatedinterfaces.MRC.readlinkResponse build() { - if (result != null && !isInitialized()) { + org.xtreemfs.pbrpc.generatedinterfaces.MRC.readlinkResponse result = buildPartial(); + if (!result.isInitialized()) { throw newUninitializedMessageException(result); } - return buildPartial(); - } - - private org.xtreemfs.pbrpc.generatedinterfaces.MRC.readlinkResponse buildParsed() - throws com.google.protobuf.InvalidProtocolBufferException { - if (!isInitialized()) { - throw newUninitializedMessageException( - result).asInvalidProtocolBufferException(); - } - return buildPartial(); + return result; } - + public org.xtreemfs.pbrpc.generatedinterfaces.MRC.readlinkResponse buildPartial() { - if (result == null) { - throw new IllegalStateException( - "build() has already been called on this Builder."); - } - if (result.linkTargetPath_ != java.util.Collections.EMPTY_LIST) { - result.linkTargetPath_ = - java.util.Collections.unmodifiableList(result.linkTargetPath_); - } - org.xtreemfs.pbrpc.generatedinterfaces.MRC.readlinkResponse returnMe = result; - result = null; - return returnMe; + org.xtreemfs.pbrpc.generatedinterfaces.MRC.readlinkResponse result = new org.xtreemfs.pbrpc.generatedinterfaces.MRC.readlinkResponse(this); + int from_bitField0_ = bitField0_; + if (((bitField0_ & 0x00000001) == 0x00000001)) { + linkTargetPath_ = new com.google.protobuf.UnmodifiableLazyStringList( + linkTargetPath_); + bitField0_ = (bitField0_ & ~0x00000001); + } + result.linkTargetPath_ = linkTargetPath_; + onBuilt(); + return result; } - + public Builder mergeFrom(com.google.protobuf.Message other) { if (other instanceof org.xtreemfs.pbrpc.generatedinterfaces.MRC.readlinkResponse) { return mergeFrom((org.xtreemfs.pbrpc.generatedinterfaces.MRC.readlinkResponse)other); @@ -9076,338 +22052,739 @@ public final class MRC { return this; } } - + public Builder mergeFrom(org.xtreemfs.pbrpc.generatedinterfaces.MRC.readlinkResponse other) { if (other == org.xtreemfs.pbrpc.generatedinterfaces.MRC.readlinkResponse.getDefaultInstance()) return this; if (!other.linkTargetPath_.isEmpty()) { - if (result.linkTargetPath_.isEmpty()) { - result.linkTargetPath_ = new java.util.ArrayList(); + if (linkTargetPath_.isEmpty()) { + linkTargetPath_ = other.linkTargetPath_; + bitField0_ = (bitField0_ & ~0x00000001); + } else { + ensureLinkTargetPathIsMutable(); + linkTargetPath_.addAll(other.linkTargetPath_); } - result.linkTargetPath_.addAll(other.linkTargetPath_); + onChanged(); } this.mergeUnknownFields(other.getUnknownFields()); return this; } - + + public final boolean isInitialized() { + return true; + } + public Builder mergeFrom( com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - com.google.protobuf.UnknownFieldSet.Builder unknownFields = - com.google.protobuf.UnknownFieldSet.newBuilder( - this.getUnknownFields()); - while (true) { - int tag = input.readTag(); - switch (tag) { - case 0: - this.setUnknownFields(unknownFields.build()); - return this; - default: { - if (!parseUnknownField(input, unknownFields, - extensionRegistry, tag)) { - this.setUnknownFields(unknownFields.build()); - return this; - } - break; - } - case 10: { - addLinkTargetPath(input.readString()); - break; - } + org.xtreemfs.pbrpc.generatedinterfaces.MRC.readlinkResponse parsedMessage = null; + try { + parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + parsedMessage = (org.xtreemfs.pbrpc.generatedinterfaces.MRC.readlinkResponse) e.getUnfinishedMessage(); + throw e; + } finally { + if (parsedMessage != null) { + mergeFrom(parsedMessage); } } + return this; } - - + private int bitField0_; + // repeated string link_target_path = 1; - public java.util.List getLinkTargetPathList() { - return java.util.Collections.unmodifiableList(result.linkTargetPath_); - } + private com.google.protobuf.LazyStringList linkTargetPath_ = com.google.protobuf.LazyStringArrayList.EMPTY; + private void ensureLinkTargetPathIsMutable() { + if (!((bitField0_ & 0x00000001) == 0x00000001)) { + linkTargetPath_ = new com.google.protobuf.LazyStringArrayList(linkTargetPath_); + bitField0_ |= 0x00000001; + } + } + /** + * repeated string link_target_path = 1; + */ + public java.util.List + getLinkTargetPathList() { + return java.util.Collections.unmodifiableList(linkTargetPath_); + } + /** + * repeated string link_target_path = 1; + */ public int getLinkTargetPathCount() { - return result.getLinkTargetPathCount(); + return linkTargetPath_.size(); } + /** + * repeated string link_target_path = 1; + */ public java.lang.String getLinkTargetPath(int index) { - return result.getLinkTargetPath(index); - } - public Builder setLinkTargetPath(int index, java.lang.String value) { + return linkTargetPath_.get(index); + } + /** + * repeated string link_target_path = 1; + */ + public com.google.protobuf.ByteString + getLinkTargetPathBytes(int index) { + return linkTargetPath_.getByteString(index); + } + /** + * repeated string link_target_path = 1; + */ + public Builder setLinkTargetPath( + int index, java.lang.String value) { if (value == null) { throw new NullPointerException(); } - result.linkTargetPath_.set(index, value); + ensureLinkTargetPathIsMutable(); + linkTargetPath_.set(index, value); + onChanged(); return this; } - public Builder addLinkTargetPath(java.lang.String value) { + /** + * repeated string link_target_path = 1; + */ + public Builder addLinkTargetPath( + java.lang.String value) { if (value == null) { throw new NullPointerException(); } - if (result.linkTargetPath_.isEmpty()) { - result.linkTargetPath_ = new java.util.ArrayList(); - } - result.linkTargetPath_.add(value); + ensureLinkTargetPathIsMutable(); + linkTargetPath_.add(value); + onChanged(); return this; } + /** + * repeated string link_target_path = 1; + */ public Builder addAllLinkTargetPath( - java.lang.Iterable values) { - if (result.linkTargetPath_.isEmpty()) { - result.linkTargetPath_ = new java.util.ArrayList(); - } - super.addAll(values, result.linkTargetPath_); + java.lang.Iterable values) { + ensureLinkTargetPathIsMutable(); + super.addAll(values, linkTargetPath_); + onChanged(); return this; } + /** + * repeated string link_target_path = 1; + */ public Builder clearLinkTargetPath() { - result.linkTargetPath_ = java.util.Collections.emptyList(); + linkTargetPath_ = com.google.protobuf.LazyStringArrayList.EMPTY; + bitField0_ = (bitField0_ & ~0x00000001); + onChanged(); + return this; + } + /** + * repeated string link_target_path = 1; + */ + public Builder addLinkTargetPathBytes( + com.google.protobuf.ByteString value) { + if (value == null) { + throw new NullPointerException(); + } + ensureLinkTargetPathIsMutable(); + linkTargetPath_.add(value); + onChanged(); return this; } - + // @@protoc_insertion_point(builder_scope:xtreemfs.pbrpc.readlinkResponse) } - + static { defaultInstance = new readlinkResponse(true); - org.xtreemfs.pbrpc.generatedinterfaces.MRC.internalForceInit(); defaultInstance.initFields(); } - + // @@protoc_insertion_point(class_scope:xtreemfs.pbrpc.readlinkResponse) } - + + public interface removexattrRequestOrBuilder + extends com.google.protobuf.MessageOrBuilder { + + // required string volume_name = 1; + /** + * required string volume_name = 1; + * + *
+     * the volume name
+     * 
+ */ + boolean hasVolumeName(); + /** + * required string volume_name = 1; + * + *
+     * the volume name
+     * 
+ */ + java.lang.String getVolumeName(); + /** + * required string volume_name = 1; + * + *
+     * the volume name
+     * 
+ */ + com.google.protobuf.ByteString + getVolumeNameBytes(); + + // required string path = 2; + /** + * required string path = 2; + * + *
+     * the path to the file or directory, relative to the volume root
+     * 
+ */ + boolean hasPath(); + /** + * required string path = 2; + * + *
+     * the path to the file or directory, relative to the volume root
+     * 
+ */ + java.lang.String getPath(); + /** + * required string path = 2; + * + *
+     * the path to the file or directory, relative to the volume root
+     * 
+ */ + com.google.protobuf.ByteString + getPathBytes(); + + // required string name = 3; + /** + * required string name = 3; + * + *
+     * the name of the attribute to remove
+     * 
+ */ + boolean hasName(); + /** + * required string name = 3; + * + *
+     * the name of the attribute to remove
+     * 
+ */ + java.lang.String getName(); + /** + * required string name = 3; + * + *
+     * the name of the attribute to remove
+     * 
+ */ + com.google.protobuf.ByteString + getNameBytes(); + } + /** + * Protobuf type {@code xtreemfs.pbrpc.removexattrRequest} + * + *
+   * removes an extended attribute from a file or directory
+   * 
+ */ public static final class removexattrRequest extends - com.google.protobuf.GeneratedMessage { + com.google.protobuf.GeneratedMessage + implements removexattrRequestOrBuilder { // Use removexattrRequest.newBuilder() to construct. - private removexattrRequest() { - initFields(); + private removexattrRequest(com.google.protobuf.GeneratedMessage.Builder builder) { + super(builder); + this.unknownFields = builder.getUnknownFields(); } - private removexattrRequest(boolean noInit) {} - + private removexattrRequest(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); } + private static final removexattrRequest defaultInstance; public static removexattrRequest getDefaultInstance() { return defaultInstance; } - + public removexattrRequest getDefaultInstanceForType() { return defaultInstance; } - + + private final com.google.protobuf.UnknownFieldSet unknownFields; + @java.lang.Override + public final com.google.protobuf.UnknownFieldSet + getUnknownFields() { + return this.unknownFields; + } + private removexattrRequest( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + initFields(); + int mutable_bitField0_ = 0; + com.google.protobuf.UnknownFieldSet.Builder unknownFields = + com.google.protobuf.UnknownFieldSet.newBuilder(); + try { + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch (tag) { + case 0: + done = true; + break; + default: { + if (!parseUnknownField(input, unknownFields, + extensionRegistry, tag)) { + done = true; + } + break; + } + case 10: { + bitField0_ |= 0x00000001; + volumeName_ = input.readBytes(); + break; + } + case 18: { + bitField0_ |= 0x00000002; + path_ = input.readBytes(); + break; + } + case 26: { + bitField0_ |= 0x00000004; + name_ = input.readBytes(); + break; + } + } + } + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(this); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException( + e.getMessage()).setUnfinishedMessage(this); + } finally { + this.unknownFields = unknownFields.build(); + makeExtensionsImmutable(); + } + } public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { return org.xtreemfs.pbrpc.generatedinterfaces.MRC.internal_static_xtreemfs_pbrpc_removexattrRequest_descriptor; } - + protected com.google.protobuf.GeneratedMessage.FieldAccessorTable internalGetFieldAccessorTable() { - return org.xtreemfs.pbrpc.generatedinterfaces.MRC.internal_static_xtreemfs_pbrpc_removexattrRequest_fieldAccessorTable; + return org.xtreemfs.pbrpc.generatedinterfaces.MRC.internal_static_xtreemfs_pbrpc_removexattrRequest_fieldAccessorTable + .ensureFieldAccessorsInitialized( + org.xtreemfs.pbrpc.generatedinterfaces.MRC.removexattrRequest.class, org.xtreemfs.pbrpc.generatedinterfaces.MRC.removexattrRequest.Builder.class); + } + + public static com.google.protobuf.Parser PARSER = + new com.google.protobuf.AbstractParser() { + public removexattrRequest parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return new removexattrRequest(input, extensionRegistry); + } + }; + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; } - + + private int bitField0_; // required string volume_name = 1; public static final int VOLUME_NAME_FIELD_NUMBER = 1; - private boolean hasVolumeName; - private java.lang.String volumeName_ = ""; - public boolean hasVolumeName() { return hasVolumeName; } - public java.lang.String getVolumeName() { return volumeName_; } - + private java.lang.Object volumeName_; + /** + * required string volume_name = 1; + * + *
+     * the volume name
+     * 
+ */ + public boolean hasVolumeName() { + return ((bitField0_ & 0x00000001) == 0x00000001); + } + /** + * required string volume_name = 1; + * + *
+     * the volume name
+     * 
+ */ + public java.lang.String getVolumeName() { + java.lang.Object ref = volumeName_; + if (ref instanceof java.lang.String) { + return (java.lang.String) ref; + } else { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + if (bs.isValidUtf8()) { + volumeName_ = s; + } + return s; + } + } + /** + * required string volume_name = 1; + * + *
+     * the volume name
+     * 
+ */ + public com.google.protobuf.ByteString + getVolumeNameBytes() { + java.lang.Object ref = volumeName_; + if (ref instanceof java.lang.String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + volumeName_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + // required string path = 2; public static final int PATH_FIELD_NUMBER = 2; - private boolean hasPath; - private java.lang.String path_ = ""; - public boolean hasPath() { return hasPath; } - public java.lang.String getPath() { return path_; } - + private java.lang.Object path_; + /** + * required string path = 2; + * + *
+     * the path to the file or directory, relative to the volume root
+     * 
+ */ + public boolean hasPath() { + return ((bitField0_ & 0x00000002) == 0x00000002); + } + /** + * required string path = 2; + * + *
+     * the path to the file or directory, relative to the volume root
+     * 
+ */ + public java.lang.String getPath() { + java.lang.Object ref = path_; + if (ref instanceof java.lang.String) { + return (java.lang.String) ref; + } else { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + if (bs.isValidUtf8()) { + path_ = s; + } + return s; + } + } + /** + * required string path = 2; + * + *
+     * the path to the file or directory, relative to the volume root
+     * 
+ */ + public com.google.protobuf.ByteString + getPathBytes() { + java.lang.Object ref = path_; + if (ref instanceof java.lang.String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + path_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + // required string name = 3; public static final int NAME_FIELD_NUMBER = 3; - private boolean hasName; - private java.lang.String name_ = ""; - public boolean hasName() { return hasName; } - public java.lang.String getName() { return name_; } - + private java.lang.Object name_; + /** + * required string name = 3; + * + *
+     * the name of the attribute to remove
+     * 
+ */ + public boolean hasName() { + return ((bitField0_ & 0x00000004) == 0x00000004); + } + /** + * required string name = 3; + * + *
+     * the name of the attribute to remove
+     * 
+ */ + public java.lang.String getName() { + java.lang.Object ref = name_; + if (ref instanceof java.lang.String) { + return (java.lang.String) ref; + } else { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + if (bs.isValidUtf8()) { + name_ = s; + } + return s; + } + } + /** + * required string name = 3; + * + *
+     * the name of the attribute to remove
+     * 
+ */ + public com.google.protobuf.ByteString + getNameBytes() { + java.lang.Object ref = name_; + if (ref instanceof java.lang.String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + name_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + private void initFields() { + volumeName_ = ""; + path_ = ""; + name_ = ""; } + private byte memoizedIsInitialized = -1; public final boolean isInitialized() { - if (!hasVolumeName) return false; - if (!hasPath) return false; - if (!hasName) return false; + byte isInitialized = memoizedIsInitialized; + if (isInitialized != -1) return isInitialized == 1; + + if (!hasVolumeName()) { + memoizedIsInitialized = 0; + return false; + } + if (!hasPath()) { + memoizedIsInitialized = 0; + return false; + } + if (!hasName()) { + memoizedIsInitialized = 0; + return false; + } + memoizedIsInitialized = 1; return true; } - + public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException { getSerializedSize(); - if (hasVolumeName()) { - output.writeString(1, getVolumeName()); + if (((bitField0_ & 0x00000001) == 0x00000001)) { + output.writeBytes(1, getVolumeNameBytes()); } - if (hasPath()) { - output.writeString(2, getPath()); + if (((bitField0_ & 0x00000002) == 0x00000002)) { + output.writeBytes(2, getPathBytes()); } - if (hasName()) { - output.writeString(3, getName()); + if (((bitField0_ & 0x00000004) == 0x00000004)) { + output.writeBytes(3, getNameBytes()); } getUnknownFields().writeTo(output); } - + private int memoizedSerializedSize = -1; public int getSerializedSize() { int size = memoizedSerializedSize; if (size != -1) return size; - + size = 0; - if (hasVolumeName()) { + if (((bitField0_ & 0x00000001) == 0x00000001)) { size += com.google.protobuf.CodedOutputStream - .computeStringSize(1, getVolumeName()); + .computeBytesSize(1, getVolumeNameBytes()); } - if (hasPath()) { + if (((bitField0_ & 0x00000002) == 0x00000002)) { size += com.google.protobuf.CodedOutputStream - .computeStringSize(2, getPath()); + .computeBytesSize(2, getPathBytes()); } - if (hasName()) { + if (((bitField0_ & 0x00000004) == 0x00000004)) { size += com.google.protobuf.CodedOutputStream - .computeStringSize(3, getName()); + .computeBytesSize(3, getNameBytes()); } size += getUnknownFields().getSerializedSize(); memoizedSerializedSize = size; return size; } - + + private static final long serialVersionUID = 0L; + @java.lang.Override + protected java.lang.Object writeReplace() + throws java.io.ObjectStreamException { + return super.writeReplace(); + } + public static org.xtreemfs.pbrpc.generatedinterfaces.MRC.removexattrRequest parseFrom( com.google.protobuf.ByteString data) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data).buildParsed(); + return PARSER.parseFrom(data); } public static org.xtreemfs.pbrpc.generatedinterfaces.MRC.removexattrRequest parseFrom( com.google.protobuf.ByteString data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(data, extensionRegistry); } public static org.xtreemfs.pbrpc.generatedinterfaces.MRC.removexattrRequest parseFrom(byte[] data) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data).buildParsed(); + return PARSER.parseFrom(data); } public static org.xtreemfs.pbrpc.generatedinterfaces.MRC.removexattrRequest parseFrom( byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(data, extensionRegistry); } public static org.xtreemfs.pbrpc.generatedinterfaces.MRC.removexattrRequest parseFrom(java.io.InputStream input) throws java.io.IOException { - return newBuilder().mergeFrom(input).buildParsed(); + return PARSER.parseFrom(input); } public static org.xtreemfs.pbrpc.generatedinterfaces.MRC.removexattrRequest parseFrom( java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - return newBuilder().mergeFrom(input, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(input, extensionRegistry); } public static org.xtreemfs.pbrpc.generatedinterfaces.MRC.removexattrRequest parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException { - Builder builder = newBuilder(); - if (builder.mergeDelimitedFrom(input)) { - return builder.buildParsed(); - } else { - return null; - } + return PARSER.parseDelimitedFrom(input); } public static org.xtreemfs.pbrpc.generatedinterfaces.MRC.removexattrRequest parseDelimitedFrom( java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - Builder builder = newBuilder(); - if (builder.mergeDelimitedFrom(input, extensionRegistry)) { - return builder.buildParsed(); - } else { - return null; - } + return PARSER.parseDelimitedFrom(input, extensionRegistry); } public static org.xtreemfs.pbrpc.generatedinterfaces.MRC.removexattrRequest parseFrom( com.google.protobuf.CodedInputStream input) throws java.io.IOException { - return newBuilder().mergeFrom(input).buildParsed(); + return PARSER.parseFrom(input); } public static org.xtreemfs.pbrpc.generatedinterfaces.MRC.removexattrRequest parseFrom( com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - return newBuilder().mergeFrom(input, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(input, extensionRegistry); } - + public static Builder newBuilder() { return Builder.create(); } public Builder newBuilderForType() { return newBuilder(); } public static Builder newBuilder(org.xtreemfs.pbrpc.generatedinterfaces.MRC.removexattrRequest prototype) { return newBuilder().mergeFrom(prototype); } public Builder toBuilder() { return newBuilder(this); } - + + @java.lang.Override + protected Builder newBuilderForType( + com.google.protobuf.GeneratedMessage.BuilderParent parent) { + Builder builder = new Builder(parent); + return builder; + } + /** + * Protobuf type {@code xtreemfs.pbrpc.removexattrRequest} + * + *
+     * removes an extended attribute from a file or directory
+     * 
+ */ public static final class Builder extends - com.google.protobuf.GeneratedMessage.Builder { - private org.xtreemfs.pbrpc.generatedinterfaces.MRC.removexattrRequest result; - + com.google.protobuf.GeneratedMessage.Builder + implements org.xtreemfs.pbrpc.generatedinterfaces.MRC.removexattrRequestOrBuilder { + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return org.xtreemfs.pbrpc.generatedinterfaces.MRC.internal_static_xtreemfs_pbrpc_removexattrRequest_descriptor; + } + + protected com.google.protobuf.GeneratedMessage.FieldAccessorTable + internalGetFieldAccessorTable() { + return org.xtreemfs.pbrpc.generatedinterfaces.MRC.internal_static_xtreemfs_pbrpc_removexattrRequest_fieldAccessorTable + .ensureFieldAccessorsInitialized( + org.xtreemfs.pbrpc.generatedinterfaces.MRC.removexattrRequest.class, org.xtreemfs.pbrpc.generatedinterfaces.MRC.removexattrRequest.Builder.class); + } + // Construct using org.xtreemfs.pbrpc.generatedinterfaces.MRC.removexattrRequest.newBuilder() - private Builder() {} - - private static Builder create() { - Builder builder = new Builder(); - builder.result = new org.xtreemfs.pbrpc.generatedinterfaces.MRC.removexattrRequest(); - return builder; + private Builder() { + maybeForceBuilderInitialization(); } - - protected org.xtreemfs.pbrpc.generatedinterfaces.MRC.removexattrRequest internalGetResult() { - return result; + + private Builder( + com.google.protobuf.GeneratedMessage.BuilderParent parent) { + super(parent); + maybeForceBuilderInitialization(); } - - public Builder clear() { - if (result == null) { - throw new IllegalStateException( - "Cannot call clear() after build()."); + private void maybeForceBuilderInitialization() { + if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) { } - result = new org.xtreemfs.pbrpc.generatedinterfaces.MRC.removexattrRequest(); + } + private static Builder create() { + return new Builder(); + } + + public Builder clear() { + super.clear(); + volumeName_ = ""; + bitField0_ = (bitField0_ & ~0x00000001); + path_ = ""; + bitField0_ = (bitField0_ & ~0x00000002); + name_ = ""; + bitField0_ = (bitField0_ & ~0x00000004); return this; } - + public Builder clone() { - return create().mergeFrom(result); + return create().mergeFrom(buildPartial()); } - + public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() { - return org.xtreemfs.pbrpc.generatedinterfaces.MRC.removexattrRequest.getDescriptor(); + return org.xtreemfs.pbrpc.generatedinterfaces.MRC.internal_static_xtreemfs_pbrpc_removexattrRequest_descriptor; } - + public org.xtreemfs.pbrpc.generatedinterfaces.MRC.removexattrRequest getDefaultInstanceForType() { return org.xtreemfs.pbrpc.generatedinterfaces.MRC.removexattrRequest.getDefaultInstance(); } - - public boolean isInitialized() { - return result.isInitialized(); - } + public org.xtreemfs.pbrpc.generatedinterfaces.MRC.removexattrRequest build() { - if (result != null && !isInitialized()) { + org.xtreemfs.pbrpc.generatedinterfaces.MRC.removexattrRequest result = buildPartial(); + if (!result.isInitialized()) { throw newUninitializedMessageException(result); } - return buildPartial(); - } - - private org.xtreemfs.pbrpc.generatedinterfaces.MRC.removexattrRequest buildParsed() - throws com.google.protobuf.InvalidProtocolBufferException { - if (!isInitialized()) { - throw newUninitializedMessageException( - result).asInvalidProtocolBufferException(); - } - return buildPartial(); + return result; } - + public org.xtreemfs.pbrpc.generatedinterfaces.MRC.removexattrRequest buildPartial() { - if (result == null) { - throw new IllegalStateException( - "build() has already been called on this Builder."); - } - org.xtreemfs.pbrpc.generatedinterfaces.MRC.removexattrRequest returnMe = result; - result = null; - return returnMe; + org.xtreemfs.pbrpc.generatedinterfaces.MRC.removexattrRequest result = new org.xtreemfs.pbrpc.generatedinterfaces.MRC.removexattrRequest(this); + int from_bitField0_ = bitField0_; + int to_bitField0_ = 0; + if (((from_bitField0_ & 0x00000001) == 0x00000001)) { + to_bitField0_ |= 0x00000001; + } + result.volumeName_ = volumeName_; + if (((from_bitField0_ & 0x00000002) == 0x00000002)) { + to_bitField0_ |= 0x00000002; + } + result.path_ = path_; + if (((from_bitField0_ & 0x00000004) == 0x00000004)) { + to_bitField0_ |= 0x00000004; + } + result.name_ = name_; + result.bitField0_ = to_bitField0_; + onBuilt(); + return result; } - + public Builder mergeFrom(com.google.protobuf.Message other) { if (other instanceof org.xtreemfs.pbrpc.generatedinterfaces.MRC.removexattrRequest) { return mergeFrom((org.xtreemfs.pbrpc.generatedinterfaces.MRC.removexattrRequest)other); @@ -9416,372 +22793,957 @@ public final class MRC { return this; } } - + public Builder mergeFrom(org.xtreemfs.pbrpc.generatedinterfaces.MRC.removexattrRequest other) { if (other == org.xtreemfs.pbrpc.generatedinterfaces.MRC.removexattrRequest.getDefaultInstance()) return this; if (other.hasVolumeName()) { - setVolumeName(other.getVolumeName()); + bitField0_ |= 0x00000001; + volumeName_ = other.volumeName_; + onChanged(); } if (other.hasPath()) { - setPath(other.getPath()); + bitField0_ |= 0x00000002; + path_ = other.path_; + onChanged(); } if (other.hasName()) { - setName(other.getName()); + bitField0_ |= 0x00000004; + name_ = other.name_; + onChanged(); } this.mergeUnknownFields(other.getUnknownFields()); return this; } - + + public final boolean isInitialized() { + if (!hasVolumeName()) { + + return false; + } + if (!hasPath()) { + + return false; + } + if (!hasName()) { + + return false; + } + return true; + } + public Builder mergeFrom( com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - com.google.protobuf.UnknownFieldSet.Builder unknownFields = - com.google.protobuf.UnknownFieldSet.newBuilder( - this.getUnknownFields()); - while (true) { - int tag = input.readTag(); - switch (tag) { - case 0: - this.setUnknownFields(unknownFields.build()); - return this; - default: { - if (!parseUnknownField(input, unknownFields, - extensionRegistry, tag)) { - this.setUnknownFields(unknownFields.build()); - return this; - } - break; - } - case 10: { - setVolumeName(input.readString()); - break; - } - case 18: { - setPath(input.readString()); - break; - } - case 26: { - setName(input.readString()); - break; - } + org.xtreemfs.pbrpc.generatedinterfaces.MRC.removexattrRequest parsedMessage = null; + try { + parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + parsedMessage = (org.xtreemfs.pbrpc.generatedinterfaces.MRC.removexattrRequest) e.getUnfinishedMessage(); + throw e; + } finally { + if (parsedMessage != null) { + mergeFrom(parsedMessage); } } + return this; } - - + private int bitField0_; + // required string volume_name = 1; + private java.lang.Object volumeName_ = ""; + /** + * required string volume_name = 1; + * + *
+       * the volume name
+       * 
+ */ public boolean hasVolumeName() { - return result.hasVolumeName(); - } + return ((bitField0_ & 0x00000001) == 0x00000001); + } + /** + * required string volume_name = 1; + * + *
+       * the volume name
+       * 
+ */ public java.lang.String getVolumeName() { - return result.getVolumeName(); - } - public Builder setVolumeName(java.lang.String value) { + java.lang.Object ref = volumeName_; + if (!(ref instanceof java.lang.String)) { + java.lang.String s = ((com.google.protobuf.ByteString) ref) + .toStringUtf8(); + volumeName_ = s; + return s; + } else { + return (java.lang.String) ref; + } + } + /** + * required string volume_name = 1; + * + *
+       * the volume name
+       * 
+ */ + public com.google.protobuf.ByteString + getVolumeNameBytes() { + java.lang.Object ref = volumeName_; + if (ref instanceof String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + volumeName_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + /** + * required string volume_name = 1; + * + *
+       * the volume name
+       * 
+ */ + public Builder setVolumeName( + java.lang.String value) { if (value == null) { throw new NullPointerException(); } - result.hasVolumeName = true; - result.volumeName_ = value; - return this; - } + bitField0_ |= 0x00000001; + volumeName_ = value; + onChanged(); + return this; + } + /** + * required string volume_name = 1; + * + *
+       * the volume name
+       * 
+ */ public Builder clearVolumeName() { - result.hasVolumeName = false; - result.volumeName_ = getDefaultInstance().getVolumeName(); + bitField0_ = (bitField0_ & ~0x00000001); + volumeName_ = getDefaultInstance().getVolumeName(); + onChanged(); + return this; + } + /** + * required string volume_name = 1; + * + *
+       * the volume name
+       * 
+ */ + public Builder setVolumeNameBytes( + com.google.protobuf.ByteString value) { + if (value == null) { + throw new NullPointerException(); + } + bitField0_ |= 0x00000001; + volumeName_ = value; + onChanged(); return this; } - + // required string path = 2; + private java.lang.Object path_ = ""; + /** + * required string path = 2; + * + *
+       * the path to the file or directory, relative to the volume root
+       * 
+ */ public boolean hasPath() { - return result.hasPath(); - } + return ((bitField0_ & 0x00000002) == 0x00000002); + } + /** + * required string path = 2; + * + *
+       * the path to the file or directory, relative to the volume root
+       * 
+ */ public java.lang.String getPath() { - return result.getPath(); - } - public Builder setPath(java.lang.String value) { + java.lang.Object ref = path_; + if (!(ref instanceof java.lang.String)) { + java.lang.String s = ((com.google.protobuf.ByteString) ref) + .toStringUtf8(); + path_ = s; + return s; + } else { + return (java.lang.String) ref; + } + } + /** + * required string path = 2; + * + *
+       * the path to the file or directory, relative to the volume root
+       * 
+ */ + public com.google.protobuf.ByteString + getPathBytes() { + java.lang.Object ref = path_; + if (ref instanceof String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + path_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + /** + * required string path = 2; + * + *
+       * the path to the file or directory, relative to the volume root
+       * 
+ */ + public Builder setPath( + java.lang.String value) { if (value == null) { throw new NullPointerException(); } - result.hasPath = true; - result.path_ = value; - return this; - } + bitField0_ |= 0x00000002; + path_ = value; + onChanged(); + return this; + } + /** + * required string path = 2; + * + *
+       * the path to the file or directory, relative to the volume root
+       * 
+ */ public Builder clearPath() { - result.hasPath = false; - result.path_ = getDefaultInstance().getPath(); + bitField0_ = (bitField0_ & ~0x00000002); + path_ = getDefaultInstance().getPath(); + onChanged(); + return this; + } + /** + * required string path = 2; + * + *
+       * the path to the file or directory, relative to the volume root
+       * 
+ */ + public Builder setPathBytes( + com.google.protobuf.ByteString value) { + if (value == null) { + throw new NullPointerException(); + } + bitField0_ |= 0x00000002; + path_ = value; + onChanged(); return this; } - + // required string name = 3; + private java.lang.Object name_ = ""; + /** + * required string name = 3; + * + *
+       * the name of the attribute to remove
+       * 
+ */ public boolean hasName() { - return result.hasName(); - } + return ((bitField0_ & 0x00000004) == 0x00000004); + } + /** + * required string name = 3; + * + *
+       * the name of the attribute to remove
+       * 
+ */ public java.lang.String getName() { - return result.getName(); - } - public Builder setName(java.lang.String value) { + java.lang.Object ref = name_; + if (!(ref instanceof java.lang.String)) { + java.lang.String s = ((com.google.protobuf.ByteString) ref) + .toStringUtf8(); + name_ = s; + return s; + } else { + return (java.lang.String) ref; + } + } + /** + * required string name = 3; + * + *
+       * the name of the attribute to remove
+       * 
+ */ + public com.google.protobuf.ByteString + getNameBytes() { + java.lang.Object ref = name_; + if (ref instanceof String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + name_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + /** + * required string name = 3; + * + *
+       * the name of the attribute to remove
+       * 
+ */ + public Builder setName( + java.lang.String value) { if (value == null) { throw new NullPointerException(); } - result.hasName = true; - result.name_ = value; - return this; - } + bitField0_ |= 0x00000004; + name_ = value; + onChanged(); + return this; + } + /** + * required string name = 3; + * + *
+       * the name of the attribute to remove
+       * 
+ */ public Builder clearName() { - result.hasName = false; - result.name_ = getDefaultInstance().getName(); + bitField0_ = (bitField0_ & ~0x00000004); + name_ = getDefaultInstance().getName(); + onChanged(); + return this; + } + /** + * required string name = 3; + * + *
+       * the name of the attribute to remove
+       * 
+ */ + public Builder setNameBytes( + com.google.protobuf.ByteString value) { + if (value == null) { + throw new NullPointerException(); + } + bitField0_ |= 0x00000004; + name_ = value; + onChanged(); return this; } - + // @@protoc_insertion_point(builder_scope:xtreemfs.pbrpc.removexattrRequest) } - + static { defaultInstance = new removexattrRequest(true); - org.xtreemfs.pbrpc.generatedinterfaces.MRC.internalForceInit(); defaultInstance.initFields(); } - + // @@protoc_insertion_point(class_scope:xtreemfs.pbrpc.removexattrRequest) } - + + public interface renameRequestOrBuilder + extends com.google.protobuf.MessageOrBuilder { + + // required string volume_name = 1; + /** + * required string volume_name = 1; + * + *
+     * the volume name
+     * 
+ */ + boolean hasVolumeName(); + /** + * required string volume_name = 1; + * + *
+     * the volume name
+     * 
+ */ + java.lang.String getVolumeName(); + /** + * required string volume_name = 1; + * + *
+     * the volume name
+     * 
+ */ + com.google.protobuf.ByteString + getVolumeNameBytes(); + + // required string source_path = 2; + /** + * required string source_path = 2; + * + *
+     * the pathname to the file or directory to change 
+     * 
+ */ + boolean hasSourcePath(); + /** + * required string source_path = 2; + * + *
+     * the pathname to the file or directory to change 
+     * 
+ */ + java.lang.String getSourcePath(); + /** + * required string source_path = 2; + * + *
+     * the pathname to the file or directory to change 
+     * 
+ */ + com.google.protobuf.ByteString + getSourcePathBytes(); + + // required string target_path = 3; + /** + * required string target_path = 3; + * + *
+     * the new path name for the file or directory
+     * 
+ */ + boolean hasTargetPath(); + /** + * required string target_path = 3; + * + *
+     * the new path name for the file or directory
+     * 
+ */ + java.lang.String getTargetPath(); + /** + * required string target_path = 3; + * + *
+     * the new path name for the file or directory
+     * 
+ */ + com.google.protobuf.ByteString + getTargetPathBytes(); + } + /** + * Protobuf type {@code xtreemfs.pbrpc.renameRequest} + * + *
+   * changes the path name of a file or directory
+   * 
+ */ public static final class renameRequest extends - com.google.protobuf.GeneratedMessage { + com.google.protobuf.GeneratedMessage + implements renameRequestOrBuilder { // Use renameRequest.newBuilder() to construct. - private renameRequest() { - initFields(); + private renameRequest(com.google.protobuf.GeneratedMessage.Builder builder) { + super(builder); + this.unknownFields = builder.getUnknownFields(); } - private renameRequest(boolean noInit) {} - + private renameRequest(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); } + private static final renameRequest defaultInstance; public static renameRequest getDefaultInstance() { return defaultInstance; } - + public renameRequest getDefaultInstanceForType() { return defaultInstance; } - + + private final com.google.protobuf.UnknownFieldSet unknownFields; + @java.lang.Override + public final com.google.protobuf.UnknownFieldSet + getUnknownFields() { + return this.unknownFields; + } + private renameRequest( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + initFields(); + int mutable_bitField0_ = 0; + com.google.protobuf.UnknownFieldSet.Builder unknownFields = + com.google.protobuf.UnknownFieldSet.newBuilder(); + try { + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch (tag) { + case 0: + done = true; + break; + default: { + if (!parseUnknownField(input, unknownFields, + extensionRegistry, tag)) { + done = true; + } + break; + } + case 10: { + bitField0_ |= 0x00000001; + volumeName_ = input.readBytes(); + break; + } + case 18: { + bitField0_ |= 0x00000002; + sourcePath_ = input.readBytes(); + break; + } + case 26: { + bitField0_ |= 0x00000004; + targetPath_ = input.readBytes(); + break; + } + } + } + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(this); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException( + e.getMessage()).setUnfinishedMessage(this); + } finally { + this.unknownFields = unknownFields.build(); + makeExtensionsImmutable(); + } + } public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { return org.xtreemfs.pbrpc.generatedinterfaces.MRC.internal_static_xtreemfs_pbrpc_renameRequest_descriptor; } - + protected com.google.protobuf.GeneratedMessage.FieldAccessorTable internalGetFieldAccessorTable() { - return org.xtreemfs.pbrpc.generatedinterfaces.MRC.internal_static_xtreemfs_pbrpc_renameRequest_fieldAccessorTable; + return org.xtreemfs.pbrpc.generatedinterfaces.MRC.internal_static_xtreemfs_pbrpc_renameRequest_fieldAccessorTable + .ensureFieldAccessorsInitialized( + org.xtreemfs.pbrpc.generatedinterfaces.MRC.renameRequest.class, org.xtreemfs.pbrpc.generatedinterfaces.MRC.renameRequest.Builder.class); + } + + public static com.google.protobuf.Parser PARSER = + new com.google.protobuf.AbstractParser() { + public renameRequest parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return new renameRequest(input, extensionRegistry); + } + }; + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; } - + + private int bitField0_; // required string volume_name = 1; public static final int VOLUME_NAME_FIELD_NUMBER = 1; - private boolean hasVolumeName; - private java.lang.String volumeName_ = ""; - public boolean hasVolumeName() { return hasVolumeName; } - public java.lang.String getVolumeName() { return volumeName_; } - + private java.lang.Object volumeName_; + /** + * required string volume_name = 1; + * + *
+     * the volume name
+     * 
+ */ + public boolean hasVolumeName() { + return ((bitField0_ & 0x00000001) == 0x00000001); + } + /** + * required string volume_name = 1; + * + *
+     * the volume name
+     * 
+ */ + public java.lang.String getVolumeName() { + java.lang.Object ref = volumeName_; + if (ref instanceof java.lang.String) { + return (java.lang.String) ref; + } else { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + if (bs.isValidUtf8()) { + volumeName_ = s; + } + return s; + } + } + /** + * required string volume_name = 1; + * + *
+     * the volume name
+     * 
+ */ + public com.google.protobuf.ByteString + getVolumeNameBytes() { + java.lang.Object ref = volumeName_; + if (ref instanceof java.lang.String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + volumeName_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + // required string source_path = 2; public static final int SOURCE_PATH_FIELD_NUMBER = 2; - private boolean hasSourcePath; - private java.lang.String sourcePath_ = ""; - public boolean hasSourcePath() { return hasSourcePath; } - public java.lang.String getSourcePath() { return sourcePath_; } - + private java.lang.Object sourcePath_; + /** + * required string source_path = 2; + * + *
+     * the pathname to the file or directory to change 
+     * 
+ */ + public boolean hasSourcePath() { + return ((bitField0_ & 0x00000002) == 0x00000002); + } + /** + * required string source_path = 2; + * + *
+     * the pathname to the file or directory to change 
+     * 
+ */ + public java.lang.String getSourcePath() { + java.lang.Object ref = sourcePath_; + if (ref instanceof java.lang.String) { + return (java.lang.String) ref; + } else { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + if (bs.isValidUtf8()) { + sourcePath_ = s; + } + return s; + } + } + /** + * required string source_path = 2; + * + *
+     * the pathname to the file or directory to change 
+     * 
+ */ + public com.google.protobuf.ByteString + getSourcePathBytes() { + java.lang.Object ref = sourcePath_; + if (ref instanceof java.lang.String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + sourcePath_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + // required string target_path = 3; public static final int TARGET_PATH_FIELD_NUMBER = 3; - private boolean hasTargetPath; - private java.lang.String targetPath_ = ""; - public boolean hasTargetPath() { return hasTargetPath; } - public java.lang.String getTargetPath() { return targetPath_; } - + private java.lang.Object targetPath_; + /** + * required string target_path = 3; + * + *
+     * the new path name for the file or directory
+     * 
+ */ + public boolean hasTargetPath() { + return ((bitField0_ & 0x00000004) == 0x00000004); + } + /** + * required string target_path = 3; + * + *
+     * the new path name for the file or directory
+     * 
+ */ + public java.lang.String getTargetPath() { + java.lang.Object ref = targetPath_; + if (ref instanceof java.lang.String) { + return (java.lang.String) ref; + } else { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + if (bs.isValidUtf8()) { + targetPath_ = s; + } + return s; + } + } + /** + * required string target_path = 3; + * + *
+     * the new path name for the file or directory
+     * 
+ */ + public com.google.protobuf.ByteString + getTargetPathBytes() { + java.lang.Object ref = targetPath_; + if (ref instanceof java.lang.String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + targetPath_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + private void initFields() { + volumeName_ = ""; + sourcePath_ = ""; + targetPath_ = ""; } + private byte memoizedIsInitialized = -1; public final boolean isInitialized() { - if (!hasVolumeName) return false; - if (!hasSourcePath) return false; - if (!hasTargetPath) return false; + byte isInitialized = memoizedIsInitialized; + if (isInitialized != -1) return isInitialized == 1; + + if (!hasVolumeName()) { + memoizedIsInitialized = 0; + return false; + } + if (!hasSourcePath()) { + memoizedIsInitialized = 0; + return false; + } + if (!hasTargetPath()) { + memoizedIsInitialized = 0; + return false; + } + memoizedIsInitialized = 1; return true; } - + public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException { getSerializedSize(); - if (hasVolumeName()) { - output.writeString(1, getVolumeName()); + if (((bitField0_ & 0x00000001) == 0x00000001)) { + output.writeBytes(1, getVolumeNameBytes()); } - if (hasSourcePath()) { - output.writeString(2, getSourcePath()); + if (((bitField0_ & 0x00000002) == 0x00000002)) { + output.writeBytes(2, getSourcePathBytes()); } - if (hasTargetPath()) { - output.writeString(3, getTargetPath()); + if (((bitField0_ & 0x00000004) == 0x00000004)) { + output.writeBytes(3, getTargetPathBytes()); } getUnknownFields().writeTo(output); } - + private int memoizedSerializedSize = -1; public int getSerializedSize() { int size = memoizedSerializedSize; if (size != -1) return size; - + size = 0; - if (hasVolumeName()) { + if (((bitField0_ & 0x00000001) == 0x00000001)) { size += com.google.protobuf.CodedOutputStream - .computeStringSize(1, getVolumeName()); + .computeBytesSize(1, getVolumeNameBytes()); } - if (hasSourcePath()) { + if (((bitField0_ & 0x00000002) == 0x00000002)) { size += com.google.protobuf.CodedOutputStream - .computeStringSize(2, getSourcePath()); + .computeBytesSize(2, getSourcePathBytes()); } - if (hasTargetPath()) { + if (((bitField0_ & 0x00000004) == 0x00000004)) { size += com.google.protobuf.CodedOutputStream - .computeStringSize(3, getTargetPath()); + .computeBytesSize(3, getTargetPathBytes()); } size += getUnknownFields().getSerializedSize(); memoizedSerializedSize = size; return size; } - + + private static final long serialVersionUID = 0L; + @java.lang.Override + protected java.lang.Object writeReplace() + throws java.io.ObjectStreamException { + return super.writeReplace(); + } + public static org.xtreemfs.pbrpc.generatedinterfaces.MRC.renameRequest parseFrom( com.google.protobuf.ByteString data) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data).buildParsed(); + return PARSER.parseFrom(data); } public static org.xtreemfs.pbrpc.generatedinterfaces.MRC.renameRequest parseFrom( com.google.protobuf.ByteString data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(data, extensionRegistry); } public static org.xtreemfs.pbrpc.generatedinterfaces.MRC.renameRequest parseFrom(byte[] data) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data).buildParsed(); + return PARSER.parseFrom(data); } public static org.xtreemfs.pbrpc.generatedinterfaces.MRC.renameRequest parseFrom( byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(data, extensionRegistry); } public static org.xtreemfs.pbrpc.generatedinterfaces.MRC.renameRequest parseFrom(java.io.InputStream input) throws java.io.IOException { - return newBuilder().mergeFrom(input).buildParsed(); + return PARSER.parseFrom(input); } public static org.xtreemfs.pbrpc.generatedinterfaces.MRC.renameRequest parseFrom( java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - return newBuilder().mergeFrom(input, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(input, extensionRegistry); } public static org.xtreemfs.pbrpc.generatedinterfaces.MRC.renameRequest parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException { - Builder builder = newBuilder(); - if (builder.mergeDelimitedFrom(input)) { - return builder.buildParsed(); - } else { - return null; - } + return PARSER.parseDelimitedFrom(input); } public static org.xtreemfs.pbrpc.generatedinterfaces.MRC.renameRequest parseDelimitedFrom( java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - Builder builder = newBuilder(); - if (builder.mergeDelimitedFrom(input, extensionRegistry)) { - return builder.buildParsed(); - } else { - return null; - } + return PARSER.parseDelimitedFrom(input, extensionRegistry); } public static org.xtreemfs.pbrpc.generatedinterfaces.MRC.renameRequest parseFrom( com.google.protobuf.CodedInputStream input) throws java.io.IOException { - return newBuilder().mergeFrom(input).buildParsed(); + return PARSER.parseFrom(input); } public static org.xtreemfs.pbrpc.generatedinterfaces.MRC.renameRequest parseFrom( com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - return newBuilder().mergeFrom(input, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(input, extensionRegistry); } - + public static Builder newBuilder() { return Builder.create(); } public Builder newBuilderForType() { return newBuilder(); } public static Builder newBuilder(org.xtreemfs.pbrpc.generatedinterfaces.MRC.renameRequest prototype) { return newBuilder().mergeFrom(prototype); } public Builder toBuilder() { return newBuilder(this); } - + + @java.lang.Override + protected Builder newBuilderForType( + com.google.protobuf.GeneratedMessage.BuilderParent parent) { + Builder builder = new Builder(parent); + return builder; + } + /** + * Protobuf type {@code xtreemfs.pbrpc.renameRequest} + * + *
+     * changes the path name of a file or directory
+     * 
+ */ public static final class Builder extends - com.google.protobuf.GeneratedMessage.Builder { - private org.xtreemfs.pbrpc.generatedinterfaces.MRC.renameRequest result; - + com.google.protobuf.GeneratedMessage.Builder + implements org.xtreemfs.pbrpc.generatedinterfaces.MRC.renameRequestOrBuilder { + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return org.xtreemfs.pbrpc.generatedinterfaces.MRC.internal_static_xtreemfs_pbrpc_renameRequest_descriptor; + } + + protected com.google.protobuf.GeneratedMessage.FieldAccessorTable + internalGetFieldAccessorTable() { + return org.xtreemfs.pbrpc.generatedinterfaces.MRC.internal_static_xtreemfs_pbrpc_renameRequest_fieldAccessorTable + .ensureFieldAccessorsInitialized( + org.xtreemfs.pbrpc.generatedinterfaces.MRC.renameRequest.class, org.xtreemfs.pbrpc.generatedinterfaces.MRC.renameRequest.Builder.class); + } + // Construct using org.xtreemfs.pbrpc.generatedinterfaces.MRC.renameRequest.newBuilder() - private Builder() {} - - private static Builder create() { - Builder builder = new Builder(); - builder.result = new org.xtreemfs.pbrpc.generatedinterfaces.MRC.renameRequest(); - return builder; + private Builder() { + maybeForceBuilderInitialization(); } - - protected org.xtreemfs.pbrpc.generatedinterfaces.MRC.renameRequest internalGetResult() { - return result; + + private Builder( + com.google.protobuf.GeneratedMessage.BuilderParent parent) { + super(parent); + maybeForceBuilderInitialization(); } - - public Builder clear() { - if (result == null) { - throw new IllegalStateException( - "Cannot call clear() after build()."); + private void maybeForceBuilderInitialization() { + if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) { } - result = new org.xtreemfs.pbrpc.generatedinterfaces.MRC.renameRequest(); + } + private static Builder create() { + return new Builder(); + } + + public Builder clear() { + super.clear(); + volumeName_ = ""; + bitField0_ = (bitField0_ & ~0x00000001); + sourcePath_ = ""; + bitField0_ = (bitField0_ & ~0x00000002); + targetPath_ = ""; + bitField0_ = (bitField0_ & ~0x00000004); return this; } - + public Builder clone() { - return create().mergeFrom(result); + return create().mergeFrom(buildPartial()); } - + public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() { - return org.xtreemfs.pbrpc.generatedinterfaces.MRC.renameRequest.getDescriptor(); + return org.xtreemfs.pbrpc.generatedinterfaces.MRC.internal_static_xtreemfs_pbrpc_renameRequest_descriptor; } - + public org.xtreemfs.pbrpc.generatedinterfaces.MRC.renameRequest getDefaultInstanceForType() { return org.xtreemfs.pbrpc.generatedinterfaces.MRC.renameRequest.getDefaultInstance(); } - - public boolean isInitialized() { - return result.isInitialized(); - } + public org.xtreemfs.pbrpc.generatedinterfaces.MRC.renameRequest build() { - if (result != null && !isInitialized()) { + org.xtreemfs.pbrpc.generatedinterfaces.MRC.renameRequest result = buildPartial(); + if (!result.isInitialized()) { throw newUninitializedMessageException(result); } - return buildPartial(); - } - - private org.xtreemfs.pbrpc.generatedinterfaces.MRC.renameRequest buildParsed() - throws com.google.protobuf.InvalidProtocolBufferException { - if (!isInitialized()) { - throw newUninitializedMessageException( - result).asInvalidProtocolBufferException(); - } - return buildPartial(); + return result; } - + public org.xtreemfs.pbrpc.generatedinterfaces.MRC.renameRequest buildPartial() { - if (result == null) { - throw new IllegalStateException( - "build() has already been called on this Builder."); - } - org.xtreemfs.pbrpc.generatedinterfaces.MRC.renameRequest returnMe = result; - result = null; - return returnMe; + org.xtreemfs.pbrpc.generatedinterfaces.MRC.renameRequest result = new org.xtreemfs.pbrpc.generatedinterfaces.MRC.renameRequest(this); + int from_bitField0_ = bitField0_; + int to_bitField0_ = 0; + if (((from_bitField0_ & 0x00000001) == 0x00000001)) { + to_bitField0_ |= 0x00000001; + } + result.volumeName_ = volumeName_; + if (((from_bitField0_ & 0x00000002) == 0x00000002)) { + to_bitField0_ |= 0x00000002; + } + result.sourcePath_ = sourcePath_; + if (((from_bitField0_ & 0x00000004) == 0x00000004)) { + to_bitField0_ |= 0x00000004; + } + result.targetPath_ = targetPath_; + result.bitField0_ = to_bitField0_; + onBuilt(); + return result; } - + public Builder mergeFrom(com.google.protobuf.Message other) { if (other instanceof org.xtreemfs.pbrpc.generatedinterfaces.MRC.renameRequest) { return mergeFrom((org.xtreemfs.pbrpc.generatedinterfaces.MRC.renameRequest)other); @@ -9790,360 +23752,819 @@ public final class MRC { return this; } } - + public Builder mergeFrom(org.xtreemfs.pbrpc.generatedinterfaces.MRC.renameRequest other) { if (other == org.xtreemfs.pbrpc.generatedinterfaces.MRC.renameRequest.getDefaultInstance()) return this; if (other.hasVolumeName()) { - setVolumeName(other.getVolumeName()); + bitField0_ |= 0x00000001; + volumeName_ = other.volumeName_; + onChanged(); } if (other.hasSourcePath()) { - setSourcePath(other.getSourcePath()); + bitField0_ |= 0x00000002; + sourcePath_ = other.sourcePath_; + onChanged(); } if (other.hasTargetPath()) { - setTargetPath(other.getTargetPath()); + bitField0_ |= 0x00000004; + targetPath_ = other.targetPath_; + onChanged(); } this.mergeUnknownFields(other.getUnknownFields()); return this; } - + + public final boolean isInitialized() { + if (!hasVolumeName()) { + + return false; + } + if (!hasSourcePath()) { + + return false; + } + if (!hasTargetPath()) { + + return false; + } + return true; + } + public Builder mergeFrom( com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - com.google.protobuf.UnknownFieldSet.Builder unknownFields = - com.google.protobuf.UnknownFieldSet.newBuilder( - this.getUnknownFields()); - while (true) { - int tag = input.readTag(); - switch (tag) { - case 0: - this.setUnknownFields(unknownFields.build()); - return this; - default: { - if (!parseUnknownField(input, unknownFields, - extensionRegistry, tag)) { - this.setUnknownFields(unknownFields.build()); - return this; - } - break; - } - case 10: { - setVolumeName(input.readString()); - break; - } - case 18: { - setSourcePath(input.readString()); - break; - } - case 26: { - setTargetPath(input.readString()); - break; - } + org.xtreemfs.pbrpc.generatedinterfaces.MRC.renameRequest parsedMessage = null; + try { + parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + parsedMessage = (org.xtreemfs.pbrpc.generatedinterfaces.MRC.renameRequest) e.getUnfinishedMessage(); + throw e; + } finally { + if (parsedMessage != null) { + mergeFrom(parsedMessage); } } + return this; } - - + private int bitField0_; + // required string volume_name = 1; + private java.lang.Object volumeName_ = ""; + /** + * required string volume_name = 1; + * + *
+       * the volume name
+       * 
+ */ public boolean hasVolumeName() { - return result.hasVolumeName(); - } + return ((bitField0_ & 0x00000001) == 0x00000001); + } + /** + * required string volume_name = 1; + * + *
+       * the volume name
+       * 
+ */ public java.lang.String getVolumeName() { - return result.getVolumeName(); - } - public Builder setVolumeName(java.lang.String value) { + java.lang.Object ref = volumeName_; + if (!(ref instanceof java.lang.String)) { + java.lang.String s = ((com.google.protobuf.ByteString) ref) + .toStringUtf8(); + volumeName_ = s; + return s; + } else { + return (java.lang.String) ref; + } + } + /** + * required string volume_name = 1; + * + *
+       * the volume name
+       * 
+ */ + public com.google.protobuf.ByteString + getVolumeNameBytes() { + java.lang.Object ref = volumeName_; + if (ref instanceof String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + volumeName_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + /** + * required string volume_name = 1; + * + *
+       * the volume name
+       * 
+ */ + public Builder setVolumeName( + java.lang.String value) { if (value == null) { throw new NullPointerException(); } - result.hasVolumeName = true; - result.volumeName_ = value; - return this; - } + bitField0_ |= 0x00000001; + volumeName_ = value; + onChanged(); + return this; + } + /** + * required string volume_name = 1; + * + *
+       * the volume name
+       * 
+ */ public Builder clearVolumeName() { - result.hasVolumeName = false; - result.volumeName_ = getDefaultInstance().getVolumeName(); + bitField0_ = (bitField0_ & ~0x00000001); + volumeName_ = getDefaultInstance().getVolumeName(); + onChanged(); + return this; + } + /** + * required string volume_name = 1; + * + *
+       * the volume name
+       * 
+ */ + public Builder setVolumeNameBytes( + com.google.protobuf.ByteString value) { + if (value == null) { + throw new NullPointerException(); + } + bitField0_ |= 0x00000001; + volumeName_ = value; + onChanged(); return this; } - + // required string source_path = 2; + private java.lang.Object sourcePath_ = ""; + /** + * required string source_path = 2; + * + *
+       * the pathname to the file or directory to change 
+       * 
+ */ public boolean hasSourcePath() { - return result.hasSourcePath(); - } + return ((bitField0_ & 0x00000002) == 0x00000002); + } + /** + * required string source_path = 2; + * + *
+       * the pathname to the file or directory to change 
+       * 
+ */ public java.lang.String getSourcePath() { - return result.getSourcePath(); - } - public Builder setSourcePath(java.lang.String value) { + java.lang.Object ref = sourcePath_; + if (!(ref instanceof java.lang.String)) { + java.lang.String s = ((com.google.protobuf.ByteString) ref) + .toStringUtf8(); + sourcePath_ = s; + return s; + } else { + return (java.lang.String) ref; + } + } + /** + * required string source_path = 2; + * + *
+       * the pathname to the file or directory to change 
+       * 
+ */ + public com.google.protobuf.ByteString + getSourcePathBytes() { + java.lang.Object ref = sourcePath_; + if (ref instanceof String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + sourcePath_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + /** + * required string source_path = 2; + * + *
+       * the pathname to the file or directory to change 
+       * 
+ */ + public Builder setSourcePath( + java.lang.String value) { if (value == null) { throw new NullPointerException(); } - result.hasSourcePath = true; - result.sourcePath_ = value; - return this; - } + bitField0_ |= 0x00000002; + sourcePath_ = value; + onChanged(); + return this; + } + /** + * required string source_path = 2; + * + *
+       * the pathname to the file or directory to change 
+       * 
+ */ public Builder clearSourcePath() { - result.hasSourcePath = false; - result.sourcePath_ = getDefaultInstance().getSourcePath(); + bitField0_ = (bitField0_ & ~0x00000002); + sourcePath_ = getDefaultInstance().getSourcePath(); + onChanged(); + return this; + } + /** + * required string source_path = 2; + * + *
+       * the pathname to the file or directory to change 
+       * 
+ */ + public Builder setSourcePathBytes( + com.google.protobuf.ByteString value) { + if (value == null) { + throw new NullPointerException(); + } + bitField0_ |= 0x00000002; + sourcePath_ = value; + onChanged(); return this; } - + // required string target_path = 3; + private java.lang.Object targetPath_ = ""; + /** + * required string target_path = 3; + * + *
+       * the new path name for the file or directory
+       * 
+ */ public boolean hasTargetPath() { - return result.hasTargetPath(); - } + return ((bitField0_ & 0x00000004) == 0x00000004); + } + /** + * required string target_path = 3; + * + *
+       * the new path name for the file or directory
+       * 
+ */ public java.lang.String getTargetPath() { - return result.getTargetPath(); - } - public Builder setTargetPath(java.lang.String value) { + java.lang.Object ref = targetPath_; + if (!(ref instanceof java.lang.String)) { + java.lang.String s = ((com.google.protobuf.ByteString) ref) + .toStringUtf8(); + targetPath_ = s; + return s; + } else { + return (java.lang.String) ref; + } + } + /** + * required string target_path = 3; + * + *
+       * the new path name for the file or directory
+       * 
+ */ + public com.google.protobuf.ByteString + getTargetPathBytes() { + java.lang.Object ref = targetPath_; + if (ref instanceof String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + targetPath_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + /** + * required string target_path = 3; + * + *
+       * the new path name for the file or directory
+       * 
+ */ + public Builder setTargetPath( + java.lang.String value) { if (value == null) { throw new NullPointerException(); } - result.hasTargetPath = true; - result.targetPath_ = value; - return this; - } + bitField0_ |= 0x00000004; + targetPath_ = value; + onChanged(); + return this; + } + /** + * required string target_path = 3; + * + *
+       * the new path name for the file or directory
+       * 
+ */ public Builder clearTargetPath() { - result.hasTargetPath = false; - result.targetPath_ = getDefaultInstance().getTargetPath(); + bitField0_ = (bitField0_ & ~0x00000004); + targetPath_ = getDefaultInstance().getTargetPath(); + onChanged(); + return this; + } + /** + * required string target_path = 3; + * + *
+       * the new path name for the file or directory
+       * 
+ */ + public Builder setTargetPathBytes( + com.google.protobuf.ByteString value) { + if (value == null) { + throw new NullPointerException(); + } + bitField0_ |= 0x00000004; + targetPath_ = value; + onChanged(); return this; } - + // @@protoc_insertion_point(builder_scope:xtreemfs.pbrpc.renameRequest) } - + static { defaultInstance = new renameRequest(true); - org.xtreemfs.pbrpc.generatedinterfaces.MRC.internalForceInit(); defaultInstance.initFields(); } - + // @@protoc_insertion_point(class_scope:xtreemfs.pbrpc.renameRequest) } - + + public interface renameResponseOrBuilder + extends com.google.protobuf.MessageOrBuilder { + + // required fixed32 timestamp_s = 1; + /** + * required fixed32 timestamp_s = 1; + * + *
+     * the server timestamp in seconds since 1970 to which the file and
+     * directory timestamps were updated
+     * 
+ */ + boolean hasTimestampS(); + /** + * required fixed32 timestamp_s = 1; + * + *
+     * the server timestamp in seconds since 1970 to which the file and
+     * directory timestamps were updated
+     * 
+ */ + int getTimestampS(); + + // optional .xtreemfs.pbrpc.FileCredentials creds = 2; + /** + * optional .xtreemfs.pbrpc.FileCredentials creds = 2; + * + *
+     * an optional set of file credentials that may contain a capabiltiy
+     * for the deletion of the previous file at the given target path
+     * 
+ */ + boolean hasCreds(); + /** + * optional .xtreemfs.pbrpc.FileCredentials creds = 2; + * + *
+     * an optional set of file credentials that may contain a capabiltiy
+     * for the deletion of the previous file at the given target path
+     * 
+ */ + org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials getCreds(); + /** + * optional .xtreemfs.pbrpc.FileCredentials creds = 2; + * + *
+     * an optional set of file credentials that may contain a capabiltiy
+     * for the deletion of the previous file at the given target path
+     * 
+ */ + org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentialsOrBuilder getCredsOrBuilder(); + } + /** + * Protobuf type {@code xtreemfs.pbrpc.renameResponse} + * + *
+   * returns the result of a rename operation
+   * 
+ */ public static final class renameResponse extends - com.google.protobuf.GeneratedMessage { + com.google.protobuf.GeneratedMessage + implements renameResponseOrBuilder { // Use renameResponse.newBuilder() to construct. - private renameResponse() { - initFields(); + private renameResponse(com.google.protobuf.GeneratedMessage.Builder builder) { + super(builder); + this.unknownFields = builder.getUnknownFields(); } - private renameResponse(boolean noInit) {} - + private renameResponse(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); } + private static final renameResponse defaultInstance; public static renameResponse getDefaultInstance() { return defaultInstance; } - + public renameResponse getDefaultInstanceForType() { return defaultInstance; } - + + private final com.google.protobuf.UnknownFieldSet unknownFields; + @java.lang.Override + public final com.google.protobuf.UnknownFieldSet + getUnknownFields() { + return this.unknownFields; + } + private renameResponse( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + initFields(); + int mutable_bitField0_ = 0; + com.google.protobuf.UnknownFieldSet.Builder unknownFields = + com.google.protobuf.UnknownFieldSet.newBuilder(); + try { + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch (tag) { + case 0: + done = true; + break; + default: { + if (!parseUnknownField(input, unknownFields, + extensionRegistry, tag)) { + done = true; + } + break; + } + case 13: { + bitField0_ |= 0x00000001; + timestampS_ = input.readFixed32(); + break; + } + case 18: { + org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials.Builder subBuilder = null; + if (((bitField0_ & 0x00000002) == 0x00000002)) { + subBuilder = creds_.toBuilder(); + } + creds_ = input.readMessage(org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials.PARSER, extensionRegistry); + if (subBuilder != null) { + subBuilder.mergeFrom(creds_); + creds_ = subBuilder.buildPartial(); + } + bitField0_ |= 0x00000002; + break; + } + } + } + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(this); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException( + e.getMessage()).setUnfinishedMessage(this); + } finally { + this.unknownFields = unknownFields.build(); + makeExtensionsImmutable(); + } + } public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { return org.xtreemfs.pbrpc.generatedinterfaces.MRC.internal_static_xtreemfs_pbrpc_renameResponse_descriptor; } - + protected com.google.protobuf.GeneratedMessage.FieldAccessorTable internalGetFieldAccessorTable() { - return org.xtreemfs.pbrpc.generatedinterfaces.MRC.internal_static_xtreemfs_pbrpc_renameResponse_fieldAccessorTable; + return org.xtreemfs.pbrpc.generatedinterfaces.MRC.internal_static_xtreemfs_pbrpc_renameResponse_fieldAccessorTable + .ensureFieldAccessorsInitialized( + org.xtreemfs.pbrpc.generatedinterfaces.MRC.renameResponse.class, org.xtreemfs.pbrpc.generatedinterfaces.MRC.renameResponse.Builder.class); + } + + public static com.google.protobuf.Parser PARSER = + new com.google.protobuf.AbstractParser() { + public renameResponse parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return new renameResponse(input, extensionRegistry); + } + }; + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; } - + + private int bitField0_; // required fixed32 timestamp_s = 1; public static final int TIMESTAMP_S_FIELD_NUMBER = 1; - private boolean hasTimestampS; - private int timestampS_ = 0; - public boolean hasTimestampS() { return hasTimestampS; } - public int getTimestampS() { return timestampS_; } - + private int timestampS_; + /** + * required fixed32 timestamp_s = 1; + * + *
+     * the server timestamp in seconds since 1970 to which the file and
+     * directory timestamps were updated
+     * 
+ */ + public boolean hasTimestampS() { + return ((bitField0_ & 0x00000001) == 0x00000001); + } + /** + * required fixed32 timestamp_s = 1; + * + *
+     * the server timestamp in seconds since 1970 to which the file and
+     * directory timestamps were updated
+     * 
+ */ + public int getTimestampS() { + return timestampS_; + } + // optional .xtreemfs.pbrpc.FileCredentials creds = 2; public static final int CREDS_FIELD_NUMBER = 2; - private boolean hasCreds; private org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials creds_; - public boolean hasCreds() { return hasCreds; } - public org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials getCreds() { return creds_; } - + /** + * optional .xtreemfs.pbrpc.FileCredentials creds = 2; + * + *
+     * an optional set of file credentials that may contain a capabiltiy
+     * for the deletion of the previous file at the given target path
+     * 
+ */ + public boolean hasCreds() { + return ((bitField0_ & 0x00000002) == 0x00000002); + } + /** + * optional .xtreemfs.pbrpc.FileCredentials creds = 2; + * + *
+     * an optional set of file credentials that may contain a capabiltiy
+     * for the deletion of the previous file at the given target path
+     * 
+ */ + public org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials getCreds() { + return creds_; + } + /** + * optional .xtreemfs.pbrpc.FileCredentials creds = 2; + * + *
+     * an optional set of file credentials that may contain a capabiltiy
+     * for the deletion of the previous file at the given target path
+     * 
+ */ + public org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentialsOrBuilder getCredsOrBuilder() { + return creds_; + } + private void initFields() { + timestampS_ = 0; creds_ = org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials.getDefaultInstance(); } + private byte memoizedIsInitialized = -1; public final boolean isInitialized() { - if (!hasTimestampS) return false; + byte isInitialized = memoizedIsInitialized; + if (isInitialized != -1) return isInitialized == 1; + + if (!hasTimestampS()) { + memoizedIsInitialized = 0; + return false; + } if (hasCreds()) { - if (!getCreds().isInitialized()) return false; + if (!getCreds().isInitialized()) { + memoizedIsInitialized = 0; + return false; + } } + memoizedIsInitialized = 1; return true; } - + public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException { getSerializedSize(); - if (hasTimestampS()) { - output.writeFixed32(1, getTimestampS()); + if (((bitField0_ & 0x00000001) == 0x00000001)) { + output.writeFixed32(1, timestampS_); } - if (hasCreds()) { - output.writeMessage(2, getCreds()); + if (((bitField0_ & 0x00000002) == 0x00000002)) { + output.writeMessage(2, creds_); } getUnknownFields().writeTo(output); } - + private int memoizedSerializedSize = -1; public int getSerializedSize() { int size = memoizedSerializedSize; if (size != -1) return size; - + size = 0; - if (hasTimestampS()) { + if (((bitField0_ & 0x00000001) == 0x00000001)) { size += com.google.protobuf.CodedOutputStream - .computeFixed32Size(1, getTimestampS()); + .computeFixed32Size(1, timestampS_); } - if (hasCreds()) { + if (((bitField0_ & 0x00000002) == 0x00000002)) { size += com.google.protobuf.CodedOutputStream - .computeMessageSize(2, getCreds()); + .computeMessageSize(2, creds_); } size += getUnknownFields().getSerializedSize(); memoizedSerializedSize = size; return size; } - + + private static final long serialVersionUID = 0L; + @java.lang.Override + protected java.lang.Object writeReplace() + throws java.io.ObjectStreamException { + return super.writeReplace(); + } + public static org.xtreemfs.pbrpc.generatedinterfaces.MRC.renameResponse parseFrom( com.google.protobuf.ByteString data) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data).buildParsed(); + return PARSER.parseFrom(data); } public static org.xtreemfs.pbrpc.generatedinterfaces.MRC.renameResponse parseFrom( com.google.protobuf.ByteString data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(data, extensionRegistry); } public static org.xtreemfs.pbrpc.generatedinterfaces.MRC.renameResponse parseFrom(byte[] data) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data).buildParsed(); + return PARSER.parseFrom(data); } public static org.xtreemfs.pbrpc.generatedinterfaces.MRC.renameResponse parseFrom( byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(data, extensionRegistry); } public static org.xtreemfs.pbrpc.generatedinterfaces.MRC.renameResponse parseFrom(java.io.InputStream input) throws java.io.IOException { - return newBuilder().mergeFrom(input).buildParsed(); + return PARSER.parseFrom(input); } public static org.xtreemfs.pbrpc.generatedinterfaces.MRC.renameResponse parseFrom( java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - return newBuilder().mergeFrom(input, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(input, extensionRegistry); } public static org.xtreemfs.pbrpc.generatedinterfaces.MRC.renameResponse parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException { - Builder builder = newBuilder(); - if (builder.mergeDelimitedFrom(input)) { - return builder.buildParsed(); - } else { - return null; - } + return PARSER.parseDelimitedFrom(input); } public static org.xtreemfs.pbrpc.generatedinterfaces.MRC.renameResponse parseDelimitedFrom( java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - Builder builder = newBuilder(); - if (builder.mergeDelimitedFrom(input, extensionRegistry)) { - return builder.buildParsed(); - } else { - return null; - } + return PARSER.parseDelimitedFrom(input, extensionRegistry); } public static org.xtreemfs.pbrpc.generatedinterfaces.MRC.renameResponse parseFrom( com.google.protobuf.CodedInputStream input) throws java.io.IOException { - return newBuilder().mergeFrom(input).buildParsed(); + return PARSER.parseFrom(input); } public static org.xtreemfs.pbrpc.generatedinterfaces.MRC.renameResponse parseFrom( com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - return newBuilder().mergeFrom(input, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(input, extensionRegistry); } - + public static Builder newBuilder() { return Builder.create(); } public Builder newBuilderForType() { return newBuilder(); } public static Builder newBuilder(org.xtreemfs.pbrpc.generatedinterfaces.MRC.renameResponse prototype) { return newBuilder().mergeFrom(prototype); } public Builder toBuilder() { return newBuilder(this); } - + + @java.lang.Override + protected Builder newBuilderForType( + com.google.protobuf.GeneratedMessage.BuilderParent parent) { + Builder builder = new Builder(parent); + return builder; + } + /** + * Protobuf type {@code xtreemfs.pbrpc.renameResponse} + * + *
+     * returns the result of a rename operation
+     * 
+ */ public static final class Builder extends - com.google.protobuf.GeneratedMessage.Builder { - private org.xtreemfs.pbrpc.generatedinterfaces.MRC.renameResponse result; - + com.google.protobuf.GeneratedMessage.Builder + implements org.xtreemfs.pbrpc.generatedinterfaces.MRC.renameResponseOrBuilder { + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return org.xtreemfs.pbrpc.generatedinterfaces.MRC.internal_static_xtreemfs_pbrpc_renameResponse_descriptor; + } + + protected com.google.protobuf.GeneratedMessage.FieldAccessorTable + internalGetFieldAccessorTable() { + return org.xtreemfs.pbrpc.generatedinterfaces.MRC.internal_static_xtreemfs_pbrpc_renameResponse_fieldAccessorTable + .ensureFieldAccessorsInitialized( + org.xtreemfs.pbrpc.generatedinterfaces.MRC.renameResponse.class, org.xtreemfs.pbrpc.generatedinterfaces.MRC.renameResponse.Builder.class); + } + // Construct using org.xtreemfs.pbrpc.generatedinterfaces.MRC.renameResponse.newBuilder() - private Builder() {} - - private static Builder create() { - Builder builder = new Builder(); - builder.result = new org.xtreemfs.pbrpc.generatedinterfaces.MRC.renameResponse(); - return builder; + private Builder() { + maybeForceBuilderInitialization(); } - - protected org.xtreemfs.pbrpc.generatedinterfaces.MRC.renameResponse internalGetResult() { - return result; + + private Builder( + com.google.protobuf.GeneratedMessage.BuilderParent parent) { + super(parent); + maybeForceBuilderInitialization(); + } + private void maybeForceBuilderInitialization() { + if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) { + getCredsFieldBuilder(); + } } - + private static Builder create() { + return new Builder(); + } + public Builder clear() { - if (result == null) { - throw new IllegalStateException( - "Cannot call clear() after build()."); + super.clear(); + timestampS_ = 0; + bitField0_ = (bitField0_ & ~0x00000001); + if (credsBuilder_ == null) { + creds_ = org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials.getDefaultInstance(); + } else { + credsBuilder_.clear(); } - result = new org.xtreemfs.pbrpc.generatedinterfaces.MRC.renameResponse(); + bitField0_ = (bitField0_ & ~0x00000002); return this; } - + public Builder clone() { - return create().mergeFrom(result); + return create().mergeFrom(buildPartial()); } - + public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() { - return org.xtreemfs.pbrpc.generatedinterfaces.MRC.renameResponse.getDescriptor(); + return org.xtreemfs.pbrpc.generatedinterfaces.MRC.internal_static_xtreemfs_pbrpc_renameResponse_descriptor; } - + public org.xtreemfs.pbrpc.generatedinterfaces.MRC.renameResponse getDefaultInstanceForType() { return org.xtreemfs.pbrpc.generatedinterfaces.MRC.renameResponse.getDefaultInstance(); } - - public boolean isInitialized() { - return result.isInitialized(); - } + public org.xtreemfs.pbrpc.generatedinterfaces.MRC.renameResponse build() { - if (result != null && !isInitialized()) { + org.xtreemfs.pbrpc.generatedinterfaces.MRC.renameResponse result = buildPartial(); + if (!result.isInitialized()) { throw newUninitializedMessageException(result); } - return buildPartial(); - } - - private org.xtreemfs.pbrpc.generatedinterfaces.MRC.renameResponse buildParsed() - throws com.google.protobuf.InvalidProtocolBufferException { - if (!isInitialized()) { - throw newUninitializedMessageException( - result).asInvalidProtocolBufferException(); - } - return buildPartial(); + return result; } - + public org.xtreemfs.pbrpc.generatedinterfaces.MRC.renameResponse buildPartial() { - if (result == null) { - throw new IllegalStateException( - "build() has already been called on this Builder."); + org.xtreemfs.pbrpc.generatedinterfaces.MRC.renameResponse result = new org.xtreemfs.pbrpc.generatedinterfaces.MRC.renameResponse(this); + int from_bitField0_ = bitField0_; + int to_bitField0_ = 0; + if (((from_bitField0_ & 0x00000001) == 0x00000001)) { + to_bitField0_ |= 0x00000001; + } + result.timestampS_ = timestampS_; + if (((from_bitField0_ & 0x00000002) == 0x00000002)) { + to_bitField0_ |= 0x00000002; + } + if (credsBuilder_ == null) { + result.creds_ = creds_; + } else { + result.creds_ = credsBuilder_.build(); } - org.xtreemfs.pbrpc.generatedinterfaces.MRC.renameResponse returnMe = result; - result = null; - return returnMe; + result.bitField0_ = to_bitField0_; + onBuilt(); + return result; } - + public Builder mergeFrom(com.google.protobuf.Message other) { if (other instanceof org.xtreemfs.pbrpc.generatedinterfaces.MRC.renameResponse) { return mergeFrom((org.xtreemfs.pbrpc.generatedinterfaces.MRC.renameResponse)other); @@ -10152,7 +24573,7 @@ public final class MRC { return this; } } - + public Builder mergeFrom(org.xtreemfs.pbrpc.generatedinterfaces.MRC.renameResponse other) { if (other == org.xtreemfs.pbrpc.generatedinterfaces.MRC.renameResponse.getDefaultInstance()) return this; if (other.hasTimestampS()) { @@ -10164,335 +24585,750 @@ public final class MRC { this.mergeUnknownFields(other.getUnknownFields()); return this; } - + + public final boolean isInitialized() { + if (!hasTimestampS()) { + + return false; + } + if (hasCreds()) { + if (!getCreds().isInitialized()) { + + return false; + } + } + return true; + } + public Builder mergeFrom( com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - com.google.protobuf.UnknownFieldSet.Builder unknownFields = - com.google.protobuf.UnknownFieldSet.newBuilder( - this.getUnknownFields()); - while (true) { - int tag = input.readTag(); - switch (tag) { - case 0: - this.setUnknownFields(unknownFields.build()); - return this; - default: { - if (!parseUnknownField(input, unknownFields, - extensionRegistry, tag)) { - this.setUnknownFields(unknownFields.build()); - return this; - } - break; - } - case 13: { - setTimestampS(input.readFixed32()); - break; - } - case 18: { - org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials.Builder subBuilder = org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials.newBuilder(); - if (hasCreds()) { - subBuilder.mergeFrom(getCreds()); - } - input.readMessage(subBuilder, extensionRegistry); - setCreds(subBuilder.buildPartial()); - break; - } + org.xtreemfs.pbrpc.generatedinterfaces.MRC.renameResponse parsedMessage = null; + try { + parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + parsedMessage = (org.xtreemfs.pbrpc.generatedinterfaces.MRC.renameResponse) e.getUnfinishedMessage(); + throw e; + } finally { + if (parsedMessage != null) { + mergeFrom(parsedMessage); } } + return this; } - - + private int bitField0_; + // required fixed32 timestamp_s = 1; + private int timestampS_ ; + /** + * required fixed32 timestamp_s = 1; + * + *
+       * the server timestamp in seconds since 1970 to which the file and
+       * directory timestamps were updated
+       * 
+ */ public boolean hasTimestampS() { - return result.hasTimestampS(); - } + return ((bitField0_ & 0x00000001) == 0x00000001); + } + /** + * required fixed32 timestamp_s = 1; + * + *
+       * the server timestamp in seconds since 1970 to which the file and
+       * directory timestamps were updated
+       * 
+ */ public int getTimestampS() { - return result.getTimestampS(); - } + return timestampS_; + } + /** + * required fixed32 timestamp_s = 1; + * + *
+       * the server timestamp in seconds since 1970 to which the file and
+       * directory timestamps were updated
+       * 
+ */ public Builder setTimestampS(int value) { - result.hasTimestampS = true; - result.timestampS_ = value; - return this; - } + bitField0_ |= 0x00000001; + timestampS_ = value; + onChanged(); + return this; + } + /** + * required fixed32 timestamp_s = 1; + * + *
+       * the server timestamp in seconds since 1970 to which the file and
+       * directory timestamps were updated
+       * 
+ */ public Builder clearTimestampS() { - result.hasTimestampS = false; - result.timestampS_ = 0; + bitField0_ = (bitField0_ & ~0x00000001); + timestampS_ = 0; + onChanged(); return this; } - + // optional .xtreemfs.pbrpc.FileCredentials creds = 2; + private org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials creds_ = org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials.getDefaultInstance(); + private com.google.protobuf.SingleFieldBuilder< + org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials, org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials.Builder, org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentialsOrBuilder> credsBuilder_; + /** + * optional .xtreemfs.pbrpc.FileCredentials creds = 2; + * + *
+       * an optional set of file credentials that may contain a capabiltiy
+       * for the deletion of the previous file at the given target path
+       * 
+ */ public boolean hasCreds() { - return result.hasCreds(); - } + return ((bitField0_ & 0x00000002) == 0x00000002); + } + /** + * optional .xtreemfs.pbrpc.FileCredentials creds = 2; + * + *
+       * an optional set of file credentials that may contain a capabiltiy
+       * for the deletion of the previous file at the given target path
+       * 
+ */ public org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials getCreds() { - return result.getCreds(); + if (credsBuilder_ == null) { + return creds_; + } else { + return credsBuilder_.getMessage(); + } } + /** + * optional .xtreemfs.pbrpc.FileCredentials creds = 2; + * + *
+       * an optional set of file credentials that may contain a capabiltiy
+       * for the deletion of the previous file at the given target path
+       * 
+ */ public Builder setCreds(org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials value) { - if (value == null) { - throw new NullPointerException(); + if (credsBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + creds_ = value; + onChanged(); + } else { + credsBuilder_.setMessage(value); + } + bitField0_ |= 0x00000002; + return this; + } + /** + * optional .xtreemfs.pbrpc.FileCredentials creds = 2; + * + *
+       * an optional set of file credentials that may contain a capabiltiy
+       * for the deletion of the previous file at the given target path
+       * 
+ */ + public Builder setCreds( + org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials.Builder builderForValue) { + if (credsBuilder_ == null) { + creds_ = builderForValue.build(); + onChanged(); + } else { + credsBuilder_.setMessage(builderForValue.build()); } - result.hasCreds = true; - result.creds_ = value; - return this; - } - public Builder setCreds(org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials.Builder builderForValue) { - result.hasCreds = true; - result.creds_ = builderForValue.build(); + bitField0_ |= 0x00000002; return this; } + /** + * optional .xtreemfs.pbrpc.FileCredentials creds = 2; + * + *
+       * an optional set of file credentials that may contain a capabiltiy
+       * for the deletion of the previous file at the given target path
+       * 
+ */ public Builder mergeCreds(org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials value) { - if (result.hasCreds() && - result.creds_ != org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials.getDefaultInstance()) { - result.creds_ = - org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials.newBuilder(result.creds_).mergeFrom(value).buildPartial(); + if (credsBuilder_ == null) { + if (((bitField0_ & 0x00000002) == 0x00000002) && + creds_ != org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials.getDefaultInstance()) { + creds_ = + org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials.newBuilder(creds_).mergeFrom(value).buildPartial(); + } else { + creds_ = value; + } + onChanged(); } else { - result.creds_ = value; + credsBuilder_.mergeFrom(value); } - result.hasCreds = true; + bitField0_ |= 0x00000002; return this; } + /** + * optional .xtreemfs.pbrpc.FileCredentials creds = 2; + * + *
+       * an optional set of file credentials that may contain a capabiltiy
+       * for the deletion of the previous file at the given target path
+       * 
+ */ public Builder clearCreds() { - result.hasCreds = false; - result.creds_ = org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials.getDefaultInstance(); - return this; + if (credsBuilder_ == null) { + creds_ = org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials.getDefaultInstance(); + onChanged(); + } else { + credsBuilder_.clear(); + } + bitField0_ = (bitField0_ & ~0x00000002); + return this; + } + /** + * optional .xtreemfs.pbrpc.FileCredentials creds = 2; + * + *
+       * an optional set of file credentials that may contain a capabiltiy
+       * for the deletion of the previous file at the given target path
+       * 
+ */ + public org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials.Builder getCredsBuilder() { + bitField0_ |= 0x00000002; + onChanged(); + return getCredsFieldBuilder().getBuilder(); + } + /** + * optional .xtreemfs.pbrpc.FileCredentials creds = 2; + * + *
+       * an optional set of file credentials that may contain a capabiltiy
+       * for the deletion of the previous file at the given target path
+       * 
+ */ + public org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentialsOrBuilder getCredsOrBuilder() { + if (credsBuilder_ != null) { + return credsBuilder_.getMessageOrBuilder(); + } else { + return creds_; + } + } + /** + * optional .xtreemfs.pbrpc.FileCredentials creds = 2; + * + *
+       * an optional set of file credentials that may contain a capabiltiy
+       * for the deletion of the previous file at the given target path
+       * 
+ */ + private com.google.protobuf.SingleFieldBuilder< + org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials, org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials.Builder, org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentialsOrBuilder> + getCredsFieldBuilder() { + if (credsBuilder_ == null) { + credsBuilder_ = new com.google.protobuf.SingleFieldBuilder< + org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials, org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials.Builder, org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentialsOrBuilder>( + creds_, + getParentForChildren(), + isClean()); + creds_ = null; + } + return credsBuilder_; } - + // @@protoc_insertion_point(builder_scope:xtreemfs.pbrpc.renameResponse) } - + static { defaultInstance = new renameResponse(true); - org.xtreemfs.pbrpc.generatedinterfaces.MRC.internalForceInit(); defaultInstance.initFields(); } - + // @@protoc_insertion_point(class_scope:xtreemfs.pbrpc.renameResponse) } - + + public interface rmdirRequestOrBuilder + extends com.google.protobuf.MessageOrBuilder { + + // required string volume_name = 1; + /** + * required string volume_name = 1; + * + *
+     * the volume name
+     * 
+ */ + boolean hasVolumeName(); + /** + * required string volume_name = 1; + * + *
+     * the volume name
+     * 
+ */ + java.lang.String getVolumeName(); + /** + * required string volume_name = 1; + * + *
+     * the volume name
+     * 
+ */ + com.google.protobuf.ByteString + getVolumeNameBytes(); + + // required string path = 2; + /** + * required string path = 2; + * + *
+     * the path to the directory to delete
+     * 
+ */ + boolean hasPath(); + /** + * required string path = 2; + * + *
+     * the path to the directory to delete
+     * 
+ */ + java.lang.String getPath(); + /** + * required string path = 2; + * + *
+     * the path to the directory to delete
+     * 
+ */ + com.google.protobuf.ByteString + getPathBytes(); + } + /** + * Protobuf type {@code xtreemfs.pbrpc.rmdirRequest} + * + *
+   * deletes an empty directory 
+   * 
+ */ public static final class rmdirRequest extends - com.google.protobuf.GeneratedMessage { + com.google.protobuf.GeneratedMessage + implements rmdirRequestOrBuilder { // Use rmdirRequest.newBuilder() to construct. - private rmdirRequest() { - initFields(); + private rmdirRequest(com.google.protobuf.GeneratedMessage.Builder builder) { + super(builder); + this.unknownFields = builder.getUnknownFields(); } - private rmdirRequest(boolean noInit) {} - + private rmdirRequest(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); } + private static final rmdirRequest defaultInstance; public static rmdirRequest getDefaultInstance() { return defaultInstance; } - + public rmdirRequest getDefaultInstanceForType() { return defaultInstance; } - + + private final com.google.protobuf.UnknownFieldSet unknownFields; + @java.lang.Override + public final com.google.protobuf.UnknownFieldSet + getUnknownFields() { + return this.unknownFields; + } + private rmdirRequest( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + initFields(); + int mutable_bitField0_ = 0; + com.google.protobuf.UnknownFieldSet.Builder unknownFields = + com.google.protobuf.UnknownFieldSet.newBuilder(); + try { + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch (tag) { + case 0: + done = true; + break; + default: { + if (!parseUnknownField(input, unknownFields, + extensionRegistry, tag)) { + done = true; + } + break; + } + case 10: { + bitField0_ |= 0x00000001; + volumeName_ = input.readBytes(); + break; + } + case 18: { + bitField0_ |= 0x00000002; + path_ = input.readBytes(); + break; + } + } + } + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(this); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException( + e.getMessage()).setUnfinishedMessage(this); + } finally { + this.unknownFields = unknownFields.build(); + makeExtensionsImmutable(); + } + } public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { return org.xtreemfs.pbrpc.generatedinterfaces.MRC.internal_static_xtreemfs_pbrpc_rmdirRequest_descriptor; } - + protected com.google.protobuf.GeneratedMessage.FieldAccessorTable internalGetFieldAccessorTable() { - return org.xtreemfs.pbrpc.generatedinterfaces.MRC.internal_static_xtreemfs_pbrpc_rmdirRequest_fieldAccessorTable; + return org.xtreemfs.pbrpc.generatedinterfaces.MRC.internal_static_xtreemfs_pbrpc_rmdirRequest_fieldAccessorTable + .ensureFieldAccessorsInitialized( + org.xtreemfs.pbrpc.generatedinterfaces.MRC.rmdirRequest.class, org.xtreemfs.pbrpc.generatedinterfaces.MRC.rmdirRequest.Builder.class); + } + + public static com.google.protobuf.Parser PARSER = + new com.google.protobuf.AbstractParser() { + public rmdirRequest parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return new rmdirRequest(input, extensionRegistry); + } + }; + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; } - + + private int bitField0_; // required string volume_name = 1; public static final int VOLUME_NAME_FIELD_NUMBER = 1; - private boolean hasVolumeName; - private java.lang.String volumeName_ = ""; - public boolean hasVolumeName() { return hasVolumeName; } - public java.lang.String getVolumeName() { return volumeName_; } - + private java.lang.Object volumeName_; + /** + * required string volume_name = 1; + * + *
+     * the volume name
+     * 
+ */ + public boolean hasVolumeName() { + return ((bitField0_ & 0x00000001) == 0x00000001); + } + /** + * required string volume_name = 1; + * + *
+     * the volume name
+     * 
+ */ + public java.lang.String getVolumeName() { + java.lang.Object ref = volumeName_; + if (ref instanceof java.lang.String) { + return (java.lang.String) ref; + } else { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + if (bs.isValidUtf8()) { + volumeName_ = s; + } + return s; + } + } + /** + * required string volume_name = 1; + * + *
+     * the volume name
+     * 
+ */ + public com.google.protobuf.ByteString + getVolumeNameBytes() { + java.lang.Object ref = volumeName_; + if (ref instanceof java.lang.String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + volumeName_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + // required string path = 2; public static final int PATH_FIELD_NUMBER = 2; - private boolean hasPath; - private java.lang.String path_ = ""; - public boolean hasPath() { return hasPath; } - public java.lang.String getPath() { return path_; } - + private java.lang.Object path_; + /** + * required string path = 2; + * + *
+     * the path to the directory to delete
+     * 
+ */ + public boolean hasPath() { + return ((bitField0_ & 0x00000002) == 0x00000002); + } + /** + * required string path = 2; + * + *
+     * the path to the directory to delete
+     * 
+ */ + public java.lang.String getPath() { + java.lang.Object ref = path_; + if (ref instanceof java.lang.String) { + return (java.lang.String) ref; + } else { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + if (bs.isValidUtf8()) { + path_ = s; + } + return s; + } + } + /** + * required string path = 2; + * + *
+     * the path to the directory to delete
+     * 
+ */ + public com.google.protobuf.ByteString + getPathBytes() { + java.lang.Object ref = path_; + if (ref instanceof java.lang.String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + path_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + private void initFields() { + volumeName_ = ""; + path_ = ""; } + private byte memoizedIsInitialized = -1; public final boolean isInitialized() { - if (!hasVolumeName) return false; - if (!hasPath) return false; + byte isInitialized = memoizedIsInitialized; + if (isInitialized != -1) return isInitialized == 1; + + if (!hasVolumeName()) { + memoizedIsInitialized = 0; + return false; + } + if (!hasPath()) { + memoizedIsInitialized = 0; + return false; + } + memoizedIsInitialized = 1; return true; } - + public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException { getSerializedSize(); - if (hasVolumeName()) { - output.writeString(1, getVolumeName()); + if (((bitField0_ & 0x00000001) == 0x00000001)) { + output.writeBytes(1, getVolumeNameBytes()); } - if (hasPath()) { - output.writeString(2, getPath()); + if (((bitField0_ & 0x00000002) == 0x00000002)) { + output.writeBytes(2, getPathBytes()); } getUnknownFields().writeTo(output); } - + private int memoizedSerializedSize = -1; public int getSerializedSize() { int size = memoizedSerializedSize; if (size != -1) return size; - + size = 0; - if (hasVolumeName()) { + if (((bitField0_ & 0x00000001) == 0x00000001)) { size += com.google.protobuf.CodedOutputStream - .computeStringSize(1, getVolumeName()); + .computeBytesSize(1, getVolumeNameBytes()); } - if (hasPath()) { + if (((bitField0_ & 0x00000002) == 0x00000002)) { size += com.google.protobuf.CodedOutputStream - .computeStringSize(2, getPath()); + .computeBytesSize(2, getPathBytes()); } size += getUnknownFields().getSerializedSize(); memoizedSerializedSize = size; return size; } - + + private static final long serialVersionUID = 0L; + @java.lang.Override + protected java.lang.Object writeReplace() + throws java.io.ObjectStreamException { + return super.writeReplace(); + } + public static org.xtreemfs.pbrpc.generatedinterfaces.MRC.rmdirRequest parseFrom( com.google.protobuf.ByteString data) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data).buildParsed(); + return PARSER.parseFrom(data); } public static org.xtreemfs.pbrpc.generatedinterfaces.MRC.rmdirRequest parseFrom( com.google.protobuf.ByteString data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(data, extensionRegistry); } public static org.xtreemfs.pbrpc.generatedinterfaces.MRC.rmdirRequest parseFrom(byte[] data) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data).buildParsed(); + return PARSER.parseFrom(data); } public static org.xtreemfs.pbrpc.generatedinterfaces.MRC.rmdirRequest parseFrom( byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(data, extensionRegistry); } public static org.xtreemfs.pbrpc.generatedinterfaces.MRC.rmdirRequest parseFrom(java.io.InputStream input) throws java.io.IOException { - return newBuilder().mergeFrom(input).buildParsed(); + return PARSER.parseFrom(input); } public static org.xtreemfs.pbrpc.generatedinterfaces.MRC.rmdirRequest parseFrom( java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - return newBuilder().mergeFrom(input, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(input, extensionRegistry); } public static org.xtreemfs.pbrpc.generatedinterfaces.MRC.rmdirRequest parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException { - Builder builder = newBuilder(); - if (builder.mergeDelimitedFrom(input)) { - return builder.buildParsed(); - } else { - return null; - } + return PARSER.parseDelimitedFrom(input); } public static org.xtreemfs.pbrpc.generatedinterfaces.MRC.rmdirRequest parseDelimitedFrom( java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - Builder builder = newBuilder(); - if (builder.mergeDelimitedFrom(input, extensionRegistry)) { - return builder.buildParsed(); - } else { - return null; - } + return PARSER.parseDelimitedFrom(input, extensionRegistry); } public static org.xtreemfs.pbrpc.generatedinterfaces.MRC.rmdirRequest parseFrom( com.google.protobuf.CodedInputStream input) throws java.io.IOException { - return newBuilder().mergeFrom(input).buildParsed(); + return PARSER.parseFrom(input); } public static org.xtreemfs.pbrpc.generatedinterfaces.MRC.rmdirRequest parseFrom( com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - return newBuilder().mergeFrom(input, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(input, extensionRegistry); } - + public static Builder newBuilder() { return Builder.create(); } public Builder newBuilderForType() { return newBuilder(); } public static Builder newBuilder(org.xtreemfs.pbrpc.generatedinterfaces.MRC.rmdirRequest prototype) { return newBuilder().mergeFrom(prototype); } public Builder toBuilder() { return newBuilder(this); } - + + @java.lang.Override + protected Builder newBuilderForType( + com.google.protobuf.GeneratedMessage.BuilderParent parent) { + Builder builder = new Builder(parent); + return builder; + } + /** + * Protobuf type {@code xtreemfs.pbrpc.rmdirRequest} + * + *
+     * deletes an empty directory 
+     * 
+ */ public static final class Builder extends - com.google.protobuf.GeneratedMessage.Builder { - private org.xtreemfs.pbrpc.generatedinterfaces.MRC.rmdirRequest result; - + com.google.protobuf.GeneratedMessage.Builder + implements org.xtreemfs.pbrpc.generatedinterfaces.MRC.rmdirRequestOrBuilder { + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return org.xtreemfs.pbrpc.generatedinterfaces.MRC.internal_static_xtreemfs_pbrpc_rmdirRequest_descriptor; + } + + protected com.google.protobuf.GeneratedMessage.FieldAccessorTable + internalGetFieldAccessorTable() { + return org.xtreemfs.pbrpc.generatedinterfaces.MRC.internal_static_xtreemfs_pbrpc_rmdirRequest_fieldAccessorTable + .ensureFieldAccessorsInitialized( + org.xtreemfs.pbrpc.generatedinterfaces.MRC.rmdirRequest.class, org.xtreemfs.pbrpc.generatedinterfaces.MRC.rmdirRequest.Builder.class); + } + // Construct using org.xtreemfs.pbrpc.generatedinterfaces.MRC.rmdirRequest.newBuilder() - private Builder() {} - - private static Builder create() { - Builder builder = new Builder(); - builder.result = new org.xtreemfs.pbrpc.generatedinterfaces.MRC.rmdirRequest(); - return builder; + private Builder() { + maybeForceBuilderInitialization(); } - - protected org.xtreemfs.pbrpc.generatedinterfaces.MRC.rmdirRequest internalGetResult() { - return result; + + private Builder( + com.google.protobuf.GeneratedMessage.BuilderParent parent) { + super(parent); + maybeForceBuilderInitialization(); } - - public Builder clear() { - if (result == null) { - throw new IllegalStateException( - "Cannot call clear() after build()."); + private void maybeForceBuilderInitialization() { + if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) { } - result = new org.xtreemfs.pbrpc.generatedinterfaces.MRC.rmdirRequest(); + } + private static Builder create() { + return new Builder(); + } + + public Builder clear() { + super.clear(); + volumeName_ = ""; + bitField0_ = (bitField0_ & ~0x00000001); + path_ = ""; + bitField0_ = (bitField0_ & ~0x00000002); return this; } - + public Builder clone() { - return create().mergeFrom(result); + return create().mergeFrom(buildPartial()); } - + public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() { - return org.xtreemfs.pbrpc.generatedinterfaces.MRC.rmdirRequest.getDescriptor(); + return org.xtreemfs.pbrpc.generatedinterfaces.MRC.internal_static_xtreemfs_pbrpc_rmdirRequest_descriptor; } - + public org.xtreemfs.pbrpc.generatedinterfaces.MRC.rmdirRequest getDefaultInstanceForType() { return org.xtreemfs.pbrpc.generatedinterfaces.MRC.rmdirRequest.getDefaultInstance(); } - - public boolean isInitialized() { - return result.isInitialized(); - } + public org.xtreemfs.pbrpc.generatedinterfaces.MRC.rmdirRequest build() { - if (result != null && !isInitialized()) { + org.xtreemfs.pbrpc.generatedinterfaces.MRC.rmdirRequest result = buildPartial(); + if (!result.isInitialized()) { throw newUninitializedMessageException(result); } - return buildPartial(); - } - - private org.xtreemfs.pbrpc.generatedinterfaces.MRC.rmdirRequest buildParsed() - throws com.google.protobuf.InvalidProtocolBufferException { - if (!isInitialized()) { - throw newUninitializedMessageException( - result).asInvalidProtocolBufferException(); - } - return buildPartial(); + return result; } - + public org.xtreemfs.pbrpc.generatedinterfaces.MRC.rmdirRequest buildPartial() { - if (result == null) { - throw new IllegalStateException( - "build() has already been called on this Builder."); - } - org.xtreemfs.pbrpc.generatedinterfaces.MRC.rmdirRequest returnMe = result; - result = null; - return returnMe; + org.xtreemfs.pbrpc.generatedinterfaces.MRC.rmdirRequest result = new org.xtreemfs.pbrpc.generatedinterfaces.MRC.rmdirRequest(this); + int from_bitField0_ = bitField0_; + int to_bitField0_ = 0; + if (((from_bitField0_ & 0x00000001) == 0x00000001)) { + to_bitField0_ |= 0x00000001; + } + result.volumeName_ = volumeName_; + if (((from_bitField0_ & 0x00000002) == 0x00000002)) { + to_bitField0_ |= 0x00000002; + } + result.path_ = path_; + result.bitField0_ = to_bitField0_; + onBuilt(); + return result; } - + public Builder mergeFrom(com.google.protobuf.Message other) { if (other instanceof org.xtreemfs.pbrpc.generatedinterfaces.MRC.rmdirRequest) { return mergeFrom((org.xtreemfs.pbrpc.generatedinterfaces.MRC.rmdirRequest)other); @@ -10501,361 +25337,914 @@ public final class MRC { return this; } } - + public Builder mergeFrom(org.xtreemfs.pbrpc.generatedinterfaces.MRC.rmdirRequest other) { if (other == org.xtreemfs.pbrpc.generatedinterfaces.MRC.rmdirRequest.getDefaultInstance()) return this; if (other.hasVolumeName()) { - setVolumeName(other.getVolumeName()); + bitField0_ |= 0x00000001; + volumeName_ = other.volumeName_; + onChanged(); } if (other.hasPath()) { - setPath(other.getPath()); + bitField0_ |= 0x00000002; + path_ = other.path_; + onChanged(); } this.mergeUnknownFields(other.getUnknownFields()); return this; } - + + public final boolean isInitialized() { + if (!hasVolumeName()) { + + return false; + } + if (!hasPath()) { + + return false; + } + return true; + } + public Builder mergeFrom( com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - com.google.protobuf.UnknownFieldSet.Builder unknownFields = - com.google.protobuf.UnknownFieldSet.newBuilder( - this.getUnknownFields()); - while (true) { - int tag = input.readTag(); - switch (tag) { - case 0: - this.setUnknownFields(unknownFields.build()); - return this; - default: { - if (!parseUnknownField(input, unknownFields, - extensionRegistry, tag)) { - this.setUnknownFields(unknownFields.build()); - return this; - } - break; - } - case 10: { - setVolumeName(input.readString()); - break; - } - case 18: { - setPath(input.readString()); - break; - } + org.xtreemfs.pbrpc.generatedinterfaces.MRC.rmdirRequest parsedMessage = null; + try { + parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + parsedMessage = (org.xtreemfs.pbrpc.generatedinterfaces.MRC.rmdirRequest) e.getUnfinishedMessage(); + throw e; + } finally { + if (parsedMessage != null) { + mergeFrom(parsedMessage); } } + return this; } - - + private int bitField0_; + // required string volume_name = 1; + private java.lang.Object volumeName_ = ""; + /** + * required string volume_name = 1; + * + *
+       * the volume name
+       * 
+ */ public boolean hasVolumeName() { - return result.hasVolumeName(); - } + return ((bitField0_ & 0x00000001) == 0x00000001); + } + /** + * required string volume_name = 1; + * + *
+       * the volume name
+       * 
+ */ public java.lang.String getVolumeName() { - return result.getVolumeName(); - } - public Builder setVolumeName(java.lang.String value) { + java.lang.Object ref = volumeName_; + if (!(ref instanceof java.lang.String)) { + java.lang.String s = ((com.google.protobuf.ByteString) ref) + .toStringUtf8(); + volumeName_ = s; + return s; + } else { + return (java.lang.String) ref; + } + } + /** + * required string volume_name = 1; + * + *
+       * the volume name
+       * 
+ */ + public com.google.protobuf.ByteString + getVolumeNameBytes() { + java.lang.Object ref = volumeName_; + if (ref instanceof String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + volumeName_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + /** + * required string volume_name = 1; + * + *
+       * the volume name
+       * 
+ */ + public Builder setVolumeName( + java.lang.String value) { if (value == null) { throw new NullPointerException(); } - result.hasVolumeName = true; - result.volumeName_ = value; - return this; - } + bitField0_ |= 0x00000001; + volumeName_ = value; + onChanged(); + return this; + } + /** + * required string volume_name = 1; + * + *
+       * the volume name
+       * 
+ */ public Builder clearVolumeName() { - result.hasVolumeName = false; - result.volumeName_ = getDefaultInstance().getVolumeName(); + bitField0_ = (bitField0_ & ~0x00000001); + volumeName_ = getDefaultInstance().getVolumeName(); + onChanged(); + return this; + } + /** + * required string volume_name = 1; + * + *
+       * the volume name
+       * 
+ */ + public Builder setVolumeNameBytes( + com.google.protobuf.ByteString value) { + if (value == null) { + throw new NullPointerException(); + } + bitField0_ |= 0x00000001; + volumeName_ = value; + onChanged(); return this; } - + // required string path = 2; + private java.lang.Object path_ = ""; + /** + * required string path = 2; + * + *
+       * the path to the directory to delete
+       * 
+ */ public boolean hasPath() { - return result.hasPath(); - } + return ((bitField0_ & 0x00000002) == 0x00000002); + } + /** + * required string path = 2; + * + *
+       * the path to the directory to delete
+       * 
+ */ public java.lang.String getPath() { - return result.getPath(); - } - public Builder setPath(java.lang.String value) { + java.lang.Object ref = path_; + if (!(ref instanceof java.lang.String)) { + java.lang.String s = ((com.google.protobuf.ByteString) ref) + .toStringUtf8(); + path_ = s; + return s; + } else { + return (java.lang.String) ref; + } + } + /** + * required string path = 2; + * + *
+       * the path to the directory to delete
+       * 
+ */ + public com.google.protobuf.ByteString + getPathBytes() { + java.lang.Object ref = path_; + if (ref instanceof String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + path_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + /** + * required string path = 2; + * + *
+       * the path to the directory to delete
+       * 
+ */ + public Builder setPath( + java.lang.String value) { if (value == null) { throw new NullPointerException(); } - result.hasPath = true; - result.path_ = value; - return this; - } + bitField0_ |= 0x00000002; + path_ = value; + onChanged(); + return this; + } + /** + * required string path = 2; + * + *
+       * the path to the directory to delete
+       * 
+ */ public Builder clearPath() { - result.hasPath = false; - result.path_ = getDefaultInstance().getPath(); + bitField0_ = (bitField0_ & ~0x00000002); + path_ = getDefaultInstance().getPath(); + onChanged(); + return this; + } + /** + * required string path = 2; + * + *
+       * the path to the directory to delete
+       * 
+ */ + public Builder setPathBytes( + com.google.protobuf.ByteString value) { + if (value == null) { + throw new NullPointerException(); + } + bitField0_ |= 0x00000002; + path_ = value; + onChanged(); return this; } - + // @@protoc_insertion_point(builder_scope:xtreemfs.pbrpc.rmdirRequest) } - + static { defaultInstance = new rmdirRequest(true); - org.xtreemfs.pbrpc.generatedinterfaces.MRC.internalForceInit(); defaultInstance.initFields(); } - + // @@protoc_insertion_point(class_scope:xtreemfs.pbrpc.rmdirRequest) } - + + public interface setattrRequestOrBuilder + extends com.google.protobuf.MessageOrBuilder { + + // required string volume_name = 1; + /** + * required string volume_name = 1; + * + *
+     * the volume name
+     * 
+ */ + boolean hasVolumeName(); + /** + * required string volume_name = 1; + * + *
+     * the volume name
+     * 
+ */ + java.lang.String getVolumeName(); + /** + * required string volume_name = 1; + * + *
+     * the volume name
+     * 
+ */ + com.google.protobuf.ByteString + getVolumeNameBytes(); + + // required string path = 2; + /** + * required string path = 2; + * + *
+     * the path to the file or directory, relative to the volume root
+     * 
+ */ + boolean hasPath(); + /** + * required string path = 2; + * + *
+     * the path to the file or directory, relative to the volume root
+     * 
+ */ + java.lang.String getPath(); + /** + * required string path = 2; + * + *
+     * the path to the file or directory, relative to the volume root
+     * 
+ */ + com.google.protobuf.ByteString + getPathBytes(); + + // required .xtreemfs.pbrpc.Stat stbuf = 3; + /** + * required .xtreemfs.pbrpc.Stat stbuf = 3; + * + *
+     * a buffer containing the attributes to update
+     * 
+ */ + boolean hasStbuf(); + /** + * required .xtreemfs.pbrpc.Stat stbuf = 3; + * + *
+     * a buffer containing the attributes to update
+     * 
+ */ + org.xtreemfs.pbrpc.generatedinterfaces.MRC.Stat getStbuf(); + /** + * required .xtreemfs.pbrpc.Stat stbuf = 3; + * + *
+     * a buffer containing the attributes to update
+     * 
+ */ + org.xtreemfs.pbrpc.generatedinterfaces.MRC.StatOrBuilder getStbufOrBuilder(); + + // required fixed32 to_set = 4; + /** + * required fixed32 to_set = 4; + * + *
+     * a bitmap of Setattrs indicating which attributes to update
+     * 
+ */ + boolean hasToSet(); + /** + * required fixed32 to_set = 4; + * + *
+     * a bitmap of Setattrs indicating which attributes to update
+     * 
+ */ + int getToSet(); + } + /** + * Protobuf type {@code xtreemfs.pbrpc.setattrRequest} + * + *
+   * changes attributes of a file or directory
+   * 
+ */ public static final class setattrRequest extends - com.google.protobuf.GeneratedMessage { + com.google.protobuf.GeneratedMessage + implements setattrRequestOrBuilder { // Use setattrRequest.newBuilder() to construct. - private setattrRequest() { - initFields(); + private setattrRequest(com.google.protobuf.GeneratedMessage.Builder builder) { + super(builder); + this.unknownFields = builder.getUnknownFields(); } - private setattrRequest(boolean noInit) {} - + private setattrRequest(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); } + private static final setattrRequest defaultInstance; public static setattrRequest getDefaultInstance() { return defaultInstance; } - + public setattrRequest getDefaultInstanceForType() { return defaultInstance; } - + + private final com.google.protobuf.UnknownFieldSet unknownFields; + @java.lang.Override + public final com.google.protobuf.UnknownFieldSet + getUnknownFields() { + return this.unknownFields; + } + private setattrRequest( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + initFields(); + int mutable_bitField0_ = 0; + com.google.protobuf.UnknownFieldSet.Builder unknownFields = + com.google.protobuf.UnknownFieldSet.newBuilder(); + try { + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch (tag) { + case 0: + done = true; + break; + default: { + if (!parseUnknownField(input, unknownFields, + extensionRegistry, tag)) { + done = true; + } + break; + } + case 10: { + bitField0_ |= 0x00000001; + volumeName_ = input.readBytes(); + break; + } + case 18: { + bitField0_ |= 0x00000002; + path_ = input.readBytes(); + break; + } + case 26: { + org.xtreemfs.pbrpc.generatedinterfaces.MRC.Stat.Builder subBuilder = null; + if (((bitField0_ & 0x00000004) == 0x00000004)) { + subBuilder = stbuf_.toBuilder(); + } + stbuf_ = input.readMessage(org.xtreemfs.pbrpc.generatedinterfaces.MRC.Stat.PARSER, extensionRegistry); + if (subBuilder != null) { + subBuilder.mergeFrom(stbuf_); + stbuf_ = subBuilder.buildPartial(); + } + bitField0_ |= 0x00000004; + break; + } + case 37: { + bitField0_ |= 0x00000008; + toSet_ = input.readFixed32(); + break; + } + } + } + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(this); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException( + e.getMessage()).setUnfinishedMessage(this); + } finally { + this.unknownFields = unknownFields.build(); + makeExtensionsImmutable(); + } + } public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { return org.xtreemfs.pbrpc.generatedinterfaces.MRC.internal_static_xtreemfs_pbrpc_setattrRequest_descriptor; } - + protected com.google.protobuf.GeneratedMessage.FieldAccessorTable internalGetFieldAccessorTable() { - return org.xtreemfs.pbrpc.generatedinterfaces.MRC.internal_static_xtreemfs_pbrpc_setattrRequest_fieldAccessorTable; + return org.xtreemfs.pbrpc.generatedinterfaces.MRC.internal_static_xtreemfs_pbrpc_setattrRequest_fieldAccessorTable + .ensureFieldAccessorsInitialized( + org.xtreemfs.pbrpc.generatedinterfaces.MRC.setattrRequest.class, org.xtreemfs.pbrpc.generatedinterfaces.MRC.setattrRequest.Builder.class); + } + + public static com.google.protobuf.Parser PARSER = + new com.google.protobuf.AbstractParser() { + public setattrRequest parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return new setattrRequest(input, extensionRegistry); + } + }; + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; } - + + private int bitField0_; // required string volume_name = 1; public static final int VOLUME_NAME_FIELD_NUMBER = 1; - private boolean hasVolumeName; - private java.lang.String volumeName_ = ""; - public boolean hasVolumeName() { return hasVolumeName; } - public java.lang.String getVolumeName() { return volumeName_; } - + private java.lang.Object volumeName_; + /** + * required string volume_name = 1; + * + *
+     * the volume name
+     * 
+ */ + public boolean hasVolumeName() { + return ((bitField0_ & 0x00000001) == 0x00000001); + } + /** + * required string volume_name = 1; + * + *
+     * the volume name
+     * 
+ */ + public java.lang.String getVolumeName() { + java.lang.Object ref = volumeName_; + if (ref instanceof java.lang.String) { + return (java.lang.String) ref; + } else { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + if (bs.isValidUtf8()) { + volumeName_ = s; + } + return s; + } + } + /** + * required string volume_name = 1; + * + *
+     * the volume name
+     * 
+ */ + public com.google.protobuf.ByteString + getVolumeNameBytes() { + java.lang.Object ref = volumeName_; + if (ref instanceof java.lang.String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + volumeName_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + // required string path = 2; public static final int PATH_FIELD_NUMBER = 2; - private boolean hasPath; - private java.lang.String path_ = ""; - public boolean hasPath() { return hasPath; } - public java.lang.String getPath() { return path_; } - + private java.lang.Object path_; + /** + * required string path = 2; + * + *
+     * the path to the file or directory, relative to the volume root
+     * 
+ */ + public boolean hasPath() { + return ((bitField0_ & 0x00000002) == 0x00000002); + } + /** + * required string path = 2; + * + *
+     * the path to the file or directory, relative to the volume root
+     * 
+ */ + public java.lang.String getPath() { + java.lang.Object ref = path_; + if (ref instanceof java.lang.String) { + return (java.lang.String) ref; + } else { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + if (bs.isValidUtf8()) { + path_ = s; + } + return s; + } + } + /** + * required string path = 2; + * + *
+     * the path to the file or directory, relative to the volume root
+     * 
+ */ + public com.google.protobuf.ByteString + getPathBytes() { + java.lang.Object ref = path_; + if (ref instanceof java.lang.String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + path_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + // required .xtreemfs.pbrpc.Stat stbuf = 3; public static final int STBUF_FIELD_NUMBER = 3; - private boolean hasStbuf; private org.xtreemfs.pbrpc.generatedinterfaces.MRC.Stat stbuf_; - public boolean hasStbuf() { return hasStbuf; } - public org.xtreemfs.pbrpc.generatedinterfaces.MRC.Stat getStbuf() { return stbuf_; } - + /** + * required .xtreemfs.pbrpc.Stat stbuf = 3; + * + *
+     * a buffer containing the attributes to update
+     * 
+ */ + public boolean hasStbuf() { + return ((bitField0_ & 0x00000004) == 0x00000004); + } + /** + * required .xtreemfs.pbrpc.Stat stbuf = 3; + * + *
+     * a buffer containing the attributes to update
+     * 
+ */ + public org.xtreemfs.pbrpc.generatedinterfaces.MRC.Stat getStbuf() { + return stbuf_; + } + /** + * required .xtreemfs.pbrpc.Stat stbuf = 3; + * + *
+     * a buffer containing the attributes to update
+     * 
+ */ + public org.xtreemfs.pbrpc.generatedinterfaces.MRC.StatOrBuilder getStbufOrBuilder() { + return stbuf_; + } + // required fixed32 to_set = 4; public static final int TO_SET_FIELD_NUMBER = 4; - private boolean hasToSet; - private int toSet_ = 0; - public boolean hasToSet() { return hasToSet; } - public int getToSet() { return toSet_; } - + private int toSet_; + /** + * required fixed32 to_set = 4; + * + *
+     * a bitmap of Setattrs indicating which attributes to update
+     * 
+ */ + public boolean hasToSet() { + return ((bitField0_ & 0x00000008) == 0x00000008); + } + /** + * required fixed32 to_set = 4; + * + *
+     * a bitmap of Setattrs indicating which attributes to update
+     * 
+ */ + public int getToSet() { + return toSet_; + } + private void initFields() { + volumeName_ = ""; + path_ = ""; stbuf_ = org.xtreemfs.pbrpc.generatedinterfaces.MRC.Stat.getDefaultInstance(); + toSet_ = 0; } + private byte memoizedIsInitialized = -1; public final boolean isInitialized() { - if (!hasVolumeName) return false; - if (!hasPath) return false; - if (!hasStbuf) return false; - if (!hasToSet) return false; - if (!getStbuf().isInitialized()) return false; + byte isInitialized = memoizedIsInitialized; + if (isInitialized != -1) return isInitialized == 1; + + if (!hasVolumeName()) { + memoizedIsInitialized = 0; + return false; + } + if (!hasPath()) { + memoizedIsInitialized = 0; + return false; + } + if (!hasStbuf()) { + memoizedIsInitialized = 0; + return false; + } + if (!hasToSet()) { + memoizedIsInitialized = 0; + return false; + } + if (!getStbuf().isInitialized()) { + memoizedIsInitialized = 0; + return false; + } + memoizedIsInitialized = 1; return true; } - + public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException { getSerializedSize(); - if (hasVolumeName()) { - output.writeString(1, getVolumeName()); + if (((bitField0_ & 0x00000001) == 0x00000001)) { + output.writeBytes(1, getVolumeNameBytes()); } - if (hasPath()) { - output.writeString(2, getPath()); + if (((bitField0_ & 0x00000002) == 0x00000002)) { + output.writeBytes(2, getPathBytes()); } - if (hasStbuf()) { - output.writeMessage(3, getStbuf()); + if (((bitField0_ & 0x00000004) == 0x00000004)) { + output.writeMessage(3, stbuf_); } - if (hasToSet()) { - output.writeFixed32(4, getToSet()); + if (((bitField0_ & 0x00000008) == 0x00000008)) { + output.writeFixed32(4, toSet_); } getUnknownFields().writeTo(output); } - + private int memoizedSerializedSize = -1; public int getSerializedSize() { int size = memoizedSerializedSize; if (size != -1) return size; - + size = 0; - if (hasVolumeName()) { + if (((bitField0_ & 0x00000001) == 0x00000001)) { size += com.google.protobuf.CodedOutputStream - .computeStringSize(1, getVolumeName()); + .computeBytesSize(1, getVolumeNameBytes()); } - if (hasPath()) { + if (((bitField0_ & 0x00000002) == 0x00000002)) { size += com.google.protobuf.CodedOutputStream - .computeStringSize(2, getPath()); + .computeBytesSize(2, getPathBytes()); } - if (hasStbuf()) { + if (((bitField0_ & 0x00000004) == 0x00000004)) { size += com.google.protobuf.CodedOutputStream - .computeMessageSize(3, getStbuf()); + .computeMessageSize(3, stbuf_); } - if (hasToSet()) { + if (((bitField0_ & 0x00000008) == 0x00000008)) { size += com.google.protobuf.CodedOutputStream - .computeFixed32Size(4, getToSet()); + .computeFixed32Size(4, toSet_); } size += getUnknownFields().getSerializedSize(); memoizedSerializedSize = size; return size; } - + + private static final long serialVersionUID = 0L; + @java.lang.Override + protected java.lang.Object writeReplace() + throws java.io.ObjectStreamException { + return super.writeReplace(); + } + public static org.xtreemfs.pbrpc.generatedinterfaces.MRC.setattrRequest parseFrom( com.google.protobuf.ByteString data) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data).buildParsed(); + return PARSER.parseFrom(data); } public static org.xtreemfs.pbrpc.generatedinterfaces.MRC.setattrRequest parseFrom( com.google.protobuf.ByteString data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(data, extensionRegistry); } public static org.xtreemfs.pbrpc.generatedinterfaces.MRC.setattrRequest parseFrom(byte[] data) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data).buildParsed(); + return PARSER.parseFrom(data); } public static org.xtreemfs.pbrpc.generatedinterfaces.MRC.setattrRequest parseFrom( byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(data, extensionRegistry); } public static org.xtreemfs.pbrpc.generatedinterfaces.MRC.setattrRequest parseFrom(java.io.InputStream input) throws java.io.IOException { - return newBuilder().mergeFrom(input).buildParsed(); + return PARSER.parseFrom(input); } public static org.xtreemfs.pbrpc.generatedinterfaces.MRC.setattrRequest parseFrom( java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - return newBuilder().mergeFrom(input, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(input, extensionRegistry); } public static org.xtreemfs.pbrpc.generatedinterfaces.MRC.setattrRequest parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException { - Builder builder = newBuilder(); - if (builder.mergeDelimitedFrom(input)) { - return builder.buildParsed(); - } else { - return null; - } + return PARSER.parseDelimitedFrom(input); } public static org.xtreemfs.pbrpc.generatedinterfaces.MRC.setattrRequest parseDelimitedFrom( java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - Builder builder = newBuilder(); - if (builder.mergeDelimitedFrom(input, extensionRegistry)) { - return builder.buildParsed(); - } else { - return null; - } + return PARSER.parseDelimitedFrom(input, extensionRegistry); } public static org.xtreemfs.pbrpc.generatedinterfaces.MRC.setattrRequest parseFrom( com.google.protobuf.CodedInputStream input) throws java.io.IOException { - return newBuilder().mergeFrom(input).buildParsed(); + return PARSER.parseFrom(input); } public static org.xtreemfs.pbrpc.generatedinterfaces.MRC.setattrRequest parseFrom( com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - return newBuilder().mergeFrom(input, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(input, extensionRegistry); } - + public static Builder newBuilder() { return Builder.create(); } public Builder newBuilderForType() { return newBuilder(); } public static Builder newBuilder(org.xtreemfs.pbrpc.generatedinterfaces.MRC.setattrRequest prototype) { return newBuilder().mergeFrom(prototype); } public Builder toBuilder() { return newBuilder(this); } - + + @java.lang.Override + protected Builder newBuilderForType( + com.google.protobuf.GeneratedMessage.BuilderParent parent) { + Builder builder = new Builder(parent); + return builder; + } + /** + * Protobuf type {@code xtreemfs.pbrpc.setattrRequest} + * + *
+     * changes attributes of a file or directory
+     * 
+ */ public static final class Builder extends - com.google.protobuf.GeneratedMessage.Builder { - private org.xtreemfs.pbrpc.generatedinterfaces.MRC.setattrRequest result; - + com.google.protobuf.GeneratedMessage.Builder + implements org.xtreemfs.pbrpc.generatedinterfaces.MRC.setattrRequestOrBuilder { + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return org.xtreemfs.pbrpc.generatedinterfaces.MRC.internal_static_xtreemfs_pbrpc_setattrRequest_descriptor; + } + + protected com.google.protobuf.GeneratedMessage.FieldAccessorTable + internalGetFieldAccessorTable() { + return org.xtreemfs.pbrpc.generatedinterfaces.MRC.internal_static_xtreemfs_pbrpc_setattrRequest_fieldAccessorTable + .ensureFieldAccessorsInitialized( + org.xtreemfs.pbrpc.generatedinterfaces.MRC.setattrRequest.class, org.xtreemfs.pbrpc.generatedinterfaces.MRC.setattrRequest.Builder.class); + } + // Construct using org.xtreemfs.pbrpc.generatedinterfaces.MRC.setattrRequest.newBuilder() - private Builder() {} - - private static Builder create() { - Builder builder = new Builder(); - builder.result = new org.xtreemfs.pbrpc.generatedinterfaces.MRC.setattrRequest(); - return builder; + private Builder() { + maybeForceBuilderInitialization(); } - - protected org.xtreemfs.pbrpc.generatedinterfaces.MRC.setattrRequest internalGetResult() { - return result; + + private Builder( + com.google.protobuf.GeneratedMessage.BuilderParent parent) { + super(parent); + maybeForceBuilderInitialization(); + } + private void maybeForceBuilderInitialization() { + if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) { + getStbufFieldBuilder(); + } } - + private static Builder create() { + return new Builder(); + } + public Builder clear() { - if (result == null) { - throw new IllegalStateException( - "Cannot call clear() after build()."); + super.clear(); + volumeName_ = ""; + bitField0_ = (bitField0_ & ~0x00000001); + path_ = ""; + bitField0_ = (bitField0_ & ~0x00000002); + if (stbufBuilder_ == null) { + stbuf_ = org.xtreemfs.pbrpc.generatedinterfaces.MRC.Stat.getDefaultInstance(); + } else { + stbufBuilder_.clear(); } - result = new org.xtreemfs.pbrpc.generatedinterfaces.MRC.setattrRequest(); + bitField0_ = (bitField0_ & ~0x00000004); + toSet_ = 0; + bitField0_ = (bitField0_ & ~0x00000008); return this; } - + public Builder clone() { - return create().mergeFrom(result); + return create().mergeFrom(buildPartial()); } - + public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() { - return org.xtreemfs.pbrpc.generatedinterfaces.MRC.setattrRequest.getDescriptor(); + return org.xtreemfs.pbrpc.generatedinterfaces.MRC.internal_static_xtreemfs_pbrpc_setattrRequest_descriptor; } - + public org.xtreemfs.pbrpc.generatedinterfaces.MRC.setattrRequest getDefaultInstanceForType() { return org.xtreemfs.pbrpc.generatedinterfaces.MRC.setattrRequest.getDefaultInstance(); } - - public boolean isInitialized() { - return result.isInitialized(); - } + public org.xtreemfs.pbrpc.generatedinterfaces.MRC.setattrRequest build() { - if (result != null && !isInitialized()) { + org.xtreemfs.pbrpc.generatedinterfaces.MRC.setattrRequest result = buildPartial(); + if (!result.isInitialized()) { throw newUninitializedMessageException(result); } - return buildPartial(); - } - - private org.xtreemfs.pbrpc.generatedinterfaces.MRC.setattrRequest buildParsed() - throws com.google.protobuf.InvalidProtocolBufferException { - if (!isInitialized()) { - throw newUninitializedMessageException( - result).asInvalidProtocolBufferException(); - } - return buildPartial(); + return result; } - + public org.xtreemfs.pbrpc.generatedinterfaces.MRC.setattrRequest buildPartial() { - if (result == null) { - throw new IllegalStateException( - "build() has already been called on this Builder."); + org.xtreemfs.pbrpc.generatedinterfaces.MRC.setattrRequest result = new org.xtreemfs.pbrpc.generatedinterfaces.MRC.setattrRequest(this); + int from_bitField0_ = bitField0_; + int to_bitField0_ = 0; + if (((from_bitField0_ & 0x00000001) == 0x00000001)) { + to_bitField0_ |= 0x00000001; + } + result.volumeName_ = volumeName_; + if (((from_bitField0_ & 0x00000002) == 0x00000002)) { + to_bitField0_ |= 0x00000002; + } + result.path_ = path_; + if (((from_bitField0_ & 0x00000004) == 0x00000004)) { + to_bitField0_ |= 0x00000004; + } + if (stbufBuilder_ == null) { + result.stbuf_ = stbuf_; + } else { + result.stbuf_ = stbufBuilder_.build(); + } + if (((from_bitField0_ & 0x00000008) == 0x00000008)) { + to_bitField0_ |= 0x00000008; } - org.xtreemfs.pbrpc.generatedinterfaces.MRC.setattrRequest returnMe = result; - result = null; - return returnMe; + result.toSet_ = toSet_; + result.bitField0_ = to_bitField0_; + onBuilt(); + return result; } - + public Builder mergeFrom(com.google.protobuf.Message other) { if (other instanceof org.xtreemfs.pbrpc.generatedinterfaces.MRC.setattrRequest) { return mergeFrom((org.xtreemfs.pbrpc.generatedinterfaces.MRC.setattrRequest)other); @@ -10864,14 +26253,18 @@ public final class MRC { return this; } } - + public Builder mergeFrom(org.xtreemfs.pbrpc.generatedinterfaces.MRC.setattrRequest other) { if (other == org.xtreemfs.pbrpc.generatedinterfaces.MRC.setattrRequest.getDefaultInstance()) return this; if (other.hasVolumeName()) { - setVolumeName(other.getVolumeName()); + bitField0_ |= 0x00000001; + volumeName_ = other.volumeName_; + onChanged(); } if (other.hasPath()) { - setPath(other.getPath()); + bitField0_ |= 0x00000002; + path_ = other.path_; + onChanged(); } if (other.hasStbuf()) { mergeStbuf(other.getStbuf()); @@ -10882,444 +26275,1283 @@ public final class MRC { this.mergeUnknownFields(other.getUnknownFields()); return this; } - + + public final boolean isInitialized() { + if (!hasVolumeName()) { + + return false; + } + if (!hasPath()) { + + return false; + } + if (!hasStbuf()) { + + return false; + } + if (!hasToSet()) { + + return false; + } + if (!getStbuf().isInitialized()) { + + return false; + } + return true; + } + public Builder mergeFrom( com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - com.google.protobuf.UnknownFieldSet.Builder unknownFields = - com.google.protobuf.UnknownFieldSet.newBuilder( - this.getUnknownFields()); - while (true) { - int tag = input.readTag(); - switch (tag) { - case 0: - this.setUnknownFields(unknownFields.build()); - return this; - default: { - if (!parseUnknownField(input, unknownFields, - extensionRegistry, tag)) { - this.setUnknownFields(unknownFields.build()); - return this; - } - break; - } - case 10: { - setVolumeName(input.readString()); - break; - } - case 18: { - setPath(input.readString()); - break; - } - case 26: { - org.xtreemfs.pbrpc.generatedinterfaces.MRC.Stat.Builder subBuilder = org.xtreemfs.pbrpc.generatedinterfaces.MRC.Stat.newBuilder(); - if (hasStbuf()) { - subBuilder.mergeFrom(getStbuf()); - } - input.readMessage(subBuilder, extensionRegistry); - setStbuf(subBuilder.buildPartial()); - break; - } - case 37: { - setToSet(input.readFixed32()); - break; - } + org.xtreemfs.pbrpc.generatedinterfaces.MRC.setattrRequest parsedMessage = null; + try { + parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + parsedMessage = (org.xtreemfs.pbrpc.generatedinterfaces.MRC.setattrRequest) e.getUnfinishedMessage(); + throw e; + } finally { + if (parsedMessage != null) { + mergeFrom(parsedMessage); } } + return this; } - - + private int bitField0_; + // required string volume_name = 1; + private java.lang.Object volumeName_ = ""; + /** + * required string volume_name = 1; + * + *
+       * the volume name
+       * 
+ */ public boolean hasVolumeName() { - return result.hasVolumeName(); - } + return ((bitField0_ & 0x00000001) == 0x00000001); + } + /** + * required string volume_name = 1; + * + *
+       * the volume name
+       * 
+ */ public java.lang.String getVolumeName() { - return result.getVolumeName(); - } - public Builder setVolumeName(java.lang.String value) { + java.lang.Object ref = volumeName_; + if (!(ref instanceof java.lang.String)) { + java.lang.String s = ((com.google.protobuf.ByteString) ref) + .toStringUtf8(); + volumeName_ = s; + return s; + } else { + return (java.lang.String) ref; + } + } + /** + * required string volume_name = 1; + * + *
+       * the volume name
+       * 
+ */ + public com.google.protobuf.ByteString + getVolumeNameBytes() { + java.lang.Object ref = volumeName_; + if (ref instanceof String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + volumeName_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + /** + * required string volume_name = 1; + * + *
+       * the volume name
+       * 
+ */ + public Builder setVolumeName( + java.lang.String value) { if (value == null) { throw new NullPointerException(); } - result.hasVolumeName = true; - result.volumeName_ = value; - return this; - } + bitField0_ |= 0x00000001; + volumeName_ = value; + onChanged(); + return this; + } + /** + * required string volume_name = 1; + * + *
+       * the volume name
+       * 
+ */ public Builder clearVolumeName() { - result.hasVolumeName = false; - result.volumeName_ = getDefaultInstance().getVolumeName(); + bitField0_ = (bitField0_ & ~0x00000001); + volumeName_ = getDefaultInstance().getVolumeName(); + onChanged(); + return this; + } + /** + * required string volume_name = 1; + * + *
+       * the volume name
+       * 
+ */ + public Builder setVolumeNameBytes( + com.google.protobuf.ByteString value) { + if (value == null) { + throw new NullPointerException(); + } + bitField0_ |= 0x00000001; + volumeName_ = value; + onChanged(); return this; } - + // required string path = 2; + private java.lang.Object path_ = ""; + /** + * required string path = 2; + * + *
+       * the path to the file or directory, relative to the volume root
+       * 
+ */ public boolean hasPath() { - return result.hasPath(); - } + return ((bitField0_ & 0x00000002) == 0x00000002); + } + /** + * required string path = 2; + * + *
+       * the path to the file or directory, relative to the volume root
+       * 
+ */ public java.lang.String getPath() { - return result.getPath(); - } - public Builder setPath(java.lang.String value) { + java.lang.Object ref = path_; + if (!(ref instanceof java.lang.String)) { + java.lang.String s = ((com.google.protobuf.ByteString) ref) + .toStringUtf8(); + path_ = s; + return s; + } else { + return (java.lang.String) ref; + } + } + /** + * required string path = 2; + * + *
+       * the path to the file or directory, relative to the volume root
+       * 
+ */ + public com.google.protobuf.ByteString + getPathBytes() { + java.lang.Object ref = path_; + if (ref instanceof String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + path_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + /** + * required string path = 2; + * + *
+       * the path to the file or directory, relative to the volume root
+       * 
+ */ + public Builder setPath( + java.lang.String value) { if (value == null) { throw new NullPointerException(); } - result.hasPath = true; - result.path_ = value; - return this; - } + bitField0_ |= 0x00000002; + path_ = value; + onChanged(); + return this; + } + /** + * required string path = 2; + * + *
+       * the path to the file or directory, relative to the volume root
+       * 
+ */ public Builder clearPath() { - result.hasPath = false; - result.path_ = getDefaultInstance().getPath(); + bitField0_ = (bitField0_ & ~0x00000002); + path_ = getDefaultInstance().getPath(); + onChanged(); + return this; + } + /** + * required string path = 2; + * + *
+       * the path to the file or directory, relative to the volume root
+       * 
+ */ + public Builder setPathBytes( + com.google.protobuf.ByteString value) { + if (value == null) { + throw new NullPointerException(); + } + bitField0_ |= 0x00000002; + path_ = value; + onChanged(); return this; } - + // required .xtreemfs.pbrpc.Stat stbuf = 3; + private org.xtreemfs.pbrpc.generatedinterfaces.MRC.Stat stbuf_ = org.xtreemfs.pbrpc.generatedinterfaces.MRC.Stat.getDefaultInstance(); + private com.google.protobuf.SingleFieldBuilder< + org.xtreemfs.pbrpc.generatedinterfaces.MRC.Stat, org.xtreemfs.pbrpc.generatedinterfaces.MRC.Stat.Builder, org.xtreemfs.pbrpc.generatedinterfaces.MRC.StatOrBuilder> stbufBuilder_; + /** + * required .xtreemfs.pbrpc.Stat stbuf = 3; + * + *
+       * a buffer containing the attributes to update
+       * 
+ */ public boolean hasStbuf() { - return result.hasStbuf(); - } + return ((bitField0_ & 0x00000004) == 0x00000004); + } + /** + * required .xtreemfs.pbrpc.Stat stbuf = 3; + * + *
+       * a buffer containing the attributes to update
+       * 
+ */ public org.xtreemfs.pbrpc.generatedinterfaces.MRC.Stat getStbuf() { - return result.getStbuf(); + if (stbufBuilder_ == null) { + return stbuf_; + } else { + return stbufBuilder_.getMessage(); + } } + /** + * required .xtreemfs.pbrpc.Stat stbuf = 3; + * + *
+       * a buffer containing the attributes to update
+       * 
+ */ public Builder setStbuf(org.xtreemfs.pbrpc.generatedinterfaces.MRC.Stat value) { - if (value == null) { - throw new NullPointerException(); + if (stbufBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + stbuf_ = value; + onChanged(); + } else { + stbufBuilder_.setMessage(value); + } + bitField0_ |= 0x00000004; + return this; + } + /** + * required .xtreemfs.pbrpc.Stat stbuf = 3; + * + *
+       * a buffer containing the attributes to update
+       * 
+ */ + public Builder setStbuf( + org.xtreemfs.pbrpc.generatedinterfaces.MRC.Stat.Builder builderForValue) { + if (stbufBuilder_ == null) { + stbuf_ = builderForValue.build(); + onChanged(); + } else { + stbufBuilder_.setMessage(builderForValue.build()); } - result.hasStbuf = true; - result.stbuf_ = value; + bitField0_ |= 0x00000004; return this; } - public Builder setStbuf(org.xtreemfs.pbrpc.generatedinterfaces.MRC.Stat.Builder builderForValue) { - result.hasStbuf = true; - result.stbuf_ = builderForValue.build(); + /** + * required .xtreemfs.pbrpc.Stat stbuf = 3; + * + *
+       * a buffer containing the attributes to update
+       * 
+ */ + public Builder mergeStbuf(org.xtreemfs.pbrpc.generatedinterfaces.MRC.Stat value) { + if (stbufBuilder_ == null) { + if (((bitField0_ & 0x00000004) == 0x00000004) && + stbuf_ != org.xtreemfs.pbrpc.generatedinterfaces.MRC.Stat.getDefaultInstance()) { + stbuf_ = + org.xtreemfs.pbrpc.generatedinterfaces.MRC.Stat.newBuilder(stbuf_).mergeFrom(value).buildPartial(); + } else { + stbuf_ = value; + } + onChanged(); + } else { + stbufBuilder_.mergeFrom(value); + } + bitField0_ |= 0x00000004; return this; } - public Builder mergeStbuf(org.xtreemfs.pbrpc.generatedinterfaces.MRC.Stat value) { - if (result.hasStbuf() && - result.stbuf_ != org.xtreemfs.pbrpc.generatedinterfaces.MRC.Stat.getDefaultInstance()) { - result.stbuf_ = - org.xtreemfs.pbrpc.generatedinterfaces.MRC.Stat.newBuilder(result.stbuf_).mergeFrom(value).buildPartial(); + /** + * required .xtreemfs.pbrpc.Stat stbuf = 3; + * + *
+       * a buffer containing the attributes to update
+       * 
+ */ + public Builder clearStbuf() { + if (stbufBuilder_ == null) { + stbuf_ = org.xtreemfs.pbrpc.generatedinterfaces.MRC.Stat.getDefaultInstance(); + onChanged(); + } else { + stbufBuilder_.clear(); + } + bitField0_ = (bitField0_ & ~0x00000004); + return this; + } + /** + * required .xtreemfs.pbrpc.Stat stbuf = 3; + * + *
+       * a buffer containing the attributes to update
+       * 
+ */ + public org.xtreemfs.pbrpc.generatedinterfaces.MRC.Stat.Builder getStbufBuilder() { + bitField0_ |= 0x00000004; + onChanged(); + return getStbufFieldBuilder().getBuilder(); + } + /** + * required .xtreemfs.pbrpc.Stat stbuf = 3; + * + *
+       * a buffer containing the attributes to update
+       * 
+ */ + public org.xtreemfs.pbrpc.generatedinterfaces.MRC.StatOrBuilder getStbufOrBuilder() { + if (stbufBuilder_ != null) { + return stbufBuilder_.getMessageOrBuilder(); } else { - result.stbuf_ = value; + return stbuf_; + } + } + /** + * required .xtreemfs.pbrpc.Stat stbuf = 3; + * + *
+       * a buffer containing the attributes to update
+       * 
+ */ + private com.google.protobuf.SingleFieldBuilder< + org.xtreemfs.pbrpc.generatedinterfaces.MRC.Stat, org.xtreemfs.pbrpc.generatedinterfaces.MRC.Stat.Builder, org.xtreemfs.pbrpc.generatedinterfaces.MRC.StatOrBuilder> + getStbufFieldBuilder() { + if (stbufBuilder_ == null) { + stbufBuilder_ = new com.google.protobuf.SingleFieldBuilder< + org.xtreemfs.pbrpc.generatedinterfaces.MRC.Stat, org.xtreemfs.pbrpc.generatedinterfaces.MRC.Stat.Builder, org.xtreemfs.pbrpc.generatedinterfaces.MRC.StatOrBuilder>( + stbuf_, + getParentForChildren(), + isClean()); + stbuf_ = null; + } + return stbufBuilder_; + } + + // required fixed32 to_set = 4; + private int toSet_ ; + /** + * required fixed32 to_set = 4; + * + *
+       * a bitmap of Setattrs indicating which attributes to update
+       * 
+ */ + public boolean hasToSet() { + return ((bitField0_ & 0x00000008) == 0x00000008); + } + /** + * required fixed32 to_set = 4; + * + *
+       * a bitmap of Setattrs indicating which attributes to update
+       * 
+ */ + public int getToSet() { + return toSet_; + } + /** + * required fixed32 to_set = 4; + * + *
+       * a bitmap of Setattrs indicating which attributes to update
+       * 
+ */ + public Builder setToSet(int value) { + bitField0_ |= 0x00000008; + toSet_ = value; + onChanged(); + return this; + } + /** + * required fixed32 to_set = 4; + * + *
+       * a bitmap of Setattrs indicating which attributes to update
+       * 
+ */ + public Builder clearToSet() { + bitField0_ = (bitField0_ & ~0x00000008); + toSet_ = 0; + onChanged(); + return this; + } + + // @@protoc_insertion_point(builder_scope:xtreemfs.pbrpc.setattrRequest) + } + + static { + defaultInstance = new setattrRequest(true); + defaultInstance.initFields(); + } + + // @@protoc_insertion_point(class_scope:xtreemfs.pbrpc.setattrRequest) + } + + public interface setxattrRequestOrBuilder + extends com.google.protobuf.MessageOrBuilder { + + // required string volume_name = 1; + /** + * required string volume_name = 1; + * + *
+     * the volume name
+     * 
+ */ + boolean hasVolumeName(); + /** + * required string volume_name = 1; + * + *
+     * the volume name
+     * 
+ */ + java.lang.String getVolumeName(); + /** + * required string volume_name = 1; + * + *
+     * the volume name
+     * 
+ */ + com.google.protobuf.ByteString + getVolumeNameBytes(); + + // required string path = 2; + /** + * required string path = 2; + * + *
+     * the path to the file or directory, relative to the volume root
+     * 
+ */ + boolean hasPath(); + /** + * required string path = 2; + * + *
+     * the path to the file or directory, relative to the volume root
+     * 
+ */ + java.lang.String getPath(); + /** + * required string path = 2; + * + *
+     * the path to the file or directory, relative to the volume root
+     * 
+ */ + com.google.protobuf.ByteString + getPathBytes(); + + // required string name = 3; + /** + * required string name = 3; + * + *
+     * the name of the extended attribute to set
+     * 
+ */ + boolean hasName(); + /** + * required string name = 3; + * + *
+     * the name of the extended attribute to set
+     * 
+ */ + java.lang.String getName(); + /** + * required string name = 3; + * + *
+     * the name of the extended attribute to set
+     * 
+ */ + com.google.protobuf.ByteString + getNameBytes(); + + // required string value = 4; + /** + * required string value = 4; + * + *
+     * the (new) value for the extended attribute to set
+     * 
+ */ + boolean hasValue(); + /** + * required string value = 4; + * + *
+     * the (new) value for the extended attribute to set
+     * 
+ */ + java.lang.String getValue(); + /** + * required string value = 4; + * + *
+     * the (new) value for the extended attribute to set
+     * 
+ */ + com.google.protobuf.ByteString + getValueBytes(); + + // optional bytes value_bytes_string = 6; + /** + * optional bytes value_bytes_string = 6; + * + *
+     * (new) value in bytes, see XAttr for explanation.
+     * 
+ */ + boolean hasValueBytesString(); + /** + * optional bytes value_bytes_string = 6; + * + *
+     * (new) value in bytes, see XAttr for explanation.
+     * 
+ */ + com.google.protobuf.ByteString getValueBytesString(); + + // required fixed32 flags = 5; + /** + * required fixed32 flags = 5; + * + *
+     * flags indicating whether the attribute is supposed to be created or
+     * replaced (see XATTR_FLAGS)
+     * 
+ */ + boolean hasFlags(); + /** + * required fixed32 flags = 5; + * + *
+     * flags indicating whether the attribute is supposed to be created or
+     * replaced (see XATTR_FLAGS)
+     * 
+ */ + int getFlags(); + } + /** + * Protobuf type {@code xtreemfs.pbrpc.setxattrRequest} + * + *
+   * sets an extended attribute of a file or directory
+   * 
+ */ + public static final class setxattrRequest extends + com.google.protobuf.GeneratedMessage + implements setxattrRequestOrBuilder { + // Use setxattrRequest.newBuilder() to construct. + private setxattrRequest(com.google.protobuf.GeneratedMessage.Builder builder) { + super(builder); + this.unknownFields = builder.getUnknownFields(); + } + private setxattrRequest(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); } + + private static final setxattrRequest defaultInstance; + public static setxattrRequest getDefaultInstance() { + return defaultInstance; + } + + public setxattrRequest getDefaultInstanceForType() { + return defaultInstance; + } + + private final com.google.protobuf.UnknownFieldSet unknownFields; + @java.lang.Override + public final com.google.protobuf.UnknownFieldSet + getUnknownFields() { + return this.unknownFields; + } + private setxattrRequest( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + initFields(); + int mutable_bitField0_ = 0; + com.google.protobuf.UnknownFieldSet.Builder unknownFields = + com.google.protobuf.UnknownFieldSet.newBuilder(); + try { + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch (tag) { + case 0: + done = true; + break; + default: { + if (!parseUnknownField(input, unknownFields, + extensionRegistry, tag)) { + done = true; + } + break; + } + case 10: { + bitField0_ |= 0x00000001; + volumeName_ = input.readBytes(); + break; + } + case 18: { + bitField0_ |= 0x00000002; + path_ = input.readBytes(); + break; + } + case 26: { + bitField0_ |= 0x00000004; + name_ = input.readBytes(); + break; + } + case 34: { + bitField0_ |= 0x00000008; + value_ = input.readBytes(); + break; + } + case 45: { + bitField0_ |= 0x00000020; + flags_ = input.readFixed32(); + break; + } + case 50: { + bitField0_ |= 0x00000010; + valueBytesString_ = input.readBytes(); + break; + } + } } - result.hasStbuf = true; - return this; - } - public Builder clearStbuf() { - result.hasStbuf = false; - result.stbuf_ = org.xtreemfs.pbrpc.generatedinterfaces.MRC.Stat.getDefaultInstance(); - return this; - } - - // required fixed32 to_set = 4; - public boolean hasToSet() { - return result.hasToSet(); - } - public int getToSet() { - return result.getToSet(); - } - public Builder setToSet(int value) { - result.hasToSet = true; - result.toSet_ = value; - return this; + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(this); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException( + e.getMessage()).setUnfinishedMessage(this); + } finally { + this.unknownFields = unknownFields.build(); + makeExtensionsImmutable(); } - public Builder clearToSet() { - result.hasToSet = false; - result.toSet_ = 0; - return this; - } - - // @@protoc_insertion_point(builder_scope:xtreemfs.pbrpc.setattrRequest) - } - - static { - defaultInstance = new setattrRequest(true); - org.xtreemfs.pbrpc.generatedinterfaces.MRC.internalForceInit(); - defaultInstance.initFields(); - } - - // @@protoc_insertion_point(class_scope:xtreemfs.pbrpc.setattrRequest) - } - - public static final class setxattrRequest extends - com.google.protobuf.GeneratedMessage { - // Use setxattrRequest.newBuilder() to construct. - private setxattrRequest() { - initFields(); - } - private setxattrRequest(boolean noInit) {} - - private static final setxattrRequest defaultInstance; - public static setxattrRequest getDefaultInstance() { - return defaultInstance; - } - - public setxattrRequest getDefaultInstanceForType() { - return defaultInstance; } - public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { return org.xtreemfs.pbrpc.generatedinterfaces.MRC.internal_static_xtreemfs_pbrpc_setxattrRequest_descriptor; } - + protected com.google.protobuf.GeneratedMessage.FieldAccessorTable internalGetFieldAccessorTable() { - return org.xtreemfs.pbrpc.generatedinterfaces.MRC.internal_static_xtreemfs_pbrpc_setxattrRequest_fieldAccessorTable; + return org.xtreemfs.pbrpc.generatedinterfaces.MRC.internal_static_xtreemfs_pbrpc_setxattrRequest_fieldAccessorTable + .ensureFieldAccessorsInitialized( + org.xtreemfs.pbrpc.generatedinterfaces.MRC.setxattrRequest.class, org.xtreemfs.pbrpc.generatedinterfaces.MRC.setxattrRequest.Builder.class); + } + + public static com.google.protobuf.Parser PARSER = + new com.google.protobuf.AbstractParser() { + public setxattrRequest parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return new setxattrRequest(input, extensionRegistry); + } + }; + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; } - + + private int bitField0_; // required string volume_name = 1; public static final int VOLUME_NAME_FIELD_NUMBER = 1; - private boolean hasVolumeName; - private java.lang.String volumeName_ = ""; - public boolean hasVolumeName() { return hasVolumeName; } - public java.lang.String getVolumeName() { return volumeName_; } - + private java.lang.Object volumeName_; + /** + * required string volume_name = 1; + * + *
+     * the volume name
+     * 
+ */ + public boolean hasVolumeName() { + return ((bitField0_ & 0x00000001) == 0x00000001); + } + /** + * required string volume_name = 1; + * + *
+     * the volume name
+     * 
+ */ + public java.lang.String getVolumeName() { + java.lang.Object ref = volumeName_; + if (ref instanceof java.lang.String) { + return (java.lang.String) ref; + } else { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + if (bs.isValidUtf8()) { + volumeName_ = s; + } + return s; + } + } + /** + * required string volume_name = 1; + * + *
+     * the volume name
+     * 
+ */ + public com.google.protobuf.ByteString + getVolumeNameBytes() { + java.lang.Object ref = volumeName_; + if (ref instanceof java.lang.String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + volumeName_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + // required string path = 2; public static final int PATH_FIELD_NUMBER = 2; - private boolean hasPath; - private java.lang.String path_ = ""; - public boolean hasPath() { return hasPath; } - public java.lang.String getPath() { return path_; } - + private java.lang.Object path_; + /** + * required string path = 2; + * + *
+     * the path to the file or directory, relative to the volume root
+     * 
+ */ + public boolean hasPath() { + return ((bitField0_ & 0x00000002) == 0x00000002); + } + /** + * required string path = 2; + * + *
+     * the path to the file or directory, relative to the volume root
+     * 
+ */ + public java.lang.String getPath() { + java.lang.Object ref = path_; + if (ref instanceof java.lang.String) { + return (java.lang.String) ref; + } else { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + if (bs.isValidUtf8()) { + path_ = s; + } + return s; + } + } + /** + * required string path = 2; + * + *
+     * the path to the file or directory, relative to the volume root
+     * 
+ */ + public com.google.protobuf.ByteString + getPathBytes() { + java.lang.Object ref = path_; + if (ref instanceof java.lang.String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + path_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + // required string name = 3; public static final int NAME_FIELD_NUMBER = 3; - private boolean hasName; - private java.lang.String name_ = ""; - public boolean hasName() { return hasName; } - public java.lang.String getName() { return name_; } - + private java.lang.Object name_; + /** + * required string name = 3; + * + *
+     * the name of the extended attribute to set
+     * 
+ */ + public boolean hasName() { + return ((bitField0_ & 0x00000004) == 0x00000004); + } + /** + * required string name = 3; + * + *
+     * the name of the extended attribute to set
+     * 
+ */ + public java.lang.String getName() { + java.lang.Object ref = name_; + if (ref instanceof java.lang.String) { + return (java.lang.String) ref; + } else { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + if (bs.isValidUtf8()) { + name_ = s; + } + return s; + } + } + /** + * required string name = 3; + * + *
+     * the name of the extended attribute to set
+     * 
+ */ + public com.google.protobuf.ByteString + getNameBytes() { + java.lang.Object ref = name_; + if (ref instanceof java.lang.String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + name_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + // required string value = 4; public static final int VALUE_FIELD_NUMBER = 4; - private boolean hasValue; - private java.lang.String value_ = ""; - public boolean hasValue() { return hasValue; } - public java.lang.String getValue() { return value_; } - - // optional bytes value_bytes = 6; - public static final int VALUE_BYTES_FIELD_NUMBER = 6; - private boolean hasValueBytes; - private com.google.protobuf.ByteString valueBytes_ = com.google.protobuf.ByteString.EMPTY; - public boolean hasValueBytes() { return hasValueBytes; } - public com.google.protobuf.ByteString getValueBytes() { return valueBytes_; } - + private java.lang.Object value_; + /** + * required string value = 4; + * + *
+     * the (new) value for the extended attribute to set
+     * 
+ */ + public boolean hasValue() { + return ((bitField0_ & 0x00000008) == 0x00000008); + } + /** + * required string value = 4; + * + *
+     * the (new) value for the extended attribute to set
+     * 
+ */ + public java.lang.String getValue() { + java.lang.Object ref = value_; + if (ref instanceof java.lang.String) { + return (java.lang.String) ref; + } else { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + if (bs.isValidUtf8()) { + value_ = s; + } + return s; + } + } + /** + * required string value = 4; + * + *
+     * the (new) value for the extended attribute to set
+     * 
+ */ + public com.google.protobuf.ByteString + getValueBytes() { + java.lang.Object ref = value_; + if (ref instanceof java.lang.String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + value_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + + // optional bytes value_bytes_string = 6; + public static final int VALUE_BYTES_STRING_FIELD_NUMBER = 6; + private com.google.protobuf.ByteString valueBytesString_; + /** + * optional bytes value_bytes_string = 6; + * + *
+     * (new) value in bytes, see XAttr for explanation.
+     * 
+ */ + public boolean hasValueBytesString() { + return ((bitField0_ & 0x00000010) == 0x00000010); + } + /** + * optional bytes value_bytes_string = 6; + * + *
+     * (new) value in bytes, see XAttr for explanation.
+     * 
+ */ + public com.google.protobuf.ByteString getValueBytesString() { + return valueBytesString_; + } + // required fixed32 flags = 5; public static final int FLAGS_FIELD_NUMBER = 5; - private boolean hasFlags; - private int flags_ = 0; - public boolean hasFlags() { return hasFlags; } - public int getFlags() { return flags_; } - - private void initFields() { + private int flags_; + /** + * required fixed32 flags = 5; + * + *
+     * flags indicating whether the attribute is supposed to be created or
+     * replaced (see XATTR_FLAGS)
+     * 
+ */ + public boolean hasFlags() { + return ((bitField0_ & 0x00000020) == 0x00000020); + } + /** + * required fixed32 flags = 5; + * + *
+     * flags indicating whether the attribute is supposed to be created or
+     * replaced (see XATTR_FLAGS)
+     * 
+ */ + public int getFlags() { + return flags_; } + + private void initFields() { + volumeName_ = ""; + path_ = ""; + name_ = ""; + value_ = ""; + valueBytesString_ = com.google.protobuf.ByteString.EMPTY; + flags_ = 0; + } + private byte memoizedIsInitialized = -1; public final boolean isInitialized() { - if (!hasVolumeName) return false; - if (!hasPath) return false; - if (!hasName) return false; - if (!hasValue) return false; - if (!hasFlags) return false; + byte isInitialized = memoizedIsInitialized; + if (isInitialized != -1) return isInitialized == 1; + + if (!hasVolumeName()) { + memoizedIsInitialized = 0; + return false; + } + if (!hasPath()) { + memoizedIsInitialized = 0; + return false; + } + if (!hasName()) { + memoizedIsInitialized = 0; + return false; + } + if (!hasValue()) { + memoizedIsInitialized = 0; + return false; + } + if (!hasFlags()) { + memoizedIsInitialized = 0; + return false; + } + memoizedIsInitialized = 1; return true; } - + public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException { getSerializedSize(); - if (hasVolumeName()) { - output.writeString(1, getVolumeName()); + if (((bitField0_ & 0x00000001) == 0x00000001)) { + output.writeBytes(1, getVolumeNameBytes()); } - if (hasPath()) { - output.writeString(2, getPath()); + if (((bitField0_ & 0x00000002) == 0x00000002)) { + output.writeBytes(2, getPathBytes()); } - if (hasName()) { - output.writeString(3, getName()); + if (((bitField0_ & 0x00000004) == 0x00000004)) { + output.writeBytes(3, getNameBytes()); } - if (hasValue()) { - output.writeString(4, getValue()); + if (((bitField0_ & 0x00000008) == 0x00000008)) { + output.writeBytes(4, getValueBytes()); } - if (hasFlags()) { - output.writeFixed32(5, getFlags()); + if (((bitField0_ & 0x00000020) == 0x00000020)) { + output.writeFixed32(5, flags_); } - if (hasValueBytes()) { - output.writeBytes(6, getValueBytes()); + if (((bitField0_ & 0x00000010) == 0x00000010)) { + output.writeBytes(6, valueBytesString_); } getUnknownFields().writeTo(output); } - + private int memoizedSerializedSize = -1; public int getSerializedSize() { int size = memoizedSerializedSize; if (size != -1) return size; - + size = 0; - if (hasVolumeName()) { + if (((bitField0_ & 0x00000001) == 0x00000001)) { size += com.google.protobuf.CodedOutputStream - .computeStringSize(1, getVolumeName()); + .computeBytesSize(1, getVolumeNameBytes()); } - if (hasPath()) { + if (((bitField0_ & 0x00000002) == 0x00000002)) { size += com.google.protobuf.CodedOutputStream - .computeStringSize(2, getPath()); + .computeBytesSize(2, getPathBytes()); } - if (hasName()) { + if (((bitField0_ & 0x00000004) == 0x00000004)) { size += com.google.protobuf.CodedOutputStream - .computeStringSize(3, getName()); + .computeBytesSize(3, getNameBytes()); } - if (hasValue()) { + if (((bitField0_ & 0x00000008) == 0x00000008)) { size += com.google.protobuf.CodedOutputStream - .computeStringSize(4, getValue()); + .computeBytesSize(4, getValueBytes()); } - if (hasFlags()) { + if (((bitField0_ & 0x00000020) == 0x00000020)) { size += com.google.protobuf.CodedOutputStream - .computeFixed32Size(5, getFlags()); + .computeFixed32Size(5, flags_); } - if (hasValueBytes()) { + if (((bitField0_ & 0x00000010) == 0x00000010)) { size += com.google.protobuf.CodedOutputStream - .computeBytesSize(6, getValueBytes()); + .computeBytesSize(6, valueBytesString_); } size += getUnknownFields().getSerializedSize(); memoizedSerializedSize = size; return size; } - + + private static final long serialVersionUID = 0L; + @java.lang.Override + protected java.lang.Object writeReplace() + throws java.io.ObjectStreamException { + return super.writeReplace(); + } + public static org.xtreemfs.pbrpc.generatedinterfaces.MRC.setxattrRequest parseFrom( com.google.protobuf.ByteString data) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data).buildParsed(); + return PARSER.parseFrom(data); } public static org.xtreemfs.pbrpc.generatedinterfaces.MRC.setxattrRequest parseFrom( com.google.protobuf.ByteString data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(data, extensionRegistry); } public static org.xtreemfs.pbrpc.generatedinterfaces.MRC.setxattrRequest parseFrom(byte[] data) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data).buildParsed(); + return PARSER.parseFrom(data); } public static org.xtreemfs.pbrpc.generatedinterfaces.MRC.setxattrRequest parseFrom( byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(data, extensionRegistry); } public static org.xtreemfs.pbrpc.generatedinterfaces.MRC.setxattrRequest parseFrom(java.io.InputStream input) throws java.io.IOException { - return newBuilder().mergeFrom(input).buildParsed(); + return PARSER.parseFrom(input); } public static org.xtreemfs.pbrpc.generatedinterfaces.MRC.setxattrRequest parseFrom( java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - return newBuilder().mergeFrom(input, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(input, extensionRegistry); } public static org.xtreemfs.pbrpc.generatedinterfaces.MRC.setxattrRequest parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException { - Builder builder = newBuilder(); - if (builder.mergeDelimitedFrom(input)) { - return builder.buildParsed(); - } else { - return null; - } + return PARSER.parseDelimitedFrom(input); } public static org.xtreemfs.pbrpc.generatedinterfaces.MRC.setxattrRequest parseDelimitedFrom( java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - Builder builder = newBuilder(); - if (builder.mergeDelimitedFrom(input, extensionRegistry)) { - return builder.buildParsed(); - } else { - return null; - } + return PARSER.parseDelimitedFrom(input, extensionRegistry); } public static org.xtreemfs.pbrpc.generatedinterfaces.MRC.setxattrRequest parseFrom( com.google.protobuf.CodedInputStream input) throws java.io.IOException { - return newBuilder().mergeFrom(input).buildParsed(); + return PARSER.parseFrom(input); } public static org.xtreemfs.pbrpc.generatedinterfaces.MRC.setxattrRequest parseFrom( com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - return newBuilder().mergeFrom(input, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(input, extensionRegistry); } - + public static Builder newBuilder() { return Builder.create(); } public Builder newBuilderForType() { return newBuilder(); } public static Builder newBuilder(org.xtreemfs.pbrpc.generatedinterfaces.MRC.setxattrRequest prototype) { return newBuilder().mergeFrom(prototype); } public Builder toBuilder() { return newBuilder(this); } - + + @java.lang.Override + protected Builder newBuilderForType( + com.google.protobuf.GeneratedMessage.BuilderParent parent) { + Builder builder = new Builder(parent); + return builder; + } + /** + * Protobuf type {@code xtreemfs.pbrpc.setxattrRequest} + * + *
+     * sets an extended attribute of a file or directory
+     * 
+ */ public static final class Builder extends - com.google.protobuf.GeneratedMessage.Builder { - private org.xtreemfs.pbrpc.generatedinterfaces.MRC.setxattrRequest result; - + com.google.protobuf.GeneratedMessage.Builder + implements org.xtreemfs.pbrpc.generatedinterfaces.MRC.setxattrRequestOrBuilder { + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return org.xtreemfs.pbrpc.generatedinterfaces.MRC.internal_static_xtreemfs_pbrpc_setxattrRequest_descriptor; + } + + protected com.google.protobuf.GeneratedMessage.FieldAccessorTable + internalGetFieldAccessorTable() { + return org.xtreemfs.pbrpc.generatedinterfaces.MRC.internal_static_xtreemfs_pbrpc_setxattrRequest_fieldAccessorTable + .ensureFieldAccessorsInitialized( + org.xtreemfs.pbrpc.generatedinterfaces.MRC.setxattrRequest.class, org.xtreemfs.pbrpc.generatedinterfaces.MRC.setxattrRequest.Builder.class); + } + // Construct using org.xtreemfs.pbrpc.generatedinterfaces.MRC.setxattrRequest.newBuilder() - private Builder() {} - - private static Builder create() { - Builder builder = new Builder(); - builder.result = new org.xtreemfs.pbrpc.generatedinterfaces.MRC.setxattrRequest(); - return builder; + private Builder() { + maybeForceBuilderInitialization(); } - - protected org.xtreemfs.pbrpc.generatedinterfaces.MRC.setxattrRequest internalGetResult() { - return result; + + private Builder( + com.google.protobuf.GeneratedMessage.BuilderParent parent) { + super(parent); + maybeForceBuilderInitialization(); } - - public Builder clear() { - if (result == null) { - throw new IllegalStateException( - "Cannot call clear() after build()."); + private void maybeForceBuilderInitialization() { + if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) { } - result = new org.xtreemfs.pbrpc.generatedinterfaces.MRC.setxattrRequest(); + } + private static Builder create() { + return new Builder(); + } + + public Builder clear() { + super.clear(); + volumeName_ = ""; + bitField0_ = (bitField0_ & ~0x00000001); + path_ = ""; + bitField0_ = (bitField0_ & ~0x00000002); + name_ = ""; + bitField0_ = (bitField0_ & ~0x00000004); + value_ = ""; + bitField0_ = (bitField0_ & ~0x00000008); + valueBytesString_ = com.google.protobuf.ByteString.EMPTY; + bitField0_ = (bitField0_ & ~0x00000010); + flags_ = 0; + bitField0_ = (bitField0_ & ~0x00000020); return this; } - + public Builder clone() { - return create().mergeFrom(result); + return create().mergeFrom(buildPartial()); } - + public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() { - return org.xtreemfs.pbrpc.generatedinterfaces.MRC.setxattrRequest.getDescriptor(); + return org.xtreemfs.pbrpc.generatedinterfaces.MRC.internal_static_xtreemfs_pbrpc_setxattrRequest_descriptor; } - + public org.xtreemfs.pbrpc.generatedinterfaces.MRC.setxattrRequest getDefaultInstanceForType() { return org.xtreemfs.pbrpc.generatedinterfaces.MRC.setxattrRequest.getDefaultInstance(); } - - public boolean isInitialized() { - return result.isInitialized(); - } + public org.xtreemfs.pbrpc.generatedinterfaces.MRC.setxattrRequest build() { - if (result != null && !isInitialized()) { + org.xtreemfs.pbrpc.generatedinterfaces.MRC.setxattrRequest result = buildPartial(); + if (!result.isInitialized()) { throw newUninitializedMessageException(result); } - return buildPartial(); - } - - private org.xtreemfs.pbrpc.generatedinterfaces.MRC.setxattrRequest buildParsed() - throws com.google.protobuf.InvalidProtocolBufferException { - if (!isInitialized()) { - throw newUninitializedMessageException( - result).asInvalidProtocolBufferException(); - } - return buildPartial(); + return result; } - + public org.xtreemfs.pbrpc.generatedinterfaces.MRC.setxattrRequest buildPartial() { - if (result == null) { - throw new IllegalStateException( - "build() has already been called on this Builder."); - } - org.xtreemfs.pbrpc.generatedinterfaces.MRC.setxattrRequest returnMe = result; - result = null; - return returnMe; + org.xtreemfs.pbrpc.generatedinterfaces.MRC.setxattrRequest result = new org.xtreemfs.pbrpc.generatedinterfaces.MRC.setxattrRequest(this); + int from_bitField0_ = bitField0_; + int to_bitField0_ = 0; + if (((from_bitField0_ & 0x00000001) == 0x00000001)) { + to_bitField0_ |= 0x00000001; + } + result.volumeName_ = volumeName_; + if (((from_bitField0_ & 0x00000002) == 0x00000002)) { + to_bitField0_ |= 0x00000002; + } + result.path_ = path_; + if (((from_bitField0_ & 0x00000004) == 0x00000004)) { + to_bitField0_ |= 0x00000004; + } + result.name_ = name_; + if (((from_bitField0_ & 0x00000008) == 0x00000008)) { + to_bitField0_ |= 0x00000008; + } + result.value_ = value_; + if (((from_bitField0_ & 0x00000010) == 0x00000010)) { + to_bitField0_ |= 0x00000010; + } + result.valueBytesString_ = valueBytesString_; + if (((from_bitField0_ & 0x00000020) == 0x00000020)) { + to_bitField0_ |= 0x00000020; + } + result.flags_ = flags_; + result.bitField0_ = to_bitField0_; + onBuilt(); + return result; } - + public Builder mergeFrom(com.google.protobuf.Message other) { if (other instanceof org.xtreemfs.pbrpc.generatedinterfaces.MRC.setxattrRequest) { return mergeFrom((org.xtreemfs.pbrpc.generatedinterfaces.MRC.setxattrRequest)other); @@ -11328,23 +27560,31 @@ public final class MRC { return this; } } - + public Builder mergeFrom(org.xtreemfs.pbrpc.generatedinterfaces.MRC.setxattrRequest other) { if (other == org.xtreemfs.pbrpc.generatedinterfaces.MRC.setxattrRequest.getDefaultInstance()) return this; if (other.hasVolumeName()) { - setVolumeName(other.getVolumeName()); + bitField0_ |= 0x00000001; + volumeName_ = other.volumeName_; + onChanged(); } if (other.hasPath()) { - setPath(other.getPath()); + bitField0_ |= 0x00000002; + path_ = other.path_; + onChanged(); } if (other.hasName()) { - setName(other.getName()); + bitField0_ |= 0x00000004; + name_ = other.name_; + onChanged(); } if (other.hasValue()) { - setValue(other.getValue()); + bitField0_ |= 0x00000008; + value_ = other.value_; + onChanged(); } - if (other.hasValueBytes()) { - setValueBytes(other.getValueBytes()); + if (other.hasValueBytesString()) { + setValueBytesString(other.getValueBytesString()); } if (other.hasFlags()) { setFlags(other.getFlags()); @@ -11352,414 +27592,1006 @@ public final class MRC { this.mergeUnknownFields(other.getUnknownFields()); return this; } - + + public final boolean isInitialized() { + if (!hasVolumeName()) { + + return false; + } + if (!hasPath()) { + + return false; + } + if (!hasName()) { + + return false; + } + if (!hasValue()) { + + return false; + } + if (!hasFlags()) { + + return false; + } + return true; + } + public Builder mergeFrom( com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - com.google.protobuf.UnknownFieldSet.Builder unknownFields = - com.google.protobuf.UnknownFieldSet.newBuilder( - this.getUnknownFields()); - while (true) { - int tag = input.readTag(); - switch (tag) { - case 0: - this.setUnknownFields(unknownFields.build()); - return this; - default: { - if (!parseUnknownField(input, unknownFields, - extensionRegistry, tag)) { - this.setUnknownFields(unknownFields.build()); - return this; - } - break; - } - case 10: { - setVolumeName(input.readString()); - break; - } - case 18: { - setPath(input.readString()); - break; - } - case 26: { - setName(input.readString()); - break; - } - case 34: { - setValue(input.readString()); - break; - } - case 45: { - setFlags(input.readFixed32()); - break; - } - case 50: { - setValueBytes(input.readBytes()); - break; - } + org.xtreemfs.pbrpc.generatedinterfaces.MRC.setxattrRequest parsedMessage = null; + try { + parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + parsedMessage = (org.xtreemfs.pbrpc.generatedinterfaces.MRC.setxattrRequest) e.getUnfinishedMessage(); + throw e; + } finally { + if (parsedMessage != null) { + mergeFrom(parsedMessage); } } + return this; } - - + private int bitField0_; + // required string volume_name = 1; + private java.lang.Object volumeName_ = ""; + /** + * required string volume_name = 1; + * + *
+       * the volume name
+       * 
+ */ public boolean hasVolumeName() { - return result.hasVolumeName(); - } + return ((bitField0_ & 0x00000001) == 0x00000001); + } + /** + * required string volume_name = 1; + * + *
+       * the volume name
+       * 
+ */ public java.lang.String getVolumeName() { - return result.getVolumeName(); - } - public Builder setVolumeName(java.lang.String value) { + java.lang.Object ref = volumeName_; + if (!(ref instanceof java.lang.String)) { + java.lang.String s = ((com.google.protobuf.ByteString) ref) + .toStringUtf8(); + volumeName_ = s; + return s; + } else { + return (java.lang.String) ref; + } + } + /** + * required string volume_name = 1; + * + *
+       * the volume name
+       * 
+ */ + public com.google.protobuf.ByteString + getVolumeNameBytes() { + java.lang.Object ref = volumeName_; + if (ref instanceof String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + volumeName_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + /** + * required string volume_name = 1; + * + *
+       * the volume name
+       * 
+ */ + public Builder setVolumeName( + java.lang.String value) { if (value == null) { throw new NullPointerException(); } - result.hasVolumeName = true; - result.volumeName_ = value; - return this; - } + bitField0_ |= 0x00000001; + volumeName_ = value; + onChanged(); + return this; + } + /** + * required string volume_name = 1; + * + *
+       * the volume name
+       * 
+ */ public Builder clearVolumeName() { - result.hasVolumeName = false; - result.volumeName_ = getDefaultInstance().getVolumeName(); + bitField0_ = (bitField0_ & ~0x00000001); + volumeName_ = getDefaultInstance().getVolumeName(); + onChanged(); + return this; + } + /** + * required string volume_name = 1; + * + *
+       * the volume name
+       * 
+ */ + public Builder setVolumeNameBytes( + com.google.protobuf.ByteString value) { + if (value == null) { + throw new NullPointerException(); + } + bitField0_ |= 0x00000001; + volumeName_ = value; + onChanged(); return this; } - + // required string path = 2; + private java.lang.Object path_ = ""; + /** + * required string path = 2; + * + *
+       * the path to the file or directory, relative to the volume root
+       * 
+ */ public boolean hasPath() { - return result.hasPath(); - } + return ((bitField0_ & 0x00000002) == 0x00000002); + } + /** + * required string path = 2; + * + *
+       * the path to the file or directory, relative to the volume root
+       * 
+ */ public java.lang.String getPath() { - return result.getPath(); - } - public Builder setPath(java.lang.String value) { + java.lang.Object ref = path_; + if (!(ref instanceof java.lang.String)) { + java.lang.String s = ((com.google.protobuf.ByteString) ref) + .toStringUtf8(); + path_ = s; + return s; + } else { + return (java.lang.String) ref; + } + } + /** + * required string path = 2; + * + *
+       * the path to the file or directory, relative to the volume root
+       * 
+ */ + public com.google.protobuf.ByteString + getPathBytes() { + java.lang.Object ref = path_; + if (ref instanceof String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + path_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + /** + * required string path = 2; + * + *
+       * the path to the file or directory, relative to the volume root
+       * 
+ */ + public Builder setPath( + java.lang.String value) { if (value == null) { throw new NullPointerException(); } - result.hasPath = true; - result.path_ = value; - return this; - } + bitField0_ |= 0x00000002; + path_ = value; + onChanged(); + return this; + } + /** + * required string path = 2; + * + *
+       * the path to the file or directory, relative to the volume root
+       * 
+ */ public Builder clearPath() { - result.hasPath = false; - result.path_ = getDefaultInstance().getPath(); + bitField0_ = (bitField0_ & ~0x00000002); + path_ = getDefaultInstance().getPath(); + onChanged(); + return this; + } + /** + * required string path = 2; + * + *
+       * the path to the file or directory, relative to the volume root
+       * 
+ */ + public Builder setPathBytes( + com.google.protobuf.ByteString value) { + if (value == null) { + throw new NullPointerException(); + } + bitField0_ |= 0x00000002; + path_ = value; + onChanged(); return this; } - + // required string name = 3; + private java.lang.Object name_ = ""; + /** + * required string name = 3; + * + *
+       * the name of the extended attribute to set
+       * 
+ */ public boolean hasName() { - return result.hasName(); - } + return ((bitField0_ & 0x00000004) == 0x00000004); + } + /** + * required string name = 3; + * + *
+       * the name of the extended attribute to set
+       * 
+ */ public java.lang.String getName() { - return result.getName(); - } - public Builder setName(java.lang.String value) { + java.lang.Object ref = name_; + if (!(ref instanceof java.lang.String)) { + java.lang.String s = ((com.google.protobuf.ByteString) ref) + .toStringUtf8(); + name_ = s; + return s; + } else { + return (java.lang.String) ref; + } + } + /** + * required string name = 3; + * + *
+       * the name of the extended attribute to set
+       * 
+ */ + public com.google.protobuf.ByteString + getNameBytes() { + java.lang.Object ref = name_; + if (ref instanceof String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + name_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + /** + * required string name = 3; + * + *
+       * the name of the extended attribute to set
+       * 
+ */ + public Builder setName( + java.lang.String value) { if (value == null) { throw new NullPointerException(); } - result.hasName = true; - result.name_ = value; - return this; - } + bitField0_ |= 0x00000004; + name_ = value; + onChanged(); + return this; + } + /** + * required string name = 3; + * + *
+       * the name of the extended attribute to set
+       * 
+ */ public Builder clearName() { - result.hasName = false; - result.name_ = getDefaultInstance().getName(); + bitField0_ = (bitField0_ & ~0x00000004); + name_ = getDefaultInstance().getName(); + onChanged(); + return this; + } + /** + * required string name = 3; + * + *
+       * the name of the extended attribute to set
+       * 
+ */ + public Builder setNameBytes( + com.google.protobuf.ByteString value) { + if (value == null) { + throw new NullPointerException(); + } + bitField0_ |= 0x00000004; + name_ = value; + onChanged(); return this; } - + // required string value = 4; + private java.lang.Object value_ = ""; + /** + * required string value = 4; + * + *
+       * the (new) value for the extended attribute to set
+       * 
+ */ public boolean hasValue() { - return result.hasValue(); - } + return ((bitField0_ & 0x00000008) == 0x00000008); + } + /** + * required string value = 4; + * + *
+       * the (new) value for the extended attribute to set
+       * 
+ */ public java.lang.String getValue() { - return result.getValue(); - } - public Builder setValue(java.lang.String value) { + java.lang.Object ref = value_; + if (!(ref instanceof java.lang.String)) { + java.lang.String s = ((com.google.protobuf.ByteString) ref) + .toStringUtf8(); + value_ = s; + return s; + } else { + return (java.lang.String) ref; + } + } + /** + * required string value = 4; + * + *
+       * the (new) value for the extended attribute to set
+       * 
+ */ + public com.google.protobuf.ByteString + getValueBytes() { + java.lang.Object ref = value_; + if (ref instanceof String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + value_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + /** + * required string value = 4; + * + *
+       * the (new) value for the extended attribute to set
+       * 
+ */ + public Builder setValue( + java.lang.String value) { if (value == null) { throw new NullPointerException(); } - result.hasValue = true; - result.value_ = value; - return this; - } + bitField0_ |= 0x00000008; + value_ = value; + onChanged(); + return this; + } + /** + * required string value = 4; + * + *
+       * the (new) value for the extended attribute to set
+       * 
+ */ public Builder clearValue() { - result.hasValue = false; - result.value_ = getDefaultInstance().getValue(); + bitField0_ = (bitField0_ & ~0x00000008); + value_ = getDefaultInstance().getValue(); + onChanged(); + return this; + } + /** + * required string value = 4; + * + *
+       * the (new) value for the extended attribute to set
+       * 
+ */ + public Builder setValueBytes( + com.google.protobuf.ByteString value) { + if (value == null) { + throw new NullPointerException(); + } + bitField0_ |= 0x00000008; + value_ = value; + onChanged(); return this; } - - // optional bytes value_bytes = 6; - public boolean hasValueBytes() { - return result.hasValueBytes(); - } - public com.google.protobuf.ByteString getValueBytes() { - return result.getValueBytes(); - } - public Builder setValueBytes(com.google.protobuf.ByteString value) { + + // optional bytes value_bytes_string = 6; + private com.google.protobuf.ByteString valueBytesString_ = com.google.protobuf.ByteString.EMPTY; + /** + * optional bytes value_bytes_string = 6; + * + *
+       * (new) value in bytes, see XAttr for explanation.
+       * 
+ */ + public boolean hasValueBytesString() { + return ((bitField0_ & 0x00000010) == 0x00000010); + } + /** + * optional bytes value_bytes_string = 6; + * + *
+       * (new) value in bytes, see XAttr for explanation.
+       * 
+ */ + public com.google.protobuf.ByteString getValueBytesString() { + return valueBytesString_; + } + /** + * optional bytes value_bytes_string = 6; + * + *
+       * (new) value in bytes, see XAttr for explanation.
+       * 
+ */ + public Builder setValueBytesString(com.google.protobuf.ByteString value) { if (value == null) { throw new NullPointerException(); } - result.hasValueBytes = true; - result.valueBytes_ = value; + bitField0_ |= 0x00000010; + valueBytesString_ = value; + onChanged(); return this; } - public Builder clearValueBytes() { - result.hasValueBytes = false; - result.valueBytes_ = getDefaultInstance().getValueBytes(); + /** + * optional bytes value_bytes_string = 6; + * + *
+       * (new) value in bytes, see XAttr for explanation.
+       * 
+ */ + public Builder clearValueBytesString() { + bitField0_ = (bitField0_ & ~0x00000010); + valueBytesString_ = getDefaultInstance().getValueBytesString(); + onChanged(); return this; } - + // required fixed32 flags = 5; + private int flags_ ; + /** + * required fixed32 flags = 5; + * + *
+       * flags indicating whether the attribute is supposed to be created or
+       * replaced (see XATTR_FLAGS)
+       * 
+ */ public boolean hasFlags() { - return result.hasFlags(); - } + return ((bitField0_ & 0x00000020) == 0x00000020); + } + /** + * required fixed32 flags = 5; + * + *
+       * flags indicating whether the attribute is supposed to be created or
+       * replaced (see XATTR_FLAGS)
+       * 
+ */ public int getFlags() { - return result.getFlags(); - } + return flags_; + } + /** + * required fixed32 flags = 5; + * + *
+       * flags indicating whether the attribute is supposed to be created or
+       * replaced (see XATTR_FLAGS)
+       * 
+ */ public Builder setFlags(int value) { - result.hasFlags = true; - result.flags_ = value; - return this; - } + bitField0_ |= 0x00000020; + flags_ = value; + onChanged(); + return this; + } + /** + * required fixed32 flags = 5; + * + *
+       * flags indicating whether the attribute is supposed to be created or
+       * replaced (see XATTR_FLAGS)
+       * 
+ */ public Builder clearFlags() { - result.hasFlags = false; - result.flags_ = 0; + bitField0_ = (bitField0_ & ~0x00000020); + flags_ = 0; + onChanged(); return this; } - + // @@protoc_insertion_point(builder_scope:xtreemfs.pbrpc.setxattrRequest) } - + static { defaultInstance = new setxattrRequest(true); - org.xtreemfs.pbrpc.generatedinterfaces.MRC.internalForceInit(); defaultInstance.initFields(); } - + // @@protoc_insertion_point(class_scope:xtreemfs.pbrpc.setxattrRequest) } - + + public interface statvfsRequestOrBuilder + extends com.google.protobuf.MessageOrBuilder { + + // required string volume_name = 1; + /** + * required string volume_name = 1; + * + *
+     * the volume name
+     * 
+ */ + boolean hasVolumeName(); + /** + * required string volume_name = 1; + * + *
+     * the volume name
+     * 
+ */ + java.lang.String getVolumeName(); + /** + * required string volume_name = 1; + * + *
+     * the volume name
+     * 
+ */ + com.google.protobuf.ByteString + getVolumeNameBytes(); + + // required fixed64 known_etag = 5; + /** + * required fixed64 known_etag = 5; + * + *
+     * an identification tag indicating the last known version of the directory
+     * content
+     * 
+ */ + boolean hasKnownEtag(); + /** + * required fixed64 known_etag = 5; + * + *
+     * an identification tag indicating the last known version of the directory
+     * content
+     * 
+ */ + long getKnownEtag(); + } + /** + * Protobuf type {@code xtreemfs.pbrpc.statvfsRequest} + * + *
+   * requests information about a mounted volume
+   * 
+ */ public static final class statvfsRequest extends - com.google.protobuf.GeneratedMessage { + com.google.protobuf.GeneratedMessage + implements statvfsRequestOrBuilder { // Use statvfsRequest.newBuilder() to construct. - private statvfsRequest() { - initFields(); + private statvfsRequest(com.google.protobuf.GeneratedMessage.Builder builder) { + super(builder); + this.unknownFields = builder.getUnknownFields(); } - private statvfsRequest(boolean noInit) {} - + private statvfsRequest(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); } + private static final statvfsRequest defaultInstance; public static statvfsRequest getDefaultInstance() { return defaultInstance; } - + public statvfsRequest getDefaultInstanceForType() { return defaultInstance; } - + + private final com.google.protobuf.UnknownFieldSet unknownFields; + @java.lang.Override + public final com.google.protobuf.UnknownFieldSet + getUnknownFields() { + return this.unknownFields; + } + private statvfsRequest( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + initFields(); + int mutable_bitField0_ = 0; + com.google.protobuf.UnknownFieldSet.Builder unknownFields = + com.google.protobuf.UnknownFieldSet.newBuilder(); + try { + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch (tag) { + case 0: + done = true; + break; + default: { + if (!parseUnknownField(input, unknownFields, + extensionRegistry, tag)) { + done = true; + } + break; + } + case 10: { + bitField0_ |= 0x00000001; + volumeName_ = input.readBytes(); + break; + } + case 41: { + bitField0_ |= 0x00000002; + knownEtag_ = input.readFixed64(); + break; + } + } + } + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(this); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException( + e.getMessage()).setUnfinishedMessage(this); + } finally { + this.unknownFields = unknownFields.build(); + makeExtensionsImmutable(); + } + } public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { return org.xtreemfs.pbrpc.generatedinterfaces.MRC.internal_static_xtreemfs_pbrpc_statvfsRequest_descriptor; } - + protected com.google.protobuf.GeneratedMessage.FieldAccessorTable internalGetFieldAccessorTable() { - return org.xtreemfs.pbrpc.generatedinterfaces.MRC.internal_static_xtreemfs_pbrpc_statvfsRequest_fieldAccessorTable; + return org.xtreemfs.pbrpc.generatedinterfaces.MRC.internal_static_xtreemfs_pbrpc_statvfsRequest_fieldAccessorTable + .ensureFieldAccessorsInitialized( + org.xtreemfs.pbrpc.generatedinterfaces.MRC.statvfsRequest.class, org.xtreemfs.pbrpc.generatedinterfaces.MRC.statvfsRequest.Builder.class); + } + + public static com.google.protobuf.Parser PARSER = + new com.google.protobuf.AbstractParser() { + public statvfsRequest parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return new statvfsRequest(input, extensionRegistry); + } + }; + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; } - + + private int bitField0_; // required string volume_name = 1; public static final int VOLUME_NAME_FIELD_NUMBER = 1; - private boolean hasVolumeName; - private java.lang.String volumeName_ = ""; - public boolean hasVolumeName() { return hasVolumeName; } - public java.lang.String getVolumeName() { return volumeName_; } - + private java.lang.Object volumeName_; + /** + * required string volume_name = 1; + * + *
+     * the volume name
+     * 
+ */ + public boolean hasVolumeName() { + return ((bitField0_ & 0x00000001) == 0x00000001); + } + /** + * required string volume_name = 1; + * + *
+     * the volume name
+     * 
+ */ + public java.lang.String getVolumeName() { + java.lang.Object ref = volumeName_; + if (ref instanceof java.lang.String) { + return (java.lang.String) ref; + } else { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + if (bs.isValidUtf8()) { + volumeName_ = s; + } + return s; + } + } + /** + * required string volume_name = 1; + * + *
+     * the volume name
+     * 
+ */ + public com.google.protobuf.ByteString + getVolumeNameBytes() { + java.lang.Object ref = volumeName_; + if (ref instanceof java.lang.String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + volumeName_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + // required fixed64 known_etag = 5; public static final int KNOWN_ETAG_FIELD_NUMBER = 5; - private boolean hasKnownEtag; - private long knownEtag_ = 0L; - public boolean hasKnownEtag() { return hasKnownEtag; } - public long getKnownEtag() { return knownEtag_; } - + private long knownEtag_; + /** + * required fixed64 known_etag = 5; + * + *
+     * an identification tag indicating the last known version of the directory
+     * content
+     * 
+ */ + public boolean hasKnownEtag() { + return ((bitField0_ & 0x00000002) == 0x00000002); + } + /** + * required fixed64 known_etag = 5; + * + *
+     * an identification tag indicating the last known version of the directory
+     * content
+     * 
+ */ + public long getKnownEtag() { + return knownEtag_; + } + private void initFields() { + volumeName_ = ""; + knownEtag_ = 0L; } + private byte memoizedIsInitialized = -1; public final boolean isInitialized() { - if (!hasVolumeName) return false; - if (!hasKnownEtag) return false; + byte isInitialized = memoizedIsInitialized; + if (isInitialized != -1) return isInitialized == 1; + + if (!hasVolumeName()) { + memoizedIsInitialized = 0; + return false; + } + if (!hasKnownEtag()) { + memoizedIsInitialized = 0; + return false; + } + memoizedIsInitialized = 1; return true; } - + public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException { getSerializedSize(); - if (hasVolumeName()) { - output.writeString(1, getVolumeName()); + if (((bitField0_ & 0x00000001) == 0x00000001)) { + output.writeBytes(1, getVolumeNameBytes()); } - if (hasKnownEtag()) { - output.writeFixed64(5, getKnownEtag()); + if (((bitField0_ & 0x00000002) == 0x00000002)) { + output.writeFixed64(5, knownEtag_); } getUnknownFields().writeTo(output); } - + private int memoizedSerializedSize = -1; public int getSerializedSize() { int size = memoizedSerializedSize; if (size != -1) return size; - + size = 0; - if (hasVolumeName()) { + if (((bitField0_ & 0x00000001) == 0x00000001)) { size += com.google.protobuf.CodedOutputStream - .computeStringSize(1, getVolumeName()); + .computeBytesSize(1, getVolumeNameBytes()); } - if (hasKnownEtag()) { + if (((bitField0_ & 0x00000002) == 0x00000002)) { size += com.google.protobuf.CodedOutputStream - .computeFixed64Size(5, getKnownEtag()); + .computeFixed64Size(5, knownEtag_); } size += getUnknownFields().getSerializedSize(); memoizedSerializedSize = size; return size; } - + + private static final long serialVersionUID = 0L; + @java.lang.Override + protected java.lang.Object writeReplace() + throws java.io.ObjectStreamException { + return super.writeReplace(); + } + public static org.xtreemfs.pbrpc.generatedinterfaces.MRC.statvfsRequest parseFrom( com.google.protobuf.ByteString data) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data).buildParsed(); + return PARSER.parseFrom(data); } public static org.xtreemfs.pbrpc.generatedinterfaces.MRC.statvfsRequest parseFrom( com.google.protobuf.ByteString data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(data, extensionRegistry); } public static org.xtreemfs.pbrpc.generatedinterfaces.MRC.statvfsRequest parseFrom(byte[] data) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data).buildParsed(); + return PARSER.parseFrom(data); } public static org.xtreemfs.pbrpc.generatedinterfaces.MRC.statvfsRequest parseFrom( byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(data, extensionRegistry); } public static org.xtreemfs.pbrpc.generatedinterfaces.MRC.statvfsRequest parseFrom(java.io.InputStream input) throws java.io.IOException { - return newBuilder().mergeFrom(input).buildParsed(); + return PARSER.parseFrom(input); } public static org.xtreemfs.pbrpc.generatedinterfaces.MRC.statvfsRequest parseFrom( java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - return newBuilder().mergeFrom(input, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(input, extensionRegistry); } public static org.xtreemfs.pbrpc.generatedinterfaces.MRC.statvfsRequest parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException { - Builder builder = newBuilder(); - if (builder.mergeDelimitedFrom(input)) { - return builder.buildParsed(); - } else { - return null; - } + return PARSER.parseDelimitedFrom(input); } public static org.xtreemfs.pbrpc.generatedinterfaces.MRC.statvfsRequest parseDelimitedFrom( java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - Builder builder = newBuilder(); - if (builder.mergeDelimitedFrom(input, extensionRegistry)) { - return builder.buildParsed(); - } else { - return null; - } + return PARSER.parseDelimitedFrom(input, extensionRegistry); } public static org.xtreemfs.pbrpc.generatedinterfaces.MRC.statvfsRequest parseFrom( com.google.protobuf.CodedInputStream input) throws java.io.IOException { - return newBuilder().mergeFrom(input).buildParsed(); + return PARSER.parseFrom(input); } public static org.xtreemfs.pbrpc.generatedinterfaces.MRC.statvfsRequest parseFrom( com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - return newBuilder().mergeFrom(input, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(input, extensionRegistry); } - + public static Builder newBuilder() { return Builder.create(); } public Builder newBuilderForType() { return newBuilder(); } public static Builder newBuilder(org.xtreemfs.pbrpc.generatedinterfaces.MRC.statvfsRequest prototype) { return newBuilder().mergeFrom(prototype); } public Builder toBuilder() { return newBuilder(this); } - + + @java.lang.Override + protected Builder newBuilderForType( + com.google.protobuf.GeneratedMessage.BuilderParent parent) { + Builder builder = new Builder(parent); + return builder; + } + /** + * Protobuf type {@code xtreemfs.pbrpc.statvfsRequest} + * + *
+     * requests information about a mounted volume
+     * 
+ */ public static final class Builder extends - com.google.protobuf.GeneratedMessage.Builder { - private org.xtreemfs.pbrpc.generatedinterfaces.MRC.statvfsRequest result; - + com.google.protobuf.GeneratedMessage.Builder + implements org.xtreemfs.pbrpc.generatedinterfaces.MRC.statvfsRequestOrBuilder { + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return org.xtreemfs.pbrpc.generatedinterfaces.MRC.internal_static_xtreemfs_pbrpc_statvfsRequest_descriptor; + } + + protected com.google.protobuf.GeneratedMessage.FieldAccessorTable + internalGetFieldAccessorTable() { + return org.xtreemfs.pbrpc.generatedinterfaces.MRC.internal_static_xtreemfs_pbrpc_statvfsRequest_fieldAccessorTable + .ensureFieldAccessorsInitialized( + org.xtreemfs.pbrpc.generatedinterfaces.MRC.statvfsRequest.class, org.xtreemfs.pbrpc.generatedinterfaces.MRC.statvfsRequest.Builder.class); + } + // Construct using org.xtreemfs.pbrpc.generatedinterfaces.MRC.statvfsRequest.newBuilder() - private Builder() {} - - private static Builder create() { - Builder builder = new Builder(); - builder.result = new org.xtreemfs.pbrpc.generatedinterfaces.MRC.statvfsRequest(); - return builder; + private Builder() { + maybeForceBuilderInitialization(); } - - protected org.xtreemfs.pbrpc.generatedinterfaces.MRC.statvfsRequest internalGetResult() { - return result; + + private Builder( + com.google.protobuf.GeneratedMessage.BuilderParent parent) { + super(parent); + maybeForceBuilderInitialization(); } - - public Builder clear() { - if (result == null) { - throw new IllegalStateException( - "Cannot call clear() after build()."); + private void maybeForceBuilderInitialization() { + if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) { } - result = new org.xtreemfs.pbrpc.generatedinterfaces.MRC.statvfsRequest(); + } + private static Builder create() { + return new Builder(); + } + + public Builder clear() { + super.clear(); + volumeName_ = ""; + bitField0_ = (bitField0_ & ~0x00000001); + knownEtag_ = 0L; + bitField0_ = (bitField0_ & ~0x00000002); return this; } - + public Builder clone() { - return create().mergeFrom(result); + return create().mergeFrom(buildPartial()); } - + public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() { - return org.xtreemfs.pbrpc.generatedinterfaces.MRC.statvfsRequest.getDescriptor(); + return org.xtreemfs.pbrpc.generatedinterfaces.MRC.internal_static_xtreemfs_pbrpc_statvfsRequest_descriptor; } - + public org.xtreemfs.pbrpc.generatedinterfaces.MRC.statvfsRequest getDefaultInstanceForType() { return org.xtreemfs.pbrpc.generatedinterfaces.MRC.statvfsRequest.getDefaultInstance(); } - - public boolean isInitialized() { - return result.isInitialized(); - } + public org.xtreemfs.pbrpc.generatedinterfaces.MRC.statvfsRequest build() { - if (result != null && !isInitialized()) { + org.xtreemfs.pbrpc.generatedinterfaces.MRC.statvfsRequest result = buildPartial(); + if (!result.isInitialized()) { throw newUninitializedMessageException(result); } - return buildPartial(); - } - - private org.xtreemfs.pbrpc.generatedinterfaces.MRC.statvfsRequest buildParsed() - throws com.google.protobuf.InvalidProtocolBufferException { - if (!isInitialized()) { - throw newUninitializedMessageException( - result).asInvalidProtocolBufferException(); - } - return buildPartial(); + return result; } - + public org.xtreemfs.pbrpc.generatedinterfaces.MRC.statvfsRequest buildPartial() { - if (result == null) { - throw new IllegalStateException( - "build() has already been called on this Builder."); - } - org.xtreemfs.pbrpc.generatedinterfaces.MRC.statvfsRequest returnMe = result; - result = null; - return returnMe; + org.xtreemfs.pbrpc.generatedinterfaces.MRC.statvfsRequest result = new org.xtreemfs.pbrpc.generatedinterfaces.MRC.statvfsRequest(this); + int from_bitField0_ = bitField0_; + int to_bitField0_ = 0; + if (((from_bitField0_ & 0x00000001) == 0x00000001)) { + to_bitField0_ |= 0x00000001; + } + result.volumeName_ = volumeName_; + if (((from_bitField0_ & 0x00000002) == 0x00000002)) { + to_bitField0_ |= 0x00000002; + } + result.knownEtag_ = knownEtag_; + result.bitField0_ = to_bitField0_; + onBuilt(); + return result; } - + public Builder mergeFrom(com.google.protobuf.Message other) { if (other instanceof org.xtreemfs.pbrpc.generatedinterfaces.MRC.statvfsRequest) { return mergeFrom((org.xtreemfs.pbrpc.generatedinterfaces.MRC.statvfsRequest)other); @@ -11768,11 +28600,13 @@ public final class MRC { return this; } } - + public Builder mergeFrom(org.xtreemfs.pbrpc.generatedinterfaces.MRC.statvfsRequest other) { if (other == org.xtreemfs.pbrpc.generatedinterfaces.MRC.statvfsRequest.getDefaultInstance()) return this; if (other.hasVolumeName()) { - setVolumeName(other.getVolumeName()); + bitField0_ |= 0x00000001; + volumeName_ = other.volumeName_; + onChanged(); } if (other.hasKnownEtag()) { setKnownEtag(other.getKnownEtag()); @@ -11780,329 +28614,795 @@ public final class MRC { this.mergeUnknownFields(other.getUnknownFields()); return this; } - + + public final boolean isInitialized() { + if (!hasVolumeName()) { + + return false; + } + if (!hasKnownEtag()) { + + return false; + } + return true; + } + public Builder mergeFrom( com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - com.google.protobuf.UnknownFieldSet.Builder unknownFields = - com.google.protobuf.UnknownFieldSet.newBuilder( - this.getUnknownFields()); - while (true) { - int tag = input.readTag(); - switch (tag) { - case 0: - this.setUnknownFields(unknownFields.build()); - return this; - default: { - if (!parseUnknownField(input, unknownFields, - extensionRegistry, tag)) { - this.setUnknownFields(unknownFields.build()); - return this; - } - break; - } - case 10: { - setVolumeName(input.readString()); - break; - } - case 41: { - setKnownEtag(input.readFixed64()); - break; - } + org.xtreemfs.pbrpc.generatedinterfaces.MRC.statvfsRequest parsedMessage = null; + try { + parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + parsedMessage = (org.xtreemfs.pbrpc.generatedinterfaces.MRC.statvfsRequest) e.getUnfinishedMessage(); + throw e; + } finally { + if (parsedMessage != null) { + mergeFrom(parsedMessage); } } + return this; } - - + private int bitField0_; + // required string volume_name = 1; + private java.lang.Object volumeName_ = ""; + /** + * required string volume_name = 1; + * + *
+       * the volume name
+       * 
+ */ public boolean hasVolumeName() { - return result.hasVolumeName(); - } + return ((bitField0_ & 0x00000001) == 0x00000001); + } + /** + * required string volume_name = 1; + * + *
+       * the volume name
+       * 
+ */ public java.lang.String getVolumeName() { - return result.getVolumeName(); - } - public Builder setVolumeName(java.lang.String value) { + java.lang.Object ref = volumeName_; + if (!(ref instanceof java.lang.String)) { + java.lang.String s = ((com.google.protobuf.ByteString) ref) + .toStringUtf8(); + volumeName_ = s; + return s; + } else { + return (java.lang.String) ref; + } + } + /** + * required string volume_name = 1; + * + *
+       * the volume name
+       * 
+ */ + public com.google.protobuf.ByteString + getVolumeNameBytes() { + java.lang.Object ref = volumeName_; + if (ref instanceof String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + volumeName_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + /** + * required string volume_name = 1; + * + *
+       * the volume name
+       * 
+ */ + public Builder setVolumeName( + java.lang.String value) { if (value == null) { throw new NullPointerException(); } - result.hasVolumeName = true; - result.volumeName_ = value; - return this; - } + bitField0_ |= 0x00000001; + volumeName_ = value; + onChanged(); + return this; + } + /** + * required string volume_name = 1; + * + *
+       * the volume name
+       * 
+ */ public Builder clearVolumeName() { - result.hasVolumeName = false; - result.volumeName_ = getDefaultInstance().getVolumeName(); + bitField0_ = (bitField0_ & ~0x00000001); + volumeName_ = getDefaultInstance().getVolumeName(); + onChanged(); + return this; + } + /** + * required string volume_name = 1; + * + *
+       * the volume name
+       * 
+ */ + public Builder setVolumeNameBytes( + com.google.protobuf.ByteString value) { + if (value == null) { + throw new NullPointerException(); + } + bitField0_ |= 0x00000001; + volumeName_ = value; + onChanged(); return this; } - + // required fixed64 known_etag = 5; + private long knownEtag_ ; + /** + * required fixed64 known_etag = 5; + * + *
+       * an identification tag indicating the last known version of the directory
+       * content
+       * 
+ */ public boolean hasKnownEtag() { - return result.hasKnownEtag(); - } + return ((bitField0_ & 0x00000002) == 0x00000002); + } + /** + * required fixed64 known_etag = 5; + * + *
+       * an identification tag indicating the last known version of the directory
+       * content
+       * 
+ */ public long getKnownEtag() { - return result.getKnownEtag(); - } + return knownEtag_; + } + /** + * required fixed64 known_etag = 5; + * + *
+       * an identification tag indicating the last known version of the directory
+       * content
+       * 
+ */ public Builder setKnownEtag(long value) { - result.hasKnownEtag = true; - result.knownEtag_ = value; - return this; - } + bitField0_ |= 0x00000002; + knownEtag_ = value; + onChanged(); + return this; + } + /** + * required fixed64 known_etag = 5; + * + *
+       * an identification tag indicating the last known version of the directory
+       * content
+       * 
+ */ public Builder clearKnownEtag() { - result.hasKnownEtag = false; - result.knownEtag_ = 0L; + bitField0_ = (bitField0_ & ~0x00000002); + knownEtag_ = 0L; + onChanged(); return this; } - + // @@protoc_insertion_point(builder_scope:xtreemfs.pbrpc.statvfsRequest) } - + static { defaultInstance = new statvfsRequest(true); - org.xtreemfs.pbrpc.generatedinterfaces.MRC.internalForceInit(); defaultInstance.initFields(); } - + // @@protoc_insertion_point(class_scope:xtreemfs.pbrpc.statvfsRequest) } - + + public interface symlinkRequestOrBuilder + extends com.google.protobuf.MessageOrBuilder { + + // required string volume_name = 1; + /** + * required string volume_name = 1; + * + *
+     * the volume name
+     * 
+ */ + boolean hasVolumeName(); + /** + * required string volume_name = 1; + * + *
+     * the volume name
+     * 
+ */ + java.lang.String getVolumeName(); + /** + * required string volume_name = 1; + * + *
+     * the volume name
+     * 
+ */ + com.google.protobuf.ByteString + getVolumeNameBytes(); + + // required string target_path = 2; + /** + * required string target_path = 2; + * + *
+     * the path to the file to which the link is supposed to be created,
+     * relative to the volume root
+     * 
+ */ + boolean hasTargetPath(); + /** + * required string target_path = 2; + * + *
+     * the path to the file to which the link is supposed to be created,
+     * relative to the volume root
+     * 
+ */ + java.lang.String getTargetPath(); + /** + * required string target_path = 2; + * + *
+     * the path to the file to which the link is supposed to be created,
+     * relative to the volume root
+     * 
+ */ + com.google.protobuf.ByteString + getTargetPathBytes(); + + // required string link_path = 3; + /** + * required string link_path = 3; + * + *
+     * the path to the new link, relative to the volume root
+     * 
+ */ + boolean hasLinkPath(); + /** + * required string link_path = 3; + * + *
+     * the path to the new link, relative to the volume root
+     * 
+ */ + java.lang.String getLinkPath(); + /** + * required string link_path = 3; + * + *
+     * the path to the new link, relative to the volume root
+     * 
+ */ + com.google.protobuf.ByteString + getLinkPathBytes(); + } + /** + * Protobuf type {@code xtreemfs.pbrpc.symlinkRequest} + * + *
+   * creates a symbolic link to a file
+   * 
+ */ public static final class symlinkRequest extends - com.google.protobuf.GeneratedMessage { + com.google.protobuf.GeneratedMessage + implements symlinkRequestOrBuilder { // Use symlinkRequest.newBuilder() to construct. - private symlinkRequest() { - initFields(); + private symlinkRequest(com.google.protobuf.GeneratedMessage.Builder builder) { + super(builder); + this.unknownFields = builder.getUnknownFields(); } - private symlinkRequest(boolean noInit) {} - + private symlinkRequest(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); } + private static final symlinkRequest defaultInstance; public static symlinkRequest getDefaultInstance() { return defaultInstance; } - + public symlinkRequest getDefaultInstanceForType() { return defaultInstance; } - + + private final com.google.protobuf.UnknownFieldSet unknownFields; + @java.lang.Override + public final com.google.protobuf.UnknownFieldSet + getUnknownFields() { + return this.unknownFields; + } + private symlinkRequest( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + initFields(); + int mutable_bitField0_ = 0; + com.google.protobuf.UnknownFieldSet.Builder unknownFields = + com.google.protobuf.UnknownFieldSet.newBuilder(); + try { + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch (tag) { + case 0: + done = true; + break; + default: { + if (!parseUnknownField(input, unknownFields, + extensionRegistry, tag)) { + done = true; + } + break; + } + case 10: { + bitField0_ |= 0x00000001; + volumeName_ = input.readBytes(); + break; + } + case 18: { + bitField0_ |= 0x00000002; + targetPath_ = input.readBytes(); + break; + } + case 26: { + bitField0_ |= 0x00000004; + linkPath_ = input.readBytes(); + break; + } + } + } + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(this); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException( + e.getMessage()).setUnfinishedMessage(this); + } finally { + this.unknownFields = unknownFields.build(); + makeExtensionsImmutable(); + } + } public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { return org.xtreemfs.pbrpc.generatedinterfaces.MRC.internal_static_xtreemfs_pbrpc_symlinkRequest_descriptor; } - + protected com.google.protobuf.GeneratedMessage.FieldAccessorTable internalGetFieldAccessorTable() { - return org.xtreemfs.pbrpc.generatedinterfaces.MRC.internal_static_xtreemfs_pbrpc_symlinkRequest_fieldAccessorTable; + return org.xtreemfs.pbrpc.generatedinterfaces.MRC.internal_static_xtreemfs_pbrpc_symlinkRequest_fieldAccessorTable + .ensureFieldAccessorsInitialized( + org.xtreemfs.pbrpc.generatedinterfaces.MRC.symlinkRequest.class, org.xtreemfs.pbrpc.generatedinterfaces.MRC.symlinkRequest.Builder.class); + } + + public static com.google.protobuf.Parser PARSER = + new com.google.protobuf.AbstractParser() { + public symlinkRequest parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return new symlinkRequest(input, extensionRegistry); + } + }; + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; } - + + private int bitField0_; // required string volume_name = 1; public static final int VOLUME_NAME_FIELD_NUMBER = 1; - private boolean hasVolumeName; - private java.lang.String volumeName_ = ""; - public boolean hasVolumeName() { return hasVolumeName; } - public java.lang.String getVolumeName() { return volumeName_; } - + private java.lang.Object volumeName_; + /** + * required string volume_name = 1; + * + *
+     * the volume name
+     * 
+ */ + public boolean hasVolumeName() { + return ((bitField0_ & 0x00000001) == 0x00000001); + } + /** + * required string volume_name = 1; + * + *
+     * the volume name
+     * 
+ */ + public java.lang.String getVolumeName() { + java.lang.Object ref = volumeName_; + if (ref instanceof java.lang.String) { + return (java.lang.String) ref; + } else { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + if (bs.isValidUtf8()) { + volumeName_ = s; + } + return s; + } + } + /** + * required string volume_name = 1; + * + *
+     * the volume name
+     * 
+ */ + public com.google.protobuf.ByteString + getVolumeNameBytes() { + java.lang.Object ref = volumeName_; + if (ref instanceof java.lang.String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + volumeName_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + // required string target_path = 2; public static final int TARGET_PATH_FIELD_NUMBER = 2; - private boolean hasTargetPath; - private java.lang.String targetPath_ = ""; - public boolean hasTargetPath() { return hasTargetPath; } - public java.lang.String getTargetPath() { return targetPath_; } - + private java.lang.Object targetPath_; + /** + * required string target_path = 2; + * + *
+     * the path to the file to which the link is supposed to be created,
+     * relative to the volume root
+     * 
+ */ + public boolean hasTargetPath() { + return ((bitField0_ & 0x00000002) == 0x00000002); + } + /** + * required string target_path = 2; + * + *
+     * the path to the file to which the link is supposed to be created,
+     * relative to the volume root
+     * 
+ */ + public java.lang.String getTargetPath() { + java.lang.Object ref = targetPath_; + if (ref instanceof java.lang.String) { + return (java.lang.String) ref; + } else { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + if (bs.isValidUtf8()) { + targetPath_ = s; + } + return s; + } + } + /** + * required string target_path = 2; + * + *
+     * the path to the file to which the link is supposed to be created,
+     * relative to the volume root
+     * 
+ */ + public com.google.protobuf.ByteString + getTargetPathBytes() { + java.lang.Object ref = targetPath_; + if (ref instanceof java.lang.String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + targetPath_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + // required string link_path = 3; public static final int LINK_PATH_FIELD_NUMBER = 3; - private boolean hasLinkPath; - private java.lang.String linkPath_ = ""; - public boolean hasLinkPath() { return hasLinkPath; } - public java.lang.String getLinkPath() { return linkPath_; } - + private java.lang.Object linkPath_; + /** + * required string link_path = 3; + * + *
+     * the path to the new link, relative to the volume root
+     * 
+ */ + public boolean hasLinkPath() { + return ((bitField0_ & 0x00000004) == 0x00000004); + } + /** + * required string link_path = 3; + * + *
+     * the path to the new link, relative to the volume root
+     * 
+ */ + public java.lang.String getLinkPath() { + java.lang.Object ref = linkPath_; + if (ref instanceof java.lang.String) { + return (java.lang.String) ref; + } else { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + if (bs.isValidUtf8()) { + linkPath_ = s; + } + return s; + } + } + /** + * required string link_path = 3; + * + *
+     * the path to the new link, relative to the volume root
+     * 
+ */ + public com.google.protobuf.ByteString + getLinkPathBytes() { + java.lang.Object ref = linkPath_; + if (ref instanceof java.lang.String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + linkPath_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + private void initFields() { + volumeName_ = ""; + targetPath_ = ""; + linkPath_ = ""; } + private byte memoizedIsInitialized = -1; public final boolean isInitialized() { - if (!hasVolumeName) return false; - if (!hasTargetPath) return false; - if (!hasLinkPath) return false; + byte isInitialized = memoizedIsInitialized; + if (isInitialized != -1) return isInitialized == 1; + + if (!hasVolumeName()) { + memoizedIsInitialized = 0; + return false; + } + if (!hasTargetPath()) { + memoizedIsInitialized = 0; + return false; + } + if (!hasLinkPath()) { + memoizedIsInitialized = 0; + return false; + } + memoizedIsInitialized = 1; return true; } - + public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException { getSerializedSize(); - if (hasVolumeName()) { - output.writeString(1, getVolumeName()); + if (((bitField0_ & 0x00000001) == 0x00000001)) { + output.writeBytes(1, getVolumeNameBytes()); } - if (hasTargetPath()) { - output.writeString(2, getTargetPath()); + if (((bitField0_ & 0x00000002) == 0x00000002)) { + output.writeBytes(2, getTargetPathBytes()); } - if (hasLinkPath()) { - output.writeString(3, getLinkPath()); + if (((bitField0_ & 0x00000004) == 0x00000004)) { + output.writeBytes(3, getLinkPathBytes()); } getUnknownFields().writeTo(output); } - + private int memoizedSerializedSize = -1; public int getSerializedSize() { int size = memoizedSerializedSize; if (size != -1) return size; - + size = 0; - if (hasVolumeName()) { + if (((bitField0_ & 0x00000001) == 0x00000001)) { size += com.google.protobuf.CodedOutputStream - .computeStringSize(1, getVolumeName()); + .computeBytesSize(1, getVolumeNameBytes()); } - if (hasTargetPath()) { + if (((bitField0_ & 0x00000002) == 0x00000002)) { size += com.google.protobuf.CodedOutputStream - .computeStringSize(2, getTargetPath()); + .computeBytesSize(2, getTargetPathBytes()); } - if (hasLinkPath()) { + if (((bitField0_ & 0x00000004) == 0x00000004)) { size += com.google.protobuf.CodedOutputStream - .computeStringSize(3, getLinkPath()); + .computeBytesSize(3, getLinkPathBytes()); } size += getUnknownFields().getSerializedSize(); memoizedSerializedSize = size; return size; } - + + private static final long serialVersionUID = 0L; + @java.lang.Override + protected java.lang.Object writeReplace() + throws java.io.ObjectStreamException { + return super.writeReplace(); + } + public static org.xtreemfs.pbrpc.generatedinterfaces.MRC.symlinkRequest parseFrom( com.google.protobuf.ByteString data) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data).buildParsed(); + return PARSER.parseFrom(data); } public static org.xtreemfs.pbrpc.generatedinterfaces.MRC.symlinkRequest parseFrom( com.google.protobuf.ByteString data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(data, extensionRegistry); } public static org.xtreemfs.pbrpc.generatedinterfaces.MRC.symlinkRequest parseFrom(byte[] data) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data).buildParsed(); + return PARSER.parseFrom(data); } public static org.xtreemfs.pbrpc.generatedinterfaces.MRC.symlinkRequest parseFrom( byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(data, extensionRegistry); } public static org.xtreemfs.pbrpc.generatedinterfaces.MRC.symlinkRequest parseFrom(java.io.InputStream input) throws java.io.IOException { - return newBuilder().mergeFrom(input).buildParsed(); + return PARSER.parseFrom(input); } public static org.xtreemfs.pbrpc.generatedinterfaces.MRC.symlinkRequest parseFrom( java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - return newBuilder().mergeFrom(input, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(input, extensionRegistry); } public static org.xtreemfs.pbrpc.generatedinterfaces.MRC.symlinkRequest parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException { - Builder builder = newBuilder(); - if (builder.mergeDelimitedFrom(input)) { - return builder.buildParsed(); - } else { - return null; - } + return PARSER.parseDelimitedFrom(input); } public static org.xtreemfs.pbrpc.generatedinterfaces.MRC.symlinkRequest parseDelimitedFrom( java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - Builder builder = newBuilder(); - if (builder.mergeDelimitedFrom(input, extensionRegistry)) { - return builder.buildParsed(); - } else { - return null; - } + return PARSER.parseDelimitedFrom(input, extensionRegistry); } public static org.xtreemfs.pbrpc.generatedinterfaces.MRC.symlinkRequest parseFrom( com.google.protobuf.CodedInputStream input) throws java.io.IOException { - return newBuilder().mergeFrom(input).buildParsed(); + return PARSER.parseFrom(input); } public static org.xtreemfs.pbrpc.generatedinterfaces.MRC.symlinkRequest parseFrom( com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - return newBuilder().mergeFrom(input, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(input, extensionRegistry); } - + public static Builder newBuilder() { return Builder.create(); } public Builder newBuilderForType() { return newBuilder(); } public static Builder newBuilder(org.xtreemfs.pbrpc.generatedinterfaces.MRC.symlinkRequest prototype) { return newBuilder().mergeFrom(prototype); } public Builder toBuilder() { return newBuilder(this); } - + + @java.lang.Override + protected Builder newBuilderForType( + com.google.protobuf.GeneratedMessage.BuilderParent parent) { + Builder builder = new Builder(parent); + return builder; + } + /** + * Protobuf type {@code xtreemfs.pbrpc.symlinkRequest} + * + *
+     * creates a symbolic link to a file
+     * 
+ */ public static final class Builder extends - com.google.protobuf.GeneratedMessage.Builder { - private org.xtreemfs.pbrpc.generatedinterfaces.MRC.symlinkRequest result; - + com.google.protobuf.GeneratedMessage.Builder + implements org.xtreemfs.pbrpc.generatedinterfaces.MRC.symlinkRequestOrBuilder { + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return org.xtreemfs.pbrpc.generatedinterfaces.MRC.internal_static_xtreemfs_pbrpc_symlinkRequest_descriptor; + } + + protected com.google.protobuf.GeneratedMessage.FieldAccessorTable + internalGetFieldAccessorTable() { + return org.xtreemfs.pbrpc.generatedinterfaces.MRC.internal_static_xtreemfs_pbrpc_symlinkRequest_fieldAccessorTable + .ensureFieldAccessorsInitialized( + org.xtreemfs.pbrpc.generatedinterfaces.MRC.symlinkRequest.class, org.xtreemfs.pbrpc.generatedinterfaces.MRC.symlinkRequest.Builder.class); + } + // Construct using org.xtreemfs.pbrpc.generatedinterfaces.MRC.symlinkRequest.newBuilder() - private Builder() {} - - private static Builder create() { - Builder builder = new Builder(); - builder.result = new org.xtreemfs.pbrpc.generatedinterfaces.MRC.symlinkRequest(); - return builder; + private Builder() { + maybeForceBuilderInitialization(); } - - protected org.xtreemfs.pbrpc.generatedinterfaces.MRC.symlinkRequest internalGetResult() { - return result; + + private Builder( + com.google.protobuf.GeneratedMessage.BuilderParent parent) { + super(parent); + maybeForceBuilderInitialization(); } - - public Builder clear() { - if (result == null) { - throw new IllegalStateException( - "Cannot call clear() after build()."); + private void maybeForceBuilderInitialization() { + if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) { } - result = new org.xtreemfs.pbrpc.generatedinterfaces.MRC.symlinkRequest(); + } + private static Builder create() { + return new Builder(); + } + + public Builder clear() { + super.clear(); + volumeName_ = ""; + bitField0_ = (bitField0_ & ~0x00000001); + targetPath_ = ""; + bitField0_ = (bitField0_ & ~0x00000002); + linkPath_ = ""; + bitField0_ = (bitField0_ & ~0x00000004); return this; } - + public Builder clone() { - return create().mergeFrom(result); + return create().mergeFrom(buildPartial()); } - + public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() { - return org.xtreemfs.pbrpc.generatedinterfaces.MRC.symlinkRequest.getDescriptor(); + return org.xtreemfs.pbrpc.generatedinterfaces.MRC.internal_static_xtreemfs_pbrpc_symlinkRequest_descriptor; } - + public org.xtreemfs.pbrpc.generatedinterfaces.MRC.symlinkRequest getDefaultInstanceForType() { return org.xtreemfs.pbrpc.generatedinterfaces.MRC.symlinkRequest.getDefaultInstance(); } - - public boolean isInitialized() { - return result.isInitialized(); - } + public org.xtreemfs.pbrpc.generatedinterfaces.MRC.symlinkRequest build() { - if (result != null && !isInitialized()) { + org.xtreemfs.pbrpc.generatedinterfaces.MRC.symlinkRequest result = buildPartial(); + if (!result.isInitialized()) { throw newUninitializedMessageException(result); } - return buildPartial(); - } - - private org.xtreemfs.pbrpc.generatedinterfaces.MRC.symlinkRequest buildParsed() - throws com.google.protobuf.InvalidProtocolBufferException { - if (!isInitialized()) { - throw newUninitializedMessageException( - result).asInvalidProtocolBufferException(); - } - return buildPartial(); + return result; } - + public org.xtreemfs.pbrpc.generatedinterfaces.MRC.symlinkRequest buildPartial() { - if (result == null) { - throw new IllegalStateException( - "build() has already been called on this Builder."); - } - org.xtreemfs.pbrpc.generatedinterfaces.MRC.symlinkRequest returnMe = result; - result = null; - return returnMe; + org.xtreemfs.pbrpc.generatedinterfaces.MRC.symlinkRequest result = new org.xtreemfs.pbrpc.generatedinterfaces.MRC.symlinkRequest(this); + int from_bitField0_ = bitField0_; + int to_bitField0_ = 0; + if (((from_bitField0_ & 0x00000001) == 0x00000001)) { + to_bitField0_ |= 0x00000001; + } + result.volumeName_ = volumeName_; + if (((from_bitField0_ & 0x00000002) == 0x00000002)) { + to_bitField0_ |= 0x00000002; + } + result.targetPath_ = targetPath_; + if (((from_bitField0_ & 0x00000004) == 0x00000004)) { + to_bitField0_ |= 0x00000004; + } + result.linkPath_ = linkPath_; + result.bitField0_ = to_bitField0_; + onBuilt(); + return result; } - + public Builder mergeFrom(com.google.protobuf.Message other) { if (other instanceof org.xtreemfs.pbrpc.generatedinterfaces.MRC.symlinkRequest) { return mergeFrom((org.xtreemfs.pbrpc.generatedinterfaces.MRC.symlinkRequest)other); @@ -12111,357 +29411,858 @@ public final class MRC { return this; } } - + public Builder mergeFrom(org.xtreemfs.pbrpc.generatedinterfaces.MRC.symlinkRequest other) { if (other == org.xtreemfs.pbrpc.generatedinterfaces.MRC.symlinkRequest.getDefaultInstance()) return this; if (other.hasVolumeName()) { - setVolumeName(other.getVolumeName()); + bitField0_ |= 0x00000001; + volumeName_ = other.volumeName_; + onChanged(); } if (other.hasTargetPath()) { - setTargetPath(other.getTargetPath()); + bitField0_ |= 0x00000002; + targetPath_ = other.targetPath_; + onChanged(); } if (other.hasLinkPath()) { - setLinkPath(other.getLinkPath()); + bitField0_ |= 0x00000004; + linkPath_ = other.linkPath_; + onChanged(); } this.mergeUnknownFields(other.getUnknownFields()); return this; } - + + public final boolean isInitialized() { + if (!hasVolumeName()) { + + return false; + } + if (!hasTargetPath()) { + + return false; + } + if (!hasLinkPath()) { + + return false; + } + return true; + } + public Builder mergeFrom( com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - com.google.protobuf.UnknownFieldSet.Builder unknownFields = - com.google.protobuf.UnknownFieldSet.newBuilder( - this.getUnknownFields()); - while (true) { - int tag = input.readTag(); - switch (tag) { - case 0: - this.setUnknownFields(unknownFields.build()); - return this; - default: { - if (!parseUnknownField(input, unknownFields, - extensionRegistry, tag)) { - this.setUnknownFields(unknownFields.build()); - return this; - } - break; - } - case 10: { - setVolumeName(input.readString()); - break; - } - case 18: { - setTargetPath(input.readString()); - break; - } - case 26: { - setLinkPath(input.readString()); - break; - } + org.xtreemfs.pbrpc.generatedinterfaces.MRC.symlinkRequest parsedMessage = null; + try { + parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + parsedMessage = (org.xtreemfs.pbrpc.generatedinterfaces.MRC.symlinkRequest) e.getUnfinishedMessage(); + throw e; + } finally { + if (parsedMessage != null) { + mergeFrom(parsedMessage); } } + return this; } - - + private int bitField0_; + // required string volume_name = 1; + private java.lang.Object volumeName_ = ""; + /** + * required string volume_name = 1; + * + *
+       * the volume name
+       * 
+ */ public boolean hasVolumeName() { - return result.hasVolumeName(); - } + return ((bitField0_ & 0x00000001) == 0x00000001); + } + /** + * required string volume_name = 1; + * + *
+       * the volume name
+       * 
+ */ public java.lang.String getVolumeName() { - return result.getVolumeName(); - } - public Builder setVolumeName(java.lang.String value) { + java.lang.Object ref = volumeName_; + if (!(ref instanceof java.lang.String)) { + java.lang.String s = ((com.google.protobuf.ByteString) ref) + .toStringUtf8(); + volumeName_ = s; + return s; + } else { + return (java.lang.String) ref; + } + } + /** + * required string volume_name = 1; + * + *
+       * the volume name
+       * 
+ */ + public com.google.protobuf.ByteString + getVolumeNameBytes() { + java.lang.Object ref = volumeName_; + if (ref instanceof String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + volumeName_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + /** + * required string volume_name = 1; + * + *
+       * the volume name
+       * 
+ */ + public Builder setVolumeName( + java.lang.String value) { if (value == null) { throw new NullPointerException(); } - result.hasVolumeName = true; - result.volumeName_ = value; - return this; - } + bitField0_ |= 0x00000001; + volumeName_ = value; + onChanged(); + return this; + } + /** + * required string volume_name = 1; + * + *
+       * the volume name
+       * 
+ */ public Builder clearVolumeName() { - result.hasVolumeName = false; - result.volumeName_ = getDefaultInstance().getVolumeName(); + bitField0_ = (bitField0_ & ~0x00000001); + volumeName_ = getDefaultInstance().getVolumeName(); + onChanged(); + return this; + } + /** + * required string volume_name = 1; + * + *
+       * the volume name
+       * 
+ */ + public Builder setVolumeNameBytes( + com.google.protobuf.ByteString value) { + if (value == null) { + throw new NullPointerException(); + } + bitField0_ |= 0x00000001; + volumeName_ = value; + onChanged(); return this; } - + // required string target_path = 2; + private java.lang.Object targetPath_ = ""; + /** + * required string target_path = 2; + * + *
+       * the path to the file to which the link is supposed to be created,
+       * relative to the volume root
+       * 
+ */ public boolean hasTargetPath() { - return result.hasTargetPath(); - } + return ((bitField0_ & 0x00000002) == 0x00000002); + } + /** + * required string target_path = 2; + * + *
+       * the path to the file to which the link is supposed to be created,
+       * relative to the volume root
+       * 
+ */ public java.lang.String getTargetPath() { - return result.getTargetPath(); - } - public Builder setTargetPath(java.lang.String value) { + java.lang.Object ref = targetPath_; + if (!(ref instanceof java.lang.String)) { + java.lang.String s = ((com.google.protobuf.ByteString) ref) + .toStringUtf8(); + targetPath_ = s; + return s; + } else { + return (java.lang.String) ref; + } + } + /** + * required string target_path = 2; + * + *
+       * the path to the file to which the link is supposed to be created,
+       * relative to the volume root
+       * 
+ */ + public com.google.protobuf.ByteString + getTargetPathBytes() { + java.lang.Object ref = targetPath_; + if (ref instanceof String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + targetPath_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + /** + * required string target_path = 2; + * + *
+       * the path to the file to which the link is supposed to be created,
+       * relative to the volume root
+       * 
+ */ + public Builder setTargetPath( + java.lang.String value) { if (value == null) { throw new NullPointerException(); } - result.hasTargetPath = true; - result.targetPath_ = value; - return this; - } + bitField0_ |= 0x00000002; + targetPath_ = value; + onChanged(); + return this; + } + /** + * required string target_path = 2; + * + *
+       * the path to the file to which the link is supposed to be created,
+       * relative to the volume root
+       * 
+ */ public Builder clearTargetPath() { - result.hasTargetPath = false; - result.targetPath_ = getDefaultInstance().getTargetPath(); + bitField0_ = (bitField0_ & ~0x00000002); + targetPath_ = getDefaultInstance().getTargetPath(); + onChanged(); + return this; + } + /** + * required string target_path = 2; + * + *
+       * the path to the file to which the link is supposed to be created,
+       * relative to the volume root
+       * 
+ */ + public Builder setTargetPathBytes( + com.google.protobuf.ByteString value) { + if (value == null) { + throw new NullPointerException(); + } + bitField0_ |= 0x00000002; + targetPath_ = value; + onChanged(); return this; } - + // required string link_path = 3; + private java.lang.Object linkPath_ = ""; + /** + * required string link_path = 3; + * + *
+       * the path to the new link, relative to the volume root
+       * 
+ */ public boolean hasLinkPath() { - return result.hasLinkPath(); - } + return ((bitField0_ & 0x00000004) == 0x00000004); + } + /** + * required string link_path = 3; + * + *
+       * the path to the new link, relative to the volume root
+       * 
+ */ public java.lang.String getLinkPath() { - return result.getLinkPath(); - } - public Builder setLinkPath(java.lang.String value) { + java.lang.Object ref = linkPath_; + if (!(ref instanceof java.lang.String)) { + java.lang.String s = ((com.google.protobuf.ByteString) ref) + .toStringUtf8(); + linkPath_ = s; + return s; + } else { + return (java.lang.String) ref; + } + } + /** + * required string link_path = 3; + * + *
+       * the path to the new link, relative to the volume root
+       * 
+ */ + public com.google.protobuf.ByteString + getLinkPathBytes() { + java.lang.Object ref = linkPath_; + if (ref instanceof String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + linkPath_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + /** + * required string link_path = 3; + * + *
+       * the path to the new link, relative to the volume root
+       * 
+ */ + public Builder setLinkPath( + java.lang.String value) { if (value == null) { throw new NullPointerException(); } - result.hasLinkPath = true; - result.linkPath_ = value; - return this; - } + bitField0_ |= 0x00000004; + linkPath_ = value; + onChanged(); + return this; + } + /** + * required string link_path = 3; + * + *
+       * the path to the new link, relative to the volume root
+       * 
+ */ public Builder clearLinkPath() { - result.hasLinkPath = false; - result.linkPath_ = getDefaultInstance().getLinkPath(); + bitField0_ = (bitField0_ & ~0x00000004); + linkPath_ = getDefaultInstance().getLinkPath(); + onChanged(); + return this; + } + /** + * required string link_path = 3; + * + *
+       * the path to the new link, relative to the volume root
+       * 
+ */ + public Builder setLinkPathBytes( + com.google.protobuf.ByteString value) { + if (value == null) { + throw new NullPointerException(); + } + bitField0_ |= 0x00000004; + linkPath_ = value; + onChanged(); return this; } - + // @@protoc_insertion_point(builder_scope:xtreemfs.pbrpc.symlinkRequest) } - + static { defaultInstance = new symlinkRequest(true); - org.xtreemfs.pbrpc.generatedinterfaces.MRC.internalForceInit(); defaultInstance.initFields(); } - + // @@protoc_insertion_point(class_scope:xtreemfs.pbrpc.symlinkRequest) } - + + public interface unlinkRequestOrBuilder + extends com.google.protobuf.MessageOrBuilder { + + // required string volume_name = 1; + /** + * required string volume_name = 1; + * + *
+     * the volume name
+     * 
+ */ + boolean hasVolumeName(); + /** + * required string volume_name = 1; + * + *
+     * the volume name
+     * 
+ */ + java.lang.String getVolumeName(); + /** + * required string volume_name = 1; + * + *
+     * the volume name
+     * 
+ */ + com.google.protobuf.ByteString + getVolumeNameBytes(); + + // required string path = 2; + /** + * required string path = 2; + * + *
+     * the path to the file or directory, relative to the volume root
+     * 
+ */ + boolean hasPath(); + /** + * required string path = 2; + * + *
+     * the path to the file or directory, relative to the volume root
+     * 
+ */ + java.lang.String getPath(); + /** + * required string path = 2; + * + *
+     * the path to the file or directory, relative to the volume root
+     * 
+ */ + com.google.protobuf.ByteString + getPathBytes(); + } + /** + * Protobuf type {@code xtreemfs.pbrpc.unlinkRequest} + * + *
+   * deletes a file or directory
+   * 
+ */ public static final class unlinkRequest extends - com.google.protobuf.GeneratedMessage { + com.google.protobuf.GeneratedMessage + implements unlinkRequestOrBuilder { // Use unlinkRequest.newBuilder() to construct. - private unlinkRequest() { - initFields(); + private unlinkRequest(com.google.protobuf.GeneratedMessage.Builder builder) { + super(builder); + this.unknownFields = builder.getUnknownFields(); } - private unlinkRequest(boolean noInit) {} - + private unlinkRequest(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); } + private static final unlinkRequest defaultInstance; public static unlinkRequest getDefaultInstance() { return defaultInstance; } - + public unlinkRequest getDefaultInstanceForType() { return defaultInstance; } - + + private final com.google.protobuf.UnknownFieldSet unknownFields; + @java.lang.Override + public final com.google.protobuf.UnknownFieldSet + getUnknownFields() { + return this.unknownFields; + } + private unlinkRequest( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + initFields(); + int mutable_bitField0_ = 0; + com.google.protobuf.UnknownFieldSet.Builder unknownFields = + com.google.protobuf.UnknownFieldSet.newBuilder(); + try { + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch (tag) { + case 0: + done = true; + break; + default: { + if (!parseUnknownField(input, unknownFields, + extensionRegistry, tag)) { + done = true; + } + break; + } + case 10: { + bitField0_ |= 0x00000001; + volumeName_ = input.readBytes(); + break; + } + case 18: { + bitField0_ |= 0x00000002; + path_ = input.readBytes(); + break; + } + } + } + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(this); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException( + e.getMessage()).setUnfinishedMessage(this); + } finally { + this.unknownFields = unknownFields.build(); + makeExtensionsImmutable(); + } + } public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { return org.xtreemfs.pbrpc.generatedinterfaces.MRC.internal_static_xtreemfs_pbrpc_unlinkRequest_descriptor; } - + protected com.google.protobuf.GeneratedMessage.FieldAccessorTable internalGetFieldAccessorTable() { - return org.xtreemfs.pbrpc.generatedinterfaces.MRC.internal_static_xtreemfs_pbrpc_unlinkRequest_fieldAccessorTable; + return org.xtreemfs.pbrpc.generatedinterfaces.MRC.internal_static_xtreemfs_pbrpc_unlinkRequest_fieldAccessorTable + .ensureFieldAccessorsInitialized( + org.xtreemfs.pbrpc.generatedinterfaces.MRC.unlinkRequest.class, org.xtreemfs.pbrpc.generatedinterfaces.MRC.unlinkRequest.Builder.class); + } + + public static com.google.protobuf.Parser PARSER = + new com.google.protobuf.AbstractParser() { + public unlinkRequest parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return new unlinkRequest(input, extensionRegistry); + } + }; + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; } - + + private int bitField0_; // required string volume_name = 1; public static final int VOLUME_NAME_FIELD_NUMBER = 1; - private boolean hasVolumeName; - private java.lang.String volumeName_ = ""; - public boolean hasVolumeName() { return hasVolumeName; } - public java.lang.String getVolumeName() { return volumeName_; } - + private java.lang.Object volumeName_; + /** + * required string volume_name = 1; + * + *
+     * the volume name
+     * 
+ */ + public boolean hasVolumeName() { + return ((bitField0_ & 0x00000001) == 0x00000001); + } + /** + * required string volume_name = 1; + * + *
+     * the volume name
+     * 
+ */ + public java.lang.String getVolumeName() { + java.lang.Object ref = volumeName_; + if (ref instanceof java.lang.String) { + return (java.lang.String) ref; + } else { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + if (bs.isValidUtf8()) { + volumeName_ = s; + } + return s; + } + } + /** + * required string volume_name = 1; + * + *
+     * the volume name
+     * 
+ */ + public com.google.protobuf.ByteString + getVolumeNameBytes() { + java.lang.Object ref = volumeName_; + if (ref instanceof java.lang.String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + volumeName_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + // required string path = 2; public static final int PATH_FIELD_NUMBER = 2; - private boolean hasPath; - private java.lang.String path_ = ""; - public boolean hasPath() { return hasPath; } - public java.lang.String getPath() { return path_; } - + private java.lang.Object path_; + /** + * required string path = 2; + * + *
+     * the path to the file or directory, relative to the volume root
+     * 
+ */ + public boolean hasPath() { + return ((bitField0_ & 0x00000002) == 0x00000002); + } + /** + * required string path = 2; + * + *
+     * the path to the file or directory, relative to the volume root
+     * 
+ */ + public java.lang.String getPath() { + java.lang.Object ref = path_; + if (ref instanceof java.lang.String) { + return (java.lang.String) ref; + } else { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + if (bs.isValidUtf8()) { + path_ = s; + } + return s; + } + } + /** + * required string path = 2; + * + *
+     * the path to the file or directory, relative to the volume root
+     * 
+ */ + public com.google.protobuf.ByteString + getPathBytes() { + java.lang.Object ref = path_; + if (ref instanceof java.lang.String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + path_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + private void initFields() { + volumeName_ = ""; + path_ = ""; } + private byte memoizedIsInitialized = -1; public final boolean isInitialized() { - if (!hasVolumeName) return false; - if (!hasPath) return false; + byte isInitialized = memoizedIsInitialized; + if (isInitialized != -1) return isInitialized == 1; + + if (!hasVolumeName()) { + memoizedIsInitialized = 0; + return false; + } + if (!hasPath()) { + memoizedIsInitialized = 0; + return false; + } + memoizedIsInitialized = 1; return true; } - + public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException { getSerializedSize(); - if (hasVolumeName()) { - output.writeString(1, getVolumeName()); + if (((bitField0_ & 0x00000001) == 0x00000001)) { + output.writeBytes(1, getVolumeNameBytes()); } - if (hasPath()) { - output.writeString(2, getPath()); + if (((bitField0_ & 0x00000002) == 0x00000002)) { + output.writeBytes(2, getPathBytes()); } getUnknownFields().writeTo(output); } - + private int memoizedSerializedSize = -1; public int getSerializedSize() { int size = memoizedSerializedSize; if (size != -1) return size; - + size = 0; - if (hasVolumeName()) { + if (((bitField0_ & 0x00000001) == 0x00000001)) { size += com.google.protobuf.CodedOutputStream - .computeStringSize(1, getVolumeName()); + .computeBytesSize(1, getVolumeNameBytes()); } - if (hasPath()) { + if (((bitField0_ & 0x00000002) == 0x00000002)) { size += com.google.protobuf.CodedOutputStream - .computeStringSize(2, getPath()); + .computeBytesSize(2, getPathBytes()); } size += getUnknownFields().getSerializedSize(); memoizedSerializedSize = size; return size; } - + + private static final long serialVersionUID = 0L; + @java.lang.Override + protected java.lang.Object writeReplace() + throws java.io.ObjectStreamException { + return super.writeReplace(); + } + public static org.xtreemfs.pbrpc.generatedinterfaces.MRC.unlinkRequest parseFrom( com.google.protobuf.ByteString data) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data).buildParsed(); + return PARSER.parseFrom(data); } public static org.xtreemfs.pbrpc.generatedinterfaces.MRC.unlinkRequest parseFrom( com.google.protobuf.ByteString data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(data, extensionRegistry); } public static org.xtreemfs.pbrpc.generatedinterfaces.MRC.unlinkRequest parseFrom(byte[] data) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data).buildParsed(); + return PARSER.parseFrom(data); } public static org.xtreemfs.pbrpc.generatedinterfaces.MRC.unlinkRequest parseFrom( byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(data, extensionRegistry); } public static org.xtreemfs.pbrpc.generatedinterfaces.MRC.unlinkRequest parseFrom(java.io.InputStream input) throws java.io.IOException { - return newBuilder().mergeFrom(input).buildParsed(); + return PARSER.parseFrom(input); } public static org.xtreemfs.pbrpc.generatedinterfaces.MRC.unlinkRequest parseFrom( java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - return newBuilder().mergeFrom(input, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(input, extensionRegistry); } public static org.xtreemfs.pbrpc.generatedinterfaces.MRC.unlinkRequest parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException { - Builder builder = newBuilder(); - if (builder.mergeDelimitedFrom(input)) { - return builder.buildParsed(); - } else { - return null; - } + return PARSER.parseDelimitedFrom(input); } public static org.xtreemfs.pbrpc.generatedinterfaces.MRC.unlinkRequest parseDelimitedFrom( java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - Builder builder = newBuilder(); - if (builder.mergeDelimitedFrom(input, extensionRegistry)) { - return builder.buildParsed(); - } else { - return null; - } + return PARSER.parseDelimitedFrom(input, extensionRegistry); } public static org.xtreemfs.pbrpc.generatedinterfaces.MRC.unlinkRequest parseFrom( com.google.protobuf.CodedInputStream input) throws java.io.IOException { - return newBuilder().mergeFrom(input).buildParsed(); + return PARSER.parseFrom(input); } public static org.xtreemfs.pbrpc.generatedinterfaces.MRC.unlinkRequest parseFrom( com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - return newBuilder().mergeFrom(input, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(input, extensionRegistry); } - + public static Builder newBuilder() { return Builder.create(); } public Builder newBuilderForType() { return newBuilder(); } public static Builder newBuilder(org.xtreemfs.pbrpc.generatedinterfaces.MRC.unlinkRequest prototype) { return newBuilder().mergeFrom(prototype); } public Builder toBuilder() { return newBuilder(this); } - + + @java.lang.Override + protected Builder newBuilderForType( + com.google.protobuf.GeneratedMessage.BuilderParent parent) { + Builder builder = new Builder(parent); + return builder; + } + /** + * Protobuf type {@code xtreemfs.pbrpc.unlinkRequest} + * + *
+     * deletes a file or directory
+     * 
+ */ public static final class Builder extends - com.google.protobuf.GeneratedMessage.Builder { - private org.xtreemfs.pbrpc.generatedinterfaces.MRC.unlinkRequest result; - + com.google.protobuf.GeneratedMessage.Builder + implements org.xtreemfs.pbrpc.generatedinterfaces.MRC.unlinkRequestOrBuilder { + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return org.xtreemfs.pbrpc.generatedinterfaces.MRC.internal_static_xtreemfs_pbrpc_unlinkRequest_descriptor; + } + + protected com.google.protobuf.GeneratedMessage.FieldAccessorTable + internalGetFieldAccessorTable() { + return org.xtreemfs.pbrpc.generatedinterfaces.MRC.internal_static_xtreemfs_pbrpc_unlinkRequest_fieldAccessorTable + .ensureFieldAccessorsInitialized( + org.xtreemfs.pbrpc.generatedinterfaces.MRC.unlinkRequest.class, org.xtreemfs.pbrpc.generatedinterfaces.MRC.unlinkRequest.Builder.class); + } + // Construct using org.xtreemfs.pbrpc.generatedinterfaces.MRC.unlinkRequest.newBuilder() - private Builder() {} - - private static Builder create() { - Builder builder = new Builder(); - builder.result = new org.xtreemfs.pbrpc.generatedinterfaces.MRC.unlinkRequest(); - return builder; + private Builder() { + maybeForceBuilderInitialization(); } - - protected org.xtreemfs.pbrpc.generatedinterfaces.MRC.unlinkRequest internalGetResult() { - return result; + + private Builder( + com.google.protobuf.GeneratedMessage.BuilderParent parent) { + super(parent); + maybeForceBuilderInitialization(); } - - public Builder clear() { - if (result == null) { - throw new IllegalStateException( - "Cannot call clear() after build()."); + private void maybeForceBuilderInitialization() { + if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) { } - result = new org.xtreemfs.pbrpc.generatedinterfaces.MRC.unlinkRequest(); + } + private static Builder create() { + return new Builder(); + } + + public Builder clear() { + super.clear(); + volumeName_ = ""; + bitField0_ = (bitField0_ & ~0x00000001); + path_ = ""; + bitField0_ = (bitField0_ & ~0x00000002); return this; } - + public Builder clone() { - return create().mergeFrom(result); + return create().mergeFrom(buildPartial()); } - + public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() { - return org.xtreemfs.pbrpc.generatedinterfaces.MRC.unlinkRequest.getDescriptor(); + return org.xtreemfs.pbrpc.generatedinterfaces.MRC.internal_static_xtreemfs_pbrpc_unlinkRequest_descriptor; } - + public org.xtreemfs.pbrpc.generatedinterfaces.MRC.unlinkRequest getDefaultInstanceForType() { return org.xtreemfs.pbrpc.generatedinterfaces.MRC.unlinkRequest.getDefaultInstance(); } - - public boolean isInitialized() { - return result.isInitialized(); - } + public org.xtreemfs.pbrpc.generatedinterfaces.MRC.unlinkRequest build() { - if (result != null && !isInitialized()) { + org.xtreemfs.pbrpc.generatedinterfaces.MRC.unlinkRequest result = buildPartial(); + if (!result.isInitialized()) { throw newUninitializedMessageException(result); } - return buildPartial(); - } - - private org.xtreemfs.pbrpc.generatedinterfaces.MRC.unlinkRequest buildParsed() - throws com.google.protobuf.InvalidProtocolBufferException { - if (!isInitialized()) { - throw newUninitializedMessageException( - result).asInvalidProtocolBufferException(); - } - return buildPartial(); + return result; } - + public org.xtreemfs.pbrpc.generatedinterfaces.MRC.unlinkRequest buildPartial() { - if (result == null) { - throw new IllegalStateException( - "build() has already been called on this Builder."); - } - org.xtreemfs.pbrpc.generatedinterfaces.MRC.unlinkRequest returnMe = result; - result = null; - return returnMe; + org.xtreemfs.pbrpc.generatedinterfaces.MRC.unlinkRequest result = new org.xtreemfs.pbrpc.generatedinterfaces.MRC.unlinkRequest(this); + int from_bitField0_ = bitField0_; + int to_bitField0_ = 0; + if (((from_bitField0_ & 0x00000001) == 0x00000001)) { + to_bitField0_ |= 0x00000001; + } + result.volumeName_ = volumeName_; + if (((from_bitField0_ & 0x00000002) == 0x00000002)) { + to_bitField0_ |= 0x00000002; + } + result.path_ = path_; + result.bitField0_ = to_bitField0_; + onBuilt(); + return result; } - + public Builder mergeFrom(com.google.protobuf.Message other) { if (other instanceof org.xtreemfs.pbrpc.generatedinterfaces.MRC.unlinkRequest) { return mergeFrom((org.xtreemfs.pbrpc.generatedinterfaces.MRC.unlinkRequest)other); @@ -12470,332 +30271,712 @@ public final class MRC { return this; } } - + public Builder mergeFrom(org.xtreemfs.pbrpc.generatedinterfaces.MRC.unlinkRequest other) { if (other == org.xtreemfs.pbrpc.generatedinterfaces.MRC.unlinkRequest.getDefaultInstance()) return this; if (other.hasVolumeName()) { - setVolumeName(other.getVolumeName()); + bitField0_ |= 0x00000001; + volumeName_ = other.volumeName_; + onChanged(); } if (other.hasPath()) { - setPath(other.getPath()); + bitField0_ |= 0x00000002; + path_ = other.path_; + onChanged(); } this.mergeUnknownFields(other.getUnknownFields()); return this; } - + + public final boolean isInitialized() { + if (!hasVolumeName()) { + + return false; + } + if (!hasPath()) { + + return false; + } + return true; + } + public Builder mergeFrom( com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - com.google.protobuf.UnknownFieldSet.Builder unknownFields = - com.google.protobuf.UnknownFieldSet.newBuilder( - this.getUnknownFields()); - while (true) { - int tag = input.readTag(); - switch (tag) { - case 0: - this.setUnknownFields(unknownFields.build()); - return this; - default: { - if (!parseUnknownField(input, unknownFields, - extensionRegistry, tag)) { - this.setUnknownFields(unknownFields.build()); - return this; - } - break; - } - case 10: { - setVolumeName(input.readString()); - break; - } - case 18: { - setPath(input.readString()); - break; - } + org.xtreemfs.pbrpc.generatedinterfaces.MRC.unlinkRequest parsedMessage = null; + try { + parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + parsedMessage = (org.xtreemfs.pbrpc.generatedinterfaces.MRC.unlinkRequest) e.getUnfinishedMessage(); + throw e; + } finally { + if (parsedMessage != null) { + mergeFrom(parsedMessage); } } + return this; } - - + private int bitField0_; + // required string volume_name = 1; + private java.lang.Object volumeName_ = ""; + /** + * required string volume_name = 1; + * + *
+       * the volume name
+       * 
+ */ public boolean hasVolumeName() { - return result.hasVolumeName(); - } + return ((bitField0_ & 0x00000001) == 0x00000001); + } + /** + * required string volume_name = 1; + * + *
+       * the volume name
+       * 
+ */ public java.lang.String getVolumeName() { - return result.getVolumeName(); - } - public Builder setVolumeName(java.lang.String value) { + java.lang.Object ref = volumeName_; + if (!(ref instanceof java.lang.String)) { + java.lang.String s = ((com.google.protobuf.ByteString) ref) + .toStringUtf8(); + volumeName_ = s; + return s; + } else { + return (java.lang.String) ref; + } + } + /** + * required string volume_name = 1; + * + *
+       * the volume name
+       * 
+ */ + public com.google.protobuf.ByteString + getVolumeNameBytes() { + java.lang.Object ref = volumeName_; + if (ref instanceof String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + volumeName_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + /** + * required string volume_name = 1; + * + *
+       * the volume name
+       * 
+ */ + public Builder setVolumeName( + java.lang.String value) { if (value == null) { throw new NullPointerException(); } - result.hasVolumeName = true; - result.volumeName_ = value; - return this; - } + bitField0_ |= 0x00000001; + volumeName_ = value; + onChanged(); + return this; + } + /** + * required string volume_name = 1; + * + *
+       * the volume name
+       * 
+ */ public Builder clearVolumeName() { - result.hasVolumeName = false; - result.volumeName_ = getDefaultInstance().getVolumeName(); + bitField0_ = (bitField0_ & ~0x00000001); + volumeName_ = getDefaultInstance().getVolumeName(); + onChanged(); + return this; + } + /** + * required string volume_name = 1; + * + *
+       * the volume name
+       * 
+ */ + public Builder setVolumeNameBytes( + com.google.protobuf.ByteString value) { + if (value == null) { + throw new NullPointerException(); + } + bitField0_ |= 0x00000001; + volumeName_ = value; + onChanged(); return this; } - + // required string path = 2; + private java.lang.Object path_ = ""; + /** + * required string path = 2; + * + *
+       * the path to the file or directory, relative to the volume root
+       * 
+ */ public boolean hasPath() { - return result.hasPath(); - } + return ((bitField0_ & 0x00000002) == 0x00000002); + } + /** + * required string path = 2; + * + *
+       * the path to the file or directory, relative to the volume root
+       * 
+ */ public java.lang.String getPath() { - return result.getPath(); - } - public Builder setPath(java.lang.String value) { + java.lang.Object ref = path_; + if (!(ref instanceof java.lang.String)) { + java.lang.String s = ((com.google.protobuf.ByteString) ref) + .toStringUtf8(); + path_ = s; + return s; + } else { + return (java.lang.String) ref; + } + } + /** + * required string path = 2; + * + *
+       * the path to the file or directory, relative to the volume root
+       * 
+ */ + public com.google.protobuf.ByteString + getPathBytes() { + java.lang.Object ref = path_; + if (ref instanceof String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + path_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + /** + * required string path = 2; + * + *
+       * the path to the file or directory, relative to the volume root
+       * 
+ */ + public Builder setPath( + java.lang.String value) { if (value == null) { throw new NullPointerException(); } - result.hasPath = true; - result.path_ = value; - return this; - } + bitField0_ |= 0x00000002; + path_ = value; + onChanged(); + return this; + } + /** + * required string path = 2; + * + *
+       * the path to the file or directory, relative to the volume root
+       * 
+ */ public Builder clearPath() { - result.hasPath = false; - result.path_ = getDefaultInstance().getPath(); + bitField0_ = (bitField0_ & ~0x00000002); + path_ = getDefaultInstance().getPath(); + onChanged(); + return this; + } + /** + * required string path = 2; + * + *
+       * the path to the file or directory, relative to the volume root
+       * 
+ */ + public Builder setPathBytes( + com.google.protobuf.ByteString value) { + if (value == null) { + throw new NullPointerException(); + } + bitField0_ |= 0x00000002; + path_ = value; + onChanged(); return this; } - + // @@protoc_insertion_point(builder_scope:xtreemfs.pbrpc.unlinkRequest) } - + static { defaultInstance = new unlinkRequest(true); - org.xtreemfs.pbrpc.generatedinterfaces.MRC.internalForceInit(); defaultInstance.initFields(); } - + // @@protoc_insertion_point(class_scope:xtreemfs.pbrpc.unlinkRequest) } - + + public interface unlinkResponseOrBuilder + extends com.google.protobuf.MessageOrBuilder { + + // required fixed32 timestamp_s = 1; + /** + * required fixed32 timestamp_s = 1; + * + *
+     * the server timestamp in seconds since 1970 to which the file and
+     * directory timestamps were updated
+     * 
+ */ + boolean hasTimestampS(); + /** + * required fixed32 timestamp_s = 1; + * + *
+     * the server timestamp in seconds since 1970 to which the file and
+     * directory timestamps were updated
+     * 
+ */ + int getTimestampS(); + + // optional .xtreemfs.pbrpc.FileCredentials creds = 2; + /** + * optional .xtreemfs.pbrpc.FileCredentials creds = 2; + * + *
+     * an optional set of file credentials that may contain a capabiltiy
+     * for the deletion of the previous file at the given target path
+     * 
+ */ + boolean hasCreds(); + /** + * optional .xtreemfs.pbrpc.FileCredentials creds = 2; + * + *
+     * an optional set of file credentials that may contain a capabiltiy
+     * for the deletion of the previous file at the given target path
+     * 
+ */ + org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials getCreds(); + /** + * optional .xtreemfs.pbrpc.FileCredentials creds = 2; + * + *
+     * an optional set of file credentials that may contain a capabiltiy
+     * for the deletion of the previous file at the given target path
+     * 
+ */ + org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentialsOrBuilder getCredsOrBuilder(); + } + /** + * Protobuf type {@code xtreemfs.pbrpc.unlinkResponse} + * + *
+   * returns the result of an unlink operation
+   * 
+ */ public static final class unlinkResponse extends - com.google.protobuf.GeneratedMessage { + com.google.protobuf.GeneratedMessage + implements unlinkResponseOrBuilder { // Use unlinkResponse.newBuilder() to construct. - private unlinkResponse() { - initFields(); + private unlinkResponse(com.google.protobuf.GeneratedMessage.Builder builder) { + super(builder); + this.unknownFields = builder.getUnknownFields(); } - private unlinkResponse(boolean noInit) {} - + private unlinkResponse(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); } + private static final unlinkResponse defaultInstance; public static unlinkResponse getDefaultInstance() { return defaultInstance; } - + public unlinkResponse getDefaultInstanceForType() { return defaultInstance; } - + + private final com.google.protobuf.UnknownFieldSet unknownFields; + @java.lang.Override + public final com.google.protobuf.UnknownFieldSet + getUnknownFields() { + return this.unknownFields; + } + private unlinkResponse( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + initFields(); + int mutable_bitField0_ = 0; + com.google.protobuf.UnknownFieldSet.Builder unknownFields = + com.google.protobuf.UnknownFieldSet.newBuilder(); + try { + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch (tag) { + case 0: + done = true; + break; + default: { + if (!parseUnknownField(input, unknownFields, + extensionRegistry, tag)) { + done = true; + } + break; + } + case 13: { + bitField0_ |= 0x00000001; + timestampS_ = input.readFixed32(); + break; + } + case 18: { + org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials.Builder subBuilder = null; + if (((bitField0_ & 0x00000002) == 0x00000002)) { + subBuilder = creds_.toBuilder(); + } + creds_ = input.readMessage(org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials.PARSER, extensionRegistry); + if (subBuilder != null) { + subBuilder.mergeFrom(creds_); + creds_ = subBuilder.buildPartial(); + } + bitField0_ |= 0x00000002; + break; + } + } + } + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(this); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException( + e.getMessage()).setUnfinishedMessage(this); + } finally { + this.unknownFields = unknownFields.build(); + makeExtensionsImmutable(); + } + } public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { return org.xtreemfs.pbrpc.generatedinterfaces.MRC.internal_static_xtreemfs_pbrpc_unlinkResponse_descriptor; } - + protected com.google.protobuf.GeneratedMessage.FieldAccessorTable internalGetFieldAccessorTable() { - return org.xtreemfs.pbrpc.generatedinterfaces.MRC.internal_static_xtreemfs_pbrpc_unlinkResponse_fieldAccessorTable; + return org.xtreemfs.pbrpc.generatedinterfaces.MRC.internal_static_xtreemfs_pbrpc_unlinkResponse_fieldAccessorTable + .ensureFieldAccessorsInitialized( + org.xtreemfs.pbrpc.generatedinterfaces.MRC.unlinkResponse.class, org.xtreemfs.pbrpc.generatedinterfaces.MRC.unlinkResponse.Builder.class); + } + + public static com.google.protobuf.Parser PARSER = + new com.google.protobuf.AbstractParser() { + public unlinkResponse parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return new unlinkResponse(input, extensionRegistry); + } + }; + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; } - + + private int bitField0_; // required fixed32 timestamp_s = 1; public static final int TIMESTAMP_S_FIELD_NUMBER = 1; - private boolean hasTimestampS; - private int timestampS_ = 0; - public boolean hasTimestampS() { return hasTimestampS; } - public int getTimestampS() { return timestampS_; } - + private int timestampS_; + /** + * required fixed32 timestamp_s = 1; + * + *
+     * the server timestamp in seconds since 1970 to which the file and
+     * directory timestamps were updated
+     * 
+ */ + public boolean hasTimestampS() { + return ((bitField0_ & 0x00000001) == 0x00000001); + } + /** + * required fixed32 timestamp_s = 1; + * + *
+     * the server timestamp in seconds since 1970 to which the file and
+     * directory timestamps were updated
+     * 
+ */ + public int getTimestampS() { + return timestampS_; + } + // optional .xtreemfs.pbrpc.FileCredentials creds = 2; public static final int CREDS_FIELD_NUMBER = 2; - private boolean hasCreds; private org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials creds_; - public boolean hasCreds() { return hasCreds; } - public org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials getCreds() { return creds_; } - + /** + * optional .xtreemfs.pbrpc.FileCredentials creds = 2; + * + *
+     * an optional set of file credentials that may contain a capabiltiy
+     * for the deletion of the previous file at the given target path
+     * 
+ */ + public boolean hasCreds() { + return ((bitField0_ & 0x00000002) == 0x00000002); + } + /** + * optional .xtreemfs.pbrpc.FileCredentials creds = 2; + * + *
+     * an optional set of file credentials that may contain a capabiltiy
+     * for the deletion of the previous file at the given target path
+     * 
+ */ + public org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials getCreds() { + return creds_; + } + /** + * optional .xtreemfs.pbrpc.FileCredentials creds = 2; + * + *
+     * an optional set of file credentials that may contain a capabiltiy
+     * for the deletion of the previous file at the given target path
+     * 
+ */ + public org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentialsOrBuilder getCredsOrBuilder() { + return creds_; + } + private void initFields() { + timestampS_ = 0; creds_ = org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials.getDefaultInstance(); } + private byte memoizedIsInitialized = -1; public final boolean isInitialized() { - if (!hasTimestampS) return false; + byte isInitialized = memoizedIsInitialized; + if (isInitialized != -1) return isInitialized == 1; + + if (!hasTimestampS()) { + memoizedIsInitialized = 0; + return false; + } if (hasCreds()) { - if (!getCreds().isInitialized()) return false; + if (!getCreds().isInitialized()) { + memoizedIsInitialized = 0; + return false; + } } + memoizedIsInitialized = 1; return true; } - + public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException { getSerializedSize(); - if (hasTimestampS()) { - output.writeFixed32(1, getTimestampS()); + if (((bitField0_ & 0x00000001) == 0x00000001)) { + output.writeFixed32(1, timestampS_); } - if (hasCreds()) { - output.writeMessage(2, getCreds()); + if (((bitField0_ & 0x00000002) == 0x00000002)) { + output.writeMessage(2, creds_); } getUnknownFields().writeTo(output); } - + private int memoizedSerializedSize = -1; public int getSerializedSize() { int size = memoizedSerializedSize; if (size != -1) return size; - + size = 0; - if (hasTimestampS()) { + if (((bitField0_ & 0x00000001) == 0x00000001)) { size += com.google.protobuf.CodedOutputStream - .computeFixed32Size(1, getTimestampS()); + .computeFixed32Size(1, timestampS_); } - if (hasCreds()) { + if (((bitField0_ & 0x00000002) == 0x00000002)) { size += com.google.protobuf.CodedOutputStream - .computeMessageSize(2, getCreds()); + .computeMessageSize(2, creds_); } size += getUnknownFields().getSerializedSize(); memoizedSerializedSize = size; return size; } - + + private static final long serialVersionUID = 0L; + @java.lang.Override + protected java.lang.Object writeReplace() + throws java.io.ObjectStreamException { + return super.writeReplace(); + } + public static org.xtreemfs.pbrpc.generatedinterfaces.MRC.unlinkResponse parseFrom( com.google.protobuf.ByteString data) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data).buildParsed(); + return PARSER.parseFrom(data); } public static org.xtreemfs.pbrpc.generatedinterfaces.MRC.unlinkResponse parseFrom( com.google.protobuf.ByteString data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(data, extensionRegistry); } public static org.xtreemfs.pbrpc.generatedinterfaces.MRC.unlinkResponse parseFrom(byte[] data) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data).buildParsed(); + return PARSER.parseFrom(data); } public static org.xtreemfs.pbrpc.generatedinterfaces.MRC.unlinkResponse parseFrom( byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(data, extensionRegistry); } public static org.xtreemfs.pbrpc.generatedinterfaces.MRC.unlinkResponse parseFrom(java.io.InputStream input) throws java.io.IOException { - return newBuilder().mergeFrom(input).buildParsed(); + return PARSER.parseFrom(input); } public static org.xtreemfs.pbrpc.generatedinterfaces.MRC.unlinkResponse parseFrom( java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - return newBuilder().mergeFrom(input, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(input, extensionRegistry); } public static org.xtreemfs.pbrpc.generatedinterfaces.MRC.unlinkResponse parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException { - Builder builder = newBuilder(); - if (builder.mergeDelimitedFrom(input)) { - return builder.buildParsed(); - } else { - return null; - } + return PARSER.parseDelimitedFrom(input); } public static org.xtreemfs.pbrpc.generatedinterfaces.MRC.unlinkResponse parseDelimitedFrom( java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - Builder builder = newBuilder(); - if (builder.mergeDelimitedFrom(input, extensionRegistry)) { - return builder.buildParsed(); - } else { - return null; - } + return PARSER.parseDelimitedFrom(input, extensionRegistry); } public static org.xtreemfs.pbrpc.generatedinterfaces.MRC.unlinkResponse parseFrom( com.google.protobuf.CodedInputStream input) throws java.io.IOException { - return newBuilder().mergeFrom(input).buildParsed(); + return PARSER.parseFrom(input); } public static org.xtreemfs.pbrpc.generatedinterfaces.MRC.unlinkResponse parseFrom( com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - return newBuilder().mergeFrom(input, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(input, extensionRegistry); } - + public static Builder newBuilder() { return Builder.create(); } public Builder newBuilderForType() { return newBuilder(); } public static Builder newBuilder(org.xtreemfs.pbrpc.generatedinterfaces.MRC.unlinkResponse prototype) { return newBuilder().mergeFrom(prototype); } public Builder toBuilder() { return newBuilder(this); } - + + @java.lang.Override + protected Builder newBuilderForType( + com.google.protobuf.GeneratedMessage.BuilderParent parent) { + Builder builder = new Builder(parent); + return builder; + } + /** + * Protobuf type {@code xtreemfs.pbrpc.unlinkResponse} + * + *
+     * returns the result of an unlink operation
+     * 
+ */ public static final class Builder extends - com.google.protobuf.GeneratedMessage.Builder { - private org.xtreemfs.pbrpc.generatedinterfaces.MRC.unlinkResponse result; - + com.google.protobuf.GeneratedMessage.Builder + implements org.xtreemfs.pbrpc.generatedinterfaces.MRC.unlinkResponseOrBuilder { + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return org.xtreemfs.pbrpc.generatedinterfaces.MRC.internal_static_xtreemfs_pbrpc_unlinkResponse_descriptor; + } + + protected com.google.protobuf.GeneratedMessage.FieldAccessorTable + internalGetFieldAccessorTable() { + return org.xtreemfs.pbrpc.generatedinterfaces.MRC.internal_static_xtreemfs_pbrpc_unlinkResponse_fieldAccessorTable + .ensureFieldAccessorsInitialized( + org.xtreemfs.pbrpc.generatedinterfaces.MRC.unlinkResponse.class, org.xtreemfs.pbrpc.generatedinterfaces.MRC.unlinkResponse.Builder.class); + } + // Construct using org.xtreemfs.pbrpc.generatedinterfaces.MRC.unlinkResponse.newBuilder() - private Builder() {} - - private static Builder create() { - Builder builder = new Builder(); - builder.result = new org.xtreemfs.pbrpc.generatedinterfaces.MRC.unlinkResponse(); - return builder; + private Builder() { + maybeForceBuilderInitialization(); } - - protected org.xtreemfs.pbrpc.generatedinterfaces.MRC.unlinkResponse internalGetResult() { - return result; + + private Builder( + com.google.protobuf.GeneratedMessage.BuilderParent parent) { + super(parent); + maybeForceBuilderInitialization(); } - + private void maybeForceBuilderInitialization() { + if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) { + getCredsFieldBuilder(); + } + } + private static Builder create() { + return new Builder(); + } + public Builder clear() { - if (result == null) { - throw new IllegalStateException( - "Cannot call clear() after build()."); + super.clear(); + timestampS_ = 0; + bitField0_ = (bitField0_ & ~0x00000001); + if (credsBuilder_ == null) { + creds_ = org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials.getDefaultInstance(); + } else { + credsBuilder_.clear(); } - result = new org.xtreemfs.pbrpc.generatedinterfaces.MRC.unlinkResponse(); + bitField0_ = (bitField0_ & ~0x00000002); return this; } - + public Builder clone() { - return create().mergeFrom(result); + return create().mergeFrom(buildPartial()); } - + public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() { - return org.xtreemfs.pbrpc.generatedinterfaces.MRC.unlinkResponse.getDescriptor(); + return org.xtreemfs.pbrpc.generatedinterfaces.MRC.internal_static_xtreemfs_pbrpc_unlinkResponse_descriptor; } - + public org.xtreemfs.pbrpc.generatedinterfaces.MRC.unlinkResponse getDefaultInstanceForType() { return org.xtreemfs.pbrpc.generatedinterfaces.MRC.unlinkResponse.getDefaultInstance(); } - - public boolean isInitialized() { - return result.isInitialized(); - } + public org.xtreemfs.pbrpc.generatedinterfaces.MRC.unlinkResponse build() { - if (result != null && !isInitialized()) { + org.xtreemfs.pbrpc.generatedinterfaces.MRC.unlinkResponse result = buildPartial(); + if (!result.isInitialized()) { throw newUninitializedMessageException(result); } - return buildPartial(); - } - - private org.xtreemfs.pbrpc.generatedinterfaces.MRC.unlinkResponse buildParsed() - throws com.google.protobuf.InvalidProtocolBufferException { - if (!isInitialized()) { - throw newUninitializedMessageException( - result).asInvalidProtocolBufferException(); - } - return buildPartial(); + return result; } - + public org.xtreemfs.pbrpc.generatedinterfaces.MRC.unlinkResponse buildPartial() { - if (result == null) { - throw new IllegalStateException( - "build() has already been called on this Builder."); + org.xtreemfs.pbrpc.generatedinterfaces.MRC.unlinkResponse result = new org.xtreemfs.pbrpc.generatedinterfaces.MRC.unlinkResponse(this); + int from_bitField0_ = bitField0_; + int to_bitField0_ = 0; + if (((from_bitField0_ & 0x00000001) == 0x00000001)) { + to_bitField0_ |= 0x00000001; + } + result.timestampS_ = timestampS_; + if (((from_bitField0_ & 0x00000002) == 0x00000002)) { + to_bitField0_ |= 0x00000002; + } + if (credsBuilder_ == null) { + result.creds_ = creds_; + } else { + result.creds_ = credsBuilder_.build(); } - org.xtreemfs.pbrpc.generatedinterfaces.MRC.unlinkResponse returnMe = result; - result = null; - return returnMe; + result.bitField0_ = to_bitField0_; + onBuilt(); + return result; } - + public Builder mergeFrom(com.google.protobuf.Message other) { if (other instanceof org.xtreemfs.pbrpc.generatedinterfaces.MRC.unlinkResponse) { return mergeFrom((org.xtreemfs.pbrpc.generatedinterfaces.MRC.unlinkResponse)other); @@ -12804,7 +30985,7 @@ public final class MRC { return this; } } - + public Builder mergeFrom(org.xtreemfs.pbrpc.generatedinterfaces.MRC.unlinkResponse other) { if (other == org.xtreemfs.pbrpc.generatedinterfaces.MRC.unlinkResponse.getDefaultInstance()) return this; if (other.hasTimestampS()) { @@ -12816,350 +30997,819 @@ public final class MRC { this.mergeUnknownFields(other.getUnknownFields()); return this; } - + + public final boolean isInitialized() { + if (!hasTimestampS()) { + + return false; + } + if (hasCreds()) { + if (!getCreds().isInitialized()) { + + return false; + } + } + return true; + } + public Builder mergeFrom( com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - com.google.protobuf.UnknownFieldSet.Builder unknownFields = - com.google.protobuf.UnknownFieldSet.newBuilder( - this.getUnknownFields()); - while (true) { - int tag = input.readTag(); - switch (tag) { - case 0: - this.setUnknownFields(unknownFields.build()); - return this; - default: { - if (!parseUnknownField(input, unknownFields, - extensionRegistry, tag)) { - this.setUnknownFields(unknownFields.build()); - return this; - } - break; - } - case 13: { - setTimestampS(input.readFixed32()); - break; - } - case 18: { - org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials.Builder subBuilder = org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials.newBuilder(); - if (hasCreds()) { - subBuilder.mergeFrom(getCreds()); - } - input.readMessage(subBuilder, extensionRegistry); - setCreds(subBuilder.buildPartial()); - break; - } + org.xtreemfs.pbrpc.generatedinterfaces.MRC.unlinkResponse parsedMessage = null; + try { + parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + parsedMessage = (org.xtreemfs.pbrpc.generatedinterfaces.MRC.unlinkResponse) e.getUnfinishedMessage(); + throw e; + } finally { + if (parsedMessage != null) { + mergeFrom(parsedMessage); } } + return this; } - - + private int bitField0_; + // required fixed32 timestamp_s = 1; + private int timestampS_ ; + /** + * required fixed32 timestamp_s = 1; + * + *
+       * the server timestamp in seconds since 1970 to which the file and
+       * directory timestamps were updated
+       * 
+ */ public boolean hasTimestampS() { - return result.hasTimestampS(); - } + return ((bitField0_ & 0x00000001) == 0x00000001); + } + /** + * required fixed32 timestamp_s = 1; + * + *
+       * the server timestamp in seconds since 1970 to which the file and
+       * directory timestamps were updated
+       * 
+ */ public int getTimestampS() { - return result.getTimestampS(); - } - public Builder setTimestampS(int value) { - result.hasTimestampS = true; - result.timestampS_ = value; - return this; - } + return timestampS_; + } + /** + * required fixed32 timestamp_s = 1; + * + *
+       * the server timestamp in seconds since 1970 to which the file and
+       * directory timestamps were updated
+       * 
+ */ + public Builder setTimestampS(int value) { + bitField0_ |= 0x00000001; + timestampS_ = value; + onChanged(); + return this; + } + /** + * required fixed32 timestamp_s = 1; + * + *
+       * the server timestamp in seconds since 1970 to which the file and
+       * directory timestamps were updated
+       * 
+ */ public Builder clearTimestampS() { - result.hasTimestampS = false; - result.timestampS_ = 0; + bitField0_ = (bitField0_ & ~0x00000001); + timestampS_ = 0; + onChanged(); return this; } - + // optional .xtreemfs.pbrpc.FileCredentials creds = 2; + private org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials creds_ = org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials.getDefaultInstance(); + private com.google.protobuf.SingleFieldBuilder< + org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials, org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials.Builder, org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentialsOrBuilder> credsBuilder_; + /** + * optional .xtreemfs.pbrpc.FileCredentials creds = 2; + * + *
+       * an optional set of file credentials that may contain a capabiltiy
+       * for the deletion of the previous file at the given target path
+       * 
+ */ public boolean hasCreds() { - return result.hasCreds(); - } + return ((bitField0_ & 0x00000002) == 0x00000002); + } + /** + * optional .xtreemfs.pbrpc.FileCredentials creds = 2; + * + *
+       * an optional set of file credentials that may contain a capabiltiy
+       * for the deletion of the previous file at the given target path
+       * 
+ */ public org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials getCreds() { - return result.getCreds(); + if (credsBuilder_ == null) { + return creds_; + } else { + return credsBuilder_.getMessage(); + } } + /** + * optional .xtreemfs.pbrpc.FileCredentials creds = 2; + * + *
+       * an optional set of file credentials that may contain a capabiltiy
+       * for the deletion of the previous file at the given target path
+       * 
+ */ public Builder setCreds(org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials value) { - if (value == null) { - throw new NullPointerException(); + if (credsBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + creds_ = value; + onChanged(); + } else { + credsBuilder_.setMessage(value); + } + bitField0_ |= 0x00000002; + return this; + } + /** + * optional .xtreemfs.pbrpc.FileCredentials creds = 2; + * + *
+       * an optional set of file credentials that may contain a capabiltiy
+       * for the deletion of the previous file at the given target path
+       * 
+ */ + public Builder setCreds( + org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials.Builder builderForValue) { + if (credsBuilder_ == null) { + creds_ = builderForValue.build(); + onChanged(); + } else { + credsBuilder_.setMessage(builderForValue.build()); } - result.hasCreds = true; - result.creds_ = value; - return this; - } - public Builder setCreds(org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials.Builder builderForValue) { - result.hasCreds = true; - result.creds_ = builderForValue.build(); + bitField0_ |= 0x00000002; return this; } + /** + * optional .xtreemfs.pbrpc.FileCredentials creds = 2; + * + *
+       * an optional set of file credentials that may contain a capabiltiy
+       * for the deletion of the previous file at the given target path
+       * 
+ */ public Builder mergeCreds(org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials value) { - if (result.hasCreds() && - result.creds_ != org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials.getDefaultInstance()) { - result.creds_ = - org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials.newBuilder(result.creds_).mergeFrom(value).buildPartial(); + if (credsBuilder_ == null) { + if (((bitField0_ & 0x00000002) == 0x00000002) && + creds_ != org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials.getDefaultInstance()) { + creds_ = + org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials.newBuilder(creds_).mergeFrom(value).buildPartial(); + } else { + creds_ = value; + } + onChanged(); } else { - result.creds_ = value; + credsBuilder_.mergeFrom(value); } - result.hasCreds = true; + bitField0_ |= 0x00000002; return this; } + /** + * optional .xtreemfs.pbrpc.FileCredentials creds = 2; + * + *
+       * an optional set of file credentials that may contain a capabiltiy
+       * for the deletion of the previous file at the given target path
+       * 
+ */ public Builder clearCreds() { - result.hasCreds = false; - result.creds_ = org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials.getDefaultInstance(); - return this; + if (credsBuilder_ == null) { + creds_ = org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials.getDefaultInstance(); + onChanged(); + } else { + credsBuilder_.clear(); + } + bitField0_ = (bitField0_ & ~0x00000002); + return this; + } + /** + * optional .xtreemfs.pbrpc.FileCredentials creds = 2; + * + *
+       * an optional set of file credentials that may contain a capabiltiy
+       * for the deletion of the previous file at the given target path
+       * 
+ */ + public org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials.Builder getCredsBuilder() { + bitField0_ |= 0x00000002; + onChanged(); + return getCredsFieldBuilder().getBuilder(); + } + /** + * optional .xtreemfs.pbrpc.FileCredentials creds = 2; + * + *
+       * an optional set of file credentials that may contain a capabiltiy
+       * for the deletion of the previous file at the given target path
+       * 
+ */ + public org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentialsOrBuilder getCredsOrBuilder() { + if (credsBuilder_ != null) { + return credsBuilder_.getMessageOrBuilder(); + } else { + return creds_; + } + } + /** + * optional .xtreemfs.pbrpc.FileCredentials creds = 2; + * + *
+       * an optional set of file credentials that may contain a capabiltiy
+       * for the deletion of the previous file at the given target path
+       * 
+ */ + private com.google.protobuf.SingleFieldBuilder< + org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials, org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials.Builder, org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentialsOrBuilder> + getCredsFieldBuilder() { + if (credsBuilder_ == null) { + credsBuilder_ = new com.google.protobuf.SingleFieldBuilder< + org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials, org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials.Builder, org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentialsOrBuilder>( + creds_, + getParentForChildren(), + isClean()); + creds_ = null; + } + return credsBuilder_; } - + // @@protoc_insertion_point(builder_scope:xtreemfs.pbrpc.unlinkResponse) } - + static { defaultInstance = new unlinkResponse(true); - org.xtreemfs.pbrpc.generatedinterfaces.MRC.internalForceInit(); defaultInstance.initFields(); } - + // @@protoc_insertion_point(class_scope:xtreemfs.pbrpc.unlinkResponse) } - + + public interface accessRequestOrBuilder + extends com.google.protobuf.MessageOrBuilder { + + // required string volume_name = 1; + /** + * required string volume_name = 1; + * + *
+     * the volume name
+     * 
+ */ + boolean hasVolumeName(); + /** + * required string volume_name = 1; + * + *
+     * the volume name
+     * 
+ */ + java.lang.String getVolumeName(); + /** + * required string volume_name = 1; + * + *
+     * the volume name
+     * 
+ */ + com.google.protobuf.ByteString + getVolumeNameBytes(); + + // required string path = 2; + /** + * required string path = 2; + * + *
+     * the path to the file or directory, relative to the volume root
+     * 
+ */ + boolean hasPath(); + /** + * required string path = 2; + * + *
+     * the path to the file or directory, relative to the volume root
+     * 
+ */ + java.lang.String getPath(); + /** + * required string path = 2; + * + *
+     * the path to the file or directory, relative to the volume root
+     * 
+ */ + com.google.protobuf.ByteString + getPathBytes(); + + // required fixed32 flags = 3; + /** + * required fixed32 flags = 3; + * + *
+     * the flags for which the access is supposed to be checked;
+     * see ACCESS_FLAGS
+     * 
+ */ + boolean hasFlags(); + /** + * required fixed32 flags = 3; + * + *
+     * the flags for which the access is supposed to be checked;
+     * see ACCESS_FLAGS
+     * 
+ */ + int getFlags(); + } + /** + * Protobuf type {@code xtreemfs.pbrpc.accessRequest} + * + *
+   * checks whether access is granted to a file or directory
+   * 
+ */ public static final class accessRequest extends - com.google.protobuf.GeneratedMessage { + com.google.protobuf.GeneratedMessage + implements accessRequestOrBuilder { // Use accessRequest.newBuilder() to construct. - private accessRequest() { - initFields(); + private accessRequest(com.google.protobuf.GeneratedMessage.Builder builder) { + super(builder); + this.unknownFields = builder.getUnknownFields(); } - private accessRequest(boolean noInit) {} - + private accessRequest(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); } + private static final accessRequest defaultInstance; public static accessRequest getDefaultInstance() { return defaultInstance; } - + public accessRequest getDefaultInstanceForType() { return defaultInstance; } - + + private final com.google.protobuf.UnknownFieldSet unknownFields; + @java.lang.Override + public final com.google.protobuf.UnknownFieldSet + getUnknownFields() { + return this.unknownFields; + } + private accessRequest( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + initFields(); + int mutable_bitField0_ = 0; + com.google.protobuf.UnknownFieldSet.Builder unknownFields = + com.google.protobuf.UnknownFieldSet.newBuilder(); + try { + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch (tag) { + case 0: + done = true; + break; + default: { + if (!parseUnknownField(input, unknownFields, + extensionRegistry, tag)) { + done = true; + } + break; + } + case 10: { + bitField0_ |= 0x00000001; + volumeName_ = input.readBytes(); + break; + } + case 18: { + bitField0_ |= 0x00000002; + path_ = input.readBytes(); + break; + } + case 29: { + bitField0_ |= 0x00000004; + flags_ = input.readFixed32(); + break; + } + } + } + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(this); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException( + e.getMessage()).setUnfinishedMessage(this); + } finally { + this.unknownFields = unknownFields.build(); + makeExtensionsImmutable(); + } + } public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { return org.xtreemfs.pbrpc.generatedinterfaces.MRC.internal_static_xtreemfs_pbrpc_accessRequest_descriptor; } - + protected com.google.protobuf.GeneratedMessage.FieldAccessorTable internalGetFieldAccessorTable() { - return org.xtreemfs.pbrpc.generatedinterfaces.MRC.internal_static_xtreemfs_pbrpc_accessRequest_fieldAccessorTable; + return org.xtreemfs.pbrpc.generatedinterfaces.MRC.internal_static_xtreemfs_pbrpc_accessRequest_fieldAccessorTable + .ensureFieldAccessorsInitialized( + org.xtreemfs.pbrpc.generatedinterfaces.MRC.accessRequest.class, org.xtreemfs.pbrpc.generatedinterfaces.MRC.accessRequest.Builder.class); + } + + public static com.google.protobuf.Parser PARSER = + new com.google.protobuf.AbstractParser() { + public accessRequest parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return new accessRequest(input, extensionRegistry); + } + }; + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; } - + + private int bitField0_; // required string volume_name = 1; public static final int VOLUME_NAME_FIELD_NUMBER = 1; - private boolean hasVolumeName; - private java.lang.String volumeName_ = ""; - public boolean hasVolumeName() { return hasVolumeName; } - public java.lang.String getVolumeName() { return volumeName_; } - + private java.lang.Object volumeName_; + /** + * required string volume_name = 1; + * + *
+     * the volume name
+     * 
+ */ + public boolean hasVolumeName() { + return ((bitField0_ & 0x00000001) == 0x00000001); + } + /** + * required string volume_name = 1; + * + *
+     * the volume name
+     * 
+ */ + public java.lang.String getVolumeName() { + java.lang.Object ref = volumeName_; + if (ref instanceof java.lang.String) { + return (java.lang.String) ref; + } else { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + if (bs.isValidUtf8()) { + volumeName_ = s; + } + return s; + } + } + /** + * required string volume_name = 1; + * + *
+     * the volume name
+     * 
+ */ + public com.google.protobuf.ByteString + getVolumeNameBytes() { + java.lang.Object ref = volumeName_; + if (ref instanceof java.lang.String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + volumeName_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + // required string path = 2; public static final int PATH_FIELD_NUMBER = 2; - private boolean hasPath; - private java.lang.String path_ = ""; - public boolean hasPath() { return hasPath; } - public java.lang.String getPath() { return path_; } - + private java.lang.Object path_; + /** + * required string path = 2; + * + *
+     * the path to the file or directory, relative to the volume root
+     * 
+ */ + public boolean hasPath() { + return ((bitField0_ & 0x00000002) == 0x00000002); + } + /** + * required string path = 2; + * + *
+     * the path to the file or directory, relative to the volume root
+     * 
+ */ + public java.lang.String getPath() { + java.lang.Object ref = path_; + if (ref instanceof java.lang.String) { + return (java.lang.String) ref; + } else { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + if (bs.isValidUtf8()) { + path_ = s; + } + return s; + } + } + /** + * required string path = 2; + * + *
+     * the path to the file or directory, relative to the volume root
+     * 
+ */ + public com.google.protobuf.ByteString + getPathBytes() { + java.lang.Object ref = path_; + if (ref instanceof java.lang.String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + path_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + // required fixed32 flags = 3; public static final int FLAGS_FIELD_NUMBER = 3; - private boolean hasFlags; - private int flags_ = 0; - public boolean hasFlags() { return hasFlags; } - public int getFlags() { return flags_; } - + private int flags_; + /** + * required fixed32 flags = 3; + * + *
+     * the flags for which the access is supposed to be checked;
+     * see ACCESS_FLAGS
+     * 
+ */ + public boolean hasFlags() { + return ((bitField0_ & 0x00000004) == 0x00000004); + } + /** + * required fixed32 flags = 3; + * + *
+     * the flags for which the access is supposed to be checked;
+     * see ACCESS_FLAGS
+     * 
+ */ + public int getFlags() { + return flags_; + } + private void initFields() { + volumeName_ = ""; + path_ = ""; + flags_ = 0; } + private byte memoizedIsInitialized = -1; public final boolean isInitialized() { - if (!hasVolumeName) return false; - if (!hasPath) return false; - if (!hasFlags) return false; + byte isInitialized = memoizedIsInitialized; + if (isInitialized != -1) return isInitialized == 1; + + if (!hasVolumeName()) { + memoizedIsInitialized = 0; + return false; + } + if (!hasPath()) { + memoizedIsInitialized = 0; + return false; + } + if (!hasFlags()) { + memoizedIsInitialized = 0; + return false; + } + memoizedIsInitialized = 1; return true; } - + public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException { getSerializedSize(); - if (hasVolumeName()) { - output.writeString(1, getVolumeName()); + if (((bitField0_ & 0x00000001) == 0x00000001)) { + output.writeBytes(1, getVolumeNameBytes()); } - if (hasPath()) { - output.writeString(2, getPath()); + if (((bitField0_ & 0x00000002) == 0x00000002)) { + output.writeBytes(2, getPathBytes()); } - if (hasFlags()) { - output.writeFixed32(3, getFlags()); + if (((bitField0_ & 0x00000004) == 0x00000004)) { + output.writeFixed32(3, flags_); } getUnknownFields().writeTo(output); } - + private int memoizedSerializedSize = -1; public int getSerializedSize() { int size = memoizedSerializedSize; if (size != -1) return size; - + size = 0; - if (hasVolumeName()) { + if (((bitField0_ & 0x00000001) == 0x00000001)) { size += com.google.protobuf.CodedOutputStream - .computeStringSize(1, getVolumeName()); + .computeBytesSize(1, getVolumeNameBytes()); } - if (hasPath()) { + if (((bitField0_ & 0x00000002) == 0x00000002)) { size += com.google.protobuf.CodedOutputStream - .computeStringSize(2, getPath()); + .computeBytesSize(2, getPathBytes()); } - if (hasFlags()) { + if (((bitField0_ & 0x00000004) == 0x00000004)) { size += com.google.protobuf.CodedOutputStream - .computeFixed32Size(3, getFlags()); + .computeFixed32Size(3, flags_); } size += getUnknownFields().getSerializedSize(); memoizedSerializedSize = size; return size; } - + + private static final long serialVersionUID = 0L; + @java.lang.Override + protected java.lang.Object writeReplace() + throws java.io.ObjectStreamException { + return super.writeReplace(); + } + public static org.xtreemfs.pbrpc.generatedinterfaces.MRC.accessRequest parseFrom( com.google.protobuf.ByteString data) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data).buildParsed(); + return PARSER.parseFrom(data); } public static org.xtreemfs.pbrpc.generatedinterfaces.MRC.accessRequest parseFrom( com.google.protobuf.ByteString data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(data, extensionRegistry); } public static org.xtreemfs.pbrpc.generatedinterfaces.MRC.accessRequest parseFrom(byte[] data) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data).buildParsed(); + return PARSER.parseFrom(data); } public static org.xtreemfs.pbrpc.generatedinterfaces.MRC.accessRequest parseFrom( byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(data, extensionRegistry); } public static org.xtreemfs.pbrpc.generatedinterfaces.MRC.accessRequest parseFrom(java.io.InputStream input) throws java.io.IOException { - return newBuilder().mergeFrom(input).buildParsed(); + return PARSER.parseFrom(input); } public static org.xtreemfs.pbrpc.generatedinterfaces.MRC.accessRequest parseFrom( java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - return newBuilder().mergeFrom(input, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(input, extensionRegistry); } public static org.xtreemfs.pbrpc.generatedinterfaces.MRC.accessRequest parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException { - Builder builder = newBuilder(); - if (builder.mergeDelimitedFrom(input)) { - return builder.buildParsed(); - } else { - return null; - } + return PARSER.parseDelimitedFrom(input); } public static org.xtreemfs.pbrpc.generatedinterfaces.MRC.accessRequest parseDelimitedFrom( java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - Builder builder = newBuilder(); - if (builder.mergeDelimitedFrom(input, extensionRegistry)) { - return builder.buildParsed(); - } else { - return null; - } + return PARSER.parseDelimitedFrom(input, extensionRegistry); } public static org.xtreemfs.pbrpc.generatedinterfaces.MRC.accessRequest parseFrom( com.google.protobuf.CodedInputStream input) throws java.io.IOException { - return newBuilder().mergeFrom(input).buildParsed(); + return PARSER.parseFrom(input); } public static org.xtreemfs.pbrpc.generatedinterfaces.MRC.accessRequest parseFrom( com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - return newBuilder().mergeFrom(input, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(input, extensionRegistry); } - + public static Builder newBuilder() { return Builder.create(); } public Builder newBuilderForType() { return newBuilder(); } public static Builder newBuilder(org.xtreemfs.pbrpc.generatedinterfaces.MRC.accessRequest prototype) { return newBuilder().mergeFrom(prototype); } public Builder toBuilder() { return newBuilder(this); } - + + @java.lang.Override + protected Builder newBuilderForType( + com.google.protobuf.GeneratedMessage.BuilderParent parent) { + Builder builder = new Builder(parent); + return builder; + } + /** + * Protobuf type {@code xtreemfs.pbrpc.accessRequest} + * + *
+     * checks whether access is granted to a file or directory
+     * 
+ */ public static final class Builder extends - com.google.protobuf.GeneratedMessage.Builder { - private org.xtreemfs.pbrpc.generatedinterfaces.MRC.accessRequest result; - + com.google.protobuf.GeneratedMessage.Builder + implements org.xtreemfs.pbrpc.generatedinterfaces.MRC.accessRequestOrBuilder { + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return org.xtreemfs.pbrpc.generatedinterfaces.MRC.internal_static_xtreemfs_pbrpc_accessRequest_descriptor; + } + + protected com.google.protobuf.GeneratedMessage.FieldAccessorTable + internalGetFieldAccessorTable() { + return org.xtreemfs.pbrpc.generatedinterfaces.MRC.internal_static_xtreemfs_pbrpc_accessRequest_fieldAccessorTable + .ensureFieldAccessorsInitialized( + org.xtreemfs.pbrpc.generatedinterfaces.MRC.accessRequest.class, org.xtreemfs.pbrpc.generatedinterfaces.MRC.accessRequest.Builder.class); + } + // Construct using org.xtreemfs.pbrpc.generatedinterfaces.MRC.accessRequest.newBuilder() - private Builder() {} - - private static Builder create() { - Builder builder = new Builder(); - builder.result = new org.xtreemfs.pbrpc.generatedinterfaces.MRC.accessRequest(); - return builder; + private Builder() { + maybeForceBuilderInitialization(); } - - protected org.xtreemfs.pbrpc.generatedinterfaces.MRC.accessRequest internalGetResult() { - return result; + + private Builder( + com.google.protobuf.GeneratedMessage.BuilderParent parent) { + super(parent); + maybeForceBuilderInitialization(); } - - public Builder clear() { - if (result == null) { - throw new IllegalStateException( - "Cannot call clear() after build()."); + private void maybeForceBuilderInitialization() { + if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) { } - result = new org.xtreemfs.pbrpc.generatedinterfaces.MRC.accessRequest(); + } + private static Builder create() { + return new Builder(); + } + + public Builder clear() { + super.clear(); + volumeName_ = ""; + bitField0_ = (bitField0_ & ~0x00000001); + path_ = ""; + bitField0_ = (bitField0_ & ~0x00000002); + flags_ = 0; + bitField0_ = (bitField0_ & ~0x00000004); return this; } - + public Builder clone() { - return create().mergeFrom(result); + return create().mergeFrom(buildPartial()); } - + public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() { - return org.xtreemfs.pbrpc.generatedinterfaces.MRC.accessRequest.getDescriptor(); + return org.xtreemfs.pbrpc.generatedinterfaces.MRC.internal_static_xtreemfs_pbrpc_accessRequest_descriptor; } - + public org.xtreemfs.pbrpc.generatedinterfaces.MRC.accessRequest getDefaultInstanceForType() { return org.xtreemfs.pbrpc.generatedinterfaces.MRC.accessRequest.getDefaultInstance(); } - - public boolean isInitialized() { - return result.isInitialized(); - } + public org.xtreemfs.pbrpc.generatedinterfaces.MRC.accessRequest build() { - if (result != null && !isInitialized()) { + org.xtreemfs.pbrpc.generatedinterfaces.MRC.accessRequest result = buildPartial(); + if (!result.isInitialized()) { throw newUninitializedMessageException(result); } - return buildPartial(); - } - - private org.xtreemfs.pbrpc.generatedinterfaces.MRC.accessRequest buildParsed() - throws com.google.protobuf.InvalidProtocolBufferException { - if (!isInitialized()) { - throw newUninitializedMessageException( - result).asInvalidProtocolBufferException(); - } - return buildPartial(); + return result; } - + public org.xtreemfs.pbrpc.generatedinterfaces.MRC.accessRequest buildPartial() { - if (result == null) { - throw new IllegalStateException( - "build() has already been called on this Builder."); - } - org.xtreemfs.pbrpc.generatedinterfaces.MRC.accessRequest returnMe = result; - result = null; - return returnMe; + org.xtreemfs.pbrpc.generatedinterfaces.MRC.accessRequest result = new org.xtreemfs.pbrpc.generatedinterfaces.MRC.accessRequest(this); + int from_bitField0_ = bitField0_; + int to_bitField0_ = 0; + if (((from_bitField0_ & 0x00000001) == 0x00000001)) { + to_bitField0_ |= 0x00000001; + } + result.volumeName_ = volumeName_; + if (((from_bitField0_ & 0x00000002) == 0x00000002)) { + to_bitField0_ |= 0x00000002; + } + result.path_ = path_; + if (((from_bitField0_ & 0x00000004) == 0x00000004)) { + to_bitField0_ |= 0x00000004; + } + result.flags_ = flags_; + result.bitField0_ = to_bitField0_; + onBuilt(); + return result; } - + public Builder mergeFrom(com.google.protobuf.Message other) { if (other instanceof org.xtreemfs.pbrpc.generatedinterfaces.MRC.accessRequest) { return mergeFrom((org.xtreemfs.pbrpc.generatedinterfaces.MRC.accessRequest)other); @@ -13168,14 +31818,18 @@ public final class MRC { return this; } } - + public Builder mergeFrom(org.xtreemfs.pbrpc.generatedinterfaces.MRC.accessRequest other) { if (other == org.xtreemfs.pbrpc.generatedinterfaces.MRC.accessRequest.getDefaultInstance()) return this; if (other.hasVolumeName()) { - setVolumeName(other.getVolumeName()); + bitField0_ |= 0x00000001; + volumeName_ = other.volumeName_; + onChanged(); } if (other.hasPath()) { - setPath(other.getPath()); + bitField0_ |= 0x00000002; + path_ = other.path_; + onChanged(); } if (other.hasFlags()) { setFlags(other.getFlags()); @@ -13183,367 +31837,812 @@ public final class MRC { this.mergeUnknownFields(other.getUnknownFields()); return this; } - + + public final boolean isInitialized() { + if (!hasVolumeName()) { + + return false; + } + if (!hasPath()) { + + return false; + } + if (!hasFlags()) { + + return false; + } + return true; + } + public Builder mergeFrom( com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - com.google.protobuf.UnknownFieldSet.Builder unknownFields = - com.google.protobuf.UnknownFieldSet.newBuilder( - this.getUnknownFields()); - while (true) { - int tag = input.readTag(); - switch (tag) { - case 0: - this.setUnknownFields(unknownFields.build()); - return this; - default: { - if (!parseUnknownField(input, unknownFields, - extensionRegistry, tag)) { - this.setUnknownFields(unknownFields.build()); - return this; - } - break; - } - case 10: { - setVolumeName(input.readString()); - break; - } - case 18: { - setPath(input.readString()); - break; - } - case 29: { - setFlags(input.readFixed32()); - break; - } + org.xtreemfs.pbrpc.generatedinterfaces.MRC.accessRequest parsedMessage = null; + try { + parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + parsedMessage = (org.xtreemfs.pbrpc.generatedinterfaces.MRC.accessRequest) e.getUnfinishedMessage(); + throw e; + } finally { + if (parsedMessage != null) { + mergeFrom(parsedMessage); } } + return this; } - - + private int bitField0_; + // required string volume_name = 1; + private java.lang.Object volumeName_ = ""; + /** + * required string volume_name = 1; + * + *
+       * the volume name
+       * 
+ */ public boolean hasVolumeName() { - return result.hasVolumeName(); - } + return ((bitField0_ & 0x00000001) == 0x00000001); + } + /** + * required string volume_name = 1; + * + *
+       * the volume name
+       * 
+ */ public java.lang.String getVolumeName() { - return result.getVolumeName(); - } - public Builder setVolumeName(java.lang.String value) { + java.lang.Object ref = volumeName_; + if (!(ref instanceof java.lang.String)) { + java.lang.String s = ((com.google.protobuf.ByteString) ref) + .toStringUtf8(); + volumeName_ = s; + return s; + } else { + return (java.lang.String) ref; + } + } + /** + * required string volume_name = 1; + * + *
+       * the volume name
+       * 
+ */ + public com.google.protobuf.ByteString + getVolumeNameBytes() { + java.lang.Object ref = volumeName_; + if (ref instanceof String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + volumeName_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + /** + * required string volume_name = 1; + * + *
+       * the volume name
+       * 
+ */ + public Builder setVolumeName( + java.lang.String value) { if (value == null) { throw new NullPointerException(); } - result.hasVolumeName = true; - result.volumeName_ = value; - return this; - } + bitField0_ |= 0x00000001; + volumeName_ = value; + onChanged(); + return this; + } + /** + * required string volume_name = 1; + * + *
+       * the volume name
+       * 
+ */ public Builder clearVolumeName() { - result.hasVolumeName = false; - result.volumeName_ = getDefaultInstance().getVolumeName(); + bitField0_ = (bitField0_ & ~0x00000001); + volumeName_ = getDefaultInstance().getVolumeName(); + onChanged(); + return this; + } + /** + * required string volume_name = 1; + * + *
+       * the volume name
+       * 
+ */ + public Builder setVolumeNameBytes( + com.google.protobuf.ByteString value) { + if (value == null) { + throw new NullPointerException(); + } + bitField0_ |= 0x00000001; + volumeName_ = value; + onChanged(); return this; } - + // required string path = 2; + private java.lang.Object path_ = ""; + /** + * required string path = 2; + * + *
+       * the path to the file or directory, relative to the volume root
+       * 
+ */ public boolean hasPath() { - return result.hasPath(); - } + return ((bitField0_ & 0x00000002) == 0x00000002); + } + /** + * required string path = 2; + * + *
+       * the path to the file or directory, relative to the volume root
+       * 
+ */ public java.lang.String getPath() { - return result.getPath(); - } - public Builder setPath(java.lang.String value) { + java.lang.Object ref = path_; + if (!(ref instanceof java.lang.String)) { + java.lang.String s = ((com.google.protobuf.ByteString) ref) + .toStringUtf8(); + path_ = s; + return s; + } else { + return (java.lang.String) ref; + } + } + /** + * required string path = 2; + * + *
+       * the path to the file or directory, relative to the volume root
+       * 
+ */ + public com.google.protobuf.ByteString + getPathBytes() { + java.lang.Object ref = path_; + if (ref instanceof String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + path_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + /** + * required string path = 2; + * + *
+       * the path to the file or directory, relative to the volume root
+       * 
+ */ + public Builder setPath( + java.lang.String value) { if (value == null) { throw new NullPointerException(); } - result.hasPath = true; - result.path_ = value; - return this; - } + bitField0_ |= 0x00000002; + path_ = value; + onChanged(); + return this; + } + /** + * required string path = 2; + * + *
+       * the path to the file or directory, relative to the volume root
+       * 
+ */ public Builder clearPath() { - result.hasPath = false; - result.path_ = getDefaultInstance().getPath(); + bitField0_ = (bitField0_ & ~0x00000002); + path_ = getDefaultInstance().getPath(); + onChanged(); + return this; + } + /** + * required string path = 2; + * + *
+       * the path to the file or directory, relative to the volume root
+       * 
+ */ + public Builder setPathBytes( + com.google.protobuf.ByteString value) { + if (value == null) { + throw new NullPointerException(); + } + bitField0_ |= 0x00000002; + path_ = value; + onChanged(); return this; } - + // required fixed32 flags = 3; + private int flags_ ; + /** + * required fixed32 flags = 3; + * + *
+       * the flags for which the access is supposed to be checked;
+       * see ACCESS_FLAGS
+       * 
+ */ public boolean hasFlags() { - return result.hasFlags(); - } + return ((bitField0_ & 0x00000004) == 0x00000004); + } + /** + * required fixed32 flags = 3; + * + *
+       * the flags for which the access is supposed to be checked;
+       * see ACCESS_FLAGS
+       * 
+ */ public int getFlags() { - return result.getFlags(); - } + return flags_; + } + /** + * required fixed32 flags = 3; + * + *
+       * the flags for which the access is supposed to be checked;
+       * see ACCESS_FLAGS
+       * 
+ */ public Builder setFlags(int value) { - result.hasFlags = true; - result.flags_ = value; - return this; - } + bitField0_ |= 0x00000004; + flags_ = value; + onChanged(); + return this; + } + /** + * required fixed32 flags = 3; + * + *
+       * the flags for which the access is supposed to be checked;
+       * see ACCESS_FLAGS
+       * 
+ */ public Builder clearFlags() { - result.hasFlags = false; - result.flags_ = 0; + bitField0_ = (bitField0_ & ~0x00000004); + flags_ = 0; + onChanged(); return this; } - + // @@protoc_insertion_point(builder_scope:xtreemfs.pbrpc.accessRequest) } - + static { defaultInstance = new accessRequest(true); - org.xtreemfs.pbrpc.generatedinterfaces.MRC.internalForceInit(); defaultInstance.initFields(); } - + // @@protoc_insertion_point(class_scope:xtreemfs.pbrpc.accessRequest) } - + + public interface xtreemfs_check_file_existsRequestOrBuilder + extends com.google.protobuf.MessageOrBuilder { + + // required string volume_id = 1; + /** + * required string volume_id = 1; + */ + boolean hasVolumeId(); + /** + * required string volume_id = 1; + */ + java.lang.String getVolumeId(); + /** + * required string volume_id = 1; + */ + com.google.protobuf.ByteString + getVolumeIdBytes(); + + // repeated string file_ids = 2; + /** + * repeated string file_ids = 2; + */ + java.util.List + getFileIdsList(); + /** + * repeated string file_ids = 2; + */ + int getFileIdsCount(); + /** + * repeated string file_ids = 2; + */ + java.lang.String getFileIds(int index); + /** + * repeated string file_ids = 2; + */ + com.google.protobuf.ByteString + getFileIdsBytes(int index); + + // required string osd_uuid = 3; + /** + * required string osd_uuid = 3; + */ + boolean hasOsdUuid(); + /** + * required string osd_uuid = 3; + */ + java.lang.String getOsdUuid(); + /** + * required string osd_uuid = 3; + */ + com.google.protobuf.ByteString + getOsdUuidBytes(); + } + /** + * Protobuf type {@code xtreemfs.pbrpc.xtreemfs_check_file_existsRequest} + */ public static final class xtreemfs_check_file_existsRequest extends - com.google.protobuf.GeneratedMessage { + com.google.protobuf.GeneratedMessage + implements xtreemfs_check_file_existsRequestOrBuilder { // Use xtreemfs_check_file_existsRequest.newBuilder() to construct. - private xtreemfs_check_file_existsRequest() { - initFields(); + private xtreemfs_check_file_existsRequest(com.google.protobuf.GeneratedMessage.Builder builder) { + super(builder); + this.unknownFields = builder.getUnknownFields(); } - private xtreemfs_check_file_existsRequest(boolean noInit) {} - + private xtreemfs_check_file_existsRequest(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); } + private static final xtreemfs_check_file_existsRequest defaultInstance; public static xtreemfs_check_file_existsRequest getDefaultInstance() { return defaultInstance; } - + public xtreemfs_check_file_existsRequest getDefaultInstanceForType() { return defaultInstance; } - + + private final com.google.protobuf.UnknownFieldSet unknownFields; + @java.lang.Override + public final com.google.protobuf.UnknownFieldSet + getUnknownFields() { + return this.unknownFields; + } + private xtreemfs_check_file_existsRequest( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + initFields(); + int mutable_bitField0_ = 0; + com.google.protobuf.UnknownFieldSet.Builder unknownFields = + com.google.protobuf.UnknownFieldSet.newBuilder(); + try { + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch (tag) { + case 0: + done = true; + break; + default: { + if (!parseUnknownField(input, unknownFields, + extensionRegistry, tag)) { + done = true; + } + break; + } + case 10: { + bitField0_ |= 0x00000001; + volumeId_ = input.readBytes(); + break; + } + case 18: { + if (!((mutable_bitField0_ & 0x00000002) == 0x00000002)) { + fileIds_ = new com.google.protobuf.LazyStringArrayList(); + mutable_bitField0_ |= 0x00000002; + } + fileIds_.add(input.readBytes()); + break; + } + case 26: { + bitField0_ |= 0x00000002; + osdUuid_ = input.readBytes(); + break; + } + } + } + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(this); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException( + e.getMessage()).setUnfinishedMessage(this); + } finally { + if (((mutable_bitField0_ & 0x00000002) == 0x00000002)) { + fileIds_ = new com.google.protobuf.UnmodifiableLazyStringList(fileIds_); + } + this.unknownFields = unknownFields.build(); + makeExtensionsImmutable(); + } + } public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { return org.xtreemfs.pbrpc.generatedinterfaces.MRC.internal_static_xtreemfs_pbrpc_xtreemfs_check_file_existsRequest_descriptor; } - + protected com.google.protobuf.GeneratedMessage.FieldAccessorTable internalGetFieldAccessorTable() { - return org.xtreemfs.pbrpc.generatedinterfaces.MRC.internal_static_xtreemfs_pbrpc_xtreemfs_check_file_existsRequest_fieldAccessorTable; + return org.xtreemfs.pbrpc.generatedinterfaces.MRC.internal_static_xtreemfs_pbrpc_xtreemfs_check_file_existsRequest_fieldAccessorTable + .ensureFieldAccessorsInitialized( + org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_check_file_existsRequest.class, org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_check_file_existsRequest.Builder.class); + } + + public static com.google.protobuf.Parser PARSER = + new com.google.protobuf.AbstractParser() { + public xtreemfs_check_file_existsRequest parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return new xtreemfs_check_file_existsRequest(input, extensionRegistry); + } + }; + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; } - + + private int bitField0_; // required string volume_id = 1; public static final int VOLUME_ID_FIELD_NUMBER = 1; - private boolean hasVolumeId; - private java.lang.String volumeId_ = ""; - public boolean hasVolumeId() { return hasVolumeId; } - public java.lang.String getVolumeId() { return volumeId_; } - + private java.lang.Object volumeId_; + /** + * required string volume_id = 1; + */ + public boolean hasVolumeId() { + return ((bitField0_ & 0x00000001) == 0x00000001); + } + /** + * required string volume_id = 1; + */ + public java.lang.String getVolumeId() { + java.lang.Object ref = volumeId_; + if (ref instanceof java.lang.String) { + return (java.lang.String) ref; + } else { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + if (bs.isValidUtf8()) { + volumeId_ = s; + } + return s; + } + } + /** + * required string volume_id = 1; + */ + public com.google.protobuf.ByteString + getVolumeIdBytes() { + java.lang.Object ref = volumeId_; + if (ref instanceof java.lang.String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + volumeId_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + // repeated string file_ids = 2; public static final int FILE_IDS_FIELD_NUMBER = 2; - private java.util.List fileIds_ = - java.util.Collections.emptyList(); - public java.util.List getFileIdsList() { + private com.google.protobuf.LazyStringList fileIds_; + /** + * repeated string file_ids = 2; + */ + public java.util.List + getFileIdsList() { return fileIds_; } - public int getFileIdsCount() { return fileIds_.size(); } + /** + * repeated string file_ids = 2; + */ + public int getFileIdsCount() { + return fileIds_.size(); + } + /** + * repeated string file_ids = 2; + */ public java.lang.String getFileIds(int index) { return fileIds_.get(index); } - + /** + * repeated string file_ids = 2; + */ + public com.google.protobuf.ByteString + getFileIdsBytes(int index) { + return fileIds_.getByteString(index); + } + // required string osd_uuid = 3; public static final int OSD_UUID_FIELD_NUMBER = 3; - private boolean hasOsdUuid; - private java.lang.String osdUuid_ = ""; - public boolean hasOsdUuid() { return hasOsdUuid; } - public java.lang.String getOsdUuid() { return osdUuid_; } - + private java.lang.Object osdUuid_; + /** + * required string osd_uuid = 3; + */ + public boolean hasOsdUuid() { + return ((bitField0_ & 0x00000002) == 0x00000002); + } + /** + * required string osd_uuid = 3; + */ + public java.lang.String getOsdUuid() { + java.lang.Object ref = osdUuid_; + if (ref instanceof java.lang.String) { + return (java.lang.String) ref; + } else { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + if (bs.isValidUtf8()) { + osdUuid_ = s; + } + return s; + } + } + /** + * required string osd_uuid = 3; + */ + public com.google.protobuf.ByteString + getOsdUuidBytes() { + java.lang.Object ref = osdUuid_; + if (ref instanceof java.lang.String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + osdUuid_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + private void initFields() { + volumeId_ = ""; + fileIds_ = com.google.protobuf.LazyStringArrayList.EMPTY; + osdUuid_ = ""; } + private byte memoizedIsInitialized = -1; public final boolean isInitialized() { - if (!hasVolumeId) return false; - if (!hasOsdUuid) return false; + byte isInitialized = memoizedIsInitialized; + if (isInitialized != -1) return isInitialized == 1; + + if (!hasVolumeId()) { + memoizedIsInitialized = 0; + return false; + } + if (!hasOsdUuid()) { + memoizedIsInitialized = 0; + return false; + } + memoizedIsInitialized = 1; return true; } - + public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException { getSerializedSize(); - if (hasVolumeId()) { - output.writeString(1, getVolumeId()); + if (((bitField0_ & 0x00000001) == 0x00000001)) { + output.writeBytes(1, getVolumeIdBytes()); } - for (java.lang.String element : getFileIdsList()) { - output.writeString(2, element); + for (int i = 0; i < fileIds_.size(); i++) { + output.writeBytes(2, fileIds_.getByteString(i)); } - if (hasOsdUuid()) { - output.writeString(3, getOsdUuid()); + if (((bitField0_ & 0x00000002) == 0x00000002)) { + output.writeBytes(3, getOsdUuidBytes()); } getUnknownFields().writeTo(output); } - + private int memoizedSerializedSize = -1; public int getSerializedSize() { int size = memoizedSerializedSize; if (size != -1) return size; - + size = 0; - if (hasVolumeId()) { + if (((bitField0_ & 0x00000001) == 0x00000001)) { size += com.google.protobuf.CodedOutputStream - .computeStringSize(1, getVolumeId()); + .computeBytesSize(1, getVolumeIdBytes()); } { int dataSize = 0; - for (java.lang.String element : getFileIdsList()) { + for (int i = 0; i < fileIds_.size(); i++) { dataSize += com.google.protobuf.CodedOutputStream - .computeStringSizeNoTag(element); + .computeBytesSizeNoTag(fileIds_.getByteString(i)); } size += dataSize; size += 1 * getFileIdsList().size(); } - if (hasOsdUuid()) { + if (((bitField0_ & 0x00000002) == 0x00000002)) { size += com.google.protobuf.CodedOutputStream - .computeStringSize(3, getOsdUuid()); + .computeBytesSize(3, getOsdUuidBytes()); } size += getUnknownFields().getSerializedSize(); memoizedSerializedSize = size; return size; } - + + private static final long serialVersionUID = 0L; + @java.lang.Override + protected java.lang.Object writeReplace() + throws java.io.ObjectStreamException { + return super.writeReplace(); + } + public static org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_check_file_existsRequest parseFrom( com.google.protobuf.ByteString data) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data).buildParsed(); + return PARSER.parseFrom(data); } public static org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_check_file_existsRequest parseFrom( com.google.protobuf.ByteString data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(data, extensionRegistry); } public static org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_check_file_existsRequest parseFrom(byte[] data) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data).buildParsed(); + return PARSER.parseFrom(data); } public static org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_check_file_existsRequest parseFrom( byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(data, extensionRegistry); } public static org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_check_file_existsRequest parseFrom(java.io.InputStream input) throws java.io.IOException { - return newBuilder().mergeFrom(input).buildParsed(); + return PARSER.parseFrom(input); } public static org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_check_file_existsRequest parseFrom( java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - return newBuilder().mergeFrom(input, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(input, extensionRegistry); } public static org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_check_file_existsRequest parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException { - Builder builder = newBuilder(); - if (builder.mergeDelimitedFrom(input)) { - return builder.buildParsed(); - } else { - return null; - } + return PARSER.parseDelimitedFrom(input); } public static org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_check_file_existsRequest parseDelimitedFrom( java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - Builder builder = newBuilder(); - if (builder.mergeDelimitedFrom(input, extensionRegistry)) { - return builder.buildParsed(); - } else { - return null; - } + return PARSER.parseDelimitedFrom(input, extensionRegistry); } public static org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_check_file_existsRequest parseFrom( com.google.protobuf.CodedInputStream input) throws java.io.IOException { - return newBuilder().mergeFrom(input).buildParsed(); + return PARSER.parseFrom(input); } public static org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_check_file_existsRequest parseFrom( com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - return newBuilder().mergeFrom(input, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(input, extensionRegistry); } - + public static Builder newBuilder() { return Builder.create(); } public Builder newBuilderForType() { return newBuilder(); } public static Builder newBuilder(org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_check_file_existsRequest prototype) { return newBuilder().mergeFrom(prototype); } public Builder toBuilder() { return newBuilder(this); } - + + @java.lang.Override + protected Builder newBuilderForType( + com.google.protobuf.GeneratedMessage.BuilderParent parent) { + Builder builder = new Builder(parent); + return builder; + } + /** + * Protobuf type {@code xtreemfs.pbrpc.xtreemfs_check_file_existsRequest} + */ public static final class Builder extends - com.google.protobuf.GeneratedMessage.Builder { - private org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_check_file_existsRequest result; - + com.google.protobuf.GeneratedMessage.Builder + implements org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_check_file_existsRequestOrBuilder { + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return org.xtreemfs.pbrpc.generatedinterfaces.MRC.internal_static_xtreemfs_pbrpc_xtreemfs_check_file_existsRequest_descriptor; + } + + protected com.google.protobuf.GeneratedMessage.FieldAccessorTable + internalGetFieldAccessorTable() { + return org.xtreemfs.pbrpc.generatedinterfaces.MRC.internal_static_xtreemfs_pbrpc_xtreemfs_check_file_existsRequest_fieldAccessorTable + .ensureFieldAccessorsInitialized( + org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_check_file_existsRequest.class, org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_check_file_existsRequest.Builder.class); + } + // Construct using org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_check_file_existsRequest.newBuilder() - private Builder() {} - - private static Builder create() { - Builder builder = new Builder(); - builder.result = new org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_check_file_existsRequest(); - return builder; + private Builder() { + maybeForceBuilderInitialization(); } - - protected org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_check_file_existsRequest internalGetResult() { - return result; + + private Builder( + com.google.protobuf.GeneratedMessage.BuilderParent parent) { + super(parent); + maybeForceBuilderInitialization(); } - - public Builder clear() { - if (result == null) { - throw new IllegalStateException( - "Cannot call clear() after build()."); + private void maybeForceBuilderInitialization() { + if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) { } - result = new org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_check_file_existsRequest(); + } + private static Builder create() { + return new Builder(); + } + + public Builder clear() { + super.clear(); + volumeId_ = ""; + bitField0_ = (bitField0_ & ~0x00000001); + fileIds_ = com.google.protobuf.LazyStringArrayList.EMPTY; + bitField0_ = (bitField0_ & ~0x00000002); + osdUuid_ = ""; + bitField0_ = (bitField0_ & ~0x00000004); return this; } - + public Builder clone() { - return create().mergeFrom(result); + return create().mergeFrom(buildPartial()); } - + public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() { - return org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_check_file_existsRequest.getDescriptor(); + return org.xtreemfs.pbrpc.generatedinterfaces.MRC.internal_static_xtreemfs_pbrpc_xtreemfs_check_file_existsRequest_descriptor; } - + public org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_check_file_existsRequest getDefaultInstanceForType() { return org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_check_file_existsRequest.getDefaultInstance(); } - - public boolean isInitialized() { - return result.isInitialized(); - } + public org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_check_file_existsRequest build() { - if (result != null && !isInitialized()) { + org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_check_file_existsRequest result = buildPartial(); + if (!result.isInitialized()) { throw newUninitializedMessageException(result); } - return buildPartial(); - } - - private org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_check_file_existsRequest buildParsed() - throws com.google.protobuf.InvalidProtocolBufferException { - if (!isInitialized()) { - throw newUninitializedMessageException( - result).asInvalidProtocolBufferException(); - } - return buildPartial(); + return result; } - + public org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_check_file_existsRequest buildPartial() { - if (result == null) { - throw new IllegalStateException( - "build() has already been called on this Builder."); - } - if (result.fileIds_ != java.util.Collections.EMPTY_LIST) { - result.fileIds_ = - java.util.Collections.unmodifiableList(result.fileIds_); - } - org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_check_file_existsRequest returnMe = result; - result = null; - return returnMe; + org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_check_file_existsRequest result = new org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_check_file_existsRequest(this); + int from_bitField0_ = bitField0_; + int to_bitField0_ = 0; + if (((from_bitField0_ & 0x00000001) == 0x00000001)) { + to_bitField0_ |= 0x00000001; + } + result.volumeId_ = volumeId_; + if (((bitField0_ & 0x00000002) == 0x00000002)) { + fileIds_ = new com.google.protobuf.UnmodifiableLazyStringList( + fileIds_); + bitField0_ = (bitField0_ & ~0x00000002); + } + result.fileIds_ = fileIds_; + if (((from_bitField0_ & 0x00000004) == 0x00000004)) { + to_bitField0_ |= 0x00000002; + } + result.osdUuid_ = osdUuid_; + result.bitField0_ = to_bitField0_; + onBuilt(); + return result; } - + public Builder mergeFrom(com.google.protobuf.Message other) { if (other instanceof org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_check_file_existsRequest) { return mergeFrom((org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_check_file_existsRequest)other); @@ -13552,364 +32651,695 @@ public final class MRC { return this; } } - + public Builder mergeFrom(org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_check_file_existsRequest other) { if (other == org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_check_file_existsRequest.getDefaultInstance()) return this; if (other.hasVolumeId()) { - setVolumeId(other.getVolumeId()); + bitField0_ |= 0x00000001; + volumeId_ = other.volumeId_; + onChanged(); } if (!other.fileIds_.isEmpty()) { - if (result.fileIds_.isEmpty()) { - result.fileIds_ = new java.util.ArrayList(); + if (fileIds_.isEmpty()) { + fileIds_ = other.fileIds_; + bitField0_ = (bitField0_ & ~0x00000002); + } else { + ensureFileIdsIsMutable(); + fileIds_.addAll(other.fileIds_); } - result.fileIds_.addAll(other.fileIds_); + onChanged(); } if (other.hasOsdUuid()) { - setOsdUuid(other.getOsdUuid()); + bitField0_ |= 0x00000004; + osdUuid_ = other.osdUuid_; + onChanged(); } this.mergeUnknownFields(other.getUnknownFields()); return this; } - + + public final boolean isInitialized() { + if (!hasVolumeId()) { + + return false; + } + if (!hasOsdUuid()) { + + return false; + } + return true; + } + public Builder mergeFrom( com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - com.google.protobuf.UnknownFieldSet.Builder unknownFields = - com.google.protobuf.UnknownFieldSet.newBuilder( - this.getUnknownFields()); - while (true) { - int tag = input.readTag(); - switch (tag) { - case 0: - this.setUnknownFields(unknownFields.build()); - return this; - default: { - if (!parseUnknownField(input, unknownFields, - extensionRegistry, tag)) { - this.setUnknownFields(unknownFields.build()); - return this; - } - break; - } - case 10: { - setVolumeId(input.readString()); - break; - } - case 18: { - addFileIds(input.readString()); - break; - } - case 26: { - setOsdUuid(input.readString()); - break; - } + org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_check_file_existsRequest parsedMessage = null; + try { + parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + parsedMessage = (org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_check_file_existsRequest) e.getUnfinishedMessage(); + throw e; + } finally { + if (parsedMessage != null) { + mergeFrom(parsedMessage); } } + return this; } - - + private int bitField0_; + // required string volume_id = 1; + private java.lang.Object volumeId_ = ""; + /** + * required string volume_id = 1; + */ public boolean hasVolumeId() { - return result.hasVolumeId(); + return ((bitField0_ & 0x00000001) == 0x00000001); } + /** + * required string volume_id = 1; + */ public java.lang.String getVolumeId() { - return result.getVolumeId(); + java.lang.Object ref = volumeId_; + if (!(ref instanceof java.lang.String)) { + java.lang.String s = ((com.google.protobuf.ByteString) ref) + .toStringUtf8(); + volumeId_ = s; + return s; + } else { + return (java.lang.String) ref; + } + } + /** + * required string volume_id = 1; + */ + public com.google.protobuf.ByteString + getVolumeIdBytes() { + java.lang.Object ref = volumeId_; + if (ref instanceof String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + volumeId_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } } - public Builder setVolumeId(java.lang.String value) { + /** + * required string volume_id = 1; + */ + public Builder setVolumeId( + java.lang.String value) { if (value == null) { throw new NullPointerException(); } - result.hasVolumeId = true; - result.volumeId_ = value; + bitField0_ |= 0x00000001; + volumeId_ = value; + onChanged(); return this; } + /** + * required string volume_id = 1; + */ public Builder clearVolumeId() { - result.hasVolumeId = false; - result.volumeId_ = getDefaultInstance().getVolumeId(); + bitField0_ = (bitField0_ & ~0x00000001); + volumeId_ = getDefaultInstance().getVolumeId(); + onChanged(); return this; } - - // repeated string file_ids = 2; - public java.util.List getFileIdsList() { - return java.util.Collections.unmodifiableList(result.fileIds_); + /** + * required string volume_id = 1; + */ + public Builder setVolumeIdBytes( + com.google.protobuf.ByteString value) { + if (value == null) { + throw new NullPointerException(); + } + bitField0_ |= 0x00000001; + volumeId_ = value; + onChanged(); + return this; } + + // repeated string file_ids = 2; + private com.google.protobuf.LazyStringList fileIds_ = com.google.protobuf.LazyStringArrayList.EMPTY; + private void ensureFileIdsIsMutable() { + if (!((bitField0_ & 0x00000002) == 0x00000002)) { + fileIds_ = new com.google.protobuf.LazyStringArrayList(fileIds_); + bitField0_ |= 0x00000002; + } + } + /** + * repeated string file_ids = 2; + */ + public java.util.List + getFileIdsList() { + return java.util.Collections.unmodifiableList(fileIds_); + } + /** + * repeated string file_ids = 2; + */ public int getFileIdsCount() { - return result.getFileIdsCount(); + return fileIds_.size(); } + /** + * repeated string file_ids = 2; + */ public java.lang.String getFileIds(int index) { - return result.getFileIds(index); - } - public Builder setFileIds(int index, java.lang.String value) { + return fileIds_.get(index); + } + /** + * repeated string file_ids = 2; + */ + public com.google.protobuf.ByteString + getFileIdsBytes(int index) { + return fileIds_.getByteString(index); + } + /** + * repeated string file_ids = 2; + */ + public Builder setFileIds( + int index, java.lang.String value) { if (value == null) { throw new NullPointerException(); } - result.fileIds_.set(index, value); + ensureFileIdsIsMutable(); + fileIds_.set(index, value); + onChanged(); return this; } - public Builder addFileIds(java.lang.String value) { + /** + * repeated string file_ids = 2; + */ + public Builder addFileIds( + java.lang.String value) { if (value == null) { throw new NullPointerException(); } - if (result.fileIds_.isEmpty()) { - result.fileIds_ = new java.util.ArrayList(); - } - result.fileIds_.add(value); + ensureFileIdsIsMutable(); + fileIds_.add(value); + onChanged(); return this; } + /** + * repeated string file_ids = 2; + */ public Builder addAllFileIds( - java.lang.Iterable values) { - if (result.fileIds_.isEmpty()) { - result.fileIds_ = new java.util.ArrayList(); - } - super.addAll(values, result.fileIds_); + java.lang.Iterable values) { + ensureFileIdsIsMutable(); + super.addAll(values, fileIds_); + onChanged(); return this; } + /** + * repeated string file_ids = 2; + */ public Builder clearFileIds() { - result.fileIds_ = java.util.Collections.emptyList(); + fileIds_ = com.google.protobuf.LazyStringArrayList.EMPTY; + bitField0_ = (bitField0_ & ~0x00000002); + onChanged(); + return this; + } + /** + * repeated string file_ids = 2; + */ + public Builder addFileIdsBytes( + com.google.protobuf.ByteString value) { + if (value == null) { + throw new NullPointerException(); + } + ensureFileIdsIsMutable(); + fileIds_.add(value); + onChanged(); return this; } - + // required string osd_uuid = 3; + private java.lang.Object osdUuid_ = ""; + /** + * required string osd_uuid = 3; + */ public boolean hasOsdUuid() { - return result.hasOsdUuid(); + return ((bitField0_ & 0x00000004) == 0x00000004); } + /** + * required string osd_uuid = 3; + */ public java.lang.String getOsdUuid() { - return result.getOsdUuid(); + java.lang.Object ref = osdUuid_; + if (!(ref instanceof java.lang.String)) { + java.lang.String s = ((com.google.protobuf.ByteString) ref) + .toStringUtf8(); + osdUuid_ = s; + return s; + } else { + return (java.lang.String) ref; + } + } + /** + * required string osd_uuid = 3; + */ + public com.google.protobuf.ByteString + getOsdUuidBytes() { + java.lang.Object ref = osdUuid_; + if (ref instanceof String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + osdUuid_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } } - public Builder setOsdUuid(java.lang.String value) { + /** + * required string osd_uuid = 3; + */ + public Builder setOsdUuid( + java.lang.String value) { if (value == null) { throw new NullPointerException(); } - result.hasOsdUuid = true; - result.osdUuid_ = value; + bitField0_ |= 0x00000004; + osdUuid_ = value; + onChanged(); return this; } + /** + * required string osd_uuid = 3; + */ public Builder clearOsdUuid() { - result.hasOsdUuid = false; - result.osdUuid_ = getDefaultInstance().getOsdUuid(); + bitField0_ = (bitField0_ & ~0x00000004); + osdUuid_ = getDefaultInstance().getOsdUuid(); + onChanged(); + return this; + } + /** + * required string osd_uuid = 3; + */ + public Builder setOsdUuidBytes( + com.google.protobuf.ByteString value) { + if (value == null) { + throw new NullPointerException(); + } + bitField0_ |= 0x00000004; + osdUuid_ = value; + onChanged(); return this; } - + // @@protoc_insertion_point(builder_scope:xtreemfs.pbrpc.xtreemfs_check_file_existsRequest) } - + static { defaultInstance = new xtreemfs_check_file_existsRequest(true); - org.xtreemfs.pbrpc.generatedinterfaces.MRC.internalForceInit(); defaultInstance.initFields(); } - + // @@protoc_insertion_point(class_scope:xtreemfs.pbrpc.xtreemfs_check_file_existsRequest) } - + + public interface xtreemfs_dump_restore_databaseRequestOrBuilder + extends com.google.protobuf.MessageOrBuilder { + + // required string dump_file = 1; + /** + * required string dump_file = 1; + * + *
+     * the path to the dump file on the MRC host
+     * 
+ */ + boolean hasDumpFile(); + /** + * required string dump_file = 1; + * + *
+     * the path to the dump file on the MRC host
+     * 
+ */ + java.lang.String getDumpFile(); + /** + * required string dump_file = 1; + * + *
+     * the path to the dump file on the MRC host
+     * 
+ */ + com.google.protobuf.ByteString + getDumpFileBytes(); + } + /** + * Protobuf type {@code xtreemfs.pbrpc.xtreemfs_dump_restore_databaseRequest} + * + *
+   * dumps or restores the MRC database
+   * 
+ */ public static final class xtreemfs_dump_restore_databaseRequest extends - com.google.protobuf.GeneratedMessage { + com.google.protobuf.GeneratedMessage + implements xtreemfs_dump_restore_databaseRequestOrBuilder { // Use xtreemfs_dump_restore_databaseRequest.newBuilder() to construct. - private xtreemfs_dump_restore_databaseRequest() { - initFields(); + private xtreemfs_dump_restore_databaseRequest(com.google.protobuf.GeneratedMessage.Builder builder) { + super(builder); + this.unknownFields = builder.getUnknownFields(); } - private xtreemfs_dump_restore_databaseRequest(boolean noInit) {} - + private xtreemfs_dump_restore_databaseRequest(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); } + private static final xtreemfs_dump_restore_databaseRequest defaultInstance; public static xtreemfs_dump_restore_databaseRequest getDefaultInstance() { return defaultInstance; } - + public xtreemfs_dump_restore_databaseRequest getDefaultInstanceForType() { return defaultInstance; } - + + private final com.google.protobuf.UnknownFieldSet unknownFields; + @java.lang.Override + public final com.google.protobuf.UnknownFieldSet + getUnknownFields() { + return this.unknownFields; + } + private xtreemfs_dump_restore_databaseRequest( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + initFields(); + int mutable_bitField0_ = 0; + com.google.protobuf.UnknownFieldSet.Builder unknownFields = + com.google.protobuf.UnknownFieldSet.newBuilder(); + try { + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch (tag) { + case 0: + done = true; + break; + default: { + if (!parseUnknownField(input, unknownFields, + extensionRegistry, tag)) { + done = true; + } + break; + } + case 10: { + bitField0_ |= 0x00000001; + dumpFile_ = input.readBytes(); + break; + } + } + } + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(this); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException( + e.getMessage()).setUnfinishedMessage(this); + } finally { + this.unknownFields = unknownFields.build(); + makeExtensionsImmutable(); + } + } public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { return org.xtreemfs.pbrpc.generatedinterfaces.MRC.internal_static_xtreemfs_pbrpc_xtreemfs_dump_restore_databaseRequest_descriptor; } - + protected com.google.protobuf.GeneratedMessage.FieldAccessorTable internalGetFieldAccessorTable() { - return org.xtreemfs.pbrpc.generatedinterfaces.MRC.internal_static_xtreemfs_pbrpc_xtreemfs_dump_restore_databaseRequest_fieldAccessorTable; + return org.xtreemfs.pbrpc.generatedinterfaces.MRC.internal_static_xtreemfs_pbrpc_xtreemfs_dump_restore_databaseRequest_fieldAccessorTable + .ensureFieldAccessorsInitialized( + org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_dump_restore_databaseRequest.class, org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_dump_restore_databaseRequest.Builder.class); + } + + public static com.google.protobuf.Parser PARSER = + new com.google.protobuf.AbstractParser() { + public xtreemfs_dump_restore_databaseRequest parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return new xtreemfs_dump_restore_databaseRequest(input, extensionRegistry); + } + }; + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; } - + + private int bitField0_; // required string dump_file = 1; public static final int DUMP_FILE_FIELD_NUMBER = 1; - private boolean hasDumpFile; - private java.lang.String dumpFile_ = ""; - public boolean hasDumpFile() { return hasDumpFile; } - public java.lang.String getDumpFile() { return dumpFile_; } - + private java.lang.Object dumpFile_; + /** + * required string dump_file = 1; + * + *
+     * the path to the dump file on the MRC host
+     * 
+ */ + public boolean hasDumpFile() { + return ((bitField0_ & 0x00000001) == 0x00000001); + } + /** + * required string dump_file = 1; + * + *
+     * the path to the dump file on the MRC host
+     * 
+ */ + public java.lang.String getDumpFile() { + java.lang.Object ref = dumpFile_; + if (ref instanceof java.lang.String) { + return (java.lang.String) ref; + } else { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + if (bs.isValidUtf8()) { + dumpFile_ = s; + } + return s; + } + } + /** + * required string dump_file = 1; + * + *
+     * the path to the dump file on the MRC host
+     * 
+ */ + public com.google.protobuf.ByteString + getDumpFileBytes() { + java.lang.Object ref = dumpFile_; + if (ref instanceof java.lang.String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + dumpFile_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + private void initFields() { + dumpFile_ = ""; } + private byte memoizedIsInitialized = -1; public final boolean isInitialized() { - if (!hasDumpFile) return false; + byte isInitialized = memoizedIsInitialized; + if (isInitialized != -1) return isInitialized == 1; + + if (!hasDumpFile()) { + memoizedIsInitialized = 0; + return false; + } + memoizedIsInitialized = 1; return true; } - + public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException { getSerializedSize(); - if (hasDumpFile()) { - output.writeString(1, getDumpFile()); + if (((bitField0_ & 0x00000001) == 0x00000001)) { + output.writeBytes(1, getDumpFileBytes()); } getUnknownFields().writeTo(output); } - + private int memoizedSerializedSize = -1; public int getSerializedSize() { int size = memoizedSerializedSize; if (size != -1) return size; - + size = 0; - if (hasDumpFile()) { + if (((bitField0_ & 0x00000001) == 0x00000001)) { size += com.google.protobuf.CodedOutputStream - .computeStringSize(1, getDumpFile()); + .computeBytesSize(1, getDumpFileBytes()); } size += getUnknownFields().getSerializedSize(); memoizedSerializedSize = size; return size; } - + + private static final long serialVersionUID = 0L; + @java.lang.Override + protected java.lang.Object writeReplace() + throws java.io.ObjectStreamException { + return super.writeReplace(); + } + public static org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_dump_restore_databaseRequest parseFrom( com.google.protobuf.ByteString data) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data).buildParsed(); + return PARSER.parseFrom(data); } public static org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_dump_restore_databaseRequest parseFrom( com.google.protobuf.ByteString data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(data, extensionRegistry); } public static org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_dump_restore_databaseRequest parseFrom(byte[] data) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data).buildParsed(); + return PARSER.parseFrom(data); } public static org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_dump_restore_databaseRequest parseFrom( byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(data, extensionRegistry); } public static org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_dump_restore_databaseRequest parseFrom(java.io.InputStream input) throws java.io.IOException { - return newBuilder().mergeFrom(input).buildParsed(); + return PARSER.parseFrom(input); } public static org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_dump_restore_databaseRequest parseFrom( java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - return newBuilder().mergeFrom(input, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(input, extensionRegistry); } public static org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_dump_restore_databaseRequest parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException { - Builder builder = newBuilder(); - if (builder.mergeDelimitedFrom(input)) { - return builder.buildParsed(); - } else { - return null; - } + return PARSER.parseDelimitedFrom(input); } public static org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_dump_restore_databaseRequest parseDelimitedFrom( java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - Builder builder = newBuilder(); - if (builder.mergeDelimitedFrom(input, extensionRegistry)) { - return builder.buildParsed(); - } else { - return null; - } + return PARSER.parseDelimitedFrom(input, extensionRegistry); } public static org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_dump_restore_databaseRequest parseFrom( com.google.protobuf.CodedInputStream input) throws java.io.IOException { - return newBuilder().mergeFrom(input).buildParsed(); + return PARSER.parseFrom(input); } public static org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_dump_restore_databaseRequest parseFrom( com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - return newBuilder().mergeFrom(input, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(input, extensionRegistry); } - + public static Builder newBuilder() { return Builder.create(); } public Builder newBuilderForType() { return newBuilder(); } public static Builder newBuilder(org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_dump_restore_databaseRequest prototype) { return newBuilder().mergeFrom(prototype); } public Builder toBuilder() { return newBuilder(this); } - + + @java.lang.Override + protected Builder newBuilderForType( + com.google.protobuf.GeneratedMessage.BuilderParent parent) { + Builder builder = new Builder(parent); + return builder; + } + /** + * Protobuf type {@code xtreemfs.pbrpc.xtreemfs_dump_restore_databaseRequest} + * + *
+     * dumps or restores the MRC database
+     * 
+ */ public static final class Builder extends - com.google.protobuf.GeneratedMessage.Builder { - private org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_dump_restore_databaseRequest result; - + com.google.protobuf.GeneratedMessage.Builder + implements org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_dump_restore_databaseRequestOrBuilder { + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return org.xtreemfs.pbrpc.generatedinterfaces.MRC.internal_static_xtreemfs_pbrpc_xtreemfs_dump_restore_databaseRequest_descriptor; + } + + protected com.google.protobuf.GeneratedMessage.FieldAccessorTable + internalGetFieldAccessorTable() { + return org.xtreemfs.pbrpc.generatedinterfaces.MRC.internal_static_xtreemfs_pbrpc_xtreemfs_dump_restore_databaseRequest_fieldAccessorTable + .ensureFieldAccessorsInitialized( + org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_dump_restore_databaseRequest.class, org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_dump_restore_databaseRequest.Builder.class); + } + // Construct using org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_dump_restore_databaseRequest.newBuilder() - private Builder() {} - - private static Builder create() { - Builder builder = new Builder(); - builder.result = new org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_dump_restore_databaseRequest(); - return builder; + private Builder() { + maybeForceBuilderInitialization(); } - - protected org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_dump_restore_databaseRequest internalGetResult() { - return result; + + private Builder( + com.google.protobuf.GeneratedMessage.BuilderParent parent) { + super(parent); + maybeForceBuilderInitialization(); } - - public Builder clear() { - if (result == null) { - throw new IllegalStateException( - "Cannot call clear() after build()."); + private void maybeForceBuilderInitialization() { + if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) { } - result = new org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_dump_restore_databaseRequest(); + } + private static Builder create() { + return new Builder(); + } + + public Builder clear() { + super.clear(); + dumpFile_ = ""; + bitField0_ = (bitField0_ & ~0x00000001); return this; } - + public Builder clone() { - return create().mergeFrom(result); + return create().mergeFrom(buildPartial()); } - + public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() { - return org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_dump_restore_databaseRequest.getDescriptor(); + return org.xtreemfs.pbrpc.generatedinterfaces.MRC.internal_static_xtreemfs_pbrpc_xtreemfs_dump_restore_databaseRequest_descriptor; } - + public org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_dump_restore_databaseRequest getDefaultInstanceForType() { return org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_dump_restore_databaseRequest.getDefaultInstance(); } - - public boolean isInitialized() { - return result.isInitialized(); - } + public org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_dump_restore_databaseRequest build() { - if (result != null && !isInitialized()) { + org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_dump_restore_databaseRequest result = buildPartial(); + if (!result.isInitialized()) { throw newUninitializedMessageException(result); } - return buildPartial(); - } - - private org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_dump_restore_databaseRequest buildParsed() - throws com.google.protobuf.InvalidProtocolBufferException { - if (!isInitialized()) { - throw newUninitializedMessageException( - result).asInvalidProtocolBufferException(); - } - return buildPartial(); + return result; } - + public org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_dump_restore_databaseRequest buildPartial() { - if (result == null) { - throw new IllegalStateException( - "build() has already been called on this Builder."); - } - org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_dump_restore_databaseRequest returnMe = result; - result = null; - return returnMe; + org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_dump_restore_databaseRequest result = new org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_dump_restore_databaseRequest(this); + int from_bitField0_ = bitField0_; + int to_bitField0_ = 0; + if (((from_bitField0_ & 0x00000001) == 0x00000001)) { + to_bitField0_ |= 0x00000001; + } + result.dumpFile_ = dumpFile_; + result.bitField0_ = to_bitField0_; + onBuilt(); + return result; } - + public Builder mergeFrom(com.google.protobuf.Message other) { if (other instanceof org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_dump_restore_databaseRequest) { return mergeFrom((org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_dump_restore_databaseRequest)other); @@ -13918,328 +33348,772 @@ public final class MRC { return this; } } - + public Builder mergeFrom(org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_dump_restore_databaseRequest other) { if (other == org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_dump_restore_databaseRequest.getDefaultInstance()) return this; if (other.hasDumpFile()) { - setDumpFile(other.getDumpFile()); + bitField0_ |= 0x00000001; + dumpFile_ = other.dumpFile_; + onChanged(); } this.mergeUnknownFields(other.getUnknownFields()); return this; } - + + public final boolean isInitialized() { + if (!hasDumpFile()) { + + return false; + } + return true; + } + public Builder mergeFrom( com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - com.google.protobuf.UnknownFieldSet.Builder unknownFields = - com.google.protobuf.UnknownFieldSet.newBuilder( - this.getUnknownFields()); - while (true) { + org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_dump_restore_databaseRequest parsedMessage = null; + try { + parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + parsedMessage = (org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_dump_restore_databaseRequest) e.getUnfinishedMessage(); + throw e; + } finally { + if (parsedMessage != null) { + mergeFrom(parsedMessage); + } + } + return this; + } + private int bitField0_; + + // required string dump_file = 1; + private java.lang.Object dumpFile_ = ""; + /** + * required string dump_file = 1; + * + *
+       * the path to the dump file on the MRC host
+       * 
+ */ + public boolean hasDumpFile() { + return ((bitField0_ & 0x00000001) == 0x00000001); + } + /** + * required string dump_file = 1; + * + *
+       * the path to the dump file on the MRC host
+       * 
+ */ + public java.lang.String getDumpFile() { + java.lang.Object ref = dumpFile_; + if (!(ref instanceof java.lang.String)) { + java.lang.String s = ((com.google.protobuf.ByteString) ref) + .toStringUtf8(); + dumpFile_ = s; + return s; + } else { + return (java.lang.String) ref; + } + } + /** + * required string dump_file = 1; + * + *
+       * the path to the dump file on the MRC host
+       * 
+ */ + public com.google.protobuf.ByteString + getDumpFileBytes() { + java.lang.Object ref = dumpFile_; + if (ref instanceof String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + dumpFile_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + /** + * required string dump_file = 1; + * + *
+       * the path to the dump file on the MRC host
+       * 
+ */ + public Builder setDumpFile( + java.lang.String value) { + if (value == null) { + throw new NullPointerException(); + } + bitField0_ |= 0x00000001; + dumpFile_ = value; + onChanged(); + return this; + } + /** + * required string dump_file = 1; + * + *
+       * the path to the dump file on the MRC host
+       * 
+ */ + public Builder clearDumpFile() { + bitField0_ = (bitField0_ & ~0x00000001); + dumpFile_ = getDefaultInstance().getDumpFile(); + onChanged(); + return this; + } + /** + * required string dump_file = 1; + * + *
+       * the path to the dump file on the MRC host
+       * 
+ */ + public Builder setDumpFileBytes( + com.google.protobuf.ByteString value) { + if (value == null) { + throw new NullPointerException(); + } + bitField0_ |= 0x00000001; + dumpFile_ = value; + onChanged(); + return this; + } + + // @@protoc_insertion_point(builder_scope:xtreemfs.pbrpc.xtreemfs_dump_restore_databaseRequest) + } + + static { + defaultInstance = new xtreemfs_dump_restore_databaseRequest(true); + defaultInstance.initFields(); + } + + // @@protoc_insertion_point(class_scope:xtreemfs.pbrpc.xtreemfs_dump_restore_databaseRequest) + } + + public interface xtreemfs_get_suitable_osdsRequestOrBuilder + extends com.google.protobuf.MessageOrBuilder { + + // optional string file_id = 1; + /** + * optional string file_id = 1; + * + *
+     * the file ID
+     * 
+ */ + boolean hasFileId(); + /** + * optional string file_id = 1; + * + *
+     * the file ID
+     * 
+ */ + java.lang.String getFileId(); + /** + * optional string file_id = 1; + * + *
+     * the file ID
+     * 
+ */ + com.google.protobuf.ByteString + getFileIdBytes(); + + // optional string path = 3; + /** + * optional string path = 3; + * + *
+     * or path and volume_name to file.
+     * 
+ */ + boolean hasPath(); + /** + * optional string path = 3; + * + *
+     * or path and volume_name to file.
+     * 
+ */ + java.lang.String getPath(); + /** + * optional string path = 3; + * + *
+     * or path and volume_name to file.
+     * 
+ */ + com.google.protobuf.ByteString + getPathBytes(); + + // optional string volume_name = 4; + /** + * optional string volume_name = 4; + */ + boolean hasVolumeName(); + /** + * optional string volume_name = 4; + */ + java.lang.String getVolumeName(); + /** + * optional string volume_name = 4; + */ + com.google.protobuf.ByteString + getVolumeNameBytes(); + + // required fixed32 num_osds = 2; + /** + * required fixed32 num_osds = 2; + * + *
+     * the number of OSDs for the new replicas
+     * 
+ */ + boolean hasNumOsds(); + /** + * required fixed32 num_osds = 2; + * + *
+     * the number of OSDs for the new replicas
+     * 
+ */ + int getNumOsds(); + } + /** + * Protobuf type {@code xtreemfs.pbrpc.xtreemfs_get_suitable_osdsRequest} + * + *
+   * requests the list of suitable OSDs for new replicas of a file
+   * 
+ */ + public static final class xtreemfs_get_suitable_osdsRequest extends + com.google.protobuf.GeneratedMessage + implements xtreemfs_get_suitable_osdsRequestOrBuilder { + // Use xtreemfs_get_suitable_osdsRequest.newBuilder() to construct. + private xtreemfs_get_suitable_osdsRequest(com.google.protobuf.GeneratedMessage.Builder builder) { + super(builder); + this.unknownFields = builder.getUnknownFields(); + } + private xtreemfs_get_suitable_osdsRequest(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); } + + private static final xtreemfs_get_suitable_osdsRequest defaultInstance; + public static xtreemfs_get_suitable_osdsRequest getDefaultInstance() { + return defaultInstance; + } + + public xtreemfs_get_suitable_osdsRequest getDefaultInstanceForType() { + return defaultInstance; + } + + private final com.google.protobuf.UnknownFieldSet unknownFields; + @java.lang.Override + public final com.google.protobuf.UnknownFieldSet + getUnknownFields() { + return this.unknownFields; + } + private xtreemfs_get_suitable_osdsRequest( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + initFields(); + int mutable_bitField0_ = 0; + com.google.protobuf.UnknownFieldSet.Builder unknownFields = + com.google.protobuf.UnknownFieldSet.newBuilder(); + try { + boolean done = false; + while (!done) { int tag = input.readTag(); switch (tag) { case 0: - this.setUnknownFields(unknownFields.build()); - return this; + done = true; + break; default: { if (!parseUnknownField(input, unknownFields, extensionRegistry, tag)) { - this.setUnknownFields(unknownFields.build()); - return this; + done = true; } break; } case 10: { - setDumpFile(input.readString()); + bitField0_ |= 0x00000001; + fileId_ = input.readBytes(); break; } - } - } - } - - - // required string dump_file = 1; - public boolean hasDumpFile() { - return result.hasDumpFile(); - } - public java.lang.String getDumpFile() { - return result.getDumpFile(); - } - public Builder setDumpFile(java.lang.String value) { - if (value == null) { - throw new NullPointerException(); - } - result.hasDumpFile = true; - result.dumpFile_ = value; - return this; - } - public Builder clearDumpFile() { - result.hasDumpFile = false; - result.dumpFile_ = getDefaultInstance().getDumpFile(); - return this; + case 21: { + bitField0_ |= 0x00000008; + numOsds_ = input.readFixed32(); + break; + } + case 26: { + bitField0_ |= 0x00000002; + path_ = input.readBytes(); + break; + } + case 34: { + bitField0_ |= 0x00000004; + volumeName_ = input.readBytes(); + break; + } + } + } + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(this); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException( + e.getMessage()).setUnfinishedMessage(this); + } finally { + this.unknownFields = unknownFields.build(); + makeExtensionsImmutable(); } - - // @@protoc_insertion_point(builder_scope:xtreemfs.pbrpc.xtreemfs_dump_restore_databaseRequest) - } - - static { - defaultInstance = new xtreemfs_dump_restore_databaseRequest(true); - org.xtreemfs.pbrpc.generatedinterfaces.MRC.internalForceInit(); - defaultInstance.initFields(); - } - - // @@protoc_insertion_point(class_scope:xtreemfs.pbrpc.xtreemfs_dump_restore_databaseRequest) - } - - public static final class xtreemfs_get_suitable_osdsRequest extends - com.google.protobuf.GeneratedMessage { - // Use xtreemfs_get_suitable_osdsRequest.newBuilder() to construct. - private xtreemfs_get_suitable_osdsRequest() { - initFields(); - } - private xtreemfs_get_suitable_osdsRequest(boolean noInit) {} - - private static final xtreemfs_get_suitable_osdsRequest defaultInstance; - public static xtreemfs_get_suitable_osdsRequest getDefaultInstance() { - return defaultInstance; - } - - public xtreemfs_get_suitable_osdsRequest getDefaultInstanceForType() { - return defaultInstance; } - public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { return org.xtreemfs.pbrpc.generatedinterfaces.MRC.internal_static_xtreemfs_pbrpc_xtreemfs_get_suitable_osdsRequest_descriptor; } - + protected com.google.protobuf.GeneratedMessage.FieldAccessorTable internalGetFieldAccessorTable() { - return org.xtreemfs.pbrpc.generatedinterfaces.MRC.internal_static_xtreemfs_pbrpc_xtreemfs_get_suitable_osdsRequest_fieldAccessorTable; + return org.xtreemfs.pbrpc.generatedinterfaces.MRC.internal_static_xtreemfs_pbrpc_xtreemfs_get_suitable_osdsRequest_fieldAccessorTable + .ensureFieldAccessorsInitialized( + org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_get_suitable_osdsRequest.class, org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_get_suitable_osdsRequest.Builder.class); + } + + public static com.google.protobuf.Parser PARSER = + new com.google.protobuf.AbstractParser() { + public xtreemfs_get_suitable_osdsRequest parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return new xtreemfs_get_suitable_osdsRequest(input, extensionRegistry); + } + }; + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; } - + + private int bitField0_; // optional string file_id = 1; public static final int FILE_ID_FIELD_NUMBER = 1; - private boolean hasFileId; - private java.lang.String fileId_ = ""; - public boolean hasFileId() { return hasFileId; } - public java.lang.String getFileId() { return fileId_; } - + private java.lang.Object fileId_; + /** + * optional string file_id = 1; + * + *
+     * the file ID
+     * 
+ */ + public boolean hasFileId() { + return ((bitField0_ & 0x00000001) == 0x00000001); + } + /** + * optional string file_id = 1; + * + *
+     * the file ID
+     * 
+ */ + public java.lang.String getFileId() { + java.lang.Object ref = fileId_; + if (ref instanceof java.lang.String) { + return (java.lang.String) ref; + } else { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + if (bs.isValidUtf8()) { + fileId_ = s; + } + return s; + } + } + /** + * optional string file_id = 1; + * + *
+     * the file ID
+     * 
+ */ + public com.google.protobuf.ByteString + getFileIdBytes() { + java.lang.Object ref = fileId_; + if (ref instanceof java.lang.String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + fileId_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + // optional string path = 3; public static final int PATH_FIELD_NUMBER = 3; - private boolean hasPath; - private java.lang.String path_ = ""; - public boolean hasPath() { return hasPath; } - public java.lang.String getPath() { return path_; } - + private java.lang.Object path_; + /** + * optional string path = 3; + * + *
+     * or path and volume_name to file.
+     * 
+ */ + public boolean hasPath() { + return ((bitField0_ & 0x00000002) == 0x00000002); + } + /** + * optional string path = 3; + * + *
+     * or path and volume_name to file.
+     * 
+ */ + public java.lang.String getPath() { + java.lang.Object ref = path_; + if (ref instanceof java.lang.String) { + return (java.lang.String) ref; + } else { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + if (bs.isValidUtf8()) { + path_ = s; + } + return s; + } + } + /** + * optional string path = 3; + * + *
+     * or path and volume_name to file.
+     * 
+ */ + public com.google.protobuf.ByteString + getPathBytes() { + java.lang.Object ref = path_; + if (ref instanceof java.lang.String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + path_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + // optional string volume_name = 4; public static final int VOLUME_NAME_FIELD_NUMBER = 4; - private boolean hasVolumeName; - private java.lang.String volumeName_ = ""; - public boolean hasVolumeName() { return hasVolumeName; } - public java.lang.String getVolumeName() { return volumeName_; } - + private java.lang.Object volumeName_; + /** + * optional string volume_name = 4; + */ + public boolean hasVolumeName() { + return ((bitField0_ & 0x00000004) == 0x00000004); + } + /** + * optional string volume_name = 4; + */ + public java.lang.String getVolumeName() { + java.lang.Object ref = volumeName_; + if (ref instanceof java.lang.String) { + return (java.lang.String) ref; + } else { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + if (bs.isValidUtf8()) { + volumeName_ = s; + } + return s; + } + } + /** + * optional string volume_name = 4; + */ + public com.google.protobuf.ByteString + getVolumeNameBytes() { + java.lang.Object ref = volumeName_; + if (ref instanceof java.lang.String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + volumeName_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + // required fixed32 num_osds = 2; public static final int NUM_OSDS_FIELD_NUMBER = 2; - private boolean hasNumOsds; - private int numOsds_ = 0; - public boolean hasNumOsds() { return hasNumOsds; } - public int getNumOsds() { return numOsds_; } - + private int numOsds_; + /** + * required fixed32 num_osds = 2; + * + *
+     * the number of OSDs for the new replicas
+     * 
+ */ + public boolean hasNumOsds() { + return ((bitField0_ & 0x00000008) == 0x00000008); + } + /** + * required fixed32 num_osds = 2; + * + *
+     * the number of OSDs for the new replicas
+     * 
+ */ + public int getNumOsds() { + return numOsds_; + } + private void initFields() { + fileId_ = ""; + path_ = ""; + volumeName_ = ""; + numOsds_ = 0; } + private byte memoizedIsInitialized = -1; public final boolean isInitialized() { - if (!hasNumOsds) return false; + byte isInitialized = memoizedIsInitialized; + if (isInitialized != -1) return isInitialized == 1; + + if (!hasNumOsds()) { + memoizedIsInitialized = 0; + return false; + } + memoizedIsInitialized = 1; return true; } - + public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException { getSerializedSize(); - if (hasFileId()) { - output.writeString(1, getFileId()); + if (((bitField0_ & 0x00000001) == 0x00000001)) { + output.writeBytes(1, getFileIdBytes()); } - if (hasNumOsds()) { - output.writeFixed32(2, getNumOsds()); + if (((bitField0_ & 0x00000008) == 0x00000008)) { + output.writeFixed32(2, numOsds_); } - if (hasPath()) { - output.writeString(3, getPath()); + if (((bitField0_ & 0x00000002) == 0x00000002)) { + output.writeBytes(3, getPathBytes()); } - if (hasVolumeName()) { - output.writeString(4, getVolumeName()); + if (((bitField0_ & 0x00000004) == 0x00000004)) { + output.writeBytes(4, getVolumeNameBytes()); } getUnknownFields().writeTo(output); } - + private int memoizedSerializedSize = -1; public int getSerializedSize() { int size = memoizedSerializedSize; if (size != -1) return size; - + size = 0; - if (hasFileId()) { + if (((bitField0_ & 0x00000001) == 0x00000001)) { size += com.google.protobuf.CodedOutputStream - .computeStringSize(1, getFileId()); + .computeBytesSize(1, getFileIdBytes()); } - if (hasNumOsds()) { + if (((bitField0_ & 0x00000008) == 0x00000008)) { size += com.google.protobuf.CodedOutputStream - .computeFixed32Size(2, getNumOsds()); + .computeFixed32Size(2, numOsds_); } - if (hasPath()) { + if (((bitField0_ & 0x00000002) == 0x00000002)) { size += com.google.protobuf.CodedOutputStream - .computeStringSize(3, getPath()); + .computeBytesSize(3, getPathBytes()); } - if (hasVolumeName()) { + if (((bitField0_ & 0x00000004) == 0x00000004)) { size += com.google.protobuf.CodedOutputStream - .computeStringSize(4, getVolumeName()); + .computeBytesSize(4, getVolumeNameBytes()); } size += getUnknownFields().getSerializedSize(); memoizedSerializedSize = size; return size; } - + + private static final long serialVersionUID = 0L; + @java.lang.Override + protected java.lang.Object writeReplace() + throws java.io.ObjectStreamException { + return super.writeReplace(); + } + public static org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_get_suitable_osdsRequest parseFrom( com.google.protobuf.ByteString data) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data).buildParsed(); + return PARSER.parseFrom(data); } public static org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_get_suitable_osdsRequest parseFrom( com.google.protobuf.ByteString data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(data, extensionRegistry); } public static org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_get_suitable_osdsRequest parseFrom(byte[] data) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data).buildParsed(); + return PARSER.parseFrom(data); } public static org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_get_suitable_osdsRequest parseFrom( byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(data, extensionRegistry); } public static org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_get_suitable_osdsRequest parseFrom(java.io.InputStream input) throws java.io.IOException { - return newBuilder().mergeFrom(input).buildParsed(); + return PARSER.parseFrom(input); } public static org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_get_suitable_osdsRequest parseFrom( java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - return newBuilder().mergeFrom(input, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(input, extensionRegistry); } public static org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_get_suitable_osdsRequest parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException { - Builder builder = newBuilder(); - if (builder.mergeDelimitedFrom(input)) { - return builder.buildParsed(); - } else { - return null; - } + return PARSER.parseDelimitedFrom(input); } public static org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_get_suitable_osdsRequest parseDelimitedFrom( java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - Builder builder = newBuilder(); - if (builder.mergeDelimitedFrom(input, extensionRegistry)) { - return builder.buildParsed(); - } else { - return null; - } + return PARSER.parseDelimitedFrom(input, extensionRegistry); } public static org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_get_suitable_osdsRequest parseFrom( com.google.protobuf.CodedInputStream input) throws java.io.IOException { - return newBuilder().mergeFrom(input).buildParsed(); + return PARSER.parseFrom(input); } public static org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_get_suitable_osdsRequest parseFrom( com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - return newBuilder().mergeFrom(input, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(input, extensionRegistry); } - + public static Builder newBuilder() { return Builder.create(); } public Builder newBuilderForType() { return newBuilder(); } public static Builder newBuilder(org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_get_suitable_osdsRequest prototype) { return newBuilder().mergeFrom(prototype); } public Builder toBuilder() { return newBuilder(this); } - + + @java.lang.Override + protected Builder newBuilderForType( + com.google.protobuf.GeneratedMessage.BuilderParent parent) { + Builder builder = new Builder(parent); + return builder; + } + /** + * Protobuf type {@code xtreemfs.pbrpc.xtreemfs_get_suitable_osdsRequest} + * + *
+     * requests the list of suitable OSDs for new replicas of a file
+     * 
+ */ public static final class Builder extends - com.google.protobuf.GeneratedMessage.Builder { - private org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_get_suitable_osdsRequest result; - + com.google.protobuf.GeneratedMessage.Builder + implements org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_get_suitable_osdsRequestOrBuilder { + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return org.xtreemfs.pbrpc.generatedinterfaces.MRC.internal_static_xtreemfs_pbrpc_xtreemfs_get_suitable_osdsRequest_descriptor; + } + + protected com.google.protobuf.GeneratedMessage.FieldAccessorTable + internalGetFieldAccessorTable() { + return org.xtreemfs.pbrpc.generatedinterfaces.MRC.internal_static_xtreemfs_pbrpc_xtreemfs_get_suitable_osdsRequest_fieldAccessorTable + .ensureFieldAccessorsInitialized( + org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_get_suitable_osdsRequest.class, org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_get_suitable_osdsRequest.Builder.class); + } + // Construct using org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_get_suitable_osdsRequest.newBuilder() - private Builder() {} - - private static Builder create() { - Builder builder = new Builder(); - builder.result = new org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_get_suitable_osdsRequest(); - return builder; + private Builder() { + maybeForceBuilderInitialization(); } - - protected org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_get_suitable_osdsRequest internalGetResult() { - return result; + + private Builder( + com.google.protobuf.GeneratedMessage.BuilderParent parent) { + super(parent); + maybeForceBuilderInitialization(); } - - public Builder clear() { - if (result == null) { - throw new IllegalStateException( - "Cannot call clear() after build()."); + private void maybeForceBuilderInitialization() { + if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) { } - result = new org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_get_suitable_osdsRequest(); + } + private static Builder create() { + return new Builder(); + } + + public Builder clear() { + super.clear(); + fileId_ = ""; + bitField0_ = (bitField0_ & ~0x00000001); + path_ = ""; + bitField0_ = (bitField0_ & ~0x00000002); + volumeName_ = ""; + bitField0_ = (bitField0_ & ~0x00000004); + numOsds_ = 0; + bitField0_ = (bitField0_ & ~0x00000008); return this; } - + public Builder clone() { - return create().mergeFrom(result); + return create().mergeFrom(buildPartial()); } - + public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() { - return org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_get_suitable_osdsRequest.getDescriptor(); + return org.xtreemfs.pbrpc.generatedinterfaces.MRC.internal_static_xtreemfs_pbrpc_xtreemfs_get_suitable_osdsRequest_descriptor; } - + public org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_get_suitable_osdsRequest getDefaultInstanceForType() { return org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_get_suitable_osdsRequest.getDefaultInstance(); } - - public boolean isInitialized() { - return result.isInitialized(); - } + public org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_get_suitable_osdsRequest build() { - if (result != null && !isInitialized()) { + org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_get_suitable_osdsRequest result = buildPartial(); + if (!result.isInitialized()) { throw newUninitializedMessageException(result); } - return buildPartial(); - } - - private org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_get_suitable_osdsRequest buildParsed() - throws com.google.protobuf.InvalidProtocolBufferException { - if (!isInitialized()) { - throw newUninitializedMessageException( - result).asInvalidProtocolBufferException(); - } - return buildPartial(); + return result; } - + public org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_get_suitable_osdsRequest buildPartial() { - if (result == null) { - throw new IllegalStateException( - "build() has already been called on this Builder."); - } - org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_get_suitable_osdsRequest returnMe = result; - result = null; - return returnMe; + org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_get_suitable_osdsRequest result = new org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_get_suitable_osdsRequest(this); + int from_bitField0_ = bitField0_; + int to_bitField0_ = 0; + if (((from_bitField0_ & 0x00000001) == 0x00000001)) { + to_bitField0_ |= 0x00000001; + } + result.fileId_ = fileId_; + if (((from_bitField0_ & 0x00000002) == 0x00000002)) { + to_bitField0_ |= 0x00000002; + } + result.path_ = path_; + if (((from_bitField0_ & 0x00000004) == 0x00000004)) { + to_bitField0_ |= 0x00000004; + } + result.volumeName_ = volumeName_; + if (((from_bitField0_ & 0x00000008) == 0x00000008)) { + to_bitField0_ |= 0x00000008; + } + result.numOsds_ = numOsds_; + result.bitField0_ = to_bitField0_; + onBuilt(); + return result; } - + public Builder mergeFrom(com.google.protobuf.Message other) { if (other instanceof org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_get_suitable_osdsRequest) { return mergeFrom((org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_get_suitable_osdsRequest)other); @@ -14248,17 +34122,23 @@ public final class MRC { return this; } } - + public Builder mergeFrom(org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_get_suitable_osdsRequest other) { if (other == org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_get_suitable_osdsRequest.getDefaultInstance()) return this; if (other.hasFileId()) { - setFileId(other.getFileId()); + bitField0_ |= 0x00000001; + fileId_ = other.fileId_; + onChanged(); } if (other.hasPath()) { - setPath(other.getPath()); + bitField0_ |= 0x00000002; + path_ = other.path_; + onChanged(); } if (other.hasVolumeName()) { - setVolumeName(other.getVolumeName()); + bitField0_ |= 0x00000004; + volumeName_ = other.volumeName_; + onChanged(); } if (other.hasNumOsds()) { setNumOsds(other.getNumOsds()); @@ -14266,207 +34146,554 @@ public final class MRC { this.mergeUnknownFields(other.getUnknownFields()); return this; } - + + public final boolean isInitialized() { + if (!hasNumOsds()) { + + return false; + } + return true; + } + public Builder mergeFrom( com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - com.google.protobuf.UnknownFieldSet.Builder unknownFields = - com.google.protobuf.UnknownFieldSet.newBuilder( - this.getUnknownFields()); - while (true) { - int tag = input.readTag(); - switch (tag) { - case 0: - this.setUnknownFields(unknownFields.build()); - return this; - default: { - if (!parseUnknownField(input, unknownFields, - extensionRegistry, tag)) { - this.setUnknownFields(unknownFields.build()); - return this; - } - break; - } - case 10: { - setFileId(input.readString()); - break; - } - case 21: { - setNumOsds(input.readFixed32()); - break; - } - case 26: { - setPath(input.readString()); - break; - } - case 34: { - setVolumeName(input.readString()); - break; - } + org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_get_suitable_osdsRequest parsedMessage = null; + try { + parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + parsedMessage = (org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_get_suitable_osdsRequest) e.getUnfinishedMessage(); + throw e; + } finally { + if (parsedMessage != null) { + mergeFrom(parsedMessage); } } + return this; } - - + private int bitField0_; + // optional string file_id = 1; + private java.lang.Object fileId_ = ""; + /** + * optional string file_id = 1; + * + *
+       * the file ID
+       * 
+ */ public boolean hasFileId() { - return result.hasFileId(); - } + return ((bitField0_ & 0x00000001) == 0x00000001); + } + /** + * optional string file_id = 1; + * + *
+       * the file ID
+       * 
+ */ public java.lang.String getFileId() { - return result.getFileId(); - } - public Builder setFileId(java.lang.String value) { + java.lang.Object ref = fileId_; + if (!(ref instanceof java.lang.String)) { + java.lang.String s = ((com.google.protobuf.ByteString) ref) + .toStringUtf8(); + fileId_ = s; + return s; + } else { + return (java.lang.String) ref; + } + } + /** + * optional string file_id = 1; + * + *
+       * the file ID
+       * 
+ */ + public com.google.protobuf.ByteString + getFileIdBytes() { + java.lang.Object ref = fileId_; + if (ref instanceof String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + fileId_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + /** + * optional string file_id = 1; + * + *
+       * the file ID
+       * 
+ */ + public Builder setFileId( + java.lang.String value) { if (value == null) { throw new NullPointerException(); } - result.hasFileId = true; - result.fileId_ = value; - return this; - } + bitField0_ |= 0x00000001; + fileId_ = value; + onChanged(); + return this; + } + /** + * optional string file_id = 1; + * + *
+       * the file ID
+       * 
+ */ public Builder clearFileId() { - result.hasFileId = false; - result.fileId_ = getDefaultInstance().getFileId(); + bitField0_ = (bitField0_ & ~0x00000001); + fileId_ = getDefaultInstance().getFileId(); + onChanged(); + return this; + } + /** + * optional string file_id = 1; + * + *
+       * the file ID
+       * 
+ */ + public Builder setFileIdBytes( + com.google.protobuf.ByteString value) { + if (value == null) { + throw new NullPointerException(); + } + bitField0_ |= 0x00000001; + fileId_ = value; + onChanged(); return this; } - + // optional string path = 3; + private java.lang.Object path_ = ""; + /** + * optional string path = 3; + * + *
+       * or path and volume_name to file.
+       * 
+ */ public boolean hasPath() { - return result.hasPath(); - } + return ((bitField0_ & 0x00000002) == 0x00000002); + } + /** + * optional string path = 3; + * + *
+       * or path and volume_name to file.
+       * 
+ */ public java.lang.String getPath() { - return result.getPath(); - } - public Builder setPath(java.lang.String value) { + java.lang.Object ref = path_; + if (!(ref instanceof java.lang.String)) { + java.lang.String s = ((com.google.protobuf.ByteString) ref) + .toStringUtf8(); + path_ = s; + return s; + } else { + return (java.lang.String) ref; + } + } + /** + * optional string path = 3; + * + *
+       * or path and volume_name to file.
+       * 
+ */ + public com.google.protobuf.ByteString + getPathBytes() { + java.lang.Object ref = path_; + if (ref instanceof String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + path_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + /** + * optional string path = 3; + * + *
+       * or path and volume_name to file.
+       * 
+ */ + public Builder setPath( + java.lang.String value) { if (value == null) { throw new NullPointerException(); } - result.hasPath = true; - result.path_ = value; - return this; - } + bitField0_ |= 0x00000002; + path_ = value; + onChanged(); + return this; + } + /** + * optional string path = 3; + * + *
+       * or path and volume_name to file.
+       * 
+ */ public Builder clearPath() { - result.hasPath = false; - result.path_ = getDefaultInstance().getPath(); + bitField0_ = (bitField0_ & ~0x00000002); + path_ = getDefaultInstance().getPath(); + onChanged(); + return this; + } + /** + * optional string path = 3; + * + *
+       * or path and volume_name to file.
+       * 
+ */ + public Builder setPathBytes( + com.google.protobuf.ByteString value) { + if (value == null) { + throw new NullPointerException(); + } + bitField0_ |= 0x00000002; + path_ = value; + onChanged(); return this; } - + // optional string volume_name = 4; + private java.lang.Object volumeName_ = ""; + /** + * optional string volume_name = 4; + */ public boolean hasVolumeName() { - return result.hasVolumeName(); + return ((bitField0_ & 0x00000004) == 0x00000004); } + /** + * optional string volume_name = 4; + */ public java.lang.String getVolumeName() { - return result.getVolumeName(); + java.lang.Object ref = volumeName_; + if (!(ref instanceof java.lang.String)) { + java.lang.String s = ((com.google.protobuf.ByteString) ref) + .toStringUtf8(); + volumeName_ = s; + return s; + } else { + return (java.lang.String) ref; + } + } + /** + * optional string volume_name = 4; + */ + public com.google.protobuf.ByteString + getVolumeNameBytes() { + java.lang.Object ref = volumeName_; + if (ref instanceof String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + volumeName_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } } - public Builder setVolumeName(java.lang.String value) { + /** + * optional string volume_name = 4; + */ + public Builder setVolumeName( + java.lang.String value) { if (value == null) { throw new NullPointerException(); } - result.hasVolumeName = true; - result.volumeName_ = value; + bitField0_ |= 0x00000004; + volumeName_ = value; + onChanged(); return this; } + /** + * optional string volume_name = 4; + */ public Builder clearVolumeName() { - result.hasVolumeName = false; - result.volumeName_ = getDefaultInstance().getVolumeName(); + bitField0_ = (bitField0_ & ~0x00000004); + volumeName_ = getDefaultInstance().getVolumeName(); + onChanged(); + return this; + } + /** + * optional string volume_name = 4; + */ + public Builder setVolumeNameBytes( + com.google.protobuf.ByteString value) { + if (value == null) { + throw new NullPointerException(); + } + bitField0_ |= 0x00000004; + volumeName_ = value; + onChanged(); return this; } - + // required fixed32 num_osds = 2; + private int numOsds_ ; + /** + * required fixed32 num_osds = 2; + * + *
+       * the number of OSDs for the new replicas
+       * 
+ */ public boolean hasNumOsds() { - return result.hasNumOsds(); - } + return ((bitField0_ & 0x00000008) == 0x00000008); + } + /** + * required fixed32 num_osds = 2; + * + *
+       * the number of OSDs for the new replicas
+       * 
+ */ public int getNumOsds() { - return result.getNumOsds(); - } + return numOsds_; + } + /** + * required fixed32 num_osds = 2; + * + *
+       * the number of OSDs for the new replicas
+       * 
+ */ public Builder setNumOsds(int value) { - result.hasNumOsds = true; - result.numOsds_ = value; - return this; - } + bitField0_ |= 0x00000008; + numOsds_ = value; + onChanged(); + return this; + } + /** + * required fixed32 num_osds = 2; + * + *
+       * the number of OSDs for the new replicas
+       * 
+ */ public Builder clearNumOsds() { - result.hasNumOsds = false; - result.numOsds_ = 0; + bitField0_ = (bitField0_ & ~0x00000008); + numOsds_ = 0; + onChanged(); return this; } - + // @@protoc_insertion_point(builder_scope:xtreemfs.pbrpc.xtreemfs_get_suitable_osdsRequest) } - + static { defaultInstance = new xtreemfs_get_suitable_osdsRequest(true); - org.xtreemfs.pbrpc.generatedinterfaces.MRC.internalForceInit(); defaultInstance.initFields(); } - + // @@protoc_insertion_point(class_scope:xtreemfs.pbrpc.xtreemfs_get_suitable_osdsRequest) } - + + public interface xtreemfs_get_suitable_osdsResponseOrBuilder + extends com.google.protobuf.MessageOrBuilder { + + // repeated string osd_uuids = 1; + /** + * repeated string osd_uuids = 1; + */ + java.util.List + getOsdUuidsList(); + /** + * repeated string osd_uuids = 1; + */ + int getOsdUuidsCount(); + /** + * repeated string osd_uuids = 1; + */ + java.lang.String getOsdUuids(int index); + /** + * repeated string osd_uuids = 1; + */ + com.google.protobuf.ByteString + getOsdUuidsBytes(int index); + } + /** + * Protobuf type {@code xtreemfs.pbrpc.xtreemfs_get_suitable_osdsResponse} + * + *
+   * returns a list of suitable OSDs
+   * 
+ */ public static final class xtreemfs_get_suitable_osdsResponse extends - com.google.protobuf.GeneratedMessage { + com.google.protobuf.GeneratedMessage + implements xtreemfs_get_suitable_osdsResponseOrBuilder { // Use xtreemfs_get_suitable_osdsResponse.newBuilder() to construct. - private xtreemfs_get_suitable_osdsResponse() { - initFields(); + private xtreemfs_get_suitable_osdsResponse(com.google.protobuf.GeneratedMessage.Builder builder) { + super(builder); + this.unknownFields = builder.getUnknownFields(); } - private xtreemfs_get_suitable_osdsResponse(boolean noInit) {} - + private xtreemfs_get_suitable_osdsResponse(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); } + private static final xtreemfs_get_suitable_osdsResponse defaultInstance; public static xtreemfs_get_suitable_osdsResponse getDefaultInstance() { return defaultInstance; } - + public xtreemfs_get_suitable_osdsResponse getDefaultInstanceForType() { return defaultInstance; } - + + private final com.google.protobuf.UnknownFieldSet unknownFields; + @java.lang.Override + public final com.google.protobuf.UnknownFieldSet + getUnknownFields() { + return this.unknownFields; + } + private xtreemfs_get_suitable_osdsResponse( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + initFields(); + int mutable_bitField0_ = 0; + com.google.protobuf.UnknownFieldSet.Builder unknownFields = + com.google.protobuf.UnknownFieldSet.newBuilder(); + try { + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch (tag) { + case 0: + done = true; + break; + default: { + if (!parseUnknownField(input, unknownFields, + extensionRegistry, tag)) { + done = true; + } + break; + } + case 10: { + if (!((mutable_bitField0_ & 0x00000001) == 0x00000001)) { + osdUuids_ = new com.google.protobuf.LazyStringArrayList(); + mutable_bitField0_ |= 0x00000001; + } + osdUuids_.add(input.readBytes()); + break; + } + } + } + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(this); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException( + e.getMessage()).setUnfinishedMessage(this); + } finally { + if (((mutable_bitField0_ & 0x00000001) == 0x00000001)) { + osdUuids_ = new com.google.protobuf.UnmodifiableLazyStringList(osdUuids_); + } + this.unknownFields = unknownFields.build(); + makeExtensionsImmutable(); + } + } public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { return org.xtreemfs.pbrpc.generatedinterfaces.MRC.internal_static_xtreemfs_pbrpc_xtreemfs_get_suitable_osdsResponse_descriptor; } - + protected com.google.protobuf.GeneratedMessage.FieldAccessorTable internalGetFieldAccessorTable() { - return org.xtreemfs.pbrpc.generatedinterfaces.MRC.internal_static_xtreemfs_pbrpc_xtreemfs_get_suitable_osdsResponse_fieldAccessorTable; + return org.xtreemfs.pbrpc.generatedinterfaces.MRC.internal_static_xtreemfs_pbrpc_xtreemfs_get_suitable_osdsResponse_fieldAccessorTable + .ensureFieldAccessorsInitialized( + org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_get_suitable_osdsResponse.class, org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_get_suitable_osdsResponse.Builder.class); + } + + public static com.google.protobuf.Parser PARSER = + new com.google.protobuf.AbstractParser() { + public xtreemfs_get_suitable_osdsResponse parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return new xtreemfs_get_suitable_osdsResponse(input, extensionRegistry); + } + }; + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; } - + // repeated string osd_uuids = 1; public static final int OSD_UUIDS_FIELD_NUMBER = 1; - private java.util.List osdUuids_ = - java.util.Collections.emptyList(); - public java.util.List getOsdUuidsList() { + private com.google.protobuf.LazyStringList osdUuids_; + /** + * repeated string osd_uuids = 1; + */ + public java.util.List + getOsdUuidsList() { return osdUuids_; } - public int getOsdUuidsCount() { return osdUuids_.size(); } + /** + * repeated string osd_uuids = 1; + */ + public int getOsdUuidsCount() { + return osdUuids_.size(); + } + /** + * repeated string osd_uuids = 1; + */ public java.lang.String getOsdUuids(int index) { return osdUuids_.get(index); } - + /** + * repeated string osd_uuids = 1; + */ + public com.google.protobuf.ByteString + getOsdUuidsBytes(int index) { + return osdUuids_.getByteString(index); + } + private void initFields() { + osdUuids_ = com.google.protobuf.LazyStringArrayList.EMPTY; } + private byte memoizedIsInitialized = -1; public final boolean isInitialized() { + byte isInitialized = memoizedIsInitialized; + if (isInitialized != -1) return isInitialized == 1; + + memoizedIsInitialized = 1; return true; } - + public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException { getSerializedSize(); - for (java.lang.String element : getOsdUuidsList()) { - output.writeString(1, element); + for (int i = 0; i < osdUuids_.size(); i++) { + output.writeBytes(1, osdUuids_.getByteString(i)); } getUnknownFields().writeTo(output); } - + private int memoizedSerializedSize = -1; public int getSerializedSize() { int size = memoizedSerializedSize; if (size != -1) return size; - + size = 0; { int dataSize = 0; - for (java.lang.String element : getOsdUuidsList()) { + for (int i = 0; i < osdUuids_.size(); i++) { dataSize += com.google.protobuf.CodedOutputStream - .computeStringSizeNoTag(element); + .computeBytesSizeNoTag(osdUuids_.getByteString(i)); } size += dataSize; size += 1 * getOsdUuidsList().size(); @@ -14475,153 +34702,161 @@ public final class MRC { memoizedSerializedSize = size; return size; } - + + private static final long serialVersionUID = 0L; + @java.lang.Override + protected java.lang.Object writeReplace() + throws java.io.ObjectStreamException { + return super.writeReplace(); + } + public static org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_get_suitable_osdsResponse parseFrom( com.google.protobuf.ByteString data) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data).buildParsed(); + return PARSER.parseFrom(data); } public static org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_get_suitable_osdsResponse parseFrom( com.google.protobuf.ByteString data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(data, extensionRegistry); } public static org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_get_suitable_osdsResponse parseFrom(byte[] data) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data).buildParsed(); + return PARSER.parseFrom(data); } public static org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_get_suitable_osdsResponse parseFrom( byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(data, extensionRegistry); } public static org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_get_suitable_osdsResponse parseFrom(java.io.InputStream input) throws java.io.IOException { - return newBuilder().mergeFrom(input).buildParsed(); + return PARSER.parseFrom(input); } public static org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_get_suitable_osdsResponse parseFrom( java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - return newBuilder().mergeFrom(input, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(input, extensionRegistry); } public static org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_get_suitable_osdsResponse parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException { - Builder builder = newBuilder(); - if (builder.mergeDelimitedFrom(input)) { - return builder.buildParsed(); - } else { - return null; - } + return PARSER.parseDelimitedFrom(input); } public static org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_get_suitable_osdsResponse parseDelimitedFrom( java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - Builder builder = newBuilder(); - if (builder.mergeDelimitedFrom(input, extensionRegistry)) { - return builder.buildParsed(); - } else { - return null; - } + return PARSER.parseDelimitedFrom(input, extensionRegistry); } public static org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_get_suitable_osdsResponse parseFrom( com.google.protobuf.CodedInputStream input) throws java.io.IOException { - return newBuilder().mergeFrom(input).buildParsed(); + return PARSER.parseFrom(input); } public static org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_get_suitable_osdsResponse parseFrom( com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - return newBuilder().mergeFrom(input, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(input, extensionRegistry); } - + public static Builder newBuilder() { return Builder.create(); } public Builder newBuilderForType() { return newBuilder(); } public static Builder newBuilder(org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_get_suitable_osdsResponse prototype) { return newBuilder().mergeFrom(prototype); } public Builder toBuilder() { return newBuilder(this); } - + + @java.lang.Override + protected Builder newBuilderForType( + com.google.protobuf.GeneratedMessage.BuilderParent parent) { + Builder builder = new Builder(parent); + return builder; + } + /** + * Protobuf type {@code xtreemfs.pbrpc.xtreemfs_get_suitable_osdsResponse} + * + *
+     * returns a list of suitable OSDs
+     * 
+ */ public static final class Builder extends - com.google.protobuf.GeneratedMessage.Builder { - private org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_get_suitable_osdsResponse result; - + com.google.protobuf.GeneratedMessage.Builder + implements org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_get_suitable_osdsResponseOrBuilder { + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return org.xtreemfs.pbrpc.generatedinterfaces.MRC.internal_static_xtreemfs_pbrpc_xtreemfs_get_suitable_osdsResponse_descriptor; + } + + protected com.google.protobuf.GeneratedMessage.FieldAccessorTable + internalGetFieldAccessorTable() { + return org.xtreemfs.pbrpc.generatedinterfaces.MRC.internal_static_xtreemfs_pbrpc_xtreemfs_get_suitable_osdsResponse_fieldAccessorTable + .ensureFieldAccessorsInitialized( + org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_get_suitable_osdsResponse.class, org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_get_suitable_osdsResponse.Builder.class); + } + // Construct using org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_get_suitable_osdsResponse.newBuilder() - private Builder() {} - - private static Builder create() { - Builder builder = new Builder(); - builder.result = new org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_get_suitable_osdsResponse(); - return builder; + private Builder() { + maybeForceBuilderInitialization(); } - - protected org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_get_suitable_osdsResponse internalGetResult() { - return result; + + private Builder( + com.google.protobuf.GeneratedMessage.BuilderParent parent) { + super(parent); + maybeForceBuilderInitialization(); } - - public Builder clear() { - if (result == null) { - throw new IllegalStateException( - "Cannot call clear() after build()."); + private void maybeForceBuilderInitialization() { + if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) { } - result = new org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_get_suitable_osdsResponse(); + } + private static Builder create() { + return new Builder(); + } + + public Builder clear() { + super.clear(); + osdUuids_ = com.google.protobuf.LazyStringArrayList.EMPTY; + bitField0_ = (bitField0_ & ~0x00000001); return this; } - + public Builder clone() { - return create().mergeFrom(result); + return create().mergeFrom(buildPartial()); } - + public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() { - return org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_get_suitable_osdsResponse.getDescriptor(); + return org.xtreemfs.pbrpc.generatedinterfaces.MRC.internal_static_xtreemfs_pbrpc_xtreemfs_get_suitable_osdsResponse_descriptor; } - + public org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_get_suitable_osdsResponse getDefaultInstanceForType() { return org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_get_suitable_osdsResponse.getDefaultInstance(); } - - public boolean isInitialized() { - return result.isInitialized(); - } + public org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_get_suitable_osdsResponse build() { - if (result != null && !isInitialized()) { + org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_get_suitable_osdsResponse result = buildPartial(); + if (!result.isInitialized()) { throw newUninitializedMessageException(result); } - return buildPartial(); - } - - private org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_get_suitable_osdsResponse buildParsed() - throws com.google.protobuf.InvalidProtocolBufferException { - if (!isInitialized()) { - throw newUninitializedMessageException( - result).asInvalidProtocolBufferException(); - } - return buildPartial(); + return result; } - + public org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_get_suitable_osdsResponse buildPartial() { - if (result == null) { - throw new IllegalStateException( - "build() has already been called on this Builder."); - } - if (result.osdUuids_ != java.util.Collections.EMPTY_LIST) { - result.osdUuids_ = - java.util.Collections.unmodifiableList(result.osdUuids_); - } - org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_get_suitable_osdsResponse returnMe = result; - result = null; - return returnMe; + org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_get_suitable_osdsResponse result = new org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_get_suitable_osdsResponse(this); + int from_bitField0_ = bitField0_; + if (((bitField0_ & 0x00000001) == 0x00000001)) { + osdUuids_ = new com.google.protobuf.UnmodifiableLazyStringList( + osdUuids_); + bitField0_ = (bitField0_ & ~0x00000001); + } + result.osdUuids_ = osdUuids_; + onBuilt(); + return result; } - + public Builder mergeFrom(com.google.protobuf.Message other) { if (other instanceof org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_get_suitable_osdsResponse) { return mergeFrom((org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_get_suitable_osdsResponse)other); @@ -14630,308 +34865,497 @@ public final class MRC { return this; } } - + public Builder mergeFrom(org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_get_suitable_osdsResponse other) { if (other == org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_get_suitable_osdsResponse.getDefaultInstance()) return this; if (!other.osdUuids_.isEmpty()) { - if (result.osdUuids_.isEmpty()) { - result.osdUuids_ = new java.util.ArrayList(); + if (osdUuids_.isEmpty()) { + osdUuids_ = other.osdUuids_; + bitField0_ = (bitField0_ & ~0x00000001); + } else { + ensureOsdUuidsIsMutable(); + osdUuids_.addAll(other.osdUuids_); } - result.osdUuids_.addAll(other.osdUuids_); + onChanged(); } this.mergeUnknownFields(other.getUnknownFields()); - return this; - } - - public Builder mergeFrom( - com.google.protobuf.CodedInputStream input, - com.google.protobuf.ExtensionRegistryLite extensionRegistry) - throws java.io.IOException { - com.google.protobuf.UnknownFieldSet.Builder unknownFields = - com.google.protobuf.UnknownFieldSet.newBuilder( - this.getUnknownFields()); - while (true) { - int tag = input.readTag(); - switch (tag) { - case 0: - this.setUnknownFields(unknownFields.build()); - return this; - default: { - if (!parseUnknownField(input, unknownFields, - extensionRegistry, tag)) { - this.setUnknownFields(unknownFields.build()); - return this; - } - break; - } - case 10: { - addOsdUuids(input.readString()); - break; - } + return this; + } + + public final boolean isInitialized() { + return true; + } + + public Builder mergeFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_get_suitable_osdsResponse parsedMessage = null; + try { + parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + parsedMessage = (org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_get_suitable_osdsResponse) e.getUnfinishedMessage(); + throw e; + } finally { + if (parsedMessage != null) { + mergeFrom(parsedMessage); } } + return this; } - - + private int bitField0_; + // repeated string osd_uuids = 1; - public java.util.List getOsdUuidsList() { - return java.util.Collections.unmodifiableList(result.osdUuids_); - } + private com.google.protobuf.LazyStringList osdUuids_ = com.google.protobuf.LazyStringArrayList.EMPTY; + private void ensureOsdUuidsIsMutable() { + if (!((bitField0_ & 0x00000001) == 0x00000001)) { + osdUuids_ = new com.google.protobuf.LazyStringArrayList(osdUuids_); + bitField0_ |= 0x00000001; + } + } + /** + * repeated string osd_uuids = 1; + */ + public java.util.List + getOsdUuidsList() { + return java.util.Collections.unmodifiableList(osdUuids_); + } + /** + * repeated string osd_uuids = 1; + */ public int getOsdUuidsCount() { - return result.getOsdUuidsCount(); + return osdUuids_.size(); } + /** + * repeated string osd_uuids = 1; + */ public java.lang.String getOsdUuids(int index) { - return result.getOsdUuids(index); - } - public Builder setOsdUuids(int index, java.lang.String value) { + return osdUuids_.get(index); + } + /** + * repeated string osd_uuids = 1; + */ + public com.google.protobuf.ByteString + getOsdUuidsBytes(int index) { + return osdUuids_.getByteString(index); + } + /** + * repeated string osd_uuids = 1; + */ + public Builder setOsdUuids( + int index, java.lang.String value) { if (value == null) { throw new NullPointerException(); } - result.osdUuids_.set(index, value); + ensureOsdUuidsIsMutable(); + osdUuids_.set(index, value); + onChanged(); return this; } - public Builder addOsdUuids(java.lang.String value) { + /** + * repeated string osd_uuids = 1; + */ + public Builder addOsdUuids( + java.lang.String value) { if (value == null) { throw new NullPointerException(); } - if (result.osdUuids_.isEmpty()) { - result.osdUuids_ = new java.util.ArrayList(); - } - result.osdUuids_.add(value); + ensureOsdUuidsIsMutable(); + osdUuids_.add(value); + onChanged(); return this; } + /** + * repeated string osd_uuids = 1; + */ public Builder addAllOsdUuids( - java.lang.Iterable values) { - if (result.osdUuids_.isEmpty()) { - result.osdUuids_ = new java.util.ArrayList(); - } - super.addAll(values, result.osdUuids_); + java.lang.Iterable values) { + ensureOsdUuidsIsMutable(); + super.addAll(values, osdUuids_); + onChanged(); return this; } + /** + * repeated string osd_uuids = 1; + */ public Builder clearOsdUuids() { - result.osdUuids_ = java.util.Collections.emptyList(); + osdUuids_ = com.google.protobuf.LazyStringArrayList.EMPTY; + bitField0_ = (bitField0_ & ~0x00000001); + onChanged(); + return this; + } + /** + * repeated string osd_uuids = 1; + */ + public Builder addOsdUuidsBytes( + com.google.protobuf.ByteString value) { + if (value == null) { + throw new NullPointerException(); + } + ensureOsdUuidsIsMutable(); + osdUuids_.add(value); + onChanged(); return this; } - + // @@protoc_insertion_point(builder_scope:xtreemfs.pbrpc.xtreemfs_get_suitable_osdsResponse) } - + static { defaultInstance = new xtreemfs_get_suitable_osdsResponse(true); - org.xtreemfs.pbrpc.generatedinterfaces.MRC.internalForceInit(); defaultInstance.initFields(); } - + // @@protoc_insertion_point(class_scope:xtreemfs.pbrpc.xtreemfs_get_suitable_osdsResponse) } - + + public interface xtreemfs_check_file_existsResponseOrBuilder + extends com.google.protobuf.MessageOrBuilder { + + // required string bitmap = 1; + /** + * required string bitmap = 1; + */ + boolean hasBitmap(); + /** + * required string bitmap = 1; + */ + java.lang.String getBitmap(); + /** + * required string bitmap = 1; + */ + com.google.protobuf.ByteString + getBitmapBytes(); + } + /** + * Protobuf type {@code xtreemfs.pbrpc.xtreemfs_check_file_existsResponse} + */ public static final class xtreemfs_check_file_existsResponse extends - com.google.protobuf.GeneratedMessage { + com.google.protobuf.GeneratedMessage + implements xtreemfs_check_file_existsResponseOrBuilder { // Use xtreemfs_check_file_existsResponse.newBuilder() to construct. - private xtreemfs_check_file_existsResponse() { - initFields(); + private xtreemfs_check_file_existsResponse(com.google.protobuf.GeneratedMessage.Builder builder) { + super(builder); + this.unknownFields = builder.getUnknownFields(); } - private xtreemfs_check_file_existsResponse(boolean noInit) {} - + private xtreemfs_check_file_existsResponse(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); } + private static final xtreemfs_check_file_existsResponse defaultInstance; public static xtreemfs_check_file_existsResponse getDefaultInstance() { return defaultInstance; } - + public xtreemfs_check_file_existsResponse getDefaultInstanceForType() { return defaultInstance; } - + + private final com.google.protobuf.UnknownFieldSet unknownFields; + @java.lang.Override + public final com.google.protobuf.UnknownFieldSet + getUnknownFields() { + return this.unknownFields; + } + private xtreemfs_check_file_existsResponse( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + initFields(); + int mutable_bitField0_ = 0; + com.google.protobuf.UnknownFieldSet.Builder unknownFields = + com.google.protobuf.UnknownFieldSet.newBuilder(); + try { + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch (tag) { + case 0: + done = true; + break; + default: { + if (!parseUnknownField(input, unknownFields, + extensionRegistry, tag)) { + done = true; + } + break; + } + case 10: { + bitField0_ |= 0x00000001; + bitmap_ = input.readBytes(); + break; + } + } + } + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(this); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException( + e.getMessage()).setUnfinishedMessage(this); + } finally { + this.unknownFields = unknownFields.build(); + makeExtensionsImmutable(); + } + } public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { return org.xtreemfs.pbrpc.generatedinterfaces.MRC.internal_static_xtreemfs_pbrpc_xtreemfs_check_file_existsResponse_descriptor; } - + protected com.google.protobuf.GeneratedMessage.FieldAccessorTable internalGetFieldAccessorTable() { - return org.xtreemfs.pbrpc.generatedinterfaces.MRC.internal_static_xtreemfs_pbrpc_xtreemfs_check_file_existsResponse_fieldAccessorTable; + return org.xtreemfs.pbrpc.generatedinterfaces.MRC.internal_static_xtreemfs_pbrpc_xtreemfs_check_file_existsResponse_fieldAccessorTable + .ensureFieldAccessorsInitialized( + org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_check_file_existsResponse.class, org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_check_file_existsResponse.Builder.class); + } + + public static com.google.protobuf.Parser PARSER = + new com.google.protobuf.AbstractParser() { + public xtreemfs_check_file_existsResponse parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return new xtreemfs_check_file_existsResponse(input, extensionRegistry); + } + }; + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; } - + + private int bitField0_; // required string bitmap = 1; public static final int BITMAP_FIELD_NUMBER = 1; - private boolean hasBitmap; - private java.lang.String bitmap_ = ""; - public boolean hasBitmap() { return hasBitmap; } - public java.lang.String getBitmap() { return bitmap_; } - + private java.lang.Object bitmap_; + /** + * required string bitmap = 1; + */ + public boolean hasBitmap() { + return ((bitField0_ & 0x00000001) == 0x00000001); + } + /** + * required string bitmap = 1; + */ + public java.lang.String getBitmap() { + java.lang.Object ref = bitmap_; + if (ref instanceof java.lang.String) { + return (java.lang.String) ref; + } else { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + if (bs.isValidUtf8()) { + bitmap_ = s; + } + return s; + } + } + /** + * required string bitmap = 1; + */ + public com.google.protobuf.ByteString + getBitmapBytes() { + java.lang.Object ref = bitmap_; + if (ref instanceof java.lang.String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + bitmap_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + private void initFields() { + bitmap_ = ""; } + private byte memoizedIsInitialized = -1; public final boolean isInitialized() { - if (!hasBitmap) return false; + byte isInitialized = memoizedIsInitialized; + if (isInitialized != -1) return isInitialized == 1; + + if (!hasBitmap()) { + memoizedIsInitialized = 0; + return false; + } + memoizedIsInitialized = 1; return true; } - + public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException { getSerializedSize(); - if (hasBitmap()) { - output.writeString(1, getBitmap()); + if (((bitField0_ & 0x00000001) == 0x00000001)) { + output.writeBytes(1, getBitmapBytes()); } getUnknownFields().writeTo(output); } - + private int memoizedSerializedSize = -1; public int getSerializedSize() { int size = memoizedSerializedSize; if (size != -1) return size; - + size = 0; - if (hasBitmap()) { + if (((bitField0_ & 0x00000001) == 0x00000001)) { size += com.google.protobuf.CodedOutputStream - .computeStringSize(1, getBitmap()); + .computeBytesSize(1, getBitmapBytes()); } size += getUnknownFields().getSerializedSize(); memoizedSerializedSize = size; return size; } - + + private static final long serialVersionUID = 0L; + @java.lang.Override + protected java.lang.Object writeReplace() + throws java.io.ObjectStreamException { + return super.writeReplace(); + } + public static org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_check_file_existsResponse parseFrom( com.google.protobuf.ByteString data) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data).buildParsed(); + return PARSER.parseFrom(data); } public static org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_check_file_existsResponse parseFrom( com.google.protobuf.ByteString data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(data, extensionRegistry); } public static org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_check_file_existsResponse parseFrom(byte[] data) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data).buildParsed(); + return PARSER.parseFrom(data); } public static org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_check_file_existsResponse parseFrom( byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(data, extensionRegistry); } public static org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_check_file_existsResponse parseFrom(java.io.InputStream input) throws java.io.IOException { - return newBuilder().mergeFrom(input).buildParsed(); + return PARSER.parseFrom(input); } public static org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_check_file_existsResponse parseFrom( java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - return newBuilder().mergeFrom(input, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(input, extensionRegistry); } public static org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_check_file_existsResponse parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException { - Builder builder = newBuilder(); - if (builder.mergeDelimitedFrom(input)) { - return builder.buildParsed(); - } else { - return null; - } + return PARSER.parseDelimitedFrom(input); } public static org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_check_file_existsResponse parseDelimitedFrom( java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - Builder builder = newBuilder(); - if (builder.mergeDelimitedFrom(input, extensionRegistry)) { - return builder.buildParsed(); - } else { - return null; - } + return PARSER.parseDelimitedFrom(input, extensionRegistry); } public static org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_check_file_existsResponse parseFrom( com.google.protobuf.CodedInputStream input) throws java.io.IOException { - return newBuilder().mergeFrom(input).buildParsed(); + return PARSER.parseFrom(input); } public static org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_check_file_existsResponse parseFrom( com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - return newBuilder().mergeFrom(input, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(input, extensionRegistry); } - + public static Builder newBuilder() { return Builder.create(); } public Builder newBuilderForType() { return newBuilder(); } public static Builder newBuilder(org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_check_file_existsResponse prototype) { return newBuilder().mergeFrom(prototype); } public Builder toBuilder() { return newBuilder(this); } - + + @java.lang.Override + protected Builder newBuilderForType( + com.google.protobuf.GeneratedMessage.BuilderParent parent) { + Builder builder = new Builder(parent); + return builder; + } + /** + * Protobuf type {@code xtreemfs.pbrpc.xtreemfs_check_file_existsResponse} + */ public static final class Builder extends - com.google.protobuf.GeneratedMessage.Builder { - private org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_check_file_existsResponse result; - + com.google.protobuf.GeneratedMessage.Builder + implements org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_check_file_existsResponseOrBuilder { + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return org.xtreemfs.pbrpc.generatedinterfaces.MRC.internal_static_xtreemfs_pbrpc_xtreemfs_check_file_existsResponse_descriptor; + } + + protected com.google.protobuf.GeneratedMessage.FieldAccessorTable + internalGetFieldAccessorTable() { + return org.xtreemfs.pbrpc.generatedinterfaces.MRC.internal_static_xtreemfs_pbrpc_xtreemfs_check_file_existsResponse_fieldAccessorTable + .ensureFieldAccessorsInitialized( + org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_check_file_existsResponse.class, org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_check_file_existsResponse.Builder.class); + } + // Construct using org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_check_file_existsResponse.newBuilder() - private Builder() {} - - private static Builder create() { - Builder builder = new Builder(); - builder.result = new org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_check_file_existsResponse(); - return builder; + private Builder() { + maybeForceBuilderInitialization(); } - - protected org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_check_file_existsResponse internalGetResult() { - return result; + + private Builder( + com.google.protobuf.GeneratedMessage.BuilderParent parent) { + super(parent); + maybeForceBuilderInitialization(); } - - public Builder clear() { - if (result == null) { - throw new IllegalStateException( - "Cannot call clear() after build()."); + private void maybeForceBuilderInitialization() { + if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) { } - result = new org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_check_file_existsResponse(); + } + private static Builder create() { + return new Builder(); + } + + public Builder clear() { + super.clear(); + bitmap_ = ""; + bitField0_ = (bitField0_ & ~0x00000001); return this; } - + public Builder clone() { - return create().mergeFrom(result); + return create().mergeFrom(buildPartial()); } - + public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() { - return org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_check_file_existsResponse.getDescriptor(); + return org.xtreemfs.pbrpc.generatedinterfaces.MRC.internal_static_xtreemfs_pbrpc_xtreemfs_check_file_existsResponse_descriptor; } - + public org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_check_file_existsResponse getDefaultInstanceForType() { return org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_check_file_existsResponse.getDefaultInstance(); } - - public boolean isInitialized() { - return result.isInitialized(); - } + public org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_check_file_existsResponse build() { - if (result != null && !isInitialized()) { + org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_check_file_existsResponse result = buildPartial(); + if (!result.isInitialized()) { throw newUninitializedMessageException(result); } - return buildPartial(); - } - - private org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_check_file_existsResponse buildParsed() - throws com.google.protobuf.InvalidProtocolBufferException { - if (!isInitialized()) { - throw newUninitializedMessageException( - result).asInvalidProtocolBufferException(); - } - return buildPartial(); + return result; } - + public org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_check_file_existsResponse buildPartial() { - if (result == null) { - throw new IllegalStateException( - "build() has already been called on this Builder."); - } - org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_check_file_existsResponse returnMe = result; - result = null; - return returnMe; + org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_check_file_existsResponse result = new org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_check_file_existsResponse(this); + int from_bitField0_ = bitField0_; + int to_bitField0_ = 0; + if (((from_bitField0_ & 0x00000001) == 0x00000001)) { + to_bitField0_ |= 0x00000001; + } + result.bitmap_ = bitmap_; + result.bitField0_ = to_bitField0_; + onBuilt(); + return result; } - + public Builder mergeFrom(com.google.protobuf.Message other) { if (other instanceof org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_check_file_existsResponse) { return mergeFrom((org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_check_file_existsResponse)other); @@ -14940,286 +35364,445 @@ public final class MRC { return this; } } - + public Builder mergeFrom(org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_check_file_existsResponse other) { if (other == org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_check_file_existsResponse.getDefaultInstance()) return this; if (other.hasBitmap()) { - setBitmap(other.getBitmap()); + bitField0_ |= 0x00000001; + bitmap_ = other.bitmap_; + onChanged(); } this.mergeUnknownFields(other.getUnknownFields()); return this; } - + + public final boolean isInitialized() { + if (!hasBitmap()) { + + return false; + } + return true; + } + public Builder mergeFrom( com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - com.google.protobuf.UnknownFieldSet.Builder unknownFields = - com.google.protobuf.UnknownFieldSet.newBuilder( - this.getUnknownFields()); - while (true) { - int tag = input.readTag(); - switch (tag) { - case 0: - this.setUnknownFields(unknownFields.build()); - return this; - default: { - if (!parseUnknownField(input, unknownFields, - extensionRegistry, tag)) { - this.setUnknownFields(unknownFields.build()); - return this; - } - break; - } - case 10: { - setBitmap(input.readString()); - break; - } + org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_check_file_existsResponse parsedMessage = null; + try { + parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + parsedMessage = (org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_check_file_existsResponse) e.getUnfinishedMessage(); + throw e; + } finally { + if (parsedMessage != null) { + mergeFrom(parsedMessage); } } + return this; } - - + private int bitField0_; + // required string bitmap = 1; + private java.lang.Object bitmap_ = ""; + /** + * required string bitmap = 1; + */ public boolean hasBitmap() { - return result.hasBitmap(); + return ((bitField0_ & 0x00000001) == 0x00000001); } + /** + * required string bitmap = 1; + */ public java.lang.String getBitmap() { - return result.getBitmap(); + java.lang.Object ref = bitmap_; + if (!(ref instanceof java.lang.String)) { + java.lang.String s = ((com.google.protobuf.ByteString) ref) + .toStringUtf8(); + bitmap_ = s; + return s; + } else { + return (java.lang.String) ref; + } + } + /** + * required string bitmap = 1; + */ + public com.google.protobuf.ByteString + getBitmapBytes() { + java.lang.Object ref = bitmap_; + if (ref instanceof String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + bitmap_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } } - public Builder setBitmap(java.lang.String value) { + /** + * required string bitmap = 1; + */ + public Builder setBitmap( + java.lang.String value) { if (value == null) { throw new NullPointerException(); } - result.hasBitmap = true; - result.bitmap_ = value; + bitField0_ |= 0x00000001; + bitmap_ = value; + onChanged(); return this; } + /** + * required string bitmap = 1; + */ public Builder clearBitmap() { - result.hasBitmap = false; - result.bitmap_ = getDefaultInstance().getBitmap(); + bitField0_ = (bitField0_ & ~0x00000001); + bitmap_ = getDefaultInstance().getBitmap(); + onChanged(); + return this; + } + /** + * required string bitmap = 1; + */ + public Builder setBitmapBytes( + com.google.protobuf.ByteString value) { + if (value == null) { + throw new NullPointerException(); + } + bitField0_ |= 0x00000001; + bitmap_ = value; + onChanged(); return this; } - + // @@protoc_insertion_point(builder_scope:xtreemfs.pbrpc.xtreemfs_check_file_existsResponse) } - + static { defaultInstance = new xtreemfs_check_file_existsResponse(true); - org.xtreemfs.pbrpc.generatedinterfaces.MRC.internalForceInit(); defaultInstance.initFields(); } - + // @@protoc_insertion_point(class_scope:xtreemfs.pbrpc.xtreemfs_check_file_existsResponse) } - + + public interface timestampResponseOrBuilder + extends com.google.protobuf.MessageOrBuilder { + + // required fixed32 timestamp_s = 1; + /** + * required fixed32 timestamp_s = 1; + */ + boolean hasTimestampS(); + /** + * required fixed32 timestamp_s = 1; + */ + int getTimestampS(); + } + /** + * Protobuf type {@code xtreemfs.pbrpc.timestampResponse} + */ public static final class timestampResponse extends - com.google.protobuf.GeneratedMessage { + com.google.protobuf.GeneratedMessage + implements timestampResponseOrBuilder { // Use timestampResponse.newBuilder() to construct. - private timestampResponse() { - initFields(); + private timestampResponse(com.google.protobuf.GeneratedMessage.Builder builder) { + super(builder); + this.unknownFields = builder.getUnknownFields(); } - private timestampResponse(boolean noInit) {} - + private timestampResponse(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); } + private static final timestampResponse defaultInstance; public static timestampResponse getDefaultInstance() { return defaultInstance; } - + public timestampResponse getDefaultInstanceForType() { return defaultInstance; } - + + private final com.google.protobuf.UnknownFieldSet unknownFields; + @java.lang.Override + public final com.google.protobuf.UnknownFieldSet + getUnknownFields() { + return this.unknownFields; + } + private timestampResponse( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + initFields(); + int mutable_bitField0_ = 0; + com.google.protobuf.UnknownFieldSet.Builder unknownFields = + com.google.protobuf.UnknownFieldSet.newBuilder(); + try { + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch (tag) { + case 0: + done = true; + break; + default: { + if (!parseUnknownField(input, unknownFields, + extensionRegistry, tag)) { + done = true; + } + break; + } + case 13: { + bitField0_ |= 0x00000001; + timestampS_ = input.readFixed32(); + break; + } + } + } + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(this); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException( + e.getMessage()).setUnfinishedMessage(this); + } finally { + this.unknownFields = unknownFields.build(); + makeExtensionsImmutable(); + } + } public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { return org.xtreemfs.pbrpc.generatedinterfaces.MRC.internal_static_xtreemfs_pbrpc_timestampResponse_descriptor; } - + protected com.google.protobuf.GeneratedMessage.FieldAccessorTable internalGetFieldAccessorTable() { - return org.xtreemfs.pbrpc.generatedinterfaces.MRC.internal_static_xtreemfs_pbrpc_timestampResponse_fieldAccessorTable; + return org.xtreemfs.pbrpc.generatedinterfaces.MRC.internal_static_xtreemfs_pbrpc_timestampResponse_fieldAccessorTable + .ensureFieldAccessorsInitialized( + org.xtreemfs.pbrpc.generatedinterfaces.MRC.timestampResponse.class, org.xtreemfs.pbrpc.generatedinterfaces.MRC.timestampResponse.Builder.class); + } + + public static com.google.protobuf.Parser PARSER = + new com.google.protobuf.AbstractParser() { + public timestampResponse parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return new timestampResponse(input, extensionRegistry); + } + }; + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; } - + + private int bitField0_; // required fixed32 timestamp_s = 1; public static final int TIMESTAMP_S_FIELD_NUMBER = 1; - private boolean hasTimestampS; - private int timestampS_ = 0; - public boolean hasTimestampS() { return hasTimestampS; } - public int getTimestampS() { return timestampS_; } - + private int timestampS_; + /** + * required fixed32 timestamp_s = 1; + */ + public boolean hasTimestampS() { + return ((bitField0_ & 0x00000001) == 0x00000001); + } + /** + * required fixed32 timestamp_s = 1; + */ + public int getTimestampS() { + return timestampS_; + } + private void initFields() { + timestampS_ = 0; } + private byte memoizedIsInitialized = -1; public final boolean isInitialized() { - if (!hasTimestampS) return false; + byte isInitialized = memoizedIsInitialized; + if (isInitialized != -1) return isInitialized == 1; + + if (!hasTimestampS()) { + memoizedIsInitialized = 0; + return false; + } + memoizedIsInitialized = 1; return true; } - + public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException { getSerializedSize(); - if (hasTimestampS()) { - output.writeFixed32(1, getTimestampS()); + if (((bitField0_ & 0x00000001) == 0x00000001)) { + output.writeFixed32(1, timestampS_); } getUnknownFields().writeTo(output); } - + private int memoizedSerializedSize = -1; public int getSerializedSize() { int size = memoizedSerializedSize; if (size != -1) return size; - + size = 0; - if (hasTimestampS()) { + if (((bitField0_ & 0x00000001) == 0x00000001)) { size += com.google.protobuf.CodedOutputStream - .computeFixed32Size(1, getTimestampS()); + .computeFixed32Size(1, timestampS_); } size += getUnknownFields().getSerializedSize(); memoizedSerializedSize = size; return size; } - + + private static final long serialVersionUID = 0L; + @java.lang.Override + protected java.lang.Object writeReplace() + throws java.io.ObjectStreamException { + return super.writeReplace(); + } + public static org.xtreemfs.pbrpc.generatedinterfaces.MRC.timestampResponse parseFrom( com.google.protobuf.ByteString data) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data).buildParsed(); + return PARSER.parseFrom(data); } public static org.xtreemfs.pbrpc.generatedinterfaces.MRC.timestampResponse parseFrom( com.google.protobuf.ByteString data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(data, extensionRegistry); } public static org.xtreemfs.pbrpc.generatedinterfaces.MRC.timestampResponse parseFrom(byte[] data) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data).buildParsed(); + return PARSER.parseFrom(data); } public static org.xtreemfs.pbrpc.generatedinterfaces.MRC.timestampResponse parseFrom( byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(data, extensionRegistry); } public static org.xtreemfs.pbrpc.generatedinterfaces.MRC.timestampResponse parseFrom(java.io.InputStream input) throws java.io.IOException { - return newBuilder().mergeFrom(input).buildParsed(); + return PARSER.parseFrom(input); } public static org.xtreemfs.pbrpc.generatedinterfaces.MRC.timestampResponse parseFrom( java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - return newBuilder().mergeFrom(input, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(input, extensionRegistry); } public static org.xtreemfs.pbrpc.generatedinterfaces.MRC.timestampResponse parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException { - Builder builder = newBuilder(); - if (builder.mergeDelimitedFrom(input)) { - return builder.buildParsed(); - } else { - return null; - } + return PARSER.parseDelimitedFrom(input); } public static org.xtreemfs.pbrpc.generatedinterfaces.MRC.timestampResponse parseDelimitedFrom( java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - Builder builder = newBuilder(); - if (builder.mergeDelimitedFrom(input, extensionRegistry)) { - return builder.buildParsed(); - } else { - return null; - } + return PARSER.parseDelimitedFrom(input, extensionRegistry); } public static org.xtreemfs.pbrpc.generatedinterfaces.MRC.timestampResponse parseFrom( com.google.protobuf.CodedInputStream input) throws java.io.IOException { - return newBuilder().mergeFrom(input).buildParsed(); + return PARSER.parseFrom(input); } public static org.xtreemfs.pbrpc.generatedinterfaces.MRC.timestampResponse parseFrom( com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - return newBuilder().mergeFrom(input, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(input, extensionRegistry); } - + public static Builder newBuilder() { return Builder.create(); } public Builder newBuilderForType() { return newBuilder(); } public static Builder newBuilder(org.xtreemfs.pbrpc.generatedinterfaces.MRC.timestampResponse prototype) { return newBuilder().mergeFrom(prototype); } public Builder toBuilder() { return newBuilder(this); } - + + @java.lang.Override + protected Builder newBuilderForType( + com.google.protobuf.GeneratedMessage.BuilderParent parent) { + Builder builder = new Builder(parent); + return builder; + } + /** + * Protobuf type {@code xtreemfs.pbrpc.timestampResponse} + */ public static final class Builder extends - com.google.protobuf.GeneratedMessage.Builder { - private org.xtreemfs.pbrpc.generatedinterfaces.MRC.timestampResponse result; - + com.google.protobuf.GeneratedMessage.Builder + implements org.xtreemfs.pbrpc.generatedinterfaces.MRC.timestampResponseOrBuilder { + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return org.xtreemfs.pbrpc.generatedinterfaces.MRC.internal_static_xtreemfs_pbrpc_timestampResponse_descriptor; + } + + protected com.google.protobuf.GeneratedMessage.FieldAccessorTable + internalGetFieldAccessorTable() { + return org.xtreemfs.pbrpc.generatedinterfaces.MRC.internal_static_xtreemfs_pbrpc_timestampResponse_fieldAccessorTable + .ensureFieldAccessorsInitialized( + org.xtreemfs.pbrpc.generatedinterfaces.MRC.timestampResponse.class, org.xtreemfs.pbrpc.generatedinterfaces.MRC.timestampResponse.Builder.class); + } + // Construct using org.xtreemfs.pbrpc.generatedinterfaces.MRC.timestampResponse.newBuilder() - private Builder() {} - - private static Builder create() { - Builder builder = new Builder(); - builder.result = new org.xtreemfs.pbrpc.generatedinterfaces.MRC.timestampResponse(); - return builder; + private Builder() { + maybeForceBuilderInitialization(); } - - protected org.xtreemfs.pbrpc.generatedinterfaces.MRC.timestampResponse internalGetResult() { - return result; + + private Builder( + com.google.protobuf.GeneratedMessage.BuilderParent parent) { + super(parent); + maybeForceBuilderInitialization(); } - - public Builder clear() { - if (result == null) { - throw new IllegalStateException( - "Cannot call clear() after build()."); + private void maybeForceBuilderInitialization() { + if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) { } - result = new org.xtreemfs.pbrpc.generatedinterfaces.MRC.timestampResponse(); + } + private static Builder create() { + return new Builder(); + } + + public Builder clear() { + super.clear(); + timestampS_ = 0; + bitField0_ = (bitField0_ & ~0x00000001); return this; } - + public Builder clone() { - return create().mergeFrom(result); + return create().mergeFrom(buildPartial()); } - + public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() { - return org.xtreemfs.pbrpc.generatedinterfaces.MRC.timestampResponse.getDescriptor(); + return org.xtreemfs.pbrpc.generatedinterfaces.MRC.internal_static_xtreemfs_pbrpc_timestampResponse_descriptor; } - + public org.xtreemfs.pbrpc.generatedinterfaces.MRC.timestampResponse getDefaultInstanceForType() { return org.xtreemfs.pbrpc.generatedinterfaces.MRC.timestampResponse.getDefaultInstance(); } - - public boolean isInitialized() { - return result.isInitialized(); - } + public org.xtreemfs.pbrpc.generatedinterfaces.MRC.timestampResponse build() { - if (result != null && !isInitialized()) { + org.xtreemfs.pbrpc.generatedinterfaces.MRC.timestampResponse result = buildPartial(); + if (!result.isInitialized()) { throw newUninitializedMessageException(result); } - return buildPartial(); - } - - private org.xtreemfs.pbrpc.generatedinterfaces.MRC.timestampResponse buildParsed() - throws com.google.protobuf.InvalidProtocolBufferException { - if (!isInitialized()) { - throw newUninitializedMessageException( - result).asInvalidProtocolBufferException(); - } - return buildPartial(); + return result; } - + public org.xtreemfs.pbrpc.generatedinterfaces.MRC.timestampResponse buildPartial() { - if (result == null) { - throw new IllegalStateException( - "build() has already been called on this Builder."); - } - org.xtreemfs.pbrpc.generatedinterfaces.MRC.timestampResponse returnMe = result; - result = null; - return returnMe; + org.xtreemfs.pbrpc.generatedinterfaces.MRC.timestampResponse result = new org.xtreemfs.pbrpc.generatedinterfaces.MRC.timestampResponse(this); + int from_bitField0_ = bitField0_; + int to_bitField0_ = 0; + if (((from_bitField0_ & 0x00000001) == 0x00000001)) { + to_bitField0_ |= 0x00000001; + } + result.timestampS_ = timestampS_; + result.bitField0_ = to_bitField0_; + onBuilt(); + return result; } - + public Builder mergeFrom(com.google.protobuf.Message other) { if (other instanceof org.xtreemfs.pbrpc.generatedinterfaces.MRC.timestampResponse) { return mergeFrom((org.xtreemfs.pbrpc.generatedinterfaces.MRC.timestampResponse)other); @@ -15228,7 +35811,7 @@ public final class MRC { return this; } } - + public Builder mergeFrom(org.xtreemfs.pbrpc.generatedinterfaces.MRC.timestampResponse other) { if (other == org.xtreemfs.pbrpc.generatedinterfaces.MRC.timestampResponse.getDefaultInstance()) return this; if (other.hasTimestampS()) { @@ -15237,274 +35820,425 @@ public final class MRC { this.mergeUnknownFields(other.getUnknownFields()); return this; } - + + public final boolean isInitialized() { + if (!hasTimestampS()) { + + return false; + } + return true; + } + public Builder mergeFrom( com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - com.google.protobuf.UnknownFieldSet.Builder unknownFields = - com.google.protobuf.UnknownFieldSet.newBuilder( - this.getUnknownFields()); - while (true) { - int tag = input.readTag(); - switch (tag) { - case 0: - this.setUnknownFields(unknownFields.build()); - return this; - default: { - if (!parseUnknownField(input, unknownFields, - extensionRegistry, tag)) { - this.setUnknownFields(unknownFields.build()); - return this; - } - break; - } - case 13: { - setTimestampS(input.readFixed32()); - break; - } + org.xtreemfs.pbrpc.generatedinterfaces.MRC.timestampResponse parsedMessage = null; + try { + parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + parsedMessage = (org.xtreemfs.pbrpc.generatedinterfaces.MRC.timestampResponse) e.getUnfinishedMessage(); + throw e; + } finally { + if (parsedMessage != null) { + mergeFrom(parsedMessage); } } + return this; } - - + private int bitField0_; + // required fixed32 timestamp_s = 1; + private int timestampS_ ; + /** + * required fixed32 timestamp_s = 1; + */ public boolean hasTimestampS() { - return result.hasTimestampS(); + return ((bitField0_ & 0x00000001) == 0x00000001); } + /** + * required fixed32 timestamp_s = 1; + */ public int getTimestampS() { - return result.getTimestampS(); + return timestampS_; } + /** + * required fixed32 timestamp_s = 1; + */ public Builder setTimestampS(int value) { - result.hasTimestampS = true; - result.timestampS_ = value; + bitField0_ |= 0x00000001; + timestampS_ = value; + onChanged(); return this; } + /** + * required fixed32 timestamp_s = 1; + */ public Builder clearTimestampS() { - result.hasTimestampS = false; - result.timestampS_ = 0; + bitField0_ = (bitField0_ & ~0x00000001); + timestampS_ = 0; + onChanged(); return this; } - + // @@protoc_insertion_point(builder_scope:xtreemfs.pbrpc.timestampResponse) } - + static { defaultInstance = new timestampResponse(true); - org.xtreemfs.pbrpc.generatedinterfaces.MRC.internalForceInit(); defaultInstance.initFields(); } - + // @@protoc_insertion_point(class_scope:xtreemfs.pbrpc.timestampResponse) } - + + public interface stringMessageOrBuilder + extends com.google.protobuf.MessageOrBuilder { + + // required string a_string = 1; + /** + * required string a_string = 1; + */ + boolean hasAString(); + /** + * required string a_string = 1; + */ + java.lang.String getAString(); + /** + * required string a_string = 1; + */ + com.google.protobuf.ByteString + getAStringBytes(); + } + /** + * Protobuf type {@code xtreemfs.pbrpc.stringMessage} + */ public static final class stringMessage extends - com.google.protobuf.GeneratedMessage { + com.google.protobuf.GeneratedMessage + implements stringMessageOrBuilder { // Use stringMessage.newBuilder() to construct. - private stringMessage() { - initFields(); + private stringMessage(com.google.protobuf.GeneratedMessage.Builder builder) { + super(builder); + this.unknownFields = builder.getUnknownFields(); } - private stringMessage(boolean noInit) {} - + private stringMessage(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); } + private static final stringMessage defaultInstance; public static stringMessage getDefaultInstance() { return defaultInstance; } - + public stringMessage getDefaultInstanceForType() { return defaultInstance; } - + + private final com.google.protobuf.UnknownFieldSet unknownFields; + @java.lang.Override + public final com.google.protobuf.UnknownFieldSet + getUnknownFields() { + return this.unknownFields; + } + private stringMessage( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + initFields(); + int mutable_bitField0_ = 0; + com.google.protobuf.UnknownFieldSet.Builder unknownFields = + com.google.protobuf.UnknownFieldSet.newBuilder(); + try { + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch (tag) { + case 0: + done = true; + break; + default: { + if (!parseUnknownField(input, unknownFields, + extensionRegistry, tag)) { + done = true; + } + break; + } + case 10: { + bitField0_ |= 0x00000001; + aString_ = input.readBytes(); + break; + } + } + } + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(this); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException( + e.getMessage()).setUnfinishedMessage(this); + } finally { + this.unknownFields = unknownFields.build(); + makeExtensionsImmutable(); + } + } public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { return org.xtreemfs.pbrpc.generatedinterfaces.MRC.internal_static_xtreemfs_pbrpc_stringMessage_descriptor; } - + protected com.google.protobuf.GeneratedMessage.FieldAccessorTable internalGetFieldAccessorTable() { - return org.xtreemfs.pbrpc.generatedinterfaces.MRC.internal_static_xtreemfs_pbrpc_stringMessage_fieldAccessorTable; + return org.xtreemfs.pbrpc.generatedinterfaces.MRC.internal_static_xtreemfs_pbrpc_stringMessage_fieldAccessorTable + .ensureFieldAccessorsInitialized( + org.xtreemfs.pbrpc.generatedinterfaces.MRC.stringMessage.class, org.xtreemfs.pbrpc.generatedinterfaces.MRC.stringMessage.Builder.class); + } + + public static com.google.protobuf.Parser PARSER = + new com.google.protobuf.AbstractParser() { + public stringMessage parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return new stringMessage(input, extensionRegistry); + } + }; + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; } - + + private int bitField0_; // required string a_string = 1; public static final int A_STRING_FIELD_NUMBER = 1; - private boolean hasAString; - private java.lang.String aString_ = ""; - public boolean hasAString() { return hasAString; } - public java.lang.String getAString() { return aString_; } - + private java.lang.Object aString_; + /** + * required string a_string = 1; + */ + public boolean hasAString() { + return ((bitField0_ & 0x00000001) == 0x00000001); + } + /** + * required string a_string = 1; + */ + public java.lang.String getAString() { + java.lang.Object ref = aString_; + if (ref instanceof java.lang.String) { + return (java.lang.String) ref; + } else { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + if (bs.isValidUtf8()) { + aString_ = s; + } + return s; + } + } + /** + * required string a_string = 1; + */ + public com.google.protobuf.ByteString + getAStringBytes() { + java.lang.Object ref = aString_; + if (ref instanceof java.lang.String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + aString_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + private void initFields() { + aString_ = ""; } + private byte memoizedIsInitialized = -1; public final boolean isInitialized() { - if (!hasAString) return false; + byte isInitialized = memoizedIsInitialized; + if (isInitialized != -1) return isInitialized == 1; + + if (!hasAString()) { + memoizedIsInitialized = 0; + return false; + } + memoizedIsInitialized = 1; return true; } - + public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException { getSerializedSize(); - if (hasAString()) { - output.writeString(1, getAString()); + if (((bitField0_ & 0x00000001) == 0x00000001)) { + output.writeBytes(1, getAStringBytes()); } getUnknownFields().writeTo(output); } - + private int memoizedSerializedSize = -1; public int getSerializedSize() { int size = memoizedSerializedSize; if (size != -1) return size; - + size = 0; - if (hasAString()) { + if (((bitField0_ & 0x00000001) == 0x00000001)) { size += com.google.protobuf.CodedOutputStream - .computeStringSize(1, getAString()); + .computeBytesSize(1, getAStringBytes()); } size += getUnknownFields().getSerializedSize(); memoizedSerializedSize = size; return size; } - + + private static final long serialVersionUID = 0L; + @java.lang.Override + protected java.lang.Object writeReplace() + throws java.io.ObjectStreamException { + return super.writeReplace(); + } + public static org.xtreemfs.pbrpc.generatedinterfaces.MRC.stringMessage parseFrom( com.google.protobuf.ByteString data) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data).buildParsed(); + return PARSER.parseFrom(data); } public static org.xtreemfs.pbrpc.generatedinterfaces.MRC.stringMessage parseFrom( com.google.protobuf.ByteString data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(data, extensionRegistry); } public static org.xtreemfs.pbrpc.generatedinterfaces.MRC.stringMessage parseFrom(byte[] data) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data).buildParsed(); + return PARSER.parseFrom(data); } public static org.xtreemfs.pbrpc.generatedinterfaces.MRC.stringMessage parseFrom( byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(data, extensionRegistry); } public static org.xtreemfs.pbrpc.generatedinterfaces.MRC.stringMessage parseFrom(java.io.InputStream input) throws java.io.IOException { - return newBuilder().mergeFrom(input).buildParsed(); + return PARSER.parseFrom(input); } public static org.xtreemfs.pbrpc.generatedinterfaces.MRC.stringMessage parseFrom( java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - return newBuilder().mergeFrom(input, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(input, extensionRegistry); } public static org.xtreemfs.pbrpc.generatedinterfaces.MRC.stringMessage parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException { - Builder builder = newBuilder(); - if (builder.mergeDelimitedFrom(input)) { - return builder.buildParsed(); - } else { - return null; - } + return PARSER.parseDelimitedFrom(input); } public static org.xtreemfs.pbrpc.generatedinterfaces.MRC.stringMessage parseDelimitedFrom( java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - Builder builder = newBuilder(); - if (builder.mergeDelimitedFrom(input, extensionRegistry)) { - return builder.buildParsed(); - } else { - return null; - } + return PARSER.parseDelimitedFrom(input, extensionRegistry); } public static org.xtreemfs.pbrpc.generatedinterfaces.MRC.stringMessage parseFrom( com.google.protobuf.CodedInputStream input) throws java.io.IOException { - return newBuilder().mergeFrom(input).buildParsed(); + return PARSER.parseFrom(input); } public static org.xtreemfs.pbrpc.generatedinterfaces.MRC.stringMessage parseFrom( com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - return newBuilder().mergeFrom(input, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(input, extensionRegistry); } - + public static Builder newBuilder() { return Builder.create(); } public Builder newBuilderForType() { return newBuilder(); } public static Builder newBuilder(org.xtreemfs.pbrpc.generatedinterfaces.MRC.stringMessage prototype) { return newBuilder().mergeFrom(prototype); } public Builder toBuilder() { return newBuilder(this); } - + + @java.lang.Override + protected Builder newBuilderForType( + com.google.protobuf.GeneratedMessage.BuilderParent parent) { + Builder builder = new Builder(parent); + return builder; + } + /** + * Protobuf type {@code xtreemfs.pbrpc.stringMessage} + */ public static final class Builder extends - com.google.protobuf.GeneratedMessage.Builder { - private org.xtreemfs.pbrpc.generatedinterfaces.MRC.stringMessage result; - + com.google.protobuf.GeneratedMessage.Builder + implements org.xtreemfs.pbrpc.generatedinterfaces.MRC.stringMessageOrBuilder { + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return org.xtreemfs.pbrpc.generatedinterfaces.MRC.internal_static_xtreemfs_pbrpc_stringMessage_descriptor; + } + + protected com.google.protobuf.GeneratedMessage.FieldAccessorTable + internalGetFieldAccessorTable() { + return org.xtreemfs.pbrpc.generatedinterfaces.MRC.internal_static_xtreemfs_pbrpc_stringMessage_fieldAccessorTable + .ensureFieldAccessorsInitialized( + org.xtreemfs.pbrpc.generatedinterfaces.MRC.stringMessage.class, org.xtreemfs.pbrpc.generatedinterfaces.MRC.stringMessage.Builder.class); + } + // Construct using org.xtreemfs.pbrpc.generatedinterfaces.MRC.stringMessage.newBuilder() - private Builder() {} - - private static Builder create() { - Builder builder = new Builder(); - builder.result = new org.xtreemfs.pbrpc.generatedinterfaces.MRC.stringMessage(); - return builder; + private Builder() { + maybeForceBuilderInitialization(); } - - protected org.xtreemfs.pbrpc.generatedinterfaces.MRC.stringMessage internalGetResult() { - return result; + + private Builder( + com.google.protobuf.GeneratedMessage.BuilderParent parent) { + super(parent); + maybeForceBuilderInitialization(); } - - public Builder clear() { - if (result == null) { - throw new IllegalStateException( - "Cannot call clear() after build()."); + private void maybeForceBuilderInitialization() { + if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) { } - result = new org.xtreemfs.pbrpc.generatedinterfaces.MRC.stringMessage(); + } + private static Builder create() { + return new Builder(); + } + + public Builder clear() { + super.clear(); + aString_ = ""; + bitField0_ = (bitField0_ & ~0x00000001); return this; } - + public Builder clone() { - return create().mergeFrom(result); + return create().mergeFrom(buildPartial()); } - + public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() { - return org.xtreemfs.pbrpc.generatedinterfaces.MRC.stringMessage.getDescriptor(); + return org.xtreemfs.pbrpc.generatedinterfaces.MRC.internal_static_xtreemfs_pbrpc_stringMessage_descriptor; } - + public org.xtreemfs.pbrpc.generatedinterfaces.MRC.stringMessage getDefaultInstanceForType() { return org.xtreemfs.pbrpc.generatedinterfaces.MRC.stringMessage.getDefaultInstance(); } - - public boolean isInitialized() { - return result.isInitialized(); - } + public org.xtreemfs.pbrpc.generatedinterfaces.MRC.stringMessage build() { - if (result != null && !isInitialized()) { + org.xtreemfs.pbrpc.generatedinterfaces.MRC.stringMessage result = buildPartial(); + if (!result.isInitialized()) { throw newUninitializedMessageException(result); } - return buildPartial(); - } - - private org.xtreemfs.pbrpc.generatedinterfaces.MRC.stringMessage buildParsed() - throws com.google.protobuf.InvalidProtocolBufferException { - if (!isInitialized()) { - throw newUninitializedMessageException( - result).asInvalidProtocolBufferException(); - } - return buildPartial(); + return result; } - + public org.xtreemfs.pbrpc.generatedinterfaces.MRC.stringMessage buildPartial() { - if (result == null) { - throw new IllegalStateException( - "build() has already been called on this Builder."); - } - org.xtreemfs.pbrpc.generatedinterfaces.MRC.stringMessage returnMe = result; - result = null; - return returnMe; + org.xtreemfs.pbrpc.generatedinterfaces.MRC.stringMessage result = new org.xtreemfs.pbrpc.generatedinterfaces.MRC.stringMessage(this); + int from_bitField0_ = bitField0_; + int to_bitField0_ = 0; + if (((from_bitField0_ & 0x00000001) == 0x00000001)) { + to_bitField0_ |= 0x00000001; + } + result.aString_ = aString_; + result.bitField0_ = to_bitField0_; + onBuilt(); + return result; } - + public Builder mergeFrom(com.google.protobuf.Message other) { if (other instanceof org.xtreemfs.pbrpc.generatedinterfaces.MRC.stringMessage) { return mergeFrom((org.xtreemfs.pbrpc.generatedinterfaces.MRC.stringMessage)other); @@ -15513,286 +36247,477 @@ public final class MRC { return this; } } - + public Builder mergeFrom(org.xtreemfs.pbrpc.generatedinterfaces.MRC.stringMessage other) { if (other == org.xtreemfs.pbrpc.generatedinterfaces.MRC.stringMessage.getDefaultInstance()) return this; if (other.hasAString()) { - setAString(other.getAString()); + bitField0_ |= 0x00000001; + aString_ = other.aString_; + onChanged(); } this.mergeUnknownFields(other.getUnknownFields()); return this; } - + + public final boolean isInitialized() { + if (!hasAString()) { + + return false; + } + return true; + } + public Builder mergeFrom( com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - com.google.protobuf.UnknownFieldSet.Builder unknownFields = - com.google.protobuf.UnknownFieldSet.newBuilder( - this.getUnknownFields()); - while (true) { - int tag = input.readTag(); - switch (tag) { - case 0: - this.setUnknownFields(unknownFields.build()); - return this; - default: { - if (!parseUnknownField(input, unknownFields, - extensionRegistry, tag)) { - this.setUnknownFields(unknownFields.build()); - return this; - } - break; - } - case 10: { - setAString(input.readString()); - break; - } + org.xtreemfs.pbrpc.generatedinterfaces.MRC.stringMessage parsedMessage = null; + try { + parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + parsedMessage = (org.xtreemfs.pbrpc.generatedinterfaces.MRC.stringMessage) e.getUnfinishedMessage(); + throw e; + } finally { + if (parsedMessage != null) { + mergeFrom(parsedMessage); } } + return this; } - - + private int bitField0_; + // required string a_string = 1; + private java.lang.Object aString_ = ""; + /** + * required string a_string = 1; + */ public boolean hasAString() { - return result.hasAString(); + return ((bitField0_ & 0x00000001) == 0x00000001); } + /** + * required string a_string = 1; + */ public java.lang.String getAString() { - return result.getAString(); + java.lang.Object ref = aString_; + if (!(ref instanceof java.lang.String)) { + java.lang.String s = ((com.google.protobuf.ByteString) ref) + .toStringUtf8(); + aString_ = s; + return s; + } else { + return (java.lang.String) ref; + } + } + /** + * required string a_string = 1; + */ + public com.google.protobuf.ByteString + getAStringBytes() { + java.lang.Object ref = aString_; + if (ref instanceof String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + aString_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } } - public Builder setAString(java.lang.String value) { + /** + * required string a_string = 1; + */ + public Builder setAString( + java.lang.String value) { if (value == null) { throw new NullPointerException(); } - result.hasAString = true; - result.aString_ = value; + bitField0_ |= 0x00000001; + aString_ = value; + onChanged(); return this; } + /** + * required string a_string = 1; + */ public Builder clearAString() { - result.hasAString = false; - result.aString_ = getDefaultInstance().getAString(); + bitField0_ = (bitField0_ & ~0x00000001); + aString_ = getDefaultInstance().getAString(); + onChanged(); + return this; + } + /** + * required string a_string = 1; + */ + public Builder setAStringBytes( + com.google.protobuf.ByteString value) { + if (value == null) { + throw new NullPointerException(); + } + bitField0_ |= 0x00000001; + aString_ = value; + onChanged(); return this; } - + // @@protoc_insertion_point(builder_scope:xtreemfs.pbrpc.stringMessage) } - + static { defaultInstance = new stringMessage(true); - org.xtreemfs.pbrpc.generatedinterfaces.MRC.internalForceInit(); defaultInstance.initFields(); } - + // @@protoc_insertion_point(class_scope:xtreemfs.pbrpc.stringMessage) } - + + public interface xtreemfs_listdirRequestOrBuilder + extends com.google.protobuf.MessageOrBuilder { + + // required string path = 1; + /** + * required string path = 1; + */ + boolean hasPath(); + /** + * required string path = 1; + */ + java.lang.String getPath(); + /** + * required string path = 1; + */ + com.google.protobuf.ByteString + getPathBytes(); + } + /** + * Protobuf type {@code xtreemfs.pbrpc.xtreemfs_listdirRequest} + */ public static final class xtreemfs_listdirRequest extends - com.google.protobuf.GeneratedMessage { + com.google.protobuf.GeneratedMessage + implements xtreemfs_listdirRequestOrBuilder { // Use xtreemfs_listdirRequest.newBuilder() to construct. - private xtreemfs_listdirRequest() { - initFields(); + private xtreemfs_listdirRequest(com.google.protobuf.GeneratedMessage.Builder builder) { + super(builder); + this.unknownFields = builder.getUnknownFields(); } - private xtreemfs_listdirRequest(boolean noInit) {} - + private xtreemfs_listdirRequest(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); } + private static final xtreemfs_listdirRequest defaultInstance; public static xtreemfs_listdirRequest getDefaultInstance() { return defaultInstance; } - + public xtreemfs_listdirRequest getDefaultInstanceForType() { return defaultInstance; } - + + private final com.google.protobuf.UnknownFieldSet unknownFields; + @java.lang.Override + public final com.google.protobuf.UnknownFieldSet + getUnknownFields() { + return this.unknownFields; + } + private xtreemfs_listdirRequest( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + initFields(); + int mutable_bitField0_ = 0; + com.google.protobuf.UnknownFieldSet.Builder unknownFields = + com.google.protobuf.UnknownFieldSet.newBuilder(); + try { + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch (tag) { + case 0: + done = true; + break; + default: { + if (!parseUnknownField(input, unknownFields, + extensionRegistry, tag)) { + done = true; + } + break; + } + case 10: { + bitField0_ |= 0x00000001; + path_ = input.readBytes(); + break; + } + } + } + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(this); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException( + e.getMessage()).setUnfinishedMessage(this); + } finally { + this.unknownFields = unknownFields.build(); + makeExtensionsImmutable(); + } + } public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { return org.xtreemfs.pbrpc.generatedinterfaces.MRC.internal_static_xtreemfs_pbrpc_xtreemfs_listdirRequest_descriptor; } - + protected com.google.protobuf.GeneratedMessage.FieldAccessorTable internalGetFieldAccessorTable() { - return org.xtreemfs.pbrpc.generatedinterfaces.MRC.internal_static_xtreemfs_pbrpc_xtreemfs_listdirRequest_fieldAccessorTable; + return org.xtreemfs.pbrpc.generatedinterfaces.MRC.internal_static_xtreemfs_pbrpc_xtreemfs_listdirRequest_fieldAccessorTable + .ensureFieldAccessorsInitialized( + org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_listdirRequest.class, org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_listdirRequest.Builder.class); + } + + public static com.google.protobuf.Parser PARSER = + new com.google.protobuf.AbstractParser() { + public xtreemfs_listdirRequest parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return new xtreemfs_listdirRequest(input, extensionRegistry); + } + }; + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; } - + + private int bitField0_; // required string path = 1; public static final int PATH_FIELD_NUMBER = 1; - private boolean hasPath; - private java.lang.String path_ = ""; - public boolean hasPath() { return hasPath; } - public java.lang.String getPath() { return path_; } - + private java.lang.Object path_; + /** + * required string path = 1; + */ + public boolean hasPath() { + return ((bitField0_ & 0x00000001) == 0x00000001); + } + /** + * required string path = 1; + */ + public java.lang.String getPath() { + java.lang.Object ref = path_; + if (ref instanceof java.lang.String) { + return (java.lang.String) ref; + } else { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + if (bs.isValidUtf8()) { + path_ = s; + } + return s; + } + } + /** + * required string path = 1; + */ + public com.google.protobuf.ByteString + getPathBytes() { + java.lang.Object ref = path_; + if (ref instanceof java.lang.String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + path_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + private void initFields() { + path_ = ""; } + private byte memoizedIsInitialized = -1; public final boolean isInitialized() { - if (!hasPath) return false; + byte isInitialized = memoizedIsInitialized; + if (isInitialized != -1) return isInitialized == 1; + + if (!hasPath()) { + memoizedIsInitialized = 0; + return false; + } + memoizedIsInitialized = 1; return true; } - + public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException { getSerializedSize(); - if (hasPath()) { - output.writeString(1, getPath()); + if (((bitField0_ & 0x00000001) == 0x00000001)) { + output.writeBytes(1, getPathBytes()); } getUnknownFields().writeTo(output); } - + private int memoizedSerializedSize = -1; public int getSerializedSize() { int size = memoizedSerializedSize; if (size != -1) return size; - + size = 0; - if (hasPath()) { + if (((bitField0_ & 0x00000001) == 0x00000001)) { size += com.google.protobuf.CodedOutputStream - .computeStringSize(1, getPath()); + .computeBytesSize(1, getPathBytes()); } size += getUnknownFields().getSerializedSize(); memoizedSerializedSize = size; return size; } - + + private static final long serialVersionUID = 0L; + @java.lang.Override + protected java.lang.Object writeReplace() + throws java.io.ObjectStreamException { + return super.writeReplace(); + } + public static org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_listdirRequest parseFrom( com.google.protobuf.ByteString data) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data).buildParsed(); + return PARSER.parseFrom(data); } public static org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_listdirRequest parseFrom( com.google.protobuf.ByteString data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(data, extensionRegistry); } public static org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_listdirRequest parseFrom(byte[] data) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data).buildParsed(); + return PARSER.parseFrom(data); } public static org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_listdirRequest parseFrom( byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(data, extensionRegistry); } public static org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_listdirRequest parseFrom(java.io.InputStream input) throws java.io.IOException { - return newBuilder().mergeFrom(input).buildParsed(); + return PARSER.parseFrom(input); } public static org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_listdirRequest parseFrom( java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - return newBuilder().mergeFrom(input, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(input, extensionRegistry); } public static org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_listdirRequest parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException { - Builder builder = newBuilder(); - if (builder.mergeDelimitedFrom(input)) { - return builder.buildParsed(); - } else { - return null; - } + return PARSER.parseDelimitedFrom(input); } public static org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_listdirRequest parseDelimitedFrom( java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - Builder builder = newBuilder(); - if (builder.mergeDelimitedFrom(input, extensionRegistry)) { - return builder.buildParsed(); - } else { - return null; - } + return PARSER.parseDelimitedFrom(input, extensionRegistry); } public static org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_listdirRequest parseFrom( com.google.protobuf.CodedInputStream input) throws java.io.IOException { - return newBuilder().mergeFrom(input).buildParsed(); + return PARSER.parseFrom(input); } public static org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_listdirRequest parseFrom( com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - return newBuilder().mergeFrom(input, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(input, extensionRegistry); } - + public static Builder newBuilder() { return Builder.create(); } public Builder newBuilderForType() { return newBuilder(); } public static Builder newBuilder(org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_listdirRequest prototype) { return newBuilder().mergeFrom(prototype); } public Builder toBuilder() { return newBuilder(this); } - + + @java.lang.Override + protected Builder newBuilderForType( + com.google.protobuf.GeneratedMessage.BuilderParent parent) { + Builder builder = new Builder(parent); + return builder; + } + /** + * Protobuf type {@code xtreemfs.pbrpc.xtreemfs_listdirRequest} + */ public static final class Builder extends - com.google.protobuf.GeneratedMessage.Builder { - private org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_listdirRequest result; - + com.google.protobuf.GeneratedMessage.Builder + implements org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_listdirRequestOrBuilder { + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return org.xtreemfs.pbrpc.generatedinterfaces.MRC.internal_static_xtreemfs_pbrpc_xtreemfs_listdirRequest_descriptor; + } + + protected com.google.protobuf.GeneratedMessage.FieldAccessorTable + internalGetFieldAccessorTable() { + return org.xtreemfs.pbrpc.generatedinterfaces.MRC.internal_static_xtreemfs_pbrpc_xtreemfs_listdirRequest_fieldAccessorTable + .ensureFieldAccessorsInitialized( + org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_listdirRequest.class, org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_listdirRequest.Builder.class); + } + // Construct using org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_listdirRequest.newBuilder() - private Builder() {} - - private static Builder create() { - Builder builder = new Builder(); - builder.result = new org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_listdirRequest(); - return builder; + private Builder() { + maybeForceBuilderInitialization(); } - - protected org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_listdirRequest internalGetResult() { - return result; + + private Builder( + com.google.protobuf.GeneratedMessage.BuilderParent parent) { + super(parent); + maybeForceBuilderInitialization(); } - - public Builder clear() { - if (result == null) { - throw new IllegalStateException( - "Cannot call clear() after build()."); + private void maybeForceBuilderInitialization() { + if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) { } - result = new org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_listdirRequest(); + } + private static Builder create() { + return new Builder(); + } + + public Builder clear() { + super.clear(); + path_ = ""; + bitField0_ = (bitField0_ & ~0x00000001); return this; } - + public Builder clone() { - return create().mergeFrom(result); + return create().mergeFrom(buildPartial()); } - + public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() { - return org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_listdirRequest.getDescriptor(); + return org.xtreemfs.pbrpc.generatedinterfaces.MRC.internal_static_xtreemfs_pbrpc_xtreemfs_listdirRequest_descriptor; } - + public org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_listdirRequest getDefaultInstanceForType() { return org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_listdirRequest.getDefaultInstance(); } - - public boolean isInitialized() { - return result.isInitialized(); - } + public org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_listdirRequest build() { - if (result != null && !isInitialized()) { + org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_listdirRequest result = buildPartial(); + if (!result.isInitialized()) { throw newUninitializedMessageException(result); } - return buildPartial(); - } - - private org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_listdirRequest buildParsed() - throws com.google.protobuf.InvalidProtocolBufferException { - if (!isInitialized()) { - throw newUninitializedMessageException( - result).asInvalidProtocolBufferException(); - } - return buildPartial(); + return result; } - + public org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_listdirRequest buildPartial() { - if (result == null) { - throw new IllegalStateException( - "build() has already been called on this Builder."); - } - org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_listdirRequest returnMe = result; - result = null; - return returnMe; + org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_listdirRequest result = new org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_listdirRequest(this); + int from_bitField0_ = bitField0_; + int to_bitField0_ = 0; + if (((from_bitField0_ & 0x00000001) == 0x00000001)) { + to_bitField0_ |= 0x00000001; + } + result.path_ = path_; + result.bitField0_ = to_bitField0_; + onBuilt(); + return result; } - + public Builder mergeFrom(com.google.protobuf.Message other) { if (other instanceof org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_listdirRequest) { return mergeFrom((org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_listdirRequest)other); @@ -15801,144 +36726,316 @@ public final class MRC { return this; } } - + public Builder mergeFrom(org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_listdirRequest other) { if (other == org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_listdirRequest.getDefaultInstance()) return this; if (other.hasPath()) { - setPath(other.getPath()); + bitField0_ |= 0x00000001; + path_ = other.path_; + onChanged(); } this.mergeUnknownFields(other.getUnknownFields()); return this; } - + + public final boolean isInitialized() { + if (!hasPath()) { + + return false; + } + return true; + } + public Builder mergeFrom( com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - com.google.protobuf.UnknownFieldSet.Builder unknownFields = - com.google.protobuf.UnknownFieldSet.newBuilder( - this.getUnknownFields()); - while (true) { - int tag = input.readTag(); - switch (tag) { - case 0: - this.setUnknownFields(unknownFields.build()); - return this; - default: { - if (!parseUnknownField(input, unknownFields, - extensionRegistry, tag)) { - this.setUnknownFields(unknownFields.build()); - return this; - } - break; - } - case 10: { - setPath(input.readString()); - break; - } + org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_listdirRequest parsedMessage = null; + try { + parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + parsedMessage = (org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_listdirRequest) e.getUnfinishedMessage(); + throw e; + } finally { + if (parsedMessage != null) { + mergeFrom(parsedMessage); } } + return this; } - - + private int bitField0_; + // required string path = 1; + private java.lang.Object path_ = ""; + /** + * required string path = 1; + */ public boolean hasPath() { - return result.hasPath(); + return ((bitField0_ & 0x00000001) == 0x00000001); } + /** + * required string path = 1; + */ public java.lang.String getPath() { - return result.getPath(); + java.lang.Object ref = path_; + if (!(ref instanceof java.lang.String)) { + java.lang.String s = ((com.google.protobuf.ByteString) ref) + .toStringUtf8(); + path_ = s; + return s; + } else { + return (java.lang.String) ref; + } + } + /** + * required string path = 1; + */ + public com.google.protobuf.ByteString + getPathBytes() { + java.lang.Object ref = path_; + if (ref instanceof String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + path_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } } - public Builder setPath(java.lang.String value) { + /** + * required string path = 1; + */ + public Builder setPath( + java.lang.String value) { if (value == null) { throw new NullPointerException(); } - result.hasPath = true; - result.path_ = value; + bitField0_ |= 0x00000001; + path_ = value; + onChanged(); return this; } + /** + * required string path = 1; + */ public Builder clearPath() { - result.hasPath = false; - result.path_ = getDefaultInstance().getPath(); + bitField0_ = (bitField0_ & ~0x00000001); + path_ = getDefaultInstance().getPath(); + onChanged(); return this; } - + /** + * required string path = 1; + */ + public Builder setPathBytes( + com.google.protobuf.ByteString value) { + if (value == null) { + throw new NullPointerException(); + } + bitField0_ |= 0x00000001; + path_ = value; + onChanged(); + return this; + } + // @@protoc_insertion_point(builder_scope:xtreemfs.pbrpc.xtreemfs_listdirRequest) } - + static { defaultInstance = new xtreemfs_listdirRequest(true); - org.xtreemfs.pbrpc.generatedinterfaces.MRC.internalForceInit(); defaultInstance.initFields(); } - + // @@protoc_insertion_point(class_scope:xtreemfs.pbrpc.xtreemfs_listdirRequest) } - + + public interface xtreemfs_listdirResponseOrBuilder + extends com.google.protobuf.MessageOrBuilder { + + // repeated string names = 1; + /** + * repeated string names = 1; + */ + java.util.List + getNamesList(); + /** + * repeated string names = 1; + */ + int getNamesCount(); + /** + * repeated string names = 1; + */ + java.lang.String getNames(int index); + /** + * repeated string names = 1; + */ + com.google.protobuf.ByteString + getNamesBytes(int index); + } + /** + * Protobuf type {@code xtreemfs.pbrpc.xtreemfs_listdirResponse} + */ public static final class xtreemfs_listdirResponse extends - com.google.protobuf.GeneratedMessage { + com.google.protobuf.GeneratedMessage + implements xtreemfs_listdirResponseOrBuilder { // Use xtreemfs_listdirResponse.newBuilder() to construct. - private xtreemfs_listdirResponse() { - initFields(); + private xtreemfs_listdirResponse(com.google.protobuf.GeneratedMessage.Builder builder) { + super(builder); + this.unknownFields = builder.getUnknownFields(); } - private xtreemfs_listdirResponse(boolean noInit) {} - + private xtreemfs_listdirResponse(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); } + private static final xtreemfs_listdirResponse defaultInstance; public static xtreemfs_listdirResponse getDefaultInstance() { return defaultInstance; } - + public xtreemfs_listdirResponse getDefaultInstanceForType() { return defaultInstance; } - + + private final com.google.protobuf.UnknownFieldSet unknownFields; + @java.lang.Override + public final com.google.protobuf.UnknownFieldSet + getUnknownFields() { + return this.unknownFields; + } + private xtreemfs_listdirResponse( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + initFields(); + int mutable_bitField0_ = 0; + com.google.protobuf.UnknownFieldSet.Builder unknownFields = + com.google.protobuf.UnknownFieldSet.newBuilder(); + try { + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch (tag) { + case 0: + done = true; + break; + default: { + if (!parseUnknownField(input, unknownFields, + extensionRegistry, tag)) { + done = true; + } + break; + } + case 10: { + if (!((mutable_bitField0_ & 0x00000001) == 0x00000001)) { + names_ = new com.google.protobuf.LazyStringArrayList(); + mutable_bitField0_ |= 0x00000001; + } + names_.add(input.readBytes()); + break; + } + } + } + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(this); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException( + e.getMessage()).setUnfinishedMessage(this); + } finally { + if (((mutable_bitField0_ & 0x00000001) == 0x00000001)) { + names_ = new com.google.protobuf.UnmodifiableLazyStringList(names_); + } + this.unknownFields = unknownFields.build(); + makeExtensionsImmutable(); + } + } public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { return org.xtreemfs.pbrpc.generatedinterfaces.MRC.internal_static_xtreemfs_pbrpc_xtreemfs_listdirResponse_descriptor; } - + protected com.google.protobuf.GeneratedMessage.FieldAccessorTable internalGetFieldAccessorTable() { - return org.xtreemfs.pbrpc.generatedinterfaces.MRC.internal_static_xtreemfs_pbrpc_xtreemfs_listdirResponse_fieldAccessorTable; + return org.xtreemfs.pbrpc.generatedinterfaces.MRC.internal_static_xtreemfs_pbrpc_xtreemfs_listdirResponse_fieldAccessorTable + .ensureFieldAccessorsInitialized( + org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_listdirResponse.class, org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_listdirResponse.Builder.class); + } + + public static com.google.protobuf.Parser PARSER = + new com.google.protobuf.AbstractParser() { + public xtreemfs_listdirResponse parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return new xtreemfs_listdirResponse(input, extensionRegistry); + } + }; + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; } - + // repeated string names = 1; public static final int NAMES_FIELD_NUMBER = 1; - private java.util.List names_ = - java.util.Collections.emptyList(); - public java.util.List getNamesList() { + private com.google.protobuf.LazyStringList names_; + /** + * repeated string names = 1; + */ + public java.util.List + getNamesList() { return names_; } - public int getNamesCount() { return names_.size(); } + /** + * repeated string names = 1; + */ + public int getNamesCount() { + return names_.size(); + } + /** + * repeated string names = 1; + */ public java.lang.String getNames(int index) { return names_.get(index); } - + /** + * repeated string names = 1; + */ + public com.google.protobuf.ByteString + getNamesBytes(int index) { + return names_.getByteString(index); + } + private void initFields() { + names_ = com.google.protobuf.LazyStringArrayList.EMPTY; } + private byte memoizedIsInitialized = -1; public final boolean isInitialized() { + byte isInitialized = memoizedIsInitialized; + if (isInitialized != -1) return isInitialized == 1; + + memoizedIsInitialized = 1; return true; } - + public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException { getSerializedSize(); - for (java.lang.String element : getNamesList()) { - output.writeString(1, element); + for (int i = 0; i < names_.size(); i++) { + output.writeBytes(1, names_.getByteString(i)); } getUnknownFields().writeTo(output); } - + private int memoizedSerializedSize = -1; public int getSerializedSize() { int size = memoizedSerializedSize; if (size != -1) return size; - + size = 0; { int dataSize = 0; - for (java.lang.String element : getNamesList()) { + for (int i = 0; i < names_.size(); i++) { dataSize += com.google.protobuf.CodedOutputStream - .computeStringSizeNoTag(element); + .computeBytesSizeNoTag(names_.getByteString(i)); } size += dataSize; size += 1 * getNamesList().size(); @@ -15947,153 +37044,157 @@ public final class MRC { memoizedSerializedSize = size; return size; } - + + private static final long serialVersionUID = 0L; + @java.lang.Override + protected java.lang.Object writeReplace() + throws java.io.ObjectStreamException { + return super.writeReplace(); + } + public static org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_listdirResponse parseFrom( com.google.protobuf.ByteString data) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data).buildParsed(); + return PARSER.parseFrom(data); } public static org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_listdirResponse parseFrom( com.google.protobuf.ByteString data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(data, extensionRegistry); } public static org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_listdirResponse parseFrom(byte[] data) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data).buildParsed(); + return PARSER.parseFrom(data); } public static org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_listdirResponse parseFrom( byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(data, extensionRegistry); } public static org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_listdirResponse parseFrom(java.io.InputStream input) throws java.io.IOException { - return newBuilder().mergeFrom(input).buildParsed(); + return PARSER.parseFrom(input); } public static org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_listdirResponse parseFrom( java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - return newBuilder().mergeFrom(input, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(input, extensionRegistry); } public static org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_listdirResponse parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException { - Builder builder = newBuilder(); - if (builder.mergeDelimitedFrom(input)) { - return builder.buildParsed(); - } else { - return null; - } + return PARSER.parseDelimitedFrom(input); } public static org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_listdirResponse parseDelimitedFrom( java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - Builder builder = newBuilder(); - if (builder.mergeDelimitedFrom(input, extensionRegistry)) { - return builder.buildParsed(); - } else { - return null; - } + return PARSER.parseDelimitedFrom(input, extensionRegistry); } public static org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_listdirResponse parseFrom( com.google.protobuf.CodedInputStream input) throws java.io.IOException { - return newBuilder().mergeFrom(input).buildParsed(); + return PARSER.parseFrom(input); } public static org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_listdirResponse parseFrom( com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - return newBuilder().mergeFrom(input, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(input, extensionRegistry); } - + public static Builder newBuilder() { return Builder.create(); } public Builder newBuilderForType() { return newBuilder(); } public static Builder newBuilder(org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_listdirResponse prototype) { return newBuilder().mergeFrom(prototype); } public Builder toBuilder() { return newBuilder(this); } - + + @java.lang.Override + protected Builder newBuilderForType( + com.google.protobuf.GeneratedMessage.BuilderParent parent) { + Builder builder = new Builder(parent); + return builder; + } + /** + * Protobuf type {@code xtreemfs.pbrpc.xtreemfs_listdirResponse} + */ public static final class Builder extends - com.google.protobuf.GeneratedMessage.Builder { - private org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_listdirResponse result; - + com.google.protobuf.GeneratedMessage.Builder + implements org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_listdirResponseOrBuilder { + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return org.xtreemfs.pbrpc.generatedinterfaces.MRC.internal_static_xtreemfs_pbrpc_xtreemfs_listdirResponse_descriptor; + } + + protected com.google.protobuf.GeneratedMessage.FieldAccessorTable + internalGetFieldAccessorTable() { + return org.xtreemfs.pbrpc.generatedinterfaces.MRC.internal_static_xtreemfs_pbrpc_xtreemfs_listdirResponse_fieldAccessorTable + .ensureFieldAccessorsInitialized( + org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_listdirResponse.class, org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_listdirResponse.Builder.class); + } + // Construct using org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_listdirResponse.newBuilder() - private Builder() {} - - private static Builder create() { - Builder builder = new Builder(); - builder.result = new org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_listdirResponse(); - return builder; + private Builder() { + maybeForceBuilderInitialization(); } - - protected org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_listdirResponse internalGetResult() { - return result; + + private Builder( + com.google.protobuf.GeneratedMessage.BuilderParent parent) { + super(parent); + maybeForceBuilderInitialization(); } - - public Builder clear() { - if (result == null) { - throw new IllegalStateException( - "Cannot call clear() after build()."); + private void maybeForceBuilderInitialization() { + if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) { } - result = new org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_listdirResponse(); + } + private static Builder create() { + return new Builder(); + } + + public Builder clear() { + super.clear(); + names_ = com.google.protobuf.LazyStringArrayList.EMPTY; + bitField0_ = (bitField0_ & ~0x00000001); return this; } - + public Builder clone() { - return create().mergeFrom(result); + return create().mergeFrom(buildPartial()); } - + public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() { - return org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_listdirResponse.getDescriptor(); + return org.xtreemfs.pbrpc.generatedinterfaces.MRC.internal_static_xtreemfs_pbrpc_xtreemfs_listdirResponse_descriptor; } - + public org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_listdirResponse getDefaultInstanceForType() { return org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_listdirResponse.getDefaultInstance(); } - - public boolean isInitialized() { - return result.isInitialized(); - } + public org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_listdirResponse build() { - if (result != null && !isInitialized()) { + org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_listdirResponse result = buildPartial(); + if (!result.isInitialized()) { throw newUninitializedMessageException(result); } - return buildPartial(); - } - - private org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_listdirResponse buildParsed() - throws com.google.protobuf.InvalidProtocolBufferException { - if (!isInitialized()) { - throw newUninitializedMessageException( - result).asInvalidProtocolBufferException(); - } - return buildPartial(); + return result; } - + public org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_listdirResponse buildPartial() { - if (result == null) { - throw new IllegalStateException( - "build() has already been called on this Builder."); - } - if (result.names_ != java.util.Collections.EMPTY_LIST) { - result.names_ = - java.util.Collections.unmodifiableList(result.names_); - } - org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_listdirResponse returnMe = result; - result = null; - return returnMe; + org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_listdirResponse result = new org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_listdirResponse(this); + int from_bitField0_ = bitField0_; + if (((bitField0_ & 0x00000001) == 0x00000001)) { + names_ = new com.google.protobuf.UnmodifiableLazyStringList( + names_); + bitField0_ = (bitField0_ & ~0x00000001); + } + result.names_ = names_; + onBuilt(); + return result; } - + public Builder mergeFrom(com.google.protobuf.Message other) { if (other instanceof org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_listdirResponse) { return mergeFrom((org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_listdirResponse)other); @@ -16102,352 +37203,807 @@ public final class MRC { return this; } } - + public Builder mergeFrom(org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_listdirResponse other) { if (other == org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_listdirResponse.getDefaultInstance()) return this; if (!other.names_.isEmpty()) { - if (result.names_.isEmpty()) { - result.names_ = new java.util.ArrayList(); + if (names_.isEmpty()) { + names_ = other.names_; + bitField0_ = (bitField0_ & ~0x00000001); + } else { + ensureNamesIsMutable(); + names_.addAll(other.names_); } - result.names_.addAll(other.names_); + onChanged(); } this.mergeUnknownFields(other.getUnknownFields()); return this; } - + + public final boolean isInitialized() { + return true; + } + public Builder mergeFrom( com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - com.google.protobuf.UnknownFieldSet.Builder unknownFields = - com.google.protobuf.UnknownFieldSet.newBuilder( - this.getUnknownFields()); - while (true) { - int tag = input.readTag(); - switch (tag) { - case 0: - this.setUnknownFields(unknownFields.build()); - return this; - default: { - if (!parseUnknownField(input, unknownFields, - extensionRegistry, tag)) { - this.setUnknownFields(unknownFields.build()); - return this; - } - break; - } - case 10: { - addNames(input.readString()); - break; - } + org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_listdirResponse parsedMessage = null; + try { + parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + parsedMessage = (org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_listdirResponse) e.getUnfinishedMessage(); + throw e; + } finally { + if (parsedMessage != null) { + mergeFrom(parsedMessage); } } + return this; } - - + private int bitField0_; + // repeated string names = 1; - public java.util.List getNamesList() { - return java.util.Collections.unmodifiableList(result.names_); - } + private com.google.protobuf.LazyStringList names_ = com.google.protobuf.LazyStringArrayList.EMPTY; + private void ensureNamesIsMutable() { + if (!((bitField0_ & 0x00000001) == 0x00000001)) { + names_ = new com.google.protobuf.LazyStringArrayList(names_); + bitField0_ |= 0x00000001; + } + } + /** + * repeated string names = 1; + */ + public java.util.List + getNamesList() { + return java.util.Collections.unmodifiableList(names_); + } + /** + * repeated string names = 1; + */ public int getNamesCount() { - return result.getNamesCount(); + return names_.size(); } + /** + * repeated string names = 1; + */ public java.lang.String getNames(int index) { - return result.getNames(index); - } - public Builder setNames(int index, java.lang.String value) { + return names_.get(index); + } + /** + * repeated string names = 1; + */ + public com.google.protobuf.ByteString + getNamesBytes(int index) { + return names_.getByteString(index); + } + /** + * repeated string names = 1; + */ + public Builder setNames( + int index, java.lang.String value) { if (value == null) { throw new NullPointerException(); } - result.names_.set(index, value); + ensureNamesIsMutable(); + names_.set(index, value); + onChanged(); return this; } - public Builder addNames(java.lang.String value) { + /** + * repeated string names = 1; + */ + public Builder addNames( + java.lang.String value) { if (value == null) { throw new NullPointerException(); } - if (result.names_.isEmpty()) { - result.names_ = new java.util.ArrayList(); - } - result.names_.add(value); + ensureNamesIsMutable(); + names_.add(value); + onChanged(); return this; } + /** + * repeated string names = 1; + */ public Builder addAllNames( - java.lang.Iterable values) { - if (result.names_.isEmpty()) { - result.names_ = new java.util.ArrayList(); - } - super.addAll(values, result.names_); + java.lang.Iterable values) { + ensureNamesIsMutable(); + super.addAll(values, names_); + onChanged(); return this; } + /** + * repeated string names = 1; + */ public Builder clearNames() { - result.names_ = java.util.Collections.emptyList(); + names_ = com.google.protobuf.LazyStringArrayList.EMPTY; + bitField0_ = (bitField0_ & ~0x00000001); + onChanged(); + return this; + } + /** + * repeated string names = 1; + */ + public Builder addNamesBytes( + com.google.protobuf.ByteString value) { + if (value == null) { + throw new NullPointerException(); + } + ensureNamesIsMutable(); + names_.add(value); + onChanged(); return this; } - + // @@protoc_insertion_point(builder_scope:xtreemfs.pbrpc.xtreemfs_listdirResponse) } - + static { defaultInstance = new xtreemfs_listdirResponse(true); - org.xtreemfs.pbrpc.generatedinterfaces.MRC.internalForceInit(); defaultInstance.initFields(); } - + // @@protoc_insertion_point(class_scope:xtreemfs.pbrpc.xtreemfs_listdirResponse) } - + + public interface xtreemfs_replica_addRequestOrBuilder + extends com.google.protobuf.MessageOrBuilder { + + // optional string file_id = 1; + /** + * optional string file_id = 1; + * + *
+     * the file ID
+     * 
+ */ + boolean hasFileId(); + /** + * optional string file_id = 1; + * + *
+     * the file ID
+     * 
+ */ + java.lang.String getFileId(); + /** + * optional string file_id = 1; + * + *
+     * the file ID
+     * 
+ */ + com.google.protobuf.ByteString + getFileIdBytes(); + + // optional string path = 3; + /** + * optional string path = 3; + * + *
+     * or path and volume_name to file.
+     * 
+ */ + boolean hasPath(); + /** + * optional string path = 3; + * + *
+     * or path and volume_name to file.
+     * 
+ */ + java.lang.String getPath(); + /** + * optional string path = 3; + * + *
+     * or path and volume_name to file.
+     * 
+ */ + com.google.protobuf.ByteString + getPathBytes(); + + // optional string volume_name = 4; + /** + * optional string volume_name = 4; + */ + boolean hasVolumeName(); + /** + * optional string volume_name = 4; + */ + java.lang.String getVolumeName(); + /** + * optional string volume_name = 4; + */ + com.google.protobuf.ByteString + getVolumeNameBytes(); + + // required .xtreemfs.pbrpc.Replica new_replica = 2; + /** + * required .xtreemfs.pbrpc.Replica new_replica = 2; + * + *
+     * the replica to add
+     * 
+ */ + boolean hasNewReplica(); + /** + * required .xtreemfs.pbrpc.Replica new_replica = 2; + * + *
+     * the replica to add
+     * 
+ */ + org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.Replica getNewReplica(); + /** + * required .xtreemfs.pbrpc.Replica new_replica = 2; + * + *
+     * the replica to add
+     * 
+ */ + org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.ReplicaOrBuilder getNewReplicaOrBuilder(); + } + /** + * Protobuf type {@code xtreemfs.pbrpc.xtreemfs_replica_addRequest} + * + *
+   * adds a replica to a file
+   * 
+ */ public static final class xtreemfs_replica_addRequest extends - com.google.protobuf.GeneratedMessage { + com.google.protobuf.GeneratedMessage + implements xtreemfs_replica_addRequestOrBuilder { // Use xtreemfs_replica_addRequest.newBuilder() to construct. - private xtreemfs_replica_addRequest() { - initFields(); + private xtreemfs_replica_addRequest(com.google.protobuf.GeneratedMessage.Builder builder) { + super(builder); + this.unknownFields = builder.getUnknownFields(); } - private xtreemfs_replica_addRequest(boolean noInit) {} - + private xtreemfs_replica_addRequest(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); } + private static final xtreemfs_replica_addRequest defaultInstance; public static xtreemfs_replica_addRequest getDefaultInstance() { return defaultInstance; } - + public xtreemfs_replica_addRequest getDefaultInstanceForType() { return defaultInstance; } - + + private final com.google.protobuf.UnknownFieldSet unknownFields; + @java.lang.Override + public final com.google.protobuf.UnknownFieldSet + getUnknownFields() { + return this.unknownFields; + } + private xtreemfs_replica_addRequest( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + initFields(); + int mutable_bitField0_ = 0; + com.google.protobuf.UnknownFieldSet.Builder unknownFields = + com.google.protobuf.UnknownFieldSet.newBuilder(); + try { + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch (tag) { + case 0: + done = true; + break; + default: { + if (!parseUnknownField(input, unknownFields, + extensionRegistry, tag)) { + done = true; + } + break; + } + case 10: { + bitField0_ |= 0x00000001; + fileId_ = input.readBytes(); + break; + } + case 18: { + org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.Replica.Builder subBuilder = null; + if (((bitField0_ & 0x00000008) == 0x00000008)) { + subBuilder = newReplica_.toBuilder(); + } + newReplica_ = input.readMessage(org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.Replica.PARSER, extensionRegistry); + if (subBuilder != null) { + subBuilder.mergeFrom(newReplica_); + newReplica_ = subBuilder.buildPartial(); + } + bitField0_ |= 0x00000008; + break; + } + case 26: { + bitField0_ |= 0x00000002; + path_ = input.readBytes(); + break; + } + case 34: { + bitField0_ |= 0x00000004; + volumeName_ = input.readBytes(); + break; + } + } + } + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(this); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException( + e.getMessage()).setUnfinishedMessage(this); + } finally { + this.unknownFields = unknownFields.build(); + makeExtensionsImmutable(); + } + } public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { return org.xtreemfs.pbrpc.generatedinterfaces.MRC.internal_static_xtreemfs_pbrpc_xtreemfs_replica_addRequest_descriptor; } - + protected com.google.protobuf.GeneratedMessage.FieldAccessorTable internalGetFieldAccessorTable() { - return org.xtreemfs.pbrpc.generatedinterfaces.MRC.internal_static_xtreemfs_pbrpc_xtreemfs_replica_addRequest_fieldAccessorTable; + return org.xtreemfs.pbrpc.generatedinterfaces.MRC.internal_static_xtreemfs_pbrpc_xtreemfs_replica_addRequest_fieldAccessorTable + .ensureFieldAccessorsInitialized( + org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_replica_addRequest.class, org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_replica_addRequest.Builder.class); + } + + public static com.google.protobuf.Parser PARSER = + new com.google.protobuf.AbstractParser() { + public xtreemfs_replica_addRequest parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return new xtreemfs_replica_addRequest(input, extensionRegistry); + } + }; + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; } - + + private int bitField0_; // optional string file_id = 1; public static final int FILE_ID_FIELD_NUMBER = 1; - private boolean hasFileId; - private java.lang.String fileId_ = ""; - public boolean hasFileId() { return hasFileId; } - public java.lang.String getFileId() { return fileId_; } - + private java.lang.Object fileId_; + /** + * optional string file_id = 1; + * + *
+     * the file ID
+     * 
+ */ + public boolean hasFileId() { + return ((bitField0_ & 0x00000001) == 0x00000001); + } + /** + * optional string file_id = 1; + * + *
+     * the file ID
+     * 
+ */ + public java.lang.String getFileId() { + java.lang.Object ref = fileId_; + if (ref instanceof java.lang.String) { + return (java.lang.String) ref; + } else { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + if (bs.isValidUtf8()) { + fileId_ = s; + } + return s; + } + } + /** + * optional string file_id = 1; + * + *
+     * the file ID
+     * 
+ */ + public com.google.protobuf.ByteString + getFileIdBytes() { + java.lang.Object ref = fileId_; + if (ref instanceof java.lang.String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + fileId_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + // optional string path = 3; public static final int PATH_FIELD_NUMBER = 3; - private boolean hasPath; - private java.lang.String path_ = ""; - public boolean hasPath() { return hasPath; } - public java.lang.String getPath() { return path_; } - + private java.lang.Object path_; + /** + * optional string path = 3; + * + *
+     * or path and volume_name to file.
+     * 
+ */ + public boolean hasPath() { + return ((bitField0_ & 0x00000002) == 0x00000002); + } + /** + * optional string path = 3; + * + *
+     * or path and volume_name to file.
+     * 
+ */ + public java.lang.String getPath() { + java.lang.Object ref = path_; + if (ref instanceof java.lang.String) { + return (java.lang.String) ref; + } else { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + if (bs.isValidUtf8()) { + path_ = s; + } + return s; + } + } + /** + * optional string path = 3; + * + *
+     * or path and volume_name to file.
+     * 
+ */ + public com.google.protobuf.ByteString + getPathBytes() { + java.lang.Object ref = path_; + if (ref instanceof java.lang.String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + path_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + // optional string volume_name = 4; public static final int VOLUME_NAME_FIELD_NUMBER = 4; - private boolean hasVolumeName; - private java.lang.String volumeName_ = ""; - public boolean hasVolumeName() { return hasVolumeName; } - public java.lang.String getVolumeName() { return volumeName_; } - + private java.lang.Object volumeName_; + /** + * optional string volume_name = 4; + */ + public boolean hasVolumeName() { + return ((bitField0_ & 0x00000004) == 0x00000004); + } + /** + * optional string volume_name = 4; + */ + public java.lang.String getVolumeName() { + java.lang.Object ref = volumeName_; + if (ref instanceof java.lang.String) { + return (java.lang.String) ref; + } else { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + if (bs.isValidUtf8()) { + volumeName_ = s; + } + return s; + } + } + /** + * optional string volume_name = 4; + */ + public com.google.protobuf.ByteString + getVolumeNameBytes() { + java.lang.Object ref = volumeName_; + if (ref instanceof java.lang.String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + volumeName_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + // required .xtreemfs.pbrpc.Replica new_replica = 2; public static final int NEW_REPLICA_FIELD_NUMBER = 2; - private boolean hasNewReplica; private org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.Replica newReplica_; - public boolean hasNewReplica() { return hasNewReplica; } - public org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.Replica getNewReplica() { return newReplica_; } - + /** + * required .xtreemfs.pbrpc.Replica new_replica = 2; + * + *
+     * the replica to add
+     * 
+ */ + public boolean hasNewReplica() { + return ((bitField0_ & 0x00000008) == 0x00000008); + } + /** + * required .xtreemfs.pbrpc.Replica new_replica = 2; + * + *
+     * the replica to add
+     * 
+ */ + public org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.Replica getNewReplica() { + return newReplica_; + } + /** + * required .xtreemfs.pbrpc.Replica new_replica = 2; + * + *
+     * the replica to add
+     * 
+ */ + public org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.ReplicaOrBuilder getNewReplicaOrBuilder() { + return newReplica_; + } + private void initFields() { + fileId_ = ""; + path_ = ""; + volumeName_ = ""; newReplica_ = org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.Replica.getDefaultInstance(); } + private byte memoizedIsInitialized = -1; public final boolean isInitialized() { - if (!hasNewReplica) return false; - if (!getNewReplica().isInitialized()) return false; + byte isInitialized = memoizedIsInitialized; + if (isInitialized != -1) return isInitialized == 1; + + if (!hasNewReplica()) { + memoizedIsInitialized = 0; + return false; + } + if (!getNewReplica().isInitialized()) { + memoizedIsInitialized = 0; + return false; + } + memoizedIsInitialized = 1; return true; } - + public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException { getSerializedSize(); - if (hasFileId()) { - output.writeString(1, getFileId()); + if (((bitField0_ & 0x00000001) == 0x00000001)) { + output.writeBytes(1, getFileIdBytes()); } - if (hasNewReplica()) { - output.writeMessage(2, getNewReplica()); + if (((bitField0_ & 0x00000008) == 0x00000008)) { + output.writeMessage(2, newReplica_); } - if (hasPath()) { - output.writeString(3, getPath()); + if (((bitField0_ & 0x00000002) == 0x00000002)) { + output.writeBytes(3, getPathBytes()); } - if (hasVolumeName()) { - output.writeString(4, getVolumeName()); + if (((bitField0_ & 0x00000004) == 0x00000004)) { + output.writeBytes(4, getVolumeNameBytes()); } getUnknownFields().writeTo(output); } - + private int memoizedSerializedSize = -1; public int getSerializedSize() { int size = memoizedSerializedSize; if (size != -1) return size; - + size = 0; - if (hasFileId()) { + if (((bitField0_ & 0x00000001) == 0x00000001)) { size += com.google.protobuf.CodedOutputStream - .computeStringSize(1, getFileId()); + .computeBytesSize(1, getFileIdBytes()); } - if (hasNewReplica()) { + if (((bitField0_ & 0x00000008) == 0x00000008)) { size += com.google.protobuf.CodedOutputStream - .computeMessageSize(2, getNewReplica()); + .computeMessageSize(2, newReplica_); } - if (hasPath()) { + if (((bitField0_ & 0x00000002) == 0x00000002)) { size += com.google.protobuf.CodedOutputStream - .computeStringSize(3, getPath()); + .computeBytesSize(3, getPathBytes()); } - if (hasVolumeName()) { + if (((bitField0_ & 0x00000004) == 0x00000004)) { size += com.google.protobuf.CodedOutputStream - .computeStringSize(4, getVolumeName()); + .computeBytesSize(4, getVolumeNameBytes()); } size += getUnknownFields().getSerializedSize(); memoizedSerializedSize = size; return size; } - + + private static final long serialVersionUID = 0L; + @java.lang.Override + protected java.lang.Object writeReplace() + throws java.io.ObjectStreamException { + return super.writeReplace(); + } + public static org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_replica_addRequest parseFrom( com.google.protobuf.ByteString data) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data).buildParsed(); + return PARSER.parseFrom(data); } public static org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_replica_addRequest parseFrom( com.google.protobuf.ByteString data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(data, extensionRegistry); } public static org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_replica_addRequest parseFrom(byte[] data) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data).buildParsed(); + return PARSER.parseFrom(data); } public static org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_replica_addRequest parseFrom( byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(data, extensionRegistry); } public static org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_replica_addRequest parseFrom(java.io.InputStream input) throws java.io.IOException { - return newBuilder().mergeFrom(input).buildParsed(); + return PARSER.parseFrom(input); } public static org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_replica_addRequest parseFrom( java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - return newBuilder().mergeFrom(input, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(input, extensionRegistry); } public static org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_replica_addRequest parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException { - Builder builder = newBuilder(); - if (builder.mergeDelimitedFrom(input)) { - return builder.buildParsed(); - } else { - return null; - } + return PARSER.parseDelimitedFrom(input); } public static org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_replica_addRequest parseDelimitedFrom( java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - Builder builder = newBuilder(); - if (builder.mergeDelimitedFrom(input, extensionRegistry)) { - return builder.buildParsed(); - } else { - return null; - } + return PARSER.parseDelimitedFrom(input, extensionRegistry); } public static org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_replica_addRequest parseFrom( com.google.protobuf.CodedInputStream input) throws java.io.IOException { - return newBuilder().mergeFrom(input).buildParsed(); + return PARSER.parseFrom(input); } public static org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_replica_addRequest parseFrom( com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - return newBuilder().mergeFrom(input, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(input, extensionRegistry); } - + public static Builder newBuilder() { return Builder.create(); } public Builder newBuilderForType() { return newBuilder(); } public static Builder newBuilder(org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_replica_addRequest prototype) { return newBuilder().mergeFrom(prototype); } public Builder toBuilder() { return newBuilder(this); } - + + @java.lang.Override + protected Builder newBuilderForType( + com.google.protobuf.GeneratedMessage.BuilderParent parent) { + Builder builder = new Builder(parent); + return builder; + } + /** + * Protobuf type {@code xtreemfs.pbrpc.xtreemfs_replica_addRequest} + * + *
+     * adds a replica to a file
+     * 
+ */ public static final class Builder extends - com.google.protobuf.GeneratedMessage.Builder { - private org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_replica_addRequest result; - + com.google.protobuf.GeneratedMessage.Builder + implements org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_replica_addRequestOrBuilder { + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return org.xtreemfs.pbrpc.generatedinterfaces.MRC.internal_static_xtreemfs_pbrpc_xtreemfs_replica_addRequest_descriptor; + } + + protected com.google.protobuf.GeneratedMessage.FieldAccessorTable + internalGetFieldAccessorTable() { + return org.xtreemfs.pbrpc.generatedinterfaces.MRC.internal_static_xtreemfs_pbrpc_xtreemfs_replica_addRequest_fieldAccessorTable + .ensureFieldAccessorsInitialized( + org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_replica_addRequest.class, org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_replica_addRequest.Builder.class); + } + // Construct using org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_replica_addRequest.newBuilder() - private Builder() {} - - private static Builder create() { - Builder builder = new Builder(); - builder.result = new org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_replica_addRequest(); - return builder; + private Builder() { + maybeForceBuilderInitialization(); } - - protected org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_replica_addRequest internalGetResult() { - return result; + + private Builder( + com.google.protobuf.GeneratedMessage.BuilderParent parent) { + super(parent); + maybeForceBuilderInitialization(); + } + private void maybeForceBuilderInitialization() { + if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) { + getNewReplicaFieldBuilder(); + } + } + private static Builder create() { + return new Builder(); } - + public Builder clear() { - if (result == null) { - throw new IllegalStateException( - "Cannot call clear() after build()."); + super.clear(); + fileId_ = ""; + bitField0_ = (bitField0_ & ~0x00000001); + path_ = ""; + bitField0_ = (bitField0_ & ~0x00000002); + volumeName_ = ""; + bitField0_ = (bitField0_ & ~0x00000004); + if (newReplicaBuilder_ == null) { + newReplica_ = org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.Replica.getDefaultInstance(); + } else { + newReplicaBuilder_.clear(); } - result = new org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_replica_addRequest(); + bitField0_ = (bitField0_ & ~0x00000008); return this; } - + public Builder clone() { - return create().mergeFrom(result); + return create().mergeFrom(buildPartial()); } - + public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() { - return org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_replica_addRequest.getDescriptor(); + return org.xtreemfs.pbrpc.generatedinterfaces.MRC.internal_static_xtreemfs_pbrpc_xtreemfs_replica_addRequest_descriptor; } - + public org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_replica_addRequest getDefaultInstanceForType() { return org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_replica_addRequest.getDefaultInstance(); } - - public boolean isInitialized() { - return result.isInitialized(); - } + public org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_replica_addRequest build() { - if (result != null && !isInitialized()) { + org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_replica_addRequest result = buildPartial(); + if (!result.isInitialized()) { throw newUninitializedMessageException(result); } - return buildPartial(); - } - - private org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_replica_addRequest buildParsed() - throws com.google.protobuf.InvalidProtocolBufferException { - if (!isInitialized()) { - throw newUninitializedMessageException( - result).asInvalidProtocolBufferException(); - } - return buildPartial(); + return result; } - + public org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_replica_addRequest buildPartial() { - if (result == null) { - throw new IllegalStateException( - "build() has already been called on this Builder."); + org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_replica_addRequest result = new org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_replica_addRequest(this); + int from_bitField0_ = bitField0_; + int to_bitField0_ = 0; + if (((from_bitField0_ & 0x00000001) == 0x00000001)) { + to_bitField0_ |= 0x00000001; + } + result.fileId_ = fileId_; + if (((from_bitField0_ & 0x00000002) == 0x00000002)) { + to_bitField0_ |= 0x00000002; + } + result.path_ = path_; + if (((from_bitField0_ & 0x00000004) == 0x00000004)) { + to_bitField0_ |= 0x00000004; + } + result.volumeName_ = volumeName_; + if (((from_bitField0_ & 0x00000008) == 0x00000008)) { + to_bitField0_ |= 0x00000008; + } + if (newReplicaBuilder_ == null) { + result.newReplica_ = newReplica_; + } else { + result.newReplica_ = newReplicaBuilder_.build(); } - org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_replica_addRequest returnMe = result; - result = null; - return returnMe; + result.bitField0_ = to_bitField0_; + onBuilt(); + return result; } - + public Builder mergeFrom(com.google.protobuf.Message other) { if (other instanceof org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_replica_addRequest) { return mergeFrom((org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_replica_addRequest)other); @@ -16456,17 +38012,23 @@ public final class MRC { return this; } } - + public Builder mergeFrom(org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_replica_addRequest other) { if (other == org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_replica_addRequest.getDefaultInstance()) return this; if (other.hasFileId()) { - setFileId(other.getFileId()); + bitField0_ |= 0x00000001; + fileId_ = other.fileId_; + onChanged(); } if (other.hasPath()) { - setPath(other.getPath()); + bitField0_ |= 0x00000002; + path_ = other.path_; + onChanged(); } if (other.hasVolumeName()) { - setVolumeName(other.getVolumeName()); + bitField0_ |= 0x00000004; + volumeName_ = other.volumeName_; + onChanged(); } if (other.hasNewReplica()) { mergeNewReplica(other.getNewReplica()); @@ -16474,400 +38036,1025 @@ public final class MRC { this.mergeUnknownFields(other.getUnknownFields()); return this; } - + + public final boolean isInitialized() { + if (!hasNewReplica()) { + + return false; + } + if (!getNewReplica().isInitialized()) { + + return false; + } + return true; + } + public Builder mergeFrom( com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - com.google.protobuf.UnknownFieldSet.Builder unknownFields = - com.google.protobuf.UnknownFieldSet.newBuilder( - this.getUnknownFields()); - while (true) { - int tag = input.readTag(); - switch (tag) { - case 0: - this.setUnknownFields(unknownFields.build()); - return this; - default: { - if (!parseUnknownField(input, unknownFields, - extensionRegistry, tag)) { - this.setUnknownFields(unknownFields.build()); - return this; - } - break; - } - case 10: { - setFileId(input.readString()); - break; - } - case 18: { - org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.Replica.Builder subBuilder = org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.Replica.newBuilder(); - if (hasNewReplica()) { - subBuilder.mergeFrom(getNewReplica()); - } - input.readMessage(subBuilder, extensionRegistry); - setNewReplica(subBuilder.buildPartial()); - break; - } - case 26: { - setPath(input.readString()); - break; - } - case 34: { - setVolumeName(input.readString()); - break; - } + org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_replica_addRequest parsedMessage = null; + try { + parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + parsedMessage = (org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_replica_addRequest) e.getUnfinishedMessage(); + throw e; + } finally { + if (parsedMessage != null) { + mergeFrom(parsedMessage); } } + return this; } - - + private int bitField0_; + // optional string file_id = 1; + private java.lang.Object fileId_ = ""; + /** + * optional string file_id = 1; + * + *
+       * the file ID
+       * 
+ */ public boolean hasFileId() { - return result.hasFileId(); - } + return ((bitField0_ & 0x00000001) == 0x00000001); + } + /** + * optional string file_id = 1; + * + *
+       * the file ID
+       * 
+ */ public java.lang.String getFileId() { - return result.getFileId(); - } - public Builder setFileId(java.lang.String value) { + java.lang.Object ref = fileId_; + if (!(ref instanceof java.lang.String)) { + java.lang.String s = ((com.google.protobuf.ByteString) ref) + .toStringUtf8(); + fileId_ = s; + return s; + } else { + return (java.lang.String) ref; + } + } + /** + * optional string file_id = 1; + * + *
+       * the file ID
+       * 
+ */ + public com.google.protobuf.ByteString + getFileIdBytes() { + java.lang.Object ref = fileId_; + if (ref instanceof String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + fileId_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + /** + * optional string file_id = 1; + * + *
+       * the file ID
+       * 
+ */ + public Builder setFileId( + java.lang.String value) { if (value == null) { throw new NullPointerException(); } - result.hasFileId = true; - result.fileId_ = value; - return this; - } + bitField0_ |= 0x00000001; + fileId_ = value; + onChanged(); + return this; + } + /** + * optional string file_id = 1; + * + *
+       * the file ID
+       * 
+ */ public Builder clearFileId() { - result.hasFileId = false; - result.fileId_ = getDefaultInstance().getFileId(); + bitField0_ = (bitField0_ & ~0x00000001); + fileId_ = getDefaultInstance().getFileId(); + onChanged(); + return this; + } + /** + * optional string file_id = 1; + * + *
+       * the file ID
+       * 
+ */ + public Builder setFileIdBytes( + com.google.protobuf.ByteString value) { + if (value == null) { + throw new NullPointerException(); + } + bitField0_ |= 0x00000001; + fileId_ = value; + onChanged(); return this; } - + // optional string path = 3; + private java.lang.Object path_ = ""; + /** + * optional string path = 3; + * + *
+       * or path and volume_name to file.
+       * 
+ */ public boolean hasPath() { - return result.hasPath(); - } + return ((bitField0_ & 0x00000002) == 0x00000002); + } + /** + * optional string path = 3; + * + *
+       * or path and volume_name to file.
+       * 
+ */ public java.lang.String getPath() { - return result.getPath(); - } - public Builder setPath(java.lang.String value) { + java.lang.Object ref = path_; + if (!(ref instanceof java.lang.String)) { + java.lang.String s = ((com.google.protobuf.ByteString) ref) + .toStringUtf8(); + path_ = s; + return s; + } else { + return (java.lang.String) ref; + } + } + /** + * optional string path = 3; + * + *
+       * or path and volume_name to file.
+       * 
+ */ + public com.google.protobuf.ByteString + getPathBytes() { + java.lang.Object ref = path_; + if (ref instanceof String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + path_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + /** + * optional string path = 3; + * + *
+       * or path and volume_name to file.
+       * 
+ */ + public Builder setPath( + java.lang.String value) { if (value == null) { throw new NullPointerException(); } - result.hasPath = true; - result.path_ = value; - return this; - } + bitField0_ |= 0x00000002; + path_ = value; + onChanged(); + return this; + } + /** + * optional string path = 3; + * + *
+       * or path and volume_name to file.
+       * 
+ */ public Builder clearPath() { - result.hasPath = false; - result.path_ = getDefaultInstance().getPath(); + bitField0_ = (bitField0_ & ~0x00000002); + path_ = getDefaultInstance().getPath(); + onChanged(); + return this; + } + /** + * optional string path = 3; + * + *
+       * or path and volume_name to file.
+       * 
+ */ + public Builder setPathBytes( + com.google.protobuf.ByteString value) { + if (value == null) { + throw new NullPointerException(); + } + bitField0_ |= 0x00000002; + path_ = value; + onChanged(); return this; } - + // optional string volume_name = 4; + private java.lang.Object volumeName_ = ""; + /** + * optional string volume_name = 4; + */ public boolean hasVolumeName() { - return result.hasVolumeName(); + return ((bitField0_ & 0x00000004) == 0x00000004); } + /** + * optional string volume_name = 4; + */ public java.lang.String getVolumeName() { - return result.getVolumeName(); + java.lang.Object ref = volumeName_; + if (!(ref instanceof java.lang.String)) { + java.lang.String s = ((com.google.protobuf.ByteString) ref) + .toStringUtf8(); + volumeName_ = s; + return s; + } else { + return (java.lang.String) ref; + } + } + /** + * optional string volume_name = 4; + */ + public com.google.protobuf.ByteString + getVolumeNameBytes() { + java.lang.Object ref = volumeName_; + if (ref instanceof String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + volumeName_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } } - public Builder setVolumeName(java.lang.String value) { + /** + * optional string volume_name = 4; + */ + public Builder setVolumeName( + java.lang.String value) { if (value == null) { throw new NullPointerException(); } - result.hasVolumeName = true; - result.volumeName_ = value; + bitField0_ |= 0x00000004; + volumeName_ = value; + onChanged(); return this; } + /** + * optional string volume_name = 4; + */ public Builder clearVolumeName() { - result.hasVolumeName = false; - result.volumeName_ = getDefaultInstance().getVolumeName(); + bitField0_ = (bitField0_ & ~0x00000004); + volumeName_ = getDefaultInstance().getVolumeName(); + onChanged(); + return this; + } + /** + * optional string volume_name = 4; + */ + public Builder setVolumeNameBytes( + com.google.protobuf.ByteString value) { + if (value == null) { + throw new NullPointerException(); + } + bitField0_ |= 0x00000004; + volumeName_ = value; + onChanged(); return this; } - + // required .xtreemfs.pbrpc.Replica new_replica = 2; + private org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.Replica newReplica_ = org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.Replica.getDefaultInstance(); + private com.google.protobuf.SingleFieldBuilder< + org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.Replica, org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.Replica.Builder, org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.ReplicaOrBuilder> newReplicaBuilder_; + /** + * required .xtreemfs.pbrpc.Replica new_replica = 2; + * + *
+       * the replica to add
+       * 
+ */ public boolean hasNewReplica() { - return result.hasNewReplica(); - } + return ((bitField0_ & 0x00000008) == 0x00000008); + } + /** + * required .xtreemfs.pbrpc.Replica new_replica = 2; + * + *
+       * the replica to add
+       * 
+ */ public org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.Replica getNewReplica() { - return result.getNewReplica(); - } - public Builder setNewReplica(org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.Replica value) { - if (value == null) { - throw new NullPointerException(); + if (newReplicaBuilder_ == null) { + return newReplica_; + } else { + return newReplicaBuilder_.getMessage(); } - result.hasNewReplica = true; - result.newReplica_ = value; - return this; } - public Builder setNewReplica(org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.Replica.Builder builderForValue) { - result.hasNewReplica = true; - result.newReplica_ = builderForValue.build(); + /** + * required .xtreemfs.pbrpc.Replica new_replica = 2; + * + *
+       * the replica to add
+       * 
+ */ + public Builder setNewReplica(org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.Replica value) { + if (newReplicaBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + newReplica_ = value; + onChanged(); + } else { + newReplicaBuilder_.setMessage(value); + } + bitField0_ |= 0x00000008; + return this; + } + /** + * required .xtreemfs.pbrpc.Replica new_replica = 2; + * + *
+       * the replica to add
+       * 
+ */ + public Builder setNewReplica( + org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.Replica.Builder builderForValue) { + if (newReplicaBuilder_ == null) { + newReplica_ = builderForValue.build(); + onChanged(); + } else { + newReplicaBuilder_.setMessage(builderForValue.build()); + } + bitField0_ |= 0x00000008; return this; } + /** + * required .xtreemfs.pbrpc.Replica new_replica = 2; + * + *
+       * the replica to add
+       * 
+ */ public Builder mergeNewReplica(org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.Replica value) { - if (result.hasNewReplica() && - result.newReplica_ != org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.Replica.getDefaultInstance()) { - result.newReplica_ = - org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.Replica.newBuilder(result.newReplica_).mergeFrom(value).buildPartial(); + if (newReplicaBuilder_ == null) { + if (((bitField0_ & 0x00000008) == 0x00000008) && + newReplica_ != org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.Replica.getDefaultInstance()) { + newReplica_ = + org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.Replica.newBuilder(newReplica_).mergeFrom(value).buildPartial(); + } else { + newReplica_ = value; + } + onChanged(); } else { - result.newReplica_ = value; + newReplicaBuilder_.mergeFrom(value); } - result.hasNewReplica = true; + bitField0_ |= 0x00000008; return this; } + /** + * required .xtreemfs.pbrpc.Replica new_replica = 2; + * + *
+       * the replica to add
+       * 
+ */ public Builder clearNewReplica() { - result.hasNewReplica = false; - result.newReplica_ = org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.Replica.getDefaultInstance(); - return this; + if (newReplicaBuilder_ == null) { + newReplica_ = org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.Replica.getDefaultInstance(); + onChanged(); + } else { + newReplicaBuilder_.clear(); + } + bitField0_ = (bitField0_ & ~0x00000008); + return this; + } + /** + * required .xtreemfs.pbrpc.Replica new_replica = 2; + * + *
+       * the replica to add
+       * 
+ */ + public org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.Replica.Builder getNewReplicaBuilder() { + bitField0_ |= 0x00000008; + onChanged(); + return getNewReplicaFieldBuilder().getBuilder(); + } + /** + * required .xtreemfs.pbrpc.Replica new_replica = 2; + * + *
+       * the replica to add
+       * 
+ */ + public org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.ReplicaOrBuilder getNewReplicaOrBuilder() { + if (newReplicaBuilder_ != null) { + return newReplicaBuilder_.getMessageOrBuilder(); + } else { + return newReplica_; + } + } + /** + * required .xtreemfs.pbrpc.Replica new_replica = 2; + * + *
+       * the replica to add
+       * 
+ */ + private com.google.protobuf.SingleFieldBuilder< + org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.Replica, org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.Replica.Builder, org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.ReplicaOrBuilder> + getNewReplicaFieldBuilder() { + if (newReplicaBuilder_ == null) { + newReplicaBuilder_ = new com.google.protobuf.SingleFieldBuilder< + org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.Replica, org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.Replica.Builder, org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.ReplicaOrBuilder>( + newReplica_, + getParentForChildren(), + isClean()); + newReplica_ = null; + } + return newReplicaBuilder_; } - + // @@protoc_insertion_point(builder_scope:xtreemfs.pbrpc.xtreemfs_replica_addRequest) } - + static { defaultInstance = new xtreemfs_replica_addRequest(true); - org.xtreemfs.pbrpc.generatedinterfaces.MRC.internalForceInit(); defaultInstance.initFields(); } - + // @@protoc_insertion_point(class_scope:xtreemfs.pbrpc.xtreemfs_replica_addRequest) } - + + public interface xtreemfs_replica_listRequestOrBuilder + extends com.google.protobuf.MessageOrBuilder { + + // optional string file_id = 1; + /** + * optional string file_id = 1; + * + *
+     * the file ID
+     * 
+ */ + boolean hasFileId(); + /** + * optional string file_id = 1; + * + *
+     * the file ID
+     * 
+ */ + java.lang.String getFileId(); + /** + * optional string file_id = 1; + * + *
+     * the file ID
+     * 
+ */ + com.google.protobuf.ByteString + getFileIdBytes(); + + // optional string path = 2; + /** + * optional string path = 2; + * + *
+     * or path and volume_name to file.
+     * 
+ */ + boolean hasPath(); + /** + * optional string path = 2; + * + *
+     * or path and volume_name to file.
+     * 
+ */ + java.lang.String getPath(); + /** + * optional string path = 2; + * + *
+     * or path and volume_name to file.
+     * 
+ */ + com.google.protobuf.ByteString + getPathBytes(); + + // optional string volume_name = 3; + /** + * optional string volume_name = 3; + */ + boolean hasVolumeName(); + /** + * optional string volume_name = 3; + */ + java.lang.String getVolumeName(); + /** + * optional string volume_name = 3; + */ + com.google.protobuf.ByteString + getVolumeNameBytes(); + } + /** + * Protobuf type {@code xtreemfs.pbrpc.xtreemfs_replica_listRequest} + * + *
+   * requests a list of all replicas of a file
+   * 
+ */ public static final class xtreemfs_replica_listRequest extends - com.google.protobuf.GeneratedMessage { + com.google.protobuf.GeneratedMessage + implements xtreemfs_replica_listRequestOrBuilder { // Use xtreemfs_replica_listRequest.newBuilder() to construct. - private xtreemfs_replica_listRequest() { - initFields(); + private xtreemfs_replica_listRequest(com.google.protobuf.GeneratedMessage.Builder builder) { + super(builder); + this.unknownFields = builder.getUnknownFields(); } - private xtreemfs_replica_listRequest(boolean noInit) {} - + private xtreemfs_replica_listRequest(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); } + private static final xtreemfs_replica_listRequest defaultInstance; public static xtreemfs_replica_listRequest getDefaultInstance() { return defaultInstance; } - + public xtreemfs_replica_listRequest getDefaultInstanceForType() { return defaultInstance; } - + + private final com.google.protobuf.UnknownFieldSet unknownFields; + @java.lang.Override + public final com.google.protobuf.UnknownFieldSet + getUnknownFields() { + return this.unknownFields; + } + private xtreemfs_replica_listRequest( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + initFields(); + int mutable_bitField0_ = 0; + com.google.protobuf.UnknownFieldSet.Builder unknownFields = + com.google.protobuf.UnknownFieldSet.newBuilder(); + try { + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch (tag) { + case 0: + done = true; + break; + default: { + if (!parseUnknownField(input, unknownFields, + extensionRegistry, tag)) { + done = true; + } + break; + } + case 10: { + bitField0_ |= 0x00000001; + fileId_ = input.readBytes(); + break; + } + case 18: { + bitField0_ |= 0x00000002; + path_ = input.readBytes(); + break; + } + case 26: { + bitField0_ |= 0x00000004; + volumeName_ = input.readBytes(); + break; + } + } + } + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(this); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException( + e.getMessage()).setUnfinishedMessage(this); + } finally { + this.unknownFields = unknownFields.build(); + makeExtensionsImmutable(); + } + } public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { return org.xtreemfs.pbrpc.generatedinterfaces.MRC.internal_static_xtreemfs_pbrpc_xtreemfs_replica_listRequest_descriptor; } - + protected com.google.protobuf.GeneratedMessage.FieldAccessorTable internalGetFieldAccessorTable() { - return org.xtreemfs.pbrpc.generatedinterfaces.MRC.internal_static_xtreemfs_pbrpc_xtreemfs_replica_listRequest_fieldAccessorTable; + return org.xtreemfs.pbrpc.generatedinterfaces.MRC.internal_static_xtreemfs_pbrpc_xtreemfs_replica_listRequest_fieldAccessorTable + .ensureFieldAccessorsInitialized( + org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_replica_listRequest.class, org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_replica_listRequest.Builder.class); + } + + public static com.google.protobuf.Parser PARSER = + new com.google.protobuf.AbstractParser() { + public xtreemfs_replica_listRequest parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return new xtreemfs_replica_listRequest(input, extensionRegistry); + } + }; + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; } - + + private int bitField0_; // optional string file_id = 1; public static final int FILE_ID_FIELD_NUMBER = 1; - private boolean hasFileId; - private java.lang.String fileId_ = ""; - public boolean hasFileId() { return hasFileId; } - public java.lang.String getFileId() { return fileId_; } - + private java.lang.Object fileId_; + /** + * optional string file_id = 1; + * + *
+     * the file ID
+     * 
+ */ + public boolean hasFileId() { + return ((bitField0_ & 0x00000001) == 0x00000001); + } + /** + * optional string file_id = 1; + * + *
+     * the file ID
+     * 
+ */ + public java.lang.String getFileId() { + java.lang.Object ref = fileId_; + if (ref instanceof java.lang.String) { + return (java.lang.String) ref; + } else { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + if (bs.isValidUtf8()) { + fileId_ = s; + } + return s; + } + } + /** + * optional string file_id = 1; + * + *
+     * the file ID
+     * 
+ */ + public com.google.protobuf.ByteString + getFileIdBytes() { + java.lang.Object ref = fileId_; + if (ref instanceof java.lang.String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + fileId_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + // optional string path = 2; public static final int PATH_FIELD_NUMBER = 2; - private boolean hasPath; - private java.lang.String path_ = ""; - public boolean hasPath() { return hasPath; } - public java.lang.String getPath() { return path_; } - + private java.lang.Object path_; + /** + * optional string path = 2; + * + *
+     * or path and volume_name to file.
+     * 
+ */ + public boolean hasPath() { + return ((bitField0_ & 0x00000002) == 0x00000002); + } + /** + * optional string path = 2; + * + *
+     * or path and volume_name to file.
+     * 
+ */ + public java.lang.String getPath() { + java.lang.Object ref = path_; + if (ref instanceof java.lang.String) { + return (java.lang.String) ref; + } else { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + if (bs.isValidUtf8()) { + path_ = s; + } + return s; + } + } + /** + * optional string path = 2; + * + *
+     * or path and volume_name to file.
+     * 
+ */ + public com.google.protobuf.ByteString + getPathBytes() { + java.lang.Object ref = path_; + if (ref instanceof java.lang.String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + path_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + // optional string volume_name = 3; public static final int VOLUME_NAME_FIELD_NUMBER = 3; - private boolean hasVolumeName; - private java.lang.String volumeName_ = ""; - public boolean hasVolumeName() { return hasVolumeName; } - public java.lang.String getVolumeName() { return volumeName_; } - + private java.lang.Object volumeName_; + /** + * optional string volume_name = 3; + */ + public boolean hasVolumeName() { + return ((bitField0_ & 0x00000004) == 0x00000004); + } + /** + * optional string volume_name = 3; + */ + public java.lang.String getVolumeName() { + java.lang.Object ref = volumeName_; + if (ref instanceof java.lang.String) { + return (java.lang.String) ref; + } else { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + if (bs.isValidUtf8()) { + volumeName_ = s; + } + return s; + } + } + /** + * optional string volume_name = 3; + */ + public com.google.protobuf.ByteString + getVolumeNameBytes() { + java.lang.Object ref = volumeName_; + if (ref instanceof java.lang.String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + volumeName_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + private void initFields() { + fileId_ = ""; + path_ = ""; + volumeName_ = ""; } + private byte memoizedIsInitialized = -1; public final boolean isInitialized() { + byte isInitialized = memoizedIsInitialized; + if (isInitialized != -1) return isInitialized == 1; + + memoizedIsInitialized = 1; return true; } - + public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException { getSerializedSize(); - if (hasFileId()) { - output.writeString(1, getFileId()); + if (((bitField0_ & 0x00000001) == 0x00000001)) { + output.writeBytes(1, getFileIdBytes()); } - if (hasPath()) { - output.writeString(2, getPath()); + if (((bitField0_ & 0x00000002) == 0x00000002)) { + output.writeBytes(2, getPathBytes()); } - if (hasVolumeName()) { - output.writeString(3, getVolumeName()); + if (((bitField0_ & 0x00000004) == 0x00000004)) { + output.writeBytes(3, getVolumeNameBytes()); } getUnknownFields().writeTo(output); } - + private int memoizedSerializedSize = -1; public int getSerializedSize() { int size = memoizedSerializedSize; if (size != -1) return size; - + size = 0; - if (hasFileId()) { + if (((bitField0_ & 0x00000001) == 0x00000001)) { size += com.google.protobuf.CodedOutputStream - .computeStringSize(1, getFileId()); + .computeBytesSize(1, getFileIdBytes()); } - if (hasPath()) { + if (((bitField0_ & 0x00000002) == 0x00000002)) { size += com.google.protobuf.CodedOutputStream - .computeStringSize(2, getPath()); + .computeBytesSize(2, getPathBytes()); } - if (hasVolumeName()) { + if (((bitField0_ & 0x00000004) == 0x00000004)) { size += com.google.protobuf.CodedOutputStream - .computeStringSize(3, getVolumeName()); + .computeBytesSize(3, getVolumeNameBytes()); } size += getUnknownFields().getSerializedSize(); memoizedSerializedSize = size; return size; } - + + private static final long serialVersionUID = 0L; + @java.lang.Override + protected java.lang.Object writeReplace() + throws java.io.ObjectStreamException { + return super.writeReplace(); + } + public static org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_replica_listRequest parseFrom( com.google.protobuf.ByteString data) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data).buildParsed(); + return PARSER.parseFrom(data); } public static org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_replica_listRequest parseFrom( com.google.protobuf.ByteString data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(data, extensionRegistry); } public static org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_replica_listRequest parseFrom(byte[] data) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data).buildParsed(); + return PARSER.parseFrom(data); } public static org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_replica_listRequest parseFrom( byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(data, extensionRegistry); } public static org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_replica_listRequest parseFrom(java.io.InputStream input) throws java.io.IOException { - return newBuilder().mergeFrom(input).buildParsed(); + return PARSER.parseFrom(input); } public static org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_replica_listRequest parseFrom( java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - return newBuilder().mergeFrom(input, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(input, extensionRegistry); } public static org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_replica_listRequest parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException { - Builder builder = newBuilder(); - if (builder.mergeDelimitedFrom(input)) { - return builder.buildParsed(); - } else { - return null; - } + return PARSER.parseDelimitedFrom(input); } public static org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_replica_listRequest parseDelimitedFrom( java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - Builder builder = newBuilder(); - if (builder.mergeDelimitedFrom(input, extensionRegistry)) { - return builder.buildParsed(); - } else { - return null; - } + return PARSER.parseDelimitedFrom(input, extensionRegistry); } public static org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_replica_listRequest parseFrom( com.google.protobuf.CodedInputStream input) throws java.io.IOException { - return newBuilder().mergeFrom(input).buildParsed(); + return PARSER.parseFrom(input); } public static org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_replica_listRequest parseFrom( com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - return newBuilder().mergeFrom(input, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(input, extensionRegistry); } - + public static Builder newBuilder() { return Builder.create(); } public Builder newBuilderForType() { return newBuilder(); } public static Builder newBuilder(org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_replica_listRequest prototype) { return newBuilder().mergeFrom(prototype); } public Builder toBuilder() { return newBuilder(this); } - + + @java.lang.Override + protected Builder newBuilderForType( + com.google.protobuf.GeneratedMessage.BuilderParent parent) { + Builder builder = new Builder(parent); + return builder; + } + /** + * Protobuf type {@code xtreemfs.pbrpc.xtreemfs_replica_listRequest} + * + *
+     * requests a list of all replicas of a file
+     * 
+ */ public static final class Builder extends - com.google.protobuf.GeneratedMessage.Builder { - private org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_replica_listRequest result; - + com.google.protobuf.GeneratedMessage.Builder + implements org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_replica_listRequestOrBuilder { + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return org.xtreemfs.pbrpc.generatedinterfaces.MRC.internal_static_xtreemfs_pbrpc_xtreemfs_replica_listRequest_descriptor; + } + + protected com.google.protobuf.GeneratedMessage.FieldAccessorTable + internalGetFieldAccessorTable() { + return org.xtreemfs.pbrpc.generatedinterfaces.MRC.internal_static_xtreemfs_pbrpc_xtreemfs_replica_listRequest_fieldAccessorTable + .ensureFieldAccessorsInitialized( + org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_replica_listRequest.class, org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_replica_listRequest.Builder.class); + } + // Construct using org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_replica_listRequest.newBuilder() - private Builder() {} - - private static Builder create() { - Builder builder = new Builder(); - builder.result = new org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_replica_listRequest(); - return builder; + private Builder() { + maybeForceBuilderInitialization(); } - - protected org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_replica_listRequest internalGetResult() { - return result; + + private Builder( + com.google.protobuf.GeneratedMessage.BuilderParent parent) { + super(parent); + maybeForceBuilderInitialization(); } - - public Builder clear() { - if (result == null) { - throw new IllegalStateException( - "Cannot call clear() after build()."); + private void maybeForceBuilderInitialization() { + if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) { } - result = new org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_replica_listRequest(); + } + private static Builder create() { + return new Builder(); + } + + public Builder clear() { + super.clear(); + fileId_ = ""; + bitField0_ = (bitField0_ & ~0x00000001); + path_ = ""; + bitField0_ = (bitField0_ & ~0x00000002); + volumeName_ = ""; + bitField0_ = (bitField0_ & ~0x00000004); return this; } - + public Builder clone() { - return create().mergeFrom(result); + return create().mergeFrom(buildPartial()); } - + public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() { - return org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_replica_listRequest.getDescriptor(); + return org.xtreemfs.pbrpc.generatedinterfaces.MRC.internal_static_xtreemfs_pbrpc_xtreemfs_replica_listRequest_descriptor; } - + public org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_replica_listRequest getDefaultInstanceForType() { return org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_replica_listRequest.getDefaultInstance(); } - - public boolean isInitialized() { - return result.isInitialized(); - } + public org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_replica_listRequest build() { - if (result != null && !isInitialized()) { + org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_replica_listRequest result = buildPartial(); + if (!result.isInitialized()) { throw newUninitializedMessageException(result); } - return buildPartial(); - } - - private org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_replica_listRequest buildParsed() - throws com.google.protobuf.InvalidProtocolBufferException { - if (!isInitialized()) { - throw newUninitializedMessageException( - result).asInvalidProtocolBufferException(); - } - return buildPartial(); + return result; } - + public org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_replica_listRequest buildPartial() { - if (result == null) { - throw new IllegalStateException( - "build() has already been called on this Builder."); - } - org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_replica_listRequest returnMe = result; - result = null; - return returnMe; + org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_replica_listRequest result = new org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_replica_listRequest(this); + int from_bitField0_ = bitField0_; + int to_bitField0_ = 0; + if (((from_bitField0_ & 0x00000001) == 0x00000001)) { + to_bitField0_ |= 0x00000001; + } + result.fileId_ = fileId_; + if (((from_bitField0_ & 0x00000002) == 0x00000002)) { + to_bitField0_ |= 0x00000002; + } + result.path_ = path_; + if (((from_bitField0_ & 0x00000004) == 0x00000004)) { + to_bitField0_ |= 0x00000004; + } + result.volumeName_ = volumeName_; + result.bitField0_ = to_bitField0_; + onBuilt(); + return result; } - + public Builder mergeFrom(com.google.protobuf.Message other) { if (other instanceof org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_replica_listRequest) { return mergeFrom((org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_replica_listRequest)other); @@ -16876,384 +39063,990 @@ public final class MRC { return this; } } - + public Builder mergeFrom(org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_replica_listRequest other) { if (other == org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_replica_listRequest.getDefaultInstance()) return this; if (other.hasFileId()) { - setFileId(other.getFileId()); + bitField0_ |= 0x00000001; + fileId_ = other.fileId_; + onChanged(); } if (other.hasPath()) { - setPath(other.getPath()); + bitField0_ |= 0x00000002; + path_ = other.path_; + onChanged(); } if (other.hasVolumeName()) { - setVolumeName(other.getVolumeName()); + bitField0_ |= 0x00000004; + volumeName_ = other.volumeName_; + onChanged(); } this.mergeUnknownFields(other.getUnknownFields()); return this; } - + + public final boolean isInitialized() { + return true; + } + public Builder mergeFrom( com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - com.google.protobuf.UnknownFieldSet.Builder unknownFields = - com.google.protobuf.UnknownFieldSet.newBuilder( - this.getUnknownFields()); - while (true) { - int tag = input.readTag(); - switch (tag) { - case 0: - this.setUnknownFields(unknownFields.build()); - return this; - default: { - if (!parseUnknownField(input, unknownFields, - extensionRegistry, tag)) { - this.setUnknownFields(unknownFields.build()); - return this; - } - break; - } - case 10: { - setFileId(input.readString()); - break; - } - case 18: { - setPath(input.readString()); - break; - } - case 26: { - setVolumeName(input.readString()); - break; - } + org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_replica_listRequest parsedMessage = null; + try { + parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + parsedMessage = (org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_replica_listRequest) e.getUnfinishedMessage(); + throw e; + } finally { + if (parsedMessage != null) { + mergeFrom(parsedMessage); } } + return this; } - - + private int bitField0_; + // optional string file_id = 1; + private java.lang.Object fileId_ = ""; + /** + * optional string file_id = 1; + * + *
+       * the file ID
+       * 
+ */ public boolean hasFileId() { - return result.hasFileId(); - } + return ((bitField0_ & 0x00000001) == 0x00000001); + } + /** + * optional string file_id = 1; + * + *
+       * the file ID
+       * 
+ */ public java.lang.String getFileId() { - return result.getFileId(); - } - public Builder setFileId(java.lang.String value) { + java.lang.Object ref = fileId_; + if (!(ref instanceof java.lang.String)) { + java.lang.String s = ((com.google.protobuf.ByteString) ref) + .toStringUtf8(); + fileId_ = s; + return s; + } else { + return (java.lang.String) ref; + } + } + /** + * optional string file_id = 1; + * + *
+       * the file ID
+       * 
+ */ + public com.google.protobuf.ByteString + getFileIdBytes() { + java.lang.Object ref = fileId_; + if (ref instanceof String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + fileId_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + /** + * optional string file_id = 1; + * + *
+       * the file ID
+       * 
+ */ + public Builder setFileId( + java.lang.String value) { if (value == null) { throw new NullPointerException(); } - result.hasFileId = true; - result.fileId_ = value; - return this; - } + bitField0_ |= 0x00000001; + fileId_ = value; + onChanged(); + return this; + } + /** + * optional string file_id = 1; + * + *
+       * the file ID
+       * 
+ */ public Builder clearFileId() { - result.hasFileId = false; - result.fileId_ = getDefaultInstance().getFileId(); + bitField0_ = (bitField0_ & ~0x00000001); + fileId_ = getDefaultInstance().getFileId(); + onChanged(); + return this; + } + /** + * optional string file_id = 1; + * + *
+       * the file ID
+       * 
+ */ + public Builder setFileIdBytes( + com.google.protobuf.ByteString value) { + if (value == null) { + throw new NullPointerException(); + } + bitField0_ |= 0x00000001; + fileId_ = value; + onChanged(); return this; } - + // optional string path = 2; + private java.lang.Object path_ = ""; + /** + * optional string path = 2; + * + *
+       * or path and volume_name to file.
+       * 
+ */ public boolean hasPath() { - return result.hasPath(); - } + return ((bitField0_ & 0x00000002) == 0x00000002); + } + /** + * optional string path = 2; + * + *
+       * or path and volume_name to file.
+       * 
+ */ public java.lang.String getPath() { - return result.getPath(); - } - public Builder setPath(java.lang.String value) { + java.lang.Object ref = path_; + if (!(ref instanceof java.lang.String)) { + java.lang.String s = ((com.google.protobuf.ByteString) ref) + .toStringUtf8(); + path_ = s; + return s; + } else { + return (java.lang.String) ref; + } + } + /** + * optional string path = 2; + * + *
+       * or path and volume_name to file.
+       * 
+ */ + public com.google.protobuf.ByteString + getPathBytes() { + java.lang.Object ref = path_; + if (ref instanceof String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + path_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + /** + * optional string path = 2; + * + *
+       * or path and volume_name to file.
+       * 
+ */ + public Builder setPath( + java.lang.String value) { if (value == null) { throw new NullPointerException(); } - result.hasPath = true; - result.path_ = value; - return this; - } + bitField0_ |= 0x00000002; + path_ = value; + onChanged(); + return this; + } + /** + * optional string path = 2; + * + *
+       * or path and volume_name to file.
+       * 
+ */ public Builder clearPath() { - result.hasPath = false; - result.path_ = getDefaultInstance().getPath(); + bitField0_ = (bitField0_ & ~0x00000002); + path_ = getDefaultInstance().getPath(); + onChanged(); + return this; + } + /** + * optional string path = 2; + * + *
+       * or path and volume_name to file.
+       * 
+ */ + public Builder setPathBytes( + com.google.protobuf.ByteString value) { + if (value == null) { + throw new NullPointerException(); + } + bitField0_ |= 0x00000002; + path_ = value; + onChanged(); return this; } - + // optional string volume_name = 3; + private java.lang.Object volumeName_ = ""; + /** + * optional string volume_name = 3; + */ public boolean hasVolumeName() { - return result.hasVolumeName(); + return ((bitField0_ & 0x00000004) == 0x00000004); } + /** + * optional string volume_name = 3; + */ public java.lang.String getVolumeName() { - return result.getVolumeName(); + java.lang.Object ref = volumeName_; + if (!(ref instanceof java.lang.String)) { + java.lang.String s = ((com.google.protobuf.ByteString) ref) + .toStringUtf8(); + volumeName_ = s; + return s; + } else { + return (java.lang.String) ref; + } + } + /** + * optional string volume_name = 3; + */ + public com.google.protobuf.ByteString + getVolumeNameBytes() { + java.lang.Object ref = volumeName_; + if (ref instanceof String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + volumeName_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } } - public Builder setVolumeName(java.lang.String value) { + /** + * optional string volume_name = 3; + */ + public Builder setVolumeName( + java.lang.String value) { if (value == null) { throw new NullPointerException(); } - result.hasVolumeName = true; - result.volumeName_ = value; + bitField0_ |= 0x00000004; + volumeName_ = value; + onChanged(); return this; } + /** + * optional string volume_name = 3; + */ public Builder clearVolumeName() { - result.hasVolumeName = false; - result.volumeName_ = getDefaultInstance().getVolumeName(); + bitField0_ = (bitField0_ & ~0x00000004); + volumeName_ = getDefaultInstance().getVolumeName(); + onChanged(); + return this; + } + /** + * optional string volume_name = 3; + */ + public Builder setVolumeNameBytes( + com.google.protobuf.ByteString value) { + if (value == null) { + throw new NullPointerException(); + } + bitField0_ |= 0x00000004; + volumeName_ = value; + onChanged(); return this; } - + // @@protoc_insertion_point(builder_scope:xtreemfs.pbrpc.xtreemfs_replica_listRequest) } - + static { defaultInstance = new xtreemfs_replica_listRequest(true); - org.xtreemfs.pbrpc.generatedinterfaces.MRC.internalForceInit(); defaultInstance.initFields(); } - + // @@protoc_insertion_point(class_scope:xtreemfs.pbrpc.xtreemfs_replica_listRequest) } - + + public interface xtreemfs_replica_removeRequestOrBuilder + extends com.google.protobuf.MessageOrBuilder { + + // optional string file_id = 1; + /** + * optional string file_id = 1; + * + *
+     * the file ID
+     * 
+ */ + boolean hasFileId(); + /** + * optional string file_id = 1; + * + *
+     * the file ID
+     * 
+ */ + java.lang.String getFileId(); + /** + * optional string file_id = 1; + * + *
+     * the file ID
+     * 
+ */ + com.google.protobuf.ByteString + getFileIdBytes(); + + // optional string path = 3; + /** + * optional string path = 3; + * + *
+     * or path and volume_name to file.
+     * 
+ */ + boolean hasPath(); + /** + * optional string path = 3; + * + *
+     * or path and volume_name to file.
+     * 
+ */ + java.lang.String getPath(); + /** + * optional string path = 3; + * + *
+     * or path and volume_name to file.
+     * 
+ */ + com.google.protobuf.ByteString + getPathBytes(); + + // optional string volume_name = 4; + /** + * optional string volume_name = 4; + */ + boolean hasVolumeName(); + /** + * optional string volume_name = 4; + */ + java.lang.String getVolumeName(); + /** + * optional string volume_name = 4; + */ + com.google.protobuf.ByteString + getVolumeNameBytes(); + + // required string osd_uuid = 2; + /** + * required string osd_uuid = 2; + * + *
+     * the UUID of the head OSD of the replica to remove
+     * 
+ */ + boolean hasOsdUuid(); + /** + * required string osd_uuid = 2; + * + *
+     * the UUID of the head OSD of the replica to remove
+     * 
+ */ + java.lang.String getOsdUuid(); + /** + * required string osd_uuid = 2; + * + *
+     * the UUID of the head OSD of the replica to remove
+     * 
+ */ + com.google.protobuf.ByteString + getOsdUuidBytes(); + } + /** + * Protobuf type {@code xtreemfs.pbrpc.xtreemfs_replica_removeRequest} + * + *
+   * removes a replica from a file
+   * 
+ */ public static final class xtreemfs_replica_removeRequest extends - com.google.protobuf.GeneratedMessage { + com.google.protobuf.GeneratedMessage + implements xtreemfs_replica_removeRequestOrBuilder { // Use xtreemfs_replica_removeRequest.newBuilder() to construct. - private xtreemfs_replica_removeRequest() { - initFields(); + private xtreemfs_replica_removeRequest(com.google.protobuf.GeneratedMessage.Builder builder) { + super(builder); + this.unknownFields = builder.getUnknownFields(); } - private xtreemfs_replica_removeRequest(boolean noInit) {} - + private xtreemfs_replica_removeRequest(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); } + private static final xtreemfs_replica_removeRequest defaultInstance; public static xtreemfs_replica_removeRequest getDefaultInstance() { return defaultInstance; } - + public xtreemfs_replica_removeRequest getDefaultInstanceForType() { return defaultInstance; } - + + private final com.google.protobuf.UnknownFieldSet unknownFields; + @java.lang.Override + public final com.google.protobuf.UnknownFieldSet + getUnknownFields() { + return this.unknownFields; + } + private xtreemfs_replica_removeRequest( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + initFields(); + int mutable_bitField0_ = 0; + com.google.protobuf.UnknownFieldSet.Builder unknownFields = + com.google.protobuf.UnknownFieldSet.newBuilder(); + try { + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch (tag) { + case 0: + done = true; + break; + default: { + if (!parseUnknownField(input, unknownFields, + extensionRegistry, tag)) { + done = true; + } + break; + } + case 10: { + bitField0_ |= 0x00000001; + fileId_ = input.readBytes(); + break; + } + case 18: { + bitField0_ |= 0x00000008; + osdUuid_ = input.readBytes(); + break; + } + case 26: { + bitField0_ |= 0x00000002; + path_ = input.readBytes(); + break; + } + case 34: { + bitField0_ |= 0x00000004; + volumeName_ = input.readBytes(); + break; + } + } + } + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(this); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException( + e.getMessage()).setUnfinishedMessage(this); + } finally { + this.unknownFields = unknownFields.build(); + makeExtensionsImmutable(); + } + } public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { return org.xtreemfs.pbrpc.generatedinterfaces.MRC.internal_static_xtreemfs_pbrpc_xtreemfs_replica_removeRequest_descriptor; } - + protected com.google.protobuf.GeneratedMessage.FieldAccessorTable internalGetFieldAccessorTable() { - return org.xtreemfs.pbrpc.generatedinterfaces.MRC.internal_static_xtreemfs_pbrpc_xtreemfs_replica_removeRequest_fieldAccessorTable; + return org.xtreemfs.pbrpc.generatedinterfaces.MRC.internal_static_xtreemfs_pbrpc_xtreemfs_replica_removeRequest_fieldAccessorTable + .ensureFieldAccessorsInitialized( + org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_replica_removeRequest.class, org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_replica_removeRequest.Builder.class); + } + + public static com.google.protobuf.Parser PARSER = + new com.google.protobuf.AbstractParser() { + public xtreemfs_replica_removeRequest parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return new xtreemfs_replica_removeRequest(input, extensionRegistry); + } + }; + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; } - + + private int bitField0_; // optional string file_id = 1; public static final int FILE_ID_FIELD_NUMBER = 1; - private boolean hasFileId; - private java.lang.String fileId_ = ""; - public boolean hasFileId() { return hasFileId; } - public java.lang.String getFileId() { return fileId_; } - + private java.lang.Object fileId_; + /** + * optional string file_id = 1; + * + *
+     * the file ID
+     * 
+ */ + public boolean hasFileId() { + return ((bitField0_ & 0x00000001) == 0x00000001); + } + /** + * optional string file_id = 1; + * + *
+     * the file ID
+     * 
+ */ + public java.lang.String getFileId() { + java.lang.Object ref = fileId_; + if (ref instanceof java.lang.String) { + return (java.lang.String) ref; + } else { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + if (bs.isValidUtf8()) { + fileId_ = s; + } + return s; + } + } + /** + * optional string file_id = 1; + * + *
+     * the file ID
+     * 
+ */ + public com.google.protobuf.ByteString + getFileIdBytes() { + java.lang.Object ref = fileId_; + if (ref instanceof java.lang.String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + fileId_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + // optional string path = 3; public static final int PATH_FIELD_NUMBER = 3; - private boolean hasPath; - private java.lang.String path_ = ""; - public boolean hasPath() { return hasPath; } - public java.lang.String getPath() { return path_; } - + private java.lang.Object path_; + /** + * optional string path = 3; + * + *
+     * or path and volume_name to file.
+     * 
+ */ + public boolean hasPath() { + return ((bitField0_ & 0x00000002) == 0x00000002); + } + /** + * optional string path = 3; + * + *
+     * or path and volume_name to file.
+     * 
+ */ + public java.lang.String getPath() { + java.lang.Object ref = path_; + if (ref instanceof java.lang.String) { + return (java.lang.String) ref; + } else { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + if (bs.isValidUtf8()) { + path_ = s; + } + return s; + } + } + /** + * optional string path = 3; + * + *
+     * or path and volume_name to file.
+     * 
+ */ + public com.google.protobuf.ByteString + getPathBytes() { + java.lang.Object ref = path_; + if (ref instanceof java.lang.String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + path_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + // optional string volume_name = 4; public static final int VOLUME_NAME_FIELD_NUMBER = 4; - private boolean hasVolumeName; - private java.lang.String volumeName_ = ""; - public boolean hasVolumeName() { return hasVolumeName; } - public java.lang.String getVolumeName() { return volumeName_; } - + private java.lang.Object volumeName_; + /** + * optional string volume_name = 4; + */ + public boolean hasVolumeName() { + return ((bitField0_ & 0x00000004) == 0x00000004); + } + /** + * optional string volume_name = 4; + */ + public java.lang.String getVolumeName() { + java.lang.Object ref = volumeName_; + if (ref instanceof java.lang.String) { + return (java.lang.String) ref; + } else { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + if (bs.isValidUtf8()) { + volumeName_ = s; + } + return s; + } + } + /** + * optional string volume_name = 4; + */ + public com.google.protobuf.ByteString + getVolumeNameBytes() { + java.lang.Object ref = volumeName_; + if (ref instanceof java.lang.String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + volumeName_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + // required string osd_uuid = 2; public static final int OSD_UUID_FIELD_NUMBER = 2; - private boolean hasOsdUuid; - private java.lang.String osdUuid_ = ""; - public boolean hasOsdUuid() { return hasOsdUuid; } - public java.lang.String getOsdUuid() { return osdUuid_; } - + private java.lang.Object osdUuid_; + /** + * required string osd_uuid = 2; + * + *
+     * the UUID of the head OSD of the replica to remove
+     * 
+ */ + public boolean hasOsdUuid() { + return ((bitField0_ & 0x00000008) == 0x00000008); + } + /** + * required string osd_uuid = 2; + * + *
+     * the UUID of the head OSD of the replica to remove
+     * 
+ */ + public java.lang.String getOsdUuid() { + java.lang.Object ref = osdUuid_; + if (ref instanceof java.lang.String) { + return (java.lang.String) ref; + } else { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + if (bs.isValidUtf8()) { + osdUuid_ = s; + } + return s; + } + } + /** + * required string osd_uuid = 2; + * + *
+     * the UUID of the head OSD of the replica to remove
+     * 
+ */ + public com.google.protobuf.ByteString + getOsdUuidBytes() { + java.lang.Object ref = osdUuid_; + if (ref instanceof java.lang.String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + osdUuid_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + private void initFields() { + fileId_ = ""; + path_ = ""; + volumeName_ = ""; + osdUuid_ = ""; } + private byte memoizedIsInitialized = -1; public final boolean isInitialized() { - if (!hasOsdUuid) return false; + byte isInitialized = memoizedIsInitialized; + if (isInitialized != -1) return isInitialized == 1; + + if (!hasOsdUuid()) { + memoizedIsInitialized = 0; + return false; + } + memoizedIsInitialized = 1; return true; } - + public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException { getSerializedSize(); - if (hasFileId()) { - output.writeString(1, getFileId()); + if (((bitField0_ & 0x00000001) == 0x00000001)) { + output.writeBytes(1, getFileIdBytes()); } - if (hasOsdUuid()) { - output.writeString(2, getOsdUuid()); + if (((bitField0_ & 0x00000008) == 0x00000008)) { + output.writeBytes(2, getOsdUuidBytes()); } - if (hasPath()) { - output.writeString(3, getPath()); + if (((bitField0_ & 0x00000002) == 0x00000002)) { + output.writeBytes(3, getPathBytes()); } - if (hasVolumeName()) { - output.writeString(4, getVolumeName()); + if (((bitField0_ & 0x00000004) == 0x00000004)) { + output.writeBytes(4, getVolumeNameBytes()); } getUnknownFields().writeTo(output); } - + private int memoizedSerializedSize = -1; public int getSerializedSize() { int size = memoizedSerializedSize; if (size != -1) return size; - + size = 0; - if (hasFileId()) { + if (((bitField0_ & 0x00000001) == 0x00000001)) { size += com.google.protobuf.CodedOutputStream - .computeStringSize(1, getFileId()); + .computeBytesSize(1, getFileIdBytes()); } - if (hasOsdUuid()) { + if (((bitField0_ & 0x00000008) == 0x00000008)) { size += com.google.protobuf.CodedOutputStream - .computeStringSize(2, getOsdUuid()); + .computeBytesSize(2, getOsdUuidBytes()); } - if (hasPath()) { + if (((bitField0_ & 0x00000002) == 0x00000002)) { size += com.google.protobuf.CodedOutputStream - .computeStringSize(3, getPath()); + .computeBytesSize(3, getPathBytes()); } - if (hasVolumeName()) { + if (((bitField0_ & 0x00000004) == 0x00000004)) { size += com.google.protobuf.CodedOutputStream - .computeStringSize(4, getVolumeName()); + .computeBytesSize(4, getVolumeNameBytes()); } size += getUnknownFields().getSerializedSize(); memoizedSerializedSize = size; return size; } - + + private static final long serialVersionUID = 0L; + @java.lang.Override + protected java.lang.Object writeReplace() + throws java.io.ObjectStreamException { + return super.writeReplace(); + } + public static org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_replica_removeRequest parseFrom( com.google.protobuf.ByteString data) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data).buildParsed(); + return PARSER.parseFrom(data); } public static org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_replica_removeRequest parseFrom( com.google.protobuf.ByteString data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(data, extensionRegistry); } public static org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_replica_removeRequest parseFrom(byte[] data) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data).buildParsed(); + return PARSER.parseFrom(data); } public static org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_replica_removeRequest parseFrom( byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(data, extensionRegistry); } public static org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_replica_removeRequest parseFrom(java.io.InputStream input) throws java.io.IOException { - return newBuilder().mergeFrom(input).buildParsed(); + return PARSER.parseFrom(input); } public static org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_replica_removeRequest parseFrom( java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - return newBuilder().mergeFrom(input, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(input, extensionRegistry); } public static org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_replica_removeRequest parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException { - Builder builder = newBuilder(); - if (builder.mergeDelimitedFrom(input)) { - return builder.buildParsed(); - } else { - return null; - } + return PARSER.parseDelimitedFrom(input); } public static org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_replica_removeRequest parseDelimitedFrom( java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - Builder builder = newBuilder(); - if (builder.mergeDelimitedFrom(input, extensionRegistry)) { - return builder.buildParsed(); - } else { - return null; - } + return PARSER.parseDelimitedFrom(input, extensionRegistry); } public static org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_replica_removeRequest parseFrom( com.google.protobuf.CodedInputStream input) throws java.io.IOException { - return newBuilder().mergeFrom(input).buildParsed(); + return PARSER.parseFrom(input); } public static org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_replica_removeRequest parseFrom( com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - return newBuilder().mergeFrom(input, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(input, extensionRegistry); } - + public static Builder newBuilder() { return Builder.create(); } public Builder newBuilderForType() { return newBuilder(); } public static Builder newBuilder(org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_replica_removeRequest prototype) { return newBuilder().mergeFrom(prototype); } public Builder toBuilder() { return newBuilder(this); } - + + @java.lang.Override + protected Builder newBuilderForType( + com.google.protobuf.GeneratedMessage.BuilderParent parent) { + Builder builder = new Builder(parent); + return builder; + } + /** + * Protobuf type {@code xtreemfs.pbrpc.xtreemfs_replica_removeRequest} + * + *
+     * removes a replica from a file
+     * 
+ */ public static final class Builder extends - com.google.protobuf.GeneratedMessage.Builder { - private org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_replica_removeRequest result; - + com.google.protobuf.GeneratedMessage.Builder + implements org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_replica_removeRequestOrBuilder { + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return org.xtreemfs.pbrpc.generatedinterfaces.MRC.internal_static_xtreemfs_pbrpc_xtreemfs_replica_removeRequest_descriptor; + } + + protected com.google.protobuf.GeneratedMessage.FieldAccessorTable + internalGetFieldAccessorTable() { + return org.xtreemfs.pbrpc.generatedinterfaces.MRC.internal_static_xtreemfs_pbrpc_xtreemfs_replica_removeRequest_fieldAccessorTable + .ensureFieldAccessorsInitialized( + org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_replica_removeRequest.class, org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_replica_removeRequest.Builder.class); + } + // Construct using org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_replica_removeRequest.newBuilder() - private Builder() {} - - private static Builder create() { - Builder builder = new Builder(); - builder.result = new org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_replica_removeRequest(); - return builder; + private Builder() { + maybeForceBuilderInitialization(); } - - protected org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_replica_removeRequest internalGetResult() { - return result; + + private Builder( + com.google.protobuf.GeneratedMessage.BuilderParent parent) { + super(parent); + maybeForceBuilderInitialization(); } - - public Builder clear() { - if (result == null) { - throw new IllegalStateException( - "Cannot call clear() after build()."); + private void maybeForceBuilderInitialization() { + if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) { } - result = new org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_replica_removeRequest(); + } + private static Builder create() { + return new Builder(); + } + + public Builder clear() { + super.clear(); + fileId_ = ""; + bitField0_ = (bitField0_ & ~0x00000001); + path_ = ""; + bitField0_ = (bitField0_ & ~0x00000002); + volumeName_ = ""; + bitField0_ = (bitField0_ & ~0x00000004); + osdUuid_ = ""; + bitField0_ = (bitField0_ & ~0x00000008); return this; } - + public Builder clone() { - return create().mergeFrom(result); + return create().mergeFrom(buildPartial()); } - + public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() { - return org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_replica_removeRequest.getDescriptor(); + return org.xtreemfs.pbrpc.generatedinterfaces.MRC.internal_static_xtreemfs_pbrpc_xtreemfs_replica_removeRequest_descriptor; } - + public org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_replica_removeRequest getDefaultInstanceForType() { return org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_replica_removeRequest.getDefaultInstance(); } - - public boolean isInitialized() { - return result.isInitialized(); - } + public org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_replica_removeRequest build() { - if (result != null && !isInitialized()) { + org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_replica_removeRequest result = buildPartial(); + if (!result.isInitialized()) { throw newUninitializedMessageException(result); } - return buildPartial(); - } - - private org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_replica_removeRequest buildParsed() - throws com.google.protobuf.InvalidProtocolBufferException { - if (!isInitialized()) { - throw newUninitializedMessageException( - result).asInvalidProtocolBufferException(); - } - return buildPartial(); + return result; } - + public org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_replica_removeRequest buildPartial() { - if (result == null) { - throw new IllegalStateException( - "build() has already been called on this Builder."); - } - org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_replica_removeRequest returnMe = result; - result = null; - return returnMe; + org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_replica_removeRequest result = new org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_replica_removeRequest(this); + int from_bitField0_ = bitField0_; + int to_bitField0_ = 0; + if (((from_bitField0_ & 0x00000001) == 0x00000001)) { + to_bitField0_ |= 0x00000001; + } + result.fileId_ = fileId_; + if (((from_bitField0_ & 0x00000002) == 0x00000002)) { + to_bitField0_ |= 0x00000002; + } + result.path_ = path_; + if (((from_bitField0_ & 0x00000004) == 0x00000004)) { + to_bitField0_ |= 0x00000004; + } + result.volumeName_ = volumeName_; + if (((from_bitField0_ & 0x00000008) == 0x00000008)) { + to_bitField0_ |= 0x00000008; + } + result.osdUuid_ = osdUuid_; + result.bitField0_ = to_bitField0_; + onBuilt(); + return result; } - + public Builder mergeFrom(com.google.protobuf.Message other) { if (other instanceof org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_replica_removeRequest) { return mergeFrom((org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_replica_removeRequest)other); @@ -17262,430 +40055,1158 @@ public final class MRC { return this; } } - + public Builder mergeFrom(org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_replica_removeRequest other) { if (other == org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_replica_removeRequest.getDefaultInstance()) return this; if (other.hasFileId()) { - setFileId(other.getFileId()); + bitField0_ |= 0x00000001; + fileId_ = other.fileId_; + onChanged(); } if (other.hasPath()) { - setPath(other.getPath()); + bitField0_ |= 0x00000002; + path_ = other.path_; + onChanged(); } if (other.hasVolumeName()) { - setVolumeName(other.getVolumeName()); + bitField0_ |= 0x00000004; + volumeName_ = other.volumeName_; + onChanged(); } if (other.hasOsdUuid()) { - setOsdUuid(other.getOsdUuid()); + bitField0_ |= 0x00000008; + osdUuid_ = other.osdUuid_; + onChanged(); } this.mergeUnknownFields(other.getUnknownFields()); return this; } - + + public final boolean isInitialized() { + if (!hasOsdUuid()) { + + return false; + } + return true; + } + public Builder mergeFrom( com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - com.google.protobuf.UnknownFieldSet.Builder unknownFields = - com.google.protobuf.UnknownFieldSet.newBuilder( - this.getUnknownFields()); - while (true) { - int tag = input.readTag(); - switch (tag) { - case 0: - this.setUnknownFields(unknownFields.build()); - return this; - default: { - if (!parseUnknownField(input, unknownFields, - extensionRegistry, tag)) { - this.setUnknownFields(unknownFields.build()); - return this; - } - break; - } - case 10: { - setFileId(input.readString()); - break; - } - case 18: { - setOsdUuid(input.readString()); - break; - } - case 26: { - setPath(input.readString()); - break; - } - case 34: { - setVolumeName(input.readString()); - break; - } + org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_replica_removeRequest parsedMessage = null; + try { + parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + parsedMessage = (org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_replica_removeRequest) e.getUnfinishedMessage(); + throw e; + } finally { + if (parsedMessage != null) { + mergeFrom(parsedMessage); } } + return this; } - - + private int bitField0_; + // optional string file_id = 1; + private java.lang.Object fileId_ = ""; + /** + * optional string file_id = 1; + * + *
+       * the file ID
+       * 
+ */ public boolean hasFileId() { - return result.hasFileId(); - } + return ((bitField0_ & 0x00000001) == 0x00000001); + } + /** + * optional string file_id = 1; + * + *
+       * the file ID
+       * 
+ */ public java.lang.String getFileId() { - return result.getFileId(); - } - public Builder setFileId(java.lang.String value) { + java.lang.Object ref = fileId_; + if (!(ref instanceof java.lang.String)) { + java.lang.String s = ((com.google.protobuf.ByteString) ref) + .toStringUtf8(); + fileId_ = s; + return s; + } else { + return (java.lang.String) ref; + } + } + /** + * optional string file_id = 1; + * + *
+       * the file ID
+       * 
+ */ + public com.google.protobuf.ByteString + getFileIdBytes() { + java.lang.Object ref = fileId_; + if (ref instanceof String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + fileId_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + /** + * optional string file_id = 1; + * + *
+       * the file ID
+       * 
+ */ + public Builder setFileId( + java.lang.String value) { if (value == null) { throw new NullPointerException(); } - result.hasFileId = true; - result.fileId_ = value; - return this; - } + bitField0_ |= 0x00000001; + fileId_ = value; + onChanged(); + return this; + } + /** + * optional string file_id = 1; + * + *
+       * the file ID
+       * 
+ */ public Builder clearFileId() { - result.hasFileId = false; - result.fileId_ = getDefaultInstance().getFileId(); + bitField0_ = (bitField0_ & ~0x00000001); + fileId_ = getDefaultInstance().getFileId(); + onChanged(); + return this; + } + /** + * optional string file_id = 1; + * + *
+       * the file ID
+       * 
+ */ + public Builder setFileIdBytes( + com.google.protobuf.ByteString value) { + if (value == null) { + throw new NullPointerException(); + } + bitField0_ |= 0x00000001; + fileId_ = value; + onChanged(); return this; } - + // optional string path = 3; + private java.lang.Object path_ = ""; + /** + * optional string path = 3; + * + *
+       * or path and volume_name to file.
+       * 
+ */ public boolean hasPath() { - return result.hasPath(); - } + return ((bitField0_ & 0x00000002) == 0x00000002); + } + /** + * optional string path = 3; + * + *
+       * or path and volume_name to file.
+       * 
+ */ public java.lang.String getPath() { - return result.getPath(); - } - public Builder setPath(java.lang.String value) { + java.lang.Object ref = path_; + if (!(ref instanceof java.lang.String)) { + java.lang.String s = ((com.google.protobuf.ByteString) ref) + .toStringUtf8(); + path_ = s; + return s; + } else { + return (java.lang.String) ref; + } + } + /** + * optional string path = 3; + * + *
+       * or path and volume_name to file.
+       * 
+ */ + public com.google.protobuf.ByteString + getPathBytes() { + java.lang.Object ref = path_; + if (ref instanceof String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + path_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + /** + * optional string path = 3; + * + *
+       * or path and volume_name to file.
+       * 
+ */ + public Builder setPath( + java.lang.String value) { if (value == null) { throw new NullPointerException(); } - result.hasPath = true; - result.path_ = value; - return this; - } + bitField0_ |= 0x00000002; + path_ = value; + onChanged(); + return this; + } + /** + * optional string path = 3; + * + *
+       * or path and volume_name to file.
+       * 
+ */ public Builder clearPath() { - result.hasPath = false; - result.path_ = getDefaultInstance().getPath(); + bitField0_ = (bitField0_ & ~0x00000002); + path_ = getDefaultInstance().getPath(); + onChanged(); + return this; + } + /** + * optional string path = 3; + * + *
+       * or path and volume_name to file.
+       * 
+ */ + public Builder setPathBytes( + com.google.protobuf.ByteString value) { + if (value == null) { + throw new NullPointerException(); + } + bitField0_ |= 0x00000002; + path_ = value; + onChanged(); return this; } - + // optional string volume_name = 4; + private java.lang.Object volumeName_ = ""; + /** + * optional string volume_name = 4; + */ public boolean hasVolumeName() { - return result.hasVolumeName(); + return ((bitField0_ & 0x00000004) == 0x00000004); } + /** + * optional string volume_name = 4; + */ public java.lang.String getVolumeName() { - return result.getVolumeName(); + java.lang.Object ref = volumeName_; + if (!(ref instanceof java.lang.String)) { + java.lang.String s = ((com.google.protobuf.ByteString) ref) + .toStringUtf8(); + volumeName_ = s; + return s; + } else { + return (java.lang.String) ref; + } + } + /** + * optional string volume_name = 4; + */ + public com.google.protobuf.ByteString + getVolumeNameBytes() { + java.lang.Object ref = volumeName_; + if (ref instanceof String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + volumeName_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } } - public Builder setVolumeName(java.lang.String value) { + /** + * optional string volume_name = 4; + */ + public Builder setVolumeName( + java.lang.String value) { if (value == null) { throw new NullPointerException(); } - result.hasVolumeName = true; - result.volumeName_ = value; + bitField0_ |= 0x00000004; + volumeName_ = value; + onChanged(); return this; } + /** + * optional string volume_name = 4; + */ public Builder clearVolumeName() { - result.hasVolumeName = false; - result.volumeName_ = getDefaultInstance().getVolumeName(); + bitField0_ = (bitField0_ & ~0x00000004); + volumeName_ = getDefaultInstance().getVolumeName(); + onChanged(); + return this; + } + /** + * optional string volume_name = 4; + */ + public Builder setVolumeNameBytes( + com.google.protobuf.ByteString value) { + if (value == null) { + throw new NullPointerException(); + } + bitField0_ |= 0x00000004; + volumeName_ = value; + onChanged(); return this; } - + // required string osd_uuid = 2; + private java.lang.Object osdUuid_ = ""; + /** + * required string osd_uuid = 2; + * + *
+       * the UUID of the head OSD of the replica to remove
+       * 
+ */ public boolean hasOsdUuid() { - return result.hasOsdUuid(); - } + return ((bitField0_ & 0x00000008) == 0x00000008); + } + /** + * required string osd_uuid = 2; + * + *
+       * the UUID of the head OSD of the replica to remove
+       * 
+ */ public java.lang.String getOsdUuid() { - return result.getOsdUuid(); - } - public Builder setOsdUuid(java.lang.String value) { + java.lang.Object ref = osdUuid_; + if (!(ref instanceof java.lang.String)) { + java.lang.String s = ((com.google.protobuf.ByteString) ref) + .toStringUtf8(); + osdUuid_ = s; + return s; + } else { + return (java.lang.String) ref; + } + } + /** + * required string osd_uuid = 2; + * + *
+       * the UUID of the head OSD of the replica to remove
+       * 
+ */ + public com.google.protobuf.ByteString + getOsdUuidBytes() { + java.lang.Object ref = osdUuid_; + if (ref instanceof String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + osdUuid_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + /** + * required string osd_uuid = 2; + * + *
+       * the UUID of the head OSD of the replica to remove
+       * 
+ */ + public Builder setOsdUuid( + java.lang.String value) { if (value == null) { throw new NullPointerException(); } - result.hasOsdUuid = true; - result.osdUuid_ = value; - return this; - } + bitField0_ |= 0x00000008; + osdUuid_ = value; + onChanged(); + return this; + } + /** + * required string osd_uuid = 2; + * + *
+       * the UUID of the head OSD of the replica to remove
+       * 
+ */ public Builder clearOsdUuid() { - result.hasOsdUuid = false; - result.osdUuid_ = getDefaultInstance().getOsdUuid(); + bitField0_ = (bitField0_ & ~0x00000008); + osdUuid_ = getDefaultInstance().getOsdUuid(); + onChanged(); + return this; + } + /** + * required string osd_uuid = 2; + * + *
+       * the UUID of the head OSD of the replica to remove
+       * 
+ */ + public Builder setOsdUuidBytes( + com.google.protobuf.ByteString value) { + if (value == null) { + throw new NullPointerException(); + } + bitField0_ |= 0x00000008; + osdUuid_ = value; + onChanged(); return this; } - + // @@protoc_insertion_point(builder_scope:xtreemfs.pbrpc.xtreemfs_replica_removeRequest) } - + static { defaultInstance = new xtreemfs_replica_removeRequest(true); - org.xtreemfs.pbrpc.generatedinterfaces.MRC.internalForceInit(); defaultInstance.initFields(); } - + // @@protoc_insertion_point(class_scope:xtreemfs.pbrpc.xtreemfs_replica_removeRequest) } - + + public interface xtreemfs_restore_fileRequestOrBuilder + extends com.google.protobuf.MessageOrBuilder { + + // required string file_path = 1; + /** + * required string file_path = 1; + * + *
+     * the path to the restored file
+     * 
+ */ + boolean hasFilePath(); + /** + * required string file_path = 1; + * + *
+     * the path to the restored file
+     * 
+ */ + java.lang.String getFilePath(); + /** + * required string file_path = 1; + * + *
+     * the path to the restored file
+     * 
+ */ + com.google.protobuf.ByteString + getFilePathBytes(); + + // required string file_id = 2; + /** + * required string file_id = 2; + * + *
+     * the file ID
+     * 
+ */ + boolean hasFileId(); + /** + * required string file_id = 2; + * + *
+     * the file ID
+     * 
+ */ + java.lang.String getFileId(); + /** + * required string file_id = 2; + * + *
+     * the file ID
+     * 
+ */ + com.google.protobuf.ByteString + getFileIdBytes(); + + // required fixed64 file_size = 3; + /** + * required fixed64 file_size = 3; + * + *
+     * the file size
+     * 
+ */ + boolean hasFileSize(); + /** + * required fixed64 file_size = 3; + * + *
+     * the file size
+     * 
+ */ + long getFileSize(); + + // required string osd_uuid = 4; + /** + * required string osd_uuid = 4; + * + *
+     * the UUID of the OSD with the orphaned file content
+     * 
+ */ + boolean hasOsdUuid(); + /** + * required string osd_uuid = 4; + * + *
+     * the UUID of the OSD with the orphaned file content
+     * 
+ */ + java.lang.String getOsdUuid(); + /** + * required string osd_uuid = 4; + * + *
+     * the UUID of the OSD with the orphaned file content
+     * 
+ */ + com.google.protobuf.ByteString + getOsdUuidBytes(); + + // required fixed32 stripe_size = 5; + /** + * required fixed32 stripe_size = 5; + * + *
+     * the stripe size of the file
+     * 
+ */ + boolean hasStripeSize(); + /** + * required fixed32 stripe_size = 5; + * + *
+     * the stripe size of the file
+     * 
+ */ + int getStripeSize(); + } + /** + * Protobuf type {@code xtreemfs.pbrpc.xtreemfs_restore_fileRequest} + * + *
+   * restores a file w/ orphaned file content by creating a new metadata object
+   * 
+ */ public static final class xtreemfs_restore_fileRequest extends - com.google.protobuf.GeneratedMessage { + com.google.protobuf.GeneratedMessage + implements xtreemfs_restore_fileRequestOrBuilder { // Use xtreemfs_restore_fileRequest.newBuilder() to construct. - private xtreemfs_restore_fileRequest() { - initFields(); + private xtreemfs_restore_fileRequest(com.google.protobuf.GeneratedMessage.Builder builder) { + super(builder); + this.unknownFields = builder.getUnknownFields(); } - private xtreemfs_restore_fileRequest(boolean noInit) {} - + private xtreemfs_restore_fileRequest(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); } + private static final xtreemfs_restore_fileRequest defaultInstance; public static xtreemfs_restore_fileRequest getDefaultInstance() { return defaultInstance; } - + public xtreemfs_restore_fileRequest getDefaultInstanceForType() { return defaultInstance; } - + + private final com.google.protobuf.UnknownFieldSet unknownFields; + @java.lang.Override + public final com.google.protobuf.UnknownFieldSet + getUnknownFields() { + return this.unknownFields; + } + private xtreemfs_restore_fileRequest( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + initFields(); + int mutable_bitField0_ = 0; + com.google.protobuf.UnknownFieldSet.Builder unknownFields = + com.google.protobuf.UnknownFieldSet.newBuilder(); + try { + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch (tag) { + case 0: + done = true; + break; + default: { + if (!parseUnknownField(input, unknownFields, + extensionRegistry, tag)) { + done = true; + } + break; + } + case 10: { + bitField0_ |= 0x00000001; + filePath_ = input.readBytes(); + break; + } + case 18: { + bitField0_ |= 0x00000002; + fileId_ = input.readBytes(); + break; + } + case 25: { + bitField0_ |= 0x00000004; + fileSize_ = input.readFixed64(); + break; + } + case 34: { + bitField0_ |= 0x00000008; + osdUuid_ = input.readBytes(); + break; + } + case 45: { + bitField0_ |= 0x00000010; + stripeSize_ = input.readFixed32(); + break; + } + } + } + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(this); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException( + e.getMessage()).setUnfinishedMessage(this); + } finally { + this.unknownFields = unknownFields.build(); + makeExtensionsImmutable(); + } + } public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { return org.xtreemfs.pbrpc.generatedinterfaces.MRC.internal_static_xtreemfs_pbrpc_xtreemfs_restore_fileRequest_descriptor; } - + protected com.google.protobuf.GeneratedMessage.FieldAccessorTable internalGetFieldAccessorTable() { - return org.xtreemfs.pbrpc.generatedinterfaces.MRC.internal_static_xtreemfs_pbrpc_xtreemfs_restore_fileRequest_fieldAccessorTable; + return org.xtreemfs.pbrpc.generatedinterfaces.MRC.internal_static_xtreemfs_pbrpc_xtreemfs_restore_fileRequest_fieldAccessorTable + .ensureFieldAccessorsInitialized( + org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_restore_fileRequest.class, org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_restore_fileRequest.Builder.class); + } + + public static com.google.protobuf.Parser PARSER = + new com.google.protobuf.AbstractParser() { + public xtreemfs_restore_fileRequest parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return new xtreemfs_restore_fileRequest(input, extensionRegistry); + } + }; + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; } - + + private int bitField0_; // required string file_path = 1; public static final int FILE_PATH_FIELD_NUMBER = 1; - private boolean hasFilePath; - private java.lang.String filePath_ = ""; - public boolean hasFilePath() { return hasFilePath; } - public java.lang.String getFilePath() { return filePath_; } - + private java.lang.Object filePath_; + /** + * required string file_path = 1; + * + *
+     * the path to the restored file
+     * 
+ */ + public boolean hasFilePath() { + return ((bitField0_ & 0x00000001) == 0x00000001); + } + /** + * required string file_path = 1; + * + *
+     * the path to the restored file
+     * 
+ */ + public java.lang.String getFilePath() { + java.lang.Object ref = filePath_; + if (ref instanceof java.lang.String) { + return (java.lang.String) ref; + } else { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + if (bs.isValidUtf8()) { + filePath_ = s; + } + return s; + } + } + /** + * required string file_path = 1; + * + *
+     * the path to the restored file
+     * 
+ */ + public com.google.protobuf.ByteString + getFilePathBytes() { + java.lang.Object ref = filePath_; + if (ref instanceof java.lang.String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + filePath_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + // required string file_id = 2; public static final int FILE_ID_FIELD_NUMBER = 2; - private boolean hasFileId; - private java.lang.String fileId_ = ""; - public boolean hasFileId() { return hasFileId; } - public java.lang.String getFileId() { return fileId_; } - + private java.lang.Object fileId_; + /** + * required string file_id = 2; + * + *
+     * the file ID
+     * 
+ */ + public boolean hasFileId() { + return ((bitField0_ & 0x00000002) == 0x00000002); + } + /** + * required string file_id = 2; + * + *
+     * the file ID
+     * 
+ */ + public java.lang.String getFileId() { + java.lang.Object ref = fileId_; + if (ref instanceof java.lang.String) { + return (java.lang.String) ref; + } else { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + if (bs.isValidUtf8()) { + fileId_ = s; + } + return s; + } + } + /** + * required string file_id = 2; + * + *
+     * the file ID
+     * 
+ */ + public com.google.protobuf.ByteString + getFileIdBytes() { + java.lang.Object ref = fileId_; + if (ref instanceof java.lang.String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + fileId_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + // required fixed64 file_size = 3; public static final int FILE_SIZE_FIELD_NUMBER = 3; - private boolean hasFileSize; - private long fileSize_ = 0L; - public boolean hasFileSize() { return hasFileSize; } - public long getFileSize() { return fileSize_; } - + private long fileSize_; + /** + * required fixed64 file_size = 3; + * + *
+     * the file size
+     * 
+ */ + public boolean hasFileSize() { + return ((bitField0_ & 0x00000004) == 0x00000004); + } + /** + * required fixed64 file_size = 3; + * + *
+     * the file size
+     * 
+ */ + public long getFileSize() { + return fileSize_; + } + // required string osd_uuid = 4; public static final int OSD_UUID_FIELD_NUMBER = 4; - private boolean hasOsdUuid; - private java.lang.String osdUuid_ = ""; - public boolean hasOsdUuid() { return hasOsdUuid; } - public java.lang.String getOsdUuid() { return osdUuid_; } - + private java.lang.Object osdUuid_; + /** + * required string osd_uuid = 4; + * + *
+     * the UUID of the OSD with the orphaned file content
+     * 
+ */ + public boolean hasOsdUuid() { + return ((bitField0_ & 0x00000008) == 0x00000008); + } + /** + * required string osd_uuid = 4; + * + *
+     * the UUID of the OSD with the orphaned file content
+     * 
+ */ + public java.lang.String getOsdUuid() { + java.lang.Object ref = osdUuid_; + if (ref instanceof java.lang.String) { + return (java.lang.String) ref; + } else { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + if (bs.isValidUtf8()) { + osdUuid_ = s; + } + return s; + } + } + /** + * required string osd_uuid = 4; + * + *
+     * the UUID of the OSD with the orphaned file content
+     * 
+ */ + public com.google.protobuf.ByteString + getOsdUuidBytes() { + java.lang.Object ref = osdUuid_; + if (ref instanceof java.lang.String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + osdUuid_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + // required fixed32 stripe_size = 5; public static final int STRIPE_SIZE_FIELD_NUMBER = 5; - private boolean hasStripeSize; - private int stripeSize_ = 0; - public boolean hasStripeSize() { return hasStripeSize; } - public int getStripeSize() { return stripeSize_; } - + private int stripeSize_; + /** + * required fixed32 stripe_size = 5; + * + *
+     * the stripe size of the file
+     * 
+ */ + public boolean hasStripeSize() { + return ((bitField0_ & 0x00000010) == 0x00000010); + } + /** + * required fixed32 stripe_size = 5; + * + *
+     * the stripe size of the file
+     * 
+ */ + public int getStripeSize() { + return stripeSize_; + } + private void initFields() { + filePath_ = ""; + fileId_ = ""; + fileSize_ = 0L; + osdUuid_ = ""; + stripeSize_ = 0; } + private byte memoizedIsInitialized = -1; public final boolean isInitialized() { - if (!hasFilePath) return false; - if (!hasFileId) return false; - if (!hasFileSize) return false; - if (!hasOsdUuid) return false; - if (!hasStripeSize) return false; + byte isInitialized = memoizedIsInitialized; + if (isInitialized != -1) return isInitialized == 1; + + if (!hasFilePath()) { + memoizedIsInitialized = 0; + return false; + } + if (!hasFileId()) { + memoizedIsInitialized = 0; + return false; + } + if (!hasFileSize()) { + memoizedIsInitialized = 0; + return false; + } + if (!hasOsdUuid()) { + memoizedIsInitialized = 0; + return false; + } + if (!hasStripeSize()) { + memoizedIsInitialized = 0; + return false; + } + memoizedIsInitialized = 1; return true; } - + public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException { getSerializedSize(); - if (hasFilePath()) { - output.writeString(1, getFilePath()); + if (((bitField0_ & 0x00000001) == 0x00000001)) { + output.writeBytes(1, getFilePathBytes()); } - if (hasFileId()) { - output.writeString(2, getFileId()); + if (((bitField0_ & 0x00000002) == 0x00000002)) { + output.writeBytes(2, getFileIdBytes()); } - if (hasFileSize()) { - output.writeFixed64(3, getFileSize()); + if (((bitField0_ & 0x00000004) == 0x00000004)) { + output.writeFixed64(3, fileSize_); } - if (hasOsdUuid()) { - output.writeString(4, getOsdUuid()); + if (((bitField0_ & 0x00000008) == 0x00000008)) { + output.writeBytes(4, getOsdUuidBytes()); } - if (hasStripeSize()) { - output.writeFixed32(5, getStripeSize()); + if (((bitField0_ & 0x00000010) == 0x00000010)) { + output.writeFixed32(5, stripeSize_); } getUnknownFields().writeTo(output); } - + private int memoizedSerializedSize = -1; public int getSerializedSize() { int size = memoizedSerializedSize; if (size != -1) return size; - + size = 0; - if (hasFilePath()) { + if (((bitField0_ & 0x00000001) == 0x00000001)) { size += com.google.protobuf.CodedOutputStream - .computeStringSize(1, getFilePath()); + .computeBytesSize(1, getFilePathBytes()); } - if (hasFileId()) { + if (((bitField0_ & 0x00000002) == 0x00000002)) { size += com.google.protobuf.CodedOutputStream - .computeStringSize(2, getFileId()); + .computeBytesSize(2, getFileIdBytes()); } - if (hasFileSize()) { + if (((bitField0_ & 0x00000004) == 0x00000004)) { size += com.google.protobuf.CodedOutputStream - .computeFixed64Size(3, getFileSize()); + .computeFixed64Size(3, fileSize_); } - if (hasOsdUuid()) { + if (((bitField0_ & 0x00000008) == 0x00000008)) { size += com.google.protobuf.CodedOutputStream - .computeStringSize(4, getOsdUuid()); + .computeBytesSize(4, getOsdUuidBytes()); } - if (hasStripeSize()) { + if (((bitField0_ & 0x00000010) == 0x00000010)) { size += com.google.protobuf.CodedOutputStream - .computeFixed32Size(5, getStripeSize()); + .computeFixed32Size(5, stripeSize_); } size += getUnknownFields().getSerializedSize(); memoizedSerializedSize = size; return size; } - + + private static final long serialVersionUID = 0L; + @java.lang.Override + protected java.lang.Object writeReplace() + throws java.io.ObjectStreamException { + return super.writeReplace(); + } + public static org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_restore_fileRequest parseFrom( com.google.protobuf.ByteString data) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data).buildParsed(); + return PARSER.parseFrom(data); } public static org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_restore_fileRequest parseFrom( com.google.protobuf.ByteString data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(data, extensionRegistry); } public static org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_restore_fileRequest parseFrom(byte[] data) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data).buildParsed(); + return PARSER.parseFrom(data); } public static org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_restore_fileRequest parseFrom( byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(data, extensionRegistry); } public static org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_restore_fileRequest parseFrom(java.io.InputStream input) throws java.io.IOException { - return newBuilder().mergeFrom(input).buildParsed(); + return PARSER.parseFrom(input); } public static org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_restore_fileRequest parseFrom( java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - return newBuilder().mergeFrom(input, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(input, extensionRegistry); } public static org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_restore_fileRequest parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException { - Builder builder = newBuilder(); - if (builder.mergeDelimitedFrom(input)) { - return builder.buildParsed(); - } else { - return null; - } + return PARSER.parseDelimitedFrom(input); } public static org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_restore_fileRequest parseDelimitedFrom( java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - Builder builder = newBuilder(); - if (builder.mergeDelimitedFrom(input, extensionRegistry)) { - return builder.buildParsed(); - } else { - return null; - } + return PARSER.parseDelimitedFrom(input, extensionRegistry); } public static org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_restore_fileRequest parseFrom( com.google.protobuf.CodedInputStream input) throws java.io.IOException { - return newBuilder().mergeFrom(input).buildParsed(); + return PARSER.parseFrom(input); } public static org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_restore_fileRequest parseFrom( com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - return newBuilder().mergeFrom(input, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(input, extensionRegistry); } - + public static Builder newBuilder() { return Builder.create(); } public Builder newBuilderForType() { return newBuilder(); } public static Builder newBuilder(org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_restore_fileRequest prototype) { return newBuilder().mergeFrom(prototype); } public Builder toBuilder() { return newBuilder(this); } - + + @java.lang.Override + protected Builder newBuilderForType( + com.google.protobuf.GeneratedMessage.BuilderParent parent) { + Builder builder = new Builder(parent); + return builder; + } + /** + * Protobuf type {@code xtreemfs.pbrpc.xtreemfs_restore_fileRequest} + * + *
+     * restores a file w/ orphaned file content by creating a new metadata object
+     * 
+ */ public static final class Builder extends - com.google.protobuf.GeneratedMessage.Builder { - private org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_restore_fileRequest result; - + com.google.protobuf.GeneratedMessage.Builder + implements org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_restore_fileRequestOrBuilder { + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return org.xtreemfs.pbrpc.generatedinterfaces.MRC.internal_static_xtreemfs_pbrpc_xtreemfs_restore_fileRequest_descriptor; + } + + protected com.google.protobuf.GeneratedMessage.FieldAccessorTable + internalGetFieldAccessorTable() { + return org.xtreemfs.pbrpc.generatedinterfaces.MRC.internal_static_xtreemfs_pbrpc_xtreemfs_restore_fileRequest_fieldAccessorTable + .ensureFieldAccessorsInitialized( + org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_restore_fileRequest.class, org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_restore_fileRequest.Builder.class); + } + // Construct using org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_restore_fileRequest.newBuilder() - private Builder() {} - - private static Builder create() { - Builder builder = new Builder(); - builder.result = new org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_restore_fileRequest(); - return builder; + private Builder() { + maybeForceBuilderInitialization(); } - - protected org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_restore_fileRequest internalGetResult() { - return result; + + private Builder( + com.google.protobuf.GeneratedMessage.BuilderParent parent) { + super(parent); + maybeForceBuilderInitialization(); } - - public Builder clear() { - if (result == null) { - throw new IllegalStateException( - "Cannot call clear() after build()."); + private void maybeForceBuilderInitialization() { + if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) { } - result = new org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_restore_fileRequest(); + } + private static Builder create() { + return new Builder(); + } + + public Builder clear() { + super.clear(); + filePath_ = ""; + bitField0_ = (bitField0_ & ~0x00000001); + fileId_ = ""; + bitField0_ = (bitField0_ & ~0x00000002); + fileSize_ = 0L; + bitField0_ = (bitField0_ & ~0x00000004); + osdUuid_ = ""; + bitField0_ = (bitField0_ & ~0x00000008); + stripeSize_ = 0; + bitField0_ = (bitField0_ & ~0x00000010); return this; } - + public Builder clone() { - return create().mergeFrom(result); + return create().mergeFrom(buildPartial()); } - + public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() { - return org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_restore_fileRequest.getDescriptor(); + return org.xtreemfs.pbrpc.generatedinterfaces.MRC.internal_static_xtreemfs_pbrpc_xtreemfs_restore_fileRequest_descriptor; } - + public org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_restore_fileRequest getDefaultInstanceForType() { return org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_restore_fileRequest.getDefaultInstance(); } - - public boolean isInitialized() { - return result.isInitialized(); - } + public org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_restore_fileRequest build() { - if (result != null && !isInitialized()) { + org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_restore_fileRequest result = buildPartial(); + if (!result.isInitialized()) { throw newUninitializedMessageException(result); } - return buildPartial(); - } - - private org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_restore_fileRequest buildParsed() - throws com.google.protobuf.InvalidProtocolBufferException { - if (!isInitialized()) { - throw newUninitializedMessageException( - result).asInvalidProtocolBufferException(); - } - return buildPartial(); + return result; } - + public org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_restore_fileRequest buildPartial() { - if (result == null) { - throw new IllegalStateException( - "build() has already been called on this Builder."); - } - org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_restore_fileRequest returnMe = result; - result = null; - return returnMe; + org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_restore_fileRequest result = new org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_restore_fileRequest(this); + int from_bitField0_ = bitField0_; + int to_bitField0_ = 0; + if (((from_bitField0_ & 0x00000001) == 0x00000001)) { + to_bitField0_ |= 0x00000001; + } + result.filePath_ = filePath_; + if (((from_bitField0_ & 0x00000002) == 0x00000002)) { + to_bitField0_ |= 0x00000002; + } + result.fileId_ = fileId_; + if (((from_bitField0_ & 0x00000004) == 0x00000004)) { + to_bitField0_ |= 0x00000004; + } + result.fileSize_ = fileSize_; + if (((from_bitField0_ & 0x00000008) == 0x00000008)) { + to_bitField0_ |= 0x00000008; + } + result.osdUuid_ = osdUuid_; + if (((from_bitField0_ & 0x00000010) == 0x00000010)) { + to_bitField0_ |= 0x00000010; + } + result.stripeSize_ = stripeSize_; + result.bitField0_ = to_bitField0_; + onBuilt(); + return result; } - + public Builder mergeFrom(com.google.protobuf.Message other) { if (other instanceof org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_restore_fileRequest) { return mergeFrom((org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_restore_fileRequest)other); @@ -17694,392 +41215,859 @@ public final class MRC { return this; } } - + public Builder mergeFrom(org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_restore_fileRequest other) { if (other == org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_restore_fileRequest.getDefaultInstance()) return this; if (other.hasFilePath()) { - setFilePath(other.getFilePath()); + bitField0_ |= 0x00000001; + filePath_ = other.filePath_; + onChanged(); } if (other.hasFileId()) { - setFileId(other.getFileId()); + bitField0_ |= 0x00000002; + fileId_ = other.fileId_; + onChanged(); } if (other.hasFileSize()) { setFileSize(other.getFileSize()); } if (other.hasOsdUuid()) { - setOsdUuid(other.getOsdUuid()); + bitField0_ |= 0x00000008; + osdUuid_ = other.osdUuid_; + onChanged(); } if (other.hasStripeSize()) { - setStripeSize(other.getStripeSize()); - } - this.mergeUnknownFields(other.getUnknownFields()); - return this; - } - - public Builder mergeFrom( - com.google.protobuf.CodedInputStream input, - com.google.protobuf.ExtensionRegistryLite extensionRegistry) - throws java.io.IOException { - com.google.protobuf.UnknownFieldSet.Builder unknownFields = - com.google.protobuf.UnknownFieldSet.newBuilder( - this.getUnknownFields()); - while (true) { - int tag = input.readTag(); - switch (tag) { - case 0: - this.setUnknownFields(unknownFields.build()); - return this; - default: { - if (!parseUnknownField(input, unknownFields, - extensionRegistry, tag)) { - this.setUnknownFields(unknownFields.build()); - return this; - } - break; - } - case 10: { - setFilePath(input.readString()); - break; - } - case 18: { - setFileId(input.readString()); - break; - } - case 25: { - setFileSize(input.readFixed64()); - break; - } - case 34: { - setOsdUuid(input.readString()); - break; - } - case 45: { - setStripeSize(input.readFixed32()); - break; - } + setStripeSize(other.getStripeSize()); + } + this.mergeUnknownFields(other.getUnknownFields()); + return this; + } + + public final boolean isInitialized() { + if (!hasFilePath()) { + + return false; + } + if (!hasFileId()) { + + return false; + } + if (!hasFileSize()) { + + return false; + } + if (!hasOsdUuid()) { + + return false; + } + if (!hasStripeSize()) { + + return false; + } + return true; + } + + public Builder mergeFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_restore_fileRequest parsedMessage = null; + try { + parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + parsedMessage = (org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_restore_fileRequest) e.getUnfinishedMessage(); + throw e; + } finally { + if (parsedMessage != null) { + mergeFrom(parsedMessage); } } + return this; } - - + private int bitField0_; + // required string file_path = 1; + private java.lang.Object filePath_ = ""; + /** + * required string file_path = 1; + * + *
+       * the path to the restored file
+       * 
+ */ public boolean hasFilePath() { - return result.hasFilePath(); - } + return ((bitField0_ & 0x00000001) == 0x00000001); + } + /** + * required string file_path = 1; + * + *
+       * the path to the restored file
+       * 
+ */ public java.lang.String getFilePath() { - return result.getFilePath(); - } - public Builder setFilePath(java.lang.String value) { + java.lang.Object ref = filePath_; + if (!(ref instanceof java.lang.String)) { + java.lang.String s = ((com.google.protobuf.ByteString) ref) + .toStringUtf8(); + filePath_ = s; + return s; + } else { + return (java.lang.String) ref; + } + } + /** + * required string file_path = 1; + * + *
+       * the path to the restored file
+       * 
+ */ + public com.google.protobuf.ByteString + getFilePathBytes() { + java.lang.Object ref = filePath_; + if (ref instanceof String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + filePath_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + /** + * required string file_path = 1; + * + *
+       * the path to the restored file
+       * 
+ */ + public Builder setFilePath( + java.lang.String value) { if (value == null) { throw new NullPointerException(); } - result.hasFilePath = true; - result.filePath_ = value; - return this; - } + bitField0_ |= 0x00000001; + filePath_ = value; + onChanged(); + return this; + } + /** + * required string file_path = 1; + * + *
+       * the path to the restored file
+       * 
+ */ public Builder clearFilePath() { - result.hasFilePath = false; - result.filePath_ = getDefaultInstance().getFilePath(); + bitField0_ = (bitField0_ & ~0x00000001); + filePath_ = getDefaultInstance().getFilePath(); + onChanged(); + return this; + } + /** + * required string file_path = 1; + * + *
+       * the path to the restored file
+       * 
+ */ + public Builder setFilePathBytes( + com.google.protobuf.ByteString value) { + if (value == null) { + throw new NullPointerException(); + } + bitField0_ |= 0x00000001; + filePath_ = value; + onChanged(); return this; } - + // required string file_id = 2; + private java.lang.Object fileId_ = ""; + /** + * required string file_id = 2; + * + *
+       * the file ID
+       * 
+ */ public boolean hasFileId() { - return result.hasFileId(); - } + return ((bitField0_ & 0x00000002) == 0x00000002); + } + /** + * required string file_id = 2; + * + *
+       * the file ID
+       * 
+ */ public java.lang.String getFileId() { - return result.getFileId(); - } - public Builder setFileId(java.lang.String value) { + java.lang.Object ref = fileId_; + if (!(ref instanceof java.lang.String)) { + java.lang.String s = ((com.google.protobuf.ByteString) ref) + .toStringUtf8(); + fileId_ = s; + return s; + } else { + return (java.lang.String) ref; + } + } + /** + * required string file_id = 2; + * + *
+       * the file ID
+       * 
+ */ + public com.google.protobuf.ByteString + getFileIdBytes() { + java.lang.Object ref = fileId_; + if (ref instanceof String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + fileId_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + /** + * required string file_id = 2; + * + *
+       * the file ID
+       * 
+ */ + public Builder setFileId( + java.lang.String value) { if (value == null) { throw new NullPointerException(); } - result.hasFileId = true; - result.fileId_ = value; - return this; - } + bitField0_ |= 0x00000002; + fileId_ = value; + onChanged(); + return this; + } + /** + * required string file_id = 2; + * + *
+       * the file ID
+       * 
+ */ public Builder clearFileId() { - result.hasFileId = false; - result.fileId_ = getDefaultInstance().getFileId(); + bitField0_ = (bitField0_ & ~0x00000002); + fileId_ = getDefaultInstance().getFileId(); + onChanged(); + return this; + } + /** + * required string file_id = 2; + * + *
+       * the file ID
+       * 
+ */ + public Builder setFileIdBytes( + com.google.protobuf.ByteString value) { + if (value == null) { + throw new NullPointerException(); + } + bitField0_ |= 0x00000002; + fileId_ = value; + onChanged(); return this; } - + // required fixed64 file_size = 3; + private long fileSize_ ; + /** + * required fixed64 file_size = 3; + * + *
+       * the file size
+       * 
+ */ public boolean hasFileSize() { - return result.hasFileSize(); - } + return ((bitField0_ & 0x00000004) == 0x00000004); + } + /** + * required fixed64 file_size = 3; + * + *
+       * the file size
+       * 
+ */ public long getFileSize() { - return result.getFileSize(); - } + return fileSize_; + } + /** + * required fixed64 file_size = 3; + * + *
+       * the file size
+       * 
+ */ public Builder setFileSize(long value) { - result.hasFileSize = true; - result.fileSize_ = value; - return this; - } + bitField0_ |= 0x00000004; + fileSize_ = value; + onChanged(); + return this; + } + /** + * required fixed64 file_size = 3; + * + *
+       * the file size
+       * 
+ */ public Builder clearFileSize() { - result.hasFileSize = false; - result.fileSize_ = 0L; + bitField0_ = (bitField0_ & ~0x00000004); + fileSize_ = 0L; + onChanged(); return this; } - + // required string osd_uuid = 4; + private java.lang.Object osdUuid_ = ""; + /** + * required string osd_uuid = 4; + * + *
+       * the UUID of the OSD with the orphaned file content
+       * 
+ */ public boolean hasOsdUuid() { - return result.hasOsdUuid(); - } + return ((bitField0_ & 0x00000008) == 0x00000008); + } + /** + * required string osd_uuid = 4; + * + *
+       * the UUID of the OSD with the orphaned file content
+       * 
+ */ public java.lang.String getOsdUuid() { - return result.getOsdUuid(); - } - public Builder setOsdUuid(java.lang.String value) { + java.lang.Object ref = osdUuid_; + if (!(ref instanceof java.lang.String)) { + java.lang.String s = ((com.google.protobuf.ByteString) ref) + .toStringUtf8(); + osdUuid_ = s; + return s; + } else { + return (java.lang.String) ref; + } + } + /** + * required string osd_uuid = 4; + * + *
+       * the UUID of the OSD with the orphaned file content
+       * 
+ */ + public com.google.protobuf.ByteString + getOsdUuidBytes() { + java.lang.Object ref = osdUuid_; + if (ref instanceof String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + osdUuid_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + /** + * required string osd_uuid = 4; + * + *
+       * the UUID of the OSD with the orphaned file content
+       * 
+ */ + public Builder setOsdUuid( + java.lang.String value) { if (value == null) { throw new NullPointerException(); } - result.hasOsdUuid = true; - result.osdUuid_ = value; - return this; - } + bitField0_ |= 0x00000008; + osdUuid_ = value; + onChanged(); + return this; + } + /** + * required string osd_uuid = 4; + * + *
+       * the UUID of the OSD with the orphaned file content
+       * 
+ */ public Builder clearOsdUuid() { - result.hasOsdUuid = false; - result.osdUuid_ = getDefaultInstance().getOsdUuid(); + bitField0_ = (bitField0_ & ~0x00000008); + osdUuid_ = getDefaultInstance().getOsdUuid(); + onChanged(); + return this; + } + /** + * required string osd_uuid = 4; + * + *
+       * the UUID of the OSD with the orphaned file content
+       * 
+ */ + public Builder setOsdUuidBytes( + com.google.protobuf.ByteString value) { + if (value == null) { + throw new NullPointerException(); + } + bitField0_ |= 0x00000008; + osdUuid_ = value; + onChanged(); return this; } - + // required fixed32 stripe_size = 5; + private int stripeSize_ ; + /** + * required fixed32 stripe_size = 5; + * + *
+       * the stripe size of the file
+       * 
+ */ public boolean hasStripeSize() { - return result.hasStripeSize(); - } + return ((bitField0_ & 0x00000010) == 0x00000010); + } + /** + * required fixed32 stripe_size = 5; + * + *
+       * the stripe size of the file
+       * 
+ */ public int getStripeSize() { - return result.getStripeSize(); - } + return stripeSize_; + } + /** + * required fixed32 stripe_size = 5; + * + *
+       * the stripe size of the file
+       * 
+ */ public Builder setStripeSize(int value) { - result.hasStripeSize = true; - result.stripeSize_ = value; - return this; - } + bitField0_ |= 0x00000010; + stripeSize_ = value; + onChanged(); + return this; + } + /** + * required fixed32 stripe_size = 5; + * + *
+       * the stripe size of the file
+       * 
+ */ public Builder clearStripeSize() { - result.hasStripeSize = false; - result.stripeSize_ = 0; + bitField0_ = (bitField0_ & ~0x00000010); + stripeSize_ = 0; + onChanged(); return this; } - + // @@protoc_insertion_point(builder_scope:xtreemfs.pbrpc.xtreemfs_restore_fileRequest) } - + static { defaultInstance = new xtreemfs_restore_fileRequest(true); - org.xtreemfs.pbrpc.generatedinterfaces.MRC.internalForceInit(); defaultInstance.initFields(); } - + // @@protoc_insertion_point(class_scope:xtreemfs.pbrpc.xtreemfs_restore_fileRequest) } - + + public interface xtreemfs_rmvolRequestOrBuilder + extends com.google.protobuf.MessageOrBuilder { + + // required string volume_name = 1; + /** + * required string volume_name = 1; + * + *
+     * the name of the volume to delete
+     * 
+ */ + boolean hasVolumeName(); + /** + * required string volume_name = 1; + * + *
+     * the name of the volume to delete
+     * 
+ */ + java.lang.String getVolumeName(); + /** + * required string volume_name = 1; + * + *
+     * the name of the volume to delete
+     * 
+ */ + com.google.protobuf.ByteString + getVolumeNameBytes(); + } + /** + * Protobuf type {@code xtreemfs.pbrpc.xtreemfs_rmvolRequest} + * + *
+   * deletes a volume
+   * 
+ */ public static final class xtreemfs_rmvolRequest extends - com.google.protobuf.GeneratedMessage { + com.google.protobuf.GeneratedMessage + implements xtreemfs_rmvolRequestOrBuilder { // Use xtreemfs_rmvolRequest.newBuilder() to construct. - private xtreemfs_rmvolRequest() { - initFields(); + private xtreemfs_rmvolRequest(com.google.protobuf.GeneratedMessage.Builder builder) { + super(builder); + this.unknownFields = builder.getUnknownFields(); } - private xtreemfs_rmvolRequest(boolean noInit) {} - + private xtreemfs_rmvolRequest(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); } + private static final xtreemfs_rmvolRequest defaultInstance; public static xtreemfs_rmvolRequest getDefaultInstance() { return defaultInstance; } - + public xtreemfs_rmvolRequest getDefaultInstanceForType() { return defaultInstance; } - + + private final com.google.protobuf.UnknownFieldSet unknownFields; + @java.lang.Override + public final com.google.protobuf.UnknownFieldSet + getUnknownFields() { + return this.unknownFields; + } + private xtreemfs_rmvolRequest( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + initFields(); + int mutable_bitField0_ = 0; + com.google.protobuf.UnknownFieldSet.Builder unknownFields = + com.google.protobuf.UnknownFieldSet.newBuilder(); + try { + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch (tag) { + case 0: + done = true; + break; + default: { + if (!parseUnknownField(input, unknownFields, + extensionRegistry, tag)) { + done = true; + } + break; + } + case 10: { + bitField0_ |= 0x00000001; + volumeName_ = input.readBytes(); + break; + } + } + } + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(this); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException( + e.getMessage()).setUnfinishedMessage(this); + } finally { + this.unknownFields = unknownFields.build(); + makeExtensionsImmutable(); + } + } public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { return org.xtreemfs.pbrpc.generatedinterfaces.MRC.internal_static_xtreemfs_pbrpc_xtreemfs_rmvolRequest_descriptor; } - + protected com.google.protobuf.GeneratedMessage.FieldAccessorTable internalGetFieldAccessorTable() { - return org.xtreemfs.pbrpc.generatedinterfaces.MRC.internal_static_xtreemfs_pbrpc_xtreemfs_rmvolRequest_fieldAccessorTable; + return org.xtreemfs.pbrpc.generatedinterfaces.MRC.internal_static_xtreemfs_pbrpc_xtreemfs_rmvolRequest_fieldAccessorTable + .ensureFieldAccessorsInitialized( + org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_rmvolRequest.class, org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_rmvolRequest.Builder.class); + } + + public static com.google.protobuf.Parser PARSER = + new com.google.protobuf.AbstractParser() { + public xtreemfs_rmvolRequest parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return new xtreemfs_rmvolRequest(input, extensionRegistry); + } + }; + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; } - + + private int bitField0_; // required string volume_name = 1; public static final int VOLUME_NAME_FIELD_NUMBER = 1; - private boolean hasVolumeName; - private java.lang.String volumeName_ = ""; - public boolean hasVolumeName() { return hasVolumeName; } - public java.lang.String getVolumeName() { return volumeName_; } - + private java.lang.Object volumeName_; + /** + * required string volume_name = 1; + * + *
+     * the name of the volume to delete
+     * 
+ */ + public boolean hasVolumeName() { + return ((bitField0_ & 0x00000001) == 0x00000001); + } + /** + * required string volume_name = 1; + * + *
+     * the name of the volume to delete
+     * 
+ */ + public java.lang.String getVolumeName() { + java.lang.Object ref = volumeName_; + if (ref instanceof java.lang.String) { + return (java.lang.String) ref; + } else { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + if (bs.isValidUtf8()) { + volumeName_ = s; + } + return s; + } + } + /** + * required string volume_name = 1; + * + *
+     * the name of the volume to delete
+     * 
+ */ + public com.google.protobuf.ByteString + getVolumeNameBytes() { + java.lang.Object ref = volumeName_; + if (ref instanceof java.lang.String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + volumeName_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + private void initFields() { + volumeName_ = ""; } + private byte memoizedIsInitialized = -1; public final boolean isInitialized() { - if (!hasVolumeName) return false; + byte isInitialized = memoizedIsInitialized; + if (isInitialized != -1) return isInitialized == 1; + + if (!hasVolumeName()) { + memoizedIsInitialized = 0; + return false; + } + memoizedIsInitialized = 1; return true; } - + public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException { getSerializedSize(); - if (hasVolumeName()) { - output.writeString(1, getVolumeName()); + if (((bitField0_ & 0x00000001) == 0x00000001)) { + output.writeBytes(1, getVolumeNameBytes()); } getUnknownFields().writeTo(output); } - + private int memoizedSerializedSize = -1; public int getSerializedSize() { int size = memoizedSerializedSize; if (size != -1) return size; - + size = 0; - if (hasVolumeName()) { + if (((bitField0_ & 0x00000001) == 0x00000001)) { size += com.google.protobuf.CodedOutputStream - .computeStringSize(1, getVolumeName()); + .computeBytesSize(1, getVolumeNameBytes()); } size += getUnknownFields().getSerializedSize(); memoizedSerializedSize = size; return size; } - + + private static final long serialVersionUID = 0L; + @java.lang.Override + protected java.lang.Object writeReplace() + throws java.io.ObjectStreamException { + return super.writeReplace(); + } + public static org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_rmvolRequest parseFrom( com.google.protobuf.ByteString data) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data).buildParsed(); + return PARSER.parseFrom(data); } public static org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_rmvolRequest parseFrom( com.google.protobuf.ByteString data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(data, extensionRegistry); } public static org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_rmvolRequest parseFrom(byte[] data) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data).buildParsed(); + return PARSER.parseFrom(data); } public static org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_rmvolRequest parseFrom( byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(data, extensionRegistry); } public static org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_rmvolRequest parseFrom(java.io.InputStream input) throws java.io.IOException { - return newBuilder().mergeFrom(input).buildParsed(); + return PARSER.parseFrom(input); } public static org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_rmvolRequest parseFrom( java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - return newBuilder().mergeFrom(input, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(input, extensionRegistry); } public static org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_rmvolRequest parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException { - Builder builder = newBuilder(); - if (builder.mergeDelimitedFrom(input)) { - return builder.buildParsed(); - } else { - return null; - } + return PARSER.parseDelimitedFrom(input); } public static org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_rmvolRequest parseDelimitedFrom( java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - Builder builder = newBuilder(); - if (builder.mergeDelimitedFrom(input, extensionRegistry)) { - return builder.buildParsed(); - } else { - return null; - } + return PARSER.parseDelimitedFrom(input, extensionRegistry); } public static org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_rmvolRequest parseFrom( com.google.protobuf.CodedInputStream input) throws java.io.IOException { - return newBuilder().mergeFrom(input).buildParsed(); + return PARSER.parseFrom(input); } public static org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_rmvolRequest parseFrom( com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - return newBuilder().mergeFrom(input, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(input, extensionRegistry); } - + public static Builder newBuilder() { return Builder.create(); } public Builder newBuilderForType() { return newBuilder(); } public static Builder newBuilder(org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_rmvolRequest prototype) { return newBuilder().mergeFrom(prototype); } public Builder toBuilder() { return newBuilder(this); } - + + @java.lang.Override + protected Builder newBuilderForType( + com.google.protobuf.GeneratedMessage.BuilderParent parent) { + Builder builder = new Builder(parent); + return builder; + } + /** + * Protobuf type {@code xtreemfs.pbrpc.xtreemfs_rmvolRequest} + * + *
+     * deletes a volume
+     * 
+ */ public static final class Builder extends - com.google.protobuf.GeneratedMessage.Builder { - private org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_rmvolRequest result; - + com.google.protobuf.GeneratedMessage.Builder + implements org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_rmvolRequestOrBuilder { + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return org.xtreemfs.pbrpc.generatedinterfaces.MRC.internal_static_xtreemfs_pbrpc_xtreemfs_rmvolRequest_descriptor; + } + + protected com.google.protobuf.GeneratedMessage.FieldAccessorTable + internalGetFieldAccessorTable() { + return org.xtreemfs.pbrpc.generatedinterfaces.MRC.internal_static_xtreemfs_pbrpc_xtreemfs_rmvolRequest_fieldAccessorTable + .ensureFieldAccessorsInitialized( + org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_rmvolRequest.class, org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_rmvolRequest.Builder.class); + } + // Construct using org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_rmvolRequest.newBuilder() - private Builder() {} - - private static Builder create() { - Builder builder = new Builder(); - builder.result = new org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_rmvolRequest(); - return builder; + private Builder() { + maybeForceBuilderInitialization(); } - - protected org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_rmvolRequest internalGetResult() { - return result; + + private Builder( + com.google.protobuf.GeneratedMessage.BuilderParent parent) { + super(parent); + maybeForceBuilderInitialization(); } - - public Builder clear() { - if (result == null) { - throw new IllegalStateException( - "Cannot call clear() after build()."); + private void maybeForceBuilderInitialization() { + if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) { } - result = new org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_rmvolRequest(); + } + private static Builder create() { + return new Builder(); + } + + public Builder clear() { + super.clear(); + volumeName_ = ""; + bitField0_ = (bitField0_ & ~0x00000001); return this; } - + public Builder clone() { - return create().mergeFrom(result); + return create().mergeFrom(buildPartial()); } - + public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() { - return org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_rmvolRequest.getDescriptor(); + return org.xtreemfs.pbrpc.generatedinterfaces.MRC.internal_static_xtreemfs_pbrpc_xtreemfs_rmvolRequest_descriptor; } - + public org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_rmvolRequest getDefaultInstanceForType() { return org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_rmvolRequest.getDefaultInstance(); } - - public boolean isInitialized() { - return result.isInitialized(); - } + public org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_rmvolRequest build() { - if (result != null && !isInitialized()) { + org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_rmvolRequest result = buildPartial(); + if (!result.isInitialized()) { throw newUninitializedMessageException(result); } - return buildPartial(); - } - - private org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_rmvolRequest buildParsed() - throws com.google.protobuf.InvalidProtocolBufferException { - if (!isInitialized()) { - throw newUninitializedMessageException( - result).asInvalidProtocolBufferException(); - } - return buildPartial(); + return result; } - + public org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_rmvolRequest buildPartial() { - if (result == null) { - throw new IllegalStateException( - "build() has already been called on this Builder."); - } - org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_rmvolRequest returnMe = result; - result = null; - return returnMe; + org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_rmvolRequest result = new org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_rmvolRequest(this); + int from_bitField0_ = bitField0_; + int to_bitField0_ = 0; + if (((from_bitField0_ & 0x00000001) == 0x00000001)) { + to_bitField0_ |= 0x00000001; + } + result.volumeName_ = volumeName_; + result.bitField0_ = to_bitField0_; + onBuilt(); + return result; } - + public Builder mergeFrom(com.google.protobuf.Message other) { if (other instanceof org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_rmvolRequest) { return mergeFrom((org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_rmvolRequest)other); @@ -18088,336 +42076,801 @@ public final class MRC { return this; } } - + public Builder mergeFrom(org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_rmvolRequest other) { if (other == org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_rmvolRequest.getDefaultInstance()) return this; if (other.hasVolumeName()) { - setVolumeName(other.getVolumeName()); + bitField0_ |= 0x00000001; + volumeName_ = other.volumeName_; + onChanged(); } this.mergeUnknownFields(other.getUnknownFields()); return this; } - + + public final boolean isInitialized() { + if (!hasVolumeName()) { + + return false; + } + return true; + } + public Builder mergeFrom( com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - com.google.protobuf.UnknownFieldSet.Builder unknownFields = - com.google.protobuf.UnknownFieldSet.newBuilder( - this.getUnknownFields()); - while (true) { - int tag = input.readTag(); - switch (tag) { - case 0: - this.setUnknownFields(unknownFields.build()); - return this; - default: { - if (!parseUnknownField(input, unknownFields, - extensionRegistry, tag)) { - this.setUnknownFields(unknownFields.build()); - return this; - } - break; - } - case 10: { - setVolumeName(input.readString()); - break; - } + org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_rmvolRequest parsedMessage = null; + try { + parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + parsedMessage = (org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_rmvolRequest) e.getUnfinishedMessage(); + throw e; + } finally { + if (parsedMessage != null) { + mergeFrom(parsedMessage); } } + return this; } - - + private int bitField0_; + // required string volume_name = 1; + private java.lang.Object volumeName_ = ""; + /** + * required string volume_name = 1; + * + *
+       * the name of the volume to delete
+       * 
+ */ public boolean hasVolumeName() { - return result.hasVolumeName(); - } + return ((bitField0_ & 0x00000001) == 0x00000001); + } + /** + * required string volume_name = 1; + * + *
+       * the name of the volume to delete
+       * 
+ */ public java.lang.String getVolumeName() { - return result.getVolumeName(); - } - public Builder setVolumeName(java.lang.String value) { + java.lang.Object ref = volumeName_; + if (!(ref instanceof java.lang.String)) { + java.lang.String s = ((com.google.protobuf.ByteString) ref) + .toStringUtf8(); + volumeName_ = s; + return s; + } else { + return (java.lang.String) ref; + } + } + /** + * required string volume_name = 1; + * + *
+       * the name of the volume to delete
+       * 
+ */ + public com.google.protobuf.ByteString + getVolumeNameBytes() { + java.lang.Object ref = volumeName_; + if (ref instanceof String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + volumeName_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + /** + * required string volume_name = 1; + * + *
+       * the name of the volume to delete
+       * 
+ */ + public Builder setVolumeName( + java.lang.String value) { if (value == null) { throw new NullPointerException(); } - result.hasVolumeName = true; - result.volumeName_ = value; - return this; - } + bitField0_ |= 0x00000001; + volumeName_ = value; + onChanged(); + return this; + } + /** + * required string volume_name = 1; + * + *
+       * the name of the volume to delete
+       * 
+ */ public Builder clearVolumeName() { - result.hasVolumeName = false; - result.volumeName_ = getDefaultInstance().getVolumeName(); + bitField0_ = (bitField0_ & ~0x00000001); + volumeName_ = getDefaultInstance().getVolumeName(); + onChanged(); + return this; + } + /** + * required string volume_name = 1; + * + *
+       * the name of the volume to delete
+       * 
+ */ + public Builder setVolumeNameBytes( + com.google.protobuf.ByteString value) { + if (value == null) { + throw new NullPointerException(); + } + bitField0_ |= 0x00000001; + volumeName_ = value; + onChanged(); return this; } - + // @@protoc_insertion_point(builder_scope:xtreemfs.pbrpc.xtreemfs_rmvolRequest) } - + static { defaultInstance = new xtreemfs_rmvolRequest(true); - org.xtreemfs.pbrpc.generatedinterfaces.MRC.internalForceInit(); defaultInstance.initFields(); } - + // @@protoc_insertion_point(class_scope:xtreemfs.pbrpc.xtreemfs_rmvolRequest) } - + + public interface xtreemfs_update_file_sizeRequestOrBuilder + extends com.google.protobuf.MessageOrBuilder { + + // required .xtreemfs.pbrpc.XCap xcap = 1; + /** + * required .xtreemfs.pbrpc.XCap xcap = 1; + * + *
+     * the capability that was returned when opening the file
+     * 
+ */ + boolean hasXcap(); + /** + * required .xtreemfs.pbrpc.XCap xcap = 1; + * + *
+     * the capability that was returned when opening the file
+     * 
+ */ + org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.XCap getXcap(); + /** + * required .xtreemfs.pbrpc.XCap xcap = 1; + * + *
+     * the capability that was returned when opening the file
+     * 
+ */ + org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.XCapOrBuilder getXcapOrBuilder(); + + // required .xtreemfs.pbrpc.OSDWriteResponse osd_write_response = 2; + /** + * required .xtreemfs.pbrpc.OSDWriteResponse osd_write_response = 2; + * + *
+     * the OSDWriteResponse received from an OSD that contains the new file size
+     * 
+ */ + boolean hasOsdWriteResponse(); + /** + * required .xtreemfs.pbrpc.OSDWriteResponse osd_write_response = 2; + * + *
+     * the OSDWriteResponse received from an OSD that contains the new file size
+     * 
+ */ + org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.OSDWriteResponse getOsdWriteResponse(); + /** + * required .xtreemfs.pbrpc.OSDWriteResponse osd_write_response = 2; + * + *
+     * the OSDWriteResponse received from an OSD that contains the new file size
+     * 
+ */ + org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.OSDWriteResponseOrBuilder getOsdWriteResponseOrBuilder(); + + // optional bool close_file = 3; + /** + * optional bool close_file = 3; + * + *
+     * a flag indicating that the file is supposed to be closed
+     * 
+ */ + boolean hasCloseFile(); + /** + * optional bool close_file = 3; + * + *
+     * a flag indicating that the file is supposed to be closed
+     * 
+ */ + boolean getCloseFile(); + + // optional .xtreemfs.pbrpc.VivaldiCoordinates coordinates = 4; + /** + * optional .xtreemfs.pbrpc.VivaldiCoordinates coordinates = 4; + * + *
+     * the client's Vivaldi coordinates (e.g. used for creating replicas at
+     * specific locations when the file is closed)
+     * 
+ */ + boolean hasCoordinates(); + /** + * optional .xtreemfs.pbrpc.VivaldiCoordinates coordinates = 4; + * + *
+     * the client's Vivaldi coordinates (e.g. used for creating replicas at
+     * specific locations when the file is closed)
+     * 
+ */ + org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.VivaldiCoordinates getCoordinates(); + /** + * optional .xtreemfs.pbrpc.VivaldiCoordinates coordinates = 4; + * + *
+     * the client's Vivaldi coordinates (e.g. used for creating replicas at
+     * specific locations when the file is closed)
+     * 
+ */ + org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.VivaldiCoordinatesOrBuilder getCoordinatesOrBuilder(); + } + /** + * Protobuf type {@code xtreemfs.pbrpc.xtreemfs_update_file_sizeRequest} + * + *
+   * updates the size of an open file
+   * 
+ */ public static final class xtreemfs_update_file_sizeRequest extends - com.google.protobuf.GeneratedMessage { + com.google.protobuf.GeneratedMessage + implements xtreemfs_update_file_sizeRequestOrBuilder { // Use xtreemfs_update_file_sizeRequest.newBuilder() to construct. - private xtreemfs_update_file_sizeRequest() { - initFields(); + private xtreemfs_update_file_sizeRequest(com.google.protobuf.GeneratedMessage.Builder builder) { + super(builder); + this.unknownFields = builder.getUnknownFields(); } - private xtreemfs_update_file_sizeRequest(boolean noInit) {} - + private xtreemfs_update_file_sizeRequest(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); } + private static final xtreemfs_update_file_sizeRequest defaultInstance; public static xtreemfs_update_file_sizeRequest getDefaultInstance() { return defaultInstance; } - + public xtreemfs_update_file_sizeRequest getDefaultInstanceForType() { return defaultInstance; } - + + private final com.google.protobuf.UnknownFieldSet unknownFields; + @java.lang.Override + public final com.google.protobuf.UnknownFieldSet + getUnknownFields() { + return this.unknownFields; + } + private xtreemfs_update_file_sizeRequest( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + initFields(); + int mutable_bitField0_ = 0; + com.google.protobuf.UnknownFieldSet.Builder unknownFields = + com.google.protobuf.UnknownFieldSet.newBuilder(); + try { + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch (tag) { + case 0: + done = true; + break; + default: { + if (!parseUnknownField(input, unknownFields, + extensionRegistry, tag)) { + done = true; + } + break; + } + case 10: { + org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.XCap.Builder subBuilder = null; + if (((bitField0_ & 0x00000001) == 0x00000001)) { + subBuilder = xcap_.toBuilder(); + } + xcap_ = input.readMessage(org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.XCap.PARSER, extensionRegistry); + if (subBuilder != null) { + subBuilder.mergeFrom(xcap_); + xcap_ = subBuilder.buildPartial(); + } + bitField0_ |= 0x00000001; + break; + } + case 18: { + org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.OSDWriteResponse.Builder subBuilder = null; + if (((bitField0_ & 0x00000002) == 0x00000002)) { + subBuilder = osdWriteResponse_.toBuilder(); + } + osdWriteResponse_ = input.readMessage(org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.OSDWriteResponse.PARSER, extensionRegistry); + if (subBuilder != null) { + subBuilder.mergeFrom(osdWriteResponse_); + osdWriteResponse_ = subBuilder.buildPartial(); + } + bitField0_ |= 0x00000002; + break; + } + case 24: { + bitField0_ |= 0x00000004; + closeFile_ = input.readBool(); + break; + } + case 34: { + org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.VivaldiCoordinates.Builder subBuilder = null; + if (((bitField0_ & 0x00000008) == 0x00000008)) { + subBuilder = coordinates_.toBuilder(); + } + coordinates_ = input.readMessage(org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.VivaldiCoordinates.PARSER, extensionRegistry); + if (subBuilder != null) { + subBuilder.mergeFrom(coordinates_); + coordinates_ = subBuilder.buildPartial(); + } + bitField0_ |= 0x00000008; + break; + } + } + } + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(this); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException( + e.getMessage()).setUnfinishedMessage(this); + } finally { + this.unknownFields = unknownFields.build(); + makeExtensionsImmutable(); + } + } public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { return org.xtreemfs.pbrpc.generatedinterfaces.MRC.internal_static_xtreemfs_pbrpc_xtreemfs_update_file_sizeRequest_descriptor; } - + protected com.google.protobuf.GeneratedMessage.FieldAccessorTable internalGetFieldAccessorTable() { - return org.xtreemfs.pbrpc.generatedinterfaces.MRC.internal_static_xtreemfs_pbrpc_xtreemfs_update_file_sizeRequest_fieldAccessorTable; + return org.xtreemfs.pbrpc.generatedinterfaces.MRC.internal_static_xtreemfs_pbrpc_xtreemfs_update_file_sizeRequest_fieldAccessorTable + .ensureFieldAccessorsInitialized( + org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_update_file_sizeRequest.class, org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_update_file_sizeRequest.Builder.class); + } + + public static com.google.protobuf.Parser PARSER = + new com.google.protobuf.AbstractParser() { + public xtreemfs_update_file_sizeRequest parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return new xtreemfs_update_file_sizeRequest(input, extensionRegistry); + } + }; + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; } - + + private int bitField0_; // required .xtreemfs.pbrpc.XCap xcap = 1; public static final int XCAP_FIELD_NUMBER = 1; - private boolean hasXcap; private org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.XCap xcap_; - public boolean hasXcap() { return hasXcap; } - public org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.XCap getXcap() { return xcap_; } - + /** + * required .xtreemfs.pbrpc.XCap xcap = 1; + * + *
+     * the capability that was returned when opening the file
+     * 
+ */ + public boolean hasXcap() { + return ((bitField0_ & 0x00000001) == 0x00000001); + } + /** + * required .xtreemfs.pbrpc.XCap xcap = 1; + * + *
+     * the capability that was returned when opening the file
+     * 
+ */ + public org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.XCap getXcap() { + return xcap_; + } + /** + * required .xtreemfs.pbrpc.XCap xcap = 1; + * + *
+     * the capability that was returned when opening the file
+     * 
+ */ + public org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.XCapOrBuilder getXcapOrBuilder() { + return xcap_; + } + // required .xtreemfs.pbrpc.OSDWriteResponse osd_write_response = 2; public static final int OSD_WRITE_RESPONSE_FIELD_NUMBER = 2; - private boolean hasOsdWriteResponse; private org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.OSDWriteResponse osdWriteResponse_; - public boolean hasOsdWriteResponse() { return hasOsdWriteResponse; } - public org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.OSDWriteResponse getOsdWriteResponse() { return osdWriteResponse_; } - + /** + * required .xtreemfs.pbrpc.OSDWriteResponse osd_write_response = 2; + * + *
+     * the OSDWriteResponse received from an OSD that contains the new file size
+     * 
+ */ + public boolean hasOsdWriteResponse() { + return ((bitField0_ & 0x00000002) == 0x00000002); + } + /** + * required .xtreemfs.pbrpc.OSDWriteResponse osd_write_response = 2; + * + *
+     * the OSDWriteResponse received from an OSD that contains the new file size
+     * 
+ */ + public org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.OSDWriteResponse getOsdWriteResponse() { + return osdWriteResponse_; + } + /** + * required .xtreemfs.pbrpc.OSDWriteResponse osd_write_response = 2; + * + *
+     * the OSDWriteResponse received from an OSD that contains the new file size
+     * 
+ */ + public org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.OSDWriteResponseOrBuilder getOsdWriteResponseOrBuilder() { + return osdWriteResponse_; + } + // optional bool close_file = 3; public static final int CLOSE_FILE_FIELD_NUMBER = 3; - private boolean hasCloseFile; - private boolean closeFile_ = false; - public boolean hasCloseFile() { return hasCloseFile; } - public boolean getCloseFile() { return closeFile_; } - + private boolean closeFile_; + /** + * optional bool close_file = 3; + * + *
+     * a flag indicating that the file is supposed to be closed
+     * 
+ */ + public boolean hasCloseFile() { + return ((bitField0_ & 0x00000004) == 0x00000004); + } + /** + * optional bool close_file = 3; + * + *
+     * a flag indicating that the file is supposed to be closed
+     * 
+ */ + public boolean getCloseFile() { + return closeFile_; + } + // optional .xtreemfs.pbrpc.VivaldiCoordinates coordinates = 4; public static final int COORDINATES_FIELD_NUMBER = 4; - private boolean hasCoordinates; private org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.VivaldiCoordinates coordinates_; - public boolean hasCoordinates() { return hasCoordinates; } - public org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.VivaldiCoordinates getCoordinates() { return coordinates_; } - + /** + * optional .xtreemfs.pbrpc.VivaldiCoordinates coordinates = 4; + * + *
+     * the client's Vivaldi coordinates (e.g. used for creating replicas at
+     * specific locations when the file is closed)
+     * 
+ */ + public boolean hasCoordinates() { + return ((bitField0_ & 0x00000008) == 0x00000008); + } + /** + * optional .xtreemfs.pbrpc.VivaldiCoordinates coordinates = 4; + * + *
+     * the client's Vivaldi coordinates (e.g. used for creating replicas at
+     * specific locations when the file is closed)
+     * 
+ */ + public org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.VivaldiCoordinates getCoordinates() { + return coordinates_; + } + /** + * optional .xtreemfs.pbrpc.VivaldiCoordinates coordinates = 4; + * + *
+     * the client's Vivaldi coordinates (e.g. used for creating replicas at
+     * specific locations when the file is closed)
+     * 
+ */ + public org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.VivaldiCoordinatesOrBuilder getCoordinatesOrBuilder() { + return coordinates_; + } + private void initFields() { xcap_ = org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.XCap.getDefaultInstance(); osdWriteResponse_ = org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.OSDWriteResponse.getDefaultInstance(); + closeFile_ = false; coordinates_ = org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.VivaldiCoordinates.getDefaultInstance(); } + private byte memoizedIsInitialized = -1; public final boolean isInitialized() { - if (!hasXcap) return false; - if (!hasOsdWriteResponse) return false; - if (!getXcap().isInitialized()) return false; + byte isInitialized = memoizedIsInitialized; + if (isInitialized != -1) return isInitialized == 1; + + if (!hasXcap()) { + memoizedIsInitialized = 0; + return false; + } + if (!hasOsdWriteResponse()) { + memoizedIsInitialized = 0; + return false; + } + if (!getXcap().isInitialized()) { + memoizedIsInitialized = 0; + return false; + } if (hasCoordinates()) { - if (!getCoordinates().isInitialized()) return false; + if (!getCoordinates().isInitialized()) { + memoizedIsInitialized = 0; + return false; + } } + memoizedIsInitialized = 1; return true; } - + public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException { getSerializedSize(); - if (hasXcap()) { - output.writeMessage(1, getXcap()); + if (((bitField0_ & 0x00000001) == 0x00000001)) { + output.writeMessage(1, xcap_); } - if (hasOsdWriteResponse()) { - output.writeMessage(2, getOsdWriteResponse()); + if (((bitField0_ & 0x00000002) == 0x00000002)) { + output.writeMessage(2, osdWriteResponse_); } - if (hasCloseFile()) { - output.writeBool(3, getCloseFile()); + if (((bitField0_ & 0x00000004) == 0x00000004)) { + output.writeBool(3, closeFile_); } - if (hasCoordinates()) { - output.writeMessage(4, getCoordinates()); + if (((bitField0_ & 0x00000008) == 0x00000008)) { + output.writeMessage(4, coordinates_); } getUnknownFields().writeTo(output); } - + private int memoizedSerializedSize = -1; public int getSerializedSize() { int size = memoizedSerializedSize; if (size != -1) return size; - + size = 0; - if (hasXcap()) { + if (((bitField0_ & 0x00000001) == 0x00000001)) { size += com.google.protobuf.CodedOutputStream - .computeMessageSize(1, getXcap()); + .computeMessageSize(1, xcap_); } - if (hasOsdWriteResponse()) { + if (((bitField0_ & 0x00000002) == 0x00000002)) { size += com.google.protobuf.CodedOutputStream - .computeMessageSize(2, getOsdWriteResponse()); + .computeMessageSize(2, osdWriteResponse_); } - if (hasCloseFile()) { + if (((bitField0_ & 0x00000004) == 0x00000004)) { size += com.google.protobuf.CodedOutputStream - .computeBoolSize(3, getCloseFile()); + .computeBoolSize(3, closeFile_); } - if (hasCoordinates()) { + if (((bitField0_ & 0x00000008) == 0x00000008)) { size += com.google.protobuf.CodedOutputStream - .computeMessageSize(4, getCoordinates()); + .computeMessageSize(4, coordinates_); } size += getUnknownFields().getSerializedSize(); memoizedSerializedSize = size; return size; } - + + private static final long serialVersionUID = 0L; + @java.lang.Override + protected java.lang.Object writeReplace() + throws java.io.ObjectStreamException { + return super.writeReplace(); + } + public static org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_update_file_sizeRequest parseFrom( com.google.protobuf.ByteString data) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data).buildParsed(); + return PARSER.parseFrom(data); } public static org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_update_file_sizeRequest parseFrom( com.google.protobuf.ByteString data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(data, extensionRegistry); } public static org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_update_file_sizeRequest parseFrom(byte[] data) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data).buildParsed(); + return PARSER.parseFrom(data); } public static org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_update_file_sizeRequest parseFrom( byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(data, extensionRegistry); } public static org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_update_file_sizeRequest parseFrom(java.io.InputStream input) throws java.io.IOException { - return newBuilder().mergeFrom(input).buildParsed(); + return PARSER.parseFrom(input); } public static org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_update_file_sizeRequest parseFrom( java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - return newBuilder().mergeFrom(input, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(input, extensionRegistry); } public static org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_update_file_sizeRequest parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException { - Builder builder = newBuilder(); - if (builder.mergeDelimitedFrom(input)) { - return builder.buildParsed(); - } else { - return null; - } + return PARSER.parseDelimitedFrom(input); } public static org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_update_file_sizeRequest parseDelimitedFrom( java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - Builder builder = newBuilder(); - if (builder.mergeDelimitedFrom(input, extensionRegistry)) { - return builder.buildParsed(); - } else { - return null; - } + return PARSER.parseDelimitedFrom(input, extensionRegistry); } public static org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_update_file_sizeRequest parseFrom( com.google.protobuf.CodedInputStream input) throws java.io.IOException { - return newBuilder().mergeFrom(input).buildParsed(); + return PARSER.parseFrom(input); } public static org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_update_file_sizeRequest parseFrom( com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - return newBuilder().mergeFrom(input, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(input, extensionRegistry); } - + public static Builder newBuilder() { return Builder.create(); } public Builder newBuilderForType() { return newBuilder(); } public static Builder newBuilder(org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_update_file_sizeRequest prototype) { return newBuilder().mergeFrom(prototype); } public Builder toBuilder() { return newBuilder(this); } - + + @java.lang.Override + protected Builder newBuilderForType( + com.google.protobuf.GeneratedMessage.BuilderParent parent) { + Builder builder = new Builder(parent); + return builder; + } + /** + * Protobuf type {@code xtreemfs.pbrpc.xtreemfs_update_file_sizeRequest} + * + *
+     * updates the size of an open file
+     * 
+ */ public static final class Builder extends - com.google.protobuf.GeneratedMessage.Builder { - private org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_update_file_sizeRequest result; - + com.google.protobuf.GeneratedMessage.Builder + implements org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_update_file_sizeRequestOrBuilder { + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return org.xtreemfs.pbrpc.generatedinterfaces.MRC.internal_static_xtreemfs_pbrpc_xtreemfs_update_file_sizeRequest_descriptor; + } + + protected com.google.protobuf.GeneratedMessage.FieldAccessorTable + internalGetFieldAccessorTable() { + return org.xtreemfs.pbrpc.generatedinterfaces.MRC.internal_static_xtreemfs_pbrpc_xtreemfs_update_file_sizeRequest_fieldAccessorTable + .ensureFieldAccessorsInitialized( + org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_update_file_sizeRequest.class, org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_update_file_sizeRequest.Builder.class); + } + // Construct using org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_update_file_sizeRequest.newBuilder() - private Builder() {} - - private static Builder create() { - Builder builder = new Builder(); - builder.result = new org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_update_file_sizeRequest(); - return builder; + private Builder() { + maybeForceBuilderInitialization(); } - - protected org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_update_file_sizeRequest internalGetResult() { - return result; + + private Builder( + com.google.protobuf.GeneratedMessage.BuilderParent parent) { + super(parent); + maybeForceBuilderInitialization(); } - + private void maybeForceBuilderInitialization() { + if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) { + getXcapFieldBuilder(); + getOsdWriteResponseFieldBuilder(); + getCoordinatesFieldBuilder(); + } + } + private static Builder create() { + return new Builder(); + } + public Builder clear() { - if (result == null) { - throw new IllegalStateException( - "Cannot call clear() after build()."); + super.clear(); + if (xcapBuilder_ == null) { + xcap_ = org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.XCap.getDefaultInstance(); + } else { + xcapBuilder_.clear(); + } + bitField0_ = (bitField0_ & ~0x00000001); + if (osdWriteResponseBuilder_ == null) { + osdWriteResponse_ = org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.OSDWriteResponse.getDefaultInstance(); + } else { + osdWriteResponseBuilder_.clear(); } - result = new org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_update_file_sizeRequest(); + bitField0_ = (bitField0_ & ~0x00000002); + closeFile_ = false; + bitField0_ = (bitField0_ & ~0x00000004); + if (coordinatesBuilder_ == null) { + coordinates_ = org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.VivaldiCoordinates.getDefaultInstance(); + } else { + coordinatesBuilder_.clear(); + } + bitField0_ = (bitField0_ & ~0x00000008); return this; } - + public Builder clone() { - return create().mergeFrom(result); + return create().mergeFrom(buildPartial()); } - + public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() { - return org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_update_file_sizeRequest.getDescriptor(); + return org.xtreemfs.pbrpc.generatedinterfaces.MRC.internal_static_xtreemfs_pbrpc_xtreemfs_update_file_sizeRequest_descriptor; } - + public org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_update_file_sizeRequest getDefaultInstanceForType() { return org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_update_file_sizeRequest.getDefaultInstance(); } - - public boolean isInitialized() { - return result.isInitialized(); - } + public org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_update_file_sizeRequest build() { - if (result != null && !isInitialized()) { + org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_update_file_sizeRequest result = buildPartial(); + if (!result.isInitialized()) { throw newUninitializedMessageException(result); } - return buildPartial(); - } - - private org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_update_file_sizeRequest buildParsed() - throws com.google.protobuf.InvalidProtocolBufferException { - if (!isInitialized()) { - throw newUninitializedMessageException( - result).asInvalidProtocolBufferException(); - } - return buildPartial(); + return result; } - + public org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_update_file_sizeRequest buildPartial() { - if (result == null) { - throw new IllegalStateException( - "build() has already been called on this Builder."); + org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_update_file_sizeRequest result = new org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_update_file_sizeRequest(this); + int from_bitField0_ = bitField0_; + int to_bitField0_ = 0; + if (((from_bitField0_ & 0x00000001) == 0x00000001)) { + to_bitField0_ |= 0x00000001; + } + if (xcapBuilder_ == null) { + result.xcap_ = xcap_; + } else { + result.xcap_ = xcapBuilder_.build(); + } + if (((from_bitField0_ & 0x00000002) == 0x00000002)) { + to_bitField0_ |= 0x00000002; + } + if (osdWriteResponseBuilder_ == null) { + result.osdWriteResponse_ = osdWriteResponse_; + } else { + result.osdWriteResponse_ = osdWriteResponseBuilder_.build(); } - org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_update_file_sizeRequest returnMe = result; - result = null; - return returnMe; + if (((from_bitField0_ & 0x00000004) == 0x00000004)) { + to_bitField0_ |= 0x00000004; + } + result.closeFile_ = closeFile_; + if (((from_bitField0_ & 0x00000008) == 0x00000008)) { + to_bitField0_ |= 0x00000008; + } + if (coordinatesBuilder_ == null) { + result.coordinates_ = coordinates_; + } else { + result.coordinates_ = coordinatesBuilder_.build(); + } + result.bitField0_ = to_bitField0_; + onBuilt(); + return result; } - + public Builder mergeFrom(com.google.protobuf.Message other) { if (other instanceof org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_update_file_sizeRequest) { return mergeFrom((org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_update_file_sizeRequest)other); @@ -18426,7 +42879,7 @@ public final class MRC { return this; } } - + public Builder mergeFrom(org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_update_file_sizeRequest other) { if (other == org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_update_file_sizeRequest.getDefaultInstance()) return this; if (other.hasXcap()) { @@ -18444,427 +42897,1060 @@ public final class MRC { this.mergeUnknownFields(other.getUnknownFields()); return this; } - + + public final boolean isInitialized() { + if (!hasXcap()) { + + return false; + } + if (!hasOsdWriteResponse()) { + + return false; + } + if (!getXcap().isInitialized()) { + + return false; + } + if (hasCoordinates()) { + if (!getCoordinates().isInitialized()) { + + return false; + } + } + return true; + } + public Builder mergeFrom( com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - com.google.protobuf.UnknownFieldSet.Builder unknownFields = - com.google.protobuf.UnknownFieldSet.newBuilder( - this.getUnknownFields()); - while (true) { - int tag = input.readTag(); - switch (tag) { - case 0: - this.setUnknownFields(unknownFields.build()); - return this; - default: { - if (!parseUnknownField(input, unknownFields, - extensionRegistry, tag)) { - this.setUnknownFields(unknownFields.build()); - return this; - } - break; - } - case 10: { - org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.XCap.Builder subBuilder = org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.XCap.newBuilder(); - if (hasXcap()) { - subBuilder.mergeFrom(getXcap()); - } - input.readMessage(subBuilder, extensionRegistry); - setXcap(subBuilder.buildPartial()); - break; - } - case 18: { - org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.OSDWriteResponse.Builder subBuilder = org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.OSDWriteResponse.newBuilder(); - if (hasOsdWriteResponse()) { - subBuilder.mergeFrom(getOsdWriteResponse()); - } - input.readMessage(subBuilder, extensionRegistry); - setOsdWriteResponse(subBuilder.buildPartial()); - break; - } - case 24: { - setCloseFile(input.readBool()); - break; - } - case 34: { - org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.VivaldiCoordinates.Builder subBuilder = org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.VivaldiCoordinates.newBuilder(); - if (hasCoordinates()) { - subBuilder.mergeFrom(getCoordinates()); - } - input.readMessage(subBuilder, extensionRegistry); - setCoordinates(subBuilder.buildPartial()); - break; - } + org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_update_file_sizeRequest parsedMessage = null; + try { + parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + parsedMessage = (org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_update_file_sizeRequest) e.getUnfinishedMessage(); + throw e; + } finally { + if (parsedMessage != null) { + mergeFrom(parsedMessage); } } + return this; } - - + private int bitField0_; + // required .xtreemfs.pbrpc.XCap xcap = 1; + private org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.XCap xcap_ = org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.XCap.getDefaultInstance(); + private com.google.protobuf.SingleFieldBuilder< + org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.XCap, org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.XCap.Builder, org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.XCapOrBuilder> xcapBuilder_; + /** + * required .xtreemfs.pbrpc.XCap xcap = 1; + * + *
+       * the capability that was returned when opening the file
+       * 
+ */ public boolean hasXcap() { - return result.hasXcap(); - } + return ((bitField0_ & 0x00000001) == 0x00000001); + } + /** + * required .xtreemfs.pbrpc.XCap xcap = 1; + * + *
+       * the capability that was returned when opening the file
+       * 
+ */ public org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.XCap getXcap() { - return result.getXcap(); + if (xcapBuilder_ == null) { + return xcap_; + } else { + return xcapBuilder_.getMessage(); + } } + /** + * required .xtreemfs.pbrpc.XCap xcap = 1; + * + *
+       * the capability that was returned when opening the file
+       * 
+ */ public Builder setXcap(org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.XCap value) { - if (value == null) { - throw new NullPointerException(); + if (xcapBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + xcap_ = value; + onChanged(); + } else { + xcapBuilder_.setMessage(value); + } + bitField0_ |= 0x00000001; + return this; + } + /** + * required .xtreemfs.pbrpc.XCap xcap = 1; + * + *
+       * the capability that was returned when opening the file
+       * 
+ */ + public Builder setXcap( + org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.XCap.Builder builderForValue) { + if (xcapBuilder_ == null) { + xcap_ = builderForValue.build(); + onChanged(); + } else { + xcapBuilder_.setMessage(builderForValue.build()); } - result.hasXcap = true; - result.xcap_ = value; - return this; - } - public Builder setXcap(org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.XCap.Builder builderForValue) { - result.hasXcap = true; - result.xcap_ = builderForValue.build(); + bitField0_ |= 0x00000001; return this; } + /** + * required .xtreemfs.pbrpc.XCap xcap = 1; + * + *
+       * the capability that was returned when opening the file
+       * 
+ */ public Builder mergeXcap(org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.XCap value) { - if (result.hasXcap() && - result.xcap_ != org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.XCap.getDefaultInstance()) { - result.xcap_ = - org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.XCap.newBuilder(result.xcap_).mergeFrom(value).buildPartial(); + if (xcapBuilder_ == null) { + if (((bitField0_ & 0x00000001) == 0x00000001) && + xcap_ != org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.XCap.getDefaultInstance()) { + xcap_ = + org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.XCap.newBuilder(xcap_).mergeFrom(value).buildPartial(); + } else { + xcap_ = value; + } + onChanged(); } else { - result.xcap_ = value; + xcapBuilder_.mergeFrom(value); } - result.hasXcap = true; + bitField0_ |= 0x00000001; return this; } + /** + * required .xtreemfs.pbrpc.XCap xcap = 1; + * + *
+       * the capability that was returned when opening the file
+       * 
+ */ public Builder clearXcap() { - result.hasXcap = false; - result.xcap_ = org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.XCap.getDefaultInstance(); - return this; + if (xcapBuilder_ == null) { + xcap_ = org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.XCap.getDefaultInstance(); + onChanged(); + } else { + xcapBuilder_.clear(); + } + bitField0_ = (bitField0_ & ~0x00000001); + return this; + } + /** + * required .xtreemfs.pbrpc.XCap xcap = 1; + * + *
+       * the capability that was returned when opening the file
+       * 
+ */ + public org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.XCap.Builder getXcapBuilder() { + bitField0_ |= 0x00000001; + onChanged(); + return getXcapFieldBuilder().getBuilder(); + } + /** + * required .xtreemfs.pbrpc.XCap xcap = 1; + * + *
+       * the capability that was returned when opening the file
+       * 
+ */ + public org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.XCapOrBuilder getXcapOrBuilder() { + if (xcapBuilder_ != null) { + return xcapBuilder_.getMessageOrBuilder(); + } else { + return xcap_; + } + } + /** + * required .xtreemfs.pbrpc.XCap xcap = 1; + * + *
+       * the capability that was returned when opening the file
+       * 
+ */ + private com.google.protobuf.SingleFieldBuilder< + org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.XCap, org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.XCap.Builder, org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.XCapOrBuilder> + getXcapFieldBuilder() { + if (xcapBuilder_ == null) { + xcapBuilder_ = new com.google.protobuf.SingleFieldBuilder< + org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.XCap, org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.XCap.Builder, org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.XCapOrBuilder>( + xcap_, + getParentForChildren(), + isClean()); + xcap_ = null; + } + return xcapBuilder_; } - + // required .xtreemfs.pbrpc.OSDWriteResponse osd_write_response = 2; + private org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.OSDWriteResponse osdWriteResponse_ = org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.OSDWriteResponse.getDefaultInstance(); + private com.google.protobuf.SingleFieldBuilder< + org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.OSDWriteResponse, org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.OSDWriteResponse.Builder, org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.OSDWriteResponseOrBuilder> osdWriteResponseBuilder_; + /** + * required .xtreemfs.pbrpc.OSDWriteResponse osd_write_response = 2; + * + *
+       * the OSDWriteResponse received from an OSD that contains the new file size
+       * 
+ */ public boolean hasOsdWriteResponse() { - return result.hasOsdWriteResponse(); - } + return ((bitField0_ & 0x00000002) == 0x00000002); + } + /** + * required .xtreemfs.pbrpc.OSDWriteResponse osd_write_response = 2; + * + *
+       * the OSDWriteResponse received from an OSD that contains the new file size
+       * 
+ */ public org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.OSDWriteResponse getOsdWriteResponse() { - return result.getOsdWriteResponse(); + if (osdWriteResponseBuilder_ == null) { + return osdWriteResponse_; + } else { + return osdWriteResponseBuilder_.getMessage(); + } } + /** + * required .xtreemfs.pbrpc.OSDWriteResponse osd_write_response = 2; + * + *
+       * the OSDWriteResponse received from an OSD that contains the new file size
+       * 
+ */ public Builder setOsdWriteResponse(org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.OSDWriteResponse value) { - if (value == null) { - throw new NullPointerException(); + if (osdWriteResponseBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + osdWriteResponse_ = value; + onChanged(); + } else { + osdWriteResponseBuilder_.setMessage(value); + } + bitField0_ |= 0x00000002; + return this; + } + /** + * required .xtreemfs.pbrpc.OSDWriteResponse osd_write_response = 2; + * + *
+       * the OSDWriteResponse received from an OSD that contains the new file size
+       * 
+ */ + public Builder setOsdWriteResponse( + org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.OSDWriteResponse.Builder builderForValue) { + if (osdWriteResponseBuilder_ == null) { + osdWriteResponse_ = builderForValue.build(); + onChanged(); + } else { + osdWriteResponseBuilder_.setMessage(builderForValue.build()); } - result.hasOsdWriteResponse = true; - result.osdWriteResponse_ = value; - return this; - } - public Builder setOsdWriteResponse(org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.OSDWriteResponse.Builder builderForValue) { - result.hasOsdWriteResponse = true; - result.osdWriteResponse_ = builderForValue.build(); + bitField0_ |= 0x00000002; return this; } + /** + * required .xtreemfs.pbrpc.OSDWriteResponse osd_write_response = 2; + * + *
+       * the OSDWriteResponse received from an OSD that contains the new file size
+       * 
+ */ public Builder mergeOsdWriteResponse(org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.OSDWriteResponse value) { - if (result.hasOsdWriteResponse() && - result.osdWriteResponse_ != org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.OSDWriteResponse.getDefaultInstance()) { - result.osdWriteResponse_ = - org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.OSDWriteResponse.newBuilder(result.osdWriteResponse_).mergeFrom(value).buildPartial(); + if (osdWriteResponseBuilder_ == null) { + if (((bitField0_ & 0x00000002) == 0x00000002) && + osdWriteResponse_ != org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.OSDWriteResponse.getDefaultInstance()) { + osdWriteResponse_ = + org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.OSDWriteResponse.newBuilder(osdWriteResponse_).mergeFrom(value).buildPartial(); + } else { + osdWriteResponse_ = value; + } + onChanged(); } else { - result.osdWriteResponse_ = value; + osdWriteResponseBuilder_.mergeFrom(value); } - result.hasOsdWriteResponse = true; + bitField0_ |= 0x00000002; return this; } + /** + * required .xtreemfs.pbrpc.OSDWriteResponse osd_write_response = 2; + * + *
+       * the OSDWriteResponse received from an OSD that contains the new file size
+       * 
+ */ public Builder clearOsdWriteResponse() { - result.hasOsdWriteResponse = false; - result.osdWriteResponse_ = org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.OSDWriteResponse.getDefaultInstance(); - return this; + if (osdWriteResponseBuilder_ == null) { + osdWriteResponse_ = org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.OSDWriteResponse.getDefaultInstance(); + onChanged(); + } else { + osdWriteResponseBuilder_.clear(); + } + bitField0_ = (bitField0_ & ~0x00000002); + return this; + } + /** + * required .xtreemfs.pbrpc.OSDWriteResponse osd_write_response = 2; + * + *
+       * the OSDWriteResponse received from an OSD that contains the new file size
+       * 
+ */ + public org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.OSDWriteResponse.Builder getOsdWriteResponseBuilder() { + bitField0_ |= 0x00000002; + onChanged(); + return getOsdWriteResponseFieldBuilder().getBuilder(); + } + /** + * required .xtreemfs.pbrpc.OSDWriteResponse osd_write_response = 2; + * + *
+       * the OSDWriteResponse received from an OSD that contains the new file size
+       * 
+ */ + public org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.OSDWriteResponseOrBuilder getOsdWriteResponseOrBuilder() { + if (osdWriteResponseBuilder_ != null) { + return osdWriteResponseBuilder_.getMessageOrBuilder(); + } else { + return osdWriteResponse_; + } + } + /** + * required .xtreemfs.pbrpc.OSDWriteResponse osd_write_response = 2; + * + *
+       * the OSDWriteResponse received from an OSD that contains the new file size
+       * 
+ */ + private com.google.protobuf.SingleFieldBuilder< + org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.OSDWriteResponse, org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.OSDWriteResponse.Builder, org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.OSDWriteResponseOrBuilder> + getOsdWriteResponseFieldBuilder() { + if (osdWriteResponseBuilder_ == null) { + osdWriteResponseBuilder_ = new com.google.protobuf.SingleFieldBuilder< + org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.OSDWriteResponse, org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.OSDWriteResponse.Builder, org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.OSDWriteResponseOrBuilder>( + osdWriteResponse_, + getParentForChildren(), + isClean()); + osdWriteResponse_ = null; + } + return osdWriteResponseBuilder_; } - + // optional bool close_file = 3; + private boolean closeFile_ ; + /** + * optional bool close_file = 3; + * + *
+       * a flag indicating that the file is supposed to be closed
+       * 
+ */ public boolean hasCloseFile() { - return result.hasCloseFile(); - } + return ((bitField0_ & 0x00000004) == 0x00000004); + } + /** + * optional bool close_file = 3; + * + *
+       * a flag indicating that the file is supposed to be closed
+       * 
+ */ public boolean getCloseFile() { - return result.getCloseFile(); - } + return closeFile_; + } + /** + * optional bool close_file = 3; + * + *
+       * a flag indicating that the file is supposed to be closed
+       * 
+ */ public Builder setCloseFile(boolean value) { - result.hasCloseFile = true; - result.closeFile_ = value; - return this; - } + bitField0_ |= 0x00000004; + closeFile_ = value; + onChanged(); + return this; + } + /** + * optional bool close_file = 3; + * + *
+       * a flag indicating that the file is supposed to be closed
+       * 
+ */ public Builder clearCloseFile() { - result.hasCloseFile = false; - result.closeFile_ = false; + bitField0_ = (bitField0_ & ~0x00000004); + closeFile_ = false; + onChanged(); return this; } - + // optional .xtreemfs.pbrpc.VivaldiCoordinates coordinates = 4; + private org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.VivaldiCoordinates coordinates_ = org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.VivaldiCoordinates.getDefaultInstance(); + private com.google.protobuf.SingleFieldBuilder< + org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.VivaldiCoordinates, org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.VivaldiCoordinates.Builder, org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.VivaldiCoordinatesOrBuilder> coordinatesBuilder_; + /** + * optional .xtreemfs.pbrpc.VivaldiCoordinates coordinates = 4; + * + *
+       * the client's Vivaldi coordinates (e.g. used for creating replicas at
+       * specific locations when the file is closed)
+       * 
+ */ public boolean hasCoordinates() { - return result.hasCoordinates(); - } + return ((bitField0_ & 0x00000008) == 0x00000008); + } + /** + * optional .xtreemfs.pbrpc.VivaldiCoordinates coordinates = 4; + * + *
+       * the client's Vivaldi coordinates (e.g. used for creating replicas at
+       * specific locations when the file is closed)
+       * 
+ */ public org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.VivaldiCoordinates getCoordinates() { - return result.getCoordinates(); + if (coordinatesBuilder_ == null) { + return coordinates_; + } else { + return coordinatesBuilder_.getMessage(); + } } + /** + * optional .xtreemfs.pbrpc.VivaldiCoordinates coordinates = 4; + * + *
+       * the client's Vivaldi coordinates (e.g. used for creating replicas at
+       * specific locations when the file is closed)
+       * 
+ */ public Builder setCoordinates(org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.VivaldiCoordinates value) { - if (value == null) { - throw new NullPointerException(); + if (coordinatesBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + coordinates_ = value; + onChanged(); + } else { + coordinatesBuilder_.setMessage(value); + } + bitField0_ |= 0x00000008; + return this; + } + /** + * optional .xtreemfs.pbrpc.VivaldiCoordinates coordinates = 4; + * + *
+       * the client's Vivaldi coordinates (e.g. used for creating replicas at
+       * specific locations when the file is closed)
+       * 
+ */ + public Builder setCoordinates( + org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.VivaldiCoordinates.Builder builderForValue) { + if (coordinatesBuilder_ == null) { + coordinates_ = builderForValue.build(); + onChanged(); + } else { + coordinatesBuilder_.setMessage(builderForValue.build()); } - result.hasCoordinates = true; - result.coordinates_ = value; - return this; - } - public Builder setCoordinates(org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.VivaldiCoordinates.Builder builderForValue) { - result.hasCoordinates = true; - result.coordinates_ = builderForValue.build(); + bitField0_ |= 0x00000008; return this; } + /** + * optional .xtreemfs.pbrpc.VivaldiCoordinates coordinates = 4; + * + *
+       * the client's Vivaldi coordinates (e.g. used for creating replicas at
+       * specific locations when the file is closed)
+       * 
+ */ public Builder mergeCoordinates(org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.VivaldiCoordinates value) { - if (result.hasCoordinates() && - result.coordinates_ != org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.VivaldiCoordinates.getDefaultInstance()) { - result.coordinates_ = - org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.VivaldiCoordinates.newBuilder(result.coordinates_).mergeFrom(value).buildPartial(); + if (coordinatesBuilder_ == null) { + if (((bitField0_ & 0x00000008) == 0x00000008) && + coordinates_ != org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.VivaldiCoordinates.getDefaultInstance()) { + coordinates_ = + org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.VivaldiCoordinates.newBuilder(coordinates_).mergeFrom(value).buildPartial(); + } else { + coordinates_ = value; + } + onChanged(); } else { - result.coordinates_ = value; + coordinatesBuilder_.mergeFrom(value); } - result.hasCoordinates = true; + bitField0_ |= 0x00000008; return this; } + /** + * optional .xtreemfs.pbrpc.VivaldiCoordinates coordinates = 4; + * + *
+       * the client's Vivaldi coordinates (e.g. used for creating replicas at
+       * specific locations when the file is closed)
+       * 
+ */ public Builder clearCoordinates() { - result.hasCoordinates = false; - result.coordinates_ = org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.VivaldiCoordinates.getDefaultInstance(); - return this; + if (coordinatesBuilder_ == null) { + coordinates_ = org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.VivaldiCoordinates.getDefaultInstance(); + onChanged(); + } else { + coordinatesBuilder_.clear(); + } + bitField0_ = (bitField0_ & ~0x00000008); + return this; + } + /** + * optional .xtreemfs.pbrpc.VivaldiCoordinates coordinates = 4; + * + *
+       * the client's Vivaldi coordinates (e.g. used for creating replicas at
+       * specific locations when the file is closed)
+       * 
+ */ + public org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.VivaldiCoordinates.Builder getCoordinatesBuilder() { + bitField0_ |= 0x00000008; + onChanged(); + return getCoordinatesFieldBuilder().getBuilder(); + } + /** + * optional .xtreemfs.pbrpc.VivaldiCoordinates coordinates = 4; + * + *
+       * the client's Vivaldi coordinates (e.g. used for creating replicas at
+       * specific locations when the file is closed)
+       * 
+ */ + public org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.VivaldiCoordinatesOrBuilder getCoordinatesOrBuilder() { + if (coordinatesBuilder_ != null) { + return coordinatesBuilder_.getMessageOrBuilder(); + } else { + return coordinates_; + } + } + /** + * optional .xtreemfs.pbrpc.VivaldiCoordinates coordinates = 4; + * + *
+       * the client's Vivaldi coordinates (e.g. used for creating replicas at
+       * specific locations when the file is closed)
+       * 
+ */ + private com.google.protobuf.SingleFieldBuilder< + org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.VivaldiCoordinates, org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.VivaldiCoordinates.Builder, org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.VivaldiCoordinatesOrBuilder> + getCoordinatesFieldBuilder() { + if (coordinatesBuilder_ == null) { + coordinatesBuilder_ = new com.google.protobuf.SingleFieldBuilder< + org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.VivaldiCoordinates, org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.VivaldiCoordinates.Builder, org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.VivaldiCoordinatesOrBuilder>( + coordinates_, + getParentForChildren(), + isClean()); + coordinates_ = null; + } + return coordinatesBuilder_; } - + // @@protoc_insertion_point(builder_scope:xtreemfs.pbrpc.xtreemfs_update_file_sizeRequest) } - + static { defaultInstance = new xtreemfs_update_file_sizeRequest(true); - org.xtreemfs.pbrpc.generatedinterfaces.MRC.internalForceInit(); defaultInstance.initFields(); } - + // @@protoc_insertion_point(class_scope:xtreemfs.pbrpc.xtreemfs_update_file_sizeRequest) } - + + public interface xtreemfs_set_replica_update_policyRequestOrBuilder + extends com.google.protobuf.MessageOrBuilder { + + // required string file_id = 1; + /** + * required string file_id = 1; + * + *
+     * the file ID
+     * 
+ */ + boolean hasFileId(); + /** + * required string file_id = 1; + * + *
+     * the file ID
+     * 
+ */ + java.lang.String getFileId(); + /** + * required string file_id = 1; + * + *
+     * the file ID
+     * 
+ */ + com.google.protobuf.ByteString + getFileIdBytes(); + + // required string update_policy = 2; + /** + * required string update_policy = 2; + * + *
+     * the new replica update policy
+     * 
+ */ + boolean hasUpdatePolicy(); + /** + * required string update_policy = 2; + * + *
+     * the new replica update policy
+     * 
+ */ + java.lang.String getUpdatePolicy(); + /** + * required string update_policy = 2; + * + *
+     * the new replica update policy
+     * 
+ */ + com.google.protobuf.ByteString + getUpdatePolicyBytes(); + } + /** + * Protobuf type {@code xtreemfs.pbrpc.xtreemfs_set_replica_update_policyRequest} + * + *
+   * sets the replica update policy of a file by ID
+   * 
+ */ public static final class xtreemfs_set_replica_update_policyRequest extends - com.google.protobuf.GeneratedMessage { + com.google.protobuf.GeneratedMessage + implements xtreemfs_set_replica_update_policyRequestOrBuilder { // Use xtreemfs_set_replica_update_policyRequest.newBuilder() to construct. - private xtreemfs_set_replica_update_policyRequest() { - initFields(); + private xtreemfs_set_replica_update_policyRequest(com.google.protobuf.GeneratedMessage.Builder builder) { + super(builder); + this.unknownFields = builder.getUnknownFields(); } - private xtreemfs_set_replica_update_policyRequest(boolean noInit) {} - + private xtreemfs_set_replica_update_policyRequest(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); } + private static final xtreemfs_set_replica_update_policyRequest defaultInstance; public static xtreemfs_set_replica_update_policyRequest getDefaultInstance() { return defaultInstance; } - + public xtreemfs_set_replica_update_policyRequest getDefaultInstanceForType() { return defaultInstance; } - + + private final com.google.protobuf.UnknownFieldSet unknownFields; + @java.lang.Override + public final com.google.protobuf.UnknownFieldSet + getUnknownFields() { + return this.unknownFields; + } + private xtreemfs_set_replica_update_policyRequest( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + initFields(); + int mutable_bitField0_ = 0; + com.google.protobuf.UnknownFieldSet.Builder unknownFields = + com.google.protobuf.UnknownFieldSet.newBuilder(); + try { + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch (tag) { + case 0: + done = true; + break; + default: { + if (!parseUnknownField(input, unknownFields, + extensionRegistry, tag)) { + done = true; + } + break; + } + case 10: { + bitField0_ |= 0x00000001; + fileId_ = input.readBytes(); + break; + } + case 18: { + bitField0_ |= 0x00000002; + updatePolicy_ = input.readBytes(); + break; + } + } + } + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(this); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException( + e.getMessage()).setUnfinishedMessage(this); + } finally { + this.unknownFields = unknownFields.build(); + makeExtensionsImmutable(); + } + } public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { return org.xtreemfs.pbrpc.generatedinterfaces.MRC.internal_static_xtreemfs_pbrpc_xtreemfs_set_replica_update_policyRequest_descriptor; } - + protected com.google.protobuf.GeneratedMessage.FieldAccessorTable internalGetFieldAccessorTable() { - return org.xtreemfs.pbrpc.generatedinterfaces.MRC.internal_static_xtreemfs_pbrpc_xtreemfs_set_replica_update_policyRequest_fieldAccessorTable; + return org.xtreemfs.pbrpc.generatedinterfaces.MRC.internal_static_xtreemfs_pbrpc_xtreemfs_set_replica_update_policyRequest_fieldAccessorTable + .ensureFieldAccessorsInitialized( + org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_set_replica_update_policyRequest.class, org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_set_replica_update_policyRequest.Builder.class); + } + + public static com.google.protobuf.Parser PARSER = + new com.google.protobuf.AbstractParser() { + public xtreemfs_set_replica_update_policyRequest parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return new xtreemfs_set_replica_update_policyRequest(input, extensionRegistry); + } + }; + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; } - + + private int bitField0_; // required string file_id = 1; public static final int FILE_ID_FIELD_NUMBER = 1; - private boolean hasFileId; - private java.lang.String fileId_ = ""; - public boolean hasFileId() { return hasFileId; } - public java.lang.String getFileId() { return fileId_; } - + private java.lang.Object fileId_; + /** + * required string file_id = 1; + * + *
+     * the file ID
+     * 
+ */ + public boolean hasFileId() { + return ((bitField0_ & 0x00000001) == 0x00000001); + } + /** + * required string file_id = 1; + * + *
+     * the file ID
+     * 
+ */ + public java.lang.String getFileId() { + java.lang.Object ref = fileId_; + if (ref instanceof java.lang.String) { + return (java.lang.String) ref; + } else { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + if (bs.isValidUtf8()) { + fileId_ = s; + } + return s; + } + } + /** + * required string file_id = 1; + * + *
+     * the file ID
+     * 
+ */ + public com.google.protobuf.ByteString + getFileIdBytes() { + java.lang.Object ref = fileId_; + if (ref instanceof java.lang.String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + fileId_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + // required string update_policy = 2; public static final int UPDATE_POLICY_FIELD_NUMBER = 2; - private boolean hasUpdatePolicy; - private java.lang.String updatePolicy_ = ""; - public boolean hasUpdatePolicy() { return hasUpdatePolicy; } - public java.lang.String getUpdatePolicy() { return updatePolicy_; } - + private java.lang.Object updatePolicy_; + /** + * required string update_policy = 2; + * + *
+     * the new replica update policy
+     * 
+ */ + public boolean hasUpdatePolicy() { + return ((bitField0_ & 0x00000002) == 0x00000002); + } + /** + * required string update_policy = 2; + * + *
+     * the new replica update policy
+     * 
+ */ + public java.lang.String getUpdatePolicy() { + java.lang.Object ref = updatePolicy_; + if (ref instanceof java.lang.String) { + return (java.lang.String) ref; + } else { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + if (bs.isValidUtf8()) { + updatePolicy_ = s; + } + return s; + } + } + /** + * required string update_policy = 2; + * + *
+     * the new replica update policy
+     * 
+ */ + public com.google.protobuf.ByteString + getUpdatePolicyBytes() { + java.lang.Object ref = updatePolicy_; + if (ref instanceof java.lang.String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + updatePolicy_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + private void initFields() { + fileId_ = ""; + updatePolicy_ = ""; } + private byte memoizedIsInitialized = -1; public final boolean isInitialized() { - if (!hasFileId) return false; - if (!hasUpdatePolicy) return false; + byte isInitialized = memoizedIsInitialized; + if (isInitialized != -1) return isInitialized == 1; + + if (!hasFileId()) { + memoizedIsInitialized = 0; + return false; + } + if (!hasUpdatePolicy()) { + memoizedIsInitialized = 0; + return false; + } + memoizedIsInitialized = 1; return true; } - + public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException { getSerializedSize(); - if (hasFileId()) { - output.writeString(1, getFileId()); + if (((bitField0_ & 0x00000001) == 0x00000001)) { + output.writeBytes(1, getFileIdBytes()); } - if (hasUpdatePolicy()) { - output.writeString(2, getUpdatePolicy()); + if (((bitField0_ & 0x00000002) == 0x00000002)) { + output.writeBytes(2, getUpdatePolicyBytes()); } getUnknownFields().writeTo(output); } - + private int memoizedSerializedSize = -1; public int getSerializedSize() { int size = memoizedSerializedSize; if (size != -1) return size; - + size = 0; - if (hasFileId()) { + if (((bitField0_ & 0x00000001) == 0x00000001)) { size += com.google.protobuf.CodedOutputStream - .computeStringSize(1, getFileId()); + .computeBytesSize(1, getFileIdBytes()); } - if (hasUpdatePolicy()) { + if (((bitField0_ & 0x00000002) == 0x00000002)) { size += com.google.protobuf.CodedOutputStream - .computeStringSize(2, getUpdatePolicy()); + .computeBytesSize(2, getUpdatePolicyBytes()); } size += getUnknownFields().getSerializedSize(); memoizedSerializedSize = size; return size; } - + + private static final long serialVersionUID = 0L; + @java.lang.Override + protected java.lang.Object writeReplace() + throws java.io.ObjectStreamException { + return super.writeReplace(); + } + public static org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_set_replica_update_policyRequest parseFrom( com.google.protobuf.ByteString data) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data).buildParsed(); + return PARSER.parseFrom(data); } public static org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_set_replica_update_policyRequest parseFrom( com.google.protobuf.ByteString data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(data, extensionRegistry); } public static org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_set_replica_update_policyRequest parseFrom(byte[] data) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data).buildParsed(); + return PARSER.parseFrom(data); } public static org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_set_replica_update_policyRequest parseFrom( byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(data, extensionRegistry); } public static org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_set_replica_update_policyRequest parseFrom(java.io.InputStream input) throws java.io.IOException { - return newBuilder().mergeFrom(input).buildParsed(); + return PARSER.parseFrom(input); } public static org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_set_replica_update_policyRequest parseFrom( java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - return newBuilder().mergeFrom(input, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(input, extensionRegistry); } public static org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_set_replica_update_policyRequest parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException { - Builder builder = newBuilder(); - if (builder.mergeDelimitedFrom(input)) { - return builder.buildParsed(); - } else { - return null; - } + return PARSER.parseDelimitedFrom(input); } public static org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_set_replica_update_policyRequest parseDelimitedFrom( java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - Builder builder = newBuilder(); - if (builder.mergeDelimitedFrom(input, extensionRegistry)) { - return builder.buildParsed(); - } else { - return null; - } + return PARSER.parseDelimitedFrom(input, extensionRegistry); } public static org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_set_replica_update_policyRequest parseFrom( com.google.protobuf.CodedInputStream input) throws java.io.IOException { - return newBuilder().mergeFrom(input).buildParsed(); + return PARSER.parseFrom(input); } public static org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_set_replica_update_policyRequest parseFrom( com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - return newBuilder().mergeFrom(input, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(input, extensionRegistry); } - + public static Builder newBuilder() { return Builder.create(); } public Builder newBuilderForType() { return newBuilder(); } public static Builder newBuilder(org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_set_replica_update_policyRequest prototype) { return newBuilder().mergeFrom(prototype); } public Builder toBuilder() { return newBuilder(this); } - + + @java.lang.Override + protected Builder newBuilderForType( + com.google.protobuf.GeneratedMessage.BuilderParent parent) { + Builder builder = new Builder(parent); + return builder; + } + /** + * Protobuf type {@code xtreemfs.pbrpc.xtreemfs_set_replica_update_policyRequest} + * + *
+     * sets the replica update policy of a file by ID
+     * 
+ */ public static final class Builder extends - com.google.protobuf.GeneratedMessage.Builder { - private org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_set_replica_update_policyRequest result; - + com.google.protobuf.GeneratedMessage.Builder + implements org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_set_replica_update_policyRequestOrBuilder { + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return org.xtreemfs.pbrpc.generatedinterfaces.MRC.internal_static_xtreemfs_pbrpc_xtreemfs_set_replica_update_policyRequest_descriptor; + } + + protected com.google.protobuf.GeneratedMessage.FieldAccessorTable + internalGetFieldAccessorTable() { + return org.xtreemfs.pbrpc.generatedinterfaces.MRC.internal_static_xtreemfs_pbrpc_xtreemfs_set_replica_update_policyRequest_fieldAccessorTable + .ensureFieldAccessorsInitialized( + org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_set_replica_update_policyRequest.class, org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_set_replica_update_policyRequest.Builder.class); + } + // Construct using org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_set_replica_update_policyRequest.newBuilder() - private Builder() {} - - private static Builder create() { - Builder builder = new Builder(); - builder.result = new org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_set_replica_update_policyRequest(); - return builder; + private Builder() { + maybeForceBuilderInitialization(); } - - protected org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_set_replica_update_policyRequest internalGetResult() { - return result; + + private Builder( + com.google.protobuf.GeneratedMessage.BuilderParent parent) { + super(parent); + maybeForceBuilderInitialization(); } - - public Builder clear() { - if (result == null) { - throw new IllegalStateException( - "Cannot call clear() after build()."); + private void maybeForceBuilderInitialization() { + if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) { } - result = new org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_set_replica_update_policyRequest(); + } + private static Builder create() { + return new Builder(); + } + + public Builder clear() { + super.clear(); + fileId_ = ""; + bitField0_ = (bitField0_ & ~0x00000001); + updatePolicy_ = ""; + bitField0_ = (bitField0_ & ~0x00000002); return this; } - + public Builder clone() { - return create().mergeFrom(result); + return create().mergeFrom(buildPartial()); } - + public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() { - return org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_set_replica_update_policyRequest.getDescriptor(); + return org.xtreemfs.pbrpc.generatedinterfaces.MRC.internal_static_xtreemfs_pbrpc_xtreemfs_set_replica_update_policyRequest_descriptor; } - + public org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_set_replica_update_policyRequest getDefaultInstanceForType() { return org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_set_replica_update_policyRequest.getDefaultInstance(); } - - public boolean isInitialized() { - return result.isInitialized(); - } + public org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_set_replica_update_policyRequest build() { - if (result != null && !isInitialized()) { + org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_set_replica_update_policyRequest result = buildPartial(); + if (!result.isInitialized()) { throw newUninitializedMessageException(result); } - return buildPartial(); - } - - private org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_set_replica_update_policyRequest buildParsed() - throws com.google.protobuf.InvalidProtocolBufferException { - if (!isInitialized()) { - throw newUninitializedMessageException( - result).asInvalidProtocolBufferException(); - } - return buildPartial(); + return result; } - + public org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_set_replica_update_policyRequest buildPartial() { - if (result == null) { - throw new IllegalStateException( - "build() has already been called on this Builder."); - } - org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_set_replica_update_policyRequest returnMe = result; - result = null; - return returnMe; + org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_set_replica_update_policyRequest result = new org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_set_replica_update_policyRequest(this); + int from_bitField0_ = bitField0_; + int to_bitField0_ = 0; + if (((from_bitField0_ & 0x00000001) == 0x00000001)) { + to_bitField0_ |= 0x00000001; + } + result.fileId_ = fileId_; + if (((from_bitField0_ & 0x00000002) == 0x00000002)) { + to_bitField0_ |= 0x00000002; + } + result.updatePolicy_ = updatePolicy_; + result.bitField0_ = to_bitField0_; + onBuilt(); + return result; } - + public Builder mergeFrom(com.google.protobuf.Message other) { if (other instanceof org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_set_replica_update_policyRequest) { return mergeFrom((org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_set_replica_update_policyRequest)other); @@ -18873,314 +43959,640 @@ public final class MRC { return this; } } - + public Builder mergeFrom(org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_set_replica_update_policyRequest other) { if (other == org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_set_replica_update_policyRequest.getDefaultInstance()) return this; if (other.hasFileId()) { - setFileId(other.getFileId()); + bitField0_ |= 0x00000001; + fileId_ = other.fileId_; + onChanged(); } if (other.hasUpdatePolicy()) { - setUpdatePolicy(other.getUpdatePolicy()); + bitField0_ |= 0x00000002; + updatePolicy_ = other.updatePolicy_; + onChanged(); } this.mergeUnknownFields(other.getUnknownFields()); return this; } - + + public final boolean isInitialized() { + if (!hasFileId()) { + + return false; + } + if (!hasUpdatePolicy()) { + + return false; + } + return true; + } + public Builder mergeFrom( com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - com.google.protobuf.UnknownFieldSet.Builder unknownFields = - com.google.protobuf.UnknownFieldSet.newBuilder( - this.getUnknownFields()); - while (true) { - int tag = input.readTag(); - switch (tag) { - case 0: - this.setUnknownFields(unknownFields.build()); - return this; - default: { - if (!parseUnknownField(input, unknownFields, - extensionRegistry, tag)) { - this.setUnknownFields(unknownFields.build()); - return this; - } - break; - } - case 10: { - setFileId(input.readString()); - break; - } - case 18: { - setUpdatePolicy(input.readString()); - break; - } + org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_set_replica_update_policyRequest parsedMessage = null; + try { + parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + parsedMessage = (org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_set_replica_update_policyRequest) e.getUnfinishedMessage(); + throw e; + } finally { + if (parsedMessage != null) { + mergeFrom(parsedMessage); } } + return this; } - - + private int bitField0_; + // required string file_id = 1; + private java.lang.Object fileId_ = ""; + /** + * required string file_id = 1; + * + *
+       * the file ID
+       * 
+ */ public boolean hasFileId() { - return result.hasFileId(); - } + return ((bitField0_ & 0x00000001) == 0x00000001); + } + /** + * required string file_id = 1; + * + *
+       * the file ID
+       * 
+ */ public java.lang.String getFileId() { - return result.getFileId(); - } - public Builder setFileId(java.lang.String value) { + java.lang.Object ref = fileId_; + if (!(ref instanceof java.lang.String)) { + java.lang.String s = ((com.google.protobuf.ByteString) ref) + .toStringUtf8(); + fileId_ = s; + return s; + } else { + return (java.lang.String) ref; + } + } + /** + * required string file_id = 1; + * + *
+       * the file ID
+       * 
+ */ + public com.google.protobuf.ByteString + getFileIdBytes() { + java.lang.Object ref = fileId_; + if (ref instanceof String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + fileId_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + /** + * required string file_id = 1; + * + *
+       * the file ID
+       * 
+ */ + public Builder setFileId( + java.lang.String value) { + if (value == null) { + throw new NullPointerException(); + } + bitField0_ |= 0x00000001; + fileId_ = value; + onChanged(); + return this; + } + /** + * required string file_id = 1; + * + *
+       * the file ID
+       * 
+ */ + public Builder clearFileId() { + bitField0_ = (bitField0_ & ~0x00000001); + fileId_ = getDefaultInstance().getFileId(); + onChanged(); + return this; + } + /** + * required string file_id = 1; + * + *
+       * the file ID
+       * 
+ */ + public Builder setFileIdBytes( + com.google.protobuf.ByteString value) { if (value == null) { throw new NullPointerException(); } - result.hasFileId = true; - result.fileId_ = value; - return this; - } - public Builder clearFileId() { - result.hasFileId = false; - result.fileId_ = getDefaultInstance().getFileId(); + bitField0_ |= 0x00000001; + fileId_ = value; + onChanged(); return this; } - + // required string update_policy = 2; + private java.lang.Object updatePolicy_ = ""; + /** + * required string update_policy = 2; + * + *
+       * the new replica update policy
+       * 
+ */ public boolean hasUpdatePolicy() { - return result.hasUpdatePolicy(); - } + return ((bitField0_ & 0x00000002) == 0x00000002); + } + /** + * required string update_policy = 2; + * + *
+       * the new replica update policy
+       * 
+ */ public java.lang.String getUpdatePolicy() { - return result.getUpdatePolicy(); - } - public Builder setUpdatePolicy(java.lang.String value) { + java.lang.Object ref = updatePolicy_; + if (!(ref instanceof java.lang.String)) { + java.lang.String s = ((com.google.protobuf.ByteString) ref) + .toStringUtf8(); + updatePolicy_ = s; + return s; + } else { + return (java.lang.String) ref; + } + } + /** + * required string update_policy = 2; + * + *
+       * the new replica update policy
+       * 
+ */ + public com.google.protobuf.ByteString + getUpdatePolicyBytes() { + java.lang.Object ref = updatePolicy_; + if (ref instanceof String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + updatePolicy_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + /** + * required string update_policy = 2; + * + *
+       * the new replica update policy
+       * 
+ */ + public Builder setUpdatePolicy( + java.lang.String value) { if (value == null) { throw new NullPointerException(); } - result.hasUpdatePolicy = true; - result.updatePolicy_ = value; - return this; - } + bitField0_ |= 0x00000002; + updatePolicy_ = value; + onChanged(); + return this; + } + /** + * required string update_policy = 2; + * + *
+       * the new replica update policy
+       * 
+ */ public Builder clearUpdatePolicy() { - result.hasUpdatePolicy = false; - result.updatePolicy_ = getDefaultInstance().getUpdatePolicy(); + bitField0_ = (bitField0_ & ~0x00000002); + updatePolicy_ = getDefaultInstance().getUpdatePolicy(); + onChanged(); + return this; + } + /** + * required string update_policy = 2; + * + *
+       * the new replica update policy
+       * 
+ */ + public Builder setUpdatePolicyBytes( + com.google.protobuf.ByteString value) { + if (value == null) { + throw new NullPointerException(); + } + bitField0_ |= 0x00000002; + updatePolicy_ = value; + onChanged(); return this; } - + // @@protoc_insertion_point(builder_scope:xtreemfs.pbrpc.xtreemfs_set_replica_update_policyRequest) } - + static { defaultInstance = new xtreemfs_set_replica_update_policyRequest(true); - org.xtreemfs.pbrpc.generatedinterfaces.MRC.internalForceInit(); defaultInstance.initFields(); } - + // @@protoc_insertion_point(class_scope:xtreemfs.pbrpc.xtreemfs_set_replica_update_policyRequest) } - + + public interface xtreemfs_set_replica_update_policyResponseOrBuilder + extends com.google.protobuf.MessageOrBuilder { + + // required string old_update_policy = 1; + /** + * required string old_update_policy = 1; + * + *
+     * the old replica update policy
+     * 
+ */ + boolean hasOldUpdatePolicy(); + /** + * required string old_update_policy = 1; + * + *
+     * the old replica update policy
+     * 
+ */ + java.lang.String getOldUpdatePolicy(); + /** + * required string old_update_policy = 1; + * + *
+     * the old replica update policy
+     * 
+ */ + com.google.protobuf.ByteString + getOldUpdatePolicyBytes(); + } + /** + * Protobuf type {@code xtreemfs.pbrpc.xtreemfs_set_replica_update_policyResponse} + * + *
+   * returns the old replica update policy when setting a new one
+   * 
+ */ public static final class xtreemfs_set_replica_update_policyResponse extends - com.google.protobuf.GeneratedMessage { + com.google.protobuf.GeneratedMessage + implements xtreemfs_set_replica_update_policyResponseOrBuilder { // Use xtreemfs_set_replica_update_policyResponse.newBuilder() to construct. - private xtreemfs_set_replica_update_policyResponse() { - initFields(); + private xtreemfs_set_replica_update_policyResponse(com.google.protobuf.GeneratedMessage.Builder builder) { + super(builder); + this.unknownFields = builder.getUnknownFields(); } - private xtreemfs_set_replica_update_policyResponse(boolean noInit) {} - + private xtreemfs_set_replica_update_policyResponse(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); } + private static final xtreemfs_set_replica_update_policyResponse defaultInstance; public static xtreemfs_set_replica_update_policyResponse getDefaultInstance() { return defaultInstance; } - + public xtreemfs_set_replica_update_policyResponse getDefaultInstanceForType() { return defaultInstance; } - + + private final com.google.protobuf.UnknownFieldSet unknownFields; + @java.lang.Override + public final com.google.protobuf.UnknownFieldSet + getUnknownFields() { + return this.unknownFields; + } + private xtreemfs_set_replica_update_policyResponse( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + initFields(); + int mutable_bitField0_ = 0; + com.google.protobuf.UnknownFieldSet.Builder unknownFields = + com.google.protobuf.UnknownFieldSet.newBuilder(); + try { + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch (tag) { + case 0: + done = true; + break; + default: { + if (!parseUnknownField(input, unknownFields, + extensionRegistry, tag)) { + done = true; + } + break; + } + case 10: { + bitField0_ |= 0x00000001; + oldUpdatePolicy_ = input.readBytes(); + break; + } + } + } + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(this); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException( + e.getMessage()).setUnfinishedMessage(this); + } finally { + this.unknownFields = unknownFields.build(); + makeExtensionsImmutable(); + } + } public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { return org.xtreemfs.pbrpc.generatedinterfaces.MRC.internal_static_xtreemfs_pbrpc_xtreemfs_set_replica_update_policyResponse_descriptor; } - + protected com.google.protobuf.GeneratedMessage.FieldAccessorTable internalGetFieldAccessorTable() { - return org.xtreemfs.pbrpc.generatedinterfaces.MRC.internal_static_xtreemfs_pbrpc_xtreemfs_set_replica_update_policyResponse_fieldAccessorTable; + return org.xtreemfs.pbrpc.generatedinterfaces.MRC.internal_static_xtreemfs_pbrpc_xtreemfs_set_replica_update_policyResponse_fieldAccessorTable + .ensureFieldAccessorsInitialized( + org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_set_replica_update_policyResponse.class, org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_set_replica_update_policyResponse.Builder.class); } - + + public static com.google.protobuf.Parser PARSER = + new com.google.protobuf.AbstractParser() { + public xtreemfs_set_replica_update_policyResponse parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return new xtreemfs_set_replica_update_policyResponse(input, extensionRegistry); + } + }; + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; + } + + private int bitField0_; // required string old_update_policy = 1; public static final int OLD_UPDATE_POLICY_FIELD_NUMBER = 1; - private boolean hasOldUpdatePolicy; - private java.lang.String oldUpdatePolicy_ = ""; - public boolean hasOldUpdatePolicy() { return hasOldUpdatePolicy; } - public java.lang.String getOldUpdatePolicy() { return oldUpdatePolicy_; } - + private java.lang.Object oldUpdatePolicy_; + /** + * required string old_update_policy = 1; + * + *
+     * the old replica update policy
+     * 
+ */ + public boolean hasOldUpdatePolicy() { + return ((bitField0_ & 0x00000001) == 0x00000001); + } + /** + * required string old_update_policy = 1; + * + *
+     * the old replica update policy
+     * 
+ */ + public java.lang.String getOldUpdatePolicy() { + java.lang.Object ref = oldUpdatePolicy_; + if (ref instanceof java.lang.String) { + return (java.lang.String) ref; + } else { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + if (bs.isValidUtf8()) { + oldUpdatePolicy_ = s; + } + return s; + } + } + /** + * required string old_update_policy = 1; + * + *
+     * the old replica update policy
+     * 
+ */ + public com.google.protobuf.ByteString + getOldUpdatePolicyBytes() { + java.lang.Object ref = oldUpdatePolicy_; + if (ref instanceof java.lang.String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + oldUpdatePolicy_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + private void initFields() { + oldUpdatePolicy_ = ""; } + private byte memoizedIsInitialized = -1; public final boolean isInitialized() { - if (!hasOldUpdatePolicy) return false; + byte isInitialized = memoizedIsInitialized; + if (isInitialized != -1) return isInitialized == 1; + + if (!hasOldUpdatePolicy()) { + memoizedIsInitialized = 0; + return false; + } + memoizedIsInitialized = 1; return true; } - + public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException { getSerializedSize(); - if (hasOldUpdatePolicy()) { - output.writeString(1, getOldUpdatePolicy()); + if (((bitField0_ & 0x00000001) == 0x00000001)) { + output.writeBytes(1, getOldUpdatePolicyBytes()); } getUnknownFields().writeTo(output); } - + private int memoizedSerializedSize = -1; public int getSerializedSize() { int size = memoizedSerializedSize; if (size != -1) return size; - + size = 0; - if (hasOldUpdatePolicy()) { + if (((bitField0_ & 0x00000001) == 0x00000001)) { size += com.google.protobuf.CodedOutputStream - .computeStringSize(1, getOldUpdatePolicy()); + .computeBytesSize(1, getOldUpdatePolicyBytes()); } size += getUnknownFields().getSerializedSize(); memoizedSerializedSize = size; return size; } - + + private static final long serialVersionUID = 0L; + @java.lang.Override + protected java.lang.Object writeReplace() + throws java.io.ObjectStreamException { + return super.writeReplace(); + } + public static org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_set_replica_update_policyResponse parseFrom( com.google.protobuf.ByteString data) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data).buildParsed(); + return PARSER.parseFrom(data); } public static org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_set_replica_update_policyResponse parseFrom( com.google.protobuf.ByteString data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(data, extensionRegistry); } public static org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_set_replica_update_policyResponse parseFrom(byte[] data) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data).buildParsed(); + return PARSER.parseFrom(data); } public static org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_set_replica_update_policyResponse parseFrom( byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(data, extensionRegistry); } public static org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_set_replica_update_policyResponse parseFrom(java.io.InputStream input) throws java.io.IOException { - return newBuilder().mergeFrom(input).buildParsed(); + return PARSER.parseFrom(input); } public static org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_set_replica_update_policyResponse parseFrom( java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - return newBuilder().mergeFrom(input, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(input, extensionRegistry); } public static org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_set_replica_update_policyResponse parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException { - Builder builder = newBuilder(); - if (builder.mergeDelimitedFrom(input)) { - return builder.buildParsed(); - } else { - return null; - } + return PARSER.parseDelimitedFrom(input); } public static org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_set_replica_update_policyResponse parseDelimitedFrom( java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - Builder builder = newBuilder(); - if (builder.mergeDelimitedFrom(input, extensionRegistry)) { - return builder.buildParsed(); - } else { - return null; - } + return PARSER.parseDelimitedFrom(input, extensionRegistry); } public static org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_set_replica_update_policyResponse parseFrom( com.google.protobuf.CodedInputStream input) throws java.io.IOException { - return newBuilder().mergeFrom(input).buildParsed(); + return PARSER.parseFrom(input); } public static org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_set_replica_update_policyResponse parseFrom( com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - return newBuilder().mergeFrom(input, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(input, extensionRegistry); } - + public static Builder newBuilder() { return Builder.create(); } public Builder newBuilderForType() { return newBuilder(); } public static Builder newBuilder(org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_set_replica_update_policyResponse prototype) { return newBuilder().mergeFrom(prototype); } public Builder toBuilder() { return newBuilder(this); } - + + @java.lang.Override + protected Builder newBuilderForType( + com.google.protobuf.GeneratedMessage.BuilderParent parent) { + Builder builder = new Builder(parent); + return builder; + } + /** + * Protobuf type {@code xtreemfs.pbrpc.xtreemfs_set_replica_update_policyResponse} + * + *
+     * returns the old replica update policy when setting a new one
+     * 
+ */ public static final class Builder extends - com.google.protobuf.GeneratedMessage.Builder { - private org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_set_replica_update_policyResponse result; - + com.google.protobuf.GeneratedMessage.Builder + implements org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_set_replica_update_policyResponseOrBuilder { + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return org.xtreemfs.pbrpc.generatedinterfaces.MRC.internal_static_xtreemfs_pbrpc_xtreemfs_set_replica_update_policyResponse_descriptor; + } + + protected com.google.protobuf.GeneratedMessage.FieldAccessorTable + internalGetFieldAccessorTable() { + return org.xtreemfs.pbrpc.generatedinterfaces.MRC.internal_static_xtreemfs_pbrpc_xtreemfs_set_replica_update_policyResponse_fieldAccessorTable + .ensureFieldAccessorsInitialized( + org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_set_replica_update_policyResponse.class, org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_set_replica_update_policyResponse.Builder.class); + } + // Construct using org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_set_replica_update_policyResponse.newBuilder() - private Builder() {} - - private static Builder create() { - Builder builder = new Builder(); - builder.result = new org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_set_replica_update_policyResponse(); - return builder; + private Builder() { + maybeForceBuilderInitialization(); } - - protected org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_set_replica_update_policyResponse internalGetResult() { - return result; + + private Builder( + com.google.protobuf.GeneratedMessage.BuilderParent parent) { + super(parent); + maybeForceBuilderInitialization(); } - - public Builder clear() { - if (result == null) { - throw new IllegalStateException( - "Cannot call clear() after build()."); + private void maybeForceBuilderInitialization() { + if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) { } - result = new org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_set_replica_update_policyResponse(); + } + private static Builder create() { + return new Builder(); + } + + public Builder clear() { + super.clear(); + oldUpdatePolicy_ = ""; + bitField0_ = (bitField0_ & ~0x00000001); return this; } - + public Builder clone() { - return create().mergeFrom(result); + return create().mergeFrom(buildPartial()); } - + public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() { - return org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_set_replica_update_policyResponse.getDescriptor(); + return org.xtreemfs.pbrpc.generatedinterfaces.MRC.internal_static_xtreemfs_pbrpc_xtreemfs_set_replica_update_policyResponse_descriptor; } - + public org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_set_replica_update_policyResponse getDefaultInstanceForType() { return org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_set_replica_update_policyResponse.getDefaultInstance(); } - - public boolean isInitialized() { - return result.isInitialized(); - } + public org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_set_replica_update_policyResponse build() { - if (result != null && !isInitialized()) { + org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_set_replica_update_policyResponse result = buildPartial(); + if (!result.isInitialized()) { throw newUninitializedMessageException(result); } - return buildPartial(); - } - - private org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_set_replica_update_policyResponse buildParsed() - throws com.google.protobuf.InvalidProtocolBufferException { - if (!isInitialized()) { - throw newUninitializedMessageException( - result).asInvalidProtocolBufferException(); - } - return buildPartial(); + return result; } - + public org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_set_replica_update_policyResponse buildPartial() { - if (result == null) { - throw new IllegalStateException( - "build() has already been called on this Builder."); - } - org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_set_replica_update_policyResponse returnMe = result; - result = null; - return returnMe; + org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_set_replica_update_policyResponse result = new org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_set_replica_update_policyResponse(this); + int from_bitField0_ = bitField0_; + int to_bitField0_ = 0; + if (((from_bitField0_ & 0x00000001) == 0x00000001)) { + to_bitField0_ |= 0x00000001; + } + result.oldUpdatePolicy_ = oldUpdatePolicy_; + result.bitField0_ = to_bitField0_; + onBuilt(); + return result; } - + public Builder mergeFrom(com.google.protobuf.Message other) { if (other instanceof org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_set_replica_update_policyResponse) { return mergeFrom((org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_set_replica_update_policyResponse)other); @@ -19189,301 +44601,598 @@ public final class MRC { return this; } } - + public Builder mergeFrom(org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_set_replica_update_policyResponse other) { if (other == org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_set_replica_update_policyResponse.getDefaultInstance()) return this; if (other.hasOldUpdatePolicy()) { - setOldUpdatePolicy(other.getOldUpdatePolicy()); + bitField0_ |= 0x00000001; + oldUpdatePolicy_ = other.oldUpdatePolicy_; + onChanged(); } this.mergeUnknownFields(other.getUnknownFields()); return this; } - + + public final boolean isInitialized() { + if (!hasOldUpdatePolicy()) { + + return false; + } + return true; + } + public Builder mergeFrom( com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - com.google.protobuf.UnknownFieldSet.Builder unknownFields = - com.google.protobuf.UnknownFieldSet.newBuilder( - this.getUnknownFields()); - while (true) { - int tag = input.readTag(); - switch (tag) { - case 0: - this.setUnknownFields(unknownFields.build()); - return this; - default: { - if (!parseUnknownField(input, unknownFields, - extensionRegistry, tag)) { - this.setUnknownFields(unknownFields.build()); - return this; - } - break; - } - case 10: { - setOldUpdatePolicy(input.readString()); - break; - } + org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_set_replica_update_policyResponse parsedMessage = null; + try { + parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + parsedMessage = (org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_set_replica_update_policyResponse) e.getUnfinishedMessage(); + throw e; + } finally { + if (parsedMessage != null) { + mergeFrom(parsedMessage); } } + return this; } - - + private int bitField0_; + // required string old_update_policy = 1; + private java.lang.Object oldUpdatePolicy_ = ""; + /** + * required string old_update_policy = 1; + * + *
+       * the old replica update policy
+       * 
+ */ public boolean hasOldUpdatePolicy() { - return result.hasOldUpdatePolicy(); - } + return ((bitField0_ & 0x00000001) == 0x00000001); + } + /** + * required string old_update_policy = 1; + * + *
+       * the old replica update policy
+       * 
+ */ public java.lang.String getOldUpdatePolicy() { - return result.getOldUpdatePolicy(); - } - public Builder setOldUpdatePolicy(java.lang.String value) { + java.lang.Object ref = oldUpdatePolicy_; + if (!(ref instanceof java.lang.String)) { + java.lang.String s = ((com.google.protobuf.ByteString) ref) + .toStringUtf8(); + oldUpdatePolicy_ = s; + return s; + } else { + return (java.lang.String) ref; + } + } + /** + * required string old_update_policy = 1; + * + *
+       * the old replica update policy
+       * 
+ */ + public com.google.protobuf.ByteString + getOldUpdatePolicyBytes() { + java.lang.Object ref = oldUpdatePolicy_; + if (ref instanceof String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + oldUpdatePolicy_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + /** + * required string old_update_policy = 1; + * + *
+       * the old replica update policy
+       * 
+ */ + public Builder setOldUpdatePolicy( + java.lang.String value) { if (value == null) { throw new NullPointerException(); } - result.hasOldUpdatePolicy = true; - result.oldUpdatePolicy_ = value; - return this; - } + bitField0_ |= 0x00000001; + oldUpdatePolicy_ = value; + onChanged(); + return this; + } + /** + * required string old_update_policy = 1; + * + *
+       * the old replica update policy
+       * 
+ */ public Builder clearOldUpdatePolicy() { - result.hasOldUpdatePolicy = false; - result.oldUpdatePolicy_ = getDefaultInstance().getOldUpdatePolicy(); + bitField0_ = (bitField0_ & ~0x00000001); + oldUpdatePolicy_ = getDefaultInstance().getOldUpdatePolicy(); + onChanged(); + return this; + } + /** + * required string old_update_policy = 1; + * + *
+       * the old replica update policy
+       * 
+ */ + public Builder setOldUpdatePolicyBytes( + com.google.protobuf.ByteString value) { + if (value == null) { + throw new NullPointerException(); + } + bitField0_ |= 0x00000001; + oldUpdatePolicy_ = value; + onChanged(); return this; } - + // @@protoc_insertion_point(builder_scope:xtreemfs.pbrpc.xtreemfs_set_replica_update_policyResponse) } - + static { defaultInstance = new xtreemfs_set_replica_update_policyResponse(true); - org.xtreemfs.pbrpc.generatedinterfaces.MRC.internalForceInit(); defaultInstance.initFields(); } - + // @@protoc_insertion_point(class_scope:xtreemfs.pbrpc.xtreemfs_set_replica_update_policyResponse) } - + + public interface xtreemfs_set_read_only_xattrRequestOrBuilder + extends com.google.protobuf.MessageOrBuilder { + + // required string file_id = 1; + /** + * required string file_id = 1; + * + *
+     * the file ID
+     * 
+ */ + boolean hasFileId(); + /** + * required string file_id = 1; + * + *
+     * the file ID
+     * 
+ */ + java.lang.String getFileId(); + /** + * required string file_id = 1; + * + *
+     * the file ID
+     * 
+ */ + com.google.protobuf.ByteString + getFileIdBytes(); + + // required bool value = 2; + /** + * required bool value = 2; + * + *
+     * the read-only flag to set
+     * 
+ */ + boolean hasValue(); + /** + * required bool value = 2; + * + *
+     * the read-only flag to set
+     * 
+ */ + boolean getValue(); + } + /** + * Protobuf type {@code xtreemfs.pbrpc.xtreemfs_set_read_only_xattrRequest} + * + *
+   * sets the read-only flag of a file by ID
+   * 
+ */ public static final class xtreemfs_set_read_only_xattrRequest extends - com.google.protobuf.GeneratedMessage { + com.google.protobuf.GeneratedMessage + implements xtreemfs_set_read_only_xattrRequestOrBuilder { // Use xtreemfs_set_read_only_xattrRequest.newBuilder() to construct. - private xtreemfs_set_read_only_xattrRequest() { - initFields(); + private xtreemfs_set_read_only_xattrRequest(com.google.protobuf.GeneratedMessage.Builder builder) { + super(builder); + this.unknownFields = builder.getUnknownFields(); } - private xtreemfs_set_read_only_xattrRequest(boolean noInit) {} - + private xtreemfs_set_read_only_xattrRequest(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); } + private static final xtreemfs_set_read_only_xattrRequest defaultInstance; public static xtreemfs_set_read_only_xattrRequest getDefaultInstance() { return defaultInstance; } - + public xtreemfs_set_read_only_xattrRequest getDefaultInstanceForType() { return defaultInstance; } - + + private final com.google.protobuf.UnknownFieldSet unknownFields; + @java.lang.Override + public final com.google.protobuf.UnknownFieldSet + getUnknownFields() { + return this.unknownFields; + } + private xtreemfs_set_read_only_xattrRequest( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + initFields(); + int mutable_bitField0_ = 0; + com.google.protobuf.UnknownFieldSet.Builder unknownFields = + com.google.protobuf.UnknownFieldSet.newBuilder(); + try { + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch (tag) { + case 0: + done = true; + break; + default: { + if (!parseUnknownField(input, unknownFields, + extensionRegistry, tag)) { + done = true; + } + break; + } + case 10: { + bitField0_ |= 0x00000001; + fileId_ = input.readBytes(); + break; + } + case 16: { + bitField0_ |= 0x00000002; + value_ = input.readBool(); + break; + } + } + } + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(this); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException( + e.getMessage()).setUnfinishedMessage(this); + } finally { + this.unknownFields = unknownFields.build(); + makeExtensionsImmutable(); + } + } public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { return org.xtreemfs.pbrpc.generatedinterfaces.MRC.internal_static_xtreemfs_pbrpc_xtreemfs_set_read_only_xattrRequest_descriptor; } - + protected com.google.protobuf.GeneratedMessage.FieldAccessorTable internalGetFieldAccessorTable() { - return org.xtreemfs.pbrpc.generatedinterfaces.MRC.internal_static_xtreemfs_pbrpc_xtreemfs_set_read_only_xattrRequest_fieldAccessorTable; + return org.xtreemfs.pbrpc.generatedinterfaces.MRC.internal_static_xtreemfs_pbrpc_xtreemfs_set_read_only_xattrRequest_fieldAccessorTable + .ensureFieldAccessorsInitialized( + org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_set_read_only_xattrRequest.class, org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_set_read_only_xattrRequest.Builder.class); + } + + public static com.google.protobuf.Parser PARSER = + new com.google.protobuf.AbstractParser() { + public xtreemfs_set_read_only_xattrRequest parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return new xtreemfs_set_read_only_xattrRequest(input, extensionRegistry); + } + }; + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; } - + + private int bitField0_; // required string file_id = 1; public static final int FILE_ID_FIELD_NUMBER = 1; - private boolean hasFileId; - private java.lang.String fileId_ = ""; - public boolean hasFileId() { return hasFileId; } - public java.lang.String getFileId() { return fileId_; } - + private java.lang.Object fileId_; + /** + * required string file_id = 1; + * + *
+     * the file ID
+     * 
+ */ + public boolean hasFileId() { + return ((bitField0_ & 0x00000001) == 0x00000001); + } + /** + * required string file_id = 1; + * + *
+     * the file ID
+     * 
+ */ + public java.lang.String getFileId() { + java.lang.Object ref = fileId_; + if (ref instanceof java.lang.String) { + return (java.lang.String) ref; + } else { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + if (bs.isValidUtf8()) { + fileId_ = s; + } + return s; + } + } + /** + * required string file_id = 1; + * + *
+     * the file ID
+     * 
+ */ + public com.google.protobuf.ByteString + getFileIdBytes() { + java.lang.Object ref = fileId_; + if (ref instanceof java.lang.String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + fileId_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + // required bool value = 2; public static final int VALUE_FIELD_NUMBER = 2; - private boolean hasValue; - private boolean value_ = false; - public boolean hasValue() { return hasValue; } - public boolean getValue() { return value_; } - + private boolean value_; + /** + * required bool value = 2; + * + *
+     * the read-only flag to set
+     * 
+ */ + public boolean hasValue() { + return ((bitField0_ & 0x00000002) == 0x00000002); + } + /** + * required bool value = 2; + * + *
+     * the read-only flag to set
+     * 
+ */ + public boolean getValue() { + return value_; + } + private void initFields() { + fileId_ = ""; + value_ = false; } + private byte memoizedIsInitialized = -1; public final boolean isInitialized() { - if (!hasFileId) return false; - if (!hasValue) return false; + byte isInitialized = memoizedIsInitialized; + if (isInitialized != -1) return isInitialized == 1; + + if (!hasFileId()) { + memoizedIsInitialized = 0; + return false; + } + if (!hasValue()) { + memoizedIsInitialized = 0; + return false; + } + memoizedIsInitialized = 1; return true; } - + public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException { getSerializedSize(); - if (hasFileId()) { - output.writeString(1, getFileId()); + if (((bitField0_ & 0x00000001) == 0x00000001)) { + output.writeBytes(1, getFileIdBytes()); } - if (hasValue()) { - output.writeBool(2, getValue()); + if (((bitField0_ & 0x00000002) == 0x00000002)) { + output.writeBool(2, value_); } getUnknownFields().writeTo(output); } - + private int memoizedSerializedSize = -1; public int getSerializedSize() { int size = memoizedSerializedSize; if (size != -1) return size; - + size = 0; - if (hasFileId()) { + if (((bitField0_ & 0x00000001) == 0x00000001)) { size += com.google.protobuf.CodedOutputStream - .computeStringSize(1, getFileId()); + .computeBytesSize(1, getFileIdBytes()); } - if (hasValue()) { + if (((bitField0_ & 0x00000002) == 0x00000002)) { size += com.google.protobuf.CodedOutputStream - .computeBoolSize(2, getValue()); + .computeBoolSize(2, value_); } size += getUnknownFields().getSerializedSize(); memoizedSerializedSize = size; return size; } - + + private static final long serialVersionUID = 0L; + @java.lang.Override + protected java.lang.Object writeReplace() + throws java.io.ObjectStreamException { + return super.writeReplace(); + } + public static org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_set_read_only_xattrRequest parseFrom( com.google.protobuf.ByteString data) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data).buildParsed(); + return PARSER.parseFrom(data); } public static org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_set_read_only_xattrRequest parseFrom( com.google.protobuf.ByteString data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(data, extensionRegistry); } public static org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_set_read_only_xattrRequest parseFrom(byte[] data) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data).buildParsed(); + return PARSER.parseFrom(data); } public static org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_set_read_only_xattrRequest parseFrom( byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(data, extensionRegistry); } public static org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_set_read_only_xattrRequest parseFrom(java.io.InputStream input) throws java.io.IOException { - return newBuilder().mergeFrom(input).buildParsed(); + return PARSER.parseFrom(input); } public static org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_set_read_only_xattrRequest parseFrom( java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - return newBuilder().mergeFrom(input, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(input, extensionRegistry); } public static org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_set_read_only_xattrRequest parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException { - Builder builder = newBuilder(); - if (builder.mergeDelimitedFrom(input)) { - return builder.buildParsed(); - } else { - return null; - } + return PARSER.parseDelimitedFrom(input); } public static org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_set_read_only_xattrRequest parseDelimitedFrom( java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - Builder builder = newBuilder(); - if (builder.mergeDelimitedFrom(input, extensionRegistry)) { - return builder.buildParsed(); - } else { - return null; - } + return PARSER.parseDelimitedFrom(input, extensionRegistry); } public static org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_set_read_only_xattrRequest parseFrom( com.google.protobuf.CodedInputStream input) throws java.io.IOException { - return newBuilder().mergeFrom(input).buildParsed(); + return PARSER.parseFrom(input); } public static org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_set_read_only_xattrRequest parseFrom( com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - return newBuilder().mergeFrom(input, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(input, extensionRegistry); } - + public static Builder newBuilder() { return Builder.create(); } public Builder newBuilderForType() { return newBuilder(); } public static Builder newBuilder(org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_set_read_only_xattrRequest prototype) { return newBuilder().mergeFrom(prototype); } public Builder toBuilder() { return newBuilder(this); } - + + @java.lang.Override + protected Builder newBuilderForType( + com.google.protobuf.GeneratedMessage.BuilderParent parent) { + Builder builder = new Builder(parent); + return builder; + } + /** + * Protobuf type {@code xtreemfs.pbrpc.xtreemfs_set_read_only_xattrRequest} + * + *
+     * sets the read-only flag of a file by ID
+     * 
+ */ public static final class Builder extends - com.google.protobuf.GeneratedMessage.Builder { - private org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_set_read_only_xattrRequest result; - + com.google.protobuf.GeneratedMessage.Builder + implements org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_set_read_only_xattrRequestOrBuilder { + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return org.xtreemfs.pbrpc.generatedinterfaces.MRC.internal_static_xtreemfs_pbrpc_xtreemfs_set_read_only_xattrRequest_descriptor; + } + + protected com.google.protobuf.GeneratedMessage.FieldAccessorTable + internalGetFieldAccessorTable() { + return org.xtreemfs.pbrpc.generatedinterfaces.MRC.internal_static_xtreemfs_pbrpc_xtreemfs_set_read_only_xattrRequest_fieldAccessorTable + .ensureFieldAccessorsInitialized( + org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_set_read_only_xattrRequest.class, org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_set_read_only_xattrRequest.Builder.class); + } + // Construct using org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_set_read_only_xattrRequest.newBuilder() - private Builder() {} - - private static Builder create() { - Builder builder = new Builder(); - builder.result = new org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_set_read_only_xattrRequest(); - return builder; + private Builder() { + maybeForceBuilderInitialization(); } - - protected org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_set_read_only_xattrRequest internalGetResult() { - return result; + + private Builder( + com.google.protobuf.GeneratedMessage.BuilderParent parent) { + super(parent); + maybeForceBuilderInitialization(); } - - public Builder clear() { - if (result == null) { - throw new IllegalStateException( - "Cannot call clear() after build()."); + private void maybeForceBuilderInitialization() { + if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) { } - result = new org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_set_read_only_xattrRequest(); + } + private static Builder create() { + return new Builder(); + } + + public Builder clear() { + super.clear(); + fileId_ = ""; + bitField0_ = (bitField0_ & ~0x00000001); + value_ = false; + bitField0_ = (bitField0_ & ~0x00000002); return this; } - + public Builder clone() { - return create().mergeFrom(result); + return create().mergeFrom(buildPartial()); } - + public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() { - return org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_set_read_only_xattrRequest.getDescriptor(); + return org.xtreemfs.pbrpc.generatedinterfaces.MRC.internal_static_xtreemfs_pbrpc_xtreemfs_set_read_only_xattrRequest_descriptor; } - + public org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_set_read_only_xattrRequest getDefaultInstanceForType() { return org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_set_read_only_xattrRequest.getDefaultInstance(); } - - public boolean isInitialized() { - return result.isInitialized(); - } + public org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_set_read_only_xattrRequest build() { - if (result != null && !isInitialized()) { + org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_set_read_only_xattrRequest result = buildPartial(); + if (!result.isInitialized()) { throw newUninitializedMessageException(result); } - return buildPartial(); - } - - private org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_set_read_only_xattrRequest buildParsed() - throws com.google.protobuf.InvalidProtocolBufferException { - if (!isInitialized()) { - throw newUninitializedMessageException( - result).asInvalidProtocolBufferException(); - } - return buildPartial(); + return result; } - + public org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_set_read_only_xattrRequest buildPartial() { - if (result == null) { - throw new IllegalStateException( - "build() has already been called on this Builder."); - } - org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_set_read_only_xattrRequest returnMe = result; - result = null; - return returnMe; + org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_set_read_only_xattrRequest result = new org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_set_read_only_xattrRequest(this); + int from_bitField0_ = bitField0_; + int to_bitField0_ = 0; + if (((from_bitField0_ & 0x00000001) == 0x00000001)) { + to_bitField0_ |= 0x00000001; + } + result.fileId_ = fileId_; + if (((from_bitField0_ & 0x00000002) == 0x00000002)) { + to_bitField0_ |= 0x00000002; + } + result.value_ = value_; + result.bitField0_ = to_bitField0_; + onBuilt(); + return result; } - + public Builder mergeFrom(com.google.protobuf.Message other) { if (other instanceof org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_set_read_only_xattrRequest) { return mergeFrom((org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_set_read_only_xattrRequest)other); @@ -19492,11 +45201,13 @@ public final class MRC { return this; } } - + public Builder mergeFrom(org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_set_read_only_xattrRequest other) { if (other == org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_set_read_only_xattrRequest.getDefaultInstance()) return this; if (other.hasFileId()) { - setFileId(other.getFileId()); + bitField0_ |= 0x00000001; + fileId_ = other.fileId_; + onChanged(); } if (other.hasValue()) { setValue(other.getValue()); @@ -19504,299 +45215,511 @@ public final class MRC { this.mergeUnknownFields(other.getUnknownFields()); return this; } - + + public final boolean isInitialized() { + if (!hasFileId()) { + + return false; + } + if (!hasValue()) { + + return false; + } + return true; + } + public Builder mergeFrom( com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - com.google.protobuf.UnknownFieldSet.Builder unknownFields = - com.google.protobuf.UnknownFieldSet.newBuilder( - this.getUnknownFields()); - while (true) { - int tag = input.readTag(); - switch (tag) { - case 0: - this.setUnknownFields(unknownFields.build()); - return this; - default: { - if (!parseUnknownField(input, unknownFields, - extensionRegistry, tag)) { - this.setUnknownFields(unknownFields.build()); - return this; - } - break; - } - case 10: { - setFileId(input.readString()); - break; - } - case 16: { - setValue(input.readBool()); - break; - } + org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_set_read_only_xattrRequest parsedMessage = null; + try { + parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + parsedMessage = (org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_set_read_only_xattrRequest) e.getUnfinishedMessage(); + throw e; + } finally { + if (parsedMessage != null) { + mergeFrom(parsedMessage); } } + return this; } - - + private int bitField0_; + // required string file_id = 1; + private java.lang.Object fileId_ = ""; + /** + * required string file_id = 1; + * + *
+       * the file ID
+       * 
+ */ public boolean hasFileId() { - return result.hasFileId(); - } + return ((bitField0_ & 0x00000001) == 0x00000001); + } + /** + * required string file_id = 1; + * + *
+       * the file ID
+       * 
+ */ public java.lang.String getFileId() { - return result.getFileId(); - } - public Builder setFileId(java.lang.String value) { + java.lang.Object ref = fileId_; + if (!(ref instanceof java.lang.String)) { + java.lang.String s = ((com.google.protobuf.ByteString) ref) + .toStringUtf8(); + fileId_ = s; + return s; + } else { + return (java.lang.String) ref; + } + } + /** + * required string file_id = 1; + * + *
+       * the file ID
+       * 
+ */ + public com.google.protobuf.ByteString + getFileIdBytes() { + java.lang.Object ref = fileId_; + if (ref instanceof String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + fileId_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + /** + * required string file_id = 1; + * + *
+       * the file ID
+       * 
+ */ + public Builder setFileId( + java.lang.String value) { if (value == null) { throw new NullPointerException(); } - result.hasFileId = true; - result.fileId_ = value; - return this; - } + bitField0_ |= 0x00000001; + fileId_ = value; + onChanged(); + return this; + } + /** + * required string file_id = 1; + * + *
+       * the file ID
+       * 
+ */ public Builder clearFileId() { - result.hasFileId = false; - result.fileId_ = getDefaultInstance().getFileId(); + bitField0_ = (bitField0_ & ~0x00000001); + fileId_ = getDefaultInstance().getFileId(); + onChanged(); + return this; + } + /** + * required string file_id = 1; + * + *
+       * the file ID
+       * 
+ */ + public Builder setFileIdBytes( + com.google.protobuf.ByteString value) { + if (value == null) { + throw new NullPointerException(); + } + bitField0_ |= 0x00000001; + fileId_ = value; + onChanged(); return this; } - + // required bool value = 2; + private boolean value_ ; + /** + * required bool value = 2; + * + *
+       * the read-only flag to set
+       * 
+ */ public boolean hasValue() { - return result.hasValue(); - } + return ((bitField0_ & 0x00000002) == 0x00000002); + } + /** + * required bool value = 2; + * + *
+       * the read-only flag to set
+       * 
+ */ public boolean getValue() { - return result.getValue(); - } + return value_; + } + /** + * required bool value = 2; + * + *
+       * the read-only flag to set
+       * 
+ */ public Builder setValue(boolean value) { - result.hasValue = true; - result.value_ = value; - return this; - } + bitField0_ |= 0x00000002; + value_ = value; + onChanged(); + return this; + } + /** + * required bool value = 2; + * + *
+       * the read-only flag to set
+       * 
+ */ public Builder clearValue() { - result.hasValue = false; - result.value_ = false; + bitField0_ = (bitField0_ & ~0x00000002); + value_ = false; + onChanged(); return this; } - + // @@protoc_insertion_point(builder_scope:xtreemfs.pbrpc.xtreemfs_set_read_only_xattrRequest) } - + static { defaultInstance = new xtreemfs_set_read_only_xattrRequest(true); - org.xtreemfs.pbrpc.generatedinterfaces.MRC.internalForceInit(); defaultInstance.initFields(); } - + // @@protoc_insertion_point(class_scope:xtreemfs.pbrpc.xtreemfs_set_read_only_xattrRequest) } - + + public interface xtreemfs_set_read_only_xattrResponseOrBuilder + extends com.google.protobuf.MessageOrBuilder { + + // required bool was_set = 1; + /** + * required bool was_set = 1; + */ + boolean hasWasSet(); + /** + * required bool was_set = 1; + */ + boolean getWasSet(); + } + /** + * Protobuf type {@code xtreemfs.pbrpc.xtreemfs_set_read_only_xattrResponse} + */ public static final class xtreemfs_set_read_only_xattrResponse extends - com.google.protobuf.GeneratedMessage { + com.google.protobuf.GeneratedMessage + implements xtreemfs_set_read_only_xattrResponseOrBuilder { // Use xtreemfs_set_read_only_xattrResponse.newBuilder() to construct. - private xtreemfs_set_read_only_xattrResponse() { - initFields(); + private xtreemfs_set_read_only_xattrResponse(com.google.protobuf.GeneratedMessage.Builder builder) { + super(builder); + this.unknownFields = builder.getUnknownFields(); } - private xtreemfs_set_read_only_xattrResponse(boolean noInit) {} - + private xtreemfs_set_read_only_xattrResponse(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); } + private static final xtreemfs_set_read_only_xattrResponse defaultInstance; public static xtreemfs_set_read_only_xattrResponse getDefaultInstance() { return defaultInstance; } - + public xtreemfs_set_read_only_xattrResponse getDefaultInstanceForType() { return defaultInstance; } - + + private final com.google.protobuf.UnknownFieldSet unknownFields; + @java.lang.Override + public final com.google.protobuf.UnknownFieldSet + getUnknownFields() { + return this.unknownFields; + } + private xtreemfs_set_read_only_xattrResponse( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + initFields(); + int mutable_bitField0_ = 0; + com.google.protobuf.UnknownFieldSet.Builder unknownFields = + com.google.protobuf.UnknownFieldSet.newBuilder(); + try { + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch (tag) { + case 0: + done = true; + break; + default: { + if (!parseUnknownField(input, unknownFields, + extensionRegistry, tag)) { + done = true; + } + break; + } + case 8: { + bitField0_ |= 0x00000001; + wasSet_ = input.readBool(); + break; + } + } + } + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(this); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException( + e.getMessage()).setUnfinishedMessage(this); + } finally { + this.unknownFields = unknownFields.build(); + makeExtensionsImmutable(); + } + } public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { return org.xtreemfs.pbrpc.generatedinterfaces.MRC.internal_static_xtreemfs_pbrpc_xtreemfs_set_read_only_xattrResponse_descriptor; } - + protected com.google.protobuf.GeneratedMessage.FieldAccessorTable internalGetFieldAccessorTable() { - return org.xtreemfs.pbrpc.generatedinterfaces.MRC.internal_static_xtreemfs_pbrpc_xtreemfs_set_read_only_xattrResponse_fieldAccessorTable; + return org.xtreemfs.pbrpc.generatedinterfaces.MRC.internal_static_xtreemfs_pbrpc_xtreemfs_set_read_only_xattrResponse_fieldAccessorTable + .ensureFieldAccessorsInitialized( + org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_set_read_only_xattrResponse.class, org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_set_read_only_xattrResponse.Builder.class); + } + + public static com.google.protobuf.Parser PARSER = + new com.google.protobuf.AbstractParser() { + public xtreemfs_set_read_only_xattrResponse parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return new xtreemfs_set_read_only_xattrResponse(input, extensionRegistry); + } + }; + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; } - + + private int bitField0_; // required bool was_set = 1; public static final int WAS_SET_FIELD_NUMBER = 1; - private boolean hasWasSet; - private boolean wasSet_ = false; - public boolean hasWasSet() { return hasWasSet; } - public boolean getWasSet() { return wasSet_; } - + private boolean wasSet_; + /** + * required bool was_set = 1; + */ + public boolean hasWasSet() { + return ((bitField0_ & 0x00000001) == 0x00000001); + } + /** + * required bool was_set = 1; + */ + public boolean getWasSet() { + return wasSet_; + } + private void initFields() { + wasSet_ = false; } + private byte memoizedIsInitialized = -1; public final boolean isInitialized() { - if (!hasWasSet) return false; + byte isInitialized = memoizedIsInitialized; + if (isInitialized != -1) return isInitialized == 1; + + if (!hasWasSet()) { + memoizedIsInitialized = 0; + return false; + } + memoizedIsInitialized = 1; return true; } - + public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException { getSerializedSize(); - if (hasWasSet()) { - output.writeBool(1, getWasSet()); + if (((bitField0_ & 0x00000001) == 0x00000001)) { + output.writeBool(1, wasSet_); } getUnknownFields().writeTo(output); } - + private int memoizedSerializedSize = -1; public int getSerializedSize() { int size = memoizedSerializedSize; if (size != -1) return size; - + size = 0; - if (hasWasSet()) { + if (((bitField0_ & 0x00000001) == 0x00000001)) { size += com.google.protobuf.CodedOutputStream - .computeBoolSize(1, getWasSet()); + .computeBoolSize(1, wasSet_); } size += getUnknownFields().getSerializedSize(); memoizedSerializedSize = size; return size; } - + + private static final long serialVersionUID = 0L; + @java.lang.Override + protected java.lang.Object writeReplace() + throws java.io.ObjectStreamException { + return super.writeReplace(); + } + public static org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_set_read_only_xattrResponse parseFrom( com.google.protobuf.ByteString data) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data).buildParsed(); + return PARSER.parseFrom(data); } public static org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_set_read_only_xattrResponse parseFrom( com.google.protobuf.ByteString data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(data, extensionRegistry); } public static org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_set_read_only_xattrResponse parseFrom(byte[] data) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data).buildParsed(); + return PARSER.parseFrom(data); } public static org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_set_read_only_xattrResponse parseFrom( byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(data, extensionRegistry); } public static org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_set_read_only_xattrResponse parseFrom(java.io.InputStream input) throws java.io.IOException { - return newBuilder().mergeFrom(input).buildParsed(); + return PARSER.parseFrom(input); } public static org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_set_read_only_xattrResponse parseFrom( java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - return newBuilder().mergeFrom(input, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(input, extensionRegistry); } public static org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_set_read_only_xattrResponse parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException { - Builder builder = newBuilder(); - if (builder.mergeDelimitedFrom(input)) { - return builder.buildParsed(); - } else { - return null; - } + return PARSER.parseDelimitedFrom(input); } public static org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_set_read_only_xattrResponse parseDelimitedFrom( java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - Builder builder = newBuilder(); - if (builder.mergeDelimitedFrom(input, extensionRegistry)) { - return builder.buildParsed(); - } else { - return null; - } + return PARSER.parseDelimitedFrom(input, extensionRegistry); } public static org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_set_read_only_xattrResponse parseFrom( com.google.protobuf.CodedInputStream input) throws java.io.IOException { - return newBuilder().mergeFrom(input).buildParsed(); + return PARSER.parseFrom(input); } public static org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_set_read_only_xattrResponse parseFrom( com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - return newBuilder().mergeFrom(input, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(input, extensionRegistry); } - + public static Builder newBuilder() { return Builder.create(); } public Builder newBuilderForType() { return newBuilder(); } public static Builder newBuilder(org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_set_read_only_xattrResponse prototype) { return newBuilder().mergeFrom(prototype); } public Builder toBuilder() { return newBuilder(this); } - + + @java.lang.Override + protected Builder newBuilderForType( + com.google.protobuf.GeneratedMessage.BuilderParent parent) { + Builder builder = new Builder(parent); + return builder; + } + /** + * Protobuf type {@code xtreemfs.pbrpc.xtreemfs_set_read_only_xattrResponse} + */ public static final class Builder extends - com.google.protobuf.GeneratedMessage.Builder { - private org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_set_read_only_xattrResponse result; - + com.google.protobuf.GeneratedMessage.Builder + implements org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_set_read_only_xattrResponseOrBuilder { + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return org.xtreemfs.pbrpc.generatedinterfaces.MRC.internal_static_xtreemfs_pbrpc_xtreemfs_set_read_only_xattrResponse_descriptor; + } + + protected com.google.protobuf.GeneratedMessage.FieldAccessorTable + internalGetFieldAccessorTable() { + return org.xtreemfs.pbrpc.generatedinterfaces.MRC.internal_static_xtreemfs_pbrpc_xtreemfs_set_read_only_xattrResponse_fieldAccessorTable + .ensureFieldAccessorsInitialized( + org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_set_read_only_xattrResponse.class, org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_set_read_only_xattrResponse.Builder.class); + } + // Construct using org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_set_read_only_xattrResponse.newBuilder() - private Builder() {} - - private static Builder create() { - Builder builder = new Builder(); - builder.result = new org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_set_read_only_xattrResponse(); - return builder; + private Builder() { + maybeForceBuilderInitialization(); } - - protected org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_set_read_only_xattrResponse internalGetResult() { - return result; + + private Builder( + com.google.protobuf.GeneratedMessage.BuilderParent parent) { + super(parent); + maybeForceBuilderInitialization(); } - - public Builder clear() { - if (result == null) { - throw new IllegalStateException( - "Cannot call clear() after build()."); + private void maybeForceBuilderInitialization() { + if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) { } - result = new org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_set_read_only_xattrResponse(); + } + private static Builder create() { + return new Builder(); + } + + public Builder clear() { + super.clear(); + wasSet_ = false; + bitField0_ = (bitField0_ & ~0x00000001); return this; } - + public Builder clone() { - return create().mergeFrom(result); + return create().mergeFrom(buildPartial()); } - + public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() { - return org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_set_read_only_xattrResponse.getDescriptor(); + return org.xtreemfs.pbrpc.generatedinterfaces.MRC.internal_static_xtreemfs_pbrpc_xtreemfs_set_read_only_xattrResponse_descriptor; } - + public org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_set_read_only_xattrResponse getDefaultInstanceForType() { return org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_set_read_only_xattrResponse.getDefaultInstance(); } - - public boolean isInitialized() { - return result.isInitialized(); - } + public org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_set_read_only_xattrResponse build() { - if (result != null && !isInitialized()) { + org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_set_read_only_xattrResponse result = buildPartial(); + if (!result.isInitialized()) { throw newUninitializedMessageException(result); } - return buildPartial(); - } - - private org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_set_read_only_xattrResponse buildParsed() - throws com.google.protobuf.InvalidProtocolBufferException { - if (!isInitialized()) { - throw newUninitializedMessageException( - result).asInvalidProtocolBufferException(); - } - return buildPartial(); + return result; } - + public org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_set_read_only_xattrResponse buildPartial() { - if (result == null) { - throw new IllegalStateException( - "build() has already been called on this Builder."); - } - org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_set_read_only_xattrResponse returnMe = result; - result = null; - return returnMe; + org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_set_read_only_xattrResponse result = new org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_set_read_only_xattrResponse(this); + int from_bitField0_ = bitField0_; + int to_bitField0_ = 0; + if (((from_bitField0_ & 0x00000001) == 0x00000001)) { + to_bitField0_ |= 0x00000001; + } + result.wasSet_ = wasSet_; + result.bitField0_ = to_bitField0_; + onBuilt(); + return result; } - + public Builder mergeFrom(com.google.protobuf.Message other) { if (other instanceof org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_set_read_only_xattrResponse) { return mergeFrom((org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_set_read_only_xattrResponse)other); @@ -19805,7 +45728,7 @@ public final class MRC { return this; } } - + public Builder mergeFrom(org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_set_read_only_xattrResponse other) { if (other == org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_set_read_only_xattrResponse.getDefaultInstance()) return this; if (other.hasWasSet()) { @@ -19814,274 +45737,425 @@ public final class MRC { this.mergeUnknownFields(other.getUnknownFields()); return this; } - + + public final boolean isInitialized() { + if (!hasWasSet()) { + + return false; + } + return true; + } + public Builder mergeFrom( com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - com.google.protobuf.UnknownFieldSet.Builder unknownFields = - com.google.protobuf.UnknownFieldSet.newBuilder( - this.getUnknownFields()); - while (true) { - int tag = input.readTag(); - switch (tag) { - case 0: - this.setUnknownFields(unknownFields.build()); - return this; - default: { - if (!parseUnknownField(input, unknownFields, - extensionRegistry, tag)) { - this.setUnknownFields(unknownFields.build()); - return this; - } - break; - } - case 8: { - setWasSet(input.readBool()); - break; - } + org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_set_read_only_xattrResponse parsedMessage = null; + try { + parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + parsedMessage = (org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_set_read_only_xattrResponse) e.getUnfinishedMessage(); + throw e; + } finally { + if (parsedMessage != null) { + mergeFrom(parsedMessage); } } + return this; } - - + private int bitField0_; + // required bool was_set = 1; + private boolean wasSet_ ; + /** + * required bool was_set = 1; + */ public boolean hasWasSet() { - return result.hasWasSet(); + return ((bitField0_ & 0x00000001) == 0x00000001); } + /** + * required bool was_set = 1; + */ public boolean getWasSet() { - return result.getWasSet(); + return wasSet_; } + /** + * required bool was_set = 1; + */ public Builder setWasSet(boolean value) { - result.hasWasSet = true; - result.wasSet_ = value; + bitField0_ |= 0x00000001; + wasSet_ = value; + onChanged(); return this; } + /** + * required bool was_set = 1; + */ public Builder clearWasSet() { - result.hasWasSet = false; - result.wasSet_ = false; + bitField0_ = (bitField0_ & ~0x00000001); + wasSet_ = false; + onChanged(); return this; } - + // @@protoc_insertion_point(builder_scope:xtreemfs.pbrpc.xtreemfs_set_read_only_xattrResponse) } - + static { defaultInstance = new xtreemfs_set_read_only_xattrResponse(true); - org.xtreemfs.pbrpc.generatedinterfaces.MRC.internalForceInit(); defaultInstance.initFields(); } - + // @@protoc_insertion_point(class_scope:xtreemfs.pbrpc.xtreemfs_set_read_only_xattrResponse) } - + + public interface xtreemfs_get_file_credentialsRequestOrBuilder + extends com.google.protobuf.MessageOrBuilder { + + // required string file_id = 1; + /** + * required string file_id = 1; + */ + boolean hasFileId(); + /** + * required string file_id = 1; + */ + java.lang.String getFileId(); + /** + * required string file_id = 1; + */ + com.google.protobuf.ByteString + getFileIdBytes(); + } + /** + * Protobuf type {@code xtreemfs.pbrpc.xtreemfs_get_file_credentialsRequest} + */ public static final class xtreemfs_get_file_credentialsRequest extends - com.google.protobuf.GeneratedMessage { + com.google.protobuf.GeneratedMessage + implements xtreemfs_get_file_credentialsRequestOrBuilder { // Use xtreemfs_get_file_credentialsRequest.newBuilder() to construct. - private xtreemfs_get_file_credentialsRequest() { - initFields(); + private xtreemfs_get_file_credentialsRequest(com.google.protobuf.GeneratedMessage.Builder builder) { + super(builder); + this.unknownFields = builder.getUnknownFields(); } - private xtreemfs_get_file_credentialsRequest(boolean noInit) {} - + private xtreemfs_get_file_credentialsRequest(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); } + private static final xtreemfs_get_file_credentialsRequest defaultInstance; public static xtreemfs_get_file_credentialsRequest getDefaultInstance() { return defaultInstance; } - + public xtreemfs_get_file_credentialsRequest getDefaultInstanceForType() { return defaultInstance; } - + + private final com.google.protobuf.UnknownFieldSet unknownFields; + @java.lang.Override + public final com.google.protobuf.UnknownFieldSet + getUnknownFields() { + return this.unknownFields; + } + private xtreemfs_get_file_credentialsRequest( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + initFields(); + int mutable_bitField0_ = 0; + com.google.protobuf.UnknownFieldSet.Builder unknownFields = + com.google.protobuf.UnknownFieldSet.newBuilder(); + try { + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch (tag) { + case 0: + done = true; + break; + default: { + if (!parseUnknownField(input, unknownFields, + extensionRegistry, tag)) { + done = true; + } + break; + } + case 10: { + bitField0_ |= 0x00000001; + fileId_ = input.readBytes(); + break; + } + } + } + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(this); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException( + e.getMessage()).setUnfinishedMessage(this); + } finally { + this.unknownFields = unknownFields.build(); + makeExtensionsImmutable(); + } + } public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { return org.xtreemfs.pbrpc.generatedinterfaces.MRC.internal_static_xtreemfs_pbrpc_xtreemfs_get_file_credentialsRequest_descriptor; } - + protected com.google.protobuf.GeneratedMessage.FieldAccessorTable internalGetFieldAccessorTable() { - return org.xtreemfs.pbrpc.generatedinterfaces.MRC.internal_static_xtreemfs_pbrpc_xtreemfs_get_file_credentialsRequest_fieldAccessorTable; + return org.xtreemfs.pbrpc.generatedinterfaces.MRC.internal_static_xtreemfs_pbrpc_xtreemfs_get_file_credentialsRequest_fieldAccessorTable + .ensureFieldAccessorsInitialized( + org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_get_file_credentialsRequest.class, org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_get_file_credentialsRequest.Builder.class); + } + + public static com.google.protobuf.Parser PARSER = + new com.google.protobuf.AbstractParser() { + public xtreemfs_get_file_credentialsRequest parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return new xtreemfs_get_file_credentialsRequest(input, extensionRegistry); + } + }; + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; } - + + private int bitField0_; // required string file_id = 1; public static final int FILE_ID_FIELD_NUMBER = 1; - private boolean hasFileId; - private java.lang.String fileId_ = ""; - public boolean hasFileId() { return hasFileId; } - public java.lang.String getFileId() { return fileId_; } - + private java.lang.Object fileId_; + /** + * required string file_id = 1; + */ + public boolean hasFileId() { + return ((bitField0_ & 0x00000001) == 0x00000001); + } + /** + * required string file_id = 1; + */ + public java.lang.String getFileId() { + java.lang.Object ref = fileId_; + if (ref instanceof java.lang.String) { + return (java.lang.String) ref; + } else { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + if (bs.isValidUtf8()) { + fileId_ = s; + } + return s; + } + } + /** + * required string file_id = 1; + */ + public com.google.protobuf.ByteString + getFileIdBytes() { + java.lang.Object ref = fileId_; + if (ref instanceof java.lang.String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + fileId_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + private void initFields() { + fileId_ = ""; } + private byte memoizedIsInitialized = -1; public final boolean isInitialized() { - if (!hasFileId) return false; + byte isInitialized = memoizedIsInitialized; + if (isInitialized != -1) return isInitialized == 1; + + if (!hasFileId()) { + memoizedIsInitialized = 0; + return false; + } + memoizedIsInitialized = 1; return true; } - + public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException { getSerializedSize(); - if (hasFileId()) { - output.writeString(1, getFileId()); + if (((bitField0_ & 0x00000001) == 0x00000001)) { + output.writeBytes(1, getFileIdBytes()); } getUnknownFields().writeTo(output); } - + private int memoizedSerializedSize = -1; public int getSerializedSize() { int size = memoizedSerializedSize; if (size != -1) return size; - + size = 0; - if (hasFileId()) { + if (((bitField0_ & 0x00000001) == 0x00000001)) { size += com.google.protobuf.CodedOutputStream - .computeStringSize(1, getFileId()); + .computeBytesSize(1, getFileIdBytes()); } size += getUnknownFields().getSerializedSize(); memoizedSerializedSize = size; return size; } - + + private static final long serialVersionUID = 0L; + @java.lang.Override + protected java.lang.Object writeReplace() + throws java.io.ObjectStreamException { + return super.writeReplace(); + } + public static org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_get_file_credentialsRequest parseFrom( com.google.protobuf.ByteString data) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data).buildParsed(); + return PARSER.parseFrom(data); } public static org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_get_file_credentialsRequest parseFrom( com.google.protobuf.ByteString data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(data, extensionRegistry); } public static org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_get_file_credentialsRequest parseFrom(byte[] data) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data).buildParsed(); + return PARSER.parseFrom(data); } public static org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_get_file_credentialsRequest parseFrom( byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(data, extensionRegistry); } public static org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_get_file_credentialsRequest parseFrom(java.io.InputStream input) throws java.io.IOException { - return newBuilder().mergeFrom(input).buildParsed(); + return PARSER.parseFrom(input); } public static org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_get_file_credentialsRequest parseFrom( java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - return newBuilder().mergeFrom(input, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(input, extensionRegistry); } public static org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_get_file_credentialsRequest parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException { - Builder builder = newBuilder(); - if (builder.mergeDelimitedFrom(input)) { - return builder.buildParsed(); - } else { - return null; - } + return PARSER.parseDelimitedFrom(input); } public static org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_get_file_credentialsRequest parseDelimitedFrom( java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - Builder builder = newBuilder(); - if (builder.mergeDelimitedFrom(input, extensionRegistry)) { - return builder.buildParsed(); - } else { - return null; - } + return PARSER.parseDelimitedFrom(input, extensionRegistry); } public static org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_get_file_credentialsRequest parseFrom( com.google.protobuf.CodedInputStream input) throws java.io.IOException { - return newBuilder().mergeFrom(input).buildParsed(); + return PARSER.parseFrom(input); } public static org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_get_file_credentialsRequest parseFrom( com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - return newBuilder().mergeFrom(input, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(input, extensionRegistry); } - + public static Builder newBuilder() { return Builder.create(); } public Builder newBuilderForType() { return newBuilder(); } public static Builder newBuilder(org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_get_file_credentialsRequest prototype) { return newBuilder().mergeFrom(prototype); } public Builder toBuilder() { return newBuilder(this); } - + + @java.lang.Override + protected Builder newBuilderForType( + com.google.protobuf.GeneratedMessage.BuilderParent parent) { + Builder builder = new Builder(parent); + return builder; + } + /** + * Protobuf type {@code xtreemfs.pbrpc.xtreemfs_get_file_credentialsRequest} + */ public static final class Builder extends - com.google.protobuf.GeneratedMessage.Builder { - private org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_get_file_credentialsRequest result; - + com.google.protobuf.GeneratedMessage.Builder + implements org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_get_file_credentialsRequestOrBuilder { + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return org.xtreemfs.pbrpc.generatedinterfaces.MRC.internal_static_xtreemfs_pbrpc_xtreemfs_get_file_credentialsRequest_descriptor; + } + + protected com.google.protobuf.GeneratedMessage.FieldAccessorTable + internalGetFieldAccessorTable() { + return org.xtreemfs.pbrpc.generatedinterfaces.MRC.internal_static_xtreemfs_pbrpc_xtreemfs_get_file_credentialsRequest_fieldAccessorTable + .ensureFieldAccessorsInitialized( + org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_get_file_credentialsRequest.class, org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_get_file_credentialsRequest.Builder.class); + } + // Construct using org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_get_file_credentialsRequest.newBuilder() - private Builder() {} - - private static Builder create() { - Builder builder = new Builder(); - builder.result = new org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_get_file_credentialsRequest(); - return builder; + private Builder() { + maybeForceBuilderInitialization(); } - - protected org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_get_file_credentialsRequest internalGetResult() { - return result; + + private Builder( + com.google.protobuf.GeneratedMessage.BuilderParent parent) { + super(parent); + maybeForceBuilderInitialization(); } - - public Builder clear() { - if (result == null) { - throw new IllegalStateException( - "Cannot call clear() after build()."); + private void maybeForceBuilderInitialization() { + if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) { } - result = new org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_get_file_credentialsRequest(); + } + private static Builder create() { + return new Builder(); + } + + public Builder clear() { + super.clear(); + fileId_ = ""; + bitField0_ = (bitField0_ & ~0x00000001); return this; } - + public Builder clone() { - return create().mergeFrom(result); + return create().mergeFrom(buildPartial()); } - + public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() { - return org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_get_file_credentialsRequest.getDescriptor(); + return org.xtreemfs.pbrpc.generatedinterfaces.MRC.internal_static_xtreemfs_pbrpc_xtreemfs_get_file_credentialsRequest_descriptor; } - + public org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_get_file_credentialsRequest getDefaultInstanceForType() { return org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_get_file_credentialsRequest.getDefaultInstance(); } - - public boolean isInitialized() { - return result.isInitialized(); - } + public org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_get_file_credentialsRequest build() { - if (result != null && !isInitialized()) { + org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_get_file_credentialsRequest result = buildPartial(); + if (!result.isInitialized()) { throw newUninitializedMessageException(result); } - return buildPartial(); - } - - private org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_get_file_credentialsRequest buildParsed() - throws com.google.protobuf.InvalidProtocolBufferException { - if (!isInitialized()) { - throw newUninitializedMessageException( - result).asInvalidProtocolBufferException(); - } - return buildPartial(); + return result; } - + public org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_get_file_credentialsRequest buildPartial() { - if (result == null) { - throw new IllegalStateException( - "build() has already been called on this Builder."); - } - org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_get_file_credentialsRequest returnMe = result; - result = null; - return returnMe; + org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_get_file_credentialsRequest result = new org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_get_file_credentialsRequest(this); + int from_bitField0_ = bitField0_; + int to_bitField0_ = 0; + if (((from_bitField0_ & 0x00000001) == 0x00000001)) { + to_bitField0_ |= 0x00000001; + } + result.fileId_ = fileId_; + result.bitField0_ = to_bitField0_; + onBuilt(); + return result; } - + public Builder mergeFrom(com.google.protobuf.Message other) { if (other instanceof org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_get_file_credentialsRequest) { return mergeFrom((org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_get_file_credentialsRequest)other); @@ -20090,2835 +46164,130 @@ public final class MRC { return this; } } - + public Builder mergeFrom(org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_get_file_credentialsRequest other) { if (other == org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_get_file_credentialsRequest.getDefaultInstance()) return this; if (other.hasFileId()) { - setFileId(other.getFileId()); + bitField0_ |= 0x00000001; + fileId_ = other.fileId_; + onChanged(); } this.mergeUnknownFields(other.getUnknownFields()); return this; } - + + public final boolean isInitialized() { + if (!hasFileId()) { + + return false; + } + return true; + } + public Builder mergeFrom( com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - com.google.protobuf.UnknownFieldSet.Builder unknownFields = - com.google.protobuf.UnknownFieldSet.newBuilder( - this.getUnknownFields()); - while (true) { - int tag = input.readTag(); - switch (tag) { - case 0: - this.setUnknownFields(unknownFields.build()); - return this; - default: { - if (!parseUnknownField(input, unknownFields, - extensionRegistry, tag)) { - this.setUnknownFields(unknownFields.build()); - return this; - } - break; - } - case 10: { - setFileId(input.readString()); - break; - } + org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_get_file_credentialsRequest parsedMessage = null; + try { + parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + parsedMessage = (org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_get_file_credentialsRequest) e.getUnfinishedMessage(); + throw e; + } finally { + if (parsedMessage != null) { + mergeFrom(parsedMessage); } } + return this; } - - + private int bitField0_; + // required string file_id = 1; + private java.lang.Object fileId_ = ""; + /** + * required string file_id = 1; + */ public boolean hasFileId() { - return result.hasFileId(); + return ((bitField0_ & 0x00000001) == 0x00000001); } + /** + * required string file_id = 1; + */ public java.lang.String getFileId() { - return result.getFileId(); + java.lang.Object ref = fileId_; + if (!(ref instanceof java.lang.String)) { + java.lang.String s = ((com.google.protobuf.ByteString) ref) + .toStringUtf8(); + fileId_ = s; + return s; + } else { + return (java.lang.String) ref; + } + } + /** + * required string file_id = 1; + */ + public com.google.protobuf.ByteString + getFileIdBytes() { + java.lang.Object ref = fileId_; + if (ref instanceof String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + fileId_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } } - public Builder setFileId(java.lang.String value) { + /** + * required string file_id = 1; + */ + public Builder setFileId( + java.lang.String value) { if (value == null) { throw new NullPointerException(); } - result.hasFileId = true; - result.fileId_ = value; + bitField0_ |= 0x00000001; + fileId_ = value; + onChanged(); return this; } + /** + * required string file_id = 1; + */ public Builder clearFileId() { - result.hasFileId = false; - result.fileId_ = getDefaultInstance().getFileId(); + bitField0_ = (bitField0_ & ~0x00000001); + fileId_ = getDefaultInstance().getFileId(); + onChanged(); + return this; + } + /** + * required string file_id = 1; + */ + public Builder setFileIdBytes( + com.google.protobuf.ByteString value) { + if (value == null) { + throw new NullPointerException(); + } + bitField0_ |= 0x00000001; + fileId_ = value; + onChanged(); return this; } - + // @@protoc_insertion_point(builder_scope:xtreemfs.pbrpc.xtreemfs_get_file_credentialsRequest) } - + static { defaultInstance = new xtreemfs_get_file_credentialsRequest(true); - org.xtreemfs.pbrpc.generatedinterfaces.MRC.internalForceInit(); defaultInstance.initFields(); } - + // @@protoc_insertion_point(class_scope:xtreemfs.pbrpc.xtreemfs_get_file_credentialsRequest) } - - public static abstract class MRCService - implements com.google.protobuf.Service { - protected MRCService() {} - - public interface Interface { - public abstract void fsetattr( - com.google.protobuf.RpcController controller, - org.xtreemfs.pbrpc.generatedinterfaces.MRC.fsetattrRequest request, - com.google.protobuf.RpcCallback done); - - public abstract void ftruncate( - com.google.protobuf.RpcController controller, - org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.XCap request, - com.google.protobuf.RpcCallback done); - - public abstract void getattr( - com.google.protobuf.RpcController controller, - org.xtreemfs.pbrpc.generatedinterfaces.MRC.getattrRequest request, - com.google.protobuf.RpcCallback done); - - public abstract void getxattr( - com.google.protobuf.RpcController controller, - org.xtreemfs.pbrpc.generatedinterfaces.MRC.getxattrRequest request, - com.google.protobuf.RpcCallback done); - - public abstract void link( - com.google.protobuf.RpcController controller, - org.xtreemfs.pbrpc.generatedinterfaces.MRC.linkRequest request, - com.google.protobuf.RpcCallback done); - - public abstract void listxattr( - com.google.protobuf.RpcController controller, - org.xtreemfs.pbrpc.generatedinterfaces.MRC.listxattrRequest request, - com.google.protobuf.RpcCallback done); - - public abstract void mkdir( - com.google.protobuf.RpcController controller, - org.xtreemfs.pbrpc.generatedinterfaces.MRC.mkdirRequest request, - com.google.protobuf.RpcCallback done); - - public abstract void open( - com.google.protobuf.RpcController controller, - org.xtreemfs.pbrpc.generatedinterfaces.MRC.openRequest request, - com.google.protobuf.RpcCallback done); - - public abstract void readdir( - com.google.protobuf.RpcController controller, - org.xtreemfs.pbrpc.generatedinterfaces.MRC.readdirRequest request, - com.google.protobuf.RpcCallback done); - - public abstract void readlink( - com.google.protobuf.RpcController controller, - org.xtreemfs.pbrpc.generatedinterfaces.MRC.readlinkRequest request, - com.google.protobuf.RpcCallback done); - - public abstract void removexattr( - com.google.protobuf.RpcController controller, - org.xtreemfs.pbrpc.generatedinterfaces.MRC.removexattrRequest request, - com.google.protobuf.RpcCallback done); - - public abstract void rename( - com.google.protobuf.RpcController controller, - org.xtreemfs.pbrpc.generatedinterfaces.MRC.renameRequest request, - com.google.protobuf.RpcCallback done); - - public abstract void rmdir( - com.google.protobuf.RpcController controller, - org.xtreemfs.pbrpc.generatedinterfaces.MRC.rmdirRequest request, - com.google.protobuf.RpcCallback done); - - public abstract void setattr( - com.google.protobuf.RpcController controller, - org.xtreemfs.pbrpc.generatedinterfaces.MRC.setattrRequest request, - com.google.protobuf.RpcCallback done); - - public abstract void setxattr( - com.google.protobuf.RpcController controller, - org.xtreemfs.pbrpc.generatedinterfaces.MRC.setxattrRequest request, - com.google.protobuf.RpcCallback done); - - public abstract void statvfs( - com.google.protobuf.RpcController controller, - org.xtreemfs.pbrpc.generatedinterfaces.MRC.statvfsRequest request, - com.google.protobuf.RpcCallback done); - - public abstract void symlink( - com.google.protobuf.RpcController controller, - org.xtreemfs.pbrpc.generatedinterfaces.MRC.symlinkRequest request, - com.google.protobuf.RpcCallback done); - - public abstract void unlink( - com.google.protobuf.RpcController controller, - org.xtreemfs.pbrpc.generatedinterfaces.MRC.unlinkRequest request, - com.google.protobuf.RpcCallback done); - - public abstract void access( - com.google.protobuf.RpcController controller, - org.xtreemfs.pbrpc.generatedinterfaces.MRC.accessRequest request, - com.google.protobuf.RpcCallback done); - - public abstract void xtreemfsCheckpoint( - com.google.protobuf.RpcController controller, - org.xtreemfs.pbrpc.generatedinterfaces.Common.emptyRequest request, - com.google.protobuf.RpcCallback done); - - public abstract void xtreemfsCheckFileExists( - com.google.protobuf.RpcController controller, - org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_check_file_existsRequest request, - com.google.protobuf.RpcCallback done); - - public abstract void xtreemfsDumpDatabase( - com.google.protobuf.RpcController controller, - org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_dump_restore_databaseRequest request, - com.google.protobuf.RpcCallback done); - - public abstract void xtreemfsGetSuitableOsds( - com.google.protobuf.RpcController controller, - org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_get_suitable_osdsRequest request, - com.google.protobuf.RpcCallback done); - - public abstract void xtreemfsInternalDebug( - com.google.protobuf.RpcController controller, - org.xtreemfs.pbrpc.generatedinterfaces.MRC.stringMessage request, - com.google.protobuf.RpcCallback done); - - public abstract void xtreemfsListdir( - com.google.protobuf.RpcController controller, - org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_listdirRequest request, - com.google.protobuf.RpcCallback done); - - public abstract void xtreemfsLsvol( - com.google.protobuf.RpcController controller, - org.xtreemfs.pbrpc.generatedinterfaces.Common.emptyRequest request, - com.google.protobuf.RpcCallback done); - - public abstract void xtreemfsMkvol( - com.google.protobuf.RpcController controller, - org.xtreemfs.pbrpc.generatedinterfaces.MRC.Volume request, - com.google.protobuf.RpcCallback done); - - public abstract void xtreemfsRenewCapability( - com.google.protobuf.RpcController controller, - org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.XCap request, - com.google.protobuf.RpcCallback done); - - public abstract void xtreemfsReplicationToMaster( - com.google.protobuf.RpcController controller, - org.xtreemfs.pbrpc.generatedinterfaces.Common.emptyRequest request, - com.google.protobuf.RpcCallback done); - - public abstract void xtreemfsReplicaAdd( - com.google.protobuf.RpcController controller, - org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_replica_addRequest request, - com.google.protobuf.RpcCallback done); - - public abstract void xtreemfsReplicaList( - com.google.protobuf.RpcController controller, - org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_replica_listRequest request, - com.google.protobuf.RpcCallback done); - - public abstract void xtreemfsReplicaRemove( - com.google.protobuf.RpcController controller, - org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_replica_removeRequest request, - com.google.protobuf.RpcCallback done); - - public abstract void xtreemfsRestoreDatabase( - com.google.protobuf.RpcController controller, - org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_dump_restore_databaseRequest request, - com.google.protobuf.RpcCallback done); - - public abstract void xtreemfsRestoreFile( - com.google.protobuf.RpcController controller, - org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_restore_fileRequest request, - com.google.protobuf.RpcCallback done); - - public abstract void xtreemfsRmvol( - com.google.protobuf.RpcController controller, - org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_rmvolRequest request, - com.google.protobuf.RpcCallback done); - - public abstract void xtreemfsShutdown( - com.google.protobuf.RpcController controller, - org.xtreemfs.pbrpc.generatedinterfaces.Common.emptyRequest request, - com.google.protobuf.RpcCallback done); - - public abstract void xtreemfsUpdateFileSize( - com.google.protobuf.RpcController controller, - org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_update_file_sizeRequest request, - com.google.protobuf.RpcCallback done); - - public abstract void xtreemfsSetReplicaUpdatePolicy( - com.google.protobuf.RpcController controller, - org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_set_replica_update_policyRequest request, - com.google.protobuf.RpcCallback done); - - public abstract void xtreemfsSetReadOnlyXattr( - com.google.protobuf.RpcController controller, - org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_set_read_only_xattrRequest request, - com.google.protobuf.RpcCallback done); - - public abstract void xtreemfsGetFileCredentials( - com.google.protobuf.RpcController controller, - org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_get_file_credentialsRequest request, - com.google.protobuf.RpcCallback done); - - } - - public static com.google.protobuf.Service newReflectiveService( - final Interface impl) { - return new MRCService() { - @Override - public void fsetattr( - com.google.protobuf.RpcController controller, - org.xtreemfs.pbrpc.generatedinterfaces.MRC.fsetattrRequest request, - com.google.protobuf.RpcCallback done) { - impl.fsetattr(controller, request, done); - } - - @Override - public void ftruncate( - com.google.protobuf.RpcController controller, - org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.XCap request, - com.google.protobuf.RpcCallback done) { - impl.ftruncate(controller, request, done); - } - - @Override - public void getattr( - com.google.protobuf.RpcController controller, - org.xtreemfs.pbrpc.generatedinterfaces.MRC.getattrRequest request, - com.google.protobuf.RpcCallback done) { - impl.getattr(controller, request, done); - } - - @Override - public void getxattr( - com.google.protobuf.RpcController controller, - org.xtreemfs.pbrpc.generatedinterfaces.MRC.getxattrRequest request, - com.google.protobuf.RpcCallback done) { - impl.getxattr(controller, request, done); - } - - @Override - public void link( - com.google.protobuf.RpcController controller, - org.xtreemfs.pbrpc.generatedinterfaces.MRC.linkRequest request, - com.google.protobuf.RpcCallback done) { - impl.link(controller, request, done); - } - - @Override - public void listxattr( - com.google.protobuf.RpcController controller, - org.xtreemfs.pbrpc.generatedinterfaces.MRC.listxattrRequest request, - com.google.protobuf.RpcCallback done) { - impl.listxattr(controller, request, done); - } - - @Override - public void mkdir( - com.google.protobuf.RpcController controller, - org.xtreemfs.pbrpc.generatedinterfaces.MRC.mkdirRequest request, - com.google.protobuf.RpcCallback done) { - impl.mkdir(controller, request, done); - } - - @Override - public void open( - com.google.protobuf.RpcController controller, - org.xtreemfs.pbrpc.generatedinterfaces.MRC.openRequest request, - com.google.protobuf.RpcCallback done) { - impl.open(controller, request, done); - } - - @Override - public void readdir( - com.google.protobuf.RpcController controller, - org.xtreemfs.pbrpc.generatedinterfaces.MRC.readdirRequest request, - com.google.protobuf.RpcCallback done) { - impl.readdir(controller, request, done); - } - - @Override - public void readlink( - com.google.protobuf.RpcController controller, - org.xtreemfs.pbrpc.generatedinterfaces.MRC.readlinkRequest request, - com.google.protobuf.RpcCallback done) { - impl.readlink(controller, request, done); - } - - @Override - public void removexattr( - com.google.protobuf.RpcController controller, - org.xtreemfs.pbrpc.generatedinterfaces.MRC.removexattrRequest request, - com.google.protobuf.RpcCallback done) { - impl.removexattr(controller, request, done); - } - - @Override - public void rename( - com.google.protobuf.RpcController controller, - org.xtreemfs.pbrpc.generatedinterfaces.MRC.renameRequest request, - com.google.protobuf.RpcCallback done) { - impl.rename(controller, request, done); - } - - @Override - public void rmdir( - com.google.protobuf.RpcController controller, - org.xtreemfs.pbrpc.generatedinterfaces.MRC.rmdirRequest request, - com.google.protobuf.RpcCallback done) { - impl.rmdir(controller, request, done); - } - - @Override - public void setattr( - com.google.protobuf.RpcController controller, - org.xtreemfs.pbrpc.generatedinterfaces.MRC.setattrRequest request, - com.google.protobuf.RpcCallback done) { - impl.setattr(controller, request, done); - } - - @Override - public void setxattr( - com.google.protobuf.RpcController controller, - org.xtreemfs.pbrpc.generatedinterfaces.MRC.setxattrRequest request, - com.google.protobuf.RpcCallback done) { - impl.setxattr(controller, request, done); - } - - @Override - public void statvfs( - com.google.protobuf.RpcController controller, - org.xtreemfs.pbrpc.generatedinterfaces.MRC.statvfsRequest request, - com.google.protobuf.RpcCallback done) { - impl.statvfs(controller, request, done); - } - - @Override - public void symlink( - com.google.protobuf.RpcController controller, - org.xtreemfs.pbrpc.generatedinterfaces.MRC.symlinkRequest request, - com.google.protobuf.RpcCallback done) { - impl.symlink(controller, request, done); - } - - @Override - public void unlink( - com.google.protobuf.RpcController controller, - org.xtreemfs.pbrpc.generatedinterfaces.MRC.unlinkRequest request, - com.google.protobuf.RpcCallback done) { - impl.unlink(controller, request, done); - } - - @Override - public void access( - com.google.protobuf.RpcController controller, - org.xtreemfs.pbrpc.generatedinterfaces.MRC.accessRequest request, - com.google.protobuf.RpcCallback done) { - impl.access(controller, request, done); - } - - @Override - public void xtreemfsCheckpoint( - com.google.protobuf.RpcController controller, - org.xtreemfs.pbrpc.generatedinterfaces.Common.emptyRequest request, - com.google.protobuf.RpcCallback done) { - impl.xtreemfsCheckpoint(controller, request, done); - } - - @Override - public void xtreemfsCheckFileExists( - com.google.protobuf.RpcController controller, - org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_check_file_existsRequest request, - com.google.protobuf.RpcCallback done) { - impl.xtreemfsCheckFileExists(controller, request, done); - } - - @Override - public void xtreemfsDumpDatabase( - com.google.protobuf.RpcController controller, - org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_dump_restore_databaseRequest request, - com.google.protobuf.RpcCallback done) { - impl.xtreemfsDumpDatabase(controller, request, done); - } - - @Override - public void xtreemfsGetSuitableOsds( - com.google.protobuf.RpcController controller, - org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_get_suitable_osdsRequest request, - com.google.protobuf.RpcCallback done) { - impl.xtreemfsGetSuitableOsds(controller, request, done); - } - - @Override - public void xtreemfsInternalDebug( - com.google.protobuf.RpcController controller, - org.xtreemfs.pbrpc.generatedinterfaces.MRC.stringMessage request, - com.google.protobuf.RpcCallback done) { - impl.xtreemfsInternalDebug(controller, request, done); - } - - @Override - public void xtreemfsListdir( - com.google.protobuf.RpcController controller, - org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_listdirRequest request, - com.google.protobuf.RpcCallback done) { - impl.xtreemfsListdir(controller, request, done); - } - - @Override - public void xtreemfsLsvol( - com.google.protobuf.RpcController controller, - org.xtreemfs.pbrpc.generatedinterfaces.Common.emptyRequest request, - com.google.protobuf.RpcCallback done) { - impl.xtreemfsLsvol(controller, request, done); - } - - @Override - public void xtreemfsMkvol( - com.google.protobuf.RpcController controller, - org.xtreemfs.pbrpc.generatedinterfaces.MRC.Volume request, - com.google.protobuf.RpcCallback done) { - impl.xtreemfsMkvol(controller, request, done); - } - - @Override - public void xtreemfsRenewCapability( - com.google.protobuf.RpcController controller, - org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.XCap request, - com.google.protobuf.RpcCallback done) { - impl.xtreemfsRenewCapability(controller, request, done); - } - - @Override - public void xtreemfsReplicationToMaster( - com.google.protobuf.RpcController controller, - org.xtreemfs.pbrpc.generatedinterfaces.Common.emptyRequest request, - com.google.protobuf.RpcCallback done) { - impl.xtreemfsReplicationToMaster(controller, request, done); - } - - @Override - public void xtreemfsReplicaAdd( - com.google.protobuf.RpcController controller, - org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_replica_addRequest request, - com.google.protobuf.RpcCallback done) { - impl.xtreemfsReplicaAdd(controller, request, done); - } - - @Override - public void xtreemfsReplicaList( - com.google.protobuf.RpcController controller, - org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_replica_listRequest request, - com.google.protobuf.RpcCallback done) { - impl.xtreemfsReplicaList(controller, request, done); - } - - @Override - public void xtreemfsReplicaRemove( - com.google.protobuf.RpcController controller, - org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_replica_removeRequest request, - com.google.protobuf.RpcCallback done) { - impl.xtreemfsReplicaRemove(controller, request, done); - } - - @Override - public void xtreemfsRestoreDatabase( - com.google.protobuf.RpcController controller, - org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_dump_restore_databaseRequest request, - com.google.protobuf.RpcCallback done) { - impl.xtreemfsRestoreDatabase(controller, request, done); - } - - @Override - public void xtreemfsRestoreFile( - com.google.protobuf.RpcController controller, - org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_restore_fileRequest request, - com.google.protobuf.RpcCallback done) { - impl.xtreemfsRestoreFile(controller, request, done); - } - - @Override - public void xtreemfsRmvol( - com.google.protobuf.RpcController controller, - org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_rmvolRequest request, - com.google.protobuf.RpcCallback done) { - impl.xtreemfsRmvol(controller, request, done); - } - - @Override - public void xtreemfsShutdown( - com.google.protobuf.RpcController controller, - org.xtreemfs.pbrpc.generatedinterfaces.Common.emptyRequest request, - com.google.protobuf.RpcCallback done) { - impl.xtreemfsShutdown(controller, request, done); - } - - @Override - public void xtreemfsUpdateFileSize( - com.google.protobuf.RpcController controller, - org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_update_file_sizeRequest request, - com.google.protobuf.RpcCallback done) { - impl.xtreemfsUpdateFileSize(controller, request, done); - } - - @Override - public void xtreemfsSetReplicaUpdatePolicy( - com.google.protobuf.RpcController controller, - org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_set_replica_update_policyRequest request, - com.google.protobuf.RpcCallback done) { - impl.xtreemfsSetReplicaUpdatePolicy(controller, request, done); - } - - @Override - public void xtreemfsSetReadOnlyXattr( - com.google.protobuf.RpcController controller, - org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_set_read_only_xattrRequest request, - com.google.protobuf.RpcCallback done) { - impl.xtreemfsSetReadOnlyXattr(controller, request, done); - } - - @Override - public void xtreemfsGetFileCredentials( - com.google.protobuf.RpcController controller, - org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_get_file_credentialsRequest request, - com.google.protobuf.RpcCallback done) { - impl.xtreemfsGetFileCredentials(controller, request, done); - } - - }; - } - - public static com.google.protobuf.BlockingService - newReflectiveBlockingService(final BlockingInterface impl) { - return new com.google.protobuf.BlockingService() { - public final com.google.protobuf.Descriptors.ServiceDescriptor - getDescriptorForType() { - return getDescriptor(); - } - - public final com.google.protobuf.Message callBlockingMethod( - com.google.protobuf.Descriptors.MethodDescriptor method, - com.google.protobuf.RpcController controller, - com.google.protobuf.Message request) - throws com.google.protobuf.ServiceException { - if (method.getService() != getDescriptor()) { - throw new java.lang.IllegalArgumentException( - "Service.callBlockingMethod() given method descriptor for " + - "wrong service type."); - } - switch(method.getIndex()) { - case 0: - return impl.fsetattr(controller, (org.xtreemfs.pbrpc.generatedinterfaces.MRC.fsetattrRequest)request); - case 1: - return impl.ftruncate(controller, (org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.XCap)request); - case 2: - return impl.getattr(controller, (org.xtreemfs.pbrpc.generatedinterfaces.MRC.getattrRequest)request); - case 3: - return impl.getxattr(controller, (org.xtreemfs.pbrpc.generatedinterfaces.MRC.getxattrRequest)request); - case 4: - return impl.link(controller, (org.xtreemfs.pbrpc.generatedinterfaces.MRC.linkRequest)request); - case 5: - return impl.listxattr(controller, (org.xtreemfs.pbrpc.generatedinterfaces.MRC.listxattrRequest)request); - case 6: - return impl.mkdir(controller, (org.xtreemfs.pbrpc.generatedinterfaces.MRC.mkdirRequest)request); - case 7: - return impl.open(controller, (org.xtreemfs.pbrpc.generatedinterfaces.MRC.openRequest)request); - case 8: - return impl.readdir(controller, (org.xtreemfs.pbrpc.generatedinterfaces.MRC.readdirRequest)request); - case 9: - return impl.readlink(controller, (org.xtreemfs.pbrpc.generatedinterfaces.MRC.readlinkRequest)request); - case 10: - return impl.removexattr(controller, (org.xtreemfs.pbrpc.generatedinterfaces.MRC.removexattrRequest)request); - case 11: - return impl.rename(controller, (org.xtreemfs.pbrpc.generatedinterfaces.MRC.renameRequest)request); - case 12: - return impl.rmdir(controller, (org.xtreemfs.pbrpc.generatedinterfaces.MRC.rmdirRequest)request); - case 13: - return impl.setattr(controller, (org.xtreemfs.pbrpc.generatedinterfaces.MRC.setattrRequest)request); - case 14: - return impl.setxattr(controller, (org.xtreemfs.pbrpc.generatedinterfaces.MRC.setxattrRequest)request); - case 15: - return impl.statvfs(controller, (org.xtreemfs.pbrpc.generatedinterfaces.MRC.statvfsRequest)request); - case 16: - return impl.symlink(controller, (org.xtreemfs.pbrpc.generatedinterfaces.MRC.symlinkRequest)request); - case 17: - return impl.unlink(controller, (org.xtreemfs.pbrpc.generatedinterfaces.MRC.unlinkRequest)request); - case 18: - return impl.access(controller, (org.xtreemfs.pbrpc.generatedinterfaces.MRC.accessRequest)request); - case 19: - return impl.xtreemfsCheckpoint(controller, (org.xtreemfs.pbrpc.generatedinterfaces.Common.emptyRequest)request); - case 20: - return impl.xtreemfsCheckFileExists(controller, (org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_check_file_existsRequest)request); - case 21: - return impl.xtreemfsDumpDatabase(controller, (org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_dump_restore_databaseRequest)request); - case 22: - return impl.xtreemfsGetSuitableOsds(controller, (org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_get_suitable_osdsRequest)request); - case 23: - return impl.xtreemfsInternalDebug(controller, (org.xtreemfs.pbrpc.generatedinterfaces.MRC.stringMessage)request); - case 24: - return impl.xtreemfsListdir(controller, (org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_listdirRequest)request); - case 25: - return impl.xtreemfsLsvol(controller, (org.xtreemfs.pbrpc.generatedinterfaces.Common.emptyRequest)request); - case 26: - return impl.xtreemfsMkvol(controller, (org.xtreemfs.pbrpc.generatedinterfaces.MRC.Volume)request); - case 27: - return impl.xtreemfsRenewCapability(controller, (org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.XCap)request); - case 28: - return impl.xtreemfsReplicationToMaster(controller, (org.xtreemfs.pbrpc.generatedinterfaces.Common.emptyRequest)request); - case 29: - return impl.xtreemfsReplicaAdd(controller, (org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_replica_addRequest)request); - case 30: - return impl.xtreemfsReplicaList(controller, (org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_replica_listRequest)request); - case 31: - return impl.xtreemfsReplicaRemove(controller, (org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_replica_removeRequest)request); - case 32: - return impl.xtreemfsRestoreDatabase(controller, (org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_dump_restore_databaseRequest)request); - case 33: - return impl.xtreemfsRestoreFile(controller, (org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_restore_fileRequest)request); - case 34: - return impl.xtreemfsRmvol(controller, (org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_rmvolRequest)request); - case 35: - return impl.xtreemfsShutdown(controller, (org.xtreemfs.pbrpc.generatedinterfaces.Common.emptyRequest)request); - case 36: - return impl.xtreemfsUpdateFileSize(controller, (org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_update_file_sizeRequest)request); - case 37: - return impl.xtreemfsSetReplicaUpdatePolicy(controller, (org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_set_replica_update_policyRequest)request); - case 38: - return impl.xtreemfsSetReadOnlyXattr(controller, (org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_set_read_only_xattrRequest)request); - case 39: - return impl.xtreemfsGetFileCredentials(controller, (org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_get_file_credentialsRequest)request); - default: - throw new java.lang.AssertionError("Can't get here."); - } - } - - public final com.google.protobuf.Message - getRequestPrototype( - com.google.protobuf.Descriptors.MethodDescriptor method) { - if (method.getService() != getDescriptor()) { - throw new java.lang.IllegalArgumentException( - "Service.getRequestPrototype() given method " + - "descriptor for wrong service type."); - } - switch(method.getIndex()) { - case 0: - return org.xtreemfs.pbrpc.generatedinterfaces.MRC.fsetattrRequest.getDefaultInstance(); - case 1: - return org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.XCap.getDefaultInstance(); - case 2: - return org.xtreemfs.pbrpc.generatedinterfaces.MRC.getattrRequest.getDefaultInstance(); - case 3: - return org.xtreemfs.pbrpc.generatedinterfaces.MRC.getxattrRequest.getDefaultInstance(); - case 4: - return org.xtreemfs.pbrpc.generatedinterfaces.MRC.linkRequest.getDefaultInstance(); - case 5: - return org.xtreemfs.pbrpc.generatedinterfaces.MRC.listxattrRequest.getDefaultInstance(); - case 6: - return org.xtreemfs.pbrpc.generatedinterfaces.MRC.mkdirRequest.getDefaultInstance(); - case 7: - return org.xtreemfs.pbrpc.generatedinterfaces.MRC.openRequest.getDefaultInstance(); - case 8: - return org.xtreemfs.pbrpc.generatedinterfaces.MRC.readdirRequest.getDefaultInstance(); - case 9: - return org.xtreemfs.pbrpc.generatedinterfaces.MRC.readlinkRequest.getDefaultInstance(); - case 10: - return org.xtreemfs.pbrpc.generatedinterfaces.MRC.removexattrRequest.getDefaultInstance(); - case 11: - return org.xtreemfs.pbrpc.generatedinterfaces.MRC.renameRequest.getDefaultInstance(); - case 12: - return org.xtreemfs.pbrpc.generatedinterfaces.MRC.rmdirRequest.getDefaultInstance(); - case 13: - return org.xtreemfs.pbrpc.generatedinterfaces.MRC.setattrRequest.getDefaultInstance(); - case 14: - return org.xtreemfs.pbrpc.generatedinterfaces.MRC.setxattrRequest.getDefaultInstance(); - case 15: - return org.xtreemfs.pbrpc.generatedinterfaces.MRC.statvfsRequest.getDefaultInstance(); - case 16: - return org.xtreemfs.pbrpc.generatedinterfaces.MRC.symlinkRequest.getDefaultInstance(); - case 17: - return org.xtreemfs.pbrpc.generatedinterfaces.MRC.unlinkRequest.getDefaultInstance(); - case 18: - return org.xtreemfs.pbrpc.generatedinterfaces.MRC.accessRequest.getDefaultInstance(); - case 19: - return org.xtreemfs.pbrpc.generatedinterfaces.Common.emptyRequest.getDefaultInstance(); - case 20: - return org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_check_file_existsRequest.getDefaultInstance(); - case 21: - return org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_dump_restore_databaseRequest.getDefaultInstance(); - case 22: - return org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_get_suitable_osdsRequest.getDefaultInstance(); - case 23: - return org.xtreemfs.pbrpc.generatedinterfaces.MRC.stringMessage.getDefaultInstance(); - case 24: - return org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_listdirRequest.getDefaultInstance(); - case 25: - return org.xtreemfs.pbrpc.generatedinterfaces.Common.emptyRequest.getDefaultInstance(); - case 26: - return org.xtreemfs.pbrpc.generatedinterfaces.MRC.Volume.getDefaultInstance(); - case 27: - return org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.XCap.getDefaultInstance(); - case 28: - return org.xtreemfs.pbrpc.generatedinterfaces.Common.emptyRequest.getDefaultInstance(); - case 29: - return org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_replica_addRequest.getDefaultInstance(); - case 30: - return org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_replica_listRequest.getDefaultInstance(); - case 31: - return org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_replica_removeRequest.getDefaultInstance(); - case 32: - return org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_dump_restore_databaseRequest.getDefaultInstance(); - case 33: - return org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_restore_fileRequest.getDefaultInstance(); - case 34: - return org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_rmvolRequest.getDefaultInstance(); - case 35: - return org.xtreemfs.pbrpc.generatedinterfaces.Common.emptyRequest.getDefaultInstance(); - case 36: - return org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_update_file_sizeRequest.getDefaultInstance(); - case 37: - return org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_set_replica_update_policyRequest.getDefaultInstance(); - case 38: - return org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_set_read_only_xattrRequest.getDefaultInstance(); - case 39: - return org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_get_file_credentialsRequest.getDefaultInstance(); - default: - throw new java.lang.AssertionError("Can't get here."); - } - } - - public final com.google.protobuf.Message - getResponsePrototype( - com.google.protobuf.Descriptors.MethodDescriptor method) { - if (method.getService() != getDescriptor()) { - throw new java.lang.IllegalArgumentException( - "Service.getResponsePrototype() given method " + - "descriptor for wrong service type."); - } - switch(method.getIndex()) { - case 0: - return org.xtreemfs.pbrpc.generatedinterfaces.Common.emptyResponse.getDefaultInstance(); - case 1: - return org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.XCap.getDefaultInstance(); - case 2: - return org.xtreemfs.pbrpc.generatedinterfaces.MRC.getattrResponse.getDefaultInstance(); - case 3: - return org.xtreemfs.pbrpc.generatedinterfaces.MRC.getxattrResponse.getDefaultInstance(); - case 4: - return org.xtreemfs.pbrpc.generatedinterfaces.MRC.timestampResponse.getDefaultInstance(); - case 5: - return org.xtreemfs.pbrpc.generatedinterfaces.MRC.listxattrResponse.getDefaultInstance(); - case 6: - return org.xtreemfs.pbrpc.generatedinterfaces.MRC.timestampResponse.getDefaultInstance(); - case 7: - return org.xtreemfs.pbrpc.generatedinterfaces.MRC.openResponse.getDefaultInstance(); - case 8: - return org.xtreemfs.pbrpc.generatedinterfaces.MRC.DirectoryEntries.getDefaultInstance(); - case 9: - return org.xtreemfs.pbrpc.generatedinterfaces.MRC.readlinkResponse.getDefaultInstance(); - case 10: - return org.xtreemfs.pbrpc.generatedinterfaces.MRC.timestampResponse.getDefaultInstance(); - case 11: - return org.xtreemfs.pbrpc.generatedinterfaces.MRC.renameResponse.getDefaultInstance(); - case 12: - return org.xtreemfs.pbrpc.generatedinterfaces.MRC.timestampResponse.getDefaultInstance(); - case 13: - return org.xtreemfs.pbrpc.generatedinterfaces.MRC.timestampResponse.getDefaultInstance(); - case 14: - return org.xtreemfs.pbrpc.generatedinterfaces.MRC.timestampResponse.getDefaultInstance(); - case 15: - return org.xtreemfs.pbrpc.generatedinterfaces.MRC.StatVFS.getDefaultInstance(); - case 16: - return org.xtreemfs.pbrpc.generatedinterfaces.MRC.timestampResponse.getDefaultInstance(); - case 17: - return org.xtreemfs.pbrpc.generatedinterfaces.MRC.unlinkResponse.getDefaultInstance(); - case 18: - return org.xtreemfs.pbrpc.generatedinterfaces.Common.emptyResponse.getDefaultInstance(); - case 19: - return org.xtreemfs.pbrpc.generatedinterfaces.Common.emptyResponse.getDefaultInstance(); - case 20: - return org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_check_file_existsResponse.getDefaultInstance(); - case 21: - return org.xtreemfs.pbrpc.generatedinterfaces.Common.emptyResponse.getDefaultInstance(); - case 22: - return org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_get_suitable_osdsResponse.getDefaultInstance(); - case 23: - return org.xtreemfs.pbrpc.generatedinterfaces.MRC.stringMessage.getDefaultInstance(); - case 24: - return org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_listdirResponse.getDefaultInstance(); - case 25: - return org.xtreemfs.pbrpc.generatedinterfaces.MRC.Volumes.getDefaultInstance(); - case 26: - return org.xtreemfs.pbrpc.generatedinterfaces.Common.emptyResponse.getDefaultInstance(); - case 27: - return org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.XCap.getDefaultInstance(); - case 28: - return org.xtreemfs.pbrpc.generatedinterfaces.Common.emptyResponse.getDefaultInstance(); - case 29: - return org.xtreemfs.pbrpc.generatedinterfaces.Common.emptyResponse.getDefaultInstance(); - case 30: - return org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.Replicas.getDefaultInstance(); - case 31: - return org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials.getDefaultInstance(); - case 32: - return org.xtreemfs.pbrpc.generatedinterfaces.Common.emptyResponse.getDefaultInstance(); - case 33: - return org.xtreemfs.pbrpc.generatedinterfaces.Common.emptyResponse.getDefaultInstance(); - case 34: - return org.xtreemfs.pbrpc.generatedinterfaces.Common.emptyResponse.getDefaultInstance(); - case 35: - return org.xtreemfs.pbrpc.generatedinterfaces.Common.emptyResponse.getDefaultInstance(); - case 36: - return org.xtreemfs.pbrpc.generatedinterfaces.MRC.timestampResponse.getDefaultInstance(); - case 37: - return org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_set_replica_update_policyResponse.getDefaultInstance(); - case 38: - return org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_set_read_only_xattrResponse.getDefaultInstance(); - case 39: - return org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials.getDefaultInstance(); - default: - throw new java.lang.AssertionError("Can't get here."); - } - } - - }; - } - - public abstract void fsetattr( - com.google.protobuf.RpcController controller, - org.xtreemfs.pbrpc.generatedinterfaces.MRC.fsetattrRequest request, - com.google.protobuf.RpcCallback done); - - public abstract void ftruncate( - com.google.protobuf.RpcController controller, - org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.XCap request, - com.google.protobuf.RpcCallback done); - - public abstract void getattr( - com.google.protobuf.RpcController controller, - org.xtreemfs.pbrpc.generatedinterfaces.MRC.getattrRequest request, - com.google.protobuf.RpcCallback done); - - public abstract void getxattr( - com.google.protobuf.RpcController controller, - org.xtreemfs.pbrpc.generatedinterfaces.MRC.getxattrRequest request, - com.google.protobuf.RpcCallback done); - - public abstract void link( - com.google.protobuf.RpcController controller, - org.xtreemfs.pbrpc.generatedinterfaces.MRC.linkRequest request, - com.google.protobuf.RpcCallback done); - - public abstract void listxattr( - com.google.protobuf.RpcController controller, - org.xtreemfs.pbrpc.generatedinterfaces.MRC.listxattrRequest request, - com.google.protobuf.RpcCallback done); - - public abstract void mkdir( - com.google.protobuf.RpcController controller, - org.xtreemfs.pbrpc.generatedinterfaces.MRC.mkdirRequest request, - com.google.protobuf.RpcCallback done); - - public abstract void open( - com.google.protobuf.RpcController controller, - org.xtreemfs.pbrpc.generatedinterfaces.MRC.openRequest request, - com.google.protobuf.RpcCallback done); - - public abstract void readdir( - com.google.protobuf.RpcController controller, - org.xtreemfs.pbrpc.generatedinterfaces.MRC.readdirRequest request, - com.google.protobuf.RpcCallback done); - - public abstract void readlink( - com.google.protobuf.RpcController controller, - org.xtreemfs.pbrpc.generatedinterfaces.MRC.readlinkRequest request, - com.google.protobuf.RpcCallback done); - - public abstract void removexattr( - com.google.protobuf.RpcController controller, - org.xtreemfs.pbrpc.generatedinterfaces.MRC.removexattrRequest request, - com.google.protobuf.RpcCallback done); - - public abstract void rename( - com.google.protobuf.RpcController controller, - org.xtreemfs.pbrpc.generatedinterfaces.MRC.renameRequest request, - com.google.protobuf.RpcCallback done); - - public abstract void rmdir( - com.google.protobuf.RpcController controller, - org.xtreemfs.pbrpc.generatedinterfaces.MRC.rmdirRequest request, - com.google.protobuf.RpcCallback done); - - public abstract void setattr( - com.google.protobuf.RpcController controller, - org.xtreemfs.pbrpc.generatedinterfaces.MRC.setattrRequest request, - com.google.protobuf.RpcCallback done); - - public abstract void setxattr( - com.google.protobuf.RpcController controller, - org.xtreemfs.pbrpc.generatedinterfaces.MRC.setxattrRequest request, - com.google.protobuf.RpcCallback done); - - public abstract void statvfs( - com.google.protobuf.RpcController controller, - org.xtreemfs.pbrpc.generatedinterfaces.MRC.statvfsRequest request, - com.google.protobuf.RpcCallback done); - - public abstract void symlink( - com.google.protobuf.RpcController controller, - org.xtreemfs.pbrpc.generatedinterfaces.MRC.symlinkRequest request, - com.google.protobuf.RpcCallback done); - - public abstract void unlink( - com.google.protobuf.RpcController controller, - org.xtreemfs.pbrpc.generatedinterfaces.MRC.unlinkRequest request, - com.google.protobuf.RpcCallback done); - - public abstract void access( - com.google.protobuf.RpcController controller, - org.xtreemfs.pbrpc.generatedinterfaces.MRC.accessRequest request, - com.google.protobuf.RpcCallback done); - - public abstract void xtreemfsCheckpoint( - com.google.protobuf.RpcController controller, - org.xtreemfs.pbrpc.generatedinterfaces.Common.emptyRequest request, - com.google.protobuf.RpcCallback done); - - public abstract void xtreemfsCheckFileExists( - com.google.protobuf.RpcController controller, - org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_check_file_existsRequest request, - com.google.protobuf.RpcCallback done); - - public abstract void xtreemfsDumpDatabase( - com.google.protobuf.RpcController controller, - org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_dump_restore_databaseRequest request, - com.google.protobuf.RpcCallback done); - - public abstract void xtreemfsGetSuitableOsds( - com.google.protobuf.RpcController controller, - org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_get_suitable_osdsRequest request, - com.google.protobuf.RpcCallback done); - - public abstract void xtreemfsInternalDebug( - com.google.protobuf.RpcController controller, - org.xtreemfs.pbrpc.generatedinterfaces.MRC.stringMessage request, - com.google.protobuf.RpcCallback done); - - public abstract void xtreemfsListdir( - com.google.protobuf.RpcController controller, - org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_listdirRequest request, - com.google.protobuf.RpcCallback done); - - public abstract void xtreemfsLsvol( - com.google.protobuf.RpcController controller, - org.xtreemfs.pbrpc.generatedinterfaces.Common.emptyRequest request, - com.google.protobuf.RpcCallback done); - - public abstract void xtreemfsMkvol( - com.google.protobuf.RpcController controller, - org.xtreemfs.pbrpc.generatedinterfaces.MRC.Volume request, - com.google.protobuf.RpcCallback done); - - public abstract void xtreemfsRenewCapability( - com.google.protobuf.RpcController controller, - org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.XCap request, - com.google.protobuf.RpcCallback done); - - public abstract void xtreemfsReplicationToMaster( - com.google.protobuf.RpcController controller, - org.xtreemfs.pbrpc.generatedinterfaces.Common.emptyRequest request, - com.google.protobuf.RpcCallback done); - - public abstract void xtreemfsReplicaAdd( - com.google.protobuf.RpcController controller, - org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_replica_addRequest request, - com.google.protobuf.RpcCallback done); - - public abstract void xtreemfsReplicaList( - com.google.protobuf.RpcController controller, - org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_replica_listRequest request, - com.google.protobuf.RpcCallback done); - - public abstract void xtreemfsReplicaRemove( - com.google.protobuf.RpcController controller, - org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_replica_removeRequest request, - com.google.protobuf.RpcCallback done); - - public abstract void xtreemfsRestoreDatabase( - com.google.protobuf.RpcController controller, - org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_dump_restore_databaseRequest request, - com.google.protobuf.RpcCallback done); - - public abstract void xtreemfsRestoreFile( - com.google.protobuf.RpcController controller, - org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_restore_fileRequest request, - com.google.protobuf.RpcCallback done); - - public abstract void xtreemfsRmvol( - com.google.protobuf.RpcController controller, - org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_rmvolRequest request, - com.google.protobuf.RpcCallback done); - - public abstract void xtreemfsShutdown( - com.google.protobuf.RpcController controller, - org.xtreemfs.pbrpc.generatedinterfaces.Common.emptyRequest request, - com.google.protobuf.RpcCallback done); - - public abstract void xtreemfsUpdateFileSize( - com.google.protobuf.RpcController controller, - org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_update_file_sizeRequest request, - com.google.protobuf.RpcCallback done); - - public abstract void xtreemfsSetReplicaUpdatePolicy( - com.google.protobuf.RpcController controller, - org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_set_replica_update_policyRequest request, - com.google.protobuf.RpcCallback done); - - public abstract void xtreemfsSetReadOnlyXattr( - com.google.protobuf.RpcController controller, - org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_set_read_only_xattrRequest request, - com.google.protobuf.RpcCallback done); - - public abstract void xtreemfsGetFileCredentials( - com.google.protobuf.RpcController controller, - org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_get_file_credentialsRequest request, - com.google.protobuf.RpcCallback done); - - public static final - com.google.protobuf.Descriptors.ServiceDescriptor - getDescriptor() { - return org.xtreemfs.pbrpc.generatedinterfaces.MRC.getDescriptor().getServices().get(0); - } - public final com.google.protobuf.Descriptors.ServiceDescriptor - getDescriptorForType() { - return getDescriptor(); - } - - public final void callMethod( - com.google.protobuf.Descriptors.MethodDescriptor method, - com.google.protobuf.RpcController controller, - com.google.protobuf.Message request, - com.google.protobuf.RpcCallback< - com.google.protobuf.Message> done) { - if (method.getService() != getDescriptor()) { - throw new java.lang.IllegalArgumentException( - "Service.callMethod() given method descriptor for wrong " + - "service type."); - } - switch(method.getIndex()) { - case 0: - this.fsetattr(controller, (org.xtreemfs.pbrpc.generatedinterfaces.MRC.fsetattrRequest)request, - com.google.protobuf.RpcUtil.specializeCallback( - done)); - return; - case 1: - this.ftruncate(controller, (org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.XCap)request, - com.google.protobuf.RpcUtil.specializeCallback( - done)); - return; - case 2: - this.getattr(controller, (org.xtreemfs.pbrpc.generatedinterfaces.MRC.getattrRequest)request, - com.google.protobuf.RpcUtil.specializeCallback( - done)); - return; - case 3: - this.getxattr(controller, (org.xtreemfs.pbrpc.generatedinterfaces.MRC.getxattrRequest)request, - com.google.protobuf.RpcUtil.specializeCallback( - done)); - return; - case 4: - this.link(controller, (org.xtreemfs.pbrpc.generatedinterfaces.MRC.linkRequest)request, - com.google.protobuf.RpcUtil.specializeCallback( - done)); - return; - case 5: - this.listxattr(controller, (org.xtreemfs.pbrpc.generatedinterfaces.MRC.listxattrRequest)request, - com.google.protobuf.RpcUtil.specializeCallback( - done)); - return; - case 6: - this.mkdir(controller, (org.xtreemfs.pbrpc.generatedinterfaces.MRC.mkdirRequest)request, - com.google.protobuf.RpcUtil.specializeCallback( - done)); - return; - case 7: - this.open(controller, (org.xtreemfs.pbrpc.generatedinterfaces.MRC.openRequest)request, - com.google.protobuf.RpcUtil.specializeCallback( - done)); - return; - case 8: - this.readdir(controller, (org.xtreemfs.pbrpc.generatedinterfaces.MRC.readdirRequest)request, - com.google.protobuf.RpcUtil.specializeCallback( - done)); - return; - case 9: - this.readlink(controller, (org.xtreemfs.pbrpc.generatedinterfaces.MRC.readlinkRequest)request, - com.google.protobuf.RpcUtil.specializeCallback( - done)); - return; - case 10: - this.removexattr(controller, (org.xtreemfs.pbrpc.generatedinterfaces.MRC.removexattrRequest)request, - com.google.protobuf.RpcUtil.specializeCallback( - done)); - return; - case 11: - this.rename(controller, (org.xtreemfs.pbrpc.generatedinterfaces.MRC.renameRequest)request, - com.google.protobuf.RpcUtil.specializeCallback( - done)); - return; - case 12: - this.rmdir(controller, (org.xtreemfs.pbrpc.generatedinterfaces.MRC.rmdirRequest)request, - com.google.protobuf.RpcUtil.specializeCallback( - done)); - return; - case 13: - this.setattr(controller, (org.xtreemfs.pbrpc.generatedinterfaces.MRC.setattrRequest)request, - com.google.protobuf.RpcUtil.specializeCallback( - done)); - return; - case 14: - this.setxattr(controller, (org.xtreemfs.pbrpc.generatedinterfaces.MRC.setxattrRequest)request, - com.google.protobuf.RpcUtil.specializeCallback( - done)); - return; - case 15: - this.statvfs(controller, (org.xtreemfs.pbrpc.generatedinterfaces.MRC.statvfsRequest)request, - com.google.protobuf.RpcUtil.specializeCallback( - done)); - return; - case 16: - this.symlink(controller, (org.xtreemfs.pbrpc.generatedinterfaces.MRC.symlinkRequest)request, - com.google.protobuf.RpcUtil.specializeCallback( - done)); - return; - case 17: - this.unlink(controller, (org.xtreemfs.pbrpc.generatedinterfaces.MRC.unlinkRequest)request, - com.google.protobuf.RpcUtil.specializeCallback( - done)); - return; - case 18: - this.access(controller, (org.xtreemfs.pbrpc.generatedinterfaces.MRC.accessRequest)request, - com.google.protobuf.RpcUtil.specializeCallback( - done)); - return; - case 19: - this.xtreemfsCheckpoint(controller, (org.xtreemfs.pbrpc.generatedinterfaces.Common.emptyRequest)request, - com.google.protobuf.RpcUtil.specializeCallback( - done)); - return; - case 20: - this.xtreemfsCheckFileExists(controller, (org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_check_file_existsRequest)request, - com.google.protobuf.RpcUtil.specializeCallback( - done)); - return; - case 21: - this.xtreemfsDumpDatabase(controller, (org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_dump_restore_databaseRequest)request, - com.google.protobuf.RpcUtil.specializeCallback( - done)); - return; - case 22: - this.xtreemfsGetSuitableOsds(controller, (org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_get_suitable_osdsRequest)request, - com.google.protobuf.RpcUtil.specializeCallback( - done)); - return; - case 23: - this.xtreemfsInternalDebug(controller, (org.xtreemfs.pbrpc.generatedinterfaces.MRC.stringMessage)request, - com.google.protobuf.RpcUtil.specializeCallback( - done)); - return; - case 24: - this.xtreemfsListdir(controller, (org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_listdirRequest)request, - com.google.protobuf.RpcUtil.specializeCallback( - done)); - return; - case 25: - this.xtreemfsLsvol(controller, (org.xtreemfs.pbrpc.generatedinterfaces.Common.emptyRequest)request, - com.google.protobuf.RpcUtil.specializeCallback( - done)); - return; - case 26: - this.xtreemfsMkvol(controller, (org.xtreemfs.pbrpc.generatedinterfaces.MRC.Volume)request, - com.google.protobuf.RpcUtil.specializeCallback( - done)); - return; - case 27: - this.xtreemfsRenewCapability(controller, (org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.XCap)request, - com.google.protobuf.RpcUtil.specializeCallback( - done)); - return; - case 28: - this.xtreemfsReplicationToMaster(controller, (org.xtreemfs.pbrpc.generatedinterfaces.Common.emptyRequest)request, - com.google.protobuf.RpcUtil.specializeCallback( - done)); - return; - case 29: - this.xtreemfsReplicaAdd(controller, (org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_replica_addRequest)request, - com.google.protobuf.RpcUtil.specializeCallback( - done)); - return; - case 30: - this.xtreemfsReplicaList(controller, (org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_replica_listRequest)request, - com.google.protobuf.RpcUtil.specializeCallback( - done)); - return; - case 31: - this.xtreemfsReplicaRemove(controller, (org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_replica_removeRequest)request, - com.google.protobuf.RpcUtil.specializeCallback( - done)); - return; - case 32: - this.xtreemfsRestoreDatabase(controller, (org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_dump_restore_databaseRequest)request, - com.google.protobuf.RpcUtil.specializeCallback( - done)); - return; - case 33: - this.xtreemfsRestoreFile(controller, (org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_restore_fileRequest)request, - com.google.protobuf.RpcUtil.specializeCallback( - done)); - return; - case 34: - this.xtreemfsRmvol(controller, (org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_rmvolRequest)request, - com.google.protobuf.RpcUtil.specializeCallback( - done)); - return; - case 35: - this.xtreemfsShutdown(controller, (org.xtreemfs.pbrpc.generatedinterfaces.Common.emptyRequest)request, - com.google.protobuf.RpcUtil.specializeCallback( - done)); - return; - case 36: - this.xtreemfsUpdateFileSize(controller, (org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_update_file_sizeRequest)request, - com.google.protobuf.RpcUtil.specializeCallback( - done)); - return; - case 37: - this.xtreemfsSetReplicaUpdatePolicy(controller, (org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_set_replica_update_policyRequest)request, - com.google.protobuf.RpcUtil.specializeCallback( - done)); - return; - case 38: - this.xtreemfsSetReadOnlyXattr(controller, (org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_set_read_only_xattrRequest)request, - com.google.protobuf.RpcUtil.specializeCallback( - done)); - return; - case 39: - this.xtreemfsGetFileCredentials(controller, (org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_get_file_credentialsRequest)request, - com.google.protobuf.RpcUtil.specializeCallback( - done)); - return; - default: - throw new java.lang.AssertionError("Can't get here."); - } - } - - public final com.google.protobuf.Message - getRequestPrototype( - com.google.protobuf.Descriptors.MethodDescriptor method) { - if (method.getService() != getDescriptor()) { - throw new java.lang.IllegalArgumentException( - "Service.getRequestPrototype() given method " + - "descriptor for wrong service type."); - } - switch(method.getIndex()) { - case 0: - return org.xtreemfs.pbrpc.generatedinterfaces.MRC.fsetattrRequest.getDefaultInstance(); - case 1: - return org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.XCap.getDefaultInstance(); - case 2: - return org.xtreemfs.pbrpc.generatedinterfaces.MRC.getattrRequest.getDefaultInstance(); - case 3: - return org.xtreemfs.pbrpc.generatedinterfaces.MRC.getxattrRequest.getDefaultInstance(); - case 4: - return org.xtreemfs.pbrpc.generatedinterfaces.MRC.linkRequest.getDefaultInstance(); - case 5: - return org.xtreemfs.pbrpc.generatedinterfaces.MRC.listxattrRequest.getDefaultInstance(); - case 6: - return org.xtreemfs.pbrpc.generatedinterfaces.MRC.mkdirRequest.getDefaultInstance(); - case 7: - return org.xtreemfs.pbrpc.generatedinterfaces.MRC.openRequest.getDefaultInstance(); - case 8: - return org.xtreemfs.pbrpc.generatedinterfaces.MRC.readdirRequest.getDefaultInstance(); - case 9: - return org.xtreemfs.pbrpc.generatedinterfaces.MRC.readlinkRequest.getDefaultInstance(); - case 10: - return org.xtreemfs.pbrpc.generatedinterfaces.MRC.removexattrRequest.getDefaultInstance(); - case 11: - return org.xtreemfs.pbrpc.generatedinterfaces.MRC.renameRequest.getDefaultInstance(); - case 12: - return org.xtreemfs.pbrpc.generatedinterfaces.MRC.rmdirRequest.getDefaultInstance(); - case 13: - return org.xtreemfs.pbrpc.generatedinterfaces.MRC.setattrRequest.getDefaultInstance(); - case 14: - return org.xtreemfs.pbrpc.generatedinterfaces.MRC.setxattrRequest.getDefaultInstance(); - case 15: - return org.xtreemfs.pbrpc.generatedinterfaces.MRC.statvfsRequest.getDefaultInstance(); - case 16: - return org.xtreemfs.pbrpc.generatedinterfaces.MRC.symlinkRequest.getDefaultInstance(); - case 17: - return org.xtreemfs.pbrpc.generatedinterfaces.MRC.unlinkRequest.getDefaultInstance(); - case 18: - return org.xtreemfs.pbrpc.generatedinterfaces.MRC.accessRequest.getDefaultInstance(); - case 19: - return org.xtreemfs.pbrpc.generatedinterfaces.Common.emptyRequest.getDefaultInstance(); - case 20: - return org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_check_file_existsRequest.getDefaultInstance(); - case 21: - return org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_dump_restore_databaseRequest.getDefaultInstance(); - case 22: - return org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_get_suitable_osdsRequest.getDefaultInstance(); - case 23: - return org.xtreemfs.pbrpc.generatedinterfaces.MRC.stringMessage.getDefaultInstance(); - case 24: - return org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_listdirRequest.getDefaultInstance(); - case 25: - return org.xtreemfs.pbrpc.generatedinterfaces.Common.emptyRequest.getDefaultInstance(); - case 26: - return org.xtreemfs.pbrpc.generatedinterfaces.MRC.Volume.getDefaultInstance(); - case 27: - return org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.XCap.getDefaultInstance(); - case 28: - return org.xtreemfs.pbrpc.generatedinterfaces.Common.emptyRequest.getDefaultInstance(); - case 29: - return org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_replica_addRequest.getDefaultInstance(); - case 30: - return org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_replica_listRequest.getDefaultInstance(); - case 31: - return org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_replica_removeRequest.getDefaultInstance(); - case 32: - return org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_dump_restore_databaseRequest.getDefaultInstance(); - case 33: - return org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_restore_fileRequest.getDefaultInstance(); - case 34: - return org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_rmvolRequest.getDefaultInstance(); - case 35: - return org.xtreemfs.pbrpc.generatedinterfaces.Common.emptyRequest.getDefaultInstance(); - case 36: - return org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_update_file_sizeRequest.getDefaultInstance(); - case 37: - return org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_set_replica_update_policyRequest.getDefaultInstance(); - case 38: - return org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_set_read_only_xattrRequest.getDefaultInstance(); - case 39: - return org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_get_file_credentialsRequest.getDefaultInstance(); - default: - throw new java.lang.AssertionError("Can't get here."); - } - } - - public final com.google.protobuf.Message - getResponsePrototype( - com.google.protobuf.Descriptors.MethodDescriptor method) { - if (method.getService() != getDescriptor()) { - throw new java.lang.IllegalArgumentException( - "Service.getResponsePrototype() given method " + - "descriptor for wrong service type."); - } - switch(method.getIndex()) { - case 0: - return org.xtreemfs.pbrpc.generatedinterfaces.Common.emptyResponse.getDefaultInstance(); - case 1: - return org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.XCap.getDefaultInstance(); - case 2: - return org.xtreemfs.pbrpc.generatedinterfaces.MRC.getattrResponse.getDefaultInstance(); - case 3: - return org.xtreemfs.pbrpc.generatedinterfaces.MRC.getxattrResponse.getDefaultInstance(); - case 4: - return org.xtreemfs.pbrpc.generatedinterfaces.MRC.timestampResponse.getDefaultInstance(); - case 5: - return org.xtreemfs.pbrpc.generatedinterfaces.MRC.listxattrResponse.getDefaultInstance(); - case 6: - return org.xtreemfs.pbrpc.generatedinterfaces.MRC.timestampResponse.getDefaultInstance(); - case 7: - return org.xtreemfs.pbrpc.generatedinterfaces.MRC.openResponse.getDefaultInstance(); - case 8: - return org.xtreemfs.pbrpc.generatedinterfaces.MRC.DirectoryEntries.getDefaultInstance(); - case 9: - return org.xtreemfs.pbrpc.generatedinterfaces.MRC.readlinkResponse.getDefaultInstance(); - case 10: - return org.xtreemfs.pbrpc.generatedinterfaces.MRC.timestampResponse.getDefaultInstance(); - case 11: - return org.xtreemfs.pbrpc.generatedinterfaces.MRC.renameResponse.getDefaultInstance(); - case 12: - return org.xtreemfs.pbrpc.generatedinterfaces.MRC.timestampResponse.getDefaultInstance(); - case 13: - return org.xtreemfs.pbrpc.generatedinterfaces.MRC.timestampResponse.getDefaultInstance(); - case 14: - return org.xtreemfs.pbrpc.generatedinterfaces.MRC.timestampResponse.getDefaultInstance(); - case 15: - return org.xtreemfs.pbrpc.generatedinterfaces.MRC.StatVFS.getDefaultInstance(); - case 16: - return org.xtreemfs.pbrpc.generatedinterfaces.MRC.timestampResponse.getDefaultInstance(); - case 17: - return org.xtreemfs.pbrpc.generatedinterfaces.MRC.unlinkResponse.getDefaultInstance(); - case 18: - return org.xtreemfs.pbrpc.generatedinterfaces.Common.emptyResponse.getDefaultInstance(); - case 19: - return org.xtreemfs.pbrpc.generatedinterfaces.Common.emptyResponse.getDefaultInstance(); - case 20: - return org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_check_file_existsResponse.getDefaultInstance(); - case 21: - return org.xtreemfs.pbrpc.generatedinterfaces.Common.emptyResponse.getDefaultInstance(); - case 22: - return org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_get_suitable_osdsResponse.getDefaultInstance(); - case 23: - return org.xtreemfs.pbrpc.generatedinterfaces.MRC.stringMessage.getDefaultInstance(); - case 24: - return org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_listdirResponse.getDefaultInstance(); - case 25: - return org.xtreemfs.pbrpc.generatedinterfaces.MRC.Volumes.getDefaultInstance(); - case 26: - return org.xtreemfs.pbrpc.generatedinterfaces.Common.emptyResponse.getDefaultInstance(); - case 27: - return org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.XCap.getDefaultInstance(); - case 28: - return org.xtreemfs.pbrpc.generatedinterfaces.Common.emptyResponse.getDefaultInstance(); - case 29: - return org.xtreemfs.pbrpc.generatedinterfaces.Common.emptyResponse.getDefaultInstance(); - case 30: - return org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.Replicas.getDefaultInstance(); - case 31: - return org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials.getDefaultInstance(); - case 32: - return org.xtreemfs.pbrpc.generatedinterfaces.Common.emptyResponse.getDefaultInstance(); - case 33: - return org.xtreemfs.pbrpc.generatedinterfaces.Common.emptyResponse.getDefaultInstance(); - case 34: - return org.xtreemfs.pbrpc.generatedinterfaces.Common.emptyResponse.getDefaultInstance(); - case 35: - return org.xtreemfs.pbrpc.generatedinterfaces.Common.emptyResponse.getDefaultInstance(); - case 36: - return org.xtreemfs.pbrpc.generatedinterfaces.MRC.timestampResponse.getDefaultInstance(); - case 37: - return org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_set_replica_update_policyResponse.getDefaultInstance(); - case 38: - return org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_set_read_only_xattrResponse.getDefaultInstance(); - case 39: - return org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials.getDefaultInstance(); - default: - throw new java.lang.AssertionError("Can't get here."); - } - } - - public static Stub newStub( - com.google.protobuf.RpcChannel channel) { - return new Stub(channel); - } - - public static final class Stub extends org.xtreemfs.pbrpc.generatedinterfaces.MRC.MRCService implements Interface { - private Stub(com.google.protobuf.RpcChannel channel) { - this.channel = channel; - } - - private final com.google.protobuf.RpcChannel channel; - - public com.google.protobuf.RpcChannel getChannel() { - return channel; - } - - public void fsetattr( - com.google.protobuf.RpcController controller, - org.xtreemfs.pbrpc.generatedinterfaces.MRC.fsetattrRequest request, - com.google.protobuf.RpcCallback done) { - channel.callMethod( - getDescriptor().getMethods().get(0), - controller, - request, - org.xtreemfs.pbrpc.generatedinterfaces.Common.emptyResponse.getDefaultInstance(), - com.google.protobuf.RpcUtil.generalizeCallback( - done, - org.xtreemfs.pbrpc.generatedinterfaces.Common.emptyResponse.class, - org.xtreemfs.pbrpc.generatedinterfaces.Common.emptyResponse.getDefaultInstance())); - } - - public void ftruncate( - com.google.protobuf.RpcController controller, - org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.XCap request, - com.google.protobuf.RpcCallback done) { - channel.callMethod( - getDescriptor().getMethods().get(1), - controller, - request, - org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.XCap.getDefaultInstance(), - com.google.protobuf.RpcUtil.generalizeCallback( - done, - org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.XCap.class, - org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.XCap.getDefaultInstance())); - } - - public void getattr( - com.google.protobuf.RpcController controller, - org.xtreemfs.pbrpc.generatedinterfaces.MRC.getattrRequest request, - com.google.protobuf.RpcCallback done) { - channel.callMethod( - getDescriptor().getMethods().get(2), - controller, - request, - org.xtreemfs.pbrpc.generatedinterfaces.MRC.getattrResponse.getDefaultInstance(), - com.google.protobuf.RpcUtil.generalizeCallback( - done, - org.xtreemfs.pbrpc.generatedinterfaces.MRC.getattrResponse.class, - org.xtreemfs.pbrpc.generatedinterfaces.MRC.getattrResponse.getDefaultInstance())); - } - - public void getxattr( - com.google.protobuf.RpcController controller, - org.xtreemfs.pbrpc.generatedinterfaces.MRC.getxattrRequest request, - com.google.protobuf.RpcCallback done) { - channel.callMethod( - getDescriptor().getMethods().get(3), - controller, - request, - org.xtreemfs.pbrpc.generatedinterfaces.MRC.getxattrResponse.getDefaultInstance(), - com.google.protobuf.RpcUtil.generalizeCallback( - done, - org.xtreemfs.pbrpc.generatedinterfaces.MRC.getxattrResponse.class, - org.xtreemfs.pbrpc.generatedinterfaces.MRC.getxattrResponse.getDefaultInstance())); - } - - public void link( - com.google.protobuf.RpcController controller, - org.xtreemfs.pbrpc.generatedinterfaces.MRC.linkRequest request, - com.google.protobuf.RpcCallback done) { - channel.callMethod( - getDescriptor().getMethods().get(4), - controller, - request, - org.xtreemfs.pbrpc.generatedinterfaces.MRC.timestampResponse.getDefaultInstance(), - com.google.protobuf.RpcUtil.generalizeCallback( - done, - org.xtreemfs.pbrpc.generatedinterfaces.MRC.timestampResponse.class, - org.xtreemfs.pbrpc.generatedinterfaces.MRC.timestampResponse.getDefaultInstance())); - } - - public void listxattr( - com.google.protobuf.RpcController controller, - org.xtreemfs.pbrpc.generatedinterfaces.MRC.listxattrRequest request, - com.google.protobuf.RpcCallback done) { - channel.callMethod( - getDescriptor().getMethods().get(5), - controller, - request, - org.xtreemfs.pbrpc.generatedinterfaces.MRC.listxattrResponse.getDefaultInstance(), - com.google.protobuf.RpcUtil.generalizeCallback( - done, - org.xtreemfs.pbrpc.generatedinterfaces.MRC.listxattrResponse.class, - org.xtreemfs.pbrpc.generatedinterfaces.MRC.listxattrResponse.getDefaultInstance())); - } - - public void mkdir( - com.google.protobuf.RpcController controller, - org.xtreemfs.pbrpc.generatedinterfaces.MRC.mkdirRequest request, - com.google.protobuf.RpcCallback done) { - channel.callMethod( - getDescriptor().getMethods().get(6), - controller, - request, - org.xtreemfs.pbrpc.generatedinterfaces.MRC.timestampResponse.getDefaultInstance(), - com.google.protobuf.RpcUtil.generalizeCallback( - done, - org.xtreemfs.pbrpc.generatedinterfaces.MRC.timestampResponse.class, - org.xtreemfs.pbrpc.generatedinterfaces.MRC.timestampResponse.getDefaultInstance())); - } - - public void open( - com.google.protobuf.RpcController controller, - org.xtreemfs.pbrpc.generatedinterfaces.MRC.openRequest request, - com.google.protobuf.RpcCallback done) { - channel.callMethod( - getDescriptor().getMethods().get(7), - controller, - request, - org.xtreemfs.pbrpc.generatedinterfaces.MRC.openResponse.getDefaultInstance(), - com.google.protobuf.RpcUtil.generalizeCallback( - done, - org.xtreemfs.pbrpc.generatedinterfaces.MRC.openResponse.class, - org.xtreemfs.pbrpc.generatedinterfaces.MRC.openResponse.getDefaultInstance())); - } - - public void readdir( - com.google.protobuf.RpcController controller, - org.xtreemfs.pbrpc.generatedinterfaces.MRC.readdirRequest request, - com.google.protobuf.RpcCallback done) { - channel.callMethod( - getDescriptor().getMethods().get(8), - controller, - request, - org.xtreemfs.pbrpc.generatedinterfaces.MRC.DirectoryEntries.getDefaultInstance(), - com.google.protobuf.RpcUtil.generalizeCallback( - done, - org.xtreemfs.pbrpc.generatedinterfaces.MRC.DirectoryEntries.class, - org.xtreemfs.pbrpc.generatedinterfaces.MRC.DirectoryEntries.getDefaultInstance())); - } - - public void readlink( - com.google.protobuf.RpcController controller, - org.xtreemfs.pbrpc.generatedinterfaces.MRC.readlinkRequest request, - com.google.protobuf.RpcCallback done) { - channel.callMethod( - getDescriptor().getMethods().get(9), - controller, - request, - org.xtreemfs.pbrpc.generatedinterfaces.MRC.readlinkResponse.getDefaultInstance(), - com.google.protobuf.RpcUtil.generalizeCallback( - done, - org.xtreemfs.pbrpc.generatedinterfaces.MRC.readlinkResponse.class, - org.xtreemfs.pbrpc.generatedinterfaces.MRC.readlinkResponse.getDefaultInstance())); - } - - public void removexattr( - com.google.protobuf.RpcController controller, - org.xtreemfs.pbrpc.generatedinterfaces.MRC.removexattrRequest request, - com.google.protobuf.RpcCallback done) { - channel.callMethod( - getDescriptor().getMethods().get(10), - controller, - request, - org.xtreemfs.pbrpc.generatedinterfaces.MRC.timestampResponse.getDefaultInstance(), - com.google.protobuf.RpcUtil.generalizeCallback( - done, - org.xtreemfs.pbrpc.generatedinterfaces.MRC.timestampResponse.class, - org.xtreemfs.pbrpc.generatedinterfaces.MRC.timestampResponse.getDefaultInstance())); - } - - public void rename( - com.google.protobuf.RpcController controller, - org.xtreemfs.pbrpc.generatedinterfaces.MRC.renameRequest request, - com.google.protobuf.RpcCallback done) { - channel.callMethod( - getDescriptor().getMethods().get(11), - controller, - request, - org.xtreemfs.pbrpc.generatedinterfaces.MRC.renameResponse.getDefaultInstance(), - com.google.protobuf.RpcUtil.generalizeCallback( - done, - org.xtreemfs.pbrpc.generatedinterfaces.MRC.renameResponse.class, - org.xtreemfs.pbrpc.generatedinterfaces.MRC.renameResponse.getDefaultInstance())); - } - - public void rmdir( - com.google.protobuf.RpcController controller, - org.xtreemfs.pbrpc.generatedinterfaces.MRC.rmdirRequest request, - com.google.protobuf.RpcCallback done) { - channel.callMethod( - getDescriptor().getMethods().get(12), - controller, - request, - org.xtreemfs.pbrpc.generatedinterfaces.MRC.timestampResponse.getDefaultInstance(), - com.google.protobuf.RpcUtil.generalizeCallback( - done, - org.xtreemfs.pbrpc.generatedinterfaces.MRC.timestampResponse.class, - org.xtreemfs.pbrpc.generatedinterfaces.MRC.timestampResponse.getDefaultInstance())); - } - - public void setattr( - com.google.protobuf.RpcController controller, - org.xtreemfs.pbrpc.generatedinterfaces.MRC.setattrRequest request, - com.google.protobuf.RpcCallback done) { - channel.callMethod( - getDescriptor().getMethods().get(13), - controller, - request, - org.xtreemfs.pbrpc.generatedinterfaces.MRC.timestampResponse.getDefaultInstance(), - com.google.protobuf.RpcUtil.generalizeCallback( - done, - org.xtreemfs.pbrpc.generatedinterfaces.MRC.timestampResponse.class, - org.xtreemfs.pbrpc.generatedinterfaces.MRC.timestampResponse.getDefaultInstance())); - } - - public void setxattr( - com.google.protobuf.RpcController controller, - org.xtreemfs.pbrpc.generatedinterfaces.MRC.setxattrRequest request, - com.google.protobuf.RpcCallback done) { - channel.callMethod( - getDescriptor().getMethods().get(14), - controller, - request, - org.xtreemfs.pbrpc.generatedinterfaces.MRC.timestampResponse.getDefaultInstance(), - com.google.protobuf.RpcUtil.generalizeCallback( - done, - org.xtreemfs.pbrpc.generatedinterfaces.MRC.timestampResponse.class, - org.xtreemfs.pbrpc.generatedinterfaces.MRC.timestampResponse.getDefaultInstance())); - } - - public void statvfs( - com.google.protobuf.RpcController controller, - org.xtreemfs.pbrpc.generatedinterfaces.MRC.statvfsRequest request, - com.google.protobuf.RpcCallback done) { - channel.callMethod( - getDescriptor().getMethods().get(15), - controller, - request, - org.xtreemfs.pbrpc.generatedinterfaces.MRC.StatVFS.getDefaultInstance(), - com.google.protobuf.RpcUtil.generalizeCallback( - done, - org.xtreemfs.pbrpc.generatedinterfaces.MRC.StatVFS.class, - org.xtreemfs.pbrpc.generatedinterfaces.MRC.StatVFS.getDefaultInstance())); - } - - public void symlink( - com.google.protobuf.RpcController controller, - org.xtreemfs.pbrpc.generatedinterfaces.MRC.symlinkRequest request, - com.google.protobuf.RpcCallback done) { - channel.callMethod( - getDescriptor().getMethods().get(16), - controller, - request, - org.xtreemfs.pbrpc.generatedinterfaces.MRC.timestampResponse.getDefaultInstance(), - com.google.protobuf.RpcUtil.generalizeCallback( - done, - org.xtreemfs.pbrpc.generatedinterfaces.MRC.timestampResponse.class, - org.xtreemfs.pbrpc.generatedinterfaces.MRC.timestampResponse.getDefaultInstance())); - } - - public void unlink( - com.google.protobuf.RpcController controller, - org.xtreemfs.pbrpc.generatedinterfaces.MRC.unlinkRequest request, - com.google.protobuf.RpcCallback done) { - channel.callMethod( - getDescriptor().getMethods().get(17), - controller, - request, - org.xtreemfs.pbrpc.generatedinterfaces.MRC.unlinkResponse.getDefaultInstance(), - com.google.protobuf.RpcUtil.generalizeCallback( - done, - org.xtreemfs.pbrpc.generatedinterfaces.MRC.unlinkResponse.class, - org.xtreemfs.pbrpc.generatedinterfaces.MRC.unlinkResponse.getDefaultInstance())); - } - - public void access( - com.google.protobuf.RpcController controller, - org.xtreemfs.pbrpc.generatedinterfaces.MRC.accessRequest request, - com.google.protobuf.RpcCallback done) { - channel.callMethod( - getDescriptor().getMethods().get(18), - controller, - request, - org.xtreemfs.pbrpc.generatedinterfaces.Common.emptyResponse.getDefaultInstance(), - com.google.protobuf.RpcUtil.generalizeCallback( - done, - org.xtreemfs.pbrpc.generatedinterfaces.Common.emptyResponse.class, - org.xtreemfs.pbrpc.generatedinterfaces.Common.emptyResponse.getDefaultInstance())); - } - - public void xtreemfsCheckpoint( - com.google.protobuf.RpcController controller, - org.xtreemfs.pbrpc.generatedinterfaces.Common.emptyRequest request, - com.google.protobuf.RpcCallback done) { - channel.callMethod( - getDescriptor().getMethods().get(19), - controller, - request, - org.xtreemfs.pbrpc.generatedinterfaces.Common.emptyResponse.getDefaultInstance(), - com.google.protobuf.RpcUtil.generalizeCallback( - done, - org.xtreemfs.pbrpc.generatedinterfaces.Common.emptyResponse.class, - org.xtreemfs.pbrpc.generatedinterfaces.Common.emptyResponse.getDefaultInstance())); - } - - public void xtreemfsCheckFileExists( - com.google.protobuf.RpcController controller, - org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_check_file_existsRequest request, - com.google.protobuf.RpcCallback done) { - channel.callMethod( - getDescriptor().getMethods().get(20), - controller, - request, - org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_check_file_existsResponse.getDefaultInstance(), - com.google.protobuf.RpcUtil.generalizeCallback( - done, - org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_check_file_existsResponse.class, - org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_check_file_existsResponse.getDefaultInstance())); - } - - public void xtreemfsDumpDatabase( - com.google.protobuf.RpcController controller, - org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_dump_restore_databaseRequest request, - com.google.protobuf.RpcCallback done) { - channel.callMethod( - getDescriptor().getMethods().get(21), - controller, - request, - org.xtreemfs.pbrpc.generatedinterfaces.Common.emptyResponse.getDefaultInstance(), - com.google.protobuf.RpcUtil.generalizeCallback( - done, - org.xtreemfs.pbrpc.generatedinterfaces.Common.emptyResponse.class, - org.xtreemfs.pbrpc.generatedinterfaces.Common.emptyResponse.getDefaultInstance())); - } - - public void xtreemfsGetSuitableOsds( - com.google.protobuf.RpcController controller, - org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_get_suitable_osdsRequest request, - com.google.protobuf.RpcCallback done) { - channel.callMethod( - getDescriptor().getMethods().get(22), - controller, - request, - org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_get_suitable_osdsResponse.getDefaultInstance(), - com.google.protobuf.RpcUtil.generalizeCallback( - done, - org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_get_suitable_osdsResponse.class, - org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_get_suitable_osdsResponse.getDefaultInstance())); - } - - public void xtreemfsInternalDebug( - com.google.protobuf.RpcController controller, - org.xtreemfs.pbrpc.generatedinterfaces.MRC.stringMessage request, - com.google.protobuf.RpcCallback done) { - channel.callMethod( - getDescriptor().getMethods().get(23), - controller, - request, - org.xtreemfs.pbrpc.generatedinterfaces.MRC.stringMessage.getDefaultInstance(), - com.google.protobuf.RpcUtil.generalizeCallback( - done, - org.xtreemfs.pbrpc.generatedinterfaces.MRC.stringMessage.class, - org.xtreemfs.pbrpc.generatedinterfaces.MRC.stringMessage.getDefaultInstance())); - } - - public void xtreemfsListdir( - com.google.protobuf.RpcController controller, - org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_listdirRequest request, - com.google.protobuf.RpcCallback done) { - channel.callMethod( - getDescriptor().getMethods().get(24), - controller, - request, - org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_listdirResponse.getDefaultInstance(), - com.google.protobuf.RpcUtil.generalizeCallback( - done, - org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_listdirResponse.class, - org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_listdirResponse.getDefaultInstance())); - } - - public void xtreemfsLsvol( - com.google.protobuf.RpcController controller, - org.xtreemfs.pbrpc.generatedinterfaces.Common.emptyRequest request, - com.google.protobuf.RpcCallback done) { - channel.callMethod( - getDescriptor().getMethods().get(25), - controller, - request, - org.xtreemfs.pbrpc.generatedinterfaces.MRC.Volumes.getDefaultInstance(), - com.google.protobuf.RpcUtil.generalizeCallback( - done, - org.xtreemfs.pbrpc.generatedinterfaces.MRC.Volumes.class, - org.xtreemfs.pbrpc.generatedinterfaces.MRC.Volumes.getDefaultInstance())); - } - - public void xtreemfsMkvol( - com.google.protobuf.RpcController controller, - org.xtreemfs.pbrpc.generatedinterfaces.MRC.Volume request, - com.google.protobuf.RpcCallback done) { - channel.callMethod( - getDescriptor().getMethods().get(26), - controller, - request, - org.xtreemfs.pbrpc.generatedinterfaces.Common.emptyResponse.getDefaultInstance(), - com.google.protobuf.RpcUtil.generalizeCallback( - done, - org.xtreemfs.pbrpc.generatedinterfaces.Common.emptyResponse.class, - org.xtreemfs.pbrpc.generatedinterfaces.Common.emptyResponse.getDefaultInstance())); - } - - public void xtreemfsRenewCapability( - com.google.protobuf.RpcController controller, - org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.XCap request, - com.google.protobuf.RpcCallback done) { - channel.callMethod( - getDescriptor().getMethods().get(27), - controller, - request, - org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.XCap.getDefaultInstance(), - com.google.protobuf.RpcUtil.generalizeCallback( - done, - org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.XCap.class, - org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.XCap.getDefaultInstance())); - } - - public void xtreemfsReplicationToMaster( - com.google.protobuf.RpcController controller, - org.xtreemfs.pbrpc.generatedinterfaces.Common.emptyRequest request, - com.google.protobuf.RpcCallback done) { - channel.callMethod( - getDescriptor().getMethods().get(28), - controller, - request, - org.xtreemfs.pbrpc.generatedinterfaces.Common.emptyResponse.getDefaultInstance(), - com.google.protobuf.RpcUtil.generalizeCallback( - done, - org.xtreemfs.pbrpc.generatedinterfaces.Common.emptyResponse.class, - org.xtreemfs.pbrpc.generatedinterfaces.Common.emptyResponse.getDefaultInstance())); - } - - public void xtreemfsReplicaAdd( - com.google.protobuf.RpcController controller, - org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_replica_addRequest request, - com.google.protobuf.RpcCallback done) { - channel.callMethod( - getDescriptor().getMethods().get(29), - controller, - request, - org.xtreemfs.pbrpc.generatedinterfaces.Common.emptyResponse.getDefaultInstance(), - com.google.protobuf.RpcUtil.generalizeCallback( - done, - org.xtreemfs.pbrpc.generatedinterfaces.Common.emptyResponse.class, - org.xtreemfs.pbrpc.generatedinterfaces.Common.emptyResponse.getDefaultInstance())); - } - - public void xtreemfsReplicaList( - com.google.protobuf.RpcController controller, - org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_replica_listRequest request, - com.google.protobuf.RpcCallback done) { - channel.callMethod( - getDescriptor().getMethods().get(30), - controller, - request, - org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.Replicas.getDefaultInstance(), - com.google.protobuf.RpcUtil.generalizeCallback( - done, - org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.Replicas.class, - org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.Replicas.getDefaultInstance())); - } - - public void xtreemfsReplicaRemove( - com.google.protobuf.RpcController controller, - org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_replica_removeRequest request, - com.google.protobuf.RpcCallback done) { - channel.callMethod( - getDescriptor().getMethods().get(31), - controller, - request, - org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials.getDefaultInstance(), - com.google.protobuf.RpcUtil.generalizeCallback( - done, - org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials.class, - org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials.getDefaultInstance())); - } - - public void xtreemfsRestoreDatabase( - com.google.protobuf.RpcController controller, - org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_dump_restore_databaseRequest request, - com.google.protobuf.RpcCallback done) { - channel.callMethod( - getDescriptor().getMethods().get(32), - controller, - request, - org.xtreemfs.pbrpc.generatedinterfaces.Common.emptyResponse.getDefaultInstance(), - com.google.protobuf.RpcUtil.generalizeCallback( - done, - org.xtreemfs.pbrpc.generatedinterfaces.Common.emptyResponse.class, - org.xtreemfs.pbrpc.generatedinterfaces.Common.emptyResponse.getDefaultInstance())); - } - - public void xtreemfsRestoreFile( - com.google.protobuf.RpcController controller, - org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_restore_fileRequest request, - com.google.protobuf.RpcCallback done) { - channel.callMethod( - getDescriptor().getMethods().get(33), - controller, - request, - org.xtreemfs.pbrpc.generatedinterfaces.Common.emptyResponse.getDefaultInstance(), - com.google.protobuf.RpcUtil.generalizeCallback( - done, - org.xtreemfs.pbrpc.generatedinterfaces.Common.emptyResponse.class, - org.xtreemfs.pbrpc.generatedinterfaces.Common.emptyResponse.getDefaultInstance())); - } - - public void xtreemfsRmvol( - com.google.protobuf.RpcController controller, - org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_rmvolRequest request, - com.google.protobuf.RpcCallback done) { - channel.callMethod( - getDescriptor().getMethods().get(34), - controller, - request, - org.xtreemfs.pbrpc.generatedinterfaces.Common.emptyResponse.getDefaultInstance(), - com.google.protobuf.RpcUtil.generalizeCallback( - done, - org.xtreemfs.pbrpc.generatedinterfaces.Common.emptyResponse.class, - org.xtreemfs.pbrpc.generatedinterfaces.Common.emptyResponse.getDefaultInstance())); - } - - public void xtreemfsShutdown( - com.google.protobuf.RpcController controller, - org.xtreemfs.pbrpc.generatedinterfaces.Common.emptyRequest request, - com.google.protobuf.RpcCallback done) { - channel.callMethod( - getDescriptor().getMethods().get(35), - controller, - request, - org.xtreemfs.pbrpc.generatedinterfaces.Common.emptyResponse.getDefaultInstance(), - com.google.protobuf.RpcUtil.generalizeCallback( - done, - org.xtreemfs.pbrpc.generatedinterfaces.Common.emptyResponse.class, - org.xtreemfs.pbrpc.generatedinterfaces.Common.emptyResponse.getDefaultInstance())); - } - - public void xtreemfsUpdateFileSize( - com.google.protobuf.RpcController controller, - org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_update_file_sizeRequest request, - com.google.protobuf.RpcCallback done) { - channel.callMethod( - getDescriptor().getMethods().get(36), - controller, - request, - org.xtreemfs.pbrpc.generatedinterfaces.MRC.timestampResponse.getDefaultInstance(), - com.google.protobuf.RpcUtil.generalizeCallback( - done, - org.xtreemfs.pbrpc.generatedinterfaces.MRC.timestampResponse.class, - org.xtreemfs.pbrpc.generatedinterfaces.MRC.timestampResponse.getDefaultInstance())); - } - - public void xtreemfsSetReplicaUpdatePolicy( - com.google.protobuf.RpcController controller, - org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_set_replica_update_policyRequest request, - com.google.protobuf.RpcCallback done) { - channel.callMethod( - getDescriptor().getMethods().get(37), - controller, - request, - org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_set_replica_update_policyResponse.getDefaultInstance(), - com.google.protobuf.RpcUtil.generalizeCallback( - done, - org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_set_replica_update_policyResponse.class, - org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_set_replica_update_policyResponse.getDefaultInstance())); - } - - public void xtreemfsSetReadOnlyXattr( - com.google.protobuf.RpcController controller, - org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_set_read_only_xattrRequest request, - com.google.protobuf.RpcCallback done) { - channel.callMethod( - getDescriptor().getMethods().get(38), - controller, - request, - org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_set_read_only_xattrResponse.getDefaultInstance(), - com.google.protobuf.RpcUtil.generalizeCallback( - done, - org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_set_read_only_xattrResponse.class, - org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_set_read_only_xattrResponse.getDefaultInstance())); - } - - public void xtreemfsGetFileCredentials( - com.google.protobuf.RpcController controller, - org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_get_file_credentialsRequest request, - com.google.protobuf.RpcCallback done) { - channel.callMethod( - getDescriptor().getMethods().get(39), - controller, - request, - org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials.getDefaultInstance(), - com.google.protobuf.RpcUtil.generalizeCallback( - done, - org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials.class, - org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials.getDefaultInstance())); - } - } - - public static BlockingInterface newBlockingStub( - com.google.protobuf.BlockingRpcChannel channel) { - return new BlockingStub(channel); - } - - public interface BlockingInterface { - public org.xtreemfs.pbrpc.generatedinterfaces.Common.emptyResponse fsetattr( - com.google.protobuf.RpcController controller, - org.xtreemfs.pbrpc.generatedinterfaces.MRC.fsetattrRequest request) - throws com.google.protobuf.ServiceException; - - public org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.XCap ftruncate( - com.google.protobuf.RpcController controller, - org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.XCap request) - throws com.google.protobuf.ServiceException; - - public org.xtreemfs.pbrpc.generatedinterfaces.MRC.getattrResponse getattr( - com.google.protobuf.RpcController controller, - org.xtreemfs.pbrpc.generatedinterfaces.MRC.getattrRequest request) - throws com.google.protobuf.ServiceException; - - public org.xtreemfs.pbrpc.generatedinterfaces.MRC.getxattrResponse getxattr( - com.google.protobuf.RpcController controller, - org.xtreemfs.pbrpc.generatedinterfaces.MRC.getxattrRequest request) - throws com.google.protobuf.ServiceException; - - public org.xtreemfs.pbrpc.generatedinterfaces.MRC.timestampResponse link( - com.google.protobuf.RpcController controller, - org.xtreemfs.pbrpc.generatedinterfaces.MRC.linkRequest request) - throws com.google.protobuf.ServiceException; - - public org.xtreemfs.pbrpc.generatedinterfaces.MRC.listxattrResponse listxattr( - com.google.protobuf.RpcController controller, - org.xtreemfs.pbrpc.generatedinterfaces.MRC.listxattrRequest request) - throws com.google.protobuf.ServiceException; - - public org.xtreemfs.pbrpc.generatedinterfaces.MRC.timestampResponse mkdir( - com.google.protobuf.RpcController controller, - org.xtreemfs.pbrpc.generatedinterfaces.MRC.mkdirRequest request) - throws com.google.protobuf.ServiceException; - - public org.xtreemfs.pbrpc.generatedinterfaces.MRC.openResponse open( - com.google.protobuf.RpcController controller, - org.xtreemfs.pbrpc.generatedinterfaces.MRC.openRequest request) - throws com.google.protobuf.ServiceException; - - public org.xtreemfs.pbrpc.generatedinterfaces.MRC.DirectoryEntries readdir( - com.google.protobuf.RpcController controller, - org.xtreemfs.pbrpc.generatedinterfaces.MRC.readdirRequest request) - throws com.google.protobuf.ServiceException; - - public org.xtreemfs.pbrpc.generatedinterfaces.MRC.readlinkResponse readlink( - com.google.protobuf.RpcController controller, - org.xtreemfs.pbrpc.generatedinterfaces.MRC.readlinkRequest request) - throws com.google.protobuf.ServiceException; - - public org.xtreemfs.pbrpc.generatedinterfaces.MRC.timestampResponse removexattr( - com.google.protobuf.RpcController controller, - org.xtreemfs.pbrpc.generatedinterfaces.MRC.removexattrRequest request) - throws com.google.protobuf.ServiceException; - - public org.xtreemfs.pbrpc.generatedinterfaces.MRC.renameResponse rename( - com.google.protobuf.RpcController controller, - org.xtreemfs.pbrpc.generatedinterfaces.MRC.renameRequest request) - throws com.google.protobuf.ServiceException; - - public org.xtreemfs.pbrpc.generatedinterfaces.MRC.timestampResponse rmdir( - com.google.protobuf.RpcController controller, - org.xtreemfs.pbrpc.generatedinterfaces.MRC.rmdirRequest request) - throws com.google.protobuf.ServiceException; - - public org.xtreemfs.pbrpc.generatedinterfaces.MRC.timestampResponse setattr( - com.google.protobuf.RpcController controller, - org.xtreemfs.pbrpc.generatedinterfaces.MRC.setattrRequest request) - throws com.google.protobuf.ServiceException; - - public org.xtreemfs.pbrpc.generatedinterfaces.MRC.timestampResponse setxattr( - com.google.protobuf.RpcController controller, - org.xtreemfs.pbrpc.generatedinterfaces.MRC.setxattrRequest request) - throws com.google.protobuf.ServiceException; - - public org.xtreemfs.pbrpc.generatedinterfaces.MRC.StatVFS statvfs( - com.google.protobuf.RpcController controller, - org.xtreemfs.pbrpc.generatedinterfaces.MRC.statvfsRequest request) - throws com.google.protobuf.ServiceException; - - public org.xtreemfs.pbrpc.generatedinterfaces.MRC.timestampResponse symlink( - com.google.protobuf.RpcController controller, - org.xtreemfs.pbrpc.generatedinterfaces.MRC.symlinkRequest request) - throws com.google.protobuf.ServiceException; - - public org.xtreemfs.pbrpc.generatedinterfaces.MRC.unlinkResponse unlink( - com.google.protobuf.RpcController controller, - org.xtreemfs.pbrpc.generatedinterfaces.MRC.unlinkRequest request) - throws com.google.protobuf.ServiceException; - - public org.xtreemfs.pbrpc.generatedinterfaces.Common.emptyResponse access( - com.google.protobuf.RpcController controller, - org.xtreemfs.pbrpc.generatedinterfaces.MRC.accessRequest request) - throws com.google.protobuf.ServiceException; - - public org.xtreemfs.pbrpc.generatedinterfaces.Common.emptyResponse xtreemfsCheckpoint( - com.google.protobuf.RpcController controller, - org.xtreemfs.pbrpc.generatedinterfaces.Common.emptyRequest request) - throws com.google.protobuf.ServiceException; - - public org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_check_file_existsResponse xtreemfsCheckFileExists( - com.google.protobuf.RpcController controller, - org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_check_file_existsRequest request) - throws com.google.protobuf.ServiceException; - - public org.xtreemfs.pbrpc.generatedinterfaces.Common.emptyResponse xtreemfsDumpDatabase( - com.google.protobuf.RpcController controller, - org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_dump_restore_databaseRequest request) - throws com.google.protobuf.ServiceException; - - public org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_get_suitable_osdsResponse xtreemfsGetSuitableOsds( - com.google.protobuf.RpcController controller, - org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_get_suitable_osdsRequest request) - throws com.google.protobuf.ServiceException; - - public org.xtreemfs.pbrpc.generatedinterfaces.MRC.stringMessage xtreemfsInternalDebug( - com.google.protobuf.RpcController controller, - org.xtreemfs.pbrpc.generatedinterfaces.MRC.stringMessage request) - throws com.google.protobuf.ServiceException; - - public org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_listdirResponse xtreemfsListdir( - com.google.protobuf.RpcController controller, - org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_listdirRequest request) - throws com.google.protobuf.ServiceException; - - public org.xtreemfs.pbrpc.generatedinterfaces.MRC.Volumes xtreemfsLsvol( - com.google.protobuf.RpcController controller, - org.xtreemfs.pbrpc.generatedinterfaces.Common.emptyRequest request) - throws com.google.protobuf.ServiceException; - - public org.xtreemfs.pbrpc.generatedinterfaces.Common.emptyResponse xtreemfsMkvol( - com.google.protobuf.RpcController controller, - org.xtreemfs.pbrpc.generatedinterfaces.MRC.Volume request) - throws com.google.protobuf.ServiceException; - - public org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.XCap xtreemfsRenewCapability( - com.google.protobuf.RpcController controller, - org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.XCap request) - throws com.google.protobuf.ServiceException; - - public org.xtreemfs.pbrpc.generatedinterfaces.Common.emptyResponse xtreemfsReplicationToMaster( - com.google.protobuf.RpcController controller, - org.xtreemfs.pbrpc.generatedinterfaces.Common.emptyRequest request) - throws com.google.protobuf.ServiceException; - - public org.xtreemfs.pbrpc.generatedinterfaces.Common.emptyResponse xtreemfsReplicaAdd( - com.google.protobuf.RpcController controller, - org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_replica_addRequest request) - throws com.google.protobuf.ServiceException; - - public org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.Replicas xtreemfsReplicaList( - com.google.protobuf.RpcController controller, - org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_replica_listRequest request) - throws com.google.protobuf.ServiceException; - - public org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials xtreemfsReplicaRemove( - com.google.protobuf.RpcController controller, - org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_replica_removeRequest request) - throws com.google.protobuf.ServiceException; - - public org.xtreemfs.pbrpc.generatedinterfaces.Common.emptyResponse xtreemfsRestoreDatabase( - com.google.protobuf.RpcController controller, - org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_dump_restore_databaseRequest request) - throws com.google.protobuf.ServiceException; - - public org.xtreemfs.pbrpc.generatedinterfaces.Common.emptyResponse xtreemfsRestoreFile( - com.google.protobuf.RpcController controller, - org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_restore_fileRequest request) - throws com.google.protobuf.ServiceException; - - public org.xtreemfs.pbrpc.generatedinterfaces.Common.emptyResponse xtreemfsRmvol( - com.google.protobuf.RpcController controller, - org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_rmvolRequest request) - throws com.google.protobuf.ServiceException; - - public org.xtreemfs.pbrpc.generatedinterfaces.Common.emptyResponse xtreemfsShutdown( - com.google.protobuf.RpcController controller, - org.xtreemfs.pbrpc.generatedinterfaces.Common.emptyRequest request) - throws com.google.protobuf.ServiceException; - - public org.xtreemfs.pbrpc.generatedinterfaces.MRC.timestampResponse xtreemfsUpdateFileSize( - com.google.protobuf.RpcController controller, - org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_update_file_sizeRequest request) - throws com.google.protobuf.ServiceException; - - public org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_set_replica_update_policyResponse xtreemfsSetReplicaUpdatePolicy( - com.google.protobuf.RpcController controller, - org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_set_replica_update_policyRequest request) - throws com.google.protobuf.ServiceException; - - public org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_set_read_only_xattrResponse xtreemfsSetReadOnlyXattr( - com.google.protobuf.RpcController controller, - org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_set_read_only_xattrRequest request) - throws com.google.protobuf.ServiceException; - - public org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials xtreemfsGetFileCredentials( - com.google.protobuf.RpcController controller, - org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_get_file_credentialsRequest request) - throws com.google.protobuf.ServiceException; - } - - private static final class BlockingStub implements BlockingInterface { - private BlockingStub(com.google.protobuf.BlockingRpcChannel channel) { - this.channel = channel; - } - - private final com.google.protobuf.BlockingRpcChannel channel; - - public org.xtreemfs.pbrpc.generatedinterfaces.Common.emptyResponse fsetattr( - com.google.protobuf.RpcController controller, - org.xtreemfs.pbrpc.generatedinterfaces.MRC.fsetattrRequest request) - throws com.google.protobuf.ServiceException { - return (org.xtreemfs.pbrpc.generatedinterfaces.Common.emptyResponse) channel.callBlockingMethod( - getDescriptor().getMethods().get(0), - controller, - request, - org.xtreemfs.pbrpc.generatedinterfaces.Common.emptyResponse.getDefaultInstance()); - } - - - public org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.XCap ftruncate( - com.google.protobuf.RpcController controller, - org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.XCap request) - throws com.google.protobuf.ServiceException { - return (org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.XCap) channel.callBlockingMethod( - getDescriptor().getMethods().get(1), - controller, - request, - org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.XCap.getDefaultInstance()); - } - - - public org.xtreemfs.pbrpc.generatedinterfaces.MRC.getattrResponse getattr( - com.google.protobuf.RpcController controller, - org.xtreemfs.pbrpc.generatedinterfaces.MRC.getattrRequest request) - throws com.google.protobuf.ServiceException { - return (org.xtreemfs.pbrpc.generatedinterfaces.MRC.getattrResponse) channel.callBlockingMethod( - getDescriptor().getMethods().get(2), - controller, - request, - org.xtreemfs.pbrpc.generatedinterfaces.MRC.getattrResponse.getDefaultInstance()); - } - - - public org.xtreemfs.pbrpc.generatedinterfaces.MRC.getxattrResponse getxattr( - com.google.protobuf.RpcController controller, - org.xtreemfs.pbrpc.generatedinterfaces.MRC.getxattrRequest request) - throws com.google.protobuf.ServiceException { - return (org.xtreemfs.pbrpc.generatedinterfaces.MRC.getxattrResponse) channel.callBlockingMethod( - getDescriptor().getMethods().get(3), - controller, - request, - org.xtreemfs.pbrpc.generatedinterfaces.MRC.getxattrResponse.getDefaultInstance()); - } - - - public org.xtreemfs.pbrpc.generatedinterfaces.MRC.timestampResponse link( - com.google.protobuf.RpcController controller, - org.xtreemfs.pbrpc.generatedinterfaces.MRC.linkRequest request) - throws com.google.protobuf.ServiceException { - return (org.xtreemfs.pbrpc.generatedinterfaces.MRC.timestampResponse) channel.callBlockingMethod( - getDescriptor().getMethods().get(4), - controller, - request, - org.xtreemfs.pbrpc.generatedinterfaces.MRC.timestampResponse.getDefaultInstance()); - } - - - public org.xtreemfs.pbrpc.generatedinterfaces.MRC.listxattrResponse listxattr( - com.google.protobuf.RpcController controller, - org.xtreemfs.pbrpc.generatedinterfaces.MRC.listxattrRequest request) - throws com.google.protobuf.ServiceException { - return (org.xtreemfs.pbrpc.generatedinterfaces.MRC.listxattrResponse) channel.callBlockingMethod( - getDescriptor().getMethods().get(5), - controller, - request, - org.xtreemfs.pbrpc.generatedinterfaces.MRC.listxattrResponse.getDefaultInstance()); - } - - - public org.xtreemfs.pbrpc.generatedinterfaces.MRC.timestampResponse mkdir( - com.google.protobuf.RpcController controller, - org.xtreemfs.pbrpc.generatedinterfaces.MRC.mkdirRequest request) - throws com.google.protobuf.ServiceException { - return (org.xtreemfs.pbrpc.generatedinterfaces.MRC.timestampResponse) channel.callBlockingMethod( - getDescriptor().getMethods().get(6), - controller, - request, - org.xtreemfs.pbrpc.generatedinterfaces.MRC.timestampResponse.getDefaultInstance()); - } - - - public org.xtreemfs.pbrpc.generatedinterfaces.MRC.openResponse open( - com.google.protobuf.RpcController controller, - org.xtreemfs.pbrpc.generatedinterfaces.MRC.openRequest request) - throws com.google.protobuf.ServiceException { - return (org.xtreemfs.pbrpc.generatedinterfaces.MRC.openResponse) channel.callBlockingMethod( - getDescriptor().getMethods().get(7), - controller, - request, - org.xtreemfs.pbrpc.generatedinterfaces.MRC.openResponse.getDefaultInstance()); - } - - - public org.xtreemfs.pbrpc.generatedinterfaces.MRC.DirectoryEntries readdir( - com.google.protobuf.RpcController controller, - org.xtreemfs.pbrpc.generatedinterfaces.MRC.readdirRequest request) - throws com.google.protobuf.ServiceException { - return (org.xtreemfs.pbrpc.generatedinterfaces.MRC.DirectoryEntries) channel.callBlockingMethod( - getDescriptor().getMethods().get(8), - controller, - request, - org.xtreemfs.pbrpc.generatedinterfaces.MRC.DirectoryEntries.getDefaultInstance()); - } - - - public org.xtreemfs.pbrpc.generatedinterfaces.MRC.readlinkResponse readlink( - com.google.protobuf.RpcController controller, - org.xtreemfs.pbrpc.generatedinterfaces.MRC.readlinkRequest request) - throws com.google.protobuf.ServiceException { - return (org.xtreemfs.pbrpc.generatedinterfaces.MRC.readlinkResponse) channel.callBlockingMethod( - getDescriptor().getMethods().get(9), - controller, - request, - org.xtreemfs.pbrpc.generatedinterfaces.MRC.readlinkResponse.getDefaultInstance()); - } - - - public org.xtreemfs.pbrpc.generatedinterfaces.MRC.timestampResponse removexattr( - com.google.protobuf.RpcController controller, - org.xtreemfs.pbrpc.generatedinterfaces.MRC.removexattrRequest request) - throws com.google.protobuf.ServiceException { - return (org.xtreemfs.pbrpc.generatedinterfaces.MRC.timestampResponse) channel.callBlockingMethod( - getDescriptor().getMethods().get(10), - controller, - request, - org.xtreemfs.pbrpc.generatedinterfaces.MRC.timestampResponse.getDefaultInstance()); - } - - - public org.xtreemfs.pbrpc.generatedinterfaces.MRC.renameResponse rename( - com.google.protobuf.RpcController controller, - org.xtreemfs.pbrpc.generatedinterfaces.MRC.renameRequest request) - throws com.google.protobuf.ServiceException { - return (org.xtreemfs.pbrpc.generatedinterfaces.MRC.renameResponse) channel.callBlockingMethod( - getDescriptor().getMethods().get(11), - controller, - request, - org.xtreemfs.pbrpc.generatedinterfaces.MRC.renameResponse.getDefaultInstance()); - } - - - public org.xtreemfs.pbrpc.generatedinterfaces.MRC.timestampResponse rmdir( - com.google.protobuf.RpcController controller, - org.xtreemfs.pbrpc.generatedinterfaces.MRC.rmdirRequest request) - throws com.google.protobuf.ServiceException { - return (org.xtreemfs.pbrpc.generatedinterfaces.MRC.timestampResponse) channel.callBlockingMethod( - getDescriptor().getMethods().get(12), - controller, - request, - org.xtreemfs.pbrpc.generatedinterfaces.MRC.timestampResponse.getDefaultInstance()); - } - - - public org.xtreemfs.pbrpc.generatedinterfaces.MRC.timestampResponse setattr( - com.google.protobuf.RpcController controller, - org.xtreemfs.pbrpc.generatedinterfaces.MRC.setattrRequest request) - throws com.google.protobuf.ServiceException { - return (org.xtreemfs.pbrpc.generatedinterfaces.MRC.timestampResponse) channel.callBlockingMethod( - getDescriptor().getMethods().get(13), - controller, - request, - org.xtreemfs.pbrpc.generatedinterfaces.MRC.timestampResponse.getDefaultInstance()); - } - - - public org.xtreemfs.pbrpc.generatedinterfaces.MRC.timestampResponse setxattr( - com.google.protobuf.RpcController controller, - org.xtreemfs.pbrpc.generatedinterfaces.MRC.setxattrRequest request) - throws com.google.protobuf.ServiceException { - return (org.xtreemfs.pbrpc.generatedinterfaces.MRC.timestampResponse) channel.callBlockingMethod( - getDescriptor().getMethods().get(14), - controller, - request, - org.xtreemfs.pbrpc.generatedinterfaces.MRC.timestampResponse.getDefaultInstance()); - } - - - public org.xtreemfs.pbrpc.generatedinterfaces.MRC.StatVFS statvfs( - com.google.protobuf.RpcController controller, - org.xtreemfs.pbrpc.generatedinterfaces.MRC.statvfsRequest request) - throws com.google.protobuf.ServiceException { - return (org.xtreemfs.pbrpc.generatedinterfaces.MRC.StatVFS) channel.callBlockingMethod( - getDescriptor().getMethods().get(15), - controller, - request, - org.xtreemfs.pbrpc.generatedinterfaces.MRC.StatVFS.getDefaultInstance()); - } - - - public org.xtreemfs.pbrpc.generatedinterfaces.MRC.timestampResponse symlink( - com.google.protobuf.RpcController controller, - org.xtreemfs.pbrpc.generatedinterfaces.MRC.symlinkRequest request) - throws com.google.protobuf.ServiceException { - return (org.xtreemfs.pbrpc.generatedinterfaces.MRC.timestampResponse) channel.callBlockingMethod( - getDescriptor().getMethods().get(16), - controller, - request, - org.xtreemfs.pbrpc.generatedinterfaces.MRC.timestampResponse.getDefaultInstance()); - } - - - public org.xtreemfs.pbrpc.generatedinterfaces.MRC.unlinkResponse unlink( - com.google.protobuf.RpcController controller, - org.xtreemfs.pbrpc.generatedinterfaces.MRC.unlinkRequest request) - throws com.google.protobuf.ServiceException { - return (org.xtreemfs.pbrpc.generatedinterfaces.MRC.unlinkResponse) channel.callBlockingMethod( - getDescriptor().getMethods().get(17), - controller, - request, - org.xtreemfs.pbrpc.generatedinterfaces.MRC.unlinkResponse.getDefaultInstance()); - } - - - public org.xtreemfs.pbrpc.generatedinterfaces.Common.emptyResponse access( - com.google.protobuf.RpcController controller, - org.xtreemfs.pbrpc.generatedinterfaces.MRC.accessRequest request) - throws com.google.protobuf.ServiceException { - return (org.xtreemfs.pbrpc.generatedinterfaces.Common.emptyResponse) channel.callBlockingMethod( - getDescriptor().getMethods().get(18), - controller, - request, - org.xtreemfs.pbrpc.generatedinterfaces.Common.emptyResponse.getDefaultInstance()); - } - - - public org.xtreemfs.pbrpc.generatedinterfaces.Common.emptyResponse xtreemfsCheckpoint( - com.google.protobuf.RpcController controller, - org.xtreemfs.pbrpc.generatedinterfaces.Common.emptyRequest request) - throws com.google.protobuf.ServiceException { - return (org.xtreemfs.pbrpc.generatedinterfaces.Common.emptyResponse) channel.callBlockingMethod( - getDescriptor().getMethods().get(19), - controller, - request, - org.xtreemfs.pbrpc.generatedinterfaces.Common.emptyResponse.getDefaultInstance()); - } - - - public org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_check_file_existsResponse xtreemfsCheckFileExists( - com.google.protobuf.RpcController controller, - org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_check_file_existsRequest request) - throws com.google.protobuf.ServiceException { - return (org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_check_file_existsResponse) channel.callBlockingMethod( - getDescriptor().getMethods().get(20), - controller, - request, - org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_check_file_existsResponse.getDefaultInstance()); - } - - - public org.xtreemfs.pbrpc.generatedinterfaces.Common.emptyResponse xtreemfsDumpDatabase( - com.google.protobuf.RpcController controller, - org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_dump_restore_databaseRequest request) - throws com.google.protobuf.ServiceException { - return (org.xtreemfs.pbrpc.generatedinterfaces.Common.emptyResponse) channel.callBlockingMethod( - getDescriptor().getMethods().get(21), - controller, - request, - org.xtreemfs.pbrpc.generatedinterfaces.Common.emptyResponse.getDefaultInstance()); - } - - - public org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_get_suitable_osdsResponse xtreemfsGetSuitableOsds( - com.google.protobuf.RpcController controller, - org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_get_suitable_osdsRequest request) - throws com.google.protobuf.ServiceException { - return (org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_get_suitable_osdsResponse) channel.callBlockingMethod( - getDescriptor().getMethods().get(22), - controller, - request, - org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_get_suitable_osdsResponse.getDefaultInstance()); - } - - - public org.xtreemfs.pbrpc.generatedinterfaces.MRC.stringMessage xtreemfsInternalDebug( - com.google.protobuf.RpcController controller, - org.xtreemfs.pbrpc.generatedinterfaces.MRC.stringMessage request) - throws com.google.protobuf.ServiceException { - return (org.xtreemfs.pbrpc.generatedinterfaces.MRC.stringMessage) channel.callBlockingMethod( - getDescriptor().getMethods().get(23), - controller, - request, - org.xtreemfs.pbrpc.generatedinterfaces.MRC.stringMessage.getDefaultInstance()); - } - - - public org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_listdirResponse xtreemfsListdir( - com.google.protobuf.RpcController controller, - org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_listdirRequest request) - throws com.google.protobuf.ServiceException { - return (org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_listdirResponse) channel.callBlockingMethod( - getDescriptor().getMethods().get(24), - controller, - request, - org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_listdirResponse.getDefaultInstance()); - } - - - public org.xtreemfs.pbrpc.generatedinterfaces.MRC.Volumes xtreemfsLsvol( - com.google.protobuf.RpcController controller, - org.xtreemfs.pbrpc.generatedinterfaces.Common.emptyRequest request) - throws com.google.protobuf.ServiceException { - return (org.xtreemfs.pbrpc.generatedinterfaces.MRC.Volumes) channel.callBlockingMethod( - getDescriptor().getMethods().get(25), - controller, - request, - org.xtreemfs.pbrpc.generatedinterfaces.MRC.Volumes.getDefaultInstance()); - } - - - public org.xtreemfs.pbrpc.generatedinterfaces.Common.emptyResponse xtreemfsMkvol( - com.google.protobuf.RpcController controller, - org.xtreemfs.pbrpc.generatedinterfaces.MRC.Volume request) - throws com.google.protobuf.ServiceException { - return (org.xtreemfs.pbrpc.generatedinterfaces.Common.emptyResponse) channel.callBlockingMethod( - getDescriptor().getMethods().get(26), - controller, - request, - org.xtreemfs.pbrpc.generatedinterfaces.Common.emptyResponse.getDefaultInstance()); - } - - - public org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.XCap xtreemfsRenewCapability( - com.google.protobuf.RpcController controller, - org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.XCap request) - throws com.google.protobuf.ServiceException { - return (org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.XCap) channel.callBlockingMethod( - getDescriptor().getMethods().get(27), - controller, - request, - org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.XCap.getDefaultInstance()); - } - - - public org.xtreemfs.pbrpc.generatedinterfaces.Common.emptyResponse xtreemfsReplicationToMaster( - com.google.protobuf.RpcController controller, - org.xtreemfs.pbrpc.generatedinterfaces.Common.emptyRequest request) - throws com.google.protobuf.ServiceException { - return (org.xtreemfs.pbrpc.generatedinterfaces.Common.emptyResponse) channel.callBlockingMethod( - getDescriptor().getMethods().get(28), - controller, - request, - org.xtreemfs.pbrpc.generatedinterfaces.Common.emptyResponse.getDefaultInstance()); - } - - - public org.xtreemfs.pbrpc.generatedinterfaces.Common.emptyResponse xtreemfsReplicaAdd( - com.google.protobuf.RpcController controller, - org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_replica_addRequest request) - throws com.google.protobuf.ServiceException { - return (org.xtreemfs.pbrpc.generatedinterfaces.Common.emptyResponse) channel.callBlockingMethod( - getDescriptor().getMethods().get(29), - controller, - request, - org.xtreemfs.pbrpc.generatedinterfaces.Common.emptyResponse.getDefaultInstance()); - } - - - public org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.Replicas xtreemfsReplicaList( - com.google.protobuf.RpcController controller, - org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_replica_listRequest request) - throws com.google.protobuf.ServiceException { - return (org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.Replicas) channel.callBlockingMethod( - getDescriptor().getMethods().get(30), - controller, - request, - org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.Replicas.getDefaultInstance()); - } - - - public org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials xtreemfsReplicaRemove( - com.google.protobuf.RpcController controller, - org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_replica_removeRequest request) - throws com.google.protobuf.ServiceException { - return (org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials) channel.callBlockingMethod( - getDescriptor().getMethods().get(31), - controller, - request, - org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials.getDefaultInstance()); - } - - - public org.xtreemfs.pbrpc.generatedinterfaces.Common.emptyResponse xtreemfsRestoreDatabase( - com.google.protobuf.RpcController controller, - org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_dump_restore_databaseRequest request) - throws com.google.protobuf.ServiceException { - return (org.xtreemfs.pbrpc.generatedinterfaces.Common.emptyResponse) channel.callBlockingMethod( - getDescriptor().getMethods().get(32), - controller, - request, - org.xtreemfs.pbrpc.generatedinterfaces.Common.emptyResponse.getDefaultInstance()); - } - - - public org.xtreemfs.pbrpc.generatedinterfaces.Common.emptyResponse xtreemfsRestoreFile( - com.google.protobuf.RpcController controller, - org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_restore_fileRequest request) - throws com.google.protobuf.ServiceException { - return (org.xtreemfs.pbrpc.generatedinterfaces.Common.emptyResponse) channel.callBlockingMethod( - getDescriptor().getMethods().get(33), - controller, - request, - org.xtreemfs.pbrpc.generatedinterfaces.Common.emptyResponse.getDefaultInstance()); - } - - - public org.xtreemfs.pbrpc.generatedinterfaces.Common.emptyResponse xtreemfsRmvol( - com.google.protobuf.RpcController controller, - org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_rmvolRequest request) - throws com.google.protobuf.ServiceException { - return (org.xtreemfs.pbrpc.generatedinterfaces.Common.emptyResponse) channel.callBlockingMethod( - getDescriptor().getMethods().get(34), - controller, - request, - org.xtreemfs.pbrpc.generatedinterfaces.Common.emptyResponse.getDefaultInstance()); - } - - - public org.xtreemfs.pbrpc.generatedinterfaces.Common.emptyResponse xtreemfsShutdown( - com.google.protobuf.RpcController controller, - org.xtreemfs.pbrpc.generatedinterfaces.Common.emptyRequest request) - throws com.google.protobuf.ServiceException { - return (org.xtreemfs.pbrpc.generatedinterfaces.Common.emptyResponse) channel.callBlockingMethod( - getDescriptor().getMethods().get(35), - controller, - request, - org.xtreemfs.pbrpc.generatedinterfaces.Common.emptyResponse.getDefaultInstance()); - } - - - public org.xtreemfs.pbrpc.generatedinterfaces.MRC.timestampResponse xtreemfsUpdateFileSize( - com.google.protobuf.RpcController controller, - org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_update_file_sizeRequest request) - throws com.google.protobuf.ServiceException { - return (org.xtreemfs.pbrpc.generatedinterfaces.MRC.timestampResponse) channel.callBlockingMethod( - getDescriptor().getMethods().get(36), - controller, - request, - org.xtreemfs.pbrpc.generatedinterfaces.MRC.timestampResponse.getDefaultInstance()); - } - - - public org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_set_replica_update_policyResponse xtreemfsSetReplicaUpdatePolicy( - com.google.protobuf.RpcController controller, - org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_set_replica_update_policyRequest request) - throws com.google.protobuf.ServiceException { - return (org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_set_replica_update_policyResponse) channel.callBlockingMethod( - getDescriptor().getMethods().get(37), - controller, - request, - org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_set_replica_update_policyResponse.getDefaultInstance()); - } - - - public org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_set_read_only_xattrResponse xtreemfsSetReadOnlyXattr( - com.google.protobuf.RpcController controller, - org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_set_read_only_xattrRequest request) - throws com.google.protobuf.ServiceException { - return (org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_set_read_only_xattrResponse) channel.callBlockingMethod( - getDescriptor().getMethods().get(38), - controller, - request, - org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_set_read_only_xattrResponse.getDefaultInstance()); - } - - - public org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials xtreemfsGetFileCredentials( - com.google.protobuf.RpcController controller, - org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_get_file_credentialsRequest request) - throws com.google.protobuf.ServiceException { - return (org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials) channel.callBlockingMethod( - getDescriptor().getMethods().get(39), - controller, - request, - org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials.getDefaultInstance()); - } - - } - } - + private static com.google.protobuf.Descriptors.Descriptor internal_static_xtreemfs_pbrpc_Stat_descriptor; private static @@ -23179,7 +46548,7 @@ public final class MRC { private static com.google.protobuf.GeneratedMessage.FieldAccessorTable internal_static_xtreemfs_pbrpc_xtreemfs_get_file_credentialsRequest_fieldAccessorTable; - + public static com.google.protobuf.Descriptors.FileDescriptor getDescriptor() { return descriptor; @@ -23200,224 +46569,224 @@ public final class MRC { "ryEntry\022\014\n\004name\030\001 \002(\t\022#\n\005stbuf\030\002 \001(\0132\024.x", "treemfs.pbrpc.Stat\"C\n\020DirectoryEntries\022/" + "\n\007entries\030\001 \003(\0132\036.xtreemfs.pbrpc.Directo" + - "ryEntry\"9\n\005XAttr\022\014\n\004name\030\001 \002(\t\022\r\n\005value\030" + - "\002 \001(\t\022\023\n\013value_bytes\030\003 \001(\014\"\225\002\n\006Volume\022F\n" + - "\025access_control_policy\030\001 \002(\0162\'.xtreemfs." + - "pbrpc.AccessControlPolicyType\022?\n\027default" + - "_striping_policy\030\002 \002(\0132\036.xtreemfs.pbrpc." + - "StripingPolicy\022\n\n\002id\030\003 \002(\t\022\014\n\004mode\030\004 \002(\007" + - "\022\014\n\004name\030\005 \002(\t\022\026\n\016owner_group_id\030\006 \002(\t\022\025" + - "\n\rowner_user_id\030\007 \002(\t\022+\n\005attrs\030\010 \003(\0132\034.x", - "treemfs.pbrpc.KeyValuePair\"2\n\007Volumes\022\'\n" + - "\007volumes\030\001 \003(\0132\026.xtreemfs.pbrpc.Volume\"\310" + - "\002\n\007StatVFS\022\r\n\005bsize\030\001 \002(\007\022\016\n\006bavail\030\002 \002(" + - "\006\022\r\n\005bfree\030\r \001(\006\022\016\n\006blocks\030\003 \002(\006\022\014\n\004fsid" + - "\030\004 \002(\t\022\017\n\007namemax\030\005 \002(\007\022F\n\025access_contro" + - "l_policy\030\006 \002(\0162\'.xtreemfs.pbrpc.AccessCo" + - "ntrolPolicyType\022?\n\027default_striping_poli" + - "cy\030\007 \002(\0132\036.xtreemfs.pbrpc.StripingPolicy" + - "\022\014\n\004etag\030\010 \002(\006\022\014\n\004mode\030\t \002(\007\022\014\n\004name\030\n \002" + - "(\t\022\026\n\016owner_group_id\030\013 \002(\t\022\025\n\rowner_user", - "_id\030\014 \002(\t\"i\n\017fsetattrRequest\022#\n\005stbuf\030\001 " + - "\002(\0132\024.xtreemfs.pbrpc.Stat\022\016\n\006to_set\030\002 \002(" + - "\007\022!\n\003cap\030\003 \002(\0132\024.xtreemfs.pbrpc.XCap\"G\n\016" + - "getattrRequest\022\023\n\013volume_name\030\001 \002(\t\022\014\n\004p" + - "ath\030\002 \002(\t\022\022\n\nknown_etag\030\003 \002(\006\"6\n\017getattr" + - "Response\022#\n\005stbuf\030\001 \001(\0132\024.xtreemfs.pbrpc" + - ".Stat\"B\n\017getxattrRequest\022\023\n\013volume_name\030" + - "\001 \002(\t\022\014\n\004path\030\002 \002(\t\022\014\n\004name\030\003 \002(\t\"6\n\020get" + - "xattrResponse\022\r\n\005value\030\001 \002(\t\022\023\n\013value_by" + - "tes\030\002 \001(\014\"J\n\013linkRequest\022\023\n\013volume_name\030", - "\001 \002(\t\022\023\n\013target_path\030\002 \002(\t\022\021\n\tlink_path\030" + - "\003 \002(\t\"I\n\020listxattrRequest\022\023\n\013volume_name" + - "\030\001 \002(\t\022\014\n\004path\030\002 \002(\t\022\022\n\nnames_only\030\003 \002(\010" + - "\":\n\021listxattrResponse\022%\n\006xattrs\030\001 \003(\0132\025." + - "xtreemfs.pbrpc.XAttr\"?\n\014mkdirRequest\022\023\n\013" + - "volume_name\030\001 \002(\t\022\014\n\004path\030\002 \002(\t\022\014\n\004mode\030" + - "\003 \002(\007\"\232\001\n\013openRequest\022\023\n\013volume_name\030\001 \002" + - "(\t\022\014\n\004path\030\002 \002(\t\022\r\n\005flags\030\003 \002(\007\022\014\n\004mode\030" + - "\004 \002(\007\022\022\n\nattributes\030\005 \002(\007\0227\n\013coordinates" + - "\030\006 \001(\0132\".xtreemfs.pbrpc.VivaldiCoordinat", - "es\"S\n\014openResponse\022.\n\005creds\030\001 \002(\0132\037.xtre" + - "emfs.pbrpc.FileCredentials\022\023\n\013timestamp_" + - "s\030\002 \002(\007\"\250\001\n\016readdirRequest\022\023\n\013volume_nam" + - "e\030\001 \002(\t\022\014\n\004path\030\002 \002(\t\022\022\n\nknown_etag\030\003 \002(" + - "\006\022%\n\035limit_directory_entries_count\030\004 \002(\007" + - "\022\022\n\nnames_only\030\005 \002(\010\022$\n\034seen_directory_e" + - "ntries_count\030\006 \002(\006\"4\n\017readlinkRequest\022\023\n" + - "\013volume_name\030\001 \002(\t\022\014\n\004path\030\002 \002(\t\",\n\020read" + - "linkResponse\022\030\n\020link_target_path\030\001 \003(\t\"E" + - "\n\022removexattrRequest\022\023\n\013volume_name\030\001 \002(", - "\t\022\014\n\004path\030\002 \002(\t\022\014\n\004name\030\003 \002(\t\"N\n\rrenameR" + - "equest\022\023\n\013volume_name\030\001 \002(\t\022\023\n\013source_pa" + - "th\030\002 \002(\t\022\023\n\013target_path\030\003 \002(\t\"U\n\016renameR" + - "esponse\022\023\n\013timestamp_s\030\001 \002(\007\022.\n\005creds\030\002 " + - "\001(\0132\037.xtreemfs.pbrpc.FileCredentials\"1\n\014" + - "rmdirRequest\022\023\n\013volume_name\030\001 \002(\t\022\014\n\004pat" + - "h\030\002 \002(\t\"h\n\016setattrRequest\022\023\n\013volume_name" + - "\030\001 \002(\t\022\014\n\004path\030\002 \002(\t\022#\n\005stbuf\030\003 \002(\0132\024.xt" + - "reemfs.pbrpc.Stat\022\016\n\006to_set\030\004 \002(\007\"u\n\017set" + - "xattrRequest\022\023\n\013volume_name\030\001 \002(\t\022\014\n\004pat", - "h\030\002 \002(\t\022\014\n\004name\030\003 \002(\t\022\r\n\005value\030\004 \002(\t\022\023\n\013" + - "value_bytes\030\006 \001(\014\022\r\n\005flags\030\005 \002(\007\"9\n\016stat" + - "vfsRequest\022\023\n\013volume_name\030\001 \002(\t\022\022\n\nknown" + - "_etag\030\005 \002(\006\"M\n\016symlinkRequest\022\023\n\013volume_" + - "name\030\001 \002(\t\022\023\n\013target_path\030\002 \002(\t\022\021\n\tlink_" + - "path\030\003 \002(\t\"2\n\runlinkRequest\022\023\n\013volume_na" + - "me\030\001 \002(\t\022\014\n\004path\030\002 \002(\t\"U\n\016unlinkResponse" + - "\022\023\n\013timestamp_s\030\001 \002(\007\022.\n\005creds\030\002 \001(\0132\037.x" + - "treemfs.pbrpc.FileCredentials\"A\n\raccessR" + - "equest\022\023\n\013volume_name\030\001 \002(\t\022\014\n\004path\030\002 \002(", - "\t\022\r\n\005flags\030\003 \002(\007\"Z\n!xtreemfs_check_file_" + - "existsRequest\022\021\n\tvolume_id\030\001 \002(\t\022\020\n\010file" + - "_ids\030\002 \003(\t\022\020\n\010osd_uuid\030\003 \002(\t\":\n%xtreemfs" + - "_dump_restore_databaseRequest\022\021\n\tdump_fi" + - "le\030\001 \002(\t\"i\n!xtreemfs_get_suitable_osdsRe" + - "quest\022\017\n\007file_id\030\001 \001(\t\022\014\n\004path\030\003 \001(\t\022\023\n\013" + - "volume_name\030\004 \001(\t\022\020\n\010num_osds\030\002 \002(\007\"7\n\"x" + - "treemfs_get_suitable_osdsResponse\022\021\n\tosd" + - "_uuids\030\001 \003(\t\"4\n\"xtreemfs_check_file_exis" + - "tsResponse\022\016\n\006bitmap\030\001 \002(\t\"(\n\021timestampR", - "esponse\022\023\n\013timestamp_s\030\001 \002(\007\"!\n\rstringMe" + - "ssage\022\020\n\010a_string\030\001 \002(\t\"\'\n\027xtreemfs_list" + - "dirRequest\022\014\n\004path\030\001 \002(\t\")\n\030xtreemfs_lis" + - "tdirResponse\022\r\n\005names\030\001 \003(\t\"\177\n\033xtreemfs_" + - "replica_addRequest\022\017\n\007file_id\030\001 \001(\t\022\014\n\004p" + - "ath\030\003 \001(\t\022\023\n\013volume_name\030\004 \001(\t\022,\n\013new_re" + - "plica\030\002 \002(\0132\027.xtreemfs.pbrpc.Replica\"R\n\034" + - "xtreemfs_replica_listRequest\022\017\n\007file_id\030" + - "\001 \001(\t\022\014\n\004path\030\002 \001(\t\022\023\n\013volume_name\030\003 \001(\t" + - "\"f\n\036xtreemfs_replica_removeRequest\022\017\n\007fi", - "le_id\030\001 \001(\t\022\014\n\004path\030\003 \001(\t\022\023\n\013volume_name" + - "\030\004 \001(\t\022\020\n\010osd_uuid\030\002 \002(\t\"|\n\034xtreemfs_res" + - "tore_fileRequest\022\021\n\tfile_path\030\001 \002(\t\022\017\n\007f" + - "ile_id\030\002 \002(\t\022\021\n\tfile_size\030\003 \002(\006\022\020\n\010osd_u" + - "uid\030\004 \002(\t\022\023\n\013stripe_size\030\005 \002(\007\",\n\025xtreem" + - "fs_rmvolRequest\022\023\n\013volume_name\030\001 \002(\t\"\321\001\n" + - " xtreemfs_update_file_sizeRequest\022\"\n\004xca" + - "p\030\001 \002(\0132\024.xtreemfs.pbrpc.XCap\022<\n\022osd_wri" + - "te_response\030\002 \002(\0132 .xtreemfs.pbrpc.OSDWr" + - "iteResponse\022\022\n\nclose_file\030\003 \001(\010\0227\n\013coord", - "inates\030\004 \001(\0132\".xtreemfs.pbrpc.VivaldiCoo" + - "rdinates\"S\n)xtreemfs_set_replica_update_" + - "policyRequest\022\017\n\007file_id\030\001 \002(\t\022\025\n\rupdate" + - "_policy\030\002 \002(\t\"G\n*xtreemfs_set_replica_up" + - "date_policyResponse\022\031\n\021old_update_policy" + - "\030\001 \002(\t\"E\n#xtreemfs_set_read_only_xattrRe" + - "quest\022\017\n\007file_id\030\001 \002(\t\022\r\n\005value\030\002 \002(\010\"7\n" + - "$xtreemfs_set_read_only_xattrResponse\022\017\n" + - "\007was_set\030\001 \002(\010\"7\n$xtreemfs_get_file_cred" + - "entialsRequest\022\017\n\007file_id\030\001 \002(\t*\242\001\n\010Seta", - "ttrs\022\020\n\014SETATTR_MODE\020\001\022\017\n\013SETATTR_UID\020\002\022" + - "\017\n\013SETATTR_GID\020\004\022\020\n\014SETATTR_SIZE\020\010\022\021\n\rSE" + - "TATTR_ATIME\020\020\022\021\n\rSETATTR_MTIME\020 \022\021\n\rSETA" + - "TTR_CTIME\020@\022\027\n\022SETATTR_ATTRIBUTES\020\200\001*>\n\013" + - "XATTR_FLAGS\022\026\n\022XATTR_FLAGS_CREATE\020\001\022\027\n\023X" + - "ATTR_FLAGS_REPLACE\020\002*j\n\014ACCESS_FLAGS\022\025\n\021" + - "ACCESS_FLAGS_F_OK\020\000\022\025\n\021ACCESS_FLAGS_X_OK" + - "\020\001\022\025\n\021ACCESS_FLAGS_W_OK\020\002\022\025\n\021ACCESS_FLAG" + - "S_R_OK\020\0042\234\037\n\nMRCService\022S\n\010fsetattr\022\037.xt" + - "reemfs.pbrpc.fsetattrRequest\032\035.xtreemfs.", - "pbrpc.emptyResponse\"\007\215\265\030\002\000\000\000\022@\n\tftruncat" + - "e\022\024.xtreemfs.pbrpc.XCap\032\024.xtreemfs.pbrpc" + - ".XCap\"\007\215\265\030\003\000\000\000\022S\n\007getattr\022\036.xtreemfs.pbr" + - "pc.getattrRequest\032\037.xtreemfs.pbrpc.getat" + - "trResponse\"\007\215\265\030\004\000\000\000\022V\n\010getxattr\022\037.xtreem" + - "fs.pbrpc.getxattrRequest\032 .xtreemfs.pbrp" + - "c.getxattrResponse\"\007\215\265\030\005\000\000\000\022O\n\004link\022\033.xt" + - "reemfs.pbrpc.linkRequest\032!.xtreemfs.pbrp" + - "c.timestampResponse\"\007\215\265\030\006\000\000\000\022Y\n\tlistxatt" + - "r\022 .xtreemfs.pbrpc.listxattrRequest\032!.xt", - "reemfs.pbrpc.listxattrResponse\"\007\215\265\030\007\000\000\000\022" + - "Q\n\005mkdir\022\034.xtreemfs.pbrpc.mkdirRequest\032!" + - ".xtreemfs.pbrpc.timestampResponse\"\007\215\265\030\010\000" + - "\000\000\022J\n\004open\022\033.xtreemfs.pbrpc.openRequest\032" + - "\034.xtreemfs.pbrpc.openResponse\"\007\215\265\030\t\000\000\000\022T" + - "\n\007readdir\022\036.xtreemfs.pbrpc.readdirReques" + - "t\032 .xtreemfs.pbrpc.DirectoryEntries\"\007\215\265\030" + - "\n\000\000\000\022V\n\010readlink\022\037.xtreemfs.pbrpc.readli" + - "nkRequest\032 .xtreemfs.pbrpc.readlinkRespo" + - "nse\"\007\215\265\030\013\000\000\000\022]\n\013removexattr\022\".xtreemfs.p", - "brpc.removexattrRequest\032!.xtreemfs.pbrpc" + - ".timestampResponse\"\007\215\265\030\014\000\000\000\022P\n\006rename\022\035." + - "xtreemfs.pbrpc.renameRequest\032\036.xtreemfs." + - "pbrpc.renameResponse\"\007\215\265\030\r\000\000\000\022Q\n\005rmdir\022\034" + - ".xtreemfs.pbrpc.rmdirRequest\032!.xtreemfs." + - "pbrpc.timestampResponse\"\007\215\265\030\016\000\000\000\022U\n\007seta" + - "ttr\022\036.xtreemfs.pbrpc.setattrRequest\032!.xt" + - "reemfs.pbrpc.timestampResponse\"\007\215\265\030\017\000\000\000\022" + - "W\n\010setxattr\022\037.xtreemfs.pbrpc.setxattrReq" + - "uest\032!.xtreemfs.pbrpc.timestampResponse\"", - "\007\215\265\030\020\000\000\000\022K\n\007statvfs\022\036.xtreemfs.pbrpc.sta" + - "tvfsRequest\032\027.xtreemfs.pbrpc.StatVFS\"\007\215\265" + - "\030\021\000\000\000\022U\n\007symlink\022\036.xtreemfs.pbrpc.symlin" + - "kRequest\032!.xtreemfs.pbrpc.timestampRespo" + - "nse\"\007\215\265\030\022\000\000\000\022P\n\006unlink\022\035.xtreemfs.pbrpc." + - "unlinkRequest\032\036.xtreemfs.pbrpc.unlinkRes" + - "ponse\"\007\215\265\030\023\000\000\000\022O\n\006access\022\035.xtreemfs.pbrp" + - "c.accessRequest\032\035.xtreemfs.pbrpc.emptyRe" + - "sponse\"\007\215\265\030\024\000\000\000\022[\n\023xtreemfs_checkpoint\022\034" + - ".xtreemfs.pbrpc.emptyRequest\032\035.xtreemfs.", - "pbrpc.emptyResponse\"\007\215\265\030\036\000\000\000\022\214\001\n\032xtreemf" + - "s_check_file_exists\0221.xtreemfs.pbrpc.xtr" + - "eemfs_check_file_existsRequest\0322.xtreemf" + - "s.pbrpc.xtreemfs_check_file_existsRespon" + - "se\"\007\215\265\030\037\000\000\000\022w\n\026xtreemfs_dump_database\0225." + - "xtreemfs.pbrpc.xtreemfs_dump_restore_dat" + - "abaseRequest\032\035.xtreemfs.pbrpc.emptyRespo" + - "nse\"\007\215\265\030 \000\000\000\022\214\001\n\032xtreemfs_get_suitable_o" + - "sds\0221.xtreemfs.pbrpc.xtreemfs_get_suitab" + - "le_osdsRequest\0322.xtreemfs.pbrpc.xtreemfs", - "_get_suitable_osdsResponse\"\007\215\265\030!\000\000\000\022`\n\027x" + - "treemfs_internal_debug\022\035.xtreemfs.pbrpc." + - "stringMessage\032\035.xtreemfs.pbrpc.stringMes" + - "sage\"\007\215\265\030\"\000\000\000\022n\n\020xtreemfs_listdir\022\'.xtre" + - "emfs.pbrpc.xtreemfs_listdirRequest\032(.xtr" + - "eemfs.pbrpc.xtreemfs_listdirResponse\"\007\215\265" + - "\030#\000\000\000\022P\n\016xtreemfs_lsvol\022\034.xtreemfs.pbrpc" + - ".emptyRequest\032\027.xtreemfs.pbrpc.Volumes\"\007" + - "\215\265\030$\000\000\000\022P\n\016xtreemfs_mkvol\022\026.xtreemfs.pbr" + - "pc.Volume\032\035.xtreemfs.pbrpc.emptyResponse", - "\"\007\215\265\030/\000\000\000\022P\n\031xtreemfs_renew_capability\022\024" + - ".xtreemfs.pbrpc.XCap\032\024.xtreemfs.pbrpc.XC" + - "ap\"\007\215\265\030%\000\000\000\022f\n\036xtreemfs_replication_to_m" + - "aster\022\034.xtreemfs.pbrpc.emptyRequest\032\035.xt" + - "reemfs.pbrpc.emptyResponse\"\007\215\265\030&\000\000\000\022k\n\024x" + - "treemfs_replica_add\022+.xtreemfs.pbrpc.xtr" + - "eemfs_replica_addRequest\032\035.xtreemfs.pbrp" + - "c.emptyResponse\"\007\215\265\030\'\000\000\000\022h\n\025xtreemfs_rep" + - "lica_list\022,.xtreemfs.pbrpc.xtreemfs_repl" + - "ica_listRequest\032\030.xtreemfs.pbrpc.Replica", - "s\"\007\215\265\030(\000\000\000\022s\n\027xtreemfs_replica_remove\022.." + - "xtreemfs.pbrpc.xtreemfs_replica_removeRe" + - "quest\032\037.xtreemfs.pbrpc.FileCredentials\"\007" + - "\215\265\030)\000\000\000\022z\n\031xtreemfs_restore_database\0225.x" + - "treemfs.pbrpc.xtreemfs_dump_restore_data" + - "baseRequest\032\035.xtreemfs.pbrpc.emptyRespon" + - "se\"\007\215\265\030*\000\000\000\022m\n\025xtreemfs_restore_file\022,.x" + - "treemfs.pbrpc.xtreemfs_restore_fileReque" + - "st\032\035.xtreemfs.pbrpc.emptyResponse\"\007\215\265\030+\000" + - "\000\000\022_\n\016xtreemfs_rmvol\022%.xtreemfs.pbrpc.xt", - "reemfs_rmvolRequest\032\035.xtreemfs.pbrpc.emp" + - "tyResponse\"\007\215\265\030,\000\000\000\022Y\n\021xtreemfs_shutdown" + - "\022\034.xtreemfs.pbrpc.emptyRequest\032\035.xtreemf" + - "s.pbrpc.emptyResponse\"\007\215\265\030-\000\000\000\022y\n\031xtreem" + - "fs_update_file_size\0220.xtreemfs.pbrpc.xtr" + - "eemfs_update_file_sizeRequest\032!.xtreemfs" + - ".pbrpc.timestampResponse\"\007\215\265\030.\000\000\000\022\244\001\n\"xt" + - "reemfs_set_replica_update_policy\0229.xtree" + + "ryEntry\"@\n\005XAttr\022\014\n\004name\030\001 \002(\t\022\r\n\005value\030" + + "\002 \001(\t\022\032\n\022value_bytes_string\030\003 \001(\014\"\225\002\n\006Vo" + + "lume\022F\n\025access_control_policy\030\001 \002(\0162\'.xt" + + "reemfs.pbrpc.AccessControlPolicyType\022?\n\027" + + "default_striping_policy\030\002 \002(\0132\036.xtreemfs" + + ".pbrpc.StripingPolicy\022\n\n\002id\030\003 \002(\t\022\014\n\004mod" + + "e\030\004 \002(\007\022\014\n\004name\030\005 \002(\t\022\026\n\016owner_group_id\030" + + "\006 \002(\t\022\025\n\rowner_user_id\030\007 \002(\t\022+\n\005attrs\030\010 ", + "\003(\0132\034.xtreemfs.pbrpc.KeyValuePair\"2\n\007Vol" + + "umes\022\'\n\007volumes\030\001 \003(\0132\026.xtreemfs.pbrpc.V" + + "olume\"\310\002\n\007StatVFS\022\r\n\005bsize\030\001 \002(\007\022\016\n\006bava" + + "il\030\002 \002(\006\022\r\n\005bfree\030\r \001(\006\022\016\n\006blocks\030\003 \002(\006\022" + + "\014\n\004fsid\030\004 \002(\t\022\017\n\007namemax\030\005 \002(\007\022F\n\025access" + + "_control_policy\030\006 \002(\0162\'.xtreemfs.pbrpc.A" + + "ccessControlPolicyType\022?\n\027default_stripi" + + "ng_policy\030\007 \002(\0132\036.xtreemfs.pbrpc.Stripin" + + "gPolicy\022\014\n\004etag\030\010 \002(\006\022\014\n\004mode\030\t \002(\007\022\014\n\004n" + + "ame\030\n \002(\t\022\026\n\016owner_group_id\030\013 \002(\t\022\025\n\rown", + "er_user_id\030\014 \002(\t\"i\n\017fsetattrRequest\022#\n\005s" + + "tbuf\030\001 \002(\0132\024.xtreemfs.pbrpc.Stat\022\016\n\006to_s" + + "et\030\002 \002(\007\022!\n\003cap\030\003 \002(\0132\024.xtreemfs.pbrpc.X" + + "Cap\"G\n\016getattrRequest\022\023\n\013volume_name\030\001 \002" + + "(\t\022\014\n\004path\030\002 \002(\t\022\022\n\nknown_etag\030\003 \002(\006\"6\n\017" + + "getattrResponse\022#\n\005stbuf\030\001 \001(\0132\024.xtreemf" + + "s.pbrpc.Stat\"B\n\017getxattrRequest\022\023\n\013volum" + + "e_name\030\001 \002(\t\022\014\n\004path\030\002 \002(\t\022\014\n\004name\030\003 \002(\t" + + "\"=\n\020getxattrResponse\022\r\n\005value\030\001 \002(\t\022\032\n\022v" + + "alue_bytes_string\030\002 \001(\014\"J\n\013linkRequest\022\023", + "\n\013volume_name\030\001 \002(\t\022\023\n\013target_path\030\002 \002(\t" + + "\022\021\n\tlink_path\030\003 \002(\t\"I\n\020listxattrRequest\022" + + "\023\n\013volume_name\030\001 \002(\t\022\014\n\004path\030\002 \002(\t\022\022\n\nna" + + "mes_only\030\003 \002(\010\":\n\021listxattrResponse\022%\n\006x" + + "attrs\030\001 \003(\0132\025.xtreemfs.pbrpc.XAttr\"?\n\014mk" + + "dirRequest\022\023\n\013volume_name\030\001 \002(\t\022\014\n\004path\030" + + "\002 \002(\t\022\014\n\004mode\030\003 \002(\007\"\232\001\n\013openRequest\022\023\n\013v" + + "olume_name\030\001 \002(\t\022\014\n\004path\030\002 \002(\t\022\r\n\005flags\030" + + "\003 \002(\007\022\014\n\004mode\030\004 \002(\007\022\022\n\nattributes\030\005 \002(\007\022" + + "7\n\013coordinates\030\006 \001(\0132\".xtreemfs.pbrpc.Vi", + "valdiCoordinates\"S\n\014openResponse\022.\n\005cred" + + "s\030\001 \002(\0132\037.xtreemfs.pbrpc.FileCredentials" + + "\022\023\n\013timestamp_s\030\002 \002(\007\"\250\001\n\016readdirRequest" + + "\022\023\n\013volume_name\030\001 \002(\t\022\014\n\004path\030\002 \002(\t\022\022\n\nk" + + "nown_etag\030\003 \002(\006\022%\n\035limit_directory_entri" + + "es_count\030\004 \002(\007\022\022\n\nnames_only\030\005 \002(\010\022$\n\034se" + + "en_directory_entries_count\030\006 \002(\006\"4\n\017read" + + "linkRequest\022\023\n\013volume_name\030\001 \002(\t\022\014\n\004path" + + "\030\002 \002(\t\",\n\020readlinkResponse\022\030\n\020link_targe" + + "t_path\030\001 \003(\t\"E\n\022removexattrRequest\022\023\n\013vo", + "lume_name\030\001 \002(\t\022\014\n\004path\030\002 \002(\t\022\014\n\004name\030\003 " + + "\002(\t\"N\n\rrenameRequest\022\023\n\013volume_name\030\001 \002(" + + "\t\022\023\n\013source_path\030\002 \002(\t\022\023\n\013target_path\030\003 " + + "\002(\t\"U\n\016renameResponse\022\023\n\013timestamp_s\030\001 \002" + + "(\007\022.\n\005creds\030\002 \001(\0132\037.xtreemfs.pbrpc.FileC" + + "redentials\"1\n\014rmdirRequest\022\023\n\013volume_nam" + + "e\030\001 \002(\t\022\014\n\004path\030\002 \002(\t\"h\n\016setattrRequest\022" + + "\023\n\013volume_name\030\001 \002(\t\022\014\n\004path\030\002 \002(\t\022#\n\005st" + + "buf\030\003 \002(\0132\024.xtreemfs.pbrpc.Stat\022\016\n\006to_se" + + "t\030\004 \002(\007\"|\n\017setxattrRequest\022\023\n\013volume_nam", + "e\030\001 \002(\t\022\014\n\004path\030\002 \002(\t\022\014\n\004name\030\003 \002(\t\022\r\n\005v" + + "alue\030\004 \002(\t\022\032\n\022value_bytes_string\030\006 \001(\014\022\r" + + "\n\005flags\030\005 \002(\007\"9\n\016statvfsRequest\022\023\n\013volum" + + "e_name\030\001 \002(\t\022\022\n\nknown_etag\030\005 \002(\006\"M\n\016syml" + + "inkRequest\022\023\n\013volume_name\030\001 \002(\t\022\023\n\013targe" + + "t_path\030\002 \002(\t\022\021\n\tlink_path\030\003 \002(\t\"2\n\runlin" + + "kRequest\022\023\n\013volume_name\030\001 \002(\t\022\014\n\004path\030\002 " + + "\002(\t\"U\n\016unlinkResponse\022\023\n\013timestamp_s\030\001 \002" + + "(\007\022.\n\005creds\030\002 \001(\0132\037.xtreemfs.pbrpc.FileC" + + "redentials\"A\n\raccessRequest\022\023\n\013volume_na", + "me\030\001 \002(\t\022\014\n\004path\030\002 \002(\t\022\r\n\005flags\030\003 \002(\007\"Z\n" + + "!xtreemfs_check_file_existsRequest\022\021\n\tvo" + + "lume_id\030\001 \002(\t\022\020\n\010file_ids\030\002 \003(\t\022\020\n\010osd_u" + + "uid\030\003 \002(\t\":\n%xtreemfs_dump_restore_datab" + + "aseRequest\022\021\n\tdump_file\030\001 \002(\t\"i\n!xtreemf" + + "s_get_suitable_osdsRequest\022\017\n\007file_id\030\001 " + + "\001(\t\022\014\n\004path\030\003 \001(\t\022\023\n\013volume_name\030\004 \001(\t\022\020" + + "\n\010num_osds\030\002 \002(\007\"7\n\"xtreemfs_get_suitabl" + + "e_osdsResponse\022\021\n\tosd_uuids\030\001 \003(\t\"4\n\"xtr" + + "eemfs_check_file_existsResponse\022\016\n\006bitma", + "p\030\001 \002(\t\"(\n\021timestampResponse\022\023\n\013timestam" + + "p_s\030\001 \002(\007\"!\n\rstringMessage\022\020\n\010a_string\030\001" + + " \002(\t\"\'\n\027xtreemfs_listdirRequest\022\014\n\004path\030" + + "\001 \002(\t\")\n\030xtreemfs_listdirResponse\022\r\n\005nam" + + "es\030\001 \003(\t\"\177\n\033xtreemfs_replica_addRequest\022" + + "\017\n\007file_id\030\001 \001(\t\022\014\n\004path\030\003 \001(\t\022\023\n\013volume" + + "_name\030\004 \001(\t\022,\n\013new_replica\030\002 \002(\0132\027.xtree" + + "mfs.pbrpc.Replica\"R\n\034xtreemfs_replica_li" + + "stRequest\022\017\n\007file_id\030\001 \001(\t\022\014\n\004path\030\002 \001(\t" + + "\022\023\n\013volume_name\030\003 \001(\t\"f\n\036xtreemfs_replic", + "a_removeRequest\022\017\n\007file_id\030\001 \001(\t\022\014\n\004path" + + "\030\003 \001(\t\022\023\n\013volume_name\030\004 \001(\t\022\020\n\010osd_uuid\030" + + "\002 \002(\t\"|\n\034xtreemfs_restore_fileRequest\022\021\n" + + "\tfile_path\030\001 \002(\t\022\017\n\007file_id\030\002 \002(\t\022\021\n\tfil" + + "e_size\030\003 \002(\006\022\020\n\010osd_uuid\030\004 \002(\t\022\023\n\013stripe" + + "_size\030\005 \002(\007\",\n\025xtreemfs_rmvolRequest\022\023\n\013" + + "volume_name\030\001 \002(\t\"\321\001\n xtreemfs_update_fi" + + "le_sizeRequest\022\"\n\004xcap\030\001 \002(\0132\024.xtreemfs." + + "pbrpc.XCap\022<\n\022osd_write_response\030\002 \002(\0132 " + + ".xtreemfs.pbrpc.OSDWriteResponse\022\022\n\nclos", + "e_file\030\003 \001(\010\0227\n\013coordinates\030\004 \001(\0132\".xtre" + + "emfs.pbrpc.VivaldiCoordinates\"S\n)xtreemf" + + "s_set_replica_update_policyRequest\022\017\n\007fi" + + "le_id\030\001 \002(\t\022\025\n\rupdate_policy\030\002 \002(\t\"G\n*xt" + + "reemfs_set_replica_update_policyResponse" + + "\022\031\n\021old_update_policy\030\001 \002(\t\"E\n#xtreemfs_" + + "set_read_only_xattrRequest\022\017\n\007file_id\030\001 " + + "\002(\t\022\r\n\005value\030\002 \002(\010\"7\n$xtreemfs_set_read_" + + "only_xattrResponse\022\017\n\007was_set\030\001 \002(\010\"7\n$x" + + "treemfs_get_file_credentialsRequest\022\017\n\007f", + "ile_id\030\001 \002(\t*\242\001\n\010Setattrs\022\020\n\014SETATTR_MOD" + + "E\020\001\022\017\n\013SETATTR_UID\020\002\022\017\n\013SETATTR_GID\020\004\022\020\n" + + "\014SETATTR_SIZE\020\010\022\021\n\rSETATTR_ATIME\020\020\022\021\n\rSE" + + "TATTR_MTIME\020 \022\021\n\rSETATTR_CTIME\020@\022\027\n\022SETA" + + "TTR_ATTRIBUTES\020\200\001*>\n\013XATTR_FLAGS\022\026\n\022XATT" + + "R_FLAGS_CREATE\020\001\022\027\n\023XATTR_FLAGS_REPLACE\020" + + "\002*j\n\014ACCESS_FLAGS\022\025\n\021ACCESS_FLAGS_F_OK\020\000" + + "\022\025\n\021ACCESS_FLAGS_X_OK\020\001\022\025\n\021ACCESS_FLAGS_" + + "W_OK\020\002\022\025\n\021ACCESS_FLAGS_R_OK\020\0042\234\037\n\nMRCSer" + + "vice\022S\n\010fsetattr\022\037.xtreemfs.pbrpc.fsetat", + "trRequest\032\035.xtreemfs.pbrpc.emptyResponse" + + "\"\007\215\265\030\002\000\000\000\022@\n\tftruncate\022\024.xtreemfs.pbrpc." + + "XCap\032\024.xtreemfs.pbrpc.XCap\"\007\215\265\030\003\000\000\000\022S\n\007g" + + "etattr\022\036.xtreemfs.pbrpc.getattrRequest\032\037" + + ".xtreemfs.pbrpc.getattrResponse\"\007\215\265\030\004\000\000\000" + + "\022V\n\010getxattr\022\037.xtreemfs.pbrpc.getxattrRe" + + "quest\032 .xtreemfs.pbrpc.getxattrResponse\"" + + "\007\215\265\030\005\000\000\000\022O\n\004link\022\033.xtreemfs.pbrpc.linkRe" + + "quest\032!.xtreemfs.pbrpc.timestampResponse" + + "\"\007\215\265\030\006\000\000\000\022Y\n\tlistxattr\022 .xtreemfs.pbrpc.", + "listxattrRequest\032!.xtreemfs.pbrpc.listxa" + + "ttrResponse\"\007\215\265\030\007\000\000\000\022Q\n\005mkdir\022\034.xtreemfs" + + ".pbrpc.mkdirRequest\032!.xtreemfs.pbrpc.tim" + + "estampResponse\"\007\215\265\030\010\000\000\000\022J\n\004open\022\033.xtreem" + + "fs.pbrpc.openRequest\032\034.xtreemfs.pbrpc.op" + + "enResponse\"\007\215\265\030\t\000\000\000\022T\n\007readdir\022\036.xtreemf" + + "s.pbrpc.readdirRequest\032 .xtreemfs.pbrpc." + + "DirectoryEntries\"\007\215\265\030\n\000\000\000\022V\n\010readlink\022\037." + + "xtreemfs.pbrpc.readlinkRequest\032 .xtreemf" + + "s.pbrpc.readlinkResponse\"\007\215\265\030\013\000\000\000\022]\n\013rem", + "ovexattr\022\".xtreemfs.pbrpc.removexattrReq" + + "uest\032!.xtreemfs.pbrpc.timestampResponse\"" + + "\007\215\265\030\014\000\000\000\022P\n\006rename\022\035.xtreemfs.pbrpc.rena" + + "meRequest\032\036.xtreemfs.pbrpc.renameRespons" + + "e\"\007\215\265\030\r\000\000\000\022Q\n\005rmdir\022\034.xtreemfs.pbrpc.rmd" + + "irRequest\032!.xtreemfs.pbrpc.timestampResp" + + "onse\"\007\215\265\030\016\000\000\000\022U\n\007setattr\022\036.xtreemfs.pbrp" + + "c.setattrRequest\032!.xtreemfs.pbrpc.timest" + + "ampResponse\"\007\215\265\030\017\000\000\000\022W\n\010setxattr\022\037.xtree" + + "mfs.pbrpc.setxattrRequest\032!.xtreemfs.pbr", + "pc.timestampResponse\"\007\215\265\030\020\000\000\000\022K\n\007statvfs" + + "\022\036.xtreemfs.pbrpc.statvfsRequest\032\027.xtree" + + "mfs.pbrpc.StatVFS\"\007\215\265\030\021\000\000\000\022U\n\007symlink\022\036." + + "xtreemfs.pbrpc.symlinkRequest\032!.xtreemfs" + + ".pbrpc.timestampResponse\"\007\215\265\030\022\000\000\000\022P\n\006unl" + + "ink\022\035.xtreemfs.pbrpc.unlinkRequest\032\036.xtr" + + "eemfs.pbrpc.unlinkResponse\"\007\215\265\030\023\000\000\000\022O\n\006a" + + "ccess\022\035.xtreemfs.pbrpc.accessRequest\032\035.x" + + "treemfs.pbrpc.emptyResponse\"\007\215\265\030\024\000\000\000\022[\n\023" + + "xtreemfs_checkpoint\022\034.xtreemfs.pbrpc.emp", + "tyRequest\032\035.xtreemfs.pbrpc.emptyResponse" + + "\"\007\215\265\030\036\000\000\000\022\214\001\n\032xtreemfs_check_file_exists" + + "\0221.xtreemfs.pbrpc.xtreemfs_check_file_ex" + + "istsRequest\0322.xtreemfs.pbrpc.xtreemfs_ch" + + "eck_file_existsResponse\"\007\215\265\030\037\000\000\000\022w\n\026xtre" + + "emfs_dump_database\0225.xtreemfs.pbrpc.xtre" + + "emfs_dump_restore_databaseRequest\032\035.xtre" + + "emfs.pbrpc.emptyResponse\"\007\215\265\030 \000\000\000\022\214\001\n\032xt" + + "reemfs_get_suitable_osds\0221.xtreemfs.pbrp" + + "c.xtreemfs_get_suitable_osdsRequest\0322.xt", + "reemfs.pbrpc.xtreemfs_get_suitable_osdsR" + + "esponse\"\007\215\265\030!\000\000\000\022`\n\027xtreemfs_internal_de" + + "bug\022\035.xtreemfs.pbrpc.stringMessage\032\035.xtr" + + "eemfs.pbrpc.stringMessage\"\007\215\265\030\"\000\000\000\022n\n\020xt" + + "reemfs_listdir\022\'.xtreemfs.pbrpc.xtreemfs" + + "_listdirRequest\032(.xtreemfs.pbrpc.xtreemf" + + "s_listdirResponse\"\007\215\265\030#\000\000\000\022P\n\016xtreemfs_l" + + "svol\022\034.xtreemfs.pbrpc.emptyRequest\032\027.xtr" + + "eemfs.pbrpc.Volumes\"\007\215\265\030$\000\000\000\022P\n\016xtreemfs" + + "_mkvol\022\026.xtreemfs.pbrpc.Volume\032\035.xtreemf", + "s.pbrpc.emptyResponse\"\007\215\265\030/\000\000\000\022P\n\031xtreem" + + "fs_renew_capability\022\024.xtreemfs.pbrpc.XCa" + + "p\032\024.xtreemfs.pbrpc.XCap\"\007\215\265\030%\000\000\000\022f\n\036xtre" + + "emfs_replication_to_master\022\034.xtreemfs.pb" + + "rpc.emptyRequest\032\035.xtreemfs.pbrpc.emptyR" + + "esponse\"\007\215\265\030&\000\000\000\022k\n\024xtreemfs_replica_add" + + "\022+.xtreemfs.pbrpc.xtreemfs_replica_addRe" + + "quest\032\035.xtreemfs.pbrpc.emptyResponse\"\007\215\265" + + "\030\'\000\000\000\022h\n\025xtreemfs_replica_list\022,.xtreemf" + + "s.pbrpc.xtreemfs_replica_listRequest\032\030.x", + "treemfs.pbrpc.Replicas\"\007\215\265\030(\000\000\000\022s\n\027xtree" + + "mfs_replica_remove\022..xtreemfs.pbrpc.xtre" + + "emfs_replica_removeRequest\032\037.xtreemfs.pb" + + "rpc.FileCredentials\"\007\215\265\030)\000\000\000\022z\n\031xtreemfs" + + "_restore_database\0225.xtreemfs.pbrpc.xtree" + + "mfs_dump_restore_databaseRequest\032\035.xtree" + + "mfs.pbrpc.emptyResponse\"\007\215\265\030*\000\000\000\022m\n\025xtre" + + "emfs_restore_file\022,.xtreemfs.pbrpc.xtree" + + "mfs_restore_fileRequest\032\035.xtreemfs.pbrpc" + + ".emptyResponse\"\007\215\265\030+\000\000\000\022_\n\016xtreemfs_rmvo", + "l\022%.xtreemfs.pbrpc.xtreemfs_rmvolRequest" + + "\032\035.xtreemfs.pbrpc.emptyResponse\"\007\215\265\030,\000\000\000" + + "\022Y\n\021xtreemfs_shutdown\022\034.xtreemfs.pbrpc.e" + + "mptyRequest\032\035.xtreemfs.pbrpc.emptyRespon" + + "se\"\007\215\265\030-\000\000\000\022y\n\031xtreemfs_update_file_size" + + "\0220.xtreemfs.pbrpc.xtreemfs_update_file_s" + + "izeRequest\032!.xtreemfs.pbrpc.timestampRes" + + "ponse\"\007\215\265\030.\000\000\000\022\244\001\n\"xtreemfs_set_replica_" + + "update_policy\0229.xtreemfs.pbrpc.xtreemfs_" + + "set_replica_update_policyRequest\032:.xtree", "mfs.pbrpc.xtreemfs_set_replica_update_po" + - "licyRequest\032:.xtreemfs.pbrpc.xtreemfs_se", - "t_replica_update_policyResponse\"\007\215\265\0300\000\000\000" + - "\022\222\001\n\034xtreemfs_set_read_only_xattr\0223.xtre" + - "emfs.pbrpc.xtreemfs_set_read_only_xattrR" + - "equest\0324.xtreemfs.pbrpc.xtreemfs_set_rea" + - "d_only_xattrResponse\"\007\215\265\0301\000\000\000\022\177\n\035xtreemf" + - "s_get_file_credentials\0224.xtreemfs.pbrpc." + - "xtreemfs_get_file_credentialsRequest\032\037.x" + - "treemfs.pbrpc.FileCredentials\"\007\215\265\0302\000\000\000\032\007" + - "\225\265\030!N\000\000B(\n&org.xtreemfs.pbrpc.generatedi" + - "nterfaces" + "licyResponse\"\007\215\265\0300\000\000\000\022\222\001\n\034xtreemfs_set_r" + + "ead_only_xattr\0223.xtreemfs.pbrpc.xtreemfs" + + "_set_read_only_xattrRequest\0324.xtreemfs.p" + + "brpc.xtreemfs_set_read_only_xattrRespons" + + "e\"\007\215\265\0301\000\000\000\022\177\n\035xtreemfs_get_file_credenti" + + "als\0224.xtreemfs.pbrpc.xtreemfs_get_file_c" + + "redentialsRequest\032\037.xtreemfs.pbrpc.FileC" + + "redentials\"\007\215\265\0302\000\000\000\032\007\225\265\030!N\000\000B(\n&org.xtre" + + "emfs.pbrpc.generatedinterfaces" }; com.google.protobuf.Descriptors.FileDescriptor.InternalDescriptorAssigner assigner = new com.google.protobuf.Descriptors.FileDescriptor.InternalDescriptorAssigner() { @@ -23429,423 +46798,356 @@ public final class MRC { internal_static_xtreemfs_pbrpc_Stat_fieldAccessorTable = new com.google.protobuf.GeneratedMessage.FieldAccessorTable( internal_static_xtreemfs_pbrpc_Stat_descriptor, - new java.lang.String[] { "Dev", "Ino", "Mode", "Nlink", "UserId", "GroupId", "Size", "AtimeNs", "MtimeNs", "CtimeNs", "Blksize", "Etag", "TruncateEpoch", "Attributes", }, - org.xtreemfs.pbrpc.generatedinterfaces.MRC.Stat.class, - org.xtreemfs.pbrpc.generatedinterfaces.MRC.Stat.Builder.class); + new java.lang.String[] { "Dev", "Ino", "Mode", "Nlink", "UserId", "GroupId", "Size", "AtimeNs", "MtimeNs", "CtimeNs", "Blksize", "Etag", "TruncateEpoch", "Attributes", }); internal_static_xtreemfs_pbrpc_DirectoryEntry_descriptor = getDescriptor().getMessageTypes().get(1); internal_static_xtreemfs_pbrpc_DirectoryEntry_fieldAccessorTable = new com.google.protobuf.GeneratedMessage.FieldAccessorTable( internal_static_xtreemfs_pbrpc_DirectoryEntry_descriptor, - new java.lang.String[] { "Name", "Stbuf", }, - org.xtreemfs.pbrpc.generatedinterfaces.MRC.DirectoryEntry.class, - org.xtreemfs.pbrpc.generatedinterfaces.MRC.DirectoryEntry.Builder.class); + new java.lang.String[] { "Name", "Stbuf", }); internal_static_xtreemfs_pbrpc_DirectoryEntries_descriptor = getDescriptor().getMessageTypes().get(2); internal_static_xtreemfs_pbrpc_DirectoryEntries_fieldAccessorTable = new com.google.protobuf.GeneratedMessage.FieldAccessorTable( internal_static_xtreemfs_pbrpc_DirectoryEntries_descriptor, - new java.lang.String[] { "Entries", }, - org.xtreemfs.pbrpc.generatedinterfaces.MRC.DirectoryEntries.class, - org.xtreemfs.pbrpc.generatedinterfaces.MRC.DirectoryEntries.Builder.class); + new java.lang.String[] { "Entries", }); internal_static_xtreemfs_pbrpc_XAttr_descriptor = getDescriptor().getMessageTypes().get(3); internal_static_xtreemfs_pbrpc_XAttr_fieldAccessorTable = new com.google.protobuf.GeneratedMessage.FieldAccessorTable( internal_static_xtreemfs_pbrpc_XAttr_descriptor, - new java.lang.String[] { "Name", "Value", "ValueBytes", }, - org.xtreemfs.pbrpc.generatedinterfaces.MRC.XAttr.class, - org.xtreemfs.pbrpc.generatedinterfaces.MRC.XAttr.Builder.class); + new java.lang.String[] { "Name", "Value", "ValueBytesString", }); internal_static_xtreemfs_pbrpc_Volume_descriptor = getDescriptor().getMessageTypes().get(4); internal_static_xtreemfs_pbrpc_Volume_fieldAccessorTable = new com.google.protobuf.GeneratedMessage.FieldAccessorTable( internal_static_xtreemfs_pbrpc_Volume_descriptor, - new java.lang.String[] { "AccessControlPolicy", "DefaultStripingPolicy", "Id", "Mode", "Name", "OwnerGroupId", "OwnerUserId", "Attrs", }, - org.xtreemfs.pbrpc.generatedinterfaces.MRC.Volume.class, - org.xtreemfs.pbrpc.generatedinterfaces.MRC.Volume.Builder.class); + new java.lang.String[] { "AccessControlPolicy", "DefaultStripingPolicy", "Id", "Mode", "Name", "OwnerGroupId", "OwnerUserId", "Attrs", }); internal_static_xtreemfs_pbrpc_Volumes_descriptor = getDescriptor().getMessageTypes().get(5); internal_static_xtreemfs_pbrpc_Volumes_fieldAccessorTable = new com.google.protobuf.GeneratedMessage.FieldAccessorTable( internal_static_xtreemfs_pbrpc_Volumes_descriptor, - new java.lang.String[] { "Volumes", }, - org.xtreemfs.pbrpc.generatedinterfaces.MRC.Volumes.class, - org.xtreemfs.pbrpc.generatedinterfaces.MRC.Volumes.Builder.class); + new java.lang.String[] { "Volumes", }); internal_static_xtreemfs_pbrpc_StatVFS_descriptor = getDescriptor().getMessageTypes().get(6); internal_static_xtreemfs_pbrpc_StatVFS_fieldAccessorTable = new com.google.protobuf.GeneratedMessage.FieldAccessorTable( internal_static_xtreemfs_pbrpc_StatVFS_descriptor, - new java.lang.String[] { "Bsize", "Bavail", "Bfree", "Blocks", "Fsid", "Namemax", "AccessControlPolicy", "DefaultStripingPolicy", "Etag", "Mode", "Name", "OwnerGroupId", "OwnerUserId", }, - org.xtreemfs.pbrpc.generatedinterfaces.MRC.StatVFS.class, - org.xtreemfs.pbrpc.generatedinterfaces.MRC.StatVFS.Builder.class); + new java.lang.String[] { "Bsize", "Bavail", "Bfree", "Blocks", "Fsid", "Namemax", "AccessControlPolicy", "DefaultStripingPolicy", "Etag", "Mode", "Name", "OwnerGroupId", "OwnerUserId", }); internal_static_xtreemfs_pbrpc_fsetattrRequest_descriptor = getDescriptor().getMessageTypes().get(7); internal_static_xtreemfs_pbrpc_fsetattrRequest_fieldAccessorTable = new com.google.protobuf.GeneratedMessage.FieldAccessorTable( internal_static_xtreemfs_pbrpc_fsetattrRequest_descriptor, - new java.lang.String[] { "Stbuf", "ToSet", "Cap", }, - org.xtreemfs.pbrpc.generatedinterfaces.MRC.fsetattrRequest.class, - org.xtreemfs.pbrpc.generatedinterfaces.MRC.fsetattrRequest.Builder.class); + new java.lang.String[] { "Stbuf", "ToSet", "Cap", }); internal_static_xtreemfs_pbrpc_getattrRequest_descriptor = getDescriptor().getMessageTypes().get(8); internal_static_xtreemfs_pbrpc_getattrRequest_fieldAccessorTable = new com.google.protobuf.GeneratedMessage.FieldAccessorTable( internal_static_xtreemfs_pbrpc_getattrRequest_descriptor, - new java.lang.String[] { "VolumeName", "Path", "KnownEtag", }, - org.xtreemfs.pbrpc.generatedinterfaces.MRC.getattrRequest.class, - org.xtreemfs.pbrpc.generatedinterfaces.MRC.getattrRequest.Builder.class); + new java.lang.String[] { "VolumeName", "Path", "KnownEtag", }); internal_static_xtreemfs_pbrpc_getattrResponse_descriptor = getDescriptor().getMessageTypes().get(9); internal_static_xtreemfs_pbrpc_getattrResponse_fieldAccessorTable = new com.google.protobuf.GeneratedMessage.FieldAccessorTable( internal_static_xtreemfs_pbrpc_getattrResponse_descriptor, - new java.lang.String[] { "Stbuf", }, - org.xtreemfs.pbrpc.generatedinterfaces.MRC.getattrResponse.class, - org.xtreemfs.pbrpc.generatedinterfaces.MRC.getattrResponse.Builder.class); + new java.lang.String[] { "Stbuf", }); internal_static_xtreemfs_pbrpc_getxattrRequest_descriptor = getDescriptor().getMessageTypes().get(10); internal_static_xtreemfs_pbrpc_getxattrRequest_fieldAccessorTable = new com.google.protobuf.GeneratedMessage.FieldAccessorTable( internal_static_xtreemfs_pbrpc_getxattrRequest_descriptor, - new java.lang.String[] { "VolumeName", "Path", "Name", }, - org.xtreemfs.pbrpc.generatedinterfaces.MRC.getxattrRequest.class, - org.xtreemfs.pbrpc.generatedinterfaces.MRC.getxattrRequest.Builder.class); + new java.lang.String[] { "VolumeName", "Path", "Name", }); internal_static_xtreemfs_pbrpc_getxattrResponse_descriptor = getDescriptor().getMessageTypes().get(11); internal_static_xtreemfs_pbrpc_getxattrResponse_fieldAccessorTable = new com.google.protobuf.GeneratedMessage.FieldAccessorTable( internal_static_xtreemfs_pbrpc_getxattrResponse_descriptor, - new java.lang.String[] { "Value", "ValueBytes", }, - org.xtreemfs.pbrpc.generatedinterfaces.MRC.getxattrResponse.class, - org.xtreemfs.pbrpc.generatedinterfaces.MRC.getxattrResponse.Builder.class); + new java.lang.String[] { "Value", "ValueBytesString", }); internal_static_xtreemfs_pbrpc_linkRequest_descriptor = getDescriptor().getMessageTypes().get(12); internal_static_xtreemfs_pbrpc_linkRequest_fieldAccessorTable = new com.google.protobuf.GeneratedMessage.FieldAccessorTable( internal_static_xtreemfs_pbrpc_linkRequest_descriptor, - new java.lang.String[] { "VolumeName", "TargetPath", "LinkPath", }, - org.xtreemfs.pbrpc.generatedinterfaces.MRC.linkRequest.class, - org.xtreemfs.pbrpc.generatedinterfaces.MRC.linkRequest.Builder.class); + new java.lang.String[] { "VolumeName", "TargetPath", "LinkPath", }); internal_static_xtreemfs_pbrpc_listxattrRequest_descriptor = getDescriptor().getMessageTypes().get(13); internal_static_xtreemfs_pbrpc_listxattrRequest_fieldAccessorTable = new com.google.protobuf.GeneratedMessage.FieldAccessorTable( internal_static_xtreemfs_pbrpc_listxattrRequest_descriptor, - new java.lang.String[] { "VolumeName", "Path", "NamesOnly", }, - org.xtreemfs.pbrpc.generatedinterfaces.MRC.listxattrRequest.class, - org.xtreemfs.pbrpc.generatedinterfaces.MRC.listxattrRequest.Builder.class); + new java.lang.String[] { "VolumeName", "Path", "NamesOnly", }); internal_static_xtreemfs_pbrpc_listxattrResponse_descriptor = getDescriptor().getMessageTypes().get(14); internal_static_xtreemfs_pbrpc_listxattrResponse_fieldAccessorTable = new com.google.protobuf.GeneratedMessage.FieldAccessorTable( internal_static_xtreemfs_pbrpc_listxattrResponse_descriptor, - new java.lang.String[] { "Xattrs", }, - org.xtreemfs.pbrpc.generatedinterfaces.MRC.listxattrResponse.class, - org.xtreemfs.pbrpc.generatedinterfaces.MRC.listxattrResponse.Builder.class); + new java.lang.String[] { "Xattrs", }); internal_static_xtreemfs_pbrpc_mkdirRequest_descriptor = getDescriptor().getMessageTypes().get(15); internal_static_xtreemfs_pbrpc_mkdirRequest_fieldAccessorTable = new com.google.protobuf.GeneratedMessage.FieldAccessorTable( internal_static_xtreemfs_pbrpc_mkdirRequest_descriptor, - new java.lang.String[] { "VolumeName", "Path", "Mode", }, - org.xtreemfs.pbrpc.generatedinterfaces.MRC.mkdirRequest.class, - org.xtreemfs.pbrpc.generatedinterfaces.MRC.mkdirRequest.Builder.class); + new java.lang.String[] { "VolumeName", "Path", "Mode", }); internal_static_xtreemfs_pbrpc_openRequest_descriptor = getDescriptor().getMessageTypes().get(16); internal_static_xtreemfs_pbrpc_openRequest_fieldAccessorTable = new com.google.protobuf.GeneratedMessage.FieldAccessorTable( internal_static_xtreemfs_pbrpc_openRequest_descriptor, - new java.lang.String[] { "VolumeName", "Path", "Flags", "Mode", "Attributes", "Coordinates", }, - org.xtreemfs.pbrpc.generatedinterfaces.MRC.openRequest.class, - org.xtreemfs.pbrpc.generatedinterfaces.MRC.openRequest.Builder.class); + new java.lang.String[] { "VolumeName", "Path", "Flags", "Mode", "Attributes", "Coordinates", }); internal_static_xtreemfs_pbrpc_openResponse_descriptor = getDescriptor().getMessageTypes().get(17); internal_static_xtreemfs_pbrpc_openResponse_fieldAccessorTable = new com.google.protobuf.GeneratedMessage.FieldAccessorTable( internal_static_xtreemfs_pbrpc_openResponse_descriptor, - new java.lang.String[] { "Creds", "TimestampS", }, - org.xtreemfs.pbrpc.generatedinterfaces.MRC.openResponse.class, - org.xtreemfs.pbrpc.generatedinterfaces.MRC.openResponse.Builder.class); + new java.lang.String[] { "Creds", "TimestampS", }); internal_static_xtreemfs_pbrpc_readdirRequest_descriptor = getDescriptor().getMessageTypes().get(18); internal_static_xtreemfs_pbrpc_readdirRequest_fieldAccessorTable = new com.google.protobuf.GeneratedMessage.FieldAccessorTable( internal_static_xtreemfs_pbrpc_readdirRequest_descriptor, - new java.lang.String[] { "VolumeName", "Path", "KnownEtag", "LimitDirectoryEntriesCount", "NamesOnly", "SeenDirectoryEntriesCount", }, - org.xtreemfs.pbrpc.generatedinterfaces.MRC.readdirRequest.class, - org.xtreemfs.pbrpc.generatedinterfaces.MRC.readdirRequest.Builder.class); + new java.lang.String[] { "VolumeName", "Path", "KnownEtag", "LimitDirectoryEntriesCount", "NamesOnly", "SeenDirectoryEntriesCount", }); internal_static_xtreemfs_pbrpc_readlinkRequest_descriptor = getDescriptor().getMessageTypes().get(19); internal_static_xtreemfs_pbrpc_readlinkRequest_fieldAccessorTable = new com.google.protobuf.GeneratedMessage.FieldAccessorTable( internal_static_xtreemfs_pbrpc_readlinkRequest_descriptor, - new java.lang.String[] { "VolumeName", "Path", }, - org.xtreemfs.pbrpc.generatedinterfaces.MRC.readlinkRequest.class, - org.xtreemfs.pbrpc.generatedinterfaces.MRC.readlinkRequest.Builder.class); + new java.lang.String[] { "VolumeName", "Path", }); internal_static_xtreemfs_pbrpc_readlinkResponse_descriptor = getDescriptor().getMessageTypes().get(20); internal_static_xtreemfs_pbrpc_readlinkResponse_fieldAccessorTable = new com.google.protobuf.GeneratedMessage.FieldAccessorTable( internal_static_xtreemfs_pbrpc_readlinkResponse_descriptor, - new java.lang.String[] { "LinkTargetPath", }, - org.xtreemfs.pbrpc.generatedinterfaces.MRC.readlinkResponse.class, - org.xtreemfs.pbrpc.generatedinterfaces.MRC.readlinkResponse.Builder.class); + new java.lang.String[] { "LinkTargetPath", }); internal_static_xtreemfs_pbrpc_removexattrRequest_descriptor = getDescriptor().getMessageTypes().get(21); internal_static_xtreemfs_pbrpc_removexattrRequest_fieldAccessorTable = new com.google.protobuf.GeneratedMessage.FieldAccessorTable( internal_static_xtreemfs_pbrpc_removexattrRequest_descriptor, - new java.lang.String[] { "VolumeName", "Path", "Name", }, - org.xtreemfs.pbrpc.generatedinterfaces.MRC.removexattrRequest.class, - org.xtreemfs.pbrpc.generatedinterfaces.MRC.removexattrRequest.Builder.class); + new java.lang.String[] { "VolumeName", "Path", "Name", }); internal_static_xtreemfs_pbrpc_renameRequest_descriptor = getDescriptor().getMessageTypes().get(22); internal_static_xtreemfs_pbrpc_renameRequest_fieldAccessorTable = new com.google.protobuf.GeneratedMessage.FieldAccessorTable( internal_static_xtreemfs_pbrpc_renameRequest_descriptor, - new java.lang.String[] { "VolumeName", "SourcePath", "TargetPath", }, - org.xtreemfs.pbrpc.generatedinterfaces.MRC.renameRequest.class, - org.xtreemfs.pbrpc.generatedinterfaces.MRC.renameRequest.Builder.class); + new java.lang.String[] { "VolumeName", "SourcePath", "TargetPath", }); internal_static_xtreemfs_pbrpc_renameResponse_descriptor = getDescriptor().getMessageTypes().get(23); internal_static_xtreemfs_pbrpc_renameResponse_fieldAccessorTable = new com.google.protobuf.GeneratedMessage.FieldAccessorTable( internal_static_xtreemfs_pbrpc_renameResponse_descriptor, - new java.lang.String[] { "TimestampS", "Creds", }, - org.xtreemfs.pbrpc.generatedinterfaces.MRC.renameResponse.class, - org.xtreemfs.pbrpc.generatedinterfaces.MRC.renameResponse.Builder.class); + new java.lang.String[] { "TimestampS", "Creds", }); internal_static_xtreemfs_pbrpc_rmdirRequest_descriptor = getDescriptor().getMessageTypes().get(24); internal_static_xtreemfs_pbrpc_rmdirRequest_fieldAccessorTable = new com.google.protobuf.GeneratedMessage.FieldAccessorTable( internal_static_xtreemfs_pbrpc_rmdirRequest_descriptor, - new java.lang.String[] { "VolumeName", "Path", }, - org.xtreemfs.pbrpc.generatedinterfaces.MRC.rmdirRequest.class, - org.xtreemfs.pbrpc.generatedinterfaces.MRC.rmdirRequest.Builder.class); + new java.lang.String[] { "VolumeName", "Path", }); internal_static_xtreemfs_pbrpc_setattrRequest_descriptor = getDescriptor().getMessageTypes().get(25); internal_static_xtreemfs_pbrpc_setattrRequest_fieldAccessorTable = new com.google.protobuf.GeneratedMessage.FieldAccessorTable( internal_static_xtreemfs_pbrpc_setattrRequest_descriptor, - new java.lang.String[] { "VolumeName", "Path", "Stbuf", "ToSet", }, - org.xtreemfs.pbrpc.generatedinterfaces.MRC.setattrRequest.class, - org.xtreemfs.pbrpc.generatedinterfaces.MRC.setattrRequest.Builder.class); + new java.lang.String[] { "VolumeName", "Path", "Stbuf", "ToSet", }); internal_static_xtreemfs_pbrpc_setxattrRequest_descriptor = getDescriptor().getMessageTypes().get(26); internal_static_xtreemfs_pbrpc_setxattrRequest_fieldAccessorTable = new com.google.protobuf.GeneratedMessage.FieldAccessorTable( internal_static_xtreemfs_pbrpc_setxattrRequest_descriptor, - new java.lang.String[] { "VolumeName", "Path", "Name", "Value", "ValueBytes", "Flags", }, - org.xtreemfs.pbrpc.generatedinterfaces.MRC.setxattrRequest.class, - org.xtreemfs.pbrpc.generatedinterfaces.MRC.setxattrRequest.Builder.class); + new java.lang.String[] { "VolumeName", "Path", "Name", "Value", "ValueBytesString", "Flags", }); internal_static_xtreemfs_pbrpc_statvfsRequest_descriptor = getDescriptor().getMessageTypes().get(27); internal_static_xtreemfs_pbrpc_statvfsRequest_fieldAccessorTable = new com.google.protobuf.GeneratedMessage.FieldAccessorTable( internal_static_xtreemfs_pbrpc_statvfsRequest_descriptor, - new java.lang.String[] { "VolumeName", "KnownEtag", }, - org.xtreemfs.pbrpc.generatedinterfaces.MRC.statvfsRequest.class, - org.xtreemfs.pbrpc.generatedinterfaces.MRC.statvfsRequest.Builder.class); + new java.lang.String[] { "VolumeName", "KnownEtag", }); internal_static_xtreemfs_pbrpc_symlinkRequest_descriptor = getDescriptor().getMessageTypes().get(28); internal_static_xtreemfs_pbrpc_symlinkRequest_fieldAccessorTable = new com.google.protobuf.GeneratedMessage.FieldAccessorTable( internal_static_xtreemfs_pbrpc_symlinkRequest_descriptor, - new java.lang.String[] { "VolumeName", "TargetPath", "LinkPath", }, - org.xtreemfs.pbrpc.generatedinterfaces.MRC.symlinkRequest.class, - org.xtreemfs.pbrpc.generatedinterfaces.MRC.symlinkRequest.Builder.class); + new java.lang.String[] { "VolumeName", "TargetPath", "LinkPath", }); internal_static_xtreemfs_pbrpc_unlinkRequest_descriptor = getDescriptor().getMessageTypes().get(29); internal_static_xtreemfs_pbrpc_unlinkRequest_fieldAccessorTable = new com.google.protobuf.GeneratedMessage.FieldAccessorTable( internal_static_xtreemfs_pbrpc_unlinkRequest_descriptor, - new java.lang.String[] { "VolumeName", "Path", }, - org.xtreemfs.pbrpc.generatedinterfaces.MRC.unlinkRequest.class, - org.xtreemfs.pbrpc.generatedinterfaces.MRC.unlinkRequest.Builder.class); + new java.lang.String[] { "VolumeName", "Path", }); internal_static_xtreemfs_pbrpc_unlinkResponse_descriptor = getDescriptor().getMessageTypes().get(30); internal_static_xtreemfs_pbrpc_unlinkResponse_fieldAccessorTable = new com.google.protobuf.GeneratedMessage.FieldAccessorTable( internal_static_xtreemfs_pbrpc_unlinkResponse_descriptor, - new java.lang.String[] { "TimestampS", "Creds", }, - org.xtreemfs.pbrpc.generatedinterfaces.MRC.unlinkResponse.class, - org.xtreemfs.pbrpc.generatedinterfaces.MRC.unlinkResponse.Builder.class); + new java.lang.String[] { "TimestampS", "Creds", }); internal_static_xtreemfs_pbrpc_accessRequest_descriptor = getDescriptor().getMessageTypes().get(31); internal_static_xtreemfs_pbrpc_accessRequest_fieldAccessorTable = new com.google.protobuf.GeneratedMessage.FieldAccessorTable( internal_static_xtreemfs_pbrpc_accessRequest_descriptor, - new java.lang.String[] { "VolumeName", "Path", "Flags", }, - org.xtreemfs.pbrpc.generatedinterfaces.MRC.accessRequest.class, - org.xtreemfs.pbrpc.generatedinterfaces.MRC.accessRequest.Builder.class); + new java.lang.String[] { "VolumeName", "Path", "Flags", }); internal_static_xtreemfs_pbrpc_xtreemfs_check_file_existsRequest_descriptor = getDescriptor().getMessageTypes().get(32); internal_static_xtreemfs_pbrpc_xtreemfs_check_file_existsRequest_fieldAccessorTable = new com.google.protobuf.GeneratedMessage.FieldAccessorTable( internal_static_xtreemfs_pbrpc_xtreemfs_check_file_existsRequest_descriptor, - new java.lang.String[] { "VolumeId", "FileIds", "OsdUuid", }, - org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_check_file_existsRequest.class, - org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_check_file_existsRequest.Builder.class); + new java.lang.String[] { "VolumeId", "FileIds", "OsdUuid", }); internal_static_xtreemfs_pbrpc_xtreemfs_dump_restore_databaseRequest_descriptor = getDescriptor().getMessageTypes().get(33); internal_static_xtreemfs_pbrpc_xtreemfs_dump_restore_databaseRequest_fieldAccessorTable = new com.google.protobuf.GeneratedMessage.FieldAccessorTable( internal_static_xtreemfs_pbrpc_xtreemfs_dump_restore_databaseRequest_descriptor, - new java.lang.String[] { "DumpFile", }, - org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_dump_restore_databaseRequest.class, - org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_dump_restore_databaseRequest.Builder.class); + new java.lang.String[] { "DumpFile", }); internal_static_xtreemfs_pbrpc_xtreemfs_get_suitable_osdsRequest_descriptor = getDescriptor().getMessageTypes().get(34); internal_static_xtreemfs_pbrpc_xtreemfs_get_suitable_osdsRequest_fieldAccessorTable = new com.google.protobuf.GeneratedMessage.FieldAccessorTable( internal_static_xtreemfs_pbrpc_xtreemfs_get_suitable_osdsRequest_descriptor, - new java.lang.String[] { "FileId", "Path", "VolumeName", "NumOsds", }, - org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_get_suitable_osdsRequest.class, - org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_get_suitable_osdsRequest.Builder.class); + new java.lang.String[] { "FileId", "Path", "VolumeName", "NumOsds", }); internal_static_xtreemfs_pbrpc_xtreemfs_get_suitable_osdsResponse_descriptor = getDescriptor().getMessageTypes().get(35); internal_static_xtreemfs_pbrpc_xtreemfs_get_suitable_osdsResponse_fieldAccessorTable = new com.google.protobuf.GeneratedMessage.FieldAccessorTable( internal_static_xtreemfs_pbrpc_xtreemfs_get_suitable_osdsResponse_descriptor, - new java.lang.String[] { "OsdUuids", }, - org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_get_suitable_osdsResponse.class, - org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_get_suitable_osdsResponse.Builder.class); + new java.lang.String[] { "OsdUuids", }); internal_static_xtreemfs_pbrpc_xtreemfs_check_file_existsResponse_descriptor = getDescriptor().getMessageTypes().get(36); internal_static_xtreemfs_pbrpc_xtreemfs_check_file_existsResponse_fieldAccessorTable = new com.google.protobuf.GeneratedMessage.FieldAccessorTable( internal_static_xtreemfs_pbrpc_xtreemfs_check_file_existsResponse_descriptor, - new java.lang.String[] { "Bitmap", }, - org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_check_file_existsResponse.class, - org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_check_file_existsResponse.Builder.class); + new java.lang.String[] { "Bitmap", }); internal_static_xtreemfs_pbrpc_timestampResponse_descriptor = getDescriptor().getMessageTypes().get(37); internal_static_xtreemfs_pbrpc_timestampResponse_fieldAccessorTable = new com.google.protobuf.GeneratedMessage.FieldAccessorTable( internal_static_xtreemfs_pbrpc_timestampResponse_descriptor, - new java.lang.String[] { "TimestampS", }, - org.xtreemfs.pbrpc.generatedinterfaces.MRC.timestampResponse.class, - org.xtreemfs.pbrpc.generatedinterfaces.MRC.timestampResponse.Builder.class); + new java.lang.String[] { "TimestampS", }); internal_static_xtreemfs_pbrpc_stringMessage_descriptor = getDescriptor().getMessageTypes().get(38); internal_static_xtreemfs_pbrpc_stringMessage_fieldAccessorTable = new com.google.protobuf.GeneratedMessage.FieldAccessorTable( internal_static_xtreemfs_pbrpc_stringMessage_descriptor, - new java.lang.String[] { "AString", }, - org.xtreemfs.pbrpc.generatedinterfaces.MRC.stringMessage.class, - org.xtreemfs.pbrpc.generatedinterfaces.MRC.stringMessage.Builder.class); + new java.lang.String[] { "AString", }); internal_static_xtreemfs_pbrpc_xtreemfs_listdirRequest_descriptor = getDescriptor().getMessageTypes().get(39); internal_static_xtreemfs_pbrpc_xtreemfs_listdirRequest_fieldAccessorTable = new com.google.protobuf.GeneratedMessage.FieldAccessorTable( internal_static_xtreemfs_pbrpc_xtreemfs_listdirRequest_descriptor, - new java.lang.String[] { "Path", }, - org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_listdirRequest.class, - org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_listdirRequest.Builder.class); + new java.lang.String[] { "Path", }); internal_static_xtreemfs_pbrpc_xtreemfs_listdirResponse_descriptor = getDescriptor().getMessageTypes().get(40); internal_static_xtreemfs_pbrpc_xtreemfs_listdirResponse_fieldAccessorTable = new com.google.protobuf.GeneratedMessage.FieldAccessorTable( internal_static_xtreemfs_pbrpc_xtreemfs_listdirResponse_descriptor, - new java.lang.String[] { "Names", }, - org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_listdirResponse.class, - org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_listdirResponse.Builder.class); + new java.lang.String[] { "Names", }); internal_static_xtreemfs_pbrpc_xtreemfs_replica_addRequest_descriptor = getDescriptor().getMessageTypes().get(41); internal_static_xtreemfs_pbrpc_xtreemfs_replica_addRequest_fieldAccessorTable = new com.google.protobuf.GeneratedMessage.FieldAccessorTable( internal_static_xtreemfs_pbrpc_xtreemfs_replica_addRequest_descriptor, - new java.lang.String[] { "FileId", "Path", "VolumeName", "NewReplica", }, - org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_replica_addRequest.class, - org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_replica_addRequest.Builder.class); + new java.lang.String[] { "FileId", "Path", "VolumeName", "NewReplica", }); internal_static_xtreemfs_pbrpc_xtreemfs_replica_listRequest_descriptor = getDescriptor().getMessageTypes().get(42); internal_static_xtreemfs_pbrpc_xtreemfs_replica_listRequest_fieldAccessorTable = new com.google.protobuf.GeneratedMessage.FieldAccessorTable( internal_static_xtreemfs_pbrpc_xtreemfs_replica_listRequest_descriptor, - new java.lang.String[] { "FileId", "Path", "VolumeName", }, - org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_replica_listRequest.class, - org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_replica_listRequest.Builder.class); + new java.lang.String[] { "FileId", "Path", "VolumeName", }); internal_static_xtreemfs_pbrpc_xtreemfs_replica_removeRequest_descriptor = getDescriptor().getMessageTypes().get(43); internal_static_xtreemfs_pbrpc_xtreemfs_replica_removeRequest_fieldAccessorTable = new com.google.protobuf.GeneratedMessage.FieldAccessorTable( internal_static_xtreemfs_pbrpc_xtreemfs_replica_removeRequest_descriptor, - new java.lang.String[] { "FileId", "Path", "VolumeName", "OsdUuid", }, - org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_replica_removeRequest.class, - org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_replica_removeRequest.Builder.class); + new java.lang.String[] { "FileId", "Path", "VolumeName", "OsdUuid", }); internal_static_xtreemfs_pbrpc_xtreemfs_restore_fileRequest_descriptor = getDescriptor().getMessageTypes().get(44); internal_static_xtreemfs_pbrpc_xtreemfs_restore_fileRequest_fieldAccessorTable = new com.google.protobuf.GeneratedMessage.FieldAccessorTable( internal_static_xtreemfs_pbrpc_xtreemfs_restore_fileRequest_descriptor, - new java.lang.String[] { "FilePath", "FileId", "FileSize", "OsdUuid", "StripeSize", }, - org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_restore_fileRequest.class, - org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_restore_fileRequest.Builder.class); + new java.lang.String[] { "FilePath", "FileId", "FileSize", "OsdUuid", "StripeSize", }); internal_static_xtreemfs_pbrpc_xtreemfs_rmvolRequest_descriptor = getDescriptor().getMessageTypes().get(45); internal_static_xtreemfs_pbrpc_xtreemfs_rmvolRequest_fieldAccessorTable = new com.google.protobuf.GeneratedMessage.FieldAccessorTable( internal_static_xtreemfs_pbrpc_xtreemfs_rmvolRequest_descriptor, - new java.lang.String[] { "VolumeName", }, - org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_rmvolRequest.class, - org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_rmvolRequest.Builder.class); + new java.lang.String[] { "VolumeName", }); internal_static_xtreemfs_pbrpc_xtreemfs_update_file_sizeRequest_descriptor = getDescriptor().getMessageTypes().get(46); internal_static_xtreemfs_pbrpc_xtreemfs_update_file_sizeRequest_fieldAccessorTable = new com.google.protobuf.GeneratedMessage.FieldAccessorTable( internal_static_xtreemfs_pbrpc_xtreemfs_update_file_sizeRequest_descriptor, - new java.lang.String[] { "Xcap", "OsdWriteResponse", "CloseFile", "Coordinates", }, - org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_update_file_sizeRequest.class, - org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_update_file_sizeRequest.Builder.class); + new java.lang.String[] { "Xcap", "OsdWriteResponse", "CloseFile", "Coordinates", }); internal_static_xtreemfs_pbrpc_xtreemfs_set_replica_update_policyRequest_descriptor = getDescriptor().getMessageTypes().get(47); internal_static_xtreemfs_pbrpc_xtreemfs_set_replica_update_policyRequest_fieldAccessorTable = new com.google.protobuf.GeneratedMessage.FieldAccessorTable( internal_static_xtreemfs_pbrpc_xtreemfs_set_replica_update_policyRequest_descriptor, - new java.lang.String[] { "FileId", "UpdatePolicy", }, - org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_set_replica_update_policyRequest.class, - org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_set_replica_update_policyRequest.Builder.class); + new java.lang.String[] { "FileId", "UpdatePolicy", }); internal_static_xtreemfs_pbrpc_xtreemfs_set_replica_update_policyResponse_descriptor = getDescriptor().getMessageTypes().get(48); internal_static_xtreemfs_pbrpc_xtreemfs_set_replica_update_policyResponse_fieldAccessorTable = new com.google.protobuf.GeneratedMessage.FieldAccessorTable( internal_static_xtreemfs_pbrpc_xtreemfs_set_replica_update_policyResponse_descriptor, - new java.lang.String[] { "OldUpdatePolicy", }, - org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_set_replica_update_policyResponse.class, - org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_set_replica_update_policyResponse.Builder.class); + new java.lang.String[] { "OldUpdatePolicy", }); internal_static_xtreemfs_pbrpc_xtreemfs_set_read_only_xattrRequest_descriptor = getDescriptor().getMessageTypes().get(49); internal_static_xtreemfs_pbrpc_xtreemfs_set_read_only_xattrRequest_fieldAccessorTable = new com.google.protobuf.GeneratedMessage.FieldAccessorTable( internal_static_xtreemfs_pbrpc_xtreemfs_set_read_only_xattrRequest_descriptor, - new java.lang.String[] { "FileId", "Value", }, - org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_set_read_only_xattrRequest.class, - org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_set_read_only_xattrRequest.Builder.class); + new java.lang.String[] { "FileId", "Value", }); internal_static_xtreemfs_pbrpc_xtreemfs_set_read_only_xattrResponse_descriptor = getDescriptor().getMessageTypes().get(50); internal_static_xtreemfs_pbrpc_xtreemfs_set_read_only_xattrResponse_fieldAccessorTable = new com.google.protobuf.GeneratedMessage.FieldAccessorTable( internal_static_xtreemfs_pbrpc_xtreemfs_set_read_only_xattrResponse_descriptor, - new java.lang.String[] { "WasSet", }, - org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_set_read_only_xattrResponse.class, - org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_set_read_only_xattrResponse.Builder.class); + new java.lang.String[] { "WasSet", }); internal_static_xtreemfs_pbrpc_xtreemfs_get_file_credentialsRequest_descriptor = getDescriptor().getMessageTypes().get(51); internal_static_xtreemfs_pbrpc_xtreemfs_get_file_credentialsRequest_fieldAccessorTable = new com.google.protobuf.GeneratedMessage.FieldAccessorTable( internal_static_xtreemfs_pbrpc_xtreemfs_get_file_credentialsRequest_descriptor, - new java.lang.String[] { "FileId", }, - org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_get_file_credentialsRequest.class, - org.xtreemfs.pbrpc.generatedinterfaces.MRC.xtreemfs_get_file_credentialsRequest.Builder.class); + new java.lang.String[] { "FileId", }); com.google.protobuf.ExtensionRegistry registry = com.google.protobuf.ExtensionRegistry.newInstance(); - registerAllExtensions(registry); - org.xtreemfs.foundation.pbrpc.generatedinterfaces.PBRPC.registerAllExtensions(registry); - org.xtreemfs.pbrpc.generatedinterfaces.Common.registerAllExtensions(registry); - org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.registerAllExtensions(registry); + registry.add(org.xtreemfs.foundation.pbrpc.generatedinterfaces.PBRPC.procId); + registry.add(org.xtreemfs.foundation.pbrpc.generatedinterfaces.PBRPC.procId); + registry.add(org.xtreemfs.foundation.pbrpc.generatedinterfaces.PBRPC.procId); + registry.add(org.xtreemfs.foundation.pbrpc.generatedinterfaces.PBRPC.procId); + registry.add(org.xtreemfs.foundation.pbrpc.generatedinterfaces.PBRPC.procId); + registry.add(org.xtreemfs.foundation.pbrpc.generatedinterfaces.PBRPC.procId); + registry.add(org.xtreemfs.foundation.pbrpc.generatedinterfaces.PBRPC.procId); + registry.add(org.xtreemfs.foundation.pbrpc.generatedinterfaces.PBRPC.procId); + registry.add(org.xtreemfs.foundation.pbrpc.generatedinterfaces.PBRPC.procId); + registry.add(org.xtreemfs.foundation.pbrpc.generatedinterfaces.PBRPC.procId); + registry.add(org.xtreemfs.foundation.pbrpc.generatedinterfaces.PBRPC.procId); + registry.add(org.xtreemfs.foundation.pbrpc.generatedinterfaces.PBRPC.procId); + registry.add(org.xtreemfs.foundation.pbrpc.generatedinterfaces.PBRPC.procId); + registry.add(org.xtreemfs.foundation.pbrpc.generatedinterfaces.PBRPC.procId); + registry.add(org.xtreemfs.foundation.pbrpc.generatedinterfaces.PBRPC.procId); + registry.add(org.xtreemfs.foundation.pbrpc.generatedinterfaces.PBRPC.procId); + registry.add(org.xtreemfs.foundation.pbrpc.generatedinterfaces.PBRPC.procId); + registry.add(org.xtreemfs.foundation.pbrpc.generatedinterfaces.PBRPC.procId); + registry.add(org.xtreemfs.foundation.pbrpc.generatedinterfaces.PBRPC.procId); + registry.add(org.xtreemfs.foundation.pbrpc.generatedinterfaces.PBRPC.procId); + registry.add(org.xtreemfs.foundation.pbrpc.generatedinterfaces.PBRPC.procId); + registry.add(org.xtreemfs.foundation.pbrpc.generatedinterfaces.PBRPC.procId); + registry.add(org.xtreemfs.foundation.pbrpc.generatedinterfaces.PBRPC.procId); + registry.add(org.xtreemfs.foundation.pbrpc.generatedinterfaces.PBRPC.procId); + registry.add(org.xtreemfs.foundation.pbrpc.generatedinterfaces.PBRPC.procId); + registry.add(org.xtreemfs.foundation.pbrpc.generatedinterfaces.PBRPC.procId); + registry.add(org.xtreemfs.foundation.pbrpc.generatedinterfaces.PBRPC.procId); + registry.add(org.xtreemfs.foundation.pbrpc.generatedinterfaces.PBRPC.procId); + registry.add(org.xtreemfs.foundation.pbrpc.generatedinterfaces.PBRPC.procId); + registry.add(org.xtreemfs.foundation.pbrpc.generatedinterfaces.PBRPC.procId); + registry.add(org.xtreemfs.foundation.pbrpc.generatedinterfaces.PBRPC.procId); + registry.add(org.xtreemfs.foundation.pbrpc.generatedinterfaces.PBRPC.procId); + registry.add(org.xtreemfs.foundation.pbrpc.generatedinterfaces.PBRPC.procId); + registry.add(org.xtreemfs.foundation.pbrpc.generatedinterfaces.PBRPC.procId); + registry.add(org.xtreemfs.foundation.pbrpc.generatedinterfaces.PBRPC.procId); + registry.add(org.xtreemfs.foundation.pbrpc.generatedinterfaces.PBRPC.procId); + registry.add(org.xtreemfs.foundation.pbrpc.generatedinterfaces.PBRPC.procId); + registry.add(org.xtreemfs.foundation.pbrpc.generatedinterfaces.PBRPC.procId); + registry.add(org.xtreemfs.foundation.pbrpc.generatedinterfaces.PBRPC.procId); + registry.add(org.xtreemfs.foundation.pbrpc.generatedinterfaces.PBRPC.procId); + registry.add(org.xtreemfs.foundation.pbrpc.generatedinterfaces.PBRPC.interfaceId); return registry; } }; @@ -23857,8 +47159,6 @@ public final class MRC { org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.getDescriptor(), }, assigner); } - - public static void internalForceInit() {} - + // @@protoc_insertion_point(outer_class_scope) } diff --git a/java/servers/src/org/xtreemfs/pbrpc/generatedinterfaces/MRCServiceClient.java b/java/servers/src/org/xtreemfs/pbrpc/generatedinterfaces/MRCServiceClient.java index 5844ea18d..8cf17455a 100644 --- a/java/servers/src/org/xtreemfs/pbrpc/generatedinterfaces/MRCServiceClient.java +++ b/java/servers/src/org/xtreemfs/pbrpc/generatedinterfaces/MRCServiceClient.java @@ -1,4 +1,4 @@ -//automatically generated from MRC.proto at Thu Mar 21 17:09:46 CET 2013 +//automatically generated from MRC.proto at Mon Nov 11 11:46:59 CET 2013 //(c) 2013. See LICENSE file for details. package org.xtreemfs.pbrpc.generatedinterfaces; @@ -214,8 +214,8 @@ public class MRCServiceClient { return response; } - public RPCResponse setxattr(InetSocketAddress server, Auth authHeader, UserCredentials userCreds, String volume_name, String path, String name, String value, ByteString value_bytes, int flags) throws IOException { - final MRC.setxattrRequest msg = MRC.setxattrRequest.newBuilder().setVolumeName(volume_name).setPath(path).setName(name).setValue(value).setValueBytes(value_bytes).setFlags(flags).build(); + public RPCResponse setxattr(InetSocketAddress server, Auth authHeader, UserCredentials userCreds, String volume_name, String path, String name, String value, ByteString value_bytes_string, int flags) throws IOException { + final MRC.setxattrRequest msg = MRC.setxattrRequest.newBuilder().setVolumeName(volume_name).setPath(path).setName(name).setValue(value).setValueBytesString(value_bytes_string).setFlags(flags).build(); return setxattr(server, authHeader, userCreds,msg); } diff --git a/java/servers/src/org/xtreemfs/pbrpc/generatedinterfaces/MRCServiceConstants.java b/java/servers/src/org/xtreemfs/pbrpc/generatedinterfaces/MRCServiceConstants.java index 730391d0a..3a934fd73 100644 --- a/java/servers/src/org/xtreemfs/pbrpc/generatedinterfaces/MRCServiceConstants.java +++ b/java/servers/src/org/xtreemfs/pbrpc/generatedinterfaces/MRCServiceConstants.java @@ -1,4 +1,4 @@ -//automatically generated from MRC.proto at Thu Mar 21 17:09:46 CET 2013 +//automatically generated from MRC.proto at Mon Nov 11 11:46:59 CET 2013 //(c) 2013. See LICENSE file for details. package org.xtreemfs.pbrpc.generatedinterfaces; diff --git a/java/servers/src/org/xtreemfs/pbrpc/generatedinterfaces/OSD.java b/java/servers/src/org/xtreemfs/pbrpc/generatedinterfaces/OSD.java index d7d59f7e5..3e9793eee 100644 --- a/java/servers/src/org/xtreemfs/pbrpc/generatedinterfaces/OSD.java +++ b/java/servers/src/org/xtreemfs/pbrpc/generatedinterfaces/OSD.java @@ -8,243 +8,431 @@ public final class OSD { public static void registerAllExtensions( com.google.protobuf.ExtensionRegistry registry) { } + public interface InternalGmaxOrBuilder + extends com.google.protobuf.MessageOrBuilder { + + // required fixed64 epoch = 1; + /** + * required fixed64 epoch = 1; + */ + boolean hasEpoch(); + /** + * required fixed64 epoch = 1; + */ + long getEpoch(); + + // required fixed64 file_size = 2; + /** + * required fixed64 file_size = 2; + */ + boolean hasFileSize(); + /** + * required fixed64 file_size = 2; + */ + long getFileSize(); + + // required fixed64 last_object_id = 3; + /** + * required fixed64 last_object_id = 3; + */ + boolean hasLastObjectId(); + /** + * required fixed64 last_object_id = 3; + */ + long getLastObjectId(); + } + /** + * Protobuf type {@code xtreemfs.pbrpc.InternalGmax} + * + *
+   * Message sent between OSDs when the size of a striped file changes.
+   * Optimization to reduce communication between servers for sparse files
+   * and to handle EOF.
+   * 
+ */ public static final class InternalGmax extends - com.google.protobuf.GeneratedMessage { + com.google.protobuf.GeneratedMessage + implements InternalGmaxOrBuilder { // Use InternalGmax.newBuilder() to construct. - private InternalGmax() { - initFields(); + private InternalGmax(com.google.protobuf.GeneratedMessage.Builder builder) { + super(builder); + this.unknownFields = builder.getUnknownFields(); } - private InternalGmax(boolean noInit) {} - + private InternalGmax(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); } + private static final InternalGmax defaultInstance; public static InternalGmax getDefaultInstance() { return defaultInstance; } - + public InternalGmax getDefaultInstanceForType() { return defaultInstance; } - + + private final com.google.protobuf.UnknownFieldSet unknownFields; + @java.lang.Override + public final com.google.protobuf.UnknownFieldSet + getUnknownFields() { + return this.unknownFields; + } + private InternalGmax( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + initFields(); + int mutable_bitField0_ = 0; + com.google.protobuf.UnknownFieldSet.Builder unknownFields = + com.google.protobuf.UnknownFieldSet.newBuilder(); + try { + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch (tag) { + case 0: + done = true; + break; + default: { + if (!parseUnknownField(input, unknownFields, + extensionRegistry, tag)) { + done = true; + } + break; + } + case 9: { + bitField0_ |= 0x00000001; + epoch_ = input.readFixed64(); + break; + } + case 17: { + bitField0_ |= 0x00000002; + fileSize_ = input.readFixed64(); + break; + } + case 25: { + bitField0_ |= 0x00000004; + lastObjectId_ = input.readFixed64(); + break; + } + } + } + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(this); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException( + e.getMessage()).setUnfinishedMessage(this); + } finally { + this.unknownFields = unknownFields.build(); + makeExtensionsImmutable(); + } + } public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { return org.xtreemfs.pbrpc.generatedinterfaces.OSD.internal_static_xtreemfs_pbrpc_InternalGmax_descriptor; } - + protected com.google.protobuf.GeneratedMessage.FieldAccessorTable internalGetFieldAccessorTable() { - return org.xtreemfs.pbrpc.generatedinterfaces.OSD.internal_static_xtreemfs_pbrpc_InternalGmax_fieldAccessorTable; + return org.xtreemfs.pbrpc.generatedinterfaces.OSD.internal_static_xtreemfs_pbrpc_InternalGmax_fieldAccessorTable + .ensureFieldAccessorsInitialized( + org.xtreemfs.pbrpc.generatedinterfaces.OSD.InternalGmax.class, org.xtreemfs.pbrpc.generatedinterfaces.OSD.InternalGmax.Builder.class); + } + + public static com.google.protobuf.Parser PARSER = + new com.google.protobuf.AbstractParser() { + public InternalGmax parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return new InternalGmax(input, extensionRegistry); + } + }; + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; } - + + private int bitField0_; // required fixed64 epoch = 1; public static final int EPOCH_FIELD_NUMBER = 1; - private boolean hasEpoch; - private long epoch_ = 0L; - public boolean hasEpoch() { return hasEpoch; } - public long getEpoch() { return epoch_; } - + private long epoch_; + /** + * required fixed64 epoch = 1; + */ + public boolean hasEpoch() { + return ((bitField0_ & 0x00000001) == 0x00000001); + } + /** + * required fixed64 epoch = 1; + */ + public long getEpoch() { + return epoch_; + } + // required fixed64 file_size = 2; public static final int FILE_SIZE_FIELD_NUMBER = 2; - private boolean hasFileSize; - private long fileSize_ = 0L; - public boolean hasFileSize() { return hasFileSize; } - public long getFileSize() { return fileSize_; } - + private long fileSize_; + /** + * required fixed64 file_size = 2; + */ + public boolean hasFileSize() { + return ((bitField0_ & 0x00000002) == 0x00000002); + } + /** + * required fixed64 file_size = 2; + */ + public long getFileSize() { + return fileSize_; + } + // required fixed64 last_object_id = 3; public static final int LAST_OBJECT_ID_FIELD_NUMBER = 3; - private boolean hasLastObjectId; - private long lastObjectId_ = 0L; - public boolean hasLastObjectId() { return hasLastObjectId; } - public long getLastObjectId() { return lastObjectId_; } - + private long lastObjectId_; + /** + * required fixed64 last_object_id = 3; + */ + public boolean hasLastObjectId() { + return ((bitField0_ & 0x00000004) == 0x00000004); + } + /** + * required fixed64 last_object_id = 3; + */ + public long getLastObjectId() { + return lastObjectId_; + } + private void initFields() { + epoch_ = 0L; + fileSize_ = 0L; + lastObjectId_ = 0L; } + private byte memoizedIsInitialized = -1; public final boolean isInitialized() { - if (!hasEpoch) return false; - if (!hasFileSize) return false; - if (!hasLastObjectId) return false; + byte isInitialized = memoizedIsInitialized; + if (isInitialized != -1) return isInitialized == 1; + + if (!hasEpoch()) { + memoizedIsInitialized = 0; + return false; + } + if (!hasFileSize()) { + memoizedIsInitialized = 0; + return false; + } + if (!hasLastObjectId()) { + memoizedIsInitialized = 0; + return false; + } + memoizedIsInitialized = 1; return true; } - + public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException { getSerializedSize(); - if (hasEpoch()) { - output.writeFixed64(1, getEpoch()); + if (((bitField0_ & 0x00000001) == 0x00000001)) { + output.writeFixed64(1, epoch_); } - if (hasFileSize()) { - output.writeFixed64(2, getFileSize()); + if (((bitField0_ & 0x00000002) == 0x00000002)) { + output.writeFixed64(2, fileSize_); } - if (hasLastObjectId()) { - output.writeFixed64(3, getLastObjectId()); + if (((bitField0_ & 0x00000004) == 0x00000004)) { + output.writeFixed64(3, lastObjectId_); } getUnknownFields().writeTo(output); } - + private int memoizedSerializedSize = -1; public int getSerializedSize() { int size = memoizedSerializedSize; if (size != -1) return size; - + size = 0; - if (hasEpoch()) { + if (((bitField0_ & 0x00000001) == 0x00000001)) { size += com.google.protobuf.CodedOutputStream - .computeFixed64Size(1, getEpoch()); + .computeFixed64Size(1, epoch_); } - if (hasFileSize()) { + if (((bitField0_ & 0x00000002) == 0x00000002)) { size += com.google.protobuf.CodedOutputStream - .computeFixed64Size(2, getFileSize()); + .computeFixed64Size(2, fileSize_); } - if (hasLastObjectId()) { + if (((bitField0_ & 0x00000004) == 0x00000004)) { size += com.google.protobuf.CodedOutputStream - .computeFixed64Size(3, getLastObjectId()); + .computeFixed64Size(3, lastObjectId_); } size += getUnknownFields().getSerializedSize(); memoizedSerializedSize = size; return size; } - + + private static final long serialVersionUID = 0L; + @java.lang.Override + protected java.lang.Object writeReplace() + throws java.io.ObjectStreamException { + return super.writeReplace(); + } + public static org.xtreemfs.pbrpc.generatedinterfaces.OSD.InternalGmax parseFrom( com.google.protobuf.ByteString data) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data).buildParsed(); + return PARSER.parseFrom(data); } public static org.xtreemfs.pbrpc.generatedinterfaces.OSD.InternalGmax parseFrom( com.google.protobuf.ByteString data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(data, extensionRegistry); } public static org.xtreemfs.pbrpc.generatedinterfaces.OSD.InternalGmax parseFrom(byte[] data) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data).buildParsed(); + return PARSER.parseFrom(data); } public static org.xtreemfs.pbrpc.generatedinterfaces.OSD.InternalGmax parseFrom( byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(data, extensionRegistry); } public static org.xtreemfs.pbrpc.generatedinterfaces.OSD.InternalGmax parseFrom(java.io.InputStream input) throws java.io.IOException { - return newBuilder().mergeFrom(input).buildParsed(); + return PARSER.parseFrom(input); } public static org.xtreemfs.pbrpc.generatedinterfaces.OSD.InternalGmax parseFrom( java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - return newBuilder().mergeFrom(input, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(input, extensionRegistry); } public static org.xtreemfs.pbrpc.generatedinterfaces.OSD.InternalGmax parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException { - Builder builder = newBuilder(); - if (builder.mergeDelimitedFrom(input)) { - return builder.buildParsed(); - } else { - return null; - } + return PARSER.parseDelimitedFrom(input); } public static org.xtreemfs.pbrpc.generatedinterfaces.OSD.InternalGmax parseDelimitedFrom( java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - Builder builder = newBuilder(); - if (builder.mergeDelimitedFrom(input, extensionRegistry)) { - return builder.buildParsed(); - } else { - return null; - } + return PARSER.parseDelimitedFrom(input, extensionRegistry); } public static org.xtreemfs.pbrpc.generatedinterfaces.OSD.InternalGmax parseFrom( com.google.protobuf.CodedInputStream input) throws java.io.IOException { - return newBuilder().mergeFrom(input).buildParsed(); + return PARSER.parseFrom(input); } public static org.xtreemfs.pbrpc.generatedinterfaces.OSD.InternalGmax parseFrom( com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - return newBuilder().mergeFrom(input, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(input, extensionRegistry); } - + public static Builder newBuilder() { return Builder.create(); } public Builder newBuilderForType() { return newBuilder(); } public static Builder newBuilder(org.xtreemfs.pbrpc.generatedinterfaces.OSD.InternalGmax prototype) { return newBuilder().mergeFrom(prototype); } public Builder toBuilder() { return newBuilder(this); } - + + @java.lang.Override + protected Builder newBuilderForType( + com.google.protobuf.GeneratedMessage.BuilderParent parent) { + Builder builder = new Builder(parent); + return builder; + } + /** + * Protobuf type {@code xtreemfs.pbrpc.InternalGmax} + * + *
+     * Message sent between OSDs when the size of a striped file changes.
+     * Optimization to reduce communication between servers for sparse files
+     * and to handle EOF.
+     * 
+ */ public static final class Builder extends - com.google.protobuf.GeneratedMessage.Builder { - private org.xtreemfs.pbrpc.generatedinterfaces.OSD.InternalGmax result; - + com.google.protobuf.GeneratedMessage.Builder + implements org.xtreemfs.pbrpc.generatedinterfaces.OSD.InternalGmaxOrBuilder { + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return org.xtreemfs.pbrpc.generatedinterfaces.OSD.internal_static_xtreemfs_pbrpc_InternalGmax_descriptor; + } + + protected com.google.protobuf.GeneratedMessage.FieldAccessorTable + internalGetFieldAccessorTable() { + return org.xtreemfs.pbrpc.generatedinterfaces.OSD.internal_static_xtreemfs_pbrpc_InternalGmax_fieldAccessorTable + .ensureFieldAccessorsInitialized( + org.xtreemfs.pbrpc.generatedinterfaces.OSD.InternalGmax.class, org.xtreemfs.pbrpc.generatedinterfaces.OSD.InternalGmax.Builder.class); + } + // Construct using org.xtreemfs.pbrpc.generatedinterfaces.OSD.InternalGmax.newBuilder() - private Builder() {} - - private static Builder create() { - Builder builder = new Builder(); - builder.result = new org.xtreemfs.pbrpc.generatedinterfaces.OSD.InternalGmax(); - return builder; + private Builder() { + maybeForceBuilderInitialization(); } - - protected org.xtreemfs.pbrpc.generatedinterfaces.OSD.InternalGmax internalGetResult() { - return result; + + private Builder( + com.google.protobuf.GeneratedMessage.BuilderParent parent) { + super(parent); + maybeForceBuilderInitialization(); } - - public Builder clear() { - if (result == null) { - throw new IllegalStateException( - "Cannot call clear() after build()."); + private void maybeForceBuilderInitialization() { + if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) { } - result = new org.xtreemfs.pbrpc.generatedinterfaces.OSD.InternalGmax(); + } + private static Builder create() { + return new Builder(); + } + + public Builder clear() { + super.clear(); + epoch_ = 0L; + bitField0_ = (bitField0_ & ~0x00000001); + fileSize_ = 0L; + bitField0_ = (bitField0_ & ~0x00000002); + lastObjectId_ = 0L; + bitField0_ = (bitField0_ & ~0x00000004); return this; } - + public Builder clone() { - return create().mergeFrom(result); + return create().mergeFrom(buildPartial()); } - + public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() { - return org.xtreemfs.pbrpc.generatedinterfaces.OSD.InternalGmax.getDescriptor(); + return org.xtreemfs.pbrpc.generatedinterfaces.OSD.internal_static_xtreemfs_pbrpc_InternalGmax_descriptor; } - + public org.xtreemfs.pbrpc.generatedinterfaces.OSD.InternalGmax getDefaultInstanceForType() { return org.xtreemfs.pbrpc.generatedinterfaces.OSD.InternalGmax.getDefaultInstance(); } - - public boolean isInitialized() { - return result.isInitialized(); - } + public org.xtreemfs.pbrpc.generatedinterfaces.OSD.InternalGmax build() { - if (result != null && !isInitialized()) { + org.xtreemfs.pbrpc.generatedinterfaces.OSD.InternalGmax result = buildPartial(); + if (!result.isInitialized()) { throw newUninitializedMessageException(result); } - return buildPartial(); - } - - private org.xtreemfs.pbrpc.generatedinterfaces.OSD.InternalGmax buildParsed() - throws com.google.protobuf.InvalidProtocolBufferException { - if (!isInitialized()) { - throw newUninitializedMessageException( - result).asInvalidProtocolBufferException(); - } - return buildPartial(); + return result; } - + public org.xtreemfs.pbrpc.generatedinterfaces.OSD.InternalGmax buildPartial() { - if (result == null) { - throw new IllegalStateException( - "build() has already been called on this Builder."); - } - org.xtreemfs.pbrpc.generatedinterfaces.OSD.InternalGmax returnMe = result; - result = null; - return returnMe; + org.xtreemfs.pbrpc.generatedinterfaces.OSD.InternalGmax result = new org.xtreemfs.pbrpc.generatedinterfaces.OSD.InternalGmax(this); + int from_bitField0_ = bitField0_; + int to_bitField0_ = 0; + if (((from_bitField0_ & 0x00000001) == 0x00000001)) { + to_bitField0_ |= 0x00000001; + } + result.epoch_ = epoch_; + if (((from_bitField0_ & 0x00000002) == 0x00000002)) { + to_bitField0_ |= 0x00000002; + } + result.fileSize_ = fileSize_; + if (((from_bitField0_ & 0x00000004) == 0x00000004)) { + to_bitField0_ |= 0x00000004; + } + result.lastObjectId_ = lastObjectId_; + result.bitField0_ = to_bitField0_; + onBuilt(); + return result; } - + public Builder mergeFrom(com.google.protobuf.Message other) { if (other instanceof org.xtreemfs.pbrpc.generatedinterfaces.OSD.InternalGmax) { return mergeFrom((org.xtreemfs.pbrpc.generatedinterfaces.OSD.InternalGmax)other); @@ -253,7 +441,7 @@ public final class OSD { return this; } } - + public Builder mergeFrom(org.xtreemfs.pbrpc.generatedinterfaces.OSD.InternalGmax other) { if (other == org.xtreemfs.pbrpc.generatedinterfaces.OSD.InternalGmax.getDefaultInstance()) return this; if (other.hasEpoch()) { @@ -268,378 +456,795 @@ public final class OSD { this.mergeUnknownFields(other.getUnknownFields()); return this; } - + + public final boolean isInitialized() { + if (!hasEpoch()) { + + return false; + } + if (!hasFileSize()) { + + return false; + } + if (!hasLastObjectId()) { + + return false; + } + return true; + } + public Builder mergeFrom( com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - com.google.protobuf.UnknownFieldSet.Builder unknownFields = - com.google.protobuf.UnknownFieldSet.newBuilder( - this.getUnknownFields()); - while (true) { - int tag = input.readTag(); - switch (tag) { - case 0: - this.setUnknownFields(unknownFields.build()); - return this; - default: { - if (!parseUnknownField(input, unknownFields, - extensionRegistry, tag)) { - this.setUnknownFields(unknownFields.build()); - return this; - } - break; - } - case 9: { - setEpoch(input.readFixed64()); - break; - } - case 17: { - setFileSize(input.readFixed64()); - break; - } - case 25: { - setLastObjectId(input.readFixed64()); - break; - } + org.xtreemfs.pbrpc.generatedinterfaces.OSD.InternalGmax parsedMessage = null; + try { + parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + parsedMessage = (org.xtreemfs.pbrpc.generatedinterfaces.OSD.InternalGmax) e.getUnfinishedMessage(); + throw e; + } finally { + if (parsedMessage != null) { + mergeFrom(parsedMessage); } } + return this; } - - + private int bitField0_; + // required fixed64 epoch = 1; + private long epoch_ ; + /** + * required fixed64 epoch = 1; + */ public boolean hasEpoch() { - return result.hasEpoch(); + return ((bitField0_ & 0x00000001) == 0x00000001); } + /** + * required fixed64 epoch = 1; + */ public long getEpoch() { - return result.getEpoch(); + return epoch_; } + /** + * required fixed64 epoch = 1; + */ public Builder setEpoch(long value) { - result.hasEpoch = true; - result.epoch_ = value; + bitField0_ |= 0x00000001; + epoch_ = value; + onChanged(); return this; } + /** + * required fixed64 epoch = 1; + */ public Builder clearEpoch() { - result.hasEpoch = false; - result.epoch_ = 0L; + bitField0_ = (bitField0_ & ~0x00000001); + epoch_ = 0L; + onChanged(); return this; } - + // required fixed64 file_size = 2; + private long fileSize_ ; + /** + * required fixed64 file_size = 2; + */ public boolean hasFileSize() { - return result.hasFileSize(); + return ((bitField0_ & 0x00000002) == 0x00000002); } + /** + * required fixed64 file_size = 2; + */ public long getFileSize() { - return result.getFileSize(); + return fileSize_; } + /** + * required fixed64 file_size = 2; + */ public Builder setFileSize(long value) { - result.hasFileSize = true; - result.fileSize_ = value; + bitField0_ |= 0x00000002; + fileSize_ = value; + onChanged(); return this; } + /** + * required fixed64 file_size = 2; + */ public Builder clearFileSize() { - result.hasFileSize = false; - result.fileSize_ = 0L; + bitField0_ = (bitField0_ & ~0x00000002); + fileSize_ = 0L; + onChanged(); return this; } - + // required fixed64 last_object_id = 3; + private long lastObjectId_ ; + /** + * required fixed64 last_object_id = 3; + */ public boolean hasLastObjectId() { - return result.hasLastObjectId(); + return ((bitField0_ & 0x00000004) == 0x00000004); } + /** + * required fixed64 last_object_id = 3; + */ public long getLastObjectId() { - return result.getLastObjectId(); + return lastObjectId_; } + /** + * required fixed64 last_object_id = 3; + */ public Builder setLastObjectId(long value) { - result.hasLastObjectId = true; - result.lastObjectId_ = value; + bitField0_ |= 0x00000004; + lastObjectId_ = value; + onChanged(); return this; } + /** + * required fixed64 last_object_id = 3; + */ public Builder clearLastObjectId() { - result.hasLastObjectId = false; - result.lastObjectId_ = 0L; + bitField0_ = (bitField0_ & ~0x00000004); + lastObjectId_ = 0L; + onChanged(); return this; } - + // @@protoc_insertion_point(builder_scope:xtreemfs.pbrpc.InternalGmax) } - + static { defaultInstance = new InternalGmax(true); - org.xtreemfs.pbrpc.generatedinterfaces.OSD.internalForceInit(); defaultInstance.initFields(); } - + // @@protoc_insertion_point(class_scope:xtreemfs.pbrpc.InternalGmax) } - + + public interface LockOrBuilder + extends com.google.protobuf.MessageOrBuilder { + + // required fixed32 client_pid = 1; + /** + * required fixed32 client_pid = 1; + * + *
+     * Process ID, must be unique per client,
+     * i.e. client_pid+uuid must be globally unique.
+     * 
+ */ + boolean hasClientPid(); + /** + * required fixed32 client_pid = 1; + * + *
+     * Process ID, must be unique per client,
+     * i.e. client_pid+uuid must be globally unique.
+     * 
+ */ + int getClientPid(); + + // required string client_uuid = 2; + /** + * required string client_uuid = 2; + * + *
+     * UUID for client, can be temporary.
+     * 
+ */ + boolean hasClientUuid(); + /** + * required string client_uuid = 2; + * + *
+     * UUID for client, can be temporary.
+     * 
+ */ + java.lang.String getClientUuid(); + /** + * required string client_uuid = 2; + * + *
+     * UUID for client, can be temporary.
+     * 
+ */ + com.google.protobuf.ByteString + getClientUuidBytes(); + + // required fixed64 length = 3; + /** + * required fixed64 length = 3; + * + *
+     * Length of byte range for the lock.
+     * 
+ */ + boolean hasLength(); + /** + * required fixed64 length = 3; + * + *
+     * Length of byte range for the lock.
+     * 
+ */ + long getLength(); + + // required fixed64 offset = 4; + /** + * required fixed64 offset = 4; + * + *
+     * Offset of the locked byte range.
+     * 
+ */ + boolean hasOffset(); + /** + * required fixed64 offset = 4; + * + *
+     * Offset of the locked byte range.
+     * 
+ */ + long getOffset(); + + // required bool exclusive = 5; + /** + * required bool exclusive = 5; + * + *
+     * If true, lock is exclusive.
+     * 
+ */ + boolean hasExclusive(); + /** + * required bool exclusive = 5; + * + *
+     * If true, lock is exclusive.
+     * 
+ */ + boolean getExclusive(); + } + /** + * Protobuf type {@code xtreemfs.pbrpc.Lock} + * + *
+   * POSIX file lock.
+   * 
+ */ public static final class Lock extends - com.google.protobuf.GeneratedMessage { + com.google.protobuf.GeneratedMessage + implements LockOrBuilder { // Use Lock.newBuilder() to construct. - private Lock() { - initFields(); + private Lock(com.google.protobuf.GeneratedMessage.Builder builder) { + super(builder); + this.unknownFields = builder.getUnknownFields(); } - private Lock(boolean noInit) {} - + private Lock(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); } + private static final Lock defaultInstance; public static Lock getDefaultInstance() { return defaultInstance; } - + public Lock getDefaultInstanceForType() { return defaultInstance; } - + + private final com.google.protobuf.UnknownFieldSet unknownFields; + @java.lang.Override + public final com.google.protobuf.UnknownFieldSet + getUnknownFields() { + return this.unknownFields; + } + private Lock( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + initFields(); + int mutable_bitField0_ = 0; + com.google.protobuf.UnknownFieldSet.Builder unknownFields = + com.google.protobuf.UnknownFieldSet.newBuilder(); + try { + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch (tag) { + case 0: + done = true; + break; + default: { + if (!parseUnknownField(input, unknownFields, + extensionRegistry, tag)) { + done = true; + } + break; + } + case 13: { + bitField0_ |= 0x00000001; + clientPid_ = input.readFixed32(); + break; + } + case 18: { + bitField0_ |= 0x00000002; + clientUuid_ = input.readBytes(); + break; + } + case 25: { + bitField0_ |= 0x00000004; + length_ = input.readFixed64(); + break; + } + case 33: { + bitField0_ |= 0x00000008; + offset_ = input.readFixed64(); + break; + } + case 40: { + bitField0_ |= 0x00000010; + exclusive_ = input.readBool(); + break; + } + } + } + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(this); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException( + e.getMessage()).setUnfinishedMessage(this); + } finally { + this.unknownFields = unknownFields.build(); + makeExtensionsImmutable(); + } + } public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { return org.xtreemfs.pbrpc.generatedinterfaces.OSD.internal_static_xtreemfs_pbrpc_Lock_descriptor; } - + protected com.google.protobuf.GeneratedMessage.FieldAccessorTable internalGetFieldAccessorTable() { - return org.xtreemfs.pbrpc.generatedinterfaces.OSD.internal_static_xtreemfs_pbrpc_Lock_fieldAccessorTable; + return org.xtreemfs.pbrpc.generatedinterfaces.OSD.internal_static_xtreemfs_pbrpc_Lock_fieldAccessorTable + .ensureFieldAccessorsInitialized( + org.xtreemfs.pbrpc.generatedinterfaces.OSD.Lock.class, org.xtreemfs.pbrpc.generatedinterfaces.OSD.Lock.Builder.class); + } + + public static com.google.protobuf.Parser PARSER = + new com.google.protobuf.AbstractParser() { + public Lock parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return new Lock(input, extensionRegistry); + } + }; + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; } - + + private int bitField0_; // required fixed32 client_pid = 1; public static final int CLIENT_PID_FIELD_NUMBER = 1; - private boolean hasClientPid; - private int clientPid_ = 0; - public boolean hasClientPid() { return hasClientPid; } - public int getClientPid() { return clientPid_; } - + private int clientPid_; + /** + * required fixed32 client_pid = 1; + * + *
+     * Process ID, must be unique per client,
+     * i.e. client_pid+uuid must be globally unique.
+     * 
+ */ + public boolean hasClientPid() { + return ((bitField0_ & 0x00000001) == 0x00000001); + } + /** + * required fixed32 client_pid = 1; + * + *
+     * Process ID, must be unique per client,
+     * i.e. client_pid+uuid must be globally unique.
+     * 
+ */ + public int getClientPid() { + return clientPid_; + } + // required string client_uuid = 2; public static final int CLIENT_UUID_FIELD_NUMBER = 2; - private boolean hasClientUuid; - private java.lang.String clientUuid_ = ""; - public boolean hasClientUuid() { return hasClientUuid; } - public java.lang.String getClientUuid() { return clientUuid_; } - + private java.lang.Object clientUuid_; + /** + * required string client_uuid = 2; + * + *
+     * UUID for client, can be temporary.
+     * 
+ */ + public boolean hasClientUuid() { + return ((bitField0_ & 0x00000002) == 0x00000002); + } + /** + * required string client_uuid = 2; + * + *
+     * UUID for client, can be temporary.
+     * 
+ */ + public java.lang.String getClientUuid() { + java.lang.Object ref = clientUuid_; + if (ref instanceof java.lang.String) { + return (java.lang.String) ref; + } else { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + if (bs.isValidUtf8()) { + clientUuid_ = s; + } + return s; + } + } + /** + * required string client_uuid = 2; + * + *
+     * UUID for client, can be temporary.
+     * 
+ */ + public com.google.protobuf.ByteString + getClientUuidBytes() { + java.lang.Object ref = clientUuid_; + if (ref instanceof java.lang.String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + clientUuid_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + // required fixed64 length = 3; public static final int LENGTH_FIELD_NUMBER = 3; - private boolean hasLength; - private long length_ = 0L; - public boolean hasLength() { return hasLength; } - public long getLength() { return length_; } - + private long length_; + /** + * required fixed64 length = 3; + * + *
+     * Length of byte range for the lock.
+     * 
+ */ + public boolean hasLength() { + return ((bitField0_ & 0x00000004) == 0x00000004); + } + /** + * required fixed64 length = 3; + * + *
+     * Length of byte range for the lock.
+     * 
+ */ + public long getLength() { + return length_; + } + // required fixed64 offset = 4; public static final int OFFSET_FIELD_NUMBER = 4; - private boolean hasOffset; - private long offset_ = 0L; - public boolean hasOffset() { return hasOffset; } - public long getOffset() { return offset_; } - + private long offset_; + /** + * required fixed64 offset = 4; + * + *
+     * Offset of the locked byte range.
+     * 
+ */ + public boolean hasOffset() { + return ((bitField0_ & 0x00000008) == 0x00000008); + } + /** + * required fixed64 offset = 4; + * + *
+     * Offset of the locked byte range.
+     * 
+ */ + public long getOffset() { + return offset_; + } + // required bool exclusive = 5; public static final int EXCLUSIVE_FIELD_NUMBER = 5; - private boolean hasExclusive; - private boolean exclusive_ = false; - public boolean hasExclusive() { return hasExclusive; } - public boolean getExclusive() { return exclusive_; } - + private boolean exclusive_; + /** + * required bool exclusive = 5; + * + *
+     * If true, lock is exclusive.
+     * 
+ */ + public boolean hasExclusive() { + return ((bitField0_ & 0x00000010) == 0x00000010); + } + /** + * required bool exclusive = 5; + * + *
+     * If true, lock is exclusive.
+     * 
+ */ + public boolean getExclusive() { + return exclusive_; + } + private void initFields() { + clientPid_ = 0; + clientUuid_ = ""; + length_ = 0L; + offset_ = 0L; + exclusive_ = false; } + private byte memoizedIsInitialized = -1; public final boolean isInitialized() { - if (!hasClientPid) return false; - if (!hasClientUuid) return false; - if (!hasLength) return false; - if (!hasOffset) return false; - if (!hasExclusive) return false; + byte isInitialized = memoizedIsInitialized; + if (isInitialized != -1) return isInitialized == 1; + + if (!hasClientPid()) { + memoizedIsInitialized = 0; + return false; + } + if (!hasClientUuid()) { + memoizedIsInitialized = 0; + return false; + } + if (!hasLength()) { + memoizedIsInitialized = 0; + return false; + } + if (!hasOffset()) { + memoizedIsInitialized = 0; + return false; + } + if (!hasExclusive()) { + memoizedIsInitialized = 0; + return false; + } + memoizedIsInitialized = 1; return true; } - + public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException { getSerializedSize(); - if (hasClientPid()) { - output.writeFixed32(1, getClientPid()); + if (((bitField0_ & 0x00000001) == 0x00000001)) { + output.writeFixed32(1, clientPid_); } - if (hasClientUuid()) { - output.writeString(2, getClientUuid()); + if (((bitField0_ & 0x00000002) == 0x00000002)) { + output.writeBytes(2, getClientUuidBytes()); } - if (hasLength()) { - output.writeFixed64(3, getLength()); + if (((bitField0_ & 0x00000004) == 0x00000004)) { + output.writeFixed64(3, length_); } - if (hasOffset()) { - output.writeFixed64(4, getOffset()); + if (((bitField0_ & 0x00000008) == 0x00000008)) { + output.writeFixed64(4, offset_); } - if (hasExclusive()) { - output.writeBool(5, getExclusive()); + if (((bitField0_ & 0x00000010) == 0x00000010)) { + output.writeBool(5, exclusive_); } getUnknownFields().writeTo(output); } - + private int memoizedSerializedSize = -1; public int getSerializedSize() { int size = memoizedSerializedSize; if (size != -1) return size; - + size = 0; - if (hasClientPid()) { + if (((bitField0_ & 0x00000001) == 0x00000001)) { size += com.google.protobuf.CodedOutputStream - .computeFixed32Size(1, getClientPid()); + .computeFixed32Size(1, clientPid_); } - if (hasClientUuid()) { + if (((bitField0_ & 0x00000002) == 0x00000002)) { size += com.google.protobuf.CodedOutputStream - .computeStringSize(2, getClientUuid()); + .computeBytesSize(2, getClientUuidBytes()); } - if (hasLength()) { + if (((bitField0_ & 0x00000004) == 0x00000004)) { size += com.google.protobuf.CodedOutputStream - .computeFixed64Size(3, getLength()); + .computeFixed64Size(3, length_); } - if (hasOffset()) { + if (((bitField0_ & 0x00000008) == 0x00000008)) { size += com.google.protobuf.CodedOutputStream - .computeFixed64Size(4, getOffset()); + .computeFixed64Size(4, offset_); } - if (hasExclusive()) { + if (((bitField0_ & 0x00000010) == 0x00000010)) { size += com.google.protobuf.CodedOutputStream - .computeBoolSize(5, getExclusive()); + .computeBoolSize(5, exclusive_); } size += getUnknownFields().getSerializedSize(); memoizedSerializedSize = size; return size; } - + + private static final long serialVersionUID = 0L; + @java.lang.Override + protected java.lang.Object writeReplace() + throws java.io.ObjectStreamException { + return super.writeReplace(); + } + public static org.xtreemfs.pbrpc.generatedinterfaces.OSD.Lock parseFrom( com.google.protobuf.ByteString data) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data).buildParsed(); + return PARSER.parseFrom(data); } public static org.xtreemfs.pbrpc.generatedinterfaces.OSD.Lock parseFrom( com.google.protobuf.ByteString data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(data, extensionRegistry); } public static org.xtreemfs.pbrpc.generatedinterfaces.OSD.Lock parseFrom(byte[] data) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data).buildParsed(); + return PARSER.parseFrom(data); } public static org.xtreemfs.pbrpc.generatedinterfaces.OSD.Lock parseFrom( byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(data, extensionRegistry); } public static org.xtreemfs.pbrpc.generatedinterfaces.OSD.Lock parseFrom(java.io.InputStream input) throws java.io.IOException { - return newBuilder().mergeFrom(input).buildParsed(); + return PARSER.parseFrom(input); } public static org.xtreemfs.pbrpc.generatedinterfaces.OSD.Lock parseFrom( java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - return newBuilder().mergeFrom(input, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(input, extensionRegistry); } public static org.xtreemfs.pbrpc.generatedinterfaces.OSD.Lock parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException { - Builder builder = newBuilder(); - if (builder.mergeDelimitedFrom(input)) { - return builder.buildParsed(); - } else { - return null; - } + return PARSER.parseDelimitedFrom(input); } public static org.xtreemfs.pbrpc.generatedinterfaces.OSD.Lock parseDelimitedFrom( java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - Builder builder = newBuilder(); - if (builder.mergeDelimitedFrom(input, extensionRegistry)) { - return builder.buildParsed(); - } else { - return null; - } + return PARSER.parseDelimitedFrom(input, extensionRegistry); } public static org.xtreemfs.pbrpc.generatedinterfaces.OSD.Lock parseFrom( com.google.protobuf.CodedInputStream input) throws java.io.IOException { - return newBuilder().mergeFrom(input).buildParsed(); + return PARSER.parseFrom(input); } public static org.xtreemfs.pbrpc.generatedinterfaces.OSD.Lock parseFrom( com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - return newBuilder().mergeFrom(input, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(input, extensionRegistry); } - + public static Builder newBuilder() { return Builder.create(); } public Builder newBuilderForType() { return newBuilder(); } public static Builder newBuilder(org.xtreemfs.pbrpc.generatedinterfaces.OSD.Lock prototype) { return newBuilder().mergeFrom(prototype); } public Builder toBuilder() { return newBuilder(this); } - + + @java.lang.Override + protected Builder newBuilderForType( + com.google.protobuf.GeneratedMessage.BuilderParent parent) { + Builder builder = new Builder(parent); + return builder; + } + /** + * Protobuf type {@code xtreemfs.pbrpc.Lock} + * + *
+     * POSIX file lock.
+     * 
+ */ public static final class Builder extends - com.google.protobuf.GeneratedMessage.Builder { - private org.xtreemfs.pbrpc.generatedinterfaces.OSD.Lock result; - + com.google.protobuf.GeneratedMessage.Builder + implements org.xtreemfs.pbrpc.generatedinterfaces.OSD.LockOrBuilder { + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return org.xtreemfs.pbrpc.generatedinterfaces.OSD.internal_static_xtreemfs_pbrpc_Lock_descriptor; + } + + protected com.google.protobuf.GeneratedMessage.FieldAccessorTable + internalGetFieldAccessorTable() { + return org.xtreemfs.pbrpc.generatedinterfaces.OSD.internal_static_xtreemfs_pbrpc_Lock_fieldAccessorTable + .ensureFieldAccessorsInitialized( + org.xtreemfs.pbrpc.generatedinterfaces.OSD.Lock.class, org.xtreemfs.pbrpc.generatedinterfaces.OSD.Lock.Builder.class); + } + // Construct using org.xtreemfs.pbrpc.generatedinterfaces.OSD.Lock.newBuilder() - private Builder() {} - - private static Builder create() { - Builder builder = new Builder(); - builder.result = new org.xtreemfs.pbrpc.generatedinterfaces.OSD.Lock(); - return builder; + private Builder() { + maybeForceBuilderInitialization(); } - - protected org.xtreemfs.pbrpc.generatedinterfaces.OSD.Lock internalGetResult() { - return result; + + private Builder( + com.google.protobuf.GeneratedMessage.BuilderParent parent) { + super(parent); + maybeForceBuilderInitialization(); } - - public Builder clear() { - if (result == null) { - throw new IllegalStateException( - "Cannot call clear() after build()."); + private void maybeForceBuilderInitialization() { + if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) { } - result = new org.xtreemfs.pbrpc.generatedinterfaces.OSD.Lock(); + } + private static Builder create() { + return new Builder(); + } + + public Builder clear() { + super.clear(); + clientPid_ = 0; + bitField0_ = (bitField0_ & ~0x00000001); + clientUuid_ = ""; + bitField0_ = (bitField0_ & ~0x00000002); + length_ = 0L; + bitField0_ = (bitField0_ & ~0x00000004); + offset_ = 0L; + bitField0_ = (bitField0_ & ~0x00000008); + exclusive_ = false; + bitField0_ = (bitField0_ & ~0x00000010); return this; } - + public Builder clone() { - return create().mergeFrom(result); + return create().mergeFrom(buildPartial()); } - + public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() { - return org.xtreemfs.pbrpc.generatedinterfaces.OSD.Lock.getDescriptor(); + return org.xtreemfs.pbrpc.generatedinterfaces.OSD.internal_static_xtreemfs_pbrpc_Lock_descriptor; } - + public org.xtreemfs.pbrpc.generatedinterfaces.OSD.Lock getDefaultInstanceForType() { return org.xtreemfs.pbrpc.generatedinterfaces.OSD.Lock.getDefaultInstance(); } - - public boolean isInitialized() { - return result.isInitialized(); - } + public org.xtreemfs.pbrpc.generatedinterfaces.OSD.Lock build() { - if (result != null && !isInitialized()) { + org.xtreemfs.pbrpc.generatedinterfaces.OSD.Lock result = buildPartial(); + if (!result.isInitialized()) { throw newUninitializedMessageException(result); } - return buildPartial(); - } - - private org.xtreemfs.pbrpc.generatedinterfaces.OSD.Lock buildParsed() - throws com.google.protobuf.InvalidProtocolBufferException { - if (!isInitialized()) { - throw newUninitializedMessageException( - result).asInvalidProtocolBufferException(); - } - return buildPartial(); + return result; } - + public org.xtreemfs.pbrpc.generatedinterfaces.OSD.Lock buildPartial() { - if (result == null) { - throw new IllegalStateException( - "build() has already been called on this Builder."); - } - org.xtreemfs.pbrpc.generatedinterfaces.OSD.Lock returnMe = result; - result = null; - return returnMe; + org.xtreemfs.pbrpc.generatedinterfaces.OSD.Lock result = new org.xtreemfs.pbrpc.generatedinterfaces.OSD.Lock(this); + int from_bitField0_ = bitField0_; + int to_bitField0_ = 0; + if (((from_bitField0_ & 0x00000001) == 0x00000001)) { + to_bitField0_ |= 0x00000001; + } + result.clientPid_ = clientPid_; + if (((from_bitField0_ & 0x00000002) == 0x00000002)) { + to_bitField0_ |= 0x00000002; + } + result.clientUuid_ = clientUuid_; + if (((from_bitField0_ & 0x00000004) == 0x00000004)) { + to_bitField0_ |= 0x00000004; + } + result.length_ = length_; + if (((from_bitField0_ & 0x00000008) == 0x00000008)) { + to_bitField0_ |= 0x00000008; + } + result.offset_ = offset_; + if (((from_bitField0_ & 0x00000010) == 0x00000010)) { + to_bitField0_ |= 0x00000010; + } + result.exclusive_ = exclusive_; + result.bitField0_ = to_bitField0_; + onBuilt(); + return result; } - + public Builder mergeFrom(com.google.protobuf.Message other) { if (other instanceof org.xtreemfs.pbrpc.generatedinterfaces.OSD.Lock) { return mergeFrom((org.xtreemfs.pbrpc.generatedinterfaces.OSD.Lock)other); @@ -648,14 +1253,16 @@ public final class OSD { return this; } } - + public Builder mergeFrom(org.xtreemfs.pbrpc.generatedinterfaces.OSD.Lock other) { if (other == org.xtreemfs.pbrpc.generatedinterfaces.OSD.Lock.getDefaultInstance()) return this; if (other.hasClientPid()) { setClientPid(other.getClientPid()); } if (other.hasClientUuid()) { - setClientUuid(other.getClientUuid()); + bitField0_ |= 0x00000002; + clientUuid_ = other.clientUuid_; + onChanged(); } if (other.hasLength()) { setLength(other.getLength()); @@ -669,395 +1276,842 @@ public final class OSD { this.mergeUnknownFields(other.getUnknownFields()); return this; } - + + public final boolean isInitialized() { + if (!hasClientPid()) { + + return false; + } + if (!hasClientUuid()) { + + return false; + } + if (!hasLength()) { + + return false; + } + if (!hasOffset()) { + + return false; + } + if (!hasExclusive()) { + + return false; + } + return true; + } + public Builder mergeFrom( com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - com.google.protobuf.UnknownFieldSet.Builder unknownFields = - com.google.protobuf.UnknownFieldSet.newBuilder( - this.getUnknownFields()); - while (true) { - int tag = input.readTag(); - switch (tag) { - case 0: - this.setUnknownFields(unknownFields.build()); - return this; - default: { - if (!parseUnknownField(input, unknownFields, - extensionRegistry, tag)) { - this.setUnknownFields(unknownFields.build()); - return this; - } - break; - } - case 13: { - setClientPid(input.readFixed32()); - break; - } - case 18: { - setClientUuid(input.readString()); - break; - } - case 25: { - setLength(input.readFixed64()); - break; - } - case 33: { - setOffset(input.readFixed64()); - break; - } - case 40: { - setExclusive(input.readBool()); - break; - } + org.xtreemfs.pbrpc.generatedinterfaces.OSD.Lock parsedMessage = null; + try { + parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + parsedMessage = (org.xtreemfs.pbrpc.generatedinterfaces.OSD.Lock) e.getUnfinishedMessage(); + throw e; + } finally { + if (parsedMessage != null) { + mergeFrom(parsedMessage); } } + return this; } - - + private int bitField0_; + // required fixed32 client_pid = 1; + private int clientPid_ ; + /** + * required fixed32 client_pid = 1; + * + *
+       * Process ID, must be unique per client,
+       * i.e. client_pid+uuid must be globally unique.
+       * 
+ */ public boolean hasClientPid() { - return result.hasClientPid(); - } + return ((bitField0_ & 0x00000001) == 0x00000001); + } + /** + * required fixed32 client_pid = 1; + * + *
+       * Process ID, must be unique per client,
+       * i.e. client_pid+uuid must be globally unique.
+       * 
+ */ public int getClientPid() { - return result.getClientPid(); - } + return clientPid_; + } + /** + * required fixed32 client_pid = 1; + * + *
+       * Process ID, must be unique per client,
+       * i.e. client_pid+uuid must be globally unique.
+       * 
+ */ public Builder setClientPid(int value) { - result.hasClientPid = true; - result.clientPid_ = value; - return this; - } + bitField0_ |= 0x00000001; + clientPid_ = value; + onChanged(); + return this; + } + /** + * required fixed32 client_pid = 1; + * + *
+       * Process ID, must be unique per client,
+       * i.e. client_pid+uuid must be globally unique.
+       * 
+ */ public Builder clearClientPid() { - result.hasClientPid = false; - result.clientPid_ = 0; + bitField0_ = (bitField0_ & ~0x00000001); + clientPid_ = 0; + onChanged(); return this; } - + // required string client_uuid = 2; + private java.lang.Object clientUuid_ = ""; + /** + * required string client_uuid = 2; + * + *
+       * UUID for client, can be temporary.
+       * 
+ */ public boolean hasClientUuid() { - return result.hasClientUuid(); - } + return ((bitField0_ & 0x00000002) == 0x00000002); + } + /** + * required string client_uuid = 2; + * + *
+       * UUID for client, can be temporary.
+       * 
+ */ public java.lang.String getClientUuid() { - return result.getClientUuid(); - } - public Builder setClientUuid(java.lang.String value) { + java.lang.Object ref = clientUuid_; + if (!(ref instanceof java.lang.String)) { + java.lang.String s = ((com.google.protobuf.ByteString) ref) + .toStringUtf8(); + clientUuid_ = s; + return s; + } else { + return (java.lang.String) ref; + } + } + /** + * required string client_uuid = 2; + * + *
+       * UUID for client, can be temporary.
+       * 
+ */ + public com.google.protobuf.ByteString + getClientUuidBytes() { + java.lang.Object ref = clientUuid_; + if (ref instanceof String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + clientUuid_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + /** + * required string client_uuid = 2; + * + *
+       * UUID for client, can be temporary.
+       * 
+ */ + public Builder setClientUuid( + java.lang.String value) { if (value == null) { throw new NullPointerException(); } - result.hasClientUuid = true; - result.clientUuid_ = value; - return this; - } + bitField0_ |= 0x00000002; + clientUuid_ = value; + onChanged(); + return this; + } + /** + * required string client_uuid = 2; + * + *
+       * UUID for client, can be temporary.
+       * 
+ */ public Builder clearClientUuid() { - result.hasClientUuid = false; - result.clientUuid_ = getDefaultInstance().getClientUuid(); + bitField0_ = (bitField0_ & ~0x00000002); + clientUuid_ = getDefaultInstance().getClientUuid(); + onChanged(); + return this; + } + /** + * required string client_uuid = 2; + * + *
+       * UUID for client, can be temporary.
+       * 
+ */ + public Builder setClientUuidBytes( + com.google.protobuf.ByteString value) { + if (value == null) { + throw new NullPointerException(); + } + bitField0_ |= 0x00000002; + clientUuid_ = value; + onChanged(); return this; } - + // required fixed64 length = 3; + private long length_ ; + /** + * required fixed64 length = 3; + * + *
+       * Length of byte range for the lock.
+       * 
+ */ public boolean hasLength() { - return result.hasLength(); - } + return ((bitField0_ & 0x00000004) == 0x00000004); + } + /** + * required fixed64 length = 3; + * + *
+       * Length of byte range for the lock.
+       * 
+ */ public long getLength() { - return result.getLength(); - } + return length_; + } + /** + * required fixed64 length = 3; + * + *
+       * Length of byte range for the lock.
+       * 
+ */ public Builder setLength(long value) { - result.hasLength = true; - result.length_ = value; - return this; - } + bitField0_ |= 0x00000004; + length_ = value; + onChanged(); + return this; + } + /** + * required fixed64 length = 3; + * + *
+       * Length of byte range for the lock.
+       * 
+ */ public Builder clearLength() { - result.hasLength = false; - result.length_ = 0L; + bitField0_ = (bitField0_ & ~0x00000004); + length_ = 0L; + onChanged(); return this; } - + // required fixed64 offset = 4; + private long offset_ ; + /** + * required fixed64 offset = 4; + * + *
+       * Offset of the locked byte range.
+       * 
+ */ public boolean hasOffset() { - return result.hasOffset(); - } + return ((bitField0_ & 0x00000008) == 0x00000008); + } + /** + * required fixed64 offset = 4; + * + *
+       * Offset of the locked byte range.
+       * 
+ */ public long getOffset() { - return result.getOffset(); - } + return offset_; + } + /** + * required fixed64 offset = 4; + * + *
+       * Offset of the locked byte range.
+       * 
+ */ public Builder setOffset(long value) { - result.hasOffset = true; - result.offset_ = value; - return this; - } + bitField0_ |= 0x00000008; + offset_ = value; + onChanged(); + return this; + } + /** + * required fixed64 offset = 4; + * + *
+       * Offset of the locked byte range.
+       * 
+ */ public Builder clearOffset() { - result.hasOffset = false; - result.offset_ = 0L; + bitField0_ = (bitField0_ & ~0x00000008); + offset_ = 0L; + onChanged(); return this; } - + // required bool exclusive = 5; + private boolean exclusive_ ; + /** + * required bool exclusive = 5; + * + *
+       * If true, lock is exclusive.
+       * 
+ */ public boolean hasExclusive() { - return result.hasExclusive(); - } + return ((bitField0_ & 0x00000010) == 0x00000010); + } + /** + * required bool exclusive = 5; + * + *
+       * If true, lock is exclusive.
+       * 
+ */ public boolean getExclusive() { - return result.getExclusive(); - } + return exclusive_; + } + /** + * required bool exclusive = 5; + * + *
+       * If true, lock is exclusive.
+       * 
+ */ public Builder setExclusive(boolean value) { - result.hasExclusive = true; - result.exclusive_ = value; - return this; - } + bitField0_ |= 0x00000010; + exclusive_ = value; + onChanged(); + return this; + } + /** + * required bool exclusive = 5; + * + *
+       * If true, lock is exclusive.
+       * 
+ */ public Builder clearExclusive() { - result.hasExclusive = false; - result.exclusive_ = false; + bitField0_ = (bitField0_ & ~0x00000010); + exclusive_ = false; + onChanged(); return this; } - + // @@protoc_insertion_point(builder_scope:xtreemfs.pbrpc.Lock) } - + static { defaultInstance = new Lock(true); - org.xtreemfs.pbrpc.generatedinterfaces.OSD.internalForceInit(); defaultInstance.initFields(); } - + // @@protoc_insertion_point(class_scope:xtreemfs.pbrpc.Lock) } - + + public interface ObjectDataOrBuilder + extends com.google.protobuf.MessageOrBuilder { + + // required fixed32 checksum = 1; + /** + * required fixed32 checksum = 1; + * + *
+     * Data checksum (Adler32), if checksums are enabled.
+     * 
+ */ + boolean hasChecksum(); + /** + * required fixed32 checksum = 1; + * + *
+     * Data checksum (Adler32), if checksums are enabled.
+     * 
+ */ + int getChecksum(); + + // required bool invalid_checksum_on_osd = 2; + /** + * required bool invalid_checksum_on_osd = 2; + * + *
+     * True, if the checksum doesn't match the data on the OSD.
+     * 
+ */ + boolean hasInvalidChecksumOnOsd(); + /** + * required bool invalid_checksum_on_osd = 2; + * + *
+     * True, if the checksum doesn't match the data on the OSD.
+     * 
+ */ + boolean getInvalidChecksumOnOsd(); + + // required fixed32 zero_padding = 3; + /** + * required fixed32 zero_padding = 3; + * + *
+     * Number of zeros the client must append to data before delivering
+     * data to an application (for sparse files).
+     * When returned by the xtreemfs_check_object method
+     * it stores the total number of bytes(data + sparse data)
+     * 
+ */ + boolean hasZeroPadding(); + /** + * required fixed32 zero_padding = 3; + * + *
+     * Number of zeros the client must append to data before delivering
+     * data to an application (for sparse files).
+     * When returned by the xtreemfs_check_object method
+     * it stores the total number of bytes(data + sparse data)
+     * 
+ */ + int getZeroPadding(); + } + /** + * Protobuf type {@code xtreemfs.pbrpc.ObjectData} + * + *
+   * Contains details on object data which is now sent in
+   * the data fragment of the RPC protocol.
+   * 
+ */ public static final class ObjectData extends - com.google.protobuf.GeneratedMessage { + com.google.protobuf.GeneratedMessage + implements ObjectDataOrBuilder { // Use ObjectData.newBuilder() to construct. - private ObjectData() { - initFields(); + private ObjectData(com.google.protobuf.GeneratedMessage.Builder builder) { + super(builder); + this.unknownFields = builder.getUnknownFields(); } - private ObjectData(boolean noInit) {} - + private ObjectData(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); } + private static final ObjectData defaultInstance; public static ObjectData getDefaultInstance() { return defaultInstance; } - + public ObjectData getDefaultInstanceForType() { return defaultInstance; } - + + private final com.google.protobuf.UnknownFieldSet unknownFields; + @java.lang.Override + public final com.google.protobuf.UnknownFieldSet + getUnknownFields() { + return this.unknownFields; + } + private ObjectData( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + initFields(); + int mutable_bitField0_ = 0; + com.google.protobuf.UnknownFieldSet.Builder unknownFields = + com.google.protobuf.UnknownFieldSet.newBuilder(); + try { + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch (tag) { + case 0: + done = true; + break; + default: { + if (!parseUnknownField(input, unknownFields, + extensionRegistry, tag)) { + done = true; + } + break; + } + case 13: { + bitField0_ |= 0x00000001; + checksum_ = input.readFixed32(); + break; + } + case 16: { + bitField0_ |= 0x00000002; + invalidChecksumOnOsd_ = input.readBool(); + break; + } + case 29: { + bitField0_ |= 0x00000004; + zeroPadding_ = input.readFixed32(); + break; + } + } + } + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(this); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException( + e.getMessage()).setUnfinishedMessage(this); + } finally { + this.unknownFields = unknownFields.build(); + makeExtensionsImmutable(); + } + } public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { return org.xtreemfs.pbrpc.generatedinterfaces.OSD.internal_static_xtreemfs_pbrpc_ObjectData_descriptor; } - + protected com.google.protobuf.GeneratedMessage.FieldAccessorTable internalGetFieldAccessorTable() { - return org.xtreemfs.pbrpc.generatedinterfaces.OSD.internal_static_xtreemfs_pbrpc_ObjectData_fieldAccessorTable; + return org.xtreemfs.pbrpc.generatedinterfaces.OSD.internal_static_xtreemfs_pbrpc_ObjectData_fieldAccessorTable + .ensureFieldAccessorsInitialized( + org.xtreemfs.pbrpc.generatedinterfaces.OSD.ObjectData.class, org.xtreemfs.pbrpc.generatedinterfaces.OSD.ObjectData.Builder.class); + } + + public static com.google.protobuf.Parser PARSER = + new com.google.protobuf.AbstractParser() { + public ObjectData parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return new ObjectData(input, extensionRegistry); + } + }; + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; } - + + private int bitField0_; // required fixed32 checksum = 1; public static final int CHECKSUM_FIELD_NUMBER = 1; - private boolean hasChecksum; - private int checksum_ = 0; - public boolean hasChecksum() { return hasChecksum; } - public int getChecksum() { return checksum_; } - + private int checksum_; + /** + * required fixed32 checksum = 1; + * + *
+     * Data checksum (Adler32), if checksums are enabled.
+     * 
+ */ + public boolean hasChecksum() { + return ((bitField0_ & 0x00000001) == 0x00000001); + } + /** + * required fixed32 checksum = 1; + * + *
+     * Data checksum (Adler32), if checksums are enabled.
+     * 
+ */ + public int getChecksum() { + return checksum_; + } + // required bool invalid_checksum_on_osd = 2; public static final int INVALID_CHECKSUM_ON_OSD_FIELD_NUMBER = 2; - private boolean hasInvalidChecksumOnOsd; - private boolean invalidChecksumOnOsd_ = false; - public boolean hasInvalidChecksumOnOsd() { return hasInvalidChecksumOnOsd; } - public boolean getInvalidChecksumOnOsd() { return invalidChecksumOnOsd_; } - + private boolean invalidChecksumOnOsd_; + /** + * required bool invalid_checksum_on_osd = 2; + * + *
+     * True, if the checksum doesn't match the data on the OSD.
+     * 
+ */ + public boolean hasInvalidChecksumOnOsd() { + return ((bitField0_ & 0x00000002) == 0x00000002); + } + /** + * required bool invalid_checksum_on_osd = 2; + * + *
+     * True, if the checksum doesn't match the data on the OSD.
+     * 
+ */ + public boolean getInvalidChecksumOnOsd() { + return invalidChecksumOnOsd_; + } + // required fixed32 zero_padding = 3; public static final int ZERO_PADDING_FIELD_NUMBER = 3; - private boolean hasZeroPadding; - private int zeroPadding_ = 0; - public boolean hasZeroPadding() { return hasZeroPadding; } - public int getZeroPadding() { return zeroPadding_; } - + private int zeroPadding_; + /** + * required fixed32 zero_padding = 3; + * + *
+     * Number of zeros the client must append to data before delivering
+     * data to an application (for sparse files).
+     * When returned by the xtreemfs_check_object method
+     * it stores the total number of bytes(data + sparse data)
+     * 
+ */ + public boolean hasZeroPadding() { + return ((bitField0_ & 0x00000004) == 0x00000004); + } + /** + * required fixed32 zero_padding = 3; + * + *
+     * Number of zeros the client must append to data before delivering
+     * data to an application (for sparse files).
+     * When returned by the xtreemfs_check_object method
+     * it stores the total number of bytes(data + sparse data)
+     * 
+ */ + public int getZeroPadding() { + return zeroPadding_; + } + private void initFields() { + checksum_ = 0; + invalidChecksumOnOsd_ = false; + zeroPadding_ = 0; } + private byte memoizedIsInitialized = -1; public final boolean isInitialized() { - if (!hasChecksum) return false; - if (!hasInvalidChecksumOnOsd) return false; - if (!hasZeroPadding) return false; + byte isInitialized = memoizedIsInitialized; + if (isInitialized != -1) return isInitialized == 1; + + if (!hasChecksum()) { + memoizedIsInitialized = 0; + return false; + } + if (!hasInvalidChecksumOnOsd()) { + memoizedIsInitialized = 0; + return false; + } + if (!hasZeroPadding()) { + memoizedIsInitialized = 0; + return false; + } + memoizedIsInitialized = 1; return true; } - + public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException { getSerializedSize(); - if (hasChecksum()) { - output.writeFixed32(1, getChecksum()); + if (((bitField0_ & 0x00000001) == 0x00000001)) { + output.writeFixed32(1, checksum_); } - if (hasInvalidChecksumOnOsd()) { - output.writeBool(2, getInvalidChecksumOnOsd()); + if (((bitField0_ & 0x00000002) == 0x00000002)) { + output.writeBool(2, invalidChecksumOnOsd_); } - if (hasZeroPadding()) { - output.writeFixed32(3, getZeroPadding()); + if (((bitField0_ & 0x00000004) == 0x00000004)) { + output.writeFixed32(3, zeroPadding_); } getUnknownFields().writeTo(output); } - + private int memoizedSerializedSize = -1; public int getSerializedSize() { int size = memoizedSerializedSize; if (size != -1) return size; - + size = 0; - if (hasChecksum()) { + if (((bitField0_ & 0x00000001) == 0x00000001)) { size += com.google.protobuf.CodedOutputStream - .computeFixed32Size(1, getChecksum()); + .computeFixed32Size(1, checksum_); } - if (hasInvalidChecksumOnOsd()) { + if (((bitField0_ & 0x00000002) == 0x00000002)) { size += com.google.protobuf.CodedOutputStream - .computeBoolSize(2, getInvalidChecksumOnOsd()); + .computeBoolSize(2, invalidChecksumOnOsd_); } - if (hasZeroPadding()) { + if (((bitField0_ & 0x00000004) == 0x00000004)) { size += com.google.protobuf.CodedOutputStream - .computeFixed32Size(3, getZeroPadding()); + .computeFixed32Size(3, zeroPadding_); } size += getUnknownFields().getSerializedSize(); memoizedSerializedSize = size; return size; } - + + private static final long serialVersionUID = 0L; + @java.lang.Override + protected java.lang.Object writeReplace() + throws java.io.ObjectStreamException { + return super.writeReplace(); + } + public static org.xtreemfs.pbrpc.generatedinterfaces.OSD.ObjectData parseFrom( com.google.protobuf.ByteString data) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data).buildParsed(); + return PARSER.parseFrom(data); } public static org.xtreemfs.pbrpc.generatedinterfaces.OSD.ObjectData parseFrom( com.google.protobuf.ByteString data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(data, extensionRegistry); } public static org.xtreemfs.pbrpc.generatedinterfaces.OSD.ObjectData parseFrom(byte[] data) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data).buildParsed(); + return PARSER.parseFrom(data); } public static org.xtreemfs.pbrpc.generatedinterfaces.OSD.ObjectData parseFrom( byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(data, extensionRegistry); } public static org.xtreemfs.pbrpc.generatedinterfaces.OSD.ObjectData parseFrom(java.io.InputStream input) throws java.io.IOException { - return newBuilder().mergeFrom(input).buildParsed(); + return PARSER.parseFrom(input); } public static org.xtreemfs.pbrpc.generatedinterfaces.OSD.ObjectData parseFrom( java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - return newBuilder().mergeFrom(input, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(input, extensionRegistry); } public static org.xtreemfs.pbrpc.generatedinterfaces.OSD.ObjectData parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException { - Builder builder = newBuilder(); - if (builder.mergeDelimitedFrom(input)) { - return builder.buildParsed(); - } else { - return null; - } + return PARSER.parseDelimitedFrom(input); } public static org.xtreemfs.pbrpc.generatedinterfaces.OSD.ObjectData parseDelimitedFrom( java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - Builder builder = newBuilder(); - if (builder.mergeDelimitedFrom(input, extensionRegistry)) { - return builder.buildParsed(); - } else { - return null; - } + return PARSER.parseDelimitedFrom(input, extensionRegistry); } public static org.xtreemfs.pbrpc.generatedinterfaces.OSD.ObjectData parseFrom( com.google.protobuf.CodedInputStream input) throws java.io.IOException { - return newBuilder().mergeFrom(input).buildParsed(); + return PARSER.parseFrom(input); } public static org.xtreemfs.pbrpc.generatedinterfaces.OSD.ObjectData parseFrom( com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - return newBuilder().mergeFrom(input, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(input, extensionRegistry); } - + public static Builder newBuilder() { return Builder.create(); } public Builder newBuilderForType() { return newBuilder(); } public static Builder newBuilder(org.xtreemfs.pbrpc.generatedinterfaces.OSD.ObjectData prototype) { return newBuilder().mergeFrom(prototype); } public Builder toBuilder() { return newBuilder(this); } - + + @java.lang.Override + protected Builder newBuilderForType( + com.google.protobuf.GeneratedMessage.BuilderParent parent) { + Builder builder = new Builder(parent); + return builder; + } + /** + * Protobuf type {@code xtreemfs.pbrpc.ObjectData} + * + *
+     * Contains details on object data which is now sent in
+     * the data fragment of the RPC protocol.
+     * 
+ */ public static final class Builder extends - com.google.protobuf.GeneratedMessage.Builder { - private org.xtreemfs.pbrpc.generatedinterfaces.OSD.ObjectData result; - + com.google.protobuf.GeneratedMessage.Builder + implements org.xtreemfs.pbrpc.generatedinterfaces.OSD.ObjectDataOrBuilder { + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return org.xtreemfs.pbrpc.generatedinterfaces.OSD.internal_static_xtreemfs_pbrpc_ObjectData_descriptor; + } + + protected com.google.protobuf.GeneratedMessage.FieldAccessorTable + internalGetFieldAccessorTable() { + return org.xtreemfs.pbrpc.generatedinterfaces.OSD.internal_static_xtreemfs_pbrpc_ObjectData_fieldAccessorTable + .ensureFieldAccessorsInitialized( + org.xtreemfs.pbrpc.generatedinterfaces.OSD.ObjectData.class, org.xtreemfs.pbrpc.generatedinterfaces.OSD.ObjectData.Builder.class); + } + // Construct using org.xtreemfs.pbrpc.generatedinterfaces.OSD.ObjectData.newBuilder() - private Builder() {} - - private static Builder create() { - Builder builder = new Builder(); - builder.result = new org.xtreemfs.pbrpc.generatedinterfaces.OSD.ObjectData(); - return builder; + private Builder() { + maybeForceBuilderInitialization(); } - - protected org.xtreemfs.pbrpc.generatedinterfaces.OSD.ObjectData internalGetResult() { - return result; + + private Builder( + com.google.protobuf.GeneratedMessage.BuilderParent parent) { + super(parent); + maybeForceBuilderInitialization(); } - - public Builder clear() { - if (result == null) { - throw new IllegalStateException( - "Cannot call clear() after build()."); + private void maybeForceBuilderInitialization() { + if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) { } - result = new org.xtreemfs.pbrpc.generatedinterfaces.OSD.ObjectData(); + } + private static Builder create() { + return new Builder(); + } + + public Builder clear() { + super.clear(); + checksum_ = 0; + bitField0_ = (bitField0_ & ~0x00000001); + invalidChecksumOnOsd_ = false; + bitField0_ = (bitField0_ & ~0x00000002); + zeroPadding_ = 0; + bitField0_ = (bitField0_ & ~0x00000004); return this; } - + public Builder clone() { - return create().mergeFrom(result); + return create().mergeFrom(buildPartial()); } - + public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() { - return org.xtreemfs.pbrpc.generatedinterfaces.OSD.ObjectData.getDescriptor(); + return org.xtreemfs.pbrpc.generatedinterfaces.OSD.internal_static_xtreemfs_pbrpc_ObjectData_descriptor; } - + public org.xtreemfs.pbrpc.generatedinterfaces.OSD.ObjectData getDefaultInstanceForType() { return org.xtreemfs.pbrpc.generatedinterfaces.OSD.ObjectData.getDefaultInstance(); } - - public boolean isInitialized() { - return result.isInitialized(); - } + public org.xtreemfs.pbrpc.generatedinterfaces.OSD.ObjectData build() { - if (result != null && !isInitialized()) { + org.xtreemfs.pbrpc.generatedinterfaces.OSD.ObjectData result = buildPartial(); + if (!result.isInitialized()) { throw newUninitializedMessageException(result); } - return buildPartial(); - } - - private org.xtreemfs.pbrpc.generatedinterfaces.OSD.ObjectData buildParsed() - throws com.google.protobuf.InvalidProtocolBufferException { - if (!isInitialized()) { - throw newUninitializedMessageException( - result).asInvalidProtocolBufferException(); - } - return buildPartial(); + return result; } - + public org.xtreemfs.pbrpc.generatedinterfaces.OSD.ObjectData buildPartial() { - if (result == null) { - throw new IllegalStateException( - "build() has already been called on this Builder."); - } - org.xtreemfs.pbrpc.generatedinterfaces.OSD.ObjectData returnMe = result; - result = null; - return returnMe; + org.xtreemfs.pbrpc.generatedinterfaces.OSD.ObjectData result = new org.xtreemfs.pbrpc.generatedinterfaces.OSD.ObjectData(this); + int from_bitField0_ = bitField0_; + int to_bitField0_ = 0; + if (((from_bitField0_ & 0x00000001) == 0x00000001)) { + to_bitField0_ |= 0x00000001; + } + result.checksum_ = checksum_; + if (((from_bitField0_ & 0x00000002) == 0x00000002)) { + to_bitField0_ |= 0x00000002; + } + result.invalidChecksumOnOsd_ = invalidChecksumOnOsd_; + if (((from_bitField0_ & 0x00000004) == 0x00000004)) { + to_bitField0_ |= 0x00000004; + } + result.zeroPadding_ = zeroPadding_; + result.bitField0_ = to_bitField0_; + onBuilt(); + return result; } - + public Builder mergeFrom(com.google.protobuf.Message other) { if (other instanceof org.xtreemfs.pbrpc.generatedinterfaces.OSD.ObjectData) { return mergeFrom((org.xtreemfs.pbrpc.generatedinterfaces.OSD.ObjectData)other); @@ -1066,7 +2120,7 @@ public final class OSD { return this; } } - + public Builder mergeFrom(org.xtreemfs.pbrpc.generatedinterfaces.OSD.ObjectData other) { if (other == org.xtreemfs.pbrpc.generatedinterfaces.OSD.ObjectData.getDefaultInstance()) return this; if (other.hasChecksum()) { @@ -1081,348 +2135,653 @@ public final class OSD { this.mergeUnknownFields(other.getUnknownFields()); return this; } - + + public final boolean isInitialized() { + if (!hasChecksum()) { + + return false; + } + if (!hasInvalidChecksumOnOsd()) { + + return false; + } + if (!hasZeroPadding()) { + + return false; + } + return true; + } + public Builder mergeFrom( com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - com.google.protobuf.UnknownFieldSet.Builder unknownFields = - com.google.protobuf.UnknownFieldSet.newBuilder( - this.getUnknownFields()); - while (true) { - int tag = input.readTag(); - switch (tag) { - case 0: - this.setUnknownFields(unknownFields.build()); - return this; - default: { - if (!parseUnknownField(input, unknownFields, - extensionRegistry, tag)) { - this.setUnknownFields(unknownFields.build()); - return this; - } - break; - } - case 13: { - setChecksum(input.readFixed32()); - break; - } - case 16: { - setInvalidChecksumOnOsd(input.readBool()); - break; - } - case 29: { - setZeroPadding(input.readFixed32()); - break; - } + org.xtreemfs.pbrpc.generatedinterfaces.OSD.ObjectData parsedMessage = null; + try { + parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + parsedMessage = (org.xtreemfs.pbrpc.generatedinterfaces.OSD.ObjectData) e.getUnfinishedMessage(); + throw e; + } finally { + if (parsedMessage != null) { + mergeFrom(parsedMessage); } } + return this; } - - + private int bitField0_; + // required fixed32 checksum = 1; + private int checksum_ ; + /** + * required fixed32 checksum = 1; + * + *
+       * Data checksum (Adler32), if checksums are enabled.
+       * 
+ */ public boolean hasChecksum() { - return result.hasChecksum(); - } + return ((bitField0_ & 0x00000001) == 0x00000001); + } + /** + * required fixed32 checksum = 1; + * + *
+       * Data checksum (Adler32), if checksums are enabled.
+       * 
+ */ public int getChecksum() { - return result.getChecksum(); - } + return checksum_; + } + /** + * required fixed32 checksum = 1; + * + *
+       * Data checksum (Adler32), if checksums are enabled.
+       * 
+ */ public Builder setChecksum(int value) { - result.hasChecksum = true; - result.checksum_ = value; - return this; - } + bitField0_ |= 0x00000001; + checksum_ = value; + onChanged(); + return this; + } + /** + * required fixed32 checksum = 1; + * + *
+       * Data checksum (Adler32), if checksums are enabled.
+       * 
+ */ public Builder clearChecksum() { - result.hasChecksum = false; - result.checksum_ = 0; + bitField0_ = (bitField0_ & ~0x00000001); + checksum_ = 0; + onChanged(); return this; } - + // required bool invalid_checksum_on_osd = 2; + private boolean invalidChecksumOnOsd_ ; + /** + * required bool invalid_checksum_on_osd = 2; + * + *
+       * True, if the checksum doesn't match the data on the OSD.
+       * 
+ */ public boolean hasInvalidChecksumOnOsd() { - return result.hasInvalidChecksumOnOsd(); - } + return ((bitField0_ & 0x00000002) == 0x00000002); + } + /** + * required bool invalid_checksum_on_osd = 2; + * + *
+       * True, if the checksum doesn't match the data on the OSD.
+       * 
+ */ public boolean getInvalidChecksumOnOsd() { - return result.getInvalidChecksumOnOsd(); - } + return invalidChecksumOnOsd_; + } + /** + * required bool invalid_checksum_on_osd = 2; + * + *
+       * True, if the checksum doesn't match the data on the OSD.
+       * 
+ */ public Builder setInvalidChecksumOnOsd(boolean value) { - result.hasInvalidChecksumOnOsd = true; - result.invalidChecksumOnOsd_ = value; - return this; - } + bitField0_ |= 0x00000002; + invalidChecksumOnOsd_ = value; + onChanged(); + return this; + } + /** + * required bool invalid_checksum_on_osd = 2; + * + *
+       * True, if the checksum doesn't match the data on the OSD.
+       * 
+ */ public Builder clearInvalidChecksumOnOsd() { - result.hasInvalidChecksumOnOsd = false; - result.invalidChecksumOnOsd_ = false; + bitField0_ = (bitField0_ & ~0x00000002); + invalidChecksumOnOsd_ = false; + onChanged(); return this; } - + // required fixed32 zero_padding = 3; + private int zeroPadding_ ; + /** + * required fixed32 zero_padding = 3; + * + *
+       * Number of zeros the client must append to data before delivering
+       * data to an application (for sparse files).
+       * When returned by the xtreemfs_check_object method
+       * it stores the total number of bytes(data + sparse data)
+       * 
+ */ public boolean hasZeroPadding() { - return result.hasZeroPadding(); - } + return ((bitField0_ & 0x00000004) == 0x00000004); + } + /** + * required fixed32 zero_padding = 3; + * + *
+       * Number of zeros the client must append to data before delivering
+       * data to an application (for sparse files).
+       * When returned by the xtreemfs_check_object method
+       * it stores the total number of bytes(data + sparse data)
+       * 
+ */ public int getZeroPadding() { - return result.getZeroPadding(); - } + return zeroPadding_; + } + /** + * required fixed32 zero_padding = 3; + * + *
+       * Number of zeros the client must append to data before delivering
+       * data to an application (for sparse files).
+       * When returned by the xtreemfs_check_object method
+       * it stores the total number of bytes(data + sparse data)
+       * 
+ */ public Builder setZeroPadding(int value) { - result.hasZeroPadding = true; - result.zeroPadding_ = value; - return this; - } + bitField0_ |= 0x00000004; + zeroPadding_ = value; + onChanged(); + return this; + } + /** + * required fixed32 zero_padding = 3; + * + *
+       * Number of zeros the client must append to data before delivering
+       * data to an application (for sparse files).
+       * When returned by the xtreemfs_check_object method
+       * it stores the total number of bytes(data + sparse data)
+       * 
+ */ public Builder clearZeroPadding() { - result.hasZeroPadding = false; - result.zeroPadding_ = 0; + bitField0_ = (bitField0_ & ~0x00000004); + zeroPadding_ = 0; + onChanged(); return this; } - + // @@protoc_insertion_point(builder_scope:xtreemfs.pbrpc.ObjectData) } - + static { defaultInstance = new ObjectData(true); - org.xtreemfs.pbrpc.generatedinterfaces.OSD.internalForceInit(); defaultInstance.initFields(); } - + // @@protoc_insertion_point(class_scope:xtreemfs.pbrpc.ObjectData) } - + + public interface ObjectListOrBuilder + extends com.google.protobuf.MessageOrBuilder { + + // required bytes set = 1; + /** + * required bytes set = 1; + * + *
+     * serialized data type
+     * 
+ */ + boolean hasSet(); + /** + * required bytes set = 1; + * + *
+     * serialized data type
+     * 
+ */ + com.google.protobuf.ByteString getSet(); + + // required fixed32 stripe_width = 2; + /** + * required fixed32 stripe_width = 2; + */ + boolean hasStripeWidth(); + /** + * required fixed32 stripe_width = 2; + */ + int getStripeWidth(); + + // required fixed32 first_ = 3; + /** + * required fixed32 first_ = 3; + */ + boolean hasFirst(); + /** + * required fixed32 first_ = 3; + */ + int getFirst(); + } + /** + * Protobuf type {@code xtreemfs.pbrpc.ObjectList} + * + *
+   * List of objects which an OSD has stored locally.
+   * Used by the read-only replication to optimize
+   * fetching of missing objects.
+   * 
+ */ public static final class ObjectList extends - com.google.protobuf.GeneratedMessage { + com.google.protobuf.GeneratedMessage + implements ObjectListOrBuilder { // Use ObjectList.newBuilder() to construct. - private ObjectList() { - initFields(); + private ObjectList(com.google.protobuf.GeneratedMessage.Builder builder) { + super(builder); + this.unknownFields = builder.getUnknownFields(); } - private ObjectList(boolean noInit) {} - + private ObjectList(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); } + private static final ObjectList defaultInstance; public static ObjectList getDefaultInstance() { return defaultInstance; } - + public ObjectList getDefaultInstanceForType() { return defaultInstance; } - + + private final com.google.protobuf.UnknownFieldSet unknownFields; + @java.lang.Override + public final com.google.protobuf.UnknownFieldSet + getUnknownFields() { + return this.unknownFields; + } + private ObjectList( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + initFields(); + int mutable_bitField0_ = 0; + com.google.protobuf.UnknownFieldSet.Builder unknownFields = + com.google.protobuf.UnknownFieldSet.newBuilder(); + try { + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch (tag) { + case 0: + done = true; + break; + default: { + if (!parseUnknownField(input, unknownFields, + extensionRegistry, tag)) { + done = true; + } + break; + } + case 10: { + bitField0_ |= 0x00000001; + set_ = input.readBytes(); + break; + } + case 21: { + bitField0_ |= 0x00000002; + stripeWidth_ = input.readFixed32(); + break; + } + case 29: { + bitField0_ |= 0x00000004; + first_ = input.readFixed32(); + break; + } + } + } + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(this); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException( + e.getMessage()).setUnfinishedMessage(this); + } finally { + this.unknownFields = unknownFields.build(); + makeExtensionsImmutable(); + } + } public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { return org.xtreemfs.pbrpc.generatedinterfaces.OSD.internal_static_xtreemfs_pbrpc_ObjectList_descriptor; } - + protected com.google.protobuf.GeneratedMessage.FieldAccessorTable internalGetFieldAccessorTable() { - return org.xtreemfs.pbrpc.generatedinterfaces.OSD.internal_static_xtreemfs_pbrpc_ObjectList_fieldAccessorTable; + return org.xtreemfs.pbrpc.generatedinterfaces.OSD.internal_static_xtreemfs_pbrpc_ObjectList_fieldAccessorTable + .ensureFieldAccessorsInitialized( + org.xtreemfs.pbrpc.generatedinterfaces.OSD.ObjectList.class, org.xtreemfs.pbrpc.generatedinterfaces.OSD.ObjectList.Builder.class); } - + + public static com.google.protobuf.Parser PARSER = + new com.google.protobuf.AbstractParser() { + public ObjectList parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return new ObjectList(input, extensionRegistry); + } + }; + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; + } + + private int bitField0_; // required bytes set = 1; public static final int SET_FIELD_NUMBER = 1; - private boolean hasSet; - private com.google.protobuf.ByteString set_ = com.google.protobuf.ByteString.EMPTY; - public boolean hasSet() { return hasSet; } - public com.google.protobuf.ByteString getSet() { return set_; } - + private com.google.protobuf.ByteString set_; + /** + * required bytes set = 1; + * + *
+     * serialized data type
+     * 
+ */ + public boolean hasSet() { + return ((bitField0_ & 0x00000001) == 0x00000001); + } + /** + * required bytes set = 1; + * + *
+     * serialized data type
+     * 
+ */ + public com.google.protobuf.ByteString getSet() { + return set_; + } + // required fixed32 stripe_width = 2; public static final int STRIPE_WIDTH_FIELD_NUMBER = 2; - private boolean hasStripeWidth; - private int stripeWidth_ = 0; - public boolean hasStripeWidth() { return hasStripeWidth; } - public int getStripeWidth() { return stripeWidth_; } - + private int stripeWidth_; + /** + * required fixed32 stripe_width = 2; + */ + public boolean hasStripeWidth() { + return ((bitField0_ & 0x00000002) == 0x00000002); + } + /** + * required fixed32 stripe_width = 2; + */ + public int getStripeWidth() { + return stripeWidth_; + } + // required fixed32 first_ = 3; public static final int FIRST__FIELD_NUMBER = 3; - private boolean hasFirst; - private int first_ = 0; - public boolean hasFirst() { return hasFirst; } - public int getFirst() { return first_; } - + private int first_; + /** + * required fixed32 first_ = 3; + */ + public boolean hasFirst() { + return ((bitField0_ & 0x00000004) == 0x00000004); + } + /** + * required fixed32 first_ = 3; + */ + public int getFirst() { + return first_; + } + private void initFields() { + set_ = com.google.protobuf.ByteString.EMPTY; + stripeWidth_ = 0; + first_ = 0; } + private byte memoizedIsInitialized = -1; public final boolean isInitialized() { - if (!hasSet) return false; - if (!hasStripeWidth) return false; - if (!hasFirst) return false; - return true; + byte isInitialized = memoizedIsInitialized; + if (isInitialized != -1) return isInitialized == 1; + + if (!hasSet()) { + memoizedIsInitialized = 0; + return false; + } + if (!hasStripeWidth()) { + memoizedIsInitialized = 0; + return false; + } + if (!hasFirst()) { + memoizedIsInitialized = 0; + return false; + } + memoizedIsInitialized = 1; + return true; } - + public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException { getSerializedSize(); - if (hasSet()) { - output.writeBytes(1, getSet()); + if (((bitField0_ & 0x00000001) == 0x00000001)) { + output.writeBytes(1, set_); } - if (hasStripeWidth()) { - output.writeFixed32(2, getStripeWidth()); + if (((bitField0_ & 0x00000002) == 0x00000002)) { + output.writeFixed32(2, stripeWidth_); } - if (hasFirst()) { - output.writeFixed32(3, getFirst()); + if (((bitField0_ & 0x00000004) == 0x00000004)) { + output.writeFixed32(3, first_); } getUnknownFields().writeTo(output); } - + private int memoizedSerializedSize = -1; public int getSerializedSize() { int size = memoizedSerializedSize; if (size != -1) return size; - + size = 0; - if (hasSet()) { + if (((bitField0_ & 0x00000001) == 0x00000001)) { size += com.google.protobuf.CodedOutputStream - .computeBytesSize(1, getSet()); + .computeBytesSize(1, set_); } - if (hasStripeWidth()) { + if (((bitField0_ & 0x00000002) == 0x00000002)) { size += com.google.protobuf.CodedOutputStream - .computeFixed32Size(2, getStripeWidth()); + .computeFixed32Size(2, stripeWidth_); } - if (hasFirst()) { + if (((bitField0_ & 0x00000004) == 0x00000004)) { size += com.google.protobuf.CodedOutputStream - .computeFixed32Size(3, getFirst()); + .computeFixed32Size(3, first_); } size += getUnknownFields().getSerializedSize(); memoizedSerializedSize = size; return size; } - + + private static final long serialVersionUID = 0L; + @java.lang.Override + protected java.lang.Object writeReplace() + throws java.io.ObjectStreamException { + return super.writeReplace(); + } + public static org.xtreemfs.pbrpc.generatedinterfaces.OSD.ObjectList parseFrom( com.google.protobuf.ByteString data) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data).buildParsed(); + return PARSER.parseFrom(data); } public static org.xtreemfs.pbrpc.generatedinterfaces.OSD.ObjectList parseFrom( com.google.protobuf.ByteString data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(data, extensionRegistry); } public static org.xtreemfs.pbrpc.generatedinterfaces.OSD.ObjectList parseFrom(byte[] data) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data).buildParsed(); + return PARSER.parseFrom(data); } public static org.xtreemfs.pbrpc.generatedinterfaces.OSD.ObjectList parseFrom( byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(data, extensionRegistry); } public static org.xtreemfs.pbrpc.generatedinterfaces.OSD.ObjectList parseFrom(java.io.InputStream input) throws java.io.IOException { - return newBuilder().mergeFrom(input).buildParsed(); + return PARSER.parseFrom(input); } public static org.xtreemfs.pbrpc.generatedinterfaces.OSD.ObjectList parseFrom( java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - return newBuilder().mergeFrom(input, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(input, extensionRegistry); } public static org.xtreemfs.pbrpc.generatedinterfaces.OSD.ObjectList parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException { - Builder builder = newBuilder(); - if (builder.mergeDelimitedFrom(input)) { - return builder.buildParsed(); - } else { - return null; - } + return PARSER.parseDelimitedFrom(input); } public static org.xtreemfs.pbrpc.generatedinterfaces.OSD.ObjectList parseDelimitedFrom( java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - Builder builder = newBuilder(); - if (builder.mergeDelimitedFrom(input, extensionRegistry)) { - return builder.buildParsed(); - } else { - return null; - } + return PARSER.parseDelimitedFrom(input, extensionRegistry); } public static org.xtreemfs.pbrpc.generatedinterfaces.OSD.ObjectList parseFrom( com.google.protobuf.CodedInputStream input) throws java.io.IOException { - return newBuilder().mergeFrom(input).buildParsed(); + return PARSER.parseFrom(input); } public static org.xtreemfs.pbrpc.generatedinterfaces.OSD.ObjectList parseFrom( com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - return newBuilder().mergeFrom(input, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(input, extensionRegistry); } - + public static Builder newBuilder() { return Builder.create(); } public Builder newBuilderForType() { return newBuilder(); } public static Builder newBuilder(org.xtreemfs.pbrpc.generatedinterfaces.OSD.ObjectList prototype) { return newBuilder().mergeFrom(prototype); } public Builder toBuilder() { return newBuilder(this); } - + + @java.lang.Override + protected Builder newBuilderForType( + com.google.protobuf.GeneratedMessage.BuilderParent parent) { + Builder builder = new Builder(parent); + return builder; + } + /** + * Protobuf type {@code xtreemfs.pbrpc.ObjectList} + * + *
+     * List of objects which an OSD has stored locally.
+     * Used by the read-only replication to optimize
+     * fetching of missing objects.
+     * 
+ */ public static final class Builder extends - com.google.protobuf.GeneratedMessage.Builder { - private org.xtreemfs.pbrpc.generatedinterfaces.OSD.ObjectList result; - + com.google.protobuf.GeneratedMessage.Builder + implements org.xtreemfs.pbrpc.generatedinterfaces.OSD.ObjectListOrBuilder { + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return org.xtreemfs.pbrpc.generatedinterfaces.OSD.internal_static_xtreemfs_pbrpc_ObjectList_descriptor; + } + + protected com.google.protobuf.GeneratedMessage.FieldAccessorTable + internalGetFieldAccessorTable() { + return org.xtreemfs.pbrpc.generatedinterfaces.OSD.internal_static_xtreemfs_pbrpc_ObjectList_fieldAccessorTable + .ensureFieldAccessorsInitialized( + org.xtreemfs.pbrpc.generatedinterfaces.OSD.ObjectList.class, org.xtreemfs.pbrpc.generatedinterfaces.OSD.ObjectList.Builder.class); + } + // Construct using org.xtreemfs.pbrpc.generatedinterfaces.OSD.ObjectList.newBuilder() - private Builder() {} - - private static Builder create() { - Builder builder = new Builder(); - builder.result = new org.xtreemfs.pbrpc.generatedinterfaces.OSD.ObjectList(); - return builder; + private Builder() { + maybeForceBuilderInitialization(); } - - protected org.xtreemfs.pbrpc.generatedinterfaces.OSD.ObjectList internalGetResult() { - return result; + + private Builder( + com.google.protobuf.GeneratedMessage.BuilderParent parent) { + super(parent); + maybeForceBuilderInitialization(); } - - public Builder clear() { - if (result == null) { - throw new IllegalStateException( - "Cannot call clear() after build()."); + private void maybeForceBuilderInitialization() { + if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) { } - result = new org.xtreemfs.pbrpc.generatedinterfaces.OSD.ObjectList(); + } + private static Builder create() { + return new Builder(); + } + + public Builder clear() { + super.clear(); + set_ = com.google.protobuf.ByteString.EMPTY; + bitField0_ = (bitField0_ & ~0x00000001); + stripeWidth_ = 0; + bitField0_ = (bitField0_ & ~0x00000002); + first_ = 0; + bitField0_ = (bitField0_ & ~0x00000004); return this; } - + public Builder clone() { - return create().mergeFrom(result); + return create().mergeFrom(buildPartial()); } - + public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() { - return org.xtreemfs.pbrpc.generatedinterfaces.OSD.ObjectList.getDescriptor(); + return org.xtreemfs.pbrpc.generatedinterfaces.OSD.internal_static_xtreemfs_pbrpc_ObjectList_descriptor; } - + public org.xtreemfs.pbrpc.generatedinterfaces.OSD.ObjectList getDefaultInstanceForType() { return org.xtreemfs.pbrpc.generatedinterfaces.OSD.ObjectList.getDefaultInstance(); } - - public boolean isInitialized() { - return result.isInitialized(); - } + public org.xtreemfs.pbrpc.generatedinterfaces.OSD.ObjectList build() { - if (result != null && !isInitialized()) { + org.xtreemfs.pbrpc.generatedinterfaces.OSD.ObjectList result = buildPartial(); + if (!result.isInitialized()) { throw newUninitializedMessageException(result); } - return buildPartial(); - } - - private org.xtreemfs.pbrpc.generatedinterfaces.OSD.ObjectList buildParsed() - throws com.google.protobuf.InvalidProtocolBufferException { - if (!isInitialized()) { - throw newUninitializedMessageException( - result).asInvalidProtocolBufferException(); - } - return buildPartial(); + return result; } - + public org.xtreemfs.pbrpc.generatedinterfaces.OSD.ObjectList buildPartial() { - if (result == null) { - throw new IllegalStateException( - "build() has already been called on this Builder."); - } - org.xtreemfs.pbrpc.generatedinterfaces.OSD.ObjectList returnMe = result; - result = null; - return returnMe; + org.xtreemfs.pbrpc.generatedinterfaces.OSD.ObjectList result = new org.xtreemfs.pbrpc.generatedinterfaces.OSD.ObjectList(this); + int from_bitField0_ = bitField0_; + int to_bitField0_ = 0; + if (((from_bitField0_ & 0x00000001) == 0x00000001)) { + to_bitField0_ |= 0x00000001; + } + result.set_ = set_; + if (((from_bitField0_ & 0x00000002) == 0x00000002)) { + to_bitField0_ |= 0x00000002; + } + result.stripeWidth_ = stripeWidth_; + if (((from_bitField0_ & 0x00000004) == 0x00000004)) { + to_bitField0_ |= 0x00000004; + } + result.first_ = first_; + result.bitField0_ = to_bitField0_; + onBuilt(); + return result; } - + public Builder mergeFrom(com.google.protobuf.Message other) { if (other instanceof org.xtreemfs.pbrpc.generatedinterfaces.OSD.ObjectList) { return mergeFrom((org.xtreemfs.pbrpc.generatedinterfaces.OSD.ObjectList)other); @@ -1431,7 +2790,7 @@ public final class OSD { return this; } } - + public Builder mergeFrom(org.xtreemfs.pbrpc.generatedinterfaces.OSD.ObjectList other) { if (other == org.xtreemfs.pbrpc.generatedinterfaces.OSD.ObjectList.getDefaultInstance()) return this; if (other.hasSet()) { @@ -1446,336 +2805,547 @@ public final class OSD { this.mergeUnknownFields(other.getUnknownFields()); return this; } - + + public final boolean isInitialized() { + if (!hasSet()) { + + return false; + } + if (!hasStripeWidth()) { + + return false; + } + if (!hasFirst()) { + + return false; + } + return true; + } + public Builder mergeFrom( com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - com.google.protobuf.UnknownFieldSet.Builder unknownFields = - com.google.protobuf.UnknownFieldSet.newBuilder( - this.getUnknownFields()); - while (true) { - int tag = input.readTag(); - switch (tag) { - case 0: - this.setUnknownFields(unknownFields.build()); - return this; - default: { - if (!parseUnknownField(input, unknownFields, - extensionRegistry, tag)) { - this.setUnknownFields(unknownFields.build()); - return this; - } - break; - } - case 10: { - setSet(input.readBytes()); - break; - } - case 21: { - setStripeWidth(input.readFixed32()); - break; - } - case 29: { - setFirst(input.readFixed32()); - break; - } + org.xtreemfs.pbrpc.generatedinterfaces.OSD.ObjectList parsedMessage = null; + try { + parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + parsedMessage = (org.xtreemfs.pbrpc.generatedinterfaces.OSD.ObjectList) e.getUnfinishedMessage(); + throw e; + } finally { + if (parsedMessage != null) { + mergeFrom(parsedMessage); } } + return this; } - - + private int bitField0_; + // required bytes set = 1; + private com.google.protobuf.ByteString set_ = com.google.protobuf.ByteString.EMPTY; + /** + * required bytes set = 1; + * + *
+       * serialized data type
+       * 
+ */ public boolean hasSet() { - return result.hasSet(); - } + return ((bitField0_ & 0x00000001) == 0x00000001); + } + /** + * required bytes set = 1; + * + *
+       * serialized data type
+       * 
+ */ public com.google.protobuf.ByteString getSet() { - return result.getSet(); - } + return set_; + } + /** + * required bytes set = 1; + * + *
+       * serialized data type
+       * 
+ */ public Builder setSet(com.google.protobuf.ByteString value) { if (value == null) { throw new NullPointerException(); } - result.hasSet = true; - result.set_ = value; - return this; - } + bitField0_ |= 0x00000001; + set_ = value; + onChanged(); + return this; + } + /** + * required bytes set = 1; + * + *
+       * serialized data type
+       * 
+ */ public Builder clearSet() { - result.hasSet = false; - result.set_ = getDefaultInstance().getSet(); + bitField0_ = (bitField0_ & ~0x00000001); + set_ = getDefaultInstance().getSet(); + onChanged(); return this; } - + // required fixed32 stripe_width = 2; + private int stripeWidth_ ; + /** + * required fixed32 stripe_width = 2; + */ public boolean hasStripeWidth() { - return result.hasStripeWidth(); + return ((bitField0_ & 0x00000002) == 0x00000002); } + /** + * required fixed32 stripe_width = 2; + */ public int getStripeWidth() { - return result.getStripeWidth(); + return stripeWidth_; } + /** + * required fixed32 stripe_width = 2; + */ public Builder setStripeWidth(int value) { - result.hasStripeWidth = true; - result.stripeWidth_ = value; + bitField0_ |= 0x00000002; + stripeWidth_ = value; + onChanged(); return this; } + /** + * required fixed32 stripe_width = 2; + */ public Builder clearStripeWidth() { - result.hasStripeWidth = false; - result.stripeWidth_ = 0; + bitField0_ = (bitField0_ & ~0x00000002); + stripeWidth_ = 0; + onChanged(); return this; } - + // required fixed32 first_ = 3; + private int first_ ; + /** + * required fixed32 first_ = 3; + */ public boolean hasFirst() { - return result.hasFirst(); + return ((bitField0_ & 0x00000004) == 0x00000004); } + /** + * required fixed32 first_ = 3; + */ public int getFirst() { - return result.getFirst(); + return first_; } + /** + * required fixed32 first_ = 3; + */ public Builder setFirst(int value) { - result.hasFirst = true; - result.first_ = value; + bitField0_ |= 0x00000004; + first_ = value; + onChanged(); return this; } + /** + * required fixed32 first_ = 3; + */ public Builder clearFirst() { - result.hasFirst = false; - result.first_ = 0; + bitField0_ = (bitField0_ & ~0x00000004); + first_ = 0; + onChanged(); return this; } - + // @@protoc_insertion_point(builder_scope:xtreemfs.pbrpc.ObjectList) } - + static { defaultInstance = new ObjectList(true); - org.xtreemfs.pbrpc.generatedinterfaces.OSD.internalForceInit(); defaultInstance.initFields(); } - + // @@protoc_insertion_point(class_scope:xtreemfs.pbrpc.ObjectList) } - + + public interface ObjectVersionOrBuilder + extends com.google.protobuf.MessageOrBuilder { + + // required fixed64 object_number = 1; + /** + * required fixed64 object_number = 1; + */ + boolean hasObjectNumber(); + /** + * required fixed64 object_number = 1; + */ + long getObjectNumber(); + + // required fixed64 object_version = 2; + /** + * required fixed64 object_version = 2; + */ + boolean hasObjectVersion(); + /** + * required fixed64 object_version = 2; + */ + long getObjectVersion(); + } + /** + * Protobuf type {@code xtreemfs.pbrpc.ObjectVersion} + * + *
+   * Version information for an object.
+   * Used to generate a mapping from object_number
+   * to object_version. Used by the read-write replication.
+   * 
+ */ public static final class ObjectVersion extends - com.google.protobuf.GeneratedMessage { + com.google.protobuf.GeneratedMessage + implements ObjectVersionOrBuilder { // Use ObjectVersion.newBuilder() to construct. - private ObjectVersion() { - initFields(); + private ObjectVersion(com.google.protobuf.GeneratedMessage.Builder builder) { + super(builder); + this.unknownFields = builder.getUnknownFields(); } - private ObjectVersion(boolean noInit) {} - + private ObjectVersion(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); } + private static final ObjectVersion defaultInstance; public static ObjectVersion getDefaultInstance() { return defaultInstance; } - + public ObjectVersion getDefaultInstanceForType() { return defaultInstance; } - + + private final com.google.protobuf.UnknownFieldSet unknownFields; + @java.lang.Override + public final com.google.protobuf.UnknownFieldSet + getUnknownFields() { + return this.unknownFields; + } + private ObjectVersion( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + initFields(); + int mutable_bitField0_ = 0; + com.google.protobuf.UnknownFieldSet.Builder unknownFields = + com.google.protobuf.UnknownFieldSet.newBuilder(); + try { + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch (tag) { + case 0: + done = true; + break; + default: { + if (!parseUnknownField(input, unknownFields, + extensionRegistry, tag)) { + done = true; + } + break; + } + case 9: { + bitField0_ |= 0x00000001; + objectNumber_ = input.readFixed64(); + break; + } + case 17: { + bitField0_ |= 0x00000002; + objectVersion_ = input.readFixed64(); + break; + } + } + } + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(this); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException( + e.getMessage()).setUnfinishedMessage(this); + } finally { + this.unknownFields = unknownFields.build(); + makeExtensionsImmutable(); + } + } public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { return org.xtreemfs.pbrpc.generatedinterfaces.OSD.internal_static_xtreemfs_pbrpc_ObjectVersion_descriptor; } - + protected com.google.protobuf.GeneratedMessage.FieldAccessorTable internalGetFieldAccessorTable() { - return org.xtreemfs.pbrpc.generatedinterfaces.OSD.internal_static_xtreemfs_pbrpc_ObjectVersion_fieldAccessorTable; + return org.xtreemfs.pbrpc.generatedinterfaces.OSD.internal_static_xtreemfs_pbrpc_ObjectVersion_fieldAccessorTable + .ensureFieldAccessorsInitialized( + org.xtreemfs.pbrpc.generatedinterfaces.OSD.ObjectVersion.class, org.xtreemfs.pbrpc.generatedinterfaces.OSD.ObjectVersion.Builder.class); + } + + public static com.google.protobuf.Parser PARSER = + new com.google.protobuf.AbstractParser() { + public ObjectVersion parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return new ObjectVersion(input, extensionRegistry); + } + }; + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; } - + + private int bitField0_; // required fixed64 object_number = 1; public static final int OBJECT_NUMBER_FIELD_NUMBER = 1; - private boolean hasObjectNumber; - private long objectNumber_ = 0L; - public boolean hasObjectNumber() { return hasObjectNumber; } - public long getObjectNumber() { return objectNumber_; } - + private long objectNumber_; + /** + * required fixed64 object_number = 1; + */ + public boolean hasObjectNumber() { + return ((bitField0_ & 0x00000001) == 0x00000001); + } + /** + * required fixed64 object_number = 1; + */ + public long getObjectNumber() { + return objectNumber_; + } + // required fixed64 object_version = 2; public static final int OBJECT_VERSION_FIELD_NUMBER = 2; - private boolean hasObjectVersion; - private long objectVersion_ = 0L; - public boolean hasObjectVersion() { return hasObjectVersion; } - public long getObjectVersion() { return objectVersion_; } - + private long objectVersion_; + /** + * required fixed64 object_version = 2; + */ + public boolean hasObjectVersion() { + return ((bitField0_ & 0x00000002) == 0x00000002); + } + /** + * required fixed64 object_version = 2; + */ + public long getObjectVersion() { + return objectVersion_; + } + private void initFields() { + objectNumber_ = 0L; + objectVersion_ = 0L; } + private byte memoizedIsInitialized = -1; public final boolean isInitialized() { - if (!hasObjectNumber) return false; - if (!hasObjectVersion) return false; + byte isInitialized = memoizedIsInitialized; + if (isInitialized != -1) return isInitialized == 1; + + if (!hasObjectNumber()) { + memoizedIsInitialized = 0; + return false; + } + if (!hasObjectVersion()) { + memoizedIsInitialized = 0; + return false; + } + memoizedIsInitialized = 1; return true; } - + public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException { getSerializedSize(); - if (hasObjectNumber()) { - output.writeFixed64(1, getObjectNumber()); + if (((bitField0_ & 0x00000001) == 0x00000001)) { + output.writeFixed64(1, objectNumber_); } - if (hasObjectVersion()) { - output.writeFixed64(2, getObjectVersion()); + if (((bitField0_ & 0x00000002) == 0x00000002)) { + output.writeFixed64(2, objectVersion_); } getUnknownFields().writeTo(output); } - + private int memoizedSerializedSize = -1; public int getSerializedSize() { int size = memoizedSerializedSize; if (size != -1) return size; - + size = 0; - if (hasObjectNumber()) { + if (((bitField0_ & 0x00000001) == 0x00000001)) { size += com.google.protobuf.CodedOutputStream - .computeFixed64Size(1, getObjectNumber()); + .computeFixed64Size(1, objectNumber_); } - if (hasObjectVersion()) { + if (((bitField0_ & 0x00000002) == 0x00000002)) { size += com.google.protobuf.CodedOutputStream - .computeFixed64Size(2, getObjectVersion()); + .computeFixed64Size(2, objectVersion_); } size += getUnknownFields().getSerializedSize(); memoizedSerializedSize = size; return size; } - + + private static final long serialVersionUID = 0L; + @java.lang.Override + protected java.lang.Object writeReplace() + throws java.io.ObjectStreamException { + return super.writeReplace(); + } + public static org.xtreemfs.pbrpc.generatedinterfaces.OSD.ObjectVersion parseFrom( com.google.protobuf.ByteString data) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data).buildParsed(); + return PARSER.parseFrom(data); } public static org.xtreemfs.pbrpc.generatedinterfaces.OSD.ObjectVersion parseFrom( com.google.protobuf.ByteString data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(data, extensionRegistry); } public static org.xtreemfs.pbrpc.generatedinterfaces.OSD.ObjectVersion parseFrom(byte[] data) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data).buildParsed(); + return PARSER.parseFrom(data); } public static org.xtreemfs.pbrpc.generatedinterfaces.OSD.ObjectVersion parseFrom( byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(data, extensionRegistry); } public static org.xtreemfs.pbrpc.generatedinterfaces.OSD.ObjectVersion parseFrom(java.io.InputStream input) throws java.io.IOException { - return newBuilder().mergeFrom(input).buildParsed(); + return PARSER.parseFrom(input); } public static org.xtreemfs.pbrpc.generatedinterfaces.OSD.ObjectVersion parseFrom( java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - return newBuilder().mergeFrom(input, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(input, extensionRegistry); } public static org.xtreemfs.pbrpc.generatedinterfaces.OSD.ObjectVersion parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException { - Builder builder = newBuilder(); - if (builder.mergeDelimitedFrom(input)) { - return builder.buildParsed(); - } else { - return null; - } + return PARSER.parseDelimitedFrom(input); } public static org.xtreemfs.pbrpc.generatedinterfaces.OSD.ObjectVersion parseDelimitedFrom( java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - Builder builder = newBuilder(); - if (builder.mergeDelimitedFrom(input, extensionRegistry)) { - return builder.buildParsed(); - } else { - return null; - } + return PARSER.parseDelimitedFrom(input, extensionRegistry); } public static org.xtreemfs.pbrpc.generatedinterfaces.OSD.ObjectVersion parseFrom( com.google.protobuf.CodedInputStream input) throws java.io.IOException { - return newBuilder().mergeFrom(input).buildParsed(); + return PARSER.parseFrom(input); } public static org.xtreemfs.pbrpc.generatedinterfaces.OSD.ObjectVersion parseFrom( com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - return newBuilder().mergeFrom(input, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(input, extensionRegistry); } - + public static Builder newBuilder() { return Builder.create(); } public Builder newBuilderForType() { return newBuilder(); } public static Builder newBuilder(org.xtreemfs.pbrpc.generatedinterfaces.OSD.ObjectVersion prototype) { return newBuilder().mergeFrom(prototype); } public Builder toBuilder() { return newBuilder(this); } - + + @java.lang.Override + protected Builder newBuilderForType( + com.google.protobuf.GeneratedMessage.BuilderParent parent) { + Builder builder = new Builder(parent); + return builder; + } + /** + * Protobuf type {@code xtreemfs.pbrpc.ObjectVersion} + * + *
+     * Version information for an object.
+     * Used to generate a mapping from object_number
+     * to object_version. Used by the read-write replication.
+     * 
+ */ public static final class Builder extends - com.google.protobuf.GeneratedMessage.Builder { - private org.xtreemfs.pbrpc.generatedinterfaces.OSD.ObjectVersion result; - + com.google.protobuf.GeneratedMessage.Builder + implements org.xtreemfs.pbrpc.generatedinterfaces.OSD.ObjectVersionOrBuilder { + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return org.xtreemfs.pbrpc.generatedinterfaces.OSD.internal_static_xtreemfs_pbrpc_ObjectVersion_descriptor; + } + + protected com.google.protobuf.GeneratedMessage.FieldAccessorTable + internalGetFieldAccessorTable() { + return org.xtreemfs.pbrpc.generatedinterfaces.OSD.internal_static_xtreemfs_pbrpc_ObjectVersion_fieldAccessorTable + .ensureFieldAccessorsInitialized( + org.xtreemfs.pbrpc.generatedinterfaces.OSD.ObjectVersion.class, org.xtreemfs.pbrpc.generatedinterfaces.OSD.ObjectVersion.Builder.class); + } + // Construct using org.xtreemfs.pbrpc.generatedinterfaces.OSD.ObjectVersion.newBuilder() - private Builder() {} - - private static Builder create() { - Builder builder = new Builder(); - builder.result = new org.xtreemfs.pbrpc.generatedinterfaces.OSD.ObjectVersion(); - return builder; + private Builder() { + maybeForceBuilderInitialization(); } - - protected org.xtreemfs.pbrpc.generatedinterfaces.OSD.ObjectVersion internalGetResult() { - return result; + + private Builder( + com.google.protobuf.GeneratedMessage.BuilderParent parent) { + super(parent); + maybeForceBuilderInitialization(); } - - public Builder clear() { - if (result == null) { - throw new IllegalStateException( - "Cannot call clear() after build()."); + private void maybeForceBuilderInitialization() { + if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) { } - result = new org.xtreemfs.pbrpc.generatedinterfaces.OSD.ObjectVersion(); + } + private static Builder create() { + return new Builder(); + } + + public Builder clear() { + super.clear(); + objectNumber_ = 0L; + bitField0_ = (bitField0_ & ~0x00000001); + objectVersion_ = 0L; + bitField0_ = (bitField0_ & ~0x00000002); return this; } - + public Builder clone() { - return create().mergeFrom(result); + return create().mergeFrom(buildPartial()); } - + public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() { - return org.xtreemfs.pbrpc.generatedinterfaces.OSD.ObjectVersion.getDescriptor(); + return org.xtreemfs.pbrpc.generatedinterfaces.OSD.internal_static_xtreemfs_pbrpc_ObjectVersion_descriptor; } - + public org.xtreemfs.pbrpc.generatedinterfaces.OSD.ObjectVersion getDefaultInstanceForType() { return org.xtreemfs.pbrpc.generatedinterfaces.OSD.ObjectVersion.getDefaultInstance(); } - - public boolean isInitialized() { - return result.isInitialized(); - } + public org.xtreemfs.pbrpc.generatedinterfaces.OSD.ObjectVersion build() { - if (result != null && !isInitialized()) { + org.xtreemfs.pbrpc.generatedinterfaces.OSD.ObjectVersion result = buildPartial(); + if (!result.isInitialized()) { throw newUninitializedMessageException(result); } - return buildPartial(); - } - - private org.xtreemfs.pbrpc.generatedinterfaces.OSD.ObjectVersion buildParsed() - throws com.google.protobuf.InvalidProtocolBufferException { - if (!isInitialized()) { - throw newUninitializedMessageException( - result).asInvalidProtocolBufferException(); - } - return buildPartial(); + return result; } - + public org.xtreemfs.pbrpc.generatedinterfaces.OSD.ObjectVersion buildPartial() { - if (result == null) { - throw new IllegalStateException( - "build() has already been called on this Builder."); - } - org.xtreemfs.pbrpc.generatedinterfaces.OSD.ObjectVersion returnMe = result; - result = null; - return returnMe; + org.xtreemfs.pbrpc.generatedinterfaces.OSD.ObjectVersion result = new org.xtreemfs.pbrpc.generatedinterfaces.OSD.ObjectVersion(this); + int from_bitField0_ = bitField0_; + int to_bitField0_ = 0; + if (((from_bitField0_ & 0x00000001) == 0x00000001)) { + to_bitField0_ |= 0x00000001; + } + result.objectNumber_ = objectNumber_; + if (((from_bitField0_ & 0x00000002) == 0x00000002)) { + to_bitField0_ |= 0x00000002; + } + result.objectVersion_ = objectVersion_; + result.bitField0_ = to_bitField0_; + onBuilt(); + return result; } - + public Builder mergeFrom(com.google.protobuf.Message other) { if (other instanceof org.xtreemfs.pbrpc.generatedinterfaces.OSD.ObjectVersion) { return mergeFrom((org.xtreemfs.pbrpc.generatedinterfaces.OSD.ObjectVersion)other); @@ -1784,7 +3354,7 @@ public final class OSD { return this; } } - + public Builder mergeFrom(org.xtreemfs.pbrpc.generatedinterfaces.OSD.ObjectVersion other) { if (other == org.xtreemfs.pbrpc.generatedinterfaces.OSD.ObjectVersion.getDefaultInstance()) return this; if (other.hasObjectNumber()) { @@ -1796,311 +3366,491 @@ public final class OSD { this.mergeUnknownFields(other.getUnknownFields()); return this; } - + + public final boolean isInitialized() { + if (!hasObjectNumber()) { + + return false; + } + if (!hasObjectVersion()) { + + return false; + } + return true; + } + public Builder mergeFrom( com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - com.google.protobuf.UnknownFieldSet.Builder unknownFields = - com.google.protobuf.UnknownFieldSet.newBuilder( - this.getUnknownFields()); - while (true) { - int tag = input.readTag(); - switch (tag) { - case 0: - this.setUnknownFields(unknownFields.build()); - return this; - default: { - if (!parseUnknownField(input, unknownFields, - extensionRegistry, tag)) { - this.setUnknownFields(unknownFields.build()); - return this; - } - break; - } - case 9: { - setObjectNumber(input.readFixed64()); - break; - } - case 17: { - setObjectVersion(input.readFixed64()); - break; - } + org.xtreemfs.pbrpc.generatedinterfaces.OSD.ObjectVersion parsedMessage = null; + try { + parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + parsedMessage = (org.xtreemfs.pbrpc.generatedinterfaces.OSD.ObjectVersion) e.getUnfinishedMessage(); + throw e; + } finally { + if (parsedMessage != null) { + mergeFrom(parsedMessage); } } + return this; } - - + private int bitField0_; + // required fixed64 object_number = 1; + private long objectNumber_ ; + /** + * required fixed64 object_number = 1; + */ public boolean hasObjectNumber() { - return result.hasObjectNumber(); + return ((bitField0_ & 0x00000001) == 0x00000001); } + /** + * required fixed64 object_number = 1; + */ public long getObjectNumber() { - return result.getObjectNumber(); + return objectNumber_; } + /** + * required fixed64 object_number = 1; + */ public Builder setObjectNumber(long value) { - result.hasObjectNumber = true; - result.objectNumber_ = value; + bitField0_ |= 0x00000001; + objectNumber_ = value; + onChanged(); return this; } + /** + * required fixed64 object_number = 1; + */ public Builder clearObjectNumber() { - result.hasObjectNumber = false; - result.objectNumber_ = 0L; + bitField0_ = (bitField0_ & ~0x00000001); + objectNumber_ = 0L; + onChanged(); return this; } - + // required fixed64 object_version = 2; + private long objectVersion_ ; + /** + * required fixed64 object_version = 2; + */ public boolean hasObjectVersion() { - return result.hasObjectVersion(); + return ((bitField0_ & 0x00000002) == 0x00000002); } + /** + * required fixed64 object_version = 2; + */ public long getObjectVersion() { - return result.getObjectVersion(); + return objectVersion_; } + /** + * required fixed64 object_version = 2; + */ public Builder setObjectVersion(long value) { - result.hasObjectVersion = true; - result.objectVersion_ = value; + bitField0_ |= 0x00000002; + objectVersion_ = value; + onChanged(); return this; } + /** + * required fixed64 object_version = 2; + */ public Builder clearObjectVersion() { - result.hasObjectVersion = false; - result.objectVersion_ = 0L; + bitField0_ = (bitField0_ & ~0x00000002); + objectVersion_ = 0L; + onChanged(); return this; } - + // @@protoc_insertion_point(builder_scope:xtreemfs.pbrpc.ObjectVersion) } - + static { defaultInstance = new ObjectVersion(true); - org.xtreemfs.pbrpc.generatedinterfaces.OSD.internalForceInit(); defaultInstance.initFields(); } - + // @@protoc_insertion_point(class_scope:xtreemfs.pbrpc.ObjectVersion) } - + + public interface TruncateRecordOrBuilder + extends com.google.protobuf.MessageOrBuilder { + + // required fixed64 version = 1; + /** + * required fixed64 version = 1; + */ + boolean hasVersion(); + /** + * required fixed64 version = 1; + */ + long getVersion(); + + // required fixed64 last_object_number = 2; + /** + * required fixed64 last_object_number = 2; + */ + boolean hasLastObjectNumber(); + /** + * required fixed64 last_object_number = 2; + */ + long getLastObjectNumber(); + } + /** + * Protobuf type {@code xtreemfs.pbrpc.TruncateRecord} + * + *
+   * Entry for the truncate log required by the read-write
+   * replication. For each truncate, a version number is
+   * assigned and a record is appended to the truncate log.
+   * 
+ */ public static final class TruncateRecord extends - com.google.protobuf.GeneratedMessage { + com.google.protobuf.GeneratedMessage + implements TruncateRecordOrBuilder { // Use TruncateRecord.newBuilder() to construct. - private TruncateRecord() { - initFields(); + private TruncateRecord(com.google.protobuf.GeneratedMessage.Builder builder) { + super(builder); + this.unknownFields = builder.getUnknownFields(); } - private TruncateRecord(boolean noInit) {} - + private TruncateRecord(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); } + private static final TruncateRecord defaultInstance; public static TruncateRecord getDefaultInstance() { return defaultInstance; } - + public TruncateRecord getDefaultInstanceForType() { return defaultInstance; } - + + private final com.google.protobuf.UnknownFieldSet unknownFields; + @java.lang.Override + public final com.google.protobuf.UnknownFieldSet + getUnknownFields() { + return this.unknownFields; + } + private TruncateRecord( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + initFields(); + int mutable_bitField0_ = 0; + com.google.protobuf.UnknownFieldSet.Builder unknownFields = + com.google.protobuf.UnknownFieldSet.newBuilder(); + try { + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch (tag) { + case 0: + done = true; + break; + default: { + if (!parseUnknownField(input, unknownFields, + extensionRegistry, tag)) { + done = true; + } + break; + } + case 9: { + bitField0_ |= 0x00000001; + version_ = input.readFixed64(); + break; + } + case 17: { + bitField0_ |= 0x00000002; + lastObjectNumber_ = input.readFixed64(); + break; + } + } + } + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(this); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException( + e.getMessage()).setUnfinishedMessage(this); + } finally { + this.unknownFields = unknownFields.build(); + makeExtensionsImmutable(); + } + } public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { return org.xtreemfs.pbrpc.generatedinterfaces.OSD.internal_static_xtreemfs_pbrpc_TruncateRecord_descriptor; } - + protected com.google.protobuf.GeneratedMessage.FieldAccessorTable internalGetFieldAccessorTable() { - return org.xtreemfs.pbrpc.generatedinterfaces.OSD.internal_static_xtreemfs_pbrpc_TruncateRecord_fieldAccessorTable; + return org.xtreemfs.pbrpc.generatedinterfaces.OSD.internal_static_xtreemfs_pbrpc_TruncateRecord_fieldAccessorTable + .ensureFieldAccessorsInitialized( + org.xtreemfs.pbrpc.generatedinterfaces.OSD.TruncateRecord.class, org.xtreemfs.pbrpc.generatedinterfaces.OSD.TruncateRecord.Builder.class); + } + + public static com.google.protobuf.Parser PARSER = + new com.google.protobuf.AbstractParser() { + public TruncateRecord parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return new TruncateRecord(input, extensionRegistry); + } + }; + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; } - + + private int bitField0_; // required fixed64 version = 1; public static final int VERSION_FIELD_NUMBER = 1; - private boolean hasVersion; - private long version_ = 0L; - public boolean hasVersion() { return hasVersion; } - public long getVersion() { return version_; } - + private long version_; + /** + * required fixed64 version = 1; + */ + public boolean hasVersion() { + return ((bitField0_ & 0x00000001) == 0x00000001); + } + /** + * required fixed64 version = 1; + */ + public long getVersion() { + return version_; + } + // required fixed64 last_object_number = 2; public static final int LAST_OBJECT_NUMBER_FIELD_NUMBER = 2; - private boolean hasLastObjectNumber; - private long lastObjectNumber_ = 0L; - public boolean hasLastObjectNumber() { return hasLastObjectNumber; } - public long getLastObjectNumber() { return lastObjectNumber_; } - + private long lastObjectNumber_; + /** + * required fixed64 last_object_number = 2; + */ + public boolean hasLastObjectNumber() { + return ((bitField0_ & 0x00000002) == 0x00000002); + } + /** + * required fixed64 last_object_number = 2; + */ + public long getLastObjectNumber() { + return lastObjectNumber_; + } + private void initFields() { + version_ = 0L; + lastObjectNumber_ = 0L; } + private byte memoizedIsInitialized = -1; public final boolean isInitialized() { - if (!hasVersion) return false; - if (!hasLastObjectNumber) return false; + byte isInitialized = memoizedIsInitialized; + if (isInitialized != -1) return isInitialized == 1; + + if (!hasVersion()) { + memoizedIsInitialized = 0; + return false; + } + if (!hasLastObjectNumber()) { + memoizedIsInitialized = 0; + return false; + } + memoizedIsInitialized = 1; return true; } - + public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException { getSerializedSize(); - if (hasVersion()) { - output.writeFixed64(1, getVersion()); + if (((bitField0_ & 0x00000001) == 0x00000001)) { + output.writeFixed64(1, version_); } - if (hasLastObjectNumber()) { - output.writeFixed64(2, getLastObjectNumber()); + if (((bitField0_ & 0x00000002) == 0x00000002)) { + output.writeFixed64(2, lastObjectNumber_); } getUnknownFields().writeTo(output); } - + private int memoizedSerializedSize = -1; public int getSerializedSize() { int size = memoizedSerializedSize; if (size != -1) return size; - + size = 0; - if (hasVersion()) { + if (((bitField0_ & 0x00000001) == 0x00000001)) { size += com.google.protobuf.CodedOutputStream - .computeFixed64Size(1, getVersion()); + .computeFixed64Size(1, version_); } - if (hasLastObjectNumber()) { + if (((bitField0_ & 0x00000002) == 0x00000002)) { size += com.google.protobuf.CodedOutputStream - .computeFixed64Size(2, getLastObjectNumber()); + .computeFixed64Size(2, lastObjectNumber_); } size += getUnknownFields().getSerializedSize(); memoizedSerializedSize = size; return size; } - + + private static final long serialVersionUID = 0L; + @java.lang.Override + protected java.lang.Object writeReplace() + throws java.io.ObjectStreamException { + return super.writeReplace(); + } + public static org.xtreemfs.pbrpc.generatedinterfaces.OSD.TruncateRecord parseFrom( com.google.protobuf.ByteString data) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data).buildParsed(); + return PARSER.parseFrom(data); } public static org.xtreemfs.pbrpc.generatedinterfaces.OSD.TruncateRecord parseFrom( com.google.protobuf.ByteString data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(data, extensionRegistry); } public static org.xtreemfs.pbrpc.generatedinterfaces.OSD.TruncateRecord parseFrom(byte[] data) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data).buildParsed(); + return PARSER.parseFrom(data); } public static org.xtreemfs.pbrpc.generatedinterfaces.OSD.TruncateRecord parseFrom( byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(data, extensionRegistry); } public static org.xtreemfs.pbrpc.generatedinterfaces.OSD.TruncateRecord parseFrom(java.io.InputStream input) throws java.io.IOException { - return newBuilder().mergeFrom(input).buildParsed(); + return PARSER.parseFrom(input); } public static org.xtreemfs.pbrpc.generatedinterfaces.OSD.TruncateRecord parseFrom( java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - return newBuilder().mergeFrom(input, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(input, extensionRegistry); } public static org.xtreemfs.pbrpc.generatedinterfaces.OSD.TruncateRecord parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException { - Builder builder = newBuilder(); - if (builder.mergeDelimitedFrom(input)) { - return builder.buildParsed(); - } else { - return null; - } + return PARSER.parseDelimitedFrom(input); } public static org.xtreemfs.pbrpc.generatedinterfaces.OSD.TruncateRecord parseDelimitedFrom( java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - Builder builder = newBuilder(); - if (builder.mergeDelimitedFrom(input, extensionRegistry)) { - return builder.buildParsed(); - } else { - return null; - } + return PARSER.parseDelimitedFrom(input, extensionRegistry); } public static org.xtreemfs.pbrpc.generatedinterfaces.OSD.TruncateRecord parseFrom( com.google.protobuf.CodedInputStream input) throws java.io.IOException { - return newBuilder().mergeFrom(input).buildParsed(); + return PARSER.parseFrom(input); } public static org.xtreemfs.pbrpc.generatedinterfaces.OSD.TruncateRecord parseFrom( com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - return newBuilder().mergeFrom(input, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(input, extensionRegistry); } - + public static Builder newBuilder() { return Builder.create(); } public Builder newBuilderForType() { return newBuilder(); } public static Builder newBuilder(org.xtreemfs.pbrpc.generatedinterfaces.OSD.TruncateRecord prototype) { return newBuilder().mergeFrom(prototype); } public Builder toBuilder() { return newBuilder(this); } - + + @java.lang.Override + protected Builder newBuilderForType( + com.google.protobuf.GeneratedMessage.BuilderParent parent) { + Builder builder = new Builder(parent); + return builder; + } + /** + * Protobuf type {@code xtreemfs.pbrpc.TruncateRecord} + * + *
+     * Entry for the truncate log required by the read-write
+     * replication. For each truncate, a version number is
+     * assigned and a record is appended to the truncate log.
+     * 
+ */ public static final class Builder extends - com.google.protobuf.GeneratedMessage.Builder { - private org.xtreemfs.pbrpc.generatedinterfaces.OSD.TruncateRecord result; - + com.google.protobuf.GeneratedMessage.Builder + implements org.xtreemfs.pbrpc.generatedinterfaces.OSD.TruncateRecordOrBuilder { + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return org.xtreemfs.pbrpc.generatedinterfaces.OSD.internal_static_xtreemfs_pbrpc_TruncateRecord_descriptor; + } + + protected com.google.protobuf.GeneratedMessage.FieldAccessorTable + internalGetFieldAccessorTable() { + return org.xtreemfs.pbrpc.generatedinterfaces.OSD.internal_static_xtreemfs_pbrpc_TruncateRecord_fieldAccessorTable + .ensureFieldAccessorsInitialized( + org.xtreemfs.pbrpc.generatedinterfaces.OSD.TruncateRecord.class, org.xtreemfs.pbrpc.generatedinterfaces.OSD.TruncateRecord.Builder.class); + } + // Construct using org.xtreemfs.pbrpc.generatedinterfaces.OSD.TruncateRecord.newBuilder() - private Builder() {} - - private static Builder create() { - Builder builder = new Builder(); - builder.result = new org.xtreemfs.pbrpc.generatedinterfaces.OSD.TruncateRecord(); - return builder; + private Builder() { + maybeForceBuilderInitialization(); } - - protected org.xtreemfs.pbrpc.generatedinterfaces.OSD.TruncateRecord internalGetResult() { - return result; + + private Builder( + com.google.protobuf.GeneratedMessage.BuilderParent parent) { + super(parent); + maybeForceBuilderInitialization(); } - - public Builder clear() { - if (result == null) { - throw new IllegalStateException( - "Cannot call clear() after build()."); + private void maybeForceBuilderInitialization() { + if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) { } - result = new org.xtreemfs.pbrpc.generatedinterfaces.OSD.TruncateRecord(); + } + private static Builder create() { + return new Builder(); + } + + public Builder clear() { + super.clear(); + version_ = 0L; + bitField0_ = (bitField0_ & ~0x00000001); + lastObjectNumber_ = 0L; + bitField0_ = (bitField0_ & ~0x00000002); return this; } - + public Builder clone() { - return create().mergeFrom(result); + return create().mergeFrom(buildPartial()); } - + public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() { - return org.xtreemfs.pbrpc.generatedinterfaces.OSD.TruncateRecord.getDescriptor(); + return org.xtreemfs.pbrpc.generatedinterfaces.OSD.internal_static_xtreemfs_pbrpc_TruncateRecord_descriptor; } - + public org.xtreemfs.pbrpc.generatedinterfaces.OSD.TruncateRecord getDefaultInstanceForType() { return org.xtreemfs.pbrpc.generatedinterfaces.OSD.TruncateRecord.getDefaultInstance(); } - - public boolean isInitialized() { - return result.isInitialized(); - } + public org.xtreemfs.pbrpc.generatedinterfaces.OSD.TruncateRecord build() { - if (result != null && !isInitialized()) { + org.xtreemfs.pbrpc.generatedinterfaces.OSD.TruncateRecord result = buildPartial(); + if (!result.isInitialized()) { throw newUninitializedMessageException(result); } - return buildPartial(); - } - - private org.xtreemfs.pbrpc.generatedinterfaces.OSD.TruncateRecord buildParsed() - throws com.google.protobuf.InvalidProtocolBufferException { - if (!isInitialized()) { - throw newUninitializedMessageException( - result).asInvalidProtocolBufferException(); - } - return buildPartial(); + return result; } - + public org.xtreemfs.pbrpc.generatedinterfaces.OSD.TruncateRecord buildPartial() { - if (result == null) { - throw new IllegalStateException( - "build() has already been called on this Builder."); - } - org.xtreemfs.pbrpc.generatedinterfaces.OSD.TruncateRecord returnMe = result; - result = null; - return returnMe; + org.xtreemfs.pbrpc.generatedinterfaces.OSD.TruncateRecord result = new org.xtreemfs.pbrpc.generatedinterfaces.OSD.TruncateRecord(this); + int from_bitField0_ = bitField0_; + int to_bitField0_ = 0; + if (((from_bitField0_ & 0x00000001) == 0x00000001)) { + to_bitField0_ |= 0x00000001; + } + result.version_ = version_; + if (((from_bitField0_ & 0x00000002) == 0x00000002)) { + to_bitField0_ |= 0x00000002; + } + result.lastObjectNumber_ = lastObjectNumber_; + result.bitField0_ = to_bitField0_; + onBuilt(); + return result; } - + public Builder mergeFrom(com.google.protobuf.Message other) { if (other instanceof org.xtreemfs.pbrpc.generatedinterfaces.OSD.TruncateRecord) { return mergeFrom((org.xtreemfs.pbrpc.generatedinterfaces.OSD.TruncateRecord)other); @@ -2109,7 +3859,7 @@ public final class OSD { return this; } } - + public Builder mergeFrom(org.xtreemfs.pbrpc.generatedinterfaces.OSD.TruncateRecord other) { if (other == org.xtreemfs.pbrpc.generatedinterfaces.OSD.TruncateRecord.getDefaultInstance()) return this; if (other.hasVersion()) { @@ -2121,307 +3871,480 @@ public final class OSD { this.mergeUnknownFields(other.getUnknownFields()); return this; } - + + public final boolean isInitialized() { + if (!hasVersion()) { + + return false; + } + if (!hasLastObjectNumber()) { + + return false; + } + return true; + } + public Builder mergeFrom( com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - com.google.protobuf.UnknownFieldSet.Builder unknownFields = - com.google.protobuf.UnknownFieldSet.newBuilder( - this.getUnknownFields()); - while (true) { - int tag = input.readTag(); - switch (tag) { - case 0: - this.setUnknownFields(unknownFields.build()); - return this; - default: { - if (!parseUnknownField(input, unknownFields, - extensionRegistry, tag)) { - this.setUnknownFields(unknownFields.build()); - return this; - } - break; - } - case 9: { - setVersion(input.readFixed64()); - break; - } - case 17: { - setLastObjectNumber(input.readFixed64()); - break; - } + org.xtreemfs.pbrpc.generatedinterfaces.OSD.TruncateRecord parsedMessage = null; + try { + parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + parsedMessage = (org.xtreemfs.pbrpc.generatedinterfaces.OSD.TruncateRecord) e.getUnfinishedMessage(); + throw e; + } finally { + if (parsedMessage != null) { + mergeFrom(parsedMessage); } } + return this; } - - + private int bitField0_; + // required fixed64 version = 1; + private long version_ ; + /** + * required fixed64 version = 1; + */ public boolean hasVersion() { - return result.hasVersion(); + return ((bitField0_ & 0x00000001) == 0x00000001); } + /** + * required fixed64 version = 1; + */ public long getVersion() { - return result.getVersion(); + return version_; } + /** + * required fixed64 version = 1; + */ public Builder setVersion(long value) { - result.hasVersion = true; - result.version_ = value; + bitField0_ |= 0x00000001; + version_ = value; + onChanged(); return this; } + /** + * required fixed64 version = 1; + */ public Builder clearVersion() { - result.hasVersion = false; - result.version_ = 0L; + bitField0_ = (bitField0_ & ~0x00000001); + version_ = 0L; + onChanged(); return this; } - + // required fixed64 last_object_number = 2; + private long lastObjectNumber_ ; + /** + * required fixed64 last_object_number = 2; + */ public boolean hasLastObjectNumber() { - return result.hasLastObjectNumber(); + return ((bitField0_ & 0x00000002) == 0x00000002); } + /** + * required fixed64 last_object_number = 2; + */ public long getLastObjectNumber() { - return result.getLastObjectNumber(); + return lastObjectNumber_; } + /** + * required fixed64 last_object_number = 2; + */ public Builder setLastObjectNumber(long value) { - result.hasLastObjectNumber = true; - result.lastObjectNumber_ = value; + bitField0_ |= 0x00000002; + lastObjectNumber_ = value; + onChanged(); return this; } + /** + * required fixed64 last_object_number = 2; + */ public Builder clearLastObjectNumber() { - result.hasLastObjectNumber = false; - result.lastObjectNumber_ = 0L; + bitField0_ = (bitField0_ & ~0x00000002); + lastObjectNumber_ = 0L; + onChanged(); return this; } - + // @@protoc_insertion_point(builder_scope:xtreemfs.pbrpc.TruncateRecord) } - + static { defaultInstance = new TruncateRecord(true); - org.xtreemfs.pbrpc.generatedinterfaces.OSD.internalForceInit(); defaultInstance.initFields(); } - + // @@protoc_insertion_point(class_scope:xtreemfs.pbrpc.TruncateRecord) } - + + public interface TruncateLogOrBuilder + extends com.google.protobuf.MessageOrBuilder { + + // repeated .xtreemfs.pbrpc.TruncateRecord records = 1; + /** + * repeated .xtreemfs.pbrpc.TruncateRecord records = 1; + */ + java.util.List + getRecordsList(); + /** + * repeated .xtreemfs.pbrpc.TruncateRecord records = 1; + */ + org.xtreemfs.pbrpc.generatedinterfaces.OSD.TruncateRecord getRecords(int index); + /** + * repeated .xtreemfs.pbrpc.TruncateRecord records = 1; + */ + int getRecordsCount(); + /** + * repeated .xtreemfs.pbrpc.TruncateRecord records = 1; + */ + java.util.List + getRecordsOrBuilderList(); + /** + * repeated .xtreemfs.pbrpc.TruncateRecord records = 1; + */ + org.xtreemfs.pbrpc.generatedinterfaces.OSD.TruncateRecordOrBuilder getRecordsOrBuilder( + int index); + } + /** + * Protobuf type {@code xtreemfs.pbrpc.TruncateLog} + */ public static final class TruncateLog extends - com.google.protobuf.GeneratedMessage { + com.google.protobuf.GeneratedMessage + implements TruncateLogOrBuilder { // Use TruncateLog.newBuilder() to construct. - private TruncateLog() { - initFields(); + private TruncateLog(com.google.protobuf.GeneratedMessage.Builder builder) { + super(builder); + this.unknownFields = builder.getUnknownFields(); } - private TruncateLog(boolean noInit) {} - + private TruncateLog(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); } + private static final TruncateLog defaultInstance; public static TruncateLog getDefaultInstance() { return defaultInstance; } - + public TruncateLog getDefaultInstanceForType() { return defaultInstance; } - + + private final com.google.protobuf.UnknownFieldSet unknownFields; + @java.lang.Override + public final com.google.protobuf.UnknownFieldSet + getUnknownFields() { + return this.unknownFields; + } + private TruncateLog( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + initFields(); + int mutable_bitField0_ = 0; + com.google.protobuf.UnknownFieldSet.Builder unknownFields = + com.google.protobuf.UnknownFieldSet.newBuilder(); + try { + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch (tag) { + case 0: + done = true; + break; + default: { + if (!parseUnknownField(input, unknownFields, + extensionRegistry, tag)) { + done = true; + } + break; + } + case 10: { + if (!((mutable_bitField0_ & 0x00000001) == 0x00000001)) { + records_ = new java.util.ArrayList(); + mutable_bitField0_ |= 0x00000001; + } + records_.add(input.readMessage(org.xtreemfs.pbrpc.generatedinterfaces.OSD.TruncateRecord.PARSER, extensionRegistry)); + break; + } + } + } + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(this); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException( + e.getMessage()).setUnfinishedMessage(this); + } finally { + if (((mutable_bitField0_ & 0x00000001) == 0x00000001)) { + records_ = java.util.Collections.unmodifiableList(records_); + } + this.unknownFields = unknownFields.build(); + makeExtensionsImmutable(); + } + } public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { return org.xtreemfs.pbrpc.generatedinterfaces.OSD.internal_static_xtreemfs_pbrpc_TruncateLog_descriptor; } - + protected com.google.protobuf.GeneratedMessage.FieldAccessorTable internalGetFieldAccessorTable() { - return org.xtreemfs.pbrpc.generatedinterfaces.OSD.internal_static_xtreemfs_pbrpc_TruncateLog_fieldAccessorTable; + return org.xtreemfs.pbrpc.generatedinterfaces.OSD.internal_static_xtreemfs_pbrpc_TruncateLog_fieldAccessorTable + .ensureFieldAccessorsInitialized( + org.xtreemfs.pbrpc.generatedinterfaces.OSD.TruncateLog.class, org.xtreemfs.pbrpc.generatedinterfaces.OSD.TruncateLog.Builder.class); + } + + public static com.google.protobuf.Parser PARSER = + new com.google.protobuf.AbstractParser() { + public TruncateLog parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return new TruncateLog(input, extensionRegistry); + } + }; + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; } - + // repeated .xtreemfs.pbrpc.TruncateRecord records = 1; public static final int RECORDS_FIELD_NUMBER = 1; - private java.util.List records_ = - java.util.Collections.emptyList(); + private java.util.List records_; + /** + * repeated .xtreemfs.pbrpc.TruncateRecord records = 1; + */ public java.util.List getRecordsList() { return records_; } - public int getRecordsCount() { return records_.size(); } + /** + * repeated .xtreemfs.pbrpc.TruncateRecord records = 1; + */ + public java.util.List + getRecordsOrBuilderList() { + return records_; + } + /** + * repeated .xtreemfs.pbrpc.TruncateRecord records = 1; + */ + public int getRecordsCount() { + return records_.size(); + } + /** + * repeated .xtreemfs.pbrpc.TruncateRecord records = 1; + */ public org.xtreemfs.pbrpc.generatedinterfaces.OSD.TruncateRecord getRecords(int index) { return records_.get(index); } - + /** + * repeated .xtreemfs.pbrpc.TruncateRecord records = 1; + */ + public org.xtreemfs.pbrpc.generatedinterfaces.OSD.TruncateRecordOrBuilder getRecordsOrBuilder( + int index) { + return records_.get(index); + } + private void initFields() { + records_ = java.util.Collections.emptyList(); } + private byte memoizedIsInitialized = -1; public final boolean isInitialized() { - for (org.xtreemfs.pbrpc.generatedinterfaces.OSD.TruncateRecord element : getRecordsList()) { - if (!element.isInitialized()) return false; + byte isInitialized = memoizedIsInitialized; + if (isInitialized != -1) return isInitialized == 1; + + for (int i = 0; i < getRecordsCount(); i++) { + if (!getRecords(i).isInitialized()) { + memoizedIsInitialized = 0; + return false; + } } + memoizedIsInitialized = 1; return true; } - + public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException { getSerializedSize(); - for (org.xtreemfs.pbrpc.generatedinterfaces.OSD.TruncateRecord element : getRecordsList()) { - output.writeMessage(1, element); + for (int i = 0; i < records_.size(); i++) { + output.writeMessage(1, records_.get(i)); } getUnknownFields().writeTo(output); } - + private int memoizedSerializedSize = -1; public int getSerializedSize() { int size = memoizedSerializedSize; if (size != -1) return size; - + size = 0; - for (org.xtreemfs.pbrpc.generatedinterfaces.OSD.TruncateRecord element : getRecordsList()) { + for (int i = 0; i < records_.size(); i++) { size += com.google.protobuf.CodedOutputStream - .computeMessageSize(1, element); + .computeMessageSize(1, records_.get(i)); } size += getUnknownFields().getSerializedSize(); memoizedSerializedSize = size; return size; } - + + private static final long serialVersionUID = 0L; + @java.lang.Override + protected java.lang.Object writeReplace() + throws java.io.ObjectStreamException { + return super.writeReplace(); + } + public static org.xtreemfs.pbrpc.generatedinterfaces.OSD.TruncateLog parseFrom( com.google.protobuf.ByteString data) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data).buildParsed(); + return PARSER.parseFrom(data); } public static org.xtreemfs.pbrpc.generatedinterfaces.OSD.TruncateLog parseFrom( com.google.protobuf.ByteString data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(data, extensionRegistry); } public static org.xtreemfs.pbrpc.generatedinterfaces.OSD.TruncateLog parseFrom(byte[] data) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data).buildParsed(); + return PARSER.parseFrom(data); } public static org.xtreemfs.pbrpc.generatedinterfaces.OSD.TruncateLog parseFrom( byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(data, extensionRegistry); } public static org.xtreemfs.pbrpc.generatedinterfaces.OSD.TruncateLog parseFrom(java.io.InputStream input) throws java.io.IOException { - return newBuilder().mergeFrom(input).buildParsed(); + return PARSER.parseFrom(input); } public static org.xtreemfs.pbrpc.generatedinterfaces.OSD.TruncateLog parseFrom( java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - return newBuilder().mergeFrom(input, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(input, extensionRegistry); } public static org.xtreemfs.pbrpc.generatedinterfaces.OSD.TruncateLog parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException { - Builder builder = newBuilder(); - if (builder.mergeDelimitedFrom(input)) { - return builder.buildParsed(); - } else { - return null; - } + return PARSER.parseDelimitedFrom(input); } public static org.xtreemfs.pbrpc.generatedinterfaces.OSD.TruncateLog parseDelimitedFrom( java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - Builder builder = newBuilder(); - if (builder.mergeDelimitedFrom(input, extensionRegistry)) { - return builder.buildParsed(); - } else { - return null; - } + return PARSER.parseDelimitedFrom(input, extensionRegistry); } public static org.xtreemfs.pbrpc.generatedinterfaces.OSD.TruncateLog parseFrom( com.google.protobuf.CodedInputStream input) throws java.io.IOException { - return newBuilder().mergeFrom(input).buildParsed(); + return PARSER.parseFrom(input); } public static org.xtreemfs.pbrpc.generatedinterfaces.OSD.TruncateLog parseFrom( com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - return newBuilder().mergeFrom(input, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(input, extensionRegistry); } - + public static Builder newBuilder() { return Builder.create(); } public Builder newBuilderForType() { return newBuilder(); } public static Builder newBuilder(org.xtreemfs.pbrpc.generatedinterfaces.OSD.TruncateLog prototype) { return newBuilder().mergeFrom(prototype); } public Builder toBuilder() { return newBuilder(this); } - + + @java.lang.Override + protected Builder newBuilderForType( + com.google.protobuf.GeneratedMessage.BuilderParent parent) { + Builder builder = new Builder(parent); + return builder; + } + /** + * Protobuf type {@code xtreemfs.pbrpc.TruncateLog} + */ public static final class Builder extends - com.google.protobuf.GeneratedMessage.Builder { - private org.xtreemfs.pbrpc.generatedinterfaces.OSD.TruncateLog result; - + com.google.protobuf.GeneratedMessage.Builder + implements org.xtreemfs.pbrpc.generatedinterfaces.OSD.TruncateLogOrBuilder { + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return org.xtreemfs.pbrpc.generatedinterfaces.OSD.internal_static_xtreemfs_pbrpc_TruncateLog_descriptor; + } + + protected com.google.protobuf.GeneratedMessage.FieldAccessorTable + internalGetFieldAccessorTable() { + return org.xtreemfs.pbrpc.generatedinterfaces.OSD.internal_static_xtreemfs_pbrpc_TruncateLog_fieldAccessorTable + .ensureFieldAccessorsInitialized( + org.xtreemfs.pbrpc.generatedinterfaces.OSD.TruncateLog.class, org.xtreemfs.pbrpc.generatedinterfaces.OSD.TruncateLog.Builder.class); + } + // Construct using org.xtreemfs.pbrpc.generatedinterfaces.OSD.TruncateLog.newBuilder() - private Builder() {} - - private static Builder create() { - Builder builder = new Builder(); - builder.result = new org.xtreemfs.pbrpc.generatedinterfaces.OSD.TruncateLog(); - return builder; + private Builder() { + maybeForceBuilderInitialization(); } - - protected org.xtreemfs.pbrpc.generatedinterfaces.OSD.TruncateLog internalGetResult() { - return result; + + private Builder( + com.google.protobuf.GeneratedMessage.BuilderParent parent) { + super(parent); + maybeForceBuilderInitialization(); + } + private void maybeForceBuilderInitialization() { + if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) { + getRecordsFieldBuilder(); + } } - + private static Builder create() { + return new Builder(); + } + public Builder clear() { - if (result == null) { - throw new IllegalStateException( - "Cannot call clear() after build()."); + super.clear(); + if (recordsBuilder_ == null) { + records_ = java.util.Collections.emptyList(); + bitField0_ = (bitField0_ & ~0x00000001); + } else { + recordsBuilder_.clear(); } - result = new org.xtreemfs.pbrpc.generatedinterfaces.OSD.TruncateLog(); return this; } - + public Builder clone() { - return create().mergeFrom(result); + return create().mergeFrom(buildPartial()); } - + public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() { - return org.xtreemfs.pbrpc.generatedinterfaces.OSD.TruncateLog.getDescriptor(); + return org.xtreemfs.pbrpc.generatedinterfaces.OSD.internal_static_xtreemfs_pbrpc_TruncateLog_descriptor; } - + public org.xtreemfs.pbrpc.generatedinterfaces.OSD.TruncateLog getDefaultInstanceForType() { return org.xtreemfs.pbrpc.generatedinterfaces.OSD.TruncateLog.getDefaultInstance(); } - - public boolean isInitialized() { - return result.isInitialized(); - } + public org.xtreemfs.pbrpc.generatedinterfaces.OSD.TruncateLog build() { - if (result != null && !isInitialized()) { + org.xtreemfs.pbrpc.generatedinterfaces.OSD.TruncateLog result = buildPartial(); + if (!result.isInitialized()) { throw newUninitializedMessageException(result); } - return buildPartial(); - } - - private org.xtreemfs.pbrpc.generatedinterfaces.OSD.TruncateLog buildParsed() - throws com.google.protobuf.InvalidProtocolBufferException { - if (!isInitialized()) { - throw newUninitializedMessageException( - result).asInvalidProtocolBufferException(); - } - return buildPartial(); + return result; } - + public org.xtreemfs.pbrpc.generatedinterfaces.OSD.TruncateLog buildPartial() { - if (result == null) { - throw new IllegalStateException( - "build() has already been called on this Builder."); - } - if (result.records_ != java.util.Collections.EMPTY_LIST) { - result.records_ = - java.util.Collections.unmodifiableList(result.records_); + org.xtreemfs.pbrpc.generatedinterfaces.OSD.TruncateLog result = new org.xtreemfs.pbrpc.generatedinterfaces.OSD.TruncateLog(this); + int from_bitField0_ = bitField0_; + if (recordsBuilder_ == null) { + if (((bitField0_ & 0x00000001) == 0x00000001)) { + records_ = java.util.Collections.unmodifiableList(records_); + bitField0_ = (bitField0_ & ~0x00000001); + } + result.records_ = records_; + } else { + result.records_ = recordsBuilder_.build(); } - org.xtreemfs.pbrpc.generatedinterfaces.OSD.TruncateLog returnMe = result; - result = null; - return returnMe; + onBuilt(); + return result; } - + public Builder mergeFrom(com.google.protobuf.Message other) { if (other instanceof org.xtreemfs.pbrpc.generatedinterfaces.OSD.TruncateLog) { return mergeFrom((org.xtreemfs.pbrpc.generatedinterfaces.OSD.TruncateLog)other); @@ -2430,409 +4353,1101 @@ public final class OSD { return this; } } - + public Builder mergeFrom(org.xtreemfs.pbrpc.generatedinterfaces.OSD.TruncateLog other) { if (other == org.xtreemfs.pbrpc.generatedinterfaces.OSD.TruncateLog.getDefaultInstance()) return this; - if (!other.records_.isEmpty()) { - if (result.records_.isEmpty()) { - result.records_ = new java.util.ArrayList(); + if (recordsBuilder_ == null) { + if (!other.records_.isEmpty()) { + if (records_.isEmpty()) { + records_ = other.records_; + bitField0_ = (bitField0_ & ~0x00000001); + } else { + ensureRecordsIsMutable(); + records_.addAll(other.records_); + } + onChanged(); + } + } else { + if (!other.records_.isEmpty()) { + if (recordsBuilder_.isEmpty()) { + recordsBuilder_.dispose(); + recordsBuilder_ = null; + records_ = other.records_; + bitField0_ = (bitField0_ & ~0x00000001); + recordsBuilder_ = + com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ? + getRecordsFieldBuilder() : null; + } else { + recordsBuilder_.addAllMessages(other.records_); + } } - result.records_.addAll(other.records_); } this.mergeUnknownFields(other.getUnknownFields()); return this; } - + + public final boolean isInitialized() { + for (int i = 0; i < getRecordsCount(); i++) { + if (!getRecords(i).isInitialized()) { + + return false; + } + } + return true; + } + public Builder mergeFrom( com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - com.google.protobuf.UnknownFieldSet.Builder unknownFields = - com.google.protobuf.UnknownFieldSet.newBuilder( - this.getUnknownFields()); - while (true) { - int tag = input.readTag(); - switch (tag) { - case 0: - this.setUnknownFields(unknownFields.build()); - return this; - default: { - if (!parseUnknownField(input, unknownFields, - extensionRegistry, tag)) { - this.setUnknownFields(unknownFields.build()); - return this; - } - break; - } - case 10: { - org.xtreemfs.pbrpc.generatedinterfaces.OSD.TruncateRecord.Builder subBuilder = org.xtreemfs.pbrpc.generatedinterfaces.OSD.TruncateRecord.newBuilder(); - input.readMessage(subBuilder, extensionRegistry); - addRecords(subBuilder.buildPartial()); - break; - } + org.xtreemfs.pbrpc.generatedinterfaces.OSD.TruncateLog parsedMessage = null; + try { + parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + parsedMessage = (org.xtreemfs.pbrpc.generatedinterfaces.OSD.TruncateLog) e.getUnfinishedMessage(); + throw e; + } finally { + if (parsedMessage != null) { + mergeFrom(parsedMessage); } } + return this; } - - + private int bitField0_; + // repeated .xtreemfs.pbrpc.TruncateRecord records = 1; + private java.util.List records_ = + java.util.Collections.emptyList(); + private void ensureRecordsIsMutable() { + if (!((bitField0_ & 0x00000001) == 0x00000001)) { + records_ = new java.util.ArrayList(records_); + bitField0_ |= 0x00000001; + } + } + + private com.google.protobuf.RepeatedFieldBuilder< + org.xtreemfs.pbrpc.generatedinterfaces.OSD.TruncateRecord, org.xtreemfs.pbrpc.generatedinterfaces.OSD.TruncateRecord.Builder, org.xtreemfs.pbrpc.generatedinterfaces.OSD.TruncateRecordOrBuilder> recordsBuilder_; + + /** + * repeated .xtreemfs.pbrpc.TruncateRecord records = 1; + */ public java.util.List getRecordsList() { - return java.util.Collections.unmodifiableList(result.records_); + if (recordsBuilder_ == null) { + return java.util.Collections.unmodifiableList(records_); + } else { + return recordsBuilder_.getMessageList(); + } } + /** + * repeated .xtreemfs.pbrpc.TruncateRecord records = 1; + */ public int getRecordsCount() { - return result.getRecordsCount(); + if (recordsBuilder_ == null) { + return records_.size(); + } else { + return recordsBuilder_.getCount(); + } } + /** + * repeated .xtreemfs.pbrpc.TruncateRecord records = 1; + */ public org.xtreemfs.pbrpc.generatedinterfaces.OSD.TruncateRecord getRecords(int index) { - return result.getRecords(index); + if (recordsBuilder_ == null) { + return records_.get(index); + } else { + return recordsBuilder_.getMessage(index); + } } - public Builder setRecords(int index, org.xtreemfs.pbrpc.generatedinterfaces.OSD.TruncateRecord value) { - if (value == null) { - throw new NullPointerException(); + /** + * repeated .xtreemfs.pbrpc.TruncateRecord records = 1; + */ + public Builder setRecords( + int index, org.xtreemfs.pbrpc.generatedinterfaces.OSD.TruncateRecord value) { + if (recordsBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + ensureRecordsIsMutable(); + records_.set(index, value); + onChanged(); + } else { + recordsBuilder_.setMessage(index, value); } - result.records_.set(index, value); return this; } - public Builder setRecords(int index, org.xtreemfs.pbrpc.generatedinterfaces.OSD.TruncateRecord.Builder builderForValue) { - result.records_.set(index, builderForValue.build()); + /** + * repeated .xtreemfs.pbrpc.TruncateRecord records = 1; + */ + public Builder setRecords( + int index, org.xtreemfs.pbrpc.generatedinterfaces.OSD.TruncateRecord.Builder builderForValue) { + if (recordsBuilder_ == null) { + ensureRecordsIsMutable(); + records_.set(index, builderForValue.build()); + onChanged(); + } else { + recordsBuilder_.setMessage(index, builderForValue.build()); + } return this; } + /** + * repeated .xtreemfs.pbrpc.TruncateRecord records = 1; + */ public Builder addRecords(org.xtreemfs.pbrpc.generatedinterfaces.OSD.TruncateRecord value) { - if (value == null) { - throw new NullPointerException(); + if (recordsBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + ensureRecordsIsMutable(); + records_.add(value); + onChanged(); + } else { + recordsBuilder_.addMessage(value); + } + return this; + } + /** + * repeated .xtreemfs.pbrpc.TruncateRecord records = 1; + */ + public Builder addRecords( + int index, org.xtreemfs.pbrpc.generatedinterfaces.OSD.TruncateRecord value) { + if (recordsBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + ensureRecordsIsMutable(); + records_.add(index, value); + onChanged(); + } else { + recordsBuilder_.addMessage(index, value); } - if (result.records_.isEmpty()) { - result.records_ = new java.util.ArrayList(); + return this; + } + /** + * repeated .xtreemfs.pbrpc.TruncateRecord records = 1; + */ + public Builder addRecords( + org.xtreemfs.pbrpc.generatedinterfaces.OSD.TruncateRecord.Builder builderForValue) { + if (recordsBuilder_ == null) { + ensureRecordsIsMutable(); + records_.add(builderForValue.build()); + onChanged(); + } else { + recordsBuilder_.addMessage(builderForValue.build()); } - result.records_.add(value); return this; } - public Builder addRecords(org.xtreemfs.pbrpc.generatedinterfaces.OSD.TruncateRecord.Builder builderForValue) { - if (result.records_.isEmpty()) { - result.records_ = new java.util.ArrayList(); + /** + * repeated .xtreemfs.pbrpc.TruncateRecord records = 1; + */ + public Builder addRecords( + int index, org.xtreemfs.pbrpc.generatedinterfaces.OSD.TruncateRecord.Builder builderForValue) { + if (recordsBuilder_ == null) { + ensureRecordsIsMutable(); + records_.add(index, builderForValue.build()); + onChanged(); + } else { + recordsBuilder_.addMessage(index, builderForValue.build()); } - result.records_.add(builderForValue.build()); return this; } + /** + * repeated .xtreemfs.pbrpc.TruncateRecord records = 1; + */ public Builder addAllRecords( java.lang.Iterable values) { - if (result.records_.isEmpty()) { - result.records_ = new java.util.ArrayList(); + if (recordsBuilder_ == null) { + ensureRecordsIsMutable(); + super.addAll(values, records_); + onChanged(); + } else { + recordsBuilder_.addAllMessages(values); } - super.addAll(values, result.records_); return this; } + /** + * repeated .xtreemfs.pbrpc.TruncateRecord records = 1; + */ public Builder clearRecords() { - result.records_ = java.util.Collections.emptyList(); + if (recordsBuilder_ == null) { + records_ = java.util.Collections.emptyList(); + bitField0_ = (bitField0_ & ~0x00000001); + onChanged(); + } else { + recordsBuilder_.clear(); + } return this; } - + /** + * repeated .xtreemfs.pbrpc.TruncateRecord records = 1; + */ + public Builder removeRecords(int index) { + if (recordsBuilder_ == null) { + ensureRecordsIsMutable(); + records_.remove(index); + onChanged(); + } else { + recordsBuilder_.remove(index); + } + return this; + } + /** + * repeated .xtreemfs.pbrpc.TruncateRecord records = 1; + */ + public org.xtreemfs.pbrpc.generatedinterfaces.OSD.TruncateRecord.Builder getRecordsBuilder( + int index) { + return getRecordsFieldBuilder().getBuilder(index); + } + /** + * repeated .xtreemfs.pbrpc.TruncateRecord records = 1; + */ + public org.xtreemfs.pbrpc.generatedinterfaces.OSD.TruncateRecordOrBuilder getRecordsOrBuilder( + int index) { + if (recordsBuilder_ == null) { + return records_.get(index); } else { + return recordsBuilder_.getMessageOrBuilder(index); + } + } + /** + * repeated .xtreemfs.pbrpc.TruncateRecord records = 1; + */ + public java.util.List + getRecordsOrBuilderList() { + if (recordsBuilder_ != null) { + return recordsBuilder_.getMessageOrBuilderList(); + } else { + return java.util.Collections.unmodifiableList(records_); + } + } + /** + * repeated .xtreemfs.pbrpc.TruncateRecord records = 1; + */ + public org.xtreemfs.pbrpc.generatedinterfaces.OSD.TruncateRecord.Builder addRecordsBuilder() { + return getRecordsFieldBuilder().addBuilder( + org.xtreemfs.pbrpc.generatedinterfaces.OSD.TruncateRecord.getDefaultInstance()); + } + /** + * repeated .xtreemfs.pbrpc.TruncateRecord records = 1; + */ + public org.xtreemfs.pbrpc.generatedinterfaces.OSD.TruncateRecord.Builder addRecordsBuilder( + int index) { + return getRecordsFieldBuilder().addBuilder( + index, org.xtreemfs.pbrpc.generatedinterfaces.OSD.TruncateRecord.getDefaultInstance()); + } + /** + * repeated .xtreemfs.pbrpc.TruncateRecord records = 1; + */ + public java.util.List + getRecordsBuilderList() { + return getRecordsFieldBuilder().getBuilderList(); + } + private com.google.protobuf.RepeatedFieldBuilder< + org.xtreemfs.pbrpc.generatedinterfaces.OSD.TruncateRecord, org.xtreemfs.pbrpc.generatedinterfaces.OSD.TruncateRecord.Builder, org.xtreemfs.pbrpc.generatedinterfaces.OSD.TruncateRecordOrBuilder> + getRecordsFieldBuilder() { + if (recordsBuilder_ == null) { + recordsBuilder_ = new com.google.protobuf.RepeatedFieldBuilder< + org.xtreemfs.pbrpc.generatedinterfaces.OSD.TruncateRecord, org.xtreemfs.pbrpc.generatedinterfaces.OSD.TruncateRecord.Builder, org.xtreemfs.pbrpc.generatedinterfaces.OSD.TruncateRecordOrBuilder>( + records_, + ((bitField0_ & 0x00000001) == 0x00000001), + getParentForChildren(), + isClean()); + records_ = null; + } + return recordsBuilder_; + } + // @@protoc_insertion_point(builder_scope:xtreemfs.pbrpc.TruncateLog) } - + static { defaultInstance = new TruncateLog(true); - org.xtreemfs.pbrpc.generatedinterfaces.OSD.internalForceInit(); defaultInstance.initFields(); } - + // @@protoc_insertion_point(class_scope:xtreemfs.pbrpc.TruncateLog) } - + + public interface ReplicaStatusOrBuilder + extends com.google.protobuf.MessageOrBuilder { + + // required fixed64 truncate_epoch = 1; + /** + * required fixed64 truncate_epoch = 1; + * + *
+     * Current truncate epoch.
+     * 
+ */ + boolean hasTruncateEpoch(); + /** + * required fixed64 truncate_epoch = 1; + * + *
+     * Current truncate epoch.
+     * 
+ */ + long getTruncateEpoch(); + + // required fixed64 file_size = 2; + /** + * required fixed64 file_size = 2; + * + *
+     * Local file size.
+     * 
+ */ + boolean hasFileSize(); + /** + * required fixed64 file_size = 2; + * + *
+     * Local file size.
+     * 
+ */ + long getFileSize(); + + // required fixed64 max_obj_version = 3; + /** + * required fixed64 max_obj_version = 3; + * + *
+     * Last object version stored locally.
+     * 
+ */ + boolean hasMaxObjVersion(); + /** + * required fixed64 max_obj_version = 3; + * + *
+     * Last object version stored locally.
+     * 
+ */ + long getMaxObjVersion(); + + // required fixed32 primary_epoch = 4; + /** + * required fixed32 primary_epoch = 4; + * + *
+     * Primary epoch number (aka Master Epoch).
+     * 
+ */ + boolean hasPrimaryEpoch(); + /** + * required fixed32 primary_epoch = 4; + * + *
+     * Primary epoch number (aka Master Epoch).
+     * 
+ */ + int getPrimaryEpoch(); + + // repeated .xtreemfs.pbrpc.ObjectVersion objectVersions = 5; + /** + * repeated .xtreemfs.pbrpc.ObjectVersion objectVersions = 5; + * + *
+     * List of objects and their version.
+     * 
+ */ + java.util.List + getObjectVersionsList(); + /** + * repeated .xtreemfs.pbrpc.ObjectVersion objectVersions = 5; + * + *
+     * List of objects and their version.
+     * 
+ */ + org.xtreemfs.pbrpc.generatedinterfaces.OSD.ObjectVersion getObjectVersions(int index); + /** + * repeated .xtreemfs.pbrpc.ObjectVersion objectVersions = 5; + * + *
+     * List of objects and their version.
+     * 
+ */ + int getObjectVersionsCount(); + /** + * repeated .xtreemfs.pbrpc.ObjectVersion objectVersions = 5; + * + *
+     * List of objects and their version.
+     * 
+ */ + java.util.List + getObjectVersionsOrBuilderList(); + /** + * repeated .xtreemfs.pbrpc.ObjectVersion objectVersions = 5; + * + *
+     * List of objects and their version.
+     * 
+ */ + org.xtreemfs.pbrpc.generatedinterfaces.OSD.ObjectVersionOrBuilder getObjectVersionsOrBuilder( + int index); + + // required .xtreemfs.pbrpc.TruncateLog truncate_log = 6; + /** + * required .xtreemfs.pbrpc.TruncateLog truncate_log = 6; + * + *
+     * Truncate log.
+     * 
+ */ + boolean hasTruncateLog(); + /** + * required .xtreemfs.pbrpc.TruncateLog truncate_log = 6; + * + *
+     * Truncate log.
+     * 
+ */ + org.xtreemfs.pbrpc.generatedinterfaces.OSD.TruncateLog getTruncateLog(); + /** + * required .xtreemfs.pbrpc.TruncateLog truncate_log = 6; + * + *
+     * Truncate log.
+     * 
+ */ + org.xtreemfs.pbrpc.generatedinterfaces.OSD.TruncateLogOrBuilder getTruncateLogOrBuilder(); + } + /** + * Protobuf type {@code xtreemfs.pbrpc.ReplicaStatus} + * + *
+   * Full status of a replica. Used by the read-write
+   * replication during Replica Reset.
+   * 
+ */ public static final class ReplicaStatus extends - com.google.protobuf.GeneratedMessage { + com.google.protobuf.GeneratedMessage + implements ReplicaStatusOrBuilder { // Use ReplicaStatus.newBuilder() to construct. - private ReplicaStatus() { - initFields(); + private ReplicaStatus(com.google.protobuf.GeneratedMessage.Builder builder) { + super(builder); + this.unknownFields = builder.getUnknownFields(); } - private ReplicaStatus(boolean noInit) {} - + private ReplicaStatus(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); } + private static final ReplicaStatus defaultInstance; public static ReplicaStatus getDefaultInstance() { return defaultInstance; } - + public ReplicaStatus getDefaultInstanceForType() { return defaultInstance; } - - public static final com.google.protobuf.Descriptors.Descriptor - getDescriptor() { - return org.xtreemfs.pbrpc.generatedinterfaces.OSD.internal_static_xtreemfs_pbrpc_ReplicaStatus_descriptor; - } - - protected com.google.protobuf.GeneratedMessage.FieldAccessorTable - internalGetFieldAccessorTable() { - return org.xtreemfs.pbrpc.generatedinterfaces.OSD.internal_static_xtreemfs_pbrpc_ReplicaStatus_fieldAccessorTable; - } - - // required fixed64 truncate_epoch = 1; - public static final int TRUNCATE_EPOCH_FIELD_NUMBER = 1; - private boolean hasTruncateEpoch; - private long truncateEpoch_ = 0L; - public boolean hasTruncateEpoch() { return hasTruncateEpoch; } - public long getTruncateEpoch() { return truncateEpoch_; } - - // required fixed64 file_size = 2; - public static final int FILE_SIZE_FIELD_NUMBER = 2; - private boolean hasFileSize; - private long fileSize_ = 0L; - public boolean hasFileSize() { return hasFileSize; } - public long getFileSize() { return fileSize_; } - - // required fixed64 max_obj_version = 3; - public static final int MAX_OBJ_VERSION_FIELD_NUMBER = 3; - private boolean hasMaxObjVersion; - private long maxObjVersion_ = 0L; - public boolean hasMaxObjVersion() { return hasMaxObjVersion; } - public long getMaxObjVersion() { return maxObjVersion_; } - - // required fixed32 primary_epoch = 4; - public static final int PRIMARY_EPOCH_FIELD_NUMBER = 4; - private boolean hasPrimaryEpoch; - private int primaryEpoch_ = 0; - public boolean hasPrimaryEpoch() { return hasPrimaryEpoch; } - public int getPrimaryEpoch() { return primaryEpoch_; } - - // repeated .xtreemfs.pbrpc.ObjectVersion objectVersions = 5; - public static final int OBJECTVERSIONS_FIELD_NUMBER = 5; - private java.util.List objectVersions_ = - java.util.Collections.emptyList(); - public java.util.List getObjectVersionsList() { - return objectVersions_; - } - public int getObjectVersionsCount() { return objectVersions_.size(); } - public org.xtreemfs.pbrpc.generatedinterfaces.OSD.ObjectVersion getObjectVersions(int index) { - return objectVersions_.get(index); - } - - // required .xtreemfs.pbrpc.TruncateLog truncate_log = 6; - public static final int TRUNCATE_LOG_FIELD_NUMBER = 6; - private boolean hasTruncateLog; - private org.xtreemfs.pbrpc.generatedinterfaces.OSD.TruncateLog truncateLog_; - public boolean hasTruncateLog() { return hasTruncateLog; } - public org.xtreemfs.pbrpc.generatedinterfaces.OSD.TruncateLog getTruncateLog() { return truncateLog_; } - - private void initFields() { - truncateLog_ = org.xtreemfs.pbrpc.generatedinterfaces.OSD.TruncateLog.getDefaultInstance(); - } - public final boolean isInitialized() { - if (!hasTruncateEpoch) return false; - if (!hasFileSize) return false; - if (!hasMaxObjVersion) return false; - if (!hasPrimaryEpoch) return false; - if (!hasTruncateLog) return false; - for (org.xtreemfs.pbrpc.generatedinterfaces.OSD.ObjectVersion element : getObjectVersionsList()) { - if (!element.isInitialized()) return false; - } - if (!getTruncateLog().isInitialized()) return false; - return true; + + private final com.google.protobuf.UnknownFieldSet unknownFields; + @java.lang.Override + public final com.google.protobuf.UnknownFieldSet + getUnknownFields() { + return this.unknownFields; } - - public void writeTo(com.google.protobuf.CodedOutputStream output) + private ReplicaStatus( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + initFields(); + int mutable_bitField0_ = 0; + com.google.protobuf.UnknownFieldSet.Builder unknownFields = + com.google.protobuf.UnknownFieldSet.newBuilder(); + try { + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch (tag) { + case 0: + done = true; + break; + default: { + if (!parseUnknownField(input, unknownFields, + extensionRegistry, tag)) { + done = true; + } + break; + } + case 9: { + bitField0_ |= 0x00000001; + truncateEpoch_ = input.readFixed64(); + break; + } + case 17: { + bitField0_ |= 0x00000002; + fileSize_ = input.readFixed64(); + break; + } + case 25: { + bitField0_ |= 0x00000004; + maxObjVersion_ = input.readFixed64(); + break; + } + case 37: { + bitField0_ |= 0x00000008; + primaryEpoch_ = input.readFixed32(); + break; + } + case 42: { + if (!((mutable_bitField0_ & 0x00000010) == 0x00000010)) { + objectVersions_ = new java.util.ArrayList(); + mutable_bitField0_ |= 0x00000010; + } + objectVersions_.add(input.readMessage(org.xtreemfs.pbrpc.generatedinterfaces.OSD.ObjectVersion.PARSER, extensionRegistry)); + break; + } + case 50: { + org.xtreemfs.pbrpc.generatedinterfaces.OSD.TruncateLog.Builder subBuilder = null; + if (((bitField0_ & 0x00000010) == 0x00000010)) { + subBuilder = truncateLog_.toBuilder(); + } + truncateLog_ = input.readMessage(org.xtreemfs.pbrpc.generatedinterfaces.OSD.TruncateLog.PARSER, extensionRegistry); + if (subBuilder != null) { + subBuilder.mergeFrom(truncateLog_); + truncateLog_ = subBuilder.buildPartial(); + } + bitField0_ |= 0x00000010; + break; + } + } + } + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(this); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException( + e.getMessage()).setUnfinishedMessage(this); + } finally { + if (((mutable_bitField0_ & 0x00000010) == 0x00000010)) { + objectVersions_ = java.util.Collections.unmodifiableList(objectVersions_); + } + this.unknownFields = unknownFields.build(); + makeExtensionsImmutable(); + } + } + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return org.xtreemfs.pbrpc.generatedinterfaces.OSD.internal_static_xtreemfs_pbrpc_ReplicaStatus_descriptor; + } + + protected com.google.protobuf.GeneratedMessage.FieldAccessorTable + internalGetFieldAccessorTable() { + return org.xtreemfs.pbrpc.generatedinterfaces.OSD.internal_static_xtreemfs_pbrpc_ReplicaStatus_fieldAccessorTable + .ensureFieldAccessorsInitialized( + org.xtreemfs.pbrpc.generatedinterfaces.OSD.ReplicaStatus.class, org.xtreemfs.pbrpc.generatedinterfaces.OSD.ReplicaStatus.Builder.class); + } + + public static com.google.protobuf.Parser PARSER = + new com.google.protobuf.AbstractParser() { + public ReplicaStatus parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return new ReplicaStatus(input, extensionRegistry); + } + }; + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; + } + + private int bitField0_; + // required fixed64 truncate_epoch = 1; + public static final int TRUNCATE_EPOCH_FIELD_NUMBER = 1; + private long truncateEpoch_; + /** + * required fixed64 truncate_epoch = 1; + * + *
+     * Current truncate epoch.
+     * 
+ */ + public boolean hasTruncateEpoch() { + return ((bitField0_ & 0x00000001) == 0x00000001); + } + /** + * required fixed64 truncate_epoch = 1; + * + *
+     * Current truncate epoch.
+     * 
+ */ + public long getTruncateEpoch() { + return truncateEpoch_; + } + + // required fixed64 file_size = 2; + public static final int FILE_SIZE_FIELD_NUMBER = 2; + private long fileSize_; + /** + * required fixed64 file_size = 2; + * + *
+     * Local file size.
+     * 
+ */ + public boolean hasFileSize() { + return ((bitField0_ & 0x00000002) == 0x00000002); + } + /** + * required fixed64 file_size = 2; + * + *
+     * Local file size.
+     * 
+ */ + public long getFileSize() { + return fileSize_; + } + + // required fixed64 max_obj_version = 3; + public static final int MAX_OBJ_VERSION_FIELD_NUMBER = 3; + private long maxObjVersion_; + /** + * required fixed64 max_obj_version = 3; + * + *
+     * Last object version stored locally.
+     * 
+ */ + public boolean hasMaxObjVersion() { + return ((bitField0_ & 0x00000004) == 0x00000004); + } + /** + * required fixed64 max_obj_version = 3; + * + *
+     * Last object version stored locally.
+     * 
+ */ + public long getMaxObjVersion() { + return maxObjVersion_; + } + + // required fixed32 primary_epoch = 4; + public static final int PRIMARY_EPOCH_FIELD_NUMBER = 4; + private int primaryEpoch_; + /** + * required fixed32 primary_epoch = 4; + * + *
+     * Primary epoch number (aka Master Epoch).
+     * 
+ */ + public boolean hasPrimaryEpoch() { + return ((bitField0_ & 0x00000008) == 0x00000008); + } + /** + * required fixed32 primary_epoch = 4; + * + *
+     * Primary epoch number (aka Master Epoch).
+     * 
+ */ + public int getPrimaryEpoch() { + return primaryEpoch_; + } + + // repeated .xtreemfs.pbrpc.ObjectVersion objectVersions = 5; + public static final int OBJECTVERSIONS_FIELD_NUMBER = 5; + private java.util.List objectVersions_; + /** + * repeated .xtreemfs.pbrpc.ObjectVersion objectVersions = 5; + * + *
+     * List of objects and their version.
+     * 
+ */ + public java.util.List getObjectVersionsList() { + return objectVersions_; + } + /** + * repeated .xtreemfs.pbrpc.ObjectVersion objectVersions = 5; + * + *
+     * List of objects and their version.
+     * 
+ */ + public java.util.List + getObjectVersionsOrBuilderList() { + return objectVersions_; + } + /** + * repeated .xtreemfs.pbrpc.ObjectVersion objectVersions = 5; + * + *
+     * List of objects and their version.
+     * 
+ */ + public int getObjectVersionsCount() { + return objectVersions_.size(); + } + /** + * repeated .xtreemfs.pbrpc.ObjectVersion objectVersions = 5; + * + *
+     * List of objects and their version.
+     * 
+ */ + public org.xtreemfs.pbrpc.generatedinterfaces.OSD.ObjectVersion getObjectVersions(int index) { + return objectVersions_.get(index); + } + /** + * repeated .xtreemfs.pbrpc.ObjectVersion objectVersions = 5; + * + *
+     * List of objects and their version.
+     * 
+ */ + public org.xtreemfs.pbrpc.generatedinterfaces.OSD.ObjectVersionOrBuilder getObjectVersionsOrBuilder( + int index) { + return objectVersions_.get(index); + } + + // required .xtreemfs.pbrpc.TruncateLog truncate_log = 6; + public static final int TRUNCATE_LOG_FIELD_NUMBER = 6; + private org.xtreemfs.pbrpc.generatedinterfaces.OSD.TruncateLog truncateLog_; + /** + * required .xtreemfs.pbrpc.TruncateLog truncate_log = 6; + * + *
+     * Truncate log.
+     * 
+ */ + public boolean hasTruncateLog() { + return ((bitField0_ & 0x00000010) == 0x00000010); + } + /** + * required .xtreemfs.pbrpc.TruncateLog truncate_log = 6; + * + *
+     * Truncate log.
+     * 
+ */ + public org.xtreemfs.pbrpc.generatedinterfaces.OSD.TruncateLog getTruncateLog() { + return truncateLog_; + } + /** + * required .xtreemfs.pbrpc.TruncateLog truncate_log = 6; + * + *
+     * Truncate log.
+     * 
+ */ + public org.xtreemfs.pbrpc.generatedinterfaces.OSD.TruncateLogOrBuilder getTruncateLogOrBuilder() { + return truncateLog_; + } + + private void initFields() { + truncateEpoch_ = 0L; + fileSize_ = 0L; + maxObjVersion_ = 0L; + primaryEpoch_ = 0; + objectVersions_ = java.util.Collections.emptyList(); + truncateLog_ = org.xtreemfs.pbrpc.generatedinterfaces.OSD.TruncateLog.getDefaultInstance(); + } + private byte memoizedIsInitialized = -1; + public final boolean isInitialized() { + byte isInitialized = memoizedIsInitialized; + if (isInitialized != -1) return isInitialized == 1; + + if (!hasTruncateEpoch()) { + memoizedIsInitialized = 0; + return false; + } + if (!hasFileSize()) { + memoizedIsInitialized = 0; + return false; + } + if (!hasMaxObjVersion()) { + memoizedIsInitialized = 0; + return false; + } + if (!hasPrimaryEpoch()) { + memoizedIsInitialized = 0; + return false; + } + if (!hasTruncateLog()) { + memoizedIsInitialized = 0; + return false; + } + for (int i = 0; i < getObjectVersionsCount(); i++) { + if (!getObjectVersions(i).isInitialized()) { + memoizedIsInitialized = 0; + return false; + } + } + if (!getTruncateLog().isInitialized()) { + memoizedIsInitialized = 0; + return false; + } + memoizedIsInitialized = 1; + return true; + } + + public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException { getSerializedSize(); - if (hasTruncateEpoch()) { - output.writeFixed64(1, getTruncateEpoch()); + if (((bitField0_ & 0x00000001) == 0x00000001)) { + output.writeFixed64(1, truncateEpoch_); } - if (hasFileSize()) { - output.writeFixed64(2, getFileSize()); + if (((bitField0_ & 0x00000002) == 0x00000002)) { + output.writeFixed64(2, fileSize_); } - if (hasMaxObjVersion()) { - output.writeFixed64(3, getMaxObjVersion()); + if (((bitField0_ & 0x00000004) == 0x00000004)) { + output.writeFixed64(3, maxObjVersion_); } - if (hasPrimaryEpoch()) { - output.writeFixed32(4, getPrimaryEpoch()); + if (((bitField0_ & 0x00000008) == 0x00000008)) { + output.writeFixed32(4, primaryEpoch_); } - for (org.xtreemfs.pbrpc.generatedinterfaces.OSD.ObjectVersion element : getObjectVersionsList()) { - output.writeMessage(5, element); + for (int i = 0; i < objectVersions_.size(); i++) { + output.writeMessage(5, objectVersions_.get(i)); } - if (hasTruncateLog()) { - output.writeMessage(6, getTruncateLog()); + if (((bitField0_ & 0x00000010) == 0x00000010)) { + output.writeMessage(6, truncateLog_); } getUnknownFields().writeTo(output); } - + private int memoizedSerializedSize = -1; public int getSerializedSize() { int size = memoizedSerializedSize; if (size != -1) return size; - + size = 0; - if (hasTruncateEpoch()) { + if (((bitField0_ & 0x00000001) == 0x00000001)) { size += com.google.protobuf.CodedOutputStream - .computeFixed64Size(1, getTruncateEpoch()); + .computeFixed64Size(1, truncateEpoch_); } - if (hasFileSize()) { + if (((bitField0_ & 0x00000002) == 0x00000002)) { size += com.google.protobuf.CodedOutputStream - .computeFixed64Size(2, getFileSize()); + .computeFixed64Size(2, fileSize_); } - if (hasMaxObjVersion()) { + if (((bitField0_ & 0x00000004) == 0x00000004)) { size += com.google.protobuf.CodedOutputStream - .computeFixed64Size(3, getMaxObjVersion()); + .computeFixed64Size(3, maxObjVersion_); } - if (hasPrimaryEpoch()) { + if (((bitField0_ & 0x00000008) == 0x00000008)) { size += com.google.protobuf.CodedOutputStream - .computeFixed32Size(4, getPrimaryEpoch()); + .computeFixed32Size(4, primaryEpoch_); } - for (org.xtreemfs.pbrpc.generatedinterfaces.OSD.ObjectVersion element : getObjectVersionsList()) { + for (int i = 0; i < objectVersions_.size(); i++) { size += com.google.protobuf.CodedOutputStream - .computeMessageSize(5, element); + .computeMessageSize(5, objectVersions_.get(i)); } - if (hasTruncateLog()) { + if (((bitField0_ & 0x00000010) == 0x00000010)) { size += com.google.protobuf.CodedOutputStream - .computeMessageSize(6, getTruncateLog()); + .computeMessageSize(6, truncateLog_); } size += getUnknownFields().getSerializedSize(); memoizedSerializedSize = size; return size; } - + + private static final long serialVersionUID = 0L; + @java.lang.Override + protected java.lang.Object writeReplace() + throws java.io.ObjectStreamException { + return super.writeReplace(); + } + public static org.xtreemfs.pbrpc.generatedinterfaces.OSD.ReplicaStatus parseFrom( com.google.protobuf.ByteString data) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data).buildParsed(); + return PARSER.parseFrom(data); } public static org.xtreemfs.pbrpc.generatedinterfaces.OSD.ReplicaStatus parseFrom( com.google.protobuf.ByteString data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(data, extensionRegistry); } public static org.xtreemfs.pbrpc.generatedinterfaces.OSD.ReplicaStatus parseFrom(byte[] data) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data).buildParsed(); + return PARSER.parseFrom(data); } public static org.xtreemfs.pbrpc.generatedinterfaces.OSD.ReplicaStatus parseFrom( byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(data, extensionRegistry); } public static org.xtreemfs.pbrpc.generatedinterfaces.OSD.ReplicaStatus parseFrom(java.io.InputStream input) throws java.io.IOException { - return newBuilder().mergeFrom(input).buildParsed(); + return PARSER.parseFrom(input); } public static org.xtreemfs.pbrpc.generatedinterfaces.OSD.ReplicaStatus parseFrom( java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - return newBuilder().mergeFrom(input, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(input, extensionRegistry); } public static org.xtreemfs.pbrpc.generatedinterfaces.OSD.ReplicaStatus parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException { - Builder builder = newBuilder(); - if (builder.mergeDelimitedFrom(input)) { - return builder.buildParsed(); - } else { - return null; - } + return PARSER.parseDelimitedFrom(input); } public static org.xtreemfs.pbrpc.generatedinterfaces.OSD.ReplicaStatus parseDelimitedFrom( java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - Builder builder = newBuilder(); - if (builder.mergeDelimitedFrom(input, extensionRegistry)) { - return builder.buildParsed(); - } else { - return null; - } + return PARSER.parseDelimitedFrom(input, extensionRegistry); } public static org.xtreemfs.pbrpc.generatedinterfaces.OSD.ReplicaStatus parseFrom( com.google.protobuf.CodedInputStream input) throws java.io.IOException { - return newBuilder().mergeFrom(input).buildParsed(); + return PARSER.parseFrom(input); } public static org.xtreemfs.pbrpc.generatedinterfaces.OSD.ReplicaStatus parseFrom( com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - return newBuilder().mergeFrom(input, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(input, extensionRegistry); } - + public static Builder newBuilder() { return Builder.create(); } public Builder newBuilderForType() { return newBuilder(); } public static Builder newBuilder(org.xtreemfs.pbrpc.generatedinterfaces.OSD.ReplicaStatus prototype) { return newBuilder().mergeFrom(prototype); } public Builder toBuilder() { return newBuilder(this); } - + + @java.lang.Override + protected Builder newBuilderForType( + com.google.protobuf.GeneratedMessage.BuilderParent parent) { + Builder builder = new Builder(parent); + return builder; + } + /** + * Protobuf type {@code xtreemfs.pbrpc.ReplicaStatus} + * + *
+     * Full status of a replica. Used by the read-write
+     * replication during Replica Reset.
+     * 
+ */ public static final class Builder extends - com.google.protobuf.GeneratedMessage.Builder { - private org.xtreemfs.pbrpc.generatedinterfaces.OSD.ReplicaStatus result; - + com.google.protobuf.GeneratedMessage.Builder + implements org.xtreemfs.pbrpc.generatedinterfaces.OSD.ReplicaStatusOrBuilder { + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return org.xtreemfs.pbrpc.generatedinterfaces.OSD.internal_static_xtreemfs_pbrpc_ReplicaStatus_descriptor; + } + + protected com.google.protobuf.GeneratedMessage.FieldAccessorTable + internalGetFieldAccessorTable() { + return org.xtreemfs.pbrpc.generatedinterfaces.OSD.internal_static_xtreemfs_pbrpc_ReplicaStatus_fieldAccessorTable + .ensureFieldAccessorsInitialized( + org.xtreemfs.pbrpc.generatedinterfaces.OSD.ReplicaStatus.class, org.xtreemfs.pbrpc.generatedinterfaces.OSD.ReplicaStatus.Builder.class); + } + // Construct using org.xtreemfs.pbrpc.generatedinterfaces.OSD.ReplicaStatus.newBuilder() - private Builder() {} - - private static Builder create() { - Builder builder = new Builder(); - builder.result = new org.xtreemfs.pbrpc.generatedinterfaces.OSD.ReplicaStatus(); - return builder; + private Builder() { + maybeForceBuilderInitialization(); } - - protected org.xtreemfs.pbrpc.generatedinterfaces.OSD.ReplicaStatus internalGetResult() { - return result; + + private Builder( + com.google.protobuf.GeneratedMessage.BuilderParent parent) { + super(parent); + maybeForceBuilderInitialization(); } - + private void maybeForceBuilderInitialization() { + if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) { + getObjectVersionsFieldBuilder(); + getTruncateLogFieldBuilder(); + } + } + private static Builder create() { + return new Builder(); + } + public Builder clear() { - if (result == null) { - throw new IllegalStateException( - "Cannot call clear() after build()."); + super.clear(); + truncateEpoch_ = 0L; + bitField0_ = (bitField0_ & ~0x00000001); + fileSize_ = 0L; + bitField0_ = (bitField0_ & ~0x00000002); + maxObjVersion_ = 0L; + bitField0_ = (bitField0_ & ~0x00000004); + primaryEpoch_ = 0; + bitField0_ = (bitField0_ & ~0x00000008); + if (objectVersionsBuilder_ == null) { + objectVersions_ = java.util.Collections.emptyList(); + bitField0_ = (bitField0_ & ~0x00000010); + } else { + objectVersionsBuilder_.clear(); + } + if (truncateLogBuilder_ == null) { + truncateLog_ = org.xtreemfs.pbrpc.generatedinterfaces.OSD.TruncateLog.getDefaultInstance(); + } else { + truncateLogBuilder_.clear(); } - result = new org.xtreemfs.pbrpc.generatedinterfaces.OSD.ReplicaStatus(); + bitField0_ = (bitField0_ & ~0x00000020); return this; } - + public Builder clone() { - return create().mergeFrom(result); + return create().mergeFrom(buildPartial()); } - + public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() { - return org.xtreemfs.pbrpc.generatedinterfaces.OSD.ReplicaStatus.getDescriptor(); + return org.xtreemfs.pbrpc.generatedinterfaces.OSD.internal_static_xtreemfs_pbrpc_ReplicaStatus_descriptor; } - + public org.xtreemfs.pbrpc.generatedinterfaces.OSD.ReplicaStatus getDefaultInstanceForType() { return org.xtreemfs.pbrpc.generatedinterfaces.OSD.ReplicaStatus.getDefaultInstance(); } - - public boolean isInitialized() { - return result.isInitialized(); - } + public org.xtreemfs.pbrpc.generatedinterfaces.OSD.ReplicaStatus build() { - if (result != null && !isInitialized()) { + org.xtreemfs.pbrpc.generatedinterfaces.OSD.ReplicaStatus result = buildPartial(); + if (!result.isInitialized()) { throw newUninitializedMessageException(result); } - return buildPartial(); - } - - private org.xtreemfs.pbrpc.generatedinterfaces.OSD.ReplicaStatus buildParsed() - throws com.google.protobuf.InvalidProtocolBufferException { - if (!isInitialized()) { - throw newUninitializedMessageException( - result).asInvalidProtocolBufferException(); - } - return buildPartial(); + return result; } - + public org.xtreemfs.pbrpc.generatedinterfaces.OSD.ReplicaStatus buildPartial() { - if (result == null) { - throw new IllegalStateException( - "build() has already been called on this Builder."); + org.xtreemfs.pbrpc.generatedinterfaces.OSD.ReplicaStatus result = new org.xtreemfs.pbrpc.generatedinterfaces.OSD.ReplicaStatus(this); + int from_bitField0_ = bitField0_; + int to_bitField0_ = 0; + if (((from_bitField0_ & 0x00000001) == 0x00000001)) { + to_bitField0_ |= 0x00000001; + } + result.truncateEpoch_ = truncateEpoch_; + if (((from_bitField0_ & 0x00000002) == 0x00000002)) { + to_bitField0_ |= 0x00000002; + } + result.fileSize_ = fileSize_; + if (((from_bitField0_ & 0x00000004) == 0x00000004)) { + to_bitField0_ |= 0x00000004; + } + result.maxObjVersion_ = maxObjVersion_; + if (((from_bitField0_ & 0x00000008) == 0x00000008)) { + to_bitField0_ |= 0x00000008; + } + result.primaryEpoch_ = primaryEpoch_; + if (objectVersionsBuilder_ == null) { + if (((bitField0_ & 0x00000010) == 0x00000010)) { + objectVersions_ = java.util.Collections.unmodifiableList(objectVersions_); + bitField0_ = (bitField0_ & ~0x00000010); + } + result.objectVersions_ = objectVersions_; + } else { + result.objectVersions_ = objectVersionsBuilder_.build(); + } + if (((from_bitField0_ & 0x00000020) == 0x00000020)) { + to_bitField0_ |= 0x00000010; } - if (result.objectVersions_ != java.util.Collections.EMPTY_LIST) { - result.objectVersions_ = - java.util.Collections.unmodifiableList(result.objectVersions_); + if (truncateLogBuilder_ == null) { + result.truncateLog_ = truncateLog_; + } else { + result.truncateLog_ = truncateLogBuilder_.build(); } - org.xtreemfs.pbrpc.generatedinterfaces.OSD.ReplicaStatus returnMe = result; - result = null; - return returnMe; + result.bitField0_ = to_bitField0_; + onBuilt(); + return result; } - + public Builder mergeFrom(com.google.protobuf.Message other) { if (other instanceof org.xtreemfs.pbrpc.generatedinterfaces.OSD.ReplicaStatus) { return mergeFrom((org.xtreemfs.pbrpc.generatedinterfaces.OSD.ReplicaStatus)other); @@ -2841,7 +5456,7 @@ public final class OSD { return this; } } - + public Builder mergeFrom(org.xtreemfs.pbrpc.generatedinterfaces.OSD.ReplicaStatus other) { if (other == org.xtreemfs.pbrpc.generatedinterfaces.OSD.ReplicaStatus.getDefaultInstance()) return this; if (other.hasTruncateEpoch()) { @@ -2856,11 +5471,31 @@ public final class OSD { if (other.hasPrimaryEpoch()) { setPrimaryEpoch(other.getPrimaryEpoch()); } - if (!other.objectVersions_.isEmpty()) { - if (result.objectVersions_.isEmpty()) { - result.objectVersions_ = new java.util.ArrayList(); + if (objectVersionsBuilder_ == null) { + if (!other.objectVersions_.isEmpty()) { + if (objectVersions_.isEmpty()) { + objectVersions_ = other.objectVersions_; + bitField0_ = (bitField0_ & ~0x00000010); + } else { + ensureObjectVersionsIsMutable(); + objectVersions_.addAll(other.objectVersions_); + } + onChanged(); + } + } else { + if (!other.objectVersions_.isEmpty()) { + if (objectVersionsBuilder_.isEmpty()) { + objectVersionsBuilder_.dispose(); + objectVersionsBuilder_ = null; + objectVersions_ = other.objectVersions_; + bitField0_ = (bitField0_ & ~0x00000010); + objectVersionsBuilder_ = + com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ? + getObjectVersionsFieldBuilder() : null; + } else { + objectVersionsBuilder_.addAllMessages(other.objectVersions_); + } } - result.objectVersions_.addAll(other.objectVersions_); } if (other.hasTruncateLog()) { mergeTruncateLog(other.getTruncateLog()); @@ -2868,331 +5503,1010 @@ public final class OSD { this.mergeUnknownFields(other.getUnknownFields()); return this; } - + + public final boolean isInitialized() { + if (!hasTruncateEpoch()) { + + return false; + } + if (!hasFileSize()) { + + return false; + } + if (!hasMaxObjVersion()) { + + return false; + } + if (!hasPrimaryEpoch()) { + + return false; + } + if (!hasTruncateLog()) { + + return false; + } + for (int i = 0; i < getObjectVersionsCount(); i++) { + if (!getObjectVersions(i).isInitialized()) { + + return false; + } + } + if (!getTruncateLog().isInitialized()) { + + return false; + } + return true; + } + public Builder mergeFrom( com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - com.google.protobuf.UnknownFieldSet.Builder unknownFields = - com.google.protobuf.UnknownFieldSet.newBuilder( - this.getUnknownFields()); - while (true) { - int tag = input.readTag(); - switch (tag) { - case 0: - this.setUnknownFields(unknownFields.build()); - return this; - default: { - if (!parseUnknownField(input, unknownFields, - extensionRegistry, tag)) { - this.setUnknownFields(unknownFields.build()); - return this; - } - break; - } - case 9: { - setTruncateEpoch(input.readFixed64()); - break; - } - case 17: { - setFileSize(input.readFixed64()); - break; - } - case 25: { - setMaxObjVersion(input.readFixed64()); - break; - } - case 37: { - setPrimaryEpoch(input.readFixed32()); - break; - } - case 42: { - org.xtreemfs.pbrpc.generatedinterfaces.OSD.ObjectVersion.Builder subBuilder = org.xtreemfs.pbrpc.generatedinterfaces.OSD.ObjectVersion.newBuilder(); - input.readMessage(subBuilder, extensionRegistry); - addObjectVersions(subBuilder.buildPartial()); - break; - } - case 50: { - org.xtreemfs.pbrpc.generatedinterfaces.OSD.TruncateLog.Builder subBuilder = org.xtreemfs.pbrpc.generatedinterfaces.OSD.TruncateLog.newBuilder(); - if (hasTruncateLog()) { - subBuilder.mergeFrom(getTruncateLog()); - } - input.readMessage(subBuilder, extensionRegistry); - setTruncateLog(subBuilder.buildPartial()); - break; - } + org.xtreemfs.pbrpc.generatedinterfaces.OSD.ReplicaStatus parsedMessage = null; + try { + parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + parsedMessage = (org.xtreemfs.pbrpc.generatedinterfaces.OSD.ReplicaStatus) e.getUnfinishedMessage(); + throw e; + } finally { + if (parsedMessage != null) { + mergeFrom(parsedMessage); } } + return this; } - - + private int bitField0_; + // required fixed64 truncate_epoch = 1; + private long truncateEpoch_ ; + /** + * required fixed64 truncate_epoch = 1; + * + *
+       * Current truncate epoch.
+       * 
+ */ public boolean hasTruncateEpoch() { - return result.hasTruncateEpoch(); - } + return ((bitField0_ & 0x00000001) == 0x00000001); + } + /** + * required fixed64 truncate_epoch = 1; + * + *
+       * Current truncate epoch.
+       * 
+ */ public long getTruncateEpoch() { - return result.getTruncateEpoch(); - } + return truncateEpoch_; + } + /** + * required fixed64 truncate_epoch = 1; + * + *
+       * Current truncate epoch.
+       * 
+ */ public Builder setTruncateEpoch(long value) { - result.hasTruncateEpoch = true; - result.truncateEpoch_ = value; - return this; - } + bitField0_ |= 0x00000001; + truncateEpoch_ = value; + onChanged(); + return this; + } + /** + * required fixed64 truncate_epoch = 1; + * + *
+       * Current truncate epoch.
+       * 
+ */ public Builder clearTruncateEpoch() { - result.hasTruncateEpoch = false; - result.truncateEpoch_ = 0L; + bitField0_ = (bitField0_ & ~0x00000001); + truncateEpoch_ = 0L; + onChanged(); return this; } - + // required fixed64 file_size = 2; + private long fileSize_ ; + /** + * required fixed64 file_size = 2; + * + *
+       * Local file size.
+       * 
+ */ public boolean hasFileSize() { - return result.hasFileSize(); - } + return ((bitField0_ & 0x00000002) == 0x00000002); + } + /** + * required fixed64 file_size = 2; + * + *
+       * Local file size.
+       * 
+ */ public long getFileSize() { - return result.getFileSize(); - } + return fileSize_; + } + /** + * required fixed64 file_size = 2; + * + *
+       * Local file size.
+       * 
+ */ public Builder setFileSize(long value) { - result.hasFileSize = true; - result.fileSize_ = value; - return this; - } + bitField0_ |= 0x00000002; + fileSize_ = value; + onChanged(); + return this; + } + /** + * required fixed64 file_size = 2; + * + *
+       * Local file size.
+       * 
+ */ public Builder clearFileSize() { - result.hasFileSize = false; - result.fileSize_ = 0L; + bitField0_ = (bitField0_ & ~0x00000002); + fileSize_ = 0L; + onChanged(); return this; } - + // required fixed64 max_obj_version = 3; + private long maxObjVersion_ ; + /** + * required fixed64 max_obj_version = 3; + * + *
+       * Last object version stored locally.
+       * 
+ */ public boolean hasMaxObjVersion() { - return result.hasMaxObjVersion(); - } + return ((bitField0_ & 0x00000004) == 0x00000004); + } + /** + * required fixed64 max_obj_version = 3; + * + *
+       * Last object version stored locally.
+       * 
+ */ public long getMaxObjVersion() { - return result.getMaxObjVersion(); - } + return maxObjVersion_; + } + /** + * required fixed64 max_obj_version = 3; + * + *
+       * Last object version stored locally.
+       * 
+ */ public Builder setMaxObjVersion(long value) { - result.hasMaxObjVersion = true; - result.maxObjVersion_ = value; - return this; - } + bitField0_ |= 0x00000004; + maxObjVersion_ = value; + onChanged(); + return this; + } + /** + * required fixed64 max_obj_version = 3; + * + *
+       * Last object version stored locally.
+       * 
+ */ public Builder clearMaxObjVersion() { - result.hasMaxObjVersion = false; - result.maxObjVersion_ = 0L; + bitField0_ = (bitField0_ & ~0x00000004); + maxObjVersion_ = 0L; + onChanged(); return this; } - + // required fixed32 primary_epoch = 4; + private int primaryEpoch_ ; + /** + * required fixed32 primary_epoch = 4; + * + *
+       * Primary epoch number (aka Master Epoch).
+       * 
+ */ public boolean hasPrimaryEpoch() { - return result.hasPrimaryEpoch(); - } + return ((bitField0_ & 0x00000008) == 0x00000008); + } + /** + * required fixed32 primary_epoch = 4; + * + *
+       * Primary epoch number (aka Master Epoch).
+       * 
+ */ public int getPrimaryEpoch() { - return result.getPrimaryEpoch(); - } + return primaryEpoch_; + } + /** + * required fixed32 primary_epoch = 4; + * + *
+       * Primary epoch number (aka Master Epoch).
+       * 
+ */ public Builder setPrimaryEpoch(int value) { - result.hasPrimaryEpoch = true; - result.primaryEpoch_ = value; - return this; - } + bitField0_ |= 0x00000008; + primaryEpoch_ = value; + onChanged(); + return this; + } + /** + * required fixed32 primary_epoch = 4; + * + *
+       * Primary epoch number (aka Master Epoch).
+       * 
+ */ public Builder clearPrimaryEpoch() { - result.hasPrimaryEpoch = false; - result.primaryEpoch_ = 0; + bitField0_ = (bitField0_ & ~0x00000008); + primaryEpoch_ = 0; + onChanged(); return this; } - + // repeated .xtreemfs.pbrpc.ObjectVersion objectVersions = 5; + private java.util.List objectVersions_ = + java.util.Collections.emptyList(); + private void ensureObjectVersionsIsMutable() { + if (!((bitField0_ & 0x00000010) == 0x00000010)) { + objectVersions_ = new java.util.ArrayList(objectVersions_); + bitField0_ |= 0x00000010; + } + } + + private com.google.protobuf.RepeatedFieldBuilder< + org.xtreemfs.pbrpc.generatedinterfaces.OSD.ObjectVersion, org.xtreemfs.pbrpc.generatedinterfaces.OSD.ObjectVersion.Builder, org.xtreemfs.pbrpc.generatedinterfaces.OSD.ObjectVersionOrBuilder> objectVersionsBuilder_; + + /** + * repeated .xtreemfs.pbrpc.ObjectVersion objectVersions = 5; + * + *
+       * List of objects and their version.
+       * 
+ */ public java.util.List getObjectVersionsList() { - return java.util.Collections.unmodifiableList(result.objectVersions_); + if (objectVersionsBuilder_ == null) { + return java.util.Collections.unmodifiableList(objectVersions_); + } else { + return objectVersionsBuilder_.getMessageList(); + } } + /** + * repeated .xtreemfs.pbrpc.ObjectVersion objectVersions = 5; + * + *
+       * List of objects and their version.
+       * 
+ */ public int getObjectVersionsCount() { - return result.getObjectVersionsCount(); + if (objectVersionsBuilder_ == null) { + return objectVersions_.size(); + } else { + return objectVersionsBuilder_.getCount(); + } } + /** + * repeated .xtreemfs.pbrpc.ObjectVersion objectVersions = 5; + * + *
+       * List of objects and their version.
+       * 
+ */ public org.xtreemfs.pbrpc.generatedinterfaces.OSD.ObjectVersion getObjectVersions(int index) { - return result.getObjectVersions(index); - } - public Builder setObjectVersions(int index, org.xtreemfs.pbrpc.generatedinterfaces.OSD.ObjectVersion value) { - if (value == null) { - throw new NullPointerException(); + if (objectVersionsBuilder_ == null) { + return objectVersions_.get(index); + } else { + return objectVersionsBuilder_.getMessage(index); + } + } + /** + * repeated .xtreemfs.pbrpc.ObjectVersion objectVersions = 5; + * + *
+       * List of objects and their version.
+       * 
+ */ + public Builder setObjectVersions( + int index, org.xtreemfs.pbrpc.generatedinterfaces.OSD.ObjectVersion value) { + if (objectVersionsBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + ensureObjectVersionsIsMutable(); + objectVersions_.set(index, value); + onChanged(); + } else { + objectVersionsBuilder_.setMessage(index, value); + } + return this; + } + /** + * repeated .xtreemfs.pbrpc.ObjectVersion objectVersions = 5; + * + *
+       * List of objects and their version.
+       * 
+ */ + public Builder setObjectVersions( + int index, org.xtreemfs.pbrpc.generatedinterfaces.OSD.ObjectVersion.Builder builderForValue) { + if (objectVersionsBuilder_ == null) { + ensureObjectVersionsIsMutable(); + objectVersions_.set(index, builderForValue.build()); + onChanged(); + } else { + objectVersionsBuilder_.setMessage(index, builderForValue.build()); } - result.objectVersions_.set(index, value); - return this; - } - public Builder setObjectVersions(int index, org.xtreemfs.pbrpc.generatedinterfaces.OSD.ObjectVersion.Builder builderForValue) { - result.objectVersions_.set(index, builderForValue.build()); return this; } + /** + * repeated .xtreemfs.pbrpc.ObjectVersion objectVersions = 5; + * + *
+       * List of objects and their version.
+       * 
+ */ public Builder addObjectVersions(org.xtreemfs.pbrpc.generatedinterfaces.OSD.ObjectVersion value) { - if (value == null) { - throw new NullPointerException(); - } - if (result.objectVersions_.isEmpty()) { - result.objectVersions_ = new java.util.ArrayList(); - } - result.objectVersions_.add(value); - return this; - } - public Builder addObjectVersions(org.xtreemfs.pbrpc.generatedinterfaces.OSD.ObjectVersion.Builder builderForValue) { - if (result.objectVersions_.isEmpty()) { - result.objectVersions_ = new java.util.ArrayList(); + if (objectVersionsBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + ensureObjectVersionsIsMutable(); + objectVersions_.add(value); + onChanged(); + } else { + objectVersionsBuilder_.addMessage(value); + } + return this; + } + /** + * repeated .xtreemfs.pbrpc.ObjectVersion objectVersions = 5; + * + *
+       * List of objects and their version.
+       * 
+ */ + public Builder addObjectVersions( + int index, org.xtreemfs.pbrpc.generatedinterfaces.OSD.ObjectVersion value) { + if (objectVersionsBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + ensureObjectVersionsIsMutable(); + objectVersions_.add(index, value); + onChanged(); + } else { + objectVersionsBuilder_.addMessage(index, value); + } + return this; + } + /** + * repeated .xtreemfs.pbrpc.ObjectVersion objectVersions = 5; + * + *
+       * List of objects and their version.
+       * 
+ */ + public Builder addObjectVersions( + org.xtreemfs.pbrpc.generatedinterfaces.OSD.ObjectVersion.Builder builderForValue) { + if (objectVersionsBuilder_ == null) { + ensureObjectVersionsIsMutable(); + objectVersions_.add(builderForValue.build()); + onChanged(); + } else { + objectVersionsBuilder_.addMessage(builderForValue.build()); + } + return this; + } + /** + * repeated .xtreemfs.pbrpc.ObjectVersion objectVersions = 5; + * + *
+       * List of objects and their version.
+       * 
+ */ + public Builder addObjectVersions( + int index, org.xtreemfs.pbrpc.generatedinterfaces.OSD.ObjectVersion.Builder builderForValue) { + if (objectVersionsBuilder_ == null) { + ensureObjectVersionsIsMutable(); + objectVersions_.add(index, builderForValue.build()); + onChanged(); + } else { + objectVersionsBuilder_.addMessage(index, builderForValue.build()); } - result.objectVersions_.add(builderForValue.build()); return this; } + /** + * repeated .xtreemfs.pbrpc.ObjectVersion objectVersions = 5; + * + *
+       * List of objects and their version.
+       * 
+ */ public Builder addAllObjectVersions( java.lang.Iterable values) { - if (result.objectVersions_.isEmpty()) { - result.objectVersions_ = new java.util.ArrayList(); + if (objectVersionsBuilder_ == null) { + ensureObjectVersionsIsMutable(); + super.addAll(values, objectVersions_); + onChanged(); + } else { + objectVersionsBuilder_.addAllMessages(values); } - super.addAll(values, result.objectVersions_); return this; } + /** + * repeated .xtreemfs.pbrpc.ObjectVersion objectVersions = 5; + * + *
+       * List of objects and their version.
+       * 
+ */ public Builder clearObjectVersions() { - result.objectVersions_ = java.util.Collections.emptyList(); - return this; + if (objectVersionsBuilder_ == null) { + objectVersions_ = java.util.Collections.emptyList(); + bitField0_ = (bitField0_ & ~0x00000010); + onChanged(); + } else { + objectVersionsBuilder_.clear(); + } + return this; + } + /** + * repeated .xtreemfs.pbrpc.ObjectVersion objectVersions = 5; + * + *
+       * List of objects and their version.
+       * 
+ */ + public Builder removeObjectVersions(int index) { + if (objectVersionsBuilder_ == null) { + ensureObjectVersionsIsMutable(); + objectVersions_.remove(index); + onChanged(); + } else { + objectVersionsBuilder_.remove(index); + } + return this; + } + /** + * repeated .xtreemfs.pbrpc.ObjectVersion objectVersions = 5; + * + *
+       * List of objects and their version.
+       * 
+ */ + public org.xtreemfs.pbrpc.generatedinterfaces.OSD.ObjectVersion.Builder getObjectVersionsBuilder( + int index) { + return getObjectVersionsFieldBuilder().getBuilder(index); + } + /** + * repeated .xtreemfs.pbrpc.ObjectVersion objectVersions = 5; + * + *
+       * List of objects and their version.
+       * 
+ */ + public org.xtreemfs.pbrpc.generatedinterfaces.OSD.ObjectVersionOrBuilder getObjectVersionsOrBuilder( + int index) { + if (objectVersionsBuilder_ == null) { + return objectVersions_.get(index); } else { + return objectVersionsBuilder_.getMessageOrBuilder(index); + } + } + /** + * repeated .xtreemfs.pbrpc.ObjectVersion objectVersions = 5; + * + *
+       * List of objects and their version.
+       * 
+ */ + public java.util.List + getObjectVersionsOrBuilderList() { + if (objectVersionsBuilder_ != null) { + return objectVersionsBuilder_.getMessageOrBuilderList(); + } else { + return java.util.Collections.unmodifiableList(objectVersions_); + } + } + /** + * repeated .xtreemfs.pbrpc.ObjectVersion objectVersions = 5; + * + *
+       * List of objects and their version.
+       * 
+ */ + public org.xtreemfs.pbrpc.generatedinterfaces.OSD.ObjectVersion.Builder addObjectVersionsBuilder() { + return getObjectVersionsFieldBuilder().addBuilder( + org.xtreemfs.pbrpc.generatedinterfaces.OSD.ObjectVersion.getDefaultInstance()); + } + /** + * repeated .xtreemfs.pbrpc.ObjectVersion objectVersions = 5; + * + *
+       * List of objects and their version.
+       * 
+ */ + public org.xtreemfs.pbrpc.generatedinterfaces.OSD.ObjectVersion.Builder addObjectVersionsBuilder( + int index) { + return getObjectVersionsFieldBuilder().addBuilder( + index, org.xtreemfs.pbrpc.generatedinterfaces.OSD.ObjectVersion.getDefaultInstance()); + } + /** + * repeated .xtreemfs.pbrpc.ObjectVersion objectVersions = 5; + * + *
+       * List of objects and their version.
+       * 
+ */ + public java.util.List + getObjectVersionsBuilderList() { + return getObjectVersionsFieldBuilder().getBuilderList(); + } + private com.google.protobuf.RepeatedFieldBuilder< + org.xtreemfs.pbrpc.generatedinterfaces.OSD.ObjectVersion, org.xtreemfs.pbrpc.generatedinterfaces.OSD.ObjectVersion.Builder, org.xtreemfs.pbrpc.generatedinterfaces.OSD.ObjectVersionOrBuilder> + getObjectVersionsFieldBuilder() { + if (objectVersionsBuilder_ == null) { + objectVersionsBuilder_ = new com.google.protobuf.RepeatedFieldBuilder< + org.xtreemfs.pbrpc.generatedinterfaces.OSD.ObjectVersion, org.xtreemfs.pbrpc.generatedinterfaces.OSD.ObjectVersion.Builder, org.xtreemfs.pbrpc.generatedinterfaces.OSD.ObjectVersionOrBuilder>( + objectVersions_, + ((bitField0_ & 0x00000010) == 0x00000010), + getParentForChildren(), + isClean()); + objectVersions_ = null; + } + return objectVersionsBuilder_; } - + // required .xtreemfs.pbrpc.TruncateLog truncate_log = 6; + private org.xtreemfs.pbrpc.generatedinterfaces.OSD.TruncateLog truncateLog_ = org.xtreemfs.pbrpc.generatedinterfaces.OSD.TruncateLog.getDefaultInstance(); + private com.google.protobuf.SingleFieldBuilder< + org.xtreemfs.pbrpc.generatedinterfaces.OSD.TruncateLog, org.xtreemfs.pbrpc.generatedinterfaces.OSD.TruncateLog.Builder, org.xtreemfs.pbrpc.generatedinterfaces.OSD.TruncateLogOrBuilder> truncateLogBuilder_; + /** + * required .xtreemfs.pbrpc.TruncateLog truncate_log = 6; + * + *
+       * Truncate log.
+       * 
+ */ public boolean hasTruncateLog() { - return result.hasTruncateLog(); - } + return ((bitField0_ & 0x00000020) == 0x00000020); + } + /** + * required .xtreemfs.pbrpc.TruncateLog truncate_log = 6; + * + *
+       * Truncate log.
+       * 
+ */ public org.xtreemfs.pbrpc.generatedinterfaces.OSD.TruncateLog getTruncateLog() { - return result.getTruncateLog(); + if (truncateLogBuilder_ == null) { + return truncateLog_; + } else { + return truncateLogBuilder_.getMessage(); + } } + /** + * required .xtreemfs.pbrpc.TruncateLog truncate_log = 6; + * + *
+       * Truncate log.
+       * 
+ */ public Builder setTruncateLog(org.xtreemfs.pbrpc.generatedinterfaces.OSD.TruncateLog value) { - if (value == null) { - throw new NullPointerException(); + if (truncateLogBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + truncateLog_ = value; + onChanged(); + } else { + truncateLogBuilder_.setMessage(value); + } + bitField0_ |= 0x00000020; + return this; + } + /** + * required .xtreemfs.pbrpc.TruncateLog truncate_log = 6; + * + *
+       * Truncate log.
+       * 
+ */ + public Builder setTruncateLog( + org.xtreemfs.pbrpc.generatedinterfaces.OSD.TruncateLog.Builder builderForValue) { + if (truncateLogBuilder_ == null) { + truncateLog_ = builderForValue.build(); + onChanged(); + } else { + truncateLogBuilder_.setMessage(builderForValue.build()); } - result.hasTruncateLog = true; - result.truncateLog_ = value; - return this; - } - public Builder setTruncateLog(org.xtreemfs.pbrpc.generatedinterfaces.OSD.TruncateLog.Builder builderForValue) { - result.hasTruncateLog = true; - result.truncateLog_ = builderForValue.build(); + bitField0_ |= 0x00000020; return this; } + /** + * required .xtreemfs.pbrpc.TruncateLog truncate_log = 6; + * + *
+       * Truncate log.
+       * 
+ */ public Builder mergeTruncateLog(org.xtreemfs.pbrpc.generatedinterfaces.OSD.TruncateLog value) { - if (result.hasTruncateLog() && - result.truncateLog_ != org.xtreemfs.pbrpc.generatedinterfaces.OSD.TruncateLog.getDefaultInstance()) { - result.truncateLog_ = - org.xtreemfs.pbrpc.generatedinterfaces.OSD.TruncateLog.newBuilder(result.truncateLog_).mergeFrom(value).buildPartial(); + if (truncateLogBuilder_ == null) { + if (((bitField0_ & 0x00000020) == 0x00000020) && + truncateLog_ != org.xtreemfs.pbrpc.generatedinterfaces.OSD.TruncateLog.getDefaultInstance()) { + truncateLog_ = + org.xtreemfs.pbrpc.generatedinterfaces.OSD.TruncateLog.newBuilder(truncateLog_).mergeFrom(value).buildPartial(); + } else { + truncateLog_ = value; + } + onChanged(); } else { - result.truncateLog_ = value; + truncateLogBuilder_.mergeFrom(value); } - result.hasTruncateLog = true; + bitField0_ |= 0x00000020; return this; } + /** + * required .xtreemfs.pbrpc.TruncateLog truncate_log = 6; + * + *
+       * Truncate log.
+       * 
+ */ public Builder clearTruncateLog() { - result.hasTruncateLog = false; - result.truncateLog_ = org.xtreemfs.pbrpc.generatedinterfaces.OSD.TruncateLog.getDefaultInstance(); - return this; + if (truncateLogBuilder_ == null) { + truncateLog_ = org.xtreemfs.pbrpc.generatedinterfaces.OSD.TruncateLog.getDefaultInstance(); + onChanged(); + } else { + truncateLogBuilder_.clear(); + } + bitField0_ = (bitField0_ & ~0x00000020); + return this; + } + /** + * required .xtreemfs.pbrpc.TruncateLog truncate_log = 6; + * + *
+       * Truncate log.
+       * 
+ */ + public org.xtreemfs.pbrpc.generatedinterfaces.OSD.TruncateLog.Builder getTruncateLogBuilder() { + bitField0_ |= 0x00000020; + onChanged(); + return getTruncateLogFieldBuilder().getBuilder(); + } + /** + * required .xtreemfs.pbrpc.TruncateLog truncate_log = 6; + * + *
+       * Truncate log.
+       * 
+ */ + public org.xtreemfs.pbrpc.generatedinterfaces.OSD.TruncateLogOrBuilder getTruncateLogOrBuilder() { + if (truncateLogBuilder_ != null) { + return truncateLogBuilder_.getMessageOrBuilder(); + } else { + return truncateLog_; + } + } + /** + * required .xtreemfs.pbrpc.TruncateLog truncate_log = 6; + * + *
+       * Truncate log.
+       * 
+ */ + private com.google.protobuf.SingleFieldBuilder< + org.xtreemfs.pbrpc.generatedinterfaces.OSD.TruncateLog, org.xtreemfs.pbrpc.generatedinterfaces.OSD.TruncateLog.Builder, org.xtreemfs.pbrpc.generatedinterfaces.OSD.TruncateLogOrBuilder> + getTruncateLogFieldBuilder() { + if (truncateLogBuilder_ == null) { + truncateLogBuilder_ = new com.google.protobuf.SingleFieldBuilder< + org.xtreemfs.pbrpc.generatedinterfaces.OSD.TruncateLog, org.xtreemfs.pbrpc.generatedinterfaces.OSD.TruncateLog.Builder, org.xtreemfs.pbrpc.generatedinterfaces.OSD.TruncateLogOrBuilder>( + truncateLog_, + getParentForChildren(), + isClean()); + truncateLog_ = null; + } + return truncateLogBuilder_; } - + // @@protoc_insertion_point(builder_scope:xtreemfs.pbrpc.ReplicaStatus) } - + static { defaultInstance = new ReplicaStatus(true); - org.xtreemfs.pbrpc.generatedinterfaces.OSD.internalForceInit(); defaultInstance.initFields(); } - + // @@protoc_insertion_point(class_scope:xtreemfs.pbrpc.ReplicaStatus) } - + + public interface ObjectVersionMappingOrBuilder + extends com.google.protobuf.MessageOrBuilder { + + // required fixed64 object_number = 1; + /** + * required fixed64 object_number = 1; + */ + boolean hasObjectNumber(); + /** + * required fixed64 object_number = 1; + */ + long getObjectNumber(); + + // required fixed64 object_version = 2; + /** + * required fixed64 object_version = 2; + */ + boolean hasObjectVersion(); + /** + * required fixed64 object_version = 2; + */ + long getObjectVersion(); + + // repeated string osd_uuids = 3; + /** + * repeated string osd_uuids = 3; + */ + java.util.List + getOsdUuidsList(); + /** + * repeated string osd_uuids = 3; + */ + int getOsdUuidsCount(); + /** + * repeated string osd_uuids = 3; + */ + java.lang.String getOsdUuids(int index); + /** + * repeated string osd_uuids = 3; + */ + com.google.protobuf.ByteString + getOsdUuidsBytes(int index); + } + /** + * Protobuf type {@code xtreemfs.pbrpc.ObjectVersionMapping} + * + *
+   * Mapping from object_number/version to OSDs that have
+   * a copy of this object. Used by the rw-replication.
+   * 
+ */ public static final class ObjectVersionMapping extends - com.google.protobuf.GeneratedMessage { + com.google.protobuf.GeneratedMessage + implements ObjectVersionMappingOrBuilder { // Use ObjectVersionMapping.newBuilder() to construct. - private ObjectVersionMapping() { - initFields(); + private ObjectVersionMapping(com.google.protobuf.GeneratedMessage.Builder builder) { + super(builder); + this.unknownFields = builder.getUnknownFields(); } - private ObjectVersionMapping(boolean noInit) {} - + private ObjectVersionMapping(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); } + private static final ObjectVersionMapping defaultInstance; public static ObjectVersionMapping getDefaultInstance() { return defaultInstance; } - + public ObjectVersionMapping getDefaultInstanceForType() { return defaultInstance; } - + + private final com.google.protobuf.UnknownFieldSet unknownFields; + @java.lang.Override + public final com.google.protobuf.UnknownFieldSet + getUnknownFields() { + return this.unknownFields; + } + private ObjectVersionMapping( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + initFields(); + int mutable_bitField0_ = 0; + com.google.protobuf.UnknownFieldSet.Builder unknownFields = + com.google.protobuf.UnknownFieldSet.newBuilder(); + try { + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch (tag) { + case 0: + done = true; + break; + default: { + if (!parseUnknownField(input, unknownFields, + extensionRegistry, tag)) { + done = true; + } + break; + } + case 9: { + bitField0_ |= 0x00000001; + objectNumber_ = input.readFixed64(); + break; + } + case 17: { + bitField0_ |= 0x00000002; + objectVersion_ = input.readFixed64(); + break; + } + case 26: { + if (!((mutable_bitField0_ & 0x00000004) == 0x00000004)) { + osdUuids_ = new com.google.protobuf.LazyStringArrayList(); + mutable_bitField0_ |= 0x00000004; + } + osdUuids_.add(input.readBytes()); + break; + } + } + } + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(this); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException( + e.getMessage()).setUnfinishedMessage(this); + } finally { + if (((mutable_bitField0_ & 0x00000004) == 0x00000004)) { + osdUuids_ = new com.google.protobuf.UnmodifiableLazyStringList(osdUuids_); + } + this.unknownFields = unknownFields.build(); + makeExtensionsImmutable(); + } + } public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { return org.xtreemfs.pbrpc.generatedinterfaces.OSD.internal_static_xtreemfs_pbrpc_ObjectVersionMapping_descriptor; } - + protected com.google.protobuf.GeneratedMessage.FieldAccessorTable internalGetFieldAccessorTable() { - return org.xtreemfs.pbrpc.generatedinterfaces.OSD.internal_static_xtreemfs_pbrpc_ObjectVersionMapping_fieldAccessorTable; + return org.xtreemfs.pbrpc.generatedinterfaces.OSD.internal_static_xtreemfs_pbrpc_ObjectVersionMapping_fieldAccessorTable + .ensureFieldAccessorsInitialized( + org.xtreemfs.pbrpc.generatedinterfaces.OSD.ObjectVersionMapping.class, org.xtreemfs.pbrpc.generatedinterfaces.OSD.ObjectVersionMapping.Builder.class); + } + + public static com.google.protobuf.Parser PARSER = + new com.google.protobuf.AbstractParser() { + public ObjectVersionMapping parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return new ObjectVersionMapping(input, extensionRegistry); + } + }; + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; } - + + private int bitField0_; // required fixed64 object_number = 1; public static final int OBJECT_NUMBER_FIELD_NUMBER = 1; - private boolean hasObjectNumber; - private long objectNumber_ = 0L; - public boolean hasObjectNumber() { return hasObjectNumber; } - public long getObjectNumber() { return objectNumber_; } - + private long objectNumber_; + /** + * required fixed64 object_number = 1; + */ + public boolean hasObjectNumber() { + return ((bitField0_ & 0x00000001) == 0x00000001); + } + /** + * required fixed64 object_number = 1; + */ + public long getObjectNumber() { + return objectNumber_; + } + // required fixed64 object_version = 2; public static final int OBJECT_VERSION_FIELD_NUMBER = 2; - private boolean hasObjectVersion; - private long objectVersion_ = 0L; - public boolean hasObjectVersion() { return hasObjectVersion; } - public long getObjectVersion() { return objectVersion_; } - + private long objectVersion_; + /** + * required fixed64 object_version = 2; + */ + public boolean hasObjectVersion() { + return ((bitField0_ & 0x00000002) == 0x00000002); + } + /** + * required fixed64 object_version = 2; + */ + public long getObjectVersion() { + return objectVersion_; + } + // repeated string osd_uuids = 3; public static final int OSD_UUIDS_FIELD_NUMBER = 3; - private java.util.List osdUuids_ = - java.util.Collections.emptyList(); - public java.util.List getOsdUuidsList() { + private com.google.protobuf.LazyStringList osdUuids_; + /** + * repeated string osd_uuids = 3; + */ + public java.util.List + getOsdUuidsList() { return osdUuids_; } - public int getOsdUuidsCount() { return osdUuids_.size(); } + /** + * repeated string osd_uuids = 3; + */ + public int getOsdUuidsCount() { + return osdUuids_.size(); + } + /** + * repeated string osd_uuids = 3; + */ public java.lang.String getOsdUuids(int index) { return osdUuids_.get(index); } - + /** + * repeated string osd_uuids = 3; + */ + public com.google.protobuf.ByteString + getOsdUuidsBytes(int index) { + return osdUuids_.getByteString(index); + } + private void initFields() { + objectNumber_ = 0L; + objectVersion_ = 0L; + osdUuids_ = com.google.protobuf.LazyStringArrayList.EMPTY; } + private byte memoizedIsInitialized = -1; public final boolean isInitialized() { - if (!hasObjectNumber) return false; - if (!hasObjectVersion) return false; + byte isInitialized = memoizedIsInitialized; + if (isInitialized != -1) return isInitialized == 1; + + if (!hasObjectNumber()) { + memoizedIsInitialized = 0; + return false; + } + if (!hasObjectVersion()) { + memoizedIsInitialized = 0; + return false; + } + memoizedIsInitialized = 1; return true; } - + public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException { getSerializedSize(); - if (hasObjectNumber()) { - output.writeFixed64(1, getObjectNumber()); + if (((bitField0_ & 0x00000001) == 0x00000001)) { + output.writeFixed64(1, objectNumber_); } - if (hasObjectVersion()) { - output.writeFixed64(2, getObjectVersion()); + if (((bitField0_ & 0x00000002) == 0x00000002)) { + output.writeFixed64(2, objectVersion_); } - for (java.lang.String element : getOsdUuidsList()) { - output.writeString(3, element); + for (int i = 0; i < osdUuids_.size(); i++) { + output.writeBytes(3, osdUuids_.getByteString(i)); } getUnknownFields().writeTo(output); } - + private int memoizedSerializedSize = -1; public int getSerializedSize() { int size = memoizedSerializedSize; if (size != -1) return size; - + size = 0; - if (hasObjectNumber()) { + if (((bitField0_ & 0x00000001) == 0x00000001)) { size += com.google.protobuf.CodedOutputStream - .computeFixed64Size(1, getObjectNumber()); + .computeFixed64Size(1, objectNumber_); } - if (hasObjectVersion()) { + if (((bitField0_ & 0x00000002) == 0x00000002)) { size += com.google.protobuf.CodedOutputStream - .computeFixed64Size(2, getObjectVersion()); + .computeFixed64Size(2, objectVersion_); } { int dataSize = 0; - for (java.lang.String element : getOsdUuidsList()) { + for (int i = 0; i < osdUuids_.size(); i++) { dataSize += com.google.protobuf.CodedOutputStream - .computeStringSizeNoTag(element); + .computeBytesSizeNoTag(osdUuids_.getByteString(i)); } size += dataSize; size += 1 * getOsdUuidsList().size(); @@ -3201,153 +6515,176 @@ public final class OSD { memoizedSerializedSize = size; return size; } - + + private static final long serialVersionUID = 0L; + @java.lang.Override + protected java.lang.Object writeReplace() + throws java.io.ObjectStreamException { + return super.writeReplace(); + } + public static org.xtreemfs.pbrpc.generatedinterfaces.OSD.ObjectVersionMapping parseFrom( com.google.protobuf.ByteString data) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data).buildParsed(); + return PARSER.parseFrom(data); } public static org.xtreemfs.pbrpc.generatedinterfaces.OSD.ObjectVersionMapping parseFrom( com.google.protobuf.ByteString data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(data, extensionRegistry); } public static org.xtreemfs.pbrpc.generatedinterfaces.OSD.ObjectVersionMapping parseFrom(byte[] data) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data).buildParsed(); + return PARSER.parseFrom(data); } public static org.xtreemfs.pbrpc.generatedinterfaces.OSD.ObjectVersionMapping parseFrom( byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(data, extensionRegistry); } public static org.xtreemfs.pbrpc.generatedinterfaces.OSD.ObjectVersionMapping parseFrom(java.io.InputStream input) throws java.io.IOException { - return newBuilder().mergeFrom(input).buildParsed(); + return PARSER.parseFrom(input); } public static org.xtreemfs.pbrpc.generatedinterfaces.OSD.ObjectVersionMapping parseFrom( java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - return newBuilder().mergeFrom(input, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(input, extensionRegistry); } public static org.xtreemfs.pbrpc.generatedinterfaces.OSD.ObjectVersionMapping parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException { - Builder builder = newBuilder(); - if (builder.mergeDelimitedFrom(input)) { - return builder.buildParsed(); - } else { - return null; - } + return PARSER.parseDelimitedFrom(input); } public static org.xtreemfs.pbrpc.generatedinterfaces.OSD.ObjectVersionMapping parseDelimitedFrom( java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - Builder builder = newBuilder(); - if (builder.mergeDelimitedFrom(input, extensionRegistry)) { - return builder.buildParsed(); - } else { - return null; - } + return PARSER.parseDelimitedFrom(input, extensionRegistry); } public static org.xtreemfs.pbrpc.generatedinterfaces.OSD.ObjectVersionMapping parseFrom( com.google.protobuf.CodedInputStream input) throws java.io.IOException { - return newBuilder().mergeFrom(input).buildParsed(); + return PARSER.parseFrom(input); } public static org.xtreemfs.pbrpc.generatedinterfaces.OSD.ObjectVersionMapping parseFrom( com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - return newBuilder().mergeFrom(input, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(input, extensionRegistry); } - + public static Builder newBuilder() { return Builder.create(); } public Builder newBuilderForType() { return newBuilder(); } public static Builder newBuilder(org.xtreemfs.pbrpc.generatedinterfaces.OSD.ObjectVersionMapping prototype) { return newBuilder().mergeFrom(prototype); } public Builder toBuilder() { return newBuilder(this); } - + + @java.lang.Override + protected Builder newBuilderForType( + com.google.protobuf.GeneratedMessage.BuilderParent parent) { + Builder builder = new Builder(parent); + return builder; + } + /** + * Protobuf type {@code xtreemfs.pbrpc.ObjectVersionMapping} + * + *
+     * Mapping from object_number/version to OSDs that have
+     * a copy of this object. Used by the rw-replication.
+     * 
+ */ public static final class Builder extends - com.google.protobuf.GeneratedMessage.Builder { - private org.xtreemfs.pbrpc.generatedinterfaces.OSD.ObjectVersionMapping result; - + com.google.protobuf.GeneratedMessage.Builder + implements org.xtreemfs.pbrpc.generatedinterfaces.OSD.ObjectVersionMappingOrBuilder { + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return org.xtreemfs.pbrpc.generatedinterfaces.OSD.internal_static_xtreemfs_pbrpc_ObjectVersionMapping_descriptor; + } + + protected com.google.protobuf.GeneratedMessage.FieldAccessorTable + internalGetFieldAccessorTable() { + return org.xtreemfs.pbrpc.generatedinterfaces.OSD.internal_static_xtreemfs_pbrpc_ObjectVersionMapping_fieldAccessorTable + .ensureFieldAccessorsInitialized( + org.xtreemfs.pbrpc.generatedinterfaces.OSD.ObjectVersionMapping.class, org.xtreemfs.pbrpc.generatedinterfaces.OSD.ObjectVersionMapping.Builder.class); + } + // Construct using org.xtreemfs.pbrpc.generatedinterfaces.OSD.ObjectVersionMapping.newBuilder() - private Builder() {} - - private static Builder create() { - Builder builder = new Builder(); - builder.result = new org.xtreemfs.pbrpc.generatedinterfaces.OSD.ObjectVersionMapping(); - return builder; + private Builder() { + maybeForceBuilderInitialization(); } - - protected org.xtreemfs.pbrpc.generatedinterfaces.OSD.ObjectVersionMapping internalGetResult() { - return result; + + private Builder( + com.google.protobuf.GeneratedMessage.BuilderParent parent) { + super(parent); + maybeForceBuilderInitialization(); } - - public Builder clear() { - if (result == null) { - throw new IllegalStateException( - "Cannot call clear() after build()."); + private void maybeForceBuilderInitialization() { + if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) { } - result = new org.xtreemfs.pbrpc.generatedinterfaces.OSD.ObjectVersionMapping(); + } + private static Builder create() { + return new Builder(); + } + + public Builder clear() { + super.clear(); + objectNumber_ = 0L; + bitField0_ = (bitField0_ & ~0x00000001); + objectVersion_ = 0L; + bitField0_ = (bitField0_ & ~0x00000002); + osdUuids_ = com.google.protobuf.LazyStringArrayList.EMPTY; + bitField0_ = (bitField0_ & ~0x00000004); return this; } - + public Builder clone() { - return create().mergeFrom(result); + return create().mergeFrom(buildPartial()); } - + public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() { - return org.xtreemfs.pbrpc.generatedinterfaces.OSD.ObjectVersionMapping.getDescriptor(); + return org.xtreemfs.pbrpc.generatedinterfaces.OSD.internal_static_xtreemfs_pbrpc_ObjectVersionMapping_descriptor; } - + public org.xtreemfs.pbrpc.generatedinterfaces.OSD.ObjectVersionMapping getDefaultInstanceForType() { return org.xtreemfs.pbrpc.generatedinterfaces.OSD.ObjectVersionMapping.getDefaultInstance(); } - - public boolean isInitialized() { - return result.isInitialized(); - } + public org.xtreemfs.pbrpc.generatedinterfaces.OSD.ObjectVersionMapping build() { - if (result != null && !isInitialized()) { + org.xtreemfs.pbrpc.generatedinterfaces.OSD.ObjectVersionMapping result = buildPartial(); + if (!result.isInitialized()) { throw newUninitializedMessageException(result); } - return buildPartial(); - } - - private org.xtreemfs.pbrpc.generatedinterfaces.OSD.ObjectVersionMapping buildParsed() - throws com.google.protobuf.InvalidProtocolBufferException { - if (!isInitialized()) { - throw newUninitializedMessageException( - result).asInvalidProtocolBufferException(); - } - return buildPartial(); + return result; } - + public org.xtreemfs.pbrpc.generatedinterfaces.OSD.ObjectVersionMapping buildPartial() { - if (result == null) { - throw new IllegalStateException( - "build() has already been called on this Builder."); - } - if (result.osdUuids_ != java.util.Collections.EMPTY_LIST) { - result.osdUuids_ = - java.util.Collections.unmodifiableList(result.osdUuids_); - } - org.xtreemfs.pbrpc.generatedinterfaces.OSD.ObjectVersionMapping returnMe = result; - result = null; - return returnMe; + org.xtreemfs.pbrpc.generatedinterfaces.OSD.ObjectVersionMapping result = new org.xtreemfs.pbrpc.generatedinterfaces.OSD.ObjectVersionMapping(this); + int from_bitField0_ = bitField0_; + int to_bitField0_ = 0; + if (((from_bitField0_ & 0x00000001) == 0x00000001)) { + to_bitField0_ |= 0x00000001; + } + result.objectNumber_ = objectNumber_; + if (((from_bitField0_ & 0x00000002) == 0x00000002)) { + to_bitField0_ |= 0x00000002; + } + result.objectVersion_ = objectVersion_; + if (((bitField0_ & 0x00000004) == 0x00000004)) { + osdUuids_ = new com.google.protobuf.UnmodifiableLazyStringList( + osdUuids_); + bitField0_ = (bitField0_ & ~0x00000004); + } + result.osdUuids_ = osdUuids_; + result.bitField0_ = to_bitField0_; + onBuilt(); + return result; } - + public Builder mergeFrom(com.google.protobuf.Message other) { if (other instanceof org.xtreemfs.pbrpc.generatedinterfaces.OSD.ObjectVersionMapping) { return mergeFrom((org.xtreemfs.pbrpc.generatedinterfaces.OSD.ObjectVersionMapping)other); @@ -3356,7 +6693,7 @@ public final class OSD { return this; } } - + public Builder mergeFrom(org.xtreemfs.pbrpc.generatedinterfaces.OSD.ObjectVersionMapping other) { if (other == org.xtreemfs.pbrpc.generatedinterfaces.OSD.ObjectVersionMapping.getDefaultInstance()) return this; if (other.hasObjectNumber()) { @@ -3366,406 +6703,780 @@ public final class OSD { setObjectVersion(other.getObjectVersion()); } if (!other.osdUuids_.isEmpty()) { - if (result.osdUuids_.isEmpty()) { - result.osdUuids_ = new java.util.ArrayList(); + if (osdUuids_.isEmpty()) { + osdUuids_ = other.osdUuids_; + bitField0_ = (bitField0_ & ~0x00000004); + } else { + ensureOsdUuidsIsMutable(); + osdUuids_.addAll(other.osdUuids_); } - result.osdUuids_.addAll(other.osdUuids_); + onChanged(); } this.mergeUnknownFields(other.getUnknownFields()); return this; } - + + public final boolean isInitialized() { + if (!hasObjectNumber()) { + + return false; + } + if (!hasObjectVersion()) { + + return false; + } + return true; + } + public Builder mergeFrom( com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - com.google.protobuf.UnknownFieldSet.Builder unknownFields = - com.google.protobuf.UnknownFieldSet.newBuilder( - this.getUnknownFields()); - while (true) { - int tag = input.readTag(); - switch (tag) { - case 0: - this.setUnknownFields(unknownFields.build()); - return this; - default: { - if (!parseUnknownField(input, unknownFields, - extensionRegistry, tag)) { - this.setUnknownFields(unknownFields.build()); - return this; - } - break; - } - case 9: { - setObjectNumber(input.readFixed64()); - break; - } - case 17: { - setObjectVersion(input.readFixed64()); - break; - } - case 26: { - addOsdUuids(input.readString()); - break; - } + org.xtreemfs.pbrpc.generatedinterfaces.OSD.ObjectVersionMapping parsedMessage = null; + try { + parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + parsedMessage = (org.xtreemfs.pbrpc.generatedinterfaces.OSD.ObjectVersionMapping) e.getUnfinishedMessage(); + throw e; + } finally { + if (parsedMessage != null) { + mergeFrom(parsedMessage); } } + return this; } - - + private int bitField0_; + // required fixed64 object_number = 1; + private long objectNumber_ ; + /** + * required fixed64 object_number = 1; + */ public boolean hasObjectNumber() { - return result.hasObjectNumber(); + return ((bitField0_ & 0x00000001) == 0x00000001); } + /** + * required fixed64 object_number = 1; + */ public long getObjectNumber() { - return result.getObjectNumber(); + return objectNumber_; } + /** + * required fixed64 object_number = 1; + */ public Builder setObjectNumber(long value) { - result.hasObjectNumber = true; - result.objectNumber_ = value; + bitField0_ |= 0x00000001; + objectNumber_ = value; + onChanged(); return this; } + /** + * required fixed64 object_number = 1; + */ public Builder clearObjectNumber() { - result.hasObjectNumber = false; - result.objectNumber_ = 0L; + bitField0_ = (bitField0_ & ~0x00000001); + objectNumber_ = 0L; + onChanged(); return this; } - + // required fixed64 object_version = 2; + private long objectVersion_ ; + /** + * required fixed64 object_version = 2; + */ public boolean hasObjectVersion() { - return result.hasObjectVersion(); + return ((bitField0_ & 0x00000002) == 0x00000002); } + /** + * required fixed64 object_version = 2; + */ public long getObjectVersion() { - return result.getObjectVersion(); + return objectVersion_; } + /** + * required fixed64 object_version = 2; + */ public Builder setObjectVersion(long value) { - result.hasObjectVersion = true; - result.objectVersion_ = value; + bitField0_ |= 0x00000002; + objectVersion_ = value; + onChanged(); return this; } + /** + * required fixed64 object_version = 2; + */ public Builder clearObjectVersion() { - result.hasObjectVersion = false; - result.objectVersion_ = 0L; + bitField0_ = (bitField0_ & ~0x00000002); + objectVersion_ = 0L; + onChanged(); return this; } - + // repeated string osd_uuids = 3; - public java.util.List getOsdUuidsList() { - return java.util.Collections.unmodifiableList(result.osdUuids_); - } + private com.google.protobuf.LazyStringList osdUuids_ = com.google.protobuf.LazyStringArrayList.EMPTY; + private void ensureOsdUuidsIsMutable() { + if (!((bitField0_ & 0x00000004) == 0x00000004)) { + osdUuids_ = new com.google.protobuf.LazyStringArrayList(osdUuids_); + bitField0_ |= 0x00000004; + } + } + /** + * repeated string osd_uuids = 3; + */ + public java.util.List + getOsdUuidsList() { + return java.util.Collections.unmodifiableList(osdUuids_); + } + /** + * repeated string osd_uuids = 3; + */ public int getOsdUuidsCount() { - return result.getOsdUuidsCount(); + return osdUuids_.size(); } + /** + * repeated string osd_uuids = 3; + */ public java.lang.String getOsdUuids(int index) { - return result.getOsdUuids(index); - } - public Builder setOsdUuids(int index, java.lang.String value) { + return osdUuids_.get(index); + } + /** + * repeated string osd_uuids = 3; + */ + public com.google.protobuf.ByteString + getOsdUuidsBytes(int index) { + return osdUuids_.getByteString(index); + } + /** + * repeated string osd_uuids = 3; + */ + public Builder setOsdUuids( + int index, java.lang.String value) { if (value == null) { throw new NullPointerException(); } - result.osdUuids_.set(index, value); + ensureOsdUuidsIsMutable(); + osdUuids_.set(index, value); + onChanged(); return this; } - public Builder addOsdUuids(java.lang.String value) { + /** + * repeated string osd_uuids = 3; + */ + public Builder addOsdUuids( + java.lang.String value) { if (value == null) { throw new NullPointerException(); } - if (result.osdUuids_.isEmpty()) { - result.osdUuids_ = new java.util.ArrayList(); - } - result.osdUuids_.add(value); + ensureOsdUuidsIsMutable(); + osdUuids_.add(value); + onChanged(); return this; } + /** + * repeated string osd_uuids = 3; + */ public Builder addAllOsdUuids( - java.lang.Iterable values) { - if (result.osdUuids_.isEmpty()) { - result.osdUuids_ = new java.util.ArrayList(); - } - super.addAll(values, result.osdUuids_); + java.lang.Iterable values) { + ensureOsdUuidsIsMutable(); + super.addAll(values, osdUuids_); + onChanged(); return this; } + /** + * repeated string osd_uuids = 3; + */ public Builder clearOsdUuids() { - result.osdUuids_ = java.util.Collections.emptyList(); + osdUuids_ = com.google.protobuf.LazyStringArrayList.EMPTY; + bitField0_ = (bitField0_ & ~0x00000004); + onChanged(); + return this; + } + /** + * repeated string osd_uuids = 3; + */ + public Builder addOsdUuidsBytes( + com.google.protobuf.ByteString value) { + if (value == null) { + throw new NullPointerException(); + } + ensureOsdUuidsIsMutable(); + osdUuids_.add(value); + onChanged(); return this; } - + // @@protoc_insertion_point(builder_scope:xtreemfs.pbrpc.ObjectVersionMapping) } - + static { defaultInstance = new ObjectVersionMapping(true); - org.xtreemfs.pbrpc.generatedinterfaces.OSD.internalForceInit(); defaultInstance.initFields(); } - + // @@protoc_insertion_point(class_scope:xtreemfs.pbrpc.ObjectVersionMapping) } - + + public interface AuthoritativeReplicaStateOrBuilder + extends com.google.protobuf.MessageOrBuilder { + + // required fixed64 truncate_epoch = 1; + /** + * required fixed64 truncate_epoch = 1; + */ + boolean hasTruncateEpoch(); + /** + * required fixed64 truncate_epoch = 1; + */ + long getTruncateEpoch(); + + // required fixed64 max_obj_version = 4; + /** + * required fixed64 max_obj_version = 4; + */ + boolean hasMaxObjVersion(); + /** + * required fixed64 max_obj_version = 4; + */ + long getMaxObjVersion(); + + // repeated .xtreemfs.pbrpc.ObjectVersionMapping objectVersions = 2; + /** + * repeated .xtreemfs.pbrpc.ObjectVersionMapping objectVersions = 2; + */ + java.util.List + getObjectVersionsList(); + /** + * repeated .xtreemfs.pbrpc.ObjectVersionMapping objectVersions = 2; + */ + org.xtreemfs.pbrpc.generatedinterfaces.OSD.ObjectVersionMapping getObjectVersions(int index); + /** + * repeated .xtreemfs.pbrpc.ObjectVersionMapping objectVersions = 2; + */ + int getObjectVersionsCount(); + /** + * repeated .xtreemfs.pbrpc.ObjectVersionMapping objectVersions = 2; + */ + java.util.List + getObjectVersionsOrBuilderList(); + /** + * repeated .xtreemfs.pbrpc.ObjectVersionMapping objectVersions = 2; + */ + org.xtreemfs.pbrpc.generatedinterfaces.OSD.ObjectVersionMappingOrBuilder getObjectVersionsOrBuilder( + int index); + + // required .xtreemfs.pbrpc.TruncateLog truncate_log = 3; + /** + * required .xtreemfs.pbrpc.TruncateLog truncate_log = 3; + */ + boolean hasTruncateLog(); + /** + * required .xtreemfs.pbrpc.TruncateLog truncate_log = 3; + */ + org.xtreemfs.pbrpc.generatedinterfaces.OSD.TruncateLog getTruncateLog(); + /** + * required .xtreemfs.pbrpc.TruncateLog truncate_log = 3; + */ + org.xtreemfs.pbrpc.generatedinterfaces.OSD.TruncateLogOrBuilder getTruncateLogOrBuilder(); + } + /** + * Protobuf type {@code xtreemfs.pbrpc.AuthoritativeReplicaState} + * + *
+   * Correct replica state sent by the Primary to all
+   * backups. After receiving this information, backups
+   * will bring themselves to the authoritative state by
+   * fetching missing data and deleting outdated objects.
+   * 
+ */ public static final class AuthoritativeReplicaState extends - com.google.protobuf.GeneratedMessage { + com.google.protobuf.GeneratedMessage + implements AuthoritativeReplicaStateOrBuilder { // Use AuthoritativeReplicaState.newBuilder() to construct. - private AuthoritativeReplicaState() { - initFields(); + private AuthoritativeReplicaState(com.google.protobuf.GeneratedMessage.Builder builder) { + super(builder); + this.unknownFields = builder.getUnknownFields(); } - private AuthoritativeReplicaState(boolean noInit) {} - + private AuthoritativeReplicaState(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); } + private static final AuthoritativeReplicaState defaultInstance; public static AuthoritativeReplicaState getDefaultInstance() { return defaultInstance; } - + public AuthoritativeReplicaState getDefaultInstanceForType() { return defaultInstance; } - + + private final com.google.protobuf.UnknownFieldSet unknownFields; + @java.lang.Override + public final com.google.protobuf.UnknownFieldSet + getUnknownFields() { + return this.unknownFields; + } + private AuthoritativeReplicaState( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + initFields(); + int mutable_bitField0_ = 0; + com.google.protobuf.UnknownFieldSet.Builder unknownFields = + com.google.protobuf.UnknownFieldSet.newBuilder(); + try { + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch (tag) { + case 0: + done = true; + break; + default: { + if (!parseUnknownField(input, unknownFields, + extensionRegistry, tag)) { + done = true; + } + break; + } + case 9: { + bitField0_ |= 0x00000001; + truncateEpoch_ = input.readFixed64(); + break; + } + case 18: { + if (!((mutable_bitField0_ & 0x00000004) == 0x00000004)) { + objectVersions_ = new java.util.ArrayList(); + mutable_bitField0_ |= 0x00000004; + } + objectVersions_.add(input.readMessage(org.xtreemfs.pbrpc.generatedinterfaces.OSD.ObjectVersionMapping.PARSER, extensionRegistry)); + break; + } + case 26: { + org.xtreemfs.pbrpc.generatedinterfaces.OSD.TruncateLog.Builder subBuilder = null; + if (((bitField0_ & 0x00000004) == 0x00000004)) { + subBuilder = truncateLog_.toBuilder(); + } + truncateLog_ = input.readMessage(org.xtreemfs.pbrpc.generatedinterfaces.OSD.TruncateLog.PARSER, extensionRegistry); + if (subBuilder != null) { + subBuilder.mergeFrom(truncateLog_); + truncateLog_ = subBuilder.buildPartial(); + } + bitField0_ |= 0x00000004; + break; + } + case 33: { + bitField0_ |= 0x00000002; + maxObjVersion_ = input.readFixed64(); + break; + } + } + } + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(this); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException( + e.getMessage()).setUnfinishedMessage(this); + } finally { + if (((mutable_bitField0_ & 0x00000004) == 0x00000004)) { + objectVersions_ = java.util.Collections.unmodifiableList(objectVersions_); + } + this.unknownFields = unknownFields.build(); + makeExtensionsImmutable(); + } + } public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { return org.xtreemfs.pbrpc.generatedinterfaces.OSD.internal_static_xtreemfs_pbrpc_AuthoritativeReplicaState_descriptor; } - + protected com.google.protobuf.GeneratedMessage.FieldAccessorTable internalGetFieldAccessorTable() { - return org.xtreemfs.pbrpc.generatedinterfaces.OSD.internal_static_xtreemfs_pbrpc_AuthoritativeReplicaState_fieldAccessorTable; + return org.xtreemfs.pbrpc.generatedinterfaces.OSD.internal_static_xtreemfs_pbrpc_AuthoritativeReplicaState_fieldAccessorTable + .ensureFieldAccessorsInitialized( + org.xtreemfs.pbrpc.generatedinterfaces.OSD.AuthoritativeReplicaState.class, org.xtreemfs.pbrpc.generatedinterfaces.OSD.AuthoritativeReplicaState.Builder.class); + } + + public static com.google.protobuf.Parser PARSER = + new com.google.protobuf.AbstractParser() { + public AuthoritativeReplicaState parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return new AuthoritativeReplicaState(input, extensionRegistry); + } + }; + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; } - + + private int bitField0_; // required fixed64 truncate_epoch = 1; public static final int TRUNCATE_EPOCH_FIELD_NUMBER = 1; - private boolean hasTruncateEpoch; - private long truncateEpoch_ = 0L; - public boolean hasTruncateEpoch() { return hasTruncateEpoch; } - public long getTruncateEpoch() { return truncateEpoch_; } - + private long truncateEpoch_; + /** + * required fixed64 truncate_epoch = 1; + */ + public boolean hasTruncateEpoch() { + return ((bitField0_ & 0x00000001) == 0x00000001); + } + /** + * required fixed64 truncate_epoch = 1; + */ + public long getTruncateEpoch() { + return truncateEpoch_; + } + // required fixed64 max_obj_version = 4; public static final int MAX_OBJ_VERSION_FIELD_NUMBER = 4; - private boolean hasMaxObjVersion; - private long maxObjVersion_ = 0L; - public boolean hasMaxObjVersion() { return hasMaxObjVersion; } - public long getMaxObjVersion() { return maxObjVersion_; } - + private long maxObjVersion_; + /** + * required fixed64 max_obj_version = 4; + */ + public boolean hasMaxObjVersion() { + return ((bitField0_ & 0x00000002) == 0x00000002); + } + /** + * required fixed64 max_obj_version = 4; + */ + public long getMaxObjVersion() { + return maxObjVersion_; + } + // repeated .xtreemfs.pbrpc.ObjectVersionMapping objectVersions = 2; public static final int OBJECTVERSIONS_FIELD_NUMBER = 2; - private java.util.List objectVersions_ = - java.util.Collections.emptyList(); + private java.util.List objectVersions_; + /** + * repeated .xtreemfs.pbrpc.ObjectVersionMapping objectVersions = 2; + */ public java.util.List getObjectVersionsList() { return objectVersions_; } - public int getObjectVersionsCount() { return objectVersions_.size(); } + /** + * repeated .xtreemfs.pbrpc.ObjectVersionMapping objectVersions = 2; + */ + public java.util.List + getObjectVersionsOrBuilderList() { + return objectVersions_; + } + /** + * repeated .xtreemfs.pbrpc.ObjectVersionMapping objectVersions = 2; + */ + public int getObjectVersionsCount() { + return objectVersions_.size(); + } + /** + * repeated .xtreemfs.pbrpc.ObjectVersionMapping objectVersions = 2; + */ public org.xtreemfs.pbrpc.generatedinterfaces.OSD.ObjectVersionMapping getObjectVersions(int index) { return objectVersions_.get(index); } - + /** + * repeated .xtreemfs.pbrpc.ObjectVersionMapping objectVersions = 2; + */ + public org.xtreemfs.pbrpc.generatedinterfaces.OSD.ObjectVersionMappingOrBuilder getObjectVersionsOrBuilder( + int index) { + return objectVersions_.get(index); + } + // required .xtreemfs.pbrpc.TruncateLog truncate_log = 3; public static final int TRUNCATE_LOG_FIELD_NUMBER = 3; - private boolean hasTruncateLog; private org.xtreemfs.pbrpc.generatedinterfaces.OSD.TruncateLog truncateLog_; - public boolean hasTruncateLog() { return hasTruncateLog; } - public org.xtreemfs.pbrpc.generatedinterfaces.OSD.TruncateLog getTruncateLog() { return truncateLog_; } - + /** + * required .xtreemfs.pbrpc.TruncateLog truncate_log = 3; + */ + public boolean hasTruncateLog() { + return ((bitField0_ & 0x00000004) == 0x00000004); + } + /** + * required .xtreemfs.pbrpc.TruncateLog truncate_log = 3; + */ + public org.xtreemfs.pbrpc.generatedinterfaces.OSD.TruncateLog getTruncateLog() { + return truncateLog_; + } + /** + * required .xtreemfs.pbrpc.TruncateLog truncate_log = 3; + */ + public org.xtreemfs.pbrpc.generatedinterfaces.OSD.TruncateLogOrBuilder getTruncateLogOrBuilder() { + return truncateLog_; + } + private void initFields() { + truncateEpoch_ = 0L; + maxObjVersion_ = 0L; + objectVersions_ = java.util.Collections.emptyList(); truncateLog_ = org.xtreemfs.pbrpc.generatedinterfaces.OSD.TruncateLog.getDefaultInstance(); } + private byte memoizedIsInitialized = -1; public final boolean isInitialized() { - if (!hasTruncateEpoch) return false; - if (!hasMaxObjVersion) return false; - if (!hasTruncateLog) return false; - for (org.xtreemfs.pbrpc.generatedinterfaces.OSD.ObjectVersionMapping element : getObjectVersionsList()) { - if (!element.isInitialized()) return false; + byte isInitialized = memoizedIsInitialized; + if (isInitialized != -1) return isInitialized == 1; + + if (!hasTruncateEpoch()) { + memoizedIsInitialized = 0; + return false; + } + if (!hasMaxObjVersion()) { + memoizedIsInitialized = 0; + return false; } - if (!getTruncateLog().isInitialized()) return false; + if (!hasTruncateLog()) { + memoizedIsInitialized = 0; + return false; + } + for (int i = 0; i < getObjectVersionsCount(); i++) { + if (!getObjectVersions(i).isInitialized()) { + memoizedIsInitialized = 0; + return false; + } + } + if (!getTruncateLog().isInitialized()) { + memoizedIsInitialized = 0; + return false; + } + memoizedIsInitialized = 1; return true; } - + public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException { getSerializedSize(); - if (hasTruncateEpoch()) { - output.writeFixed64(1, getTruncateEpoch()); + if (((bitField0_ & 0x00000001) == 0x00000001)) { + output.writeFixed64(1, truncateEpoch_); } - for (org.xtreemfs.pbrpc.generatedinterfaces.OSD.ObjectVersionMapping element : getObjectVersionsList()) { - output.writeMessage(2, element); + for (int i = 0; i < objectVersions_.size(); i++) { + output.writeMessage(2, objectVersions_.get(i)); } - if (hasTruncateLog()) { - output.writeMessage(3, getTruncateLog()); + if (((bitField0_ & 0x00000004) == 0x00000004)) { + output.writeMessage(3, truncateLog_); } - if (hasMaxObjVersion()) { - output.writeFixed64(4, getMaxObjVersion()); + if (((bitField0_ & 0x00000002) == 0x00000002)) { + output.writeFixed64(4, maxObjVersion_); } getUnknownFields().writeTo(output); } - + private int memoizedSerializedSize = -1; public int getSerializedSize() { int size = memoizedSerializedSize; if (size != -1) return size; - + size = 0; - if (hasTruncateEpoch()) { + if (((bitField0_ & 0x00000001) == 0x00000001)) { size += com.google.protobuf.CodedOutputStream - .computeFixed64Size(1, getTruncateEpoch()); + .computeFixed64Size(1, truncateEpoch_); } - for (org.xtreemfs.pbrpc.generatedinterfaces.OSD.ObjectVersionMapping element : getObjectVersionsList()) { + for (int i = 0; i < objectVersions_.size(); i++) { size += com.google.protobuf.CodedOutputStream - .computeMessageSize(2, element); + .computeMessageSize(2, objectVersions_.get(i)); } - if (hasTruncateLog()) { + if (((bitField0_ & 0x00000004) == 0x00000004)) { size += com.google.protobuf.CodedOutputStream - .computeMessageSize(3, getTruncateLog()); + .computeMessageSize(3, truncateLog_); } - if (hasMaxObjVersion()) { + if (((bitField0_ & 0x00000002) == 0x00000002)) { size += com.google.protobuf.CodedOutputStream - .computeFixed64Size(4, getMaxObjVersion()); + .computeFixed64Size(4, maxObjVersion_); } size += getUnknownFields().getSerializedSize(); memoizedSerializedSize = size; return size; } - + + private static final long serialVersionUID = 0L; + @java.lang.Override + protected java.lang.Object writeReplace() + throws java.io.ObjectStreamException { + return super.writeReplace(); + } + public static org.xtreemfs.pbrpc.generatedinterfaces.OSD.AuthoritativeReplicaState parseFrom( com.google.protobuf.ByteString data) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data).buildParsed(); + return PARSER.parseFrom(data); } public static org.xtreemfs.pbrpc.generatedinterfaces.OSD.AuthoritativeReplicaState parseFrom( com.google.protobuf.ByteString data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(data, extensionRegistry); } public static org.xtreemfs.pbrpc.generatedinterfaces.OSD.AuthoritativeReplicaState parseFrom(byte[] data) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data).buildParsed(); + return PARSER.parseFrom(data); } public static org.xtreemfs.pbrpc.generatedinterfaces.OSD.AuthoritativeReplicaState parseFrom( byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(data, extensionRegistry); } public static org.xtreemfs.pbrpc.generatedinterfaces.OSD.AuthoritativeReplicaState parseFrom(java.io.InputStream input) throws java.io.IOException { - return newBuilder().mergeFrom(input).buildParsed(); + return PARSER.parseFrom(input); } public static org.xtreemfs.pbrpc.generatedinterfaces.OSD.AuthoritativeReplicaState parseFrom( java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - return newBuilder().mergeFrom(input, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(input, extensionRegistry); } public static org.xtreemfs.pbrpc.generatedinterfaces.OSD.AuthoritativeReplicaState parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException { - Builder builder = newBuilder(); - if (builder.mergeDelimitedFrom(input)) { - return builder.buildParsed(); - } else { - return null; - } + return PARSER.parseDelimitedFrom(input); } public static org.xtreemfs.pbrpc.generatedinterfaces.OSD.AuthoritativeReplicaState parseDelimitedFrom( java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - Builder builder = newBuilder(); - if (builder.mergeDelimitedFrom(input, extensionRegistry)) { - return builder.buildParsed(); - } else { - return null; - } + return PARSER.parseDelimitedFrom(input, extensionRegistry); } public static org.xtreemfs.pbrpc.generatedinterfaces.OSD.AuthoritativeReplicaState parseFrom( com.google.protobuf.CodedInputStream input) throws java.io.IOException { - return newBuilder().mergeFrom(input).buildParsed(); + return PARSER.parseFrom(input); } public static org.xtreemfs.pbrpc.generatedinterfaces.OSD.AuthoritativeReplicaState parseFrom( com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - return newBuilder().mergeFrom(input, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(input, extensionRegistry); } - + public static Builder newBuilder() { return Builder.create(); } public Builder newBuilderForType() { return newBuilder(); } public static Builder newBuilder(org.xtreemfs.pbrpc.generatedinterfaces.OSD.AuthoritativeReplicaState prototype) { return newBuilder().mergeFrom(prototype); } public Builder toBuilder() { return newBuilder(this); } - + + @java.lang.Override + protected Builder newBuilderForType( + com.google.protobuf.GeneratedMessage.BuilderParent parent) { + Builder builder = new Builder(parent); + return builder; + } + /** + * Protobuf type {@code xtreemfs.pbrpc.AuthoritativeReplicaState} + * + *
+     * Correct replica state sent by the Primary to all
+     * backups. After receiving this information, backups
+     * will bring themselves to the authoritative state by
+     * fetching missing data and deleting outdated objects.
+     * 
+ */ public static final class Builder extends - com.google.protobuf.GeneratedMessage.Builder { - private org.xtreemfs.pbrpc.generatedinterfaces.OSD.AuthoritativeReplicaState result; - + com.google.protobuf.GeneratedMessage.Builder + implements org.xtreemfs.pbrpc.generatedinterfaces.OSD.AuthoritativeReplicaStateOrBuilder { + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return org.xtreemfs.pbrpc.generatedinterfaces.OSD.internal_static_xtreemfs_pbrpc_AuthoritativeReplicaState_descriptor; + } + + protected com.google.protobuf.GeneratedMessage.FieldAccessorTable + internalGetFieldAccessorTable() { + return org.xtreemfs.pbrpc.generatedinterfaces.OSD.internal_static_xtreemfs_pbrpc_AuthoritativeReplicaState_fieldAccessorTable + .ensureFieldAccessorsInitialized( + org.xtreemfs.pbrpc.generatedinterfaces.OSD.AuthoritativeReplicaState.class, org.xtreemfs.pbrpc.generatedinterfaces.OSD.AuthoritativeReplicaState.Builder.class); + } + // Construct using org.xtreemfs.pbrpc.generatedinterfaces.OSD.AuthoritativeReplicaState.newBuilder() - private Builder() {} - - private static Builder create() { - Builder builder = new Builder(); - builder.result = new org.xtreemfs.pbrpc.generatedinterfaces.OSD.AuthoritativeReplicaState(); - return builder; + private Builder() { + maybeForceBuilderInitialization(); } - - protected org.xtreemfs.pbrpc.generatedinterfaces.OSD.AuthoritativeReplicaState internalGetResult() { - return result; + + private Builder( + com.google.protobuf.GeneratedMessage.BuilderParent parent) { + super(parent); + maybeForceBuilderInitialization(); + } + private void maybeForceBuilderInitialization() { + if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) { + getObjectVersionsFieldBuilder(); + getTruncateLogFieldBuilder(); + } + } + private static Builder create() { + return new Builder(); } - + public Builder clear() { - if (result == null) { - throw new IllegalStateException( - "Cannot call clear() after build()."); + super.clear(); + truncateEpoch_ = 0L; + bitField0_ = (bitField0_ & ~0x00000001); + maxObjVersion_ = 0L; + bitField0_ = (bitField0_ & ~0x00000002); + if (objectVersionsBuilder_ == null) { + objectVersions_ = java.util.Collections.emptyList(); + bitField0_ = (bitField0_ & ~0x00000004); + } else { + objectVersionsBuilder_.clear(); + } + if (truncateLogBuilder_ == null) { + truncateLog_ = org.xtreemfs.pbrpc.generatedinterfaces.OSD.TruncateLog.getDefaultInstance(); + } else { + truncateLogBuilder_.clear(); } - result = new org.xtreemfs.pbrpc.generatedinterfaces.OSD.AuthoritativeReplicaState(); + bitField0_ = (bitField0_ & ~0x00000008); return this; } - + public Builder clone() { - return create().mergeFrom(result); + return create().mergeFrom(buildPartial()); } - + public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() { - return org.xtreemfs.pbrpc.generatedinterfaces.OSD.AuthoritativeReplicaState.getDescriptor(); + return org.xtreemfs.pbrpc.generatedinterfaces.OSD.internal_static_xtreemfs_pbrpc_AuthoritativeReplicaState_descriptor; } - + public org.xtreemfs.pbrpc.generatedinterfaces.OSD.AuthoritativeReplicaState getDefaultInstanceForType() { return org.xtreemfs.pbrpc.generatedinterfaces.OSD.AuthoritativeReplicaState.getDefaultInstance(); } - - public boolean isInitialized() { - return result.isInitialized(); - } + public org.xtreemfs.pbrpc.generatedinterfaces.OSD.AuthoritativeReplicaState build() { - if (result != null && !isInitialized()) { + org.xtreemfs.pbrpc.generatedinterfaces.OSD.AuthoritativeReplicaState result = buildPartial(); + if (!result.isInitialized()) { throw newUninitializedMessageException(result); } - return buildPartial(); - } - - private org.xtreemfs.pbrpc.generatedinterfaces.OSD.AuthoritativeReplicaState buildParsed() - throws com.google.protobuf.InvalidProtocolBufferException { - if (!isInitialized()) { - throw newUninitializedMessageException( - result).asInvalidProtocolBufferException(); - } - return buildPartial(); + return result; } - + public org.xtreemfs.pbrpc.generatedinterfaces.OSD.AuthoritativeReplicaState buildPartial() { - if (result == null) { - throw new IllegalStateException( - "build() has already been called on this Builder."); + org.xtreemfs.pbrpc.generatedinterfaces.OSD.AuthoritativeReplicaState result = new org.xtreemfs.pbrpc.generatedinterfaces.OSD.AuthoritativeReplicaState(this); + int from_bitField0_ = bitField0_; + int to_bitField0_ = 0; + if (((from_bitField0_ & 0x00000001) == 0x00000001)) { + to_bitField0_ |= 0x00000001; + } + result.truncateEpoch_ = truncateEpoch_; + if (((from_bitField0_ & 0x00000002) == 0x00000002)) { + to_bitField0_ |= 0x00000002; + } + result.maxObjVersion_ = maxObjVersion_; + if (objectVersionsBuilder_ == null) { + if (((bitField0_ & 0x00000004) == 0x00000004)) { + objectVersions_ = java.util.Collections.unmodifiableList(objectVersions_); + bitField0_ = (bitField0_ & ~0x00000004); + } + result.objectVersions_ = objectVersions_; + } else { + result.objectVersions_ = objectVersionsBuilder_.build(); + } + if (((from_bitField0_ & 0x00000008) == 0x00000008)) { + to_bitField0_ |= 0x00000004; } - if (result.objectVersions_ != java.util.Collections.EMPTY_LIST) { - result.objectVersions_ = - java.util.Collections.unmodifiableList(result.objectVersions_); + if (truncateLogBuilder_ == null) { + result.truncateLog_ = truncateLog_; + } else { + result.truncateLog_ = truncateLogBuilder_.build(); } - org.xtreemfs.pbrpc.generatedinterfaces.OSD.AuthoritativeReplicaState returnMe = result; - result = null; - return returnMe; + result.bitField0_ = to_bitField0_; + onBuilt(); + return result; } - + public Builder mergeFrom(com.google.protobuf.Message other) { if (other instanceof org.xtreemfs.pbrpc.generatedinterfaces.OSD.AuthoritativeReplicaState) { return mergeFrom((org.xtreemfs.pbrpc.generatedinterfaces.OSD.AuthoritativeReplicaState)other); @@ -3774,7 +7485,7 @@ public final class OSD { return this; } } - + public Builder mergeFrom(org.xtreemfs.pbrpc.generatedinterfaces.OSD.AuthoritativeReplicaState other) { if (other == org.xtreemfs.pbrpc.generatedinterfaces.OSD.AuthoritativeReplicaState.getDefaultInstance()) return this; if (other.hasTruncateEpoch()) { @@ -3783,439 +7494,1016 @@ public final class OSD { if (other.hasMaxObjVersion()) { setMaxObjVersion(other.getMaxObjVersion()); } - if (!other.objectVersions_.isEmpty()) { - if (result.objectVersions_.isEmpty()) { - result.objectVersions_ = new java.util.ArrayList(); - } - result.objectVersions_.addAll(other.objectVersions_); - } - if (other.hasTruncateLog()) { - mergeTruncateLog(other.getTruncateLog()); - } - this.mergeUnknownFields(other.getUnknownFields()); - return this; - } - - public Builder mergeFrom( - com.google.protobuf.CodedInputStream input, - com.google.protobuf.ExtensionRegistryLite extensionRegistry) - throws java.io.IOException { - com.google.protobuf.UnknownFieldSet.Builder unknownFields = - com.google.protobuf.UnknownFieldSet.newBuilder( - this.getUnknownFields()); - while (true) { - int tag = input.readTag(); - switch (tag) { - case 0: - this.setUnknownFields(unknownFields.build()); - return this; - default: { - if (!parseUnknownField(input, unknownFields, - extensionRegistry, tag)) { - this.setUnknownFields(unknownFields.build()); - return this; - } - break; - } - case 9: { - setTruncateEpoch(input.readFixed64()); - break; - } - case 18: { - org.xtreemfs.pbrpc.generatedinterfaces.OSD.ObjectVersionMapping.Builder subBuilder = org.xtreemfs.pbrpc.generatedinterfaces.OSD.ObjectVersionMapping.newBuilder(); - input.readMessage(subBuilder, extensionRegistry); - addObjectVersions(subBuilder.buildPartial()); - break; - } - case 26: { - org.xtreemfs.pbrpc.generatedinterfaces.OSD.TruncateLog.Builder subBuilder = org.xtreemfs.pbrpc.generatedinterfaces.OSD.TruncateLog.newBuilder(); - if (hasTruncateLog()) { - subBuilder.mergeFrom(getTruncateLog()); - } - input.readMessage(subBuilder, extensionRegistry); - setTruncateLog(subBuilder.buildPartial()); - break; + if (objectVersionsBuilder_ == null) { + if (!other.objectVersions_.isEmpty()) { + if (objectVersions_.isEmpty()) { + objectVersions_ = other.objectVersions_; + bitField0_ = (bitField0_ & ~0x00000004); + } else { + ensureObjectVersionsIsMutable(); + objectVersions_.addAll(other.objectVersions_); } - case 33: { - setMaxObjVersion(input.readFixed64()); - break; + onChanged(); + } + } else { + if (!other.objectVersions_.isEmpty()) { + if (objectVersionsBuilder_.isEmpty()) { + objectVersionsBuilder_.dispose(); + objectVersionsBuilder_ = null; + objectVersions_ = other.objectVersions_; + bitField0_ = (bitField0_ & ~0x00000004); + objectVersionsBuilder_ = + com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ? + getObjectVersionsFieldBuilder() : null; + } else { + objectVersionsBuilder_.addAllMessages(other.objectVersions_); } } } + if (other.hasTruncateLog()) { + mergeTruncateLog(other.getTruncateLog()); + } + this.mergeUnknownFields(other.getUnknownFields()); + return this; + } + + public final boolean isInitialized() { + if (!hasTruncateEpoch()) { + + return false; + } + if (!hasMaxObjVersion()) { + + return false; + } + if (!hasTruncateLog()) { + + return false; + } + for (int i = 0; i < getObjectVersionsCount(); i++) { + if (!getObjectVersions(i).isInitialized()) { + + return false; + } + } + if (!getTruncateLog().isInitialized()) { + + return false; + } + return true; + } + + public Builder mergeFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + org.xtreemfs.pbrpc.generatedinterfaces.OSD.AuthoritativeReplicaState parsedMessage = null; + try { + parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + parsedMessage = (org.xtreemfs.pbrpc.generatedinterfaces.OSD.AuthoritativeReplicaState) e.getUnfinishedMessage(); + throw e; + } finally { + if (parsedMessage != null) { + mergeFrom(parsedMessage); + } + } + return this; } - - + private int bitField0_; + // required fixed64 truncate_epoch = 1; + private long truncateEpoch_ ; + /** + * required fixed64 truncate_epoch = 1; + */ public boolean hasTruncateEpoch() { - return result.hasTruncateEpoch(); + return ((bitField0_ & 0x00000001) == 0x00000001); } + /** + * required fixed64 truncate_epoch = 1; + */ public long getTruncateEpoch() { - return result.getTruncateEpoch(); + return truncateEpoch_; } + /** + * required fixed64 truncate_epoch = 1; + */ public Builder setTruncateEpoch(long value) { - result.hasTruncateEpoch = true; - result.truncateEpoch_ = value; + bitField0_ |= 0x00000001; + truncateEpoch_ = value; + onChanged(); return this; } + /** + * required fixed64 truncate_epoch = 1; + */ public Builder clearTruncateEpoch() { - result.hasTruncateEpoch = false; - result.truncateEpoch_ = 0L; + bitField0_ = (bitField0_ & ~0x00000001); + truncateEpoch_ = 0L; + onChanged(); return this; } - + // required fixed64 max_obj_version = 4; + private long maxObjVersion_ ; + /** + * required fixed64 max_obj_version = 4; + */ public boolean hasMaxObjVersion() { - return result.hasMaxObjVersion(); + return ((bitField0_ & 0x00000002) == 0x00000002); } + /** + * required fixed64 max_obj_version = 4; + */ public long getMaxObjVersion() { - return result.getMaxObjVersion(); + return maxObjVersion_; } + /** + * required fixed64 max_obj_version = 4; + */ public Builder setMaxObjVersion(long value) { - result.hasMaxObjVersion = true; - result.maxObjVersion_ = value; + bitField0_ |= 0x00000002; + maxObjVersion_ = value; + onChanged(); return this; } + /** + * required fixed64 max_obj_version = 4; + */ public Builder clearMaxObjVersion() { - result.hasMaxObjVersion = false; - result.maxObjVersion_ = 0L; + bitField0_ = (bitField0_ & ~0x00000002); + maxObjVersion_ = 0L; + onChanged(); return this; } - + // repeated .xtreemfs.pbrpc.ObjectVersionMapping objectVersions = 2; + private java.util.List objectVersions_ = + java.util.Collections.emptyList(); + private void ensureObjectVersionsIsMutable() { + if (!((bitField0_ & 0x00000004) == 0x00000004)) { + objectVersions_ = new java.util.ArrayList(objectVersions_); + bitField0_ |= 0x00000004; + } + } + + private com.google.protobuf.RepeatedFieldBuilder< + org.xtreemfs.pbrpc.generatedinterfaces.OSD.ObjectVersionMapping, org.xtreemfs.pbrpc.generatedinterfaces.OSD.ObjectVersionMapping.Builder, org.xtreemfs.pbrpc.generatedinterfaces.OSD.ObjectVersionMappingOrBuilder> objectVersionsBuilder_; + + /** + * repeated .xtreemfs.pbrpc.ObjectVersionMapping objectVersions = 2; + */ public java.util.List getObjectVersionsList() { - return java.util.Collections.unmodifiableList(result.objectVersions_); + if (objectVersionsBuilder_ == null) { + return java.util.Collections.unmodifiableList(objectVersions_); + } else { + return objectVersionsBuilder_.getMessageList(); + } } + /** + * repeated .xtreemfs.pbrpc.ObjectVersionMapping objectVersions = 2; + */ public int getObjectVersionsCount() { - return result.getObjectVersionsCount(); + if (objectVersionsBuilder_ == null) { + return objectVersions_.size(); + } else { + return objectVersionsBuilder_.getCount(); + } } + /** + * repeated .xtreemfs.pbrpc.ObjectVersionMapping objectVersions = 2; + */ public org.xtreemfs.pbrpc.generatedinterfaces.OSD.ObjectVersionMapping getObjectVersions(int index) { - return result.getObjectVersions(index); + if (objectVersionsBuilder_ == null) { + return objectVersions_.get(index); + } else { + return objectVersionsBuilder_.getMessage(index); + } } - public Builder setObjectVersions(int index, org.xtreemfs.pbrpc.generatedinterfaces.OSD.ObjectVersionMapping value) { - if (value == null) { - throw new NullPointerException(); + /** + * repeated .xtreemfs.pbrpc.ObjectVersionMapping objectVersions = 2; + */ + public Builder setObjectVersions( + int index, org.xtreemfs.pbrpc.generatedinterfaces.OSD.ObjectVersionMapping value) { + if (objectVersionsBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + ensureObjectVersionsIsMutable(); + objectVersions_.set(index, value); + onChanged(); + } else { + objectVersionsBuilder_.setMessage(index, value); } - result.objectVersions_.set(index, value); return this; } - public Builder setObjectVersions(int index, org.xtreemfs.pbrpc.generatedinterfaces.OSD.ObjectVersionMapping.Builder builderForValue) { - result.objectVersions_.set(index, builderForValue.build()); + /** + * repeated .xtreemfs.pbrpc.ObjectVersionMapping objectVersions = 2; + */ + public Builder setObjectVersions( + int index, org.xtreemfs.pbrpc.generatedinterfaces.OSD.ObjectVersionMapping.Builder builderForValue) { + if (objectVersionsBuilder_ == null) { + ensureObjectVersionsIsMutable(); + objectVersions_.set(index, builderForValue.build()); + onChanged(); + } else { + objectVersionsBuilder_.setMessage(index, builderForValue.build()); + } return this; } + /** + * repeated .xtreemfs.pbrpc.ObjectVersionMapping objectVersions = 2; + */ public Builder addObjectVersions(org.xtreemfs.pbrpc.generatedinterfaces.OSD.ObjectVersionMapping value) { - if (value == null) { - throw new NullPointerException(); + if (objectVersionsBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + ensureObjectVersionsIsMutable(); + objectVersions_.add(value); + onChanged(); + } else { + objectVersionsBuilder_.addMessage(value); + } + return this; + } + /** + * repeated .xtreemfs.pbrpc.ObjectVersionMapping objectVersions = 2; + */ + public Builder addObjectVersions( + int index, org.xtreemfs.pbrpc.generatedinterfaces.OSD.ObjectVersionMapping value) { + if (objectVersionsBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + ensureObjectVersionsIsMutable(); + objectVersions_.add(index, value); + onChanged(); + } else { + objectVersionsBuilder_.addMessage(index, value); } - if (result.objectVersions_.isEmpty()) { - result.objectVersions_ = new java.util.ArrayList(); + return this; + } + /** + * repeated .xtreemfs.pbrpc.ObjectVersionMapping objectVersions = 2; + */ + public Builder addObjectVersions( + org.xtreemfs.pbrpc.generatedinterfaces.OSD.ObjectVersionMapping.Builder builderForValue) { + if (objectVersionsBuilder_ == null) { + ensureObjectVersionsIsMutable(); + objectVersions_.add(builderForValue.build()); + onChanged(); + } else { + objectVersionsBuilder_.addMessage(builderForValue.build()); } - result.objectVersions_.add(value); return this; } - public Builder addObjectVersions(org.xtreemfs.pbrpc.generatedinterfaces.OSD.ObjectVersionMapping.Builder builderForValue) { - if (result.objectVersions_.isEmpty()) { - result.objectVersions_ = new java.util.ArrayList(); + /** + * repeated .xtreemfs.pbrpc.ObjectVersionMapping objectVersions = 2; + */ + public Builder addObjectVersions( + int index, org.xtreemfs.pbrpc.generatedinterfaces.OSD.ObjectVersionMapping.Builder builderForValue) { + if (objectVersionsBuilder_ == null) { + ensureObjectVersionsIsMutable(); + objectVersions_.add(index, builderForValue.build()); + onChanged(); + } else { + objectVersionsBuilder_.addMessage(index, builderForValue.build()); } - result.objectVersions_.add(builderForValue.build()); return this; } + /** + * repeated .xtreemfs.pbrpc.ObjectVersionMapping objectVersions = 2; + */ public Builder addAllObjectVersions( java.lang.Iterable values) { - if (result.objectVersions_.isEmpty()) { - result.objectVersions_ = new java.util.ArrayList(); + if (objectVersionsBuilder_ == null) { + ensureObjectVersionsIsMutable(); + super.addAll(values, objectVersions_); + onChanged(); + } else { + objectVersionsBuilder_.addAllMessages(values); } - super.addAll(values, result.objectVersions_); return this; } + /** + * repeated .xtreemfs.pbrpc.ObjectVersionMapping objectVersions = 2; + */ public Builder clearObjectVersions() { - result.objectVersions_ = java.util.Collections.emptyList(); + if (objectVersionsBuilder_ == null) { + objectVersions_ = java.util.Collections.emptyList(); + bitField0_ = (bitField0_ & ~0x00000004); + onChanged(); + } else { + objectVersionsBuilder_.clear(); + } return this; } - + /** + * repeated .xtreemfs.pbrpc.ObjectVersionMapping objectVersions = 2; + */ + public Builder removeObjectVersions(int index) { + if (objectVersionsBuilder_ == null) { + ensureObjectVersionsIsMutable(); + objectVersions_.remove(index); + onChanged(); + } else { + objectVersionsBuilder_.remove(index); + } + return this; + } + /** + * repeated .xtreemfs.pbrpc.ObjectVersionMapping objectVersions = 2; + */ + public org.xtreemfs.pbrpc.generatedinterfaces.OSD.ObjectVersionMapping.Builder getObjectVersionsBuilder( + int index) { + return getObjectVersionsFieldBuilder().getBuilder(index); + } + /** + * repeated .xtreemfs.pbrpc.ObjectVersionMapping objectVersions = 2; + */ + public org.xtreemfs.pbrpc.generatedinterfaces.OSD.ObjectVersionMappingOrBuilder getObjectVersionsOrBuilder( + int index) { + if (objectVersionsBuilder_ == null) { + return objectVersions_.get(index); } else { + return objectVersionsBuilder_.getMessageOrBuilder(index); + } + } + /** + * repeated .xtreemfs.pbrpc.ObjectVersionMapping objectVersions = 2; + */ + public java.util.List + getObjectVersionsOrBuilderList() { + if (objectVersionsBuilder_ != null) { + return objectVersionsBuilder_.getMessageOrBuilderList(); + } else { + return java.util.Collections.unmodifiableList(objectVersions_); + } + } + /** + * repeated .xtreemfs.pbrpc.ObjectVersionMapping objectVersions = 2; + */ + public org.xtreemfs.pbrpc.generatedinterfaces.OSD.ObjectVersionMapping.Builder addObjectVersionsBuilder() { + return getObjectVersionsFieldBuilder().addBuilder( + org.xtreemfs.pbrpc.generatedinterfaces.OSD.ObjectVersionMapping.getDefaultInstance()); + } + /** + * repeated .xtreemfs.pbrpc.ObjectVersionMapping objectVersions = 2; + */ + public org.xtreemfs.pbrpc.generatedinterfaces.OSD.ObjectVersionMapping.Builder addObjectVersionsBuilder( + int index) { + return getObjectVersionsFieldBuilder().addBuilder( + index, org.xtreemfs.pbrpc.generatedinterfaces.OSD.ObjectVersionMapping.getDefaultInstance()); + } + /** + * repeated .xtreemfs.pbrpc.ObjectVersionMapping objectVersions = 2; + */ + public java.util.List + getObjectVersionsBuilderList() { + return getObjectVersionsFieldBuilder().getBuilderList(); + } + private com.google.protobuf.RepeatedFieldBuilder< + org.xtreemfs.pbrpc.generatedinterfaces.OSD.ObjectVersionMapping, org.xtreemfs.pbrpc.generatedinterfaces.OSD.ObjectVersionMapping.Builder, org.xtreemfs.pbrpc.generatedinterfaces.OSD.ObjectVersionMappingOrBuilder> + getObjectVersionsFieldBuilder() { + if (objectVersionsBuilder_ == null) { + objectVersionsBuilder_ = new com.google.protobuf.RepeatedFieldBuilder< + org.xtreemfs.pbrpc.generatedinterfaces.OSD.ObjectVersionMapping, org.xtreemfs.pbrpc.generatedinterfaces.OSD.ObjectVersionMapping.Builder, org.xtreemfs.pbrpc.generatedinterfaces.OSD.ObjectVersionMappingOrBuilder>( + objectVersions_, + ((bitField0_ & 0x00000004) == 0x00000004), + getParentForChildren(), + isClean()); + objectVersions_ = null; + } + return objectVersionsBuilder_; + } + // required .xtreemfs.pbrpc.TruncateLog truncate_log = 3; + private org.xtreemfs.pbrpc.generatedinterfaces.OSD.TruncateLog truncateLog_ = org.xtreemfs.pbrpc.generatedinterfaces.OSD.TruncateLog.getDefaultInstance(); + private com.google.protobuf.SingleFieldBuilder< + org.xtreemfs.pbrpc.generatedinterfaces.OSD.TruncateLog, org.xtreemfs.pbrpc.generatedinterfaces.OSD.TruncateLog.Builder, org.xtreemfs.pbrpc.generatedinterfaces.OSD.TruncateLogOrBuilder> truncateLogBuilder_; + /** + * required .xtreemfs.pbrpc.TruncateLog truncate_log = 3; + */ public boolean hasTruncateLog() { - return result.hasTruncateLog(); + return ((bitField0_ & 0x00000008) == 0x00000008); } + /** + * required .xtreemfs.pbrpc.TruncateLog truncate_log = 3; + */ public org.xtreemfs.pbrpc.generatedinterfaces.OSD.TruncateLog getTruncateLog() { - return result.getTruncateLog(); + if (truncateLogBuilder_ == null) { + return truncateLog_; + } else { + return truncateLogBuilder_.getMessage(); + } } + /** + * required .xtreemfs.pbrpc.TruncateLog truncate_log = 3; + */ public Builder setTruncateLog(org.xtreemfs.pbrpc.generatedinterfaces.OSD.TruncateLog value) { - if (value == null) { - throw new NullPointerException(); + if (truncateLogBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + truncateLog_ = value; + onChanged(); + } else { + truncateLogBuilder_.setMessage(value); } - result.hasTruncateLog = true; - result.truncateLog_ = value; + bitField0_ |= 0x00000008; return this; } - public Builder setTruncateLog(org.xtreemfs.pbrpc.generatedinterfaces.OSD.TruncateLog.Builder builderForValue) { - result.hasTruncateLog = true; - result.truncateLog_ = builderForValue.build(); + /** + * required .xtreemfs.pbrpc.TruncateLog truncate_log = 3; + */ + public Builder setTruncateLog( + org.xtreemfs.pbrpc.generatedinterfaces.OSD.TruncateLog.Builder builderForValue) { + if (truncateLogBuilder_ == null) { + truncateLog_ = builderForValue.build(); + onChanged(); + } else { + truncateLogBuilder_.setMessage(builderForValue.build()); + } + bitField0_ |= 0x00000008; return this; } + /** + * required .xtreemfs.pbrpc.TruncateLog truncate_log = 3; + */ public Builder mergeTruncateLog(org.xtreemfs.pbrpc.generatedinterfaces.OSD.TruncateLog value) { - if (result.hasTruncateLog() && - result.truncateLog_ != org.xtreemfs.pbrpc.generatedinterfaces.OSD.TruncateLog.getDefaultInstance()) { - result.truncateLog_ = - org.xtreemfs.pbrpc.generatedinterfaces.OSD.TruncateLog.newBuilder(result.truncateLog_).mergeFrom(value).buildPartial(); + if (truncateLogBuilder_ == null) { + if (((bitField0_ & 0x00000008) == 0x00000008) && + truncateLog_ != org.xtreemfs.pbrpc.generatedinterfaces.OSD.TruncateLog.getDefaultInstance()) { + truncateLog_ = + org.xtreemfs.pbrpc.generatedinterfaces.OSD.TruncateLog.newBuilder(truncateLog_).mergeFrom(value).buildPartial(); + } else { + truncateLog_ = value; + } + onChanged(); } else { - result.truncateLog_ = value; + truncateLogBuilder_.mergeFrom(value); } - result.hasTruncateLog = true; + bitField0_ |= 0x00000008; return this; } + /** + * required .xtreemfs.pbrpc.TruncateLog truncate_log = 3; + */ public Builder clearTruncateLog() { - result.hasTruncateLog = false; - result.truncateLog_ = org.xtreemfs.pbrpc.generatedinterfaces.OSD.TruncateLog.getDefaultInstance(); + if (truncateLogBuilder_ == null) { + truncateLog_ = org.xtreemfs.pbrpc.generatedinterfaces.OSD.TruncateLog.getDefaultInstance(); + onChanged(); + } else { + truncateLogBuilder_.clear(); + } + bitField0_ = (bitField0_ & ~0x00000008); return this; } - + /** + * required .xtreemfs.pbrpc.TruncateLog truncate_log = 3; + */ + public org.xtreemfs.pbrpc.generatedinterfaces.OSD.TruncateLog.Builder getTruncateLogBuilder() { + bitField0_ |= 0x00000008; + onChanged(); + return getTruncateLogFieldBuilder().getBuilder(); + } + /** + * required .xtreemfs.pbrpc.TruncateLog truncate_log = 3; + */ + public org.xtreemfs.pbrpc.generatedinterfaces.OSD.TruncateLogOrBuilder getTruncateLogOrBuilder() { + if (truncateLogBuilder_ != null) { + return truncateLogBuilder_.getMessageOrBuilder(); + } else { + return truncateLog_; + } + } + /** + * required .xtreemfs.pbrpc.TruncateLog truncate_log = 3; + */ + private com.google.protobuf.SingleFieldBuilder< + org.xtreemfs.pbrpc.generatedinterfaces.OSD.TruncateLog, org.xtreemfs.pbrpc.generatedinterfaces.OSD.TruncateLog.Builder, org.xtreemfs.pbrpc.generatedinterfaces.OSD.TruncateLogOrBuilder> + getTruncateLogFieldBuilder() { + if (truncateLogBuilder_ == null) { + truncateLogBuilder_ = new com.google.protobuf.SingleFieldBuilder< + org.xtreemfs.pbrpc.generatedinterfaces.OSD.TruncateLog, org.xtreemfs.pbrpc.generatedinterfaces.OSD.TruncateLog.Builder, org.xtreemfs.pbrpc.generatedinterfaces.OSD.TruncateLogOrBuilder>( + truncateLog_, + getParentForChildren(), + isClean()); + truncateLog_ = null; + } + return truncateLogBuilder_; + } + // @@protoc_insertion_point(builder_scope:xtreemfs.pbrpc.AuthoritativeReplicaState) } - + static { defaultInstance = new AuthoritativeReplicaState(true); - org.xtreemfs.pbrpc.generatedinterfaces.OSD.internalForceInit(); defaultInstance.initFields(); } - + // @@protoc_insertion_point(class_scope:xtreemfs.pbrpc.AuthoritativeReplicaState) } - + + public interface InternalReadLocalResponseOrBuilder + extends com.google.protobuf.MessageOrBuilder { + + // required .xtreemfs.pbrpc.ObjectData data = 1; + /** + * required .xtreemfs.pbrpc.ObjectData data = 1; + */ + boolean hasData(); + /** + * required .xtreemfs.pbrpc.ObjectData data = 1; + */ + org.xtreemfs.pbrpc.generatedinterfaces.OSD.ObjectData getData(); + /** + * required .xtreemfs.pbrpc.ObjectData data = 1; + */ + org.xtreemfs.pbrpc.generatedinterfaces.OSD.ObjectDataOrBuilder getDataOrBuilder(); + + // repeated .xtreemfs.pbrpc.ObjectList object_set = 2; + /** + * repeated .xtreemfs.pbrpc.ObjectList object_set = 2; + * + *
+     * List of objects the OSD has.
+     * 
+ */ + java.util.List + getObjectSetList(); + /** + * repeated .xtreemfs.pbrpc.ObjectList object_set = 2; + * + *
+     * List of objects the OSD has.
+     * 
+ */ + org.xtreemfs.pbrpc.generatedinterfaces.OSD.ObjectList getObjectSet(int index); + /** + * repeated .xtreemfs.pbrpc.ObjectList object_set = 2; + * + *
+     * List of objects the OSD has.
+     * 
+ */ + int getObjectSetCount(); + /** + * repeated .xtreemfs.pbrpc.ObjectList object_set = 2; + * + *
+     * List of objects the OSD has.
+     * 
+ */ + java.util.List + getObjectSetOrBuilderList(); + /** + * repeated .xtreemfs.pbrpc.ObjectList object_set = 2; + * + *
+     * List of objects the OSD has.
+     * 
+ */ + org.xtreemfs.pbrpc.generatedinterfaces.OSD.ObjectListOrBuilder getObjectSetOrBuilder( + int index); + } + /** + * Protobuf type {@code xtreemfs.pbrpc.InternalReadLocalResponse} + * + *
+   * Response sent by an OSD when reading objects for
+   * the ro/rw replication.
+   * 
+ */ public static final class InternalReadLocalResponse extends - com.google.protobuf.GeneratedMessage { + com.google.protobuf.GeneratedMessage + implements InternalReadLocalResponseOrBuilder { // Use InternalReadLocalResponse.newBuilder() to construct. - private InternalReadLocalResponse() { - initFields(); + private InternalReadLocalResponse(com.google.protobuf.GeneratedMessage.Builder builder) { + super(builder); + this.unknownFields = builder.getUnknownFields(); } - private InternalReadLocalResponse(boolean noInit) {} - + private InternalReadLocalResponse(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); } + private static final InternalReadLocalResponse defaultInstance; public static InternalReadLocalResponse getDefaultInstance() { return defaultInstance; } - + public InternalReadLocalResponse getDefaultInstanceForType() { return defaultInstance; } - + + private final com.google.protobuf.UnknownFieldSet unknownFields; + @java.lang.Override + public final com.google.protobuf.UnknownFieldSet + getUnknownFields() { + return this.unknownFields; + } + private InternalReadLocalResponse( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + initFields(); + int mutable_bitField0_ = 0; + com.google.protobuf.UnknownFieldSet.Builder unknownFields = + com.google.protobuf.UnknownFieldSet.newBuilder(); + try { + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch (tag) { + case 0: + done = true; + break; + default: { + if (!parseUnknownField(input, unknownFields, + extensionRegistry, tag)) { + done = true; + } + break; + } + case 10: { + org.xtreemfs.pbrpc.generatedinterfaces.OSD.ObjectData.Builder subBuilder = null; + if (((bitField0_ & 0x00000001) == 0x00000001)) { + subBuilder = data_.toBuilder(); + } + data_ = input.readMessage(org.xtreemfs.pbrpc.generatedinterfaces.OSD.ObjectData.PARSER, extensionRegistry); + if (subBuilder != null) { + subBuilder.mergeFrom(data_); + data_ = subBuilder.buildPartial(); + } + bitField0_ |= 0x00000001; + break; + } + case 18: { + if (!((mutable_bitField0_ & 0x00000002) == 0x00000002)) { + objectSet_ = new java.util.ArrayList(); + mutable_bitField0_ |= 0x00000002; + } + objectSet_.add(input.readMessage(org.xtreemfs.pbrpc.generatedinterfaces.OSD.ObjectList.PARSER, extensionRegistry)); + break; + } + } + } + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(this); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException( + e.getMessage()).setUnfinishedMessage(this); + } finally { + if (((mutable_bitField0_ & 0x00000002) == 0x00000002)) { + objectSet_ = java.util.Collections.unmodifiableList(objectSet_); + } + this.unknownFields = unknownFields.build(); + makeExtensionsImmutable(); + } + } public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { return org.xtreemfs.pbrpc.generatedinterfaces.OSD.internal_static_xtreemfs_pbrpc_InternalReadLocalResponse_descriptor; } - + protected com.google.protobuf.GeneratedMessage.FieldAccessorTable internalGetFieldAccessorTable() { - return org.xtreemfs.pbrpc.generatedinterfaces.OSD.internal_static_xtreemfs_pbrpc_InternalReadLocalResponse_fieldAccessorTable; + return org.xtreemfs.pbrpc.generatedinterfaces.OSD.internal_static_xtreemfs_pbrpc_InternalReadLocalResponse_fieldAccessorTable + .ensureFieldAccessorsInitialized( + org.xtreemfs.pbrpc.generatedinterfaces.OSD.InternalReadLocalResponse.class, org.xtreemfs.pbrpc.generatedinterfaces.OSD.InternalReadLocalResponse.Builder.class); + } + + public static com.google.protobuf.Parser PARSER = + new com.google.protobuf.AbstractParser() { + public InternalReadLocalResponse parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return new InternalReadLocalResponse(input, extensionRegistry); + } + }; + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; } - + + private int bitField0_; // required .xtreemfs.pbrpc.ObjectData data = 1; public static final int DATA_FIELD_NUMBER = 1; - private boolean hasData; private org.xtreemfs.pbrpc.generatedinterfaces.OSD.ObjectData data_; - public boolean hasData() { return hasData; } - public org.xtreemfs.pbrpc.generatedinterfaces.OSD.ObjectData getData() { return data_; } - + /** + * required .xtreemfs.pbrpc.ObjectData data = 1; + */ + public boolean hasData() { + return ((bitField0_ & 0x00000001) == 0x00000001); + } + /** + * required .xtreemfs.pbrpc.ObjectData data = 1; + */ + public org.xtreemfs.pbrpc.generatedinterfaces.OSD.ObjectData getData() { + return data_; + } + /** + * required .xtreemfs.pbrpc.ObjectData data = 1; + */ + public org.xtreemfs.pbrpc.generatedinterfaces.OSD.ObjectDataOrBuilder getDataOrBuilder() { + return data_; + } + // repeated .xtreemfs.pbrpc.ObjectList object_set = 2; public static final int OBJECT_SET_FIELD_NUMBER = 2; - private java.util.List objectSet_ = - java.util.Collections.emptyList(); + private java.util.List objectSet_; + /** + * repeated .xtreemfs.pbrpc.ObjectList object_set = 2; + * + *
+     * List of objects the OSD has.
+     * 
+ */ public java.util.List getObjectSetList() { return objectSet_; } - public int getObjectSetCount() { return objectSet_.size(); } + /** + * repeated .xtreemfs.pbrpc.ObjectList object_set = 2; + * + *
+     * List of objects the OSD has.
+     * 
+ */ + public java.util.List + getObjectSetOrBuilderList() { + return objectSet_; + } + /** + * repeated .xtreemfs.pbrpc.ObjectList object_set = 2; + * + *
+     * List of objects the OSD has.
+     * 
+ */ + public int getObjectSetCount() { + return objectSet_.size(); + } + /** + * repeated .xtreemfs.pbrpc.ObjectList object_set = 2; + * + *
+     * List of objects the OSD has.
+     * 
+ */ public org.xtreemfs.pbrpc.generatedinterfaces.OSD.ObjectList getObjectSet(int index) { return objectSet_.get(index); } - + /** + * repeated .xtreemfs.pbrpc.ObjectList object_set = 2; + * + *
+     * List of objects the OSD has.
+     * 
+ */ + public org.xtreemfs.pbrpc.generatedinterfaces.OSD.ObjectListOrBuilder getObjectSetOrBuilder( + int index) { + return objectSet_.get(index); + } + private void initFields() { data_ = org.xtreemfs.pbrpc.generatedinterfaces.OSD.ObjectData.getDefaultInstance(); + objectSet_ = java.util.Collections.emptyList(); } + private byte memoizedIsInitialized = -1; public final boolean isInitialized() { - if (!hasData) return false; - if (!getData().isInitialized()) return false; - for (org.xtreemfs.pbrpc.generatedinterfaces.OSD.ObjectList element : getObjectSetList()) { - if (!element.isInitialized()) return false; + byte isInitialized = memoizedIsInitialized; + if (isInitialized != -1) return isInitialized == 1; + + if (!hasData()) { + memoizedIsInitialized = 0; + return false; + } + if (!getData().isInitialized()) { + memoizedIsInitialized = 0; + return false; + } + for (int i = 0; i < getObjectSetCount(); i++) { + if (!getObjectSet(i).isInitialized()) { + memoizedIsInitialized = 0; + return false; + } } + memoizedIsInitialized = 1; return true; } - + public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException { getSerializedSize(); - if (hasData()) { - output.writeMessage(1, getData()); + if (((bitField0_ & 0x00000001) == 0x00000001)) { + output.writeMessage(1, data_); } - for (org.xtreemfs.pbrpc.generatedinterfaces.OSD.ObjectList element : getObjectSetList()) { - output.writeMessage(2, element); + for (int i = 0; i < objectSet_.size(); i++) { + output.writeMessage(2, objectSet_.get(i)); } getUnknownFields().writeTo(output); } - + private int memoizedSerializedSize = -1; public int getSerializedSize() { int size = memoizedSerializedSize; if (size != -1) return size; - + size = 0; - if (hasData()) { + if (((bitField0_ & 0x00000001) == 0x00000001)) { size += com.google.protobuf.CodedOutputStream - .computeMessageSize(1, getData()); + .computeMessageSize(1, data_); } - for (org.xtreemfs.pbrpc.generatedinterfaces.OSD.ObjectList element : getObjectSetList()) { + for (int i = 0; i < objectSet_.size(); i++) { size += com.google.protobuf.CodedOutputStream - .computeMessageSize(2, element); + .computeMessageSize(2, objectSet_.get(i)); } size += getUnknownFields().getSerializedSize(); memoizedSerializedSize = size; return size; } - + + private static final long serialVersionUID = 0L; + @java.lang.Override + protected java.lang.Object writeReplace() + throws java.io.ObjectStreamException { + return super.writeReplace(); + } + public static org.xtreemfs.pbrpc.generatedinterfaces.OSD.InternalReadLocalResponse parseFrom( com.google.protobuf.ByteString data) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data).buildParsed(); + return PARSER.parseFrom(data); } public static org.xtreemfs.pbrpc.generatedinterfaces.OSD.InternalReadLocalResponse parseFrom( com.google.protobuf.ByteString data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(data, extensionRegistry); } public static org.xtreemfs.pbrpc.generatedinterfaces.OSD.InternalReadLocalResponse parseFrom(byte[] data) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data).buildParsed(); + return PARSER.parseFrom(data); } public static org.xtreemfs.pbrpc.generatedinterfaces.OSD.InternalReadLocalResponse parseFrom( byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(data, extensionRegistry); } public static org.xtreemfs.pbrpc.generatedinterfaces.OSD.InternalReadLocalResponse parseFrom(java.io.InputStream input) throws java.io.IOException { - return newBuilder().mergeFrom(input).buildParsed(); + return PARSER.parseFrom(input); } public static org.xtreemfs.pbrpc.generatedinterfaces.OSD.InternalReadLocalResponse parseFrom( java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - return newBuilder().mergeFrom(input, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(input, extensionRegistry); } public static org.xtreemfs.pbrpc.generatedinterfaces.OSD.InternalReadLocalResponse parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException { - Builder builder = newBuilder(); - if (builder.mergeDelimitedFrom(input)) { - return builder.buildParsed(); - } else { - return null; - } + return PARSER.parseDelimitedFrom(input); } public static org.xtreemfs.pbrpc.generatedinterfaces.OSD.InternalReadLocalResponse parseDelimitedFrom( java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - Builder builder = newBuilder(); - if (builder.mergeDelimitedFrom(input, extensionRegistry)) { - return builder.buildParsed(); - } else { - return null; - } + return PARSER.parseDelimitedFrom(input, extensionRegistry); } public static org.xtreemfs.pbrpc.generatedinterfaces.OSD.InternalReadLocalResponse parseFrom( com.google.protobuf.CodedInputStream input) throws java.io.IOException { - return newBuilder().mergeFrom(input).buildParsed(); + return PARSER.parseFrom(input); } public static org.xtreemfs.pbrpc.generatedinterfaces.OSD.InternalReadLocalResponse parseFrom( com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - return newBuilder().mergeFrom(input, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(input, extensionRegistry); } - + public static Builder newBuilder() { return Builder.create(); } public Builder newBuilderForType() { return newBuilder(); } public static Builder newBuilder(org.xtreemfs.pbrpc.generatedinterfaces.OSD.InternalReadLocalResponse prototype) { return newBuilder().mergeFrom(prototype); } public Builder toBuilder() { return newBuilder(this); } - + + @java.lang.Override + protected Builder newBuilderForType( + com.google.protobuf.GeneratedMessage.BuilderParent parent) { + Builder builder = new Builder(parent); + return builder; + } + /** + * Protobuf type {@code xtreemfs.pbrpc.InternalReadLocalResponse} + * + *
+     * Response sent by an OSD when reading objects for
+     * the ro/rw replication.
+     * 
+ */ public static final class Builder extends - com.google.protobuf.GeneratedMessage.Builder { - private org.xtreemfs.pbrpc.generatedinterfaces.OSD.InternalReadLocalResponse result; - + com.google.protobuf.GeneratedMessage.Builder + implements org.xtreemfs.pbrpc.generatedinterfaces.OSD.InternalReadLocalResponseOrBuilder { + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return org.xtreemfs.pbrpc.generatedinterfaces.OSD.internal_static_xtreemfs_pbrpc_InternalReadLocalResponse_descriptor; + } + + protected com.google.protobuf.GeneratedMessage.FieldAccessorTable + internalGetFieldAccessorTable() { + return org.xtreemfs.pbrpc.generatedinterfaces.OSD.internal_static_xtreemfs_pbrpc_InternalReadLocalResponse_fieldAccessorTable + .ensureFieldAccessorsInitialized( + org.xtreemfs.pbrpc.generatedinterfaces.OSD.InternalReadLocalResponse.class, org.xtreemfs.pbrpc.generatedinterfaces.OSD.InternalReadLocalResponse.Builder.class); + } + // Construct using org.xtreemfs.pbrpc.generatedinterfaces.OSD.InternalReadLocalResponse.newBuilder() - private Builder() {} - - private static Builder create() { - Builder builder = new Builder(); - builder.result = new org.xtreemfs.pbrpc.generatedinterfaces.OSD.InternalReadLocalResponse(); - return builder; + private Builder() { + maybeForceBuilderInitialization(); } - - protected org.xtreemfs.pbrpc.generatedinterfaces.OSD.InternalReadLocalResponse internalGetResult() { - return result; + + private Builder( + com.google.protobuf.GeneratedMessage.BuilderParent parent) { + super(parent); + maybeForceBuilderInitialization(); + } + private void maybeForceBuilderInitialization() { + if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) { + getDataFieldBuilder(); + getObjectSetFieldBuilder(); + } + } + private static Builder create() { + return new Builder(); } - + public Builder clear() { - if (result == null) { - throw new IllegalStateException( - "Cannot call clear() after build()."); + super.clear(); + if (dataBuilder_ == null) { + data_ = org.xtreemfs.pbrpc.generatedinterfaces.OSD.ObjectData.getDefaultInstance(); + } else { + dataBuilder_.clear(); + } + bitField0_ = (bitField0_ & ~0x00000001); + if (objectSetBuilder_ == null) { + objectSet_ = java.util.Collections.emptyList(); + bitField0_ = (bitField0_ & ~0x00000002); + } else { + objectSetBuilder_.clear(); } - result = new org.xtreemfs.pbrpc.generatedinterfaces.OSD.InternalReadLocalResponse(); return this; } - + public Builder clone() { - return create().mergeFrom(result); + return create().mergeFrom(buildPartial()); } - + public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() { - return org.xtreemfs.pbrpc.generatedinterfaces.OSD.InternalReadLocalResponse.getDescriptor(); + return org.xtreemfs.pbrpc.generatedinterfaces.OSD.internal_static_xtreemfs_pbrpc_InternalReadLocalResponse_descriptor; } - + public org.xtreemfs.pbrpc.generatedinterfaces.OSD.InternalReadLocalResponse getDefaultInstanceForType() { return org.xtreemfs.pbrpc.generatedinterfaces.OSD.InternalReadLocalResponse.getDefaultInstance(); } - - public boolean isInitialized() { - return result.isInitialized(); - } + public org.xtreemfs.pbrpc.generatedinterfaces.OSD.InternalReadLocalResponse build() { - if (result != null && !isInitialized()) { + org.xtreemfs.pbrpc.generatedinterfaces.OSD.InternalReadLocalResponse result = buildPartial(); + if (!result.isInitialized()) { throw newUninitializedMessageException(result); } - return buildPartial(); - } - - private org.xtreemfs.pbrpc.generatedinterfaces.OSD.InternalReadLocalResponse buildParsed() - throws com.google.protobuf.InvalidProtocolBufferException { - if (!isInitialized()) { - throw newUninitializedMessageException( - result).asInvalidProtocolBufferException(); - } - return buildPartial(); + return result; } - + public org.xtreemfs.pbrpc.generatedinterfaces.OSD.InternalReadLocalResponse buildPartial() { - if (result == null) { - throw new IllegalStateException( - "build() has already been called on this Builder."); + org.xtreemfs.pbrpc.generatedinterfaces.OSD.InternalReadLocalResponse result = new org.xtreemfs.pbrpc.generatedinterfaces.OSD.InternalReadLocalResponse(this); + int from_bitField0_ = bitField0_; + int to_bitField0_ = 0; + if (((from_bitField0_ & 0x00000001) == 0x00000001)) { + to_bitField0_ |= 0x00000001; + } + if (dataBuilder_ == null) { + result.data_ = data_; + } else { + result.data_ = dataBuilder_.build(); } - if (result.objectSet_ != java.util.Collections.EMPTY_LIST) { - result.objectSet_ = - java.util.Collections.unmodifiableList(result.objectSet_); + if (objectSetBuilder_ == null) { + if (((bitField0_ & 0x00000002) == 0x00000002)) { + objectSet_ = java.util.Collections.unmodifiableList(objectSet_); + bitField0_ = (bitField0_ & ~0x00000002); + } + result.objectSet_ = objectSet_; + } else { + result.objectSet_ = objectSetBuilder_.build(); } - org.xtreemfs.pbrpc.generatedinterfaces.OSD.InternalReadLocalResponse returnMe = result; - result = null; - return returnMe; + result.bitField0_ = to_bitField0_; + onBuilt(); + return result; } - + public Builder mergeFrom(com.google.protobuf.Message other) { if (other instanceof org.xtreemfs.pbrpc.generatedinterfaces.OSD.InternalReadLocalResponse) { return mergeFrom((org.xtreemfs.pbrpc.generatedinterfaces.OSD.InternalReadLocalResponse)other); @@ -4224,447 +8512,1206 @@ public final class OSD { return this; } } - + public Builder mergeFrom(org.xtreemfs.pbrpc.generatedinterfaces.OSD.InternalReadLocalResponse other) { if (other == org.xtreemfs.pbrpc.generatedinterfaces.OSD.InternalReadLocalResponse.getDefaultInstance()) return this; if (other.hasData()) { mergeData(other.getData()); } - if (!other.objectSet_.isEmpty()) { - if (result.objectSet_.isEmpty()) { - result.objectSet_ = new java.util.ArrayList(); + if (objectSetBuilder_ == null) { + if (!other.objectSet_.isEmpty()) { + if (objectSet_.isEmpty()) { + objectSet_ = other.objectSet_; + bitField0_ = (bitField0_ & ~0x00000002); + } else { + ensureObjectSetIsMutable(); + objectSet_.addAll(other.objectSet_); + } + onChanged(); + } + } else { + if (!other.objectSet_.isEmpty()) { + if (objectSetBuilder_.isEmpty()) { + objectSetBuilder_.dispose(); + objectSetBuilder_ = null; + objectSet_ = other.objectSet_; + bitField0_ = (bitField0_ & ~0x00000002); + objectSetBuilder_ = + com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ? + getObjectSetFieldBuilder() : null; + } else { + objectSetBuilder_.addAllMessages(other.objectSet_); + } } - result.objectSet_.addAll(other.objectSet_); } this.mergeUnknownFields(other.getUnknownFields()); return this; } - + + public final boolean isInitialized() { + if (!hasData()) { + + return false; + } + if (!getData().isInitialized()) { + + return false; + } + for (int i = 0; i < getObjectSetCount(); i++) { + if (!getObjectSet(i).isInitialized()) { + + return false; + } + } + return true; + } + public Builder mergeFrom( com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - com.google.protobuf.UnknownFieldSet.Builder unknownFields = - com.google.protobuf.UnknownFieldSet.newBuilder( - this.getUnknownFields()); - while (true) { - int tag = input.readTag(); - switch (tag) { - case 0: - this.setUnknownFields(unknownFields.build()); - return this; - default: { - if (!parseUnknownField(input, unknownFields, - extensionRegistry, tag)) { - this.setUnknownFields(unknownFields.build()); - return this; - } - break; - } - case 10: { - org.xtreemfs.pbrpc.generatedinterfaces.OSD.ObjectData.Builder subBuilder = org.xtreemfs.pbrpc.generatedinterfaces.OSD.ObjectData.newBuilder(); - if (hasData()) { - subBuilder.mergeFrom(getData()); - } - input.readMessage(subBuilder, extensionRegistry); - setData(subBuilder.buildPartial()); - break; - } - case 18: { - org.xtreemfs.pbrpc.generatedinterfaces.OSD.ObjectList.Builder subBuilder = org.xtreemfs.pbrpc.generatedinterfaces.OSD.ObjectList.newBuilder(); - input.readMessage(subBuilder, extensionRegistry); - addObjectSet(subBuilder.buildPartial()); - break; - } + org.xtreemfs.pbrpc.generatedinterfaces.OSD.InternalReadLocalResponse parsedMessage = null; + try { + parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + parsedMessage = (org.xtreemfs.pbrpc.generatedinterfaces.OSD.InternalReadLocalResponse) e.getUnfinishedMessage(); + throw e; + } finally { + if (parsedMessage != null) { + mergeFrom(parsedMessage); } } + return this; } - - + private int bitField0_; + // required .xtreemfs.pbrpc.ObjectData data = 1; + private org.xtreemfs.pbrpc.generatedinterfaces.OSD.ObjectData data_ = org.xtreemfs.pbrpc.generatedinterfaces.OSD.ObjectData.getDefaultInstance(); + private com.google.protobuf.SingleFieldBuilder< + org.xtreemfs.pbrpc.generatedinterfaces.OSD.ObjectData, org.xtreemfs.pbrpc.generatedinterfaces.OSD.ObjectData.Builder, org.xtreemfs.pbrpc.generatedinterfaces.OSD.ObjectDataOrBuilder> dataBuilder_; + /** + * required .xtreemfs.pbrpc.ObjectData data = 1; + */ public boolean hasData() { - return result.hasData(); + return ((bitField0_ & 0x00000001) == 0x00000001); } + /** + * required .xtreemfs.pbrpc.ObjectData data = 1; + */ public org.xtreemfs.pbrpc.generatedinterfaces.OSD.ObjectData getData() { - return result.getData(); + if (dataBuilder_ == null) { + return data_; + } else { + return dataBuilder_.getMessage(); + } } + /** + * required .xtreemfs.pbrpc.ObjectData data = 1; + */ public Builder setData(org.xtreemfs.pbrpc.generatedinterfaces.OSD.ObjectData value) { - if (value == null) { - throw new NullPointerException(); + if (dataBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + data_ = value; + onChanged(); + } else { + dataBuilder_.setMessage(value); } - result.hasData = true; - result.data_ = value; + bitField0_ |= 0x00000001; return this; } - public Builder setData(org.xtreemfs.pbrpc.generatedinterfaces.OSD.ObjectData.Builder builderForValue) { - result.hasData = true; - result.data_ = builderForValue.build(); + /** + * required .xtreemfs.pbrpc.ObjectData data = 1; + */ + public Builder setData( + org.xtreemfs.pbrpc.generatedinterfaces.OSD.ObjectData.Builder builderForValue) { + if (dataBuilder_ == null) { + data_ = builderForValue.build(); + onChanged(); + } else { + dataBuilder_.setMessage(builderForValue.build()); + } + bitField0_ |= 0x00000001; return this; } + /** + * required .xtreemfs.pbrpc.ObjectData data = 1; + */ public Builder mergeData(org.xtreemfs.pbrpc.generatedinterfaces.OSD.ObjectData value) { - if (result.hasData() && - result.data_ != org.xtreemfs.pbrpc.generatedinterfaces.OSD.ObjectData.getDefaultInstance()) { - result.data_ = - org.xtreemfs.pbrpc.generatedinterfaces.OSD.ObjectData.newBuilder(result.data_).mergeFrom(value).buildPartial(); + if (dataBuilder_ == null) { + if (((bitField0_ & 0x00000001) == 0x00000001) && + data_ != org.xtreemfs.pbrpc.generatedinterfaces.OSD.ObjectData.getDefaultInstance()) { + data_ = + org.xtreemfs.pbrpc.generatedinterfaces.OSD.ObjectData.newBuilder(data_).mergeFrom(value).buildPartial(); + } else { + data_ = value; + } + onChanged(); } else { - result.data_ = value; + dataBuilder_.mergeFrom(value); } - result.hasData = true; + bitField0_ |= 0x00000001; return this; } + /** + * required .xtreemfs.pbrpc.ObjectData data = 1; + */ public Builder clearData() { - result.hasData = false; - result.data_ = org.xtreemfs.pbrpc.generatedinterfaces.OSD.ObjectData.getDefaultInstance(); + if (dataBuilder_ == null) { + data_ = org.xtreemfs.pbrpc.generatedinterfaces.OSD.ObjectData.getDefaultInstance(); + onChanged(); + } else { + dataBuilder_.clear(); + } + bitField0_ = (bitField0_ & ~0x00000001); return this; } - + /** + * required .xtreemfs.pbrpc.ObjectData data = 1; + */ + public org.xtreemfs.pbrpc.generatedinterfaces.OSD.ObjectData.Builder getDataBuilder() { + bitField0_ |= 0x00000001; + onChanged(); + return getDataFieldBuilder().getBuilder(); + } + /** + * required .xtreemfs.pbrpc.ObjectData data = 1; + */ + public org.xtreemfs.pbrpc.generatedinterfaces.OSD.ObjectDataOrBuilder getDataOrBuilder() { + if (dataBuilder_ != null) { + return dataBuilder_.getMessageOrBuilder(); + } else { + return data_; + } + } + /** + * required .xtreemfs.pbrpc.ObjectData data = 1; + */ + private com.google.protobuf.SingleFieldBuilder< + org.xtreemfs.pbrpc.generatedinterfaces.OSD.ObjectData, org.xtreemfs.pbrpc.generatedinterfaces.OSD.ObjectData.Builder, org.xtreemfs.pbrpc.generatedinterfaces.OSD.ObjectDataOrBuilder> + getDataFieldBuilder() { + if (dataBuilder_ == null) { + dataBuilder_ = new com.google.protobuf.SingleFieldBuilder< + org.xtreemfs.pbrpc.generatedinterfaces.OSD.ObjectData, org.xtreemfs.pbrpc.generatedinterfaces.OSD.ObjectData.Builder, org.xtreemfs.pbrpc.generatedinterfaces.OSD.ObjectDataOrBuilder>( + data_, + getParentForChildren(), + isClean()); + data_ = null; + } + return dataBuilder_; + } + // repeated .xtreemfs.pbrpc.ObjectList object_set = 2; + private java.util.List objectSet_ = + java.util.Collections.emptyList(); + private void ensureObjectSetIsMutable() { + if (!((bitField0_ & 0x00000002) == 0x00000002)) { + objectSet_ = new java.util.ArrayList(objectSet_); + bitField0_ |= 0x00000002; + } + } + + private com.google.protobuf.RepeatedFieldBuilder< + org.xtreemfs.pbrpc.generatedinterfaces.OSD.ObjectList, org.xtreemfs.pbrpc.generatedinterfaces.OSD.ObjectList.Builder, org.xtreemfs.pbrpc.generatedinterfaces.OSD.ObjectListOrBuilder> objectSetBuilder_; + + /** + * repeated .xtreemfs.pbrpc.ObjectList object_set = 2; + * + *
+       * List of objects the OSD has.
+       * 
+ */ public java.util.List getObjectSetList() { - return java.util.Collections.unmodifiableList(result.objectSet_); + if (objectSetBuilder_ == null) { + return java.util.Collections.unmodifiableList(objectSet_); + } else { + return objectSetBuilder_.getMessageList(); + } } + /** + * repeated .xtreemfs.pbrpc.ObjectList object_set = 2; + * + *
+       * List of objects the OSD has.
+       * 
+ */ public int getObjectSetCount() { - return result.getObjectSetCount(); + if (objectSetBuilder_ == null) { + return objectSet_.size(); + } else { + return objectSetBuilder_.getCount(); + } } + /** + * repeated .xtreemfs.pbrpc.ObjectList object_set = 2; + * + *
+       * List of objects the OSD has.
+       * 
+ */ public org.xtreemfs.pbrpc.generatedinterfaces.OSD.ObjectList getObjectSet(int index) { - return result.getObjectSet(index); - } - public Builder setObjectSet(int index, org.xtreemfs.pbrpc.generatedinterfaces.OSD.ObjectList value) { - if (value == null) { - throw new NullPointerException(); + if (objectSetBuilder_ == null) { + return objectSet_.get(index); + } else { + return objectSetBuilder_.getMessage(index); + } + } + /** + * repeated .xtreemfs.pbrpc.ObjectList object_set = 2; + * + *
+       * List of objects the OSD has.
+       * 
+ */ + public Builder setObjectSet( + int index, org.xtreemfs.pbrpc.generatedinterfaces.OSD.ObjectList value) { + if (objectSetBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + ensureObjectSetIsMutable(); + objectSet_.set(index, value); + onChanged(); + } else { + objectSetBuilder_.setMessage(index, value); + } + return this; + } + /** + * repeated .xtreemfs.pbrpc.ObjectList object_set = 2; + * + *
+       * List of objects the OSD has.
+       * 
+ */ + public Builder setObjectSet( + int index, org.xtreemfs.pbrpc.generatedinterfaces.OSD.ObjectList.Builder builderForValue) { + if (objectSetBuilder_ == null) { + ensureObjectSetIsMutable(); + objectSet_.set(index, builderForValue.build()); + onChanged(); + } else { + objectSetBuilder_.setMessage(index, builderForValue.build()); } - result.objectSet_.set(index, value); - return this; - } - public Builder setObjectSet(int index, org.xtreemfs.pbrpc.generatedinterfaces.OSD.ObjectList.Builder builderForValue) { - result.objectSet_.set(index, builderForValue.build()); return this; } + /** + * repeated .xtreemfs.pbrpc.ObjectList object_set = 2; + * + *
+       * List of objects the OSD has.
+       * 
+ */ public Builder addObjectSet(org.xtreemfs.pbrpc.generatedinterfaces.OSD.ObjectList value) { - if (value == null) { - throw new NullPointerException(); - } - if (result.objectSet_.isEmpty()) { - result.objectSet_ = new java.util.ArrayList(); - } - result.objectSet_.add(value); - return this; - } - public Builder addObjectSet(org.xtreemfs.pbrpc.generatedinterfaces.OSD.ObjectList.Builder builderForValue) { - if (result.objectSet_.isEmpty()) { - result.objectSet_ = new java.util.ArrayList(); + if (objectSetBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + ensureObjectSetIsMutable(); + objectSet_.add(value); + onChanged(); + } else { + objectSetBuilder_.addMessage(value); + } + return this; + } + /** + * repeated .xtreemfs.pbrpc.ObjectList object_set = 2; + * + *
+       * List of objects the OSD has.
+       * 
+ */ + public Builder addObjectSet( + int index, org.xtreemfs.pbrpc.generatedinterfaces.OSD.ObjectList value) { + if (objectSetBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + ensureObjectSetIsMutable(); + objectSet_.add(index, value); + onChanged(); + } else { + objectSetBuilder_.addMessage(index, value); + } + return this; + } + /** + * repeated .xtreemfs.pbrpc.ObjectList object_set = 2; + * + *
+       * List of objects the OSD has.
+       * 
+ */ + public Builder addObjectSet( + org.xtreemfs.pbrpc.generatedinterfaces.OSD.ObjectList.Builder builderForValue) { + if (objectSetBuilder_ == null) { + ensureObjectSetIsMutable(); + objectSet_.add(builderForValue.build()); + onChanged(); + } else { + objectSetBuilder_.addMessage(builderForValue.build()); + } + return this; + } + /** + * repeated .xtreemfs.pbrpc.ObjectList object_set = 2; + * + *
+       * List of objects the OSD has.
+       * 
+ */ + public Builder addObjectSet( + int index, org.xtreemfs.pbrpc.generatedinterfaces.OSD.ObjectList.Builder builderForValue) { + if (objectSetBuilder_ == null) { + ensureObjectSetIsMutable(); + objectSet_.add(index, builderForValue.build()); + onChanged(); + } else { + objectSetBuilder_.addMessage(index, builderForValue.build()); } - result.objectSet_.add(builderForValue.build()); return this; } + /** + * repeated .xtreemfs.pbrpc.ObjectList object_set = 2; + * + *
+       * List of objects the OSD has.
+       * 
+ */ public Builder addAllObjectSet( java.lang.Iterable values) { - if (result.objectSet_.isEmpty()) { - result.objectSet_ = new java.util.ArrayList(); + if (objectSetBuilder_ == null) { + ensureObjectSetIsMutable(); + super.addAll(values, objectSet_); + onChanged(); + } else { + objectSetBuilder_.addAllMessages(values); } - super.addAll(values, result.objectSet_); return this; } + /** + * repeated .xtreemfs.pbrpc.ObjectList object_set = 2; + * + *
+       * List of objects the OSD has.
+       * 
+ */ public Builder clearObjectSet() { - result.objectSet_ = java.util.Collections.emptyList(); - return this; + if (objectSetBuilder_ == null) { + objectSet_ = java.util.Collections.emptyList(); + bitField0_ = (bitField0_ & ~0x00000002); + onChanged(); + } else { + objectSetBuilder_.clear(); + } + return this; + } + /** + * repeated .xtreemfs.pbrpc.ObjectList object_set = 2; + * + *
+       * List of objects the OSD has.
+       * 
+ */ + public Builder removeObjectSet(int index) { + if (objectSetBuilder_ == null) { + ensureObjectSetIsMutable(); + objectSet_.remove(index); + onChanged(); + } else { + objectSetBuilder_.remove(index); + } + return this; + } + /** + * repeated .xtreemfs.pbrpc.ObjectList object_set = 2; + * + *
+       * List of objects the OSD has.
+       * 
+ */ + public org.xtreemfs.pbrpc.generatedinterfaces.OSD.ObjectList.Builder getObjectSetBuilder( + int index) { + return getObjectSetFieldBuilder().getBuilder(index); + } + /** + * repeated .xtreemfs.pbrpc.ObjectList object_set = 2; + * + *
+       * List of objects the OSD has.
+       * 
+ */ + public org.xtreemfs.pbrpc.generatedinterfaces.OSD.ObjectListOrBuilder getObjectSetOrBuilder( + int index) { + if (objectSetBuilder_ == null) { + return objectSet_.get(index); } else { + return objectSetBuilder_.getMessageOrBuilder(index); + } + } + /** + * repeated .xtreemfs.pbrpc.ObjectList object_set = 2; + * + *
+       * List of objects the OSD has.
+       * 
+ */ + public java.util.List + getObjectSetOrBuilderList() { + if (objectSetBuilder_ != null) { + return objectSetBuilder_.getMessageOrBuilderList(); + } else { + return java.util.Collections.unmodifiableList(objectSet_); + } + } + /** + * repeated .xtreemfs.pbrpc.ObjectList object_set = 2; + * + *
+       * List of objects the OSD has.
+       * 
+ */ + public org.xtreemfs.pbrpc.generatedinterfaces.OSD.ObjectList.Builder addObjectSetBuilder() { + return getObjectSetFieldBuilder().addBuilder( + org.xtreemfs.pbrpc.generatedinterfaces.OSD.ObjectList.getDefaultInstance()); + } + /** + * repeated .xtreemfs.pbrpc.ObjectList object_set = 2; + * + *
+       * List of objects the OSD has.
+       * 
+ */ + public org.xtreemfs.pbrpc.generatedinterfaces.OSD.ObjectList.Builder addObjectSetBuilder( + int index) { + return getObjectSetFieldBuilder().addBuilder( + index, org.xtreemfs.pbrpc.generatedinterfaces.OSD.ObjectList.getDefaultInstance()); + } + /** + * repeated .xtreemfs.pbrpc.ObjectList object_set = 2; + * + *
+       * List of objects the OSD has.
+       * 
+ */ + public java.util.List + getObjectSetBuilderList() { + return getObjectSetFieldBuilder().getBuilderList(); + } + private com.google.protobuf.RepeatedFieldBuilder< + org.xtreemfs.pbrpc.generatedinterfaces.OSD.ObjectList, org.xtreemfs.pbrpc.generatedinterfaces.OSD.ObjectList.Builder, org.xtreemfs.pbrpc.generatedinterfaces.OSD.ObjectListOrBuilder> + getObjectSetFieldBuilder() { + if (objectSetBuilder_ == null) { + objectSetBuilder_ = new com.google.protobuf.RepeatedFieldBuilder< + org.xtreemfs.pbrpc.generatedinterfaces.OSD.ObjectList, org.xtreemfs.pbrpc.generatedinterfaces.OSD.ObjectList.Builder, org.xtreemfs.pbrpc.generatedinterfaces.OSD.ObjectListOrBuilder>( + objectSet_, + ((bitField0_ & 0x00000002) == 0x00000002), + getParentForChildren(), + isClean()); + objectSet_ = null; + } + return objectSetBuilder_; } - + // @@protoc_insertion_point(builder_scope:xtreemfs.pbrpc.InternalReadLocalResponse) } - + static { defaultInstance = new InternalReadLocalResponse(true); - org.xtreemfs.pbrpc.generatedinterfaces.OSD.internalForceInit(); defaultInstance.initFields(); } - + // @@protoc_insertion_point(class_scope:xtreemfs.pbrpc.InternalReadLocalResponse) } - + + public interface readRequestOrBuilder + extends com.google.protobuf.MessageOrBuilder { + + // required .xtreemfs.pbrpc.FileCredentials file_credentials = 1; + /** + * required .xtreemfs.pbrpc.FileCredentials file_credentials = 1; + */ + boolean hasFileCredentials(); + /** + * required .xtreemfs.pbrpc.FileCredentials file_credentials = 1; + */ + org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials getFileCredentials(); + /** + * required .xtreemfs.pbrpc.FileCredentials file_credentials = 1; + */ + org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentialsOrBuilder getFileCredentialsOrBuilder(); + + // required string file_id = 2; + /** + * required string file_id = 2; + */ + boolean hasFileId(); + /** + * required string file_id = 2; + */ + java.lang.String getFileId(); + /** + * required string file_id = 2; + */ + com.google.protobuf.ByteString + getFileIdBytes(); + + // required fixed64 object_number = 3; + /** + * required fixed64 object_number = 3; + * + *
+     * Object number starting at 0.
+     * 
+ */ + boolean hasObjectNumber(); + /** + * required fixed64 object_number = 3; + * + *
+     * Object number starting at 0.
+     * 
+ */ + long getObjectNumber(); + + // required fixed64 object_version = 4; + /** + * required fixed64 object_version = 4; + * + *
+     * Version, currently ignored.
+     * 
+ */ + boolean hasObjectVersion(); + /** + * required fixed64 object_version = 4; + * + *
+     * Version, currently ignored.
+     * 
+ */ + long getObjectVersion(); + + // required fixed32 offset = 5; + /** + * required fixed32 offset = 5; + * + *
+     * Offset within the object.
+     * 
+ */ + boolean hasOffset(); + /** + * required fixed32 offset = 5; + * + *
+     * Offset within the object.
+     * 
+ */ + int getOffset(); + + // required fixed32 length = 6; + /** + * required fixed32 length = 6; + * + *
+     * Length of data to be read, must be <= stripe_size - offset.
+     * 
+ */ + boolean hasLength(); + /** + * required fixed32 length = 6; + * + *
+     * Length of data to be read, must be <= stripe_size - offset.
+     * 
+ */ + int getLength(); + } + /** + * Protobuf type {@code xtreemfs.pbrpc.readRequest} + */ public static final class readRequest extends - com.google.protobuf.GeneratedMessage { + com.google.protobuf.GeneratedMessage + implements readRequestOrBuilder { // Use readRequest.newBuilder() to construct. - private readRequest() { - initFields(); + private readRequest(com.google.protobuf.GeneratedMessage.Builder builder) { + super(builder); + this.unknownFields = builder.getUnknownFields(); } - private readRequest(boolean noInit) {} - + private readRequest(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); } + private static final readRequest defaultInstance; public static readRequest getDefaultInstance() { return defaultInstance; } - + public readRequest getDefaultInstanceForType() { return defaultInstance; } - + + private final com.google.protobuf.UnknownFieldSet unknownFields; + @java.lang.Override + public final com.google.protobuf.UnknownFieldSet + getUnknownFields() { + return this.unknownFields; + } + private readRequest( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + initFields(); + int mutable_bitField0_ = 0; + com.google.protobuf.UnknownFieldSet.Builder unknownFields = + com.google.protobuf.UnknownFieldSet.newBuilder(); + try { + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch (tag) { + case 0: + done = true; + break; + default: { + if (!parseUnknownField(input, unknownFields, + extensionRegistry, tag)) { + done = true; + } + break; + } + case 10: { + org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials.Builder subBuilder = null; + if (((bitField0_ & 0x00000001) == 0x00000001)) { + subBuilder = fileCredentials_.toBuilder(); + } + fileCredentials_ = input.readMessage(org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials.PARSER, extensionRegistry); + if (subBuilder != null) { + subBuilder.mergeFrom(fileCredentials_); + fileCredentials_ = subBuilder.buildPartial(); + } + bitField0_ |= 0x00000001; + break; + } + case 18: { + bitField0_ |= 0x00000002; + fileId_ = input.readBytes(); + break; + } + case 25: { + bitField0_ |= 0x00000004; + objectNumber_ = input.readFixed64(); + break; + } + case 33: { + bitField0_ |= 0x00000008; + objectVersion_ = input.readFixed64(); + break; + } + case 45: { + bitField0_ |= 0x00000010; + offset_ = input.readFixed32(); + break; + } + case 53: { + bitField0_ |= 0x00000020; + length_ = input.readFixed32(); + break; + } + } + } + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(this); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException( + e.getMessage()).setUnfinishedMessage(this); + } finally { + this.unknownFields = unknownFields.build(); + makeExtensionsImmutable(); + } + } public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { return org.xtreemfs.pbrpc.generatedinterfaces.OSD.internal_static_xtreemfs_pbrpc_readRequest_descriptor; } - + protected com.google.protobuf.GeneratedMessage.FieldAccessorTable internalGetFieldAccessorTable() { - return org.xtreemfs.pbrpc.generatedinterfaces.OSD.internal_static_xtreemfs_pbrpc_readRequest_fieldAccessorTable; + return org.xtreemfs.pbrpc.generatedinterfaces.OSD.internal_static_xtreemfs_pbrpc_readRequest_fieldAccessorTable + .ensureFieldAccessorsInitialized( + org.xtreemfs.pbrpc.generatedinterfaces.OSD.readRequest.class, org.xtreemfs.pbrpc.generatedinterfaces.OSD.readRequest.Builder.class); + } + + public static com.google.protobuf.Parser PARSER = + new com.google.protobuf.AbstractParser() { + public readRequest parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return new readRequest(input, extensionRegistry); + } + }; + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; } - + + private int bitField0_; // required .xtreemfs.pbrpc.FileCredentials file_credentials = 1; public static final int FILE_CREDENTIALS_FIELD_NUMBER = 1; - private boolean hasFileCredentials; private org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials fileCredentials_; - public boolean hasFileCredentials() { return hasFileCredentials; } - public org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials getFileCredentials() { return fileCredentials_; } - + /** + * required .xtreemfs.pbrpc.FileCredentials file_credentials = 1; + */ + public boolean hasFileCredentials() { + return ((bitField0_ & 0x00000001) == 0x00000001); + } + /** + * required .xtreemfs.pbrpc.FileCredentials file_credentials = 1; + */ + public org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials getFileCredentials() { + return fileCredentials_; + } + /** + * required .xtreemfs.pbrpc.FileCredentials file_credentials = 1; + */ + public org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentialsOrBuilder getFileCredentialsOrBuilder() { + return fileCredentials_; + } + // required string file_id = 2; public static final int FILE_ID_FIELD_NUMBER = 2; - private boolean hasFileId; - private java.lang.String fileId_ = ""; - public boolean hasFileId() { return hasFileId; } - public java.lang.String getFileId() { return fileId_; } - + private java.lang.Object fileId_; + /** + * required string file_id = 2; + */ + public boolean hasFileId() { + return ((bitField0_ & 0x00000002) == 0x00000002); + } + /** + * required string file_id = 2; + */ + public java.lang.String getFileId() { + java.lang.Object ref = fileId_; + if (ref instanceof java.lang.String) { + return (java.lang.String) ref; + } else { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + if (bs.isValidUtf8()) { + fileId_ = s; + } + return s; + } + } + /** + * required string file_id = 2; + */ + public com.google.protobuf.ByteString + getFileIdBytes() { + java.lang.Object ref = fileId_; + if (ref instanceof java.lang.String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + fileId_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + // required fixed64 object_number = 3; public static final int OBJECT_NUMBER_FIELD_NUMBER = 3; - private boolean hasObjectNumber; - private long objectNumber_ = 0L; - public boolean hasObjectNumber() { return hasObjectNumber; } - public long getObjectNumber() { return objectNumber_; } - + private long objectNumber_; + /** + * required fixed64 object_number = 3; + * + *
+     * Object number starting at 0.
+     * 
+ */ + public boolean hasObjectNumber() { + return ((bitField0_ & 0x00000004) == 0x00000004); + } + /** + * required fixed64 object_number = 3; + * + *
+     * Object number starting at 0.
+     * 
+ */ + public long getObjectNumber() { + return objectNumber_; + } + // required fixed64 object_version = 4; public static final int OBJECT_VERSION_FIELD_NUMBER = 4; - private boolean hasObjectVersion; - private long objectVersion_ = 0L; - public boolean hasObjectVersion() { return hasObjectVersion; } - public long getObjectVersion() { return objectVersion_; } - + private long objectVersion_; + /** + * required fixed64 object_version = 4; + * + *
+     * Version, currently ignored.
+     * 
+ */ + public boolean hasObjectVersion() { + return ((bitField0_ & 0x00000008) == 0x00000008); + } + /** + * required fixed64 object_version = 4; + * + *
+     * Version, currently ignored.
+     * 
+ */ + public long getObjectVersion() { + return objectVersion_; + } + // required fixed32 offset = 5; public static final int OFFSET_FIELD_NUMBER = 5; - private boolean hasOffset; - private int offset_ = 0; - public boolean hasOffset() { return hasOffset; } - public int getOffset() { return offset_; } - + private int offset_; + /** + * required fixed32 offset = 5; + * + *
+     * Offset within the object.
+     * 
+ */ + public boolean hasOffset() { + return ((bitField0_ & 0x00000010) == 0x00000010); + } + /** + * required fixed32 offset = 5; + * + *
+     * Offset within the object.
+     * 
+ */ + public int getOffset() { + return offset_; + } + // required fixed32 length = 6; public static final int LENGTH_FIELD_NUMBER = 6; - private boolean hasLength; - private int length_ = 0; - public boolean hasLength() { return hasLength; } - public int getLength() { return length_; } - + private int length_; + /** + * required fixed32 length = 6; + * + *
+     * Length of data to be read, must be <= stripe_size - offset.
+     * 
+ */ + public boolean hasLength() { + return ((bitField0_ & 0x00000020) == 0x00000020); + } + /** + * required fixed32 length = 6; + * + *
+     * Length of data to be read, must be <= stripe_size - offset.
+     * 
+ */ + public int getLength() { + return length_; + } + private void initFields() { fileCredentials_ = org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials.getDefaultInstance(); + fileId_ = ""; + objectNumber_ = 0L; + objectVersion_ = 0L; + offset_ = 0; + length_ = 0; } + private byte memoizedIsInitialized = -1; public final boolean isInitialized() { - if (!hasFileCredentials) return false; - if (!hasFileId) return false; - if (!hasObjectNumber) return false; - if (!hasObjectVersion) return false; - if (!hasOffset) return false; - if (!hasLength) return false; - if (!getFileCredentials().isInitialized()) return false; + byte isInitialized = memoizedIsInitialized; + if (isInitialized != -1) return isInitialized == 1; + + if (!hasFileCredentials()) { + memoizedIsInitialized = 0; + return false; + } + if (!hasFileId()) { + memoizedIsInitialized = 0; + return false; + } + if (!hasObjectNumber()) { + memoizedIsInitialized = 0; + return false; + } + if (!hasObjectVersion()) { + memoizedIsInitialized = 0; + return false; + } + if (!hasOffset()) { + memoizedIsInitialized = 0; + return false; + } + if (!hasLength()) { + memoizedIsInitialized = 0; + return false; + } + if (!getFileCredentials().isInitialized()) { + memoizedIsInitialized = 0; + return false; + } + memoizedIsInitialized = 1; return true; } - + public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException { getSerializedSize(); - if (hasFileCredentials()) { - output.writeMessage(1, getFileCredentials()); + if (((bitField0_ & 0x00000001) == 0x00000001)) { + output.writeMessage(1, fileCredentials_); } - if (hasFileId()) { - output.writeString(2, getFileId()); + if (((bitField0_ & 0x00000002) == 0x00000002)) { + output.writeBytes(2, getFileIdBytes()); } - if (hasObjectNumber()) { - output.writeFixed64(3, getObjectNumber()); + if (((bitField0_ & 0x00000004) == 0x00000004)) { + output.writeFixed64(3, objectNumber_); } - if (hasObjectVersion()) { - output.writeFixed64(4, getObjectVersion()); + if (((bitField0_ & 0x00000008) == 0x00000008)) { + output.writeFixed64(4, objectVersion_); } - if (hasOffset()) { - output.writeFixed32(5, getOffset()); + if (((bitField0_ & 0x00000010) == 0x00000010)) { + output.writeFixed32(5, offset_); } - if (hasLength()) { - output.writeFixed32(6, getLength()); + if (((bitField0_ & 0x00000020) == 0x00000020)) { + output.writeFixed32(6, length_); } getUnknownFields().writeTo(output); } - + private int memoizedSerializedSize = -1; public int getSerializedSize() { int size = memoizedSerializedSize; if (size != -1) return size; - + size = 0; - if (hasFileCredentials()) { + if (((bitField0_ & 0x00000001) == 0x00000001)) { size += com.google.protobuf.CodedOutputStream - .computeMessageSize(1, getFileCredentials()); + .computeMessageSize(1, fileCredentials_); } - if (hasFileId()) { + if (((bitField0_ & 0x00000002) == 0x00000002)) { size += com.google.protobuf.CodedOutputStream - .computeStringSize(2, getFileId()); + .computeBytesSize(2, getFileIdBytes()); } - if (hasObjectNumber()) { + if (((bitField0_ & 0x00000004) == 0x00000004)) { size += com.google.protobuf.CodedOutputStream - .computeFixed64Size(3, getObjectNumber()); + .computeFixed64Size(3, objectNumber_); } - if (hasObjectVersion()) { + if (((bitField0_ & 0x00000008) == 0x00000008)) { size += com.google.protobuf.CodedOutputStream - .computeFixed64Size(4, getObjectVersion()); + .computeFixed64Size(4, objectVersion_); } - if (hasOffset()) { + if (((bitField0_ & 0x00000010) == 0x00000010)) { size += com.google.protobuf.CodedOutputStream - .computeFixed32Size(5, getOffset()); + .computeFixed32Size(5, offset_); } - if (hasLength()) { + if (((bitField0_ & 0x00000020) == 0x00000020)) { size += com.google.protobuf.CodedOutputStream - .computeFixed32Size(6, getLength()); + .computeFixed32Size(6, length_); } size += getUnknownFields().getSerializedSize(); memoizedSerializedSize = size; return size; } - + + private static final long serialVersionUID = 0L; + @java.lang.Override + protected java.lang.Object writeReplace() + throws java.io.ObjectStreamException { + return super.writeReplace(); + } + public static org.xtreemfs.pbrpc.generatedinterfaces.OSD.readRequest parseFrom( com.google.protobuf.ByteString data) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data).buildParsed(); + return PARSER.parseFrom(data); } public static org.xtreemfs.pbrpc.generatedinterfaces.OSD.readRequest parseFrom( com.google.protobuf.ByteString data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(data, extensionRegistry); } public static org.xtreemfs.pbrpc.generatedinterfaces.OSD.readRequest parseFrom(byte[] data) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data).buildParsed(); + return PARSER.parseFrom(data); } public static org.xtreemfs.pbrpc.generatedinterfaces.OSD.readRequest parseFrom( byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(data, extensionRegistry); } public static org.xtreemfs.pbrpc.generatedinterfaces.OSD.readRequest parseFrom(java.io.InputStream input) throws java.io.IOException { - return newBuilder().mergeFrom(input).buildParsed(); + return PARSER.parseFrom(input); } public static org.xtreemfs.pbrpc.generatedinterfaces.OSD.readRequest parseFrom( java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - return newBuilder().mergeFrom(input, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(input, extensionRegistry); } public static org.xtreemfs.pbrpc.generatedinterfaces.OSD.readRequest parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException { - Builder builder = newBuilder(); - if (builder.mergeDelimitedFrom(input)) { - return builder.buildParsed(); - } else { - return null; - } + return PARSER.parseDelimitedFrom(input); } public static org.xtreemfs.pbrpc.generatedinterfaces.OSD.readRequest parseDelimitedFrom( java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - Builder builder = newBuilder(); - if (builder.mergeDelimitedFrom(input, extensionRegistry)) { - return builder.buildParsed(); - } else { - return null; - } + return PARSER.parseDelimitedFrom(input, extensionRegistry); } public static org.xtreemfs.pbrpc.generatedinterfaces.OSD.readRequest parseFrom( com.google.protobuf.CodedInputStream input) throws java.io.IOException { - return newBuilder().mergeFrom(input).buildParsed(); + return PARSER.parseFrom(input); } public static org.xtreemfs.pbrpc.generatedinterfaces.OSD.readRequest parseFrom( com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - return newBuilder().mergeFrom(input, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(input, extensionRegistry); } - + public static Builder newBuilder() { return Builder.create(); } public Builder newBuilderForType() { return newBuilder(); } public static Builder newBuilder(org.xtreemfs.pbrpc.generatedinterfaces.OSD.readRequest prototype) { return newBuilder().mergeFrom(prototype); } public Builder toBuilder() { return newBuilder(this); } - + + @java.lang.Override + protected Builder newBuilderForType( + com.google.protobuf.GeneratedMessage.BuilderParent parent) { + Builder builder = new Builder(parent); + return builder; + } + /** + * Protobuf type {@code xtreemfs.pbrpc.readRequest} + */ public static final class Builder extends - com.google.protobuf.GeneratedMessage.Builder { - private org.xtreemfs.pbrpc.generatedinterfaces.OSD.readRequest result; - + com.google.protobuf.GeneratedMessage.Builder + implements org.xtreemfs.pbrpc.generatedinterfaces.OSD.readRequestOrBuilder { + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return org.xtreemfs.pbrpc.generatedinterfaces.OSD.internal_static_xtreemfs_pbrpc_readRequest_descriptor; + } + + protected com.google.protobuf.GeneratedMessage.FieldAccessorTable + internalGetFieldAccessorTable() { + return org.xtreemfs.pbrpc.generatedinterfaces.OSD.internal_static_xtreemfs_pbrpc_readRequest_fieldAccessorTable + .ensureFieldAccessorsInitialized( + org.xtreemfs.pbrpc.generatedinterfaces.OSD.readRequest.class, org.xtreemfs.pbrpc.generatedinterfaces.OSD.readRequest.Builder.class); + } + // Construct using org.xtreemfs.pbrpc.generatedinterfaces.OSD.readRequest.newBuilder() - private Builder() {} - - private static Builder create() { - Builder builder = new Builder(); - builder.result = new org.xtreemfs.pbrpc.generatedinterfaces.OSD.readRequest(); - return builder; + private Builder() { + maybeForceBuilderInitialization(); } - - protected org.xtreemfs.pbrpc.generatedinterfaces.OSD.readRequest internalGetResult() { - return result; + + private Builder( + com.google.protobuf.GeneratedMessage.BuilderParent parent) { + super(parent); + maybeForceBuilderInitialization(); + } + private void maybeForceBuilderInitialization() { + if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) { + getFileCredentialsFieldBuilder(); + } } - + private static Builder create() { + return new Builder(); + } + public Builder clear() { - if (result == null) { - throw new IllegalStateException( - "Cannot call clear() after build()."); + super.clear(); + if (fileCredentialsBuilder_ == null) { + fileCredentials_ = org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials.getDefaultInstance(); + } else { + fileCredentialsBuilder_.clear(); } - result = new org.xtreemfs.pbrpc.generatedinterfaces.OSD.readRequest(); + bitField0_ = (bitField0_ & ~0x00000001); + fileId_ = ""; + bitField0_ = (bitField0_ & ~0x00000002); + objectNumber_ = 0L; + bitField0_ = (bitField0_ & ~0x00000004); + objectVersion_ = 0L; + bitField0_ = (bitField0_ & ~0x00000008); + offset_ = 0; + bitField0_ = (bitField0_ & ~0x00000010); + length_ = 0; + bitField0_ = (bitField0_ & ~0x00000020); return this; } - + public Builder clone() { - return create().mergeFrom(result); + return create().mergeFrom(buildPartial()); } - + public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() { - return org.xtreemfs.pbrpc.generatedinterfaces.OSD.readRequest.getDescriptor(); + return org.xtreemfs.pbrpc.generatedinterfaces.OSD.internal_static_xtreemfs_pbrpc_readRequest_descriptor; } - + public org.xtreemfs.pbrpc.generatedinterfaces.OSD.readRequest getDefaultInstanceForType() { return org.xtreemfs.pbrpc.generatedinterfaces.OSD.readRequest.getDefaultInstance(); } - - public boolean isInitialized() { - return result.isInitialized(); - } + public org.xtreemfs.pbrpc.generatedinterfaces.OSD.readRequest build() { - if (result != null && !isInitialized()) { + org.xtreemfs.pbrpc.generatedinterfaces.OSD.readRequest result = buildPartial(); + if (!result.isInitialized()) { throw newUninitializedMessageException(result); } - return buildPartial(); - } - - private org.xtreemfs.pbrpc.generatedinterfaces.OSD.readRequest buildParsed() - throws com.google.protobuf.InvalidProtocolBufferException { - if (!isInitialized()) { - throw newUninitializedMessageException( - result).asInvalidProtocolBufferException(); - } - return buildPartial(); + return result; } - + public org.xtreemfs.pbrpc.generatedinterfaces.OSD.readRequest buildPartial() { - if (result == null) { - throw new IllegalStateException( - "build() has already been called on this Builder."); + org.xtreemfs.pbrpc.generatedinterfaces.OSD.readRequest result = new org.xtreemfs.pbrpc.generatedinterfaces.OSD.readRequest(this); + int from_bitField0_ = bitField0_; + int to_bitField0_ = 0; + if (((from_bitField0_ & 0x00000001) == 0x00000001)) { + to_bitField0_ |= 0x00000001; + } + if (fileCredentialsBuilder_ == null) { + result.fileCredentials_ = fileCredentials_; + } else { + result.fileCredentials_ = fileCredentialsBuilder_.build(); + } + if (((from_bitField0_ & 0x00000002) == 0x00000002)) { + to_bitField0_ |= 0x00000002; } - org.xtreemfs.pbrpc.generatedinterfaces.OSD.readRequest returnMe = result; - result = null; - return returnMe; + result.fileId_ = fileId_; + if (((from_bitField0_ & 0x00000004) == 0x00000004)) { + to_bitField0_ |= 0x00000004; + } + result.objectNumber_ = objectNumber_; + if (((from_bitField0_ & 0x00000008) == 0x00000008)) { + to_bitField0_ |= 0x00000008; + } + result.objectVersion_ = objectVersion_; + if (((from_bitField0_ & 0x00000010) == 0x00000010)) { + to_bitField0_ |= 0x00000010; + } + result.offset_ = offset_; + if (((from_bitField0_ & 0x00000020) == 0x00000020)) { + to_bitField0_ |= 0x00000020; + } + result.length_ = length_; + result.bitField0_ = to_bitField0_; + onBuilt(); + return result; } - + public Builder mergeFrom(com.google.protobuf.Message other) { if (other instanceof org.xtreemfs.pbrpc.generatedinterfaces.OSD.readRequest) { return mergeFrom((org.xtreemfs.pbrpc.generatedinterfaces.OSD.readRequest)other); @@ -4673,14 +9720,16 @@ public final class OSD { return this; } } - + public Builder mergeFrom(org.xtreemfs.pbrpc.generatedinterfaces.OSD.readRequest other) { if (other == org.xtreemfs.pbrpc.generatedinterfaces.OSD.readRequest.getDefaultInstance()) return this; if (other.hasFileCredentials()) { mergeFileCredentials(other.getFileCredentials()); } if (other.hasFileId()) { - setFileId(other.getFileId()); + bitField0_ |= 0x00000002; + fileId_ = other.fileId_; + onChanged(); } if (other.hasObjectNumber()) { setObjectNumber(other.getObjectNumber()); @@ -4697,443 +9746,948 @@ public final class OSD { this.mergeUnknownFields(other.getUnknownFields()); return this; } - + + public final boolean isInitialized() { + if (!hasFileCredentials()) { + + return false; + } + if (!hasFileId()) { + + return false; + } + if (!hasObjectNumber()) { + + return false; + } + if (!hasObjectVersion()) { + + return false; + } + if (!hasOffset()) { + + return false; + } + if (!hasLength()) { + + return false; + } + if (!getFileCredentials().isInitialized()) { + + return false; + } + return true; + } + public Builder mergeFrom( com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - com.google.protobuf.UnknownFieldSet.Builder unknownFields = - com.google.protobuf.UnknownFieldSet.newBuilder( - this.getUnknownFields()); - while (true) { - int tag = input.readTag(); - switch (tag) { - case 0: - this.setUnknownFields(unknownFields.build()); - return this; - default: { - if (!parseUnknownField(input, unknownFields, - extensionRegistry, tag)) { - this.setUnknownFields(unknownFields.build()); - return this; - } - break; - } - case 10: { - org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials.Builder subBuilder = org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials.newBuilder(); - if (hasFileCredentials()) { - subBuilder.mergeFrom(getFileCredentials()); - } - input.readMessage(subBuilder, extensionRegistry); - setFileCredentials(subBuilder.buildPartial()); - break; - } - case 18: { - setFileId(input.readString()); - break; - } - case 25: { - setObjectNumber(input.readFixed64()); - break; - } - case 33: { - setObjectVersion(input.readFixed64()); - break; - } - case 45: { - setOffset(input.readFixed32()); - break; - } - case 53: { - setLength(input.readFixed32()); - break; - } + org.xtreemfs.pbrpc.generatedinterfaces.OSD.readRequest parsedMessage = null; + try { + parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + parsedMessage = (org.xtreemfs.pbrpc.generatedinterfaces.OSD.readRequest) e.getUnfinishedMessage(); + throw e; + } finally { + if (parsedMessage != null) { + mergeFrom(parsedMessage); } } + return this; } - - + private int bitField0_; + // required .xtreemfs.pbrpc.FileCredentials file_credentials = 1; + private org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials fileCredentials_ = org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials.getDefaultInstance(); + private com.google.protobuf.SingleFieldBuilder< + org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials, org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials.Builder, org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentialsOrBuilder> fileCredentialsBuilder_; + /** + * required .xtreemfs.pbrpc.FileCredentials file_credentials = 1; + */ public boolean hasFileCredentials() { - return result.hasFileCredentials(); + return ((bitField0_ & 0x00000001) == 0x00000001); } + /** + * required .xtreemfs.pbrpc.FileCredentials file_credentials = 1; + */ public org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials getFileCredentials() { - return result.getFileCredentials(); + if (fileCredentialsBuilder_ == null) { + return fileCredentials_; + } else { + return fileCredentialsBuilder_.getMessage(); + } } + /** + * required .xtreemfs.pbrpc.FileCredentials file_credentials = 1; + */ public Builder setFileCredentials(org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials value) { - if (value == null) { - throw new NullPointerException(); + if (fileCredentialsBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + fileCredentials_ = value; + onChanged(); + } else { + fileCredentialsBuilder_.setMessage(value); } - result.hasFileCredentials = true; - result.fileCredentials_ = value; + bitField0_ |= 0x00000001; return this; } - public Builder setFileCredentials(org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials.Builder builderForValue) { - result.hasFileCredentials = true; - result.fileCredentials_ = builderForValue.build(); + /** + * required .xtreemfs.pbrpc.FileCredentials file_credentials = 1; + */ + public Builder setFileCredentials( + org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials.Builder builderForValue) { + if (fileCredentialsBuilder_ == null) { + fileCredentials_ = builderForValue.build(); + onChanged(); + } else { + fileCredentialsBuilder_.setMessage(builderForValue.build()); + } + bitField0_ |= 0x00000001; return this; } + /** + * required .xtreemfs.pbrpc.FileCredentials file_credentials = 1; + */ public Builder mergeFileCredentials(org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials value) { - if (result.hasFileCredentials() && - result.fileCredentials_ != org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials.getDefaultInstance()) { - result.fileCredentials_ = - org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials.newBuilder(result.fileCredentials_).mergeFrom(value).buildPartial(); + if (fileCredentialsBuilder_ == null) { + if (((bitField0_ & 0x00000001) == 0x00000001) && + fileCredentials_ != org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials.getDefaultInstance()) { + fileCredentials_ = + org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials.newBuilder(fileCredentials_).mergeFrom(value).buildPartial(); + } else { + fileCredentials_ = value; + } + onChanged(); } else { - result.fileCredentials_ = value; + fileCredentialsBuilder_.mergeFrom(value); } - result.hasFileCredentials = true; + bitField0_ |= 0x00000001; return this; } + /** + * required .xtreemfs.pbrpc.FileCredentials file_credentials = 1; + */ public Builder clearFileCredentials() { - result.hasFileCredentials = false; - result.fileCredentials_ = org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials.getDefaultInstance(); + if (fileCredentialsBuilder_ == null) { + fileCredentials_ = org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials.getDefaultInstance(); + onChanged(); + } else { + fileCredentialsBuilder_.clear(); + } + bitField0_ = (bitField0_ & ~0x00000001); return this; } - + /** + * required .xtreemfs.pbrpc.FileCredentials file_credentials = 1; + */ + public org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials.Builder getFileCredentialsBuilder() { + bitField0_ |= 0x00000001; + onChanged(); + return getFileCredentialsFieldBuilder().getBuilder(); + } + /** + * required .xtreemfs.pbrpc.FileCredentials file_credentials = 1; + */ + public org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentialsOrBuilder getFileCredentialsOrBuilder() { + if (fileCredentialsBuilder_ != null) { + return fileCredentialsBuilder_.getMessageOrBuilder(); + } else { + return fileCredentials_; + } + } + /** + * required .xtreemfs.pbrpc.FileCredentials file_credentials = 1; + */ + private com.google.protobuf.SingleFieldBuilder< + org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials, org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials.Builder, org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentialsOrBuilder> + getFileCredentialsFieldBuilder() { + if (fileCredentialsBuilder_ == null) { + fileCredentialsBuilder_ = new com.google.protobuf.SingleFieldBuilder< + org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials, org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials.Builder, org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentialsOrBuilder>( + fileCredentials_, + getParentForChildren(), + isClean()); + fileCredentials_ = null; + } + return fileCredentialsBuilder_; + } + // required string file_id = 2; + private java.lang.Object fileId_ = ""; + /** + * required string file_id = 2; + */ public boolean hasFileId() { - return result.hasFileId(); + return ((bitField0_ & 0x00000002) == 0x00000002); } + /** + * required string file_id = 2; + */ public java.lang.String getFileId() { - return result.getFileId(); + java.lang.Object ref = fileId_; + if (!(ref instanceof java.lang.String)) { + java.lang.String s = ((com.google.protobuf.ByteString) ref) + .toStringUtf8(); + fileId_ = s; + return s; + } else { + return (java.lang.String) ref; + } + } + /** + * required string file_id = 2; + */ + public com.google.protobuf.ByteString + getFileIdBytes() { + java.lang.Object ref = fileId_; + if (ref instanceof String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + fileId_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } } - public Builder setFileId(java.lang.String value) { + /** + * required string file_id = 2; + */ + public Builder setFileId( + java.lang.String value) { if (value == null) { throw new NullPointerException(); } - result.hasFileId = true; - result.fileId_ = value; + bitField0_ |= 0x00000002; + fileId_ = value; + onChanged(); return this; } + /** + * required string file_id = 2; + */ public Builder clearFileId() { - result.hasFileId = false; - result.fileId_ = getDefaultInstance().getFileId(); + bitField0_ = (bitField0_ & ~0x00000002); + fileId_ = getDefaultInstance().getFileId(); + onChanged(); + return this; + } + /** + * required string file_id = 2; + */ + public Builder setFileIdBytes( + com.google.protobuf.ByteString value) { + if (value == null) { + throw new NullPointerException(); + } + bitField0_ |= 0x00000002; + fileId_ = value; + onChanged(); return this; } - + // required fixed64 object_number = 3; + private long objectNumber_ ; + /** + * required fixed64 object_number = 3; + * + *
+       * Object number starting at 0.
+       * 
+ */ public boolean hasObjectNumber() { - return result.hasObjectNumber(); - } + return ((bitField0_ & 0x00000004) == 0x00000004); + } + /** + * required fixed64 object_number = 3; + * + *
+       * Object number starting at 0.
+       * 
+ */ public long getObjectNumber() { - return result.getObjectNumber(); - } + return objectNumber_; + } + /** + * required fixed64 object_number = 3; + * + *
+       * Object number starting at 0.
+       * 
+ */ public Builder setObjectNumber(long value) { - result.hasObjectNumber = true; - result.objectNumber_ = value; - return this; - } + bitField0_ |= 0x00000004; + objectNumber_ = value; + onChanged(); + return this; + } + /** + * required fixed64 object_number = 3; + * + *
+       * Object number starting at 0.
+       * 
+ */ public Builder clearObjectNumber() { - result.hasObjectNumber = false; - result.objectNumber_ = 0L; + bitField0_ = (bitField0_ & ~0x00000004); + objectNumber_ = 0L; + onChanged(); return this; } - + // required fixed64 object_version = 4; + private long objectVersion_ ; + /** + * required fixed64 object_version = 4; + * + *
+       * Version, currently ignored.
+       * 
+ */ public boolean hasObjectVersion() { - return result.hasObjectVersion(); - } + return ((bitField0_ & 0x00000008) == 0x00000008); + } + /** + * required fixed64 object_version = 4; + * + *
+       * Version, currently ignored.
+       * 
+ */ public long getObjectVersion() { - return result.getObjectVersion(); - } + return objectVersion_; + } + /** + * required fixed64 object_version = 4; + * + *
+       * Version, currently ignored.
+       * 
+ */ public Builder setObjectVersion(long value) { - result.hasObjectVersion = true; - result.objectVersion_ = value; - return this; - } + bitField0_ |= 0x00000008; + objectVersion_ = value; + onChanged(); + return this; + } + /** + * required fixed64 object_version = 4; + * + *
+       * Version, currently ignored.
+       * 
+ */ public Builder clearObjectVersion() { - result.hasObjectVersion = false; - result.objectVersion_ = 0L; + bitField0_ = (bitField0_ & ~0x00000008); + objectVersion_ = 0L; + onChanged(); return this; } - + // required fixed32 offset = 5; + private int offset_ ; + /** + * required fixed32 offset = 5; + * + *
+       * Offset within the object.
+       * 
+ */ public boolean hasOffset() { - return result.hasOffset(); - } + return ((bitField0_ & 0x00000010) == 0x00000010); + } + /** + * required fixed32 offset = 5; + * + *
+       * Offset within the object.
+       * 
+ */ public int getOffset() { - return result.getOffset(); - } + return offset_; + } + /** + * required fixed32 offset = 5; + * + *
+       * Offset within the object.
+       * 
+ */ public Builder setOffset(int value) { - result.hasOffset = true; - result.offset_ = value; - return this; - } + bitField0_ |= 0x00000010; + offset_ = value; + onChanged(); + return this; + } + /** + * required fixed32 offset = 5; + * + *
+       * Offset within the object.
+       * 
+ */ public Builder clearOffset() { - result.hasOffset = false; - result.offset_ = 0; + bitField0_ = (bitField0_ & ~0x00000010); + offset_ = 0; + onChanged(); return this; } - + // required fixed32 length = 6; + private int length_ ; + /** + * required fixed32 length = 6; + * + *
+       * Length of data to be read, must be <= stripe_size - offset.
+       * 
+ */ public boolean hasLength() { - return result.hasLength(); - } + return ((bitField0_ & 0x00000020) == 0x00000020); + } + /** + * required fixed32 length = 6; + * + *
+       * Length of data to be read, must be <= stripe_size - offset.
+       * 
+ */ public int getLength() { - return result.getLength(); - } + return length_; + } + /** + * required fixed32 length = 6; + * + *
+       * Length of data to be read, must be <= stripe_size - offset.
+       * 
+ */ public Builder setLength(int value) { - result.hasLength = true; - result.length_ = value; - return this; - } + bitField0_ |= 0x00000020; + length_ = value; + onChanged(); + return this; + } + /** + * required fixed32 length = 6; + * + *
+       * Length of data to be read, must be <= stripe_size - offset.
+       * 
+ */ public Builder clearLength() { - result.hasLength = false; - result.length_ = 0; + bitField0_ = (bitField0_ & ~0x00000020); + length_ = 0; + onChanged(); return this; } - + // @@protoc_insertion_point(builder_scope:xtreemfs.pbrpc.readRequest) } - + static { defaultInstance = new readRequest(true); - org.xtreemfs.pbrpc.generatedinterfaces.OSD.internalForceInit(); defaultInstance.initFields(); } - + // @@protoc_insertion_point(class_scope:xtreemfs.pbrpc.readRequest) } - + + public interface truncateRequestOrBuilder + extends com.google.protobuf.MessageOrBuilder { + + // required .xtreemfs.pbrpc.FileCredentials file_credentials = 1; + /** + * required .xtreemfs.pbrpc.FileCredentials file_credentials = 1; + */ + boolean hasFileCredentials(); + /** + * required .xtreemfs.pbrpc.FileCredentials file_credentials = 1; + */ + org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials getFileCredentials(); + /** + * required .xtreemfs.pbrpc.FileCredentials file_credentials = 1; + */ + org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentialsOrBuilder getFileCredentialsOrBuilder(); + + // required string file_id = 2; + /** + * required string file_id = 2; + */ + boolean hasFileId(); + /** + * required string file_id = 2; + */ + java.lang.String getFileId(); + /** + * required string file_id = 2; + */ + com.google.protobuf.ByteString + getFileIdBytes(); + + // required fixed64 new_file_size = 3; + /** + * required fixed64 new_file_size = 3; + * + *
+     * New file size in bytes.
+     * 
+ */ + boolean hasNewFileSize(); + /** + * required fixed64 new_file_size = 3; + * + *
+     * New file size in bytes.
+     * 
+ */ + long getNewFileSize(); + } + /** + * Protobuf type {@code xtreemfs.pbrpc.truncateRequest} + */ public static final class truncateRequest extends - com.google.protobuf.GeneratedMessage { + com.google.protobuf.GeneratedMessage + implements truncateRequestOrBuilder { // Use truncateRequest.newBuilder() to construct. - private truncateRequest() { - initFields(); + private truncateRequest(com.google.protobuf.GeneratedMessage.Builder builder) { + super(builder); + this.unknownFields = builder.getUnknownFields(); } - private truncateRequest(boolean noInit) {} - + private truncateRequest(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); } + private static final truncateRequest defaultInstance; public static truncateRequest getDefaultInstance() { return defaultInstance; } - + public truncateRequest getDefaultInstanceForType() { return defaultInstance; } - + + private final com.google.protobuf.UnknownFieldSet unknownFields; + @java.lang.Override + public final com.google.protobuf.UnknownFieldSet + getUnknownFields() { + return this.unknownFields; + } + private truncateRequest( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + initFields(); + int mutable_bitField0_ = 0; + com.google.protobuf.UnknownFieldSet.Builder unknownFields = + com.google.protobuf.UnknownFieldSet.newBuilder(); + try { + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch (tag) { + case 0: + done = true; + break; + default: { + if (!parseUnknownField(input, unknownFields, + extensionRegistry, tag)) { + done = true; + } + break; + } + case 10: { + org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials.Builder subBuilder = null; + if (((bitField0_ & 0x00000001) == 0x00000001)) { + subBuilder = fileCredentials_.toBuilder(); + } + fileCredentials_ = input.readMessage(org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials.PARSER, extensionRegistry); + if (subBuilder != null) { + subBuilder.mergeFrom(fileCredentials_); + fileCredentials_ = subBuilder.buildPartial(); + } + bitField0_ |= 0x00000001; + break; + } + case 18: { + bitField0_ |= 0x00000002; + fileId_ = input.readBytes(); + break; + } + case 25: { + bitField0_ |= 0x00000004; + newFileSize_ = input.readFixed64(); + break; + } + } + } + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(this); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException( + e.getMessage()).setUnfinishedMessage(this); + } finally { + this.unknownFields = unknownFields.build(); + makeExtensionsImmutable(); + } + } public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { return org.xtreemfs.pbrpc.generatedinterfaces.OSD.internal_static_xtreemfs_pbrpc_truncateRequest_descriptor; } - + protected com.google.protobuf.GeneratedMessage.FieldAccessorTable internalGetFieldAccessorTable() { - return org.xtreemfs.pbrpc.generatedinterfaces.OSD.internal_static_xtreemfs_pbrpc_truncateRequest_fieldAccessorTable; + return org.xtreemfs.pbrpc.generatedinterfaces.OSD.internal_static_xtreemfs_pbrpc_truncateRequest_fieldAccessorTable + .ensureFieldAccessorsInitialized( + org.xtreemfs.pbrpc.generatedinterfaces.OSD.truncateRequest.class, org.xtreemfs.pbrpc.generatedinterfaces.OSD.truncateRequest.Builder.class); + } + + public static com.google.protobuf.Parser PARSER = + new com.google.protobuf.AbstractParser() { + public truncateRequest parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return new truncateRequest(input, extensionRegistry); + } + }; + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; } - + + private int bitField0_; // required .xtreemfs.pbrpc.FileCredentials file_credentials = 1; public static final int FILE_CREDENTIALS_FIELD_NUMBER = 1; - private boolean hasFileCredentials; private org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials fileCredentials_; - public boolean hasFileCredentials() { return hasFileCredentials; } - public org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials getFileCredentials() { return fileCredentials_; } - + /** + * required .xtreemfs.pbrpc.FileCredentials file_credentials = 1; + */ + public boolean hasFileCredentials() { + return ((bitField0_ & 0x00000001) == 0x00000001); + } + /** + * required .xtreemfs.pbrpc.FileCredentials file_credentials = 1; + */ + public org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials getFileCredentials() { + return fileCredentials_; + } + /** + * required .xtreemfs.pbrpc.FileCredentials file_credentials = 1; + */ + public org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentialsOrBuilder getFileCredentialsOrBuilder() { + return fileCredentials_; + } + // required string file_id = 2; public static final int FILE_ID_FIELD_NUMBER = 2; - private boolean hasFileId; - private java.lang.String fileId_ = ""; - public boolean hasFileId() { return hasFileId; } - public java.lang.String getFileId() { return fileId_; } - + private java.lang.Object fileId_; + /** + * required string file_id = 2; + */ + public boolean hasFileId() { + return ((bitField0_ & 0x00000002) == 0x00000002); + } + /** + * required string file_id = 2; + */ + public java.lang.String getFileId() { + java.lang.Object ref = fileId_; + if (ref instanceof java.lang.String) { + return (java.lang.String) ref; + } else { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + if (bs.isValidUtf8()) { + fileId_ = s; + } + return s; + } + } + /** + * required string file_id = 2; + */ + public com.google.protobuf.ByteString + getFileIdBytes() { + java.lang.Object ref = fileId_; + if (ref instanceof java.lang.String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + fileId_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + // required fixed64 new_file_size = 3; public static final int NEW_FILE_SIZE_FIELD_NUMBER = 3; - private boolean hasNewFileSize; - private long newFileSize_ = 0L; - public boolean hasNewFileSize() { return hasNewFileSize; } - public long getNewFileSize() { return newFileSize_; } - + private long newFileSize_; + /** + * required fixed64 new_file_size = 3; + * + *
+     * New file size in bytes.
+     * 
+ */ + public boolean hasNewFileSize() { + return ((bitField0_ & 0x00000004) == 0x00000004); + } + /** + * required fixed64 new_file_size = 3; + * + *
+     * New file size in bytes.
+     * 
+ */ + public long getNewFileSize() { + return newFileSize_; + } + private void initFields() { fileCredentials_ = org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials.getDefaultInstance(); + fileId_ = ""; + newFileSize_ = 0L; } + private byte memoizedIsInitialized = -1; public final boolean isInitialized() { - if (!hasFileCredentials) return false; - if (!hasFileId) return false; - if (!hasNewFileSize) return false; - if (!getFileCredentials().isInitialized()) return false; + byte isInitialized = memoizedIsInitialized; + if (isInitialized != -1) return isInitialized == 1; + + if (!hasFileCredentials()) { + memoizedIsInitialized = 0; + return false; + } + if (!hasFileId()) { + memoizedIsInitialized = 0; + return false; + } + if (!hasNewFileSize()) { + memoizedIsInitialized = 0; + return false; + } + if (!getFileCredentials().isInitialized()) { + memoizedIsInitialized = 0; + return false; + } + memoizedIsInitialized = 1; return true; } - + public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException { getSerializedSize(); - if (hasFileCredentials()) { - output.writeMessage(1, getFileCredentials()); + if (((bitField0_ & 0x00000001) == 0x00000001)) { + output.writeMessage(1, fileCredentials_); } - if (hasFileId()) { - output.writeString(2, getFileId()); + if (((bitField0_ & 0x00000002) == 0x00000002)) { + output.writeBytes(2, getFileIdBytes()); } - if (hasNewFileSize()) { - output.writeFixed64(3, getNewFileSize()); + if (((bitField0_ & 0x00000004) == 0x00000004)) { + output.writeFixed64(3, newFileSize_); } getUnknownFields().writeTo(output); } - + private int memoizedSerializedSize = -1; public int getSerializedSize() { int size = memoizedSerializedSize; if (size != -1) return size; - + size = 0; - if (hasFileCredentials()) { + if (((bitField0_ & 0x00000001) == 0x00000001)) { size += com.google.protobuf.CodedOutputStream - .computeMessageSize(1, getFileCredentials()); + .computeMessageSize(1, fileCredentials_); } - if (hasFileId()) { + if (((bitField0_ & 0x00000002) == 0x00000002)) { size += com.google.protobuf.CodedOutputStream - .computeStringSize(2, getFileId()); + .computeBytesSize(2, getFileIdBytes()); } - if (hasNewFileSize()) { + if (((bitField0_ & 0x00000004) == 0x00000004)) { size += com.google.protobuf.CodedOutputStream - .computeFixed64Size(3, getNewFileSize()); + .computeFixed64Size(3, newFileSize_); } size += getUnknownFields().getSerializedSize(); memoizedSerializedSize = size; return size; } - + + private static final long serialVersionUID = 0L; + @java.lang.Override + protected java.lang.Object writeReplace() + throws java.io.ObjectStreamException { + return super.writeReplace(); + } + public static org.xtreemfs.pbrpc.generatedinterfaces.OSD.truncateRequest parseFrom( com.google.protobuf.ByteString data) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data).buildParsed(); + return PARSER.parseFrom(data); } public static org.xtreemfs.pbrpc.generatedinterfaces.OSD.truncateRequest parseFrom( com.google.protobuf.ByteString data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(data, extensionRegistry); } public static org.xtreemfs.pbrpc.generatedinterfaces.OSD.truncateRequest parseFrom(byte[] data) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data).buildParsed(); + return PARSER.parseFrom(data); } public static org.xtreemfs.pbrpc.generatedinterfaces.OSD.truncateRequest parseFrom( byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(data, extensionRegistry); } public static org.xtreemfs.pbrpc.generatedinterfaces.OSD.truncateRequest parseFrom(java.io.InputStream input) throws java.io.IOException { - return newBuilder().mergeFrom(input).buildParsed(); + return PARSER.parseFrom(input); } public static org.xtreemfs.pbrpc.generatedinterfaces.OSD.truncateRequest parseFrom( java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - return newBuilder().mergeFrom(input, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(input, extensionRegistry); } public static org.xtreemfs.pbrpc.generatedinterfaces.OSD.truncateRequest parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException { - Builder builder = newBuilder(); - if (builder.mergeDelimitedFrom(input)) { - return builder.buildParsed(); - } else { - return null; - } + return PARSER.parseDelimitedFrom(input); } public static org.xtreemfs.pbrpc.generatedinterfaces.OSD.truncateRequest parseDelimitedFrom( java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - Builder builder = newBuilder(); - if (builder.mergeDelimitedFrom(input, extensionRegistry)) { - return builder.buildParsed(); - } else { - return null; - } + return PARSER.parseDelimitedFrom(input, extensionRegistry); } public static org.xtreemfs.pbrpc.generatedinterfaces.OSD.truncateRequest parseFrom( com.google.protobuf.CodedInputStream input) throws java.io.IOException { - return newBuilder().mergeFrom(input).buildParsed(); + return PARSER.parseFrom(input); } public static org.xtreemfs.pbrpc.generatedinterfaces.OSD.truncateRequest parseFrom( com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - return newBuilder().mergeFrom(input, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(input, extensionRegistry); } - + public static Builder newBuilder() { return Builder.create(); } public Builder newBuilderForType() { return newBuilder(); } public static Builder newBuilder(org.xtreemfs.pbrpc.generatedinterfaces.OSD.truncateRequest prototype) { return newBuilder().mergeFrom(prototype); } public Builder toBuilder() { return newBuilder(this); } - + + @java.lang.Override + protected Builder newBuilderForType( + com.google.protobuf.GeneratedMessage.BuilderParent parent) { + Builder builder = new Builder(parent); + return builder; + } + /** + * Protobuf type {@code xtreemfs.pbrpc.truncateRequest} + */ public static final class Builder extends - com.google.protobuf.GeneratedMessage.Builder { - private org.xtreemfs.pbrpc.generatedinterfaces.OSD.truncateRequest result; - + com.google.protobuf.GeneratedMessage.Builder + implements org.xtreemfs.pbrpc.generatedinterfaces.OSD.truncateRequestOrBuilder { + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return org.xtreemfs.pbrpc.generatedinterfaces.OSD.internal_static_xtreemfs_pbrpc_truncateRequest_descriptor; + } + + protected com.google.protobuf.GeneratedMessage.FieldAccessorTable + internalGetFieldAccessorTable() { + return org.xtreemfs.pbrpc.generatedinterfaces.OSD.internal_static_xtreemfs_pbrpc_truncateRequest_fieldAccessorTable + .ensureFieldAccessorsInitialized( + org.xtreemfs.pbrpc.generatedinterfaces.OSD.truncateRequest.class, org.xtreemfs.pbrpc.generatedinterfaces.OSD.truncateRequest.Builder.class); + } + // Construct using org.xtreemfs.pbrpc.generatedinterfaces.OSD.truncateRequest.newBuilder() - private Builder() {} - - private static Builder create() { - Builder builder = new Builder(); - builder.result = new org.xtreemfs.pbrpc.generatedinterfaces.OSD.truncateRequest(); - return builder; + private Builder() { + maybeForceBuilderInitialization(); } - - protected org.xtreemfs.pbrpc.generatedinterfaces.OSD.truncateRequest internalGetResult() { - return result; + + private Builder( + com.google.protobuf.GeneratedMessage.BuilderParent parent) { + super(parent); + maybeForceBuilderInitialization(); + } + private void maybeForceBuilderInitialization() { + if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) { + getFileCredentialsFieldBuilder(); + } + } + private static Builder create() { + return new Builder(); } - + public Builder clear() { - if (result == null) { - throw new IllegalStateException( - "Cannot call clear() after build()."); + super.clear(); + if (fileCredentialsBuilder_ == null) { + fileCredentials_ = org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials.getDefaultInstance(); + } else { + fileCredentialsBuilder_.clear(); } - result = new org.xtreemfs.pbrpc.generatedinterfaces.OSD.truncateRequest(); + bitField0_ = (bitField0_ & ~0x00000001); + fileId_ = ""; + bitField0_ = (bitField0_ & ~0x00000002); + newFileSize_ = 0L; + bitField0_ = (bitField0_ & ~0x00000004); return this; } - + public Builder clone() { - return create().mergeFrom(result); + return create().mergeFrom(buildPartial()); } - + public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() { - return org.xtreemfs.pbrpc.generatedinterfaces.OSD.truncateRequest.getDescriptor(); + return org.xtreemfs.pbrpc.generatedinterfaces.OSD.internal_static_xtreemfs_pbrpc_truncateRequest_descriptor; } - + public org.xtreemfs.pbrpc.generatedinterfaces.OSD.truncateRequest getDefaultInstanceForType() { return org.xtreemfs.pbrpc.generatedinterfaces.OSD.truncateRequest.getDefaultInstance(); } - - public boolean isInitialized() { - return result.isInitialized(); - } + public org.xtreemfs.pbrpc.generatedinterfaces.OSD.truncateRequest build() { - if (result != null && !isInitialized()) { + org.xtreemfs.pbrpc.generatedinterfaces.OSD.truncateRequest result = buildPartial(); + if (!result.isInitialized()) { throw newUninitializedMessageException(result); } - return buildPartial(); - } - - private org.xtreemfs.pbrpc.generatedinterfaces.OSD.truncateRequest buildParsed() - throws com.google.protobuf.InvalidProtocolBufferException { - if (!isInitialized()) { - throw newUninitializedMessageException( - result).asInvalidProtocolBufferException(); - } - return buildPartial(); + return result; } - + public org.xtreemfs.pbrpc.generatedinterfaces.OSD.truncateRequest buildPartial() { - if (result == null) { - throw new IllegalStateException( - "build() has already been called on this Builder."); + org.xtreemfs.pbrpc.generatedinterfaces.OSD.truncateRequest result = new org.xtreemfs.pbrpc.generatedinterfaces.OSD.truncateRequest(this); + int from_bitField0_ = bitField0_; + int to_bitField0_ = 0; + if (((from_bitField0_ & 0x00000001) == 0x00000001)) { + to_bitField0_ |= 0x00000001; + } + if (fileCredentialsBuilder_ == null) { + result.fileCredentials_ = fileCredentials_; + } else { + result.fileCredentials_ = fileCredentialsBuilder_.build(); + } + if (((from_bitField0_ & 0x00000002) == 0x00000002)) { + to_bitField0_ |= 0x00000002; } - org.xtreemfs.pbrpc.generatedinterfaces.OSD.truncateRequest returnMe = result; - result = null; - return returnMe; + result.fileId_ = fileId_; + if (((from_bitField0_ & 0x00000004) == 0x00000004)) { + to_bitField0_ |= 0x00000004; + } + result.newFileSize_ = newFileSize_; + result.bitField0_ = to_bitField0_; + onBuilt(); + return result; } - + public Builder mergeFrom(com.google.protobuf.Message other) { if (other instanceof org.xtreemfs.pbrpc.generatedinterfaces.OSD.truncateRequest) { return mergeFrom((org.xtreemfs.pbrpc.generatedinterfaces.OSD.truncateRequest)other); @@ -5142,14 +10696,16 @@ public final class OSD { return this; } } - + public Builder mergeFrom(org.xtreemfs.pbrpc.generatedinterfaces.OSD.truncateRequest other) { if (other == org.xtreemfs.pbrpc.generatedinterfaces.OSD.truncateRequest.getDefaultInstance()) return this; if (other.hasFileCredentials()) { mergeFileCredentials(other.getFileCredentials()); } if (other.hasFileId()) { - setFileId(other.getFileId()); + bitField0_ |= 0x00000002; + fileId_ = other.fileId_; + onChanged(); } if (other.hasNewFileSize()) { setNewFileSize(other.getNewFileSize()); @@ -5157,362 +10713,724 @@ public final class OSD { this.mergeUnknownFields(other.getUnknownFields()); return this; } - + + public final boolean isInitialized() { + if (!hasFileCredentials()) { + + return false; + } + if (!hasFileId()) { + + return false; + } + if (!hasNewFileSize()) { + + return false; + } + if (!getFileCredentials().isInitialized()) { + + return false; + } + return true; + } + public Builder mergeFrom( com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - com.google.protobuf.UnknownFieldSet.Builder unknownFields = - com.google.protobuf.UnknownFieldSet.newBuilder( - this.getUnknownFields()); - while (true) { - int tag = input.readTag(); - switch (tag) { - case 0: - this.setUnknownFields(unknownFields.build()); - return this; - default: { - if (!parseUnknownField(input, unknownFields, - extensionRegistry, tag)) { - this.setUnknownFields(unknownFields.build()); - return this; - } - break; - } - case 10: { - org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials.Builder subBuilder = org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials.newBuilder(); - if (hasFileCredentials()) { - subBuilder.mergeFrom(getFileCredentials()); - } - input.readMessage(subBuilder, extensionRegistry); - setFileCredentials(subBuilder.buildPartial()); - break; - } - case 18: { - setFileId(input.readString()); - break; - } - case 25: { - setNewFileSize(input.readFixed64()); - break; - } + org.xtreemfs.pbrpc.generatedinterfaces.OSD.truncateRequest parsedMessage = null; + try { + parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + parsedMessage = (org.xtreemfs.pbrpc.generatedinterfaces.OSD.truncateRequest) e.getUnfinishedMessage(); + throw e; + } finally { + if (parsedMessage != null) { + mergeFrom(parsedMessage); } } + return this; } - - + private int bitField0_; + // required .xtreemfs.pbrpc.FileCredentials file_credentials = 1; + private org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials fileCredentials_ = org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials.getDefaultInstance(); + private com.google.protobuf.SingleFieldBuilder< + org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials, org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials.Builder, org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentialsOrBuilder> fileCredentialsBuilder_; + /** + * required .xtreemfs.pbrpc.FileCredentials file_credentials = 1; + */ public boolean hasFileCredentials() { - return result.hasFileCredentials(); + return ((bitField0_ & 0x00000001) == 0x00000001); } + /** + * required .xtreemfs.pbrpc.FileCredentials file_credentials = 1; + */ public org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials getFileCredentials() { - return result.getFileCredentials(); + if (fileCredentialsBuilder_ == null) { + return fileCredentials_; + } else { + return fileCredentialsBuilder_.getMessage(); + } } + /** + * required .xtreemfs.pbrpc.FileCredentials file_credentials = 1; + */ public Builder setFileCredentials(org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials value) { - if (value == null) { - throw new NullPointerException(); + if (fileCredentialsBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + fileCredentials_ = value; + onChanged(); + } else { + fileCredentialsBuilder_.setMessage(value); } - result.hasFileCredentials = true; - result.fileCredentials_ = value; + bitField0_ |= 0x00000001; return this; } - public Builder setFileCredentials(org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials.Builder builderForValue) { - result.hasFileCredentials = true; - result.fileCredentials_ = builderForValue.build(); + /** + * required .xtreemfs.pbrpc.FileCredentials file_credentials = 1; + */ + public Builder setFileCredentials( + org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials.Builder builderForValue) { + if (fileCredentialsBuilder_ == null) { + fileCredentials_ = builderForValue.build(); + onChanged(); + } else { + fileCredentialsBuilder_.setMessage(builderForValue.build()); + } + bitField0_ |= 0x00000001; return this; } + /** + * required .xtreemfs.pbrpc.FileCredentials file_credentials = 1; + */ public Builder mergeFileCredentials(org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials value) { - if (result.hasFileCredentials() && - result.fileCredentials_ != org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials.getDefaultInstance()) { - result.fileCredentials_ = - org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials.newBuilder(result.fileCredentials_).mergeFrom(value).buildPartial(); + if (fileCredentialsBuilder_ == null) { + if (((bitField0_ & 0x00000001) == 0x00000001) && + fileCredentials_ != org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials.getDefaultInstance()) { + fileCredentials_ = + org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials.newBuilder(fileCredentials_).mergeFrom(value).buildPartial(); + } else { + fileCredentials_ = value; + } + onChanged(); } else { - result.fileCredentials_ = value; + fileCredentialsBuilder_.mergeFrom(value); } - result.hasFileCredentials = true; + bitField0_ |= 0x00000001; return this; } + /** + * required .xtreemfs.pbrpc.FileCredentials file_credentials = 1; + */ public Builder clearFileCredentials() { - result.hasFileCredentials = false; - result.fileCredentials_ = org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials.getDefaultInstance(); + if (fileCredentialsBuilder_ == null) { + fileCredentials_ = org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials.getDefaultInstance(); + onChanged(); + } else { + fileCredentialsBuilder_.clear(); + } + bitField0_ = (bitField0_ & ~0x00000001); return this; } - + /** + * required .xtreemfs.pbrpc.FileCredentials file_credentials = 1; + */ + public org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials.Builder getFileCredentialsBuilder() { + bitField0_ |= 0x00000001; + onChanged(); + return getFileCredentialsFieldBuilder().getBuilder(); + } + /** + * required .xtreemfs.pbrpc.FileCredentials file_credentials = 1; + */ + public org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentialsOrBuilder getFileCredentialsOrBuilder() { + if (fileCredentialsBuilder_ != null) { + return fileCredentialsBuilder_.getMessageOrBuilder(); + } else { + return fileCredentials_; + } + } + /** + * required .xtreemfs.pbrpc.FileCredentials file_credentials = 1; + */ + private com.google.protobuf.SingleFieldBuilder< + org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials, org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials.Builder, org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentialsOrBuilder> + getFileCredentialsFieldBuilder() { + if (fileCredentialsBuilder_ == null) { + fileCredentialsBuilder_ = new com.google.protobuf.SingleFieldBuilder< + org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials, org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials.Builder, org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentialsOrBuilder>( + fileCredentials_, + getParentForChildren(), + isClean()); + fileCredentials_ = null; + } + return fileCredentialsBuilder_; + } + // required string file_id = 2; + private java.lang.Object fileId_ = ""; + /** + * required string file_id = 2; + */ public boolean hasFileId() { - return result.hasFileId(); + return ((bitField0_ & 0x00000002) == 0x00000002); } + /** + * required string file_id = 2; + */ public java.lang.String getFileId() { - return result.getFileId(); + java.lang.Object ref = fileId_; + if (!(ref instanceof java.lang.String)) { + java.lang.String s = ((com.google.protobuf.ByteString) ref) + .toStringUtf8(); + fileId_ = s; + return s; + } else { + return (java.lang.String) ref; + } + } + /** + * required string file_id = 2; + */ + public com.google.protobuf.ByteString + getFileIdBytes() { + java.lang.Object ref = fileId_; + if (ref instanceof String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + fileId_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } } - public Builder setFileId(java.lang.String value) { + /** + * required string file_id = 2; + */ + public Builder setFileId( + java.lang.String value) { if (value == null) { throw new NullPointerException(); } - result.hasFileId = true; - result.fileId_ = value; + bitField0_ |= 0x00000002; + fileId_ = value; + onChanged(); return this; } + /** + * required string file_id = 2; + */ public Builder clearFileId() { - result.hasFileId = false; - result.fileId_ = getDefaultInstance().getFileId(); + bitField0_ = (bitField0_ & ~0x00000002); + fileId_ = getDefaultInstance().getFileId(); + onChanged(); + return this; + } + /** + * required string file_id = 2; + */ + public Builder setFileIdBytes( + com.google.protobuf.ByteString value) { + if (value == null) { + throw new NullPointerException(); + } + bitField0_ |= 0x00000002; + fileId_ = value; + onChanged(); return this; } - + // required fixed64 new_file_size = 3; + private long newFileSize_ ; + /** + * required fixed64 new_file_size = 3; + * + *
+       * New file size in bytes.
+       * 
+ */ public boolean hasNewFileSize() { - return result.hasNewFileSize(); - } + return ((bitField0_ & 0x00000004) == 0x00000004); + } + /** + * required fixed64 new_file_size = 3; + * + *
+       * New file size in bytes.
+       * 
+ */ public long getNewFileSize() { - return result.getNewFileSize(); - } + return newFileSize_; + } + /** + * required fixed64 new_file_size = 3; + * + *
+       * New file size in bytes.
+       * 
+ */ public Builder setNewFileSize(long value) { - result.hasNewFileSize = true; - result.newFileSize_ = value; - return this; - } + bitField0_ |= 0x00000004; + newFileSize_ = value; + onChanged(); + return this; + } + /** + * required fixed64 new_file_size = 3; + * + *
+       * New file size in bytes.
+       * 
+ */ public Builder clearNewFileSize() { - result.hasNewFileSize = false; - result.newFileSize_ = 0L; + bitField0_ = (bitField0_ & ~0x00000004); + newFileSize_ = 0L; + onChanged(); return this; } - + // @@protoc_insertion_point(builder_scope:xtreemfs.pbrpc.truncateRequest) } - + static { defaultInstance = new truncateRequest(true); - org.xtreemfs.pbrpc.generatedinterfaces.OSD.internalForceInit(); defaultInstance.initFields(); } - + // @@protoc_insertion_point(class_scope:xtreemfs.pbrpc.truncateRequest) } - + + public interface unlink_osd_RequestOrBuilder + extends com.google.protobuf.MessageOrBuilder { + + // required .xtreemfs.pbrpc.FileCredentials file_credentials = 1; + /** + * required .xtreemfs.pbrpc.FileCredentials file_credentials = 1; + */ + boolean hasFileCredentials(); + /** + * required .xtreemfs.pbrpc.FileCredentials file_credentials = 1; + */ + org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials getFileCredentials(); + /** + * required .xtreemfs.pbrpc.FileCredentials file_credentials = 1; + */ + org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentialsOrBuilder getFileCredentialsOrBuilder(); + + // required string file_id = 2; + /** + * required string file_id = 2; + */ + boolean hasFileId(); + /** + * required string file_id = 2; + */ + java.lang.String getFileId(); + /** + * required string file_id = 2; + */ + com.google.protobuf.ByteString + getFileIdBytes(); + } + /** + * Protobuf type {@code xtreemfs.pbrpc.unlink_osd_Request} + */ public static final class unlink_osd_Request extends - com.google.protobuf.GeneratedMessage { + com.google.protobuf.GeneratedMessage + implements unlink_osd_RequestOrBuilder { // Use unlink_osd_Request.newBuilder() to construct. - private unlink_osd_Request() { - initFields(); + private unlink_osd_Request(com.google.protobuf.GeneratedMessage.Builder builder) { + super(builder); + this.unknownFields = builder.getUnknownFields(); } - private unlink_osd_Request(boolean noInit) {} - + private unlink_osd_Request(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); } + private static final unlink_osd_Request defaultInstance; public static unlink_osd_Request getDefaultInstance() { return defaultInstance; } - + public unlink_osd_Request getDefaultInstanceForType() { return defaultInstance; } - + + private final com.google.protobuf.UnknownFieldSet unknownFields; + @java.lang.Override + public final com.google.protobuf.UnknownFieldSet + getUnknownFields() { + return this.unknownFields; + } + private unlink_osd_Request( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + initFields(); + int mutable_bitField0_ = 0; + com.google.protobuf.UnknownFieldSet.Builder unknownFields = + com.google.protobuf.UnknownFieldSet.newBuilder(); + try { + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch (tag) { + case 0: + done = true; + break; + default: { + if (!parseUnknownField(input, unknownFields, + extensionRegistry, tag)) { + done = true; + } + break; + } + case 10: { + org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials.Builder subBuilder = null; + if (((bitField0_ & 0x00000001) == 0x00000001)) { + subBuilder = fileCredentials_.toBuilder(); + } + fileCredentials_ = input.readMessage(org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials.PARSER, extensionRegistry); + if (subBuilder != null) { + subBuilder.mergeFrom(fileCredentials_); + fileCredentials_ = subBuilder.buildPartial(); + } + bitField0_ |= 0x00000001; + break; + } + case 18: { + bitField0_ |= 0x00000002; + fileId_ = input.readBytes(); + break; + } + } + } + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(this); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException( + e.getMessage()).setUnfinishedMessage(this); + } finally { + this.unknownFields = unknownFields.build(); + makeExtensionsImmutable(); + } + } public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { return org.xtreemfs.pbrpc.generatedinterfaces.OSD.internal_static_xtreemfs_pbrpc_unlink_osd_Request_descriptor; } - + protected com.google.protobuf.GeneratedMessage.FieldAccessorTable internalGetFieldAccessorTable() { - return org.xtreemfs.pbrpc.generatedinterfaces.OSD.internal_static_xtreemfs_pbrpc_unlink_osd_Request_fieldAccessorTable; + return org.xtreemfs.pbrpc.generatedinterfaces.OSD.internal_static_xtreemfs_pbrpc_unlink_osd_Request_fieldAccessorTable + .ensureFieldAccessorsInitialized( + org.xtreemfs.pbrpc.generatedinterfaces.OSD.unlink_osd_Request.class, org.xtreemfs.pbrpc.generatedinterfaces.OSD.unlink_osd_Request.Builder.class); + } + + public static com.google.protobuf.Parser PARSER = + new com.google.protobuf.AbstractParser() { + public unlink_osd_Request parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return new unlink_osd_Request(input, extensionRegistry); + } + }; + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; } - + + private int bitField0_; // required .xtreemfs.pbrpc.FileCredentials file_credentials = 1; public static final int FILE_CREDENTIALS_FIELD_NUMBER = 1; - private boolean hasFileCredentials; private org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials fileCredentials_; - public boolean hasFileCredentials() { return hasFileCredentials; } - public org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials getFileCredentials() { return fileCredentials_; } - + /** + * required .xtreemfs.pbrpc.FileCredentials file_credentials = 1; + */ + public boolean hasFileCredentials() { + return ((bitField0_ & 0x00000001) == 0x00000001); + } + /** + * required .xtreemfs.pbrpc.FileCredentials file_credentials = 1; + */ + public org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials getFileCredentials() { + return fileCredentials_; + } + /** + * required .xtreemfs.pbrpc.FileCredentials file_credentials = 1; + */ + public org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentialsOrBuilder getFileCredentialsOrBuilder() { + return fileCredentials_; + } + // required string file_id = 2; public static final int FILE_ID_FIELD_NUMBER = 2; - private boolean hasFileId; - private java.lang.String fileId_ = ""; - public boolean hasFileId() { return hasFileId; } - public java.lang.String getFileId() { return fileId_; } - + private java.lang.Object fileId_; + /** + * required string file_id = 2; + */ + public boolean hasFileId() { + return ((bitField0_ & 0x00000002) == 0x00000002); + } + /** + * required string file_id = 2; + */ + public java.lang.String getFileId() { + java.lang.Object ref = fileId_; + if (ref instanceof java.lang.String) { + return (java.lang.String) ref; + } else { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + if (bs.isValidUtf8()) { + fileId_ = s; + } + return s; + } + } + /** + * required string file_id = 2; + */ + public com.google.protobuf.ByteString + getFileIdBytes() { + java.lang.Object ref = fileId_; + if (ref instanceof java.lang.String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + fileId_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + private void initFields() { fileCredentials_ = org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials.getDefaultInstance(); + fileId_ = ""; } + private byte memoizedIsInitialized = -1; public final boolean isInitialized() { - if (!hasFileCredentials) return false; - if (!hasFileId) return false; - if (!getFileCredentials().isInitialized()) return false; + byte isInitialized = memoizedIsInitialized; + if (isInitialized != -1) return isInitialized == 1; + + if (!hasFileCredentials()) { + memoizedIsInitialized = 0; + return false; + } + if (!hasFileId()) { + memoizedIsInitialized = 0; + return false; + } + if (!getFileCredentials().isInitialized()) { + memoizedIsInitialized = 0; + return false; + } + memoizedIsInitialized = 1; return true; } - + public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException { getSerializedSize(); - if (hasFileCredentials()) { - output.writeMessage(1, getFileCredentials()); + if (((bitField0_ & 0x00000001) == 0x00000001)) { + output.writeMessage(1, fileCredentials_); } - if (hasFileId()) { - output.writeString(2, getFileId()); + if (((bitField0_ & 0x00000002) == 0x00000002)) { + output.writeBytes(2, getFileIdBytes()); } getUnknownFields().writeTo(output); } - + private int memoizedSerializedSize = -1; public int getSerializedSize() { int size = memoizedSerializedSize; if (size != -1) return size; - + size = 0; - if (hasFileCredentials()) { + if (((bitField0_ & 0x00000001) == 0x00000001)) { size += com.google.protobuf.CodedOutputStream - .computeMessageSize(1, getFileCredentials()); + .computeMessageSize(1, fileCredentials_); } - if (hasFileId()) { + if (((bitField0_ & 0x00000002) == 0x00000002)) { size += com.google.protobuf.CodedOutputStream - .computeStringSize(2, getFileId()); + .computeBytesSize(2, getFileIdBytes()); } size += getUnknownFields().getSerializedSize(); memoizedSerializedSize = size; return size; } - + + private static final long serialVersionUID = 0L; + @java.lang.Override + protected java.lang.Object writeReplace() + throws java.io.ObjectStreamException { + return super.writeReplace(); + } + public static org.xtreemfs.pbrpc.generatedinterfaces.OSD.unlink_osd_Request parseFrom( com.google.protobuf.ByteString data) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data).buildParsed(); + return PARSER.parseFrom(data); } public static org.xtreemfs.pbrpc.generatedinterfaces.OSD.unlink_osd_Request parseFrom( com.google.protobuf.ByteString data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(data, extensionRegistry); } public static org.xtreemfs.pbrpc.generatedinterfaces.OSD.unlink_osd_Request parseFrom(byte[] data) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data).buildParsed(); + return PARSER.parseFrom(data); } public static org.xtreemfs.pbrpc.generatedinterfaces.OSD.unlink_osd_Request parseFrom( byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(data, extensionRegistry); } public static org.xtreemfs.pbrpc.generatedinterfaces.OSD.unlink_osd_Request parseFrom(java.io.InputStream input) throws java.io.IOException { - return newBuilder().mergeFrom(input).buildParsed(); + return PARSER.parseFrom(input); } public static org.xtreemfs.pbrpc.generatedinterfaces.OSD.unlink_osd_Request parseFrom( java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - return newBuilder().mergeFrom(input, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(input, extensionRegistry); } public static org.xtreemfs.pbrpc.generatedinterfaces.OSD.unlink_osd_Request parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException { - Builder builder = newBuilder(); - if (builder.mergeDelimitedFrom(input)) { - return builder.buildParsed(); - } else { - return null; - } + return PARSER.parseDelimitedFrom(input); } public static org.xtreemfs.pbrpc.generatedinterfaces.OSD.unlink_osd_Request parseDelimitedFrom( java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - Builder builder = newBuilder(); - if (builder.mergeDelimitedFrom(input, extensionRegistry)) { - return builder.buildParsed(); - } else { - return null; - } + return PARSER.parseDelimitedFrom(input, extensionRegistry); } public static org.xtreemfs.pbrpc.generatedinterfaces.OSD.unlink_osd_Request parseFrom( com.google.protobuf.CodedInputStream input) throws java.io.IOException { - return newBuilder().mergeFrom(input).buildParsed(); + return PARSER.parseFrom(input); } public static org.xtreemfs.pbrpc.generatedinterfaces.OSD.unlink_osd_Request parseFrom( com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - return newBuilder().mergeFrom(input, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(input, extensionRegistry); } - + public static Builder newBuilder() { return Builder.create(); } public Builder newBuilderForType() { return newBuilder(); } public static Builder newBuilder(org.xtreemfs.pbrpc.generatedinterfaces.OSD.unlink_osd_Request prototype) { return newBuilder().mergeFrom(prototype); } public Builder toBuilder() { return newBuilder(this); } - + + @java.lang.Override + protected Builder newBuilderForType( + com.google.protobuf.GeneratedMessage.BuilderParent parent) { + Builder builder = new Builder(parent); + return builder; + } + /** + * Protobuf type {@code xtreemfs.pbrpc.unlink_osd_Request} + */ public static final class Builder extends - com.google.protobuf.GeneratedMessage.Builder { - private org.xtreemfs.pbrpc.generatedinterfaces.OSD.unlink_osd_Request result; - + com.google.protobuf.GeneratedMessage.Builder + implements org.xtreemfs.pbrpc.generatedinterfaces.OSD.unlink_osd_RequestOrBuilder { + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return org.xtreemfs.pbrpc.generatedinterfaces.OSD.internal_static_xtreemfs_pbrpc_unlink_osd_Request_descriptor; + } + + protected com.google.protobuf.GeneratedMessage.FieldAccessorTable + internalGetFieldAccessorTable() { + return org.xtreemfs.pbrpc.generatedinterfaces.OSD.internal_static_xtreemfs_pbrpc_unlink_osd_Request_fieldAccessorTable + .ensureFieldAccessorsInitialized( + org.xtreemfs.pbrpc.generatedinterfaces.OSD.unlink_osd_Request.class, org.xtreemfs.pbrpc.generatedinterfaces.OSD.unlink_osd_Request.Builder.class); + } + // Construct using org.xtreemfs.pbrpc.generatedinterfaces.OSD.unlink_osd_Request.newBuilder() - private Builder() {} - - private static Builder create() { - Builder builder = new Builder(); - builder.result = new org.xtreemfs.pbrpc.generatedinterfaces.OSD.unlink_osd_Request(); - return builder; + private Builder() { + maybeForceBuilderInitialization(); } - - protected org.xtreemfs.pbrpc.generatedinterfaces.OSD.unlink_osd_Request internalGetResult() { - return result; + + private Builder( + com.google.protobuf.GeneratedMessage.BuilderParent parent) { + super(parent); + maybeForceBuilderInitialization(); + } + private void maybeForceBuilderInitialization() { + if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) { + getFileCredentialsFieldBuilder(); + } + } + private static Builder create() { + return new Builder(); } - + public Builder clear() { - if (result == null) { - throw new IllegalStateException( - "Cannot call clear() after build()."); + super.clear(); + if (fileCredentialsBuilder_ == null) { + fileCredentials_ = org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials.getDefaultInstance(); + } else { + fileCredentialsBuilder_.clear(); } - result = new org.xtreemfs.pbrpc.generatedinterfaces.OSD.unlink_osd_Request(); + bitField0_ = (bitField0_ & ~0x00000001); + fileId_ = ""; + bitField0_ = (bitField0_ & ~0x00000002); return this; } - + public Builder clone() { - return create().mergeFrom(result); + return create().mergeFrom(buildPartial()); } - + public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() { - return org.xtreemfs.pbrpc.generatedinterfaces.OSD.unlink_osd_Request.getDescriptor(); + return org.xtreemfs.pbrpc.generatedinterfaces.OSD.internal_static_xtreemfs_pbrpc_unlink_osd_Request_descriptor; } - + public org.xtreemfs.pbrpc.generatedinterfaces.OSD.unlink_osd_Request getDefaultInstanceForType() { return org.xtreemfs.pbrpc.generatedinterfaces.OSD.unlink_osd_Request.getDefaultInstance(); } - - public boolean isInitialized() { - return result.isInitialized(); - } + public org.xtreemfs.pbrpc.generatedinterfaces.OSD.unlink_osd_Request build() { - if (result != null && !isInitialized()) { + org.xtreemfs.pbrpc.generatedinterfaces.OSD.unlink_osd_Request result = buildPartial(); + if (!result.isInitialized()) { throw newUninitializedMessageException(result); } - return buildPartial(); - } - - private org.xtreemfs.pbrpc.generatedinterfaces.OSD.unlink_osd_Request buildParsed() - throws com.google.protobuf.InvalidProtocolBufferException { - if (!isInitialized()) { - throw newUninitializedMessageException( - result).asInvalidProtocolBufferException(); - } - return buildPartial(); + return result; } - + public org.xtreemfs.pbrpc.generatedinterfaces.OSD.unlink_osd_Request buildPartial() { - if (result == null) { - throw new IllegalStateException( - "build() has already been called on this Builder."); + org.xtreemfs.pbrpc.generatedinterfaces.OSD.unlink_osd_Request result = new org.xtreemfs.pbrpc.generatedinterfaces.OSD.unlink_osd_Request(this); + int from_bitField0_ = bitField0_; + int to_bitField0_ = 0; + if (((from_bitField0_ & 0x00000001) == 0x00000001)) { + to_bitField0_ |= 0x00000001; + } + if (fileCredentialsBuilder_ == null) { + result.fileCredentials_ = fileCredentials_; + } else { + result.fileCredentials_ = fileCredentialsBuilder_.build(); + } + if (((from_bitField0_ & 0x00000002) == 0x00000002)) { + to_bitField0_ |= 0x00000002; } - org.xtreemfs.pbrpc.generatedinterfaces.OSD.unlink_osd_Request returnMe = result; - result = null; - return returnMe; + result.fileId_ = fileId_; + result.bitField0_ = to_bitField0_; + onBuilt(); + return result; } - + public Builder mergeFrom(com.google.protobuf.Message other) { if (other instanceof org.xtreemfs.pbrpc.generatedinterfaces.OSD.unlink_osd_Request) { return mergeFrom((org.xtreemfs.pbrpc.generatedinterfaces.OSD.unlink_osd_Request)other); @@ -5521,429 +11439,1053 @@ public final class OSD { return this; } } - + public Builder mergeFrom(org.xtreemfs.pbrpc.generatedinterfaces.OSD.unlink_osd_Request other) { if (other == org.xtreemfs.pbrpc.generatedinterfaces.OSD.unlink_osd_Request.getDefaultInstance()) return this; if (other.hasFileCredentials()) { mergeFileCredentials(other.getFileCredentials()); } if (other.hasFileId()) { - setFileId(other.getFileId()); + bitField0_ |= 0x00000002; + fileId_ = other.fileId_; + onChanged(); } - this.mergeUnknownFields(other.getUnknownFields()); - return this; - } - - public Builder mergeFrom( - com.google.protobuf.CodedInputStream input, - com.google.protobuf.ExtensionRegistryLite extensionRegistry) - throws java.io.IOException { - com.google.protobuf.UnknownFieldSet.Builder unknownFields = - com.google.protobuf.UnknownFieldSet.newBuilder( - this.getUnknownFields()); - while (true) { - int tag = input.readTag(); - switch (tag) { - case 0: - this.setUnknownFields(unknownFields.build()); - return this; - default: { - if (!parseUnknownField(input, unknownFields, - extensionRegistry, tag)) { - this.setUnknownFields(unknownFields.build()); - return this; - } - break; - } - case 10: { - org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials.Builder subBuilder = org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials.newBuilder(); - if (hasFileCredentials()) { - subBuilder.mergeFrom(getFileCredentials()); - } - input.readMessage(subBuilder, extensionRegistry); - setFileCredentials(subBuilder.buildPartial()); - break; - } - case 18: { - setFileId(input.readString()); - break; - } + this.mergeUnknownFields(other.getUnknownFields()); + return this; + } + + public final boolean isInitialized() { + if (!hasFileCredentials()) { + + return false; + } + if (!hasFileId()) { + + return false; + } + if (!getFileCredentials().isInitialized()) { + + return false; + } + return true; + } + + public Builder mergeFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + org.xtreemfs.pbrpc.generatedinterfaces.OSD.unlink_osd_Request parsedMessage = null; + try { + parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + parsedMessage = (org.xtreemfs.pbrpc.generatedinterfaces.OSD.unlink_osd_Request) e.getUnfinishedMessage(); + throw e; + } finally { + if (parsedMessage != null) { + mergeFrom(parsedMessage); } } + return this; } - - + private int bitField0_; + // required .xtreemfs.pbrpc.FileCredentials file_credentials = 1; + private org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials fileCredentials_ = org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials.getDefaultInstance(); + private com.google.protobuf.SingleFieldBuilder< + org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials, org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials.Builder, org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentialsOrBuilder> fileCredentialsBuilder_; + /** + * required .xtreemfs.pbrpc.FileCredentials file_credentials = 1; + */ public boolean hasFileCredentials() { - return result.hasFileCredentials(); + return ((bitField0_ & 0x00000001) == 0x00000001); } + /** + * required .xtreemfs.pbrpc.FileCredentials file_credentials = 1; + */ public org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials getFileCredentials() { - return result.getFileCredentials(); + if (fileCredentialsBuilder_ == null) { + return fileCredentials_; + } else { + return fileCredentialsBuilder_.getMessage(); + } } + /** + * required .xtreemfs.pbrpc.FileCredentials file_credentials = 1; + */ public Builder setFileCredentials(org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials value) { - if (value == null) { - throw new NullPointerException(); + if (fileCredentialsBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + fileCredentials_ = value; + onChanged(); + } else { + fileCredentialsBuilder_.setMessage(value); } - result.hasFileCredentials = true; - result.fileCredentials_ = value; + bitField0_ |= 0x00000001; return this; } - public Builder setFileCredentials(org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials.Builder builderForValue) { - result.hasFileCredentials = true; - result.fileCredentials_ = builderForValue.build(); + /** + * required .xtreemfs.pbrpc.FileCredentials file_credentials = 1; + */ + public Builder setFileCredentials( + org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials.Builder builderForValue) { + if (fileCredentialsBuilder_ == null) { + fileCredentials_ = builderForValue.build(); + onChanged(); + } else { + fileCredentialsBuilder_.setMessage(builderForValue.build()); + } + bitField0_ |= 0x00000001; return this; } + /** + * required .xtreemfs.pbrpc.FileCredentials file_credentials = 1; + */ public Builder mergeFileCredentials(org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials value) { - if (result.hasFileCredentials() && - result.fileCredentials_ != org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials.getDefaultInstance()) { - result.fileCredentials_ = - org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials.newBuilder(result.fileCredentials_).mergeFrom(value).buildPartial(); + if (fileCredentialsBuilder_ == null) { + if (((bitField0_ & 0x00000001) == 0x00000001) && + fileCredentials_ != org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials.getDefaultInstance()) { + fileCredentials_ = + org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials.newBuilder(fileCredentials_).mergeFrom(value).buildPartial(); + } else { + fileCredentials_ = value; + } + onChanged(); } else { - result.fileCredentials_ = value; + fileCredentialsBuilder_.mergeFrom(value); } - result.hasFileCredentials = true; + bitField0_ |= 0x00000001; return this; } + /** + * required .xtreemfs.pbrpc.FileCredentials file_credentials = 1; + */ public Builder clearFileCredentials() { - result.hasFileCredentials = false; - result.fileCredentials_ = org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials.getDefaultInstance(); + if (fileCredentialsBuilder_ == null) { + fileCredentials_ = org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials.getDefaultInstance(); + onChanged(); + } else { + fileCredentialsBuilder_.clear(); + } + bitField0_ = (bitField0_ & ~0x00000001); return this; } - + /** + * required .xtreemfs.pbrpc.FileCredentials file_credentials = 1; + */ + public org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials.Builder getFileCredentialsBuilder() { + bitField0_ |= 0x00000001; + onChanged(); + return getFileCredentialsFieldBuilder().getBuilder(); + } + /** + * required .xtreemfs.pbrpc.FileCredentials file_credentials = 1; + */ + public org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentialsOrBuilder getFileCredentialsOrBuilder() { + if (fileCredentialsBuilder_ != null) { + return fileCredentialsBuilder_.getMessageOrBuilder(); + } else { + return fileCredentials_; + } + } + /** + * required .xtreemfs.pbrpc.FileCredentials file_credentials = 1; + */ + private com.google.protobuf.SingleFieldBuilder< + org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials, org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials.Builder, org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentialsOrBuilder> + getFileCredentialsFieldBuilder() { + if (fileCredentialsBuilder_ == null) { + fileCredentialsBuilder_ = new com.google.protobuf.SingleFieldBuilder< + org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials, org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials.Builder, org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentialsOrBuilder>( + fileCredentials_, + getParentForChildren(), + isClean()); + fileCredentials_ = null; + } + return fileCredentialsBuilder_; + } + // required string file_id = 2; + private java.lang.Object fileId_ = ""; + /** + * required string file_id = 2; + */ public boolean hasFileId() { - return result.hasFileId(); + return ((bitField0_ & 0x00000002) == 0x00000002); } + /** + * required string file_id = 2; + */ public java.lang.String getFileId() { - return result.getFileId(); + java.lang.Object ref = fileId_; + if (!(ref instanceof java.lang.String)) { + java.lang.String s = ((com.google.protobuf.ByteString) ref) + .toStringUtf8(); + fileId_ = s; + return s; + } else { + return (java.lang.String) ref; + } + } + /** + * required string file_id = 2; + */ + public com.google.protobuf.ByteString + getFileIdBytes() { + java.lang.Object ref = fileId_; + if (ref instanceof String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + fileId_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } } - public Builder setFileId(java.lang.String value) { + /** + * required string file_id = 2; + */ + public Builder setFileId( + java.lang.String value) { if (value == null) { throw new NullPointerException(); } - result.hasFileId = true; - result.fileId_ = value; + bitField0_ |= 0x00000002; + fileId_ = value; + onChanged(); return this; } + /** + * required string file_id = 2; + */ public Builder clearFileId() { - result.hasFileId = false; - result.fileId_ = getDefaultInstance().getFileId(); + bitField0_ = (bitField0_ & ~0x00000002); + fileId_ = getDefaultInstance().getFileId(); + onChanged(); + return this; + } + /** + * required string file_id = 2; + */ + public Builder setFileIdBytes( + com.google.protobuf.ByteString value) { + if (value == null) { + throw new NullPointerException(); + } + bitField0_ |= 0x00000002; + fileId_ = value; + onChanged(); return this; } - + // @@protoc_insertion_point(builder_scope:xtreemfs.pbrpc.unlink_osd_Request) } - + static { defaultInstance = new unlink_osd_Request(true); - org.xtreemfs.pbrpc.generatedinterfaces.OSD.internalForceInit(); defaultInstance.initFields(); } - + // @@protoc_insertion_point(class_scope:xtreemfs.pbrpc.unlink_osd_Request) } - + + public interface writeRequestOrBuilder + extends com.google.protobuf.MessageOrBuilder { + + // required .xtreemfs.pbrpc.FileCredentials file_credentials = 1; + /** + * required .xtreemfs.pbrpc.FileCredentials file_credentials = 1; + */ + boolean hasFileCredentials(); + /** + * required .xtreemfs.pbrpc.FileCredentials file_credentials = 1; + */ + org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials getFileCredentials(); + /** + * required .xtreemfs.pbrpc.FileCredentials file_credentials = 1; + */ + org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentialsOrBuilder getFileCredentialsOrBuilder(); + + // required string file_id = 2; + /** + * required string file_id = 2; + */ + boolean hasFileId(); + /** + * required string file_id = 2; + */ + java.lang.String getFileId(); + /** + * required string file_id = 2; + */ + com.google.protobuf.ByteString + getFileIdBytes(); + + // required fixed64 object_number = 3; + /** + * required fixed64 object_number = 3; + * + *
+     * Object number starting at 0.
+     * 
+ */ + boolean hasObjectNumber(); + /** + * required fixed64 object_number = 3; + * + *
+     * Object number starting at 0.
+     * 
+ */ + long getObjectNumber(); + + // required fixed64 object_version = 4; + /** + * required fixed64 object_version = 4; + * + *
+     * Version, currently ignored.
+     * 
+ */ + boolean hasObjectVersion(); + /** + * required fixed64 object_version = 4; + * + *
+     * Version, currently ignored.
+     * 
+ */ + long getObjectVersion(); + + // required fixed32 offset = 5; + /** + * required fixed32 offset = 5; + * + *
+     * Offset within the object.
+     * 
+ */ + boolean hasOffset(); + /** + * required fixed32 offset = 5; + * + *
+     * Offset within the object.
+     * 
+ */ + int getOffset(); + + // required fixed64 lease_timeout = 6; + /** + * required fixed64 lease_timeout = 6; + * + *
+     * Timeout of the client lease, if set.
+     * Reserved for client-side-caching, currently not used.
+     * 
+ */ + boolean hasLeaseTimeout(); + /** + * required fixed64 lease_timeout = 6; + * + *
+     * Timeout of the client lease, if set.
+     * Reserved for client-side-caching, currently not used.
+     * 
+ */ + long getLeaseTimeout(); + + // required .xtreemfs.pbrpc.ObjectData object_data = 7; + /** + * required .xtreemfs.pbrpc.ObjectData object_data = 7; + * + *
+     * Only the checksum of ObjectData is used.
+     * 
+ */ + boolean hasObjectData(); + /** + * required .xtreemfs.pbrpc.ObjectData object_data = 7; + * + *
+     * Only the checksum of ObjectData is used.
+     * 
+ */ + org.xtreemfs.pbrpc.generatedinterfaces.OSD.ObjectData getObjectData(); + /** + * required .xtreemfs.pbrpc.ObjectData object_data = 7; + * + *
+     * Only the checksum of ObjectData is used.
+     * 
+ */ + org.xtreemfs.pbrpc.generatedinterfaces.OSD.ObjectDataOrBuilder getObjectDataOrBuilder(); + } + /** + * Protobuf type {@code xtreemfs.pbrpc.writeRequest} + */ public static final class writeRequest extends - com.google.protobuf.GeneratedMessage { + com.google.protobuf.GeneratedMessage + implements writeRequestOrBuilder { // Use writeRequest.newBuilder() to construct. - private writeRequest() { - initFields(); + private writeRequest(com.google.protobuf.GeneratedMessage.Builder builder) { + super(builder); + this.unknownFields = builder.getUnknownFields(); } - private writeRequest(boolean noInit) {} - + private writeRequest(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); } + private static final writeRequest defaultInstance; public static writeRequest getDefaultInstance() { return defaultInstance; } - + public writeRequest getDefaultInstanceForType() { return defaultInstance; } - + + private final com.google.protobuf.UnknownFieldSet unknownFields; + @java.lang.Override + public final com.google.protobuf.UnknownFieldSet + getUnknownFields() { + return this.unknownFields; + } + private writeRequest( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + initFields(); + int mutable_bitField0_ = 0; + com.google.protobuf.UnknownFieldSet.Builder unknownFields = + com.google.protobuf.UnknownFieldSet.newBuilder(); + try { + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch (tag) { + case 0: + done = true; + break; + default: { + if (!parseUnknownField(input, unknownFields, + extensionRegistry, tag)) { + done = true; + } + break; + } + case 10: { + org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials.Builder subBuilder = null; + if (((bitField0_ & 0x00000001) == 0x00000001)) { + subBuilder = fileCredentials_.toBuilder(); + } + fileCredentials_ = input.readMessage(org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials.PARSER, extensionRegistry); + if (subBuilder != null) { + subBuilder.mergeFrom(fileCredentials_); + fileCredentials_ = subBuilder.buildPartial(); + } + bitField0_ |= 0x00000001; + break; + } + case 18: { + bitField0_ |= 0x00000002; + fileId_ = input.readBytes(); + break; + } + case 25: { + bitField0_ |= 0x00000004; + objectNumber_ = input.readFixed64(); + break; + } + case 33: { + bitField0_ |= 0x00000008; + objectVersion_ = input.readFixed64(); + break; + } + case 45: { + bitField0_ |= 0x00000010; + offset_ = input.readFixed32(); + break; + } + case 49: { + bitField0_ |= 0x00000020; + leaseTimeout_ = input.readFixed64(); + break; + } + case 58: { + org.xtreemfs.pbrpc.generatedinterfaces.OSD.ObjectData.Builder subBuilder = null; + if (((bitField0_ & 0x00000040) == 0x00000040)) { + subBuilder = objectData_.toBuilder(); + } + objectData_ = input.readMessage(org.xtreemfs.pbrpc.generatedinterfaces.OSD.ObjectData.PARSER, extensionRegistry); + if (subBuilder != null) { + subBuilder.mergeFrom(objectData_); + objectData_ = subBuilder.buildPartial(); + } + bitField0_ |= 0x00000040; + break; + } + } + } + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(this); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException( + e.getMessage()).setUnfinishedMessage(this); + } finally { + this.unknownFields = unknownFields.build(); + makeExtensionsImmutable(); + } + } public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { return org.xtreemfs.pbrpc.generatedinterfaces.OSD.internal_static_xtreemfs_pbrpc_writeRequest_descriptor; } - + protected com.google.protobuf.GeneratedMessage.FieldAccessorTable internalGetFieldAccessorTable() { - return org.xtreemfs.pbrpc.generatedinterfaces.OSD.internal_static_xtreemfs_pbrpc_writeRequest_fieldAccessorTable; + return org.xtreemfs.pbrpc.generatedinterfaces.OSD.internal_static_xtreemfs_pbrpc_writeRequest_fieldAccessorTable + .ensureFieldAccessorsInitialized( + org.xtreemfs.pbrpc.generatedinterfaces.OSD.writeRequest.class, org.xtreemfs.pbrpc.generatedinterfaces.OSD.writeRequest.Builder.class); + } + + public static com.google.protobuf.Parser PARSER = + new com.google.protobuf.AbstractParser() { + public writeRequest parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return new writeRequest(input, extensionRegistry); + } + }; + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; } - + + private int bitField0_; // required .xtreemfs.pbrpc.FileCredentials file_credentials = 1; public static final int FILE_CREDENTIALS_FIELD_NUMBER = 1; - private boolean hasFileCredentials; private org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials fileCredentials_; - public boolean hasFileCredentials() { return hasFileCredentials; } - public org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials getFileCredentials() { return fileCredentials_; } - + /** + * required .xtreemfs.pbrpc.FileCredentials file_credentials = 1; + */ + public boolean hasFileCredentials() { + return ((bitField0_ & 0x00000001) == 0x00000001); + } + /** + * required .xtreemfs.pbrpc.FileCredentials file_credentials = 1; + */ + public org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials getFileCredentials() { + return fileCredentials_; + } + /** + * required .xtreemfs.pbrpc.FileCredentials file_credentials = 1; + */ + public org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentialsOrBuilder getFileCredentialsOrBuilder() { + return fileCredentials_; + } + // required string file_id = 2; public static final int FILE_ID_FIELD_NUMBER = 2; - private boolean hasFileId; - private java.lang.String fileId_ = ""; - public boolean hasFileId() { return hasFileId; } - public java.lang.String getFileId() { return fileId_; } - + private java.lang.Object fileId_; + /** + * required string file_id = 2; + */ + public boolean hasFileId() { + return ((bitField0_ & 0x00000002) == 0x00000002); + } + /** + * required string file_id = 2; + */ + public java.lang.String getFileId() { + java.lang.Object ref = fileId_; + if (ref instanceof java.lang.String) { + return (java.lang.String) ref; + } else { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + if (bs.isValidUtf8()) { + fileId_ = s; + } + return s; + } + } + /** + * required string file_id = 2; + */ + public com.google.protobuf.ByteString + getFileIdBytes() { + java.lang.Object ref = fileId_; + if (ref instanceof java.lang.String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + fileId_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + // required fixed64 object_number = 3; public static final int OBJECT_NUMBER_FIELD_NUMBER = 3; - private boolean hasObjectNumber; - private long objectNumber_ = 0L; - public boolean hasObjectNumber() { return hasObjectNumber; } - public long getObjectNumber() { return objectNumber_; } - + private long objectNumber_; + /** + * required fixed64 object_number = 3; + * + *
+     * Object number starting at 0.
+     * 
+ */ + public boolean hasObjectNumber() { + return ((bitField0_ & 0x00000004) == 0x00000004); + } + /** + * required fixed64 object_number = 3; + * + *
+     * Object number starting at 0.
+     * 
+ */ + public long getObjectNumber() { + return objectNumber_; + } + // required fixed64 object_version = 4; public static final int OBJECT_VERSION_FIELD_NUMBER = 4; - private boolean hasObjectVersion; - private long objectVersion_ = 0L; - public boolean hasObjectVersion() { return hasObjectVersion; } - public long getObjectVersion() { return objectVersion_; } - + private long objectVersion_; + /** + * required fixed64 object_version = 4; + * + *
+     * Version, currently ignored.
+     * 
+ */ + public boolean hasObjectVersion() { + return ((bitField0_ & 0x00000008) == 0x00000008); + } + /** + * required fixed64 object_version = 4; + * + *
+     * Version, currently ignored.
+     * 
+ */ + public long getObjectVersion() { + return objectVersion_; + } + // required fixed32 offset = 5; public static final int OFFSET_FIELD_NUMBER = 5; - private boolean hasOffset; - private int offset_ = 0; - public boolean hasOffset() { return hasOffset; } - public int getOffset() { return offset_; } - + private int offset_; + /** + * required fixed32 offset = 5; + * + *
+     * Offset within the object.
+     * 
+ */ + public boolean hasOffset() { + return ((bitField0_ & 0x00000010) == 0x00000010); + } + /** + * required fixed32 offset = 5; + * + *
+     * Offset within the object.
+     * 
+ */ + public int getOffset() { + return offset_; + } + // required fixed64 lease_timeout = 6; public static final int LEASE_TIMEOUT_FIELD_NUMBER = 6; - private boolean hasLeaseTimeout; - private long leaseTimeout_ = 0L; - public boolean hasLeaseTimeout() { return hasLeaseTimeout; } - public long getLeaseTimeout() { return leaseTimeout_; } - + private long leaseTimeout_; + /** + * required fixed64 lease_timeout = 6; + * + *
+     * Timeout of the client lease, if set.
+     * Reserved for client-side-caching, currently not used.
+     * 
+ */ + public boolean hasLeaseTimeout() { + return ((bitField0_ & 0x00000020) == 0x00000020); + } + /** + * required fixed64 lease_timeout = 6; + * + *
+     * Timeout of the client lease, if set.
+     * Reserved for client-side-caching, currently not used.
+     * 
+ */ + public long getLeaseTimeout() { + return leaseTimeout_; + } + // required .xtreemfs.pbrpc.ObjectData object_data = 7; public static final int OBJECT_DATA_FIELD_NUMBER = 7; - private boolean hasObjectData; private org.xtreemfs.pbrpc.generatedinterfaces.OSD.ObjectData objectData_; - public boolean hasObjectData() { return hasObjectData; } - public org.xtreemfs.pbrpc.generatedinterfaces.OSD.ObjectData getObjectData() { return objectData_; } - + /** + * required .xtreemfs.pbrpc.ObjectData object_data = 7; + * + *
+     * Only the checksum of ObjectData is used.
+     * 
+ */ + public boolean hasObjectData() { + return ((bitField0_ & 0x00000040) == 0x00000040); + } + /** + * required .xtreemfs.pbrpc.ObjectData object_data = 7; + * + *
+     * Only the checksum of ObjectData is used.
+     * 
+ */ + public org.xtreemfs.pbrpc.generatedinterfaces.OSD.ObjectData getObjectData() { + return objectData_; + } + /** + * required .xtreemfs.pbrpc.ObjectData object_data = 7; + * + *
+     * Only the checksum of ObjectData is used.
+     * 
+ */ + public org.xtreemfs.pbrpc.generatedinterfaces.OSD.ObjectDataOrBuilder getObjectDataOrBuilder() { + return objectData_; + } + private void initFields() { fileCredentials_ = org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials.getDefaultInstance(); + fileId_ = ""; + objectNumber_ = 0L; + objectVersion_ = 0L; + offset_ = 0; + leaseTimeout_ = 0L; objectData_ = org.xtreemfs.pbrpc.generatedinterfaces.OSD.ObjectData.getDefaultInstance(); } + private byte memoizedIsInitialized = -1; public final boolean isInitialized() { - if (!hasFileCredentials) return false; - if (!hasFileId) return false; - if (!hasObjectNumber) return false; - if (!hasObjectVersion) return false; - if (!hasOffset) return false; - if (!hasLeaseTimeout) return false; - if (!hasObjectData) return false; - if (!getFileCredentials().isInitialized()) return false; - if (!getObjectData().isInitialized()) return false; + byte isInitialized = memoizedIsInitialized; + if (isInitialized != -1) return isInitialized == 1; + + if (!hasFileCredentials()) { + memoizedIsInitialized = 0; + return false; + } + if (!hasFileId()) { + memoizedIsInitialized = 0; + return false; + } + if (!hasObjectNumber()) { + memoizedIsInitialized = 0; + return false; + } + if (!hasObjectVersion()) { + memoizedIsInitialized = 0; + return false; + } + if (!hasOffset()) { + memoizedIsInitialized = 0; + return false; + } + if (!hasLeaseTimeout()) { + memoizedIsInitialized = 0; + return false; + } + if (!hasObjectData()) { + memoizedIsInitialized = 0; + return false; + } + if (!getFileCredentials().isInitialized()) { + memoizedIsInitialized = 0; + return false; + } + if (!getObjectData().isInitialized()) { + memoizedIsInitialized = 0; + return false; + } + memoizedIsInitialized = 1; return true; } - + public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException { getSerializedSize(); - if (hasFileCredentials()) { - output.writeMessage(1, getFileCredentials()); + if (((bitField0_ & 0x00000001) == 0x00000001)) { + output.writeMessage(1, fileCredentials_); } - if (hasFileId()) { - output.writeString(2, getFileId()); + if (((bitField0_ & 0x00000002) == 0x00000002)) { + output.writeBytes(2, getFileIdBytes()); } - if (hasObjectNumber()) { - output.writeFixed64(3, getObjectNumber()); + if (((bitField0_ & 0x00000004) == 0x00000004)) { + output.writeFixed64(3, objectNumber_); } - if (hasObjectVersion()) { - output.writeFixed64(4, getObjectVersion()); + if (((bitField0_ & 0x00000008) == 0x00000008)) { + output.writeFixed64(4, objectVersion_); } - if (hasOffset()) { - output.writeFixed32(5, getOffset()); + if (((bitField0_ & 0x00000010) == 0x00000010)) { + output.writeFixed32(5, offset_); } - if (hasLeaseTimeout()) { - output.writeFixed64(6, getLeaseTimeout()); + if (((bitField0_ & 0x00000020) == 0x00000020)) { + output.writeFixed64(6, leaseTimeout_); } - if (hasObjectData()) { - output.writeMessage(7, getObjectData()); + if (((bitField0_ & 0x00000040) == 0x00000040)) { + output.writeMessage(7, objectData_); } getUnknownFields().writeTo(output); } - + private int memoizedSerializedSize = -1; public int getSerializedSize() { int size = memoizedSerializedSize; if (size != -1) return size; - + size = 0; - if (hasFileCredentials()) { + if (((bitField0_ & 0x00000001) == 0x00000001)) { size += com.google.protobuf.CodedOutputStream - .computeMessageSize(1, getFileCredentials()); + .computeMessageSize(1, fileCredentials_); } - if (hasFileId()) { + if (((bitField0_ & 0x00000002) == 0x00000002)) { size += com.google.protobuf.CodedOutputStream - .computeStringSize(2, getFileId()); + .computeBytesSize(2, getFileIdBytes()); } - if (hasObjectNumber()) { + if (((bitField0_ & 0x00000004) == 0x00000004)) { size += com.google.protobuf.CodedOutputStream - .computeFixed64Size(3, getObjectNumber()); + .computeFixed64Size(3, objectNumber_); } - if (hasObjectVersion()) { + if (((bitField0_ & 0x00000008) == 0x00000008)) { size += com.google.protobuf.CodedOutputStream - .computeFixed64Size(4, getObjectVersion()); + .computeFixed64Size(4, objectVersion_); } - if (hasOffset()) { + if (((bitField0_ & 0x00000010) == 0x00000010)) { size += com.google.protobuf.CodedOutputStream - .computeFixed32Size(5, getOffset()); + .computeFixed32Size(5, offset_); } - if (hasLeaseTimeout()) { + if (((bitField0_ & 0x00000020) == 0x00000020)) { size += com.google.protobuf.CodedOutputStream - .computeFixed64Size(6, getLeaseTimeout()); + .computeFixed64Size(6, leaseTimeout_); } - if (hasObjectData()) { + if (((bitField0_ & 0x00000040) == 0x00000040)) { size += com.google.protobuf.CodedOutputStream - .computeMessageSize(7, getObjectData()); + .computeMessageSize(7, objectData_); } size += getUnknownFields().getSerializedSize(); memoizedSerializedSize = size; return size; } - + + private static final long serialVersionUID = 0L; + @java.lang.Override + protected java.lang.Object writeReplace() + throws java.io.ObjectStreamException { + return super.writeReplace(); + } + public static org.xtreemfs.pbrpc.generatedinterfaces.OSD.writeRequest parseFrom( com.google.protobuf.ByteString data) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data).buildParsed(); + return PARSER.parseFrom(data); } public static org.xtreemfs.pbrpc.generatedinterfaces.OSD.writeRequest parseFrom( com.google.protobuf.ByteString data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(data, extensionRegistry); } public static org.xtreemfs.pbrpc.generatedinterfaces.OSD.writeRequest parseFrom(byte[] data) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data).buildParsed(); + return PARSER.parseFrom(data); } public static org.xtreemfs.pbrpc.generatedinterfaces.OSD.writeRequest parseFrom( byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(data, extensionRegistry); } public static org.xtreemfs.pbrpc.generatedinterfaces.OSD.writeRequest parseFrom(java.io.InputStream input) throws java.io.IOException { - return newBuilder().mergeFrom(input).buildParsed(); + return PARSER.parseFrom(input); } public static org.xtreemfs.pbrpc.generatedinterfaces.OSD.writeRequest parseFrom( java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - return newBuilder().mergeFrom(input, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(input, extensionRegistry); } public static org.xtreemfs.pbrpc.generatedinterfaces.OSD.writeRequest parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException { - Builder builder = newBuilder(); - if (builder.mergeDelimitedFrom(input)) { - return builder.buildParsed(); - } else { - return null; - } + return PARSER.parseDelimitedFrom(input); } public static org.xtreemfs.pbrpc.generatedinterfaces.OSD.writeRequest parseDelimitedFrom( java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - Builder builder = newBuilder(); - if (builder.mergeDelimitedFrom(input, extensionRegistry)) { - return builder.buildParsed(); - } else { - return null; - } + return PARSER.parseDelimitedFrom(input, extensionRegistry); } public static org.xtreemfs.pbrpc.generatedinterfaces.OSD.writeRequest parseFrom( com.google.protobuf.CodedInputStream input) throws java.io.IOException { - return newBuilder().mergeFrom(input).buildParsed(); + return PARSER.parseFrom(input); } public static org.xtreemfs.pbrpc.generatedinterfaces.OSD.writeRequest parseFrom( com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - return newBuilder().mergeFrom(input, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(input, extensionRegistry); } - + public static Builder newBuilder() { return Builder.create(); } public Builder newBuilderForType() { return newBuilder(); } public static Builder newBuilder(org.xtreemfs.pbrpc.generatedinterfaces.OSD.writeRequest prototype) { return newBuilder().mergeFrom(prototype); } public Builder toBuilder() { return newBuilder(this); } - + + @java.lang.Override + protected Builder newBuilderForType( + com.google.protobuf.GeneratedMessage.BuilderParent parent) { + Builder builder = new Builder(parent); + return builder; + } + /** + * Protobuf type {@code xtreemfs.pbrpc.writeRequest} + */ public static final class Builder extends - com.google.protobuf.GeneratedMessage.Builder { - private org.xtreemfs.pbrpc.generatedinterfaces.OSD.writeRequest result; - + com.google.protobuf.GeneratedMessage.Builder + implements org.xtreemfs.pbrpc.generatedinterfaces.OSD.writeRequestOrBuilder { + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return org.xtreemfs.pbrpc.generatedinterfaces.OSD.internal_static_xtreemfs_pbrpc_writeRequest_descriptor; + } + + protected com.google.protobuf.GeneratedMessage.FieldAccessorTable + internalGetFieldAccessorTable() { + return org.xtreemfs.pbrpc.generatedinterfaces.OSD.internal_static_xtreemfs_pbrpc_writeRequest_fieldAccessorTable + .ensureFieldAccessorsInitialized( + org.xtreemfs.pbrpc.generatedinterfaces.OSD.writeRequest.class, org.xtreemfs.pbrpc.generatedinterfaces.OSD.writeRequest.Builder.class); + } + // Construct using org.xtreemfs.pbrpc.generatedinterfaces.OSD.writeRequest.newBuilder() - private Builder() {} - - private static Builder create() { - Builder builder = new Builder(); - builder.result = new org.xtreemfs.pbrpc.generatedinterfaces.OSD.writeRequest(); - return builder; + private Builder() { + maybeForceBuilderInitialization(); } - - protected org.xtreemfs.pbrpc.generatedinterfaces.OSD.writeRequest internalGetResult() { - return result; + + private Builder( + com.google.protobuf.GeneratedMessage.BuilderParent parent) { + super(parent); + maybeForceBuilderInitialization(); + } + private void maybeForceBuilderInitialization() { + if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) { + getFileCredentialsFieldBuilder(); + getObjectDataFieldBuilder(); + } + } + private static Builder create() { + return new Builder(); } - + public Builder clear() { - if (result == null) { - throw new IllegalStateException( - "Cannot call clear() after build()."); + super.clear(); + if (fileCredentialsBuilder_ == null) { + fileCredentials_ = org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials.getDefaultInstance(); + } else { + fileCredentialsBuilder_.clear(); + } + bitField0_ = (bitField0_ & ~0x00000001); + fileId_ = ""; + bitField0_ = (bitField0_ & ~0x00000002); + objectNumber_ = 0L; + bitField0_ = (bitField0_ & ~0x00000004); + objectVersion_ = 0L; + bitField0_ = (bitField0_ & ~0x00000008); + offset_ = 0; + bitField0_ = (bitField0_ & ~0x00000010); + leaseTimeout_ = 0L; + bitField0_ = (bitField0_ & ~0x00000020); + if (objectDataBuilder_ == null) { + objectData_ = org.xtreemfs.pbrpc.generatedinterfaces.OSD.ObjectData.getDefaultInstance(); + } else { + objectDataBuilder_.clear(); } - result = new org.xtreemfs.pbrpc.generatedinterfaces.OSD.writeRequest(); + bitField0_ = (bitField0_ & ~0x00000040); return this; } - + public Builder clone() { - return create().mergeFrom(result); + return create().mergeFrom(buildPartial()); } - + public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() { - return org.xtreemfs.pbrpc.generatedinterfaces.OSD.writeRequest.getDescriptor(); + return org.xtreemfs.pbrpc.generatedinterfaces.OSD.internal_static_xtreemfs_pbrpc_writeRequest_descriptor; } - + public org.xtreemfs.pbrpc.generatedinterfaces.OSD.writeRequest getDefaultInstanceForType() { return org.xtreemfs.pbrpc.generatedinterfaces.OSD.writeRequest.getDefaultInstance(); } - - public boolean isInitialized() { - return result.isInitialized(); - } + public org.xtreemfs.pbrpc.generatedinterfaces.OSD.writeRequest build() { - if (result != null && !isInitialized()) { + org.xtreemfs.pbrpc.generatedinterfaces.OSD.writeRequest result = buildPartial(); + if (!result.isInitialized()) { throw newUninitializedMessageException(result); } - return buildPartial(); - } - - private org.xtreemfs.pbrpc.generatedinterfaces.OSD.writeRequest buildParsed() - throws com.google.protobuf.InvalidProtocolBufferException { - if (!isInitialized()) { - throw newUninitializedMessageException( - result).asInvalidProtocolBufferException(); - } - return buildPartial(); + return result; } - + public org.xtreemfs.pbrpc.generatedinterfaces.OSD.writeRequest buildPartial() { - if (result == null) { - throw new IllegalStateException( - "build() has already been called on this Builder."); + org.xtreemfs.pbrpc.generatedinterfaces.OSD.writeRequest result = new org.xtreemfs.pbrpc.generatedinterfaces.OSD.writeRequest(this); + int from_bitField0_ = bitField0_; + int to_bitField0_ = 0; + if (((from_bitField0_ & 0x00000001) == 0x00000001)) { + to_bitField0_ |= 0x00000001; + } + if (fileCredentialsBuilder_ == null) { + result.fileCredentials_ = fileCredentials_; + } else { + result.fileCredentials_ = fileCredentialsBuilder_.build(); + } + if (((from_bitField0_ & 0x00000002) == 0x00000002)) { + to_bitField0_ |= 0x00000002; + } + result.fileId_ = fileId_; + if (((from_bitField0_ & 0x00000004) == 0x00000004)) { + to_bitField0_ |= 0x00000004; + } + result.objectNumber_ = objectNumber_; + if (((from_bitField0_ & 0x00000008) == 0x00000008)) { + to_bitField0_ |= 0x00000008; } - org.xtreemfs.pbrpc.generatedinterfaces.OSD.writeRequest returnMe = result; - result = null; - return returnMe; + result.objectVersion_ = objectVersion_; + if (((from_bitField0_ & 0x00000010) == 0x00000010)) { + to_bitField0_ |= 0x00000010; + } + result.offset_ = offset_; + if (((from_bitField0_ & 0x00000020) == 0x00000020)) { + to_bitField0_ |= 0x00000020; + } + result.leaseTimeout_ = leaseTimeout_; + if (((from_bitField0_ & 0x00000040) == 0x00000040)) { + to_bitField0_ |= 0x00000040; + } + if (objectDataBuilder_ == null) { + result.objectData_ = objectData_; + } else { + result.objectData_ = objectDataBuilder_.build(); + } + result.bitField0_ = to_bitField0_; + onBuilt(); + return result; } - + public Builder mergeFrom(com.google.protobuf.Message other) { if (other instanceof org.xtreemfs.pbrpc.generatedinterfaces.OSD.writeRequest) { return mergeFrom((org.xtreemfs.pbrpc.generatedinterfaces.OSD.writeRequest)other); @@ -5952,14 +12494,16 @@ public final class OSD { return this; } } - + public Builder mergeFrom(org.xtreemfs.pbrpc.generatedinterfaces.OSD.writeRequest other) { if (other == org.xtreemfs.pbrpc.generatedinterfaces.OSD.writeRequest.getDefaultInstance()) return this; if (other.hasFileCredentials()) { mergeFileCredentials(other.getFileCredentials()); } if (other.hasFileId()) { - setFileId(other.getFileId()); + bitField0_ |= 0x00000002; + fileId_ = other.fileId_; + onChanged(); } if (other.hasObjectNumber()) { setObjectNumber(other.getObjectNumber()); @@ -5979,502 +12523,1125 @@ public final class OSD { this.mergeUnknownFields(other.getUnknownFields()); return this; } - + + public final boolean isInitialized() { + if (!hasFileCredentials()) { + + return false; + } + if (!hasFileId()) { + + return false; + } + if (!hasObjectNumber()) { + + return false; + } + if (!hasObjectVersion()) { + + return false; + } + if (!hasOffset()) { + + return false; + } + if (!hasLeaseTimeout()) { + + return false; + } + if (!hasObjectData()) { + + return false; + } + if (!getFileCredentials().isInitialized()) { + + return false; + } + if (!getObjectData().isInitialized()) { + + return false; + } + return true; + } + public Builder mergeFrom( com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - com.google.protobuf.UnknownFieldSet.Builder unknownFields = - com.google.protobuf.UnknownFieldSet.newBuilder( - this.getUnknownFields()); - while (true) { - int tag = input.readTag(); - switch (tag) { - case 0: - this.setUnknownFields(unknownFields.build()); - return this; - default: { - if (!parseUnknownField(input, unknownFields, - extensionRegistry, tag)) { - this.setUnknownFields(unknownFields.build()); - return this; - } - break; - } - case 10: { - org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials.Builder subBuilder = org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials.newBuilder(); - if (hasFileCredentials()) { - subBuilder.mergeFrom(getFileCredentials()); - } - input.readMessage(subBuilder, extensionRegistry); - setFileCredentials(subBuilder.buildPartial()); - break; - } - case 18: { - setFileId(input.readString()); - break; - } - case 25: { - setObjectNumber(input.readFixed64()); - break; - } - case 33: { - setObjectVersion(input.readFixed64()); - break; - } - case 45: { - setOffset(input.readFixed32()); - break; - } - case 49: { - setLeaseTimeout(input.readFixed64()); - break; - } - case 58: { - org.xtreemfs.pbrpc.generatedinterfaces.OSD.ObjectData.Builder subBuilder = org.xtreemfs.pbrpc.generatedinterfaces.OSD.ObjectData.newBuilder(); - if (hasObjectData()) { - subBuilder.mergeFrom(getObjectData()); - } - input.readMessage(subBuilder, extensionRegistry); - setObjectData(subBuilder.buildPartial()); - break; - } + org.xtreemfs.pbrpc.generatedinterfaces.OSD.writeRequest parsedMessage = null; + try { + parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + parsedMessage = (org.xtreemfs.pbrpc.generatedinterfaces.OSD.writeRequest) e.getUnfinishedMessage(); + throw e; + } finally { + if (parsedMessage != null) { + mergeFrom(parsedMessage); } } + return this; } - - + private int bitField0_; + // required .xtreemfs.pbrpc.FileCredentials file_credentials = 1; + private org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials fileCredentials_ = org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials.getDefaultInstance(); + private com.google.protobuf.SingleFieldBuilder< + org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials, org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials.Builder, org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentialsOrBuilder> fileCredentialsBuilder_; + /** + * required .xtreemfs.pbrpc.FileCredentials file_credentials = 1; + */ public boolean hasFileCredentials() { - return result.hasFileCredentials(); + return ((bitField0_ & 0x00000001) == 0x00000001); } + /** + * required .xtreemfs.pbrpc.FileCredentials file_credentials = 1; + */ public org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials getFileCredentials() { - return result.getFileCredentials(); + if (fileCredentialsBuilder_ == null) { + return fileCredentials_; + } else { + return fileCredentialsBuilder_.getMessage(); + } } + /** + * required .xtreemfs.pbrpc.FileCredentials file_credentials = 1; + */ public Builder setFileCredentials(org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials value) { - if (value == null) { - throw new NullPointerException(); + if (fileCredentialsBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + fileCredentials_ = value; + onChanged(); + } else { + fileCredentialsBuilder_.setMessage(value); } - result.hasFileCredentials = true; - result.fileCredentials_ = value; + bitField0_ |= 0x00000001; return this; } - public Builder setFileCredentials(org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials.Builder builderForValue) { - result.hasFileCredentials = true; - result.fileCredentials_ = builderForValue.build(); + /** + * required .xtreemfs.pbrpc.FileCredentials file_credentials = 1; + */ + public Builder setFileCredentials( + org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials.Builder builderForValue) { + if (fileCredentialsBuilder_ == null) { + fileCredentials_ = builderForValue.build(); + onChanged(); + } else { + fileCredentialsBuilder_.setMessage(builderForValue.build()); + } + bitField0_ |= 0x00000001; return this; } + /** + * required .xtreemfs.pbrpc.FileCredentials file_credentials = 1; + */ public Builder mergeFileCredentials(org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials value) { - if (result.hasFileCredentials() && - result.fileCredentials_ != org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials.getDefaultInstance()) { - result.fileCredentials_ = - org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials.newBuilder(result.fileCredentials_).mergeFrom(value).buildPartial(); + if (fileCredentialsBuilder_ == null) { + if (((bitField0_ & 0x00000001) == 0x00000001) && + fileCredentials_ != org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials.getDefaultInstance()) { + fileCredentials_ = + org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials.newBuilder(fileCredentials_).mergeFrom(value).buildPartial(); + } else { + fileCredentials_ = value; + } + onChanged(); } else { - result.fileCredentials_ = value; + fileCredentialsBuilder_.mergeFrom(value); } - result.hasFileCredentials = true; + bitField0_ |= 0x00000001; return this; } + /** + * required .xtreemfs.pbrpc.FileCredentials file_credentials = 1; + */ public Builder clearFileCredentials() { - result.hasFileCredentials = false; - result.fileCredentials_ = org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials.getDefaultInstance(); + if (fileCredentialsBuilder_ == null) { + fileCredentials_ = org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials.getDefaultInstance(); + onChanged(); + } else { + fileCredentialsBuilder_.clear(); + } + bitField0_ = (bitField0_ & ~0x00000001); return this; } - + /** + * required .xtreemfs.pbrpc.FileCredentials file_credentials = 1; + */ + public org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials.Builder getFileCredentialsBuilder() { + bitField0_ |= 0x00000001; + onChanged(); + return getFileCredentialsFieldBuilder().getBuilder(); + } + /** + * required .xtreemfs.pbrpc.FileCredentials file_credentials = 1; + */ + public org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentialsOrBuilder getFileCredentialsOrBuilder() { + if (fileCredentialsBuilder_ != null) { + return fileCredentialsBuilder_.getMessageOrBuilder(); + } else { + return fileCredentials_; + } + } + /** + * required .xtreemfs.pbrpc.FileCredentials file_credentials = 1; + */ + private com.google.protobuf.SingleFieldBuilder< + org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials, org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials.Builder, org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentialsOrBuilder> + getFileCredentialsFieldBuilder() { + if (fileCredentialsBuilder_ == null) { + fileCredentialsBuilder_ = new com.google.protobuf.SingleFieldBuilder< + org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials, org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials.Builder, org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentialsOrBuilder>( + fileCredentials_, + getParentForChildren(), + isClean()); + fileCredentials_ = null; + } + return fileCredentialsBuilder_; + } + // required string file_id = 2; + private java.lang.Object fileId_ = ""; + /** + * required string file_id = 2; + */ public boolean hasFileId() { - return result.hasFileId(); + return ((bitField0_ & 0x00000002) == 0x00000002); } + /** + * required string file_id = 2; + */ public java.lang.String getFileId() { - return result.getFileId(); + java.lang.Object ref = fileId_; + if (!(ref instanceof java.lang.String)) { + java.lang.String s = ((com.google.protobuf.ByteString) ref) + .toStringUtf8(); + fileId_ = s; + return s; + } else { + return (java.lang.String) ref; + } + } + /** + * required string file_id = 2; + */ + public com.google.protobuf.ByteString + getFileIdBytes() { + java.lang.Object ref = fileId_; + if (ref instanceof String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + fileId_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } } - public Builder setFileId(java.lang.String value) { + /** + * required string file_id = 2; + */ + public Builder setFileId( + java.lang.String value) { if (value == null) { throw new NullPointerException(); } - result.hasFileId = true; - result.fileId_ = value; + bitField0_ |= 0x00000002; + fileId_ = value; + onChanged(); return this; } + /** + * required string file_id = 2; + */ public Builder clearFileId() { - result.hasFileId = false; - result.fileId_ = getDefaultInstance().getFileId(); + bitField0_ = (bitField0_ & ~0x00000002); + fileId_ = getDefaultInstance().getFileId(); + onChanged(); + return this; + } + /** + * required string file_id = 2; + */ + public Builder setFileIdBytes( + com.google.protobuf.ByteString value) { + if (value == null) { + throw new NullPointerException(); + } + bitField0_ |= 0x00000002; + fileId_ = value; + onChanged(); return this; } - + // required fixed64 object_number = 3; + private long objectNumber_ ; + /** + * required fixed64 object_number = 3; + * + *
+       * Object number starting at 0.
+       * 
+ */ public boolean hasObjectNumber() { - return result.hasObjectNumber(); - } + return ((bitField0_ & 0x00000004) == 0x00000004); + } + /** + * required fixed64 object_number = 3; + * + *
+       * Object number starting at 0.
+       * 
+ */ public long getObjectNumber() { - return result.getObjectNumber(); - } + return objectNumber_; + } + /** + * required fixed64 object_number = 3; + * + *
+       * Object number starting at 0.
+       * 
+ */ public Builder setObjectNumber(long value) { - result.hasObjectNumber = true; - result.objectNumber_ = value; - return this; - } + bitField0_ |= 0x00000004; + objectNumber_ = value; + onChanged(); + return this; + } + /** + * required fixed64 object_number = 3; + * + *
+       * Object number starting at 0.
+       * 
+ */ public Builder clearObjectNumber() { - result.hasObjectNumber = false; - result.objectNumber_ = 0L; + bitField0_ = (bitField0_ & ~0x00000004); + objectNumber_ = 0L; + onChanged(); return this; } - + // required fixed64 object_version = 4; + private long objectVersion_ ; + /** + * required fixed64 object_version = 4; + * + *
+       * Version, currently ignored.
+       * 
+ */ public boolean hasObjectVersion() { - return result.hasObjectVersion(); - } + return ((bitField0_ & 0x00000008) == 0x00000008); + } + /** + * required fixed64 object_version = 4; + * + *
+       * Version, currently ignored.
+       * 
+ */ public long getObjectVersion() { - return result.getObjectVersion(); - } + return objectVersion_; + } + /** + * required fixed64 object_version = 4; + * + *
+       * Version, currently ignored.
+       * 
+ */ public Builder setObjectVersion(long value) { - result.hasObjectVersion = true; - result.objectVersion_ = value; - return this; - } + bitField0_ |= 0x00000008; + objectVersion_ = value; + onChanged(); + return this; + } + /** + * required fixed64 object_version = 4; + * + *
+       * Version, currently ignored.
+       * 
+ */ public Builder clearObjectVersion() { - result.hasObjectVersion = false; - result.objectVersion_ = 0L; + bitField0_ = (bitField0_ & ~0x00000008); + objectVersion_ = 0L; + onChanged(); return this; } - + // required fixed32 offset = 5; + private int offset_ ; + /** + * required fixed32 offset = 5; + * + *
+       * Offset within the object.
+       * 
+ */ public boolean hasOffset() { - return result.hasOffset(); - } + return ((bitField0_ & 0x00000010) == 0x00000010); + } + /** + * required fixed32 offset = 5; + * + *
+       * Offset within the object.
+       * 
+ */ public int getOffset() { - return result.getOffset(); - } + return offset_; + } + /** + * required fixed32 offset = 5; + * + *
+       * Offset within the object.
+       * 
+ */ public Builder setOffset(int value) { - result.hasOffset = true; - result.offset_ = value; - return this; - } + bitField0_ |= 0x00000010; + offset_ = value; + onChanged(); + return this; + } + /** + * required fixed32 offset = 5; + * + *
+       * Offset within the object.
+       * 
+ */ public Builder clearOffset() { - result.hasOffset = false; - result.offset_ = 0; + bitField0_ = (bitField0_ & ~0x00000010); + offset_ = 0; + onChanged(); return this; } - + // required fixed64 lease_timeout = 6; + private long leaseTimeout_ ; + /** + * required fixed64 lease_timeout = 6; + * + *
+       * Timeout of the client lease, if set.
+       * Reserved for client-side-caching, currently not used.
+       * 
+ */ public boolean hasLeaseTimeout() { - return result.hasLeaseTimeout(); - } + return ((bitField0_ & 0x00000020) == 0x00000020); + } + /** + * required fixed64 lease_timeout = 6; + * + *
+       * Timeout of the client lease, if set.
+       * Reserved for client-side-caching, currently not used.
+       * 
+ */ public long getLeaseTimeout() { - return result.getLeaseTimeout(); - } + return leaseTimeout_; + } + /** + * required fixed64 lease_timeout = 6; + * + *
+       * Timeout of the client lease, if set.
+       * Reserved for client-side-caching, currently not used.
+       * 
+ */ public Builder setLeaseTimeout(long value) { - result.hasLeaseTimeout = true; - result.leaseTimeout_ = value; - return this; - } + bitField0_ |= 0x00000020; + leaseTimeout_ = value; + onChanged(); + return this; + } + /** + * required fixed64 lease_timeout = 6; + * + *
+       * Timeout of the client lease, if set.
+       * Reserved for client-side-caching, currently not used.
+       * 
+ */ public Builder clearLeaseTimeout() { - result.hasLeaseTimeout = false; - result.leaseTimeout_ = 0L; + bitField0_ = (bitField0_ & ~0x00000020); + leaseTimeout_ = 0L; + onChanged(); return this; } - + // required .xtreemfs.pbrpc.ObjectData object_data = 7; + private org.xtreemfs.pbrpc.generatedinterfaces.OSD.ObjectData objectData_ = org.xtreemfs.pbrpc.generatedinterfaces.OSD.ObjectData.getDefaultInstance(); + private com.google.protobuf.SingleFieldBuilder< + org.xtreemfs.pbrpc.generatedinterfaces.OSD.ObjectData, org.xtreemfs.pbrpc.generatedinterfaces.OSD.ObjectData.Builder, org.xtreemfs.pbrpc.generatedinterfaces.OSD.ObjectDataOrBuilder> objectDataBuilder_; + /** + * required .xtreemfs.pbrpc.ObjectData object_data = 7; + * + *
+       * Only the checksum of ObjectData is used.
+       * 
+ */ public boolean hasObjectData() { - return result.hasObjectData(); - } + return ((bitField0_ & 0x00000040) == 0x00000040); + } + /** + * required .xtreemfs.pbrpc.ObjectData object_data = 7; + * + *
+       * Only the checksum of ObjectData is used.
+       * 
+ */ public org.xtreemfs.pbrpc.generatedinterfaces.OSD.ObjectData getObjectData() { - return result.getObjectData(); + if (objectDataBuilder_ == null) { + return objectData_; + } else { + return objectDataBuilder_.getMessage(); + } } + /** + * required .xtreemfs.pbrpc.ObjectData object_data = 7; + * + *
+       * Only the checksum of ObjectData is used.
+       * 
+ */ public Builder setObjectData(org.xtreemfs.pbrpc.generatedinterfaces.OSD.ObjectData value) { - if (value == null) { - throw new NullPointerException(); + if (objectDataBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + objectData_ = value; + onChanged(); + } else { + objectDataBuilder_.setMessage(value); + } + bitField0_ |= 0x00000040; + return this; + } + /** + * required .xtreemfs.pbrpc.ObjectData object_data = 7; + * + *
+       * Only the checksum of ObjectData is used.
+       * 
+ */ + public Builder setObjectData( + org.xtreemfs.pbrpc.generatedinterfaces.OSD.ObjectData.Builder builderForValue) { + if (objectDataBuilder_ == null) { + objectData_ = builderForValue.build(); + onChanged(); + } else { + objectDataBuilder_.setMessage(builderForValue.build()); } - result.hasObjectData = true; - result.objectData_ = value; - return this; - } - public Builder setObjectData(org.xtreemfs.pbrpc.generatedinterfaces.OSD.ObjectData.Builder builderForValue) { - result.hasObjectData = true; - result.objectData_ = builderForValue.build(); + bitField0_ |= 0x00000040; return this; } + /** + * required .xtreemfs.pbrpc.ObjectData object_data = 7; + * + *
+       * Only the checksum of ObjectData is used.
+       * 
+ */ public Builder mergeObjectData(org.xtreemfs.pbrpc.generatedinterfaces.OSD.ObjectData value) { - if (result.hasObjectData() && - result.objectData_ != org.xtreemfs.pbrpc.generatedinterfaces.OSD.ObjectData.getDefaultInstance()) { - result.objectData_ = - org.xtreemfs.pbrpc.generatedinterfaces.OSD.ObjectData.newBuilder(result.objectData_).mergeFrom(value).buildPartial(); + if (objectDataBuilder_ == null) { + if (((bitField0_ & 0x00000040) == 0x00000040) && + objectData_ != org.xtreemfs.pbrpc.generatedinterfaces.OSD.ObjectData.getDefaultInstance()) { + objectData_ = + org.xtreemfs.pbrpc.generatedinterfaces.OSD.ObjectData.newBuilder(objectData_).mergeFrom(value).buildPartial(); + } else { + objectData_ = value; + } + onChanged(); } else { - result.objectData_ = value; + objectDataBuilder_.mergeFrom(value); } - result.hasObjectData = true; + bitField0_ |= 0x00000040; return this; } + /** + * required .xtreemfs.pbrpc.ObjectData object_data = 7; + * + *
+       * Only the checksum of ObjectData is used.
+       * 
+ */ public Builder clearObjectData() { - result.hasObjectData = false; - result.objectData_ = org.xtreemfs.pbrpc.generatedinterfaces.OSD.ObjectData.getDefaultInstance(); - return this; + if (objectDataBuilder_ == null) { + objectData_ = org.xtreemfs.pbrpc.generatedinterfaces.OSD.ObjectData.getDefaultInstance(); + onChanged(); + } else { + objectDataBuilder_.clear(); + } + bitField0_ = (bitField0_ & ~0x00000040); + return this; + } + /** + * required .xtreemfs.pbrpc.ObjectData object_data = 7; + * + *
+       * Only the checksum of ObjectData is used.
+       * 
+ */ + public org.xtreemfs.pbrpc.generatedinterfaces.OSD.ObjectData.Builder getObjectDataBuilder() { + bitField0_ |= 0x00000040; + onChanged(); + return getObjectDataFieldBuilder().getBuilder(); + } + /** + * required .xtreemfs.pbrpc.ObjectData object_data = 7; + * + *
+       * Only the checksum of ObjectData is used.
+       * 
+ */ + public org.xtreemfs.pbrpc.generatedinterfaces.OSD.ObjectDataOrBuilder getObjectDataOrBuilder() { + if (objectDataBuilder_ != null) { + return objectDataBuilder_.getMessageOrBuilder(); + } else { + return objectData_; + } + } + /** + * required .xtreemfs.pbrpc.ObjectData object_data = 7; + * + *
+       * Only the checksum of ObjectData is used.
+       * 
+ */ + private com.google.protobuf.SingleFieldBuilder< + org.xtreemfs.pbrpc.generatedinterfaces.OSD.ObjectData, org.xtreemfs.pbrpc.generatedinterfaces.OSD.ObjectData.Builder, org.xtreemfs.pbrpc.generatedinterfaces.OSD.ObjectDataOrBuilder> + getObjectDataFieldBuilder() { + if (objectDataBuilder_ == null) { + objectDataBuilder_ = new com.google.protobuf.SingleFieldBuilder< + org.xtreemfs.pbrpc.generatedinterfaces.OSD.ObjectData, org.xtreemfs.pbrpc.generatedinterfaces.OSD.ObjectData.Builder, org.xtreemfs.pbrpc.generatedinterfaces.OSD.ObjectDataOrBuilder>( + objectData_, + getParentForChildren(), + isClean()); + objectData_ = null; + } + return objectDataBuilder_; } - + // @@protoc_insertion_point(builder_scope:xtreemfs.pbrpc.writeRequest) } - + static { defaultInstance = new writeRequest(true); - org.xtreemfs.pbrpc.generatedinterfaces.OSD.internalForceInit(); defaultInstance.initFields(); } - + // @@protoc_insertion_point(class_scope:xtreemfs.pbrpc.writeRequest) } - + + public interface xtreemfs_broadcast_gmaxRequestOrBuilder + extends com.google.protobuf.MessageOrBuilder { + + // required string file_id = 1; + /** + * required string file_id = 1; + */ + boolean hasFileId(); + /** + * required string file_id = 1; + */ + java.lang.String getFileId(); + /** + * required string file_id = 1; + */ + com.google.protobuf.ByteString + getFileIdBytes(); + + // required fixed64 truncate_epoch = 2; + /** + * required fixed64 truncate_epoch = 2; + */ + boolean hasTruncateEpoch(); + /** + * required fixed64 truncate_epoch = 2; + */ + long getTruncateEpoch(); + + // required fixed64 last_object = 3; + /** + * required fixed64 last_object = 3; + */ + boolean hasLastObject(); + /** + * required fixed64 last_object = 3; + */ + long getLastObject(); + + // required fixed64 file_size = 4; + /** + * required fixed64 file_size = 4; + */ + boolean hasFileSize(); + /** + * required fixed64 file_size = 4; + */ + long getFileSize(); + } + /** + * Protobuf type {@code xtreemfs.pbrpc.xtreemfs_broadcast_gmaxRequest} + * + *
+   * Internal message sent between OSDs of a striped file.
+   * Transmitted via UDP.
+   * 
+ */ public static final class xtreemfs_broadcast_gmaxRequest extends - com.google.protobuf.GeneratedMessage { + com.google.protobuf.GeneratedMessage + implements xtreemfs_broadcast_gmaxRequestOrBuilder { // Use xtreemfs_broadcast_gmaxRequest.newBuilder() to construct. - private xtreemfs_broadcast_gmaxRequest() { - initFields(); + private xtreemfs_broadcast_gmaxRequest(com.google.protobuf.GeneratedMessage.Builder builder) { + super(builder); + this.unknownFields = builder.getUnknownFields(); } - private xtreemfs_broadcast_gmaxRequest(boolean noInit) {} - + private xtreemfs_broadcast_gmaxRequest(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); } + private static final xtreemfs_broadcast_gmaxRequest defaultInstance; public static xtreemfs_broadcast_gmaxRequest getDefaultInstance() { return defaultInstance; } - + public xtreemfs_broadcast_gmaxRequest getDefaultInstanceForType() { return defaultInstance; } - + + private final com.google.protobuf.UnknownFieldSet unknownFields; + @java.lang.Override + public final com.google.protobuf.UnknownFieldSet + getUnknownFields() { + return this.unknownFields; + } + private xtreemfs_broadcast_gmaxRequest( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + initFields(); + int mutable_bitField0_ = 0; + com.google.protobuf.UnknownFieldSet.Builder unknownFields = + com.google.protobuf.UnknownFieldSet.newBuilder(); + try { + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch (tag) { + case 0: + done = true; + break; + default: { + if (!parseUnknownField(input, unknownFields, + extensionRegistry, tag)) { + done = true; + } + break; + } + case 10: { + bitField0_ |= 0x00000001; + fileId_ = input.readBytes(); + break; + } + case 17: { + bitField0_ |= 0x00000002; + truncateEpoch_ = input.readFixed64(); + break; + } + case 25: { + bitField0_ |= 0x00000004; + lastObject_ = input.readFixed64(); + break; + } + case 33: { + bitField0_ |= 0x00000008; + fileSize_ = input.readFixed64(); + break; + } + } + } + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(this); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException( + e.getMessage()).setUnfinishedMessage(this); + } finally { + this.unknownFields = unknownFields.build(); + makeExtensionsImmutable(); + } + } public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { return org.xtreemfs.pbrpc.generatedinterfaces.OSD.internal_static_xtreemfs_pbrpc_xtreemfs_broadcast_gmaxRequest_descriptor; } - + protected com.google.protobuf.GeneratedMessage.FieldAccessorTable internalGetFieldAccessorTable() { - return org.xtreemfs.pbrpc.generatedinterfaces.OSD.internal_static_xtreemfs_pbrpc_xtreemfs_broadcast_gmaxRequest_fieldAccessorTable; + return org.xtreemfs.pbrpc.generatedinterfaces.OSD.internal_static_xtreemfs_pbrpc_xtreemfs_broadcast_gmaxRequest_fieldAccessorTable + .ensureFieldAccessorsInitialized( + org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_broadcast_gmaxRequest.class, org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_broadcast_gmaxRequest.Builder.class); + } + + public static com.google.protobuf.Parser PARSER = + new com.google.protobuf.AbstractParser() { + public xtreemfs_broadcast_gmaxRequest parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return new xtreemfs_broadcast_gmaxRequest(input, extensionRegistry); + } + }; + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; } - + + private int bitField0_; // required string file_id = 1; public static final int FILE_ID_FIELD_NUMBER = 1; - private boolean hasFileId; - private java.lang.String fileId_ = ""; - public boolean hasFileId() { return hasFileId; } - public java.lang.String getFileId() { return fileId_; } - + private java.lang.Object fileId_; + /** + * required string file_id = 1; + */ + public boolean hasFileId() { + return ((bitField0_ & 0x00000001) == 0x00000001); + } + /** + * required string file_id = 1; + */ + public java.lang.String getFileId() { + java.lang.Object ref = fileId_; + if (ref instanceof java.lang.String) { + return (java.lang.String) ref; + } else { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + if (bs.isValidUtf8()) { + fileId_ = s; + } + return s; + } + } + /** + * required string file_id = 1; + */ + public com.google.protobuf.ByteString + getFileIdBytes() { + java.lang.Object ref = fileId_; + if (ref instanceof java.lang.String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + fileId_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + // required fixed64 truncate_epoch = 2; public static final int TRUNCATE_EPOCH_FIELD_NUMBER = 2; - private boolean hasTruncateEpoch; - private long truncateEpoch_ = 0L; - public boolean hasTruncateEpoch() { return hasTruncateEpoch; } - public long getTruncateEpoch() { return truncateEpoch_; } - + private long truncateEpoch_; + /** + * required fixed64 truncate_epoch = 2; + */ + public boolean hasTruncateEpoch() { + return ((bitField0_ & 0x00000002) == 0x00000002); + } + /** + * required fixed64 truncate_epoch = 2; + */ + public long getTruncateEpoch() { + return truncateEpoch_; + } + // required fixed64 last_object = 3; public static final int LAST_OBJECT_FIELD_NUMBER = 3; - private boolean hasLastObject; - private long lastObject_ = 0L; - public boolean hasLastObject() { return hasLastObject; } - public long getLastObject() { return lastObject_; } - + private long lastObject_; + /** + * required fixed64 last_object = 3; + */ + public boolean hasLastObject() { + return ((bitField0_ & 0x00000004) == 0x00000004); + } + /** + * required fixed64 last_object = 3; + */ + public long getLastObject() { + return lastObject_; + } + // required fixed64 file_size = 4; public static final int FILE_SIZE_FIELD_NUMBER = 4; - private boolean hasFileSize; - private long fileSize_ = 0L; - public boolean hasFileSize() { return hasFileSize; } - public long getFileSize() { return fileSize_; } - + private long fileSize_; + /** + * required fixed64 file_size = 4; + */ + public boolean hasFileSize() { + return ((bitField0_ & 0x00000008) == 0x00000008); + } + /** + * required fixed64 file_size = 4; + */ + public long getFileSize() { + return fileSize_; + } + private void initFields() { + fileId_ = ""; + truncateEpoch_ = 0L; + lastObject_ = 0L; + fileSize_ = 0L; } + private byte memoizedIsInitialized = -1; public final boolean isInitialized() { - if (!hasFileId) return false; - if (!hasTruncateEpoch) return false; - if (!hasLastObject) return false; - if (!hasFileSize) return false; + byte isInitialized = memoizedIsInitialized; + if (isInitialized != -1) return isInitialized == 1; + + if (!hasFileId()) { + memoizedIsInitialized = 0; + return false; + } + if (!hasTruncateEpoch()) { + memoizedIsInitialized = 0; + return false; + } + if (!hasLastObject()) { + memoizedIsInitialized = 0; + return false; + } + if (!hasFileSize()) { + memoizedIsInitialized = 0; + return false; + } + memoizedIsInitialized = 1; return true; } - + public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException { getSerializedSize(); - if (hasFileId()) { - output.writeString(1, getFileId()); + if (((bitField0_ & 0x00000001) == 0x00000001)) { + output.writeBytes(1, getFileIdBytes()); } - if (hasTruncateEpoch()) { - output.writeFixed64(2, getTruncateEpoch()); + if (((bitField0_ & 0x00000002) == 0x00000002)) { + output.writeFixed64(2, truncateEpoch_); } - if (hasLastObject()) { - output.writeFixed64(3, getLastObject()); + if (((bitField0_ & 0x00000004) == 0x00000004)) { + output.writeFixed64(3, lastObject_); } - if (hasFileSize()) { - output.writeFixed64(4, getFileSize()); + if (((bitField0_ & 0x00000008) == 0x00000008)) { + output.writeFixed64(4, fileSize_); } getUnknownFields().writeTo(output); } - + private int memoizedSerializedSize = -1; public int getSerializedSize() { int size = memoizedSerializedSize; if (size != -1) return size; - + size = 0; - if (hasFileId()) { + if (((bitField0_ & 0x00000001) == 0x00000001)) { size += com.google.protobuf.CodedOutputStream - .computeStringSize(1, getFileId()); + .computeBytesSize(1, getFileIdBytes()); } - if (hasTruncateEpoch()) { + if (((bitField0_ & 0x00000002) == 0x00000002)) { size += com.google.protobuf.CodedOutputStream - .computeFixed64Size(2, getTruncateEpoch()); + .computeFixed64Size(2, truncateEpoch_); } - if (hasLastObject()) { + if (((bitField0_ & 0x00000004) == 0x00000004)) { size += com.google.protobuf.CodedOutputStream - .computeFixed64Size(3, getLastObject()); + .computeFixed64Size(3, lastObject_); } - if (hasFileSize()) { + if (((bitField0_ & 0x00000008) == 0x00000008)) { size += com.google.protobuf.CodedOutputStream - .computeFixed64Size(4, getFileSize()); + .computeFixed64Size(4, fileSize_); } size += getUnknownFields().getSerializedSize(); memoizedSerializedSize = size; return size; } - + + private static final long serialVersionUID = 0L; + @java.lang.Override + protected java.lang.Object writeReplace() + throws java.io.ObjectStreamException { + return super.writeReplace(); + } + public static org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_broadcast_gmaxRequest parseFrom( com.google.protobuf.ByteString data) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data).buildParsed(); + return PARSER.parseFrom(data); } public static org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_broadcast_gmaxRequest parseFrom( com.google.protobuf.ByteString data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(data, extensionRegistry); } public static org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_broadcast_gmaxRequest parseFrom(byte[] data) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data).buildParsed(); + return PARSER.parseFrom(data); } public static org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_broadcast_gmaxRequest parseFrom( byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(data, extensionRegistry); } public static org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_broadcast_gmaxRequest parseFrom(java.io.InputStream input) throws java.io.IOException { - return newBuilder().mergeFrom(input).buildParsed(); + return PARSER.parseFrom(input); } public static org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_broadcast_gmaxRequest parseFrom( java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - return newBuilder().mergeFrom(input, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(input, extensionRegistry); } public static org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_broadcast_gmaxRequest parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException { - Builder builder = newBuilder(); - if (builder.mergeDelimitedFrom(input)) { - return builder.buildParsed(); - } else { - return null; - } + return PARSER.parseDelimitedFrom(input); } public static org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_broadcast_gmaxRequest parseDelimitedFrom( java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - Builder builder = newBuilder(); - if (builder.mergeDelimitedFrom(input, extensionRegistry)) { - return builder.buildParsed(); - } else { - return null; - } + return PARSER.parseDelimitedFrom(input, extensionRegistry); } public static org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_broadcast_gmaxRequest parseFrom( com.google.protobuf.CodedInputStream input) throws java.io.IOException { - return newBuilder().mergeFrom(input).buildParsed(); + return PARSER.parseFrom(input); } public static org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_broadcast_gmaxRequest parseFrom( com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - return newBuilder().mergeFrom(input, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(input, extensionRegistry); } - + public static Builder newBuilder() { return Builder.create(); } public Builder newBuilderForType() { return newBuilder(); } public static Builder newBuilder(org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_broadcast_gmaxRequest prototype) { return newBuilder().mergeFrom(prototype); } public Builder toBuilder() { return newBuilder(this); } - + + @java.lang.Override + protected Builder newBuilderForType( + com.google.protobuf.GeneratedMessage.BuilderParent parent) { + Builder builder = new Builder(parent); + return builder; + } + /** + * Protobuf type {@code xtreemfs.pbrpc.xtreemfs_broadcast_gmaxRequest} + * + *
+     * Internal message sent between OSDs of a striped file.
+     * Transmitted via UDP.
+     * 
+ */ public static final class Builder extends - com.google.protobuf.GeneratedMessage.Builder { - private org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_broadcast_gmaxRequest result; - + com.google.protobuf.GeneratedMessage.Builder + implements org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_broadcast_gmaxRequestOrBuilder { + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return org.xtreemfs.pbrpc.generatedinterfaces.OSD.internal_static_xtreemfs_pbrpc_xtreemfs_broadcast_gmaxRequest_descriptor; + } + + protected com.google.protobuf.GeneratedMessage.FieldAccessorTable + internalGetFieldAccessorTable() { + return org.xtreemfs.pbrpc.generatedinterfaces.OSD.internal_static_xtreemfs_pbrpc_xtreemfs_broadcast_gmaxRequest_fieldAccessorTable + .ensureFieldAccessorsInitialized( + org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_broadcast_gmaxRequest.class, org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_broadcast_gmaxRequest.Builder.class); + } + // Construct using org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_broadcast_gmaxRequest.newBuilder() - private Builder() {} - - private static Builder create() { - Builder builder = new Builder(); - builder.result = new org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_broadcast_gmaxRequest(); - return builder; + private Builder() { + maybeForceBuilderInitialization(); } - - protected org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_broadcast_gmaxRequest internalGetResult() { - return result; + + private Builder( + com.google.protobuf.GeneratedMessage.BuilderParent parent) { + super(parent); + maybeForceBuilderInitialization(); } - - public Builder clear() { - if (result == null) { - throw new IllegalStateException( - "Cannot call clear() after build()."); + private void maybeForceBuilderInitialization() { + if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) { } - result = new org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_broadcast_gmaxRequest(); + } + private static Builder create() { + return new Builder(); + } + + public Builder clear() { + super.clear(); + fileId_ = ""; + bitField0_ = (bitField0_ & ~0x00000001); + truncateEpoch_ = 0L; + bitField0_ = (bitField0_ & ~0x00000002); + lastObject_ = 0L; + bitField0_ = (bitField0_ & ~0x00000004); + fileSize_ = 0L; + bitField0_ = (bitField0_ & ~0x00000008); return this; } - + public Builder clone() { - return create().mergeFrom(result); + return create().mergeFrom(buildPartial()); } - + public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() { - return org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_broadcast_gmaxRequest.getDescriptor(); + return org.xtreemfs.pbrpc.generatedinterfaces.OSD.internal_static_xtreemfs_pbrpc_xtreemfs_broadcast_gmaxRequest_descriptor; } - + public org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_broadcast_gmaxRequest getDefaultInstanceForType() { return org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_broadcast_gmaxRequest.getDefaultInstance(); } - - public boolean isInitialized() { - return result.isInitialized(); - } + public org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_broadcast_gmaxRequest build() { - if (result != null && !isInitialized()) { + org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_broadcast_gmaxRequest result = buildPartial(); + if (!result.isInitialized()) { throw newUninitializedMessageException(result); } - return buildPartial(); - } - - private org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_broadcast_gmaxRequest buildParsed() - throws com.google.protobuf.InvalidProtocolBufferException { - if (!isInitialized()) { - throw newUninitializedMessageException( - result).asInvalidProtocolBufferException(); - } - return buildPartial(); + return result; } - + public org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_broadcast_gmaxRequest buildPartial() { - if (result == null) { - throw new IllegalStateException( - "build() has already been called on this Builder."); - } - org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_broadcast_gmaxRequest returnMe = result; - result = null; - return returnMe; + org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_broadcast_gmaxRequest result = new org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_broadcast_gmaxRequest(this); + int from_bitField0_ = bitField0_; + int to_bitField0_ = 0; + if (((from_bitField0_ & 0x00000001) == 0x00000001)) { + to_bitField0_ |= 0x00000001; + } + result.fileId_ = fileId_; + if (((from_bitField0_ & 0x00000002) == 0x00000002)) { + to_bitField0_ |= 0x00000002; + } + result.truncateEpoch_ = truncateEpoch_; + if (((from_bitField0_ & 0x00000004) == 0x00000004)) { + to_bitField0_ |= 0x00000004; + } + result.lastObject_ = lastObject_; + if (((from_bitField0_ & 0x00000008) == 0x00000008)) { + to_bitField0_ |= 0x00000008; + } + result.fileSize_ = fileSize_; + result.bitField0_ = to_bitField0_; + onBuilt(); + return result; } - + public Builder mergeFrom(com.google.protobuf.Message other) { if (other instanceof org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_broadcast_gmaxRequest) { return mergeFrom((org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_broadcast_gmaxRequest)other); @@ -6483,11 +13650,13 @@ public final class OSD { return this; } } - + public Builder mergeFrom(org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_broadcast_gmaxRequest other) { if (other == org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_broadcast_gmaxRequest.getDefaultInstance()) return this; if (other.hasFileId()) { - setFileId(other.getFileId()); + bitField0_ |= 0x00000001; + fileId_ = other.fileId_; + onChanged(); } if (other.hasTruncateEpoch()) { setTruncateEpoch(other.getTruncateEpoch()); @@ -6501,390 +13670,755 @@ public final class OSD { this.mergeUnknownFields(other.getUnknownFields()); return this; } - + + public final boolean isInitialized() { + if (!hasFileId()) { + + return false; + } + if (!hasTruncateEpoch()) { + + return false; + } + if (!hasLastObject()) { + + return false; + } + if (!hasFileSize()) { + + return false; + } + return true; + } + public Builder mergeFrom( com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - com.google.protobuf.UnknownFieldSet.Builder unknownFields = - com.google.protobuf.UnknownFieldSet.newBuilder( - this.getUnknownFields()); - while (true) { - int tag = input.readTag(); - switch (tag) { - case 0: - this.setUnknownFields(unknownFields.build()); - return this; - default: { - if (!parseUnknownField(input, unknownFields, - extensionRegistry, tag)) { - this.setUnknownFields(unknownFields.build()); - return this; - } - break; - } - case 10: { - setFileId(input.readString()); - break; - } - case 17: { - setTruncateEpoch(input.readFixed64()); - break; - } - case 25: { - setLastObject(input.readFixed64()); - break; - } - case 33: { - setFileSize(input.readFixed64()); - break; - } + org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_broadcast_gmaxRequest parsedMessage = null; + try { + parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + parsedMessage = (org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_broadcast_gmaxRequest) e.getUnfinishedMessage(); + throw e; + } finally { + if (parsedMessage != null) { + mergeFrom(parsedMessage); } } + return this; } - - + private int bitField0_; + // required string file_id = 1; + private java.lang.Object fileId_ = ""; + /** + * required string file_id = 1; + */ public boolean hasFileId() { - return result.hasFileId(); + return ((bitField0_ & 0x00000001) == 0x00000001); } + /** + * required string file_id = 1; + */ public java.lang.String getFileId() { - return result.getFileId(); + java.lang.Object ref = fileId_; + if (!(ref instanceof java.lang.String)) { + java.lang.String s = ((com.google.protobuf.ByteString) ref) + .toStringUtf8(); + fileId_ = s; + return s; + } else { + return (java.lang.String) ref; + } + } + /** + * required string file_id = 1; + */ + public com.google.protobuf.ByteString + getFileIdBytes() { + java.lang.Object ref = fileId_; + if (ref instanceof String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + fileId_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } } - public Builder setFileId(java.lang.String value) { + /** + * required string file_id = 1; + */ + public Builder setFileId( + java.lang.String value) { if (value == null) { throw new NullPointerException(); } - result.hasFileId = true; - result.fileId_ = value; + bitField0_ |= 0x00000001; + fileId_ = value; + onChanged(); return this; } + /** + * required string file_id = 1; + */ public Builder clearFileId() { - result.hasFileId = false; - result.fileId_ = getDefaultInstance().getFileId(); + bitField0_ = (bitField0_ & ~0x00000001); + fileId_ = getDefaultInstance().getFileId(); + onChanged(); + return this; + } + /** + * required string file_id = 1; + */ + public Builder setFileIdBytes( + com.google.protobuf.ByteString value) { + if (value == null) { + throw new NullPointerException(); + } + bitField0_ |= 0x00000001; + fileId_ = value; + onChanged(); return this; } - + // required fixed64 truncate_epoch = 2; + private long truncateEpoch_ ; + /** + * required fixed64 truncate_epoch = 2; + */ public boolean hasTruncateEpoch() { - return result.hasTruncateEpoch(); + return ((bitField0_ & 0x00000002) == 0x00000002); } + /** + * required fixed64 truncate_epoch = 2; + */ public long getTruncateEpoch() { - return result.getTruncateEpoch(); + return truncateEpoch_; } + /** + * required fixed64 truncate_epoch = 2; + */ public Builder setTruncateEpoch(long value) { - result.hasTruncateEpoch = true; - result.truncateEpoch_ = value; + bitField0_ |= 0x00000002; + truncateEpoch_ = value; + onChanged(); return this; } + /** + * required fixed64 truncate_epoch = 2; + */ public Builder clearTruncateEpoch() { - result.hasTruncateEpoch = false; - result.truncateEpoch_ = 0L; + bitField0_ = (bitField0_ & ~0x00000002); + truncateEpoch_ = 0L; + onChanged(); return this; } - + // required fixed64 last_object = 3; + private long lastObject_ ; + /** + * required fixed64 last_object = 3; + */ public boolean hasLastObject() { - return result.hasLastObject(); + return ((bitField0_ & 0x00000004) == 0x00000004); } + /** + * required fixed64 last_object = 3; + */ public long getLastObject() { - return result.getLastObject(); + return lastObject_; } + /** + * required fixed64 last_object = 3; + */ public Builder setLastObject(long value) { - result.hasLastObject = true; - result.lastObject_ = value; + bitField0_ |= 0x00000004; + lastObject_ = value; + onChanged(); return this; } + /** + * required fixed64 last_object = 3; + */ public Builder clearLastObject() { - result.hasLastObject = false; - result.lastObject_ = 0L; + bitField0_ = (bitField0_ & ~0x00000004); + lastObject_ = 0L; + onChanged(); return this; } - + // required fixed64 file_size = 4; + private long fileSize_ ; + /** + * required fixed64 file_size = 4; + */ public boolean hasFileSize() { - return result.hasFileSize(); + return ((bitField0_ & 0x00000008) == 0x00000008); } + /** + * required fixed64 file_size = 4; + */ public long getFileSize() { - return result.getFileSize(); + return fileSize_; } + /** + * required fixed64 file_size = 4; + */ public Builder setFileSize(long value) { - result.hasFileSize = true; - result.fileSize_ = value; + bitField0_ |= 0x00000008; + fileSize_ = value; + onChanged(); return this; } + /** + * required fixed64 file_size = 4; + */ public Builder clearFileSize() { - result.hasFileSize = false; - result.fileSize_ = 0L; + bitField0_ = (bitField0_ & ~0x00000008); + fileSize_ = 0L; + onChanged(); return this; } - - // @@protoc_insertion_point(builder_scope:xtreemfs.pbrpc.xtreemfs_broadcast_gmaxRequest) - } - - static { - defaultInstance = new xtreemfs_broadcast_gmaxRequest(true); - org.xtreemfs.pbrpc.generatedinterfaces.OSD.internalForceInit(); - defaultInstance.initFields(); - } - - // @@protoc_insertion_point(class_scope:xtreemfs.pbrpc.xtreemfs_broadcast_gmaxRequest) - } - - public static final class xtreemfs_check_objectRequest extends - com.google.protobuf.GeneratedMessage { - // Use xtreemfs_check_objectRequest.newBuilder() to construct. - private xtreemfs_check_objectRequest() { - initFields(); + + // @@protoc_insertion_point(builder_scope:xtreemfs.pbrpc.xtreemfs_broadcast_gmaxRequest) + } + + static { + defaultInstance = new xtreemfs_broadcast_gmaxRequest(true); + defaultInstance.initFields(); + } + + // @@protoc_insertion_point(class_scope:xtreemfs.pbrpc.xtreemfs_broadcast_gmaxRequest) + } + + public interface xtreemfs_check_objectRequestOrBuilder + extends com.google.protobuf.MessageOrBuilder { + + // required .xtreemfs.pbrpc.FileCredentials file_credentials = 1; + /** + * required .xtreemfs.pbrpc.FileCredentials file_credentials = 1; + */ + boolean hasFileCredentials(); + /** + * required .xtreemfs.pbrpc.FileCredentials file_credentials = 1; + */ + org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials getFileCredentials(); + /** + * required .xtreemfs.pbrpc.FileCredentials file_credentials = 1; + */ + org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentialsOrBuilder getFileCredentialsOrBuilder(); + + // required string file_id = 2; + /** + * required string file_id = 2; + */ + boolean hasFileId(); + /** + * required string file_id = 2; + */ + java.lang.String getFileId(); + /** + * required string file_id = 2; + */ + com.google.protobuf.ByteString + getFileIdBytes(); + + // required fixed64 object_number = 3; + /** + * required fixed64 object_number = 3; + */ + boolean hasObjectNumber(); + /** + * required fixed64 object_number = 3; + */ + long getObjectNumber(); + + // required fixed64 object_version = 4; + /** + * required fixed64 object_version = 4; + */ + boolean hasObjectVersion(); + /** + * required fixed64 object_version = 4; + */ + long getObjectVersion(); + } + /** + * Protobuf type {@code xtreemfs.pbrpc.xtreemfs_check_objectRequest} + */ + public static final class xtreemfs_check_objectRequest extends + com.google.protobuf.GeneratedMessage + implements xtreemfs_check_objectRequestOrBuilder { + // Use xtreemfs_check_objectRequest.newBuilder() to construct. + private xtreemfs_check_objectRequest(com.google.protobuf.GeneratedMessage.Builder builder) { + super(builder); + this.unknownFields = builder.getUnknownFields(); + } + private xtreemfs_check_objectRequest(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); } + + private static final xtreemfs_check_objectRequest defaultInstance; + public static xtreemfs_check_objectRequest getDefaultInstance() { + return defaultInstance; + } + + public xtreemfs_check_objectRequest getDefaultInstanceForType() { + return defaultInstance; + } + + private final com.google.protobuf.UnknownFieldSet unknownFields; + @java.lang.Override + public final com.google.protobuf.UnknownFieldSet + getUnknownFields() { + return this.unknownFields; + } + private xtreemfs_check_objectRequest( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + initFields(); + int mutable_bitField0_ = 0; + com.google.protobuf.UnknownFieldSet.Builder unknownFields = + com.google.protobuf.UnknownFieldSet.newBuilder(); + try { + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch (tag) { + case 0: + done = true; + break; + default: { + if (!parseUnknownField(input, unknownFields, + extensionRegistry, tag)) { + done = true; + } + break; + } + case 10: { + org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials.Builder subBuilder = null; + if (((bitField0_ & 0x00000001) == 0x00000001)) { + subBuilder = fileCredentials_.toBuilder(); + } + fileCredentials_ = input.readMessage(org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials.PARSER, extensionRegistry); + if (subBuilder != null) { + subBuilder.mergeFrom(fileCredentials_); + fileCredentials_ = subBuilder.buildPartial(); + } + bitField0_ |= 0x00000001; + break; + } + case 18: { + bitField0_ |= 0x00000002; + fileId_ = input.readBytes(); + break; + } + case 25: { + bitField0_ |= 0x00000004; + objectNumber_ = input.readFixed64(); + break; + } + case 33: { + bitField0_ |= 0x00000008; + objectVersion_ = input.readFixed64(); + break; + } + } + } + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(this); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException( + e.getMessage()).setUnfinishedMessage(this); + } finally { + this.unknownFields = unknownFields.build(); + makeExtensionsImmutable(); + } } - private xtreemfs_check_objectRequest(boolean noInit) {} - - private static final xtreemfs_check_objectRequest defaultInstance; - public static xtreemfs_check_objectRequest getDefaultInstance() { - return defaultInstance; - } - - public xtreemfs_check_objectRequest getDefaultInstanceForType() { - return defaultInstance; - } - public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { return org.xtreemfs.pbrpc.generatedinterfaces.OSD.internal_static_xtreemfs_pbrpc_xtreemfs_check_objectRequest_descriptor; } - + protected com.google.protobuf.GeneratedMessage.FieldAccessorTable internalGetFieldAccessorTable() { - return org.xtreemfs.pbrpc.generatedinterfaces.OSD.internal_static_xtreemfs_pbrpc_xtreemfs_check_objectRequest_fieldAccessorTable; + return org.xtreemfs.pbrpc.generatedinterfaces.OSD.internal_static_xtreemfs_pbrpc_xtreemfs_check_objectRequest_fieldAccessorTable + .ensureFieldAccessorsInitialized( + org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_check_objectRequest.class, org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_check_objectRequest.Builder.class); + } + + public static com.google.protobuf.Parser PARSER = + new com.google.protobuf.AbstractParser() { + public xtreemfs_check_objectRequest parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return new xtreemfs_check_objectRequest(input, extensionRegistry); + } + }; + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; } - + + private int bitField0_; // required .xtreemfs.pbrpc.FileCredentials file_credentials = 1; public static final int FILE_CREDENTIALS_FIELD_NUMBER = 1; - private boolean hasFileCredentials; private org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials fileCredentials_; - public boolean hasFileCredentials() { return hasFileCredentials; } - public org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials getFileCredentials() { return fileCredentials_; } - + /** + * required .xtreemfs.pbrpc.FileCredentials file_credentials = 1; + */ + public boolean hasFileCredentials() { + return ((bitField0_ & 0x00000001) == 0x00000001); + } + /** + * required .xtreemfs.pbrpc.FileCredentials file_credentials = 1; + */ + public org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials getFileCredentials() { + return fileCredentials_; + } + /** + * required .xtreemfs.pbrpc.FileCredentials file_credentials = 1; + */ + public org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentialsOrBuilder getFileCredentialsOrBuilder() { + return fileCredentials_; + } + // required string file_id = 2; public static final int FILE_ID_FIELD_NUMBER = 2; - private boolean hasFileId; - private java.lang.String fileId_ = ""; - public boolean hasFileId() { return hasFileId; } - public java.lang.String getFileId() { return fileId_; } - + private java.lang.Object fileId_; + /** + * required string file_id = 2; + */ + public boolean hasFileId() { + return ((bitField0_ & 0x00000002) == 0x00000002); + } + /** + * required string file_id = 2; + */ + public java.lang.String getFileId() { + java.lang.Object ref = fileId_; + if (ref instanceof java.lang.String) { + return (java.lang.String) ref; + } else { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + if (bs.isValidUtf8()) { + fileId_ = s; + } + return s; + } + } + /** + * required string file_id = 2; + */ + public com.google.protobuf.ByteString + getFileIdBytes() { + java.lang.Object ref = fileId_; + if (ref instanceof java.lang.String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + fileId_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + // required fixed64 object_number = 3; public static final int OBJECT_NUMBER_FIELD_NUMBER = 3; - private boolean hasObjectNumber; - private long objectNumber_ = 0L; - public boolean hasObjectNumber() { return hasObjectNumber; } - public long getObjectNumber() { return objectNumber_; } - + private long objectNumber_; + /** + * required fixed64 object_number = 3; + */ + public boolean hasObjectNumber() { + return ((bitField0_ & 0x00000004) == 0x00000004); + } + /** + * required fixed64 object_number = 3; + */ + public long getObjectNumber() { + return objectNumber_; + } + // required fixed64 object_version = 4; public static final int OBJECT_VERSION_FIELD_NUMBER = 4; - private boolean hasObjectVersion; - private long objectVersion_ = 0L; - public boolean hasObjectVersion() { return hasObjectVersion; } - public long getObjectVersion() { return objectVersion_; } - + private long objectVersion_; + /** + * required fixed64 object_version = 4; + */ + public boolean hasObjectVersion() { + return ((bitField0_ & 0x00000008) == 0x00000008); + } + /** + * required fixed64 object_version = 4; + */ + public long getObjectVersion() { + return objectVersion_; + } + private void initFields() { fileCredentials_ = org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials.getDefaultInstance(); + fileId_ = ""; + objectNumber_ = 0L; + objectVersion_ = 0L; } + private byte memoizedIsInitialized = -1; public final boolean isInitialized() { - if (!hasFileCredentials) return false; - if (!hasFileId) return false; - if (!hasObjectNumber) return false; - if (!hasObjectVersion) return false; - if (!getFileCredentials().isInitialized()) return false; + byte isInitialized = memoizedIsInitialized; + if (isInitialized != -1) return isInitialized == 1; + + if (!hasFileCredentials()) { + memoizedIsInitialized = 0; + return false; + } + if (!hasFileId()) { + memoizedIsInitialized = 0; + return false; + } + if (!hasObjectNumber()) { + memoizedIsInitialized = 0; + return false; + } + if (!hasObjectVersion()) { + memoizedIsInitialized = 0; + return false; + } + if (!getFileCredentials().isInitialized()) { + memoizedIsInitialized = 0; + return false; + } + memoizedIsInitialized = 1; return true; } - + public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException { getSerializedSize(); - if (hasFileCredentials()) { - output.writeMessage(1, getFileCredentials()); + if (((bitField0_ & 0x00000001) == 0x00000001)) { + output.writeMessage(1, fileCredentials_); } - if (hasFileId()) { - output.writeString(2, getFileId()); + if (((bitField0_ & 0x00000002) == 0x00000002)) { + output.writeBytes(2, getFileIdBytes()); } - if (hasObjectNumber()) { - output.writeFixed64(3, getObjectNumber()); + if (((bitField0_ & 0x00000004) == 0x00000004)) { + output.writeFixed64(3, objectNumber_); } - if (hasObjectVersion()) { - output.writeFixed64(4, getObjectVersion()); + if (((bitField0_ & 0x00000008) == 0x00000008)) { + output.writeFixed64(4, objectVersion_); } getUnknownFields().writeTo(output); } - + private int memoizedSerializedSize = -1; public int getSerializedSize() { int size = memoizedSerializedSize; if (size != -1) return size; - + size = 0; - if (hasFileCredentials()) { + if (((bitField0_ & 0x00000001) == 0x00000001)) { size += com.google.protobuf.CodedOutputStream - .computeMessageSize(1, getFileCredentials()); + .computeMessageSize(1, fileCredentials_); } - if (hasFileId()) { + if (((bitField0_ & 0x00000002) == 0x00000002)) { size += com.google.protobuf.CodedOutputStream - .computeStringSize(2, getFileId()); + .computeBytesSize(2, getFileIdBytes()); } - if (hasObjectNumber()) { + if (((bitField0_ & 0x00000004) == 0x00000004)) { size += com.google.protobuf.CodedOutputStream - .computeFixed64Size(3, getObjectNumber()); + .computeFixed64Size(3, objectNumber_); } - if (hasObjectVersion()) { + if (((bitField0_ & 0x00000008) == 0x00000008)) { size += com.google.protobuf.CodedOutputStream - .computeFixed64Size(4, getObjectVersion()); + .computeFixed64Size(4, objectVersion_); } size += getUnknownFields().getSerializedSize(); memoizedSerializedSize = size; return size; } - + + private static final long serialVersionUID = 0L; + @java.lang.Override + protected java.lang.Object writeReplace() + throws java.io.ObjectStreamException { + return super.writeReplace(); + } + public static org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_check_objectRequest parseFrom( com.google.protobuf.ByteString data) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data).buildParsed(); + return PARSER.parseFrom(data); } public static org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_check_objectRequest parseFrom( com.google.protobuf.ByteString data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(data, extensionRegistry); } public static org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_check_objectRequest parseFrom(byte[] data) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data).buildParsed(); + return PARSER.parseFrom(data); } public static org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_check_objectRequest parseFrom( byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(data, extensionRegistry); } public static org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_check_objectRequest parseFrom(java.io.InputStream input) throws java.io.IOException { - return newBuilder().mergeFrom(input).buildParsed(); + return PARSER.parseFrom(input); } public static org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_check_objectRequest parseFrom( java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - return newBuilder().mergeFrom(input, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(input, extensionRegistry); } public static org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_check_objectRequest parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException { - Builder builder = newBuilder(); - if (builder.mergeDelimitedFrom(input)) { - return builder.buildParsed(); - } else { - return null; - } + return PARSER.parseDelimitedFrom(input); } public static org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_check_objectRequest parseDelimitedFrom( java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - Builder builder = newBuilder(); - if (builder.mergeDelimitedFrom(input, extensionRegistry)) { - return builder.buildParsed(); - } else { - return null; - } + return PARSER.parseDelimitedFrom(input, extensionRegistry); } public static org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_check_objectRequest parseFrom( com.google.protobuf.CodedInputStream input) throws java.io.IOException { - return newBuilder().mergeFrom(input).buildParsed(); + return PARSER.parseFrom(input); } public static org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_check_objectRequest parseFrom( com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - return newBuilder().mergeFrom(input, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(input, extensionRegistry); } - + public static Builder newBuilder() { return Builder.create(); } public Builder newBuilderForType() { return newBuilder(); } public static Builder newBuilder(org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_check_objectRequest prototype) { return newBuilder().mergeFrom(prototype); } public Builder toBuilder() { return newBuilder(this); } - + + @java.lang.Override + protected Builder newBuilderForType( + com.google.protobuf.GeneratedMessage.BuilderParent parent) { + Builder builder = new Builder(parent); + return builder; + } + /** + * Protobuf type {@code xtreemfs.pbrpc.xtreemfs_check_objectRequest} + */ public static final class Builder extends - com.google.protobuf.GeneratedMessage.Builder { - private org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_check_objectRequest result; - + com.google.protobuf.GeneratedMessage.Builder + implements org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_check_objectRequestOrBuilder { + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return org.xtreemfs.pbrpc.generatedinterfaces.OSD.internal_static_xtreemfs_pbrpc_xtreemfs_check_objectRequest_descriptor; + } + + protected com.google.protobuf.GeneratedMessage.FieldAccessorTable + internalGetFieldAccessorTable() { + return org.xtreemfs.pbrpc.generatedinterfaces.OSD.internal_static_xtreemfs_pbrpc_xtreemfs_check_objectRequest_fieldAccessorTable + .ensureFieldAccessorsInitialized( + org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_check_objectRequest.class, org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_check_objectRequest.Builder.class); + } + // Construct using org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_check_objectRequest.newBuilder() - private Builder() {} - - private static Builder create() { - Builder builder = new Builder(); - builder.result = new org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_check_objectRequest(); - return builder; + private Builder() { + maybeForceBuilderInitialization(); } - - protected org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_check_objectRequest internalGetResult() { - return result; + + private Builder( + com.google.protobuf.GeneratedMessage.BuilderParent parent) { + super(parent); + maybeForceBuilderInitialization(); + } + private void maybeForceBuilderInitialization() { + if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) { + getFileCredentialsFieldBuilder(); + } + } + private static Builder create() { + return new Builder(); } - + public Builder clear() { - if (result == null) { - throw new IllegalStateException( - "Cannot call clear() after build()."); + super.clear(); + if (fileCredentialsBuilder_ == null) { + fileCredentials_ = org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials.getDefaultInstance(); + } else { + fileCredentialsBuilder_.clear(); } - result = new org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_check_objectRequest(); + bitField0_ = (bitField0_ & ~0x00000001); + fileId_ = ""; + bitField0_ = (bitField0_ & ~0x00000002); + objectNumber_ = 0L; + bitField0_ = (bitField0_ & ~0x00000004); + objectVersion_ = 0L; + bitField0_ = (bitField0_ & ~0x00000008); return this; } - + public Builder clone() { - return create().mergeFrom(result); + return create().mergeFrom(buildPartial()); } - + public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() { - return org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_check_objectRequest.getDescriptor(); + return org.xtreemfs.pbrpc.generatedinterfaces.OSD.internal_static_xtreemfs_pbrpc_xtreemfs_check_objectRequest_descriptor; } - + public org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_check_objectRequest getDefaultInstanceForType() { return org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_check_objectRequest.getDefaultInstance(); } - - public boolean isInitialized() { - return result.isInitialized(); - } + public org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_check_objectRequest build() { - if (result != null && !isInitialized()) { + org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_check_objectRequest result = buildPartial(); + if (!result.isInitialized()) { throw newUninitializedMessageException(result); } - return buildPartial(); - } - - private org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_check_objectRequest buildParsed() - throws com.google.protobuf.InvalidProtocolBufferException { - if (!isInitialized()) { - throw newUninitializedMessageException( - result).asInvalidProtocolBufferException(); - } - return buildPartial(); + return result; } - + public org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_check_objectRequest buildPartial() { - if (result == null) { - throw new IllegalStateException( - "build() has already been called on this Builder."); + org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_check_objectRequest result = new org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_check_objectRequest(this); + int from_bitField0_ = bitField0_; + int to_bitField0_ = 0; + if (((from_bitField0_ & 0x00000001) == 0x00000001)) { + to_bitField0_ |= 0x00000001; + } + if (fileCredentialsBuilder_ == null) { + result.fileCredentials_ = fileCredentials_; + } else { + result.fileCredentials_ = fileCredentialsBuilder_.build(); + } + if (((from_bitField0_ & 0x00000002) == 0x00000002)) { + to_bitField0_ |= 0x00000002; + } + result.fileId_ = fileId_; + if (((from_bitField0_ & 0x00000004) == 0x00000004)) { + to_bitField0_ |= 0x00000004; } - org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_check_objectRequest returnMe = result; - result = null; - return returnMe; + result.objectNumber_ = objectNumber_; + if (((from_bitField0_ & 0x00000008) == 0x00000008)) { + to_bitField0_ |= 0x00000008; + } + result.objectVersion_ = objectVersion_; + result.bitField0_ = to_bitField0_; + onBuilt(); + return result; } - + public Builder mergeFrom(com.google.protobuf.Message other) { if (other instanceof org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_check_objectRequest) { return mergeFrom((org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_check_objectRequest)other); @@ -6893,14 +14427,16 @@ public final class OSD { return this; } } - + public Builder mergeFrom(org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_check_objectRequest other) { if (other == org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_check_objectRequest.getDefaultInstance()) return this; if (other.hasFileCredentials()) { mergeFileCredentials(other.getFileCredentials()); } if (other.hasFileId()) { - setFileId(other.getFileId()); + bitField0_ |= 0x00000002; + fileId_ = other.fileId_; + onChanged(); } if (other.hasObjectNumber()) { setObjectNumber(other.getObjectNumber()); @@ -6911,225 +14447,536 @@ public final class OSD { this.mergeUnknownFields(other.getUnknownFields()); return this; } - + + public final boolean isInitialized() { + if (!hasFileCredentials()) { + + return false; + } + if (!hasFileId()) { + + return false; + } + if (!hasObjectNumber()) { + + return false; + } + if (!hasObjectVersion()) { + + return false; + } + if (!getFileCredentials().isInitialized()) { + + return false; + } + return true; + } + public Builder mergeFrom( com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - com.google.protobuf.UnknownFieldSet.Builder unknownFields = - com.google.protobuf.UnknownFieldSet.newBuilder( - this.getUnknownFields()); - while (true) { - int tag = input.readTag(); - switch (tag) { - case 0: - this.setUnknownFields(unknownFields.build()); - return this; - default: { - if (!parseUnknownField(input, unknownFields, - extensionRegistry, tag)) { - this.setUnknownFields(unknownFields.build()); - return this; - } - break; - } - case 10: { - org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials.Builder subBuilder = org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials.newBuilder(); - if (hasFileCredentials()) { - subBuilder.mergeFrom(getFileCredentials()); - } - input.readMessage(subBuilder, extensionRegistry); - setFileCredentials(subBuilder.buildPartial()); - break; - } - case 18: { - setFileId(input.readString()); - break; - } - case 25: { - setObjectNumber(input.readFixed64()); - break; - } - case 33: { - setObjectVersion(input.readFixed64()); - break; - } + org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_check_objectRequest parsedMessage = null; + try { + parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + parsedMessage = (org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_check_objectRequest) e.getUnfinishedMessage(); + throw e; + } finally { + if (parsedMessage != null) { + mergeFrom(parsedMessage); } } + return this; } - - + private int bitField0_; + // required .xtreemfs.pbrpc.FileCredentials file_credentials = 1; + private org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials fileCredentials_ = org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials.getDefaultInstance(); + private com.google.protobuf.SingleFieldBuilder< + org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials, org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials.Builder, org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentialsOrBuilder> fileCredentialsBuilder_; + /** + * required .xtreemfs.pbrpc.FileCredentials file_credentials = 1; + */ public boolean hasFileCredentials() { - return result.hasFileCredentials(); + return ((bitField0_ & 0x00000001) == 0x00000001); } + /** + * required .xtreemfs.pbrpc.FileCredentials file_credentials = 1; + */ public org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials getFileCredentials() { - return result.getFileCredentials(); + if (fileCredentialsBuilder_ == null) { + return fileCredentials_; + } else { + return fileCredentialsBuilder_.getMessage(); + } } + /** + * required .xtreemfs.pbrpc.FileCredentials file_credentials = 1; + */ public Builder setFileCredentials(org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials value) { - if (value == null) { - throw new NullPointerException(); + if (fileCredentialsBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + fileCredentials_ = value; + onChanged(); + } else { + fileCredentialsBuilder_.setMessage(value); } - result.hasFileCredentials = true; - result.fileCredentials_ = value; + bitField0_ |= 0x00000001; return this; } - public Builder setFileCredentials(org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials.Builder builderForValue) { - result.hasFileCredentials = true; - result.fileCredentials_ = builderForValue.build(); + /** + * required .xtreemfs.pbrpc.FileCredentials file_credentials = 1; + */ + public Builder setFileCredentials( + org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials.Builder builderForValue) { + if (fileCredentialsBuilder_ == null) { + fileCredentials_ = builderForValue.build(); + onChanged(); + } else { + fileCredentialsBuilder_.setMessage(builderForValue.build()); + } + bitField0_ |= 0x00000001; return this; } + /** + * required .xtreemfs.pbrpc.FileCredentials file_credentials = 1; + */ public Builder mergeFileCredentials(org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials value) { - if (result.hasFileCredentials() && - result.fileCredentials_ != org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials.getDefaultInstance()) { - result.fileCredentials_ = - org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials.newBuilder(result.fileCredentials_).mergeFrom(value).buildPartial(); + if (fileCredentialsBuilder_ == null) { + if (((bitField0_ & 0x00000001) == 0x00000001) && + fileCredentials_ != org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials.getDefaultInstance()) { + fileCredentials_ = + org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials.newBuilder(fileCredentials_).mergeFrom(value).buildPartial(); + } else { + fileCredentials_ = value; + } + onChanged(); } else { - result.fileCredentials_ = value; + fileCredentialsBuilder_.mergeFrom(value); } - result.hasFileCredentials = true; + bitField0_ |= 0x00000001; return this; } + /** + * required .xtreemfs.pbrpc.FileCredentials file_credentials = 1; + */ public Builder clearFileCredentials() { - result.hasFileCredentials = false; - result.fileCredentials_ = org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials.getDefaultInstance(); + if (fileCredentialsBuilder_ == null) { + fileCredentials_ = org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials.getDefaultInstance(); + onChanged(); + } else { + fileCredentialsBuilder_.clear(); + } + bitField0_ = (bitField0_ & ~0x00000001); return this; } - + /** + * required .xtreemfs.pbrpc.FileCredentials file_credentials = 1; + */ + public org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials.Builder getFileCredentialsBuilder() { + bitField0_ |= 0x00000001; + onChanged(); + return getFileCredentialsFieldBuilder().getBuilder(); + } + /** + * required .xtreemfs.pbrpc.FileCredentials file_credentials = 1; + */ + public org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentialsOrBuilder getFileCredentialsOrBuilder() { + if (fileCredentialsBuilder_ != null) { + return fileCredentialsBuilder_.getMessageOrBuilder(); + } else { + return fileCredentials_; + } + } + /** + * required .xtreemfs.pbrpc.FileCredentials file_credentials = 1; + */ + private com.google.protobuf.SingleFieldBuilder< + org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials, org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials.Builder, org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentialsOrBuilder> + getFileCredentialsFieldBuilder() { + if (fileCredentialsBuilder_ == null) { + fileCredentialsBuilder_ = new com.google.protobuf.SingleFieldBuilder< + org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials, org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials.Builder, org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentialsOrBuilder>( + fileCredentials_, + getParentForChildren(), + isClean()); + fileCredentials_ = null; + } + return fileCredentialsBuilder_; + } + // required string file_id = 2; + private java.lang.Object fileId_ = ""; + /** + * required string file_id = 2; + */ public boolean hasFileId() { - return result.hasFileId(); + return ((bitField0_ & 0x00000002) == 0x00000002); } + /** + * required string file_id = 2; + */ public java.lang.String getFileId() { - return result.getFileId(); + java.lang.Object ref = fileId_; + if (!(ref instanceof java.lang.String)) { + java.lang.String s = ((com.google.protobuf.ByteString) ref) + .toStringUtf8(); + fileId_ = s; + return s; + } else { + return (java.lang.String) ref; + } + } + /** + * required string file_id = 2; + */ + public com.google.protobuf.ByteString + getFileIdBytes() { + java.lang.Object ref = fileId_; + if (ref instanceof String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + fileId_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } } - public Builder setFileId(java.lang.String value) { + /** + * required string file_id = 2; + */ + public Builder setFileId( + java.lang.String value) { if (value == null) { throw new NullPointerException(); } - result.hasFileId = true; - result.fileId_ = value; + bitField0_ |= 0x00000002; + fileId_ = value; + onChanged(); return this; } + /** + * required string file_id = 2; + */ public Builder clearFileId() { - result.hasFileId = false; - result.fileId_ = getDefaultInstance().getFileId(); + bitField0_ = (bitField0_ & ~0x00000002); + fileId_ = getDefaultInstance().getFileId(); + onChanged(); return this; } - + /** + * required string file_id = 2; + */ + public Builder setFileIdBytes( + com.google.protobuf.ByteString value) { + if (value == null) { + throw new NullPointerException(); + } + bitField0_ |= 0x00000002; + fileId_ = value; + onChanged(); + return this; + } + // required fixed64 object_number = 3; + private long objectNumber_ ; + /** + * required fixed64 object_number = 3; + */ public boolean hasObjectNumber() { - return result.hasObjectNumber(); + return ((bitField0_ & 0x00000004) == 0x00000004); } + /** + * required fixed64 object_number = 3; + */ public long getObjectNumber() { - return result.getObjectNumber(); + return objectNumber_; } + /** + * required fixed64 object_number = 3; + */ public Builder setObjectNumber(long value) { - result.hasObjectNumber = true; - result.objectNumber_ = value; + bitField0_ |= 0x00000004; + objectNumber_ = value; + onChanged(); return this; } + /** + * required fixed64 object_number = 3; + */ public Builder clearObjectNumber() { - result.hasObjectNumber = false; - result.objectNumber_ = 0L; + bitField0_ = (bitField0_ & ~0x00000004); + objectNumber_ = 0L; + onChanged(); return this; } - + // required fixed64 object_version = 4; + private long objectVersion_ ; + /** + * required fixed64 object_version = 4; + */ public boolean hasObjectVersion() { - return result.hasObjectVersion(); + return ((bitField0_ & 0x00000008) == 0x00000008); } + /** + * required fixed64 object_version = 4; + */ public long getObjectVersion() { - return result.getObjectVersion(); + return objectVersion_; } + /** + * required fixed64 object_version = 4; + */ public Builder setObjectVersion(long value) { - result.hasObjectVersion = true; - result.objectVersion_ = value; + bitField0_ |= 0x00000008; + objectVersion_ = value; + onChanged(); return this; } + /** + * required fixed64 object_version = 4; + */ public Builder clearObjectVersion() { - result.hasObjectVersion = false; - result.objectVersion_ = 0L; + bitField0_ = (bitField0_ & ~0x00000008); + objectVersion_ = 0L; + onChanged(); return this; } - + // @@protoc_insertion_point(builder_scope:xtreemfs.pbrpc.xtreemfs_check_objectRequest) } - + static { defaultInstance = new xtreemfs_check_objectRequest(true); - org.xtreemfs.pbrpc.generatedinterfaces.OSD.internalForceInit(); defaultInstance.initFields(); } - + // @@protoc_insertion_point(class_scope:xtreemfs.pbrpc.xtreemfs_check_objectRequest) } - + + public interface xtreemfs_cleanup_get_resultsResponseOrBuilder + extends com.google.protobuf.MessageOrBuilder { + + // repeated string results = 1; + /** + * repeated string results = 1; + * + *
+     * Human readable English status and error messages.
+     * 
+ */ + java.util.List + getResultsList(); + /** + * repeated string results = 1; + * + *
+     * Human readable English status and error messages.
+     * 
+ */ + int getResultsCount(); + /** + * repeated string results = 1; + * + *
+     * Human readable English status and error messages.
+     * 
+ */ + java.lang.String getResults(int index); + /** + * repeated string results = 1; + * + *
+     * Human readable English status and error messages.
+     * 
+ */ + com.google.protobuf.ByteString + getResultsBytes(int index); + } + /** + * Protobuf type {@code xtreemfs.pbrpc.xtreemfs_cleanup_get_resultsResponse} + */ public static final class xtreemfs_cleanup_get_resultsResponse extends - com.google.protobuf.GeneratedMessage { + com.google.protobuf.GeneratedMessage + implements xtreemfs_cleanup_get_resultsResponseOrBuilder { // Use xtreemfs_cleanup_get_resultsResponse.newBuilder() to construct. - private xtreemfs_cleanup_get_resultsResponse() { - initFields(); + private xtreemfs_cleanup_get_resultsResponse(com.google.protobuf.GeneratedMessage.Builder builder) { + super(builder); + this.unknownFields = builder.getUnknownFields(); } - private xtreemfs_cleanup_get_resultsResponse(boolean noInit) {} - + private xtreemfs_cleanup_get_resultsResponse(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); } + private static final xtreemfs_cleanup_get_resultsResponse defaultInstance; public static xtreemfs_cleanup_get_resultsResponse getDefaultInstance() { return defaultInstance; } - + public xtreemfs_cleanup_get_resultsResponse getDefaultInstanceForType() { return defaultInstance; } - + + private final com.google.protobuf.UnknownFieldSet unknownFields; + @java.lang.Override + public final com.google.protobuf.UnknownFieldSet + getUnknownFields() { + return this.unknownFields; + } + private xtreemfs_cleanup_get_resultsResponse( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + initFields(); + int mutable_bitField0_ = 0; + com.google.protobuf.UnknownFieldSet.Builder unknownFields = + com.google.protobuf.UnknownFieldSet.newBuilder(); + try { + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch (tag) { + case 0: + done = true; + break; + default: { + if (!parseUnknownField(input, unknownFields, + extensionRegistry, tag)) { + done = true; + } + break; + } + case 10: { + if (!((mutable_bitField0_ & 0x00000001) == 0x00000001)) { + results_ = new com.google.protobuf.LazyStringArrayList(); + mutable_bitField0_ |= 0x00000001; + } + results_.add(input.readBytes()); + break; + } + } + } + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(this); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException( + e.getMessage()).setUnfinishedMessage(this); + } finally { + if (((mutable_bitField0_ & 0x00000001) == 0x00000001)) { + results_ = new com.google.protobuf.UnmodifiableLazyStringList(results_); + } + this.unknownFields = unknownFields.build(); + makeExtensionsImmutable(); + } + } public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { return org.xtreemfs.pbrpc.generatedinterfaces.OSD.internal_static_xtreemfs_pbrpc_xtreemfs_cleanup_get_resultsResponse_descriptor; } - + protected com.google.protobuf.GeneratedMessage.FieldAccessorTable internalGetFieldAccessorTable() { - return org.xtreemfs.pbrpc.generatedinterfaces.OSD.internal_static_xtreemfs_pbrpc_xtreemfs_cleanup_get_resultsResponse_fieldAccessorTable; + return org.xtreemfs.pbrpc.generatedinterfaces.OSD.internal_static_xtreemfs_pbrpc_xtreemfs_cleanup_get_resultsResponse_fieldAccessorTable + .ensureFieldAccessorsInitialized( + org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_cleanup_get_resultsResponse.class, org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_cleanup_get_resultsResponse.Builder.class); + } + + public static com.google.protobuf.Parser PARSER = + new com.google.protobuf.AbstractParser() { + public xtreemfs_cleanup_get_resultsResponse parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return new xtreemfs_cleanup_get_resultsResponse(input, extensionRegistry); + } + }; + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; } - + // repeated string results = 1; public static final int RESULTS_FIELD_NUMBER = 1; - private java.util.List results_ = - java.util.Collections.emptyList(); - public java.util.List getResultsList() { + private com.google.protobuf.LazyStringList results_; + /** + * repeated string results = 1; + * + *
+     * Human readable English status and error messages.
+     * 
+ */ + public java.util.List + getResultsList() { return results_; } - public int getResultsCount() { return results_.size(); } + /** + * repeated string results = 1; + * + *
+     * Human readable English status and error messages.
+     * 
+ */ + public int getResultsCount() { + return results_.size(); + } + /** + * repeated string results = 1; + * + *
+     * Human readable English status and error messages.
+     * 
+ */ public java.lang.String getResults(int index) { return results_.get(index); } - + /** + * repeated string results = 1; + * + *
+     * Human readable English status and error messages.
+     * 
+ */ + public com.google.protobuf.ByteString + getResultsBytes(int index) { + return results_.getByteString(index); + } + private void initFields() { + results_ = com.google.protobuf.LazyStringArrayList.EMPTY; } + private byte memoizedIsInitialized = -1; public final boolean isInitialized() { + byte isInitialized = memoizedIsInitialized; + if (isInitialized != -1) return isInitialized == 1; + + memoizedIsInitialized = 1; return true; } - + public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException { getSerializedSize(); - for (java.lang.String element : getResultsList()) { - output.writeString(1, element); + for (int i = 0; i < results_.size(); i++) { + output.writeBytes(1, results_.getByteString(i)); } getUnknownFields().writeTo(output); } - + private int memoizedSerializedSize = -1; public int getSerializedSize() { int size = memoizedSerializedSize; if (size != -1) return size; - + size = 0; { int dataSize = 0; - for (java.lang.String element : getResultsList()) { + for (int i = 0; i < results_.size(); i++) { dataSize += com.google.protobuf.CodedOutputStream - .computeStringSizeNoTag(element); + .computeBytesSizeNoTag(results_.getByteString(i)); } size += dataSize; size += 1 * getResultsList().size(); @@ -7138,153 +14985,157 @@ public final class OSD { memoizedSerializedSize = size; return size; } - + + private static final long serialVersionUID = 0L; + @java.lang.Override + protected java.lang.Object writeReplace() + throws java.io.ObjectStreamException { + return super.writeReplace(); + } + public static org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_cleanup_get_resultsResponse parseFrom( com.google.protobuf.ByteString data) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data).buildParsed(); + return PARSER.parseFrom(data); } public static org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_cleanup_get_resultsResponse parseFrom( com.google.protobuf.ByteString data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(data, extensionRegistry); } public static org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_cleanup_get_resultsResponse parseFrom(byte[] data) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data).buildParsed(); + return PARSER.parseFrom(data); } public static org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_cleanup_get_resultsResponse parseFrom( byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(data, extensionRegistry); } public static org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_cleanup_get_resultsResponse parseFrom(java.io.InputStream input) throws java.io.IOException { - return newBuilder().mergeFrom(input).buildParsed(); + return PARSER.parseFrom(input); } public static org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_cleanup_get_resultsResponse parseFrom( java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - return newBuilder().mergeFrom(input, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(input, extensionRegistry); } public static org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_cleanup_get_resultsResponse parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException { - Builder builder = newBuilder(); - if (builder.mergeDelimitedFrom(input)) { - return builder.buildParsed(); - } else { - return null; - } + return PARSER.parseDelimitedFrom(input); } public static org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_cleanup_get_resultsResponse parseDelimitedFrom( java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - Builder builder = newBuilder(); - if (builder.mergeDelimitedFrom(input, extensionRegistry)) { - return builder.buildParsed(); - } else { - return null; - } + return PARSER.parseDelimitedFrom(input, extensionRegistry); } public static org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_cleanup_get_resultsResponse parseFrom( com.google.protobuf.CodedInputStream input) throws java.io.IOException { - return newBuilder().mergeFrom(input).buildParsed(); + return PARSER.parseFrom(input); } public static org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_cleanup_get_resultsResponse parseFrom( com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - return newBuilder().mergeFrom(input, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(input, extensionRegistry); } - + public static Builder newBuilder() { return Builder.create(); } public Builder newBuilderForType() { return newBuilder(); } public static Builder newBuilder(org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_cleanup_get_resultsResponse prototype) { return newBuilder().mergeFrom(prototype); } public Builder toBuilder() { return newBuilder(this); } - + + @java.lang.Override + protected Builder newBuilderForType( + com.google.protobuf.GeneratedMessage.BuilderParent parent) { + Builder builder = new Builder(parent); + return builder; + } + /** + * Protobuf type {@code xtreemfs.pbrpc.xtreemfs_cleanup_get_resultsResponse} + */ public static final class Builder extends - com.google.protobuf.GeneratedMessage.Builder { - private org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_cleanup_get_resultsResponse result; - + com.google.protobuf.GeneratedMessage.Builder + implements org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_cleanup_get_resultsResponseOrBuilder { + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return org.xtreemfs.pbrpc.generatedinterfaces.OSD.internal_static_xtreemfs_pbrpc_xtreemfs_cleanup_get_resultsResponse_descriptor; + } + + protected com.google.protobuf.GeneratedMessage.FieldAccessorTable + internalGetFieldAccessorTable() { + return org.xtreemfs.pbrpc.generatedinterfaces.OSD.internal_static_xtreemfs_pbrpc_xtreemfs_cleanup_get_resultsResponse_fieldAccessorTable + .ensureFieldAccessorsInitialized( + org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_cleanup_get_resultsResponse.class, org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_cleanup_get_resultsResponse.Builder.class); + } + // Construct using org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_cleanup_get_resultsResponse.newBuilder() - private Builder() {} - - private static Builder create() { - Builder builder = new Builder(); - builder.result = new org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_cleanup_get_resultsResponse(); - return builder; + private Builder() { + maybeForceBuilderInitialization(); } - - protected org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_cleanup_get_resultsResponse internalGetResult() { - return result; + + private Builder( + com.google.protobuf.GeneratedMessage.BuilderParent parent) { + super(parent); + maybeForceBuilderInitialization(); } - - public Builder clear() { - if (result == null) { - throw new IllegalStateException( - "Cannot call clear() after build()."); + private void maybeForceBuilderInitialization() { + if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) { } - result = new org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_cleanup_get_resultsResponse(); + } + private static Builder create() { + return new Builder(); + } + + public Builder clear() { + super.clear(); + results_ = com.google.protobuf.LazyStringArrayList.EMPTY; + bitField0_ = (bitField0_ & ~0x00000001); return this; } - + public Builder clone() { - return create().mergeFrom(result); + return create().mergeFrom(buildPartial()); } - + public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() { - return org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_cleanup_get_resultsResponse.getDescriptor(); + return org.xtreemfs.pbrpc.generatedinterfaces.OSD.internal_static_xtreemfs_pbrpc_xtreemfs_cleanup_get_resultsResponse_descriptor; } - + public org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_cleanup_get_resultsResponse getDefaultInstanceForType() { return org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_cleanup_get_resultsResponse.getDefaultInstance(); } - - public boolean isInitialized() { - return result.isInitialized(); - } + public org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_cleanup_get_resultsResponse build() { - if (result != null && !isInitialized()) { + org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_cleanup_get_resultsResponse result = buildPartial(); + if (!result.isInitialized()) { throw newUninitializedMessageException(result); } - return buildPartial(); - } - - private org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_cleanup_get_resultsResponse buildParsed() - throws com.google.protobuf.InvalidProtocolBufferException { - if (!isInitialized()) { - throw newUninitializedMessageException( - result).asInvalidProtocolBufferException(); - } - return buildPartial(); + return result; } - + public org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_cleanup_get_resultsResponse buildPartial() { - if (result == null) { - throw new IllegalStateException( - "build() has already been called on this Builder."); - } - if (result.results_ != java.util.Collections.EMPTY_LIST) { - result.results_ = - java.util.Collections.unmodifiableList(result.results_); - } - org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_cleanup_get_resultsResponse returnMe = result; - result = null; - return returnMe; + org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_cleanup_get_resultsResponse result = new org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_cleanup_get_resultsResponse(this); + int from_bitField0_ = bitField0_; + if (((bitField0_ & 0x00000001) == 0x00000001)) { + results_ = new com.google.protobuf.UnmodifiableLazyStringList( + results_); + bitField0_ = (bitField0_ & ~0x00000001); + } + result.results_ = results_; + onBuilt(); + return result; } - + public Builder mergeFrom(com.google.protobuf.Message other) { if (other instanceof org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_cleanup_get_resultsResponse) { return mergeFrom((org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_cleanup_get_resultsResponse)other); @@ -7293,308 +15144,501 @@ public final class OSD { return this; } } - + public Builder mergeFrom(org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_cleanup_get_resultsResponse other) { if (other == org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_cleanup_get_resultsResponse.getDefaultInstance()) return this; if (!other.results_.isEmpty()) { - if (result.results_.isEmpty()) { - result.results_ = new java.util.ArrayList(); + if (results_.isEmpty()) { + results_ = other.results_; + bitField0_ = (bitField0_ & ~0x00000001); + } else { + ensureResultsIsMutable(); + results_.addAll(other.results_); } - result.results_.addAll(other.results_); + onChanged(); } this.mergeUnknownFields(other.getUnknownFields()); return this; - } - - public Builder mergeFrom( - com.google.protobuf.CodedInputStream input, - com.google.protobuf.ExtensionRegistryLite extensionRegistry) - throws java.io.IOException { - com.google.protobuf.UnknownFieldSet.Builder unknownFields = - com.google.protobuf.UnknownFieldSet.newBuilder( - this.getUnknownFields()); - while (true) { - int tag = input.readTag(); - switch (tag) { - case 0: - this.setUnknownFields(unknownFields.build()); - return this; - default: { - if (!parseUnknownField(input, unknownFields, - extensionRegistry, tag)) { - this.setUnknownFields(unknownFields.build()); - return this; - } - break; - } - case 10: { - addResults(input.readString()); - break; - } + } + + public final boolean isInitialized() { + return true; + } + + public Builder mergeFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_cleanup_get_resultsResponse parsedMessage = null; + try { + parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + parsedMessage = (org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_cleanup_get_resultsResponse) e.getUnfinishedMessage(); + throw e; + } finally { + if (parsedMessage != null) { + mergeFrom(parsedMessage); } } + return this; } - - + private int bitField0_; + // repeated string results = 1; - public java.util.List getResultsList() { - return java.util.Collections.unmodifiableList(result.results_); - } + private com.google.protobuf.LazyStringList results_ = com.google.protobuf.LazyStringArrayList.EMPTY; + private void ensureResultsIsMutable() { + if (!((bitField0_ & 0x00000001) == 0x00000001)) { + results_ = new com.google.protobuf.LazyStringArrayList(results_); + bitField0_ |= 0x00000001; + } + } + /** + * repeated string results = 1; + * + *
+       * Human readable English status and error messages.
+       * 
+ */ + public java.util.List + getResultsList() { + return java.util.Collections.unmodifiableList(results_); + } + /** + * repeated string results = 1; + * + *
+       * Human readable English status and error messages.
+       * 
+ */ public int getResultsCount() { - return result.getResultsCount(); - } + return results_.size(); + } + /** + * repeated string results = 1; + * + *
+       * Human readable English status and error messages.
+       * 
+ */ public java.lang.String getResults(int index) { - return result.getResults(index); - } - public Builder setResults(int index, java.lang.String value) { + return results_.get(index); + } + /** + * repeated string results = 1; + * + *
+       * Human readable English status and error messages.
+       * 
+ */ + public com.google.protobuf.ByteString + getResultsBytes(int index) { + return results_.getByteString(index); + } + /** + * repeated string results = 1; + * + *
+       * Human readable English status and error messages.
+       * 
+ */ + public Builder setResults( + int index, java.lang.String value) { if (value == null) { throw new NullPointerException(); } - result.results_.set(index, value); - return this; - } - public Builder addResults(java.lang.String value) { + ensureResultsIsMutable(); + results_.set(index, value); + onChanged(); + return this; + } + /** + * repeated string results = 1; + * + *
+       * Human readable English status and error messages.
+       * 
+ */ + public Builder addResults( + java.lang.String value) { if (value == null) { throw new NullPointerException(); } - if (result.results_.isEmpty()) { - result.results_ = new java.util.ArrayList(); - } - result.results_.add(value); - return this; - } + ensureResultsIsMutable(); + results_.add(value); + onChanged(); + return this; + } + /** + * repeated string results = 1; + * + *
+       * Human readable English status and error messages.
+       * 
+ */ public Builder addAllResults( - java.lang.Iterable values) { - if (result.results_.isEmpty()) { - result.results_ = new java.util.ArrayList(); - } - super.addAll(values, result.results_); - return this; - } + java.lang.Iterable values) { + ensureResultsIsMutable(); + super.addAll(values, results_); + onChanged(); + return this; + } + /** + * repeated string results = 1; + * + *
+       * Human readable English status and error messages.
+       * 
+ */ public Builder clearResults() { - result.results_ = java.util.Collections.emptyList(); + results_ = com.google.protobuf.LazyStringArrayList.EMPTY; + bitField0_ = (bitField0_ & ~0x00000001); + onChanged(); + return this; + } + /** + * repeated string results = 1; + * + *
+       * Human readable English status and error messages.
+       * 
+ */ + public Builder addResultsBytes( + com.google.protobuf.ByteString value) { + if (value == null) { + throw new NullPointerException(); + } + ensureResultsIsMutable(); + results_.add(value); + onChanged(); return this; } - + // @@protoc_insertion_point(builder_scope:xtreemfs.pbrpc.xtreemfs_cleanup_get_resultsResponse) } - + static { defaultInstance = new xtreemfs_cleanup_get_resultsResponse(true); - org.xtreemfs.pbrpc.generatedinterfaces.OSD.internalForceInit(); defaultInstance.initFields(); } - + // @@protoc_insertion_point(class_scope:xtreemfs.pbrpc.xtreemfs_cleanup_get_resultsResponse) } - + + public interface xtreemfs_cleanup_is_runningResponseOrBuilder + extends com.google.protobuf.MessageOrBuilder { + + // required bool is_running = 1; + /** + * required bool is_running = 1; + */ + boolean hasIsRunning(); + /** + * required bool is_running = 1; + */ + boolean getIsRunning(); + } + /** + * Protobuf type {@code xtreemfs.pbrpc.xtreemfs_cleanup_is_runningResponse} + */ public static final class xtreemfs_cleanup_is_runningResponse extends - com.google.protobuf.GeneratedMessage { + com.google.protobuf.GeneratedMessage + implements xtreemfs_cleanup_is_runningResponseOrBuilder { // Use xtreemfs_cleanup_is_runningResponse.newBuilder() to construct. - private xtreemfs_cleanup_is_runningResponse() { - initFields(); + private xtreemfs_cleanup_is_runningResponse(com.google.protobuf.GeneratedMessage.Builder builder) { + super(builder); + this.unknownFields = builder.getUnknownFields(); } - private xtreemfs_cleanup_is_runningResponse(boolean noInit) {} - + private xtreemfs_cleanup_is_runningResponse(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); } + private static final xtreemfs_cleanup_is_runningResponse defaultInstance; public static xtreemfs_cleanup_is_runningResponse getDefaultInstance() { return defaultInstance; } - + public xtreemfs_cleanup_is_runningResponse getDefaultInstanceForType() { return defaultInstance; } - + + private final com.google.protobuf.UnknownFieldSet unknownFields; + @java.lang.Override + public final com.google.protobuf.UnknownFieldSet + getUnknownFields() { + return this.unknownFields; + } + private xtreemfs_cleanup_is_runningResponse( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + initFields(); + int mutable_bitField0_ = 0; + com.google.protobuf.UnknownFieldSet.Builder unknownFields = + com.google.protobuf.UnknownFieldSet.newBuilder(); + try { + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch (tag) { + case 0: + done = true; + break; + default: { + if (!parseUnknownField(input, unknownFields, + extensionRegistry, tag)) { + done = true; + } + break; + } + case 8: { + bitField0_ |= 0x00000001; + isRunning_ = input.readBool(); + break; + } + } + } + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(this); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException( + e.getMessage()).setUnfinishedMessage(this); + } finally { + this.unknownFields = unknownFields.build(); + makeExtensionsImmutable(); + } + } public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { return org.xtreemfs.pbrpc.generatedinterfaces.OSD.internal_static_xtreemfs_pbrpc_xtreemfs_cleanup_is_runningResponse_descriptor; } - + protected com.google.protobuf.GeneratedMessage.FieldAccessorTable internalGetFieldAccessorTable() { - return org.xtreemfs.pbrpc.generatedinterfaces.OSD.internal_static_xtreemfs_pbrpc_xtreemfs_cleanup_is_runningResponse_fieldAccessorTable; + return org.xtreemfs.pbrpc.generatedinterfaces.OSD.internal_static_xtreemfs_pbrpc_xtreemfs_cleanup_is_runningResponse_fieldAccessorTable + .ensureFieldAccessorsInitialized( + org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_cleanup_is_runningResponse.class, org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_cleanup_is_runningResponse.Builder.class); + } + + public static com.google.protobuf.Parser PARSER = + new com.google.protobuf.AbstractParser() { + public xtreemfs_cleanup_is_runningResponse parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return new xtreemfs_cleanup_is_runningResponse(input, extensionRegistry); + } + }; + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; } - + + private int bitField0_; // required bool is_running = 1; public static final int IS_RUNNING_FIELD_NUMBER = 1; - private boolean hasIsRunning; - private boolean isRunning_ = false; - public boolean hasIsRunning() { return hasIsRunning; } - public boolean getIsRunning() { return isRunning_; } - + private boolean isRunning_; + /** + * required bool is_running = 1; + */ + public boolean hasIsRunning() { + return ((bitField0_ & 0x00000001) == 0x00000001); + } + /** + * required bool is_running = 1; + */ + public boolean getIsRunning() { + return isRunning_; + } + private void initFields() { + isRunning_ = false; } + private byte memoizedIsInitialized = -1; public final boolean isInitialized() { - if (!hasIsRunning) return false; + byte isInitialized = memoizedIsInitialized; + if (isInitialized != -1) return isInitialized == 1; + + if (!hasIsRunning()) { + memoizedIsInitialized = 0; + return false; + } + memoizedIsInitialized = 1; return true; } - + public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException { getSerializedSize(); - if (hasIsRunning()) { - output.writeBool(1, getIsRunning()); + if (((bitField0_ & 0x00000001) == 0x00000001)) { + output.writeBool(1, isRunning_); } getUnknownFields().writeTo(output); } - + private int memoizedSerializedSize = -1; public int getSerializedSize() { int size = memoizedSerializedSize; if (size != -1) return size; - + size = 0; - if (hasIsRunning()) { + if (((bitField0_ & 0x00000001) == 0x00000001)) { size += com.google.protobuf.CodedOutputStream - .computeBoolSize(1, getIsRunning()); + .computeBoolSize(1, isRunning_); } size += getUnknownFields().getSerializedSize(); memoizedSerializedSize = size; return size; } - + + private static final long serialVersionUID = 0L; + @java.lang.Override + protected java.lang.Object writeReplace() + throws java.io.ObjectStreamException { + return super.writeReplace(); + } + public static org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_cleanup_is_runningResponse parseFrom( com.google.protobuf.ByteString data) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data).buildParsed(); + return PARSER.parseFrom(data); } public static org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_cleanup_is_runningResponse parseFrom( com.google.protobuf.ByteString data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(data, extensionRegistry); } public static org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_cleanup_is_runningResponse parseFrom(byte[] data) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data).buildParsed(); + return PARSER.parseFrom(data); } public static org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_cleanup_is_runningResponse parseFrom( byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(data, extensionRegistry); } public static org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_cleanup_is_runningResponse parseFrom(java.io.InputStream input) throws java.io.IOException { - return newBuilder().mergeFrom(input).buildParsed(); + return PARSER.parseFrom(input); } public static org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_cleanup_is_runningResponse parseFrom( java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - return newBuilder().mergeFrom(input, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(input, extensionRegistry); } public static org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_cleanup_is_runningResponse parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException { - Builder builder = newBuilder(); - if (builder.mergeDelimitedFrom(input)) { - return builder.buildParsed(); - } else { - return null; - } + return PARSER.parseDelimitedFrom(input); } public static org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_cleanup_is_runningResponse parseDelimitedFrom( java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - Builder builder = newBuilder(); - if (builder.mergeDelimitedFrom(input, extensionRegistry)) { - return builder.buildParsed(); - } else { - return null; - } + return PARSER.parseDelimitedFrom(input, extensionRegistry); } public static org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_cleanup_is_runningResponse parseFrom( com.google.protobuf.CodedInputStream input) throws java.io.IOException { - return newBuilder().mergeFrom(input).buildParsed(); + return PARSER.parseFrom(input); } public static org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_cleanup_is_runningResponse parseFrom( com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - return newBuilder().mergeFrom(input, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(input, extensionRegistry); } - + public static Builder newBuilder() { return Builder.create(); } public Builder newBuilderForType() { return newBuilder(); } public static Builder newBuilder(org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_cleanup_is_runningResponse prototype) { return newBuilder().mergeFrom(prototype); } public Builder toBuilder() { return newBuilder(this); } - + + @java.lang.Override + protected Builder newBuilderForType( + com.google.protobuf.GeneratedMessage.BuilderParent parent) { + Builder builder = new Builder(parent); + return builder; + } + /** + * Protobuf type {@code xtreemfs.pbrpc.xtreemfs_cleanup_is_runningResponse} + */ public static final class Builder extends - com.google.protobuf.GeneratedMessage.Builder { - private org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_cleanup_is_runningResponse result; - + com.google.protobuf.GeneratedMessage.Builder + implements org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_cleanup_is_runningResponseOrBuilder { + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return org.xtreemfs.pbrpc.generatedinterfaces.OSD.internal_static_xtreemfs_pbrpc_xtreemfs_cleanup_is_runningResponse_descriptor; + } + + protected com.google.protobuf.GeneratedMessage.FieldAccessorTable + internalGetFieldAccessorTable() { + return org.xtreemfs.pbrpc.generatedinterfaces.OSD.internal_static_xtreemfs_pbrpc_xtreemfs_cleanup_is_runningResponse_fieldAccessorTable + .ensureFieldAccessorsInitialized( + org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_cleanup_is_runningResponse.class, org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_cleanup_is_runningResponse.Builder.class); + } + // Construct using org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_cleanup_is_runningResponse.newBuilder() - private Builder() {} - - private static Builder create() { - Builder builder = new Builder(); - builder.result = new org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_cleanup_is_runningResponse(); - return builder; + private Builder() { + maybeForceBuilderInitialization(); } - - protected org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_cleanup_is_runningResponse internalGetResult() { - return result; + + private Builder( + com.google.protobuf.GeneratedMessage.BuilderParent parent) { + super(parent); + maybeForceBuilderInitialization(); } - - public Builder clear() { - if (result == null) { - throw new IllegalStateException( - "Cannot call clear() after build()."); + private void maybeForceBuilderInitialization() { + if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) { } - result = new org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_cleanup_is_runningResponse(); + } + private static Builder create() { + return new Builder(); + } + + public Builder clear() { + super.clear(); + isRunning_ = false; + bitField0_ = (bitField0_ & ~0x00000001); return this; } - + public Builder clone() { - return create().mergeFrom(result); + return create().mergeFrom(buildPartial()); } - + public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() { - return org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_cleanup_is_runningResponse.getDescriptor(); + return org.xtreemfs.pbrpc.generatedinterfaces.OSD.internal_static_xtreemfs_pbrpc_xtreemfs_cleanup_is_runningResponse_descriptor; } - + public org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_cleanup_is_runningResponse getDefaultInstanceForType() { return org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_cleanup_is_runningResponse.getDefaultInstance(); } - - public boolean isInitialized() { - return result.isInitialized(); - } + public org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_cleanup_is_runningResponse build() { - if (result != null && !isInitialized()) { + org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_cleanup_is_runningResponse result = buildPartial(); + if (!result.isInitialized()) { throw newUninitializedMessageException(result); } - return buildPartial(); - } - - private org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_cleanup_is_runningResponse buildParsed() - throws com.google.protobuf.InvalidProtocolBufferException { - if (!isInitialized()) { - throw newUninitializedMessageException( - result).asInvalidProtocolBufferException(); - } - return buildPartial(); + return result; } - + public org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_cleanup_is_runningResponse buildPartial() { - if (result == null) { - throw new IllegalStateException( - "build() has already been called on this Builder."); - } - org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_cleanup_is_runningResponse returnMe = result; - result = null; - return returnMe; + org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_cleanup_is_runningResponse result = new org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_cleanup_is_runningResponse(this); + int from_bitField0_ = bitField0_; + int to_bitField0_ = 0; + if (((from_bitField0_ & 0x00000001) == 0x00000001)) { + to_bitField0_ |= 0x00000001; + } + result.isRunning_ = isRunning_; + result.bitField0_ = to_bitField0_; + onBuilt(); + return result; } - + public Builder mergeFrom(com.google.protobuf.Message other) { if (other instanceof org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_cleanup_is_runningResponse) { return mergeFrom((org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_cleanup_is_runningResponse)other); @@ -7603,7 +15647,7 @@ public final class OSD { return this; } } - + public Builder mergeFrom(org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_cleanup_is_runningResponse other) { if (other == org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_cleanup_is_runningResponse.getDefaultInstance()) return this; if (other.hasIsRunning()) { @@ -7612,304 +15656,543 @@ public final class OSD { this.mergeUnknownFields(other.getUnknownFields()); return this; } - + + public final boolean isInitialized() { + if (!hasIsRunning()) { + + return false; + } + return true; + } + public Builder mergeFrom( com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - com.google.protobuf.UnknownFieldSet.Builder unknownFields = - com.google.protobuf.UnknownFieldSet.newBuilder( - this.getUnknownFields()); - while (true) { - int tag = input.readTag(); - switch (tag) { - case 0: - this.setUnknownFields(unknownFields.build()); - return this; - default: { - if (!parseUnknownField(input, unknownFields, - extensionRegistry, tag)) { - this.setUnknownFields(unknownFields.build()); - return this; - } - break; - } - case 8: { - setIsRunning(input.readBool()); - break; - } + org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_cleanup_is_runningResponse parsedMessage = null; + try { + parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + parsedMessage = (org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_cleanup_is_runningResponse) e.getUnfinishedMessage(); + throw e; + } finally { + if (parsedMessage != null) { + mergeFrom(parsedMessage); } } + return this; } - - + private int bitField0_; + // required bool is_running = 1; + private boolean isRunning_ ; + /** + * required bool is_running = 1; + */ public boolean hasIsRunning() { - return result.hasIsRunning(); + return ((bitField0_ & 0x00000001) == 0x00000001); } + /** + * required bool is_running = 1; + */ public boolean getIsRunning() { - return result.getIsRunning(); + return isRunning_; } + /** + * required bool is_running = 1; + */ public Builder setIsRunning(boolean value) { - result.hasIsRunning = true; - result.isRunning_ = value; + bitField0_ |= 0x00000001; + isRunning_ = value; + onChanged(); return this; } + /** + * required bool is_running = 1; + */ public Builder clearIsRunning() { - result.hasIsRunning = false; - result.isRunning_ = false; + bitField0_ = (bitField0_ & ~0x00000001); + isRunning_ = false; + onChanged(); return this; } - + // @@protoc_insertion_point(builder_scope:xtreemfs.pbrpc.xtreemfs_cleanup_is_runningResponse) } - + static { defaultInstance = new xtreemfs_cleanup_is_runningResponse(true); - org.xtreemfs.pbrpc.generatedinterfaces.OSD.internalForceInit(); defaultInstance.initFields(); } - + // @@protoc_insertion_point(class_scope:xtreemfs.pbrpc.xtreemfs_cleanup_is_runningResponse) } - + + public interface xtreemfs_cleanup_startRequestOrBuilder + extends com.google.protobuf.MessageOrBuilder { + + // required bool remove_zombies = 1; + /** + * required bool remove_zombies = 1; + * + *
+     * If true, objects for deleted files are deleted as well.
+     * 
+ */ + boolean hasRemoveZombies(); + /** + * required bool remove_zombies = 1; + * + *
+     * If true, objects for deleted files are deleted as well.
+     * 
+ */ + boolean getRemoveZombies(); + + // required bool remove_unavail_volume = 2; + /** + * required bool remove_unavail_volume = 2; + * + *
+     * If true, files for which the MRC cannot be contacted or
+     * where no volume DIR entry exists are deleted.
+     * 
+ */ + boolean hasRemoveUnavailVolume(); + /** + * required bool remove_unavail_volume = 2; + * + *
+     * If true, files for which the MRC cannot be contacted or
+     * where no volume DIR entry exists are deleted.
+     * 
+ */ + boolean getRemoveUnavailVolume(); + + // required bool lost_and_found = 3; + /** + * required bool lost_and_found = 3; + * + *
+     * If true, objects are not deleted but moved to lost and found.
+     * 
+ */ + boolean hasLostAndFound(); + /** + * required bool lost_and_found = 3; + * + *
+     * If true, objects are not deleted but moved to lost and found.
+     * 
+ */ + boolean getLostAndFound(); + } + /** + * Protobuf type {@code xtreemfs.pbrpc.xtreemfs_cleanup_startRequest} + */ public static final class xtreemfs_cleanup_startRequest extends - com.google.protobuf.GeneratedMessage { + com.google.protobuf.GeneratedMessage + implements xtreemfs_cleanup_startRequestOrBuilder { // Use xtreemfs_cleanup_startRequest.newBuilder() to construct. - private xtreemfs_cleanup_startRequest() { - initFields(); + private xtreemfs_cleanup_startRequest(com.google.protobuf.GeneratedMessage.Builder builder) { + super(builder); + this.unknownFields = builder.getUnknownFields(); } - private xtreemfs_cleanup_startRequest(boolean noInit) {} - + private xtreemfs_cleanup_startRequest(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); } + private static final xtreemfs_cleanup_startRequest defaultInstance; public static xtreemfs_cleanup_startRequest getDefaultInstance() { return defaultInstance; } - + public xtreemfs_cleanup_startRequest getDefaultInstanceForType() { return defaultInstance; } - + + private final com.google.protobuf.UnknownFieldSet unknownFields; + @java.lang.Override + public final com.google.protobuf.UnknownFieldSet + getUnknownFields() { + return this.unknownFields; + } + private xtreemfs_cleanup_startRequest( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + initFields(); + int mutable_bitField0_ = 0; + com.google.protobuf.UnknownFieldSet.Builder unknownFields = + com.google.protobuf.UnknownFieldSet.newBuilder(); + try { + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch (tag) { + case 0: + done = true; + break; + default: { + if (!parseUnknownField(input, unknownFields, + extensionRegistry, tag)) { + done = true; + } + break; + } + case 8: { + bitField0_ |= 0x00000001; + removeZombies_ = input.readBool(); + break; + } + case 16: { + bitField0_ |= 0x00000002; + removeUnavailVolume_ = input.readBool(); + break; + } + case 24: { + bitField0_ |= 0x00000004; + lostAndFound_ = input.readBool(); + break; + } + } + } + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(this); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException( + e.getMessage()).setUnfinishedMessage(this); + } finally { + this.unknownFields = unknownFields.build(); + makeExtensionsImmutable(); + } + } public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { return org.xtreemfs.pbrpc.generatedinterfaces.OSD.internal_static_xtreemfs_pbrpc_xtreemfs_cleanup_startRequest_descriptor; } - + protected com.google.protobuf.GeneratedMessage.FieldAccessorTable internalGetFieldAccessorTable() { - return org.xtreemfs.pbrpc.generatedinterfaces.OSD.internal_static_xtreemfs_pbrpc_xtreemfs_cleanup_startRequest_fieldAccessorTable; + return org.xtreemfs.pbrpc.generatedinterfaces.OSD.internal_static_xtreemfs_pbrpc_xtreemfs_cleanup_startRequest_fieldAccessorTable + .ensureFieldAccessorsInitialized( + org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_cleanup_startRequest.class, org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_cleanup_startRequest.Builder.class); + } + + public static com.google.protobuf.Parser PARSER = + new com.google.protobuf.AbstractParser() { + public xtreemfs_cleanup_startRequest parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return new xtreemfs_cleanup_startRequest(input, extensionRegistry); + } + }; + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; } - + + private int bitField0_; // required bool remove_zombies = 1; public static final int REMOVE_ZOMBIES_FIELD_NUMBER = 1; - private boolean hasRemoveZombies; - private boolean removeZombies_ = false; - public boolean hasRemoveZombies() { return hasRemoveZombies; } - public boolean getRemoveZombies() { return removeZombies_; } - + private boolean removeZombies_; + /** + * required bool remove_zombies = 1; + * + *
+     * If true, objects for deleted files are deleted as well.
+     * 
+ */ + public boolean hasRemoveZombies() { + return ((bitField0_ & 0x00000001) == 0x00000001); + } + /** + * required bool remove_zombies = 1; + * + *
+     * If true, objects for deleted files are deleted as well.
+     * 
+ */ + public boolean getRemoveZombies() { + return removeZombies_; + } + // required bool remove_unavail_volume = 2; public static final int REMOVE_UNAVAIL_VOLUME_FIELD_NUMBER = 2; - private boolean hasRemoveUnavailVolume; - private boolean removeUnavailVolume_ = false; - public boolean hasRemoveUnavailVolume() { return hasRemoveUnavailVolume; } - public boolean getRemoveUnavailVolume() { return removeUnavailVolume_; } - + private boolean removeUnavailVolume_; + /** + * required bool remove_unavail_volume = 2; + * + *
+     * If true, files for which the MRC cannot be contacted or
+     * where no volume DIR entry exists are deleted.
+     * 
+ */ + public boolean hasRemoveUnavailVolume() { + return ((bitField0_ & 0x00000002) == 0x00000002); + } + /** + * required bool remove_unavail_volume = 2; + * + *
+     * If true, files for which the MRC cannot be contacted or
+     * where no volume DIR entry exists are deleted.
+     * 
+ */ + public boolean getRemoveUnavailVolume() { + return removeUnavailVolume_; + } + // required bool lost_and_found = 3; public static final int LOST_AND_FOUND_FIELD_NUMBER = 3; - private boolean hasLostAndFound; - private boolean lostAndFound_ = false; - public boolean hasLostAndFound() { return hasLostAndFound; } - public boolean getLostAndFound() { return lostAndFound_; } - + private boolean lostAndFound_; + /** + * required bool lost_and_found = 3; + * + *
+     * If true, objects are not deleted but moved to lost and found.
+     * 
+ */ + public boolean hasLostAndFound() { + return ((bitField0_ & 0x00000004) == 0x00000004); + } + /** + * required bool lost_and_found = 3; + * + *
+     * If true, objects are not deleted but moved to lost and found.
+     * 
+ */ + public boolean getLostAndFound() { + return lostAndFound_; + } + private void initFields() { + removeZombies_ = false; + removeUnavailVolume_ = false; + lostAndFound_ = false; } + private byte memoizedIsInitialized = -1; public final boolean isInitialized() { - if (!hasRemoveZombies) return false; - if (!hasRemoveUnavailVolume) return false; - if (!hasLostAndFound) return false; + byte isInitialized = memoizedIsInitialized; + if (isInitialized != -1) return isInitialized == 1; + + if (!hasRemoveZombies()) { + memoizedIsInitialized = 0; + return false; + } + if (!hasRemoveUnavailVolume()) { + memoizedIsInitialized = 0; + return false; + } + if (!hasLostAndFound()) { + memoizedIsInitialized = 0; + return false; + } + memoizedIsInitialized = 1; return true; } - + public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException { getSerializedSize(); - if (hasRemoveZombies()) { - output.writeBool(1, getRemoveZombies()); + if (((bitField0_ & 0x00000001) == 0x00000001)) { + output.writeBool(1, removeZombies_); } - if (hasRemoveUnavailVolume()) { - output.writeBool(2, getRemoveUnavailVolume()); + if (((bitField0_ & 0x00000002) == 0x00000002)) { + output.writeBool(2, removeUnavailVolume_); } - if (hasLostAndFound()) { - output.writeBool(3, getLostAndFound()); + if (((bitField0_ & 0x00000004) == 0x00000004)) { + output.writeBool(3, lostAndFound_); } getUnknownFields().writeTo(output); } - + private int memoizedSerializedSize = -1; public int getSerializedSize() { int size = memoizedSerializedSize; if (size != -1) return size; - + size = 0; - if (hasRemoveZombies()) { + if (((bitField0_ & 0x00000001) == 0x00000001)) { size += com.google.protobuf.CodedOutputStream - .computeBoolSize(1, getRemoveZombies()); + .computeBoolSize(1, removeZombies_); } - if (hasRemoveUnavailVolume()) { + if (((bitField0_ & 0x00000002) == 0x00000002)) { size += com.google.protobuf.CodedOutputStream - .computeBoolSize(2, getRemoveUnavailVolume()); + .computeBoolSize(2, removeUnavailVolume_); } - if (hasLostAndFound()) { + if (((bitField0_ & 0x00000004) == 0x00000004)) { size += com.google.protobuf.CodedOutputStream - .computeBoolSize(3, getLostAndFound()); + .computeBoolSize(3, lostAndFound_); } size += getUnknownFields().getSerializedSize(); memoizedSerializedSize = size; return size; } - + + private static final long serialVersionUID = 0L; + @java.lang.Override + protected java.lang.Object writeReplace() + throws java.io.ObjectStreamException { + return super.writeReplace(); + } + public static org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_cleanup_startRequest parseFrom( com.google.protobuf.ByteString data) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data).buildParsed(); + return PARSER.parseFrom(data); } public static org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_cleanup_startRequest parseFrom( com.google.protobuf.ByteString data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(data, extensionRegistry); } public static org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_cleanup_startRequest parseFrom(byte[] data) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data).buildParsed(); + return PARSER.parseFrom(data); } public static org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_cleanup_startRequest parseFrom( byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(data, extensionRegistry); } public static org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_cleanup_startRequest parseFrom(java.io.InputStream input) throws java.io.IOException { - return newBuilder().mergeFrom(input).buildParsed(); + return PARSER.parseFrom(input); } public static org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_cleanup_startRequest parseFrom( java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - return newBuilder().mergeFrom(input, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(input, extensionRegistry); } public static org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_cleanup_startRequest parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException { - Builder builder = newBuilder(); - if (builder.mergeDelimitedFrom(input)) { - return builder.buildParsed(); - } else { - return null; - } + return PARSER.parseDelimitedFrom(input); } public static org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_cleanup_startRequest parseDelimitedFrom( java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - Builder builder = newBuilder(); - if (builder.mergeDelimitedFrom(input, extensionRegistry)) { - return builder.buildParsed(); - } else { - return null; - } + return PARSER.parseDelimitedFrom(input, extensionRegistry); } public static org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_cleanup_startRequest parseFrom( com.google.protobuf.CodedInputStream input) throws java.io.IOException { - return newBuilder().mergeFrom(input).buildParsed(); + return PARSER.parseFrom(input); } public static org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_cleanup_startRequest parseFrom( com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - return newBuilder().mergeFrom(input, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(input, extensionRegistry); } - + public static Builder newBuilder() { return Builder.create(); } public Builder newBuilderForType() { return newBuilder(); } public static Builder newBuilder(org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_cleanup_startRequest prototype) { return newBuilder().mergeFrom(prototype); } public Builder toBuilder() { return newBuilder(this); } - + + @java.lang.Override + protected Builder newBuilderForType( + com.google.protobuf.GeneratedMessage.BuilderParent parent) { + Builder builder = new Builder(parent); + return builder; + } + /** + * Protobuf type {@code xtreemfs.pbrpc.xtreemfs_cleanup_startRequest} + */ public static final class Builder extends - com.google.protobuf.GeneratedMessage.Builder { - private org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_cleanup_startRequest result; - + com.google.protobuf.GeneratedMessage.Builder + implements org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_cleanup_startRequestOrBuilder { + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return org.xtreemfs.pbrpc.generatedinterfaces.OSD.internal_static_xtreemfs_pbrpc_xtreemfs_cleanup_startRequest_descriptor; + } + + protected com.google.protobuf.GeneratedMessage.FieldAccessorTable + internalGetFieldAccessorTable() { + return org.xtreemfs.pbrpc.generatedinterfaces.OSD.internal_static_xtreemfs_pbrpc_xtreemfs_cleanup_startRequest_fieldAccessorTable + .ensureFieldAccessorsInitialized( + org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_cleanup_startRequest.class, org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_cleanup_startRequest.Builder.class); + } + // Construct using org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_cleanup_startRequest.newBuilder() - private Builder() {} - - private static Builder create() { - Builder builder = new Builder(); - builder.result = new org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_cleanup_startRequest(); - return builder; + private Builder() { + maybeForceBuilderInitialization(); } - - protected org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_cleanup_startRequest internalGetResult() { - return result; + + private Builder( + com.google.protobuf.GeneratedMessage.BuilderParent parent) { + super(parent); + maybeForceBuilderInitialization(); } - - public Builder clear() { - if (result == null) { - throw new IllegalStateException( - "Cannot call clear() after build()."); + private void maybeForceBuilderInitialization() { + if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) { } - result = new org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_cleanup_startRequest(); + } + private static Builder create() { + return new Builder(); + } + + public Builder clear() { + super.clear(); + removeZombies_ = false; + bitField0_ = (bitField0_ & ~0x00000001); + removeUnavailVolume_ = false; + bitField0_ = (bitField0_ & ~0x00000002); + lostAndFound_ = false; + bitField0_ = (bitField0_ & ~0x00000004); return this; } - + public Builder clone() { - return create().mergeFrom(result); + return create().mergeFrom(buildPartial()); } - + public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() { - return org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_cleanup_startRequest.getDescriptor(); + return org.xtreemfs.pbrpc.generatedinterfaces.OSD.internal_static_xtreemfs_pbrpc_xtreemfs_cleanup_startRequest_descriptor; } - + public org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_cleanup_startRequest getDefaultInstanceForType() { return org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_cleanup_startRequest.getDefaultInstance(); } - - public boolean isInitialized() { - return result.isInitialized(); - } + public org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_cleanup_startRequest build() { - if (result != null && !isInitialized()) { + org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_cleanup_startRequest result = buildPartial(); + if (!result.isInitialized()) { throw newUninitializedMessageException(result); } - return buildPartial(); - } - - private org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_cleanup_startRequest buildParsed() - throws com.google.protobuf.InvalidProtocolBufferException { - if (!isInitialized()) { - throw newUninitializedMessageException( - result).asInvalidProtocolBufferException(); - } - return buildPartial(); + return result; } - + public org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_cleanup_startRequest buildPartial() { - if (result == null) { - throw new IllegalStateException( - "build() has already been called on this Builder."); - } - org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_cleanup_startRequest returnMe = result; - result = null; - return returnMe; + org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_cleanup_startRequest result = new org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_cleanup_startRequest(this); + int from_bitField0_ = bitField0_; + int to_bitField0_ = 0; + if (((from_bitField0_ & 0x00000001) == 0x00000001)) { + to_bitField0_ |= 0x00000001; + } + result.removeZombies_ = removeZombies_; + if (((from_bitField0_ & 0x00000002) == 0x00000002)) { + to_bitField0_ |= 0x00000002; + } + result.removeUnavailVolume_ = removeUnavailVolume_; + if (((from_bitField0_ & 0x00000004) == 0x00000004)) { + to_bitField0_ |= 0x00000004; + } + result.lostAndFound_ = lostAndFound_; + result.bitField0_ = to_bitField0_; + onBuilt(); + return result; } - + public Builder mergeFrom(com.google.protobuf.Message other) { if (other instanceof org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_cleanup_startRequest) { return mergeFrom((org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_cleanup_startRequest)other); @@ -7918,7 +16201,7 @@ public final class OSD { return this; } } - + public Builder mergeFrom(org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_cleanup_startRequest other) { if (other == org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_cleanup_startRequest.getDefaultInstance()) return this; if (other.hasRemoveZombies()) { @@ -7929,322 +16212,555 @@ public final class OSD { } if (other.hasLostAndFound()) { setLostAndFound(other.getLostAndFound()); - } - this.mergeUnknownFields(other.getUnknownFields()); - return this; - } - - public Builder mergeFrom( - com.google.protobuf.CodedInputStream input, - com.google.protobuf.ExtensionRegistryLite extensionRegistry) - throws java.io.IOException { - com.google.protobuf.UnknownFieldSet.Builder unknownFields = - com.google.protobuf.UnknownFieldSet.newBuilder( - this.getUnknownFields()); - while (true) { - int tag = input.readTag(); - switch (tag) { - case 0: - this.setUnknownFields(unknownFields.build()); - return this; - default: { - if (!parseUnknownField(input, unknownFields, - extensionRegistry, tag)) { - this.setUnknownFields(unknownFields.build()); - return this; - } - break; - } - case 8: { - setRemoveZombies(input.readBool()); - break; - } - case 16: { - setRemoveUnavailVolume(input.readBool()); - break; - } - case 24: { - setLostAndFound(input.readBool()); - break; - } + } + this.mergeUnknownFields(other.getUnknownFields()); + return this; + } + + public final boolean isInitialized() { + if (!hasRemoveZombies()) { + + return false; + } + if (!hasRemoveUnavailVolume()) { + + return false; + } + if (!hasLostAndFound()) { + + return false; + } + return true; + } + + public Builder mergeFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_cleanup_startRequest parsedMessage = null; + try { + parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + parsedMessage = (org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_cleanup_startRequest) e.getUnfinishedMessage(); + throw e; + } finally { + if (parsedMessage != null) { + mergeFrom(parsedMessage); } } + return this; } - - + private int bitField0_; + // required bool remove_zombies = 1; + private boolean removeZombies_ ; + /** + * required bool remove_zombies = 1; + * + *
+       * If true, objects for deleted files are deleted as well.
+       * 
+ */ public boolean hasRemoveZombies() { - return result.hasRemoveZombies(); - } + return ((bitField0_ & 0x00000001) == 0x00000001); + } + /** + * required bool remove_zombies = 1; + * + *
+       * If true, objects for deleted files are deleted as well.
+       * 
+ */ public boolean getRemoveZombies() { - return result.getRemoveZombies(); - } + return removeZombies_; + } + /** + * required bool remove_zombies = 1; + * + *
+       * If true, objects for deleted files are deleted as well.
+       * 
+ */ public Builder setRemoveZombies(boolean value) { - result.hasRemoveZombies = true; - result.removeZombies_ = value; - return this; - } + bitField0_ |= 0x00000001; + removeZombies_ = value; + onChanged(); + return this; + } + /** + * required bool remove_zombies = 1; + * + *
+       * If true, objects for deleted files are deleted as well.
+       * 
+ */ public Builder clearRemoveZombies() { - result.hasRemoveZombies = false; - result.removeZombies_ = false; + bitField0_ = (bitField0_ & ~0x00000001); + removeZombies_ = false; + onChanged(); return this; } - + // required bool remove_unavail_volume = 2; + private boolean removeUnavailVolume_ ; + /** + * required bool remove_unavail_volume = 2; + * + *
+       * If true, files for which the MRC cannot be contacted or
+       * where no volume DIR entry exists are deleted.
+       * 
+ */ public boolean hasRemoveUnavailVolume() { - return result.hasRemoveUnavailVolume(); - } + return ((bitField0_ & 0x00000002) == 0x00000002); + } + /** + * required bool remove_unavail_volume = 2; + * + *
+       * If true, files for which the MRC cannot be contacted or
+       * where no volume DIR entry exists are deleted.
+       * 
+ */ public boolean getRemoveUnavailVolume() { - return result.getRemoveUnavailVolume(); - } + return removeUnavailVolume_; + } + /** + * required bool remove_unavail_volume = 2; + * + *
+       * If true, files for which the MRC cannot be contacted or
+       * where no volume DIR entry exists are deleted.
+       * 
+ */ public Builder setRemoveUnavailVolume(boolean value) { - result.hasRemoveUnavailVolume = true; - result.removeUnavailVolume_ = value; - return this; - } + bitField0_ |= 0x00000002; + removeUnavailVolume_ = value; + onChanged(); + return this; + } + /** + * required bool remove_unavail_volume = 2; + * + *
+       * If true, files for which the MRC cannot be contacted or
+       * where no volume DIR entry exists are deleted.
+       * 
+ */ public Builder clearRemoveUnavailVolume() { - result.hasRemoveUnavailVolume = false; - result.removeUnavailVolume_ = false; + bitField0_ = (bitField0_ & ~0x00000002); + removeUnavailVolume_ = false; + onChanged(); return this; } - + // required bool lost_and_found = 3; + private boolean lostAndFound_ ; + /** + * required bool lost_and_found = 3; + * + *
+       * If true, objects are not deleted but moved to lost and found.
+       * 
+ */ public boolean hasLostAndFound() { - return result.hasLostAndFound(); - } + return ((bitField0_ & 0x00000004) == 0x00000004); + } + /** + * required bool lost_and_found = 3; + * + *
+       * If true, objects are not deleted but moved to lost and found.
+       * 
+ */ public boolean getLostAndFound() { - return result.getLostAndFound(); - } + return lostAndFound_; + } + /** + * required bool lost_and_found = 3; + * + *
+       * If true, objects are not deleted but moved to lost and found.
+       * 
+ */ public Builder setLostAndFound(boolean value) { - result.hasLostAndFound = true; - result.lostAndFound_ = value; - return this; - } + bitField0_ |= 0x00000004; + lostAndFound_ = value; + onChanged(); + return this; + } + /** + * required bool lost_and_found = 3; + * + *
+       * If true, objects are not deleted but moved to lost and found.
+       * 
+ */ public Builder clearLostAndFound() { - result.hasLostAndFound = false; - result.lostAndFound_ = false; + bitField0_ = (bitField0_ & ~0x00000004); + lostAndFound_ = false; + onChanged(); return this; } - + // @@protoc_insertion_point(builder_scope:xtreemfs.pbrpc.xtreemfs_cleanup_startRequest) } - + static { defaultInstance = new xtreemfs_cleanup_startRequest(true); - org.xtreemfs.pbrpc.generatedinterfaces.OSD.internalForceInit(); defaultInstance.initFields(); } - + // @@protoc_insertion_point(class_scope:xtreemfs.pbrpc.xtreemfs_cleanup_startRequest) } - + + public interface xtreemfs_cleanup_statusResponseOrBuilder + extends com.google.protobuf.MessageOrBuilder { + + // required string status = 1; + /** + * required string status = 1; + */ + boolean hasStatus(); + /** + * required string status = 1; + */ + java.lang.String getStatus(); + /** + * required string status = 1; + */ + com.google.protobuf.ByteString + getStatusBytes(); + } + /** + * Protobuf type {@code xtreemfs.pbrpc.xtreemfs_cleanup_statusResponse} + */ public static final class xtreemfs_cleanup_statusResponse extends - com.google.protobuf.GeneratedMessage { + com.google.protobuf.GeneratedMessage + implements xtreemfs_cleanup_statusResponseOrBuilder { // Use xtreemfs_cleanup_statusResponse.newBuilder() to construct. - private xtreemfs_cleanup_statusResponse() { - initFields(); + private xtreemfs_cleanup_statusResponse(com.google.protobuf.GeneratedMessage.Builder builder) { + super(builder); + this.unknownFields = builder.getUnknownFields(); } - private xtreemfs_cleanup_statusResponse(boolean noInit) {} - + private xtreemfs_cleanup_statusResponse(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); } + private static final xtreemfs_cleanup_statusResponse defaultInstance; public static xtreemfs_cleanup_statusResponse getDefaultInstance() { return defaultInstance; } - + public xtreemfs_cleanup_statusResponse getDefaultInstanceForType() { return defaultInstance; } - + + private final com.google.protobuf.UnknownFieldSet unknownFields; + @java.lang.Override + public final com.google.protobuf.UnknownFieldSet + getUnknownFields() { + return this.unknownFields; + } + private xtreemfs_cleanup_statusResponse( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + initFields(); + int mutable_bitField0_ = 0; + com.google.protobuf.UnknownFieldSet.Builder unknownFields = + com.google.protobuf.UnknownFieldSet.newBuilder(); + try { + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch (tag) { + case 0: + done = true; + break; + default: { + if (!parseUnknownField(input, unknownFields, + extensionRegistry, tag)) { + done = true; + } + break; + } + case 10: { + bitField0_ |= 0x00000001; + status_ = input.readBytes(); + break; + } + } + } + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(this); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException( + e.getMessage()).setUnfinishedMessage(this); + } finally { + this.unknownFields = unknownFields.build(); + makeExtensionsImmutable(); + } + } public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { return org.xtreemfs.pbrpc.generatedinterfaces.OSD.internal_static_xtreemfs_pbrpc_xtreemfs_cleanup_statusResponse_descriptor; } - + protected com.google.protobuf.GeneratedMessage.FieldAccessorTable internalGetFieldAccessorTable() { - return org.xtreemfs.pbrpc.generatedinterfaces.OSD.internal_static_xtreemfs_pbrpc_xtreemfs_cleanup_statusResponse_fieldAccessorTable; + return org.xtreemfs.pbrpc.generatedinterfaces.OSD.internal_static_xtreemfs_pbrpc_xtreemfs_cleanup_statusResponse_fieldAccessorTable + .ensureFieldAccessorsInitialized( + org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_cleanup_statusResponse.class, org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_cleanup_statusResponse.Builder.class); } - + + public static com.google.protobuf.Parser PARSER = + new com.google.protobuf.AbstractParser() { + public xtreemfs_cleanup_statusResponse parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return new xtreemfs_cleanup_statusResponse(input, extensionRegistry); + } + }; + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; + } + + private int bitField0_; // required string status = 1; public static final int STATUS_FIELD_NUMBER = 1; - private boolean hasStatus; - private java.lang.String status_ = ""; - public boolean hasStatus() { return hasStatus; } - public java.lang.String getStatus() { return status_; } - + private java.lang.Object status_; + /** + * required string status = 1; + */ + public boolean hasStatus() { + return ((bitField0_ & 0x00000001) == 0x00000001); + } + /** + * required string status = 1; + */ + public java.lang.String getStatus() { + java.lang.Object ref = status_; + if (ref instanceof java.lang.String) { + return (java.lang.String) ref; + } else { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + if (bs.isValidUtf8()) { + status_ = s; + } + return s; + } + } + /** + * required string status = 1; + */ + public com.google.protobuf.ByteString + getStatusBytes() { + java.lang.Object ref = status_; + if (ref instanceof java.lang.String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + status_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + private void initFields() { + status_ = ""; } + private byte memoizedIsInitialized = -1; public final boolean isInitialized() { - if (!hasStatus) return false; + byte isInitialized = memoizedIsInitialized; + if (isInitialized != -1) return isInitialized == 1; + + if (!hasStatus()) { + memoizedIsInitialized = 0; + return false; + } + memoizedIsInitialized = 1; return true; } - + public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException { getSerializedSize(); - if (hasStatus()) { - output.writeString(1, getStatus()); + if (((bitField0_ & 0x00000001) == 0x00000001)) { + output.writeBytes(1, getStatusBytes()); } getUnknownFields().writeTo(output); } - + private int memoizedSerializedSize = -1; public int getSerializedSize() { int size = memoizedSerializedSize; if (size != -1) return size; - + size = 0; - if (hasStatus()) { + if (((bitField0_ & 0x00000001) == 0x00000001)) { size += com.google.protobuf.CodedOutputStream - .computeStringSize(1, getStatus()); + .computeBytesSize(1, getStatusBytes()); } size += getUnknownFields().getSerializedSize(); memoizedSerializedSize = size; return size; } - + + private static final long serialVersionUID = 0L; + @java.lang.Override + protected java.lang.Object writeReplace() + throws java.io.ObjectStreamException { + return super.writeReplace(); + } + public static org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_cleanup_statusResponse parseFrom( com.google.protobuf.ByteString data) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data).buildParsed(); + return PARSER.parseFrom(data); } public static org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_cleanup_statusResponse parseFrom( com.google.protobuf.ByteString data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(data, extensionRegistry); } public static org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_cleanup_statusResponse parseFrom(byte[] data) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data).buildParsed(); + return PARSER.parseFrom(data); } public static org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_cleanup_statusResponse parseFrom( byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(data, extensionRegistry); } public static org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_cleanup_statusResponse parseFrom(java.io.InputStream input) throws java.io.IOException { - return newBuilder().mergeFrom(input).buildParsed(); + return PARSER.parseFrom(input); } public static org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_cleanup_statusResponse parseFrom( java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - return newBuilder().mergeFrom(input, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(input, extensionRegistry); } public static org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_cleanup_statusResponse parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException { - Builder builder = newBuilder(); - if (builder.mergeDelimitedFrom(input)) { - return builder.buildParsed(); - } else { - return null; - } + return PARSER.parseDelimitedFrom(input); } public static org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_cleanup_statusResponse parseDelimitedFrom( java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - Builder builder = newBuilder(); - if (builder.mergeDelimitedFrom(input, extensionRegistry)) { - return builder.buildParsed(); - } else { - return null; - } + return PARSER.parseDelimitedFrom(input, extensionRegistry); } public static org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_cleanup_statusResponse parseFrom( com.google.protobuf.CodedInputStream input) throws java.io.IOException { - return newBuilder().mergeFrom(input).buildParsed(); + return PARSER.parseFrom(input); } public static org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_cleanup_statusResponse parseFrom( com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - return newBuilder().mergeFrom(input, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(input, extensionRegistry); } - + public static Builder newBuilder() { return Builder.create(); } public Builder newBuilderForType() { return newBuilder(); } public static Builder newBuilder(org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_cleanup_statusResponse prototype) { return newBuilder().mergeFrom(prototype); } public Builder toBuilder() { return newBuilder(this); } - + + @java.lang.Override + protected Builder newBuilderForType( + com.google.protobuf.GeneratedMessage.BuilderParent parent) { + Builder builder = new Builder(parent); + return builder; + } + /** + * Protobuf type {@code xtreemfs.pbrpc.xtreemfs_cleanup_statusResponse} + */ public static final class Builder extends - com.google.protobuf.GeneratedMessage.Builder { - private org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_cleanup_statusResponse result; - + com.google.protobuf.GeneratedMessage.Builder + implements org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_cleanup_statusResponseOrBuilder { + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return org.xtreemfs.pbrpc.generatedinterfaces.OSD.internal_static_xtreemfs_pbrpc_xtreemfs_cleanup_statusResponse_descriptor; + } + + protected com.google.protobuf.GeneratedMessage.FieldAccessorTable + internalGetFieldAccessorTable() { + return org.xtreemfs.pbrpc.generatedinterfaces.OSD.internal_static_xtreemfs_pbrpc_xtreemfs_cleanup_statusResponse_fieldAccessorTable + .ensureFieldAccessorsInitialized( + org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_cleanup_statusResponse.class, org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_cleanup_statusResponse.Builder.class); + } + // Construct using org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_cleanup_statusResponse.newBuilder() - private Builder() {} - - private static Builder create() { - Builder builder = new Builder(); - builder.result = new org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_cleanup_statusResponse(); - return builder; + private Builder() { + maybeForceBuilderInitialization(); } - - protected org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_cleanup_statusResponse internalGetResult() { - return result; + + private Builder( + com.google.protobuf.GeneratedMessage.BuilderParent parent) { + super(parent); + maybeForceBuilderInitialization(); } - - public Builder clear() { - if (result == null) { - throw new IllegalStateException( - "Cannot call clear() after build()."); + private void maybeForceBuilderInitialization() { + if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) { } - result = new org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_cleanup_statusResponse(); + } + private static Builder create() { + return new Builder(); + } + + public Builder clear() { + super.clear(); + status_ = ""; + bitField0_ = (bitField0_ & ~0x00000001); return this; } - + public Builder clone() { - return create().mergeFrom(result); + return create().mergeFrom(buildPartial()); } - + public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() { - return org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_cleanup_statusResponse.getDescriptor(); + return org.xtreemfs.pbrpc.generatedinterfaces.OSD.internal_static_xtreemfs_pbrpc_xtreemfs_cleanup_statusResponse_descriptor; } - + public org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_cleanup_statusResponse getDefaultInstanceForType() { return org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_cleanup_statusResponse.getDefaultInstance(); } - - public boolean isInitialized() { - return result.isInitialized(); - } + public org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_cleanup_statusResponse build() { - if (result != null && !isInitialized()) { + org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_cleanup_statusResponse result = buildPartial(); + if (!result.isInitialized()) { throw newUninitializedMessageException(result); } - return buildPartial(); - } - - private org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_cleanup_statusResponse buildParsed() - throws com.google.protobuf.InvalidProtocolBufferException { - if (!isInitialized()) { - throw newUninitializedMessageException( - result).asInvalidProtocolBufferException(); - } - return buildPartial(); + return result; } - + public org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_cleanup_statusResponse buildPartial() { - if (result == null) { - throw new IllegalStateException( - "build() has already been called on this Builder."); - } - org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_cleanup_statusResponse returnMe = result; - result = null; - return returnMe; + org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_cleanup_statusResponse result = new org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_cleanup_statusResponse(this); + int from_bitField0_ = bitField0_; + int to_bitField0_ = 0; + if (((from_bitField0_ & 0x00000001) == 0x00000001)) { + to_bitField0_ |= 0x00000001; + } + result.status_ = status_; + result.bitField0_ = to_bitField0_; + onBuilt(); + return result; } - + public Builder mergeFrom(com.google.protobuf.Message other) { if (other instanceof org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_cleanup_statusResponse) { return mergeFrom((org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_cleanup_statusResponse)other); @@ -8253,333 +16769,655 @@ public final class OSD { return this; } } - + public Builder mergeFrom(org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_cleanup_statusResponse other) { if (other == org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_cleanup_statusResponse.getDefaultInstance()) return this; if (other.hasStatus()) { - setStatus(other.getStatus()); + bitField0_ |= 0x00000001; + status_ = other.status_; + onChanged(); } this.mergeUnknownFields(other.getUnknownFields()); return this; } - + + public final boolean isInitialized() { + if (!hasStatus()) { + + return false; + } + return true; + } + public Builder mergeFrom( com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - com.google.protobuf.UnknownFieldSet.Builder unknownFields = - com.google.protobuf.UnknownFieldSet.newBuilder( - this.getUnknownFields()); - while (true) { - int tag = input.readTag(); - switch (tag) { - case 0: - this.setUnknownFields(unknownFields.build()); - return this; - default: { - if (!parseUnknownField(input, unknownFields, - extensionRegistry, tag)) { - this.setUnknownFields(unknownFields.build()); - return this; - } - break; - } - case 10: { - setStatus(input.readString()); - break; - } + org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_cleanup_statusResponse parsedMessage = null; + try { + parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + parsedMessage = (org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_cleanup_statusResponse) e.getUnfinishedMessage(); + throw e; + } finally { + if (parsedMessage != null) { + mergeFrom(parsedMessage); } } + return this; } - - + private int bitField0_; + // required string status = 1; + private java.lang.Object status_ = ""; + /** + * required string status = 1; + */ public boolean hasStatus() { - return result.hasStatus(); + return ((bitField0_ & 0x00000001) == 0x00000001); } + /** + * required string status = 1; + */ public java.lang.String getStatus() { - return result.getStatus(); + java.lang.Object ref = status_; + if (!(ref instanceof java.lang.String)) { + java.lang.String s = ((com.google.protobuf.ByteString) ref) + .toStringUtf8(); + status_ = s; + return s; + } else { + return (java.lang.String) ref; + } + } + /** + * required string status = 1; + */ + public com.google.protobuf.ByteString + getStatusBytes() { + java.lang.Object ref = status_; + if (ref instanceof String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + status_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } } - public Builder setStatus(java.lang.String value) { + /** + * required string status = 1; + */ + public Builder setStatus( + java.lang.String value) { if (value == null) { throw new NullPointerException(); } - result.hasStatus = true; - result.status_ = value; + bitField0_ |= 0x00000001; + status_ = value; + onChanged(); return this; } + /** + * required string status = 1; + */ public Builder clearStatus() { - result.hasStatus = false; - result.status_ = getDefaultInstance().getStatus(); + bitField0_ = (bitField0_ & ~0x00000001); + status_ = getDefaultInstance().getStatus(); + onChanged(); + return this; + } + /** + * required string status = 1; + */ + public Builder setStatusBytes( + com.google.protobuf.ByteString value) { + if (value == null) { + throw new NullPointerException(); + } + bitField0_ |= 0x00000001; + status_ = value; + onChanged(); return this; } - + // @@protoc_insertion_point(builder_scope:xtreemfs.pbrpc.xtreemfs_cleanup_statusResponse) } - + static { defaultInstance = new xtreemfs_cleanup_statusResponse(true); - org.xtreemfs.pbrpc.generatedinterfaces.OSD.internalForceInit(); defaultInstance.initFields(); } - + // @@protoc_insertion_point(class_scope:xtreemfs.pbrpc.xtreemfs_cleanup_statusResponse) } - + + public interface xtreemfs_rwr_fetchRequestOrBuilder + extends com.google.protobuf.MessageOrBuilder { + + // required .xtreemfs.pbrpc.FileCredentials file_credentials = 1; + /** + * required .xtreemfs.pbrpc.FileCredentials file_credentials = 1; + */ + boolean hasFileCredentials(); + /** + * required .xtreemfs.pbrpc.FileCredentials file_credentials = 1; + */ + org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials getFileCredentials(); + /** + * required .xtreemfs.pbrpc.FileCredentials file_credentials = 1; + */ + org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentialsOrBuilder getFileCredentialsOrBuilder(); + + // required string file_id = 2; + /** + * required string file_id = 2; + */ + boolean hasFileId(); + /** + * required string file_id = 2; + */ + java.lang.String getFileId(); + /** + * required string file_id = 2; + */ + com.google.protobuf.ByteString + getFileIdBytes(); + + // required fixed64 object_number = 3; + /** + * required fixed64 object_number = 3; + */ + boolean hasObjectNumber(); + /** + * required fixed64 object_number = 3; + */ + long getObjectNumber(); + + // required fixed64 object_version = 4; + /** + * required fixed64 object_version = 4; + */ + boolean hasObjectVersion(); + /** + * required fixed64 object_version = 4; + */ + long getObjectVersion(); + } + /** + * Protobuf type {@code xtreemfs.pbrpc.xtreemfs_rwr_fetchRequest} + */ public static final class xtreemfs_rwr_fetchRequest extends - com.google.protobuf.GeneratedMessage { + com.google.protobuf.GeneratedMessage + implements xtreemfs_rwr_fetchRequestOrBuilder { // Use xtreemfs_rwr_fetchRequest.newBuilder() to construct. - private xtreemfs_rwr_fetchRequest() { - initFields(); + private xtreemfs_rwr_fetchRequest(com.google.protobuf.GeneratedMessage.Builder builder) { + super(builder); + this.unknownFields = builder.getUnknownFields(); } - private xtreemfs_rwr_fetchRequest(boolean noInit) {} - + private xtreemfs_rwr_fetchRequest(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); } + private static final xtreemfs_rwr_fetchRequest defaultInstance; public static xtreemfs_rwr_fetchRequest getDefaultInstance() { return defaultInstance; } - + public xtreemfs_rwr_fetchRequest getDefaultInstanceForType() { return defaultInstance; } - + + private final com.google.protobuf.UnknownFieldSet unknownFields; + @java.lang.Override + public final com.google.protobuf.UnknownFieldSet + getUnknownFields() { + return this.unknownFields; + } + private xtreemfs_rwr_fetchRequest( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + initFields(); + int mutable_bitField0_ = 0; + com.google.protobuf.UnknownFieldSet.Builder unknownFields = + com.google.protobuf.UnknownFieldSet.newBuilder(); + try { + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch (tag) { + case 0: + done = true; + break; + default: { + if (!parseUnknownField(input, unknownFields, + extensionRegistry, tag)) { + done = true; + } + break; + } + case 10: { + org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials.Builder subBuilder = null; + if (((bitField0_ & 0x00000001) == 0x00000001)) { + subBuilder = fileCredentials_.toBuilder(); + } + fileCredentials_ = input.readMessage(org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials.PARSER, extensionRegistry); + if (subBuilder != null) { + subBuilder.mergeFrom(fileCredentials_); + fileCredentials_ = subBuilder.buildPartial(); + } + bitField0_ |= 0x00000001; + break; + } + case 18: { + bitField0_ |= 0x00000002; + fileId_ = input.readBytes(); + break; + } + case 25: { + bitField0_ |= 0x00000004; + objectNumber_ = input.readFixed64(); + break; + } + case 33: { + bitField0_ |= 0x00000008; + objectVersion_ = input.readFixed64(); + break; + } + } + } + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(this); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException( + e.getMessage()).setUnfinishedMessage(this); + } finally { + this.unknownFields = unknownFields.build(); + makeExtensionsImmutable(); + } + } public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { return org.xtreemfs.pbrpc.generatedinterfaces.OSD.internal_static_xtreemfs_pbrpc_xtreemfs_rwr_fetchRequest_descriptor; } - + protected com.google.protobuf.GeneratedMessage.FieldAccessorTable internalGetFieldAccessorTable() { - return org.xtreemfs.pbrpc.generatedinterfaces.OSD.internal_static_xtreemfs_pbrpc_xtreemfs_rwr_fetchRequest_fieldAccessorTable; + return org.xtreemfs.pbrpc.generatedinterfaces.OSD.internal_static_xtreemfs_pbrpc_xtreemfs_rwr_fetchRequest_fieldAccessorTable + .ensureFieldAccessorsInitialized( + org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_rwr_fetchRequest.class, org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_rwr_fetchRequest.Builder.class); + } + + public static com.google.protobuf.Parser PARSER = + new com.google.protobuf.AbstractParser() { + public xtreemfs_rwr_fetchRequest parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return new xtreemfs_rwr_fetchRequest(input, extensionRegistry); + } + }; + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; } - + + private int bitField0_; // required .xtreemfs.pbrpc.FileCredentials file_credentials = 1; public static final int FILE_CREDENTIALS_FIELD_NUMBER = 1; - private boolean hasFileCredentials; private org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials fileCredentials_; - public boolean hasFileCredentials() { return hasFileCredentials; } - public org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials getFileCredentials() { return fileCredentials_; } - + /** + * required .xtreemfs.pbrpc.FileCredentials file_credentials = 1; + */ + public boolean hasFileCredentials() { + return ((bitField0_ & 0x00000001) == 0x00000001); + } + /** + * required .xtreemfs.pbrpc.FileCredentials file_credentials = 1; + */ + public org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials getFileCredentials() { + return fileCredentials_; + } + /** + * required .xtreemfs.pbrpc.FileCredentials file_credentials = 1; + */ + public org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentialsOrBuilder getFileCredentialsOrBuilder() { + return fileCredentials_; + } + // required string file_id = 2; public static final int FILE_ID_FIELD_NUMBER = 2; - private boolean hasFileId; - private java.lang.String fileId_ = ""; - public boolean hasFileId() { return hasFileId; } - public java.lang.String getFileId() { return fileId_; } - + private java.lang.Object fileId_; + /** + * required string file_id = 2; + */ + public boolean hasFileId() { + return ((bitField0_ & 0x00000002) == 0x00000002); + } + /** + * required string file_id = 2; + */ + public java.lang.String getFileId() { + java.lang.Object ref = fileId_; + if (ref instanceof java.lang.String) { + return (java.lang.String) ref; + } else { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + if (bs.isValidUtf8()) { + fileId_ = s; + } + return s; + } + } + /** + * required string file_id = 2; + */ + public com.google.protobuf.ByteString + getFileIdBytes() { + java.lang.Object ref = fileId_; + if (ref instanceof java.lang.String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + fileId_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + // required fixed64 object_number = 3; public static final int OBJECT_NUMBER_FIELD_NUMBER = 3; - private boolean hasObjectNumber; - private long objectNumber_ = 0L; - public boolean hasObjectNumber() { return hasObjectNumber; } - public long getObjectNumber() { return objectNumber_; } - + private long objectNumber_; + /** + * required fixed64 object_number = 3; + */ + public boolean hasObjectNumber() { + return ((bitField0_ & 0x00000004) == 0x00000004); + } + /** + * required fixed64 object_number = 3; + */ + public long getObjectNumber() { + return objectNumber_; + } + // required fixed64 object_version = 4; public static final int OBJECT_VERSION_FIELD_NUMBER = 4; - private boolean hasObjectVersion; - private long objectVersion_ = 0L; - public boolean hasObjectVersion() { return hasObjectVersion; } - public long getObjectVersion() { return objectVersion_; } - + private long objectVersion_; + /** + * required fixed64 object_version = 4; + */ + public boolean hasObjectVersion() { + return ((bitField0_ & 0x00000008) == 0x00000008); + } + /** + * required fixed64 object_version = 4; + */ + public long getObjectVersion() { + return objectVersion_; + } + private void initFields() { fileCredentials_ = org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials.getDefaultInstance(); + fileId_ = ""; + objectNumber_ = 0L; + objectVersion_ = 0L; } + private byte memoizedIsInitialized = -1; public final boolean isInitialized() { - if (!hasFileCredentials) return false; - if (!hasFileId) return false; - if (!hasObjectNumber) return false; - if (!hasObjectVersion) return false; - if (!getFileCredentials().isInitialized()) return false; + byte isInitialized = memoizedIsInitialized; + if (isInitialized != -1) return isInitialized == 1; + + if (!hasFileCredentials()) { + memoizedIsInitialized = 0; + return false; + } + if (!hasFileId()) { + memoizedIsInitialized = 0; + return false; + } + if (!hasObjectNumber()) { + memoizedIsInitialized = 0; + return false; + } + if (!hasObjectVersion()) { + memoizedIsInitialized = 0; + return false; + } + if (!getFileCredentials().isInitialized()) { + memoizedIsInitialized = 0; + return false; + } + memoizedIsInitialized = 1; return true; } - + public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException { getSerializedSize(); - if (hasFileCredentials()) { - output.writeMessage(1, getFileCredentials()); + if (((bitField0_ & 0x00000001) == 0x00000001)) { + output.writeMessage(1, fileCredentials_); } - if (hasFileId()) { - output.writeString(2, getFileId()); + if (((bitField0_ & 0x00000002) == 0x00000002)) { + output.writeBytes(2, getFileIdBytes()); } - if (hasObjectNumber()) { - output.writeFixed64(3, getObjectNumber()); + if (((bitField0_ & 0x00000004) == 0x00000004)) { + output.writeFixed64(3, objectNumber_); } - if (hasObjectVersion()) { - output.writeFixed64(4, getObjectVersion()); + if (((bitField0_ & 0x00000008) == 0x00000008)) { + output.writeFixed64(4, objectVersion_); } getUnknownFields().writeTo(output); } - + private int memoizedSerializedSize = -1; public int getSerializedSize() { int size = memoizedSerializedSize; if (size != -1) return size; - + size = 0; - if (hasFileCredentials()) { + if (((bitField0_ & 0x00000001) == 0x00000001)) { size += com.google.protobuf.CodedOutputStream - .computeMessageSize(1, getFileCredentials()); + .computeMessageSize(1, fileCredentials_); } - if (hasFileId()) { + if (((bitField0_ & 0x00000002) == 0x00000002)) { size += com.google.protobuf.CodedOutputStream - .computeStringSize(2, getFileId()); + .computeBytesSize(2, getFileIdBytes()); } - if (hasObjectNumber()) { + if (((bitField0_ & 0x00000004) == 0x00000004)) { size += com.google.protobuf.CodedOutputStream - .computeFixed64Size(3, getObjectNumber()); + .computeFixed64Size(3, objectNumber_); } - if (hasObjectVersion()) { + if (((bitField0_ & 0x00000008) == 0x00000008)) { size += com.google.protobuf.CodedOutputStream - .computeFixed64Size(4, getObjectVersion()); + .computeFixed64Size(4, objectVersion_); } size += getUnknownFields().getSerializedSize(); memoizedSerializedSize = size; return size; } - + + private static final long serialVersionUID = 0L; + @java.lang.Override + protected java.lang.Object writeReplace() + throws java.io.ObjectStreamException { + return super.writeReplace(); + } + public static org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_rwr_fetchRequest parseFrom( com.google.protobuf.ByteString data) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data).buildParsed(); + return PARSER.parseFrom(data); } public static org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_rwr_fetchRequest parseFrom( com.google.protobuf.ByteString data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(data, extensionRegistry); } public static org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_rwr_fetchRequest parseFrom(byte[] data) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data).buildParsed(); + return PARSER.parseFrom(data); } public static org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_rwr_fetchRequest parseFrom( byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(data, extensionRegistry); } public static org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_rwr_fetchRequest parseFrom(java.io.InputStream input) throws java.io.IOException { - return newBuilder().mergeFrom(input).buildParsed(); + return PARSER.parseFrom(input); } public static org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_rwr_fetchRequest parseFrom( java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - return newBuilder().mergeFrom(input, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(input, extensionRegistry); } public static org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_rwr_fetchRequest parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException { - Builder builder = newBuilder(); - if (builder.mergeDelimitedFrom(input)) { - return builder.buildParsed(); - } else { - return null; - } + return PARSER.parseDelimitedFrom(input); } public static org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_rwr_fetchRequest parseDelimitedFrom( java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - Builder builder = newBuilder(); - if (builder.mergeDelimitedFrom(input, extensionRegistry)) { - return builder.buildParsed(); - } else { - return null; - } + return PARSER.parseDelimitedFrom(input, extensionRegistry); } public static org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_rwr_fetchRequest parseFrom( com.google.protobuf.CodedInputStream input) throws java.io.IOException { - return newBuilder().mergeFrom(input).buildParsed(); + return PARSER.parseFrom(input); } public static org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_rwr_fetchRequest parseFrom( com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - return newBuilder().mergeFrom(input, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(input, extensionRegistry); } - + public static Builder newBuilder() { return Builder.create(); } public Builder newBuilderForType() { return newBuilder(); } public static Builder newBuilder(org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_rwr_fetchRequest prototype) { return newBuilder().mergeFrom(prototype); } public Builder toBuilder() { return newBuilder(this); } - + + @java.lang.Override + protected Builder newBuilderForType( + com.google.protobuf.GeneratedMessage.BuilderParent parent) { + Builder builder = new Builder(parent); + return builder; + } + /** + * Protobuf type {@code xtreemfs.pbrpc.xtreemfs_rwr_fetchRequest} + */ public static final class Builder extends - com.google.protobuf.GeneratedMessage.Builder { - private org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_rwr_fetchRequest result; - + com.google.protobuf.GeneratedMessage.Builder + implements org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_rwr_fetchRequestOrBuilder { + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return org.xtreemfs.pbrpc.generatedinterfaces.OSD.internal_static_xtreemfs_pbrpc_xtreemfs_rwr_fetchRequest_descriptor; + } + + protected com.google.protobuf.GeneratedMessage.FieldAccessorTable + internalGetFieldAccessorTable() { + return org.xtreemfs.pbrpc.generatedinterfaces.OSD.internal_static_xtreemfs_pbrpc_xtreemfs_rwr_fetchRequest_fieldAccessorTable + .ensureFieldAccessorsInitialized( + org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_rwr_fetchRequest.class, org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_rwr_fetchRequest.Builder.class); + } + // Construct using org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_rwr_fetchRequest.newBuilder() - private Builder() {} - - private static Builder create() { - Builder builder = new Builder(); - builder.result = new org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_rwr_fetchRequest(); - return builder; + private Builder() { + maybeForceBuilderInitialization(); } - - protected org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_rwr_fetchRequest internalGetResult() { - return result; + + private Builder( + com.google.protobuf.GeneratedMessage.BuilderParent parent) { + super(parent); + maybeForceBuilderInitialization(); + } + private void maybeForceBuilderInitialization() { + if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) { + getFileCredentialsFieldBuilder(); + } + } + private static Builder create() { + return new Builder(); } - + public Builder clear() { - if (result == null) { - throw new IllegalStateException( - "Cannot call clear() after build()."); + super.clear(); + if (fileCredentialsBuilder_ == null) { + fileCredentials_ = org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials.getDefaultInstance(); + } else { + fileCredentialsBuilder_.clear(); } - result = new org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_rwr_fetchRequest(); + bitField0_ = (bitField0_ & ~0x00000001); + fileId_ = ""; + bitField0_ = (bitField0_ & ~0x00000002); + objectNumber_ = 0L; + bitField0_ = (bitField0_ & ~0x00000004); + objectVersion_ = 0L; + bitField0_ = (bitField0_ & ~0x00000008); return this; } - + public Builder clone() { - return create().mergeFrom(result); + return create().mergeFrom(buildPartial()); } - + public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() { - return org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_rwr_fetchRequest.getDescriptor(); + return org.xtreemfs.pbrpc.generatedinterfaces.OSD.internal_static_xtreemfs_pbrpc_xtreemfs_rwr_fetchRequest_descriptor; } - + public org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_rwr_fetchRequest getDefaultInstanceForType() { return org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_rwr_fetchRequest.getDefaultInstance(); } - - public boolean isInitialized() { - return result.isInitialized(); - } + public org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_rwr_fetchRequest build() { - if (result != null && !isInitialized()) { - throw newUninitializedMessageException(result); - } - return buildPartial(); - } - - private org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_rwr_fetchRequest buildParsed() - throws com.google.protobuf.InvalidProtocolBufferException { - if (!isInitialized()) { - throw newUninitializedMessageException( - result).asInvalidProtocolBufferException(); + org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_rwr_fetchRequest result = buildPartial(); + if (!result.isInitialized()) { + throw newUninitializedMessageException(result); } - return buildPartial(); + return result; } - + public org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_rwr_fetchRequest buildPartial() { - if (result == null) { - throw new IllegalStateException( - "build() has already been called on this Builder."); + org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_rwr_fetchRequest result = new org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_rwr_fetchRequest(this); + int from_bitField0_ = bitField0_; + int to_bitField0_ = 0; + if (((from_bitField0_ & 0x00000001) == 0x00000001)) { + to_bitField0_ |= 0x00000001; + } + if (fileCredentialsBuilder_ == null) { + result.fileCredentials_ = fileCredentials_; + } else { + result.fileCredentials_ = fileCredentialsBuilder_.build(); } - org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_rwr_fetchRequest returnMe = result; - result = null; - return returnMe; + if (((from_bitField0_ & 0x00000002) == 0x00000002)) { + to_bitField0_ |= 0x00000002; + } + result.fileId_ = fileId_; + if (((from_bitField0_ & 0x00000004) == 0x00000004)) { + to_bitField0_ |= 0x00000004; + } + result.objectNumber_ = objectNumber_; + if (((from_bitField0_ & 0x00000008) == 0x00000008)) { + to_bitField0_ |= 0x00000008; + } + result.objectVersion_ = objectVersion_; + result.bitField0_ = to_bitField0_; + onBuilt(); + return result; } - + public Builder mergeFrom(com.google.protobuf.Message other) { if (other instanceof org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_rwr_fetchRequest) { return mergeFrom((org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_rwr_fetchRequest)other); @@ -8588,14 +17426,16 @@ public final class OSD { return this; } } - + public Builder mergeFrom(org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_rwr_fetchRequest other) { if (other == org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_rwr_fetchRequest.getDefaultInstance()) return this; if (other.hasFileCredentials()) { mergeFileCredentials(other.getFileCredentials()); } if (other.hasFileId()) { - setFileId(other.getFileId()); + bitField0_ |= 0x00000002; + fileId_ = other.fileId_; + onChanged(); } if (other.hasObjectNumber()) { setObjectNumber(other.getObjectNumber()); @@ -8606,414 +17446,843 @@ public final class OSD { this.mergeUnknownFields(other.getUnknownFields()); return this; } - + + public final boolean isInitialized() { + if (!hasFileCredentials()) { + + return false; + } + if (!hasFileId()) { + + return false; + } + if (!hasObjectNumber()) { + + return false; + } + if (!hasObjectVersion()) { + + return false; + } + if (!getFileCredentials().isInitialized()) { + + return false; + } + return true; + } + public Builder mergeFrom( com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - com.google.protobuf.UnknownFieldSet.Builder unknownFields = - com.google.protobuf.UnknownFieldSet.newBuilder( - this.getUnknownFields()); - while (true) { - int tag = input.readTag(); - switch (tag) { - case 0: - this.setUnknownFields(unknownFields.build()); - return this; - default: { - if (!parseUnknownField(input, unknownFields, - extensionRegistry, tag)) { - this.setUnknownFields(unknownFields.build()); - return this; - } - break; - } - case 10: { - org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials.Builder subBuilder = org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials.newBuilder(); - if (hasFileCredentials()) { - subBuilder.mergeFrom(getFileCredentials()); - } - input.readMessage(subBuilder, extensionRegistry); - setFileCredentials(subBuilder.buildPartial()); - break; - } - case 18: { - setFileId(input.readString()); - break; - } - case 25: { - setObjectNumber(input.readFixed64()); - break; - } - case 33: { - setObjectVersion(input.readFixed64()); - break; - } + org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_rwr_fetchRequest parsedMessage = null; + try { + parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + parsedMessage = (org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_rwr_fetchRequest) e.getUnfinishedMessage(); + throw e; + } finally { + if (parsedMessage != null) { + mergeFrom(parsedMessage); } } + return this; } - - + private int bitField0_; + // required .xtreemfs.pbrpc.FileCredentials file_credentials = 1; + private org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials fileCredentials_ = org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials.getDefaultInstance(); + private com.google.protobuf.SingleFieldBuilder< + org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials, org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials.Builder, org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentialsOrBuilder> fileCredentialsBuilder_; + /** + * required .xtreemfs.pbrpc.FileCredentials file_credentials = 1; + */ public boolean hasFileCredentials() { - return result.hasFileCredentials(); + return ((bitField0_ & 0x00000001) == 0x00000001); } + /** + * required .xtreemfs.pbrpc.FileCredentials file_credentials = 1; + */ public org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials getFileCredentials() { - return result.getFileCredentials(); + if (fileCredentialsBuilder_ == null) { + return fileCredentials_; + } else { + return fileCredentialsBuilder_.getMessage(); + } } + /** + * required .xtreemfs.pbrpc.FileCredentials file_credentials = 1; + */ public Builder setFileCredentials(org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials value) { - if (value == null) { - throw new NullPointerException(); + if (fileCredentialsBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + fileCredentials_ = value; + onChanged(); + } else { + fileCredentialsBuilder_.setMessage(value); } - result.hasFileCredentials = true; - result.fileCredentials_ = value; + bitField0_ |= 0x00000001; return this; } - public Builder setFileCredentials(org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials.Builder builderForValue) { - result.hasFileCredentials = true; - result.fileCredentials_ = builderForValue.build(); + /** + * required .xtreemfs.pbrpc.FileCredentials file_credentials = 1; + */ + public Builder setFileCredentials( + org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials.Builder builderForValue) { + if (fileCredentialsBuilder_ == null) { + fileCredentials_ = builderForValue.build(); + onChanged(); + } else { + fileCredentialsBuilder_.setMessage(builderForValue.build()); + } + bitField0_ |= 0x00000001; return this; } + /** + * required .xtreemfs.pbrpc.FileCredentials file_credentials = 1; + */ public Builder mergeFileCredentials(org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials value) { - if (result.hasFileCredentials() && - result.fileCredentials_ != org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials.getDefaultInstance()) { - result.fileCredentials_ = - org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials.newBuilder(result.fileCredentials_).mergeFrom(value).buildPartial(); + if (fileCredentialsBuilder_ == null) { + if (((bitField0_ & 0x00000001) == 0x00000001) && + fileCredentials_ != org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials.getDefaultInstance()) { + fileCredentials_ = + org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials.newBuilder(fileCredentials_).mergeFrom(value).buildPartial(); + } else { + fileCredentials_ = value; + } + onChanged(); } else { - result.fileCredentials_ = value; + fileCredentialsBuilder_.mergeFrom(value); } - result.hasFileCredentials = true; + bitField0_ |= 0x00000001; return this; } + /** + * required .xtreemfs.pbrpc.FileCredentials file_credentials = 1; + */ public Builder clearFileCredentials() { - result.hasFileCredentials = false; - result.fileCredentials_ = org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials.getDefaultInstance(); + if (fileCredentialsBuilder_ == null) { + fileCredentials_ = org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials.getDefaultInstance(); + onChanged(); + } else { + fileCredentialsBuilder_.clear(); + } + bitField0_ = (bitField0_ & ~0x00000001); return this; } - + /** + * required .xtreemfs.pbrpc.FileCredentials file_credentials = 1; + */ + public org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials.Builder getFileCredentialsBuilder() { + bitField0_ |= 0x00000001; + onChanged(); + return getFileCredentialsFieldBuilder().getBuilder(); + } + /** + * required .xtreemfs.pbrpc.FileCredentials file_credentials = 1; + */ + public org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentialsOrBuilder getFileCredentialsOrBuilder() { + if (fileCredentialsBuilder_ != null) { + return fileCredentialsBuilder_.getMessageOrBuilder(); + } else { + return fileCredentials_; + } + } + /** + * required .xtreemfs.pbrpc.FileCredentials file_credentials = 1; + */ + private com.google.protobuf.SingleFieldBuilder< + org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials, org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials.Builder, org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentialsOrBuilder> + getFileCredentialsFieldBuilder() { + if (fileCredentialsBuilder_ == null) { + fileCredentialsBuilder_ = new com.google.protobuf.SingleFieldBuilder< + org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials, org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials.Builder, org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentialsOrBuilder>( + fileCredentials_, + getParentForChildren(), + isClean()); + fileCredentials_ = null; + } + return fileCredentialsBuilder_; + } + // required string file_id = 2; + private java.lang.Object fileId_ = ""; + /** + * required string file_id = 2; + */ public boolean hasFileId() { - return result.hasFileId(); + return ((bitField0_ & 0x00000002) == 0x00000002); } + /** + * required string file_id = 2; + */ public java.lang.String getFileId() { - return result.getFileId(); + java.lang.Object ref = fileId_; + if (!(ref instanceof java.lang.String)) { + java.lang.String s = ((com.google.protobuf.ByteString) ref) + .toStringUtf8(); + fileId_ = s; + return s; + } else { + return (java.lang.String) ref; + } + } + /** + * required string file_id = 2; + */ + public com.google.protobuf.ByteString + getFileIdBytes() { + java.lang.Object ref = fileId_; + if (ref instanceof String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + fileId_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } } - public Builder setFileId(java.lang.String value) { + /** + * required string file_id = 2; + */ + public Builder setFileId( + java.lang.String value) { if (value == null) { throw new NullPointerException(); } - result.hasFileId = true; - result.fileId_ = value; + bitField0_ |= 0x00000002; + fileId_ = value; + onChanged(); return this; } + /** + * required string file_id = 2; + */ public Builder clearFileId() { - result.hasFileId = false; - result.fileId_ = getDefaultInstance().getFileId(); + bitField0_ = (bitField0_ & ~0x00000002); + fileId_ = getDefaultInstance().getFileId(); + onChanged(); + return this; + } + /** + * required string file_id = 2; + */ + public Builder setFileIdBytes( + com.google.protobuf.ByteString value) { + if (value == null) { + throw new NullPointerException(); + } + bitField0_ |= 0x00000002; + fileId_ = value; + onChanged(); return this; } - + // required fixed64 object_number = 3; + private long objectNumber_ ; + /** + * required fixed64 object_number = 3; + */ public boolean hasObjectNumber() { - return result.hasObjectNumber(); + return ((bitField0_ & 0x00000004) == 0x00000004); } + /** + * required fixed64 object_number = 3; + */ public long getObjectNumber() { - return result.getObjectNumber(); + return objectNumber_; } + /** + * required fixed64 object_number = 3; + */ public Builder setObjectNumber(long value) { - result.hasObjectNumber = true; - result.objectNumber_ = value; + bitField0_ |= 0x00000004; + objectNumber_ = value; + onChanged(); return this; } + /** + * required fixed64 object_number = 3; + */ public Builder clearObjectNumber() { - result.hasObjectNumber = false; - result.objectNumber_ = 0L; + bitField0_ = (bitField0_ & ~0x00000004); + objectNumber_ = 0L; + onChanged(); return this; } - + // required fixed64 object_version = 4; + private long objectVersion_ ; + /** + * required fixed64 object_version = 4; + */ public boolean hasObjectVersion() { - return result.hasObjectVersion(); + return ((bitField0_ & 0x00000008) == 0x00000008); } + /** + * required fixed64 object_version = 4; + */ public long getObjectVersion() { - return result.getObjectVersion(); + return objectVersion_; } + /** + * required fixed64 object_version = 4; + */ public Builder setObjectVersion(long value) { - result.hasObjectVersion = true; - result.objectVersion_ = value; + bitField0_ |= 0x00000008; + objectVersion_ = value; + onChanged(); return this; } + /** + * required fixed64 object_version = 4; + */ public Builder clearObjectVersion() { - result.hasObjectVersion = false; - result.objectVersion_ = 0L; + bitField0_ = (bitField0_ & ~0x00000008); + objectVersion_ = 0L; + onChanged(); return this; } - + // @@protoc_insertion_point(builder_scope:xtreemfs.pbrpc.xtreemfs_rwr_fetchRequest) } - + static { defaultInstance = new xtreemfs_rwr_fetchRequest(true); - org.xtreemfs.pbrpc.generatedinterfaces.OSD.internalForceInit(); defaultInstance.initFields(); } - + // @@protoc_insertion_point(class_scope:xtreemfs.pbrpc.xtreemfs_rwr_fetchRequest) } - + + public interface xtreemfs_repair_objectRequestOrBuilder + extends com.google.protobuf.MessageOrBuilder { + + // required .xtreemfs.pbrpc.FileCredentials file_credentials = 1; + /** + * required .xtreemfs.pbrpc.FileCredentials file_credentials = 1; + */ + boolean hasFileCredentials(); + /** + * required .xtreemfs.pbrpc.FileCredentials file_credentials = 1; + */ + org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials getFileCredentials(); + /** + * required .xtreemfs.pbrpc.FileCredentials file_credentials = 1; + */ + org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentialsOrBuilder getFileCredentialsOrBuilder(); + + // required string file_id = 2; + /** + * required string file_id = 2; + */ + boolean hasFileId(); + /** + * required string file_id = 2; + */ + java.lang.String getFileId(); + /** + * required string file_id = 2; + */ + com.google.protobuf.ByteString + getFileIdBytes(); + + // required fixed64 object_number = 3; + /** + * required fixed64 object_number = 3; + */ + boolean hasObjectNumber(); + /** + * required fixed64 object_number = 3; + */ + long getObjectNumber(); + + // required fixed64 object_version = 4; + /** + * required fixed64 object_version = 4; + */ + boolean hasObjectVersion(); + /** + * required fixed64 object_version = 4; + */ + long getObjectVersion(); + } + /** + * Protobuf type {@code xtreemfs.pbrpc.xtreemfs_repair_objectRequest} + */ public static final class xtreemfs_repair_objectRequest extends - com.google.protobuf.GeneratedMessage { + com.google.protobuf.GeneratedMessage + implements xtreemfs_repair_objectRequestOrBuilder { // Use xtreemfs_repair_objectRequest.newBuilder() to construct. - private xtreemfs_repair_objectRequest() { - initFields(); + private xtreemfs_repair_objectRequest(com.google.protobuf.GeneratedMessage.Builder builder) { + super(builder); + this.unknownFields = builder.getUnknownFields(); } - private xtreemfs_repair_objectRequest(boolean noInit) {} - + private xtreemfs_repair_objectRequest(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); } + private static final xtreemfs_repair_objectRequest defaultInstance; public static xtreemfs_repair_objectRequest getDefaultInstance() { return defaultInstance; } - + public xtreemfs_repair_objectRequest getDefaultInstanceForType() { return defaultInstance; } - + + private final com.google.protobuf.UnknownFieldSet unknownFields; + @java.lang.Override + public final com.google.protobuf.UnknownFieldSet + getUnknownFields() { + return this.unknownFields; + } + private xtreemfs_repair_objectRequest( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + initFields(); + int mutable_bitField0_ = 0; + com.google.protobuf.UnknownFieldSet.Builder unknownFields = + com.google.protobuf.UnknownFieldSet.newBuilder(); + try { + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch (tag) { + case 0: + done = true; + break; + default: { + if (!parseUnknownField(input, unknownFields, + extensionRegistry, tag)) { + done = true; + } + break; + } + case 10: { + org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials.Builder subBuilder = null; + if (((bitField0_ & 0x00000001) == 0x00000001)) { + subBuilder = fileCredentials_.toBuilder(); + } + fileCredentials_ = input.readMessage(org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials.PARSER, extensionRegistry); + if (subBuilder != null) { + subBuilder.mergeFrom(fileCredentials_); + fileCredentials_ = subBuilder.buildPartial(); + } + bitField0_ |= 0x00000001; + break; + } + case 18: { + bitField0_ |= 0x00000002; + fileId_ = input.readBytes(); + break; + } + case 25: { + bitField0_ |= 0x00000004; + objectNumber_ = input.readFixed64(); + break; + } + case 33: { + bitField0_ |= 0x00000008; + objectVersion_ = input.readFixed64(); + break; + } + } + } + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(this); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException( + e.getMessage()).setUnfinishedMessage(this); + } finally { + this.unknownFields = unknownFields.build(); + makeExtensionsImmutable(); + } + } public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { return org.xtreemfs.pbrpc.generatedinterfaces.OSD.internal_static_xtreemfs_pbrpc_xtreemfs_repair_objectRequest_descriptor; } - + protected com.google.protobuf.GeneratedMessage.FieldAccessorTable internalGetFieldAccessorTable() { - return org.xtreemfs.pbrpc.generatedinterfaces.OSD.internal_static_xtreemfs_pbrpc_xtreemfs_repair_objectRequest_fieldAccessorTable; + return org.xtreemfs.pbrpc.generatedinterfaces.OSD.internal_static_xtreemfs_pbrpc_xtreemfs_repair_objectRequest_fieldAccessorTable + .ensureFieldAccessorsInitialized( + org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_repair_objectRequest.class, org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_repair_objectRequest.Builder.class); + } + + public static com.google.protobuf.Parser PARSER = + new com.google.protobuf.AbstractParser() { + public xtreemfs_repair_objectRequest parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return new xtreemfs_repair_objectRequest(input, extensionRegistry); + } + }; + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; } - + + private int bitField0_; // required .xtreemfs.pbrpc.FileCredentials file_credentials = 1; public static final int FILE_CREDENTIALS_FIELD_NUMBER = 1; - private boolean hasFileCredentials; private org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials fileCredentials_; - public boolean hasFileCredentials() { return hasFileCredentials; } - public org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials getFileCredentials() { return fileCredentials_; } - + /** + * required .xtreemfs.pbrpc.FileCredentials file_credentials = 1; + */ + public boolean hasFileCredentials() { + return ((bitField0_ & 0x00000001) == 0x00000001); + } + /** + * required .xtreemfs.pbrpc.FileCredentials file_credentials = 1; + */ + public org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials getFileCredentials() { + return fileCredentials_; + } + /** + * required .xtreemfs.pbrpc.FileCredentials file_credentials = 1; + */ + public org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentialsOrBuilder getFileCredentialsOrBuilder() { + return fileCredentials_; + } + // required string file_id = 2; public static final int FILE_ID_FIELD_NUMBER = 2; - private boolean hasFileId; - private java.lang.String fileId_ = ""; - public boolean hasFileId() { return hasFileId; } - public java.lang.String getFileId() { return fileId_; } - + private java.lang.Object fileId_; + /** + * required string file_id = 2; + */ + public boolean hasFileId() { + return ((bitField0_ & 0x00000002) == 0x00000002); + } + /** + * required string file_id = 2; + */ + public java.lang.String getFileId() { + java.lang.Object ref = fileId_; + if (ref instanceof java.lang.String) { + return (java.lang.String) ref; + } else { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + if (bs.isValidUtf8()) { + fileId_ = s; + } + return s; + } + } + /** + * required string file_id = 2; + */ + public com.google.protobuf.ByteString + getFileIdBytes() { + java.lang.Object ref = fileId_; + if (ref instanceof java.lang.String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + fileId_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + // required fixed64 object_number = 3; public static final int OBJECT_NUMBER_FIELD_NUMBER = 3; - private boolean hasObjectNumber; - private long objectNumber_ = 0L; - public boolean hasObjectNumber() { return hasObjectNumber; } - public long getObjectNumber() { return objectNumber_; } - + private long objectNumber_; + /** + * required fixed64 object_number = 3; + */ + public boolean hasObjectNumber() { + return ((bitField0_ & 0x00000004) == 0x00000004); + } + /** + * required fixed64 object_number = 3; + */ + public long getObjectNumber() { + return objectNumber_; + } + // required fixed64 object_version = 4; public static final int OBJECT_VERSION_FIELD_NUMBER = 4; - private boolean hasObjectVersion; - private long objectVersion_ = 0L; - public boolean hasObjectVersion() { return hasObjectVersion; } - public long getObjectVersion() { return objectVersion_; } - + private long objectVersion_; + /** + * required fixed64 object_version = 4; + */ + public boolean hasObjectVersion() { + return ((bitField0_ & 0x00000008) == 0x00000008); + } + /** + * required fixed64 object_version = 4; + */ + public long getObjectVersion() { + return objectVersion_; + } + private void initFields() { fileCredentials_ = org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials.getDefaultInstance(); + fileId_ = ""; + objectNumber_ = 0L; + objectVersion_ = 0L; } + private byte memoizedIsInitialized = -1; public final boolean isInitialized() { - if (!hasFileCredentials) return false; - if (!hasFileId) return false; - if (!hasObjectNumber) return false; - if (!hasObjectVersion) return false; - if (!getFileCredentials().isInitialized()) return false; + byte isInitialized = memoizedIsInitialized; + if (isInitialized != -1) return isInitialized == 1; + + if (!hasFileCredentials()) { + memoizedIsInitialized = 0; + return false; + } + if (!hasFileId()) { + memoizedIsInitialized = 0; + return false; + } + if (!hasObjectNumber()) { + memoizedIsInitialized = 0; + return false; + } + if (!hasObjectVersion()) { + memoizedIsInitialized = 0; + return false; + } + if (!getFileCredentials().isInitialized()) { + memoizedIsInitialized = 0; + return false; + } + memoizedIsInitialized = 1; return true; } - + public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException { getSerializedSize(); - if (hasFileCredentials()) { - output.writeMessage(1, getFileCredentials()); + if (((bitField0_ & 0x00000001) == 0x00000001)) { + output.writeMessage(1, fileCredentials_); } - if (hasFileId()) { - output.writeString(2, getFileId()); + if (((bitField0_ & 0x00000002) == 0x00000002)) { + output.writeBytes(2, getFileIdBytes()); } - if (hasObjectNumber()) { - output.writeFixed64(3, getObjectNumber()); + if (((bitField0_ & 0x00000004) == 0x00000004)) { + output.writeFixed64(3, objectNumber_); } - if (hasObjectVersion()) { - output.writeFixed64(4, getObjectVersion()); + if (((bitField0_ & 0x00000008) == 0x00000008)) { + output.writeFixed64(4, objectVersion_); } getUnknownFields().writeTo(output); } - + private int memoizedSerializedSize = -1; public int getSerializedSize() { int size = memoizedSerializedSize; if (size != -1) return size; - + size = 0; - if (hasFileCredentials()) { + if (((bitField0_ & 0x00000001) == 0x00000001)) { size += com.google.protobuf.CodedOutputStream - .computeMessageSize(1, getFileCredentials()); + .computeMessageSize(1, fileCredentials_); } - if (hasFileId()) { + if (((bitField0_ & 0x00000002) == 0x00000002)) { size += com.google.protobuf.CodedOutputStream - .computeStringSize(2, getFileId()); + .computeBytesSize(2, getFileIdBytes()); } - if (hasObjectNumber()) { + if (((bitField0_ & 0x00000004) == 0x00000004)) { size += com.google.protobuf.CodedOutputStream - .computeFixed64Size(3, getObjectNumber()); + .computeFixed64Size(3, objectNumber_); } - if (hasObjectVersion()) { + if (((bitField0_ & 0x00000008) == 0x00000008)) { size += com.google.protobuf.CodedOutputStream - .computeFixed64Size(4, getObjectVersion()); + .computeFixed64Size(4, objectVersion_); } size += getUnknownFields().getSerializedSize(); memoizedSerializedSize = size; return size; } - + + private static final long serialVersionUID = 0L; + @java.lang.Override + protected java.lang.Object writeReplace() + throws java.io.ObjectStreamException { + return super.writeReplace(); + } + public static org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_repair_objectRequest parseFrom( com.google.protobuf.ByteString data) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data).buildParsed(); + return PARSER.parseFrom(data); } public static org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_repair_objectRequest parseFrom( com.google.protobuf.ByteString data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(data, extensionRegistry); } public static org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_repair_objectRequest parseFrom(byte[] data) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data).buildParsed(); + return PARSER.parseFrom(data); } public static org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_repair_objectRequest parseFrom( byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(data, extensionRegistry); } public static org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_repair_objectRequest parseFrom(java.io.InputStream input) throws java.io.IOException { - return newBuilder().mergeFrom(input).buildParsed(); + return PARSER.parseFrom(input); } public static org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_repair_objectRequest parseFrom( java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - return newBuilder().mergeFrom(input, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(input, extensionRegistry); } public static org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_repair_objectRequest parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException { - Builder builder = newBuilder(); - if (builder.mergeDelimitedFrom(input)) { - return builder.buildParsed(); - } else { - return null; - } + return PARSER.parseDelimitedFrom(input); } public static org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_repair_objectRequest parseDelimitedFrom( java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - Builder builder = newBuilder(); - if (builder.mergeDelimitedFrom(input, extensionRegistry)) { - return builder.buildParsed(); - } else { - return null; - } + return PARSER.parseDelimitedFrom(input, extensionRegistry); } public static org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_repair_objectRequest parseFrom( com.google.protobuf.CodedInputStream input) throws java.io.IOException { - return newBuilder().mergeFrom(input).buildParsed(); + return PARSER.parseFrom(input); } public static org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_repair_objectRequest parseFrom( com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - return newBuilder().mergeFrom(input, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(input, extensionRegistry); } - + public static Builder newBuilder() { return Builder.create(); } public Builder newBuilderForType() { return newBuilder(); } public static Builder newBuilder(org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_repair_objectRequest prototype) { return newBuilder().mergeFrom(prototype); } public Builder toBuilder() { return newBuilder(this); } - + + @java.lang.Override + protected Builder newBuilderForType( + com.google.protobuf.GeneratedMessage.BuilderParent parent) { + Builder builder = new Builder(parent); + return builder; + } + /** + * Protobuf type {@code xtreemfs.pbrpc.xtreemfs_repair_objectRequest} + */ public static final class Builder extends - com.google.protobuf.GeneratedMessage.Builder { - private org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_repair_objectRequest result; - + com.google.protobuf.GeneratedMessage.Builder + implements org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_repair_objectRequestOrBuilder { + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return org.xtreemfs.pbrpc.generatedinterfaces.OSD.internal_static_xtreemfs_pbrpc_xtreemfs_repair_objectRequest_descriptor; + } + + protected com.google.protobuf.GeneratedMessage.FieldAccessorTable + internalGetFieldAccessorTable() { + return org.xtreemfs.pbrpc.generatedinterfaces.OSD.internal_static_xtreemfs_pbrpc_xtreemfs_repair_objectRequest_fieldAccessorTable + .ensureFieldAccessorsInitialized( + org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_repair_objectRequest.class, org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_repair_objectRequest.Builder.class); + } + // Construct using org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_repair_objectRequest.newBuilder() - private Builder() {} - - private static Builder create() { - Builder builder = new Builder(); - builder.result = new org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_repair_objectRequest(); - return builder; + private Builder() { + maybeForceBuilderInitialization(); } - - protected org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_repair_objectRequest internalGetResult() { - return result; + + private Builder( + com.google.protobuf.GeneratedMessage.BuilderParent parent) { + super(parent); + maybeForceBuilderInitialization(); + } + private void maybeForceBuilderInitialization() { + if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) { + getFileCredentialsFieldBuilder(); + } + } + private static Builder create() { + return new Builder(); } - + public Builder clear() { - if (result == null) { - throw new IllegalStateException( - "Cannot call clear() after build()."); + super.clear(); + if (fileCredentialsBuilder_ == null) { + fileCredentials_ = org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials.getDefaultInstance(); + } else { + fileCredentialsBuilder_.clear(); } - result = new org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_repair_objectRequest(); + bitField0_ = (bitField0_ & ~0x00000001); + fileId_ = ""; + bitField0_ = (bitField0_ & ~0x00000002); + objectNumber_ = 0L; + bitField0_ = (bitField0_ & ~0x00000004); + objectVersion_ = 0L; + bitField0_ = (bitField0_ & ~0x00000008); return this; } - + public Builder clone() { - return create().mergeFrom(result); + return create().mergeFrom(buildPartial()); } - + public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() { - return org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_repair_objectRequest.getDescriptor(); + return org.xtreemfs.pbrpc.generatedinterfaces.OSD.internal_static_xtreemfs_pbrpc_xtreemfs_repair_objectRequest_descriptor; } - + public org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_repair_objectRequest getDefaultInstanceForType() { return org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_repair_objectRequest.getDefaultInstance(); } - - public boolean isInitialized() { - return result.isInitialized(); - } + public org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_repair_objectRequest build() { - if (result != null && !isInitialized()) { + org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_repair_objectRequest result = buildPartial(); + if (!result.isInitialized()) { throw newUninitializedMessageException(result); } - return buildPartial(); - } - - private org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_repair_objectRequest buildParsed() - throws com.google.protobuf.InvalidProtocolBufferException { - if (!isInitialized()) { - throw newUninitializedMessageException( - result).asInvalidProtocolBufferException(); - } - return buildPartial(); + return result; } - + public org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_repair_objectRequest buildPartial() { - if (result == null) { - throw new IllegalStateException( - "build() has already been called on this Builder."); + org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_repair_objectRequest result = new org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_repair_objectRequest(this); + int from_bitField0_ = bitField0_; + int to_bitField0_ = 0; + if (((from_bitField0_ & 0x00000001) == 0x00000001)) { + to_bitField0_ |= 0x00000001; + } + if (fileCredentialsBuilder_ == null) { + result.fileCredentials_ = fileCredentials_; + } else { + result.fileCredentials_ = fileCredentialsBuilder_.build(); + } + if (((from_bitField0_ & 0x00000002) == 0x00000002)) { + to_bitField0_ |= 0x00000002; + } + result.fileId_ = fileId_; + if (((from_bitField0_ & 0x00000004) == 0x00000004)) { + to_bitField0_ |= 0x00000004; } - org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_repair_objectRequest returnMe = result; - result = null; - return returnMe; + result.objectNumber_ = objectNumber_; + if (((from_bitField0_ & 0x00000008) == 0x00000008)) { + to_bitField0_ |= 0x00000008; + } + result.objectVersion_ = objectVersion_; + result.bitField0_ = to_bitField0_; + onBuilt(); + return result; } - + public Builder mergeFrom(com.google.protobuf.Message other) { if (other instanceof org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_repair_objectRequest) { return mergeFrom((org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_repair_objectRequest)other); @@ -9022,14 +18291,16 @@ public final class OSD { return this; } } - + public Builder mergeFrom(org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_repair_objectRequest other) { if (other == org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_repair_objectRequest.getDefaultInstance()) return this; if (other.hasFileCredentials()) { mergeFileCredentials(other.getFileCredentials()); } if (other.hasFileId()) { - setFileId(other.getFileId()); + bitField0_ |= 0x00000002; + fileId_ = other.fileId_; + onChanged(); } if (other.hasObjectNumber()) { setObjectNumber(other.getObjectNumber()); @@ -9040,382 +18311,738 @@ public final class OSD { this.mergeUnknownFields(other.getUnknownFields()); return this; } - + + public final boolean isInitialized() { + if (!hasFileCredentials()) { + + return false; + } + if (!hasFileId()) { + + return false; + } + if (!hasObjectNumber()) { + + return false; + } + if (!hasObjectVersion()) { + + return false; + } + if (!getFileCredentials().isInitialized()) { + + return false; + } + return true; + } + public Builder mergeFrom( com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - com.google.protobuf.UnknownFieldSet.Builder unknownFields = - com.google.protobuf.UnknownFieldSet.newBuilder( - this.getUnknownFields()); - while (true) { - int tag = input.readTag(); - switch (tag) { - case 0: - this.setUnknownFields(unknownFields.build()); - return this; - default: { - if (!parseUnknownField(input, unknownFields, - extensionRegistry, tag)) { - this.setUnknownFields(unknownFields.build()); - return this; - } - break; - } - case 10: { - org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials.Builder subBuilder = org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials.newBuilder(); - if (hasFileCredentials()) { - subBuilder.mergeFrom(getFileCredentials()); - } - input.readMessage(subBuilder, extensionRegistry); - setFileCredentials(subBuilder.buildPartial()); - break; - } - case 18: { - setFileId(input.readString()); - break; - } - case 25: { - setObjectNumber(input.readFixed64()); - break; - } - case 33: { - setObjectVersion(input.readFixed64()); - break; - } + org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_repair_objectRequest parsedMessage = null; + try { + parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + parsedMessage = (org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_repair_objectRequest) e.getUnfinishedMessage(); + throw e; + } finally { + if (parsedMessage != null) { + mergeFrom(parsedMessage); } } + return this; } - - + private int bitField0_; + // required .xtreemfs.pbrpc.FileCredentials file_credentials = 1; + private org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials fileCredentials_ = org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials.getDefaultInstance(); + private com.google.protobuf.SingleFieldBuilder< + org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials, org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials.Builder, org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentialsOrBuilder> fileCredentialsBuilder_; + /** + * required .xtreemfs.pbrpc.FileCredentials file_credentials = 1; + */ public boolean hasFileCredentials() { - return result.hasFileCredentials(); + return ((bitField0_ & 0x00000001) == 0x00000001); } + /** + * required .xtreemfs.pbrpc.FileCredentials file_credentials = 1; + */ public org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials getFileCredentials() { - return result.getFileCredentials(); + if (fileCredentialsBuilder_ == null) { + return fileCredentials_; + } else { + return fileCredentialsBuilder_.getMessage(); + } } + /** + * required .xtreemfs.pbrpc.FileCredentials file_credentials = 1; + */ public Builder setFileCredentials(org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials value) { - if (value == null) { - throw new NullPointerException(); + if (fileCredentialsBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + fileCredentials_ = value; + onChanged(); + } else { + fileCredentialsBuilder_.setMessage(value); } - result.hasFileCredentials = true; - result.fileCredentials_ = value; + bitField0_ |= 0x00000001; return this; } - public Builder setFileCredentials(org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials.Builder builderForValue) { - result.hasFileCredentials = true; - result.fileCredentials_ = builderForValue.build(); + /** + * required .xtreemfs.pbrpc.FileCredentials file_credentials = 1; + */ + public Builder setFileCredentials( + org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials.Builder builderForValue) { + if (fileCredentialsBuilder_ == null) { + fileCredentials_ = builderForValue.build(); + onChanged(); + } else { + fileCredentialsBuilder_.setMessage(builderForValue.build()); + } + bitField0_ |= 0x00000001; return this; } + /** + * required .xtreemfs.pbrpc.FileCredentials file_credentials = 1; + */ public Builder mergeFileCredentials(org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials value) { - if (result.hasFileCredentials() && - result.fileCredentials_ != org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials.getDefaultInstance()) { - result.fileCredentials_ = - org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials.newBuilder(result.fileCredentials_).mergeFrom(value).buildPartial(); + if (fileCredentialsBuilder_ == null) { + if (((bitField0_ & 0x00000001) == 0x00000001) && + fileCredentials_ != org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials.getDefaultInstance()) { + fileCredentials_ = + org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials.newBuilder(fileCredentials_).mergeFrom(value).buildPartial(); + } else { + fileCredentials_ = value; + } + onChanged(); } else { - result.fileCredentials_ = value; + fileCredentialsBuilder_.mergeFrom(value); } - result.hasFileCredentials = true; + bitField0_ |= 0x00000001; return this; } + /** + * required .xtreemfs.pbrpc.FileCredentials file_credentials = 1; + */ public Builder clearFileCredentials() { - result.hasFileCredentials = false; - result.fileCredentials_ = org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials.getDefaultInstance(); + if (fileCredentialsBuilder_ == null) { + fileCredentials_ = org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials.getDefaultInstance(); + onChanged(); + } else { + fileCredentialsBuilder_.clear(); + } + bitField0_ = (bitField0_ & ~0x00000001); return this; } - + /** + * required .xtreemfs.pbrpc.FileCredentials file_credentials = 1; + */ + public org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials.Builder getFileCredentialsBuilder() { + bitField0_ |= 0x00000001; + onChanged(); + return getFileCredentialsFieldBuilder().getBuilder(); + } + /** + * required .xtreemfs.pbrpc.FileCredentials file_credentials = 1; + */ + public org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentialsOrBuilder getFileCredentialsOrBuilder() { + if (fileCredentialsBuilder_ != null) { + return fileCredentialsBuilder_.getMessageOrBuilder(); + } else { + return fileCredentials_; + } + } + /** + * required .xtreemfs.pbrpc.FileCredentials file_credentials = 1; + */ + private com.google.protobuf.SingleFieldBuilder< + org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials, org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials.Builder, org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentialsOrBuilder> + getFileCredentialsFieldBuilder() { + if (fileCredentialsBuilder_ == null) { + fileCredentialsBuilder_ = new com.google.protobuf.SingleFieldBuilder< + org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials, org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials.Builder, org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentialsOrBuilder>( + fileCredentials_, + getParentForChildren(), + isClean()); + fileCredentials_ = null; + } + return fileCredentialsBuilder_; + } + // required string file_id = 2; + private java.lang.Object fileId_ = ""; + /** + * required string file_id = 2; + */ public boolean hasFileId() { - return result.hasFileId(); + return ((bitField0_ & 0x00000002) == 0x00000002); } + /** + * required string file_id = 2; + */ public java.lang.String getFileId() { - return result.getFileId(); + java.lang.Object ref = fileId_; + if (!(ref instanceof java.lang.String)) { + java.lang.String s = ((com.google.protobuf.ByteString) ref) + .toStringUtf8(); + fileId_ = s; + return s; + } else { + return (java.lang.String) ref; + } + } + /** + * required string file_id = 2; + */ + public com.google.protobuf.ByteString + getFileIdBytes() { + java.lang.Object ref = fileId_; + if (ref instanceof String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + fileId_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } } - public Builder setFileId(java.lang.String value) { + /** + * required string file_id = 2; + */ + public Builder setFileId( + java.lang.String value) { if (value == null) { throw new NullPointerException(); } - result.hasFileId = true; - result.fileId_ = value; + bitField0_ |= 0x00000002; + fileId_ = value; + onChanged(); return this; } + /** + * required string file_id = 2; + */ public Builder clearFileId() { - result.hasFileId = false; - result.fileId_ = getDefaultInstance().getFileId(); + bitField0_ = (bitField0_ & ~0x00000002); + fileId_ = getDefaultInstance().getFileId(); + onChanged(); return this; } - + /** + * required string file_id = 2; + */ + public Builder setFileIdBytes( + com.google.protobuf.ByteString value) { + if (value == null) { + throw new NullPointerException(); + } + bitField0_ |= 0x00000002; + fileId_ = value; + onChanged(); + return this; + } + // required fixed64 object_number = 3; + private long objectNumber_ ; + /** + * required fixed64 object_number = 3; + */ public boolean hasObjectNumber() { - return result.hasObjectNumber(); + return ((bitField0_ & 0x00000004) == 0x00000004); } + /** + * required fixed64 object_number = 3; + */ public long getObjectNumber() { - return result.getObjectNumber(); + return objectNumber_; } + /** + * required fixed64 object_number = 3; + */ public Builder setObjectNumber(long value) { - result.hasObjectNumber = true; - result.objectNumber_ = value; + bitField0_ |= 0x00000004; + objectNumber_ = value; + onChanged(); return this; } + /** + * required fixed64 object_number = 3; + */ public Builder clearObjectNumber() { - result.hasObjectNumber = false; - result.objectNumber_ = 0L; + bitField0_ = (bitField0_ & ~0x00000004); + objectNumber_ = 0L; + onChanged(); return this; } - + // required fixed64 object_version = 4; + private long objectVersion_ ; + /** + * required fixed64 object_version = 4; + */ public boolean hasObjectVersion() { - return result.hasObjectVersion(); + return ((bitField0_ & 0x00000008) == 0x00000008); } + /** + * required fixed64 object_version = 4; + */ public long getObjectVersion() { - return result.getObjectVersion(); + return objectVersion_; } + /** + * required fixed64 object_version = 4; + */ public Builder setObjectVersion(long value) { - result.hasObjectVersion = true; - result.objectVersion_ = value; + bitField0_ |= 0x00000008; + objectVersion_ = value; + onChanged(); return this; } + /** + * required fixed64 object_version = 4; + */ public Builder clearObjectVersion() { - result.hasObjectVersion = false; - result.objectVersion_ = 0L; + bitField0_ = (bitField0_ & ~0x00000008); + objectVersion_ = 0L; + onChanged(); return this; } - + // @@protoc_insertion_point(builder_scope:xtreemfs.pbrpc.xtreemfs_repair_objectRequest) } - + static { defaultInstance = new xtreemfs_repair_objectRequest(true); - org.xtreemfs.pbrpc.generatedinterfaces.OSD.internalForceInit(); defaultInstance.initFields(); } - + // @@protoc_insertion_point(class_scope:xtreemfs.pbrpc.xtreemfs_repair_objectRequest) } - + + public interface xtreemfs_rwr_flease_msgRequestOrBuilder + extends com.google.protobuf.MessageOrBuilder { + + // required string sender_hostname = 1; + /** + * required string sender_hostname = 1; + * + *
+     * The actual flease message is sent in data.
+     * 
+ */ + boolean hasSenderHostname(); + /** + * required string sender_hostname = 1; + * + *
+     * The actual flease message is sent in data.
+     * 
+ */ + java.lang.String getSenderHostname(); + /** + * required string sender_hostname = 1; + * + *
+     * The actual flease message is sent in data.
+     * 
+ */ + com.google.protobuf.ByteString + getSenderHostnameBytes(); + + // required fixed32 sender_port = 2; + /** + * required fixed32 sender_port = 2; + */ + boolean hasSenderPort(); + /** + * required fixed32 sender_port = 2; + */ + int getSenderPort(); + } + /** + * Protobuf type {@code xtreemfs.pbrpc.xtreemfs_rwr_flease_msgRequest} + */ public static final class xtreemfs_rwr_flease_msgRequest extends - com.google.protobuf.GeneratedMessage { + com.google.protobuf.GeneratedMessage + implements xtreemfs_rwr_flease_msgRequestOrBuilder { // Use xtreemfs_rwr_flease_msgRequest.newBuilder() to construct. - private xtreemfs_rwr_flease_msgRequest() { - initFields(); + private xtreemfs_rwr_flease_msgRequest(com.google.protobuf.GeneratedMessage.Builder builder) { + super(builder); + this.unknownFields = builder.getUnknownFields(); } - private xtreemfs_rwr_flease_msgRequest(boolean noInit) {} - + private xtreemfs_rwr_flease_msgRequest(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); } + private static final xtreemfs_rwr_flease_msgRequest defaultInstance; public static xtreemfs_rwr_flease_msgRequest getDefaultInstance() { return defaultInstance; } - + public xtreemfs_rwr_flease_msgRequest getDefaultInstanceForType() { return defaultInstance; } - + + private final com.google.protobuf.UnknownFieldSet unknownFields; + @java.lang.Override + public final com.google.protobuf.UnknownFieldSet + getUnknownFields() { + return this.unknownFields; + } + private xtreemfs_rwr_flease_msgRequest( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + initFields(); + int mutable_bitField0_ = 0; + com.google.protobuf.UnknownFieldSet.Builder unknownFields = + com.google.protobuf.UnknownFieldSet.newBuilder(); + try { + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch (tag) { + case 0: + done = true; + break; + default: { + if (!parseUnknownField(input, unknownFields, + extensionRegistry, tag)) { + done = true; + } + break; + } + case 10: { + bitField0_ |= 0x00000001; + senderHostname_ = input.readBytes(); + break; + } + case 21: { + bitField0_ |= 0x00000002; + senderPort_ = input.readFixed32(); + break; + } + } + } + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(this); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException( + e.getMessage()).setUnfinishedMessage(this); + } finally { + this.unknownFields = unknownFields.build(); + makeExtensionsImmutable(); + } + } public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { return org.xtreemfs.pbrpc.generatedinterfaces.OSD.internal_static_xtreemfs_pbrpc_xtreemfs_rwr_flease_msgRequest_descriptor; } - + protected com.google.protobuf.GeneratedMessage.FieldAccessorTable internalGetFieldAccessorTable() { - return org.xtreemfs.pbrpc.generatedinterfaces.OSD.internal_static_xtreemfs_pbrpc_xtreemfs_rwr_flease_msgRequest_fieldAccessorTable; + return org.xtreemfs.pbrpc.generatedinterfaces.OSD.internal_static_xtreemfs_pbrpc_xtreemfs_rwr_flease_msgRequest_fieldAccessorTable + .ensureFieldAccessorsInitialized( + org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_rwr_flease_msgRequest.class, org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_rwr_flease_msgRequest.Builder.class); + } + + public static com.google.protobuf.Parser PARSER = + new com.google.protobuf.AbstractParser() { + public xtreemfs_rwr_flease_msgRequest parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return new xtreemfs_rwr_flease_msgRequest(input, extensionRegistry); + } + }; + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; } - + + private int bitField0_; // required string sender_hostname = 1; public static final int SENDER_HOSTNAME_FIELD_NUMBER = 1; - private boolean hasSenderHostname; - private java.lang.String senderHostname_ = ""; - public boolean hasSenderHostname() { return hasSenderHostname; } - public java.lang.String getSenderHostname() { return senderHostname_; } - + private java.lang.Object senderHostname_; + /** + * required string sender_hostname = 1; + * + *
+     * The actual flease message is sent in data.
+     * 
+ */ + public boolean hasSenderHostname() { + return ((bitField0_ & 0x00000001) == 0x00000001); + } + /** + * required string sender_hostname = 1; + * + *
+     * The actual flease message is sent in data.
+     * 
+ */ + public java.lang.String getSenderHostname() { + java.lang.Object ref = senderHostname_; + if (ref instanceof java.lang.String) { + return (java.lang.String) ref; + } else { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + if (bs.isValidUtf8()) { + senderHostname_ = s; + } + return s; + } + } + /** + * required string sender_hostname = 1; + * + *
+     * The actual flease message is sent in data.
+     * 
+ */ + public com.google.protobuf.ByteString + getSenderHostnameBytes() { + java.lang.Object ref = senderHostname_; + if (ref instanceof java.lang.String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + senderHostname_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + // required fixed32 sender_port = 2; public static final int SENDER_PORT_FIELD_NUMBER = 2; - private boolean hasSenderPort; - private int senderPort_ = 0; - public boolean hasSenderPort() { return hasSenderPort; } - public int getSenderPort() { return senderPort_; } - + private int senderPort_; + /** + * required fixed32 sender_port = 2; + */ + public boolean hasSenderPort() { + return ((bitField0_ & 0x00000002) == 0x00000002); + } + /** + * required fixed32 sender_port = 2; + */ + public int getSenderPort() { + return senderPort_; + } + private void initFields() { + senderHostname_ = ""; + senderPort_ = 0; } + private byte memoizedIsInitialized = -1; public final boolean isInitialized() { - if (!hasSenderHostname) return false; - if (!hasSenderPort) return false; + byte isInitialized = memoizedIsInitialized; + if (isInitialized != -1) return isInitialized == 1; + + if (!hasSenderHostname()) { + memoizedIsInitialized = 0; + return false; + } + if (!hasSenderPort()) { + memoizedIsInitialized = 0; + return false; + } + memoizedIsInitialized = 1; return true; } - + public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException { getSerializedSize(); - if (hasSenderHostname()) { - output.writeString(1, getSenderHostname()); + if (((bitField0_ & 0x00000001) == 0x00000001)) { + output.writeBytes(1, getSenderHostnameBytes()); } - if (hasSenderPort()) { - output.writeFixed32(2, getSenderPort()); + if (((bitField0_ & 0x00000002) == 0x00000002)) { + output.writeFixed32(2, senderPort_); } getUnknownFields().writeTo(output); } - + private int memoizedSerializedSize = -1; public int getSerializedSize() { int size = memoizedSerializedSize; if (size != -1) return size; - + size = 0; - if (hasSenderHostname()) { + if (((bitField0_ & 0x00000001) == 0x00000001)) { size += com.google.protobuf.CodedOutputStream - .computeStringSize(1, getSenderHostname()); + .computeBytesSize(1, getSenderHostnameBytes()); } - if (hasSenderPort()) { + if (((bitField0_ & 0x00000002) == 0x00000002)) { size += com.google.protobuf.CodedOutputStream - .computeFixed32Size(2, getSenderPort()); + .computeFixed32Size(2, senderPort_); } size += getUnknownFields().getSerializedSize(); memoizedSerializedSize = size; return size; } - + + private static final long serialVersionUID = 0L; + @java.lang.Override + protected java.lang.Object writeReplace() + throws java.io.ObjectStreamException { + return super.writeReplace(); + } + public static org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_rwr_flease_msgRequest parseFrom( com.google.protobuf.ByteString data) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data).buildParsed(); + return PARSER.parseFrom(data); } public static org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_rwr_flease_msgRequest parseFrom( com.google.protobuf.ByteString data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(data, extensionRegistry); } public static org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_rwr_flease_msgRequest parseFrom(byte[] data) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data).buildParsed(); + return PARSER.parseFrom(data); } public static org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_rwr_flease_msgRequest parseFrom( byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(data, extensionRegistry); } public static org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_rwr_flease_msgRequest parseFrom(java.io.InputStream input) throws java.io.IOException { - return newBuilder().mergeFrom(input).buildParsed(); + return PARSER.parseFrom(input); } public static org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_rwr_flease_msgRequest parseFrom( java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - return newBuilder().mergeFrom(input, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(input, extensionRegistry); } public static org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_rwr_flease_msgRequest parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException { - Builder builder = newBuilder(); - if (builder.mergeDelimitedFrom(input)) { - return builder.buildParsed(); - } else { - return null; - } + return PARSER.parseDelimitedFrom(input); } public static org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_rwr_flease_msgRequest parseDelimitedFrom( java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - Builder builder = newBuilder(); - if (builder.mergeDelimitedFrom(input, extensionRegistry)) { - return builder.buildParsed(); - } else { - return null; - } + return PARSER.parseDelimitedFrom(input, extensionRegistry); } public static org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_rwr_flease_msgRequest parseFrom( com.google.protobuf.CodedInputStream input) throws java.io.IOException { - return newBuilder().mergeFrom(input).buildParsed(); + return PARSER.parseFrom(input); } public static org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_rwr_flease_msgRequest parseFrom( com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - return newBuilder().mergeFrom(input, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(input, extensionRegistry); } - + public static Builder newBuilder() { return Builder.create(); } public Builder newBuilderForType() { return newBuilder(); } public static Builder newBuilder(org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_rwr_flease_msgRequest prototype) { return newBuilder().mergeFrom(prototype); } public Builder toBuilder() { return newBuilder(this); } - + + @java.lang.Override + protected Builder newBuilderForType( + com.google.protobuf.GeneratedMessage.BuilderParent parent) { + Builder builder = new Builder(parent); + return builder; + } + /** + * Protobuf type {@code xtreemfs.pbrpc.xtreemfs_rwr_flease_msgRequest} + */ public static final class Builder extends - com.google.protobuf.GeneratedMessage.Builder { - private org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_rwr_flease_msgRequest result; - + com.google.protobuf.GeneratedMessage.Builder + implements org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_rwr_flease_msgRequestOrBuilder { + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return org.xtreemfs.pbrpc.generatedinterfaces.OSD.internal_static_xtreemfs_pbrpc_xtreemfs_rwr_flease_msgRequest_descriptor; + } + + protected com.google.protobuf.GeneratedMessage.FieldAccessorTable + internalGetFieldAccessorTable() { + return org.xtreemfs.pbrpc.generatedinterfaces.OSD.internal_static_xtreemfs_pbrpc_xtreemfs_rwr_flease_msgRequest_fieldAccessorTable + .ensureFieldAccessorsInitialized( + org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_rwr_flease_msgRequest.class, org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_rwr_flease_msgRequest.Builder.class); + } + // Construct using org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_rwr_flease_msgRequest.newBuilder() - private Builder() {} - - private static Builder create() { - Builder builder = new Builder(); - builder.result = new org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_rwr_flease_msgRequest(); - return builder; + private Builder() { + maybeForceBuilderInitialization(); } - - protected org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_rwr_flease_msgRequest internalGetResult() { - return result; + + private Builder( + com.google.protobuf.GeneratedMessage.BuilderParent parent) { + super(parent); + maybeForceBuilderInitialization(); } - - public Builder clear() { - if (result == null) { - throw new IllegalStateException( - "Cannot call clear() after build()."); + private void maybeForceBuilderInitialization() { + if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) { } - result = new org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_rwr_flease_msgRequest(); + } + private static Builder create() { + return new Builder(); + } + + public Builder clear() { + super.clear(); + senderHostname_ = ""; + bitField0_ = (bitField0_ & ~0x00000001); + senderPort_ = 0; + bitField0_ = (bitField0_ & ~0x00000002); return this; } - + public Builder clone() { - return create().mergeFrom(result); + return create().mergeFrom(buildPartial()); } - + public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() { - return org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_rwr_flease_msgRequest.getDescriptor(); + return org.xtreemfs.pbrpc.generatedinterfaces.OSD.internal_static_xtreemfs_pbrpc_xtreemfs_rwr_flease_msgRequest_descriptor; } - + public org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_rwr_flease_msgRequest getDefaultInstanceForType() { return org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_rwr_flease_msgRequest.getDefaultInstance(); } - - public boolean isInitialized() { - return result.isInitialized(); - } + public org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_rwr_flease_msgRequest build() { - if (result != null && !isInitialized()) { + org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_rwr_flease_msgRequest result = buildPartial(); + if (!result.isInitialized()) { throw newUninitializedMessageException(result); } - return buildPartial(); - } - - private org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_rwr_flease_msgRequest buildParsed() - throws com.google.protobuf.InvalidProtocolBufferException { - if (!isInitialized()) { - throw newUninitializedMessageException( - result).asInvalidProtocolBufferException(); - } - return buildPartial(); + return result; } - + public org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_rwr_flease_msgRequest buildPartial() { - if (result == null) { - throw new IllegalStateException( - "build() has already been called on this Builder."); - } - org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_rwr_flease_msgRequest returnMe = result; - result = null; - return returnMe; + org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_rwr_flease_msgRequest result = new org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_rwr_flease_msgRequest(this); + int from_bitField0_ = bitField0_; + int to_bitField0_ = 0; + if (((from_bitField0_ & 0x00000001) == 0x00000001)) { + to_bitField0_ |= 0x00000001; + } + result.senderHostname_ = senderHostname_; + if (((from_bitField0_ & 0x00000002) == 0x00000002)) { + to_bitField0_ |= 0x00000002; + } + result.senderPort_ = senderPort_; + result.bitField0_ = to_bitField0_; + onBuilt(); + return result; } - + public Builder mergeFrom(com.google.protobuf.Message other) { if (other instanceof org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_rwr_flease_msgRequest) { return mergeFrom((org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_rwr_flease_msgRequest)other); @@ -9424,11 +19051,13 @@ public final class OSD { return this; } } - + public Builder mergeFrom(org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_rwr_flease_msgRequest other) { if (other == org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_rwr_flease_msgRequest.getDefaultInstance()) return this; if (other.hasSenderHostname()) { - setSenderHostname(other.getSenderHostname()); + bitField0_ |= 0x00000001; + senderHostname_ = other.senderHostname_; + onChanged(); } if (other.hasSenderPort()) { setSenderPort(other.getSenderPort()); @@ -9436,331 +19065,656 @@ public final class OSD { this.mergeUnknownFields(other.getUnknownFields()); return this; } - + + public final boolean isInitialized() { + if (!hasSenderHostname()) { + + return false; + } + if (!hasSenderPort()) { + + return false; + } + return true; + } + public Builder mergeFrom( com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - com.google.protobuf.UnknownFieldSet.Builder unknownFields = - com.google.protobuf.UnknownFieldSet.newBuilder( - this.getUnknownFields()); - while (true) { - int tag = input.readTag(); - switch (tag) { - case 0: - this.setUnknownFields(unknownFields.build()); - return this; - default: { - if (!parseUnknownField(input, unknownFields, - extensionRegistry, tag)) { - this.setUnknownFields(unknownFields.build()); - return this; - } - break; - } - case 10: { - setSenderHostname(input.readString()); - break; - } - case 21: { - setSenderPort(input.readFixed32()); - break; - } + org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_rwr_flease_msgRequest parsedMessage = null; + try { + parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + parsedMessage = (org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_rwr_flease_msgRequest) e.getUnfinishedMessage(); + throw e; + } finally { + if (parsedMessage != null) { + mergeFrom(parsedMessage); } } + return this; } - - + private int bitField0_; + // required string sender_hostname = 1; + private java.lang.Object senderHostname_ = ""; + /** + * required string sender_hostname = 1; + * + *
+       * The actual flease message is sent in data.
+       * 
+ */ public boolean hasSenderHostname() { - return result.hasSenderHostname(); - } + return ((bitField0_ & 0x00000001) == 0x00000001); + } + /** + * required string sender_hostname = 1; + * + *
+       * The actual flease message is sent in data.
+       * 
+ */ public java.lang.String getSenderHostname() { - return result.getSenderHostname(); - } - public Builder setSenderHostname(java.lang.String value) { + java.lang.Object ref = senderHostname_; + if (!(ref instanceof java.lang.String)) { + java.lang.String s = ((com.google.protobuf.ByteString) ref) + .toStringUtf8(); + senderHostname_ = s; + return s; + } else { + return (java.lang.String) ref; + } + } + /** + * required string sender_hostname = 1; + * + *
+       * The actual flease message is sent in data.
+       * 
+ */ + public com.google.protobuf.ByteString + getSenderHostnameBytes() { + java.lang.Object ref = senderHostname_; + if (ref instanceof String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + senderHostname_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + /** + * required string sender_hostname = 1; + * + *
+       * The actual flease message is sent in data.
+       * 
+ */ + public Builder setSenderHostname( + java.lang.String value) { if (value == null) { throw new NullPointerException(); } - result.hasSenderHostname = true; - result.senderHostname_ = value; - return this; - } + bitField0_ |= 0x00000001; + senderHostname_ = value; + onChanged(); + return this; + } + /** + * required string sender_hostname = 1; + * + *
+       * The actual flease message is sent in data.
+       * 
+ */ public Builder clearSenderHostname() { - result.hasSenderHostname = false; - result.senderHostname_ = getDefaultInstance().getSenderHostname(); + bitField0_ = (bitField0_ & ~0x00000001); + senderHostname_ = getDefaultInstance().getSenderHostname(); + onChanged(); + return this; + } + /** + * required string sender_hostname = 1; + * + *
+       * The actual flease message is sent in data.
+       * 
+ */ + public Builder setSenderHostnameBytes( + com.google.protobuf.ByteString value) { + if (value == null) { + throw new NullPointerException(); + } + bitField0_ |= 0x00000001; + senderHostname_ = value; + onChanged(); return this; } - + // required fixed32 sender_port = 2; + private int senderPort_ ; + /** + * required fixed32 sender_port = 2; + */ public boolean hasSenderPort() { - return result.hasSenderPort(); + return ((bitField0_ & 0x00000002) == 0x00000002); } + /** + * required fixed32 sender_port = 2; + */ public int getSenderPort() { - return result.getSenderPort(); + return senderPort_; } + /** + * required fixed32 sender_port = 2; + */ public Builder setSenderPort(int value) { - result.hasSenderPort = true; - result.senderPort_ = value; + bitField0_ |= 0x00000002; + senderPort_ = value; + onChanged(); return this; } + /** + * required fixed32 sender_port = 2; + */ public Builder clearSenderPort() { - result.hasSenderPort = false; - result.senderPort_ = 0; + bitField0_ = (bitField0_ & ~0x00000002); + senderPort_ = 0; + onChanged(); return this; } - + // @@protoc_insertion_point(builder_scope:xtreemfs.pbrpc.xtreemfs_rwr_flease_msgRequest) } - + static { defaultInstance = new xtreemfs_rwr_flease_msgRequest(true); - org.xtreemfs.pbrpc.generatedinterfaces.OSD.internalForceInit(); defaultInstance.initFields(); } - + // @@protoc_insertion_point(class_scope:xtreemfs.pbrpc.xtreemfs_rwr_flease_msgRequest) } - + + public interface xtreemfs_rwr_set_primary_epochRequestOrBuilder + extends com.google.protobuf.MessageOrBuilder { + + // required .xtreemfs.pbrpc.FileCredentials file_credentials = 1; + /** + * required .xtreemfs.pbrpc.FileCredentials file_credentials = 1; + */ + boolean hasFileCredentials(); + /** + * required .xtreemfs.pbrpc.FileCredentials file_credentials = 1; + */ + org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials getFileCredentials(); + /** + * required .xtreemfs.pbrpc.FileCredentials file_credentials = 1; + */ + org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentialsOrBuilder getFileCredentialsOrBuilder(); + + // required string file_id = 2; + /** + * required string file_id = 2; + */ + boolean hasFileId(); + /** + * required string file_id = 2; + */ + java.lang.String getFileId(); + /** + * required string file_id = 2; + */ + com.google.protobuf.ByteString + getFileIdBytes(); + + // required fixed32 primary_epoch = 3; + /** + * required fixed32 primary_epoch = 3; + */ + boolean hasPrimaryEpoch(); + /** + * required fixed32 primary_epoch = 3; + */ + int getPrimaryEpoch(); + } + /** + * Protobuf type {@code xtreemfs.pbrpc.xtreemfs_rwr_set_primary_epochRequest} + */ public static final class xtreemfs_rwr_set_primary_epochRequest extends - com.google.protobuf.GeneratedMessage { + com.google.protobuf.GeneratedMessage + implements xtreemfs_rwr_set_primary_epochRequestOrBuilder { // Use xtreemfs_rwr_set_primary_epochRequest.newBuilder() to construct. - private xtreemfs_rwr_set_primary_epochRequest() { - initFields(); + private xtreemfs_rwr_set_primary_epochRequest(com.google.protobuf.GeneratedMessage.Builder builder) { + super(builder); + this.unknownFields = builder.getUnknownFields(); } - private xtreemfs_rwr_set_primary_epochRequest(boolean noInit) {} - + private xtreemfs_rwr_set_primary_epochRequest(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); } + private static final xtreemfs_rwr_set_primary_epochRequest defaultInstance; public static xtreemfs_rwr_set_primary_epochRequest getDefaultInstance() { return defaultInstance; } - + public xtreemfs_rwr_set_primary_epochRequest getDefaultInstanceForType() { return defaultInstance; } - + + private final com.google.protobuf.UnknownFieldSet unknownFields; + @java.lang.Override + public final com.google.protobuf.UnknownFieldSet + getUnknownFields() { + return this.unknownFields; + } + private xtreemfs_rwr_set_primary_epochRequest( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + initFields(); + int mutable_bitField0_ = 0; + com.google.protobuf.UnknownFieldSet.Builder unknownFields = + com.google.protobuf.UnknownFieldSet.newBuilder(); + try { + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch (tag) { + case 0: + done = true; + break; + default: { + if (!parseUnknownField(input, unknownFields, + extensionRegistry, tag)) { + done = true; + } + break; + } + case 10: { + org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials.Builder subBuilder = null; + if (((bitField0_ & 0x00000001) == 0x00000001)) { + subBuilder = fileCredentials_.toBuilder(); + } + fileCredentials_ = input.readMessage(org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials.PARSER, extensionRegistry); + if (subBuilder != null) { + subBuilder.mergeFrom(fileCredentials_); + fileCredentials_ = subBuilder.buildPartial(); + } + bitField0_ |= 0x00000001; + break; + } + case 18: { + bitField0_ |= 0x00000002; + fileId_ = input.readBytes(); + break; + } + case 29: { + bitField0_ |= 0x00000004; + primaryEpoch_ = input.readFixed32(); + break; + } + } + } + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(this); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException( + e.getMessage()).setUnfinishedMessage(this); + } finally { + this.unknownFields = unknownFields.build(); + makeExtensionsImmutable(); + } + } public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { return org.xtreemfs.pbrpc.generatedinterfaces.OSD.internal_static_xtreemfs_pbrpc_xtreemfs_rwr_set_primary_epochRequest_descriptor; } - + protected com.google.protobuf.GeneratedMessage.FieldAccessorTable internalGetFieldAccessorTable() { - return org.xtreemfs.pbrpc.generatedinterfaces.OSD.internal_static_xtreemfs_pbrpc_xtreemfs_rwr_set_primary_epochRequest_fieldAccessorTable; + return org.xtreemfs.pbrpc.generatedinterfaces.OSD.internal_static_xtreemfs_pbrpc_xtreemfs_rwr_set_primary_epochRequest_fieldAccessorTable + .ensureFieldAccessorsInitialized( + org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_rwr_set_primary_epochRequest.class, org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_rwr_set_primary_epochRequest.Builder.class); + } + + public static com.google.protobuf.Parser PARSER = + new com.google.protobuf.AbstractParser() { + public xtreemfs_rwr_set_primary_epochRequest parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return new xtreemfs_rwr_set_primary_epochRequest(input, extensionRegistry); + } + }; + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; } - + + private int bitField0_; // required .xtreemfs.pbrpc.FileCredentials file_credentials = 1; public static final int FILE_CREDENTIALS_FIELD_NUMBER = 1; - private boolean hasFileCredentials; private org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials fileCredentials_; - public boolean hasFileCredentials() { return hasFileCredentials; } - public org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials getFileCredentials() { return fileCredentials_; } - + /** + * required .xtreemfs.pbrpc.FileCredentials file_credentials = 1; + */ + public boolean hasFileCredentials() { + return ((bitField0_ & 0x00000001) == 0x00000001); + } + /** + * required .xtreemfs.pbrpc.FileCredentials file_credentials = 1; + */ + public org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials getFileCredentials() { + return fileCredentials_; + } + /** + * required .xtreemfs.pbrpc.FileCredentials file_credentials = 1; + */ + public org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentialsOrBuilder getFileCredentialsOrBuilder() { + return fileCredentials_; + } + // required string file_id = 2; public static final int FILE_ID_FIELD_NUMBER = 2; - private boolean hasFileId; - private java.lang.String fileId_ = ""; - public boolean hasFileId() { return hasFileId; } - public java.lang.String getFileId() { return fileId_; } - + private java.lang.Object fileId_; + /** + * required string file_id = 2; + */ + public boolean hasFileId() { + return ((bitField0_ & 0x00000002) == 0x00000002); + } + /** + * required string file_id = 2; + */ + public java.lang.String getFileId() { + java.lang.Object ref = fileId_; + if (ref instanceof java.lang.String) { + return (java.lang.String) ref; + } else { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + if (bs.isValidUtf8()) { + fileId_ = s; + } + return s; + } + } + /** + * required string file_id = 2; + */ + public com.google.protobuf.ByteString + getFileIdBytes() { + java.lang.Object ref = fileId_; + if (ref instanceof java.lang.String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + fileId_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + // required fixed32 primary_epoch = 3; public static final int PRIMARY_EPOCH_FIELD_NUMBER = 3; - private boolean hasPrimaryEpoch; - private int primaryEpoch_ = 0; - public boolean hasPrimaryEpoch() { return hasPrimaryEpoch; } - public int getPrimaryEpoch() { return primaryEpoch_; } - + private int primaryEpoch_; + /** + * required fixed32 primary_epoch = 3; + */ + public boolean hasPrimaryEpoch() { + return ((bitField0_ & 0x00000004) == 0x00000004); + } + /** + * required fixed32 primary_epoch = 3; + */ + public int getPrimaryEpoch() { + return primaryEpoch_; + } + private void initFields() { fileCredentials_ = org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials.getDefaultInstance(); + fileId_ = ""; + primaryEpoch_ = 0; } + private byte memoizedIsInitialized = -1; public final boolean isInitialized() { - if (!hasFileCredentials) return false; - if (!hasFileId) return false; - if (!hasPrimaryEpoch) return false; - if (!getFileCredentials().isInitialized()) return false; + byte isInitialized = memoizedIsInitialized; + if (isInitialized != -1) return isInitialized == 1; + + if (!hasFileCredentials()) { + memoizedIsInitialized = 0; + return false; + } + if (!hasFileId()) { + memoizedIsInitialized = 0; + return false; + } + if (!hasPrimaryEpoch()) { + memoizedIsInitialized = 0; + return false; + } + if (!getFileCredentials().isInitialized()) { + memoizedIsInitialized = 0; + return false; + } + memoizedIsInitialized = 1; return true; } - + public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException { getSerializedSize(); - if (hasFileCredentials()) { - output.writeMessage(1, getFileCredentials()); + if (((bitField0_ & 0x00000001) == 0x00000001)) { + output.writeMessage(1, fileCredentials_); } - if (hasFileId()) { - output.writeString(2, getFileId()); + if (((bitField0_ & 0x00000002) == 0x00000002)) { + output.writeBytes(2, getFileIdBytes()); } - if (hasPrimaryEpoch()) { - output.writeFixed32(3, getPrimaryEpoch()); + if (((bitField0_ & 0x00000004) == 0x00000004)) { + output.writeFixed32(3, primaryEpoch_); } getUnknownFields().writeTo(output); } - + private int memoizedSerializedSize = -1; public int getSerializedSize() { int size = memoizedSerializedSize; if (size != -1) return size; - + size = 0; - if (hasFileCredentials()) { + if (((bitField0_ & 0x00000001) == 0x00000001)) { size += com.google.protobuf.CodedOutputStream - .computeMessageSize(1, getFileCredentials()); + .computeMessageSize(1, fileCredentials_); } - if (hasFileId()) { + if (((bitField0_ & 0x00000002) == 0x00000002)) { size += com.google.protobuf.CodedOutputStream - .computeStringSize(2, getFileId()); + .computeBytesSize(2, getFileIdBytes()); } - if (hasPrimaryEpoch()) { + if (((bitField0_ & 0x00000004) == 0x00000004)) { size += com.google.protobuf.CodedOutputStream - .computeFixed32Size(3, getPrimaryEpoch()); + .computeFixed32Size(3, primaryEpoch_); } size += getUnknownFields().getSerializedSize(); memoizedSerializedSize = size; return size; } - + + private static final long serialVersionUID = 0L; + @java.lang.Override + protected java.lang.Object writeReplace() + throws java.io.ObjectStreamException { + return super.writeReplace(); + } + public static org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_rwr_set_primary_epochRequest parseFrom( com.google.protobuf.ByteString data) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data).buildParsed(); + return PARSER.parseFrom(data); } public static org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_rwr_set_primary_epochRequest parseFrom( com.google.protobuf.ByteString data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(data, extensionRegistry); } public static org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_rwr_set_primary_epochRequest parseFrom(byte[] data) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data).buildParsed(); + return PARSER.parseFrom(data); } public static org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_rwr_set_primary_epochRequest parseFrom( byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(data, extensionRegistry); } public static org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_rwr_set_primary_epochRequest parseFrom(java.io.InputStream input) throws java.io.IOException { - return newBuilder().mergeFrom(input).buildParsed(); + return PARSER.parseFrom(input); } public static org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_rwr_set_primary_epochRequest parseFrom( java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - return newBuilder().mergeFrom(input, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(input, extensionRegistry); } public static org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_rwr_set_primary_epochRequest parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException { - Builder builder = newBuilder(); - if (builder.mergeDelimitedFrom(input)) { - return builder.buildParsed(); - } else { - return null; - } + return PARSER.parseDelimitedFrom(input); } public static org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_rwr_set_primary_epochRequest parseDelimitedFrom( java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - Builder builder = newBuilder(); - if (builder.mergeDelimitedFrom(input, extensionRegistry)) { - return builder.buildParsed(); - } else { - return null; - } + return PARSER.parseDelimitedFrom(input, extensionRegistry); } public static org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_rwr_set_primary_epochRequest parseFrom( com.google.protobuf.CodedInputStream input) throws java.io.IOException { - return newBuilder().mergeFrom(input).buildParsed(); + return PARSER.parseFrom(input); } public static org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_rwr_set_primary_epochRequest parseFrom( com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - return newBuilder().mergeFrom(input, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(input, extensionRegistry); } - + public static Builder newBuilder() { return Builder.create(); } public Builder newBuilderForType() { return newBuilder(); } public static Builder newBuilder(org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_rwr_set_primary_epochRequest prototype) { return newBuilder().mergeFrom(prototype); } public Builder toBuilder() { return newBuilder(this); } - + + @java.lang.Override + protected Builder newBuilderForType( + com.google.protobuf.GeneratedMessage.BuilderParent parent) { + Builder builder = new Builder(parent); + return builder; + } + /** + * Protobuf type {@code xtreemfs.pbrpc.xtreemfs_rwr_set_primary_epochRequest} + */ public static final class Builder extends - com.google.protobuf.GeneratedMessage.Builder { - private org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_rwr_set_primary_epochRequest result; - + com.google.protobuf.GeneratedMessage.Builder + implements org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_rwr_set_primary_epochRequestOrBuilder { + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return org.xtreemfs.pbrpc.generatedinterfaces.OSD.internal_static_xtreemfs_pbrpc_xtreemfs_rwr_set_primary_epochRequest_descriptor; + } + + protected com.google.protobuf.GeneratedMessage.FieldAccessorTable + internalGetFieldAccessorTable() { + return org.xtreemfs.pbrpc.generatedinterfaces.OSD.internal_static_xtreemfs_pbrpc_xtreemfs_rwr_set_primary_epochRequest_fieldAccessorTable + .ensureFieldAccessorsInitialized( + org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_rwr_set_primary_epochRequest.class, org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_rwr_set_primary_epochRequest.Builder.class); + } + // Construct using org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_rwr_set_primary_epochRequest.newBuilder() - private Builder() {} - - private static Builder create() { - Builder builder = new Builder(); - builder.result = new org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_rwr_set_primary_epochRequest(); - return builder; + private Builder() { + maybeForceBuilderInitialization(); } - - protected org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_rwr_set_primary_epochRequest internalGetResult() { - return result; + + private Builder( + com.google.protobuf.GeneratedMessage.BuilderParent parent) { + super(parent); + maybeForceBuilderInitialization(); } - + private void maybeForceBuilderInitialization() { + if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) { + getFileCredentialsFieldBuilder(); + } + } + private static Builder create() { + return new Builder(); + } + public Builder clear() { - if (result == null) { - throw new IllegalStateException( - "Cannot call clear() after build()."); + super.clear(); + if (fileCredentialsBuilder_ == null) { + fileCredentials_ = org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials.getDefaultInstance(); + } else { + fileCredentialsBuilder_.clear(); } - result = new org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_rwr_set_primary_epochRequest(); + bitField0_ = (bitField0_ & ~0x00000001); + fileId_ = ""; + bitField0_ = (bitField0_ & ~0x00000002); + primaryEpoch_ = 0; + bitField0_ = (bitField0_ & ~0x00000004); return this; } - + public Builder clone() { - return create().mergeFrom(result); + return create().mergeFrom(buildPartial()); } - + public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() { - return org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_rwr_set_primary_epochRequest.getDescriptor(); + return org.xtreemfs.pbrpc.generatedinterfaces.OSD.internal_static_xtreemfs_pbrpc_xtreemfs_rwr_set_primary_epochRequest_descriptor; } - + public org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_rwr_set_primary_epochRequest getDefaultInstanceForType() { return org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_rwr_set_primary_epochRequest.getDefaultInstance(); } - - public boolean isInitialized() { - return result.isInitialized(); - } + public org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_rwr_set_primary_epochRequest build() { - if (result != null && !isInitialized()) { + org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_rwr_set_primary_epochRequest result = buildPartial(); + if (!result.isInitialized()) { throw newUninitializedMessageException(result); } - return buildPartial(); - } - - private org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_rwr_set_primary_epochRequest buildParsed() - throws com.google.protobuf.InvalidProtocolBufferException { - if (!isInitialized()) { - throw newUninitializedMessageException( - result).asInvalidProtocolBufferException(); - } - return buildPartial(); + return result; } - + public org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_rwr_set_primary_epochRequest buildPartial() { - if (result == null) { - throw new IllegalStateException( - "build() has already been called on this Builder."); + org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_rwr_set_primary_epochRequest result = new org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_rwr_set_primary_epochRequest(this); + int from_bitField0_ = bitField0_; + int to_bitField0_ = 0; + if (((from_bitField0_ & 0x00000001) == 0x00000001)) { + to_bitField0_ |= 0x00000001; + } + if (fileCredentialsBuilder_ == null) { + result.fileCredentials_ = fileCredentials_; + } else { + result.fileCredentials_ = fileCredentialsBuilder_.build(); + } + if (((from_bitField0_ & 0x00000002) == 0x00000002)) { + to_bitField0_ |= 0x00000002; } - org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_rwr_set_primary_epochRequest returnMe = result; - result = null; - return returnMe; + result.fileId_ = fileId_; + if (((from_bitField0_ & 0x00000004) == 0x00000004)) { + to_bitField0_ |= 0x00000004; + } + result.primaryEpoch_ = primaryEpoch_; + result.bitField0_ = to_bitField0_; + onBuilt(); + return result; } - + public Builder mergeFrom(com.google.protobuf.Message other) { if (other instanceof org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_rwr_set_primary_epochRequest) { return mergeFrom((org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_rwr_set_primary_epochRequest)other); @@ -9769,14 +19723,16 @@ public final class OSD { return this; } } - + public Builder mergeFrom(org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_rwr_set_primary_epochRequest other) { if (other == org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_rwr_set_primary_epochRequest.getDefaultInstance()) return this; if (other.hasFileCredentials()) { mergeFileCredentials(other.getFileCredentials()); } if (other.hasFileId()) { - setFileId(other.getFileId()); + bitField0_ |= 0x00000002; + fileId_ = other.fileId_; + onChanged(); } if (other.hasPrimaryEpoch()) { setPrimaryEpoch(other.getPrimaryEpoch()); @@ -9784,377 +19740,773 @@ public final class OSD { this.mergeUnknownFields(other.getUnknownFields()); return this; } - - public Builder mergeFrom( - com.google.protobuf.CodedInputStream input, - com.google.protobuf.ExtensionRegistryLite extensionRegistry) - throws java.io.IOException { - com.google.protobuf.UnknownFieldSet.Builder unknownFields = - com.google.protobuf.UnknownFieldSet.newBuilder( - this.getUnknownFields()); - while (true) { - int tag = input.readTag(); - switch (tag) { - case 0: - this.setUnknownFields(unknownFields.build()); - return this; - default: { - if (!parseUnknownField(input, unknownFields, - extensionRegistry, tag)) { - this.setUnknownFields(unknownFields.build()); - return this; - } - break; - } - case 10: { - org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials.Builder subBuilder = org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials.newBuilder(); - if (hasFileCredentials()) { - subBuilder.mergeFrom(getFileCredentials()); - } - input.readMessage(subBuilder, extensionRegistry); - setFileCredentials(subBuilder.buildPartial()); - break; - } - case 18: { - setFileId(input.readString()); - break; - } - case 29: { - setPrimaryEpoch(input.readFixed32()); - break; - } + + public final boolean isInitialized() { + if (!hasFileCredentials()) { + + return false; + } + if (!hasFileId()) { + + return false; + } + if (!hasPrimaryEpoch()) { + + return false; + } + if (!getFileCredentials().isInitialized()) { + + return false; + } + return true; + } + + public Builder mergeFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_rwr_set_primary_epochRequest parsedMessage = null; + try { + parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + parsedMessage = (org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_rwr_set_primary_epochRequest) e.getUnfinishedMessage(); + throw e; + } finally { + if (parsedMessage != null) { + mergeFrom(parsedMessage); } } + return this; } - - + private int bitField0_; + // required .xtreemfs.pbrpc.FileCredentials file_credentials = 1; + private org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials fileCredentials_ = org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials.getDefaultInstance(); + private com.google.protobuf.SingleFieldBuilder< + org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials, org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials.Builder, org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentialsOrBuilder> fileCredentialsBuilder_; + /** + * required .xtreemfs.pbrpc.FileCredentials file_credentials = 1; + */ public boolean hasFileCredentials() { - return result.hasFileCredentials(); + return ((bitField0_ & 0x00000001) == 0x00000001); } + /** + * required .xtreemfs.pbrpc.FileCredentials file_credentials = 1; + */ public org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials getFileCredentials() { - return result.getFileCredentials(); + if (fileCredentialsBuilder_ == null) { + return fileCredentials_; + } else { + return fileCredentialsBuilder_.getMessage(); + } } + /** + * required .xtreemfs.pbrpc.FileCredentials file_credentials = 1; + */ public Builder setFileCredentials(org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials value) { - if (value == null) { - throw new NullPointerException(); + if (fileCredentialsBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + fileCredentials_ = value; + onChanged(); + } else { + fileCredentialsBuilder_.setMessage(value); } - result.hasFileCredentials = true; - result.fileCredentials_ = value; + bitField0_ |= 0x00000001; return this; } - public Builder setFileCredentials(org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials.Builder builderForValue) { - result.hasFileCredentials = true; - result.fileCredentials_ = builderForValue.build(); + /** + * required .xtreemfs.pbrpc.FileCredentials file_credentials = 1; + */ + public Builder setFileCredentials( + org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials.Builder builderForValue) { + if (fileCredentialsBuilder_ == null) { + fileCredentials_ = builderForValue.build(); + onChanged(); + } else { + fileCredentialsBuilder_.setMessage(builderForValue.build()); + } + bitField0_ |= 0x00000001; return this; } + /** + * required .xtreemfs.pbrpc.FileCredentials file_credentials = 1; + */ public Builder mergeFileCredentials(org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials value) { - if (result.hasFileCredentials() && - result.fileCredentials_ != org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials.getDefaultInstance()) { - result.fileCredentials_ = - org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials.newBuilder(result.fileCredentials_).mergeFrom(value).buildPartial(); + if (fileCredentialsBuilder_ == null) { + if (((bitField0_ & 0x00000001) == 0x00000001) && + fileCredentials_ != org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials.getDefaultInstance()) { + fileCredentials_ = + org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials.newBuilder(fileCredentials_).mergeFrom(value).buildPartial(); + } else { + fileCredentials_ = value; + } + onChanged(); } else { - result.fileCredentials_ = value; + fileCredentialsBuilder_.mergeFrom(value); } - result.hasFileCredentials = true; + bitField0_ |= 0x00000001; return this; } + /** + * required .xtreemfs.pbrpc.FileCredentials file_credentials = 1; + */ public Builder clearFileCredentials() { - result.hasFileCredentials = false; - result.fileCredentials_ = org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials.getDefaultInstance(); + if (fileCredentialsBuilder_ == null) { + fileCredentials_ = org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials.getDefaultInstance(); + onChanged(); + } else { + fileCredentialsBuilder_.clear(); + } + bitField0_ = (bitField0_ & ~0x00000001); return this; } - + /** + * required .xtreemfs.pbrpc.FileCredentials file_credentials = 1; + */ + public org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials.Builder getFileCredentialsBuilder() { + bitField0_ |= 0x00000001; + onChanged(); + return getFileCredentialsFieldBuilder().getBuilder(); + } + /** + * required .xtreemfs.pbrpc.FileCredentials file_credentials = 1; + */ + public org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentialsOrBuilder getFileCredentialsOrBuilder() { + if (fileCredentialsBuilder_ != null) { + return fileCredentialsBuilder_.getMessageOrBuilder(); + } else { + return fileCredentials_; + } + } + /** + * required .xtreemfs.pbrpc.FileCredentials file_credentials = 1; + */ + private com.google.protobuf.SingleFieldBuilder< + org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials, org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials.Builder, org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentialsOrBuilder> + getFileCredentialsFieldBuilder() { + if (fileCredentialsBuilder_ == null) { + fileCredentialsBuilder_ = new com.google.protobuf.SingleFieldBuilder< + org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials, org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials.Builder, org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentialsOrBuilder>( + fileCredentials_, + getParentForChildren(), + isClean()); + fileCredentials_ = null; + } + return fileCredentialsBuilder_; + } + // required string file_id = 2; + private java.lang.Object fileId_ = ""; + /** + * required string file_id = 2; + */ public boolean hasFileId() { - return result.hasFileId(); + return ((bitField0_ & 0x00000002) == 0x00000002); } + /** + * required string file_id = 2; + */ public java.lang.String getFileId() { - return result.getFileId(); + java.lang.Object ref = fileId_; + if (!(ref instanceof java.lang.String)) { + java.lang.String s = ((com.google.protobuf.ByteString) ref) + .toStringUtf8(); + fileId_ = s; + return s; + } else { + return (java.lang.String) ref; + } + } + /** + * required string file_id = 2; + */ + public com.google.protobuf.ByteString + getFileIdBytes() { + java.lang.Object ref = fileId_; + if (ref instanceof String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + fileId_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } } - public Builder setFileId(java.lang.String value) { + /** + * required string file_id = 2; + */ + public Builder setFileId( + java.lang.String value) { if (value == null) { throw new NullPointerException(); } - result.hasFileId = true; - result.fileId_ = value; + bitField0_ |= 0x00000002; + fileId_ = value; + onChanged(); return this; } + /** + * required string file_id = 2; + */ public Builder clearFileId() { - result.hasFileId = false; - result.fileId_ = getDefaultInstance().getFileId(); + bitField0_ = (bitField0_ & ~0x00000002); + fileId_ = getDefaultInstance().getFileId(); + onChanged(); + return this; + } + /** + * required string file_id = 2; + */ + public Builder setFileIdBytes( + com.google.protobuf.ByteString value) { + if (value == null) { + throw new NullPointerException(); + } + bitField0_ |= 0x00000002; + fileId_ = value; + onChanged(); return this; } - + // required fixed32 primary_epoch = 3; + private int primaryEpoch_ ; + /** + * required fixed32 primary_epoch = 3; + */ public boolean hasPrimaryEpoch() { - return result.hasPrimaryEpoch(); + return ((bitField0_ & 0x00000004) == 0x00000004); } + /** + * required fixed32 primary_epoch = 3; + */ public int getPrimaryEpoch() { - return result.getPrimaryEpoch(); + return primaryEpoch_; } + /** + * required fixed32 primary_epoch = 3; + */ public Builder setPrimaryEpoch(int value) { - result.hasPrimaryEpoch = true; - result.primaryEpoch_ = value; + bitField0_ |= 0x00000004; + primaryEpoch_ = value; + onChanged(); return this; } + /** + * required fixed32 primary_epoch = 3; + */ public Builder clearPrimaryEpoch() { - result.hasPrimaryEpoch = false; - result.primaryEpoch_ = 0; + bitField0_ = (bitField0_ & ~0x00000004); + primaryEpoch_ = 0; + onChanged(); return this; } - + // @@protoc_insertion_point(builder_scope:xtreemfs.pbrpc.xtreemfs_rwr_set_primary_epochRequest) } - + static { defaultInstance = new xtreemfs_rwr_set_primary_epochRequest(true); - org.xtreemfs.pbrpc.generatedinterfaces.OSD.internalForceInit(); defaultInstance.initFields(); } - + // @@protoc_insertion_point(class_scope:xtreemfs.pbrpc.xtreemfs_rwr_set_primary_epochRequest) } - + + public interface xtreemfs_rwr_statusRequestOrBuilder + extends com.google.protobuf.MessageOrBuilder { + + // required .xtreemfs.pbrpc.FileCredentials file_credentials = 1; + /** + * required .xtreemfs.pbrpc.FileCredentials file_credentials = 1; + */ + boolean hasFileCredentials(); + /** + * required .xtreemfs.pbrpc.FileCredentials file_credentials = 1; + */ + org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials getFileCredentials(); + /** + * required .xtreemfs.pbrpc.FileCredentials file_credentials = 1; + */ + org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentialsOrBuilder getFileCredentialsOrBuilder(); + + // required string file_id = 2; + /** + * required string file_id = 2; + */ + boolean hasFileId(); + /** + * required string file_id = 2; + */ + java.lang.String getFileId(); + /** + * required string file_id = 2; + */ + com.google.protobuf.ByteString + getFileIdBytes(); + + // required fixed64 max_local_obj_version = 3; + /** + * required fixed64 max_local_obj_version = 3; + * + *
+     * Maximum local object version stored on an OSD.
+     * 
+ */ + boolean hasMaxLocalObjVersion(); + /** + * required fixed64 max_local_obj_version = 3; + * + *
+     * Maximum local object version stored on an OSD.
+     * 
+ */ + long getMaxLocalObjVersion(); + } + /** + * Protobuf type {@code xtreemfs.pbrpc.xtreemfs_rwr_statusRequest} + */ public static final class xtreemfs_rwr_statusRequest extends - com.google.protobuf.GeneratedMessage { + com.google.protobuf.GeneratedMessage + implements xtreemfs_rwr_statusRequestOrBuilder { // Use xtreemfs_rwr_statusRequest.newBuilder() to construct. - private xtreemfs_rwr_statusRequest() { - initFields(); + private xtreemfs_rwr_statusRequest(com.google.protobuf.GeneratedMessage.Builder builder) { + super(builder); + this.unknownFields = builder.getUnknownFields(); } - private xtreemfs_rwr_statusRequest(boolean noInit) {} - + private xtreemfs_rwr_statusRequest(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); } + private static final xtreemfs_rwr_statusRequest defaultInstance; public static xtreemfs_rwr_statusRequest getDefaultInstance() { return defaultInstance; } - + public xtreemfs_rwr_statusRequest getDefaultInstanceForType() { return defaultInstance; } - + + private final com.google.protobuf.UnknownFieldSet unknownFields; + @java.lang.Override + public final com.google.protobuf.UnknownFieldSet + getUnknownFields() { + return this.unknownFields; + } + private xtreemfs_rwr_statusRequest( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + initFields(); + int mutable_bitField0_ = 0; + com.google.protobuf.UnknownFieldSet.Builder unknownFields = + com.google.protobuf.UnknownFieldSet.newBuilder(); + try { + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch (tag) { + case 0: + done = true; + break; + default: { + if (!parseUnknownField(input, unknownFields, + extensionRegistry, tag)) { + done = true; + } + break; + } + case 10: { + org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials.Builder subBuilder = null; + if (((bitField0_ & 0x00000001) == 0x00000001)) { + subBuilder = fileCredentials_.toBuilder(); + } + fileCredentials_ = input.readMessage(org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials.PARSER, extensionRegistry); + if (subBuilder != null) { + subBuilder.mergeFrom(fileCredentials_); + fileCredentials_ = subBuilder.buildPartial(); + } + bitField0_ |= 0x00000001; + break; + } + case 18: { + bitField0_ |= 0x00000002; + fileId_ = input.readBytes(); + break; + } + case 25: { + bitField0_ |= 0x00000004; + maxLocalObjVersion_ = input.readFixed64(); + break; + } + } + } + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(this); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException( + e.getMessage()).setUnfinishedMessage(this); + } finally { + this.unknownFields = unknownFields.build(); + makeExtensionsImmutable(); + } + } public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { return org.xtreemfs.pbrpc.generatedinterfaces.OSD.internal_static_xtreemfs_pbrpc_xtreemfs_rwr_statusRequest_descriptor; } - + protected com.google.protobuf.GeneratedMessage.FieldAccessorTable internalGetFieldAccessorTable() { - return org.xtreemfs.pbrpc.generatedinterfaces.OSD.internal_static_xtreemfs_pbrpc_xtreemfs_rwr_statusRequest_fieldAccessorTable; + return org.xtreemfs.pbrpc.generatedinterfaces.OSD.internal_static_xtreemfs_pbrpc_xtreemfs_rwr_statusRequest_fieldAccessorTable + .ensureFieldAccessorsInitialized( + org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_rwr_statusRequest.class, org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_rwr_statusRequest.Builder.class); + } + + public static com.google.protobuf.Parser PARSER = + new com.google.protobuf.AbstractParser() { + public xtreemfs_rwr_statusRequest parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return new xtreemfs_rwr_statusRequest(input, extensionRegistry); + } + }; + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; } - + + private int bitField0_; // required .xtreemfs.pbrpc.FileCredentials file_credentials = 1; public static final int FILE_CREDENTIALS_FIELD_NUMBER = 1; - private boolean hasFileCredentials; private org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials fileCredentials_; - public boolean hasFileCredentials() { return hasFileCredentials; } - public org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials getFileCredentials() { return fileCredentials_; } - + /** + * required .xtreemfs.pbrpc.FileCredentials file_credentials = 1; + */ + public boolean hasFileCredentials() { + return ((bitField0_ & 0x00000001) == 0x00000001); + } + /** + * required .xtreemfs.pbrpc.FileCredentials file_credentials = 1; + */ + public org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials getFileCredentials() { + return fileCredentials_; + } + /** + * required .xtreemfs.pbrpc.FileCredentials file_credentials = 1; + */ + public org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentialsOrBuilder getFileCredentialsOrBuilder() { + return fileCredentials_; + } + // required string file_id = 2; public static final int FILE_ID_FIELD_NUMBER = 2; - private boolean hasFileId; - private java.lang.String fileId_ = ""; - public boolean hasFileId() { return hasFileId; } - public java.lang.String getFileId() { return fileId_; } - + private java.lang.Object fileId_; + /** + * required string file_id = 2; + */ + public boolean hasFileId() { + return ((bitField0_ & 0x00000002) == 0x00000002); + } + /** + * required string file_id = 2; + */ + public java.lang.String getFileId() { + java.lang.Object ref = fileId_; + if (ref instanceof java.lang.String) { + return (java.lang.String) ref; + } else { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + if (bs.isValidUtf8()) { + fileId_ = s; + } + return s; + } + } + /** + * required string file_id = 2; + */ + public com.google.protobuf.ByteString + getFileIdBytes() { + java.lang.Object ref = fileId_; + if (ref instanceof java.lang.String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + fileId_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + // required fixed64 max_local_obj_version = 3; public static final int MAX_LOCAL_OBJ_VERSION_FIELD_NUMBER = 3; - private boolean hasMaxLocalObjVersion; - private long maxLocalObjVersion_ = 0L; - public boolean hasMaxLocalObjVersion() { return hasMaxLocalObjVersion; } - public long getMaxLocalObjVersion() { return maxLocalObjVersion_; } - + private long maxLocalObjVersion_; + /** + * required fixed64 max_local_obj_version = 3; + * + *
+     * Maximum local object version stored on an OSD.
+     * 
+ */ + public boolean hasMaxLocalObjVersion() { + return ((bitField0_ & 0x00000004) == 0x00000004); + } + /** + * required fixed64 max_local_obj_version = 3; + * + *
+     * Maximum local object version stored on an OSD.
+     * 
+ */ + public long getMaxLocalObjVersion() { + return maxLocalObjVersion_; + } + private void initFields() { fileCredentials_ = org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials.getDefaultInstance(); + fileId_ = ""; + maxLocalObjVersion_ = 0L; } + private byte memoizedIsInitialized = -1; public final boolean isInitialized() { - if (!hasFileCredentials) return false; - if (!hasFileId) return false; - if (!hasMaxLocalObjVersion) return false; - if (!getFileCredentials().isInitialized()) return false; + byte isInitialized = memoizedIsInitialized; + if (isInitialized != -1) return isInitialized == 1; + + if (!hasFileCredentials()) { + memoizedIsInitialized = 0; + return false; + } + if (!hasFileId()) { + memoizedIsInitialized = 0; + return false; + } + if (!hasMaxLocalObjVersion()) { + memoizedIsInitialized = 0; + return false; + } + if (!getFileCredentials().isInitialized()) { + memoizedIsInitialized = 0; + return false; + } + memoizedIsInitialized = 1; return true; } - + public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException { getSerializedSize(); - if (hasFileCredentials()) { - output.writeMessage(1, getFileCredentials()); + if (((bitField0_ & 0x00000001) == 0x00000001)) { + output.writeMessage(1, fileCredentials_); } - if (hasFileId()) { - output.writeString(2, getFileId()); + if (((bitField0_ & 0x00000002) == 0x00000002)) { + output.writeBytes(2, getFileIdBytes()); } - if (hasMaxLocalObjVersion()) { - output.writeFixed64(3, getMaxLocalObjVersion()); + if (((bitField0_ & 0x00000004) == 0x00000004)) { + output.writeFixed64(3, maxLocalObjVersion_); } getUnknownFields().writeTo(output); } - + private int memoizedSerializedSize = -1; public int getSerializedSize() { int size = memoizedSerializedSize; if (size != -1) return size; - + size = 0; - if (hasFileCredentials()) { + if (((bitField0_ & 0x00000001) == 0x00000001)) { size += com.google.protobuf.CodedOutputStream - .computeMessageSize(1, getFileCredentials()); + .computeMessageSize(1, fileCredentials_); } - if (hasFileId()) { + if (((bitField0_ & 0x00000002) == 0x00000002)) { size += com.google.protobuf.CodedOutputStream - .computeStringSize(2, getFileId()); + .computeBytesSize(2, getFileIdBytes()); } - if (hasMaxLocalObjVersion()) { + if (((bitField0_ & 0x00000004) == 0x00000004)) { size += com.google.protobuf.CodedOutputStream - .computeFixed64Size(3, getMaxLocalObjVersion()); + .computeFixed64Size(3, maxLocalObjVersion_); } size += getUnknownFields().getSerializedSize(); memoizedSerializedSize = size; return size; } - + + private static final long serialVersionUID = 0L; + @java.lang.Override + protected java.lang.Object writeReplace() + throws java.io.ObjectStreamException { + return super.writeReplace(); + } + public static org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_rwr_statusRequest parseFrom( com.google.protobuf.ByteString data) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data).buildParsed(); + return PARSER.parseFrom(data); } public static org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_rwr_statusRequest parseFrom( com.google.protobuf.ByteString data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(data, extensionRegistry); } public static org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_rwr_statusRequest parseFrom(byte[] data) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data).buildParsed(); + return PARSER.parseFrom(data); } public static org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_rwr_statusRequest parseFrom( byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(data, extensionRegistry); } public static org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_rwr_statusRequest parseFrom(java.io.InputStream input) throws java.io.IOException { - return newBuilder().mergeFrom(input).buildParsed(); + return PARSER.parseFrom(input); } public static org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_rwr_statusRequest parseFrom( java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - return newBuilder().mergeFrom(input, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(input, extensionRegistry); } public static org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_rwr_statusRequest parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException { - Builder builder = newBuilder(); - if (builder.mergeDelimitedFrom(input)) { - return builder.buildParsed(); - } else { - return null; - } + return PARSER.parseDelimitedFrom(input); } public static org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_rwr_statusRequest parseDelimitedFrom( java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - Builder builder = newBuilder(); - if (builder.mergeDelimitedFrom(input, extensionRegistry)) { - return builder.buildParsed(); - } else { - return null; - } + return PARSER.parseDelimitedFrom(input, extensionRegistry); } public static org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_rwr_statusRequest parseFrom( com.google.protobuf.CodedInputStream input) throws java.io.IOException { - return newBuilder().mergeFrom(input).buildParsed(); + return PARSER.parseFrom(input); } public static org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_rwr_statusRequest parseFrom( com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - return newBuilder().mergeFrom(input, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(input, extensionRegistry); } - + public static Builder newBuilder() { return Builder.create(); } public Builder newBuilderForType() { return newBuilder(); } public static Builder newBuilder(org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_rwr_statusRequest prototype) { return newBuilder().mergeFrom(prototype); } public Builder toBuilder() { return newBuilder(this); } - + + @java.lang.Override + protected Builder newBuilderForType( + com.google.protobuf.GeneratedMessage.BuilderParent parent) { + Builder builder = new Builder(parent); + return builder; + } + /** + * Protobuf type {@code xtreemfs.pbrpc.xtreemfs_rwr_statusRequest} + */ public static final class Builder extends - com.google.protobuf.GeneratedMessage.Builder { - private org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_rwr_statusRequest result; - + com.google.protobuf.GeneratedMessage.Builder + implements org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_rwr_statusRequestOrBuilder { + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return org.xtreemfs.pbrpc.generatedinterfaces.OSD.internal_static_xtreemfs_pbrpc_xtreemfs_rwr_statusRequest_descriptor; + } + + protected com.google.protobuf.GeneratedMessage.FieldAccessorTable + internalGetFieldAccessorTable() { + return org.xtreemfs.pbrpc.generatedinterfaces.OSD.internal_static_xtreemfs_pbrpc_xtreemfs_rwr_statusRequest_fieldAccessorTable + .ensureFieldAccessorsInitialized( + org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_rwr_statusRequest.class, org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_rwr_statusRequest.Builder.class); + } + // Construct using org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_rwr_statusRequest.newBuilder() - private Builder() {} - - private static Builder create() { - Builder builder = new Builder(); - builder.result = new org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_rwr_statusRequest(); - return builder; + private Builder() { + maybeForceBuilderInitialization(); } - - protected org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_rwr_statusRequest internalGetResult() { - return result; + + private Builder( + com.google.protobuf.GeneratedMessage.BuilderParent parent) { + super(parent); + maybeForceBuilderInitialization(); + } + private void maybeForceBuilderInitialization() { + if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) { + getFileCredentialsFieldBuilder(); + } + } + private static Builder create() { + return new Builder(); } - + public Builder clear() { - if (result == null) { - throw new IllegalStateException( - "Cannot call clear() after build()."); + super.clear(); + if (fileCredentialsBuilder_ == null) { + fileCredentials_ = org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials.getDefaultInstance(); + } else { + fileCredentialsBuilder_.clear(); } - result = new org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_rwr_statusRequest(); + bitField0_ = (bitField0_ & ~0x00000001); + fileId_ = ""; + bitField0_ = (bitField0_ & ~0x00000002); + maxLocalObjVersion_ = 0L; + bitField0_ = (bitField0_ & ~0x00000004); return this; } - + public Builder clone() { - return create().mergeFrom(result); + return create().mergeFrom(buildPartial()); } - + public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() { - return org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_rwr_statusRequest.getDescriptor(); + return org.xtreemfs.pbrpc.generatedinterfaces.OSD.internal_static_xtreemfs_pbrpc_xtreemfs_rwr_statusRequest_descriptor; } - + public org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_rwr_statusRequest getDefaultInstanceForType() { return org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_rwr_statusRequest.getDefaultInstance(); } - - public boolean isInitialized() { - return result.isInitialized(); - } + public org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_rwr_statusRequest build() { - if (result != null && !isInitialized()) { + org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_rwr_statusRequest result = buildPartial(); + if (!result.isInitialized()) { throw newUninitializedMessageException(result); } - return buildPartial(); - } - - private org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_rwr_statusRequest buildParsed() - throws com.google.protobuf.InvalidProtocolBufferException { - if (!isInitialized()) { - throw newUninitializedMessageException( - result).asInvalidProtocolBufferException(); - } - return buildPartial(); + return result; } - + public org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_rwr_statusRequest buildPartial() { - if (result == null) { - throw new IllegalStateException( - "build() has already been called on this Builder."); + org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_rwr_statusRequest result = new org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_rwr_statusRequest(this); + int from_bitField0_ = bitField0_; + int to_bitField0_ = 0; + if (((from_bitField0_ & 0x00000001) == 0x00000001)) { + to_bitField0_ |= 0x00000001; + } + if (fileCredentialsBuilder_ == null) { + result.fileCredentials_ = fileCredentials_; + } else { + result.fileCredentials_ = fileCredentialsBuilder_.build(); + } + if (((from_bitField0_ & 0x00000002) == 0x00000002)) { + to_bitField0_ |= 0x00000002; } - org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_rwr_statusRequest returnMe = result; - result = null; - return returnMe; + result.fileId_ = fileId_; + if (((from_bitField0_ & 0x00000004) == 0x00000004)) { + to_bitField0_ |= 0x00000004; + } + result.maxLocalObjVersion_ = maxLocalObjVersion_; + result.bitField0_ = to_bitField0_; + onBuilt(); + return result; } - + public Builder mergeFrom(com.google.protobuf.Message other) { if (other instanceof org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_rwr_statusRequest) { return mergeFrom((org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_rwr_statusRequest)other); @@ -10163,14 +20515,16 @@ public final class OSD { return this; } } - + public Builder mergeFrom(org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_rwr_statusRequest other) { if (other == org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_rwr_statusRequest.getDefaultInstance()) return this; if (other.hasFileCredentials()) { mergeFileCredentials(other.getFileCredentials()); } if (other.hasFileId()) { - setFileId(other.getFileId()); + bitField0_ |= 0x00000002; + fileId_ = other.fileId_; + onChanged(); } if (other.hasMaxLocalObjVersion()) { setMaxLocalObjVersion(other.getMaxLocalObjVersion()); @@ -10178,392 +20532,822 @@ public final class OSD { this.mergeUnknownFields(other.getUnknownFields()); return this; } - + + public final boolean isInitialized() { + if (!hasFileCredentials()) { + + return false; + } + if (!hasFileId()) { + + return false; + } + if (!hasMaxLocalObjVersion()) { + + return false; + } + if (!getFileCredentials().isInitialized()) { + + return false; + } + return true; + } + public Builder mergeFrom( com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - com.google.protobuf.UnknownFieldSet.Builder unknownFields = - com.google.protobuf.UnknownFieldSet.newBuilder( - this.getUnknownFields()); - while (true) { - int tag = input.readTag(); - switch (tag) { - case 0: - this.setUnknownFields(unknownFields.build()); - return this; - default: { - if (!parseUnknownField(input, unknownFields, - extensionRegistry, tag)) { - this.setUnknownFields(unknownFields.build()); - return this; - } - break; - } - case 10: { - org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials.Builder subBuilder = org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials.newBuilder(); - if (hasFileCredentials()) { - subBuilder.mergeFrom(getFileCredentials()); - } - input.readMessage(subBuilder, extensionRegistry); - setFileCredentials(subBuilder.buildPartial()); - break; - } - case 18: { - setFileId(input.readString()); - break; - } - case 25: { - setMaxLocalObjVersion(input.readFixed64()); - break; - } + org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_rwr_statusRequest parsedMessage = null; + try { + parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + parsedMessage = (org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_rwr_statusRequest) e.getUnfinishedMessage(); + throw e; + } finally { + if (parsedMessage != null) { + mergeFrom(parsedMessage); } } + return this; } - - + private int bitField0_; + // required .xtreemfs.pbrpc.FileCredentials file_credentials = 1; + private org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials fileCredentials_ = org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials.getDefaultInstance(); + private com.google.protobuf.SingleFieldBuilder< + org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials, org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials.Builder, org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentialsOrBuilder> fileCredentialsBuilder_; + /** + * required .xtreemfs.pbrpc.FileCredentials file_credentials = 1; + */ public boolean hasFileCredentials() { - return result.hasFileCredentials(); + return ((bitField0_ & 0x00000001) == 0x00000001); } + /** + * required .xtreemfs.pbrpc.FileCredentials file_credentials = 1; + */ public org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials getFileCredentials() { - return result.getFileCredentials(); + if (fileCredentialsBuilder_ == null) { + return fileCredentials_; + } else { + return fileCredentialsBuilder_.getMessage(); + } } + /** + * required .xtreemfs.pbrpc.FileCredentials file_credentials = 1; + */ public Builder setFileCredentials(org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials value) { - if (value == null) { - throw new NullPointerException(); + if (fileCredentialsBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + fileCredentials_ = value; + onChanged(); + } else { + fileCredentialsBuilder_.setMessage(value); } - result.hasFileCredentials = true; - result.fileCredentials_ = value; + bitField0_ |= 0x00000001; return this; } - public Builder setFileCredentials(org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials.Builder builderForValue) { - result.hasFileCredentials = true; - result.fileCredentials_ = builderForValue.build(); + /** + * required .xtreemfs.pbrpc.FileCredentials file_credentials = 1; + */ + public Builder setFileCredentials( + org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials.Builder builderForValue) { + if (fileCredentialsBuilder_ == null) { + fileCredentials_ = builderForValue.build(); + onChanged(); + } else { + fileCredentialsBuilder_.setMessage(builderForValue.build()); + } + bitField0_ |= 0x00000001; return this; } + /** + * required .xtreemfs.pbrpc.FileCredentials file_credentials = 1; + */ public Builder mergeFileCredentials(org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials value) { - if (result.hasFileCredentials() && - result.fileCredentials_ != org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials.getDefaultInstance()) { - result.fileCredentials_ = - org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials.newBuilder(result.fileCredentials_).mergeFrom(value).buildPartial(); + if (fileCredentialsBuilder_ == null) { + if (((bitField0_ & 0x00000001) == 0x00000001) && + fileCredentials_ != org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials.getDefaultInstance()) { + fileCredentials_ = + org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials.newBuilder(fileCredentials_).mergeFrom(value).buildPartial(); + } else { + fileCredentials_ = value; + } + onChanged(); } else { - result.fileCredentials_ = value; + fileCredentialsBuilder_.mergeFrom(value); } - result.hasFileCredentials = true; + bitField0_ |= 0x00000001; return this; } + /** + * required .xtreemfs.pbrpc.FileCredentials file_credentials = 1; + */ public Builder clearFileCredentials() { - result.hasFileCredentials = false; - result.fileCredentials_ = org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials.getDefaultInstance(); + if (fileCredentialsBuilder_ == null) { + fileCredentials_ = org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials.getDefaultInstance(); + onChanged(); + } else { + fileCredentialsBuilder_.clear(); + } + bitField0_ = (bitField0_ & ~0x00000001); return this; } - + /** + * required .xtreemfs.pbrpc.FileCredentials file_credentials = 1; + */ + public org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials.Builder getFileCredentialsBuilder() { + bitField0_ |= 0x00000001; + onChanged(); + return getFileCredentialsFieldBuilder().getBuilder(); + } + /** + * required .xtreemfs.pbrpc.FileCredentials file_credentials = 1; + */ + public org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentialsOrBuilder getFileCredentialsOrBuilder() { + if (fileCredentialsBuilder_ != null) { + return fileCredentialsBuilder_.getMessageOrBuilder(); + } else { + return fileCredentials_; + } + } + /** + * required .xtreemfs.pbrpc.FileCredentials file_credentials = 1; + */ + private com.google.protobuf.SingleFieldBuilder< + org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials, org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials.Builder, org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentialsOrBuilder> + getFileCredentialsFieldBuilder() { + if (fileCredentialsBuilder_ == null) { + fileCredentialsBuilder_ = new com.google.protobuf.SingleFieldBuilder< + org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials, org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials.Builder, org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentialsOrBuilder>( + fileCredentials_, + getParentForChildren(), + isClean()); + fileCredentials_ = null; + } + return fileCredentialsBuilder_; + } + // required string file_id = 2; + private java.lang.Object fileId_ = ""; + /** + * required string file_id = 2; + */ public boolean hasFileId() { - return result.hasFileId(); + return ((bitField0_ & 0x00000002) == 0x00000002); } + /** + * required string file_id = 2; + */ public java.lang.String getFileId() { - return result.getFileId(); + java.lang.Object ref = fileId_; + if (!(ref instanceof java.lang.String)) { + java.lang.String s = ((com.google.protobuf.ByteString) ref) + .toStringUtf8(); + fileId_ = s; + return s; + } else { + return (java.lang.String) ref; + } + } + /** + * required string file_id = 2; + */ + public com.google.protobuf.ByteString + getFileIdBytes() { + java.lang.Object ref = fileId_; + if (ref instanceof String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + fileId_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } } - public Builder setFileId(java.lang.String value) { + /** + * required string file_id = 2; + */ + public Builder setFileId( + java.lang.String value) { if (value == null) { throw new NullPointerException(); } - result.hasFileId = true; - result.fileId_ = value; + bitField0_ |= 0x00000002; + fileId_ = value; + onChanged(); return this; } + /** + * required string file_id = 2; + */ public Builder clearFileId() { - result.hasFileId = false; - result.fileId_ = getDefaultInstance().getFileId(); + bitField0_ = (bitField0_ & ~0x00000002); + fileId_ = getDefaultInstance().getFileId(); + onChanged(); + return this; + } + /** + * required string file_id = 2; + */ + public Builder setFileIdBytes( + com.google.protobuf.ByteString value) { + if (value == null) { + throw new NullPointerException(); + } + bitField0_ |= 0x00000002; + fileId_ = value; + onChanged(); return this; } - + // required fixed64 max_local_obj_version = 3; + private long maxLocalObjVersion_ ; + /** + * required fixed64 max_local_obj_version = 3; + * + *
+       * Maximum local object version stored on an OSD.
+       * 
+ */ public boolean hasMaxLocalObjVersion() { - return result.hasMaxLocalObjVersion(); - } + return ((bitField0_ & 0x00000004) == 0x00000004); + } + /** + * required fixed64 max_local_obj_version = 3; + * + *
+       * Maximum local object version stored on an OSD.
+       * 
+ */ public long getMaxLocalObjVersion() { - return result.getMaxLocalObjVersion(); - } + return maxLocalObjVersion_; + } + /** + * required fixed64 max_local_obj_version = 3; + * + *
+       * Maximum local object version stored on an OSD.
+       * 
+ */ public Builder setMaxLocalObjVersion(long value) { - result.hasMaxLocalObjVersion = true; - result.maxLocalObjVersion_ = value; - return this; - } + bitField0_ |= 0x00000004; + maxLocalObjVersion_ = value; + onChanged(); + return this; + } + /** + * required fixed64 max_local_obj_version = 3; + * + *
+       * Maximum local object version stored on an OSD.
+       * 
+ */ public Builder clearMaxLocalObjVersion() { - result.hasMaxLocalObjVersion = false; - result.maxLocalObjVersion_ = 0L; + bitField0_ = (bitField0_ & ~0x00000004); + maxLocalObjVersion_ = 0L; + onChanged(); return this; } - - // @@protoc_insertion_point(builder_scope:xtreemfs.pbrpc.xtreemfs_rwr_statusRequest) - } - - static { - defaultInstance = new xtreemfs_rwr_statusRequest(true); - org.xtreemfs.pbrpc.generatedinterfaces.OSD.internalForceInit(); - defaultInstance.initFields(); - } - - // @@protoc_insertion_point(class_scope:xtreemfs.pbrpc.xtreemfs_rwr_statusRequest) - } - - public static final class xtreemfs_rwr_truncateRequest extends - com.google.protobuf.GeneratedMessage { - // Use xtreemfs_rwr_truncateRequest.newBuilder() to construct. - private xtreemfs_rwr_truncateRequest() { - initFields(); - } - private xtreemfs_rwr_truncateRequest(boolean noInit) {} - - private static final xtreemfs_rwr_truncateRequest defaultInstance; - public static xtreemfs_rwr_truncateRequest getDefaultInstance() { - return defaultInstance; - } - - public xtreemfs_rwr_truncateRequest getDefaultInstanceForType() { - return defaultInstance; + + // @@protoc_insertion_point(builder_scope:xtreemfs.pbrpc.xtreemfs_rwr_statusRequest) + } + + static { + defaultInstance = new xtreemfs_rwr_statusRequest(true); + defaultInstance.initFields(); + } + + // @@protoc_insertion_point(class_scope:xtreemfs.pbrpc.xtreemfs_rwr_statusRequest) + } + + public interface xtreemfs_rwr_truncateRequestOrBuilder + extends com.google.protobuf.MessageOrBuilder { + + // required .xtreemfs.pbrpc.FileCredentials file_credentials = 1; + /** + * required .xtreemfs.pbrpc.FileCredentials file_credentials = 1; + */ + boolean hasFileCredentials(); + /** + * required .xtreemfs.pbrpc.FileCredentials file_credentials = 1; + */ + org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials getFileCredentials(); + /** + * required .xtreemfs.pbrpc.FileCredentials file_credentials = 1; + */ + org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentialsOrBuilder getFileCredentialsOrBuilder(); + + // required string file_id = 2; + /** + * required string file_id = 2; + */ + boolean hasFileId(); + /** + * required string file_id = 2; + */ + java.lang.String getFileId(); + /** + * required string file_id = 2; + */ + com.google.protobuf.ByteString + getFileIdBytes(); + + // required fixed64 new_file_size = 3; + /** + * required fixed64 new_file_size = 3; + */ + boolean hasNewFileSize(); + /** + * required fixed64 new_file_size = 3; + */ + long getNewFileSize(); + + // required fixed64 object_version = 4; + /** + * required fixed64 object_version = 4; + */ + boolean hasObjectVersion(); + /** + * required fixed64 object_version = 4; + */ + long getObjectVersion(); + } + /** + * Protobuf type {@code xtreemfs.pbrpc.xtreemfs_rwr_truncateRequest} + */ + public static final class xtreemfs_rwr_truncateRequest extends + com.google.protobuf.GeneratedMessage + implements xtreemfs_rwr_truncateRequestOrBuilder { + // Use xtreemfs_rwr_truncateRequest.newBuilder() to construct. + private xtreemfs_rwr_truncateRequest(com.google.protobuf.GeneratedMessage.Builder builder) { + super(builder); + this.unknownFields = builder.getUnknownFields(); + } + private xtreemfs_rwr_truncateRequest(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); } + + private static final xtreemfs_rwr_truncateRequest defaultInstance; + public static xtreemfs_rwr_truncateRequest getDefaultInstance() { + return defaultInstance; + } + + public xtreemfs_rwr_truncateRequest getDefaultInstanceForType() { + return defaultInstance; + } + + private final com.google.protobuf.UnknownFieldSet unknownFields; + @java.lang.Override + public final com.google.protobuf.UnknownFieldSet + getUnknownFields() { + return this.unknownFields; + } + private xtreemfs_rwr_truncateRequest( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + initFields(); + int mutable_bitField0_ = 0; + com.google.protobuf.UnknownFieldSet.Builder unknownFields = + com.google.protobuf.UnknownFieldSet.newBuilder(); + try { + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch (tag) { + case 0: + done = true; + break; + default: { + if (!parseUnknownField(input, unknownFields, + extensionRegistry, tag)) { + done = true; + } + break; + } + case 10: { + org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials.Builder subBuilder = null; + if (((bitField0_ & 0x00000001) == 0x00000001)) { + subBuilder = fileCredentials_.toBuilder(); + } + fileCredentials_ = input.readMessage(org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials.PARSER, extensionRegistry); + if (subBuilder != null) { + subBuilder.mergeFrom(fileCredentials_); + fileCredentials_ = subBuilder.buildPartial(); + } + bitField0_ |= 0x00000001; + break; + } + case 18: { + bitField0_ |= 0x00000002; + fileId_ = input.readBytes(); + break; + } + case 25: { + bitField0_ |= 0x00000004; + newFileSize_ = input.readFixed64(); + break; + } + case 33: { + bitField0_ |= 0x00000008; + objectVersion_ = input.readFixed64(); + break; + } + } + } + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(this); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException( + e.getMessage()).setUnfinishedMessage(this); + } finally { + this.unknownFields = unknownFields.build(); + makeExtensionsImmutable(); + } } - public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { return org.xtreemfs.pbrpc.generatedinterfaces.OSD.internal_static_xtreemfs_pbrpc_xtreemfs_rwr_truncateRequest_descriptor; } - + protected com.google.protobuf.GeneratedMessage.FieldAccessorTable internalGetFieldAccessorTable() { - return org.xtreemfs.pbrpc.generatedinterfaces.OSD.internal_static_xtreemfs_pbrpc_xtreemfs_rwr_truncateRequest_fieldAccessorTable; + return org.xtreemfs.pbrpc.generatedinterfaces.OSD.internal_static_xtreemfs_pbrpc_xtreemfs_rwr_truncateRequest_fieldAccessorTable + .ensureFieldAccessorsInitialized( + org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_rwr_truncateRequest.class, org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_rwr_truncateRequest.Builder.class); + } + + public static com.google.protobuf.Parser PARSER = + new com.google.protobuf.AbstractParser() { + public xtreemfs_rwr_truncateRequest parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return new xtreemfs_rwr_truncateRequest(input, extensionRegistry); + } + }; + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; } - + + private int bitField0_; // required .xtreemfs.pbrpc.FileCredentials file_credentials = 1; public static final int FILE_CREDENTIALS_FIELD_NUMBER = 1; - private boolean hasFileCredentials; private org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials fileCredentials_; - public boolean hasFileCredentials() { return hasFileCredentials; } - public org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials getFileCredentials() { return fileCredentials_; } - + /** + * required .xtreemfs.pbrpc.FileCredentials file_credentials = 1; + */ + public boolean hasFileCredentials() { + return ((bitField0_ & 0x00000001) == 0x00000001); + } + /** + * required .xtreemfs.pbrpc.FileCredentials file_credentials = 1; + */ + public org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials getFileCredentials() { + return fileCredentials_; + } + /** + * required .xtreemfs.pbrpc.FileCredentials file_credentials = 1; + */ + public org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentialsOrBuilder getFileCredentialsOrBuilder() { + return fileCredentials_; + } + // required string file_id = 2; public static final int FILE_ID_FIELD_NUMBER = 2; - private boolean hasFileId; - private java.lang.String fileId_ = ""; - public boolean hasFileId() { return hasFileId; } - public java.lang.String getFileId() { return fileId_; } - + private java.lang.Object fileId_; + /** + * required string file_id = 2; + */ + public boolean hasFileId() { + return ((bitField0_ & 0x00000002) == 0x00000002); + } + /** + * required string file_id = 2; + */ + public java.lang.String getFileId() { + java.lang.Object ref = fileId_; + if (ref instanceof java.lang.String) { + return (java.lang.String) ref; + } else { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + if (bs.isValidUtf8()) { + fileId_ = s; + } + return s; + } + } + /** + * required string file_id = 2; + */ + public com.google.protobuf.ByteString + getFileIdBytes() { + java.lang.Object ref = fileId_; + if (ref instanceof java.lang.String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + fileId_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + // required fixed64 new_file_size = 3; public static final int NEW_FILE_SIZE_FIELD_NUMBER = 3; - private boolean hasNewFileSize; - private long newFileSize_ = 0L; - public boolean hasNewFileSize() { return hasNewFileSize; } - public long getNewFileSize() { return newFileSize_; } - + private long newFileSize_; + /** + * required fixed64 new_file_size = 3; + */ + public boolean hasNewFileSize() { + return ((bitField0_ & 0x00000004) == 0x00000004); + } + /** + * required fixed64 new_file_size = 3; + */ + public long getNewFileSize() { + return newFileSize_; + } + // required fixed64 object_version = 4; public static final int OBJECT_VERSION_FIELD_NUMBER = 4; - private boolean hasObjectVersion; - private long objectVersion_ = 0L; - public boolean hasObjectVersion() { return hasObjectVersion; } - public long getObjectVersion() { return objectVersion_; } - + private long objectVersion_; + /** + * required fixed64 object_version = 4; + */ + public boolean hasObjectVersion() { + return ((bitField0_ & 0x00000008) == 0x00000008); + } + /** + * required fixed64 object_version = 4; + */ + public long getObjectVersion() { + return objectVersion_; + } + private void initFields() { fileCredentials_ = org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials.getDefaultInstance(); + fileId_ = ""; + newFileSize_ = 0L; + objectVersion_ = 0L; } + private byte memoizedIsInitialized = -1; public final boolean isInitialized() { - if (!hasFileCredentials) return false; - if (!hasFileId) return false; - if (!hasNewFileSize) return false; - if (!hasObjectVersion) return false; - if (!getFileCredentials().isInitialized()) return false; + byte isInitialized = memoizedIsInitialized; + if (isInitialized != -1) return isInitialized == 1; + + if (!hasFileCredentials()) { + memoizedIsInitialized = 0; + return false; + } + if (!hasFileId()) { + memoizedIsInitialized = 0; + return false; + } + if (!hasNewFileSize()) { + memoizedIsInitialized = 0; + return false; + } + if (!hasObjectVersion()) { + memoizedIsInitialized = 0; + return false; + } + if (!getFileCredentials().isInitialized()) { + memoizedIsInitialized = 0; + return false; + } + memoizedIsInitialized = 1; return true; } - + public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException { getSerializedSize(); - if (hasFileCredentials()) { - output.writeMessage(1, getFileCredentials()); + if (((bitField0_ & 0x00000001) == 0x00000001)) { + output.writeMessage(1, fileCredentials_); } - if (hasFileId()) { - output.writeString(2, getFileId()); + if (((bitField0_ & 0x00000002) == 0x00000002)) { + output.writeBytes(2, getFileIdBytes()); } - if (hasNewFileSize()) { - output.writeFixed64(3, getNewFileSize()); + if (((bitField0_ & 0x00000004) == 0x00000004)) { + output.writeFixed64(3, newFileSize_); } - if (hasObjectVersion()) { - output.writeFixed64(4, getObjectVersion()); + if (((bitField0_ & 0x00000008) == 0x00000008)) { + output.writeFixed64(4, objectVersion_); } getUnknownFields().writeTo(output); } - + private int memoizedSerializedSize = -1; public int getSerializedSize() { int size = memoizedSerializedSize; if (size != -1) return size; - + size = 0; - if (hasFileCredentials()) { + if (((bitField0_ & 0x00000001) == 0x00000001)) { size += com.google.protobuf.CodedOutputStream - .computeMessageSize(1, getFileCredentials()); + .computeMessageSize(1, fileCredentials_); } - if (hasFileId()) { + if (((bitField0_ & 0x00000002) == 0x00000002)) { size += com.google.protobuf.CodedOutputStream - .computeStringSize(2, getFileId()); + .computeBytesSize(2, getFileIdBytes()); } - if (hasNewFileSize()) { + if (((bitField0_ & 0x00000004) == 0x00000004)) { size += com.google.protobuf.CodedOutputStream - .computeFixed64Size(3, getNewFileSize()); + .computeFixed64Size(3, newFileSize_); } - if (hasObjectVersion()) { + if (((bitField0_ & 0x00000008) == 0x00000008)) { size += com.google.protobuf.CodedOutputStream - .computeFixed64Size(4, getObjectVersion()); + .computeFixed64Size(4, objectVersion_); } size += getUnknownFields().getSerializedSize(); memoizedSerializedSize = size; return size; } - + + private static final long serialVersionUID = 0L; + @java.lang.Override + protected java.lang.Object writeReplace() + throws java.io.ObjectStreamException { + return super.writeReplace(); + } + public static org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_rwr_truncateRequest parseFrom( com.google.protobuf.ByteString data) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data).buildParsed(); + return PARSER.parseFrom(data); } public static org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_rwr_truncateRequest parseFrom( com.google.protobuf.ByteString data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(data, extensionRegistry); } public static org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_rwr_truncateRequest parseFrom(byte[] data) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data).buildParsed(); + return PARSER.parseFrom(data); } public static org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_rwr_truncateRequest parseFrom( byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(data, extensionRegistry); } public static org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_rwr_truncateRequest parseFrom(java.io.InputStream input) throws java.io.IOException { - return newBuilder().mergeFrom(input).buildParsed(); + return PARSER.parseFrom(input); } public static org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_rwr_truncateRequest parseFrom( java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - return newBuilder().mergeFrom(input, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(input, extensionRegistry); } public static org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_rwr_truncateRequest parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException { - Builder builder = newBuilder(); - if (builder.mergeDelimitedFrom(input)) { - return builder.buildParsed(); - } else { - return null; - } + return PARSER.parseDelimitedFrom(input); } public static org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_rwr_truncateRequest parseDelimitedFrom( java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - Builder builder = newBuilder(); - if (builder.mergeDelimitedFrom(input, extensionRegistry)) { - return builder.buildParsed(); - } else { - return null; - } + return PARSER.parseDelimitedFrom(input, extensionRegistry); } public static org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_rwr_truncateRequest parseFrom( com.google.protobuf.CodedInputStream input) throws java.io.IOException { - return newBuilder().mergeFrom(input).buildParsed(); + return PARSER.parseFrom(input); } public static org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_rwr_truncateRequest parseFrom( com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - return newBuilder().mergeFrom(input, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(input, extensionRegistry); } - + public static Builder newBuilder() { return Builder.create(); } public Builder newBuilderForType() { return newBuilder(); } public static Builder newBuilder(org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_rwr_truncateRequest prototype) { return newBuilder().mergeFrom(prototype); } public Builder toBuilder() { return newBuilder(this); } - + + @java.lang.Override + protected Builder newBuilderForType( + com.google.protobuf.GeneratedMessage.BuilderParent parent) { + Builder builder = new Builder(parent); + return builder; + } + /** + * Protobuf type {@code xtreemfs.pbrpc.xtreemfs_rwr_truncateRequest} + */ public static final class Builder extends - com.google.protobuf.GeneratedMessage.Builder { - private org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_rwr_truncateRequest result; - + com.google.protobuf.GeneratedMessage.Builder + implements org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_rwr_truncateRequestOrBuilder { + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return org.xtreemfs.pbrpc.generatedinterfaces.OSD.internal_static_xtreemfs_pbrpc_xtreemfs_rwr_truncateRequest_descriptor; + } + + protected com.google.protobuf.GeneratedMessage.FieldAccessorTable + internalGetFieldAccessorTable() { + return org.xtreemfs.pbrpc.generatedinterfaces.OSD.internal_static_xtreemfs_pbrpc_xtreemfs_rwr_truncateRequest_fieldAccessorTable + .ensureFieldAccessorsInitialized( + org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_rwr_truncateRequest.class, org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_rwr_truncateRequest.Builder.class); + } + // Construct using org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_rwr_truncateRequest.newBuilder() - private Builder() {} - - private static Builder create() { - Builder builder = new Builder(); - builder.result = new org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_rwr_truncateRequest(); - return builder; + private Builder() { + maybeForceBuilderInitialization(); } - - protected org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_rwr_truncateRequest internalGetResult() { - return result; + + private Builder( + com.google.protobuf.GeneratedMessage.BuilderParent parent) { + super(parent); + maybeForceBuilderInitialization(); + } + private void maybeForceBuilderInitialization() { + if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) { + getFileCredentialsFieldBuilder(); + } } - + private static Builder create() { + return new Builder(); + } + public Builder clear() { - if (result == null) { - throw new IllegalStateException( - "Cannot call clear() after build()."); + super.clear(); + if (fileCredentialsBuilder_ == null) { + fileCredentials_ = org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials.getDefaultInstance(); + } else { + fileCredentialsBuilder_.clear(); } - result = new org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_rwr_truncateRequest(); + bitField0_ = (bitField0_ & ~0x00000001); + fileId_ = ""; + bitField0_ = (bitField0_ & ~0x00000002); + newFileSize_ = 0L; + bitField0_ = (bitField0_ & ~0x00000004); + objectVersion_ = 0L; + bitField0_ = (bitField0_ & ~0x00000008); return this; } - + public Builder clone() { - return create().mergeFrom(result); + return create().mergeFrom(buildPartial()); } - + public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() { - return org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_rwr_truncateRequest.getDescriptor(); + return org.xtreemfs.pbrpc.generatedinterfaces.OSD.internal_static_xtreemfs_pbrpc_xtreemfs_rwr_truncateRequest_descriptor; } - + public org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_rwr_truncateRequest getDefaultInstanceForType() { return org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_rwr_truncateRequest.getDefaultInstance(); } - - public boolean isInitialized() { - return result.isInitialized(); - } + public org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_rwr_truncateRequest build() { - if (result != null && !isInitialized()) { + org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_rwr_truncateRequest result = buildPartial(); + if (!result.isInitialized()) { throw newUninitializedMessageException(result); } - return buildPartial(); - } - - private org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_rwr_truncateRequest buildParsed() - throws com.google.protobuf.InvalidProtocolBufferException { - if (!isInitialized()) { - throw newUninitializedMessageException( - result).asInvalidProtocolBufferException(); - } - return buildPartial(); + return result; } - + public org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_rwr_truncateRequest buildPartial() { - if (result == null) { - throw new IllegalStateException( - "build() has already been called on this Builder."); + org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_rwr_truncateRequest result = new org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_rwr_truncateRequest(this); + int from_bitField0_ = bitField0_; + int to_bitField0_ = 0; + if (((from_bitField0_ & 0x00000001) == 0x00000001)) { + to_bitField0_ |= 0x00000001; + } + if (fileCredentialsBuilder_ == null) { + result.fileCredentials_ = fileCredentials_; + } else { + result.fileCredentials_ = fileCredentialsBuilder_.build(); + } + if (((from_bitField0_ & 0x00000002) == 0x00000002)) { + to_bitField0_ |= 0x00000002; } - org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_rwr_truncateRequest returnMe = result; - result = null; - return returnMe; + result.fileId_ = fileId_; + if (((from_bitField0_ & 0x00000004) == 0x00000004)) { + to_bitField0_ |= 0x00000004; + } + result.newFileSize_ = newFileSize_; + if (((from_bitField0_ & 0x00000008) == 0x00000008)) { + to_bitField0_ |= 0x00000008; + } + result.objectVersion_ = objectVersion_; + result.bitField0_ = to_bitField0_; + onBuilt(); + return result; } - + public Builder mergeFrom(com.google.protobuf.Message other) { if (other instanceof org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_rwr_truncateRequest) { return mergeFrom((org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_rwr_truncateRequest)other); @@ -10572,14 +21356,16 @@ public final class OSD { return this; } } - + public Builder mergeFrom(org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_rwr_truncateRequest other) { if (other == org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_rwr_truncateRequest.getDefaultInstance()) return this; if (other.hasFileCredentials()) { mergeFileCredentials(other.getFileCredentials()); } if (other.hasFileId()) { - setFileId(other.getFileId()); + bitField0_ |= 0x00000002; + fileId_ = other.fileId_; + onChanged(); } if (other.hasNewFileSize()) { setNewFileSize(other.getNewFileSize()); @@ -10590,461 +21376,1021 @@ public final class OSD { this.mergeUnknownFields(other.getUnknownFields()); return this; } - + + public final boolean isInitialized() { + if (!hasFileCredentials()) { + + return false; + } + if (!hasFileId()) { + + return false; + } + if (!hasNewFileSize()) { + + return false; + } + if (!hasObjectVersion()) { + + return false; + } + if (!getFileCredentials().isInitialized()) { + + return false; + } + return true; + } + public Builder mergeFrom( com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - com.google.protobuf.UnknownFieldSet.Builder unknownFields = - com.google.protobuf.UnknownFieldSet.newBuilder( - this.getUnknownFields()); - while (true) { - int tag = input.readTag(); - switch (tag) { - case 0: - this.setUnknownFields(unknownFields.build()); - return this; - default: { - if (!parseUnknownField(input, unknownFields, - extensionRegistry, tag)) { - this.setUnknownFields(unknownFields.build()); - return this; - } - break; - } - case 10: { - org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials.Builder subBuilder = org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials.newBuilder(); - if (hasFileCredentials()) { - subBuilder.mergeFrom(getFileCredentials()); - } - input.readMessage(subBuilder, extensionRegistry); - setFileCredentials(subBuilder.buildPartial()); - break; - } - case 18: { - setFileId(input.readString()); - break; - } - case 25: { - setNewFileSize(input.readFixed64()); - break; - } - case 33: { - setObjectVersion(input.readFixed64()); - break; - } + org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_rwr_truncateRequest parsedMessage = null; + try { + parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + parsedMessage = (org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_rwr_truncateRequest) e.getUnfinishedMessage(); + throw e; + } finally { + if (parsedMessage != null) { + mergeFrom(parsedMessage); } } + return this; } - - + private int bitField0_; + // required .xtreemfs.pbrpc.FileCredentials file_credentials = 1; + private org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials fileCredentials_ = org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials.getDefaultInstance(); + private com.google.protobuf.SingleFieldBuilder< + org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials, org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials.Builder, org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentialsOrBuilder> fileCredentialsBuilder_; + /** + * required .xtreemfs.pbrpc.FileCredentials file_credentials = 1; + */ public boolean hasFileCredentials() { - return result.hasFileCredentials(); + return ((bitField0_ & 0x00000001) == 0x00000001); } + /** + * required .xtreemfs.pbrpc.FileCredentials file_credentials = 1; + */ public org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials getFileCredentials() { - return result.getFileCredentials(); + if (fileCredentialsBuilder_ == null) { + return fileCredentials_; + } else { + return fileCredentialsBuilder_.getMessage(); + } } + /** + * required .xtreemfs.pbrpc.FileCredentials file_credentials = 1; + */ public Builder setFileCredentials(org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials value) { - if (value == null) { - throw new NullPointerException(); + if (fileCredentialsBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + fileCredentials_ = value; + onChanged(); + } else { + fileCredentialsBuilder_.setMessage(value); } - result.hasFileCredentials = true; - result.fileCredentials_ = value; + bitField0_ |= 0x00000001; return this; } - public Builder setFileCredentials(org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials.Builder builderForValue) { - result.hasFileCredentials = true; - result.fileCredentials_ = builderForValue.build(); + /** + * required .xtreemfs.pbrpc.FileCredentials file_credentials = 1; + */ + public Builder setFileCredentials( + org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials.Builder builderForValue) { + if (fileCredentialsBuilder_ == null) { + fileCredentials_ = builderForValue.build(); + onChanged(); + } else { + fileCredentialsBuilder_.setMessage(builderForValue.build()); + } + bitField0_ |= 0x00000001; return this; } + /** + * required .xtreemfs.pbrpc.FileCredentials file_credentials = 1; + */ public Builder mergeFileCredentials(org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials value) { - if (result.hasFileCredentials() && - result.fileCredentials_ != org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials.getDefaultInstance()) { - result.fileCredentials_ = - org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials.newBuilder(result.fileCredentials_).mergeFrom(value).buildPartial(); + if (fileCredentialsBuilder_ == null) { + if (((bitField0_ & 0x00000001) == 0x00000001) && + fileCredentials_ != org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials.getDefaultInstance()) { + fileCredentials_ = + org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials.newBuilder(fileCredentials_).mergeFrom(value).buildPartial(); + } else { + fileCredentials_ = value; + } + onChanged(); } else { - result.fileCredentials_ = value; + fileCredentialsBuilder_.mergeFrom(value); } - result.hasFileCredentials = true; + bitField0_ |= 0x00000001; return this; } + /** + * required .xtreemfs.pbrpc.FileCredentials file_credentials = 1; + */ public Builder clearFileCredentials() { - result.hasFileCredentials = false; - result.fileCredentials_ = org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials.getDefaultInstance(); + if (fileCredentialsBuilder_ == null) { + fileCredentials_ = org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials.getDefaultInstance(); + onChanged(); + } else { + fileCredentialsBuilder_.clear(); + } + bitField0_ = (bitField0_ & ~0x00000001); return this; } - + /** + * required .xtreemfs.pbrpc.FileCredentials file_credentials = 1; + */ + public org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials.Builder getFileCredentialsBuilder() { + bitField0_ |= 0x00000001; + onChanged(); + return getFileCredentialsFieldBuilder().getBuilder(); + } + /** + * required .xtreemfs.pbrpc.FileCredentials file_credentials = 1; + */ + public org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentialsOrBuilder getFileCredentialsOrBuilder() { + if (fileCredentialsBuilder_ != null) { + return fileCredentialsBuilder_.getMessageOrBuilder(); + } else { + return fileCredentials_; + } + } + /** + * required .xtreemfs.pbrpc.FileCredentials file_credentials = 1; + */ + private com.google.protobuf.SingleFieldBuilder< + org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials, org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials.Builder, org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentialsOrBuilder> + getFileCredentialsFieldBuilder() { + if (fileCredentialsBuilder_ == null) { + fileCredentialsBuilder_ = new com.google.protobuf.SingleFieldBuilder< + org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials, org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials.Builder, org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentialsOrBuilder>( + fileCredentials_, + getParentForChildren(), + isClean()); + fileCredentials_ = null; + } + return fileCredentialsBuilder_; + } + // required string file_id = 2; + private java.lang.Object fileId_ = ""; + /** + * required string file_id = 2; + */ public boolean hasFileId() { - return result.hasFileId(); + return ((bitField0_ & 0x00000002) == 0x00000002); } + /** + * required string file_id = 2; + */ public java.lang.String getFileId() { - return result.getFileId(); + java.lang.Object ref = fileId_; + if (!(ref instanceof java.lang.String)) { + java.lang.String s = ((com.google.protobuf.ByteString) ref) + .toStringUtf8(); + fileId_ = s; + return s; + } else { + return (java.lang.String) ref; + } + } + /** + * required string file_id = 2; + */ + public com.google.protobuf.ByteString + getFileIdBytes() { + java.lang.Object ref = fileId_; + if (ref instanceof String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + fileId_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } } - public Builder setFileId(java.lang.String value) { + /** + * required string file_id = 2; + */ + public Builder setFileId( + java.lang.String value) { if (value == null) { throw new NullPointerException(); } - result.hasFileId = true; - result.fileId_ = value; + bitField0_ |= 0x00000002; + fileId_ = value; + onChanged(); return this; } + /** + * required string file_id = 2; + */ public Builder clearFileId() { - result.hasFileId = false; - result.fileId_ = getDefaultInstance().getFileId(); + bitField0_ = (bitField0_ & ~0x00000002); + fileId_ = getDefaultInstance().getFileId(); + onChanged(); + return this; + } + /** + * required string file_id = 2; + */ + public Builder setFileIdBytes( + com.google.protobuf.ByteString value) { + if (value == null) { + throw new NullPointerException(); + } + bitField0_ |= 0x00000002; + fileId_ = value; + onChanged(); return this; } - + // required fixed64 new_file_size = 3; + private long newFileSize_ ; + /** + * required fixed64 new_file_size = 3; + */ public boolean hasNewFileSize() { - return result.hasNewFileSize(); + return ((bitField0_ & 0x00000004) == 0x00000004); } + /** + * required fixed64 new_file_size = 3; + */ public long getNewFileSize() { - return result.getNewFileSize(); + return newFileSize_; } + /** + * required fixed64 new_file_size = 3; + */ public Builder setNewFileSize(long value) { - result.hasNewFileSize = true; - result.newFileSize_ = value; + bitField0_ |= 0x00000004; + newFileSize_ = value; + onChanged(); return this; } + /** + * required fixed64 new_file_size = 3; + */ public Builder clearNewFileSize() { - result.hasNewFileSize = false; - result.newFileSize_ = 0L; + bitField0_ = (bitField0_ & ~0x00000004); + newFileSize_ = 0L; + onChanged(); return this; } - + // required fixed64 object_version = 4; + private long objectVersion_ ; + /** + * required fixed64 object_version = 4; + */ public boolean hasObjectVersion() { - return result.hasObjectVersion(); + return ((bitField0_ & 0x00000008) == 0x00000008); } + /** + * required fixed64 object_version = 4; + */ public long getObjectVersion() { - return result.getObjectVersion(); + return objectVersion_; } + /** + * required fixed64 object_version = 4; + */ public Builder setObjectVersion(long value) { - result.hasObjectVersion = true; - result.objectVersion_ = value; + bitField0_ |= 0x00000008; + objectVersion_ = value; + onChanged(); return this; } + /** + * required fixed64 object_version = 4; + */ public Builder clearObjectVersion() { - result.hasObjectVersion = false; - result.objectVersion_ = 0L; + bitField0_ = (bitField0_ & ~0x00000008); + objectVersion_ = 0L; + onChanged(); return this; } - + // @@protoc_insertion_point(builder_scope:xtreemfs.pbrpc.xtreemfs_rwr_truncateRequest) } - + static { defaultInstance = new xtreemfs_rwr_truncateRequest(true); - org.xtreemfs.pbrpc.generatedinterfaces.OSD.internalForceInit(); defaultInstance.initFields(); } - + // @@protoc_insertion_point(class_scope:xtreemfs.pbrpc.xtreemfs_rwr_truncateRequest) } - + + public interface xtreemfs_rwr_updateRequestOrBuilder + extends com.google.protobuf.MessageOrBuilder { + + // required .xtreemfs.pbrpc.FileCredentials file_credentials = 1; + /** + * required .xtreemfs.pbrpc.FileCredentials file_credentials = 1; + */ + boolean hasFileCredentials(); + /** + * required .xtreemfs.pbrpc.FileCredentials file_credentials = 1; + */ + org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials getFileCredentials(); + /** + * required .xtreemfs.pbrpc.FileCredentials file_credentials = 1; + */ + org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentialsOrBuilder getFileCredentialsOrBuilder(); + + // required string file_id = 2; + /** + * required string file_id = 2; + */ + boolean hasFileId(); + /** + * required string file_id = 2; + */ + java.lang.String getFileId(); + /** + * required string file_id = 2; + */ + com.google.protobuf.ByteString + getFileIdBytes(); + + // required fixed64 new_file_size = 3; + /** + * required fixed64 new_file_size = 3; + */ + boolean hasNewFileSize(); + /** + * required fixed64 new_file_size = 3; + */ + long getNewFileSize(); + + // required fixed64 object_number = 7; + /** + * required fixed64 object_number = 7; + */ + boolean hasObjectNumber(); + /** + * required fixed64 object_number = 7; + */ + long getObjectNumber(); + + // required fixed64 object_version = 4; + /** + * required fixed64 object_version = 4; + */ + boolean hasObjectVersion(); + /** + * required fixed64 object_version = 4; + */ + long getObjectVersion(); + + // required fixed32 offset = 5; + /** + * required fixed32 offset = 5; + */ + boolean hasOffset(); + /** + * required fixed32 offset = 5; + */ + int getOffset(); + + // required .xtreemfs.pbrpc.ObjectData obj = 6; + /** + * required .xtreemfs.pbrpc.ObjectData obj = 6; + */ + boolean hasObj(); + /** + * required .xtreemfs.pbrpc.ObjectData obj = 6; + */ + org.xtreemfs.pbrpc.generatedinterfaces.OSD.ObjectData getObj(); + /** + * required .xtreemfs.pbrpc.ObjectData obj = 6; + */ + org.xtreemfs.pbrpc.generatedinterfaces.OSD.ObjectDataOrBuilder getObjOrBuilder(); + } + /** + * Protobuf type {@code xtreemfs.pbrpc.xtreemfs_rwr_updateRequest} + */ public static final class xtreemfs_rwr_updateRequest extends - com.google.protobuf.GeneratedMessage { + com.google.protobuf.GeneratedMessage + implements xtreemfs_rwr_updateRequestOrBuilder { // Use xtreemfs_rwr_updateRequest.newBuilder() to construct. - private xtreemfs_rwr_updateRequest() { - initFields(); + private xtreemfs_rwr_updateRequest(com.google.protobuf.GeneratedMessage.Builder builder) { + super(builder); + this.unknownFields = builder.getUnknownFields(); } - private xtreemfs_rwr_updateRequest(boolean noInit) {} - + private xtreemfs_rwr_updateRequest(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); } + private static final xtreemfs_rwr_updateRequest defaultInstance; public static xtreemfs_rwr_updateRequest getDefaultInstance() { return defaultInstance; } - + public xtreemfs_rwr_updateRequest getDefaultInstanceForType() { return defaultInstance; } - + + private final com.google.protobuf.UnknownFieldSet unknownFields; + @java.lang.Override + public final com.google.protobuf.UnknownFieldSet + getUnknownFields() { + return this.unknownFields; + } + private xtreemfs_rwr_updateRequest( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + initFields(); + int mutable_bitField0_ = 0; + com.google.protobuf.UnknownFieldSet.Builder unknownFields = + com.google.protobuf.UnknownFieldSet.newBuilder(); + try { + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch (tag) { + case 0: + done = true; + break; + default: { + if (!parseUnknownField(input, unknownFields, + extensionRegistry, tag)) { + done = true; + } + break; + } + case 10: { + org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials.Builder subBuilder = null; + if (((bitField0_ & 0x00000001) == 0x00000001)) { + subBuilder = fileCredentials_.toBuilder(); + } + fileCredentials_ = input.readMessage(org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials.PARSER, extensionRegistry); + if (subBuilder != null) { + subBuilder.mergeFrom(fileCredentials_); + fileCredentials_ = subBuilder.buildPartial(); + } + bitField0_ |= 0x00000001; + break; + } + case 18: { + bitField0_ |= 0x00000002; + fileId_ = input.readBytes(); + break; + } + case 25: { + bitField0_ |= 0x00000004; + newFileSize_ = input.readFixed64(); + break; + } + case 33: { + bitField0_ |= 0x00000010; + objectVersion_ = input.readFixed64(); + break; + } + case 45: { + bitField0_ |= 0x00000020; + offset_ = input.readFixed32(); + break; + } + case 50: { + org.xtreemfs.pbrpc.generatedinterfaces.OSD.ObjectData.Builder subBuilder = null; + if (((bitField0_ & 0x00000040) == 0x00000040)) { + subBuilder = obj_.toBuilder(); + } + obj_ = input.readMessage(org.xtreemfs.pbrpc.generatedinterfaces.OSD.ObjectData.PARSER, extensionRegistry); + if (subBuilder != null) { + subBuilder.mergeFrom(obj_); + obj_ = subBuilder.buildPartial(); + } + bitField0_ |= 0x00000040; + break; + } + case 57: { + bitField0_ |= 0x00000008; + objectNumber_ = input.readFixed64(); + break; + } + } + } + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(this); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException( + e.getMessage()).setUnfinishedMessage(this); + } finally { + this.unknownFields = unknownFields.build(); + makeExtensionsImmutable(); + } + } public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { return org.xtreemfs.pbrpc.generatedinterfaces.OSD.internal_static_xtreemfs_pbrpc_xtreemfs_rwr_updateRequest_descriptor; } - + protected com.google.protobuf.GeneratedMessage.FieldAccessorTable internalGetFieldAccessorTable() { - return org.xtreemfs.pbrpc.generatedinterfaces.OSD.internal_static_xtreemfs_pbrpc_xtreemfs_rwr_updateRequest_fieldAccessorTable; + return org.xtreemfs.pbrpc.generatedinterfaces.OSD.internal_static_xtreemfs_pbrpc_xtreemfs_rwr_updateRequest_fieldAccessorTable + .ensureFieldAccessorsInitialized( + org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_rwr_updateRequest.class, org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_rwr_updateRequest.Builder.class); + } + + public static com.google.protobuf.Parser PARSER = + new com.google.protobuf.AbstractParser() { + public xtreemfs_rwr_updateRequest parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return new xtreemfs_rwr_updateRequest(input, extensionRegistry); + } + }; + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; } - + + private int bitField0_; // required .xtreemfs.pbrpc.FileCredentials file_credentials = 1; public static final int FILE_CREDENTIALS_FIELD_NUMBER = 1; - private boolean hasFileCredentials; private org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials fileCredentials_; - public boolean hasFileCredentials() { return hasFileCredentials; } - public org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials getFileCredentials() { return fileCredentials_; } - + /** + * required .xtreemfs.pbrpc.FileCredentials file_credentials = 1; + */ + public boolean hasFileCredentials() { + return ((bitField0_ & 0x00000001) == 0x00000001); + } + /** + * required .xtreemfs.pbrpc.FileCredentials file_credentials = 1; + */ + public org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials getFileCredentials() { + return fileCredentials_; + } + /** + * required .xtreemfs.pbrpc.FileCredentials file_credentials = 1; + */ + public org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentialsOrBuilder getFileCredentialsOrBuilder() { + return fileCredentials_; + } + // required string file_id = 2; public static final int FILE_ID_FIELD_NUMBER = 2; - private boolean hasFileId; - private java.lang.String fileId_ = ""; - public boolean hasFileId() { return hasFileId; } - public java.lang.String getFileId() { return fileId_; } - + private java.lang.Object fileId_; + /** + * required string file_id = 2; + */ + public boolean hasFileId() { + return ((bitField0_ & 0x00000002) == 0x00000002); + } + /** + * required string file_id = 2; + */ + public java.lang.String getFileId() { + java.lang.Object ref = fileId_; + if (ref instanceof java.lang.String) { + return (java.lang.String) ref; + } else { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + if (bs.isValidUtf8()) { + fileId_ = s; + } + return s; + } + } + /** + * required string file_id = 2; + */ + public com.google.protobuf.ByteString + getFileIdBytes() { + java.lang.Object ref = fileId_; + if (ref instanceof java.lang.String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + fileId_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + // required fixed64 new_file_size = 3; public static final int NEW_FILE_SIZE_FIELD_NUMBER = 3; - private boolean hasNewFileSize; - private long newFileSize_ = 0L; - public boolean hasNewFileSize() { return hasNewFileSize; } - public long getNewFileSize() { return newFileSize_; } - + private long newFileSize_; + /** + * required fixed64 new_file_size = 3; + */ + public boolean hasNewFileSize() { + return ((bitField0_ & 0x00000004) == 0x00000004); + } + /** + * required fixed64 new_file_size = 3; + */ + public long getNewFileSize() { + return newFileSize_; + } + // required fixed64 object_number = 7; public static final int OBJECT_NUMBER_FIELD_NUMBER = 7; - private boolean hasObjectNumber; - private long objectNumber_ = 0L; - public boolean hasObjectNumber() { return hasObjectNumber; } - public long getObjectNumber() { return objectNumber_; } - + private long objectNumber_; + /** + * required fixed64 object_number = 7; + */ + public boolean hasObjectNumber() { + return ((bitField0_ & 0x00000008) == 0x00000008); + } + /** + * required fixed64 object_number = 7; + */ + public long getObjectNumber() { + return objectNumber_; + } + // required fixed64 object_version = 4; public static final int OBJECT_VERSION_FIELD_NUMBER = 4; - private boolean hasObjectVersion; - private long objectVersion_ = 0L; - public boolean hasObjectVersion() { return hasObjectVersion; } - public long getObjectVersion() { return objectVersion_; } - + private long objectVersion_; + /** + * required fixed64 object_version = 4; + */ + public boolean hasObjectVersion() { + return ((bitField0_ & 0x00000010) == 0x00000010); + } + /** + * required fixed64 object_version = 4; + */ + public long getObjectVersion() { + return objectVersion_; + } + // required fixed32 offset = 5; public static final int OFFSET_FIELD_NUMBER = 5; - private boolean hasOffset; - private int offset_ = 0; - public boolean hasOffset() { return hasOffset; } - public int getOffset() { return offset_; } - + private int offset_; + /** + * required fixed32 offset = 5; + */ + public boolean hasOffset() { + return ((bitField0_ & 0x00000020) == 0x00000020); + } + /** + * required fixed32 offset = 5; + */ + public int getOffset() { + return offset_; + } + // required .xtreemfs.pbrpc.ObjectData obj = 6; public static final int OBJ_FIELD_NUMBER = 6; - private boolean hasObj; private org.xtreemfs.pbrpc.generatedinterfaces.OSD.ObjectData obj_; - public boolean hasObj() { return hasObj; } - public org.xtreemfs.pbrpc.generatedinterfaces.OSD.ObjectData getObj() { return obj_; } - + /** + * required .xtreemfs.pbrpc.ObjectData obj = 6; + */ + public boolean hasObj() { + return ((bitField0_ & 0x00000040) == 0x00000040); + } + /** + * required .xtreemfs.pbrpc.ObjectData obj = 6; + */ + public org.xtreemfs.pbrpc.generatedinterfaces.OSD.ObjectData getObj() { + return obj_; + } + /** + * required .xtreemfs.pbrpc.ObjectData obj = 6; + */ + public org.xtreemfs.pbrpc.generatedinterfaces.OSD.ObjectDataOrBuilder getObjOrBuilder() { + return obj_; + } + private void initFields() { fileCredentials_ = org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials.getDefaultInstance(); + fileId_ = ""; + newFileSize_ = 0L; + objectNumber_ = 0L; + objectVersion_ = 0L; + offset_ = 0; obj_ = org.xtreemfs.pbrpc.generatedinterfaces.OSD.ObjectData.getDefaultInstance(); } + private byte memoizedIsInitialized = -1; public final boolean isInitialized() { - if (!hasFileCredentials) return false; - if (!hasFileId) return false; - if (!hasNewFileSize) return false; - if (!hasObjectNumber) return false; - if (!hasObjectVersion) return false; - if (!hasOffset) return false; - if (!hasObj) return false; - if (!getFileCredentials().isInitialized()) return false; - if (!getObj().isInitialized()) return false; + byte isInitialized = memoizedIsInitialized; + if (isInitialized != -1) return isInitialized == 1; + + if (!hasFileCredentials()) { + memoizedIsInitialized = 0; + return false; + } + if (!hasFileId()) { + memoizedIsInitialized = 0; + return false; + } + if (!hasNewFileSize()) { + memoizedIsInitialized = 0; + return false; + } + if (!hasObjectNumber()) { + memoizedIsInitialized = 0; + return false; + } + if (!hasObjectVersion()) { + memoizedIsInitialized = 0; + return false; + } + if (!hasOffset()) { + memoizedIsInitialized = 0; + return false; + } + if (!hasObj()) { + memoizedIsInitialized = 0; + return false; + } + if (!getFileCredentials().isInitialized()) { + memoizedIsInitialized = 0; + return false; + } + if (!getObj().isInitialized()) { + memoizedIsInitialized = 0; + return false; + } + memoizedIsInitialized = 1; return true; } - + public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException { getSerializedSize(); - if (hasFileCredentials()) { - output.writeMessage(1, getFileCredentials()); + if (((bitField0_ & 0x00000001) == 0x00000001)) { + output.writeMessage(1, fileCredentials_); } - if (hasFileId()) { - output.writeString(2, getFileId()); + if (((bitField0_ & 0x00000002) == 0x00000002)) { + output.writeBytes(2, getFileIdBytes()); } - if (hasNewFileSize()) { - output.writeFixed64(3, getNewFileSize()); + if (((bitField0_ & 0x00000004) == 0x00000004)) { + output.writeFixed64(3, newFileSize_); } - if (hasObjectVersion()) { - output.writeFixed64(4, getObjectVersion()); + if (((bitField0_ & 0x00000010) == 0x00000010)) { + output.writeFixed64(4, objectVersion_); } - if (hasOffset()) { - output.writeFixed32(5, getOffset()); + if (((bitField0_ & 0x00000020) == 0x00000020)) { + output.writeFixed32(5, offset_); } - if (hasObj()) { - output.writeMessage(6, getObj()); + if (((bitField0_ & 0x00000040) == 0x00000040)) { + output.writeMessage(6, obj_); } - if (hasObjectNumber()) { - output.writeFixed64(7, getObjectNumber()); + if (((bitField0_ & 0x00000008) == 0x00000008)) { + output.writeFixed64(7, objectNumber_); } getUnknownFields().writeTo(output); } - + private int memoizedSerializedSize = -1; public int getSerializedSize() { int size = memoizedSerializedSize; if (size != -1) return size; - + size = 0; - if (hasFileCredentials()) { + if (((bitField0_ & 0x00000001) == 0x00000001)) { size += com.google.protobuf.CodedOutputStream - .computeMessageSize(1, getFileCredentials()); + .computeMessageSize(1, fileCredentials_); } - if (hasFileId()) { + if (((bitField0_ & 0x00000002) == 0x00000002)) { size += com.google.protobuf.CodedOutputStream - .computeStringSize(2, getFileId()); + .computeBytesSize(2, getFileIdBytes()); } - if (hasNewFileSize()) { + if (((bitField0_ & 0x00000004) == 0x00000004)) { size += com.google.protobuf.CodedOutputStream - .computeFixed64Size(3, getNewFileSize()); + .computeFixed64Size(3, newFileSize_); } - if (hasObjectVersion()) { + if (((bitField0_ & 0x00000010) == 0x00000010)) { size += com.google.protobuf.CodedOutputStream - .computeFixed64Size(4, getObjectVersion()); + .computeFixed64Size(4, objectVersion_); } - if (hasOffset()) { + if (((bitField0_ & 0x00000020) == 0x00000020)) { size += com.google.protobuf.CodedOutputStream - .computeFixed32Size(5, getOffset()); + .computeFixed32Size(5, offset_); } - if (hasObj()) { + if (((bitField0_ & 0x00000040) == 0x00000040)) { size += com.google.protobuf.CodedOutputStream - .computeMessageSize(6, getObj()); + .computeMessageSize(6, obj_); } - if (hasObjectNumber()) { + if (((bitField0_ & 0x00000008) == 0x00000008)) { size += com.google.protobuf.CodedOutputStream - .computeFixed64Size(7, getObjectNumber()); + .computeFixed64Size(7, objectNumber_); } size += getUnknownFields().getSerializedSize(); memoizedSerializedSize = size; return size; } - + + private static final long serialVersionUID = 0L; + @java.lang.Override + protected java.lang.Object writeReplace() + throws java.io.ObjectStreamException { + return super.writeReplace(); + } + public static org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_rwr_updateRequest parseFrom( com.google.protobuf.ByteString data) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data).buildParsed(); + return PARSER.parseFrom(data); } public static org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_rwr_updateRequest parseFrom( com.google.protobuf.ByteString data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(data, extensionRegistry); } public static org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_rwr_updateRequest parseFrom(byte[] data) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data).buildParsed(); + return PARSER.parseFrom(data); } public static org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_rwr_updateRequest parseFrom( byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(data, extensionRegistry); } public static org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_rwr_updateRequest parseFrom(java.io.InputStream input) throws java.io.IOException { - return newBuilder().mergeFrom(input).buildParsed(); + return PARSER.parseFrom(input); } public static org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_rwr_updateRequest parseFrom( java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - return newBuilder().mergeFrom(input, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(input, extensionRegistry); } public static org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_rwr_updateRequest parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException { - Builder builder = newBuilder(); - if (builder.mergeDelimitedFrom(input)) { - return builder.buildParsed(); - } else { - return null; - } + return PARSER.parseDelimitedFrom(input); } public static org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_rwr_updateRequest parseDelimitedFrom( java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - Builder builder = newBuilder(); - if (builder.mergeDelimitedFrom(input, extensionRegistry)) { - return builder.buildParsed(); - } else { - return null; - } + return PARSER.parseDelimitedFrom(input, extensionRegistry); } public static org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_rwr_updateRequest parseFrom( com.google.protobuf.CodedInputStream input) throws java.io.IOException { - return newBuilder().mergeFrom(input).buildParsed(); + return PARSER.parseFrom(input); } public static org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_rwr_updateRequest parseFrom( com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - return newBuilder().mergeFrom(input, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(input, extensionRegistry); } - + public static Builder newBuilder() { return Builder.create(); } public Builder newBuilderForType() { return newBuilder(); } public static Builder newBuilder(org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_rwr_updateRequest prototype) { return newBuilder().mergeFrom(prototype); } public Builder toBuilder() { return newBuilder(this); } - + + @java.lang.Override + protected Builder newBuilderForType( + com.google.protobuf.GeneratedMessage.BuilderParent parent) { + Builder builder = new Builder(parent); + return builder; + } + /** + * Protobuf type {@code xtreemfs.pbrpc.xtreemfs_rwr_updateRequest} + */ public static final class Builder extends - com.google.protobuf.GeneratedMessage.Builder { - private org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_rwr_updateRequest result; - + com.google.protobuf.GeneratedMessage.Builder + implements org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_rwr_updateRequestOrBuilder { + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return org.xtreemfs.pbrpc.generatedinterfaces.OSD.internal_static_xtreemfs_pbrpc_xtreemfs_rwr_updateRequest_descriptor; + } + + protected com.google.protobuf.GeneratedMessage.FieldAccessorTable + internalGetFieldAccessorTable() { + return org.xtreemfs.pbrpc.generatedinterfaces.OSD.internal_static_xtreemfs_pbrpc_xtreemfs_rwr_updateRequest_fieldAccessorTable + .ensureFieldAccessorsInitialized( + org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_rwr_updateRequest.class, org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_rwr_updateRequest.Builder.class); + } + // Construct using org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_rwr_updateRequest.newBuilder() - private Builder() {} - - private static Builder create() { - Builder builder = new Builder(); - builder.result = new org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_rwr_updateRequest(); - return builder; + private Builder() { + maybeForceBuilderInitialization(); } - - protected org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_rwr_updateRequest internalGetResult() { - return result; + + private Builder( + com.google.protobuf.GeneratedMessage.BuilderParent parent) { + super(parent); + maybeForceBuilderInitialization(); + } + private void maybeForceBuilderInitialization() { + if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) { + getFileCredentialsFieldBuilder(); + getObjFieldBuilder(); + } + } + private static Builder create() { + return new Builder(); } - + public Builder clear() { - if (result == null) { - throw new IllegalStateException( - "Cannot call clear() after build()."); + super.clear(); + if (fileCredentialsBuilder_ == null) { + fileCredentials_ = org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials.getDefaultInstance(); + } else { + fileCredentialsBuilder_.clear(); + } + bitField0_ = (bitField0_ & ~0x00000001); + fileId_ = ""; + bitField0_ = (bitField0_ & ~0x00000002); + newFileSize_ = 0L; + bitField0_ = (bitField0_ & ~0x00000004); + objectNumber_ = 0L; + bitField0_ = (bitField0_ & ~0x00000008); + objectVersion_ = 0L; + bitField0_ = (bitField0_ & ~0x00000010); + offset_ = 0; + bitField0_ = (bitField0_ & ~0x00000020); + if (objBuilder_ == null) { + obj_ = org.xtreemfs.pbrpc.generatedinterfaces.OSD.ObjectData.getDefaultInstance(); + } else { + objBuilder_.clear(); } - result = new org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_rwr_updateRequest(); + bitField0_ = (bitField0_ & ~0x00000040); return this; } - + public Builder clone() { - return create().mergeFrom(result); + return create().mergeFrom(buildPartial()); } - + public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() { - return org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_rwr_updateRequest.getDescriptor(); + return org.xtreemfs.pbrpc.generatedinterfaces.OSD.internal_static_xtreemfs_pbrpc_xtreemfs_rwr_updateRequest_descriptor; } - + public org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_rwr_updateRequest getDefaultInstanceForType() { return org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_rwr_updateRequest.getDefaultInstance(); } - - public boolean isInitialized() { - return result.isInitialized(); - } + public org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_rwr_updateRequest build() { - if (result != null && !isInitialized()) { + org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_rwr_updateRequest result = buildPartial(); + if (!result.isInitialized()) { throw newUninitializedMessageException(result); } - return buildPartial(); - } - - private org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_rwr_updateRequest buildParsed() - throws com.google.protobuf.InvalidProtocolBufferException { - if (!isInitialized()) { - throw newUninitializedMessageException( - result).asInvalidProtocolBufferException(); - } - return buildPartial(); + return result; } - + public org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_rwr_updateRequest buildPartial() { - if (result == null) { - throw new IllegalStateException( - "build() has already been called on this Builder."); + org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_rwr_updateRequest result = new org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_rwr_updateRequest(this); + int from_bitField0_ = bitField0_; + int to_bitField0_ = 0; + if (((from_bitField0_ & 0x00000001) == 0x00000001)) { + to_bitField0_ |= 0x00000001; + } + if (fileCredentialsBuilder_ == null) { + result.fileCredentials_ = fileCredentials_; + } else { + result.fileCredentials_ = fileCredentialsBuilder_.build(); + } + if (((from_bitField0_ & 0x00000002) == 0x00000002)) { + to_bitField0_ |= 0x00000002; + } + result.fileId_ = fileId_; + if (((from_bitField0_ & 0x00000004) == 0x00000004)) { + to_bitField0_ |= 0x00000004; + } + result.newFileSize_ = newFileSize_; + if (((from_bitField0_ & 0x00000008) == 0x00000008)) { + to_bitField0_ |= 0x00000008; } - org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_rwr_updateRequest returnMe = result; - result = null; - return returnMe; + result.objectNumber_ = objectNumber_; + if (((from_bitField0_ & 0x00000010) == 0x00000010)) { + to_bitField0_ |= 0x00000010; + } + result.objectVersion_ = objectVersion_; + if (((from_bitField0_ & 0x00000020) == 0x00000020)) { + to_bitField0_ |= 0x00000020; + } + result.offset_ = offset_; + if (((from_bitField0_ & 0x00000040) == 0x00000040)) { + to_bitField0_ |= 0x00000040; + } + if (objBuilder_ == null) { + result.obj_ = obj_; + } else { + result.obj_ = objBuilder_.build(); + } + result.bitField0_ = to_bitField0_; + onBuilt(); + return result; } - + public Builder mergeFrom(com.google.protobuf.Message other) { if (other instanceof org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_rwr_updateRequest) { return mergeFrom((org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_rwr_updateRequest)other); @@ -11053,14 +22399,16 @@ public final class OSD { return this; } } - + public Builder mergeFrom(org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_rwr_updateRequest other) { if (other == org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_rwr_updateRequest.getDefaultInstance()) return this; if (other.hasFileCredentials()) { mergeFileCredentials(other.getFileCredentials()); } if (other.hasFileId()) { - setFileId(other.getFileId()); + bitField0_ |= 0x00000002; + fileId_ = other.fileId_; + onChanged(); } if (other.hasNewFileSize()) { setNewFileSize(other.getNewFileSize()); @@ -11080,474 +22428,944 @@ public final class OSD { this.mergeUnknownFields(other.getUnknownFields()); return this; } - + + public final boolean isInitialized() { + if (!hasFileCredentials()) { + + return false; + } + if (!hasFileId()) { + + return false; + } + if (!hasNewFileSize()) { + + return false; + } + if (!hasObjectNumber()) { + + return false; + } + if (!hasObjectVersion()) { + + return false; + } + if (!hasOffset()) { + + return false; + } + if (!hasObj()) { + + return false; + } + if (!getFileCredentials().isInitialized()) { + + return false; + } + if (!getObj().isInitialized()) { + + return false; + } + return true; + } + public Builder mergeFrom( com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - com.google.protobuf.UnknownFieldSet.Builder unknownFields = - com.google.protobuf.UnknownFieldSet.newBuilder( - this.getUnknownFields()); - while (true) { - int tag = input.readTag(); - switch (tag) { - case 0: - this.setUnknownFields(unknownFields.build()); - return this; - default: { - if (!parseUnknownField(input, unknownFields, - extensionRegistry, tag)) { - this.setUnknownFields(unknownFields.build()); - return this; - } - break; - } - case 10: { - org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials.Builder subBuilder = org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials.newBuilder(); - if (hasFileCredentials()) { - subBuilder.mergeFrom(getFileCredentials()); - } - input.readMessage(subBuilder, extensionRegistry); - setFileCredentials(subBuilder.buildPartial()); - break; - } - case 18: { - setFileId(input.readString()); - break; - } - case 25: { - setNewFileSize(input.readFixed64()); - break; - } - case 33: { - setObjectVersion(input.readFixed64()); - break; - } - case 45: { - setOffset(input.readFixed32()); - break; - } - case 50: { - org.xtreemfs.pbrpc.generatedinterfaces.OSD.ObjectData.Builder subBuilder = org.xtreemfs.pbrpc.generatedinterfaces.OSD.ObjectData.newBuilder(); - if (hasObj()) { - subBuilder.mergeFrom(getObj()); - } - input.readMessage(subBuilder, extensionRegistry); - setObj(subBuilder.buildPartial()); - break; - } - case 57: { - setObjectNumber(input.readFixed64()); - break; - } + org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_rwr_updateRequest parsedMessage = null; + try { + parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + parsedMessage = (org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_rwr_updateRequest) e.getUnfinishedMessage(); + throw e; + } finally { + if (parsedMessage != null) { + mergeFrom(parsedMessage); } } + return this; } - - + private int bitField0_; + // required .xtreemfs.pbrpc.FileCredentials file_credentials = 1; + private org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials fileCredentials_ = org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials.getDefaultInstance(); + private com.google.protobuf.SingleFieldBuilder< + org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials, org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials.Builder, org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentialsOrBuilder> fileCredentialsBuilder_; + /** + * required .xtreemfs.pbrpc.FileCredentials file_credentials = 1; + */ public boolean hasFileCredentials() { - return result.hasFileCredentials(); + return ((bitField0_ & 0x00000001) == 0x00000001); } + /** + * required .xtreemfs.pbrpc.FileCredentials file_credentials = 1; + */ public org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials getFileCredentials() { - return result.getFileCredentials(); + if (fileCredentialsBuilder_ == null) { + return fileCredentials_; + } else { + return fileCredentialsBuilder_.getMessage(); + } } + /** + * required .xtreemfs.pbrpc.FileCredentials file_credentials = 1; + */ public Builder setFileCredentials(org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials value) { - if (value == null) { - throw new NullPointerException(); + if (fileCredentialsBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + fileCredentials_ = value; + onChanged(); + } else { + fileCredentialsBuilder_.setMessage(value); } - result.hasFileCredentials = true; - result.fileCredentials_ = value; + bitField0_ |= 0x00000001; return this; } - public Builder setFileCredentials(org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials.Builder builderForValue) { - result.hasFileCredentials = true; - result.fileCredentials_ = builderForValue.build(); + /** + * required .xtreemfs.pbrpc.FileCredentials file_credentials = 1; + */ + public Builder setFileCredentials( + org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials.Builder builderForValue) { + if (fileCredentialsBuilder_ == null) { + fileCredentials_ = builderForValue.build(); + onChanged(); + } else { + fileCredentialsBuilder_.setMessage(builderForValue.build()); + } + bitField0_ |= 0x00000001; return this; } + /** + * required .xtreemfs.pbrpc.FileCredentials file_credentials = 1; + */ public Builder mergeFileCredentials(org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials value) { - if (result.hasFileCredentials() && - result.fileCredentials_ != org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials.getDefaultInstance()) { - result.fileCredentials_ = - org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials.newBuilder(result.fileCredentials_).mergeFrom(value).buildPartial(); + if (fileCredentialsBuilder_ == null) { + if (((bitField0_ & 0x00000001) == 0x00000001) && + fileCredentials_ != org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials.getDefaultInstance()) { + fileCredentials_ = + org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials.newBuilder(fileCredentials_).mergeFrom(value).buildPartial(); + } else { + fileCredentials_ = value; + } + onChanged(); } else { - result.fileCredentials_ = value; + fileCredentialsBuilder_.mergeFrom(value); } - result.hasFileCredentials = true; + bitField0_ |= 0x00000001; return this; } + /** + * required .xtreemfs.pbrpc.FileCredentials file_credentials = 1; + */ public Builder clearFileCredentials() { - result.hasFileCredentials = false; - result.fileCredentials_ = org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials.getDefaultInstance(); + if (fileCredentialsBuilder_ == null) { + fileCredentials_ = org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials.getDefaultInstance(); + onChanged(); + } else { + fileCredentialsBuilder_.clear(); + } + bitField0_ = (bitField0_ & ~0x00000001); return this; } - + /** + * required .xtreemfs.pbrpc.FileCredentials file_credentials = 1; + */ + public org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials.Builder getFileCredentialsBuilder() { + bitField0_ |= 0x00000001; + onChanged(); + return getFileCredentialsFieldBuilder().getBuilder(); + } + /** + * required .xtreemfs.pbrpc.FileCredentials file_credentials = 1; + */ + public org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentialsOrBuilder getFileCredentialsOrBuilder() { + if (fileCredentialsBuilder_ != null) { + return fileCredentialsBuilder_.getMessageOrBuilder(); + } else { + return fileCredentials_; + } + } + /** + * required .xtreemfs.pbrpc.FileCredentials file_credentials = 1; + */ + private com.google.protobuf.SingleFieldBuilder< + org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials, org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials.Builder, org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentialsOrBuilder> + getFileCredentialsFieldBuilder() { + if (fileCredentialsBuilder_ == null) { + fileCredentialsBuilder_ = new com.google.protobuf.SingleFieldBuilder< + org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials, org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials.Builder, org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentialsOrBuilder>( + fileCredentials_, + getParentForChildren(), + isClean()); + fileCredentials_ = null; + } + return fileCredentialsBuilder_; + } + // required string file_id = 2; + private java.lang.Object fileId_ = ""; + /** + * required string file_id = 2; + */ public boolean hasFileId() { - return result.hasFileId(); + return ((bitField0_ & 0x00000002) == 0x00000002); } + /** + * required string file_id = 2; + */ public java.lang.String getFileId() { - return result.getFileId(); + java.lang.Object ref = fileId_; + if (!(ref instanceof java.lang.String)) { + java.lang.String s = ((com.google.protobuf.ByteString) ref) + .toStringUtf8(); + fileId_ = s; + return s; + } else { + return (java.lang.String) ref; + } + } + /** + * required string file_id = 2; + */ + public com.google.protobuf.ByteString + getFileIdBytes() { + java.lang.Object ref = fileId_; + if (ref instanceof String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + fileId_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } } - public Builder setFileId(java.lang.String value) { + /** + * required string file_id = 2; + */ + public Builder setFileId( + java.lang.String value) { if (value == null) { throw new NullPointerException(); } - result.hasFileId = true; - result.fileId_ = value; + bitField0_ |= 0x00000002; + fileId_ = value; + onChanged(); return this; } + /** + * required string file_id = 2; + */ public Builder clearFileId() { - result.hasFileId = false; - result.fileId_ = getDefaultInstance().getFileId(); + bitField0_ = (bitField0_ & ~0x00000002); + fileId_ = getDefaultInstance().getFileId(); + onChanged(); + return this; + } + /** + * required string file_id = 2; + */ + public Builder setFileIdBytes( + com.google.protobuf.ByteString value) { + if (value == null) { + throw new NullPointerException(); + } + bitField0_ |= 0x00000002; + fileId_ = value; + onChanged(); return this; } - + // required fixed64 new_file_size = 3; + private long newFileSize_ ; + /** + * required fixed64 new_file_size = 3; + */ public boolean hasNewFileSize() { - return result.hasNewFileSize(); + return ((bitField0_ & 0x00000004) == 0x00000004); } + /** + * required fixed64 new_file_size = 3; + */ public long getNewFileSize() { - return result.getNewFileSize(); + return newFileSize_; } + /** + * required fixed64 new_file_size = 3; + */ public Builder setNewFileSize(long value) { - result.hasNewFileSize = true; - result.newFileSize_ = value; + bitField0_ |= 0x00000004; + newFileSize_ = value; + onChanged(); return this; } + /** + * required fixed64 new_file_size = 3; + */ public Builder clearNewFileSize() { - result.hasNewFileSize = false; - result.newFileSize_ = 0L; + bitField0_ = (bitField0_ & ~0x00000004); + newFileSize_ = 0L; + onChanged(); return this; } - + // required fixed64 object_number = 7; + private long objectNumber_ ; + /** + * required fixed64 object_number = 7; + */ public boolean hasObjectNumber() { - return result.hasObjectNumber(); + return ((bitField0_ & 0x00000008) == 0x00000008); } + /** + * required fixed64 object_number = 7; + */ public long getObjectNumber() { - return result.getObjectNumber(); + return objectNumber_; } + /** + * required fixed64 object_number = 7; + */ public Builder setObjectNumber(long value) { - result.hasObjectNumber = true; - result.objectNumber_ = value; + bitField0_ |= 0x00000008; + objectNumber_ = value; + onChanged(); return this; } + /** + * required fixed64 object_number = 7; + */ public Builder clearObjectNumber() { - result.hasObjectNumber = false; - result.objectNumber_ = 0L; + bitField0_ = (bitField0_ & ~0x00000008); + objectNumber_ = 0L; + onChanged(); return this; } - + // required fixed64 object_version = 4; + private long objectVersion_ ; + /** + * required fixed64 object_version = 4; + */ public boolean hasObjectVersion() { - return result.hasObjectVersion(); + return ((bitField0_ & 0x00000010) == 0x00000010); } + /** + * required fixed64 object_version = 4; + */ public long getObjectVersion() { - return result.getObjectVersion(); + return objectVersion_; } + /** + * required fixed64 object_version = 4; + */ public Builder setObjectVersion(long value) { - result.hasObjectVersion = true; - result.objectVersion_ = value; + bitField0_ |= 0x00000010; + objectVersion_ = value; + onChanged(); return this; } + /** + * required fixed64 object_version = 4; + */ public Builder clearObjectVersion() { - result.hasObjectVersion = false; - result.objectVersion_ = 0L; + bitField0_ = (bitField0_ & ~0x00000010); + objectVersion_ = 0L; + onChanged(); return this; } - + // required fixed32 offset = 5; + private int offset_ ; + /** + * required fixed32 offset = 5; + */ public boolean hasOffset() { - return result.hasOffset(); + return ((bitField0_ & 0x00000020) == 0x00000020); } + /** + * required fixed32 offset = 5; + */ public int getOffset() { - return result.getOffset(); + return offset_; } + /** + * required fixed32 offset = 5; + */ public Builder setOffset(int value) { - result.hasOffset = true; - result.offset_ = value; + bitField0_ |= 0x00000020; + offset_ = value; + onChanged(); return this; } + /** + * required fixed32 offset = 5; + */ public Builder clearOffset() { - result.hasOffset = false; - result.offset_ = 0; + bitField0_ = (bitField0_ & ~0x00000020); + offset_ = 0; + onChanged(); return this; } - + // required .xtreemfs.pbrpc.ObjectData obj = 6; + private org.xtreemfs.pbrpc.generatedinterfaces.OSD.ObjectData obj_ = org.xtreemfs.pbrpc.generatedinterfaces.OSD.ObjectData.getDefaultInstance(); + private com.google.protobuf.SingleFieldBuilder< + org.xtreemfs.pbrpc.generatedinterfaces.OSD.ObjectData, org.xtreemfs.pbrpc.generatedinterfaces.OSD.ObjectData.Builder, org.xtreemfs.pbrpc.generatedinterfaces.OSD.ObjectDataOrBuilder> objBuilder_; + /** + * required .xtreemfs.pbrpc.ObjectData obj = 6; + */ public boolean hasObj() { - return result.hasObj(); + return ((bitField0_ & 0x00000040) == 0x00000040); } + /** + * required .xtreemfs.pbrpc.ObjectData obj = 6; + */ public org.xtreemfs.pbrpc.generatedinterfaces.OSD.ObjectData getObj() { - return result.getObj(); + if (objBuilder_ == null) { + return obj_; + } else { + return objBuilder_.getMessage(); + } } + /** + * required .xtreemfs.pbrpc.ObjectData obj = 6; + */ public Builder setObj(org.xtreemfs.pbrpc.generatedinterfaces.OSD.ObjectData value) { - if (value == null) { - throw new NullPointerException(); + if (objBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + obj_ = value; + onChanged(); + } else { + objBuilder_.setMessage(value); } - result.hasObj = true; - result.obj_ = value; + bitField0_ |= 0x00000040; return this; } - public Builder setObj(org.xtreemfs.pbrpc.generatedinterfaces.OSD.ObjectData.Builder builderForValue) { - result.hasObj = true; - result.obj_ = builderForValue.build(); + /** + * required .xtreemfs.pbrpc.ObjectData obj = 6; + */ + public Builder setObj( + org.xtreemfs.pbrpc.generatedinterfaces.OSD.ObjectData.Builder builderForValue) { + if (objBuilder_ == null) { + obj_ = builderForValue.build(); + onChanged(); + } else { + objBuilder_.setMessage(builderForValue.build()); + } + bitField0_ |= 0x00000040; return this; } + /** + * required .xtreemfs.pbrpc.ObjectData obj = 6; + */ public Builder mergeObj(org.xtreemfs.pbrpc.generatedinterfaces.OSD.ObjectData value) { - if (result.hasObj() && - result.obj_ != org.xtreemfs.pbrpc.generatedinterfaces.OSD.ObjectData.getDefaultInstance()) { - result.obj_ = - org.xtreemfs.pbrpc.generatedinterfaces.OSD.ObjectData.newBuilder(result.obj_).mergeFrom(value).buildPartial(); + if (objBuilder_ == null) { + if (((bitField0_ & 0x00000040) == 0x00000040) && + obj_ != org.xtreemfs.pbrpc.generatedinterfaces.OSD.ObjectData.getDefaultInstance()) { + obj_ = + org.xtreemfs.pbrpc.generatedinterfaces.OSD.ObjectData.newBuilder(obj_).mergeFrom(value).buildPartial(); + } else { + obj_ = value; + } + onChanged(); } else { - result.obj_ = value; + objBuilder_.mergeFrom(value); } - result.hasObj = true; + bitField0_ |= 0x00000040; return this; } + /** + * required .xtreemfs.pbrpc.ObjectData obj = 6; + */ public Builder clearObj() { - result.hasObj = false; - result.obj_ = org.xtreemfs.pbrpc.generatedinterfaces.OSD.ObjectData.getDefaultInstance(); + if (objBuilder_ == null) { + obj_ = org.xtreemfs.pbrpc.generatedinterfaces.OSD.ObjectData.getDefaultInstance(); + onChanged(); + } else { + objBuilder_.clear(); + } + bitField0_ = (bitField0_ & ~0x00000040); return this; } - + /** + * required .xtreemfs.pbrpc.ObjectData obj = 6; + */ + public org.xtreemfs.pbrpc.generatedinterfaces.OSD.ObjectData.Builder getObjBuilder() { + bitField0_ |= 0x00000040; + onChanged(); + return getObjFieldBuilder().getBuilder(); + } + /** + * required .xtreemfs.pbrpc.ObjectData obj = 6; + */ + public org.xtreemfs.pbrpc.generatedinterfaces.OSD.ObjectDataOrBuilder getObjOrBuilder() { + if (objBuilder_ != null) { + return objBuilder_.getMessageOrBuilder(); + } else { + return obj_; + } + } + /** + * required .xtreemfs.pbrpc.ObjectData obj = 6; + */ + private com.google.protobuf.SingleFieldBuilder< + org.xtreemfs.pbrpc.generatedinterfaces.OSD.ObjectData, org.xtreemfs.pbrpc.generatedinterfaces.OSD.ObjectData.Builder, org.xtreemfs.pbrpc.generatedinterfaces.OSD.ObjectDataOrBuilder> + getObjFieldBuilder() { + if (objBuilder_ == null) { + objBuilder_ = new com.google.protobuf.SingleFieldBuilder< + org.xtreemfs.pbrpc.generatedinterfaces.OSD.ObjectData, org.xtreemfs.pbrpc.generatedinterfaces.OSD.ObjectData.Builder, org.xtreemfs.pbrpc.generatedinterfaces.OSD.ObjectDataOrBuilder>( + obj_, + getParentForChildren(), + isClean()); + obj_ = null; + } + return objBuilder_; + } + // @@protoc_insertion_point(builder_scope:xtreemfs.pbrpc.xtreemfs_rwr_updateRequest) } - + static { defaultInstance = new xtreemfs_rwr_updateRequest(true); - org.xtreemfs.pbrpc.generatedinterfaces.OSD.internalForceInit(); defaultInstance.initFields(); } - + // @@protoc_insertion_point(class_scope:xtreemfs.pbrpc.xtreemfs_rwr_updateRequest) } - + + public interface xtreemfs_internal_get_gmaxRequestOrBuilder + extends com.google.protobuf.MessageOrBuilder { + + // required .xtreemfs.pbrpc.FileCredentials file_credentials = 1; + /** + * required .xtreemfs.pbrpc.FileCredentials file_credentials = 1; + */ + boolean hasFileCredentials(); + /** + * required .xtreemfs.pbrpc.FileCredentials file_credentials = 1; + */ + org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials getFileCredentials(); + /** + * required .xtreemfs.pbrpc.FileCredentials file_credentials = 1; + */ + org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentialsOrBuilder getFileCredentialsOrBuilder(); + + // required string file_id = 2; + /** + * required string file_id = 2; + */ + boolean hasFileId(); + /** + * required string file_id = 2; + */ + java.lang.String getFileId(); + /** + * required string file_id = 2; + */ + com.google.protobuf.ByteString + getFileIdBytes(); + } + /** + * Protobuf type {@code xtreemfs.pbrpc.xtreemfs_internal_get_gmaxRequest} + */ public static final class xtreemfs_internal_get_gmaxRequest extends - com.google.protobuf.GeneratedMessage { + com.google.protobuf.GeneratedMessage + implements xtreemfs_internal_get_gmaxRequestOrBuilder { // Use xtreemfs_internal_get_gmaxRequest.newBuilder() to construct. - private xtreemfs_internal_get_gmaxRequest() { - initFields(); + private xtreemfs_internal_get_gmaxRequest(com.google.protobuf.GeneratedMessage.Builder builder) { + super(builder); + this.unknownFields = builder.getUnknownFields(); } - private xtreemfs_internal_get_gmaxRequest(boolean noInit) {} - + private xtreemfs_internal_get_gmaxRequest(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); } + private static final xtreemfs_internal_get_gmaxRequest defaultInstance; public static xtreemfs_internal_get_gmaxRequest getDefaultInstance() { return defaultInstance; } - + public xtreemfs_internal_get_gmaxRequest getDefaultInstanceForType() { return defaultInstance; } - + + private final com.google.protobuf.UnknownFieldSet unknownFields; + @java.lang.Override + public final com.google.protobuf.UnknownFieldSet + getUnknownFields() { + return this.unknownFields; + } + private xtreemfs_internal_get_gmaxRequest( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + initFields(); + int mutable_bitField0_ = 0; + com.google.protobuf.UnknownFieldSet.Builder unknownFields = + com.google.protobuf.UnknownFieldSet.newBuilder(); + try { + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch (tag) { + case 0: + done = true; + break; + default: { + if (!parseUnknownField(input, unknownFields, + extensionRegistry, tag)) { + done = true; + } + break; + } + case 10: { + org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials.Builder subBuilder = null; + if (((bitField0_ & 0x00000001) == 0x00000001)) { + subBuilder = fileCredentials_.toBuilder(); + } + fileCredentials_ = input.readMessage(org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials.PARSER, extensionRegistry); + if (subBuilder != null) { + subBuilder.mergeFrom(fileCredentials_); + fileCredentials_ = subBuilder.buildPartial(); + } + bitField0_ |= 0x00000001; + break; + } + case 18: { + bitField0_ |= 0x00000002; + fileId_ = input.readBytes(); + break; + } + } + } + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(this); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException( + e.getMessage()).setUnfinishedMessage(this); + } finally { + this.unknownFields = unknownFields.build(); + makeExtensionsImmutable(); + } + } public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { return org.xtreemfs.pbrpc.generatedinterfaces.OSD.internal_static_xtreemfs_pbrpc_xtreemfs_internal_get_gmaxRequest_descriptor; } - + protected com.google.protobuf.GeneratedMessage.FieldAccessorTable internalGetFieldAccessorTable() { - return org.xtreemfs.pbrpc.generatedinterfaces.OSD.internal_static_xtreemfs_pbrpc_xtreemfs_internal_get_gmaxRequest_fieldAccessorTable; + return org.xtreemfs.pbrpc.generatedinterfaces.OSD.internal_static_xtreemfs_pbrpc_xtreemfs_internal_get_gmaxRequest_fieldAccessorTable + .ensureFieldAccessorsInitialized( + org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_internal_get_gmaxRequest.class, org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_internal_get_gmaxRequest.Builder.class); + } + + public static com.google.protobuf.Parser PARSER = + new com.google.protobuf.AbstractParser() { + public xtreemfs_internal_get_gmaxRequest parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return new xtreemfs_internal_get_gmaxRequest(input, extensionRegistry); + } + }; + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; } - + + private int bitField0_; // required .xtreemfs.pbrpc.FileCredentials file_credentials = 1; public static final int FILE_CREDENTIALS_FIELD_NUMBER = 1; - private boolean hasFileCredentials; private org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials fileCredentials_; - public boolean hasFileCredentials() { return hasFileCredentials; } - public org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials getFileCredentials() { return fileCredentials_; } - + /** + * required .xtreemfs.pbrpc.FileCredentials file_credentials = 1; + */ + public boolean hasFileCredentials() { + return ((bitField0_ & 0x00000001) == 0x00000001); + } + /** + * required .xtreemfs.pbrpc.FileCredentials file_credentials = 1; + */ + public org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials getFileCredentials() { + return fileCredentials_; + } + /** + * required .xtreemfs.pbrpc.FileCredentials file_credentials = 1; + */ + public org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentialsOrBuilder getFileCredentialsOrBuilder() { + return fileCredentials_; + } + // required string file_id = 2; public static final int FILE_ID_FIELD_NUMBER = 2; - private boolean hasFileId; - private java.lang.String fileId_ = ""; - public boolean hasFileId() { return hasFileId; } - public java.lang.String getFileId() { return fileId_; } - + private java.lang.Object fileId_; + /** + * required string file_id = 2; + */ + public boolean hasFileId() { + return ((bitField0_ & 0x00000002) == 0x00000002); + } + /** + * required string file_id = 2; + */ + public java.lang.String getFileId() { + java.lang.Object ref = fileId_; + if (ref instanceof java.lang.String) { + return (java.lang.String) ref; + } else { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + if (bs.isValidUtf8()) { + fileId_ = s; + } + return s; + } + } + /** + * required string file_id = 2; + */ + public com.google.protobuf.ByteString + getFileIdBytes() { + java.lang.Object ref = fileId_; + if (ref instanceof java.lang.String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + fileId_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + private void initFields() { fileCredentials_ = org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials.getDefaultInstance(); + fileId_ = ""; } + private byte memoizedIsInitialized = -1; public final boolean isInitialized() { - if (!hasFileCredentials) return false; - if (!hasFileId) return false; - if (!getFileCredentials().isInitialized()) return false; + byte isInitialized = memoizedIsInitialized; + if (isInitialized != -1) return isInitialized == 1; + + if (!hasFileCredentials()) { + memoizedIsInitialized = 0; + return false; + } + if (!hasFileId()) { + memoizedIsInitialized = 0; + return false; + } + if (!getFileCredentials().isInitialized()) { + memoizedIsInitialized = 0; + return false; + } + memoizedIsInitialized = 1; return true; } - + public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException { getSerializedSize(); - if (hasFileCredentials()) { - output.writeMessage(1, getFileCredentials()); + if (((bitField0_ & 0x00000001) == 0x00000001)) { + output.writeMessage(1, fileCredentials_); } - if (hasFileId()) { - output.writeString(2, getFileId()); + if (((bitField0_ & 0x00000002) == 0x00000002)) { + output.writeBytes(2, getFileIdBytes()); } getUnknownFields().writeTo(output); } - + private int memoizedSerializedSize = -1; public int getSerializedSize() { int size = memoizedSerializedSize; if (size != -1) return size; - + size = 0; - if (hasFileCredentials()) { + if (((bitField0_ & 0x00000001) == 0x00000001)) { size += com.google.protobuf.CodedOutputStream - .computeMessageSize(1, getFileCredentials()); + .computeMessageSize(1, fileCredentials_); } - if (hasFileId()) { + if (((bitField0_ & 0x00000002) == 0x00000002)) { size += com.google.protobuf.CodedOutputStream - .computeStringSize(2, getFileId()); + .computeBytesSize(2, getFileIdBytes()); } size += getUnknownFields().getSerializedSize(); memoizedSerializedSize = size; return size; } - + + private static final long serialVersionUID = 0L; + @java.lang.Override + protected java.lang.Object writeReplace() + throws java.io.ObjectStreamException { + return super.writeReplace(); + } + public static org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_internal_get_gmaxRequest parseFrom( com.google.protobuf.ByteString data) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data).buildParsed(); + return PARSER.parseFrom(data); } public static org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_internal_get_gmaxRequest parseFrom( com.google.protobuf.ByteString data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(data, extensionRegistry); } public static org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_internal_get_gmaxRequest parseFrom(byte[] data) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data).buildParsed(); + return PARSER.parseFrom(data); } public static org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_internal_get_gmaxRequest parseFrom( byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(data, extensionRegistry); } public static org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_internal_get_gmaxRequest parseFrom(java.io.InputStream input) throws java.io.IOException { - return newBuilder().mergeFrom(input).buildParsed(); + return PARSER.parseFrom(input); } public static org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_internal_get_gmaxRequest parseFrom( java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - return newBuilder().mergeFrom(input, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(input, extensionRegistry); } public static org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_internal_get_gmaxRequest parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException { - Builder builder = newBuilder(); - if (builder.mergeDelimitedFrom(input)) { - return builder.buildParsed(); - } else { - return null; - } + return PARSER.parseDelimitedFrom(input); } public static org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_internal_get_gmaxRequest parseDelimitedFrom( java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - Builder builder = newBuilder(); - if (builder.mergeDelimitedFrom(input, extensionRegistry)) { - return builder.buildParsed(); - } else { - return null; - } + return PARSER.parseDelimitedFrom(input, extensionRegistry); } public static org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_internal_get_gmaxRequest parseFrom( com.google.protobuf.CodedInputStream input) throws java.io.IOException { - return newBuilder().mergeFrom(input).buildParsed(); + return PARSER.parseFrom(input); } public static org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_internal_get_gmaxRequest parseFrom( com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - return newBuilder().mergeFrom(input, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(input, extensionRegistry); } - + public static Builder newBuilder() { return Builder.create(); } public Builder newBuilderForType() { return newBuilder(); } public static Builder newBuilder(org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_internal_get_gmaxRequest prototype) { return newBuilder().mergeFrom(prototype); } public Builder toBuilder() { return newBuilder(this); } - + + @java.lang.Override + protected Builder newBuilderForType( + com.google.protobuf.GeneratedMessage.BuilderParent parent) { + Builder builder = new Builder(parent); + return builder; + } + /** + * Protobuf type {@code xtreemfs.pbrpc.xtreemfs_internal_get_gmaxRequest} + */ public static final class Builder extends - com.google.protobuf.GeneratedMessage.Builder { - private org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_internal_get_gmaxRequest result; - + com.google.protobuf.GeneratedMessage.Builder + implements org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_internal_get_gmaxRequestOrBuilder { + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return org.xtreemfs.pbrpc.generatedinterfaces.OSD.internal_static_xtreemfs_pbrpc_xtreemfs_internal_get_gmaxRequest_descriptor; + } + + protected com.google.protobuf.GeneratedMessage.FieldAccessorTable + internalGetFieldAccessorTable() { + return org.xtreemfs.pbrpc.generatedinterfaces.OSD.internal_static_xtreemfs_pbrpc_xtreemfs_internal_get_gmaxRequest_fieldAccessorTable + .ensureFieldAccessorsInitialized( + org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_internal_get_gmaxRequest.class, org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_internal_get_gmaxRequest.Builder.class); + } + // Construct using org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_internal_get_gmaxRequest.newBuilder() - private Builder() {} - - private static Builder create() { - Builder builder = new Builder(); - builder.result = new org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_internal_get_gmaxRequest(); - return builder; + private Builder() { + maybeForceBuilderInitialization(); } - - protected org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_internal_get_gmaxRequest internalGetResult() { - return result; + + private Builder( + com.google.protobuf.GeneratedMessage.BuilderParent parent) { + super(parent); + maybeForceBuilderInitialization(); + } + private void maybeForceBuilderInitialization() { + if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) { + getFileCredentialsFieldBuilder(); + } + } + private static Builder create() { + return new Builder(); } - + public Builder clear() { - if (result == null) { - throw new IllegalStateException( - "Cannot call clear() after build()."); + super.clear(); + if (fileCredentialsBuilder_ == null) { + fileCredentials_ = org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials.getDefaultInstance(); + } else { + fileCredentialsBuilder_.clear(); } - result = new org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_internal_get_gmaxRequest(); + bitField0_ = (bitField0_ & ~0x00000001); + fileId_ = ""; + bitField0_ = (bitField0_ & ~0x00000002); return this; } - + public Builder clone() { - return create().mergeFrom(result); + return create().mergeFrom(buildPartial()); } - + public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() { - return org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_internal_get_gmaxRequest.getDescriptor(); + return org.xtreemfs.pbrpc.generatedinterfaces.OSD.internal_static_xtreemfs_pbrpc_xtreemfs_internal_get_gmaxRequest_descriptor; } - + public org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_internal_get_gmaxRequest getDefaultInstanceForType() { return org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_internal_get_gmaxRequest.getDefaultInstance(); } - - public boolean isInitialized() { - return result.isInitialized(); - } + public org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_internal_get_gmaxRequest build() { - if (result != null && !isInitialized()) { + org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_internal_get_gmaxRequest result = buildPartial(); + if (!result.isInitialized()) { throw newUninitializedMessageException(result); } - return buildPartial(); - } - - private org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_internal_get_gmaxRequest buildParsed() - throws com.google.protobuf.InvalidProtocolBufferException { - if (!isInitialized()) { - throw newUninitializedMessageException( - result).asInvalidProtocolBufferException(); - } - return buildPartial(); + return result; } - + public org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_internal_get_gmaxRequest buildPartial() { - if (result == null) { - throw new IllegalStateException( - "build() has already been called on this Builder."); + org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_internal_get_gmaxRequest result = new org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_internal_get_gmaxRequest(this); + int from_bitField0_ = bitField0_; + int to_bitField0_ = 0; + if (((from_bitField0_ & 0x00000001) == 0x00000001)) { + to_bitField0_ |= 0x00000001; + } + if (fileCredentialsBuilder_ == null) { + result.fileCredentials_ = fileCredentials_; + } else { + result.fileCredentials_ = fileCredentialsBuilder_.build(); + } + if (((from_bitField0_ & 0x00000002) == 0x00000002)) { + to_bitField0_ |= 0x00000002; } - org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_internal_get_gmaxRequest returnMe = result; - result = null; - return returnMe; + result.fileId_ = fileId_; + result.bitField0_ = to_bitField0_; + onBuilt(); + return result; } - + public Builder mergeFrom(com.google.protobuf.Message other) { if (other instanceof org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_internal_get_gmaxRequest) { return mergeFrom((org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_internal_get_gmaxRequest)other); @@ -11556,352 +23374,685 @@ public final class OSD { return this; } } - + public Builder mergeFrom(org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_internal_get_gmaxRequest other) { if (other == org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_internal_get_gmaxRequest.getDefaultInstance()) return this; if (other.hasFileCredentials()) { mergeFileCredentials(other.getFileCredentials()); } - if (other.hasFileId()) { - setFileId(other.getFileId()); + if (other.hasFileId()) { + bitField0_ |= 0x00000002; + fileId_ = other.fileId_; + onChanged(); + } + this.mergeUnknownFields(other.getUnknownFields()); + return this; + } + + public final boolean isInitialized() { + if (!hasFileCredentials()) { + + return false; + } + if (!hasFileId()) { + + return false; } - this.mergeUnknownFields(other.getUnknownFields()); - return this; + if (!getFileCredentials().isInitialized()) { + + return false; + } + return true; } - + public Builder mergeFrom( com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - com.google.protobuf.UnknownFieldSet.Builder unknownFields = - com.google.protobuf.UnknownFieldSet.newBuilder( - this.getUnknownFields()); - while (true) { - int tag = input.readTag(); - switch (tag) { - case 0: - this.setUnknownFields(unknownFields.build()); - return this; - default: { - if (!parseUnknownField(input, unknownFields, - extensionRegistry, tag)) { - this.setUnknownFields(unknownFields.build()); - return this; - } - break; - } - case 10: { - org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials.Builder subBuilder = org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials.newBuilder(); - if (hasFileCredentials()) { - subBuilder.mergeFrom(getFileCredentials()); - } - input.readMessage(subBuilder, extensionRegistry); - setFileCredentials(subBuilder.buildPartial()); - break; - } - case 18: { - setFileId(input.readString()); - break; - } + org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_internal_get_gmaxRequest parsedMessage = null; + try { + parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + parsedMessage = (org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_internal_get_gmaxRequest) e.getUnfinishedMessage(); + throw e; + } finally { + if (parsedMessage != null) { + mergeFrom(parsedMessage); } } + return this; } - - + private int bitField0_; + // required .xtreemfs.pbrpc.FileCredentials file_credentials = 1; + private org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials fileCredentials_ = org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials.getDefaultInstance(); + private com.google.protobuf.SingleFieldBuilder< + org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials, org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials.Builder, org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentialsOrBuilder> fileCredentialsBuilder_; + /** + * required .xtreemfs.pbrpc.FileCredentials file_credentials = 1; + */ public boolean hasFileCredentials() { - return result.hasFileCredentials(); + return ((bitField0_ & 0x00000001) == 0x00000001); } + /** + * required .xtreemfs.pbrpc.FileCredentials file_credentials = 1; + */ public org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials getFileCredentials() { - return result.getFileCredentials(); + if (fileCredentialsBuilder_ == null) { + return fileCredentials_; + } else { + return fileCredentialsBuilder_.getMessage(); + } } + /** + * required .xtreemfs.pbrpc.FileCredentials file_credentials = 1; + */ public Builder setFileCredentials(org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials value) { - if (value == null) { - throw new NullPointerException(); + if (fileCredentialsBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + fileCredentials_ = value; + onChanged(); + } else { + fileCredentialsBuilder_.setMessage(value); } - result.hasFileCredentials = true; - result.fileCredentials_ = value; + bitField0_ |= 0x00000001; return this; } - public Builder setFileCredentials(org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials.Builder builderForValue) { - result.hasFileCredentials = true; - result.fileCredentials_ = builderForValue.build(); + /** + * required .xtreemfs.pbrpc.FileCredentials file_credentials = 1; + */ + public Builder setFileCredentials( + org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials.Builder builderForValue) { + if (fileCredentialsBuilder_ == null) { + fileCredentials_ = builderForValue.build(); + onChanged(); + } else { + fileCredentialsBuilder_.setMessage(builderForValue.build()); + } + bitField0_ |= 0x00000001; return this; } + /** + * required .xtreemfs.pbrpc.FileCredentials file_credentials = 1; + */ public Builder mergeFileCredentials(org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials value) { - if (result.hasFileCredentials() && - result.fileCredentials_ != org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials.getDefaultInstance()) { - result.fileCredentials_ = - org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials.newBuilder(result.fileCredentials_).mergeFrom(value).buildPartial(); + if (fileCredentialsBuilder_ == null) { + if (((bitField0_ & 0x00000001) == 0x00000001) && + fileCredentials_ != org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials.getDefaultInstance()) { + fileCredentials_ = + org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials.newBuilder(fileCredentials_).mergeFrom(value).buildPartial(); + } else { + fileCredentials_ = value; + } + onChanged(); } else { - result.fileCredentials_ = value; + fileCredentialsBuilder_.mergeFrom(value); } - result.hasFileCredentials = true; + bitField0_ |= 0x00000001; return this; } + /** + * required .xtreemfs.pbrpc.FileCredentials file_credentials = 1; + */ public Builder clearFileCredentials() { - result.hasFileCredentials = false; - result.fileCredentials_ = org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials.getDefaultInstance(); + if (fileCredentialsBuilder_ == null) { + fileCredentials_ = org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials.getDefaultInstance(); + onChanged(); + } else { + fileCredentialsBuilder_.clear(); + } + bitField0_ = (bitField0_ & ~0x00000001); return this; } - + /** + * required .xtreemfs.pbrpc.FileCredentials file_credentials = 1; + */ + public org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials.Builder getFileCredentialsBuilder() { + bitField0_ |= 0x00000001; + onChanged(); + return getFileCredentialsFieldBuilder().getBuilder(); + } + /** + * required .xtreemfs.pbrpc.FileCredentials file_credentials = 1; + */ + public org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentialsOrBuilder getFileCredentialsOrBuilder() { + if (fileCredentialsBuilder_ != null) { + return fileCredentialsBuilder_.getMessageOrBuilder(); + } else { + return fileCredentials_; + } + } + /** + * required .xtreemfs.pbrpc.FileCredentials file_credentials = 1; + */ + private com.google.protobuf.SingleFieldBuilder< + org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials, org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials.Builder, org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentialsOrBuilder> + getFileCredentialsFieldBuilder() { + if (fileCredentialsBuilder_ == null) { + fileCredentialsBuilder_ = new com.google.protobuf.SingleFieldBuilder< + org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials, org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials.Builder, org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentialsOrBuilder>( + fileCredentials_, + getParentForChildren(), + isClean()); + fileCredentials_ = null; + } + return fileCredentialsBuilder_; + } + // required string file_id = 2; + private java.lang.Object fileId_ = ""; + /** + * required string file_id = 2; + */ public boolean hasFileId() { - return result.hasFileId(); + return ((bitField0_ & 0x00000002) == 0x00000002); } + /** + * required string file_id = 2; + */ public java.lang.String getFileId() { - return result.getFileId(); + java.lang.Object ref = fileId_; + if (!(ref instanceof java.lang.String)) { + java.lang.String s = ((com.google.protobuf.ByteString) ref) + .toStringUtf8(); + fileId_ = s; + return s; + } else { + return (java.lang.String) ref; + } + } + /** + * required string file_id = 2; + */ + public com.google.protobuf.ByteString + getFileIdBytes() { + java.lang.Object ref = fileId_; + if (ref instanceof String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + fileId_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } } - public Builder setFileId(java.lang.String value) { + /** + * required string file_id = 2; + */ + public Builder setFileId( + java.lang.String value) { if (value == null) { throw new NullPointerException(); } - result.hasFileId = true; - result.fileId_ = value; + bitField0_ |= 0x00000002; + fileId_ = value; + onChanged(); return this; } + /** + * required string file_id = 2; + */ public Builder clearFileId() { - result.hasFileId = false; - result.fileId_ = getDefaultInstance().getFileId(); + bitField0_ = (bitField0_ & ~0x00000002); + fileId_ = getDefaultInstance().getFileId(); + onChanged(); + return this; + } + /** + * required string file_id = 2; + */ + public Builder setFileIdBytes( + com.google.protobuf.ByteString value) { + if (value == null) { + throw new NullPointerException(); + } + bitField0_ |= 0x00000002; + fileId_ = value; + onChanged(); return this; } - + // @@protoc_insertion_point(builder_scope:xtreemfs.pbrpc.xtreemfs_internal_get_gmaxRequest) } - + static { defaultInstance = new xtreemfs_internal_get_gmaxRequest(true); - org.xtreemfs.pbrpc.generatedinterfaces.OSD.internalForceInit(); defaultInstance.initFields(); } - + // @@protoc_insertion_point(class_scope:xtreemfs.pbrpc.xtreemfs_internal_get_gmaxRequest) } - + + public interface xtreemfs_internal_get_file_sizeRequestOrBuilder + extends com.google.protobuf.MessageOrBuilder { + + // required .xtreemfs.pbrpc.FileCredentials file_credentials = 1; + /** + * required .xtreemfs.pbrpc.FileCredentials file_credentials = 1; + */ + boolean hasFileCredentials(); + /** + * required .xtreemfs.pbrpc.FileCredentials file_credentials = 1; + */ + org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials getFileCredentials(); + /** + * required .xtreemfs.pbrpc.FileCredentials file_credentials = 1; + */ + org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentialsOrBuilder getFileCredentialsOrBuilder(); + + // required string file_id = 2; + /** + * required string file_id = 2; + */ + boolean hasFileId(); + /** + * required string file_id = 2; + */ + java.lang.String getFileId(); + /** + * required string file_id = 2; + */ + com.google.protobuf.ByteString + getFileIdBytes(); + } + /** + * Protobuf type {@code xtreemfs.pbrpc.xtreemfs_internal_get_file_sizeRequest} + */ public static final class xtreemfs_internal_get_file_sizeRequest extends - com.google.protobuf.GeneratedMessage { + com.google.protobuf.GeneratedMessage + implements xtreemfs_internal_get_file_sizeRequestOrBuilder { // Use xtreemfs_internal_get_file_sizeRequest.newBuilder() to construct. - private xtreemfs_internal_get_file_sizeRequest() { - initFields(); + private xtreemfs_internal_get_file_sizeRequest(com.google.protobuf.GeneratedMessage.Builder builder) { + super(builder); + this.unknownFields = builder.getUnknownFields(); } - private xtreemfs_internal_get_file_sizeRequest(boolean noInit) {} - + private xtreemfs_internal_get_file_sizeRequest(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); } + private static final xtreemfs_internal_get_file_sizeRequest defaultInstance; public static xtreemfs_internal_get_file_sizeRequest getDefaultInstance() { return defaultInstance; } - + public xtreemfs_internal_get_file_sizeRequest getDefaultInstanceForType() { return defaultInstance; } - + + private final com.google.protobuf.UnknownFieldSet unknownFields; + @java.lang.Override + public final com.google.protobuf.UnknownFieldSet + getUnknownFields() { + return this.unknownFields; + } + private xtreemfs_internal_get_file_sizeRequest( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + initFields(); + int mutable_bitField0_ = 0; + com.google.protobuf.UnknownFieldSet.Builder unknownFields = + com.google.protobuf.UnknownFieldSet.newBuilder(); + try { + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch (tag) { + case 0: + done = true; + break; + default: { + if (!parseUnknownField(input, unknownFields, + extensionRegistry, tag)) { + done = true; + } + break; + } + case 10: { + org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials.Builder subBuilder = null; + if (((bitField0_ & 0x00000001) == 0x00000001)) { + subBuilder = fileCredentials_.toBuilder(); + } + fileCredentials_ = input.readMessage(org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials.PARSER, extensionRegistry); + if (subBuilder != null) { + subBuilder.mergeFrom(fileCredentials_); + fileCredentials_ = subBuilder.buildPartial(); + } + bitField0_ |= 0x00000001; + break; + } + case 18: { + bitField0_ |= 0x00000002; + fileId_ = input.readBytes(); + break; + } + } + } + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(this); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException( + e.getMessage()).setUnfinishedMessage(this); + } finally { + this.unknownFields = unknownFields.build(); + makeExtensionsImmutable(); + } + } public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { return org.xtreemfs.pbrpc.generatedinterfaces.OSD.internal_static_xtreemfs_pbrpc_xtreemfs_internal_get_file_sizeRequest_descriptor; } - + protected com.google.protobuf.GeneratedMessage.FieldAccessorTable internalGetFieldAccessorTable() { - return org.xtreemfs.pbrpc.generatedinterfaces.OSD.internal_static_xtreemfs_pbrpc_xtreemfs_internal_get_file_sizeRequest_fieldAccessorTable; + return org.xtreemfs.pbrpc.generatedinterfaces.OSD.internal_static_xtreemfs_pbrpc_xtreemfs_internal_get_file_sizeRequest_fieldAccessorTable + .ensureFieldAccessorsInitialized( + org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_internal_get_file_sizeRequest.class, org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_internal_get_file_sizeRequest.Builder.class); + } + + public static com.google.protobuf.Parser PARSER = + new com.google.protobuf.AbstractParser() { + public xtreemfs_internal_get_file_sizeRequest parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return new xtreemfs_internal_get_file_sizeRequest(input, extensionRegistry); + } + }; + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; } - + + private int bitField0_; // required .xtreemfs.pbrpc.FileCredentials file_credentials = 1; public static final int FILE_CREDENTIALS_FIELD_NUMBER = 1; - private boolean hasFileCredentials; private org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials fileCredentials_; - public boolean hasFileCredentials() { return hasFileCredentials; } - public org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials getFileCredentials() { return fileCredentials_; } - + /** + * required .xtreemfs.pbrpc.FileCredentials file_credentials = 1; + */ + public boolean hasFileCredentials() { + return ((bitField0_ & 0x00000001) == 0x00000001); + } + /** + * required .xtreemfs.pbrpc.FileCredentials file_credentials = 1; + */ + public org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials getFileCredentials() { + return fileCredentials_; + } + /** + * required .xtreemfs.pbrpc.FileCredentials file_credentials = 1; + */ + public org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentialsOrBuilder getFileCredentialsOrBuilder() { + return fileCredentials_; + } + // required string file_id = 2; public static final int FILE_ID_FIELD_NUMBER = 2; - private boolean hasFileId; - private java.lang.String fileId_ = ""; - public boolean hasFileId() { return hasFileId; } - public java.lang.String getFileId() { return fileId_; } - + private java.lang.Object fileId_; + /** + * required string file_id = 2; + */ + public boolean hasFileId() { + return ((bitField0_ & 0x00000002) == 0x00000002); + } + /** + * required string file_id = 2; + */ + public java.lang.String getFileId() { + java.lang.Object ref = fileId_; + if (ref instanceof java.lang.String) { + return (java.lang.String) ref; + } else { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + if (bs.isValidUtf8()) { + fileId_ = s; + } + return s; + } + } + /** + * required string file_id = 2; + */ + public com.google.protobuf.ByteString + getFileIdBytes() { + java.lang.Object ref = fileId_; + if (ref instanceof java.lang.String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + fileId_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + private void initFields() { fileCredentials_ = org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials.getDefaultInstance(); + fileId_ = ""; } + private byte memoizedIsInitialized = -1; public final boolean isInitialized() { - if (!hasFileCredentials) return false; - if (!hasFileId) return false; - if (!getFileCredentials().isInitialized()) return false; + byte isInitialized = memoizedIsInitialized; + if (isInitialized != -1) return isInitialized == 1; + + if (!hasFileCredentials()) { + memoizedIsInitialized = 0; + return false; + } + if (!hasFileId()) { + memoizedIsInitialized = 0; + return false; + } + if (!getFileCredentials().isInitialized()) { + memoizedIsInitialized = 0; + return false; + } + memoizedIsInitialized = 1; return true; } - + public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException { getSerializedSize(); - if (hasFileCredentials()) { - output.writeMessage(1, getFileCredentials()); + if (((bitField0_ & 0x00000001) == 0x00000001)) { + output.writeMessage(1, fileCredentials_); } - if (hasFileId()) { - output.writeString(2, getFileId()); + if (((bitField0_ & 0x00000002) == 0x00000002)) { + output.writeBytes(2, getFileIdBytes()); } getUnknownFields().writeTo(output); } - + private int memoizedSerializedSize = -1; public int getSerializedSize() { int size = memoizedSerializedSize; if (size != -1) return size; - + size = 0; - if (hasFileCredentials()) { + if (((bitField0_ & 0x00000001) == 0x00000001)) { size += com.google.protobuf.CodedOutputStream - .computeMessageSize(1, getFileCredentials()); + .computeMessageSize(1, fileCredentials_); } - if (hasFileId()) { + if (((bitField0_ & 0x00000002) == 0x00000002)) { size += com.google.protobuf.CodedOutputStream - .computeStringSize(2, getFileId()); + .computeBytesSize(2, getFileIdBytes()); } size += getUnknownFields().getSerializedSize(); memoizedSerializedSize = size; return size; } - + + private static final long serialVersionUID = 0L; + @java.lang.Override + protected java.lang.Object writeReplace() + throws java.io.ObjectStreamException { + return super.writeReplace(); + } + public static org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_internal_get_file_sizeRequest parseFrom( com.google.protobuf.ByteString data) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data).buildParsed(); + return PARSER.parseFrom(data); } public static org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_internal_get_file_sizeRequest parseFrom( com.google.protobuf.ByteString data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(data, extensionRegistry); } public static org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_internal_get_file_sizeRequest parseFrom(byte[] data) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data).buildParsed(); + return PARSER.parseFrom(data); } public static org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_internal_get_file_sizeRequest parseFrom( byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(data, extensionRegistry); } public static org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_internal_get_file_sizeRequest parseFrom(java.io.InputStream input) throws java.io.IOException { - return newBuilder().mergeFrom(input).buildParsed(); + return PARSER.parseFrom(input); } public static org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_internal_get_file_sizeRequest parseFrom( java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - return newBuilder().mergeFrom(input, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(input, extensionRegistry); } public static org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_internal_get_file_sizeRequest parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException { - Builder builder = newBuilder(); - if (builder.mergeDelimitedFrom(input)) { - return builder.buildParsed(); - } else { - return null; - } + return PARSER.parseDelimitedFrom(input); } public static org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_internal_get_file_sizeRequest parseDelimitedFrom( java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - Builder builder = newBuilder(); - if (builder.mergeDelimitedFrom(input, extensionRegistry)) { - return builder.buildParsed(); - } else { - return null; - } + return PARSER.parseDelimitedFrom(input, extensionRegistry); } public static org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_internal_get_file_sizeRequest parseFrom( com.google.protobuf.CodedInputStream input) throws java.io.IOException { - return newBuilder().mergeFrom(input).buildParsed(); + return PARSER.parseFrom(input); } public static org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_internal_get_file_sizeRequest parseFrom( com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - return newBuilder().mergeFrom(input, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(input, extensionRegistry); } - + public static Builder newBuilder() { return Builder.create(); } public Builder newBuilderForType() { return newBuilder(); } public static Builder newBuilder(org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_internal_get_file_sizeRequest prototype) { return newBuilder().mergeFrom(prototype); } public Builder toBuilder() { return newBuilder(this); } - + + @java.lang.Override + protected Builder newBuilderForType( + com.google.protobuf.GeneratedMessage.BuilderParent parent) { + Builder builder = new Builder(parent); + return builder; + } + /** + * Protobuf type {@code xtreemfs.pbrpc.xtreemfs_internal_get_file_sizeRequest} + */ public static final class Builder extends - com.google.protobuf.GeneratedMessage.Builder { - private org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_internal_get_file_sizeRequest result; - + com.google.protobuf.GeneratedMessage.Builder + implements org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_internal_get_file_sizeRequestOrBuilder { + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return org.xtreemfs.pbrpc.generatedinterfaces.OSD.internal_static_xtreemfs_pbrpc_xtreemfs_internal_get_file_sizeRequest_descriptor; + } + + protected com.google.protobuf.GeneratedMessage.FieldAccessorTable + internalGetFieldAccessorTable() { + return org.xtreemfs.pbrpc.generatedinterfaces.OSD.internal_static_xtreemfs_pbrpc_xtreemfs_internal_get_file_sizeRequest_fieldAccessorTable + .ensureFieldAccessorsInitialized( + org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_internal_get_file_sizeRequest.class, org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_internal_get_file_sizeRequest.Builder.class); + } + // Construct using org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_internal_get_file_sizeRequest.newBuilder() - private Builder() {} - - private static Builder create() { - Builder builder = new Builder(); - builder.result = new org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_internal_get_file_sizeRequest(); - return builder; + private Builder() { + maybeForceBuilderInitialization(); } - - protected org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_internal_get_file_sizeRequest internalGetResult() { - return result; + + private Builder( + com.google.protobuf.GeneratedMessage.BuilderParent parent) { + super(parent); + maybeForceBuilderInitialization(); } - + private void maybeForceBuilderInitialization() { + if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) { + getFileCredentialsFieldBuilder(); + } + } + private static Builder create() { + return new Builder(); + } + public Builder clear() { - if (result == null) { - throw new IllegalStateException( - "Cannot call clear() after build()."); + super.clear(); + if (fileCredentialsBuilder_ == null) { + fileCredentials_ = org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials.getDefaultInstance(); + } else { + fileCredentialsBuilder_.clear(); } - result = new org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_internal_get_file_sizeRequest(); + bitField0_ = (bitField0_ & ~0x00000001); + fileId_ = ""; + bitField0_ = (bitField0_ & ~0x00000002); return this; } - + public Builder clone() { - return create().mergeFrom(result); + return create().mergeFrom(buildPartial()); } - + public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() { - return org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_internal_get_file_sizeRequest.getDescriptor(); + return org.xtreemfs.pbrpc.generatedinterfaces.OSD.internal_static_xtreemfs_pbrpc_xtreemfs_internal_get_file_sizeRequest_descriptor; } - + public org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_internal_get_file_sizeRequest getDefaultInstanceForType() { return org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_internal_get_file_sizeRequest.getDefaultInstance(); } - - public boolean isInitialized() { - return result.isInitialized(); - } + public org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_internal_get_file_sizeRequest build() { - if (result != null && !isInitialized()) { + org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_internal_get_file_sizeRequest result = buildPartial(); + if (!result.isInitialized()) { throw newUninitializedMessageException(result); } - return buildPartial(); - } - - private org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_internal_get_file_sizeRequest buildParsed() - throws com.google.protobuf.InvalidProtocolBufferException { - if (!isInitialized()) { - throw newUninitializedMessageException( - result).asInvalidProtocolBufferException(); - } - return buildPartial(); + return result; } - + public org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_internal_get_file_sizeRequest buildPartial() { - if (result == null) { - throw new IllegalStateException( - "build() has already been called on this Builder."); + org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_internal_get_file_sizeRequest result = new org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_internal_get_file_sizeRequest(this); + int from_bitField0_ = bitField0_; + int to_bitField0_ = 0; + if (((from_bitField0_ & 0x00000001) == 0x00000001)) { + to_bitField0_ |= 0x00000001; + } + if (fileCredentialsBuilder_ == null) { + result.fileCredentials_ = fileCredentials_; + } else { + result.fileCredentials_ = fileCredentialsBuilder_.build(); + } + if (((from_bitField0_ & 0x00000002) == 0x00000002)) { + to_bitField0_ |= 0x00000002; } - org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_internal_get_file_sizeRequest returnMe = result; - result = null; - return returnMe; + result.fileId_ = fileId_; + result.bitField0_ = to_bitField0_; + onBuilt(); + return result; } - + public Builder mergeFrom(com.google.protobuf.Message other) { if (other instanceof org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_internal_get_file_sizeRequest) { return mergeFrom((org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_internal_get_file_sizeRequest)other); @@ -11910,335 +24061,589 @@ public final class OSD { return this; } } - + public Builder mergeFrom(org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_internal_get_file_sizeRequest other) { if (other == org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_internal_get_file_sizeRequest.getDefaultInstance()) return this; if (other.hasFileCredentials()) { mergeFileCredentials(other.getFileCredentials()); } if (other.hasFileId()) { - setFileId(other.getFileId()); + bitField0_ |= 0x00000002; + fileId_ = other.fileId_; + onChanged(); } this.mergeUnknownFields(other.getUnknownFields()); return this; } - + + public final boolean isInitialized() { + if (!hasFileCredentials()) { + + return false; + } + if (!hasFileId()) { + + return false; + } + if (!getFileCredentials().isInitialized()) { + + return false; + } + return true; + } + public Builder mergeFrom( com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - com.google.protobuf.UnknownFieldSet.Builder unknownFields = - com.google.protobuf.UnknownFieldSet.newBuilder( - this.getUnknownFields()); - while (true) { - int tag = input.readTag(); - switch (tag) { - case 0: - this.setUnknownFields(unknownFields.build()); - return this; - default: { - if (!parseUnknownField(input, unknownFields, - extensionRegistry, tag)) { - this.setUnknownFields(unknownFields.build()); - return this; - } - break; - } - case 10: { - org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials.Builder subBuilder = org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials.newBuilder(); - if (hasFileCredentials()) { - subBuilder.mergeFrom(getFileCredentials()); - } - input.readMessage(subBuilder, extensionRegistry); - setFileCredentials(subBuilder.buildPartial()); - break; - } - case 18: { - setFileId(input.readString()); - break; - } + org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_internal_get_file_sizeRequest parsedMessage = null; + try { + parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + parsedMessage = (org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_internal_get_file_sizeRequest) e.getUnfinishedMessage(); + throw e; + } finally { + if (parsedMessage != null) { + mergeFrom(parsedMessage); } } + return this; } - - + private int bitField0_; + // required .xtreemfs.pbrpc.FileCredentials file_credentials = 1; + private org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials fileCredentials_ = org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials.getDefaultInstance(); + private com.google.protobuf.SingleFieldBuilder< + org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials, org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials.Builder, org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentialsOrBuilder> fileCredentialsBuilder_; + /** + * required .xtreemfs.pbrpc.FileCredentials file_credentials = 1; + */ public boolean hasFileCredentials() { - return result.hasFileCredentials(); + return ((bitField0_ & 0x00000001) == 0x00000001); } + /** + * required .xtreemfs.pbrpc.FileCredentials file_credentials = 1; + */ public org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials getFileCredentials() { - return result.getFileCredentials(); + if (fileCredentialsBuilder_ == null) { + return fileCredentials_; + } else { + return fileCredentialsBuilder_.getMessage(); + } } + /** + * required .xtreemfs.pbrpc.FileCredentials file_credentials = 1; + */ public Builder setFileCredentials(org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials value) { - if (value == null) { - throw new NullPointerException(); + if (fileCredentialsBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + fileCredentials_ = value; + onChanged(); + } else { + fileCredentialsBuilder_.setMessage(value); } - result.hasFileCredentials = true; - result.fileCredentials_ = value; + bitField0_ |= 0x00000001; return this; } - public Builder setFileCredentials(org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials.Builder builderForValue) { - result.hasFileCredentials = true; - result.fileCredentials_ = builderForValue.build(); + /** + * required .xtreemfs.pbrpc.FileCredentials file_credentials = 1; + */ + public Builder setFileCredentials( + org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials.Builder builderForValue) { + if (fileCredentialsBuilder_ == null) { + fileCredentials_ = builderForValue.build(); + onChanged(); + } else { + fileCredentialsBuilder_.setMessage(builderForValue.build()); + } + bitField0_ |= 0x00000001; return this; } + /** + * required .xtreemfs.pbrpc.FileCredentials file_credentials = 1; + */ public Builder mergeFileCredentials(org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials value) { - if (result.hasFileCredentials() && - result.fileCredentials_ != org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials.getDefaultInstance()) { - result.fileCredentials_ = - org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials.newBuilder(result.fileCredentials_).mergeFrom(value).buildPartial(); + if (fileCredentialsBuilder_ == null) { + if (((bitField0_ & 0x00000001) == 0x00000001) && + fileCredentials_ != org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials.getDefaultInstance()) { + fileCredentials_ = + org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials.newBuilder(fileCredentials_).mergeFrom(value).buildPartial(); + } else { + fileCredentials_ = value; + } + onChanged(); } else { - result.fileCredentials_ = value; + fileCredentialsBuilder_.mergeFrom(value); } - result.hasFileCredentials = true; + bitField0_ |= 0x00000001; return this; } + /** + * required .xtreemfs.pbrpc.FileCredentials file_credentials = 1; + */ public Builder clearFileCredentials() { - result.hasFileCredentials = false; - result.fileCredentials_ = org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials.getDefaultInstance(); + if (fileCredentialsBuilder_ == null) { + fileCredentials_ = org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials.getDefaultInstance(); + onChanged(); + } else { + fileCredentialsBuilder_.clear(); + } + bitField0_ = (bitField0_ & ~0x00000001); return this; } - + /** + * required .xtreemfs.pbrpc.FileCredentials file_credentials = 1; + */ + public org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials.Builder getFileCredentialsBuilder() { + bitField0_ |= 0x00000001; + onChanged(); + return getFileCredentialsFieldBuilder().getBuilder(); + } + /** + * required .xtreemfs.pbrpc.FileCredentials file_credentials = 1; + */ + public org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentialsOrBuilder getFileCredentialsOrBuilder() { + if (fileCredentialsBuilder_ != null) { + return fileCredentialsBuilder_.getMessageOrBuilder(); + } else { + return fileCredentials_; + } + } + /** + * required .xtreemfs.pbrpc.FileCredentials file_credentials = 1; + */ + private com.google.protobuf.SingleFieldBuilder< + org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials, org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials.Builder, org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentialsOrBuilder> + getFileCredentialsFieldBuilder() { + if (fileCredentialsBuilder_ == null) { + fileCredentialsBuilder_ = new com.google.protobuf.SingleFieldBuilder< + org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials, org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials.Builder, org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentialsOrBuilder>( + fileCredentials_, + getParentForChildren(), + isClean()); + fileCredentials_ = null; + } + return fileCredentialsBuilder_; + } + // required string file_id = 2; + private java.lang.Object fileId_ = ""; + /** + * required string file_id = 2; + */ public boolean hasFileId() { - return result.hasFileId(); + return ((bitField0_ & 0x00000002) == 0x00000002); } + /** + * required string file_id = 2; + */ public java.lang.String getFileId() { - return result.getFileId(); + java.lang.Object ref = fileId_; + if (!(ref instanceof java.lang.String)) { + java.lang.String s = ((com.google.protobuf.ByteString) ref) + .toStringUtf8(); + fileId_ = s; + return s; + } else { + return (java.lang.String) ref; + } + } + /** + * required string file_id = 2; + */ + public com.google.protobuf.ByteString + getFileIdBytes() { + java.lang.Object ref = fileId_; + if (ref instanceof String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + fileId_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } } - public Builder setFileId(java.lang.String value) { + /** + * required string file_id = 2; + */ + public Builder setFileId( + java.lang.String value) { if (value == null) { throw new NullPointerException(); } - result.hasFileId = true; - result.fileId_ = value; + bitField0_ |= 0x00000002; + fileId_ = value; + onChanged(); return this; } + /** + * required string file_id = 2; + */ public Builder clearFileId() { - result.hasFileId = false; - result.fileId_ = getDefaultInstance().getFileId(); + bitField0_ = (bitField0_ & ~0x00000002); + fileId_ = getDefaultInstance().getFileId(); + onChanged(); + return this; + } + /** + * required string file_id = 2; + */ + public Builder setFileIdBytes( + com.google.protobuf.ByteString value) { + if (value == null) { + throw new NullPointerException(); + } + bitField0_ |= 0x00000002; + fileId_ = value; + onChanged(); return this; } - + // @@protoc_insertion_point(builder_scope:xtreemfs.pbrpc.xtreemfs_internal_get_file_sizeRequest) } - + static { defaultInstance = new xtreemfs_internal_get_file_sizeRequest(true); - org.xtreemfs.pbrpc.generatedinterfaces.OSD.internalForceInit(); defaultInstance.initFields(); } - + // @@protoc_insertion_point(class_scope:xtreemfs.pbrpc.xtreemfs_internal_get_file_sizeRequest) } - + + public interface xtreemfs_internal_get_file_sizeResponseOrBuilder + extends com.google.protobuf.MessageOrBuilder { + + // required fixed64 file_size = 1; + /** + * required fixed64 file_size = 1; + * + *
+     * File size in bytes (as seen by local OSD).
+     * 
+ */ + boolean hasFileSize(); + /** + * required fixed64 file_size = 1; + * + *
+     * File size in bytes (as seen by local OSD).
+     * 
+ */ + long getFileSize(); + } + /** + * Protobuf type {@code xtreemfs.pbrpc.xtreemfs_internal_get_file_sizeResponse} + */ public static final class xtreemfs_internal_get_file_sizeResponse extends - com.google.protobuf.GeneratedMessage { + com.google.protobuf.GeneratedMessage + implements xtreemfs_internal_get_file_sizeResponseOrBuilder { // Use xtreemfs_internal_get_file_sizeResponse.newBuilder() to construct. - private xtreemfs_internal_get_file_sizeResponse() { - initFields(); + private xtreemfs_internal_get_file_sizeResponse(com.google.protobuf.GeneratedMessage.Builder builder) { + super(builder); + this.unknownFields = builder.getUnknownFields(); } - private xtreemfs_internal_get_file_sizeResponse(boolean noInit) {} - + private xtreemfs_internal_get_file_sizeResponse(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); } + private static final xtreemfs_internal_get_file_sizeResponse defaultInstance; public static xtreemfs_internal_get_file_sizeResponse getDefaultInstance() { return defaultInstance; } - + public xtreemfs_internal_get_file_sizeResponse getDefaultInstanceForType() { return defaultInstance; } - + + private final com.google.protobuf.UnknownFieldSet unknownFields; + @java.lang.Override + public final com.google.protobuf.UnknownFieldSet + getUnknownFields() { + return this.unknownFields; + } + private xtreemfs_internal_get_file_sizeResponse( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + initFields(); + int mutable_bitField0_ = 0; + com.google.protobuf.UnknownFieldSet.Builder unknownFields = + com.google.protobuf.UnknownFieldSet.newBuilder(); + try { + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch (tag) { + case 0: + done = true; + break; + default: { + if (!parseUnknownField(input, unknownFields, + extensionRegistry, tag)) { + done = true; + } + break; + } + case 9: { + bitField0_ |= 0x00000001; + fileSize_ = input.readFixed64(); + break; + } + } + } + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(this); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException( + e.getMessage()).setUnfinishedMessage(this); + } finally { + this.unknownFields = unknownFields.build(); + makeExtensionsImmutable(); + } + } public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { return org.xtreemfs.pbrpc.generatedinterfaces.OSD.internal_static_xtreemfs_pbrpc_xtreemfs_internal_get_file_sizeResponse_descriptor; } - + protected com.google.protobuf.GeneratedMessage.FieldAccessorTable internalGetFieldAccessorTable() { - return org.xtreemfs.pbrpc.generatedinterfaces.OSD.internal_static_xtreemfs_pbrpc_xtreemfs_internal_get_file_sizeResponse_fieldAccessorTable; + return org.xtreemfs.pbrpc.generatedinterfaces.OSD.internal_static_xtreemfs_pbrpc_xtreemfs_internal_get_file_sizeResponse_fieldAccessorTable + .ensureFieldAccessorsInitialized( + org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_internal_get_file_sizeResponse.class, org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_internal_get_file_sizeResponse.Builder.class); + } + + public static com.google.protobuf.Parser PARSER = + new com.google.protobuf.AbstractParser() { + public xtreemfs_internal_get_file_sizeResponse parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return new xtreemfs_internal_get_file_sizeResponse(input, extensionRegistry); + } + }; + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; } - + + private int bitField0_; // required fixed64 file_size = 1; public static final int FILE_SIZE_FIELD_NUMBER = 1; - private boolean hasFileSize; - private long fileSize_ = 0L; - public boolean hasFileSize() { return hasFileSize; } - public long getFileSize() { return fileSize_; } - + private long fileSize_; + /** + * required fixed64 file_size = 1; + * + *
+     * File size in bytes (as seen by local OSD).
+     * 
+ */ + public boolean hasFileSize() { + return ((bitField0_ & 0x00000001) == 0x00000001); + } + /** + * required fixed64 file_size = 1; + * + *
+     * File size in bytes (as seen by local OSD).
+     * 
+ */ + public long getFileSize() { + return fileSize_; + } + private void initFields() { + fileSize_ = 0L; } + private byte memoizedIsInitialized = -1; public final boolean isInitialized() { - if (!hasFileSize) return false; + byte isInitialized = memoizedIsInitialized; + if (isInitialized != -1) return isInitialized == 1; + + if (!hasFileSize()) { + memoizedIsInitialized = 0; + return false; + } + memoizedIsInitialized = 1; return true; } - + public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException { getSerializedSize(); - if (hasFileSize()) { - output.writeFixed64(1, getFileSize()); + if (((bitField0_ & 0x00000001) == 0x00000001)) { + output.writeFixed64(1, fileSize_); } getUnknownFields().writeTo(output); } - + private int memoizedSerializedSize = -1; public int getSerializedSize() { int size = memoizedSerializedSize; if (size != -1) return size; - + size = 0; - if (hasFileSize()) { + if (((bitField0_ & 0x00000001) == 0x00000001)) { size += com.google.protobuf.CodedOutputStream - .computeFixed64Size(1, getFileSize()); + .computeFixed64Size(1, fileSize_); } size += getUnknownFields().getSerializedSize(); memoizedSerializedSize = size; return size; } - + + private static final long serialVersionUID = 0L; + @java.lang.Override + protected java.lang.Object writeReplace() + throws java.io.ObjectStreamException { + return super.writeReplace(); + } + public static org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_internal_get_file_sizeResponse parseFrom( com.google.protobuf.ByteString data) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data).buildParsed(); + return PARSER.parseFrom(data); } public static org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_internal_get_file_sizeResponse parseFrom( com.google.protobuf.ByteString data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(data, extensionRegistry); } public static org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_internal_get_file_sizeResponse parseFrom(byte[] data) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data).buildParsed(); + return PARSER.parseFrom(data); } public static org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_internal_get_file_sizeResponse parseFrom( byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(data, extensionRegistry); } public static org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_internal_get_file_sizeResponse parseFrom(java.io.InputStream input) throws java.io.IOException { - return newBuilder().mergeFrom(input).buildParsed(); + return PARSER.parseFrom(input); } public static org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_internal_get_file_sizeResponse parseFrom( java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - return newBuilder().mergeFrom(input, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(input, extensionRegistry); } public static org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_internal_get_file_sizeResponse parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException { - Builder builder = newBuilder(); - if (builder.mergeDelimitedFrom(input)) { - return builder.buildParsed(); - } else { - return null; - } + return PARSER.parseDelimitedFrom(input); } public static org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_internal_get_file_sizeResponse parseDelimitedFrom( java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - Builder builder = newBuilder(); - if (builder.mergeDelimitedFrom(input, extensionRegistry)) { - return builder.buildParsed(); - } else { - return null; - } + return PARSER.parseDelimitedFrom(input, extensionRegistry); } public static org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_internal_get_file_sizeResponse parseFrom( com.google.protobuf.CodedInputStream input) throws java.io.IOException { - return newBuilder().mergeFrom(input).buildParsed(); + return PARSER.parseFrom(input); } public static org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_internal_get_file_sizeResponse parseFrom( com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - return newBuilder().mergeFrom(input, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(input, extensionRegistry); } - + public static Builder newBuilder() { return Builder.create(); } public Builder newBuilderForType() { return newBuilder(); } public static Builder newBuilder(org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_internal_get_file_sizeResponse prototype) { return newBuilder().mergeFrom(prototype); } public Builder toBuilder() { return newBuilder(this); } - + + @java.lang.Override + protected Builder newBuilderForType( + com.google.protobuf.GeneratedMessage.BuilderParent parent) { + Builder builder = new Builder(parent); + return builder; + } + /** + * Protobuf type {@code xtreemfs.pbrpc.xtreemfs_internal_get_file_sizeResponse} + */ public static final class Builder extends - com.google.protobuf.GeneratedMessage.Builder { - private org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_internal_get_file_sizeResponse result; - + com.google.protobuf.GeneratedMessage.Builder + implements org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_internal_get_file_sizeResponseOrBuilder { + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return org.xtreemfs.pbrpc.generatedinterfaces.OSD.internal_static_xtreemfs_pbrpc_xtreemfs_internal_get_file_sizeResponse_descriptor; + } + + protected com.google.protobuf.GeneratedMessage.FieldAccessorTable + internalGetFieldAccessorTable() { + return org.xtreemfs.pbrpc.generatedinterfaces.OSD.internal_static_xtreemfs_pbrpc_xtreemfs_internal_get_file_sizeResponse_fieldAccessorTable + .ensureFieldAccessorsInitialized( + org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_internal_get_file_sizeResponse.class, org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_internal_get_file_sizeResponse.Builder.class); + } + // Construct using org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_internal_get_file_sizeResponse.newBuilder() - private Builder() {} - - private static Builder create() { - Builder builder = new Builder(); - builder.result = new org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_internal_get_file_sizeResponse(); - return builder; + private Builder() { + maybeForceBuilderInitialization(); } - - protected org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_internal_get_file_sizeResponse internalGetResult() { - return result; + + private Builder( + com.google.protobuf.GeneratedMessage.BuilderParent parent) { + super(parent); + maybeForceBuilderInitialization(); } - - public Builder clear() { - if (result == null) { - throw new IllegalStateException( - "Cannot call clear() after build()."); + private void maybeForceBuilderInitialization() { + if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) { } - result = new org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_internal_get_file_sizeResponse(); + } + private static Builder create() { + return new Builder(); + } + + public Builder clear() { + super.clear(); + fileSize_ = 0L; + bitField0_ = (bitField0_ & ~0x00000001); return this; } - + public Builder clone() { - return create().mergeFrom(result); + return create().mergeFrom(buildPartial()); } - + public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() { - return org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_internal_get_file_sizeResponse.getDescriptor(); + return org.xtreemfs.pbrpc.generatedinterfaces.OSD.internal_static_xtreemfs_pbrpc_xtreemfs_internal_get_file_sizeResponse_descriptor; } - + public org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_internal_get_file_sizeResponse getDefaultInstanceForType() { return org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_internal_get_file_sizeResponse.getDefaultInstance(); } - - public boolean isInitialized() { - return result.isInitialized(); - } + public org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_internal_get_file_sizeResponse build() { - if (result != null && !isInitialized()) { + org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_internal_get_file_sizeResponse result = buildPartial(); + if (!result.isInitialized()) { throw newUninitializedMessageException(result); } - return buildPartial(); - } - - private org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_internal_get_file_sizeResponse buildParsed() - throws com.google.protobuf.InvalidProtocolBufferException { - if (!isInitialized()) { - throw newUninitializedMessageException( - result).asInvalidProtocolBufferException(); - } - return buildPartial(); + return result; } - + public org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_internal_get_file_sizeResponse buildPartial() { - if (result == null) { - throw new IllegalStateException( - "build() has already been called on this Builder."); - } - org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_internal_get_file_sizeResponse returnMe = result; - result = null; - return returnMe; + org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_internal_get_file_sizeResponse result = new org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_internal_get_file_sizeResponse(this); + int from_bitField0_ = bitField0_; + int to_bitField0_ = 0; + if (((from_bitField0_ & 0x00000001) == 0x00000001)) { + to_bitField0_ |= 0x00000001; + } + result.fileSize_ = fileSize_; + result.bitField0_ = to_bitField0_; + onBuilt(); + return result; } - + public Builder mergeFrom(com.google.protobuf.Message other) { if (other instanceof org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_internal_get_file_sizeResponse) { return mergeFrom((org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_internal_get_file_sizeResponse)other); @@ -12247,7 +24652,7 @@ public final class OSD { return this; } } - + public Builder mergeFrom(org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_internal_get_file_sizeResponse other) { if (other == org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_internal_get_file_sizeResponse.getDefaultInstance()) return this; if (other.hasFileSize()) { @@ -12256,392 +24661,868 @@ public final class OSD { this.mergeUnknownFields(other.getUnknownFields()); return this; } - + + public final boolean isInitialized() { + if (!hasFileSize()) { + + return false; + } + return true; + } + public Builder mergeFrom( com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - com.google.protobuf.UnknownFieldSet.Builder unknownFields = - com.google.protobuf.UnknownFieldSet.newBuilder( - this.getUnknownFields()); - while (true) { - int tag = input.readTag(); - switch (tag) { - case 0: - this.setUnknownFields(unknownFields.build()); - return this; - default: { - if (!parseUnknownField(input, unknownFields, - extensionRegistry, tag)) { - this.setUnknownFields(unknownFields.build()); - return this; - } - break; - } - case 9: { - setFileSize(input.readFixed64()); - break; - } + org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_internal_get_file_sizeResponse parsedMessage = null; + try { + parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + parsedMessage = (org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_internal_get_file_sizeResponse) e.getUnfinishedMessage(); + throw e; + } finally { + if (parsedMessage != null) { + mergeFrom(parsedMessage); } } + return this; } - - + private int bitField0_; + // required fixed64 file_size = 1; + private long fileSize_ ; + /** + * required fixed64 file_size = 1; + * + *
+       * File size in bytes (as seen by local OSD).
+       * 
+ */ public boolean hasFileSize() { - return result.hasFileSize(); - } + return ((bitField0_ & 0x00000001) == 0x00000001); + } + /** + * required fixed64 file_size = 1; + * + *
+       * File size in bytes (as seen by local OSD).
+       * 
+ */ public long getFileSize() { - return result.getFileSize(); - } + return fileSize_; + } + /** + * required fixed64 file_size = 1; + * + *
+       * File size in bytes (as seen by local OSD).
+       * 
+ */ public Builder setFileSize(long value) { - result.hasFileSize = true; - result.fileSize_ = value; - return this; - } + bitField0_ |= 0x00000001; + fileSize_ = value; + onChanged(); + return this; + } + /** + * required fixed64 file_size = 1; + * + *
+       * File size in bytes (as seen by local OSD).
+       * 
+ */ public Builder clearFileSize() { - result.hasFileSize = false; - result.fileSize_ = 0L; + bitField0_ = (bitField0_ & ~0x00000001); + fileSize_ = 0L; + onChanged(); return this; } - + // @@protoc_insertion_point(builder_scope:xtreemfs.pbrpc.xtreemfs_internal_get_file_sizeResponse) } - + static { defaultInstance = new xtreemfs_internal_get_file_sizeResponse(true); - org.xtreemfs.pbrpc.generatedinterfaces.OSD.internalForceInit(); defaultInstance.initFields(); } - + // @@protoc_insertion_point(class_scope:xtreemfs.pbrpc.xtreemfs_internal_get_file_sizeResponse) } - + + public interface xtreemfs_internal_read_localRequestOrBuilder + extends com.google.protobuf.MessageOrBuilder { + + // required .xtreemfs.pbrpc.FileCredentials file_credentials = 1; + /** + * required .xtreemfs.pbrpc.FileCredentials file_credentials = 1; + */ + boolean hasFileCredentials(); + /** + * required .xtreemfs.pbrpc.FileCredentials file_credentials = 1; + */ + org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials getFileCredentials(); + /** + * required .xtreemfs.pbrpc.FileCredentials file_credentials = 1; + */ + org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentialsOrBuilder getFileCredentialsOrBuilder(); + + // required string file_id = 2; + /** + * required string file_id = 2; + */ + boolean hasFileId(); + /** + * required string file_id = 2; + */ + java.lang.String getFileId(); + /** + * required string file_id = 2; + */ + com.google.protobuf.ByteString + getFileIdBytes(); + + // required fixed64 object_number = 3; + /** + * required fixed64 object_number = 3; + */ + boolean hasObjectNumber(); + /** + * required fixed64 object_number = 3; + */ + long getObjectNumber(); + + // required fixed64 object_version = 4; + /** + * required fixed64 object_version = 4; + */ + boolean hasObjectVersion(); + /** + * required fixed64 object_version = 4; + */ + long getObjectVersion(); + + // required fixed32 offset = 5; + /** + * required fixed32 offset = 5; + */ + boolean hasOffset(); + /** + * required fixed32 offset = 5; + */ + int getOffset(); + + // required fixed32 length = 6; + /** + * required fixed32 length = 6; + */ + boolean hasLength(); + /** + * required fixed32 length = 6; + */ + int getLength(); + + // required bool attach_object_list = 7; + /** + * required bool attach_object_list = 7; + */ + boolean hasAttachObjectList(); + /** + * required bool attach_object_list = 7; + */ + boolean getAttachObjectList(); + + // repeated .xtreemfs.pbrpc.ObjectList required_objects = 8; + /** + * repeated .xtreemfs.pbrpc.ObjectList required_objects = 8; + */ + java.util.List + getRequiredObjectsList(); + /** + * repeated .xtreemfs.pbrpc.ObjectList required_objects = 8; + */ + org.xtreemfs.pbrpc.generatedinterfaces.OSD.ObjectList getRequiredObjects(int index); + /** + * repeated .xtreemfs.pbrpc.ObjectList required_objects = 8; + */ + int getRequiredObjectsCount(); + /** + * repeated .xtreemfs.pbrpc.ObjectList required_objects = 8; + */ + java.util.List + getRequiredObjectsOrBuilderList(); + /** + * repeated .xtreemfs.pbrpc.ObjectList required_objects = 8; + */ + org.xtreemfs.pbrpc.generatedinterfaces.OSD.ObjectListOrBuilder getRequiredObjectsOrBuilder( + int index); + } + /** + * Protobuf type {@code xtreemfs.pbrpc.xtreemfs_internal_read_localRequest} + */ public static final class xtreemfs_internal_read_localRequest extends - com.google.protobuf.GeneratedMessage { + com.google.protobuf.GeneratedMessage + implements xtreemfs_internal_read_localRequestOrBuilder { // Use xtreemfs_internal_read_localRequest.newBuilder() to construct. - private xtreemfs_internal_read_localRequest() { - initFields(); + private xtreemfs_internal_read_localRequest(com.google.protobuf.GeneratedMessage.Builder builder) { + super(builder); + this.unknownFields = builder.getUnknownFields(); } - private xtreemfs_internal_read_localRequest(boolean noInit) {} - + private xtreemfs_internal_read_localRequest(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); } + private static final xtreemfs_internal_read_localRequest defaultInstance; public static xtreemfs_internal_read_localRequest getDefaultInstance() { return defaultInstance; } - + public xtreemfs_internal_read_localRequest getDefaultInstanceForType() { return defaultInstance; } - + + private final com.google.protobuf.UnknownFieldSet unknownFields; + @java.lang.Override + public final com.google.protobuf.UnknownFieldSet + getUnknownFields() { + return this.unknownFields; + } + private xtreemfs_internal_read_localRequest( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + initFields(); + int mutable_bitField0_ = 0; + com.google.protobuf.UnknownFieldSet.Builder unknownFields = + com.google.protobuf.UnknownFieldSet.newBuilder(); + try { + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch (tag) { + case 0: + done = true; + break; + default: { + if (!parseUnknownField(input, unknownFields, + extensionRegistry, tag)) { + done = true; + } + break; + } + case 10: { + org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials.Builder subBuilder = null; + if (((bitField0_ & 0x00000001) == 0x00000001)) { + subBuilder = fileCredentials_.toBuilder(); + } + fileCredentials_ = input.readMessage(org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials.PARSER, extensionRegistry); + if (subBuilder != null) { + subBuilder.mergeFrom(fileCredentials_); + fileCredentials_ = subBuilder.buildPartial(); + } + bitField0_ |= 0x00000001; + break; + } + case 18: { + bitField0_ |= 0x00000002; + fileId_ = input.readBytes(); + break; + } + case 25: { + bitField0_ |= 0x00000004; + objectNumber_ = input.readFixed64(); + break; + } + case 33: { + bitField0_ |= 0x00000008; + objectVersion_ = input.readFixed64(); + break; + } + case 45: { + bitField0_ |= 0x00000010; + offset_ = input.readFixed32(); + break; + } + case 53: { + bitField0_ |= 0x00000020; + length_ = input.readFixed32(); + break; + } + case 56: { + bitField0_ |= 0x00000040; + attachObjectList_ = input.readBool(); + break; + } + case 66: { + if (!((mutable_bitField0_ & 0x00000080) == 0x00000080)) { + requiredObjects_ = new java.util.ArrayList(); + mutable_bitField0_ |= 0x00000080; + } + requiredObjects_.add(input.readMessage(org.xtreemfs.pbrpc.generatedinterfaces.OSD.ObjectList.PARSER, extensionRegistry)); + break; + } + } + } + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(this); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException( + e.getMessage()).setUnfinishedMessage(this); + } finally { + if (((mutable_bitField0_ & 0x00000080) == 0x00000080)) { + requiredObjects_ = java.util.Collections.unmodifiableList(requiredObjects_); + } + this.unknownFields = unknownFields.build(); + makeExtensionsImmutable(); + } + } public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { return org.xtreemfs.pbrpc.generatedinterfaces.OSD.internal_static_xtreemfs_pbrpc_xtreemfs_internal_read_localRequest_descriptor; } - + protected com.google.protobuf.GeneratedMessage.FieldAccessorTable internalGetFieldAccessorTable() { - return org.xtreemfs.pbrpc.generatedinterfaces.OSD.internal_static_xtreemfs_pbrpc_xtreemfs_internal_read_localRequest_fieldAccessorTable; + return org.xtreemfs.pbrpc.generatedinterfaces.OSD.internal_static_xtreemfs_pbrpc_xtreemfs_internal_read_localRequest_fieldAccessorTable + .ensureFieldAccessorsInitialized( + org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_internal_read_localRequest.class, org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_internal_read_localRequest.Builder.class); + } + + public static com.google.protobuf.Parser PARSER = + new com.google.protobuf.AbstractParser() { + public xtreemfs_internal_read_localRequest parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return new xtreemfs_internal_read_localRequest(input, extensionRegistry); + } + }; + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; } - + + private int bitField0_; // required .xtreemfs.pbrpc.FileCredentials file_credentials = 1; public static final int FILE_CREDENTIALS_FIELD_NUMBER = 1; - private boolean hasFileCredentials; private org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials fileCredentials_; - public boolean hasFileCredentials() { return hasFileCredentials; } - public org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials getFileCredentials() { return fileCredentials_; } - + /** + * required .xtreemfs.pbrpc.FileCredentials file_credentials = 1; + */ + public boolean hasFileCredentials() { + return ((bitField0_ & 0x00000001) == 0x00000001); + } + /** + * required .xtreemfs.pbrpc.FileCredentials file_credentials = 1; + */ + public org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials getFileCredentials() { + return fileCredentials_; + } + /** + * required .xtreemfs.pbrpc.FileCredentials file_credentials = 1; + */ + public org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentialsOrBuilder getFileCredentialsOrBuilder() { + return fileCredentials_; + } + // required string file_id = 2; public static final int FILE_ID_FIELD_NUMBER = 2; - private boolean hasFileId; - private java.lang.String fileId_ = ""; - public boolean hasFileId() { return hasFileId; } - public java.lang.String getFileId() { return fileId_; } - + private java.lang.Object fileId_; + /** + * required string file_id = 2; + */ + public boolean hasFileId() { + return ((bitField0_ & 0x00000002) == 0x00000002); + } + /** + * required string file_id = 2; + */ + public java.lang.String getFileId() { + java.lang.Object ref = fileId_; + if (ref instanceof java.lang.String) { + return (java.lang.String) ref; + } else { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + if (bs.isValidUtf8()) { + fileId_ = s; + } + return s; + } + } + /** + * required string file_id = 2; + */ + public com.google.protobuf.ByteString + getFileIdBytes() { + java.lang.Object ref = fileId_; + if (ref instanceof java.lang.String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + fileId_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + // required fixed64 object_number = 3; public static final int OBJECT_NUMBER_FIELD_NUMBER = 3; - private boolean hasObjectNumber; - private long objectNumber_ = 0L; - public boolean hasObjectNumber() { return hasObjectNumber; } - public long getObjectNumber() { return objectNumber_; } - + private long objectNumber_; + /** + * required fixed64 object_number = 3; + */ + public boolean hasObjectNumber() { + return ((bitField0_ & 0x00000004) == 0x00000004); + } + /** + * required fixed64 object_number = 3; + */ + public long getObjectNumber() { + return objectNumber_; + } + // required fixed64 object_version = 4; public static final int OBJECT_VERSION_FIELD_NUMBER = 4; - private boolean hasObjectVersion; - private long objectVersion_ = 0L; - public boolean hasObjectVersion() { return hasObjectVersion; } - public long getObjectVersion() { return objectVersion_; } - + private long objectVersion_; + /** + * required fixed64 object_version = 4; + */ + public boolean hasObjectVersion() { + return ((bitField0_ & 0x00000008) == 0x00000008); + } + /** + * required fixed64 object_version = 4; + */ + public long getObjectVersion() { + return objectVersion_; + } + // required fixed32 offset = 5; public static final int OFFSET_FIELD_NUMBER = 5; - private boolean hasOffset; - private int offset_ = 0; - public boolean hasOffset() { return hasOffset; } - public int getOffset() { return offset_; } - + private int offset_; + /** + * required fixed32 offset = 5; + */ + public boolean hasOffset() { + return ((bitField0_ & 0x00000010) == 0x00000010); + } + /** + * required fixed32 offset = 5; + */ + public int getOffset() { + return offset_; + } + // required fixed32 length = 6; public static final int LENGTH_FIELD_NUMBER = 6; - private boolean hasLength; - private int length_ = 0; - public boolean hasLength() { return hasLength; } - public int getLength() { return length_; } - + private int length_; + /** + * required fixed32 length = 6; + */ + public boolean hasLength() { + return ((bitField0_ & 0x00000020) == 0x00000020); + } + /** + * required fixed32 length = 6; + */ + public int getLength() { + return length_; + } + // required bool attach_object_list = 7; public static final int ATTACH_OBJECT_LIST_FIELD_NUMBER = 7; - private boolean hasAttachObjectList; - private boolean attachObjectList_ = false; - public boolean hasAttachObjectList() { return hasAttachObjectList; } - public boolean getAttachObjectList() { return attachObjectList_; } - + private boolean attachObjectList_; + /** + * required bool attach_object_list = 7; + */ + public boolean hasAttachObjectList() { + return ((bitField0_ & 0x00000040) == 0x00000040); + } + /** + * required bool attach_object_list = 7; + */ + public boolean getAttachObjectList() { + return attachObjectList_; + } + // repeated .xtreemfs.pbrpc.ObjectList required_objects = 8; public static final int REQUIRED_OBJECTS_FIELD_NUMBER = 8; - private java.util.List requiredObjects_ = - java.util.Collections.emptyList(); + private java.util.List requiredObjects_; + /** + * repeated .xtreemfs.pbrpc.ObjectList required_objects = 8; + */ public java.util.List getRequiredObjectsList() { return requiredObjects_; } - public int getRequiredObjectsCount() { return requiredObjects_.size(); } + /** + * repeated .xtreemfs.pbrpc.ObjectList required_objects = 8; + */ + public java.util.List + getRequiredObjectsOrBuilderList() { + return requiredObjects_; + } + /** + * repeated .xtreemfs.pbrpc.ObjectList required_objects = 8; + */ + public int getRequiredObjectsCount() { + return requiredObjects_.size(); + } + /** + * repeated .xtreemfs.pbrpc.ObjectList required_objects = 8; + */ public org.xtreemfs.pbrpc.generatedinterfaces.OSD.ObjectList getRequiredObjects(int index) { return requiredObjects_.get(index); } - + /** + * repeated .xtreemfs.pbrpc.ObjectList required_objects = 8; + */ + public org.xtreemfs.pbrpc.generatedinterfaces.OSD.ObjectListOrBuilder getRequiredObjectsOrBuilder( + int index) { + return requiredObjects_.get(index); + } + private void initFields() { fileCredentials_ = org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials.getDefaultInstance(); - } + fileId_ = ""; + objectNumber_ = 0L; + objectVersion_ = 0L; + offset_ = 0; + length_ = 0; + attachObjectList_ = false; + requiredObjects_ = java.util.Collections.emptyList(); + } + private byte memoizedIsInitialized = -1; public final boolean isInitialized() { - if (!hasFileCredentials) return false; - if (!hasFileId) return false; - if (!hasObjectNumber) return false; - if (!hasObjectVersion) return false; - if (!hasOffset) return false; - if (!hasLength) return false; - if (!hasAttachObjectList) return false; - if (!getFileCredentials().isInitialized()) return false; - for (org.xtreemfs.pbrpc.generatedinterfaces.OSD.ObjectList element : getRequiredObjectsList()) { - if (!element.isInitialized()) return false; + byte isInitialized = memoizedIsInitialized; + if (isInitialized != -1) return isInitialized == 1; + + if (!hasFileCredentials()) { + memoizedIsInitialized = 0; + return false; + } + if (!hasFileId()) { + memoizedIsInitialized = 0; + return false; + } + if (!hasObjectNumber()) { + memoizedIsInitialized = 0; + return false; + } + if (!hasObjectVersion()) { + memoizedIsInitialized = 0; + return false; } + if (!hasOffset()) { + memoizedIsInitialized = 0; + return false; + } + if (!hasLength()) { + memoizedIsInitialized = 0; + return false; + } + if (!hasAttachObjectList()) { + memoizedIsInitialized = 0; + return false; + } + if (!getFileCredentials().isInitialized()) { + memoizedIsInitialized = 0; + return false; + } + for (int i = 0; i < getRequiredObjectsCount(); i++) { + if (!getRequiredObjects(i).isInitialized()) { + memoizedIsInitialized = 0; + return false; + } + } + memoizedIsInitialized = 1; return true; } - + public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException { getSerializedSize(); - if (hasFileCredentials()) { - output.writeMessage(1, getFileCredentials()); + if (((bitField0_ & 0x00000001) == 0x00000001)) { + output.writeMessage(1, fileCredentials_); } - if (hasFileId()) { - output.writeString(2, getFileId()); + if (((bitField0_ & 0x00000002) == 0x00000002)) { + output.writeBytes(2, getFileIdBytes()); } - if (hasObjectNumber()) { - output.writeFixed64(3, getObjectNumber()); + if (((bitField0_ & 0x00000004) == 0x00000004)) { + output.writeFixed64(3, objectNumber_); } - if (hasObjectVersion()) { - output.writeFixed64(4, getObjectVersion()); + if (((bitField0_ & 0x00000008) == 0x00000008)) { + output.writeFixed64(4, objectVersion_); } - if (hasOffset()) { - output.writeFixed32(5, getOffset()); + if (((bitField0_ & 0x00000010) == 0x00000010)) { + output.writeFixed32(5, offset_); } - if (hasLength()) { - output.writeFixed32(6, getLength()); + if (((bitField0_ & 0x00000020) == 0x00000020)) { + output.writeFixed32(6, length_); } - if (hasAttachObjectList()) { - output.writeBool(7, getAttachObjectList()); + if (((bitField0_ & 0x00000040) == 0x00000040)) { + output.writeBool(7, attachObjectList_); } - for (org.xtreemfs.pbrpc.generatedinterfaces.OSD.ObjectList element : getRequiredObjectsList()) { - output.writeMessage(8, element); + for (int i = 0; i < requiredObjects_.size(); i++) { + output.writeMessage(8, requiredObjects_.get(i)); } getUnknownFields().writeTo(output); } - + private int memoizedSerializedSize = -1; public int getSerializedSize() { int size = memoizedSerializedSize; if (size != -1) return size; - + size = 0; - if (hasFileCredentials()) { + if (((bitField0_ & 0x00000001) == 0x00000001)) { size += com.google.protobuf.CodedOutputStream - .computeMessageSize(1, getFileCredentials()); + .computeMessageSize(1, fileCredentials_); } - if (hasFileId()) { + if (((bitField0_ & 0x00000002) == 0x00000002)) { size += com.google.protobuf.CodedOutputStream - .computeStringSize(2, getFileId()); + .computeBytesSize(2, getFileIdBytes()); } - if (hasObjectNumber()) { + if (((bitField0_ & 0x00000004) == 0x00000004)) { size += com.google.protobuf.CodedOutputStream - .computeFixed64Size(3, getObjectNumber()); + .computeFixed64Size(3, objectNumber_); } - if (hasObjectVersion()) { + if (((bitField0_ & 0x00000008) == 0x00000008)) { size += com.google.protobuf.CodedOutputStream - .computeFixed64Size(4, getObjectVersion()); + .computeFixed64Size(4, objectVersion_); } - if (hasOffset()) { + if (((bitField0_ & 0x00000010) == 0x00000010)) { size += com.google.protobuf.CodedOutputStream - .computeFixed32Size(5, getOffset()); + .computeFixed32Size(5, offset_); } - if (hasLength()) { + if (((bitField0_ & 0x00000020) == 0x00000020)) { size += com.google.protobuf.CodedOutputStream - .computeFixed32Size(6, getLength()); + .computeFixed32Size(6, length_); } - if (hasAttachObjectList()) { + if (((bitField0_ & 0x00000040) == 0x00000040)) { size += com.google.protobuf.CodedOutputStream - .computeBoolSize(7, getAttachObjectList()); + .computeBoolSize(7, attachObjectList_); } - for (org.xtreemfs.pbrpc.generatedinterfaces.OSD.ObjectList element : getRequiredObjectsList()) { + for (int i = 0; i < requiredObjects_.size(); i++) { size += com.google.protobuf.CodedOutputStream - .computeMessageSize(8, element); + .computeMessageSize(8, requiredObjects_.get(i)); } size += getUnknownFields().getSerializedSize(); memoizedSerializedSize = size; return size; } - + + private static final long serialVersionUID = 0L; + @java.lang.Override + protected java.lang.Object writeReplace() + throws java.io.ObjectStreamException { + return super.writeReplace(); + } + public static org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_internal_read_localRequest parseFrom( com.google.protobuf.ByteString data) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data).buildParsed(); + return PARSER.parseFrom(data); } public static org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_internal_read_localRequest parseFrom( com.google.protobuf.ByteString data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(data, extensionRegistry); } public static org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_internal_read_localRequest parseFrom(byte[] data) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data).buildParsed(); + return PARSER.parseFrom(data); } public static org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_internal_read_localRequest parseFrom( byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(data, extensionRegistry); } public static org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_internal_read_localRequest parseFrom(java.io.InputStream input) throws java.io.IOException { - return newBuilder().mergeFrom(input).buildParsed(); + return PARSER.parseFrom(input); } public static org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_internal_read_localRequest parseFrom( java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - return newBuilder().mergeFrom(input, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(input, extensionRegistry); } public static org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_internal_read_localRequest parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException { - Builder builder = newBuilder(); - if (builder.mergeDelimitedFrom(input)) { - return builder.buildParsed(); - } else { - return null; - } + return PARSER.parseDelimitedFrom(input); } public static org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_internal_read_localRequest parseDelimitedFrom( java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - Builder builder = newBuilder(); - if (builder.mergeDelimitedFrom(input, extensionRegistry)) { - return builder.buildParsed(); - } else { - return null; - } + return PARSER.parseDelimitedFrom(input, extensionRegistry); } public static org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_internal_read_localRequest parseFrom( com.google.protobuf.CodedInputStream input) throws java.io.IOException { - return newBuilder().mergeFrom(input).buildParsed(); + return PARSER.parseFrom(input); } public static org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_internal_read_localRequest parseFrom( com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - return newBuilder().mergeFrom(input, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(input, extensionRegistry); } - + public static Builder newBuilder() { return Builder.create(); } public Builder newBuilderForType() { return newBuilder(); } public static Builder newBuilder(org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_internal_read_localRequest prototype) { return newBuilder().mergeFrom(prototype); } public Builder toBuilder() { return newBuilder(this); } - + + @java.lang.Override + protected Builder newBuilderForType( + com.google.protobuf.GeneratedMessage.BuilderParent parent) { + Builder builder = new Builder(parent); + return builder; + } + /** + * Protobuf type {@code xtreemfs.pbrpc.xtreemfs_internal_read_localRequest} + */ public static final class Builder extends - com.google.protobuf.GeneratedMessage.Builder { - private org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_internal_read_localRequest result; - + com.google.protobuf.GeneratedMessage.Builder + implements org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_internal_read_localRequestOrBuilder { + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return org.xtreemfs.pbrpc.generatedinterfaces.OSD.internal_static_xtreemfs_pbrpc_xtreemfs_internal_read_localRequest_descriptor; + } + + protected com.google.protobuf.GeneratedMessage.FieldAccessorTable + internalGetFieldAccessorTable() { + return org.xtreemfs.pbrpc.generatedinterfaces.OSD.internal_static_xtreemfs_pbrpc_xtreemfs_internal_read_localRequest_fieldAccessorTable + .ensureFieldAccessorsInitialized( + org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_internal_read_localRequest.class, org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_internal_read_localRequest.Builder.class); + } + // Construct using org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_internal_read_localRequest.newBuilder() - private Builder() {} - - private static Builder create() { - Builder builder = new Builder(); - builder.result = new org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_internal_read_localRequest(); - return builder; + private Builder() { + maybeForceBuilderInitialization(); } - - protected org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_internal_read_localRequest internalGetResult() { - return result; + + private Builder( + com.google.protobuf.GeneratedMessage.BuilderParent parent) { + super(parent); + maybeForceBuilderInitialization(); + } + private void maybeForceBuilderInitialization() { + if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) { + getFileCredentialsFieldBuilder(); + getRequiredObjectsFieldBuilder(); + } + } + private static Builder create() { + return new Builder(); } - + public Builder clear() { - if (result == null) { - throw new IllegalStateException( - "Cannot call clear() after build()."); + super.clear(); + if (fileCredentialsBuilder_ == null) { + fileCredentials_ = org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials.getDefaultInstance(); + } else { + fileCredentialsBuilder_.clear(); + } + bitField0_ = (bitField0_ & ~0x00000001); + fileId_ = ""; + bitField0_ = (bitField0_ & ~0x00000002); + objectNumber_ = 0L; + bitField0_ = (bitField0_ & ~0x00000004); + objectVersion_ = 0L; + bitField0_ = (bitField0_ & ~0x00000008); + offset_ = 0; + bitField0_ = (bitField0_ & ~0x00000010); + length_ = 0; + bitField0_ = (bitField0_ & ~0x00000020); + attachObjectList_ = false; + bitField0_ = (bitField0_ & ~0x00000040); + if (requiredObjectsBuilder_ == null) { + requiredObjects_ = java.util.Collections.emptyList(); + bitField0_ = (bitField0_ & ~0x00000080); + } else { + requiredObjectsBuilder_.clear(); } - result = new org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_internal_read_localRequest(); return this; } - + public Builder clone() { - return create().mergeFrom(result); + return create().mergeFrom(buildPartial()); } - + public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() { - return org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_internal_read_localRequest.getDescriptor(); + return org.xtreemfs.pbrpc.generatedinterfaces.OSD.internal_static_xtreemfs_pbrpc_xtreemfs_internal_read_localRequest_descriptor; } - + public org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_internal_read_localRequest getDefaultInstanceForType() { return org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_internal_read_localRequest.getDefaultInstance(); } - - public boolean isInitialized() { - return result.isInitialized(); - } + public org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_internal_read_localRequest build() { - if (result != null && !isInitialized()) { + org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_internal_read_localRequest result = buildPartial(); + if (!result.isInitialized()) { throw newUninitializedMessageException(result); } - return buildPartial(); - } - - private org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_internal_read_localRequest buildParsed() - throws com.google.protobuf.InvalidProtocolBufferException { - if (!isInitialized()) { - throw newUninitializedMessageException( - result).asInvalidProtocolBufferException(); - } - return buildPartial(); + return result; } - + public org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_internal_read_localRequest buildPartial() { - if (result == null) { - throw new IllegalStateException( - "build() has already been called on this Builder."); + org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_internal_read_localRequest result = new org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_internal_read_localRequest(this); + int from_bitField0_ = bitField0_; + int to_bitField0_ = 0; + if (((from_bitField0_ & 0x00000001) == 0x00000001)) { + to_bitField0_ |= 0x00000001; + } + if (fileCredentialsBuilder_ == null) { + result.fileCredentials_ = fileCredentials_; + } else { + result.fileCredentials_ = fileCredentialsBuilder_.build(); + } + if (((from_bitField0_ & 0x00000002) == 0x00000002)) { + to_bitField0_ |= 0x00000002; + } + result.fileId_ = fileId_; + if (((from_bitField0_ & 0x00000004) == 0x00000004)) { + to_bitField0_ |= 0x00000004; + } + result.objectNumber_ = objectNumber_; + if (((from_bitField0_ & 0x00000008) == 0x00000008)) { + to_bitField0_ |= 0x00000008; + } + result.objectVersion_ = objectVersion_; + if (((from_bitField0_ & 0x00000010) == 0x00000010)) { + to_bitField0_ |= 0x00000010; + } + result.offset_ = offset_; + if (((from_bitField0_ & 0x00000020) == 0x00000020)) { + to_bitField0_ |= 0x00000020; } - if (result.requiredObjects_ != java.util.Collections.EMPTY_LIST) { - result.requiredObjects_ = - java.util.Collections.unmodifiableList(result.requiredObjects_); + result.length_ = length_; + if (((from_bitField0_ & 0x00000040) == 0x00000040)) { + to_bitField0_ |= 0x00000040; } - org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_internal_read_localRequest returnMe = result; - result = null; - return returnMe; + result.attachObjectList_ = attachObjectList_; + if (requiredObjectsBuilder_ == null) { + if (((bitField0_ & 0x00000080) == 0x00000080)) { + requiredObjects_ = java.util.Collections.unmodifiableList(requiredObjects_); + bitField0_ = (bitField0_ & ~0x00000080); + } + result.requiredObjects_ = requiredObjects_; + } else { + result.requiredObjects_ = requiredObjectsBuilder_.build(); + } + result.bitField0_ = to_bitField0_; + onBuilt(); + return result; } - + public Builder mergeFrom(com.google.protobuf.Message other) { if (other instanceof org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_internal_read_localRequest) { return mergeFrom((org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_internal_read_localRequest)other); @@ -12650,14 +25531,16 @@ public final class OSD { return this; } } - + public Builder mergeFrom(org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_internal_read_localRequest other) { if (other == org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_internal_read_localRequest.getDefaultInstance()) return this; if (other.hasFileCredentials()) { mergeFileCredentials(other.getFileCredentials()); } if (other.hasFileId()) { - setFileId(other.getFileId()); + bitField0_ |= 0x00000002; + fileId_ = other.fileId_; + onChanged(); } if (other.hasObjectNumber()) { setObjectNumber(other.getObjectNumber()); @@ -12674,516 +25557,1131 @@ public final class OSD { if (other.hasAttachObjectList()) { setAttachObjectList(other.getAttachObjectList()); } - if (!other.requiredObjects_.isEmpty()) { - if (result.requiredObjects_.isEmpty()) { - result.requiredObjects_ = new java.util.ArrayList(); + if (requiredObjectsBuilder_ == null) { + if (!other.requiredObjects_.isEmpty()) { + if (requiredObjects_.isEmpty()) { + requiredObjects_ = other.requiredObjects_; + bitField0_ = (bitField0_ & ~0x00000080); + } else { + ensureRequiredObjectsIsMutable(); + requiredObjects_.addAll(other.requiredObjects_); + } + onChanged(); + } + } else { + if (!other.requiredObjects_.isEmpty()) { + if (requiredObjectsBuilder_.isEmpty()) { + requiredObjectsBuilder_.dispose(); + requiredObjectsBuilder_ = null; + requiredObjects_ = other.requiredObjects_; + bitField0_ = (bitField0_ & ~0x00000080); + requiredObjectsBuilder_ = + com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ? + getRequiredObjectsFieldBuilder() : null; + } else { + requiredObjectsBuilder_.addAllMessages(other.requiredObjects_); + } } - result.requiredObjects_.addAll(other.requiredObjects_); } this.mergeUnknownFields(other.getUnknownFields()); return this; } - - public Builder mergeFrom( - com.google.protobuf.CodedInputStream input, - com.google.protobuf.ExtensionRegistryLite extensionRegistry) - throws java.io.IOException { - com.google.protobuf.UnknownFieldSet.Builder unknownFields = - com.google.protobuf.UnknownFieldSet.newBuilder( - this.getUnknownFields()); - while (true) { - int tag = input.readTag(); - switch (tag) { - case 0: - this.setUnknownFields(unknownFields.build()); - return this; - default: { - if (!parseUnknownField(input, unknownFields, - extensionRegistry, tag)) { - this.setUnknownFields(unknownFields.build()); - return this; - } - break; - } - case 10: { - org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials.Builder subBuilder = org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials.newBuilder(); - if (hasFileCredentials()) { - subBuilder.mergeFrom(getFileCredentials()); - } - input.readMessage(subBuilder, extensionRegistry); - setFileCredentials(subBuilder.buildPartial()); - break; - } - case 18: { - setFileId(input.readString()); - break; - } - case 25: { - setObjectNumber(input.readFixed64()); - break; - } - case 33: { - setObjectVersion(input.readFixed64()); - break; - } - case 45: { - setOffset(input.readFixed32()); - break; - } - case 53: { - setLength(input.readFixed32()); - break; - } - case 56: { - setAttachObjectList(input.readBool()); - break; - } - case 66: { - org.xtreemfs.pbrpc.generatedinterfaces.OSD.ObjectList.Builder subBuilder = org.xtreemfs.pbrpc.generatedinterfaces.OSD.ObjectList.newBuilder(); - input.readMessage(subBuilder, extensionRegistry); - addRequiredObjects(subBuilder.buildPartial()); - break; - } + + public final boolean isInitialized() { + if (!hasFileCredentials()) { + + return false; + } + if (!hasFileId()) { + + return false; + } + if (!hasObjectNumber()) { + + return false; + } + if (!hasObjectVersion()) { + + return false; + } + if (!hasOffset()) { + + return false; + } + if (!hasLength()) { + + return false; + } + if (!hasAttachObjectList()) { + + return false; + } + if (!getFileCredentials().isInitialized()) { + + return false; + } + for (int i = 0; i < getRequiredObjectsCount(); i++) { + if (!getRequiredObjects(i).isInitialized()) { + + return false; + } + } + return true; + } + + public Builder mergeFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_internal_read_localRequest parsedMessage = null; + try { + parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + parsedMessage = (org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_internal_read_localRequest) e.getUnfinishedMessage(); + throw e; + } finally { + if (parsedMessage != null) { + mergeFrom(parsedMessage); } } + return this; } - - + private int bitField0_; + // required .xtreemfs.pbrpc.FileCredentials file_credentials = 1; + private org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials fileCredentials_ = org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials.getDefaultInstance(); + private com.google.protobuf.SingleFieldBuilder< + org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials, org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials.Builder, org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentialsOrBuilder> fileCredentialsBuilder_; + /** + * required .xtreemfs.pbrpc.FileCredentials file_credentials = 1; + */ public boolean hasFileCredentials() { - return result.hasFileCredentials(); + return ((bitField0_ & 0x00000001) == 0x00000001); } + /** + * required .xtreemfs.pbrpc.FileCredentials file_credentials = 1; + */ public org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials getFileCredentials() { - return result.getFileCredentials(); + if (fileCredentialsBuilder_ == null) { + return fileCredentials_; + } else { + return fileCredentialsBuilder_.getMessage(); + } } + /** + * required .xtreemfs.pbrpc.FileCredentials file_credentials = 1; + */ public Builder setFileCredentials(org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials value) { - if (value == null) { - throw new NullPointerException(); + if (fileCredentialsBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + fileCredentials_ = value; + onChanged(); + } else { + fileCredentialsBuilder_.setMessage(value); } - result.hasFileCredentials = true; - result.fileCredentials_ = value; + bitField0_ |= 0x00000001; return this; } - public Builder setFileCredentials(org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials.Builder builderForValue) { - result.hasFileCredentials = true; - result.fileCredentials_ = builderForValue.build(); + /** + * required .xtreemfs.pbrpc.FileCredentials file_credentials = 1; + */ + public Builder setFileCredentials( + org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials.Builder builderForValue) { + if (fileCredentialsBuilder_ == null) { + fileCredentials_ = builderForValue.build(); + onChanged(); + } else { + fileCredentialsBuilder_.setMessage(builderForValue.build()); + } + bitField0_ |= 0x00000001; return this; } + /** + * required .xtreemfs.pbrpc.FileCredentials file_credentials = 1; + */ public Builder mergeFileCredentials(org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials value) { - if (result.hasFileCredentials() && - result.fileCredentials_ != org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials.getDefaultInstance()) { - result.fileCredentials_ = - org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials.newBuilder(result.fileCredentials_).mergeFrom(value).buildPartial(); + if (fileCredentialsBuilder_ == null) { + if (((bitField0_ & 0x00000001) == 0x00000001) && + fileCredentials_ != org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials.getDefaultInstance()) { + fileCredentials_ = + org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials.newBuilder(fileCredentials_).mergeFrom(value).buildPartial(); + } else { + fileCredentials_ = value; + } + onChanged(); } else { - result.fileCredentials_ = value; + fileCredentialsBuilder_.mergeFrom(value); } - result.hasFileCredentials = true; + bitField0_ |= 0x00000001; return this; } + /** + * required .xtreemfs.pbrpc.FileCredentials file_credentials = 1; + */ public Builder clearFileCredentials() { - result.hasFileCredentials = false; - result.fileCredentials_ = org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials.getDefaultInstance(); + if (fileCredentialsBuilder_ == null) { + fileCredentials_ = org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials.getDefaultInstance(); + onChanged(); + } else { + fileCredentialsBuilder_.clear(); + } + bitField0_ = (bitField0_ & ~0x00000001); return this; } - + /** + * required .xtreemfs.pbrpc.FileCredentials file_credentials = 1; + */ + public org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials.Builder getFileCredentialsBuilder() { + bitField0_ |= 0x00000001; + onChanged(); + return getFileCredentialsFieldBuilder().getBuilder(); + } + /** + * required .xtreemfs.pbrpc.FileCredentials file_credentials = 1; + */ + public org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentialsOrBuilder getFileCredentialsOrBuilder() { + if (fileCredentialsBuilder_ != null) { + return fileCredentialsBuilder_.getMessageOrBuilder(); + } else { + return fileCredentials_; + } + } + /** + * required .xtreemfs.pbrpc.FileCredentials file_credentials = 1; + */ + private com.google.protobuf.SingleFieldBuilder< + org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials, org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials.Builder, org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentialsOrBuilder> + getFileCredentialsFieldBuilder() { + if (fileCredentialsBuilder_ == null) { + fileCredentialsBuilder_ = new com.google.protobuf.SingleFieldBuilder< + org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials, org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials.Builder, org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentialsOrBuilder>( + fileCredentials_, + getParentForChildren(), + isClean()); + fileCredentials_ = null; + } + return fileCredentialsBuilder_; + } + // required string file_id = 2; + private java.lang.Object fileId_ = ""; + /** + * required string file_id = 2; + */ public boolean hasFileId() { - return result.hasFileId(); + return ((bitField0_ & 0x00000002) == 0x00000002); } + /** + * required string file_id = 2; + */ public java.lang.String getFileId() { - return result.getFileId(); + java.lang.Object ref = fileId_; + if (!(ref instanceof java.lang.String)) { + java.lang.String s = ((com.google.protobuf.ByteString) ref) + .toStringUtf8(); + fileId_ = s; + return s; + } else { + return (java.lang.String) ref; + } + } + /** + * required string file_id = 2; + */ + public com.google.protobuf.ByteString + getFileIdBytes() { + java.lang.Object ref = fileId_; + if (ref instanceof String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + fileId_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } } - public Builder setFileId(java.lang.String value) { + /** + * required string file_id = 2; + */ + public Builder setFileId( + java.lang.String value) { if (value == null) { throw new NullPointerException(); } - result.hasFileId = true; - result.fileId_ = value; + bitField0_ |= 0x00000002; + fileId_ = value; + onChanged(); return this; } + /** + * required string file_id = 2; + */ public Builder clearFileId() { - result.hasFileId = false; - result.fileId_ = getDefaultInstance().getFileId(); + bitField0_ = (bitField0_ & ~0x00000002); + fileId_ = getDefaultInstance().getFileId(); + onChanged(); + return this; + } + /** + * required string file_id = 2; + */ + public Builder setFileIdBytes( + com.google.protobuf.ByteString value) { + if (value == null) { + throw new NullPointerException(); + } + bitField0_ |= 0x00000002; + fileId_ = value; + onChanged(); return this; } - + // required fixed64 object_number = 3; + private long objectNumber_ ; + /** + * required fixed64 object_number = 3; + */ public boolean hasObjectNumber() { - return result.hasObjectNumber(); + return ((bitField0_ & 0x00000004) == 0x00000004); } + /** + * required fixed64 object_number = 3; + */ public long getObjectNumber() { - return result.getObjectNumber(); + return objectNumber_; } + /** + * required fixed64 object_number = 3; + */ public Builder setObjectNumber(long value) { - result.hasObjectNumber = true; - result.objectNumber_ = value; + bitField0_ |= 0x00000004; + objectNumber_ = value; + onChanged(); return this; } + /** + * required fixed64 object_number = 3; + */ public Builder clearObjectNumber() { - result.hasObjectNumber = false; - result.objectNumber_ = 0L; + bitField0_ = (bitField0_ & ~0x00000004); + objectNumber_ = 0L; + onChanged(); return this; } - + // required fixed64 object_version = 4; + private long objectVersion_ ; + /** + * required fixed64 object_version = 4; + */ public boolean hasObjectVersion() { - return result.hasObjectVersion(); + return ((bitField0_ & 0x00000008) == 0x00000008); } + /** + * required fixed64 object_version = 4; + */ public long getObjectVersion() { - return result.getObjectVersion(); + return objectVersion_; } + /** + * required fixed64 object_version = 4; + */ public Builder setObjectVersion(long value) { - result.hasObjectVersion = true; - result.objectVersion_ = value; + bitField0_ |= 0x00000008; + objectVersion_ = value; + onChanged(); return this; } + /** + * required fixed64 object_version = 4; + */ public Builder clearObjectVersion() { - result.hasObjectVersion = false; - result.objectVersion_ = 0L; + bitField0_ = (bitField0_ & ~0x00000008); + objectVersion_ = 0L; + onChanged(); return this; } - + // required fixed32 offset = 5; + private int offset_ ; + /** + * required fixed32 offset = 5; + */ public boolean hasOffset() { - return result.hasOffset(); + return ((bitField0_ & 0x00000010) == 0x00000010); } + /** + * required fixed32 offset = 5; + */ public int getOffset() { - return result.getOffset(); + return offset_; } + /** + * required fixed32 offset = 5; + */ public Builder setOffset(int value) { - result.hasOffset = true; - result.offset_ = value; + bitField0_ |= 0x00000010; + offset_ = value; + onChanged(); return this; } + /** + * required fixed32 offset = 5; + */ public Builder clearOffset() { - result.hasOffset = false; - result.offset_ = 0; + bitField0_ = (bitField0_ & ~0x00000010); + offset_ = 0; + onChanged(); return this; } - + // required fixed32 length = 6; + private int length_ ; + /** + * required fixed32 length = 6; + */ public boolean hasLength() { - return result.hasLength(); + return ((bitField0_ & 0x00000020) == 0x00000020); } + /** + * required fixed32 length = 6; + */ public int getLength() { - return result.getLength(); + return length_; } + /** + * required fixed32 length = 6; + */ public Builder setLength(int value) { - result.hasLength = true; - result.length_ = value; + bitField0_ |= 0x00000020; + length_ = value; + onChanged(); return this; } + /** + * required fixed32 length = 6; + */ public Builder clearLength() { - result.hasLength = false; - result.length_ = 0; + bitField0_ = (bitField0_ & ~0x00000020); + length_ = 0; + onChanged(); return this; } - + // required bool attach_object_list = 7; + private boolean attachObjectList_ ; + /** + * required bool attach_object_list = 7; + */ public boolean hasAttachObjectList() { - return result.hasAttachObjectList(); + return ((bitField0_ & 0x00000040) == 0x00000040); } + /** + * required bool attach_object_list = 7; + */ public boolean getAttachObjectList() { - return result.getAttachObjectList(); + return attachObjectList_; } + /** + * required bool attach_object_list = 7; + */ public Builder setAttachObjectList(boolean value) { - result.hasAttachObjectList = true; - result.attachObjectList_ = value; + bitField0_ |= 0x00000040; + attachObjectList_ = value; + onChanged(); return this; } + /** + * required bool attach_object_list = 7; + */ public Builder clearAttachObjectList() { - result.hasAttachObjectList = false; - result.attachObjectList_ = false; + bitField0_ = (bitField0_ & ~0x00000040); + attachObjectList_ = false; + onChanged(); return this; } - + // repeated .xtreemfs.pbrpc.ObjectList required_objects = 8; + private java.util.List requiredObjects_ = + java.util.Collections.emptyList(); + private void ensureRequiredObjectsIsMutable() { + if (!((bitField0_ & 0x00000080) == 0x00000080)) { + requiredObjects_ = new java.util.ArrayList(requiredObjects_); + bitField0_ |= 0x00000080; + } + } + + private com.google.protobuf.RepeatedFieldBuilder< + org.xtreemfs.pbrpc.generatedinterfaces.OSD.ObjectList, org.xtreemfs.pbrpc.generatedinterfaces.OSD.ObjectList.Builder, org.xtreemfs.pbrpc.generatedinterfaces.OSD.ObjectListOrBuilder> requiredObjectsBuilder_; + + /** + * repeated .xtreemfs.pbrpc.ObjectList required_objects = 8; + */ public java.util.List getRequiredObjectsList() { - return java.util.Collections.unmodifiableList(result.requiredObjects_); + if (requiredObjectsBuilder_ == null) { + return java.util.Collections.unmodifiableList(requiredObjects_); + } else { + return requiredObjectsBuilder_.getMessageList(); + } } + /** + * repeated .xtreemfs.pbrpc.ObjectList required_objects = 8; + */ public int getRequiredObjectsCount() { - return result.getRequiredObjectsCount(); + if (requiredObjectsBuilder_ == null) { + return requiredObjects_.size(); + } else { + return requiredObjectsBuilder_.getCount(); + } } + /** + * repeated .xtreemfs.pbrpc.ObjectList required_objects = 8; + */ public org.xtreemfs.pbrpc.generatedinterfaces.OSD.ObjectList getRequiredObjects(int index) { - return result.getRequiredObjects(index); + if (requiredObjectsBuilder_ == null) { + return requiredObjects_.get(index); + } else { + return requiredObjectsBuilder_.getMessage(index); + } } - public Builder setRequiredObjects(int index, org.xtreemfs.pbrpc.generatedinterfaces.OSD.ObjectList value) { - if (value == null) { - throw new NullPointerException(); + /** + * repeated .xtreemfs.pbrpc.ObjectList required_objects = 8; + */ + public Builder setRequiredObjects( + int index, org.xtreemfs.pbrpc.generatedinterfaces.OSD.ObjectList value) { + if (requiredObjectsBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + ensureRequiredObjectsIsMutable(); + requiredObjects_.set(index, value); + onChanged(); + } else { + requiredObjectsBuilder_.setMessage(index, value); } - result.requiredObjects_.set(index, value); return this; } - public Builder setRequiredObjects(int index, org.xtreemfs.pbrpc.generatedinterfaces.OSD.ObjectList.Builder builderForValue) { - result.requiredObjects_.set(index, builderForValue.build()); + /** + * repeated .xtreemfs.pbrpc.ObjectList required_objects = 8; + */ + public Builder setRequiredObjects( + int index, org.xtreemfs.pbrpc.generatedinterfaces.OSD.ObjectList.Builder builderForValue) { + if (requiredObjectsBuilder_ == null) { + ensureRequiredObjectsIsMutable(); + requiredObjects_.set(index, builderForValue.build()); + onChanged(); + } else { + requiredObjectsBuilder_.setMessage(index, builderForValue.build()); + } return this; } + /** + * repeated .xtreemfs.pbrpc.ObjectList required_objects = 8; + */ public Builder addRequiredObjects(org.xtreemfs.pbrpc.generatedinterfaces.OSD.ObjectList value) { - if (value == null) { - throw new NullPointerException(); + if (requiredObjectsBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + ensureRequiredObjectsIsMutable(); + requiredObjects_.add(value); + onChanged(); + } else { + requiredObjectsBuilder_.addMessage(value); + } + return this; + } + /** + * repeated .xtreemfs.pbrpc.ObjectList required_objects = 8; + */ + public Builder addRequiredObjects( + int index, org.xtreemfs.pbrpc.generatedinterfaces.OSD.ObjectList value) { + if (requiredObjectsBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + ensureRequiredObjectsIsMutable(); + requiredObjects_.add(index, value); + onChanged(); + } else { + requiredObjectsBuilder_.addMessage(index, value); } - if (result.requiredObjects_.isEmpty()) { - result.requiredObjects_ = new java.util.ArrayList(); + return this; + } + /** + * repeated .xtreemfs.pbrpc.ObjectList required_objects = 8; + */ + public Builder addRequiredObjects( + org.xtreemfs.pbrpc.generatedinterfaces.OSD.ObjectList.Builder builderForValue) { + if (requiredObjectsBuilder_ == null) { + ensureRequiredObjectsIsMutable(); + requiredObjects_.add(builderForValue.build()); + onChanged(); + } else { + requiredObjectsBuilder_.addMessage(builderForValue.build()); } - result.requiredObjects_.add(value); return this; } - public Builder addRequiredObjects(org.xtreemfs.pbrpc.generatedinterfaces.OSD.ObjectList.Builder builderForValue) { - if (result.requiredObjects_.isEmpty()) { - result.requiredObjects_ = new java.util.ArrayList(); + /** + * repeated .xtreemfs.pbrpc.ObjectList required_objects = 8; + */ + public Builder addRequiredObjects( + int index, org.xtreemfs.pbrpc.generatedinterfaces.OSD.ObjectList.Builder builderForValue) { + if (requiredObjectsBuilder_ == null) { + ensureRequiredObjectsIsMutable(); + requiredObjects_.add(index, builderForValue.build()); + onChanged(); + } else { + requiredObjectsBuilder_.addMessage(index, builderForValue.build()); } - result.requiredObjects_.add(builderForValue.build()); return this; } + /** + * repeated .xtreemfs.pbrpc.ObjectList required_objects = 8; + */ public Builder addAllRequiredObjects( java.lang.Iterable values) { - if (result.requiredObjects_.isEmpty()) { - result.requiredObjects_ = new java.util.ArrayList(); + if (requiredObjectsBuilder_ == null) { + ensureRequiredObjectsIsMutable(); + super.addAll(values, requiredObjects_); + onChanged(); + } else { + requiredObjectsBuilder_.addAllMessages(values); } - super.addAll(values, result.requiredObjects_); return this; } + /** + * repeated .xtreemfs.pbrpc.ObjectList required_objects = 8; + */ public Builder clearRequiredObjects() { - result.requiredObjects_ = java.util.Collections.emptyList(); + if (requiredObjectsBuilder_ == null) { + requiredObjects_ = java.util.Collections.emptyList(); + bitField0_ = (bitField0_ & ~0x00000080); + onChanged(); + } else { + requiredObjectsBuilder_.clear(); + } return this; } - + /** + * repeated .xtreemfs.pbrpc.ObjectList required_objects = 8; + */ + public Builder removeRequiredObjects(int index) { + if (requiredObjectsBuilder_ == null) { + ensureRequiredObjectsIsMutable(); + requiredObjects_.remove(index); + onChanged(); + } else { + requiredObjectsBuilder_.remove(index); + } + return this; + } + /** + * repeated .xtreemfs.pbrpc.ObjectList required_objects = 8; + */ + public org.xtreemfs.pbrpc.generatedinterfaces.OSD.ObjectList.Builder getRequiredObjectsBuilder( + int index) { + return getRequiredObjectsFieldBuilder().getBuilder(index); + } + /** + * repeated .xtreemfs.pbrpc.ObjectList required_objects = 8; + */ + public org.xtreemfs.pbrpc.generatedinterfaces.OSD.ObjectListOrBuilder getRequiredObjectsOrBuilder( + int index) { + if (requiredObjectsBuilder_ == null) { + return requiredObjects_.get(index); } else { + return requiredObjectsBuilder_.getMessageOrBuilder(index); + } + } + /** + * repeated .xtreemfs.pbrpc.ObjectList required_objects = 8; + */ + public java.util.List + getRequiredObjectsOrBuilderList() { + if (requiredObjectsBuilder_ != null) { + return requiredObjectsBuilder_.getMessageOrBuilderList(); + } else { + return java.util.Collections.unmodifiableList(requiredObjects_); + } + } + /** + * repeated .xtreemfs.pbrpc.ObjectList required_objects = 8; + */ + public org.xtreemfs.pbrpc.generatedinterfaces.OSD.ObjectList.Builder addRequiredObjectsBuilder() { + return getRequiredObjectsFieldBuilder().addBuilder( + org.xtreemfs.pbrpc.generatedinterfaces.OSD.ObjectList.getDefaultInstance()); + } + /** + * repeated .xtreemfs.pbrpc.ObjectList required_objects = 8; + */ + public org.xtreemfs.pbrpc.generatedinterfaces.OSD.ObjectList.Builder addRequiredObjectsBuilder( + int index) { + return getRequiredObjectsFieldBuilder().addBuilder( + index, org.xtreemfs.pbrpc.generatedinterfaces.OSD.ObjectList.getDefaultInstance()); + } + /** + * repeated .xtreemfs.pbrpc.ObjectList required_objects = 8; + */ + public java.util.List + getRequiredObjectsBuilderList() { + return getRequiredObjectsFieldBuilder().getBuilderList(); + } + private com.google.protobuf.RepeatedFieldBuilder< + org.xtreemfs.pbrpc.generatedinterfaces.OSD.ObjectList, org.xtreemfs.pbrpc.generatedinterfaces.OSD.ObjectList.Builder, org.xtreemfs.pbrpc.generatedinterfaces.OSD.ObjectListOrBuilder> + getRequiredObjectsFieldBuilder() { + if (requiredObjectsBuilder_ == null) { + requiredObjectsBuilder_ = new com.google.protobuf.RepeatedFieldBuilder< + org.xtreemfs.pbrpc.generatedinterfaces.OSD.ObjectList, org.xtreemfs.pbrpc.generatedinterfaces.OSD.ObjectList.Builder, org.xtreemfs.pbrpc.generatedinterfaces.OSD.ObjectListOrBuilder>( + requiredObjects_, + ((bitField0_ & 0x00000080) == 0x00000080), + getParentForChildren(), + isClean()); + requiredObjects_ = null; + } + return requiredObjectsBuilder_; + } + // @@protoc_insertion_point(builder_scope:xtreemfs.pbrpc.xtreemfs_internal_read_localRequest) } - + static { defaultInstance = new xtreemfs_internal_read_localRequest(true); - org.xtreemfs.pbrpc.generatedinterfaces.OSD.internalForceInit(); defaultInstance.initFields(); } - + // @@protoc_insertion_point(class_scope:xtreemfs.pbrpc.xtreemfs_internal_read_localRequest) } - + + public interface xtreemfs_internal_get_object_setRequestOrBuilder + extends com.google.protobuf.MessageOrBuilder { + + // required .xtreemfs.pbrpc.FileCredentials file_credentials = 1; + /** + * required .xtreemfs.pbrpc.FileCredentials file_credentials = 1; + */ + boolean hasFileCredentials(); + /** + * required .xtreemfs.pbrpc.FileCredentials file_credentials = 1; + */ + org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials getFileCredentials(); + /** + * required .xtreemfs.pbrpc.FileCredentials file_credentials = 1; + */ + org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentialsOrBuilder getFileCredentialsOrBuilder(); + + // required string file_id = 2; + /** + * required string file_id = 2; + */ + boolean hasFileId(); + /** + * required string file_id = 2; + */ + java.lang.String getFileId(); + /** + * required string file_id = 2; + */ + com.google.protobuf.ByteString + getFileIdBytes(); + } + /** + * Protobuf type {@code xtreemfs.pbrpc.xtreemfs_internal_get_object_setRequest} + */ public static final class xtreemfs_internal_get_object_setRequest extends - com.google.protobuf.GeneratedMessage { + com.google.protobuf.GeneratedMessage + implements xtreemfs_internal_get_object_setRequestOrBuilder { // Use xtreemfs_internal_get_object_setRequest.newBuilder() to construct. - private xtreemfs_internal_get_object_setRequest() { - initFields(); + private xtreemfs_internal_get_object_setRequest(com.google.protobuf.GeneratedMessage.Builder builder) { + super(builder); + this.unknownFields = builder.getUnknownFields(); } - private xtreemfs_internal_get_object_setRequest(boolean noInit) {} - + private xtreemfs_internal_get_object_setRequest(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); } + private static final xtreemfs_internal_get_object_setRequest defaultInstance; public static xtreemfs_internal_get_object_setRequest getDefaultInstance() { return defaultInstance; } - + public xtreemfs_internal_get_object_setRequest getDefaultInstanceForType() { return defaultInstance; } - + + private final com.google.protobuf.UnknownFieldSet unknownFields; + @java.lang.Override + public final com.google.protobuf.UnknownFieldSet + getUnknownFields() { + return this.unknownFields; + } + private xtreemfs_internal_get_object_setRequest( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + initFields(); + int mutable_bitField0_ = 0; + com.google.protobuf.UnknownFieldSet.Builder unknownFields = + com.google.protobuf.UnknownFieldSet.newBuilder(); + try { + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch (tag) { + case 0: + done = true; + break; + default: { + if (!parseUnknownField(input, unknownFields, + extensionRegistry, tag)) { + done = true; + } + break; + } + case 10: { + org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials.Builder subBuilder = null; + if (((bitField0_ & 0x00000001) == 0x00000001)) { + subBuilder = fileCredentials_.toBuilder(); + } + fileCredentials_ = input.readMessage(org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials.PARSER, extensionRegistry); + if (subBuilder != null) { + subBuilder.mergeFrom(fileCredentials_); + fileCredentials_ = subBuilder.buildPartial(); + } + bitField0_ |= 0x00000001; + break; + } + case 18: { + bitField0_ |= 0x00000002; + fileId_ = input.readBytes(); + break; + } + } + } + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(this); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException( + e.getMessage()).setUnfinishedMessage(this); + } finally { + this.unknownFields = unknownFields.build(); + makeExtensionsImmutable(); + } + } public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { return org.xtreemfs.pbrpc.generatedinterfaces.OSD.internal_static_xtreemfs_pbrpc_xtreemfs_internal_get_object_setRequest_descriptor; } - + protected com.google.protobuf.GeneratedMessage.FieldAccessorTable internalGetFieldAccessorTable() { - return org.xtreemfs.pbrpc.generatedinterfaces.OSD.internal_static_xtreemfs_pbrpc_xtreemfs_internal_get_object_setRequest_fieldAccessorTable; + return org.xtreemfs.pbrpc.generatedinterfaces.OSD.internal_static_xtreemfs_pbrpc_xtreemfs_internal_get_object_setRequest_fieldAccessorTable + .ensureFieldAccessorsInitialized( + org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_internal_get_object_setRequest.class, org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_internal_get_object_setRequest.Builder.class); + } + + public static com.google.protobuf.Parser PARSER = + new com.google.protobuf.AbstractParser() { + public xtreemfs_internal_get_object_setRequest parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return new xtreemfs_internal_get_object_setRequest(input, extensionRegistry); + } + }; + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; } - + + private int bitField0_; // required .xtreemfs.pbrpc.FileCredentials file_credentials = 1; public static final int FILE_CREDENTIALS_FIELD_NUMBER = 1; - private boolean hasFileCredentials; private org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials fileCredentials_; - public boolean hasFileCredentials() { return hasFileCredentials; } - public org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials getFileCredentials() { return fileCredentials_; } - + /** + * required .xtreemfs.pbrpc.FileCredentials file_credentials = 1; + */ + public boolean hasFileCredentials() { + return ((bitField0_ & 0x00000001) == 0x00000001); + } + /** + * required .xtreemfs.pbrpc.FileCredentials file_credentials = 1; + */ + public org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials getFileCredentials() { + return fileCredentials_; + } + /** + * required .xtreemfs.pbrpc.FileCredentials file_credentials = 1; + */ + public org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentialsOrBuilder getFileCredentialsOrBuilder() { + return fileCredentials_; + } + // required string file_id = 2; public static final int FILE_ID_FIELD_NUMBER = 2; - private boolean hasFileId; - private java.lang.String fileId_ = ""; - public boolean hasFileId() { return hasFileId; } - public java.lang.String getFileId() { return fileId_; } - + private java.lang.Object fileId_; + /** + * required string file_id = 2; + */ + public boolean hasFileId() { + return ((bitField0_ & 0x00000002) == 0x00000002); + } + /** + * required string file_id = 2; + */ + public java.lang.String getFileId() { + java.lang.Object ref = fileId_; + if (ref instanceof java.lang.String) { + return (java.lang.String) ref; + } else { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + if (bs.isValidUtf8()) { + fileId_ = s; + } + return s; + } + } + /** + * required string file_id = 2; + */ + public com.google.protobuf.ByteString + getFileIdBytes() { + java.lang.Object ref = fileId_; + if (ref instanceof java.lang.String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + fileId_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + private void initFields() { fileCredentials_ = org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials.getDefaultInstance(); + fileId_ = ""; } + private byte memoizedIsInitialized = -1; public final boolean isInitialized() { - if (!hasFileCredentials) return false; - if (!hasFileId) return false; - if (!getFileCredentials().isInitialized()) return false; + byte isInitialized = memoizedIsInitialized; + if (isInitialized != -1) return isInitialized == 1; + + if (!hasFileCredentials()) { + memoizedIsInitialized = 0; + return false; + } + if (!hasFileId()) { + memoizedIsInitialized = 0; + return false; + } + if (!getFileCredentials().isInitialized()) { + memoizedIsInitialized = 0; + return false; + } + memoizedIsInitialized = 1; return true; } - + public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException { getSerializedSize(); - if (hasFileCredentials()) { - output.writeMessage(1, getFileCredentials()); + if (((bitField0_ & 0x00000001) == 0x00000001)) { + output.writeMessage(1, fileCredentials_); } - if (hasFileId()) { - output.writeString(2, getFileId()); + if (((bitField0_ & 0x00000002) == 0x00000002)) { + output.writeBytes(2, getFileIdBytes()); } getUnknownFields().writeTo(output); } - + private int memoizedSerializedSize = -1; public int getSerializedSize() { int size = memoizedSerializedSize; if (size != -1) return size; - + size = 0; - if (hasFileCredentials()) { + if (((bitField0_ & 0x00000001) == 0x00000001)) { size += com.google.protobuf.CodedOutputStream - .computeMessageSize(1, getFileCredentials()); + .computeMessageSize(1, fileCredentials_); } - if (hasFileId()) { + if (((bitField0_ & 0x00000002) == 0x00000002)) { size += com.google.protobuf.CodedOutputStream - .computeStringSize(2, getFileId()); + .computeBytesSize(2, getFileIdBytes()); } size += getUnknownFields().getSerializedSize(); memoizedSerializedSize = size; return size; } - + + private static final long serialVersionUID = 0L; + @java.lang.Override + protected java.lang.Object writeReplace() + throws java.io.ObjectStreamException { + return super.writeReplace(); + } + public static org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_internal_get_object_setRequest parseFrom( com.google.protobuf.ByteString data) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data).buildParsed(); + return PARSER.parseFrom(data); } public static org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_internal_get_object_setRequest parseFrom( com.google.protobuf.ByteString data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(data, extensionRegistry); } public static org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_internal_get_object_setRequest parseFrom(byte[] data) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data).buildParsed(); + return PARSER.parseFrom(data); } public static org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_internal_get_object_setRequest parseFrom( byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(data, extensionRegistry); } public static org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_internal_get_object_setRequest parseFrom(java.io.InputStream input) throws java.io.IOException { - return newBuilder().mergeFrom(input).buildParsed(); + return PARSER.parseFrom(input); } public static org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_internal_get_object_setRequest parseFrom( java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - return newBuilder().mergeFrom(input, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(input, extensionRegistry); } public static org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_internal_get_object_setRequest parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException { - Builder builder = newBuilder(); - if (builder.mergeDelimitedFrom(input)) { - return builder.buildParsed(); - } else { - return null; - } + return PARSER.parseDelimitedFrom(input); } public static org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_internal_get_object_setRequest parseDelimitedFrom( java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - Builder builder = newBuilder(); - if (builder.mergeDelimitedFrom(input, extensionRegistry)) { - return builder.buildParsed(); - } else { - return null; - } + return PARSER.parseDelimitedFrom(input, extensionRegistry); } public static org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_internal_get_object_setRequest parseFrom( com.google.protobuf.CodedInputStream input) throws java.io.IOException { - return newBuilder().mergeFrom(input).buildParsed(); + return PARSER.parseFrom(input); } public static org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_internal_get_object_setRequest parseFrom( com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - return newBuilder().mergeFrom(input, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(input, extensionRegistry); } - + public static Builder newBuilder() { return Builder.create(); } public Builder newBuilderForType() { return newBuilder(); } public static Builder newBuilder(org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_internal_get_object_setRequest prototype) { return newBuilder().mergeFrom(prototype); } public Builder toBuilder() { return newBuilder(this); } - + + @java.lang.Override + protected Builder newBuilderForType( + com.google.protobuf.GeneratedMessage.BuilderParent parent) { + Builder builder = new Builder(parent); + return builder; + } + /** + * Protobuf type {@code xtreemfs.pbrpc.xtreemfs_internal_get_object_setRequest} + */ public static final class Builder extends - com.google.protobuf.GeneratedMessage.Builder { - private org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_internal_get_object_setRequest result; - + com.google.protobuf.GeneratedMessage.Builder + implements org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_internal_get_object_setRequestOrBuilder { + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return org.xtreemfs.pbrpc.generatedinterfaces.OSD.internal_static_xtreemfs_pbrpc_xtreemfs_internal_get_object_setRequest_descriptor; + } + + protected com.google.protobuf.GeneratedMessage.FieldAccessorTable + internalGetFieldAccessorTable() { + return org.xtreemfs.pbrpc.generatedinterfaces.OSD.internal_static_xtreemfs_pbrpc_xtreemfs_internal_get_object_setRequest_fieldAccessorTable + .ensureFieldAccessorsInitialized( + org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_internal_get_object_setRequest.class, org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_internal_get_object_setRequest.Builder.class); + } + // Construct using org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_internal_get_object_setRequest.newBuilder() - private Builder() {} - - private static Builder create() { - Builder builder = new Builder(); - builder.result = new org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_internal_get_object_setRequest(); - return builder; + private Builder() { + maybeForceBuilderInitialization(); } - - protected org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_internal_get_object_setRequest internalGetResult() { - return result; + + private Builder( + com.google.protobuf.GeneratedMessage.BuilderParent parent) { + super(parent); + maybeForceBuilderInitialization(); + } + private void maybeForceBuilderInitialization() { + if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) { + getFileCredentialsFieldBuilder(); + } } - + private static Builder create() { + return new Builder(); + } + public Builder clear() { - if (result == null) { - throw new IllegalStateException( - "Cannot call clear() after build()."); + super.clear(); + if (fileCredentialsBuilder_ == null) { + fileCredentials_ = org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials.getDefaultInstance(); + } else { + fileCredentialsBuilder_.clear(); } - result = new org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_internal_get_object_setRequest(); + bitField0_ = (bitField0_ & ~0x00000001); + fileId_ = ""; + bitField0_ = (bitField0_ & ~0x00000002); return this; } - + public Builder clone() { - return create().mergeFrom(result); + return create().mergeFrom(buildPartial()); } - + public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() { - return org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_internal_get_object_setRequest.getDescriptor(); + return org.xtreemfs.pbrpc.generatedinterfaces.OSD.internal_static_xtreemfs_pbrpc_xtreemfs_internal_get_object_setRequest_descriptor; } - + public org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_internal_get_object_setRequest getDefaultInstanceForType() { return org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_internal_get_object_setRequest.getDefaultInstance(); } - - public boolean isInitialized() { - return result.isInitialized(); - } + public org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_internal_get_object_setRequest build() { - if (result != null && !isInitialized()) { + org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_internal_get_object_setRequest result = buildPartial(); + if (!result.isInitialized()) { throw newUninitializedMessageException(result); } - return buildPartial(); - } - - private org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_internal_get_object_setRequest buildParsed() - throws com.google.protobuf.InvalidProtocolBufferException { - if (!isInitialized()) { - throw newUninitializedMessageException( - result).asInvalidProtocolBufferException(); - } - return buildPartial(); + return result; } - + public org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_internal_get_object_setRequest buildPartial() { - if (result == null) { - throw new IllegalStateException( - "build() has already been called on this Builder."); + org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_internal_get_object_setRequest result = new org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_internal_get_object_setRequest(this); + int from_bitField0_ = bitField0_; + int to_bitField0_ = 0; + if (((from_bitField0_ & 0x00000001) == 0x00000001)) { + to_bitField0_ |= 0x00000001; + } + if (fileCredentialsBuilder_ == null) { + result.fileCredentials_ = fileCredentials_; + } else { + result.fileCredentials_ = fileCredentialsBuilder_.build(); + } + if (((from_bitField0_ & 0x00000002) == 0x00000002)) { + to_bitField0_ |= 0x00000002; } - org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_internal_get_object_setRequest returnMe = result; - result = null; - return returnMe; + result.fileId_ = fileId_; + result.bitField0_ = to_bitField0_; + onBuilt(); + return result; } - + public Builder mergeFrom(com.google.protobuf.Message other) { if (other instanceof org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_internal_get_object_setRequest) { return mergeFrom((org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_internal_get_object_setRequest)other); @@ -13192,193 +26690,444 @@ public final class OSD { return this; } } - + public Builder mergeFrom(org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_internal_get_object_setRequest other) { if (other == org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_internal_get_object_setRequest.getDefaultInstance()) return this; if (other.hasFileCredentials()) { mergeFileCredentials(other.getFileCredentials()); } if (other.hasFileId()) { - setFileId(other.getFileId()); + bitField0_ |= 0x00000002; + fileId_ = other.fileId_; + onChanged(); } this.mergeUnknownFields(other.getUnknownFields()); return this; } - + + public final boolean isInitialized() { + if (!hasFileCredentials()) { + + return false; + } + if (!hasFileId()) { + + return false; + } + if (!getFileCredentials().isInitialized()) { + + return false; + } + return true; + } + public Builder mergeFrom( com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - com.google.protobuf.UnknownFieldSet.Builder unknownFields = - com.google.protobuf.UnknownFieldSet.newBuilder( - this.getUnknownFields()); - while (true) { - int tag = input.readTag(); - switch (tag) { - case 0: - this.setUnknownFields(unknownFields.build()); - return this; - default: { - if (!parseUnknownField(input, unknownFields, - extensionRegistry, tag)) { - this.setUnknownFields(unknownFields.build()); - return this; - } - break; - } - case 10: { - org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials.Builder subBuilder = org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials.newBuilder(); - if (hasFileCredentials()) { - subBuilder.mergeFrom(getFileCredentials()); - } - input.readMessage(subBuilder, extensionRegistry); - setFileCredentials(subBuilder.buildPartial()); - break; - } - case 18: { - setFileId(input.readString()); - break; - } + org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_internal_get_object_setRequest parsedMessage = null; + try { + parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + parsedMessage = (org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_internal_get_object_setRequest) e.getUnfinishedMessage(); + throw e; + } finally { + if (parsedMessage != null) { + mergeFrom(parsedMessage); } } + return this; } - - + private int bitField0_; + // required .xtreemfs.pbrpc.FileCredentials file_credentials = 1; + private org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials fileCredentials_ = org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials.getDefaultInstance(); + private com.google.protobuf.SingleFieldBuilder< + org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials, org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials.Builder, org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentialsOrBuilder> fileCredentialsBuilder_; + /** + * required .xtreemfs.pbrpc.FileCredentials file_credentials = 1; + */ public boolean hasFileCredentials() { - return result.hasFileCredentials(); + return ((bitField0_ & 0x00000001) == 0x00000001); } + /** + * required .xtreemfs.pbrpc.FileCredentials file_credentials = 1; + */ public org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials getFileCredentials() { - return result.getFileCredentials(); + if (fileCredentialsBuilder_ == null) { + return fileCredentials_; + } else { + return fileCredentialsBuilder_.getMessage(); + } } + /** + * required .xtreemfs.pbrpc.FileCredentials file_credentials = 1; + */ public Builder setFileCredentials(org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials value) { - if (value == null) { - throw new NullPointerException(); + if (fileCredentialsBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + fileCredentials_ = value; + onChanged(); + } else { + fileCredentialsBuilder_.setMessage(value); } - result.hasFileCredentials = true; - result.fileCredentials_ = value; + bitField0_ |= 0x00000001; return this; } - public Builder setFileCredentials(org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials.Builder builderForValue) { - result.hasFileCredentials = true; - result.fileCredentials_ = builderForValue.build(); + /** + * required .xtreemfs.pbrpc.FileCredentials file_credentials = 1; + */ + public Builder setFileCredentials( + org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials.Builder builderForValue) { + if (fileCredentialsBuilder_ == null) { + fileCredentials_ = builderForValue.build(); + onChanged(); + } else { + fileCredentialsBuilder_.setMessage(builderForValue.build()); + } + bitField0_ |= 0x00000001; return this; } + /** + * required .xtreemfs.pbrpc.FileCredentials file_credentials = 1; + */ public Builder mergeFileCredentials(org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials value) { - if (result.hasFileCredentials() && - result.fileCredentials_ != org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials.getDefaultInstance()) { - result.fileCredentials_ = - org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials.newBuilder(result.fileCredentials_).mergeFrom(value).buildPartial(); + if (fileCredentialsBuilder_ == null) { + if (((bitField0_ & 0x00000001) == 0x00000001) && + fileCredentials_ != org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials.getDefaultInstance()) { + fileCredentials_ = + org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials.newBuilder(fileCredentials_).mergeFrom(value).buildPartial(); + } else { + fileCredentials_ = value; + } + onChanged(); } else { - result.fileCredentials_ = value; + fileCredentialsBuilder_.mergeFrom(value); } - result.hasFileCredentials = true; + bitField0_ |= 0x00000001; return this; } + /** + * required .xtreemfs.pbrpc.FileCredentials file_credentials = 1; + */ public Builder clearFileCredentials() { - result.hasFileCredentials = false; - result.fileCredentials_ = org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials.getDefaultInstance(); + if (fileCredentialsBuilder_ == null) { + fileCredentials_ = org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials.getDefaultInstance(); + onChanged(); + } else { + fileCredentialsBuilder_.clear(); + } + bitField0_ = (bitField0_ & ~0x00000001); return this; } - + /** + * required .xtreemfs.pbrpc.FileCredentials file_credentials = 1; + */ + public org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials.Builder getFileCredentialsBuilder() { + bitField0_ |= 0x00000001; + onChanged(); + return getFileCredentialsFieldBuilder().getBuilder(); + } + /** + * required .xtreemfs.pbrpc.FileCredentials file_credentials = 1; + */ + public org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentialsOrBuilder getFileCredentialsOrBuilder() { + if (fileCredentialsBuilder_ != null) { + return fileCredentialsBuilder_.getMessageOrBuilder(); + } else { + return fileCredentials_; + } + } + /** + * required .xtreemfs.pbrpc.FileCredentials file_credentials = 1; + */ + private com.google.protobuf.SingleFieldBuilder< + org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials, org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials.Builder, org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentialsOrBuilder> + getFileCredentialsFieldBuilder() { + if (fileCredentialsBuilder_ == null) { + fileCredentialsBuilder_ = new com.google.protobuf.SingleFieldBuilder< + org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials, org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials.Builder, org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentialsOrBuilder>( + fileCredentials_, + getParentForChildren(), + isClean()); + fileCredentials_ = null; + } + return fileCredentialsBuilder_; + } + // required string file_id = 2; + private java.lang.Object fileId_ = ""; + /** + * required string file_id = 2; + */ public boolean hasFileId() { - return result.hasFileId(); + return ((bitField0_ & 0x00000002) == 0x00000002); } + /** + * required string file_id = 2; + */ public java.lang.String getFileId() { - return result.getFileId(); + java.lang.Object ref = fileId_; + if (!(ref instanceof java.lang.String)) { + java.lang.String s = ((com.google.protobuf.ByteString) ref) + .toStringUtf8(); + fileId_ = s; + return s; + } else { + return (java.lang.String) ref; + } + } + /** + * required string file_id = 2; + */ + public com.google.protobuf.ByteString + getFileIdBytes() { + java.lang.Object ref = fileId_; + if (ref instanceof String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + fileId_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } } - public Builder setFileId(java.lang.String value) { + /** + * required string file_id = 2; + */ + public Builder setFileId( + java.lang.String value) { if (value == null) { throw new NullPointerException(); } - result.hasFileId = true; - result.fileId_ = value; + bitField0_ |= 0x00000002; + fileId_ = value; + onChanged(); return this; } + /** + * required string file_id = 2; + */ public Builder clearFileId() { - result.hasFileId = false; - result.fileId_ = getDefaultInstance().getFileId(); + bitField0_ = (bitField0_ & ~0x00000002); + fileId_ = getDefaultInstance().getFileId(); + onChanged(); + return this; + } + /** + * required string file_id = 2; + */ + public Builder setFileIdBytes( + com.google.protobuf.ByteString value) { + if (value == null) { + throw new NullPointerException(); + } + bitField0_ |= 0x00000002; + fileId_ = value; + onChanged(); return this; } - + // @@protoc_insertion_point(builder_scope:xtreemfs.pbrpc.xtreemfs_internal_get_object_setRequest) } - + static { defaultInstance = new xtreemfs_internal_get_object_setRequest(true); - org.xtreemfs.pbrpc.generatedinterfaces.OSD.internalForceInit(); defaultInstance.initFields(); } - + // @@protoc_insertion_point(class_scope:xtreemfs.pbrpc.xtreemfs_internal_get_object_setRequest) } - + + public interface xtreemfs_internal_get_fileid_listResponseOrBuilder + extends com.google.protobuf.MessageOrBuilder { + + // repeated string file_ids = 1; + /** + * repeated string file_ids = 1; + */ + java.util.List + getFileIdsList(); + /** + * repeated string file_ids = 1; + */ + int getFileIdsCount(); + /** + * repeated string file_ids = 1; + */ + java.lang.String getFileIds(int index); + /** + * repeated string file_ids = 1; + */ + com.google.protobuf.ByteString + getFileIdsBytes(int index); + } + /** + * Protobuf type {@code xtreemfs.pbrpc.xtreemfs_internal_get_fileid_listResponse} + */ public static final class xtreemfs_internal_get_fileid_listResponse extends - com.google.protobuf.GeneratedMessage { + com.google.protobuf.GeneratedMessage + implements xtreemfs_internal_get_fileid_listResponseOrBuilder { // Use xtreemfs_internal_get_fileid_listResponse.newBuilder() to construct. - private xtreemfs_internal_get_fileid_listResponse() { - initFields(); + private xtreemfs_internal_get_fileid_listResponse(com.google.protobuf.GeneratedMessage.Builder builder) { + super(builder); + this.unknownFields = builder.getUnknownFields(); } - private xtreemfs_internal_get_fileid_listResponse(boolean noInit) {} - + private xtreemfs_internal_get_fileid_listResponse(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); } + private static final xtreemfs_internal_get_fileid_listResponse defaultInstance; public static xtreemfs_internal_get_fileid_listResponse getDefaultInstance() { return defaultInstance; } - + public xtreemfs_internal_get_fileid_listResponse getDefaultInstanceForType() { return defaultInstance; } - + + private final com.google.protobuf.UnknownFieldSet unknownFields; + @java.lang.Override + public final com.google.protobuf.UnknownFieldSet + getUnknownFields() { + return this.unknownFields; + } + private xtreemfs_internal_get_fileid_listResponse( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + initFields(); + int mutable_bitField0_ = 0; + com.google.protobuf.UnknownFieldSet.Builder unknownFields = + com.google.protobuf.UnknownFieldSet.newBuilder(); + try { + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch (tag) { + case 0: + done = true; + break; + default: { + if (!parseUnknownField(input, unknownFields, + extensionRegistry, tag)) { + done = true; + } + break; + } + case 10: { + if (!((mutable_bitField0_ & 0x00000001) == 0x00000001)) { + fileIds_ = new com.google.protobuf.LazyStringArrayList(); + mutable_bitField0_ |= 0x00000001; + } + fileIds_.add(input.readBytes()); + break; + } + } + } + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(this); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException( + e.getMessage()).setUnfinishedMessage(this); + } finally { + if (((mutable_bitField0_ & 0x00000001) == 0x00000001)) { + fileIds_ = new com.google.protobuf.UnmodifiableLazyStringList(fileIds_); + } + this.unknownFields = unknownFields.build(); + makeExtensionsImmutable(); + } + } public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { return org.xtreemfs.pbrpc.generatedinterfaces.OSD.internal_static_xtreemfs_pbrpc_xtreemfs_internal_get_fileid_listResponse_descriptor; } - + protected com.google.protobuf.GeneratedMessage.FieldAccessorTable internalGetFieldAccessorTable() { - return org.xtreemfs.pbrpc.generatedinterfaces.OSD.internal_static_xtreemfs_pbrpc_xtreemfs_internal_get_fileid_listResponse_fieldAccessorTable; + return org.xtreemfs.pbrpc.generatedinterfaces.OSD.internal_static_xtreemfs_pbrpc_xtreemfs_internal_get_fileid_listResponse_fieldAccessorTable + .ensureFieldAccessorsInitialized( + org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_internal_get_fileid_listResponse.class, org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_internal_get_fileid_listResponse.Builder.class); + } + + public static com.google.protobuf.Parser PARSER = + new com.google.protobuf.AbstractParser() { + public xtreemfs_internal_get_fileid_listResponse parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return new xtreemfs_internal_get_fileid_listResponse(input, extensionRegistry); + } + }; + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; } - + // repeated string file_ids = 1; public static final int FILE_IDS_FIELD_NUMBER = 1; - private java.util.List fileIds_ = - java.util.Collections.emptyList(); - public java.util.List getFileIdsList() { + private com.google.protobuf.LazyStringList fileIds_; + /** + * repeated string file_ids = 1; + */ + public java.util.List + getFileIdsList() { return fileIds_; } - public int getFileIdsCount() { return fileIds_.size(); } + /** + * repeated string file_ids = 1; + */ + public int getFileIdsCount() { + return fileIds_.size(); + } + /** + * repeated string file_ids = 1; + */ public java.lang.String getFileIds(int index) { return fileIds_.get(index); } - + /** + * repeated string file_ids = 1; + */ + public com.google.protobuf.ByteString + getFileIdsBytes(int index) { + return fileIds_.getByteString(index); + } + private void initFields() { + fileIds_ = com.google.protobuf.LazyStringArrayList.EMPTY; } + private byte memoizedIsInitialized = -1; public final boolean isInitialized() { + byte isInitialized = memoizedIsInitialized; + if (isInitialized != -1) return isInitialized == 1; + + memoizedIsInitialized = 1; return true; } - + public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException { getSerializedSize(); - for (java.lang.String element : getFileIdsList()) { - output.writeString(1, element); + for (int i = 0; i < fileIds_.size(); i++) { + output.writeBytes(1, fileIds_.getByteString(i)); } getUnknownFields().writeTo(output); } - + private int memoizedSerializedSize = -1; public int getSerializedSize() { int size = memoizedSerializedSize; if (size != -1) return size; - + size = 0; { int dataSize = 0; - for (java.lang.String element : getFileIdsList()) { + for (int i = 0; i < fileIds_.size(); i++) { dataSize += com.google.protobuf.CodedOutputStream - .computeStringSizeNoTag(element); + .computeBytesSizeNoTag(fileIds_.getByteString(i)); } size += dataSize; size += 1 * getFileIdsList().size(); @@ -13387,153 +27136,157 @@ public final class OSD { memoizedSerializedSize = size; return size; } - + + private static final long serialVersionUID = 0L; + @java.lang.Override + protected java.lang.Object writeReplace() + throws java.io.ObjectStreamException { + return super.writeReplace(); + } + public static org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_internal_get_fileid_listResponse parseFrom( com.google.protobuf.ByteString data) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data).buildParsed(); + return PARSER.parseFrom(data); } public static org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_internal_get_fileid_listResponse parseFrom( com.google.protobuf.ByteString data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(data, extensionRegistry); } public static org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_internal_get_fileid_listResponse parseFrom(byte[] data) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data).buildParsed(); + return PARSER.parseFrom(data); } public static org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_internal_get_fileid_listResponse parseFrom( byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(data, extensionRegistry); } public static org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_internal_get_fileid_listResponse parseFrom(java.io.InputStream input) throws java.io.IOException { - return newBuilder().mergeFrom(input).buildParsed(); + return PARSER.parseFrom(input); } public static org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_internal_get_fileid_listResponse parseFrom( java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - return newBuilder().mergeFrom(input, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(input, extensionRegistry); } public static org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_internal_get_fileid_listResponse parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException { - Builder builder = newBuilder(); - if (builder.mergeDelimitedFrom(input)) { - return builder.buildParsed(); - } else { - return null; - } + return PARSER.parseDelimitedFrom(input); } public static org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_internal_get_fileid_listResponse parseDelimitedFrom( java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - Builder builder = newBuilder(); - if (builder.mergeDelimitedFrom(input, extensionRegistry)) { - return builder.buildParsed(); - } else { - return null; - } + return PARSER.parseDelimitedFrom(input, extensionRegistry); } public static org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_internal_get_fileid_listResponse parseFrom( com.google.protobuf.CodedInputStream input) throws java.io.IOException { - return newBuilder().mergeFrom(input).buildParsed(); + return PARSER.parseFrom(input); } public static org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_internal_get_fileid_listResponse parseFrom( com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - return newBuilder().mergeFrom(input, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(input, extensionRegistry); } - + public static Builder newBuilder() { return Builder.create(); } public Builder newBuilderForType() { return newBuilder(); } public static Builder newBuilder(org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_internal_get_fileid_listResponse prototype) { return newBuilder().mergeFrom(prototype); } public Builder toBuilder() { return newBuilder(this); } - + + @java.lang.Override + protected Builder newBuilderForType( + com.google.protobuf.GeneratedMessage.BuilderParent parent) { + Builder builder = new Builder(parent); + return builder; + } + /** + * Protobuf type {@code xtreemfs.pbrpc.xtreemfs_internal_get_fileid_listResponse} + */ public static final class Builder extends - com.google.protobuf.GeneratedMessage.Builder { - private org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_internal_get_fileid_listResponse result; - + com.google.protobuf.GeneratedMessage.Builder + implements org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_internal_get_fileid_listResponseOrBuilder { + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return org.xtreemfs.pbrpc.generatedinterfaces.OSD.internal_static_xtreemfs_pbrpc_xtreemfs_internal_get_fileid_listResponse_descriptor; + } + + protected com.google.protobuf.GeneratedMessage.FieldAccessorTable + internalGetFieldAccessorTable() { + return org.xtreemfs.pbrpc.generatedinterfaces.OSD.internal_static_xtreemfs_pbrpc_xtreemfs_internal_get_fileid_listResponse_fieldAccessorTable + .ensureFieldAccessorsInitialized( + org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_internal_get_fileid_listResponse.class, org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_internal_get_fileid_listResponse.Builder.class); + } + // Construct using org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_internal_get_fileid_listResponse.newBuilder() - private Builder() {} - - private static Builder create() { - Builder builder = new Builder(); - builder.result = new org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_internal_get_fileid_listResponse(); - return builder; + private Builder() { + maybeForceBuilderInitialization(); } - - protected org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_internal_get_fileid_listResponse internalGetResult() { - return result; + + private Builder( + com.google.protobuf.GeneratedMessage.BuilderParent parent) { + super(parent); + maybeForceBuilderInitialization(); } - - public Builder clear() { - if (result == null) { - throw new IllegalStateException( - "Cannot call clear() after build()."); + private void maybeForceBuilderInitialization() { + if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) { } - result = new org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_internal_get_fileid_listResponse(); + } + private static Builder create() { + return new Builder(); + } + + public Builder clear() { + super.clear(); + fileIds_ = com.google.protobuf.LazyStringArrayList.EMPTY; + bitField0_ = (bitField0_ & ~0x00000001); return this; } - + public Builder clone() { - return create().mergeFrom(result); + return create().mergeFrom(buildPartial()); } - + public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() { - return org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_internal_get_fileid_listResponse.getDescriptor(); + return org.xtreemfs.pbrpc.generatedinterfaces.OSD.internal_static_xtreemfs_pbrpc_xtreemfs_internal_get_fileid_listResponse_descriptor; } - + public org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_internal_get_fileid_listResponse getDefaultInstanceForType() { return org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_internal_get_fileid_listResponse.getDefaultInstance(); } - - public boolean isInitialized() { - return result.isInitialized(); - } + public org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_internal_get_fileid_listResponse build() { - if (result != null && !isInitialized()) { + org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_internal_get_fileid_listResponse result = buildPartial(); + if (!result.isInitialized()) { throw newUninitializedMessageException(result); } - return buildPartial(); - } - - private org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_internal_get_fileid_listResponse buildParsed() - throws com.google.protobuf.InvalidProtocolBufferException { - if (!isInitialized()) { - throw newUninitializedMessageException( - result).asInvalidProtocolBufferException(); - } - return buildPartial(); + return result; } - + public org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_internal_get_fileid_listResponse buildPartial() { - if (result == null) { - throw new IllegalStateException( - "build() has already been called on this Builder."); - } - if (result.fileIds_ != java.util.Collections.EMPTY_LIST) { - result.fileIds_ = - java.util.Collections.unmodifiableList(result.fileIds_); - } - org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_internal_get_fileid_listResponse returnMe = result; - result = null; - return returnMe; + org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_internal_get_fileid_listResponse result = new org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_internal_get_fileid_listResponse(this); + int from_bitField0_ = bitField0_; + if (((bitField0_ & 0x00000001) == 0x00000001)) { + fileIds_ = new com.google.protobuf.UnmodifiableLazyStringList( + fileIds_); + bitField0_ = (bitField0_ & ~0x00000001); + } + result.fileIds_ = fileIds_; + onBuilt(); + return result; } - + public Builder mergeFrom(com.google.protobuf.Message other) { if (other instanceof org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_internal_get_fileid_listResponse) { return mergeFrom((org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_internal_get_fileid_listResponse)other); @@ -13542,327 +27295,576 @@ public final class OSD { return this; } } - + public Builder mergeFrom(org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_internal_get_fileid_listResponse other) { if (other == org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_internal_get_fileid_listResponse.getDefaultInstance()) return this; if (!other.fileIds_.isEmpty()) { - if (result.fileIds_.isEmpty()) { - result.fileIds_ = new java.util.ArrayList(); + if (fileIds_.isEmpty()) { + fileIds_ = other.fileIds_; + bitField0_ = (bitField0_ & ~0x00000001); + } else { + ensureFileIdsIsMutable(); + fileIds_.addAll(other.fileIds_); } - result.fileIds_.addAll(other.fileIds_); + onChanged(); } this.mergeUnknownFields(other.getUnknownFields()); return this; } - + + public final boolean isInitialized() { + return true; + } + public Builder mergeFrom( com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - com.google.protobuf.UnknownFieldSet.Builder unknownFields = - com.google.protobuf.UnknownFieldSet.newBuilder( - this.getUnknownFields()); - while (true) { - int tag = input.readTag(); - switch (tag) { - case 0: - this.setUnknownFields(unknownFields.build()); - return this; - default: { - if (!parseUnknownField(input, unknownFields, - extensionRegistry, tag)) { - this.setUnknownFields(unknownFields.build()); - return this; - } - break; - } - case 10: { - addFileIds(input.readString()); - break; - } + org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_internal_get_fileid_listResponse parsedMessage = null; + try { + parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + parsedMessage = (org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_internal_get_fileid_listResponse) e.getUnfinishedMessage(); + throw e; + } finally { + if (parsedMessage != null) { + mergeFrom(parsedMessage); } } + return this; } - - + private int bitField0_; + // repeated string file_ids = 1; - public java.util.List getFileIdsList() { - return java.util.Collections.unmodifiableList(result.fileIds_); - } + private com.google.protobuf.LazyStringList fileIds_ = com.google.protobuf.LazyStringArrayList.EMPTY; + private void ensureFileIdsIsMutable() { + if (!((bitField0_ & 0x00000001) == 0x00000001)) { + fileIds_ = new com.google.protobuf.LazyStringArrayList(fileIds_); + bitField0_ |= 0x00000001; + } + } + /** + * repeated string file_ids = 1; + */ + public java.util.List + getFileIdsList() { + return java.util.Collections.unmodifiableList(fileIds_); + } + /** + * repeated string file_ids = 1; + */ public int getFileIdsCount() { - return result.getFileIdsCount(); + return fileIds_.size(); } + /** + * repeated string file_ids = 1; + */ public java.lang.String getFileIds(int index) { - return result.getFileIds(index); - } - public Builder setFileIds(int index, java.lang.String value) { + return fileIds_.get(index); + } + /** + * repeated string file_ids = 1; + */ + public com.google.protobuf.ByteString + getFileIdsBytes(int index) { + return fileIds_.getByteString(index); + } + /** + * repeated string file_ids = 1; + */ + public Builder setFileIds( + int index, java.lang.String value) { if (value == null) { throw new NullPointerException(); } - result.fileIds_.set(index, value); + ensureFileIdsIsMutable(); + fileIds_.set(index, value); + onChanged(); return this; } - public Builder addFileIds(java.lang.String value) { + /** + * repeated string file_ids = 1; + */ + public Builder addFileIds( + java.lang.String value) { if (value == null) { throw new NullPointerException(); } - if (result.fileIds_.isEmpty()) { - result.fileIds_ = new java.util.ArrayList(); - } - result.fileIds_.add(value); + ensureFileIdsIsMutable(); + fileIds_.add(value); + onChanged(); return this; } + /** + * repeated string file_ids = 1; + */ public Builder addAllFileIds( - java.lang.Iterable values) { - if (result.fileIds_.isEmpty()) { - result.fileIds_ = new java.util.ArrayList(); - } - super.addAll(values, result.fileIds_); + java.lang.Iterable values) { + ensureFileIdsIsMutable(); + super.addAll(values, fileIds_); + onChanged(); return this; } + /** + * repeated string file_ids = 1; + */ public Builder clearFileIds() { - result.fileIds_ = java.util.Collections.emptyList(); + fileIds_ = com.google.protobuf.LazyStringArrayList.EMPTY; + bitField0_ = (bitField0_ & ~0x00000001); + onChanged(); + return this; + } + /** + * repeated string file_ids = 1; + */ + public Builder addFileIdsBytes( + com.google.protobuf.ByteString value) { + if (value == null) { + throw new NullPointerException(); + } + ensureFileIdsIsMutable(); + fileIds_.add(value); + onChanged(); return this; } - + // @@protoc_insertion_point(builder_scope:xtreemfs.pbrpc.xtreemfs_internal_get_fileid_listResponse) } - + static { defaultInstance = new xtreemfs_internal_get_fileid_listResponse(true); - org.xtreemfs.pbrpc.generatedinterfaces.OSD.internalForceInit(); defaultInstance.initFields(); } - + // @@protoc_insertion_point(class_scope:xtreemfs.pbrpc.xtreemfs_internal_get_fileid_listResponse) } - + + public interface lockRequestOrBuilder + extends com.google.protobuf.MessageOrBuilder { + + // required .xtreemfs.pbrpc.FileCredentials file_credentials = 1; + /** + * required .xtreemfs.pbrpc.FileCredentials file_credentials = 1; + */ + boolean hasFileCredentials(); + /** + * required .xtreemfs.pbrpc.FileCredentials file_credentials = 1; + */ + org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials getFileCredentials(); + /** + * required .xtreemfs.pbrpc.FileCredentials file_credentials = 1; + */ + org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentialsOrBuilder getFileCredentialsOrBuilder(); + + // required .xtreemfs.pbrpc.Lock lock_request = 2; + /** + * required .xtreemfs.pbrpc.Lock lock_request = 2; + */ + boolean hasLockRequest(); + /** + * required .xtreemfs.pbrpc.Lock lock_request = 2; + */ + org.xtreemfs.pbrpc.generatedinterfaces.OSD.Lock getLockRequest(); + /** + * required .xtreemfs.pbrpc.Lock lock_request = 2; + */ + org.xtreemfs.pbrpc.generatedinterfaces.OSD.LockOrBuilder getLockRequestOrBuilder(); + } + /** + * Protobuf type {@code xtreemfs.pbrpc.lockRequest} + */ public static final class lockRequest extends - com.google.protobuf.GeneratedMessage { + com.google.protobuf.GeneratedMessage + implements lockRequestOrBuilder { // Use lockRequest.newBuilder() to construct. - private lockRequest() { - initFields(); + private lockRequest(com.google.protobuf.GeneratedMessage.Builder builder) { + super(builder); + this.unknownFields = builder.getUnknownFields(); } - private lockRequest(boolean noInit) {} - + private lockRequest(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); } + private static final lockRequest defaultInstance; public static lockRequest getDefaultInstance() { return defaultInstance; } - + public lockRequest getDefaultInstanceForType() { return defaultInstance; } - + + private final com.google.protobuf.UnknownFieldSet unknownFields; + @java.lang.Override + public final com.google.protobuf.UnknownFieldSet + getUnknownFields() { + return this.unknownFields; + } + private lockRequest( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + initFields(); + int mutable_bitField0_ = 0; + com.google.protobuf.UnknownFieldSet.Builder unknownFields = + com.google.protobuf.UnknownFieldSet.newBuilder(); + try { + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch (tag) { + case 0: + done = true; + break; + default: { + if (!parseUnknownField(input, unknownFields, + extensionRegistry, tag)) { + done = true; + } + break; + } + case 10: { + org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials.Builder subBuilder = null; + if (((bitField0_ & 0x00000001) == 0x00000001)) { + subBuilder = fileCredentials_.toBuilder(); + } + fileCredentials_ = input.readMessage(org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials.PARSER, extensionRegistry); + if (subBuilder != null) { + subBuilder.mergeFrom(fileCredentials_); + fileCredentials_ = subBuilder.buildPartial(); + } + bitField0_ |= 0x00000001; + break; + } + case 18: { + org.xtreemfs.pbrpc.generatedinterfaces.OSD.Lock.Builder subBuilder = null; + if (((bitField0_ & 0x00000002) == 0x00000002)) { + subBuilder = lockRequest_.toBuilder(); + } + lockRequest_ = input.readMessage(org.xtreemfs.pbrpc.generatedinterfaces.OSD.Lock.PARSER, extensionRegistry); + if (subBuilder != null) { + subBuilder.mergeFrom(lockRequest_); + lockRequest_ = subBuilder.buildPartial(); + } + bitField0_ |= 0x00000002; + break; + } + } + } + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(this); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException( + e.getMessage()).setUnfinishedMessage(this); + } finally { + this.unknownFields = unknownFields.build(); + makeExtensionsImmutable(); + } + } public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { return org.xtreemfs.pbrpc.generatedinterfaces.OSD.internal_static_xtreemfs_pbrpc_lockRequest_descriptor; } - + protected com.google.protobuf.GeneratedMessage.FieldAccessorTable internalGetFieldAccessorTable() { - return org.xtreemfs.pbrpc.generatedinterfaces.OSD.internal_static_xtreemfs_pbrpc_lockRequest_fieldAccessorTable; + return org.xtreemfs.pbrpc.generatedinterfaces.OSD.internal_static_xtreemfs_pbrpc_lockRequest_fieldAccessorTable + .ensureFieldAccessorsInitialized( + org.xtreemfs.pbrpc.generatedinterfaces.OSD.lockRequest.class, org.xtreemfs.pbrpc.generatedinterfaces.OSD.lockRequest.Builder.class); + } + + public static com.google.protobuf.Parser PARSER = + new com.google.protobuf.AbstractParser() { + public lockRequest parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return new lockRequest(input, extensionRegistry); + } + }; + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; } - + + private int bitField0_; // required .xtreemfs.pbrpc.FileCredentials file_credentials = 1; public static final int FILE_CREDENTIALS_FIELD_NUMBER = 1; - private boolean hasFileCredentials; private org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials fileCredentials_; - public boolean hasFileCredentials() { return hasFileCredentials; } - public org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials getFileCredentials() { return fileCredentials_; } - + /** + * required .xtreemfs.pbrpc.FileCredentials file_credentials = 1; + */ + public boolean hasFileCredentials() { + return ((bitField0_ & 0x00000001) == 0x00000001); + } + /** + * required .xtreemfs.pbrpc.FileCredentials file_credentials = 1; + */ + public org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials getFileCredentials() { + return fileCredentials_; + } + /** + * required .xtreemfs.pbrpc.FileCredentials file_credentials = 1; + */ + public org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentialsOrBuilder getFileCredentialsOrBuilder() { + return fileCredentials_; + } + // required .xtreemfs.pbrpc.Lock lock_request = 2; public static final int LOCK_REQUEST_FIELD_NUMBER = 2; - private boolean hasLockRequest; private org.xtreemfs.pbrpc.generatedinterfaces.OSD.Lock lockRequest_; - public boolean hasLockRequest() { return hasLockRequest; } - public org.xtreemfs.pbrpc.generatedinterfaces.OSD.Lock getLockRequest() { return lockRequest_; } - + /** + * required .xtreemfs.pbrpc.Lock lock_request = 2; + */ + public boolean hasLockRequest() { + return ((bitField0_ & 0x00000002) == 0x00000002); + } + /** + * required .xtreemfs.pbrpc.Lock lock_request = 2; + */ + public org.xtreemfs.pbrpc.generatedinterfaces.OSD.Lock getLockRequest() { + return lockRequest_; + } + /** + * required .xtreemfs.pbrpc.Lock lock_request = 2; + */ + public org.xtreemfs.pbrpc.generatedinterfaces.OSD.LockOrBuilder getLockRequestOrBuilder() { + return lockRequest_; + } + private void initFields() { fileCredentials_ = org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials.getDefaultInstance(); lockRequest_ = org.xtreemfs.pbrpc.generatedinterfaces.OSD.Lock.getDefaultInstance(); } + private byte memoizedIsInitialized = -1; public final boolean isInitialized() { - if (!hasFileCredentials) return false; - if (!hasLockRequest) return false; - if (!getFileCredentials().isInitialized()) return false; - if (!getLockRequest().isInitialized()) return false; + byte isInitialized = memoizedIsInitialized; + if (isInitialized != -1) return isInitialized == 1; + + if (!hasFileCredentials()) { + memoizedIsInitialized = 0; + return false; + } + if (!hasLockRequest()) { + memoizedIsInitialized = 0; + return false; + } + if (!getFileCredentials().isInitialized()) { + memoizedIsInitialized = 0; + return false; + } + if (!getLockRequest().isInitialized()) { + memoizedIsInitialized = 0; + return false; + } + memoizedIsInitialized = 1; return true; } - + public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException { getSerializedSize(); - if (hasFileCredentials()) { - output.writeMessage(1, getFileCredentials()); + if (((bitField0_ & 0x00000001) == 0x00000001)) { + output.writeMessage(1, fileCredentials_); } - if (hasLockRequest()) { - output.writeMessage(2, getLockRequest()); + if (((bitField0_ & 0x00000002) == 0x00000002)) { + output.writeMessage(2, lockRequest_); } getUnknownFields().writeTo(output); } - + private int memoizedSerializedSize = -1; public int getSerializedSize() { int size = memoizedSerializedSize; if (size != -1) return size; - + size = 0; - if (hasFileCredentials()) { + if (((bitField0_ & 0x00000001) == 0x00000001)) { size += com.google.protobuf.CodedOutputStream - .computeMessageSize(1, getFileCredentials()); + .computeMessageSize(1, fileCredentials_); } - if (hasLockRequest()) { + if (((bitField0_ & 0x00000002) == 0x00000002)) { size += com.google.protobuf.CodedOutputStream - .computeMessageSize(2, getLockRequest()); + .computeMessageSize(2, lockRequest_); } size += getUnknownFields().getSerializedSize(); memoizedSerializedSize = size; return size; } - + + private static final long serialVersionUID = 0L; + @java.lang.Override + protected java.lang.Object writeReplace() + throws java.io.ObjectStreamException { + return super.writeReplace(); + } + public static org.xtreemfs.pbrpc.generatedinterfaces.OSD.lockRequest parseFrom( com.google.protobuf.ByteString data) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data).buildParsed(); + return PARSER.parseFrom(data); } public static org.xtreemfs.pbrpc.generatedinterfaces.OSD.lockRequest parseFrom( com.google.protobuf.ByteString data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(data, extensionRegistry); } public static org.xtreemfs.pbrpc.generatedinterfaces.OSD.lockRequest parseFrom(byte[] data) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data).buildParsed(); + return PARSER.parseFrom(data); } public static org.xtreemfs.pbrpc.generatedinterfaces.OSD.lockRequest parseFrom( byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(data, extensionRegistry); } public static org.xtreemfs.pbrpc.generatedinterfaces.OSD.lockRequest parseFrom(java.io.InputStream input) throws java.io.IOException { - return newBuilder().mergeFrom(input).buildParsed(); + return PARSER.parseFrom(input); } public static org.xtreemfs.pbrpc.generatedinterfaces.OSD.lockRequest parseFrom( java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - return newBuilder().mergeFrom(input, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(input, extensionRegistry); } public static org.xtreemfs.pbrpc.generatedinterfaces.OSD.lockRequest parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException { - Builder builder = newBuilder(); - if (builder.mergeDelimitedFrom(input)) { - return builder.buildParsed(); - } else { - return null; - } + return PARSER.parseDelimitedFrom(input); } public static org.xtreemfs.pbrpc.generatedinterfaces.OSD.lockRequest parseDelimitedFrom( java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - Builder builder = newBuilder(); - if (builder.mergeDelimitedFrom(input, extensionRegistry)) { - return builder.buildParsed(); - } else { - return null; - } + return PARSER.parseDelimitedFrom(input, extensionRegistry); } public static org.xtreemfs.pbrpc.generatedinterfaces.OSD.lockRequest parseFrom( com.google.protobuf.CodedInputStream input) throws java.io.IOException { - return newBuilder().mergeFrom(input).buildParsed(); + return PARSER.parseFrom(input); } public static org.xtreemfs.pbrpc.generatedinterfaces.OSD.lockRequest parseFrom( com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - return newBuilder().mergeFrom(input, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(input, extensionRegistry); } - + public static Builder newBuilder() { return Builder.create(); } public Builder newBuilderForType() { return newBuilder(); } public static Builder newBuilder(org.xtreemfs.pbrpc.generatedinterfaces.OSD.lockRequest prototype) { return newBuilder().mergeFrom(prototype); } public Builder toBuilder() { return newBuilder(this); } - + + @java.lang.Override + protected Builder newBuilderForType( + com.google.protobuf.GeneratedMessage.BuilderParent parent) { + Builder builder = new Builder(parent); + return builder; + } + /** + * Protobuf type {@code xtreemfs.pbrpc.lockRequest} + */ public static final class Builder extends - com.google.protobuf.GeneratedMessage.Builder { - private org.xtreemfs.pbrpc.generatedinterfaces.OSD.lockRequest result; - + com.google.protobuf.GeneratedMessage.Builder + implements org.xtreemfs.pbrpc.generatedinterfaces.OSD.lockRequestOrBuilder { + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return org.xtreemfs.pbrpc.generatedinterfaces.OSD.internal_static_xtreemfs_pbrpc_lockRequest_descriptor; + } + + protected com.google.protobuf.GeneratedMessage.FieldAccessorTable + internalGetFieldAccessorTable() { + return org.xtreemfs.pbrpc.generatedinterfaces.OSD.internal_static_xtreemfs_pbrpc_lockRequest_fieldAccessorTable + .ensureFieldAccessorsInitialized( + org.xtreemfs.pbrpc.generatedinterfaces.OSD.lockRequest.class, org.xtreemfs.pbrpc.generatedinterfaces.OSD.lockRequest.Builder.class); + } + // Construct using org.xtreemfs.pbrpc.generatedinterfaces.OSD.lockRequest.newBuilder() - private Builder() {} - - private static Builder create() { - Builder builder = new Builder(); - builder.result = new org.xtreemfs.pbrpc.generatedinterfaces.OSD.lockRequest(); - return builder; + private Builder() { + maybeForceBuilderInitialization(); } - - protected org.xtreemfs.pbrpc.generatedinterfaces.OSD.lockRequest internalGetResult() { - return result; + + private Builder( + com.google.protobuf.GeneratedMessage.BuilderParent parent) { + super(parent); + maybeForceBuilderInitialization(); + } + private void maybeForceBuilderInitialization() { + if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) { + getFileCredentialsFieldBuilder(); + getLockRequestFieldBuilder(); + } + } + private static Builder create() { + return new Builder(); } - + public Builder clear() { - if (result == null) { - throw new IllegalStateException( - "Cannot call clear() after build()."); + super.clear(); + if (fileCredentialsBuilder_ == null) { + fileCredentials_ = org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials.getDefaultInstance(); + } else { + fileCredentialsBuilder_.clear(); + } + bitField0_ = (bitField0_ & ~0x00000001); + if (lockRequestBuilder_ == null) { + lockRequest_ = org.xtreemfs.pbrpc.generatedinterfaces.OSD.Lock.getDefaultInstance(); + } else { + lockRequestBuilder_.clear(); } - result = new org.xtreemfs.pbrpc.generatedinterfaces.OSD.lockRequest(); + bitField0_ = (bitField0_ & ~0x00000002); return this; } - + public Builder clone() { - return create().mergeFrom(result); + return create().mergeFrom(buildPartial()); } - + public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() { - return org.xtreemfs.pbrpc.generatedinterfaces.OSD.lockRequest.getDescriptor(); + return org.xtreemfs.pbrpc.generatedinterfaces.OSD.internal_static_xtreemfs_pbrpc_lockRequest_descriptor; } - + public org.xtreemfs.pbrpc.generatedinterfaces.OSD.lockRequest getDefaultInstanceForType() { return org.xtreemfs.pbrpc.generatedinterfaces.OSD.lockRequest.getDefaultInstance(); } - - public boolean isInitialized() { - return result.isInitialized(); - } + public org.xtreemfs.pbrpc.generatedinterfaces.OSD.lockRequest build() { - if (result != null && !isInitialized()) { + org.xtreemfs.pbrpc.generatedinterfaces.OSD.lockRequest result = buildPartial(); + if (!result.isInitialized()) { throw newUninitializedMessageException(result); } - return buildPartial(); - } - - private org.xtreemfs.pbrpc.generatedinterfaces.OSD.lockRequest buildParsed() - throws com.google.protobuf.InvalidProtocolBufferException { - if (!isInitialized()) { - throw newUninitializedMessageException( - result).asInvalidProtocolBufferException(); - } - return buildPartial(); + return result; } - + public org.xtreemfs.pbrpc.generatedinterfaces.OSD.lockRequest buildPartial() { - if (result == null) { - throw new IllegalStateException( - "build() has already been called on this Builder."); + org.xtreemfs.pbrpc.generatedinterfaces.OSD.lockRequest result = new org.xtreemfs.pbrpc.generatedinterfaces.OSD.lockRequest(this); + int from_bitField0_ = bitField0_; + int to_bitField0_ = 0; + if (((from_bitField0_ & 0x00000001) == 0x00000001)) { + to_bitField0_ |= 0x00000001; + } + if (fileCredentialsBuilder_ == null) { + result.fileCredentials_ = fileCredentials_; + } else { + result.fileCredentials_ = fileCredentialsBuilder_.build(); + } + if (((from_bitField0_ & 0x00000002) == 0x00000002)) { + to_bitField0_ |= 0x00000002; + } + if (lockRequestBuilder_ == null) { + result.lockRequest_ = lockRequest_; + } else { + result.lockRequest_ = lockRequestBuilder_.build(); } - org.xtreemfs.pbrpc.generatedinterfaces.OSD.lockRequest returnMe = result; - result = null; - return returnMe; + result.bitField0_ = to_bitField0_; + onBuilt(); + return result; } - + public Builder mergeFrom(com.google.protobuf.Message other) { if (other instanceof org.xtreemfs.pbrpc.generatedinterfaces.OSD.lockRequest) { return mergeFrom((org.xtreemfs.pbrpc.generatedinterfaces.OSD.lockRequest)other); @@ -13871,7 +27873,7 @@ public final class OSD { return this; } } - + public Builder mergeFrom(org.xtreemfs.pbrpc.generatedinterfaces.OSD.lockRequest other) { if (other == org.xtreemfs.pbrpc.generatedinterfaces.OSD.lockRequest.getDefaultInstance()) return this; if (other.hasFileCredentials()) { @@ -13883,361 +27885,686 @@ public final class OSD { this.mergeUnknownFields(other.getUnknownFields()); return this; } - + + public final boolean isInitialized() { + if (!hasFileCredentials()) { + + return false; + } + if (!hasLockRequest()) { + + return false; + } + if (!getFileCredentials().isInitialized()) { + + return false; + } + if (!getLockRequest().isInitialized()) { + + return false; + } + return true; + } + public Builder mergeFrom( com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - com.google.protobuf.UnknownFieldSet.Builder unknownFields = - com.google.protobuf.UnknownFieldSet.newBuilder( - this.getUnknownFields()); - while (true) { - int tag = input.readTag(); - switch (tag) { - case 0: - this.setUnknownFields(unknownFields.build()); - return this; - default: { - if (!parseUnknownField(input, unknownFields, - extensionRegistry, tag)) { - this.setUnknownFields(unknownFields.build()); - return this; - } - break; - } - case 10: { - org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials.Builder subBuilder = org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials.newBuilder(); - if (hasFileCredentials()) { - subBuilder.mergeFrom(getFileCredentials()); - } - input.readMessage(subBuilder, extensionRegistry); - setFileCredentials(subBuilder.buildPartial()); - break; - } - case 18: { - org.xtreemfs.pbrpc.generatedinterfaces.OSD.Lock.Builder subBuilder = org.xtreemfs.pbrpc.generatedinterfaces.OSD.Lock.newBuilder(); - if (hasLockRequest()) { - subBuilder.mergeFrom(getLockRequest()); - } - input.readMessage(subBuilder, extensionRegistry); - setLockRequest(subBuilder.buildPartial()); - break; - } + org.xtreemfs.pbrpc.generatedinterfaces.OSD.lockRequest parsedMessage = null; + try { + parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + parsedMessage = (org.xtreemfs.pbrpc.generatedinterfaces.OSD.lockRequest) e.getUnfinishedMessage(); + throw e; + } finally { + if (parsedMessage != null) { + mergeFrom(parsedMessage); } } + return this; } - - + private int bitField0_; + // required .xtreemfs.pbrpc.FileCredentials file_credentials = 1; + private org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials fileCredentials_ = org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials.getDefaultInstance(); + private com.google.protobuf.SingleFieldBuilder< + org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials, org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials.Builder, org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentialsOrBuilder> fileCredentialsBuilder_; + /** + * required .xtreemfs.pbrpc.FileCredentials file_credentials = 1; + */ public boolean hasFileCredentials() { - return result.hasFileCredentials(); + return ((bitField0_ & 0x00000001) == 0x00000001); } + /** + * required .xtreemfs.pbrpc.FileCredentials file_credentials = 1; + */ public org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials getFileCredentials() { - return result.getFileCredentials(); + if (fileCredentialsBuilder_ == null) { + return fileCredentials_; + } else { + return fileCredentialsBuilder_.getMessage(); + } } + /** + * required .xtreemfs.pbrpc.FileCredentials file_credentials = 1; + */ public Builder setFileCredentials(org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials value) { - if (value == null) { - throw new NullPointerException(); + if (fileCredentialsBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + fileCredentials_ = value; + onChanged(); + } else { + fileCredentialsBuilder_.setMessage(value); } - result.hasFileCredentials = true; - result.fileCredentials_ = value; + bitField0_ |= 0x00000001; return this; } - public Builder setFileCredentials(org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials.Builder builderForValue) { - result.hasFileCredentials = true; - result.fileCredentials_ = builderForValue.build(); + /** + * required .xtreemfs.pbrpc.FileCredentials file_credentials = 1; + */ + public Builder setFileCredentials( + org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials.Builder builderForValue) { + if (fileCredentialsBuilder_ == null) { + fileCredentials_ = builderForValue.build(); + onChanged(); + } else { + fileCredentialsBuilder_.setMessage(builderForValue.build()); + } + bitField0_ |= 0x00000001; return this; } + /** + * required .xtreemfs.pbrpc.FileCredentials file_credentials = 1; + */ public Builder mergeFileCredentials(org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials value) { - if (result.hasFileCredentials() && - result.fileCredentials_ != org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials.getDefaultInstance()) { - result.fileCredentials_ = - org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials.newBuilder(result.fileCredentials_).mergeFrom(value).buildPartial(); + if (fileCredentialsBuilder_ == null) { + if (((bitField0_ & 0x00000001) == 0x00000001) && + fileCredentials_ != org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials.getDefaultInstance()) { + fileCredentials_ = + org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials.newBuilder(fileCredentials_).mergeFrom(value).buildPartial(); + } else { + fileCredentials_ = value; + } + onChanged(); } else { - result.fileCredentials_ = value; + fileCredentialsBuilder_.mergeFrom(value); } - result.hasFileCredentials = true; + bitField0_ |= 0x00000001; return this; } + /** + * required .xtreemfs.pbrpc.FileCredentials file_credentials = 1; + */ public Builder clearFileCredentials() { - result.hasFileCredentials = false; - result.fileCredentials_ = org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials.getDefaultInstance(); + if (fileCredentialsBuilder_ == null) { + fileCredentials_ = org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials.getDefaultInstance(); + onChanged(); + } else { + fileCredentialsBuilder_.clear(); + } + bitField0_ = (bitField0_ & ~0x00000001); return this; } - + /** + * required .xtreemfs.pbrpc.FileCredentials file_credentials = 1; + */ + public org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials.Builder getFileCredentialsBuilder() { + bitField0_ |= 0x00000001; + onChanged(); + return getFileCredentialsFieldBuilder().getBuilder(); + } + /** + * required .xtreemfs.pbrpc.FileCredentials file_credentials = 1; + */ + public org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentialsOrBuilder getFileCredentialsOrBuilder() { + if (fileCredentialsBuilder_ != null) { + return fileCredentialsBuilder_.getMessageOrBuilder(); + } else { + return fileCredentials_; + } + } + /** + * required .xtreemfs.pbrpc.FileCredentials file_credentials = 1; + */ + private com.google.protobuf.SingleFieldBuilder< + org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials, org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials.Builder, org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentialsOrBuilder> + getFileCredentialsFieldBuilder() { + if (fileCredentialsBuilder_ == null) { + fileCredentialsBuilder_ = new com.google.protobuf.SingleFieldBuilder< + org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials, org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials.Builder, org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentialsOrBuilder>( + fileCredentials_, + getParentForChildren(), + isClean()); + fileCredentials_ = null; + } + return fileCredentialsBuilder_; + } + // required .xtreemfs.pbrpc.Lock lock_request = 2; + private org.xtreemfs.pbrpc.generatedinterfaces.OSD.Lock lockRequest_ = org.xtreemfs.pbrpc.generatedinterfaces.OSD.Lock.getDefaultInstance(); + private com.google.protobuf.SingleFieldBuilder< + org.xtreemfs.pbrpc.generatedinterfaces.OSD.Lock, org.xtreemfs.pbrpc.generatedinterfaces.OSD.Lock.Builder, org.xtreemfs.pbrpc.generatedinterfaces.OSD.LockOrBuilder> lockRequestBuilder_; + /** + * required .xtreemfs.pbrpc.Lock lock_request = 2; + */ public boolean hasLockRequest() { - return result.hasLockRequest(); + return ((bitField0_ & 0x00000002) == 0x00000002); } + /** + * required .xtreemfs.pbrpc.Lock lock_request = 2; + */ public org.xtreemfs.pbrpc.generatedinterfaces.OSD.Lock getLockRequest() { - return result.getLockRequest(); + if (lockRequestBuilder_ == null) { + return lockRequest_; + } else { + return lockRequestBuilder_.getMessage(); + } } + /** + * required .xtreemfs.pbrpc.Lock lock_request = 2; + */ public Builder setLockRequest(org.xtreemfs.pbrpc.generatedinterfaces.OSD.Lock value) { - if (value == null) { - throw new NullPointerException(); + if (lockRequestBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + lockRequest_ = value; + onChanged(); + } else { + lockRequestBuilder_.setMessage(value); } - result.hasLockRequest = true; - result.lockRequest_ = value; + bitField0_ |= 0x00000002; return this; } - public Builder setLockRequest(org.xtreemfs.pbrpc.generatedinterfaces.OSD.Lock.Builder builderForValue) { - result.hasLockRequest = true; - result.lockRequest_ = builderForValue.build(); + /** + * required .xtreemfs.pbrpc.Lock lock_request = 2; + */ + public Builder setLockRequest( + org.xtreemfs.pbrpc.generatedinterfaces.OSD.Lock.Builder builderForValue) { + if (lockRequestBuilder_ == null) { + lockRequest_ = builderForValue.build(); + onChanged(); + } else { + lockRequestBuilder_.setMessage(builderForValue.build()); + } + bitField0_ |= 0x00000002; return this; } + /** + * required .xtreemfs.pbrpc.Lock lock_request = 2; + */ public Builder mergeLockRequest(org.xtreemfs.pbrpc.generatedinterfaces.OSD.Lock value) { - if (result.hasLockRequest() && - result.lockRequest_ != org.xtreemfs.pbrpc.generatedinterfaces.OSD.Lock.getDefaultInstance()) { - result.lockRequest_ = - org.xtreemfs.pbrpc.generatedinterfaces.OSD.Lock.newBuilder(result.lockRequest_).mergeFrom(value).buildPartial(); + if (lockRequestBuilder_ == null) { + if (((bitField0_ & 0x00000002) == 0x00000002) && + lockRequest_ != org.xtreemfs.pbrpc.generatedinterfaces.OSD.Lock.getDefaultInstance()) { + lockRequest_ = + org.xtreemfs.pbrpc.generatedinterfaces.OSD.Lock.newBuilder(lockRequest_).mergeFrom(value).buildPartial(); + } else { + lockRequest_ = value; + } + onChanged(); } else { - result.lockRequest_ = value; + lockRequestBuilder_.mergeFrom(value); } - result.hasLockRequest = true; + bitField0_ |= 0x00000002; return this; } + /** + * required .xtreemfs.pbrpc.Lock lock_request = 2; + */ public Builder clearLockRequest() { - result.hasLockRequest = false; - result.lockRequest_ = org.xtreemfs.pbrpc.generatedinterfaces.OSD.Lock.getDefaultInstance(); + if (lockRequestBuilder_ == null) { + lockRequest_ = org.xtreemfs.pbrpc.generatedinterfaces.OSD.Lock.getDefaultInstance(); + onChanged(); + } else { + lockRequestBuilder_.clear(); + } + bitField0_ = (bitField0_ & ~0x00000002); return this; } - + /** + * required .xtreemfs.pbrpc.Lock lock_request = 2; + */ + public org.xtreemfs.pbrpc.generatedinterfaces.OSD.Lock.Builder getLockRequestBuilder() { + bitField0_ |= 0x00000002; + onChanged(); + return getLockRequestFieldBuilder().getBuilder(); + } + /** + * required .xtreemfs.pbrpc.Lock lock_request = 2; + */ + public org.xtreemfs.pbrpc.generatedinterfaces.OSD.LockOrBuilder getLockRequestOrBuilder() { + if (lockRequestBuilder_ != null) { + return lockRequestBuilder_.getMessageOrBuilder(); + } else { + return lockRequest_; + } + } + /** + * required .xtreemfs.pbrpc.Lock lock_request = 2; + */ + private com.google.protobuf.SingleFieldBuilder< + org.xtreemfs.pbrpc.generatedinterfaces.OSD.Lock, org.xtreemfs.pbrpc.generatedinterfaces.OSD.Lock.Builder, org.xtreemfs.pbrpc.generatedinterfaces.OSD.LockOrBuilder> + getLockRequestFieldBuilder() { + if (lockRequestBuilder_ == null) { + lockRequestBuilder_ = new com.google.protobuf.SingleFieldBuilder< + org.xtreemfs.pbrpc.generatedinterfaces.OSD.Lock, org.xtreemfs.pbrpc.generatedinterfaces.OSD.Lock.Builder, org.xtreemfs.pbrpc.generatedinterfaces.OSD.LockOrBuilder>( + lockRequest_, + getParentForChildren(), + isClean()); + lockRequest_ = null; + } + return lockRequestBuilder_; + } + // @@protoc_insertion_point(builder_scope:xtreemfs.pbrpc.lockRequest) } - + static { defaultInstance = new lockRequest(true); - org.xtreemfs.pbrpc.generatedinterfaces.OSD.internalForceInit(); defaultInstance.initFields(); } - + // @@protoc_insertion_point(class_scope:xtreemfs.pbrpc.lockRequest) } - + + public interface xtreemfs_pingMesssageOrBuilder + extends com.google.protobuf.MessageOrBuilder { + + // required .xtreemfs.pbrpc.VivaldiCoordinates coordinates = 1; + /** + * required .xtreemfs.pbrpc.VivaldiCoordinates coordinates = 1; + */ + boolean hasCoordinates(); + /** + * required .xtreemfs.pbrpc.VivaldiCoordinates coordinates = 1; + */ + org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.VivaldiCoordinates getCoordinates(); + /** + * required .xtreemfs.pbrpc.VivaldiCoordinates coordinates = 1; + */ + org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.VivaldiCoordinatesOrBuilder getCoordinatesOrBuilder(); + + // required bool request_response = 2; + /** + * required bool request_response = 2; + */ + boolean hasRequestResponse(); + /** + * required bool request_response = 2; + */ + boolean getRequestResponse(); + } + /** + * Protobuf type {@code xtreemfs.pbrpc.xtreemfs_pingMesssage} + */ public static final class xtreemfs_pingMesssage extends - com.google.protobuf.GeneratedMessage { + com.google.protobuf.GeneratedMessage + implements xtreemfs_pingMesssageOrBuilder { // Use xtreemfs_pingMesssage.newBuilder() to construct. - private xtreemfs_pingMesssage() { - initFields(); + private xtreemfs_pingMesssage(com.google.protobuf.GeneratedMessage.Builder builder) { + super(builder); + this.unknownFields = builder.getUnknownFields(); } - private xtreemfs_pingMesssage(boolean noInit) {} - + private xtreemfs_pingMesssage(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); } + private static final xtreemfs_pingMesssage defaultInstance; public static xtreemfs_pingMesssage getDefaultInstance() { return defaultInstance; } - + public xtreemfs_pingMesssage getDefaultInstanceForType() { return defaultInstance; } - + + private final com.google.protobuf.UnknownFieldSet unknownFields; + @java.lang.Override + public final com.google.protobuf.UnknownFieldSet + getUnknownFields() { + return this.unknownFields; + } + private xtreemfs_pingMesssage( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + initFields(); + int mutable_bitField0_ = 0; + com.google.protobuf.UnknownFieldSet.Builder unknownFields = + com.google.protobuf.UnknownFieldSet.newBuilder(); + try { + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch (tag) { + case 0: + done = true; + break; + default: { + if (!parseUnknownField(input, unknownFields, + extensionRegistry, tag)) { + done = true; + } + break; + } + case 10: { + org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.VivaldiCoordinates.Builder subBuilder = null; + if (((bitField0_ & 0x00000001) == 0x00000001)) { + subBuilder = coordinates_.toBuilder(); + } + coordinates_ = input.readMessage(org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.VivaldiCoordinates.PARSER, extensionRegistry); + if (subBuilder != null) { + subBuilder.mergeFrom(coordinates_); + coordinates_ = subBuilder.buildPartial(); + } + bitField0_ |= 0x00000001; + break; + } + case 16: { + bitField0_ |= 0x00000002; + requestResponse_ = input.readBool(); + break; + } + } + } + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(this); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException( + e.getMessage()).setUnfinishedMessage(this); + } finally { + this.unknownFields = unknownFields.build(); + makeExtensionsImmutable(); + } + } public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { return org.xtreemfs.pbrpc.generatedinterfaces.OSD.internal_static_xtreemfs_pbrpc_xtreemfs_pingMesssage_descriptor; } - + protected com.google.protobuf.GeneratedMessage.FieldAccessorTable internalGetFieldAccessorTable() { - return org.xtreemfs.pbrpc.generatedinterfaces.OSD.internal_static_xtreemfs_pbrpc_xtreemfs_pingMesssage_fieldAccessorTable; + return org.xtreemfs.pbrpc.generatedinterfaces.OSD.internal_static_xtreemfs_pbrpc_xtreemfs_pingMesssage_fieldAccessorTable + .ensureFieldAccessorsInitialized( + org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_pingMesssage.class, org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_pingMesssage.Builder.class); } - + + public static com.google.protobuf.Parser PARSER = + new com.google.protobuf.AbstractParser() { + public xtreemfs_pingMesssage parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return new xtreemfs_pingMesssage(input, extensionRegistry); + } + }; + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; + } + + private int bitField0_; // required .xtreemfs.pbrpc.VivaldiCoordinates coordinates = 1; public static final int COORDINATES_FIELD_NUMBER = 1; - private boolean hasCoordinates; private org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.VivaldiCoordinates coordinates_; - public boolean hasCoordinates() { return hasCoordinates; } - public org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.VivaldiCoordinates getCoordinates() { return coordinates_; } - + /** + * required .xtreemfs.pbrpc.VivaldiCoordinates coordinates = 1; + */ + public boolean hasCoordinates() { + return ((bitField0_ & 0x00000001) == 0x00000001); + } + /** + * required .xtreemfs.pbrpc.VivaldiCoordinates coordinates = 1; + */ + public org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.VivaldiCoordinates getCoordinates() { + return coordinates_; + } + /** + * required .xtreemfs.pbrpc.VivaldiCoordinates coordinates = 1; + */ + public org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.VivaldiCoordinatesOrBuilder getCoordinatesOrBuilder() { + return coordinates_; + } + // required bool request_response = 2; public static final int REQUEST_RESPONSE_FIELD_NUMBER = 2; - private boolean hasRequestResponse; - private boolean requestResponse_ = false; - public boolean hasRequestResponse() { return hasRequestResponse; } - public boolean getRequestResponse() { return requestResponse_; } - + private boolean requestResponse_; + /** + * required bool request_response = 2; + */ + public boolean hasRequestResponse() { + return ((bitField0_ & 0x00000002) == 0x00000002); + } + /** + * required bool request_response = 2; + */ + public boolean getRequestResponse() { + return requestResponse_; + } + private void initFields() { coordinates_ = org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.VivaldiCoordinates.getDefaultInstance(); + requestResponse_ = false; } + private byte memoizedIsInitialized = -1; public final boolean isInitialized() { - if (!hasCoordinates) return false; - if (!hasRequestResponse) return false; - if (!getCoordinates().isInitialized()) return false; + byte isInitialized = memoizedIsInitialized; + if (isInitialized != -1) return isInitialized == 1; + + if (!hasCoordinates()) { + memoizedIsInitialized = 0; + return false; + } + if (!hasRequestResponse()) { + memoizedIsInitialized = 0; + return false; + } + if (!getCoordinates().isInitialized()) { + memoizedIsInitialized = 0; + return false; + } + memoizedIsInitialized = 1; return true; } - + public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException { getSerializedSize(); - if (hasCoordinates()) { - output.writeMessage(1, getCoordinates()); + if (((bitField0_ & 0x00000001) == 0x00000001)) { + output.writeMessage(1, coordinates_); } - if (hasRequestResponse()) { - output.writeBool(2, getRequestResponse()); + if (((bitField0_ & 0x00000002) == 0x00000002)) { + output.writeBool(2, requestResponse_); } getUnknownFields().writeTo(output); } - + private int memoizedSerializedSize = -1; public int getSerializedSize() { int size = memoizedSerializedSize; if (size != -1) return size; - + size = 0; - if (hasCoordinates()) { + if (((bitField0_ & 0x00000001) == 0x00000001)) { size += com.google.protobuf.CodedOutputStream - .computeMessageSize(1, getCoordinates()); + .computeMessageSize(1, coordinates_); } - if (hasRequestResponse()) { + if (((bitField0_ & 0x00000002) == 0x00000002)) { size += com.google.protobuf.CodedOutputStream - .computeBoolSize(2, getRequestResponse()); + .computeBoolSize(2, requestResponse_); } size += getUnknownFields().getSerializedSize(); memoizedSerializedSize = size; return size; } - + + private static final long serialVersionUID = 0L; + @java.lang.Override + protected java.lang.Object writeReplace() + throws java.io.ObjectStreamException { + return super.writeReplace(); + } + public static org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_pingMesssage parseFrom( com.google.protobuf.ByteString data) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data).buildParsed(); + return PARSER.parseFrom(data); } public static org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_pingMesssage parseFrom( com.google.protobuf.ByteString data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(data, extensionRegistry); } public static org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_pingMesssage parseFrom(byte[] data) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data).buildParsed(); + return PARSER.parseFrom(data); } public static org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_pingMesssage parseFrom( byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(data, extensionRegistry); } public static org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_pingMesssage parseFrom(java.io.InputStream input) throws java.io.IOException { - return newBuilder().mergeFrom(input).buildParsed(); + return PARSER.parseFrom(input); } public static org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_pingMesssage parseFrom( java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - return newBuilder().mergeFrom(input, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(input, extensionRegistry); } public static org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_pingMesssage parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException { - Builder builder = newBuilder(); - if (builder.mergeDelimitedFrom(input)) { - return builder.buildParsed(); - } else { - return null; - } + return PARSER.parseDelimitedFrom(input); } public static org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_pingMesssage parseDelimitedFrom( java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - Builder builder = newBuilder(); - if (builder.mergeDelimitedFrom(input, extensionRegistry)) { - return builder.buildParsed(); - } else { - return null; - } + return PARSER.parseDelimitedFrom(input, extensionRegistry); } public static org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_pingMesssage parseFrom( com.google.protobuf.CodedInputStream input) throws java.io.IOException { - return newBuilder().mergeFrom(input).buildParsed(); + return PARSER.parseFrom(input); } public static org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_pingMesssage parseFrom( com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - return newBuilder().mergeFrom(input, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(input, extensionRegistry); } - + public static Builder newBuilder() { return Builder.create(); } public Builder newBuilderForType() { return newBuilder(); } public static Builder newBuilder(org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_pingMesssage prototype) { return newBuilder().mergeFrom(prototype); } public Builder toBuilder() { return newBuilder(this); } - + + @java.lang.Override + protected Builder newBuilderForType( + com.google.protobuf.GeneratedMessage.BuilderParent parent) { + Builder builder = new Builder(parent); + return builder; + } + /** + * Protobuf type {@code xtreemfs.pbrpc.xtreemfs_pingMesssage} + */ public static final class Builder extends - com.google.protobuf.GeneratedMessage.Builder { - private org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_pingMesssage result; - + com.google.protobuf.GeneratedMessage.Builder + implements org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_pingMesssageOrBuilder { + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return org.xtreemfs.pbrpc.generatedinterfaces.OSD.internal_static_xtreemfs_pbrpc_xtreemfs_pingMesssage_descriptor; + } + + protected com.google.protobuf.GeneratedMessage.FieldAccessorTable + internalGetFieldAccessorTable() { + return org.xtreemfs.pbrpc.generatedinterfaces.OSD.internal_static_xtreemfs_pbrpc_xtreemfs_pingMesssage_fieldAccessorTable + .ensureFieldAccessorsInitialized( + org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_pingMesssage.class, org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_pingMesssage.Builder.class); + } + // Construct using org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_pingMesssage.newBuilder() - private Builder() {} - - private static Builder create() { - Builder builder = new Builder(); - builder.result = new org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_pingMesssage(); - return builder; + private Builder() { + maybeForceBuilderInitialization(); } - - protected org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_pingMesssage internalGetResult() { - return result; + + private Builder( + com.google.protobuf.GeneratedMessage.BuilderParent parent) { + super(parent); + maybeForceBuilderInitialization(); + } + private void maybeForceBuilderInitialization() { + if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) { + getCoordinatesFieldBuilder(); + } + } + private static Builder create() { + return new Builder(); } - + public Builder clear() { - if (result == null) { - throw new IllegalStateException( - "Cannot call clear() after build()."); + super.clear(); + if (coordinatesBuilder_ == null) { + coordinates_ = org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.VivaldiCoordinates.getDefaultInstance(); + } else { + coordinatesBuilder_.clear(); } - result = new org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_pingMesssage(); + bitField0_ = (bitField0_ & ~0x00000001); + requestResponse_ = false; + bitField0_ = (bitField0_ & ~0x00000002); return this; } - + public Builder clone() { - return create().mergeFrom(result); + return create().mergeFrom(buildPartial()); } - + public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() { - return org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_pingMesssage.getDescriptor(); + return org.xtreemfs.pbrpc.generatedinterfaces.OSD.internal_static_xtreemfs_pbrpc_xtreemfs_pingMesssage_descriptor; } - + public org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_pingMesssage getDefaultInstanceForType() { return org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_pingMesssage.getDefaultInstance(); } - - public boolean isInitialized() { - return result.isInitialized(); - } + public org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_pingMesssage build() { - if (result != null && !isInitialized()) { + org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_pingMesssage result = buildPartial(); + if (!result.isInitialized()) { throw newUninitializedMessageException(result); } - return buildPartial(); - } - - private org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_pingMesssage buildParsed() - throws com.google.protobuf.InvalidProtocolBufferException { - if (!isInitialized()) { - throw newUninitializedMessageException( - result).asInvalidProtocolBufferException(); - } - return buildPartial(); + return result; } - + public org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_pingMesssage buildPartial() { - if (result == null) { - throw new IllegalStateException( - "build() has already been called on this Builder."); + org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_pingMesssage result = new org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_pingMesssage(this); + int from_bitField0_ = bitField0_; + int to_bitField0_ = 0; + if (((from_bitField0_ & 0x00000001) == 0x00000001)) { + to_bitField0_ |= 0x00000001; + } + if (coordinatesBuilder_ == null) { + result.coordinates_ = coordinates_; + } else { + result.coordinates_ = coordinatesBuilder_.build(); + } + if (((from_bitField0_ & 0x00000002) == 0x00000002)) { + to_bitField0_ |= 0x00000002; } - org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_pingMesssage returnMe = result; - result = null; - return returnMe; + result.requestResponse_ = requestResponse_; + result.bitField0_ = to_bitField0_; + onBuilt(); + return result; } - + public Builder mergeFrom(com.google.protobuf.Message other) { if (other instanceof org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_pingMesssage) { return mergeFrom((org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_pingMesssage)other); @@ -14246,7 +28573,7 @@ public final class OSD { return this; } } - + public Builder mergeFrom(org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_pingMesssage other) { if (other == org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_pingMesssage.getDefaultInstance()) return this; if (other.hasCoordinates()) { @@ -14258,354 +28585,710 @@ public final class OSD { this.mergeUnknownFields(other.getUnknownFields()); return this; } - + + public final boolean isInitialized() { + if (!hasCoordinates()) { + + return false; + } + if (!hasRequestResponse()) { + + return false; + } + if (!getCoordinates().isInitialized()) { + + return false; + } + return true; + } + public Builder mergeFrom( com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - com.google.protobuf.UnknownFieldSet.Builder unknownFields = - com.google.protobuf.UnknownFieldSet.newBuilder( - this.getUnknownFields()); - while (true) { - int tag = input.readTag(); - switch (tag) { - case 0: - this.setUnknownFields(unknownFields.build()); - return this; - default: { - if (!parseUnknownField(input, unknownFields, - extensionRegistry, tag)) { - this.setUnknownFields(unknownFields.build()); - return this; - } - break; - } - case 10: { - org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.VivaldiCoordinates.Builder subBuilder = org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.VivaldiCoordinates.newBuilder(); - if (hasCoordinates()) { - subBuilder.mergeFrom(getCoordinates()); - } - input.readMessage(subBuilder, extensionRegistry); - setCoordinates(subBuilder.buildPartial()); - break; - } - case 16: { - setRequestResponse(input.readBool()); - break; - } + org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_pingMesssage parsedMessage = null; + try { + parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + parsedMessage = (org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_pingMesssage) e.getUnfinishedMessage(); + throw e; + } finally { + if (parsedMessage != null) { + mergeFrom(parsedMessage); } } + return this; } - - + private int bitField0_; + // required .xtreemfs.pbrpc.VivaldiCoordinates coordinates = 1; + private org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.VivaldiCoordinates coordinates_ = org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.VivaldiCoordinates.getDefaultInstance(); + private com.google.protobuf.SingleFieldBuilder< + org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.VivaldiCoordinates, org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.VivaldiCoordinates.Builder, org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.VivaldiCoordinatesOrBuilder> coordinatesBuilder_; + /** + * required .xtreemfs.pbrpc.VivaldiCoordinates coordinates = 1; + */ public boolean hasCoordinates() { - return result.hasCoordinates(); + return ((bitField0_ & 0x00000001) == 0x00000001); } + /** + * required .xtreemfs.pbrpc.VivaldiCoordinates coordinates = 1; + */ public org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.VivaldiCoordinates getCoordinates() { - return result.getCoordinates(); + if (coordinatesBuilder_ == null) { + return coordinates_; + } else { + return coordinatesBuilder_.getMessage(); + } } + /** + * required .xtreemfs.pbrpc.VivaldiCoordinates coordinates = 1; + */ public Builder setCoordinates(org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.VivaldiCoordinates value) { - if (value == null) { - throw new NullPointerException(); + if (coordinatesBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + coordinates_ = value; + onChanged(); + } else { + coordinatesBuilder_.setMessage(value); } - result.hasCoordinates = true; - result.coordinates_ = value; + bitField0_ |= 0x00000001; return this; } - public Builder setCoordinates(org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.VivaldiCoordinates.Builder builderForValue) { - result.hasCoordinates = true; - result.coordinates_ = builderForValue.build(); + /** + * required .xtreemfs.pbrpc.VivaldiCoordinates coordinates = 1; + */ + public Builder setCoordinates( + org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.VivaldiCoordinates.Builder builderForValue) { + if (coordinatesBuilder_ == null) { + coordinates_ = builderForValue.build(); + onChanged(); + } else { + coordinatesBuilder_.setMessage(builderForValue.build()); + } + bitField0_ |= 0x00000001; return this; } + /** + * required .xtreemfs.pbrpc.VivaldiCoordinates coordinates = 1; + */ public Builder mergeCoordinates(org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.VivaldiCoordinates value) { - if (result.hasCoordinates() && - result.coordinates_ != org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.VivaldiCoordinates.getDefaultInstance()) { - result.coordinates_ = - org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.VivaldiCoordinates.newBuilder(result.coordinates_).mergeFrom(value).buildPartial(); + if (coordinatesBuilder_ == null) { + if (((bitField0_ & 0x00000001) == 0x00000001) && + coordinates_ != org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.VivaldiCoordinates.getDefaultInstance()) { + coordinates_ = + org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.VivaldiCoordinates.newBuilder(coordinates_).mergeFrom(value).buildPartial(); + } else { + coordinates_ = value; + } + onChanged(); } else { - result.coordinates_ = value; + coordinatesBuilder_.mergeFrom(value); } - result.hasCoordinates = true; + bitField0_ |= 0x00000001; return this; } + /** + * required .xtreemfs.pbrpc.VivaldiCoordinates coordinates = 1; + */ public Builder clearCoordinates() { - result.hasCoordinates = false; - result.coordinates_ = org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.VivaldiCoordinates.getDefaultInstance(); + if (coordinatesBuilder_ == null) { + coordinates_ = org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.VivaldiCoordinates.getDefaultInstance(); + onChanged(); + } else { + coordinatesBuilder_.clear(); + } + bitField0_ = (bitField0_ & ~0x00000001); return this; } - + /** + * required .xtreemfs.pbrpc.VivaldiCoordinates coordinates = 1; + */ + public org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.VivaldiCoordinates.Builder getCoordinatesBuilder() { + bitField0_ |= 0x00000001; + onChanged(); + return getCoordinatesFieldBuilder().getBuilder(); + } + /** + * required .xtreemfs.pbrpc.VivaldiCoordinates coordinates = 1; + */ + public org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.VivaldiCoordinatesOrBuilder getCoordinatesOrBuilder() { + if (coordinatesBuilder_ != null) { + return coordinatesBuilder_.getMessageOrBuilder(); + } else { + return coordinates_; + } + } + /** + * required .xtreemfs.pbrpc.VivaldiCoordinates coordinates = 1; + */ + private com.google.protobuf.SingleFieldBuilder< + org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.VivaldiCoordinates, org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.VivaldiCoordinates.Builder, org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.VivaldiCoordinatesOrBuilder> + getCoordinatesFieldBuilder() { + if (coordinatesBuilder_ == null) { + coordinatesBuilder_ = new com.google.protobuf.SingleFieldBuilder< + org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.VivaldiCoordinates, org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.VivaldiCoordinates.Builder, org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.VivaldiCoordinatesOrBuilder>( + coordinates_, + getParentForChildren(), + isClean()); + coordinates_ = null; + } + return coordinatesBuilder_; + } + // required bool request_response = 2; + private boolean requestResponse_ ; + /** + * required bool request_response = 2; + */ public boolean hasRequestResponse() { - return result.hasRequestResponse(); + return ((bitField0_ & 0x00000002) == 0x00000002); } + /** + * required bool request_response = 2; + */ public boolean getRequestResponse() { - return result.getRequestResponse(); + return requestResponse_; } + /** + * required bool request_response = 2; + */ public Builder setRequestResponse(boolean value) { - result.hasRequestResponse = true; - result.requestResponse_ = value; + bitField0_ |= 0x00000002; + requestResponse_ = value; + onChanged(); return this; } + /** + * required bool request_response = 2; + */ public Builder clearRequestResponse() { - result.hasRequestResponse = false; - result.requestResponse_ = false; + bitField0_ = (bitField0_ & ~0x00000002); + requestResponse_ = false; + onChanged(); return this; } - + // @@protoc_insertion_point(builder_scope:xtreemfs.pbrpc.xtreemfs_pingMesssage) } - + static { defaultInstance = new xtreemfs_pingMesssage(true); - org.xtreemfs.pbrpc.generatedinterfaces.OSD.internalForceInit(); defaultInstance.initFields(); } - + // @@protoc_insertion_point(class_scope:xtreemfs.pbrpc.xtreemfs_pingMesssage) } - + + public interface xtreemfs_rwr_auth_stateRequestOrBuilder + extends com.google.protobuf.MessageOrBuilder { + + // required .xtreemfs.pbrpc.FileCredentials file_credentials = 1; + /** + * required .xtreemfs.pbrpc.FileCredentials file_credentials = 1; + */ + boolean hasFileCredentials(); + /** + * required .xtreemfs.pbrpc.FileCredentials file_credentials = 1; + */ + org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials getFileCredentials(); + /** + * required .xtreemfs.pbrpc.FileCredentials file_credentials = 1; + */ + org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentialsOrBuilder getFileCredentialsOrBuilder(); + + // required string file_id = 2; + /** + * required string file_id = 2; + */ + boolean hasFileId(); + /** + * required string file_id = 2; + */ + java.lang.String getFileId(); + /** + * required string file_id = 2; + */ + com.google.protobuf.ByteString + getFileIdBytes(); + + // required .xtreemfs.pbrpc.AuthoritativeReplicaState state = 3; + /** + * required .xtreemfs.pbrpc.AuthoritativeReplicaState state = 3; + */ + boolean hasState(); + /** + * required .xtreemfs.pbrpc.AuthoritativeReplicaState state = 3; + */ + org.xtreemfs.pbrpc.generatedinterfaces.OSD.AuthoritativeReplicaState getState(); + /** + * required .xtreemfs.pbrpc.AuthoritativeReplicaState state = 3; + */ + org.xtreemfs.pbrpc.generatedinterfaces.OSD.AuthoritativeReplicaStateOrBuilder getStateOrBuilder(); + } + /** + * Protobuf type {@code xtreemfs.pbrpc.xtreemfs_rwr_auth_stateRequest} + */ public static final class xtreemfs_rwr_auth_stateRequest extends - com.google.protobuf.GeneratedMessage { + com.google.protobuf.GeneratedMessage + implements xtreemfs_rwr_auth_stateRequestOrBuilder { // Use xtreemfs_rwr_auth_stateRequest.newBuilder() to construct. - private xtreemfs_rwr_auth_stateRequest() { - initFields(); + private xtreemfs_rwr_auth_stateRequest(com.google.protobuf.GeneratedMessage.Builder builder) { + super(builder); + this.unknownFields = builder.getUnknownFields(); } - private xtreemfs_rwr_auth_stateRequest(boolean noInit) {} - + private xtreemfs_rwr_auth_stateRequest(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); } + private static final xtreemfs_rwr_auth_stateRequest defaultInstance; public static xtreemfs_rwr_auth_stateRequest getDefaultInstance() { return defaultInstance; } - + public xtreemfs_rwr_auth_stateRequest getDefaultInstanceForType() { return defaultInstance; } - + + private final com.google.protobuf.UnknownFieldSet unknownFields; + @java.lang.Override + public final com.google.protobuf.UnknownFieldSet + getUnknownFields() { + return this.unknownFields; + } + private xtreemfs_rwr_auth_stateRequest( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + initFields(); + int mutable_bitField0_ = 0; + com.google.protobuf.UnknownFieldSet.Builder unknownFields = + com.google.protobuf.UnknownFieldSet.newBuilder(); + try { + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch (tag) { + case 0: + done = true; + break; + default: { + if (!parseUnknownField(input, unknownFields, + extensionRegistry, tag)) { + done = true; + } + break; + } + case 10: { + org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials.Builder subBuilder = null; + if (((bitField0_ & 0x00000001) == 0x00000001)) { + subBuilder = fileCredentials_.toBuilder(); + } + fileCredentials_ = input.readMessage(org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials.PARSER, extensionRegistry); + if (subBuilder != null) { + subBuilder.mergeFrom(fileCredentials_); + fileCredentials_ = subBuilder.buildPartial(); + } + bitField0_ |= 0x00000001; + break; + } + case 18: { + bitField0_ |= 0x00000002; + fileId_ = input.readBytes(); + break; + } + case 26: { + org.xtreemfs.pbrpc.generatedinterfaces.OSD.AuthoritativeReplicaState.Builder subBuilder = null; + if (((bitField0_ & 0x00000004) == 0x00000004)) { + subBuilder = state_.toBuilder(); + } + state_ = input.readMessage(org.xtreemfs.pbrpc.generatedinterfaces.OSD.AuthoritativeReplicaState.PARSER, extensionRegistry); + if (subBuilder != null) { + subBuilder.mergeFrom(state_); + state_ = subBuilder.buildPartial(); + } + bitField0_ |= 0x00000004; + break; + } + } + } + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(this); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException( + e.getMessage()).setUnfinishedMessage(this); + } finally { + this.unknownFields = unknownFields.build(); + makeExtensionsImmutable(); + } + } public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { return org.xtreemfs.pbrpc.generatedinterfaces.OSD.internal_static_xtreemfs_pbrpc_xtreemfs_rwr_auth_stateRequest_descriptor; } - + protected com.google.protobuf.GeneratedMessage.FieldAccessorTable internalGetFieldAccessorTable() { - return org.xtreemfs.pbrpc.generatedinterfaces.OSD.internal_static_xtreemfs_pbrpc_xtreemfs_rwr_auth_stateRequest_fieldAccessorTable; + return org.xtreemfs.pbrpc.generatedinterfaces.OSD.internal_static_xtreemfs_pbrpc_xtreemfs_rwr_auth_stateRequest_fieldAccessorTable + .ensureFieldAccessorsInitialized( + org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_rwr_auth_stateRequest.class, org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_rwr_auth_stateRequest.Builder.class); + } + + public static com.google.protobuf.Parser PARSER = + new com.google.protobuf.AbstractParser() { + public xtreemfs_rwr_auth_stateRequest parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return new xtreemfs_rwr_auth_stateRequest(input, extensionRegistry); + } + }; + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; } - + + private int bitField0_; // required .xtreemfs.pbrpc.FileCredentials file_credentials = 1; public static final int FILE_CREDENTIALS_FIELD_NUMBER = 1; - private boolean hasFileCredentials; private org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials fileCredentials_; - public boolean hasFileCredentials() { return hasFileCredentials; } - public org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials getFileCredentials() { return fileCredentials_; } - + /** + * required .xtreemfs.pbrpc.FileCredentials file_credentials = 1; + */ + public boolean hasFileCredentials() { + return ((bitField0_ & 0x00000001) == 0x00000001); + } + /** + * required .xtreemfs.pbrpc.FileCredentials file_credentials = 1; + */ + public org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials getFileCredentials() { + return fileCredentials_; + } + /** + * required .xtreemfs.pbrpc.FileCredentials file_credentials = 1; + */ + public org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentialsOrBuilder getFileCredentialsOrBuilder() { + return fileCredentials_; + } + // required string file_id = 2; public static final int FILE_ID_FIELD_NUMBER = 2; - private boolean hasFileId; - private java.lang.String fileId_ = ""; - public boolean hasFileId() { return hasFileId; } - public java.lang.String getFileId() { return fileId_; } - + private java.lang.Object fileId_; + /** + * required string file_id = 2; + */ + public boolean hasFileId() { + return ((bitField0_ & 0x00000002) == 0x00000002); + } + /** + * required string file_id = 2; + */ + public java.lang.String getFileId() { + java.lang.Object ref = fileId_; + if (ref instanceof java.lang.String) { + return (java.lang.String) ref; + } else { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + if (bs.isValidUtf8()) { + fileId_ = s; + } + return s; + } + } + /** + * required string file_id = 2; + */ + public com.google.protobuf.ByteString + getFileIdBytes() { + java.lang.Object ref = fileId_; + if (ref instanceof java.lang.String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + fileId_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + // required .xtreemfs.pbrpc.AuthoritativeReplicaState state = 3; public static final int STATE_FIELD_NUMBER = 3; - private boolean hasState; private org.xtreemfs.pbrpc.generatedinterfaces.OSD.AuthoritativeReplicaState state_; - public boolean hasState() { return hasState; } - public org.xtreemfs.pbrpc.generatedinterfaces.OSD.AuthoritativeReplicaState getState() { return state_; } - + /** + * required .xtreemfs.pbrpc.AuthoritativeReplicaState state = 3; + */ + public boolean hasState() { + return ((bitField0_ & 0x00000004) == 0x00000004); + } + /** + * required .xtreemfs.pbrpc.AuthoritativeReplicaState state = 3; + */ + public org.xtreemfs.pbrpc.generatedinterfaces.OSD.AuthoritativeReplicaState getState() { + return state_; + } + /** + * required .xtreemfs.pbrpc.AuthoritativeReplicaState state = 3; + */ + public org.xtreemfs.pbrpc.generatedinterfaces.OSD.AuthoritativeReplicaStateOrBuilder getStateOrBuilder() { + return state_; + } + private void initFields() { fileCredentials_ = org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials.getDefaultInstance(); + fileId_ = ""; state_ = org.xtreemfs.pbrpc.generatedinterfaces.OSD.AuthoritativeReplicaState.getDefaultInstance(); } + private byte memoizedIsInitialized = -1; public final boolean isInitialized() { - if (!hasFileCredentials) return false; - if (!hasFileId) return false; - if (!hasState) return false; - if (!getFileCredentials().isInitialized()) return false; - if (!getState().isInitialized()) return false; + byte isInitialized = memoizedIsInitialized; + if (isInitialized != -1) return isInitialized == 1; + + if (!hasFileCredentials()) { + memoizedIsInitialized = 0; + return false; + } + if (!hasFileId()) { + memoizedIsInitialized = 0; + return false; + } + if (!hasState()) { + memoizedIsInitialized = 0; + return false; + } + if (!getFileCredentials().isInitialized()) { + memoizedIsInitialized = 0; + return false; + } + if (!getState().isInitialized()) { + memoizedIsInitialized = 0; + return false; + } + memoizedIsInitialized = 1; return true; } - + public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException { getSerializedSize(); - if (hasFileCredentials()) { - output.writeMessage(1, getFileCredentials()); + if (((bitField0_ & 0x00000001) == 0x00000001)) { + output.writeMessage(1, fileCredentials_); } - if (hasFileId()) { - output.writeString(2, getFileId()); + if (((bitField0_ & 0x00000002) == 0x00000002)) { + output.writeBytes(2, getFileIdBytes()); } - if (hasState()) { - output.writeMessage(3, getState()); + if (((bitField0_ & 0x00000004) == 0x00000004)) { + output.writeMessage(3, state_); } getUnknownFields().writeTo(output); } - + private int memoizedSerializedSize = -1; public int getSerializedSize() { int size = memoizedSerializedSize; if (size != -1) return size; - + size = 0; - if (hasFileCredentials()) { + if (((bitField0_ & 0x00000001) == 0x00000001)) { size += com.google.protobuf.CodedOutputStream - .computeMessageSize(1, getFileCredentials()); + .computeMessageSize(1, fileCredentials_); } - if (hasFileId()) { + if (((bitField0_ & 0x00000002) == 0x00000002)) { size += com.google.protobuf.CodedOutputStream - .computeStringSize(2, getFileId()); + .computeBytesSize(2, getFileIdBytes()); } - if (hasState()) { + if (((bitField0_ & 0x00000004) == 0x00000004)) { size += com.google.protobuf.CodedOutputStream - .computeMessageSize(3, getState()); + .computeMessageSize(3, state_); } size += getUnknownFields().getSerializedSize(); memoizedSerializedSize = size; return size; } - + + private static final long serialVersionUID = 0L; + @java.lang.Override + protected java.lang.Object writeReplace() + throws java.io.ObjectStreamException { + return super.writeReplace(); + } + public static org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_rwr_auth_stateRequest parseFrom( com.google.protobuf.ByteString data) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data).buildParsed(); + return PARSER.parseFrom(data); } public static org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_rwr_auth_stateRequest parseFrom( com.google.protobuf.ByteString data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(data, extensionRegistry); } public static org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_rwr_auth_stateRequest parseFrom(byte[] data) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data).buildParsed(); + return PARSER.parseFrom(data); } public static org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_rwr_auth_stateRequest parseFrom( byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(data, extensionRegistry); } public static org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_rwr_auth_stateRequest parseFrom(java.io.InputStream input) throws java.io.IOException { - return newBuilder().mergeFrom(input).buildParsed(); + return PARSER.parseFrom(input); } public static org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_rwr_auth_stateRequest parseFrom( java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - return newBuilder().mergeFrom(input, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(input, extensionRegistry); } public static org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_rwr_auth_stateRequest parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException { - Builder builder = newBuilder(); - if (builder.mergeDelimitedFrom(input)) { - return builder.buildParsed(); - } else { - return null; - } + return PARSER.parseDelimitedFrom(input); } public static org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_rwr_auth_stateRequest parseDelimitedFrom( java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - Builder builder = newBuilder(); - if (builder.mergeDelimitedFrom(input, extensionRegistry)) { - return builder.buildParsed(); - } else { - return null; - } + return PARSER.parseDelimitedFrom(input, extensionRegistry); } public static org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_rwr_auth_stateRequest parseFrom( com.google.protobuf.CodedInputStream input) throws java.io.IOException { - return newBuilder().mergeFrom(input).buildParsed(); + return PARSER.parseFrom(input); } public static org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_rwr_auth_stateRequest parseFrom( com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - return newBuilder().mergeFrom(input, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(input, extensionRegistry); } - + public static Builder newBuilder() { return Builder.create(); } public Builder newBuilderForType() { return newBuilder(); } public static Builder newBuilder(org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_rwr_auth_stateRequest prototype) { return newBuilder().mergeFrom(prototype); } public Builder toBuilder() { return newBuilder(this); } - + + @java.lang.Override + protected Builder newBuilderForType( + com.google.protobuf.GeneratedMessage.BuilderParent parent) { + Builder builder = new Builder(parent); + return builder; + } + /** + * Protobuf type {@code xtreemfs.pbrpc.xtreemfs_rwr_auth_stateRequest} + */ public static final class Builder extends - com.google.protobuf.GeneratedMessage.Builder { - private org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_rwr_auth_stateRequest result; - + com.google.protobuf.GeneratedMessage.Builder + implements org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_rwr_auth_stateRequestOrBuilder { + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return org.xtreemfs.pbrpc.generatedinterfaces.OSD.internal_static_xtreemfs_pbrpc_xtreemfs_rwr_auth_stateRequest_descriptor; + } + + protected com.google.protobuf.GeneratedMessage.FieldAccessorTable + internalGetFieldAccessorTable() { + return org.xtreemfs.pbrpc.generatedinterfaces.OSD.internal_static_xtreemfs_pbrpc_xtreemfs_rwr_auth_stateRequest_fieldAccessorTable + .ensureFieldAccessorsInitialized( + org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_rwr_auth_stateRequest.class, org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_rwr_auth_stateRequest.Builder.class); + } + // Construct using org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_rwr_auth_stateRequest.newBuilder() - private Builder() {} - - private static Builder create() { - Builder builder = new Builder(); - builder.result = new org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_rwr_auth_stateRequest(); - return builder; + private Builder() { + maybeForceBuilderInitialization(); } - - protected org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_rwr_auth_stateRequest internalGetResult() { - return result; + + private Builder( + com.google.protobuf.GeneratedMessage.BuilderParent parent) { + super(parent); + maybeForceBuilderInitialization(); + } + private void maybeForceBuilderInitialization() { + if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) { + getFileCredentialsFieldBuilder(); + getStateFieldBuilder(); + } + } + private static Builder create() { + return new Builder(); } - + public Builder clear() { - if (result == null) { - throw new IllegalStateException( - "Cannot call clear() after build()."); + super.clear(); + if (fileCredentialsBuilder_ == null) { + fileCredentials_ = org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials.getDefaultInstance(); + } else { + fileCredentialsBuilder_.clear(); + } + bitField0_ = (bitField0_ & ~0x00000001); + fileId_ = ""; + bitField0_ = (bitField0_ & ~0x00000002); + if (stateBuilder_ == null) { + state_ = org.xtreemfs.pbrpc.generatedinterfaces.OSD.AuthoritativeReplicaState.getDefaultInstance(); + } else { + stateBuilder_.clear(); } - result = new org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_rwr_auth_stateRequest(); + bitField0_ = (bitField0_ & ~0x00000004); return this; } - + public Builder clone() { - return create().mergeFrom(result); + return create().mergeFrom(buildPartial()); } - + public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() { - return org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_rwr_auth_stateRequest.getDescriptor(); + return org.xtreemfs.pbrpc.generatedinterfaces.OSD.internal_static_xtreemfs_pbrpc_xtreemfs_rwr_auth_stateRequest_descriptor; } - + public org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_rwr_auth_stateRequest getDefaultInstanceForType() { return org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_rwr_auth_stateRequest.getDefaultInstance(); } - - public boolean isInitialized() { - return result.isInitialized(); - } + public org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_rwr_auth_stateRequest build() { - if (result != null && !isInitialized()) { + org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_rwr_auth_stateRequest result = buildPartial(); + if (!result.isInitialized()) { throw newUninitializedMessageException(result); } - return buildPartial(); - } - - private org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_rwr_auth_stateRequest buildParsed() - throws com.google.protobuf.InvalidProtocolBufferException { - if (!isInitialized()) { - throw newUninitializedMessageException( - result).asInvalidProtocolBufferException(); - } - return buildPartial(); + return result; } - + public org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_rwr_auth_stateRequest buildPartial() { - if (result == null) { - throw new IllegalStateException( - "build() has already been called on this Builder."); + org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_rwr_auth_stateRequest result = new org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_rwr_auth_stateRequest(this); + int from_bitField0_ = bitField0_; + int to_bitField0_ = 0; + if (((from_bitField0_ & 0x00000001) == 0x00000001)) { + to_bitField0_ |= 0x00000001; + } + if (fileCredentialsBuilder_ == null) { + result.fileCredentials_ = fileCredentials_; + } else { + result.fileCredentials_ = fileCredentialsBuilder_.build(); } - org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_rwr_auth_stateRequest returnMe = result; - result = null; - return returnMe; + if (((from_bitField0_ & 0x00000002) == 0x00000002)) { + to_bitField0_ |= 0x00000002; + } + result.fileId_ = fileId_; + if (((from_bitField0_ & 0x00000004) == 0x00000004)) { + to_bitField0_ |= 0x00000004; + } + if (stateBuilder_ == null) { + result.state_ = state_; + } else { + result.state_ = stateBuilder_.build(); + } + result.bitField0_ = to_bitField0_; + onBuilt(); + return result; } - + public Builder mergeFrom(com.google.protobuf.Message other) { if (other instanceof org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_rwr_auth_stateRequest) { return mergeFrom((org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_rwr_auth_stateRequest)other); @@ -14614,416 +29297,862 @@ public final class OSD { return this; } } - + public Builder mergeFrom(org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_rwr_auth_stateRequest other) { if (other == org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_rwr_auth_stateRequest.getDefaultInstance()) return this; if (other.hasFileCredentials()) { mergeFileCredentials(other.getFileCredentials()); } if (other.hasFileId()) { - setFileId(other.getFileId()); + bitField0_ |= 0x00000002; + fileId_ = other.fileId_; + onChanged(); } if (other.hasState()) { mergeState(other.getState()); } - this.mergeUnknownFields(other.getUnknownFields()); - return this; + this.mergeUnknownFields(other.getUnknownFields()); + return this; + } + + public final boolean isInitialized() { + if (!hasFileCredentials()) { + + return false; + } + if (!hasFileId()) { + + return false; + } + if (!hasState()) { + + return false; + } + if (!getFileCredentials().isInitialized()) { + + return false; + } + if (!getState().isInitialized()) { + + return false; + } + return true; } - + public Builder mergeFrom( com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - com.google.protobuf.UnknownFieldSet.Builder unknownFields = - com.google.protobuf.UnknownFieldSet.newBuilder( - this.getUnknownFields()); - while (true) { - int tag = input.readTag(); - switch (tag) { - case 0: - this.setUnknownFields(unknownFields.build()); - return this; - default: { - if (!parseUnknownField(input, unknownFields, - extensionRegistry, tag)) { - this.setUnknownFields(unknownFields.build()); - return this; - } - break; - } - case 10: { - org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials.Builder subBuilder = org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials.newBuilder(); - if (hasFileCredentials()) { - subBuilder.mergeFrom(getFileCredentials()); - } - input.readMessage(subBuilder, extensionRegistry); - setFileCredentials(subBuilder.buildPartial()); - break; - } - case 18: { - setFileId(input.readString()); - break; - } - case 26: { - org.xtreemfs.pbrpc.generatedinterfaces.OSD.AuthoritativeReplicaState.Builder subBuilder = org.xtreemfs.pbrpc.generatedinterfaces.OSD.AuthoritativeReplicaState.newBuilder(); - if (hasState()) { - subBuilder.mergeFrom(getState()); - } - input.readMessage(subBuilder, extensionRegistry); - setState(subBuilder.buildPartial()); - break; - } + org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_rwr_auth_stateRequest parsedMessage = null; + try { + parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + parsedMessage = (org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_rwr_auth_stateRequest) e.getUnfinishedMessage(); + throw e; + } finally { + if (parsedMessage != null) { + mergeFrom(parsedMessage); } } + return this; } - - + private int bitField0_; + // required .xtreemfs.pbrpc.FileCredentials file_credentials = 1; + private org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials fileCredentials_ = org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials.getDefaultInstance(); + private com.google.protobuf.SingleFieldBuilder< + org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials, org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials.Builder, org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentialsOrBuilder> fileCredentialsBuilder_; + /** + * required .xtreemfs.pbrpc.FileCredentials file_credentials = 1; + */ public boolean hasFileCredentials() { - return result.hasFileCredentials(); + return ((bitField0_ & 0x00000001) == 0x00000001); } + /** + * required .xtreemfs.pbrpc.FileCredentials file_credentials = 1; + */ public org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials getFileCredentials() { - return result.getFileCredentials(); + if (fileCredentialsBuilder_ == null) { + return fileCredentials_; + } else { + return fileCredentialsBuilder_.getMessage(); + } } + /** + * required .xtreemfs.pbrpc.FileCredentials file_credentials = 1; + */ public Builder setFileCredentials(org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials value) { - if (value == null) { - throw new NullPointerException(); + if (fileCredentialsBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + fileCredentials_ = value; + onChanged(); + } else { + fileCredentialsBuilder_.setMessage(value); } - result.hasFileCredentials = true; - result.fileCredentials_ = value; + bitField0_ |= 0x00000001; return this; } - public Builder setFileCredentials(org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials.Builder builderForValue) { - result.hasFileCredentials = true; - result.fileCredentials_ = builderForValue.build(); + /** + * required .xtreemfs.pbrpc.FileCredentials file_credentials = 1; + */ + public Builder setFileCredentials( + org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials.Builder builderForValue) { + if (fileCredentialsBuilder_ == null) { + fileCredentials_ = builderForValue.build(); + onChanged(); + } else { + fileCredentialsBuilder_.setMessage(builderForValue.build()); + } + bitField0_ |= 0x00000001; return this; } + /** + * required .xtreemfs.pbrpc.FileCredentials file_credentials = 1; + */ public Builder mergeFileCredentials(org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials value) { - if (result.hasFileCredentials() && - result.fileCredentials_ != org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials.getDefaultInstance()) { - result.fileCredentials_ = - org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials.newBuilder(result.fileCredentials_).mergeFrom(value).buildPartial(); + if (fileCredentialsBuilder_ == null) { + if (((bitField0_ & 0x00000001) == 0x00000001) && + fileCredentials_ != org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials.getDefaultInstance()) { + fileCredentials_ = + org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials.newBuilder(fileCredentials_).mergeFrom(value).buildPartial(); + } else { + fileCredentials_ = value; + } + onChanged(); } else { - result.fileCredentials_ = value; + fileCredentialsBuilder_.mergeFrom(value); } - result.hasFileCredentials = true; + bitField0_ |= 0x00000001; return this; } + /** + * required .xtreemfs.pbrpc.FileCredentials file_credentials = 1; + */ public Builder clearFileCredentials() { - result.hasFileCredentials = false; - result.fileCredentials_ = org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials.getDefaultInstance(); + if (fileCredentialsBuilder_ == null) { + fileCredentials_ = org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials.getDefaultInstance(); + onChanged(); + } else { + fileCredentialsBuilder_.clear(); + } + bitField0_ = (bitField0_ & ~0x00000001); return this; } - + /** + * required .xtreemfs.pbrpc.FileCredentials file_credentials = 1; + */ + public org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials.Builder getFileCredentialsBuilder() { + bitField0_ |= 0x00000001; + onChanged(); + return getFileCredentialsFieldBuilder().getBuilder(); + } + /** + * required .xtreemfs.pbrpc.FileCredentials file_credentials = 1; + */ + public org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentialsOrBuilder getFileCredentialsOrBuilder() { + if (fileCredentialsBuilder_ != null) { + return fileCredentialsBuilder_.getMessageOrBuilder(); + } else { + return fileCredentials_; + } + } + /** + * required .xtreemfs.pbrpc.FileCredentials file_credentials = 1; + */ + private com.google.protobuf.SingleFieldBuilder< + org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials, org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials.Builder, org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentialsOrBuilder> + getFileCredentialsFieldBuilder() { + if (fileCredentialsBuilder_ == null) { + fileCredentialsBuilder_ = new com.google.protobuf.SingleFieldBuilder< + org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials, org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials.Builder, org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentialsOrBuilder>( + fileCredentials_, + getParentForChildren(), + isClean()); + fileCredentials_ = null; + } + return fileCredentialsBuilder_; + } + // required string file_id = 2; + private java.lang.Object fileId_ = ""; + /** + * required string file_id = 2; + */ public boolean hasFileId() { - return result.hasFileId(); + return ((bitField0_ & 0x00000002) == 0x00000002); } + /** + * required string file_id = 2; + */ public java.lang.String getFileId() { - return result.getFileId(); + java.lang.Object ref = fileId_; + if (!(ref instanceof java.lang.String)) { + java.lang.String s = ((com.google.protobuf.ByteString) ref) + .toStringUtf8(); + fileId_ = s; + return s; + } else { + return (java.lang.String) ref; + } + } + /** + * required string file_id = 2; + */ + public com.google.protobuf.ByteString + getFileIdBytes() { + java.lang.Object ref = fileId_; + if (ref instanceof String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + fileId_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } } - public Builder setFileId(java.lang.String value) { + /** + * required string file_id = 2; + */ + public Builder setFileId( + java.lang.String value) { if (value == null) { throw new NullPointerException(); } - result.hasFileId = true; - result.fileId_ = value; + bitField0_ |= 0x00000002; + fileId_ = value; + onChanged(); return this; } + /** + * required string file_id = 2; + */ public Builder clearFileId() { - result.hasFileId = false; - result.fileId_ = getDefaultInstance().getFileId(); + bitField0_ = (bitField0_ & ~0x00000002); + fileId_ = getDefaultInstance().getFileId(); + onChanged(); + return this; + } + /** + * required string file_id = 2; + */ + public Builder setFileIdBytes( + com.google.protobuf.ByteString value) { + if (value == null) { + throw new NullPointerException(); + } + bitField0_ |= 0x00000002; + fileId_ = value; + onChanged(); return this; } - + // required .xtreemfs.pbrpc.AuthoritativeReplicaState state = 3; + private org.xtreemfs.pbrpc.generatedinterfaces.OSD.AuthoritativeReplicaState state_ = org.xtreemfs.pbrpc.generatedinterfaces.OSD.AuthoritativeReplicaState.getDefaultInstance(); + private com.google.protobuf.SingleFieldBuilder< + org.xtreemfs.pbrpc.generatedinterfaces.OSD.AuthoritativeReplicaState, org.xtreemfs.pbrpc.generatedinterfaces.OSD.AuthoritativeReplicaState.Builder, org.xtreemfs.pbrpc.generatedinterfaces.OSD.AuthoritativeReplicaStateOrBuilder> stateBuilder_; + /** + * required .xtreemfs.pbrpc.AuthoritativeReplicaState state = 3; + */ public boolean hasState() { - return result.hasState(); + return ((bitField0_ & 0x00000004) == 0x00000004); } + /** + * required .xtreemfs.pbrpc.AuthoritativeReplicaState state = 3; + */ public org.xtreemfs.pbrpc.generatedinterfaces.OSD.AuthoritativeReplicaState getState() { - return result.getState(); + if (stateBuilder_ == null) { + return state_; + } else { + return stateBuilder_.getMessage(); + } } + /** + * required .xtreemfs.pbrpc.AuthoritativeReplicaState state = 3; + */ public Builder setState(org.xtreemfs.pbrpc.generatedinterfaces.OSD.AuthoritativeReplicaState value) { - if (value == null) { - throw new NullPointerException(); + if (stateBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + state_ = value; + onChanged(); + } else { + stateBuilder_.setMessage(value); } - result.hasState = true; - result.state_ = value; + bitField0_ |= 0x00000004; return this; } - public Builder setState(org.xtreemfs.pbrpc.generatedinterfaces.OSD.AuthoritativeReplicaState.Builder builderForValue) { - result.hasState = true; - result.state_ = builderForValue.build(); + /** + * required .xtreemfs.pbrpc.AuthoritativeReplicaState state = 3; + */ + public Builder setState( + org.xtreemfs.pbrpc.generatedinterfaces.OSD.AuthoritativeReplicaState.Builder builderForValue) { + if (stateBuilder_ == null) { + state_ = builderForValue.build(); + onChanged(); + } else { + stateBuilder_.setMessage(builderForValue.build()); + } + bitField0_ |= 0x00000004; return this; } + /** + * required .xtreemfs.pbrpc.AuthoritativeReplicaState state = 3; + */ public Builder mergeState(org.xtreemfs.pbrpc.generatedinterfaces.OSD.AuthoritativeReplicaState value) { - if (result.hasState() && - result.state_ != org.xtreemfs.pbrpc.generatedinterfaces.OSD.AuthoritativeReplicaState.getDefaultInstance()) { - result.state_ = - org.xtreemfs.pbrpc.generatedinterfaces.OSD.AuthoritativeReplicaState.newBuilder(result.state_).mergeFrom(value).buildPartial(); + if (stateBuilder_ == null) { + if (((bitField0_ & 0x00000004) == 0x00000004) && + state_ != org.xtreemfs.pbrpc.generatedinterfaces.OSD.AuthoritativeReplicaState.getDefaultInstance()) { + state_ = + org.xtreemfs.pbrpc.generatedinterfaces.OSD.AuthoritativeReplicaState.newBuilder(state_).mergeFrom(value).buildPartial(); + } else { + state_ = value; + } + onChanged(); } else { - result.state_ = value; + stateBuilder_.mergeFrom(value); } - result.hasState = true; + bitField0_ |= 0x00000004; return this; } + /** + * required .xtreemfs.pbrpc.AuthoritativeReplicaState state = 3; + */ public Builder clearState() { - result.hasState = false; - result.state_ = org.xtreemfs.pbrpc.generatedinterfaces.OSD.AuthoritativeReplicaState.getDefaultInstance(); + if (stateBuilder_ == null) { + state_ = org.xtreemfs.pbrpc.generatedinterfaces.OSD.AuthoritativeReplicaState.getDefaultInstance(); + onChanged(); + } else { + stateBuilder_.clear(); + } + bitField0_ = (bitField0_ & ~0x00000004); return this; } - + /** + * required .xtreemfs.pbrpc.AuthoritativeReplicaState state = 3; + */ + public org.xtreemfs.pbrpc.generatedinterfaces.OSD.AuthoritativeReplicaState.Builder getStateBuilder() { + bitField0_ |= 0x00000004; + onChanged(); + return getStateFieldBuilder().getBuilder(); + } + /** + * required .xtreemfs.pbrpc.AuthoritativeReplicaState state = 3; + */ + public org.xtreemfs.pbrpc.generatedinterfaces.OSD.AuthoritativeReplicaStateOrBuilder getStateOrBuilder() { + if (stateBuilder_ != null) { + return stateBuilder_.getMessageOrBuilder(); + } else { + return state_; + } + } + /** + * required .xtreemfs.pbrpc.AuthoritativeReplicaState state = 3; + */ + private com.google.protobuf.SingleFieldBuilder< + org.xtreemfs.pbrpc.generatedinterfaces.OSD.AuthoritativeReplicaState, org.xtreemfs.pbrpc.generatedinterfaces.OSD.AuthoritativeReplicaState.Builder, org.xtreemfs.pbrpc.generatedinterfaces.OSD.AuthoritativeReplicaStateOrBuilder> + getStateFieldBuilder() { + if (stateBuilder_ == null) { + stateBuilder_ = new com.google.protobuf.SingleFieldBuilder< + org.xtreemfs.pbrpc.generatedinterfaces.OSD.AuthoritativeReplicaState, org.xtreemfs.pbrpc.generatedinterfaces.OSD.AuthoritativeReplicaState.Builder, org.xtreemfs.pbrpc.generatedinterfaces.OSD.AuthoritativeReplicaStateOrBuilder>( + state_, + getParentForChildren(), + isClean()); + state_ = null; + } + return stateBuilder_; + } + // @@protoc_insertion_point(builder_scope:xtreemfs.pbrpc.xtreemfs_rwr_auth_stateRequest) } - + static { defaultInstance = new xtreemfs_rwr_auth_stateRequest(true); - org.xtreemfs.pbrpc.generatedinterfaces.OSD.internalForceInit(); defaultInstance.initFields(); } - + // @@protoc_insertion_point(class_scope:xtreemfs.pbrpc.xtreemfs_rwr_auth_stateRequest) } - + + public interface xtreemfs_rwr_reset_completeRequestOrBuilder + extends com.google.protobuf.MessageOrBuilder { + + // required .xtreemfs.pbrpc.FileCredentials file_credentials = 1; + /** + * required .xtreemfs.pbrpc.FileCredentials file_credentials = 1; + */ + boolean hasFileCredentials(); + /** + * required .xtreemfs.pbrpc.FileCredentials file_credentials = 1; + */ + org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials getFileCredentials(); + /** + * required .xtreemfs.pbrpc.FileCredentials file_credentials = 1; + */ + org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentialsOrBuilder getFileCredentialsOrBuilder(); + + // required string file_id = 2; + /** + * required string file_id = 2; + */ + boolean hasFileId(); + /** + * required string file_id = 2; + */ + java.lang.String getFileId(); + /** + * required string file_id = 2; + */ + com.google.protobuf.ByteString + getFileIdBytes(); + + // required fixed32 primary_epoch = 3; + /** + * required fixed32 primary_epoch = 3; + */ + boolean hasPrimaryEpoch(); + /** + * required fixed32 primary_epoch = 3; + */ + int getPrimaryEpoch(); + } + /** + * Protobuf type {@code xtreemfs.pbrpc.xtreemfs_rwr_reset_completeRequest} + */ public static final class xtreemfs_rwr_reset_completeRequest extends - com.google.protobuf.GeneratedMessage { + com.google.protobuf.GeneratedMessage + implements xtreemfs_rwr_reset_completeRequestOrBuilder { // Use xtreemfs_rwr_reset_completeRequest.newBuilder() to construct. - private xtreemfs_rwr_reset_completeRequest() { - initFields(); + private xtreemfs_rwr_reset_completeRequest(com.google.protobuf.GeneratedMessage.Builder builder) { + super(builder); + this.unknownFields = builder.getUnknownFields(); } - private xtreemfs_rwr_reset_completeRequest(boolean noInit) {} - + private xtreemfs_rwr_reset_completeRequest(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); } + private static final xtreemfs_rwr_reset_completeRequest defaultInstance; public static xtreemfs_rwr_reset_completeRequest getDefaultInstance() { return defaultInstance; } - + public xtreemfs_rwr_reset_completeRequest getDefaultInstanceForType() { return defaultInstance; } - + + private final com.google.protobuf.UnknownFieldSet unknownFields; + @java.lang.Override + public final com.google.protobuf.UnknownFieldSet + getUnknownFields() { + return this.unknownFields; + } + private xtreemfs_rwr_reset_completeRequest( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + initFields(); + int mutable_bitField0_ = 0; + com.google.protobuf.UnknownFieldSet.Builder unknownFields = + com.google.protobuf.UnknownFieldSet.newBuilder(); + try { + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch (tag) { + case 0: + done = true; + break; + default: { + if (!parseUnknownField(input, unknownFields, + extensionRegistry, tag)) { + done = true; + } + break; + } + case 10: { + org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials.Builder subBuilder = null; + if (((bitField0_ & 0x00000001) == 0x00000001)) { + subBuilder = fileCredentials_.toBuilder(); + } + fileCredentials_ = input.readMessage(org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials.PARSER, extensionRegistry); + if (subBuilder != null) { + subBuilder.mergeFrom(fileCredentials_); + fileCredentials_ = subBuilder.buildPartial(); + } + bitField0_ |= 0x00000001; + break; + } + case 18: { + bitField0_ |= 0x00000002; + fileId_ = input.readBytes(); + break; + } + case 29: { + bitField0_ |= 0x00000004; + primaryEpoch_ = input.readFixed32(); + break; + } + } + } + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(this); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException( + e.getMessage()).setUnfinishedMessage(this); + } finally { + this.unknownFields = unknownFields.build(); + makeExtensionsImmutable(); + } + } public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { return org.xtreemfs.pbrpc.generatedinterfaces.OSD.internal_static_xtreemfs_pbrpc_xtreemfs_rwr_reset_completeRequest_descriptor; } - + protected com.google.protobuf.GeneratedMessage.FieldAccessorTable internalGetFieldAccessorTable() { - return org.xtreemfs.pbrpc.generatedinterfaces.OSD.internal_static_xtreemfs_pbrpc_xtreemfs_rwr_reset_completeRequest_fieldAccessorTable; + return org.xtreemfs.pbrpc.generatedinterfaces.OSD.internal_static_xtreemfs_pbrpc_xtreemfs_rwr_reset_completeRequest_fieldAccessorTable + .ensureFieldAccessorsInitialized( + org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_rwr_reset_completeRequest.class, org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_rwr_reset_completeRequest.Builder.class); + } + + public static com.google.protobuf.Parser PARSER = + new com.google.protobuf.AbstractParser() { + public xtreemfs_rwr_reset_completeRequest parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return new xtreemfs_rwr_reset_completeRequest(input, extensionRegistry); + } + }; + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; } - + + private int bitField0_; // required .xtreemfs.pbrpc.FileCredentials file_credentials = 1; public static final int FILE_CREDENTIALS_FIELD_NUMBER = 1; - private boolean hasFileCredentials; private org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials fileCredentials_; - public boolean hasFileCredentials() { return hasFileCredentials; } - public org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials getFileCredentials() { return fileCredentials_; } - + /** + * required .xtreemfs.pbrpc.FileCredentials file_credentials = 1; + */ + public boolean hasFileCredentials() { + return ((bitField0_ & 0x00000001) == 0x00000001); + } + /** + * required .xtreemfs.pbrpc.FileCredentials file_credentials = 1; + */ + public org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials getFileCredentials() { + return fileCredentials_; + } + /** + * required .xtreemfs.pbrpc.FileCredentials file_credentials = 1; + */ + public org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentialsOrBuilder getFileCredentialsOrBuilder() { + return fileCredentials_; + } + // required string file_id = 2; public static final int FILE_ID_FIELD_NUMBER = 2; - private boolean hasFileId; - private java.lang.String fileId_ = ""; - public boolean hasFileId() { return hasFileId; } - public java.lang.String getFileId() { return fileId_; } - + private java.lang.Object fileId_; + /** + * required string file_id = 2; + */ + public boolean hasFileId() { + return ((bitField0_ & 0x00000002) == 0x00000002); + } + /** + * required string file_id = 2; + */ + public java.lang.String getFileId() { + java.lang.Object ref = fileId_; + if (ref instanceof java.lang.String) { + return (java.lang.String) ref; + } else { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + if (bs.isValidUtf8()) { + fileId_ = s; + } + return s; + } + } + /** + * required string file_id = 2; + */ + public com.google.protobuf.ByteString + getFileIdBytes() { + java.lang.Object ref = fileId_; + if (ref instanceof java.lang.String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + fileId_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + // required fixed32 primary_epoch = 3; public static final int PRIMARY_EPOCH_FIELD_NUMBER = 3; - private boolean hasPrimaryEpoch; - private int primaryEpoch_ = 0; - public boolean hasPrimaryEpoch() { return hasPrimaryEpoch; } - public int getPrimaryEpoch() { return primaryEpoch_; } - + private int primaryEpoch_; + /** + * required fixed32 primary_epoch = 3; + */ + public boolean hasPrimaryEpoch() { + return ((bitField0_ & 0x00000004) == 0x00000004); + } + /** + * required fixed32 primary_epoch = 3; + */ + public int getPrimaryEpoch() { + return primaryEpoch_; + } + private void initFields() { fileCredentials_ = org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials.getDefaultInstance(); + fileId_ = ""; + primaryEpoch_ = 0; } + private byte memoizedIsInitialized = -1; public final boolean isInitialized() { - if (!hasFileCredentials) return false; - if (!hasFileId) return false; - if (!hasPrimaryEpoch) return false; - if (!getFileCredentials().isInitialized()) return false; + byte isInitialized = memoizedIsInitialized; + if (isInitialized != -1) return isInitialized == 1; + + if (!hasFileCredentials()) { + memoizedIsInitialized = 0; + return false; + } + if (!hasFileId()) { + memoizedIsInitialized = 0; + return false; + } + if (!hasPrimaryEpoch()) { + memoizedIsInitialized = 0; + return false; + } + if (!getFileCredentials().isInitialized()) { + memoizedIsInitialized = 0; + return false; + } + memoizedIsInitialized = 1; return true; } - + public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException { getSerializedSize(); - if (hasFileCredentials()) { - output.writeMessage(1, getFileCredentials()); + if (((bitField0_ & 0x00000001) == 0x00000001)) { + output.writeMessage(1, fileCredentials_); } - if (hasFileId()) { - output.writeString(2, getFileId()); + if (((bitField0_ & 0x00000002) == 0x00000002)) { + output.writeBytes(2, getFileIdBytes()); } - if (hasPrimaryEpoch()) { - output.writeFixed32(3, getPrimaryEpoch()); + if (((bitField0_ & 0x00000004) == 0x00000004)) { + output.writeFixed32(3, primaryEpoch_); } getUnknownFields().writeTo(output); } - + private int memoizedSerializedSize = -1; public int getSerializedSize() { int size = memoizedSerializedSize; if (size != -1) return size; - + size = 0; - if (hasFileCredentials()) { + if (((bitField0_ & 0x00000001) == 0x00000001)) { size += com.google.protobuf.CodedOutputStream - .computeMessageSize(1, getFileCredentials()); + .computeMessageSize(1, fileCredentials_); } - if (hasFileId()) { + if (((bitField0_ & 0x00000002) == 0x00000002)) { size += com.google.protobuf.CodedOutputStream - .computeStringSize(2, getFileId()); + .computeBytesSize(2, getFileIdBytes()); } - if (hasPrimaryEpoch()) { + if (((bitField0_ & 0x00000004) == 0x00000004)) { size += com.google.protobuf.CodedOutputStream - .computeFixed32Size(3, getPrimaryEpoch()); + .computeFixed32Size(3, primaryEpoch_); } size += getUnknownFields().getSerializedSize(); memoizedSerializedSize = size; return size; } - + + private static final long serialVersionUID = 0L; + @java.lang.Override + protected java.lang.Object writeReplace() + throws java.io.ObjectStreamException { + return super.writeReplace(); + } + public static org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_rwr_reset_completeRequest parseFrom( com.google.protobuf.ByteString data) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data).buildParsed(); + return PARSER.parseFrom(data); } public static org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_rwr_reset_completeRequest parseFrom( com.google.protobuf.ByteString data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(data, extensionRegistry); } public static org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_rwr_reset_completeRequest parseFrom(byte[] data) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data).buildParsed(); + return PARSER.parseFrom(data); } public static org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_rwr_reset_completeRequest parseFrom( byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(data, extensionRegistry); } public static org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_rwr_reset_completeRequest parseFrom(java.io.InputStream input) throws java.io.IOException { - return newBuilder().mergeFrom(input).buildParsed(); + return PARSER.parseFrom(input); } public static org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_rwr_reset_completeRequest parseFrom( java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - return newBuilder().mergeFrom(input, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(input, extensionRegistry); } public static org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_rwr_reset_completeRequest parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException { - Builder builder = newBuilder(); - if (builder.mergeDelimitedFrom(input)) { - return builder.buildParsed(); - } else { - return null; - } + return PARSER.parseDelimitedFrom(input); } public static org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_rwr_reset_completeRequest parseDelimitedFrom( java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - Builder builder = newBuilder(); - if (builder.mergeDelimitedFrom(input, extensionRegistry)) { - return builder.buildParsed(); - } else { - return null; - } + return PARSER.parseDelimitedFrom(input, extensionRegistry); } public static org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_rwr_reset_completeRequest parseFrom( com.google.protobuf.CodedInputStream input) throws java.io.IOException { - return newBuilder().mergeFrom(input).buildParsed(); + return PARSER.parseFrom(input); } public static org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_rwr_reset_completeRequest parseFrom( com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - return newBuilder().mergeFrom(input, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(input, extensionRegistry); } - + public static Builder newBuilder() { return Builder.create(); } public Builder newBuilderForType() { return newBuilder(); } public static Builder newBuilder(org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_rwr_reset_completeRequest prototype) { return newBuilder().mergeFrom(prototype); } public Builder toBuilder() { return newBuilder(this); } - + + @java.lang.Override + protected Builder newBuilderForType( + com.google.protobuf.GeneratedMessage.BuilderParent parent) { + Builder builder = new Builder(parent); + return builder; + } + /** + * Protobuf type {@code xtreemfs.pbrpc.xtreemfs_rwr_reset_completeRequest} + */ public static final class Builder extends - com.google.protobuf.GeneratedMessage.Builder { - private org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_rwr_reset_completeRequest result; - + com.google.protobuf.GeneratedMessage.Builder + implements org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_rwr_reset_completeRequestOrBuilder { + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return org.xtreemfs.pbrpc.generatedinterfaces.OSD.internal_static_xtreemfs_pbrpc_xtreemfs_rwr_reset_completeRequest_descriptor; + } + + protected com.google.protobuf.GeneratedMessage.FieldAccessorTable + internalGetFieldAccessorTable() { + return org.xtreemfs.pbrpc.generatedinterfaces.OSD.internal_static_xtreemfs_pbrpc_xtreemfs_rwr_reset_completeRequest_fieldAccessorTable + .ensureFieldAccessorsInitialized( + org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_rwr_reset_completeRequest.class, org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_rwr_reset_completeRequest.Builder.class); + } + // Construct using org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_rwr_reset_completeRequest.newBuilder() - private Builder() {} - - private static Builder create() { - Builder builder = new Builder(); - builder.result = new org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_rwr_reset_completeRequest(); - return builder; + private Builder() { + maybeForceBuilderInitialization(); } - - protected org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_rwr_reset_completeRequest internalGetResult() { - return result; + + private Builder( + com.google.protobuf.GeneratedMessage.BuilderParent parent) { + super(parent); + maybeForceBuilderInitialization(); + } + private void maybeForceBuilderInitialization() { + if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) { + getFileCredentialsFieldBuilder(); + } + } + private static Builder create() { + return new Builder(); } - + public Builder clear() { - if (result == null) { - throw new IllegalStateException( - "Cannot call clear() after build()."); + super.clear(); + if (fileCredentialsBuilder_ == null) { + fileCredentials_ = org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials.getDefaultInstance(); + } else { + fileCredentialsBuilder_.clear(); } - result = new org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_rwr_reset_completeRequest(); + bitField0_ = (bitField0_ & ~0x00000001); + fileId_ = ""; + bitField0_ = (bitField0_ & ~0x00000002); + primaryEpoch_ = 0; + bitField0_ = (bitField0_ & ~0x00000004); return this; } - + public Builder clone() { - return create().mergeFrom(result); + return create().mergeFrom(buildPartial()); } - + public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() { - return org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_rwr_reset_completeRequest.getDescriptor(); + return org.xtreemfs.pbrpc.generatedinterfaces.OSD.internal_static_xtreemfs_pbrpc_xtreemfs_rwr_reset_completeRequest_descriptor; } - + public org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_rwr_reset_completeRequest getDefaultInstanceForType() { return org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_rwr_reset_completeRequest.getDefaultInstance(); } - - public boolean isInitialized() { - return result.isInitialized(); - } + public org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_rwr_reset_completeRequest build() { - if (result != null && !isInitialized()) { + org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_rwr_reset_completeRequest result = buildPartial(); + if (!result.isInitialized()) { throw newUninitializedMessageException(result); } - return buildPartial(); - } - - private org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_rwr_reset_completeRequest buildParsed() - throws com.google.protobuf.InvalidProtocolBufferException { - if (!isInitialized()) { - throw newUninitializedMessageException( - result).asInvalidProtocolBufferException(); - } - return buildPartial(); + return result; } - + public org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_rwr_reset_completeRequest buildPartial() { - if (result == null) { - throw new IllegalStateException( - "build() has already been called on this Builder."); + org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_rwr_reset_completeRequest result = new org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_rwr_reset_completeRequest(this); + int from_bitField0_ = bitField0_; + int to_bitField0_ = 0; + if (((from_bitField0_ & 0x00000001) == 0x00000001)) { + to_bitField0_ |= 0x00000001; + } + if (fileCredentialsBuilder_ == null) { + result.fileCredentials_ = fileCredentials_; + } else { + result.fileCredentials_ = fileCredentialsBuilder_.build(); } - org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_rwr_reset_completeRequest returnMe = result; - result = null; - return returnMe; + if (((from_bitField0_ & 0x00000002) == 0x00000002)) { + to_bitField0_ |= 0x00000002; + } + result.fileId_ = fileId_; + if (((from_bitField0_ & 0x00000004) == 0x00000004)) { + to_bitField0_ |= 0x00000004; + } + result.primaryEpoch_ = primaryEpoch_; + result.bitField0_ = to_bitField0_; + onBuilt(); + return result; } - + public Builder mergeFrom(com.google.protobuf.Message other) { if (other instanceof org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_rwr_reset_completeRequest) { return mergeFrom((org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_rwr_reset_completeRequest)other); @@ -15032,14 +30161,16 @@ public final class OSD { return this; } } - + public Builder mergeFrom(org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_rwr_reset_completeRequest other) { if (other == org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_rwr_reset_completeRequest.getDefaultInstance()) return this; if (other.hasFileCredentials()) { mergeFileCredentials(other.getFileCredentials()); } if (other.hasFileId()) { - setFileId(other.getFileId()); + bitField0_ |= 0x00000002; + fileId_ = other.fileId_; + onChanged(); } if (other.hasPrimaryEpoch()) { setPrimaryEpoch(other.getPrimaryEpoch()); @@ -15047,2439 +30178,281 @@ public final class OSD { this.mergeUnknownFields(other.getUnknownFields()); return this; } - + + public final boolean isInitialized() { + if (!hasFileCredentials()) { + + return false; + } + if (!hasFileId()) { + + return false; + } + if (!hasPrimaryEpoch()) { + + return false; + } + if (!getFileCredentials().isInitialized()) { + + return false; + } + return true; + } + public Builder mergeFrom( com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - com.google.protobuf.UnknownFieldSet.Builder unknownFields = - com.google.protobuf.UnknownFieldSet.newBuilder( - this.getUnknownFields()); - while (true) { - int tag = input.readTag(); - switch (tag) { - case 0: - this.setUnknownFields(unknownFields.build()); - return this; - default: { - if (!parseUnknownField(input, unknownFields, - extensionRegistry, tag)) { - this.setUnknownFields(unknownFields.build()); - return this; - } - break; - } - case 10: { - org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials.Builder subBuilder = org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials.newBuilder(); - if (hasFileCredentials()) { - subBuilder.mergeFrom(getFileCredentials()); - } - input.readMessage(subBuilder, extensionRegistry); - setFileCredentials(subBuilder.buildPartial()); - break; - } - case 18: { - setFileId(input.readString()); - break; - } - case 29: { - setPrimaryEpoch(input.readFixed32()); - break; - } + org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_rwr_reset_completeRequest parsedMessage = null; + try { + parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + parsedMessage = (org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_rwr_reset_completeRequest) e.getUnfinishedMessage(); + throw e; + } finally { + if (parsedMessage != null) { + mergeFrom(parsedMessage); } } + return this; } - - + private int bitField0_; + // required .xtreemfs.pbrpc.FileCredentials file_credentials = 1; + private org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials fileCredentials_ = org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials.getDefaultInstance(); + private com.google.protobuf.SingleFieldBuilder< + org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials, org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials.Builder, org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentialsOrBuilder> fileCredentialsBuilder_; + /** + * required .xtreemfs.pbrpc.FileCredentials file_credentials = 1; + */ public boolean hasFileCredentials() { - return result.hasFileCredentials(); + return ((bitField0_ & 0x00000001) == 0x00000001); } + /** + * required .xtreemfs.pbrpc.FileCredentials file_credentials = 1; + */ public org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials getFileCredentials() { - return result.getFileCredentials(); + if (fileCredentialsBuilder_ == null) { + return fileCredentials_; + } else { + return fileCredentialsBuilder_.getMessage(); + } } + /** + * required .xtreemfs.pbrpc.FileCredentials file_credentials = 1; + */ public Builder setFileCredentials(org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials value) { - if (value == null) { - throw new NullPointerException(); + if (fileCredentialsBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + fileCredentials_ = value; + onChanged(); + } else { + fileCredentialsBuilder_.setMessage(value); } - result.hasFileCredentials = true; - result.fileCredentials_ = value; + bitField0_ |= 0x00000001; return this; } - public Builder setFileCredentials(org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials.Builder builderForValue) { - result.hasFileCredentials = true; - result.fileCredentials_ = builderForValue.build(); + /** + * required .xtreemfs.pbrpc.FileCredentials file_credentials = 1; + */ + public Builder setFileCredentials( + org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials.Builder builderForValue) { + if (fileCredentialsBuilder_ == null) { + fileCredentials_ = builderForValue.build(); + onChanged(); + } else { + fileCredentialsBuilder_.setMessage(builderForValue.build()); + } + bitField0_ |= 0x00000001; return this; } + /** + * required .xtreemfs.pbrpc.FileCredentials file_credentials = 1; + */ public Builder mergeFileCredentials(org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials value) { - if (result.hasFileCredentials() && - result.fileCredentials_ != org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials.getDefaultInstance()) { - result.fileCredentials_ = - org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials.newBuilder(result.fileCredentials_).mergeFrom(value).buildPartial(); + if (fileCredentialsBuilder_ == null) { + if (((bitField0_ & 0x00000001) == 0x00000001) && + fileCredentials_ != org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials.getDefaultInstance()) { + fileCredentials_ = + org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials.newBuilder(fileCredentials_).mergeFrom(value).buildPartial(); + } else { + fileCredentials_ = value; + } + onChanged(); } else { - result.fileCredentials_ = value; + fileCredentialsBuilder_.mergeFrom(value); } - result.hasFileCredentials = true; + bitField0_ |= 0x00000001; return this; } + /** + * required .xtreemfs.pbrpc.FileCredentials file_credentials = 1; + */ public Builder clearFileCredentials() { - result.hasFileCredentials = false; - result.fileCredentials_ = org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials.getDefaultInstance(); + if (fileCredentialsBuilder_ == null) { + fileCredentials_ = org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials.getDefaultInstance(); + onChanged(); + } else { + fileCredentialsBuilder_.clear(); + } + bitField0_ = (bitField0_ & ~0x00000001); return this; } - + /** + * required .xtreemfs.pbrpc.FileCredentials file_credentials = 1; + */ + public org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials.Builder getFileCredentialsBuilder() { + bitField0_ |= 0x00000001; + onChanged(); + return getFileCredentialsFieldBuilder().getBuilder(); + } + /** + * required .xtreemfs.pbrpc.FileCredentials file_credentials = 1; + */ + public org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentialsOrBuilder getFileCredentialsOrBuilder() { + if (fileCredentialsBuilder_ != null) { + return fileCredentialsBuilder_.getMessageOrBuilder(); + } else { + return fileCredentials_; + } + } + /** + * required .xtreemfs.pbrpc.FileCredentials file_credentials = 1; + */ + private com.google.protobuf.SingleFieldBuilder< + org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials, org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials.Builder, org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentialsOrBuilder> + getFileCredentialsFieldBuilder() { + if (fileCredentialsBuilder_ == null) { + fileCredentialsBuilder_ = new com.google.protobuf.SingleFieldBuilder< + org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials, org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials.Builder, org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentialsOrBuilder>( + fileCredentials_, + getParentForChildren(), + isClean()); + fileCredentials_ = null; + } + return fileCredentialsBuilder_; + } + // required string file_id = 2; + private java.lang.Object fileId_ = ""; + /** + * required string file_id = 2; + */ public boolean hasFileId() { - return result.hasFileId(); + return ((bitField0_ & 0x00000002) == 0x00000002); } + /** + * required string file_id = 2; + */ public java.lang.String getFileId() { - return result.getFileId(); + java.lang.Object ref = fileId_; + if (!(ref instanceof java.lang.String)) { + java.lang.String s = ((com.google.protobuf.ByteString) ref) + .toStringUtf8(); + fileId_ = s; + return s; + } else { + return (java.lang.String) ref; + } + } + /** + * required string file_id = 2; + */ + public com.google.protobuf.ByteString + getFileIdBytes() { + java.lang.Object ref = fileId_; + if (ref instanceof String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + fileId_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } } - public Builder setFileId(java.lang.String value) { + /** + * required string file_id = 2; + */ + public Builder setFileId( + java.lang.String value) { if (value == null) { throw new NullPointerException(); } - result.hasFileId = true; - result.fileId_ = value; + bitField0_ |= 0x00000002; + fileId_ = value; + onChanged(); return this; } + /** + * required string file_id = 2; + */ public Builder clearFileId() { - result.hasFileId = false; - result.fileId_ = getDefaultInstance().getFileId(); + bitField0_ = (bitField0_ & ~0x00000002); + fileId_ = getDefaultInstance().getFileId(); + onChanged(); + return this; + } + /** + * required string file_id = 2; + */ + public Builder setFileIdBytes( + com.google.protobuf.ByteString value) { + if (value == null) { + throw new NullPointerException(); + } + bitField0_ |= 0x00000002; + fileId_ = value; + onChanged(); return this; } - + // required fixed32 primary_epoch = 3; + private int primaryEpoch_ ; + /** + * required fixed32 primary_epoch = 3; + */ public boolean hasPrimaryEpoch() { - return result.hasPrimaryEpoch(); + return ((bitField0_ & 0x00000004) == 0x00000004); } + /** + * required fixed32 primary_epoch = 3; + */ public int getPrimaryEpoch() { - return result.getPrimaryEpoch(); + return primaryEpoch_; } + /** + * required fixed32 primary_epoch = 3; + */ public Builder setPrimaryEpoch(int value) { - result.hasPrimaryEpoch = true; - result.primaryEpoch_ = value; + bitField0_ |= 0x00000004; + primaryEpoch_ = value; + onChanged(); return this; } + /** + * required fixed32 primary_epoch = 3; + */ public Builder clearPrimaryEpoch() { - result.hasPrimaryEpoch = false; - result.primaryEpoch_ = 0; + bitField0_ = (bitField0_ & ~0x00000004); + primaryEpoch_ = 0; + onChanged(); return this; } - + // @@protoc_insertion_point(builder_scope:xtreemfs.pbrpc.xtreemfs_rwr_reset_completeRequest) } - + static { defaultInstance = new xtreemfs_rwr_reset_completeRequest(true); - org.xtreemfs.pbrpc.generatedinterfaces.OSD.internalForceInit(); defaultInstance.initFields(); } - + // @@protoc_insertion_point(class_scope:xtreemfs.pbrpc.xtreemfs_rwr_reset_completeRequest) } - - public static abstract class OSDService - implements com.google.protobuf.Service { - protected OSDService() {} - - public interface Interface { - public abstract void read( - com.google.protobuf.RpcController controller, - org.xtreemfs.pbrpc.generatedinterfaces.OSD.readRequest request, - com.google.protobuf.RpcCallback done); - - public abstract void truncate( - com.google.protobuf.RpcController controller, - org.xtreemfs.pbrpc.generatedinterfaces.OSD.truncateRequest request, - com.google.protobuf.RpcCallback done); - - public abstract void unlink( - com.google.protobuf.RpcController controller, - org.xtreemfs.pbrpc.generatedinterfaces.OSD.unlink_osd_Request request, - com.google.protobuf.RpcCallback done); - - public abstract void write( - com.google.protobuf.RpcController controller, - org.xtreemfs.pbrpc.generatedinterfaces.OSD.writeRequest request, - com.google.protobuf.RpcCallback done); - - public abstract void xtreemfsBroadcastGmax( - com.google.protobuf.RpcController controller, - org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_broadcast_gmaxRequest request, - com.google.protobuf.RpcCallback done); - - public abstract void xtreemfsCheckObject( - com.google.protobuf.RpcController controller, - org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_check_objectRequest request, - com.google.protobuf.RpcCallback done); - - public abstract void xtreemfsCleanupGetResults( - com.google.protobuf.RpcController controller, - org.xtreemfs.pbrpc.generatedinterfaces.Common.emptyRequest request, - com.google.protobuf.RpcCallback done); - - public abstract void xtreemfsCleanupIsRunning( - com.google.protobuf.RpcController controller, - org.xtreemfs.pbrpc.generatedinterfaces.Common.emptyRequest request, - com.google.protobuf.RpcCallback done); - - public abstract void xtreemfsCleanupStart( - com.google.protobuf.RpcController controller, - org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_cleanup_startRequest request, - com.google.protobuf.RpcCallback done); - - public abstract void xtreemfsCleanupStatus( - com.google.protobuf.RpcController controller, - org.xtreemfs.pbrpc.generatedinterfaces.Common.emptyRequest request, - com.google.protobuf.RpcCallback done); - - public abstract void xtreemfsCleanupStop( - com.google.protobuf.RpcController controller, - org.xtreemfs.pbrpc.generatedinterfaces.Common.emptyRequest request, - com.google.protobuf.RpcCallback done); - - public abstract void xtreemfsCleanupVersionsStart( - com.google.protobuf.RpcController controller, - org.xtreemfs.pbrpc.generatedinterfaces.Common.emptyRequest request, - com.google.protobuf.RpcCallback done); - - public abstract void xtreemfsRepairObject( - com.google.protobuf.RpcController controller, - org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_repair_objectRequest request, - com.google.protobuf.RpcCallback done); - - public abstract void xtreemfsRwrFetch( - com.google.protobuf.RpcController controller, - org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_rwr_fetchRequest request, - com.google.protobuf.RpcCallback done); - - public abstract void xtreemfsRwrFleaseMsg( - com.google.protobuf.RpcController controller, - org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_rwr_flease_msgRequest request, - com.google.protobuf.RpcCallback done); - - public abstract void xtreemfsRwrNotify( - com.google.protobuf.RpcController controller, - org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials request, - com.google.protobuf.RpcCallback done); - - public abstract void xtreemfsRwrSetPrimaryEpoch( - com.google.protobuf.RpcController controller, - org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_rwr_set_primary_epochRequest request, - com.google.protobuf.RpcCallback done); - - public abstract void xtreemfsRwrStatus( - com.google.protobuf.RpcController controller, - org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_rwr_statusRequest request, - com.google.protobuf.RpcCallback done); - - public abstract void xtreemfsRwrTruncate( - com.google.protobuf.RpcController controller, - org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_rwr_truncateRequest request, - com.google.protobuf.RpcCallback done); - - public abstract void xtreemfsRwrUpdate( - com.google.protobuf.RpcController controller, - org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_rwr_updateRequest request, - com.google.protobuf.RpcCallback done); - - public abstract void xtreemfsRwrAuthState( - com.google.protobuf.RpcController controller, - org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_rwr_auth_stateRequest request, - com.google.protobuf.RpcCallback done); - - public abstract void xtreemfsRwrResetComplete( - com.google.protobuf.RpcController controller, - org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_rwr_reset_completeRequest request, - com.google.protobuf.RpcCallback done); - - public abstract void xtreemfsInternalGetGmax( - com.google.protobuf.RpcController controller, - org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_internal_get_gmaxRequest request, - com.google.protobuf.RpcCallback done); - - public abstract void xtreemfsInternalTruncate( - com.google.protobuf.RpcController controller, - org.xtreemfs.pbrpc.generatedinterfaces.OSD.truncateRequest request, - com.google.protobuf.RpcCallback done); - - public abstract void xtreemfsInternalGetFileSize( - com.google.protobuf.RpcController controller, - org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_internal_get_file_sizeRequest request, - com.google.protobuf.RpcCallback done); - - public abstract void xtreemfsInternalReadLocal( - com.google.protobuf.RpcController controller, - org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_internal_read_localRequest request, - com.google.protobuf.RpcCallback done); - - public abstract void xtreemfsInternalGetObjectSet( - com.google.protobuf.RpcController controller, - org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_internal_get_object_setRequest request, - com.google.protobuf.RpcCallback done); - - public abstract void xtreemfsInternalGetFileidList( - com.google.protobuf.RpcController controller, - org.xtreemfs.pbrpc.generatedinterfaces.Common.emptyRequest request, - com.google.protobuf.RpcCallback done); - - public abstract void xtreemfsLockAcquire( - com.google.protobuf.RpcController controller, - org.xtreemfs.pbrpc.generatedinterfaces.OSD.lockRequest request, - com.google.protobuf.RpcCallback done); - - public abstract void xtreemfsLockCheck( - com.google.protobuf.RpcController controller, - org.xtreemfs.pbrpc.generatedinterfaces.OSD.lockRequest request, - com.google.protobuf.RpcCallback done); - - public abstract void xtreemfsLockRelease( - com.google.protobuf.RpcController controller, - org.xtreemfs.pbrpc.generatedinterfaces.OSD.lockRequest request, - com.google.protobuf.RpcCallback done); - - public abstract void xtreemfsPing( - com.google.protobuf.RpcController controller, - org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_pingMesssage request, - com.google.protobuf.RpcCallback done); - - public abstract void xtreemfsShutdown( - com.google.protobuf.RpcController controller, - org.xtreemfs.pbrpc.generatedinterfaces.Common.emptyRequest request, - com.google.protobuf.RpcCallback done); - - } - - public static com.google.protobuf.Service newReflectiveService( - final Interface impl) { - return new OSDService() { - @Override - public void read( - com.google.protobuf.RpcController controller, - org.xtreemfs.pbrpc.generatedinterfaces.OSD.readRequest request, - com.google.protobuf.RpcCallback done) { - impl.read(controller, request, done); - } - - @Override - public void truncate( - com.google.protobuf.RpcController controller, - org.xtreemfs.pbrpc.generatedinterfaces.OSD.truncateRequest request, - com.google.protobuf.RpcCallback done) { - impl.truncate(controller, request, done); - } - - @Override - public void unlink( - com.google.protobuf.RpcController controller, - org.xtreemfs.pbrpc.generatedinterfaces.OSD.unlink_osd_Request request, - com.google.protobuf.RpcCallback done) { - impl.unlink(controller, request, done); - } - - @Override - public void write( - com.google.protobuf.RpcController controller, - org.xtreemfs.pbrpc.generatedinterfaces.OSD.writeRequest request, - com.google.protobuf.RpcCallback done) { - impl.write(controller, request, done); - } - - @Override - public void xtreemfsBroadcastGmax( - com.google.protobuf.RpcController controller, - org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_broadcast_gmaxRequest request, - com.google.protobuf.RpcCallback done) { - impl.xtreemfsBroadcastGmax(controller, request, done); - } - - @Override - public void xtreemfsCheckObject( - com.google.protobuf.RpcController controller, - org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_check_objectRequest request, - com.google.protobuf.RpcCallback done) { - impl.xtreemfsCheckObject(controller, request, done); - } - - @Override - public void xtreemfsCleanupGetResults( - com.google.protobuf.RpcController controller, - org.xtreemfs.pbrpc.generatedinterfaces.Common.emptyRequest request, - com.google.protobuf.RpcCallback done) { - impl.xtreemfsCleanupGetResults(controller, request, done); - } - - @Override - public void xtreemfsCleanupIsRunning( - com.google.protobuf.RpcController controller, - org.xtreemfs.pbrpc.generatedinterfaces.Common.emptyRequest request, - com.google.protobuf.RpcCallback done) { - impl.xtreemfsCleanupIsRunning(controller, request, done); - } - - @Override - public void xtreemfsCleanupStart( - com.google.protobuf.RpcController controller, - org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_cleanup_startRequest request, - com.google.protobuf.RpcCallback done) { - impl.xtreemfsCleanupStart(controller, request, done); - } - - @Override - public void xtreemfsCleanupStatus( - com.google.protobuf.RpcController controller, - org.xtreemfs.pbrpc.generatedinterfaces.Common.emptyRequest request, - com.google.protobuf.RpcCallback done) { - impl.xtreemfsCleanupStatus(controller, request, done); - } - - @Override - public void xtreemfsCleanupStop( - com.google.protobuf.RpcController controller, - org.xtreemfs.pbrpc.generatedinterfaces.Common.emptyRequest request, - com.google.protobuf.RpcCallback done) { - impl.xtreemfsCleanupStop(controller, request, done); - } - - @Override - public void xtreemfsCleanupVersionsStart( - com.google.protobuf.RpcController controller, - org.xtreemfs.pbrpc.generatedinterfaces.Common.emptyRequest request, - com.google.protobuf.RpcCallback done) { - impl.xtreemfsCleanupVersionsStart(controller, request, done); - } - - @Override - public void xtreemfsRepairObject( - com.google.protobuf.RpcController controller, - org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_repair_objectRequest request, - com.google.protobuf.RpcCallback done) { - impl.xtreemfsRepairObject(controller, request, done); - } - - @Override - public void xtreemfsRwrFetch( - com.google.protobuf.RpcController controller, - org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_rwr_fetchRequest request, - com.google.protobuf.RpcCallback done) { - impl.xtreemfsRwrFetch(controller, request, done); - } - - @Override - public void xtreemfsRwrFleaseMsg( - com.google.protobuf.RpcController controller, - org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_rwr_flease_msgRequest request, - com.google.protobuf.RpcCallback done) { - impl.xtreemfsRwrFleaseMsg(controller, request, done); - } - - @Override - public void xtreemfsRwrNotify( - com.google.protobuf.RpcController controller, - org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials request, - com.google.protobuf.RpcCallback done) { - impl.xtreemfsRwrNotify(controller, request, done); - } - - @Override - public void xtreemfsRwrSetPrimaryEpoch( - com.google.protobuf.RpcController controller, - org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_rwr_set_primary_epochRequest request, - com.google.protobuf.RpcCallback done) { - impl.xtreemfsRwrSetPrimaryEpoch(controller, request, done); - } - - @Override - public void xtreemfsRwrStatus( - com.google.protobuf.RpcController controller, - org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_rwr_statusRequest request, - com.google.protobuf.RpcCallback done) { - impl.xtreemfsRwrStatus(controller, request, done); - } - - @Override - public void xtreemfsRwrTruncate( - com.google.protobuf.RpcController controller, - org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_rwr_truncateRequest request, - com.google.protobuf.RpcCallback done) { - impl.xtreemfsRwrTruncate(controller, request, done); - } - - @Override - public void xtreemfsRwrUpdate( - com.google.protobuf.RpcController controller, - org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_rwr_updateRequest request, - com.google.protobuf.RpcCallback done) { - impl.xtreemfsRwrUpdate(controller, request, done); - } - - @Override - public void xtreemfsRwrAuthState( - com.google.protobuf.RpcController controller, - org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_rwr_auth_stateRequest request, - com.google.protobuf.RpcCallback done) { - impl.xtreemfsRwrAuthState(controller, request, done); - } - - @Override - public void xtreemfsRwrResetComplete( - com.google.protobuf.RpcController controller, - org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_rwr_reset_completeRequest request, - com.google.protobuf.RpcCallback done) { - impl.xtreemfsRwrResetComplete(controller, request, done); - } - - @Override - public void xtreemfsInternalGetGmax( - com.google.protobuf.RpcController controller, - org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_internal_get_gmaxRequest request, - com.google.protobuf.RpcCallback done) { - impl.xtreemfsInternalGetGmax(controller, request, done); - } - - @Override - public void xtreemfsInternalTruncate( - com.google.protobuf.RpcController controller, - org.xtreemfs.pbrpc.generatedinterfaces.OSD.truncateRequest request, - com.google.protobuf.RpcCallback done) { - impl.xtreemfsInternalTruncate(controller, request, done); - } - - @Override - public void xtreemfsInternalGetFileSize( - com.google.protobuf.RpcController controller, - org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_internal_get_file_sizeRequest request, - com.google.protobuf.RpcCallback done) { - impl.xtreemfsInternalGetFileSize(controller, request, done); - } - - @Override - public void xtreemfsInternalReadLocal( - com.google.protobuf.RpcController controller, - org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_internal_read_localRequest request, - com.google.protobuf.RpcCallback done) { - impl.xtreemfsInternalReadLocal(controller, request, done); - } - - @Override - public void xtreemfsInternalGetObjectSet( - com.google.protobuf.RpcController controller, - org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_internal_get_object_setRequest request, - com.google.protobuf.RpcCallback done) { - impl.xtreemfsInternalGetObjectSet(controller, request, done); - } - - @Override - public void xtreemfsInternalGetFileidList( - com.google.protobuf.RpcController controller, - org.xtreemfs.pbrpc.generatedinterfaces.Common.emptyRequest request, - com.google.protobuf.RpcCallback done) { - impl.xtreemfsInternalGetFileidList(controller, request, done); - } - - @Override - public void xtreemfsLockAcquire( - com.google.protobuf.RpcController controller, - org.xtreemfs.pbrpc.generatedinterfaces.OSD.lockRequest request, - com.google.protobuf.RpcCallback done) { - impl.xtreemfsLockAcquire(controller, request, done); - } - - @Override - public void xtreemfsLockCheck( - com.google.protobuf.RpcController controller, - org.xtreemfs.pbrpc.generatedinterfaces.OSD.lockRequest request, - com.google.protobuf.RpcCallback done) { - impl.xtreemfsLockCheck(controller, request, done); - } - - @Override - public void xtreemfsLockRelease( - com.google.protobuf.RpcController controller, - org.xtreemfs.pbrpc.generatedinterfaces.OSD.lockRequest request, - com.google.protobuf.RpcCallback done) { - impl.xtreemfsLockRelease(controller, request, done); - } - - @Override - public void xtreemfsPing( - com.google.protobuf.RpcController controller, - org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_pingMesssage request, - com.google.protobuf.RpcCallback done) { - impl.xtreemfsPing(controller, request, done); - } - - @Override - public void xtreemfsShutdown( - com.google.protobuf.RpcController controller, - org.xtreemfs.pbrpc.generatedinterfaces.Common.emptyRequest request, - com.google.protobuf.RpcCallback done) { - impl.xtreemfsShutdown(controller, request, done); - } - - }; - } - - public static com.google.protobuf.BlockingService - newReflectiveBlockingService(final BlockingInterface impl) { - return new com.google.protobuf.BlockingService() { - public final com.google.protobuf.Descriptors.ServiceDescriptor - getDescriptorForType() { - return getDescriptor(); - } - - public final com.google.protobuf.Message callBlockingMethod( - com.google.protobuf.Descriptors.MethodDescriptor method, - com.google.protobuf.RpcController controller, - com.google.protobuf.Message request) - throws com.google.protobuf.ServiceException { - if (method.getService() != getDescriptor()) { - throw new java.lang.IllegalArgumentException( - "Service.callBlockingMethod() given method descriptor for " + - "wrong service type."); - } - switch(method.getIndex()) { - case 0: - return impl.read(controller, (org.xtreemfs.pbrpc.generatedinterfaces.OSD.readRequest)request); - case 1: - return impl.truncate(controller, (org.xtreemfs.pbrpc.generatedinterfaces.OSD.truncateRequest)request); - case 2: - return impl.unlink(controller, (org.xtreemfs.pbrpc.generatedinterfaces.OSD.unlink_osd_Request)request); - case 3: - return impl.write(controller, (org.xtreemfs.pbrpc.generatedinterfaces.OSD.writeRequest)request); - case 4: - return impl.xtreemfsBroadcastGmax(controller, (org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_broadcast_gmaxRequest)request); - case 5: - return impl.xtreemfsCheckObject(controller, (org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_check_objectRequest)request); - case 6: - return impl.xtreemfsCleanupGetResults(controller, (org.xtreemfs.pbrpc.generatedinterfaces.Common.emptyRequest)request); - case 7: - return impl.xtreemfsCleanupIsRunning(controller, (org.xtreemfs.pbrpc.generatedinterfaces.Common.emptyRequest)request); - case 8: - return impl.xtreemfsCleanupStart(controller, (org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_cleanup_startRequest)request); - case 9: - return impl.xtreemfsCleanupStatus(controller, (org.xtreemfs.pbrpc.generatedinterfaces.Common.emptyRequest)request); - case 10: - return impl.xtreemfsCleanupStop(controller, (org.xtreemfs.pbrpc.generatedinterfaces.Common.emptyRequest)request); - case 11: - return impl.xtreemfsCleanupVersionsStart(controller, (org.xtreemfs.pbrpc.generatedinterfaces.Common.emptyRequest)request); - case 12: - return impl.xtreemfsRepairObject(controller, (org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_repair_objectRequest)request); - case 13: - return impl.xtreemfsRwrFetch(controller, (org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_rwr_fetchRequest)request); - case 14: - return impl.xtreemfsRwrFleaseMsg(controller, (org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_rwr_flease_msgRequest)request); - case 15: - return impl.xtreemfsRwrNotify(controller, (org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials)request); - case 16: - return impl.xtreemfsRwrSetPrimaryEpoch(controller, (org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_rwr_set_primary_epochRequest)request); - case 17: - return impl.xtreemfsRwrStatus(controller, (org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_rwr_statusRequest)request); - case 18: - return impl.xtreemfsRwrTruncate(controller, (org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_rwr_truncateRequest)request); - case 19: - return impl.xtreemfsRwrUpdate(controller, (org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_rwr_updateRequest)request); - case 20: - return impl.xtreemfsRwrAuthState(controller, (org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_rwr_auth_stateRequest)request); - case 21: - return impl.xtreemfsRwrResetComplete(controller, (org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_rwr_reset_completeRequest)request); - case 22: - return impl.xtreemfsInternalGetGmax(controller, (org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_internal_get_gmaxRequest)request); - case 23: - return impl.xtreemfsInternalTruncate(controller, (org.xtreemfs.pbrpc.generatedinterfaces.OSD.truncateRequest)request); - case 24: - return impl.xtreemfsInternalGetFileSize(controller, (org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_internal_get_file_sizeRequest)request); - case 25: - return impl.xtreemfsInternalReadLocal(controller, (org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_internal_read_localRequest)request); - case 26: - return impl.xtreemfsInternalGetObjectSet(controller, (org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_internal_get_object_setRequest)request); - case 27: - return impl.xtreemfsInternalGetFileidList(controller, (org.xtreemfs.pbrpc.generatedinterfaces.Common.emptyRequest)request); - case 28: - return impl.xtreemfsLockAcquire(controller, (org.xtreemfs.pbrpc.generatedinterfaces.OSD.lockRequest)request); - case 29: - return impl.xtreemfsLockCheck(controller, (org.xtreemfs.pbrpc.generatedinterfaces.OSD.lockRequest)request); - case 30: - return impl.xtreemfsLockRelease(controller, (org.xtreemfs.pbrpc.generatedinterfaces.OSD.lockRequest)request); - case 31: - return impl.xtreemfsPing(controller, (org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_pingMesssage)request); - case 32: - return impl.xtreemfsShutdown(controller, (org.xtreemfs.pbrpc.generatedinterfaces.Common.emptyRequest)request); - default: - throw new java.lang.AssertionError("Can't get here."); - } - } - - public final com.google.protobuf.Message - getRequestPrototype( - com.google.protobuf.Descriptors.MethodDescriptor method) { - if (method.getService() != getDescriptor()) { - throw new java.lang.IllegalArgumentException( - "Service.getRequestPrototype() given method " + - "descriptor for wrong service type."); - } - switch(method.getIndex()) { - case 0: - return org.xtreemfs.pbrpc.generatedinterfaces.OSD.readRequest.getDefaultInstance(); - case 1: - return org.xtreemfs.pbrpc.generatedinterfaces.OSD.truncateRequest.getDefaultInstance(); - case 2: - return org.xtreemfs.pbrpc.generatedinterfaces.OSD.unlink_osd_Request.getDefaultInstance(); - case 3: - return org.xtreemfs.pbrpc.generatedinterfaces.OSD.writeRequest.getDefaultInstance(); - case 4: - return org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_broadcast_gmaxRequest.getDefaultInstance(); - case 5: - return org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_check_objectRequest.getDefaultInstance(); - case 6: - return org.xtreemfs.pbrpc.generatedinterfaces.Common.emptyRequest.getDefaultInstance(); - case 7: - return org.xtreemfs.pbrpc.generatedinterfaces.Common.emptyRequest.getDefaultInstance(); - case 8: - return org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_cleanup_startRequest.getDefaultInstance(); - case 9: - return org.xtreemfs.pbrpc.generatedinterfaces.Common.emptyRequest.getDefaultInstance(); - case 10: - return org.xtreemfs.pbrpc.generatedinterfaces.Common.emptyRequest.getDefaultInstance(); - case 11: - return org.xtreemfs.pbrpc.generatedinterfaces.Common.emptyRequest.getDefaultInstance(); - case 12: - return org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_repair_objectRequest.getDefaultInstance(); - case 13: - return org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_rwr_fetchRequest.getDefaultInstance(); - case 14: - return org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_rwr_flease_msgRequest.getDefaultInstance(); - case 15: - return org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials.getDefaultInstance(); - case 16: - return org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_rwr_set_primary_epochRequest.getDefaultInstance(); - case 17: - return org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_rwr_statusRequest.getDefaultInstance(); - case 18: - return org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_rwr_truncateRequest.getDefaultInstance(); - case 19: - return org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_rwr_updateRequest.getDefaultInstance(); - case 20: - return org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_rwr_auth_stateRequest.getDefaultInstance(); - case 21: - return org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_rwr_reset_completeRequest.getDefaultInstance(); - case 22: - return org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_internal_get_gmaxRequest.getDefaultInstance(); - case 23: - return org.xtreemfs.pbrpc.generatedinterfaces.OSD.truncateRequest.getDefaultInstance(); - case 24: - return org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_internal_get_file_sizeRequest.getDefaultInstance(); - case 25: - return org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_internal_read_localRequest.getDefaultInstance(); - case 26: - return org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_internal_get_object_setRequest.getDefaultInstance(); - case 27: - return org.xtreemfs.pbrpc.generatedinterfaces.Common.emptyRequest.getDefaultInstance(); - case 28: - return org.xtreemfs.pbrpc.generatedinterfaces.OSD.lockRequest.getDefaultInstance(); - case 29: - return org.xtreemfs.pbrpc.generatedinterfaces.OSD.lockRequest.getDefaultInstance(); - case 30: - return org.xtreemfs.pbrpc.generatedinterfaces.OSD.lockRequest.getDefaultInstance(); - case 31: - return org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_pingMesssage.getDefaultInstance(); - case 32: - return org.xtreemfs.pbrpc.generatedinterfaces.Common.emptyRequest.getDefaultInstance(); - default: - throw new java.lang.AssertionError("Can't get here."); - } - } - - public final com.google.protobuf.Message - getResponsePrototype( - com.google.protobuf.Descriptors.MethodDescriptor method) { - if (method.getService() != getDescriptor()) { - throw new java.lang.IllegalArgumentException( - "Service.getResponsePrototype() given method " + - "descriptor for wrong service type."); - } - switch(method.getIndex()) { - case 0: - return org.xtreemfs.pbrpc.generatedinterfaces.OSD.ObjectData.getDefaultInstance(); - case 1: - return org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.OSDWriteResponse.getDefaultInstance(); - case 2: - return org.xtreemfs.pbrpc.generatedinterfaces.Common.emptyResponse.getDefaultInstance(); - case 3: - return org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.OSDWriteResponse.getDefaultInstance(); - case 4: - return org.xtreemfs.pbrpc.generatedinterfaces.Common.emptyResponse.getDefaultInstance(); - case 5: - return org.xtreemfs.pbrpc.generatedinterfaces.OSD.ObjectData.getDefaultInstance(); - case 6: - return org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_cleanup_get_resultsResponse.getDefaultInstance(); - case 7: - return org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_cleanup_is_runningResponse.getDefaultInstance(); - case 8: - return org.xtreemfs.pbrpc.generatedinterfaces.Common.emptyResponse.getDefaultInstance(); - case 9: - return org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_cleanup_statusResponse.getDefaultInstance(); - case 10: - return org.xtreemfs.pbrpc.generatedinterfaces.Common.emptyResponse.getDefaultInstance(); - case 11: - return org.xtreemfs.pbrpc.generatedinterfaces.Common.emptyResponse.getDefaultInstance(); - case 12: - return org.xtreemfs.pbrpc.generatedinterfaces.Common.emptyResponse.getDefaultInstance(); - case 13: - return org.xtreemfs.pbrpc.generatedinterfaces.OSD.ObjectData.getDefaultInstance(); - case 14: - return org.xtreemfs.pbrpc.generatedinterfaces.Common.emptyResponse.getDefaultInstance(); - case 15: - return org.xtreemfs.pbrpc.generatedinterfaces.Common.emptyResponse.getDefaultInstance(); - case 16: - return org.xtreemfs.pbrpc.generatedinterfaces.OSD.ObjectData.getDefaultInstance(); - case 17: - return org.xtreemfs.pbrpc.generatedinterfaces.OSD.ReplicaStatus.getDefaultInstance(); - case 18: - return org.xtreemfs.pbrpc.generatedinterfaces.Common.emptyResponse.getDefaultInstance(); - case 19: - return org.xtreemfs.pbrpc.generatedinterfaces.Common.emptyResponse.getDefaultInstance(); - case 20: - return org.xtreemfs.pbrpc.generatedinterfaces.Common.emptyResponse.getDefaultInstance(); - case 21: - return org.xtreemfs.pbrpc.generatedinterfaces.Common.emptyResponse.getDefaultInstance(); - case 22: - return org.xtreemfs.pbrpc.generatedinterfaces.OSD.InternalGmax.getDefaultInstance(); - case 23: - return org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.OSDWriteResponse.getDefaultInstance(); - case 24: - return org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_internal_get_file_sizeResponse.getDefaultInstance(); - case 25: - return org.xtreemfs.pbrpc.generatedinterfaces.OSD.InternalReadLocalResponse.getDefaultInstance(); - case 26: - return org.xtreemfs.pbrpc.generatedinterfaces.OSD.ObjectList.getDefaultInstance(); - case 27: - return org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_internal_get_fileid_listResponse.getDefaultInstance(); - case 28: - return org.xtreemfs.pbrpc.generatedinterfaces.OSD.Lock.getDefaultInstance(); - case 29: - return org.xtreemfs.pbrpc.generatedinterfaces.OSD.Lock.getDefaultInstance(); - case 30: - return org.xtreemfs.pbrpc.generatedinterfaces.Common.emptyResponse.getDefaultInstance(); - case 31: - return org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_pingMesssage.getDefaultInstance(); - case 32: - return org.xtreemfs.pbrpc.generatedinterfaces.Common.emptyResponse.getDefaultInstance(); - default: - throw new java.lang.AssertionError("Can't get here."); - } - } - - }; - } - - public abstract void read( - com.google.protobuf.RpcController controller, - org.xtreemfs.pbrpc.generatedinterfaces.OSD.readRequest request, - com.google.protobuf.RpcCallback done); - - public abstract void truncate( - com.google.protobuf.RpcController controller, - org.xtreemfs.pbrpc.generatedinterfaces.OSD.truncateRequest request, - com.google.protobuf.RpcCallback done); - - public abstract void unlink( - com.google.protobuf.RpcController controller, - org.xtreemfs.pbrpc.generatedinterfaces.OSD.unlink_osd_Request request, - com.google.protobuf.RpcCallback done); - - public abstract void write( - com.google.protobuf.RpcController controller, - org.xtreemfs.pbrpc.generatedinterfaces.OSD.writeRequest request, - com.google.protobuf.RpcCallback done); - - public abstract void xtreemfsBroadcastGmax( - com.google.protobuf.RpcController controller, - org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_broadcast_gmaxRequest request, - com.google.protobuf.RpcCallback done); - - public abstract void xtreemfsCheckObject( - com.google.protobuf.RpcController controller, - org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_check_objectRequest request, - com.google.protobuf.RpcCallback done); - - public abstract void xtreemfsCleanupGetResults( - com.google.protobuf.RpcController controller, - org.xtreemfs.pbrpc.generatedinterfaces.Common.emptyRequest request, - com.google.protobuf.RpcCallback done); - - public abstract void xtreemfsCleanupIsRunning( - com.google.protobuf.RpcController controller, - org.xtreemfs.pbrpc.generatedinterfaces.Common.emptyRequest request, - com.google.protobuf.RpcCallback done); - - public abstract void xtreemfsCleanupStart( - com.google.protobuf.RpcController controller, - org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_cleanup_startRequest request, - com.google.protobuf.RpcCallback done); - - public abstract void xtreemfsCleanupStatus( - com.google.protobuf.RpcController controller, - org.xtreemfs.pbrpc.generatedinterfaces.Common.emptyRequest request, - com.google.protobuf.RpcCallback done); - - public abstract void xtreemfsCleanupStop( - com.google.protobuf.RpcController controller, - org.xtreemfs.pbrpc.generatedinterfaces.Common.emptyRequest request, - com.google.protobuf.RpcCallback done); - - public abstract void xtreemfsCleanupVersionsStart( - com.google.protobuf.RpcController controller, - org.xtreemfs.pbrpc.generatedinterfaces.Common.emptyRequest request, - com.google.protobuf.RpcCallback done); - - public abstract void xtreemfsRepairObject( - com.google.protobuf.RpcController controller, - org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_repair_objectRequest request, - com.google.protobuf.RpcCallback done); - - public abstract void xtreemfsRwrFetch( - com.google.protobuf.RpcController controller, - org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_rwr_fetchRequest request, - com.google.protobuf.RpcCallback done); - - public abstract void xtreemfsRwrFleaseMsg( - com.google.protobuf.RpcController controller, - org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_rwr_flease_msgRequest request, - com.google.protobuf.RpcCallback done); - - public abstract void xtreemfsRwrNotify( - com.google.protobuf.RpcController controller, - org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials request, - com.google.protobuf.RpcCallback done); - - public abstract void xtreemfsRwrSetPrimaryEpoch( - com.google.protobuf.RpcController controller, - org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_rwr_set_primary_epochRequest request, - com.google.protobuf.RpcCallback done); - - public abstract void xtreemfsRwrStatus( - com.google.protobuf.RpcController controller, - org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_rwr_statusRequest request, - com.google.protobuf.RpcCallback done); - - public abstract void xtreemfsRwrTruncate( - com.google.protobuf.RpcController controller, - org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_rwr_truncateRequest request, - com.google.protobuf.RpcCallback done); - - public abstract void xtreemfsRwrUpdate( - com.google.protobuf.RpcController controller, - org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_rwr_updateRequest request, - com.google.protobuf.RpcCallback done); - - public abstract void xtreemfsRwrAuthState( - com.google.protobuf.RpcController controller, - org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_rwr_auth_stateRequest request, - com.google.protobuf.RpcCallback done); - - public abstract void xtreemfsRwrResetComplete( - com.google.protobuf.RpcController controller, - org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_rwr_reset_completeRequest request, - com.google.protobuf.RpcCallback done); - - public abstract void xtreemfsInternalGetGmax( - com.google.protobuf.RpcController controller, - org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_internal_get_gmaxRequest request, - com.google.protobuf.RpcCallback done); - - public abstract void xtreemfsInternalTruncate( - com.google.protobuf.RpcController controller, - org.xtreemfs.pbrpc.generatedinterfaces.OSD.truncateRequest request, - com.google.protobuf.RpcCallback done); - - public abstract void xtreemfsInternalGetFileSize( - com.google.protobuf.RpcController controller, - org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_internal_get_file_sizeRequest request, - com.google.protobuf.RpcCallback done); - - public abstract void xtreemfsInternalReadLocal( - com.google.protobuf.RpcController controller, - org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_internal_read_localRequest request, - com.google.protobuf.RpcCallback done); - - public abstract void xtreemfsInternalGetObjectSet( - com.google.protobuf.RpcController controller, - org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_internal_get_object_setRequest request, - com.google.protobuf.RpcCallback done); - - public abstract void xtreemfsInternalGetFileidList( - com.google.protobuf.RpcController controller, - org.xtreemfs.pbrpc.generatedinterfaces.Common.emptyRequest request, - com.google.protobuf.RpcCallback done); - - public abstract void xtreemfsLockAcquire( - com.google.protobuf.RpcController controller, - org.xtreemfs.pbrpc.generatedinterfaces.OSD.lockRequest request, - com.google.protobuf.RpcCallback done); - - public abstract void xtreemfsLockCheck( - com.google.protobuf.RpcController controller, - org.xtreemfs.pbrpc.generatedinterfaces.OSD.lockRequest request, - com.google.protobuf.RpcCallback done); - - public abstract void xtreemfsLockRelease( - com.google.protobuf.RpcController controller, - org.xtreemfs.pbrpc.generatedinterfaces.OSD.lockRequest request, - com.google.protobuf.RpcCallback done); - - public abstract void xtreemfsPing( - com.google.protobuf.RpcController controller, - org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_pingMesssage request, - com.google.protobuf.RpcCallback done); - - public abstract void xtreemfsShutdown( - com.google.protobuf.RpcController controller, - org.xtreemfs.pbrpc.generatedinterfaces.Common.emptyRequest request, - com.google.protobuf.RpcCallback done); - - public static final - com.google.protobuf.Descriptors.ServiceDescriptor - getDescriptor() { - return org.xtreemfs.pbrpc.generatedinterfaces.OSD.getDescriptor().getServices().get(0); - } - public final com.google.protobuf.Descriptors.ServiceDescriptor - getDescriptorForType() { - return getDescriptor(); - } - - public final void callMethod( - com.google.protobuf.Descriptors.MethodDescriptor method, - com.google.protobuf.RpcController controller, - com.google.protobuf.Message request, - com.google.protobuf.RpcCallback< - com.google.protobuf.Message> done) { - if (method.getService() != getDescriptor()) { - throw new java.lang.IllegalArgumentException( - "Service.callMethod() given method descriptor for wrong " + - "service type."); - } - switch(method.getIndex()) { - case 0: - this.read(controller, (org.xtreemfs.pbrpc.generatedinterfaces.OSD.readRequest)request, - com.google.protobuf.RpcUtil.specializeCallback( - done)); - return; - case 1: - this.truncate(controller, (org.xtreemfs.pbrpc.generatedinterfaces.OSD.truncateRequest)request, - com.google.protobuf.RpcUtil.specializeCallback( - done)); - return; - case 2: - this.unlink(controller, (org.xtreemfs.pbrpc.generatedinterfaces.OSD.unlink_osd_Request)request, - com.google.protobuf.RpcUtil.specializeCallback( - done)); - return; - case 3: - this.write(controller, (org.xtreemfs.pbrpc.generatedinterfaces.OSD.writeRequest)request, - com.google.protobuf.RpcUtil.specializeCallback( - done)); - return; - case 4: - this.xtreemfsBroadcastGmax(controller, (org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_broadcast_gmaxRequest)request, - com.google.protobuf.RpcUtil.specializeCallback( - done)); - return; - case 5: - this.xtreemfsCheckObject(controller, (org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_check_objectRequest)request, - com.google.protobuf.RpcUtil.specializeCallback( - done)); - return; - case 6: - this.xtreemfsCleanupGetResults(controller, (org.xtreemfs.pbrpc.generatedinterfaces.Common.emptyRequest)request, - com.google.protobuf.RpcUtil.specializeCallback( - done)); - return; - case 7: - this.xtreemfsCleanupIsRunning(controller, (org.xtreemfs.pbrpc.generatedinterfaces.Common.emptyRequest)request, - com.google.protobuf.RpcUtil.specializeCallback( - done)); - return; - case 8: - this.xtreemfsCleanupStart(controller, (org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_cleanup_startRequest)request, - com.google.protobuf.RpcUtil.specializeCallback( - done)); - return; - case 9: - this.xtreemfsCleanupStatus(controller, (org.xtreemfs.pbrpc.generatedinterfaces.Common.emptyRequest)request, - com.google.protobuf.RpcUtil.specializeCallback( - done)); - return; - case 10: - this.xtreemfsCleanupStop(controller, (org.xtreemfs.pbrpc.generatedinterfaces.Common.emptyRequest)request, - com.google.protobuf.RpcUtil.specializeCallback( - done)); - return; - case 11: - this.xtreemfsCleanupVersionsStart(controller, (org.xtreemfs.pbrpc.generatedinterfaces.Common.emptyRequest)request, - com.google.protobuf.RpcUtil.specializeCallback( - done)); - return; - case 12: - this.xtreemfsRepairObject(controller, (org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_repair_objectRequest)request, - com.google.protobuf.RpcUtil.specializeCallback( - done)); - return; - case 13: - this.xtreemfsRwrFetch(controller, (org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_rwr_fetchRequest)request, - com.google.protobuf.RpcUtil.specializeCallback( - done)); - return; - case 14: - this.xtreemfsRwrFleaseMsg(controller, (org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_rwr_flease_msgRequest)request, - com.google.protobuf.RpcUtil.specializeCallback( - done)); - return; - case 15: - this.xtreemfsRwrNotify(controller, (org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials)request, - com.google.protobuf.RpcUtil.specializeCallback( - done)); - return; - case 16: - this.xtreemfsRwrSetPrimaryEpoch(controller, (org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_rwr_set_primary_epochRequest)request, - com.google.protobuf.RpcUtil.specializeCallback( - done)); - return; - case 17: - this.xtreemfsRwrStatus(controller, (org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_rwr_statusRequest)request, - com.google.protobuf.RpcUtil.specializeCallback( - done)); - return; - case 18: - this.xtreemfsRwrTruncate(controller, (org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_rwr_truncateRequest)request, - com.google.protobuf.RpcUtil.specializeCallback( - done)); - return; - case 19: - this.xtreemfsRwrUpdate(controller, (org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_rwr_updateRequest)request, - com.google.protobuf.RpcUtil.specializeCallback( - done)); - return; - case 20: - this.xtreemfsRwrAuthState(controller, (org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_rwr_auth_stateRequest)request, - com.google.protobuf.RpcUtil.specializeCallback( - done)); - return; - case 21: - this.xtreemfsRwrResetComplete(controller, (org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_rwr_reset_completeRequest)request, - com.google.protobuf.RpcUtil.specializeCallback( - done)); - return; - case 22: - this.xtreemfsInternalGetGmax(controller, (org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_internal_get_gmaxRequest)request, - com.google.protobuf.RpcUtil.specializeCallback( - done)); - return; - case 23: - this.xtreemfsInternalTruncate(controller, (org.xtreemfs.pbrpc.generatedinterfaces.OSD.truncateRequest)request, - com.google.protobuf.RpcUtil.specializeCallback( - done)); - return; - case 24: - this.xtreemfsInternalGetFileSize(controller, (org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_internal_get_file_sizeRequest)request, - com.google.protobuf.RpcUtil.specializeCallback( - done)); - return; - case 25: - this.xtreemfsInternalReadLocal(controller, (org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_internal_read_localRequest)request, - com.google.protobuf.RpcUtil.specializeCallback( - done)); - return; - case 26: - this.xtreemfsInternalGetObjectSet(controller, (org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_internal_get_object_setRequest)request, - com.google.protobuf.RpcUtil.specializeCallback( - done)); - return; - case 27: - this.xtreemfsInternalGetFileidList(controller, (org.xtreemfs.pbrpc.generatedinterfaces.Common.emptyRequest)request, - com.google.protobuf.RpcUtil.specializeCallback( - done)); - return; - case 28: - this.xtreemfsLockAcquire(controller, (org.xtreemfs.pbrpc.generatedinterfaces.OSD.lockRequest)request, - com.google.protobuf.RpcUtil.specializeCallback( - done)); - return; - case 29: - this.xtreemfsLockCheck(controller, (org.xtreemfs.pbrpc.generatedinterfaces.OSD.lockRequest)request, - com.google.protobuf.RpcUtil.specializeCallback( - done)); - return; - case 30: - this.xtreemfsLockRelease(controller, (org.xtreemfs.pbrpc.generatedinterfaces.OSD.lockRequest)request, - com.google.protobuf.RpcUtil.specializeCallback( - done)); - return; - case 31: - this.xtreemfsPing(controller, (org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_pingMesssage)request, - com.google.protobuf.RpcUtil.specializeCallback( - done)); - return; - case 32: - this.xtreemfsShutdown(controller, (org.xtreemfs.pbrpc.generatedinterfaces.Common.emptyRequest)request, - com.google.protobuf.RpcUtil.specializeCallback( - done)); - return; - default: - throw new java.lang.AssertionError("Can't get here."); - } - } - - public final com.google.protobuf.Message - getRequestPrototype( - com.google.protobuf.Descriptors.MethodDescriptor method) { - if (method.getService() != getDescriptor()) { - throw new java.lang.IllegalArgumentException( - "Service.getRequestPrototype() given method " + - "descriptor for wrong service type."); - } - switch(method.getIndex()) { - case 0: - return org.xtreemfs.pbrpc.generatedinterfaces.OSD.readRequest.getDefaultInstance(); - case 1: - return org.xtreemfs.pbrpc.generatedinterfaces.OSD.truncateRequest.getDefaultInstance(); - case 2: - return org.xtreemfs.pbrpc.generatedinterfaces.OSD.unlink_osd_Request.getDefaultInstance(); - case 3: - return org.xtreemfs.pbrpc.generatedinterfaces.OSD.writeRequest.getDefaultInstance(); - case 4: - return org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_broadcast_gmaxRequest.getDefaultInstance(); - case 5: - return org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_check_objectRequest.getDefaultInstance(); - case 6: - return org.xtreemfs.pbrpc.generatedinterfaces.Common.emptyRequest.getDefaultInstance(); - case 7: - return org.xtreemfs.pbrpc.generatedinterfaces.Common.emptyRequest.getDefaultInstance(); - case 8: - return org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_cleanup_startRequest.getDefaultInstance(); - case 9: - return org.xtreemfs.pbrpc.generatedinterfaces.Common.emptyRequest.getDefaultInstance(); - case 10: - return org.xtreemfs.pbrpc.generatedinterfaces.Common.emptyRequest.getDefaultInstance(); - case 11: - return org.xtreemfs.pbrpc.generatedinterfaces.Common.emptyRequest.getDefaultInstance(); - case 12: - return org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_repair_objectRequest.getDefaultInstance(); - case 13: - return org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_rwr_fetchRequest.getDefaultInstance(); - case 14: - return org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_rwr_flease_msgRequest.getDefaultInstance(); - case 15: - return org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials.getDefaultInstance(); - case 16: - return org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_rwr_set_primary_epochRequest.getDefaultInstance(); - case 17: - return org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_rwr_statusRequest.getDefaultInstance(); - case 18: - return org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_rwr_truncateRequest.getDefaultInstance(); - case 19: - return org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_rwr_updateRequest.getDefaultInstance(); - case 20: - return org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_rwr_auth_stateRequest.getDefaultInstance(); - case 21: - return org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_rwr_reset_completeRequest.getDefaultInstance(); - case 22: - return org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_internal_get_gmaxRequest.getDefaultInstance(); - case 23: - return org.xtreemfs.pbrpc.generatedinterfaces.OSD.truncateRequest.getDefaultInstance(); - case 24: - return org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_internal_get_file_sizeRequest.getDefaultInstance(); - case 25: - return org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_internal_read_localRequest.getDefaultInstance(); - case 26: - return org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_internal_get_object_setRequest.getDefaultInstance(); - case 27: - return org.xtreemfs.pbrpc.generatedinterfaces.Common.emptyRequest.getDefaultInstance(); - case 28: - return org.xtreemfs.pbrpc.generatedinterfaces.OSD.lockRequest.getDefaultInstance(); - case 29: - return org.xtreemfs.pbrpc.generatedinterfaces.OSD.lockRequest.getDefaultInstance(); - case 30: - return org.xtreemfs.pbrpc.generatedinterfaces.OSD.lockRequest.getDefaultInstance(); - case 31: - return org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_pingMesssage.getDefaultInstance(); - case 32: - return org.xtreemfs.pbrpc.generatedinterfaces.Common.emptyRequest.getDefaultInstance(); - default: - throw new java.lang.AssertionError("Can't get here."); - } - } - - public final com.google.protobuf.Message - getResponsePrototype( - com.google.protobuf.Descriptors.MethodDescriptor method) { - if (method.getService() != getDescriptor()) { - throw new java.lang.IllegalArgumentException( - "Service.getResponsePrototype() given method " + - "descriptor for wrong service type."); - } - switch(method.getIndex()) { - case 0: - return org.xtreemfs.pbrpc.generatedinterfaces.OSD.ObjectData.getDefaultInstance(); - case 1: - return org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.OSDWriteResponse.getDefaultInstance(); - case 2: - return org.xtreemfs.pbrpc.generatedinterfaces.Common.emptyResponse.getDefaultInstance(); - case 3: - return org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.OSDWriteResponse.getDefaultInstance(); - case 4: - return org.xtreemfs.pbrpc.generatedinterfaces.Common.emptyResponse.getDefaultInstance(); - case 5: - return org.xtreemfs.pbrpc.generatedinterfaces.OSD.ObjectData.getDefaultInstance(); - case 6: - return org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_cleanup_get_resultsResponse.getDefaultInstance(); - case 7: - return org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_cleanup_is_runningResponse.getDefaultInstance(); - case 8: - return org.xtreemfs.pbrpc.generatedinterfaces.Common.emptyResponse.getDefaultInstance(); - case 9: - return org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_cleanup_statusResponse.getDefaultInstance(); - case 10: - return org.xtreemfs.pbrpc.generatedinterfaces.Common.emptyResponse.getDefaultInstance(); - case 11: - return org.xtreemfs.pbrpc.generatedinterfaces.Common.emptyResponse.getDefaultInstance(); - case 12: - return org.xtreemfs.pbrpc.generatedinterfaces.Common.emptyResponse.getDefaultInstance(); - case 13: - return org.xtreemfs.pbrpc.generatedinterfaces.OSD.ObjectData.getDefaultInstance(); - case 14: - return org.xtreemfs.pbrpc.generatedinterfaces.Common.emptyResponse.getDefaultInstance(); - case 15: - return org.xtreemfs.pbrpc.generatedinterfaces.Common.emptyResponse.getDefaultInstance(); - case 16: - return org.xtreemfs.pbrpc.generatedinterfaces.OSD.ObjectData.getDefaultInstance(); - case 17: - return org.xtreemfs.pbrpc.generatedinterfaces.OSD.ReplicaStatus.getDefaultInstance(); - case 18: - return org.xtreemfs.pbrpc.generatedinterfaces.Common.emptyResponse.getDefaultInstance(); - case 19: - return org.xtreemfs.pbrpc.generatedinterfaces.Common.emptyResponse.getDefaultInstance(); - case 20: - return org.xtreemfs.pbrpc.generatedinterfaces.Common.emptyResponse.getDefaultInstance(); - case 21: - return org.xtreemfs.pbrpc.generatedinterfaces.Common.emptyResponse.getDefaultInstance(); - case 22: - return org.xtreemfs.pbrpc.generatedinterfaces.OSD.InternalGmax.getDefaultInstance(); - case 23: - return org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.OSDWriteResponse.getDefaultInstance(); - case 24: - return org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_internal_get_file_sizeResponse.getDefaultInstance(); - case 25: - return org.xtreemfs.pbrpc.generatedinterfaces.OSD.InternalReadLocalResponse.getDefaultInstance(); - case 26: - return org.xtreemfs.pbrpc.generatedinterfaces.OSD.ObjectList.getDefaultInstance(); - case 27: - return org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_internal_get_fileid_listResponse.getDefaultInstance(); - case 28: - return org.xtreemfs.pbrpc.generatedinterfaces.OSD.Lock.getDefaultInstance(); - case 29: - return org.xtreemfs.pbrpc.generatedinterfaces.OSD.Lock.getDefaultInstance(); - case 30: - return org.xtreemfs.pbrpc.generatedinterfaces.Common.emptyResponse.getDefaultInstance(); - case 31: - return org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_pingMesssage.getDefaultInstance(); - case 32: - return org.xtreemfs.pbrpc.generatedinterfaces.Common.emptyResponse.getDefaultInstance(); - default: - throw new java.lang.AssertionError("Can't get here."); - } - } - - public static Stub newStub( - com.google.protobuf.RpcChannel channel) { - return new Stub(channel); - } - - public static final class Stub extends org.xtreemfs.pbrpc.generatedinterfaces.OSD.OSDService implements Interface { - private Stub(com.google.protobuf.RpcChannel channel) { - this.channel = channel; - } - - private final com.google.protobuf.RpcChannel channel; - - public com.google.protobuf.RpcChannel getChannel() { - return channel; - } - - public void read( - com.google.protobuf.RpcController controller, - org.xtreemfs.pbrpc.generatedinterfaces.OSD.readRequest request, - com.google.protobuf.RpcCallback done) { - channel.callMethod( - getDescriptor().getMethods().get(0), - controller, - request, - org.xtreemfs.pbrpc.generatedinterfaces.OSD.ObjectData.getDefaultInstance(), - com.google.protobuf.RpcUtil.generalizeCallback( - done, - org.xtreemfs.pbrpc.generatedinterfaces.OSD.ObjectData.class, - org.xtreemfs.pbrpc.generatedinterfaces.OSD.ObjectData.getDefaultInstance())); - } - - public void truncate( - com.google.protobuf.RpcController controller, - org.xtreemfs.pbrpc.generatedinterfaces.OSD.truncateRequest request, - com.google.protobuf.RpcCallback done) { - channel.callMethod( - getDescriptor().getMethods().get(1), - controller, - request, - org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.OSDWriteResponse.getDefaultInstance(), - com.google.protobuf.RpcUtil.generalizeCallback( - done, - org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.OSDWriteResponse.class, - org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.OSDWriteResponse.getDefaultInstance())); - } - - public void unlink( - com.google.protobuf.RpcController controller, - org.xtreemfs.pbrpc.generatedinterfaces.OSD.unlink_osd_Request request, - com.google.protobuf.RpcCallback done) { - channel.callMethod( - getDescriptor().getMethods().get(2), - controller, - request, - org.xtreemfs.pbrpc.generatedinterfaces.Common.emptyResponse.getDefaultInstance(), - com.google.protobuf.RpcUtil.generalizeCallback( - done, - org.xtreemfs.pbrpc.generatedinterfaces.Common.emptyResponse.class, - org.xtreemfs.pbrpc.generatedinterfaces.Common.emptyResponse.getDefaultInstance())); - } - - public void write( - com.google.protobuf.RpcController controller, - org.xtreemfs.pbrpc.generatedinterfaces.OSD.writeRequest request, - com.google.protobuf.RpcCallback done) { - channel.callMethod( - getDescriptor().getMethods().get(3), - controller, - request, - org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.OSDWriteResponse.getDefaultInstance(), - com.google.protobuf.RpcUtil.generalizeCallback( - done, - org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.OSDWriteResponse.class, - org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.OSDWriteResponse.getDefaultInstance())); - } - - public void xtreemfsBroadcastGmax( - com.google.protobuf.RpcController controller, - org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_broadcast_gmaxRequest request, - com.google.protobuf.RpcCallback done) { - channel.callMethod( - getDescriptor().getMethods().get(4), - controller, - request, - org.xtreemfs.pbrpc.generatedinterfaces.Common.emptyResponse.getDefaultInstance(), - com.google.protobuf.RpcUtil.generalizeCallback( - done, - org.xtreemfs.pbrpc.generatedinterfaces.Common.emptyResponse.class, - org.xtreemfs.pbrpc.generatedinterfaces.Common.emptyResponse.getDefaultInstance())); - } - - public void xtreemfsCheckObject( - com.google.protobuf.RpcController controller, - org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_check_objectRequest request, - com.google.protobuf.RpcCallback done) { - channel.callMethod( - getDescriptor().getMethods().get(5), - controller, - request, - org.xtreemfs.pbrpc.generatedinterfaces.OSD.ObjectData.getDefaultInstance(), - com.google.protobuf.RpcUtil.generalizeCallback( - done, - org.xtreemfs.pbrpc.generatedinterfaces.OSD.ObjectData.class, - org.xtreemfs.pbrpc.generatedinterfaces.OSD.ObjectData.getDefaultInstance())); - } - - public void xtreemfsCleanupGetResults( - com.google.protobuf.RpcController controller, - org.xtreemfs.pbrpc.generatedinterfaces.Common.emptyRequest request, - com.google.protobuf.RpcCallback done) { - channel.callMethod( - getDescriptor().getMethods().get(6), - controller, - request, - org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_cleanup_get_resultsResponse.getDefaultInstance(), - com.google.protobuf.RpcUtil.generalizeCallback( - done, - org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_cleanup_get_resultsResponse.class, - org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_cleanup_get_resultsResponse.getDefaultInstance())); - } - - public void xtreemfsCleanupIsRunning( - com.google.protobuf.RpcController controller, - org.xtreemfs.pbrpc.generatedinterfaces.Common.emptyRequest request, - com.google.protobuf.RpcCallback done) { - channel.callMethod( - getDescriptor().getMethods().get(7), - controller, - request, - org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_cleanup_is_runningResponse.getDefaultInstance(), - com.google.protobuf.RpcUtil.generalizeCallback( - done, - org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_cleanup_is_runningResponse.class, - org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_cleanup_is_runningResponse.getDefaultInstance())); - } - - public void xtreemfsCleanupStart( - com.google.protobuf.RpcController controller, - org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_cleanup_startRequest request, - com.google.protobuf.RpcCallback done) { - channel.callMethod( - getDescriptor().getMethods().get(8), - controller, - request, - org.xtreemfs.pbrpc.generatedinterfaces.Common.emptyResponse.getDefaultInstance(), - com.google.protobuf.RpcUtil.generalizeCallback( - done, - org.xtreemfs.pbrpc.generatedinterfaces.Common.emptyResponse.class, - org.xtreemfs.pbrpc.generatedinterfaces.Common.emptyResponse.getDefaultInstance())); - } - - public void xtreemfsCleanupStatus( - com.google.protobuf.RpcController controller, - org.xtreemfs.pbrpc.generatedinterfaces.Common.emptyRequest request, - com.google.protobuf.RpcCallback done) { - channel.callMethod( - getDescriptor().getMethods().get(9), - controller, - request, - org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_cleanup_statusResponse.getDefaultInstance(), - com.google.protobuf.RpcUtil.generalizeCallback( - done, - org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_cleanup_statusResponse.class, - org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_cleanup_statusResponse.getDefaultInstance())); - } - - public void xtreemfsCleanupStop( - com.google.protobuf.RpcController controller, - org.xtreemfs.pbrpc.generatedinterfaces.Common.emptyRequest request, - com.google.protobuf.RpcCallback done) { - channel.callMethod( - getDescriptor().getMethods().get(10), - controller, - request, - org.xtreemfs.pbrpc.generatedinterfaces.Common.emptyResponse.getDefaultInstance(), - com.google.protobuf.RpcUtil.generalizeCallback( - done, - org.xtreemfs.pbrpc.generatedinterfaces.Common.emptyResponse.class, - org.xtreemfs.pbrpc.generatedinterfaces.Common.emptyResponse.getDefaultInstance())); - } - - public void xtreemfsCleanupVersionsStart( - com.google.protobuf.RpcController controller, - org.xtreemfs.pbrpc.generatedinterfaces.Common.emptyRequest request, - com.google.protobuf.RpcCallback done) { - channel.callMethod( - getDescriptor().getMethods().get(11), - controller, - request, - org.xtreemfs.pbrpc.generatedinterfaces.Common.emptyResponse.getDefaultInstance(), - com.google.protobuf.RpcUtil.generalizeCallback( - done, - org.xtreemfs.pbrpc.generatedinterfaces.Common.emptyResponse.class, - org.xtreemfs.pbrpc.generatedinterfaces.Common.emptyResponse.getDefaultInstance())); - } - - public void xtreemfsRepairObject( - com.google.protobuf.RpcController controller, - org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_repair_objectRequest request, - com.google.protobuf.RpcCallback done) { - channel.callMethod( - getDescriptor().getMethods().get(12), - controller, - request, - org.xtreemfs.pbrpc.generatedinterfaces.Common.emptyResponse.getDefaultInstance(), - com.google.protobuf.RpcUtil.generalizeCallback( - done, - org.xtreemfs.pbrpc.generatedinterfaces.Common.emptyResponse.class, - org.xtreemfs.pbrpc.generatedinterfaces.Common.emptyResponse.getDefaultInstance())); - } - - public void xtreemfsRwrFetch( - com.google.protobuf.RpcController controller, - org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_rwr_fetchRequest request, - com.google.protobuf.RpcCallback done) { - channel.callMethod( - getDescriptor().getMethods().get(13), - controller, - request, - org.xtreemfs.pbrpc.generatedinterfaces.OSD.ObjectData.getDefaultInstance(), - com.google.protobuf.RpcUtil.generalizeCallback( - done, - org.xtreemfs.pbrpc.generatedinterfaces.OSD.ObjectData.class, - org.xtreemfs.pbrpc.generatedinterfaces.OSD.ObjectData.getDefaultInstance())); - } - - public void xtreemfsRwrFleaseMsg( - com.google.protobuf.RpcController controller, - org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_rwr_flease_msgRequest request, - com.google.protobuf.RpcCallback done) { - channel.callMethod( - getDescriptor().getMethods().get(14), - controller, - request, - org.xtreemfs.pbrpc.generatedinterfaces.Common.emptyResponse.getDefaultInstance(), - com.google.protobuf.RpcUtil.generalizeCallback( - done, - org.xtreemfs.pbrpc.generatedinterfaces.Common.emptyResponse.class, - org.xtreemfs.pbrpc.generatedinterfaces.Common.emptyResponse.getDefaultInstance())); - } - - public void xtreemfsRwrNotify( - com.google.protobuf.RpcController controller, - org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials request, - com.google.protobuf.RpcCallback done) { - channel.callMethod( - getDescriptor().getMethods().get(15), - controller, - request, - org.xtreemfs.pbrpc.generatedinterfaces.Common.emptyResponse.getDefaultInstance(), - com.google.protobuf.RpcUtil.generalizeCallback( - done, - org.xtreemfs.pbrpc.generatedinterfaces.Common.emptyResponse.class, - org.xtreemfs.pbrpc.generatedinterfaces.Common.emptyResponse.getDefaultInstance())); - } - - public void xtreemfsRwrSetPrimaryEpoch( - com.google.protobuf.RpcController controller, - org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_rwr_set_primary_epochRequest request, - com.google.protobuf.RpcCallback done) { - channel.callMethod( - getDescriptor().getMethods().get(16), - controller, - request, - org.xtreemfs.pbrpc.generatedinterfaces.OSD.ObjectData.getDefaultInstance(), - com.google.protobuf.RpcUtil.generalizeCallback( - done, - org.xtreemfs.pbrpc.generatedinterfaces.OSD.ObjectData.class, - org.xtreemfs.pbrpc.generatedinterfaces.OSD.ObjectData.getDefaultInstance())); - } - - public void xtreemfsRwrStatus( - com.google.protobuf.RpcController controller, - org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_rwr_statusRequest request, - com.google.protobuf.RpcCallback done) { - channel.callMethod( - getDescriptor().getMethods().get(17), - controller, - request, - org.xtreemfs.pbrpc.generatedinterfaces.OSD.ReplicaStatus.getDefaultInstance(), - com.google.protobuf.RpcUtil.generalizeCallback( - done, - org.xtreemfs.pbrpc.generatedinterfaces.OSD.ReplicaStatus.class, - org.xtreemfs.pbrpc.generatedinterfaces.OSD.ReplicaStatus.getDefaultInstance())); - } - - public void xtreemfsRwrTruncate( - com.google.protobuf.RpcController controller, - org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_rwr_truncateRequest request, - com.google.protobuf.RpcCallback done) { - channel.callMethod( - getDescriptor().getMethods().get(18), - controller, - request, - org.xtreemfs.pbrpc.generatedinterfaces.Common.emptyResponse.getDefaultInstance(), - com.google.protobuf.RpcUtil.generalizeCallback( - done, - org.xtreemfs.pbrpc.generatedinterfaces.Common.emptyResponse.class, - org.xtreemfs.pbrpc.generatedinterfaces.Common.emptyResponse.getDefaultInstance())); - } - - public void xtreemfsRwrUpdate( - com.google.protobuf.RpcController controller, - org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_rwr_updateRequest request, - com.google.protobuf.RpcCallback done) { - channel.callMethod( - getDescriptor().getMethods().get(19), - controller, - request, - org.xtreemfs.pbrpc.generatedinterfaces.Common.emptyResponse.getDefaultInstance(), - com.google.protobuf.RpcUtil.generalizeCallback( - done, - org.xtreemfs.pbrpc.generatedinterfaces.Common.emptyResponse.class, - org.xtreemfs.pbrpc.generatedinterfaces.Common.emptyResponse.getDefaultInstance())); - } - - public void xtreemfsRwrAuthState( - com.google.protobuf.RpcController controller, - org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_rwr_auth_stateRequest request, - com.google.protobuf.RpcCallback done) { - channel.callMethod( - getDescriptor().getMethods().get(20), - controller, - request, - org.xtreemfs.pbrpc.generatedinterfaces.Common.emptyResponse.getDefaultInstance(), - com.google.protobuf.RpcUtil.generalizeCallback( - done, - org.xtreemfs.pbrpc.generatedinterfaces.Common.emptyResponse.class, - org.xtreemfs.pbrpc.generatedinterfaces.Common.emptyResponse.getDefaultInstance())); - } - - public void xtreemfsRwrResetComplete( - com.google.protobuf.RpcController controller, - org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_rwr_reset_completeRequest request, - com.google.protobuf.RpcCallback done) { - channel.callMethod( - getDescriptor().getMethods().get(21), - controller, - request, - org.xtreemfs.pbrpc.generatedinterfaces.Common.emptyResponse.getDefaultInstance(), - com.google.protobuf.RpcUtil.generalizeCallback( - done, - org.xtreemfs.pbrpc.generatedinterfaces.Common.emptyResponse.class, - org.xtreemfs.pbrpc.generatedinterfaces.Common.emptyResponse.getDefaultInstance())); - } - - public void xtreemfsInternalGetGmax( - com.google.protobuf.RpcController controller, - org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_internal_get_gmaxRequest request, - com.google.protobuf.RpcCallback done) { - channel.callMethod( - getDescriptor().getMethods().get(22), - controller, - request, - org.xtreemfs.pbrpc.generatedinterfaces.OSD.InternalGmax.getDefaultInstance(), - com.google.protobuf.RpcUtil.generalizeCallback( - done, - org.xtreemfs.pbrpc.generatedinterfaces.OSD.InternalGmax.class, - org.xtreemfs.pbrpc.generatedinterfaces.OSD.InternalGmax.getDefaultInstance())); - } - - public void xtreemfsInternalTruncate( - com.google.protobuf.RpcController controller, - org.xtreemfs.pbrpc.generatedinterfaces.OSD.truncateRequest request, - com.google.protobuf.RpcCallback done) { - channel.callMethod( - getDescriptor().getMethods().get(23), - controller, - request, - org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.OSDWriteResponse.getDefaultInstance(), - com.google.protobuf.RpcUtil.generalizeCallback( - done, - org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.OSDWriteResponse.class, - org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.OSDWriteResponse.getDefaultInstance())); - } - - public void xtreemfsInternalGetFileSize( - com.google.protobuf.RpcController controller, - org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_internal_get_file_sizeRequest request, - com.google.protobuf.RpcCallback done) { - channel.callMethod( - getDescriptor().getMethods().get(24), - controller, - request, - org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_internal_get_file_sizeResponse.getDefaultInstance(), - com.google.protobuf.RpcUtil.generalizeCallback( - done, - org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_internal_get_file_sizeResponse.class, - org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_internal_get_file_sizeResponse.getDefaultInstance())); - } - - public void xtreemfsInternalReadLocal( - com.google.protobuf.RpcController controller, - org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_internal_read_localRequest request, - com.google.protobuf.RpcCallback done) { - channel.callMethod( - getDescriptor().getMethods().get(25), - controller, - request, - org.xtreemfs.pbrpc.generatedinterfaces.OSD.InternalReadLocalResponse.getDefaultInstance(), - com.google.protobuf.RpcUtil.generalizeCallback( - done, - org.xtreemfs.pbrpc.generatedinterfaces.OSD.InternalReadLocalResponse.class, - org.xtreemfs.pbrpc.generatedinterfaces.OSD.InternalReadLocalResponse.getDefaultInstance())); - } - - public void xtreemfsInternalGetObjectSet( - com.google.protobuf.RpcController controller, - org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_internal_get_object_setRequest request, - com.google.protobuf.RpcCallback done) { - channel.callMethod( - getDescriptor().getMethods().get(26), - controller, - request, - org.xtreemfs.pbrpc.generatedinterfaces.OSD.ObjectList.getDefaultInstance(), - com.google.protobuf.RpcUtil.generalizeCallback( - done, - org.xtreemfs.pbrpc.generatedinterfaces.OSD.ObjectList.class, - org.xtreemfs.pbrpc.generatedinterfaces.OSD.ObjectList.getDefaultInstance())); - } - - public void xtreemfsInternalGetFileidList( - com.google.protobuf.RpcController controller, - org.xtreemfs.pbrpc.generatedinterfaces.Common.emptyRequest request, - com.google.protobuf.RpcCallback done) { - channel.callMethod( - getDescriptor().getMethods().get(27), - controller, - request, - org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_internal_get_fileid_listResponse.getDefaultInstance(), - com.google.protobuf.RpcUtil.generalizeCallback( - done, - org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_internal_get_fileid_listResponse.class, - org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_internal_get_fileid_listResponse.getDefaultInstance())); - } - - public void xtreemfsLockAcquire( - com.google.protobuf.RpcController controller, - org.xtreemfs.pbrpc.generatedinterfaces.OSD.lockRequest request, - com.google.protobuf.RpcCallback done) { - channel.callMethod( - getDescriptor().getMethods().get(28), - controller, - request, - org.xtreemfs.pbrpc.generatedinterfaces.OSD.Lock.getDefaultInstance(), - com.google.protobuf.RpcUtil.generalizeCallback( - done, - org.xtreemfs.pbrpc.generatedinterfaces.OSD.Lock.class, - org.xtreemfs.pbrpc.generatedinterfaces.OSD.Lock.getDefaultInstance())); - } - - public void xtreemfsLockCheck( - com.google.protobuf.RpcController controller, - org.xtreemfs.pbrpc.generatedinterfaces.OSD.lockRequest request, - com.google.protobuf.RpcCallback done) { - channel.callMethod( - getDescriptor().getMethods().get(29), - controller, - request, - org.xtreemfs.pbrpc.generatedinterfaces.OSD.Lock.getDefaultInstance(), - com.google.protobuf.RpcUtil.generalizeCallback( - done, - org.xtreemfs.pbrpc.generatedinterfaces.OSD.Lock.class, - org.xtreemfs.pbrpc.generatedinterfaces.OSD.Lock.getDefaultInstance())); - } - - public void xtreemfsLockRelease( - com.google.protobuf.RpcController controller, - org.xtreemfs.pbrpc.generatedinterfaces.OSD.lockRequest request, - com.google.protobuf.RpcCallback done) { - channel.callMethod( - getDescriptor().getMethods().get(30), - controller, - request, - org.xtreemfs.pbrpc.generatedinterfaces.Common.emptyResponse.getDefaultInstance(), - com.google.protobuf.RpcUtil.generalizeCallback( - done, - org.xtreemfs.pbrpc.generatedinterfaces.Common.emptyResponse.class, - org.xtreemfs.pbrpc.generatedinterfaces.Common.emptyResponse.getDefaultInstance())); - } - - public void xtreemfsPing( - com.google.protobuf.RpcController controller, - org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_pingMesssage request, - com.google.protobuf.RpcCallback done) { - channel.callMethod( - getDescriptor().getMethods().get(31), - controller, - request, - org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_pingMesssage.getDefaultInstance(), - com.google.protobuf.RpcUtil.generalizeCallback( - done, - org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_pingMesssage.class, - org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_pingMesssage.getDefaultInstance())); - } - - public void xtreemfsShutdown( - com.google.protobuf.RpcController controller, - org.xtreemfs.pbrpc.generatedinterfaces.Common.emptyRequest request, - com.google.protobuf.RpcCallback done) { - channel.callMethod( - getDescriptor().getMethods().get(32), - controller, - request, - org.xtreemfs.pbrpc.generatedinterfaces.Common.emptyResponse.getDefaultInstance(), - com.google.protobuf.RpcUtil.generalizeCallback( - done, - org.xtreemfs.pbrpc.generatedinterfaces.Common.emptyResponse.class, - org.xtreemfs.pbrpc.generatedinterfaces.Common.emptyResponse.getDefaultInstance())); - } - } - - public static BlockingInterface newBlockingStub( - com.google.protobuf.BlockingRpcChannel channel) { - return new BlockingStub(channel); - } - - public interface BlockingInterface { - public org.xtreemfs.pbrpc.generatedinterfaces.OSD.ObjectData read( - com.google.protobuf.RpcController controller, - org.xtreemfs.pbrpc.generatedinterfaces.OSD.readRequest request) - throws com.google.protobuf.ServiceException; - - public org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.OSDWriteResponse truncate( - com.google.protobuf.RpcController controller, - org.xtreemfs.pbrpc.generatedinterfaces.OSD.truncateRequest request) - throws com.google.protobuf.ServiceException; - - public org.xtreemfs.pbrpc.generatedinterfaces.Common.emptyResponse unlink( - com.google.protobuf.RpcController controller, - org.xtreemfs.pbrpc.generatedinterfaces.OSD.unlink_osd_Request request) - throws com.google.protobuf.ServiceException; - - public org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.OSDWriteResponse write( - com.google.protobuf.RpcController controller, - org.xtreemfs.pbrpc.generatedinterfaces.OSD.writeRequest request) - throws com.google.protobuf.ServiceException; - - public org.xtreemfs.pbrpc.generatedinterfaces.Common.emptyResponse xtreemfsBroadcastGmax( - com.google.protobuf.RpcController controller, - org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_broadcast_gmaxRequest request) - throws com.google.protobuf.ServiceException; - - public org.xtreemfs.pbrpc.generatedinterfaces.OSD.ObjectData xtreemfsCheckObject( - com.google.protobuf.RpcController controller, - org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_check_objectRequest request) - throws com.google.protobuf.ServiceException; - - public org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_cleanup_get_resultsResponse xtreemfsCleanupGetResults( - com.google.protobuf.RpcController controller, - org.xtreemfs.pbrpc.generatedinterfaces.Common.emptyRequest request) - throws com.google.protobuf.ServiceException; - - public org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_cleanup_is_runningResponse xtreemfsCleanupIsRunning( - com.google.protobuf.RpcController controller, - org.xtreemfs.pbrpc.generatedinterfaces.Common.emptyRequest request) - throws com.google.protobuf.ServiceException; - - public org.xtreemfs.pbrpc.generatedinterfaces.Common.emptyResponse xtreemfsCleanupStart( - com.google.protobuf.RpcController controller, - org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_cleanup_startRequest request) - throws com.google.protobuf.ServiceException; - - public org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_cleanup_statusResponse xtreemfsCleanupStatus( - com.google.protobuf.RpcController controller, - org.xtreemfs.pbrpc.generatedinterfaces.Common.emptyRequest request) - throws com.google.protobuf.ServiceException; - - public org.xtreemfs.pbrpc.generatedinterfaces.Common.emptyResponse xtreemfsCleanupStop( - com.google.protobuf.RpcController controller, - org.xtreemfs.pbrpc.generatedinterfaces.Common.emptyRequest request) - throws com.google.protobuf.ServiceException; - - public org.xtreemfs.pbrpc.generatedinterfaces.Common.emptyResponse xtreemfsCleanupVersionsStart( - com.google.protobuf.RpcController controller, - org.xtreemfs.pbrpc.generatedinterfaces.Common.emptyRequest request) - throws com.google.protobuf.ServiceException; - - public org.xtreemfs.pbrpc.generatedinterfaces.Common.emptyResponse xtreemfsRepairObject( - com.google.protobuf.RpcController controller, - org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_repair_objectRequest request) - throws com.google.protobuf.ServiceException; - - public org.xtreemfs.pbrpc.generatedinterfaces.OSD.ObjectData xtreemfsRwrFetch( - com.google.protobuf.RpcController controller, - org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_rwr_fetchRequest request) - throws com.google.protobuf.ServiceException; - - public org.xtreemfs.pbrpc.generatedinterfaces.Common.emptyResponse xtreemfsRwrFleaseMsg( - com.google.protobuf.RpcController controller, - org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_rwr_flease_msgRequest request) - throws com.google.protobuf.ServiceException; - - public org.xtreemfs.pbrpc.generatedinterfaces.Common.emptyResponse xtreemfsRwrNotify( - com.google.protobuf.RpcController controller, - org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials request) - throws com.google.protobuf.ServiceException; - - public org.xtreemfs.pbrpc.generatedinterfaces.OSD.ObjectData xtreemfsRwrSetPrimaryEpoch( - com.google.protobuf.RpcController controller, - org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_rwr_set_primary_epochRequest request) - throws com.google.protobuf.ServiceException; - - public org.xtreemfs.pbrpc.generatedinterfaces.OSD.ReplicaStatus xtreemfsRwrStatus( - com.google.protobuf.RpcController controller, - org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_rwr_statusRequest request) - throws com.google.protobuf.ServiceException; - - public org.xtreemfs.pbrpc.generatedinterfaces.Common.emptyResponse xtreemfsRwrTruncate( - com.google.protobuf.RpcController controller, - org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_rwr_truncateRequest request) - throws com.google.protobuf.ServiceException; - - public org.xtreemfs.pbrpc.generatedinterfaces.Common.emptyResponse xtreemfsRwrUpdate( - com.google.protobuf.RpcController controller, - org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_rwr_updateRequest request) - throws com.google.protobuf.ServiceException; - - public org.xtreemfs.pbrpc.generatedinterfaces.Common.emptyResponse xtreemfsRwrAuthState( - com.google.protobuf.RpcController controller, - org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_rwr_auth_stateRequest request) - throws com.google.protobuf.ServiceException; - - public org.xtreemfs.pbrpc.generatedinterfaces.Common.emptyResponse xtreemfsRwrResetComplete( - com.google.protobuf.RpcController controller, - org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_rwr_reset_completeRequest request) - throws com.google.protobuf.ServiceException; - - public org.xtreemfs.pbrpc.generatedinterfaces.OSD.InternalGmax xtreemfsInternalGetGmax( - com.google.protobuf.RpcController controller, - org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_internal_get_gmaxRequest request) - throws com.google.protobuf.ServiceException; - - public org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.OSDWriteResponse xtreemfsInternalTruncate( - com.google.protobuf.RpcController controller, - org.xtreemfs.pbrpc.generatedinterfaces.OSD.truncateRequest request) - throws com.google.protobuf.ServiceException; - - public org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_internal_get_file_sizeResponse xtreemfsInternalGetFileSize( - com.google.protobuf.RpcController controller, - org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_internal_get_file_sizeRequest request) - throws com.google.protobuf.ServiceException; - - public org.xtreemfs.pbrpc.generatedinterfaces.OSD.InternalReadLocalResponse xtreemfsInternalReadLocal( - com.google.protobuf.RpcController controller, - org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_internal_read_localRequest request) - throws com.google.protobuf.ServiceException; - - public org.xtreemfs.pbrpc.generatedinterfaces.OSD.ObjectList xtreemfsInternalGetObjectSet( - com.google.protobuf.RpcController controller, - org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_internal_get_object_setRequest request) - throws com.google.protobuf.ServiceException; - - public org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_internal_get_fileid_listResponse xtreemfsInternalGetFileidList( - com.google.protobuf.RpcController controller, - org.xtreemfs.pbrpc.generatedinterfaces.Common.emptyRequest request) - throws com.google.protobuf.ServiceException; - - public org.xtreemfs.pbrpc.generatedinterfaces.OSD.Lock xtreemfsLockAcquire( - com.google.protobuf.RpcController controller, - org.xtreemfs.pbrpc.generatedinterfaces.OSD.lockRequest request) - throws com.google.protobuf.ServiceException; - - public org.xtreemfs.pbrpc.generatedinterfaces.OSD.Lock xtreemfsLockCheck( - com.google.protobuf.RpcController controller, - org.xtreemfs.pbrpc.generatedinterfaces.OSD.lockRequest request) - throws com.google.protobuf.ServiceException; - - public org.xtreemfs.pbrpc.generatedinterfaces.Common.emptyResponse xtreemfsLockRelease( - com.google.protobuf.RpcController controller, - org.xtreemfs.pbrpc.generatedinterfaces.OSD.lockRequest request) - throws com.google.protobuf.ServiceException; - - public org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_pingMesssage xtreemfsPing( - com.google.protobuf.RpcController controller, - org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_pingMesssage request) - throws com.google.protobuf.ServiceException; - - public org.xtreemfs.pbrpc.generatedinterfaces.Common.emptyResponse xtreemfsShutdown( - com.google.protobuf.RpcController controller, - org.xtreemfs.pbrpc.generatedinterfaces.Common.emptyRequest request) - throws com.google.protobuf.ServiceException; - } - - private static final class BlockingStub implements BlockingInterface { - private BlockingStub(com.google.protobuf.BlockingRpcChannel channel) { - this.channel = channel; - } - - private final com.google.protobuf.BlockingRpcChannel channel; - - public org.xtreemfs.pbrpc.generatedinterfaces.OSD.ObjectData read( - com.google.protobuf.RpcController controller, - org.xtreemfs.pbrpc.generatedinterfaces.OSD.readRequest request) - throws com.google.protobuf.ServiceException { - return (org.xtreemfs.pbrpc.generatedinterfaces.OSD.ObjectData) channel.callBlockingMethod( - getDescriptor().getMethods().get(0), - controller, - request, - org.xtreemfs.pbrpc.generatedinterfaces.OSD.ObjectData.getDefaultInstance()); - } - - - public org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.OSDWriteResponse truncate( - com.google.protobuf.RpcController controller, - org.xtreemfs.pbrpc.generatedinterfaces.OSD.truncateRequest request) - throws com.google.protobuf.ServiceException { - return (org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.OSDWriteResponse) channel.callBlockingMethod( - getDescriptor().getMethods().get(1), - controller, - request, - org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.OSDWriteResponse.getDefaultInstance()); - } - - - public org.xtreemfs.pbrpc.generatedinterfaces.Common.emptyResponse unlink( - com.google.protobuf.RpcController controller, - org.xtreemfs.pbrpc.generatedinterfaces.OSD.unlink_osd_Request request) - throws com.google.protobuf.ServiceException { - return (org.xtreemfs.pbrpc.generatedinterfaces.Common.emptyResponse) channel.callBlockingMethod( - getDescriptor().getMethods().get(2), - controller, - request, - org.xtreemfs.pbrpc.generatedinterfaces.Common.emptyResponse.getDefaultInstance()); - } - - - public org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.OSDWriteResponse write( - com.google.protobuf.RpcController controller, - org.xtreemfs.pbrpc.generatedinterfaces.OSD.writeRequest request) - throws com.google.protobuf.ServiceException { - return (org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.OSDWriteResponse) channel.callBlockingMethod( - getDescriptor().getMethods().get(3), - controller, - request, - org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.OSDWriteResponse.getDefaultInstance()); - } - - - public org.xtreemfs.pbrpc.generatedinterfaces.Common.emptyResponse xtreemfsBroadcastGmax( - com.google.protobuf.RpcController controller, - org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_broadcast_gmaxRequest request) - throws com.google.protobuf.ServiceException { - return (org.xtreemfs.pbrpc.generatedinterfaces.Common.emptyResponse) channel.callBlockingMethod( - getDescriptor().getMethods().get(4), - controller, - request, - org.xtreemfs.pbrpc.generatedinterfaces.Common.emptyResponse.getDefaultInstance()); - } - - - public org.xtreemfs.pbrpc.generatedinterfaces.OSD.ObjectData xtreemfsCheckObject( - com.google.protobuf.RpcController controller, - org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_check_objectRequest request) - throws com.google.protobuf.ServiceException { - return (org.xtreemfs.pbrpc.generatedinterfaces.OSD.ObjectData) channel.callBlockingMethod( - getDescriptor().getMethods().get(5), - controller, - request, - org.xtreemfs.pbrpc.generatedinterfaces.OSD.ObjectData.getDefaultInstance()); - } - - - public org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_cleanup_get_resultsResponse xtreemfsCleanupGetResults( - com.google.protobuf.RpcController controller, - org.xtreemfs.pbrpc.generatedinterfaces.Common.emptyRequest request) - throws com.google.protobuf.ServiceException { - return (org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_cleanup_get_resultsResponse) channel.callBlockingMethod( - getDescriptor().getMethods().get(6), - controller, - request, - org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_cleanup_get_resultsResponse.getDefaultInstance()); - } - - - public org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_cleanup_is_runningResponse xtreemfsCleanupIsRunning( - com.google.protobuf.RpcController controller, - org.xtreemfs.pbrpc.generatedinterfaces.Common.emptyRequest request) - throws com.google.protobuf.ServiceException { - return (org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_cleanup_is_runningResponse) channel.callBlockingMethod( - getDescriptor().getMethods().get(7), - controller, - request, - org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_cleanup_is_runningResponse.getDefaultInstance()); - } - - - public org.xtreemfs.pbrpc.generatedinterfaces.Common.emptyResponse xtreemfsCleanupStart( - com.google.protobuf.RpcController controller, - org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_cleanup_startRequest request) - throws com.google.protobuf.ServiceException { - return (org.xtreemfs.pbrpc.generatedinterfaces.Common.emptyResponse) channel.callBlockingMethod( - getDescriptor().getMethods().get(8), - controller, - request, - org.xtreemfs.pbrpc.generatedinterfaces.Common.emptyResponse.getDefaultInstance()); - } - - - public org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_cleanup_statusResponse xtreemfsCleanupStatus( - com.google.protobuf.RpcController controller, - org.xtreemfs.pbrpc.generatedinterfaces.Common.emptyRequest request) - throws com.google.protobuf.ServiceException { - return (org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_cleanup_statusResponse) channel.callBlockingMethod( - getDescriptor().getMethods().get(9), - controller, - request, - org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_cleanup_statusResponse.getDefaultInstance()); - } - - - public org.xtreemfs.pbrpc.generatedinterfaces.Common.emptyResponse xtreemfsCleanupStop( - com.google.protobuf.RpcController controller, - org.xtreemfs.pbrpc.generatedinterfaces.Common.emptyRequest request) - throws com.google.protobuf.ServiceException { - return (org.xtreemfs.pbrpc.generatedinterfaces.Common.emptyResponse) channel.callBlockingMethod( - getDescriptor().getMethods().get(10), - controller, - request, - org.xtreemfs.pbrpc.generatedinterfaces.Common.emptyResponse.getDefaultInstance()); - } - - - public org.xtreemfs.pbrpc.generatedinterfaces.Common.emptyResponse xtreemfsCleanupVersionsStart( - com.google.protobuf.RpcController controller, - org.xtreemfs.pbrpc.generatedinterfaces.Common.emptyRequest request) - throws com.google.protobuf.ServiceException { - return (org.xtreemfs.pbrpc.generatedinterfaces.Common.emptyResponse) channel.callBlockingMethod( - getDescriptor().getMethods().get(11), - controller, - request, - org.xtreemfs.pbrpc.generatedinterfaces.Common.emptyResponse.getDefaultInstance()); - } - - - public org.xtreemfs.pbrpc.generatedinterfaces.Common.emptyResponse xtreemfsRepairObject( - com.google.protobuf.RpcController controller, - org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_repair_objectRequest request) - throws com.google.protobuf.ServiceException { - return (org.xtreemfs.pbrpc.generatedinterfaces.Common.emptyResponse) channel.callBlockingMethod( - getDescriptor().getMethods().get(12), - controller, - request, - org.xtreemfs.pbrpc.generatedinterfaces.Common.emptyResponse.getDefaultInstance()); - } - - - public org.xtreemfs.pbrpc.generatedinterfaces.OSD.ObjectData xtreemfsRwrFetch( - com.google.protobuf.RpcController controller, - org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_rwr_fetchRequest request) - throws com.google.protobuf.ServiceException { - return (org.xtreemfs.pbrpc.generatedinterfaces.OSD.ObjectData) channel.callBlockingMethod( - getDescriptor().getMethods().get(13), - controller, - request, - org.xtreemfs.pbrpc.generatedinterfaces.OSD.ObjectData.getDefaultInstance()); - } - - - public org.xtreemfs.pbrpc.generatedinterfaces.Common.emptyResponse xtreemfsRwrFleaseMsg( - com.google.protobuf.RpcController controller, - org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_rwr_flease_msgRequest request) - throws com.google.protobuf.ServiceException { - return (org.xtreemfs.pbrpc.generatedinterfaces.Common.emptyResponse) channel.callBlockingMethod( - getDescriptor().getMethods().get(14), - controller, - request, - org.xtreemfs.pbrpc.generatedinterfaces.Common.emptyResponse.getDefaultInstance()); - } - - - public org.xtreemfs.pbrpc.generatedinterfaces.Common.emptyResponse xtreemfsRwrNotify( - com.google.protobuf.RpcController controller, - org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.FileCredentials request) - throws com.google.protobuf.ServiceException { - return (org.xtreemfs.pbrpc.generatedinterfaces.Common.emptyResponse) channel.callBlockingMethod( - getDescriptor().getMethods().get(15), - controller, - request, - org.xtreemfs.pbrpc.generatedinterfaces.Common.emptyResponse.getDefaultInstance()); - } - - - public org.xtreemfs.pbrpc.generatedinterfaces.OSD.ObjectData xtreemfsRwrSetPrimaryEpoch( - com.google.protobuf.RpcController controller, - org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_rwr_set_primary_epochRequest request) - throws com.google.protobuf.ServiceException { - return (org.xtreemfs.pbrpc.generatedinterfaces.OSD.ObjectData) channel.callBlockingMethod( - getDescriptor().getMethods().get(16), - controller, - request, - org.xtreemfs.pbrpc.generatedinterfaces.OSD.ObjectData.getDefaultInstance()); - } - - - public org.xtreemfs.pbrpc.generatedinterfaces.OSD.ReplicaStatus xtreemfsRwrStatus( - com.google.protobuf.RpcController controller, - org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_rwr_statusRequest request) - throws com.google.protobuf.ServiceException { - return (org.xtreemfs.pbrpc.generatedinterfaces.OSD.ReplicaStatus) channel.callBlockingMethod( - getDescriptor().getMethods().get(17), - controller, - request, - org.xtreemfs.pbrpc.generatedinterfaces.OSD.ReplicaStatus.getDefaultInstance()); - } - - - public org.xtreemfs.pbrpc.generatedinterfaces.Common.emptyResponse xtreemfsRwrTruncate( - com.google.protobuf.RpcController controller, - org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_rwr_truncateRequest request) - throws com.google.protobuf.ServiceException { - return (org.xtreemfs.pbrpc.generatedinterfaces.Common.emptyResponse) channel.callBlockingMethod( - getDescriptor().getMethods().get(18), - controller, - request, - org.xtreemfs.pbrpc.generatedinterfaces.Common.emptyResponse.getDefaultInstance()); - } - - - public org.xtreemfs.pbrpc.generatedinterfaces.Common.emptyResponse xtreemfsRwrUpdate( - com.google.protobuf.RpcController controller, - org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_rwr_updateRequest request) - throws com.google.protobuf.ServiceException { - return (org.xtreemfs.pbrpc.generatedinterfaces.Common.emptyResponse) channel.callBlockingMethod( - getDescriptor().getMethods().get(19), - controller, - request, - org.xtreemfs.pbrpc.generatedinterfaces.Common.emptyResponse.getDefaultInstance()); - } - - - public org.xtreemfs.pbrpc.generatedinterfaces.Common.emptyResponse xtreemfsRwrAuthState( - com.google.protobuf.RpcController controller, - org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_rwr_auth_stateRequest request) - throws com.google.protobuf.ServiceException { - return (org.xtreemfs.pbrpc.generatedinterfaces.Common.emptyResponse) channel.callBlockingMethod( - getDescriptor().getMethods().get(20), - controller, - request, - org.xtreemfs.pbrpc.generatedinterfaces.Common.emptyResponse.getDefaultInstance()); - } - - - public org.xtreemfs.pbrpc.generatedinterfaces.Common.emptyResponse xtreemfsRwrResetComplete( - com.google.protobuf.RpcController controller, - org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_rwr_reset_completeRequest request) - throws com.google.protobuf.ServiceException { - return (org.xtreemfs.pbrpc.generatedinterfaces.Common.emptyResponse) channel.callBlockingMethod( - getDescriptor().getMethods().get(21), - controller, - request, - org.xtreemfs.pbrpc.generatedinterfaces.Common.emptyResponse.getDefaultInstance()); - } - - - public org.xtreemfs.pbrpc.generatedinterfaces.OSD.InternalGmax xtreemfsInternalGetGmax( - com.google.protobuf.RpcController controller, - org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_internal_get_gmaxRequest request) - throws com.google.protobuf.ServiceException { - return (org.xtreemfs.pbrpc.generatedinterfaces.OSD.InternalGmax) channel.callBlockingMethod( - getDescriptor().getMethods().get(22), - controller, - request, - org.xtreemfs.pbrpc.generatedinterfaces.OSD.InternalGmax.getDefaultInstance()); - } - - - public org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.OSDWriteResponse xtreemfsInternalTruncate( - com.google.protobuf.RpcController controller, - org.xtreemfs.pbrpc.generatedinterfaces.OSD.truncateRequest request) - throws com.google.protobuf.ServiceException { - return (org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.OSDWriteResponse) channel.callBlockingMethod( - getDescriptor().getMethods().get(23), - controller, - request, - org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.OSDWriteResponse.getDefaultInstance()); - } - - - public org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_internal_get_file_sizeResponse xtreemfsInternalGetFileSize( - com.google.protobuf.RpcController controller, - org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_internal_get_file_sizeRequest request) - throws com.google.protobuf.ServiceException { - return (org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_internal_get_file_sizeResponse) channel.callBlockingMethod( - getDescriptor().getMethods().get(24), - controller, - request, - org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_internal_get_file_sizeResponse.getDefaultInstance()); - } - - - public org.xtreemfs.pbrpc.generatedinterfaces.OSD.InternalReadLocalResponse xtreemfsInternalReadLocal( - com.google.protobuf.RpcController controller, - org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_internal_read_localRequest request) - throws com.google.protobuf.ServiceException { - return (org.xtreemfs.pbrpc.generatedinterfaces.OSD.InternalReadLocalResponse) channel.callBlockingMethod( - getDescriptor().getMethods().get(25), - controller, - request, - org.xtreemfs.pbrpc.generatedinterfaces.OSD.InternalReadLocalResponse.getDefaultInstance()); - } - - - public org.xtreemfs.pbrpc.generatedinterfaces.OSD.ObjectList xtreemfsInternalGetObjectSet( - com.google.protobuf.RpcController controller, - org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_internal_get_object_setRequest request) - throws com.google.protobuf.ServiceException { - return (org.xtreemfs.pbrpc.generatedinterfaces.OSD.ObjectList) channel.callBlockingMethod( - getDescriptor().getMethods().get(26), - controller, - request, - org.xtreemfs.pbrpc.generatedinterfaces.OSD.ObjectList.getDefaultInstance()); - } - - - public org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_internal_get_fileid_listResponse xtreemfsInternalGetFileidList( - com.google.protobuf.RpcController controller, - org.xtreemfs.pbrpc.generatedinterfaces.Common.emptyRequest request) - throws com.google.protobuf.ServiceException { - return (org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_internal_get_fileid_listResponse) channel.callBlockingMethod( - getDescriptor().getMethods().get(27), - controller, - request, - org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_internal_get_fileid_listResponse.getDefaultInstance()); - } - - - public org.xtreemfs.pbrpc.generatedinterfaces.OSD.Lock xtreemfsLockAcquire( - com.google.protobuf.RpcController controller, - org.xtreemfs.pbrpc.generatedinterfaces.OSD.lockRequest request) - throws com.google.protobuf.ServiceException { - return (org.xtreemfs.pbrpc.generatedinterfaces.OSD.Lock) channel.callBlockingMethod( - getDescriptor().getMethods().get(28), - controller, - request, - org.xtreemfs.pbrpc.generatedinterfaces.OSD.Lock.getDefaultInstance()); - } - - - public org.xtreemfs.pbrpc.generatedinterfaces.OSD.Lock xtreemfsLockCheck( - com.google.protobuf.RpcController controller, - org.xtreemfs.pbrpc.generatedinterfaces.OSD.lockRequest request) - throws com.google.protobuf.ServiceException { - return (org.xtreemfs.pbrpc.generatedinterfaces.OSD.Lock) channel.callBlockingMethod( - getDescriptor().getMethods().get(29), - controller, - request, - org.xtreemfs.pbrpc.generatedinterfaces.OSD.Lock.getDefaultInstance()); - } - - - public org.xtreemfs.pbrpc.generatedinterfaces.Common.emptyResponse xtreemfsLockRelease( - com.google.protobuf.RpcController controller, - org.xtreemfs.pbrpc.generatedinterfaces.OSD.lockRequest request) - throws com.google.protobuf.ServiceException { - return (org.xtreemfs.pbrpc.generatedinterfaces.Common.emptyResponse) channel.callBlockingMethod( - getDescriptor().getMethods().get(30), - controller, - request, - org.xtreemfs.pbrpc.generatedinterfaces.Common.emptyResponse.getDefaultInstance()); - } - - - public org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_pingMesssage xtreemfsPing( - com.google.protobuf.RpcController controller, - org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_pingMesssage request) - throws com.google.protobuf.ServiceException { - return (org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_pingMesssage) channel.callBlockingMethod( - getDescriptor().getMethods().get(31), - controller, - request, - org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_pingMesssage.getDefaultInstance()); - } - - - public org.xtreemfs.pbrpc.generatedinterfaces.Common.emptyResponse xtreemfsShutdown( - com.google.protobuf.RpcController controller, - org.xtreemfs.pbrpc.generatedinterfaces.Common.emptyRequest request) - throws com.google.protobuf.ServiceException { - return (org.xtreemfs.pbrpc.generatedinterfaces.Common.emptyResponse) channel.callBlockingMethod( - getDescriptor().getMethods().get(32), - controller, - request, - org.xtreemfs.pbrpc.generatedinterfaces.Common.emptyResponse.getDefaultInstance()); - } - - } - } - + private static com.google.protobuf.Descriptors.Descriptor internal_static_xtreemfs_pbrpc_InternalGmax_descriptor; private static @@ -17670,7 +30643,7 @@ public final class OSD { private static com.google.protobuf.GeneratedMessage.FieldAccessorTable internal_static_xtreemfs_pbrpc_xtreemfs_rwr_reset_completeRequest_fieldAccessorTable; - + public static com.google.protobuf.Descriptors.FileDescriptor getDescriptor() { return descriptor; @@ -17901,311 +30874,269 @@ public final class OSD { internal_static_xtreemfs_pbrpc_InternalGmax_fieldAccessorTable = new com.google.protobuf.GeneratedMessage.FieldAccessorTable( internal_static_xtreemfs_pbrpc_InternalGmax_descriptor, - new java.lang.String[] { "Epoch", "FileSize", "LastObjectId", }, - org.xtreemfs.pbrpc.generatedinterfaces.OSD.InternalGmax.class, - org.xtreemfs.pbrpc.generatedinterfaces.OSD.InternalGmax.Builder.class); + new java.lang.String[] { "Epoch", "FileSize", "LastObjectId", }); internal_static_xtreemfs_pbrpc_Lock_descriptor = getDescriptor().getMessageTypes().get(1); internal_static_xtreemfs_pbrpc_Lock_fieldAccessorTable = new com.google.protobuf.GeneratedMessage.FieldAccessorTable( internal_static_xtreemfs_pbrpc_Lock_descriptor, - new java.lang.String[] { "ClientPid", "ClientUuid", "Length", "Offset", "Exclusive", }, - org.xtreemfs.pbrpc.generatedinterfaces.OSD.Lock.class, - org.xtreemfs.pbrpc.generatedinterfaces.OSD.Lock.Builder.class); + new java.lang.String[] { "ClientPid", "ClientUuid", "Length", "Offset", "Exclusive", }); internal_static_xtreemfs_pbrpc_ObjectData_descriptor = getDescriptor().getMessageTypes().get(2); internal_static_xtreemfs_pbrpc_ObjectData_fieldAccessorTable = new com.google.protobuf.GeneratedMessage.FieldAccessorTable( internal_static_xtreemfs_pbrpc_ObjectData_descriptor, - new java.lang.String[] { "Checksum", "InvalidChecksumOnOsd", "ZeroPadding", }, - org.xtreemfs.pbrpc.generatedinterfaces.OSD.ObjectData.class, - org.xtreemfs.pbrpc.generatedinterfaces.OSD.ObjectData.Builder.class); + new java.lang.String[] { "Checksum", "InvalidChecksumOnOsd", "ZeroPadding", }); internal_static_xtreemfs_pbrpc_ObjectList_descriptor = getDescriptor().getMessageTypes().get(3); internal_static_xtreemfs_pbrpc_ObjectList_fieldAccessorTable = new com.google.protobuf.GeneratedMessage.FieldAccessorTable( internal_static_xtreemfs_pbrpc_ObjectList_descriptor, - new java.lang.String[] { "Set", "StripeWidth", "First", }, - org.xtreemfs.pbrpc.generatedinterfaces.OSD.ObjectList.class, - org.xtreemfs.pbrpc.generatedinterfaces.OSD.ObjectList.Builder.class); + new java.lang.String[] { "Set", "StripeWidth", "First", }); internal_static_xtreemfs_pbrpc_ObjectVersion_descriptor = getDescriptor().getMessageTypes().get(4); internal_static_xtreemfs_pbrpc_ObjectVersion_fieldAccessorTable = new com.google.protobuf.GeneratedMessage.FieldAccessorTable( internal_static_xtreemfs_pbrpc_ObjectVersion_descriptor, - new java.lang.String[] { "ObjectNumber", "ObjectVersion", }, - org.xtreemfs.pbrpc.generatedinterfaces.OSD.ObjectVersion.class, - org.xtreemfs.pbrpc.generatedinterfaces.OSD.ObjectVersion.Builder.class); + new java.lang.String[] { "ObjectNumber", "ObjectVersion", }); internal_static_xtreemfs_pbrpc_TruncateRecord_descriptor = getDescriptor().getMessageTypes().get(5); internal_static_xtreemfs_pbrpc_TruncateRecord_fieldAccessorTable = new com.google.protobuf.GeneratedMessage.FieldAccessorTable( internal_static_xtreemfs_pbrpc_TruncateRecord_descriptor, - new java.lang.String[] { "Version", "LastObjectNumber", }, - org.xtreemfs.pbrpc.generatedinterfaces.OSD.TruncateRecord.class, - org.xtreemfs.pbrpc.generatedinterfaces.OSD.TruncateRecord.Builder.class); + new java.lang.String[] { "Version", "LastObjectNumber", }); internal_static_xtreemfs_pbrpc_TruncateLog_descriptor = getDescriptor().getMessageTypes().get(6); internal_static_xtreemfs_pbrpc_TruncateLog_fieldAccessorTable = new com.google.protobuf.GeneratedMessage.FieldAccessorTable( internal_static_xtreemfs_pbrpc_TruncateLog_descriptor, - new java.lang.String[] { "Records", }, - org.xtreemfs.pbrpc.generatedinterfaces.OSD.TruncateLog.class, - org.xtreemfs.pbrpc.generatedinterfaces.OSD.TruncateLog.Builder.class); + new java.lang.String[] { "Records", }); internal_static_xtreemfs_pbrpc_ReplicaStatus_descriptor = getDescriptor().getMessageTypes().get(7); internal_static_xtreemfs_pbrpc_ReplicaStatus_fieldAccessorTable = new com.google.protobuf.GeneratedMessage.FieldAccessorTable( internal_static_xtreemfs_pbrpc_ReplicaStatus_descriptor, - new java.lang.String[] { "TruncateEpoch", "FileSize", "MaxObjVersion", "PrimaryEpoch", "ObjectVersions", "TruncateLog", }, - org.xtreemfs.pbrpc.generatedinterfaces.OSD.ReplicaStatus.class, - org.xtreemfs.pbrpc.generatedinterfaces.OSD.ReplicaStatus.Builder.class); + new java.lang.String[] { "TruncateEpoch", "FileSize", "MaxObjVersion", "PrimaryEpoch", "ObjectVersions", "TruncateLog", }); internal_static_xtreemfs_pbrpc_ObjectVersionMapping_descriptor = getDescriptor().getMessageTypes().get(8); internal_static_xtreemfs_pbrpc_ObjectVersionMapping_fieldAccessorTable = new com.google.protobuf.GeneratedMessage.FieldAccessorTable( internal_static_xtreemfs_pbrpc_ObjectVersionMapping_descriptor, - new java.lang.String[] { "ObjectNumber", "ObjectVersion", "OsdUuids", }, - org.xtreemfs.pbrpc.generatedinterfaces.OSD.ObjectVersionMapping.class, - org.xtreemfs.pbrpc.generatedinterfaces.OSD.ObjectVersionMapping.Builder.class); + new java.lang.String[] { "ObjectNumber", "ObjectVersion", "OsdUuids", }); internal_static_xtreemfs_pbrpc_AuthoritativeReplicaState_descriptor = getDescriptor().getMessageTypes().get(9); internal_static_xtreemfs_pbrpc_AuthoritativeReplicaState_fieldAccessorTable = new com.google.protobuf.GeneratedMessage.FieldAccessorTable( internal_static_xtreemfs_pbrpc_AuthoritativeReplicaState_descriptor, - new java.lang.String[] { "TruncateEpoch", "MaxObjVersion", "ObjectVersions", "TruncateLog", }, - org.xtreemfs.pbrpc.generatedinterfaces.OSD.AuthoritativeReplicaState.class, - org.xtreemfs.pbrpc.generatedinterfaces.OSD.AuthoritativeReplicaState.Builder.class); + new java.lang.String[] { "TruncateEpoch", "MaxObjVersion", "ObjectVersions", "TruncateLog", }); internal_static_xtreemfs_pbrpc_InternalReadLocalResponse_descriptor = getDescriptor().getMessageTypes().get(10); internal_static_xtreemfs_pbrpc_InternalReadLocalResponse_fieldAccessorTable = new com.google.protobuf.GeneratedMessage.FieldAccessorTable( internal_static_xtreemfs_pbrpc_InternalReadLocalResponse_descriptor, - new java.lang.String[] { "Data", "ObjectSet", }, - org.xtreemfs.pbrpc.generatedinterfaces.OSD.InternalReadLocalResponse.class, - org.xtreemfs.pbrpc.generatedinterfaces.OSD.InternalReadLocalResponse.Builder.class); + new java.lang.String[] { "Data", "ObjectSet", }); internal_static_xtreemfs_pbrpc_readRequest_descriptor = getDescriptor().getMessageTypes().get(11); internal_static_xtreemfs_pbrpc_readRequest_fieldAccessorTable = new com.google.protobuf.GeneratedMessage.FieldAccessorTable( internal_static_xtreemfs_pbrpc_readRequest_descriptor, - new java.lang.String[] { "FileCredentials", "FileId", "ObjectNumber", "ObjectVersion", "Offset", "Length", }, - org.xtreemfs.pbrpc.generatedinterfaces.OSD.readRequest.class, - org.xtreemfs.pbrpc.generatedinterfaces.OSD.readRequest.Builder.class); + new java.lang.String[] { "FileCredentials", "FileId", "ObjectNumber", "ObjectVersion", "Offset", "Length", }); internal_static_xtreemfs_pbrpc_truncateRequest_descriptor = getDescriptor().getMessageTypes().get(12); internal_static_xtreemfs_pbrpc_truncateRequest_fieldAccessorTable = new com.google.protobuf.GeneratedMessage.FieldAccessorTable( internal_static_xtreemfs_pbrpc_truncateRequest_descriptor, - new java.lang.String[] { "FileCredentials", "FileId", "NewFileSize", }, - org.xtreemfs.pbrpc.generatedinterfaces.OSD.truncateRequest.class, - org.xtreemfs.pbrpc.generatedinterfaces.OSD.truncateRequest.Builder.class); + new java.lang.String[] { "FileCredentials", "FileId", "NewFileSize", }); internal_static_xtreemfs_pbrpc_unlink_osd_Request_descriptor = getDescriptor().getMessageTypes().get(13); internal_static_xtreemfs_pbrpc_unlink_osd_Request_fieldAccessorTable = new com.google.protobuf.GeneratedMessage.FieldAccessorTable( internal_static_xtreemfs_pbrpc_unlink_osd_Request_descriptor, - new java.lang.String[] { "FileCredentials", "FileId", }, - org.xtreemfs.pbrpc.generatedinterfaces.OSD.unlink_osd_Request.class, - org.xtreemfs.pbrpc.generatedinterfaces.OSD.unlink_osd_Request.Builder.class); + new java.lang.String[] { "FileCredentials", "FileId", }); internal_static_xtreemfs_pbrpc_writeRequest_descriptor = getDescriptor().getMessageTypes().get(14); internal_static_xtreemfs_pbrpc_writeRequest_fieldAccessorTable = new com.google.protobuf.GeneratedMessage.FieldAccessorTable( internal_static_xtreemfs_pbrpc_writeRequest_descriptor, - new java.lang.String[] { "FileCredentials", "FileId", "ObjectNumber", "ObjectVersion", "Offset", "LeaseTimeout", "ObjectData", }, - org.xtreemfs.pbrpc.generatedinterfaces.OSD.writeRequest.class, - org.xtreemfs.pbrpc.generatedinterfaces.OSD.writeRequest.Builder.class); + new java.lang.String[] { "FileCredentials", "FileId", "ObjectNumber", "ObjectVersion", "Offset", "LeaseTimeout", "ObjectData", }); internal_static_xtreemfs_pbrpc_xtreemfs_broadcast_gmaxRequest_descriptor = getDescriptor().getMessageTypes().get(15); internal_static_xtreemfs_pbrpc_xtreemfs_broadcast_gmaxRequest_fieldAccessorTable = new com.google.protobuf.GeneratedMessage.FieldAccessorTable( internal_static_xtreemfs_pbrpc_xtreemfs_broadcast_gmaxRequest_descriptor, - new java.lang.String[] { "FileId", "TruncateEpoch", "LastObject", "FileSize", }, - org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_broadcast_gmaxRequest.class, - org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_broadcast_gmaxRequest.Builder.class); + new java.lang.String[] { "FileId", "TruncateEpoch", "LastObject", "FileSize", }); internal_static_xtreemfs_pbrpc_xtreemfs_check_objectRequest_descriptor = getDescriptor().getMessageTypes().get(16); internal_static_xtreemfs_pbrpc_xtreemfs_check_objectRequest_fieldAccessorTable = new com.google.protobuf.GeneratedMessage.FieldAccessorTable( internal_static_xtreemfs_pbrpc_xtreemfs_check_objectRequest_descriptor, - new java.lang.String[] { "FileCredentials", "FileId", "ObjectNumber", "ObjectVersion", }, - org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_check_objectRequest.class, - org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_check_objectRequest.Builder.class); + new java.lang.String[] { "FileCredentials", "FileId", "ObjectNumber", "ObjectVersion", }); internal_static_xtreemfs_pbrpc_xtreemfs_cleanup_get_resultsResponse_descriptor = getDescriptor().getMessageTypes().get(17); internal_static_xtreemfs_pbrpc_xtreemfs_cleanup_get_resultsResponse_fieldAccessorTable = new com.google.protobuf.GeneratedMessage.FieldAccessorTable( internal_static_xtreemfs_pbrpc_xtreemfs_cleanup_get_resultsResponse_descriptor, - new java.lang.String[] { "Results", }, - org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_cleanup_get_resultsResponse.class, - org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_cleanup_get_resultsResponse.Builder.class); + new java.lang.String[] { "Results", }); internal_static_xtreemfs_pbrpc_xtreemfs_cleanup_is_runningResponse_descriptor = getDescriptor().getMessageTypes().get(18); internal_static_xtreemfs_pbrpc_xtreemfs_cleanup_is_runningResponse_fieldAccessorTable = new com.google.protobuf.GeneratedMessage.FieldAccessorTable( internal_static_xtreemfs_pbrpc_xtreemfs_cleanup_is_runningResponse_descriptor, - new java.lang.String[] { "IsRunning", }, - org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_cleanup_is_runningResponse.class, - org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_cleanup_is_runningResponse.Builder.class); + new java.lang.String[] { "IsRunning", }); internal_static_xtreemfs_pbrpc_xtreemfs_cleanup_startRequest_descriptor = getDescriptor().getMessageTypes().get(19); internal_static_xtreemfs_pbrpc_xtreemfs_cleanup_startRequest_fieldAccessorTable = new com.google.protobuf.GeneratedMessage.FieldAccessorTable( internal_static_xtreemfs_pbrpc_xtreemfs_cleanup_startRequest_descriptor, - new java.lang.String[] { "RemoveZombies", "RemoveUnavailVolume", "LostAndFound", }, - org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_cleanup_startRequest.class, - org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_cleanup_startRequest.Builder.class); + new java.lang.String[] { "RemoveZombies", "RemoveUnavailVolume", "LostAndFound", }); internal_static_xtreemfs_pbrpc_xtreemfs_cleanup_statusResponse_descriptor = getDescriptor().getMessageTypes().get(20); internal_static_xtreemfs_pbrpc_xtreemfs_cleanup_statusResponse_fieldAccessorTable = new com.google.protobuf.GeneratedMessage.FieldAccessorTable( internal_static_xtreemfs_pbrpc_xtreemfs_cleanup_statusResponse_descriptor, - new java.lang.String[] { "Status", }, - org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_cleanup_statusResponse.class, - org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_cleanup_statusResponse.Builder.class); + new java.lang.String[] { "Status", }); internal_static_xtreemfs_pbrpc_xtreemfs_rwr_fetchRequest_descriptor = getDescriptor().getMessageTypes().get(21); internal_static_xtreemfs_pbrpc_xtreemfs_rwr_fetchRequest_fieldAccessorTable = new com.google.protobuf.GeneratedMessage.FieldAccessorTable( internal_static_xtreemfs_pbrpc_xtreemfs_rwr_fetchRequest_descriptor, - new java.lang.String[] { "FileCredentials", "FileId", "ObjectNumber", "ObjectVersion", }, - org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_rwr_fetchRequest.class, - org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_rwr_fetchRequest.Builder.class); + new java.lang.String[] { "FileCredentials", "FileId", "ObjectNumber", "ObjectVersion", }); internal_static_xtreemfs_pbrpc_xtreemfs_repair_objectRequest_descriptor = getDescriptor().getMessageTypes().get(22); internal_static_xtreemfs_pbrpc_xtreemfs_repair_objectRequest_fieldAccessorTable = new com.google.protobuf.GeneratedMessage.FieldAccessorTable( internal_static_xtreemfs_pbrpc_xtreemfs_repair_objectRequest_descriptor, - new java.lang.String[] { "FileCredentials", "FileId", "ObjectNumber", "ObjectVersion", }, - org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_repair_objectRequest.class, - org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_repair_objectRequest.Builder.class); + new java.lang.String[] { "FileCredentials", "FileId", "ObjectNumber", "ObjectVersion", }); internal_static_xtreemfs_pbrpc_xtreemfs_rwr_flease_msgRequest_descriptor = getDescriptor().getMessageTypes().get(23); internal_static_xtreemfs_pbrpc_xtreemfs_rwr_flease_msgRequest_fieldAccessorTable = new com.google.protobuf.GeneratedMessage.FieldAccessorTable( internal_static_xtreemfs_pbrpc_xtreemfs_rwr_flease_msgRequest_descriptor, - new java.lang.String[] { "SenderHostname", "SenderPort", }, - org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_rwr_flease_msgRequest.class, - org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_rwr_flease_msgRequest.Builder.class); + new java.lang.String[] { "SenderHostname", "SenderPort", }); internal_static_xtreemfs_pbrpc_xtreemfs_rwr_set_primary_epochRequest_descriptor = getDescriptor().getMessageTypes().get(24); internal_static_xtreemfs_pbrpc_xtreemfs_rwr_set_primary_epochRequest_fieldAccessorTable = new com.google.protobuf.GeneratedMessage.FieldAccessorTable( internal_static_xtreemfs_pbrpc_xtreemfs_rwr_set_primary_epochRequest_descriptor, - new java.lang.String[] { "FileCredentials", "FileId", "PrimaryEpoch", }, - org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_rwr_set_primary_epochRequest.class, - org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_rwr_set_primary_epochRequest.Builder.class); + new java.lang.String[] { "FileCredentials", "FileId", "PrimaryEpoch", }); internal_static_xtreemfs_pbrpc_xtreemfs_rwr_statusRequest_descriptor = getDescriptor().getMessageTypes().get(25); internal_static_xtreemfs_pbrpc_xtreemfs_rwr_statusRequest_fieldAccessorTable = new com.google.protobuf.GeneratedMessage.FieldAccessorTable( internal_static_xtreemfs_pbrpc_xtreemfs_rwr_statusRequest_descriptor, - new java.lang.String[] { "FileCredentials", "FileId", "MaxLocalObjVersion", }, - org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_rwr_statusRequest.class, - org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_rwr_statusRequest.Builder.class); + new java.lang.String[] { "FileCredentials", "FileId", "MaxLocalObjVersion", }); internal_static_xtreemfs_pbrpc_xtreemfs_rwr_truncateRequest_descriptor = getDescriptor().getMessageTypes().get(26); internal_static_xtreemfs_pbrpc_xtreemfs_rwr_truncateRequest_fieldAccessorTable = new com.google.protobuf.GeneratedMessage.FieldAccessorTable( internal_static_xtreemfs_pbrpc_xtreemfs_rwr_truncateRequest_descriptor, - new java.lang.String[] { "FileCredentials", "FileId", "NewFileSize", "ObjectVersion", }, - org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_rwr_truncateRequest.class, - org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_rwr_truncateRequest.Builder.class); + new java.lang.String[] { "FileCredentials", "FileId", "NewFileSize", "ObjectVersion", }); internal_static_xtreemfs_pbrpc_xtreemfs_rwr_updateRequest_descriptor = getDescriptor().getMessageTypes().get(27); internal_static_xtreemfs_pbrpc_xtreemfs_rwr_updateRequest_fieldAccessorTable = new com.google.protobuf.GeneratedMessage.FieldAccessorTable( internal_static_xtreemfs_pbrpc_xtreemfs_rwr_updateRequest_descriptor, - new java.lang.String[] { "FileCredentials", "FileId", "NewFileSize", "ObjectNumber", "ObjectVersion", "Offset", "Obj", }, - org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_rwr_updateRequest.class, - org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_rwr_updateRequest.Builder.class); + new java.lang.String[] { "FileCredentials", "FileId", "NewFileSize", "ObjectNumber", "ObjectVersion", "Offset", "Obj", }); internal_static_xtreemfs_pbrpc_xtreemfs_internal_get_gmaxRequest_descriptor = getDescriptor().getMessageTypes().get(28); internal_static_xtreemfs_pbrpc_xtreemfs_internal_get_gmaxRequest_fieldAccessorTable = new com.google.protobuf.GeneratedMessage.FieldAccessorTable( internal_static_xtreemfs_pbrpc_xtreemfs_internal_get_gmaxRequest_descriptor, - new java.lang.String[] { "FileCredentials", "FileId", }, - org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_internal_get_gmaxRequest.class, - org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_internal_get_gmaxRequest.Builder.class); + new java.lang.String[] { "FileCredentials", "FileId", }); internal_static_xtreemfs_pbrpc_xtreemfs_internal_get_file_sizeRequest_descriptor = getDescriptor().getMessageTypes().get(29); internal_static_xtreemfs_pbrpc_xtreemfs_internal_get_file_sizeRequest_fieldAccessorTable = new com.google.protobuf.GeneratedMessage.FieldAccessorTable( internal_static_xtreemfs_pbrpc_xtreemfs_internal_get_file_sizeRequest_descriptor, - new java.lang.String[] { "FileCredentials", "FileId", }, - org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_internal_get_file_sizeRequest.class, - org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_internal_get_file_sizeRequest.Builder.class); + new java.lang.String[] { "FileCredentials", "FileId", }); internal_static_xtreemfs_pbrpc_xtreemfs_internal_get_file_sizeResponse_descriptor = getDescriptor().getMessageTypes().get(30); internal_static_xtreemfs_pbrpc_xtreemfs_internal_get_file_sizeResponse_fieldAccessorTable = new com.google.protobuf.GeneratedMessage.FieldAccessorTable( internal_static_xtreemfs_pbrpc_xtreemfs_internal_get_file_sizeResponse_descriptor, - new java.lang.String[] { "FileSize", }, - org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_internal_get_file_sizeResponse.class, - org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_internal_get_file_sizeResponse.Builder.class); + new java.lang.String[] { "FileSize", }); internal_static_xtreemfs_pbrpc_xtreemfs_internal_read_localRequest_descriptor = getDescriptor().getMessageTypes().get(31); internal_static_xtreemfs_pbrpc_xtreemfs_internal_read_localRequest_fieldAccessorTable = new com.google.protobuf.GeneratedMessage.FieldAccessorTable( internal_static_xtreemfs_pbrpc_xtreemfs_internal_read_localRequest_descriptor, - new java.lang.String[] { "FileCredentials", "FileId", "ObjectNumber", "ObjectVersion", "Offset", "Length", "AttachObjectList", "RequiredObjects", }, - org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_internal_read_localRequest.class, - org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_internal_read_localRequest.Builder.class); + new java.lang.String[] { "FileCredentials", "FileId", "ObjectNumber", "ObjectVersion", "Offset", "Length", "AttachObjectList", "RequiredObjects", }); internal_static_xtreemfs_pbrpc_xtreemfs_internal_get_object_setRequest_descriptor = getDescriptor().getMessageTypes().get(32); internal_static_xtreemfs_pbrpc_xtreemfs_internal_get_object_setRequest_fieldAccessorTable = new com.google.protobuf.GeneratedMessage.FieldAccessorTable( internal_static_xtreemfs_pbrpc_xtreemfs_internal_get_object_setRequest_descriptor, - new java.lang.String[] { "FileCredentials", "FileId", }, - org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_internal_get_object_setRequest.class, - org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_internal_get_object_setRequest.Builder.class); + new java.lang.String[] { "FileCredentials", "FileId", }); internal_static_xtreemfs_pbrpc_xtreemfs_internal_get_fileid_listResponse_descriptor = getDescriptor().getMessageTypes().get(33); internal_static_xtreemfs_pbrpc_xtreemfs_internal_get_fileid_listResponse_fieldAccessorTable = new com.google.protobuf.GeneratedMessage.FieldAccessorTable( internal_static_xtreemfs_pbrpc_xtreemfs_internal_get_fileid_listResponse_descriptor, - new java.lang.String[] { "FileIds", }, - org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_internal_get_fileid_listResponse.class, - org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_internal_get_fileid_listResponse.Builder.class); + new java.lang.String[] { "FileIds", }); internal_static_xtreemfs_pbrpc_lockRequest_descriptor = getDescriptor().getMessageTypes().get(34); internal_static_xtreemfs_pbrpc_lockRequest_fieldAccessorTable = new com.google.protobuf.GeneratedMessage.FieldAccessorTable( internal_static_xtreemfs_pbrpc_lockRequest_descriptor, - new java.lang.String[] { "FileCredentials", "LockRequest", }, - org.xtreemfs.pbrpc.generatedinterfaces.OSD.lockRequest.class, - org.xtreemfs.pbrpc.generatedinterfaces.OSD.lockRequest.Builder.class); + new java.lang.String[] { "FileCredentials", "LockRequest", }); internal_static_xtreemfs_pbrpc_xtreemfs_pingMesssage_descriptor = getDescriptor().getMessageTypes().get(35); internal_static_xtreemfs_pbrpc_xtreemfs_pingMesssage_fieldAccessorTable = new com.google.protobuf.GeneratedMessage.FieldAccessorTable( internal_static_xtreemfs_pbrpc_xtreemfs_pingMesssage_descriptor, - new java.lang.String[] { "Coordinates", "RequestResponse", }, - org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_pingMesssage.class, - org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_pingMesssage.Builder.class); + new java.lang.String[] { "Coordinates", "RequestResponse", }); internal_static_xtreemfs_pbrpc_xtreemfs_rwr_auth_stateRequest_descriptor = getDescriptor().getMessageTypes().get(36); internal_static_xtreemfs_pbrpc_xtreemfs_rwr_auth_stateRequest_fieldAccessorTable = new com.google.protobuf.GeneratedMessage.FieldAccessorTable( internal_static_xtreemfs_pbrpc_xtreemfs_rwr_auth_stateRequest_descriptor, - new java.lang.String[] { "FileCredentials", "FileId", "State", }, - org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_rwr_auth_stateRequest.class, - org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_rwr_auth_stateRequest.Builder.class); + new java.lang.String[] { "FileCredentials", "FileId", "State", }); internal_static_xtreemfs_pbrpc_xtreemfs_rwr_reset_completeRequest_descriptor = getDescriptor().getMessageTypes().get(37); internal_static_xtreemfs_pbrpc_xtreemfs_rwr_reset_completeRequest_fieldAccessorTable = new com.google.protobuf.GeneratedMessage.FieldAccessorTable( internal_static_xtreemfs_pbrpc_xtreemfs_rwr_reset_completeRequest_descriptor, - new java.lang.String[] { "FileCredentials", "FileId", "PrimaryEpoch", }, - org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_rwr_reset_completeRequest.class, - org.xtreemfs.pbrpc.generatedinterfaces.OSD.xtreemfs_rwr_reset_completeRequest.Builder.class); + new java.lang.String[] { "FileCredentials", "FileId", "PrimaryEpoch", }); com.google.protobuf.ExtensionRegistry registry = com.google.protobuf.ExtensionRegistry.newInstance(); - registerAllExtensions(registry); - org.xtreemfs.foundation.pbrpc.generatedinterfaces.PBRPC.registerAllExtensions(registry); - org.xtreemfs.pbrpc.generatedinterfaces.Common.registerAllExtensions(registry); - org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.registerAllExtensions(registry); + registry.add(org.xtreemfs.foundation.pbrpc.generatedinterfaces.PBRPC.procId); + registry.add(org.xtreemfs.foundation.pbrpc.generatedinterfaces.PBRPC.dataOut); + registry.add(org.xtreemfs.foundation.pbrpc.generatedinterfaces.PBRPC.procId); + registry.add(org.xtreemfs.foundation.pbrpc.generatedinterfaces.PBRPC.procId); + registry.add(org.xtreemfs.foundation.pbrpc.generatedinterfaces.PBRPC.procId); + registry.add(org.xtreemfs.foundation.pbrpc.generatedinterfaces.PBRPC.dataIn); + registry.add(org.xtreemfs.foundation.pbrpc.generatedinterfaces.PBRPC.procId); + registry.add(org.xtreemfs.foundation.pbrpc.generatedinterfaces.PBRPC.procId); + registry.add(org.xtreemfs.foundation.pbrpc.generatedinterfaces.PBRPC.procId); + registry.add(org.xtreemfs.foundation.pbrpc.generatedinterfaces.PBRPC.procId); + registry.add(org.xtreemfs.foundation.pbrpc.generatedinterfaces.PBRPC.procId); + registry.add(org.xtreemfs.foundation.pbrpc.generatedinterfaces.PBRPC.procId); + registry.add(org.xtreemfs.foundation.pbrpc.generatedinterfaces.PBRPC.procId); + registry.add(org.xtreemfs.foundation.pbrpc.generatedinterfaces.PBRPC.procId); + registry.add(org.xtreemfs.foundation.pbrpc.generatedinterfaces.PBRPC.procId); + registry.add(org.xtreemfs.foundation.pbrpc.generatedinterfaces.PBRPC.procId); + registry.add(org.xtreemfs.foundation.pbrpc.generatedinterfaces.PBRPC.procId); + registry.add(org.xtreemfs.foundation.pbrpc.generatedinterfaces.PBRPC.dataIn); + registry.add(org.xtreemfs.foundation.pbrpc.generatedinterfaces.PBRPC.procId); + registry.add(org.xtreemfs.foundation.pbrpc.generatedinterfaces.PBRPC.procId); + registry.add(org.xtreemfs.foundation.pbrpc.generatedinterfaces.PBRPC.procId); + registry.add(org.xtreemfs.foundation.pbrpc.generatedinterfaces.PBRPC.procId); + registry.add(org.xtreemfs.foundation.pbrpc.generatedinterfaces.PBRPC.procId); + registry.add(org.xtreemfs.foundation.pbrpc.generatedinterfaces.PBRPC.dataIn); + registry.add(org.xtreemfs.foundation.pbrpc.generatedinterfaces.PBRPC.procId); + registry.add(org.xtreemfs.foundation.pbrpc.generatedinterfaces.PBRPC.procId); + registry.add(org.xtreemfs.foundation.pbrpc.generatedinterfaces.PBRPC.procId); + registry.add(org.xtreemfs.foundation.pbrpc.generatedinterfaces.PBRPC.procId); + registry.add(org.xtreemfs.foundation.pbrpc.generatedinterfaces.PBRPC.procId); + registry.add(org.xtreemfs.foundation.pbrpc.generatedinterfaces.PBRPC.procId); + registry.add(org.xtreemfs.foundation.pbrpc.generatedinterfaces.PBRPC.procId); + registry.add(org.xtreemfs.foundation.pbrpc.generatedinterfaces.PBRPC.procId); + registry.add(org.xtreemfs.foundation.pbrpc.generatedinterfaces.PBRPC.procId); + registry.add(org.xtreemfs.foundation.pbrpc.generatedinterfaces.PBRPC.procId); + registry.add(org.xtreemfs.foundation.pbrpc.generatedinterfaces.PBRPC.procId); + registry.add(org.xtreemfs.foundation.pbrpc.generatedinterfaces.PBRPC.procId); + registry.add(org.xtreemfs.foundation.pbrpc.generatedinterfaces.PBRPC.procId); + registry.add(org.xtreemfs.foundation.pbrpc.generatedinterfaces.PBRPC.interfaceId); return registry; } }; @@ -18217,8 +31148,6 @@ public final class OSD { org.xtreemfs.pbrpc.generatedinterfaces.GlobalTypes.getDescriptor(), }, assigner); } - - public static void internalForceInit() {} - + // @@protoc_insertion_point(outer_class_scope) } diff --git a/java/servers/src/org/xtreemfs/pbrpc/generatedinterfaces/OSDServiceClient.java b/java/servers/src/org/xtreemfs/pbrpc/generatedinterfaces/OSDServiceClient.java index 99f8b12bd..b18154887 100644 --- a/java/servers/src/org/xtreemfs/pbrpc/generatedinterfaces/OSDServiceClient.java +++ b/java/servers/src/org/xtreemfs/pbrpc/generatedinterfaces/OSDServiceClient.java @@ -1,17 +1,18 @@ -//automatically generated from OSD.proto at Thu Mar 21 17:09:46 CET 2013 +//automatically generated from OSD.proto at Mon Nov 11 11:46:59 CET 2013 //(c) 2013. See LICENSE file for details. package org.xtreemfs.pbrpc.generatedinterfaces; import java.io.IOException; -import java.net.InetSocketAddress; import java.util.List; - +import java.net.InetSocketAddress; +import com.google.protobuf.Message; +import com.google.protobuf.ByteString; import org.xtreemfs.foundation.buffer.ReusableBuffer; -import org.xtreemfs.foundation.pbrpc.client.RPCNIOSocketClient; -import org.xtreemfs.foundation.pbrpc.client.RPCResponse; import org.xtreemfs.foundation.pbrpc.generatedinterfaces.RPC.Auth; import org.xtreemfs.foundation.pbrpc.generatedinterfaces.RPC.UserCredentials; +import org.xtreemfs.foundation.pbrpc.client.RPCNIOSocketClient; +import org.xtreemfs.foundation.pbrpc.client.RPCResponse; public class OSDServiceClient { @@ -455,4 +456,4 @@ public class OSDServiceClient { public boolean clientIsAlive() { return client.isAlive(); } -} +} \ No newline at end of file diff --git a/java/servers/src/org/xtreemfs/pbrpc/generatedinterfaces/OSDServiceConstants.java b/java/servers/src/org/xtreemfs/pbrpc/generatedinterfaces/OSDServiceConstants.java index 0350b9603..f7b732529 100644 --- a/java/servers/src/org/xtreemfs/pbrpc/generatedinterfaces/OSDServiceConstants.java +++ b/java/servers/src/org/xtreemfs/pbrpc/generatedinterfaces/OSDServiceConstants.java @@ -1,4 +1,4 @@ -//automatically generated from OSD.proto at Thu Mar 21 17:09:46 CET 2013 +//automatically generated from OSD.proto at Mon Nov 11 11:46:59 CET 2013 //(c) 2013. See LICENSE file for details. package org.xtreemfs.pbrpc.generatedinterfaces; @@ -122,4 +122,4 @@ public class OSDServiceConstants { } -} +} \ No newline at end of file diff --git a/packaging/build-service/xtreemfs/debian.rules b/packaging/build-service/xtreemfs/debian.rules index 32b64c445..c32d600a5 100644 --- a/packaging/build-service/xtreemfs/debian.rules +++ b/packaging/build-service/xtreemfs/debian.rules @@ -86,7 +86,7 @@ install: build mv -t $(BUILD_DIR)-backend/usr/share/java \ $(BUILD_DIR)/usr/share/java/XtreemFS.jar \ $(BUILD_DIR)/usr/share/java/Foundation.jar \ - $(BUILD_DIR)/usr/share/java/protobuf-java-2.3.0.jar \ + $(BUILD_DIR)/usr/share/java/protobuf-java-2.5.0.jar \ $(BUILD_DIR)/usr/share/java/Flease.jar \ $(BUILD_DIR)/usr/share/java/BabuDB.jar \ $(BUILD_DIR)/usr/share/java/BabuDB_replication_plugin.jar \ diff --git a/packaging/build-service/xtreemfs/xtreemfs.spec b/packaging/build-service/xtreemfs/xtreemfs.spec index 2536effd0..9677aa890 100644 --- a/packaging/build-service/xtreemfs/xtreemfs.spec +++ b/packaging/build-service/xtreemfs/xtreemfs.spec @@ -220,7 +220,7 @@ rm -rf $RPM_BUILD_ROOT %defattr(-,root,root,-) /usr/share/java/XtreemFS.jar /usr/share/java/Foundation.jar -/usr/share/java/protobuf-java-2.3.0.jar +/usr/share/java/protobuf-java-2.5.0.jar /usr/share/java/Flease.jar /usr/share/java/BabuDB.jar /usr/share/java/BabuDB_replication_plugin.jar diff --git a/packaging/gentoo-overlay/net-fs/xtreemfs/files/xtreemfs-dir.confd b/packaging/gentoo-overlay/net-fs/xtreemfs/files/xtreemfs-dir.confd index 527515146..b0d3567dc 100644 --- a/packaging/gentoo-overlay/net-fs/xtreemfs/files/xtreemfs-dir.confd +++ b/packaging/gentoo-overlay/net-fs/xtreemfs/files/xtreemfs-dir.confd @@ -1,5 +1,5 @@ XTREEMFS_DIR_LIB="/usr/share/xtreemfs/java" -XTREEMFS_DIR_CLASS="-classpath ${XTREEMFS_DIR_LIB}/servers/dist/XtreemFS.jar:${XTREEMFS_DIR_LIB}/lib/BabuDB.jar:${XTREEMFS_DIR_LIB}/flease/dist/Flease.jar:${XTREEMFS_DIR_LIB}/lib/protobuf-java-2.3.0.jar:${XTREEMFS_DIR_LIB}/foundation/dist/Foundation.jar:${XTREEMFS_DIR_LIB}/lib/commons-codec-1.3.jar:${XTREEMFS_DIR_LIB}/lib/jdmktk.jar:${XTREEMFS_DIR_LIB}/lib/jdmkrt.jar" +XTREEMFS_DIR_CLASS="-classpath ${XTREEMFS_DIR_LIB}/servers/dist/XtreemFS.jar:${XTREEMFS_DIR_LIB}/lib/BabuDB.jar:${XTREEMFS_DIR_LIB}/flease/dist/Flease.jar:${XTREEMFS_DIR_LIB}/lib/protobuf-java-2.5.0.jar:${XTREEMFS_DIR_LIB}/foundation/dist/Foundation.jar:${XTREEMFS_DIR_LIB}/lib/commons-codec-1.3.jar:${XTREEMFS_DIR_LIB}/lib/jdmktk.jar:${XTREEMFS_DIR_LIB}/lib/jdmkrt.jar" XTREEMFS_DIR_ARGS="${XTREEMFS_DIR_CLASS} org.xtreemfs.dir.DIR" XTREEMFS_DIR_CONFIG="/etc/xtreemfs/dirconfig.properties" XTREEMFS_DIR_PIDFILE="/var/run/xtreemfs/dir.pid" diff --git a/packaging/gentoo-overlay/net-fs/xtreemfs/files/xtreemfs-mrc.confd b/packaging/gentoo-overlay/net-fs/xtreemfs/files/xtreemfs-mrc.confd index 0b0f3b0f4..2e35c1356 100644 --- a/packaging/gentoo-overlay/net-fs/xtreemfs/files/xtreemfs-mrc.confd +++ b/packaging/gentoo-overlay/net-fs/xtreemfs/files/xtreemfs-mrc.confd @@ -1,5 +1,5 @@ XTREEMFS_MRC_LIB="/usr/share/xtreemfs/java" -XTREEMFS_MRC_CLASS="-classpath ${XTREEMFS_MRC_LIB}/servers/dist/XtreemFS.jar:${XTREEMFS_MRC_LIB}/lib/BabuDB.jar:${XTREEMFS_MRC_LIB}/flease/dist/Flease.jar:${XTREEMFS_MRC_LIB}/lib/protobuf-java-2.3.0.jar:${XTREEMFS_MRC_LIB}/foundation/dist/Foundation.jar:${XTREEMFS_MRC_LIB}/lib/commons-codec-1.3.jar:${XTREEMFS_MRC_LIB}/lib/jdmktk.jar:${XTREEMFS_MRC_LIB}/lib/jdmkrt.jar" +XTREEMFS_MRC_CLASS="-classpath ${XTREEMFS_MRC_LIB}/servers/dist/XtreemFS.jar:${XTREEMFS_MRC_LIB}/lib/BabuDB.jar:${XTREEMFS_MRC_LIB}/flease/dist/Flease.jar:${XTREEMFS_MRC_LIB}/lib/protobuf-java-2.5.0.jar:${XTREEMFS_MRC_LIB}/foundation/dist/Foundation.jar:${XTREEMFS_MRC_LIB}/lib/commons-codec-1.3.jar:${XTREEMFS_MRC_LIB}/lib/jdmktk.jar:${XTREEMFS_MRC_LIB}/lib/jdmkrt.jar" XTREEMFS_MRC_ARGS="${XTREEMFS_MRC_CLASS} org.xtreemfs.mrc.MRC" XTREEMFS_MRC_CONFIG="/etc/xtreemfs/mrcconfig.properties" XTREEMFS_MRC_PIDFILE="/var/run/xtreemfs/mrc.pid" diff --git a/packaging/gentoo-overlay/net-fs/xtreemfs/files/xtreemfs-osd.confd b/packaging/gentoo-overlay/net-fs/xtreemfs/files/xtreemfs-osd.confd index 050404ddb..77a406577 100644 --- a/packaging/gentoo-overlay/net-fs/xtreemfs/files/xtreemfs-osd.confd +++ b/packaging/gentoo-overlay/net-fs/xtreemfs/files/xtreemfs-osd.confd @@ -1,5 +1,5 @@ XTREEMFS_OSD_LIB="/usr/share/xtreemfs/java" -XTREEMFS_OSD_CLASS="-classpath ${XTREEMFS_OSD_LIB}/servers/dist/XtreemFS.jar:${XTREEMFS_OSD_LIB}/lib/BabuDB.jar:${XTREEMFS_OSD_LIB}/flease/dist/Flease.jar:${XTREEMFS_OSD_LIB}/lib/protobuf-java-2.3.0.jar:${XTREEMFS_OSD_LIB}/foundation/dist/Foundation.jar:${XTREEMFS_OSD_LIB}/lib/commons-codec-1.3.jar:${XTREEMFS_OSD_LIB}/lib/jdmktk.jar:${XTREEMFS_OSD_LIB}/lib/jdmkrt.jar" +XTREEMFS_OSD_CLASS="-classpath ${XTREEMFS_OSD_LIB}/servers/dist/XtreemFS.jar:${XTREEMFS_OSD_LIB}/lib/BabuDB.jar:${XTREEMFS_OSD_LIB}/flease/dist/Flease.jar:${XTREEMFS_OSD_LIB}/lib/protobuf-java-2.5.0.jar:${XTREEMFS_OSD_LIB}/foundation/dist/Foundation.jar:${XTREEMFS_OSD_LIB}/lib/commons-codec-1.3.jar:${XTREEMFS_OSD_LIB}/lib/jdmktk.jar:${XTREEMFS_OSD_LIB}/lib/jdmkrt.jar" XTREEMFS_OSD_ARGS="${XTREEMFS_OSD_CLASS} org.xtreemfs.osd.OSD" XTREEMFS_OSD_CONFIG="/etc/xtreemfs/osdconfig.properties" XTREEMFS_OSD_PIDFILE="/var/run/xtreemfs/osd.pid" diff --git a/packaging/gentoo-overlay/net-fs/xtreemfs/xtreemfs-8888_beta.ebuild b/packaging/gentoo-overlay/net-fs/xtreemfs/xtreemfs-8888_beta.ebuild index da721c3ba..d7a0d7817 100644 --- a/packaging/gentoo-overlay/net-fs/xtreemfs/xtreemfs-8888_beta.ebuild +++ b/packaging/gentoo-overlay/net-fs/xtreemfs/xtreemfs-8888_beta.ebuild @@ -78,7 +78,7 @@ src_install() { java-pkg_dojar java/servers/dist/XtreemFS.jar java-pkg_jarinto /usr/share/${PN}/java/lib - java-pkg_dojar java/lib/protobuf-java-2.3.0.jar java/lib/BabuDB.jar java/lib/commons-codec-1.3.jar java/lib/jdmktk.jar java/lib/jdmkrt.jar + java-pkg_dojar java/lib/protobuf-java-2.5.0.jar java/lib/BabuDB.jar java/lib/commons-codec-1.3.jar java/lib/jdmktk.jar java/lib/jdmkrt.jar java-pkg_jarinto /usr/share/${PN}/java/foundation/dist java-pkg_dojar java/foundation/dist/Foundation.jar diff --git a/packaging/gentoo-overlay/net-fs/xtreemfs/xtreemfs-9999.ebuild b/packaging/gentoo-overlay/net-fs/xtreemfs/xtreemfs-9999.ebuild index da721c3ba..d7a0d7817 100644 --- a/packaging/gentoo-overlay/net-fs/xtreemfs/xtreemfs-9999.ebuild +++ b/packaging/gentoo-overlay/net-fs/xtreemfs/xtreemfs-9999.ebuild @@ -78,7 +78,7 @@ src_install() { java-pkg_dojar java/servers/dist/XtreemFS.jar java-pkg_jarinto /usr/share/${PN}/java/lib - java-pkg_dojar java/lib/protobuf-java-2.3.0.jar java/lib/BabuDB.jar java/lib/commons-codec-1.3.jar java/lib/jdmktk.jar java/lib/jdmkrt.jar + java-pkg_dojar java/lib/protobuf-java-2.5.0.jar java/lib/BabuDB.jar java/lib/commons-codec-1.3.jar java/lib/jdmktk.jar java/lib/jdmkrt.jar java-pkg_jarinto /usr/share/${PN}/java/foundation/dist java-pkg_dojar java/foundation/dist/Foundation.jar diff --git a/tests/test_server.py b/tests/test_server.py index df47c9937..2e9db1a18 100644 --- a/tests/test_server.py +++ b/tests/test_server.py @@ -157,7 +157,7 @@ class Server: classpath = ( XtreemFS_jar_file_path, os.path.abspath(os.path.join(self._xtreemfs_dir, "java", "lib", "BabuDB.jar")), - os.path.abspath(os.path.join(self._xtreemfs_dir, "java", "lib", "protobuf-java-2.3.0.jar")), + os.path.abspath(os.path.join(self._xtreemfs_dir, "java", "lib", "protobuf-java-2.5.0.jar")), os.path.abspath(os.path.join(self._xtreemfs_dir, "java", "flease", "dist", "Flease.jar")), os.path.abspath(os.path.join(self._xtreemfs_dir, "java", "foundation", "dist", "Foundation.jar")), os.path.abspath(os.path.join(self._xtreemfs_dir, "java", "lib", "jdmkrt.jar")), @@ -167,7 +167,7 @@ class Server: classpath = ( os.path.join("/usr/share/java", "XtreemFS.jar"), os.path.join("/usr/share/java", "BabuDB.jar"), - os.path.join("/usr/share/java", "protobuf-java-2.3.0.jar"), + os.path.join("/usr/share/java", "protobuf-java-2.5.0.jar"), os.path.join("/usr/share/java", "Flease.jar"), os.path.join("/usr/share/java", "Foundation.jar"), os.path.join("/usr/share/java", "jdmkrt.jar"), diff --git a/tests/xstartserv b/tests/xstartserv index 0eea185b0..f8233eebb 100755 --- a/tests/xstartserv +++ b/tests/xstartserv @@ -72,7 +72,7 @@ class Server: classpath = ( XtreemFS_jar_file_path, os.path.abspath(os.path.join(self._xtreemfs_dir, "java", "lib", "BabuDB.jar")), - os.path.abspath(os.path.join(self._xtreemfs_dir, "java", "lib", "protobuf-java-2.3.0.jar")), + os.path.abspath(os.path.join(self._xtreemfs_dir, "java", "lib", "protobuf-java-2.5.0.jar")), os.path.abspath(os.path.join(self._xtreemfs_dir, "java", "flease", "dist", "Flease.jar")), os.path.abspath(os.path.join(self._xtreemfs_dir, "java", "foundation", "dist", "Foundation.jar")), os.path.abspath(os.path.join(self._xtreemfs_dir, "java", "lib", "jdmkrt.jar")), -- GitLab

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 cR&2| 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